跳转至

第8章 图像分割

一、图像分割基础(Fundamentals of Image Segmentation)

1.1 什么是图像分割

图像分割是将图像细分为其组成区域或目标的过程。设 \(R\) 表示整个图像区域,分割将 \(R\) 划分为 \(n\) 个子区域 \(R_1, R_2, \ldots, R_n\),满足:

\[ \bigcup_{i=1}^{n} R_i = R \]
\[ R_i \cap R_j = \varnothing, \quad i \neq j \]

分割主要依赖灰度值的两种基本性质:

性质 原理 典型方法
不连续性(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 算子检测孤立点:

\[ \nabla^2 f(x,y) = f(x+1,y) + f(x-1,y) + f(x,y+1) + f(x,y-1) - 4f(x,y) \]

对应的 \(3 \times 3\) 掩膜:

\[ \begin{bmatrix} 0 & -1 & 0 \\ -1 & 4 & -1 \\ 0 & -1 & 0 \\ \end{bmatrix} \]

在均匀灰度区域响应为 \(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)\) 处的梯度定义为:

\[ \nabla f = \begin{bmatrix} G_x \\ G_y \end{bmatrix} = \begin{bmatrix} \frac{\partial f}{\partial x} \\ \frac{\partial f}{\partial y} \end{bmatrix} \]

梯度幅值

\[ |\nabla f| = \sqrt{G_x^2 + G_y^2} \approx |G_x| + |G_y| \]

梯度方向

\[ \alpha(x,y) = \tan^{-1}\left( \frac{G_y}{G_x} \right) \]

各种梯度算子

算子 \(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 算子

\[ \nabla^2 f = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2} \]

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 的问题

  1. 对噪声极其敏感
  2. 产生双边缘而非单边缘
  3. 不提供梯度方向信息

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)

先高斯平滑再计算一阶方向导数,被业界公认为边缘检测的最优标准:

高斯函数:

\[ G(x,y) = e^{-\frac{x^2 + y^2}{2\sigma^2}} \]

高斯函数的一阶偏导(Derivative of Gaussian):

\[ \nabla G = \begin{bmatrix} \frac{\partial G}{\partial x} \\ \frac{\partial G}{\partial y} \end{bmatrix} = -\frac{1}{\sigma^2} \begin{bmatrix} x \\ y \end{bmatrix} e^{-\frac{x^2 + y^2}{2\sigma^2}} \]

因其算法设计,满足低错误率、高定位精度和单峰响应三大准则。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))\),其能量为:

\[ E = \int \left( \alpha |v'(s)|^2 + \beta |v''(s)|^2 + E_{ext}(v(s)) \right) ds \]

其中:

  • \(\alpha |v'(s)|^2\):弹性项(控制轮廓的拉伸)
  • \(\beta |v''(s)|^2\):刚性项(控制轮廓的弯曲)
  • \(E_{ext}\):外部能量(来自图像梯度,如 \(E_{ext} = -|\nabla f|^2\),驱动轮廓向边缘移动)

四、阈值分割(Thresholding)

4.1 基本阈值分割

阈值分割是最简单的分割方法:

\[ g(x,y) = \begin{cases} 1, & f(x,y) > T \\ 0, & f(x,y) \leq T \end{cases} \]

根据 \(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 基本全局阈值法(迭代阈值)

算法步骤:

  1. 选择初始阈值 \(T\)(可取图像平均灰度,或最大值和最小值的中间值)
  2. \(T\) 分割图像生成两个区域 \(G_1\)\(>T\))和 \(G_2\)\(\leq T\)
  3. 分别计算 \(G_1\)\(G_2\) 的平均灰度值 \(\mu_1\)\(\mu_2\)
  4. 更新阈值:\(T_{new} = \frac{\mu_1 + \mu_2}{2}\)
  5. 重复步骤 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\) 的累积均值)

类间方差

\[ \sigma_B^2(k) = \frac{(m_G \cdot \omega(k) - m(k))^2}{\omega(k)\mu(k)} \]

遍历所有 \(k = 0, 1, \ldots, L-1\),选择使 \(\sigma_B^2(k)\) 最大的 \(k\) 作为最优阈值。

Otsu 方法的优点与局限

优点:全自动,无需设置初值;数学上基于类间方差最大化,具有最优性。

局限:当目标与背景面积比极度悬殊时,阈值会向面积大的一方偏移;对于单峰直方图效果差。

4.4 利用平滑改善全局阈值

先对图像进行平滑处理,再使用 Otsu 方法,可以:

  • 使直方图的峰更尖锐、谷更深
  • 抑制噪声导致的虚假峰
  • 显著改善分割质量

4.5 利用边缘特征改善阈值选择

如果只依赖灰度信息,结果容易受目标和背景相对大小的干扰。改进策略:

  1. 计算梯度幅值图像
  2. 对梯度幅值取高分位数阈值(如 99.7%)→ 获得边缘掩膜
  3. 将原图与边缘掩膜相乘 → 仅保留靠近边缘的像素
  4. 对这些像素计算直方图 → 峰更分离、谷更深
  5. 基于新直方图应用 Otsu

原理:靠近边缘的像素更均匀地来自目标和背景两类,避免了面积不平衡导致的直方图偏斜。

4.6 多阈值分割

对具有多个目标类别的图像使用多个阈值:

双阈值(Dual Threshold):

\[ g(x,y) = \begin{cases} 0, & f(x,y) \leq T_1 \\ 1, & T_1 < f(x,y) \leq T_2 \\ 0, & f(x,y) > T_2 \end{cases} \]

4.7 自适应阈值分割

当光照不均匀时,全局阈值失效。自适应方法:

  1. 分块处理:将图像划分为子图像,为每个子图像独立确定阈值

  2. 分类处理:灰度方差 \(< T_1\) 的子图像:不包含目标边界 → 合并后统一处理;灰度方差 \(> T_2\) 的子图像:包含目标边界 → 独立阈值处理

  3. 基于局部图像属性\(T = T(x,y, p(x,y))\),利用局部标准差和均值动态确定阈值


五、区域分割(Region-Based Segmentation)

5.1 区域生长(Region Growing)

将像素或子区域基于预定义准则合并为更大的区域:

基本步骤

  1. 选择一组种子点
  2. 将与种子点灰度相似的邻近像素附加到种子区域
  3. 迭代扩张直到满足停止条件

关键要素

要素 说明
种子点的选择 手动交互 / 自动检测
相似性准则 灰度差 \(\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}\),则合并

算法

  1. \(Q(R) = \text{FALSE}\),分裂为 4 个不相交象限
  2. 对满足 \(Q\) 的相邻区域进行合并
  3. 无可合并和可分裂时停止

5.3 分水岭算法(Watershed Segmentation)

将灰度图像视为 3D 地形(\(x\) 坐标、\(y\) 坐标、灰度值为高度):

地形概念 图像对应
区域极小值 图像中灰度最低的均匀区域
集水盆地(Catchment Basin) 水滴会落入同一个极小值的区域
分水岭线(Watershed Line) 水滴等概率落入多个极小值的点——即分割边界

原理

  1. 在每个区域极小值处钻孔

  2. 让水以均匀速率从孔中上升,淹没整个地形

  3. 当来自不同集水盆地的水即将汇合时,建坝阻止合并

  4. 坝的边界即为分水岭线

算法步骤(按灰度级迭代)

  1. 从最低灰度值开始

  2. 对于每个灰度级 \(k\)

  3. 若像素仅邻接一个已有区域→加入该区域

  4. 若像素邻接多个已有区域→标记为边界

  5. 若像素无邻接区域→创建新区域

分水岭的过度分割问题

由于噪声和梯度的局部不规则性,标准分水岭极易产生过度分割(Over-segmentation)。解决方案:

  1. 梯度图像而非原始图像上运行(梯度图直接反映边缘位置)

  2. 使用标记控制(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):

\[ D = \sum_{k=1}^{K} \sum_{\mathbf{x}_i \in C_k} \|\mathbf{x}_i - \mathbf{m}_k\|^2 \]

其中 \(\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)

\[ s_i = \frac{b_i - a_i}{\max(a_i, b_i)} \]

其中:

参数 全称 含义
\(a_i\) 凝聚度(Cohesion) 样本 \(\mathbf{x}_i\)同聚类内所有其他样本的平均距离
\(b_i\) 分离度(Separation) 样本 \(\mathbf{x}_i\)最近邻聚类中所有样本的平均距离

轮廓系数的解读:

\[ s_i \begin{cases} \text{接近 } +1 & \text{聚类良好,样本远离其他聚类} \\ \text{接近 } 0 & \text{样本位于两个聚类的边界上,归属模糊} \\ \text{接近 } -1 & \text{样本可能被错误分配到了不该属于的聚类} \end{cases} \]

使用方式:对不同 \(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 颜色空间中):

\[ \mathbf{z} = [l, a, b, x, y]^T \]

其中 \((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:更新聚类中心

\[ \mathbf{m}_i = \frac{1}{|C_i|} \sum_{\mathbf{z} \in C_i} \mathbf{z} \]

新的中心 = 属于该聚类的所有像素的五维均值

步骤 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)

优点

  1. 实现极为简单:仅需一个 \(3 \times 3\) Laplacian 核卷积和阈值判断,几行代码即可完成
  2. 计算速度极快:单次卷积操作,时间复杂度 \(O(N)\)\(N\) 为像素总数)
  3. 对孤立点响应强:在均匀背景上的孤立亮点或暗点处产生高响应
  4. 无需先验知识:不需要训练数据、模板或参数模型
  5. 可检测任意方向的孤立点:Laplacian 核具有旋转不变性(各向同性)
  6. 阈值可控:通过调整检测阈值可以灵活控制敏感度(低阈值→更多候选点;高阈值→仅最强点)

缺点

  1. 对噪声极度敏感:单一噪声像素与孤立点在 Laplacian 响应上无法区分,噪声稍大即产生大量虚警
  2. 无法区分点的类型:亮点、暗点、噪声点在 Lapacian 响应幅值上完全相同(仅靠符号区分亮/暗)
  3. 无法确定点的尺度\(3 \times 3\) 核仅响应单像素尺度的点,对稍大的斑点(blob)响应衰减
  4. 无方向选择性:无法判断点的方向性特征(点本身无方向,但无法区分点与短线)
  5. 对线结构产生弱响应:Laplacian 核在线上也产生非零响应(虽然比在点上弱),可能造成混淆
  6. 仅适用于极简单场景:在自然图像或医学图像中,纹理、噪声、细小结构使点检测几乎不可用

7.1.2 线检测(Line Detection)

优点

  1. 能够检测特定方向的细线:四个方向的掩膜分别对水平、垂直、+45°、-45° 方向的一个像素宽线条产生最大响应
  2. 方向信息明确:通过比较四个方向掩膜的响应大小,可以确定线的局部方向
  3. 实现简单、计算高效:四个 \(3 \times 3\) 卷积,均可并行计算
  4. 掩膜系数和为零:在均匀灰度区域响应为零,天然抑制平坦区域
  5. 可检测血管、神经纤维等线性结构:在医学图像中有直接的应用价值
  6. 阈值可控:通过调整检测阈值灵活控制灵敏度

缺点

  1. 仅对恰好一个像素宽的线响应最强:线的宽度偏离 1 像素时响应迅速衰减
  2. 仅能检测四个固定方向:45° 间隔的方向量化较粗糙,实际线的方向是连续的
  3. 对线的曲率不敏感:弯曲的线在一个局部窗口内可能不匹配任何一个方向掩膜
  4. 对噪声敏感:噪声产生的随机灰度突变可能被误检为线
  5. 无法区分线与阶梯边缘:某些方向掩膜对台阶边缘也有非零响应
  6. 灰度对比度依赖:低对比度的细线(如微血管)响应弱,可能被漏检
  7. 多尺度问题:不同宽度的线需要不同尺寸的掩膜

8.2 边缘检测算子

7.2.1 一阶梯度算子(Sobel / Prewitt / Roberts)

优点

  1. 计算简单高效\(3 \times 3\) 卷积(Roberts 为 \(2 \times 2\)),时间复杂度 \(O(N)\),适合实时处理
  2. 能同时提供梯度幅值和方向:幅值 \(\sqrt{G_x^2 + G_y^2}\) 指示边缘强度,方向 \(\arctan(G_y/G_x)\) 指示边缘法向
  3. Sobel 带有平滑效果:中心权值 \(2\) 相当于在垂直于导数方向上的平滑,对噪声有一定抑制
  4. Prewitt 各向权重均匀:在三个方向上完全对称,计算上比 Sobel 稍简单
  5. Roberts 核极小\(2 \times 2\) 核对极细边缘的定位偏差最小
  6. 实现极为广泛:几乎所有图像处理库均提供开箱即用的实现
  7. 无参数(除阈值外):直接应用即可,无需训练或调参
  8. 可用于计算梯度幅值图:作为 Canny 等高层算法的前级输入

缺点

  1. 对噪声敏感:仅靠 \(3 \times 3\) 窗口内的平滑不足以抑制较强噪声,噪声像素被放大为伪边缘
  2. 产生较粗的边缘响应:在斜坡边缘(灰度渐变)上响应跨越多个像素,边缘定位不够精确
  3. Sobel 对方向有轻微偏向\(3 \times 3\) 核在 0°、45°、90°、135° 四个方向上的响应强度不完全相等
  4. Prewitt 无中心权值加重:对中心像素和邻域像素一视同仁,边缘定位精度不如 Sobel
  5. Roberts 极易受噪声干扰\(2 \times 2\) 核太小,没有任何平滑能力,噪声环境几乎不可用
  6. 缺少后处理机制:仅输出梯度幅值图,需额外步骤(如阈值化、非极大值抑制)才能获得单像素宽边缘
  7. 对尺度不敏感:固定 \(3 \times 3\) 窗口只能检测特定尺度的边缘,大尺度模糊边缘响应弱
  8. 无法处理纹理边缘:纹理区域产生密集的高梯度响应,无法区分纹理和真正目标边界

7.2.2 二阶导数算子(Laplacian / LoG)

Laplacian 优点

  1. 各向同性:旋转不变,对任意方向的边缘响应一致
  2. 零交叉(Zero-Crossing)可精确定位边缘:理论上零交叉位置对应于边缘的精确位置(在无噪声的理想阶梯边缘处)
  3. 能提供边缘过渡方向信息:零交叉的符号变化方向指示从亮到暗还是从暗到亮
  4. 对孤立点和细线的检测能力强:Laplacian 在点和细线上产生强烈的双极响应
  5. 无需求梯度方向:一个核即可得到全方向的边缘信息

Laplacian 缺点

  1. 对噪声极度敏感:二阶导数对噪声的放大远强于一阶导数(噪声的二阶导比一阶导更不稳定)
  2. 产生双边缘响应:在阶梯边缘处产生正-负双峰,增加了边缘解释的难度
  3. 无法提供边缘方向信息:各向同性的性质意味着丧失了所有方向信息
  4. 双边缘在斜坡边缘处间距较大:对于灰度渐变的斜坡边缘,正负峰间距随斜坡宽度增大而增大,定位模糊
  5. 对细线和点的响应可能与边缘混淆:细线/点的双极响应与边缘的双峰响应在形态上不易区分
  6. 单独使用几乎不可行:必须与高斯平滑结合(即 LoG)才有实用价值

LoG 优点

  1. 先平滑后求导:高斯平滑抑制噪声,二阶导提供精确边缘定位,两者集成在一个卷积核中
  2. 零交叉定位精度高:理论分析和实践均表明 LoG 的零交叉定位精度优于一阶梯度的极值定位
  3. 高斯尺度 \(\sigma\) 可选:通过调整 \(\sigma\) 可以检测不同尺度的边缘(大 \(\sigma\) 检测粗边缘,小 \(\sigma\) 检测细边缘)
  4. 墨西哥草帽形状可解释:核的形状直观对应"中心兴奋-周围抑制"的感受野模型
  5. 闭合边缘:LoG 的零交叉倾向于形成闭合曲线,有利于分割出完整的目标边界

LoG 缺点

  1. 计算量较大:LoG 核的尺寸通常需要 \(\sim 6\sigma \times 6\sigma\),远大于 \(3 \times 3\) 的一阶核
  2. \(\sigma\) 导致边缘位置偏移:过强的高斯平滑会使边缘位置向灰度较低的一侧漂移
  3. 检测不到低对比度边缘:高斯平滑在抑制噪声的同时也削弱了低对比度边缘的信号
  4. 产生虚假零交叉:平滑后的灰度波动仍可能产生零交叉,特别是在均匀区域
  5. 单尺度限制:固定的 \(\sigma\) 无法同时检测不同尺度的边缘,需要多尺度策略
  6. 无法直接提供边缘强度:零交叉位置没有幅值信息,需额外计算梯度幅值来评估边缘强弱

7.2.3 Canny 边缘检测器

优点

  1. 三重优化准则:同时优化信噪比(检测率)、定位精度(边缘不偏移)、单响应(每个边缘只检测一次),是目前理论上最优的线性边缘检测器
  2. 非极大值抑制(NMS):沿梯度方向抑制非最大值 → 边缘宽度为单像素,定位极其精准
  3. 双阈值滞后连接(Hysteresis Thresholding):高阈值保证强边缘的高置信度,低阈值连接弱但连续的边缘 → 既抗噪声又不丢失弱连续边缘
  4. 边缘连续性好:滞后连接机制使 Canny 输出的边缘断裂最少,优于任何单阈值方法
  5. 广泛验证:Canny 自 1986 年提出以来,经历了近 40 年的实践检验,仍是边缘检测的事实标准和 benchmark
  6. 参数物理意义明确\(\sigma\)(平滑尺度)、\(T_{low}\)\(T_{high}\)(双阈值)均可被直觉理解
  7. 有大量优化实现:OpenCV、scikit-image 等均提供高效实现

缺点

  1. 三个参数需手动设置\(\sigma\)\(T_{low}\)\(T_{high}\) 的选取对结果影响巨大,且无统一的自适应方案;通常 \(T_{high}/T_{low}\)\(2:1 \sim 3:1\)
  2. 双阈值间的边缘断裂:低阈值边缘如果在空间上未能与高阈值边缘连通,会被丢弃——弱但连续的边缘可能因此丢失
  3. 计算复杂度较高:五步流水线(高斯平滑 → 梯度 → NMS → 双阈值 → 滞后连接)比简单梯度算子慢一个数量级
  4. 对纹理区域产生密集边缘:Canny 无法区分纹理边缘和目标边缘,纹理区域可能输出大量无意义的边缘片段
  5. 不保证闭合轮廓:滞后连接只能"延伸"而不能"闭合"——边界间隙仍需后处理填补
  6. 小尺度细节可能被平滑丢失:高斯平滑的尺度 \(\sigma\) 决定了最小可检测边缘的尺度,小于 \(\sigma\) 的边缘结构会被抹去
  7. 对参数敏感:同一组参数在不同图像上可能产生质量迥异的边缘图,需要针对具体图像调整

7.2.4 活动轮廓 / Snakes(Active Contour)

优点

  1. 能产生闭合、平滑的边界曲线:天然保证分割结果的拓扑整洁性,无需后处理连接片段
  2. 能够利用高层先验知识:通过能量函数的设计,可灵活融入平滑度约束、形状先验、灰度模型、用户交互等
  3. 对噪声和边界间隙具有鲁棒性:内部平滑能量使曲线在穿越噪声区域或短暂边界缺失时保持连续
  4. 亚像素精度:连续曲线模型的定位精度高于像素级离散方法
  5. 交互灵活:用户可以通过修改初始曲线或添加约束能量来引导分割
  6. 数学框架统一:能量最小化框架将分割问题转化为优化问题,理论清晰
  7. 对初始轮廓在一定范围内具有鲁棒性:初始轮廓不必完全精确,Snakes 能在局部范围内收敛到真实边界
  8. 可扩展到 3D(Active Surface):框架可自然地推广到三维表面演化

缺点

  1. 对初始轮廓位置敏感:初始轮廓必须靠近目标边界(通常需在目标边缘的"捕获范围"内),否则能量函数的局部极值陷阱会导致收敛到错误位置
  2. 容易陷入局部极小值:能量函数高度非凸,梯度下降式的演化只能找到局部最小值
  3. 无法自动处理拓扑变化:经典 Snakes 无法在演化过程中自动分裂或合并——如果目标有孔洞或由多个分离部分组成,需要复杂的重新参数化
  4. 对弱边缘/低对比度边界的捕获力弱:外部能量(图像力)在弱边缘处很小,Snakes 可能"滑过"目标边界
  5. 参数调优复杂:内部能量权重(\(\alpha\) 张力、\(\beta\) 刚度)和外部能量权重需要根据图像内容手动调整
  6. 计算量大:每次迭代需要求解偏微分方程(PDE),对于高分辨率图像或长轮廓,速度较慢
  7. 对凹形边界的收敛效果差:标准 Snake 的弹力(内部能量)倾向于拉直轮廓,难以进入深凹区域
  8. 需要用户交互:初始轮廓的绘制和参数选择通常需要人工参与,难以全自动处理大批量图像

7.3 阈值分割方法

7.3.1 迭代全局阈值

优点

  1. 算法极为简单\(\frac{\mu_1 + \mu_2}{2}\) 的迭代更新规则仅有四则运算,几分钟即可手动完成
  2. 收敛速度极快:通常 3~5 次迭代即收敛,时间复杂度 \(O(N)\)
  3. 自适应地计算阈值:无需用户指定阈值,算法根据图像内容自动确定
  4. 对双峰直方图的图像效果良好:当目标和背景的灰度分布分离清晰时,迭代阈值接近理论最优
  5. 内存占用极小:仅需存储当前阈值和两个均值
  6. 实现零门槛:无需任何数学库依赖

缺点

  1. 仅适用于双峰直方图:若图像仅含一个峰(如全是背景),或超过两个峰(如多器官 CT),算法无意义或失败
  2. 对初始阈值有轻微依赖:虽然通常取均值即可,但极端初始值可能导致收敛到次优的局部平衡点
  3. 不保证全局最优:算法的收敛点仅是局部均值平衡点,不一定与 Otsu 的类间方差最大化阈值一致
  4. 对光照不均匀极敏感:全局阈值无法处理图像各区域灰度分布有系统偏移的情况
  5. 对噪声敏感:噪声使直方图的峰变宽、谷变浅,迭代阈值可能偏移
  6. 小目标可能被"淹没":若目标像素数远小于背景像素数,目标均值对全局阈值的影响微弱,阈值偏向背景侧
  7. 没有分割质量的量化指标:算法给出阈值但不提供该阈值"有多好"的信息

7.3.2 Otsu 方法(大津法)

优点

  1. 全自动、无参数:无需指定阈值或任何参数,算法从直方图自动计算全局最优阈值
  2. 数学上是最优全局阈值:在类间方差准则下,Otsu 阈值是数学最优解——穷举所有可能的阈值后选取最大化 \(\sigma_B^2\) 的那个
  3. 对双峰直方图效果极佳:当目标和背景在灰度上分明时,Otsu 阈值稳定可靠
  4. 计算效率高\(O(L^2)\)\(O(L)\)(使用累积统计量优化),\(L\) 为灰度级数(256),完全可接受
  5. 分割质量可量化\(\sigma_B^2\) 本身可作为"可分割性"的度量——\(\sigma_B^2\) 越大说明两类分离越好
  6. 有严格的统计推导:方法源自 Fisher 判别分析,理论基础坚实
  7. 可扩展到多阈值:Otsu 方法可自然地推广到 \(K\) 类分割(\(K-1\) 个阈值)

缺点

  1. 仅当直方图为双峰时有效:若直方图为单峰或多峰,Otsu 仍会给出一个阈值,但该阈值在物理上无意义
  2. 对小目标不敏感:Otsu 最大化类间方差,当目标像素远少于背景时,类间方差的计算受背景主导,阈值偏离理想位置
  3. 仅考虑灰度分布,不考虑空间信息:相邻像素的空间关系和纹理信息完全被忽略
  4. 光照不均匀时完全失效:全局阈值无法处理不同区域灰度分布偏移的情况(如 MRI 的 bias field)
  5. 无法处理同灰度不同语义的组织:不同组织可能灰度相同但在空间上分离——Otsu 无法区分
  6. 噪声使直方图不呈现明显双峰时性能下降:噪声模糊了峰谷结构
  7. 多阈值扩展的计算量随 \(K\) 指数增长\(K-1\) 个阈值的穷举搜索复杂度为 \(O(L^{K-1})\)

7.3.3 自适应阈值(Adaptive Thresholding)

优点

  1. 能够处理光照不均匀:每个子区域独立计算阈值,局部光照变化被区域化处理——这是其相对于全局阈值法的最大优势
  2. 对阴影和渐变有强鲁棒性:文档扫描、眼底图像、组织切片等光照不均场景的首选
  3. 实现简单:将图像分块,每块独立运行全局阈值(如均值或 Otsu),逻辑直观
  4. 子区域大小可调节:通过调节子图像尺寸,在局部自适应性和统计稳定性之间权衡
  5. 可结合平滑改善结果:对阈值矩阵进行平滑插值,避免子区域边界处出现二值化跳变线
  6. 适合批量处理:同一采集条件下的图像组可使用相同的子区域划分策略

缺点

  1. 子图像尺寸的选择是关键且困难:太小则统计不稳定(几个像素上的阈值无意义),太大则丧失局部自适应性——需反复试验
  2. 子区域边界处可能出现伪影:相邻子区域用不同阈值二值化,区域边界可能产生跳变线或接缝
  3. 子区域内小目标可能被抹除:如果子区域内部全部为背景(无目标像素),该区域的 Otsu 阈值无意义
  4. 计算量比全局阈值大:需对每个子区域独立计算阈值,复杂度为子区域数量的倍数
  5. 参数增多:子区域尺寸、是否重叠、阈值方法选择等都需要用户决策
  6. 极低对比度子区域失效:局部对比度过低时,子区域内无法区分目标和背景

7.4 区域分割方法

7.4.1 区域生长(Region Growing)

优点

  1. 能够分割具有相同灰度特性的连通区域:天然保证分割结果的空间连续性(这是阈值法做不到的)
  2. 概念直观、易于理解:从种子点向外"扩张"的过程符合人类对区域的理解
  3. 可以利用多种相似性准则:灰度、纹理、颜色、边缘信息等均可纳入生长准则
  4. 多种子策略可处理多目标场景:不同的种子点各自生长出不同的区域
  5. 对噪声的局部容忍性:某个像素是否被加入取决于它与区域均值(而非全局阈值)的比较,局部灰度波动可能被容忍
  6. 可用于交互式分割:用户手动点击种子点,算法自动完成剩余工作

缺点

  1. 对种子点的位置和数量高度敏感:种子的选取直接决定分割结果——种子选偏则整个区域偏移,漏选种子则遗漏目标
  2. 易发生泄漏(Leakage):目标边界模糊时,生长可能通过弱边界泄漏进入相邻结构
  3. 对噪声敏感
  4. 对生长停止准则(阈值)高度敏感:阈值太小则区域欠生长(不完整),太大则过生长(泄漏)
  5. 生长顺序依赖:区域最终的形状和范围与像素被处理的顺序有关(尤其在 8-邻域 vs 4-邻域的选择上)
  6. 计算效率中等:需要维护候选像素队列和区域统计量,不如阈值法即时
  7. 缺乏全局优化:生长是贪心算法——每一步做局部最优决策,不保证全局最优
  8. 难以处理灰度渐变区域:目标内部灰度缓慢变化时,后面的像素可能因为累积漂移而不满足"与初始种子相似"的准则
  9. 多区域同时生长需要复杂的合并规则:当两个生长中的区域相遇时,需要决定是否合并

7.4.2 区域分裂与合并(Split & Merge)

优点

  1. 无需种子点:从整幅图像开始自动分裂,解决了区域生长中种子选择的难题
  2. 自动确定区域数量:分裂过程自然地发现图像中的均匀区域数量和位置
  3. 四叉树结构高效:数据结构紧凑且天然支持分层表示,分裂和合并操作均有标准实现
  4. 均匀性准则 \(Q(R)\) 可灵活定义:可基于灰度方差、灰度范围、纹理特征等
  5. 分裂与合并互补:分裂保证找到所有均匀子区域,合并保证相邻相似区域不被过度分割
  6. 分割结果具有层次性:不同层级的四叉树节点对应于不同粒度的分割

缺点

  1. 分裂产生方块状边界:四叉树分裂天然产生水平和垂直的直线边界,实际物体边界极少是完美的水平和垂直线——分割边界呈锯齿状
  2. 计算量大:需递归检查每个子区域的 \(Q(R)\),合并阶段需检查所有相邻区域对,复杂度高于区域生长
  3. 均匀性准则 \(Q(R)\) 的阈值难以设定:方差阈值等参数对分割结果影响巨大,且无自动确定方案
  4. 最小子区域尺寸需预设:太小则计算量爆炸且过分割,太大则遗漏小目标
  5. 四叉树结构产生的边界在子区域边缘处不连续:不同层级的子区域拼接在一起,边界过渡生硬
  6. 对灰度渐变区域不适应:灰度渐变区域内方差可能很大,导致过度分裂
  7. 合并阶段的实现复杂度高:需要维护邻接图(Region Adjacency Graph, RAG),数据结构比区域生长复杂得多

7.4.3 分水岭分割(Watershed)

优点

  1. 产生闭合的、单像素宽的连续分割边界:分水岭线天然是封闭曲线,无需边缘连接后处理
  2. 边界定位精度高:分水岭线精确位于相邻集水盆地之间的"山脊"上,对应于图像边缘
  3. 能自然分离相互接触的物体:即使两个物体紧邻且灰度相似,分水岭线仍能提供精确的分割线
  4. 计算效率较高:核心操作仅为像素按灰度排序和逐级泛洪,时间复杂度可控
  5. 基于灰度相对顺序而非绝对值:一定程度的全局灰度偏移不影响分割结果
  6. 与梯度图像结合效果更好:在梯度幅值图像上运行分水岭,边界定位比原始灰度图像更精确
  7. 标记控制版本可有效抑制过分割:通过人为/自动指定允许的局部极小值,分割从不可用变为高度可控
  8. 无需训练数据或先验统计模型:完全基于图像几何特征,是纯无监督方法
  9. 分割结果直观可解释:地形学注水模型使算法行为容易被直觉理解

缺点

  1. 对噪声极度敏感——原始算法几乎总会过分割:噪声产生大量虚假局部极小值 → 产生数百甚至数千个微小无意义区域,直接使用完全不可行,会发生过分割
  2. 必须依赖标记提取来控制过分割:标记控制的预处理步骤(阈值、形态学、距离变换等)显著增加了整体流程的复杂度和调参负担
  3. 标记质量直接决定分割质量:标记缺失 → 目标被邻近区域吞并;标记包含背景 → 产生虚假目标;质量无法保证
  4. 对纹理丰富区域极为不利:纹理的灰度波动产生密集的伪极小值,标记提取极为困难
  5. 难以处理灰度不均匀(Bias Field):同一组织内部的灰度漂移产生虚假极小值,标记控制也难以完全补偿
  6. 缺乏全局形状约束:完全由局部灰度地形驱动,不考虑目标期望形状(如肝脏的球形约束、血管的管状约束等)
  7. 目标内部存在多个极小值时无法自动合并:需要额外的高层知识来判定哪些盆地应该属于同一个解剖结构
  8. 低对比度边界的分水岭线位置不稳定:相邻集水盆地灰度差异极小时,水的汇合位置受噪声影响大
  9. 对标记提取中的参数极其敏感:阈值、形态学结构元素大小、平滑程度等参数环环相扣,调参工作量巨大
  10. 很难处理"无边缘"的场景:目标与背景逐渐过渡时(如部分体积效应导致的模糊边界),没有明显的山脊来定位分水岭

7.5 聚类分割方法

7.5.1 K-均值聚类(K-Means)

优点

  1. 原理简单、实现容易:仅涉及距离计算和均值更新两个基本操作,短短十几行代码即可实现完整算法
  2. 计算速度快:时间复杂度 \(O(NKdt)\)\(N\) 样本数,\(K\) 聚类数,\(d\) 特征维数,\(t\) 迭代次数),\(t\) 通常很小(< 100)
  3. 内存占用小:仅需存储 \(K\)\(d\) 维中心和 \(N\) 个标签,空间复杂度 \(O(N + Kd)\)
  4. 可推广到多维特征空间:除了灰度值,可纳入 RGB 颜色、多光谱通道、纹理特征等多维信息
  5. 收敛性有理论保证:目标函数 \(D\) 在每次迭代单调递减且存在下界,算法必然收敛
  6. 无监督、无需训练标注:可直接对未知图像进行分割,无数据标注成本
  7. 算法变体丰富:模糊 C 均值(FCM)允许多聚类软归属(处理 Partial Volume Effect)、K-medoids 用实际数据点为中心增强对离群点的鲁棒性
  8. 生态成熟:scikit-learn、OpenCV、MATLAB 等均有高度优化的实现

缺点

  1. 必须预先指定聚类数 \(K\)\(K\) 的选择对最终结果影响极大,而最优 \(K\) 往往未知——L 曲线法和轮廓分析只是辅助,不能完全消除主观判断
  2. 对初始聚类中心高度敏感:不同随机初始化可能收敛到截然不同的局部最优解——实践中常需多次(10~100 次)随机初始化并选最优结果,成倍增加计算量
  3. 对离群点/异常值极其敏感:单个极端离群像素(如金属伪影、钙化点)会显著拉动聚类中心——K-medoids 变体可部分缓解此问题
  4. 只能检测球形/凸形聚类:真实数据在特征空间的分布可能为非凸形状(如月牙形、环形),K-means 无力处理
  5. 假设各聚类具有相似的方差:大方差聚类会"吸收"小方差聚类的样本
  6. 仅收敛到局部最优\(D\) 非凸,梯度下降式迭代不保证全局最小值
  7. 类别不平衡时表现差:小聚类被大聚类"淹没",聚类中心向大聚类靠拢
  8. 完全不考虑空间邻域信息——在图像分割中最致命的缺点:聚类结果在空间上可能是碎片化的——同一聚类标签的像素散布在图像各处,缺乏空间连续性(例如肝脏和脾脏在 CT 中灰度相似,仅靠灰度无法区分)
  9. 硬分配无法表达部分体积效应:边界像素被强制分配给某一聚类,在医学图像中处理组织过渡时尤其不理想

7.5.2 SLIC 超像素(SLIC Superpixel)

优点

  1. 计算效率极高:搜索范围限定在局部 \(2S \times 2S\) 邻域,将复杂度从 \(O(NKt)\) 降至 \(O(N)\)——实际比标准 K-means 快数十到数百倍
  2. 超像素紧凑且规则:空间坐标纳入距离度量,保证空间连续性——这是相对于 K-means 的根本性改善
  3. 边界贴合度高:紧凑度参数 \(m\) 合适时,超像素边界与图像真实边缘良好吻合(颜色距离权重使超像素不跨越强边缘)
  4. 仅需一个主要参数 \(K\)(期望超像素数):使用门槛极低,无需复杂的参数调优
  5. 显著降低后续处理复杂度:将百万像素压缩为数百至数千超像素,后续图割、CRF、分类等操作的计算量减少 1~2 个数量级
  6. 网格初始化提供优质起点:通常 10 次迭代即收敛(随机初始化的 K-means 可能需要数百次迭代)
  7. 紧凑度可控:参数 \(m\) 在"紧凑规则"和"贴合边缘"之间提供灵活权衡
  8. 广泛的开源实现:scikit-image(skimage.segmentation.slic)、OpenCV 等均提供生产级实现

缺点

  1. 超像素大小由全局参数 \(K\) 预设,无法自适应图像内容:纹理密集区域可能需要更小的超像素,均匀区域可用更大的超像素——SLIC 使用统一尺寸
  2. 极细长结构(如血管、神经纤维)容易被切断:空间距离惩罚使超像素趋向紧凑,倾向于切断细长的解剖结构
  3. 紧凑度参数 \(m\) 需根据具体应用手动调整:不同应用对紧凑度和边界贴合度的权衡不同
  4. 继承了 K-means 的部分缺点:本质是 K-means 的变体,对离群点和灰度不均匀区域仍有一定敏感性
  5. 灰度不均匀导致超像素尺寸不均:Bias field 导致的灰度漂移使同一组织在不同位置的超像素大小差异大
  6. 超像素边界不一定与解剖边界重合:低对比度边界或渐进过渡区域的超像素可能跨越真实解剖边界
  7. 聚类中心可能落在强边缘上:虽然步骤 1 将中心移到梯度最小处,但在边缘密度极高的区域仍有风险
  8. 2D 算法需专门扩展至 3D:标准 SLIC 是 2D 的,3D 医学图像需要专门的处理
  9. 参数 \(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\) 灰度图像:

\[ I = \begin{bmatrix} 50 & 55 & 60 & 65 & 70 \\ 55 & 60 & 70 & 75 & 80 \\ 60 & 70 & 150 & 160 & 90 \\ 65 & 75 & 160 & 170 & 100 \\ 70 & 80 & 90 & 100 & 110 \end{bmatrix} \]

使用 \(3 \times 3\) Sobel 算子(零填充处理边界),计算 \(G_x\)\(G_y\)、梯度幅值 \(\sqrt{G_x^2 + G_y^2}\) 以及梯度方向 \(\theta = \arctan(G_y/G_x)\)

解答

Sobel 算子的标准形式:

\[ G_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix}, \]
\[ G_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} \]

零填充后扩展为 \(7 \times 7\),卷积得到 \(5 \times 5\) 的梯度结果:

\[ G_x = \begin{bmatrix} 170 & 245 & 275 & 300 & 235 \\ 35 & 130 & 290 & 300 & 135 \\ 35 & 130 & 290 & 300 & 135 \\ 30 & -30 & -170 & -160 & -20 \\ -205 & -375 & -565 & -600 & -370 \end{bmatrix} \]

(由于原图对称 \(I = I^T\)\(G_y = G_x^T\)\(G_y\)\(G_x\) 的转置。)

梯度幅值(保留一位小数):

\[ M \approx \begin{bmatrix} 240.4 & 247.5 & 277.2 & 301.5 & 311.8 \\ 247.5 & 183.8 & 317.8 & 301.5 & 398.6 \\ 277.2 & 317.8 & 410.1 & 344.8 & 580.9 \\ 301.5 & 301.5 & 344.8 & 226.3 & 600.3 \\ 311.8 & 398.6 & 580.9 & 600.3 & 523.3 \end{bmatrix} \]

对幅值应用迭代阈值法(收敛于 \(T \approx 398.6\)),最终边缘图:

\[ E = \begin{bmatrix} 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 & 1 \\ 0 & 0 & 0 & 0 & 1 \\ 0 & 1 & 1 & 1 & 1 \end{bmatrix} \]

Sobel 边缘检测的完整流程

  1. 平滑(去噪)→ 2. 计算梯度\(G_x\), \(G_y\))→ 3. 计算幅值和方向 → 4. 阈值化(提取最终边缘)

实验

实验来源:LAB5(Project 1-3)

Project 1:边缘检测(Edge Detection)

实验内容:利用 Sobel 梯度算子从 T1/T2 脑部 MRI 图像中提取病灶边缘轮廓。

实验原理

  1. 5×5 高斯平滑:在 Sobel 之前降低高频噪声
  2. Sobel 梯度\(G_x\)\(G_y\) 核卷积 → 梯度幅值 \(M = \sqrt{G_x^2 + G_y^2}\)
  3. 全局阈值 \(T\):二值化获得初步边缘掩膜
  4. 移除颅骨边缘:用 25×25 椭圆核腐蚀获得大脑核心区域 → 仅保留内部边缘
  5. 形态学闭运算:5×5 椭圆核桥接断裂的边缘线段
  6. 连通域面积过滤:去除小于 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. 为什么没有对所有边缘都有响应?
  2. 设计另外一个算子,使其与原算子同时使用完成边缘检测任务。

解答

(1) 算子 \([-1 \quad 1]\) 实际上计算的是水平方向的一阶差分 \(f(x+1) - f(x)\),即 \(\frac{\partial f}{\partial x}\) 的近似。它只对水平方向(垂直边缘)有响应——当灰度在水平方向发生变化时(从暗到亮的垂直边缘),该算子产生强输出。对于水平边缘(垂直方向的灰度变化),该算子几乎不产生响应。

(2) 只需对原算子做转置,得到提取竖直方向梯度(水平边缘)的算子:

\[ \begin{bmatrix} -1 \\ 1 \end{bmatrix} \]

原算子 \([-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 方法

题目

  1. 简述阈值分割和直方图的联系
  2. 简述 Otsu 的优点和关键步骤

解答

(1) 阈值分割与直方图的联系

阈值分割直接依赖于图像的灰度直方图。直方图的形状决定了阈值分割是否可行:

  • 直方图呈现明显的双峰且有深谷 → 阈值分割效果好(谷底即为最优阈值)
  • 直方图呈现单峰 → 目标和背景灰度重叠严重 → 单一阈值无法有效分割
  • 噪声使峰变宽、谷变浅 → 阈值选择困难
  • 目标和背景面积比悬殊 → 直方图中较小的峰可能被淹没

阈值分割的本质是在直方图中寻找一个最优的分界点

(2) Otsu 方法的优点和关键步骤

优点

  • 全自动:无需人工设定阈值或初始值
  • 数学严谨:基于最大化类间方差,具有统计学上的最优性
  • 适应性广:对直方图呈双峰的图像效果极佳

关键步骤

  1. 计算图像的灰度直方图 \(p_i = n_i/N\)
  2. 计算全局灰度均值 \(m_G\)
  3. 遍历所有可能的阈值 \(k = 0, 1, \ldots, L-1\)
  4. 计算 \(C_0\)\(\leq k\))和 \(C_1\)\(>k\))的概率和累积均值
  5. 计算类间方差 \(\sigma_B^2(k) = \frac{(m_G \cdot \omega(k) - m(k))^2}{\omega(k)\mu(k)}\)
  6. 选择使 \(\sigma_B^2(k)\) 最大的 \(k\) 为最优阈值
  7. 用该阈值对图像进行二值化

七、区域生长算法的正确描述(2020 选择)

知识点定位:区域分割 — 区域生长

正确描述:区域生长算法需要手动或自动选择种子点,基于预定义的相似性准则(灰度、纹理等)将相似邻域像素纳入区域,迭代扩张直到满足停止条件。

错误说法举例

  • "区域生长不需要种子点"——错,种子点是区域生长的起点
  • "区域生长对噪声不敏感"——错,噪声会直接影响相似性判断
  • "区域生长不会泄漏到相邻结构"——错,如果目标边界模糊且容忍度设置过大,区域会泄漏