小波学习
小波去噪
方法一
原理:因为噪声通常位于图像的高频部分,去除图像的高频部分,使用低频部分恢复图像。
方法:对图像进行多级小波分解,舍去图像的水平细节子带,垂直细节子带,和对角线细节子带,只使用图像的近似子带去重构图像。
缺点:因为舍弃了细节子带的一些信息,也容易引起图像的模糊。
代码
%装载原始图像信号并图示
X = imread('7.png') ;
subplot(2,2,1);
image(mat2gray(X));
title('原始图像');
axis square;
%==============================
%生成含噪图像并图示
init=2055615866;
rand('seed',init);
noise = 12*randn(size(X));
XX=uint8(double(X)+noise);
subplot(2,2,2);
image(mat2gray(XX));
title('含噪图像');
axis square;
%==============================
%首先用sym4小波函数对XX进行2层分解
[c,l]=wavedec2(XX,2,'sym4');
%实现低通滤波消噪
a1=wrcoef2('a',c,l,'sym4',1);
%再次实现低通滤波消噪
a2=wrcoef2('a',c,l,'sym4',2);
%==============================
%图示消噪处理后的结果
subplot(2,2,3);
image(mat2gray(a1));
title('第一次消噪图像');
axis square;
subplot(2,2,4);
image(a2);
title('第二次消噪图像');
axis square;
方法二
原理:因为噪声的集中在高频阶段,对高频部分进行阈值处理,使用wthcoef2函数。
方法:对图像进行多级小波分解,对每级的细节进行阈值处理。
缺点:阈值的设置需要人手动调节,往往是经验值,或者选取高频部分的幅值的百分比进行裁剪。
代码
load gatlin2;
subplot(2,2,1);
image(X);
colormap(map);
title('原始图像');
axis square;
%生成含噪图像并图示
init=2055615866;
randn('seed',init);
XX=X+8