線の端点の条件判断について
4 views (last 30 days)
Show older comments
上の白黒画像があるとします。
左から1つ目と2つ目の線の始点と終点は画像の4辺上にあり、3つ目の線は片方の点が4辺上になく、4つ目の線は両方の点とも4辺上にありません。
この場合に、画像内にある白線の始点と終点が画像の4辺上にあるかどうかを判断し、もし4辺上にない端点がある白線を見つけた場合は、その4辺上にない端点のx座標とy座標を抽出するということをしたいです。(画像の座標は左上が(1,1)です。)(白線内の全点の座標は分かっています。)
また、その抽出した座標の端点が始点(y座標が小さい方の端点)なのか終点(y座標が大きい方の端点)なのかも判断したいです。
そのようなスクリプトは書けますでしょうか。お答えいただけると嬉しいです。よろしくお願いいたします。
2 Comments
Atsushi Ueno
on 28 Nov 2022
そのようなスクリプトを書いてる途中なのですが、白線の端点を求める事が容易ではない事に気付きました。
単純に座標の大小では求まりません。極端な例を挙げると、渦巻状の線の端点はどう求めるのかという事です。
regionprops ("Extrema")が最も近い要素ですが、これは凸形状の要素であってちょっと違います。
I = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1210583/image.jpeg');
BW = im2gray(I) > 127; % RGB ⇒ グレースケール化 ⇒ 2値化
CC = bwconncomp(BW,4) % 連結要素の検出(Image Processing Toolbox 要)
for k = 1:CC.NumObjects
[row, col] = ind2sub(CC.ImageSize, CC.PixelIdxList{k});
% 画像内にある白線の始点と終点が画像の4辺上にあるかどうかを判断
% もし4辺上にない端点がある白線を見つけた場合
if all((row ~= 1) & (row ~= CC.ImageSize(1)) & (col ~= 1) & (col ~= CC.ImageSize(2)))
% その4辺上にない端点のx座標とy座標を抽出する
min(row); % 端点??????????
max(row); % 端点??????????
min(col); % 端点??????????
max(col); % 端点??????????
end
% その抽出した座標の端点が始点(y座標が小さい方の端点)なのか終点(y座標が大きい方の端点)なのかも判断
end
Answers (0)
See Also
Categories
Find more on イメージ算術 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!