图像多方法阈值分割系统
项目介绍
本项目是一个基于MATLAB开发的图像自动化阈值分割工具箱。系统集成了三种经典的数学模型:最小交叉熵法、最大熵法以及OTSU大津法。通过分析图像的灰度直方图,系统能够自动寻找最佳分割点,将图像有效地划分为目标与背景两部分。该系统适用于处理不同对比度、不同光照条件以及含有噪声干扰的各种图像场景,如医学影像、工业零件检测及文档二值化处理。
功能特性
- 多算法集成:同场竞技三种主流阈值计算方法。
- 交互式处理:支持用户通过文件选择对话框手动加载本地图像(支持JPG、PNG、BMP、TIF格式),并具备默认图像加载的鲁棒性处理。
- 自动化预处理:自动处理彩色与灰度图像,完成归一化概率分布计算。
- 可视化对比:
* 实时展示原始图像与标注了三个阈值位置的灰度直方图。
* 同步对比三种不同算法生成的二值化分割结果。
* 通过柱状图直观展示各算法计算出的阈值数值差异。
- 量化评估:计算并展示分割后的目标占比(前景比例),并在命令行输出详细的阈值计算报告。
使用方法
- 在MATLAB环境中运行主程序脚本。
- 在弹出的文件选择窗口中,选择一张需要处理的待分割图像。如果取消选择,系统将自动加载内置的示例图像进行演示。
- 程序将自动执行计算并在一个集成窗口中显示所有分割结果和统计图表。
- 在MATLAB命令行窗口(Command Window)查看各算法的具体阈值数值报告。
系统要求
- MATLAB R2016b 或更高版本。
- 安装有 Image Processing Toolbox(图像处理工具箱)。
逻辑实现细节
#### 1. 图像加载与预处理模块
程序首先清理工作区,通过图形界面获取用户路径。若图像为RGB彩色格式,自动调用转换函数将其变为灰度图。随后利用直方图函数获取0-255灰度级的分布情况,并计算每个灰度级出现的归一化概率,作为后续算法的输入数据。
#### 2. OTSU(大津法)算法实现
该算法基于类间方差最大化准则。实现逻辑如下:
- 计算背景和前景的累积概率分布。
- 计算累积均值以及全局均值。
- 通过迭代遍历所有灰度级,计算使背景类与目标类之间方差达到最大值的索引。
- 采用向量化运算避免除零错误,确保运算效率。
#### 3. 最大熵法算法实现
该算法基于信息论,旨在保留最多的图像信息。实现逻辑如下:
- 遍历每一个可能的阈值点,将直方图分为两部分。
- 分别计算背景部分和前景部分的局部概率分布。
- 利用对数运算计算两部分的熵之和。
- 寻找使总熵(信息量)最大的灰度值作为最佳分割阈值。
#### 4. 最小交叉熵法(Li's Method)算法实现
该算法通过最小化原始图像与分割后二值图像之间的交叉熵(等效于KL散度)来寻找最佳阈值。实现逻辑如下:
- 计算每个阈值划分下的两类均值。
- 根据李氏准则,计算基于均值映射的交叉熵代价函数。
- 通过最小化该代价函数,使分割后的图像分布在统计学上最接近原始图像。
#### 5. 结果可视化与评估逻辑
- 图像二值化:利用计算出的阈值对原始灰度图进行逻辑比较,生成二值掩膜。
- 目标占比计算:通过统计二值图像中像素值为1的比例,量化算法对目标的提取能力。
- 多维展示:使用5个子图位布局。左侧展示原始信息,中间展示三种分割结果及对应目标占比,右侧通过柱状图对比算法性能。