使用' haar'对图像进行离散小波变换。 python中的小波

时间:2018-05-13 09:36:14

标签: image python-2.7 image-processing haar-wavelet dwt

我正在尝试在python中的图像上应用haar wavelet。这是代码

from pywt import dwt2, idwt2
img = cv2.imread('xyz.png')
cA, (cH, cV, cD) = dwt2(img, 'haar')  

然后我修改嵌入一些数据的系数,如下面给出的

cH1=cH+k*pn_sequence_h
cV1=cV+k*pn_sequence_v

之后,我将idwt应用于下面的代码

idwt2(cA,(cH1,cV1,cD),'haar')[:Mc,:Nc]

其中Mc和Nc是分解图像的高度和宽度。

但是,我收到此代码的错误。以下是错误。

 Traceback (most recent call last):
 File "dwt.py", line 15, in <module>
 idwt2(cA,(cH1,cV1,cD),'haar')[:Mc,:Nc]
 File "C:\Python27\lib\site-packages\pywt\_multidim.py", line 104, in idwt2
 LL, (HL, LH, HH) = coeffs
 ValueError: too many values to unpack

我该怎么做才能解决此错误?我是python的新手。任何帮助将不胜感激。

我也在下面的代码中尝试过这样的。但在这里,我不会得到CA,CH,CV,CD等系数。我得到的是所有系数。

import numpy as np
import pywt
import numpy
import PIL
from PIL import Image
img = PIL.Image.open("rot.png").convert("L")
imgarr = numpy.array(img) 
coeffs = pywt.dwt2(imgarr, 'haar')
pywt.idwt2(coeffs, 'haar')

1 个答案:

答案 0 :(得分:1)

以下方法应该起作用:

idwt2((cA,(cH1,cV1,cD)),'haar')[:Mc,:Nc]

您错过了将coeff打包到一个元组中的情况。