基于混合克隆选择与粒子群优化算法的图像分割系统
项目简介
本项目设计并实现了一套高精度的图像分割解决方案,旨在解决传统阈值分割方法(如Otsu法)在多阈值或复杂直方图场景下计算量大且易陷入局部最优的问题。系统核心在于将人工免疫系统中的
克隆选择算法(Clonal Selection Algorithm, CSA)原理引入到
粒子群优化算法(Particle Swarm Optimization, PSO)中,构建了一种混合智能优化策略(CS-PSO)。
该系统通过结合PSO的快速全局收敛能力和克隆选择算法的多样性保持机制(克隆、高频变异、免疫抑制),能够高效地搜索图像分割的最佳多级阈值。实验表明,该方法在处理复杂背景图像时,能显著提高分割精度并加快收敛速度。
功能特性
- 混合智能优化算法 (CS-PSO):融合了PSO的速度更新机制与CSA的克隆变异机制,有效平衡全局搜索与局部开发能力。
- 多级阈值分割:支持多阈值(默认3个阈值,将图像分为4类)搜索,适用于复杂图像的精细分割。
- 自适应Otsu准则:以最大类间方差作为主要适应度函数,自动寻找区分前景与背景的最佳分割点。
- 免疫克隆机制:对种群中的优秀个体进行克隆和高频高斯变异,防止算法早熟收敛。
- 鲁棒的图像处理流程:包含图像读取、异常处理(默认加载示例图)、灰度化预处理及直方图统计。
- 全方位可视化界面:提供包含原图、直方图阈值线、收敛曲线、灰度图、分割结果及边缘叠加的综合结果展示。
系统要求
- MATLAB R2016b 或更高版本
- Image Processing Toolbox(图像处理工具箱)
算法原理与实现细节
本项目的核心代码位于
main.m 中,其具体实现逻辑如下:
1. 系统初始化与预处理
- 随机数控制:设置随机种子
rng('shuffle') 确保结果具有一定的随机性但流程可控。 - 图像加载:提供交互式文件选择窗口。若用户取消选择或发生与路径相关的错误,系统会自动回退加载MATLAB内置的
peppers.png 以保证程序能演示运行。 - 灰度转换:自动检测输入图像是否为RGB,若是则转换为灰度图,并计算图像的灰度直方图和归一化概率分布,为适应度计算做准备。
2. CS-PSO 混合算法核心
算法并未简单串联两种方法,而是采用了嵌套迭代策略:
* 依据标准PSO公式更新粒子的速度和位置。
* 包含惯性权重(w=0.729)及学习因子(c1=c2=1.494),并对速度进行钳制(vMax)。
* 在每次更新后,对阈值向量进行排序和边界限制(1~254),确保阈值的物理意义有效。
*
亲和度评估与选择:在PSO更新后,根据适应度(Otsu方差)对粒子排序,选出Top 30%的优秀粒子作为“抗体”。
*
克隆增殖:对选出的优秀抗体进行复制(Clone Factor=5),生成克隆群。
*
高频变异:对克隆体施加高斯变异(Gaussian Mutation),变异幅度由
mutateScale 控制。这一步增加了种群在优秀解附近的局部搜索能力。
*
克隆抑制/贪婪选择:如果变异后的克隆体适应度优于原粒子,则直接替换原粒子位置,并尝试更新个体历史最优(PBest)和全局最优(GBest)。
3. 适应度函数 (Otsu)
- 采用最大类间方差法(Maximum Between-Class Variance)作为目标函数。
- 函数手动计算给定阈值组合下的类间方差 $sigma_B^2$。它将直方图划分为 $N+1$ 个区间,分别计算每个区间的概率权重和平均灰度,最终累加加权方差。
4. 图像分割与可视化
- 分割执行:利用算法搜索到的全局最优位置(
gBestPos)作为最终阈值,使用 imquantize 函数对图像进行多级量化分割。 - 结果展示:创建一个包含6个子图的窗口:
1.
原始图像:显示输入的RGB或灰度图。
2.
直方图及阈值:绘制灰度直方图,并在图上用红色虚线标出算法寻找到的最优阈值位置。
3.
收敛曲线:绘制随迭代次数变化的最佳适应度值,展示算法的优化过程。
4.
灰度图像:显示将会被处理的灰度输入。
5.
分割结果:展示量化后的图像(伪彩色显示,便于区分不同区域)。
6.
边缘叠加:提取分割结果的Canny边缘,并将其以红色高亮叠加在原图上,直观展示分割边界的吻合度。
使用方法
- 确保MATLAB已安装并包含图像处理工具箱。
- 将
main.m 文件放置在工作目录下。 - 在MATLAB命令窗口输入
main 并回车。 - 在弹出的文件选择框中选择一张图片(支持jpg, png, bmp, tif),或者直接点击取消以使用默认示例图片。
- 程序将自动开始迭代优化,并显示进度条。
- 运行结束后,控制台将输出最佳适应度值和具体的阈值数组,同时弹出结果可视化的图形窗口。
文件说明
- main.m: 项目的主入口文件,包含了完整的混合算法逻辑、参数配置、目标函数定义(
objective_otsu)以及绘图辅助函数(imoverlay_fast)。该文件是自包含的,直接运行即可。