ezw证件照芯片压缩算法

相关网站:http://m.blog.csdn.net/blog/kimwu/12654517

http://blog.sina.com.cn/s/blog_4be751690100bsgb.html

下载地址:http://files.cnblogs.com/lanye/EZW%E7%B1%BB%E7%AE%97%E6%B3%95.rar

摘  要:本文提出了一种静止图像的分级压缩算法。该方法以著名的EZW算法为基础,对感兴趣区域的图像进行高质量编码,而对背景图像进行粗糙编码。该方法对于存储空间有限的情况下,对感兴趣区域的图像进行高质量编码,而背景图像则根据存储空间的情况自动设置编码级数,这种编解码方法,即保证了感兴趣区域的图像质量,也使得压缩后的图像大小满足存储空间的要求。
关键词:感兴趣区域;小波变换;零树;EZW
1          
小波变换理论是近几年兴起的崭新的时(空)频域分析理论,与其它的变换编码方法一样,小波变换也是将图像时域(空域)信号变换到系数空间(频域)上进行处理的方法,许多学者在利用小波变换进行图像压缩方面做了大量工作,并取得了相当大的成果,其中Shaprio的嵌入式零树小波编码方法(EZW)[1]是最有影响的小波图像编码方法之一。
Embedded Zerotree Wavelet(EZW)编码方法是对整幅图像进行同一级别编码的方法,图像中的重要区域与背景区域具有同样的编码级数,而有些应用对于重要区域(感兴趣区域)的图像质量要求较高,对于背景区域的图像质量要求相对较低,且对编码后的数据量有着严格的限制。例如在数字个人身份证件系统(Digital Personal Identification System)[3]中,一般要求在一个PDF417二维条码(存储空间为1024个字节)存储一到两枚指纹特征数据、一张个人照片和一些个人的文字信息,通过验证照片和指纹来确定证件的真伪。这种系统的核心技术有两个,一个是指纹的识别,另一个就是照片的压缩。由于受到PDF417存储空间的限制,对照片的压缩要求非常高,如果利用普通的EZW算法对整幅图像进行压缩,反映一个人主要特征的面部信息与其它不重要的信息具有相同的压缩比,在有限的存储空间上很难达到理想的效果。
本文提出了静止图像的分级压缩算法,即首先检测出主要的面部信息区域(感兴趣区域),确定感兴趣区域的位置,然后对感兴趣区域内外的图像进行不同级数的EZW编码,这样得到的压缩图像即满足数据量的要求,也可使图像的主要信息有较好的视觉效果。
2        小波图像压缩的EZW算法
为便于叙述,对EZW算法作简单回顾。EZW编码是一个简单的、被证明非常有效的图像编码算法,它是目前公认的静态图像变换压缩编码的最好方法之一。由这种算法得到的比特流中的比特是按照它们的重要性排序的。使用这种编码算法,编码者可以在任意一点结束编码,这样就可以使编码精确地达到一个目标比特率或者一个目标失真率,而这时仍能产生确切的图像。这种算法的特点是不要求训练,不要求预先存储格式码书,也不要求图像源的任何先验知识。
EZW编码基于以下三个主要思想,即:
(1)  利用小波变换在不同尺度间固有的相似性来预测重要信息的位置[2]
(2)  逐次逼近量化小波系数;
(3)  使用自适应算术编码来实现无损数据压缩
小波分解后信号的低频部分对应于原信号的一个平滑版本,高频部分对应于原信号的边沿信息。一幅图像经过若干级小波分解后,在不同子带的相同位置的变换系数应该是相关的,这种相关性形成了零树结构[1],即一个小波系数x,对于一个给定的门限T,如果|x|<T,则称小波系数x是不重要的。如果一个小波系数在一个粗的尺度上,关于给定的门限是不重要的,且之后在较细的尺度上,对同样空间位置中的所有小波系数也关于给定的门限T是不重要的,则称小波系数形成了一个零树。这时,在粗的尺度上的那个小波系数称为母代小波系数,它是树根,在较细尺度上相应位置上的小波系数称为子代小波系数。如果一个小波系数关于门限T是不重要的,但它的子代小波系数中存在关于门限T是重要的系数,则称这个小波系数是孤立零。由此,所有的小波系数只是下面三种情形之一:零树根(ZTR);孤立零(IZ);重要系数。当然,为了编码的需要还可把重要系数分为正重要系数(POS)和负重要系数(NEG)。
       EZW的编码思路是不断扫描变换后的图像,生成多棵零树对图像编码;一棵零树的形成需要对图像进行两次扫描。在生成第一棵零树时,首先找出变换后图像的最大绝对值系数,用它的一半作为初始阈值。在第一次扫描中,将变换图像中绝对值小于阈值的系数看作0,然后按前面符号的定义形成零树。在第二次扫描中,对那些绝对值大于阈值的点(POS和NEG)按其绝对值是否超过阈值的1.5倍附加一个比特1或0来描述其精度,使其附和下一次阈值减半后的比特附加[1]。而后将阈值减半,再经过两次扫描生成第二棵零树,在第一次扫描生成零树时,以前已经大于阈值的点不再考虑,而第二次扫描附加比特时则要考虑以前数值较大的点以保证精度。如此往复,不断生成零树,直到满足要求为止[4]
       EZW是一种嵌入式编码。即从一幅空图像开始,得到逐步精确的图像。在解码器端可以根据需要在任何时刻停止解码,于是可以得到由粗略到精细的各种图像,逐渐逼近无损压缩的图像。
3        图像的分级压缩算法
3.1        EZW算法在特殊应用中的不足
EZW算法是对整幅图像进行一致压缩的算法,这对于一些特殊的应用往往不能产生好的效果,例如前面提到的数字个人身份证件系统中,由于受到存储空间的限制,如果采用EZW算法,对面部信息和其它不重要的信息进行同等级数的零树编码,在有限的存储空间上很难达到理想的效果。
3.2        静止图像的分级编码算法
为了提高图像中主要信息的图像质量,我们对感兴趣区域内外的图像采用不同级数的零树小波编码,编码算法主要有三部分组成:
(1)     确定感兴趣区域:在此可采用一些经典的识别算法,根据不同应用确定图像中的感兴趣区域,例如在数字个人身份证件系统中,照片中的主要信息应该在面部(眼睛和嘴所在的区域),所以可以把感兴趣区域确定为面部所在的区域。
(2)     对整幅图像进行零树编码:这部分是对整幅图像进行两级或三级EZW编码,具体EZW编码进行的级数由存储空间和对图像质量的要求来确定。
(3)     对感兴趣区域内的图像进行零树编码:在上一步经过几次对整幅图像的EZW编码后,对感兴趣区域内的剩余图像继续进行EZW编码,直到达到存储空间限制时为止。
这样编码后的图像,在解码时感兴趣区域内的图像质量要比感兴趣区域外的图像质量高,这就保证了在有限的存储空间内,图像中的重要信息损失得尽可能的少,而使得图像有较好的视觉效果。
3.3  静止图像的分级解码算法
对上面的编码图像进行解码时,与EZW算法的解码相似,主要也由三部分组成:
(1)        对整幅图像进行两级或三级EZW解码;
(2)        对感兴趣区域内的图像进行EZW解码;
(3)        消除边缘效应:在以上两步的基础上,对感兴趣区域的四周做3*3的均值滤波,以消除感兴趣区域边缘的影响,使
4        实验结果
实验采用了个人身份证上的免冠照片,尺寸为96*128个象素,压缩后的图像大小为300字节。第一步确定感兴趣区域,眼睛是人脸的最重要的面部特征,其次是嘴,所以首先定位眼睛和嘴,然后确定出面部特征区域ROFF(Region Of Facial Features)[5],把它作为感兴趣区域;第二步对整幅图像进行三次EZW编码;第三步根据剩余空间大小,对感兴趣内的数据继续进行EZW编码,直到整个编码后的数据量达到300字节时为止。在解码时,对压缩的码流进行EZW解码之后,对感兴趣区域的边缘进行3*3的均值滤波,使解码后的图像具有更好的视觉效果。图4是具有感兴趣区域的分级图像编码算法的实验结果。得感兴趣区域内外的图像在视觉上差别变弱。
5          
针对EZW算法在一些特殊应用中的不足,提出了静止图像的分级压缩算法,该算法对同一幅图像中的不同区域进行不同级数的零树编码,这样在满足压缩比的前提下,使图像中的重要区域具有更好的重建质量。
参考文献
1         Shapiro J M. Embedded image coding using zerotree of wavelet coefficients . IEEE Trans. Signal Processing ,1993 ,41(12):3445~3462.
2         Daubechies I. The wavelet transform, time-frequency localization and signal analysis. IEEE Trans. Information Theory , 1990,36(5):961~1005.
3         郭田德 . 彩色身份证件照片的混合压缩算法.计算机学报,Vol.23 NO.3.王琪 . 一种结合量化的零树小波图像编码器.清华大学学报,2000,40(7).
4         Hu J H, Wang R S , Wang  Y, Compression of Personal Identification Pictures Using Vector Quantization with Facial Feature Correction. Optical Engineering, 1996, 35(1):198-293.
i_mei@263.net
原文地址:https://www.cnblogs.com/lanye/p/4171120.html