机器视觉与机器学习:算法原理、框架应用与代码实现
上QQ阅读APP看书,第一时间看更新

2.2 图像分割

图像分割是数字图像处理中的一项关键技术,用于进一步对图像进行分析、识别、压缩编码等处理,是图像处理到图像分析的关键步骤。总体来说图像分割可分为基于边缘的分割、基于阈值的分割、基于聚类的分割、基于区域的分割、基于小波变换的分割和基于数学形态学的分割等。

1. 数字图像分割的基本概念

数字图像分割是指按照一定的原则将一幅图像分为若干个特定的、具有独特性质的、互不交叠的、具有相同性质的区域的部分或子集,并提取出所需目标的技术和过程。图像分割应具有以下特征。

1)分割出来的各区域对某种性质(如灰度、纹理)而言具有相似性,区域内部是连通的且没有过多小孔。

2)相邻区域在分割所依据的性质上有明显的差异。

3)区域边界是明确的。

大多数图像分割方法只是满足上述部分特征。如果强调区域的同性质约束则分割区域很容易产生大量小孔和不规则边缘;若强调不同区域间性质差异的显著性,则易造成不同区域的合并。具体处理时,不同的图像分割方法总是在各种约束条件之间寻找一种合理的平衡。

2. 数字图像分割的主要方法

(1)阈值分割法

阈值分割法作为一种常见的同时也是最简单的图像分割方法,通过设置阀值,把像素点按灰度级分成若干类,从而实现图像分割。由于是直接利用图像的灰度特性,所以计算方便简明、实用性强。显然,阈值分割法的关键和难点是如何取得一个合适的阈值,而实际应用中阈值设定易受噪声和光亮度影响。

近年来关于阈值分割法的算法主要有:最大相关性原则选择阈值法、基于图像拓扑稳定状态法、灰度共生矩阵法、熵法、峰值和谷值分析法等。自适应阈值法、最大熵法、模糊阈值法、类间阈值法是对传统阈值法改进较成功的几种算法。更多情况下,阈值的选择会综合运用两种或两种以上的方法,这也是图像分割的一个发展趋势。例如,将图像的灰度直方图看作高斯分布的选择法与自适应定向正交投影高斯分解法的结合,能够较好地拟合多峰直方图,从而得到更为准确的分割效果。

如果将直方图的包络看作一条曲线,则可利用寻找曲线极小值点的方法来选取直方图的谷。假设用hz)代表直方图,那么极小值点应满足hz/z=0和hz/z>0,这些极小值点对应的灰度值可用作分割阈值,这就是极小值点阈值法。

基于MATLAB的极小值点阈值分割实现代码如下。

运行结果如图2-13所示。

图2-13 极小值点阈值分割结果

a)原始图像 b)直方图 c)阈值分割结果

阈值法的缺陷主要在于它仅仅考虑了图像的灰度信息,而忽略了图像的空间信息。对于非此即彼的简单图像处理(如一些二值图像的处理)是有效的,但是对于图像中不存在明显的灰度差异或各物体的灰度值范围有较大重叠的图像分割问题则难以得到准确的分割效果。

(2)基于边缘的分割

边缘总是以强度突变的形式出现,可以定义为图像局部特性的不连续性,如灰度的突变、纹理结构的突变等。边缘常常意味着一个区域的终结和另一个区域的开始。图像的边缘包含了物体形状的重要信息,边缘分析不仅有利于在分析图像时大幅度减少要处理的信息量,还有利于保护目标的边界结构。对于边缘的检测常常借助空间微分算子进行,通过将其模板与图像进行卷积来完成。两个具有不同灰度值的相邻区域之间总存在灰度边缘,而这正是灰度值不连续的结果,这种不连续可以通过求一阶和二阶导数检测到。当今的局部技术边缘检测方法中,主要有一次微分(Sobel算子、Roberts算子)、二次微分(Laplacian算子等)和模板操作(Prewitt算子、Kirsch算子和Robinson算子)等。这些边缘检测器对边缘灰度值过渡比较尖锐且噪声较小等不太复杂的图像可以取得较好的效果,但对于边缘复杂(如边缘模糊、边缘丢失、边缘不连续等)的图像效果不太理想。此外,噪声的存在使基于导数的边缘检测方法效果明显减弱,在噪声较大的情况下所用的边缘检测算子通常都是先对图像进行适当的平滑、噪声抑制后求导数,或者对图像进行局部拟合后再用拟合光滑函数的导数来代替直接的数值导数,如Marr算子、Canny算子等。

(3)基于聚类的分割

对灰度图像和彩色图像中相似的灰度或色度进行合并的方法称为聚类,通过聚类将图像表示为不同区域即所谓的聚类分割方法。此方法的实质是将图像分割问题转化为模式识别中的聚类分析,如K均值、参数密度估计、非参数密度估计等方法都能用于图像分割。常用的聚类分割有颜色聚类分割、灰度聚类分割和像素空间聚类分割。

颜色聚类实际上是将相似的几种颜色合并为一色。描述颜色近似程度的指标是色差,在标准CIE均匀色空间中,色差是用两个颜色的距离来表示的。但是显示器采用的RGB空间是显示器的设备空间,与CIE系统的真实三原色不同。为简单起见,一般采用RGB空间中的距离来表示。

如果只把图像分成目标和背景两类,而且仅考虑像素的灰度,图像分割就是一个在一维空间中把数据分成两类的问题。通过在灰度空间中完成聚类,得到两个聚类中心(用灰度值表示),聚类中心连线的中点便是阈值。

对人类视觉系统的研究表明,人眼在识别物体时总是离不开物体所在的周围环境,所以图像中灰度的局部变化对于图像处理是相当重要的信息。如果在某些特定的尺度上观察图像,比如把图像信号通过一个带通滤波器,结果将使图像的局部信息更好地表达。通过一个多尺度分解,轮廓信息可以在大尺度图像上保留下来,细节或者突变信息可以在中小尺度上体现,基于多尺度图像特征聚类的分割方法渐渐得到了人们的关注。

(4)基于区域的分割

数字图像分割算法一般是基于灰度值的两个基本特性之一:不连续性和相似性。第一种性质的应用途径是基于图像灰度的不连续变化分割图像,比如图像的边缘;第二种性质的主要应用途径是依据指定准则将图像分割为相似的区域。

1)区域生长算法。

区域生长算法就是基于图像的第二种性质,即图像灰度值的相似性。区域增长有两种方式:一种是先将图像分割成很多一致性较强的小区域,再按一定的规则将小区域融合成大区域,从而达到分割图像的目的;另一种是事先给定图像中分割目标的一个种子区域,再在种子区域基础上将周围的像素点以一定的规则加入其中,最终达到分离目标与背景的目的。

R为整幅图像区域,那么分割可以看成将区域R划分为n个子区域R1R2,…,Rn的过程,并需要满足以下条件。

Ri是一个连通区域,i=1,2,3,…,n

RiRj=空集,ij

PRi)=TURE,i=1,2,3,…,n

PRiRj)=FALSE,ij

区域生长算法的设计主要是确定生长种子点、区域生长的条件以及区域生长停止的条件。种子点的个数可以选择一个或者多个,可以采用完全自动确定或者人机交互确定,这些根据具体问题来确定。区域生长的条件实际上就是根据像素灰度间的连续性而定义的一些相似性准则,而区域生长停止的条件定义了一个终止规则。基本上,在没有像素满足加入某个区域的条件时,区域生长就会停止。

在算法里面定义变量最大像素灰度值距离reg_maxdist。当待加入像素的灰度值和已经分割好的区域所有像素点的平均灰度值之差值小于或等于reg_maxdist时,该像素点就加入已经分割的区域。相反,则区域生长算法停止。

如图2-14所示,在种子点1的4邻域连通像素(即2、3、4、5点)中,像素点5的灰度值与种子点的灰度值最接近,所以像素点5被加入分割区域中,并且像素点5会作为新的种子点执行后面的过程。在第二次循环过程中,由于待分析像素点(即2、3、4、6、7、8)中,像素点7的灰度值和已分割区域(由1和5组成)的灰度均值10.5最接近,所以像素点7被加入分割区域中。图2-14c示意了区域生长的方向。

从上面的分析中可以看出,在区域生长过程中,需要知道待分析像素点的编号(通过像素点的xy坐标值来表示),同时还要知道这些像素点的灰度值。

图2-14 区域生长

a)像素点标号 b)像素点灰度值 c)区域生长的方向

2)区域分裂合并算法。

区域分裂合并算法的基本思想是先确定一个分裂合并的准则,即确定区域特征一致性的判断标准,当图像中某个区域的特征不一致时就将该区域分裂成4个相等的子区域,当相邻的子区域满足一致性特征时将它们合成一个大区域,直至所有区域不再满足分裂合并的条件为止。当分裂到不能再分的情况时,分裂结束,然后查找相邻区域有没有相似的特征,如果有就将相似区域进行合并,最后达到分割的作用。在一定程度上区域生长算法和区域分裂合并算法有异曲同工之妙,互相促进、相辅相成,区域分裂到极致就是分割成单一像素点,然后按照一定的测量准则进行合并,所以有些类似于单一像素点的区域生长方法。

R为整幅图像区域,P为某种相似性准则。分裂方法是首先将R等分为4个区域,对任何分割区域,如果P的值是FALSE,就再次分为4个区域,重复该操作,直到对任何区域Ri都有PRi)=TURE。这种特殊的分割技术用四叉树表示最为方便,每个非叶子节点都有4个子树,如图2-15所示。注意,树的根对应整幅图像,每个节点对应划分的子区域。图2-15中,只有R4进行了再细分。

图2-15 图像分裂

a)图像区域分裂示意图 b)四叉树示意图

如果只使用分裂,则最后的分割区域可能会包含具有相同性质的相邻区域。所以需要通过在拆分的同时也允许进行区域合并来矫正。只有在PRjRk)=TURE时,两个相邻的区域RjRk才能合并。

前面的讨论可以总结为以下过程。

1)对于任何区域Ri,如果PRi)=FALSE,就将它再次拆分为4个相连的区域。

2)将PRjRk)=TURE的任意两个相邻区域RjRk进行合并。

3)当无法进行合并或分裂时操作停止。

前面讲述的基本思想可以进行几种变化。一种可能的变化是开始时将图像分为一组图像块,然后对每个块进行上述拆分,但合并操作开始时只能将4个块并为一组。这4个块是四叉树表示法中节点的后代且都满足某种相似性准则P。当不能再进行此类合并时,这个过程终止于满足步骤2)的最后区域合并。在这种情况下,合并的区域可能会大小不同。这种方法的主要优点是对于分裂和合并都使用同样的四叉树,直到合并的最后一步。

(5)基于小波变换的分割

小波变换是一种多尺度多通道分析工具,比较适合对图像进行多尺度的边缘检测。例如,可利用高斯函数的一阶或二阶导数作为小波函数,利用Mallat算法分解小波,然后基于马尔算子进行多尺度边缘检测。小波分解的级数可以控制观察距离的“调焦”,而改变高斯函数的标准差可选择所检测边缘的细节程度。小波变换的计算复杂度较低,抗噪声能力强。理论证明,以零点为对称点的对称二进小波适合检测屋顶状边缘,而以零点为反对称点的反对称二进小波适合检测阶跃状边缘。近年来,多进制小波也开始用于边缘检测。另外,利用正交小波基的小波变换也可提取多尺度边缘,并可通过对图像奇异度的计算和估计来区分一些边缘的类型,把小波变换和其他方法结合起来的图像分割技术也是现在的研究热点。除此之外,还有许多新的混合算法和模型,如基于视觉熵的图像分割、基于各种模型(动态轮廓模型、物理模型等)的分割算法等。

3. 分割的评测问题

现有的分割方法种类众多,且每种方法都有一些与其相关的参数。给定一个庞大的算法工具箱和一个新的问题,如何选取合适的算法及参数?或者,更简单地说,给定两种选择,哪种更好?所以需要采用客观的方法来评测性能,其中包括提供单个算法在不同数据集上的鲁棒性信息,以及对不同条件和模态下获得数据的处理能力的信息。

事实上,随着学科的成熟,机器视觉中的评测问题适用于几乎所有领域:最初研究人员只设计和发表算法,而现在人们期望他们同时提供算法性能提升的证据。分割评测引发了两个问题:①如何确定什么是“正确”的分割?如何比较分割结果和真实结果?②用什么来衡量?如何衡量?