MATLAB 图像全变分 (TV) 去噪系统
项目介绍
本项目是一款基于 Rudin-Osher-Fatemi (ROF) 全变分模型的图像去噪工具。它利用变分法和偏微分方程(PDE)原理,通过最小化由数据保真项和边缘正则化项组成的能量泛函,实现对受高斯噪声干扰图像的有效修复。该系统的核心优势在于其“各向异性”平滑特性,能够在强力滤除噪声的同时,精准锁定并保留图像中的边缘和纹理细节,避免了传统线性滤波带来的图像模糊问题。
---
功能特性
- 边缘保护去噪:采用 TV 正则化技术,在平滑均匀区域的同时严格保持物体的边缘轮廓。
- 多通道支持:程序能够自动识别彩色或灰度图像,并对 RGB 各个通道进行独立迭代处理。
- 全流程处理:集成了图像读取、噪声模拟(高斯噪声)、变分迭代求解、质量评价及可视化对比的全套功能。
- 客观评价指标:内置峰值信噪比 (PSNR) 与结构相似性 (SSIM) 分析功能,通过数据量化去噪效果。
- 数值稳定性控制:引入微小正数 epsilon 防止分母为零,并结合时间步长 dt 确保数值迭代过程的稳定性。
---
系统要求
- 平台:MATLAB (建议 R2016b 及以上版本以获得最佳兼容性)
- 工具箱:基础 MATLAB 环境(无需额外工具箱,所有算法均采用原生代码实现)
---
实现逻辑与算法细节
#### 1. 预处理与噪声注入
程序首先将图像数据转换为双精度浮点型并归一化至 [0, 1] 区间。若环境中缺少默认图像,系统会自动生成合成的 Peak 图像作为替代。通过向原始图像添加指定强度(标准差为 0.1)的高斯白噪声来模拟真实受到干扰的成像环境。
#### 2. TV 迭代核心算法
系统通过显式欧拉格式求解 ROF 模型对应的演化方程:u_t = div(grad(u)/|grad(u)|) - lambda * (u - f)。具体的数值实现包含以下关键步骤:
- 梯度计算:使用前向差分法计算图像在 x 和 y 方向的梯度(ux, uy)。
- 单位法向量化:计算梯度的模长,并对梯度进行归一化处理(nx, ny),在此过程中加入 epsilon 以保证数值计算的鲁棒性。
- 散度计算:对归一化后的矢量场采用后向差分法计算散度。这种“前向梯度+后向散度”的组合能够形成稳定的数值算子。
- 解更新:根据预设的时间步长和正则化参数 lambda,迭代更新图像像素值,并在每次迭代后进行 [0, 1] 范围的截断处理。
#### 3. 质量评估函数
- PSNR (Peak Signal-to-Noise Ratio):基于均方误差 (MSE) 计算,反映图像重构质量的对数指标。
- SSIM (Structural Similarity):实现了一种简化版的结构相似性算法,通过比较均值、方差和协方差来评估去噪图像与原始图像在结构信息上的保真度。
---
使用方法
- 参数调节:
* 调整
lambda 变量以控制去噪强度:数值越大,平滑效果越强,但可能损失微小纹理。
* 调整
num_iter 修改迭代次数:次数越多,去噪越彻底,计算耗时相应增加。
* 调整
dt 控制演化步长:需确保步长较小(如 0.2)以满足数值求解的稳定性要求。
- 执行程序:运行脚本后,系统会自动执行读取、去噪、计算指标并弹出结果窗口。
- 结果解读:
* 左侧显示原始无损图像。
* 中间显示添加高斯噪声后的图像及其 PSNR 值。
* 右侧显示经过 TV 迭代修复后的图像,可直观观察边缘保持效果及 PSNR 提升数值。