小波变换总结.docx
- 文档编号:6223760
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:18
- 大小:1.39MB
小波变换总结.docx
《小波变换总结.docx》由会员分享,可在线阅读,更多相关《小波变换总结.docx(18页珍藏版)》请在冰豆网上搜索。
小波变换总结
1.小波分析用于去噪
二维信号用二维小波分析的去噪步骤如下:
(1.)二维信号的小波分解。
选择一个小波和小波分解的层次N,然后计算信号s到第N层的分解。
(2)对高斯系数进行阈值量化。
对于从1到N的每一层,选择一个阈值,并对这一层的高斯系数进行软阈值量化处理。
(3)二维信号的重构。
根据小波分解的第N层的低频系数和经过修改的从第1层到第N层的各层高频系数计算二维信号的小波重构。
其中的重点是如何选取阈值和阈值的量化,本代码中使用了ddendmp和wdencmp函数。
代码如下:
loaddetfingr%装入图像
init=3718025452;%下面进行噪声的生成
randn('seed',init);%randn产生均值0,方差1的正态随机噪声
Xnoise=X+18*(randn(size(X)));
colormap(map);%显示原始图像以及它的含噪声的图像
subplot(221),image(wcodemat(X,192));
title('原始图像X');
axissquare
subplot(222),image(wcodemat(Xnoise,192));
title('含噪声的图像Xnoise');
axissquare
[c,s]=wavedec2(X,2,'sym5');%用sym5小波对图像信号进行二层的小波分解
%下面进行图像的去噪处理
%使用ddencmp函数来计算去噪的默认阈值和熵标准
%使用wdencmp函数用小波来实现图像的去噪和压缩
[thr,sorh,keepapp]=ddencmp('den','wv',Xnoise);
[Xdenoise,cxc,lxc,perf0,perfl2]=wdencmp('gbl',c,s,'sym5',2,thr,sorh,keepapp);
subplot(223),image(Xdenoise);%显示去噪后的图像
title('去噪后的图像')
axissquare
得到如下的图形:
可以看出,最终得到的图像在滤除噪声的同时细节信息也损失严重。
2.小波用于图像压缩
一个图像作小波分解以后,可得到一系列不同分辨率的图像,不同分辨率的子图像对应的频率是不相同的。
高分辨率(即高频)子图像上大部分点的数值都接近0,越是高频这种现象越明显。
对于一个图像来说,表现一个图像最主要的部分是低频部分,所以一个最简单的压缩方法是利用小波分解,去掉图像的高频部分,而只保留低频部分。
代码如下:
[X,map]=imread('lena.bmp');%调入图像
X=double(X)/255;%归一化处理
figure
(1);subimage(X);%显示图像
colormap(map)
[C,S]=wavedec2(X,2,'bior3.7');%对图像用'bior3.7'进行2层小波分解
thr=20;%设置小波系数阈值
ca1=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);%分别对各频率成分进行重构
h1=wrcoef2('h',C,S,'bior3.7',1);
v1=wrcoef2('v',C,S,'bior3.7',1);
d1=wrcoef2('d',C,S,'bior3.7',1);
c1=[a1,h1;v1,d1];
%进行图像压缩处理,保留小波分解第一层低频信息,进行图像的压缩
%第一层的低频信息为ca1,显示第一层的低频信息
%首先对第一层信息进行量化编码
ca1=appcoef2(C,S,'bior3.7',1);
ca1=wcodemat(ca1,440,'mat',0);
ca1=0.5*ca1;
figure
(2),image(ca1)%显示第一次压缩图像
colormap(map)
%保留小波分解第二层低频信息,进行图像的压缩,此时压缩比更大
%第二层的低频信息信息为ca2,显示第二层的低频信息
ca2=appcoef2(C,S,'bior3.7',2);
%首先对第二层信息进行量化编码
ca2=wcodemat(ca2,440,'mat',0);
%改变图像的高度
ca2=0.5*ca2;
%显示第二次压缩图像
figure(3),image(ca2);
colormap(map)
试验结果如下:
第一幅为原图,第二幅图像是用小波分解的第一层低频信息重构得到的。
第三幅图像是用小波分解的第二层低频信息重构得到的。
3.小波用于边界扭曲
代码如下:
%调入图像,设置DWT的填充模式为零填充,显示图像
loadgeometry;
subplot(221),image(X);title('a,原始图像');
dwtmode('zpd');
%利用sym4小波基,调用wavedec2函数对图像进行多级小波分解
lev=3;
[C,S]=wavedec2(X,lev,'sym4');
%调用wrcoef2函数根据一维变换系数进行单支重构
a1=wrcoef2('a',C,S,'sym4',lev);
subplot(222);image(a1);title('b,经sym4小波变换三阶重构后的图像');
%利用另一种边界填充技术----光滑填充方法
%然后使用与上面同样的小变换对填充图像进行变换,并且显示图像
dwtmode('spd');
[C,S]=wavedec2(X,lev,'sym4');
a3=wrcoef2('a',C,S,'sym4',lev);
subplot(223),image(a3);title('c,经光滑填充小波变换后的图像');
所得图像如下:
4.使用小波包进行分解和重构
为了克服小波分解在高频段的频率分辨率较差,而在低频段的时间分辨率较差的缺点,人们在小波分解的基础上提出了小波包分解。
小波包分解提高了信号的时频分辨率。
比小波分解更高级,对信号的分解重构更能体现多分辨率的特征。
是一种更精细的信号分析方法。
小波包方法是小波分解的推广,它提供了更丰富的信号分析方法。
小波包元素是由三个参数确定波形,分别是:
位置、尺度和频率。
对一个给定的正交小波函数,可以生成一组小波包基。
每一个小波包基里提供一种特定的信号分析方法,它可以保存信号的能量并根据特征进行精确的重构。
小波包可以对一个给定的信号进行大量不同的分解。
在正交小波分解过程中,一般是将低频系数分解为两部分。
分解后得到一个近似系数向量和一个细节系数向量。
在两个连续的近似系数中丢失的信息可以在细节系数中得到。
下一步是将近似系数向量进一步分解为两个部分,而细节系数向量不再分解。
在小波包分解中,每一个细节系数向量也使用近似系数向量分解同样的分法分为两部分。
因此它提供了更丰富的分析方法:
在一维情况下,它产生一个完整的二叉树;在二维情况下,它产生一个完整的四叉树。
代码如下:
clear;
clc;
figure
(1);
%读出原始图像
subplot(1,2,1);
input=imread('lena.jpg');
imshow(input);
title('原始图像');
%三色分离
input=double(input);
inputr=input(:
:
1);
inputg=input(:
:
2);
inputb=double(input(:
:
3));
%对原图像R分量做小波包分解
wpr=wpdec2(inputr,2,'db2','shannon');%用db2小波对图像小波包两层分解
%对原图像G分量做小波包分解
wpg=wpdec2(inputg,2,'db2','shannon');%用db2小波对图像小波包两层分解
%对原图像B分量做小波包分解
wpb=wpdec2(inputb,2,'db2','shannon');%用db2小波对图像小波包两层分解
%二维小波包分解的重构
wpr=wprec2(wpr);
wpg=wprec2(wpg);
wpb=wprec2(wpb);
%合并原图像的RGB三分量
output(:
:
1)=wpr;
output(:
:
2)=wpg;
output(:
:
3)=wpb;
subplot(1,2,2);
B=uint8(output);
imshow(B);
title('合成后原图像');
试验所得图像如下图所示:
小波包分解树的结构如下图所示:
5.使用小波进行图像融合
代码如下:
[X,map]=imread('AralSea-Kazahkstan.bmp');
X1=X;
map1=map;
subplot(221);
image(X1);
colormap(map1);
title('lina');
axissquare
[X,map]=imread('Cyprus-Europa.bmp');
X2=X;
map2=map;
subplot(222);
image(X2);
colormap(map2);
title('couple');
axissquare
[c1,s1]=wavedec2(X1,2,'sym4');
sizec1=size(c1);
fori=1:
sizec1
(2)
c1(i)=1.2*c1(i);
end
[c2,s2]=wavedec2(X2,2,'sym4');
c=c1+c2;
c=0.5*c;
xx=waverec2(c,s1,'sym4');
subplot(223);
image(xx);
title('融合图象');
axissquare
得到如下的融合图像:
6.小波实现数字水印
数字水印(DigitalWatermarking)技术是将一些标识信息(即数字水印)直接嵌入数字载体(包括多媒体、文档、软件等)当中,但不影响原载体的使用价值,也不容易被人的知觉系统(如视觉或听觉系统)觉察或注意到。
通过这些隐藏在载体中的信息,可以达到确认内容创建者、购买者、传送隐秘信息或者判断载体是否被篡改等目的。
数字水印是信息隐藏技术的一个重要研究方向。
代码如下:
clc;clearall;closeall;
img=imread('home.jpg');%Gettheinputimage
img=rgb2gray(img);%Converttograyscaleimage
img=double(img);
c=0.01;%InitialisetheweightofWatermarking
figure,imshow(uint8(img)),title('OriginalImage');
[pq]=size(img);
%Generatethekey生成密钥
n=awgn(img,4,3,'linear');
N=imabsdiff(n,img);
figure,imshow(double(N)),title('Key');
[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters('haar');%Obtainthefitersassociatedwithhaar生成haar小波的滤波器
[ca,ch,cv,cd]=dwt2(img,Lo_D,Hi_D);%Compute2Dwavelettransform
%Performthewatermarking执行过程
y=[cach;cvcd];
Y=y+c*abs(y).*N;
p=p/2;q=q/2;
fori=1:
p
forj=1:
q
nca(i,j)=Y(i,j);
ncv(i,j)=Y(i+p,j);
nch(i,j)=Y(i,j+q);
ncd(i,j)=Y(i+p,j+q);
end
end
%DisplaytheWatermarkedimage显示数字水印后的图像
wimg=idwt2(nca,nch,ncv,ncd,Lo_R,Hi_R);
figure,imshow(uint8(wimg)),title('WatermarkedImage');
diff=imabsdiff(wimg,img);%求出两幅图像的绝对差值
figure,imshow(double(diff));title('Differences');
得到下图的结果
图一是原图,图二为带加密的图形,图三为在原图基础上加密后所得的图形,图四为图一和图二的差值图像。
由图一和图三可以看出,从肉眼来看,两幅图形并没有大的差异,图三很好的将图二的信息隐藏在图一之中。
7.小波进行边缘检测
代码如下:
clearall;
loadwbarb;%小波变换边缘提取程序
I=ind2gray(X,map);%检索图转成灰度图
imshow(I);
I1=imadjust(I,stretchlim(I),[0,1]);%调整图像的像素值,可以改变对比度和颜色
figure;
imshow(I1);
[N,M]=size(I);
h=[0.125,0.375,0.375,0.125];
g=[0.5,-0.5];
delta=[1,0,0];
J=3;
a(1:
N,1:
M,1,1:
J+1)=0;
dx(1:
N,1:
M,1,1:
J+1)=0;
dy(1:
N,1:
M,1,1:
J+1)=0;
d(1:
N,1:
M,1,1:
J+1)=0;
a(:
:
1,1)=conv2(h,h,I,'same');%二维卷积
dx(:
:
1,1)=conv2(delta,g,I,'same');
dy(:
:
1,1)=conv2(g,delta,I,'same');
x=dx(:
:
1,1);
y=dy(:
:
1,1);
d(:
:
1,1)=sqrt(x.^2+y.^2);
I1=imadjust(d(:
:
1,1),stretchlim(d(:
:
1,1)),[01]);figure;imshow(I1);
lh=length(h);
lg=length(g);
forj=1:
J+1
lhj=2^j*(lh-1)+1;
lgj=2^j*(lg-1)+1;
hj(1:
lhj)=0;
gj(1:
lgj)=0;
forn=1:
lh
hj(2^j*(n-1)+1)=h(n);
end
forn=1:
lg
gj(2^j*(n-1)+1)=g(n);
end
a(:
:
1,j+1)=conv2(hj,hj,a(:
:
1,j),'same');
dx(:
:
1,j+1)=conv2(delta,gj,a(:
:
1,j),'same');
dy(:
:
1,j+1)=conv2(gj,delta,a(:
:
1,j),'same');
x=dx(:
:
1,j+1);
y=dy(:
:
1,j+1);
dj(:
:
1,j+1)=sqrt(x.^2+y.^2);
I1=imadjust(dj(:
:
1,j+1),stretchlim(dj(:
:
1,j+1)),[01]);figure;imshow(I1);
end
所得如下图像:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 变换 总结