概述
在Matlab图像处理中,小波变换对应的函数都有下面这些:
1、
dwt2二维离散小波变换
[cA,cH,cV,cD]=dwt2(X,'wname')%使用指定的小波基函数对矩阵X进行二维离散小波变换
[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) %使用指定的低通滤波器Lo_D和高通滤波器Hi_D分解信号
%cA--近似分量(低频分量);cH--水平方向细节分量
cV--垂直方向细节分量;cD--对角方向细节分量
这个代码写起来就很简单啦~~~奉上代码
A=imread('lena.png');
[cA,cH,cV,cD]=dwt2(A,'haar');%使用haar小波
figure,imshow(A);title('原图');
figure,subplot(2,2,1),imshow(uint8(cA)),title('低频分量');
subplot(2,2,2),imshow(uint8(cH)),title('水平细节分量');
subplot(2,2,3),imshow(uint8(cV)),title('垂直细节分量');
subplot(2,2,4),imshow(uint8(cD)),title('对角线细节分量');
2、
wavedec2 二维多尺度分解
[C,S]=wavedec2(X,N,'wname')%使用指定的小波基函数对矩阵X进行N层分解
[C,S]=wavedec2(X,N,Lo_D,Hi_D)%使用指定的低通滤波器Lo_D和高通滤波器Hi_D分解信号为N层;
%C为各层分解系数,S为各层分解系数的大小(行数及列数)
在这里,一开始我对这个函数的理解是比较困难的,后来通过一段程序辅助了一下理解:
查阅一些博客,才知道
c=[A(N)|H(N)|V(N)|D(N)|H(N-1)|V(N-1)|D(N-1)|H(N-2)|V(N-2)|D(N-2)|...|H(1)|V(1)|D(1)]
s=[m(A(N)) n(A(N)); m(|H(N)|V(N)|D(N)) n(|H(N)|V(N)|D(N));
m(|H(1)|V(1)|D(1)) n(|H(1)|V(1)|D(1));m(X) n(X)]
(ps!!!!!!这张Matlab帮助文档里的图比我列的清楚多了,看不懂在看我的,(*^__^*) 嘻嘻……)
A(N)为第N层低频系数(近似分量),H(N)|V(N)|D(N)对应高频系数,分别对应水平高频分量|垂直高频分量||对角方向高频分量
c的矩阵如下图所示
可以看出c实际上是一个1×117307的行向量(图像大小341*341=117307),c以行向量的形式存储了个分量中所有的值;
工作区各变量的大小如图所示,原图的大小为341×341,第一层分解得出的各分量大小为171×171,第二层分解各分量大小为86×86。
clc,clear all,close all;
X=imread('3.bmp');
[c,s]=wavedec2(X,2,'db1');%进行2尺度二维离散小波分解。分解小波函数-db1
[cH1,cV1,cD1]=detcoef2('all',c,s,1);%尺度1的所有方向的高频系数
[cH2,cV2,cD2]=detcoef2('all',c,s,2);%尺度2的所有方向的高频系数
cA1=appcoef2(c,s,'db1',1);%尺度1的低频系数
cA2=appcoef2(c,s,'db1',2);%尺度2的低频系数
figure,imshow(X);title('原图');
figure;
subplot(1,2,1),imshow(uint8(cA1));axis off;title('尺度1的低频系数图像');
subplot(1,2,2),imshow(uint8(cA2));axis off;title('尺度2的低频系数图像');
figure;
subplot(2,3,1),imshow(uint8(cH1));axis off;title('尺度1水平方向高频系数');
subplot(2,3,2),imshow(uint8(cV1));axis off;title('尺度1垂直方向高频系数');
subplot(2,3,3),imshow(uint8(cD1));axis off;title('尺度1斜线方向高频系数');
subplot(2,3,4),imshow(uint8(cH2));axis off;title('尺度2水平方向高频系数');
subplot(2,3,5),imshow(uint8(cV2));axis off;title('尺度2垂直方向高频系数');
subplot(2,3,6),imshow(uint8(cD2));axis off;title('尺度2斜线方向高频系数');
照例奉上lena小姐姐。。。。。
最后,上一些常见的小波,MATLAB帮助搜索waveinfo可以找到~
(例如,搜索haar小波,waveinfo('haar'))
今天学习的内容大概就是这样,至于关于小波变换的原理,我打算再深入学习一下再写成笔记~~~~嘿嘿嘿~~~~~
最后
以上就是含蓄秀发为你收集整理的二维haar小波matlab_MATLAB图像处理中的小波变换的全部内容,希望文章能够帮你解决二维haar小波matlab_MATLAB图像处理中的小波变换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复