Golomb codes(ゴロム符号)

理屈

小さい整数ほど頻繁に現れるときの簡略符号化。 予測誤差の符号化に便利。

実装の例

LOCO-I/JPEG-LS

1112131415161718
2122232425262728
3132333435363738
    int n = 1; // 個数のカウンタ
    int a = 0; // 予測誤差の絶対値の和

    while (予測誤差 e を読む) {
        for (k = 0; (n << k) < a; k++);
        m = (e >= 0) ? 2*e : -2*e-1;
        (m >> k) ビットの 0 を出力;
        1 ビットの 1 を出力;
        m の最後の k ビットを出力;
        a += abs(e);
        if (++n >= 64) {
            a /= 2;  n /= 2;
        }
    }

例(k=0)

誤差出力
01
-101
1001
-20001
200001
-3000001
30000001

例(k=1)

誤差出力
010
-111
1010
-2011
20010
-30011
300010

余談

Solomon W. Golomb はペントミノの考案者でもある。

Optimal Golomb Rulers(最適ゴロム定規/最短ゴロム定規)

                      
1352

奥村晴彦

Last modified: 2004-12-17 22:58:21