画像から1ピクセルの長さを求めたい
조회 수: 23 (최근 30일)
이전 댓글 표시
背景を方眼紙など長さがわかるものにして撮影し,そこから1ピクセルの長さを求めたいと考えています.撮影した画像から1ピクセルの長さを求めるにはどのようなプログラムを作れば良いでしょうか。
댓글 수: 2
Akira Agata
2022년 10월 24일
イメージビューアーアプリ で方眼の幅のピクセル数を計測することで 1 ピクセルあたりの実測長を算出することができます。あるいは方眼の幅の計測を画像解析の手法で自動的におこないたいということでしょうか?
채택된 답변
Akira Agata
2022년 10월 27일
コメントありがとうございます。
方眼幅のピクセル数を自動的に算出したいとのことですが、以下の方法はいかがでしょうか?
ちなみに、今回のケースは方眼が白色の線ですので平均輝度値のピークを検出していますが、黒線の場合には平均輝度値に -1 を乗算してピークを検出する必要があります。
% 画像読み込み
I = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1167113/9D4EA0FD-F7CC-42AA-8402-55432CB80067.jpeg');
% グレースケール化
I = rgb2gray(I);
% 各列の平均輝度値は、方眼の縦線の位置でピークとなるはず。
% そこで、findpeaks関数でピーク位置を検出する。
% ただし縦線位置以外のピークを誤検出しないため、最小ピーク間隔を50ピクセルに指定
[~, locs] = findpeaks(mean(I), "MinPeakDistance", 50);
% 正しく検出できているか、念のため確認
figure
findpeaks(mean(I), "MinPeakDistance", 50)
xlabel("画像横方向の位置 [ピクセル]")
ylabel("各列の平均輝度値")
% ピーク間隔の平均ピクセル数が求めたい方眼の縦線間隔に相当
w = mean(diff(locs));
% 方眼幅の平均ピクセル数を表示
disp(w)
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 記述統計에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!