(57)【特許請求の範囲】
【請求項１】
ビデオデータを処理する方法であって、
ビデオデータのブロックがパレットコード化ブロックであると決定することと、
１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含む、前記ブロックに対するパレットを決定することと、ここにおいて、前記ブロックに対する前記パレットを決定することは、
ビデオエンコーダによって、ピクセル値クラスタリング法を使用して前記パレットに対するパレットサイズと前記パレットエントリとを決定することと、
レートひずみコストに少なくとも部分的に基づいて、前記パレットに対する前記パレットサイズを修正するかどうかを決定することと、
を備え、
ここにおいて、前記パレットサイズを修正するかどうかを決定することは、
ａ）前記パレットの前記パレットエントリのうちの所与の１つに対応する所与のインデックス値を保持するかまたは除去するかを決定すること、ここにおいて、前記所与のインデックス値と、前記パレットの前記パレットエントリのうちの前記対応する１つとを除去することは、前記パレットサイズを低減させる、または、
ｂ）前記パレットの前記パレットエントリのうちの所与の１つに対応する所与のインデックス値を、前記パレットの前記パレットエントリのうちの隣接する１つに対応する隣接するインデックス値に併合させるかどうかを決定すること、ここにおいて、前記所与のインデックス値、および前記パレットの前記パレットエントリのうちの前記対応する１つを、前記隣接するインデックス値、および前記パレットの前記パレットエントリのうちの前記隣接する１つに併合させることは、前記パレットサイズを低減させる、
のいずれかを備え、
前記ブロックの１つまたは複数のピクセルに対するインデックス値を決定することと、前記インデックス値の各々は、前記ブロックの前記ピクセルのうちの１つに対する色値を示す、前記パレットエントリのうちの１つに対応し、
前記ブロックに対する前記パレットおよび前記インデックス値に基づいて、ビデオデータの前記ブロックを再構築することと、
前記ブロックがパレットコード化ブロックであることに基づいて、前記再構築されたブロックのフィルタリングをディセーブルにすることを決定することと、
を備える方法。
【請求項２】
前記再構築されたブロックのフィルタリングをディセーブルにすることを決定することは、前記再構築されたブロックのデブロッキングフィルタリングまたは前記再構築されたブロックのサンプル適応オフセット（ＳＡＯ）フィルタリングのうちの少なくとも１つをディセーブルにすることを備える、請求項１に記載の方法。
【請求項３】
前記ブロックを再構築することは、ビデオエンコーダによって前記ビデオデータの前記ブロックを再構築することを備え、前記方法は、前記フィルタリングがディセーブルにされることに基づいて、前記ビデオデータの前記再構築されたブロックをフィルタリングすることなく、前記ビデオエンコーダによって前記ビデオデータを復号ピクチャバッファに記憶することをさらに備える、請求項１に記載の方法。
【請求項４】
前記ブロックの少なくとも１つのピクセルを符号化するための第１のレートひずみコストを、前記少なくとも１つのピクセルに対する色値を示す、前記パレットエントリのうちの前記所与の１つに対応する前記所与のインデックス値を使用して、計算することと、
前記ブロックの前記少なくとも１つのピクセルに対する量子化ピクセル値を符号化することを含む、前記少なくとも１つのピクセルを、前記パレット中のエントリに対してマッピングしないエスケープピクセルとして符号化するための第２のレートひずみコストを、計算することと、
前記第１のレートひずみコスト計算値と前記第２のレートひずみコスト計算値との比較に基づいて、前記所与のインデックス値と前記パレットの前記パレットエントリのうちの前記対応する１つとを保持するかまたは除去するかを決定することと、
をさらに備える、請求項１に記載の方法。
【請求項５】
前記隣接するインデックス値は、前記所与のインデックス値からの最小ユークリッド距離の観点から最も近いインデックス値、または前記所与のインデックス値に対するインデックス順序の観点から最も近いインデックス値のうちの１つである、請求項１に記載の方法。
【請求項６】
前記ブロックの少なくとも１つのピクセルを符号化するための第１のレートひずみコストを、前記少なくとも１つのピクセルに対する第１の色値を示す前記パレットエントリのうちの前記所与の１つに対応する前記所与のインデックス値を使用して、計算することと、
前記ブロックの前記少なくとも１つのピクセルを符号化するための第２のレートひずみコストを、前記少なくとも１つのピクセルに対する第２の色値を示す、前記パレットエントリのうちの前記隣接する１つに対応する前記隣接するインデックス値を使用して、計算することと、ここにおいて、前記第２の色値は、前記第１の色値に類似し、
前記第１のレートひずみコスト計算値と前記第２のレートひずみコスト計算値との比較に基づいて、前記所与のインデックス値、および前記パレットの前記パレットエントリのうちの前記対応する１つを、前記隣接するインデックス値、および前記パレットの前記パレットエントリのうちの前記隣接する１つに併合させるかどうかを決定することと、
をさらに備える、請求項１に記載の方法。
【請求項７】
ｋ平均クラスタリング法を使用して、前記ビデオデータの前記ブロックに対する代表的パレットを決定することと、前記代表的パレットは、それぞれの平均ピクセル値を示す代表的パレットエントリを含み、
前記代表的パレットの前記代表的パレットエントリのうちの所与の１つに対して、前記代表的パレットエントリのうちの前記所与の１つによって示される前記平均ピクセル値に最も近い、前記代表的パレットエントリのうちの前記所与の１つにマッピングされた前記ピクセルのうちの１つのピクセル値を決定することと、
前記最も近いピクセル値が、前記パレットの前記パレットエントリのうちの対応する１つによって示される前記色値とは異なることに基づいて、前記パレットの前記パレットエントリのうちの前記所与の１つによって示される最終色値として、前記最も近いピクセル値を選択することと、
によって、前記パレットの前記パレットエントリのうちの１つまたは複数を修正するかどうかを決定することをさらに備える、請求項１に記載の方法。
【請求項８】
前記ｋ平均クラスタリング法を使用して前記代表的パレットを決定することは、
前記パレットの前記パレットエントリの各々に対して、前記パレットエントリのうちの前記それぞれの１つによって示される前記それぞれの色値にマッピングされた、前記ブロックの１つまたは複数のピクセルの平均ピクセル値を計算することと、
前記それぞれの平均ピクセル値を示す前記代表的パレットエントリを含む、前記ビデオデータの前記ブロックに対する前記代表的パレットを決定することと、ここにおいて、前記ｋ平均クラスタリング法の反復の数が、しきい値によって決定される、
を備える、請求項７に記載の方法。
【請求項９】
前記ピクセル値クラスタリング法を使用して、前記パレットに対する前記パレットサイズと前記パレットエントリとを決定することは、
前記ビデオデータの前記ブロックに対して、複数のエントリを含むヒストグラムを決定することと、各エントリは、それぞれの色値と、前記色値にマッピングする前記ブロックのピクセルのそれぞれの量とを含み、
前記ヒストグラムの第１のエントリが含む前記色値が、他の色値に対して最高の量のピクセルを有するように、前記エントリの各々に対するピクセルの前記それぞれの量に基づいて、前記ヒストグラムの前記エントリを降順にソートすることと、
前記ヒストグラムの前記エントリに基づいて、前記パレットの前記パレットサイズと前記パレットエントリとを決定することと、
を備える、請求項１に記載の方法。
【請求項１０】
ビデオ処理デバイスであって、
ビデオデータのブロックがパレットコード化ブロックであると決定するための手段と、
１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含む、前記ブロックに対するパレットを決定するための手段と、ここにおいて、前記ブロックに対する前記パレットを決定することは、
ビデオエンコーダによって、ピクセル値クラスタリング法を使用して前記パレットに対するパレットサイズと前記パレットエントリとを決定することと、
レートひずみコストに少なくとも部分的に基づいて、前記パレットに対する前記パレットサイズ、または前記パレットエントリのうちの１つまたは複数、のうちの少なくとも１つを修正するかどうかを決定することと、
を備え、
ここにおいて、前記パレットサイズを修正するかどうかを決定することは、
ａ）前記パレットの前記パレットエントリのうちの所与の１つに対応する所与のインデックス値を保持するかまたは除去するかを決定すること、ここにおいて、前記所与のインデックス値と、前記パレットの前記パレットエントリのうちの前記対応する１つとを除去することは、前記パレットサイズを低減させる、または、
ｂ）前記パレットの前記パレットエントリのうちの所与の１つに対応する所与のインデックス値を、前記パレットの前記パレットエントリのうちの隣接する１つに対応する隣接するインデックス値に併合させるかどうかを決定すること、ここにおいて、前記所与のインデックス値、および前記パレットの前記パレットエントリのうちの前記対応する１つを、前記隣接するインデックス値、および前記パレットの前記パレットエントリのうちの前記隣接する１つに併合させることは、前記パレットサイズを低減させる、
のいずれかを備え、
前記ブロックの１つまたは複数のピクセルに対するインデックス値を決定するための手段と、前記インデックス値の各々は、前記ブロックの前記ピクセルのうちの１つに対する色値を示す、前記パレットエントリのうちの１つに対応し、
前記ブロックに対する前記パレットおよび前記インデックス値に基づいて、ビデオデータの前記ブロックを再構築するための手段と、
前記ブロックがパレットコード化ブロックであることに基づいて、前記再構築されたブロックのフィルタリングをディセーブルにすることを決定するための手段と、
を備える、ビデオ処理デバイス。
【請求項１１】
ビデオデータを処理するための命令を記憶した非一時的コンピュータ可読媒体であって、前記命令は、実行されたとき、１つまたは複数のプロセッサに、請求項１〜請求項１０のうちのいずれか一項に記載の方法を実施させる、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【優先権の主張】
【０００１】
本出願は、その内容全体が参照により本明細書に組み込まれる、２０１４年３月２６日出願の米国仮特許出願第６１／９７０，８３８号の利益を主張するものである。
【技術分野】
【０００２】
本開示は、ビデオ符号化および復号に関する。
【背景技術】
【０００３】
[0003]デジタルビデオ能力は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末（ＰＤＡ）、ラップトップコンピュータまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー電話または衛星無線電話、いわゆる「スマートフォン」、ビデオ会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、ＭＰＥＧ−２、ＭＰＥＧ−４、ＩＴＵ−Ｔ  Ｈ．２６３、ＩＴＵ−Ｔ  Ｈ．１８８／ＭＰＥＧ−４、Ｐａｒｔ１０、アドバンストビデオコーディング（ＡＶＣ）、現在開発中の高効率ビデオコーディング（ＨＥＶＣ）規格によって定義された規格、およびそのような規格の拡張に記載されているもののような、ビデオ圧縮技法を実装する。これらのビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信し、受信し、符号化し、復号し、および／または記憶することができる。
【０００４】
[0004]ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間的（ピクチャ内）予測および／または時間的（ピクチャ間）予測を実施する。ブロックベースのビデオコーディングの場合、ビデオスライス（すなわち、ビデオフレームまたはビデオフレームの一部分）がビデオブロックに区分され得る。ピクチャのイントラコード化（Ｉ）スライスの中のビデオブロックは、同じピクチャの中の隣接ブロックにおける参照サンプルに対する空間的予測を使用して符号化される。ピクチャのインターコード化（ＰまたはＢ）スライス中のビデオブロックは、同じピクチャ中の隣接ブロック中の参照サンプルに対する空間予測、または他の参照ピクチャ中の参照サンプルに対する時間予測を使用し得る。ピクチャはフレームと呼ばれることがあり、参照ピクチャは参照フレームと呼ばれることがある。
【０００５】
[0005]空間予測または時間予測は、コーディングされるべきブロックのための予測ブロックを生じる。残差データは、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトルに従って符号化され、残差データは、コード化ブロックと予測ブロックとの間の差分を示している。イントラコード化ブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データは、ピクセル領域から変換領域に変換されて残差係数をもたらすことができ、その残差係数が次いで量子化され得る。最初に２次元アレイで構成される量子化係数は、係数の１次元ベクトルを生成するために走査される場合があり、なお一層の圧縮を達成するためにエントロピーコーディングが適用される場合がある。
【０００６】
[0006]マルチビューコーディングビットストリームは、たとえば、複数の視点からのビューを符号化することによって生成され得る。マルチビューコーディング態様を利用するいくつかの３次元（３Ｄ）ビデオ規格が開発されている。たとえば、３Ｄビデオをサポートするために、異なるビューが左眼ビューと右眼ビューとを送信し得る。代替的に、いくつかの３Ｄビデオコーディングプロセスは、いわゆるマルチビュー＋深度コーディング（multiview plus depth coding）を適用し得る。マルチビュープラス深度コーディングでは、３Ｄビデオビットストリームは、テクスチャビュー成分だけでなく深度ビュー成分も含み得る。たとえば、各ビューは、１つのテクスチャビュー成分と１つの深度ビュー成分とを備え得る。
【発明の概要】
【０００７】
[0007]概して、本開示では、パレットベースのビデオコーディングのための技法について説明する。パレットベースのコーディングでは、ビデオコーダ（たとえば、ビデオエンコーダまたはビデオデコーダ）は、特定のエリア（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして、いわゆる「パレット（palette）」を形成することができる。パレットベースのコーディングは、比較的少数の色を有するビデオデータのエリアをコーディングするのに特に有用であり得る。所与のブロックに対する実際のピクセル値またはそれらの残差をコーディングするのではなく、ビデオコーダは、ピクセルのうちの１つまたは複数に対するインデックス値をコーディングすることができる。インデックス値は、ピクセルの色を表すパレット中のエントリに対してピクセルをマッピングする。パレットは、明示的に符号化されてデコーダに送られてよく、以前のパレットのエントリから予測されてよく、またはこれらの組合せであってよい。本開示では、ビデオエンコーダまたはビデオデコーダにおけるパレットコード化ブロックのフィルタリング、たとえばデブロッキングフィルタリングまたはサンプル適応オフセット（ＳＡＯ）フィルタリングを無効（ディセーブル（disable））にするかどうかを決定するための技法を説明する。加えて、レートひずみコストに少なくとも部分的に基づいて、ビデオエンコーダにおけるパレットのパレットサイズとパレットエントリとを修正するための技法を説明する。
【０００８】
[0008]一例では、本開示は、ビデオデータを処理する方法を対象とし、その方法は、ビデオデータのブロックがパレットコード化ブロックであると決定することと；１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含む前記ブロックに対するパレットを決定することと；前記ブロックの１つまたは複数のピクセルに対するインデックス値を決定することと、前記インデックス値の各々は前記ブロックの前記ピクセルのうちの１つに対する色値を示す前記パレットエントリのうちの１つに対応する；前記ブロックに対する前記パレットおよび前記インデックス値に基づいてビデオデータの前記ブロックを再構築することと；前記ブロックがパレットコード化ブロックであることに基づいて再構築されたブロックのフィルタリングをディセーブルにすることを決定することとを備える。
【０００９】
[0009]別の例では、本開示は、ビデオデータを記憶するように構成されたメモリと、前記メモリと通信している１つまたは複数のプロセッサとを備えるビデオ処理デバイスを対象とする。１つまたは複数のプロセッサは、ビデオデータのブロックがパレットコード化ブロックであると決定することと；１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含む前記ブロックに対するパレットを決定することと；前記ブロックの１つまたは複数のピクセルに対するインデックス値を決定することと、前記インデックス値の各々は前記ブロックの前記ピクセルのうちの１つに対する色値を示す前記パレットエントリのうちの１つに対応する；前記ブロックに対する前記パレットおよび前記インデックス値に基づいてビデオデータの前記ブロックを再構築することと；前記ブロックがパレットコード化ブロックであることに基づいて再構築されたブロックのフィルタリングをディセーブルにすることを決定することとを行うように構成される。
【００１０】
[0010]さらなる例では、本開示は、ビデオデータのブロックがパレットコード化ブロックであると決定するための手段と；１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含む前記ブロックに対するパレットを決定するための手段と；前記ブロックの１つまたは複数のピクセルに対するインデックス値を決定するための手段と、前記インデックス値の各々は前記ブロックの前記ピクセルのうちの１つに対する色値を示す前記パレットエントリのうちの１つに対応する；前記ブロックに対する前記パレットおよび前記インデックス値に基づいてビデオデータの前記ブロックを再構築するための手段と；前記ブロックがパレットコード化ブロックであることに基づいて再構築されたブロックのフィルタリングをディセーブルにすることを決定するための手段とを備えるビデオ処理デバイスを対象とする。
【００１１】
[0011]追加の例では、本開示は、ビデオデータを処理するための命令を記憶したコンピュータ可読媒体を対象とし、その命令は、実行されたとき、１つまたは複数のプロセッサに、ビデオデータのブロックがパレットコード化ブロックであると決定することと；１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含む前記ブロックに対するパレットを決定することと；前記ブロックの１つまたは複数のピクセルに対するインデックス値を決定することと、前記インデックス値の各々は前記ブロックの前記ピクセルのうちの１つに対する色値を示す前記パレットエントリのうちの１つに対応する；前記ブロックに対する前記パレットおよび前記インデックス値に基づいてビデオデータの前記ブロックを再構築することと；前記ブロックがパレットコード化ブロックであることに基づいて再構築されたブロックのフィルタリングをディセーブルにすることを決定することとを行わせる。
【００１２】
[0012]本開示の１つまたは複数の例の詳細は、添付図面および下の説明の中に記載される。他の特徴、目的、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１３】
【図１】本開示で説明される技法を利用し得る例示的なビデオコーディングシステムを示すブロック図。
【図２】本開示で説明される技法を実装し得る例示的なビデオエンコーダを示すブロック図。
【図３】本開示で説明される技法を実装し得る例示的なビデオデコーダを示すブロック図。
【図４】本開示の技法に従った、パレットベースのビデオコーディングに対するパレットエントリを決定する一例を示す概念図。
【図５】本開示の技法による、パレットコード化ブロックのフィルタリングを決定するビデオコーダの例示的な動作を示すフローチャート。
【図６】本開示の技法による、ビデオデータのパレットコード化ブロックに対するパレットを決定するビデオエンコーダの例示的な動作を示すフローチャート。
【発明を実施するための形態】
【００１４】
[0019]本開示は、ビデオコーディングおよび圧縮のための技法を含む。特に、本開示は、ビデオコンテンツ、特にパレットベースのコーディングを有するスクリーンコンテンツのコーディングをサポートするための技法を説明する。本開示は、ビデオコーディングにおけるパレットサイズ、パレットエントリ、およびパレットコード化ブロックのフィルタリングを決定するための技法を含む、パレットベースのコーディングの複数の技術的態様を説明する。
【００１５】
[0020]従来のビデオコーディングでは、画像は、色調が連続的であり空間的に滑らかであると仮定される。これらの仮定に基づいて、ブロックベースの変換、フィルタリングなどのような様々なツールが開発されており、そのようなツールは、自然のコンテンツのビデオのコーディングに対して良好な性能を示している。ただし、リモートデスクトップ、協調作業、およびワイヤレスディスプレイのような用途では、コンピュータにより生成されたスクリーンコンテンツ（たとえば、テキストまたはコンピュータグラフィックスのような）は、圧縮されるべき主要なコンテンツであり得る。このタイプのコンテンツは、不連続な色調を有し、鋭利なラインと高コントラストのオブジェクト境界とを特徴とする傾向がある。連続的な色調および滑らかさという仮定はもはやスクリーンコンテンツに対しては当てはまらないことがあるので、従来のビデオコーディング技法は、スクリーンコンテンツを含むビデオデータを圧縮するための効率的な方法ではないことがある。
【００１６】
[0021]本開示は、スクリーンにより生成されたコンテンツのコーディングに特に好適であり得る、パレットベースのコーディングを説明する。たとえば、ビデオデータの特定のエリアが比較的少数の色を有し、ビデオコーダ（たとえば、ビデオエンコーダまたはビデオデコーダ）が、特定のエリアのビデオデータを表すためのいわゆる「パレット」を形成し得ると仮定する。パレットは、特定のエリア（たとえば、所与のブロック）のビデオデータを表す色のテーブルとして表され得る。たとえば、パレットは、所与のブロック中の最も支配的な色（たとえば、ピクセル値）を含み得る。いくつかの場合、最も支配的な色は、ブロック内で最も頻繁に現れる１つまたは複数の色を含み得る。さらに、いくつかの場合には、ビデオコーダが、ある色がブロック中の最も支配的な色のうちの１つとして含まれるべきかどうかを決定するために、しきい値を適用し得る。パレットベースのコーディングの様々な態様によれば、ビデオコーダは、現在のブロックについて実際のピクセル値またはそれらの残差をコーディングするのではなく、現在のブロックのピクセルのうちの１つまたは複数を示すインデックス値をコーディングし得る。パレットベースのコーディングのコンテキストにおいて、インデックス値は、現在のブロックの個々のピクセルの色を表すのに使われる、パレット中のそれぞれのエントリを示す。
【００１７】
[0022]たとえば、ビデオエンコーダは、ブロックに対するパレットを決定することと、当該ブロックのピクセルのうちの１つまたは複数の色を表す、当該パレット中のエントリを、位置特定すること（locating）と、当該パレット中の当該エントリを示すインデックス値を有する当該ブロックを符号化することとによってビデオデータのブロックを符号化し得る。パレット中のエントリに対してマッピングする色値を有するブロックのそれらのピクセルに対して、ビデオエンコーダは、それぞれのピクセルに対するエントリのインデックス値を符号化し得る。パレット中のエントリに対してマッピングしない色値を有するブロックのそれらのピクセルに対して、ビデオエンコーダは、ピクセルに対する特別なインデックスを符号化し得、実際のピクセル値またはその残差値（またはそれらの量子化バージョン）を符号化し得る。これらのピクセルは、「エスケープピクセル」と呼ばれることがある。いくつかの例では、ビデオエンコーダは、符号化されたビットストリーム中でパレットと、インデックス値と、任意のエスケープピクセルとをシグナリングし得る。今度は、ビデオデコーダは、ブロックに対するパレット、ならびにブロックのピクセルのうちの１つまたは複数に対するインデックス値およびブロックの任意のエスケープピクセルに対するピクセル値を、符号化されたビットストリームから取得し得る。ビデオデコーダは、ブロックのピクセル値を再構築するために、インデックス値をパレットのエントリにマッピングして、エスケープピクセルを復号し得る。
【００１８】
[0023]ビデオデータのパレットベースのコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングのための技法のような、１つまたは複数の他のコーディング技法とともに使用され得る。たとえば、下でより詳細に説明されるように、ビデオエンコーダもしくはビデオデコーダ、または複合エンコーダ−デコーダ（コーデック）は、インター予測コーディングおよびイントラ予測コーディングと、さらにはパレットベースのコーディングとを実施するように構成され得る。
【００１９】
[0024]いくつかの例では、パレットベースのコーディング技法は、１つまたは複数のビデオコーディング規格とともに使用するために構成され得る。たとえば、Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）は、ＩＴＵ−Ｔ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＶＣＥＧ）およびＩＳＯ／ＩＥＣ  Ｍｏｔｉｏｎ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ（ＭＰＥＧ）のＪｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｏｎ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＪＣＴ−ＶＣ）によって開発された新しいビデオコーディング規格である。最近のＨＥＶＣテキスト仕様ドラフトは、ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１２＿Ｇｅｎｅｖａ／ｗｇ１１／ＪＣＴＶＣ−Ｌ１００３−ｖ３４．ｚｉｐ．から利用可能である、Ｂｒｏｓｓら、「Ｈｉｇｈ  Ｅｆｆｉｃｉｅｎｃｙ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＨＥＶＣ）ｔｅｘｔ  ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｄｒａｆｔ  １０（ｆｏｒ  ＦＤＩＳ  ＆  Ｌａｓｔ  Ｃａｌｌ）」、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３およびＩＳＯ／ＩＥＣ  ＪＣＴ１／ＳＣ２９／ＷＧ１１のＪＣＴ−ＶＣの第１２回会合、スイス  ジュネーブ、２０１３年１月１４〜２３日、ＪＣＴＶＣ−Ｌ１００３＿ｖ３４（「ＨＥＶＣ  Ｄｒａｆｔ１０」）に記載されている。確定したＨＥＶＣ規格文書は、「ＩＴＵ−Ｔ  Ｈ．２６５、ＳＥＲＩＥＳ  Ｈ：ＡＵＤＩＯＶＩＳＵＡＬ  ＡＮＤ  ＭＵＬＴＩＭＥＤＩＡ  ＳＹＳＴＥＭＳ  Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ｏｆ  ａｕｄｉｏｖｉｓｕａｌ  ｓｅｒｖｉｃｅｓ−Ｃｏｄｉｎｇ  ｏｆ  ｍｏｖｉｎｇ  ｖｉｄｅｏ−Ｈｉｇｈ  ｅｆｆｉｃｉｅｎｃｙ  ｖｉｄｅｏ  ｃｏｄｉｎｇ」、国際電気通信連合（ＩＴＵ）の電気通信標準化部門、２０１３年４月として公開されている。
【００２０】
[0025]ＨＥＶＣフレームワークに関して、例として、パレットベースのコーディング技法は、コーディングユニット（ＣＵ）モードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。したがって、ＣＵモードの状況において説明される以下の開示されるプロセスのすべてが、追加で、または代替的に、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
【００２１】
[0026]パレットベースのコーディングの基本的な考えは、各ＣＵ用に、現在のＣＵ中の最も支配的な(dominant)色（すなわち、ピクセル値）を含むパレットが導出されるというものである。パレットのパレットサイズおよびパレットエントリは、ビデオエンコーダからビデオデコーダに送信され得る。パレットのパレットサイズおよびパレットエントリは、１つまたは複数の隣接するＣＵ（たとえば、上および／または左のコード化ＣＵ）に対するパレットのサイズおよびエントリをそれぞれ使用して直接コーディングされてよく、または予測コーディングされてもよい。次いで、ＣＵのピクセルは、一定の走査順序に従うパレットに基づいて符号化され得る。ＣＵ中の各ピクセル位置（location）に対して、フラグは、ピクセルの色がパレット中に含まれるかどうかを示すために送信され得る。パレット中のエントリに対してマッピングするそれらのピクセルに対して、そのエントリと関連付けられるパレットインデックスは、ＣＵ中の所与のピクセル位置についてシグナリングされ得る。パレット中のエントリに対してマッピングしない色値を有するそれらのピクセル（すなわち、エスケープピクセル）に対して、特別なインデックスがピクセルに割り当てられ得、実際のピクセル値またはその残差値（またはそれらの量子化バージョン）が、ＣＵ中の所与のピクセル位置について送信され得る。エスケープピクセルは、固定長コーディング、単項コーディングなど、任意の既存のエントロピーコーディング法を使ってコーディングされ得る。
【００２２】
[0027]パレットベースのビデオコーディングでは、ビデオコーダ（たとえば、ビデオエンコーダまたはビデオデコーダ）は、コーディングされるべき所与のビデオブロックに対するパレットを導出する。上記で説明したように、パレットは、所与のブロック中の最も支配的な色値またはピクセル値を含むように導出される。いくつかの例では、最も支配的な色を決定するために、ヒストグラムが、所与のブロックのピクセルを異なるグループにクラスタ化する（cluster）ために使用され得る。パレットを導出するために適切なアルゴリズムを使用することは、パレットベースのコーディングにおける重要な手順の１つと見なされてよい。本開示の技法は、パレットベースのコーディングに対するパレットの導出における改善を対象とする。
【００２３】
[0028]ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｔ−ｓｕｄｐａｒｉｓ．ｅｕ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１６＿Ｓａｎ  Ｊｏｓｅ／ｗｇ１１／ＪＣＴＶＣ−Ｐ００３５−ｖ１．ｚｉｐ（以下、「ＪＣＴＶＣ−Ｐ００３５」）から利用可能である、Ｇｕｏら、「ＲＣＥ４：Ｓｕｍｍａｒｙ  ｒｅｐｏｒｔ  ｏｆ  ＨＥＶＣ  Ｒａｎｇｅ  Ｅｘｔｅｎｓｉｏｎｓ  Ｃｏｒｅ  Ｅｘｐｅｒｉｍｅｎｔｓ  ４（ＲＣＥ４）ｏｎ  ｐａｌｅｔｔｅ  ｃｏｄｉｎｇ  ｆｏｒ  ｓｃｒｅｅｎ  ｃｏｎｔｅｎｔ」、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３およびＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１のＪｏｉｎｔ  Ｃｏｌｌａｂｏｒａｔｉｏｎ  Ｔｅａｍ  ｏｎ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（ＪＣＴ−ＶＣ）、第１６回会合：米国サンノゼ、２０１４年１月９〜１７日、ＪＣＴＶＣ−Ｐ００３５は、特にスクリーンコンテンツに対する著しいビョンテガードひずみ率（ＢＤ率：Bjontegaard Distortion-rate）低減を達成するために報告されたパレットベースのコーディングの２つの方法を記載している。２つの方法が、以下に簡単に要約される。
【００２４】
[0029]ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１６＿Ｓａｎ  Ｊｏｓｅ／ｗｇ１１／ＪＣＴＶＣ−Ｐ０１０８−ｖ１．ｚｉｐ（以下、「ＪＣＴＶＣ−Ｐ０１０８」）から利用可能である、Ｇｕｏら、「ＲＣＥ４：Ｔｅｓｔ  １．Ｍａｊｏｒ−ｃｏｌｏｒ−ｂａｓｅｄ  ｓｃｒｅｅｎ  ｃｏｎｔｅｎｔ  ｃｏｄｉｎｇ」、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３およびＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１のＪＣＴ−ＶＣ、第１６回会合：米国サンノゼ、２０１４年１月９〜１７日、ＪＣＴＶＣ−Ｐ０１０８により詳細に記載されている第１の方法において、コーディングされるべきＣＵのピクセルを分類するために、ヒストグラムベースのアルゴリズムが使用される。特に、ヒストグラムにおける最上位のＮピーク値が、ＣＵに対する主要な色として選択される。主要な色のうちの１つに近いピクセル値が、当該主要な色に対して量子化され得る。主要な色のいずれにも属さないピクセルはエスケープピクセルと見なされ、エスケープピクセルも同様に、コーディング前に量子化される。無損失コーディングに対し、量子化は使用されない。
【００２５】
[0030]第１の方法によれば、分類（classification）を使用することによって、ＣＵのピクセルが、色インデックスに変換され得る。主要な色の数および値がコーディングされ、次いで、色インデックスがコーディングされる。ＣＵの各ピクセルラインに対して、コーディングモードを示すために、フラグがシグナリングされる。水平モード、垂直モード、および通常モードの３つのモードがある。モードが水平モードである場合、ＣＵのすべてのピクセルラインは同じ色インデックスを共有し、各ピクセルラインに対する色インデックスが送信される。モードが垂直モードである場合、すべてのピクセルラインは、上記のピクセルラインと同じである。この場合、現在のピクセルラインは、上記のピクセルラインの色インデックスをコピーするので、何も送信されない（たとえば、符号化されたビットストリーム中に何もシグナリングされない）。モードが通常モードである場合、ピクセル位置が左および上のピクセルのうちの１つと同じ位置であるかどうかを示すために、各ピクセル位置に対してフラグがシグナリングされる。現在のピクセルが左および上のピクセルと異なる場合、現在のピクセルに対するインデックスが送信される。加えて、現在のピクセルがエスケープピクセルである場合、そのピクセル値が送信される。
【００２６】
[0031]ｈｔｔｐ：／／ｐｈｅｎｉｘ．ｉｎｔ−ｅｖｒｙ．ｆｒ／ｊｃｔ／ｄｏｃ＿ｅｎｄ＿ｕｓｅｒ／ｄｏｃｕｍｅｎｔｓ／１６＿Ｓａｎ  Ｊｏｓｅ／ｗｇ１１／ＪＣＴＶＣ−Ｐ０１９８−ｖ３．ｚｉｐ（以下、「ＪＣＴＶＣ−Ｐ０１９８」と呼ばれる）から利用可能である、Ｇｕｏら、「ＲＣＥ４：Ｒｅｓｕｌｔｓ  ｏｆ  Ｔｅｓｔ  ２  ｏｎ  Ｐａｌｅｔｔｅ  Ｍｏｄｅ  ｆｏｒ  Ｓｃｒｅｅｎ  Ｃｏｎｔｅｎｔ  Ｃｏｄｉｎｇ」、ＩＴＵ−Ｔ  ＳＧ１６  ＷＰ３およびＩＳＯ／ＩＥＣ  ＪＴＣ１／ＳＣ２９／ＷＧ１１のＪＣＴ−ＶＣ、第１６回会合：米国サンノゼ、２０１４年１月９〜１７日、ＪＣＴＶＣ−Ｐ０１９８により詳細に記載されている第２の方法において、パレットベースのビデオコーディングが、ＣＵモードとして紹介されている。第２の方法の符号化プロセスは、最初に、現在のＣＵに対するパレットの送信を含む。エントリ単位（entry-wise）の予測方式は、左のＣＵ（すなわち、現在のＣＵの左に現在隣接するＣＵ）のパレットに基づいて現在のパレットを符号化するために使用される。その後、パレットの非予測エントリ（non-predicted entry）が送信される。
【００２７】
[0032]第２の方法の符号化プロセスもまた、現在のＣＵのピクセル値の送信を含む。現在のＣＵ中のピクセルは、以下の３つのモードを使用してラスタ走査順序で符号化される。「ランモード」では、パレットインデックスが最初にシグナリングされ、長さＭの「ｐａｌｅｔｔｅ＿ｒｕｎ」によって後続される。後続のＭパレットインデックスは、シグナリングされたパレットインデックスと同じである。「上コピーモード（copy above mode）」では、後続のＮパレットインデックスがそれぞれ、上のピクセルライン中のそれぞれのパレットインデックスと同じであることを示すために、長さＮの値「ｃｏｐｙ＿ｒｕｎ」が送信される。「ピクセルモード」では、予測フラグが、最初に送信される。１に等しい予測フラグは、予測残差が、予測子として再構築された上部隣接ピクセルを使用して現在のピクセル値に対して送信されることを示す。予測フラグが０に等しい場合、現在のピクセル値が、予測なしに送信される。
【００２８】
[0033]本開示の技法は、パレットベースのコーディングに対するパレットの導出における改善を対象とする。より具体的には、本開示の技法は、ビデオエンコーダにおいてパレットのパレットサイズとパレットエントリとを修正することと、ビデオエンコーダまたはビデオデコーダにおいてパレットコード化ブロックのフィルタリングをディセーブル（無効）にするかどうかを決定することとを含む。
【００２９】
[0034]いくつかの例では、パレットサイズおよびパレットエントリが、ＪＣＴＶＣ−Ｐ０１０８に記載のクラスタリング法を使用して現在のブロックに対して決定された後、本開示の技法は、ビデオエンコーダが、レートひずみコストに従ってパレットサイズを適応的に決定し、パレットエントリを変更することを可能にする。このようにして、本技法は、クラスタリング法によってパレットに対して当初決定されたパレットサイズおよびパレットエントリの修正を可能にする。たとえば、本技法は、パレットの所与のインデックス値を保持するかまたは除去するかを決定することと、所与のインデックス値を隣接するインデックス値に併合（merge）させるかどうかを決定することと、計算されたパレットエントリを洗練することとを含む。本開示は、主に、ビデオエンコーダによって実施される、パレットサイズおよびパレットエントリの修正のための技法を説明するが、他の例では、パレット修正技法は、ビデオデコーダによって実施されてもよい。その場合、たとえば、ビデオデコーダは、パレットを別々に導出して修正してよく、または本開示の技法に従ってビデオエンコーダによってシグナリングされるパレットを修正してもよい。
【００３０】
[0035]加えて、本技法は、ビデオエンコーダおよびビデオデコーダが、パレットコード化ブロックのフィルタリング、たとえばデブロッキングフィルタリングまたはサンプル適応オフセット（ＳＡＯ）フィルタリングをディセーブルにすることを可能にする。従来、パレットコード化ブロックは、インターコード化ブロックと同様に取り扱われており、したがって、復号ピクチャバッファに記憶される前、または表示のために出力される前に、フィルタリングが、再構築されたブロックに対して自動的に適用された。本開示の技法によれば、ビデオエンコーダおよびビデオデコーダは、再構築されたブロックがパレットコード化ブロックであると決定してよく、その決定に基づいて、ブロックを記憶または出力する前にフィルタリングをディセーブルにしてよい。パレットコード化ブロックに対してフィルタリングを適用することは、（たとえば、パレットコーディングに通常と関連付けられる比較的離散的な色調を仮定すると）インターコード化ブロックと同じ方式で改善された出力をもたらさないことがある。したがって、本開示の技法は、品質に影響を及ぼすことなく（または比較的小さい影響を及ぼして）パレットコード化ブロックに対するコーディングの複雑さを低減するために使用され得る。
【００３１】
[0036]図１は、本開示の技法を利用することができる例示的なビデオコーディングシステム１０を示すブロック図である。本明細書で使用される「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指し得る。ビデオコーディングシステム１０のビデオエンコーダ２０およびビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実施するように構成され得るデバイスの例を表す。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵのような、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣ規格によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。
【００３２】
[0037]図１に示すように、ビデオコーディングシステム１０は、ソースデバイス１２と宛先デバイス１４とを含む。ソースデバイス１２は、符号化ビデオデータを生成する。したがって、ソースデバイス１２は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれ得る。宛先デバイス１４は、ソースデバイス１２によって生成された符号化ビデオデータを復号することができる。したがって、宛先デバイス１４は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれ得る。ソースデバイス１２および宛先デバイス１４は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
【００３３】
[0038]ソースデバイス１２および宛先デバイス１４は、デスクトップコンピュータ、ワイヤレス通信デバイス、モバイルコンピューティングデバイス、ノートブック（たとえば、ラップトップ）コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンのような電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
【００３４】
[0039]宛先デバイス１４は、チャネル１６を介してソースデバイス１２から符号化ビデオデータを受信することができる。チャネル１６は、ソースデバイス１２から宛先デバイス１４に符号化ビデオデータを移動させることが可能な、１つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル１６は、ソースデバイス１２がリアルタイムで符号化ビデオデータを直接宛先デバイス１４に送信することを可能にする、１つまたは複数の通信媒体を備え得る。この例では、ソースデバイス１２は、ワイヤレス通信プロトコルなどの通信規格に従って、符号化ビデオデータを変調することができ、変調されたビデオデータを宛先デバイス１４に送信することができる。１つまたは複数の通信媒体は、無線周波数（ＲＦ）スペクトルまたは１つもしくは複数の物理伝送線路などのワイヤレスおよび／もしくはワイヤード通信媒体を含み得る。１つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク（たとえば、インターネット）などの、パケットベースネットワークの一部を形成し得る。１つまたは複数の通信媒体は、ソースデバイス１２から宛先デバイス１４への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含み得る。
【００３５】
[0040]別の例では、チャネル１６は、ソースデバイス１２によって生成された符号化ビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス１４は、ディスクアクセスまたはカードアクセスを介して記憶媒体にアクセスし得る。記憶媒体は、Ｂｌｕ−ｒａｙ（登録商標）ディスク、ＤＶＤ、ＣＤ−ＲＯＭ、フラッシュメモリ、または符号化ビデオデータを記憶するための他の適切なデジタル記憶媒体など、様々なローカルにアクセスされるデータ記憶媒体を含み得る。
【００３６】
[0041]さらなる例では、チャネル１６は、ソースデバイス１２によって生成された符号化ビデオデータを記憶する、ファイルサーバまたは別の中間記憶デバイスを含む場合がある。この例では、宛先デバイス１４は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間記憶デバイスに記憶された符号化ビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、符号化ビデオデータを宛先デバイス１４に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバは、（たとえば、ウェブサイト用の）ウェブサーバ、ファイル転送プロトコル（ＦＴＰ）サーバ、ネットワーク接続ストレージ（ＮＡＳ）デバイス、およびローカルディスクドライブを含む。
【００３７】
[0042]宛先デバイス１４は、インターネット接続などの標準的なデータ接続を介して符号化ビデオデータにアクセスすることができる。例示的なタイプのデータ接続は、ファイルサーバに記憶されている符号化ビデオデータにアクセスするのに好適である、ワイヤレスチャネル（たとえば、Ｗｉ−Ｆｉ（登録商標）接続）、ワイヤード接続（たとえば、ＤＳＬ、ケーブルモデムなど）、またはその両方の組合せを含み得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその両方の組合せであり得る。
【００３８】
[0043]本開示の技法は、ワイヤレス適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの、様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム１０は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および／またはビデオテレフォニーなどの用途をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００３９】
[0044]図１は一例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング設定（たとえば、ビデオ符号化またはビデオ復号）に適用され得る。他の例では、データが、ローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶し得、および／またはビデオ復号デバイスはメモリからデータを取り出し、復号し得る。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および／またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。
【００４０】
[0045]図１の例では、ソースデバイス１２は、ビデオソース１８と、ビデオエンコーダ２０と、出力インターフェース２２とを含む。いくつかの例では、出力インターフェース２２は、変調器／復調器（モデム）および／または送信機を含み得る。ビデオソース１８は、ビデオキャプチャデバイス、たとえばビデオカメラ、以前にキャプチャされたビデオデータを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および／もしくは、ビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含み得る。
【００４１】
[0046]ビデオエンコーダ２０は、ビデオソース１８からのビデオデータを符号化することができる。いくつかの例では、ソースデバイス１２は、出力インターフェース２２を介して宛先デバイス１４に符号化ビデオデータを直接送信する。他の例では、符号化ビデオデータはまた、復号および／または再生のための宛先デバイス１４による後のアクセスのために、記憶媒体またはファイルサーバ上に記憶され得る。
【００４２】
[0047]図１の例では、宛先デバイス１４は、入力インターフェース２８と、ビデオデコーダ３０と、ディスプレイデバイス３２とを含む。いくつかの例では、入力インターフェース２８は、受信機および／またはモデムを含む。入力インターフェース２８は、チャネル１６を介して符号化ビデオデータを受信することができる。ディスプレイデバイス３２は、宛先デバイス１４に統合されることがあり、またはその外部にあることがある。一般に、ディスプレイデバイス３２は復号ビデオデータを表示する。ディスプレイデバイス３２は、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、有機発光ダイオード（ＯＬＥＤ）ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスを備え得る。
【００４３】
[0048]本開示は全般に、ビデオエンコーダ２０が、ある情報をビデオデコーダ３０のような別のデバイスに「シグナリングすること」または「送信すること」に言及することがある。「シグナリング」または「送信」という用語は、一般に、圧縮されたビデオデータを復号するために使用されるシンタックス要素および／または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムに起こり得る。代替的に、そのような通信は、符号化のときに符号化されたビットストリームの中でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに起こり得るなど、ある時間の長さにわたって起こることがあり、これらの要素は次いで、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。したがって、ビデオデコーダ３０は、ある情報を「受信する」ものとして呼ばれ得るが、情報の受信は、必ずしもリアルタイムまたはほぼリアルタイムで起こるとは限らず、記憶の後の何らかの時間に媒体から取り出されることがある。
【００４４】
[0049]ビデオエンコーダ２０およびビデオデコーダ３０はそれぞれ、１つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ディスクリート論理、ハードウェア、またはそれらの任意の組合せなどの、様々な適切な回路のいずれかとして実装され得る。本技法がソフトウェアで部分的に実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェア用の命令を記憶し、１つまたは複数のプロセッサを使用してその命令をハードウェア内で実行して、本開示の技法を実行することができる。（ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む）上記のいずれもが、１つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ２０およびビデオデコーダ３０の各々は、１つもしくは複数のエンコーダまたはデコーダの中に含まれてよく、そのいずれかが、ワイヤレス通信デバイスなど、それぞれのデバイスにおいて複合エンコーダ／デコーダ（コーデック）の一部として統合されてよい。
【００４５】
[0050]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、上で言及されＨＥＶＣ規格に記載されるＨＥＶＣ規格のような、ビデオ圧縮規格に従って動作する。基本的なＨＥＶＣ規格に加えて、ＨＥＶＣのためのスケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、および３Ｄコーディング拡張を作成するための作業が進行中である。加えて、たとえば本開示で説明されるような、パレットベースのコーディングモードは、ＨＥＶＣ規格の拡張のために提供され得る。いくつかの例では、パレットベースのコーディングのために本開示で説明される技法は、ＩＴＵ−Ｔ−Ｈ．１８８／ＡＶＣ規格または将来の規格のような、他のビデオコーディング規格に従って動作するように構成される、エンコーダおよびデコーダに適用され得る。したがって、ＨＥＶＣコーデックにおけるコーディングユニット（ＣＵ）または予測ユニット（ＰＵ）のコーディングのためのパレットベースのコーディングモードの適用が、例として説明される。
【００４６】
[0051]ＨＥＶＣおよび他のビデオコーディング規格では、ビデオシーケンスは、一般に、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれる場合もある。ピクチャは、ＳL、ＳCb、およびＳCrと表記される３つのサンプルアレイを含む場合がある。ＳLは、ルーマサンプルの２次元アレイ（すなわち、ブロック）である。ＳCbは、Ｃｂクロミナンスサンプルの２次元アレイである。ＳCrは、Ｃｒクロミナンスサンプルの２次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれる場合もある。他の事例では、ピクチャは、モノクロームであってよく、ルーマサンプルのアレイのみを含み得る。
【００４７】
[0052]ピクチャの符号化表現を生成するために、ビデオエンコーダ２０は、コーディングツリーユニット（ＣＴＵ）のセットを生成することができる。各ＣＴＵは、ルーマサンプルのコーディングツリーブロック、クロマサンプルの２つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするのに使用されるシンタックス構造であり得る。コーディングツリーブロックは、サンプルのＮ×Ｎのブロックであり得る。ＣＴＵは、「ツリーブロック」または「最大コーディングユニット」（ＬＣＵ）とも呼ばれることがある。ＨＥＶＣのＣＴＵは、Ｈ．１８８／ＡＶＣのような、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、ＣＴＵは、必ずしも特定のサイズには限定されず、１つまたは複数のコーディングユニット（ＣＵ）を含み得る。スライスは、ラスタ走査において連続的に順序付けられた整数個のＣＴＵを含み得る。
【００４８】
[0053]コード化ＣＴＵを生成するために、ビデオエンコーダ２０は、コーディングツリーブロックをコーディングブロックに分割するように、ＣＴＵのコーディングツリーブロックに対して４分木区分を再帰的に実施することができ、したがって「コーディングツリーユニット」という名称である。コーディングブロックは、サンプルのＮ×Ｎブロックである。ＣＵは、ルーマサンプルアレイ、ＣｂサンプルアレイおよびＣｒサンプルアレイ、ならびにコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造を有するピクチャの、ルーマサンプルの１つのコーディングブロックおよびクロマサンプルの２つの対応するコーディングブロックであり得る。ビデオエンコーダ２０は、ＣＵのコーディングブロックを１つまたは複数の予測ブロックに区分することができる。予測ブロックは、同じ予測が適用されるサンプルの矩形（すなわち、正方形または非正方形）ブロックであり得る。ＣＵの予測ユニット（ＰＵ）は、ルーマサンプルの予測ブロック、ピクチャのクロマサンプルの２つの対応する予測ブロック、および予測ブロックサンプルを予測するために使用されるシンタックス構造であり得る。ビデオエンコーダ２０は、ＣＵの各ＰＵのルーマ予測ブロック、Ｃｂ予測ブロック、およびＣｒ予測ブロックのために、予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成することができる。
【００４９】
[0054]ビデオエンコーダ２０は、ＰＵに関する予測ブロックを生成するためにイントラ予測またはインター予測を使用することができる。ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャの復号されたサンプルに基づいて、ＰＵの予測ブロックを生成し得る。
【００５０】
[0055]ビデオエンコーダ２０がＰＵの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ２０は、ＰＵに関連付けられたピクチャ以外の１つまたは複数のピクチャの復号されたサンプルに基づいて、ＰＵの予測ブロックを生成し得る。ビデオエンコーダ２０は、ＰＵの予測ブロックを生成するために、単予測または双予測を使用し得る。ビデオエンコーダ２０が、ＰＵのための予測ブロックを生成するために単予測を使用するとき、ＰＵは単一のＭＶを有し得る。ビデオエンコーダ２０が、ＰＵのための予測ブロックを生成するために双予測を使用するとき、ＰＵは２つのＭＶを有し得る。
【００５１】
[0056]ビデオエンコーダ２０がＣＵの１つまたは複数のＰＵの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成した後、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックを生成することができる。ＣＵのルーマ残差ブロック中の各サンプルは、ＣＵの予測ルーマブロックの１つの中のルーマサンプルとＣＵの元のルーマコーディングブロック中の対応するサンプルとの間の差分を示す。さらに、ビデオエンコーダ２０は、ＣＵのためのＣｂ残差ブロックを生成し得る。ＣＵのＣｂ残差ブロック中の各サンプルは、ＣＵの予測Ｃｂブロックのうちの１つの中のＣｂサンプルと、ＣＵの元のＣｂコーディングブロック中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ２０は、ＣＵのためのＣｒ残差ブロックを生成することもできる。ＣＵのＣｒ残差ブロック中の各サンプルは、ＣＵの予測Ｃｒブロックのうちの１つの中のＣｒサンプルと、ＣＵの元のＣｒコーディングブロック中の対応するサンプルとの間の差分を示し得る。
【００５２】
[0057]さらに、ビデオエンコーダ２０は、ＣＵのルーマ残差ブロックと、Ｃｂ残差ブロックと、Ｃｒ残差ブロックとを、１つまたは複数のルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックに分解するために、４分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであり得る。ＣＵの変換ユニット（ＴＵ）は、ルーマサンプルの変換ブロック、クロマサンプルの２つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造であり得る。したがって、ＣＵの各ＴＵは、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックに関連付けられ得る。ＴＵに関連付けられたルーマ変換ブロックは、ＣＵのルーマ残差ブロックのサブブロックであってよい。Ｃｂ変換ブロックは、ＣＵのＣｂ残差ブロックのサブブロックであってよい。Ｃｒ変換ブロックは、ＣＵのＣｒ残差ブロックのサブブロックであってよい。
【００５３】
[0058]ビデオエンコーダ２０は、ＴＵに関するルーマ係数ブロックを生成するために、ＴＵのルーマ変換ブロックに１回または複数回の変換を適用し得る。係数ブロックは、変換係数の２次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ２０は、ＴＵのＣｂ変換ブロックに１回または複数回の変換を適用して、ＴＵのＣｂ係数ブロックを生成し得る。ビデオエンコーダ２０は、ＴＵのためのＣｒ係数ブロックを生成するために、ＴＵのＣｒ変換ブロックに１つまたは複数の変換を適用し得る。
【００５４】
[0059]係数ブロック（たとえば、ルーマ係数ブロック、Ｃｂ係数ブロックまたはＣｒ係数ブロック）を生成した後、ビデオエンコーダ２０は、係数ブロックを量子化することができる。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。ビデオエンコーダ２０が係数ブロックを量子化した後、ビデオエンコーダ２０は、量子化変換係数を示すシンタックス要素をエントロピーエンコーディングし得る。たとえば、ビデオエンコーダ２０は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング（ＣＡＢＡＣ：Context-Adaptive Binary Arithmetic Coding）を実行し得る。ビデオエンコーダ２０は、エントロピー符号化シンタックス要素をビットストリームの中に出力し得る。
【００５５】
[0060]ビデオエンコーダ２０は、エントロピー符号化シンタックス要素を含むビットストリームを出力することができる。ビットストリームは、コード化ピクチャおよび関連データの表現を形成するビットのシーケンスを含む場合がある。ビットストリームは、ネットワークアブストラクションレイヤ（ＮＡＬ）ユニットのシーケンスを備える場合がある。ＮＡＬユニットの各々は、ＮＡＬユニットヘッダを含み、ローバイトシーケンスペイロード（ＲＢＳＰ）をカプセル化する。ＮＡＬユニットヘッダは、ＮＡＬユニットタイプコードを示すシンタックス要素を含む場合がある。ＮＡＬユニットのＮＡＬユニットヘッダによって規定されるＮＡＬユニットタイプコードは、ＮＡＬユニットのタイプを示す。ＲＢＳＰは、ＮＡＬユニット内にカプセル化された整数個のバイトを含む、シンタックス構造であり得る。いくつかの事例では、ＲＢＳＰは０ビットを含む。
【００５６】
[0061]異なるタイプのＮＡＬユニットは、異なるタイプのＲＢＳＰをカプセル化することができる。たとえば、第１のタイプのＮＡＬユニットはピクチャパラメータセット（ＰＰＳ）に関するＲＢＳＰをカプセル化することができ、第２のタイプのＮＡＬユニットはコード化スライスに関するＲＢＳＰをカプセル化することができ、第３のタイプのＮＡＬユニットはＳＥＩに関するＲＢＳＰをカプセル化し得、以下同様である。ビデオコーディングデータのためのＲＢＳＰをカプセル化するＮＡＬユニットは（パラメータセットおよびＳＥＩメッセージのためのＲＢＳＰとは対照的に）、ビデオコーディングレイヤ（ＶＣＬ）ＮＡＬユニットと呼ばれ得る。
【００５７】
[0062]ビデオデコーダ３０は、ビデオエンコーダ２０によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ３０は、ビットストリームからシンタックス要素を復号するためにビットストリームを解析し得る。ビデオデコーダ３０は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築し得る。ビデオデータを再構築するための処理は、全般に、ビデオエンコーダ２０によって実行される処理の逆であり得る。
【００５８】
[0063]たとえば、ビデオデコーダ３０は、ＰＵのＭＶを使用して、現在のＣＵのＰＵの予測サンプルブロックを決定することができる。加えて、ビデオデコーダ３０は、現在のＣＵのＴＵと関連付けられる変換係数ブロックを逆量子化することができる。ビデオデコーダ３０は、現在のＣＵのＴＵと関連付けられる変換ブロックを再構築するために、変換係数ブロックに対して逆変換を実施することができる。ビデオデコーダ３０は、現在のＣＵのＰＵのための予測サンプルブロックのサンプルを現在のＣＵのＴＵの変換ブロックの対応するサンプルに加算することによって、現在のＣＵのコーディングブロックを再構築し得る。ピクチャの各ＣＵのコーディングブロックを再構築することによって、ビデオデコーダ３０はピクチャを再構築することができる。
【００５９】
[0064]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、パレットベースのコーディングを実施するように構成され得る。たとえば、パレットベースのコーディングでは、上で説明されたイントラ予測コーディング技法またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ２０およびビデオデコーダ３０は、特定の領域（たとえば、所与のブロック）のビデオデータを表すための色のテーブルとして、いわゆるパレットをコーディングすることができる。各ピクセルは、ピクセルの色を表すパレット中のエントリと関連付けられ得る。たとえば、ビデオエンコーダ２０およびビデオデコーダ３０は、ピクセル値をパレット中の適切な値と関連付けるインデックスをコーディングすることができる。
【００６０】
[0065]上の例では、ビデオエンコーダ２０は、ブロックのためのパレットを決定すること、各ピクセルの値を表すためのパレット中のエントリを位置特定すること、および、ピクセル値をパレットに関連付ける、ピクセルのインデックス値によってパレットを符号化することによって、ビデオデータのブロックを符号化することができる。ビデオデコーダ３０は、符号化されたビットストリームから、ブロックのためのパレットと、さらにはブロックのピクセルのインデックス値とを取得することができる。ビデオデコーダ３０は、ブロックのピクセル値を再構築するために、ピクセルのインデックス値をパレットのエントリに関連付けることができる。
【００６１】
[0066]いくつかの例では、ビデオエンコーダ２０は、同じピクセル値を有する所与の走査順序のいくつかの連続するピクセルを示す１つまたは複数のシンタックス要素を符号化することができる。同様の値のピクセル値の列は、本明細書では「ラン」と呼ばれることがある。例示を目的とする例では、所与の走査順序の２つの連続するピクセルが異なる値を有する場合、ランは０に等しい。所与の走査順序の２つの連続するピクセルが同じ値を有するが、その走査順序の３番目のピクセルが異なる値を有する場合、ランは１に等しい。ビデオデコーダ３０は、符号化されたビットストリームからランを示すシンタックス要素を取得し、そのデータを使用して、同じインデックス値を有する連続するピクセルの場所の数を決定することができる。
【００６２】
[0067]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、インデックス値のマップの１つまたは複数のエントリに対するラインコピーを実施し得る。たとえば、ビデオエンコーダ２０は、インデックスマップ中の特定のエントリに対するピクセル値が、特定のエントリの上のライン中のエントリに等しいことを示し得る。ビデオエンコーダ２０はまた、特定のエントリの上のラインの中のエントリに等しい走査順序におけるインデックスの数をランとして示すことができる。この例では、ビデオエンコーダ２０およびまたはビデオデコーダ３０は、規定された隣接するラインから、および、現在コーディングされているマップのラインに対する規定された数のエントリから、インデックス値をコピーすることができる。
【００６３】
[0068]本開示の技法によれば、ビデオエンコーダ２０およびビデオデコーダ３０は、再構築されたブロックがパレットコード化ブロックであるかどうかに基づいて、再構築されたブロックのフィルタリングをディセーブルにするか否かを決定し得る。加えて、ビデオエンコーダ２０は、パレットコード化ブロックに対するパレットを導出してよく、レートひずみコストに少なくとも部分的に基づいて、パレットのパレットサイズまたは１つまたは複数のパレットエントリのうちの少なくとも１つを修正するかどうかを決定してよい。特に、いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、図４〜図６に関して以下でより詳細に説明される本開示の技法を実施するように構成され得る。
【００６４】
[0069]図２は、本開示の技法を実装し得る例示的なビデオエンコーダ２０を示すブロック図である。図２は、説明の目的で与えられており、本開示において広く例示され、説明される技法を限定するものと見なされるべきではない。説明のために、本開示は、ＨＥＶＣコーディングのコンテキストにおいてビデオエンコーダ２０を説明する。ただし、本開示の技法は他のコーディング規格または方法に適用可能であり得る。
【００６５】
[0070]ビデオエンコーダ２０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオエンコーダ２０は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵのような、ビデオデータの様々なブロックを選択的にコーディングするように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣ規格によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオエンコーダ２０は、一例では、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置の少なくともいくつかを選択されたピクセル値にそれぞれ対応するパレット中のエントリと関連付ける情報をシグナリングするように構成され得る。シグナリングされた情報は、ビデオデータを復号するためにビデオデコーダ３０によって使用され得る。
【００６６】
[0071]図２の例では、ビデオエンコーダ２０は、ビデオデータメモリ９８と、予測処理ユニット１００と、残差生成ユニット１０２と、変換処理ユニット１０４と、量子化ユニット１０６と、逆量子化ユニット１０８と、逆変換処理ユニット１１０と、再構築ユニット１１２と、フィルタユニット１１４と、復号ピクチャバッファ１１６と、エントロピー符号化ユニット１１８とを含む。予測処理ユニット１００は、インター予測処理ユニット１２０と、イントラ予測処理ユニット１２６とを含む。インター予測処理ユニット１２０は、動き推定ユニットと、動き補償ユニットと（図示せず）を含む。ビデオエンコーダ２０はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実施するように構成される、パレットベースの符号化ユニット１２２を含む。他の例では、ビデオエンコーダ２０は、より多数の、より少数の、または異なる機能的な構成要素を含み得る。
【００６７】
[0072]ビデオデータメモリ９８は、ビデオエンコーダ２０の構成要素によって符号化されるべきビデオデータを記憶することができる。ビデオデータメモリ９８内に記憶されるビデオデータは、たとえば、ビデオソース１８から取得され得る。復号ピクチャバッファ１１６は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ２０によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ９８および復号ピクチャバッファ１１６は、同期ＤＲＡＭ（ＳＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ（登録商標））、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ９８および復号ピクチャバッファ１１６は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ９８は、ビデオエンコーダ２０の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
【００６８】
[0073]ビデオエンコーダ２０は、ビデオデータを受信することができる。ビデオエンコーダ２０は、ビデオデータのピクチャのスライス内の各ＣＴＵを符号化することができる。ＣＴＵの各々は、ピクチャの等しいサイズのルーマコーディングツリーブロック（ＣＴＢ）と、対応するＣＴＢとに関連付けられる場合がある。ＣＴＵを符号化することの一部として、予測処理ユニット１００は、ＣＴＵのＣＴＢを徐々により小さいブロックに分割するために、４分木区分化を実行することができる。より小さいブロックはＣＵのコーディングブロックであり得る。たとえば、予測処理ユニット１００は、ＣＴＵに関連付けられたＣＴＢを４つの等しいサイズのサブブロックに区分し得、サブブロックのうちの１つまたは複数を４つの等しいサイズのサブサブブロックに区分し得、以下同様である。
【００６９】
[0074]ビデオエンコーダ２０は、ＣＵの符号化表現（すなわち、コード化ＣＵ）を生成するために、ＣＴＵのＣＵを符号化し得る。ＣＵを符号化することの一部として、予測処理ユニット１００は、ＣＵの１つまたは複数のＰＵの間でＣＵに関連付けられたコーディングブロックを区分し得る。したがって、各ＰＵは、ルーマ予測ブロックおよび対応するクロマ予測ブロックに関連付けられ得る。ビデオエンコーダ２０およびビデオデコーダ３０は、様々なサイズを有するＰＵをサポートすることができる。上で示されたように、ＣＵのサイズはＣＵのルーマコーディングブロックのサイズを指すことがあり、ＰＵのサイズはＰＵのルーマ予測ブロックのサイズを指すことがある。特定のＣＵのサイズを２Ｎ×２Ｎと仮定すると、ビデオエンコーダ２０およびビデオデコーダ３０は、イントラ予測の場合は２Ｎ×２ＮまたはＮ×ＮのＰＵサイズをサポートすることができ、インター予測の場合は２Ｎ×２Ｎ、２Ｎ×Ｎ、Ｎ×２Ｎ、Ｎ×Ｎ、または同様の対称のＰＵサイズをサポートすることができる。ビデオエンコーダ２０およびビデオデコーダ３０はまた、インター予測の場合は２Ｎ×ｎＵ、２Ｎ×ｎＤ、ｎＬ×２Ｎ、およびｎＲ×２ＮのＰＵサイズ向けの非対称区分化をサポートすることができる。
【００７０】
[0075]インター予測処理ユニット１２０は、ＣＵの各ＰＵに対してインター予測を実施することによって、ＰＵのための予測データを生成し得る。ＰＵの予測データは、ＰＵの予測サンプルブロックと、ＰＵの動き情報とを含み得る。インター予測ユニット１２１は、ＰＵがＩスライス中にあるか、Ｐスライス中にあるか、Ｂスライス中にあるかに応じて、ＣＵのＰＵに対して異なる動作を実行することができる。Ｉスライス中では、すべてのＰＵがイントラ予測される。したがって、ＰＵがＩスライス中にある場合、インター予測ユニット１２１は、ＰＵに対してインター予測を実行しない。したがって、Ｉモードで符号化されるブロックでは、予測されるブロックは、同じフレーム内の以前に符号化された隣接ブロックからの空間的予測を使用して形成される。
【００７１】
[0076]ＰＵがＰスライス中にある場合、インター予測処理ユニット１２０の動き推定ユニットは、ＰＵの参照領域について参照ピクチャリスト（たとえば、「ＲｅｆＰｉｃＬｉｓｔ０」）中の参照ピクチャを探索することができる。ＰＵの参照領域は、ＰＵのサンプルブロックに最も密接に対応するサンプルブロックを含む参照ピクチャ内の領域であり得る。動き推定ユニットは、ＰＵの参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０中での位置を示す参照インデックスを生成することができる。加えて、動き推定ユニットは、ＰＵのコーディングブロックと、参照領域に関連付けられた参照場所との間の空間変位を示すＭＶを生成することができる。たとえば、ＭＶは、現在の復号されたピクチャ中の座標から参照ピクチャ中の座標までのオフセットを提供する２次元ベクトルであり得る。動き推定ユニットは、ＰＵの動き情報として、参照インデックスとＭＶとを出力することができる。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照場所における実際のまたは補間されたサンプルに基づいて、ＰＵの予測サンプルブロックを生成することができる。
【００７２】
[0077]ＰＵがＢスライス中にある場合、動き推定ユニットは、ＰＵについての単予測または双予測を実施することができる。ＰＵについての単予測を実施するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０または第２の参照ピクチャリスト（「ＲｅｆＰｉｃＬｉｓｔ１」）の参照ピクチャを探索することができる。動き推定ユニットは、ＰＵの動き情報として、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０またはＲｅｆＰｉｃＬｉｓｔ１中の位置を示す参照インデックスと、ＰＵのサンプルブロックと参照領域と関連付けられた参照場所との間の空間変位を示すＭＶと、参照ピクチャがＲｅｆＰｉｃＬｉｓｔ０中にあるかまたはＲｅｆＰｉｃＬｉｓｔ１中にあるかを示す１つまたは複数の予測方向インジケータとを出力することができる。インター予測処理ユニット１２０の動き補償ユニットは、ＰＵの動きベクトルによって示された参照領域における実際のまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測サンプルブロックを生成することができる。
【００７３】
[0078]ＰＵについての双方向インター予測を実施するために、動き推定ユニットは、ＰＵの参照領域についてＲｅｆＰｉｃＬｉｓｔ０中の参照ピクチャを探索することができ、またＰＵの別の参照領域についてＲｅｆＰｉｃＬｉｓｔ１中の参照ピクチャを探索することができる。動き推定ユニットは、参照領域を含んでいる参照ピクチャのＲｅｆＰｉｃＬｉｓｔ０およびＲｅｆＰｉｃＬｉｓｔ１中での位置を示す参照ピクチャインデックスを生成することができる。加えて、動き推定ユニットは、参照領域に関連付けられる参照場所とＰＵのサンプルブロックとの間の空間変位を示すＭＶを生成することができる。ＰＵの動き情報は、ＰＵの参照インデックスとＭＶとを含み得る。動き補償ユニットは、ＰＵの動きベクトルによって示される参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、ＰＵの予測サンプルブロックを生成することができる。
【００７４】
[0079]イントラ予測処理ユニット１２６は、ＰＵに対してイントラ予測を実施することによって、ＰＵのための予測データを生成し得る。ＰＵの予測データは、ＰＵの予測サンプルブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット１２６は、Ｉスライス、Ｐスライス、およびＢスライスの中のＰＵに対してイントラ予測を実施し得る。
【００７５】
[0080]ＰＵに対してイントラ予測を実施するために、イントラ予測処理ユニット１２６は、ＰＵのための予測データの複数のセットを生成するのに複数のイントラ予測モードを使用し得る。イントラ予測モードを使用してＰＵのための予測データのセットを生成するために、イントラ予測処理ユニット１２６は、そのイントラ予測モードと関連付けられた方向へ、ＰＵのサンプルブロック全体にわたって、隣接ＰＵのサンプルブロックからのサンプルを延ばすことができる。隣接ＰＵは、ＰＵ、ＣＵ、およびＣＴＵについて左から右、上から下の符号化順序を仮定すると、ＰＵの上、右上、左上、または左にあり得る。イントラ予測処理ユニット１２６は、様々な数のイントラ予測モード、たとえば３３個の方向性イントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、ＰＵに関連付けられた領域のサイズに依存し得る。
【００７６】
[0081]予測処理ユニット１００は、ＰＵに対してインター予測処理ユニット１２０によって生成された予測データ、またはＰＵに対してイントラ予測処理ユニット１２６によって生成された予測データの中から、ＣＵのＰＵのための予測データを選択し得る。いくつかの例では、予測処理ユニット１００は、予測データのセットのレート／歪みの尺度に基づいて、ＣＵのＰＵのための予測データを選択する。選択された予測データの予測サンプルブロックは、本明細書では、選択された予測サンプルブロックと呼ばれ得る。
【００７７】
[0082]残差生成ユニット１０２は、ＣＵのルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロック、ならびにＣＵのＰＵの選択された予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックに基づいて、ＣＵのルーマ残差ブロックと、Ｃｂ残差ブロックと、Ｃｒ残差ブロックとを生成することができる。たとえば、残差生成ユニット１０２は、残差ブロック中の各サンプルがＣＵのコーディングブロック中のサンプルとＣＵのＰＵの対応する選択された予測サンプルブロック中の対応するサンプルとの間の差分に等しい値を有するようにＣＵの残差ブロックを生成することができる。
【００７８】
[0083]変換処理ユニット１０４は、ＣＵと関連付けられる残差ブロックをＣＵのＴＵと関連付けられる変換ブロックに区分するために、４分木区分を実行することができる。したがって、ＴＵは、ルーマ変換ブロックおよび２つのクロマ変換ブロックに関連付けられ得る。ＣＵのＴＵのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、ＣＵのＰＵの予測ブロックのサイズおよび位置に基づく場合も、または基づかない場合もある。「残差４分木」（ＲＱＴ）として知られる４分木構造は、領域の各々に関連付けられたノードを含み得る。ＣＵのＴＵは、ＲＱＴのリーフノードに対応し得る。
【００７９】
[0084]変換処理ユニット１０４は、ＴＵの変換ブロックに１つまたは複数の変換を適用することによって、ＣＵの各ＴＵに関する変換係数ブロックを生成し得る。変換処理ユニット１０４は、ＴＵに関連付けられた変換ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット１０４は、離散コサイン変換（ＤＣＴ）、方向変換、または概念的に類似の変換を、変換ブロックに適用し得る。いくつかの例では、変換処理ユニット１０４は、変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われる場合がある。
【００８０】
[0085]量子化ユニット１０６は、係数ブロック内の変換係数を量子化することができる。量子化プロセスは、変換係数の一部またはすべてに関連付けられたビット深度を低減し得る。たとえば、ｎビット変換係数は量子化の間にｍビットの変換係数に切り捨てられてよく、ただし、ｎはｍよりも大きい。量子化ユニット１０６は、ＣＵと関連付けられた量子化パラメータ（ＱＰ）値に基づいて、ＣＵのＴＵと関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ２０は、ＣＵに関連付けられたＱＰ値を調整することによって、ＣＵに関連付けられた係数ブロックに適用される量子化の程度を調整することができる。量子化は情報の損失をもたらす場合があり、したがって、量子化変換係数は、元の係数よりも低い精度を有する場合がある。
【００８１】
[0086]逆量子化ユニット１０８および逆変換処理ユニット１１０は、係数ブロックから残差ブロックを再構築するために、それぞれ、係数ブロックに逆量子化と逆変換とを適用することができる。再構築ユニット１１２は、再構築された残差ブロックを、予測処理ユニット１００によって生成された１つまたは複数の予測サンプルブロックからの対応するサンプルに追加して、ＴＵに関連付けられる再構築された変換ブロックを生成することができる。ビデオエンコーダ２０は、このようにＣＵの各ＴＵのための変換ブロックを再構築することによって、ＣＵのコーディングブロックを再構築することができる。
【００８２】
[0087]フィルタユニット１１４は、ＣＵに関連付けられたコーディングブロックの中のブロッキングアーティファクトを低減するために、１つまたは複数のデブロッキング動作を実施し得る。復号ピクチャバッファ１１６は、フィルタユニット１１４が、再構築されたコーディングブロックに対して１つまたは複数のデブロッキング動作を実施した後、再構築されたコーディングブロックを記憶することができる。インター予測ユニット１２０は、再構築されたコーディングブロックを含む参照ピクチャを使用して、他のピクチャのＰＵに対してインター予測を実行し得る。加えて、イントラ予測処理ユニット１２６は、ＣＵと同じピクチャ内の他のＰＵに対してイントラ予測を実施するために、復号ピクチャバッファ１１６内の再構築されたコーディングブロックを使用することができる。
【００８３】
[0088]エントロピー符号化ユニット１１８は、ビデオエンコーダ２０の他の機能的な構成要素からデータを受信することができる。たとえば、エントロピー符号化ユニット１１８は、量子化ユニット１０６から係数ブロックを受信することができ、予測処理ユニット１００からシンタックス要素を受信することができる。エントロピー符号化ユニット１１８は、エントロピー符号化データを生成するために、データに対して１つまたは複数のエントロピー符号化演算を実施することができる。たとえば、エントロピー符号化ユニット１１８は、コンテキスト適応型可変長コーディング（ＣＡＶＬＣ）演算、ＣＡＢＡＣ演算、変数−変数（Ｖ２Ｖ）レングスコーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング（ＳＢＡＣ）演算、確率間隔区分化エントロピー（ＰＩＰＥ）コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算をデータに対して実行することができる。ビデオエンコーダ２０は、エントロピー符号化ユニット１１８によって生成されたエントロピー符号化データを含むビットストリームを出力することができる。たとえば、ビットストリームは、ＣＵのためのＲＱＴを表すデータを含み得る。
【００８４】
[0089]本開示の例によれば、ビデオエンコーダ２０は、パレットベースのコーディングを実施するように構成され得る。ＨＥＶＣフレームワークに関して、例として、パレットベースのコーディング技法は、コーディングユニット（ＣＵ）モードとして使用されるように構成され得る。他の例では、パレットベースのコーディング技法は、ＨＥＶＣのフレームワークにおいてＰＵモードとして使用されるように構成され得る。したがって、ＣＵモードの状況において（本開示全体で）本明細書で説明される開示されるプロセスのすべてが、追加で、または代替的に、ＰＵに適用され得る。しかしながら、これらのＨＥＶＣベースの例は、本明細書で説明されるパレットベースのコーディング技法の制約または制限であると見なされるべきではなく、それは、そのような技法は、他の既存のシステム／規格もしくはまだ開発されていないシステム／規格とは独立に、またはそれらの一部として機能するように適用され得るからである。これらの場合、パレットコーディングのためのユニットは、正方形のブロック、長方形のブロック、または非長方形の領域であってもよい。
【００８５】
[0090]パレットベースの符号化ユニット１２２は、たとえば、パレットベースの符号化モードがたとえばＣＵまたはＰＵのために選択されるとき、パレットベースの符号化を実施することができる。たとえば、パレットベースの符号化ユニット１２２は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すためにパレット中のピクセル値を選択し、ビデオデータのブロックの位置の少なくともいくつかを選択されたピクセル値にそれぞれ対応するパレット中のエントリと関連付ける情報をシグナリングするように構成することができる。様々な機能がパレットベースの符号化ユニット１２２によって実施されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実施され得る。
【００８６】
[0091]本開示のいくつかの態様によれば、パレットベースの符号化ユニット１２２は、パレットコード化ブロックに対するパレットを導出し、レートひずみコストに少なくとも部分的に基づいて、パレットのパレットサイズまたは１つまたは複数のパレットエントリのうちの少なくとも１つを修正するかどうかを決定するように構成され得る。たとえば、パレットエントリおよびパレットサイズが、図４に関して以下でより詳細に説明されるピクセル値クラスタリング法を使用して現在のブロックに対して決定された後、パレットベースの符号化ユニット１２２は、ピクセル値クラスタリング法によって当初決定されたパレットのパレットサイズを低減するかどうかを決定する。一例では、パレットベースの符号化ユニット１２２は、ピクセルの量子化ピクセル値を符号化することを含めて、所与のインデックス値を使用してピクセルを符号化するための、またはエスケープピクセルとしてピクセルを符号化するためのレートひずみコストの比較に基づいて、所与のインデックス値を保持するかまたは除去するかを決定する。別の例では、パレットベースの符号化ユニット１２２は、所与のインデックス値を使用してピクセルを符号化するためのレートひずみコスト、または隣接するインデックス値を使用してピクセルを符号化するためのレートひずみコストの比較に基づいて、所与のインデックス値を隣接するインデックス値に併合させる（たとえば、単一のインデックス値を形成するためにインデックス値を組み合わせる（combine）かどうかを決定する。
【００８７】
[0092]別の例として、パレットベースの符号化ユニット１２２は、ピクセル値クラスタリング法によって当初決定されたパレットのパレットエントリのうちの１つまたは複数を修正するかどうかを決定する。この例では、パレットベースの符号化ユニット１２２は、以下で図４に関してより詳細に説明されるｋ平均クラスタリング法を使用して、パレットコード化ブロックに対する代表的パレットを決定する。代表的パレットは、ブロックのピクセルに対する平均ピクセル値を示す代表的パレットエントリを含む。パレットベースの符号化ユニット１２２は、代表的パレットの対応する代表的パレットエントリによって示される平均ピクセル値に基づいて、当初のパレットの所与のパレットエントリを修正するかどうかを決定する。
【００８８】
[0093]パレットコード化ブロックに対するパレットのパレットサイズとパレットエントリとを決定するための技法が、図４および図６に関して以下でより詳細に説明される。本開示は、主に、ビデオエンコーダによって実施される、パレットサイズおよびパレットエントリの修正のための技法を説明するが、他の例では、パレット修正技法は、ビデオデコーダ３０などのビデオデコーダによって実施されてもよい。その場合、たとえば、ビデオデコーダ３０は、パレットを別々に導出して修正してよく、または本開示の技法に従ってビデオエンコーダ２０によってシグナリングされるパレットを修正してもよい。
【００８９】
[0094]本開示の他の態様によれば、ビデオエンコーダ２０は、再構築されたブロックを復号ピクチャバッファ１１６に記憶する前に、フィルタユニット１１４による再構築されたパレットコード化ブロックのフィルタリングをディセーブルにするかどうかを決定するように構成され得る。たとえば、ビデオエンコーダ２０は、フィルタユニット１１４によるパレットコード化ブロックのデブロッキングフィルタリングおよび／またはＳＡＯフィルタリングをディセーブルにし得る。従来、パレットコード化ブロックは、インターコード化ブロックと同様に取り扱われており、したがって、復号ピクチャバッファに記憶される前、または表示のために出力される前に、フィルタリングが、再構築されたブロックに自動的に適用された。本開示の技法によれば、ビデオエンコーダ２０は、再構築されたブロックがパレットコード化ブロックであると決定してよく、その決定に基づいて、復号ピクチャバッファ１１６にブロックを記憶する前にフィルタユニット１１４によるフィルタリングをディセーブルにしてよい。パレットコード化ブロックのフィルタリングを決定するための技法が、図４および図５に関して以下でより詳細に説明される。
【００９０】
[0095]図３は、本開示の技法を実装するように構成された例示的なビデオデコーダ３０を示すブロック図である。図３は、説明のために提供されるものであり、本開示において広く例示され説明される技法を限定するものではない。説明の目的で、本開示は、ＨＥＶＣコーディングのコンテキストにおいてビデオデコーダ３０を記載する。ただし、本開示の技法は他のコーディング規格または方法に適用可能であり得る。
【００９１】
[0096]ビデオデコーダ３０は、本開示で説明される様々な例に従ってパレットベースのビデオコーディングのための技法を実行するように構成され得る、デバイスの例を代表する。たとえば、ビデオデコーダ３０は、パレットベースのコーディングまたは非パレットベースのコーディングのいずれかを使用して、ＨＥＶＣコーディングにおけるＣＵまたはＰＵのような、ビデオデータの様々なブロックを選択的に復号するように構成され得る。非パレットベースのコーディングモードは、ＨＥＶＣ規格によって規定される様々なコーディングモードのような、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指し得る。ビデオデコーダ３０は、一例では、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置をパレット中のエントリと関連付ける情報を受信し、情報に基づいてパレット中のピクセル値を選択し、選択されたピクセル値に基づいてブロックのピクセル値を再構築するように構成され得る。
【００９２】
[0097]図３の例では、ビデオデコーダ３０は、ビデオデータメモリ１４８と、エントロピー復号ユニット１５０と、予測処理ユニット１５２と、逆量子化ユニット１５４と、逆変換処理ユニット１５６と、再構築ユニット１５８と、フィルタユニット１６０と、復号ピクチャバッファ１６２とを含む。予測処理ユニット１５２は、動き補償ユニット１６４とイントラ予測処理ユニット１６６とを含む。ビデオデコーダ３０はまた、本開示で説明されるパレットベースのコーディング技法の様々な態様を実施するように構成された、パレットベースの復号ユニット１６５を含む。他の例では、ビデオデコーダ３０は、より多いか、より少ないか、または異なる機能的な構成要素を含み得る。
【００９３】
[0098]ビデオデータメモリ１４８は、ビデオデコーダ３０の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ１４８に記憶されるビデオデータは、たとえば、コンピュータ可読媒体１６から、たとえば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードもしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ１４８は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶する、コード化ピクチャバッファ（ＣＰＢ）を形成し得る。復号ピクチャバッファ１６２は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ３０によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ１４８および復号ピクチャバッファ１６２は、同期ＤＲＡＭ（ＳＤＲＡＭ）、磁気抵抗ＲＡＭ（ＭＲＡＭ）、抵抗ＲＡＭ（ＲＲＡＭ）、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ１４８および復号ピクチャバッファ１６２は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ１４８は、ビデオデコーダ３０の他のコンポーネントとともにオンチップであるか、またはそれらのコンポーネントに対してオフチップであり得る。
【００９４】
[0099]ビデオデータメモリ１４８、すなわちＣＰＢは、ビットストリームの符号化ビデオデータ（たとえば、ＮＡＬユニット）を受け取り、記憶することができる。エントロピー復号ユニット１５０は、ビデオデータメモリ１４８から符号化ビデオデータ（たとえば、ＮＡＬユニット）を受け取り、ＮＡＬユニットを解析してシンタックス要素を復号することができる。エントロピー復号ユニット１５０は、ＮＡＬユニット内のエントロピー符号化シンタックス要素をエントロピー復号することができる。予測処理ユニット１５２、逆量子化ユニット１５４、逆変換処理ユニット１５６、再構築ユニット１５８、およびフィルタユニット１６０は、ビットストリームから取得（たとえば、抽出）されたシンタックス要素に基づいて、復号ビデオデータを生成し得る。
【００９５】
[0100]ビットストリームのＮＡＬユニットは、コード化スライスＮＡＬユニットを含む場合がある。ビットストリームを復号することの一部として、エントロピー復号ユニット１５０は、コード化スライスＮＡＬユニットからシンタックス要素を抽出し、エントロピー復号することができる。コード化スライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関係するシンタックス要素を含み得る。スライスヘッダの中のシンタックス要素は、スライスを含むピクチャに関連付けられたＰＰＳを識別するシンタックス要素を含み得る。
【００９６】
[0101]ビデオデコーダ３０は、ビットストリームからのシンタックス要素を復号することに加えて、区分されていないＣＵに対して再構築動作を実施することができる。区分されていないＣＵに対して再構築動作を実行するために、ビデオデコーダ３０は、ＣＵの各ＴＵに対して再構築動作を実行することができる。ＣＵの各ＴＵに対して再構築動作を実施することによって、ビデオデコーダ３０はＣＵの残差ブロックを再構築することができる。
【００９７】
[0102]ＣＵのＴＵに対して再構成演算を実施することの一部として、逆量子化ユニット１５４は、ＴＵに関連付けられた係数ブロックを逆量子化、すなわち量子化解除することができる。逆量子化ユニット１５４は、量子化の程度を決定するために、また同様に、逆量子化ユニット１５４が適用すべき逆量子化の程度を決定するために、ＴＵのＣＵに関連付けられたＱＰ値を使用し得る。すなわち、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるＱＰの値を調整することによって制御され得る。圧縮比は、利用されるエントロピーコーディングの方法に依存し得る。
【００９８】
[0103]逆量子化ユニット１５４が係数ブロックを逆量子化した後、逆変換処理ユニット１５６は、ＴＵに関連付けられた残差ブロックを生成するために、係数ブロックに１つまたは複数の逆変換を適用し得る。たとえば、逆変換処理ユニット１５６は、逆ＤＣＴ、逆整数変換、逆カルーネンレーベ変換（ＫＬＴ）、逆回転変換、逆方向変換、または別の逆変換を、係数ブロックに適用し得る。
【００９９】
[0104]イントラ予測を使用してＰＵが符号化される場合、イントラ予測処理ユニット１６６は、ＰＵの予測ブロックを生成するためにイントラ予測を実行することができる。イントラ予測処理ユニット１６６は、空間的に隣接するＰＵの予測ブロックに基づいて、ＰＵのための予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成するために、イントラ予測モードを使用し得る。イントラ予測処理ユニット１６６は、ビットストリームから復号された１つまたは複数のシンタックス要素に基づいて、ＰＵのためのイントラ予測モードを決定し得る。
【０１００】
[0105]予測処理ユニット１５２は、ビットストリームから抽出されたシンタックス要素に基づいて、第１の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ０）と第２の参照ピクチャリスト（ＲｅｆＰｉｃＬｉｓｔ１）とを構築することができる。さらに、ＰＵがインター予測を使用して符号化された場合、エントロピー復号ユニット１５０は、ＰＵについての動き情報を抽出することができる。動き補償ユニット１６４は、ＰＵの動き情報に基づいて、ＰＵ用の１つまたは複数の参照領域を決定することができる。動き補償ユニット１６４は、ＰＵの１つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、ＰＵの予測ルーマブロックと、予測Ｃｂブロックと、予測Ｃｒブロックとを生成し得る。
【０１０１】
[0106]再構築ユニット１５８は、ＣＵのＴＵと関連付けられたルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロック、ならびにＣＵのＰＵの予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックを、すなわち、イントラ予測データまたはインター予測データのいずれかを適宜使用して、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを再構築することができる。たとえば、再構築ユニット１５８は、ルーマ変換ブロック、Ｃｂ変換ブロック、およびＣｒ変換ブロックのサンプルを予測ルーマブロック、予測Ｃｂブロック、および予測Ｃｒブロックの対応するサンプルに加算して、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを再構築することができる。
【０１０２】
[0107]フィルタユニット１６０は、デブロッキング動作を実行して、ＣＵのルーマコーディングブロック、Ｃｂコーディングブロック、およびＣｒコーディングブロックと関連付けられたブロッキングアーティファクトを低減することができる。ビデオデコーダ３０は、ＣＵのルーマコーディングブロックと、Ｃｂコーディングブロックと、Ｃｒコーディングブロックとを、復号ピクチャバッファ１６２に記憶することができる。復号ピクチャバッファ１６２は、後続の動き補償、イントラ予測、および図１のディスプレイデバイス３２などのディスプレイデバイス上での提示のための、参照ピクチャを提供し得る。たとえば、ビデオデコーダ３０は、復号ピクチャバッファ１６２中のルーマブロック、Ｃｂブロック、およびＣｒブロックに基づいて、他のＣＵのＰＵに対してイントラ予測演算またはインター予測演算を実行することができる。このようにして、ビデオデコーダ３０は、有意なルーマ係数ブロックの変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換係数レベルに変換を適用して変換ブロックを生成し、変換ブロックに少なくとも一部基づいてコーディングブロックを生成し、コーディングブロックを表示のために出力することができる。
【０１０３】
[0108]本開示の様々な例によれば、ビデオデコーダ３０は、パレットベースのコーディングを実行するように構成され得る。パレットベースの復号ユニット１６５は、たとえば、パレットベースの復号モードがたとえばＣＵまたはＰＵのために選択されるとき、パレットベースの復号を実施することができる。たとえば、パレットベースの復号ユニット１６５は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置をパレット中のエントリと関連付ける情報を受信し、情報に基づいてパレット中のピクセル値を選択し、選択されたピクセル値に基づいてブロックのピクセル値を再構築するように構成することができる。様々な機能がパレットベースの復号ユニット１６５によって実行されるものとして説明されるが、そのような機能のいくつかまたはすべては、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１０４】
[0109]本開示の態様によれば、ビデオデコーダ３０は、再構築されたブロックを復号ピクチャバッファ１６２に記憶する前に、フィルタユニット１６０による再構築されたパレットコード化ブロックのフィルタリングをディセーブルにするかどうかを決定するように構成され得る。たとえば、ビデオでコーダ３０は、フィルタユニット１６０によるパレットコード化ブロックのデブロッキングフィルタリングおよび／またはＳＡＯフィルタリングをディセーブルにし得る。従来、パレットコード化ブロックは、インターコード化ブロックと同様に取り扱われており、したがって、復号ピクチャバッファに記憶される前、または表示のために出力される前に、フィルタリングが、再構築されたブロックに自動的に適用された。本開示の技法によれば、ビデオデコーダ３０は、再構築されたブロックがパレットコード化ブロックであると決定してよく、その決定に基づいて、復号ピクチャバッファ１６２にブロックを記憶する前にフィルタユニット１６０によるフィルタリングをディセーブルにしてよい。パレットコード化ブロックのフィルタリングを決定するための技法が、図４および図５に関して以下でより詳細に説明される。
【０１０５】
[0110]図４は、本開示の技法に従った、ビデオデータをコーディングするためのパレットを決定する例を示す概念図である。図４の例は、第１のパレット１８４と関連付けられたパレット（ＰＡＬ）コード化ブロックとしてコーディングされた第１のコーディングユニット（ＣＵ）１８０と、第２のパレット１９２と関連付けられたパレット（ＰＡＬ）コード化ブロックをコーディングされた第２のＣＵ１８８とを有するピクチャ１７８を含む。ピクチャ１７８はまた、イントラ予測コーディングモードによりコーディングされるイントラブロック１９６と、インター予測コーディングモードによりコーディングされるインターブロック２００とを含む。図４の技法は、ビデオエンコーダ２０（図１および図２）とビデオデコーダ３０（図１および図３）とのコンテキストにおいて、説明を目的としてＨＥＶＣ規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセスおよび／または規格において他のビデオコーディングプロセッサおよび／またはデバイスによって適用され得ることを、理解されたい。
【０１０６】
[0111]一般に、パレットは、現在コーディングされているＣＵ、図４の例ではＣＵ１８８について支配的である、および／またはそのＣＵを表現する、いくつかのピクセル値を指す。第１のパレット１８４および第２のパレット１９２は、複数のパレットを含むものとして示されている。いくつかの例では、本開示の態様によれば、ビデオコーダ（ビデオエンコーダ２０またはビデオデコーダ３０のような）は、ＣＵの各々の色成分に対して別々にパレットをコーディングすることができる。たとえば、ビデオエンコーダ２０は、ＣＵのルーマ（Ｙ）成分のためのパレットと、ＣＵのクロマ（Ｕ）成分のための別のパレットと、ＣＵのクロマ（Ｖ）成分のためのさらに別のパレットとを符号化することができる。この例では、ＹパレットのエントリはＣＵのピクセルのＹの値を表すことができ、ＵパレットのエントリはＣＵのピクセルのＵの値を表すことができ、ＶパレットのエントリはＣＵのピクセルのＶの値を表すことができる。
【０１０７】
[0112]他の例では、ビデオエンコーダ２０は、ＣＵのすべての色成分に対して単一のパレットを符号化することができる。この例では、ビデオエンコーダ２０は、Ｙｉと、Ｕｉと、Ｖｉとを含む、三重の値（a triple value）であるｉ番目のエントリを有するパレットを符号化することができる。この場合、パレットは、ピクセルの成分の各々の値を含む。したがって、複数の個々のパレットを有するパレットのセットとしてのパレット１８４および１９２の表現は、一例にすぎず、限定することは意図されない。
【０１０８】
[0113]図４の例では、第１のパレット１８４は、インデックス値１、インデックス値２、およびインデックス値３をそれぞれ有する、３つのパレットエントリ２０２、２０４、２０６を含む。パレットエントリ２０２、２０４、２０６は、ピクセル値Ａ、ピクセル値Ｂ、およびピクセル値Ｃをそれぞれ含むピクセル値（すなわち、色値）に、インデックス値を関連付ける。本明細書で説明されるように、第１のＣＵ１８０の実際のピクセル値をコーディングするのではなく、ビデオコーダ（ビデオエンコーダ２０またはビデオデコーダ３０など）は、インデックス値１、２、３を使用してブロックのピクセルをコーディングするために、パレットベースのコーディングを使用し得る。すなわち、第１のＣＵ１８０の各ピクセル位置に対して、ビデオエンコーダ２０は、ピクセルに対するインデックス値を符号化することができ、インデックス値は、第１のパレット１８４のうちの１つまたは複数の中のピクセルに対するピクセル値を示すパレットエントリに対応する。ビデオデコーダ３０は、ビットストリームからインデックス値を取得し、インデックス値と第１のパレット１８４の１つまたは複数とを使用してピクセル値を再構築することができる。したがって、第１のパレット１８４は、パレットベースの復号におけるビデオデコーダ３０による使用のために、符号化されたビデオデータビットストリーム中でビデオエンコーダ２０によって送信される。
【０１０９】
[0114]いくつかの例では、ビデオエンコーダ２０およびビデオデコーダ３０は、第１のパレット１８４に基づいて第２のパレット１９２を決定し得る。たとえば、ビデオエンコーダ２０および／またはビデオデコーダ３０は、１つまたは複数のブロックを位置特定し得、そのブロックから、予測パレット、この例では第１のパレット１８４が決定される。いくつかの例では、図４に示される例のように、ビデオエンコーダ２０および／またはビデオデコーダ３０は、第２のＣＵ１８８のための予測パレットを決定するとき、左の隣接ＣＵ（第１のＣＵ１８０）など、前にコーディングされたＣＵを位置特定し得る。
【０１１０】
[0115]図４の例では、第２のパレット１９２は、インデックス値１、インデックス値２、およびインデックス値３をそれぞれ有する、３つのパレットエントリ２０８、２１０、２１２を含む。パレットエントリ２０８、２１０、２１２は、ピクセル値Ａ、ピクセル値Ｂ、およびピクセル値Ｄをそれぞれ含むピクセル値に、インデックス値を関連付ける。この例では、ビデオエンコーダ２０は、第１のパレット１８４のどのエントリが第２のパレット１９２内に含まれるかを示す１つまたは複数のシンタックス要素をコーディングし得る。図４の例では、１つまたは複数のシンタックス要素は、ベクトル２１６として示される。ベクトル２１６は、いくつかの関連するビン（またはバイナリビット）を有し、各ビンは、そのビンと関連付けられたパレット予測子が現在のパレットのエントリを予測するために使用されるかどうかを示す。たとえば、ベクトル２１６は、第１のパレット１８４の最初の２つのエントリ（２０２および２０４）が、第２のパレット１９２中に含まれる（ベクトル２１６の最初の２つのビン中の「１」の値）一方で、第１のパレット１８４の第３のエントリは、第２のパレット１９２中に含まれない（ベクトル２１６の第３のビン中の「０」の値）ことを示す。図４の例では、ベクトルは、ブールベクトルである。
【０１１１】
[0116]本開示の技法は、パレットベースのコーディングに対するパレットの導出における改善を対象とする。より具体的には、本開示の技法は、ビデオエンコーダ２０においてパレットのパレットサイズとパレットエントリとを修正することと、ビデオエンコーダ２０および／またはビデオデコーダ３０においてパレットコード化ブロックのフィルタリングをディセーブルにするかどうかを決定することとを含む。図４の例では、ビデオエンコーダ２０は、第１のパレット１８４を導出するために本開示のパレット修正技法を実施し得る。次いで、第１のパレット１８４は、パレットベースの復号におけるビデオデコーダ３０による使用のために、符号化されたビデオデータビットストリーム中でビデオエンコーダ２０によって送信される。本開示において主にビデオエンコーダ２０に関して説明されているが、他の例では、本開示のパレット修正技法は、ビデオエンコーダ２０とビデオデコーダ３０の両方によって実施されてもよい。その場合、たとえば、ビデオデコーダ３０は、第１のパレット１８４を別々に導出してよく、または本開示の技法に従ってビデオエンコーダ２０によって送信された第１のパレット１８４を修正してもよい。説明のために第１のパレット１８４に関して説明されているが、本技法は、他の構成および／またはサイズの多様な他のパレットを使用して実施されてもよい。
【０１１２】
[0117]ＪＣＴＶＣ−Ｐ００３５、ＪＣＴＶＣ−Ｐ０１０８およびＪＣＴＶＣ−Ｐ０１９８（上記）に記載されるパレットベースのコーディングモードでは、ビデオエンコーダ２０は、ピクセル値クラスタリング法を使用して、パレットコード化ブロック、たとえばＣＵ１８０に対するパレットを導出し得る。パレット、たとえば第１のパレット１８４を導出ために適切なアルゴリズムを使用することは、パレットモードのコーディングにおける重要な手順の１つである。たとえば、ビデオエンコーダ２０は、複数のエントリを含むヒストグラムを導出してよく、各エントリは、それぞれの色値と、色値にマッピングするブロックのピクセルのそれぞれの量とを含む。一例として、ビデオエンコーダ２０は、ビデオデータのブロックに対するヒストグラムＨを決定し得る。ヒストグラムＨは、Ｈ＝｛（ｖi，ｆi），ｉ＝｛０，１，２，．．．，Ｍ｝｝によって表されてよく、ここでＭ＋１は現在のブロック中の異なるピクセル値の数であり、ｖiはｉ番目のピクセル値であり、ｆiはｖiの発生の数（すなわち、現在のブロック中のどれほど多くのピクセルがピクセル値ｖiを有するか）である。いくつかの例では、ヒストグラムの複数のエントリの各々は、同じピクセル値を有するピクセルの量を表す。いくつかの例では、ヒストグラムの複数のエントリの各々は、量子化されるときに、同じピクセル値を有するピクセルの量を表す。
【０１１３】
[0118]ヒストグラムを導出した後、ビデオエンコーダ２０は、パレットＰを空に、すなわちＰ＝φに初期化し得、パレットのインデックス値をゼロに、すなわちｉｄｘ＝０に初期化し得、および／またはヒストグラムのインデックス値をゼロに初期化、すなわちｊ＝０に設定し得る。次いで、ビデオエンコーダ２０は、ヒストグラムの第１のエントリが、他の色値に対して最高の量のピクセルを有する色値を含むように、エントリの各々に対するピクセルのそれぞれの量に基づいて、ヒストグラムのエントリを降順に（in descending order）ソートする。たとえば、ビデオエンコーダ２０は、現在のブロック中でより多く発生するピクセル値がヒストグラムの前方付近に設置されるように、ｆiの降順に従ってヒストグラムＨをソートし得る。ソートされたヒストグラムは、Ｈo＝｛（ｕi，ｆi），ｉ＝｛０，１，２，．．．，Ｍ｝，ｆi≧ｆi+1｝によって表され得る。
【０１１４】
[0119]次いで、ビデオエンコーダ２０は、ヒストグラムのエントリに基づいて現在のブロックに対するパレットのパレットサイズとパレットエントリとを決定し得る。たとえば、ビデオエンコーダ２０は、ソートされたヒストグラムの第１のエントリ（ｊ，ｕj）をパレットに挿入する、すなわちＰ＝Ｐ∪｛（ｉｄｘ，ｕj）｝、ことができる。次いで、ビデオエンコーダ２０は、パレットインデックスをインクリメントし、すなわちｉｄｘ＝ｉｄｘ＋１、ヒストグラムインデックスをインクリメントする、すなわちｊ＝ｊ＋１、ことができる。ビデオエンコーダ２０は、ソートされたヒストグラム中の次のエントリに対応するピクセル値が、パレット中にすでに含まれているピクセル値のうちのいずれかの近傍内にあるかどうかを決定し得る。たとえば、ビデオエンコーダ２０は、ソートされたヒストグラム中の次のエントリに対応するピクセル値とパレット中にすでに含まれているピクセル値のうちの１つまたは複数との間の差分に対応する距離値を決定し得る。決定された差分値がしきい値以上、すなわちＤｉｓｔａｎｃｅ（ｕj，ｘ）≧Ｔｈｒｅｓｈである場合、ビデオエンコーダ２０は、ソートされたヒストグラム中の次のエントリに対応するピクセル値を示すパレットに、新しいエントリを挿入し得る。決定された差分値がしきい値を満足しない、すなわちＤｉｓｔａｎｃｅ（ｕj，ｘ）＜Ｔｈｒｅｓｈである場合、ビデオエンコーダ２０は、ソートされたヒストグラム中の次のエントリに対応するピクセル値が、パレット中にすでに含まれているピクセル値の近傍内にあると決定し、新しいエントリをパレットに追加しない。次いで、ビデオエンコーダ２０は、ヒストグラムインデックスをインクリメントする、すなわちｊ＝ｊ＋１、ことができる。
【０１１５】
[0120]いくつかの例では、ビデオエンコーダ２０は、１つまたは複数の条件が１つまたは複数のそれぞれのしきい値を満足する場合、パレットを決定することを停止する（たとえば、エントリをパレットに追加することを停止する）ことができる。一例として、ビデオエンコーダ２０は、パレットのサイズが所定の値より大きいとき、パレットを決定することを停止することができる。別の例として、ビデオエンコーダ２０は、パレットインデックスの値が現在のブロック中の異なるピクセル値の数に等しい、すなわちｉｄｘ＝Ｍ、とき、パレットを決定することを停止することができる。別の例として、ビデオエンコーダ２０は、ヒストグラムインデックスの値が現在のブロック中の異なるピクセル値の数に等しい、すなわちｊ＝Ｍ、とき、パレットを決定することを停止することができる。
【０１１６】
[0121]本開示の技法によれば、パレットに対するパレットサイズとパレットエントリとを決定した後、ビデオエンコーダ２０は、レートひずみコストに少なくとも部分的に基づいて、パレットに対するパレットサイズ、またはパレットエントリのうちの１つまたは複数、のうちの少なくとも１つを修正するかどうかを決定し得る。このようにして、本技法は、ビデオエンコーダ２０が、パレットに対して当初決定されたパレットサイズとパレットエントリとを修正するかどうかを決定することを可能にする。
【０１１７】
[0122]たとえば、ビデオエンコーダ２０は、インデックス値１を使用してＣＵ１８０のピクセルを符号化すること、または、ＣＵ１８０の同じピクセルをエスケープピクセル（すなわち、当該ピクセル値を直接量子化し、当該ピクセルに対して量子化された値を送信する）として符号化することのレートひずみコストに基づいて、パレットエントリのうちの所与の１つ、たとえばパレット１８４中のエントリ２０２のインデックス値１、に対応する所与のインデックス値を保持するかまたは除去するかを決定し得る。この例では、インデックス値１と、対応するパレットエントリ２０２とをパレット１８４から除去すると決定することは、パレットサイズを低減させる、たとえば、パレット１８４はエントリ２０４と２０６とを含むのみである。
【０１１８】
[0123]一例では、ビデオエンコーダ２０は、ピクセルに対する色値を示すパレットエントリのうちの所与の１つに対応する所与のインデックス値を使用して、現在のブロックのピクセルを符号化するための第１のレートひずみコストを計算する、たとえば、パレットインデックスｔにマッピングされたピクセルがインデックスｔを用いてコーディングされるとき、ＲＤ（ｉｄｘ＿ｃｏｄｉｎｇ，ｔ）が、各パレットインデックスｔに対して計算される。次いで、ビデオエンコーダ２０は、各パレットインデックスｔに対して、エスケープピクセルとして現在のブロックの同じピクセルを符号化するための第２のレートひずみコスト、例えば、ＲＤ（ｅｓｃａｐｅ＿ｃｏｄｉｎｇ，ｔ）を、パレットインデックスｔに属するピクセルが、特別なインデックス値を符号化することと、ピクセル値を直接量子化することと、ピクセルに対して量子化された値を送信することとを含むエスケープモードを用いてコーディングされるとき、計算する。
【０１１９】
[0124]次いで、ビデオエンコーダ２０は、所与のインデックス値と、パレットのパレットエントリのうちの対応する１つとを保持するかまたは除去するかを決定するために、第１のレートひずみコスト計算値と第２のレートひずみコスト計算値とを比較する。たとえば、第１のレートひずみコストが第２のレートひずみコストより高い場合、ビデオエンコーダ２０は、所与のインデックスと、パレットエントリのうちの対応する１つとをパレットから除去し得る、たとえば、エントリ２０２のインデックス値１をパレット１８４から除去し得る。この例では、エントリ２０２の色値Ａは、ＣＵ１８０中でまれにしか発生しない可能性が高く、すなわち、パレット１８４中の他の色値に対して、少ない量のＣＵ１８０の関連ピクセルを有する。
【０１２０】
[0125]いくつかの例では、ビデオエンコーダ２０は、パレット１８４の各パレットエントリ２０２、２０４、２０６に対してこの保持決定または除去決定を実施してよいが、多くの例では、少量の関連ピクセルを有する「低い発生度（low occurrence）」のパレットエントリだけが除去される可能性が高い。これは、低い発生度のパレットエントリを含むより大きいパレットをコーディングするコスト、および低い発生度のパレットエントリに対応する高いインデックス値を使用してピクセルをコーディングするコストは、エスケープピクセルとして少ないピクセルをコーディングするより、大きくなる可能性が高いからである。このようにして、本技法は、ビデオエンコーダ２０が、符号化されるべき現在のブロック中でまれにしか発生しない色値を示す当初導出されたパレットから１つまたは複数のパレットエントリを除去することを可能にする。
【０１２１】
[0126]別の例として、ビデオエンコーダ２０は、インデックス値１を使用してまたは隣接するインデックス値２を使用してＣＵ１８０のピクセルを符号化するレートひずみコストに基づいて、パレットエントリのうちの所与の１つに対応する所与のインデックス値、たとえばパレット１８４中のエントリ２０２のインデックス値１を、パレットエントリの隣接する１つに対応する隣接するインデックス値、たとえばパレット１８４中のエントリ２０４のインデックス値２に併合（merge）させるかどうかを決定し得る。一例では、エントリ２０４の隣接するインデックス値２は、エントリ２０２の所与のインデックス値１からの最小のユークリッド距離の観点から最も近いインデックス値であり得る。別の例では、エントリ２０４の隣接するインデックス値２は、エントリ２０２の所与のインデックス値１に対するインデックス順序の観点から最も近いインデックス値であり得る。この例では、所与のインデックス値１、およびパレット１８４の対応するパレットエントリ２０２を、隣接するインデックス値２、およびパレット１８４の対応する隣接するパレットエントリ２０４に併合させることを決定することは、パレットサイズを低減させ、たとえば、パレット１８４は、エントリ２０４と２０６とだけを含む。
【０１２２】
[0127]一例では、ビデオエンコーダ２０は、ピクセルに対する第１の色値を示すパレットエントリのうちの所与の１つに対応する所与のインデックス値を使用して、現在のブロックのピクセルを符号化するための第１のレートひずみコストを計算する、たとえば、パレットインデックスｔにマッピングされたピクセルがインデックスｔを用いてコーディングされるとき、ＲＤ（ｓｅｐａｒａｔｅ＿ｃｏｄｉｎｇ，ｔ）が、各パレットインデックスｔに対して計算される。次いで、ビデオエンコーダ２０は、ピクセルに対する第２の色値を示すパレットエントリのうちの隣接する１つに対応する隣接するインデックス値を使用して現在のブロックの同じピクセルを符号化するための第２のレートひずみコストを計算する、たとえば、パレットインデックスｔにマッピングされたピクセルが隣接するパレットインデックスｍを用いてコーディングされるとき、ＲＤ（ｍｅｒｇｅｄ＿ｃｏｄｉｎｇ，ｔ−＞ｍ）が、パレットインデックスｔに対して計算される。
【０１２３】
[0128]次いで、ビデオエンコーダ２０は、所与のインデックス値およびパレットのパレットエントリのうちの対応する１つを、隣接するインデックス値およびパレットのパレットエントリのうちの隣接する１つに併合させるかどうかを決定するために、第１のレートひずみコスト計算値と第２のレートひずみコスト計算値とを比較する。たとえば、第１のレートひずみコストが第２のレートひずみコストより高い場合、ビデオエンコーダ２０は、所与のインデックスおよびパレットエントリのうちの対応する１つ、たとえばエントリ２０２のインデックス値１を、隣接するインデックス値およびパレットエントリのうちの隣接する１つ、たとえばエントリ２０４のインデックス値２に併合させ得る。この例では、所与のパレットエントリ２０２の第１の色値Ａおよび隣接するパレットエントリ２０４の第２の色値Ｂが、実質的に同様の値である可能性が高い。たとえば、第１の色値Ａおよび第２の色値Ｂは、量子化されるとき、同じ色値であり得る。
【０１２４】
[0129]いくつかの例では、エントリ２０２の所与のインデックス値１をエントリ２０４の隣接するインデックス値２に併合させることは、エントリ２０２がパレット１８４から除去され、所与のエントリ２０２の第１の色値Ａに前にマッピングされた任意のピクセルが、隣接するエントリ２０４の第２の色値Ｂにマッピングされる結果をもたらすことがある。他の例では、エントリ２０２の所与のインデックス値１をエントリ２０４の隣接するインデックス値２に併合させることは、所与のエントリ２０２と隣接するエントリ２０４の両方がパレット１８４から除去されて、単一の新しいパレットエントリがパレット１８４に追加される結果をもたらすことがある。新しいパレットエントリは、所与のエントリ２０２の第１の色値Ａおよび隣接するエントリ２０４の第２の色値Ｂの平均、または何らかの他の組合せである色値を示すことがある。この例では、前にエントリ２０２またはエントリ２０４にマッピングされた任意のピクセルは、新しいパレットエントリにマッピングされることになる。
【０１２５】
[0130]いくつかの例では、ビデオエンコーダ２０は、パレット１８４の各パレットエントリ２０２、２０４、２０６に対するこの併合の決定を実施してよいが、多くの場合、実質的に同様の色値（すなわち、同じ色値に量子化され得る色値）を示す「非常に類似する」パレットエントリだけが併合される可能性が高い。これは、非常に類似するパレットエントリを含むより大きいパレットをコーディングするコスト、および非常に類似するパレットエントリの各々に対応する別々のインデックス値を使用してピクセルをコーディングするコストは、単一の併合されたインデックス値を使用してピクセルをコーディングするより高い可能性が高いからである。このようにして、本技法は、ビデオエンコーダ２０が、符号化されるべき現在のブロック中で実質的に同様の色値を示す当初導出されたパレット中の１つまたは複数のパレットエントリを併合させることを可能にする。
【０１２６】
[0131]さらなる例として、ビデオエンコーダ２０は、ｋ平均クラスタリング法を使用して決定された代表的パレットに基づいて、パレットのパレットエントリ、たとえばパレット１８４中のエントリ２０２、２０４、２０６のうちの１つまたは複数を修正するかどうかを決定し得る。ビデオエンコーダ２０は、各パレットインデックスに対する代表的パレットのパレットエントリを計算するためにｋ平均クラスタリング法を使用してよく、ここでｋ平均クラスタリング法の反復（iterations）の数は、しきい値ベースである。たとえば、当初導出されたパレットのパレットエントリ、たとえばパレット１８４中のエントリ２０２、２０４、２０６の各々に対して、ビデオエンコーダ２０は、パレットエントリ、たとえばエントリ２０２、２０４、２０６のそれぞれの１つによって示されるそれぞれの色値、たとえば色値Ａ、Ｂ、ＣにマッピングされるＣＵ１８０の１つまたは複数のピクセルの平均ピクセル値を計算する。次いで、ビデオエンコーダ２０は、それぞれの平均ピクセル値を示す代表的パレットエントリを含むＣＵ１８０に対する代表的パレットを決定する。
【０１２７】
[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]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ（登録商標）、ＣＤ−ＲＯＭもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、任意の接続は、コンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線（ＤＳＬ）、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、ＤＳＬ、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザーディスク（登録商標）（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびＢｌｕ−ｒａｙディスク（disc）を含み、ここで、ディスク（disk）は、通常、データを磁気的に再生し、一方、ディスク（disc）は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲の中に含まれるべきである。
【０１５６】
[0161]命令は、１つもしくは複数のデジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、または他の等価な集積回路またはディスクリート論理回路のような、１つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または、本明細書で説明された技法の実装に好適な任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用のハードウェアモジュールおよび／またはソフトウェアモジュール内で提供され得る。また、本技法は、１つもしくは複数の回路または論理要素で十分に実装され得る。
【０１５７】
[0162]本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）もしくはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置で実装され得る。様々な構成要素、モジュール、またはユニットは、開示された技法を実施するように構成されたデバイスの機能的態様を強調するように本開示において記載されているが、様々なハードウェアユニットによる実現を必ずしも必要としない。むしろ、上記に記載されたように、様々なユニットは、コーデックハードウェアユニット内で組み合わされるか、または適切なソフトウェアおよび／もしくはファームウェアとともに、上記に記載された１つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合体によって提供される場合がある。
【０１５８】
[0163]様々な例が、説明された。これらおよび他の例は、以下の特許請求の範囲に含まれる。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[Ｃ１]  ビデオデータを処理する方法であって、
ビデオデータのブロックがパレットコード化ブロックであると決定することと、
１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含む、前記ブロックに対するパレットを決定することと、
前記ブロックの１つまたは複数のピクセルに対するインデックス値を決定することと、前記インデックス値の各々は、前記ブロックの前記ピクセルのうちの１つに対する色値を示す、前記パレットエントリのうちの１つに対応し、
前記ブロックに対する前記パレットおよび前記インデックス値に基づいて、ビデオデータの前記ブロックを再構築することと、
前記ブロックがパレットコード化ブロックであることに基づいて、前記再構築されたブロックのフィルタリングをディセーブルにすることを決定することと、
を備える方法。
[Ｃ２]  前記再構築されたブロックのフィルタリングをディセーブルにすることを決定することは、前記再構築されたブロックのデブロッキングフィルタリングまたは前記再構築されたブロックのサンプル適応オフセット（ＳＡＯ）フィルタリングのうちの少なくとも１つをディセーブルにすることを備える、Ｃ１に記載の方法。
[Ｃ３]  前記ブロックを再構築することは、ビデオデコーダによって前記ビデオデータの前記ブロックを再構築することを備え、前記方法は、前記フィルタリングがディセーブルにされることに基づいて、前記ビデオデータの前記再構築されたブロックをフィルタリングすることなく、表示のために前記ビデオデコーダによって前記ビデオデータを出力すること、または前記ビデオデコーダによって前記ビデオデータを復号ピクチャバッファに記憶することの少なくとも１つをさらに備える、Ｃ１に記載の方法。
[Ｃ４]  前記ブロックを再構築することは、ビデオエンコーダによって前記ビデオデータの前記ブロックを再構築することを備え、前記方法は、前記フィルタリングがディセーブルにされることに基づいて、前記ビデオデータの前記再構築されたブロックをフィルタリングすることなく、前記ビデオエンコーダによって前記ビデオデータを復号ピクチャバッファに記憶することをさらに備える、Ｃ１に記載の方法。
[Ｃ５]  前記ブロックに対する前記パレットを決定することは、
ビデオエンコーダによって、ピクセル値クラスタリング法を使用して前記パレットに対するパレットサイズと前記パレットエントリとを決定することと、
レートひずみコストに少なくとも部分的に基づいて、前記パレットに対する前記パレットサイズ、または前記パレットエントリのうちの１つまたは複数、のうちの少なくとも１つを修正するかどうかを決定することと、を備える、Ｃ１に記載の方法。
[Ｃ６]  前記パレットサイズを修正するかどうかを決定することは、前記パレットの前記パレットエントリのうちの所与の１つに対応する所与のインデックス値を保持するかまたは除去するかを決定することを備え、前記所与のインデックス値と、前記パレットの前記パレットエントリのうちの対応する１つとを除去することは、前記パレットサイズを低減させる、Ｃ５に記載の方法。
[Ｃ７]  前記ブロックの少なくとも１つのピクセルを符号化するための第１のレートひずみコストを、前記少なくとも１つのピクセルに対する色値を示す、前記パレットエントリのうちの前記所与の１つに対応する前記所与のインデックス値を使用して、計算することと、
前記ブロックの前記少なくとも１つのピクセルに対する量子化ピクセル値を符号化することを含む、前記少なくとも１つのピクセルをエスケープピクセルとして符号化するための第２のレートひずみコストを、計算することと、
前記第１のレートひずみコスト計算値と前記第２のレートひずみコスト計算値との比較に基づいて、前記所与のインデックス値と前記パレットの前記パレットエントリのうちの前記対応する１つとを保持するかまたは除去するかを決定することとをさらに備える、Ｃ６に記載の方法。
[Ｃ８]  前記パレットサイズを修正するかどうかを決定することは、前記パレットの前記パレットエントリのうちの所与の１つに対応する所与のインデックス値を、前記パレットの前記パレットエントリのうちの隣接する１つに対応する隣接するインデックス値に併合させるかどうかを決定することを備え、前記所与のインデックス値、および前記パレットの前記パレットエントリのうちの前記対応する１つを、前記隣接するインデックス値、および前記パレットの前記パレットエントリのうちの前記隣接する１つに併合させることは、前記パレットサイズを低減させる、Ｃ５に記載の方法。
[Ｃ９]  前記隣接するインデックス値は、前記所与のインデックス値からの最小ユークリッド距離の観点から最も近いインデックス値、または前記所与のインデックス値に対するインデックス順序の観点から最も近いインデックス値のうちの１つである、Ｃ８に記載の方法。
[Ｃ１０]  前記ブロックの少なくとも１つのピクセルを符号化するための第１のレートひずみコストを、前記少なくとも１つのピクセルに対する第１の色値を示す前記パレットエントリのうちの前記所与の１つに対応する前記所与のインデックス値を使用して、計算することと、
前記ブロックの前記少なくとも１つのピクセルを符号化するための第２のレートひずみコストを、前記少なくとも１つのピクセルに対する第２の色値を示す、前記パレットエントリのうちの前記隣接する１つに対応する前記隣接するインデックス値を使用して、計算することと、ここにおいて、前記第２の色値は、前記第１の色値に類似し、
前記第１のレートひずみコスト計算値と前記第２のレートひずみコスト計算値との比較に基づいて、前記所与のインデックス値、および前記パレットの前記パレットエントリのうちの前記対応する１つを、前記隣接するインデックス値、および前記パレットの前記パレットエントリのうちの前記隣接する１つに併合させるかどうかを決定することと、をさらに備える、Ｃ８に記載の方法。
[Ｃ１１]  前記パレットの前記パレットエントリのうちの１つまたは複数を修正するかどうかを決定することは、
ｋ平均クラスタリング法を使用して、前記ビデオデータの前記ブロックに対する代表的パレットを決定することと、前記代表的パレットは、それぞれの平均ピクセル値を示す代表的パレットエントリを含み、
前記代表的パレットの前記代表的パレットエントリのうちの所与の１つに対して、前記代表的パレットエントリのうちの前記所与の１つによって示される前記平均ピクセル値に最も近い、前記代表的パレットエントリのうちの前記所与の１つにマッピングされた前記ピクセルのうちの１つのピクセル値を決定することと、
前記パレットの前記パレットエントリのうちの対応する１つによって示される前記色値とは異なる前記最も近いピクセル値に基づいて、前記パレットの前記パレットエントリのうちの前記所与の１つによって示される最終色値として、前記最も近いピクセル値を選択することと、
を備える、Ｃ５に記載の方法。
[Ｃ１２]  前記ｋ平均クラスタリング法を使用して前記代表的パレットを決定することは、
前記パレットの前記パレットエントリの各々に対して、前記パレットエントリのうちの前記それぞれの１つによって示される前記それぞれの色値にマッピングされた、前記ブロックの１つまたは複数のピクセルの平均ピクセル値を計算することと、
前記それぞれの平均ピクセル値を示す前記代表的パレットエントリを含む、前記ビデオデータの前記ブロックに対する前記代表的パレットを決定することと、ここにおいて、前記ｋ平均クラスタリング法の反復の数が、しきい値によって決定され、
を備える、Ｃ１１に記載の方法。
[Ｃ１３]  前記ピクセル値クラスタリング法を使用して、前記パレットに対する前記パレットサイズと前記パレットエントリとを決定することは、
前記ビデオデータの前記ブロックに対して、複数のエントリを含むヒストグラムを決定することと、各エントリは、それぞれの色値と、前記色値にマッピングする前記ブロックのピクセルのそれぞれの量とを含み、
前記ヒストグラムの第１のエントリが含む前記色値が、他の色値に対して最高の量のピクセルを有するように、前記エントリの各々に対するピクセルの前記それぞれの量に基づいて、前記ヒストグラムの前記エントリを降順にソートすることと、
前記ヒストグラムの前記エントリに基づいて、前記パレットの前記パレットサイズと前記パレットエントリとを決定することと、
を備える、Ｃ５に記載の方法。
[Ｃ１４]  ビデオ処理デバイスであって、
ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信している１つまたは複数のプロセッサと、を備え、前記１つまたは複数のプロセッサは、
ビデオデータのブロックがパレットコード化ブロックであると決定することと、
１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含む、前記ブロックに対するパレットを決定することと、
前記ブロックの１つまたは複数のピクセルに対するインデックス値を決定することと、前記インデックス値の各々は、前記ブロックの前記ピクセルのうちの１つに対する色値を示す、前記パレットエントリのうちの１つに対応し、
前記ブロックに対する前記パレットおよび前記インデックス値に基づいて、ビデオデータの前記ブロックを再構築することと、
前記ブロックがパレットコード化ブロックであることに基づいて、前記再構築されたブロックのフィルタリングをディセーブルにすることを決定することと、
を行うように構成される、デバイス。
[Ｃ１５]  前記１つまたは複数のプロセッサは、前記再構築されたブロックのデブロッキングフィルタリングまたは前記再構築されたブロックのサンプル適応オフセット（ＳＡＯ）フィルタリングのうちの少なくとも１つをディセーブルにするように構成される、Ｃ１４に記載のデバイス。
[Ｃ１６]  前記デバイスはビデオデコーダを備え、前記ビデオデコーダの前記１つまたは複数のプロセッサは、前記フィルタリングがディセーブルにされることに基づいて、前記ビデオデータの前記ブロックを再構築することと、前記ビデオデータの前記再構築されたブロックをフィルタリングすることなく、表示のために前記ビデオデータを出力することまたは復号ピクチャバッファに前記ビデオデータを記憶することのうちの少なくとも１つを行うことと、を行うように構成される、Ｃ１４に記載のデバイス。
[Ｃ１７]  前記デバイスはビデオエンコーダを備え、前記ビデオエンコーダの前記１つまたは複数のプロセッサは、前記フィルタリングがディセーブルにされることに基づいて、前記ビデオデータの前記ブロックを再構築することと、前記ビデオデータの前記再構築されたブロックをフィルタリングすることなく、復号ピクチャバッファに前記ビデオデータを記憶することとを行うように構成される、Ｃ１４に記載のデバイス。
[Ｃ１８]  前記デバイスはビデオエンコーダを備え、前記ブロックに対する前記パレットを決定するために、前記ビデオエンコーダの前記１つまたは複数のプロセッサは、
ピクセル値クラスタリング法を使用して、前記パレットに対するパレットサイズと前記パレットエントリとを決定することと、
レートひずみコストに少なくとも部分的に基づいて、前記パレットに対する前記パレットサイズ、または前記パレットエントリのうちの１つまたは複数、のうちの少なくとも１つを修正するかどうかを決定することと、
を行うように構成される、Ｃ１４に記載のデバイス。
[Ｃ１９]  前記パレットサイズを修正するかどうかを決定するために、前記１つまたは複数のプロセッサは、前記パレットの前記パレットエントリのうちの所与の１つに対応する所与のインデックス値を保持するかまたは除去するかを決定するように構成され、前記所与のインデックス値と、前記パレットの前記パレットエントリのうちの前記対応する１つとを除去することは、前記パレットサイズを低減させる、Ｃ１８に記載のデバイス。
[Ｃ２０]  前記１つまたは複数のプロセッサが、
前記ブロックの少なくとも１つのピクセルを符号化するための第１のレートひずみコストを、前記少なくとも１つのピクセルに対する色値を示す、前記パレットエントリのうちの前記所与の１つに対応する前記所与のインデックス値を使用して、計算することと、
前記ブロックの前記少なくとも１つのピクセルに対する量子化ピクセル値を符号化することを含む、前記少なくとも１つのピクセルをエスケープピクセルとして符号化するための第２のレートひずみコストを、計算することと、
前記第１のレートひずみコスト計算値と前記第２のレートひずみコスト計算値との比較に基づいて、前記所与のインデックス値と前記パレットの前記パレットエントリのうちの前記対応する１つとを保持するかまたは除去するかを決定することとを行うように構成される、Ｃ１９に記載のデバイス。
[Ｃ２１]  前記パレットサイズを修正するかどうかを決定するために、前記１つまたは複数のプロセッサは、前記パレットの前記パレットエントリのうちの所与の１つに対応する所与のインデックス値を、前記パレットの前記パレットエントリのうちの隣接する１つに対応する隣接するインデックス値に併合させるかどうかを決定するように構成され、前記所与のインデックス値、および前記パレットの前記パレットエントリのうちの前記対応する１つを、前記隣接するインデックス値、および前記パレットの前記パレットエントリのうちの前記隣接する１つに併合させることは、前記パレットサイズを低減させる、Ｃ１８に記載のデバイス。
[Ｃ２２]  前記隣接するインデックス値は、前記所与のインデックス値からの最小ユークリッド距離の観点から最も近いインデックス値、または前記所与のインデックス値に対するインデックス順序の観点から最も近いインデックス値のうちの１つである、Ｃ２１に記載のデバイス。
[Ｃ２３]  前記１つまたは複数のプロセッサは、
前記ブロックの少なくとも１つのピクセルを符号化するための第１のレートひずみコストを、前記少なくとも１つのピクセルに対する第１の色値を示す前記パレットエントリのうちの前記所与の１つに対応する前記所与のインデックス値を使用して、計算することと、
前記ブロックの前記少なくとも１つのピクセルを符号化するための第２のレートひずみコストを、前記少なくとも１つのピクセルに対する第２の色値を示す、前記パレットエントリのうちの前記隣接する１つに対応する前記隣接するインデックス値を使用して、計算することと、ここにおいて、前記第２の色値は、前記第１の色値に類似し、
前記第１のレートひずみコスト計算値と前記第２のレートひずみコスト計算値との比較に基づいて、前記所与のインデックス値、および前記パレットの前記パレットエントリのうちの前記対応する１つを、前記隣接するインデックス値、および前記パレットの前記パレットエントリのうちの前記隣接する１つに併合させるかどうかを決定することとを行うように構成される、Ｃ２１に記載のデバイス。
[Ｃ２４]  前記パレットの前記パレットエントリのうちの１つまたは複数を修正するかどうかを決定するために、前記１つまたは複数のプロセッサは、
ｋ平均クラスタリング法を使用して、前記ビデオデータの前記ブロックに対する代表的パレットを決定することと、前記代表的パレットは、それぞれの平均ピクセル値を示す代表的パレットエントリを含み、
前記代表的パレットの前記代表的パレットエントリのうちの所与の１つに対して、前記代表的パレットエントリのうちの前記所与の１つによって示される前記平均ピクセル値に最も近い、前記代表的パレットエントリのうちの前記所与の１つにマッピングされた前記ピクセルのうちの１つのピクセル値を決定することと、
前記パレットの前記パレットエントリのうちの対応する所与の１つによって示される前記色値とは異なる前記最も近いピクセル値に基づいて、前記パレットの前記パレットエントリのうちの前記所与の１つによって示される最終色値として、前記最も近いピクセル値を選択することと、
を行うように構成される、Ｃ１８に記載のデバイス。
[Ｃ２５]  前記ｋ平均クラスタリング法を使用して前記代表的パレットを決定するために、前記１つまたは複数のプロセッサは、
前記パレットの前記パレットエントリの各々に対して、前記パレットエントリのうちの前記それぞれの１つによって示される前記それぞれの色値にマッピングされた前記ブロックの１つまたは複数のピクセルの平均ピクセル値を計算することと、
前記それぞれの平均ピクセル値を示す前記代表的パレットエントリを含む、前記ビデオデータの前記ブロックに対する前記代表的パレットを決定することと、ここにおいて、前記ｋ平均クラスタリング法の反復の数は、しきい値によって決定され、
を行うように構成される、Ｃ２４に記載のデバイス。
[Ｃ２６]  前記ピクセル値クラスタリング法を使用して、前記パレットに対する前記パレットサイズと前記パレットエントリとを決定するために、前記１つまたは複数のプロセッサは、
前記ビデオデータの前記ブロックに対して、複数のエントリを含むヒストグラムを決定することと、各エントリは、それぞれの色値と、前記色値にマッピングする前記ブロックのピクセルのそれぞれの量とを含み、
前記ヒストグラムの第１のエントリが付含む前記色地が、他の色値に対して最高の量のピクセルを有するように、前記エントリの各々に対するピクセルの前記それぞれの量に基づいて、前記ヒストグラムの前記エントリを降順にソートすることと、
前記ヒストグラムの前記エントリに基づいて、前記パレットの前記パレットサイズと前記パレットエントリとを決定することと、
を行うように構成される、Ｃ１８に記載のデバイス。
[Ｃ２７]  前記デバイスは、
集積回路、
マイクロプロセッサ、または
ワイヤレス通信デバイスのうちの少なくとも１つを備える、Ｃ１４に記載のデバイス。
[Ｃ２８]  ビデオ処理デバイスであって、
ビデオデータのブロックがパレットコード化ブロックであると決定するための手段と、
１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含む、前記ブロックに対するパレットを決定するための手段と、
前記ブロックの１つまたは複数のピクセルに対するインデックス値を決定するための手段と、前記インデックス値の各々は、前記ブロックの前記ピクセルのうちの１つに対する色値を示す、前記パレットエントリのうちの１つに対応し、
前記ブロックに対する前記パレットおよび前記インデックス値に基づいて、ビデオデータの前記ブロックを再構築するための手段と、
前記ブロックがパレットコード化ブロックであることに基づいて、前記再構築されたブロックのフィルタリングをディセーブルにすることを決定するための手段と、
を備える、ビデオ処理デバイス。
[Ｃ２９]  ビデオデータを処理するための命令を記憶した非一時的コンピュータ可読媒体であって、前記命令は、実行されたとき、１つまたは複数のプロセッサに、
ビデオデータのブロックがパレットコード化ブロックであると決定することと、
１つまたは複数のそれぞれの色値を示す１つまたは複数のパレットエントリを含む、前記ブロックに対するパレットを決定することと、
前記ブロックの１つまたは複数のピクセルに対するインデックス値を決定することと、前記インデックス値の各々は、前記ブロックの前記ピクセルのうちの１つに対する色値を示す、前記パレットエントリのうちの１つに対応し、
前記ブロックに対する前記パレットおよび前記インデックス値に基づいて、ビデオデータの前記ブロックを再構築することと、
前記ブロックがパレットコード化ブロックであることに基づいて、前記再構築されたブロックのフィルタリングをディセーブルにすることを決定することと、
を行わせる、非一時的コンピュータ可読媒体。
【図１】
0006640105.tif 000002
【図２】
0006640105.tif 000003
【図３】
0006640105.tif 000004
【図４】
0006640105.tif 000005
【図５】
0006640105.tif 000006
【図６】
0006640105.tif 000007