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發現非零所有的行和列的位置。因此,我不得不反轉你的形象,使所有的零位置成爲非零。 rc是列向量,它們分別返回非零的行和列位置,然後執行上述邏輯I.

2

如果你真的只是想尺寸的線,他們是已經包含在regionprops的結果中。

prop = regionprops(L, 'BoundingBox'); 

prop = 

    BoundingBox: [x, y, width, height] 

的你的藍色和紅色線的長度將是BoundingBox字段的第三和第四元件,分別。

+0

我的形象是左邊的,我只是在右邊展示了我想要的東西。那麼,我可以使用左側圖像上的「BoundingBox」來查找這些尺寸嗎? – Sam

+1

@Sam:*「你的藍色和紅色線條的長度將分別是」BoundingBox「字段的第三和第四個元素。」*我認爲在該陳述中沒有任何誤解的空間。它清楚地說明了。 – rayryeng

+0

哦,是的,BTW Suever,幹得好:) +1。 – rayryeng