游程编码
運行長度編碼(英語:,缩写RLE),又称行程長度編碼或變動長度編碼法,是一種與資料性質無關的无损数据压缩技术,基于「使用變動長度的碼來取代連續重複出現的原始資料」来实现壓縮。
說明
舉例來說,一組資料串"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,即完成一次資料解壓縮;接著重複上述步驟,完成所有資料輸出。
參考資料
- 資料壓縮原理與實務。張真誠,蔡文輝著。松崗電腦圖書資料股份有限公司。1994/4/12。
- Bassiouni, M.A., "Data Compression in Scientific and Statistical Databases" , IEEE Trans. Software Eng., Vol. SE-11, No. 10, Oct.1985, pp. 1047-1058.
- Reghbati, H.K. "An Overview of Data Compression Techniques", Computer, Vol. 14, No. 4, May 1981, pp. 71-76