(57)【特許請求の範囲】
【請求項１】
変換係数を変換係数トークンのアルファベットを使用して復号化する装置であって、
メモリと、
前記メモリに格納された命令を実行して、
第１のコンテキストに対応する第１の確率分布を選択し、前記第１の確率分布は、アルファベットのすべての変換係数トークンに対して定義されており、
第２のコンテキストに対応する第２の確率分布を選択し、前記第２の確率分布は、前記変換係数トークンの非自明なパーティションに亘って定義され、前記変換係数トークンの前記非自明なパーティションは前記アルファベットを１より多い前記変換係数トークンの重複しない複数のサブセットに分割し、前記複数のサブセットは１つの前記変換係数トークンからなる少なくとも１つの第１のサブセットと複数の前記変換係数トークンからなる少なくとも１つの第２のサブセットを含み、前記第１のサブセットの変換係数トークンは前記第２のサブセットの変換係数トークンよりも頻繁に使用される変換係数トークンであり、
前記変換係数トークンが前記非自明なパーティションのシングルトン要素に含まれると決定することにより、前記第２の確率分布が前記変換係数トークンに関する確率を含むという決定に応答して、
前記第１の確率分布を用いることにより得られる第１の条件付き確率と前記第２の確率分布を用いることにより得られる第２の条件付き確率とを線形結合してミックス済みの確率を生成し、
符号化されたビットストリームから、前記ミックス済みの確率を使用して前記変換係数トークンをエントロピー復号化する
ように構成されたプロセッサと、を備える装置。
【請求項２】
前記命令は、
前記変換係数トークンが前記非自明なパーティションのシングルトン要素に含まれないとの決定に応じて、前記第１の確率分布を使用して、前記変換係数トークンを符号化されたビットストリームからエントロピー復号化する命令をさらに含む、請求項１に記載の装置。
【請求項３】
前記第１の確率分布は、前記第１のコンテキストから取得された確率分布である、請求項１または２に記載の装置。
【請求項４】
前記第２の確率分布は、コンテキストの下で前記変換係数トークンが観測された分布を示す実際の分布である、請求項１乃至３のいずれか一項に記載の装置。
【請求項５】
前記変換係数トークンを符号化されたビットストリームからエントロピー復号化するために前記ミックス済みの確率を生成することは、
前記第１の確率分布を使用して、前記変換係数トークンを復号化するための前記第１の条件付き確率を決定すること、
前記第２の確率分布を使用して、前記変換係数トークンを復号化するための前記第２の条件付き確率を決定すること、
を含み、
前記第１の条件付き確率はトークンのシーケンスにおける先の変換係数トークンが与えられたときの前記変換係数トークンの条件付き確率であり、前記シーケンスは前記変換係数トークンに続く前記先の変換係数トークンを含み、前記先の変換係数トークンは前記変換係数トークンの前にコード化され、
前記第２の条件付き確率は、前記トークンのシーケンスにおける前記先の変換係数トークンが与えられたときの前記非自明なパーティションの前記シングルトン要素の条件付き確率である、
請求項１に記載の装置。
【請求項６】
前記変換係数トークンに対応する変換係数は、変換ブロックの位置にあり、前記第２のコンテキストは、前記位置に隣接する位置のゼロ係数の数を使用して決定される、請求項１乃至５のいずれか一項に記載の装置。
【請求項７】
前記位置に隣接する位置は、スキャン順序に基づく、請求項６に記載の装置。
【請求項８】
トークンのアルファベットは、係数トークンツリーで構成され、
前記第１の確率分布は、前記係数トークンツリーの内部ノードに関して定義され、
前記第２の確率分布は、前記係数トークンツリーのすべてではないが、一部の内部ノードに関して定義され、
符号化されたビットストリームから前記変換係数トークンをエントロピー復号化することは、前記ミックス済みの確率を使用して、前記係数トークンツリーの第１の内部ノードに関連する第１の決定を復号化することを含む、請求項１乃至７のいずれか一項に記載の装置。
【請求項９】
変換係数をトークンのアルファベットを使用してコーディングする方法であって、
第１のコンテキストに対応する第１の確率分布を選択するステップと、前記第１の確率分布は、アルファベットの一部のトークンに対して定義されており、
第２のコンテキストに対応する第２の確率分布を選択するステップと、前記第２の確率分布は、前記トークンの非自明なパーティションに亘って定義され、前記トークンの前記非自明なパーティションは前記アルファベットを１より多い前記トークンの重複しない複数のサブセットに分割し、前記複数のサブセットは１つの前記トークンからなる第１のサブセットと複数の前記トークンからなる第２のサブセットを含み、前記第１のサブセットに含まれるトークンは前記第２のサブセットに含まれるトークンよりも頻繁に使用されるトークンであり、
前記第１の確率分布が変換係数に対応するトークンに関する確率を含み、前記第２の確率分布が前記非自明なパーティションのシングルトン要素であると決定された前記トークンに関する第２の確率を含んでいるという決定に応答して、
前記第１の確率分布を用いることにより得られる第１の条件付き確率と前記第２の確率分布を用いることにより得られる第２の条件付き確率とを線形結合してミックス済みの確率を生成するステップと、
前記ミックス済みの確率を使用して前記トークンをコーディングするステップと
を含む方法。
【請求項１０】
前記トークンが前記非自明なパーティションのシングルトン要素に含まれないとの決定に応じて、前記第１の確率分布を使用してトークンをエントロピーコーディングするステップをさらに含む、請求項９に記載の方法。
【請求項１１】
前記第１の確率分布は、コンテキストから取得した確率分布を示すコーディング分布である、請求項９または１０に記載の方法。
【請求項１２】
前記第２の確率分布は、コンテキストの下で前記トークンが観測された分布を示す実際の分布である、請求項９乃至１１のいずれか一項に記載の方法。
【請求項１３】
前記トークンをエントロピーコーディングするために前記ミックス済みの確率を生成することは、
前記第１の確率分布を使用して、前記トークンをコーディングするための前記第１の条件付き確率を決定すること、
前記第２の確率分布を使用して、前記トークンをコーディングするための前記第２の条件付き確率を決定こと、
を含み、
前記第１の条件付き確率はトークンのシーケンスにおける先のトークンに関連する前記トークンの条件付き確率であり、前記シーケンスは前記トークンに続く前記先のトークンを含み、前記先のトークンは前記トークンの前にコード化され、
前記第２の条件付き確率は、前記トークンのシーケンスにおける前記先のトークンに関連する前記非自明なパーティションの前記シングルトン要素の条件付き確率である、
請求項９に記載の方法。
【請求項１４】
前記変換係数はある位置にあり、前記第２のコンテキストは、隣接する位置にあるゼロ係数の数を使用して決定される、請求項９乃至１３のいずれか一項に記載の方法。
【請求項１５】
前記隣接する位置は、スキャン順序に基づく、請求項１４に記載の方法。
【請求項１６】
係数トークンツリーに編成されたトークンのアルファベットを使用して変換係数を復号化する装置であって、
メモリと、
前記メモリに格納された命令を実行して、
第１のコンテキストに対応する第１の確率分布を選択し、前記第１の確率分布は、係数トークンツリーの内部ノードに関して定義されており、
第２コンテキストに対応する第２の確率分布を選択し、前記第２の確率分布は、前記係数トークンツリーのすべてではないが、一部の内部ノードに対して定義されており、
ミックス済みの確率を使用して前記係数トークンツリーの第１の内部ノードに関連する第１の決定を復号化することによりトークンを復号化し、前記ミックス済みの確率は前記第１の確率分布を用いることにより得られる第１の条件付き確率と前記第２の確率分布を用いることにより得られる第２の条件付き確率とを線形結合することにより生成され、
前記第１の確率分布を使用して、前記係数トークンツリーの第２の内部ノードに関連する第２の決定を復号化する、
ように構成されたプロセッサとを備え、
前記第１の内部ノードは、前記第２の内部ノードよりも頻繁に使用されるノードである、
装置。
【請求項１７】
前記第１の内部ノードは、ブロック終了を示す請求項１６に記載の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
デジタルビデオストリームは、一連のフレームまたは静止画像を使用してビデオを表現し得る。デジタルビデオは、例えば、ビデオ会議、高解像度ビデオエンターテイメント、ビデオ広告、またはユーザ生成ビデオの共有など、様々な用途に使用することができる。デジタルビデオストリームは、大量のデータを含み、かつビデオデータの処理、送信、または記憶のために、コンピューティングデバイスの大量のコンピューティングリソースまたは通信リソースを消費する。ビデオストリームのデータ量を低減するために、圧縮やその他の符号化技術を含む、様々なアプローチが提案されている。
【０００２】
動き推定および動き補償に基づく符号化は、フレームまたは画像を、参照フレームの１つまたは複数の予測ブロックに基づいて予測されるブロックに分割することにより実行され得る。ブロックと予測ブロックとの間の差分（即ち、残余誤差）は、ビットストリームで圧縮および符号化される。復号化器は、差分と参照フレームを使用して、フレームまたは画像を再構築する。
【発明の概要】
【０００３】
一態様は、メモリおよびプロセッサを含み、変換係数トークンのアルファベットを使用して変換係数を復号化する装置である。プロセッサは、メモリに格納された命令を実行して、第１のコンテキストに対応する第１の確率分布を選択し、第２のコンテキストに対応する第２の確率分布を選択し、第２の確率分布が変換係数トークンに関する確率を含んでいるという決定に応答して、第１の確率分布と第２の確率分布とをミキシングして、ミックス済みの確率を生成し、ミックス済みの確率を使用して変換係数トークンを符号化ビットストリームからエントロピー復号化するように構成されている。第１の確率分布は、アルファベットのすべてのトークンに対して定義される。第２の確率分布は、トークンの非自明（ｎｏｎ−ｔｒｉｖｉａｌ）なパーティションに亘って定義される。空でないセットＸに関して、セットＸの「非自明なパーティション」は、セット｛Ｘ｝以外のＸの任意のパーティションを参照するために、本明細書で使用され得る。即ち、セット｛Ｘ｝の「自明でないパーティション」は、セット｛Ｘ｝の適切なサブセットであり得る。
【０００４】
別の態様は、トークンのアルファベットを使用して変換係数をコーディングする方法である。方法は、第１のコンテキストに対応し、かつアルファベットのいくつかのトークンに関して定義される第１の確率分布を選択するステップと、第２のコンテキストに対応し、かつトークンの非自明なパーティションに亘って定義される第２の確率分布を選択するステップと、第１の確率分布がトークンに関する確率を含み、第２の確率分布がトークンに関する第２の確率を含んでいるという決定に応答して、第１の確率分布と第２の確率分布をミキシングしてミックス済みの確率を生成するステップと、ミックス済みの確率を使用してトークンをコーディングするステップとを含む。
【０００５】
別の態様は、メモリおよびプロセッサを含み、係数トークンツリーに構成されたトークンのアルファベットを使用して変換係数を復号化する装置である。プロセッサは、メモリに格納された命令を実行して、第１のコンテキストに対応し、かつ係数トークンツリーの内部ノードに関して定義された第１の確率分布を選択し、第２のコンテキストに対応し、かつ係数トークンツリーの内部ノードのすべてではないが、一部の内部ノードに関して定義された第２の確率分布を選択し、ミックス済みの確率を使用して係数トークンツリーの第１の内部ノードに関連する第１の決定を復号化することによりトークンを復号化するように構成される。ミックス済みの確率は、第１の確率分布と第２の確率分布をミキシングすることにより生成される。
【０００６】
本開示のこれらおよび他の態様は、実施形態の以下の詳細な説明、添付の特許請求の範囲および添付の図面においてさらに詳細に記載される。
【図面の簡単な説明】
【０００７】
本明細書の記載は、添付の図面を参照し、いくつかの図面に亘って同様の参照番号が同様の構成を参照している。
【図１】ビデオ符号化および復号化システムの概略図である。
【図２】送信局または受信局を具体化することができるコンピューティングデバイスの一例のブロック図である。
【図３】符号化され、続いて復号化されるビデオストリームの図である。
【図４】本開示の実施形態による符号化器のブロック図である。
【図５】本開示の実施形態による復号化器のブロック図である。
【図６】本開示の実施形態による量子化された変換係数を示す図である。
【図７】本開示の実施形態による、ブロックをビデオビットストリームにエントロピーコーディングするために使用することができる係数トークンツリーの図である。
【図８】本開示の実施形態による、量子化された変換係数をバイナリ化するためのツリーの一例の図である。
【図９】本開示の実施形態によるシンボルのシーケンスを符号化するプロセスのフローチャート図である。
【図１０】本開示の実施形態によるシンボルのシーケンスを復号化するプロセスのフローチャート図である。
【図１１】本開示の実施形態による条件付き確率のバイナリツリーの例の図である。
【図１２】本開示の実施形態によるエントロピーコーディングのためのプロセスのフローチャート図である。
【図１３】本開示の実施形態による、変換係数トークンのアルファベットを使用して変換係数をコーディングするプロセスのフローチャート図である。
【図１４】本開示の実施形態によるコンテキストを導出するための近傍テンプレートの図である。
【発明を実施するための形態】
【０００８】
前述したように、ビデオストリームのコーディングに関連する圧縮方式は、画像を複数のブロックに分割し、１つまたは複数の技術を使用してデジタルビデオ出力ビットストリームを生成して、出力に含まれる情報を制限することを含む。受信した符号化ビットストリームを復号化して、限られた情報からブロックとソース画像を再作成することができる。ビデオストリームまたはその一部（フレームやブロックなど）を符号化することは、ビデオストリームで時間的または空間的な類似性を使用して、コーディング効率を向上させることができる。例えば、ビデオストリームの現在のブロックは、以前にコーディングされたピクセル値と現在のブロック内のピクセル値との間の差（残差）を識別することに基づいて符号化され得る。この方法では、残差と、残差の生成に使用されるパラメーターのみを符号化されたビットストリームに追加する必要がある。残差は、不可逆量子化ステップを使用して符号化され得る。
【０００９】
以下でさらに説明するように、残差ブロックはピクセル領域内にある。残差ブロックは、周波数領域に変換されて、変換係数の変換ブロックが得られる。変換係数は量子化され、その結果、量子化された変換係数の量子化された変換ブロックを得ることができる。量子化された係数は、エントロピー符号化され、かつ符号化されたビットストリームに付加される。復号化器は、符号化されたビットストリームを受信し、量子化された変換係数をエントロピー復号化して、元のビデオフレームを再構築することができる。
【００１０】
エントロピーコーディングは、符号化されたビデオビットストリームで発生する値の分布をモデル化する確率モデルに依存する「ロスレス」コーディングに関する手法である。測定または推定された値の分布に基づく確率モデルを使用することにより、エントロピーコーディングは、ビデオデータを表現するために必要なビット数を理論上の最小値に近くまで低減できる。実際には、ビデオデータを表現するのに必要なビット数における実際の低減は、確率モデルの精度、符号化が実行されるビット数、およびコーディングを実行するために使用される固定小数点演算の計算精度の関数とすることができる。
【００１１】
符号化されたビデオビットストリームでは、ビットの多くは、コンテンツ予測（例えば、インターモード／動きベクトルコーディング、イントラ予測モードコーディングなど）または残差コーディング（例えば、変換係数）の２つのうちの一つに関して使用される。符号化器は、係数コーディングに費やされるビット数／ビット量を減少させる技術を使用することができる。例えば、係数トークンツリー（バイナリトークンツリーとも呼ばれ得る）は、このトークンツリーにおける各ブランチに関する前方適応確率により、値の範囲を指定する。トークンベースの値は、符号化される値から減算されて残差が形成され、次いで、ブロックは固定確率を用いて符号化される。後方適応性を含むわずかなバリエーションを有する同様のスキームも可能である。適応技術は、ビデオストリームが符号化されるときに、データの特性の変化に適応するように確率モデルを変更することができる。いずれにしても、復号化器には、ビデオビットストリームを復号化するために、エントロピーコーディングされたビデオビットストリームを符号化するために使用された確率モデルが通知される（または利用可能となる）。
【００１２】
上記したように、シンボルのシーケンスのエントロピーコーディングは、通常、確率モデルを使用してシーケンスに関する確率ｐを決定し、バイナリ算術コーディングを使用して符号化器においてシーケンスをバイナリ符号語にマッピングし、復号化器においてそのシーケンスをバイナリ符号語から復号化することにより達成される。符号語長（即ち、ビット数）は、−ｌｏｇ（ｐ）によって与えられる。エントロピーコーディングの効率は、確率モデルに直接関係する。本明細書全体を通して、ｌｏｇは、特に指定がない限り、底が２の対数関数を表す。
【００１３】
本明細書で使用されるモデルは、ロスレス（エントロピー）コーディングであるか、またはロスレス（エントロピー）コーディングにおけるパラメーターであり得る。モデルは、エントロピーコーディングの確率推定に影響を与える任意のパラメーターまたは方法であり得る。例えば、モデルは、トークンツリー内の内部ノードにおいて決定を符号化および復号化するために使用される確率を（以下の図７に関して説明するように）定義することができる。そのような場合、現在のフレームに関する確率を学習するための２パスプロセスは、本明細書で説明されるように複数のモデルをミキシングすることにより、シングルパスプロセスに簡略化され得る。別の例では、モデルは、特定のコンテキスト導出方法を定義し得る。そのような場合、本開示による実施形態を使用して、多数のそのような方法によって生成されるコーディング確率を自動的にミキシングすることができる。さらに別の例では、モデルは、完全に新たなロスレスコーディングアルゴリズムを定義し得る。
【００１４】
コンテキストモデリングの目的は、算術コーディング、ハフマンコーディング、その他の可変長から可変長へのコーディングエンジンなど、後続のエントロピーコーディングエンジンの確率分布を取得することである。良好な圧縮パフォーマンスを実現するには、多数のコンテキストが必要となり得る。例えば、一部のビデオコーディングシステムは、変換係数のコーディングのみのために数百または数千ものコンテキストを含むことができる。各コンテキストは、確率分布に対応することができる。
【００１５】
確率分布は、復号化器によって学習されるか、かつ／または復号化されるフレームのヘッダーに含まれる。
学習とは、復号化器のエントロピーコーディングエンジンが、復号化されたフレームに基づいてコンテキストモデルの確率分布（即ち、確率モデル）に適応できることを意味する。例えば、復号化器は、復号化器（例えば、復号化器のエントロピーコーディングエンジン）が追加のフレームを復号化するときに、復号化器が継続的に更新することができる初期確率分布を利用可能にすることができる。確率モデルの更新により、復号化されたフレームの実際の分布を反映するように初期確率分布が確実に更新される。
【００１６】
ヘッダーに確率分布を含ませることにより、対応するコンテキストが与えられたときに、次のフレームの復号化に関して含まれた確率分布を使用するように復号化器に指示することができる。コスト（ビット単位）は、各確率分布をヘッダーに含ませることに関連付けられている。例えば、３０００のコンテキストを含み、かつ８ビットを使用して確率分布を符号化する（１〜２５５の整数値としてコーディングされる）コーディングシステムでは、２４，０００ビットが符号化されたビットストリームに追加される。これらのビットは、オーバーヘッドビットである。オーバーヘッドビットの数を低減するために、いくつかの手法を使用することができる。例えば、すべてではなく一部のコンテキストに関する確率分布を含むようにすることができる。例えば、予測スキームを使用してオーバーヘッドビットを低減することもできる。これらのオーバーヘッド低減手法を使用しても、オーバーヘッドはゼロではない。
【００１７】
コンテキストモデリングにおける主要な設計上の課題または問題は、以下でさらに説明する２つの相反する目的の間でバランスを取ることである。１）コンテキストをより多く追加することにより圧縮パフォーマンスを向上させること、２）コンテキストに関連するオーバーヘッドコストを低減させることである。この問題は、部分的には、コンテキストに関連するオーバーヘッドがアルファベットサイズが大きくなるにつれて増大するという事実に起因して、マルチシンボルの非バイナリアルファベットが含まれる場合に特に関連する。
【００１８】
本開示による実施形態は、追加されたコンテキストに関連するオーバーヘッドを制限しながら、コンテキストを追加できるように、選択的ミキシングを使用する。コンテキストは、例えば、変換係数の符号化に使用されるトークンのアルファベットに対する確率分布を定義することができる。選択的ミキシングでは、第１のコンテキストモデルを使用してすべてのトークンに関して定義された第１の確率分布を決定し、第２のコンテキストを使用して頻度の高いトークンに関する第２の確率分布を決定することができる。頻度の高いトークンの数は、すべてのトークンの数よりも少なくなる。係数のコーディングでは、選択的ミキシングにより、頻度の高いトークンに関して第１および第２の確率分布がミキシングされ、残りのトークンに関して第１の確率分布が使用される。
【００１９】
本開示による実施形態は、確率モデルの選択的ミキシングを使用することができる。ミキシングモデルは、エントロピーコーディングを使用して符号化された任意の値の符号化に使用することができる。例えば、量子化された変換係数をエントロピーコーディングするために、２つ以上の確率モデルをミキシングすることができる。本開示による実施形態の利点は、コンテキストに関連するオーバーヘッドの低減および圧縮パフォーマンスの向上を含む。さらに、選択的ミキシングを使用することにより、コーディングシステムにおけるコンテキストモデリングは、一部のコンテキストがアルファベットＥに亘る全体的な分布に影響を与えるコンテキスト情報から導出される一方で、他のコンテキストがアルファベットＥに亘る一部の分布のみに影響を与えるコンテキスト情報から導出されるように設計することができ、これにより、選択的ミキシングを使用しないコーディングシステムと比較して、コンテキストに関連するオーバーヘッドを低減する。
【００２０】
ビデオ圧縮におけるエントロピーコーディングのためのミキシングは、本明細書では最初に、教示が組み込まれ得るシステムに関して説明される。
図１は、ビデオ符号化および復号化システム１００の概略図である。送信局１０２は、例えば、図２に記載されているようなハードウェアの内部構成を有するコンピュータとすることができる。しかしながら、送信局１０２の他の適切な実施形態も可能である。例えば、送信局１０２の処理を複数の装置に分散させることができる。
【００２１】
ネットワーク１０４は、ビデオストリームの符号化および復号化のために、送信局１０２および受信局１０６を接続することができる。具体的には、ビデオストリームを送信局１０２で符号化することができ、符号化されたビデオストリームを受信局１０６で復号化することができる。ネットワーク１０４は、例えば、インターネットであってもよい。ネットワーク１０４は、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、仮想プライベートネットワーク（ＶＰＮ）、携帯電話ネットワーク、または送信局１０２から、この例では、受信局１０６にビデオストリームを転送する任意の他の手段とすることができる。
【００２２】
受信局１０６は、一例では、図２に記載されたようなハードウェアの内部構成を有するコンピュータとすることができる。しかしながら、受信局１０６の他の適切な実施形態も可能である。例えば、受信局１０６の処理を複数の装置に分散させることができる。
【００２３】
ビデオ符号化および復号化システム１００の他の実施形態も可能である。例えば、実施形態はネットワーク１０４を省略することができる。別の実施形態では、ビデオストリームを符号化し、後で受信局１０６またはメモリを有する任意の他の装置に送信するために格納することができる。一実施形態では、受信局１０６は、符号化されたビデオストリームを（例えば、ネットワーク１０４、コンピュータバス、および／または何らかの通信経路を介して）受信し、後の復号化のためにビデオストリームを記憶する。一実施形態では、ネットワーク１０４を介して符号化されたビデオを伝送するためにリアルタイム転送プロトコル（ＲＴＰ：ｒｅａｌ−ｔｉｍｅ  ｔｒａｎｓｐｏｒｔ  ｐｒｏｔｏｃｏｌ）が使用される。別の実施形態では、例えば、ハイパーテキスト転送プロトコル（ＨＴＴＰ：Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）ベースのビデオストリーミングプロトコルなどのＲＴＰ以外の転送プロトコルが使用されてもよい。
【００２４】
ビデオ会議システムで使用される場合、例えば、送信局１０２および／または受信局１０６は、以下に説明するように、ビデオストリームを符号化および復号化する能力を含むことができる。例えば、受信局１０６は、ビデオ会議サーバ（例えば、送信局１０２）から符号化されたビデオビットストリームを受信して復号化および視聴し、さらにそのビデオビットストリームを他の参加者による復号化および視聴のために符号化してビデオ会議サーバに送信するビデオ会議参加者とし得る。
【００２５】
図２は、送信局または受信局を実施することができるコンピューティングデバイス２００の一例のブロック図である。例えば、コンピューティングデバイス２００は、図１の送信局１０２および受信局１０６の一方または両方を実施することができる。コンピューティングデバイス２００は、複数のコンピューティングデバイスを含むコンピューティングシステムの形態、または例えば、携帯電話、タブレットコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、デスクトップコンピュータなどの単一のコンピューティングデバイスの形態とすることができる。
【００２６】
コンピューティングデバイス２００内のＣＰＵ２０２は、中央処理装置とすることができる。代替的に、ＣＰＵ２０２は、現在存在するか、または今後開発される、情報を操作または処理することができる任意の他のタイプのデバイスまたは複数のデバイスであってもよい。開示された実施態様は、図示のような単一のプロセッサ、例えばＣＰＵ２０２で実施することができるが、複数のプロセッサを使用して速度と効率の利点を達成することができる。
【００２７】
コンピューティングデバイス２００内のメモリ２０４は、実施形態では読み出し専用メモリ（ＲＯＭ）デバイスまたはランダムアクセスメモリ（ＲＡＭ）デバイスであってもよい。任意の他の適切なタイプの記憶装置をメモリ２０４として使用することができる。メモリ２０４は、ＣＰＵ２０２がバス２１２を使用してアクセスするコードおよびデータ２０６を含むことができる。メモリ２０４は、オペレーティングシステム２０８およびアプリケーションプログラム２１０をさらに含むことができ、アプリケーションプログラム２１０は、本明細書に記載された方法をＣＰＵ２０２が実行するのを可能にする少なくとも１つのプログラムを含む。例えば、アプリケーションプログラム２１０は、アプリケーション１〜Ｎを含むことができ、アプリケーション１〜Ｎは、本明細書で説明する方法を実行するビデオコーディングアプリケーションをさらに含む。コンピューティングデバイス２００はまた、例えば、モバイルであるコンピューティングデバイス２００と共に使用されるメモリカードとすることができる二次ストレージ２１４を含むことができる。ビデオ通信セッションは、かなりの量の情報を含み得るので、それらは、二次ストレージ２１４に全体的または部分的に記憶され、処理のために必要に応じてメモリ２０４にロードされる。
【００２８】
コンピューティングデバイス２００は、ディスプレイ２１８などの１つまたは複数の出力デバイスを含むこともできる。ディスプレイ２１８は、一例では、ディスプレイを、タッチ入力を感知するように動作可能なタッチセンシティブエレメントと組み合わせたタッチセンシティブディスプレイであってもよい。ディスプレイ２１８は、バス２１２を介してＣＰＵ２０２に接続することができる。ユーザがコンピューティングデバイス２００をプログラムするかまたは他の方法で使用することを可能にする他の出力デバイスが、ディスプレイ２１８に加えて、またはディスプレイ２１８に代えて設けられてもよい。出力デバイスがディスプレイであるか、またはディスプレイを含む場合、ディスプレイは、液晶ディスプレイ（ＬＣＤ）、陰極線管（ＣＲＴ）ディスプレイ、または有機ＬＥＤ（ＯＬＥＤ）ディスプレイなどの発光ダイオード（ＬＥＤ）ディスプレイを含む様々な方法で実施することができる。
【００２９】
コンピューティングデバイス２００は、コンピューティングデバイス２００を操作するユーザの画像等の画像を検出することができる、例えば、カメラなどの撮像デバイス２２０、または現在または将来開発される任意の他の撮像デバイス２２０を含むか、または撮像デバイス２２０と通信することができる。撮像デバイス２２０は、コンピューティングデバイス２００を操作するユーザの方に向けられるように配置することができる。一例では、撮像デバイス２２０の位置および光軸は、視野が、ディスプレイ２１８に直接隣接する領域であって、その領域からディスプレイ２１８が視認可能な領域を含むように構成することができる。
【００３０】
コンピューティングデバイス２００は、コンピューティングデバイス２００の近くの音を感知することができる、例えば、マイクロホンなどの音声感知デバイス２２２、または現在または今後開発される任意の他の音声感知デバイスを含むか、または音声感知デバイス２２２と通信することができる。音声感知デバイス２２２は、コンピューティングデバイス２００を操作するユーザの方に向けられ、かつユーザがコンピューティングデバイス２００を操作している間にユーザによって発せられた例えば音声、他の発話を受信するように構成することができる。
【００３１】
図２は、コンピューティングデバイス２００のＣＰＵ２０２およびメモリ２０４が単一のユニットに統合されていることを示しているが、他の構成を利用することもできる。ＣＰＵ２０２の動作は、直接的にまたはローカルエリアネットワークまたは他のネットワークを介して接続することができる複数のマシン（各マシンは１つまたは複数のプロセッサを有する）にわたって分散させることができる。メモリ２０４は、ネットワークベースのメモリのような複数のマシンに分散されるか、またはコンピューティングデバイス２００の動作を実行する複数のマシンにおけるメモリとすることができる。本明細書では単一のバスとして示されているが、コンピューティングデバイス２００のバス２１２は、複数のバスから構成することができる。さらに、二次ストレージ２１４は、コンピューティングデバイス２００の他の構成要素に直接接続されるか、またはネットワークを介してアクセスされ、かつメモリカードなどの単一の統合されたユニットまたは複数のメモリカードなどの複数のユニットを含むことができる。従って、コンピューティングデバイス２００は、多種多様な構成で実施することができる。
【００３２】
図３は、符号化され、続いて復号化されるビデオストリーム３００の一例の図である。ビデオストリーム３００は、ビデオシーケンス３０２を含む。次のステージでは、ビデオシーケンス３０２はいくつかの隣接フレーム３０４を含む。３つのフレームが隣接フレーム３０４として示されているが、ビデオシーケンス３０２は任意の数の隣接フレーム３０４を含むことができる。隣接フレーム３０４はさらに、個々のフレーム、例えば、フレーム３０６に細分化することができる。次のステージでは、フレーム３０６は、一連のセグメント３０８またはプレーンに分割することができる。セグメント３０８は、例えば、並列処理を可能にするフレームのサブセットとすることができる。セグメント３０８は、ビデオデータを別々の色に分離することができるフレームのサブセットとすることができる。例えば、カラービデオデータのフレーム３０６は、輝度プレーン（ｌｕｍｉｎａｎｃｅ  ｐｌａｎｅ）および２つの色度プレーン（ｃｈｒｏｍｉｎａｎｃｅ  ｐｌａｎｅ）を含むことができる。セグメント３０８は、異なる解像度でサンプリングすることができる。
【００３３】
フレーム３０６がセグメント３０８に分割されているか否かにかかわらず、フレーム３０６は、さらに、フレーム３０６内の例えば１６×１６画素に対応するデータを含むことができるブロック３１０に細分化されてもよい。ブロック３１０は、１つまたは複数のセグメント３０８の画素データからのデータを含むように構成される。ブロック３１０は、４ｘ４画素、８ｘ８画素、１６ｘ８画素、８ｘ１６画素、１６ｘ１６画素、またはそれ以上等の任意の他の適切なサイズであってもよい。
【００３４】
図４は、本開示の実施形態による符号化器４００のブロック図である。符号化器４００は、例えば、メモリ２０４などのメモリに格納されたコンピュータソフトウェアプログラムを提供するなどして、上述のように送信局１０２内で実施することができる。コンピュータソフトウェアプログラムは、ＣＰＵ２０２等のプロセッサによる実行時に、送信局１０２に本明細書で説明した方法でビデオデータを符号化させる機械命令を含むことができる。符号化器４００は、例えば、送信局１０２に含まれる専用のハードウェアとして実施することもできる。符号化器４００は、ビデオストリーム３００を入力として使用してフォワードパス（実線の接続線で示す）において様々な機能を実行して、符号化または圧縮されたビットストリーム４２０を生成するイントラ予測／インター予測ステージ４０２、変換ステージ４０４、量子化ステージ４０６、およびエントロピー符号化ステージ４０８を有する。符号化器４００は、将来のブロックの符号化のためのフレームを再構成する再構成パス（点線の接続線で示す）をも含む。図４において、符号化器４００は、再構成パスにおいて様々な機能を実行する以下のステージ、逆量子化ステージ４１０、逆変換ステージ４１２、再構成ステージ４１４、およびループフィルタリングステージ４１６を有する。符号化器４００の他の構成的な変形例を使用して、ビデオストリーム３００を符号化することができる。
【００３５】
ビデオストリーム３００が符号化のために提示されるとき、フレーム３０６はブロックの単位で処理され得る。イントラ予測／インター予測ステージ４０２において、ブロックは、イントラフレーム予測（イントラ予測とも呼ばれる）またはインターフレーム予測（インター予測とも呼ばれる）、または両方の組み合わせを用いて符号化することができる。いずれの場合でも、予測ブロックを形成することができる。イントラ予測の場合、予測ブロックの全部または一部が、以前に符号化され、かつ再構成された現在のフレーム内のサンプルから形成され得る。インター予測の場合、予測ブロックの全部または一部は、動きベクトルを使用して決定された１つまたは複数の以前に構築された参照フレーム内のサンプルから形成され得る。
【００３６】
次に、引き続き図４を参照して、イントラ予測／インター予測ステージ４０２において予測ブロックが現在のブロックから減算され、残差ブロック（残差とも呼ばれる）が生成される。変換ステージ４０４は、ブロックベースの変換を使用して、残差を、例えば周波数領域の変換係数に変換する。このようなブロックベースの変換は、例えば、離散コサイン変換（ＤＣＴ：Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）および非対称離散サイン変換（ＡＤＳＴ：Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｓｃｒｅｔｅ  Ｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）を含む。他のブロックベースの変換も可能である。さらに、異なる変換の組み合わせを単一の残差に適用することができる。変換の適用の一例では、ＤＣＴは残差ブロックを、変換係数値が空間周波数に基づく周波数領域に変換する。行列の左上の最低周波数（ＤＣ）係数、および行列の右下の最高周波数係数。予測ブロックのサイズ、従って結果の残差ブロックは、変換ブロックのサイズと異なり得ることは注目に値する。例えば、予測ブロックは、別々の変換が適用される小さなブロックに分割され得る。
【００３７】
量子化ステージ４０６は、量子化値または量子化レベルを使用して、変換係数を量子化された変換係数と呼ばれる離散量子値に変換する。例えば、変換係数は、量子化値で除算され、切り捨てられてもよい。次に、量子化された変換係数は、エントロピー符号化ステージ４０８によってエントロピー符号化される。エントロピーコーディングは、トークンツリーおよびバイナリツリーを含む任意の数の技術を使用して実行されてもよい。例えば、使用される予測のタイプ、変換タイプ、動きベクトルおよび量子化値を含み得る、ブロックを復号化するために使用される他の情報とともに、エントロピー符号化された係数は、圧縮されたビットストリーム４２０に出力される。ブロックを復号化するための情報は、圧縮ビットストリーム４２０内のブロック、フレーム、スライス、および／またはセクションヘッダーにエントロピーコーディングされ得る。圧縮されたビットストリーム４２０は、符号化されたビデオストリームまたは符号化されたビデオビットストリームとも称され、これらの用語は本明細書では互換的に使用される。
【００３８】
符号化器４００および復号化器５００（以下に説明する）の両方が、圧縮されたビットストリーム４２０を復号化するために同じ参照フレームを使用することを確実にするために、図４における再構成パス（点線の接続線で示す）が使用される。再構成パスは、逆量子化ステージ４１０で量子化された変換係数を逆量子化すること、および逆変換ステージ４１２で逆量子化された変換係数を逆変換して微分残差ブロック（微分残差とも称される）を生成することを含む以下により詳細に説明される復号化プロセス中に行われる機能と同様の機能を実行する。再構成ステージ４１４において、イントラ予測／インター予測ステージ４０２で予測された予測ブロックを微分残差に加えて、再構成されたブロックが作成される。ブロック化アーチファクトなどの歪みを低減するために、ループフィルタリングステージ４１６が再構成されたブロックに適用される。
【００３９】
符号化器４００の他の変形例を使用して圧縮されたビットストリーム４２０を符号化することができる。例えば、非変換ベースの符号化器４００は、あるブロックまたはフレームに関して変換ステージ４０４を使用せずに残差信号を直接量子化することができる。別の実施形態では、符号化器４００は、量子化ステージ４０６と逆量子化ステージ４１０とを組み合わせて単一のステージにすることができる。
【００４０】
図５は、本開示の実施形態による復号化器５００のブロック図である。復号化器５００は、例えば、メモリ２０４に格納されたコンピュータソフトウェアプログラムを提供することによって、受信局１０６で実施することができる。コンピュータソフトウェアプログラムは、ＣＰＵ２０２などのプロセッサによる実行時に、受信局１０６に、図８および９において以下のように説明した方法でビデオデータを復号化させる機械命令を含む。復号化器５００は、例えば、送信局１０２または受信局１０６に含まれるハードウェアで実施することもできる。復号化器５００は、上述の符号化器４００の再構成パスと同様に、一例では、様々な機能を実行して圧縮されたビットストリーム４２０から出力ビデオストリーム５１６を生成するための以下のステージ、エントロピー復号化ステージ５０２、逆量子化ステージ５０４、逆変換ステージ５０６、イントラ予測／インター予測ステージ５０８、再構成ステージ５１０、ループフィルタリングステージ５１２、およびデブロッキングフィルタリングステージ５１４を含む。圧縮されたビットストリーム４２０を復号化するために復号化器５００の他の構造的な変形例を使用することができる。
【００４１】
圧縮されたビットストリーム４２０が復号化のために提示されると、圧縮されたビットストリーム４２０内のデータ要素が、エントロピー復号化ステージ５０２によって復号化されて、一組の量子化された変換係数が生成される。逆量子化ステージ５０４は、（例えば、量子化された変換係数に量子化値を乗算することにより）量子化された変換係数を逆量子化し、逆変換ステージ５０６は、選択された変換タイプを使用して逆量子化された変換係数を逆変換して、符号化器４００における逆変換ステージ４１２によって生成されたものと同一である微分残差を生成する。圧縮されたビットストリーム４２０から復号化されたヘッダー情報を使用して、復号化器５００は、イントラ予測／インター予測ステージ５０８を用いて、例えばイントラ予測／インター予測ステージ４０２において符号化器４００で生成されたのと同じ予測ブロックを作成する。再構成ステージ５１０において、予測ブロックを微分残差に加えて再構成ブロックが作成される。ループフィルタリングステージ５１２は、ブロッキングアーチファクトを低減するために再構成されたブロックに適用される。再構成されたブロックに他のフィルタリングを適用することができる。一例では、ブロッキング歪を低減するためにデブロッキングフィルタリングステージ５１４が再構成ブロックに適用され、その結果が出力ビデオストリーム５１６として出力される。  出力ビデオストリーム５１６は、復号化されたビデオストリームとも呼ばれ、用語は本明細書では互換的に使用される。
【００４２】
復号化器５００の他の変形例を使用して、圧縮されたビットストリーム４２０を復号化することができる。例えば、復号化器５００は、デブロッキングフィルタリングステージ５１４を用いずに出力ビデオストリーム５１６を生成することができる。復号化器５００のいくつかの実施形態では、デブロッキングフィルタリングステージ５１４は、ループフィルタリングステージ５１２の前に適用される。追加的または代替的に、符号化器４００は、ループフィルタリングステージ４１６に加えて、デブロッキングフィルタリングステージを含む。
【００４３】
図６は、本開示の実施形態による量子化された変換係数を示す図６００である。図６００は、現在のブロック６２０、スキャン順序６０２、量子化された変換ブロック６０４、非ゼロマップ６０６、ブロック終了（ｅｎｄ−ｏｆ−ｂｌｏｃｋ）マップ６２２、およびサインマップ６２６を示している。現在のブロック６２０は、４ｘ４ブロックとして図示されている。しかしながら、任意のブロックサイズが可能である。例えば、現在のブロックは、４ｘ４、８ｘ８、１６ｘ１６、３２ｘ３２のサイズ（即ち、寸法）、または任意の他の正方形または長方形のブロックサイズを有することができる。現在のブロック６２０は、現在のフレームのブロックとすることができる。別の例では、現在のフレームは、ブロックの集合を含むセグメント（図３のセグメント３０８など）、タイル、または同様のものに分割されてもよく、現在のブロックは、パーティションのブロックである。
【００４４】
量子化された変換ブロック６０４は、現在のブロック６２０のサイズに類似したサイズのブロックであり得る。量子化された変換ブロック６０４は、非ゼロ係数（例えば、係数６０８）およびゼロ係数（例えば、係数６１０）を含む。上述したように、量子化された変換ブロック６０４は、現在のブロック６２０に対応する残差ブロックに関する量子化された変換係数を含む。また、上述したように、量子化された変換係数は、図４のエントロピーコーディングステージ４０８などのエントロピーコーディングフェーズによってエントロピーコーディングされる。
【００４５】
量子化された変換係数をエントロピーコーディングすることは、図７に関して以下に説明するように、２値化された変換係数の２値シンボルをコーディングするための条件付き確率の推定値を提供するコンテキストモデル（確率コンテキストモデル、確率モデル、モデル、およびコンテキストとも呼ばれる）の選択を含むことができる。量子化された変換係数をエントロピーコーディングする場合、追加情報が、コンテキストモデルを選択するためのコンテキストとして使用され得る。例えば、以前に符号化された変換係数の大きさは、確率モデルを決定するために少なくとも部分的に使用することができる。
【００４６】
変換ブロックを符号化するために、ビデオコーディングシステムは、スキャン順序で変換ブロックをトラバースし（ｔｒａｖｅｒｓｅ）、量子化された変換係数が個々にトラバースされる（即ち、アクセスされる）ときに、量子化された変換係数を符号化（例えば、エントロピー符号化）し得る。スキャン順序６０２などのジグザグスキャン順序では、変換ブロックの左上隅（ＤＣ係数とも呼ばれる）が最初にトラバースされて符号化され、スキャン順序の次の係数（即ち、「１」とラベル付けされた位置に対応する変換係数）がトラバースされて符号化される。ジグザグスキャン順序（即ち、スキャン順序６０２）では、現在の量子化された変換係数（例えば、符号化されるべき変換係数）の上方でかつ左側のいくつかの量子化された変換係数が最初にトラバースされる。他のスキャン順序も可能である。量子化された変換係数の１次元構造（例えば、配列）は、スキャン順序を使用して２次元の量子化された変換ブロックをトラバースすることによって生じたものとすることができる。
【００４７】
いくつかの例では、量子化された変換ブロック６０４を符号化することは、量子化された変換ブロック６０４のどの量子化された変換係数がゼロであり、どれが非ゼロであるかを示す非ゼロマップ６０６を決定することを含むことができる。非ゼロ係数およびゼロ係数は、非ゼロマップにおいて値１および値ゼロ（０）によりそれぞれ示すことができる。例えば、非ゼロマップ６０６は、係数６０８に対応するデカルト位置（０，０）における非ゼロ６０７と、係数６１０に対応するデカルト位置（２，０）におけるゼロ６０８とを含む。
【００４８】
いくつかの例では、量子化された変換ブロック６０４を符号化することは、ブロック終了マップ６２２を生成すること、およびブロック終了マップ６２２を符号化することを含むことができる。ブロック終了マップは、量子化された変換ブロック６０４の非ゼロの量子化された変換係数が、任意のスキャン順序に関して最後の非ゼロ係数であるかどうかを示す。非ゼロ係数が変換ブロックにおける最後の非ゼロ係数でない場合、そのことは、ブロック終了マップにおいてバイナリビット０（ゼロ）によって示すことができる。一方、非ゼロ係数が変換ブロックにおける最後の非ゼロ係数である場合、ブロック終了マップにおいてバイナリ値１によって示すことができる。例えば、スキャン位置１１に対応する量子化された変換係数（即ち、最後の非ゼロの量子化された変換係数６２８）は、量子化された変換ブロック６０４の最後の非ゼロ係数であるため、それは、１のブロック終了値６２４によって示され、他のすべての非ゼロの変換係数は、ゼロによって示される。
【００４９】
いくつかの例では、量子化された変換ブロック６０４を符号化することは、サインマップ６２６を生成すること、およびサインマップ６２６を符号化することを含むことができる。サインマップ６２６は、量子化された変換ブロック６０４のどの非ゼロの量子化された変換係数が正の値を有し、どの非ゼロの量子化された変換係数が負の値を有するかを示す。ゼロの変換係数は、サインマップで示される必要はない。サインマップ６２６は、量子化された変換ブロック６０４に関するサインマップを示している。サインマップでは、負の量子化された変換係数をゼロ（０）で示し、正の量子化された変換係数を１で示すことができる。
【００５０】
図７は、本開示の実施形態に従ってブロックをビデオビットストリームにエントロピーコーディングするために使用することができる係数トークンツリー７００の図である。係数トークンツリー７００は、ツリーの各ノードにおいて、２つのブランチのうちの１つを取る（即ち、トラバースする）必要があるため、バイナリツリーと呼ばれる。係数トークンツリー７００は、ＡおよびＢとラベル付けされたノードにそれぞれ対応するルートノード７０１およびノード７０３を含む。
【００５１】
図６に関して上述したように、ブロックに関してブロック終了（ＥＯＢ）トークンが検出されると、現在のブロックの係数のコーディングは終了し、ブロックにおける残りの係数はゼロであると推測される。そのため、ＥＯＢ位置のコーディングは、ビデオコーディングシステムにおける係数の重要な部分になる。
【００５２】
いくつかのビデオコーディングシステムでは、現在のトークンが現在のブロックのＥＯＢトークンに等しいか（否か）を決定するバイナリ決定は、非ゼロ係数が復号化された直後または最初のスキャン位置（ＤＣ）において符号化される。一例では、サイズＭｘＮの変換ブロックの場合、Ｍは変換ブロックにおける列の数を示し、Ｎは行の数を示し、現在のトークンがＥＯＢトークンと等しいかどうかの最大コーディング回数はＭｘＮと等しい。ＭおよびＮは、値２、４、８、１６、３２、６４などの値を取ることができる。以下で説明するように、バイナリ決定は、係数トークンツリー７００におけるルートノード７０１からノード７０３に移動する決定に対応する「１」ビットのコーディングに対応する。本明細書において、「ビットをコーディングする」とは、符号化される変換係数を表す符号語におけるビットの出力または生成を意味する。同様に、「ビットの復号化」とは、ビットが係数トークンツリー内でトラバースされるブランチに対応するように、復号化される量子化された変換係数に対応する符号語のビットの（符号化されたビットストリームなどからの）読み取りを意味する。
【００５３】
係数トークンツリー７００を使用して、量子化された変換ブロック（例えば、図６の量子化された変換ブロック６０４）の量子化された係数（例えば、図６の係数６０８、６１０）に対して２進数列が生成される。
【００５４】
一例では、Ｎ×Ｎブロック（例えば、量子化された変換ブロック６０４）内の量子化された係数は、所定のスキャン順序（例えば、図６のスキャン順序６０２）に従って１Ｄ（一次元）配列（ここでは、配列ｕ）に編成される。Ｎは、４、８、１６、３２、または任意のその他の値にすることができる。１Ｄ配列のｉ番目の位置における量子化された係数は、ｕ［ｉ］として参照される。ここで、ｉ＝０，…，Ｎ＊Ｎ−１である。ｕ［ｉ］，…，ｕ［Ｎ＊Ｎ−１］における最後の連続のゼロの開始位置は、ｅｏｂとして表すことができる。ｕ［Ｎ＊Ｎ−１］がゼロでない場合、値Ｎ＊Ｎに設定することができる。即ち、１Ｄ配列ｕの最後の係数がゼロでない場合、ｅｏｂは、値Ｎ＊Ｎに設定することができる。図６の例を使用すると、１Ｄ配列ｕは次のエントリｕ［］＝［−６、０、−１、０、２、４、１、０、０、１、０、−１、０、０、０、０］を有することができる。ｕ［ｉ］の各々における値は、量子化された変換係数である。本明細書では、１Ｄ配列ｕの量子化された変換係数は、単に「係数」または「変換係数」と呼ぶこともある。位置ｉ＝０における係数（即ち、ｕ［０］＝−６）は、ＤＣ係数に対応している。この例では、１Ｄ配列ｕの位置１２におけるゼロ係数の後に非ゼロ係数がないため、ｅｏｂは、１２に等しくなる。
【００５５】
ｉ＝０〜Ｎ＊Ｎ−１に関する係数ｕ［ｉ］，…，ｕ［Ｎ＊Ｎ−１］を符号化および復号化するために、トークンｔ［ｉ］が各位置ｉ＜＝ｅｏｂにおいて生成される。ｉ＜ｅｏｂに関して、トークンｔ［ｉ］は、ｕ［ｉ］における対応する量子化された変換係数のサイズおよび／またはサイズ範囲を示すことができる。ｅｏｂにおいて量子化された変換係数に関するトークンは、ＥＯＢ＿ＴＯＫＥＮとすることができる。ＥＯＢ＿ＴＯＫＥＮは、１Ｄ配列ｕがｅｏｂ位置に続く非ゼロ係数が（包含的に）含まれないことを示すトークンである。即ち、ｔ［ｅｏｂ］＝ＥＯＢ＿ＴＯＫＥＮは、現在のブロックのＥＯＢ位置を示す。以下の表Ｉは、ＥＯＢ＿ＴＯＫＥＮを除くトークン値の例、および本開示の実施形態によるそれらの値と対応する名前のリストを提供する。
【００５６】
【表１】
0006923677.tif 000002
一例では、量子化された係数値は、符号付き１２ビット整数であると見なされる。量子化された係数値を表すために、１２ビットの符号付き値の範囲を１１個のトークン（表Ｉのトークン０−１０）とブロック終了トークン（ＥＯＢ＿ＴＯＫＥＮ）に分割することができる。トークンを生成して量子化された係数値を表すために、係数トークンツリー７００をトラバースすることができる。ツリーをトラバースした結果（即ち、ビット列）は、図４のエントロピー符号化ステージ４０８に関して説明した符号化器によってビットストリーム（図４のビットストリーム４２０など）に符号化することができる。
【００５７】
係数トークンツリー７００は、ＥＯＢ＿ＴＯＫＥＮ（トークン７０２）、ＺＥＲＯ＿ＴＯＫＥＮ（トークン７０４）、ＯＮＥ＿ＴＯＫＥＮ（トークン７０６）、ＴＷＯ＿ＴＯＫＥＮ（トークン７０８）、ＴＨＲＥＥ＿ＴＯＫＥＮ（トークン７１０）、ＦＯＵＲ＿ＴＯＫＥＮ（トークン７１２）、ＣＡＴ１（表ＩのＤＣＴ＿ＶＡＬ＿ＣＡＴ１であるトークン７１４）、ＣＡＴ２（表ＩのＤＣＴ＿ＶＡＬ＿ＣＡＴ２であるトークン７１６）、ＣＡＴ３（表ＩのＤＣＴ＿ＶＡＬ＿ＣＡＴ３であるトークン７１８）、ＣＡＴ４（表ＩのＤＣＴ＿ＶＡＬ＿ＣＡＴ４であるトークン７２０）、ＣＡＴ５（表ＩのＤＣＴ＿ＶＡＬ＿ＣＡＴ５であるトークン７２２）、およびＣＡＴ６（表ＩのＤＣＴ＿ＶＡＬ＿ＣＡＴ６であるトークン７２４）のトークンを含む。上記から分かるように、係数トークンツリーは、単一の量子化された係数値を、トークン７０４、７０６、７０８、７１０、および７１２のうちの１つなどの単一のトークンにマッピングする。トークン７１４、７１６、７１８、７２０、７２２、および７２４などの他のトークンは、量子化された係数値の範囲を表す。例えば、３７の値を有する量子化された変換係数は、トークンＤＣＴ＿ＶＡＬ＿ＣＡＴ５（図７のトークン７２２）によって表すことができる。
【００５８】
トークンに関するベース値は、その範囲の最小値として定義される。例えば、トークン７２０のベース値は１９である。エントロピーコーディングは、各量子化された係数に関するトークンを識別し、トークンが範囲を表す場合、量子化された係数からベース値を減算することにより残差を形成することができる。例えば、２０の値を有する量子化された変換係数は、復号化器が元の量子化された変換係数を再構築可能となるように、トークン７２０に含まれることによって、符号化されたビデオビットストリームにおいて１（即ち、２０マイナス１９）の残差値によって表される。ブロック終了のトークン（即ち、トークン７０２）は、変換されたブロックデータにおいてさらに非ゼロの量子化された係数が残っていないことを通知する。
【００５９】
係数コーディングのトークン値の別の例では、表１は２つに分割されている。第１（ヘッド）のセットは、ＺＥＲＯ＿ＴＯＫＥＮ、ＯＮＥ＿ＮＯＥＯＢ、ＯＮＥ＿ＥＯＢ、ＴＷＯ＿ＮＯＥＯＢ、およびＴＷＯ＿ＥＯＢを含み、第２（テール）のセットは、ＴＷＯ＿ＴＯＫＥＮ、ＴＨＲＥＥ＿ＴＯＫＥＮ、ＦＯＵＲ＿ＴＯＫＥＮ、ＤＣＴ＿ＶＡＬ＿ＣＡＴ１、ＤＣＴ＿ＶＡＬ＿ＣＡＴ２、ＤＣＴ＿ＶＡＬ＿ＣＡＴ３、ＤＣＴ＿ＶＡＬ＿ＣＡＴ４、ＤＣＴ＿ＶＡＬ＿ＣＡＴ５、およびＤＣＴ＿ＶＡＬ＿ＣＡＴ６を含む。第２（テール）のセットは、第１（ヘッド）のセットのＴＷＯ＿ＥＯＢまたはＴＷＯ＿ＮＯＥＯＢが符号化または復号化されている場合にのみ、使用される。トークンＯＮＥ＿ＮＯＥＯＢおよびＴＷＯ＿ＮＯＥＯＢは、係数トークンツリー７００のトラバースがノード７０３で開始されるとき（即ち、ｃｈｅｃｋＥｏｂ＝０のとき）、ＯＮＥ＿ＴＯＫＥＮおよびＴＷＯ＿ＴＯＫＥＮにそれぞれ対応する。トークンＯＮＥ＿ＥＯＢおよびＴＷＯ＿ＥＯＢは、ＯＮＥ＿ＴＯＫＥＮおよびＴＷＯ＿ＴＯＫＥＮ（即ち、ルートノード７０１において開始される係数トークンツリー７００のトラバース）であるか、またはそれらにそれぞれ対応することができる。係数トークンツリー７００のツリートラバースおよびｃｈｅｃｋＥｏｂについては、以下でさらに説明する。
【００６０】
（図４のエントロピー符号化ステージ４０８によるなど）バイナリ算術符号化エンジンを使用することによりトークンｔ［ｉ］を符号化または復号化するために、係数トークンツリー７００を使用することができる。係数トークンツリー７００は、ルートノード７０１（即ち、Ａとラベル付けされたノード）から開始してトラバースされる。係数トークンツリーをトラバースすることにより、例えば、バイナリ算術コーディングを使用してビットストリームに符号化されるビット列（符号語）が生成される。ビット列は、現在の係数（即ち、符号化されている量子化された変換係数）の表現である。
【００６１】
現在の係数がゼロであり、残りの変換係数に非ゼロの値が存在しない場合、トークン７０２（即ち、ＥＯＢ＿ＴＯＫＥＮ）がビットストリームに追加される。これは、例えば、図６のスキャン順序の位置１２における変換係数の場合である。一方、現在の係数が非ゼロの場合、または現在のブロックの残りの係数に非ゼロの値がある場合、「１」ビットが符号語に追加され、トラバースがノード７０３（即ち、Ｂとラベル付けされたノード）に移る。ノードＢでは、現在の係数がテストされて、現在の係数がゼロに等しいかどうかが確認される。現在の係数がゼロに等しい場合、左側のブランチが取られて、値ＺＥＲＯ＿ＴＯＫＥＮおよびビット「０」を表すトークン７０４が符号語に追加される。現在の係数がゼロに等しくない場合、ビット「１」が符号語に追加され、トラバースがノードＣを通過する。ノードＣにおいて、現在の係数が１より大きいかどうかを確認するためにテストされる。現在の係数が１に等しい場合、左側のブランチが取られて、値ＯＮＥ＿ＴＯＫＥＮを表すトークン７０６がビットストリームに追加される（即ち、「０」ビットが符号語に追加される）。現在の係数が１より大きい場合、トラバースはノードＤに移って、現在の係数の値を値４と比較してチェックする。現在の係数が４以下の場合、トラバースはノードＥに移り、「０」ビットが符号語に追加される。ノードＥにおいて、値「２」と等しいかどうかのテストが行われ得る。真の場合、値「２」を表すトークン７０６がビットストリームに追加される（即ち、ビット「０」が符号語に追加される）。真でない場合、ノードＦにおいて、現在の係数が値「３」または値「４」のいずれであるか、ビットストリームに対して適宜トークン７１０（即ち、ビット「０」が符号語に追加される）またはトークン７１２（即ち、ビット「１」が符号語に追加される）のいずれであるか等々がテストされる。
【００６２】
基本的に、左の子ノードへのトラバース時に「０」ビットが符号語に追加され、右の子ノードへのトラバース時に符号語に「１」ビットが追加される。圧縮されたビットストリームから符号語を復号化するときに、復号化器によって同様のプロセスが実行される。復号化器はビットストリームからビットを読み取る。ビットが「１」の場合、係数トークンツリーは右にトラバースされ、ビットが「０」の場合、ツリーは左にトラバースされる。復号化器は次のビットを読み取り、ツリーのトラバースがリーフノード（即ち、トークン）に到達するまでプロセスを繰り返す。一例として、トークンｔ［ｉ］＝ＴＨＲＥＥ＿ＴＯＫＥＮを符号化するには、ルートノード（即ち、ルートノード７０１）から開始して、１１１０１０のバイナリ列が符号化される。別の例として、符号語１１１００を復号化すると、トークンＴＷＯ＿ＴＯＫＥＮが生成される。
【００６３】
左および右の子ノードへの「０」ビットと「１」ビットとの間の対応は、符号化および復号化のプロセスを記述するために使用される規則に過ぎないことに留意されたい。いくつかの実施形態では、例えば、「１」が左の子ノードに対応し、「０」が右の子ノードに対応する規則など、異なる規則を使用することができる。符号化器および復号化器の両方が同じ規則を導入している限り、本明細書で説明するプロセスが適用される。
【００６４】
ＥＯＢ＿ＴＯＫＥＮは非ゼロ係数の後でのみ可能であるため、ｕ［ｉ−１］がゼロである場合（即ち、１Ｄ配列ｕの位置ｉ−１における量子化された変換係数がゼロに等しい場合）、復号化器は、最初のビットが１でなければならないことを推測することができる。ツリーをトラバースする際に、ゼロ変換係数（例えば、図６のジグザグスキャン順序の位置１における変換係数）に続く変換係数（例えば、図６のジグザグスキャン順序の位置２の変換係数）に関して、トラバースは必ずルートノード７０１からノード７０３に移動するので、最初のビットは１でなければならない。
【００６５】
そのため、バイナリフラグｃｈｅｃｋＥｏｂを使用して、係数トークンツリー７００におけるルートノードから開始される最初のビットの符号化および復号化をスキップするように符号化器および復号化器に指示することができる。実際には、バイナリフラグｃｈｅｃｋＥｏｂが０（即ち、ルートノードがチェックされるべきではないことを示す）である場合、係数トークンツリー７００のルートノード７０１はスキップされ、ノード７０３はトラバースのためにアクセスされる係数トークンツリー７００の最初のノードとなる。即ち、ルートノード７０１がスキップされると、符号化器は符号化をスキップすることができ、復号化器は復号化をスキップして、符号化列の最初のビット（即ち、バイナリビット「１」）を推測することができる。
【００６６】
ブロックの符号化または復号化の開始時に、バイナリフラグｃｈｅｃｋＥｏｂを１に初期化することができる（即ち、ルートノードをチェックする必要があることを示す）。以下のステップは、ＮｘＮブロック内の量子化された変換係数を復号化するプロセスの一例を示す。
【００６７】
ステップ１において、バイナリフラグｃｈｅｃｋＥｏｂがゼロ（即ち、ｃｈｅｃｋＥｏｂ＝０）に設定され、インデックスもゼロ（即ち、ｉ＝０）に設定される。
ステップ２において、（１）バイナリフラグｃｈｅｃｋＥｏｂが１に等しい場合、フル係数トークンツリー（即ち、係数トークンツリー７００のルートノード７０１から開始）を使用すること、または（２）ｃｈｅｃｋＥｏｂが０に等しい場合、ＥＯＢ＿ＴＯＫＥＮがスキップされる部分ツリー（例えば、ノード７０３から開始）を使用することのいずれかによりトークンｔ［ｉ］が復号化される。
【００６８】
ステップ３において、トークンｔ［ｉ］＝ＥＯＢ＿ＴＯＫＥＮである場合、量子化された変換係数ｕ［ｉ］，…，ｕ［Ｎ＊Ｎ−１］はすべてゼロになり、復号化プロセスは終了する。それ以外の場合、必要に応じて（即ち、ｔ［ｉ］がＺＥＲＯ＿ＴＯＫＥＮと等しくない場合）追加ビットが復号化されて、ｕ［ｉ］を再構築する。
【００６９】
ステップ４において、ｕ［ｉ］がゼロに等しい場合、バイナリフラグｃｈｅｃｋＥｏｂが１に設定され、それ以外の場合、ｃｈｅｃｋＥｏｂが０に設定される。即ち、ｃｈｅｃｋＥｏｂは、値（ｕ［ｉ］！＝０）に設定することができる。
【００７０】
ステップ５において、インデックスｉがインクリメントされる（即ち、ｉ＝ｉ＋１）。
ステップ６において、量子化された変換係数がすべて復号化されるまで（即ち、インデックスｉ＝Ｎ＊Ｎまで）、またはＥＯＢ＿ＴＯＫＥＮが復号化されるまで、ステップ２〜５が繰り返される。
【００７１】
上記のステップ２において、トークンｔ［ｉ］を復号化することは、コンテキストｃｔｘを決定するステップと、コンテキストｃｔｘからバイナリ確率分布（即ち、モデル）を決定するステップと、決定された確率分布を使用することにより、ブール演算コード（Ｂｏｏｌｅａｎ  ａｒｉｔｈｍｅｔｉｃ  ｃｏｄｅ）を使用して係数トークンツリー７００のルートノードからリーフノードへのパスを復号化するステップを含むことができる。コンテキストｃｔｘは、コンテキスト導出の方法を使用して決定することができる。コンテキスト導出の方法は、ブロックサイズ、プレーンタイプ（即ち、輝度または色度）、位置ｉ、および以前に復号化されたトークンｔ［０］，…，ｔ［ｉ−１］のうちの１つまたは複数を使用して、コンテキストｃｔｘを決定することができる。他の基準を使用して、コンテキストｃｔｘを決定することができる。バイナリ確率分布は、ｃｈｅｃｋＥＯＢ＝１の場合はルートノード７０１から、ｃｈｅｃｋＥＯＢ＝０の場合はノード７０３から開始する、係数トークンツリー７００の任意の内部ノードに関して決定することができる。
【００７２】
いくつかの符号化システムでは、コンテキストｃｔｘが与えられたときに、トークンｔ［ｉ］を符号化または復号化するために使用される確率は、固定され、かつ画像（即ち、フレーム）に適応していなくてもよい。例えば、確率は、任意のコンテキストｃｔｘに対して定義されたデフォルト値であり得るか、または確率は、そのフレームに関するフレームヘッダーの一部として符号化（即ち、通知）され得る。フレームをコーディングする際に、すべてのコンテキストに関する確率をコーディングすることは、コストがかかる。そのため、符号化器は、各コンテキストに関して、フレームヘッダーでコンテキストに関連する確率をコーディングし、バイナリフラグを使用して復号化器にその決定を通知することが有益かどうかを分析し得る。さらに、コンテキストに関する確率をコーディングすることは、（例えば、ビットレートにおける）コストを低減するために、予測を使用し得る。予測は、以前に復号化されたフレーム内の同じコンテキストの確率から導出され得る。
【００７３】
図８は、本開示の実施形態に従って量子化された変換係数をバイナリ化するためのツリー８００の例の図である。ツリー８００は、いくつかのビデオコーディングシステムにおいて量子化された変換係数をバイナリ化するために使用することができるバイナリツリーである。ツリー８００は、バイナリ化、コンテキストモデリング、および量子化された変換係数の符号化および復号化のためのバイナリ算術コーディングのステップを使用するビデオコーディングシステムによって使用することができる。このプロセスは、コンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ：ｃｏｎｔｅｘｔ−ａｄａｐｔｉｖｅ  ｂｉｎａｒｙ  ａｒｉｔｈｍｅｔｉｃ  ｃｏｄｉｎｇ）として参照され得る。例えば、量子化された変換係数ｘを符号化するために、コーディングシステムは以下のステップを実行し得る。量子化された変換係数ｘは、図６の量子化された変換ブロック６０４の任意の係数（例えば、係数６０８）とすることができる。
【００７４】
バイナリ化ステップでは、ツリー８００を使用することにより係数ｘがバイナリ列に最初にバイナリ化される。バイナリ化プロセスは、係数ｘの符号なしの値をバイナリ化し得る。例えば、係数６２８（即ち、値−１）をバイナリ化する場合、値１がバイナリ化される。これにより、ツリー８００をトラバースして、バイナリ列１０が生成される。バイナリ列１０の各ビットは、ビンと呼ばれる。
【００７５】
コンテキスト導出ステップでは、符号化されるべき各ビンに対して、コンテキストが導出される。コンテキストは、ブロックサイズ、プレーンタイプ（即ち、輝度または色度）、係数ｘのブロック位置、および以前に復号化された係数（例えば、可能な場合、左方および／または上方に隣接する（ｎｅｉｇｈｂｏｒｉｎｇ）係数）の１つまたは複数などの情報から導出することができる。他の情報を使用して、コンテキストを導出することができる。
【００７６】
バイナリ算術コーディングステップでは、コンテキストが与えられると、例えば、バイナリ算術コーディングエンジンを使用することにより、ビンは、コンテキストに関連付けられた確率値とともにバイナリ符号語に符号化される。
【００７７】
変換係数をコーディングするステップは、コンテキスト更新と呼ばれるステップを含むことができる。コンテキスト更新ステップでは、ビンが符号化された後、コンテキストに関連付けられた確率がビンの値を反映するように更新される。
【００７８】
次に、長さｎのシーケンスｘｎをコーディング（即ち、符号化または復号化）することに関する確率モデルのミキシングについて説明する。説明を簡略化するために、２つのモデルを使用する。しかしながら、本開示はそれに限定されず、任意の数のモデルをミキシングすることができる。
【００７９】
シンボルのシーケンスｘｎの確率ｐ（ｘｎ）が与えられると、適切に設計されたバイナリ算術コーディングエンジンなどの良好なエントロピーコーディングエンジンは、確率ｐ（ｘｎ）から長さ−ｌｏｇ（ｐ（ｘｎ））のバイナリ列を生成することができる。列の長さは整数であるため、「長さ−ｌｏｇ（ｐ（ｘｎ））のバイナリ列」は、−ｌｏｇ（ｐ（ｘｎ））より大きい最小の整数である長さを有するバイナリ列を意味する。本明細書において、シンボルのシーケンスを指す場合、ｉの上付き文字は、ｉ個のシンボルの長さを有するシーケンスを指し、ｉの下付き文字は、シーケンス内の位置ｉにおけるシンボルを指す。例えば、ｘ５は、１１０１０などの、５個のシンボルのシーケンスを指す。一方、ｘ５は、シーケンス１１０１０の最後の０など、５番目の位置のシンボルを指す。そのため、シーケンスｘｎは、ｘｎ＝ｘ１ｘ２・・・ｘｎとして表現することができる。
【００８０】
本明細書で使用される場合、サブシーケンスｘｉの確率ｐ（ｘｉ）などの確率値は、浮動小数点または固定小数点表現のいずれかを有することができる。従って、これらの値に適用される演算では、浮動小数点演算または固定小数点演算のいずれかを使用し得る。
【００８１】
ｐ１（ｘｎ）＜ｐ２（ｘｎ）となるような２つの確率ｐ１（ｘｎ）およびｐ２（ｘｎ）が与えられると、確率ｐ１（ｘｎ）は、確率ｐ２（ｘｎ）より短くない符号語を生成する。即ち、通常、より小さい確率は、より大きい確率よりもより長い符号語を生成する。
【００８２】
ビデオコーディングでシンボルが生成される基礎となる確率モデルは、通常、不明であるか、かつ／または完全に記述するには複雑すぎるか、または非常にコストがかかりそうである。そのため、エントロピーコーディングで使用するための適切なモデルを設計することは、ビデオコーディングでは困難な問題となる。例えば、あるシーケンスでうまく機能するモデルは、別のシーケンスではパフォーマンスが低下する場合がある。即ち、第１のモデルと第２のモデルが与えられた場合、一部のシーケンスは第１のモデルを使用した方が圧縮率が高くなり、他のシーケンスは第２のモデルを使用した方が圧縮率が高くなる。
【００８３】
いくつかのビデオシステムでは、シーケンスを符号化するための最適なモデルをコーディング（即ち、符号化されたビットストリームの信号）することが可能である。例えば、符号化されるシーケンスが与えられると、ビデオシステムは、利用可能なモデルのすべてまたはサブセットに従ってシーケンスを符号化し、最適な圧縮結果が得られるモデルを選択する。即ち、シーケンスに関する１以上のモデルのセットの中から特定のモデルの選択を符号化することができる。このようなシステムでは、最適なモデルを決定するための第１のパスと、最適なモデルを使用して符号化するための第２のパスとの２パスプロセスが、暗黙的または明示的に実行され得る。２パスプロセスは、例えば、リアルタイムアプリケーションやその他の遅延に敏感なアプリケーションでは実行できない場合がある。
【００８４】
上述したように、複数のモデル（即ち、モデル１、…、Ｍ）がエントロピーコーディングに関して利用可能となり得る。情報の損失なしにシンボルのシーケンスを圧縮するために、算術コーディングに関して有限数のモデルをミキシングすることは、最適な一つのモデルを漸近的に選択するのと同等に良好なことである。これは、ｌｏｇ関数が凹関数であり、−ｌｏｇ関数が凸関数であるという事実から得られる。
【００８５】
上記から、長さｎの有限シーケンスｘｎ＝ｘ１ｘ２・・・ｘｎに関して、不等式（１）は、
【００８６】
【数１】
0006923677.tif 000003
のとおりである。
【００８７】
不等式（１）では、ｗｋは、ｋ番目のモデルの重み係数を示し、ｐｋ（ｘｎ）は、モデルｋによって与えられるｘｎの結合確率を示す。上記したように、確率ｐｋ（ｘｎ）（即ち、シーケンスｘｎのモデルｋによって与えられる確率）および入力としてのｘｎが与えられ、エントロピーコーディングエンジンは、ｘｎを−ｌｏｇｐｋ（ｘｎ）にほぼ等しい長さのバイナリ符号語にマッピングすることができる。
【００８８】
不等式（１）から、利用可能なモデルに関する確率（即ち、
【００８９】
【数２】
0006923677.tif 000004
）の線形（即ち、重み付き）和を取得し、次に線形和の対数を取得することは、常に、モデル１，．．．，Ｍの確率（ｌｏｇｐｋ（ｘｎ））の対数を取得し、次に同じ重み係数｛ｗｋ｝を使用して線形和を実行することと等しいか、またはそれ以下となることが分かる。即ち、不等式の左辺は、常に不等式の右辺以下である。
【００９０】
また、不等式（１）から、Ｍ個のモデルが与えられた場合、シンボルをエントロピーコーディングする前に、モデル１、．．．Ｍの確率をミキシングする方がより有利であることが分かる。即ち、エントロピーコーディングの前に、複数のモデルの確率をミキシングする方が、確率に従ってモデルを選択し、各モデルを使用してビットのシーケンスを個別にコーディングするよりも有利であり得る。異なるモデルをミキシングすることは、圧縮パフォーマンスが向上する（即ち、圧縮率が低下する）可能性が高くなり、かつ最適なモデルを選択してコーディングしてから、選択したモデルを使用してシーケンスをコーディングするのと同じである。
【００９１】
確率ｐｋ（ｘｎ）は、シーケンスｘｎの結合確率である。結合によるコーディングｘｎは、処理の大幅な遅延と高計算量を招く可能性があるため、ビデオコーディングにおいて、ミキシングの用途は、仮にあったとしても、限られている。
【００９２】
シーケンスｘｎの長さｉ（ここで、１≦ｉ≦ｎ）の任意のサブシーケンスに関して、確率ｐｋ（ｘｉ）は、モデルｋ（ここで、ｋ＝１，２）を使用して推定されたサブシーケンスの確率を示す。各モデルに対して対応する重み係数ｗｋを使用すると、式（２）を使用して２つのモデルをミキシングすることができる。
【００９３】
【数３】
0006923677.tif 000005
式（２）では、ｐ〜（ｘｉ）は、サブシーケンスｘｉのミックス済みの確率である。そのため、ミキシングにより、各サブシーケンスｘｉに関する部分的な（または中間の）結果を生成することができる。サブシーケンスｘｉは、ｘｉ＝ｘ１ｘ２ｘ３．．．ｘｉである。第１のモデル（即ち、ｋ＝１）はサブシーケンス確率ｐ１（ｘｉ）を生成し、第２のモデル（即ち、ｋ＝２）はサブシーケンス確率ｐ２（ｘｉ）を生成する。
【００９４】
一例では、どのモデルが優先されるべきかが事前に分かっていない場合があるので、単純なミキシングを使用することができる。例えば、均一な重み付けを使用することができる。即ち、重み係数ｗｋは、ｗｋ＝１／２のように選択することができる。そのため、式（２）は、
【００９５】
【数４】
0006923677.tif 000006
のように書き換えることができる。
【００９６】
ミックス済みの確率ｐ〜（ｘｉ）は、サブシーケンスの確率である。しかしながら、算術コーディングはシンボルごとをベースに実行される（即ち、シンボルのシーケンスでは実行されない）。そのため、ミックス済みの確率ｐ〜（ｘｉ）をエントロピーコーディングに直接使用することはできない。このことは、以下で説明するように、ミックス済みの確率ｐ〜（ｘｉ）を条件付き確率の積に変換することにより対処することができる。また、ミックス済みの確率ｐ〜（ｘｉ）自体が条件付き確率であることに留意されたい。前のシンボルがサブシーケンスｘｉ−１の結果であるとすれば、ミックス済みの確率ｐ〜（ｘｉ）は、特定の値を有する位置ｉにおけるシンボルの確率である。即ち、ミックス済みの確率ｐ〜（ｘｉ）は、式（４）で与えられる。
【００９７】
【数５】
0006923677.tif 000007
基本的な条件付き確率式Ｐ（Ａ│Ｂ）＝Ｐ（Ａ∩Ｂ）／Ｐ（Ｂ）を使用して（ここで、Ｐ（Ａ∩Ｂ）はイベントＡとＢの両方の確率である）、式（４）は、式（５）のように書き換えることができる。
【００９８】
【数６】
0006923677.tif 000008
サブシーケンスｘｉは、サブシーケンスｘｉ−１を含み、かつシンボルｘｉを有しているため、ｘｉおよびｘｉ−１の両方が発生するミックス済みの確率は、ｘｉ単独のミックス済みの確率と同じであることに留意されたい。
【００９９】
式（５）は、式（３）を使用して書き換えることができる。即ち、式（５）のサブシーケンスのミックス済みの確率の各々（即ち、分子および分母）は、モデル確率に関して書き換えることができる。式（５）は式（６）のように書き換えることができる。
【０１００】
【数７】
0006923677.tif 000009
式（６）の第１の量と第２の量にそれぞれ１（即ち、
【０１０１】
【数８】
0006923677.tif 000010
それぞれ）に等しい係数を乗算すると、式（７）
【０１０２】
【数９】
0006923677.tif 000011
が得られる。
【０１０３】
式（７）は式（８）のように記述することができる。
【０１０４】
【数１０】
0006923677.tif 000012
ｉ番目のシンボルまでのシーケンスの符号化の結果として、ｐ１（ｘｉ│ｘｉ−１）およびｐ２（ｘｉ｜ｘｉ−１）の条件付き確率が利用可能であることは注目に値する。エントロピー符号化は、一度に１つのシンボルを符号化し、すべてのシンボルにより符号語（ｘｉまで、およびｘｉを含む）に関する確率を生成するため、これらの条件付き確率は利用可能である。本開示による実施形態では、条件付き確率がミキシングされ、その後、ミックス済みの確率（即ち、ｐ〜（ｘｉ））を使用してシーケンスが符号化（または復号化）される。
【０１０５】
式（８）では、ｗｉ，１およびｗｉ，２は、それぞれ
【０１０６】
【数１１】
0006923677.tif 000013
に等しい重みであり、ｐ１（ｘｉ│ｘｉ−１）およびｐ２（ｘｉ│ｘｉ−１）は、それぞれ
【０１０７】
【数１２】
0006923677.tif 000014
に等しい。そのため、ミックス済みの確率ｐ〜（ｘｉ）は、第１のモデルの条件付き確率（即ち、ｐ１（ｘｉ│ｘｉ−１））と第２のモデルの条件付き確率（即ち、ｐ２（ｘｉ｜ｘｉ−１）の線形結合として表され、条件付き確率の各々には、個々の重み係数が乗算される。
【０１０８】
式（３）を使用して結合分布がミキシングされる場合、均一な重み係数（即ち、１／２）が使用された。しかしながら、（式（８）のように）条件付き確率がミキシングされて使用される場合、重み付け（即ち、第１のモデルに関するｗｉ，１および第２のモデルに関するｗｉ，２）は均一でなくなり得る。第１のモデルの条件付き確率に関する重みｗｉ，１は、第１のモデルによって与えられるｘｉ−１の結合確率を、第１のモデルによって与えられたｘｉ−１の結合確率ｘｉ−１と第２のモデルによって与えられた結合確率ｘｉ−１との和で除算したものに等しい。重みｗｉ，２についても同様に、式（８）において、サブシーケンスｘｉ−１に関して、第１のモデルは第１の確率を提供し、第２のモデルは第２の確率を提供し、ｘｉ−１が与えられたときのｘｉの条件付き確率に関する重み係数は、第１のモデル及び第２のモデルの各々が与えられたときの確率を、両方のモデルが与えられたときの結合確率の和で除算したものに等しい。即ち、条件付き確率のミキシングにおいて、例えば、第１のモデルがサブシーケンスｘｉ−１に関してより高い確率を提供する場合、第１のモデルは、第２のモデルよりもより高い重み係数（即ち、重みｗｉ，１）を有することになる。
【０１０９】
結合確率は、実数であり、重みｗｉ，１およびｗｉ，２の計算は、実数の除算を含む。このため、重みｗｉ，１およびｗｉ，２の計算は、複雑で費用がかかり得る。重みｗｉ，１およびｗｉ，２を固定小数点表現で近似することは、例えば、重みの各々を表す正確なビット数を知ることができ、かつ除算演算を回避できるようにすることが望ましい。
【０１１０】
上述したように、符号語の確率と、確率を使用して生成される符号語のビット単位の長さとの間には、相関関係および／または関係が存在する。即ち、符号語長（即ち、ビット数）は、−ｌｏｇ２（ｐ）によって与えられる。各モデルによって生成された符号語長ｌｋ（ｘｉ−１）を使用して、重みｗｉ，１およびｗｉ，２を近似することができる。即ち、−ｌｏｇ（ｐｋ（ｘ（ｉ−１））は、ｘｉ−１を符号化するためにモデルｋ（ｋ＝１，２）を使用した結果生じるビット単位の符号語長ｌｋ（ｘｉ−１）によって近似することができる。そのため、重みｗｉ，１（および重みｗｉ，２に関して）は、式（９）を使用して近似することができる。
【０１１１】
【数１３】
0006923677.tif 000015
ｌ２（ｉ−１）がｌ１（ｉ−１）に等しい場合、ｗｉ，１＝ｗｉ，２＝０．５となる。一般性を失うことなく、ｌ１（ｉ−１）がｌ２（ｉ−１）よりも小さいと仮定すると、分母を展開し、分母および分子から
【０１１２】
【数１４】
0006923677.tif 000016
を削除することにより、式（９）が得られる。
【０１１３】
長さｉのサブシーケンスのモデルｋに従って長さｌｋ（ｘｉ）を決定するために、仮想的符号化プロセスを使用することができる。仮想的符号化プロセスは、コーディングステップを実行するが、実際の符号語または符号化されたビットストリームへの出力ビットを生成しないプロセスである。目的はｌｋ（ｘｉ）を推定することであり、これは、いくつかのアプリケーションでは、ビットレート（または単純にレート）として解釈されるため、仮想的符号化プロセスは、レート推定プロセスと見なされるか、またはレート推定プロセスと呼ばれる。確率モデルを使用した仮想的符号化プロセスは、シーケンスに関する符号語長を計算または推定する。符号語長は、符号語の生成の有無にかかわらず決定（即ち、測定）され得る。例えば、時間インスタンスｉで、第１のモデルを使用してシーケンスｘｉ−１をコーディングすることにより、長さｌ１（ｉ−１）の符号語が生成され、第２のモデルを使用して長さｌ２（ｉ−１）の符号語が生成される。一例では、複数の仮想的符号化器が使用可能であり、並行して実行できる。例えば、算術符号化器の標準レート推定器を各モデルに対して使用可能とすることができる。各レート推定器は、モデルが与えられたサブシーケンスに対して符号化器によって生成され得る符号語長の推定値を提供することができる（または提供するために使用することができる）。
【０１１４】
時間インスタンスｉにおいて２つの競合するモデルがあると仮定して、第１のモデルが第２のモデルよりも少ないビットを提供する場合、第１のモデルに（式９を使用して）割り当てられた重みは、位置ｘｉ−１のシンボルまでのシーケンスに関して第２のモデルに割り当てられた重みよりも大きくなる。最終的に（即ち、ミックス済みの確率を使用してシーケンスｘｎの符号化が完了したとき）、獲得モデル（即ち、重みが大きいモデル）は、より少ないビットを生成するモデルであり、これは、所望の圧縮結果である。
【０１１５】
重みｗｉ，１は、２の累乗を使用して（式（９）で）近似され、このため、効率的に計算することができる。
重みｗｉ，１をさらに簡素化することができる。式（９）の右辺は、１／（１−ｒ）の形式であり、ここで、
【０１１６】
【数１５】
0006923677.tif 000017
である。これは、共通の比率
【０１１７】
【数１６】
0006923677.tif 000018
を用いて１＋ｒ＋ｒ２＋・・・で与えられる幾何級数として認識することができる。そのため、重みｗｉ，１は、式（１０）を使用して近似することができる。
【０１１８】
【数１７】
0006923677.tif 000019
そのため、式（８）のｗｉ，１＊ｐ１（ｘｉ│ｘ（ｉ−１））を式（１１）のように書き換えることができる。
【０１１９】
【数１８】
0006923677.tif 000020
式（１１）において、
【０１２０】
【数１９】
0006923677.tif 000021
は、ｐ１（ｘｉ｜ｘｉ−１）が固定小数点表現である場合に、シフトを使用して効率的に計算することができる。さらに、ｐ１（ｘｉ｜ｘｉ−１）が固定小数点表現である場合、式（１１）における無限の合計は、有限数の項の合計に切り捨てることができる。例えば、ｐ１（ｘｉ｜ｘｉ−１）が８ビット表現である場合、任意のｊ≧８に関して、ｌ１（ｘｉ−１）−ｌ２（ｘｉ−１）≦−１の場合（即ち、それらが少なくとも１ビット異なる場合）、
【０１２１】
【数２０】
0006923677.tif 000022
であるため、合計を切り捨てて、最初の８個の項
【０１２２】
【数２１】
0006923677.tif 000023
のみを残すことができる。ｌ１（ｘｉ−１）−ｌ２（ｘｉ−１）＜−１の場合（即ち、それらが２ビット以上異なる場合）、任意のｊ≧ｊ＊（ここで、ｊ＊＜８）に関して、
【０１２３】
【数２２】
0006923677.tif 000024
である。このため、ｗｉ，１ｐ１（ｘｉ│ｘｉ−１）を計算するには最初のｊ＊項のみが必要である。
【０１２４】
重みｗｉ，２は、式（１２）を使用して計算することができる。
【０１２５】
【数２３】
0006923677.tif 000025
式（８）の量ｗｉ，２＊ｐ２（ｘｉ｜ｘｉ−１）は、式（１３）を使用して計算することができる。
【０１２６】
【数２４】
0006923677.tif 000026
式（１１）にあるように、式（１３）の右辺は、ｐ２（ｘｉ｜ｘｉ−１）が固定小数点表現である場合、無限合計を有限合計に切り捨てることによって簡略化することができる。
【０１２７】
上記のように、モデルの結合確率のミキシングは、どのモデルがより良好な圧縮を提供するかは事前に分からない場合があるため、単純な均一ミキシングを使用することができる。結合確率の均一ミキシングでは、条件付き確率を使用して、結果的に獲得モデル（即ち、より高い重みを有するモデル）が選択される。
【０１２８】
図９は、本開示の実施形態に従ってシンボルのシーケンスを符号化するプロセス９００のフローチャート図である。プロセス９００は、サイズｎのシンボルのシーケンスを受信することができる。シーケンスはｘｎで表すことができる。「受信する」とは、生成、決定、または何らかの方法による受信を意味することができる。一例では、シンボルのシーケンスは、図４の量子化ステージ４０６からエントロピー符号化ステージ４０８において受信されたものなどの量子化された変換係数を表すことができる。一例では、シンボルのシーケンスは、図７で説明したトークンなどのトークンとすることができる。一例では、シンボルのシーケンスは、図８に関して説明したバイナリ化値などのバイナリ化値とすることができる。シンボルのシーケンスは、確率モデルに基づいて符号化されたシンボルのシーケンスとすることができる。
【０１２９】
プロセス９００は、図４の符号化器４００などの符号化器で実施することができる。プロセス９００は、例えば、送信局１０２などのコンピューティングデバイスによって実行することができるソフトウェアプログラムとして実施することができる。ソフトウェアプログラムは、メモリ２０４または二次ストレージ２１４などのメモリに格納された機械可読命令であって、ＣＰＵ２０２のようなプロセッサにより実行されて、コンピューティングデバイスにプロセス６００を実行させる機械可読命令を含むことができる。少なくともいくつかの実施形態では、プロセス９００は、図４の符号化器４００のエントロピー符号化ステージ４０８によって全体的または部分的に実行される。
【０１３０】
プロセス９００は、少なくとも２つの確率モデルを使用して、シンボルのシーケンスｘｎを符号化する。プロセス９００は、任意の数の確率モデルを使用することができる。しかしながら、単純化のために、２つのモデル（即ち、第１のモデルおよび第２のモデル）のみがプロセス９００を説明するために使用される。プロセス９００は、第１のモデルおよび第２のモデルの確率をミキシングすることにより、シンボルのシーケンスの各シンボルを符号化する。
【０１３１】
９０２において、プロセス９００は、カウンタｉを０に初期化し、第１のサブシーケンス長（即ち、第１の長さｌ１）を０に初期化し、第２のサブシーケンス長（即ち、第２の長さｌ２）を０に初期化する。カウンタｉは、シーケンスｘｎの各シンボルに関して使用される。第１の長さｌ１および第２の長さｌ２は上記の通りである。即ち、第１の長さｌ１および第２の長さｌ２は、算術コーディングエンジンによって第１のモデルおよび第２のモデルを使用して生成された符号語長にそれぞれ対応することができる。
【０１３２】
９０４において、プロセス９００は、上記したように条件付き確率ｐ１（ｘｉ│ｘｉ−１）およびｐ２（ｘｉ｜ｘｉ−１）を決定する。条件付き確率ｐ１（ｘｉ│ｘｉ−１）は、サブシーケンスｘｉ−１（即ち、シンボルｘｉまで、かつシンボルｘｉを除くサブシーケンス）の確率が与えられたときに、シンボルのシーケンスの位置ｉにおけるシンボルの条件付き確率である。ｐ２（ｘｉ｜ｘｉ−１）に関しても同様である。
【０１３３】
９０６において、プロセス９００は、シンボルｘｉに関するミックス済みの確率ｐ〜（ｘｉ│ｘｉ−１）を計算する。プロセス９００は、上記の式（４）で説明したミックス済みの確率を決定することができる。プロセス９００は、式８、１１、および１３を使用してミックス済みの確率を計算することができる。９０８において、プロセス９００は、計算されたミックス済みの条件付き確率を使用してシンボルｘｉを符号化する。
【０１３４】
９１０において、プロセス９００は、第１の長さｌ１および第２の長さｌ２を更新する。上記したように、９１０において仮想的算術符号化器を使用することができる。第１の長さｌ１は、シンボルｘｉを符号化するときに、第１のモデルによって追加された仮想的符号語に追加された追加の符号語長（即ちビット）を含むように更新される。第２の長さｌ２は、シンボルｘｉを符号化するときに、第２のモデルによって追加された仮想的符号語に追加された追加の符号語長（即ち、ビット）を含むように更新される。プロセス９００は、ｌ１＝ｌ１−ｌｏｇ（ｐ１（ｘｉ｜ｘｉ−１））およびｌ２＝ｌ２−ｌｏｇ（ｐ２（ｘｉ｜ｘｉ−１））をそれぞれ使用して、第１の長さｌ１および第２の長さｌ２を更新する。実施形態では、ルックアップテーブルを使用して値−ｌｏｇ（ｐ１（ｘｉ｜ｘｉ−１））および−ｌｏｇ（ｐ２（ｘｉ｜ｘｉ−１））を計算および／または近似することができる。確率ｐ１（ｘｉ│ｘｉ−１）およびｐ２（ｘｉ｜ｘｉ−１）は、ゼロ（０）と１との間の確率であることに留意されたい。ｐ１（ｘｉ│ｘｉ−１）およびｐ２（ｘｉ｜ｘｉ−１）がそれぞれ８ビット整数を使用して表現および／または近似される場合（例えば、固定小数点表現である場合）、−ｌｏｇ（ｐ１（ｘｉ｜ｘｉ−１））および−ｌｏｇ（ｐ２（ｘｉ｜ｘｉ−１））の両方とも、８ビット整数を入力として取り入れるルックアップテーブルを使用して推定することができる。ここで、各入力は、確率値に対応している。一般に、ルックアップテーブルのサイズは、ｐ１（ｘｉ│ｘｉ−１）およびｐ２（ｘｉ｜ｘｉ−１）の固定小数点表現の幅に依存する。即ち、幅が大きいほど、−ｌｏｇ（ｐ１（ｘｉ｜ｘｉ−１））および−ｌｏｇ（ｐ２（ｘｉ｜ｘｉ−１））の推定の精度が高くなる。
【０１３５】
９１２において、次のシンボルｘｉ＋１が処理されるように、カウンタｉがインクリメントされる。９１４において、すべてのシンボルが処理された場合（即ち、ｉ＝ｎ＋１）、プロセスは終了する。それ以外の場合、プロセスは９０４に戻り、次のシンボルを処理する。
【０１３６】
図１０は、本開示の実施形態によるシンボルのシーケンスを復号化するためのプロセス１０００のフローチャート図である。プロセス１０００は、復号化器５００などの復号化器において実施することができる。プロセス１０００は、受信局によって実施することができる。プロセス９００は、例えば、コンピューティングデバイスによって実行することができるソフトウェアプログラムとして実施することができる。ソフトウェアプログラムは、メモリ２０４または二次ストレージ２１４などのメモリに格納された機械可読命令であって、ＣＰＵ２０２のようなプロセッサにより実行されて、コンピューティングデバイスにプロセス６００を実行させる機械可読命令を含むことができる。プロセス９００は、特殊なハードウェアまたはファームウェアを使用して実施することができる。いくつかのコンピューティングデバイスは、複数のメモリ、複数のプロセッサ、またはその両方を有することができる。プロセス１０００のステップまたは動作は、異なるプロセッサ、メモリ、またはその両方を使用して分散させることができる。本明細書で単数の「プロセッサ」または「メモリ」という用語の使用は、記載されたステップのいくつかまたは全ての実行に使用することができる１つのプロセッサまたは１つのメモリのみを有するコンピューティングデバイスのみならず、複数のプロセッサまたは複数のメモリを有するデバイスを包含する。
【０１３７】
プロセス１０００は、符号化されたビットストリームからシンボルのシーケンスを復号化するために使用することができる。例えば、プロセス１０００は、図５の圧縮ビットストリーム４２０などの符号化ビットストリームを受信することができる。プロセス１０００は、プロセス９００のようにステップ９０２〜９０６および９１０〜９１４と同様のステップを含むことができる。同様のステップの説明は省略する。ステップ９０８の代わりに、プロセス１０００はステップ１００２を含む。ステップ１００２において、プロセス１０００は、計算されたミックス済みの条件付き確率（即ち、ｐ〜（ｘｉ│ｘｉ−１））を使用して、符号化されたビットストリームからシンボルｘｉを復号化する。
【０１３８】
プロセス９００または１０００のいくつかの実施形態では、ステップ９０６は、計算量をさらに節約（例えば、低減）するため、またはスループットを向上するために、すべてのｋ＞１のステップで実行され得る。スループットは、１クロックサイクルで処理（符号化または復号化）されるシンボル数で測定することができる。例えば、ｋ＝２の場合、ステップ９０６は、ｉが奇数または偶数の場合にのみ実行され、両方では実行されない。プロセス９００または１０００の別の実施形態では、ステップ９０６は、ｉのすべての可能性のあるインデックスの所定のサブセットで実行され得る。
【０１３９】
上記では、モデルの均一な重み付けの使用について説明した。しかしながら、本開示による実施形態は、不均一な事前の重みを使用することができる。Ｍ個のモデルを使用した不均一な重み付けでは、少なくともいくつかの重みｗｋを、１／Ｍとは等しくない（即ち、ｗｋ≠１／Ｍ）値に設定することができる。
【０１４０】
説明を簡単にするために、前述の（例えば、プロセス９００および１０００）では、２つのモデル（第１のモデルおよび第２のモデル）の使用について説明している。しかしながら、本開示による実施形態は、任意の数のモデルに拡張することができる。例えば、モデルＭの数Ｍ≧２に関して、均一な重み係数（即ち、ｗｋ＝１／Ｍ）を仮定すると、重みｗｋを、式（１４）を使用して近似することができる。
【０１４１】
【数２５】
0006923677.tif 000027
式１４では、ｌｋ（ｘｉ−１）は、サブシーケンスｘｉ−１を符号化するためにモデルｋ（１≦ｋ≦Ｍ）を使用して結果的に生じるビット単位の符号語長を示す。
【０１４２】
３つ以上のモデルがミキシングされる場合、バイナリツリーを使用して、条件付き確率を計算（即ち、決定、生成他）することができる。即ち、式（８）の係数ｗｉ，ｋｐｋ（ｘｉ｜ｘｉ−１）は、上記のプロセスを使用して再帰的に計算することができる。再帰的計算手段は、２つのモデルの確率を一度に結合して、中間条件付き確率を生成することを意味する。次に、中間条件付き確率が一度に２つずつ結合される。モデルＭの数が２のべき乗（即ち、Ｍ＝２ｍ）である場合、式（８）の係数ｗｉ，ｋｐｋ（ｘｉ｜ｘｉ−１）は、図１１に関して説明したような完全なバイナリツリー上で上記のプロセスを適用することによって再帰的に計算することができる。
【０１４３】
図１１は、本開示の実施形態による条件付き確率のバイナリツリー１１００の一例の図である。バイナリツリー１１００では、８つのモデルがミキシングされる。８つのモデルの確率は、ｐ＿１からｐ＿８である。各２つの確率が、最初にミキシングされる。例えば、確率１１０２と１１０４が上記のようにミキシングされて中間条件付き確率１１０６が生成され、中間条件付き確率１１０６が中間条件付き確率１１０８と結合されて中間条件付き確率１１１０が生成され、これが、最終的な条件付き確率１１１２が計算されるまで続く。最終的な条件付き確率１１１２は、符号化および／または復号化に使用することができる。例えば、最終的な条件付き確率１１１２は、プロセス９００の９０８および／またはプロセス１０００の１００２において使用することができる。
【０１４４】
図１１に関して説明したプロセスは、例えば、一部のモデルが他のモデルよりも有用であることが分かっている状況で使用することができる。一部のモデルが他のモデルよりも有用であることが分かっている場合、均一な重み付けは望ましくない場合がある。１つのモデルにより多くの重みを割り当てるために、モデルをツリーにおいて複製することができる。
【０１４５】
一例として図１１を参照すると、モデルｐ＿１〜ｐ＿６とｐ＿８は別個であり、ｐ＿６は他のモデルよりも有用であることが既知であり得る。ｐ＿６の方がより有用であるので、ｐ＿６はツリーにおいて複製することができ、ｐ＿７はｐ＿６の複製である。そのため、確率ｐ＿６のモデルは、エントロピー符号化のミキシングで重みが２回割り当てられる。
【０１４６】
別の例として、例えば、モデルＡとモデルＢの２つのモデルがあり、２つのモデルの事前の重みが（１／４，３／４）であるとする。本開示による実施形態では、モデルのセットを４つのモデルのセットに拡張することができ、第１のモデルはモデルＡに対応し、残りの３つのモデルはモデルＢに対応し、４つのモデルに関して事前は、（１／４，１／４，１／４，１／４）である。
【０１４７】
前述では、固定ソースについて説明した。固定ソースは、シンボルｘｉに関するミキシングがｗｉ，ｋを決定するためにサブシーケンスｘｉ−１のすべての履歴を使用することを意味する。そのため、統計はコーディングプロセスのソースに亘って変化しない。しかしながら、ソースが非固定であり得る場合、本開示による実施形態は、スライディングウィンドウを使用して、より良好な圧縮パフォーマンスに関して局所統計に適応することができる。前のビットの数を示すビットの長さＬとしてのスライディングウィンドウ（即ち、前のビットの数の確率）が、ミキシングプロセスで使用される。即ち、スライディングウィンドウは、シーケンスにどの程度戻って記憶するかを表し、スライディングウィンドウ内のシンボルのみが、重み係数の推定に使用される。より具体的には、スライディングウィンドウ内のこれらのシンボルの確率のみが、重み係数の推定に使用される。
【０１４８】
そのため、ｘｉの符号化にｐ〜（ｘｉ｜ｘｉ−１）を使用する代わりに、ｐ〜（ｘｉ｜ｘｉ−Ｌ・・・ｘｉ−１）（個々で、長さＬ≧１）は、スライディングウィンドウの長さであり、ここで、ｘｉ−Ｌ・・・ｘｉ−１は、ビットｉ−Ｌから始まりビットｉ−１で終わるサブシーケンスである。長さＬが分かっている場合、本開示によるプロセスは、２つのモデルに関して以下のステップを実行することができる。
【０１４９】
ステップ１において、ｉ＝１、ｌ１＝０，ｌ２＝０を初期化する。ステップ１は、図９の９０２に関して説明したとおりとすることができる。ステップ１では、プロセスも、ｌ１，−Ｌ＝０およびｌ２，−Ｌ＝０を初期化する。
【０１５０】
ステップ２において、プロセスは、第１のモデルと第２のモデルに従ってｐ１（ｘｉ｜ｘｉ−Ｌ・・・ｘｉ−１）およびｐ２（ｘｉ｜ｘｉ−Ｌ・・・ｘｉ−１）を計算する。
ステップ３において、プロセスは式１５および１６に従ってミックス済みの確率を計算する。
【０１５１】
【数２６】
0006923677.tif 000028
【０１５２】
【数２７】
0006923677.tif 000029
ステップ４において、プロセスはｐ〜（ｘｉ｜ｘｉ−Ｌ・・・ｘｉ−１）を使用してｘｉを符号化（符号化器によって実施される場合）または復号化（復号化器によって実施される場合）する。
【０１５３】
ステップ５において、プロセスはｌ１をｌ１＝ｌ１−ｌｏｇｐ１（ｘｉ│ｘｉ−Ｌ・・・ｘｉ−１）に更新し、ｌ２をｌ２＝ｌ２−ｌｏｇｐ２（ｘｉ│ｘｉ−Ｌ・・・ｘｉ−１）に更新する。プロセスがウィンドウ外で符号化／復号化している場合（即ち、ｉ＞Ｌ）、プロセスはｌ１，−Ｌ＝ｌ１，−Ｌ−ｌｏｇｐ１（ｘｉ−Ｌ｜ｘｉ−２Ｌ・・・ｘｉ−Ｌ−１）およびｌ２，−Ｌ＝ｌ２，−Ｌ−ｌｏｇｐ２（ｘｉ−Ｌ｜ｘｉ−２Ｌ・・・ｘｉ−Ｌ−１）に更新する。
【０１５４】
ステップ６において、ｉを１だけ増加する（ｉ＝ｉ＋１）。
ステップ７において、プロセスはシーケンスｘｎのすべてのビットが処理されるまで（即ち、ｉ＝ｎ＋１）、ステップ２〜６を繰り返す。
【０１５５】
上記のスライディングウィンドウにおいて、ｌ１（ｘｉ−１）−ｌ１（ｘｉ−Ｌ−１）＝ｌ１−ｌ１，−Ｌであり、ｌ２（ｘｉ−１）−ｌ２（ｘｉ−Ｌ−１）＝ｌ２−ｌ２，−Ｌである。そのため、ｌ１（ｘｉ−１）−ｌ１（ｘｉ−Ｌ−１）は、ｘｉ−Ｌ…ｘｉ−１を符号化するために第１のモデルを使用することにより生成される符号語長と見なすことができ、ｌ２（ｘｉ−１）−ｌ２（ｘｉ−Ｌ−１）は、ｘｉ−Ｌ…ｘｉ−１を符号化するために第２のモデルを使用することにより生成される符号語長と見なすことができる。
【０１５６】
図１２は、本開示の実施形態に従ってシンボルのシーケンスをエントロピーコーディングするためのプロセス１２００のフローチャート図である。シーケンスは、シーケンスｘｎに関して前述したとおりである。プロセス１２００は、符号化器または復号化器によって実施することができる。符号化器によって実施される場合、「コーディング」は、図４の圧縮ビットストリーム４２０などの符号化されたビットストリームにおける符号化を意味する。復号化器によって実施される場合、「コーディング」とは、図５の圧縮ビットストリーム４２０などの符号化されたビットストリームからの復号化を意味する。
【０１５７】
符号化器によって符号化される場合、プロセス１２００は、図４の量子化ステージ４０６などの量子化ステップからシンボルのシーケンスを受信することができる。別の例では、プロセス１２００は、符号化されるべき値（例えば、量子化された変換係数）を受信し、受信された値からシンボルのシーケンスを生成することができる。
【０１５８】
１２０２において、プロセス１２００は、ミキシングされるべきモデルを選択する。モデルは、第１のモデルおよび第２のモデルを含むことができる。本開示で使用される「選択」とは、あらゆる方法での識別、構築、決定、指定、またはその他の選択を行うことを意味する。
【０１５９】
少なくともシンボル（例えば、ｘｉ）に関して、シンボルの位置（例えば、ｉ）において、プロセス１２００は、ステップ１２０４〜１２０８を含むステップを実行して、第１のモデルおよび第２のモデルを使用してミックス済みの確率を決定する。ステップ１２０４〜１２０８は、シンボルのシーケンスのすべてのシンボルに対して実行することができる。
【０１６０】
１２０４において、プロセス１２００は、第１のモデルを使用して、シンボルを符号化するための第１の条件付き確率を決定する。第１の条件付き確率は、シーケンスのサブシーケンスが与えられたときのシンボルの条件付き確率である。一例では、シーケンスのサブシーケンスは、サブシーケンスｘｉ−１を意味する。別の例では、スライディングウィンドウが使用され、シーケンスのサブシーケンスは、位置の前のシーケンスの所定数のシンボルで構成されている。所定の数のシンボルは、スライディングウィンドウの長さＬに関して説明したとおりのものとすることができる。そのため、シーケンスのサブシーケンスは、サブシーケンスｘｉ−Ｌ・・・ｘｉ−１とすることができる。１２０６において、プロセス１２００は、第２のモデルを使用して、シンボルを符号化するための第２の条件付き確率を決定する。第２の条件付き確率は、１２０４に関して説明したように、サブシーケンスが与えられたときのシンボルの条件付き確率である。
【０１６１】
１２０８において、プロセス１２００は、第１の条件付き確率および第２の条件付き確率を使用して、シンボルを符号化するためのミックス済みの確率を決定する。ミックス済みの確率は、図９の９０６に関して説明されたものとすることができる。第１の条件付き確率および第２の条件付き確率は、第１の重みおよび第２の重みを使用する線形結合を使用して結合することができる。一実施形態では、少なくとも第１の重みは、シンボルまでのシーケンスのサブシーケンスを符号化するための長さを決定するための仮想的算術コーディングを使用して決定（即ち、近似）することができる。第１の重みは、長さを使用して決定することができる。一例では、重み（例えば、第１の重みおよび／または第２の重み）を決定することは、シンボルまでのシーケンスのサブシーケンスを符号化することから生じるレートを決定すること、決定されたレートを使用して第１の重みを決定することを含むことができる。一例では、レートはレート推定器を使用して決定することができる。一例では、レート推定器は仮想的算術符号化器とすることができる。一例では、レートを決定することは、入力を確率値として用いてテーブル（例えば、ルックアップテーブル）を検索することを含むことができる。
【０１６２】
１２１０において、プロセス１２００は、例えば、９０８（符号化器によって実施される場合）および１００２（復号化器によって実施される場合）に関して説明したように、ミックス済みの確率を使用してシンボルをコーディングする。
【０１６３】
プロセス１２００の実施形態では、モデルは第３のモデルと第４のモデルを含むことができ、第１のモデルと第２のモデルを使用してミックス済みの確率を決定することは、第１のモデルと第２のモデルをミキシングして第１の中間条件付き確率を生成すること、第３のモデルと第４のモデルをミキシングして第２の中間条件付き確率を生成すること、第１の中間条件付き確率と第２の中間条件付き確率をミキシングしてシンボルの符号化に使用される条件付き確率を生成することを含むことができる。一実施形態では、第１のモデルおよび第４のモデルは、同じモデルである。
【０１６４】
コンテキストツリー重み付け（ＣＴＷ：ｃｏｎｔｅｘｔ−ｔｒｅｅ  ｗｅｉｇｈｔｉｎｇ）として知られる手法は、ミキシングを使用するロスレスデータ圧縮アルゴリズムである。長さｎのバイナリシーケンスｘｎを符号化するために、ＣＴＷは、２Ｋ確率関数ｐｉ（ｘｎ）の線形混合として確率関数ｐ（ｘｎ）を推定し、その各々は、有限メモリバイナリツリーソースを仮定することにより推定され、かつ同じ重み係数を有する。対照的に、本開示による実施形態は、どのモデルでも機能することができる。さらに、本明細書で説明するシンボルごとの重み係数の計算は、長さ関数を使用して、サブシーケンスの確率を近似することができ、これは、結合確率を維持および計算する既存のソリューションと比較して非常に単純化される。
【０１６５】
上記のように、コンテキストモデリングの主要な設計上の課題または問題は、１）より多くのコンテキストを追加することによって圧縮パフォーマンスを向上させること、および２）コンテキストに関連するオーバーヘッドコストを低減すること、という２つの相反する目的の間でバランスを取ることである。
【０１６６】
非限定的な例示として係数トークンツリー７００を使用して、コーディングシステムにおけるコンテキストの数の影響、およびコンテキストの数とコーディングパフォーマンスとの間の関係の数学的分析がここで与えられる。
【０１６７】
コンテキストｃに関して、Ｐｃ＝（ｐｃ，０，．．．，ｐｃ，１１）がコンテキストから取得した確率分布を示すものとする。ここで、ｐｃ，ｉは、トークンｉ、ｉ＝０、．．．、１０に関する（即ち、表Ｉにリストされているトークン）の確率を示し、ｐｃ，11は、ＥＯＢ＿ＴＯＫＥＮの確率を示す。便宜上、ＥＯＢ＿ＴＯＫＥＮはトークン１１として参照される。ここで、フレーム内にコンテキストｃが出現し、ｎｃ回使用されるとする。コンテキストは、例えば、コンテキストに関連付けられた条件が満たされた場合、および／またはフレームで利用可能な場合に「出現する（ａｐｐｅａｒｓ）」。例えば、コンテキストに関連付けられた確率分布がフレームの少なくとも１つのブロックのコーディングで使用される場合、コンテキストは「使用」される。Ｑｃ＝（ｑｃ，０，．．．，ｑｃ，１１）がコンテキストｃの下での係数トークンの経験的（即ち、観測された）分布を示すものとする。即ち、ｑｃ，ｉが、トークンｉがコンテキストｃの下でフレームに出現する回数を示し、かつｑｃ，ｉ＝ｎｃ，ｉ／ｎｃによって与えられる（即ち、トークンｉがコンテキストｃの下でフレームに出現した回数をコンテキストｃが出現した回数で除算したもの）。確率分布ＰｃおよびＱｃは、トークンのコーディングに使用されるコーディング分布および実際の分布としてそれぞれ参照される。
【０１６８】
コーディング分布Ｐｃが与えられると、算術コーディングを使用して達成可能な圧縮パフォーマンスは、
【０１６９】
【数２８】
0006923677.tif 000030
によって与えられる。実際の分布Ｑｃ、ｑｃ，ｉ＝ｎｃ，ｉ／ｎｃ、および対数法則ｌｏｇ（分数）＝ｌｏｇ（分子）−ｌｏｇ（分母）を使用して、達成可能な圧縮パフォーマンスは、式（１７）のように低減することができる。
【０１７０】
【数２９】
0006923677.tif 000031
式（１７）の右辺の第１の項
【０１７１】
【数３０】
0006923677.tif 000032
は、実際の分布ＱｃのエントロピーΗ（Ｑｃ）として認識することができる。式（１）の右辺の第２の項
【０１７２】
【数３１】
0006923677.tif 000033
は、同じアルファベット（例えば、係数トークンツリー７００のトークン）で定義された、分布ＰｃとＱｃとの間の相対エントロピーまたはカルバックライブラー（ＫＬ：Ｋｕｌｌｂａｃｋ−Ｌｅｉｂｌｅｒ）発散として認識することができる。ＫＬ発散は、Ｄ（Ｑｃ｜｜Ｐｃ）として示すことができる。そのため、算術コーディングを使用して達成可能な圧縮パフォーマンスは、式（１８）を使用して書き換えることができる。
【０１７３】
【数３２】
0006923677.tif 000034
第２の項（即ち、Ｄ（ＱＣ｜｜ＰＣ））は、最適な確率分布（即ち、実際の分布Ｑｃ）を使用する代わりに、最適性の低い別の確率分布（即ち、コーディング分布Ｐｃ）を使用した場合に生じる圧縮パフォーマンスの損失を示す。実際の確率分布とコーディング確率分布との間に差異がある場合、圧縮パフォーマンスの損失が生じる。損失は、符号化されるシーケンスの長さに比例して増加する。
【０１７４】
式（１８）は、圧縮アルゴリズムを設計するためのベースとして使用することができる。即ち、圧縮アルゴリズムは式（１８）を使用して分析される。コンテキストモデリングの設計は、圧縮パフォーマンスに直接敵に影響する。そのため、コンテキストモデリングの優れた設計（即ち、コンテキストの最適な選択）は、良好な圧縮アルゴリズムをもたらす。最適なコンテキストモデリングでは、第１の項Η（Ｑｃ）と第２の項Ｄ（Ｑｃ｜｜Ｐｃ）が最小化される。
【０１７５】
式（１８）（即ち、ｎｃΗ（Ｑｃ）およびｎｃＤ（Ｑｃ｜｜Ｐｃ））の両方の項は、コンテキストｃが出現する回数ｎｃに伴って線形に増加する。エントロピーコーディングの圧縮パフォーマンスを向上させるためには、式（１８）の２つの項Η（Ｑｃ）およびＤ（Ｑｃ｜｜Ｐｃ）をできるだけ小さくすべきであることを理解することができる。
【０１７６】
第２の項Ｄ（Ｑｃ｜｜Ｐｃ）は、常に、非負の値であり、Ｄ（Ｑｃ｜｜Ｐｃ）＝０であるため、実際の分布とコーディング分布が等しい（即ちＱｃ≡Ｐｃ）場合にのみ、第１の項（即ち、ｎｃΗ（Ｑｃ））は圧縮アルゴリズムの理論上の絶対下限である。別の言い方をすれば、確率分布Ｑｃを持つシーケンスｎｃが与えられると、可能な限り最良の圧縮がｎｃΗ（Ｑｃ）により与えられ、他の確率分布はより良好な圧縮を提供することができない。
【０１７７】
従って、良好な圧縮パフォーマンスを達成するために、コーディング分布Ｐｃが実際の分布Ｑｃに可能な限り近いことが望ましい。同じコンテキストの場合、実際の分布はフレームごとに変化する。そのため、コーディング分布Ｐｃは、復号化される特定のフレームの実際の分布Ｑｃに適合させる必要がある。フレームはまだ復号化されていないため、復号化器はコーディング分布Ｐｃを調整する方法を知ることができない。
【０１７８】
代わりに、調整されたコーディング分布Ｐｃを符号化器で通知することができる。例えば、符号化器は、復号化されるフレームのフレームヘッダーに調整されたコーディング分布Ｐｃを符号化することができる。調整されたコーディング分布Ｐｃを符号化することは、符号化器がコーディング分布Ｐｃのトークン確率ｐｃ，ｉを符号化することを意味する。
【０１７９】
トークン確率ｐｃ，ｉを符号化するビット単位（より正確には、部分ビット単位）のコストが、ビットコストε＞０によって下限になっているものとする。即ち、ビットコストεは、トークン確率ｐｃ，ｉを符号化するために必要なビットの最小数である。
【０１８０】
コンテキストｃの場合、表ＩとＥＯＢ＿ＴＯＫＥＮの１２個のトークンの確率を含むコーディング分布Ｐｃのコーディングのフレーム全体で償却された合計ビットコストは、１１ε／ｎｃで与えられる。合計ビットコストは、ｎｃに対して反比例し、アルファベットサイズ（例えば、トークンの数）に比例して増加する。コーディング分布Ｐｃは確率分布（即ち、
【０１８１】
【数３３】
0006923677.tif 000035
）であるため、その自由度はアルファベットサイズ（例えば、１２個のトークン）から１を減算したものに等しい。従って、ビットコスト１１ε／ｎｃにおける１２個（トークンの数に対応）ではなく、１１個である。
【０１８２】
Ｃは、変換係数コーディングで使用されるすべてのコンテキストのセットを示すものとする。セットＣのコンテキストｃに関するコーディング確率分布を復号化器に送信するために（復号化器は、例えば図７の係数トークンツリー７００のノードに対応するトークンを復号化するために使用することができる）、係数トークンツリー７００の各トークンおよびＥＯＢ＿ＴＯＫＥＮは符号化され得る。１２個のトークンがあるため、フレーム全体で償却される、セットＣのコンテキストから取得されたコーディング確率分布の合計ビットコストは、式（１９）で与えられる。
【０１８３】
【数３４】
0006923677.tif 000036
式（１９）において、｜Ｃ｜はセットＣのカーディナリティー（ｃａｒｄｉｎａｌｉｔｙ）であり、ｎはフレーム内のトークンの数である。式（１９）は、追加の各コンテキストが、トークンごとに少なくとも１１ε／ｎビットの正規化コストを追加することができることを示している。式（１９）の右辺表現は、コンテキストの数（即ち、セットＣのサイズ）に比例して増加する。従って、コンテキストの数を減らす（即ち、セットＣをより小さくする）と、オーバーヘッドを低減することができる。しかしながら、すべてのコンテキストに関して、１１個の確率が符号化されるということに変わりはない。１１は、トークンの数（１２）から１を減算したものに対応する。以下で説明するように、エントロピーコーディングに対して選択的ミキシングを使用することにより、一部のコンテキストに関して符号化される確率の数を低減することができる。例えば、係数トークンツリー７００が与えられた場合、１１個の確率を符号化する代わりに、１１個未満がコーディングされ、それによりフレームヘッダーにおけるコーディング分布に関連するオーバーヘッドビットが低減される。
【０１８４】
前述したように、コンテキストの数を低減する（即ち、セットＣをより小さくする）と、オーバーヘッドを低減することができる。しかしながら、式（１８）の第１の項、即ちエントロピーΗ（Ｑｃ）の分析は、コンテキストの数を減らすことは望ましくないことを示している。
【０１８５】
エントロピーΗ（Ｑｃ）は、凹関数である。これは、不等式（２０）で与えられるように、２つの分布ＭおよびＭ’の線形結合をとると、２つの分布ＭおよびＭ’の線形結合のエントロピー（即ち、不等式の左辺）は、個々の分布のエントロピーの線形和（即ち、不等式の右側）以上であることを意味する。２つの分布ＭとＭ’が異なる場合、不等式（２０）は厳密な不等式になる。
【０１８６】
【数３５】
0006923677.tif 000037
不等式（２０）が与えられると、式（１８）の第１の項を最小化するために、個別の分布の数を増加させることが望ましく、これは、個別のコンテキストの数を増加させることを意味すると結論付けることができる。これは、コンテキストの数を増加することにより、不等式（２０）の左辺を右辺に分解することができるためである。分解により、全体的な圧縮パフォーマンスを向上させることができる。
【０１８７】
要約すると、圧縮パフォーマンスを向上させるために、式（１８）および式（１９）の第２の項の分析により、コンテキストの数を低減することが望ましいという結論に至る。一方、式（１８）および不等式（２０）の第１の項の分析により、圧縮パフォーマンスを向上させるためにコンテキストの数を増加することが望ましいという結論に至る。以下で説明するように、エントロピーコーディングに関して選択的ミキシングを使用することにより、コンテキストの数を増加させることができ、すべての追加コンテキストに関連するオーバーヘッドを低減または制限することができる。例えば、図７の係数トークンツリー７００を参照すると、コンテキストを追加することは、１１個の確率値を追加することにはならない。
【０１８８】
次の観察が可能である。
１）変換係数のコーディングでは、コンテキストｃが決定されると、コンテキストｃに関連付けられたコーディング分布Ｐｃが、変換係数に関するトークンをコーディングするために使用される。
【０１８９】
２）式（１９）における１１個の乗法係数は、係数トークンのアルファベットのサイズから１を減算したものに等しい。
３）コンテキストｃが２つの別個のコンテキストｃ０およびｃ１に分割される場合、コンテキストｃ０が出現する回数とコンテキストｃ１が出現する回数は、コンテキストｃが出現する回数に等しい（即ち、ｎｃ＝ｎｃ0＋ｎｃ1）。
【０１９０】
４）コンテキストｃが２つの異なるコンテキストｃ０およびｃ１に分割される場合、対応する実際の分布Ｑｃ0およびＱｃ1は十分に異なる必要がある。
５）与えられたコンテキストｃに関して、すべてのｉに対して、コンテキストｃの下でフレームにトークンｉが出現する回数ｎｃ，ｉは、確率推定で十分な精度を確保するために十分に大きくなければならない。
【０１９１】
一部のインデックスでのみ異なるが、他のインデックスで類似または同じである２つの分布Ｑｃ0およびＱｃ1が与えられると、本開示による実施形態は、コンテキストｃを、Ｑｃ0およびＱｃ1が異なるトークンインデックスについてのみ、例えば、２つのコンテキストｃ0およびｃ１に分割することができる。換言すれば、導入される各新たなコンテキストは、１１ε／ｎｃよりも低コストである。例えば、コンテキストが４個のトークンに適している場合、コストは、３ε／ｎｃとなる。
【０１９２】
図１３は、本開示の実施形態に従って、変換係数トークンのアルファベットを使用して変換係数をコーディングするプロセス１３００のフローチャート図である。プロセス１３００は、２つ以上の確率分布を使用して、現在の変換係数をコーディング（即ち、符号化または復号化）する。プロセス１３００は、現在の変換係数を示すトークンをコーディングすることができる。トークンは、図７の係数トークンツリー７００などの係数ツリーを使用して決定または選択することができる。そのため、アルファベットは、係数ツリーのリーフノード（即ち、トークン）を含む。
【０１９３】
プロセス１３００は、スキャン順序に従って変換ブロックの係数をコーディングするプロセスによって、またはそれと組み合わせて使用することができる。現在の変換係数は、スキャン順序におけるスキャン位置ｉにあり、かつ変換ブロックにおける係数位置（ｒｉ、ｃｉ）にある。
【０１９４】
プロセス１３００は、第１のコンテキストに対応する第１の確率分布を選択し、第２のコンテキストに対応する第２の確率分布を選択し、いくつかの変換係数トークンに関して、第１および第２の確率分布をミキシングして、いくつかの変換係数トークンの変換係数トークンをコーディングするためのミックス済みの確率を生成する。
【０１９５】
プロセス１３００は、図４の符号化器４００などの符号化器で実施することができる。プロセス１３００は、例えば、送信局１０２などのコンピューティングデバイスによって実行され得るソフトウェアプログラムとして実施され得る。ソフトウェアプログラムは、メモリ２０４または二次ストレージ２１４などのメモリに格納された機械可読命令であって、ＣＰＵ２０２のようなプロセッサにより実行されて、コンピューティングデバイスにプロセス１３００を実行させる機械可読命令を含むことができる。少なくともいくつかの実施形態では、プロセス１３００は、図４の符号化器４００のエントロピー符号化ステージ４０８によって全体的または部分的に実行される。
【０１９６】
プロセス１３００は、図５の復号化器５００などの復号化器において実施することができる。プロセス１３００は、例えば、受信局１０６などのコンピューティングデバイスによって実行することができるソフトウェアプログラムとして実施され得る。ソフトウェアプログラムは、メモリ２０４または二次ストレージ２１４などのメモリに格納された機械可読命令であって、ＣＰＵ２０２のようなプロセッサにより実行されて、コンピューティングデバイスにプロセス１３００を実行させる機械可読命令を含むことができる。少なくともいくつかの実施形態では、プロセス１３００は、図５の復号化器５００のエントロピー復号化ステージ５０２によって全体的または部分的に実行される。
【０１９７】
プロセス１３００が符号化器によって実施される場合、「コーディング」は、図４の圧縮ビットストリーム４２０などの符号化されたビットストリームにおける符号化を意味する。復号化器によって実施される場合、「コーディング」とは、図５の圧縮ビットストリーム４２０などの符号化されたビットストリームからの復号化を意味する。
【０１９８】
１３０２において、プロセス１３００は、第１の確率分布を選択する。本開示で使用される「選択」とは、あらゆる方法での取得、識別、構築、決定、指定、またはその他の選択を行うことを意味する。
【０１９９】
一例では、プロセス１３００は、最初に第１のコンテキストを導出し、第１のコンテキストに対応する第１の確率分布を選択することができる。例えば、コンテキストは、変換ブロックサイズ、変換ブロック形状（例えば、正方形または長方形）、色成分またはプレーンタイプ（即ち、輝度または色度）、現在の変換係数のスキャン位置ｉ、および以前にコーディングされたトークンのうちの１つまたは複数を使用して導出することができる。例えば、図６のスキャン順序６０２の場合、以前にコーディングされた係数は、現在の変換係数の左方隣接係数および上部隣接係数とすることができる。他の情報を使用して、第１のコンテキストを導出することができる。
【０２００】
一例では、第１の確率分布は、アルファベットのすべてのトークンに亘って定義することができる。即ち、確率分布は、アルファベットのトークンの各々に関する確率値を含む。係数トークンツリー７００のトークンを使用して、アルファベットセットＥが係数トークンのアルファベットを示すものとする。そのため、アルファベットセットＥは、Ｅ＝｛ＥＯＢ＿ＴＯＫＥＮ、ＺＥＲＯ＿ＴＯＫＥＮ、ＯＮＥ＿ＴＯＫＥＮ、ＴＷＯ＿ＴＯＫＥＮ、ＴＨＲＥＥ＿ＴＯＫＥＮ、ＦＯＵＲ＿ＴＯＫＥＮ、ＤＣＴ＿ＶＡＬ＿ＣＡＴ１、ＤＣＴ＿ＶＡＬ＿ＣＡＴ２、ＤＣＴ＿ＶＡＬ＿ＣＡＴ３、ＤＣＴ＿ＶＡＬ＿ＣＡＴ４、ＤＣＴ＿ＶＡＬ＿ＣＡＴ５、ＤＣＴ＿ＶＡＬ＿ＣＡＴ６｝によって与えられる。第１の確率分布は、アルファベットセットＥのトークンの各々に関する確率値を含むことができる。別の例では、確率分布は、アルファベットのトークンのいくつかに関する確率値を含むことができる。一例では、第１の確率分布は、コーディング分布Ｐｃに関して上述したようなコーディング分布とすることができる。
【０２０１】
１３０４において、プロセス１３００は、第２の確率分布を選択する。一例では、プロセス１３００は、第２のコンテキストを導出し、第２のコンテキストに対応する第２の確率分布を選択することができる。
【０２０２】
第２の確率分布は、トークンのパーティションに亘って定義することができる。例示的な例として図７の係数トークンツリー７００のトークンを使用して、パーティションはアルファベットセットＥの非自明な（ｎｏｎ−ｔｒｉｖｉａｌ）パーティションＦＥに対応することができる。例えば、非自明なパーティションＦＥは、ＦＥ＝｛｛ＥＯＢ＿ＴＯＫＥＮ｝、｛ＺＥＲＯ＿ＴＯＫＥＮ｝、｛ＯＮＥ＿ＴＯＫＥＮ、ＴＷＯ＿ＴＯＫＥＮ、ＴＨＲＥＥ＿ＴＯＫＥＮ、ＦＯＵＲ＿ＴＯＫＥＮ、ＤＣＴ＿ＶＡＬ＿ＣＡＴ１、ＤＣＴ＿ＶＡＬ＿ＣＡＴ２、ＤＣＴ＿ＶＡＬ＿ＣＡＴ３、ＤＣＴ＿ＶＡＬ＿ＣＡＴ４、ＤＣＴ＿ＶＡＬ＿ＣＡＴ５、ＤＣＴ＿ＶＡＬ＿ＣＡＴ６｝｝とすることができる。即ち、非自明なパーティションＦＥは、アルファベットセットＥを３つの重複しないサブセット｛ＥＯＢ＿ＴＯＫＥＮ｝、｛ＺＥＲＯ＿ＴＯＫＥＮ｝、および全ての他のすべてのトークンを含むセットに分割する。そのため、第２の確率分布は、パーティションの要素に関する確率値を含む。
【０２０３】
非自明なパーティションＦＥの例では、第２の確率分布は、３つの確率値を含むことができる。非自明なパーティションＦＥには３つの要素しか含まれていないため、第２のコンテキストは、オーバーヘッドの２ε／ｎビット／トークンを追加し、これは、アルファベットＥ（即ち、第１のコンテキストなどのコンテキスト）に亘る確率分布を決定する新たなコンテキストによって追加される約１１ε／ｎビット／トークンのものよりもかなり小さい。
【０２０４】
第２のコンテキストは、アルファベットＥのトークンのサブセットをターゲットとするため、追加された第２のコンテキストに関連するオーバーヘッドの量は制限される。追加された第２のコンテキストは、追加された第１のコンテキストよりもオーバーヘッドがはるかに少なくなる。
【０２０５】
一例では、第２のコンテキストは、他のノードよりもより頻繁に使用されるアルファベットセットＥのトークンをターゲットとするコンテキストとすることができる。より頻繁に使用されるトークンをターゲットとすることにより、それらのトークンのコーディング（例えば、圧縮）のパフォーマンスを向上させることができる。例えば、図７の係数トークンツリー７００を再び参照すると、内部ノード（例えば、ノードＡ〜Ｋ）のうち、ルートノード７０１およびノード７０３は、変換係数をコーディングするときに最も頻繁に使用されるノードである。変換係数を符号化するためにツリーをトラバースする際に、ツリーのさらに下方に内部ノードがあるほど、ノードがトラバースされる頻度は低い。即ち、ツリーのさらに下方に内部ノードがあるほど、内部ノードが変換係数のコーディングに使用される回数は少なくなる。そのため、コンテキストの追加（これは、上記したようにオーバーヘッドの点では望ましいが）は、最も頻繁に使用されるトークンのコンテキストの追加に制限することができる。
【０２０６】
一例では、第２のコンテキストは、実際の分布Ｑｃに関して説明した実際の分布とすることができる。一例では、第２のコンテキストは、現在の係数（即ち、係数位置（ｒｉ、ｃｉ）における係数であって、スキャン位置ｉに対応する係数）がゼロ（即ち、ｔｉ＝ＺＥＲＯ＿ＴＯＫＥＮ）であるトークンの確率が、係数位置（ｒｉ、ｃｉ）の直近の２Ｄ（２次元の）近傍（ｎｅｉｇｈｂｏｒｈｏｏｄ）におけるゼロの数と強く相関しているという周知の事実を活用することによって、導出することができる。一例では、第２のコンテキストは、係数位置（ｒｉ、ｃｉ）に固定された近傍テンプレートを使用して導出することができる。近傍テンプレートは、近傍を構成する係数位置を示したり、含めたり、指定したり、その他同様のことを行うことができる。近傍テンプレートは、スキャン順序に基づくものとすることができる。
【０２０７】
図１４は、本開示の実施形態に従ってコンテキストを導出するための近傍テンプレート１４００および１４５０の図である。近傍テンプレートは、現在の係数の前にコーディングされた係数の位置（即ち、隣接する位置）を含む。そのため、これらの係数に関する値は、現在の係数をコーディングすることに関して利用可能である。近傍テンプレートは、任意の数の位置を含むことができる。近傍テンプレートは、任意の形状を有することができる。例えば、近傍テンプレートは、連続する位置または隣接する位置を含む必要はない。
【０２０８】
近傍テンプレート１４００は、前方スキャン順序により使用することができる近傍テンプレートを示している。前方スキャン順序は、図６のスキャン順序６０２のように、変換ブロックの左上隅から右下隅に進むスキャン順序である。近傍テンプレート１４００は、現在の係数１４０２と、ａ〜ｅでマークされた５個の影付き係数の位置を含む近傍テンプレート１４０４とを示している。近傍テンプレートは、より多くのまたはより少ない係数位置を含むことができる。一例では、値ａ〜ｅは、個々の係数がゼロであるか、または非ゼロであるかを示すことができる。そのため、値ａ〜ｅは、バイナリ値とすることができる。
【０２０９】
近傍テンプレート１４５０は、逆方向スキャン順序により使用することができる近傍テンプレートを示している。逆方向スキャン順序は、例えば、変換ブロックの右下隅から左上隅に進むスキャン順序である。近傍テンプレート１４５０は、現在の係数１４５２と、ａ〜ｉとラベル付けされた９個の影付き係数の位置を含む近傍テンプレート１４５４とを示している。しかしながら、上記したように、近傍テンプレートは、より多くのまたはより少ない係数位置を含むことができる。
【０２１０】
一例では、第２のコンテキストは、近傍テンプレート内のゼロ係数の数に基づいて導出することができる。例えば、近傍テンプレート１４００を使用して、式（ａ＋ｂ＋ｃ＋ｄ＋ｅ＋１）＞＞１に基づいてコンテキスト値のセット｛０、１、２、３｝からコンテキスト値を選択することができる。値ａ−ｅの各々は、ゼロ（０）または１であり、「＞＞１」は、合計（ａ＋ｂ＋ｃ＋ｄ＋ｅ＋１）の１ビットのビットシフトである。一例では、ゼロ（０）の値は、その位置の係数がゼロ係数であることを示し、１の値は、係数が非ゼロであることを示すことができる。例えば、近傍テンプレートの係数がすべてゼロの場合、０の番号が付けられたコンテキストを選択することができ、正確に１つまたは正確に２つの近傍テンプレートの係数が非ゼロの場合、１の番号が付けられたコンテキストが選択される、などである。他の値およびセマンティクスが可能である。
【０２１１】
再び図１３を参照すると、１３０６において、第２の確率分布が変換係数トークンに関する確率を含むと決定したことに応答して、プロセス１３００は１３０８に進む。一実施形態では、プロセス１３００は、第２の確率分布が変換係数トークンに関する確率を含まない場合、プロセス１３００が１３１２に進むことを含むことができる。
【０２１２】
一例では、第２の確率分布は、変換係数トークンがパーティションのシングルトン要素（ｓｉｎｇｌｅｔｏｎ  ｅｌｅｍｅｎｔ）に含まれる場合の変換係数トークンに関する確率を含む。例えば、上記の非自明なパーティションＦＥは、含まれているＥＯＢ＿ＴＯＫＥＮが、非自明なパーティションＦＥのシングルトン要素｛ＥＯＢ＿ＴＯＫＥＮ｝であるため、トークンＥＯＢ＿ＴＯＫＥＮに関する確率を含むように決定される。注意すべきこととして、シングルトン要素は、単一の要素のみを含むアルファベットセットＥのサブセットである。そのため、第２の確率分布は、例えば、ＦＯＵＲ＿ＴＯＫＥＮが非自明なパーティションＦＥのシングルトン要素に含まれないため、ＦＯＵＲ＿ＴＯＫＥＮに関する確率を含むように決定されない。
【０２１３】
上記したように、第１のコンテキストを使用してアルファベットセットＥに亘る確率分布である第１の確率分布を取得することができ、第２のコンテキストを使用して非自明なパーティションＦＥに亘って定義された第２の確率分布を取得することができる。係数トークンツリー７００を参照すると、一例では、第１のコンテキストを使用して、全ての内部ノードにおけるバイナリ決定をコーディングする（即ち、符号化または復号化）ためのバイナリ確率分布を決定することができ、第２のコンテキストを使用して、２つの内部ノード（ルートノード７０１およびその右側の子ノード（即ち、ノード７０３））のみにおけるバイナリ分布を決定することができる。
【０２１４】
１３０８において、プロセス１３００は、第１の確率分布と第２の確率分布をミキシングして、ミックス済みの確率を生成する。１３１０において、プロセス１３３０は、ミックス済みの確率を使用して変換係数トークンをエントロピーコーディングする。
【０２１５】
非自明なパーティションＦＥが与えられた場合、２つの内部ノード（ルートノード７０１およびノード７０３）に関するコーディング分布は、第１のコンテキストから取得した分布（即ち、第１の確率分布）と第２のコンテキストから取得した分布（即ち、第２の確率分布）とをミキシングすることにより取得することができる。そのため、トークンをコーディングするための確率分布を事前に選択する必要はなく、むしろ、上記したようにミキシングすることにより、最良の組み合わせが結果的に生じる。
【０２１６】
ミキシングは、図９〜１２に関して上記で説明したとおりである。一例では、プロセス１３００は、第１の確率分布を使用して変換係数トークンを復号化するための第１の条件付き確率を決定すること、第２の確率分布を使用して変換係数トークンを符号化するための第２の条件付き確率を決定すること、第１の条件付き確率および第２の条件付き確率を使用して、ミックス済みの確率を決定することによりミックス済みの確率を生成することができる。
【０２１７】
一例としての図７の係数トークンツリー７００などのトークンツリーを使用して、第１の条件付き確率分布は、内部ノードにおける条件付き確率分布とすることができる。内部ノードにおける条件付き確率分布とは、符号化履歴（即ち、以前にコーディングされた係数）とサイド情報とから決定された第１のコンテキストが与えられたときの内部ノードの子ノード（即ち、左側の子または右側の子）を選択する確率分布である。サイド情報の例は、プレーンタイプ（例えば、輝度、色度など）、変換サイズ（即ち、変換ブロックサイズ）、および変換タイプ（例えば、ＤＣＴ、ＡＤＳＴなど）を含む。他のサイド情報が利用可能である。第２の条件付き確率分布は、コーディングされた履歴およびサイド情報から決定された第２のコンテキストが与えられたときの同じ内部ノードにおける条件付き確率分布である。第１のコンテキストおよび第２のコンテキストは、コーディングされた履歴内の異なる情報および異なるサイド情報を使用して導出することができる。
【０２１８】
一例として非自明なパーティションＦＥを使用すると、第１の条件付き確率分布は、コーディングされた履歴およびサイド情報から決定された第１のコンテキストが与えられたときの非自明なパーティションＦＥに亘る条件付き確率分布とすることができ、第２の条件付き確率分布は、コーディングされた履歴および他のまたは同じサイド情報から決定された第２のコンテキストが与えられたときのＦＥに亘る条件付き確率分布とすることができる。
【０２１９】
第１のコンテキストがアルファベットセットＥに亘る確率分布Ｐを決定する場合、ＦＥの任意の要素ｅに関して、要素ｅ，Ｑ（ｅ）の確率が要素ｅ（ｅはトークンのセット）
【０２２０】
【数３６】
0006923677.tif 000038
内のすべてのトークンの確率の合計によって与えられるように、ＦＥにおける確率分布Ｑを決定することができる。ＦＥはアルファベットセットＥの非自明なパーティションであるため、確率値の選択的ミキシングは、アルファベットセットＥの要素ｅに対して本質的に実行されるか、または行われる。
【０２２１】
１３１２において、第２の確率分布が変換係数トークンの確率を含まないことを条件に、プロセス１３００は、第１の確率分布を使用して現在の変換係数トークンをエントロピーコーディングする。即ち、残りの内部ノード（即ち、パーティションＥのシングルトンに含まれないノード）に関して、コーディング分布は第１のコンテキストから取得され得る。即ち、第１の確率分布を使用して、残りの係数をエントロピーコーディングすることができる。
【０２２２】
要約すると、第１の確率分布と第２の確率分布との選択的ミキシングは、変換係数のコーディングに使用されるトークンのサブセットに関して使用することができる。一例では、トークンは、係数トークンツリーの内部ノードに対応する。例えば、選択的ミキシングは、他の内部ノード（即ち、あまり使用されないノード）よりもより頻繁に使用される内部ノード（即ち、頻繁に使用されるノード）に対してのみ使用することができる。一例では、より頻繁に使用される内部ノードは、それらの内部ノードに対応するトークンのリストとして指定することができる。別の例では、より頻繁に使用される内部ノードが非自明なパーティションＦＥのシングルトンとすることができる。内部ノードにミキシングが使用されていない場合、第１の確率分布をコーディング分布として使用することができる。そのため、ミキシングは、一部のノードに選択的に適用され、第１および第２の分布は一部の内部ノード（例えば、頻繁に使用されるノード）に関してミキシングされ、第１の分布は、他の内部ノード（例えば、あまり使用されないノード）をコーディングするために使用される。
【０２２３】
上記の例では、アルファベットセットＥが非自明なパーティションＦＥに分割された。そのため、アルファベットセットＥのトークンは、無関係で別個であると見なされる。即ち、係数トークンツリー７００のトークンがプロセス１３００を例示するために使用されたとしても、パーティションは、無関係で別個のトークンにおいてトークンを処理する。即ち、パーティションＥは、ツリー構造を活用せず、任意のアルファベットセットで使用することができる。
【０２２４】
別の例では、トークンのツリー構造が使用可能であれば、第２の確率分布を選択するために使用することができる。ツリー構造（係数トークンツリー７００など）は、その階層構造により、あるトークンを別のトークンに関連付けることができる。そのため、第２の確率分布は、係数トークンツリーのいくつかの内部ノードにおいて定義される確率分布とすることができる。
【０２２５】
一例では、より頻繁に使用される内部ノードは、他の内部ノードよりもルートノードに近いノードとなる。例えば、係数トークンツリー７００において、ルートノードからのトラバースは、Ｋとラベル付けされたノードに到達するよりもＣとラベル付けされたノードに到達するホップ（ｈｏｐｓ）が少ないため、Ｃとラベル付けされたノードは、Ｋとラベルのノードよりもルートノード７０１により近い。
【０２２６】
一例では、選択的ミキシングは、ルートノードからの所定数のホップ内（またはそれ以下）の内部ノードに使用することができる。例えば、所定のホップ数が２の場合、Ａとラベル付けされた内部ノード（ルートノード７０１）、ノード７０３、Ｃとラベル付けされたノードに対して選択的ミキシングを使用することができる。このため、内部が「頻繁に使用される」かどうかは、ルートノードに対する内部ノードの近接度に基づいて決定することができる。トークンに対応する内部ノードは、例えば、別のトークンをコーディングするプロセスにおいて、トークンに関連する決定もコーディングされる場合に、「使用」される。
【０２２７】
いくつかの内部ノードのトークン（即ち、ツリーのトラバースによって生成されるシーケンスｘｎ）をコーディングする確率は、第１の確率分布と第２の確率分布とをミキシングすることにより、図９に関して説明したように決定することができる。即ち、第１の確率分布および第２の確率分布の両方の分布を有する内部ノードに関して、現在の係数をエントロピーコーディングするためのミックス済みの確率を取得することができる。他のすべての内部ノードに関して、現在の係数をエントロピーコーディングするために第１の確率分布が使用される。
【０２２８】
ｋが第２のコンテキストの影響を受ける内部ノードの数である場合、第２のコンテキストは、ほぼｋε／ｎビット／トークンを追加するが、第１のコンテキストは、係数トークンツリー７００のトークンに対して１１ε／ｎビット／トークンを追加する。
【０２２９】
選択的ミキシングを使用することにより、コーディングシステムにおいて利用可能なコンテキストＣのセットを、第１のセットＣ０および第２のセットＣ１に分割することができる。一例として係数トークンのアルファベットＥを使用すると、第１のセットＣ０は、アルファベットＥに亘る全体的な分布に影響を与えるコンテキスト情報から導出することができ、セットＣ１におけるコンテキストは、アルファベットＥに亘る分布の一部のみに影響を与えるコンテキスト情報から導出することができる。セットＣ１における異なるコンテキストは、アルファベットＥの異なるパーティションをターゲットとすることができる。係数ツリーが利用可能な場合、セットＣ１の異なるコンテキストは、ツリーの異なる内部ノードをターゲットとすることができる。例えば、セットＣ１における一部のコンテキストは、係数トークンツリーにおけるルートノードをターゲットとすることができる。例えば、セットＣ１における一部のコンテキストは、ＺＥＲＯ＿ＴＯＫＥＮを他のトークンから分割する内部ノードをターゲットとすることができる。例えば、セットＣ１における一部のコンテキストは、ＯＮＥ＿ＴＯＫＥＮを他のトークンから分割する内部ノードをターゲットとすることができる。従って、コーディングシステムにおいて、アルファベットのすべてのトークンに対して数百または数千のコンテキストを維持する代わりに、すべてのトークンに対してより小さなサブセットを維持することができ、コンテキストの別のセットは、重要な、有意な、またはより頻繁に使用されると考えられるトークンをターゲットとすることができる。
【０２３０】
上述の符号化および復号化の態様は、符号化および復号化技術のいくつかの例を示す。しかしながら、符号化および復号化は、これらの用語が特許請求の範囲で使用されているように、データの圧縮、圧縮解除、変換、または任意の他の処理または変更を意味し得ることを理解されたい。
【０２３１】
本明細書では、「例」または「実施」という用語は、例、事例、または例示として機能することを意味するために使用される。本明細書において「例」または「実施形態」と記載された任意の態様または設計は、必ずしも他の態様または設計に対して好ましいまたは有利であるとして解釈されるべきではない。むしろ、「例」または「実施形態」という用語の使用は、概念を具体的な方法で表現することを意図している。本出願で使用される場合、用語「または」は、排他的な「または」ではなく、包括的な「または」を意味することが意図される。即ち、他に明記されていない限り、または文脈から明らかでない限り、「ＸはＡまたはＢを含む」とは、任意の自然な包含的置換（ｎａｔｕｒａｌ  ｉｎｃｌｕｓｉｖｅ  ｐｅｒｍｕｔａｔｉｏｎｓ）を意味することを意図する。即ち、「ＸはＡまたはＢを含む」は、以下の場合、ＸがＡを含む場合、ＸがＢを含む場合、またはＸがＡおよびＢの両方を含む場合のいずれにおいても満足される。さらに、本出願および添付の特許請求の範囲で使用される冠詞「ａ」および「ａｎ」は、他に明記されない限り、または単数形に向けられる文脈から明らかでない限り、「１つまたは複数」を意味すると一般に解釈されるべきである。さらに、「実施形態」または「一実施形態」という用語の使用は、そのように記載されない限り、同じ実施形態または実施を意味することを意図するものではない。
【０２３２】
送信局１０２および／または受信局１０６（ならびに、符号化器４００および復号化器５００が含む、それに記憶され、かつ／またはそれによって実行されるアルゴリズム、方法、命令など）の実施形態は、ハードウェア、ソフトウェア、またはそれらの任意の組み合わせにおいて実現することができる。ハードウェアは、例えば、コンピュータ、知的財産（ＩＰ）コア、特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔｓ）、プログラマブル論理アレイ、光プロセッサ、プログラマブル論理コントローラ、マイクロコード、マイクロコントローラ、サーバ、マイクロプロセッサ、デジタル信号プロセッサ、または他の適切な回路を含むことができる。特許請求の範囲において、「プロセッサ」という用語は、前述のハードウェアのいずれかを単独でまたは組み合わせて含むものとして理解されるべきである。用語「信号」および「データ」は、互換的に使用される。さらに、送信局１０２および受信局１０６の一部は、必ずしも同じ方法で実施される必要はない。
【０２３３】
さらに、一態様では、例えば、送信局１０２または受信局１０６は、実行時に、本明細書に記載された個々の方法、アルゴリズム、および／または命令をのうちのいずれかを実行するコンピュータプログラムを備えた汎用コンピュータまたは汎用プロセッサを使用して実施することができる。加えて、または代替的に、例えば、本明細書に記載された方法、アルゴリズム、または命令のいずれかを実行するための他のハードウェアを含むことができる専用コンピュータ／プロセッサを利用することができる。
【０２３４】
送信局１０２および受信局１０６は、例えば、ビデオ会議システム内のコンピュータ上で実施することができる。あるいは、送信局１０２はサーバ上で実施することができ、受信局１０６はサーバとは別のハンドヘルド通信デバイスのようなデバイス上で実施することができる。この場合、送信局１０２は、符号化器４００を使用してコンテンツを符号化されたビデオ信号に符号化し、符号化されたビデオ信号を通信デバイスに送信することができる。通信デバイスは、復号化器５００を使用して符号化されたビデオ信号を復号化することができる。あるいは、通信デバイスは、通信デバイス上に局所的に格納されたコンテンツ、例えば、送信局１０２によって送信されなかったコンテンツを復号化することができる。他の送信局１０２および受信局１０６の実施スキームが利用可能である。例えば、受信局１０６は、ポータブル通信デバイスではなく、一般に固定のパーソナルコンピュータであってもよく、かつ／または符号化器４００を含むデバイスは、復号化器５００を含んでもよい。
【０２３５】
さらに、本開示の実施形態の全部または一部は、例えば有形のコンピュータ使用可能またはコンピュータ可読媒体からアクセス可能なコンピュータプログラム製品の形態を取ることができる。コンピュータ使用可能またはコンピュータ可読媒体は、例えば、任意のプロセッサによって、またはそれに関連して使用するために、プログラムを有形に包含、格納、通信、または輸送することができる任意のデバイスであり得る。媒体は、例えば、電子、磁気、光学、電磁気、または半導体デバイスであり得る。他の適切な媒体も利用可能である。
【０２３６】
上述した実施形態、実施例及び態様は、本開示の理解を容易にするために記載されており、本開示を限定するものではない。本開示は、添付の特許請求の範囲内に含まれる様々な改変および均等の構成を包含することを意図しており、その範囲は、法律で許容されるようなすべての改変および均等の構造を包含するように最も広い解釈が与えられる。
【図１】
0006923677.tif 000039
【図２】
0006923677.tif 000040
【図３】
0006923677.tif 000041
【図４】
0006923677.tif 000042
【図５】
0006923677.tif 000043
【図６】
0006923677.tif 000044
【図７】
0006923677.tif 000045
【図８】
0006923677.tif 000046
【図９】
0006923677.tif 000047
【図１０】
0006923677.tif 000048
【図１１】
0006923677.tif 000049
【図１２】
0006923677.tif 000050
【図１３】
0006923677.tif 000051
【図１４】
0006923677.tif 000052