首页 > C/C++语言 > C/C++数据结构 > 计算机图像常用压缩方法
2006
05-26

计算机图像常用压缩方法

一、行程长度压缩
原理是将一扫描行中的颜色值相同的相邻像素用一个计数
值和那些像素的颜色值来代替。例如:aaabccccccddeee,
则可用3a1b6c2d3e来代替。对于拥有大面积,相同颜色区
域的图像,用RLE压缩方法非常有效。由RLE原理派生出许
多具体行程压缩方法:
1.PCX行程压缩方法:
该算法实际上是位映射格式到压缩格式的转换算法,该算
法对于连续出现1次的字节Ch,若Ch> 0xc0则压缩时在该字
节前加上0xc1,否则直接输出Ch,对于连续出现N 次的字
节Ch,则压缩成0xc0+N,Ch这两个字节,因而N最大只能
为ff-c0=3fh(十进制为63),当N大于63时, 则需分多次
压缩。

2.BI_RLE8压缩方法:
在WINDOWS3.0、3.1 的位图文件中采用了这种压缩方法。
该压缩方法编码也是以两个字节为基本单位。其中第一个
字节规定了用第二个字节指定的颜色重复次数。 如编码
0504表示从当前位置开始连续显示5个颜色值为04的像素。
当第二个字节为零时第二个字节有特殊含义:0表示行末;1
表示图末;2转义后面2个字节, 这两个字节分别表示下一
像素相对于当前位置的水平位移和垂直位移。这种压缩方
法所能压缩的图像像素位数最大为8位(256色)图像。

3.BI_RLE压缩方法:
该方法也用于WINDOWS3.0/3.1位图文件中,它与 BI_RLE8
编码类似,唯一不同是:BI_RLE4的一个字节包含了两个像
素的颜色,因此,它只能压缩的颜色数不超过16的图像。
因而这种压缩应用范围有限。

4.紧缩位压缩方法(Packbits):
该方法是用于Apple公司的Macintosh机上的位图数据压缩
方法, TIFF 规范中使用了这种方法, 这种压缩方法与
BI_RLE8压缩方法相似,如1c1c1c1c2132325648 压缩为
:83 1c 21 81 32 56 48,显而易见, 这种压缩方法最好
情况是每连续128个字节相同,这128个字节可压缩为一个
数值7f。这种方法还是非常有效的。

二、霍夫曼编码压缩:
也是一种常用的压缩方法。是1952年为文本文件建立的,
其基本原理是频繁使用的数据用较短的代码代替,很少使
用的数据用较长的代码代替,每个数据的代码各不相同。
这些代码都是二进制码,且码的长度是可变的。如: 有一
个原始数据序列,ABACCDAA则编码为A(0),B(10),C(110)
,D111),压缩后为010011011011100。产生霍夫曼编码需
要对原始数据扫描两遍,第一遍扫描要精确地统计出原始
数据中的每个值出现的频率,第二遍是建立霍夫曼树并进
行编码,由于需要建立二叉树并遍历二叉树生成编码,因
此数据压缩和还原速度都较慢,但简单有效,因而得到广
泛的应用。

三、LZW压缩方法

LZW压缩技术比其它大多数压缩技术都复杂, 压缩效率也
较高。其基本原理是把每一个第一次出现的字符串用一个
数值来编码,在还原程序中再将这个数值还成原来的字符
串,如用数值0×100代替字符串”abccddeee”这样每当出现
该字符串时,都用0×100代替,起到了压缩的作用。 至于
0×100与字符串的对应关系则是在压缩过程中动态生成的,
而且这种对应关系是隐含在压缩数据中,随着解压缩的进
行这张编码表会从压缩数据中逐步得到恢复,后面的压缩
数据再根据前面数据产生的对应关系产生更多的对应关系。
直到压缩文件结束为止。LZW是可逆的, 所有信息全部保
留。

四、算术压缩方法
算术压缩与霍夫曼编码压缩方法类似,只不过它比霍夫曼
编码更加有效。算术压缩适合于由相同的重复序列组成的
文件,算术压缩接近压缩的理论极限。这种方法,是将不
同的序列映像到0到1之间的区域内,该区域表示成可变精
度(位数 )的二进制小数,越不常见的数据要的精度越高(
更多的位数),这种方法比较复杂,因而不太常用。
五、 JPEG( 联合摄影专家组 Joint Photographic
Exprerts Group)
JPEG标准与其它的标准不同,它定义了不兼容的编码方法,

在它最常用的模式中,它是带失真的,一个从JPEG文件恢
复出来的图像与原始图像总是不同的,但有损压缩重建后
的图像常常比原始图像的效果更好。JPEG的另一个显著的
特点是它的压缩比例相当高,原图像大小与压缩后的图像
大小相比,比例可以从1%到80~90%不等。 这种方法效
果也好,适合多媒体系统。


留下一个回复