(57)【特許請求の範囲】
【請求項１】
画素値に関連付けられたインデックスを複数含むパレットに従って画像の符号化ユニットを符号化又は復号する方法であって、
前記パレットに含まれる複数のインデックスの内の対象のインデックスが、前記符号化ユニット内の当該対象のインデックスの上の位置のインデックスと等しいかを示すフラグを符号化又は復号し、
前記パレットに含まれるインデックスに対応するエントロピー符号のパラメータを前記フラグに従って決定する方法。
【請求項２】
前記エントロピー符号のパラメータは前記エントロピー符号の長さに関連する、
請求項１に記載の方法。
【請求項３】
前記エントロピー符号はゴロム型符号である、
請求項１または２に記載の方法。
【請求項４】
前記エントロピー符号のパラメータは前記ゴロム型符号のオーダーである、
請求項３に記載の方法。
【請求項５】
前記エントロピー符号のパラメータは前記パレットサイズに依存して判定される、
請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記エントロピー符号のパラメータは前記符号化ユニットのサイズに従って決定される、
請求項１から５のいずれか１項に記載の方法。
【請求項７】
前記エントロピー符号のパラメータは前記インデックスと関連付けられる画素の残数に依存して判定される、
請求項１から６のいずれか１項に記載の方法。
【請求項８】
前記インデックスは、走査順に連続した複数画素のグループによって、各々のグループが予測モードを示す第１のシンタックス要素および繰り返しを示す第２の要素を使用して、符号化又は復号され、前記エントロピー符号は前記繰り返しのシンタックス要素の符号化又は復号に使用される、
請求項１から７のいずれか１項に記載の方法。
【請求項９】
画素値に関連付けられたインデックスを複数含むパレットに従って画像の符号化ユニットを符号化又は復号する装置であって、
前記パレットに含まれる複数のインデックスの内の対象のインデックスが、前記符号化ユニット内の当該対象のインデックスの上の位置のインデックスと等しいかを示すフラグを符号化又は復号する手段と、
前記パレットに含まれるインデックスに対応するエントロピー符号のパラメータを前記フラグに従って決定する手段と
を有する装置。
【請求項１０】
請求項１から８のいずれか１項に記載の方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビデオ符号化または復号のプロセスにおいて、変位ベクトル成分シンタックス要素符号化を予測する方法およびデバイスに関する。特に、ＨＥＶＣにおけるパレットモード符号化における「Ｒｕｎ」シンタックス要素に関する。
【背景技術】
【０００２】
とりわけ、いわゆるパレットで符号化された、またはパレットから構築された予測ブロックに基づいて画素のブロックを予測により符号化する符号化モードについてのものである。
【０００３】
本明細書におけるパレットは、インデックスを画素の値と関連付ける複数のエントリを有するルックアップテーブルとして定義される。通常、必須ではないが、画素の値はその画素に関連付けられた各々の色成分の値によって構成され、カラーパレットとなる。一方、画素の値が単一の画素成分より成る場合には、モノクロのパレットとなる。
【０００４】
画素のブロックを符号化するこのモードは、一般にパレット符号化モード（Ｐａｌｅｔｔｅ  ｃｏｄｉｎｇ  ｍｏｄｅ）と呼ばれる。例えば、high efficiency video coding（ＨＥＶＣ：ＩＳＯ／ＩＥＣ  ２３００８−２  ＭＰＥＧ−Ｈ  Ｐａｒｔ２／ＩＴＵ−Ｔ  Ｈ．２６５）のレンジ拡張で、このモードを採用することが見込まれる。
【０００５】
ビデオシーケンスで画像を符号化するとき、画像は最初に符号化ツリーブロック（ＣＴＢ）と呼ばれる等しい大きさの画素の符号化エンティティに分割される。符号化ツリーブロックの大きさは、通常は６４×６４画素である。各々の符号化ツリーブロックは次に、符号化する画素の実際のブロックでありそれぞれサイズが異なり得るより小さいブロックの階層ツリーに分割することができる。符号化するためのこれらのより小さいブロックは、符号化ユニット（ＣＵ）と呼ばれる。
【０００６】
個別の符号化ユニットの符号化は通常は予測によるものである。つまり、予測ブロックが最初に決定される。次に、予測ブロックと符号化ユニットとの差分が計算される。この差分は残差と呼ばれる。次に、この残差が圧縮される。符号化ユニットの実際の符号化情報は、予測ブロックを決定する方法および圧縮された残差を示す情報等でできている。予測ブロックは、効率的に圧縮できる小さい残差を得るために可能な限り符号化ユニットに類似しているブロックであることが最も望ましい。
【０００７】
符号化モードは、符号化ユニットの予測符号化方法に対する予測ブロックを決定するために使用された方法に基づいて定義される。
【０００８】
第１の符号化モードはＩＮＴＲＡモードと呼ばれる。ＩＮＴＲＡモードによれば、予測ブロックは、現在の画像内で符号化ユニットを直接取り囲む画素の値に基づいて構築される。留意すべきは、予測ブロックは現在の画像のブロックではなく構築物であるということである。予測ブロックを構築するために境界のどの画素が実際に使用されるか、そしてそれらがどのように使用されるかを判定するために方向が使用される。ＩＮＴＲＡモードの背後にある考えは、自然な画像全体の整合性に起因し、符号化ユニットを直接取り囲む画素は現在の符号化ユニットの画素と類似している可能性が高いということである。したがって、これら周囲の画素に基づく予測ブロックを使用して符号化ユニットの画素の値の良好な予測を得ることが可能である。
【０００９】
第２の符号化モードはＩＮＴＥＲモードと呼ばれる。ＩＮＴＥＲモードによれば、予測ブロックは別の画像のブロックである。ＩＮＴＥＲモードの背後にある考えは、一連の連続した画像は一般に非常に類似しているということである。主な差分は通常、カメラのスクロールによる、またはシーン中の動く被写体による、これらの画像間の動きによって生じる。予測ブロックは、現在の画像内の符号化ユニットの位置に対する参照画像でのその位置を相対的に示すベクトルによって判定される。このベクトルは動きベクトルと呼ばれる。このモードによれば、このモードを使用する上記符号化ユニットの符号化は、動きベクトルおよび圧縮された残差を含む動き情報を含む。
【００１０】
本明細書ではパレットモードと呼ばれる第３の符号化モードに焦点をあてる。パレットモードによれば、ある符号化ユニットに対する予測ブロックをパレットからのインデックスのブロックとして定義することが可能である。すなわち、予測ブロック内の各々の画素位置に対して、予測ブロックは、符号化ユニットにおいて同じ位置を有する（すなわち共通の場所に配置された）画素の値に最も近いパレット内の画素値と関連付けられたインデックスを含む。次に予測ブロックと符号化ユニットとの差分を表す残差が計算され、符号化される。パレット内のエントリインデックスは「レベル」としても知られている。
【００１１】
パレットモードを使用するとき、レベルの予測ブロックはビットストリームで伝送されなければならない。この伝送のために、予測ブロックは３つのシンタックス要素を使用して二値で符号化される。「Ｐｒｅｄ  ｍｏｄｅ」と呼ばれる第１のシンタックス要素は、２つの符号化モードを区別出来るようにするものである。値０を有するＰｒｅｄ  ｍｏｄｅに対応する第１のモードにおいて、符号化されるレベルの値はビットストリームで伝送されなければならない。値１を有するＰｒｅｄ  ｍｏｄｅに対応する第２のモードにおいて、符号化されるレベルの値は予測ブロックにおける上の画素の値から取得する。レベルは伝送されなくてもよい。
【００１２】
「Ｌｅｖｅｌ」と呼ばれる第２のシンタックス要素は第１のモードにおけるレベルの値の伝送のために定義される。「Ｒｕｎ」と呼ばれる第３のシンタックス要素は繰り返しの値を符号化するために使用される。予測ブロックが、左上端から右下端まで左から右へそして上から下へ行毎に走査されることを考慮して、Ｒｕｎシンタックス要素は同じ符号化を有する予測ブロックにおける連続した画素の数を示す。Ｐｒｅｄ  ｍｏｄｅが０の場合、同じレベル値を有する予測ブロックの連続した画素の数である。Ｐｒｅｄ  ｍｏｄｅが１の場合、上の画素のレベル値に対応するレベル値を有する予測ブロックの連続した画素の数である。
【００１３】
Ｒｕｎシンタックス要素は、最も低い値に対してゴロム−ライス符号を、そして最も高い値に対して指数ゴロム符号を使用して符号化される。これらのゴロム符号はゴロムオーダーと呼ばれるパラメータを使用して定義される。Ｒｕｎシンタックス要素の符号化に対し、このゴロムオーダーは値３を有するとみなす。留意すべきは、ゴロムエントロピー符号の長さはオーダーに依存することである。
【発明の概要】
【００１４】
本発明は、パレットモードの「Ｒｕｎ」シンタックス要素の符号化の符号化を改善するために考案された。
【００１５】
本発明は、可変のゴロムオーダーを使用することによってＲｕｎシンタックス要素の符号化を改善することを提案する。ゴロムオーダーがさまざまなパラメータに従って適合されるいくつかの実施形態を説明する。
【００１６】
本発明のある実施態様によれば、画素値に関連付けられたインデックスを複数含むパレットに従って画像の符号化ユニットを符号化又は復号する方法であって、前記パレットに含まれる複数のインデックスの内の対象のインデックスが、前記符号化ユニット内の当該対象のインデックスの上の位置のインデックスと等しいかを示すフラグを符号化又は復号し、前記パレットに含まれるインデックスに対応するエントロピー符号のパラメータを前記フラグに従って決定する。
本発明の第１の実施態様によれば、複数の画素値に関連付けられたインデックスのセットを備えるパレットに従って画像の符号化ユニットを符号化するために使用されたインデックスのブロックの複数のインデックスに関連付けられた、前記インデックスのブロックの少なくとも一部の前記符号化に使用される、エントロピー符号の少なくとも１つのパラメータを判定する方法であって、エントロピー符号の前記少なくとも１つのパラメータは前記インデックスのブロックの前記符号化プロセスで使用された少なくとも１つのパラメータに依存して判定される。
【００１７】
１つの実施形態において、エントロピー符号の前記少なくとも１つのパラメータは前記エントロピー符号の長さに関連する。
【００１８】
１つの実施形態において、前記エントロピー符号はゴロム型符号である。
【００１９】
１つの実施形態において、エントロピー符号の前記少なくとも１つのパラメータは前記ゴロム型符号のオーダーである。
【００２０】
１つの実施形態において、前記インデックスのブロックの少なくとも１つのインデックスは予測により符号化され、エントロピー符号の前記少なくとも１つのパラメータはエントロピー符号と関連付けられた前記少なくとも１つのインデックスの前記予測モードに依存して判定される。
【００２１】
１つの実施形態において、前記インデックスのブロックの少なくとも１つのインデックスは予測により符号化され、エントロピー符号の前記少なくとも１つのパラメータは前記エントロピー符号と関連付けられた前記少なくとも１つのインデックスのインデックス値に依存して判定される。
【００２２】
１つの実施形態において、前記インデックスのブロックの少なくとも１つのインデックスは予測により符号化され、エントロピー符号の前記少なくとも１つのパラメータは前記パレットサイズに依存して判定される。
【００２３】
１つの実施形態において、前記インデックスのブロックの少なくとも１つのインデックスは予測により符号化され、エントロピー符号の前記少なくとも１つのパラメータは前記符号化ユニットサイズに依存して判定される。
【００２４】
１つの実施形態において、各々のインデックスが各画素と関連付けされた前記インデックスのブロックの少なくとも１つのインデックスは予測により符号化され、エントロピー符号の前記少なくとも１つのパラメータは前記インデックスのブロックのインデックスと関連付ける画素の残数に依存して判定される。
【００２５】
１つの実施形態において、前記インデックスのブロックの少なくとも１つのインデックスは、走査順に連続した複数画素のグループによって、各々のグループが予測モードを示す第１のシンタックス要素および繰り返しを示す第２の要素を使用して、符号化され、前記エントロピー符号は前記繰り返しのシンタックス要素の符号化に使用される。
【００２６】
１つの実施形態において、前記方法は、
−前記インデックスのブロックの前記符号化プロセスで使用された少なくとも１つの第２のパラメータに基づいてカテゴリを判定する工程と、
−各々のカテゴリに対してエントロピー符号の前記少なくとも１つのパラメータの値を判定する工程と、
を含む。
【００２７】
１つの実施形態において、前記方法は、
−前記インデックスのブロックの前記符号化プロセスで使用された少なくとも１つの第３のパラメータに基づいて、エントロピー符号の前記少なくとも１つのパラメータの前記判定された値を適合させる工程と、
をさらに含む。
【００２８】
１つの実施形態において、前記少なくとも１つの第３のパラメータは、同じカテゴリに対して判定された最後の値と、最後に符号化された繰り返しの値と、を含む。
【００２９】
１つの実施形態において、前記少なくとも１つの第２のパラメータは、前記予測モード、または前記エントロピー符号と関連付けられた画素の前記インデックス値を含む。
【００３０】
１つの実施形態において、エントロピー符号の前記最小の１つのパラメータは、最後に符号化または復号された対応する要素の符号化または復号のために最適であったであろう前記エントロピー符号のパラメータの値として所定の要素の前記符号化に対して判定される。
【００３１】
１つの実施形態において、エントロピー符号の前記最小の１つのパラメータの値は、固定数の値に制限される。
【００３２】
本発明の第２の実施態様によれば、ビットストリームでビデオデータを符号化する方法を提供するものであって、前記方法は、
−第１の実施態様の方法に係るエントロピー符号の少なくとも１つのパラメータを判定する工程と、
−エントロピー符号の前記または１つの判定されたパラメータを使用して前記ビットストリームに値を書き込む工程と、
を含む。
【００３３】
本発明の第３の実施態様によれば、ビットストリームからビデオデータを復号する方法を提供するものであって、前記方法は、
−インデックスのブロックの前記符号化プロセスで使用されたパラメータを前記ビットストリームから取得する工程と、
−第１の実施態様の方法に係るエントロピー符号の少なくとも１つのパラメータを判定する工程と、
を含む。
【００３４】
本発明の第４の実施態様によれば、複数の画素値に関連付けられたインデックスのセットを備えるパレットに従って画像の符号化ユニットを符号化するために使用されたインデックスのブロックの複数のインデックスに関連付けられた、前記インデックスのブロックの少なくとも一部の前記符号化に使用される、エントロピー符号の少なくとも１つのパラメータを判定するデバイスを提供するものであって、前記デバイスは、前記インデックスのブロックの前記符号化プロセスで使用された少なくとも１つのパラメータに依存してエントロピー符号の前記少なくとも１つのパラメータを判定する手段を有する。
【００３５】
本発明の第５の実施態様によれば、ビットストリームでビデオデータを符号化するデバイスを提供するものであって、複数の画素値に関連付けられたインデックスのセットを備えるパレットに従って画像の符号化ユニットを符号化するために使用されたインデックスのブロックの複数のインデックスに関連付けられた、前記インデックスのブロックの少なくとも一部の前記符号化に使用される、エントロピー符号の少なくとも１つのパラメータを判定する手段であって、前記デバイスは、前記インデックスのブロックの前記符号化プロセスで使用された少なくとも１つのパラメータに依存してエントロピー符号の前記少なくとも１つのパラメータを判定する手段を有し、エントロピー符号の前記または１つの判定されたパラメータを使用して前記ビットストリームに値を書き込む手段と、を有する。
【００３６】
本発明の第６の実施態様によれば、ビットストリームからビデオデータを復号するデバイスを提供するものであって、インデックスのブロックの前記符号化プロセスで使用されたパラメータを前記ビットストリームから取得する手段と、複数の画素値に関連付けられたインデックスのセットを備えるパレットに従って画像の符号化ユニットを符号化するために使用されたインデックスのブロックの複数のインデックスに関連付けられた、前記インデックスのブロックの少なくとも一部の前記符号化に使用される、エントロピー符号の少なくとも１つのパラメータを判定する手段であって、前記デバイスは、前記インデックスのブロックの前記符号化プロセスで使用された少なくとも前記パラメータに依存してエントロピー符号の前記少なくとも１つのパラメータを判定する手段と、を有する。
【００３７】
本発明の第７の実施態様によれば、プログラム可能な装置用のコンピュータプログラム製品を提供するものであって、前記コンピュータプログラム製品は、前記プログラム可能な装置にロードされ実行されたとき、第１、第２または第３の実施態様のいずれか１つに係る方法を実施するための一連の命令を含む。
【００３８】
本発明の第８の実施態様によれば、第１、第２または第３の実施態様のいずれか１つに係る方法を実施するためのコンピュータプログラムの命令を記憶している非一過性のコンピュータ可読記憶媒体を提供する。
【００３９】
本発明の第９の実施態様によれば、コンピュータプログラムの命令を記憶しているコンピュータまたはマイクロプロセッサによって読取り可能な情報記憶手段を提供するものであって、第１、第２または第３の実施態様のいずれか１つに係る方法を実施することを可能にする。
【００４０】
本発明の１つのさらなる実施態様によれば、ビットストリームでビデオデータを符号化する方法を提供するものであって、前記方法は、第１の実施態様に係るエントロピー符号の少なくとも１つのパラメータを判定する工程と、前記判定された値を前記ビットストリームに書き込む工程と、を含む。
【００４１】
本発明の別の実施態様によれば、ビットストリームからビデオデータを復号する方法を提供を提供するものであって、前記方法は、第１の実施態様に係るエントロピー符号の少なくとも１つのパラメータを判定する工程と、前記判定された値を前記ビットストリームから読み取る工程と、を含む。
【００４２】
本発明のさらなる実施態様によれば、複数の画素値に関連付けられたインデックスのセットを備えるパレットに従って画像の符号化ユニットを符号化するために使用されたインデックスのブロックの複数のインデックスに関連付けられた、前記インデックスのブロックの少なくとも一部の前記符号化に使用される、エントロピー符号の少なくとも１つのパラメータを判定する方法を提供するものであって、前記少なくとも１つのパラメータは前記インデックスのブロックの前記符号化プロセスで使用された少なくとも１つのパラメータに依存して判定される。よって、Ｒｕｎシンタックス要素の符号化は改善される。
【００４３】
１つの実施形態において、エントロピー符号の前記少なくとも１つのパラメータは前記エントロピー符号の長さに関連する。
【００４４】
１つの実施形態において、前記エントロピー符号はゴロム型符号である。
【００４５】
１つの実施形態において、エントロピー符号の前記少なくとも１つのパラメータはゴロム型符号のオーダーである。
【００４６】
１つの実施形態において、前記インデックスのブロックの少なくとも１つのインデックスは予測により符号化され、エントロピー符号の前記少なくとも１つのパラメータは、前記エントロピー符号と関連付けられた前記少なくとも１つのインデックスの前記予測モードに依存して判定される。
【００４７】
１つの実施形態において、前記インデックスのブロックの少なくとも１つのインデックスは予測により符号化され、エントロピー符号の前記少なくとも１つのパラメータは、前記エントロピー符号と関連付けられた前記少なくとも１つのインデックスの前記インデックス値に依存して判定される。
【００４８】
１つの実施形態において、前記インデックスのブロックの少なくとも１つのインデックスは予測により符号化され、エントロピー符号の前記少なくとも１つのパラメータは前記パレットサイズに依存して判定される。
【００４９】
１つの実施形態において、前記インデックスのブロックの少なくとも１つのインデックスは予測により符号化され、エントロピー符号の前記少なくとも１つのパラメータは前記符号化ユニットサイズに依存して判定される。
【００５０】
１つの実施形態において、前記インデックスのブロックの少なくとも１つのインデックスは予測により符号化され、エントロピー符号の前記少なくとも１つのパラメータは復号または符号化されるレベルのブロックに残っている画素の数に依存して判定される。
【００５１】
１つの実施形態において、前記インデックスのブロックは、走査順に連続した複数画素のグループによって、各々のグループが予測モードを示す第１のシンタックス要素および繰り返しを示す第２の要素を使用して、符号化され、前記エントロピー符号は繰り返しのシンタックス要素の符号化に使用される。
【００５２】
１つの実施形態において、前記方法は、
前記インデックスのブロックの前記符号化プロセスで使用された少なくとも１つの第２のパラメータに基づいてカテゴリを判定する工程と、
各々のカテゴリに対してエントロピー符号の前記少なくとも１つのパラメータの値を判定する工程と、
を含む。
【００５３】
１つの実施形態において、前記方法は、
前記インデックスのブロックの前記符号化プロセスで使用された少なくとも１つの第３のパラメータに基づいてエントロピー符号の前記少なくとも１つのパラメータの前記判定された値を適合させる工程と、
をさらに含む。
【００５４】
１つの実施形態において、前記少なくとも１つの第３のパラメータは、同じカテゴリに対して判定された最後の値と、最後に符号化された繰り返しの値と、を含む。
【００５５】
１つの実施形態において、前記少なくとも１つの第２のパラメータは、前記予測モード、または前記エントロピー符号と関連付けられた前記画素のインデックス値を含む。
【００５６】
１つの実施形態において、エントロピー符号の前記最小の１つのパラメータは、最後に符号化または復号された対応する要素の符号化または復号のために最適であったであろう前記エントロピー符号のパラメータの値として、所定の要素の前記符号化に対して判定される。
【００５７】
１つの実施形態において、エントロピー符号の前記最小の１つのパラメータの値は、固定数の値に制限される。
【００５８】
本発明の別の実施態様によれば、ビットストリームでビデオデータを符号化または復号する方法を提供するものであって、前記方法は、
本発明に係るエントロピー符号の少なくとも１つのパラメータを判定するステップと、
前記判定された値を前記ビットストリームに書き込む、または前記ビットストリームから読み出すステップと、
を含む。
【００５９】
本発明の別の実施態様によれば、パレットに従って画像の符号化ユニットを符号化するために使用されたインデックスのブロックを符号化する方法を提供するものであって、前記パレットは複数の画素値に関連付けられたインデックスのセットを備え、前記エントロピー符号は前記インデックスのブロックの少なくとも一部の前記符号化に使用され、前記インデックスのブロックは走査順に連続した複数画素のグループによって符号化され、各々のグループは予測モードを示す第１のシンタックス要素および繰り返しを示す第２の要素を使用して符号化され、前記エントロピー符号は繰り返しのシンタックス要素の前記符号化に使用され、前記パレットは前記インデックスのブロックで複数のインデックスの前記出現に応じて再順序付けされるものであり、前記繰り返しの要素は事前に定義された閾値より大きいインデックスと関連付けられた複数画素のグループに対して符号化されない。
【００６０】
本発明の別の実施態様によれば、複数の画素値に関連付けられたインデックスのセットを備えるパレットに従って画像の符号化ユニットを符号化するために使用されたインデックスのブロックの複数のインデックスに関連付けられた、前記インデックスのブロックの少なくとも一部の前記符号化に使用される、エントロピー符号の少なくとも１つのパラメータを判定する方法を提供するものであって前記少なくとも１つのパラメータはゼロ値であると判定される。
【００６１】
本発明の別の実施態様によれば、複数の画素値に関連付けられたインデックスのセットを備えるパレットに従って画像の符号化ユニットを符号化するために使用されたインデックスのブロックの複数のインデックスに関連付けられた、前記インデックスのブロックの少なくとも一部の前記符号化に使用される、エントロピー符号の少なくとも１つのパラメータを判定するデバイスを提供するものであって、前記デバイスは、前記インデックスのブロックの前記符号化プロセスで使用された少なくとも１つのパラメータに依存して前記少なくとも１つのパラメータを判定する手段を有する。
【００６２】
本発明の別の実施態様によれば、プログラム可能な装置用のコンピュータプログラム製品を提供するものであって、前記コンピュータプログラム製品は、前記プログラム可能な装置にロードされ実行されたとき、本発明に係る方法を実施するための一連の命令を含む。
【００６３】
本発明の別の実施態様によれば、本発明に係る方法を実施するためのコンピュータプログラムの命令を記憶している非一過性のコンピュータ可読記憶媒体を提供するものである。
【００６４】
本発明の別の実施態様によれば、コンピュータプログラムの命令を記憶している、コンピュータまたはマイクロプロセッサによって読取り可能な情報記憶手段を提供するものであって、本発明に係る方法を実施することを可能にする。
【００６５】
本発明のさらに別の実施態様によれば、画像内のパレットモードに従って符号化された画素のブロックの複数の画素と関連付けられたエントロピー符号のパラメータを判定する方法を提供するものであって、１つの前記パラメータは前記複数の関連画素の予測方向に依存して判定される。
【００６６】
１つの実施形態において、前記判定されたパラメータは前記エントロピー符号の長さである。
【００６７】
１つの実施形態において、前記判定されたパラメータはゴロム符号のパラメータである。
【００６８】
本発明のさらなる実施態様で、画像符号化の方法を提供するものであって、上述のさらに別の実施態様のパラメータを判定する方法を含む。
【００６９】
本発明のさらなる実施態様で、画像符号化の方法を提供するものであって、上述のさらに別の実施態様のパラメータを判定する方法を含む。本発明に係る方法の少なくとも一部はコンピュータ実施することができる。したがって、本発明は、本明細書ですべて一般に「回路」、「モジュール」または「システム」と呼ばれる、完全にハードウェア実施形態、完全にソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコード、などを含む）またはソフトウェアとハードウェアの実施態様を組み合わせる実施形態の形をとり得る。さらに、本発明は、媒体に具現化された、コンピュータが使用可能なプログラムコードを有する任意の有形な表現手段に具現化されたコンピュータプログラム製品の形をとり得る。
【００７０】
本発明はソフトウェアで実現することができるため、プログラム可能な装置に提供するための、適切なキャリア媒体上のコンピュータ可読コードとして具体化することができる。有形のキャリア媒体は、フロッピーディスク、ＣＤ−ＲＯＭ、ハードディスクドライブ、磁気テープ装置または固体メモリデバイスなどの記憶媒体を含み得る。一時的キャリア媒体は、電気信号、電子信号、光信号、音響信号、磁気信号または、例えばマイクロ波もしくはＲＦ信号などの、電磁信号などの信号を含み得る。
【図面の簡単な説明】
【００７１】
本発明の実施形態を、以下の図面を参照して、例としてのみ説明する。
【図１】ＨＥＶＣエンコーダアーキテクチャを示す。
【図２】ＨＥＶＣデコーダアーキテクチャを示す。
【図３】因果領域の概念を示す。
【図４】さまざまなビデオフォーマットを示す。
【図５】符号化ツリーブロックの符号化ユニットへの分割およびこれら符号化ユニットの復号する走査順を示す。
【図６】ＨＥＶＣにおけるシンタックス要素のゴロムベースの二値符号化を示す。
【図７】ＨＥＶＣのレンジ拡張において検証中のデコーダ側におけるパレットモード予測の原理を示す。
【図８】符号化ユニットとそれに対応するレベルのブロックおよび関連付けされたパレットを示す。
【図９】同じレベルのブロックおよびこのレベルのブロックの符号化に使用されたシンタックス要素のセットを示す。
【図１０】パレットモードに関連したシンタックス要素の復号プロセスを示す。
【図１１】レベルのブロックを構築し、次に予測子として使用すべき色空間のブロック予測子を構築する再構成プロセスを示す。
【図１２】エンコーダでの例示的パレット判定アルゴリズムを示す。
【図１３】エンコーダでのＰｒｅｄ  ｍｏｄｅ、ＬｅｖｅｌおよびＲｕｎシンタックス要素の選択を例示する。
【図１４】Ｏｒｄｅｒ値がレベルのブロックに残っている画素の数に依存する実施形態を示す。
【図１５】Ｏｒｄｅｒ値がビットストリームで伝送される実施形態を示す。
【図１６】Ｒｕｎ値を伝送しないことを決めるために使用されたＬｅｖｅｌ値に対する閾値の復号に関連した実施形態を示す。
【図１７】本発明の１つまたは複数の実施形態を実施するのための計算装置の概略ブロック図である。
【発明を実施するための形態】
【００７２】
図１はＨＥＶＣエンコーダアーキテクチャを示す。ビデオエンコーダで、元のシーケンス１０１は画素のブロックに分割１０２される。次に符号化モードが各々のブロックに割り当てられる。ＨＥＶＣで通常使用される符号化モードには２つのファミリーがある。すなわち、空間予測に基づくモードもしくはＩＮＴＲＡモード１０３、および時間予測に基づくモードもしくは動き推定１０４および動き補償１０５に基づくＩＮＴＥＲモードがある。ＩＮＴＲＡ符号化ユニットは一般に、ＩＮＴＲＡ予測と呼ばれるプロセスによってその因果境界において符号化された画素から予測される。ＨＥＶＣ  ＲＥｘｔとして知られる現在設計されているＨＥＶＣの拡張は、追加の符号化モード、すなわち画素のブロックを符号化するためにＩＮＴＲＡおよびＩＮＴＥＲ符号化モードに匹敵するパレット符号化モードを追加する。このパレット符号化モードを、具体的には図７から図１３を参照してより詳細に以下に説明する。
【００７３】
ＩＮＴＥＲ符号化モードの時間予測は、まず動き推定ステップ１０４で符号化ユニットに最も近い参照領域を参照フレーム１１６と呼ばれる過去または未来フレームにおいて特定するものである。この参照領域は予測ブロックを構成する。次に、この符号化ユニットは、動き補償ステップ１０５で残差を計算するために予測ブロックを使用して予測される。
【００７４】
空間予測および時間予測いずれの場合も、残差は元の予測ブロックから符号化ユニットを減算することによって計算される。
【００７５】
ＩＮＴＲＡ予測では、予測方向が符号化される。時間予測では、少なくとも１つの動きベクトルが符号化される。しかしながら、動きベクトル符号化に関連したビットレートコストをさらに削減するために動きベクトルは直接符号化されない。実際に、動きが均質なものであると仮定すると、動きベクトルをその動きベクトルとその周囲の動きベクトルとの差分として符号化することは特に影響がある。例えばＨ．２６４／ＡＶＣ符号化規格で、現在ブロックの上および左に位置する３ブロックの間で計算された中間ベクトルに対して動きベクトルが符号化される。中間ベクトルと現在ブロック動きベクトルとの間で計算された残差動きベクトルとも呼ばれる差分だけが、ビットストリームに符号化される。これはモジュール「Ｍｖ予測および符号化」１１７で処理される。各々の符号化されたベクトルの値は動きベクトルフィールド１１８に記憶される。予測のために使用される隣接する動きベクトルは、動きベクトルフィールド１１８から抽出される。
【００７６】
そして、レート歪み性能を最適化するモードがモジュール１０６で選択される。冗長性をさらに低減するために、モジュール１０７で残差ブロックの変換、通常はＤＣＴ、が適用され、モジュール１０８で係数に量子化が適用される。係数の量子化ブロックはその後モジュール１０９でエントロピー符号化され、その結果がビットストリーム１１０に挿入される。
【００７７】
エンコーダはその後モジュール１１１〜１１６で、未来の動き推定のために符号化されたフレームの復号を行う。これがエンコーダにおける復号ループである。これらのステップによってエンコーダおよびデコーダに同じ参照フレームを持たせることができる。符号化されたフレームを再構成するためには、画素領域で「再構成された」残差を提供するために、残差がモジュール１１１で逆量子化され、モジュール１１２で逆変換される。符号化モード（ＩＮＴＥＲまたはＩＮＴＲＡ）に従って、この残差がＩＮＴＥＲ予測子１１４またはＩＮＴＲＡ予測子１１３に追加される。
【００７８】
次に、モジュール１１５で１つまたはいくつかの種類のポストフィルタリングによってこの第１の再構成がフィルタリングされる。これらのポストフィルタは復号ループに統合される。つまり、エンコーダおよびデコーダで同じ参照フレームを使用するために、エンコーダおよびデコーダでそれらを再構成フレームに適用する必要がある。このポストフィルタリングの目的は圧縮アーティファクトを除去することである。
【００７９】
ＨＥＶＣデコーダの原理を図２に示す。
【００８０】
ビデオストリーム２０１は最初にモジュール２０２でエントロピー復号される。次に、画素値を取得するために残差データがモジュール２０３で逆量子化され、モジュール２０４で逆変換される。モードデータもエントロピー復号され、モードの機能で、ｔ  ＩＮＴＲＡタイプ復号またはＩＮＴＥＲタイプ復号が行われる。ＩＮＴＲＡモードの場合、ＩＮＴＲＡ予測方向がビットストリームから復号される。次に予測方向を使用して参照領域の位置を決める２０５。ＩＮＴＥＲモードの場合、動き情報がビットストリームから復号される２０２。これは参照フレームインデックスおよび動きベクトル残差から構成されている。動きベクトル予測子は、動きベクトルを取得するために動きベクトル残差に追加２１０される。次に動きベクトルはを使用して参照フレームで参照領域の位置を決める２０６。なお、動きベクトルフィールドデータ２１１は、次の復号動きベクトルの予測に使用するために、復号動きベクトルで更新される。復号フレームのこの最初の復元は次に、エンコーダ側で使用されたものと全く同じポストフィルタでポストフィルタリング２０７される。デコーダの出力は解凍されたビデオ２０９である。
【００８１】
図３は、ＨＥＶＣにおけるようなブロック毎の符号化から生じる因果原理を示す。
【００８２】
高レベルでは、画像はラスタ走査順に符号化される複数の符号化ユニットに分割される。したがって、ブロック３．１を符号化するとき、領域３．３のすべてのブロックはすでに符号化されており、エンコーダに利用可能であると考えられる。同様に、デコーダでブロック３．１を復号するとき、領域３．３のすべてのブロックはすでに復号され、したがって再構成されており、デコーダで利用可能であると考えられる。領域３．３は符号化ユニット３．１の因果領域と呼ばれる。一旦符号化ユニット３．１が符号化されると、それは次の符号化ユニットの因果領域に属することになる。以降のすべての符号化ユニットと同様に次の符号化ユニットは、点状の領域として示される領域３．４に属し、現在の符号化ユニット３．１を符号化するために使用することはできない。留意すべきは、因果領域は復元ブロックによって構成されることである。ある符号化ユニットを符号化するために使用された情報は、その情報が復号に利用できないため、画像の元のブロックではない。復号において利用可能な唯一の情報は、因果領域内の画素のブロックの再構成バージョン、すなわちこれらブロックの復号バージョンである。このため、符号化において、因果領域の予め符号化されたブロックはこれらブロックの再構成バージョンを提供するために復号される。
【００８３】
ブロック３．１を符号化するとき因果領域のブロック３．２からの情報を使用することが可能である。ＨＥＶＣレンジ拡張ドラフト仕様書で、ビットストリームで伝送され得る変位ベクトル３．５はこのブロック３．２を示すことができる。
【００８４】
図５は、符号化ツリーブロックの符号化ユニットへの分割およびこれらの符号化ユニットを順次処理する例示走査順を示す。ＨＥＶＣ規格では、ブロック構造は符号化ツリーブロック（ＣＴＢ）によって編成される。１フレームは、重複しない正方形の符号化ツリーブロックをいくつか包む。符号化ツリーブロックのサイズは６４×６４から１６×１６と等しくすることができる。このサイズはシーケンスレベルで判定される。符号化効率の点で、最も効率的なサイズは最大のサイズ、すなわち６４×６４である。なお、すべての符号化ツリーブロックは画像境界を除き同じサイズを有する。境界ＣＴＢのサイズは、残っている画素の量に応じて適応される。
【００８５】
各々の符号化ツリーブロックは１つまたは複数の正方形の符号化ユニット（ＣＵ）を含む。符号化ツリーブロックは、４分木構造に基づいていくつかの符号化ユニットに分割される。符号化ツリーブロックでの各々の符号化ユニットの処理（符号化または復号）順は、ラスタ走査順に基づく４分木構造に従う。図５は、符号化ユニットの処理順の１例を示す。この図で各々の符号化ユニット内の数字は、この符号化ツリーブロックの対応する各符号化ユニットの処理順を示す。
【００８６】
ＨＥＶＣでは、いくつかの方法を使用して、さまざまなシンタックス要素、例えばブロック残差、予測ブロックの情報（動きベクトル、ＩＮＴＲＡ予測方向など）を符号化する。ＨＥＶＣは、コンテクスト適応型二値算術符号化（ＣＡＢＡＣ）、ゴロム−ライス符号、または固定長符号化と呼ばれる単純な二進表現のような、いくつかのタイプのエントロピー符号化を使用する。ほとんどの場合、さまざまなシンタックス要素を表すため二進符号化プロセスが行われる。この二進符号化プロセスも非常に明確であってさまざまなシンタックス要素に依存する。
【００８７】
例えば、「ｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｒｅｍａｉｎｉｎｇ」というシンタックス要素は、係数残差の絶対値またはその一部を含む。この二進符号化プロセスの考えは、ゴロム−ライス符号は第１の値に対して使用し、指数ゴロムはより高い値に対して使用することである。より具体的には、ゴロムオーダーと呼ばれるあるパラメータに応じて、つまり例えば０から３までの値を表す第１の値を表すためにゴロム−ライス符号が使用され、例えば４以上のより高い値を表わすために指数ゴロム符号が使用される。ゴロムオーダーはゴロム−ライス符号と指数ゴロム符号の両方で使用されるパラメータである。
【００８８】
図６は、復号側における原理を示す。復号プロセスの入力データは、ビットストリーム６０１およびライス・ゴロム・パラメータ、またはゴロムオーダーとして知られるＯｒｄｅｒである。このプロセスの出力は復号されたシンボル６１２である。
【００８９】
プレフィックス値はステップ６０２で１に等しく設定され、次にステップ６０１におけるビットストリームから１ビットが抽出され、可変フラグが復号された値と等しく設定６０３される。ステップ６０４でこのフラグが０と等しい場合、Ｐｒｅｆｉｘ値はインクリメント６０５され、ビットストリームから別のビットが抽出６０３される。フラグ値が１と等しいとき、判定モジュール６０６はＰｒｅｆｉｘの値が厳密に３より小さいか確認する。それが真である場合、Ｎ＝Ｏｒｄｅｒビットがビットストリーム６０１から抽出６０８され、変数「ｃｏｄｅｗｏｒｄ」に設定される。これはゴロム−ライス表現に対応する。シンボル値６１２はステップ６０９に示すように（（ｐｒｅｆｉｘ＜＜Ｏｒｄｅｒ）＋ｃｏｄｅｗｏｒｄ）と等しく設定される。式中「＜＜」は左シフト演算子である。
【００９０】
ステップ６０６でＰｒｅｆｉｘが３以上である場合、次のステップ６１０であり、Ｎ＝（ｐｒｅｆｉｘ−３＋Ｏｒｄｅｒ）ビットがビットストリームから抽出され、変数「ｃｏｄｅｗｏｒｄ」に設定６１０される。シンボル値６１１は（（１＜＜（ｐｒｅｆｉｘ−３））＋２）＜＜Ｏｒｄｅｒ）＋ｃｏｄｅｗｏｒｄと等しく設定される。これは指数ゴロム表現に対応する。
【００９１】
以下で、この復号プロセス、および対称的に対応する符号化プロセスは、ゴロムオーダーに対応する入力パラメータを有するＧｏｌｏｍｂ＿Ｈと呼ばれる。簡単にＧｏｌｏｍｂ＿Ｈ（Ｏｒｄｅｒ）と記すことができる。
【００９２】
ＨＥＶＣでは、残差などのいくつかののシンタックス要素に関しては、符号化される信号をエントロピー符号化するためにゴロムオーダーが更新される。更新式は、係数が大きい値を有するときゴロムオーダーを増加させることによってゴロム符号サイズを減少させようとする。ＨＥＶＣ規格で、更新は次の式によって行われる。
【００９３】
Ｏｒｄｅｒ＝Ｍｉｎ（ｃＬａｓｔＲｉｃｅＯｒｄｅｒ＋（ｃＬａｓｔＡｂｓＬｅｖｅｌ＞（３＊（１＜＜ｃＬａｓｔＲｉｃｅＯｒｄｅｒ））？１：０），４）
式中ｃＬａｓｔＲｉｃｅＯｒｄｅｒは最後に使用されたＯｒｄｅｒであり、ｃＬａｓｔＡｂｓＬｅｖｅｌは最後に復号されたｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｒｅｍａｉｎｉｎｇである。なお、符号化または復号される最初のパラメータに関しては、ｃＬａｓｔＲｉｃｅＯｒｄｅｒおよびｃＬａｓｔＡｂｓＬｅｖｅｌは０と等しく設定される。さらに、この式でパラメータＯｒｄｅｒは４の値を超えることはできない。そして式中、式（Ｃ？Ａ：Ｂ）は、条件Ｃが真である場合には値Ａを有し、条件Ｃが偽である場合には値Ｂを有する。
【００９４】
一般にＨＥＶＣ  ＲＥｘｔとも呼ばれるＨＥＶＣレンジ拡張が、新しいビデオ符号化規格ＨＥＶＣについて現在草案されている拡張である。
【００９５】
この拡張の目的は、追加のカラーフォーマットおよびビット深度で、できる限り可逆的に、ビデオシーケンスを符号化する追加のツールを提供することである。具体的には、この拡張は、４：２．０ビデオフォーマットに加えて、４：４：４ビデオフォーマットと同様４：２：２カラーフォーマットをサポートするように設計される（図４を参照）。カラー画像は一般に３つの色成分Ｒ、ＧおよびＢでできている。これらの成分は一般に相関関係があり、画像およびビデオ圧縮において画像を処理する前に色成分の相関関係を失わせることはごく一般的である。色成分の相関を失わせる最も一般的なフォーマットはＹＵＶカラーフォーマットである。ＹＵＶ信号は通常、３つの入力Ｒ、ＧおよびＢ入力フレームを線形変換することによって、画像のＲＧＢ表現から生成される。Ｙは通常、輝度成分と呼ばれ、ＵおよびＶは一般にクロマ成分と呼ばれる。用語「ＹＣｂＣｒ」も、用語「ＹＵＶ」の代わりに一般的に使用される。
【００９６】
画素の各々の色成分を符号化するために使用されるビットの数であるビット深度に関して、現在のＨＥＶＣ規格が８および１０ビットのビット深度（すなわち２５６から１０２４の可能な色）を有する４：２：０カラーフォーマットに対応が可能である場合、ＨＥＶＣ  ＲＥｘｔは、８ビットから１６ビットに及ぶ拡張されたビット深度（すなわち最大６５５３６の可能な色）を有する４：２：２および４：４：４ビデオフォーマットをさらにサポートするよう設計されようとしている。これは、より動的な色成分を有するために特に有用である。
【００９７】
ＨＥＶＣ  ＲＥｘｔも入力シーケンスの可逆符号化を提供するように設計される。すなわち、入力１０１と厳密に同一である復号された出力２０９を得るということである。これを達成するために、非可逆コーデックである従来のＨＥＶＣと比較して、多くのツールが修正または追加されている。可逆的に動作するための修正または追加の例の一部を以下にあげる。
【００９８】
−量子化ステップ１０８（デコーダでは２０３）の除去、
−通常のコサイン／サイン変換１０７としてバイパス変換の強制始動が誤差をもたらす場合がある（デコーダでは２０４）、
−ポストフィルタリング１１５（デコーダでは２０７）などの、量子化ノイズ補償において特に調整されたツールの除去。
【００９９】
ＨＥＶＣ  ＲＥｘｔに対して、より高いビット深度に対応し、可逆符号化を含む拡張フォーマットのビデオ圧縮（４：２：２および４：４：４）を処理するアプリケーションによって必要とされる非常に高い品質を考慮して、ゴロムオーダーの更新式はさらに修正されている。ＨＥＶＣ  ＲＥｘｔに対して、更新式は次のように修正されている。
【０１００】
Ｏｒｄｅｒ＝Ｍｉｎ（ｃＬａｓｔＲｉｃｅＯｒｄｅｒ＋（ｃＬａｓｔＡｂｓＬｅｖｅｌ＞＞（２＋ｃＬａｓｔＲｉｃｅＯｒｄｅｒ）），７）
この式で、Ｏｒｄｅｒの最大値は７である。さらに、Ｔｒａｎｓｆｏｒｍブロックのサブブロックに対するｃｏｅｆｆ＿ａｂｓ＿ｌｅｖｅｌ＿ｒｅｍａｉｎｉｎｇの第１の符号化のために、ゴロムオーダーは、
Ｏｒｄｅｒ＝Ｍａｘ（０，ｃＲｉｃｅＯｒｄｅｒ−（ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ｜｜ｃｕ＿ｔｒａｎｓｑｕａｎｔ＿ｂｙｐａｓｓ＿ｆｌａｇ？１：２））
と等しく設定され、
式中、
・変数「ｔｒａｎｓｆｏｒｍ＿ｓｋｉｐ＿ｆｌａｇ」は、現在の符号化ユニットに対して変換（例えばＤＣＴ１０７または２０４）がスキップされる場合は１に、変換が使用される場合は０に設定され、
・変数「ｃｕ＿ｔｒａｎｓｑｕａｎｔ＿ｂｙｐａｓｓ＿ｆｌａｇ」は、符号化ユニットが可逆符号化される場合は１に、そうでない場合は０に設定され、
・変数「ｃＲｉｃｅＯｒｄｅｒ」は、変換ブロックの別のサブブロックからの最後に使用されたＯｒｄｅｒと等しく設定され、そうでない場合は０に設定される。
【０１０１】
ＨＥＶＣ  ＲＥｘｔ用の追加のツールが、ナチュラルシーケンスに加えて「スクリーンコンテンツ（ｓｃｒｅｅｎ  ｃｏｎｔｅｎｔ）」ビデオシーケンスを効率的に符号化するために現在設計されている。「スクリーンコンテンツ」ビデオシーケンスは、例えばテキスト、ＰｏｗｅｒＰｏｉｎｔプレゼンテーション、グラフィカルユーザインタフェース、テーブルを含む任意の他のデバイスのパーソナルコンピュータからキャプチャしたもの（例えばスクリーンショット）に対応する非常に具体的な内容を有する特定のビデオシーケンスを意味する。これら特定のビデオシーケンスは、ナチュラルビデオシーケンスと比較して非常に異なった統計値を有する。ビデオ符号化において、ＨＥＶＣを含む従来のビデオ符号化ツールの性能は、このような「スクリーンコンテンツ」を処理する際に時として不十分なものとなる。
【０１０２】
「スクリーンコンテンツ」ビデオシーケンスを処理するためにＨＥＶＣ  ＲＥｘｔで現在議論されている現在のツールは、イントラブロックコピーモード（Ｉｎｔｒａ  Ｂｌｏｃｋ  Ｃｏｐｙ  ｍｏｄｅ）およびパレットモードがある。これらのモードに対するプロトタイプは、ナチュラルビデオシーケンスを対象とする従来の方法と比較して良好な符号化効率を示している。本明細書ではパレット符号化モードに焦点をあてる。
【０１０３】
ＨＥＶＣ  ＲＥｘｔのパレットモードは予測モードである。つまり、動き予測によって（インターの場合）またはイントラ予測によって行われる予測と同様に、ある符号化ユニットの符号化のための予測子を構築するためにパレット方法が使用される。予測の生成の後に、残りの符号化ユニットが変換され、量子化され、符号化される。換言すれば、図１および２を参照して上述したものと同じプロセスが適用される。
【０１０４】
パレットは一般に、有限セットのＮ組の色を含む表テーブルによって表され、各々の色はある色空間でその成分によって定義される（例えば、ＹＵＶ色空間に基づく図８の８０３を参照）。例えば、標準的なＲＧＢフォーマットで、パレットはＮ組のＰ要素のリスト（ＲＧＢに対してＮ＝３）から成る。より正確には、各々の要素はＲＧＢフォーマットの色成分の固定トリプレットに対応する。もちろん、これはＲＧＢまたはＹＵＶカラーフォーマットに限定されない。任意の他のカラーフォーマットもパレットによって表すことができ、より少ないまたはより多い数の色成分を使用することができる。つまり、Ｎが３と異なっていてもよい。
【０１０５】
エンコーダ側において、ＲＥｘｔで検討中のパレットモードは、ある入力符号化ユニットの画素値を関連付けされたパレットにおけるエントリを特定するレベルと呼ばれるインデックスに変換するものである。変換の後、結果として得られた符号化ユニットまたはブロックはレベルから成り、次に一般に符号化ユニットを表すために使用される色の有限数のトリプレットを有するテーブルである関連付けされたパレットとともにデコーダに伝送される。パレットは有限数の色を定義するので、インデックスのブロックへの変換は通常元の入力符号化ユニットに近似する。
【０１０６】
エンコーダ側においてパレットモードを適用するために、画素の符号化ユニットを変換する例示方法は以下である。
【０１０７】
−例えば全体的な歪みを最小化することによって、符号化する画素の符号化ユニットを最もよく表わすＰ個のトリプレットを特定し、
−次にＰ個のトリプレット中の最も近い色を符号化ユニットの各々の画素と関連付ける。すなわち、その結果符号化する値（またはレベル）は、関連付けられた最も近い色のエントリに対応するインデックスである。
【０１０８】
各々の符号化ユニットに対して、パレット（すなわち特定されたＰ個のトリプレット）、インデックスまたはレベルのブロックおよび元の符号化ユニットと（ブロック予測子である）色空間のインデックスのブロックとの差分を表す残差は、ビットストリーム１１０において符号化され、デコーダに送られる。
【０１０９】
デコーダにおいて、パレットモードは、逆方向に変換を実行するものである。つまり、符号化ユニットの各画素に対応する色を再構成するために、符号化ユニットの各々の画素と関連付けられた各々の復号インデックスが、ビットストリームから復号されたパレットでの対応する色によって置換される。これは色空間でのインデックスのブロックの（すなわち符号化ユニット予測子の）再構成である。パレットモードは予測モードであるから、関連残差はビットストリームから復号され、そして最終的に再構成された符号化ユニットを構築するために復元符号化ユニット予測子に追加される。
【０１１０】
図７はデコーダにおけるパレットモードの原理をさらに示す。ステップ７０２で、現在の符号化ユニットに対する予測モードがビットストリーム７０１から抽出される。現時点で、パレットモードはビットストリーム内のスキップフラグの前に位置するフラグによって特定される（他の符号化モードは図１および図２を参照して上述されている）。このフラグは単一のコンテクストを使用して符号化されたＣＡＢＡＣである。このモードがパレットモード７０３である場合、パレットモードの関連したシンタックス７０５、すなわちパレットに関する情報、レベルのブロックおよび残差がビットストリーム７０１から抽出７０４され復号される。
【０１１１】
次に、ステップ７０６の期間で、２つの要素、すなわちパレット７０７およびレベルのブロック７０８、が復号データから構築される。このレベルのブロックおよび関連付けられたパレットから、画素領域での符号化ユニット予測子７１０が構築７０９される。つまり、レベルのブロックの各々のレベルに対して、色（ＲＧＢまたはＹＵＶ）が各々の画素に関連付けられる。
【０１１２】
次に符号化ユニット残差はビットストリーム７０１から復号７１１される。パレットモードの現在の実施では、パレットモードと関連付けられた残差は一般的なＨＥＶＣインター残差符号化方法を使用して、すなわちゴロム符号化を使用して符号化される。符号化ユニットの残差を取得するために、従来の逆量子化および逆変換が行われる。再構成された符号化ユニット７１４を形成するために、ブロック予測子７１０がこの符号化ユニット残差７１２に追加７１３される。
【０１１３】
図８はエンコーダにおけるパレットモードの原理を示す。現在の符号化ユニット８０１は、３つの色値（Ｙ、Ｕ、Ｖ）または（Ｒ、Ｇ、Ｂ）の代わりに各々の画素に対するレベルを含む同じサイズのブロック８０２に変換される。このレベルのブロックと関連付けられたパレット８０３は、符号化ユニットの全体的な歪み最小化に基づいて構築され、各々のエントリにおいて、エントリインデックスまたはレベルを対応する画素色値と関連付ける。なお、モノクロのアプリケーションについては、画素値は１つの成分のみを包み得る。
【０１１４】
図７に関連して言及したように、（残差と同様に）パレットは符号化され各々の符号化ユニット毎にビットストリームに挿入される。同じように、（符号化ユニット予測子に対応する）レベルのブロックは符号化されビットストリームに挿入され、その符号化１例は図９を参照して以下に示す。本例では、レベルのブロックは、水平方向の順に走査される。
【０１１５】
レベルのブロック９１は、図８に参照番号８０２で例示したものと全く同じである。テーブル９２および９３は、レベルのブロック９１を符号化するために使用された連続したシンタックス要素を記載する。テーブル９３は、テーブル９２の続きとして読むべきである。テーブル内のシンタックス要素は、ブロック９１の太線で囲まれたレベルのグループの符号化に対応する。
【０１１６】
レベルのブロックは、走査順に連続した画素のグループ別に符号化される。各々のグループは、予測方向を示す第１のシンタックス要素、繰り返しを示す第２の要素、および画素の値、すなわちレベルを示す任意の第３の要素を使用して符号化される。繰り返しはグループ内の画素の数に対応する。
【０１１７】
これらの２つのテーブルは、パレットモードに関連付けられた現在のシンタックスを表わす。これらのシンタックス要素は、レベルのブロック９１に対してビットストリームにおいて関連付けられた符号化情報に対応する。これらのテーブルで、３つの主なシンタックス要素はパレットモードの動作を完全に表すために使用され、レベルのブロック９１のレベルを連続的に検討するとき以下のように使用される。
【０１１８】
「Ｐｒｅｄ  ｍｏｄｅ」と呼ばれる第１のシンタックス要素により、２つの符号化モードを区別することができる。「Ｐｒｅｄ  ｍｏｄｅ」フラグが「０」の場合に対応する第１のモードでは、新しいレベルが現在の画素に対して使用される。レベルはビットストリームにおけるこのフラグの後すぐに信号伝達される。「Ｐｒｅｄ  ｍｏｄｅ」フラグが「１」の場合に対応する第２のモードでは、「コピーアップ」モードが使用される。より具体的には、ラスタ走査順に対して同じ位置で始まるすぐ上のラインに位置する画素レベルに現在の画素レベルが対応することを意味する。「Ｐｒｅｄ  ｍｏｄｅ」フラグが「１」の場合、レベルのブロック９１において真上の画素のレベルの値を参照してレベルの値が分かるので、フラグのすぐ後にレベルを信号伝達する必要がない。
【０１１９】
「Ｌｅｖｅｌ」と呼ばれる第２のシンタックス要素は、「Ｐｒｅｄ  ｍｏｄｅ」の第１のモードにおいてのみ現在の画素に対するパレットのレベル値を示す。
【０１２０】
「Ｒｕｎ」と呼ばれる第３のシンタックス要素は、「Ｐｒｅｄ  ｍｏｄｅ」の両方のモードにおいて繰り返しの値を符号化するために使用される。レベルのブロック９１が左上端から右下端まで、左から右へそして上から下へ行毎に走査されることを考慮すると、Ｒｕｎシンタックス要素は同じ符号化を有するブロック９１における連続した画素の数を示す。
【０１２１】
この「Ｒｕｎ」シンタックス要素は、「ｐｒｅｄ  ｍｏｄｅ」フラグに応じた異なる意味を有する。Ｐｒｅｄ  ｍｏｄｅが０のとき、「Ｒｕｎ」要素は同じレベル値を有する予測ブロックの連続した画素の数である。例えば、Ｒｕｎ＝８の場合、これは、ラスタ走査順で９個の同一の連続したサンプルに対応する現在の画素および次の８画素に現在の「Ｌｅｖｅｌ」が適用されることを意味する。
【０１２２】
Ｐｒｅｄ  ｍｏｄｅが１のとき、「Ｒｕｎ」要素は、ブロック９１においてそれらの上の画素のレベル値に対応するレベル値を有する予測ブロックの連続した画素の数であり、すなわちここでは「コピーアップ」モードが適用される。例えば、Ｒｕｎ＝３１の場合、これは、現在の画素のレベルが、全部で３２画素に対応する上のラインの画素および次の３１画素からコピーされることを意味する。
【０１２３】
テーブル９２および９３に関して、パレットモードを使用してブロック９１を表すために８つのステップを示す。各々のステップは、「Ｐｒｅｄ  ｍｏｄｅ」フラグの符号化で始まり、「Ｐｒｅｄ  ｍｏｄｅ」フラグが「０」のとき「Ｌｅｖｅｌ」シンタックス要素が後に続き、あるいは「Ｐｒｅｄ  ｍｏｄｅ」フラグが「１」のとき「Ｒｕｎ」シンタックス要素が後に続く。「Ｌｅｖｅｌ」シンタックス要素の後には、常に「Ｒｕｎ」シンタックス要素が続く。
【０１２４】
現在のブロックに対して復号される予測モードがパレットモードであるとき、デコーダはまずこのブロックに関連したシンタックスを復号し、そして次に符号化ユニット用の再構成プロセスを適用する。
【０１２５】
図１０は、パレットモードに関連したシンタックス要素の復号プロセスを示す。まず、パレットのサイズがビットストリーム１００１から抽出され復号１００２される。パレットの正確なサイズ（Ｐａｌｅｔｔｅ＿ｓｉｚｅ）は、ステップ１００２において復号されたサイズ値に１を加算することによって取得される。実際に、サイズは、値０がビットの最小数（１ビット）である単項の符号を使用して符号化され、パレットのサイズが０と等しいことはあり得ない。さもなければブロック予測子を構築するために画素値は使用できない。
【０１２６】
次にパレット値復号に対応するプロセスが始まる。パレットのインデックスに対応する変数「ｉ」はステップ１００４において０と等しく設定され、次にステップ１００５において「ｉ」がパレットサイズ（Ｐａｌｅｔｔｅ＿ｓｉｚｅ）と等しいかどうか確認するためにテストが行われる。パレットサイズと異なる場合、１つのパレット要素がビットストリーム１００１から抽出されて復号１００６され、次に「ｉ」と等しい関連付けされたレベル／インデックスと共にパレットに加えられる。それから変数「ｉ」はステップ１００７を通してでインクリメントされる。「ｉ」がパレットサイズと等しい場合１００５、パレットは完全に復号されている。
【０１２７】
次にレベルのブロック９１の復号に対応するプロセスが行われる。まず、画素カウンタに対応する変数ｊが変数ｓｙｎｔａｘ＿ｉと同様０に設定１００８される。次に、画素カウンタがブロックに含まれた画素の数に対応するかどうか確認が行われる。ステップ１００９において答えがイエスである場合ステップ１０１７においてプロセスは終了し、そうでない場合は１つの予測モードに対応するフラグ「Ｐｒｅｄ  ｍｏｄｅ」の値がビットストリーム１００１から抽出され復号１０１０される。
【０１２８】
「Ｐｒｅｄ  ｍｏｄｅ」の値は、復号されたすべての「Ｐｒｅｄ  ｍｏｄｅ」値を含むインデックスｓｙｎｔａｘ＿ｉでテーブルに加えられる。ステップ１０１１でこの「Ｐｒｅｄ  ｍｏｄｅ」の値が０と等しい場合、「Ｌｅｖｅｌ」に対応するシンタックス要素がビットストリーム１００１から抽出され復号１０１２される。この変数「Ｌｅｖｅｌ」は、復号されたすべてのレベルを含むインデックスｓｙｎｔａｘ＿ｉでテーブルに加えられる。画素カウンタに対応する変数ｊが１だけインクリメント１０１３する１０１３。
【０１２９】
次に「Ｒｕｎ」シンタックス要素がステップ１０１４で復号される。ステップ１０１１でシンタックス要素「Ｐｒｅｄ  Ｍｏｄｅ」が１と等しい場合、「Ｒｕｎ」値がステップ１０１４で同様に復号される。このシンタックス要素「Ｒｕｎ」は、復号されたすべてのランを含むインデックスｓｙｎｔａｘ＿ｉでテーブルに加えられる。
【０１３０】
次にステップ１０１５において、値ｊはステップ１０１４において復号されたランの値ずつインクリメントされる。変数ｓｙｎｔａｘ＿ｉは、シンタックス要素の次のセットを検討するために１ずつインクリメントされる。カウンタｊがブロック内の画素の数と等しい場合、レベルのブロック９１を構築するためのシンタックスは終了１０１７する。パレットに関連したこのプロセスの終わりに、デコーダは、パレット、ならびにこの符号化ユニットのパレットモードと関連付けられたすべての「Ｐｒｅｄ  ｍｏｄｅ」、「Ｌｅｖｅｌ」および「Ｒｕｎ」シンタックス要素のリストを含むテーブルを識別する。デコーダはそれから、図７を通して説明されるように、符号化ユニットの再構成プロセスを進めることができる。
【０１３１】
上記の例における３つの値で構成される各々のパレット要素は、一般に３つの二進符号を使用して符号化される。二進符号の長さは各々の色成分のビット深度に対応する。パレットサイズは、通常は単項の符号を使用して符号化される。「Ｐｒｅｄ  ｍｏｄｅ」要素は１ビットを使用して符号化される。「Ｌｅｖｅｌ」要素はｂと等しい二進符号長を有する二進符号を使用して符号化され、ここで２ｂはパレットサイズ以上の最小の整数である。そして「Ｒｕｎ」要素は、図６に関連して上で解説したように、Ｇｏｌｏｍｂ＿Ｈ（Ｏｒｄｅｒ＝３）を使用して符号化される。
【０１３２】
図１１は、レベルのブロック９１、そして次に、予測子として使用されるべき色空間のブロック予測子を再構成プロセスを示す。このプロセスの入力データは上述図１０のプロセスで取得されたテーブルであり、「Ｐｒｅｄ  ｍｏｄｅ」、「Ｌｅｖｅｌ」および「Ｒｕｎ」のリストを含む。追加の入力データは、ビットストリームで信号伝達された４分木（図５）から得られた（レベルのブロック８０２／９１のサイズと同じである）符号化ユニット８０１のサイズである。
【０１３３】
最初のステップ１１０１で、画素カウンタを表す変数「ｉ」が０と等しく設定され、シンタックス要素の各々のセットを連続的に検討するために、変数「ｊ」も同様に０と等しく設定される。ステップ１１０４において、「Ｐｒｅｄ  ｍｏｄｅ」のテーブルからインデックスｊで抽出された要素Ｐｒｅｄ＿ｍｏｄｅ［ｊ］は０と照合される。
【０１３４】
０と等しい場合、現在の画素「ｉ」に対して新しいレベルが符号化される。その結果、位置「ｉ」における画素の値はレベルのテーブルからのインデックス「ｊ」におけるレベルと等しく設定、Ｂｌｏｃｋ［ｉ］＝Ｌｅｖｅｌ［ｊ］と設定される。これがステップ１１０５である。変数「ｉ」は、次の画素を検討するためにステップ１１０６において１ずつインクリメントされ、現在のＲｕｎですでに処理された画素を数えるための専用の変数「ｋ」は、ステップ１１０７で０と等しく設定される。
【０１３５】
ｋがインデックスｊでのランのテーブルの「Ｒｕｎ」要素と等しいかどうか、ｋ＝Ｒｕｎ［ｊ］？かどうかを、判定するために、ステップ１１０８において確認を行う。等しくない場合、位置ｉでの画素のレベルは位置ｉ−１における画素のレベル値と等しく設定、すなわちＢｌｏｃｋ［ｉ］＝Ｂｌｏｃｋ［ｉ−１］と設定される。これがステップ１１０９である。変数ｉおよび変数ｋはそれから、それぞれステップ１１１０および１１１１において１ずつインクリメントされる。ステップ１１０８においてｋ＝Ｒｕｎ［ｊ］の場合、左レベル値の伝播は終了し、ステップ１１２０（後述する）が行われる。
【０１３６】
ステップ１１０４でＰｒｅｄ＿ｍｏｄｅ［ｊ］が０と異なる場合、ステップ１１１２において０と等しく設定された変数「ｋ」で「コピーアップ」モードが始まる。次に、ステップ１１１３で、（ｋ−１）がインデックス「ｊ」でのランのテーブルの「Ｒｕｎ」要素と等しいかどうか、ｋ＝Ｒｕｎ［ｊ］＋１？かどうか、を確認する。等しくない場合、位置ｉでの画素のレベル値は、上のラインの位置ｉにおける画素のレベル値と等しく設定、すなわちＢｌｏｃｋ［ｉ］＝Ｂｌｏｃｋ［ｉ−ｗｉｄｔｈ］と設定され、式中「ｗｉｄｔｈ」は、符号化ユニットの入力サイズから導き出される（符号化ユニットと同じ）レベルのブロックの幅である。これがステップ１１１４である。次に、変数「ｉ」および変数「ｋ」は、それぞれステップ１１１５および１１１６において１ずつインクリメントされる。ステップ１１１３においてｋ＝Ｒｕｎ［ｊ］＋１である場合、予測モード「コピーアップ」は完了し、プロセスはステップ１１２０に進む。
【０１３７】
ステップ１１２０において、変数ｉがブロック９１／ＣＵ８０１内の画素の量と等しいかを判定するために確認が行われる。等しくない場合、シンタックス要素の次のセットを検討するためにステップ１１２１において変数ｊが１ずつインクリメントされ、プロセスは上述のステップ１１０４に一巡して戻る。
【０１３８】
ステップ１１２０においてすべての画素が処理されていた場合、レベルの最終ブロック９１はステップ１１２２において取得される。これは、テーブルＢｌｏｃｋ［］に対応する。それから最終ステップ１１２３は、図１０のプロセスを使用して復号されたパレット８０３を使用して色値の各々のレベルを変換するものである。この最終ステップは、各々のブロック位置で、ブロックにおけるその位置のレベルおよびパレットにおける対応するエントリに応じて、画素値（Ｙ、Ｕ、Ｖ）または（Ｒ、Ｇ、Ｂ）に影響を与える。
【０１３９】
ＨＥＶＣ  ＲＥｘｔに導入されるようなパレットモードの他の態様は、現在の符号化ユニットを符号化するために使用されるパレットのエンコーダによる判定（下の図１２を参照）、およびエンコーダにおけるＰｒｅｄ  ｍｏｄｅ、ＬｅｖｅｌおよびＲｕｎシンタックス要素の選択（下の図１３を参照）に関係する。
【０１４０】
図１２は、エンコーダでのパレット判定アルゴリズムを示す。このプロセスの入力データは、画素の元の符号化ユニットおよびその符号化ユニットサイズである。本例では、ＹＵＶパレットが構築されるが、他の実施では同じように構築されたＲＧＢパレットとなる場合もある。
【０１４１】
第１のステップ１２０１において、画素カウンタを表す変数ｊは０に設定され、パレットが構築されているときのパレットの成長に従う変数「Ｐａｌｅｔｔｅ＿ｓｉｚｅ」は同様に０に設定され、閾値を表す変数「ＴＨ」は９に設定される。次にステップ１２０３において画素ｐｉ、すなわち走査順に応じたインデックスｉを有する画素ｐｉ、は元の符号化ユニット１２０４から読み出される。それから変数ｊは１２０５において０と等しく設定され、ステップ１２０６において、パレットサイズが変数「ｊ」と等しい（構築中のパレットのすべてのパレット要素が検討されたことを意味する）かどうか判定するために確認が行われる。
【０１４２】
パレットサイズがｊと等しい場合、ステップ１２０９において、インデックス「ｊ」におけるパレットは画素値ｐｉと等しく設定される。これは現在の画素ｐｉが、それと関連付けられたインデックスｊで、パレット中の新しい要素となることを意味する。より具体的には、次の割り当てが行われる：
ＰＡＬＹ［ｊ］＝（Ｙｉ）
ＰＡＬＵ［ｊ］＝（Ｕｉ）
ＰＡＬＶ［ｊ］＝（Ｖｉ）
式中、ＰＡＬＹ，Ｕ，Ｖは色値を記憶するための３つのテーブルである。
【０１４３】
パレットサイズ（Ｐａｌｅｔｔｅ＿ｓｉｚｅ）はステップ１２１０において１だけインクリメントされ、出現テーブルＣｏｕｎｔｅｒはステップ１２１１においてインデックス「Ｐａｌｅｔｔｅ  ｓｉｚｅ」に対して１と等しく設定される。それから変数ｉは、現在の符号化ユニットの次の画素「ｉ」を検討するためにステップ１２１３において１だけインクリメントされる。それから現在の符号化ユニットのすべての画素が処理されたかどうか判定するためにステップ１２１４において確認が行われる。それらがすべて処理された場合、後に解説される順序付けステップ１２１５によってプロセスは完了し、そうでない場合は上述のステップ１２０３において次の画素が検討される。
【０１４４】
ステップ１２０６に戻って、ｊがｐａｌｅｔｔｅ＿ｓｉｚｅと異なる場合、ｐｉとインデックスｊにおけるパレット要素間の各々の色成分に対する絶対値を計算するステップ１２０７が行われる。式は図に示す。すべての絶対値差分が所定の閾値ＴＨより厳密に小さい場合、パレットでの要素「ｊ」に関する出現カウンタはステップ１２１２において１だけインクリメントされる。ステップ１２０７は、マージンＴＨを前提として、要素の色に隣接する色を包含するクラスなど、構築中のパレットの各々の要素に関するクラスを生成する。したがってステップ１２１２は各々のクラスの出現を数える。ステップ１２１２の後には、すでに説明したステップ１２１３が続く。
【０１４５】
ステップ１２０７の条件が満たされない場合、パレット内の次のパレット要素を検討するために変数ｊはステップ１２０８において１だけインクリメントされる。これは、ステップ１２０７の新しい出現を通して他のパレット色要素を現在の画素と比較することである。パレット内の要素がステップ１２０７の基準を満たさない場合、ステップ１２０９、１２１０および１２１１を参照して上述したように新しい要素がパレットに追加される。
【０１４６】
なお、判定モジュール１２０７は、４：４：４（ＹＵＶまたはＲＧＢ）シーケンスに対して各々の色要素を比較することができ、４：２：０シーケンスに対して輝度色成分のみを比較することができる。
【０１４７】
図１２のプロセスの終わりに、テーブル「Ｃｏｕｎｔｅｒ」は各パレット要素によって定義されたクラスの出現回数を含む。それからパレット要素は、最も頻出する要素がパレットの最初の位置（最も低いインデックスまたは「レベル」を有するエントリ）にあるように、それらの出現に従ってステップ１２１５において順序付けされる。
【０１４８】
なお、パレットのサイズは最大サイズ、例えば２４エントリに限定され得る。このような場合には、ステップ１２１５から結果として生じるパレットのサイズが２４を超える場合、順序付けられたパレットの２５番目の位置からの要素（エントリ）を削除することによってパレットは削減される。結果としてパレットが構築されることとなる。
【０１４９】
一方、エンコーダにおけるＰｒｅｄ  ｍｏｄｅ、ＬｅｖｅｌおよびＲｕｎシンタックス要素の選択では、画素の元の符号化ユニット、図１２のプロセスを通して構築されたパレットおよび符号化ユニットサイズが図１３のプロセスの入力データである。具体的には、ＩＮＴＲＡ符号化、ＩＮＴＥＲ符号化およびパレット符号化のうちどの符号化モードを使用しなければならないか判定するときにこの評価が実行される。
【０１５０】
第１のステップ１３０１において、画素カウンタを表す変数「ｉ」は０に設定される。以下に説明するプロセスは、ｉから始まる画素に対してシンタックス要素を判定しようとするものである。予測の２つのモードは別々に評価される。すなわち、図の右側部分について「Ｐｒｅｄ  ｍｏｄｅ」＝０、および図の左側部分について「Ｐｒｅｄ  ｍｏｄｅ」＝１である。
【０１５１】
「コピーアップ」予測（「Ｐｒｅｄ  ｍｏｄｅ」＝１に対応する）に対して、現在のＲｕｎのレベルの数を数えるために使用される変数「ｉｃｏｐｙ」がステップ１３０３において０と等しく設定される。その後ステップ１３０４において、画素位置ｉにおける現在レベル、すなわちＢｌｏｃｋ［ｉ＋ｉｃｏｐｙ］は、上のラインで真上に位置する画素のレベル、すなわちＢｌｏｃｋ［ｉ＋ｉｃｏｐｙ−ｗｉｄｔｈ］と比較され、式中「ｗｉｄｔｈ」は現在の符号化ユニットの幅に対応する。なお、符号化ユニットの各々の画素のレベルＢｌｏｃｋ［ｉ＋ｉｃｏｐｙ］はステップ１３０８において並列に判定される。このステップは、すでに上で解説したように、最も近いパレット要素（実際はそのインデックスまたはレベル）を位置ｉにおける画素と関連付けるものである。このステップは、位置ｉ、パレット１３０６および元の符号化ユニット１３０７を使用する。
【０１５２】
ステップ１３０４において、Ｂｌｏｃｋ［ｉ＋ｉｃｏｐｙ］＝Ｂｌｏｃｋ［ｉ＋ｉｃｏｐｙ−ｗｉｄｔｈ］である場合、画素のブロックの次の画素値を検討し、位置ｉ＋ｉｃｏｐｙにおける現在の画素レベルが現在の「コピーアップ」Ｒｕｎに含まれ得ることを示すために、ステップ１３０５において変数「ｉｃｏｐｙ」が１だけ増分インクリメントされる。ステップ１３０４において、Ｂｌｏｃｋ［ｉ＋ｉｃｏｐｙ］がＢｌｏｃｋ［ｉ＋ｉｃｏｐｙ−ｗｉｄｔｈ］と異なる場合、「コピーアップ」Ｒｕｎの現在の評価は終了したことを意味し、変数「ｉｃｏｐｙ」は判定モジュール１３１４に伝送される。プロセスのこの段階において、変数「ｉｃｏｐｙ」は、直上のラインからコピーされた値の数に対応する。
【０１５３】
左値予測（「Ｐｒｅｄ  ｍｏｄｅ」＝０に対応）のために、Ｒｕｎ値（ｉｌｅｆｔ）を判定するループは、並列にまたは順次処理される。まず、現在の画素のインデックスｉを記憶するために使用された変数「ｉＳｔａｒｔ」が「ｉ」に設定され、インデックス「ｉ」に続く画素レベルを連続的に検討するために使用された変数「ｊ」が同様に「ｉ」と等しく設定され、構築中の現在のＲｕｎを数えるために使用された変数「ｉｌｅｆｔ」が０と等しく設定される。これがステップ１３０９である。次に、ステップ１３１０は、ｊ！＝０かつ「Ｐｒｅｄ＿ｍｏｄｅ［ｊ−１］」＝０かつＢｌｏｃｋ［ｊ］＝Ｂｌｏｃｋ［ｊ−１］であるかを判定するものである。Ｐｒｅｄ＿ｍｏｄｅ［］は、予測モード（それぞれ「コピーアップ」予測および左値予測に対して１または０）を記憶するためにエンコーダによって使用されたテーブルである。それは、連続した画素が処理されるにつれて以下に説明するステップ１３１７において順次埋められ、例えばステップ１３０１においてゼロ値で初期化、すなわち任意のｋに対してＰｒｅｄ＿ｍｏｄｅ［ｋ］＝０、で初期化されたものである。
【０１５４】
ステップ１３１０における条件が満たされる場合、変数「ｉｌｅｆｔ」は、位置ｊにおける現在の画素レベルが現在の「左値」Ｒｕｎに含まれ得ることを示すためにステップ１３１１において１だけインクリメントされ、変数ｊは、画素のブロックの次の画素値を検討するためにステップ１３１２において１だけインクリメントされる。
【０１５５】
ステップ１３１０における条件が満たされない場合、変数「ｊ」は、それが現在の「左値」Ｒｕｎに対して調べられるべき最初画素値であるかどうかを判定するために「ｉＳｔａｒｔ」と比較される。これがステップ１３１３である。「ｊ」が「ｉＳｔａｒｔ」以下である場合、それが現在のＲｕｎに対して調べられるべき最初の画素値であることを意味し、次に現在のＲｕｎを開始し、上述のステップ１３１２において次の画素値が検討される。「ｊ」が「ｉＳｔａｒｔ」より厳密に高い場合、現在の「左値」Ｒｕｎの画素値と異なる第１の画素値が検出されたことを意味する。現在の「左値」Ｒｕｎの長さに対応する変数「ｉｌｅｆｔ」は判定モジュール１３１４に伝送される。なお、「コピーアップ」予測のためのループとして、インデックスｉにおけるレベルＢｌｏｃｋ［ｉ］はステップ１３０８において同じループで判定される。
【０１５６】
「左値予測」および「コピーアップ」モードに対する最大ランを計算した後に、変数「ｉｌｅｆｔ」および「ｉｃｏｐｙ」はステップ１３１４において比較される。これは、「ｉｃｏｐｙ」！＝０かつ「ｉｃｏｐｙ」＋２が「ｉｌｅｆｔ」より高いかどうかを判定するためのものである。これは、コピーアップモードまたは左値予測モードのどちらかを選択するための例示的基準である。具体的には、パラメータ「２」を少し変更することができる。
【０１５７】
ステップ１３１４における条件は、「ｉｃｏｐｙ」が０と等しいまたはｉｌｅｆｔ−２以下である場合、「左値予測」モードがステップ１３１５において選択されることを意味する。その場合、同じステップ１３１５において、「ＰｒｅｄＭｏｄｅ」変数は０と等しく設定され、Ｒｕｎ変数は「ｉｌｅｆｔ」と等しく設定される。一方、「ｉｃｏｐｙ」が０と異なりかつ「ｉｌｅｆｔ−２」より厳密に高い場合、「コピーアップ」モードがステップ１３１６において選択される。その場合、ステップ１３１６において、「ＰｒｅｄＭｏｄｅ」変数は１と等しく、Ｒｕｎ変数は「ｉｃｏｐｙ−１」と等しく設定される。
【０１５８】
それから、ステップ１３１７において、エンコーダで「Ｐｒｅｄ＿ｍｏｄｅ」および「Ｒｕｎ」を含むテーブルは現在値「Ｐｒｅｄ＿ｍｏｄｅ」および「Ｒｕｎ」で更新される。それから、「ｒｕｎ」値＋１によってインクリメントされる現在の位置ｉに対応する、画素のブロックで検討するべき次の位置がステップ１３１８で計算される。それから、符号化ユニットの最後の画素が処理されたか否か判定するためにステップ１３１９において確認が行われる。これが当てはまる場合、プロセスはステップ１３２０において終了し、そうでない場合はシンタックス要素の新しいセットを取得するために次の画素位置に対して２つの予測モード「左予測」および「コピーアップ」の評価がステップ１３０３および１３０９を始点に評価される。
【０１５９】
このプロセスの終わりに、エンコーダは、符号化ユニットの各々のサンプルに対するレベルを認識しており、３つのテーブルＰｒｅｄ＿ｍｏｄｅ［］、Ｂｌｏｃｋ［］およびＲｕｎ［］の内容に基づいてレベルのブロックの対応するシンタックスを符号化することが可能である。
【０１６０】
一般的に言えば、ゴロムオーダーの小さい値は小さい範囲の値の符号化に最も適している一方で、より高いゴロムオーダーはより高い範囲の値を符号化するのに最も適している。すでに解説したように、Ｒｕｎシンタックス要素は、通常は、３の固定値を有するゴロムオーダーを使用して符号化される。本発明の１つの実施態様によれば、Ｒｕｎ値の符号化に使用されたゴロムオーダーは若干のパラメータに基づいて適合される。これらのパラメータは、とりわけ、レベルの値、パレットのサイズ、予測モード、符号化ユニットのサイズを含む。これは、Ｒｕｎ値の予想範囲が何らかの形でこれらのパラメータに関連している可能性があるという事実による。
【０１６１】
図１４は、Ｒｕｎシンタックス要素に対するゴロムオーダーの選択と他のパラメータとの依存性を示す。この図は、すでに説明した図１０に基づいている。図１０と比較して、図１４は、ランの復号に対するゴロムオーダーの判定に関連した１つの追加モジュール１４１８を含む。次の実施形態において説明されるように、このＯｒｄｅｒパラメータはパレットサイズ、Ｐｒｅｄ  ｍｏｄｅ、Ｌｅｖｅｌの値および符号化ユニットサイズ１４１９に依存してもよい。
【０１６２】
本発明の１つの実施形態において、Ｏｒｄｅｒは「Ｐｒｅｄ  ｍｏｄｅ」に従って更新される。それは、２つの予測モードを有する現在の実装に基づいて、２つのパラメータＯｒｄｅｒは、「Ｐｒｅｄ  ｍｏｄｅ」＝０に対応する「左予測」モードに対するＯｒｄｅｒ［０］および「Ｐｒｅｄ  ｍｏｄｅ」＝１に対応する「コピーアップ」予測モードに対するＯｒｄｅｒ［１］と考えられることを意味する。さらに、１つまたはいくつかの予測モードが考慮された前記２つに加えられてもよい。そのため、Ｎ個の異なるＯｒｄｅｒがＮ個の可能な予測モードに対応して検討され得る。
【０１６３】
特定の実施形態において、Ｎ＞２であるとき、ただ１つのＯｒｄｅｒを２つ以上の予測モードと関連付けることができる。換言すれば、いくつかの予測モードは同じＯｒｄｅｒ値にマップされ得る。各々に関連付けられたＲｕｎ値は一般に異なるので、予測モードに応じてＲｕｎ符号化を適合させることは効果的である。実際に、図９の実施例に例示されるように、「コピーアップ」モードに対するＲｕｎ値は一般に高く、「左予測」モードに対するＲｕｎ値より高い。これは同様に、レベルを伝送することが可能な唯一のモードである「左予測」モードの性質による。好ましい実施形態において、「コピーアップ」「Ｐｒｅｄ  ｍｏｄｅ」のＯｒｄｅｒは「左予測」モードのＯｒｄｅｒより上位である。
【０１６４】
本発明の１つの実施形態において、Ｏｒｄｅｒはレベルに応じて更新される。「左予測」モード（「Ｐｒｅｄ  ｍｏｄｅ」＝０）に対して、最後の復号されたシンタックス要素はレベルである。この予測モードに対して、レベルは、レベルに関連した特定のＯｒｄｅｒを設定するために使用される。そのため、検討され得るＯｒｄｅｒの数はパレットサイズと等しい。特定の実施形態において、パレットサイズが厳密に２より大きいとき、ただ１つのＯｒｄｅｒを２つ以上のレベル値と関連付けることができる。換言すれば、いくつかのレベルは同じＯｒｄｅｒ値にマップされ得る。
【０１６５】
「コピーアップ」予測モードについては、レベルは符号化されないが、コピーされた最初のレベルが関連したＯｒｄｅｒを設定するために使用されると考えることができる。さらなる実施形態において、「左予測」モードのために使用された左レベルは、Ｏｒｄｅｒを適合させるために検討され得る。レベルに応じたＯｒｄｅｒの適合は、パレットがレベルの出現に応じて順序付けられたとき特に効率的である。レベルが低いほど、その出現率は高い。そのため、より低いレベルに対する予想Ｒｕｎ値は、最も高いレベル値に対するものより高いはずである。好ましい実施形態において、より低いレベルに対して定義されたＯｒｄｅｒは最も高いレベルに対して定義されたＯｒｄｅｒより大きい。
【０１６６】
本発明の１つの実施形態において、Ｏｒｄｅｒはパレットサイズに基づいて判定される。上述したように、最大パレットサイズはデフォルトで設定される。そのため、検討され得るＯｒｄｅｒの数はパレットサイズと等しい。しかし、これは必須ではなく、好ましい実施形態においてより小さい範囲のＯｒｄｅｒ値が検討され得るという利点が有る。レベルの数が低いとき平均Ｒｕｎ値が増加するので、パレットサイズに応じてＯｒｄｅｒを適合させることは効果的である。同じように、レベルの数がより高い場合、平均Ｒｕｎ値は減少する。そのため、パレットサイズが低いときＯｒｄｅｒを増加させ、パレットサイズが高いときＯｒｄｅｒを減少させることは有用である。好ましい実施形態において、より低いパレットサイズ値のＯｒｄｅｒは最も高いパレットサイズ値のＯｒｄｅｒより上位である。特定の実施形態において、Ｏｒｄｅｒはパレットサイズに依存した式によって判定され得る。
【０１６７】
本発明の１つの実施形態において、Ｏｒｄｅｒは符号化ユニットサイズに基づいて判定される。そのため、現在の符号化ユニットサイズ、すなわち６４×６４、３２×３２、１６×１６、８×８を考慮する場合、検討され得るＯｒｄｅｒ値の数は４と等しい。しかし、これは必須ではなく、別の実施形態においてはより小さい数のＯｒｄｅｒ値が検討され得る。符号化ユニットサイズが低いとき予想Ｒｕｎ値はより低いはずであり、同じように、符号化ユニットサイズが高い場合予想Ｒｕｎ値はより大きいはずなので、符号化ユニットサイズに応じてＯｒｄｅｒを適合させることは効果的である。そのため、符号化ユニットサイズが低いときＯｒｄｅｒを減少させ、符号化ユニットサイズが高いときＯｒｄｅｒを増加させることは有用である。好ましい実施形態において、より低い符号化ユニットサイズに対して判定されるＯｒｄｅｒ値は、最も高い符号化ユニットサイズ値に対して判定されるＯｒｄｅｒ値より低い。特定の実施形態において、Ｏｒｄｅｒ値はパレットサイズに依存した式によって取得され得る。
【０１６８】
１つの実施形態において、Ｏｒｄｅｒ値は、復号または符号化されるレベルのブロックに残っている画素の数に依存する。図１４において、それはＯｒｄｅｒ値が値Ｐｉｘｅｌｓ＿ｉｎ＿Ｂｌｏｃｋ−ｊに依存することを意味する。実際に、まだ復号または符号化されない画素の数が低いほど、Ｒｕｎ要素の予想値は低い。
【０１６９】
１つの実施形態において、提案された異なる適合方法を組み合わせることができる。
【０１７０】
１つの実施形態において、Ｏｒｄｅｒ値は、例えば次のテーブルに従って、パレットサイズおよび符号化ユニットサイズに基づいて判定される。
【０１７１】
【表１】
0006532467.tif 000002
なお、このテーブルは単に可能な実施例を示ものである。
【０１７２】
１つの実施形態において、Ｏｒｄｅｒ値は予測モード「Ｐｒｅｄ  ｍｏｄｅ」およびＬｅｖｅｌ値に基づいて判定される。好ましい実施形態において、Ｏｒｄｅｒ値は次の式で示される。
【０１７３】
Ｉｆ（ｐｒｅｄ＿ｍｏｄｅ＝＝１）Ｏｒｄｅｒ＝Ｏｒｄｅｒ０
ｅｌｓｅ  ｉｆ（ｐｒｅｄ＿ｍｏｄｅ＝＝０  ＡＮＤ  ｌｅｖｅｌ＝＝０）Ｏｒｄｅｒ＝Ｏｒｄｅｒ１
ｅｌｓｅ  Ｏｒｄｅｒ＝Ｏｒｄｅｒ２
好ましい実施形態において、Ｏｒｄｅｒ０＝Ｏｒｄｅｒ１である。実際に、０と等しいレベルはレベルのブロックの背景である。そのため、０と等しいレベルの後に続く予想Ｒｕｎ値は、他のレベル値に対するより高いはずである。好ましい実施形態において、Ｏｒｄｅｒ０＝Ｏｒｄｅｒ１＝２かつＯｒｄｅｒ２＝０である。それは、「コピーアップ」予測モードに対して、およびレベル０（ブロック背景）のとき「左予測」モードに対して、予想Ｒｕｎ値が高く、「左予測」モードに対する他のレベル値に対してより低いはずであることを意味する。
【０１７４】
１つの実施形態において、若干のパラメータに基づいてカテゴリが定義される。例えば、カテゴリは、上述のように予測モードに基づいてまたは予測モードおよびレベルに基づいて定義され得る。Ｏｒｄｅｒ値は、各々のカテゴリと関連付けられ、Ｎがカテゴリの番号であるＯｒｄｅｒＮと呼ばれる。そして各々のカテゴリに対して判定されたオーダー値は、他のいくつかのパラメータに基づいて適合され得る。例えば、カテゴリに対して判定された最後のＯｒｄｅｒ値および復号された最後のＲｕｎ値に基づいて適合されてもよい。各々のカテゴリに対して、Ｏｒｄｅｒ値は初期化される。デフォルト値にまたは値０に初期化されてもよい。あるいは、前の符号化ユニットに対して定義された最後のＯｒｄｅｒ値を使用して初期化されてもよい。
【０１７５】
１つの実施形態において、所定のＯｒｄｅｒ値を使用してＲｕｎ値を復号した後に、エンコーダおよびデコーダは、復号されたＲｕｎ値の符号化に最適であったであろうゴロムオーダー値であるＯｐｔＯｒｄｅｒを計算する。この最適なＯｒｄｅｒ値は、その後次に復号されたランのために判定されたＯｒｄｅｒ値として使用される。
【０１７６】
１つの代替案は、Ｏｒｄｅｒ値を値３で初期化することである。各々のカテゴリの最初のランに対して、Ｏｒｄｅｒ値は前に復号された他のオーダー値に依存する。
【０１７７】
例えば、次の式を使用することができる。
【０１７８】
Ｉｆ（ＬａｓｔＲｕｎＮ＝０）ＯｒｄｅｒＮ＝Ｍａｘ（０，ＬａｓｔＯｒｄｅｒＮ−１）
Ｉｆ（ＬａｓｔＲｕｎＮ＞３＊（ＬａｓｔＯｒｄｅｒＮ＋１））ＯｒｄｅｒＮ＝Ｍｉｎ（４，ＬａｓｔＯｒｄｅｒＮ＋１）
式中ＬａｓｔＯｒｄｅｒＮは最後に使用されたＯｒｄｅｒＮである。ＬａｓｔＲｕｎＮはカテゴリＮに対して最後に復号されたＲｕｎ値である。
【０１７９】
別の実施形態において、各々のカテゴリはＯｒｄｅｒＮ値を更新するために独自の式を有する。例えば、Ｏｒｄｅｒ２の式は、次式を用いて２つの他のＯｒｄｅｒ０およびＯｒｄｅｒ１に対するより速くＯｒｄｅｒ値を減少させるはずである。
【０１８０】
Ｉｆ（ＬａｓｔＲｕｎ２＝０）Ｏｒｄｅｒ２＝Ｍａｘ（０，ＬａｓｔＯｒｄｅｒ２−１）
の代わりに
Ｉｆ（ＬａｓｔＲｕｎ２＜＝２）Ｏｒｄｅｒ２＝Ｍａｘ（０，ＬａｓｔＯｒｄｅｒ２−１）
１つの実施形態において、Ｏｒｄｅｒ値はビットストリームで伝送される。図１５は、現在の符号化ユニットに対して本実施形態を示す。そのため、Ｏｒｄｅｒ値は、ステップ１５１８でランパラメータの復号のためにビットストリーム１５０１から抽出される。図１５は図１０に基づいている。そのため、他のモジュールは図１０で使用されるものと同じである。エンコーダ側において、このパラメータはレート歪み判定基準で選択される。このアルゴリズムは、Ｏｒｄｅｒのいくつかの値をテストするものである。レート歪みの最良の妥協値が選択される。
【０１８１】
ビットレートへの影響を抑えるために、この値は小さい固定数の値に制限することができる。例えば、Ｏｒｄｅｒ値は３つの値、すなわち０、１、２だけに制限することができる。そのため、この値は、（値に応じて）１または２ビットの符号で符号化することができる。Ｏｒｄｅｒ値を変更する必要があるかどうか知るために１つのフラグを伝送することができる。別の実施形態において、このＯｒｄｅｒ値は別のＯｒｄｅｒ値または使用された最後のＯｒｄｅｒ値によって予測することができる。別の実施形態において、Ｏｒｄｅｒ＝０またはＯｒｄｅｒ＝２を示すために、１ビットを示すことができる。
【０１８２】
この実施形態は、すでに説明したものと組み合わせることができる。好ましい実施形態において、３つのＯｒｄｅｒ値、前節で説明したＯｒｄｅｒ０、Ｏｒｄｅｒ１、Ｏｒｄｅｒ２が検討される。そのため、「Ｐｒｅｄ  ｍｏｄｅ」「コピーアップ」（＝１）に対してＯｒｄｅｒ０が使用され、前に復号されたレベルが０であるとき「Ｐｒｅｄ  ｍｏｄｅ」左（＝０）に対してＯｒｄｅｒ１が使用され、そうでない場合はＯｒｄｅｒ２が使用される。そして、これらのＯｒｄｅｒＮは各々の符号化ユニットに対して伝送される。好ましい実施形態において、Ｏｒｄｅｒ０およびＯｒｄｅｒ２だけが伝送され、Ｏｒｄｅｒｌ１＝Ｏｒｄｅｒ０である。これらの実施形態は、図１５に表される。実際に、モジュール１５１８はブロック「Ｐｒｅｄ  ｍｏｄｅ」１５１０、レベル１５１２と多少の関係を有する。
【０１８３】
１つの実施形態において、一部のＲｕｎ値は伝送されず、それらはデフォルト値、例えば値０で置換されることを意味する。通常は、伝送されないＲｕｎ値は、あまり一般的ではないより高いＬｅｖｅｌ値に関連付けられたものである。つまり、あまり一般的ではないＬｅｖｅｌ値の繰り返しのパターンが符号化に使用されないようになる。同じ高いＬｅｖｅｌ値を有するレベルのブロックの２つの連続した画素は、繰り返しがないかのように各々符号化を生成することになる。所定のＲｕｎ値を伝送しない判定は、最後に復号されたＬｅｖｅｌ値に基づく。例えば、Ｌｅｖｅｌ値に対して閾値を定義してもよい。この閾値は、例えば４の値を有するといったように固定されてもよい。閾値は、符号化ユニットサイズおよびパレットサイズに基づくルックアップテーブルに基づいてもよい。
【０１８４】
１つの実施形態において、閾値は、シーケンス、フレーム、ＣＴＢまたは符号化ユニットレベルにおいて、ビットストリームで伝送される。
【０１８５】
図１６は、この図で「限界値」と呼ばれる閾値の復号に関連した実施形態を示す。
【０１８６】
１つの実施形態において、限界値は単項最大符号でまたは単項符号で符号化される。この限界値が各々の符号化ユニットに対して符号化される場合、単項最大符号の最大サイズはパレットサイズと等しい。二進符号を同様に検討することができ、符号化ユニットにおいてレベルおよびビットの数はパレットサイズに依存する。図１６はこれらの実施形態を示す。限界値はビットストリーム１６１８から復号される。それから、パレットサイズについては、限界値は復号された限界値＋１と等しく設定１６１９される。「Ｌｅｖｅｌ」が復号１６１２されるとき、それが限界値以上１６２０である場合、ランシンタックス要素は復号されず０と等しく設定される。そして、そうでない場合はモジュール１６１５が処理され、ランは通常通り復号１６１４される。なお、各々の符号化ユニットに対して一旦限界値が復号される。
【０１８７】
別の実施形態において、パレットサイズの前に限界値が単項符号で符号化される。パレットサイズは、復号されたサイズ＋限界値＋１に設定される。
【０１８８】
エンコーダ側において、この限界値はレート歪み判定基準に基づいて選択される。つまり、レート歪み判定基準に関して最適な限界値を見つけるためにいくつかのテストが計算される。エンコーダ側における別の解決策は、すべてのランパラメータが０と等しい、より低いレベルと等しい限界値を選択することである。つまり、その限界値より上位のすべてのレベルについて関連ランは０と等しく設定される。
【０１８９】
１つの実施形態において、他のパラメータの値が何であってもゴロムオーダーは常に０と等しく設定される（Ｇｏｌｏｍｂ＿Ｈ（０））。
【０１９０】
１つの実施形態において、大きすぎるゴロム符号を回避するためにＲｕｎ値の値が限定される。実際に、値がとても大きいとき、関連ゴロム符号は非常に多数のビットを有する。これはエントロピー復号複雑プロセスを著しく増加させ、したがって最悪状況の複雑度を増加させる。最悪状況はハードウェアを設計するために使用される。この実施形態に対する１つの代替案は、限界値をゴロム符号に関連付けることであり、この限界値が復号される場合、デコーダは追加の二進符号を読み出す。つまり、現在値が厳密に限界値より下位である場合、現在値はゴロム符号で通常に符号化される。そして、この現在値が限界値より上位または限界値と等しい場合、固定数のビットが後に続くゴロム符号で限界値が符号化される。固定数のビットは二進符号である。その場合、現在値は、追加の固定ビットに関連付けられた数をプラスした限界値と等しい。
【０１９１】
上記全ての実施形態は組み合わせることができる。
【０１９２】
好ましい実施形態において、３つのカテゴリは次式に従って予測モードおよび最後に復号されたレベルに基づいて定義される。
【０１９３】
Ｉｆ（ｐｒｅｄ＿ｍｏｄｅ＝＝１）Ｏｒｄｅｒ＝Ｏｒｄｅｒ０
ｅｌｓｅ  ｉｆ（ｐｒｅｄ＿ｍｏｄｅ＝＝０  ＡＮＤ  ｌｅｖｅｌ＝＝０）Ｏｒｄｅｒ＝Ｏｒｄｅｒ１
ｅｌｓｅ  Ｏｒｄｅｒ＝Ｏｒｄｅｒ２
３つの対応するＯｒｄｅｒ値、Ｏｒｄｅｒ０、Ｏｒｄｅｒ１およびＯｒｄｅｒ２は次のように初期化される。Ｏｒｄｅｒ０＝Ｏｒｄｅｒ１＝２およびＯｒｄｅｒ２＝０。次いで３つのオーダー値は次式に従って更新される。
【０１９４】
Ｉｆ（ＬａｓｔＲｕｎＮ＝０）ＯｒｄｅｒＮ＝Ｍａｘ（０，ＬａｓｔＯｒｄｅｒＮ−１）
Ｉｆ（ＬａｓｔＲｕｎＮ＞３＊（ＬａｓｔＯｒｄｅｒＮ＋１））ＯｒｄｅｒＮ＝Ｍｉｎ（４，ＬａｓｔＯｒｄｅｒＮ＋１）
式中ＬａｓｔＯｒｄｅｒＮは最後に使用されたＯｒｄｅｒＮである。ＬａｓｔＲｕｎＮはカテゴリＮに対して最後に復号されたＲｕｎ値である。
【０１９５】
さらに、Ｐｒｅｄ  Ｍｏｄｅ＝０に対して、最後に復号されたＬｅｖｅｌ値が閾値より厳密に大きい（または閾値以上である）とき、Ｒｕｎ値は符号化および復号されない。閾値は、各々のパレットモード符号化ユニットに対してビットストリームから抽出される。
【０１９６】
ゴロム符号と関連して説明されているが、任意の他のエントロピー符号の長さを適合させるために同じことが適用され得る。例えば、ハフマン符号を使用する場合、ハフマン符号の個別の辞書が符号化パラメータに従って判定されてもよい。
【０１９７】
図１７は、本発明の１つまたは複数の実施形態の実現のための計算装置１７００の概略ブロック図である。計算装置１７００は、マイクロコンピュータ、ワークステーションまたは軽い携帯機器などのデバイスとすることができる。計算装置１７００は、下記に接続された通信バスを有する。
【０１９８】
−ＣＰＵと示すマイクロプロセッサなどの中央処理装置１７０１、
−ＲＡＭと示す、本発明の実施形態による画像の少なくとも一部を符号化または復号する方法を実装するために必要な変数およびパラメータを記録するように適合されたレジスタと同様、本発明の実施形態の方法の実行可能なコードを記憶するための、ランダムアクセスメモリ１７０２であって、そのメモリ容量は例えば拡張ポートに接続された任意選択のＲＡＭによって拡大され得る、
−ＲＯＭと示す、本発明の実施形態を実施するためのコンピュータプログラムを記憶するためのリードオンリメモリ１７０３、
−ネットワークインタフェース１７０４は通常は、処理されるデジタルデータがそれを介して送信または受信される通信ネットワークに接続される。ネットワークインタフェース１７０４は単一のネットワークインタフェースでもよく、または異なるネットワークインタフェース（例えば有線および無線インタフェース、または異なる種類の有線もしくは無線インタフェース）のセットで構成してもよい。データパケットは、ＣＰＵ１７０１で動作するソフトウェアアプリケーションの制御の下で、送信のためにネットワークインタフェースに書き込まれ、または受信のためにネットワークインタフェースから読み出される、
−ユーザインタフェース１７０５は、ユーザからの入力を受け取るためにまたはユーザに情報を見せるために使用され得る、
−ＨＤと示すハードディスク１７０６は、大容量記憶装置として提供され得る、
−Ｉ／Ｏモジュール１７０７は、ビデオソースまたはディスプレイなどの外部デバイスからデータを受け取る、または外部デバイスにデータを送るために使用され得る。
【０１９９】
実行可能なコードは、リードオンリメモリ１７０３、ハードディスク１７０６または例えばディスクなどの取り外し可能なデジタル媒体のいずれかに記憶することができる。１つの変形例によれば、プログラムの実行可能なコードは、実行する前に、ハードディスク１７０６などの通信装置１７００の記憶手段の１つに記憶するために、ネットワークインタフェース１７０４を介して、通信ネットワークを使って受信することができる。
【０２００】
中央処理装置１７０１は、本発明の実施形態に従ってプログラムの命令またはプログラムのソフトウェアコードの一部の実行を制御および管理するように構成され、その命令は前述の記憶手段の１つに記憶される。電源オンした後でＣＰＵ１７０１は、それらの命令が例えばプログラムＲＯＭ１７０３またはハードディスク（ＨＤ）１７０６からロードされた後にソフトウェアアプリケーションに関連するメインＲＡＭメモリ１７０２から命令を実行することが可能である。このようなソフトウェアアプリケーションは、ＣＰＵ１７０１によって実行されると、図１０から図１６に示すフローチャートのステップを実行させる。
【０２０１】
図１０から図１６に示されたアルゴリズムの任意のステップは、ＰＣ（「パーソナルコンピュータ」）、ＤＳＰ（「デジタルシグナルプロセッサ」）またはマイクロコントローラなどのプログラム可能な計算機による命令のセットまたはプログラムの実行によってソフトウェアで実施することができ、あるいは、ＦＰＧＡ（「フィールドプログラマブルゲートアレイ」）またはＡＳＩＣ（「特定用途向け集積回路」）などの機械または専用部品によってハードウェアで実施することができる。
【０２０２】
本発明は、具体的な実施形態を参照して上述のとおり説明したが、本発明は具体的な実施形態に限定されず、本発明の有効範囲内における修正は当業者に明らかであろう。
【０２０３】
上記の例示的実施形態を参照することで、多くの他の修正および変形が当業者に示唆され、それらの変更および変形は例示のためだけに提示され、添付の請求項によってのみ定義される発明の範囲を限定するものではない。具体的には、異なる実施形態の異なる特徴は適宜交換することができる。
【０２０４】
特許請求の範囲において、「有する（ｃｏｍｐｒｉｓｉｎｇ）」という文言は他の要素またはステップを除外せず、不定冠詞「１つの（「ａ」または「ａｎ」）」は複数を除外しない。異なる特徴が相互に異なる従属請求項に記載されるという事実だけでは、これらの特徴の組み合わせを有効に利用できないことを意味しない。
【図１】
0006532467.tif 000003
【図２】
0006532467.tif 000004
【図３】
0006532467.tif 000005
【図４】
0006532467.tif 000006
【図５】
0006532467.tif 000007
【図６】
0006532467.tif 000008
【図７】
0006532467.tif 000009
【図８】
0006532467.tif 000010
【図９】
0006532467.tif 000011
【図１０】
0006532467.tif 000012
【図１１】
0006532467.tif 000013
【図１２】
0006532467.tif 000014
【図１３】
0006532467.tif 000015
【図１４】
0006532467.tif 000016
【図１５】
0006532467.tif 000017
【図１６】
0006532467.tif 000018
【図１７】
0006532467.tif 000019