基于最大信息熵原理的图像阈值分割系统
项目介绍
本项目是一个基于MATLAB环境开发的自动化图像分割工具,核心采用最大信息熵原理(Kapur法)实现。该算法通过量化图像目标与背景的信息量,寻找使系统总信息熵最大的灰度值作为分割阈值。该系统能够有效处理目标与背景比例悬殊、边缘过渡模糊等传统Otsu法较难处理的场景,为后续的计算机视觉任务提供高质量的二值化预处理结果。
功能特性
- 交互式图像读取:具备文件选择对话框,支持常见图像格式(jpg, png, bmp, tif),并在未选择文件时自动加载演示图像。
- 自适应灰度处理:自动识别图像通道,对彩色图像进行灰度化预处理,对灰度图像直接进行计算。
- 自动化阈值搜索:在0至255灰度范围内进行全域搜索,计算每一级候选阈值下的香农熵。
- 鲁棒性分割算法:算法侧重于最大化类内信息分布的均衡性,对光照不均或背景复杂的图像具有较好的适应性。
- 多维度结果可视化:提供四位一体的可视化界面,涵盖原始图、带阈值标注的直方图、熵值变化曲线图以及最终分割结果图。
- 实时数据反馈:命令行窗口实时输出图像尺寸、最优阈值及最大熵值等核心参数。
使用方法
- 启动MATLAB环境。
- 运行程序,在弹出的文件操作窗口中选择一张待分割的图像。
- 程序将自动执行预处理、直方图统计以及熵值计算。
- 计算完成后,系统会自动弹出可视化图窗显示分割效果。
- 在MATLAB命令行窗口查看具体的计算数值结果。
系统要求
- MATLAB R2016a 或更高版本。
- 安装有 Image Processing Toolbox(图像处理工具箱)。
算法实现核心逻辑
程序遵循严谨的数学逻辑,具体步骤如下:
- 概率分布统计:获取图像的灰度直方图,通过像素计数除以总像素数,得到每个灰度级在图像中出现的概率分布。
- 两类概率归一化:将图像像素划分为背景(灰度值 $0$ 至 $t-1$)和目标(灰度值 $t$ 至 $255$)。对于每一个候选阈值 $t$,分别计算这两个区域的累积概率和。
- 计算香农熵:
* 对背景类和目标类的概率分布进行归一化处理,使其类内概率之和为1。
* 滤除概率为0的项以防止对数计算溢出。
* 根据香农熵公式 $- sum p cdot log(p)$ 分别计算背景熵和目标熵。
- 寻找最优解:将背景熵与目标熵相加得到总信息熵。遍历所有灰度级后,选取总信息熵最大点所对应的灰度级作为最终的一阶全局最优阈值。
- 二值化处理:利用找到的最优阈值,将原始图像像素点根据亮度值进行逻辑判定,生成逻辑矩阵表示的二值图像。
关键实现细节分析
- 异常处理:在计算熵的过程中,程序加入了对类累积概率为零的判断,有效避免了除以零导致的非法运算。
- 归一化技巧:为了符合信息熵的定义,在计算局部熵之前对概率分布进行了重新映射,确保了计算结果能准确反映各类别的内部信息丰富度。
- 可视化标注:在直方图中实时绘制红色阈值分割线,并在熵值曲线中标记全局最高点,直观展示了算法从候选值中选取最优解的过程。
- 性能表现:通过向量化运算(计算累积概率和熵值),保证了在处理高分辨率图像时依然拥有较快的计算反馈速度。