基于MASK与Wallis算法的图像匀光处理系统
项目介绍
本项目是一个基于MATLAB开发的图像处理系统,旨在解决航空摄影、遥感影像及普通数字图像中常见的光照不均匀现象。系统集成了两种经典的匀光处理策略:
MASK(马斯克)匀光算法与
Wallis滤波器算法。通过对输入图像的亮度分布进行调整,该系统能够有效压缩图像的动态范围,增强阴影区域的细节,消除整体亮度差异,同时保持图像的纹理特征。
项目代码采用模块化设计,不仅支持用户导入自定义图像,还内置了光照不均匀模拟功能,能够在未选择文件时自动演示算法效果。
功能特性
- 多格式图像支持:支持读取 JPG, PNG, TIF, BMP 等常见格式的图像文件。
- 智能模拟演示:如果用户取消选择文件,系统会自动读取MATLAB内置图像,并生成对角线渐变的光照蒙版,合成光照不均匀图像用于演示算法效果。
- MASK匀光处理:基于高斯滤波的背景拟合技术,有效去除低频光照分量,保留高频细节。
- Wallis滤波器处理:基于局部统计特性(均值和方差)的自适应增强,实现图像亮度和对比度的局部均衡。
- 多维度结果评估:提供处理前后的图像直观对比,以及RGB/灰度直方图对比,便于量化分析处理效果。
系统要求
- MATLAB R2016a 或更高版本
- Image Processing Toolbox(图像处理工具箱)
使用方法
- 确保MATLAB的工作路径已包含本项目文件。
- 在MATLAB命令行窗口输入
main 并回车运行。 - 系统将弹出文件选择对话框:
*
选择模式:选中一张光照不均匀的图片,点击打开。
*
演示模式:点击“取消”,系统将自动生成一张带有模拟光照梯度的测试图像进行处理。
- 程序运行结束后,将弹出一个包含图像对比和直方图分析的综合结果窗口。
核心算法与实现逻辑分析
本项目的核心逻辑集中在主入口函数及其调用的子函数中,具体实现细节如下:
1. 图像读取与光照模拟机制
程序首先尝试通过UI交互获取用户图像。为了增强程序的健壮性和演示性,代码中包含了一套完整的
模拟回退机制:
- 如果检测到用户未选择文件,程序会读取内置的
peppers.png。 - 创建一个与原图尺寸匹配的网格,利用
0.3 + 0.7 * mat2gray(X + Y) 公式生成一个对角线方向的光照渐变蒙版。 - 将原始图像与光照蒙版相乘,合成出具有明显光照不均匀特征的
input_img。
2. MASK匀光算法实现 (mask_dodging)
该算法模拟了传统摄影暗房的蒙版技术,代码实现策略如下:
- 色彩空间转换:对于彩色图像,算法首先将RGB空间转换为HSV空间,提取V分量(亮度)进行单独处理,以保持原始图像的色调信息不变。
- 背景估计:使用
imgaussfilt 函数对亮度分量进行大尺度的低通滤波(默认Sigma=50),得到反映光照分布的“背景图”。 - 匀光计算:执行经典的MASK公式:
输出 = 输入 × (全局均值 / 背景图)。代码中对分母进行了非零保护(归零处理),防止除零错误。 - 强度控制:处理后的亮度分量会进行归一化并乘以系数(0.95)防止过曝,最后转换回RGB空间。
3. Wallis滤波器实现 (wallis_filter)
Wallis算法通过强制图像的局部均值和方差逼近目标值来实现增强,代码采用了
色彩保持策略:
- 亮度提取:对于彩色图像,通过加权公式(0.2989R + 0.5870G + 0.1140B)计算灰度/亮度图。Wallis核心运算仅在灰度图上执行。
- 快速局部统计:在
run_wallis_channel 子函数中,利用均值卷积核(imfilter)快速计算图像的局部均值和局部平方均值,进而推导出局部标准差。这种方法避免了逐像素循环,提高了计算效率。 - 自适应调整:
* 根据设定的目标均值(Target Mean=0.5)和目标标准差(Target Std=0.2),结合对比度扩展系数(A=0.8)和亮度强制系数(B=0.8)计算每个像素的增益(r1)和偏移量(r0)。
* 公式逻辑为:
输出像素 = (输入像素 - 局部均值) × r1 + r0。
- 色彩恢复(Ratio Method):处理完亮度图后,代码计算处理后亮度与处理前亮度的比率图(Ratio Map),并将该比率应用到原始RGB的三个通道上。这种方法能最大程度地保留原始色彩信息,避免色彩失真。
4. 结果可视化
程序最后生成一个2行3列的图形窗口:
- 第一行(视觉对比):依次显示原始图像、MASK处理结果、Wallis处理结果。标题中动态标注了使用的关键参数(如Sigma值、窗口大小)。
- 第二行(数据对比):调用
draw_histogram 函数绘制对应的直方图。该函数具备自适应能力,针对彩色图像绘制R/G/B三色曲线,针对灰度图像绘制单色柱状图,直观展示算法对直方图均衡化和动态范围拉伸的效果。