基于小波变换融合的图像显著性检测系统
项目简介
本项目是一个基于MATLAB环境开发的图像显著性检测系统。该系统旨在模拟人类视觉注意力机制,通过分析图像的频域特性与色彩特征,自动提取图像中最吸引人眼注意的显著区域。核心算法采用了离散小波变换(Discrete Wavelet Transform, DWT)的多尺度分解特性,结合全局颜色对比度与中心先验机制,实现了高精度的显著图生成。该工具适用于图像预处理、目标检测、自适应压缩及视觉质量评价等领域。
功能特性
- 多色彩空间分析:支持将RGB图像转换至CIE Lab色彩空间,独立处理亮度(L)与颜色拮抗通道(a, b),更符合人眼感知特性。
- 鲁棒的输入处理:支持多种常见图像格式(jpg, png, bmp, tif),并内置了合成测试图像生成功能,在用户取消选图时自动演示系统流程。
- 小波域多尺度融合:利用Daubechies小波(db4)进行多层级分解,提取不同尺度下的高频细节特征,有效捕捉图像边缘与纹理变化。
- 全局与局部特征结合:算法不仅考虑了小波域的局部纹理能量,还融合了基于全局均值的对比度特征,增强了目标检测的完整性。
- 中心先验增强:内置高斯分布权重的中心先验机制,模拟人眼聚焦图像中心的视觉习惯,有效抑制边缘背景噪声。
- 自适应二值化分割:采用OTSU(大津法)自动计算阈值生成掩膜,并结合形态学开闭运算优化分割结果。
- 多视图可视化:提供原始图像、灰度显著图、二值化掩膜以及热力图叠加(Heatmap Overlay)的对比展示。
系统逻辑与算法实现
根据
main.m 的实际代码逻辑,系统的工作流程如下:
1. 图像输入与预处理
- 图像读取:系统首先尝试让用户通过UI选择图片。若用户取消,系统会自动调用
create_synthetic_image 生成一张带有噪声的蓝色背景红色圆形目标的测试图。 - 格式统一:强制将灰度图转换为伪RGB格式,并将像素值归一化为双精度浮点型
[0, 1]。 - 尺寸归一化:为了兼顾计算效率与细节,将图像的长宽最大边限制在512像素以内,使用双三次插值(bicubic)进行缩放。
- 去噪:使用 5x5 的高斯滤波器对输入图像进行平滑处理,去除高频噪声对后续小波系数的干扰。
2. 色彩空间转换
- 代码尝试利用图像处理工具箱将RGB转换为 CIE Lab 空间。
- 如果缺少相关工具箱,代码预留了自定义转换函数的调用逻辑(虽依赖外部实现,但保证了程序的健壮性)。
- 提取 L(亮度)、a(红绿)、b(黄蓝)三个通道,并分别进行特定的归一化处理。
3. 基于小波的显著性提取
这是系统的核心部分,针对 L、a、b 三个通道分别独立计算显著图:
- 环境检测与降级方案:首先检测是否存在 Wavelet Toolbox。若不存在,自动降级使用多尺度高斯差分(DoG)算法来近似显著性特征。
- 小波分解:使用
db4 小波基对通道数据进行 3 层分解(wavedec2)。 - 多尺度细节重构:
* 遍历每一层分解(1至3层),提取水平、垂直、对角三个方向的细节系数。
* 计算每一层的局部能量(三个方向系数绝对值之和)。
*
关键步骤:不使用传统的逆小波变换重构图像,而是将各层的能量图直接
imresize(上采样)回原图尺寸。
*
频域加权:采用
1/sqrt(i) 的权重策略,给予低层(高频)细节更高的权重,随后叠加所有层级的能量图。
- 全局特征融合:计算通道数据的全局均值,得到全局对比度图。
- 最终计算:将“多尺度小波局部能量”与“全局对比度(的平方根)”相乘,实现局部突变与全局独特性的非线性融合,最后进行高斯平滑。
4. 通道融合与后处理
- 加权融合:将三个通道的显著图按权重合并,其中亮度通道 L 权重为 0.5,颜色通道 a 和 b 各占 0.25。
- 中心先验(Center Bias):
* 构建与图像同尺寸的二维高斯分布权重矩阵。
* 假设显著目标大概率位于图像中心,利用该权重矩阵对显著图进行逐点加权,能够有效抑制四周的背景干扰。
- 归一化与恢复:将结果归一化至
[0, 1] 区间,并插值放大回原始图像的真实分辨率。
5. 结果生成与展示
- 二值化:利用
graythresh 计算全局最佳阈值,生成黑白二值掩膜。 - 形态学优化:依次使用闭运算(填充目标内部空洞)和开运算(去除孤立噪点)优化掩膜边缘。
- 可视化:生成 JET 色谱的热力图,利用 0.6 的透明度与原图叠加,在一个 2x2 的子图窗口中直观展示处理全过程。
关键函数解析
main()
主控函数,负责调度整个流水线,包括图像读取、预处理、调用显著性计算子函数、后处理(中心先验)、以及最终的绘图展示。
wavelet_saliency_extraction(channel_data)
核心算法函数。
- 输入:单通道图像数据。
- 逻辑:执行3级DWT分解,提取细节系数(H/V/D)。该函数创新性地通过调整不同层级细节能量的权重(
1/sqrt(i))并结合全局对比度,来强化显著区域的响应值。同时包含针对工具箱缺失的 DoG 备用算法。
generate_heatmap(img_rgb, sal_map)
辅助可视化函数。
- 将单通道的灰度显著图映射为伪彩色(Jet Colormap)。
- 通过
alpha = 0.6 的混合因子,将热力图与变暗的原图进行线性叠加,便于观察显著区域在原图中的位置。
create_synthetic_image()
测试辅助函数。
- 当用户未选择文件时触发。
- 生成一张 400x400 的图像,包含蓝色背景、坐标 (250, 200) 处的红色圆形目标,并叠加随机高斯噪声,用于验证算法的抗噪性和基本检测能力。
系统要求
- MATLAB R2016a 或更高版本(建议)。
- Image Processing Toolbox(必须,用于图像滤波、色彩转换、形态学处理)。
- Wavelet Toolbox(推荐,用于核心的小波分解算法;若缺失将自动切换至高斯差分模式)。
使用方法
- 确保 MATLAB 的当前路径包含
main.m 文件。 - 在 MATLAB 命令窗口输入
main 并回车。 - 在弹出的文件选择对话框中选择一张图片。
- 等待系统处理,结果窗口将自动弹出,展示 RGB 原图、显著性概率图、目标掩膜及热力图叠加结果。