小波 matlab 代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
小波matlab 代码
[x,map]=imread('MUCS_新建文件夹
_32603.ptl_208.bmp');
subplot(1,2,1);
imshow(x);
[c,s]=wavedec2(x,3,'sym4');
Csize=size(c);
for i=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');
load wbarb;
X1=X;map1=map;
subplot(2,2,1);
image(X1);colormap(map1);
title('图像wbarb');
load woman;
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);
%=====================================
%对图像进行增强处理
for i=1:Csize1(2)
c1(i)=1.2*c1(i);
end
Csize2=size(c2);
for j=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层分解,
%然后对分解系数进行处理突出所需,弱化不需要的部分%装载并显示原始图像
clear all;
clc;
load flujet;
subplot(1,2,1);
image(X);colormap(map);
title('原始图像');
%=====================================
%对图像X用小波db3进行2层分解
[c,l]=wavedec2(X,2,'db3');
Csize=size(c);
%=====================================
%对分解系数作处理以突出所需部分并弱化不需要部分
for i=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);
for i=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 实现
y j v z w %o u n\ { K*Y
二维小波变换的函数
a r T Q3Y r -------------------------------------------------
5B Y0x!Z9a9] 函数名函数功能
h$H9q ` \ ---------------------------------------------------'d3d t B
e'x6g
dwt2 二维离散小波变换
!t2B!I9L5S;q:r X wavedec2 二维信号的多层小波分解
!D o4B @2U Y,o!H#M l idwt2 二维离散小波反变换
o l!R H N_ G4M waverec2 二维信号的多层小波重构z H!f6~)}-P _
wrcoef2 由多层小波分解重构某一层的分解信号0E,\ |.o | D T2@2b2K$U
upcoef2 由多层小波分解重构近似分量或细节分量
*^ Y4? T3R x(k3v detcoef2 提取二维信号小波分解的细节分量
2~ U W L8V appcoef2 提取二维信号小波分解的近似分量
0q l N7p a @ i Y C ] c b upwlev2 二维小波分解的单层重构
2y W_ ] h-i~ m(~ dwtpet2 二维周期小波变换4Y/a
N&G q ] E B"H)W
idwtper2 二维周期小波反变换
7h"| Iv e -------------------------------------------------------------9O d7D ` b y
&lX { I g u s I `
(1) wcodemat 函数
` T f ?-[ c*e$M c d 功能:对数据矩阵进行伪彩色编码
|4X C i5R$x6g 格式:Y=wcodemat(X,NB,OPT,ABSOL)'k#e C a I%H
Y=wcodemat(X,NB,OPT) i)E)p _!O-k j J ^
Y=wcodemat(X,NB)
A2z,q D'u'z*_.~/U Y=wcodemat(X)
Z5D"^ e5i |L'^4` 说明:Y=wcodemat(X,NB,OPT,ABSOL) 返回数据矩阵X 的编码矩阵Y ;NB 伪编码的最大值,即编码范围为0~NB,缺省值NB=16;
@ N6C Y p Y E OPT 指定了编码的方式(缺省值为
'mat'),即:r(o ? L j(y e f N
OPT='row' ,按行编码
-y q i H { o5e OPT='col' ,按列编码
8X N*\.Z/c @ OPT='mat' ,按整个矩阵编码
e j!l W b L ABSOL 是函数的控制参数(缺省值为'1'),即:i x"^:| ~5{
ABSOL=0 时,返回编码矩阵
2z x;^ l$q | _ Z ABSOL=1 时,返回数据矩阵的绝对值ABS(X)
V l U1e r g3x'O%I
9z&c,A ]!T%y d s \.s (2) dwt2 函数D J ~0D/m S:O S"I 功能:二维离散小波变换 B c t _)h O X I
格式:[cA,cH,cV,cD]=dwt2(X,'wname')3A N _ W F
[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D)
m(E j"[ _ @ 说明:[cA,cH,cV,cD]=dwt2(X,'wname')使用指定的小波基函数'wname' 对二维信号X 进行二维离散小波
变幻;cA,cH,cV,cD 分别为近似分
.g(R @ E E Y'n 量、水平细节分量、垂直细节分量和对角细节分量;[cA,cH,cV,cD]=dwt2(X,Lo_D,Hi_D) 使用指定的分解低通和高通滤波器Lo_D 和Hi_D 分
j4F2} ~ Q e W 解信号X 。
$K v*S X2^
8G Q7? M _ d B(g"d
(3) wavedec2 函数
8y,x)u Q T N 功能:二维信号的多层小波分解H F S)b p$G:i 格式:[C,S]=wavedec2(X,N,'wname')
+}+C M9i.p [C,S]=wavedec2(X,N,Lo_D,Hi_D)
U;| I h0\ J ^ } | 说明:[C,S]=wavedec2(X,N,'wname') 使用小波基函数'wname' 对二维信号X 进行N 层分解;
[C,S]=wavedec2(X,N,Lo_D,Hi_D) 使用指定
V.Y&@ i f G9c9t+G2V 的分解低通和高通滤波器Lo_D 和Hi_D 分解信号X 。
7Y j ~ q5a H S4e1rW8f#`9D7m2l (4) idwt2 函数
_ L g-O2d p 功能:二维离散小波反变换
6t s t7q4a)b J |0U2G 格式:X=idwt2(cA,cH,cV,cD,'wname')
I O,q'Q W y X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R)
;r"? f#p P Y o F X=idwt2(cA,cH,cV,cD,'wname',S) $Y,\ w-o P b(L2\;U
X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S)
\ V Q b ~4A G } n Q 说明:X=idwt2(cA,cH,cV,cD,'wname') 由信号小波分解的近似信号cA 和细节信号cH、cH、cV、cD 经小波反变换重构原信号X
M X n c-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)'z6Z e x;o
和X=idwt2(cA,cH,cV,cD,Lo_R,Hi_R,S) 返回中心附近的S 个数据点。
%d1D6g6j1p W3t x"m W g ?
(~;B R8} X ` (5) waverec2 函数
A A%U:y0x r 说明:二维信号的多层小波重构
$b+z/o Y ^)~ \ 格式:X=waverec2(C,S,'wname')
F s v8e j\$L#V o X=waverec2(C,S,Lo_R,Hi_R)
U:o!b t X5b b 说明:X=waverec2(C,S,'wname') 由多层二维小波分解的结果C、S 重构原始信号X ,'wname'
.v4G9i e _6l W(Z/T 为使用的小波基函数;
X=waverec2(C,S,Lo_R,Hi_R) 使用重构低通和高通滤波器Lo_R 和Hi_R 重构原信号。
s)A ?*n i ?+G。