Как отобразить вейвлет разложения на 3 уровне?

Я хочу отобразить вейвлет разложения на 3 уровне. так может ли кто-нибудь помочь мне дать функцию Matlab для ее отображения?

[cA cH cV cD]=dwt2(a,waveletname);
out=[cA cH;cV cD];
figure;imshow(out,[]);

Это работает только для первого уровня. на самом деле, я хочу представить квадратный режим такого волнового меню в Matlab. пример декомпозиции представления Я новичок в этом. спасибо


person Serve    schedule 31.08.2016    source источник


Ответы (1)


Вы должны использовать функцию wavedec2(Image,numberOfLevels,'wname') с нужным вам количеством уровней. Для получения дополнительной информации см. http://www.mathworks.com/help/wavelet/ref/wavedec2.html

Код например с db1

clear all
im = imread('cameraman.tif');
[c,s] = wavedec2(im,3,'db1');
A1 = appcoef2(c,s,'db1',1);
[H1,V1,D1] = detcoef2('all',c,s,1);
A2 = appcoef2(c,s,'db1',2);
[H2,V2,D2] = detcoef2('all',c,s,2);
A3 = appcoef2(c,s,'db1',3);
[H3,V3,D3] = detcoef2('all',c,s,3); 

V1img = wcodemat(V1,255,'mat',1);
H1img = wcodemat(H1,255,'mat',1);
D1img = wcodemat(D1,255,'mat',1);
A1img = wcodemat(A1,255,'mat',1);

V2img = wcodemat(V2,255,'mat',1);
H2img = wcodemat(H2,255,'mat',1);
D2img = wcodemat(D2,255,'mat',1);
A2img = wcodemat(A2,255,'mat',1);

V3img = wcodemat(V3,255,'mat',1);
H3img = wcodemat(H3,255,'mat',1);
D3img = wcodemat(D3,255,'mat',1);
A3img = wcodemat(A3,255,'mat',1);

mat3 = [A3img,V3img;H3img,D3img];
mat2 = [mat3,V2img;H2img,D2img];
mat1 = [mat2,V1img;H1img,D1img];

imshow(uint8(mat1))

Окончательный результат

введите здесь описание изображения

person Amitay Nachmani    schedule 31.08.2016