基于Minh N. Do论文的Contourlet变换算法实现与应用
项目简介
本项目复现并实现了一种基于Minh N. Do经典学术论文的Contourlet变换(轮廓波变换)图像处理系统。Contourlet变换作为一种多尺度几何分析(MGA)工具,旨在克服传统小波变换在处理图像高维奇异性(如平滑轮廓和方向纹理)时的局限性。
本代码主要基于MATLAB环境,构建了一个完整的双滤波器组结构系统,能够对图像进行多尺度、多方向的稀疏分解,并能通过逆变换实现图像的完美重构。与传统的空间域下采样实现不同,为了演示清晰度及频域处理的精确性,本项目采用频域掩膜(Frequency Domain Masking)的方式模拟拉普拉斯金字塔(LP)与方向滤波器组(DFB)的级联,这种实现方式在视觉效果和稀疏特性上等效于无下采样Contourlet变换(NSCT),具有平移不变性。
主要功能特性
- 多尺度几何分析:实现了能够同时捕获点奇异性(通过多尺度分解)和线奇异性(通过方向分解)的图像表示方法。
- 频域实现架构:利用FFT和频域掩膜技术代替传统的时域卷积与下采样,避免了边界处理的复杂性,并自然保持了图像的全分辨率(Shift-invariant)。
- 灵活的参数配置:支持自定义金字塔分解层数及每一层对应的方向分解级数(如将高频分为8、16、32个方向)。
- 非线性逼近与去噪:演示了基于系数阈值保留(如仅保留幅度最大的10%系数)的图像压缩与去噪能力。
- 完美重构验证:实现了从变换系数到原始图像的逆变换,通过计算残差验证算法的重构精度。
- 全方位可视化:提供了包含原始图像、系数分布、频域划分示意、重构图像、逼近结果及残差图的综合展示界面。
系统要求与运行环境
- 编程语言:MATLAB
- 工具箱依赖:Image Processing Toolbox (用于图像灰度转换及Phantom图像生成)
- 版本建议:推荐使用 MATLAB R2016a 及以上版本以获得最佳图形显示效果。
核心算法逻辑与实现细节
本项目以 main.m 为核心入口,整个处理流程严格遵循以下步骤:
1. 初始化与图像生成
系统不依赖外部图片文件,而是利用MATLAB内置函数生成
Modified Shepp-Logan Phantom 仿真图像(512x512)。随后将图像转换为灰度并归一化到 [0, 1] 区间,确保处理数据的数值稳定性。
2. Contourlet 正向分解 (算法核心)
代码通过
contourlet_dec 函数实现分解过程。
- 参数配置:设定分解层向量
nlevels(例如 [3, 3, 4]),表示从细尺度到粗尺度分别将高频分量分解为 $2^3, 2^3, 2^4$ 个方向。 - LP分解 (多尺度):在循环中,利用各向同性的低通和高通频域滤波器将图像分离为低频(逼近)和高频(细节)分量。低频分量作为下一层分解的输入。
- DFB分解 (多方向):针对每一层的高频分量,生成对应数量的方向扇形掩膜(Wedge Masks),在频域进行切割,从而提取出不同方向的纹理细节。
- 特性说明:代码注释中明确指出,为了保持全分辨率利于特征提取,此处未进行物理下采样,采用了类似无下采样Contourlet变换(NSCT)的架构。
3. 非线性逼近
通过
threshold_coeffs 逻辑,模拟图像压缩或去噪过程。系统计算所有Contourlet系数的幅度,仅保留能量最强的一部分系数(默认为10%),将其余小系数置零。这一步展示了Contourlet变换在稀疏表示方面的优势。
4. Contourlet 逆变换 (重构)
通过
contourlet_rec 函数实现图像恢复。
- 逆向合成:从最粗尺度的低频分量开始,逐层向上合并。
- 子带求和:由于正向变换是在频域通过掩膜分割的(假设掩膜和为1),逆变换过程简化为将各方向子带信号直接求和,再叠加低频分量,从而恢复出上一层的图像。
- 质量验证:同时对“原始完整系数”和“处理后的稀疏系数”进行重构。
5. 结果评估与可视化
系统最后会计算并输出量化指标,并绘制综合图表:
- 量化指标:计算重构图像的峰值信噪比 (PSNR) 和均方误差 (MSE)。
- 可视化图表:
*
原始图像:归一化后的输入图。
*
Contourlet系数:展示多尺度多方向的稀疏系数分布。
*
频域方向划分:演示方向滤波器在频域的楔形支撑区间(可视化基函数特性)。
*
完美重构:展示无损重构结果及极小的数值误差。
*
非线性逼近:展示仅保留10%系数后的重构效果及对应的PSNR值。
*
残差图像:显示原始图像与逼近图像之间的差值,直观反映丢失的信息。
使用方法
- 确保MATLAB当前路径包含项目的源码文件。
- 在MATLAB命令窗口输入
main 并回车,或在编辑器中打开 main.m 并运行。 - 系统将自动生成测试图像,执行全套变换流程,并在控制台输出耗时与评价指标。
- 运行结束后,会弹出一个包含6个子图的图形窗口,展示从输入到重构的完整分析结果。