模拟技术
小波降噪的方法有多种,如利用小波分解与重构的方法滤波降噪、利用小波变换模极大值的方法去噪、利用信号小波变换后空域相关性进行信噪分离、非线性小波阈值方法去噪、平移不变量小波降噪法,以及多小波降噪等等。归结起来主要有三类:模极大值检测法、阈值降噪法和屏蔽(相关)降噪法。其中最常用的就是阈值法去噪,其基本思想就是利用图像小波分解后,各个子带图像的不同特性选取不同的阈值,从而达到较好的降噪目的。
MATLAB中实现图像的降噪,主要是阈值获取和图像降噪实现两个方面。
MATLAB中实现阈值获取的函数有ddencmp、select、wbmpen、和wdcbm2。这里主要介绍函数ddencmp。
函数ddencmp的功能是获取降噪或压缩的默认值。该函数是降噪和压缩的导向函数,它给出一维或二维信号使用小波或小波包进行降噪和压缩一般过程的所有默认值。
其语法格式为:
[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,IN2,X)
[THR,SORH,KEEPAPP]=ddencmp(IN1,’wv’,X)
[THR,SORH,KEEPAPP,CRIT]=ddencmp(IN1,’wp’,X)
MATLAB中实现阈值降噪的函数有wden、wdencmp、wpdencmp、wthresh、wpthcoef和wthcoef2。这里主要介绍函数wdencmp。
其语法格式为:
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(‘gbl’,X,‘wname’,N,THR,SORH,KEEPAPP)
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(‘lvd’,X,‘wname’,N,THR,SORH)
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp(‘lvd’,C,L,‘wname’,N,THR,SORH)
函数wdencmp的功能是使用小波进行降噪。该函数是二维小波降噪的导向函数。它使用小波对信号或图像执行降噪过程。wname是所用的小波函数。gbl(global)表示每层都采用同一个阈值进行处理。lvd表示每层用不同的阈值进行处理。N表示小波分解的层数。THR为阈值向量,长度为N。SORH表示选择软阈值或硬阈值(分别取值为‘s’和‘h’)。参数KEEPAPP取值为1是,则低频系数不进行阈值量化,反之,则低频系数要进行阈值量化。XC是降噪后的信号,[CXC,LXC]是XC的小波分解结构,PHRF0和PERFL2是恢复和压缩L2的范数百分比。如果[C,L]是x的小波分解结构,则PERFL2=100(CXC向量的范数/C向量的范数)2;如果X是一维信号,小波wname是一个正交小波,则:
对含噪一维信号降噪,实现信噪分离。含噪的正弦信号:对含噪信号进行分解,从分解中得出高频与低频系数。高频系数对应细节信号,低频系数对应逼近信号。由高频系数中检测噪声,低频系数中识别各分量信号的不同频率。然后,再从去噪的高频信号与逼近的低频信号重构目标信号。
%生成含噪正弦信号
N=1024
t=1:N;
sig=sin(0.03*t);
figure(1);
subplot(211);plot(t,sig);title(‘正弦信号’);
%叠加噪声
x=sig+randn(1,N);
subplot(212);plot(t,x);title(‘含噪正弦信号’);
%一维小波分解,使用‘haar’进行4层分解
[c,l]=wavedec(x,4,‘haar’);
%重构第1-4层逼近信号
a4=wrcoef(‘a’,c,l,‘haar’,4);
a3=wrcoef(‘a’,c,l,‘haar’,3);
a2=wrcoef(‘a’,c,l,‘haar’,2);
a1=wrcoef(‘a’,c,l,‘haar’,1);
%显示各层逼近信号
figure(2);
subplot(411);plot(a4);ylabel(‘a4’);
subplot(412);plot(a3);ylabel(‘a3’);
subplot(413);plot(a2);ylabel(‘a2’);
subplot(414);plot(a1);ylabel(‘a1’);
%重构第1-4层细节信号
d4=wrcoef(‘d’,c,l,‘haar’,4);
d3=wrcoef(‘d’,c,l,‘haar’,3);
d2=wrcoef(‘d’,c,l,‘haar’,2);
d1=wrcoef(‘d’,c,l,‘haar’,1);
%显示各层细节信号
figure(3);
subplot(411);plot(d4);ylabel(‘d4’);
subplot(412);plot(d3);ylabel(‘d3’);
subplot(413);plot(d2);ylabel(‘d2’);
subplot(414);plot(d1);ylabel(‘d1’);
对含有高斯白噪声的图像,使用sym4小波进行分解,再用阈值法进行降噪处理,最后重构图像,实现降噪目的。
下面通过具体实例来说明利用小波阈值降噪进行图像去噪的问题。
I=imread(‘D:\aaa.jpg’);
I=rgb2gray(I);
figure;J=imnoise(I,‘gaussian’,0,0.01);
[thr,sorh,keepapp]=ddencmp(‘den’,‘wv’,J);
Gxd=wdencmp(‘gbl’,J,‘sym4’,2,thr,sorh,keepapp);
subplot(2,2,1);
imshow(I,map);
title(‘原始图像’);
subplot(2,2,2);
imshow(J,map);
title(‘加高斯噪声图像’);
subplot(2,2,3);
imshow(Gxd,map);
title(‘高斯噪声滤波效果’)
程序运行结果:
比较上面几幅图像,可见阈值降噪可以滤除大部分高频噪声,去噪效果较好,图像质量比原图稍差。
全部0条评论
快来发表一下你的评论吧 !