摘 要: 根据不同特征的图像在进行小波变换中能量分布的特点,提出了一种用能量函数来控制小波的分解,并找到图像的最佳小波分解树,从而完成自适应图像压缩的方法。
关键词: 小波自适应算法 能量函数 最佳小波分解树 图像压缩
在众多图像压缩的方法中,小波变换以其优异的时频局部能力及良好的去相关能力在图像压缩编码中得到了广泛应用,并取得了良好的效果[1]。目前,运用小波变换进行图像压缩编码时一般都集中在对小波变换的多分辨率分析上,即着眼于对多分辨率下的小波系数进行不同的编码和量化。本文在对图像进行小波变换后,针对不同特征的图像提出了一种能量准则,来控制小波的分解,从而实现图像的自适应压缩编码。
1 图像中的小波分解
但在实际中,可以不必知道ψ(x)和?准(x)的具体表达形式,而只需知道系数h(m)和g(m)即可。对于图像分解,一般采用行列可分离的低、高通滤波器与图像进行卷积并抽样图像来实现其小波分解。对图像S进行第1次小波变换的过程如图1所示。图像3级分解后的子图位置如图2所示。图2中,LL子图包含原始图像的低频信息,称为低频子图;LH子图包含图像的横向边缘信息,称为水平边缘子图;HL子图包含图像的纵向边缘信息,称为垂直边缘子图;HH子图包含图像的对角边缘信息,称为对角线子图。LH、HL、HH子图又统称为高频子图。若对图像进行N次分解,一共可分解成3N+1幅子图像。
2 小波变换后各频带统计
小波变换用于图像压缩的一般方法是先对图像进行小波变换,然后再对低频部分LL进行递归分解。这种塔式小波分解[3]的依据是图像的重要信息往往包含在LL频带。本文用db3(Daubechies 3)小波对图像Woman、Lena和Fingerprint进行了分解并给出了每一层分解后各个分量的能量。
其中,能量定义为:
E=100×(Ed/Et)
Ed为分解子带经小波变化后的系数值的平方和,Et为分解后的所有系数值的平方和。
db3小波1次分解和3次分解变换的能量统计表分别如表1和表2所示。其中,Ell表示低频LL的能量,Elh、Ehl、Ehh对应LH、HL、HH各个频带的能量。
从表1可以看出,图像Woman、Lena和Fingerprint的能量主要集中在低频LL带上;其他频带LH、HL、HH集中了图像少量的能量;LH、HL、HH各个频带包含的图像信息不同,其中HL相对于其他2个频带包含了更多的图像信息。
从表2可以看出:图像Woman、Lena和Fingerprint经过db3的3次小波分解后的能量总体分布规律同表1大体相同;HH频带相对于其他频带的能量更少,对图像影响更弱;HL、LH频带的能量百分比增大,包含的图像信息量也相应增加;频带LH、HL、HH对不同特征的图像影响能力不同:图像Woman中LH、HL、HH频带的总能量Et值减小,对图像的影响逐步减弱,包含的图像重要信息相对减少;而图像Lena和图像Fingerprint中LH、HL、HH频带总能量Et值增大,对图像的影响逐步增强,包含的图像的重要信息相对增多。
从表1和表2中可知,在实际中也有一些图像的图像信息往往会包含在HL或LH频带中。所以,如果只是对图像的低频分量进行分解,对于某些类型的图像的数据进行压缩,就可能将图像中重要的信息丢失掉,影响实际应用。因此,需要用一种具有普遍性的算法来控制图像的分解。
3 小波自适应算法
针对传统的塔式小波分解存在的不足,本文定义了一个能量函数F作为判断准则来控制小波分解。能量函数的定义为:
此外,再设置c、d 2个参数,用于控制图像的分解过程,其中c用于判断小波分解后的子图是否进行再分解,d用于判断其子图的重要性。为便于程序设计,设置标识为flg。当flg=0时,表示该子图不重要;当flg=1时,表示该子图重要;当flg=2时,该子图需要进行下一层小波分解。下面给出小波自适应的算法。
(1)选用合适的小波函数对图像进行第1次分解。
(2)设置参数c,d。
(3)用公式(1)计算第1次小波分解后的总能量值F1。
(4)用公式(2)和公式(3)计算出第1次小波分解后的低频LL及其他频带LH、HL、HH的能量值f1L、g1h。
(5)判断分解后各子频带的能量值是否大于cF1,若是,置flg=2;判断分解后各子频带的能量值是否小于dF1,若是,置flg=1。若非上述2种情况,则置flg=0。
(6)将flg=2的子图继续按照步骤(3)和(4)分解,直到子图的大小≤16×16时结束。
通过小波自适应算法,在图像分解过程就产生了图像的最佳小波分解树示意图,如图3所示。
最佳小波分解树的数据结构定义如下:
typedef struct besttree
{
struct besttree*child1;//LL 分量
struct besttree*child2;//LH分量
struct besttree*child3;//HL分量
struct besttree*child4;//HH分量
int flag;// flg标识
float*data;
}
4 图像编码机制
得到图像的最佳小波分解树后,就可以对其进行编码。首先处理分辨率最高层的LLm的子图。因为其包含了图像的主要信息,而且相邻象素之间存在较强的相关性,故对其采用压缩比较高的预测编码算法。其他的子图因其分解树具有不确定性,因而可根据其重要性来编码。对重要矢量的各分量进行标量量化,即将低于某个门限的分量置为0,对较大的系数屏蔽其后若干位。最后对保留的量化的系数进行算术编码。
图像的重构是上述图像分解的逆过程,即与上面的过程相反。先解码重要的图,重要的系数从熵解码中直接获得,不重要的系数用0填充,然后再重建出图像的LL分量的系数,再将小波系数反量化,最后再进行小波的反变换,则得到重建的图像。
5 实验结果及结论
本文实验采用的图像均为灰度静止图像,小波滤波器采用的是db3。实验图像有标准图像Lena、Woman、指纹图像和随机图像Mandrill。
在图像压缩中,衡量压缩算法的好坏主要有2个指标,即压缩比和恢复图像的质量。对于恢复图像的质量,目前广泛使用的主要有2个评价标准[3]:(1)客观标准,以恢复图像和原图像间的信噪比表示。(2)主观评价标准,根据人眼的视觉特性(HVS)对图像进行评价。
本文采用峰值信噪比(PSNR),其定义为:
M、N为图像的尺寸,x(i,j)、y(i,j)分别为原始图像和重构图像的象素值。
不同算法的实验数据比较如表3所示。
Mandrill的原始图像和压缩图像如图4所示。
从图4和表3中可以看出:本文采用的压缩算法不会产生块状效应,视觉效果明显优于JPEG的压缩,相对于JPEG各种不同特征的图像都提高了其压缩比,但是在图像的边缘处出现了锯齿现象。同时,本文在编码量化中通过分组判定重要性对数据进行分类组织,可以提高压缩比。在量化过程中不需要做乘、除法运算,加快了编解码的过程。
参考文献
1 王向阳,杨红颖.基于人眼视觉特性的快速图像编码算法.软件学报,2003;14(11)
2 Mallat S.A Theory for Multiresolution Signal Decomposition.The Wavelet Representation.IEEE Trans on Pattern Anal and Mach Intel,1989;11(7)
3 孙燕,卓晴.基于小波变换的一种有效的面向指纹自动识别的图像压缩算法.中国体视学与图像分析,1997;2(4)
4 胡昌华.基于MATLAB的系统分析与设计—小波分析.西安:西安电子科技大学出版社,1999