(57)【特許請求の範囲】
【請求項１】
コンピュータにおいてアルファベットから得られる複数の記号グループに対するコードブックを構成する方法であって、
入力から一連の記号を受信するステップと、
データ構造内に可変サイズの複数の記号グループを記憶するステップであって、前記可変サイズの複数の記号グループの各記号グループは、１つ以上の隣接記号によって定義され、
複数の第１の記号グループの各々の発生確率を計算するステップと、
前記複数の第１の記号グループから第１の高確率記号グループを識別するステップと、
前記複数の第１の記号グループのうち前記第１の高確率記号グループ以外の第１の記号グループを結合して、第１の結合グループにするステップと、
前記アルファベットからの記号である複数の拡張記号をそれぞれ前記第１の高確記号率グループに追加することによって、前記第１の高確率記号グループを複数の第２の記号グループに拡張するステップと、
前記複数の第２の記号グループの各々の発生確率を計算するステップと、
前記複数の第２の記号グループから第２の高確率記号グループを識別するステップと、
前記複数の第２の記号グループのうち前記第２の高確率記号グループ以外の第２の記号グループを結合して、第２の結合グループにするステップと、
前記データ構造内に前記第２の高確率記号グループ、前記第１の結合グループ、および前記第２の結合グループを記憶するステップであって、前記データ構造内の前記可変サイズの複数の記号グループは、前記第２の高確率記号グループ、前記第１の結合グループ、および前記第２の結合グループを含む、ステップと、
前記可変サイズの複数の記号グループの各々の発生確率を計算するステップと、
前記可変サイズの複数の記号グループの各記号グループに対して、その記号グループの発生確率に基づいて可変長符号を割り当てるステップと、
次に続く可変サイズの記号グループから可変長符号への圧縮のために、前記可変サイズの複数の記号グループを、対応する割り当てられた可変長符号と関連付けるコードブックを出力するステップと
を備えることを特徴とする方法。
【請求項２】
請求項１に記載の方法において、前記可変サイズの複数の記号グループについて所定数のエントリを有するコードブックが得られるまで前記記憶するステップを繰り返すステップをさらに備えることを特徴とする方法。
【請求項３】
請求項２に記載の方法において、受信した前記一連の記号は、例示的な入力からのものであることを特徴とする方法。
【請求項４】
請求項１に記載の方法において、前記データ構造は、ｎ個の可変サイズの記号グループを記憶し、前記データ構造内で表されていない記号グループは、特定の記号を使用して符号化されることを特徴とする方法。
【請求項５】
請求項１に記載の方法において、前記データ構造は、前記可変サイズの複数の記号グループの各記号グループを記憶するための複数のエントリを有するテーブルとして構成されることを特徴とする方法。
【請求項６】
請求項１に記載の方法において、前記データ構造は、複数の記号を含む複数のノードを有するツリーとして構成され、前記可変サイズの複数の記号グループの各記号グループは、前記ツリーにおける走査パスによって識別されることを特徴とする方法。
【請求項７】
請求項１に記載の方法において、
前に結合された結合グループを、前記第１の高確率記号グループが識別された前記複数の第１の記号グループに分割するステップ
をさらに備えることを特徴とする方法。
【請求項８】
請求項１に記載の方法において、前記一連の記号は、不揮発性記憶媒体から取り出されるストリーミングデータを含むことを特徴とする方法。
【請求項９】
請求項１に記載の方法において、前記第２の高確率記号グループは、前記複数の拡張記号のうち追加された特定の拡張記号が後ろに続く、前記第１の高確率記号グループにより形成され、前記第２の結合グループは、前記複数の追加の拡張記号のうち前記第２の高確率記号グループに追加された前記特定の拡張記号以外のいずれかの拡張記号が後ろに続く、前記第１の高確率記号グループにより形成されることを特徴とする方法。
【請求項１０】
アルファベットから得られる複数の記号グループに対するコードブックを構成するためのシステムであって、
一連の記号を受信するための入力手段と、
各記号グループが１つ以上の隣接記号によって定義される複数の第１の記号グループそれぞれの発生確率を計算する手段と、
前記複数の第１の記号グループから第１の高確率記号グループを識別する手段と、
前記複数の第１の記号グループのうち前記第１の高確率記号グループ以外の第１の記号グループを結合して、第１の結合グループにする手段と、
前記アルファベットからの記号である複数の拡張記号をそれぞれ前記第１の高確率記号グループに追加することによって、前記第１の高確率記号グループを複数の第２の記号グループに拡張する手段と、
前記複数の第２の記号グループの各々の発生確率を計算する手段と、
前記複数の第２の記号グループから第２の高確率記号グループを識別する手段と、
前記複数の第２の記号グループのうち前記第２の高確率記号グループ以外の第２の記号グループを結合して、第２の結合グループにする手段と、
前記第２の高確率記号グループ、前記第１の結合グループ、および前記第２の結合グループをデータ構造内に記憶する手段と、
前記第２の高確率記号グループ、前記第１の結合グループ、および前記第２の結合グループを含む可変サイズの複数の記号グループを記憶するための前記データ構造を含むように構成されたメモリと、
前記可変サイズの複数の記号グループの各々の発生確率を計算する手段と、
前記可変サイズの複数の記号グループの各記号グループに対して、その記号グループの発生確率に基づいて可変長符号を割り当てる手段と、
次に続く可変サイズの記号グループから可変長符号への圧縮のために、前記可変サイズの複数の記号グループを、対応する割り当てられた可変長符号と関連付けるコードブックを出力する手段と
を備えたことを特徴とするシステム。
【請求項１１】
請求項１０に記載のシステムにおいて、前記第１の結合グループおよび前記第２の結合グループを構成記号グループに分割する手段をさらに備えたことを特徴とするシステム。
【請求項１２】
請求項１０に記載のシステムにおいて、前記データ構造は、ｎ個の可変サイズの記号グループを記憶し、かつ前記データ構造は、前記データ構造内で表されていない記号グループを符号化するために使用される特定の記号を記憶することを特徴とするシステム。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は、概してデータ圧縮に関し、より詳細には、一形式のエントロピー符号化に関する。
【０００２】
（背景）
通常の符号化環境では、入力データが、エンコーダによって符号化されて、通信チャネルを介して伝送され（または単に記憶され）、デコーダによって復号化される。符号化中、入力信号は、通常、事前処理され、サンプリングされ、変換され、圧縮され、または別様に操作されて、伝送または記憶のための形式にされる。伝送または記憶の後、デコーダが、元の入力を再構成しようとする。
【０００３】
この単純なモデルの１つの根本的な限界は、所与の通信チャネルが、所定の容量または帯域幅を有することである。したがって、それが通信チャネルを介して、伝送されるとすれば、確実に伝送されるようにするために、入力データの情報内容を縮小することがしばしば必要である。入力信号が、同等の発生確率を有する記号で構成されているときには、最適符号化は、ｎビット符号の各ビットが２ｎ個の等確率入力可能性の間での区別を行えるようにする等長符号ワードを使用することである。したがって、単一ビット（すなわち、単一エントリコードブック）は、２つの可能性を区別でき、２ビットは、４つの可能性を区別できるなど、である。
【０００４】
しかし、入力ストリームが、任意の特定のメッセージを受信するのに等確率を有することは通常ではない。実際には、入力内の意味構造または構文構造のために、あるメッセージが、他のものよりも確率が高い。エントロピー符号化の目的は、そのようなデータ相関を利用して、ある高い確率の入力を有する予期される入力のなかで、符号ワードの平均長を最小限に抑えることである。あるメッセージが別のものよりも確率が高いとき、より短いコードブックエントリを確率の高いメッセージに対して使用して、より長いエントリをそれほど確率の高くないものに対して使用する。
【０００５】
時の経過とともに、相当な努力が、伝送または記憶するデータのサイズを縮小するための可逆的圧縮と不可逆的圧縮の技法を開発するのに注がれてきた。１つの一般的な可逆技法は、ハフマン符号化として知られており、これは、特定の形式のエントロピー符号化である。エントロピー符号化は、可変長符号（例えば、コードブックエントリ）を固定サイズブロックの入力に割り当てることによって動作する。つまり、対応する確率ｐ１．．ｐｍを有する値ｘ１．．ｘｍを取ることが知られているランダム変数Ｘが、符号ワード｛Ｙ｝のセット内のエントリにマップされる。長さｋの｛Ｙ｝内の各符号ワードｙｉｋの方は、有限シーケンスの符号アルファベットエントリ｛Ａ｝＝｛ａ１．．ａｄ｝から成る。簡単にするため、ｙｉｋは、単にｙｉとして参照し、ｋを含意するものとする。デジタルの適用形態の場合、符号アルファベットは、ビットで符号長が測定されるシリーズ(series)の２進数｛０，１｝である確率が高い。適切な出力を再構成するのに、圧縮表現の単一走査だけを検査する必要があるように、符号ワードが構成されているものと想定する。ソース信号をエントロピー符号化することの難しさは、Ｘが取り得る可能な値の数ｍに依存する。小さなｍの場合、可能なメッセージがあまり存在せず、したがって、それらのメッセージに対するコードブックは、非常に小さいものであり得る（例えば、すべての可能なメッセージを明確に表すのに、いくつかのビットのみを使用する必要がある）。
【０００６】
送信側が、１／２、１／４、１／８、１／１６というそれぞれの確率ｐ１．．ｐ４を有する４つのメッセージｘ１．．ｘ４のうちの１つを含んだソース信号を提供することが既知である場合、その４つの可能なメッセージを２ビットだけを使用して非効率的に表すことができる。ただし、これは、帯域幅を浪費する。というのは、その不等な確率が、利用可能なデータ特性を示しているからである。スカラーハフマン符号化として知られている、より効率的な方法は、平均で２ビットまで必要とせずに、各メッセージを符号化する。短いコードブックエントリがｘ１に割り当てられる。というのは、それが最も確率が高いからであり、また、次第に長くなる符号が、それほど確率の高くない入力に対して割り当てられる。コードブックエントリの１つの可能なセットは、メッセージｘ１を表すのに、「１」を、メッセージｘ２に対して「０１」を、メッセージｘ３に対して「０００」を、メッセージｘ４に対して「００１」を割り当てることである。これは、ランダム変数Ｘを符号化するために、２ではなく、１．５６ビットの平均符号長を与え、かなりの節約である。
【０００７】
この手法の圧縮効率は、各ソース記号に整数のビットを有する符号ワードが割り当てられるために、限られている。この限界を克服する従来の方法には、算術符号化およびベクトルハフマン符号化が含まれる。これらの方法は、Ｘをまとめてブロックまたはベクトルにグループ化し、これは、それ自体、別のソース記号として扱われる。つまり、各個別メッセージＸを単に符号化する代わりに、代わりに、複数のＸのシーケンスを符号化する。個別記号符号化の方法が入力ストリーム内での記号の発生頻度を利用するのと同様に、記号をグループ化するこの後者の手法も、エンコーダが入力記号間の依存関係を利用することを可能にする。コヒーレントシリーズＸ１．．Ｘｎのエントロピーは、各個別Ｘのエントロピーの合計に等しい、またはそれより低いことが情報理論で知られているので、Ｘの符号化シーケンスは、さらなる節約をもたらす。
【０００８】
理論的には、ベクトルハフマン符号化は、コヒーレントソースをスカラーハフマン符号化よりもずっと効率的に圧縮することができる。ベクトルハフマン符号化の効率は、実際的な問題によってのみ制限される。より高い圧縮比を得るため、より大きなベクトル次元が必要とされる。しかし、より高い次元は、現実的な限界を越えてコードブックサイズを増大させる。例えば、３０個の可能な値を有するソース記号に対して、たった６個の次元が、７億２千９百万エントリのコードブックに対応する。
【０００９】
エントロピー符号化の上記の例は、ソース記号が固定長を有し、符号ワードが、対応するソース記号の確率に依存する可変長を有するので、固定長から可変長への符号化として特徴付けられることにも留意されたい。エントロピー符号化の別の方法も試みられており、これは、ソース記号の可変数を一緒にグループ化した後、等長を有する符号ワードに変換する反対の手法を試みる。ソースが、独立のＸで構成され、記号グループが等確率を得ているとき、こうした逆方式が最適であることは、証明済みである。ただし、大きな次元のベクトルハフマン符号化の場合と同様に、こうした解決法は、現実的に利用可能なリソース（利用可能であったとしても）を超過するリソースを必要とする。さらに、オーディオまたはビジュアルのデータストリームなど、データコヒーレンスを有するソースの場合、この可変長から固定長への手法は、役に立たない。
【００１０】
（概要）
本発明は、可変長符号を可変長入力シーケンスに割り当てる方法に関する。詳細には、エントロピー型符号を確率の高い入力シーケンスに割り当て、これによって、特定の入力ストリームを圧縮形式に符号化できるようにする。リソースの限られている環境で本発明を実現するとき、符号化および復号化を実行するために必要なコードブックのサイズを縮小するように、それを構成することが可能である。例えば、可変長符号ワードを非常に高確率の入力にだけ割り当て、デフォルト符号をそれほど確率の高くないシーケンスに割り当てることが可能である。特定の入力に対して特定の符号を割り当てるのに必要な確率の程度は、所望のコードブックサイズに応じて調整する。
【００１１】
符号化する入力ストリームは、オーディオ、ビデオ、または他の型のデータを符号化する、数字、文字、または２進データストリームなど、任意のデータ型のものであり得る。簡単にするため、入力ストリームは、本明細書では、各「記号」が特定の入力に対する適切な測定単位を指す、シリーズの記号として参照する。
【００１２】
詳細には、コードブックは、記号の可変サイズグループのそれぞれに記号グループの発生確率に基づく可変長符号が割り当てられた記号のグループに対して構成する。コードブックを構成するため、記号の可能なグループを生成し、コードブックを生成するのに使用する例示的な入力内でその生成したグループが発生する確率に対してそれを比較する。こうした例示的な入力は、受信される確率が高く、符号化を必要とする任意の入力を近似するものと想定する。この入力は、グループの生成を駆動するのに使用できる、またはすべての可能なグループをこの例示的な入力に対してテストし、比較し得ることに留意されたい。本明細書では、グループ化は、入力駆動のものであることを想定している。
【００１３】
データ構造（または等価物）を、記号の結合（例えば、グループ化）を追跡するのに使用することが可能である。この構造は、新しい記号を前に受信済みの記号と関連付けるのに使用して、前に受信済みの記号の恣意的に長いグループを追跡するようにする。データ構造の１つの可能な構成は、連続する記号グループが新しいリーフノードを形成するツリー型データ構造である。これらのノードは、グループ全体を含む、または前の親ノードに対する単一の記号の拡張だけを含むことが可能である。この後者の構成では、ツリーのルートからのパスが、特定のグループに対応する。
【００１４】
グループ化および確率の割当てを開始するため、好ましくは、入力アルファベットからの記号を含んだ単一記号「グループ」などの、１つ以上の単純グループ化を選択する。これらの初期グループの確率を上げて、入力として最も発生する確率の高いグループを判定する。ここで、そのような確率は、必然的に、例示的な入力に対して計算される。次に、最高確率グループをアルファベットからの記号で拡張して、試験的グループを形成する。次に、これらの試験的グループの確率を評価して、最高確率の試験的拡張、ならびに単一グループに結合された最低確率のグループを識別する。
【００１５】
コードブックの概念は、符号ワードを記号グループに割り当てることである。リソースの限られた環境では、コードブックサイズが制限されるように本発明を構成することができる。それを行う１つの方法は、符号をすべての入力シーケンスに割り当てるのを回避することである。代わりに、可能性の高い入力シーケンスだけをコードブック内に記憶して、それにエントロピー型符号を割り当てる。確率の低いシーケンスは、コードブック内で、入力シーケンスプレフィックスとして表され、特定拡張文字サフィックスがその後に続く。このサフィックス文字は、そのプレフィックスに対するすべての可能な入力シーケンス拡張を表す。プレフィックス−サフィックスの対合は、コードブック内にエントリを有さないプレフィックスで開始するすべての可能な入力シーケンスを表す。したがって、この試験的拡張を評価した後、２つのコードブックエントリがもたらされ、その１つは最高確率の拡張に対するものであり、もう１つは、他のすべての拡張を表す（この場合も、１つの最高確率の拡張だけを保存することを想定する）。
【００１６】
グループを拡張して、グループをつぶすこの処理は、データ構造が所定の容量まで埋められるまで繰り返す。ただし、コードブックがその容量まで埋められた場合でも、入力内のより高い確率のエントリがそれほど確率の高くない現行のエントリを置き換えるように、入力を継続して走査できることに留意されたい。この符号化技法の効率は、選択したブックサイズおよび例示的な入力の一般性によってのみ制限される。コードブックを作成した後、各ブックエントリにエントロピー型符号、すなわち、そのエントリの確率に反比例する長さを有する符号を割り当てる。
【００１７】
（詳細な説明）
本発明は、オーディオ／ビジュアルコーデック内で実現されてきた。これは、どのように本発明を実現できるかの一例に過ぎない。本発明は、エントロピー型符号化が利用できる場合にはいつでも利用できるように設計しており、どの型のデータの圧縮にも適用可能である。簡単に説明すれば、最適エントロピー符号化は、過大なリソースを必要とし、例示する実施形態は、はるかに少ないリソースを必要とするほぼ最適の符号化解決法を提供する。
【００１８】
（例示的な動作環境）
図１および下記の議論は、そこで本発明を実現することが可能である適切なコンピュータ環境の簡単な一般的説明を提供することを目的とする。パーソナルコンピュータ上で動作するコンピュータプログラムのコンピュータ実行可能命令の一般的文脈で本発明を説明するが、当分野の技術者には、他のプログラムモジュールとの組合せでも、本発明を実現できることが理解されよう。一般的に、プログラムモジュールには、特定のタスクを実行する、または特定の抽象データ型を実現する、ルーチン、プログラム、構成要素、データ構造などが含まれる。さらに、当分野の技術者には、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースの、またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む、他のコンピュータシステム構成を使用しても本発明を実行できることが理解されよう。本発明の例示する実施形態は、通信ネットワークを介してリンクされているリモート処理装置によってタスクが実行される分散コンピュータ環境でも実行される。ただし、本発明のいくつかの実施形態は、独立型コンピュータ上でも実行することが可能である。分散コンピュータ環境では、プログラムモジュールは、ローカルとリモートの両方のメモリ記憶装置に配置することが可能である。
【００１９】
図１を参照すると、本発明を実現するための例示的なシステムが、コンピュータ２０を含み、これが、処理装置２１、システムメモリ２２、および処理装置２１に対するシステムメモリを含んだ様々なシステム構成要素を結合するシステムバス２３を含んでいる。処理装置は、Ｉｎｔｅｌ  ｘ８６、Ｐｅｎｔｉｕｍ、Ｉｎｔｅｌおよび他社からの互換マイクロプロセッサ、ＤｉｇｉｔａｌによるＡｌｐｈａプロセッサ、ならびにＩＢＭおよびＭｏｔｏｒｏｌａからのＰｏｗｅｒＰＣを含む、様々な市販のプロセッサのうちの任意のものであり得る。デュアルマイクロプロセッサおよび他のマルチプロセッサのアーキテクチャも、処理装置２１として使用することができる。
【００２０】
システムバスは、メモリバスまたはメモリコントローラ、周辺バス、ならびに、そのいくつかを挙げれば、ＰＣＩ、ＡＧＰ、ＶＥＳＡ、Ｍｉｃｒｏｃｈａｎｎｅｌ、ＩＳＡ、ＥＩＳＡなどの様々な従来バスアーキテクチャのうちの任意のものを使用するローカルバスを含んだ、いくつかの型のバス構造のうちの任意のものであり得る。システムメモリは、読取り専用メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含む。始動時などに、コンピュータ２０内の要素間で情報を転送するのを助ける基本ルーチンを含んだ基本入力／出力システム（ＢＩＯＳ）は、ＲＯＭ２４内に記憶されている。
【００２１】
コンピュータ２０は、ハードディスクドライブ２７、例えば取外し可能ディスク２９から読み取り、またはそれに書き込むための磁気ディスクドライブ２８、および例えばＣＤ−ＲＯＭディスク３１を読み取るための、あるいは他の光学式媒体から読み取り、またはそれに書き込むための光ディスクドライブ３０をさらに含む。ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０は、それぞれ、ハードディスクドライブインタフェース３２、磁気ディスクドライブインタフェース３３、および光ディスクドライブインタフェース３４によって、システムバス２３に接続されている。これらのドライブおよびその関連するコンピュータ可読媒体は、コンピュータ２０のためのデータ、データ構造、コンピュータ実行可能命令などの不揮発性ストレージを提供する。前記のコンピュータ可読媒体の説明は、ハードディスク、取外し可能磁気ディスク、およびＣＤに関連するが、当分野の技術者には、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジなど、コンピュータによって読取り可能な他の型の媒体も、例示的な動作環境内で使用できることが理解されよう。
【００２２】
オペレーティングシステム３５、１つ以上のアプリケーションプログラム（例えば、インターネットブラウザソフトウェア）３６、他のプログラムモジュール３７、およびプログラムデータ３８を含む、いくつかのプログラムモジュールをドライブおよびＲＡＭ２５内に記憶することが可能である。
【００２３】
ユーザは、キーボード４０、およびマウス４２などのポインティングデバイスを介して、コマンドおよび情報をコンピュータ２０に入力することができる。他の入力装置（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、またはそれらに類するものが含まれ得る。これらの入力装置および他の入力装置は、しばしば、システムバスに結合されたシリアルポートインタフェース４６を介して処理装置２１に接続するが、パラレルポート、ゲームポート、または汎用シリアルバス（ＵＳＢ）などの、他のインタフェースによって接続することも可能である。モニタ４７または他の型の表示装置も、ビデオアダプタ４８などのインタフェースを介してシステムバス２３に接続されている。モニタに加えて、パーソナルコンピュータは、通常、スピーカまたはプリンタなどの、他の周辺出力装置（図示せず）を含む。
【００２４】
コンピュータ２０は、リモートコンピュータ４９などの、１つ以上のリモートコンピュータに対する論理接続を使用するネットワークされた環境内で動作するものと予期する。リモートコンピュータ４９は、ウェブサーバ、ルータ、ピア装置、または他の一般のネットワークノードであることが可能であり、図１ではメモリ記憶装置５０だけを図示しているが、通常、コンピュータ２０に関して記載した多くのまたはすべての要素を含む。コンピュータ２０は、ゲートウェイ５５（例えば、ルータ、専用回線、または他のネットワークリンク）、モデム５４リンクを介して、あるいはオフィス内ローカルエリアネットワーク（ＬＡＮ）５１またはワイドエリアネットワーク（ＷＡＮ）５２によって確立されたインターネット接続を介して、リモートコンピュータ４９に接触することができる。図示したネットワーク接続は、例示的なものであり、コンピュータ間に通信リンクを確立する他の手段も使用できることが理解されよう。
【００２５】
コンピュータプログラミング分野の技術者の慣行により、本発明は、そうでないことを示さない限り、コンピュータ２０によって実行される動作およびオペレーションの記号表現を参照して下記に説明する。そのような動作およびオペレーションは、時として、コンピュータ実行されていると呼ばれる。この動作および記号で表されるオペレーションには、処理装置２１による、データビットを表す電気信号の操作が含まれることが理解され、これは、電気信号表現の結果としての変換および縮小を引き起こし、またメモリシステム（システムメモリ２２、ハードドライブ２７、フロッピーディスク２９、ＣＤ−ＲＯＭ３１を含む）内のメモリロケーションでのデータビットの維持を、これによって、再構成させる、または別様にコンピュータシステムのオペレーションならびに信号の他の処理を変更させる。そこにデータビットが維持されているメモリロケーションは、そのデータビットに対応する特定の電気特性、磁気特性、または光特性を有する物理ロケーションである。
【００２６】
図２は、基本通信モデルを示している。基本通信モデルでは、データソースまたはセンダ２００、通信チャネル２０４、およびデータレシーバ２０８が存在する。このソースは、電話機上で電話回線を介して他の人と話している人物であり得る。または、ソースは、無線方法によってテレビジョンまたはラジオ受信機に対して送信されるテレビジョン放送またはラジオ放送であり得る。または、ソースは、オーディオであれ、ビジュアルであれ、または他のものであれ、その情報のための対応するデコーダに配線式または無線の通信リンク（例えば、ＬＡＮまたはインターネット）を介して伝送される、何らかのデータのデジタル符号化であり得る。
【００２７】
データの送信および受信を円滑にするため、エンコーダ２０２を使用して、通信チャネル２０４を介する伝送に対してデータソースを準備する。このエンコーダは、ソースデータをチャネル２０４に対して適切な形式に変換することを担う。例えば、通常の電話コールの文脈で、自身の音声は、通常、電話機のハンドセットによって、音声サウンドから、ローカル電話受信装置に対するアナログデータとして送信されるアナログインパルスに変換される。このアナログ信号は、次に、デジタル形式に変換され、同様に符号化された他の多くの会話とともに多重化されて、共通回線を介して受信側に伝送される。したがって、図２で、チャネル２０４は、複数の送信側と受信側によって共用される共通経路にだいたい対応する。受信端２０８で、デコーダ２０６が、受信側にとって理解できるデータを提示するように、符号化プロセスを元に戻す必要がある。
【００２８】
データ伝送を最適化するため、エンコーダ２０２は、しばしば、データの伝送のために圧縮方式を利用するように設計される。圧縮は望ましい。というのは、通常ではない状況を除き、通信帯域幅は、限られているからである。したがって、オーディオデータまたはビデオデータなどの複雑なデータソースの場合、従来の伝送パスを介してその伝送ができるようにするために、ソースデータを圧縮する必要がある。
【００２９】
特に有効な符号化方法の１つが、エントロピー符号化として知られており、これは、非常に確率の高い入力データに事前割り当てされている短い符号ワードを含んだ「コードブック」を利用する。
【００３０】
有効な符号化方法の１つは、エントロピー符号化である。そのようなエンコーダは、データコヒーレンシーを十分に利用することができ、また、記号が一様でない確率分布を有するとき、特に有効である。
【００３１】
図３は、コードブックを生成するための好ましい方法を示している流れ図である。詳細には、従来技術の技法とは対照的に、図３は、どのように、可変長記号グループに対する可変長符号割当てを有するコードブックを作成するかを図示している。前述のとおり、従来技術の技法は、固定長符号の入力または固定ブロックの入力のいずれかを必要とする。好ましい実施態様は、可変長Ｘシーケンスを符号化するのに可変長符号ワードを使用するエントロピーベースの可変から可変への符号を提供することによって、大きい次元のベクトル符号化のリソース要件、および等長のワードへの符号化の非実用性を克服する。
【００３２】
１≦ｊ≦Ｎｉについて、入力ストリーム（図２のチャネル２０４）内で発生する確率Ｐｉを有する各ソース記号グループ｛ｘｊ｝をｙｉが表すものとして、各グループにＬｉビットを有する対応する符号ワードを割り当てるものとする。各ｘｊは、所定サイズの固定アルファベットから得られるものと想定する。この目的は、以下の数式を最小化することである。
【００３３】
【数１】
0004559631.tif 000002
【００３４】
この問題に対する一般的な解を見つけ出す代わりに、問題を２つの異なるタスクに分離する。第１タスクは、後述の経験的手法を介して入力記号｛ｘｉ｝のセットの（部分最適）グループの識別である。第２タスクは、グループ化された記号｛ｙｉ｝に対してエントロピー型符号を割り当てることである。ソースがコヒーレントではない（すなわち、入力が独立である、またはメモリが無い）場合、｛Ｎｊ｝という同一構成を有するどのグループも同一の符号化効率を達することができるのが知られていることに留意されたい。この状況では、第１タスクは、重要ではなくなる。
【００３５】
第１タスクを実行するため、｛ｙｉ｝＝｛ｘｉ｝などの、初期の単純記号グループ３００が準備される。この初期構成は、コードブックの作成を慣らすために、例示的な入力ストリームが使用されていることを想定している。コンピュータは、入力からの各記号の受信を追跡するために、データ構造などのソフトウェア構造体を使用してプログラムすることができるものと理解する。そのようなデータ構造は、２進型ツリー構造、ハッシュテーブル、またはこの２つの何らかの組合せとして実現することが可能である。他の等価の構造を使用することも可能である。
【００３６】
単純グループを決定した後、各ｙｉごとの発生確率を計算する３０２。そのような確率は、コードブック生成を慣らすために使用する任意の例示的な入力に対して判定する。さらなる記号が記号データ構造に追加されるのにつれて、この確率は、動的に調整される。
【００３７】
次に、最高確率のグループｙｉ（ｙｍｐと表す）を識別する３０４。最高確率の記号が、前により低い確率であった記号のグループである場合３０６には、そのグループをそれを構成する記号に分割して３０８、ステップ３０２から処理を再開する。（記号を結合することはできるものの、記号を抽出することができるように、グループは、その中にあるすべての記号の記憶を保持する。）
【００３８】
その記号がグループではない場合には、処理は、ステップ３１０で継続し、そこで、最高確率のグループを単一記号拡張ｘｉで試験的に拡張する３１０。好ましくは、ｙｍｐは、使用されるＸアルファベットからの各記号で拡張する。ただし、アルファベットが非常に大きく、多くの拡張は確率が低いことが既知である場合、プレディクタ(predictor)を使用して、確率の高い拡張だけを含んだ拡張セットのみを生成することが可能である。例えば、そのようなプレディクタは、アプリオリに非常に確率の低い拡張を無視できるように、意味構造上の意味または文脈的意味に基づいたものであり得る。
【００３９】
次に、ｙｍｐの各試験的拡張に関する確率を計算して３１２、最高確率の拡張だけを保持する３１４。残りのより低い確率の拡張はつぶして、結合グループとしてまとめ３１６、結合グループを示す特定記号を付けて、コードブック内に記憶する。このワイルドカード記号は、ｙｍｐをプレフィックスとして有する任意の記号グループを表すが、最高確率の拡張とは異なる拡張（サフィックス）が付いている。つまり、ｙｍｐ＋ｘｍｐが最高確率のルートと拡張である場合には、他のそれほど確率の高くない拡張は、ｙｍｐ＊、＊≠ｘｍｐとして表される。（この議論は、明確にするために、単一記号拡張の逐次処理を想定するが、複数の記号拡張の並列実行が考慮されることに留意されたい。）
【００４０】
コードブック構成は、すべての拡張が作成されるまで、またはコードブックエントリの数が所定の限界に達するまで、ステップ３０２〜３１６を繰り返す３１８によって完了する。前記のオペレーションを繰り返し適用することの効果は、高い相関を有する記号グループを自動的に集めて、グループ間相関が最小化されるようにすることである。これは、以下に示すＬの分子を最小化する一方で、同時に、Ｌの分母が最大化されるように、最高確率のｙｉの長さを最大化する。
【００４１】
【数２】
0004559631.tif 000003
【００４２】
コードブックを記憶し、操作するために使用できる様々な技法が存在する。コードブックのための１つの構造は、記号グループがツリー構造の走査をガイドするＮ進（例えば、２進、３進など）ツリーの走査およびストレージである。このツリーのリーフノードは、エントロピー型符号がシーケンスと関連付けられている認識済みの記号シーケンスの終了を表す。ノードは、ソフトウェア内で、そのノードと関連付けられた１つ以上の記号のストレージを可能にする構造、クラス定義、または他の構造として符号化することが可能である。
【００４３】
別法では、コードブックは、発生確率によって分類した入力記号の各ストリングを有するテーブルとして構造化することができ、非常に確率の高い入力が、そのテーブルの一番上にある。大きなテーブルの場合、テーブルは、第１記号によって分類する、すなわち、「Ａ」で開始するすべての記号シリーズがグループにまとめられ、それに「Ｂ」で開始するシリーズが続くといったことが可能である。この構成を使用すると、グループ内のすべてのエントリが、その発生確率に応じて分類される。各セクションの開始の位置は、ハッシュ型関数（例えば、第１記号に基づくルックアップ）を使用してコードブックテーブルの正しい部分を探し出せるように、マーク付け／追跡される。コードブックの記憶に対するこのルックアップテーブル手法では、第１記号をハッシュした後、ルックアップは、合致するエントリが探し出されるまで、対応するテーブルセクションの検索だけを必要する。
【００４４】
図４〜１０は、アルファベット｛Ａ，Ｂ，Ｃ｝に対する、図３に準拠するコードブックの作成を図示する。この論議のため、コードブックは、例示的な入力ストリーム「Ａ  Ａ  Ａ  Ｂ  Ｂ  Ａ  Ａ  Ｃ  Ａ  Ｂ  Ａ  Ｂ  Ｂ  Ａ  Ｂ」に対して定義される。前述のとおり、１つ以上の例示的な入力を使用して、コードブックを生成することが可能であり、これが、次に、エンコーダおよびデコーダによって使用されて、任意の入力を処理する。明確にするため、このコードブックは、ツリー構造として提示する。ただし、これは、実際には、リニアテーブル、ハッシュテーブル、データベースなどとして実現することが可能である。図示するとおり、ツリーは、左から右に向いており、そこで左列（例えば、「Ａ」および「Ｘ０」）は、ツリー型構造の一番上の行を表し、順次、字下げされている行が、前の行のノードの「子」を表す（例えば、図５のトップダウンツリー内で、ノード「Ａ」は、第２行の中間子ノード「Ｂ」に対する第１行の親ノードである。）。
【００４５】
コードブックを準備する上で、一般的規則は、最高確率のリーフノードを選出し、それを拡張し、最高確率のリーフノードを判定するために確率を再計算し、次に、残りの兄弟ノードを単一Ｘｎノード（ｎ＝０．．Ｎ、ノードが結合されるたびに毎回、追跡する）に縮小することである。最高確率ノードがグループノードであると判明した場合には、そのグループを分割し、確率を再計算して、最高確率のメンバノードを保持する（すなわち、残りのグループメンバは、再グループ化する）。処理は、所定サイズを有するコードブックなど、ストップ状態に達するまで、循環する。
【００４６】
図４は、入力ストリーム「Ａ  Ａ  Ａ  Ｂ  Ｂ  Ａ  Ａ  Ｃ  Ａ  Ｂ  Ａ  Ｂ  Ｂ  Ａ  Ｂ」に対する初期グループを図示している。この入力の初期解析は、Ａ＝８／１５、Ｂ＝６／１５、Ｃ＝１／１５の発生確率を示す。この初期単純グループは、異なる基準に基づいて作成することが可能であり、その最も単純なものは、アルファベット内の各文字に対する第１レベルノードを有する。ただし、入力アルファベットが大きい場合、単純グループは、最高確率を有する記号の何らかのサブセットに制限することが可能であり、残りの記号はＸグループに結合される。図４は、２つの初期グループだけで開始することによってこの技法を図示し、グループＡ  ４００は、確率８／１５を有し、グループＸ０  ４０２は、確率７／１５を有し、ここで、Ｘ０は、アルファベット内のすべての残りの低確率の記号、例えば、ＢおよびＣを表す。
【００４７】
初期単純グループを準備した後、最高確率を有するリーフノードを拡張のために選択する（処理シーケンスに関する図３の議論も参照）。したがって、図５で示すとおり、グループＡ  ４００は、アルファベット内の各文字によって試験的に拡張される（または、初期グループの作成に関して述べたとおり、その何らかのサブセットにこの拡張を制限することも可能である）。次に、入力ストリーム「Ａ  Ａ  Ａ  Ｂ  Ｂ  Ａ  Ａ  Ｃ  Ａ  Ｂ  Ａ  Ｂ  Ｂ  Ａ  Ｂ」に関して確率を再計算して、試験的拡張Ａ  ４０６、Ｂ  ４０８、およびＣ  ４１０に対する値を判定する。この結果は、９つの解析グループであり、ここで「Ａ  Ａ」は２／９出現し、「Ａ  Ｂ」は４／９出現し、「Ａ  Ｃ」は０／９出現する。したがって、最高確率の拡張「Ａ  Ｂ」を保持し、他の拡張をつぶしてＸ１＝Ａ，Ｃにする。この議論では、すべての確率を再計算するが、より効率的な手法は、ノード内の各ノードに対する確率と記号関連を保持して、必要となる情報だけを計算することである。
【００４８】
図６は、図５について、Ｘ１  ４１２につぶすことを示す。処理は、最高確率を有するノード、例えば、確率４／９のノードＢ  ４０８の識別で繰り返す。
【００４９】
図７に示すとおり、このノード４０８は、前述のとおり、記号Ａ  ４１４、Ｂ  ４１６、Ｃ  ４１８で試験的に拡張され、最高確率を有する試験的グループが保持される。確率を再計算した後、その結果は、８つの解析グループであり、そこでは、記号シーケンス「Ａ  Ｂ  Ａ」４１４が一度、出現し、「Ａ  Ｂ  Ｂ」４１６が一度、出現し、「Ａ  Ｂ  Ｃ」４１８は全く出現しない。試験的拡張Ａ  ４１４と試験的拡張Ｂ  ４１６は、同一の発生確率を有するので、どちらの記号を保持するかを選択する規則を定義する必要がある。この議論の場合、等確率が存在するときはいつでも、一番高い行のノード（例えば、トップダウンツリー内の一番左の子ノード）が保持される。同様に、ツリーの行の間に競合が存在する場合、一番左の行のノード（例えば、トップダウンツリーのルートに一番近いノード）が保持される。
【００５０】
上述の例示的な入力の解析は、その入力の末尾の２つの記号「Ａ  Ｂ」を考慮しないことに留意されたい。図７に図示するとおり、その構成が「Ａ  Ｂ  Ａ」、「Ａ  Ｂ  Ｂ」、「Ａ  Ｂ  Ｃ」に拡張されているので、「Ａ  Ｂ」に対応するリーフは、存在しない。これを補正するため、コードブックエントリを作成して、入力シーケンスのそのような終端を考慮に入れることができる、あるいはエントリを有さない入力を、特定文字を使用して回避して、符号化済み出力ストリームに挿入することが可能である。例えば、特定記号を使用して、入力の終了を示すことができ、したがって、復号化時に、末尾の文字をどのように扱うかを暗黙指定する。
【００５１】
したがって、図８に示すとおり、ノードＡ  ４１４が保持され、ノードＢ  ４１６とノードＣ  ４１８が結合されて、１／８＋０／８という結合確率を有するノードＸ２＝Ｂ，Ｃ  ４２０になる。ここで、次のステップは、入力ストリームに関して現行で最高確率を有するノードを拡張することである。図示するとおり、ノードＸ１＝Ａ，Ｃ  ４１２とＸ０＝Ｂ，Ｃ  ４０２は、同一の発生確率（３／８）を有する。前述のとおり、ツリー内の最高ノード（Ｘ０  ４０２）が拡張される。（整合的であることだけが必要であるが、より高いレベルのノードを拡張することが望ましい。というのは、そうすることが、長い符号ワードの数を増加させることによって、符号化効率を向上させ得るからである。）
【００５２】
ただし、Ｘ０  ４０２は、結合ノードであり、したがって、これは拡張するのではなく、分割しなければならない。図９は、ノードＸ０をその構成記号Ｂ  ４２２とＣ  ４２４に分割することの結果を図示している。確率を再計算することが、記号シーケンス「Ａ  Ｂ  Ａ」は１／８出現し、「Ａ  Ｂ  Ｘ２」は１／８出現し、「Ａ  Ｘ１」は３／８出現し、「Ｂ」  ４２２は２／８出現し、「Ｃ」は１／８出現することを示す。これは、分割オペレーションであるので、最高確率を有する分割ノード、例えば、ノードＢ  ４２２が保持され、残りのノードは、再結合されてＸ０＝Ｃ  ４２４に戻る。
【００５３】
図１０は、高確率ノードＢ  ４２２を保持することの結果を示している。グループＸ０は、この場合、単一記号「Ｃ」だけを表すことに留意されたい。確率を改訂した後、最高確率を有するノードを識別して、分割または拡張しなければならない。図示するとおり、記号シーケンス「Ａ  Ｂ  Ａ」は１／８出現し、「Ａ  Ｂ  Ｘ２」は１／８出現し、「Ａ  Ｘ１」は３／８出現し、「Ｂ」は２／８出現し、「Ｘ０」は１／８出現する。したがって、ノードＸ１  ４１２は、結合ノードであるので、分割しなければならない。
【００５４】
分割は、前述の手順で行われ、コードブックの処理は、最高確率ノードが拡張または分割されて、図３で図示するとおり、停止状態が達せられる（例えば、コードブックが最大サイズに達する）まで、循環する。図１０の構成の場合、入力記号当たりの平均ビットは、リーフノードの理想ハフマン符号化の下でのフラクショナルビットを想定すると、およそ０．８ビット／記号（これは、末尾の入力「Ａ  Ｂ」がどのように扱われるかに依存して変化する）である。これは、理想スカラーハフマン符号化など、前の可逆的圧縮技法に対する相当な（およそ１０％）節約を表している。
【００５５】
私の発明の原理を図示した実施形態との関連で説明し、図示してきたが、そのような原理を逸脱することなく、この図示した実施形態の構成および詳細を変更できることが理解されよう。したがって、頭記の特許請求の範囲およびそれと等価のものの範囲および趣旨内に入る得るすべてのそのような変更は、本発明として請求されるものである。
【図面の簡単な説明】
【図１】  可変から可変へのエントロピー符号化を実現するのに使用することが可能なコンピュータシステムのブロック図である。
【図２】  基本通信モデルを示す図である。
【図３】  可変長記号グループに対する可変長エントリを有するコードブックの作成を示す流れ図である。
【図４】  アルファベット｛Ａ，Ｂ，Ｃ｝に対する、図３に準拠するコードブックの作成を示す図である。
【図５】  アルファベット｛Ａ，Ｂ，Ｃ｝に対する、図３に準拠するコードブックの作成を示す図である。
【図６】  アルファベット｛Ａ，Ｂ，Ｃ｝に対する、図３に準拠するコードブックの作成を示す図である。
【図７】  アルファベット｛Ａ，Ｂ，Ｃ｝に対する、図３に準拠するコードブックの作成を示す図である。
【図８】  アルファベット｛Ａ，Ｂ，Ｃ｝に対する、図３に準拠するコードブックの作成を示す図である。
【図９】  アルファベット｛Ａ，Ｂ，Ｃ｝に対する、図３に準拠するコードブックの作成を示す図である。
【図１０】  アルファベット｛Ａ，Ｂ，Ｃ｝に対する、図３に準拠するコードブックの作成を示す図である。
【図１】
0004559631.tif 000004
【図２】
0004559631.tif 000005
【図３】
0004559631.tif 000006
【図４】
0004559631.tif 000007
【図５】
0004559631.tif 000008
【図６】
0004559631.tif 000009
【図７】
0004559631.tif 000010
【図８】
0004559631.tif 000011
【図９】
0004559631.tif 000012
【図１０】
0004559631.tif 000013