2016-08-31 10 views
0

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

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

Это работает только на первом уровне. На самом деле, я хочу представить квадратный режим, такой wavemenu в Matlab. example of the view decomposition Я довольно новичок в этом. thanx.

ответ

0

Вы должны использовать функцию 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)) 

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

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^