提取不规则物体的垂直和水平尺寸

时间:2016-04-14 19:54:09

标签: matlab image-processing computer-vision pattern-matching dimensions

我有以下物体,想要在MATLAB中提取最大垂直(红线)和水平(蓝线)尺寸。

enter image description here

我使用了以下代码,但我不确定我是否使用了正确的属性:

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

2 个答案:

答案 0 :(得分:3)

如果您想要另一个不使用regionprops的答案,假设黑色质量是图像中的唯一对象,您可以找到最小跨度边界框找到对象的左上角和右下角,然后通过减去最右边的列和最左边的列以及分别被认为是对象像素的最底行和最顶行来找到宽度和高度。假设您的二进制图像存储在L中,请执行以下操作:

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

find查找非零的所有行和列位置。因此,我必须反转您的图像,以便所有零位置变为非零。 rc是列向量,它们分别返回非零的行和列位置,然后执行上述逻辑。

答案 1 :(得分:2)

如果你真的只想要这些行的尺寸,它们已经包含在regionprops的结果中。

prop = regionprops(L, 'BoundingBox');

prop = 

    BoundingBox: [x, y, width, height]

蓝线和红线的长度分别是BoundingBox字段的第三和第四个元素。