基于小波包的图像压缩及matlab实现Word文档格式.doc
《基于小波包的图像压缩及matlab实现Word文档格式.doc》由会员分享,可在线阅读,更多相关《基于小波包的图像压缩及matlab实现Word文档格式.doc(11页珍藏版)》请在冰豆网上搜索。
信号主要分布在低频区域。
而噪声主要分布在高频区域,但同时图像的细节也分布在高频区域。
所以,图像降噪的一个两难问题就是如何在降低图像噪声和保留图像细节上保持平衡,传统的低通滤波方法将图像的高频部分滤除,虽然能够达到降低噪声的效果,但破坏了图像细节。
如何构造一种既能够降低图像噪声,又能保持图像细节的降噪方法成为此项研究的主题。
在小波变换这种有力工具出现之后,这一目标已经成为可能。
基于小波包变换消噪方法的主要思想就是利用小波分析的多尺度特性,首先对含有噪声的图像进行小波变换,然后对得到的小波系数进行阈值化处理,得到新的小波系数,对其进行反变换,这样我们就得到了消噪之后的图像,从而实现了对图像的恢复。
目前,已经发展了许多小波变换与传统图像消噪方法相结合的新的图像消噪算法,它们吸收二者的优点,从而提高了图像的消噪效果,得到了较好的应用。
1.2.小波包用于图像压缩
当今,我们正处在一个高速发展的信息时代,而信息的本质就是要求进行存储、交流和传输。
信息有多种形式,包括文字、声音、静止图像、视频图像等等。
在众多的信息形式中,图像信息最具有直观性和生动性,从而成为人们需求的主要信息形式。
然而由于图像信息的数据量太大,作数字传输时占有的信道频带有非常宽的问题,直接制约着图像信息的存储和传输。
因此,为了有效地利用现代通讯业务和信息处理中的宝贵资源,需要对大量的数据信息,尤其是图像信息进行压缩,因此图像数据压缩技术和解压缩技术成了多媒体技术的关键技术之一。
近年来,由于“海量”多媒体信息的出现,经典图像压缩算法已不能满足实际应用的需要,迫切需要有更高压缩效率和适用于各种需要的新压缩算法。
经典压缩算法一般是在时域或者频域进行分析和操作,因而经典图像压缩算法只是利用了图像的部分特征,研究人员希望同时利用两个域的特征,兼容时域和频域分析的优越性。
另外经典压缩算法一般使用的DCT和傅立叶变换是用余弦曲线和正弦曲线作为它们的正交函数基,但这些函数都不是紧支集。
而我们在实际应用中处理的大部分是瞬态信号。
特别地,在图像处理中许多重要特征也是空间位置高度局部化的,如果使用一般的变换,这些瞬态和局部化成分的信息就很难得到最佳表示。
实际上,DCT和傅立叶变换能用余弦和正弦函数表示任何分析函数,甚至是一个瞬态信号,但这种表示在函数频谱上会呈现相当混乱的构成。
为了克服这种缺陷,研究人员已经发现若干种使用优先宽度的基函数,我们称之为小波。
使用这些基函数的变换被称之为小波变换。
利用小波变换对图像进行压缩是当前一个研究热点。
小波包分析是近些年在小波分析的基础上发展起来的,将图像在小波包最优基下展开,利用小波包最优基极好的空间、尺度定位性,使得图像的小波包变换系数在小波变换域尽可能的集中,从而使在不降低压缩图像的质量情况下,进一步地提高图像压缩比成为可能。
2.小波包分析
短时傅立叶变换对信号的频带划分是线性等间隔的。
多分辨分析可以对信号进行有效的时频分解,但由于其尺度是按二进制变化的,所以在高频频段其频率分辨率较差,而在低频频段其时间分辨率较差,即对信号的频带进行指数等间隔划分(具有等Q结构)。
小波包分析能够为信号提供一种更精细的分析方法,它将频带进行多层次划分,对多分辨率分析没有细分的高频部分进一步分解,并能够根据被分析信号的特征,自适应地选择相应频带,使之与信号频谱相匹配,从而提高了时-频分辨率,因此小波包具有更广泛的应用价值。
关于小波包分析的理解,这里以一个三层的分解进行说明,其小波包分解树如图2.1。
图2-1小波包分解树
图2-1中,A表示低频,D表示高频,末尾的序号数表示小波分解的层树(也即尺度数)。
分解具有关系:
S=AAA3+DAA3+ADA3+DDA3+AAD3+DAD3+ADD3+DDD3。
2.1小波包的定义
在多分辨分析中,,表明多分辨分析是按照不同的尺度因子j把Hilbert空间分解为所有子空间的正交和的。
其中,为小波函数的闭包(小波子空间)。
现在,对小波子空间按照二进制分式进行频率的细分,以达到提高频率分辨率的目的。
一种自然的做法是将尺度空间和小波子空间用一个新的子空间统一起来表征,若令
则Hilbert空间的正交分解即可用的分解统一为
(2.22)
定义子空间是函数是函数的闭包空间,而是函数的闭包空间,并令满足下面的双尺度方程:
(2.23)
式中,,即两系数也具有正交关系。
当n=0时,以上两式直接给出
(2.24)
与在多分辨分析中,满足双尺度方程:
(2.25)
相比较,和分别退化为尺度函数和小波基函数。
式(2.24)是式(2.22)的等价表示。
把这种等价表示推广到(非负整数)的情况,即得到(2.23)的等价表示为
;
(2.26)
定义(小波包)由式(2.23)构造的序列(其中)称为由基函数=确定的正交小波包。
当n=0时,即为(2.24)式的情况。
由于由唯一确定,所以又称为关于序列的正交小波包。
2.2小波包的性质
定理1设非负整数n的二进制表示为,=0或1。
则小波包的傅立叶变换由下式给出:
(2.27)
式中
定理2设是正交尺度函数的正交小波包,则,即构成的规范正交基。
2.3小波包的空间分解
令是关于的小波包族,考虑用下列方式生成子空间族。
现在令n=1,2,…;
j=1,2,…,并对(2.22)式作迭代分解,则有
因此,我们很容易得到小波子空间的各种分解如下:
…
空间分解的子空间序列可写作,m=0,1,…,-1;
l=1,2,…。
子空间序列的标准正交基为。
容易看出,当l=0和m=0时,子空间序列简化为=,相应的正交基简化为,它恰好是标准正交小波族。
若n是一个倍频程细划的参数,即令n=+m,则我们有小波包的简略记号,其中,。
我们把称为既有尺度指标j、位置指标k和频率指标n的小波包。
将它与前面的小波作一比较知,小波只有离散尺度j和离散平移k两个参数,而小波包除了这两个离散参数外,还增加了一个频率参数n=+m。
正是这个频率新参数的作用,使得小波包克服了小波时间分辨率高时频率分辨率低的缺陷,于是,参数n表示函数的零交叉数目,也就是其波形的震荡次数。
定义(小波库)由生成的函数族(其中;
j,)称为由尺度函数构造的小波库。
推论1.1对于每个j=0,1,2,…
=……(2.28)
这时,族{|j=…,-1,0;
n=2,3,…且}(2.29)
是的一个正交基。
随着尺度j的增大,相应正交小波基函数的空间分辨率越高,而其频率分辨率越低,这正是正交小波基的一大缺陷。
而小波包却具有将随j增大而变宽的频谱窗口进一步分割变细的优良性质,从而克服了正交小波变换的不足。
小波包可以对进一步分解,从而提高频率分辨率,是一种比多分辨分析更加精细的分解方法,具有更好的时频特性。
2.4小波包算法
下面给出小波包的分解算法和重构算法。
设,则可表示为
(2.30)
小波包分解算法:
由求与
(2.31)
小波包重构算法:
由{}与求Error!
Nobookmarknamegiven.
3.小波包分析在图像处理中的实际应用
小波分析之所以在信号处理中有着强大的功能,是基于其分离信息的思想,分离到各个小波域的信息除了与其他小波域的关联,使得处理的时候更为灵活。
全局阈值化方法作用的信息密度太大,不够精细,所以很难同时获得高的压缩比和能量保留成分,在作用的分层阈值以后,性能明显提高,因为分层阈值更能体现信号固有的时频局部特性。
但是小波分解仍然不够灵活,分解出来的小波树只有一种模式,不能完全地体现时频局部化信息。
而压缩的核心思想既是尽可能去除各小波域系数之间的信息关联,最大限度体现时频局部化的信息,因此,实际的压缩算法多采用小波包算法,而小波树的确定则是根据不同的信息论准则,以达到分解系数表达的信息密度最高。
3.1小波包处理图像所用函数介绍
小波包处理图像用到的函数主要有wpdec2、wpbmpen、wpdencmp等,下面主要介绍一下wpdencmp函数的用法。
函数wpdencmp的调用格式有以下两种:
[XD,TREED,PERF0,PERFL2]=wpdencmp(X,SORH,N,'
wname'
CRIT,PAR,KEEPAPP)
(1)
[XD,TREED,PERF0,PERFL2]=wpdencmp(TREE,SORH,CRIT,PAR,KEEPAPP)
(2)
格式
(1)返回输入信号X(一维或二维)的去噪或压缩后的信号XD。
输出参数TREED是XD的最佳小波包分解树;
PERFL2和PERF0是恢复和压缩L2的能量百分比。
PERFL2=100*(X的小波包系数范数/X的小波包系数)^2;
如果X是一维信号,小波wname是一个正交小波,则PERFL2=100*||XD||^2/||X||^2。
SORH的取值为'
s'
或'
h'
,表示的是软阈值或硬阈值。
输入参数N是小波包的分解层数,wname是包含小波名的字符串。
函数使用由字符串CRIT定义的熵和阈值参数PAR实现最佳分解。
如果KEEPAPP=1,则近似信号的小波系数不进行阈值量化;
否则,进行阈值量化。
格式
(2)与格式
(1)的输出参数相同,输入选项也相同,只是它从信号的小波包分解树TREE进行去噪或压缩。
3.2小波包处理图像主程序介绍
下面是运用小波包进行图像处理的程序实例:
I1=imread('
D:
\Install\Matlab\toolbox\images\imdemos\moon.tif'
);
L=4;
I=wextend('
2D'
'
zpd'
I1,L);
nbc=size(I,1);
X=im2double(I);
%产生噪声图像
init=2055415866;
randn('
seed'
init);
x=X+randn(size(X))/10;
wname='
sym4'
;
lev=3;
[c,l]=wavedec2(x,lev,wnam