计算机所能处理的各种信息都是数字信息。数字化了的各种信息数据量很大,如果直接使用,肯定会给计算机造成很大负担。例如,一张A4幅面的图片,若用中等分辨率的扫描仪按真彩扫描,其数据量大约为26MB,这是一个不小数目。这些大量的数据信息会对存储器的存储容量、通信干线信道的带宽以及计算机的处理速度产生极大的压力,因此必须对这些数据进行
压缩。本文仅就行程长度(RLE)无损压缩算法及其改进方法进行研究。
1 行程长度(RLE)压缩算法的基本原理[1]
对于图像文件中的各个像素数据,由于图像颜色的梯度变化,相邻像素的颜色值相同的可能性极大,RLE(Run Length Encoding)压缩算法的原理就是将一扫描行中颜色值相同的相邻像素,用一个计数值和那些像素的颜色值来代替。主要通过压缩除掉数据中的冗余字节或字节中的冗余位,从而达到减少文件所占空间的目的。例如,有一表示颜色像素值的字符串aaaaaabbccccddddddddeeeeeee,用RLE压缩方法压缩后,可用6a2b3c8d6e来代替,显然后者的串长度比前者的串长度小得多。但是,当图像像素的颜色值出现特殊情况时,如每个相邻像素的颜色值均不同,则经此方法压缩后,反而会使数据串的长度增加一倍,为了尽量避免前述特殊数据的出现,RLE方法在具体实施时对计数字节和图像像素字节进行了区分,对每个相邻像
素的颜色值均不同的单个像素数据,只有当高2位全1时才加1计数,否则直接输出该像素值,因此避免了压缩后长度增加一倍的情况。这样就使得计数字节本身的高2位也是全1,即计数字节为C0H+n(像素数据连续相同的字节数)。由于一个字节最大只能为FFH,因此n最大只能为FFH-C0H=3