对象分析与属性

目录

一、对象分析
1.获取对象轮廓
2.查找二值图像中的对象
3.绘制区域边界
4.查找图像的区域边界

二、区域和图像属性
1.测定图像区域属性
2.计算对象面积
3.根据面积大小提取对象
4.查找联通对象
5.凸壳
6.获得二值图像的边缘图
7.根据属性从二值图像提取对象
8.选择二值图中的对象
9.标记连通分量
10.创建标签矩阵

一、对象分析

1.获取对象轮廓

B = bwboundaries(BW);
获取二值图中对象的轮廓,和OpenCV中cvFindContours函数功能类似。B是一个P×1的cell数组,P为对象个数,每个cell 是Q×2的矩阵,对应于对象轮廓像素的坐标。

2.查找二值图像中的对象

B = bwtraceboundary(BW,P,fstep)
根据要查找的对象上边界上的点P来查找对象,fstep指定连接到的下一个对象像素的初始搜索方向,B保存查找到的区域的边界像素的行和列坐标。

3.绘制区域边界

visboundaries(BW);

4.查找图像的区域边界

mask = boundarymask(L);
计算表示输入标签矩阵L的区域边界的掩膜,输出的二值图像mask以1表示边界,0表示非边界。

二、区域和图像属性

1. 测定图像区域属性

stats = regionprops(BW,properties);
可以取得区域的各项属性(properties指定),如

s = regionprops(L,’Area’,’Centroid’,’EquivDiameter’);
可以求取L中所有区域的面积,质心,对应直径。
-求取二值图像中的对象

B = bwtraceboundary(BW,P,fstep);

2. 计算对象面积

total = bwarea(BW);
估计二值图像中对象的面积。注:该面积和二值图像中对象的像素数目不一定相等。

3.根据面积大小提取对象

BW2 = bwareafilt(BW,range);
从二进制图像BW中提取所有面积在range范围内的联通的组件(对象),产生另一个二进制图像BW2。range 是最小和最大尺寸(包括)的2乘1矢量。bwareafilt移除不在面积range范围内的物体。默认连接是8。

4.查找联通对象

CC = bwconncomp(BW)
返回的是联通的组件

5. 凸壳

CH = bwconvhull(BW)
计算所有对象凸包

6.获得二值图像的边缘图

BW2 = bwperim(BW)

7.根据属性从二值图像提取对象

BW2 = bwpropfilt(BW,attrib,range)

8.选择二值图中的对象

BW2 = bwselect(BW,c,r,n)
返回坐标(r,c)所在对象的二进制图像,其中n指定了连通性。默认情况下,bwselect查找4个连接的对象。

9.标记连通分量

[L,num]=bwlabel(f,conn)
连通分量就是前景图像内部单个元素之间的关系,是通过连通得到的像素集合。连通分为4连通和8连通。f为二值图像,connb表示联通方式(4或者8);L叫做标记矩阵,不同的联通分量分别用数字1,2,3…标记。num(可选)则给出找到的连通分量的总数。L为连续区域的标签矩阵。

10.创建标签矩阵

L = labelmatrix(CC)
从bwconncomp结构创建标签矩阵,labelmatrix比bwlabel,bwlabeln内存效率更高。

posted @ 2020-03-30 10:12  盐亭的森林  阅读(294)  评论(0编辑  收藏  举报