合成孔径雷达(SAR)影像斑点噪声抑制系统
项目介绍
本项目是一个基于MATLAB开发的专业图像处理系统,旨在解决合成孔径雷达(SAR)成像过程中不可避免的斑点噪声(Speckle Noise)问题。由于SAR系统的相干成像原理,产生的图像通常带有严重的乘性噪声,严重影响后续的地物识别于解译。本系统提供了一套完整的处理流程,包括噪声模拟、多种自适应统计滤波算法的实现、去噪效果的定量评价以及可视化结果展示。
程序采用模块化设计,不仅能够处理外部图片,还内置了合成数据生成机制,便于在没有真实SAR数据的情况下进行算法验证和教学演示。
功能特性
- 智能数据输入:程序优先读取外部标准测试图像(如
cameraman.tif),若读取失败,则自动生成基于正弦波和余弦波的合成图像,确保程序在任何环境下均可运行。 - 高保真噪声模拟:不同于简单的加性噪声,本项目严格遵循SAR成像机理,使用 Gamma 分布生成乘性噪声。支持自定义视数(Looks),默认为4视,不仅增加了噪声,还模拟了SAR图像特有的颗粒感。
- 四大核心滤波算法:
*
Lee 滤波:基于局部统计特性的线性最小均方误差估计。
*
Frost 滤波:结合空间距离和局部变异系数的指数加权阻尼滤波。
*
Kuan 滤波:将乘性噪声模型转化为信号相关加性噪声模型的线性滤波。
*
Gamma MAP 滤波:基于贝叶斯原理的最大后验概率估计,针对纹理区域求解二次方程。
*
等效视数 (ENL):采用自动搜寻策略,在全图中寻找变异系数最小的 $32times32$ 均匀图块进行计算,比全局计算更客观准确。
*
斑点抑制指数 (SSI):衡量去噪前后图像散斑强度的比率。
- 多维度可视化:提供原始图、噪声图与四种滤波结果的同屏对比,以及灰度直方图的对比分析。
算法实现细节
本项目在 main.m 中严格实现了以下算法逻辑:
1. 噪声建模
程序首先将输入图像归一化为双精度浮点数。利用 MATLAB 统计工具箱的
gamrnd 函数生成服从 Gamma 分布的随机噪声矩阵,由于视数 $L=4$,噪声均值设为 1,方差设为 $1/L$。最终含噪图像通过原始图像与噪声矩阵相乘获得,并重新归一化至 $[0, 1]$ 区间。
2. 自适应滤波器详解
使用
colfilt 函数加速计算局部滑动窗口(默认为 $5times5$)内的均值和方差。算法根据局部变异系数 $C_i$ 与 理论噪声变异系数 $C_u$ 的关系动态计算权重。在平坦区域权重趋向于均值滤波,在边缘区域保留原始像素值,有效平衡平滑与边缘保持。
该算法实现采用了空间加权逻辑。程序首先计算局部窗口的变异系数,并引入阻尼因子(Damping Factor,设为2.0)。不同于其他滤波器,Frost 滤波通过双重循环遍历图像,根据像素点到窗口中心的欧氏距离生成指数衰减权重。距离越远、局部变化越剧烈,权重越小。
基于非平稳均值非平稳方差(NMNV)模型。程序直接利用推导出的 Kuan 滤波系数公式,通过估计信号方差来计算加权系数。相比 Lee 滤波,Kuan 滤波并未对模型进行线性近似,因此在理论上对信号的处理更为严谨。
这是实现最为复杂的滤波器。算法基于最大后验概率(MAP)准则,假设雷达截面服从 Gamma 分布。实现中采用了分割策略:
*
均匀区域:当局部观测到的变异系数小于理论噪声变异系数时,直接输出局部均值。
*
纹理/边缘区域:构建关于真实像素值的二次方程。程序计算参数 $alpha$,并根据 SIR-C/X-SAR 算法文档中的经典公式求解该反问题,提取方程的正根作为滤波结果。
3. 评价指标计算逻辑
为了避免将边缘和纹理区域误计入噪声统计,代码实现了一个块搜索算法。它将图像划分为 $32times32$ 的子块,遍历计算每个子块的变异系数,最终选取最平滑(变异系数最小)的子块来计算 ENL,$ENL = mu^2 / sigma^2$。
计算滤波图像变异系数与含噪图像变异系数的比值。值越小,且图像细节保持越好,说明综合性能越优。
使用方法
- 启动 MATLAB。
- 将工作路径切换至代码所在目录。
- 直接运行
main 函数。 - 程序将在命令行窗口输出各算法的定量评价指标(ENL 和 SSI),并弹出两个图形窗口:
*
窗口 1:显示原图、含噪图及四种算法的处理结果对比。
*
窗口 2:展示含噪图像与 Gamma MAP 滤波后的直方图变化,用于观察噪声分布的平滑情况。
系统要求
- MATLAB R2016a 或更高版本。
- Image Processing Toolbox (用于图像读取、显示、
colfilt、padarray 等操作)。 - Statistics and Machine Learning Toolbox (用于
gamrnd 生成 Gamma 分布噪声)。