第8章 图像分割
一、图像分割基础(Fundamentals of Image Segmentation)
1.1 什么是图像分割
图像分割是将图像细分为其组成区域或目标的过程。设 \(R\) 表示整个图像区域,分割将 \(R\) 划分为 \(n\) 个子区域 \(R_1, R_2, \ldots, R_n\),满足:
分割主要依赖灰度值的两种基本性质:
| 性质 | 原理 | 典型方法 |
|---|---|---|
| 不连续性(Discontinuity) | 基于灰度的突变进行分割 | 点/线/边缘检测、角点检测 |
| 相似性(Similarity) | 基于灰度的相似性进行分割 | 阈值法、区域生长/分裂/合并 |
1.2 图像分割的发展现状
现代图像分割已从传统方法发展到深度学习方法:
| 方法 | 特点 |
|---|---|
| 传统方法 | 基于灰度不连续性和相似性,无需训练数据 |
| CNN | 自动学习层次化特征 |
| U-Net | 编码器-解码器 + Skip Connection,医学图像分割的标准架构 |
| nnU-Net | 自适应配置的U-Net,无需人工调参 |
| SAM / MedSAM | 通用分割基础模型,MedSAM 专用于医学图像 |
二、灰度不连续性的检测(Detection of Gray Level Discontinuities)
2.1 导数基础
利用卷积检测灰度的不连续性:\(g(x,y) = \sum_{s=-a}^{a}\sum_{t=-b}^{b} w(s,t) \cdot f(x+s, y+t)\)
其中掩膜系数之和为 \(0\):在灰度相似的区域(低频),滤波结果接近 \(0\);在灰度突变的区域,输出显著偏离 \(0\),从而增强边缘和不连续性。
一阶导数与二阶导数的对比:
| 特性 | 一阶导数 | 二阶导数 |
|---|---|---|
| 边缘响应 | 产生较粗的边缘 | 产生双边缘响应(在斜坡和阶梯处) |
| 灰度阶梯响应 | 较强 | 较弱 |
| 细线/点/噪声响应 | 较弱 | 较强 |
| 方向信息 | 可提供 | 不能直接提供 |
| 符号意义 | — | 可用于判断过渡方向(亮→暗 或 暗→亮) |
一阶导数公式: $$ \frac{\partial f}{\partial x} = f(x+1) - f(x) $$
二阶导数公式: $$ \frac{\partial^2 f}{\partial x^2} = f(x+1) + f(x-1) - 2f(x) $$
2.2 点检测(Point Detection)
使用 Laplacian 算子检测孤立点:
对应的 \(3 \times 3\) 掩膜:
在均匀灰度区域响应为 \(0\),在孤立点处产生强响应。
2.3 线检测(Line Detection)
不同方向的线检测掩膜:
| 方向 | 掩膜 |
|---|---|
| 水平 | \(\begin{bmatrix} -1 & -1 & -1 \\ 2 & 2 & 2 \\ -1 & -1 & -1 \end{bmatrix}\) |
| +45° | \(\begin{bmatrix} -1 & -1 & 2 \\ -1 & 2 & -1 \\ 2 & -1 & -1 \end{bmatrix}\) |
| 垂直 | \(\begin{bmatrix} -1 & 2 & -1 \\ -1 & 2 & -1 \\ -1 & 2 & -1 \end{bmatrix}\) |
| −45° | \(\begin{bmatrix} 2 & -1 & -1 \\ -1 & 2 & -1 \\ -1 & -1 & 2 \end{bmatrix}\) |
这些掩膜对指定方向上一个像素宽的线条响应最强。Laplacian 检测线时会产生双边缘——可通过取绝对值或只取正/负响应来处理。
三、边缘检测(Edge Detection)
3.1 什么是边缘
边缘是位于两个区域之间边界上的一组连通像素,是一个局部概念。三种基本边缘类型:
| 类型 | 描述 |
|---|---|
| 理想/阶梯边缘(Step Edge) | 灰度在两个灰度级之间瞬时跳变 |
| 斜坡边缘(Ramp Edge) | 灰度在有限距离内逐渐过渡(实际图像中最常见) |
| 屋顶边缘(Roof Edge) | 灰度先上升再下降,形成脊状(如细线的剖面) |
3.2 噪声对导数的影响
导数运算对噪声极为敏感——即使是微小的随机噪声也会被放大。解决方法:在求导之前先进行平滑(如高斯平滑),这正是 LoG 和 Canny 算子的核心思想。
3.3 梯度算子(一阶导数)
图像 \(f(x,y)\) 在 \((x,y)\) 处的梯度定义为:
梯度幅值:
梯度方向:
各种梯度算子
| 算子 | \(G_x\) | \(G_y\) | 特点 |
|---|---|---|---|
| Roberts | \(\begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix}\) | \(\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix}\) | \(2 \times 2\),最简单,但对噪声敏感 |
| Prewitt | \(\begin{bmatrix} -1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1 \end{bmatrix}\) | \(\begin{bmatrix} -1 & -1 & -1 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \end{bmatrix}\) | \(3 \times 3\),中心权重与邻域相同 |
| Sobel | \(\begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix}\) | \(\begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix}\) | \(3 \times 3\),中心行/列权重加倍→内置平滑 |
| Kirsch | 8个方向的罗盘核 | — | 取8个方向响应的最大值作为输出 |

Sobel vs Prewitt vs Roberts
- Roberts:\(2 \times 2\) 核,无平滑,对噪声最敏感
- Prewitt:\(3 \times 3\),有平滑但中心无特殊权重
- Sobel:\(3 \times 3\),中心权重加倍(\(\times 2\)),平滑效果更好,实际应用中最常用
3.4 二阶导数:Laplacian 算子
Laplacian 是各向同性的(旋转不变)。常用离散掩膜:
| 邻域 | 掩膜 |
|---|---|
| 4-邻域 | \(\begin{bmatrix} 0 & -1 & 0 \\ -1 & 4 & -1 \\ 0 & -1 & 0 \end{bmatrix}\) |
| 8-邻域 | \(\begin{bmatrix} -1 & -1 & -1 \\ -1 & 8 & -1 \\ -1 & -1 & -1 \end{bmatrix}\) |
Laplacian 的问题:
- 对噪声极其敏感
- 产生双边缘而非单边缘
- 不提供梯度方向信息
Laplacian 的优势:利用零交叉(Zero-Crossing)特性可以精确定位边缘,且符号可用于判断像素在边缘的暗侧还是亮侧。
3.5 LoG(Laplacian of Gaussian)
先高斯平滑再 Laplacian,等价于直接使用 LoG 核进行卷积:
高斯函数: $$ h(r) = e^{-\frac{r^2}{2\sigma^2}}, \quad r^2 = x^2 + y^2 $$
Laplacian of Gaussian: $$ \nabla^2 h = \frac{r^2 - 2\sigma^2}{\sigma^4} e^{-\frac{r^2}{2\sigma^2}} $$
因其形状被称为"墨西哥帽"函数:
- \(\sigma\) 较小时:检测精细边缘,对噪声敏感
- \(\sigma\) 较大时:检测粗边缘,抗噪能力强
LoG 与 Gausssian + Laplacian 的等价性
由于卷积的结合性:\(\nabla^2[f * h] = f * \nabla^2 h\),因此 LoG 只需一次卷积即可完成"平滑 + 求导"两步操作。
3.6 Canny 边缘检测算子(Canny Edge Detector)
先高斯平滑再计算一阶方向导数,被业界公认为边缘检测的最优标准:
高斯函数:
高斯函数的一阶偏导(Derivative of Gaussian):
因其算法设计,满足低错误率、高定位精度和单峰响应三大准则。Canny 算子之所以超越普通一阶导数算子(如 Sobel),核心在于其利用求导结果进行的后续三大步骤:

步骤一:梯度方向离散化
计算出每个像素的梯度幅值和连续方向角度 \(\alpha(x,y)\) 后,需要将其归类:
- 找到与连续角度 \(\alpha(x,y)\) 最接近的离散方向 \(d_k\)。
- 根据 \(360^\circ\) 扇区划分(如右侧扇形图),将其映射到 3x3 邻域的 4 个基本方向之一:水平方向、垂直方向、\(+45^\circ\) 方向、\(-45^\circ\) 方向。
步骤二:非极大值抑制 (Non-Maximum Suppression, NMS)
算法会沿着上一步找到的梯度方向 \(d_k\)(即边缘的法线方向,Edge normal),比较中心像素与两侧相邻像素的梯度强度:
-
设当前像素 \((x,y)\) 的梯度强度为 \(K\)。
-
设沿方向 \(d_k\) 的两侧相邻像素的梯度强度为 \(fs\)。
-
判断逻辑:
-
如果 \(K\) 小于其中一个或两个邻居的值(即没在最高点),则该点被抑制 (Suppression),输出值为 0,\(g_N(x,y) = 0\)
-
否则(即该点是局部极大值),保留原强度:\(g_N(x,y) = K\)
步骤三:滞后双阈值 (Hysteresis Threshold)
使用高、低两个阈值(\(T_{high}, T_{low}\))处理 NMS 后的图像:
- 高于 \(T_{high}\) 的点确认为强边缘。
- 低于 \(T_{low}\) 的点确认为噪点并抛弃。
- 介于两者之间的弱边缘点,仅当其在 8-邻域内与强边缘相连时才予以保留,从而保证了物理轮廓的连续性。
3.7 高级边缘检测:Active Contour(Snakes)
Active Contour 将目标检测转化为能量最小化问题:
轮廓定义为参数曲线 \(v(s) = (x(s), y(s))\),其能量为:
其中:
- \(\alpha |v'(s)|^2\):弹性项(控制轮廓的拉伸)
- \(\beta |v''(s)|^2\):刚性项(控制轮廓的弯曲)
- \(E_{ext}\):外部能量(来自图像梯度,如 \(E_{ext} = -|\nabla f|^2\),驱动轮廓向边缘移动)
四、阈值分割(Thresholding)

4.1 基本阈值分割
阈值分割是最简单的分割方法:
根据 \(T\) 的依赖关系分类:
| 类型 | \(T\) 的依赖 | 说明 |
|---|---|---|
| 全局阈值 | \(T = T(f(x,y))\) | 只依赖灰度值 |
| 局部阈值 | \(T = T(f(x,y), p(x,y))\) | 依赖灰度和局部邻域属性 |
| 动态/自适应阈值 | \(T = T(x,y, f(x,y))\) | 依赖空间坐标和灰度 |
噪声的影响:噪声使直方图中的峰值变宽、谷变浅,严重时两个峰合并为一个→无法通过单一阈值分割。
光照的影响:不均匀光照 → 全局阈值失效 → 需要补偿(先拍摄均匀白表面获得 \(g(x,y) = k \cdot i(x,y)\),对实际图像 \(f(x,y) = i(x,y) \cdot r(x,y)\) 做归一化:\(h(x,y) = f(x,y)/g(x,y) = r(x,y)/k\))。
4.2 基本全局阈值法(迭代阈值)
算法步骤:
- 选择初始阈值 \(T\)(可取图像平均灰度,或最大值和最小值的中间值)
- 用 \(T\) 分割图像生成两个区域 \(G_1\)(\(>T\))和 \(G_2\)(\(\leq T\))
- 分别计算 \(G_1\) 和 \(G_2\) 的平均灰度值 \(\mu_1\) 和 \(\mu_2\)
- 更新阈值:\(T_{new} = \frac{\mu_1 + \mu_2}{2}\)
- 重复步骤 2–4,直到 \(|T - T_{new}| < \Delta\)(收敛)
该算法通常 2–3 次迭代即可收敛,对初始值不敏感。
4.3 Otsu 方法(大津法)
Otsu 方法通过最大化类间方差来自动寻找最优全局阈值。
设直方图概率 \(p_i = n_i / N\),图像均值 \(m_G = \sum_{i=0}^{L-1} i \cdot p_i\)。
阈值 \(k\) 将像素分为两类 \(C_0\)(\(\leq k\))和 \(C_1\)(\(>k\)):
- \(\omega(k) = \sum_{i=0}^{k} p_i\)(\(C_0\) 的概率),\(\mu(k)=1-\omega(k)\)(\(C_1\) 的概率)
- \(m(k) = \sum_{i=0}^{k} i \cdot p_i\)(\(C_0\) 的累积均值)
类间方差:
遍历所有 \(k = 0, 1, \ldots, L-1\),选择使 \(\sigma_B^2(k)\) 最大的 \(k\) 作为最优阈值。
Otsu 方法的优点与局限
优点:全自动,无需设置初值;数学上基于类间方差最大化,具有最优性。
局限:当目标与背景面积比极度悬殊时,阈值会向面积大的一方偏移;对于单峰直方图效果差。
4.4 利用平滑改善全局阈值
先对图像进行平滑处理,再使用 Otsu 方法,可以:
- 使直方图的峰更尖锐、谷更深
- 抑制噪声导致的虚假峰
- 显著改善分割质量
4.5 利用边缘特征改善阈值选择
如果只依赖灰度信息,结果容易受目标和背景相对大小的干扰。改进策略:
- 计算梯度幅值图像
- 对梯度幅值取高分位数阈值(如 99.7%)→ 获得边缘掩膜
- 将原图与边缘掩膜相乘 → 仅保留靠近边缘的像素
- 对这些像素计算直方图 → 峰更分离、谷更深
- 基于新直方图应用 Otsu
原理:靠近边缘的像素更均匀地来自目标和背景两类,避免了面积不平衡导致的直方图偏斜。
4.6 多阈值分割
对具有多个目标类别的图像使用多个阈值:
双阈值(Dual Threshold):
4.7 自适应阈值分割
当光照不均匀时,全局阈值失效。自适应方法:
-
分块处理:将图像划分为子图像,为每个子图像独立确定阈值
-
分类处理:灰度方差 \(< T_1\) 的子图像:不包含目标边界 → 合并后统一处理;灰度方差 \(> T_2\) 的子图像:包含目标边界 → 独立阈值处理
-
基于局部图像属性:\(T = T(x,y, p(x,y))\),利用局部标准差和均值动态确定阈值
五、区域分割(Region-Based Segmentation)
5.1 区域生长(Region Growing)

将像素或子区域基于预定义准则合并为更大的区域:
基本步骤:
- 选择一组种子点
- 将与种子点灰度相似的邻近像素附加到种子区域
- 迭代扩张直到满足停止条件
关键要素:
| 要素 | 说明 |
|---|---|
| 种子点的选择 | 手动交互 / 自动检测 |
| 相似性准则 | 灰度差 \(\lvert f(P) - \mu_R\rvert \leq T\) / 纹理 / 矩 |
| 连通性 | 4-邻域 / 8-邻域 |
| 停止规则 | 无新像素加入 / 达到尺寸上限 |
区域生长的缺陷
对种子点敏感;当目标边界模糊时容易发生泄漏(Leakage)——区域通过弱边界扩张到相邻结构中,产生过分割。
5.2 区域分裂与合并(Region Splitting & Merging)

使用四叉树(Quadtree)结构:
分裂:
- 从整个区域开始
- 如果 \(Q(R) = \text{FALSE}\)(不均匀),将区域分为四个象限
- 对每个象限递归应用此规则
- 直到达到最小子区域尺寸
合并:
- 如果仅分裂,相邻且属性相同的区域不会被合并
- 检查相邻区域,如果 \(Q(R_i \cup R_j) = \text{TRUE}\),则合并
算法:
- 若 \(Q(R) = \text{FALSE}\),分裂为 4 个不相交象限
- 对满足 \(Q\) 的相邻区域进行合并
- 无可合并和可分裂时停止
5.3 分水岭算法(Watershed Segmentation)
将灰度图像视为 3D 地形(\(x\) 坐标、\(y\) 坐标、灰度值为高度):
| 地形概念 | 图像对应 |
|---|---|
| 区域极小值 | 图像中灰度最低的均匀区域 |
| 集水盆地(Catchment Basin) | 水滴会落入同一个极小值的区域 |
| 分水岭线(Watershed Line) | 水滴等概率落入多个极小值的点——即分割边界 |
原理:
-
在每个区域极小值处钻孔
-
让水以均匀速率从孔中上升,淹没整个地形
-
当来自不同集水盆地的水即将汇合时,建坝阻止合并
-
坝的边界即为分水岭线
算法步骤(按灰度级迭代):
-
从最低灰度值开始
-
对于每个灰度级 \(k\):
-
若像素仅邻接一个已有区域→加入该区域
-
若像素邻接多个已有区域→标记为边界
-
若像素无邻接区域→创建新区域



分水岭的过度分割问题
由于噪声和梯度的局部不规则性,标准分水岭极易产生过度分割(Over-segmentation)。解决方案:
-
在梯度图像而非原始图像上运行(梯度图直接反映边缘位置)
-
使用标记控制(Marker-Controlled)分水岭——通过手动标记前景和背景种子强制控制注水起点

六、聚类分割方法(Clustering-based Segmentation Methods)
边缘检测和区域分割之外,聚类是另一类重要的分割手段——将像素按特征空间(灰度、颜色、空间位置等)的相似性自动分组,无需手动标注训练数据。
6.1 聚类分割的核心思想
将 \(N\) 个像素映射到 \(d\) 维特征空间中的点 \(\mathbf{x}_i \in \mathbb{R}^d\),聚类将数据集划分为 \(K\) 个互不相交的子集 \(C_1, C_2, \ldots, C_K\)。核心目标是最小化类内平方误差(Within-cluster Squared Error):
其中 \(\mathbf{m}_k\) 是第 \(k\) 个聚类 \(C_k\) 的均值向量(聚类中心)。
聚类分割与阈值分割
阈值分割仅在一维灰度直方图上寻找最优分界点,只利用灰度信息;聚类分割可在多维特征空间(RGB 三通道、灰度 + 空间坐标、灰度 + 纹理特征等)中同时运作,能利用更丰富的信息实现更精细的分割。
6.2 K-means聚类(K-Means Clustering)

6.2.1 基本原理
K-means 是最经典的无监督聚类算法。将 \(N\) 个 \(d\) 维特征向量划分为 \(K\) 个聚类,通过迭代优化使类内距离最小、类间距离最大。
核心假设:各聚类在特征空间中为紧致的球形分布。
6.2.2 算法步骤
设迭代计数为 \(ic\),初始值 \(ic = 1\):
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1. 初始化 | 随机选择 \(K\) 个初始聚类中心 \(\mathbf{m}_1^{(1)}, \ldots, \mathbf{m}_K^{(1)}\) | 上标表示迭代次数 |
| 2. 分配样本 | \(\mathbf{x}_q \to C_i\),若 \(\|\mathbf{x}_q - \mathbf{m}_i\|^2 < \|\mathbf{x}_q - \mathbf{m}_j\|^2\),对所有 \(j \neq i\) | 每个样本分配到距离最近的聚类中心 |
| 3. 更新中心 | \(\mathbf{m}_k^{(ic+1)} = \frac{1}{\lvert C_k \rvert} \sum_{\mathbf{x} \in C_k} \mathbf{x}\) | 新中心 = 当前聚类所有样本的均值 |
| 4. 检查收敛 | 计算残差 \(E = \sum_{i=1}^{K} \|\mathbf{m}_i^{(ic+1)} - \mathbf{m}_i^{(ic)}\|\) | 若 \(E < T\)(预设阈值),停止;否则 \(ic \leftarrow ic+1\),返回步骤 2 |
收敛性:目标函数 \(D\) 在每次迭代中单调递减且有下界(\(\geq 0\)),因此 K-means 保证收敛到局部最优解。但由于 \(D\) 是非凸函数,最终结果依赖初始化。
6.2.3 K 值的选择
K-means 必须事先指定 \(K\),而最优 \(K\) 往往未知。常用两种方法:
(1)L 曲线法(Elbow Method / L-Curve)
绘制类内平方误差和 \(D\) 随 \(K\) 的变化曲线:
- \(D\) 随 \(K\) 增大单调递减(聚类越多,每个聚类越小,类内误差自然越小)
- 寻找曲线的"肘部"(Elbow Point)——下降速率由快变慢的转折点
- 肘部对应的 \(K\) 被认为是最优聚类数
- 若曲线平滑无明显肘部,则 L 曲线法不适用
(2)轮廓分析(Silhouette Analysis)
对每个样本 \(\mathbf{x}_i\) 定义轮廓系数(Silhouette Coefficient):
其中:
| 参数 | 全称 | 含义 |
|---|---|---|
| \(a_i\) | 凝聚度(Cohesion) | 样本 \(\mathbf{x}_i\) 与同聚类内所有其他样本的平均距离 |
| \(b_i\) | 分离度(Separation) | 样本 \(\mathbf{x}_i\) 与最近邻聚类中所有样本的平均距离 |
轮廓系数的解读:
使用方式:对不同 \(K\) 分别运行 K-means,选择使平均轮廓系数最大化的 \(K\);同时可绘制各 \(K\) 下的轮廓图,直观检查每个聚类的凝聚质量。
6.2.4 在医学图像中的应用
- 多器官 CT 分割:将腹部 CT 像素按灰度聚类为空气、脂肪、软组织、肝脏、骨骼
- 脑组织粗分类:将 MRI 脑图像分为白质、灰质、脑脊液
- 肿瘤区域初步检测:在增强 CT/MRI 中通过聚类分离高增强区域
- 与精细分割方法级联:K-means 的粗分割结果作为活动轮廓、图割等方法的初始化
- 模糊 C 均值(FCM)变体:允许像素以隶属度(membership)属于多个聚类,更好地处理部分体积效应(Partial Volume Effect)
6.3 SLIC 超像素分割(Simple Linear Iterative Clustering)
6.3.1 什么是超像素
超像素(Superpixel) 是由像素组成的、具有感知意义的原子区域内部,像素在颜色、纹理和空间位置上具有高度一致性。超像素将百万级像素压缩为数百至数千个超像素,大幅降低后续处理的计算复杂度。
SLIC 是 K-means 聚类在五维特征空间中的高效变体,也是目前应用最广泛的超像素生成算法。
6.3.2 基本原理——五维特征空间
每个像素被表示为一个五维特征向量(在 CIELAB 颜色空间中):
其中 \((l, a, b)\) 是 CIELAB 颜色分量(感知均匀的颜色空间),\((x, y)\) 是像素的空间坐标。
6.3.3 复合距离度量
SLIC 的复合距离同时考虑颜色相似性和空间邻近性:
颜色距离(CIELAB 空间): $$ d_c = \sqrt{(l_j - l_i)^2 + (a_j - a_i)^2 + (b_j - b_i)^2} $$
空间距离: $$ d_s = \sqrt{(x_j - x_i)^2 + (y_j - y_i)^2} $$
归一化复合距离: $$ D' = \sqrt{\left(\frac{d_c}{m}\right)^2 + \left(\frac{d_s}{S}\right)^2} $$
| 参数 | 含义 | 说明 |
|---|---|---|
| \(S\) | 网格间距 | \(S = \sqrt{N/K}\),相邻超像素中心的期望距离 |
| \(m\) | 紧凑度参数 | 控制颜色 vs 空间的相对权重 |
| \(N\) | 总像素数 | 图像总像素数目 |
| \(K\) | 期望超像素数 | 用户唯一需要指定的参数 |
- \(m\) 越大 → 空间权重越大 → 超像素越紧凑(但边界贴合度下降)
- \(m\) 越小 → 颜色权重越大 → 超像素越贴合图像真实边缘(但形状可能不规则)
6.3.4 SLIC vs 标准 K-means 的关键区别
| 方面 | 标准 K-means | SLIC |
|---|---|---|
| 特征空间 | 仅颜色/灰度(1D~3D) | 颜色 + 空间坐标(5D) |
| 搜索范围 | 整幅图像的所有像素 | 仅聚类中心周围 \(2S \times 2S\) 局部邻域 |
| 距离度量 | 纯颜色/灰度欧氏距离 | 颜色距离 + 空间距离的加权组合 |
| 计算复杂度 | \(O(NKt)\) | \(O(N)\)(每像素仅比较邻域内几个中心) |
| 输出 | 不规则像素聚类(空间可能碎片化) | 紧凑且规则的空间连续超像素 |
6.3.5 算法步骤
步骤 1:网格初始化
在图像上以间距 \(S = \sqrt{N/K}\) 均匀采样 \(K\) 个聚类中心。将每个中心移动到其 \(3 \times 3\) 邻域内梯度最小的位置,避免中心落在强边缘上。
步骤 2:局部搜索分配
对于每个聚类中心,仅在其 \(2S \times 2S\) 局部邻域内搜索像素。每个像素计算到覆盖其位置的所有聚类中心的 \(D'\),分配给 \(D'\) 最小的中心。
步骤 3:更新聚类中心
新的中心 = 属于该聚类的所有像素的五维均值。
步骤 4:收敛检查
计算聚类中心在两次迭代间的平均位移。若位移小于阈值(或达到最大迭代次数,通常 10 次即收敛),停止;否则返回步骤 2。
步骤 5:后处理
将面积过小的孤立超像素(通常 < 期望大小的 1/4)合并到最近邻超像素中,确保各超像素具有合理的规模。
7.3.6 典型参数设置
| 参数 | 典型值 | 说明 |
|---|---|---|
| \(K\) | 100 ~ 4000 | 根据应用选择,超像素越多→尺寸越小→细节保留越好 |
| 迭代次数 | 10 | 由于网格初始化提供了良好起点,收敛极快 |
| 紧凑度 \(m\) | 10 ~ 40 | CIELAB 空间中的典型设置 |
7.3.7 应用场景
- 预处理降维:将像素级操作(百万级)降为超像素级操作(数百~数千),加速图割(Graph Cut)、条件随机场(CRF)等
- 交互式分割:用户点击或涂画几个超像素即可快速完成分割
- 目标识别与检测:以超像素为基本处理单元提取特征和分类
- 语义分割前端:超像素作为图模型(Graph Model)的节点
- 医学图像:病理图像细胞区域分割、皮肤镜病灶分割、器官边界预提取
七、本章所有分割方法的优缺点详细总结
7.1 不连续性检测方法
7.1.1 点检测(Point Detection)
优点:
- 实现极为简单:仅需一个 \(3 \times 3\) Laplacian 核卷积和阈值判断,几行代码即可完成
- 计算速度极快:单次卷积操作,时间复杂度 \(O(N)\)(\(N\) 为像素总数)
- 对孤立点响应强:在均匀背景上的孤立亮点或暗点处产生高响应
- 无需先验知识:不需要训练数据、模板或参数模型
- 可检测任意方向的孤立点:Laplacian 核具有旋转不变性(各向同性)
- 阈值可控:通过调整检测阈值可以灵活控制敏感度(低阈值→更多候选点;高阈值→仅最强点)
缺点:
- 对噪声极度敏感:单一噪声像素与孤立点在 Laplacian 响应上无法区分,噪声稍大即产生大量虚警
- 无法区分点的类型:亮点、暗点、噪声点在 Lapacian 响应幅值上完全相同(仅靠符号区分亮/暗)
- 无法确定点的尺度:\(3 \times 3\) 核仅响应单像素尺度的点,对稍大的斑点(blob)响应衰减
- 无方向选择性:无法判断点的方向性特征(点本身无方向,但无法区分点与短线)
- 对线结构产生弱响应:Laplacian 核在线上也产生非零响应(虽然比在点上弱),可能造成混淆
- 仅适用于极简单场景:在自然图像或医学图像中,纹理、噪声、细小结构使点检测几乎不可用
7.1.2 线检测(Line Detection)
优点:
- 能够检测特定方向的细线:四个方向的掩膜分别对水平、垂直、+45°、-45° 方向的一个像素宽线条产生最大响应
- 方向信息明确:通过比较四个方向掩膜的响应大小,可以确定线的局部方向
- 实现简单、计算高效:四个 \(3 \times 3\) 卷积,均可并行计算
- 掩膜系数和为零:在均匀灰度区域响应为零,天然抑制平坦区域
- 可检测血管、神经纤维等线性结构:在医学图像中有直接的应用价值
- 阈值可控:通过调整检测阈值灵活控制灵敏度
缺点:
- 仅对恰好一个像素宽的线响应最强:线的宽度偏离 1 像素时响应迅速衰减
- 仅能检测四个固定方向:45° 间隔的方向量化较粗糙,实际线的方向是连续的
- 对线的曲率不敏感:弯曲的线在一个局部窗口内可能不匹配任何一个方向掩膜
- 对噪声敏感:噪声产生的随机灰度突变可能被误检为线
- 无法区分线与阶梯边缘:某些方向掩膜对台阶边缘也有非零响应
- 灰度对比度依赖:低对比度的细线(如微血管)响应弱,可能被漏检
- 多尺度问题:不同宽度的线需要不同尺寸的掩膜
8.2 边缘检测算子
7.2.1 一阶梯度算子(Sobel / Prewitt / Roberts)
优点:
- 计算简单高效:\(3 \times 3\) 卷积(Roberts 为 \(2 \times 2\)),时间复杂度 \(O(N)\),适合实时处理
- 能同时提供梯度幅值和方向:幅值 \(\sqrt{G_x^2 + G_y^2}\) 指示边缘强度,方向 \(\arctan(G_y/G_x)\) 指示边缘法向
- Sobel 带有平滑效果:中心权值 \(2\) 相当于在垂直于导数方向上的平滑,对噪声有一定抑制
- Prewitt 各向权重均匀:在三个方向上完全对称,计算上比 Sobel 稍简单
- Roberts 核极小:\(2 \times 2\) 核对极细边缘的定位偏差最小
- 实现极为广泛:几乎所有图像处理库均提供开箱即用的实现
- 无参数(除阈值外):直接应用即可,无需训练或调参
- 可用于计算梯度幅值图:作为 Canny 等高层算法的前级输入
缺点:
- 对噪声敏感:仅靠 \(3 \times 3\) 窗口内的平滑不足以抑制较强噪声,噪声像素被放大为伪边缘
- 产生较粗的边缘响应:在斜坡边缘(灰度渐变)上响应跨越多个像素,边缘定位不够精确
- Sobel 对方向有轻微偏向:\(3 \times 3\) 核在 0°、45°、90°、135° 四个方向上的响应强度不完全相等
- Prewitt 无中心权值加重:对中心像素和邻域像素一视同仁,边缘定位精度不如 Sobel
- Roberts 极易受噪声干扰:\(2 \times 2\) 核太小,没有任何平滑能力,噪声环境几乎不可用
- 缺少后处理机制:仅输出梯度幅值图,需额外步骤(如阈值化、非极大值抑制)才能获得单像素宽边缘
- 对尺度不敏感:固定 \(3 \times 3\) 窗口只能检测特定尺度的边缘,大尺度模糊边缘响应弱
- 无法处理纹理边缘:纹理区域产生密集的高梯度响应,无法区分纹理和真正目标边界
7.2.2 二阶导数算子(Laplacian / LoG)
Laplacian 优点:
- 各向同性:旋转不变,对任意方向的边缘响应一致
- 零交叉(Zero-Crossing)可精确定位边缘:理论上零交叉位置对应于边缘的精确位置(在无噪声的理想阶梯边缘处)
- 能提供边缘过渡方向信息:零交叉的符号变化方向指示从亮到暗还是从暗到亮
- 对孤立点和细线的检测能力强:Laplacian 在点和细线上产生强烈的双极响应
- 无需求梯度方向:一个核即可得到全方向的边缘信息
Laplacian 缺点:
- 对噪声极度敏感:二阶导数对噪声的放大远强于一阶导数(噪声的二阶导比一阶导更不稳定)
- 产生双边缘响应:在阶梯边缘处产生正-负双峰,增加了边缘解释的难度
- 无法提供边缘方向信息:各向同性的性质意味着丧失了所有方向信息
- 双边缘在斜坡边缘处间距较大:对于灰度渐变的斜坡边缘,正负峰间距随斜坡宽度增大而增大,定位模糊
- 对细线和点的响应可能与边缘混淆:细线/点的双极响应与边缘的双峰响应在形态上不易区分
- 单独使用几乎不可行:必须与高斯平滑结合(即 LoG)才有实用价值
LoG 优点:
- 先平滑后求导:高斯平滑抑制噪声,二阶导提供精确边缘定位,两者集成在一个卷积核中
- 零交叉定位精度高:理论分析和实践均表明 LoG 的零交叉定位精度优于一阶梯度的极值定位
- 高斯尺度 \(\sigma\) 可选:通过调整 \(\sigma\) 可以检测不同尺度的边缘(大 \(\sigma\) 检测粗边缘,小 \(\sigma\) 检测细边缘)
- 墨西哥草帽形状可解释:核的形状直观对应"中心兴奋-周围抑制"的感受野模型
- 闭合边缘:LoG 的零交叉倾向于形成闭合曲线,有利于分割出完整的目标边界
LoG 缺点:
- 计算量较大:LoG 核的尺寸通常需要 \(\sim 6\sigma \times 6\sigma\),远大于 \(3 \times 3\) 的一阶核
- 大 \(\sigma\) 导致边缘位置偏移:过强的高斯平滑会使边缘位置向灰度较低的一侧漂移
- 检测不到低对比度边缘:高斯平滑在抑制噪声的同时也削弱了低对比度边缘的信号
- 产生虚假零交叉:平滑后的灰度波动仍可能产生零交叉,特别是在均匀区域
- 单尺度限制:固定的 \(\sigma\) 无法同时检测不同尺度的边缘,需要多尺度策略
- 无法直接提供边缘强度:零交叉位置没有幅值信息,需额外计算梯度幅值来评估边缘强弱
7.2.3 Canny 边缘检测器
优点:
- 三重优化准则:同时优化信噪比(检测率)、定位精度(边缘不偏移)、单响应(每个边缘只检测一次),是目前理论上最优的线性边缘检测器
- 非极大值抑制(NMS):沿梯度方向抑制非最大值 → 边缘宽度为单像素,定位极其精准
- 双阈值滞后连接(Hysteresis Thresholding):高阈值保证强边缘的高置信度,低阈值连接弱但连续的边缘 → 既抗噪声又不丢失弱连续边缘
- 边缘连续性好:滞后连接机制使 Canny 输出的边缘断裂最少,优于任何单阈值方法
- 广泛验证:Canny 自 1986 年提出以来,经历了近 40 年的实践检验,仍是边缘检测的事实标准和 benchmark
- 参数物理意义明确:\(\sigma\)(平滑尺度)、\(T_{low}\)、\(T_{high}\)(双阈值)均可被直觉理解
- 有大量优化实现:OpenCV、scikit-image 等均提供高效实现
缺点:
- 三个参数需手动设置:\(\sigma\)、\(T_{low}\)、\(T_{high}\) 的选取对结果影响巨大,且无统一的自适应方案;通常 \(T_{high}/T_{low}\) 取 \(2:1 \sim 3:1\)
- 双阈值间的边缘断裂:低阈值边缘如果在空间上未能与高阈值边缘连通,会被丢弃——弱但连续的边缘可能因此丢失
- 计算复杂度较高:五步流水线(高斯平滑 → 梯度 → NMS → 双阈值 → 滞后连接)比简单梯度算子慢一个数量级
- 对纹理区域产生密集边缘:Canny 无法区分纹理边缘和目标边缘,纹理区域可能输出大量无意义的边缘片段
- 不保证闭合轮廓:滞后连接只能"延伸"而不能"闭合"——边界间隙仍需后处理填补
- 小尺度细节可能被平滑丢失:高斯平滑的尺度 \(\sigma\) 决定了最小可检测边缘的尺度,小于 \(\sigma\) 的边缘结构会被抹去
- 对参数敏感:同一组参数在不同图像上可能产生质量迥异的边缘图,需要针对具体图像调整
7.2.4 活动轮廓 / Snakes(Active Contour)
优点:
- 能产生闭合、平滑的边界曲线:天然保证分割结果的拓扑整洁性,无需后处理连接片段
- 能够利用高层先验知识:通过能量函数的设计,可灵活融入平滑度约束、形状先验、灰度模型、用户交互等
- 对噪声和边界间隙具有鲁棒性:内部平滑能量使曲线在穿越噪声区域或短暂边界缺失时保持连续
- 亚像素精度:连续曲线模型的定位精度高于像素级离散方法
- 交互灵活:用户可以通过修改初始曲线或添加约束能量来引导分割
- 数学框架统一:能量最小化框架将分割问题转化为优化问题,理论清晰
- 对初始轮廓在一定范围内具有鲁棒性:初始轮廓不必完全精确,Snakes 能在局部范围内收敛到真实边界
- 可扩展到 3D(Active Surface):框架可自然地推广到三维表面演化
缺点:
- 对初始轮廓位置敏感:初始轮廓必须靠近目标边界(通常需在目标边缘的"捕获范围"内),否则能量函数的局部极值陷阱会导致收敛到错误位置
- 容易陷入局部极小值:能量函数高度非凸,梯度下降式的演化只能找到局部最小值
- 无法自动处理拓扑变化:经典 Snakes 无法在演化过程中自动分裂或合并——如果目标有孔洞或由多个分离部分组成,需要复杂的重新参数化
- 对弱边缘/低对比度边界的捕获力弱:外部能量(图像力)在弱边缘处很小,Snakes 可能"滑过"目标边界
- 参数调优复杂:内部能量权重(\(\alpha\) 张力、\(\beta\) 刚度)和外部能量权重需要根据图像内容手动调整
- 计算量大:每次迭代需要求解偏微分方程(PDE),对于高分辨率图像或长轮廓,速度较慢
- 对凹形边界的收敛效果差:标准 Snake 的弹力(内部能量)倾向于拉直轮廓,难以进入深凹区域
- 需要用户交互:初始轮廓的绘制和参数选择通常需要人工参与,难以全自动处理大批量图像
7.3 阈值分割方法
7.3.1 迭代全局阈值
优点:
- 算法极为简单:\(\frac{\mu_1 + \mu_2}{2}\) 的迭代更新规则仅有四则运算,几分钟即可手动完成
- 收敛速度极快:通常 3~5 次迭代即收敛,时间复杂度 \(O(N)\)
- 自适应地计算阈值:无需用户指定阈值,算法根据图像内容自动确定
- 对双峰直方图的图像效果良好:当目标和背景的灰度分布分离清晰时,迭代阈值接近理论最优
- 内存占用极小:仅需存储当前阈值和两个均值
- 实现零门槛:无需任何数学库依赖
缺点:
- 仅适用于双峰直方图:若图像仅含一个峰(如全是背景),或超过两个峰(如多器官 CT),算法无意义或失败
- 对初始阈值有轻微依赖:虽然通常取均值即可,但极端初始值可能导致收敛到次优的局部平衡点
- 不保证全局最优:算法的收敛点仅是局部均值平衡点,不一定与 Otsu 的类间方差最大化阈值一致
- 对光照不均匀极敏感:全局阈值无法处理图像各区域灰度分布有系统偏移的情况
- 对噪声敏感:噪声使直方图的峰变宽、谷变浅,迭代阈值可能偏移
- 小目标可能被"淹没":若目标像素数远小于背景像素数,目标均值对全局阈值的影响微弱,阈值偏向背景侧
- 没有分割质量的量化指标:算法给出阈值但不提供该阈值"有多好"的信息
7.3.2 Otsu 方法(大津法)
优点:
- 全自动、无参数:无需指定阈值或任何参数,算法从直方图自动计算全局最优阈值
- 数学上是最优全局阈值:在类间方差准则下,Otsu 阈值是数学最优解——穷举所有可能的阈值后选取最大化 \(\sigma_B^2\) 的那个
- 对双峰直方图效果极佳:当目标和背景在灰度上分明时,Otsu 阈值稳定可靠
- 计算效率高:\(O(L^2)\) 或 \(O(L)\)(使用累积统计量优化),\(L\) 为灰度级数(256),完全可接受
- 分割质量可量化:\(\sigma_B^2\) 本身可作为"可分割性"的度量——\(\sigma_B^2\) 越大说明两类分离越好
- 有严格的统计推导:方法源自 Fisher 判别分析,理论基础坚实
- 可扩展到多阈值:Otsu 方法可自然地推广到 \(K\) 类分割(\(K-1\) 个阈值)
缺点:
- 仅当直方图为双峰时有效:若直方图为单峰或多峰,Otsu 仍会给出一个阈值,但该阈值在物理上无意义
- 对小目标不敏感:Otsu 最大化类间方差,当目标像素远少于背景时,类间方差的计算受背景主导,阈值偏离理想位置
- 仅考虑灰度分布,不考虑空间信息:相邻像素的空间关系和纹理信息完全被忽略
- 光照不均匀时完全失效:全局阈值无法处理不同区域灰度分布偏移的情况(如 MRI 的 bias field)
- 无法处理同灰度不同语义的组织:不同组织可能灰度相同但在空间上分离——Otsu 无法区分
- 噪声使直方图不呈现明显双峰时性能下降:噪声模糊了峰谷结构
- 多阈值扩展的计算量随 \(K\) 指数增长:\(K-1\) 个阈值的穷举搜索复杂度为 \(O(L^{K-1})\)
7.3.3 自适应阈值(Adaptive Thresholding)
优点:
- 能够处理光照不均匀:每个子区域独立计算阈值,局部光照变化被区域化处理——这是其相对于全局阈值法的最大优势
- 对阴影和渐变有强鲁棒性:文档扫描、眼底图像、组织切片等光照不均场景的首选
- 实现简单:将图像分块,每块独立运行全局阈值(如均值或 Otsu),逻辑直观
- 子区域大小可调节:通过调节子图像尺寸,在局部自适应性和统计稳定性之间权衡
- 可结合平滑改善结果:对阈值矩阵进行平滑插值,避免子区域边界处出现二值化跳变线
- 适合批量处理:同一采集条件下的图像组可使用相同的子区域划分策略
缺点:
- 子图像尺寸的选择是关键且困难:太小则统计不稳定(几个像素上的阈值无意义),太大则丧失局部自适应性——需反复试验
- 子区域边界处可能出现伪影:相邻子区域用不同阈值二值化,区域边界可能产生跳变线或接缝
- 子区域内小目标可能被抹除:如果子区域内部全部为背景(无目标像素),该区域的 Otsu 阈值无意义
- 计算量比全局阈值大:需对每个子区域独立计算阈值,复杂度为子区域数量的倍数
- 参数增多:子区域尺寸、是否重叠、阈值方法选择等都需要用户决策
- 极低对比度子区域失效:局部对比度过低时,子区域内无法区分目标和背景
7.4 区域分割方法
7.4.1 区域生长(Region Growing)
优点:
- 能够分割具有相同灰度特性的连通区域:天然保证分割结果的空间连续性(这是阈值法做不到的)
- 概念直观、易于理解:从种子点向外"扩张"的过程符合人类对区域的理解
- 可以利用多种相似性准则:灰度、纹理、颜色、边缘信息等均可纳入生长准则
- 多种子策略可处理多目标场景:不同的种子点各自生长出不同的区域
- 对噪声的局部容忍性:某个像素是否被加入取决于它与区域均值(而非全局阈值)的比较,局部灰度波动可能被容忍
- 可用于交互式分割:用户手动点击种子点,算法自动完成剩余工作
缺点:
- 对种子点的位置和数量高度敏感:种子的选取直接决定分割结果——种子选偏则整个区域偏移,漏选种子则遗漏目标
- 易发生泄漏(Leakage):目标边界模糊时,生长可能通过弱边界泄漏进入相邻结构
- 对噪声敏感
- 对生长停止准则(阈值)高度敏感:阈值太小则区域欠生长(不完整),太大则过生长(泄漏)
- 生长顺序依赖:区域最终的形状和范围与像素被处理的顺序有关(尤其在 8-邻域 vs 4-邻域的选择上)
- 计算效率中等:需要维护候选像素队列和区域统计量,不如阈值法即时
- 缺乏全局优化:生长是贪心算法——每一步做局部最优决策,不保证全局最优
- 难以处理灰度渐变区域:目标内部灰度缓慢变化时,后面的像素可能因为累积漂移而不满足"与初始种子相似"的准则
- 多区域同时生长需要复杂的合并规则:当两个生长中的区域相遇时,需要决定是否合并
7.4.2 区域分裂与合并(Split & Merge)
优点:
- 无需种子点:从整幅图像开始自动分裂,解决了区域生长中种子选择的难题
- 自动确定区域数量:分裂过程自然地发现图像中的均匀区域数量和位置
- 四叉树结构高效:数据结构紧凑且天然支持分层表示,分裂和合并操作均有标准实现
- 均匀性准则 \(Q(R)\) 可灵活定义:可基于灰度方差、灰度范围、纹理特征等
- 分裂与合并互补:分裂保证找到所有均匀子区域,合并保证相邻相似区域不被过度分割
- 分割结果具有层次性:不同层级的四叉树节点对应于不同粒度的分割
缺点:
- 分裂产生方块状边界:四叉树分裂天然产生水平和垂直的直线边界,实际物体边界极少是完美的水平和垂直线——分割边界呈锯齿状
- 计算量大:需递归检查每个子区域的 \(Q(R)\),合并阶段需检查所有相邻区域对,复杂度高于区域生长
- 均匀性准则 \(Q(R)\) 的阈值难以设定:方差阈值等参数对分割结果影响巨大,且无自动确定方案
- 最小子区域尺寸需预设:太小则计算量爆炸且过分割,太大则遗漏小目标
- 四叉树结构产生的边界在子区域边缘处不连续:不同层级的子区域拼接在一起,边界过渡生硬
- 对灰度渐变区域不适应:灰度渐变区域内方差可能很大,导致过度分裂
- 合并阶段的实现复杂度高:需要维护邻接图(Region Adjacency Graph, RAG),数据结构比区域生长复杂得多
7.4.3 分水岭分割(Watershed)
优点:
- 产生闭合的、单像素宽的连续分割边界:分水岭线天然是封闭曲线,无需边缘连接后处理
- 边界定位精度高:分水岭线精确位于相邻集水盆地之间的"山脊"上,对应于图像边缘
- 能自然分离相互接触的物体:即使两个物体紧邻且灰度相似,分水岭线仍能提供精确的分割线
- 计算效率较高:核心操作仅为像素按灰度排序和逐级泛洪,时间复杂度可控
- 基于灰度相对顺序而非绝对值:一定程度的全局灰度偏移不影响分割结果
- 与梯度图像结合效果更好:在梯度幅值图像上运行分水岭,边界定位比原始灰度图像更精确
- 标记控制版本可有效抑制过分割:通过人为/自动指定允许的局部极小值,分割从不可用变为高度可控
- 无需训练数据或先验统计模型:完全基于图像几何特征,是纯无监督方法
- 分割结果直观可解释:地形学注水模型使算法行为容易被直觉理解
缺点:
- 对噪声极度敏感——原始算法几乎总会过分割:噪声产生大量虚假局部极小值 → 产生数百甚至数千个微小无意义区域,直接使用完全不可行,会发生过分割
- 必须依赖标记提取来控制过分割:标记控制的预处理步骤(阈值、形态学、距离变换等)显著增加了整体流程的复杂度和调参负担
- 标记质量直接决定分割质量:标记缺失 → 目标被邻近区域吞并;标记包含背景 → 产生虚假目标;质量无法保证
- 对纹理丰富区域极为不利:纹理的灰度波动产生密集的伪极小值,标记提取极为困难
- 难以处理灰度不均匀(Bias Field):同一组织内部的灰度漂移产生虚假极小值,标记控制也难以完全补偿
- 缺乏全局形状约束:完全由局部灰度地形驱动,不考虑目标期望形状(如肝脏的球形约束、血管的管状约束等)
- 目标内部存在多个极小值时无法自动合并:需要额外的高层知识来判定哪些盆地应该属于同一个解剖结构
- 低对比度边界的分水岭线位置不稳定:相邻集水盆地灰度差异极小时,水的汇合位置受噪声影响大
- 对标记提取中的参数极其敏感:阈值、形态学结构元素大小、平滑程度等参数环环相扣,调参工作量巨大
- 很难处理"无边缘"的场景:目标与背景逐渐过渡时(如部分体积效应导致的模糊边界),没有明显的山脊来定位分水岭
7.5 聚类分割方法
7.5.1 K-均值聚类(K-Means)
优点:
- 原理简单、实现容易:仅涉及距离计算和均值更新两个基本操作,短短十几行代码即可实现完整算法
- 计算速度快:时间复杂度 \(O(NKdt)\)(\(N\) 样本数,\(K\) 聚类数,\(d\) 特征维数,\(t\) 迭代次数),\(t\) 通常很小(< 100)
- 内存占用小:仅需存储 \(K\) 个 \(d\) 维中心和 \(N\) 个标签,空间复杂度 \(O(N + Kd)\)
- 可推广到多维特征空间:除了灰度值,可纳入 RGB 颜色、多光谱通道、纹理特征等多维信息
- 收敛性有理论保证:目标函数 \(D\) 在每次迭代单调递减且存在下界,算法必然收敛
- 无监督、无需训练标注:可直接对未知图像进行分割,无数据标注成本
- 算法变体丰富:模糊 C 均值(FCM)允许多聚类软归属(处理 Partial Volume Effect)、K-medoids 用实际数据点为中心增强对离群点的鲁棒性
- 生态成熟:scikit-learn、OpenCV、MATLAB 等均有高度优化的实现
缺点:
- 必须预先指定聚类数 \(K\):\(K\) 的选择对最终结果影响极大,而最优 \(K\) 往往未知——L 曲线法和轮廓分析只是辅助,不能完全消除主观判断
- 对初始聚类中心高度敏感:不同随机初始化可能收敛到截然不同的局部最优解——实践中常需多次(10~100 次)随机初始化并选最优结果,成倍增加计算量
- 对离群点/异常值极其敏感:单个极端离群像素(如金属伪影、钙化点)会显著拉动聚类中心——K-medoids 变体可部分缓解此问题
- 只能检测球形/凸形聚类:真实数据在特征空间的分布可能为非凸形状(如月牙形、环形),K-means 无力处理
- 假设各聚类具有相似的方差:大方差聚类会"吸收"小方差聚类的样本
- 仅收敛到局部最优:\(D\) 非凸,梯度下降式迭代不保证全局最小值
- 类别不平衡时表现差:小聚类被大聚类"淹没",聚类中心向大聚类靠拢
- 完全不考虑空间邻域信息——在图像分割中最致命的缺点:聚类结果在空间上可能是碎片化的——同一聚类标签的像素散布在图像各处,缺乏空间连续性(例如肝脏和脾脏在 CT 中灰度相似,仅靠灰度无法区分)
- 硬分配无法表达部分体积效应:边界像素被强制分配给某一聚类,在医学图像中处理组织过渡时尤其不理想
7.5.2 SLIC 超像素(SLIC Superpixel)
优点:
- 计算效率极高:搜索范围限定在局部 \(2S \times 2S\) 邻域,将复杂度从 \(O(NKt)\) 降至 \(O(N)\)——实际比标准 K-means 快数十到数百倍
- 超像素紧凑且规则:空间坐标纳入距离度量,保证空间连续性——这是相对于 K-means 的根本性改善
- 边界贴合度高:紧凑度参数 \(m\) 合适时,超像素边界与图像真实边缘良好吻合(颜色距离权重使超像素不跨越强边缘)
- 仅需一个主要参数 \(K\)(期望超像素数):使用门槛极低,无需复杂的参数调优
- 显著降低后续处理复杂度:将百万像素压缩为数百至数千超像素,后续图割、CRF、分类等操作的计算量减少 1~2 个数量级
- 网格初始化提供优质起点:通常 10 次迭代即收敛(随机初始化的 K-means 可能需要数百次迭代)
- 紧凑度可控:参数 \(m\) 在"紧凑规则"和"贴合边缘"之间提供灵活权衡
- 广泛的开源实现:scikit-image(
skimage.segmentation.slic)、OpenCV 等均提供生产级实现
缺点:
- 超像素大小由全局参数 \(K\) 预设,无法自适应图像内容:纹理密集区域可能需要更小的超像素,均匀区域可用更大的超像素——SLIC 使用统一尺寸
- 极细长结构(如血管、神经纤维)容易被切断:空间距离惩罚使超像素趋向紧凑,倾向于切断细长的解剖结构
- 紧凑度参数 \(m\) 需根据具体应用手动调整:不同应用对紧凑度和边界贴合度的权衡不同
- 继承了 K-means 的部分缺点:本质是 K-means 的变体,对离群点和灰度不均匀区域仍有一定敏感性
- 灰度不均匀导致超像素尺寸不均:Bias field 导致的灰度漂移使同一组织在不同位置的超像素大小差异大
- 超像素边界不一定与解剖边界重合:低对比度边界或渐进过渡区域的超像素可能跨越真实解剖边界
- 聚类中心可能落在强边缘上:虽然步骤 1 将中心移到梯度最小处,但在边缘密度极高的区域仍有风险
- 2D 算法需专门扩展至 3D:标准 SLIC 是 2D 的,3D 医学图像需要专门的处理
- 参数 \(K\) 与图像内容的关系不直接:用户通常不知道一张图像需要多少个超像素才合适,可能需要多次试错
课后作业

题目 1:Otsu 最优阈值计算(HW4 第1题)
题目:给定图像的灰度直方图如下:
| 灰度级 \(i\) | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|---|
| 像素数 \(n_i\) | 40 | 20 | 50 | 30 | 10 | 30 | 10 | 10 |
使用 Otsu 方法计算使类间方差最大化的最优阈值。
解答:
总像素数 \(N = 40 + 20 + 50 + 30 + 10 + 30 + 10 + 10 = 200\)。
概率 \(p_i = n_i/N\):\(p_0 = 0.20\), \(p_1 = 0.10\), \(p_2 = 0.25\), \(p_3 = 0.15\), \(p_4 = 0.05\), \(p_5 = 0.15\), \(p_6 = 0.05\), \(p_7 = 0.05\)
全局均值 \(m_G = \sum_{i=0}^7 i \cdot p_i = 2.65\)
类间方差公式: $$ \sigma_B^2(k) = \frac{(m_G \cdot P_1(k) - m(k))^2}{P_1(k)(1 - P_1(k))} $$
遍历 \(k = 0, 1, \ldots, 6\):
| \(k\) | \(P_1\) | \(m\) | \(\sigma_B^2\) |
|---|---|---|---|
| 0 | 0.20 | 0 | 1.756 |
| 1 | 0.30 | 0.10 | 2.300 |
| 2 | 0.55 | 0.60 | 2.971 |
| 3 | 0.70 | 1.05 | \(\approx 3.086\) |
| 4 | 0.75 | 1.25 | 2.901 |
| 5 | 0.90 | 2.00 | 1.647 |
| 6 | 0.95 | 2.30 | 0.996 |
最大类间方差出现在 \(k = 3\),最优阈值 \(T = 3\)。
题目 2:局部自适应阈值(HW4 第2题)

题目:将 \(16 \times 16\) 图像分为四个不重叠的 \(8 \times 8\) 子图像,分析每个子图像的局部阈值;写出完整的 \(16 \times 16\) 二值分割结果;判断单一全局阈值能否产生相同结果。
解答:
使用迭代阈值法独立计算四个子区域的局部阈值:
| 子图像 | 局部阈值 |
|---|---|
| 左上角(Top-Left) | \(T_1 \approx 1.24\) |
| 右上角(Top-Right) | \(T_2 \approx 2.25\) |
| 左下角(Bottom-Left) | \(T_3 \approx 3.24\) |
| 右下角(Bottom-Right) | \(T_4 \approx 4.24\) |
单一全局阈值不能产生相同结果。
原因:左上角区域需要被分割为前景的最小灰度值为 \(2.0\),而右下角区域需要被分割为背景的最大灰度值为 \(3.5\)。因此全局阈值 \(T_G\) 需同时满足 \(T_G \leq 2.0\) 且 \(T_G > 3.5\),这在数学上是矛盾的。这说明当图像光照不均匀或不同区域灰度分布偏移时,必须使用局部阈值。
题目 3:Sobel 边缘检测(HW4 第3题)
题目:给定 \(5 \times 5\) 灰度图像:
使用 \(3 \times 3\) Sobel 算子(零填充处理边界),计算 \(G_x\)、\(G_y\)、梯度幅值 \(\sqrt{G_x^2 + G_y^2}\) 以及梯度方向 \(\theta = \arctan(G_y/G_x)\)。
解答:
Sobel 算子的标准形式:
零填充后扩展为 \(7 \times 7\),卷积得到 \(5 \times 5\) 的梯度结果:
(由于原图对称 \(I = I^T\) 且 \(G_y = G_x^T\),\(G_y\) 为 \(G_x\) 的转置。)
梯度幅值(保留一位小数):
对幅值应用迭代阈值法(收敛于 \(T \approx 398.6\)),最终边缘图:
Sobel 边缘检测的完整流程
- 平滑(去噪)→ 2. 计算梯度(\(G_x\), \(G_y\))→ 3. 计算幅值和方向 → 4. 阈值化(提取最终边缘)
实验
实验来源:LAB5(Project 1-3)
Project 1:边缘检测(Edge Detection)
实验内容:利用 Sobel 梯度算子从 T1/T2 脑部 MRI 图像中提取病灶边缘轮廓。
实验原理:
- 5×5 高斯平滑:在 Sobel 之前降低高频噪声
- Sobel 梯度:\(G_x\) 和 \(G_y\) 核卷积 → 梯度幅值 \(M = \sqrt{G_x^2 + G_y^2}\)
- 全局阈值 \(T\):二值化获得初步边缘掩膜
- 移除颅骨边缘:用 25×25 椭圆核腐蚀获得大脑核心区域 → 仅保留内部边缘
- 形态学闭运算:5×5 椭圆核桥接断裂的边缘线段
- 连通域面积过滤:去除小于 150 或大于 3000 像素的噪声区域
结果分析:T2 模态(病灶高信号)效果显著优于 T1(病灶低信号与正常组织对比度低);Sobel 提取的边缘线条断裂不闭合,需要闭运算连接。
Project 2:阈值分割(Thresholding)
实验内容:实现迭代全局阈值法和Otsu 方法,对比在 T1/T2 MRI 上的分割效果。
实验原理:
- 迭代全局阈值法:\(T_{new} = \frac{\mu_1 + \mu_2}{2}\),迭代至 \(|T - T_{new}| < \Delta\)
- Otsu 方法:\(\sigma_B^2 = w_1 w_2 (\mu_1 - \mu_2)^2\),遍历 0-255 找最大值
关键发现:
- 迭代法对初始值不敏感(\(T_{init}=60, 125, 190\) 均收敛到接近值)
- T2 模态中,迭代法 \(T \approx 151.9\),Otsu \(T = 153\),结果高度一致
- T1 模态中无法通过单一全局阈值直接定位病灶
| 对比 | 迭代阈值法 | Otsu 方法 |
|---|---|---|
| 初值需求 | 需要设置 | 无需设置 |
| 理论基础 | 启发式 | 类间方差最大化 |
| 最优性 | 无保证 | 理论最优 |
| 适用性 | 直方图分布好时效果好 | 更广泛 |
Project 3:高级分割(Advanced Segmentation)
实验内容:实现区域生长、改进 K-means 聚类 和 分水岭算法,定量计算病灶体积。
实验原理:
- 区域生长:\(|I(P) - \mu_R| \leq \text{Tolerance}\) → 合并入区域
- 改进 K-means:特征向量 \(V = [I, W \cdot X, W \cdot Y]\),空间权重 \(W\) 控制聚类内聚性
- 分水岭:梯度图上运行,手动标记前景/背景种子避免过度分割
各算法比较:
| 算法 | 优点 | 缺点 | 2D 场景 |
|---|---|---|---|
| 区域生长 | 连通性好,逻辑直观 | 种子点敏感,易泄漏 | 边界清晰的单一组织提取 |
| 标准 K-means | 全自动,速度快 | 结果破碎,无法区分不同位置的同亮度区 | 图像初步分类 |
| 改进 K-means | 空间连续性好,去噪点 | \(W\) 过大会引入非病灶区 | 信号不均的病灶分割 |
| 分水岭 | 边缘定位精准 | 参数复杂,极易过度分割 | 精度要求高的解剖结构 |
K-means 空间权重 \(W\) 的选择
- \(W=0\):标准 K-means(仅灰度)→ 结果破碎
- \(W=0.1\):轻度空间约束 → 圆滑连续,去除飞地噪点(推荐)
- \(W=0.2\):重度空间约束 → 过度规整,可能误将附近非目标组织纳入
历年卷解答
一、分水岭算法可能遇到的问题(2022 选择)
知识点定位:区域分割 — 分水岭算法
答案:过度分割(Over-segmentation)。
解释:由于噪声和梯度的局部不规则性,标准分水岭算法会产生大量琐碎的区域(远多于实际目标数)。解决方案:标记控制(Marker-Controlled)分水岭——在注水前手动指定哪些位置是前景/背景,抑制不必要的区域极小值。
二、区域生长算法对噪声的敏感性(2022 判断)
知识点定位:区域分割 — 区域生长
题目:"区域生长算法严格依赖于种子点的选择和生长策略,但对噪声不敏感。"
答案:错误。
解释:区域生长算法对初始噪声也是敏感的——如果图像中存在噪声,种子点附近的噪声像素可能不满足相似性准则而被误分类,或者噪声造成的虚假边界会阻断区域的正常扩张。区域生长对种子点、相似性阈值、噪声三者都敏感。
三、边缘检测算子与方向响应(2022 大题)
知识点定位:边缘检测 — 梯度算子
题目:给一个边缘检测算子 \([-1 \quad 1]\),做卷积:
- 为什么没有对所有边缘都有响应?
- 设计另外一个算子,使其与原算子同时使用完成边缘检测任务。
解答:
(1) 算子 \([-1 \quad 1]\) 实际上计算的是水平方向的一阶差分 \(f(x+1) - f(x)\),即 \(\frac{\partial f}{\partial x}\) 的近似。它只对水平方向(垂直边缘)有响应——当灰度在水平方向发生变化时(从暗到亮的垂直边缘),该算子产生强输出。对于水平边缘(垂直方向的灰度变化),该算子几乎不产生响应。
(2) 只需对原算子做转置,得到提取竖直方向梯度(水平边缘)的算子:
原算子 \([-1 \quad 1]\) 提取水平梯度 \(G_x\)(检测垂直边缘),转置算子提取垂直梯度 \(G_y\)(检测水平边缘)。两者组合使用即可计算梯度幅值 \(M = \sqrt{G_x^2 + G_y^2}\),对所有方向的边缘产生响应。
四、拉普拉斯算子对图像做平滑(2020 判断)
知识点定位:边缘检测 — Laplacian 算子
题目:"拉普拉斯算子对图像做了平滑操作。"
答案:错误。
解释:Laplacian 是二阶导数算子,其作用是锐化(Sharpening)而非平滑。Laplacian 增强图像中的灰度突变(边缘和噪声),在平坦区域输出为零。掩膜系数之和 = 0,中心为正值(4 或 8)——这是高通滤波器的特征,而非平滑滤波器。平滑操作会使图像模糊,Laplacian 恰恰相反。
五、分水岭算法的适用场景(2020 判断)
知识点定位:区域分割 — 分水岭算法
题目:"分水岭法适用于低分辨率、复杂的图像。"
答案:不适合。
解释:分水岭算法在低分辨率图像上容易产生更大的误差(像素粒度大 → 边界粗糙),且对复杂场景(纹理多、噪声大)极易产生严重的过度分割。分水岭更适合较高分辨率、目标边界清晰的图像,通常需要预处理(如标记控制)才能在实际中使用。
六、阈值分割与直方图的关系 + Otsu 的优点和步骤(2020 简答)
知识点定位:阈值分割 — Otsu 方法
题目:
- 简述阈值分割和直方图的联系
- 简述 Otsu 的优点和关键步骤
解答:
(1) 阈值分割与直方图的联系:
阈值分割直接依赖于图像的灰度直方图。直方图的形状决定了阈值分割是否可行:
- 直方图呈现明显的双峰且有深谷 → 阈值分割效果好(谷底即为最优阈值)
- 直方图呈现单峰 → 目标和背景灰度重叠严重 → 单一阈值无法有效分割
- 噪声使峰变宽、谷变浅 → 阈值选择困难
- 目标和背景面积比悬殊 → 直方图中较小的峰可能被淹没
阈值分割的本质是在直方图中寻找一个最优的分界点。
(2) Otsu 方法的优点和关键步骤:
优点:
- 全自动:无需人工设定阈值或初始值
- 数学严谨:基于最大化类间方差,具有统计学上的最优性
- 适应性广:对直方图呈双峰的图像效果极佳
关键步骤:
- 计算图像的灰度直方图 \(p_i = n_i/N\)
- 计算全局灰度均值 \(m_G\)
- 遍历所有可能的阈值 \(k = 0, 1, \ldots, L-1\):
- 计算 \(C_0\)(\(\leq k\))和 \(C_1\)(\(>k\))的概率和累积均值
- 计算类间方差 \(\sigma_B^2(k) = \frac{(m_G \cdot \omega(k) - m(k))^2}{\omega(k)\mu(k)}\)
- 选择使 \(\sigma_B^2(k)\) 最大的 \(k\) 为最优阈值
- 用该阈值对图像进行二值化
七、区域生长算法的正确描述(2020 选择)
知识点定位:区域分割 — 区域生长
正确描述:区域生长算法需要手动或自动选择种子点,基于预定义的相似性准则(灰度、纹理等)将相似邻域像素纳入区域,迭代扩张直到满足停止条件。
错误说法举例:
- "区域生长不需要种子点"——错,种子点是区域生长的起点
- "区域生长对噪声不敏感"——错,噪声会直接影响相似性判断
- "区域生长不会泄漏到相邻结构"——错,如果目标边界模糊且容忍度设置过大,区域会泄漏