2

私は以下のオブジェクトを持っており、MATLABで最大垂直(赤い線)と水平(青い線)のサイズを抽出します。不規則なオブジェクトの縦と横の寸法を抽出します

enter image description here

私は、次のコードを使用しますが、私は右のプロパティを使用していた場合、私はわからない:

L = bwlabel(myImage); 
prop = regionprops(L,'BoundingBox'); 

答えて

3

あなたは黒い塊が画像でだけオブジェクトであると仮定すると、regionpropsを使用していない別の答えをしたい場合は、あなたがの左上と右下の角を見つけることによって最小全域バウンディングボックスを見つけることができますオブジェクトピクセルとみなされるもののうち最も右の列と一番左の列と一番下の行と一番上の行を減算することによって幅と高さを求める。バイナリ画像をLに格納されていると仮定すると、次の操作を行います

[r,c] = find(~L); 
width = max(c) - min(c) + 1; 
height = max(r) - min(r) + 1; 

find非ゼロであるすべての行と列の位置を見出します。このように、私はを反転させて、すべてのゼロ位置が非ゼロになるようにしなければなりませんでした。 rおよびcは、非ゼロの行および列の位置をそれぞれ返す列ベクトルであり、次に上述の論理Iが実行される。

2

をあなたは文字通りサイズこれらの線のをしたい場合は、それらはregionpropsの結果に既に含まれています。あなたの青と赤の線の

prop = regionprops(L, 'BoundingBox'); 

prop = 

    BoundingBox: [x, y, width, height] 

長さは、それぞれ、BoundingBoxフィールドの第三及び第四の要素であろう。

+0

私のイメージは左のもので、私はちょうど私が正しいものを望んでいることを実証しました。では、左の画像にある「BoundingBox」を使用してこれらのサイズを見つけることはできますか? – Sam

+1

@Sam:* "あなたの青い線と赤い線の長さはそれぞれ、BoundingBoxのフィールドの3番目と4番目の要素になります。" *この文では誤解の余地はないと思います。はっきりと綴られています。 – rayryeng

+0

ああええとBTWスーバー、いい仕事:) +1。 – rayryeng

関連する問題