SurfBox: 基于多维方向滤波组与Surfacelet变换的工具箱
项目介绍
SurfBox 是一个专注于多维信号处理的高效算法库,其核心在于实现多维方向滤波组(Directional Filter Bank, DFB)以及 Surfacelet 变换。作为二维 Contourlet 变换在三维空间中的推广,Surfacelet 变换旨在解决传统小波变换在处理高维信号(如三维体数据)时,对平滑曲面边缘表示效率低下的问题。该工具箱利用频率域的精细切分,能够以极少的系数精准捕获具有任意方向性的几何特征。
功能特性
- 多尺度分解:通过拉普拉斯金字塔(Laplacian Pyramid)结构实现信号的尺度分解。
- 高度定向性:在三维频率空间中构建 6 个主方向的扇形锥体滤波器,捕获复杂的几何表面。
- 完美重构:设计了精确的逆变换机制,确保信号在无处理情况下可以实现数学上的完美重构。
- 频率域优化:算法核心基于快速傅里叶变换(FFT)实现,通过频率掩模(Frequency Masking)实现快速切分与平滑过渡。
- 实用的降噪演示:内置基于硬阈值处理的降噪流程,显著提升含噪三维信号的峰值信噪比(PSNR)。
算法实现逻辑
工具箱的主程序(main.m)完整展示了从信号生成、变换、处理到可视化的全流程:
- 环境初始化与数据生成
程序首先定义了三维空间的维度(默认 64x64x64)和分解层数。通过构建网格坐标系,生成一个理想的正球体三维模型(二值信号),并向其注入高斯白噪声,作为后续处理的待预测数据。
- Surfacelet 正向变换
调用分解函数,采用迭代结构:
- 在每一层中,利用三维拉普拉斯塔式分解将信号分为低频支路和高频支路。
- 针对每一层产生的高频支路,应用 3D 方向滤波组进行定向增强,将其切分为 6 个代表不同空间方位(X、Y、Z 轴正负方向)的方向子带。
- 变换域阈值处理
降噪逻辑通过硬阈值算法实现。程序遍历所有尺度的所有方向子带系数(不包含最后一层的残差低频分量),将绝对值小于 3 倍噪声标准差(3*sigma)的系数置零,从而抑制噪声,保留代表物理边界的高模值系数。
- Surfacelet 逆变换
重构过程是分解的逆过程:
- 首先在频率域合并 6 个方向子带,恢复出对应尺度的高频分量。
- 然后将恢复的高频分量与该层对应的低频分量进行累加重构。
- 逐层迭代,最终还原为三维时域信号。
- 多维度结果评估
- 切片展示:选取三维体数据的中间切片,对比原始信号、含噪信号与降噪后的视觉差异。
- 子带系数可视化:展示特定尺度和方向的变换系数,反映算法对边缘方向的处理能力。
- 等值面渲染:利用 isosurface 技术展示原始信号与重构信号的三维物理表面,验证几何保真度。
- 定量指标:计算并输出重构信号的 PSNR 值,衡量降噪性能。
关键函数与实现细节
表面波分解与重构核心
算法通过递归方式结合了尺度分割与方向分割。分解函数确保了频率空间的完备覆盖,每一层都产生一组方向系数和一份缩小的低频快照。
三维拉普拉斯塔式分解 (LP Split)
在频率域中,通过计算频率点到原点的欧氏距离,构建一个半径为 π/2 的理想低通滤波器掩模。为了抑制吉布斯效应(Gibbs effect),代码对掩模边缘执行了高斯平滑处理。
3D 方向滤波组 (3D DFB)
这是工具箱的几何处理核心。它通过比较频率轴分量(|X|, |Y|, |Z|)的大小关系,将三维频率空间划分为 6 个相互衔接的锥体区域:
- 方向 1 & 2:由 X 轴主导的锥体区域。
- 方向 3 & 4:由 Y 轴主导的锥体区域。
- 方向 5 & 6:由 Z 轴主导的锥体区域。
这种切分方式允许系统分别提取不同轴向分布的平滑表面信息。
数值稳定性处理
在应用频率掩模时,使用了平滑窗口处理掩模边缘,确保了在执行逆变换累加时,频率域的重叠区域能够平滑过渡,减小了边界失真。
系统要求
- 操作系统:Windows, Linux, 或 macOS。
- 环境软件:MATLAB R2016b 或更高版本。
- 可选工具箱:Image Processing Toolbox(用于
smooth3 等平滑函数,若缺失,项目内提供了自定义的辅助平滑函数作为替代方案)。 - 硬件建议:建议 8GB 以上内存,以处理较大尺寸的三维矩阵运算。