> exp | golomb | h264 <
// Exponential-Golomb ― 動画圧縮で使われる標準的な可変長コード
動画圧縮標準
H.264/AVC と H.265/HEVC コーデックで使用されます。
複数の次数
異なる分布に合わせて k の値を選択できます。
符号付き整数のサポート
符号付き整数のための組み込みマッピング。
>> 技術情報
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 の構文要素
- ▸モーションベクトルの符号化
- ▸係数レベルの表現
- ▸ハードウェアで実装しやすい
- ▸データ分布に適応しやすい
>> よくある質問
Exp-Golomb 符号化とは何ですか?
Exponential-Golomb 符号化は、H.264 や H.265 などの動画圧縮標準で広く利用されているユニバーサル可変長コードです。パラメータ k を導入することで Elias Gamma 符号を一般化し、さまざまなデータ分布に適応できるようにします。
次数 k はどう選べばよいですか?
k=0 (標準的な Exp-Golomb) は、指数分布に近い小さな整数に適しています。より大きな整数やより均一な分布には、より大きな k の方が向いています。動画コーデックでは、構文要素には k=0 を、残差には適応的な k を用いることが多いです。
なぜ動画で使われるのですか?
Exp-Golomb が動画に適している理由は次の通りです。1) ハードウェア実装が簡単、2) ルックアップテーブルが不要、3) 動画データの統計的分布に良く合う、4) モーションベクトルや変換係数を効率よく圧縮できます。
他の符号との比較は?
Huffman と比べると、Exp-Golomb はテーブルが不要でより単純ですが、最適性はやや低くなります。算術符号化と比べるとはるかに単純ですが、圧縮率は低くなります。Exp-Golomb は単純さと効率のバランスが良く、リアルタイム動画エンコードに最適です。