图像分割是将图像划分为若干有意义的区域或部分,或者从图像中提取感兴趣目标的图像处理技术。
图像分割的基本策略
图像抠图(Image matting)是当前流行的一项新的图像处理技术,与-图像分割既有联系,又有区别。
图像中每一个像素的灰度值 r(x, y) 可以表示为前景灰度值 f(x, y) 和背景灰度值 b(x, y) 的线性组合:
r ( x , y ) = α f ( x , y ) + ( 1 − a ) b ( x , y ) r(x, y) = α f(x, y) + (1 - a) b(x, y) r(x,y)=αf(x,y)+(1−a)b(x,y)
式中,α 通道表示前景与背景叠加的透明度。
边界存在于目标与背景、不同目标之间,是图像分割所依据的重要特征。
基于边缘检测的图像分割首先确定图像中的边缘像素,然后将它们连接在一起构成边界。
边缘有方向和幅度两个属性,沿边缘方向像素灰度值变化平缓或不发生变化,而垂直于边缘方向像素灰度值变化剧烈。
边缘检测算法可分为两类:一阶差分和二阶差分
明确定义边缘,边缘点是信号变化剧烈的地方。
边缘是灰度值不连续的产物,可以利用差分来检测这种不连续性。
噪声对一阶差分和二阶差分的影响
通常在边缘检测之前对有噪图像进行去噪或降噪处理。
梯度算子定义在二维一阶导数的基础上,由于数字图像是离散的,常用差分近似偏导数,在像素 (x, y) 处的梯度定义为
式中, G x ( x , y ) G_x(x, y) Gx(x,y) 表示x方向的一阶差分, G y ( x , y ) G_y(x, y) Gy(x,y)表示y方向的一阶差分。
梯度幅度记为 ▽f(x, y)
梯度方向为梯度增加最快的方向,记为 a(x, y)
灰度梯度指向边缘的垂直方向。
常用的一阶差分算子有Roberts、Prewitt和Sobel算子,用于近似计算偏导数。
Roberts 交叉梯度算子
梯度算子由两个模板组成,第一个计算x(垂直)方向的一阶差分,第二个计算y(水平)方向的一阶差分。
Prewitt 梯度算子—3×3梯度模板
梯度算子由两个模板组成,第一个计算 x(垂直)方向的一阶差分,第二个计算y(水平)方向的一阶差分。
Prewitt 示例
Sobel梯度算子—3×3梯度模板
梯度算子由两个模板组成,第一个计算x(垂直)方向上一阶差分,第二个计算y(水平)方向上一阶差分。
Sobel 算子检测图像 4 个方向的边缘
二阶差分算子在图像分割中的主要作用
拉普拉斯算子
拉普拉斯算子是一个用于检测边缘的二阶微分算子。在拉普拉斯结果中,边缘并不处于最大值处,而是处于最大正值和最小负值之间的零值处,称为过零点、零交叉(Zero Crossing)。
拉普拉斯算子分析
高斯拉普拉斯算子(LoG)
式中,σ 为标准差,决定了图像的平滑程度。
将 LoG 与图像卷积会模糊图像,其模糊程度是正比于 σ 的。因为 LoG 的平滑性质能减少噪声的影响,所以当边缘模糊或噪声较大时,利用LoG检测过零点能提供较可靠的边缘位置,当然这种方法的计算复杂度比较大。
这种近似不是惟一的,但有其本质的形状,即,一个正的中心项,周围被一个相邻的负值区域围绕(这个负值区域从原点开始作为距离的函数在值上是增加的),并被一个零值的外部区域所包围。
系数的总和也必须为零,以便在灰度级不变的区域中模板的响应为零。这个小的模板(5 * 5)仅对基本上无噪声的图像有用。
由于图像的形状,高斯型的拉普拉斯算子有时被称为墨西哥草帽函数。
高斯差分算子(DoG)
高斯差分(DoG)算子也是一种常用的二阶差分算子,顾名思义,它是两个高斯函数之差的形式。
Canny 算子
Canny 算子是一种有效的边缘检测算子,具体包括4个步骤:
高斯图像平滑:为了抑制噪声,利用高斯函数对图像进行平滑处理
基于梯度的边缘检测:利用 Sobel 算子计算每一个像素 (x, y) 处的局部梯度幅度及其梯度方向
梯度幅度的非极大值抑制:追踪梯度幅度中所有脊的顶部,保留局部梯度极大值点,形成单像素宽度的边缘,这个过程称为非极大值抑制;
双阈值法的边缘检测和连接:设置两个不同的阈值T1、T2,T1<T2 。梯度幅度大于 T2 的像素称为强边缘像素,梯度幅度在其间的像素称为弱边缘像素,将强边缘像素连接成轮廓,当到达间断点时,在低阈值图像的 8 邻域内寻找可以连接到强边缘的弱边缘像素,直至将强边缘连接起来为止。
一种好的边缘检测算子具备3个特点:
梯度算子(一阶差分算子)
二阶差分算子
当背景复杂时,该方法会失效。阈值选定的好坏是此方法成败的关键
基于阈值的图像分割基本原理
当一幅图像由亮目标区域和暗背景区域(或反之)组成时,灰度直方图呈现双峰模式。
If f(x,y) >= T then set 255(即为1)
Else set 0
阈值分割法的特点
阈值法分类
交互方式全局阈值法的基本思想
交互方式全局阈值法的具体步骤
估计目标区域中的样本值 f ( x 0 , y 0 ) f (x_0, y_0) f(x0,y0);
试探性选取容许度 ;
对图像二值化,若,则标记为目标区域,赋值为1或255,否则,标记为背景区域,赋值为0。
P参数法的基本思想
P参数法的方法
P参数法的具体步骤
Otsu阈值法的基本思想
迭代阈值法的基本思想
设图像的像素总数为 n,灰度级数为 L,第 k 个灰度级 rk 的像素数为 nk,则
具体步骤:
选取灰度均值或灰度中值作为阈值的初始估计值 T0;
根据像素的灰度值利用阈值将图像分割成两个区域,记为 R1 和 R2。R1 由灰度值在范围 [0, Tk] 内的像素组成,R2 由灰度值在范围 [Tk+1, L-1] 内的像素组成
分别计算区域R1和R2内像素的灰度均值 μ1 和 μ2
利用 μ1(Tk) 和 μ2(Tk) 更新阈值,即
若连续两次迭代的阈值 Tk+1 与 Tk 之差小于预设限 ,则终止迭代
否则返回步骤2
利用局部特征自动选取阈值
梯度加权直方图阈值法
给梯度较小的目标和背景区域内部像素赋予较大的权重,而给它们边界上梯度较大的像素赋予较小的权重。
设 g(x, y) 表示像素 (x, y) 的梯度,在灰度直方图的计算过程中,对图像中像素的灰度值 f(x, y) 进行统计时,赋予关于梯度的权重 1 / [ 1 + g ( x , y ) ] 2 1/[1+g(x, y)]^2 1/[1+g(x,y)]2,梯度加权直方图为:
在梯度加权直方图中(高的更高,低的更低)
灰度-梯度二维直方图阈值法是建立一个二维直方图,横轴表示灰度级,纵轴表示梯度。
通常情况下,将图像的梯度压缩到范围 [0, L-1] 内并量化为整数,使得灰度-梯度二维直方图为L × L的方形。
设 f(x, y) 为像素 (x, y) 的灰度值,g(x, y) 为其梯度,灰度-梯度二维直方图为
单阈值法仅使用单一的全局阈值对目标和背景区域进行分割。当一幅图像的灰度直方图呈现明显的双峰特性时,选取两峰之间的谷底作为阈值,可以取得好的分割结果。
在实际应用中,图像的灰度直方图很少表现为明显的双峰。当目标与背景区域的灰度值范围有部分重叠时,仅选取单一阈值会产生较大的误差。
多阈值法
目的:难以准确定位双峰之间谷底位置的图像分割问题。
方法:多阈值法图像分割是在图像分割的过程中设定多个阈值来实现复杂双峰形状直方图的图像分割。
双阈值法
例如,将灰度值大于阈值T2 、且与灰度值大于阈值T1的像素相连通的所有像素标记为目标区域。
双阈值法探索目标像素的空间相似性或连续性,允许灰度值小于高阈值的像素划分为目标区域,与高阈值像素相连通的要求抑制了虚假背景区域的形成。
通过设定双阈值避免了单阈值法中阈值过高或过低而将目标像素错分为背景像素或将背景像素错分为目标像素的情况。
双阈值法图像分割的思想追溯到Canny边缘检测,在Canny边缘检测中使用两个不同的阈值,高阈值决定强边缘,而低阈值决定弱边缘。
灰度直方图中双峰之间的距离较近,基本上呈现单峰状态,假设目标和背景像素均服从高斯分布,图中分布较宽的高斯曲线表示目标像素的后验概率函数,分布较窄的高斯曲线表示背景像素的后验概率函数。
当图像中存在阴影、光照不均匀、对比度、背景灰度变化等情况时,仅使用固定的单一全局阈值对整幅图像进行分割则无法兼顾图像亮区域和暗区域。
局部阈值法使用一组与像素坐标相关的阈值,为图像中的各个像素计算不同的分割阈值,也称为动态阈值法或自适应阈值法。
对于不均匀光照图像来说,不论用哪个阈值都无法兼顾亮区与暗区。最好的办法是用可变阈值,在亮区阈值高,暗区阈值低,即对每个像素都自适应地选用不同的阈值。
Niblack算法
Niblack算法是一种局部阈值法,局部阈值 T(x, y) 依赖于空间坐标 (x, y),其计算式为
T(x, y) = m(x, y) + ks(x, y)
式中,m(x, y) 表示以像素 (x, y) 为中心的邻域内像素的灰度均值;s(x, y) 表示以像素 (x, y) 为中心的邻域内像素的均方差;k为常数。
基于阈值的图像分割没有考虑像素的空间位置关系,而同一分割区域的像素应该具有相似的性质;
基于区域的图像分割充分考虑像素及其空间邻域像素之间的关系。
区域生长法的基本思想
根据图像的不同应用选择一个或一组种子,它或者是最亮或最暗的点,或者是位于点簇中心的点。
区域生长法要求待分割区域具有相同或相似的性质,且是连通的。区域内像素的相似性度量通常利用灰度、颜色、纹理等特征。
区域可以分为 4 连通区域和 8 连通区域
4连通区域生长法的算法实现
对于种子像素的8连通区域生长,按照“左 左上 上 右上 右 右下 下 左下”的顺序查看其8邻域内的像素。
单一连通分量的检测
区域标记
区域标记是将一幅图像中的同一个连通分量标记为同一符号,也称为连通分量标记。
通常利用区域生长法提取二值图像中的所有连通分量,使用不同的符号标记不同的连通分量,输出为区域标记矩阵。
多个连通分量检测