武汉理工大学《专业课程设计》说明书
1 设计目的
这次的课设题目是图像特征的求取,利用 MATLAB 来实现此功能。首先由
由实验室机房提供的 matlab 软件和提供一张二值图片(包含一个圆或矩形、三
角形的目标),然后根据提供的条件完成的主要任务:
(1)掌握图像目标特征求取的基本原理;
(2)熟练掌握 matlab 软件,并利用 matlab 设计一程序完成以下功能;
(3)通过对二值图像原理的认识,进行产生二值图像目标特征提取的程序
设计;
(4)用二值图片(包含一个圆或矩形、三角形的目标);计算目标的面积、
周长、中心三个参数(不能使用 matlab 库函数);
(5)要求阅读相关参考文献不少于 5 篇。
1
武汉理工大学《专业课程设计》说明书
2 理论知识介绍
2.1 图像的特征
常用的图像特征有颜色特征、纹理特征、形状特征、空间关系特征。
一、颜色特征
颜色特征是一种全局特征,描述了图像或图像区域所对应的景物的表面性
质。一般颜色特征是基于像素点的特征,此时所有属于图像或图像区域的像素都
有各自的贡献。由于颜色对图像或图像区域的方向、大小等变化不敏感,所以颜
色特征不能很好地捕捉图像中对象的局部特征。另外,仅使用颜色特征查询时,
如果数据库很大,常会将许多不需要的图像也检索出来。颜色直方图是最常用的
表达颜色特征的方法,其优点是不受图像旋转和平移变化的影响,进一步借助归
一化还可不受图像尺度变化的影响,基缺点是没有表达出颜色空间分布的信息。
二、纹理特征
纹理特征也是一种全局特征,它也描述了图像或图像区域所对应景物的表面
性质。但由于纹理只是一种物体表面的特性,并不能完全反映出物体的本质属性,
所以仅仅利用纹理特征是无法获得高层次图像内容的。与颜色特征不同,纹理特
征不是基于像素点的特征,它需要在包含多个像素点的区域中进行统计计算。在
模式匹配中,这种区域性的特征具有较大的优越性,不会由于局部的偏差而无法
匹配成功。作为一种统计特征,纹理特征常具有旋转不变性,并且对于噪声有较
强的抵抗能力。但是,纹理特征也有其缺点,一个很明显的缺点是当图像的分辨
率变化的时候,所计算出来的纹理可能会有较大偏差。另外,由于有可能受到光
照、反射情况的影响,从 2-D 图像中反映出来的纹理不一定是 3-D 物体表面真
实的纹理。
例如,水中的倒影,光滑的金属面互相反射造成的影响等都会导致纹理的变
化。由于这些不是物体本身的特性,因而将纹理信息应用于检索时,有时这些虚
假的纹理会对检索造成“误导”。
在检索具有粗细、疏密等方面较大差别的纹理图像时,利用纹理特征是一种
有效的方法。但当纹理之间的粗细、疏密等易于分辨的信息之间相差不大的时候,
通常的纹理特征很难准确地反映出人的视觉感觉不同的纹理之间的差别。
2
武汉理工大学《专业课程设计》说明书
三、形状特征
各种基于形状特征的检索方法都可以比较有效地利用图像中感兴趣的目标
来进行检索,但它们也有一些共同的问题,包括:①目前基于形状的检索方法还
缺乏比较完善的数学模型;②如果目标有变形时检索结果往往不太可靠;③许多
形状特征仅描述了目标局部的性质,要全面描述目标常对计算时间和存储量有较
高的要求;④许多形状特征所反映的目标形状信息与人的直观感觉不完全一致,
或者说,特征空间的相似性与人视觉系统感受到的相似性有差别。另外,从 2-D
图像中表现的 3-D 物体实际上只是物体在空间某一平面的投影,从 2-D 图像
中反映出来的形状常不是 3-D 物体真实的形状,由于视点的变化,可能会产生
各种失真。
四、空间关系特征
所谓空间关系,是指图像中分割出来的多个目标之间的相互的空间位置或相
对方向关系,这些关系也可分为连接/邻接关系、交叠/重叠关系和包含/包容关系
等。通常空间位置信息可以分为两类:相对空间位置信息和绝对空间位置信息。
前一种关系强调的是目标之间的相对情况,如上下左右关系等,后一种关系强调
的是目标之间的距离大小以及方位。显而易见,由绝对空间位置可推出相对空间
位置,但表达相对空间位置信息常比较简单。
空间关系特征的使用可加强对图像内容的描述区分能力,但空间关系特征常
对图像或目标的旋转、反转、尺度变化等比较敏感。另外,实际应用中,仅仅利
用空间信息往往是不够的,不能有效准确地表达场景信息。为了检索,除使用空
间关系特征外,还需要其它特征来配合。
2.2 二值图像特征提取
特征提取有三类方法:区域内部形状特征提取;区域外部形状特征提取;利
用图像层次型数据结构,提取形状特征。
2.2.1 区域内部形状特征提取
区域内部形状特征提取有区域内部空间域分析,它是直接在图像的空间区域
内部提取形状特征来进行分析。特征提取方法主要有:
(1)拓扑描绘子
3
武汉理工大学《专业课程设计》说明书
(2)凹凸性
(3)区域的测量
这次课设的主要任务要计算目标的面积、周长、中心三个参数,因此这里主
要讨论区域的测量。主要包括:
①面积:区域内像素的总和。
②周长:关于周长的计算有多种方法,常用的有两种:一种计算方法是针对
区域的边界像素而言,上、下、左、右像素间的距离为 1,对角线像素间的距离
为 2 。周长就是边界像素间距离的总和。另一种计算方法将边界的像素总和作
为周长。
③圆形度:它是测量区域形状常用的量。其定义如下
R=4 L2
S
④形心:平面图形的形心就是截面图形的几何中心。当截面具有两个对称轴
时,二者的交点就是该截面的形心。据此,可以很方便的确定圆形、圆环形、正
方形的形心。但对于一般图形主要通过以下公式计算其形心:
X
Y
xi
A
yi
A
yi
xi
和
是所求图形中各点的坐标值,A 是图形的总面积,即总的
像素点。
2.2.2 区域外部形状特征提取
区域外部形状是指构成区域边界的像素集合。区域边界和骨架的空间域分析
法主要包括方向链码描述和结构分析法。
用于描述曲线的方向链码法是由弗里曼提出。八链码原理图如下所示。
)90(2
)45(1
)0(0
)
135(3
180(4
)
(5
225
)
315(7
)
(6
270
)
图 2.2.2 八链码原理图
该方法采用曲线起始点的坐标和线的斜线来表示曲线。对于离散的数字图像
4
武汉理工大学《专业课程设计》说明书
而言,区域的边界可理解为相邻边界像素逐段相连而成。对于图像某像素的 8-
领域,把该像素和其 8-领域的各像素连线方向按图 2.2.2 所示进行编码,用 0、1、
2、3、4、5、6、7 表示 8 个方向,这种代码称为方向码。其中偶数码为水平或
垂直方向的链码,码长为 1:奇数码为对角线方向的链码,码长为 2 。
边界的方向链码表示既便于形状特征的计算,又节省存储空间。从链码可以
提取以下一系列的几何形状特征。
(1)区域边界的周长
假设区域的边界链码为 aa 2
1
…a2
,每个码ai
所表示的线段长度为 li ,那
么该区域边界的周长为
n
L=
式中,ne
il
=ne +( n -ne ) 2
i
1
为链码序列中偶码个数; n 为链码序列中码的总个数。
(2)计算面积 S
由链码计算区域的面积表达式为:
5.0
n
S=
1
ayy
ya
(
,y0
1
0
2
i
i
i
i
a
)
1
是初始点的纵坐标,ai0
2
i
式中,
i
i
和ai2
分别是方向码长度
在 k=0(水平),k=2(垂直)方向的分量。
2.3 MATLAB 中特征提取函数
2.3.1 函数 imfeature
此函数主要是用来提取特征以计算图像区域的特征尺寸。其语法为:
'Area':区域内像素数目,也可以看成是区域的面积
stats = imfeature(L,measurements)
stats = imfeature(L,measurements,n)
参数 measurements 可以为:
1.
2. 'ConvexHull':是 p 行 2 列的矩阵,包含某区域的最小凸多边形
3. 'EulerNumber':是标量,几何拓扑中的一个拓扑不变量--欧拉数
4. 'Centroid': 1*2 向量,区域的质心 (x,y)
5. 'ConvexImage':二值图像,用来画出上述的区域最小凸多边形
6. 'Extrema':8 行 2 列矩阵,八方向区域极值点
5
武汉理工大学《专业课程设计》说明书
7. 'BoundingBox':最小矩形 1*4 向量
8. 'ConvexArea':标量,'ConvexImage'中的像素数
9. 'EquivDiameter':是标量,等价直径:与区域具有相同面积的圆的直径
10. 'MajorAxisLength':是标量,与区域具有相同标准二阶中心矩的椭圆的
长轴长度
11. 'Image':二值图像,与某区域具有相同大小的逻辑矩阵
12. 'Solidity':是标量,同时在区域和其最小凸多边形中的像素比例
13. 'MinorAxisLength':是标量,与区域具有相同标准二阶中心矩的椭圆的
短轴长度
14. 'FilledImage':与 Image 相同,唯一区别是这是个做了填充的逻辑矩阵
15. 'Extent':是标量,同时在区域和其最小边界矩形中的像素比例
16. 'Orientation':是标量,与区域具有相同标准二阶中心矩的椭圆的长轴与
x 轴的交角(度)
17. 'FilledArea':是标量,填充区域图像中的 on 像素个数
18. 'PixelList': p 行 ndims(L)列矩阵,存储上述索引对应的像素坐标
19. 'Eccentricity':是标量,与区域具有相同标准二阶中心矩的椭圆的离心
率
2.3.2 函数 regionprops
函数 regionprops 主要用来测量图像区域属性。其语法为:
D=regionprops(L,properties)
其中,L 是标记矩阵,properties 是一个用逗号分隔的字符串列表,一个包
含字符串的单元数组,单个字符串'all','basic',如果是'all',那么就会计算所有描述
子,如果是'basic',那么就会计算'Area','Centroid','BoundingBox'三个基本描述子。
参数 properties 介绍如下:
1,'Area':区域内像素数目,也可以看成是区域的面积
2,'BoundingBox':最小矩形 1*4 向量
3,'Centroid': 1*2 向量,区域的质心 (x,y)
4,'ConvexArea':标量,'ConvexImage'中的像素数
6
武汉理工大学《专业课程设计》说明书
5,'ConvexHull':是 p 行 2 列的矩阵,包含某区域的最小凸多边形
6,'ConvexImage':二值图像,用来画出上述的区域最小凸多边形
7,'Eccentricity':是标量,与区域具有相同标准二阶中心矩的椭圆的离心率
8 'EquivDiameter':是标量,等价直径:与区域具有相同面积的圆的直径
9 'EulerNumber':是标量,几何拓扑中的一个拓扑不变量--欧拉数
10 'Extent':是标量,同时在区域和其最小边界矩形中的像素比例
11 'Extrema':8 行 2 列矩阵,八方向区域极值点
12 'FilledArea':是标量,填充区域图像中的 on 像素个数
13 'FilledImage':与 Image 相同,唯一区别是这是个做了填充的逻辑矩阵
14 'Image':二值图像,与某区域具有相同大小的逻辑矩阵。
15 'MajorAxisLength':是标量,与区域具有相同标准二阶中心矩的椭圆的长
轴长度
16 'MinorAxisLength':是标量,与区域具有相同标准二阶中心矩的椭圆的短
轴长度
17 'Orientation':是标量,与区域具有相同标准二阶中心矩的椭圆的长轴与 x
轴的交角(度)
18 'PixelList':p 行 ndims(L)列矩阵,存储上述索引对应的像素坐标
3 程序设计及结果
所要处理的图像如下图所示:
图 3-1 原始所画图像
7
武汉理工大学《专业课程设计》说明书
3.1 matlab 特征提取函数
由于函数 regionprops 是函数 imfeature 的一个升级的函数,两者功能相似,
所以这里只利用函数 regionprops。在对图像进行特征提取之前必须首先对图像
进行标记。即利用 matlab 中的函数 bwlabel,使图像的各个连通的区域得到标记。
然后可以直接利用函数 regionprops 提取其特征参数。程序如下;
>> G=imread('jx.jpg');
>> im = im2bw(G);
>> one = find(im==1);
>> zero = find(im==0);
>> im(one)=0;
>> im(zero)=1;
>> imwrite(im,'j.jpg');
>> L = bwlabel(im);
>> stats = regionprops(L,'all') %提取其特征
对于一个图 3-1 转换后的二值图像为:
%对图形矩阵求反
%存储转换后的矩阵
%标记连通的区域
%读取图像
%将其转化为二值图像
图 3-2 处理后的二值图像
提取特征后可得出结果为
Area: 21901
Centroid: [121 121]
BoundingBox: [30.5000 60.5000 181 121]
SubarrayIdx: {[1x121 double]
MajorAxisLength: 209.0008
MinorAxisLength: 139.7188
Eccentricity: 0.7437
Orientation: 0
[1x181 double]}
8