一个级别的未记录小波在3D numpy阵列误差中转换



我一直在尝试使用来自Python的Package Pywavelets的函数SWTN应用一个级别的未确定小波转换为3D numpy布置,如下所示:

import numpy as np
from pywavelts import swtn
img = np.random.rand(4,4,5)
WT = swtn(img, 'coif1', level = 1, start_level = 0) 

引起错误:

Traceback (most recent call last):
  File "<ipython-input-60-1f6f4144a239>", line 1, in <module>
    pywt.swtn(img, 'coif1', level=1, start_level =0, axes=None)
  File "/usr/local/lib/python2.7/dist-packages/pywt/_swt.py", line 387, in swtn
    axis=axis)[0]
  File "pywt/_extensions/_swt.pyx", line 100, in pywt._extensions._swt.swt_axis (pywt/_extensions/_swt.c:6203)
  File "pywt/_extensions/_swt.pyx", line 116, in pywt._extensions._swt.swt_axis (pywt/_extensions/_swt.c:5035)
ValueError: start_level must be less than 0. 

但是,这对我来说没有意义,因为小波分解不允许小于0的起始水平值。有人可以看一下,指出我缺少的东西吗?

我刚发生相同的错误。这是由于您使用的数组的大小:由于它不可用2整体,最大级别数,由功能给出:

给出。
pywt.swt_max_level

是0。例如,此:

img = np.random.rand(4,4,6)
WT = swtn(img, 'coif1', level = 1, start_level = 0) 

为我工作。

从"注意"可在pywt.swtn文档页面上找到

....要求沿变换轴的信号长度为2 **级别的倍数。如果不是这种情况,则用户应使用numpy.pad.

等函数达到适当的尺寸。

在您的情况下,第三轴的尺寸应为2的倍数。

相关内容

  • 没有找到相关文章

最新更新