游程编码

维基百科,自由的百科全书
跳转至: 导航搜索

游程編碼RLErun-length encoding),又称行程長度編碼變動長度編碼法,是一種與資料性質無關的无损数据压缩技术。

變動長度編碼法為一種「使用固定長度的碼來取代連續重複出現的原始資料」的壓縮技術。

說明[编辑]

舉例來說,一組資料串"AAAABBBCCDEEEE",由4個A、3個B、2個C、1個D、4個E組成,經過變動長度編碼法可將資料壓縮為4A3B2C1D4E(由14個單位轉成10個單位)。

簡言之,其優點在於將重複性高的資料量壓縮成小單位;然而,其缺點在於─若該資料出現頻率不高,可能導致壓縮結果資料量比原始資料大,例如:原始資料"ABCDE",壓縮結果為"1A1B1C1D1E"(由5個單位轉成10個單位)。

整數(出現次數)表示法[编辑]

整數變動長度表示法[编辑]

整數固定長度表示法[编辑]

4位元表示法[编辑]

顧名思義,利用4個位元來儲存整數,以符號C表示整數值。其可表現的最大整數值為15,因此,若資料重複出現次數超過15,便以「分段」方式處理。
假設某資料出現N次,則可以將其分成(N/15)+1段落來處理,其中N/15的值為無條件捨去。例如連續出現33個A:

原始資料:
AAAAAAAAAAAAAAA AAAAAAAAAAAAAAA AAA
壓縮結果:

     15A          15A         3A

內部儲存碼:
1111 01000001 1111 01000001 0011 01000001

15   A    15    A     3     A

8位元表示法[编辑]

同4位元表示法的概念,其能表示最大整數為255。假設某資料出現N次,則可以將其分成(N/255)+1段落來處理,其中N/255的值為無條件捨去。

壓縮策略[编辑]

壓縮[编辑]

先使用一個暫存函數Q讀取第一個資料,接著將下一個資料與Q值比,若資料相同,則計數器加1;若資料不同,則將計數器存的數值以及Q值輸出,再初始計數器為,Q值改為下一個資料。以此類推,完成資料壓縮。
以下為簡易的演算法:
input: AAABCCBCCCCAA

for i=1:size(input)
 if (Q = input(i))
    計數器+1
 else
   output的前項=計數器的值, output的下一項=Q值,
   Q換成input(i), 計數器值換成0
 end
end


解壓縮[编辑]

其方法為逐一讀取整數(以C表示)與資料(以B表示),將C與B的二進位碼分別轉成十進位整數以及原始資料符號,最後輸出共C次資料B,即完成一次資料解壓縮;接著重複上述步驟,完成所有資料輸出。

應用[编辑]

  • 大量白色或黑色的區域單色影像圖
  • 電腦生成的同色區塊的彩色圖像(如建築繪圖紙)
  • TIFF files
  • PDF files

參考資料[编辑]

  1. 資料壓縮原理與實務。張真誠,蔡文輝著。松崗電腦圖書資料股份有限公司。1994/4/12。
  2. Bassiouni, M.A., "Data Compression in Scientific and Statistical Databases" , IEEE Trans. Software Eng., Vol. SE-11, No. 10, Oct.1985, pp. 1047-1058.
  3. Reghbati, H.K. "An Overview of Data Compression Techniques", Computer, Vol. 14, No. 4, May 1981, pp. 71-76

參見[编辑]