画像から1ピクセルの長さを求めたい
20 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
大輝 隅岡
el 24 de Oct. de 2022
Comentada: 大輝 隅岡
el 28 de Oct. de 2022
背景を方眼紙など長さがわかるものにして撮影し,そこから1ピクセルの長さを求めたいと考えています.撮影した画像から1ピクセルの長さを求めるにはどのようなプログラムを作れば良いでしょうか。
2 comentarios
Akira Agata
el 24 de Oct. de 2022
イメージビューアーアプリ で方眼の幅のピクセル数を計測することで 1 ピクセルあたりの実測長を算出することができます。あるいは方眼の幅の計測を画像解析の手法で自動的におこないたいということでしょうか?
Respuesta aceptada
Akira Agata
el 27 de Oct. de 2022
コメントありがとうございます。
方眼幅のピクセル数を自動的に算出したいとのことですが、以下の方法はいかがでしょうか?
ちなみに、今回のケースは方眼が白色の線ですので平均輝度値のピークを検出していますが、黒線の場合には平均輝度値に -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)
Más respuestas (0)
Ver también
Categorías
Más información sobre 記述統計 en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!