画像オブジェクトのラベリングと、最大長の算出

14 ビュー (過去 30 日間)
隆史
隆史 2022 年 12 月 7 日
回答済み: Atsushi Ueno 2022 年 12 月 9 日
この画像処理の目標は、画像中の複数のオブジェクトの最大長を求めることです。
そのために、1つの画像に対して、2つの処理を加えていきたいです。
1つ目:画像中に複数個存在する、オブジェクトをラベリングする。
2つ目:1つ1つのオブジェクトに対して、最大長を算出する。
何卒よろしくお願いいたします。

回答 (1 件)

Atsushi Ueno
Atsushi Ueno 2022 年 12 月 9 日
Image Processing Toolbox を使えば、下記で目的が実現されます。下記コードにおいて、Lは画像と同サイズの行列で、認識された連続体(白の塊)毎に整数の番号が振られたデータになっています。MFには、同連続体毎の最大長が得られています。1番目のデータが画像サイズとほぼ同じの誤認識になっていますが、所定の大きさを超えたデータを除去すれば問題ないでしょう。
I = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/1222312/image.jpeg');
BW = imbinarize(im2gray(I));
L = bwlabel(BW,4); % 1つ目:画像中に複数個存在する、オブジェクトをラベリングする。
MF = bwferet(L,'MaxFeretProperties'); % 2つ目:1つ1つのオブジェクトに対して、最大長を算出する。
MF(MF.MaxDiameter > 500,:) = [] % 所定の大きさを超えた連続体のデータを除去する
MF = 287×3 table
MaxDiameter MaxAngle MaxCoordinates ___________ ________ ______________ 14.318 -155.22 {2×2 double} 17.464 166.76 {2×2 double} 16.763 -162.65 {2×2 double} 13.153 171.25 {2×2 double} 20 -126.87 {2×2 double} 19.313 158.75 {2×2 double} 16.155 158.2 {2×2 double} 13.601 -162.9 {2×2 double} 21.932 -155.77 {2×2 double} 17.493 -120.96 {2×2 double} 14.422 -146.31 {2×2 double} 15 -126.87 {2×2 double} 17.088 -159.44 {2×2 double} 15.524 165.07 {2×2 double} 21.095 -148.57 {2×2 double} 14.765 -151.7 {2×2 double}

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!