基于AOS方案与水平集方法的测地线活动轮廓图像分割算法
项目介绍
本项目实现了一种基于变分法与偏微分方程(PDE)的测地线活动轮廓(Geodesic Active Contour, GAC)图像分割系统。该算法将图像分割任务转化为能量泛函最小化问题,并通过水平集函数(Level Set Method)的演化来寻找目标的几何边界。
为了解决传统显式数值格式对时间步长限制严苛、计算效率低的问题,本项目核心引入了加法算子分裂(Additive Operator Splitting, AOS)方案。该方案通过隐式数值计算,辅助算法在保持数值稳定性的前提下,支持极大的时间步长,从而大幅缩短了轮廓收敛至目标边缘所需的迭代时间。
功能特性
- 高数值稳定性:采用AOS数值格式,克服了传统显式欧拉法的稳定性限制,允许使用较大的时间步长(如delta_t=10),显著提升演化效率。
- 自动拓扑变换处理:基于水平集框架,能够自然处理演化曲线的自动分裂与合并,适用于多目标或复杂形状的提取。
- 精确边界定位:结合高斯平滑与边缘停止函数(Stopping Function),能够有效识别弱边界并防止轮廓穿透。
- 实时动态可视化:系统在迭代过程中实时展示轮廓演化轨迹以及水平集函数的三维曲面变化,便于直观观察演化状态。
- 多功能结果输出:不仅生成最终的目标边界轮廓,还自动生成二值化掩膜(Mask)以及掩膜提取后的目标图像。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 工具箱需求:基础图像处理工具箱(Image Processing Toolbox)。
- 硬件配置:主流个人电脑即可,AOS 方案对内存要求较低。
使用方法
- 确保图像文件与脚本位于同一目录下。
- 在脚本中通过参数配置区域调整 sigma(平滑度)、k(边缘灵敏度)和 delta_t(步长)。
- 直接运行主程序。程序会自动读取内置图像(如 coins.png),若图像不存在则生成包含两个圆形的合成图像作为测试样本。
- 观察弹出的可视化窗口,查看红色轮廓如何逐步收缩并紧贴目标边界。
实现逻辑与算法细节
1. 图像预处理与边缘构建
程序首先对输入图像进行双精度化处理,并应用高斯滤波器。利用中心差分计算图像梯度梯度幅值。
核心构建了边缘停止函数 $g = 1 / (1 + (|nabla I|/k)^2)$。该函数在图像平坦区域趋于1,在梯度较大的边缘区域快速趋近于0,起到“刹车”作用,使演化曲线停止在边界处。
2. 水平集函数初始化
系统在图像边缘留出安全距离,初始化一个矩形结构的水平集函数 $phi$。在矩形内部 $phi$ 取负值,外部取正值,其零电平集即为初始演化轮廓。
3. AOS 步进迭代核心
这是算法最具技术难度的部分,程序通过以下步骤实现每一帧的演化:
- 扩散系数计算:计算当前水平集函数的梯度模值,构建扩散系数矩阵 $W = g / |nabla phi|$。
- 算子分裂:将二维的偏微分方程算子分解为水平(X)和垂直(Y)两个一维算子的组合。
- 隐式方程求解:
* 针对 X 方向,对每一行构建一个三对角矩阵,该矩阵捕捉了当前行内像素间的相互作用。
* 针对 Y 方向,对每一列构建相应的三对角矩阵。
* 使用 MATLAB 的反斜杠算子(高效实现的 Thomas 算法)求解线性方程组。这一步是隐式格式的体现,保证了绝对稳定性。
- 结果合并:将两个方向的分裂结果求平均,得到更新后的水平集函数。
4. 拓扑演化与提取
在迭代过程中,程序每 5 次迭代更新一次绘图。通过寻找 $phi = 0$ 的位置来定位当前轮廓。演化结束后,通过 $phi le 0$ 的逻辑判别生成二值化 Mask,并将其应用于原图,实现目标的完整切分。
核心算法优势分析
- 对比显式方案:显式方案通常要求步长小于 0.25 才能不发散,而本项目实现的 AOS 方案在 delta_t = 10 甚至更高时依然能稳定收敛,效率提升了数十倍。
- 三对角矩阵构建:通过预填充对角线(d)、下对角(l)和上对角(u)元素,精准描述了热传导类型的扩散过程,使得曲线具有良好的平滑性和抗噪性。