編碼 | 解碼 | 壓縮

> exp | golomb | h264 <

// Exponential-Golomb —— 影片壓縮中的標準可變長度編碼

0 字元
0 字元

>> 功能

[H.264/H.265]

影片標準

用於 H.264/AVC 與 H.265/HEVC 編解碼器。

[ADAPTIVE]

多階支援

可依不同分佈選擇不同的 k 值。

[SIGNED]

支援有號整數

內建有號整數對應映射。

>> 技術細節

Exp-Golomb 編碼原理

階數為 k 的 Exp-Golomb 編碼對非負整數 n 的步驟如下:1)先將 n 加 1 得到 codeNum;2)以 2^k 相除取得商 q 與餘數 r;3)寫出 q 個 0,再寫 1,最後以 k 位元二進位寫出 r。當 k=0 時等同 Elias Gamma 編碼。有號整數的映射為:n>0 → 2n-1,n≤0 → -2n。

Exp-Golomb 範例

階數 k=0(標準):
0 → 1
1 → 010
2 → 011
3 → 00100

階數 k=1:
0 → 10
1 → 11
2 → 010
3 → 011

有號模式(k=0):
0 → 1(對應到 0)
1 → 010(對應到 1)
-1 → 011(對應到 2)
2 → 00100(對應到 3)

為什麼使用 Exp-Golomb

  • H.264/H.265 語法元素編碼
  • 運動向量(motion vector)編碼
  • 轉換係數與等級表示
  • 硬體實作簡單、無需查表
  • 可良好對應常見影片資料分佈

>> 常見問題

什麼是 Exp-Golomb 編碼?

Exponential-Golomb 編碼是一種通用的可變長度編碼,在 H.264、H.265 等影片壓縮標準中被廣泛使用。它在 Elias Gamma 編碼之上加入參數 k,使其能適應不同的資料分佈。

階數 k 應該怎麼選?

k=0(標準 Exp-Golomb)適合大致呈指數衰減分佈的小整數。對於較大的整數或分佈較為平均的資料,較大的 k 通常效果更佳。影片編解碼器常對語法元素使用 k=0,對殘差資料使用自適應的 k。

為何影片編碼要使用它?

Exp-Golomb 非常適合影片:1)硬體實作容易;2)不需要查詢表;3)與影片訊號的統計分佈高度相容;4)對運動向量與轉換係數有不錯的壓縮率。

Exp-Golomb 與其他編碼怎麼比較?

與 Huffman 相比:實作更簡單、無需表,但壓縮率略低;與算數編碼相比:邏輯更簡潔、計算較輕量,但壓縮性略遜。Exp-Golomb 在「實作容易」與「壓縮效率」之間取得良好平衡,非常適合即時影片編碼。