数字图像处理中常用图像分割算法有哪些?
1.多数的图像分割算法
2.图像边缘分割
3.图像阈值分割
4.基于区域的分割
5.形态学分水岭算法
多数的图像分割算法 均是基于灰度值的不连续和相似的性质。在前者中,算法以灰度突变为基础分割一幅图像,如图像边缘分割。假设图像不同区域的边界彼此完全不同,且与背景不同,从而允许基于灰度的局部不连续性来进行边界检测。后者是根据一组预定义的准则将一幅图像分割为相似区域,如阈值处理、区域生长、区域分裂和区域聚合都是基于这种方法形成的。下面将对每类算法进行详细说明。
图像边缘分割:边缘是图像中灰度突变像素的集合,一般用微分进行检测。基本的边缘检测算法有:Roberts算子、Prewitt算子、Sobel算子。稍高级的算法有:Marr-Hilderth边缘检测器、Canny边缘检测器。
图像阈值分割:由于阈值处理直观、实现简单且计算速度快,因此阈值处理在分割应用中处于核心地位。阈值处理可以分为单阈值处理与多阈值处理。在单阈值处理中最常用且分割效果也不错的算法是Otsu(最大类间方差算法)算法。多阈值处理:K类由K-1个阈值来分离,即计算图像的多个类间方差,多阈值处理的分割结果相较于单阈值的结果虽然会更好一些,但分类数量增加时它会开始失去意义,因为我们仅仅处理一个变量(灰度),此时可以通过增加变量如彩色来进行解决。
基于区域的分割:区域生长算法和区域分裂与聚合都是属于基于区域的分割算法。
区域生长算法是根据预先定义的生长准则将像素或子区域组合为更大的区域的过程。
基本方法是从一组“种子”点开始,将与种子预先定义的性质相似的那些邻域像素添加到每个种子上来形成这些生长区域(如特定范围的灰度或颜色)。区域分裂与聚合是首先将一幅图像细分为一组任意的不相交区域,然后按照一定规则聚合、分裂这些区域。
形态学分水岭算法:分水岭的概念是以三维形象化一幅图像为基础的。
在图中,我们主要考虑三种类型的点:
(1)属于一个区域最小值的点;
(2)把一点看成是一个水滴,如果把这些点放在任意位置上,水滴一定会下落到一个单一的最小值点;
(3)处在该点的水会等可能性地流向不止一个这样的最小值点。
对于一个特定的区域最小值,满足条件(2)的点的集合称为该最小值的汇水盆地或分水岭。
满足条件(3)的点形成地表面的峰线,称之为分割线或分水线。
为了达到更好的分割效果,常常将分水岭算法应用到梯度图像上,而不是图像本身。
(二)
个人认为图像分割的算法可以从分割目标入手:通常是要将图像分成目标区域和背景。
需要从图像的特征入手,以灰度图像为例(其余类型的图像处理均类似),图像图形很明显的特征有:
图像灰度值特征、目标边界特征、纹理特征、形态学特征等等;
还有一些基于这些特征所计算提取出的特征,比如信息熵、能量泛函等等。
最为简单的就是灰度值特征了,一幅图中有时候目标区域与背景区域有很明显的亮度区别,基于这个认识,只要试图找到某个亮度的值,我们假设低于该值的认为是背景,高于该值的认为是目标。关于找这个值的算法就是阈值分割算法了,像OTSU、迭代法、最大熵法等等都是属于这一范畴。
同时也可以注意到,在空域内,目标的边界是区分目标与背景的重要依据,因此区分边界也是一个重要的手段,通常边界点周围灰度值变化率很高,因此可以基于图像灰度梯度来识别。这就有一些sobel算子、canny算子等等方式,都是通过找到边界来确定目标区域与背景的。
在有些图像中,目标区域具有一定的连续性,基于区域连续性的一些方法像区域生长法、分水岭算法等(本人对这一块不是很熟悉)。
另外,基于图像原始的特征进行提取获得“精炼”的二级特征,并据此分割也是一种好的方法。像SNAKE算法,该算法认为目标区域的边界是“外力”,内力共同作用的结果,因此当外力内力平衡时找到边界,基于这种平衡,提出了判断能量泛函最小的判断原则。此外,还有基于几何活动轮廓模型的水平集方法,该方法是借助于目标区域的几何度量参数,可以比较好的处理一些拓扑变化。
除去经典的阈值和分水岭分割算法外,有主动轮廓及衍生的水平集,图割及相关算法(例如GrabCut),交互式分割,以及Cosegmentation。
所有分割算法的核心目的是解决目标区域语义合并难题。例如交互式分割,通过精准交互来解决该问题。Cosegmentation通过分割相同或相似目标来处理该问题。
(三)
(1)基于阈值的分割方法:可在各种颜色空间或不同通道中完成阈值、自适应阈值、
(2)基于边缘的分割方法:各种边缘检测算子
(3)基于区域的分割方法:分水岭、区域归并与分裂
(4)图割分割:最大流(最小割)算法
(5)基于深度信息的分割:
(6)基于先验信息的分割:
基于特定理论的分割方法等。
特定理论大概有:聚类分析、模糊集理论、基因编码、小波变换等。