我正在尝试对图像进行小波分析,我需要一些多尺度分解的方法。我正在试验pywavelts包。但是,dwt2
和idwt2
方法只提供一个尺度。我可以迭代这些方法,并对图像的较小区域应用单尺度分解;如果dwt2
的结果由4个数组组成:
---------
| A | B |
---------
| C | D |
---------
然后我可以将dwt2
应用于子阵列A
等等。然而,这里有一个困难,因为许多小波产生的数组比输入的数组大。注意在PyWavelets example page上使用的小波是db1
。但是如果我们尝试db2
:
所以我似乎不能执行多级分解,除了使用db1
(Haar小波)的。在
我知道在其他软件包中有各种各样的小波实现,但我不知道其中是否有任何一个提供了多维数据的鲁棒多尺度分解。我最好的选择是什么?在
问题是你的输入向量相对于小波的支持宽度很短。给定输入长度和滤波器长度的最大有效分解水平如下所示:
^{pr2}$max_level
是至少一个小波系数仍然正确的最深层次。在您的例子中,信号长度为8,小波分解滤波器长度(db2.dec_len
)为4,因此:Haar小波的滤波器长度为2,最大深度为3。pywavelts提供了方便函数^{} 来检查这一点。
通过将
level=
参数传递给pywt.wavedec()
,可以强制任何任意高的分解级别:但这是毫无意义的:你只会得到杂散系数,因为在小波滤波器和信号之间不再有足够的重叠。
相关问题 更多 >
编程相关推荐