最近有人问我函数找到的对象的顺序
bwlabel
,
bwconncomp
,
regionprops
.例如,在这张二值图像中,是什么决定了物体的顺序?
的函数
bwlabel
而且
bwconncomp
两者都在同一方向上扫描物体。他们从最左边的列开始向下看每一列。这个动画演示了搜索顺序:
由于这个搜索过程,对象的顺序取决于每个对象中最左端的像素。具体来说,顺序是一种字典排序
(c, r)美元
坐标,
c
而且
r
是最上面最左边像素的列坐标和行坐标。
如果你传递一个二值图像给
regionprops
,得到的对象顺序与for相同
bwconncomp
,那是因为
regionprops
调用
bwconncomp
在引擎盖下面。
有时,处理文本图像的人要求更改内容,以便搜索按行进行,而不是按列进行。其动机是使对象顺序与每行上的字符顺序相同。(假设这是一种从左到右的语言。)不过,这通常并不奏效。考虑以下文本片段:
如果按行搜索,首先会找到字母“b”,然后是“L”,然后是“t”。这个动画展示了为什么会这样:
如果您想要不同的排序顺序,我建议返回
regionprops
输出为表,然后就可以使用了
sortrows
.这里有几个例子。
url =“https://blogs.mathworks.com/steve/files/rice-bw-ul.png”;
道具=区域道具(“表”,,“重心”“区域”])
道具=
11×2表
|
区域 |
重心 |
1 |
138 |
5.9855 |
35.0870 |
2 |
87 |
5.3678 |
60.3563 |
3. |
208 |
24.1971 |
26.3125 |
4 |
199 |
28.1859 |
48.2563 |
5 |
61 |
23.8197 |
4.3443 |
6 |
20. |
26.7500 |
62.3500 |
7 |
189 |
43.6349 |
19.8783 |
8 |
97 |
43.8454 |
58.5361 |
9 |
115 |
58.2087 |
7.0696 |
10 |
70 |
61.7857 |
58.2286 |
11 |
26 |
62.9231 |
31.8846 |
您可以根据对象的质心对它们进行排序,主要排序在垂直方向上,次要排序在水平方向上。
道具。Centroid_x = props.Centroid(:,1);
道具。Centroid_y = props.Centroid(:,2);
Props_by_row = sortrows(道具,[“Centroid_y”“Centroid_x”])
props_by_row =
11×4表
|
区域 |
重心 |
Centroid_x |
Centroid_y |
1 |
61 |
23.8197 |
4.3443 |
23.8197 |
4.3443 |
2 |
115 |
58.2087 |
7.0696 |
58.2087 |
7.0696 |
3. |
189 |
43.6349 |
19.8783 |
43.6349 |
19.8783 |
4 |
208 |
24.1971 |
26.3125 |
24.1971 |
26.3125 |
5 |
26 |
62.9231 |
31.8846 |
62.9231 |
31.8846 |
6 |
138 |
5.9855 |
35.0870 |
5.9855 |
35.0870 |
7 |
199 |
28.1859 |
48.2563 |
28.1859 |
48.2563 |
8 |
70 |
61.7857 |
58.2286 |
61.7857 |
58.2286 |
9 |
97 |
43.8454 |
58.5361 |
43.8454 |
58.5361 |
10 |
87 |
5.3678 |
60.3563 |
5.3678 |
60.3563 |
11 |
20. |
26.7500 |
62.3500 |
26.7500 |
62.3500 |
为K = 1:height(props_by_row)
x = props_by_row.Centroid_x(k);
y = props_by_row.Centroid_y(k);
文本(x, y,字符串(k),颜色=“黄色”, BackgroundColor =“蓝色”, FontSize = 16,...
FontWeight =“大胆”, horizontalalign =“中心”,...
VerticalAlignment =“中间”);
再举个例子,你可以按面积排序。
Props_by_area = sortrows(道具,“区域”,“下”)
props_by_area =
11×4表
|
区域 |
重心 |
Centroid_x |
Centroid_y |
1 |
208 |
24.1971 |
26.3125 |
24.1971 |
26.3125 |
2 |
199 |
28.1859 |
48.2563 |
28.1859 |
48.2563 |
3. |
189 |
43.6349 |
19.8783 |
43.6349 |
19.8783 |
4 |
138 |
5.9855 |
35.0870 |
5.9855 |
35.0870 |
5 |
115 |
58.2087 |
7.0696 |
58.2087 |
7.0696 |
6 |
97 |
43.8454 |
58.5361 |
43.8454 |
58.5361 |
7 |
87 |
5.3678 |
60.3563 |
5.3678 |
60.3563 |
8 |
70 |
61.7857 |
58.2286 |
61.7857 |
58.2286 |
9 |
61 |
23.8197 |
4.3443 |
23.8197 |
4.3443 |
10 |
26 |
62.9231 |
31.8846 |
62.9231 |
31.8846 |
11 |
20. |
26.7500 |
62.3500 |
26.7500 |
62.3500 |
为K = 1:height(props_by_area)
x = props_by_area.Centroid_x(k);
y = props_by_area.Centroid_y(k);
文本(x, y,字符串(k),颜色=“黄色”, BackgroundColor =“蓝色”, FontSize = 16,...
FontWeight =“大胆”, horizontalalign =“中心”,...
VerticalAlignment =“中间”);
评论
如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。