// Exponential-Golomb —— 影片壓縮中的標準可變長度編碼
用於 H.264/AVC 與 H.265/HEVC 編解碼器。
可依不同分佈選擇不同的 k 值。
內建有號整數對應映射。
階數為 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。
階數 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)
Exponential-Golomb 編碼是一種通用的可變長度編碼,在 H.264、H.265 等影片壓縮標準中被廣泛使用。它在 Elias Gamma 編碼之上加入參數 k,使其能適應不同的資料分佈。
k=0(標準 Exp-Golomb)適合大致呈指數衰減分佈的小整數。對於較大的整數或分佈較為平均的資料,較大的 k 通常效果更佳。影片編解碼器常對語法元素使用 k=0,對殘差資料使用自適應的 k。
Exp-Golomb 非常適合影片:1)硬體實作容易;2)不需要查詢表;3)與影片訊號的統計分佈高度相容;4)對運動向量與轉換係數有不錯的壓縮率。
與 Huffman 相比:實作更簡單、無需表,但壓縮率略低;與算數編碼相比:邏輯更簡潔、計算較輕量,但壓縮性略遜。Exp-Golomb 在「實作容易」與「壓縮效率」之間取得良好平衡,非常適合即時影片編碼。