> golomb | 最佳 | 壓縮 <
// Golomb 編碼 —— 以彈性除數達成整數的最佳壓縮
0 個字元
0 個字元
>> 功能特色
[最佳]
可調整除數
可自由選擇 M 值,以獲得最高壓縮效率。
[高效]
截斷二進位
在編碼餘數時使用最少的位元數。
[通用]
通用用途
適用於任何非負整數分佈的情境。
>> 技術說明
Golomb 編碼的運作原理
Golomb 編碼將每個整數 n 以除數 M 相除,取得商 q 與餘數 r。商以一元碼編碼,餘數以截斷二進位編碼,對 M 個可能取值使用最少的位元數,為參數 p = 1/M 的幾何分佈構造出最佳的前綴碼。
Golomb 編碼範例(M=5)
M=5, b=⌈log₂(5)⌉=3, c=2³-5=3 0 → q=0, r=0 → 0|00 → 000(r<3 使用 2 位元) 1 → q=0, r=1 → 0|01 → 001(r<3 使用 2 位元) 2 → q=0, r=2 → 0|10 → 010(r<3 使用 2 位元) 3 → q=0, r=3 → 0|110 → 0110(r≥3 使用 3 位元) 4 → q=0, r=4 → 0|111 → 0111(r≥3 使用 3 位元) 5 → q=1, r=0 → 10|00 → 1000 6 → q=1, r=1 → 10|01 → 1001 7 → q=1, r=2 → 10|10 → 1010 截斷二進位:r<3 使用 2 位元,r≥3 使用 3 位元
為什麼要使用 Golomb 編碼?
- 對幾何分佈具有理論上的最優性
- 支援彈性的 M 參數
- 最小化位元使用量
- 實作簡單、容易整合
- 在實務系統中廣泛驗證
>> 常見問題
什麼是 Golomb 編碼?
Golomb 編碼是一種為幾何分佈設計的、最佳的前綴無歧義可變長度編碼。它利用可調整的參數 M 將整數拆解為商與餘數,並以一元碼與截斷二進位表示,對滿足 P(n) = (1-p)^n × p 的資料提供高效壓縮。
M 參數應該怎麼選?
最佳的 M 取決於資料的幾何參數 p。對平均值為 μ 的資料,可近似取 M ≈ μ + 1。對於參數為 p 的指數衰減機率,最佳 M = ⌈-1/log₂(1-p)⌉。你可以使用「分析」功能,根據實際資料自動尋找合適的 M。
什麼是截斷二進位編碼?
截斷二進位是一種在編碼 M 個可能值時,最小化平均位元數的方法。如果 M 是 2 的冪次,就使用標準二進位;否則部分值使用 ⌊log₂M⌋ 位元,部分值使用 ⌈log₂M⌉ 位元,同時保證編碼可以唯一解碼且平均長度最短。
Golomb 編碼一般用在什麼地方?
Golomb 編碼廣泛用於 JPEG-LS 影像壓縮、H.264 視訊編碼(其中的 Exp-Golomb)以及無失真音訊格式。特別適合用於游程長度編碼、預測殘差編碼,以及任何近似幾何或指數分佈的資料。