基于自适应稀疏域选择与正则化的图像复原系统 (ASDS-AR)
项目简介
本项目是一个基于MATLAB实现的图像复原系统,完整复现了IEEE Transactions on Image Processing (TIP) 2010年经典论文中的核心算法——ASDS-AR (Adaptive Sparse Domain Selection and Adaptive Regularization)。
该系统旨在解决图像处理中的病态反问题,特别是图像去模糊(Deblurring)与去噪。算法区别于传统使用全局固定字典的方法,采用自适应稀疏域选择(ASDS)策略,即根据图像局部的几何结构特征,动态选择最匹配的紧凑PCA子字典进行稀疏编码。同时,引入自适应正则化(AR)项,利用局部方差估计来动态调整收缩阈值,从而在有效抑制振铃效应和噪声的同时,最大程度地保留图像的边缘与纹理细节。
功能特性
- 全流程模拟:包含从原始图像读取、高斯模糊与噪声退化模拟,到最终图像复原的完整闭环。
- 自适应子字典学习:实现基于K-Means聚类和主成分分析(PCA)的局部结构学习,为不同纹理特征的图像块构建专属字典。
- 自适应稀疏编码:根据图像块的结构特征,自动选取最佳子字典进行稀疏表示。
- 自适应正则化(AR):基于图像局部方差(Local Variance)动态计算正则化阈值,实现平滑区域去噪与边缘区域细节保留的平衡。
- 迭代收缩重建:采用迭代收缩阈值算法(Iterative Shrinkage/Thresholding)求解反问题,结合频域加速计算。
- 多维度评估:提供主观视觉对比(原始图、退化图、复原图)、收敛曲线分析以及差值残差图,并计算PSNR和SSIM客观指标。
系统要求
- MATLAB (推荐 R2016b 或更高版本)
- Image Processing Toolbox (图像处理工具箱)
- 无需额外的第三方库,所有核心算法(包括聚类、PCA、SSIM计算)均在脚本中原生实现。
算法实现细节
本项目的主要执行脚本(main.m)严格遵循以下实现逻辑:
1. 参数配置与数据准备
系统首先初始化关键超参数,包括图像块大小(7x7)、聚类数量(16类)、PCA主成分数(10个)、迭代次数(50次)以及模糊核与噪声参数。
程序尝试读取内置的
cameraman.tif 图像,若文件不存在,则自动生成合成的正弦/余弦波纹图像作为基准(Ground Truth)。图像被调整为256x256大小并转换为灰度图。随后,通过施加高斯模糊(9x9 kernel)和加性高斯白噪声生成退化图像。
2. 初始估计与字典训练 (ASDS阶段)
- 样本提取:以初始退化图像作为估计源,按步长为1提取密集的重叠图像块作为训练样本。
- 聚类与字典构建:
*
预处理:对样本进行去均值处理。
*
结构聚类:使用简化的K-Means算法将图像块分为16个结构组(Cluster),每一组代表一种局部几何模式(如边缘、纹理、平滑区)。
*
PCA训练:对每一组样本分别计算协方差矩阵并进行奇异值分解(SVD),提取前10个主成分作为该类的紧凑子字典(PCA基)。
3. 迭代复原循环 (Reconstruction Loop)
系统进入最大为50次的迭代修复过程,利用
迭代收缩(Iterative Shrinkage)框架求解:
- 梯度下降步 (Data Fidelity Update):
利用频域(FFT)快速计算保真项的梯度,更新当前图像估计值,确保复原结果与观测退化图像在模糊模型下的一致性。
- 自适应稀疏编码步 (Adaptive Sparse Coding with AR):
* 提取当前估计图像的重叠块。
*
最佳域选择:计算每个块与各聚类中心的欧氏距离,匹配到最相似的结构簇,进而选择对应的PCA子字典。
*
变换域投影:将图像块投影到选定的PCA基上,得到系数值。
*
自适应阈值收缩:这是
AR正则化的核心实现。系统计算块的局部方差,方差越小(平滑区)阈值设得越高以抑制噪声,方差越大(边缘区)阈值设得越低以保留细节。
*
块重建:利用收缩后的系数和子字典重构图像块。
将处理后的重叠图像块累加回原位置,并根据重叠次数进行加权平均,消除块效应。
更新图像估计,并未下一轮迭代做准备,同时限制像素值在[0, 1]范围内。
4. 结果评估与可视化
迭代结束后,系统计算最终的PSNR(峰值信噪比)和SSIM(结构相似性)指标,并输出三组可视化结果:
- 对比展示:并排显示原始图像、退化图像和复原结果。
- 收敛分析:绘制PSNR随迭代次数变化的曲线。
- 残差图:以热力图形式展示复原结果与原始图像的绝对误差。
关键函数与算法说明
代码中包含以下关键辅助函数的具体实现:
负责将图像划分为重叠的块,并进行向量化处理,同时记录每个块在原图中的空间坐标,以便后续重建。
实现了ASDS的核心逻辑。它首先通过K-Means算法根据几何相似性对图像块进行聚类,然后针对对每个聚类子集执行PCA。为了代码的独立性,该函数内部手写了简化的K-Means迭代过程和SVD分解逻辑,不依赖MATLAB的高级统计工具箱函数。
基于均方误差(MSE)计算图像的峰值信噪比,用于量化复原质量。
原生实现了结构相似性索引(SSIM)算法。包含亮度、对比度和结构三个分量的计算,利用高斯加权窗口计算局部均值和方差,以此来更符合人眼视觉感知地评价图像质量。
使用方法
- 确保MATLAB环境已安装。
- 将
main.m 文件放置于工作目录。 - (可选) 将名为
cameraman.tif 的图片放入同级目录,否则系统将使用自动生成的合成图像。 - 直接运行
main 函数。 - 等待迭代过程完成(控制台会输出每5次迭代的PSNR值)。
- 观察弹出的可视化窗口及最终评价指标。