基于MATLAB的单尺度Retinex(SSR)图像增强系统
项目介绍
本项目是一个基于MATLAB开发的图像增强工具,核心采用了经典的单尺度Retinex(SSR)理论。Retinex理论认为,人眼感知到的图像是由环境光照射产生的入射分量(Illumination)和物体本身反射属性的反射分量(Reflection)共同决定的。本项目通过数学建模将图像转换至对数域,利用高斯滤波技术有效分离并去除光照分量,从而还原物体的真实反射特征,达到提升图像清晰度、改善对比度和增强细节的目的。
功能特性
- 物理模型还原:严格遵循 Retinex 物理模型,通过对数空间变换处理亮度分布不均的问题。
- 高度可调控性:支持用户自定义高斯核尺度参数(Sigma),以适应不同场景下的增强需求。
- 多通道支持:能够同时处理彩色(RGB)和灰色图像,对彩色图像的三个通道进行并行增强。
- 边缘保护处理:在光照估计过程中采用边缘填充技术,有效减少了图像边缘的卷积伪影。
- 可视化数据分析:内置了直方图统计功能,可直观对比增强前后的全局亮度分布。
- 光照分量提取:除了输出增强后的图像,程序还能够提取并显示估计的入射分量。
实现逻辑与算法细节
该系统的核心实现逻辑分为以下五个关键步骤:
1. 预处理与环境初始化
程序首先初始化运行环境,清除残留变量。通过交互式界面引导用户选择待处理图像,并支持自动处理系统自带模板图。所有图像数据被转换为双精度浮点数(double)以确保计算精度。
2. 环境光估计(高斯滤波)
根据设定的尺度参数生成高斯滤波器。程序采用卷积方式对原图进行平滑处理,目的是提取图像中的低频部分,这部分在 Retinex 理论中被视为环境光照射产生的入射分量。
3. 对数域变换与减除
为了将复杂的乘法模型转换为简单的加法操作,程序对原始图像和估计出的入射分量分别进行对数变换。在此过程中,特别加入了微小偏置量以防止对零取对数导致的数值异常。通计算原图对数与光照分量对数之差,成功提取出代表物体固有属性的反射分量。
4. 动态范围压缩与线性拉伸
提取出的反射分量由于处于对数空间,其值域分布不适合直接显示。程序采用极值归一化(Min-Max Stretching)方法,将处理结果重新映射回 [0, 1] 的可视化区间。
5. 结果展示与直方图分析
系统生成一个多子图窗口。左侧展示原始图像,中间展示提取出的光照分量,右侧展示增强后的最终结果。底部则通过绘制 R、G、B 三通道的像素分布直方图,量化展示图像在对比度扩展和亮度均衡方面的改进效果。
关键函数与实现说明
- 空间域卷积:利用预设的高斯核对各通道进行滤波。使用了边界复制填充模式,确保图像四周不会出现黑边。
- 对数减法运算:这是 Retinex 算法的核心,实现了从混合信号中分离出反射分量的功能。
- 直方图统计绘图:对处理前后的图像进行像素频率分布统计,使用彩色曲线分别绘制三原色的分布情况,帮助评估色彩保持度。
- 动态参数调节:通过修改代码顶部的尺度因子,可以改变算法对细节增强的敏感程度,较大的尺度能获得更自然的光影效果,较小的尺度则能突出更多边缘细节。
系统要求
- 软件环境:MATLAB R2016a 或更高版本。
- 必备工具箱:Image Processing Toolbox(图像处理工具箱)。
- 硬件要求:标准桌面电脑即可,内存建议 4GB 以上以支持大尺寸图像处理。
使用方法
- 启动 MATLAB 软件,将工作目录切换至本项目文件夹。
- 运行主脚本程序。
- 在弹出的文件选择框中,选择一张需要增强的图像(支持 .jpg, .png, .bmp 等格式)。
- 等待程序处理完成后,观察输出的对比视图及直方图分析。
- 如果增强效果不理想,可以尝试直接在代码顶部调整尺度参数并重新运行。