郑春梅
(忻州职业技术学院 山西 忻州 034000)
图像在航空航天项目中的应用范围越来越广泛,例如遥感图像、视频图像等。各种图像和视频传输设备的发展也引起了人们的关注,图像中包含的数据量也越来越大,这么大的数据量对存储、处理和传输带来了许多问题,所以对图像进行合适的压缩,降低数据率以减少传输带宽,从而满足实际使用的要求;提高帧频,尽量减少要传输或存储的比特数[1]。本文针对图像的无损压缩编解码技术展开,先对图像进行预处理,减少图像的冗余信息,然后基于位平面利用改进后的算术编码方法对数据进行压缩[2-3];采用VC++6.0作为仿真平台,可直观的看出预测编码和算术编码相结合的仿真结果,压缩比得到了很大的提高,从而能够满足某些信号处理器的帧频及带宽要求。
由于对相关性较强的原始图像直接进行熵编码效率很低,需要先对图像进行一定程度的解相关,减少或消除图像相关性,本文采用的是差值脉冲编码调制(DPCM,Differential Pulse Code Modulation)[4]。
针对一幅二维图像,设空间坐标(i,j),ƒ(i,j)为对应像素点的实际灰度值,ƒ'(i,j)是根据邻域像素灰度对该点灰度预测值,e(i,j)=ƒ(i,j)-ƒ'(i,j)为实际灰度值和预测灰度值之间的差值,则解码:ƒ(i,j)=e(i,j)+ƒ'(i,j)。
由于图像邻域像素间的强相关性,因此根据邻域像素进行预测得到的误差值e(i,j)很小,最终编码时,直接对预测误差值e(i,j)进行编码而不是对实际灰度值ƒ(i,j)进行编码。
DPCM编解码算法简单,便于实现。DPCM压缩率与预测器性能相关,预测器的预测误差越小,则压缩率越高。预测模型与邻域像素有关,如图1所示。
图1 DPCM预测模型示意图
设Y为需要预测的像素,A、B、C、D为邻域像素。DPCM预测模型有如下几种:
其中a和d两个模型运算量小,预测精度高,本文采用的是a模型,值得注意的是第一行和第一列是无法按照模型a进行预测的,所以将ƒ(0,0)这个值放到编码码流当中,直接进行传输,令e(0,0)=0,而e(0,j)=ƒ(0,j)-ƒ(0,j-1),e(i,0)=ƒ(i,0)-ƒ(i-1,0),(i>0,j>0)。
原始图像经过DPCM预测之后,得到误差结果,这些结果都是在0值上下一定范围内浮动的数值,有正负之分,本文将这些值处理后构造位平面,然后作为编码器的输入,具体步骤如下:
(1)对帧内预处理结果构造位平面,将原始图像进行DPCM的预测误差结果放到一个一维int型数组DifSourceBuf[MAX_NUM],其中MAX_NUM是这些数据总的个数。
(2)将数组DifSourceBuf[MAX_NUM]中的值取绝对值,然后将结果存到另一块存储空间DifAbsBuf[MAX_NUM]中。
(3)找出数组DifAbsBuf中的最大值Max_Abs,位平面个数ValidBitPlane初始化为1,然后利用迭代循环的方式,求得位平面的个数。
(4)DifAbsBuf数组中的绝对值数据的每一位作为一个位平面,共ValidBitPlane-1个。例如:第一个位平面由DifAbsBuf数组中MAX_NUM个数据的最低位按数组中所在位置排列而成,第二个位平面由DifAbsBuf数组中MAX_NUM个数据的第二位按数组中所在位置排列而成。
(5)DifSourceBuf数组中的符号位构成第ValidBitPlane个位平面,即若DifSourceBuf数组中的值为负数,则位平面中当前位的值为1,否则为0。
(6)位平面的总数最多不会超过33个,本文用一个字节记录位平面的总数,然后将位平面总数作为压缩码流的一部分。
算术编码是将待编码的消息表示成0和1之间的一个实数区间,下面是一种改进的算术编码[5],通过比较编码区间的宽度值和阈值来进行重归一化,该操作一般以比特为单位进行。
假设编码第n个符号后编码区间的宽度为:
式中Hn和Ln分别是编码区间的高限值和低限值,满足Hn≤Hn+1≤1,0≤Ln≤Ln+1,假设Rn是编码区间的宽度,则有Rn=Hn-Ln,编码开始时,是编码区间,在编码的过程中采用以下公式对编码区间进行更新:
更新后的编码区间的宽度值表示为:
本文在原有的算数编码理论的基础上做了一些改进,由于重归一化只对编码区间宽度值R进行操作,而且被输出的编码码流值和编码区间的低限值L相关,所以可以采用下面两个编码方程对编码区间的低限值L和宽度值R[6]进行更新:
为了使上式能够计算正确,需满足以下关系:
其中b为L和R的有效位数,f为统计模型中最大频率值的位数,P为用于算术计算的位数,假设P=32,则b=20,f=11。
重归一化过程中,如果编码区间宽度值R小于阈值2b-8,则表明L和H具有相同的最高有效字节,在后续的编码过程中,由于L的最高有效字节不变,故可以把这个字节移出当作编码器输出的编码码流,同时将L和R左移一个字节。然后重复上述操作,直到R值大于等于2b-8为止。在此将阈值设置为2b-8是为了重归一化过程以比特为单位进行,并且每次输出码流也是以比特为单位的。
当一个符号重归一化过程编码结束时,R的值为2b-8≤R≤2b-m,0≤m≤8。这表明L和H在本次的重归一化中还存在着没有被输出的最高有效位有m个。在后期的编码期间,只有严格符合重归一化的条件才会被输出。因为在后续的编码过程中,对编码方程中的参数进行更新后,L中的这m个最高有效位不再有所变化,因此可以确保码流的正确性和完整性。由于编码过程中会产生进位,需要对进位传播问题进行处理,设置一个字节的寄存器buf,当L中移出的最高有效字节不等于oxFF时,则将值赋给buf,否则不赋给buf,连续出现L的最高有效字节为oxFF的次数需要用计数器C来记录,进位情况由进位状态寄存器Z记录。在产生进位时,将Z置1,然后令buf加1,然后判断C,假如C不为0,则连续输出C个0x00,当作编码码流,整个过程不需要额外地再增加编码码流。
整个编码过程的流程图如图2所示。
图2 编码流程图
本文采用VC++6.0作为仿真平台,利用VC方便的人机交互环境,可以直观地看出算法仿真结果。
输入源图像数据为两幅不同的256×256×14bits的灰度图像,用VC打开计算机硬盘中的图像文件,在定时中断服务程序中进行每帧图像的无损压缩编码与解码的过程。图3(a)和(b)所示的为两幅图像采用单独算术编码算法的原始图像和解码后的图像,以及平均压缩比。
图3 单独算术编码压缩效果示意图
图4(a)和(b)所示的为两幅图像采用DPCM帧内预测加算术编码算法的原始图像和解码后的图像及平均压缩比;
图4 预测编码结合算术编码压缩效果示意图
通过仿真结果可以看出,该算法完全达到了无损压缩的要求,误码率为0,对于单独采用算术编码的图像,平均压缩比只能达到1.37左右。而对于预测编码和算术编码结合的情况,压缩比则有了明显的提高,尤其是针对帧内空间冗余度高的图像,平均压缩比可以达到4.0。
本文采用DPCM对相关性较强的图像进行预处理,建立位平面,然后利用改进了的算术编码方法对数据进行了压缩。通过对采用单独算术编码算法和DPCM帧内预测加算术编码算法的图像仿真进行比较,可以清晰地看出基于DPCM预测与算术编码的图像无损压缩方法既能保证了0误码率,又能使得压缩比得到很大的提高,解决了图像和视频传输设备的帧频和带宽问题,具有实际应用价值。
[1] 许霞,马光思,鱼涛.LZW无损压缩算法的研究与改进[J].计算机技术与发展,2009,19(4):1-3.
[2] Rafael C.Gonzalez,Richard E.Woods.数字图像处理[M].北京:电子工业出版社,2006.
[3] 李雷定,马铁华,尤文斌.常用数据无损压缩算法分析[J].电子设计工程,2009,17(1):49-53.
[4] Ding Rong,Wu Lenan.Enhanced DPCM using LMS predictor and composite source model.Electronics Letters,1997,33:740-741.
[5] Jiang J.Novel design of arithmetic coding for data compression[J].IEE Proceedings Computers & Digital Techniques,1995,142(6):419-424.
[6]黄菁,朱日宏,李建欣.改进的快速算术编码及其在图像编码中的应用[J].中国图象图形学报,2007,12(7):1194-1200.
[7]黄菁.高光谱图像编码研究[D]南京:南京理工大学2008.
[8]李玮.雷达情报编码技术研究及在短波信道中的应用[D].江苏科技大学2012.
[9]冯庆宇.数字化医疗影像图像处理[J].中国医疗设备,2011.
[10]方敏.JPEG算法的研究与实现[D].辽宁:辽宁工程技术大学,2002.
[11]图形与图像处理-百度文库.互联网文档资源(http://wenku.baidu.com),2012.