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