CSDN博客

img fhaibo

传真机huffman压缩编码

发表于2001/9/16 15:10:00  813人阅读

CCITT Group 3 modified Huffman run length encodeing

这种压缩方法,原来是CCITT这个组织所制定的一种传真机压缩编码方式,也就是Facsimile compatible CCITT Group3。不过,本压缩方法中减少了一些传真机上的特殊码。本压缩方法只能够压缩处理黑白图像数据。这套压缩方法是利用一个Bits不固定的编码,来代替在黑白图像数据中连续出现的一串白点或黑点。

所有编码的Bits值都是来自于下列三份表格:

Terminating codes

Make-up codes

Additional make-up codes

(1)       Terminating codes代表063连续白点或黑点的编码。在此范围内,没一点白点或黑点都有一个对应的编码。

(2)       Make-up codes代表641728连续白点或黑点的编码。在此范围内,每隔64点的白点或黑点就有一个对应的编码。

(3)       Additional make-up codes代表17922560连续白点或黑点的编码。在此范围内,每隔64点的白点或黑点共用一个对应的编码。

      Table 1a. Terminating White Codes

         Code            Lng     Run

         ---------------------------

         00110101        8       0

         000111          6       1

         0111            4       2

         1000            4       3

         1011            4       4

         1100            4       5

         1110            4       6

         1111            4       7

         10011           5       8

         10100           5       9

         00111           5       10

         01000           5       11

         001000          6       12

         000011          6       13

         110100          6       14

         110101          6       15

         101010          6       16

         101011          6       17

         0100111         7       18

         0001100         7       19

         0001000         7       20

         0010111         7       21

         0000011         7       22

         0000100         7       23

         0101000         7       24

         0101011         7       25

         0010011         7       26

         0100100         7       27

         0011000         7       28

         00000010        8       29

         00000011        8       30

         00011010        8       31

         00011011        8       32

         00010010        8       33

         00010011        8       34

         00010100        8       35

         00010101        8       36

         00010110        8       37

         00010111        8       38

         00101000        8       39

         00101001        8       40

         00101010        8       41

         00101011        8       42

         00101100        8       43

         00101101        8       44

         00000100        8       45

         00000101        8       46

         00001010        8       47

         00001011        8       48

         01010010        8       49

         01010011        8       50

         01010100        8       51

         01010101        8       52

         00100100        8       53

         00100101        8       54

         01011000        8       55

         01011001        8       56

         01011010        8       57

         01011011        8       58

         01001010        8       59

         01001011        8       60

         00110010        8       61

         00110011        8       62

         00110100        8       63

 

 

 

 

 

 

         Table 1b. Make Up White Codes

         Code            Lng     Run

         ---------------------------

         11011           5       64

         10010           5       128

         010111          6       192

         0110111         7       256

         00110110        8       320

         00110111        8       384

         01100100        8       448

         01100101        8       512

         01101000        8       576

         01100111        8       640

         011001100       9       704

         011001101       9       768

         011010010       9       832

         011010011       9       896

         011010100       9       960

         011010101       9       1024

         011010110       9       1088

         011010111       9       1152

         011011000       9       1216

         011011001       9       1280

         011011010       9       1344

         011011011       9       1408

         010011000       9       1472

         010011001       9       1536

         010011010       9       1600

         011000          6       1664

         010011011       9       1728

 

 

         Table 2a. Terminating Black Codes

         Code            Lng     Run

         ---------------------------

         0000110111      10      0

         010             3       1

         11              2       2

         10              2       3

         011             3       4

         0011            4       5

         0010            4       6

         00011           5       7

         000101          6       8

         000100          6       9

         0000100         7       10

         0000101         7       11

         0000111         7       12

         00000100        8       13

         00000111        8       14

         000011000       9       15

         0000010111      10      16

         0000011000      10      17

         0000001000      10      18

         00001100111     11      19

         00001101000     11      20

         00001101100     11      21

         00000110111     11      22

         00000101000     11      23

         00000010111     11      24

         00000011000     11      25

         000011001010    12      26

         000011001011    12      27

         000011001100    12      28

         000011001101    12      29

         000001101000    12      30

         000001101001    12      31

         000001101010    12      32

         000001101011    12      33

         000011010010    12      34

         000011010011    12      35

         000011010100    12      36

         000011010101    12      37

         000011010110    12      38

         000011010111    12      39

         000001101100    12      40

         000001101101    12      41

         000011011010    12      42

         000011011011    12      43

         000001010100    12      44

         000001010101    12      45

         000001010110    12      46

         000001010111    12      47

         000001100100    12      48

         000001100101    12      49

         000001010010    12      50

         000001010011    12      51

         000000100100    12      52

         000000110111    12      53

         000000111000    12      54

         000000100111    12      55

         000000101000    12      56

         000001011000    12      57

         000001011001    12      58

         000000101011    12      59

         000000101100    12      60

         000001011010    12      61

         000001100110    12      62

         000001100111    12      63

 

 

         Table 2b. Make Up Black Codes

         Code            Lng     Run

         ---------------------------

         0000001111      10      64

         000011001000    12      128

         000011001001    12      192

         000001011011    12      256

         000000110011    12      320

         000000110100    12      384

         000000110101    12      448

         0000001101100   13      512

         0000001101101   13      576

         0000001001010   13      640

         0000001001011   13      704

         0000001001100   13      768

         0000001001101   13      832

         0000001110010   13      896

         0000001110011   13      960

         0000001110100   13      1024

         0000001110101   13      1088

         0000001110110   13      1152

         0000001110111   13      1216

         0000001010010   13      1280

         0000001010011   13      1344

         0000001010100   13      1408

         0000001010101   13      1472

         0000001011010   13      1536

         0000001011011   13      1600

         0000001100100   13      1664

         0000001100101   13      1728

 

         Table 3. Extended Make Up Codes (Black and White)

         Code            Lng     Run

         ---------------------------

         00000001000     11      1792

         00000001100     11      1856

         00000001101     11      1920

         000000010010    12      1984

         000000010011    12      2048

         000000010100    12      2112

         000000010101    12      2176

         000000010110    12      2240

         000000010111    12      2304

         000000011100    12      2368

         000000011101    12      2432

         000000011110    12      2496

         000000011111    12      2560

凡是想采用这套压缩方法处理黑白图像数据者,都必须现在程序内存出这三份表格,这样程序才能够参照这些表格,找出正确的编码,编制成压缩数据。

在编制压缩数据的过程中,第一步是先存入一个白点的编码。如果图像数据的第一个Bit值是黑点,就存入点数为0的连续白点编码(00110101),然后才开始存储黑点的编码。这是本压缩方法的一项特殊规定:每行的第一个编码值,必须是连续白点的编码。接下来的问题,则是如何以上述表格内的编码取代图像数据?下面举例说明,假设有某一图像数据的前两行内容如下:

第一列15各黑点,625个白点,3360个黑点

编码:00110101   000011000   01101000   01010010   000000011111

0个白点   15个黑点    576个白点 49个白点   2560个黑点

011001101  000001101010   000000

768个黑点 32个黑点       6Bits

第二列18个白点,1486个黑点,2496个白点

编码:

0100111    0000001010101   00000111   000000011110   00110101

18个白点  1472个黑点     14个黑点   2496个白点     0个白点

从以上所列举的编码数据中,可以归纳出下列四项编码的原则:

(1)       每行压缩数据的第一个编码,必定是连续白点的编码。即使每行的第一点是黑点,还是得先用001101010个白点)作为压缩数据的第一个编码,接着才开始存储数据的第一个编码,接着才开始存储真正代表图形黑点的编码;

(2)       每行压缩数据的Bits总数,必须是8的倍数。如果Bits总数不是8的倍数,就须在每行压缩数据的末端,加上一些值为0Bits,是Bits总数程为8的倍数。例如,上述实例的第一行压缩数据的Bits总数为66,还缺少六个Bits,才能成为8的倍数,第一列压缩数据的末端,加入了六个值为0Bits,使Bits总数达到72,足够为8的倍数。至于第二行压缩数据的Bits总数为48,正好是8的倍数,所以就不需要加入一些多余的Bits

(3)       编码有三种类型。

(A)      点数不超过63,可参照Terminating codes表格,找到对应的编码。这种编码都是只用一个,便代替一串相同的点数。

(B)      点数若在641728之间,则根据Terminating codesMake-up codes表格,寻找编码。如果点数不是与Make-up codes表格数值相等,就需要用两个编码,方能取代一串相同的点数。

(C)      点数多达1792以上,就必须同时参考三份表格,才能找到所要的编码。这时,一串同值点数的编码,可能需要三个。如是点数比2560大很多,则需要的编码,就不止三个了。

(4)       Additional mak-up codes表格内的编码,可以同时代表连续白点或黑点,,所以这个表格的编码后面,就要带有另外两个表格的编码,才能让解压缩程序知道究竟所读取的编码是代表白点或黑点。例如,上述范例的第二行有一串连续变点的点数为2496,恰好与Additional mak-up codes表格内第12项点数值相同。所以即在0000000111102496个连续白点或黑点)编码之后,加上001101010个白点),表示000000011110是代表2496个连续白点。

 

以上摘自《探索图像文件的奥秘》 李振辉及RFC804

我的经验:

当一个连续白点或黑点只用到Make-up codes

Additional make-up codes这两个表格时,后面必须加上001101010个白点)或  00001101110个黑点)

例如:

    1792个白点

编码:00000001000   00110101   00000

1792个白点   0个白点    5Bits

    128个黑点

编码:00110101   000011001000   0000110111  00

0个白点   128个黑点     0个黑点    2Bits

    2624个白点

编码  000000011111   11011     00110101    0000000

2560个白点    64个白点  0个白点    7Bits

    2625个白点

编码  000000011111   11011     000111      0

2560个白点    64个白点  1个白点    1Bits

 

 

 

 

阅读全文
0 0

相关文章推荐

img
取 消
img