小波阈值图像降噪及MATLAB仿真Word文档格式.docx
《小波阈值图像降噪及MATLAB仿真Word文档格式.docx》由会员分享,可在线阅读,更多相关《小波阈值图像降噪及MATLAB仿真Word文档格式.docx(7页珍藏版)》请在冰点文库上搜索。
根据该特征,设置一个阈值门限,认为大于该阈值的小波系数的主要成份为有用的信号,给予收缩后保留;
小于该阈值的小波系数,主要成份为噪声,予以剔除,这样就可以达到降噪的目的。
降噪时,通常认为低通系数含有大量的图像能量,一般不作处理,只对剩余三个高通部分进行处理。
因此,一次阈值降噪并不能完全去除噪声,还需要对未作处理的低频部分(LL)再次进行小波分解和阈值去噪,直到实际图像与估计图像的偏差达到最小值。
但是,随着分解和降噪次数的增加,小波系数中的噪声能量越来越少,并且趋于分散,降噪的效果将逐渐降低。
一般来说,进行3-4层小波分解和降噪就可以达到满意的降噪效果。
小波阈值降噪的基本思路是:
(1)先对含噪信号fk做小波变换,得到一组小波系数Wj,k;
AA
(2)通过对Wj,k进行阈值处理,得到估计系数Wj,k,使得Wj,k与Wj,k两者的差值尽可能小;
A
(3)利用Wj,k进行小波重构,得到估计信号fk即为降噪后的信号。
Donoho提出了一种非常简洁的方法对小波系数Wj,k进行估计。
对fk连续做几次小波分解后,有空间分布不均匀信号sk各尺度上小波系数Wj,k在某些特定位置有较大的值,这些点对应于原始信号sk的奇变位置和重要信息,而其他大部分位置的Wj,k较小;
对于白噪声nk,它对应的小波系数Wj,k在每个尺度上的分不都是均匀的,并随尺度的增加,Wj,k系数的幅值减小。
因此,通常的降噪办法是寻找一个合适的数作为阈值(门限),把低于入的小波函数Wj,k(主要由信号nk引起),设为零,而对于高于的小波函数Wj,k(主要由信号sk引起),则予以保留或进行
AA收缩,从而得到估计小波系数Wj,k,它可理解为基本由信号sk引起的,然后对Wj,k进行重构,就可以重构原始信号。
估计小波系数的方法如下,取:
般软阈值估计定义为
两种阈值方法各有差异,前者具有连续性,在数学上易于处理,而后者更接近实际情况
阈值化处理的关键是阈值的选择,如阈值太小,降噪后仍留有噪声,但阈值如果太大,重要的信号与图像特征会被滤掉,引起偏差
二、基于MATLA的小波降噪函数简介
常用的图像降噪方式是小波阈值降噪方法。
这是一种实现简单而效果较好的降噪方法,阈值降噪方法的思想很简单,就是对小波分解后的各层系数模大于和小于某阈值的系数分别进行处理,然后利用处理后的小波系数重构出降噪后的图像。
在阈值降噪中,阈值函数体现了对小波分解系数的不同处理策略和不同的估计方法。
常用的阈值函数有硬阈值函数和软阈值函数。
硬阈值函数可以很好地保留图像边缘等局部特征,但图像会出现伪吉布斯效应等视觉失真等现象;
而软阈值处理相对较光滑,但可能会造成边缘模糊等失真现象,为此人们提出了半软阈值函数。
小波阈值降噪方法处理阈值的选取,另一个关键因素是阈值的具体估计。
如果阈值太小,降噪后的图像仍然存在噪声;
相反如果阈值太大,重要图像特征有被滤掉,引起偏差。
从直观上讲,对于给定的小波系数,噪声越大,阈值就越大。
MATLAB^实现图像的降噪,主要是阈值获取和图像降噪实现两个方面。
1阈值获取
MATLAB^实现阈值获取的函数有ddencmpselect、wbmper和wdcbm2这里主要介绍函数ddencmp
函数ddencmp的功能是获取降噪或压缩的默认值。
该函数是降噪和压缩的导向函数,它给出一维或二维信号使用小波或小波包进行降噪和压缩一般过程的所有默认值。
其语法格式为:
[THR,SORH,KEEPAPP,CRIT]=ddenc(pN1,IN2,X)
[THR,SORH,KEEPAPP]=ddencmpINI,‘wv'
X)
[THR,SORH,KEEPAPP,CRIT]=ddencmpINI,‘wp'
2阈值降噪
MATLAB^实现阈值降噪的函数有wdenwdencmpwpdencmpwthresh、wpthcoef和wthcoef2。
这里主要介绍函数wdencmp
[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('
gbl'
X,'
wname'
N,THR,SORH,KEEPAPP)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('
lvd'
N,THR,SORH)[XC,CXC,LXC,PERF0,PERFL2]=wdencmp('
C,L,'
N,THR,SORH)
函数wdencm的功能是使用小波进行降噪。
该函数是二维小波降噪的导向函数。
它使用小波对信号或图像执行降噪过程。
wname是所用的小波函数。
gbl(global)
表示每层都采用同一个阈值进行处理。
lvd表示每层用不同的阈值进行处理。
N表示小波分解的层数。
THR为阈值向量,长度为NoSOR!
表示选择软阈值或硬阈值(分别取值为‘s'
和‘h'
)。
参数KEEPAP取值为1是,则低频系数不进行阈值量化,反之,则低频系数要进行阈值量化。
XC是降噪后的信号,[CXC,LXC]是XC的小波分解结构,PHRF(和PERFL2是恢复和压缩L2的范数百分比。
如果[C,L]是x的小波分解结构,则PERFL2=100(CXC向量的范数/C向量的范数)2;
如果X是一维信号,
22
小波wname是一个正交小波,则PERFL2=00XC|/X。
三、用小波对信号进行降噪
1.使用小波进行一维信号的降噪
对含噪一维信号降噪,实现信噪分离。
含噪的正弦信号:
对含噪信号进行分解,从分解中得出高频与低频系数。
高频系数对应细节信号,低频系数对应逼近信号。
由高频系数中检测噪声,低频系数中识别各分量信号的不同频率。
然后,再从去噪的高频信号与逼近的低频信号重构目标信号。
降噪的程序如下:
%生成含噪正弦信号
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);
含噪正弦信
%一维小波分解,使用'
haar'
进行4层分解[c,l]=wavedec(x,4,'
%重构第1-4层逼近信号
a4=wrcoef('
a'
c,l,'
4);
a3=wrcoef('
3);
a2=wrcoef('
2);
a1=wrcoef('
1);
%显示各层逼近信号
figure
(2);
subplot(411);
plot(a4);
ylabel('
a4'
subplot(412);
plot(a3);
a3'
subplot(413);
plot(a2);
a2'
subplot(414);
plot(a1);
a1'
%重构第1-4层细节信号
d4=wrcoef('
d'
d3=wrcoef('
d2=wrcoef('
d1=wrcoef('
%显示各层细节信号
figure(3);
subplot(411);
plot(d4);
d4'
plot(d3);
d3'
plot(d2);
d2'
plot(d1);
d1'
2、使用小波对图像的降噪处理
对含有高斯白噪声的图像,使用sym4小波进行分解,再用阈值法进行降噪处
理,最后重构图像,实现降噪目的。
在下面的例子中,分别采用了软阈值和硬阈值两种方法,观察降噪后的图像并比较两种方法的优缺点。
程序如下:
%装载原始图像
l=imread('
D:
\MATLAB7\toolbox\images\imdemos\cameraman.tif);
nbc=size(I,1);
X=im2double(I);
%产生噪声图像
init=2055415866;
randn('
seed'
init);
x=X+randn(size(X))/10;
%使用sym4执行图像的2层小波分解
wname='
sym4'
;
lev=2;
[c,l]=wavedec2(x,lev,wname);
sigma_s=0.054779;
%图像降噪时,使用wbmpen函数选择阈值
alpha=2;
thr_s=wbmpen(c,l,sigma_s,alpha);
%使用软阈值和保存的低频信号,进行图像降噪
keepapp=1;
xds=wdencmp('
x,wname,lev,thr_s,'
s'
keepapp);
sigma_h=0.062818;
thr_h=wbmpen(c,l,sigma_h,alpha);
%使用硬阈值和保存的低频信号,进行图像降噪xdh=wdencmp('
x,wname,lev,thr_h,'
h'
%画出原始图像和降噪后的图像figure
(1);
原始图像'
噪声图像'
);
软阈值降噪图像'
硬阈值降噪图像'
subplot(221);
imshow(l,nbc);
title('
subplot(222);
imshow(x);
subplot(223);
imshow(xds);
subplot(224);
imshow(xdh);
其图像如下:
观察上述图像可得以下结论:
采用硬阈值降噪,可以很好的保留信号边缘等局部特征,但得到的估计小波系数连续性差;
而采用软阈值降噪,得到的估计小波系数连续性好,容易处理,但会降低重构信号的精度,造成边缘模糊。