基于学习字典的稀疏冗余表示图像降噪系统(K-SVD实现)
项目介绍
本项目实现了一种经典的基于稀疏表示理论的图像降噪算法。与传统的使用固定基(如傅里叶变换或小波变换)的方法不同,该系统通过K-SVD算法从含噪图像自身中学习出一个过完备字典。这种方法能够根据图像的具体内容自动调整字典原子,使其更好地捕捉边缘、纹理等结构化特征,从而在滤除高斯噪声的同时,最大限度地保持图像的细节和清晰度。
功能特性
- 自适应字典学习:系统不依赖于预定义的基函数,而是通过迭代学习,使字典原子逐步逼近图像的本质结构。
- 过完备稀疏表示:通过构建远大于信号维度的原子库,为图像块提供极高的表示自由度。
- 高效稀疏编码:采用正交匹配追踪(OMP)算法,在给定稀疏度约束下快速求解最优表示系数。
- 重叠块处理与重建:采用滑动窗口机制处理图像块,并通过重叠区域的加权平均有效消除边界效应。
- 全局残差加权:在重建阶段引入全局优化逻辑,平衡去噪平滑度与原始图像信息的保留。
- 全方位性能评估:内置PSNR(峰值信噪比)与SSIM(结构相似性)评价指标,直观展现降噪效果。
系统要求
- MATLAB R2016b 或更高版本
- 图像处理工具箱(Image Processing Toolbox)
使用方法
- 准备待处理图像,确保路径配置正确。
- 设置降噪参数,包括噪声标准差(Sigma)、图像块尺寸(BlockSize)、字典原子数(DictSize)以及迭代次数(Iterations)。
- 运行主函数,系统将自动依次执行:添加噪声、训练字典、全图重构、计算指标及结果可视化。
- 运行结束后,系统会弹出可视化窗口,对比展示原始图、含噪图、降噪图以及学习得到的字典原子。
核心实现逻辑与算法细节
1. 初始化阶段
系统首先将输入图像转换为双精度浮点型并进行灰度化处理。随后生成加性高斯白噪声图像。字典的初始化采用了离散余弦变换(DCT)基,这为迭代学习提供了一个良好的初始搜索起点。
2. 训练样本提取
系统通过滑动窗口(Sliding Window)方式从含噪图像中提取互有重叠的小尺寸图像块(默认为8x8)。为了提高计算效率,系统从数万个潜在图像块中随机采样一部分作为训练集。在送入字典学习前,每个样本块都会减去其自身均值,以确保字典专注于学习图像的结构特征而非亮度差异。
3. K-SVD 迭代学习
这是系统的核心,包含两个交替进行的步骤:
- 稀疏编码阶段:利用正交匹配追踪(OMP)算法,在当前字典下为每个训练块寻找最匹配的原子组合。系统通过设置L0范数(非零系数个数)作为稀疏度阈值来控制编码硬度。
- 字典更新阶段:逐个更新字典原子。对于每个原子,系统首先锁定所有使用了该原子的图像块,计算去除该原子后的表示误差矩阵。通过对误差矩阵进行奇异值分解(SVD),提取出能够最大程度减小误差的新原子向量和相应的稀疏系数。
4. 原子失效处理
在迭代过程中,如果某个原子没有被任何图像块选中(即使用率为0),系统会自动检测当前预测误差最大的图像块,并将其归一化后替换该失效原子。这一机制保证了字典的利用率和学习的鲁棒性。
5. 全局稀疏重构
字典学习完成后,系统对图像中所有重叠的图像块进行最终的稀疏重构。每个块在学习到的过完备字典下进行编码,重构后的图像块会加回其原始均值。
6. 重叠加权平均与后处理
由于图像块是高度重叠的,每个像素点会得到多个不同的预测值。系统首先对这些重叠值进行简单求和,并除以每个位置的覆盖次数(权重图)。最后,利用一个受噪声标准差调控的λ因子,将重构后的图像与原始含噪图像进行线性加权融合。该步骤不仅能显著抑制重构伪影,还能通过引入少量原始观测信息来进一步增强图像的视觉自然度。
7. 性能评估与可视化
系统通过对比降噪前后的PSNR和SSIM数值来量化降噪质量。可视化模块会将256个字典原子排列成矩阵形式展示,用户可以清晰地观察到原子从初始的基函数形式转化为具有特定方向、频率和纹理特征的图像基元的过程。