张家口西山华府:小波 matlab 代码

来源:百度文库 编辑:偶看新闻 时间:2024/05/01 17:37:18
[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);elsec(i)=0.5*c(i);  %高频分量endend%=====================================%重构图像并显示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 S4e1r

W8f#`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