matlab 小波变换

[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters('haar');%获得Haar小波的尺度和小波系数
Lo_D     %打印低通分解滤波器系数
Hi_D     %打印高通分解滤波器系数
Lo_R     %打印低通重构滤波器系数
Hi_R     %打印高通重构滤波器系数

waveinfo('haar');   %打印Haar小波相关信息

[phi,psi,xval]=wavefun('haar',10);%wavefun函数产生尺度向量和小波向量
xaxis=zeros(size(xval));  %y轴
axis square;
title('Haar Scaling Function');
  subplot ( 122 ) ; plot ( xval , psi , ' k ' , xval , xaxis , ' - k ' ) ; % 绘制小波向量
 axis ( [ 0 1 -1.5 1.5 ] ) ; % y轴
axis square ;
title ( 'Haar Wavelet Function ' ) ;

f = magic (4 ) ;  % f 是4 X 4的魔术矩阵
f
% 对f 进行一次小波分解,c1是系数矩阵,s1是c1各分量的维数。
[C1,S1]=wavedec2(f,1,'haar');
C1
S1
[ C2 , S2 ] = wavedec2 ( f , 2 , ' haar ' ) ;
C2
S2

f = imread ( '你的图 ' ) ;  
imshow ( f ) ;
[C,S] = wavefast( f , 1 ,'sym4' ) ;
% 以4格灰度图像方式显示小波分解结果
figure , wave2gray ( C , S , -6 ) ;
[ nc , y ] = wavecut ( 'a' , C , S ) ;  % 去掉分解结果中的近似系数
figure , wave2gray ( nc , S , -6 ) ;  % 显示处理后的小波系数
% 小波反变换,得到边缘图像
edges = abs ( waveback ( nc , S , 'sym4' ) );
figure , imshow ( mat2gray ( edges ) ) ;   % 显示边缘图像

f = imread ( '你的图' ) ;
[ C , S ] = wavefast ( f , 4 , 'sym4' ) ;  % 4层小波分解
wave2gray ( C , S , 20 ); % 以图像形式显示小波系数
% 第一层分解的小波系数置为0 ,并显示反变换后的图像
[ C , g8 ] = wavezero ( C , S , 1 , 'sym4' ) ;  % wavezero 函数请见7.6节
% 第一,二层分解的小波系数置为0 ,并显示反变换后的图像
[ C , g8 ] = wavezero ( C , S , 2 , 'sym4' ) ;  
% 第一,二,三层分解的小波系数置为0 ,并显示反变换后的图像
[ C , g8 ] = wavezero ( C , S , 3 , 'sym4' ) ;
% 4层分解的小波系数都置为0 ,并显示反变换后的图像
[ C , g8 ] = wavezero ( C , S , 4 , 'sym4' ) ; 

f = imread ( '你的图' ) ;  
[ C , S ] = wavefast( f,4,'jpeg9.7') ;  % 4层小波分解
wave2gray ( C , S , 8 ); % 显示处理后的小波系数
f = wavecopy ('a', C , S ) ;  % f 是第4层分解后的近似系数
figure , imshow ( mat2gray ( f ) ) ;  % 显示第4层分解后的近似图像
[ C , S ] = waveback(C,S,'jpeg9.7',1) ;   % 一次重构
%  f 是第3层分解后的近似图像
f = wavecopy ('a',C,S) ;
% 显示第3层分解后的近似图像
figure , imshow ( mat2gray ( f ) ) ;
% 二次重构
[ C , S ] = waveback(C,S,'jpeg9.7',1) ;
%  f 是第2层分解后的近似系数
f = wavecopy ('a',C,S) ;
% 显示第2层分解后的近似图像
figure , imshow ( mat2gray ( f ) ) ;
[C,S]= waveback(C, S,'jpeg9.7',1);%三次重构
f = wavecopy('a', C, S);%f是第1层分解后的近似函数
figure, imshow(mat2gray(f));%显示第1层分解后的近似图像
[C, S]= waveback(C, S, 'jpeg9.7', 1); %四次重构
f = wavecopy('a', C, S);%f是最终重构后的图像
figure, imshow(mat2gray(f)); %显示重构后的最终图像

f = imread ( '你的图 ' ) ; 
[ C , S ] = wavefast( f,2,'db4') ;  % 4层小波分解
wave2gray(C,S); % 显示处理后的小波系数
figure,wave2gray(C,S,8);
figure,wave2gray(C,S,-8);

发布了125 篇原创文章 · 获赞 31 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/Fiverya/article/details/90375030