提取不规则对象的垂直和水平尺寸
Extract vertical and horizontal dimensions of an irregular object
我有以下对象,想在 MATLAB 中提取最大垂直(红线)和水平(蓝线)尺寸。
我用了下面的代码,但是我不确定我用的对不对属性:
L = bwlabel(myImage);
prop = regionprops(L,'BoundingBox');
如果您真的只是想要这些行的 大小 ,它们已经包含在 regionprops
.
的结果中
prop = regionprops(L, 'BoundingBox');
prop =
BoundingBox: [x, y, width, height]
您的蓝线和红线的长度将分别是 BoundingBox
字段的第三个和第四个元素。
如果你想要另一个不使用regionprops
的答案,假设黑色质量是图像中唯一的对象,你可以找到最小跨度通过找到对象的左上角和右下角来确定边界框,然后通过减去被认为是对象像素的最右列和最左列以及最底部行和最顶部行来找到宽度和高度分别。假设您的二进制图像存储在 L
中,请执行以下操作:
[r,c] = find(~L);
width = max(c) - min(c) + 1;
height = max(r) - min(r) + 1;
find
查找所有非零的行和列位置。因此,我不得不 反转 您的图像,以便所有零位置都变为非零。 r
和 c
是列向量,分别 return 非零的行和列位置然后执行我上面所说的逻辑。
我有以下对象,想在 MATLAB 中提取最大垂直(红线)和水平(蓝线)尺寸。
我用了下面的代码,但是我不确定我用的对不对属性:
L = bwlabel(myImage);
prop = regionprops(L,'BoundingBox');
如果您真的只是想要这些行的 大小 ,它们已经包含在 regionprops
.
prop = regionprops(L, 'BoundingBox');
prop =
BoundingBox: [x, y, width, height]
您的蓝线和红线的长度将分别是 BoundingBox
字段的第三个和第四个元素。
如果你想要另一个不使用regionprops
的答案,假设黑色质量是图像中唯一的对象,你可以找到最小跨度通过找到对象的左上角和右下角来确定边界框,然后通过减去被认为是对象像素的最右列和最左列以及最底部行和最顶部行来找到宽度和高度分别。假设您的二进制图像存储在 L
中,请执行以下操作:
[r,c] = find(~L);
width = max(c) - min(c) + 1;
height = max(r) - min(r) + 1;
find
查找所有非零的行和列位置。因此,我不得不 反转 您的图像,以便所有零位置都变为非零。 r
和 c
是列向量,分别 return 非零的行和列位置然后执行我上面所说的逻辑。