基于遗传算法的自适应图像分割系统
项目简介
本项目是一个基于MATLAB开发环境的自适应图像分割系统。它利用遗传算法(Genetic Algorithm, GA)的全局搜索能力,解决传统图像分割方法(如Otsu法)在复杂噪声环境下难以确定最佳阈值的问题。系统将图像分割的最佳阈值搜索转化为最优化问题,通过模拟生物进化过程(选择、交叉、变异),寻找能够最大化类间方差(Otsu准则)的灰度阈值,从而实现高效、精准的图像前景与背景分离。
功能特性
- 鲁棒的图像读取机制:尝试读取系统内置图像,若读取失败则自动生成带高斯噪声的合成图像用于演示,确保程序随时可运行。
- 图像预处理:包含自动灰度化处理及高斯滤波去噪,有效减少高频噪声对分割精度的干扰。
- 遗传算法核心引擎:
* 实现了基于二进制编码的种群初始化。
* 采用Otsu最大类间方差作为适应度函数。
* 包含轮盘赌选择、单点交叉、位翻转变异及精英保留策略。
- 形态学后处理:对分割后的二值图像依次进行开运算和闭运算,有效去除噪点并填充目标区域内部孔洞。
- 全方位可视化界面:提供包含原始图像、灰度预处理图、直方图及阈值线、适应度收敛曲线、初步分割结果及最终形态学优化结果的6合1综合展示视图。
系统要求
- 软件环境:MATLAB R2016a 及以上版本
- 工具箱依赖:Image Processing Toolbox (图像处理工具箱)
使用方法
- 确保MATLAB当前路径包含主程序脚本。
- 在MATLAB命令行窗口运行主程序函数。
- 系统将自动弹出图形窗口,展示从原图读取到最终分割的全过程及算法收敛数据。
- 控制台将实时输出进化过程状态、最终计算出的最佳阈值及对应的最大类间方差值。
---
核心算法与实现逻辑详解
本项目代码逻辑严密,主要流程分为初始化、预处理、遗传优化、分割与后处理、可视化展示五个阶段。以下是代码的详细实现分析:
1. 环境初始化与图像获取
程序首先清理工作区(
clc,
clear)。在读取图像时采用了
try-catch结构:优先读取名为
rice.png 的图像;如果未找到文件,则代码通过
uint8 矩阵操作和
imnoise 函数动态生成一个带有高斯噪声的矩形目标合成图像。这种设计保证了代码在任何环境下均无报错运行。
2. 图像预处理
- 灰度转换:检查输入图像维度,若是RGB图像则转换为灰度图,若是灰度图则保持不变。
- 由粗到细的去噪:使用
imgaussfilt 函数对灰度图进行标准差为1.0的高斯滤波。这一步是防止噪声像素被误判为阈值选取的关键特征。 - 直方图统计:计算图像的灰度直方图并归一化为概率分布,这是后续计算Otsu适应度的基础数据。
3. 遗传算法(GA)实现细节
代码构建了一个完整的标准遗传算法流程,参数设定为:种群规模30,最大迭代50代,染色体长度8位(对应256个灰度级),交叉概率0.7,变异概率0.05。
*
编码:使用二进制矩阵表示种群,每一行代表一个个体,长度为8。
*
解码:通过辅助函数将二进制向量转换为十进制数值(0-255),作为潜在的分割阈值。
* 代码通过辅助函数计算当前阈值下的
类间方差。该函数根据输入的阈值将直方图分为背景和前景两部分,分别计算这两部分的权重($w0, w1$)和均值($mu0, mu1$),最终返回 $w0 cdot w1 cdot (mu0 - mu1)^2$ 作为适应度值。算法的目标是最大化这个方差。
*
选择(Selection):采用
轮盘赌算法。计算每个个体的适应度占比,生成累积概率分布,随机选择进入下一代的个体。代码中对适应度增加了极小值(
1e-6)以防止除零错误。
*
交叉(Crossover):遍历种群,依据交叉概率
pc 随机选择交叉点,交换相邻两个体的基因片段(单点交叉)。
*
变异(Mutation):生成随机掩码,依据变异概率
pm 对种群中的基因位进行取反操作(0变1,1变0),防止陷入局部最优。
*
精英保留(Elitism Strategy):在每次迭代结束前,强制将当前全局最优的个体直接覆盖到种群的第一个位置。这确保了算法在进化过程中不会丢失历史发现的最优解,显著提高了收敛稳定性。
4. 图像分割与形态学优化
- 二值化:利用GA进化完成后得到的全局最佳阈值,对预处理后的灰度图进行逻辑判断,生成二值掩膜。
- 形态学处理:
* 创建半径为2的圆盘形结构元素(
strel)。
*
开运算(Open):先腐蚀后膨胀,用于去除背景中的微小噪点。
*
闭运算(Close):先膨胀后腐蚀,用于填充目标物体内部的细小空洞。
* 这两步操作顺序执行,显著平滑了物体边缘。
5. 结果可视化
系统构建了一个
2x3 的子图窗口,详细展示了处理流程:
- 原始图像:展示最原始的输入。
- 预处理灰度图:展示经过灰度化和高斯滤波后的效果。
- 直方图及最优阈值:绘制灰度直方图,并叠加红色垂直线标记出GA搜索到的最佳阈值位置,直观展示分割点。
- GA适应度进化曲线:绘制50代迭代中每代最佳适应度的变化趋势,用于分析算法收敛速度。
- 初步分割结果:仅经过阈值处理的二值图像。
- 形态学优化后结果:经过开闭运算后的最终分割图像,边缘更加平滑整洁。