MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > 基于Retinex理论的SSR/MSR/MSRCR图像增强系统

基于Retinex理论的SSR/MSR/MSRCR图像增强系统

资 源 简 介

本项目完整设计并开发了一套基于Retinex理论的图像增强MATLAB工具包,涵盖了单尺度Retinex(SSR)、多尺度Retinex(MSR)以及带色彩恢复的多尺度Retinex(MSRCR)三种核心算法。该系统基于光照-反射成像模型,假设图像由入射光分量和物体反射分量构成,通过算法移除或减弱入射光的影响,从而恢复物体本身的物理特征。具体实现功能包括:1. SSR模块:利用高斯低通滤波器作为环绕函数来估计光照分量,通过对数变换将乘性噪声转化为加性噪声,进而分离出反射分量,有效改善图像的动态范围;2. MSR模块:通过对三个不同尺度(小、中、大)的SSR结果进行加权求和,在增强图像暗部细节的同时,避免了大尺度下的光晕现象和小尺度下的局部对比度不足问题,实现了动态范围压缩与色彩一致性的平衡;3. MSRCR模块:在MSR的基础上引入了色彩恢复因子(Color Restoration Function),通过计算各颜色通道之间的比例关系来修正MSR处理后可能出现的“发灰”或色彩失真现象,显著提升了图像的色彩饱和度和视觉自然度。程序还包含自动化脚本,支持批量读取图片、自动调整增益与偏差参数、直方图均衡化后处理以及增强前后效果的并排对比显示。

详 情 说 明

基于SSR/MSR/MSRCR三种Retinex算法的图像增强系统

项目简介

本项目是一个基于MATLAB开发的图像增强工具包,完整实现了Retinex理论中的三种核心算法:单尺度Retinex(SSR)、多尺度Retinex(MSR)以及带色彩恢复的多尺度Retinex(MSRCR)。系统基于光照-反射成像模型,旨在消除光照不均的影响,恢复图像物体的真实色彩与细节,特别适用于低照度图像的增强处理。

程序采用纯MATLAB代码编写,无复杂的外部依赖,包含了从图像读取、模拟低照度环境、核心算法处理到结果可视化对比的全流程。

功能特性

  • 自动化环境模拟:自动读取测试图像并进行亮度衰减处理(乘以0.3系数),以模拟真实的低照度环境;若缺少测试图,则自动生成合成的暗色测试图案。
  • 单尺度Retinex (SSR):通过高斯滤波估计光照分量,利用对数域差分分离反射分量,结合动态范围归一化提升图像可视度。
  • 多尺度Retinex (MSR):融合小、中、大三种不同尺度的SSR处理结果,平衡了细节增强与色彩保真度,解决了单一尺度可能带来的光晕或对比度不足问题。
  • 带色彩恢复的Retinex (MSRCR):在MSR基础上引入色彩恢复因子(CRF),通过修正RGB通道比例,解决Retinex算法常见的“泛灰”问题,结合增益与偏差调整,显著提升色彩饱和度。
  • 多维度可视化分析:提供增强前后的图像并排对比,以及对应的RGB直方图分布对比,直观展示算法对图像亮度分布和动态范围的改善效果。

系统要求

  • MATLAB:建议使用 R2016a 或更高版本。
  • 工具箱:Image Processing Toolbox(用于图像读取、高斯滤波、直方图计算等函数)。

使用方法

  1. main.m 文件放置于MATLAB工作路径中。
  2. 确保当前目录下存在 peppers.png 图像文件(MATLAB内置图片),或者让程序自动生成合成图像。
  3. 直接运行 main 函数。
  4. 程序将自动根据预设参数处理图像,并弹出一个包含8个子图的窗口展示处理结果与直方图数据。

代码实现逻辑与算法细节

本项目的主程序 main.m 通过模块化设计实现了以下核心逻辑:

1. 图像预处理与环境构建

程序启动后首先清理工作区。尝试读取 peppers.png,读取成功后使用 immultiply 将图像亮度降低至原图的30%,以此作为待处理的“模拟低照度图像”。如果读取失败,利用 meshgrid 和三角函数生成一张包含渐变纹理的合成暗图,确保程序在任何环境下均可运行。

2. 核心算法参数配置

代码中硬编码了经过优化的算法参数:
  • SSR参数:高斯模糊尺度 Sigma = 80。
  • MSR参数:使用了三个尺度 [15, 80, 250],分别对应细节提取、中等范围和全局光照估计。
  • MSRCR参数:色彩恢复因子 Alpha = 125,Beta = 46,增益 G = 192,偏差 b = -30。

3. 三大算法具体实现

A. 单尺度 Retinex (SSR)process_ssr 函数实现。

  • 将图像转换为双精度并加1(防止对数运算出现无穷小)。
  • 利用 imgaussfilt 对图像进行高斯模糊以估计光照分量。
  • 在对数域中执行 log(原始) - log(光照) 得到反射分量。
  • 归一化策略:使用均值方差法(Mean +/- 2*Std)进行线性拉伸,将涵盖约95%像素值的范围映射到0-255,有效去除极端噪点影响。
B. 多尺度 Retinex (MSR)process_msr 函数实现。
  • 作为SSR的加权扩展,迭代使用[15, 80, 250]三个尺度进行SSR处理。
  • 对三个尺度的处理结果取平均值(权重均为1/3)。
  • 归一化策略同样采用基于均值和标准差的动态范围调整。
C. 带色彩恢复的多尺度 Retinex (MSRCR)process_msrcr 函数实现,分为四个步骤:
  1. 基础MSR计算:计算三个尺度的SSR加权和,此时暂不进行归一化。
  2. 色彩恢复因子 (CRF) 计算:根据各通道像素值与像素总和的比例关系计算CRF,公式涉及参数 Alpha 和 Beta。此步骤用于修正增强后图像各颜色通道比例失调的问题。
  3. 最终合成:应用经典公式 G * (MSR结果 .* CRF + b),引入增益G和偏差b调整整体亮度和对比度。
  4. 归一化策略:采用了与SSR/MSR不同的“百分位裁剪法(Clipping)”。裁剪掉直方图两端各0.5%的像素(极暗和极亮),将剩余部分拉伸至0-255。这种方法对于包含增益放大的MSRCR结果能提供更强烈的对比度表现。

4. 结果可视化

程序最后创建一个包含2行4列子图的图形窗口:
  • 第一行(图像):依次显示“原始低照度图”、“SSR增强图”、“MSR增强图”、“MSRCR增强图”。
  • 第二行(直方图):利用 draw_histogram 辅助函数,分别绘制上述四张图像的R、G、B三通道直方图,横坐标为0-255灰度级,展示像素分布的变化。
  • 计时功能:控制台会实时输出每种算法的计算耗时,便于性能评估。

注意事项

  • 代码中的归一化函数分为 normalize_retinex(用于SSR/MSR)和 normalize_with_clipping(用于MSRCR),体现了针对不同算法输出特性的后处理差异。
  • MSRCR算法中的 G 和 b 参数对最终图像亮度和对比度影响巨大,当前参数是基于通用场景调整的经验值。