摘要:数字图像处理是利用计算机对图像信息进行各种变换处理的技术和方法。本文主要介绍了数字图像处理和图像中区域特征检测的原理,以及MATLAB在数字图像处理中的应用。本次设计主要研究了数字图像处理中图像分割中的阈值分割法和区域生长法,此次研究主要是以MATLAB软件为平台,采用了区域生长法编写设计代码程序,实现了数字图像的区域特征检测,包括提取了周长、面积和重心坐标,整个设计以区域生长基本算法编写。
第一章 绪论
1.1 研究的目的和意义
通过对图像中区域特征的检测与提取技术的研究,为匹配与识别打下了基础,从而可以研究各种图像,可以让人们更加准确的理解这个世界,尽管人眼鉴别事物的能力高,可以识别多种颜色,但是在很多情形下,图像对于人眼来说是不可见的,通过研究,可以使这些不可见的图像变得清晰明亮。
其次,通过研究,我们可以扩宽人们提取信息的范围,扩宽人们的眼界。人的眼睛目前只能看到电磁波谱中可见光的部分,人的眼睛对其余的各种波谱都是看不见的。但是我们通过数字图像处理技术就可以利用各种波段的信息进行数字成像,将看不见的信息变为看得见的信息图像[1]。
例如在生物学中:DNA显示分析;红血球和白血球分析技术、组织和虫卵切片的分析技术;染色体分析技术;内脏大小形状及异常检测技术;心血管数字减影以及其他减影技术;癌细胞识别技术;心脏活动的动态分析技术;微循环的分析判断技术等。在航天应用中:军事侦察、定位、导航、指挥;多光谱卫星图像分析;矿藏勘探;森林资源探查、分类、防火;水力资源探查,洪水泛滥监测;病虫害调查;天文、太空星体的探测及分析;交通、空中管理、铁路选线等。在工业上:CAD和CAM技术用于模具、零件制造、服装、印染业;零件、产品无损检测,焊缝及内部缺陷检查;印制电路板质量、缺陷的检出;生产过程的监控;邮件自动分检。在军事领域中:罪犯脸型合成;手迹、人像的识别等。研究可以为人类带来巨大的社会经济效益,可以预见,将会对自然科学甚至人类社会的发展具有深远的意义。
1.2 国内外研究现状和发展趋势
目前国内外主要有以下6个方面的应用:航天与航空技术方面、生物医学工程方面、通信工程方面、工业和工程方面、军事和公安方面、文化艺术方面及其他。
以后其将向着多媒体化、立体化、高分辨率、高速、标准化和智能化方向发展;图像和图形的结合将从一维成像逐渐向多维成像的方向发展;在硬件芯片上的应用将更加广阔[2]。
图像中区域特征检测与图像分割息息相关,紧密联系,要研究区域,就首先要知道分割方法。分割是将图像分成许多统一、区域的过程。每个均匀区域都是整个场景的要素部分或对象。换句话说,图像的分割是定义相连且不相互重叠区域的集合,以便在图像段的每个像素获取表明区域的一个独特的、属于哪个区域的标记。在自动化图像分析中,分割是最重要的元素之一,主要是因为在这一步将从图像中提取感兴趣的对象或其他实体,用于随后的处理,如描述和识别。例如,航空图像包含海洋和陆地,最初,分割的问题是将图像分为两部分——路地段和水体(或海洋段)。其后,需要适当的分割图像中陆地部分对象,并进行相应的分类。
在提取每段之后,接下来的任务是提取重要的特征集,如文理、颜色和形状。这些是重要的可测量的和实体,给测量图像段提供了各种各样的特征,在场景中的各个区域都可以通过一系列的特征来描述。
因此研究区域就需要用到图像分割法,图像分割是图像处理中一类重要的研究,其基本操作是把图像分成一些有意义的、互不重叠的区域,分割结果的优劣直接影响到对图像后续处理的方法和质量,作为图像分析、理解的基础,图像分割在诸多领域具有广泛的应用,例如基于内容的图像检索、机器视觉、文字识别、指纹识别以及生物医学图像处理方面的病变检测和识别,军事图像处理方面的地形匹配与目标制导,工业图像处理方面的无损探伤和非接触式检测等。图像分割方法可以分为基于区域特征的方法、基于边界特征的方法和基于相关匹配的方法三大类。而本次研究是基于区域特征的方法。区域分割法目前是公认的图像处理难题,其困难在于图像内容的多样性以及噪声等的干扰,以后将慢慢克服这些弱点,向有效性、整体性、精确性,稳定性的方向发展;区域生长法目前主要的问题是表示区域的初始化种子的选择,在区域生长过程中,这些不同区域点合适属性的选择在相似性和区域面积上也遇到问题,因此都要经过后处理,未来区域生长法将减少分割图像中无法与任何邻接区域合并的小区域的数量。阈值法是一种
传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术。在过去的40年里,图像阈值化这个看似简单实际却不那么简单的问题,受到了世界各地学者的强烈关注,因此也产生了很多的方法来确定阈值,但是很遗憾,如同其他图像分割法一样,目前还没有一个现成的方法对缤纷复杂的图像处理得当。
1.3 主要研究内容
在图像中检测出不同的特征区域后需要使用一种更适合于计算机进一步处理的形式,对得到的区域像素集进行表示和描述。基本上,表示一个区域包括两种选择:用其外部特性来表示区域;用其内部特性来表示区域(如组成区域的像素)。显然,一般局部特征区域的外部特性不具有区分性,只能通过其内部特性来表示。
因此可采用区域生长法,选取一幅合适的图画,将具有相似性质的像素结合起来构成区域。从种子点开始,将每个种子点有相似性的相邻像素合并到这个区域。在这里每个种子像素点都以迭代方式生长,直到处理过图像中的每一个像素,这就形成了不同区域,整个过程为一个迭代的过程[3]。具体方法如下:
(1)首先确定一个像素点作为种子,然后按照相似性准则增长区域,逐步生成具有某种均匀性的空间区域
(2)确定在生长过程中能将相邻像素包括进来的准则
(3)制定让增长停止的条件或规则
阈值分割的实质是利用图像的灰度直方图信息获得用于分割的阈值。它是用一个或几个阈值将图像的灰度级分为几个部分,认为属于同一部分的像素是同一个物体。阈值分割算法主要有以下两个步骤:一是确定需要的分割阈值,二是将分割阈值与像素值进行比较以划分像素。在这两步中,确定阈值是分割的关键。
因此查阅了很多资料,了解了阈值化算法及应用,区域生长法的概念及应用。
1.4 采用的研究思路
我采用的方法有阈值分割法、区域增长法。
(1)用阈值分割时,一般假设图像由具有单峰灰度分布的目标和背景组成,处于目标或背景内部相邻像素间的灰度值是高度相关的,但处于目标和背景交界处两边的灰度值上有很大的差别。此时图像的灰度直方图基本可以看做是由分别对应目标和背景的两个单峰直方图混合构成的。进一步,如果这两个分布大小接近且均值相聚足够远,而且两部分的均方差也足够小,则直方图应为较明显的双峰。类似的,如果图像中有多个单峰灰度分布的目标,则直方图有可能表现为较明显的多峰,对这类图像用阈值分割可以取得较好效果[4]。
但是阈值分割法由于没有或很少考虑到空间关系,使得多阈值选择受到限制,基于区域的分割方法可以弥补这点不足,传统的区域分割方法有区域增长法。该类方法在没有先验知识可以利用时,对含有复杂场景或自然场景等先验知识不足的图像进行分割,也可以取得较好的性能。
(2)区域生长是把图像分割成特征相近的若干小区域,通过比较区域间的相似性,将足够相似并且相邻的区域作为同一区域合并;以此方式将特征相似的小区与不断合并,直到不能合并为止,最后形成不同的各区域。具体做法是:先在每一个感兴趣的区域找出1个像素作为种子,分别以这些种子作为区域生长的起始点,然后以事先规定好的生长准则,将其周围邻域中和种子像素具有相似性质的像素与种子像素合并在一起。然后以这些区域中的这些像素点作为又一个新的种子点继续重复进行上面的过程,直到找不到满足的条件为止。至此,区域生长完成。具体的是用MATLAB软件实现。
1.5 本章节安排
本文以MATLAB程序为基础,介绍数字图像中区域特征检测的原理,方法,结果,等内容。
本文第一章主要介绍数字图像处理技术的发展及本次课题研究的目的;
第二章主要介绍数字图像处理相关概念以及MATLAB概述;
第三章主要介绍图像分割原理及分类,和区域生长原理;
第四章主要介绍图像中目标检测的原理;
第五章主要分析区域生长法程序及结果;
第六章总结本次设计的结果。
第二章 MATLAB与数字图像处理
2.1 数字图像处理概述
2.1.1数字图像处理的目的
当图像被显示和采集时,通常需要改善,以便观察者更容易理解。特别是要突出感兴趣的目标,另外为了使一些日常繁琐的工作自动化,减少工作量,节省人力、物力和财力的开销,也需要进行图像处理。我们常常需要将所需图像从一个地方传送到另外的地方,但是图像处理不只在显示、传输等领域范围起作用,它还可以运用到另外的地方[5]。总的说来,图像处理的目的可以包括以下:
(1)显示和打印
有时为了合理,完整的显示一幅图像,我们需要调整图像的大小、色调等,这时可能用到图像缩放、旋转、调节亮度和改变颜色等。
(2)存储和传输
为了节省存储容量和快速传输图像,很多情况下需要将图像进行压缩处理,这时就需要用到图像编码的相关算法。例如图像存储到数码相机,将太空图像传送到地球等。
(3)增强与恢复
为了突出感兴趣目标的信息,我们需要在图像上进行增强与恢复等处理,例如从老的发黄的照片中去除痕迹,在X照片中提高肿瘤的可视性等,这时就需要对相关图像进行增强和恢复等基本处理。
2,1,2 图像处理的研究内容
数字图像处理的研究内容主要有以下:
(1)压缩编码
图像压缩编码技术是为了减少计算机需要占用的存储器的容量和节省图像处理、传输的时间长度。压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行。
(2)图像变换
由于图像阵列很大,如果直接在空间与中进行处理,涉及到的计算量很大,因此,采用各种方法,如傅里叶变换、离散余弦变换、K-L变换和小波变换等间接处理技术,将空间域的图像处理转换成变换域图像处理,这样不仅可以降低我们的计算量值,而且可以处理的更快更好更有效。
(3)图像分割
数字图像处理中的最核心技术之一是图像分割技术。它提取出图像中有意义感兴趣的的特征,例如图像中的区域、边缘等等,为进行图像分析、识别和理解提供进一步的研究条件。
(4)图像分析和理解
图像分析和理解是图像处理技术的发展和深入,也是人工智能和模式识别的一个分支。在图像分析和理解中主要有图像的描述和图像的分类识别。图像分类识别属于模式识别的范畴,其主要内容是图像经过某些预处理后,进行图像分割和特征提取,从而进行分类判决[6]。
2.2 MATLAB概述
MATLAB语言是一款很好用的计算机软件,由Math Work公司开发,是一种应用于数学计算及计算结果可视化处理的软件。它把数值计算、矩阵计算、函数图形形成与处理、控制系统仿真等诸多强大的功能集成在一个便于用户使用的交互式环境之中,为公式推导、科研设计提供了易学、易用、高效的工具。经过逐步发展和完善,现在已经被国际公认了它是优秀的数学应用软件之一,MATLAB既是一种直观、高效的计算机语言,同时又是一个科学计算平台。而且MATLAB 语法结构简单, 并且有极强的数值计算、图形文处理、数据分析、图形绘制及图像处理等功能,。MATLAB软件含有丰富的函数库,对于JPG格式的图像,MATLAB软件都可以用一个函数来显示,为研究提供了很大的方便[7]。
第三章 图像分割
图像分割是图像中一类重要研究内容,其基本操作是把图像分割成一些有意义的、互不重叠的区域,分割结果的优劣直接影响到对图像后续处理的方法和质量。
广义上讲,图像分割是把图像分成互不重叠重叠而又各具特性的子区域。设集合I代表图像的整个区域,子集 就是决定图像分割的问题,把所有的子集并集后就是全部图像。 是组成一幅图像分割的子集,它需要满足下面几个条件:
(1) ;
(2) ,对 ;
(3)在某种标准下,每个子集 的内部像素相似,而不同子集间的像素差异明显;
(4)每一个 必须是连续贯通的。
狭义上讲,图像分割是为了得到感兴趣区域和它的边界,而不是组成整幅图像的所有区域。我们在观察任何一幅图像的时候,先找出感兴趣区域再找出图像中所有区域是不可行的,是违反常理的;一般来说,我们都是先大概确定自己感兴趣的区域,然后找出该区域的边界,这才符合人类的标准[8]。
一般来说,图像分割法经常利用所选图像的背景与目标区域之间的差异以及目标区域内部的相似性来实现。因此,找出一定的特征是分割的关键,在找出的这个特征条件下,目标区域内部是相似的,或者在这个特征下,背景和目标有相当大的不同。依据所选的这个特征,图像分割方法可以分为以下三大类:基于相关匹配的方法、基于区域特征的方法以及基于边界特征的方法。其中基于区域特征的方法所靠的是颜色、纹理、灰度等一些局部的图像特征,在这些特征下背景和目标区域的内部则有一定程度的相似,本设计则就是采用的此类方法,以下将介绍这类方法包括的具体方法。
3.1 阈值分割原理
阈值法是图像分割方法的一种,是一种传统的方法,由于图像中背景与要提取的目标在灰度上有一定的差异,因此,该方法则是将图像看作是不同灰度级的两类区域的组合,我们需要选择并确定一个合适的阈值,来确定每一个像素点应该是在背景区域还是在目标区域[9]。
假设原始图像f(x,y),根据一定的相似性准则在图像f(x,y)中确定一个合适的灰度值,让其作为阈值t,按上述方法分割后的图像g(x,y)可以由下面的式子表示
(3-1)
或者
(3-2)
也能为阈值设定一个灰度变化范围[ , ],只要在这个灰度变化范围内的像素都设置成1,不在这个范围内的像素都设置成0,即
(3-3)
有时也有这种情况,首先设置阈值t,只要是在灰度高于t的像素都保持在原来的灰度,而其他像素灰度都成为0,通常叫这种方法为半阈值法,经分割后的E图像可表示为
(3-4)
阈值分割图像的原理,可用下式作一般表达式
(3-5)
其中Z为阈值,是图像f(x,y)灰度值范围内的任何一个灰度级集合,Z 和Z 为任意选定的背景和目标灰度级。
由此可见,要从复杂背景中识别出目标并且将它的形状完美的抽取出来,阈值分割技术的关键是确定阈值。如果阈值确定的阈值太小,许多目标点将被误认为是目标;相反,如果阈值确定的阈值太大,那么许多目标点将会被误认为是背景[10]。
图像阈值化这个看似简单的问题,在过去的40年里受到国内外学者的广泛关注,产生了数以百计的阈值选取方法,但是遗憾的是,如同其他图像分割算法一样,没有一个现有方法对各种各样的图像都能得到令人满意的结果,甚至也没有一个理论指导我们选择特定方法处理特定图像。
3.1.1直方图阈值分割
(1)直方图的分割
图像灰度范围为0,1,…, -1,假设灰度i像素为n ,那么一副图像的总的像素N为
(3-6)
灰度级i出现的概率定义为
(3-7)
在1960年,Prewitt提出的直方图双峰的方法,即如果灰度级直方图是明显的双峰形态,阈值则在灰度级与相应的阈值的底部的两个峰之间进行选择。
理论上,底部的直方图是理想的分割阈值,然而在实践中,图像受噪声等的影响使直方图上两个峰之间的底部被填充,或者两峰相距非常近,这时要检测谷底就非常难了。因此有人提出阈值选取可以用变化直方图来进行,在前面所描述的直方图阈值分割方法中由于原来的直方图是离散的,而且含噪声,没有考虑利用像素邻域性质。而变化直方图,就是将原来的直方图变换其局部性质变成新的直方图。原始直方图与新的直方图相比较,可能两峰之间有更深的谷底,可能峰和谷互相转变,这就更容易检测。最简单的变化直方图就是根据梯度值加权,梯度值小的像素权加大,梯度值大的像素权减小。这样,就可以使用直方图的双峰更加突起,谷底更加凹陷[11]。
(2)最佳阈值
最佳阈值法是图像中目标对象和背景的分割误差最小的阈值选取方法。这种方法是从模式识别的贝叶斯最小误差分类方法得出。
假设一幅图像只由目标对象和背景组成,P (Z)和P (Z)分别称为灰度级分布概率密度,并且已知目标对象的像素占整体图像像素数的比为θ,所以整体图像总的灰度级概率密度分布P(Z)可使用下面的式子来表示
P(Z)= θP (Z)+(1-θ)P (Z) (3-8)
假定选用Z 作为灰度级阈值,认为这里图像是暗物体在亮背景下组成,所以每一个像素的灰度值只要小于Z 则认为是目标物体,反之,则被认为是背景[12]。
3.1.2 类间方差阈值分割
在判决分析最小二乘法原理的基础上,推导得出Otsu与20世纪70年代提出的最大类间方差法,是的,该算法以其计算简单、稳定有效,一直广为使用。
设原来的灰度图像的灰度值为L,灰度级i的像素点数为n ,那么整体图像的像素数为
N=n +n +…+n (3-9)
直方图归一化,则
(3-10)
用阈值t可以划分为两类: =(0,1,2,…,t), =(t+1,t+2,…,L-1)
3.1.3 最大熵阈值分割
1980年以来,许多学者将香农信息熵的概念应用到图像的阈值,其基本思想是基于图像的灰度分布密度函数定义的图像的信息熵,根据不同的观点提出了熵的假设标准,最后通过优化得到阈值[13]。
(1)一维最大熵阈值分割
信息论科目中,将熵定义为
(3-11)
其中p(x)是随机变量x的概率密度函数。对于数字图像,该随机变量x可以是灰度值、梯度、区域灰度等。所谓灰度的一维熵要最大,就是选取一个阈值,使图像用这个阈值分割出的两部分的一阶灰度统计的信息量达到最大。
(2) 二维最大熵阈值分割
由图像原来的直方图得到的灰度一维最大熵,只用了点灰度信息而没有将图像的空间信息充分利用,分割效果会随着信噪比的降低而导致分割效果不理想。在图像的特征中,最基本的特征是点灰度,它敏感噪声,区域灰度特征与点灰度相比,对噪声不那么敏感。要想图像的信息被较好地表征,那么就要综合利用点灰度特征,因此可采用利用区域灰度均值和图像点灰度的二维的最大熵阈值法[14],具体实施方法如下:
首先用原来的灰度图(L个灰度级)中各像素和4邻域的4个像素作为一个区域,那么区域灰度均值图像被算出,原来的图像里的每一个像素都与一个区域灰度数据对相对应,这些数据对取值有L×L种可能。假设i为图像中点灰度,j为区域灰度均值,n 为像素点数,点灰度-区域灰度均值对(i,j)发生的概率为p ,则有
(3-12)
其中N×N为图像大小。则该图关于点灰度-区域灰度均值的二维直方图为{ p ,i,j=1,2,…,L}。
3.1.4 模糊阈值分割
近年来,一些学者将模糊数字的方法引入到图像处理中,在一些场合取得了比传统方法更好的效果。
描述人类视觉的随机性和模糊性较好的是模糊集理论,因此在图像阈值化领域倍受关注。其基本思想是,选取一种S状的隶属度函数(其中阈值是一个未知的参数)定义模糊集,然后定义某种准则函数在这个模糊集上,确定最佳阈值需要通过优化准则函数。换句话说,首先将一幅图像看成是一个模糊阵列,然后确定阈值,通过计算图像的模糊熵或模糊率。
3.2 基于区域的分割
3.2.1 区域增长
区域增长有时也称区域生长。该算法的基本思想是将具有相似性质的像素集合起来构成区域。具体先对每个需要分割的区域找1个种子像素作为生长的起点,然后将种子像素周围邻域中与种子像素有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判定)合并到种子像素所在的区域中。将这些新像素当做新的种子像素继续进行上面的过程,直到所有满足条件的像素都被包括进来,这样区域生长就完成了[15]。
图1是区域增长法的一个事例,图1(a)给出种子生长点,假设图像中有两个种子像素(通过不同颜色标记),需要对其进行生长。生长准则是如果所考虑的像素灰度值与像素种子之差的绝对值不大于某个阈值T,那么种子像素所在的区域就包括该像素。图1(b)给出的区域增长结果是T=3时的,整幅图像能被较好的分割成2个区域;图1(c)给出的区域增长结果是T=1时的,其中无法判定某些像素,图1(d)给出的区域增长的结果是T=8时,整幅图像都被分在1个区域中。从这些例子中可以发现,阈值的选取是很重要的。
(a) (b)
(c) (d)
图1 区域增长示例
从上的实例可以看出,在实际应用中区域增长法需要解决三个基本问题:
(1)选择或确定1个组能正确代表所需区域的种子像素;
(2)包括进来的相邻像素准则在生长过程中必须被确定;
(3)让区域增长终止的规则或条件必须被制定。
通常我们可以借助具体的问题的特点来选取种子像素,例如在检测红外图像时,因为在正常情况下目标的辐射很大,因此对种子点的选取可以选用图中最亮的像素。如果不知道具体问题,那么经常可以通过区域生长准则计算每个像素。如果计算结果聚类,则可将种子像素设置在接近聚类重心的位置。
具体问题本身不是绝对的决定生长准则的选取,也与所用图像数据的种类密切相关。例如只用单色的准则来生长彩色的图像,那么就会影响到效果。除此之外,还需要考虑到像素之间的邻近性和连通性,否则分割结果则会无意义。区域增长的一个关键是选择适合的生长或相似准则,使用图像的局部性质是大部分区域增长的准则。可以根据不同的原则制定生长准则,区域生长的过程将依赖于不同的生长准则[16]。下面主要介绍三种常用的生长准则方法。
1、区域灰度差
区域增长方法操作图像是以像素为基本单位,主要步骤如下:
(1) 对所研究的图像进行逐行检查,找出还没有找到位置的像素;
(2) 以这个像素为中心,将邻域中的像素挨个和它作对比,如果预先确定的阈值大于灰度差,则将它们合并在一起;
(3) 以合并的像素为中心点,返回到上述步骤,直到区域不能扩张;
(4) 返回到步骤(1),继续检查直到所有像素都有归属,即整个生长过程结束。
采用上面的方法得到的结果,很大程度的依赖于起始点的选择,为了解决这个问题,可以采用改进的方法:
(1) 将灰度差的阈值设为0,用上述方法扩张区域,合并灰度相同的像素;
(2) 合并具有最小灰度的邻域区域并求出所有邻域区域之间的平均灰度差;
(3) 确定终止准则,重复复进行上述中的操作不停的依次合并区域,直到满足终止准则为止。
上面的方法是针对单连续区域增长。这种方法简单,但由于仅考虑了从一个像素到另一像素的特征是否相相似,因此对于有噪声的或复杂的图像,使用这种方法会引起不希望的区域出现。另外,如果区域间边缘的灰度变化有平缓,或者对比度弱的两个相交区域,采用这种方法,区域将会合并起来,从而产生错误。
为了克服这个问题,可不用新像素的灰度值去和邻域像素的灰度值比较,从而新像素所在区域的平均灰度值去和各邻域像素的灰度值进行比较。
对于一个含N个像素的图像区域R,其均值为
(3-13)
对像素的比较测试可表示为
(3-14)
其中T为给定阈值。有以下两种情况:
(1)设区域R为均匀的,各像素灰度值为均值m与一个零均值高斯噪声的叠加,当用上式测试某个像素时,条件不成立的概率为
(3-15)
这就是误差函数,当T取3倍方差时,对某一像素的误判概率为0.3%,正确判定概率为99.7%。如果该区域共有N个像素,则总体的正确判定概率为(99.7%) ,误判概率为1-(99.7%) ,这表明,当考虑灰度均值时,区域内的灰度变化应尽量小。
(2)设区域为非均匀的,且由两部分像素构成。这两部分像素在R中所占的比例分别为q 和q ,灰度值分别为m 和m ,则区域均值为q m + q m 。对灰度值为m 的像素,它与区域均值的差为
S = m -(q m + q m ) (3-16)
根据式可知,正确判决的概率为
P(T)= [P(|T- S |)+P(|T+ S =|)] (3-17)
这表明,当考虑灰度均值时,不同部分像素间的灰度差应尽量大。
如图2(a)中只有一个像素点灰度值为9 ,因此此点为起点开始区域增长,该点称为种子点和种子点集。第一次区域增长得到3个灰度值为8的邻点,灰度级差值为1,如图2(b)所示。此时这4个已接受点的平均灰度为(8+8+8+9)/4=8.25。由于阈值T取2,第二次区域增长灰度值为7的邻点被接受,如图2(c)所示,此时这5个已接受点的平均灰度级为(8+8+8+9+7)/5=8。在该区域的周围以无灰度值大于6的邻点,即均匀测度为假,停止区域增长。图2(d)和图2(c)是以灰度值7为起点的区域增长结果。
(a) (b) (c)
(d) (e)
图2 区域增长示例
2.区域内灰度统计特性
正如前面所说,如果把式的均匀性准则用在将一个区域当作为非均匀区域方面可能会导致错误,如常常会出现有大量的小区域似乎的图像中并没有任何真实的对应物。利用区域的相似统计特性来寻找具有均匀性的区域可避免出现这种问题,这种方法是通过将一个区域上的统计特征与该区域的各部分上所计算出的统计特性进行比较来判定区域的均匀性。如果它们相互很接近,则这个区域可能是均匀的。这种方法对于纹理分割而言很有用[17]。具体有以下几种步骤:
(1) 把图像分为互相分离的小区域;
(2) 将相邻区域的累积灰度直方图进行比较,按照灰度分布的相似性合并区域;
(3) 确定合并区域终止的准则,然后不停的重复(2)步骤的操作,直到满足终止准则为止。
常有两种方法对灰度分布的相似性进行检测(设h (z)、h (z)分别为相邻区域的累计灰度直方图):
Kolmogorov-Smirnov检测(K-S检测)
(3-18)
Smoothed-Difference检测(S-D检测)
(3-19)
如果检测结果小于某个给定的阈值,则将两区域合并。因为小区域的尺寸大小可能对结果产生较大的影响,如果尺寸太小,那么就降低了检测的可靠性,如果尺寸太大,那得到的区域形状就不是理想结果,小的目标也有可能漏掉。
因为比较全面的考虑了所有灰度值,所以K-S检测和S-D检测方法很适用于在检测直方图相似性方面。
3.区域形状
在合并区域时,也可以利用对目标形状的检测结果,惯用的方式有以下两种。
(1)把图像按照固定灰度分割成区域,设P 和P 为两个相邻区域的周长,L为两区域共同的边界线两侧灰度差小于给定阈值的那部分长度,如果(T 为阈值)
(3-20)
则将两区域合并。
(2)把图像按照固定灰度分割成区域,设B为两相邻区域的公同边界长度,L为两区域共同边界线两侧灰度差小于给定阈值的那部分长度,如果(T 为阈值)
(3-21)
则将两区域合并。
上面两种方法的区别在于:第一种方法是合并两个相邻区域的共同边界中对比度较低部分占整个区域边界份额较大的区域,而第二种方法是合并两相邻区域的共同边界中对比度较低部分比较多的区域。
3.3 邻域平均法
邻域平均法就是对原始图像的每个像素点(x,y)取一个邻域R,计算中所有像素和该点的灰度平均值,把它赋给输出图像中的对应点,即
(3-22)
式中,R为预先确定的邻域(不包括(x,y));m为邻域R中像素的点数;g(x,y)为输出图像;f(x,y)为原始图像[18]。
邻域平均法通常借助模板的卷积运算来实现。图像和模板都可以认为是矩阵,它们在卷积时,首先要进行扩展和模板翻转,然后再相乘求和。这样的处理很复杂,而且当图像和模板增大了之后,运算量会增加很多。但是常用的模板其上下左右都是对称的,它们翻转后和原模板相同。这是,一个模板与图像卷积运算可以按以下步骤进行:
(1)将模板在图像中从左到右、从上到下漫游,而模板中各个位置点会与图像中的某个像素点重合;
(2)将模板每个位置上的系数与它所重合的像素灰度值相乘;
(3)将所有乘积求和;
(4)把求和的结果赋给图像中与模板中心重合的像素。
值得注意的是,当处理图像四周的像素点时,模板中心在图像边缘,就会有一部分模板处于图像之外,正规的处理是,卷积前对图像进行扩展,其四周补上一定宽度的零像素,那么原图像之外的这部分模板计算结果为零。但在工程上,也有其他的处理方法,比如,这些点不进行卷积保留原来的像素值,或者重复其最近像素的卷积结果等。
3.4 中值滤波法
中值滤波在实际运算过程中不需要知道图像的统计特性,并且滤波特性独特,是一种非线性处理技术,它被广泛使用在数字信号处理中。邻域均值滤波在滤除噪声的同时模糊了图像,而中值滤波与它相比,在一定的条件下,可以避免线性滤波器所带来的使图像细节模糊,并且可以有效地滤除脉冲的干扰和去除图像扫描时的噪声,能够既去除噪声又保持图像边缘。但是对于线、尖顶、点等细节较多图像则不宜采用中值滤波。
设有一个一维序列f0,f1,…,fn-1,窗口长度为2m+1(2m+1为奇数),在某个位置上,窗口内的2m+1个像素为fi-m,fi-m+1,…,fi,fi+1,…,fi+m,则
fi=Med{fi-m,fi-m+1,…,fi+m}
例如,若窗口长度为5,窗口中像素的灰度值分别为{10,20,80,5,43,按从小到大的顺序排列,结果为5,10,20,43,80,其中间位置上的值为20。于是原来窗口中心点的灰度值80就由窗口中值20代替。如果80是一个噪声的尖峰,则将被滤除。然而,如果它是一个信号,那么此方法处理的结果将会造成信号的损失。中值滤波器的主要功能就是让与周围像素灰度值相差比较大的像素改取与周围像素的接近值,从而可以消除顾里的噪声点。由于它不是简单的取平均,所以产生的模糊比较少。
第四章 图像分析与描述
4.1 图像目标的特征提取
图像特征是用于区分一个图像内部最基本属性或特征的,它们可以是原景物中人类视觉可以鉴别的自然特征,如颜色,也可以是通过对图像进行测量和处理从而人为定义的某些特性和参数,如直方图统计特征等,它们称为人工特征。
4.1.1 幅度特征
作为图像特征,一般应具有以下几个特点:(1)可区分性;(2)可靠性;(3)独立性;(4)数量要少。
图像像素灰度值、三色值、频谱值等表示的幅度特征是最基本的图像特征。也可以取特定邻域(如含有(2W+1)×(2W+1)个像素)中的平均灰度幅度
(4-1)
作为一种相对于所取邻域的振幅特征。
4.1.2 统计特征
1.直方图特征
图像振幅的一维概率密度可定义为
(4-2)
表示灰度整量电平。相应的一阶直方图为
b=0,1,…,L-1 (4-3)
其中:M表示以(i,j)为中心的测量窗内像素的总数,N(b)表示窗内灰度值为b的像素数。对于一幅平稳图像而言,测量窗可取为整幅图像。
类似的,二维直方图是基于像素的二维联合分布密度定义得到的。设(i,j),(k,l)两任意像素点上的灰度值分别为f(i,j),f(k,l),则图像灰度的联合分布密度可表示为
(4-4)
相应的二维直方图表示为
(4-5)
其中M为测量窗口中像素总数,N(a,b)表示两事件f(i,j)=a,f(k,l)=b同时发生的概率[19]。
2.统计示性数特征
(1)均值
(4-6)
(2)方差
(4-7)
(3)偏度
(4-8)
(4) 峰度
(4-9)
(5) 能量
(4-10)
(6) 熵
(4-11)
当图像中像素间有较强的相关性时。P(a,b)矩阵将沿对角线密集排列。可以用二维分布示性数来描述二维图像数组的统计特性。
(1) 自相关
(4-12)
(2) 协方差
(4-13)
(3) 惯性矩
(4-14)
(4) 绝对值
(4-15)
(5) 反差分
(4-16)
(6) 能量
(4-17)
(7) 熵
(4-18)
4.2 基于区域的特征提取
基于区域的特征提取在提取过程中不仅考虑到图像的边界像素,而是基于组成目标的所有像素进行特征提取,其主要是基于区域的简单特征,如区域面积、区域质心、区域方向等。
4.2.1 区域面积
区域面积是区域的一个基本特征,它描述区域的大小,是目标区域尺度的度量,其只与包含在区域中的像素有关,而与区域内部灰度变化无关。最简单的区域面积计算方法是统计区域边界与区域内包含像素点的数目,如果图像为二值图像,像素值为1代表目标区域的点,像素值为0表示背景,则区域面积可以表示为
(4-19)
其中,R表示区域像素的集合,如果图像为灰度图像,则区域面积可以表示为
(4-20)
利用统计像素数计算面积,不仅简单,而且可以证明是对该目标区域面积的无偏、一致估计。如果已知该区域边界的链码,可以根据其边界链码估计区域面积,如果该链码起始坐标为 ,则链码的第k个点y坐标为
(4-21)
对于八连通链码, 定义为
(4-22)
式中, 为第i个链码值,则相应的边界所包含的面积为
(4-23)
其中, 与 分别定义为
(4-24)
(4-25)
4.2.2 区域质心
定义目标面积中心就是该目标物在图像中的位置,面积中心就是质量恒定的相同形状图形的质心。
区域重心是一种全局描述符,区域重心的坐标是根据所有属于区域的点计算出来的。对MN的数字图像f(x.y),其重心的定义为
(4-26)
尽管区域各点的坐标是整数,但区域重心的坐标常不为整数。在区域本身的尺寸与各区域的距离相对很小时,可将区域用位于其重心坐标的质点来近似表示。
如果已知目标的边界点集,可以根据格林定理,有
(4-27)
线积分沿该闭合曲线进行,对应的离散化表示为
(4-28)
K为边界点总数。
目标位置特征主要有两种方法,第一种方法是以图像的面积中心点来表示图像位置,对于N M大小的目标区域,其计算公式为
(4-29)
上述方法较为简单,对于二值图像,计算结果即为目标的质心,但是对于灰度图像,该方法并没有考虑目标区域的灰度变化。如果考虑目标区域的灰度变化,可以基于几何矩来计算目标区域的质心,对于二元有界函数,几何矩定义如下
(j,k=0,1,2,…) (4-30)
基于矩,目标质心坐标计算公式为
(4-31)
4.2.3 区域方向
目标的方向特征是描述目标区域在图像中的方向,通常将最小惯量轴定义为该区域的方向,其等效于求一条直线,使下式计算的E值最小,有
(4-32)
其中,r表示点(x,y)到该直线的垂直距离。在实际应用中,可以通过几何矩来计算目标方向,即上述直线与x轴的夹角 ,由式(4-30)和式(4-31)定义图像的中心距为
(4-33)
区域方向可由下式计算,有
(4-34)
4.2.4 区域周长
区域的周长及边界长度,可以用以下三种方式计算:
(1)区域和背景交界线的长度;
(2)区域边界8链码的长度;
(3)边界点数之和。
设区域的周长是L,那么极坐标下的周长计算公式为
(4-35)
采用邻域法,确定边界点数,再将这些点数加起来便可以计算出周长,此方法用MATLAB实现较为简单[20]。
第五章 运用MATLAB实现图像中区域特征检测
5.1 灰度处理
灰度处理是指不含彩色信息,只含亮度信息的图像,乍眼一看,灰度图就是黑白的,但是,点与点之间黑的程度是不一样的。
5.1.1 程序分析
a=imread('cell.jpg'); %读入图像
subplot(2,2,1); %设置原始图像显示位置
imshow(a); %显示原始图像
title('原始图像'); %命名为原始图像
f=rgb2gray(a); %将原始图像转换成灰度图像
B=medfilt2(f); %将图像进行中值滤波
subplot(2,2,2); %设置灰度图像显示位置
imshow(B); %显示灰度图
title('灰度图像'); %将图像命名为灰度图像
5.1.2结果分析
图5-1 灰度处理图
原图像为400 348像素,经程序灰度化处理和中值滤波后,整幅图像很易于后续的研究处理,由MATLAB图像窗口看出图像的灰度处理结果达到预期要求。
5.2 用区域生长法分割图像
区域生长主要考虑像素及其空间邻域像素之间的关系,开始时确定一个像素点作为种子,然后按照某种相似性准则增长区域,逐步生成具有某种均匀性的空间区域将相邻(4邻域或8邻域)的具有相似性质的像素或区域归并从而逐步增长区域,直到没有可以归并的点或其他小区域为止。
5.2.1 程序分析
seedx=[256,128,300]; %选取种子点的x坐标
seedy=[128,256,284]; %选取种子点的y坐标
hold on
plot(seedx,seedy,'gs','linewidth',1); %设置完hold on命令,则MATLAB把新的plot命令产生的图形画在原来的图形上
title('灰度图像及种子位置'); %命名为灰度图像及种子位置
B=double(B); %将图像矩阵转化为double类型
markerim=B==B(seedy(1),seedx(1)); %将f设为标记图像
for i=2:length(seedx)
markerim=markerim|(B==B(seedy(i),seedx(i)));
end
thresh=[15,10,15]; %三个种子点区域的阈值
maskim=zeros(size(B)); %做一个全零与原图像等大的图像为模板图像
for i=1:length(seedx)
g=abs(B-B(seedy(i),seedx(i)))<=thresh(i);
maskim=maskim|g;
end
[g,nr]=bwlabel(imreconstruct(markerim,maskim),8); %标注连通区
g=mat2gray(g); %将图像矩阵归一化,归一化后矩阵中每个元素的值都在0到1的范围内(包括0和1),0表示黑色,1表示白色
subplot(2,2,3); %设置图像位置
imshow(g);
title('三个种子点区域生长结果'); %将图像命名为三个种子点生长结果
5.2.2 结果分析
5.2.2.1 种子点的选择
图5-2 种子选择点图
通过MATLAB软件实现的在灰度图上选取种子点,然后按照相似性准则生长区域,达到设计预期效果,图中小方框处即为种子生长点。
5.2.2.2 三个种子点区域生长结果
图5-3 三个种子点区域生长结果
在MATLAB图像窗口中可看出,用区域生长法分割的结果清晰、正确,充分说明了MATLAB的正确性,在软件里通过各种正确的程序代码,达到了设计预期效果。
第六章 总结
本次设计使我对数字图像处理技术的原理及MATLAB编程技术有了更进一步的了解。同时,深入懂得了图像中区域特征的检测与提取技术研究的具体流程和实施方法。让我不仅仅是在学习知识上,还有对科学实验的严谨态度上都有了很大提升。
本次研究以MATLAB软件作为设计工具,以阈值分割法和区域生长法两种常用数字图像分割算法为基础,实现了图像的分割、区域的特征检测等一系列研究。通过研究可以发现,区域生长法是最合适、最简单的分割方法,该方法在没有先验知识可以利用时,对含有复杂场景或自然场景等先验知识不足的图像进行分割,也可以取得较好的性能,在许多情况下可以得到令人满意的结果。
通过研究可以知道,图像特征提取是图像处理中一个重要的部分,它广泛应用于数字视频处理、模式识别、目标识别与跟踪,迄今为止,特征尚没有万能和精确的定义,特征的精确定义往往由问题或者应用类型决定,特征是一个数字图像中“有趣”的部分,它是许多计算机图像分析算法的起点,因此一个算法是否成功,往往由它使用和定义的特征决定,因此特征提取最重要的一个特性是“可重复性”:同一场景的不同图像所提取的特征应该是相同的。特征提取是图像处理中的一个初级运算,也就是说,它是对图像进行的第一个运算处理,。由于许多计算机图像算法使用特征提取作为初级计算步骤,因此有大量特征提取算法被发展,所提取的特征多种多样,这就需要我们进一步探索。
参考源码
图像灰度处理程序:
a=imread('cell.jpg');
subplot(2,2,1);
imshow(a);
title('原始图像');
f=rgb2gray(a);
B=medfilt2(f);
subplot(2,2,2);
imshow(B);
title('灰度图像');
种子点选择程序:
seedx=[256,128,300];
seedy=[128,256,284];
hold on
plot(seedx,seedy,'gs','linewidth',1);
title('灰度图像及种子位置');
区域生长程序:
B=double(B);
markerim=B==B(seedy(1),seedx(1));
for i=2:length(seedx)
markerim=markerim|(B==B(seedy(i),seedx(i)));
end
thresh=[15,10,15];
maskim=zeros(size(B));
for i=1:length(seedx)
end
[g,nr]=bwlabel(imreconstruct(markerim,maskim),8);
g=mat2gray(g);
subplot(2,2,3);
imshow(g);
title('三个种子点区域生长结果');
特征提取程序:
th=graythresh(g);
J=im2bw(g,th);
imshow(J);
title('二值化图像');
[m,n]=size(A1);
for i=1:m*n
if (A1(i)==1)
L=L+1;
end
end
L
[m,n]=size(J);
S=0;
for i=1:m*n
if (A1(i)==1)
S=S+1;
end
end
S
x=0;
y=0;
for i=1:m
for j=1:n
if(g(i,j)==1)
x=i+x;
end
end
end
X=x/S
Y=y/S
[1] 杨杰.数字图像处理及MATLAB实现[M].北京:电子工业出版社,2010.
[2] 曹茂永.数字图像处理[M].北京:北京大学出版社,2007.
[3] 麦特尔.现代数字图像处理[M].北京:电子工业出版社,2006.
[4] 阿査里雅.数字图像处理原理与应用[M].北京:清华大学出版社,2007.
[5] 刘直芳,王运琼,朱敏.数字图像处理与分析[M].北京;清华大学出版社,2006.
[6] 曹健.图像目标的表示与识别[M].北京:机械工业出版社,2012.
[7] 王晅,马建峰.数字图像分析与模式识别[M].北京:科学出版社,2011.
[8] 郭宝龙,孙伟.数字图像处理系统工程导论[M].西安:西安电子科技大学出版社,2012.
[9] 何明一,卫保国.数字图像处理[M].北京:科学出版社,2008
[10] 普特拉.数字图像处理(原书第4版)[M].北京:机械工业出版社,2009.
[11] 杨帆,等.数字图像处理与分析(第2版)[M].北京:北京航空航天大学出版社,2010.
[12] 贺兴华,等.MATLAB7.X图像处理[M].北京:人民邮电出版社,2006.
[13] 阮秋琦.数字图像处理基础[M].北京:中国铁道出版社,1988.
[14] 姚敏.数字图像处理[M].北京:机械工业出版社,2006.
[15] 许录平.数字图像处理[M].北京:科学出版社,2007.
[16] 章毓晋.图像处理与分析[M].北京:清华大学出版社.1999.
[17] 李朝晖,张弘.数字图像处理及应用[M].北京:机械工业出版社,2004.
[18] 赵荣椿,等.数字图像处理导论[M].西安工业大学出版社,1995.
[19] 夏良正.数字图像处理[M].南京:东南大学出版社,1999.
[20] 许录平.数字图像处理学习指导[M].北京:科学出版社,2007.