Дискретное вейвлет-преобразование на изображении с использованием вейвлета 'haar' в python - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь применить haar wavelet к изображению в python. Вот код

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 голосов
/ 27 июля 2018

Должно работать следующее:

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

Вы пропустили упаковку коффе в один кортеж.

...