质心,图像中矩形的长度和宽度

时间:2017-12-17 06:15:08

标签: matlab

我的图像如下所示:

enter image description here

我想找出图像中每个矩形的以下属性
(i)质心(ii)长度(iii)宽度(iv)面积(v)周长
使用MATLAB。

2 个答案:

答案 0 :(得分:2)

好吧,既然它们都是矩形,你实际上只需要找到边界框。你可以找到方框:

img = imread('img.jpg');
bw = im2bw(img);

cc = bwconncomp(bw);
stats = regionprops(cc, 'BoundingBox');

以下是您在 stats.BoundingBox 中的图片的结果:

[36,50 37,50 29 29]
[46,50 363,50 11 13]
[60,50 135,50 10 8]
[60,50 246,50 7 14]
[155,50 42,50 8 14]
[155,50 156,50 3 3]
[155,50 260,50 5 8]
[182,50 355,50 5 8]
[259,50 48,50 7 8]
[261,50 260,50 3 2]
[261,50 366,50 5 8]
[280,50 154,50 8 8]
[365,50 151,50 8 8]
[367,50 13,50 8 8]
[373,50 262,50 2 3]
[394,50 358,50 5 8]

<强> - 编辑 -

为清楚起见,regionprops如果使用stats = regionprops(cc, 'BoundingBox', 'Centroid', 'Area', 'Perimeter');等额外参数调用,也可以计算周长,面积和质心。但是,如果区域总是简单的矩形而不像你的情况那样旋转,如果要处理的图像太多,我会自己计算它们以支持速度。否则,只是为了保持简单和/或安全,regionprops将是最佳选择。正如我在下面的评论中提到的,在我的PC上进行10000次迭代需要9秒(手动)和40秒(regionprops)来计算所有指标。

答案 1 :(得分:1)

只是要补充一点,如果您使用regionprops,您也可以同样获得质心:

 stats = regionprops(cc, 'BoundingBox', 'centroid');