基于Chan-Vese模型的主动轮廓分割算法MATLAB实现
项目介绍
本项目实现了经典的Chan-Vese主动轮廓分割算法,该算法是基于Mumford-Shah函数的无边界主动轮廓模型。通过能量最小化方法,该算法能够有效分割灰度不均匀或边界模糊的图像,将图像划分为前景和背景两个同质区域。本实现采用水平集方法,通过数值求解偏微分方程来完成分割过程。
功能特性
- 自动轮廓初始化:默认采用圆形轮廓作为初始分割边界
- 自定义初始轮廓:支持用户提供自定义的初始轮廓位置
- 迭代优化:通过多轮迭代不断优化分割结果
- 可视化展示:实时显示分割过程和最终结果
- 参数可调:支持调整正则化参数μ、能量项权重λ1和λ2、时间步长、迭代次数等关键参数
- 完整输出:提供分割掩模、水平集函数、收敛曲线等多种输出形式
使用方法
基本调用
% 读取图像
img = imread('test_image.jpg');
% 基本分割(使用默认参数)
mask = main(img);
高级调用(自定义参数)
% 设置自定义参数
params.mu = 0.1; % 正则化参数
params.lambda1 = 1.0; % 前景能量权重
params.lambda2 = 1.0; % 背景能量权重
params.dt = 0.1; % 时间步长
params.max_iter = 500; % 最大迭代次数
params.tol = 1e-5; % 收敛阈值
% 自定义初始轮廓
init_contour = [x_coordinates, y_coordinates];
% 使用自定义参数进行分割
[mask, phi, energy_curve] = main(img, init_contour, params);
输出结果
- mask:二值分割掩模(逻辑矩阵)
- phi:最终水平集函数矩阵
- energy_curve:能量函数收敛曲线数据
- 可视化结果:包含原图、初始轮廓、迭代过程和最终分割结果的综合展示
系统要求
- MATLAB R2016b或更高版本
- Image Processing Toolbox(图像处理工具箱)
- 支持的操作系统:Windows/Linux/macOS
文件说明
主程序文件实现了Chan-Vese算法的核心功能,包括图像预处理、水平集函数初始化、能量最小化迭代求解、收敛判断以及结果可视化。该文件整合了参数处理、数值计算和图形显示等多个模块,提供从图像输入到分割结果输出的完整流程,支持默认参数运行和用户自定义配置两种模式,能够生成分割掩模、水平集函数和收敛分析等多种输出数据。