(57)【要約】【課題】新規な後方適応技法を用いた整数データの無損失圧縮の方法およびシステムを提供する。【解決手段】適応ランレングス・ゴロム／ライス（ＲＬＧＲ）符号器・復号器（コーデック）およびその方法は、ゴロム／ライス（Ｇ／Ｒ）符号器のみを使用するモードと、ランレングス符号器と組み合わせてＧ／Ｒ符号器を使用するモードとを切り替える。後方適応技法は、各符号化シンボルの後で符号化パラメータを調整する新規な適応規則を含む。符号化モードパラメータおよびＧ／Ｒパラメータが適応を受ける。符号化モードパラメータはランレングス符号化を使用するかどうかを制御する。Ｇ／Ｒパラメータは両方のモードにおいて、各入力値を符号化するため（Ｇ／Ｒ専用モード）、またはゼロの不完全ランの後の数値を符号化するため（ＲＬＧＲモード）に用いられる。本コーデックおよび方法は、ちょうど符号器規則の逆に基づいて実現可能な復号器も含む。【選択図】図４
2006129467.tif 000002
【特許請求の範囲】
【請求項１】
ディジタルデータを符号化する方法（２００）において、
前記ディジタルデータを符号化ビットストリームへと符号化するために第１の符号化モードと第２の符号化モードの間で選択を行うステップであって、前記第１のモードはランレングス符号器以外の第１のタイプのエントロピー符号器を使用し、前記第２のモードはランレングス符号器と組み合わされた前記第１のタイプのエントロピー符号器を使用する、選択を行うステップ（５１０）と、
後方適応技法を用いて前記符号化ビットストリームに基づいて前記第１のモードおよび前記第２のモードの符号器を適応させるステップ（５２０）と
を含むことを特徴とするディジタルデータを符号化する方法。
【請求項２】
前記第１のタイプのエントロピー符号器が、前記第２のモードにおいて前記ランレングス符号器と組み合わされてランレングス・ゴロム／ライス（ＲＬＧＲ）符号器を形成する（６１０）ゴロム／ライス符号器であることを特徴とする請求項１に記載の方法。
【請求項３】
前記第１のモードと第２のモードの間で選択を行うために符号化モードパラメータを使用するステップ（５２０）をさらに含むことを特徴とする請求項２に記載の方法。
【請求項４】
ゴロム／ライスパラメータを更新するステップ（６５０）をさらに含み、該更新するステップが、
前記ゴロム／ライスパラメータに関する適応値を定義するステップ（９１０）と、
前記適応値がゼロに等しい場合、前記ゴロム／ライスパラメータを第３の整数定数だけ減少させるステップ（９２０）と、
前記適応値が１に等しい場合、前記ゴロム／ライスパラメータを変えずに据え置くステップ（９３０）と、
前記適応値が１よりも大きい場合、前記ゴロム／ライスパラメータを前記適応値だけ増加させるステップ（９３５）と
を含むことを特徴とする請求項２に記載の方法。
【請求項５】
生成される各符号語の後で前記第１のモードおよび前記第２のモードの符号器を適応させるステップ（６５０）をさらに含むことを特徴とする請求項２に記載の方法。
【請求項６】
コンピュータ可読媒体（３１０，３３１，３３２，３４１，３５２，３５６）において、コンピュータシステム（３００）上で実行される場合に該コンピュータシステム（３００）に対して請求項１に記載の方法を実行させるコンピュータ実行可能命令を備えたことを特徴とするコンピュータ可読媒体。
【請求項７】
整数値を有するディジタル整数データを符号化する方法において、
前記ディジタル整数データの入力ストリングｘを受け取るステップ（１１１０）と、
（ａ）適応ゴロム／ライス（Ｇ／Ｒ）符号器のみを使用する第１のモードと、（ｂ）適応ランレングス符号器および前記適応Ｇ／Ｒ符号器を使用する第２のモードと、のいずれかを使用することを選択するために符号化モードパラメータｓを使用するステップ（１１１５，１１２０，１１２５，１１３０，１１３５）と、
Ｌをスケーリングパラメータとして、スケーリングされた符号化モードパラメータをＳ＝ｓ×Ｌで定義するステップ（１２５５）と、
前記第１および第２のモードの適応Ｇ／Ｒ符号器において、スケーリングされたＧ／ＲパラメータＫを使用するステップ（１１１５）と、
後方適応技法を用いて、前記スケーリングされた符号化モードパラメータＳ（１３９５）および前記スケーリングされたＧ／ＲパラメータＫ（１４６５）を更新するステップと
を含むことを特徴とするディジタル整数データを符号化する方法。
【請求項８】
ｓ＝０の場合、前記第１のモードで前記入力ストリングを符号化するステップ（１１３０）と、
｜ｘ｜＝０の場合、Ｓを第１の整数定数Ａ１だけ増加させるステップ（１２４５）と、
｜ｘ｜＞０の場合、Ｓを第２の整数定数Ｂ１だけ減少させるステップ（１２５０）と
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
ｓ＞０の場合、前記第２のモードで前記入力ストリングを符号化するステップ（１１３５）と、
ｒ＝２sであるようなｒ個のゼロからなるランをｘが含む場合、Ｓを第３の整数定数Ａ２だけ増加させるステップ（１３８５）と、
ｒ＜２sであるようなｒ個のゼロからなるランをｘが含む場合、Ｓを第４の整数定数Ｂ２だけ減少させるステップ（１３９０）と
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１０】
適応値ｐを定義するステップ（１４２５）と、
ｐ＝０の場合、Ｋを第５の整数定数Ｂ３だけ減少させるステップ（１４５５）と、
ｐ＝１の場合、Ｋを変えずに据え置くステップ（１４４５）と、
ｐ＞１の場合、Ｋをｐだけ増加させるステップ（１４６０）と
をさらに含むことを特徴とする請求項９に記載の方法。
【請求項１１】
符号化ビットストリーム（２３０）を復号化する方法において、
前記符号化ビットストリームから符号語を受け取るステップ（２３０）と、
前記符号語を復号化するために第１の復号化モードと第２の復号化モードの間で選択を行うステップであって、前記第１のモードはランレングス復号器以外の第１のタイプのエントロピー復号器を使用し、前記第２のモードはランレングス復号器と組み合わされた前記第１のタイプのエントロピー復号器を使用する、選択を行うステップ（２４０）と、
後方適応技法を用いて前記第１のモードおよび前記第２のモードの復号器を適応させるステップ（２４０）と、
前記復号化された符号語からディジタルデータの値を再構成するステップ（２６０）と
を含むことを特徴とする符号化ビットストリームを復号化する方法。
【請求項１２】
後方適応技法を有する適応ランレングス・ゴロム／ライス（ＲＬＧＲ）符号器（２００）を用いてディジタル整数データを符号化することから得られる符号化ビットストリーム（２３０）を復号化するコンピュータ実施処理方法において、
前記符号化ビットストリームから前記符号化されたディジタル整数データを表現する符号語を受け取るステップ（２３０）と、
ゴロム／ライス（Ｇ／Ｒ）復号化のみを実行する第１の復号器モードと、ランレングス復号化およびＧ／Ｒ復号化を実行する第２の復号器モードとの間の切替を行うステップ（２４０）と、
前記第１および第２の復号器モードのいずれが使用されるかを制御するために符号化モードパラメータｓを使用するステップ（７１５）と、
前記後方適応技法を用いて、各符号語が復号化された後に前記符号化モードパラメータｓを更新するステップ（８５５）と
を含むことを特徴とするコンピュータ実施処理方法。
【請求項１３】
前記第１および第２の復号化モードの両方のＧ／Ｒ復号化を制御するためにゴロム／ライス（Ｇ／Ｒ）パラメータｋを定義するステップ（９０５）と、
前記後方適応技法を用いて、各符号語が復号化された後に前記Ｇ／Ｒパラメータｋを更新するステップ（９４０）と
をさらに含むことを特徴とする請求項１２に記載のコンピュータ実施処理方法。
【請求項１４】
ｓ＝０である場合に前記第１の復号化モードに切り替えるステップ（７２０）をさらに含むことを特徴とする請求項１３に記載のコンピュータ実施処理方法。
【請求項１５】
ｓ＞０である場合に前記第２の復号化モードに切り替えるステップ（７２５，７３０，７３５）をさらに含むことを特徴とする請求項１３に記載のコンピュータ実施処理方法。
【請求項１６】
スケーリングパラメータＬを定義するステップ（１２５５）と、
スケーリングされた符号化モードパラメータをＳ＝ｓ×Ｌで定義するステップ（１２５５）と、
スケーリングされたＧ／ＲパラメータをＫ＝ｋ×Ｌで定義するステップ（１４６５）と、
前記後方適応技法および適応規則を用いて、各符号語が復号化された後にｓおよびｋの代わりに前記スケーリングされた符号化モードパラメータＳ（１３８５，１３９０）および前記スケーリングされたＧ／ＲパラメータＫ（１４５５，１４６０）を更新するステップと
をさらに含むことを特徴とする請求項１３に記載のコンピュータ実施処理方法。
【請求項１７】
整数値を含む符号化されたディジタル整数データ（２３０）を表現する符号語を有する符号化ビットストリームを復号化するための適応ランレングス・ゴロム／ライス（ＲＬＧＲ）復号器（２４０）において、
前記符号化ビットストリーム（２３０）の符号語を復号化する適応ゴロム／ライス（Ｇ／Ｒ）復号器（２４０）と、
前記符号語を復号化する適応ランレングス復号器（２４０）と、
前記適応Ｇ／Ｒ復号器のみを含む第１の復号化モードと、前記適応ランレングス復号器および前記適応Ｇ／Ｒ復号器の両方を含む第２の復号化モードとの間で切替を行うために符号化モードパラメータｓを使用する手段（４０５）と、
適応規則を有する後方適応技法を用いて前記符号化モードパラメータｓを更新する手段（４３５）と
を備えたことを特徴とする適応ＲＬＧＲ復号器。
【請求項１８】
前記適応ＲＬＧＲ復号器（２４０）において、
前記第１および第２の両方の復号化モードの適応Ｇ／Ｒ復号器を用いて前記符号語を復号化するためのゴロム／ライス（Ｇ／Ｒ）パラメータｋ（４４５）と、
適応規則を有する前記後方適応技法を用いて前記Ｇ／Ｒパラメータｋを更新する手段（４４０）と
をさらに備えたことを特徴とする請求項１７に記載の適応ＲＬＧＲ復号器。
【請求項１９】
前記適応ＲＬＧＲ復号器（２４０）において、前記適応規則が、
前記符号化モードパラメータｓについて、
ｓ＝０の場合、ｓを第１の整数定数Ａ１だけ増加させ（１２４５）、
ｓ＞０の場合、ｓを第２の整数定数Ｂ１だけ減少させ（１２５０）、
ｒ個のゼロからなるランが、ｒ＝２sであるような完全ランである場合、ｓを第３の整数定数Ａ２だけ増加させ（１３８５）、
ｒ個のゼロからなるランが、ｒ＜２sであるような不完全ランである場合、ｓを第４の整数定数Ｂ２だけ減少させる（１３９０）
ことにより、前記符号化モードパラメータｓを更新する手段（４３０）と、
前記Ｇ／Ｒパラメータｋについて、
適応値ｐを定義し（１４２５）、
ｐ＝０の場合、ｋを第５の整数定数だけ減少させ（１４５５）、
ｐ＝１の場合、ｋをそのまま保持し（１４４５）、
ｐ＞１の場合、ｋをｐだけ増加させる（１４６０）
ことにより、前記Ｇ／Ｒパラメータｋを更新する手段（４４０）と
をさらに備えたことを特徴とする請求項１８に記載の適応ＲＬＧＲ復号器。
【請求項２０】
前記適応ＲＬＧＲ復号器（２４０）において、
スケーリングされた符号化モードパラメータＳおよびスケーリングされたＧ／ＲパラメータＫを、
スケーリングパラメータＬを定義し、
Ｓ＝ｓ×Ｌを定義し（１２５５）、
Ｋ＝ｋ×Ｌを定義する（１４６５）
ことにより定義する手段と、
それぞれの適応規則を用いてｓおよびｋの代わりにＳおよびＫを更新する手段と
をさらに備えたことを特徴とする請求項１９に記載の適応ＲＬＧＲ復号器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にディジタルデータの処理に関し、特に、新規な後方適応技法（backward-adaptive technique）を用いた整数データの無損失符号化・復号化の改善された方法およびシステムに関する。
【背景技術】
【０００２】
コンピュータデータ（例えばテキスト、オーディオ、ビデオ、イメージおよびプログラムファイル）のサイズが増大していくにつれて、データ圧縮がますます重要になっている。データ圧縮とは、ディジタルデータを、元のデータよりも少ないビット数を用いた符号化表現に符号化する方法である。より少ないビット数でデータを表現することは、データが占有する記憶スペースがより少なく、必要な伝送帯域幅がより狭くなることを意味する。
【０００３】
一般に、データ圧縮は、最も頻繁に出現するデータを予測し、それをより小さいスペースに記憶することによって、データを圧縮する。具体的には、データ圧縮は、（１）入力データの確率を予測するためのデータモデルを定義し、（２）符号器を用いてその確率から符号を生成する、という少なくとも２種類のタスクを含む。さらに、一部のデータ圧縮技法では、データを数学的に変換し量子化することにより、さらに高度の圧縮を達成する。
【０００４】
圧縮技法には、無損失のものと有損失のものがある。無損失圧縮技法は、符号化前の元データと復号化後の復元されたデータとがビットごとに同一であるという意味で可逆である。有損失圧縮は、データには品質のかなりの損失を伴うが捨てることができる多くの繰り返しがあるという事実を利用する。有損失圧縮は、より高い圧縮を達成するために元データの一部の損失を許容する。
【０００５】
無損失圧縮は通常、テキストやバイナリデータを圧縮するために用いられるのに対し、有損失圧縮は通常、オーディオ、イメージおよびビデオデータに用いられる。しかし、有損失圧縮技法であっても、時には無損失圧縮技法を使用することがあり得る。例えば、２種類の広く用いられている圧縮（あるいは符号化）技法として、変換符号化および予測符号化がある。この種の圧縮方式では、元データを変換してから量子化（最も近い整数に丸める）か、あるいは、（固定的または適応的な）信号モデルに基づいて元データを予測してから予測誤差（元データと予測データの差）を量子化する。いずれの場合でも、量子化後のデータは整数形式である。これらの整数が得られた後、データを表現するのに必要なビット数を低減するために、無損失圧縮技法を用いて量子化値を符号化する。
【０００６】
これらの整数値の集合は通常、対応する確率分布関数（ＰＤＦ）を有する。このＰＤＦは、予測符号化において、データの性質が予測子によってうまくモデル化されていれば、ほとんどの場合に予測誤差がゼロに近くなるような分布を有する。同様に、変換符号化においては、ほとんどの量子化された変換係数がゼロになる。図１は、これらの整数値の典型的な確率分布を例示している。ゼロは最尤値（most likely value）であり、非ゼロ値の確率はマグニチュード（大きさ）が増大するにつれてほぼ指数関数的に急速に減少する。データが図１に示す確率分布を有するのは、無損失圧縮技法を用いて符号化されているデータが元データではないからである。図１は、変換係数あるいは予測誤差を量子化することから生じる整数データである。
【０００７】
数学的にいえば、問題は、Ｎ個の整数からなるベクトルｘを符号化するための効率的な解法を見出すことである。各要素ｘ（ｎ）、ｎ＝０，１，...，Ｎ−１、は、図１と同様の確率分布に従う値を有するので、最も確からしい値はゼロであり、ゼロから離れた値ほど急速に減少する確率を有する。
【０００８】
図１のような確率分布の簡単な数学的モデルとして、次のような、パラメータθで特徴づけられるラプラス分布、あるいは両側幾何（two-sided geometric : ＴＳＧ）分布がある。
【０００９】
【数１】
2006129467.tif 000003
【００１０】
なお、パラメータθは、｜ｘ｜が増大する際の確率の減衰率を制御することに留意されたい。θの値が大きいほど減衰は急速である。パラメータθは、ｘ＝０における確率に直接関係づけることができる。すなわち、Ｐ（０，θ）＝（１−θ）／（１＋θ）である。また、情報源シンボルの絶対値の期待値は次のようになる。
【００１１】
【数２】
2006129467.tif 000004
【００１２】
情報源のエントロピーは、ビット／シンボル単位で次式で与えられる。
【００１３】
【数３】
2006129467.tif 000005
【００１４】
そこで、良好な符号器は、Ｎ個のｘの値からなるベクトルを、理論的最小値であるＮ・Ｈ（ｘ）ビットよりもあまり多くないビット数を含むビットストリームに写像(map)すべきである。
【００１５】
ラプラス分布は、（ほとんどの無損失のオーディオおよびイメージ符号器のような）予測符号器における予測誤差、あるいは（ほとんどの有損失のオーディオ、イメージ、およびビデオ符号器のような）量子化された変換係数のいずれの場合でも、媒体圧縮(media compression)方式におけるありふれたモデルである。
【００１６】
ラプラス／ＴＳＧ分布を有する情報源に対し、多くの符号器が提案されている。簡単だが効率的な符号器としてゴロム−ライス（Golomb-Rice）符号器がある。まず、ＴＳＧ情報源値ｘを次の簡単な可逆写像で非負値ｕに写像する。
【００１７】
【数４】
2006129467.tif 000006
【００１８】
これは、ｕを、並べ替えたアルファベット｛０，−１，＋１，−２，＋２，...｝へのインデックスとみなすことと等価である。新しい情報源ｕは、幾何情報源に近い確率分布を有する。幾何情報源にはゴロム符号が最適である。というのは、ゴロム符号は、ゴロムパラメータを適切に選択する限り、幾何情報源に対するハフマン符号であるからである。
【００１９】
パラメータｍのいくつかの値に対して、ゴロム−ライス（Ｇ／Ｒ）符号の一例を表１に示す。なお、ｍが２のべき乗に等しい場合にはパラメータｋを用いるが、これはｍ＝２kによってｍに関係づけられることに留意されたい。ハフマン符号に比べてＧ／Ｒ符号の主な利点は、任意の入力値に対して２進符号語を簡単な規則で計算できることである。このため、テーブルを記憶しておく必要がない。これは、最新のプロセッサでは特に有用である。最新のプロセッサでは、テーブルエントリを記憶しているメモリ位置からの読み出しが、数個の命令を実行するよりも長くかかり得るからである。容易に分かるように、パラメータｍは、連続する何個の符号語が同じビット数を有するかを決定する。それはまた、ｕを入力値として、符号語の計算がｕ／ｍの計算を伴うことも示している。ほとんどのプロセッサでは、整数除算には多くのサイクル数がかかるので、一般のｍではＧ／Ｒ符号は魅力的でない。ｍ＝２kに選ぶと、これはライス符号に対応するが、除算ｕ／ｍはシフトで置き換えることができる。というのは、ｕ／ｍ＝ｕ＞＞ｋ（ここで＞＞は右シフト演算子を表す）だからである。このため、任意の入力ｕに対してＧ／Ｒ符号を計算することは容易であり、単にｐ＝ｕ＞＞ｋおよびｖ＝ｕ−（ｐ＜＜ｋ）を計算すれば良い。そして符号は、ｐ個の１を有するストリングをｖのｋビット２進表現と連結することにより形成される。
【００２０】
【表１】
2006129467.tif 000007
【００２１】
表１から明らかなように、Ｇ／Ｒパラメータｋの選択は、情報源の統計値に依存しなければならない。ｕが増大する際の確率の減衰が遅いほど、より大きいｋを選択すべきである。さもなければ、符号語長があまりにも急激に長くなる。ｋを選択するための簡単な規則として、与えられた入力値ｕに対する符号語長が、その値の出現確率の、２を底とする対数に近くなるようにすると良い。
【００２２】
Ｇ／Ｒ符号は幾何分布情報源に対しては最適であるが、式４の写像によるラプラス／ＴＳＧ情報源からのシンボルを符号化するには最適ではない。この理由は、ＴＳＧ分布を有する入力変数ｘに対して、式４の変数ｕは、幾何分布に近いが厳密には幾何分布でない確率分布を有するからである。実際には、パフォーマンスは十分に最適に近い（例えば、レートは通常、エントロピーよりも５％未満高いだけである）ので、Ｇ／Ｒ符号はかなり普及している。ＴＳＧ情報源に対する最適符号は、４種類の符号変種のセットを含み、これらはほとんどの場合、実装して圧縮を５％未満改善するには、より複雑である。したがって、ほとんどの場合、Ｇ／Ｒ符号が、パフォーマンスと簡単さの間の最良のトレードオフを提供する。
【００２３】
図１において、確率分布は単一のパラメータで表され、このパラメータは指数関数の減衰率である。減衰率が高いほど、値がゼロである可能性が高くなる。これは、多くの場合にゼロが生じやすいので、ゼロのランが非常に生じやすくなることを意味する。すなわち、確率分布の減衰率が十分に高ければ、ランを符号化するのが良い考えである。ゼロのランを符号化することは、入力データ中の多くのエントリを処理するためにほんの数ビットしか使われないことを意味する。
【００２４】
データのランを符号化することは、ランレングス符号化を用いて効率的に実行される。ランレングス符号化は、簡単な形式のデータ圧縮であって、同じ値が連続して繰り返された系列（すなわち「ラン」）を、元のランとしてではなく、単一のデータ値およびそのランの長さとして記憶するものである。
【００２５】
例えば予測符号化では、データが予測子（predictor）によって用いられるモデルに一致する場合に、予測誤差がゼロとなる可能性がはるかに高くなる。しかし、良好なモデルでも、時には大きい値を有する可能性がある。これは、例えば画素値が背景値から前景値になるというように、ある境界に達した時に起こり得る。時々、大きい数値が生じ得る。これが起こる場合に、ランレングス符号化よりも有用な符号化技法の一種として「ランレングス・ゴロム／ライス（ＲＬＧＲ: Run-Length Golomb/Rice）」符号化技法として知られているものがある。このようなＲＬＧＲ符号化技法の１つが特許文献１（発明者：Malvar、名称：「ディジタルデータのプログレッシブ変換符号化のシステムおよび方法（System and Method for Progressively Transform Coding Digital Data）」）および特許文献２（発明者：Malvar、名称：「有限アルファベットデータの無損失適応符号化（Lossless Adaptive Encoding of Finite Alphabet Data）」）に開示されている。
【００２６】
現実には、データの情報源が変動すると、確率は一定にとどまらず時間とともに変動する。これは例えば、イメージおよびオーディオの場合に当てはまる。一般に、このような入力データにおける確率変動はさまざまな方法で処理される。例えばＪＰＥＧ(ジェイペグ：Joint Photographic Experts Group)では、符号化すべき異なる値に対して異なる長さの符号語を用いるためのエントロピー符号器（ハフマン符号器）がある。通常、ハフマンテーブルがあらかじめ設計される。すなわち、一般に、いくつかのイメージを取得し、それらの確率を測定し、すべてのイメージに用いられる平均モデルを構築する。この手法の１つの問題点は、イメージのあらゆる部分に符号化効率の損失があることである。というのは、エントロピー符号器によって用いられている確率モデルは平均としては良好であるが、イメージの当該部分（that portion）にとっては必ずしも良好であるとは限らないからである。
【００２７】
表１から分かるように、ゴロム／ライス符号には次の２つの主要な問題点がある。（１）ｋの適当な値を決めることができるためには、確率減衰パラメータθ、あるいは同じことであるが、確率Ｐ（ｘ＝０）が既知でなければならない。（２）減衰パラメータが小さすぎる場合、エントロピーＨ（ｘ）が１より小さくなるため、ゴロム／ライス符号は最適でない。というのは、その平均符号語長が１ビット／シンボルより小さくなり得ないからである。
【００２８】
実際には、第１の問題点（最適なゴロム／ライスパラメータの推定）は通常、入力ベクトルを所定長のブロックに分割することによって対処される。各ブロックについて、符号器は２つのパスからなる処理を行う。第１パスで、入力値の平均マグニチュードを計算する。そのために、パラメータθを式２から推定し、対応する最適なｋを求めることができる。第２パスで、符号器は、まず２進形式でｋの値を出力し、続いて当該ブロック内のデータ値に対するゴロム／ライス符号のストリングを連接させることによって、当該ブロックに対するビットストリームを生成する。これは、無損失イメージ圧縮のためのＪＰＥＧ−ＬＳや無損失オーディオ圧縮のためのＳＨＯＲＴＥＮ等、ゴロム／ライス符号を用いる実質上すべての無損失圧縮方式で使用される手法である。これは、「ブロック単位の適応(blockwise adaptation)」あるいは「前方(フォーワード)適応(forward adaptation)」モデルと呼ばれる。前方適応モデルは、符号器がまず符号化前にデータを見て、統計パラメータ（通常は平均マグニチュード）を測定してから、そのパラメータに基づいて符号化を行い、データを符号化するために用いたパラメータの値を、復号器で使用するためにヘッダに入れる、という意味で前方という。データを一挙に符号化しようとする代わりに、データを小部分すなわちブロックに分解する。各ブロックについて、そのブロックの統計値を測定し、バッファ内にあるものと一致するデータの部分について統計パラメータを測定し、エントロピー符号器をそのパラメータに合わせて調整する。符号化されたファイルには、そのデータブロックを符号化するために用いているパラメータの値を示すヘッダが挿入される。
【００２９】
実際上の第２の問題点、すなわち、非常に低いエントロピーで情報源を符号化することは、通常、ブロック単位の適応すなわち前方適応モデルを用いて対処される。ブロック内の入力シンボルの平均マグニチュード値が、推定エントロピーＨ（ｘ）が１未満になるほど小さい場合、符号器はゴロム／ライス符号化ではなくランレングス符号化を使用する。
【００３０】
これらの手法は実際上有効ではあるが、２つの主要な欠点を有する。第１の欠点として、符号器は、データに対して２つのパスを実行するために、各入力ブロックを２度読む必要がある。１回目は、平均マグニチュードを計算することによりゴロム／ライスパラメータを求めるためであり、２回目は、実際の符号化を実行するためである。これは、符号器が追加的作業を実行することを要求し、複雑さを増加させる。アプリケーションによっては符号化時間は問題ではないが、例えばディジタルカメラの場合、符号化プロセスを遅くすれば、ランダムアクセスメモリのコストが増大する。特に、前方適応モデルはまずデータを見てから統計値を測定し、モデルパラメータを求めた後、符号化をしなければならない。このことは、高い処理能力を有するパーソナルコンピュータ上で符号器が動作する場合には問題とはならない。しかし、携帯電話で写真を撮り、その携帯電話自身で符号化する場合、処理能力ははるかに限定される。
【００３１】
第２の、そして最も重大な欠点は、ブロックサイズを選択する際の困難に伴うものである。ブロックサイズが大きすぎると、ブロック内で統計値が急激に変化する可能性がある。他方、ブロックサイズが小さすぎる場合には、そのデータブロックを符号化するためにどのようなパラメータを用いたかを復号器に知らせなければならないことのオーバーヘッドが負担となる。各ブロックについて、符号器は、そのブロックを符号化するのにどのようなパラメータ値を用いているかを記憶しなければならない。ある点で、小さいブロックを符号化するのに要するオーバーヘッドは、達成される圧縮に値しなくなる。これがトレードオフを作り出す。一方で、小さいブロックを用いればブロックの統計値を一致させることができるが、数が少ないので統計値を測定することが困難になり、符号化のオーバーヘッドが高くなる。他方、大きいブロックを用いると、統計値がブロック内で大きく変動し得ることが問題になる。実際には、これらの２つの相反する要因の間の妥協点を見出すのは困難なので、ブロックサイズは通常、符号化するデータのタイプに応じて、１２８〜２，０４８サンプルの間で選択される。
【００３２】
１つの解決法は、符号器において後方適応（バックワード・アダプティブ）技法を用いることである。後方適応では、符号化は、各ブロックごとに初期状態について復号器と符号器を一致させることから開始される。すなわち、各パラメータを所定値に初期化してから符号化を開始する。符号器が出力シンボルを生成するたびに、そのシンボルを直ちに復号器へ送信できる。というのは、復号器はそのシンボルを符号化するために用いられたそのパラメータ値を知っているからである。符号器は、シンボルを出力した後、所定の適応規則に従い、出力したシンボルに応じて符号化パラメータの新たな値を計算する。復号器はパラメータ適応規則を知っているので、復号器もまた、符号化パラメータのその新たな値を計算できる。こうして、各符号化シンボルの後で符号化パラメータが調整され、符号器と復号器は常に同期する。すなわち、復号器は符号化パラメータの変化を追跡する。これは、符号器が、データを符号化するのにどのようなパラメータを用いたかに関していかなるオーバーヘッド情報も復号器へ送信する必要がないことを意味する。
【特許文献１】米国特許第６７７１８２８号公報
【特許文献２】米国特許第６４７７２８０号公報
【発明の開示】
【発明が解決しようとする課題】
【００３３】
したがって、ゼロのランを符号化するためのランレングス符号化と、ゼロのランの後の数値を符号化するためのゴロム／ライス符号化とを切り替えることによって整数データを効率的に圧縮する無損失圧縮符号器およびその方法が必要とされている。また、ゼロのランの後に現れ得る入力整数値を処理し符号化することが可能な適応符号器およびその方法が必要とされている。さらに、後方適応技法を用いて入力データの高速な追跡および効率的圧縮を行うことにより、前方適応に伴う上記の問題を回避する適応符号器およびその方法も必要とされている。
【課題を解決するための手段】
【００３４】
本明細書に開示される発明は、整数データを無損失符号化するための適応ランレングス・ゴロム／ライス（ＲＬＧＲ）符号器・復号器（コーデック）およびその方法を含む。適応ＲＬＧＲコーデックおよびその方法は、後方（バックワード）適応を用いて、入力データにおける変化する統計値を高速に追跡する。後方適応を用いることで、適応ＲＬＧＲコーデックおよびその方法は、入力データの統計値のいかなる変化も迅速に学習する。さらに、適応ＲＬＧＲコーデックおよびその方法は、いかなる入力整数値も符号化可能である。適応ＲＬＧＲコーデックおよびその方法は、オーディオ、イメージおよびビデオ符号器のようなマルチメディア圧縮システムを含む広範囲の圧縮アプリケーションに適用可能である。
【００３５】
適応ＲＬＧＲコーデックおよびその方法は、ランレングス符号化とゴロム／ライス（Ｇ／Ｒ）符号化を新規な方法で組み合わせる。具体的には、適応ＲＬＧＲコーデックおよびその方法は、Ｇ／Ｒ符号化専用である第１のモード（Ｇ／Ｒ専用モード）と、Ｇ／Ｒ符号化とランレングス符号化を組み合わせた第２のモード（ＲＬＧＲモード）とを有する。また、適応ＲＬＧＲコーデックおよびその方法は、各符号化シンボルの後で符号化パラメータを調整する新規な後方適応技法も使用する。符号化モード（Ｇ／Ｒ専用モードまたはＲＬＧＲモード）はパラメータ値から自動的に決定される。確率テーブルや符号語テーブルは不要なので、適応ＲＬＧＲコーデックおよびその方法は、小さいメモリ設置面積（footprint）に収まる。したがって、適応ＲＬＧＲコーデックおよびその方法は、通常は命令のフェッチおよび実行よりもメモリアクセスのほうに多くのサイクル数を要する最新のプロセッサに好適である。また、メモリおよび処理能力が限定された小型デバイスにも好適である。というのは、適応ＲＬＧＲコーデックおよびその方法は、入力データをブロック単位でバッファリングする必要がなく、また、各データ値を２度処理する必要がないからである。
【００３６】
適応ＲＬＧＲコーデックおよびその方法は、符号化規則の簡単だが新規な組合せを使用し、符号化モードに応じて入力データのストリングを出力符号語に写像（マッピング）する。また、適応ＲＬＧＲコーデックおよびその方法は、新規な適応規則を有する新規な後方適応技法も使用する。２つのパラメータ、すなわち、符号器ランパラメータ（ｓ）およびゴロム／ライス（Ｇ／Ｒ）パラメータ（ｋ）が用いられる。符号器ランパラメータは、適応ＲＬＧＲコーデックおよびその方法がランレングス符号化を使用する（ｓ＞０の場合）かどうか、そして使用する場合、ランレングス符号化をどのように使用するかを制御する。Ｇ／Ｒパラメータは、入力値を直接符号化するか（Ｇ／Ｒ専用モードでｓ＝０の場合）、または、ゼロの不完全ラン（incomplete run）の後で入力値を符号化する（ＲＬＧＲモードの場合）ために、両方の符号化モードで用いられる。
【００３７】
適応ＲＬＧＲコーデックおよびその方法の主な利点の１つは、そのパラメータ（ｓおよびｋ）が、生成される各符号語の後で調整され更新されることである。これにより、入力データの統計値におけるいかなる変化も非常に迅速に追跡できる。復号器へ符号化パラメータを送信するためのオーバーヘッドは不要である。というのは、それらの変化は復号器によって追跡されるからである。適応規則が簡単なので、後方適応を使用することの計算量（複雑さ）は低い。したがって、適応ＲＬＧＲコーデックおよびその方法は、多くの実際的アプリケーションにとって魅力的である。
【００３８】
適応ＲＬＧＲ方法は、ランレングス符号器以外のエントロピー符号器を使用する第１の符号化モードと、ランレングス符号器と組み合わせてエントロピー符号器を使用する第２の符号化モードとの間で選択を行い、後方適応技法を用いて第１および第２のモードの符号器を適応させることを含む。一般に、エントロピー符号器はゴロム／ライス符号器である。後方適応技法は、符号化モードパラメータｓを用いて第１モードと第２モードの間で選択を行い、ゴロム／ライス（Ｇ／Ｒ）パラメータｋをＧ／Ｒ符号器で使用することを含む。ｓ＝０の場合、第１の符号化モードを選択し、ｓ＞０の場合、第２の符号化モードを選択する。これらの各パラメータは、ランレングス符号器またはＧ／Ｒ符号器によって生成される各符号語の後で更新される。
【００３９】
符号化規則は符号化モードに依存する。ｓ＝０の場合、次の入力値ｘは、まずそれを簡単な一対一写像規則（ｘ＞０の場合はｕ＝２ｘ、ｘ＜０の場合はｕ＝−２ｘ−１）により非負値ｕに写像してから、パラメータｋのゴロム／ライス符号器を用いてｕを符号化することによって、符号化される。そこで、出力符号語をＧＲ（ｕ，ｋ）で表す。ｓ＞０の場合、まず入力値ｘのゼロのランｒを調べる。ｒ＝２sの場合、ランｒは完全ランと定義され、出力符号語は０に等しい１ビットである。ｒ＜２sの場合、ランｒは不完全ランと定義され、符号語は１＋ｂｉｎ（ｒ，ｓ）＋ＧＲ（ｕ，ｋ）である。ここで、ｂｉｎ（ｒ，ｓ）は不完全ランｒの長さをｓビットで表した２進表現であり、ＧＲ（ｕ，ｋ）は不完全ランｒに続く値の（この場合もｘからｕへの写像を用いた）ゴロム／ライス符号である。
【００４０】
１シンボルを符号化した後、パラメータ適応規則を適用する。後方適応技法の適応規則は、各パラメータｓおよびｋに対する規則を含む。ｓの適応規則は以下の通りである。ｓ＝０（Ｇ／Ｒ専用モード）の場合、入力値ｘの絶対値を調べる。｜ｘ｜＝０の場合、ｓをスケーリング(拡大縮小)したもの、すなわちＳを、第１の整数定数Ａ１だけ増加させる。｜ｘ｜＞０の場合、Ｓを第２の整数定数Ｂ１だけ減少させる。ｓ＞０（ＲＬＧＲモード）の場合、ランｒが完全ランならば、Ｓを第３の整数定数Ａ２だけ増加させる。ランｒが不完全ランならば、Ｓを第４の整数定数Ｂ２だけ減少させる。そして、次の符号語を生成するために用いるｓの値をｓ＝Ｓ／Ｌとして計算する。ここでＬは一定のパラメータである（Ｌを２のべき乗に選択すれば、Ｌによる除算は単にシフト演算である）。
【００４１】
ｋの適応規則は以下の通りである。入力値ｕ（ＧＲ符号器は常にｕ値に作用することを想起されたい）から、一時値ｐをｐ＝ｕ＞＞ｋ（ここで＞＞は右シフト演算子を表す）により計算する。ｐ＝０の場合、ｋをスケーリングしたもの、すなわちＫを、第５の整数定数Ｂ３だけ減少させる。ｐ＝１の場合、Ｋを変えずに据え置く。ｐ＞１の場合、Ｋをｐだけ増加させる。このようにして、各符号語が生成された後、第１および第２の両方のモードにおいて、Ｇ／Ｒ符号器に対してパラメータｋを更新する。そして、次の符号語を生成するために用いるｋの値をｋ＝Ｋ／Ｌとして計算する。ここでＬは一定のパラメータである（Ｌを２のべき乗に選択すれば、Ｌによる除算は単にシフト演算である）。
【００４２】
上記の適応規則の説明から分かるように、適応ＲＬＧＲ方法は「分数適応（fractional adaptation）」と呼ばれる特徴も含む。分数適応により、より細かい適応レートの制御が可能となる。まず、スケーリングパラメータＬを定義する。Ｌの値は通常、２のべき乗とする。次に、スケーリングされた符号化モードパラメータＳ＝ｓ×ＬおよびスケーリングされたＧ／ＲパラメータＫ＝ｋ×Ｌを定義する。ｓおよびｋに対する上記の適応規則を用いて、スケーリングされたパラメータ値ＳおよびＫを、生成された符号語に応じて整数定数だけインクリメントまたはデクリメントする。ＳおよびＫの適応後、最終的なパラメータ値ｓおよびｋをｓ＝Ｓ／Ｌおよびｋ＝Ｋ／Ｌにより計算する。そうすれば、ＳおよびＫの整数インクリメントは、ｓおよびｋの分数インクリメントとみることができ、これによりｓおよびｋの値のより滑らかな制御が可能なため、入力統計値の変化をより良く追跡できる。仮に、各符号化シンボルの後でｓおよびｋを整数インクリメントだけ調整すると、それらの値はあまりに大きく変動してしまう。パラメータ値におけるこのようなノイズは圧縮比（符号化ビットストリームを記憶するのに要するビット数に対する、入力データを直接２進フォーマットで記憶するのに要するビット数の比）の低下につながであろう。
【００４３】
適応ＲＬＧＲコーデックは、上記の適応ＲＬＧＲ方法を組み込むためのモジュールを含む。
【００４４】
適応ＲＬＧＲコーデックおよびその方法は、上記の符号化規則に対応する復号化規則を用い、上記と同じパラメータ適応規則を用いることにより動作する。復号器における復号化規則は、符号器における上記の符号化規則の逆である。すなわち、ｓ＝０の場合、復号器は、ＧＲパラメータｋの現在値に応じて必要なだけのビット数を入力ビットストリーム（またはファイル）から読み出す。このようにして復号器は、表１に従って、有効なゴロム／ライス符号ＧＲ（ｕ，ｋ）に対応する完全な符号語を読み出す。すると、ゴロム／ライス符号はあらゆるパラメータｋに対して一意復号可能なので、復号器はその符号語を復号化できる。すなわち、復号器は、符号器に存在したシンボルｕの値を決定できる。ｕから、復号器は、単に逆の一対一写像規則を用いることにより、対応するデータ値ｘを決定できる。具体的には、ｕが偶数の場合、ｘ＝ｕ／２であり、ｕが奇数の場合、ｘ＝−（ｕ＋１）／２である。ｓ＞０の場合、復号器は、入力ビットストリームまたはファイルから次のビットを読み出す。そのビットが０（ゼロ）に等しい場合、復号器は、ｒ＝２sとして、ｒ個のゼロからなるストリングである出力を生成する。そのビットが１に等しい場合、復号器は、次のｓビットを変数ｒの２進表現として読み出す。その後、復号器は、ＧＲパラメータｋの現在値に応じて必要なだけのビット数を入力ビットストリーム（またはファイル）から読み出す。このようにして、有効なゴロム／ライス符号ＧＲ（ｕ，ｋ）に対応する完全な符号語が読み出される。Ｇ／Ｒ符号から、復号器は、一時変数ｕを決定し、逆の一対一写像規則により、ゼロの部分的（不完全）ストリングに続いていた入力データ値ｘを計算することができる。具体的には、ｕが偶数の場合、ｘ＝ｕ／２であり、ｕが奇数の場合、ｘ＝−（ｕ＋１）／２である。そして、復号器は、ｒ個のゼロからなるストリングと、それに続いてその値ｘを出力する。上記の復号化プロセスを実行することで、入力符号語は、符号器で見られたものと厳密に一致する出力値すなわち値のストリングに復号化される。このように、復号化プロセスは無損失である。
【００４５】
上記のように入力ビットストリームまたはファイルから符号語(codeword)を復号化した後で、復号器は、上記の符号器について説明したのと同じ適応規則を計算する。このようにして、復号器は、符号器が行うのと全く同じようにパラメータｓおよびｋの値を調整する。こうして、パラメータは、ビットストリーム（またはファイル）の次の符号語を復号化するための正しい値を有することになる。
【００４６】
本発明は、本発明の諸態様を例示する以下の説明および添付図面を参照することでさらに理解することができる。他の特徴および効果は、以下の発明の詳細な説明を、本発明の原理を例として示す添付図面とともに考慮することから明らかとなるであろう。
【００４７】
以下、図面全体を通じて、同一参照番号は対応する部分を表す。
【発明を実施するための最良の形態】
【００４８】
以下の本発明の説明では添付図面を参照する。添付図面は、説明の一部をなし、本発明を実施し得る具体例が実例として示される。なお、他の実施形態も利用可能であり、本発明の範囲から逸脱することなく構成の変更をなし得ることが理解されるべきである。
【００４９】
［Ｉ．はじめに］
本明細書に開示されるランレングス・ゴロム／ライス（ＲＬＧＲ）符号器およびその方法は、広範囲の圧縮アプリケーションにおいて使用可能である。マルチメディア圧縮システム（例えば、オーディオ、イメージ、およびビデオコーデック）や、圧縮のために予測または変換手法を用いるその他のシステムは通常、図１と同様の確率分布を有する整数データを生成する。ＲＬＧＲコーデックおよびその方法は、イメージ、オーディオ、地形標高、および幾何マップデータの圧縮のためのアプリケーションにおいて実装されている。これらのアプリケーションにおいてＲＬＧＲコーデックおよびその方法を使用した結果、より簡単な実装でありながら、最も高性能のエントロピー符号器に匹敵する圧縮比となっている。
【００５０】
本明細書に開示されるＲＬＧＲコーデックおよびその方法は、整数データの無損失圧縮のための改善された技法を提供する。整数値からなるベクトルを符号器でビットストリームに写像する。このビットストリームは後で復号器により正確に再構成できる。パフォーマンスを改善するために後方適応を用いることで、ＲＬＧＲコーデックおよびその方法は、入力データの統計値の変化を迅速に学習し、それに適応する。ＲＬＧＲコーデックおよびその方法は、オーディオ、イメージ、およびビデオコーデックのようなマルチメディア圧縮システムを含む広範囲の圧縮アプリケーションに適用可能である。
【００５１】
ＲＬＧＲコーデックおよびその方法は、ランレングス符号化とゴロム−ライス符号化を新規な方法で組み合わせるとともに、各符号化シンボルの後で符号器パラメータを調整する後方適応ストラテジによって特徴づけられる。確率テーブルや符号語テーブルは不要なので、ＲＬＧＲコーデックおよびその方法は、非常に小さいメモリ設置面積に収まる。したがって、ＲＬＧＲコーデックおよびその方法は、通常は命令のフェッチ(取り出し)および実行よりもメモリアクセスに多くのサイクル数を要する最新のプロセッサに特に好適である。
【００５２】
従来型のエントロピー符号器に対して、ＲＬＧＲコーデックおよびその方法の１つの主要な利点は、後方適応ストラテジ（strategy:戦略、方策）がデータの統計値の変化を迅速に学習することである。このため、実際には、ＲＬＧＲコーデックおよびその方法は、ハフマン符号器、ブロック適応ゴロム／ライス符号器やコンテクスト適応算術符号器のような他の種類の符号器よりも良好なパフォーマンス(性能、能力)を示している。符号化パラメータに対して後方適応ストラテジを使用することのもう１つの利点は、確率推定器が不要なことである。ＲＬＧＲコーデックおよびその方法のさらにもう１つの利点は、データに対して単一パスで各符号化シンボルの後に適応を実行するので、ブロック単位の適応や前方適応を使用する符号器よりも良好な圧縮結果を生成し、符号化もより高速である。
【００５３】
［ＩＩ．全体的概観］
図２Ａおよび図２Ｂは、本明細書に開示される適応ランレングス・ゴロム／ライス（ＲＬＧＲ）符号器およびその方法の例示的実施態様を示すブロック図である。図２Ａには、適応ＲＬＧＲコーデックおよびその方法の符号器部分のブロック図が示されている。図２Ｂには、適応ＲＬＧＲコーデックおよびその方法の復号器部分のブロック図が示されている。なお、図２Ａおよび図２Ｂは、適応ＲＬＧＲコーデックおよびその方法が実施され使用され得るいくつかの方法のうちの２つに過ぎないことに留意されたい。
【００５４】
図２Ａを参照すると、適応ＲＬＧＲ符号器２００は第１のコンピューティングデバイス上で動作する。適応ＲＬＧＲ符号器２００は整数データ２２０が入力され、それを処理する。概して、適応ＲＬＧＲ符号器２００は、整数値からなるベクトルのような整数データ２２０が与えられると、その整数データ２２０を符号化ビットストリーム２３０へと符号化すなわち写像する。整数データ２２０は通常、最も確からしい値がゼロであり、非ゼロ値はその値が増大するにつれて確率が減少するような整数のベクトルを含む。このタイプの整数データは通常、図１に示したのと同様の確率分布関数（ＰＤＦ）を有する。整数データが符号化された後、符号化ビットストリーム２３０は記憶あるいは送信されることが可能である。
【００５５】
図２Ｂを参照すると、ＲＬＧＲ復号器２４０が第２のコンピューティングデバイス２５０上にある。なお、第１のコンピューティングデバイス２４０および第２のコンピューティングデバイス２５０は、別個のコンピューティングデバイスとして図示されているが、同一のコンピューティングデバイスであってもよいことに留意されたい。すなわち、ＲＬＧＲ符号器２００および復号器２４０は同一のコンピューティングデバイス上に存在してもよい。概して、ＲＬＧＲ復号器２４０は、符号化ビットストリーム２３０を処理し、再構成された整数データ２６０を出力する。適応ＲＬＧＲ符号器２００は整数データ２２０の無損失符号化を実行するので、ＲＬＧＲ復号器２４０は、符号化ビットストリーム２３０を読み出し、整数データ２２０に含まれていた元のデータベクトルを正確に再構成することができる。
【００５６】
なお、実際のアプリケーションでは、デバイスあるいは機器が、ＲＬＧＲ符号器を含むがＲＬＧＲ復号器を含まないことがある（例えばディジタルカメラ）ことに留意されたい。同様に、デバイスあるいは機器が、ＲＬＧＲ復号器を含むがＲＬＧＲ符号器を含まないことがある（例えばディジタルオーディオプレーヤやディジタルピクチャビューア）。
【００５７】
［ＩＩＩ．例示的オペレーティング環境］
適応ランレングス・ゴロム／ライス（ＲＬＧＲ）コーデックおよびその方法は、あるコンピューティング環境において、図２に示した第１のコンピューティングデバイス２１０および第２のコンピューティングデバイス２５０のようなコンピューティングデバイス上で動作するように設計される。以下、適応ＲＬＧＲコーデックおよびその方法が動作するコンピューティング環境について説明する。以下の説明は、適応ランレングス・ゴロム／ライス（ＲＬＧＲ）符号器およびその方法を実施し得る好適なコンピューティング環境の簡単な概要を提供することを意図している。
【００５８】
図３は、図２に示したＲＬＧＲコーデックおよびその方法を実施し得る好適なコンピューティングシステム環境の一例を示している。コンピューティングシステム環境３００は好適なコンピューティング環境の単なる一例であり、本発明の利用または機能の範囲に関するいかなる限定を示唆することも意図していない。また、コンピューティング環境３００は、例示的オペレーティング環境３００に示されるいかなるコンポーネントまたはその組合せに関するいかなる従属性または要件を有するとも解釈されてはならない。
【００５９】
適応ＲＬＧＲコーデックおよびその方法は、他の多くの汎用または専用のコンピューティングシステムの環境または構成とともに動作する。適応ＲＬＧＲコーデックおよびその方法とともに使用するのに好適であり得る周知のコンピューティングシステム、環境、および／または構成の例としては、パーソナルコンピュータ、サーバコンピュータ、携帯電話やＰＤＡのようなハンドヘルド型、ラップトップ型またはモバイル型のコンピュータまたは通信デバイス、マルチプロセッサシステム、マイクロプロセッサ方式のシステム、セットトップボックス、プログラム可能な消費者電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境等があるが、これらには限定されない。
【００６０】
適応ＲＬＧＲコーデックおよびその方法は、コンピュータによって実行されるプログラムモジュール等のコンピュータ実行可能命令との一般的関連で記述できる。一般的に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。また、適応ＲＬＧＲコーデックおよびその方法は、通信ネットワークを通じてリンクされたリモート処理デバイスによってタスクが実行されるような分散コンピューティング環境において実施してもよい。分散コンピューティング環境では、プログラムモジュールはメモリ記憶デバイスを含むローカルおよびリモートのいずれのコンピュータ記憶媒体に配置されてもよい。図３を参照すると、適応ＲＬＧＲコーデックおよびその方法を実施するための例示的システムは、コンピュータ３１０の形態の汎用コンピューティングデバイスを含む。コンピュータ３１０は、図２に示した第１のコンピューティングデバイス２１０および第２のコンピューティングデバイス２５０の一例である。
【００６１】
コンピュータ３１０のコンポーネントとしては、処理ユニット３２０、システムメモリ３３０、およびシステムメモリを含む種々のシステムコンポーネントを処理ユニット３２０に接続するシステムバス３２１が挙げられるが、これらには限定されない。システムバス３２１は、さまざまなバスアーキテクチャのいずれかを使用するメモリバスまたはメモリコントローラ、ペリフェラル（周辺機器）バス、およびローカルバスを含む、いくつかのタイプのバス構造のいずれでもよい。例として、限定ではないが、このようなアーキテクチャとしては、Industry Standard Architecture（ＩＳＡ）バス、Micro Channel Architecture（ＭＣＡ）バス、Enhanced ISA（ＥＩＳＡ）バス、Video Electronics Standards Association（ＶＥＳＡ）ローカルバス、およびMezzanineバスとも呼ばれるPeripheral Component Interconnect（ＰＣＩ）バスがある。
【００６２】
コンピュータ３１０は通常、さまざまなコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ３１０がアクセスできるいかなる利用可能な媒体であってもよく、揮発性および不揮発性媒体、リムーバブル(取り外し可能)および非リムーバブル(取り外し不能）媒体の両方がある。例として、限定ではないが、コンピュータ可読媒体としては、コンピュータ記憶媒体および通信媒体が挙げられる。コンピュータ記憶媒体としては、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータのような情報の記憶のための任意の方法または技術で実現された揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体がある。
【００６３】
コンピュータ記憶媒体としては、以下のものに限定されないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ等のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）等の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ等の磁気記憶デバイス、または所望の情報を記憶するために使用可能でありコンピュータ３１０によりアクセス可能な任意の他の媒体がある。通信媒体は通常、キャリア波等の変調データ信号または他のトランスポートメカニズムでコンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータを具現化し、いかなる情報配信媒体も含む。
【００６４】
なお、「変調データ信号」という用語は、信号中に情報を符号化するように１つまたは複数の信号の特性が設定または変更された信号を意味する。例として、限定ではないが、通信媒体としては、有線ネットワークまたは直接有線コネクションのような有線媒体、および音響、ＲＦ、赤外線等の無線媒体がある。上記のいずれかの組合せもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
【００６５】
システムメモリ３３０は、読み出し専用メモリ（ＲＯＭ）３３１およびランダムアクセスメモリ（ＲＡＭ）３３２のような揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中等にコンピュータ３１０内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム３３３（ＢＩＯＳ）が通常ＲＯＭ３３１に記憶されている。ＲＡＭ３３２は通常、処理ユニット３２０から直ちにアクセス可能な、および／または処理ユニット３２０が現在作用しているデータおよび／またはプログラムモジュールを含む。例として、限定ではないが、図３は、オペレーティングシステム３３４、アプリケーションプログラム３３５、他のプログラムモジュール３３６、およびプログラムデータ３３７を示している。
【００６６】
また、コンピュータ３１０は、他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータ記憶媒体を含んでもよい。単なる例として、図３は、非リムーバブル不揮発性磁気媒体の読み書きを行うハードディスクドライブ３４１、リムーバブル不揮発性磁気ディスク３５２の読み書きを行う磁気ディスクドライブ３５１、およびＣＤ−ＲＯＭ等の光媒体のようなリムーバブル不揮発性光ディスク３５６の読み書きを行う光ディスクドライブ３５５を示している。
【００６７】
例示的オペレーティング環境で使用可能な他のリムーバブル／非リムーバブル、揮発性／不揮発性のコンピュータ記憶媒体としては、以下のものに限定されないが、磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭ等がある。ハードディスクドライブ３４１は通常、インタフェース３４０のような非リムーバブルメモリインタフェースを通じてシステムバス３２１に接続され、磁気ディスクドライブ３５１および光ディスクドライブ３５５は通常、インタフェース３５０のようなリムーバブルメモリインタフェースによりシステムバス３２１に接続される。
【００６８】
前述し図３に例示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ３１０のためのコンピュータ可読命令、データ構造、プログラムモジュールおよび他のデータの記憶を行う。例えば図３において、ハードディスクドライブ３４１は、オペレーティングシステム３４４、アプリケーションプログラム３４５、他のプログラムモジュール３４６、およびプログラムデータ３４７を記憶するように示されている。なお、これらのコンポーネントは、オペレーティングシステム３３４、アプリケーションプログラム３３５、他のプログラムモジュール３３６、およびプログラムデータ３３７と同じでも異なってもよいことに留意されたい。オペレーティングシステム３４４、アプリケーションプログラム３４５、他のプログラムモジュール３４６、およびプログラムデータ３４７は、少なくともそれらが別のコピーであることを示すためにここでは異なる番号が与えられている。ユーザは、キーボード３６２、およびマウス、トラックボールまたはタッチパッドと一般的に呼ばれるポインティングデバイス３６１のような入力デバイスを通じてコンピュータ３１０にコマンドおよび情報を入力することができる。
【００６９】
他の入力デバイス（図示せず）としては、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、ラジオ受信機、またはテレビあるいは放送ビデオ受信機等が挙げられる。これらおよび他の入力デバイスは、システムバス３２１に結合したユーザ入力インタフェース３６０を通じて処理ユニット３２０に接続されることが多いが、例えばパラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ）等の他のインタフェースおよびバス構造により接続されてもよい。モニタ３９１または他のタイプのディスプレイデバイスもまた、ビデオインタフェース３９０のようなインタフェース経由でシステムバス３２１に接続される。モニタに加えて、コンピュータはスピーカ３９７やプリンタ３９６のような他の周辺出力デバイスを含んでもよく、これらは出力周辺インタフェース３９５を通じて接続され得る。
【００７０】
コンピュータ３１０は、リモートコンピュータ３８０のような１つまたは複数のリモートコンピュータへの論理コネクションを用いたネットワーク環境で動作してもよい。リモートコンピュータ３８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他のありふれたネットワークノードであってよく、通常、コンピュータ３１０に関して前述した要素の多くまたはすべてを含む。ただし、図３にはメモリ記憶デバイス３８１のみが示されている。図３に示す論理コネクションは、ローカルエリアネットワーク（ＬＡＮ）３７１および広域ネットワーク（ＷＡＮ）３７３を含むが、他のネットワークを含んでもよい。このようなネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットで一般的である。
【００７１】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ３１０はネットワークインタフェースすなわちアダプタ３７０を通じてＬＡＮ３７１に接続される。ＷＡＮネットワーキング環境で使用される場合、コンピュータ３１０は通常、インターネットのようなＷＡＮ３７３を通じて通信を確立するためのモデム３７２等の手段を含む。モデム３７２は、内蔵でも外付けでもよいが、ユーザ入力インタフェース３６０等の適当なメカニズムを通じてシステムバス３２１に接続され得る。ネットワーク環境では、コンピュータ３１０に関して図示したプログラムモジュールまたはその部分は、リモートメモリ記憶デバイスに記憶されてもよい。例として、限定ではないが、図３は、リモートアプリケーションプログラム３８５がメモリデバイス３８１上に存在するように示している。理解されるように、図示したネットワークコネクションは例示であり、コンピュータ間に通信リンクを確立する他の手段を使用してもよい。
【００７２】
［ＩＶ．システムコンポーネント］
図４は、図２に示した適応ＲＬＧＲ符号器２００のコンポーネントを示す全体ブロック図である。適応ＲＬＧＲ符号器は、入力として入力値（または値のストリング）４００を受け取る。次に、符号器モードセレクタ４０５を用いて、適応ＲＬＧＲ符号器２００の２つのモードのうちの１つを選択し切り替える。具体的には、図４に示すように、符号器モードセレクタ４０５は、ゴロム／ライス専用モードまたはランレングス・ゴロム／ライス符号器モードのいずれかを選択できる。ゴロム／ライス専用モードは、適応パラメータを有するゴロム／ライス符号器４１０のみを使用する。ランレングス・ゴロム／ライス符号器モードは、適応パラメータを有するランレングス符号器４１５と、適応ゴロム／ライス符号器４１０の両方を使用する。
【００７３】
上記の２つのモードのうちの１つを用いて入力値（またはストリング）４００を符号化することにより符号語４２０を得る。各入力値（またはストリング）４００の符号化後、入力データの統計値を追跡するように符号化パラメータを適応させる。適応ＲＬＧＲ符号器２００は、少なくとも２種類のパラメータを使用する。第１に、符号化モードパラメータを用いることにより、符号化モードがランレングス符号器を使用するかどうかを制御し、ランレングス符号器を使用する場合、ランレングス符号器をどのように使用するかを制御する。第２に、ゴロム／ライス（Ｇ／Ｒ）パラメータを両方のモードで用いることにより、（ａ）各入力値を符号化し（符号器がＧ／Ｒ専用モードにある場合）、（ｂ）０の不完全ランに続く数値を符号化する（符号器がＲＬＧＲモードにある場合）。これらのパラメータおよびこれらのパラメータの適応については以下で詳細に説明する。
【００７４】
後方適応技法を用いて符号化モードパラメータを更新するために符号化モードパラメータ適応モジュール４３０が用いられる。モジュール４３０は、更新された符号化モードパラメータ４３５を生成する。同様に、後方適応技法を用いて当初のＧ／Ｒモードパラメータを更新するためにゴロム／ライスパラメータ適応モジュール４４０が用いられる。これは、更新されたＧ／Ｒパラメータ４４５を生成する。符号化モードパラメータおよびＧ／Ｒパラメータの両方の適応については以下で詳細に説明する。パラメータを更新した後、次の入力値４５０が、更新した符号化モードパラメータ４３５および更新したＧ／Ｒパラメータ４４５を用いて適応ＲＬＧＲ符号器２００によって処理される。
【００７５】
［Ｖ．動作の概観］
次に、図２および図４に示した、適応ＲＬＧＲ符号器２００およびそこで用いられる方法の動作について説明する。図５は、適応ＲＬＧＲ符号器２００およびその方法の全体的動作を示す全体流れ図である。本方法はまず、符号化すべきディジタルデータを入力する（ボックス５００）。１つの試験した実施形態では、入力ディジタルデータは、整数値を要素とするベクトルの形式の整数データである。なお、各入力ディジタルデータ値は任意の整数値であってよく、特定の範囲（例えば、他のエントロピー符号器で一般的なように、２進数または符号付き２進数）に制限されない。次に、適応ＲＬＧＲ符号器の符号器モードを選択する（ボックス５１０）。このモードは、符号化モードパラメータの値に応じてＧ／Ｒ専用モードまたはＲＬ＋Ｇ／Ｒモードのいずれかであり得る。そして、選択された符号器が入力ディジタルデータを符号化する。
【００７６】
ディジタルデータは、ある値に初期化された符号化パラメータを用いて、選択されたモードで符号化される。しかし、入力ディジタルデータの統計値は変動し得るので、ＲＬＧＲ符号器２００は適応的である。この適応により、ＲＬＧＲ符号器２００は、入力ディジタルデータの統計値を追跡し、その統計値に迅速に適応し、より高い符号化効率を達成することができる。ＲＬＧＲ符号器２００およびその方法は、後方適応技法を用いて符号化パラメータを更新する（ボックス５２０）。符号パラメータのこの更新は、入力ディジタルデータのそれぞれの値または値のストリングが符号化された後に行われる。さらに、後方適応技法は新規な適応規則を含む。これについては以下で詳細に説明する。その後、符号化したディジタルデータを出力する（ボックス５３０）。次に、今説明した方法を用いて、入力ディジタルデータの次の値またはストリングが処理される。次の入力値またはストリングを符号化する際に、符号化パラメータの更新された値が用いられる。このプロセスを、すべてのディジタルデータが符号化ビットストリームへと符号化されるまで繰り返す。
【００７７】
図６は、図５に示した適応ＲＬＧＲ符号器およびその方法のさらなる詳細を示す流れ図である。具体的には、ディジタルデータの値またはストリングを入力として受け取る（ボックス６００）。次に、符号器モードを以下のモード、すなわち（ａ）Ｇ／Ｒ専用モード、および（ｂ）ランレングス・Ｇ／Ｒモード、のうちの１つとして選択する（ボックス６１０）。次に、選択した符号器モードを用いて入力値またはストリングを符号化する（ボックス６２０）。
【００７８】
入力値またはストリングを符号化した後、符号化パラメータを更新する。この適応プロセスはまず、分数適応パラメータを定義する（ボックス６３０）。分数適応パラメータは、最適なパラメータ値をより細かく追跡することができるように、符号化パラメータの適応を遅くするために用いられる。分数適応パラメータについては以下でさらに詳細に説明する。次に、新規な適応規則を含む後方適応技法を用いて、分数適応バージョンの符号化モードパラメータを更新する（ボックス６４０）。同様に、後方適応技法および新規な適応規則を用いてＧ／Ｒパラメータを更新する（ボックス６５０）。符号化した入力値またはストリングを符号化ビットストリームに付加し、符号化すべきディジタルデータから次の値またはストリングを入力する（ボックス６６０）。更新された符号化モードパラメータおよびＧ／Ｒパラメータを用いて、プロセスは再び次の値またはストリングの符号化を開始する。
【００７９】
［ＶＩ．動作の詳細］
次に、上記の図４、図５および図６の適応ＲＬＧＲ符号器２００およびその方法の動作の詳細を説明する。
【００８０】
［符号器モードセレクタ］
図７は、図４に示した適応ＲＬＧＲ符号器２００およびその方法の符号器モードセレクタ４０５の動作の詳細流れ図である。概して、符号器モードセレクタ４０５は、符号化モードパラメータの値に基づいて２つの符号器モードの間で選択および切替を行う。符号器モードの選択は、ディジタルデータの１つの値またはストリングが符号化され符号化パラメータが更新された後に行われる。
【００８１】
プロセスはまず、初期符号化モードパラメータ（ボックス７０５）および符号化すべき入力値（またはゼロのストリング）（ボックス７１０）を入力として受け取る。符号化モードパラメータの値がゼロに等しいかどうかを判断する（ボックス７１５）。ゼロに等しい場合、符号化モードはＧ／Ｒモードである。そうでない場合、符号化モードはＲＬＧＲモードである。
【００８２】
Ｇ／Ｒモードでは、適応Ｇ／Ｒ符号器を用いて入力値を符号化する（ボックス７２０）。この適応Ｇ／Ｒ符号器は、Ｇ／Ｒパラメータのために後方適応的な適応規則を使用するＧ／Ｒ符号器である。ＲＬＧＲモード（これは、符号化モードパラメータがゼロよりも大きいことを意味する）では、入力値がゼロのランを含むことが高い確率で期待できる。ゼロのランが完全ランであるかそれとも不完全ランであるかを判断する（ボックス７２５）。ランは、互いに隣接する同じ値のストリングとして定義される。完全ランは、２の符号化モードパラメータ乗に等しい個数のゼロを有するランとして定義される。例えば、符号化モードパラメータが３に等しい場合、２3＝８である。したがって、この例では、完全ランは８個のゼロからなるランである。
【００８３】
ランが完全ランである場合、適応ランレングス符号器を用いて、入力値ストリングを符号語＝０として符号化する（ボックス７３０）。すなわち、完全ランはゼロという符号語で表される。上記の例では、８個のゼロからなるストリング（これは完全ストリングを表す）が符号語＝０で表される。ランが不完全ランである場合、入力値ストリングは、ランが不完全であること、不完全ラン内のゼロの個数、および不完全ランの直後の値を復号器に知らせるように符号化される。具体的には、適応ランレングス符号器を用いて、符号語＝１で表される不完全ランとして入力値ストリングを符号化する（ボックス７３５）。これは、復号器に対して、ランが不完全ランであることを通知する。次に、符号化した入力値ストリングに不完全ランの長さを追加する（ボックス７４０）。この符号化値は不完全ランの長さを表す。例えば、不完全ランが４個のゼロからなる場合、値４（あるいは２進記法で「１００」）を符号化ビットストリームに追加し、ランレングスが４に等しいことを復号器に知らせる。
【００８４】
あと符号化すべき情報として残っているのは、不完全ランの直後の値だけである。適応Ｇ／Ｒ符号器を用いて、不完全ランの直後の値を符号化する（ボックス７４５）。適応Ｇ／Ｒ符号器を用いる際にはＧ／Ｒパラメータを用いる。最後に、符号化した入力値（符号化モードがＧ／Ｒモードである場合）または符号化した入力値ストリング（符号化モードがＲＬＧＲモードである場合）を出力する（ボックス７５０）。
【００８５】
［符号化モードパラメータ適応モジュール］
図８は、図４に示した適応ＲＬＧＲ符号器２００およびその方法の符号化モードパラメータ適応モジュール４３０の動作の詳細流れ図である。概して、符号化モードパラメータ適応モジュール４３０は、後方適応技法を用いて初期符号化モードパラメータを更新する。更新は、ディジタルデータのそれぞれの値またはストリングが符号化された後に実行される。後方適応技法は、新規な適応規則を用いて符号化モードパラメータを更新する。
【００８６】
プロセスはまず、初期符号化モードパラメータ（ボックス８０５）および符号化すべき入力値（ボックス８１０）を入力として受け取る。次に、符号化モードパラメータがゼロに等しいかどうかを判断する（ボックス８１５）。ゼロに等しい場合、符号化モードはＧ／Ｒ専用モードであり、そうでない場合、符号化モードはＲＬＧＲモードである。
【００８７】
Ｇ／Ｒ専用モードの場合、入力値の絶対値がゼロに等しいかどうかを判断する（ボックス８２０）。ゼロに等しい場合、現在のスケーリングされた符号化モードパラメータを第１の整数定数だけ増加させる（ボックス８２５）。そうでない場合、現在のスケーリングされた符号化モードパラメータを第２の整数定数だけ減少させる（ボックス８３０）。
【００８８】
ＲＬＧＲモードの場合、その値のストリング内のゼロのランが完全ランであるかそれとも不完全ランであるかを判断する（ボックス８３５）。ランが完全ランである場合、現在のスケーリングされた符号化モードパラメータを第３の整数定数だけ増加させる（ボックス８４０）。ランが不完全ランである場合、現在のスケーリングされた符号化モードパラメータを第４の整数定数だけ減少させる（ボックス８４５）。
【００８９】
現在のスケーリングされた符号化モードパラメータを更新した後、現在の符号化モードパラメータを、更新した符号化モードパラメータで置き換える（ボックス８５０）。これは、スケーリングされた符号化モードパラメータを一定のスケーリングファクタで除算し、結果の整数部分を残すことによって得られる。適応は、スケーリングされた符号化モードパラメータを整数刻みで調整するので、実際の符号化パラメータはあたかも分数刻みで適応するかのように振る舞う。これは「分数適応」と呼ばれ、これにより、適応の速度のより細かい制御が可能となる。その後、最終的な更新した符号化モードパラメータを出力する（ボックス８５５）。再び、それぞれの入力値またはストリングを符号化した後、現在のスケーリングされた符号化モードパラメータを更新する。そして、次の入力値またはストリングの符号化において、更新した符号化モードパラメータを用いる。
【００９０】
［ゴロム／ライス（Ｇ／Ｒ）パラメータ適応モジュール］
図９は、図４に示した適応ＲＬＧＲ符号器２００およびその方法のゴロム／ライス（Ｇ／Ｒ）パラメータ適応モジュール４４０の動作の詳細流れ図である。概して、Ｇ／Ｒパラメータ適応モジュール４４０は、新規な適応規則を有する後方適応技法を用いて初期Ｇ／Ｒパラメータを更新する。更新は、ディジタルデータのそれぞれの値またはストリングが符号化された後に実行される。
【００９１】
動作はまず、初期Ｇ／Ｒパラメータ（ボックス９０５）および適応値（ボックス９１０）を入力として受け取る。適応値の計算については後述する。次に、適応値がゼロに等しいかどうかを判断する（ボックス９１５）。ゼロに等しい場合、適応規則は、スケーリングされたＧ／Ｒパラメータを第５の整数定数だけ減少させることである（ボックス９２０）。
【００９２】
適応値がゼロに等しくない場合、適応値が１に等しいかどうかを判断する（ボックス９２５）。１に等しい場合、適応規則は、スケーリングされたＧ／Ｒパラメータを変えずに据え置く（ボックス９３０）。１に等しくない場合、適応規則は、スケーリングされたＧ／Ｒパラメータを適応値だけ増加させることである（ボックス９３５）。
【００９３】
Ｇ／Ｒパラメータを適応させた後、現在のＧ／Ｒパラメータを、更新したＧ／Ｒパラメータで置き換える（ボックス９４０）。これは、スケーリングされたＧ／Ｒモードパラメータを一定のスケーリングファクタで除算し、結果の整数部分を残すことによって得られる。適応は、スケーリングされたＧ／Ｒモードパラメータを整数刻みで調整するので、実際のＧ／Ｒパラメータはあたかも分数刻みで適応するかのように振る舞う。これも「分数適応」の一例であり、これにより、適応の速度のより細かい制御が可能となる。もちろん、Ｇ／Ｒパラメータを変えずに据え置く場合（ボックス９３０）、実行すべき更新はなく、現在のＧ／Ｒパラメータは同一である。最後に、更新したＧ／Ｒパラメータを出力する（ボックス９４５）。
【００９４】
図１０は、適応値計算モジュール１０００の動作の詳細流れ図である。図７および図９も参照すると、適応値計算モジュール１０００は、図９の流れ図への入力である適応値（ボックス９１０）を生成する。動作はまず、２つの入力、すなわち、現在のＧ／Ｒパラメータ値（ボックス１００５）と、図７のゴロム／ライス符号器（ボックス７２０および７４５）への入力値（ボックス１０１０）とを受け取る。次に、入力値をＧ／Ｒパラメータの値の桁数だけ右にシフトする（ボックス１０２０）。結果として得られた値が適応値であり、その後出力される（ボックス１０３０）。
【００９５】
［ＶＩＩ．実施例］
本明細書に開示される適応ＲＬＧＲ符号器およびその方法をさらに良く理解するため、例示的な実施例の動作の詳細を説明する。なお、本実施例は、適応ＲＬＧＲ符号器およびその方法を実施し得る単なる１つの方法に過ぎないことに留意されたい。
【００９６】
ランレングス・ゴロム／ライス（ＲＬＧＲ）符号器およびその方法は、前掲の特許文献２に開示されたＰＴＣエントロピー符号器の拡張である。しかし、特許文献２のＰＴＣエントロピー符号器は、２進データ（通常、整数データのビットプレーン）を符号化するために用いられる。本明細書に開示される適応ＲＬＧＲ符号器およびその方法は、任意の入力値を有する整数データを符号化できる。すなわち、本明細書に開示される適応ＲＬＧＲ符号器およびその方法は、任意のアルファベットのデータを符号化できる。なお、本明細書に開示されるＲＬＧＲ符号器およびその方法は、データがゼロのランを含む可能性が高い場合のほうが効率的であるが、ランに現れる可能性がより高くなり得る任意の他の値のランに対応するように上記の符号化動作を変更するのは些細なことであることも留意されたい。
【００９７】
本明細書に開示されるＲＬＧＲ符号器およびその方法の１つの利点は、ＰＴＣエントロピー符号器とは異なり、入力データの可能な最大値を知る必要がないことである。むしろ、ＲＬＧＲ符号器およびその方法は、いかなる大きさであれ、任意のサイズの入力値を処理できる。このことはすなわち、ＲＬＧＲ符号器は入力データが図１に示したようなラプラス分布を有することを仮定しており、突然大きい数値が入力データに現れると、ＲＬＧＲ符号器およびその方法はその大きい数値を符号化できる、ということである。その大きい数値を符号化するためには、より小さい数値よりも多くのビット数を用いることになるが、その大きい数値は符号化される。しかし、多くのビット数を用いるという代償は、大きい数値が現れる時にその大きい数値のみに対して払われ、他のあらゆる値に対してそうなるわけではない。これは、以下で述べる新規なモード選択および適応規則によるものである。
【００９８】
ＰＴＣエントロピー符号器では、入力データを受け取り、それをビットプレーンに分解してから、各ビットプレーンをＧ／Ｒ符号器で符号化する。本明細書に開示される適応ＲＬＧＲ符号器およびその方法では、Ｇ／Ｒ符号器がラプラス分布のデータを直接処理するように拡張される。これは、適応ＲＬＧＲ符号器およびその方法が１パス符号化を用いることにより、ＰＴＣエントロピー符号器よりも大幅に高速になるという利点を有する。
【００９９】
ＰＴＣエントロピー符号器の入力データは、小さい数値のほうが現れやすいラプラス分布を有する。時には、小さい数値が現れる可能性のほうが非常に高いので、ビットストリームの特定の部分については、ゼロのランを符号化するほうがより効率的となる。しかし、ＰＴＣエントロピー符号器は、データを選び出し、最上位ビットプレーンに対して１パスを実行し、戻って次のビットプレーンで１パスを実行する。例えば、データが１６ビットであれば、まずビット＃１６に対してパスを実行し符号化する。もちろんほとんどのデータはゼロとなる。というのは、そのビットは非常に大きい数値に対してのみ分離し、後はそのまま下位に進むからである。ビット＃５、４、３、２、および１に達すると、これらのビットは多数の０および１を有する。これは、それらを符号化しても全く無駄なところまで達していることを意味する。通常、最下位ビットは極めてランダムなので、そのビットを符号化するのに１ビットを使用しなければならない。すなわち、各入力ビットを出力に直接コピーする。ＰＴＣエントロピー符号器の問題点は、ビットプレーン単位の符号化がデータにおいて数回のパスを必要とすることである。特に、ＰＴＣエントロピー符号器は、最上位ビット、その次のビット、さらにその次のビットというように符号化をしなければならない。明らかにこれは要する時間が大幅に長くなり、場合によってはＰＴＣエントロピー符号器は、本明細書に開示される適応ＲＬＧＲ符号器およびその方法よりも１．５〜３倍も遅い。
【０１００】
［符号器モードの選択］
図１１は、適応ＲＬＧＲ符号器およびその方法の符号器モードを選択することの詳細を例示する実施例である。プロセスが開始されると（ブロック１１０５）、まず、要素ｘ（ｎ）（ｎ＝０，１，...，Ｎ−１）を有する入力ベクトル読み出す（ボックス１１１０）。本実施例では、入力ベクトルは図１に示したラプラス分布と同様の確率分布を有する。確率分布は単一のパラメータで表され、このパラメータは指数関数の減衰率である。図１に示したラプラス分布の減衰は適度に速い。実際には、減衰は一般に、より速いことも遅いこともあり得る。減衰率が高いほど、値がゼロに等しい可能性が高くなる。
【０１０１】
適応ＲＬＧＲ符号器およびその方法は、整数の効率的な符号化に有用である。具体的にはこれは、効率的に符号化する必要のある整数値からなるベクトル（またはバッファ）がある場合に行われる。典型的には、この整数データは、小さい数値のほうが大きい数値よりも現れる可能性がはるかに高い。そして、データの確率分布の減衰率が十分に高い（これは、指数関数が急速に減衰することを意味する）ので、このことはゼロがより一層生じやすくなることを意味する。この場合、ゼロのランを符号化するのが良い考えである。
【０１０２】
本実施例では、符号化されるデータ（あるいは入力データ）が元のマルチメディアデータではないので、入力データは図１に示した理想と同様の確率分布を有する。例えば、オーディオファイルの場合、適応ＲＬＧＲ符号器およびその方法は各オーディオサンプルに直接には適用されない。同様に、ピクチャファイルの場合、適応ＲＬＧＲ符号器およびその方法は各画素値に適用されるのではない。その代わりに、多くのアプリケーション（オーディオおよびイメージ符号化を含む）では、データの何らかのモデルがある。これは、データがどのようであるはずかについて合理的な推測を行う何らかの予測子が利用可能であることを意味する。そこで、予測誤差を入力データとすることができ、符号化されるのは予測誤差となる。予測誤差は実際の値と予測値の差である。さらに、データのモデルが合理的であれば、予測誤差がゼロとなる可能性がはるかに高くなる。しかし、良好なモデルでも、時には大きい値を有する可能性がある。これは、例えば画素値が背景値から前景値になるというように、ある境界に達した時に起こり得る。すなわち、図１に示したような確率分布でも時々大きい数値が生じ得る。他のマルチメディア符号化アプリケーションでは、元のデータ値（例えばオーディオサンプルや画素）が変換オペレータによって変換される。その目的は、少数の大きい値の変換係数と、多数の小さい値の変換係数に情報を集中させることである。その後これらの係数を量子化する（最も近い整数に丸める）。こうして、すべての量子化された変換係数が１つのベクトルとして読み取られる時、そのベクトルの要素は小さい値である可能性が高くなるので、本明細書に開示される適応ＲＬＧＲ符号器およびその方法による圧縮に非常に適している。
【０１０３】
また、適応ＲＬＧＲ符号器およびその方法は無損失である。無損失圧縮とは、入力データをより小さいサイズに圧縮した後に復号化すると、元と厳密に同じ入力データの値が回復されることを意味する。これに対して有損失圧縮では、元の入力データと厳密に同じ値が回復されない。オーディオおよびビデオ圧縮は有損失圧縮を用いることができる。しかし、これらの有損失圧縮技法の多くでは、データに対して変換または予測子を生成する。その後、変換または予測子を量子化する。これは、それらを最も近い整数に丸めることを意味する。いったんこれらの整数が得られた後は、無損失圧縮が用いられることが多い。これは、マルチメディア用のほとんどの有損失コーデックが通常、量子化された予測または変換オペレータの整数値を符号化するための無損失符号器部分を有することを意味する。これらの整数値を符号化するために、適応ＲＬＧＲ符号器およびその方法を用いることができる。通常、これらの各整数値は対応する確率分布関数（ＰＤＦ）を有する。このＰＤＦは、モデルが良好であればほとんどの場合に予測誤差がゼロに近いはずであるという意味で、図１の確率分布と類似している。
【０１０４】
図１１を参照すると、次に、符号化パラメータ｛ｓ，Ｓ｝および｛ｋ，Ｋ｝を初期化する（ボックス１１１５）。そして、カウンタｎと、ｒｕｎをゼロにセットする（ボックス１１２０）。本実施例では、ｓは符号化モードパラメータ、Ｓはスケーリングされた符号化モードパラメータ、ｋはＧ／Ｒパラメータ、そしてＫはスケーリングされたＧ／Ｒパラメータである。概して、ｓは符号化モードと、どのようにランレングス符号器を使用するかとを制御し、ｋはＧ／Ｒ符号器を制御する。パラメータｓ＝Ｓ／Ｌであり、ここでＬはスケーリングパラメータである。本実施例では、Ｌは、２のべき乗である１６に等しい。これにより、除算は単にシフトをすることで実行できる。
【０１０５】
適応ＲＬＧＲ符号器およびその方法は、２つの異なる符号化モードを有する。第１の符号化モードは、ランレングス符号化なしで、ゴロム／ライス（Ｇ／Ｒ）符号化のみを実行する。このＧ／Ｒ専用モードは、ゼロがデータに現れる可能性がそれほど高くないため、ゼロのランがそれほど頻繁に現れない場合に適用される。第２の符号化モードは、ランレングス符号化とＧ／Ｒ符号化とを実行する。このＲＬＧＲ符号化モードは、ゼロのランが入力データに現れる可能性が非常に高いため、ゼロのランを符号化することでビット数が節約される場合に用いられる。このように２つの異なる符号化モードがあり、適応ＲＬＧＲ符号器およびその方法は、符号化モードパラメータｓの値に基づいて各符号化モードの間で自動的に選択および切替を行う。
【０１０６】
ｓがゼロに等しいかどうかを判断する（ボックス１１２５）。ゼロに等しい場合、符号化モードはＧ／Ｒ専用モードである。この場合、適応Ｇ／Ｒ符号器を用いて入力データｘ（ｎ）を符号化する（ボックス１１３０）。ｓがゼロに等しくない場合、符号化モードはＲＬＧＲモードである。この場合、適応ランレングス符号器および適応Ｇ／Ｒ符号器の両方を用いて入力データｘ（ｎ）を符号化する（ボックス１１３５）。次に、ｎをｎ＋１で置き換え（ボックス１１４０）、ｎがＮに等しいかどうかを判断する（ボックス１１４５）。Ｎに等しくない場合、プロセスは再び新たなｘ（ｎ）で開始される（ポイント１１５０）。Ｎに等しい場合、出力ビットストリームを書き出し（ボックス１１５５）、与えられた入力データに対するプロセスが終了する（ボックス１１６０）。
【０１０７】
［符号化規則］
適応ＲＬＧＲ符号器およびその方法は、符号化モードパラメータｓおよびＧ／Ｒパラメータｋに基づく新規な符号化規則を使用する。表２は、適応ＲＬＧＲ符号器およびその方法が整数値ｘを２進ビットストリームに写像するための符号化規則を示している。表２から分かるように、符号はパラメータ｛ｓ，ｋ｝によって制御される。パラメータｓは主な動作モード（Ｇ／Ｒ専用か、それともランレングス＋ＧＲか）を制御し、パラメータｋはＧ／Ｒ符号器を制御する。
【０１０８】
【表２】
2006129467.tif 000008
【０１０９】
本実施例では、写像値ｕが定義される。適応ＲＬＧＲ符号器およびその方法の入力値ｘは正でも負でもあり得る。入力値ｘはｕ値に写像されるが、ｕは正のみである。したがって、符号付きの入力値ｘが符号なしの等価な表現ｕに変換される。式４は、ｘからｕへの写像を示している。具体的には、この写像によれば、０は０に写像され、−１は１に写像され、１は２に写像され、−２は３に写像され、２は４に写像され、等となって、ｕ値は常に正である。これは、Ｇ／Ｒテーブル（表１）が使用可能となるように行われる。というのは、Ｇ／Ｒテーブルは非負値のみに対するものだからである。この写像により、適応ＲＬＧＲ符号器およびその方法は任意の入力アルファベットが処理可能となる。すなわち、Ｇ／Ｒテーブル（これは任意の入力数値を処理できる）を使用するので、入力アルファベットは無限となり、適応ＲＬＧＲ符号器およびその方法は任意のサイズの数値入力を処理できる。適応ＲＬＧＲ符号器およびその方法は、オペレーティングシステムが処理可能な数値のサイズによってのみ制限される。なお、実際には、Ｇ／Ｒ符号化テーブル（表１）はメモリに記憶される必要はないことに留意されたい。容易に分かるように、テーブルエントリは、ｕおよび符号化パラメータｋの任意の値に対して符号語を容易に計算できるような構造を有する。
【０１１０】
与えられたｕデータに対して、表２は、パラメータｓおよびｋが既知である限りチャネルを伝わる符号を示している。表２の規則は、符号器がどのように符号化を行うかを正確に定義している。これは、復号器が表２の同じ規則を用いて符号化データを回復（すなわち復号化）できることを意味する。
【０１１１】
Ｇ／Ｒ専用モード（これはｓ＝０を意味する）では、表２は、入力値ｘの写像値ｕが、適応Ｇ／Ｒ符号器と、表１によって例示されるＧ／Ｒ符号化規則とを用いて符号化されることを示している。したがって、ｘを符号化するために用いられる符号語はｕおよびｋの値に基づく。Ｇ／Ｒパラメータｋは、以下で詳細に説明するように、後方適応技法を用いて更新される。
【０１１２】
ＲＬＧＲモード（これはｓ＞０を意味する）では、入力データは、ｒ個の値ｘ＝０のランとみなされる。表２のＲＬＧＲモードを見ると、ある場合（第２行）では、入力データは、２s個のｘ＝０という値のランである。これは完全ランと呼ばれる。例としてｓ＝３と仮定する。入力データが連続する２3＝８個のゼロである場合、表２の規則を用いてそのランを０に等しい１ビットとして符号化する。すなわち、８個のゼロからなるラン全体が、値が０である１ビットに写像される。復号器は、０を読み出すと、それを２s個のゼロのストリングへと復号化しなければならないことを知る。この状況において最大圧縮が達成される。本発明によって達成される全体的圧縮は、このＲＬＧＲモードとＧ／Ｒモードの平均である。
【０１１３】
入力データが２s個より少ないゼロからなるランを有する場合、そのランは不完全ランである。表２の第３行を参照すると、入力データに例えば連続する７個の（すなわち２sより少ない）ゼロしかない場合、符号語は０とはなり得ない。というのは、０は連続する８個のゼロすなわち完全ランを意味するからである。そこで、代わりに符号語は１から始まる。これは復号器に対して、不完全ランが後続することを知らせる。次に、符号語は不完全ランの長さの２進表現を含む。この２進表現はｓビットを使って不完全ランの長さｒを指定する。
【０１１４】
例えば、ｒ＝７、したがって不完全ランが７個のゼロを有すると仮定する。その場合、符号語はまず「１」から始まり、これにより復号器に対して不完全ランが後続することを知らせる。この例ではｓ＝３なので、（３ビットあれば０と７の間の数を表せるから）不完全ランの長さとなり得るのは０と７の間の数だけである。すなわち、ｒを表現するためには、ｓビットより大きいビット数を要することはない。したがって、１１１（２進数の７）に等しい３ビットを含むように符号語が付加される。すると復号器は、ランが不完全ランであり、ランレングスが７個のゼロであることを知る。
【０１１５】
次に、不完全ランの直後に来る値が何かを示す符号語が付加される。不完全ランの後に来るこの値は、適応Ｇ／Ｒ符号器からの符号語によって表される。表２に示したように、まず、式４を用いて不完全ランの後の値を写像する。次に、適応Ｇ／Ｒ符号器を用いて、｛ｕ，ｋ｝の関数であるＧ／Ｒ符号を得る。表２の右下ブロックの一番下に、不完全ランを符号化するために用いられる符号語全体が、符号＝１＋ｂｉｎ（ｒ，ｓ）＋ＧＲ（ｕ，ｋ）と示されている。ここで、ｂｉｎ（ｒ，ｓ）は、不完全ランの長さｒをｓビットで表した２進表現であり、ＧＲ（ｕ，ｋ）は、不完全ランの直後の値を表現する、表１によって与えられるＧ／Ｒ符号である。
【０１１６】
［分数適応］
分数適応はｓおよびｋの代わりにＳおよびＫを用いる。分数適応は、適応を遅くするための１つの方法である。分数適応なしで適応ＲＬＧＲ符号器およびその方法を用いることも可能である。しかし、分数適応がないと、適応は通常あまりに急激に変化するため、一般に、入力データに対する最適なパラメータを正しく追跡することができない。
【０１１７】
本実施例では、ｓおよびｋパラメータの適応は、スケーリングされたＳおよびＫパラメータを用いて実行される。そこで、ｓおよびｋの代わりにＳおよびＫを更新する。ｓとＳおよびｋとＫの間の関係は、ｓ＝Ｓ／Ｌおよびｋ＝Ｋ／Ｌである。ここで、Ｌは上記で説明したスケーリングパラメータである。したがって、適応を実行すると、Ｓの値が適応を受け、ＳをＬで除算することでｓの値が得られる。なお、すべての値が整数なので、ｓ＝Ｓ／Ｌは、結果の整数部分を意味する。また、一定のスケーリングパラメータＬは２のべき乗に等しい値とされ（例えばＬ＝１６）、その場合、Ｌによる除算はシフト演算子により効率的に実行できることも想起されたい。
【０１１８】
分数適応が好ましいのは、適応ＲＬＧＲ符号器およびその方法が、生成される各符号に対してパラメータ（ｓおよびｋ）の調整をするためである。すなわち、１つの入力値またはストリングを符号化した後に適応規則を適用する。ｓおよびｋを整数値変化により直接適応させると、それらが整数値であるため、できることは同一に留まるか少なくとも１だけ増減するかになる。ここで、入力データが大きくなりつつあると仮定する。これは、パラメータを大きくしなければならないことを意味する。ｓを例えば１だけ増加させると大きすぎる可能性がある。例えば、ｓ＝３の場合、８個のゼロからなるランが符号化されている。ｓを１だけ増加させると、ｓは４に等しくなるが、今度は１６個のゼロからなるランが単一の符号語＝０により符号化されることを意味する。８から１６へのこの跳びはやや大きい場合がある。次のストリングを符号化する時、ｓが大きすぎると判断すれば、ｓを３に減少させることになる。しかし、これは小さすぎるかもしれず、ｓが振動することになる。
【０１１９】
分数適応により、ｓの分数インクリメントが可能となる。例えば、ｓを１ではなく０．５だけ増加させることができれば良い。しかし、ｓは整数パラメータなのでこれは許されない。そこで、分数適応はＳの整数インクリメントを実行し、ＳをＬで除算することで、ｓの分数インクリメントを行う。例えば、Ｌ＝１６、ｓ＝３と仮定する。これはＳ＝４８を意味する。入力データが非常に小さくなった場合、Ｓを増加させれば良い。次回にＳを４８から５２に増加させ、１６で割ると、ｓは依然として３であるが、Ｓは５２である。次も小さい入力データが来た場合、Ｓを５２から６４に増加させれば、Ｓ＝６４で、ｓ＝４となる。このように、小さい入力データが来たからといって直ちにｓを４に上げるのではなく、入力データの値の減少を見てｓ＝３からｓ＝４になるまでに２回かかっている。これにより、パラメータｓおよびｋが振動しないことが保証される。
【０１２０】
分数適応を用いる代わりに、データの増減がある場合にある特定の符号化サイクル数を経過してからパラメータを増減させるようなフラグを定義することも可能である。符号化サイクル数を追跡する新たなパラメータを定義することもできる。すなわち、このパラメータは、パラメータが変化する前に条件（入力データの増加または減少）が何回発生すべきかを追跡する。しかし、この技法を試みたが、分数適応のほうが優れた結果になったことに留意されたい。
【０１２１】
［符号化モード（ｓ）パラメータの適応］
符号化モードパラメータｓは、それぞれの入力値またはストリングが符号化された後で適応を行う。分数適応を用いる場合、ｓを直接適応させるのではなく、実際には分数符号化モードパラメータＳを適応させる。表３は、符号化モードパラメータｓの適応規則を示している。適応後、ｓの値をｓ＝Ｓ／Ｌとする。ここでＬはスケーリングパラメータである。本実施例では、Ｌは２のべき乗に等しいので、除算が右シフトで実行される。本実施例ではＬ＝１６である。
【０１２２】
【表３】
2006129467.tif 000009
【０１２３】
表３の上段は、符号器がＧ／Ｒ専用モードにある場合のｓの適応規則を与えている。符号化すべきシンボルｘの大きさが０に等しい場合、パラメータｓをＡ１という第１の整数定数だけ増加させる。左向き矢印（←）は、ＳをＳ＋Ａ１で置き換えることを意味する。ｘの絶対値が０よりも大きい場合、パラメータｓをＢ１という第２の整数定数だけ減少させる。整数定数Ａ１およびＢ１は、ｓをどのくらい上下に調整すべきかを示す増分および減分である。
【０１２４】
表３の下段は、符号器がＲＬＧＲモードにある場合のｓの適応規則を与えている。ランが完全ランである場合（これは、ランがｘ＝０の値を２s個含むことを意味する）、パラメータｓを第３の整数定数Ａ２だけ増加させる。これに対して、ランが部分的（不完全）ランである場合（これは、ランが２sよりも少ない個数のゼロを含み、その後にゼロでないｘの値が続くことを意味する）、パラメータｓを第４の整数定数Ｂ２だけ減少させる。それぞれの入力値またはストリングを符号化した後に、これらの適応規則を用いて、パラメータｓ（あるいは分数適応を用いている場合はＳ）を更新する。
【０１２５】
表３に記載の適応規則を用いることにより、入力データの確率モデルがそれとなく（implicitly）測定されている。実際、まず確率を測定してからパラメータを適応させようとする代わりに、パラメータを直接変化させている。本実施例では、以下の値が優れた結果を達成することが分かった：Ｌ＝１６、Ａ１＝３、Ｂ１＝３、Ａ２＝４、Ｂ２＝６およびＢ３＝２。Ａ１、Ｂ１、Ａ２およびＢ２の適当な値を用いると、適応ＲＬＧＲ符号器およびその方法が実際に従来技術よりも高速に入力データの統計値の変化を追跡することが観察された。この理由は、従来技術はまず全体の統計モデルを測定してからＧ／Ｒパラメータのようなパラメータを調整するからである。従来技術はこうしているのは、妥当な確率推定値を計算するためには大量のデータが必要なためである。利用可能なデータは現在復号化されている値および前に復号化された値だけである。これは、確率推定値が正確であるためには、確率推定を行いＧ／Ｒパラメータを求めることができる前に大量のデータを使用しなければならないことを意味する。すなわち、符号化プロセスには遅延がある。例えば、オーディオファイルを符号化する場合、入力データの変化を検出する際に遅延が存在する。これは、ある期間の間、Ｇ／Ｒパラメータが入力データと不整合であることを意味する。すなわち、従来技術の方法よりも、表３（ｓパラメータに対する）および下記の表４（ｋパラメータに対する）に示す適応規則のほうがはるかに高速であり、入力データの統計値にはるかに迅速に適応する。実際、このこと、すなわち入力データの統計値への高速な適応は、従来技術に比べて大きな利点である。
【０１２６】
［ゴロム／ライス専用モード］
図１２は、Ｇ／Ｒ専用モードの符号化の詳細と、付随する符号化モードパラメータｓの適応を例示する実施例である。プロセスが開始されると（ブロック１２０５）、まず、入力ベクトルｘ（ｎ）を読み出す（ボックス１２１０）。Ｇ／Ｒ専用モードの２つの主要なプロセスとして、シンボル符号化（ボックス１２１５）および符号化モードパラメータ適応（ボックス１２２０）がある。シンボル符号化プロセスは、まず、表２にＧ／Ｒ専用モードについて示されているように、写像値ｕを定義する（ボックス１２２５）。次に、適応Ｇ／Ｒ符号器を用いて入力値を符号化する（ボックス１２３０）。なお、適応Ｇ／Ｒ符号器は、図１４に示すようにＧ／Ｒパラメータｋの適応を使用する。シンボル符号化プロセスは、Ｇ／Ｒ符号を出力符号化ビットストリームに付加（ボックス１２３５）して終了する。
【０１２７】
符号化モードパラメータ適応プロセスは、まず、ｕの値がゼロに等しいかどうかを判断する（ボックス１２４０）。ｕがゼロに等しい場合、Ｓを第１の整数定数Ａ１だけ増加させてＳを更新し置き換える（ボックス１２４５）。ｕがゼロに等しくない場合、Ｓを第２の整数定数Ｂ１だけ減少させてＳを更新し置き換える（ボックス１２５０）。最後に、ｓをＳ割るＬに等しいと置き（ボックス１２５５）、プロセスは終了する（ボックス１２６０）。
【０１２８】
［ＲＬＧＲモード］
図１３は、ＲＬＧＲモードの符号化の詳細と、付随する符号化モードパラメータｓの適応を例示する実施例である。プロセスが開始されると（ブロック１３０５）、まず、入力ベクトルｘ（ｎ）を読み出す（ボックス１３１０）。今度も、ＲＬＧＲモードの２つの主要なプロセスとして、シンボル符号化（ボックス１３１５）および符号化モードパラメータ適応（ボックス１３２０）がある。しかし今度は、シンボル符号化プロセスは、適応ランレングス符号器および適応Ｇ／Ｒ符号器を用いて入力値ｘ（ｎ）を符号化する。
【０１２９】
シンボル符号化プロセスは、まず、ｘの値がゼロに等しいかどうかを判断する（ボックス１３２５）。ｘの値がゼロに等しい場合、ｒｕｎをｒｕｎ＋１で置き換える（ボックス１３３０）。次に、ｒｕｎ＝２sであるかどうかを判断する（ボックス１３３５）。すなわち、ランが完全ランかそれとも不完全ランかを調べる。ランが不完全ランである場合、プロセスは終了する（ポイント１３４０）。ランが完全ランである場合、ｂｉｔ＝０をビットストリームに付加する（ボックス１３４５）。そして、ｒｕｎの値をゼロに等しいと置く（ボックス１３５０）。
【０１３０】
ｘの値がゼロに等しくない場合（ボックス１３２５）、ｂｉｔ＝１をビットストリームに付加する（ボックス１３５５）。次に、ｒｕｎのｓビット２進値（すなわち不完全ランの長さをｓビットで表したもの）をビットストリームに付加する（ボックス１３６０）。そして、適応Ｇ／Ｒ符号器を用いて不完全ランの後の値を符号化する。具体的には、写像値ｕを定義し（ボックス１３６５）、適応Ｇ／Ｒ符号器を用いてその値を符号化し、そのＧ／Ｒをビットストリームに付加する（ボックス１３７０）。なお、この場合も、適応Ｇ／Ｒ符号器は、図１４に示すようなＧ／Ｒパラメータｋの適応を使用する。シンボル符号化プロセスは、ｒｕｎをゼロに等しいと置く（ボックス１３８０）ことで終了する。
【０１３１】
符号化モードパラメータ適応プロセスは、ｘの値がゼロに等しい場合（ボックス１３２５）、Ｓを第３の整数定数Ａ２だけ増加させてＳを更新し置き換える（ボックス１３８５）。ｘの値がゼロに等しくない場合（ボックス１３２５）、Ｓを第４の整数定数Ｂ２だけ減少させてＳを更新し置き換える（ボックス１３９０）。最後に、ｓをＳ割るＬに等しいと置き（ボックス１３９５）、プロセスは終了する（ボックス１３９８）。前述のように、Ｌの値を２のべき乗に選択すれば、Ｌによる除算はシフト演算で実行できる。
【０１３２】
［ゴロム／ライス（ｋ）パラメータの適応］
Ｇ／Ｒパラメータｋは、それぞれの入力値またはストリングが符号化された後で適応を行う。分数適応を用いる場合、ｋを直接適応させるのではなく、実際には、スケーリングされたＧ／ＲパラメータＫを適応させる。表４は、Ｇ／Ｒパラメータｋの適応規則を示している。値ｕを符号化した後、適応は、ｐ＝ｕ＞＞ｋ（これは、ｕを右にｋ桁シフトすることを意味する）という適応値によって制御される。適応後、ｋの値をｋ＝Ｋ／Ｌとする。ここでＬは定数である。本実施例ではＬ＝１６である。
【０１３３】
【表４】
2006129467.tif 000010
【０１３４】
表１のＧ／Ｒ符号はパラメータｋに依存する。例えば、不完全ランの後の値が１３である場合、１３に対するＧＲ符号は「１１１１１１１１１１１１０」（ｋ＝０の場合）であり、ｋ＝１の場合は「１１１１１１０１」である。ｋが大きいほど、１３を表す数値は小さくなる。また、ｋが小さいほど、１３を表す数値は大きくなる。したがって、パラメータｋが既知でなければならない。これは、適応ＲＬＧＲ符号器およびその方法は、ｓおよびｋの良い値を選択する場合にうまく働くことができることを意味する。しかし、大きいｋの値を用いることが常に有利というわけではない。というのは、そうすると、表１に示したように、より小さい入力データの値に対してストリングが長くなるからである。すなわち、ｋの値の良好な選択は入力データに依存する。値が１３である場合、大きいｋの値を用いるのは良い考えである。しかし、不完全ランの後の値が「１」であるとすると、より小さいｋの値が望ましい。したがって、不完全ランの後の値が小さい場合には小さいｋを使用するほうが良く、値が大きい場合には大きいｋを使用するほうが良い。このように、ｋの選択は値の確率に関係している。従来技術にはこのことに関する多くの理論研究がある。入力データの確率が既知であれば（例えば、入力データが、減衰を制御する単一のパラメータが存在するラプラス分布である場合）、減衰パラメータから、使用すべきパラメータｋを計算することができる周知の公式がある。これにより、平均として、写像はできるだけ少ないビット数を使用することが可能となる。
【０１３５】
したがって、ｋパラメータが適応的であることが重要である。そうすれば、入力データに大きい値が現れた場合、大きい値に対してはｋがより大きいほうが良いので、ｋを増加させれば良い。他方、小さい値が現れた場合、ｋを減少させれば良い。直観的に分かるように、大きい数値に対してｋを増加させ、小さい数値に対してｋを減少させると良い。そうすれば、ｋが（分数適応を用いる場合のように）十分小さいペースで変化する限り、入力データに対する最適なパラメータが常に正しく追跡されることになる。
【０１３６】
表４に示したｋの適応規則は全く新規なものである。適応ＲＬＧＲ符号器およびその方法においては、ゼロの不完全ランの後に任意の値が現れる可能性があり、この値を符号化しなければならない。符号化は、適応Ｇ／Ｒ符号器およびＧ／Ｒパラメータｋを用いて行われる。表４を参照すると、入力データはｘである。入力データｘは任意の整数であり得るが、小さいｘのほうが現れやすい（正であることも、負であることもあり得る）。しかし、Ｇ／Ｒ符号化は正の数のみに対するものである。ｘの簡単な写像を用いて（式４を参照）ｘをｕに写像する。ｋの適応は適応値ｐによって制御される。適応値ｐは、ｕを右にｋ桁シフトしたものとして定義される。したがって、適応値ｐはｕをスケールダウンしたものである。あるいは同じことであるが、ｐパラメータはｕ／２kの整数近似である。右にｋ桁シフトすることは、その数を２kで除算することと等価である。例えば、ある数を右に５ビットシフトすれば、これはその数を３２（すなわち２5）で割るのと同じである。剰余は捨て、商だけを用いる。
【０１３７】
表４を参照すると、適応値ｐがゼロに等しい場合、Ｋを第５の整数定数Ｂ３だけ減少させてＫを更新し置き換える。適応値ｐが１に等しい場合、Ｋは不変である。適応値ｐが１よりも大きい場合、Ｋを適応値ｐだけ増加させてＫを更新し置き換える。
【０１３８】
適応値ｐが１に等しい場合、これはｕの値が２kに近いことを意味する。これは、パラメータｋが正しいことに相当する値である。そこで、表４に示したように変更はない。適応値ｐの値が０である場合、これは入力値が２kよりも小さいことを意味する。すなわち、（入力値が２kよりも小さいので）ｋを減少させ始めるべき時である。適応値ｐが１よりも大きい場合ははるかに起こりにくい。というのは、入力値が非常に大きくなる可能性は低いからである。しかし、数値が大きくｐ＞１である場合は、ｋパラメータを増加させ始めるべき時である。
【０１３９】
［適応Ｇ／Ｒ符号器］
図１４は、Ｇ／Ｒパラメータｋの適応規則を含む、適応Ｇ／Ｒ符号化モジュールの符号化の詳細を例示する実施例である。なお、ｋの適応は、Ｇ／Ｒ専用モードおよびＲＬＧＲモードの両方で用いられるが、図面が繁雑になるのを避けるために図１２および図１３には示していない。プロセスが開始されると（ブロック１４０５）、まず、入力値ｕを読み出す（ボックス１４１０）。適応Ｇ／Ｒモードの２つの主要なプロセスとして、Ｇ／Ｒ符号化（ボックス１４１５）およびＧ／Ｒパラメータ適応（ボックス１４２０）がある。
【０１４０】
Ｇ／Ｒ符号化プロセスは、まず、適応値ｐと、ｖを計算する（ボックス１４２５）。ビットストリームに、ｐビットの１を付加する（ボックス１４３０）。次に、ｖのｋビット２進値をビットストリームに付加する（ボックス１４３５）。これらの動作は、表１で定義したゴロム／ライス符号器を構成する。
【０１４１】
Ｇ／Ｒパラメータ適応プロセスは、適応値ｐが１に等しいかどうかを判断することを含む（ボックス１４４０）。適応値ｐが１に等しい場合、適応値ｐを変えずに据え置く（ポイント１４４５）。そうでない場合、次に、適応値ｐがゼロに等しいかどうかを判断する（ボックス１４５０）。適応値ｐがゼロに等しい場合、Ｋを第５の整数定数Ｂ３だけ減少させてＫを更新し置き換える（ボックス１４５５）。そうでない場合、Ｋを適応値ｐだけ増加させてＫを更新し置き換える（ボックス１４６０）。最後に、ｋをＫ割るＬに等しいと置き（ボックス１４６５）、プロセスは終了する（ボックス１４７０）。
【０１４２】
［結果］
本実施例のＲＬＧＲ符号器およびその方法を、イメージ、オーディオ、および地図データの圧縮のためのアプリケーションにおいて実施した。これらのアプリケーションにおいてＲＬＧＲ符号器およびその方法を使用した結果、圧縮比は最も高度なエントロピー符号器に匹敵し、それにもかかわらず実装はより簡単であった。
【０１４３】
具体的には、整数データのための従来のエントロピー符号器に対して、ＲＬＧＲ符号器およびその方法は、図１のような広範囲のクラスの情報源シンボル確率分布に対して、（情報源エントロピーで決まる）理論的最大値に近い圧縮比を達成する。例として、周知のゴロム−ライス符号器およびハフマン符号器が効率的であるのは、情報源エントロピーがシンボル当たり１ビット以上の場合だけである。
【０１４４】
［ＶＩＩＩ．復号化］
適応ＲＬＧＲコーデックおよびその方法は、上記の符号器に基づいて正確に実現可能な復号器も含む。図２Ｂを参照すると、コンピューティングデバイス（ボックス２５０）が、ちょうどＲＬＧＲ復号器２４０を実現することができる。適応ＲＬＧＲ復号器２４０およびその方法は、符号化ビットストリーム（ボックス２３０）から符号語を受け取る。次に、適応ＲＬＧＲ復号器２４０は、Ｇ／Ｒ専用モードまたはＲＬＧＲモードの規則に対応する逆の規則を適用することによって符号語を復号化する。次に、符号器（前述）とちょうど同じ規則を用いて符号化モードパラメータおよびＧ／Ｒパラメータを適応させる。最後に、復号化（再構成）された整数データを出力する（ボックス２６０）。
【０１４５】
符号化規則は一意復号可能であり、復号器の適応規則は符号器のものと同一であるので、符号化規則および適応規則の上記の説明は、ちょうど復号器の動作の説明にもなっている。
【０１４６】
以上、例示および説明の目的で本発明について記載した。これは、網羅的であることも、本発明を開示されている通りの形態に限定することも意図していない。上記の教示に照らして多くの変更および変形が可能である。本発明の範囲は、この発明の詳細な説明によってではなく、添付の特許請求の範囲によって限定されるものとする。
【図面の簡単な説明】
【０１４７】
【図１】本明細書に開示される適応ランレングス・ゴロム／ライス（ＲＬＧＲ）符号器およびその方法を用いると有効に作用する整数値の典型的な確率分布を示す図である。
【図２Ａ】本明細書に開示されるＲＬＧＲコーデックおよびその方法の符号器部分の例示的実施態様を示すブロック図である。
【図２Ｂ】本明細書に開示されるＲＬＧＲコーデックおよびその方法の復号器部分の例示的実施態様を示すブロック図である。
【図３】図２に示した適応ＲＬＧＲコーデックおよびその方法を実施し得る好適なコンピューティングシステム環境の一例を示す図である。
【図４】図２に示した適応ＲＬＧＲ符号器のコンポーネントを示す全体ブロック図である。
【図５】図２および図４に示した適応ＲＬＧＲ符号器およびその方法の全体的動作を示す全体流れ図である。
【図６】図５に示した適応ＲＬＧＲ符号器およびその方法のさらなる詳細を示す流れ図である。
【図７】図４に示した適応ＲＬＧＲ符号器およびその方法の符号器モードセレクタの動作の詳細流れ図である。
【図８】図４に示した適応ＲＬＧＲ符号器およびその方法の符号化モードパラメータ適応モジュールの動作の詳細流れ図である。
【図９】図４に示した適応ＲＬＧＲ符号器およびその方法のゴロム／ライス（Ｇ／Ｒ）パラメータ適応モジュールの動作の詳細流れ図である。
【図１０】図９に示したゴロム／ライス（Ｇ／Ｒ）パラメータ適応モジュールによって用いられる適応値の計算の詳細流れ図である。
【図１１】適応ＲＬＧＲ符号器およびその方法の符号器モードを選択することの詳細を例示する実施例の図である。
【図１２】Ｇ／Ｒ専用モードの符号化の詳細と、付随する符号化モードパラメータｓの適応を例示する実施例の図である。
【図１３】ＲＬＧＲモードの符号化の詳細と、付随する符号化モードパラメータｓの適応を例示する実施例の図である。
【図１４】適応Ｇ／Ｒ専用モードの符号化の詳細と、Ｇ／Ｒパラメータｋの適応規則を例示する実施例の図である。
【符号の説明】
【０１４８】
２００  適応ＲＬＧＲ符号器
２１０  第１のコンピューティングデバイス
２２０  整数データ
２３０  符号化ビットストリーム
２４０  ＲＬＧＲ復号器
２５０  第２のコンピューティングデバイス
２６０  再構成された整数データ
３００  コンピューティングシステム環境
３１０  コンピュータ
３２０  処理ユニット
３２１  システムバス
３３０  システムメモリ
３３１  読み出し専用メモリ（ＲＯＭ）
３３２  ランダムアクセスメモリ（ＲＡＭ）
３３３  基本入出力システム（ＢＩＯＳ）
３３４  オペレーティングシステム
３３５  アプリケーションプログラム
３３６  他のプログラムモジュール
３３７  プログラムデータ
３４０  非リムーバブルメモリインタフェース
３４１  ハードディスクドライブ
３４４  オペレーティングシステム
３４５  アプリケーションプログラム
３４６  他のプログラムモジュール
３４７  プログラムデータ
３５０  リムーバブルメモリインタフェース
３５１  磁気ディスクドライブ
３５２  磁気ディスク
３５５  光ディスクドライブ
３５６  光ディスク
３６０  ユーザ入力インタフェース
３６１  ポインティングデバイス
３６２  キーボード
３７０  ネットワークインタフェース
３７１  ローカルエリアネットワーク（ＬＡＮ）
３７２  モデム
３７３  広域ネットワーク（ＷＡＮ）
３８０  リモートコンピュータ
３８１  メモリ記憶デバイス
３８５  リモートアプリケーションプログラム
３９０  ビデオインタフェース
３９１  モニタ
３９５  出力周辺インタフェース
３９６  プリンタ
３９７  スピーカ
４００  入力値
４０５  符号器モードセレクタ
４１０  ゴロム／ライス符号器
４１５  ランレングス符号器
４２０  符号語
４３０  符号化モードパラメータ適応モジュール
４３５  更新された符号化モードパラメータ
４４０  ゴロム／ライスパラメータ適応モジュール
４４５  更新されたＧ／Ｒパラメータ
４５０  次の入力値
１０００  適応値計算モジュール
【図１】
2006129467.tif 000011
【図２Ａ】
2006129467.tif 000012
【図２Ｂ】
2006129467.tif 000013
【図３】
2006129467.tif 000014
【図４】
2006129467.tif 000015
【図５】
2006129467.tif 000016
【図６】
2006129467.tif 000017
【図７】
2006129467.tif 000018
【図８】
2006129467.tif 000019
【図９】
2006129467.tif 000020
【図１０】
2006129467.tif 000021
【図１１】
2006129467.tif 000022
【図１２】
2006129467.tif 000023
【図１３】
2006129467.tif 000024
【図１４】
2006129467.tif 000025