小波matlab代码.docx
《小波matlab代码.docx》由会员分享,可在线阅读,更多相关《小波matlab代码.docx(9页珍藏版)》请在冰豆网上搜索。
小波matlab代码
小波matlab代码
[x,map]=imread('MUCS_新建文件夹_32603.ptl_208.bmp');
subplot(1,2,1);
imshow(x);
[c,s]=wavedec2(x,3,'sym4');
Csize=size(c);
fori=1:
Csize
(2)
if(c(i)>100)%低频分量----s中第一维的长度
c(i)=1*c(i);
else
c(i)=0.9*c(i);%高频分量
end
end
x1=waverec2(c,s,'sym4');
im=uint8(x1);
subplot(1,2,2);
imshow(im);
[c,s]=wavedec2(X,2,'bior3.7');%对图像用小波进行层分解
cal=appcoef2(c,s,'bior3.7',1);%提取小波分解结构中的一层的低频系数和高频系数
ch1=detcoef2('h',c,s,1);%水平方向
cv1=detcoef2('v',c,s,1);%垂直方向
cd1=detcoef2('d',c,s,1);%斜线方向
a1=wrcoef2('a',c,s,'bior3.7',1);%各频率成份重构
[c,s]=wavedec2(X,1,'sym4');
a1=appcoef2(c,s,'sym4',1);%小波分解结构中的一层的低频系数,下面是3个高频系数
a1=2*a1;
h1=detcoef2('h',c,s,1);
v1=detcoef2('v',c,s,1);
d1=detcoef2('d',c,s,1);
h1=0.5*h1;
v1=0.5*v1;
d1=0.5*d1;
y=idwt2(a1,h1,v1,d1,'sym4');
loadwbarb;
X1=X;map1=map;
subplot(2,2,1);
image(X1);colormap(map1);
title('图像wbarb');
loadwoman;
X2=X;map2=map;
subplot(2,2,2);
image(X2);colormap(map2);
title('图像woman');
%=====================================
%对上述二图像进行分解
[c1,l1]=wavedec2(X1,2,'sym4');
[c2,l2]=wavedec2(X2,2,'sym4');
%对分解系数进行融合
c=c1+c2;
%=====================================
%应用融合系数进行图像重构并显示
XX=waverec2(c,l1,'sym4');
subplot(2,2,3);
image(XX);
title('融合图像1');
Csize1=size(c1);
%=====================================
%对图像进行增强处理
fori=1:
Csize1
(2)
c1(i)=1.2*c1(i);
end
Csize2=size(c2);
forj=1:
Csize2
(2)
c2(j)=0.8*c2(j);
end
%=====================================
%通过减小融合系数以减小图像的亮度
c=0.5*(c1+c2);
%=====================================
%对融合系数进行图像重构
XXX=waverec2(c,l2,'sym4');
%=====================================
%显示重构结果
subplot(2,2,4);
image(XXX);
title('融合图像2');
%本程序实现下述功能:
首先读入原始图像,并对它使用db3小波进行2层分解,
%然后对分解系数进行处理突出所需,弱化不需要的部分
%装载并显示原始图像
clearall;
clc;
loadflujet;
subplot(1,2,1);
image(X);colormap(map);
title('原始图像');
%=====================================
%对图像X用小波db3进行2层分解
[c,l]=wavedec2(X,2,'db3');
Csize=size(c);
%=====================================
%对分解系数作处理以突出所需部分并弱化不需要部分
fori=1:
Csize
(2)
if(c(i)>300)%低频分量
c(i)=2*c(i);
else
c(i)=0.5*c(i);%高频分量
end
end
%=====================================
%重构图像并显示
X1=waverec2(c,l,'db3');
subplot(1,2,2);
image(X1);colormap(map);
title('增强图像');
[c,s]=wavedec2(x,2,'sym4');
Csize=size(c);
fori=1:
Csize
(2)
if(c(i)>169)%低频分量----s中第一维的长度
c(i)=2*c(i);
else
c(i)=0.3*c(i);%高频分量
end
end
x1=waverec2(c,s,'sym4');
im=uint8(x1);
imshow(im);
二维小波变换的Matlab实现
yjvzw%oun\{K*Y
二维小波变换的函数
arTQ3Yr-------------------------------------------------
5BY0x!
Z9a9]函数名函数功能
h$H9q`\---------------------------------------------------'d3dtBe'x6g
dwt2二维离散小波变换
!
t2B!
I9L5S;q:
rXwavedec2二维信号的多层小波分解
!
Do4B@2UY,o!
H#Mlidwt2二维离散小波反变换
ol!
RHN_G4Mwaverec2二维信号的多层小波重构zH!
f6~)}-P_
wrcoef2由多层小波分解重构某一层的分解信号0E,\|.o|DT2@2b2K$U
upcoef2由多层小波分解重构近似分量或细节分量
*^Y4?
T3Rx(k3vdetcoef2提取二维信号小波分解的细节分量
2~UWL8Vappcoef2提取二维信号小波分解的近似分量
0qlN7pa@iYC]cbupwlev2二维小波分解的单层重构
2yW_]h-i~m(~dwtpet2二维周期小波变换4Y/aN&Gq]EB"H)W
idwtper2二维周期小波反变换
7h"|Ive-------------------------------------------------------------9Od7D`by
&lX{IgusI`
(1)wcodemat函数
`Tf?
-[c*e$Mcd功能:
对数据矩阵进行伪彩色编码
|4XCi5R$x6g格式:
Y=wcodemat(X,NB,OPT,ABSOL)'k#eCaI%H
Y=wcodemat(X,NB,OPT)i)E)p_!
O-kjJ^
Y=wcodemat(X,NB)
A2z,qD'u'z*_.~/UY=wcodemat(X)
Z5D"^e5i|L'^4`说明:
Y=wcodemat(X,NB,OPT,ABSOL)返回数据矩阵X的编码矩阵Y;NB伪编码的最大值,即编码范围为0~NB,缺省值NB=16;
@N6CYpYEOPT指定了编码的方式(缺省值为'mat'),即:
r(o?
Lj(yefN
OPT='row',按行编码
-yqiH{o5eOPT='col',按列编码
8XN*\.Z/c@OPT='mat',按整个矩阵编码
ej!
lWbLABSOL是函数的控制参数(缺省值为'1'),即:
ix"^:
|~5{
ABSOL=0时,返回编码矩阵
2zx;^l$q|_ZABSOL=1时,返回数据矩阵的绝对值ABS(X)
VlU1erg3x'O%I
9z&c,A]!
T%yds\.s
(2)dwt2函数DJ~0D/mS:
OS"I
功能:
二维离散小波变换Bct_)hOXI
格式:
[cA,cH,cV,cD]=dwt2(X,'wname')3AN_WF
[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)
m(Ej"[_@说明:
[cA,cH,cV,cD]=dwt2(X,'wname')使用指定的小波基函数'wname'对二维信号X进行二维离散小波变幻;cA,cH,cV,cD分别为近似分
.g(R@EEY'n量、水平细节分量、垂直细节分量和对角细节分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)使用指定的分解低通和高通滤波器Lo_D和Hi_D分
j4F2}~QeW解信号X。
$Kv*SX2^
8GQ7?
M_dB(g"d
(3)wavedec2函数
8y,x)uQTN功能:
二维信号的多层小波分解HFS)bp$G:
i
格式:
[C,S]=wavedec2(X,N,'wname')
+}+CM9i.p[C,S]=wavedec2(X,N,Lo_D,Hi_D)
U;|Ih0\J^}|说明:
[C,S]=wavedec2(X,N,'wname')使用小波基函数'wname'对二维信号X进行N层分解;[C,S]=wavedec2(X,N,Lo_D,Hi_D)使用指定
V.Y&@ifG9c9t+G2V的分解低通和高通滤波器Lo_D和Hi_D分解信号X。
7Yj~q5aHS4e1rW8f#`9D7m2l(4)idwt2函数
_Lg-O2dp功能:
二维离散小波反变换
6tst7q4a)bJ|0U2G格式:
X=idwt2(cA,cH,cV,cD,'wname')
IO,q'QWyX=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)
;r"?
f#pPYoFX=idwt2(cA,cH,cV,cD,'wname',S)
$Y,\w-oPb(L2\;UX=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)
\VQb~4AG}nQ说明:
X=idwt2(cA,cH,cV,cD,'wname')由信号小波分解的近似信号cA和细节信号cH、cH、cV、cD经小波反变换重构原信号X
MXnc-O?
[!
y5{E;X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)使用指定的重构低通和高通滤波器Lo_R和Hi_R重构原信号X;X=idwt2(cA,cH,cV,cD,'wname',S)'z6Zex;o
和X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)返回中心附近的S个数据点。
%d1D6g6j1pW3tx"mWg?
(~;BR8}X`(5)waverec2函数
AA%U:
y0xr说明:
二维信号的多层小波重构
$b+z/oY^)~\格式:
X=waverec2(C,S,'wname')
Fsv8ej\$L#VoX=waverec2(C,S,Lo_R,Hi_R)
U:
o!
btX5bb说明:
X=waverec2(C,S,'wname')由多层二维小波分解的结果C、S重构原始信号X,'wname'
.v4G9ie_6lW(Z/T为使用的小波基函数;X=waverec2(C,S,Lo_R,Hi_R)使用重构低通和高通滤波器Lo_R和Hi_R重构原信号。
s)A?
*ni?
+G