在计算机视觉领域,图像分割(Segmentation)指的是将数字图像细分为多个图像子区域(像素的集合)(也被称作超像素)的过程。图像分割的目的是简化或改变图像的表示形式,使得图像更容易理解和分析。[1]图像分割通常用于定位图像中的物体和边界(线,曲线等)。更精确的,图像分割是对图像中的每个像素加标签的一个过程,这一过程使得具有相同标签的像素具有某种共同视觉特性。
图像分割的结果是图像上子区域的集合(这些子区域的全体覆盖了整个图像),或是从图像中提取的轮廓线的集合(例如边缘检测)。一个子区域中的每个像素在某种特性的度量下或是由计算得出的特性都是相似的,例如颜色、亮度、纹理。邻接区域在某种特性的度量下有很大的不同。[1]
图像分割在实际中的应用包括:
现已有许多各种用途的图像分割算法。对于图像分割问题没有统一的解决方法,这一技术通常要与相关领域的知识结合起来,这样才能更有效的解决该领域中的图像分割问题。
K-均值聚类法是一种将图像分割成K个聚类的迭代技术。基本算法如下:
这里,距离指像素与聚类中心之间绝对偏差或偏差的平方。偏差通常用像素颜色、亮度、纹理、位置,或它们的加权组合。K值可以手动选取、随机选取、或其它方式得到。此算法保证收敛,但它可能不会返回最佳的解决方案。该解决方案的质量取决于最初的一组集群和K值。
相对于其他的图像分割算法来说,基于直方图的方法是一种效率非常高的方法,因为通常来说,该方法只需要对整幅图片扫描一遍即可。该方法对于整幅图像建立一张直方图,并通过图中的峰和谷来进行分类。颜色与灰度是通常进行直方图统计的特征。
边缘检测主要是图像的灰度变化的度量、监测和定位,其实质就是提取图像中不连续部分的特征。边缘检测在图像处理中比较重要,边缘检测的结果是图像分割技术所依赖的重要特征,因此边缘检测是图像分割领域的一部分。边缘检测常用于计算机视觉、武器的跟踪控制及自控制式的车船运动研究等领域。
首先介绍图像边缘检测,具体就梯度算子、kirsch算子、laplacian-gauss算子、canny算子、log滤波算子、sobel算子、Robert算子、prewitt算子边缘检测方法介绍检测原理并通过编程实现,比较各种方法的处理结果。
区域生长的基本思想是将具有相似性质的像素集合起来构成区域。具体先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素周围邻域中与种子像素具有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判定)合并到种子像素所在的区域中。将这些新像素当做新的种子像素继续进行上面的过程,直到再没有满足条件的像素可被包括进来,这样,一个区域就长成了。
水平集方法最初由Osher和Sethian提出,目的是用于界面追踪。在90年代末期被广泛应用在各种图像领域。这一方法能够在隐式有效的应对曲线/曲面演化问题。基本思想是用一个符号函数表示演化中的轮廓(曲线或曲面),其中符号函数的零水平面对应于实际的轮廓。这样对应于轮廓运动方程,可以容易的导出隐式曲线/曲面的相似曲线流,当应用在零水平面上将会反映轮廓自身的演化。水平集方法具有许多优点:它是隐式的,参数自由的,提供了一种估计演化中的几何性质的直接方法,能够改变拓扑结构并且是本质的。
这里主要简单介绍几类经典的方法:
基于边缘检测的方法
基于边缘检测的方法主要是通过检测出区域的边缘来进行分割,利用区域之间特征的不一致性,首先检测图像中的边缘点,然后按一定策略连接成闭合的曲线,从而构成分割区域。图像中的边缘通常是灰度、颜色或纹理等性质不连续的地方。对于边缘的检测,经常需要借助边缘检测算子来进行,其中常用的边缘检测算子包括[3]:Roberts 算子、Laplace 算子、Prewitt 算子、Sobel 算子、Rosonfeld算子、Kirsch 算子以及Canny 算子等。
边缘检测算法比较适合边缘灰度值过渡比较显著且噪声较小的简单图像的分割。对于边缘比较复杂以及存在较强噪声的图像,则面临抗噪性和检测精度的矛盾。若提高检测精度,则噪声产生的伪边缘会导致不合理的轮廓:若提高抗噪性,则会产生轮廓漏检和位置偏差[4]。
阈值分割方法
阈值分割是最古老的分割技术,也是最简单实用的。许多情况下,图像中目标区域与背景区域或者说不同区域之间其灰度值存在差异,此时可以将灰度的均一性作为依据进行分割[3]。阈值分割即通过一个或几个阈值将图像分割成不同的区域。阈值分割方法的核心在于如何寻找适当的阈值。最常用的阈值方法是基于灰度直方图的方法,如最大类间方差法(OTSU)[5]、最小误差法、最大熵法等。此类方法通常对整幅图像使用固定的全局阈值,如果图像中有阴影或亮度分布不均等现象,分割效果会受到影响。基于局部阈值的分割方法对图像中的不同区域采用不同的阈值,相对于全局阈值方法具有更好的分割效果[6],该方法又称为自适应阈值方法。其中阈值的选取一般是基于图像的局部统计信息,如局部方差[7]、局部对比度[8]以及曲面拟合阈值[9]等。无论是基于全局阈值还是局部阈值,阈值方法通常受噪声影响较大。为了得到较好的分割结果,通常还需要与其他图像处理技术,如图像去噪等相结合。
基于聚类的分割方法
聚类分析是多元统计分析的方法之一,也是模式识别中非监督模式识别的一个重要分支。根据数据集合的内部结构将其分成不同的类别,使得同一类内样本的特征尽可能相似,而属于不同类别的样本点的差异尽可能大。聚类分析技术大致上可分为硬聚类、模糊聚类与可能性聚类方法[10]。
硬聚类方法中,样本点归属于不同类别的隶属度函数取值为0 或1,即每个样本只可能属于某一特定的类别。传统的硬聚类方法包括k 均值聚类[11]以及ISODATA[12等。模糊聚类方法是一种基于目标函数迭代优化的无监督聚类方法,样本点的隶属度函数取值为区间[0, 1],同时每个样本点对各类的隶属度之和为1,即认为样本点对每个聚类均有一个隶属度关系,允许样本点以不同的模糊隶属度函数同时归属于所有聚类。模糊聚类方法的软性划分,真实地反映了图像的模糊性和不确定性,因此其性能优于传统的硬分割方法。目前模糊聚类方法已经广泛应用于图像处理特别是医学图像处理中,其中最常用的是模糊C 均值聚类方法(FCM)[13,14]。可能性聚类样本点的隶属度函数同样取值为区间[0, 1],但其不要求隶属度之和为1。可能性聚类不仅顾及到样本与聚类中心的隶属度关系,同时考虑了样本的典型性对分类结果的影响。 传统的聚类算法没有考虑图像的空间信息,因此其对噪声与灰度分布不均非常敏感。为提高模糊聚类算法在图像分割中的效果,国内外学者提出了很多改进方法,其中结合空间信息是最常见的方法[15--24]。
活动轮廓方法
活动轮廓方法(又称为Snake 模型)是Kass等人[25]于1987 年提出的,活动轮廓即定义在图像域的曲线或者曲面,在与自身几何特性相关的内力以及图像数据相关的外力共同作用下,以最小化能量函数的形式向边界运动。经过二十多年的发展,活动轮廓模型已经在边缘检测、图像分割以及运动跟踪中得到了广泛的应用[26,27]。
按照曲线的表达方式的不同,活动轮廓模型大致可以分为两大类:参数活动轮廓模型和几何活动轮廓模型。参数活动轮廓模型采用参数化的形式直接描述活动轮廓曲线,轮廓曲线由一些规则排列的不连续的点(也称snaxels) 组成或通过一些基函数将其描述成一种连续的参数形式。由于参数活动轮廓方法都是显式的表示曲线,因此便于引入先验形状约束[28],同时有利于人机交互[27]。其缺点在于不能自适应的改变曲线的拓扑结构,难以处理曲线的分裂与合并;同时作为一种局部性方法,其最终分割结果严重依赖于初始位置。此外,轮廓曲线在演化过程中很难精确模拟复杂的边界,如深度凹陷的边界。Xu等人[29]提出梯度矢量流(GVF)Snake 方法,利用梯度矢量流来代替传统外力场,由于GVF 的作用范围比传统的Snake 模型大,能够促使轮廓曲线进入目标物体的凹陷部分,因此其在一定程度上克服了参数活动轮廓方法易于陷入局部能量极小的缺陷。
几何活动轮廓模型以曲线演化理论以及水平集方法为基础,曲线的演化仅依赖于其内在几何特性,而独立于曲线的参数。由于采用水平集方法隐式的表示曲线,使得其能够灵活地处理曲线的拓扑变化。几何活动轮廓模型又可分为基于边界的活动轮廓模型、基于区域的活动轮廓模型。基于边界的活动轮廓模型主要依赖图像的边缘信息控制曲线的运动速度。在图像边缘强度较弱或是远离边缘的地方,轮廓曲线运动速度较大,而在图像边缘强度较强的地方,轮廓曲线运动速度较小甚至停止,使得最终的轮廓曲线运动到边缘位置。比较著名的模型包括Caselles[30]提出的基于平均曲率流的几何活动轮廓模型、Caselles 与Kimmel 等人[31]提出的测地线活动轮廓方法。基于边界的活动轮廓方法对于对比度较好的图像具有较好的分割效果,然而,由于轮廓曲线的演化依赖于图像的边缘信息,当图像中噪声较强时通常难以得到理想的分割效果。基于区域的活动轮廓方法最早是由Mumford 与Shah 提出的MS 模型[32],其主要思想是用分片光滑的函数逼近原始图像,通过能量泛函的极小化寻找合适的轮廓曲线以及近似函数,使得近似函数在除去轮廓曲线以外的同质区域为光滑函数。尽管已经有二十多年的历史,MS 模型至今仍然具有强大的生命力,基于MS 模型的分割方法依然层出不穷。由于MS 模型数值求解存在较大困难,其近似求解算法也是研究的热点问题。目前关于MS 模型的近似方法主要包含两类方法:Ambrosio 提出的基于椭圆逼近的辅助变量模型[33--36]以及Chan 与Vese 提出的基于简化MS 模型与水平集方法相结合的方法[37]。Zhu 等人提出的区域竞争的活动轮廓模型,将区域增长、活动轮廓以及基于Bayes 公式和最小描述长度(MDL)的多相分割方法统一起来。区域竞争法拥有这三种方法的优点,互相弥补了他们的不足之处。此外,测地线活动区域模型[38](Geodesic Active Region)结合了基于边界与基于区域的活动轮廓方法,能够有效利用图像的边缘信息与区域信息。近年来,为处理灰度分布不均图像的分割问题,提出了许多局部化的活动轮廓模型,如Li Chunming 等人[39]提出的基于局部二进拟合能量的活动轮廓模型(LBF)。
基于图论的方法
基于图论的图像分割技术是近年来图像分割领域的一个新的研究热点。其基本思想是将图像映射为带权无向图,把像素视作节点,节点之间的边的权重对应于两个像素间的不相似性度量,割的容量对应能量函数。运用最大流/最小流算法对图进行切割,得到的最小割对应于待提取的目标边界。该方法具有快速、鲁棒、全局最优、抗噪性强、可扩展性好等优点。目前,基于图论的图像分割方法的研究主要集中在以下几个方面[40]:
(1) 最优剪切准则的设计;
(2) 谱方法用于分割;
(3) 快速算法的设计等。
基于图论的方法本质上将图像分割问题转化为最优化问题,是一种点对聚类方法,其最优分割基本原则就是使划分成的两个子图(区域) 内部相似度最大,而子图之间的相似度最小。图割算法中割集准则的好坏直接影响到最终分割结果,其中常见的割集准则包括:Minimum cut[41]、Average cut[42]、Normalizecut[43]、Min—max Cut[44]以及Ratio cut[45]等。
区域生长与分水岭算法
区域生长方法[46]也是一种常用的区域分割技术,其基本思路是首先定义一个生长准则,然后在每个分割区域内寻找一个种子像素,通过对图像进行扫描,依次在种子点周围邻域内寻找满足生长准则的像素并将其合并到种子所在的区域,然后再检查该区域的全部相邻点,并把满足生长准则的点合并到该区域,不断重复该过程直到找不到满足条件的像素为止。该方法的关键在于种子点的位置、生长准则和生长顺序。分水岭算法[47,48]是以数学形态学作为基础的一种区域分割方法。其基本思想是将梯度图像看成是假想的地形表面,每个像素的梯度值表示该点的海拔高度。原图中的平坦区域梯度较小,构成盆地,边界处梯度较大构成分割盆地的山脊。分水岭算法模拟水的渗入过程,假设水从最低洼的地方渗入,随着水位上升,较小的山脊被淹没,而在较高的山脊上筑起水坝,防止两区域合并。当水位达到最高山脊时,算法结束,每一个孤立的积水盆地构成一个分割区域。由于受到图像噪声和目标区域内部的细节信息等因素影响,使用分水岭算法通常会产生过分割现象,分水岭算法一般是作为一种预分割方法,与其它分割方法结合使用,以提高算法的效率或精度,如文献[49]使用分水岭算法结合基于图论的方法进行图像分
割,在计算精度与计算效率方面均取得了很好的效果。