簡體   English   中英

在python中使用'haar'小波對圖像進行離散小波變換

[英]Discrete wavelet transformation on image using 'haar' wavelet in python

我正在嘗試在python中的圖像上應用haar小波。 這是代碼

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')

以下應該工作:

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

您錯過了將coeff打包到單個元組中的情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM