私は以下のオブジェクトを持っており、MATLABで最大垂直(赤い線)と水平(青い線)のサイズを抽出します。不規則なオブジェクトの縦と横の寸法を抽出します
私は、次のコードを使用しますが、私は右のプロパティを使用していた場合、私はわからない:
L = bwlabel(myImage);
prop = regionprops(L,'BoundingBox');
私は以下のオブジェクトを持っており、MATLABで最大垂直(赤い線)と水平(青い線)のサイズを抽出します。不規則なオブジェクトの縦と横の寸法を抽出します
私は、次のコードを使用しますが、私は右のプロパティを使用していた場合、私はわからない:
L = bwlabel(myImage);
prop = regionprops(L,'BoundingBox');
あなたは黒い塊が画像でだけオブジェクトであると仮定すると、regionprops
を使用していない別の答えをしたい場合は、あなたがの左上と右下の角を見つけることによって最小全域バウンディングボックスを見つけることができますオブジェクトピクセルとみなされるもののうち最も右の列と一番左の列と一番下の行と一番上の行を減算することによって幅と高さを求める。バイナリ画像をL
に格納されていると仮定すると、次の操作を行います
[r,c] = find(~L);
width = max(c) - min(c) + 1;
height = max(r) - min(r) + 1;
find
非ゼロであるすべての行と列の位置を見出します。このように、私はを反転させて、すべてのゼロ位置が非ゼロになるようにしなければなりませんでした。 r
およびc
は、非ゼロの行および列の位置をそれぞれ返す列ベクトルであり、次に上述の論理Iが実行される。
をあなたは文字通りサイズこれらの線のをしたい場合は、それらはregionprops
の結果に既に含まれています。あなたの青と赤の線の
prop = regionprops(L, 'BoundingBox');
prop =
BoundingBox: [x, y, width, height]
長さは、それぞれ、BoundingBox
フィールドの第三及び第四の要素であろう。
私のイメージは左のもので、私はちょうど私が正しいものを望んでいることを実証しました。では、左の画像にある「BoundingBox」を使用してこれらのサイズを見つけることはできますか? – Sam
@Sam:* "あなたの青い線と赤い線の長さはそれぞれ、BoundingBoxのフィールドの3番目と4番目の要素になります。" *この文では誤解の余地はないと思います。はっきりと綴られています。 – rayryeng
ああええとBTWスーバー、いい仕事:) +1。 – rayryeng