第 7 章 图像分割
本章概括
本章讨论把图像划分为目标区域的基本方法,包括分割定义、点线边缘检测、Canny 边缘检测、阈值处理、区域生长、区域分裂合并和分水岭算法。重点是理解边缘型分割、阈值型分割和区域型分割的适用条件。
7.1 基础知识
图像分割的目标是把图像区域 $R$ 划分为若干互不重叠的子区域:
$$ R=\bigcup_{i=1}^{n}R_i,\qquad R_i\cap R_j=\varnothing\ (i\ne j) $$
每个区域内部应满足某种一致性准则 $P(R_i)=\text{TRUE}$,而不同相邻区域合并后不再满足该准则:
$$ P(R_i\cup R_j)=\text{FALSE} $$
这里的一致性可以是灰度、颜色、纹理、边缘或语义类别。
7.2 点、线和边缘检测
7.2.1 背景知识
点、线和边缘检测本质上都是寻找灰度突变。模板响应可写为:
$$ R=\sum_{k=1}^{9}w_k z_k $$
其中 $w_k$ 是模板系数,$z_k$ 是邻域像素值。不同模板对孤立点、线段或边缘有不同响应。
7.2.2 孤立点检测
孤立点检测常使用拉普拉斯类模板。若模板响应绝对值超过阈值,则认为该点与邻域差异明显。
7.2.3 线检测
线检测使用方向性模板,如水平、垂直、$45^\circ$ 和 $-45^\circ$ 模板。某方向模板响应最大,说明图像中可能存在该方向线结构。
7.2.4 边缘模型
常见边缘包括阶跃边缘、斜坡边缘和屋顶边缘。实际图像中由于成像模糊和噪声,理想阶跃边缘常表现为斜坡边缘。
一阶导数在边缘处出现峰值,二阶导数在边缘附近出现零交叉。边缘检测常利用梯度幅值和方向。
7.2.5 基本边缘检测算子
Sobel 模板为:
$$ S_x= \begin{bmatrix} -1 & 0 & 1\ -2 & 0 & 2\ -1 & 0 & 1 \end{bmatrix}, \quad S_y= \begin{bmatrix} -1 & -2 & -1\ 0 & 0 & 0\ 1 & 2 & 1 \end{bmatrix} $$
$S_x$ 对垂直边缘响应强,$S_y$ 对水平边缘响应强。
Laplacian 离散形式为:
$$ \nabla^2 f(x,y)=f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)-4f(x,y) $$
它对灰度突变敏感,但也容易放大噪声。
7.2.6 Canny 边缘检测
Canny 是常用的最优边缘检测方法,目标是低错误率、边缘定位准确、单边缘响应。
算法步骤:
- 用高斯滤波平滑图像,降低噪声。
- 计算梯度幅值和方向。
- 进行非最大抑制,保留局部梯度最大点。
- 使用双阈值区分强边缘和弱边缘。
- 通过边缘连接保留与强边缘相连的弱边缘。
高斯平滑为:
$$ f_s(x,y)=G(x,y)*f(x,y) $$
梯度幅值和方向为:
$$ M(x,y)=\sqrt{g_x^2+g_y^2},\qquad \alpha(x,y)=\arctan\frac{g_y}{g_x} $$
双阈值中,高阈值 $T_H$ 保留可靠边缘,低阈值 $T_L$ 保留候选边缘。$T_H$ 过高会漏检,$T_L$ 过低会引入噪声边缘。
7.3 阈值处理
阈值分割根据灰度值把像素分为目标和背景:
$$ g(x,y)= \begin{cases} 1,&f(x,y)\ge T\ 0,&f(x,y)<T \end{cases} $$
$T$ 为阈值。全局阈值适合光照均匀且目标/背景灰度差异明显的图像;局部阈值适合光照不均或背景变化明显的图像。
多阈值分割可把图像划分为多个灰度区域,适合多个目标类别或多层结构图像。
7.4 基于区域的分割
区域生长
区域生长从种子点开始,把满足相似性条件的邻域像素加入区域。关键是选择种子点和相似性准则,如灰度差、颜色距离或纹理相似度。
算法流程:
- 选取一个或多个种子点。
- 检查种子邻域像素。
- 若满足相似性准则,则加入区域。
- 重复扩展直到没有新像素可加入。
区域生长能得到连通区域,但对种子选择和噪声敏感。
区域分裂与合并
分裂合并先把图像划分为较大区域,若区域不满足一致性则继续分裂;相邻区域若合并后满足一致性则合并。它适合区域内部性质较稳定但目标位置未知的情况。
7.5 分水岭分割算法
分水岭把灰度图像看成地形表面,灰度值表示高度。局部极小值形成集水盆地,盆地边界即分水岭线。
水坝构建
水从局部极小值开始上涨,不同盆地即将合并时修建水坝,水坝位置形成分割边界。
标记控制分水岭
直接分水岭容易过分割,因此常使用标记控制:
- 对图像预处理,去噪并增强边界。
- 生成前景标记和背景标记。
- 修改梯度图,使标记位置成为极小值。
- 在修改后的梯度图上执行分水岭。
标记控制可以显著减少过分割,使分割结果更符合目标区域。