小波变换总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.小波分析用于去噪
二维信号用二维小波分析的去噪步骤如下:
(1.)二维信号的小波分解。选择一个小波和小波分解的层次N,然后计算信号s到第N层的分解。
(2)对高斯系数进行阈值量化。对于从1到N的每一层,选择一个阈值,并对这一层的高斯系数进行软阈值量化处理。
(3)二维信号的重构。根据小波分解的第N层的低频系数和经过修改的从第1层到第N层的各层高频系数计算二维信号的小波重构。
其中的重点是如何选取阈值和阈值的量化,本代码中使用了ddendmp和wdencmp函数。
代码如下:
load detfingr%装入图像
init=3718025452;%下面进行噪声的生成
randn('seed',init);%randn产生均值0,方差1的正态随机噪声
Xnoise=X+18*(randn(size(X)));
colormap(map);%显示原始图像以及它的含噪声的图像
subplot(221),image(wcodemat(X,192));
title('原始图像X');
axis square
subplot(222),image(wcodemat(Xnoise,192));
title('含噪声的图像Xnoise');
axis square
[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('去噪后的图像')
axis square
得到如下的图形:
可以看出,最终得到的图像在滤除噪声的同时细节信息也损失严重。
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的填充模式为零填充,显示图像
load geometry;
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,经光滑填充小波变换后的图像');
所得图像如下: