基于小波包的图像压缩及matlab实现

摘要:小波包分析理论作为新的时频分析工具,在信号分析和处理中得到了很好的应用,它在信号处理、模式识别、图像分析、数据压缩、语音识别与合成等等许多方面都取得了很有意义的研究成果。平面图像可以看成是二维信号,因此,小波包分析很自然地应用到了图像处理领域,如在图像的压缩编码、图像消噪、图像增强以及图像融合等方面都很好的应用。本文将对小波包分析在图像处理中的应用作以简单介绍。

关键词:小波包 图像处理 消噪

1.小波包基本理论

1.1 小波包用于图像消噪

图像在采集、传输等过程中,经常受到一些外部环境的影响,从而产生噪声使得图像发生降质,图像消噪的目的就是从所得到的降质图像中去除噪声还原原始图像。图像降噪是图像预处理中一项应用比较广泛的技术,其作用是为了提高图像的信噪比突出图像的期望特征。图像降噪方法有时域和频域两种方法。频率域方法主要是根据图像像素噪声频率范围,选取适当的频域带通过滤波器进行滤波处理,比如采用Fourier变换(快速算法FFT)分析或小波变换(快速算法Mallat算法)分析。空间域方法主要采用各种平滑函数对图像进行卷积处理,以达到去除噪声的目的,如邻域平均、中值(Median)滤波等都属于这一类方法。还有建立在统计基础上的lee滤波、Kuan滤波等。但是归根到底都是利用噪声和信号在频域上分布不同进行的:信号主要分布在低频区域。而噪声主要分布在高频区域,但同时图像的细节也分布在高频区域。所以,图像降噪的一个两难问题就是如何在降低图像噪声和保留图像细节上保持平衡,传统的低通滤波方法将图像的高频部分滤除,虽然能够达到降低噪声的效果,但破坏了图像细节。如何构造一种既能够降低图像噪声,又能保持图像细节的降噪方法成为此项研究的主题。在小波变换这种有力工具出现之后,这一目标已经成为可能。

基于小波包变换消噪方法的主要思想就是利用小波分析的多尺度特性,首先对含有噪声的图像进行小波变换,然后对得到的小波系数进行阈值化处理,得到新的小波系数,对其进行反变换,这样我们就得到了消噪之后的图像,从而实现了对图像的恢复。目前,已经发展了许多小波变换与传统图像消噪方法相结合的新的图像消噪算法,它们吸收二者的优点,从而提高了图像的消噪效果,得到了较好的应用。

1.2. 小波包用于图像压缩

当今,我们正处在一个高速发展的信息时代,而信息的本质就是要求进行存储、交流和传输。信息有多种形式,包括文字、声音、静止图像、视频图像等等。在众多的信息形式中,图像信息最具有直观性和生动性,从而成为人们需求的主要信息形式。然而由于图像信息的数据量太大,作数字传输时占有的信道频带有非常宽的问题,直接制约着图像信息的存储和传输。因此,为了有效地利用现代通讯业务和信息处理中的宝贵资源,需要对大量的数据信息,尤其是图像信息进行压缩,因此图像数据压缩技术和解压缩技术成了多媒体技术的关键技术之一。

近年来,由于“海量”多媒体信息的出现,经典图像压缩算法已不能满足实际应用的需要,迫切需要有更高压缩效率和适用于各种需要的新压缩算法。经典压缩算法一般是在时域或者频域进行分析和操作,因而经典图像压缩算法只是利用了图像的部分特征,研究人员希望同时利用两个域的特征,兼容时域和频域分析的优越性。另外经典压缩算法一般使用的DCT和傅立叶变换是用余弦曲线和正弦曲线作为它们的正交函数基,但这些函数都不是紧支集。而我们在实际应用中处理的大部分是瞬态信号。特别地,在图像处理中许多重要特征也是空间位置高度局部化的,如果使用一般的变换,这些瞬态和局部化成分的信息就很难得到最佳表示。实际上,DCT和傅立叶变换能用余弦和正弦函数表示任何分析函数,甚至是一个瞬态信号,但这种表示在函数频谱上会呈现相当混乱的构成。

为了克服这种缺陷,研究人员已经发现若干种使用优先宽度的基函数,我们称之为小波。使用这些基函数的变换被称之为小波变换。利用小波变换对图像进行压缩是当前一个研究热点。小波包分析是近些年在小波分析的基础上发展起来的,将图像在小波包最优基下展开,利用小波包最优基极好的空间、尺度定位性,使得图像的小波包变换系数在小波变换域尽可能的集中,从而使在不降低压缩图像的质量情况下,进一步地提高图像压缩比成为可能。

2.小波包分析

短时傅立叶变换对信号的频带划分是线性等间隔的。多分辨分析可以对信号进行有效的时频分解,但由于其尺度是按二进制变化的,所以在高频频段其频率分辨率较差,而在低频频段其时间分辨率较差,即对信号的频带进行指数等间隔划分(具有等Q结构)。小波包分析能够为信号提供一种更精细的分析方法,它将频带进行多层次划分,对多分辨率分析没有细分的高频部分进一步分解,并能够根据被分析信号的特征,自适应地选择相应频带,使之与信号频谱相匹配,从而提高了时-频分辨率,因此小波包具有更广泛的应用价值。关于小波包分析的理解,这里以一个三层的分解进行说明,其小波包分解树如图2.1。





python 小波包分解低频与高频分量_机器学习



图2-1 小波包分解树

图2-1中,A表示低频,D表示高频,末尾的序号数表示小波分解的层树(也即尺度数)。分解具有关系:S=AAA3+DAA3+ADA3+DDA3+AAD3+DAD3+ADD3+DDD3。

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,wname);
sigma_s=0.048535;
% 图像降噪时,使用wbmpen 函数选择阈值
alpha=2;
thr_s=wbmpen(c,l,sigma_s,alpha);
% 使用软阈值和保存的低频信号,进行图像降噪
keepapp=1;
xds1=wdencmp('gbl',x,wname,lev,thr_s,'s',keepapp);
sigma_h=0.045663;
thr_h=wbmpen(c,l,sigma_h,alpha);
% 使用硬阈值和保存的低频信号,进行图像降噪
xdh1=wdencmp('gbl',x,wname,lev,thr_h,'h',keepapp);
%colormap(pink(nbc));
subplot(231);imshow(I,nbc);title('原始图像');
subplot(234);imshow(x);title('加噪图像');
subplot(232);imshow(xds1);title('小波软阈值降噪图像');
subplot(235);imshow(xdh1);title('小波硬阈值降噪图像');
tree=wpdec2(x,lev,wname);
det1=[wpcoef(tree,2) wpcoef(tree,3) wpcoef(tree,4)];
sigma=median(abs(det1(:)))/0.6745;
alpha=2;
thr=wpbmpen(tree,sigma,alpha);
keepapp=1;
xds2=wpdencmp(tree,'s','nobest',thr,keepapp);
xdh2=wpdencmp(tree,'h','nobest',thr,keepapp);
colormap(pink(nbc));
subplot(233);imshow(xds2);title('小波包软阈值降噪图像');
subplot(236);imshow(xdh2);title('小波包硬阈值降噪图像');

在本程序中首先读取matlab安装包中自带的图片(路径为:D:\Install\Matlab\toolbox\images\imdemos\moon.tif),然后对图片进行零延拓,再将其转换为双精度信息。程序框图图3-1所示:



python 小波包分解低频与高频分量_python_02



图3-1程序框图

分别用小波和小波包处理图像处理结果如下图3-2所示:



python 小波包分解低频与高频分量_python 小波包分解低频与高频分量_03



图3-2小波和小波包处理图像结果

从图3-2可以看出,在选用sym4小波进行多尺度分解时,去噪效果还是比较理想的。其中小波软阈值降噪最为理想,总体来说用小波包进行降噪效果比小波较好。

4.总结

本文主要结合小波包变换的基本概念和基本原理,详细讨论小波包在图像处理领域的应用,并结合MATLAB程序设计语言来说明其应用。在程序设计中,本文通过小波降噪与小波包降噪两种方法的比较,试着来解释小波与小波包图像去噪的区别。

小波分析的思想是用一族函数去表示或逼近一信号或函数,这一族函数称为小波函数系。它是通过满足一定条件的基本小波函数的不同尺度的平移和伸缩构成的。用小波函数系表示的特点是它的时宽与频宽的乘积很小,且在时间和频率轴上都很集中。因此,其时-频分辨率在低频处频率分辨率高,在高频处时间分辨率高,频率分辨率却降低。这是正交小波基的一大缺陷。而小波包却具有随分辨率的增加,变宽的频谱窗口进一步分割变细的优良品质,因而它能对小波分析没有细分的高频部分进行进一步分解,并能够根据被分析信号的特征,自适应地选择相应的频带,使之与信号频谱相匹配,从而提高时频分辨率,它是一种比小波分析更精细的分析方法。

从图像可以看出,无论采用小波还是小波包,软阈值的去噪效果都要好于硬阈值去噪,这主要是因为软阈值法具有连续性,从而使去噪后的图像相对平滑,但就保留细节而言,硬阈值法要好于软阈值法,这充分体现了软阈值法和硬阈值法各自的特点。另一方面,从图像还可以看出,小波包去噪方法的去噪效果要明显好于小波去噪方法。