用MATLAB进行图像处理

图像处理概念,算法和MATLAB

Object Sort bwlabel、bwconncomp和regionprops的顺序

最近有人问我函数找到的对象的顺序 bwlabel bwconncomp , regionprops .例如,在这张二值图像中,是什么决定了物体的顺序?
rice-bw-ul-numbered.png
的函数 bwlabel 而且 bwconncomp 两者都在同一方向上扫描物体。他们从最左边的列开始向下看每一列。这个动画演示了搜索顺序:
rice-animated.gif
由于这个搜索过程,对象的顺序取决于每个对象中最左端的像素。具体来说,顺序是一种字典排序 (c, r)美元 坐标, c 而且 r 是最上面最左边像素的列坐标和行坐标。
如果你传递一个二值图像给 regionprops ,得到的对象顺序与for相同 bwconncomp ,那是因为 regionprops 调用 bwconncomp 在引擎盖下面。
有时,处理文本图像的人要求更改内容,以便搜索按行进行,而不是按列进行。其动机是使对象顺序与每行上的字符顺序相同。(假设这是一种从左到右的语言。)不过,这通常并不奏效。考虑以下文本片段:
——拉里- 75 dpi.png
如果按行搜索,首先会找到字母“b”,然后是“L”,然后是“t”。这个动画展示了为什么会这样:
about-larry-animated.gif
如果您想要不同的排序顺序,我建议返回 regionprops 输出为表,然后就可以使用了 sortrows .这里有几个例子。
url =“https://blogs.mathworks.com/steve/files/rice-bw-ul.png”
A = imread(url);
imshow (A)
道具=区域道具(“表”,,“重心”“区域”])
道具= 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
imshow (A)
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
imshow (A)
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帐户或创建一个新帐户。