游程编码運行長度編碼(英語:run-length encoding,缩写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,即完成一次資料解壓縮;接著重複上述步驟,完成所有資料輸出。 應用參考資料
參見 |