adinxu
by adinxu
~1 分钟 阅读用时

分类

标签

MATLAB(四) 图像处理–对象分析与属性

对象分析与属性

一、对象分析

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内存效率更高。