基于FISTA算法的小波域图像去模糊项目说明
项目介绍
本项目实现了一种用于图像去模糊的快速迭代软阈值算法(FISTA)。通过结合小波变换的稀疏性表示和L1正则化,该程序能够从带有高斯模糊和加性噪声的受损图像中恢复出清晰的原始图像。相比于传统的迭代收敛算法,本项目采用的加速策略能够显著提高收敛速度,在保持图像细节的同时有效抑制伪影。
功能特性
- 自动化的图像退化模拟:程序能够自动构建高斯模糊模型并添加指定方差的加性高斯噪声。
- 自定义小波基算子:内置了多层Haar小波变换(分层解构与重构),无需依赖外部小波工具箱。
- 高效的FISTA优化:集成了Nesterov加速步长和线性组合更新机制,加速梯度的近端映射过程。
- 步长自动评估:基于光学传递函数(OTF)计算Lipschitz常数,以确定最优的下降步长。
- 双指标质量评估:内置了峰值信噪比(PSNR)和结构相似性(SSIM)计算模块。
- 可视化分析:动态生成优化过程中的目标函数收敛曲线、PSNR提升曲线以及修复前后的直观对比图。
实现逻辑与流程
- 参数初始化:设置模糊核大小(默认15)、标准差(3.0)、噪声方差、正则化参数lambda以及迭代次数。
- 数据准备:载入测试图像(默认为cameraman或自定义幻影图),进行归一化处理。
- 退化建模:
- 构造高斯点扩散函数(PSF)。
- 为利用快速傅里叶变换(FFT),对PSF进行填充和中心移位处理。
- 在频域执行卷积操作生成模糊图像,并叠加随机噪声。
- 计算Lipschitz常数:通过卷积核功率谱的最大值确定算法的稳定旋转步长。
- 迭代循环:
- 计算加速变量:根据当前的t值计算组合权重beta,生成中间变量。
- 梯度计算:在图像空间计算残差梯度,通过小波正变换将其投影至小波系数域。
- 近端算子更新:应用软阈值函数处理小波系数,实现L1正则化约束。
- 系数重构:将更新后的小波系数映射回图像空间。
- 指标记录:每轮迭代记录当前的目标函数值(数据保真项+正则项)和PSNR。
- 结果展现:输出最终图像数据,并绘制收敛分析图表。
关键函数与算法分析
- 软阈值算子 (soft_threshold):
这是L1范数正则化的近端映射核心。它通过对小波系数进行非线性收缩,将绝对值小于阈值的能量归零,从而实现信号的稀疏化,过滤大部分噪声干扰。
- 多层Haar小波算子 (my_wavelet_dec/rec):
采用矩阵拆分形式实现了正向分解和逆向重构。分解过程通过对图像行和列分别进行平均(低频)和差分(高频)运算,将图像能量集中在少数关键系数上;重构过程则逆向执行该逻辑,确保能量守恒。
- FISTA加速机制:
不同于标准的近端梯度下降(IST),FISTA引入了一个辅助变量t和动量因子beta。每一轮更新不仅依赖当前的梯度,还结合了前两轮迭代的信息,使得算法的收敛速度达到O(1/k^2)。
- 频域梯度计算:
程序巧妙地利用了卷积定理,在频域完成前向模糊(A)和共轭转置运算(A'*),极大地提升了处理大规模图像时的运算效率。
使用方法
- 运行环境:建议使用MATLAB R2016b及以上版本。
- 启动方式:直接在MATLAB命令行窗口输入main并回车。
- 参数调节:
- 若图像噪声较大,可适当调大lambda的值。
- 若模糊程度严重,可增加kernel_size和sigma_blur的大小。
- 可通过修改max_iter来观察长时迭代下的演化趋势。
- 结果查看:程序运行结束后,会自动弹出图像对比窗口和数据曲线窗口,并在终端打印最终的评价指标。
系统要求
- 软件:安装有MATLAB环境的计算机(支持基础矩阵运算和绘图功能即可)。
- 硬件:至少4GB以上内存,以支持大尺寸图像的FFT计算和矩阵存储。
- 依赖:无需安装第三方工具箱,所有核心逻辑均在主程序内实现。