2024-06-30
24T2
00

目录

图像分割简介 Introduction of Image Segmentation
基本分割方法 basic segmentation methods
阈值分割 Thresholding
K均值聚类 K-Means Clustering
基于特征的分类 Feature Based Classification
复杂分割方法 sophisticated segmentation methods
区域分裂和合并 Region Splitting and Merging
连通分量在不同维度的连通性
连通分量算法 Connected Components Algorithm
在测量空间中的簇/聚类 Clustering in the measurement space
基于直方图的递归分割 Recursive histogram based splitting
基于启发式的区域合并 Heuristics-based region merging
基于图的区域合并 Graph-based Region Merging
通过区域生长进行合并 Merging by region growing
分水岭分割 Watershed Segmentation
Meyer泛洪算法 Meyer’s flooding algorithm
重要注意事项
最大稳定极值区域 MSER,Maximally Stable Extremal Regions
均值漂移 Mean Shifting
K均值聚类的局限性
均值漂移作为许多应用中的良好替代方案
迭代模式搜索 Iterative Mode Searching
使用均值漂移进行图像分割 Performing image segmentation by mean shifting
优缺点
超像素分割 Superpixel Segmentation
简单线性迭代聚类 Simple linear iterative clustering, SLIC
距离计算公式
条件随机场 Conditional Random Field,CRF
无向图结构 undirected graphical structure
分割作为能量最小化问题 Segmentation as an energy minimisation problem
单项势能(Unary Potentials)$\varphi$
双项势能(Pairwise Potentials)$\psi$
能量最小化通过图割(Graph Cut)解决
主动轮廓分割 Active Contour Segmentation
蛇形算法 Snakes Algorithm
缺乏梯度信息 gradient information is lacking
水平集分割
两种模型的对比
Chan-Vese模型
分割方法评价 Segmentation Method Evaluation
评价指标 Evaluation Metrics
术语和符号
像素分类
图示解释
受试者工作特征 Receiver operating characteristic
例子:阈值分割
ROC曲线图示
部分评价指标
考试例题

Recap of basic segmentation methods

  • Thresholding
  • K-means clustering
  • Feature extraction and classification

More sophisticated segmentation methods

  1. Region splitting and merging
  2. Watershed segmentation
  3. Maximally stable extremal regions
  4. Mean-shifting algorithm
  5. Superpixel segmentation
  6. Conditional random field
  7. Active contour segmentation
  8. Level-set segmentation

How to evaluate segmentation methods

  • Quantitative evaluation metrics
  • Receiver operating characteristic

图像分割简介 Introduction of Image Segmentation

区域应具备以下特性:

  • 区域应在某些特征上是均匀/同质的。
  • 区域内部应简单,没有孔洞或缺失部分。
  • 相邻区域在其各自均匀的特征上应有显著不同的值。
  • 每个区域的边界应平滑且空间准确

几种不同的图像分割方法:

  • 基于区域的分割方法 Region based
  • 基于轮廓的分割方法 Contour based
  • 基于模板匹配的分割方法 Template matching based
  • 基于分裂和合并的分割方法 Splitting and merging based
  • 基于全局优化的分割方法 Global optimisation based

迄今为止,没有一种单一的分割方法能很好地解决所有问题。

通常,需要应用领域的特殊知识来开发成功的计算机视觉分割方法。

在进行图像分割时,必须考虑具体应用场景,并结合领域知识来选择和调整合适的方法。

基本分割方法 basic segmentation methods

阈值分割 Thresholding

如果区域具有足够不同的强度分布(intensity distributions),则阈值分割方法是合适的。

image.png

如果区域有重叠的强度分布,问题就来了:

image.png

K均值聚类 K-Means Clustering

如果事先知道簇(clusters)的数量,K均值聚类方法可能有效。

image.png

如果簇的数量是未知的,那么问题就来了:

image.png

基于特征的分类 Feature Based Classification

通过滑动窗口逐块进行特征提取,然后进行分类的分割方法。这种方法需要大量的训练样本。

image.png

复杂分割方法 sophisticated segmentation methods

区域分裂和合并 Region Splitting and Merging

  • 基于区域统计递归地将整个图像分割成小块。
  • 递归地将区域以层次结构合并在一起。
  • 顺序地结合分裂和合并过程。

image.png

最简单的实现方法(二色实现法):

  • 设置灰度阈值:
θ(f,t)={1if ft0else\theta(f, t) = \begin{cases} 1 & \text{if } f \ge t \\ 0 & \text{else} \end{cases}
  • 应用阈值分割,然后计算连通分量(connected components)。
  • 由于图像实际的光照和对象内部的统计变化,通常这种方法是不够的。

(图中有4个连通分量,即3个白块和1个背景) image.png

连通分量在不同维度的连通性

在二维(2D)中:

  • 4连通(4-connected):每个像素与其上下左右的像素连通。
  • 8连通(8-connected):每个像素与其上下左右以及四个对角线方向的像素连通。

image.png

在三维(3D)中:

  • 6连通(6-connected):每个体素(3D像素)与其六个相邻的体素连通(沿X、Y、Z轴方向)。
  • 18连通(18-connected):每个体素与其在X、Y、Z轴方向及其邻近的十二个体素连通。
  • 26连通(26-connected):每个体素与其所有26个相邻的体素连通,包括沿X、Y、Z轴方向及其对角线方向。

image.png

使用4连通性,图像被分割成了10个物体。

使用8连通性,图像被分割成了1个物体。

image.png

连通分量算法 Connected Components Algorithm

第一遍:

  • 检查每个像素(从左上到右下)。
  • 如果是对象像素,检查它的邻居(N4N_4 4连通 或 N8N_8 8连通)。
  • 如果没有邻居有标签,分配一个新的标签。
  • 如果邻居有标签,分配最小的标签。
  • 在分配标签时记录标签等价性。
    • 等价集合例如:{1,2,6} 和 {3,4,5}。

第二遍:

  • 再次检查每个像素(从左上到右下)。
  • 将每个标签替换为其最小等价标签。
  • 所有背景像素默认使用零标签。

image.png

在测量空间中的簇/聚类 Clustering in the measurement space

  • 假设图像中的均匀区域在测量空间中表现为聚类(简单的例子:直方图)。
  • 优化区域内相似性和区域间不相似性的指标。
  • 聚类可以通过在空间中找到谷值,并将它们之间的间隔声明为聚类来完成。
  • 分割是将聚类映射回图像域。
  • 聚类标签的连通分量构成了分割的片段。

image.png

基于直方图的递归分割 Recursive histogram based splitting

在整个图像上执行直方图模式搜索

  • 首先在整个图像上计算直方图,识别不同的模式或峰值,这些模式对应于图像中的不同区域或物体。

在从聚类得到的每个区域上执行模式搜索

  • 将图像分割成不同的聚类后,对每个聚类区域再次进行直方图模式搜索,进一步分割这些区域。

直到获得的区域不能再进一步分解

  • 递归地对每个区域进行分割,直到所有区域都无法再进一步分割为止。

image.png

  • 当前掩膜:表示正在处理的图像区域。
  • 计算掩膜图像的直方图:生成当前区域的直方图。
  • 聚类:根据直方图的模式进行聚类。
  • 推送/弹出掩膜:管理要处理的掩膜区域堆栈。
  • 结果掩膜:最终的分割结果。

这个方法通过递归分割和直方图分析,逐步将图像分割成更小的均匀区域,直到所有区域都达到分割标准。

基于启发式的区域合并 Heuristics-based region merging

使用相对边界长度(boundary lengths)和边缘强度(edge strengths):

  • 比较相邻区域的边界长度和边缘的强度来决定是否合并。 使用最近点(closest points)或最远点(farthest points)之间的距离:
  • 根据相邻区域的最近点或最远点之间的距离来决定是否合并。 使用平均颜色差异(colour difference)或大小差异(size difference):
  • 计算相邻区域的平均颜色差异或大小差异,如果差异较小,则合并这些区域。

基于图的区域合并 Graph-based Region Merging

使用区域 RiR_i 之间的相对差异性进行合并

  • 通过计算区域之间的差异性来决定是否合并。

使用最小生成树(MST)将区域表示为图

  • 将区域表示为图结构,并使用最小生成树连接节点。

定义一个差异性度量 ω\omega(如强度差异)

  • 选择一个合适的差异性度量来衡量区域之间的差异。

使用图的边 ee 计算内部区域差异性

  • 内部区域差异性的计算公式:
I(R)=maxeMST(R)ω(e)I(R) = \max_{e \in \text{MST}(R)} \omega(e)

计算相邻区域之间的差异性

  • 相邻区域差异性的计算公式:
D(Ri,Rj)=mine(viRi,vjRj)ω(e)D(R_i, R_j) = \min_{e(v_i \in R_i, v_j \in R_j)} \omega(e)

合并任何两个差异性小于这两个区域的内部差异性最小值的相邻区域

  • 如果两个相邻区域之间的差异性小于它们内部差异性的最小值,则将这两个区域合并。

通过区域生长进行合并 Merging by region growing

这种方法通过从一个种子像素开始,逐步合并相似的像素,最终形成一个大的连通区域。

定义相似性度量

  • 选择一个合适的相似性度量,用于衡量像素之间的相似程度。

从一个种子像素开始

  • 选择一个种子像素作为区域生长的起点。

如果邻近像素相似,则将其添加到区域

  • 检查种子像素周围的像素,如果这些像素与种子像素相似,则将它们添加到区域中。

重复上述步骤,直到没有更多相似的像素

  • 继续检查并添加相似的邻近像素,直到没有更多的像素符合相似性条件为止。

image.png

区域生长的开始

  • 选择一个种子像素,并开始检查其邻近像素。

区域生长过程

  • 随着迭代进行,越来越多的像素被添加到区域中,直到没有更多相似的像素。

image.png

分水岭分割 Watershed Segmentation

分水岭算法借用了地形表面浸没的类比,用于图像分割。

分水岭算法将图像视为一个拓扑表面,其中灰度值表示高度。通过模拟雨水从山顶流向山谷的过程,可以确定不同区域之间的边界。具体来说,分水岭分割方法通过识别图像中的“山脊线”来分割不同的区域,这些“山脊线”代表着图像中灰度值变化最大的边界。

image.png

Meyer泛洪算法 Meyer’s flooding algorithm

算法的核心思想是从一些初始的种子点(标记)开始,逐渐扩展它们的区域,类似于水从低处流向高处,直到整个图像被分割成不同的区域。

选择一组标记以开始泛洪

  • 这些标记可以是所有的局部最小值。给每个标记赋予不同的标签。

将每个标记的邻近像素放入优先队列

  • 灰度值更相似的像素具有更高的优先级。

从队列中弹出具有最高优先级的像素

  • 如果弹出像素的邻居中已经被标记的所有像素具有相同的标签,则将该标签赋予弹出像素。将所有未标记的邻居放入队列中。

重复步骤3,直到队列为空

  • 持续处理队列中的像素,直到所有像素都被处理完。
  • 剩下的未标记像素构成了分水岭线。

image.png

重要注意事项

如果需要,反转图像或计算边缘以获得局部最小值

  • 通过反转图像或计算边缘来帮助识别局部最小值,这些最小值将作为泛洪算法的种子点。

相关信息

  • 左图:原始图像。
  • 中左图:边缘检测后的图像。
  • 中右图:应用分水岭算法后的初步分割结果。
  • 右图:经过后处理后的最终分割结果。

image.png

图像通常有很多局部最小值,导致过度分割

  • 图像中可能存在大量的局部最小值,可能会导致分割过细。

需要预处理(图像平滑)来减少错误的最小值

  • 通过图像平滑等预处理步骤来减少错误的局部最小值,以提高分割效果。

需要后处理(盆地合并)来减少碎片化

  • 通过后处理步骤(如盆地合并)来减少过度分割造成的碎片化问题。

存在许多不同的实现和预处理/后处理标准

  • 不同的实现方法和预处理/后处理标准会影响分割结果。

可以从用户定义的标记开始,而不是局部最小值

  • 可以使用用户定义的标记作为种子点,而不是自动检测的局部最小值。

最大稳定极值区域 MSER,Maximally Stable Extremal Regions

MSER是一种图像分割和特征检测方法,基于图像中连通区域在不同阈值下的稳定性来识别显著的区域。这些区域在一定范围的阈值变化中保持其形状不变,因此被认为是稳定的。MSER在计算机视觉和图像处理中的应用广泛,特别是在对象检测和跟踪中。

连通分量特征

  • 由几乎均匀的强度组成的连通分量,周围有对比鲜明的背景。

构造过程

  • 通过尝试多个阈值并分析连通分量的形状来构造。

选择区域

  • 选择在大范围阈值下形状几乎不变的连通分量作为稳定区域。

image.png

均值漂移 Mean Shifting

均值漂移在许多应用中是K均值聚类的良好替代方案,尤其是在需要处理复杂数据分布和不确定聚类数量的情况下。

K均值聚类的局限性

  • 需要选择K值。
  • 对异常值敏感。
  • 容易陷入局部最小值。

均值漂移作为许多应用中的良好替代方案

在密度函数中寻找驻点(峰/模式)。

  • 均值漂移通过在数据密度分布中寻找峰值,确定数据的聚类中心。这些峰值代表了数据分布的高密度区域。

尝试在特征空间中找到所有可能的聚类中心。

  • 均值漂移尝试在特征空间中找到所有可能的聚类中心,而不是预先指定的数量。这使得它在处理复杂数据集时更为灵活。

不需要事先知道聚类的数量。

  • 与K均值不同,均值漂移不需要预先指定聚类的数量。这使得它在实际应用中更加方便,因为在许多情况下,聚类的数量是不确定的。

是一种迭代最速上升法的变体。

  • 均值漂移是迭代最速上升法的一种变体,通过迭代过程不断调整聚类中心的位置,直到收敛到数据的高密度区域。

迭代模式搜索 Iterative Mode Searching

  1. 初始化一个随机种子点 xx 和窗口 NN

    • 从数据集中随机选择一个初始点,并定义一个搜索窗口。
  2. 计算窗口 NN 内的均值(重心) m(x)m(x)

    • 在窗口内计算数据点的加权平均值,作为新的重心。
  3. 将搜索窗口移动到均值位置

    • 将搜索窗口的中心移动到计算得到的均值位置。
  4. 重复步骤2,直到收敛

    • 继续迭代计算新的均值并移动窗口,直到窗口的位置不再发生显著变化,表示算法收敛。

均值(重心) m(x)m(x) 的计算公式:

m(x)=xiN(x)K(xix)xixiN(x)K(xix)m(x) = \frac{\sum_{x_i \in N(x)} K(x_i - x) x_i}{\sum_{x_i \in N(x)} K(x_i - x)}

其中,K(x)K(x) 是权重函数(核函数),例如:

K(x)=exp(x2)K(x) = \exp(-|x|^2)

这个公式表示在窗口内所有点的加权平均,其中权重由核函数 KK 决定,距离中心越近的点权重越大。

均值漂移算法通过不断移动搜索窗口来寻找数据的高密度区域,最终找到所有的聚类中心。

image.png

使用均值漂移进行图像分割 Performing image segmentation by mean shifting

定义特征(颜色、梯度、纹理等)

  • 确定用于图像分割的特征,例如颜色、梯度、纹理等。

将图像像素转换为特征空间中的点

  • 根据定义的特征,将图像中的每个像素映射到特征空间中的一个点。

在特征空间中的多个种子位置初始化窗口

  • 在特征空间中的多个位置初始化搜索窗口,这些位置可以是随机选择的或者基于某些准则选择的。

对每个窗口执行均值漂移,直到收敛

  • 对每个初始化窗口执行均值漂移算法,迭代计算新的均值并移动窗口,直到窗口的位置不再发生显著变化。

合并最终位置相近的窗口

  • 将最终位置相近的窗口合并,认为它们属于同一个聚类中心。

根据窗口的遍历结果对所有点进行聚类

  • 根据每个窗口的遍历路径,将所有点分配到相应的聚类中,完成图像分割。

image.png

用它们的聚类方法替换分割的区域颜色。

优缺点

优点:

  • 无模型(不假设数据聚类的任何先验形状)

    • 均值漂移不依赖于任何特定的聚类形状假设,适应性强。
  • 只有一个参数(窗口大小)

    • 算法只需要设定一个参数,即窗口大小,简化了参数调整。
  • 找到可变数量的模式(聚类)

    • 能够发现数据中的多个聚类中心,适应性好。
  • 对异常值有鲁棒性

    • 对于数据中的异常值,均值漂移算法具有较强的鲁棒性,不易受到干扰。

局限性:

  • 计算开销大(需要移动许多窗口)

    • 算法需要不断移动和计算窗口,计算量较大。
  • 输出依赖于窗口大小参数值

    • 分割结果对窗口大小的选择非常敏感,不同的窗口大小会导致不同的结果。
  • 窗口大小(带宽)的选择并不容易

    • 选择合适的窗口大小(带宽)并不简单,可能需要多次尝试和调整。
  • 在特征空间的维度上不具备良好的扩展性

    • 随着特征空间维度的增加,算法的效率和性能会显著下降。

超像素分割 Superpixel Segmentation

传统的像素级滑动窗口分割需要处理大量的窗口,计算量非常大。

基于超像素的分割提高了效率,通过将相似的像素聚集在一起形成超像素,可以减少需要处理的基本单元数量。

超像素的集合实际上是一种对图像的过度分割,通过将图像分割成多个超像素,简化了后续的处理。

最终的图像分割或分类操作是在这些超像素上进行的,而不是在单个像素上进行,从而大大提高了处理效率。

image.png

简单线性迭代聚类 Simple linear iterative clustering, SLIC

SLIC 是一种常用的算法,用于生成超像素。它通过迭代聚类的方式将相似的像素分组为超像素。

保留物体边界,快速且内存高效

  • SLIC 算法能够有效地保留图像中的物体边界。
  • 该算法计算速度快,适合实时应用。
  • 内存使用效率高,适合处理大规模图像数据。

image.png

在像素网格上以步长 SS 初始化聚类中心 CjC_j

  • 根据预定的步长 SS,在图像上初始化一组聚类中心 CjC_j

CjC_j 移动到具有最小梯度的 3×33 \times 3 窗口中的位置

  • 在每个 3×33 \times 3 窗口内,寻找梯度最小的位置,将聚类中心移动到该位置。

计算每个像素 iiCjC_j 周围的 2S×2S2S \times 2S 窗口内的距离 DijD_{ij}

  • 计算每个像素 ii 到聚类中心 CjC_j 的距离,距离计算在 2S×2S2S \times 2S 窗口内进行。

**将每个像素 ii 分配给距离 DijD_{ij} 最小的聚类 CjC_j

  • 找到每个像素 ii 距离最近的聚类中心 CjC_j,并将其分配给该聚类。

重新计算 CjC_j 处的像素的平均颜色和位置

  • 对每个聚类重新计算其中心,更新其颜色和位置为该聚类内所有像素的均值。

迭代(返回步骤3)直到残差误差很小

  • 重复上述步骤,直到聚类中心的变化趋于稳定,残差误差足够小为止。

距离计算公式

在 CIELAB 颜色空间中的距离 dlabd_{lab}

dlab=(ljli)2+(ajai)2+(bjbi)2d_{lab} = \sqrt{(l_j - l_i)^2 + (a_j - a_i)^2 + (b_j - b_i)^2}

在像素空间中的距离 dxyd_{xy}

dxy=(xjxi)2+(yjyi)2d_{xy} = \sqrt{(x_j - x_i)^2 + (y_j - y_i)^2}

综合距离 DD

D=(dlabm)2+(dxyS)2D = \sqrt{\left(\frac{d_{lab}}{m}\right)^2 + \left(\frac{d_{xy}}{S}\right)^2}

其中,权重 mm 控制颜色与空间距离的影响。

条件随机场 Conditional Random Field,CRF

超像素为进一步分割提供基础:

  • 确定超像素之间的空间关系
    • 分析和确定超像素之间的相对位置和关系。
  • 计算超像素之间的相似性
    • 计算和比较超像素之间的特征相似性,例如颜色、纹理等。
  • 将超像素分组以形成更大的分割段
    • 根据相似性和空间关系,将相似的超像素合并成更大的图像段。

条件随机场(CRF)方法:

  • 条件随机场是一种概率图模型,用于编码观测值(如超像素)之间的关系,并为一组数据(如图像)构建一致的解释(如分割)。

CRF 在图像分割中的应用包括:

  • 建模像素之间的关系
    • 利用CRF建模像素或超像素之间的关系,从而获得更准确的分割结果。
  • 集成局部和全局信息
    • CRF 能够有效地结合局部特征和全局信息,从而实现更鲁棒的分割。

无向图结构 undirected graphical structure

节点(Nodes):

  • 超像素(Superpixels):节点的值基于超像素的特征,例如颜色、纹理等。

边(Edges):

  • 邻接关系(Adjacency):边的值基于超像素之间的相似性,例如颜色相似性、空间距离等。

image.png

分割作为能量最小化问题 Segmentation as an energy minimisation problem

CRF 用于图像分割时,通过最小化以下能量函数来实现分割:

E(s,c)=iφ(si,ci)+ijψ(si,sj)E(s, c) = \sum_{i} \varphi(s_i, c_i) + \sum_{ij} \psi(s_i, s_j)

单项势能(Unary Potentials)φ\varphi

这部分能量基于单个节点(超像素)的特征,表示将超像素 sis_i 分配到类别 cic_i 的代价。

  • 数据项(基于图节点值)
  • 计算超像素 sis_i 属于类别 cic_i 的代价。
  • 较低的代价表示 sis_i 属于 cic_i 的可能性较高。
  • 可以通过超像素分类获得。

双项势能(Pairwise Potentials)ψ\psi

这部分能量基于节点之间的关系,表示相邻超像素 sis_isjs_j 被分配到不同类别的代价。通过平滑项来确保分割结果的一致性,相似的超像素更可能被分配到同一类别。

  • 平滑项(基于图边值)
  • 计算邻域一致性的代价。
  • 如果相邻超像素被分配到不同的类别,则分配一个代价。
  • 较高的相似性结果在较低的代价(如果被分配到相同的类别)。

能量最小化通过图割(Graph Cut)解决

图割是一种用于解决能量最小化问题的算法,基于最大流最小割(max-flow min-cut)原理。

  • 图的构建
    • 将图像像素或超像素作为节点,将相邻像素或超像素之间的关系作为边,并设置边的权重。
  • 能量最小化
    • 能量函数 (E(s, c)) 由单项势能 (\varphi) 和双项势能 (\psi) 组成,通过图割算法来最小化这个能量函数。
  • 分割结果
    • 图割算法找到的最小割对应于图像的分割结果,图中的每个节点(像素或超像素)被分配到前景或背景。

具体内容如下:

图像表示为图

  • 图中的节点表示图像中的像素或超像素,边表示像素或超像素之间的相似性或连接关系。

源节点和汇节点

  • 源节点(source)和汇节点(sink)分别代表背景和前景。

边权重

  • 边的权重表示像素或超像素之间的相似性或连接强度。较高的相似性对应较低的边权重,较低的相似性对应较高的边权重。

最大流最小割

  • 通过计算图中的最大流,找到将图分割为前景和背景的最小割。最小割对应于能量最小化问题的最优解。

通过图割算法,CRF 方法能够高效地解决图像分割中的能量最小化问题,实现精确的图像分割。图割在处理复杂图像和高维数据时具有优势,广泛应用于计算机视觉和图像处理领域。

image.png

主动轮廓分割 Active Contour Segmentation

主动轮廓分割方法能够动态调整曲线以适应不同的对象边界,通过迭代优化过程实现精确的图像分割。

通过一组控制点和插值表示曲线

  • 使用一组控制点来表示曲线,通过插值生成连续的曲线。

迭代移动控制点以适应对象的曲线

  • 通过迭代过程不断调整控制点的位置,使曲线逐步贴合对象边界。

使用的力

  • 图像力 Image Force
    • 由图像数据引导的力,用于将曲线吸引到对象边界上。
  • 平滑力 Smoothness Force
    • 作用于曲线的内在平滑力,用于保持曲线的光滑性,防止其变得过于粗糙或不规则。
  • 用户引导力 User-Guidance Force
    • 由用户提供的指导信息引导的力,帮助调整和优化曲线的位置。

通过结合图像力、平滑力和用户引导力,使主动轮廓能够准确地定位和描述对象的边界。这种方法在医学图像处理、物体检测和边界提取等应用中具有广泛的应用。

image.png

蛇形算法 Snakes Algorithm

平滑地跟随对象边界处的高强度梯度

  • 蛇形算法通过跟随图像中对象边界处的高强度梯度,逐步调整和优化曲线,使其贴合对象的边界。

通过平滑插值桥接噪声或缺失梯度的区域

  • 在遇到图像噪声或梯度缺失的区域时,蛇形算法使用平滑插值的方法,使曲线能够连续且光滑地跨越这些区域。

  • 高强度梯度

    • 图像中对象边界处的梯度通常较高,蛇形算法利用这些梯度信息将曲线吸引到对象边界上。
  • 平滑插值

    • 为了处理噪声和缺失梯度,算法在这些区域进行平滑插值,使得曲线能够保持光滑性,并准确地描述对象边界。

蛇形算法是主动轮廓分割方法的一种经典实现,通过结合图像特征和曲线光滑性,实现对对象边界的精确定位和描述。

image.png

缺乏梯度信息 gradient information is lacking

图像中标注了一个可能的边界,这个边界区域的梯度信息可能不够明显。

图像中放大了两个16 x 16像素的区域,一个区域(OK...)具有明显的边界特征,而另一个区域(Um...)则缺乏明显的边界特征。

image.png

在梯度信息缺失的情况下:

  • 当图像中的梯度信息缺乏时,主动轮廓分割算法依赖于图像力、平滑力和用户引导力来引导轮廓的移动和调整。
  • 通过平滑插值和用户引导,主动轮廓分割算法能够跨越噪声区域或梯度缺失区域,确保轮廓的连续性和光滑性。
  • 主动轮廓分割方法通过动态调整控制点的位置,使曲线能够适应复杂的图像结构,即使在梯度信息缺乏的情况下,也能找到合适的边界。

选择合适的轮廓模型 contour model

  • 可以选择圆形、椭圆形或样条曲线(开或闭)。

数学表示

  • 轮廓 CC 的参数化表示为:
C:[0,1]Rn    C(s)=[x(s),y(s)]C: [0,1] \rightarrow \mathbb{R}^n \implies C(s) = [x(s), y(s)]

其中 ss 是曲线的参数,[x(s),y(s)][x(s), y(s)] 是曲线上的点。

定义合适的能量泛函 energy functional

  • 使用内部能量、图像能量和外部能量
  • 能量泛函 ECE_C 表示为:
    EC=01[Eint(C(s))+Eimg(C(s))+Eext(C(s))]dsE_C = \int_0^1 \left[ E_{\text{int}}(C(s)) + E_{\text{img}}(C(s)) + E_{\text{ext}}(C(s)) \right] ds
    • 内部能量 EintE_{\text{int}}
      • 例如,弯曲能量,用于保持曲线的光滑性。
    • 图像能量 EimgE_{\text{img}}
      • 基于图像强度或梯度,用于将曲线吸引到对象边界。
    • 外部能量 EextE_{\text{ext}}
      • 例如用户交互力,用于结合用户输入的信息引导曲线调整。

最小化能量泛函

  • 使用高效的优化算法
    • 通过迭代优化算法,最小化能量泛函 ECE_C,使得轮廓曲线逐渐贴合对象边界。

image.png

  • 图示中的例子展示了一个轮廓模型(用一组控制点表示),在图像中找到并优化对象边界。
  • 能量泛函的最小化结合了内部、图像和外部能量,通过优化过程使得轮廓曲线能够精确地定位对象边界。

水平集分割

水平集分割方法在图像分割和对象检测中具有广泛应用,尤其适用于处理复杂形状和拓扑变化的场景。通过迭代优化过程,水平集方法能够实现精确而稳定的分割结果。

  • 轮廓随时间演化(迭代)

    • 水平集方法通过迭代过程,随着时间 ( t ) 的变化,逐步演化图像中的轮廓。
  • 2D 轮廓

    • 上图展示了一个二维轮廓随时间演化的过程。最初的轮廓逐渐分裂成两个独立的部分,说明了水平集方法能够处理复杂的拓扑变化。
  • 3D 水平集函数

    • 下图展示了三维水平集函数,水平集函数的零集合对应二维图像中的轮廓。随着时间 ( t ) 的变化,水平集函数的形状也在不断变化,以适应新的轮廓。

image.png

初始轮廓

  • 从初始的二维轮廓开始,定义一个三维水平集函数。

函数演化

  • 通过迭代优化过程,使水平集函数逐步演化,适应图像中的对象边界。

分裂与合并

  • 水平集方法能够处理复杂的形状变化,包括轮廓的分裂和合并。

两种模型的对比

主动轮廓分割(Active Contour Segmentation)和水平集方法(Level-set Methods)的比较。

主动轮廓 / 蛇形(Snakes)是参数模型

  • 显式表示对象边界

    • 轮廓通过明确的参数化曲线表示对象边界。
  • 通常需要手动交互来初始化曲线

    • 通常需要用户手动设置初始曲线,以便算法开始优化。
  • 在曲线演化过程中改变拓扑结构具有挑战性

    • 当对象形状发生显著变化时,调整曲线的拓扑结构是困难的。
  • 对于大形状变化可能需要重新参数化曲线

    • 在对象形状变化较大时,可能需要重新参数化曲线以适应新的形状。

水平集方法成为更流行的替代方法

  • 隐式表示对象边界

    • 对象边界通过高维函数的零集合隐式表示。
  • 边界由高维函数的零集合定义

    • 对象边界由水平集函数的零值集合表示。
  • 水平集函数演化以使零集合适应并跟踪对象

    • 通过演化水平集函数,使得零集合能够跟踪对象边界的变化。
  • 轻松适应对象形状的拓扑变化

    • 水平集方法能够轻松处理对象形状的拓扑变化,如分裂和合并。
  • 计算需求比主动轮廓更高

    • 水平集方法的计算复杂度较高,需要更多的计算资源。

主动轮廓方法直观且易于理解,但在处理形状变化和拓扑结构变化时有一定局限性。水平集方法则提供了一种更灵活和强大的工具,能够处理复杂的对象形状和拓扑变化,但计算需求更高。

image.png

这是关于水平集分割(Level Set Segmentation)中一种著名实现方法,即Chan-Vese模型的介绍。

Chan-Vese模型

目标:最小化能量泛函

  • Chan-Vese模型通过最小化一个能量泛函来实现图像分割。
E(C)=μlength(C)+νarea(C)+λ1Inside(C)u0c12dxdy+λ2Outside(C)u0c22dxdyE(C) = \mu \cdot \text{length}(C) + \nu \cdot \text{area}(C) + \lambda_1 \int_{\text{Inside}(C)} |u_0 - c_1|^2 \, dx \, dy + \lambda_2 \int_{\text{Outside}(C)} |u_0 - c_2|^2 \, dx \, dy
  • μlength(C)\mu \cdot \text{length}(C)
    • 曲线长度项,控制曲线的长度,鼓励较短的轮廓,防止过度拟合。
  • νarea(C)\nu \cdot \text{area}(C)
    • 区域面积项,控制区域的大小,鼓励较小的分割区域。
  • λ1Inside(C)u0c12dxdy\lambda_1 \int_{\text{Inside}(C)} |u_0 - c_1|^2 \, dx \, dy
    • 内部区域项,度量轮廓内部区域的均方误差, u0u_0 是原始图像, c1c_1 是内部区域的平均灰度值。
  • λ2Outside(C)u0c22dxdy\lambda_2 \int_{\text{Outside}(C)} |u_0 - c_2|^2 \, dx \, dy
    • 外部区域项,度量轮廓外部区域的均方误差, u0u_0 是原始图像, c2c_2 是外部区域的平均灰度值。

模型应用:

  • 从初始轮廓开始,通过迭代过程,逐步演化轮廓以最小化能量泛函。
  • 图中的例子展示了随着迭代次数增加,轮廓逐步收敛,最终实现对目标区域的精确分割。

image.png

分割方法评价 Segmentation Method Evaluation

评价指标 Evaluation Metrics

  • 图像分割像素分类
    • 图像分割算法将图像像素分为对象像素(object pixels)和背景像素(background pixels)。

术语和符号

分割对象像素(Set SS

  • 由分割算法识别的对象像素集合。

真实对象像素(Set TT

  • 实际的对象像素集合。

像素分类

真阳性(True Positives, TP)

  • 定义:TP=STTP = S \cap T
  • 正确分割为对象的像素。

真阴性(True Negatives, TN)

  • 定义:TN=ScTcTN = S^c \cap T^c
  • 正确分割为背景的像素。

假阳性(False Positives, FP)

  • 定义:FP=STcFP = S \cap T^c
  • 错误地分割为对象的背景像素。

假阴性(False Negatives, FN)

  • 定义:FN=ScTFN = S^c \cap T
  • 错误地分割为背景的对象像素。

维恩图

维恩图展示了分割对象像素集合 SS 和真实对象像素集合 TT 的交集和差集:

  • 交集(STS \cap T:真阳性(TP)
  • 差集(STcS \cap T^c:假阳性(FP)
  • 差集(ScTS^c \cap T:假阴性(FN)
  • 背景交集(ScTcS^c \cap T^c:真阴性(TN)

image.png

敏感度(Sensitivity)

  • 又称为真阳性率(True Positive Rate, TPR)。
  • 定义:真实对象中正确分割的比例。
  • 计算公式:
TPR=TPTP+FN\text{TPR} = \frac{|\text{TP}|}{|\text{TP}| + |\text{FN}|}

特异度(Specificity)

  • 又称为真阴性率(True Negative Rate, TNR)。
  • 定义:真实背景中正确分割的比例。
  • 计算公式:
TNR=TNTN+FP\text{TNR} = \frac{|\text{TN}|}{|\text{TN}| + |\text{FP}|}

以上定义和公式可以帮助全面评估图像分割算法的性能,结合使用可以获得更准确的评估结果。

图示解释

敏感度图示: 图示中,红色区域代表真实对象像素(True object pixels),圆圈内的红色区域是正确分割为对象的像素(TP),圆圈外的红色区域是被误分割为背景的对象像素(FN)。

image.png

特异度图示: 图示中,黑色区域代表真实背景像素(True background pixels),圆圈内的黑色区域是正确分割为背景的像素(TN),圆圈外的黑色区域是被误分割为对象的背景像素(FP)。

受试者工作特征 Receiver operating characteristic

定义:ROC 曲线是以方法的自由参数(例如阈值)为函数绘制的真阳性率(敏感性)与假阳性率(1-特异性)之间的关系图。

作用:通过ROC曲线,可以评估不同参数设置下分割方法的性能,从而选择最佳的参数。

例子:阈值分割

  • 图像和真值(Truth)
    • 左侧图像:需要进行分割的图像。
    • 右侧图像:分割的真值,用于评估分割效果。

image.png

  • 计算过程
    • 计算所有可能的强度阈值 τ\tau 下的敏感性与特异性。
    • 将结果绘制在ROC曲线图中。

ROC曲线图示

  • X轴:1-特异性(False Positive Rate, FPR)
  • Y轴:敏感性(True Positive Rate, TPR)
  • 不同阈值 τ\tau 下的分割结果
    • τ=0\tau = 0:最左上角点,所有像素都被认为是对象(敏感性为1,特异性为0)。
    • τ=32\tau = 32:大多数像素被分割为对象,图像中对象部分与背景部分之间的差异较大。
    • τ=64\tau = 64:分割效果更接近真值。
    • τ=256\tau = 256:最右下角点,所有像素都被认为是背景(敏感性为0,特异性为1)。

image.png

通过ROC分析比较方法的性能

  • AUC越高,方法越好。

image.png

部分评价指标

精确率(Precision)

  • 又称为正预测值(Positive Predictive Value, PPV)。
  • 定义:分割对象中正确分割的部分的比例。
  • 计算公式:
P=TPTP+FP P = \frac{|TP|}{|TP| + |FP|}

召回率(Recall)

  • 又称为灵敏度(Sensitivity)或真阳性率(True Positive Rate, TPR)。
  • 定义:真实对象中被正确分割的部分的比例。
  • 计算公式:
R=TPTP+FNR = \frac{|TP|}{|TP| + |FN|}

F-Measure

  • 定义:精确率和召回率的调和平均数,用于综合衡量分割方法的性能。
  • 计算公式:
F=2PRP+RF = 2 \cdot \frac{P \cdot R}{P + R}

Jaccard 相似系数(Jaccard similarity coefficient,JSC)

  • 定义:正确分割的真实对象和分割出的对象的并集中正确分割的部分的比例。
  • 计算公式:
JSC=STST=TPFP+TP+FNJSC = \frac{|S \cap T|}{|S \cup T|} = \frac{TP}{FP + TP + FN}

Dice 相似系数(Dice similarity coefficient,DSC)

  • 定义:正确分割的真实对象和分割出的对象的联合集中正确分割的部分的比例。
  • 计算公式:
DSC=2STS+T=2TPFP+2TP+FNDSC = \frac{2 |S \cap T|}{|S| + |T|} = \frac{2 TP}{FP + 2 TP + FN}

考试例题

Given the following binary image after segmentation.

To automatically identify the objects (in white) in this image we can use the connected components labelling algorithm.

How many separate objects will this algorithm find here if it uses 4-connectivity?

image.png

A. 4

B. 5

C. 6

D. 7

相关信息

答案选D。除了左下角以外其他的都能被分成一个完整的部分,所以这边有4个。

关于左下角的图形,单独拿出来看,4-连通能被分成3块。所以一共有7个。

本文作者:Jeff Wu

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!