編碼 | 解碼 | 最佳化

> 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)以及無失真音訊格式。特別適合用於游程長度編碼、預測殘差編碼,以及任何近似幾何或指數分佈的資料。