小波变换总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,经光滑填充小波变换后的图像');

所得图像如下:

相关文档
最新文档