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