一、引言
图像分割就是把图像分成若干个特定的、具有独特性质的区域并提出感兴趣目标的技术和过程。它是由图像处理到图像分析的关键步骤。现有的图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法以及基于特定理论的分割方法等。从数学角度来看,图像分割是将数字图像划分成互不相交的区域的过程。图像分割的过程也是一个标记过程,即把属于同一区域的像素赋予相同的编号。
常见的图像分割方法有以下几种
1.基于阈值的分割方法。
灰度阈值分割法是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。
2.基于区域的分割方法。
区域生长和分裂合并法是两种典型的串行区域技术,其分割过程后续步骤的处
3.基于边缘的分割方法。
基于边缘的分割方法是指通过边缘检测,即检测灰度级或者结构具有突变的地方,确定一个区域的终结,即另一个区域开始的地方。不同的图像灰度不同,边界处一般有明显的边缘,利用此特征可以分割图像。
4.基于特定理论的分割方法
图像分割至今尚无通用的自身理论。随着各学科新理论和新方法的提出,出现了与一些特定理论、方法相结合的图像分割方法,主要有:基于聚类分析的图像分割方法、基于模糊集理论的分割方法,等。
5.基于基因编码的分割方法
基于基因编码的分割方法是指把图像背景和目标像素用不同的基因编码表示,通过区域性的划分,把图像背景和目标分离出来的方法。该方法具有处理速度快的优点,但算法实现起来比较难。
6.基于小波变换的分割方法
小波变换是近年来得到广泛应用的数学工具,它在时域和频域都具有良好的局部化性质,并且小波变换具有多尺度特性,能够在不同尺度上对信号进行分析,因此在图像处理和分析等许多方面得到应用。
7.基于神经网络的分割方法
基于神经网络的分割方法的基本思想是通过训练多层感知机来得到线性决策函数,然后用决策函数对像素进行分类来达到分割的目的。
二、基于最小误差的图像分割方法
阈值分割是常见的直接对图像进行分割的算法,根据图像像素的灰度值的不同而定。对应单一目标图像,只需选取一个阈值,即可将图像分为目标和背景两大类,这个称为单阈值分割;如果目标图像复杂,选取多个阈值,才能将图像中的目标区域和背景被分割成多个,这个称为多阈值分割,此时还需要区分检测结果中的图像目标,对各个图像目标区域进行唯一的标识进行区分。阈值分割的显著优点,成本低廉,实现简单。当目标和背景区域的像素灰度值或其它特征存在明显差异的情况下,该算法能非常有效地实现对图像的分割。阈值分割方法的关键是如何取得一个合适的阈值,近年来的方法有:用最大相关性原则选择阈值的方法、基于图像拓扑稳定状态的方法、灰度共生矩阵方法、最大熵法和峰谷值分析法等,更多的情况下,阈值的选择会综合运用两种或两种以上的方法,这也是图像分割发展的一个趋势。
2.1 理论
2.2 图像分割结果
图像分割结果如下图所示:
三、基本全局阈值分割方法
3.1 原理
为了自动选择阈值,根据图像中目标的灰度分布情况,选取一个近似阈值作为初始阈值,较好的方法就是将图像的灰度均值作为初始阈值;然后通过分割图像和修改阈值的迭代过程获得认可的最佳阈值。其选取过程描述如下。
- 选取一个初始估计阈值T;
- 利用阈值T把给定图像分割成两组图像,记为G1和G2,其中G1由所有灰度值大于T的像素组成,G2由所有灰度值小于等于T的像素组成;
- 分别计算G1和G2图像的所有灰度值的均值u1和u2;
- 选取新的阈值T,且T=(u1+u2)/2;
- 重复第(2)~(4)步,直到在连续两次迭代中,T的差异小于预先设定的参数△T为止。
使用Matlab函数im2bw分割图像:g=im2bw(img,T/den),其中den是整数(8比特图像为255),是T/den比率为1的数值范围内的最大值,正如函数im2bw要求的那样。
3.2 结果
四、最佳图像分割阈值法
利用Matlab中的函数imhist和cumsum以及熵的定义,能够得到最佳图像分割阈值,然后对图像进行分割。
五、最大类间方差(Otsu)
Otsu是一单阈值的分割方法,其基本思想是把直方图分割成目标和背景2组,当分割的2组数据的类间方差最大时,也即背景和目标之间足够离散,求得最佳分割阈值,由此阈值对图像进行分割。该方法可以推广到多阈值分割。其算法过程是针对每个可能阈值T,计算利用阈值T分割图像后得到的背景和目标两类的之间的方差,然后利用类间方差最大准则确定最终的最佳分割阈值。
六、基于Bersen算法的图像分割
6.1 Bersen算法
Bernsen算法的基本思想为:设置两个初始值T1=15和T2=128,计算以任意一个像素g为中心、大小为(2w+1)×(2w+1)窗口内的所有像素灰度值的最大值M与最小值N,得到M和N的均值T。若M-N>T1,则当前点的阈值为T;若M-N<T1,则表示该窗口所在区域灰度级差别较小,则窗口在目标区或在背景区,再判断T与T2的关系:若T>T2,则当前点的灰度值为255;否则,当前点g的灰度值为0。利用阈值T遍历图像中每个像素点,得到与原图像维数相同的二值化图像。该算法描述如下:设f(x,y)表示(x,y)处的像素灰度值,以(x,y)为中心、大小为(2w+1)×(2w+1)的区域S内的阈值为
利用T(x,y)对f(x,y)逐点二值化,得到二值化显著性图像b(x,y):
6.2 结果分析
七、Matlab程序获取与验证
本博文演示结果均由Matlab代码实现,可私信博主获取
博主简介:研究方向包括信号处理、图像处理、机器视觉、深度学习、神经网络等领域。matlab代码问题、商业合作、课题选题与实验指导等均可私信交流讨论~~。 |