ゴロム符号化

ゴロム符号化は、 1960年代にソロモン・W・ゴロムによって発明されたデータ圧縮符号群を用いたロスレスデータ圧縮方式です。幾何分布に従うアルファベットは、ゴロム符号を最適なプレフィックス符号として用いるため[ 1 ]、入力ストリームにおいて小さな値の発生確率が大きな値の発生確率よりも大幅に高い状況にゴロム符号化は非常に適しています。

ライスコーディング

ライス符号(ロバート・F・ライスによって発明)は、ゴロム符号群のサブセットを用いて、より単純な(ただし最適ではない可能性のある)プレフィックス符号を生成することを指します。ライスはこの符号群を適応型符号化方式に使用しました。「ライス符号」とは、適応型符号化方式を指す場合もあれば、ゴロム符号のサブセットを使用する場合もあります。ゴロム符号は任意の正の整数値に調整可能なパラメータを持ちますが、ライス符号では調整可能なパラメータは2のべき乗です。このため、2による乗算と除算は2進演算でより効率的に実装できるため、ライス符号はコンピュータでの使用に便利です。

ライスがこのより単純なサブセットを提案した理由は、幾何分布は時間とともに変化することが多く、正確には分かっていないか、またはその両方であるため、一見最適と思われるコードを選択してもあまり有利にならない可能性があるからです。

ライス符号化は、多くのロスレス画像圧縮およびオーディオデータ圧縮方式におけるエントロピー符号化段階として使用されます。

概要

パラメータp (0) = 0.2 の幾何分布を持つ情報源 x に対し、 M = 3のゴロム符号を用いたゴロム符号化の例。2ビット符号 00 は20%の割合で使用され、3ビット符号 010、011、100 は38%以上の割合で使用されます。4ビット以上の符号が必要となるケースは少数です。この情報源の場合、エントロピーは3.610ビットです。この情報源を用いたこの符号の場合、レートは3.639ビットです。したがって、冗長性は0.030ビット、効率は1ビットあたり0.992ビットです。

コードの構築

ゴロム符号化は、調整可能なパラメータMを用いて入力値x を2つの部分に分割します。qMによる除算の結果、rは剰余です。商は単項符号化で送信され、続いて剰余は切り捨て2進符号化で送信されます。 の場合、ゴロム符号化は単項符号化と等価です。 M1{\displaystyle M=1}

ゴロム・ライス符号は、ビンの位置(q)とビン内のオフセットr)によって数値を表す符号と考えることができます。図の例は、ゴロム・ライスパラメータM = 3を用いて整数x を符号化した場合の位置qとオフセットrを示しています。ソース確率はp (0) = 0.2の幾何分布に従います。

正式には、2 つの部分は次の式で表されます。ここで、xはエンコードされる非負の整数です。

q×M{\displaystyle q=\left\lfloor {\frac {x}{M}}\right\rfloor }

そして

r×qM{\displaystyle r=x-qM.}

この図は、 1 − p (0) ≥ 0.45に対してMが最適に選択された場合のゴロム符号の冗長性(ビット単位)を示しています。

qr はどちらも可変ビット数でエンコードされます。q単項コードでエンコードされ、rはライスコードの場合はbビットでエンコードされます。ゴロムコードの場合はbビットとb +1ビットのいずれかでエンコードされます(つまり、 Mは 2 の累乗ではありません)。 の場合、 r をエンコードするためにbビットを使用し、それ以外の場合はb +1 ビットを使用してrをエンコードします。明らかに、Mが 2 の累乗であれば、 rのすべての値をbビットでエンコードできます。 bログ2M{\displaystyle b=\lfloor \log _{2}(M)\rfloor }r<2b+1M{\displaystyle r<2^{b+1}-M}bログ2M{\displaystyle b=\log_{2}(M)}

ゴロムが扱った整数xは、0から始まる幾何分布に従うベルヌーイ過程のランレングスである。パラメータMの最適な選択は、対応するベルヌーイ過程の関数であり、これは与えられたベルヌーイ試行における成功確率によってパラメータ化される。M分布の中央値か、中央値±1のいずれかである。これは以下の不等式によって決定され、次 のように解かれる 。pP×0{\displaystyle p=P(x=0)}1pM+1pM+11<1pM1+1pM{\displaystyle (1-p)^{M}+(1-p)^{M+1}\leq 1<(1-p)^{M-1}+(1-p)^{M},}Mログ2pログ1p{\displaystyle M=\left\lceil -{\frac {\log(2-p)}{\log(1-p)}}\right\rceil .}

p (0) = 0.2の例では、 Mログ1.8ログ0.82.6343.{\displaystyle M=\left\lceil -{\frac {\log(1.8)}{\log(0.8)}}\right\rceil =\left\lceil 2.634\right\rceil =3.}

この分布のゴロム コードは、ソース値の無限セットに対してハフマン コードを計算できる場合、同じ確率のハフマン コードと同等になります。

符号付き整数で使用する

ゴロムの方式は、非負数のシーケンスをエンコードするために設計されました。しかし、オーバーラップとインターリーブ方式を使用することで、負の数を含むシーケンスを受け入れるように簡単に拡張できます。オーバーラップとインターリーブ方式では、すべての値が一意かつ可逆的な方法で何らかの正の数に再割り当てされます。シーケンスは次のように始まります: 0, −1, 1, −2, 2, −3, 3, −4, 4, ... n番目負の値 (つまり) はn番目の奇数 ( )マッピングされ、m番目の正の値はm番目の偶数 ( )マッピングされます。これは数学的に次のように表現できます: 正の値xは ( ) にマッピングされ、負の値yは ( ) にマッピングされます。このようなコードは、最適ではなくても、簡潔さのために使用できます。両側幾何分布の真に最適なコードには、分布パラメータに応じて、このコードを含むゴロム コードの複数のバリエーションが含まれます。[ 2 ]n{\displaystyle -n}2n1{\displaystyle 2n-1}2メートル{\displaystyle 2m}×2|×|2× ×0{\displaystyle x'=2|x|=2x,\ x\geq 0}y2|y|12y1 y<0{\displaystyle y'=2|y|-1=-2y-1,\ y<0}

シンプルなアルゴリズム

以下はライス・ゴロム符号化です。剰余符号には単純な切り捨てバイナリ符号化(「ライス符号化」とも呼ばれます)が用いられます(剰余符号の統計分布が平坦でない場合、特に除算後のすべての剰余が用いられていない場合、算術符号化やハフマン符号化などの他の可変長バイナリ符号化も剰余符号として用いることができます)。このアルゴリズムでは、Mパラメータが2の累乗であれば、より単純なライス符号化と同等になります。

  1. パラメータMを整数値に固定します。
  2. エンコードする数値 Nについて、
    1. 商 = q = floor( N / M )
    2. 剰余 = r = N を法としたM
  3. コードワードを生成する
    1. コード形式:<商コード><剰余コード>、ここで
    2. 商コード(単項コーディング
      1. 長さqの 1 ビットの文字列 (または 0 ビットの文字列)を書き込む
      2. 0ビット(または1ビット)を書き込む
    3. 剰余コード(切り捨てバイナリエンコード
      1. させてbログ2M{\displaystyle b=\lfloor \log _{2}(M)\rfloor }
        1. bビットを使用してr をバイナリ表現でコード化する場合。r<2b+1M{\displaystyle r<2^{b+1}-M}
        2. b + 1 ビットを使用して数値をバイナリ表現でコード化します。r2b+1M{\displaystyle r\geq 2^{b+1}-M}r+2b+1M{\displaystyle r+2^{b+1}-M}

デコード:

  1. qの単項表現をデコードする(コードの先頭の1の数を数える)
  2. 0区切り文字をスキップする
  3. させてbログ2M{\displaystyle b=\lfloor \log _{2}(M)\rfloor }
    1. 次のbビットを2進数r'として解釈する。成立する場合、剰余はr<2b+1M{\displaystyle r'<2^{b+1}-M}rr{\displaystyle r=r'}
    2. それ以外の場合は、b + 1ビットを2進数r'として解釈し、剰余は次のように表される。rr2b+1+M{\displaystyle r=r'-2^{b+1}+M}
  4. コンピューティングqM+r{\displaystyle N=q*M+r}

M = 10と設定します。したがって、カットオフは です。 bログ2103{\displaystyle b=\lfloor \log _{2}(10)\rfloor =3}2b+1M16106{\displaystyle 2^{b+1}-M=16-10=6}

商部分のエンコード
q出力ビット
00
110
2110
31110
411110
5111110
61111110
{\displaystyle \vdots}{\displaystyle \vdots}
1111110{\displaystyle \underbrace {111\cdots 111} _{N}0}
剰余部分のエンコード
rオフセットバイナリ出力ビット
000000000
110001001
220010010
330011011
440100100
550101101
61211001100
71311011101
81411101110
91511111111

たとえば、パラメータM = 10を使用する Rice–Golomb エンコードでは、10 進数 42 は最初にq = 4 とr = 2 に分割され、qcode( q ),rcode( r ) = qcode(4),rcode(2) = 11110,010としてエンコードされます(出力ストリームで区切りのコンマをエンコードする必要はありません。qコードの末尾の 0 でq が終了してrが始まることがわかるため、qcode と rcode は両方とも自己区切型です)。

ランレングス符号化に使用する

このセクションでは、 p1 – p の使用法が、前のセクションと比べて逆になっていることに注意してください。

2 つのシンボルのアルファベット、または確率がそれぞれpと ( 1 − p )である 2 つのイベントのセットPQが与えられ、ここでp ≥ 1/2 の場合、ゴロム符号化を使用して、単一のQ ′で区切られた 0 個以上のP ′の連続を符号化できます。このアプリケーションでは、パラメータMの最適な設定は に最も近い整数です。p = 1/2 のとき、M = 1 となり、ゴロム符号は単項 ( n ≥ 0 P ′ の後にQが続く場合は、 n個の 1 の後に 0 が続くものとして符号化されます) に対応します。より単純なコードが必要な場合は、ゴロム–ライス パラメータb (つまり、ゴロム パラメータ) を に最も近い整数に割り当てることができます。常に最適なパラメータとは限りませんが、通常は最適なライス パラメータであり、その圧縮パフォーマンスは最適なゴロム符号にかなり近くなります。 (ライス自身は、同じデータに対して様々なコードを使用してどれが最適かを判断することを提案した。その後、JPLの研究者がコードパラメータを最適化または推定する様々な方法を提案した。[ 3 ]1ログ2p{\displaystyle -{\frac {1}{\log _{2}p}}}M2b{\displaystyle M=2^{b}}ログ2ログ2p{\displaystyle -\log _{2}(-\log _{2}p)}

確率Pがpであるシーケンスをランレングス符号化するために、bビットの2進部分を持つライス符号を用いることを考えてみよう。あるビットがkビットのラン(Pと1つのQ)の一部となる確率を とし、そのランの圧縮率を とすると、期待される圧縮率は P[ビットは一部です -走る]{\displaystyle \mathbb {P} [{\text{ビットはk{\text{-run}}の一部です}}]}1{\displaystyle k-1}圧縮比 -走る{\displaystyle ({\text{k{\text{-run}} の圧縮率)}E[圧縮比]1圧縮比 -走るP[ビットは一部です -走る]1b+1+2b1p11p21p2j0b+1+jj2b+1j+12bp11p2j0b+1+jp2bjp2bj+11pb+メートル0p2bメートル1pb+1p2b1{\displaystyle {\begin{aligned}\mathbb {E} [{\text{compression ratio}}]&=\sum _{k=1}^{\infty }({\text{compression ratio of }}k{\text{-run}})\cdot \mathbb {P} [{\text{bit is part of }}k{\text{-run}}]\\&=\sum _{k=1}^{\infty }{\frac {b+1+\lfloor 2^{-b}(k-1)\rfloor }{k}}\cdot kp^{k-1}(1-p)^{2}\\&=(1-p)^{2}\sum _{j=0}^{\infty }(b+1+j)\cdot \sum _{i=j2^{b}+1}^{(j+1)2^{b}}p^{i-1}\\&=(1-p)^{2}\sum _{j=0}^{\infty }(b+1+j)\cdot \left(p^{2^{b}j}-p^{2^{b}(j+1)}\right)\\&=(1-p)\cdot \left(b+\sum _{m=0}^{\infty }p^{2^{b}m}\right)\\&=(1-p)\cdot \left(b+{\left(1-p^{2^{b}}\right)}^{-1}\right)\\\end{aligned}}}

圧縮率は、圧縮率を表す で表されることが多い。 の場合、ランレングス符号化方式では、エントロピーに近い圧縮率が得られる。例えば、 のライスコードを用いると、1E[compression ratio]{\displaystyle 1-\mathbb {E} [{\text{compression ratio}}]}p1{\displaystyle p\approx 1}b=6{\displaystyle b=6}p=0.99{\displaystyle p=0.99}91.89%の圧縮率である一方、エントロピー限界は91.92% .

適応型ランレングスゴロム・ライス符号化

整数の確率分布が不明な場合、ゴロム・ライス符号化器の最適なパラメータを決定することはできません。そのため、多くのアプリケーションでは2パスアプローチが用いられます。まず、データブロックをスキャンして、データの確率密度関数(PDF)を推定します。次に、推定されたPDFからゴロム・ライスパラメータを決定します。このアプローチのより単純なバリエーションとして、PDFがパラメータ化された族に属していると仮定し、データからPDFパラメータを推定し、最適なゴロム・ライスパラメータを計算する方法があります。これは、以下で説明するほとんどのアプリケーションで用いられているアプローチです。

PDFが不明、または変化する整数データを効率的に符号化する別の方法として、後方適応型エンコーダを用いる方法があります。RLGRエンコーダ[1]は、最後に符号化されたシンボルに応じてゴロム・ライスパラメータを上下に調整する非常に単純なアルゴリズムを用いてこれを実現します。デコーダも同じ規則に従って符号化パラメータの変化を追跡できるため、付加情報は不要で、符号化データのみを送信すれば済みます。マルチメディアコーデックにおける予測誤差や変換係数など、データに見られる幅広い統計量をカバーする一般化ガウスPDFを仮定すると、RLGR符号化アルゴリズムはこのようなアプリケーションにおいて非常に優れた性能を発揮します。

アプリケーション

ゴロム符号化ライスアルゴリズム実験圧縮率

数多くの信号コーデックは、予測剰余にライス符号を用いています。予測アルゴリズムでは、このような剰余は両側幾何分布に収束する傾向があり、小さな剰余は大きな剰余よりも頻繁に出現します。ライス符号は、ハフマンテーブルを転送するオーバーヘッドなしに、このような分布のハフマン符号を近似します。幾何分布に一致しない信号の一つに正弦波があります。これは、差分剰余が生成する正弦波信号が幾何分布を形成しないためです(剰余の最高値と最低値は同様に高い頻度で出現し、正と負の剰余の中央値のみが低頻度で出現します)。

Shorten[ 4 ] 、 FLAC[ 5 ] 、 Apple LosslessMPEG-4 ALSなどのロスレスオーディオコーデックは、線形予測ステップの後にライス符号(Apple Losslessでは「適応FIRフィルタ」と呼ばれる)を使用しています。ライス符号化は、FELICSロスレス画像コーデックでも使用されています。

ゴロム・ライス符号化器は、ライスアルゴリズムに基づくロスレス画像コーデックのエントロピー符号化段階で使用されます。このような実験の1つから、図に示す圧縮率のグラフが得られます。

JPEG -LS方式では、ライス・ゴロム法を使用して予測残差をエンコードします。

前述のゴロム・ライス符号化の適応型であるRLGRエンコーダ[2]は、 Microsoftリモートデスクトッププロトコルの RemoteFXコンポーネントの仮想マシンの画面コンテンツをエンコードするために使用されます。

参照

参考文献

  1. ^ Gallager, RG; van Voorhis, DC (1975). 「幾何学的に分布した整数アルファベットの最適ソースコード」. IEEE Transactions on Information Theory . 21 (2): 228– 230. doi : 10.1109/tit.1975.1055357 .
  2. ^ Merhav, N.; Seroussi, G.; Weinberger, MJ (2000). 「両側幾何分布と未知のパラメータを持つ情報源の符号化」. IEEE Transactions on Information Theory . 46 (1): 229– 236. Bibcode : 2000ITIT...46..229M . doi : 10.1109/18.817520 .
  3. ^ Kiely, A. (2004).ライスコーディングにおけるゴロムパラメータの選択(技術レポート).ジェット推進研究所. 42-159.
  4. ^ “man shorten” . 2014年1月30日時点のオリジナルよりアーカイブ2008年12月7日閲覧。
  5. ^ 「FLAC - フォーマットの概要」 . xiph.org .

さらに読む