我对使用 SWT 对 3D 数据阵列执行多分辨率分析很感兴趣。但是我找不到任何实现它的软件包。小波的 Matlab 工具箱(我认为最完整的)只有 3D DWT 和 2D SWT,所以我的问题是:
- 那里有 3D SWT 的工作实现吗?
- 如果没有,我该如何实施?(一些参考可能)
我对使用 SWT 对 3D 数据阵列执行多分辨率分析很感兴趣。但是我找不到任何实现它的软件包。小波的 Matlab 工具箱(我认为最完整的)只有 3D DWT 和 2D SWT,所以我的问题是:
从 0.5.0 版本开始,PyWavelets 包中有一个用于 Python 的通用n 维 SWT 。
存储在 NumPy 数组中的基本用法data如下(此处显示 4 级分解和 Debauchies 'db2' 小波)。PyWavelets 使用与 Matlab Wavelet Toolbox 相同的小波命名约定。
import pywt
coeffs = pywt.swtn(data, wavelet='db2', level=4)
对于我的系统上的 128x128x128 数据阵列,上面的示例需要 <2 秒。
如果您愿意从源代码构建,主分支中还有一个 n 维逆 SWT 可用。请注意,逆平稳小波变换当前没有以非常有效的方式实现(特别是对于大量的分解级别)。
在 3D 中,SWT(1 + 7*L)对于一个L级别的分解是冗余的(尽管 PyWavelets 中的实现目前返回每个级别的近似系数,而不仅仅是最后一个,导致8*L3D 中的冗余)。