線の端点の条件判断について
10 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1210583/image.jpeg)
上の白黒画像があるとします。
左から1つ目と2つ目の線の始点と終点は画像の4辺上にあり、3つ目の線は片方の点が4辺上になく、4つ目の線は両方の点とも4辺上にありません。
この場合に、画像内にある白線の始点と終点が画像の4辺上にあるかどうかを判断し、もし4辺上にない端点がある白線を見つけた場合は、その4辺上にない端点のx座標とy座標を抽出するということをしたいです。(画像の座標は左上が(1,1)です。)(白線内の全点の座標は分かっています。)
また、その抽出した座標の端点が始点(y座標が小さい方の端点)なのか終点(y座標が大きい方の端点)なのかも判断したいです。
そのようなスクリプトは書けますでしょうか。お答えいただけると嬉しいです。よろしくお願いいたします。
2 Commenti
Atsushi Ueno
il 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
Risposte (0)
Vedere anche
Categorie
Scopri di più su イメージのセグメンテーションと解析 in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!