2017-03-07 5 views
1

J'ai essayé d'appliquer un unique niveau vaguelettes décimé se transforment en un arrangement de numpy 3D en utilisant la fonction swtn du paquet pywavelets en python comme suit:un niveau décimé vaguelettes se transforment en l'erreur de tableau 3D

import numpy as np 
from pywavelts import swtn 

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

qui monte une erreur:

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. 

Cependant, cela ne me fait pas de sens puisque la valeur du niveau de départ inférieur à 0 est pas autorisé par la décomposition en ondelettes. Quelqu'un pourrait-il jeter un coup d'œil et me signaler ce qui me manque?

Répondre

0

J'ai juste eu la même erreur se produisant. Il est dû à la taille du tableau que vous utilisez: car il est non divisible par 2, le nombre maximum de niveaux, donnée par la fonction:

pywt.swt_max_level 

est 0. Par exemple, ceci:

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

fonctionne pour moi.