2

Aşağıdaki nesneyim var ve MATLAB'ta maksimum dikey (kırmızı çizgi) ve yatay (mavi çizgi) boyutları ayıklamak istiyorum. Düzensiz bir nesnenin dikey ve yatay boyutlarını ayıkla

enter image description here

ben aşağıdaki kodu kullanılmış, ama sağ özelliğini kullanıyorum olmadığından emin değilim:

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

cevap

3

siyah kütle görüntüde sadece nesne olduğunu varsayarak, regionprops kullanmayan başka bir yanıt istiyorsanız, sol üst ve sağ alt köşeleri bularak sınırlayıcı kutusu kapsayan minimum bulabilirsiniz nesne, daha sonra en sağdaki sütun ve en soldaki sütun ve alt sıradaki en üst ve en üst satırını çıkartarak sırasıyla bir nesne pikseli olarak kabul edilir. Aşağıdaki, L saklanan ikili görüntü yok varsayarak:

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

find sıfırdan farklıysa tüm satır ve sütun konumlarını bulur. Bu nedenle, görüntüyü döndürerek sıfır konumunuzu sıfırlayabilmem için aldım. r ve c, sırasıyla sıfır olmayanların satır ve sütun konumlarını döndüren sütun vektörleridir, ardından yukarıda belirtilen mantık yürütülür.

2

kelimenin tam anlamıyla sadece boyutları o çizgilerin, bunlar istiyorsanız Zaten regionprops sonucunda bulunan. Mavi ve kırmızı çizgilerin

prop = regionprops(L, 'BoundingBox'); 

prop = 

    BoundingBox: [x, y, width, height] 

uzunlukları sırasıyla BoundingBox alanın üçüncü ve dördüncü elemanlar olacaktır.

+0

Benim resmim sol olanı ve sadece doğru olanı istediğimi gösterdim. Yani, bu boyutları soldaki resimde "BoundingBox" kullanarak bulabilir miyim? – Sam

+1

@Sam: * "Mavi ve kırmızı çizgilerinizin uzunlukları sırasıyla" BoundingBox "alanının üçüncü ve dördüncü öğeleri olacaktır. * Bu ifadede yanlış yorumlama için herhangi bir yer olduğunu düşünmüyorum. Açıkça belli oldu. – rayryeng

+0

Oh evet ve BTW Suever, iyi iş :) +1. – rayryeng