(57)【特許請求の範囲】
【請求項１】
ビデオデータを復号する方法であって、
ビデオデータのブロックのパレットインデックスの第１の線に含まれる第１のパレットインデックスのために、前記第１のパレットインデックスの値を復号するか、又はパレットインデックスの前記第１の線とは異なるパレットインデックスの第２の線に含まれる第２のパレットインデックスをコピーするかどうかを決定することと、ここにおいて、前記第１のパレットインデックス及び前記第２のパレットインデックスはビデオデータの前記ブロックのための画素値のパレットの少なくとも１つのエントリーにそれぞれの第１の画素位置及び第２の画素位置をマッピングする、
前記ブロック中の１つ以上のそれぞれの画素位置の１つ以上の画素値が画素値の前記パレットに含まれないことを示している１つ以上のシンタックス要素を復号することと、
前記第１のパレットインデックスの前記値を復号することを決定することに基づいて、前記第１のパレットインデックスの前記値を示すデータを復号することと、
前記第２のパレットインデックスをコピーすることを決定することに基づいて、前記第１の線の前記第１のパレットインデックスが前記第２の線の第２のパレットインデックスからコピーされることを示すデータを復号することと、
前記それぞれの第１のパレットインデックス及び前記第２のパレットインデックスを前記パレットの少なくとも１つのエントリーに整合することによって前記第１のパレットインデックスの画素値及び前記第２のパレットインデックスの画素値を決定することと、
を備える方法。
【請求項２】
前記第１のパレットインデックスで復号するために走査方向に前記第１のパレットインデックスに続く多数の連続的なインデックスのランを示す１つ以上のシンタックス要素を復号することを更に備える、請求項１に記載の方法。
【請求項３】
前記第１のパレットインデックスの前記値を復号することを決定することに基づいて、前記ランを示す前記１つ以上のシンタックス要素を復号することは、前記第１のパレットインデックスに等しい多数の連続するインデックスのランを示す１つ以上のシンタックス要素をコード化することを備え、
前記第２のパレットインデックスをコピーすることを決定することに基づいて、前記ランを示す前記１つ以上のシンタックス要素を復号することは、前記第２の線からコピーされる多数の連続的なインデックスのランを示す１つ以上のシンタックス要素を復号することを備える、請求項２に記載の方法。
【請求項４】
前記第２の線を示す１つ以上のシンタックス要素を復号することを更に備える、請求項１に記載の方法。
【請求項５】
前記第１の線及び前記第２の線がビデオデータの前記ブロックのそれぞれの第１の行及び第２の行又はそれぞれの第１の列及び第２の列を備える、請求項４に記載の方法。
【請求項６】
前記第２の線を示す前記１つ以上のシンタックス要素を復号することはビデオデータの前記ブロック中の前記第２の線の位置を識別するデータをコード化することを備える、請求項４に記載の方法。
【請求項７】
前記第２の線の前記位置を識別する前記データを復号することはビデオデータの前記ブロック中の前記第２の線を識別する変位値を復号することを備える、請求項６に記載の方法。
【請求項８】
前記第２の線を示す前記１つ以上のシンタックス要素を復号することは、単項コード又は切り捨てられた単項コードを用いて前記１つ以上のシンタックス要素を復号することを備える、請求項６に記載の方法。
【請求項９】
前記第１のパレットインデックス及び前記第２のパレットインデックスを含むビデオデータの前記ブロックのためのインデックスのマップを決定することと、
前記マップの前記インデックスを復号するための走査方向を示すデータを復号することと、
を更に備える、請求項１に記載の方法。
【請求項１０】
前記第１のパレットインデックスの前記値を復号するか、又は前記第１のパレットインデックスのための前記第２のパレットインデックスをコピーするかを示す１つ以上のシンタックス要素を復号すること、
をさらに備え、
前記第１のパレットインデックスの前記値を復号するか、又は前記第２のパレットインデックスをコピーするかを決定することは前記１つ以上シンタックス要素に基づいて決定することを備える、
請求項１に記載の方法。
【請求項１１】
ビデオデータを符号化する方法であって、
ビデオデータのブロックのパレットインデックスの第１の線に含まれる第１のパレットインデックスのために、前記第１のパレットインデックスの値を符号化するか、又はパレットインデックスの前記第１の線とは異なるパレットインデックスの第２の線に含まれる第２のパレットインデックスをコピーするかどうかを決定することと、ここにおいて、前記第１のパレットインデックス及び前記第２のパレットインデックスはビデオデータの前記ブロックのための画素値のパレットの少なくとも１つのエントリーにそれぞれの第１の画素位置及び第２の画素位置をマッピングする、
前記ブロック中の１つ以上のそれぞれの画素位置の１つ以上の画素値が画素値の前記パレットに含まれないことを示している１つ以上のシンタックス要素を符号化することと、
前記第１のパレットインデックスの前記値を符号化することを決定することに基づいて、前記第１のパレットインデックスの前記値を示すデータを符号化することと、
前記第２のパレットインデックスをコピーすることを決定することに基づいて、前記第１の線の前記第１のパレットインデックスが前記第２の線の第２のパレットインデックスからコピーされることを示すデータを符号化することと、
符号化されたビットストリーム中の前記第１のパレットインデックス及び前記第２のパレットインデックスを表すデータを符号化することと、
を備える方法。
【請求項１２】
ビデオデータを復号するための装置であって、
ビデオデータのブロックのパレットインデックスの第１の線に含まれる第１のパレットインデックスのために、前記第１のパレットインデックスの値を復号するため、又はパレットインデックスの前記第１の線とは異なる前記第１のパレットインデックスのためのパレットインデックスの第２の線に含まれる第２のパレットインデックスをコピーするかどうかを決定するための手段と、ここにおいて、前記第１のパレットインデックス及び前記第２のパレットインデックスはビデオデータの前記ブロックのための画素値のパレットの少なくとも１つのエントリーにそれぞれの第１の画素位置及び第２の画素位置をマッピングする、
前記ブロック中の１つ以上のそれぞれの画素位置の１つ以上の画素値が画素値の前記パレットに含まれないことを示している１つ以上のシンタックス要素を復号するための手段と、
前記第１のパレットインデックスの前記値を復号することを決定することに基づいて、前記第１のパレットインデックスの前記値を示すデータを復号するための手段と、
前記第２のパレットインデックスをコピーすることを決定することに基づいて、前記第１の線の前記第１のパレットインデックスが前記第２の線の前記第２のパレットインデックスからコピーされることを示すデータを復号するための手段と、
前記それぞれの第１のパレットインデックス及び前記第２のパレットインデックスを前記パレットの少なくとも１つのエントリーに整合することによって前記第１のパレットインデックスの画素値及び前記第２のパレットインデックスの画素値を決定するための手段と、
を備える、装置。
【請求項１３】
請求項２〜１０のいずれか一項に記載の方法を実施するための手段を備える、請求項１２に記載の装置。
【請求項１４】
ビデオデータを符号化するための装置であって、
ビデオデータのブロックのパレットインデックスの第１の線に含まれる第１のパレットインデックスのために、前記第１のパレットインデックスの値を符号化するため、又はパレットインデックスの前記第１の線とは異なる前記第１のパレットインデックスのためのパレットインデックスの第２の線に含まれる第２のパレットインデックスをコピーするかどうかを決定するための手段と、ここにおいて、前記第１のパレットインデックス及び前記第２のパレットインデックスはビデオデータの前記ブロックのための画素値のパレットの少なくとも１つのエントリーにそれぞれの第１の画素位置及び第２の画素位置をマッピングする、
前記ブロック中の１つ以上のそれぞれの画素位置の１つ以上の画素値が画素値の前記パレットに含まれないことを示している１つ以上のシンタックス要素を符号化するための手段と、
前記第１のパレットインデックスの前記値を符号化することを決定することに基づいて、前記第１のパレットインデックスの前記値を示すデータを符号化するための手段と、
前記第２のパレットインデックスをコピーすることを決定することに基づいて、前記第１の線の前記第１のパレットインデックスが前記第２の線の前記第２のパレットインデックスからコピーされることを示すデータを符号化するための手段と、
符号化されたビットストリーム中の前記第１のパレットインデックス及び前記第２のパレットインデックスを表すデータを符号化するための手段と、
を備える、装置。
【請求項１５】
実行されると、１つ以上のプロセッサに、請求項１〜１１のいずれか一項に記載の方法を実施させる命令を記憶するコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本出願は、各々の内容全体が参照により本明細書に組み込まれる、２０１３年４月５日に出願された米国仮出願第６１／８０９，２３６号、及び２０１３年４月１０日に出願された米国仮出願第６１／８１０，６４９号の利益を主張する。
【０００２】
[0002]本開示は、ビデオの符号化及び復号に関する。
【背景技術】
【０００３】
[0003]デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップコンピュータ又はデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録機器、デジタルメディアプレーヤ、ビデオゲーム機器、ビデオゲームコンソール、携帯電話又は衛星無線電話、所謂「スマートフォン」、ビデオ遠隔会議機器、ビデオストリーミング機器などを含む、広範囲にわたる機器に組み込まれ得る。デジタルビデオ機器は、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．２６４／ＭＰＥＧ−４，Ｐａｒｔ１０，Ａｄｖａｎｃｅｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＡＶＣ）、現在開発中のＨｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）規格によって定義された規格、及びそのような規格の拡張に記載されているもののような、ビデオ圧縮技法を実装する。ビデオ機器は、そのようなビデオ圧縮技法を実施することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、及び／又は記憶することができる。
【０００４】
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減又は除去するために、空間的（イントラピクチャ）予測及び／又は時間的（インターピクチャ）予測を実行する。ブロックベースのビデオコード化の場合、ビデオスライス（即ち、ビデオフレーム又はビデオフレームの一部分）がビデオブロックに区分され得る。ピクチャのイントラコード化された（Ｉ）スライスにおけるビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコード化された（Ｐ又はＢ）スライス中のビデオブロックは、同じピクチャの中の隣接ブロック中の参照サンプルに対する空間的予測、又は他の参照ピクチャ中の参照サンプルに対する時間的予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
[0005]空間的予測又は時間的予測は、コード化されるべきブロックの予測ブロックをもたらす。残差データは、コード化されるべき元のブロックと予測ブロックとの間の画素差分を表す。インターコード化されたブロックは、予測ブロックを形成する参照サンプルのブロックを指し示す動きベクトル、及びコード化されたブロックと予測ブロックとの間の差を示す残差データに従って符号化される。イントラコード化されたブロックは、イントラコード化モード及び残差データに従って符号化される。更なる圧縮のために、残差データは、画素領域から変換領域に変換されて残差係数をもたらすことができ、その残差係数が次いで量子化され得る。最初に２次元アレイで構成される量子化された係数は、係数の１次元ベクトルを生成するために走査されてよく、なお一層の圧縮を達成するためにエントロピーコード化が適用されてよい。
【０００６】
[0006]マルチビューコード化ビットストリームは、例えば、複数の視点からのビューを符号化することによって生成され得る。マルチビューコード化態様を利用する幾つかの３次元（３Ｄ）ビデオ規格が開発されている。例えば、異なるビューは、３Ｄビデオをサポートするために左目のビューと右目のビューとを伝えることができる。或いは、幾つかの３Ｄビデオコード化処理は、所謂マルチビュープラス深度コード化を適用することができる。マルチビュープラス深度コード化では、３Ｄビデオビットストリームは、テクスチャビュー成分だけではなく深度ビュー成分も含み得る。例えば、各ビューは、１つのテクスチャビュー成分と１つの深度ビュー成分とを備え得る。
【発明の概要】
【０００７】
[0007]本開示の技法は、パレットベースのビデオコード化に関する。例えば、パレットベースのコード化では、ビデオコーダ（ビデオエンコーダ又はビデオデコーダ）は、特定の領域（例えば、所与のブロック）のビデオデータを表すための色のテーブルとして、所謂「パレット」を形成することができる。パレットベースのコード化は、比較的少数の色を有するビデオデータの領域をコード化するのに特に有用であり得る。実際の画素値（又はそれらの残差）をコード化するのではなく、ビデオコーダは、画素の色を表すパレット中のエントリーと画素を関連付ける、画素の１つ又は複数のインデックス値をコード化することができる。パレットは、明示的に符号化されてデコーダに送られてよく、以前のパレットのエントリーから予測されてよく、又はこれらの組合せであってよい。本開示で説明される技法は、パレットベースのコード化モードを信号伝達（signaling）すること、パレットをコード化（coding）すること、パレットを予測すること、パレットを導出すること、及び、パレットベースのコード化マップと他のシンタックス要素とをコード化することの、１つ又は複数の様々な組合せのための技法を含み得る。
【０００８】
[0008]一例では、ビデオデータをコード化する方法は、第１の画素値を示す第１のエントリーを有する第１のパレットを決定することと、第１のパレットの第１のエントリーに基づいて、第２のパレットの第２の画素値を示す１つ又は複数の第２のエントリーを決定することと、第２のパレットを使用してビデオデータのブロックの画素をコード化することとを含む。
【０００９】
[0009]別の例では、ビデオデータをコード化するための装置は、ビデオデータを記憶するメモリと、第１の画素値を示す第１のエントリーを有する第１のパレットを決定し、第１のパレットの第１のエントリーに基づいて、第２のパレットの第２の画素値を示す１つ又は複数の第２のエントリーを決定し、第２のパレットを使用してビデオデータのブロックの画素をコード化するように構成される、１つ又は複数のプロセッサとを含む。
【００１０】
[0010]別の例では、ビデオデータをコード化するための装置は、第１の画素値を示す第１のエントリーを有する第１のパレットを決定するための手段と、第１のパレットの第１のエントリーに基づいて、第２のパレットの第２の画素値を示す１つ又は複数の第２のエントリーを決定するための手段と、第２のパレットを使用してビデオデータのブロックの画素をコード化するための手段とを含む。
【００１１】
[0011]別の例では、非一時的コンピュータ可読媒体は、実行されると、１つ又は複数のプロセッサに、第１の画素値を示す第１のエントリーを有する第１のパレットを決定させ、第１のパレットの第１のエントリーに基づいて、第２のパレットの第２の画素値を示す１つ又は複数の第２のエントリーを決定させ、第２のパレットを使用してビデオデータのブロックの画素をコード化させる、命令を記憶する。
【００１２】
[0012]別の例では、ビデオデータをコード化する方法は、ビデオデータのブロック中の第１の画素と関連付けられる第１のインデックス値を決定することと、ここにおいて、第１のインデックス値は第１の画素の位置を画素値のパレットのエントリーと関連付ける、第１のインデックス値に基づいて、ビデオデータのブロック中の１つ又は複数の第２の画素と関連付けられる１つ又は複数の第２のインデックス値を決定することと、ここにおいて、第２のインデックス値は１つ又は複数の第２の画素の位置を画素値のパレットの１つ又は複数のエントリーと関連付ける、ビデオデータのブロックの第１の画素と１つ又は複数の第２の画素とをコード化することとを含む。
【００１３】
[0013]別の例では、ビデオデータをコード化ための装置は、ビデオデータを記憶するメモリと、ビデオデータのブロック中の第１の画素と関連付けられる第１のインデックス値を決定し、ここにおいて、第１のインデックス値は第１の画素の位置を画素値のパレットのエントリーと関連付ける、第１のインデックス値に基づいて、ビデオデータのブロック中の１つ又は複数の第２の画素と関連付けられる１つ又は複数の第２のインデックス値を決定し、ここにおいて、第２のインデックス値は１つ又は複数の第２の画素の位置を画素値のパレットの１つ又は複数のエントリーと関連付ける、ビデオデータのブロックの第１の画素と１つ又は複数の第２の画素とをコード化するように構成される、１つ又は複数のプロセッサとを含む。
【００１４】
[0014]別の例では、ビデオデータをコード化するための装置は、ビデオデータのブロック中の第１の画素と関連付けられる第１のインデックス値を決定するための手段と、ここにおいて、第１のインデックス値は第１の画素の位置を画素値のパレットのエントリーと関連付ける、第１のインデックス値に基づいて、ビデオデータのブロック中の１つ又は複数の第２の画素と関連付けられる１つ又は複数の第２のインデックス値を決定するための手段と、ここにおいて、第２のインデックス値は１つ又は複数の第２の画素の位置を画素値のパレットの１つ又は複数のエントリーと関連付ける、ビデオデータのブロックの第１の画素と１つ又は複数の第２の画素とをコード化するための手段とを含む。
【００１５】
[0015]別の例では、非一時的コンピュータ可読媒体は、実行されると、１つ又は複数のプロセッサに、ビデオデータのブロック中の第１の画素と関連付けられる第１のインデックス値を決定させ、ここにおいて、第１のインデックス値は第１の画素の位置を画素値のパレットのエントリーと関連付ける、第１のインデックス値に基づいて、ビデオデータのブロック中の１つ又は複数の第２の画素と関連付けられる１つ又は複数の第２のインデックス値を決定させ、ここにおいて、第２のインデックス値は１つ又は複数の第２の画素の位置を画素値のパレットの１つ又は複数のエントリーと関連付ける、ビデオデータのブロックの第１の画素と１つ又は複数の第２の画素とをコード化させる、命令を記憶する。
【００１６】
[0016]本開示の１つ又は複数の例の詳細が、添付の図面及び以下の説明に記載される。他の特徴、目的、及び利点は、説明、図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１７】
【図１】[0017]本開示で説明される技法を利用し得る例示的なビデオコード化システムを示すブロック図。
【図２】[0018]本開示で説明される技法を実施し得る例示的なビデオエンコーダを示すブロック図。
【図３】[0019]本開示で説明される技法を実施し得る例示的なビデオデコーダを示すブロック図。
【図４】[0020]本開示の技法に従った、ビデオデータをコード化するためのパレットを決定する例を示す概念図。
【図５】[0021]本開示の技法に従った、画素のブロックのためのパレットに対するインデックスを決定する例を示す概念図。
【図６】[0022]本開示の技法に従った、パレットコード化モードを使用してビデオデータをコード化するための例示的なプロセスを示すフローチャート。
【図７】[0023]本開示の技法に従った、パレットベースのコード化においてパレットを決定するための例示的なプロセスを示すフローチャート。
【図８】[0024]本開示の技法に従った、パレットベースのビデオコード化においてビデオデータのブロックのインデックスを決定するための例示的なプロセスを示すフローチャート。
【発明を実施するための形態】
【００１８】
[0025]本開示は、ビデオコード化及び圧縮のための技法を含む。具体的には、本開示は、ビデオデータのパレットベースのコード化のための技法を説明する。従来のビデオコード化では、画像は、色調が連続的であり空間的に滑らかであると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタリングなどのような様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオに対しては良好な性能を示している。
【００１９】
[0026]しかしながら、リモートデスクトップ、協調作業、及びワイヤレス表示のような用途では、コンピュータにより生成されたスクリーンコンテンツ（例えば、テキスト又はコンピュータグラフィックスのような）は、圧縮されるべき主要なコンテンツであり得る。このタイプのコンテンツは、不連続な色調を有し、鋭利な線と高コントラストのオブジェクト境界とを特徴とする傾向がある。連続的な色調及び滑らかさという仮定はもはやスクリーンコンテンツに対しては当てはまらないことがあるので、従来のビデオコード化技法は、スクリーンコンテンツを含むビデオデータを圧縮するための効率的な方法ではないことがある。
【００２０】
[0027]本開示は、スクリーンにより生成されたコンテンツのコード化に特に好適であり得る、パレットベースのコード化を説明する。例えば、ビデオデータのある特定の領域が、比較的少数の色を有すると仮定する。ビデオコーダ（ビデオエンコーダ又はビデオデコーダ）は、特定の領域（例えば、所与のブロック）のビデオデータを表すための色のテーブルとして、所謂「パレット」を形成することができる。各画素は、画素の色を表すパレット中のエントリーと関連付けられ得る。例えば、ビデオコーダは、画素値をパレット中の適切な値に関連付けるインデックスをコード化することができる。
【００２１】
[0028]上の例では、ビデオエンコーダは、ブロックのためのパレットを決定すること（例えば、パレットを明示的にコード化すること、パレットを予測すること、又はこれらの組合せ）、各画素の値を表すためのパレット中のエントリーを位置特定すること、及び、画素値をパレットに関連付ける画素のインデックス値によってブロックを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダは、符号化されたビットストリームから、ブロックのためのパレットと、更にはブロックの画素のインデックス値とを取得することができる。ビデオデコーダは、ブロックの画素値を再構成するために、画素のインデックス値をパレットのエントリーに関連付けることができる。
【００２２】
[0029]上の例は、パレットベースのコード化の全般的な説明を与えることが意図されている。様々な例では、本開示で説明される技法は、パレットベースのコード化モードを信号伝達すること、パレットを送信すること、パレットを予測すること、パレットを導出すること、及び、パレットベースのコード化マップと他のシンタックス要素とを送信することの、１つ又は複数の様々な組合せのための技法を含み得る。そのような技法は、ビデオコード化の効率を改善することができ、例えば、スクリーンにより生成されたコンテンツを表すためにより少数のビットしか必要としない。
【００２３】
[0030]ビデオデータのパレットベースのコード化のための技法は、インター予測コード化又はイントラ予測コード化のための技法のような、１つ又は複数の他のコード化技法とともに使用され得る。例えば、下でより詳細に説明されるように、エンコーダ又はデコーダ、又は組み合わされたエンコーダ−デコーダ（コーデック）は、インター予測コード化及びイントラ予測コード化と、更にはパレットベースのコード化とを実行するように構成され得る。
【００２４】
[0031]幾つかの例では、パレットベースのコード化技法は、１つ又は複数のビデオコード化規格とともに使用するために構成され得る。例えば、Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）は、ＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）及びＩＳＯ／ＩＥＣ  Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）のＪｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｏｎ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＪＣＴ−ＶＣ）によって開発された新しいビデオコード化規格である。最近のＨＥＶＣテキスト仕様ドラフトは、ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１２＿Ｇｅｎｅｖａ／ｗｇ１１／ＪＣＴＶＣ−Ｌ１００３−ｖ１３．ｚｉｐ．から利用可能である、Ｂｒｏｓｓ他、「Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  （ＨＥＶＣ）  Ｔｅｘｔ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｄｒａｆｔ  １０  （ｆｏｒ  ＦＤＩＳ  ＆  Ｃｏｎｓｅｎｔ）」、ＪＣＶＣ−Ｌ１００３＿ｖ１３、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ  ３及びＩＳＯ／ＩＥＣ  ＪＣＴ  １／ＳＣ  ２９／ＷＧ  １１のＪＣＴ−ＶＣの第１２回会合、２０１３年１月１４〜２３日（“ＨＥＶＣ  Ｄｒａｆｔ  １０”）に記載されている。
【００２５】
[0032]ＨＥＶＣフレームワークに関して、例として、パレットベースのコード化技法は、コード化単位（ＣＵ）モードとして使用されるように構成され得る。他の例では、パレットベースのコード化技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。従って、ＣＵモードの状況において説明される以下の開示されるプロセスの全てが、追加で、又は代替的に、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのコード化技法の制約又は制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、又はそれらの一部として機能するように適用され得るからである。これらの場合、パレットコード化のためのユニットは、正方形のブロック、長方形のブロック、又は非長方形の領域であってもよい。
【００２６】
[0033]図１は、本開示の技法を利用し得る例示的なビデオコード化システム１０を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコード化（video coding）」又は「コード化（coding）」という用語は、ビデオ符号化（video encoding）又はビデオ復号（video decoding）を総称的に指し得る。ビデオコード化システム１０のビデオエンコーダ２０及びビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースのビデオコード化のための技法を実行するように構成され得る、機器の例を代表する。例えば、ビデオエンコーダ２０及びビデオデコーダ３０は、パレットベースのコード化と非パレットベースのコード化のいずれかを使用して、ＨＥＶＣコード化におけるＣＵ又はＰＵのような、ビデオデータの様々なブロックを選択的にコード化するように構成され得る。非パレットベースのコード化モードは、ＨＥＶＣドラフト１０によって規定される様々なコード化モードのような、様々なインター予測時間コード化モード又はイントラ予測空間コード化モードを指し得る。
【００２７】
[0034]図１に示されるように、ビデオコード化システム１０は、発信源機器１２と宛先機器１４とを含む。発信源機器１２は、符号化されたビデオデータを生成する。従って、発信源機器１２は、ビデオ符号化機器又はビデオ符号化装置と呼ばれ得る。宛先機器１４は、発信源機器１２によって生成された符号化されたビデオデータを復号することができる。従って、宛先機器１４は、ビデオ復号機器又はビデオ復号装置と呼ばれ得る。発信源機器１２及び宛先機器１４は、ビデオコード化機器又はビデオコード化装置の例であり得る。
【００２８】
[0035]発信源機器１２及び宛先機器１４は、デスクトップコンピュータ、モバイルコンピューティング機器、ノートブック（例えば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、所謂「スマート」フォンのような電話ハンドセット、テレビジョン、カメラ、表示装置、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲の機器を備え得る。
【００２９】
[0036]宛先機器１４は、チャネル１６を介して発信源機器１２から符号化されたビデオデータを受信することができる。チャネル１６は、発信源機器１２から宛先機器１４に符号化されたビデオデータを移動することが可能な１つ又は複数の媒体又は機器を備え得る。一例では、チャネル１６は、発信源機器１２が符号化されたビデオデータを宛先機器１４にリアルタイムで直接送信することを可能にする１つ又は複数の通信媒体を備え得る。この例では、発信源機器１２は、ワイヤレス通信プロトコルのような通信規格に従って符号化されたビデオデータを変調することができ、変調されたビデオデータを宛先機器１４に送信することができる。１つ又は複数の通信媒体は、高周波（ＲＦ）スペクトル又は１つ以上の物理伝送線路のような、ワイヤレス及び／又は有線の通信媒体を含み得る。１つ又は複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はグローバルネットワーク（例えば、インターネット）のような、パケットベースネットワークの一部を形成し得る。１つ又は複数の通信媒体は、発信源機器１２から宛先機器１４への通信を容易にする、ルータ、スイッチ、基地局、又は他の機器を含み得る。
【００３０】
[0037]別の例では、チャネル１６は、発信源機器１２によって生成された符号化されたビデオデータを記憶する記憶媒体を含み得る。この例では、宛先機器１４は、ディスクアクセス又はカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、又は符号化されたビデオデータを記憶するための他の適切なデジタル記憶媒体のような、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
【００３１】
[0038]更なる例では、チャネル１６は、発信源機器１２によって生成された符号化されたビデオデータを記憶する、ファイルサーバ又は別の中間記憶装置を含み得る。この例では、宛先機器１４は、ストリーミング又はダウンロードを介して、ファイルサーバ又は他の中間記憶装置に記憶された符号化されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶することと、符号化されたビデオデータを宛先機器１４に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバは、（例えば、ウェブサイト用の）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、ネットワーク接続記憶（ＮＡＳ）装置、及びローカルディスクドライブを含む。
【００３２】
[0039]宛先機器１４は、インターネット接続のような標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。例示的なタイプのデータ接続は、ファイルサーバに記憶されている符号化されたビデオデータにアクセスするのに好適である、ワイヤレスチャネル（例えば、Ｗｉ−Ｆｉ（登録商標）接続）、有線接続（例えば、ＤＳＬ、ケーブルモデムなど）、又はその両方の組合せを含み得る。ファイルサーバからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、又は両方の組合せであり得る。
【００３３】
[0040]本開示の技法は、ワイヤレスの用途又は設定に限定されない。本技法は、無線テレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、例えばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、又は他の用途などの様々なマルチメディア用途をサポートするビデオコード化に適用され得る。幾つかの例では、ビデオコード化システム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、及び／又はビデオ電話などの用途をサポートするために、単方向又は双方向のビデオ送信をサポートするように構成され得る。
【００３４】
[0041]図１は例にすぎず、本開示の技法は、符号化機器と復号機器との間のデータ通信を必ずしも含むとは限らないビデオコード化環境（例えば、ビデオ符号化又はビデオ復号）に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化機器はデータを符号化し、メモリに記憶することができ、及び／又は、ビデオ復号機器はメモリからデータを取り出し、復号することができる。多くの例では、符号化及び復号は、互いに通信しないが、メモリにデータを符号化し、及び／又はメモリからデータを取り出して復号するだけである機器によって実行される。
【００３５】
[0042]図１の例では、発信源機器１２は、ビデオ発信源１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。幾つかの例では、出力インターフェース２２は、変調器／復調器（モデム）及び／又は送信機を含み得る。ビデオ発信源１８は、例えばビデオカメラなどの撮像装置、以前に撮影されたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、及び／又はビデオデータを生成するためのコンピュータグラフィックスシステム、若しくはビデオデータのそのような発信源の組合せを含み得る。
【００３６】
[0043]ビデオエンコーダ２０は、ビデオ発信源１８からのビデオデータを符号化することができる。幾つかの例では、発信源機器１２は、出力インターフェース２２を介して宛先機器１４に符号化されたビデオデータを直接送信する。他の例では、符号化されたビデオデータはまた、復号及び／又は再生のための宛先機器１４による後のアクセスのために、記憶媒体又はファイルサーバに記憶され得る。
【００３７】
[0044]図１の例では、宛先機器１４は、入力インターフェース２８と、ビデオデコーダ３０と、表示装置３２とを含む。幾つかの例では、入力インターフェース２８は、受信機及び／又はモデムを含む。入力インターフェース２８は、チャネル１６を介して符号化されたビデオデータを受信することができる。表示装置３２は、宛先機器１４と一体化されてよく、又はその外部にあってよい。一般に、表示装置３２は、復号されたビデオデータを表示する。表示装置３２は、液晶表示器（ＬＣＤ）、プラズマ表示器、有機発光ダイオード（ＯＬＥＤ）表示器、又は別のタイプの表示装置のような様々な表示装置を備え得る。
【００３８】
[0045]本開示は全般に、ビデオエンコーダ２０が、ある情報をビデオデコーダ３０のような別の機器に「信号伝達すること」又は「送信すること」に言及することがある。「信号伝達（signaling）」又は「送信（transmitting）」という用語は、一般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素及び／又は他のデータの通信を指し得る。そのような通信は、リアルタイム又はほぼリアルタイムで発生し得る。代替的に、そのような通信は、符号化の時に符号化されたビットストリームの中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに発生し得るなど、ある時間の長さにわたって発生することがあり、これらの要素は、この媒体に記憶された後の任意の時間に復号機器によって取り出され得る。従って、ビデオデコーダ３０は、ある情報を「受信する」ものとして呼ばれ得るが、情報の受信は、必ずしもリアルタイム又はほぼリアルタイムで発生するとは限らず、記憶の後の何らかの時間に媒体から取り出されることがある。
【００３９】
[0046]ビデオエンコーダ２０及びビデオデコーダ３０は各々、１つ又は複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ハードウェアのような、様々な好適な回路のいずれか、又はそれらの任意の組合せとして実装され得る。本技法がソフトウェアで部分的に実装される場合、機器は、適切な非一時的コンピュータ可読記憶媒体にソフトウェア用の命令を記憶し、１つ又は複数のプロセッサを使用してその命令をハードウェア内で実行して、本開示の技法を実行することができる。（ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む）上記のいずれもが、１つ又は複数のプロセッサであると見なされ得る。ビデオエンコーダ２０及びビデオデコーダ３０の各々は、１つ又は複数のエンコーダ又はデコーダに含まれることがあり、両者のいずれかがそれぞれの機器中の複合エンコーダ／デコーダ（ＣＯＤＥＣ）の一部として組み込まれることがある。
【００４０】
[0047]幾つかの例では、ビデオエンコーダ２０及びビデオデコーダ３０は、上で言及されＨＥＶＣドラフト１０に記載されるＨＥＶＣ規格のような、ビデオ圧縮規格に従って動作する。基本的なＨＥＶＣ規格に加えて、ＨＥＶＣのためのスケーラブルビデオコード化拡張、マルチビュービデオコード化拡張、及び３Ｄコード化拡張を作成するための作業が進行中である。加えて、例えば本開示で説明されるような、パレットベースのコード化モードは、ＨＥＶＣ規格の拡張のために提供され得る。幾つかの例では、パレットベースのコード化のために本開示で説明される技法は、ＩＴＵ−Ｔ−Ｈ．２６４／ＡＶＣ規格又は将来の規格のような、他のビデオコード化規格に従って動作するように構成される、エンコーダ及びデコーダに適用され得る。従って、ＨＥＶＣコーデックにおけるコード化単位（ＣＵ）又は予測単位（ＰＵ）のコード化のためのパレットベースのコード化モードの適用が、例として説明される。
【００４１】
[0048]ＨＥＶＣ及び他のビデオコード化規格では、ビデオシーケンスは通常、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、ＳL、ＳCb、及びＳCrと示される３つのサンプルアレイを含み得る。ＳLは、ルーマサンプルの２次元アレイ（即ち、ブロック）である。ＳCbは、Ｃｂクロミナンスサンプルの２次元アレイである。ＳCrは、Ｃｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルとも呼ばれ得る。他の例では、ピクチャは、モノクロームであってよく、ルーマサンプルのアレイのみを含み得る。
【００４２】
[0049]ピクチャの符号化された表現を生成するために、ビデオエンコーダ２０はコード化ツリー単位（ＣＴＵ）のセットを生成し得る。各ＣＴＵは、ルーマサンプルのコード化ツリーブロック、クロマサンプルの２つの対応するコード化ツリーブロック、及びコード化ツリーブロックのサンプルをコード化するのに使用されるシンタックス構造であり得る。コード化ツリーブロックは、サンプルのＮ×Ｎのブロックであり得る。ＣＴＵは「ツリーブロック」又は「最大コード化単位」（ＬＣＵ）とも呼ばれることもある。ＨＥＶＣのＣＴＵは、Ｈ．２６４／ＡＶＣのような、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズに限定されるとは限らず、１つ又は複数のコード化単位（ＣＵ）を含み得る。スライスは、ラスター走査順序で連続的に順序付けられた整数個のＣＴＵを含み得る。
【００４３】
[0050]コード化されたスライスは、スライスヘッダとスライスデータとを備え得る。スライスのスライスヘッダは、スライスについての情報を提供するシンタックス要素を含むシンタックス構造であり得る。スライスデータは、スライスのコード化されたＣＴＵを含み得る。
【００４４】
[0051]本開示は、サンプルの１つ又は複数のブロックのサンプルをコード化するために使用される１つ又は複数のサンプルブロックとシンタックス構造とを指すために、「ビデオ単位」又は「ビデオブロック」又は「ブロック」という用語を使用し得る。例示的なタイプのビデオ単位又はブロックは、ＣＴＵ、ＣＵ、ＰＵ、変換単位（ＴＵ）、マクロブロック、マクロブロック区分などを含み得る。幾つかの状況では、ＰＵの論述は、マクロブロック区分のマクロブロックの論述と交換され得る。
【００４５】
[0052]コード化されたＣＴＵを生成するために、ビデオエンコーダ２０は、ＣＴＵのコード化ツリーブロックに対して４分木区分を再帰的に実行して、コード化ツリーブロックをコード化ブロックに分割することができ、従って「コード化ツリー単位」という名称である。コード化ブロックは、サンプルのＮ×Ｎのブロックである。ＣＵは、ルーマサンプルアレイと、Ｃｂサンプルアレイ及びＣｒサンプルアレイと、コード化ブロックのサンプルをコード化するのに使用されるシンタックス構造とを有するピクチャの、ルーマサンプルの１つのコード化ブロック及びクロマサンプルの２つの対応するコード化ブロックであり得る。ビデオエンコーダ２０は、ＣＵのコード化ブロックを１つ又は複数の予測ブロックに区分することができる。予測ブロックは、同じ予測が適用されるサンプルの矩形（即ち、正方形又は非正方形）ブロックであり得る。ＣＵの予測単位（ＰＵ）は、ルーマサンプルの予測ブロック、ピクチャのクロマサンプルの２つの対応する予測ブロック、予測ブロックサンプルを予測するのに使用されるシンタックス構造であり得る。ビデオエンコーダ２０は、ＣＵの各ＰＵのルーマ予測ブロック、Ｃｂ予測ブロック、及びＣｒ予測ブロックのために、予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成することができる。
【００４６】
[0053]ビデオエンコーダ２０は、ＰＵのための予測ブロックを生成するために、イントラ予測又はインター予測を使用することができる。ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵと関連付けられたピクチャの復号されたサンプルに基づいてＰＵの予測ブロックを生成することができる。
【００４７】
[0054]ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ２０は、ＰＵと関連付けられたピクチャ以外の１つ又は複数のピクチャの復号されたサンプルに基づいて、ＰＵの予測ブロックを生成することができる。ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するために単予測又は双予測を使用することができる。ビデオエンコーダ２０が、ＰＵのための予測ブロックを生成するために単予測を使用するとき、ＰＵは単一のＭＶを有し得る。ビデオエンコーダ２０が、ＰＵのための予測ブロックを生成するために双予測を使用するとき、ＰＵは２つのＭＶを有し得る。
【００４８】
[0055]ビデオエンコーダ２０がＣＵの１つ又は複数のＰＵの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成した後、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックを生成することができる。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックの１つの中のルーマサンプルとＣＵの元のルーマコード化ブロック中の対応するサンプルとの差を示す。更に、ビデオエンコーダ２０はＣＵのＣｂ残差ブロックを生成することができる。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックの１つの中のＣｂサンプルと、ＣＵの元のＣｂコード化ブロック中の対応するサンプルとの差を示し得る。ビデオエンコーダ２０はまた、ＣＵのＣｒ残差ブロックを生成することができる。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックの１つの中のＣｒサンプルと、ＣＵの元のＣｒコード化ブロック中の対応するサンプルとの差を示し得る。
【００４９】
[0056]更に、ビデオエンコーダ２０は、４分木区分を使用して、ＣＵのルーマ残差ブロック、Ｃｂ残差ブロック、及びＣｒ残差ブロックを、１つ又は複数のルーマ変換ブロック、Ｃｂ変換ブロック、及びＣｒ変換ブロックに分解することができる。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。ＣＵの変換単位（ＴＵ）は、ルーマサンプルの変換ブロック、クロマサンプルの２つの対応する変換ブロック、及び変換ブロックサンプルを変換するのに使用されるシンタックス構造であり得る。従って、ＣＵの各ＴＵは、ルーマ変換ブロック、Ｃｂ変換ブロック及びＣｒ変換ブロックと関連付けられ得る。ＴＵと関連付けられたルーマ変換ブロックは、ＣＵのルーマ残差ブロックのサブブロックであり得る。Ｃｂ変換ブロックはＣＵのＣｂ残差ブロックのサブブロックであり得る。Ｃｒ変換ブロックはＣＵのＣｒ残差ブロックのサブブロックであり得る。
【００５０】
[0057]ビデオエンコーダ２０は、ＴＵのルーマ変換ブロックに１回又は複数回の変換を適用して、ＴＵのルーマ係数ブロックを生成することができる。係数ブロックは変換係数の２次元アレイであり得る。変換係数はスカラー量であり得る。ビデオエンコーダ２０は、ＴＵのＣｂ変換ブロックに１回又は複数回の変換を適用して、ＴＵのＣｂ係数ブロックを生成することができる。ビデオエンコーダ２０は、ＴＵのＣｒ変換ブロックに１回又は複数回の変換を適用して、ＴＵのＣｒ係数ブロックを生成することができる。
【００５１】
[0058]係数ブロック（例えば、ルーマ係数ブロック、Ｃｂ係数ブロック又はＣｒ係数ブロック）を生成した後に、ビデオエンコーダ２０は、係数ブロックを量子化することができる。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、更なる圧縮を実現する処理を指す。ビデオエンコーダ２０が係数ブロックを量子化した後に、ビデオエンコーダ２０は、量子化された変換係数を示す符号化シンタックス要素をエントロピーすることができる。例えば、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コード化（ＣＡＢＡＣ）を実行することができる。ビデオエンコーダ２０は、エントロピー符号化されたシンタックス要素をビットストリーム中に出力し得る。
【００５２】
[0059]ビデオエンコーダ２０は、エントロピー符号化されたシンタックス要素を含むビットストリームを出力し得る。ビットストリームは、コード化されたピクチャ及び関連付けられるデータの表現を形成するビットのシーケンスを含み得る。ビットストリームは、一連のネットワーク抽象化レイヤ（ＮＡＬ）単位を備え得る。ＮＡＬ単位の各々は、ＮＡＬ単位ヘッダを含み、ローバイトシーケンスペイロード（ＲＢＳＰ）をカプセル化する。ＮＡＬ単位ヘッダは、ＮＡＬ単位タイプコードを示すシンタックス要素を含み得る。ＮＡＬ単位のＮＡＬ単位ヘッダによって規定されるＮＡＬ単位タイプコードは、ＮＡＬ単位のタイプを示す。ＲＢＳＰは、ＮＡＬ単位内にカプセル化された整数個のバイトを含むシンタックス構造であり得る。幾つかの例では、ＲＢＳＰは０ビットを含む。
【００５３】
[0060]異なるタイプのＮＡＬ単位は、異なるタイプのＲＢＳＰをカプセル化し得る。例えば、第１のタイプのＮＡＬ単位はピクチャパラメータセット（ＰＰＳ）のためのＲＢＳＰをカプセル化することができ、第２のタイプのＮＡＬ単位はコード化されたスライスのためのＲＢＳＰをカプセル化することができ、第３のタイプのＮＡＬ単位はＳＥＩのためのＲＢＳＰをカプセル化することができ、以下同様である。（パラメータセット及びＳＥＩメッセージのためのＲＢＳＰではなく）ビデオコード化データのためのＲＢＳＰをカプセル化するＮＡＬ単位は、ビデオコード化レイヤ（ＶＣＬ）ＮＡＬ単位と呼ばれ得る。
【００５４】
[0061]ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信することができる。加えて、ビデオデコーダ３０は、ビットストリームを解析して、ビットストリームからシンタックス要素を復号することができる。ビデオデコーダ３０は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構成することができる。ビデオデータを再構成するための処理は、全般に、ビデオエンコーダ２０によって実行される処理の逆であり得る。
【００５５】
[0062]例えば、ビデオデコーダ３０は、ＰＵのＭＶを使用して、現在のＣＵのＰＵの予測サンプルブロックを決定することができる。加えて、ビデオデコーダ３０は、現在のＣＵのＴＵと関連付けられる変換係数ブロックを逆量子化することができる。ビデオデコーダ３０は、現在のＣＵのＴＵと関連付けられる変換ブロックを再構成するために、変換係数ブロックに対して逆変換を実行することができる。ビデオデコーダ３０は、現在のＣＵのＰＵの予測サンプルブロックのサンプルを現在のＣＵのＴＵの変換ブロックの対応するサンプルに加算することによって、現在のＣＵのコード化ブロックを再構成することができる。ピクチャの各ＣＵのコード化ブロックを再構成することによって、ビデオデコーダ３０はピクチャを再構成することができる。
【００５６】
[0063]幾つかの例では、ビデオエンコーダ２０及びビデオデコーダ３０は、パレットベースのコード化を実行するように構成され得る。例えば、パレットベースのコード化では、上で説明されたイントラ予測コード化技法又はインター予測コード化技法を実行するのではなく、ビデオエンコーダ２０及びビデオデコーダ３０は、特定の領域（例えば、所与のブロック）のビデオデータを表すための色のテーブルとして、所謂パレットをコード化することができる。各画素は、画素の色を表すパレット中のエントリーと関連付けられ得る。例えば、ビデオエンコーダ２０及びビデオデコーダ３０は、画素値をパレット中の適切な値と関連付けるインデックスをコード化することができる。
【００５７】
[0064]上の例では、ビデオエンコーダ２０は、ブロックのためのパレットを決定すること、各画素の値を表すためのパレット中のエントリーを位置特定すること、及び、画素値をパレットに関連付ける、画素のインデックス値によってパレットを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームから、ブロックのためのパレットと、更にはブロックの画素のインデックス値とを取得することができる。ビデオデコーダ３０は、ブロックの画素値を再構成するために、画素のインデックス値をパレットのエントリーに関連付けることができる。
【００５８】
[0065]パレットベースのコード化は、ある量の信号伝達オーバーヘッドを有し得る。例えば、パレットのサイズのようなパレットの特性、更にはパレット自体を信号伝達するために、幾つかのビットが必要とされ得る。加えて、ブロックの画素のインデックス値を信号伝達するために、幾つかのビットが必要とされ得る。本開示の技法は、幾つかの例では、そのような情報を信号伝達するために必要とされるビットの数を減らすことができる。例えば、本開示で説明される技法は、パレットベースのコード化モードを信号伝達すること、パレットを送信すること、パレットを予測すること、パレットを導出すること、及び、パレットベースのコード化マップと他のシンタックス要素とを送信することの、１つ又は複数の様々な組合せのための技法を含み得る。
【００５９】
[0066]本開示の態様はパレット予測を対象とする。例えば、本開示の態様によれば、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、第１の画素値を示す第１のエントリーを有する第１のパレットを決定することができる。ビデオエンコーダ２０及び／又はビデオデコーダ３０は次いで、第１のパレットの第１のエントリーに基づいて、第２のパレットの第２の画素値を示す１つ又は複数の第２のエントリーを決定することができる。ビデオエンコーダ２０及び／又はビデオデコーダ３０はまた、第２のパレットを使用して、ビデオデータのブロックの画素をコード化することができる。
【００６０】
[0067]第１のエントリーに基づいて第２のパレットの第２のエントリーを決定するとき、ビデオエンコーダ２０は、第２のパレットを再構成するためにビデオデコーダによって使用され得る、様々なシンタックス要素を符号化することができる。例えば、ビデオエンコーダ２０は、パレット全体（又は、別々のパレットを有するビデオデータの各々の色成分、例えば、Ｙ、Ｃｂ、Ｃｒ、又はＹ、Ｕ、Ｖ、又はＲ、Ｇ、Ｂの場合、複数のパレット）が現在コード化されているブロックの１つ又は複数の隣接ブロックからコピーされることを示すように、ビットストリーム中の１つ又は複数のシンタックス要素を符号化することができる。現在のブロックの現在のパレットのエントリーが予測される際に元となる（例えば、コピー元の）パレットは、予測パレットと呼ばれ得る。予測パレットは、空間的に隣接するブロック及び／又はブロックの特定の走査順序で隣接するブロックを含む、１つ又は複数の隣接ブロックからのパレットのエントリーを含み得る。例えば、隣接ブロックは、現在コード化されているブロックの左（左の隣接ブロック）又は上（上の隣接ブロック）に空間的に位置し得る。別の例では、ビデオエンコーダ２０は、現在のブロックの原因となる隣接物の中の最頻のサンプル値を使用して、予測パレットのエントリーを決定することができる。別の例では、隣接ブロックは、ブロックをコード化するために使用される特定の走査順序に従って、現在コード化されているブロックに隣接し得る。即ち、隣接ブロックは、走査順序において現在のブロックの前にコード化される１つ又は複数のブロックであり得る。ビデオエンコーダ２０は、パレットがコピーされる際に元となる隣接ブロックの場所を示すように、１つ又は複数のシンタックス要素を符号化することができる。
【００６１】
[0068]幾つかの例では、パレット予測はエントリーごとに実行され得る。例えば、ビデオエンコーダ２０は、予測パレットの各エントリーに対して、パレットのエントリーが現在のブロックのためのパレットに含まれているかどうかを示すように、１つ又は複数のシンタックス要素を符号化することができる。ビデオエンコーダ２０が現在のブロックのためのパレットのエントリーを予測しない場合、ビデオエンコーダ２０は、予測されないエントリーと、更にはそのようなエントリーの数とを規定するように、１つ又は複数の追加のシンタックス要素を符号化することができる。
【００６２】
[0069]幾つかの例では、パレット全体を予測するための技法は、パレットの１つ又は複数のエントリーを予測するための技法と組み合わされ得る。例えば、ビデオエンコーダ２０は、現在のパレットが予測パレットから完全にコピーされるかどうかを示すように、ビットストリーム中の１つ又は複数のシンタックス要素を符号化することができる。これが当てはまらない場合、ビデオエンコーダ２０は、予測パレット中の各エントリーがコピーされるかどうかを示すように、ビットストリーム中の１つ又は複数のシンタックス要素を符号化することができる。
【００６３】
[0070]別の例では、エントリーの数とパレット値とを信号伝達する代わりに、ビデオエンコーダ２０は、各パレット値を信号伝達した後で、信号伝達されたパレット値がパレットの最後のパレットのエントリーであるかどうかを示すために、フラグを信号伝達することができる。ビデオエンコーダ２０は、パレットがすでにある最大のサイズに達している場合、そのような「パレットの終了」フラグを信号伝達しなくてよい。
【００６４】
[0071]本開示の態様によれば、ビデオエンコーダ２０は、パレット予測が有効にされるかどうか、及び／又はアクティブであるかどうかを示すように、１つ又は複数のシンタックス要素を符号化することができる。例示を目的とする例では、ビデオエンコーダ２０は、各ブロック（例えば、ＣＵ又はＰＵ）に対して、ビデオエンコーダ２０がそれぞれのブロックのためのパレットを予測するためにパレット予測を使用するかどうかを示すように、ｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇを符号化することができる。幾つかの例では、ビデオエンコーダは、各々の色成分に対して別々のフラグ（例えば、各ブロックに対して３つのフラグ）を信号伝達することができる。他の例では、ビデオエンコーダ２０は、ブロックの全ての色成分に適用可能である単一のフラグを信号伝達することができる。
【００６５】
[0072]ビデオデコーダ３０は、符号化されたビットストリームから上で特定された情報を取得し、そのデータを使用してパレットを再構成することができる。例えば、ビデオデコーダ３０は、特定のパレットが別のパレットから予測されるかどうかを示すデータと、更には、ビデオデコーダ３０が適切な予測パレットのエントリーを使用することを可能にする情報とを受信することができる。
【００６６】
[0073]幾つかの例では、追加で、又は代替的に、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、オンザフライで、即ち動的にパレットを構築することができる。例えば、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、コード化の間にエントリーを空のパレットに追加することができる。即ち、ビデオエンコーダ２０は、画素値がブロック中の位置のために生成され送信されるにつれて、画素値をパレットに追加することができる。ブロック中で相対的に後にコード化される画素は、画素値を送信する代わりに、例えばインデックス値を伴う、パレットのより前に追加されたエントリーを参照し得る。同様に、ブロック中のある位置のための新たな画素値を受信すると、ビデオデコーダ３０は、ビデオエンコーダ２０と同じプロセスをたどり、画素値をパレットに含めることができる。このようにして、ビデオデコーダ３０は、ビデオエンコーダ２０と同じパレットを構築する。ビデオデコーダ３０は、パレットにすでに含まれている値を有する画素に対して、その値を特定するインデックス値を受信することができる。ビデオデコーダ３０は、受信された情報、例えばパレットに対する画素値とインデックス値とを使用して、ブロックの画素を再構成することができる。
【００６７】
[0074]幾つかの例では、ビデオエンコーダ２０及びビデオデコーダ３０は、固定されたサイズのパレットを保持し得る。例えば、ビデオエンコーダ２０及びビデオデコーダ３０は、再構成されるような最新の再構成された画素値パレットを追加することができる。パレットに追加される各エントリーについて、最も早くパレットに追加されたエントリーは棄却される。これは、Ｆｉｒｓｔ−ｉｎ−Ｆｉｒｓｔ−ｏｕｔ（ＦＩＦＯ）と呼ばれることがある。パレットを更新するこのプロセスは、パレットモードを使用してコード化されるブロックのみに対して、又は、コード化モードとは無関係に全てのブロックに対して適用され得る。
【００６８】
[0075]上で説明された技法は一般に、ビデオエンコーダ２０及びビデオデコーダ３０がパレットベースのコード化のためのパレットを構築及び／又は送信することに関する。本開示の他の態様は、ビデオエンコーダ２０及び／又はビデオデコーダ３０が画素値を決定することを可能にするマップを構築及び／又は送信することに関する。例えば、本開示の他の態様は、特定の画素をパレットのエントリーに関連付けるインデックスのマップを構築及び／又は送信することに関する。
【００６９】
[0076]幾つかの例では、ビデオエンコーダ２０は、ブロックの画素がパレット中の対応する値を有するかどうかを示し得る。例示を目的とする例において、マップの（ｉ，ｊ）のエントリーがビデオデータのブロック中の（ｉ，ｊ）の画素位置に対応すると仮定する。この例では、ビデオエンコーダ２０は、ブロックの各画素位置に対するフラグを符号化することができる。ビデオエンコーダ２０は、（ｉ，ｊ）の場所における画素値がパレット中の値の１つであることを示すように、（ｉ，ｊ）のエントリーに対して１に等しいフラグを設定することができる。色がパレットに含まれる（即ち、フラグが１に等しい）とき、ビデオエンコーダ２０はまた、パレット中の色を特定する、（ｉ，ｊ）のエントリーに対するパレットインデックスを示すデータを符号化することができる。画素の色がパレットに含まれていない（即ち、フラグが０に等しい）とき、ビデオエンコーダ２０はまた、画素に対するサンプル値を示すデータを符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームから上で説明されたデータを取得し、そのデータを使用して、ブロック中の特定の場所に対するパレットインデックス及び／又は画素値を決定することができる。
【００７０】
[0077]幾つかの例では、所与の位置における画素がマッピングされるパレットインデックスと、隣接画素が同じパレットインデックスにマッピングされる確率との相関であり得る。即ち、画素が特定のパレットインデックスにマッピングされるとき、１つ又は複数の（空間的な場所に関する）隣接画素が同じパレットインデックスにマッピングされる確率は比較的高くなり得る。
【００７１】
[0078]本開示の態様によれば、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、ビデオデータのあるブロックの１つ又は複数のインデックスを、ビデオデータの同じブロックの１つ又は複数のインデックスに対して、決定しコード化することができる。例えば、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、ビデオデータのブロック中の第１の画素と関連付けられる第１のインデックス値を決定するように構成されてよく、第１のインデックス値は、第１の画素の値をパレットのエントリーに関連付ける。ビデオエンコーダ２０及び／又はビデオデコーダ３０はまた、第１のインデックス値に基づいて、ビデオデータのブロック中の１つ又は複数の第２の画素と関連付けられる１つ又は複数の第２のインデックス値を決定し、ビデオデータのブロックの第１の画素と１つ又は複数の第２の画素とをコード化するように構成され得る。従って、この例では、マップのインデックスは、マップの１つ又は複数の他のインデックスに対してコード化され得る。
【００７２】
[0079]幾つかの例では、ビデオエンコーダ２０は、同じインデックス値にマッピングされる所与の走査順序の幾つかの連続する画素を示す１つ又は複数のシンタックス要素を符号化することができる。同様の値のインデックス値の列は、本明細書では「ラン」と呼ばれ得る。幾つかの例では、画素値は、パレット中の丁度１つのインデックス値と関連付けられ得る。従って、幾つかの例では、値のランは、同様の値の画素値の列も指し得る。他の例では、下で非可逆コード化に関して説明されるように、２つ以上の画素値が、パレット中の同じインデックス値にマッピングされ得る。そのような例では、値のランは、同様の値のインデックス値を指す。
【００７３】
[0080]例示を目的とする例では、所与の走査順序の２つの連続するインデックスが異なる値を有する場合、ランは０に等しい。所与の走査順序の２つの連続するインデックスが同じ値を有するが、その走査順序の３番目のインデックスが異なる値を有する場合、ランは１に等しい。ビデオデコーダ３０は、符号化されたビットストリームからランを示すシンタックス要素を取得し、そのデータを使用して、同じインデックス値を有する連続する画素の場所の数を決定することができる。
【００７４】
[0081]追加で、又は代替的に、本開示の態様によれば、ビデオエンコーダ２０及びビデオデコーダ３０は、マップの１つ又は複数のエントリーに対して線のコピーを実行することができる。エントリーはまた、マップのエントリーとブロックの画素位置との関係により、「位置」とも呼ばれ得る。線のコピーは、幾つかの例では、走査方向に依存し得る。例えば、ビデオエンコーダ２０は、ブロック中の特定の位置に対する画素値又はインデックスマップ値が、（水平方向の走査では）その特定の位置の上の線における、又は（垂直方向の走査では）その特定の位置の左の列における、画素値又はインデックス値に等しいことを示し得る。ビデオエンコーダ２０はまた、特定の位置の上の対応する画素値又はインデックス、若しくは特定の位置の左の列に等しい、走査順序の中の画素値又はインデックスの数を、ランとして示すことができる。この例では、ビデオエンコーダ２０及び又はビデオデコーダ３０は、規定された隣接する線から、及び、現在コード化されているブロックの線に対する規定された数のエントリーから、画素値又はインデックス値をコピーすることができる。
【００７５】
[0082]幾つかの例では、値のコピー元の線は、現在コード化されている位置の線に直接隣接していてよく、例えばその線の上又は左にあってよい。他の例では、ブロックのある数の線が、ビデオエンコーダ２０及び／又はビデオデコーダ３０によってバッファリングされ得るので、マップのその数の線のいずれかが、現在コード化されているマップの線のための予測値として使用され得る。例示を目的とする例では、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、画素の現在の行をコード化する前に、インデックス又は画素値の以前の４つの行を記憶するように構成され得る。この例では、予測行（インデックス又は画素値のコピー元の行）は、切り捨てられた単項コード（truncated unary code）又は単項コードのような他のコードによって、ビットストリームにおいて示され得る。切り捨てられた単項コードに関して、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、最大の行の計算値（例えば、ｒｏｗ＿ｉｎｄｅｘ−１）又は最大の列の計算値（例えば、ｃｏｌｕｍｎ＿ｉｎｄｅｘ−１）に基づいて、切り捨てられた単項コードの最大値を決定することができる。加えて、コピーされる予測行からの位置の数の指示も、ビットストリームに含まれ得る。幾つかの例では、現在の位置の予測元の線又は列が別のブロック（例えば、ＣＵまたＣＴＵ）に属する場合、そのような予測は無効にされ得る。
【００７６】
[0083]本開示の態様によれば、エントリーの所謂ランをコード化するための技法が、上で説明された線のコピーのための技法とともに使用され得る。例えば、ビデオエンコーダ２０は、マップ中のエントリーの値がパレットから取得されるかどうか、又は、マップ中のエントリーの値がマップ中の以前にコード化された線から取得されるかどうかを示す、１つ又は複数のシンタックス要素（例えば、フラグ）を符号化することができる。ビデオエンコーダ２０はまた、パレットのインデックス値又は線（行又は列）の中のエントリーの場所を示す１つ又は複数のシンタックス要素を符号化することができる。ビデオエンコーダ２０はまた、同じ値を共有する幾つかの連続するエントリーを示す１つ又は複数のシンタックス要素を符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームからそのような情報を取得し、その情報を使用して、ブロックに対するマップと画素値とを再構成することができる。
【００７７】
[0084]上で述べられたように、マップのインデックスは特定の順序で走査される。本開示の態様によれば、走査方向は、垂直方向、水平方向、又は対角方向（例えば、ブロックにおいて対角方向に４５度又は１３５度）であり得る。幾つかの例では、ビデオエンコーダ２０は、ブロックのインデックスを走査するための走査方向を示す、各ブロックに対する１つ又は複数のシンタックス要素を符号化することができる。加えて、又は代替的に、走査方向は、例えばブロックサイズ、色空間、及び／又は色成分のような所謂サイド情報に基づいて信号伝達又は推測され得る。ビデオエンコーダ２０は、ブロックの各々の色成分に対する走査を規定することができる。代替的に、規定された走査は、ブロックの全ての色成分に適用され得る。
【００７８】
[0085]本開示の技法はまた、パレットベースのコード化の他の態様を含む。例えば、本開示の態様によれば、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、パレットコード化モードを使用してブロックがコード化されることを示すように、各ブロックに対する１つ又は複数のシンタックス要素をコード化することができる。例えば、ビデオエンコーダ２０及び／又はビデオデコーダ３０が、パレットベースのコード化モードが特定のブロックをコード化するために使用されるべきかどうかを示すように、パレットモードフラグ（ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇ）をコード化することができる。この例では、ビデオエンコーダ２０は、現在符号化されているブロック（「現在のブロック」）がパレットモードを使用して符号化されることを規定するために、１に等しいＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇを符号化することができる。０に等しいＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇの値は、現在のブロックがパレットモードを使用して符号化されないことを規定する。この場合、ビデオデコーダ３０は、符号化されたビットストリームからＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇを取得し、パレットベースのコード化モードを適用してブロックを復号することができる。２つ以上の利用可能なパレットベースのコード化モードがある（例えば、コード化のために利用可能な２つ以上のパレットベースの技法がある）例では、１つ又は複数のシンタックス要素は、ブロックのために複数の異なるパレットモードの１つを示すことができる。
【００７９】
[0086]幾つかの例では、ビデオエンコーダ２０は、現在のブロックがパレットモードを使用して符号化されないことを規定するために、０に等しいＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇを符号化することができる。そのような例では、ビデオエンコーダ２０は、様々なインター予測モード、イントラ予測モード、又は他のコード化モードのいずれかを使用して、ブロックを符号化することができる。ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇが０に等しいとき、ビデオエンコーダ２０は、それぞれのブロックを符号化するために使用される特定のモードを示すために、追加の情報（例えば、シンタックス要素）を送信することができる。幾つかの例では、下で説明されるように、モードはＨＥＶＣコード化モードであり得る。ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇの使用が、例を目的に説明される。他の例では、マルチビットコードのような他のシンタックス要素が、パレットベースのコード化モードが１つ又は複数のブロックのために使用されるべきかどうかを示すために、又は、複数のモードのいずれが使用されるべきかを示すために、使用され得る。
【００８０】
[0087]パレットベースのコード化モードが使用されるとき、パレットは、例えば、本明細書で説明される技法の１つ又は複数を使用して、ビデオデコーダ３０による使用のために、符号化されたビデオデータビットストリームの中で、ビデオエンコーダ２０によって送信される。パレットは、各ブロックに対して送信されてよく、又は幾つかのブロックの間で共有されてよい。パレットは、ブロックについて支配的な、及び／又はブロックを表現する、幾つかの画素値を指し得る。
【００８１】
[0088]本開示の態様によれば、例えば、パレットに含まれる画素値の数によるパレットのサイズは、固定されていてよく、又は、符号化されたビットストリーム中の１つ又は複数のシンタックス要素を使用して信号伝達されてよい。下でより詳細に説明されるように、画素値は、例えばコード化のために使用される色空間に応じて、幾つかのサンプルから構成され得る。例えば、画素値は、ルーマサンプルとクロミナンスサンプル（例えば、ルーマ、Ｕクロミナンス及びＶクロミナンス（ＹＵＶ）サンプル、又は、ルーマ、Ｃｂクロミナンス、及びＣｒクロミナンス（ＹＣｂＣｒ）サンプル）とを含み得る。別の例では、画素値は、赤、緑、及び青（ＲＧＢ）のサンプルを含み得る。本明細書で説明されるように、画素値という用語は一般に、画素に寄与するサンプルの１つ又は複数を指し得る。即ち、画素値という用語は、画素に寄与する全てのサンプルを必ずしも指すとは限らず、画素に寄与する単一のサンプル値を記述するために使用され得る。
【００８２】
[0089]本開示の態様によれば、パレットは、特定のブロックの各々の色成分に対して別々に送信され得る。例えば、ＹＵＶ色空間では、Ｙ成分（Ｙ値を表す）に対するパレット、Ｕ成分（Ｕ値を表す）に対する別のパレット、及びＶ成分（Ｖ値を表す）に対する更に別のパレットがあってよい。別の例では、パレットは、特定のブロックの全ての成分を含み得る。この例では、パレット中のｉ番目のエントリーは３つの値（例えば、Ｙｉ、Ｕｉ、Ｖｉ）を含み得る。本開示の態様によれば、１つ又は複数のシンタックス要素は、各成分（例えば、Ｙ、Ｕ、Ｖなど）に対するパレットのサイズを別々に示し得る。他の例では、１つ又は複数のシンタックス要素が全ての成分のサイズを示すように、全ての成分に対して単一のサイズが使用され得る。
【００８３】
[0090]本開示の態様によれば、ビデオエンコーダ２０及び／又はビデオデコーダは、非可逆又は可逆の方式で、パレットベースのコード化を実行することができる。即ち、幾つかの例では、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、ブロックの画素値と一致するパレットのエントリーを使用して（又は、画素値がパレットの中に含まれていない場合、実際の画素値を送ることによって）、ブロックのためのビデオデータを可逆でコード化することができる。他の例では、下で図５に関してより詳細に説明されるように、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、ブロックの画素値と厳密に一致しないパレットのエントリーを使用して、ブロックのためのビデオデータをコード化することができる（非可逆コード化）。
【００８４】
[0091]幾つかの例では、ビデオデータのパレットベースのコード化のための技法は、インター予測コード化又はイントラ予測コード化のための技法のような、１つ又は複数の他のコード化技法とともに使用され得る。例えば、下でより詳細に説明されるように、エンコーダ又はデコーダ、又は組み合わされたエンコーダ−デコーダ（コーデック）は、インター予測コード化及びイントラ予測コード化と、更にはパレットベースのコード化とを実行するように構成され得る。
【００８５】
[0092]図２は、本開示の技法を実装し得る例示的なビデオエンコーダ２０を示すブロック図である。図２は、説明のために提供されるものであり、本開示で広く例示され説明される技法を限定するものと見なされるべきではない。説明の目的で、本開示は、ＨＥＶＣコード化の状況においてビデオエンコーダ２０を説明する。しかしながら、本開示の技法は、他のコード化規格又は方法に適用可能であり得る。
【００８６】
[0093]ビデオエンコーダ２０は、本開示で説明される様々な例に従ってパレットベースのビデオコード化のための技法を実行するように構成され得る、機器の例を代表する。例えば、ビデオエンコーダ２０は、パレットベースのコード化と非パレットベースのコード化のいずれかを使用して、ＨＥＶＣコード化におけるＣＵ又はＰＵのような、ビデオデータの様々なブロックを選択的にコード化するように構成され得る。非パレットベースのコード化モードは、ＨＥＶＣドラフト１０によって規定される様々なコード化モードのような、様々なインター予測時間コード化モード又はイントラ予測空間コード化モードを指し得る。ビデオエンコーダ２０は、一例では、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくとも幾つかの位置の画素値を表すためにパレット中の画素値を選択し、ビデオデータのブロックの位置の少なくとも幾つかを選択された画素値にそれぞれ対応するパレット中のエントリーと関連付ける情報を信号伝達するように構成され得る。信号伝達された情報は、ビデオデータを復号するためにビデオデコーダ３０によって使用され得る。
【００８７】
[0094]図２の例では、ビデオエンコーダ２０は、予測処理ユニット１００と、残差生成ユニット１０２と、変換処理ユニット１０４と、量子化ユニット１０６と、逆量子化ユニット１０８と、逆変換処理ユニット１１０と、再構成ユニット１１２と、フィルタユニット１１４と、復号ピクチャバッファ１１６と、エントロピー符号化ユニット１１８とを含む。予測処理ユニット１００は、インター予測処理ユニット１２０と、イントラ予測処理ユニット１２６とを含む。インター予測処理ユニット１２０は、動き推定ユニットと、動き補償ユニット（図示されず）とを含む。ビデオエンコーダ２０はまた、本開示で説明されるパレットベースのコード化技法の様々な態様を実行するように構成される、パレットベースの符号化ユニット１２２を含む。他の例では、ビデオエンコーダ２０は、より多数の、より少数の、又は異なる機能コンポーネントを含み得る。
【００８８】
[0095]ビデオエンコーダ２０はビデオデータを受信することができる。ビデオエンコーダ２０はビデオデータのピクチャのスライス中の各ＣＴＵを符号化することができる。ＣＴＵの各々は、等しいサイズのルーマコード化ツリーブロック（ＣＴＢ）と、ピクチャの対応するＣＴＢとに関連付けられ得る。ＣＴＵを符号化することの一部として、予測処理ユニット１００は、４分木区分を実行して、ＣＴＵのＣＴＢを徐々により小さいブロックに分割することができる。より小さいブロックはＣＵのコード化ブロックであり得る。例えば、予測処理ユニット１００は、ＣＴＵと関連付けられたＣＴＢを４つの等しいサイズのサブブロックに区分し、サブブロックの１つ又は複数を、４つの等しいサイズのサブサブブロックに区分することができ、以下同様である。
【００８９】
[0096]ビデオエンコーダ２０は、ＣＴＵのＣＵを符号化して、ＣＵの符号化された表現（即ち、コード化されたＣＵ）を生成することができる。ＣＵを符号化することの一部として、予測処理ユニット１００は、ＣＵの１つ又は複数のＰＵの間でＣＵと関連付けられたコード化ブロックを区分することができる。従って、各ＰＵは、ルーマ予測ブロックと、対応するクロマ予測ブロックとに関連付けられ得る。ビデオエンコーダ２０及びビデオデコーダ３０は、様々なサイズを有するＰＵをサポートし得る。上で示されたように、ＣＵのサイズはＣＵのルーマコード化ブロックのサイズを指すことがあり、ＰＵのサイズはＰＵのルーマ予測ブロックのサイズを指すことがある。特定のＣＵのサイズを２Ｎ×２Ｎと仮定すると、ビデオエンコーダ２０及びビデオデコーダ３０は、イントラ予測の場合は２Ｎ×２Ｎ又はＮ×ＮのＰＵサイズをサポートすることができ、インター予測の場合は２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、又は同様の対称のＰＵサイズをサポートすることができる。ビデオエンコーダ２０及びビデオデコーダ３０はまた、インター予測のために、２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、及びｎＲ×２ＮのＰＵサイズに対する非対称区分化をサポートすることができる。
【００９０】
[0097]インター予測処理ユニット１２０は、ＣＵの各ＰＵに対してインター予測を実行することによってＰＵの予測データを生成することができる。ＰＵの予測データは、ＰＵの予測サンプルブロックと、ＰＵの動き情報とを含み得る。インター予測ユニット１２１は、ＰＵがＩスライス中にあるか、Ｐスライス中にあるか、Ｂスライス中にあるかに応じて、ＣＵのＰＵに対して異なる動作を実行することができる。Ｉスライス中では、全てのＰＵがイントラ予測される。従って、ＰＵがＩスライス中にある場合、インター予測ユニット１２１は、ＰＵに対してインター予測を実行しない。従って、Ｉモードで符号化されるブロックでは、予測されるブロックは、同じフレーム内の以前に符号化された隣接ブロックからの空間的予測を使用して形成される。
【００９１】
[0098]ＰＵがＰスライス中にある場合、インター予測処理ユニット１２０の動き推定ユニットは、ＰＵの参照領域について参照ピクチャリスト（例えば、「ＲｅｆＰｉｃＬｉｓｔ０」）中の参照ピクチャを探索することができる。ＰＵの参照領域は、ＰＵのサンプルブロックに最も密接に対応するサンプルブロックを含む参照ピクチャ内の領域であり得る。動き推定ユニットは、ＰＵの参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０中での位置を示す参照インデックスを生成することができる。加えて、動き推定ユニットは、ＰＵのコード化ブロックと、参照領域と関連付けられた参照場所との間の空間変位を示すＭＶを生成することができる。例えば、ＭＶは、現在の復号されたピクチャ中の座標から参照ピクチャ中の座標までのオフセットを提供する２次元ベクトルであり得る。動き推定ユニットは、ＰＵの動き情報として、参照インデックスとＭＶとを出力することができる。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照場所における実際の又は補間されたサンプルに基づいて、ＰＵの予測サンプルブロックを生成することができる。
【００９２】
[0099]ＰＵがＢスライス中にある場合、動き推定ユニットは、ＰＵについての単予測又は双予測を実行することができる。ＰＵについての単予測を実行するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０又は第２の参照ピクチャリスト（「ＲｅｆＰｉｃＬｉｓｔ１」）の参照ピクチャを探索することができる。動き推定ユニットは、ＰＵの動き情報として、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０又はＲｅｆＰｉｃＬｉｓｔ１中の位置を示す参照インデックスと、ＰＵのサンプルブロックと参照領域と関連付けられた参照場所との間の空間変位を示すＭＶと、参照ピクチャがＲｅｆＰｉｃＬｉｓｔ０中にあるかＲｅｆＰｉｃＬｉｓｔ１中にあるかを示す１つ又は複数の予測方向インジケータとを出力することができる。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照領域における実際の又は補間されたサンプルに少なくとも一部基づいて、ＰＵの予測サンプルブロックを生成することができる。
【００９３】
[0100]ＰＵについての双方向インター予測を実行するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０中の参照ピクチャを探索することができ、またＰＵの別の参照領域についてＲｅｆＰｉｃＬｉｓｔ１中の参照ピクチャを探索することができる。動き推定ユニットは、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０及びＲｅｆＰｉｃＬｉｓｔ１中での位置を示す参照ピクチャインデックスを生成することができる。加えて、動き推定ユニットは、参照領域と関連付けられる参照場所とＰＵのサンプルブロックとの間の空間変位を示すＭＶを生成することができる。ＰＵの動き情報は、ＰＵの参照インデックスとＭＶとを含み得る。動き補償ユニットは、ＰＵの動きベクトルによって示される参照領域における実際のサンプル又は補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測サンプルブロックを生成することができる。
【００９４】
[0101]本開示の技法によれば、ビデオエンコーダ２０は、パレットベースのコード化を実行するように構成され得る。ＨＥＶＣフレームワークに関して、例として、パレットベースのコード化技法は、コード化単位（ＣＵ）モードとして使用されるように構成され得る。他の例では、パレットベースのコード化技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。従って、ＣＵの状況において（本開示全体で）本明細書で説明される開示されるプロセスの全てが、追加で、又は代替的に、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのコード化技法の制約又は制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格又はまだ開発されていないシステム／規格とは独立に、又はそれらの一部として機能するように適用され得るからである。これらの場合、パレットコード化のための単位は、正方形のブロック、長方形のブロック、又は非長方形の領域であってもよい。
【００９５】
[0102]パレットベースの符号化ユニット１２２は、例えば、パレットベースの符号化モードが例えばＣＵ又はＰＵのために選択されるとき、パレットベースの復号を実行することができる。例えば、パレットベースの符号化ユニット１２２は、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくとも幾つかの位置の画素値を表すためにパレット中の画素値を選択し、ビデオデータのブロックの位置の少なくとも幾つかを選択された画素値にそれぞれ対応するパレット中のエントリーと関連付ける情報を信号伝達するように構成することができる。様々な機能がパレットベースの符号化ユニット１２２によって実行されるものとして説明されるが、そのような機能の幾つか又は全ては、他の処理ユニット、又は異なる処理ユニットの組合せによって実行され得る。
【００９６】
[0103]パレットベースの符号化ユニット１２２は、本明細書で説明される様々なシンタックス要素のいずれをも生成するように構成され得る。従って、ビデオエンコーダ２０は、本開示で説明されるようなパレットベースのコードモードを使用して、ビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダ２０は、パレットコード化モードを使用してビデオデータのブロックを選択的に符号化し、又は、例えばＨＥＶＣインター予測コード化モード又はイントラ予測コード化モードのような異なるモードを使用してビデオデータのブロックを符号化することができる。ビデオデータのブロックは、例えば、ＨＥＶＣコード化プロセスに従って生成されるＣＵ又はＰＵであり得る。ビデオエンコーダ２０は、インター予測時間予測コード化モード又はイントラ予測空間コード化モードによって幾つかのブロックを符号化し、パレットベースのコード化モードによって他のブロックを復号することができる。
【００９７】
[0104]イントラ予測処理ユニット１２６は、ＰＵに対してイントラ予測を実行することによって、ＰＵの予測データを生成することができる。ＰＵの予測データは、ＰＵの予測サンプルブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット１２６は、Ｉスライス、Ｐスライス、及びＢスライス中のＰＵに対してイントラ予測を実行することができる。
【００９８】
[0105]ＰＵに対してイントラ予測を実行するために、イントラ予測処理ユニット１２６は、複数のイントラ予測モードを使用して、ＰＵの予測データの複数のセットを生成することができる。イントラ予測モードを使用してＰＵの予測データのセットを生成するために、イントラ予測処理ユニット１２６は、そのイントラ予測モードと関連付けられた方向へ、ＰＵのサンプルブロック全体にわたって、隣接ＰＵのサンプルブロックからのサンプルを延ばすことができる。隣接ＰＵは、ＰＵ、ＣＵ、及びＣＴＵについて左から右、上から下の符号化順序を仮定すると、ＰＵの上、右上、左上、又は左にあり得る。イントラ予測処理ユニット１２６は、様々な数のイントラ予測モード、例えば３３個の方向のイントラ予測モードを使用することができる。幾つかの例では、イントラ予測モードの数はＰＵと関連付けられた領域のサイズに依存し得る。
【００９９】
[0106]予測処理ユニット１００は、ＰＵのためにインター予測処理ユニット１２０によって生成された予測データ、又はＰＵのためにイントラ予測処理ユニット１２６によって生成された予測データの中から、ＣＵのＰＵの予測データを選択することができる。幾つかの例では、予測処理ユニット１００は、予測データのセットのレート／歪みの尺度に基づいて、ＣＵのＰＵの予測データを選択する。選択された予測データの予測サンプルブロックは、本明細書では、選択された予測サンプルブロックと呼ばれ得る。
【０１００】
[0107]残差生成ユニット１０２は、ＣＵのルーマコード化ブロック、Ｃｂコード化ブロック、及びＣｒコード化ブロック、並びにＣＵのＰＵの選択された予測ルーマブロック、予測Ｃｂブロック、及び予測Ｃｒブロックに基づいて、ＣＵのルーマ残差ブロックと、Ｃｂ残差ブロックと、Ｃｒ残差ブロックとを生成することができる。例えば、残差生成ユニット１０２は、残差ブロック中の各サンプルがＣＵのコード化ブロック中のサンプルとＣＵのＰＵの対応する選択された予測サンプルブロック中の対応するサンプルとの間の差に等しい値を有するように、ＣＵの残差ブロックを生成することができる。
【０１０１】
[0108]変換処理ユニット１０４は、４分木区分を実行して、ＣＵと関連付けられた残差ブロックをＣＵのＴＵと関連付けられた変換ブロックに区分することができる。従って、ＴＵは、ルーマ変換ブロック及び２つのクロマ変換ブロックと関連付けられ得る。ＣＵのＴＵのルーマ変換ブロック及びクロマ変換ブロックのサイズ及び位置は、ＣＵのＰＵの予測ブロックのサイズ及び位置に基づくことも基づかないこともある。「残差４分木」（ＲＱＴ）として知られる４分木構造は、各領域と関連付けられたノードを含み得る。ＣＵのＴＵは、ＲＱＴのリーフノードに対応し得る。
【０１０２】
[0109]変換処理ユニット１０４は、ＴＵの変換ブロックに１つ又は複数の変換を適用することによって、ＣＵの各ＴＵに対して変換係数ブロックを生成することができる。変換処理ユニット１０４は、ＴＵと関連付けられた変換ブロックに様々な変換を適用することができる。例えば、変換処理ユニット１０４は、離散コサイン変換（ＤＣＴ）、方向性変換、又は概念的に同様の変換を変換ブロックに適用することができる。幾つかの例において、変換処理ユニット１０４は変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われ得る。
【０１０３】
[0110]量子化ユニット１０６は、係数ブロック中の変換係数を量子化することができる。量子化プロセスは、変換係数の幾つか又は全てと関連付けられたビット深度を低減することができる。例えば、ｎビット変換係数は量子化の間にｍビットの変換係数に切り捨てられてよく、ただし、ｎはｍよりも大きい。量子化ユニット１０６は、ＣＵと関連付けられた量子化パラメータ（ＱＰ）値に基づいて、ＣＵのＴＵと関連付けられた係数ブロックを量子化することができる。ビデオエンコーダ２０は、ＣＵと関連付けられたＱＰ値を調整することによって、ＣＵと関連付けられた係数ブロックに適用される量子化の程度を調整することができる。量子化は情報の損失をもたらすことがあり、従って、量子化された変換係数は、元の係数よりも低い精度を有することがある。
【０１０４】
[0111]逆量子化ユニット１０８及び逆変換処理ユニット１１０は、それぞれ、係数ブロックに逆量子化と逆変換とを適用して、係数ブロックから残差ブロックを再構成することができる。再構成ユニット１１２は、再構成された残差ブロックを、予測処理ユニット１００によって生成された１つ又は複数の予測サンプルブロックからの対応するサンプルに追加して、ＴＵと関連付けられる再構成された変換ブロックを生成することができる。ビデオエンコーダ２０は、このようにＣＵの各ＴＵのための変換ブロックを再構成することによって、ＣＵのコード化ブロックを再構成することができる。
【０１０５】
[0112]フィルタユニット１１４は、１つ又は複数のデブロッキング動作を実行して、ＣＵと関連付けられたコード化ブロック中のブロック歪み（blocking artifacts）を低減することができる。復号ピクチャバッファ１１６は、フィルタユニット１１４が、再構成されたコード化ブロックに対して１つ又は複数のデブロッキング動作を実行した後、再構成されたコード化ブロックを記憶することができる。インター予測処理ユニット１２０は、再構成されたコード化ブロックを含んでいる参照ピクチャを使用して、他のピクチャのＰＵに対してインター予測を実行することができる。加えて、イントラ予測処理ユニット１２６は、復号ピクチャバッファ１１６中の再構成されたコード化ブロックを使用して、ＣＵと同じピクチャ中の他のＰＵに対してイントラ予測を実行することができる。
【０１０６】
[0113]エントロピー符号化ユニット１１８は、ビデオエンコーダ２０の他の機能コンポーネントからデータを受け取ることができる。例えば、エントロピー符号化ユニット１１８は、量子化ユニット１０６から係数ブロックを受け取ることができ、予測処理ユニット１００からシンタックス要素を受け取ることができる。エントロピー符号化ユニット１１８は、このデータに対して１つ又は複数のエントロピー符号化演算を実行して、エントロピー符号化されたデータを生成することができる。例えば、エントロピー符号化ユニット１１８は、コンテキスト適応型可変長コード化（ＣＡＶＬＣ）演算、ＣＡＢＡＣ演算、変数−変数（Ｖ２Ｖ：variable-to-variable）レングスコード化演算、シンタックスベースコンテキスト適応型バイナリ算術コード化（ＳＢＡＣ：syntax-based context-adaptive binary arithmetic coding）演算、確率間隔区分エントロピー（ＰＩＰＥ：Probability Interval Partitioning Entropy）コード化演算、指数ゴロム符号化演算、又は別のタイプのエントロピー符号化演算をデータに対して実行することができる。ビデオエンコーダ２０は、エントロピー符号化ユニット１１８によって生成されたエントロピー符号化されたデータを含むビットストリームを出力することができる。例えば、ビットストリームはＣＵのＲＱＴを表すデータを含み得る。
【０１０７】
[0114]幾つかの例では、残差コード化はパレットコード化とともに実行されない。従って、ビデオエンコーダ２０は、パレットコード化モードを使用してコード化するとき、変換又は量子化を実行しなくてよい。加えて、ビデオエンコーダ２０は、残差データとは別に、パレットコード化モードを使用して生成されたデータをエントロピー符号化することができる。
【０１０８】
[0115]図３は、本開示の技法を実装するように構成された例示的なビデオデコーダ３０を示すブロック図である。図３は、説明のために提供されるものであり、本開示において広く例示され説明される技法を限定するものではない。説明の目的で、本開示は、ＨＥＶＣコード化の状況においてビデオデコーダ３０を説明する。しかしながら、本開示の技法は、他のコード化規格又は方法に適用可能であり得る。
【０１０９】
[0116]ビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースのビデオコード化のための技法を実行するように構成され得る、機器の例を代表する。例えば、ビデオデコーダ３０は、パレットベースのコード化と非パレットベースのコード化のいずれかを使用して、ＨＥＶＣコード化におけるＣＵ又はＰＵのような、ビデオデータの様々なブロックを選択的に復号するように構成され得る。非パレットベースのコード化モードは、ＨＥＶＣドラフト１０によって規定される様々なコード化モードのような、様々なインター予測時間コード化モード又はイントラ予測空間コード化モードを指し得る。ビデオデコーダ３０は、一例では、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくとも幾つかの位置をパレット中のエントリーと関連付ける情報を受信し、情報に基づいてパレット中の画素値を選択し、選択された画素値に基づいてブロックの画素値を再構成するように構成され得る。
【０１１０】
[0117]図３の例では、ビデオデコーダ３０は、エントロピー復号ユニット１５０と、予測処理ユニット１５２と、逆量子化ユニット１５４と、逆変換処理ユニット１５６と、再構成ユニット１５８と、フィルタユニット１６０と、復号ピクチャバッファ１６２とを含む。予測処理ユニット１５２は、動き補償ユニット１６４とイントラ予測処理ユニット１６６とを含む。ビデオデコーダ３０はまた、本開示で説明されるパレットベースのコード化技法の様々な態様を実行するように構成される、パレットベースの復号ユニット１６５を含む。他の例では、ビデオデコーダ３０は、より多数の、より少数の、又は異なる機能コンポーネントを含み得る。
【０１１１】
[0118]コード化されたピクチャのバッファ（ＣＰＢ）は、ビットストリームの符号化されたビデオデータ（例えば、ＮＡＬ単位）を受け取り、記憶することができる。エントロピー復号ユニット１５０は、ＣＰＢから符号化されたビデオデータ（例えば、ＮＡＬ単位）を受け取り、ＮＡＬ単位を解析してシンタックス要素を復号することができる。エントロピー復号ユニット１５０は、ＮＡＬ単位中のエントロピー符号化されたシンタックス要素をエントロピー復号することができる。予測処理ユニット１５２、逆量子化ユニット１５４、逆変換処理ユニット１５６、再構成ユニット１５８、及びフィルタユニット１６０は、ビットストリームから抽出されたシンタックス要素に基づいて、復号されたビデオデータを生成することができる。
【０１１２】
[0119]ビットストリームのＮＡＬ単位は、コード化されたスライスＮＡＬ単位を含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット１５０は、コード化されたスライスＮＡＬ単位からシンタックス要素を抽出し、エントロピー復号することができる。コード化されたスライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。スライスヘッダ中のシンタックス要素は、スライスを含むピクチャと関連付けられたＰＰＳを識別するシンタックス要素を含み得る。
【０１１３】
[0120]ビデオデコーダ３０は、ビットストリームからのシンタックス要素を復号することに加えて、区分されていないＣＵに対して再構成動作を実行することができる。区分されていないＣＵに対して再構成動作を実行するために、ビデオデコーダ３０は、ＣＵの各ＴＵに対して再構成動作を実行することができる。ＣＵの各ＴＵに対して再構成動作を実行することによって、ビデオデコーダ３０はＣＵの残差ブロックを再構成することができる。
【０１１４】
[0121]ＣＵのＴＵに対して再構成動作を実行することの一部として、逆量子化ユニット１５４は、ＴＵと関連付けられた係数ブロックを逆の量子化（inverse quantize）、即ち逆量子化（de-quantize）することができる。逆量子化ユニット１５４は、ＴＵのＣＵと関連付けられたＱＰの値を使用して、量子化の程度を決定することができ、同様に、逆量子化ユニット１５４が適用すべき逆量子化の程度を決定することができる。つまり、圧縮比、即ち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるＱＰの値を調整することによって制御され得る。圧縮比はまた、採用されるエントロピーコード化の方法に依存し得る。
【０１１５】
[0122]逆量子化ユニット１５４が係数ブロックを逆量子化した後、逆変換処理ユニット１５６は、ＴＵと関連付けられた残差ブロックを生成するために、係数ブロックに１つ又は複数の逆変換を適用することができる。例えば、逆変換処理ユニット１５６は、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ）、逆回転変換、逆方向性変換、又は別の逆変換を、係数ブロックに適用することができる。
【０１１６】
[0123]イントラ予測を使用してＰＵが符号化される場合、イントラ予測処理ユニット１６６は、イントラ予測を実行して、ＰＵの予測ブロックを生成することができる。イントラ予測処理ユニット１６６は、イントラ予測モードを使用して、空間的に隣接するＰＵの予測ブロックに基づいて、ＰＵの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成することができる。イントラ予測処理ユニット１６６は、ビットストリームから復号された１つ又は複数のシンタックス要素に基づいて、ＰＵのイントラ予測モードを決定することができる。
【０１１７】
[0124]予測処理ユニット１５２は、ビットストリームから抽出されたシンタックス要素に基づいて、第１の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ０）と第２の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ１）とを構築することができる。更に、ＰＵがインター予測を使用して符号化される場合、エントロピー復号ユニット１５０は、ＰＵの動き情報を抽出することができる。動き補償ユニット１６４は、ＰＵの動き情報に基づいて、ＰＵのための１つ又は複数の参照領域を決定することができる。動き補償ユニット１６４は、ＰＵの１つ又は複数の参照ブロックにおけるサンプルブロックに基づいて、ＰＵの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成することができる。
【０１１８】
[0125]再構成ユニット１５８は、ＣＵのＴＵと関連付けられたルーマ変換ブロック、Ｃｂ変換ブロック、及びＣｒ変換ブロック、ならびにＣＵのＰＵの予測ルーマブロック、予測Ｃｂブロック、及び予測Ｃｒブロックを、即ち、イントラ予測データ又はインター予測データのいずれかを適宜使用して、ＣＵのルーマコード化ブロックと、Ｃｂコード化ブロックと、Ｃｒコード化ブロックとを再構成することができる。例えば、再構成ユニット１５８は、ルーマ変換ブロック、Ｃｂ変換ブロック、及びＣｒ変換ブロックのサンプルを予測ルーマブロック、予測Ｃｂブロック、及び予測Ｃｒブロックの対応するサンプルに加算して、ＣＵのルーマコード化ブロックと、Ｃｂコード化ブロックと、Ｃｒコード化ブロックとを再構成することができる。
【０１１９】
[0126]フィルタユニット１６０は、デブロッキング動作を実行して、ＣＵのルーマコード化ブロック、Ｃｂコード化ブロック、及びＣｒコード化ブロックと関連付けられたブロック歪みを低減することができる。ビデオデコーダ３０は、ＣＵのルーマコード化ブロックと、Ｃｂコード化ブロックと、Ｃｒコード化ブロックとを、復号ピクチャバッファ１６２に記憶することができる。復号ピクチャバッファ１６２は、後続の動き補償、イントラ予測、及び図１の表示装置３２のような表示装置上での提示のために、参照ピクチャを提供することができる。例えば、ビデオデコーダ３０は、復号ピクチャバッファ１６２中のルーマブロック、Ｃｂブロック、及びＣｒブロックに基づいて、他のＣＵのＰＵに対してイントラ予測演算又はインター予測演算を実行することができる。このようにして、ビデオデコーダ３０は、有意なルーマ係数ブロック（significant luma coefficient block）の変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換係数レベルに変換を適用して変換ブロックを生成し、変換ブロックに少なくとも部分的に基づいてコード化ブロックを生成し、コード化ブロックを表示のために出力することができる。
【０１２０】
[0127]本開示の様々な例によれば、ビデオデコーダ３０は、パレットベースのコード化を実行するように構成され得る。パレットベースの復号ユニット１６５は、例えば、パレットベースの復号モードが例えばＣＵ又はＰＵのために選択されるとき、パレットベースの復号を実行することができる。例えば、パレットベースの復号ユニット１６５は、画素値を示すエントリーを有するパレットを生成し、ビデオデータのブロックの少なくとも幾つかの位置をパレット中のエントリーと関連付ける情報を受信し、情報に基づいてパレット中の画素値を選択し、選択された画素値に基づいてブロックの画素値を再構成するように構成することができる。様々な機能がパレットベースの復号ユニット１６５によって実行されるものとして説明されるが、そのような機能の幾つか又は全ては、他の処理ユニット、又は異なる処理ユニットの組合せによって実行され得る。
【０１２１】
[0128]パレットベースの復号ユニット１６５は、パレットコード化モード情報を受け取り、パレットコード化モードがブロックに適用されることをパレットコード化モード情報が示すとき、上の動作を実行することができる。パレットコード化モードがブロックに適用されないことをパレットコード化モード情報が示すとき、又は、他のモード情報が異なるモードの使用を示すとき、パレットベースの復号ユニット１６５は、パレットコード化モードがブロックに適用されないことをパレットコード化モード情報が示すとき、ＨＥＶＣインター予測コード化モード又はイントラ予測コード化モードのような非パレットベースのコード化モードを使用して、ビデオデータのブロックを復号する。ビデオデータのブロックは、例えば、ＨＥＶＣコード化プロセスに従って生成されるＣＵ又はＰＵであり得る。ビデオデコーダ３０は、インター予測時間予測コード化モード又はイントラ予測空間コード化モードによって幾つかのブロックを復号し、パレットベースのコード化モードによって他のブロックを復号することができる。パレットベースのコード化モードは、複数の異なるパレットベースのコード化モードの１つを備えてよく、又は単一のパレットベースのコード化モードがあってよい。
【０１２２】
[0129]パレットベースの復号ユニット１６５によって受け取られるパレットコード化モード情報は、フラグのようなパレットモードシンタックス要素を備え得る。パレットモードシンタックス要素の第１の値は、パレットコード化モードがブロックに適用されることを示し、パレットモードシンタックス要素の第２の値は、パレットコード化モードがビデオデータのブロックに適用されないことを示す。パレットベースの復号ユニット１６５は、予測単位レベル、コード化単位レベル、スライスレベル、又はピクチャレベルの１つ又は複数において、（例えばビデオエンコーダ２０から）パレットコード化モード情報を受け取ることができ、又は、ピクチャパラメータセット（ＰＰＳ）、シーケンスパラメータセット（ＳＰＳ）、又はビデオパラメータセット（ＶＰＳ）の少なくとも１つにおいてパレットコード化モードが有効にされるかどうかの指示を受け取ることができる。
【０１２３】
[0130]幾つかの例では、パレットベースの復号ユニット１６５は、ビデオデータのブロックと関連付けられる、コード化ブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤｉｄ、又はマルチビューコード化におけるビューｉｄの１つ又は複数に基づいて、パレットコード化モード情報を推測することができる。
【０１２４】
[0131]パレットベースの復号ユニット１６５はまた、ビデオデータとともにパレット中のエントリーの少なくとも幾つかを定義する情報を受け取り、受け取られた情報に少なくとも一部基づいてパレットを生成するように構成され得る。パレットのサイズは固定されていてよく、又は可変であってよい。幾つかの場合には、パレットのサイズは可変であり、ビデオデータとともに信号伝達される情報に基づいて調整可能である。信号伝達される情報は、パレット中のエントリーがパレット中の最後のエントリーであるかどうかを規定することができる。また、幾つかの場合には、パレットは最大のサイズを有し得る。パレットのサイズはまた、条件的に送信されてよく、又は推測されてよい。その条件は、ＣＵのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤｉｄ、又はマルチビューコード化におけるビューｉｄであり得る。
【０１２５】
[0132]パレットは、ブロックのルーマ成分及びクロマ成分の画素値を示すエントリーを含む、単一のパレットであり得る。この場合、パレット中の各エントリーは、ルーマ成分及び２つのクロマ成分の画素値を示す三重のエントリーである。代替的に、パレットは、ブロックのルーマ成分の画素値を示すエントリーを含むルーマパレットと、ブロックのそれぞれのクロマ成分の画素値を示すエントリーを含むクロマパレットとを含む。
【０１２６】
[0133]幾つかの例では、パレットベースの復号ユニット１６５は、以前に処理されたデータに基づいてパレット中のエントリーを予測することによって、パレットを生成することができる。以前に処理されたデータは、以前に復号された隣接ブロックのための、パレット又はパレットからの情報を含み得る。パレットベースの復号ユニット１６５は、パレット中のエントリーが予測されるべきかどうかを示す予測シンタックス要素を受け取ることができる。予測シンタックス要素は、ルーマ成分及びクロマ成分のためのパレット中のエントリーが予測されるべきかどうかをそれぞれ示す、複数の予測シンタックス要素を含み得る。
【０１２７】
[0134]予測パレットに関して、例えば、予測パレットは、空間的に隣接するブロック及び／又はブロックの特定の走査順序で隣接するブロックを含む、１つ又は複数の隣接ブロックからのパレットのエントリーを含み得る。ある例では、隣接ブロックは、現在コード化されているブロックの左（左の隣接ブロック）又は上（上の隣接ブロック）に空間的に位置し得る。別の例では、パレットベースの復号ユニット１６５は、現在のブロックの原因となる隣接物の中の最頻のサンプル値を使用して、予測パレットのエントリーを決定することができる。別の例では、隣接ブロックは、ブロックをコード化するために使用される特定の走査順序に従って、現在コード化されているブロックに隣接し得る。即ち、隣接ブロックは、走査順序において現在のブロックの前にコード化される１つ又は複数のブロックであり得る。パレットベースの復号ユニット１６５は、パレットのコピー元の隣接ブロックの場所を示すように、１つ又は複数のシンタックス要素を復号することができる。
【０１２８】
[0135]従って、ある例では、パレットベースの復号ユニット１６５は、幾つかの例では、スライス又はピクチャ中の左の隣接ブロック又は上の隣接ブロックのためのパレット中のエントリーに基づいて、パレット中のエントリーの少なくとも幾つかを予測することができる。この場合、左の隣接ブロックのためのパレットと上の隣接ブロックのためのパレットのいずれかの中のエントリーに基づいて予測されるパレット中のエントリーは、予測のための左の隣接ブロック又は上の隣接ブロックの選択を示すシンタックス要素に基づいて、パレットベースの復号ユニット１６５によって予測され得る。シンタックス要素は、予測のための左の隣接ブロック又は上の隣接ブロックの選択を示す値を有するフラグであり得る。
【０１２９】
[0136]幾つかの例では、パレットベースの復号ユニット１６５は、パレット中の少なくとも幾つかの選択されるエントリーがエントリーごとに予測されるべきかどうかを示す１つ又は複数の予測シンタックス要素を受け取り、それに従ってエントリーを生成することができる。例えば、パレットベースの復号ユニット１６５は、予測パレットの各エントリーに対して、パレットのエントリーが現在のブロックのためのパレットに含まれているかどうかを示すように、１つ又は複数のシンタックス要素を復号することができる。エントリーが予測されない場合、パレットベースの復号ユニット１６５は、予測されないエントリーと、更にはそのようなエントリーの数とを規定するように、１つ又は複数の追加のシンタックス要素を復号することができる。従って、パレットベースの復号ユニット１６５は、エントリーの幾つかを予測し、追加のエントリーの数を含む、パレット中の他のエントリーを直接規定する情報を受け取ることができる。
【０１３０】
[0137]幾つかの例では、パレット全体を予測するための技法は、パレットの１つ又は複数のエントリーを予測するための技法と組み合わされ得る。例えば、パレットベースの復号ユニット１６５は、現在のパレットが予測パレットから完全にコピーされるかどうかを示すように、ビットストリーム中の１つ又は複数のシンタックス要素を復号することができる。これが当てはまらない場合、パレットベースの復号ユニット１６５は、予測パレット中の各エントリーがコピーされるかどうかを示すように、ビットストリーム中の１つ又は複数のシンタックス要素を復号することができる。
【０１３１】
[0138]別の例では、エントリーの数とパレット値とを受け取る代わりに、パレットベースの復号ユニット１６５は、各パレット値の後で、信号伝達されたパレット値がパレットの最後のパレットのエントリーであるかどうかを示すためのフラグを受け取ることができる。パレットベースの復号ユニット１６５は、パレットがすでにある最大のサイズに達している場合、そのような「パレットの終了」フラグを受け取らなくてよい。
【０１３２】
[0139]パレットベースの復号ユニット１６５によって受け取られ、ビデオデータのブロックの少なくとも幾つかの位置をパレット中のエントリーと関連付ける情報は、ブロック中の位置の少なくとも幾つかのためのパレットインデックス値を含むマップ情報を備えてよく、パレットインデックス値の各々はパレット中のエントリーの１つに対応する。マップ情報は、同じパレットインデックス値を有するブロック中の幾つかの連続する位置を各々示す、１つ又は複数のランシンタックス要素を含み得る。
【０１３３】
[0140]幾つかの例では、パレットベースの復号ユニット１６５は、線のコピーを示す情報を受け取ることができ、これによって、ブロック中の位置の線に対する画素値又はインデックス値が、ブロック中の位置の別の線に対する画素値又はインデックス値からコピーされる。パレットベースの復号ユニット１６５は、この情報を使用して線のコピーを実行して、ブロックの様々な位置に対するパレット中の画素値又はエントリーを決定することができる。位置の線は、ブロックの位置の行、行の一部分、列、又は列の一部分を備え得る。
【０１３４】
[0141]パレットベースの復号ユニット１６５は、一部には、ブロックの１つ又は複数の位置の画素値を受け取り、パレット中のエントリーに画素値を追加してパレットの少なくとも一部分をオンザフライで動的に生成することによって、パレットを生成することができる。画素値を追加することは、画素値を、エントリーの初期セットを備える初期パレットに、又はエントリーの初期セットを含まない空のパレットに追加することを備え得る。幾つかの例では、追加することは、エントリーの初期セットを備える初期パレットに新たなエントリーを追加するために、又は初期パレット中の既存のエントリーを埋めるために、画素値を追加すること、若しくは、初期パレット中のエントリーの画素値を置換又は変更することを備える。
【０１３５】
[0142]幾つかの例では、パレットベースの復号ユニット１６５は、パレットの固定された最大のサイズを決定することができる。最大のサイズに達すると、パレットベースの復号ユニット１６５は、パレットの１つ又は複数のエントリーを除去することができる。一例では、パレットベースの復号ユニット１６５は、例えばＦＩＦＯキューを使用して、パレットの最も古いエントリーを除去することができる。別の例では、パレットベースの復号ユニット１６５は、最も使用されることの少ないエントリーを除去することができる。更に別の例では、パレットベースの復号ユニット１６５は、除去されるべきエントリーの候補がパレットにいつ追加されたか、及びそのエントリーの相対的な使用量に基づいて、どのエントリーを除去すべきかに関する重み付けられた決定を行うことができる。
【０１３６】
[0143]幾つかの例では、パレットは量子化されたパレットであってよく、量子化されたパレットでは、ブロック中の位置の１つに対するパレットから選択された画素値がブロック中の位置の実際の画素値とは異なるので、復号プロセスは非可逆である。例えば、異なる実際の画素値を有する２つの異なる位置に対して、同じ画素値がパレットから選択され得る。
【０１３７】
[0144]図４は、本開示の技法に従った、ビデオデータをコード化するためのパレットを決定する例を示す概念図である。図４の例は、第１のパレット１８４と関連付けられる第１のコード化単位（ＣＵ）１８０と第２のパレット１９２と関連付けられる第２のＣＵ  １８８とを有するピクチャ１７８を含む。下でより詳細に説明されるように、本開示の技法によれば、第２のパレット１９２は第１のパレット１８４に基づく。ピクチャ１７８はまた、イントラ予測コード化モードによりコード化されるブロック１９６と、インター予測コード化モードによりコード化されるブロック２００とを含む。
【０１３８】
[0145]図４の技法は、ビデオエンコーダ２０（図１及び図２）とビデオデコーダ３０（図１及び図３）の状況において、説明を目的としてＨＥＶＣビデオコード化規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコード化プロセス及び／又は規格において他のビデオコード化プロセッサ及び／又は機器によって適用され得ることを、理解されたい。
【０１３９】
[0146]一般に、パレットは、現在コード化されているＣＵ、図４の例ではＣＵ  １８８について支配的である、及び／又はそのＣＵを表現する、幾つかの画素値を指す。第１のパレット１８４及び第２のパレット１９２は、複数のパレットを含むものとして示されている。幾つかの例では、本開示の態様によれば、ビデオコーダ（ビデオエンコーダ２０又はビデオデコーダ３０のような）は、ＣＵの各々の色成分に対して別々にパレットをコード化することができる。例えば、ビデオエンコーダ２０は、ＣＵのルーマ（Ｙ）成分のためのパレットと、ＣＵのクロマ（Ｕ）成分のための別のパレットと、ＣＵのクロマ（Ｖ）成分のための更に別のパレットとを符号化することができる。この例では、ＹパレットのエントリーはＣＵの画素のＹの値を表すことができ、ＵパレットのエントリーはＣＵの画素のＵの値を表すことができ、ＶパレットのエントリーはＣＵの画素のＶの値を表すことができる。
【０１４０】
[0147]他の例では、ビデオエンコーダ２０は、ＣＵの全ての色成分に対して単一のパレットを符号化することができる。この例では、ビデオエンコーダ２０は、Ｙｉと、Ｕｉと、Ｖｉとを含む、三重の値であるｉ番目のエントリーを有するパレットを符号化することができる。この場合、パレットは、画素の成分の各々の値を含む。従って、複数の個々のパレットを有するパレットのセットとしてのパレット１８４及び１９２の表現は、一例にすぎず、限定することは意図されない。
【０１４１】
[0148]図４の例では、第１のパレット１８４は、エントリーインデックス値１、エントリーインデックス値２、及びエントリーインデックス値３をそれぞれ有する、３つのエントリー２０２〜２０６を含む。エントリー２０２〜２０６は、画素値Ａ、画素値Ｂ、及び画素値Ｃをそれぞれ含む画素値に、インデックス値を関連付ける。本明細書で説明されるように、第１のＣＵ  １８０の実際の画素値をコード化するのではなく、ビデオコーダ（ビデオエンコーダ２０又はビデオデコーダ３０のような）は、パレットベースのコード化を使用して、インデックス１〜３を使用してブロックの画素をコード化することができる。即ち、第１のＣＵ  １８０の各画素位置に対して、ビデオエンコーダ２０は画素のインデックス値を符号化することができ、インデックス値は、第１のパレット１８４の１つ又は複数の中の画素値と関連付けられる。ビデオデコーダ３０は、ビットストリームからインデックス値を取得し、インデックス値と第１のパレット１８４の１つ又は複数とを使用して画素値を再構成することができる。従って、第１のパレット１８４は、パレットベースの復号におけるビデオデコーダ３０による使用のために、符号化されたビデオデータビットストリーム中でビデオエンコーダ２０によって送信される。一般に、１つ又は複数のパレットは、各ＣＵに対して送信されてよく、又は異なるＣＵの間で共有されてよい。
【０１４２】
[0149]本開示の態様によれば、ビデオエンコーダ２０及びビデオデコーダ３０は、第１のパレット１８４に基づいて第２のパレット１９２を決定することができる。例えば、ビデオエンコーダ２０は、（空間的に、又は走査順序に基づいて）隣接するＣＵ又は原因となる隣接物の最頻のサンプルのような、１つ又は複数の他のＣＵと関連付けられる１つ又は複数のパレットからＣＵのためのパレットが予測されるかどうかを示すために、各ＣＵ（例として、第２のＣＵ  １８８を含む）のためのｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇを符号化することができる。例えば、そのようなフラグの値が１に等しいとき、ビデオデコーダ３０は、第２のＣＵ  １８８のための第２のパレット１９２が１つ又は複数のすでに復号されているパレットから予測され、従って第２のＣＵ  １８８のための新たなパレットがｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇを含むビットストリームに含まれないと、決定することができる。そのようなフラグが０に等しいとき、ビデオデコーダ３０は、第２のＣＵ  １８８のためのパレット１９２が新たなパレットとしてビットストリームに含まれると決定することができる。幾つかの例では、ｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇは、ＣＵの各々の異なる色成分に対して別々にコード化され得る（例えば、ＹＵＶビデオにおけるＣＵについては、Ｙに対して１つ、Ｕに対して１つ、及びＶに対して１つの３つのフラグ）。他の例では、単一のｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇは、ＣＵの全ての色成分に対しコード化され得る。
【０１４３】
[0150]上の例では、現在のブロックのためのパレットのエントリーのいずれかが予測されるかどうかを示すために、ｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇがＣＵごとに信号伝達される。幾つかの例では、１つ又は複数のシンタックス要素は、エントリーごとに信号伝達され得る。それはフラグであるは、現在のパレット中にエントリーが存在するかどうかを示すために、パレット予測子の各エントリーに対して信号伝達され得る。上で述べられたように、パレットのエントリーが予測されない場合、パレットのエントリーは明示的に信号伝達され得る。
【０１４４】
[0151]第１のパレット１８４に対して第２のパレット１９２を決定する（例えば、ｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇが１に等しい）とき、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、予測パレット、この例では第１のパレット１８４が決定される際に元となる、１つ又は複数のブロックを位置特定することができる。予測パレットは、現在コード化されているＣＵの１つ又は複数の隣接ＣＵ（例えば、（空間的に、又は走査順序に基づいて）隣接するＣＵ、又は原因となる隣接物の最頻のサンプル）、即ち第２のＣＵ  １８８と関連付けられ得る。１つ又は複数の隣接ＣＵのパレットは、予測子パレットと関連付けられ得る。幾つかの例では、図４に示される例のように、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、第２のＣＵ  １８８のための予測パレットを決定するとき、左の隣接ＣＵである第１のＣＵ  １８０を位置特定することができる。他の例では、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、上のＣＵであるＣＵ  １９６のような、第２のＣＵ  １８８に対して他の位置にある１つ又は複数のＣＵを位置特定することができる。
【０１４５】
[0152]ビデオエンコーダ２０及び／又はビデオデコーダ３０は、階層に基づいて、パレット予測のためのＣＵを決定することができる。例えば、ビデオエンコーダ２０及び／又はビデオデコーダ３０は最初に、パレット予測のために、左の隣接ＣＵである第１のＣＵ  １８０を特定することができる。左の隣接ＣＵが予測のために利用可能ではない場合（例えば、左の隣接ＣＵが、イントラ予測モア又はイントラ予測モードのようなパレットベースのコード化モード以外のモードによりコード化される、又はピクチャ若しくはスライスの左端に位置する）、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、上の隣接ＣＵであるＣＵ  １９６を特定することができる。ビデオエンコーダ２０及び／又はビデオデコーダ３０は、パレット予測のために利用可能なパレットを有するＣＵを位置特定するまで、所定の場所の順序に従って利用可能なＣＵを探し続けることができる。幾つかの例では、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、複数のブロック及び／又は隣接ブロックの再構成されたサンプルに基づいて予測パレットを決定することができる。
【０１４６】
[0153]図４の例は単一のＣＵである第１のＣＵ  １８０からの予測パレットとして第１のパレット１８４を示すが、他の例では、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、隣接ＣＵの組合せから予測のためのパレットを位置特定することができる。例えば、ビデオエンコーダ２０及び／又はビデオデコーダは、複数の隣接ＣＵの１つ又は組合せのパレットに基づいてパレットを生成するために、１つ又は複数の式、関数、規則などを適用することができる。
【０１４７】
[0154]更に他の例では、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、パレット予測のための幾つかの可能性のある候補含む候補リストを構築することができる。そのような例では、ビデオエンコーダ２０は、パレット予測のために使用される現在のＣＵが選択される（パレットをコピーする）際に元となるリスト中のＣＵの候補を示すために、候補リストに対するインデックスを符号化することができる。ビデオデコーダ３０は、同じ方式で候補リストを構築し、インデックスを復号し、復号されたインデックスを使用して現在のＣＵとともに使用するための対応するＣＵのパレットを選択することができる。
【０１４８】
[0155]例示を目的とする例では、ビデオエンコーダ２０及びビデオデコーダ３０は、現在コード化されているＣＵの上に配置されている１つのＣＵと、現在コード化されているＣＵの左に配置されている１つのＣＵとを含む、候補リストを構築することができる。この例では、ビデオエンコーダ２０は、候補の選択を示すように１つ又は複数のシンタックス要素を符号化することができる。例えば、ビデオエンコーダ２０は、現在のＣＵのためのパレットが現在のＣＵの左に配置されているＣＵからコピーされることを示すために、０という値を有するフラグを符号化することができる。ビデオエンコーダ２０は、現在のＣＵのためのパレットが現在のＣＵの上に配置されているＣＵからコピーされることを示すために、１という値を有するフラグを符号化することができる。ビデオデコーダ３０は、フラグを復号し、パレット予測のために適切なＣＵを選択する。
【０１４９】
[0156]更に他の例では、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、１つ又は複数の他のパレットに含まれるサンプル値が１つ又は複数の隣接ＣＵの中で現れる頻度に基づいて、現在コード化されているＣＵのためのパレットを決定する。例えば、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、所定の数のＣＵのコード化の間に最も頻繁に使用されるインデックス値と関連付けられる色を記録することができる。ビデオエンコーダ２０及び／又はビデオデコーダ３０は、現在のコード化されているＣＵのためのパレットに、その最も頻繁に使用される色を含めることができる。
【０１５０】
[0157]上で述べられたように、幾つかの例では、ビデオエンコーダ２０及び／又はビデオデコーダは、現在のＣＵをコード化するために、隣接ＣＵからパレット全体をコピーすることができる。追加で、又は代替的に、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、エントリーごとのパレット予測を実行することができる。例えば、ビデオエンコーダ２０は、予測パレット（例えば、別のＣＵのパレット）に基づいて、それぞれのエントリーが予測されるかどうかを示す、パレットの各エントリーのための１つ又は複数のシンタックス要素を符号化することができる。この例では、ビデオエンコーダ２０は、エントリーが予測パレットからの予測された値（例えば、隣接ＣＵと関連付けられるパレットの対応するエントリー）であるとき、所与のエントリーに対して１に等しい値を有するフラグを符号化することができる。ビデオエンコーダ２０は、特定のエントリーが別のＣＵのパレットから予測されないことを示すために、その特定のエントリーに対して０に等しい値を有するフラグを符号化することができる。この例では、ビデオエンコーダ２０は、予測されないパレットのエントリーの値を示す追加のデータも符号化することができる。
【０１５１】
[0158]図４の例では、第２のパレット１９２は、エントリーインデックス値１、エントリーインデックス値２、エントリーインデックス値３、及びエントリーインデックス値４をそれぞれ有する、４つのエントリー２０８〜２１４を含む。エントリー２０８〜２１４は、画素値Ａ、画素値Ｂ、ピクチャ値Ｃ、及び画素値Ｄをそれぞれ含む画素値に、インデックス値を関連付ける。本開示の態様によれば、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、上で説明された技法のいずれかを使用して、パレット予測の目的で第１のＣＵ  １８０を位置特定し、第１のパレット１８４のエントリー１〜３を、第２のＣＵ  １８８をコード化するための第２のパレット１９２のエントリー１〜３にコピーすることができる。このようにして、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、第１のパレット１８４に基づいて第２のパレット１９２を決定することができる。加えて、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、第２のパレット１９２とともに含まれるべきエントリー４のためのデータをコード化することができる。そのような情報は、予測子パレットから予測されないパレットのエントリーの数と、それらのパレットのエントリーに対応する画素値とを含み得る。
【０１５２】
[0159]幾つかの例では、本開示の態様によれば、１つ又は複数のシンタックス要素は、第２のパレット１９２のようなパレットが予測パレット（図４では第１のパレット１８４として示されるが、１つ又は複数のブロックからのエントリーから構成されていてよい）から完全に予測されるかどうか、又は第２のパレット１９２の特定のエントリーが予測されるかどうかを示し得る。例えば、初期シンタックス要素は、エントリーの全てが予測されるかどうかを示し得る。エントリーの全てが予測されるのではないことを初期シンタックス要素が示す（例えば、フラグが０という値を有する）場合、１つ又は複数の追加のシンタックス要素が、第２のパレット１９２のどのエントリーが予測パレットから予測されるかを示し得る。
【０１５３】
[0160]本開示の幾つかの態様によれば、パレット予測と関連付けられる幾つかの情報は、コード化されているデータの１つ又は複数の特性から推測され得る。即ち、ビデオエンコーダ２０がシンタックス要素を符号化するのではなく（及びビデオデコーダ３０がそのようなシンタックス要素を復号するのではなく）、ビデオエンコーダ２０及びビデオデコーダ３０は、コード化されているデータの１つ又は複数の特性に基づいて、パレット予測を実行することができる。
【０１５４】
[0161]ある例では、例示を目的として、上で説明されたｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇの値は、例として、コード化されているＣＵのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤｉｄ、又はマルチビューコード化におけるビューｉｄの１つ又は複数から推測され得る。即ち、例としてＣＵのサイズに関して、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、上で説明されたｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇが所定のサイズを超える任意のＣＵに対して１に等しいと、決定することができる。この例では、ｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇは、符号化されるビットストリームにおいて信号伝達される必要はない。
【０１５５】
[0162]上ではｐｒｅｄ＿ｐａｌｅｔｔｅ＿ｆｌａｇに関して説明されたが、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、加えて、又は代替的に、パレットが予測のために使用される際に元となるＣＵの候補、又はパレット予測の候補を構成するための規則のような、パレット予測と関連付けられる他の情報を、コード化されているデータの１つ又は複数の特性に基づいて推測することができる。
【０１５６】
[0163]本開示の他の態様によれば、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、オンザフライでパレットを構成することができる。例えば、第２のＣＵ  １８８を最初にコード化するとき、パレット１９２にはエントリーはない。ビデオエンコーダ２０及びビデオデコーダ３０が第２のＣＵ  １８８の画素の新たな値をコード化するにつれて、各々の新たな値がパレット１９２に含められる。即ち、例えば、ビデオエンコーダ２０は、画素値がＣＵ  １８８の中の位置のために生成され信号伝達されるにつれて、画素値をパレット１９２に追加する。ビデオエンコーダ２０はＣＵにおいて相対的により後で画素を符号化するので、ビデオエンコーダ２０は、画素値を信号伝達するのではなくインデックス値を使用して、パレットにすでに含まれているものと同じ値を有する画素を符号化することができる。同様に、ビデオデコーダ３０が第２のＣＵ  １８８の中の位置に対する新たな画素値（例えば、ビデオエンコーダ２０によって信号伝達される）を受け取るとき、ビデオデコーダ３０は、画素値をパレット１９２に含める。第２のＣＵ  １８８において相対的により後で復号される画素位置が、第２のパレット１９２に追加されている画素値を有するとき、ビデオデコーダ３０は、第２のＣＵ  １８８の画素値の再構成のために第２のパレット１９２の中の対応する画素値を特定する情報、例えばインデックス値などを受け取ることができる。
【０１５７】
[0164]幾つかの例では、下でより詳細に説明されるように、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、パレット１８４と１９２とを最大パレットサイズ以下に維持することができる。本開示の態様によれば、最大パレットサイズに達すると、例えば、第２のパレット１９２がオンザフライで動的に構成されるにつれて、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、第２のパレット１９２のエントリーを除去するために同じプロセスを実行する。パレットのエントリーを除去するための１つの例示的なプロセスは、ビデオエンコーダ２０及びビデオデコーダ３０がパレットの最も古いエントリーを除去するｆｉｒｓｔ−ｉｎ−ｆｉｒｓｔ−ｏｕｔ（ＦＩＦＯ）技法である。別の例では、ビデオエンコーダ２０及びビデオデコーダ３０は、パレットから最も使用頻度の低いパレットのエントリーを除去することができる。更に別の例では、ビデオエンコーダ２０及びビデオデコーダ３０は、どのエントリーを除去するかを決定するために、ＦＩＦＯプロセスと使用頻度のプロセスの両方を重視することができる。即ち、エントリーの除去は、エントリーがどれだけ古いか、及びエントリーがどれだけ頻繁に使用されるかに基づき得る。
【０１５８】
[0165]幾つかの態様によれば、エントリー（画素値）がパレットから除去され、画素値がコード化されているＣＵ中のより後の位置において再び現れる場合、ビデオエンコーダ２０は、パレットにエントリーを含めてインデックスを符号化する代わりに、画素値を符号化することができる。追加で、又は代替的に、ビデオエンコーダ２０は、例えばビデオエンコーダ２０及びビデオデコーダ３０がＣＵの中の位置を走査するにつれて、エントリーを除去された後でパレットに再び入れることができる。
【０１５９】
[0166]幾つかの例では、オンザフライでパレットを導出するための技法は、パレットを決定するための１つ又は複数の他の技法と組み合わされ得る。具体的には、例として、ビデオエンコーダ２０及びビデオデコーダ３０は、（例えば、パレット１８４から第２のパレット１９２を予測するためにパレット予測を使用して）第２のパレット１９２を最初にコード化することができ、第２のＣＵ  １８８の画素をコード化するときに第２のパレット１９２を更新することができる。例えば、初期パレットを送信すると、ビデオエンコーダ２０は、ＣＵの中の追加の場所の画素値が走査されるにつれて、値を初期パレットに追加し、又は初期パレット中の値を変更することができる。同様に、初期パレットを受信すると、ビデオデコーダ３０は、ＣＵの中の追加の場所の画素値が走査されるにつれて、値を初期パレットに追加し、又は初期パレット中の値を変更することができる。
【０１６０】
[0167]ビデオエンコーダ２０は、幾つかの例では、現在のＣＵがパレット全体の送信を使用するか、又はオンザフライのパレット生成を使用するか、又は、初期パレットの送信とオンザフライの導出による初期パレットの更新との組合せを使用するかを、信号伝達することができる。幾つかの例では、初期パレットは最大パレットサイズにある満杯のパレットであることがあり、この場合、初期パレット中の値は変更され得る。他の例では、初期パレットは最大パレットサイズより小さいことがあり、この場合、ビデオエンコーダ２０及びビデオデコーダ３０は、初期パレットの値に値を追加し、及び／又は初期パレットの値を変更することができる。
【０１６１】
[0168]本開示の態様によれば、例えばパレットに含まれる画素値の数による、第１のパレット１８４及び第２のパレット１９２のようなパレットのサイズは、固定されていてよく、又は、符号化されたビットストリーム中の１つ又は複数のシンタックス要素を使用して信号伝達されてよい。例えば、幾つかの態様によれば、ビデオエンコーダ２０及びビデオデコーダ３０は、パレットサイズをコード化するために、単項コード又は切り捨てられた単項コード（例えば、最大限のパレットサイズにおいて切り捨てるコード）を使用することができる。他の態様によれば、ビデオエンコーダ２０及びビデオデコーダ３０は、パレットサイズをコード化するために、指数ゴロム符号又はライスゴロム符号を使用することができる。
【０１６２】
[0169]更に他の態様によれば、ビデオエンコーダ２０及びビデオデコーダ３０は、パレットの各エントリーの後でパレットのサイズを示すデータをコード化することができる。例として、第２のパレットの１９２に関して、ビデオエンコーダ２０は、エントリー２０８〜２１４の各々の後で停止フラグを符号化することができる。この例では、１に等しい停止フラグは、現在コード化されているエントリーが第２のパレット１９２の最後のエントリーであることを規定し得るが、０に等しい停止フラグは、第２のパレット１９２に追加のエントリーがあることを示し得る。従って、ビデオエンコーダ２０は、エントリー２０８〜２１２の各々の後で０という値を有する停止フラグを符号化し、エントリー２１４の後で１という値を有する停止フラグを符号化することができる。幾つかの例では、停止フラグは、構成されたパレットが最大パレットサイズの限度に達すると、ビットストリームに含まれなくてよい。上の例はパレットのサイズを明示的に信号伝達するための技法を開示するが、他の例では、パレットのサイズはまた、所謂サイド情報（例えば、上で述べられたような、コード化されているＣＵのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤｉｄ、又はマルチビューコード化におけるビューｉｄのような特性情報）に基づいて、条件的に送信又は推測され得る。
【０１６３】
[0170]本開示の技法は、可逆的に、又は代替的にはいくらかの損失を伴って（非可逆コード化（lossy coding））、データをコード化することを含む。例えば、非可逆コード化に関して、ビデオエンコーダ２０は、パレットの画素値を厳密にＣＵ中の実際の画素値と厳密に照合することなく、ＣＵの画素をコード化することができる。本開示の技法が非可逆コード化に適用されるとき、幾つかの制約がパレットに適用され得る。例えば、ビデオエンコーダ２０及びビデオデコーダ３０は、第１のパレット１８４及び第２のパレット１９２のようなパレットを量子化することができる。即ち、ビデオエンコーダ２０及びビデオデコーダ３０は、エントリーの画素値が互いに所定の範囲内にあるとき、パレットのエントリーを統合する（量子化する）ことができる。言い換えると、新たなパレット値の誤差の限度内にあるパレット値がすでにある場合、新たなパレット値はパレットに追加されない。別の例では、ブロック中の複数の異なる画素値が、単一のパレットのエントリーに、又は等価的に、単一のパレットの画素値にマッピングされ得る。
【０１６４】
[0171]ビデオデコーダ３０は、特定のパレットが可逆（lossless）であるか非可逆（lossy）であるかにかかわらず、同じ方式で画素値を復号することができる。一例として、ビデオデコーダ３０は、コード化されたブロック中の所与の画素位置のためにビデオエンコーダ２０によって送信されるインデックス値を使用して、パレットが可逆であるか非可逆であるかに関係なく、その画素位置のためのパレット中のエントリーを選択することができる。この例では、パレットのエントリーの画素値は、それが元の画素値と厳密に一致するかどうかにかかわらず、コード化されたブロック中の画素値として使用される。
【０１６５】
[0172]例示を目的として、非可逆コード化の例では、ビデオエンコーダ２０は、デルタ値と呼ばれる誤差の限界を決定することができる。画素値のエントリーの候補Ｐｌｔ＿ｃａｎｄは、ＣＵ又はＰＵのようなコード化されるべきブロック中のある位置における画素値に対応し得る。パレットの構築の間、ビデオエンコーダ２０は、画素値のエントリーの候補Ｐｌｔ＿ｃａｎｄとパレット中の既存の画素値のエントリーの全てとの間の、絶対的な差を決定する。画素値のエントリーの候補Ｐｌｔ＿ｃａｎｄとパレット中の既存の画素値のエントリーとの間の絶対的な差の全てがデルタ値より大きい場合、ビデオエンコーダ２０は画素値の候補をエントリーとしてパレットに追加することができる。画素値のエントリーＰｌｔ＿ｃａｎｄとパレット中の少なくとも１つの既存の画素値のエントリーとの間の絶対的な差がデルタ値以下である場合、ビデオエンコーダ２０は、画素値のエントリーの候補Ｐｌｔ＿ｃａｎｄをパレットに追加しなくてよい。従って、画素値のエントリーＰｌｔ＿ｃａｎｄをコード化するとき、ビデオエンコーダ２０は、画素値のエントリーＰｌｔ＿ｃａｎｄに最も近い画素値を伴うエントリーを選択することができ、これによっていくらかの損失をシステムにもたらす。パレットが複数の成分（例えば、３つの色成分）から構成されるとき、個々の成分値の絶対的な差の合計が、デルタ値との比較のために使用され得る。代替的に、又は追加で、各成分値の絶対的な差は、第２のデルタ値に対して比較され得る。
【０１６６】
[0173]幾つかの例では、上で述べられたパレット中の既存の画素値のエントリーが、同様のデルタ比較プロセスを使用して追加されていることがある。他の例では、パレット中の既存の画素値が、他のプロセスを使用して追加されていることがある。例えば、１つ又は複数の初期画素値のエントリーが、パレットを構築するデルタ比較プロセスを開始するために（デルタ比較を伴わずに）パレットに追加され得る。上で説明されたプロセスは、ルーマパレット及び／又はクロマパレットを生成するために、ビデオエンコーダ２０及び／又はビデオデコーダ３０によって実施され得る。
【０１６７】
[0174]パレット構築に関して上で説明された技法も、画素コード化の間にビデオエンコーダ２０及びビデオデコーダ３０によって使用され得る。例えば、画素値を符号化するとき、ビデオエンコーダ２０は、画素の値をパレット中のエントリーの画素値と比較することができる。画素の値とパレット中のエントリーの１つとの間の絶対的な画素値の差がデルタ値以下である場合、ビデオエンコーダ２０は、パレットのエントリーとして画素値を符号化することができる。即ち、この例では、ビデオエンコーダ２０は、画素値がパレットのエントリーに対して十分に小さい（例えば、所定の範囲内にある）絶対的な差を生成するとき、パレットのエントリーの１つを使用して画素値を符号化する。
【０１６８】
[0175]幾つかの例では、ビデオエンコーダ２０は、画素値を符号化するために、（コード化されている画素値と比較した）最小の絶対的な画素値の差を生むパレットのエントリーを選択することができる。ある例として、ビデオエンコーダ２０は、画素値のために使用されるパレットのエントリー、例えば、ビデオデコーダ３０においてコード化された画素値を再構成するために使用されるパレットの画素値のエントリーを示すために、インデックスを符号化することができる。画素の値とパレット中のエントリーの全てとの間の絶対的な画素値の差がデルタより大きい場合、エンコーダは、画素値を符号化するためにパレットのエントリーの１つを使用しなくてよく、代わりに、コード化されるべき画素の画素値をビデオデコーダ３０に送信する（及び場合によっては画素値をエントリーとしてパレットに追加する）ことができる。
【０１６９】
[0176]別の例では、ビデオエンコーダ２０は、画素値を符号化するためにパレットのエントリーを選択することができる。ビデオエンコーダ２０は、予測画素値として選択されたエントリーを使用することができる。即ち、ビデオエンコーダ２０は、実際の画素値と選択されたエントリーとの差を表す残差値を決定し、残差を符号化することができる。ビデオエンコーダ２０は、パレットのエントリーによって予測されるブロック中の画素に対する残差値を生成することができ、画素のブロックに対するそれぞれの残差画素値を含む残差ブロックを生成することができる。ビデオエンコーダ２０はその後、（図２に関して上で述べられたような）送信と量子化とを残差ブロックに適用することができる。このようにして、ビデオエンコーダ２０は、量子化された残差変換係数を生成することができる。
【０１７０】
[0177]ビデオデコーダ３０は、残差ブロックを再生成するために、変換係数を逆変換し逆量子化することができる。ビデオデコーダ３０は次いで、予測パレットのエントリー値と画素値に対する残差値とを使用して、画素値を再構成することができる。例えば、ビデオデコーダ３０は、残差値をパレットのエントリー値と組み合わせて、コード化された画素値を再構成することができる。
【０１７１】
[0178]幾つかの例では、デルタ値は、異なるＣＵサイズ、ピクチャサイズ、色空間、又は異なる色成分に対しては異なり得る。デルタ値は、様々なコード化条件に基づいて事前に決定されてよく、又は決定されてよい。例えば、ビデオエンコーダ２０は、ＰＰＳ、ＳＰＳ、ＶＰＳ、及び／又はスライスヘッダ中のシンタックスのような高レベルのシンタックスを使用して、デルタ値をビデオデコーダ３０に信号伝達することができる。他の例では、ビデオエンコーダ２０及びビデオデコーダ３０は、同じ固定されたデルタ値を使用するように事前に構成され得る。更に他の例では、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、サイド情報（例えば、上で述べられたような、ＣＵサイズ、色空間、色成分などのような）に基づいて、デルタ値を適応的に導出することができる。
【０１７２】
[0179]幾つかの例では、非可逆コード化パレットモードはＨＥＶＣコード化モードとして含まれ得る。例えば、コード化モードは、イントラ予測モードと、インター予測モードと、可逆コード化パレットモードと、非可逆コード化パレットモードとを含み得る。ＨＥＶＣコード化では、図２及び図３に関して上で述べられたように、量子化パラメータ（ＱＰ）が、許容される歪みを制御するために使用される。パレットベースのコード化のためのデルタの値は、ＱＰの関数として計算されてよく、又は別様に決定されてよい。例えば、上で説明されたデルタ値は、１＜＜（ＱＰ／６）又は１＜＜（（ＱＰ＋ｄ）／６）であってよく、ここでｄは定数であり、「＜＜」はビットごとの左シフトの演算子を表す。
【０１７３】
[0180]本開示で説明される非可逆コード化技法を使用したパレットの生成は、ビデオエンコーダ２０、ビデオデコーダ３０、又は両方によって実行され得る。例えば、ビデオエンコーダ２０は、上で説明されたデルタ比較技法を使用してＣＵのためのパレット中のエントリーを生成し、ビデオデコーダ３０による使用のためにパレットの構築のための情報を信号伝達することができる。即ち、ビデオエンコーダ２０は、ＣＵのためのパレット中のエントリーに対する画素値を示す情報を信号伝達し、次いで、そのようなパレットのエントリーと関連付けられる画素値を使用して画素値を符号化するように構成され得る。ビデオデコーダ３０は、そのような情報を使用してパレットを構築し、次いで、エントリーを使用してコード化されたブロックの画素値を復号することができる。幾つかの例では、ビデオエンコーダ２０は、コード化されたブロックの１つ又は複数の画素位置に対するパレットのエントリーを特定するインデックス値を信号伝達することができ、ビデオデコーダ３０は、インデックス値を使用して、パレットから関連する画素値のエントリーを取り出すことができる。
【０１７４】
[0181]他の例では、ビデオデコーダ３０は、上で説明されたデルタ比較技法を適用することによって、パレットを構築するように構成され得る。例えば、ビデオデコーダ３０は、コード化されたブロック内の位置に対する画素値を受け取り、画素値とパレット中の既存の画素値のエントリーとの間の絶対的な差がデルタ値より大きいかどうかを決定することができる。大きい場合、ビデオデコーダ３０は、例えば、ビデオエンコーダ２０によって信号伝達された対応するインデックス値を使用したブロックの他の画素位置に対する画素値のパレットベースの復号において後で使用するために、画素値をエントリーとしてパレットに追加することができる。この場合、ビデオエンコーダ２０及びビデオデコーダ３０は、パレットを生成するために同じ又は同様のプロセスを適用することができる。大きくない場合、ビデオデコーダ３０は、画素値をパレットに追加しなくてよい。
【０１７５】
[0182]例示を目的とする例では、ビデオデコーダ３０は、ブロック中の様々な画素位置に対するインデックス値又は画素値を受け取ることができる。インデックス値が画素位置に対して受け取られる場合、例えば、ビデオデコーダ３０は、パレット中のエントリーを特定するためにインデックス値を使用し、その画素位置に対してパレットのエントリーの画素値を使用することができる。画素値がその画素値に対して受け取られる場合、ビデオデコーダ３０は、画素位置に対して受け取られた画素値を使用し、また、デルタ比較を適用して、画素値がパレットに追加され次いでパレットのコード化のために後で使用されるべきかどうかを決定することができる。
【０１７６】
[0183]エンコーダ側では、ブロック中の位置に対する画素値が、デルタ値以下の、その画素値とパレット中の既存の画素値のエントリーとの間の絶対的な差を生成する場合、ビデオエンコーダ２０は、その位置に対する画素値を再構成する際に使用するためのパレット中のエントリーを特定するために、インデックス値を送ることができる。ブロック中の位置に対する画素値が、全てがデルタ値より大きい、その画素値とパレット中の既存の画素値のエントリーとの間の絶対的な差の値を生成する場合、ビデオエンコーダ２０は、その画素値を送り、その画素値をパレット中の新たなエントリーとして追加することができる。パレットを構築するために、ビデオデコーダ３０は、例えば上で説明されたように、エンコーダによって信号伝達されるデルタ値を使用し、固定された又は既知のデルタ値に依存し、又は、デルタ値を推測若しくは導出することができる。
【０１７７】
[0184]上で述べられたように、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、ビデオデータをコード化するとき、イントラ予測モードと、インター予測モードと、可逆コード化パレットモードと、非可逆コード化パレットモードとを含む、コード化モードを使用することができる。本開示の幾つかの態様によれば、ビデオエンコーダ２０及びビデオデコーダ３０は、パレットベースのコード化が有効にされるかどうかを示す１つ又は複数のシンタックス要素をコード化することができる。例えば、各ＣＵにおいて、ビデオエンコーダ２０は、フラグＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇのようなシンタックス要素を符号化することができる。ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇ又は他のシンタックス要素は、パレットベースのコード化モードが所与のＣＵ（又は他の例ではＰＵ）のために使用されるべきかどうかを示し得る。例えば、このフラグは、ＣＵレベルで符号化されたビデオビットストリームの中で信号伝達されてよく、次いで、符号化されたビデオビットストリームを復号するとビデオデコーダ３０によって受け取られ得る。
【０１７８】
[0185]この例では、１に等しいこのＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇの値は、パレットベースのコード化モードを使用して現在のＣＵが符号化されることを規定し得る。この場合、ビデオデコーダ３０は、パレットベースのコード化モードを適用してＣＵを復号することができる。幾つかの例では、シンタックス要素は、ＣＵのための複数の異なるパレットベースのコード化モードの１つ（例えば、非可逆又は可逆）を示し得る。０に等しいこのＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇの値は、パレットモード以外のモードを使用して現在のＣＵが符号化されることを規定し得る。例えば、様々なインター予測コード化モード、イントラ予測コード化モード、又は他のコード化モードのいずれもが使用され得る。ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇの値が０であるとき、ビデオエンコーダ２０はまた、それぞれのＣＵを符号化するために使用される特定のモード（例えば、ＨＥＶＣコード化モード）を示すように、追加のデータを符号化することができる。ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇの使用が、例を目的に説明される。しかしながら、他の例では、マルチビットコードのような他のシンタックス要素が、パレットベースのコード化モードがＣＵ（又は他の例ではＰＵ）のために使用されるべきかどうかを示すために、又は、複数のモードのいずれがコード化のために使用されるべきかを示すために、使用され得る。
【０１７９】
[0186]幾つかの例では、上で説明されたフラグ又は他のシンタックス要素は、ＣＵ（又はＰＵ）レベルよりも高いレベルで送信され得る。例えば、ビデオエンコーダ２０は、そのようなフラグをスライスレベルで信号伝達することができる。この場合、１に等しい値は、スライス中のＣＵの全てがパレットモードを使用して符号化されることを示す。この例では、例えばパレットモード又は他のモードのために、追加のモード情報はＣＵレベルで信号伝達されない。別の例では、ビデオエンコーダ２０は、そのようなフラグを、ＰＰＳ、ＳＰＳ、又はＶＰＳにおいて信号伝達することができる。
【０１８０】
[0187]本開示の幾つかの態様によれば、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、パレットモードが特定のスライス、ピクチャ、シーケンスなどのために有効にされるか無効にされるかを規定する１つ又は複数のシンタックス要素（例えば、上で説明されたフラグのような）を、スライスレベル、ＰＰＳレベル、ＳＰＳレベル、又はＶＰＳレベルの１つにおいてコード化することができ、一方、ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇは、パレットベースのコード化モードが各ＣＵのために使用されるかどうかを示す。この場合、スライスレベル、ＰＰＳレベル、ＳＰＳレベル、又はＶＰＳレベルで送られたフラグ又は他のシンタックス要素が、パレットコード化モードが無効にされることを示す場合、幾つかの例では、各ＣＵのためにＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇを信号伝達する必要はないことがある。或いは、スライスレベル、ＰＰＳレベル、ＳＰＳレベル、又はＶＰＳレベルで送られたフラグ又は他のシンタックス要素が、パレットコード化モードが有効にされることを示す場合、パレットベースのコード化モードが各ＣＵのために使用されるべきかどうかを示すために、ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇが更に信号伝達され得る。やはり、上で言及されたように、ＣＵのパレットベースのコード化を示すためのこれらの技法の適用は、追加で、又は代替的に、ＰＵのパレットベースのコード化を示すために使用され得る。
【０１８１】
[0188]幾つかの例では、上で説明されたシンタックス要素は、ビットストリーム中で条件的に信号伝達され得る。例えば、ビデオエンコーダ２０及びビデオデコーダ３０は、ＣＵのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤｉｄ、又はマルチビューコード化におけるビューｉｄに基づいて、シンタックス要素をそれぞれ符号化するだけでよく、又は復号するだけでよい。
【０１８２】
[0189]上で説明された例は、例えばビットストリーム中の１つ又は複数のシンタックス要素を伴う明示的な信号伝達に関するが、他の例では、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、パレットコード化モードがアクティブであるかどうか、及び／又は特定のブロックをコード化するために使用されるかどうかを暗黙的に決定することができる。ビデオエンコーダ２０及びビデオデコーダ３０は、例えば、ＣＵのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤｉｄ、又はマルチビューコード化におけるビューｉｄに基づいて、パレットベースのコード化がブロックのために使用されるかどうかを決定することができる。
【０１８３】
[0190]図４の技法はＣＵ（ＨＥＶＣ）の状況において上で説明されるが、この技法は、予測単位（ＰＵ）にも、又は、他のビデオコード化プロセス及び／又は規格においても適用され得ることを理解されたい。
【０１８４】
[0191]図５は、本開示の技法に従った、画素のブロックのためのパレットに対するインデックスを決定する例を示す概念図である。例えば、図５は、インデックス値と関連付けられる画素のそれぞれの位置をパレット２４４のエントリーに関連付ける、インデックス値（値１、２、及び３）のマップ２４０を含む。パレット２４４は、図４に関して上で説明された第１のパレット１８４及び第２のパレット１９２と同様の方式で決定され得る。
【０１８５】
[0192]やはり、図５の技法は、ビデオエンコーダ２０（図１及び図２）とビデオデコーダ３０（図１及び図３）の状況において、説明を目的としてＨＥＶＣビデオコード化規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコード化プロセス及び／又は規格において他のビデオコード化プロセッサ及び／又は機器によって適用され得ることを、理解されたい。
【０１８６】
[0193]マップ２４０は、各画素位置に対するインデックス値を含むものとして図５の例において示されるが、他の例では、全ての画素位置が、画素値をパレット２４４のエントリーに関連付けるインデックス値と関連付けられ得るとは限らないことを理解されたい。即ち、上で述べられたように、幾つかの例では、ビデオエンコーダ２０は、画素値がパレット２４４に含まれない場合、マップ２４０の中のある位置に対する実際の画素値（又はその量子化されたバージョン）の指示を符号化することができる（及び、ビデオデコーダ３０は、符号化されたビットストリームからその指示を取得することができる）。
【０１８７】
[0194]幾つかの例では、ビデオエンコーダ２０及びビデオデコーダ３０は、どの画素位置がインデックス値と関連付けられるかを示す追加のマップをコード化するように構成され得る。例えば、マップ中の（ｉ，ｊ）のエントリーがＣＵの（ｉ，ｊ）の位置に対応すると仮定する。ビデオエンコーダ２０は、エントリーが関連付けられるインデックス値を有するかどうかを示す、マップの各エントリー（即ち、各画素位置）のための１つ又は複数のシンタックス要素を符号化することができる。例えば、ビデオエンコーダ２０は、ＣＵ中の（ｉ，ｊ）の場所における画素値がパレット２４４の中の値の１つであることを示すように、１という値を有するフラグを符号化することができる。そのような例では、ビデオエンコーダ２０はまた、パレット中のその画素値を示し、ビデオデコーダが画素値を再構成することを可能にするように、パレットインデックス（値１〜３として図５の例では示される）を符号化することができる。パレット２４４が単一のエントリーと関連付けられる画素値とを含む例では、ビデオエンコーダ２０は、インデックス値の信号伝達を省略することができる。ビデオエンコーダ２０は、ＣＵ中の（ｉ，ｊ）の場所における画素値がパレット２４４の中の値の１つではないことを示すように、０という値を有するようにフラグを符号化することができる。この例では、ビデオエンコーダ２０はまた、画素値を再構成する際にビデオデコーダ３０によって使用するために、画素値の指示を符号化することができる。幾つかの例では、画素値は非可逆の方式でコード化され得る。
【０１８８】
[0195]ＣＵの１つの位置における画素の値は、ＣＵの他の位置における１つ又は複数の他の画素の値の指示を提供することができる。例えば、ＣＵの隣接画素位置が同じ画素値を有すること、又は、（２つ以上の画素値が単一のインデックス値にマッピングされ得る、非可逆コード化の場合において）ＣＵの隣接画素位置が同じインデックス値にマッピングされ得ることの確率が比較的高いことがある。
【０１８９】
[0196]従って、本開示の態様によれば、ビデオエンコーダ２０は、同じ画素値又はインデックス値を有する、所与の走査順序の幾つかの連続する画素値又はインデックス値を示す１つ又は複数のシンタックス要素を符号化することができる。上で述べられたように、同様の値の画素値又はインデックス値の列は、本明細書ではランと呼ばれ得る。例示を目的とする例では、所与の走査順序の２つの連続する画素又はインデックスが異なる値を有する場合、ランは０に等しい。所与の走査順序の２つの連続する画素又はインデックスが同じ値を有するが、その走査順序の３番目の画素又はインデックスが異なる値を有する場合、ランは１に等しい。同じ値を伴う３つの連続するインデックス又は画素では、ランは２であり、以下同様である。ビデオデコーダ３０は、符号化されたビットストリームからランを示すシンタックス要素を取得し、そのデータを使用して、同じ画素値又はインデックス値を有する連続する場所の数を決定することができる。
【０１９０】
[0197]例示を目的とする例では、マップ２４０の線２４８を考える。水平方向の左から右への走査方向を仮定すると、線２４８は、「２」という５個のインデックス値と「３」という３個のインデックス値とを含む。本開示の態様によれば、ビデオエンコーダ２０は、走査方向にある線２４８の第１の位置のために２というインデックス値を符号化することができる。加えて、ビデオエンコーダ２０は、信号伝達されたインデックス値と同じインデックス値を有する、同じ方向にある連続する値のランを示す１つ又は複数のシンタックス要素を符号化することができる。線２４８の例では、ビデオエンコーダ２０は４というランを信号伝達することができ、これによって、走査方向にある後続の４つの位置のインデックス値が信号伝達されたインデックス値と同じインデックス値を共有することを示す。ビデオエンコーダ２０は、線２４８の中の次の異なるインデックス値に対して同じプロセスを実行することができる。即ち、ビデオエンコーダ２０は、３というインデックス値と、２というランを示す１つ又は複数のシンタックス要素とを符号化することができる。ビデオデコーダ３０は、インデックス値と、同じインデックス値を有する走査方向に連続するインデックスの数（ラン）とを示す、シンタックス要素を取得することができる。
【０１９１】
[0198]上で述べられたように、マップのインデックスは特定の順序で走査される。本開示の態様によれば、走査方向は、垂直方向、水平方向、又は対角方向（例えば、ブロックにおいて対角方向に４５度又は１３５度）であり得る。幾つかの例では、ビデオエンコーダ２０は、ブロックのインデックスを走査するための走査方向を示す、各ブロックに対する１つ又は複数のシンタックス要素を符号化することができる。加えて、又は代替的に、走査方向は、例えばブロックサイズ、色空間、及び／又は色成分のような所謂サイド情報に基づいて信号伝達又は推測され得る。ビデオエンコーダ２０は、ブロックの各々の色成分に対する走査を規定することができる。代替的に、規定された走査は、ブロックの全ての色成分に適用され得る。
【０１９２】
[0199]例えば、列ベースの走査に関して、マップ２４０の列２５２を考える。垂直方向の上から下への走査方向を仮定すると、列２５２は、「２」という６個のインデックス値と「３」という２個のインデックス値とを含む。本開示の態様によれば、ビデオエンコーダ２０は、（列２５２の相対的な上部における）走査方向にある線の第１の位置のために２というインデックス値を符号化することができる。加えて、ビデオエンコーダ２０は５というランを信号伝達することができ、これによって、走査方向にある後続の５つの位置のインデックス値が信号伝達されたインデックス値と同じインデックス値を共有することを示す。ビデオエンコーダ２０はまた、走査方向の次の位置に対する３というインデックス値と、１というランを示す１つ又は複数のシンタックス要素とを符号化することができる。ビデオデコーダ３０は、インデックス値と、同じインデックス値を有する走査方向に連続するインデックスの数（ラン）とを示す、シンタックス要素を取得することができる。
【０１９３】
[0200]本開示の態様によれば、ビデオエンコーダ２０及びビデオデコーダ３０は、追加で、又は代替的に、マップ２４０の１つ又は複数のエントリーに対して線のコピーを実行することができる。線のコピーは、幾つかの例では、走査方向に依存し得る。例えば、ビデオエンコーダ２０は、マップ中の特定のエントリーに対する画素値又はインデックス値が、（水平方向の走査では）その特定のエントリーの上の線における、又は（垂直方向の走査では）その特定のエントリーの左の列における、画素値又はインデックス値に等しいことを示し得る。ビデオエンコーダ２０はまた、特定のエントリーの上の線、又は特定のエントリーの左の列の中のエントリーに等しい、走査順序の中の画素値又はインデックス値の数を、ランとして示すことができる。この例では、ビデオエンコーダ２０及び又はビデオデコーダ３０は、規定された隣接する線から、及び、現在コード化されているマップの線に対する規定された数のエントリーから、画素値又はインデックス値をコピーすることができる。
【０１９４】
[0201]例示を目的とする例では、マップ２４０の列２５６と２６０とを考える。垂直方向の上から下への走査方向を仮定すると、列２５６は、「１」という３個のインデックス値と、「２」という３個のインデックス値と、「３」という２個のインデックス値とを含む。列２６０は、走査方向に同じ順序を有する同じインデックス値を含む。本開示の態様によれば、ビデオエンコーダ２０は、列２６０の全体が列２５６からコピーされることを示す、列２６０のための１つ又は複数のシンタックス要素を符号化することができる。１つ又は複数のシンタックス要素は、マップ２４０の相対的な上部において列２６０の第１のエントリーと関連付けられ得る。ビデオデコーダ３０は、線のコピーを示すシンタックス要素を取得し、列２６０を復号するときに列２６０のための列２５６のインデックス値をコピーすることができる。
【０１９５】
[0202]本開示の態様によれば、エントリーの所謂ランをコード化するための技法が、上で説明された線のコピーのための技法とともに使用され得る。例えば、ビデオエンコーダ２０は、マップ中のエントリーの値がパレットから取得されるかどうか、又は、マップ中のエントリーの値がマップ２４０中の以前にコード化された線から取得されるかどうかを示す、１つ又は複数のシンタックス要素（例えば、フラグ）を符号化することができる。ビデオエンコーダ２０はまた、パレットのインデックス値又は線（行又は列）の中のエントリーの場所を示す１つ又は複数のシンタックス要素を符号化することができる。ビデオエンコーダ２０はまた、同じ値を共有する幾つかの連続するエントリーを示す１つ又は複数のシンタックス要素を符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームからそのような情報を取得し、その情報を使用して、ブロックに対するマップと画素値とを再構成することができる。
【０１９６】
[0203]例示を目的とする例では、マップ２４０の行２６４と２６８とを考える。水平方向の左から右への走査方向を仮定すると、行２６４は、「１」という３個のインデックス値と、「２」という２個のインデックス値と、「３」という３個のインデックス値とを含む。行２６８は、「１」という５個のインデックス値と「３」という３個のインデックス値とを含む。この例では、ビデオエンコーダ２０は、行２６８のためのデータを符号化するときにランの前にある行２６４の特定のエントリーを特定することができる。例えば、ビデオエンコーダ２０は、行２６８の第１の位置（行２６８の一番左の位置）が行２６４の第１の位置と同じであることを示す、１つ又は複数のシンタックス要素を符号化することができる。ビデオエンコーダ２０はまた、行２６８の中の走査方向の２つの連続するエントリーの次のランが行２６４の第１の位置と同じであることを示す、１つ又は複数のシンタックス要素を符号化することができる。
【０１９７】
[0204]幾つかの例では、ビデオエンコーダ２０はまた、別の行（又は列）の中のある位置に対する現在の画素値又はインデックス値をコード化するかどうか、若しくは、ランシンタックス要素を使用して現在の画素値又はインデックス値をコード化するかどうかを決定することができる。例えば、（上で述べられたように）行２６４の第１の位置と２つのエントリーのランとを示す１つ又は複数の要素を符号化した後で、ビデオエンコーダ２０は、行２６８の中の第４の位置及び第５の位置に対して（左から右に）、第４の位置に対する１という値と、１というランを示す１つ又は複数のシンタックス要素とを示す、１つ又は複数のシンタックス要素を符号化することができる。従って、ビデオエンコーダ２０は、別の線（又は列）を参照することなくこれらの２つの位置を符号化する。ビデオエンコーダ２０は次いで、上の行２６４に対する、行２６８の中の３というインデックス値を有する第１の位置をコード化することができる（例えば、上の行２６４からのコピーと、同じインデックス値を有する、走査順序の連続する位置のランとを示す）。従って、本開示の態様によれば、ビデオエンコーダ２０は、例えばランを使用して線（又は列）の画素値又はインデックス値を線（又は列）の他の値に対してコード化すること、線（又は列）の画素値又はインデックス値を別の線（又は列）の値に対してコード化すること、又はこれらの組合せの中から選択することができる。ビデオエンコーダ２０は、幾つかの例では、この選択を行うために、レート／歪みの最適化を実行することができる。
【０１９８】
[0205]ビデオデコーダ３０は、上で説明されたシンタックス要素を受け取り、行２６８を再構成することができる。例えば、ビデオデコーダ３０は、現在コード化されているマップ２４０の位置に対する関連付けられるインデックス値をコピーする際に元となる、隣接する行の中の特定の場所を示すデータを取得することができる。ビデオデコーダ３０はまた、同じインデックス値を有する、走査順序の連続する位置の数を示すデータを取得することができる。
【０１９９】
[0206]幾つかの例では、エントリーのコピー元の線は、（図５の例において示されるように）現在コード化されている線のエントリーに直接隣接していてよい。しかしながら、他の例では、ある数の線が、ビデオエンコーダ２０及び／又はビデオデコーダ３０によってバッファリングされ得るので、マップのその数の線のいずれかが、現在コード化されているマップの線のための予測エントリーとして使用され得る。従って、幾つかの例では、エントリーに対する画素値は、現在の行のすぐ上の行（又はすぐ左の列）、若しくは現在の行の２つ以上上の行（又は２つ以上左の列）の中のエントリーの画素値に等しくなるように信号伝達され得る。
【０２００】
[0207]例示を目的とする例では、ビデオエンコーダ２０及び／又はビデオデコーダ３０は、エントリーの現在の行をコード化する前に、エントリーの以前のｎ個の行を記憶するように構成され得る。この例では、ビデオエンコーダ２０は、切り捨てられた単項コード又は他のコードによって、ビットストリーム中で予測行（エントリーのコピー元の行）を示すことができる。別の例では、ビデオエンコーダ２０は、現在の線と、現在の線をコード化するために参照として使用されるマップ２４０の予測線との間の、変位値を符号化することができる（及びビデオデコーダ３０は変位値を復号することができる）。即ち、ビデオエンコーダ２０は、インデックス値のコピー元の特定の線（又は列）の指示を符号化することができる。幾つかの例では、変位値は変位ベクトルであり得る。即ち、ｃ［０］、ｃ［１］、．．．、を、マップ２４０の現在の線のインデックスを示すものとし、ｕ［０］、ｕ［１］、ｕ［２］、．．．、を、上の隣接線のようなマップ２４０の予測線のインデックスを示すものとする。この例では、変位ベクトルがｄであるとすると、ｃ［ｉ］に対するインデックス値はｕ［ｉ＋ｄ］から予測され得る。ｄの値は、単項コード、切り捨てられた単項コード、指数ゴロム符号、又はゴロムライス符号を使用してコード化され得る。
【０２０１】
[0208]図６は、本開示の技法に従った、パレットコード化モードを使用してビデオデータをコード化するための例示的なプロセスを示すフローチャートである。図６の方法は、ビデオエンコーダ２０（図１及び図２）又はビデオデコーダ３０（図１及び図３）のようなビデオコーダに関して説明されている。しかしながら、他のビデオコード化機器が、同様の方法を実行するように構成され得ることを理解されたい。その上、本方法における幾つかのステップは、異なる順序で、又は並行して実行されてよい。同様に、様々な例では、幾つかのステップが省略されてよく、他のステップが追加されてよい。
【０２０２】
[0209]ビデオエンコーダ及び／又はビデオデコーダ３０のようなビデオコーダは最初に、ビデオデータの現在のブロックをコード化するためのモードがパレットベースのコード化モードであるかどうかを決定することができる（２８０）。上で述べられたように、現在のブロックのコード化モードを示す１つ又は複数のシンタックス要素（例えば、ＰＬＴ＿Ｍｏｄｅ＿ｆｌａｇシンタックス要素）がビットストリームに含まれ得る。他の例では、ビデオコーダは、上で述べられたように、所謂サイド情報に基づいて決定を行うことができる。
【０２０３】
[0210]いずれの場合でも、パレットベースのコード化モードが現在コード化されているブロックのために使用されない場合（ステップ２８０の「いいえ」の分岐）、ビデオコーダは、パレットベースのコード化モード以外のモードを使用してビデオデータのブロックをコード化することができる（２８２）。例えば、ビデオコーダは、イントラモード、インターモード、又は別のコード化モードのような、非パレットベースのモードを使用してビデオデータのブロックをコード化することができる。
【０２０４】
[0211]パレットベースのコード化モードが現在コード化されているブロックのために使用される場合（ステップ２８０の「はい」の分岐）、ビデオコーダは、現在のブロックをコード化するためのパレットを決定することができる（２８４）。下で図７及び図８に関して説明されるように、幾つかの例では、ビデオコーダは、ビデオデータの１つ又は複数の他の以前にコード化されたブロックと関連付けられるパレットに基づいて、現在のブロックのためのパレットを決定することができる。
【０２０５】
[0212]ビデオコーダはまた、現在コード化されているブロックのためのインデックス値を決定することができる（２８６）。例えば、下で図９に関してより詳細に説明されるように、ビデオコーダは、画素の位置を関連付けられる画素値を有する決定されたパレットのエントリーに関連付けるインデックス値を使用して、ブロックのどの画素位置がコード化されるかを示すマップを決定することができる。幾つかの例では、ビデオコーダは、ブロックの他のインデックス値に対する１つ又は複数のインデックス値を決定することができる。例えば、ビデオコーダは、ブロックの別の線又は列の中に位置するインデックス値に基づいて、インデックス値のラン及び／又は１つのインデックス値を決定することができる。
【０２０６】
[0213]ビデオコーダは次いで、決定されたパレットとインデックス値とを使用して、ブロックのビデオデータをコード化する（２８０）。例えば、ビデオエンコーダ２０に関して、ビデオエンコーダ２０は、パレットとともにインデックス値を示すデータを、符号化されたビットストリームの中で符号化することができる。ビデオエンコーダ２０はまた、決定されたパレット中の対応する画素を有しない任意の画素位置に対して、そのような位置における実際の画素値又はそれらの量子化されたバージョンを符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームからのパレットと、インデックス値と、画素値とを解析して復号し、そのデータを使用してビデオデータのブロックを再構成することができる。
【０２０７】
[0214]図７は、本開示の技法に従った、パレットベースのコード化においてパレットを決定するための例示的なプロセスを示すフローチャートである。図７の方法は、ビデオエンコーダ２０（図１及び図２）又はビデオデコーダ３０（図１及び図３）のようなビデオコーダに関して説明されている。しかしながら、他のビデオコード化機器が、同様の方法を実行するように構成され得ることを理解されたい。その上、本方法における幾つかのステップは、異なる順序で、又は並行して実行されてよい。同様に、様々な例では、幾つかのステップが省略されてよく、他のステップが追加されてよい。幾つかの例では、図７の技法は、図６のステップ２８４の間に実行され得る。
【０２０８】
[0215]図７の例では、ビデオコーダはパレットのサイズを決定することができる（３００）。幾つかの例では、パレットのサイズは固定されていてよい。他の例では、パレットのサイズは、（例えば、パレットにエントリーを追加すること、又はパレットからエントリーを除去することによって）コード化の間に動的に調整され得る。ビデオコーダは、パレットのサイズを示す１つ又は複数のシンタックス要素をコード化することができる。
【０２０９】
[0216]ビデオコーダは、現在のブロックをコード化するためのパレットが１つ又は複数の他の以前にコード化されたパレットから予測されるかどうかを決定することができる（３０２）。パレットが予測される場合（ステップ３０２のはいの分岐）、ビデオコーダは予測パレットを決定することができる（３０４）。例えば、ビデオエンコーダ２０は、現在のブロックのためのパレットが１つ又は複数の以前に符号化されたパレットに基づくことを示すデータと、更には、予測パレットと関連付けられるブロックの場所を示す（又は予測パレット自体を特定する）データとを符号化することができる。同様に、ビデオデコーダ３０は、符号化されたビットストリームからそのようなデータを取得することができる。図４に関して上で説明されたように、予測パレットは、現在コード化されているブロックの隣接ブロックと関連付けられ得る。
【０２１０】
[0217]ビデオコーダは、決定された予測パレットの１つ又は複数のエントリーに基づいて、現在のブロックをコード化するためのパレットの１つ又は複数のエントリーを決定することができる（３０６）。幾つかの例では、ビデオコーダは、現在のブロックをコード化するために、別のブロックからパレット全体をコピーすることができる。他の例では、ビデオコーダは、別のパレットからエントリーを選択的にコピーすることができる。パレット予測は、幾つかの例では、パレットのエントリーが１つ又は複数の以前にコード化されたブロックにおいて使用される頻度に基づいて、基づき得る。
【０２１１】
[0218]ビデオコーダはまた、パレットの１つ又は複数の予測されないエントリーを決定することができる（３０８）。例えば、幾つかの例では、パレットの一部分のみが、他の以前にコード化されたパレットから予測され得る。他の例では、パレットはまったく予測的にコード化されなくてよい。そのような例では、ビデオコーダは、本明細書で説明されるパレット予測技法を実行することなく（又は実行した後で）、パレットのエントリーを決定することができる。
【０２１２】
[0219]図８は、本開示の技法に従った、ビデオデータのブロックのインデックスを決定するための例示的なプロセスを示すフローチャートである。図８の方法は、ビデオエンコーダ２０（図１及び図２）又はビデオデコーダ３０（図１及び図３）のようなビデオコーダに関して説明されている。しかしながら、他のビデオコード化機器が、同様の方法を実行するように構成され得ることを理解されたい。その上、本方法における幾つかのステップは、異なる順序で、又は並行して実行されてよい。同様に、様々な例では、幾つかのステップが省略されてよく、他のステップが追加されてよい。幾つかの例では、図８の技法は、図６のステップ２８６の間に実行され得る。
【０２１３】
[0220]ビデオコーダは最初に、例えば、パレットベースのコード化においてインデックス値のマップを走査するための、走査方向を決定することができる（３２０）。幾つかの例では、図５の例に関して上で述べられたように、ビデオコーダは、特定の走査方向を使用するように事前に構成され得る。他の例では、ビデオコーダは、走査方向を示す１つ又は複数のシンタックス要素をコード化し、シンタックス要素に基づいて走査方向を決定することができる。更に他の例では、ビデオコーダは、所謂サイド情報に基づいて走査方向を決定することができる。
【０２１４】
[0221]ビデオコーダはまた、パレットの関連付けられるインデックス値を有する、現在コード化されているビデオデータのブロックの位置のマップを決定することができる。例えば、現在コード化されているブロックの１つ又は複数の画素値は、ブロックからのパレット中で表されなくてよい。そのような例では、ビデオコーダは、（パレット中の画素値を特定するインデックス値をコード化するのではなく）画素値を直接コード化することができる。マップは、どの画素位置がインデックス値と関連付けられるかと、どの画素位置がインデックス値と関連付けられないかを示し得る。
【０２１５】
[0222]ビデオコーダは、１つ又は複数の第１のインデックス値を決定する（３２４）。ブロック中の所与の画素に対して、ビデオコーダは、所与の画素の画素値をブロックのためのパレット中のエントリーに関連付ける、インデックス値を決定することができる。
【０２１６】
[0223]ビデオコーダはまた、第１のインデックス値に基づいて、１つ又は複数の第２のインデックス値を決定する（３２６）。例えば、図５に関して上で説明されたように、ビデオコーダは、他のすでにコード化されているインデックス値に対する１つ又は複数のインデックス値を決定することができる。幾つかの例では、ビデオコーダは、連続する同じ値のインデックス値のランに基づいて、第２のインデックス値を決定することができる。他の例では、ビデオコーダは、現在コード化されている画素の線以外の異なる線に含まれる１つ又は複数の第１のインデックス値に基づいて、第２のインデックス値を決定することができる。他の例では、ビデオコーダは、第２のインデックス値を決定するために技法の組合せを適用することができる。
【０２１７】
[0224]例に応じて、本明細書で説明される技法のいずれもの幾つかの動作又はイベントは、異なる順序で実行されてよく、全体的に追加され、結合され、又は除外されてよいことが、認識されるべきである（例えば、説明される活動又は事象の全てが、この技法の実践のために必要であるとは限らない）。その上、幾つかの例では、動作又はイベントは、連続的にではなく、同時に、例えば、マルチスレッド処理、割込み処理、又は複数のプロセッサを通じて実行され得る。更に、本開示の幾つかの態様は、明快にするために単一のモジュール又はユニットによって実行されるものとして説明されているが、本開示の技法はビデオコーダと関連付けられるユニット又はモジュールの組合せによって実行され得ることを理解されたい。
【０２１８】
[0225]本開示の幾つかの態様が、説明のために開発中のＨＥＶＣ規格に関して説明された。しかしながら、本開示で説明される技法は、他の規格又はまだ開発されていないプロプライエタリビデオコード化処理を含む、他のビデオコード化処理のために有用であり得る。
【０２１９】
[0226]上で説明された技法は、ビデオエンコーダ２０（図１及び図２）及び／又はビデオデコーダ３０（図１及び図３）によって実行されてよく、ビデオエンコーダ２０とビデオデコーダ３０の両方が全般にビデオコーダと呼ばれ得る。同様に、ビデオコード化は、適宜、ビデオ符号化又はビデオ復号を指し得る。
【０２２０】
[0227]技法の様々な態様の特定の組合せが上で説明されたが、これらの組合せは、本開示で説明される技法の例を単に示すために与えられる。従って、本開示の技法は、これらの例示的な組合せに限定されるべきではなく、本開示で説明される技法の様々な態様の任意の想起可能な組合せを包含し得る。
【０２２１】
[0228]１つ又は複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、１つ又は複数の命令又はコードとしてコンピュータ可読媒体上に記憶されるか、又はコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行されてよい。コンピュータ可読媒体は、例えば、データ記憶媒体などの有形媒体、又は、例えば通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、（１）非一時的である有形のコンピュータ可読記憶媒体又は（２）信号又はキャリア波のような通信媒体に相当し得る。データ記憶媒体は、本開示で説明される技法の実施のために、１つもしくは複数のコンピュータ又は１つもしくは複数のプロセッサによって、命令、コード及び／又はデータ構造を取り出すためにアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【０２２２】
[0229]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶装置、フラッシュメモリ、又は、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者線（ＤＳＬ）、又は赤外線、無線、及びマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、又は他のリモート発信源から送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、ＤＳＬ、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時的媒体を含まず、代わりに、非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク（disk）及びディスク（disc）は、コンパクトディスク（compact disc）（ＣＤ）、レーザーディスク（登録商標）（laser disc）、光ディスク（optical disc）、デジタル多用途ディスク（digital versatile disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（floppy disk）、及びＢｌｕ−ｒａｙディスク（Blu-ray disc）を含み、ここでディスク（disk）は通常、磁気的にデータを再生するが、ディスク（disc）はレーザを用いて光学的にデータを再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含められるべきである。
【０２２３】
[0230]命令は、１つ又は複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルロジックアレイ（ＦＰＧＡ）、又は他の等価な集積回路若しくはディスクリート論理回路などの１つ又は複数のプロセッサによって実行され得る。従って、本明細書で使用される「プロセッサ」という用語は、前述の構造又は本明細書で説明される技法の実装形態に適した任意の他の構造のいずれをも指し得る。加えて、幾つかの態様では、本明細書で説明される機能は、符号化及び復号のために構成された専用のハードウェア及び／又はソフトウェアモジュール内に設けられてよく、又は複合コーデックに組み込まれてよい。また、技法は、１つ又は複数の回路又は論理素子の中で完全に実施され得る。
【０２２４】
[0231]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）、又はＩＣのセット（例えば、チップセット）を含む多種多様な機器又は装置において実施され得る。様々なコンポーネント、モジュール、又はユニットは、開示された技法を実行するように構成される機器の機能上の態様を強調するために、本開示で説明されるが、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上で述べられたように、様々なユニットは、コーデックハードウェアユニットの中で組み合わされ、又は、上で説明された１つ又は複数のプロセッサを含む、適切なソフトウェア及び／又はファームウェアとともに相互動作可能なハードウェアユニットの集合体よって提供され得る。
【０２２５】
[0232]様々な例が説明されてきた。これら及び他の例は、以下の特許請求の範囲の範囲内にある。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
[１]  ビデオデータをコード化する方法であって、前記ビデオデータのブロック中の第１の画素と関連付けられる第１のインデックス値を決定することと、ここにおいて、前記第１のインデックス値は前記第１の画素の位置を画素値のパレットのエントリーに関連付ける、前記第１のインデックス値に基づいて、ビデオデータの前記ブロック中の１つ以上の第２の画素と関連付けられる１つ以上の第２のインデックス値を決定することと、ここにおいて、前記第２のインデックス値は、前記１つ以上の第２の画素の前記位置を画素値の前記パレットの１つ以上のエントリーに関連付ける、ビデオデータの前記ブロックの前記第１の画素と前記１つ以上の第２の画素とをコード化することとを備える、方法。
[２]  前記１つ以上の第２のインデックス値が複数の第２のインデックスを備え、前記第１のインデックス値に基づく、前記複数の第２のインデックス中の幾つかのインデックスのランを示す１つ以上のシンタックス要素をコード化することを更に備える、［１］に記載の方法。
[３]  前記複数の第２のインデックスが、所定の走査方向の複数の連続する第２のインデックスを備える、［２］に記載の方法。
[４]  前記第１のインデックス値と前記１つ以上の第２のインデックス値とを含むビデオデータの前記ブロックのためのインデックス値のマップを決定することと、前記ブロック中の１つ以上のそれぞれの画素位置の１つ以上の画素値が画素値の前記パレットに含まれるかどうかを示す、１つ以上のシンタックス要素をコード化することとを更に備える、［１］に記載の方法。
[５]  前記第１のインデックス値に基づいて前記１つ以上の第２のインデックス値を決定することが、前記第１のインデックス値を含むビデオデータの前記ブロックの画素位置の線を示す１つ以上のシンタックス要素をコード化することを備える、［１］に記載の方法。
[６]  画素位置の前記線が、ビデオデータの前記ブロックの画素位置の行、行の一部分、列、又は列の一部分を備える、［５］に記載の方法。
[７]  前記線を示す前記１つ以上のシンタックス要素をコード化することが、ビデオデータの前記ブロック中の前記線の場所を特定するデータをコード化することを備える、［５］に記載の方法。
[８]  前記線の前記場所を特定する前記データが、ビデオデータの前記ブロック中の前記行を特定する変位値を備える、［７］に記載の方法。
[９]  前記線を示す前記１つ以上のシンタックス要素をコード化することが、単項コードと切り捨てられた単項コードのうちの１つを使用して前記１つ以上のシンタックス要素をコード化することを備える、［７］に記載の方法。
[１０]  前記１つ以上の第２のインデックス値が前記第１のインデックス値に基づき、前記線がコード化されることを前記１つ以上のシンタックス要素が示すとき、前記第１のインデックス値に基づく幾つかのインデックスのランを示すデータをコード化することと、前記第１のインデックス値に基づかない１つ以上の第３のインデックス値を決定することとを更に備え、前記決定することが、前記１つ以上の第３のインデックス値のための前記パレット中のエントリーを示す１つ以上のシンタックス要素をコード化することと、前記パレット中の前記エントリーに基づく、幾つかのインデックスのランを示すデータをコード化することとを含む、［５］に記載の方法。
[１１]  前記第１のインデックス値と前記１つ以上の第２のインデックス値とを含むビデオデータの前記ブロックのためのインデックス値のマップを決定することと、前記マップの前記インデックス値をコード化するための走査方向を示すデータをコード化することとを更に備える、［１］に記載の方法。
[１２]  ビデオデータの前記ブロックがパレットコード化モードによってコード化されることを示すデータをコード化することと、前記コード化ブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤｉｄ、又はマルチビューコード化におけるビューｉｄの１つ以上に基づいて、パレットコード化モード情報を推測することとの１つ以上に基づいて、パレットコード化モードを使用してビデオデータの前記ブロックがコード化されると決定することを更に備える、［１］に記載の方法。
[１３]  前記ブロックの前記第１の画素と１つ以上の第２の画素とをコード化することが、前記画素を復号することを備え、ここにおいて、前記画素を復号することが、前記第１の画素及び１つ以上の第２の画素のそれぞれのインデックス値を前記パレットの少なくとも１つのエントリーと照合することによって、前記もう１つの画素の値を決定することを備える、［１］に記載の方法。
[１４]  前記ブロックの前記第１の画素と１つ以上の第２の画素とをコード化することが、前記画素を符号化することを備え、ここにおいて、前記画素を符号化することが、符号化されたビットストリームの中で前記第１のインデックス値と１つ以上の第２のインデックス値とを符号化することを備える、［１］に記載の方法。
[１５]  ビデオデータをコード化するための装置であって、前記ビデオデータを記憶するメモリと、１つ以上のプロセッサとを備え、前記１つ以上のプロセッサが、  前記ビデオデータのブロック中の第１の画素と関連付けられる第１のインデックス値を決定し、ここにおいて、前記第１のインデックス値は前記第１の画素の位置を画素値のパレットのエントリーに関連付ける、  前記第１のインデックス値に基づいて、ビデオデータの前記ブロック中の１つ以上の第２の画素と関連付けられる１つ以上の第２のインデックス値を決定し、ここにおいて、前記第２のインデックス値は、前記１つ以上の第２の画素の前記位置を画素値の前記パレットの１つ以上のエントリーに関連付ける、  ビデオデータの前記ブロックの前記第１の画素と前記１つ以上の第２の画素とをコード化する
ように構成される、装置。
[１６]  前記１つ以上の第２のインデックス値が複数の第２のインデックスを備え、前記１つ以上のプロセッサが更に、前記第１のインデックス値に基づく、前記複数の第２のインデックスの幾つかのインデックスのランを示す１つ以上のシンタックス要素をコード化するように構成される、［１５］に記載の装置。
[１７]  前記複数の第２のインデックスが、所定の走査方向の複数の連続する第２のインデックスを備える、［１６］に記載の装置。
[１８]  前記１つ以上のプロセッサが更に、前記第１のインデックス値と前記１つ以上の第２のインデックス値とを含むビデオデータの前記ブロックのためのインデックス値のマップを決定し、前記ブロック中の１つ以上のそれぞれの画素位置の１つ以上の画素値が画素値の前記パレットに含まれるかどうかを示す、１つ以上のシンタックス要素をコード化するように構成される、［１５］に記載の装置。
[１９]  前記第１のインデックス値に基づいて前記１つ以上の第２のインデックス値を決定するために、前記１つ以上のプロセッサが、前記第１のインデックス値を含むビデオデータの前記ブロックの画素位置の線を示す１つ以上のシンタックス要素をコード化するように構成される、［１５］に記載の装置。
[２０]  画素位置の前記線が、ビデオデータの前記ブロックの画素位置の行、行の一部分、列、又は列の一部分を備える、［１９］に記載の装置。
[２１]  前記線を示す前記１つ以上のシンタックス要素をコード化するために、前記１つ以上のプロセッサが、ビデオデータの前記ブロック中の前記線の場所を特定するデータをコード化するように構成される、［１９］に記載の装置。
[２２]  前記線の前記場所を特定する前記データが、ビデオデータの前記ブロック中の前記行を特定する変位値を備える、［２１］に記載の装置。
[２３]  前記線を示す前記１つ以上のシンタックス要素をコード化するために、前記１つ以上のプロセッサが、単項コードと切り捨てられた単項コードのうちの１つを使用して前記１つ以上のシンタックス要素をコード化するように構成される、［２１］に記載の装置。
[２４]  前記１つ以上のプロセッサが更に、前記１つ以上の第２のインデックス値が前記第１のインデックス値に基づき、前記線がコード化されることを前記１つ以上のシンタックス要素が示すとき、前記第１のインデックス値に基づく幾つかのインデックスのランを示すデータをコード化し、前記第１のインデックス値に基づかない１つ以上の第３のインデックス値を決定するように構成され、前記決定することが、前記１つ以上の第３のインデックス値のための前記パレット中のエントリーを示す１つ以上のシンタックス要素をコード化することと、前記パレット中の前記エントリーに基づく、幾つかのインデックスのランを示すデータをコード化することとを含む、［１９］に記載の装置。
[２５]  前記１つ以上のプロセッサが更に、前記第１のインデックス値と前記１つ以上の第２のインデックス値とを含むビデオデータの前記ブロックのためのインデックス値のマップを決定し、前記マップの前記インデックス値をコード化するための走査方向を示すデータをコード化するように構成される、［１５］に記載の装置。
[２６]  前記１つ以上のプロセッサが更に、ビデオデータの前記ブロックがパレットコード化モードによってコード化されることを示すデータをコード化することと、前記コード化ブロックのサイズ、フレームタイプ、色空間、色成分、フレームサイズ、フレームレート、スケーラブルビデオコード化におけるレイヤｉｄ、又はマルチビューコード化におけるビューｉｄの１つ以上に基づいて、パレットコード化モード情報を推測することとの１つ以上に基づいて、パレットコード化モードを使用してビデオデータの前記ブロックがコード化されると決定するように構成される、［１５］に記載の装置。
[２７]  前記ブロックの前記第１の画素と１つ以上の第２の画素とをコード化するために、前記１つ以上のプロセッサが、前記画素を復号するように構成され、前記画素を復号するために、前記１つ以上のプロセッサが、前記第１の画素及び１つ以上の第２の画素のそれぞれのインデックス値を前記パレットの少なくとも１つのエントリーと照合することによって、前記もう１つの画素の値を決定するように構成される、［１５］に記載の装置。
[２８]  前記ブロックの前記第１の画素と１つ以上の第２の画素とをコード化するために、前記１つ以上のプロセッサが、前記画素を符号化するように構成され、前記画素を符号化するために、前記１つ以上のプロセッサが、符号化されたビットストリームの中で前記第１のインデックス値と１つ以上の第２のインデックス値とを符号化するように構成される、［１５］に記載の装置。
[２９]  ビデオデータをコード化するための装置であって、前記ビデオデータのブロック中の第１の画素と関連付けられる第１のインデックス値を決定するための手段と、ここにおいて、前記第１のインデックス値は前記第１の画素の位置を画素値のパレットのエントリーに関連付ける、前記第１のインデックス値に基づいて、ビデオデータの前記ブロック中の１つ以上の第２の画素と関連付けられる１つ以上の第２のインデックス値を決定するための手段と、ここにおいて、前記第２のインデックス値は、前記１つ以上の第２の画素の前記位置を画素値の前記パレットの１つ以上のエントリーに関連付ける、ビデオデータの前記ブロックの前記第１の画素と前記１つ以上の第２の画素とをコード化するための手段とを備える、装置。
[３０]  実行されると、１つ以上のプロセッサに、前記ビデオデータのブロック中の第１の画素と関連付けられる第１のインデックス値を決定させ、ここにおいて、前記第１のインデックス値は前記第１の画素の位置を画素値のパレットのエントリーに関連付ける、前記第１のインデックス値に基づいて、ビデオデータの前記ブロック中の１つ以上の第２の画素と関連付けられる１つ以上の第２のインデックス値を決定させ、ここにおいて、前記第２のインデックス値は、前記１つ以上の第２の画素の前記位置を画素値の前記パレットの１つ以上のエントリーに関連付ける、ビデオデータの前記ブロックの前記第１の画素と前記１つ以上の第２の画素とをコード化させる、命令を記憶した非一時的コンピュータ可読媒体。
【図１】
0006297671.tif 000002
【図２】
0006297671.tif 000003
【図３】
0006297671.tif 000004
【図４】
0006297671.tif 000005
【図５】
0006297671.tif 000006
【図６】
0006297671.tif 000007
【図７】
0006297671.tif 000008
【図８】
0006297671.tif 000009