(57)【要約】  ビデオデータをコーディングする例示的な方法は、ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定することと、現在ブロックの現在ピクセルのカラー値に対応すると予測される、パレットの中の特定のエントリを決定することと、複数の2値化の中から2値化を選択することと、選択された2値化を使用して、パレットの中のどのエントリが現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すインデックスをコーディングすることとを含み、複数の2値化のうちの第1の2値化を使用してインデックスをコーディングすることは、インデックスが特定のエントリに等しいかどうかを示すシンタックス要素をコーディングすることを備え、複数の2値化のうちの第2の2値化を使用してインデックスをコーディングすることは、シンタックス要素をコーディングせずに、可変長コードを使用してインデックスをコーディングすることを備える。
2017535161.tif 000002
【特許請求の範囲】
【請求項１】
ビデオデータをコーディングする方法であって、前記方法が、
ビデオコーダによって、ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定するステップと、
前記ビデオコーダによって、ビデオデータの前記現在ブロックの現在ピクセルのカラー値に対応すると予測される、前記パレットの中の特定のエントリを決定するステップと、
前記ビデオコーダによって、複数のパレットインデックス2値化の中から2値化を選択するステップと、
前記ビデオコーダによって、前記選択された2値化を使用して、前記パレットの中のどのエントリがビデオデータの前記現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すパレットインデックスをコーディングするステップとを備え、前記複数のパレットインデックス2値化のうちの第1の2値化を使用して前記パレットインデックスをコーディングするステップは、前記パレットインデックスが前記特定のエントリに等しいかどうかを示すシンタックス要素をコーディングするステップを備え、前記複数のパレットインデックス2値化のうちの第2の2値化を使用して前記パレットインデックスをコーディングするステップは、前記シンタックス要素をコーディングせずに、可変長コードを使用して前記パレットインデックスをコーディングするステップを備える、
方法。
【請求項２】
前記第1の2値化を使用して前記パレットインデックスをコーディングするステップは、
前記パレットインデックスが前記特定のエントリに等しくない場合、前記可変長コードを使用して前記パレットインデックスをコーディングするステップをさらに備える、
請求項1に記載の方法。
【請求項３】
前記複数のパレットインデックス2値化の中から前記2値化を選択するステップが、
前記パレットのサイズに基づいて変数を決定するステップと、
前記変数が既定のしきい値を満たすかどうかに基づいて、前記複数のパレットインデックス2値化の中から前記2値化を選択するステップとを備える、
請求項1に記載の方法。
【請求項４】
前記現在ブロックがエスケープピクセルを含むかどうかと、走査順序において最後にコーディングされた、前記現在ピクセルの隣接ピクセルのコーディングモードと、前記現在ピクセルが前記走査順序での最初の行にあるかどうかとに基づいて、前記変数がさらに決定される、請求項3に記載の方法。
【請求項５】
前記既定のしきい値は、スライスレベル、ピクチャレベル、またはシーケンスレベルのうちの1つまたは複数においてシグナリングされるか、あるいはエンコーダとデコーダの両方によって知られている定数である、請求項3に記載の方法。
【請求項６】
前記変数が前記しきい値を満たすかどうかに基づいて前記複数のパレットインデックス2値化の中から前記2値化を選択するステップは、
前記変数が前記既定のしきい値以上である場合、前記複数のパレットインデックス2値化の中から前記第1の2値化を選択するステップと、
前記変数が前記既定のしきい値未満である場合、前記複数のパレットインデックス2値化の中から前記第2の2値化を選択するステップとを備える、
請求項3に記載の方法。
【請求項７】
前記複数のパレットインデックス2値化の中から前記2値化を選択するステップが、
ビデオデータの前記現在ブロックに対して、前記選択された2値化を示すシンタックス要素をコーディングするステップを備える、
請求項1に記載の方法。
【請求項８】
前記特定のエントリの値が前記パレットの中の他のエントリの値未満になるように前記パレットの中の前記エントリを並べ替えるステップ
をさらに備える、請求項1に記載の方法。
【請求項９】
ビデオデータの前記現在ブロックに対して、前記現在ブロックにとって遷移モードが有効化されているかどうかを示すシンタックス要素をコーディングするステップ
をさらに備える、請求項1に記載の方法。
【請求項１０】
前記ビデオコーダによって、前記現在ブロックのそれぞれのピクセルに対して、複数のモードのうちの、前記それぞれのピクセルに対する前記カラー値を予測するために使用されるモードを示すそれぞれのシンタックス要素をコーディングするステップをさらに備え、前記複数のモードが、インデックスモード、遷移コピーモード、および上コピーモードを含み、前記インデックスモードが使用されるときの前記シンタックス要素の2値化と、前記遷移モードが使用されるときの前記シンタックス要素の2値化とを、単一のビットが区別する、
請求項1に記載の方法。
【請求項１１】
前記パレットを決定するステップは、ビデオデータの前記現在ブロック用の前記パレットがビデオデータの以前にコーディングされたブロック用のパレットから予測されるかどうかを決定するステップを備え、前記現在ピクセルの前記カラー値に対応すると予測される、前記パレットの中の前記特定のエントリが、前記現在ブロック用の遷移テーブルに基づいて決定され、前記方法は、
前記現在ブロック用の前記パレットがビデオデータの以前にコーディングされたブロック用の前記パレットから予測されるとの決定に応答して、前記現在ブロック用の前記遷移テーブルをビデオデータの前記以前にコーディングされたブロック用の遷移テーブルから予測するステップをさらに備える、
請求項1に記載の方法。
【請求項１２】
前記現在ピクセルの前記カラー値に対応すると予測される、前記パレットの中の前記特定のエントリが、前記現在ブロック用の遷移テーブルに基づいて決定され、前記方法は、
前記現在ブロック用の前記遷移テーブルがビデオデータの以前にコーディングされたブロック用の遷移テーブルから継承されるかどうかを示すシンタックス要素をコーディングするステップをさらに備える、
請求項1に記載の方法。
【請求項１３】
前記方法がワイヤレス通信デバイス上で実行可能であり、前記デバイスが、
ビデオデータを記憶するように構成されたメモリと、
前記メモリに記憶された前記ビデオデータを処理するための命令を実行するように構成されたプロセッサとを備え、前記デバイスが、
前記コーディングされたパレットインデックスを送信するように構成された送信機、および
前記コーディングされたパレットインデックスを受信するように構成された受信機
のうちの1つまたは両方をさらに備える、
請求項1に記載の方法。
【請求項１４】
前記ワイヤレス通信デバイスがセルラー電話であり、前記送信機および/または前記受信機が、前記コーディングされたパレットインデックスをセルラー通信規格に従って変調するように構成される、請求項13に記載の方法。
【請求項１５】
ビデオコーディングデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサは、
ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定することと、
ビデオデータの前記現在ブロックの現在ピクセルのカラー値に対応すると予測される、前記パレットの中の特定のエントリを決定することと、
複数のパレットインデックス2値化の中から2値化を選択することと、
前記選択された2値化を使用して、前記パレットの中のどのエントリがビデオデータの前記現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すパレットインデックスをコーディングすることとを行うように構成され、前記複数のパレットインデックス2値化のうちの第1の2値化を使用して前記パレットインデックスをコーディングするために、前記1つまたは複数のプロセッサは、前記パレットインデックスが前記特定のエントリに等しいかどうかを示すシンタックス要素をコーディングするように構成され、前記複数のパレットインデックス2値化のうちの第2の2値化を使用して前記パレットインデックスをコーディングするために、前記1つまたは複数のプロセッサは、前記シンタックス要素をコーディングせずに、可変長コードを使用して前記パレットインデックスをコーディングするように構成される、
ビデオコーディングデバイス。
【請求項１６】
前記第1の2値化を使用して前記パレットインデックスをコーディングするために、前記1つまたは複数のプロセッサは、
前記パレットインデックスが前記特定のエントリに等しくない場合、前記可変長コードを使用して前記パレットインデックスをコーディングするようにさらに構成される、
請求項15に記載のビデオコーディングデバイス。
【請求項１７】
前記複数のパレットインデックス2値化の中から前記2値化を選択するために、前記1つまたは複数のプロセッサは、
前記パレットのサイズに基づいて変数を決定し、
前記変数が既定のしきい値を満たすかどうかに基づいて、前記複数のパレットインデックス2値化の中から前記2値化を選択するように構成される、
請求項15に記載のビデオコーディングデバイス。
【請求項１８】
前記現在ブロックがエスケープピクセルを含むかどうかと、走査順序において最後にコーディングされた、前記現在ピクセルの隣接ピクセルのコーディングモードと、前記現在ピクセルが前記走査順序での最初の行にあるかどうかとに基づいて、前記変数がさらに決定される、請求項17に記載のビデオコーディングデバイス。
【請求項１９】
前記既定のしきい値は、スライスレベル、ピクチャレベル、またはシーケンスレベルのうちの1つまたは複数においてシグナリングされるか、あるいはエンコーダとデコーダの両方によって知られている定数である、請求項17に記載のビデオコーディングデバイス。
【請求項２０】
前記変数が前記しきい値を満たすかどうかに基づいて前記複数のパレットインデックス2値化の中から前記2値化を選択するために、前記1つまたは複数のプロセッサは、
前記変数が前記既定のしきい値以上である場合、前記複数のパレットインデックス2値化の中から前記第1の2値化を選択し、
前記変数が前記既定のしきい値未満である場合、前記複数のパレットインデックス2値化の中から前記第2の2値化を選択するように構成される、
請求項17に記載のビデオコーディングデバイス。
【請求項２１】
前記複数のパレットインデックス2値化の中から前記2値化を選択するために、前記1つまたは複数のプロセッサは、
ビデオデータの前記現在ブロックに対して、前記選択された2値化を示すシンタックス要素をコーディングするように構成される、
請求項15に記載のビデオコーディングデバイス。
【請求項２２】
前記1つまたは複数のプロセッサは、
前記特定のエントリの値が前記パレットの中の他のエントリの値未満になるように前記パレットの中の前記エントリを並べ替えるようにさらに構成される、
請求項15に記載のビデオコーディングデバイス。
【請求項２３】
前記1つまたは複数のプロセッサは、
ビデオデータの前記現在ブロックに対して、前記現在ブロックにとって遷移モードが有効化されているかどうかを示すシンタックス要素をコーディングするようにさらに構成される、
請求項15に記載のビデオコーディングデバイス。
【請求項２４】
前記1つまたは複数のプロセッサは、
前記ビデオコーダによって、前記現在ブロックのそれぞれのピクセルに対して、複数のモードのうちの、前記それぞれのピクセルに対する前記カラー値を予測するために使用されるモードを示すそれぞれのシンタックス要素をコーディングするようにさらに構成され、前記複数のモードが、インデックスモード、遷移コピーモード、および上コピーモードを含み、前記インデックスモードが使用されるときの前記シンタックス要素の2値化と、前記遷移モードが使用されるときの前記シンタックス要素の2値化とを、単一のビットが区別する、
請求項15に記載のビデオコーディングデバイス。
【請求項２５】
前記パレットを決定するために、前記1つまたは複数のプロセッサは、ビデオデータの前記現在ブロック用の前記パレットがビデオデータの以前にコーディングされたブロック用のパレットから予測されるかどうかを決定するように構成され、前記現在ピクセルの前記カラー値に対応すると予測される、前記パレットの中の前記特定のエントリが、前記現在ブロック用の遷移テーブルに基づいて決定され、前記1つまたは複数のプロセッサは、
前記現在ブロック用の前記パレットがビデオデータの以前にコーディングされたブロック用の前記パレットから予測されるとの決定に応答して、前記現在ブロック用の前記遷移テーブルをビデオデータの前記以前にコーディングされたブロック用の遷移テーブルから予測するようにさらに構成される、
請求項15に記載のビデオコーディングデバイス。
【請求項２６】
前記現在ピクセルの前記カラー値に対応すると予測される、前記パレットの中の前記特定のエントリが、前記現在ブロック用の遷移テーブルに基づいて決定され、前記1つまたは複数のプロセッサは、
前記現在ブロック用の前記遷移テーブルがビデオデータの以前にコーディングされたブロック用の遷移テーブルから継承されるかどうかを示すシンタックス要素をコーディングするようにさらに構成される、
請求項15に記載のビデオコーディングデバイス。
【請求項２７】
前記ビデオコーディングデバイスがワイヤレス通信デバイスであり、
前記コーディングされたパレットインデックスを送信するように構成された送信機、および
前記コーディングされたパレットインデックスを受信するように構成された受信機
のうちの1つまたは両方をさらに備える、
請求項15に記載のビデオコーディングデバイス。
【請求項２８】
前記ワイヤレス通信デバイスがセルラー電話であり、前記送信機および/または前記受信機が、前記コーディングされたパレットインデックスをセルラー通信規格に従って変調するように構成される、請求項27に記載のビデオコーディングデバイス。
【請求項２９】
ビデオコーディングデバイスであって、
ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定するための手段と、
ビデオデータの前記現在ブロックの現在ピクセルのカラー値に対応すると予測される、前記パレットの中の特定のエントリを決定するための手段と、
複数のパレットインデックス2値化の中から2値化を選択するための手段と、
前記選択された2値化を使用して、前記パレットの中のどのエントリがビデオデータの前記現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すパレットインデックスをコーディングするための手段とを備え、前記複数のパレットインデックス2値化のうちの第1の2値化を使用して前記パレットインデックスをコーディングするための前記手段は、前記パレットインデックスが前記特定のエントリに等しいかどうかを示すシンタックス要素をコーディングするための手段を備え、前記複数のパレットインデックス2値化のうちの第2の2値化を使用して前記パレットインデックスをコーディングするための前記手段は、前記シンタックス要素をコーディングせずに、可変長コードを使用して前記パレットインデックスをコーディングするための手段を備える、
ビデオコーディングデバイス。
【請求項３０】
命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、ビデオコーディングデバイスの1つまたは複数のプロセッサに、
ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定することと、
ビデオデータの前記現在ブロックの現在ピクセルのカラー値に対応すると予測される、前記パレットの中の特定のエントリを決定することと、
複数のパレットインデックス2値化の中から2値化を選択することと、
前記選択された2値化を使用して、前記パレットの中のどのエントリがビデオデータの前記現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すパレットインデックスをコーディングすることとをさせ、前記1つまたは複数のプロセッサに前記複数のパレットインデックス2値化のうちの第1の2値化を使用して前記パレットインデックスをコーディングさせる前記命令が、前記1つまたは複数のプロセッサに、前記パレットインデックスが前記特定のエントリに等しいかどうかを示すシンタックス要素をコーディングさせる命令を備え、前記1つまたは複数のプロセッサに前記複数のパレットインデックス2値化のうちの第2の2値化を使用して前記パレットインデックスをコーディングさせる前記命令が、前記1つまたは複数のプロセッサに、前記シンタックス要素をコーディングせずに、可変長コードを使用して前記パレットインデックスをコーディングさせる命令を備える、
コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、その内容全体が参照により本明細書に組み込まれる、2014年10月7日に出願された米国仮出願第62/061,088号の利益を主張するものである。
【０００２】
本開示は、ビデオ符号化および復号に関し、より詳細には、パレットベースコーディング技法を使用する符号化および復号に関する。
【背景技術】
【０００３】
デジタルビデオ機能は、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム、ワイヤレスブロードキャストシステム、携帯情報端末(PDA)、ラップトップまたはデスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダー、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラーまたは衛星無線電話、いわゆる「スマートフォン」、ビデオ遠隔会議デバイス、ビデオストリーミングデバイスなどを含む、広範囲のデバイスに組み込まれ得る。デジタルビデオデバイスは、MPEG-2、MPEG-4、ITU-T H.263、ITU-T H.264/MPEG-4, Part 10,アドバンストビデオコーディング(AVC)、最近確定されたITU-T H.265,高効率ビデオコーディング(HEVC)規格、および現在開発中の様々なHEVC拡張によって定義される規格に記載されているようなビデオ圧縮技法を実装する。ビデオデバイスは、そのようなビデオ圧縮技法を実装することによって、デジタルビデオ情報をより効率的に送信、受信、符号化、復号、および/または記憶し得る。
【０００４】
ビデオ圧縮技法は、ビデオシーケンスに固有の冗長性を低減または除去するために、空間(ピクチャ内)予測および/または時間(ピクチャ間)予測を実行する。ブロックベースビデオコーディングのために、ビデオスライス(すなわち、ビデオフレーム、またはビデオフレームの一部分)がビデオブロックに区分されてよく、ビデオブロックは、ツリーブロック、コーディングユニット(CU:coding unit)、および/またはコーディングノードと呼ばれることもある。ピクチャのイントラコード化(I)スライスの中のビデオブロックは、同じピクチャにおける隣接ブロックの中の参照サンプルに対する空間予測を使用して符号化される。ピクチャのインターコード化(PまたはB)スライスの中のビデオブロックは、同じピクチャにおける隣接ブロックの中の参照サンプルに対する空間予測、または他の参照ピクチャにおける参照サンプルに対する時間予測を使用し得る。ピクチャは、フレームと呼ばれることがあり、参照ピクチャは、参照フレームと呼ばれることがある。
【０００５】
空間予測または時間予測が、コーディングされるべきブロックに対する予測ブロックをもたらす。残差データが、コーディングされるべき元のブロックと予測ブロックとの間のピクセル差分を表す。インターコード化ブロックは、予測ブロックを形成する参照サンプルのブロックを指す動きベクトル、およびコード化ブロックと予測ブロックとの間の差分を示す残差データに従って符号化される。イントラコード化ブロックは、イントラコーディングモードおよび残差データに従って符号化される。さらなる圧縮のために、残差データがピクセル領域から変換領域に変換されて残差変換係数が得られてよく、次いで、残差変換係数が量子化され得る。最初に2次元アレイに配置される量子化変換係数は、変換係数の1次元ベクトルを生成するために走査されてよく、エントロピーコーディングが、さらなる圧縮を実現するために適用され得る。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Brossら、「High Efficiency Video Coding (HEVC) Text Specification」、www.itu.int/rec/T-REC-H.265-201304-I
【非特許文献２】Guoら、「RCE4: Summary report of HEVC Range Extensions Core Experiments 4 (RCE4) on palette coding for screen content」、文書JCTVC-P0035、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第16回会合、サンノゼ、米国、2014年1月9日〜17日、phenix.it-sudparis.eu/jct/doc_end_user/current_document.php?id=8765
【非特許文献３】Guoら、「Non-RCE3: Modified Palette Mode for Screen Content Coding」、文書JCTVC-N0249、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第14回会合、ウィーン、オーストリア、2013年7月25日〜8月2日、phenix.it-sudparis.eu/jct/doc_end_user/current_document.php?id=7965
【非特許文献４】SCM2.0、https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/HM-15.0+RExt-8.0+SCM-2.0/
【非特許文献５】Gisquetら、「AhG10: Transition copy mode for Palette mode」、文書JCTVC-Q0065、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第17回会合、バレンシア、スペイン、2014年3月27日〜4月4日、phenix.it-sudparis.eu/jct/doc_end_user/current_document.php?id=8869
【発明の概要】
【課題を解決するための手段】
【０００７】
一例では、ビデオデータをコーディングする方法は、ビデオコーダによって、ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定することと、ビデオコーダによって、ビデオデータの現在ブロックの現在ピクセルのカラー値に対応すると予測される、パレットの中の特定のエントリを決定することと、ビデオコーダによって、複数のパレットインデックス2値化の中から2値化を選択することと、ビデオコーダによって、選択された2値化を使用して、パレットの中のどのエントリがビデオデータの現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すパレットインデックスをコーディングすることとを含み、複数のパレットインデックス2値化のうちの第1の2値化を使用してパレットインデックスをコーディングすることは、パレットインデックスが特定のエントリに等しいかどうかを示すシンタックス要素をコーディングすることを備え、複数のパレットインデックス2値化のうちの第2の2値化を使用してパレットインデックスをコーディングすることは、シンタックス要素をコーディングせずに、可変長コードを使用してパレットインデックスをコーディングすることを備える。
【０００８】
別の例では、ビデオコーディングデバイスは、ビデオデータを記憶するように構成されたメモリと、1つまたは複数のプロセッサとを含む。この例では、1つまたは複数のプロセッサは、ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定することと、ビデオデータの現在ブロックの現在ピクセルのカラー値に対応すると予測される、パレットの中の特定のエントリを決定することと、複数のパレットインデックス2値化の中から2値化を選択することと、選択された2値化を使用して、パレットの中のどのエントリがビデオデータの現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すパレットインデックスをコーディングすることとを行うように構成される。この例では、複数のパレットインデックス2値化のうちの第1の2値化を使用してパレットインデックスをコーディングするために、1つまたは複数のプロセッサは、パレットインデックスが特定のエントリに等しいかどうかを示すシンタックス要素をコーディングするように構成される。この例では、複数のパレットインデックス2値化のうちの第2の2値化を使用してパレットインデックスをコーディングするために、1つまたは複数のプロセッサは、シンタックス要素をコーディングせずに、可変長コードを使用してパレットインデックスをコーディングするように構成される。
【０００９】
別の例では、ビデオコーディングデバイスは、ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定するための手段と、ビデオデータの現在ブロックの現在ピクセルのカラー値に対応すると予測される、パレットの中の特定のエントリを決定するための手段と、複数のパレットインデックス2値化の中から2値化を選択するための手段と、選択された2値化を使用して、パレットの中のどのエントリがビデオデータの現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すパレットインデックスをコーディングするための手段とを含み、複数のパレットインデックス2値化のうちの第1の2値化を使用してパレットインデックスをコーディングするための手段は、パレットインデックスが特定のエントリに等しいかどうかを示すシンタックス要素をコーディングするための手段を備え、複数のパレットインデックス2値化のうちの第2の2値化を使用してパレットインデックスをコーディングするための手段は、シンタックス要素をコーディングせずに、可変長コードを使用してパレットインデックスをコーディングするための手段を備える。
【００１０】
別の例では、コンピュータ可読記憶媒体は、実行されたとき、ビデオコーディングデバイスの1つまたは複数のプロセッサに、ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定することと、ビデオデータの現在ブロックの現在ピクセルのカラー値に対応すると予測される、パレットの中の特定のエントリを決定することと、複数のパレットインデックス2値化の中から2値化を選択することと、選択された2値化を使用して、パレットの中のどのエントリがビデオデータの現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すパレットインデックスをコーディングすることとをさせる命令を記憶し、1つまたは複数のプロセッサに複数のパレットインデックス2値化のうちの第1の2値化を使用してパレットインデックスをコーディングさせる命令が、1つまたは複数のプロセッサに、パレットインデックスが特定のエントリに等しいかどうかを示すシンタックス要素をコーディングさせる命令を備え、1つまたは複数のプロセッサに複数のパレットインデックス2値化のうちの第2の2値化を使用してパレットインデックスをコーディングさせる命令が、1つまたは複数のプロセッサに、シンタックス要素をコーディングせずに、可変長コードを使用してパレットインデックスをコーディングさせる命令を備える。
【図面の簡単な説明】
【００１１】
【図１】本開示の技法を利用し得る例示的なビデオコーディングシステムを示すブロック図である。
【図２】本開示で説明する技法を実施し得る例示的なビデオエンコーダを示すブロック図である。
【図３】本開示で説明する技法を実施し得る例示的なビデオデコーダを示すブロック図である。
【図４】本開示の技法に一致する、ビデオデータをコーディングするためのパレットを決定することの一例を示す概念図である。
【図５】本開示の技法に一致する、ピクセルのブロック用のパレットへのインデックスを決定することの一例を示す概念図である。
【図６】本開示の技法に一致する、ピクセルのブロック用のパレットからインデックスを除去するための例示的なプルーニング(pruning)動作を示す概念図である。
【図７】本開示の技法に一致する、ピクセルのブロック用のパレット内でインデックスを並べ替えるための例示的な動作を示す概念図である。
【図８】本開示の技法に一致する、ピクセルのブロック用のパレット内でインデックスを並べ替えるとともに、そうしたパレットからインデックスを除去するための例示的な動作を示す概念図である。
【図９】本開示の技法に一致する、ビデオデータのブロックのピクセルに対するインデックスを符号化するための例示的なプロセスを示すフローチャートである。
【図１０】本開示の技法に一致する、ビデオデータのブロックのピクセルに対するインデックスを復号するための例示的なプロセスを示すフローチャートである。
【発明を実施するための形態】
【００１２】
本開示は、ビデオコーディングおよび圧縮のための技法を含む。詳細には、本開示は、ビデオデータのパレットベースコーディングのための技法を説明する。たとえば、本開示は、改善されたパレットインデックス2値化のための技法、およびパレットコーディングに対してシグナリングするための技法などの、ビデオコンテンツ、特に、スクリーンコンテンツの、パレットコーディングを用いたコーディングをサポートするための技法を説明する。
【００１３】
従来のビデオコーディングでは、画像は、連続階調および空間的に滑らかであるものと想定される。これらの想定に基づいて、ブロックベースの変換、フィルタ処理、および自然コンテンツビデオにとって良好な性能を示してきた他のツールなどの、様々なツールが開発されてきた。
【００１４】
しかしながら、リモートデスクトップ、共同作業、およびワイヤレスディスプレイのような用途では、コンピュータ生成されたスクリーンコンテンツ(たとえば、テキストまたはコンピュータグラフィックスなどの)が、圧縮されるべき主要なコンテンツであり得る。このタイプのコンテンツは、離散階調を有するとともに鋭い線および高コントラストのオブジェクト境界を有する傾向がある。連続階調および滑らかさという想定は、もはやスクリーンコンテンツにとって当てはまらない場合があり、したがって、従来のビデオコーディング技法は、スクリーンコンテンツを含むビデオデータを圧縮するのに効率的な方法でない場合がある。
【００１５】
本開示は、スクリーン生成されたコンテンツのコーディングにとって特に好適であり得るパレットベースコーディングを説明する。たとえば、ビデオデータの特定のエリアが比較的少数のカラーを有すると想定する。ビデオコーダ(ビデオエンコーダまたはビデオデコーダ)は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すためのカラーのテーブルとして、いわゆる「パレット」をコーディングし得る。各ピクセルは、ピクセルのカラーを表すパレットの中のエントリに関連付けられ得る。たとえば、ビデオコーダは、ピクセル値をパレットの中の適切なエントリにマッピングするインデックスをコーディングし得る。ピクセルのカラーがパレットに含まれないとき、ピクセルは、エスケープピクセルと呼ばれることがあり、ビデオコーダは、ピクセルに対するサンプル値を示すデータをコーディングし得る。
【００１６】
上記の例では、ビデオエンコーダは、ブロック用のパレットを決定すること(たとえば、パレットを明示的にコーディングすること、パレットを予測すること、またはそれらの組合せ)、各ピクセルの値を表すためのエントリをパレットの中に配置すること、およびピクセル値をパレットにマッピングする、ピクセルに対するインデックス値とともにパレットを符号化することによって、ビデオデータのブロックを符号化し得る。ビデオデコーダは、ブロック用のパレット、ならびにブロックのピクセルに対するインデックス値を、符号化ビットストリームから取得し得る。ビデオデコーダは、ピクセルのインデックス値をパレットのエントリにマッピングして、ブロックのピクセル値を再構成し得る。
【００１７】
上記の例は、パレットベースコーディングの一般的な説明を提供することを意図する。様々な例では、本開示で説明する技法は、パレットベースコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、ならびにパレットベースコーディングマップおよび他のシンタックス要素を送信することのうちの、1つまたは複数の様々な組合せのための技法を含み得る。そのような技法は、ビデオコーディング効率を改善し得、たとえば、スクリーン生成されたコンテンツを表すために、より少数のビットしか必要としない。
【００１８】
ビデオデータのパレットベースコーディングのための技法は、インター予測コーディングまたはイントラ予測コーディングなどの、1つまたは複数の他のコーディング技法とともに使用され得る。たとえば、以下でより詳細に説明するように、エンコーダもしくはデコーダ、または組み合わされたエンコーダデコーダ(コーデック)が、インター予測コーディングおよびイントラ予測コーディング、ならびにパレットベースコーディングを実行するように構成され得る。
【００１９】
いくつかの例では、パレットベースコーディング技法は、1つまたは複数のビデオコーディング規格とともに使用するために構成され得る。たとえば、高効率ビデオコーディング(HEVC)は、ITU-Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECモーションピクチャエキスパートグループ(MPEG)のビデオコーディング共同研究部会(JCT-VC)によって開発された新たなビデオコーディング規格である。最近のHEVCテキスト仕様は、www.itu.int/rec/T-REC-H.265-201304-Iにおいて入手可能な、Brossら、「High Efficiency Video Coding (HEVC) Text Specification」(「HEVCバージョン1」)に記載されている。
【００２０】
HEVCフレームワークに関して、一例として、パレットベースコーディング技法は、コーディングユニット(CU)モードとして使用されるように構成され得る。他の例では、パレットベースコーディング技法は、HEVCのフレームワークにおけるPUモードとして使用されるように構成され得る。したがって、CUモードのコンテキストにおいて説明される、以下の開示されるプロセスのすべては、追加または代替として、PUに適用され得る。しかしながら、そのような技法が、独立に機能するように、または他の既存の、もしくはこれから開発されるべきシステム/規格の一部として機能するように適用され得るので、これらのHEVCベースの例は、本明細書で説明するパレットベースコーディング技法の制約または限定と見なされるべきでない。これらの場合には、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、または非矩形形状の領域でさえあり得る。
【００２１】
本開示の態様は、それぞれのカラー値にそれぞれ対応するパレットのエントリにブロックのピクセルをマッピングするインデックス値をコーディングすることに関する。ビデオコーダは、走査順序または走査方向と呼ばれることがある特定の順序で、マップのインデックス値をコーディングし得る。いくつかの例では、マップのインデックスは、ラスタ走査順序と呼ばれることがある順序で、上から下へ、左から右へ走査され得る。ラスタ走査順序では、現在のラインの最初のインデックスが、前のラインの最後のインデックスの直後に走査され得る。いくつかの例では、マップのインデックスは、スネーク走査順序と呼ばれることがある順序で、ラインごとに互い違いになる方向で走査され得る。スネーク走査順序では、現在のラインの最後のインデックスが、前のラインの最後のインデックスの直後に走査され得る。
【００２２】
いくつかの例では、ビデオコーダは、インデックス値のマップからの現在のインデックス値を明示的にコーディングし得る。たとえば、ビデオコーダは、現在のインデックス値がパレットの中の第2のインデックス値であることを示す値をコーディングし得る。いくつかの例では、現在のインデックス値を明示的にコーディングするのではなく、ビデオコーダは、現在のインデックス値をマップの1つまたは複数のインデックスに対してコーディングし得る。マップのインデックス値をマップの他のインデックスに対してコーディングするための、いくつかの異なる技法が提案されてきた。たとえば、phenix.it-sudparis.eu/jct/doc_end_user/current_document.php?id=8765において入手可能である、Guoら、「RCE4: Summary report of HEVC Range Extensions Core Experiments 4 (RCE4) on palette coding for screen content」、文書JCTVC-P0035、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第16回会合、サンノゼ、米国、2014年1月9日〜17日(以下、「JCTVC-P0035」)は、パレットモードコーディングの2つの方法を記載している。
【００２３】
マップのインデックスをマップの1つまたは複数の他のインデックスに対してコーディングするためにJCTVC-P0035によって記載されている第1の方法は、3つのコーディングモードを提供する。ピクセルラインごとに、コーディングモードを示すために、フラグがシグナリングされ得る。第1の方法は、3つのモード、すなわち、水平モード、垂直モード、および通常モードを有し得る。さらに、ピクセルがエスケープピクセルとして分類される場合、ピクセル値が送信され得る。
【００２４】
マップのインデックスをマップの1つまたは複数の他のインデックスに対してコーディングするためにJCTVC-P0035によって記載されている第2の方法は、エントリ方向の予測方式を使用して、左のCUのパレットに基づいて現在パレットをコーディングすることを提供する。第2の方法は、CUの中のピクセルが3つのモード、すなわち、「上コピーモード」、「ランモード」、および「ピクセルモード」を使用してラスタ走査順序で符号化されることを提供する。
【００２５】
別の例として、phenix.it-sudparis.eu/jct/doc_end_user/current_document.php?id=7965において入手可能である、Guoら、「Non-RCE3: Modified Palette Mode for Screen Content Coding」、文書JCTVC-N0249、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第14回会合、ウィーン、オーストリア、2013年7月25日〜8月2日(以下、「JCTVC-N0249」)は、パレットモードコーディングの追加の方法を記載している。
【００２６】
JCTVC-N0249では、パレットインデックスコーディングモードは、ランレングスコーディングを伴う左からのコピー(すなわち、「ランモード」)と上からのコピー(すなわち、「上コピーモード」)の両方に一般化されている。「ランモード」では、ビデオコーダは、最初にパレットインデックスと、それに後続する「palette_run」(たとえば、M)とをシグナリングし得る。現在位置および後続のM個の位置が、シグナリングされるパレットインデックスと同じパレットインデックスを有するので、現在位置および後続のM個の位置にとってこれ以上の情報がコーディングされなくてよい。「上コピーモード」では、後続のN個の位置(現在位置を含む)にとって、パレットインデックスが、上の行の中の同じロケーションにあるもののパレットインデックスに等しいことを示すために、ビデオコーダは値「copy_run」(たとえば、N)をコーディングし得る。
【００２７】
別の例として、SCM2.0、すなわち、https://hevc.hhi.fraunhofer.de/svn/svn_HEVCSoftware/tags/HM-15.0+RExt-8.0+SCM-2.0/において入手可能である、開発中の参照ソフトウェアの第2のバージョン(以下、「SCM2.0」)は、「インデックスモード」および「上からのコピー」モードを提供する。「インデックスモード」では、ビデオコーダは、パレットインデックスを最初にシグナリングする。インデックスがパレットのサイズに等しい場合、このことは、サンプルがエスケープサンプルであることを示す。この場合、ビデオコーダは、成分ごとにサンプル値または量子化サンプル値をシグナリングする。たとえば、パレットサイズが4である場合、非エスケープサンプルにとって、パレットインデックスは範囲[0,3]の中にある。この場合、4としてのインデックス値は、エスケープサンプルを意味し得る。インデックスが非エスケープサンプルを示す場合、ビデオコーダは、ランレングスを示す非負の値n-1によって、同じインデックスを共有する、走査順序での後続のサンプルの数を規定し得るランレングスをシグナリングし得、そのことは、現在のピクセルを含む後続のn個のピクセルが、最初にシグナリングされたインデックスと同じピクセルインデックスを有することを意味する。「上からのコピー」モードでは、ビデオコーダは、現在ピクセルを含む後続のm個のピクセルにとって、パレットインデックスがそれらのすぐ上のネイバーとそれぞれ同じであることを示すために、非負のランレングス値m-1だけをシグナリングする。「上からのコピー」ランモード内ではパレットインデックスが異なる場合があるという意味で、「上からのコピー」モードが「インデックス」モードと異なることに留意されたい。
【００２８】
上記で説明した予測モードは、インデックスマップを表すために使用されるデータの量を低減し得るという点で有益であり得るが、それらのモードがすべての状況において最適とは限らない場合がある。たとえば、上記で説明したモードは、厳密に垂直または水平の特徴にとって好適であり得るが、上記で説明したモードがそれにとって最適でない異なる挙動をパレットのようなコンテンツが示す事例がある。詳細には、コンテンツは、ピクセル値の間での遷移を含み得る。phenix.it-sudparis.eu/jct/doc_end_user/current_document.php?id=8869において利用可能である、Gisquetら、「AhG10: Transition copy mode for Palette mode」、文書JCTVC-Q0065、ITU-T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT-VC)、第17回会合、バレンシア、スペイン、2014年3月27日〜4月4日(以下、「JCTVC-N0249」)は、「遷移モード」と称される、前記遷移を利用する追加の予測モードを記載している。
【００２９】
パレットベースコーディングの遷移モードでは、ビデオコーダがマップのインデックスをコーディングするとき、ビデオコーダは、インデックス値の間での遷移に関する情報を記憶し得、記憶された情報を、後でインデックス値を予測するために使用し得る。いくつかの例では、ビデオコーダによって記憶される情報は、所与のインデックス値の最後の出現に対する後続のインデックス値を含む、遷移テーブルと呼ばれるテーブルであり得る。たとえば、テーブルは、インデックス値5の最後の出現にインデックス値3が後続したことを示し得る。後続のインデックス値をコーディングするとき、ビデオコーダは、予測インデックス値を決定するために、記憶された情報を使用し得る。たとえば、現在のインデックス値が、インデックス値5の次の出現に後続するインデックス値である場合、ビデオコーダは、現在のインデックス値に対する予測インデックス値がインデックス値3であると決定し得る。しかしながら、予測される値が正確でないことがある(すなわち、実際には現在のインデックス値のインデックス値でないことがある)ので、ビデオコーダはまた、予測インデックス値が正確であるかどうかという表示をコーディングし得る。現在のインデックス値が予測インデックス値に等しくない場合、ビデオコーダは、短縮バイナリコードを使用して現在のインデックス値をコーディングし得る。一例として、現在のインデックス値が実際にはインデックス値3である場合、ビデオコーダは、予測インデックス値が正確であることを示すフラグをコーディングし得る。別の例として、現在のインデックス値がインデックス値4である場合、ビデオコーダは、予測インデックス値が正確でないことを示すフラグをコーディングし得、短縮バイナリコードを使用してインデックス値4をコーディングし得る。
【００３０】
ビデオエンコーダとビデオデコーダの両方が予測インデックス値を決定するために同じプロセスを利用し得る場合、遷移モードの使用は、ピクセル値を表すために必要とされるデータの量を低減し得る。しかしながら、いくつかの例では、遷移モードのために提案される2値化およびシグナリングが効率的でないことがある。
【００３１】
本開示の1つまたは複数の技法によれば、遷移モードのための単一の2値化を使用するのではなく、ビデオコーダは、パレットインデックス値をコーディングするために使用すべき2値化を複数の2値化の中から選択し得る。一例として、複数の2値化のうちの第1の2値化を使用してパレットインデックスをコーディングするとき、ビデオコーダは、パレットインデックスが予測インデックス値に等しいかどうかを示すシンタックス要素をコーディングし得、パレットインデックスが予測インデックス値に等しくない場合、可変長コードを使用してパレットインデックスをコーディングし得る。別の例として、複数の2値化のうちの第2の2値化を使用してパレットインデックスをコーディングするとき、ビデオコーダは、パレットインデックスが予測インデックス値に等しいかどうかを示すシンタックス要素をコーディングせずに、可変長コードを使用してパレットインデックスをコーディングし得る。さらに、第1の2値化と第2の2値化の両方において、ビデオコーダによって使用される可変長コードは、小さいインデックス値が大きいインデックス値よりも短いコードを有するように定義され得る。たとえば、6個のエントリを含むパレット(すなわち、[0,5]としての範囲の中のパレットインデックス)において、第1のエントリ(すなわち、パレットインデックス値[0])に対応する可変長コードは、第6のエントリ(すなわち、パレットインデックス値[5])に対応する可変長コードよりも短くなり得る。そのような可変長コーディングの一例は、短縮バイナリコーディングである。
【００３２】
いくつかの例では、ビデオコーダは、パレットのサイズに基づいて2値化を選択し得る。たとえば、ビデオコーダは、パレットのサイズに基づいて変数を決定し得る。いくつかの例では、変数は、パレットのサイズであり得る。いくつかの例では、変数は、1つまたは複数の調整が実行された後のパレットのサイズであり得る(たとえば、SCM2.0に記載されるようなmaxSymbol)。調整のさらなる説明が以下に提供される。ビデオコーダは、変数が既定のしきい値を満たすかどうかに基づいて、複数のパレットインデックス2値化の中から2値化を選択し得る。一例として、変数が既定のしきい値以上である場合、ビデオコーダは、第1の2値化を選択し得る。別の例として、変数が既定のしきい値未満である場合、ビデオコーダは、第2の2値化を選択し得る。したがって、いくつかの例では、変数が小さいとき(たとえば、パレットサイズが小さい場合)、ビデオコーダは、第2の2値化を使用してインデックス値をコーディングし得る。上で述べたように、第2の2値化を使用してインデックス値をコーディングするとき、ビデオコーダは、パレットインデックスが予測インデックス値に等しいかどうかを示すシンタックス要素をコーディングせずに、可変長コードを使用してインデックス値をコーディングし得る。このようにして、ビデオエンコーダは、パレットインデックスを表すために使用されるデータの量を低減し得る(すなわち、パレットサイズが小さいとき、パレットインデックスが予測インデックス値に等しいかどうかを示すシンタックス要素をコーディングしないことによって)。
【００３３】
さらに、いくつかの例では、予測インデックス値は、パレットの中の最初のエントリでない場合がある。本開示の1つまたは複数の技法によれば、ビデオコーダは、予測インデックス値がパレットの中の最初のエントリになるようにパレットの中のエントリを並べ替え得る。たとえば、6個のエントリを含むパレット(すなわち、[0,5]としての範囲の中のパレットインデックス)において、第4のエントリ(すなわち、パレットインデックス値[3])を予測インデックス値であるものとして、ビデオコーダは、第4のエントリをパレットインデックス値[0]へ移動させるとともに、前のパレットインデックス値を1だけインクリメントしてよい。したがって、予測インデックス値が可変長コードを使用してコーディングされるとき、予測インデックス値は、最短の可能なコード長を有する。このようにして、ビデオコーダは、パレットインデックスを表すために使用されるデータの量を低減し得る。
【００３４】
本開示の態様は、「遷移モード」の使用を適応的に有効化することに関する。以前の遷移モード符号化方式では、現在ブロックのための遷移モード情報は、現在ブロックに対する遷移モードの使用にかかわらずシグナリングされる。したがって、現在ブロックが遷移モードを使用しないとき、以前の遷移モード符号化方式は効率的でないことがある。
【００３５】
本開示の1つまたは複数の技法によれば、ビデオコーダは、ビデオデータの現在ブロックに対して、現在ブロックにとって遷移モードが有効化されているかどうかを示すシンタックス要素をコーディングし得る。たとえば、ビデオコーダは、現在ブロックにとって遷移モードが有効化されているかどうかを示すフラグ(たとえば、use_trans_flag)をコーディングし得る。いくつかの例では、ビデオコーダは、use_trans_flagを1としてコーディングし得、その場合、現在ブロックは遷移コピーモードを使用する。そのような例では、ビデオコーダは、現在ブロックのための遷移モード情報をシグナリングし得る。いくつかの例では、ビデオコーダは、use_trans_flagを0としてコーディングし得、その場合、現在ブロックは遷移コピーモードを使用しない。そのような例では、ビデオコーダは、現在ブロックのための遷移モード情報をシグナリングしなくてよい。
【００３６】
本開示の態様は、コピーモードをシグナリングすることに関する。ビデオコーダは、インデックス値をコーディングするためにどのモードが使用されるのかという表示をシグナリングし得る。たとえば、ビデオコーダは、現在のインデックス値をコーディングするために、インデックスモードが使用されるのか、上コピーモードが使用されるのか、または遷移コピーモードが使用されるのかを示すシンタックス要素(たとえば、palette_run_type_flag)をシグナリングし得る。以前の遷移モード符号化方式では、モードによって記述される遷移モード方式などが、下のTable 1(表1)に従ってシグナリングされた。しかしながら、いくつかの例では、Table 1(表1)のシグナリング方式は効率的でないことがある。
【００３７】
【表１】
2017535161.tif 000003
【００３８】
本開示の1つまたは複数の技法によれば、ビデオエンコーダは、遷移コピーモードをインデックスモードと結合するシグナリング方式を使用し得る。たとえば、下のTable 2(表2)に従ってモードがシグナリングされ得る。
【００３９】
【表２】
2017535161.tif 000004
【００４０】
そのような方式では、上コピーモードが利用可能でない場合(たとえば、最初の行)、インデックスモードと遷移モードとを区別するために1ビットしか必要とされなくてよい。このようにして、ビデオコーダは、モード選択をシグナリングするために使用されるデータの量を低減し得る。
【００４１】
本開示の態様は、パレットベースコーディング内の遷移テーブル継承に関する。上記で説明したように、ビデオコーダは、予測されるパレットインデックスを決定するために使用される情報を記憶する遷移テーブルを保有し得る。いくつかの例では、ビデオコーダは、前のブロック用の遷移テーブルから現在ブロック用の遷移テーブルを継承し得る。テーブル継承は、ビデオコーダにとって複雑なプロセスであり得る。したがって、前のブロック用の遷移テーブルから現在ブロック用の遷移テーブルを常に継承するとは限らないことが望ましくあり得る。
【００４２】
本開示の1つまたは複数の技法によれば、前のブロック用の遷移テーブルから現在ブロック用の遷移テーブルを常に継承するのではなく、ビデオコーダは、パレット共有が有効化されている場合に(すなわち、ビデオコーダが別のブロックからのパレットから現在ブロック用のパレットを予測し得る場合に)、前のブロック用の遷移テーブルから現在ブロック用の遷移テーブルを継承し得る。一例として、現在ブロックがパレット共有を使用しない場合、遷移テーブル継承が無効化されてよく、ビデオコーダは遷移テーブルをデフォルトの値にリセットしてよい。別の例として、現在ブロックがパレット共有を使用する場合、ビデオコーダは、前のブロック用の遷移テーブルから現在ブロック用の遷移テーブルを継承してよい。
【００４３】
いくつかの例では、現在ブロックがパレット共有モードになく、現在ブロックのパレットサイズがしきい値よりも小さいとき、遷移テーブル継承は無効化されてよい。しきい値は、事前定義されるか、またはシグナリングされるかのいずれかであってよい。
【００４４】
いくつかの例では、ビデオコーダは、遷移テーブル継承が使用されるのかどうかを示すシンタックス要素をコーディングし得る。フラグは、ピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、ビデオパラメータセット(VPS)、スライスヘッダの中で、または他の場所でコーディングされ得る。このシンタックス要素は、追加としてシグナリングされてよく、または別のブロックからのパレットモードの任意の継承または伝達が導入され得るとともにそれを制御する一般のフラグ、たとえば、前のコード化ブロックからのパレットエントリを含むパレット予測子と結合されていてもよい。
【００４５】
図1は、本開示の技法を利用し得る例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用する「ビデオコーダ」という用語は、総称的に、ビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指すことがある。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのうちのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
【００４６】
宛先デバイス14は、リンク16を介して、復号されるべき符号化ビデオデータを受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク16は、ソースデバイス12がリアルタイムで宛先デバイス14に符号化ビデオデータを直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され得、宛先デバイス14へ送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの任意のワイヤレス通信媒体またはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットのようなグローバルネットワークなどの、パケットベースネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、または、ソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る任意の他の機器を含み得る。
【００４７】
代替的に、符号化データは、出力インターフェース22からストレージデバイス19に出力されてもよい。同様に、符号化データは、入力インターフェースによってストレージデバイス19からアクセスされてもよい。ストレージデバイス19は、ハードドライブ、Blu-ray（登録商標）ディスク、DVD、CD-ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または、符号化ビデオデータを記憶するための任意の他の適切なデジタル記憶媒体などの、様々な分散されたまたは局所的にアクセスされるデータ記憶媒体のうちのいずれかを含み得る。さらなる一例では、ストレージデバイス19は、ソースデバイス12によって生成された符号化ビデオを保持し得るファイルサーバまたは別の中間ストレージデバイスに相当し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、ストレージデバイス19からの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準的なデータ接続を通じて、符号化ビデオデータにアクセスし得る。このことは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi-Fi接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ストレージデバイス19からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
【００４８】
本開示の技法は、必ずしもワイヤレスの適用例または設定に限定されるとは限らない。技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の用途などの、様々なマルチメディア用途のうちのいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオ放送、および/またはビデオ電話などの用途をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
【００４９】
図1の例では、ソースデバイス12は、ビデオソース18、ビデオエンコーダ20、および出力インターフェース22を含む。場合によっては、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/もしくはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステム、またはそのようなソースの組合せなどの、ソースを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。しかしながら、本開示で説明する技法は、一般に、ビデオコーディングに適用可能であり得、ワイヤレス用途および/またはワイヤード用途に適用され得る。
【００５０】
キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14に直接送信され得る。符号化ビデオデータはまた(または、代替的に)、復号および/または再生するために、宛先デバイス14または他のデバイスによって後でアクセスするためのストレージデバイス19に記憶され得る。
【００５１】
宛先デバイス14は、入力インターフェース28、ビデオデコーダ30、およびディスプレイデバイス32を含む。場合によっては、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を介して符号化ビデオデータを受信する。リンク16を介して通信された、またはストレージデバイス19上に提供された符号化ビデオデータは、ビデオデータを復号する際にビデオデコーダ30などのビデオデコーダによって使用するための、ビデオエンコーダ20によって生成された様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信された、記憶媒体上に記憶された、またはファイルサーバ上に記憶された符号化ビデオデータとともに含まれ得る。
【００５２】
ディスプレイデバイス32は、宛先デバイス14と一体であってよく、または宛先デバイス14の外部にあってもよい。いくつかの例では、宛先デバイス14は、集積ディスプレイデバイスを含み得、外部ディスプレイデバイスとインターフェースするようにも構成され得る。他の例では、宛先デバイス14はディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号ビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのいずれかを備え得る。
【００５３】
ビデオエンコーダ20およびビデオデコーダ30は、最近確定されたHEVC規格(および現在開発中のそれらの様々な拡張)などのビデオ圧縮規格に従って動作し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的に、MPEG-4, Part 10,アドバンストビデオコーディング(AVC)と呼ばれるITU-T H.264規格、またはそのような規格の拡張などの、他の独自規格または業界規格に従って動作し得る。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオ圧縮規格の他の例は、MPEG-2およびITU-T H.263を含む。
【００５４】
図1に示さないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は各々、オーディオエンコーダおよびオーディオデコーダと一体化されてよく、共通のデータストリームまたは別個のデータストリームの中のオーディオとビデオの両方の符号化を処理するために、適切なMUX-DEMUXユニット、または他のハードウェアおよびソフトウェアを含んでもよい。適用可能な場合、いくつかの例では、MUX-DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【００５５】
ビデオエンコーダ20およびビデオデコーダ30は各々、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せを含む、1つまたは複数の集積回路などの、様々な適切なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアに実装されるとき、デバイスは、ソフトウェアのための命令を適切な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実施するために1つまたは複数のプロセッサを使用する集積回路などのハードウェアで、命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、それらのいずれかが、それぞれのデバイスの中で複合エンコーダ/デコーダ(コーデック)の一部として一体化されてよい。
【００５６】
上記で紹介したように、JCT-VCは、HEVC規格の開発を最近確定している。HEVC規格化の取組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスの発展的モデルに基づいた。HMは、たとえば、ITU-T H.264/AVCによる既存のデバイスに対して、ビデオコーディングデバイスのいくつかの追加の機能を仮定する。たとえば、H.264は、9個のイントラ予測符号化モードを提供するが、HMは、35個ものイントラ予測符号化モードを提供し得る。
【００５７】
HEVCおよび他のビデオコーディング仕様では、ビデオシーケンスは、通常、一連のピクチャを含む。ピクチャは、「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書で「クロマ」サンプルと呼ばれることもある。他の事例では、ピクチャはモノクロームであってよく、ルーマサンプルのアレイだけを含んでよい。
【００５８】
ピクチャの符号化表現を生成するために、ビデオエンコーダ20は、コーディングツリーユニット(CTU:coding tree unit)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロック、クロマサンプルの2つの対応するコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。モノクロームピクチャ、または3つの別個のカラープレーンを有するピクチャでは、CTUは、単一のコーディングツリーブロック、およびコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは、「ツリーブロック」またはLCUと呼ばれることもある。HEVCのCTUは、H.264/AVCなどの他の規格のマクロブロックと概ね類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスタ走査順序で連続的に順序付けられた整数個のCTUを含み得る。
【００５９】
コード化CTUを生成するために、ビデオエンコーダ20は、CTUのコーディングツリーブロック上で4分木区分を再帰的に実行してコーディングツリーブロックをコーディングブロックに分割し得、したがって、「コーディングツリーユニット」という名前である。コーディングブロックは、サンプルのN×Nブロックであり得る。CUは、ルーマサンプルアレイ、CbサンプルアレイおよびCrサンプルアレイを有するピクチャの、ルーマサンプルのコーディングブロック、およびクロマサンプルの2つの対応するコーディングブロック、ならびにコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。モノクロームピクチャ、または3つの別個のカラープレーンを有するピクチャでは、CUは、単一のコーディングブロック、およびコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造を備え得る。
【００６０】
ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分し得る。予測ブロックは、同じ予測が適用されるサンプルの、長方形(すなわち、正方形または非正方形)のブロックである。CUの予測ユニット(PU:prediction unit)は、ルーマサンプルの予測ブロック、クロマサンプルの2つの対応する予測ブロック、および予測ブロックを予測するために使用されるシンタックス構造を備え得る。モノクロームピクチャ、または3つの別個のカラープレーンを有するピクチャでは、PUは、単一の予測ブロック、および予測ブロックを予測するために使用されるシンタックス構造を備え得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックに対して、予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
【００６１】
ビデオエンコーダ20は、PUに対する予測ブロックを生成するために、イントラ予測またはインター予測を使用し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連するピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連するピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。
【００６２】
ビデオエンコーダ20がCUの1つまたは複数のPUに対して予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成した後、ビデオエンコーダ20は、CUに対するルーマ残差ブロックを生成し得る。CUのルーマ残差ブロックの中の各サンプルは、CUの予測ルーマブロックのうちの1つの中のルーマサンプルと、CUの元のルーマコーディングブロックの中の対応するサンプルとの間の差分を示す。加えて、ビデオエンコーダ20は、CUに対するCb残差ブロックを生成し得る。CUのCb残差ブロックの中の各サンプルは、CUの予測Cbブロックのうちの1つの中のCbサンプルと、CUの元のCbコーディングブロックの中の対応するサンプルとの間の差分を示し得る。ビデオエンコーダ20はまた、CUに対するCr残差ブロックを生成し得る。CUのCr残差ブロックの中の各サンプルは、CUの予測Crブロックのうちの1つの中のCrサンプルと、CUの元のCrコーディングブロックの中の対応するサンプルとの間の差分を示し得る。
【００６３】
さらに、ビデオエンコーダ20は、4分木区分を使用して、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを、1つまたは複数のルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに分解し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形(たとえば、正方形または非正方形)ブロックである。CUの変換ユニット(TU:transform unit)は、ルーマサンプルの変換ブロック、クロマサンプルの2つの対応する変換ブロック、および変換ブロックサンプルを変換するために使用されるシンタックス構造を備え得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連し得る。TUに関連するルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであり得る。モノクロームピクチャ、または3つの別個のカラープレーンを有するピクチャでは、TUは、単一の変換ブロック、および変換ブロックのサンプルを変換するために使用されるシンタックス構造を備え得る。
【００６４】
ビデオエンコーダ20は、1つまたは複数の変換をTUのルーマ変換ブロックに適用して、TUに対するルーマ係数ブロックを生成し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数は、スカラー量であり得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCb変換ブロックに適用して、TUに対するCb係数ブロックを生成し得る。ビデオエンコーダ20は、1つまたは複数の変換をTUのCr変換ブロックに適用して、TUに対するCr係数ブロックを生成し得る。
【００６５】
係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化し得る。量子化は、概して、変換係数が量子化されて、場合によっては、変換係数を表すために使用されるデータの量を低減し、さらなる圧縮をもたらすプロセスを指す。ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素に、コンテキスト適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実行し得る。
【００６６】
ビデオエンコーダ20は、コード化ピクチャの表現および関連するデータを形成するビットのシーケンスを含む、ビットストリームを出力し得る。ビットストリームは、NALユニットのシーケンスを備え得る。NALユニットは、NALユニットの中のデータのタイプの表示を含むシンタックス構造、および必要に応じてエミュレーション防止ビットを組み入れられたRBSPの形態でそのデータを含むバイトである。NALユニットの各々は、NALユニットヘッダを含み、RBSPをカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって規定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化されている整数個のバイトを含むシンタックス構造であり得る。いくつかの事例では、RBSPは、0個のビットを含む。
【００６７】
異なるタイプのNALユニットが、異なるタイプのRBSPをカプセル化し得る。たとえば、第1のタイプのNALユニットがPPS用のRBSPをカプセル化してよく、第2のタイプのNALユニットがコード化スライス用のRBSPをカプセル化してよく、第3のタイプのNALユニットがSEIメッセージ用のRBSPをカプセル化してよく、以下同様である。ビデオコーディングデータ用のRBSP(パラメータセット用およびSEIメッセージ用のRBSPではなく)をカプセル化するNALユニットは、VCL NALユニットと呼ばれることがある。
【００６８】
ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。加えて、ビデオデコーダ30は、ビットストリームを構文解析して、ビットストリームからシンタックス要素を取得し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。加えて、ビデオデコーダ30は、現在CUのTUに関連する係数ブロックを逆量子化し得る。ビデオデコーダ30は、係数ブロックに対して逆変換を実行して、現在CUのTUに関連する変換ブロックを再構成し得る。ビデオデコーダ30は、現在CUのPUに対する予測ブロックのサンプルを、現在CUのTUの変換ブロックの対応するサンプルに加算することによって、現在CUのコーディングブロックを再構成し得る。ピクチャのCUごとにコーディングブロックを再構成することによって、ビデオデコーダ30は、ピクチャを再構成し得る。
【００６９】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、パレットベースコーディングを実行するように構成され得る。たとえば、パレットベースコーディングでは、上記で説明したイントラ予測またはインター予測コーディング技法を実行するのではなく、ビデオエンコーダ20およびビデオデコーダ30は、特定のエリア(たとえば、所与のブロック)のビデオデータを表すためのカラーのテーブルとして、いわゆるパレットをコーディングし得る。各ピクセルは、ピクセルのカラーを表すパレットの中のエントリに関連付けられ得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、ピクセル値をパレットの中の適切な値に関連付けるインデックスをコーディングし得る。
【００７０】
上記の例では、ビデオエンコーダ20は、ブロック用のパレットを決定することと、各ピクセルの値を表すためのエントリをパレットの中に配置することと、ピクセル値をパレットに関連付けるピクセルに対するインデックス値とともにパレットを符号化することとによって、ビデオデータのブロックを符号化し得る。ビデオデコーダ30は、ブロック用のパレット、ならびにブロックのピクセルに対するインデックス値を、符号化ビットストリームから取得し得る。ビデオデコーダ30は、ピクセルのインデックス値をパレットのエントリに関連付けて、ブロックのピクセル値を再構成し得る。
【００７１】
本開示の態様は、エンコーダおよびデコーダにおいて行われ得るパレット導出を対象とする。一例として、ビデオエンコーダ20は、現在ブロックの中のピクセルのヒストグラムを導出することによって、現在ブロック用のパレットを導出し得る。いくつかの例では、ヒストグラムは、H={(vi,fi),i={0,1,2,...,M}}として表現され得、ただし、M+1は現在ブロックの中の異なるピクセル値の数であり、viはピクセル値であり、fiはviの出現の数(すなわち、現在ブロックの中の何個のピクセルがピクセル値viを有するのか)である。そのような例では、ヒストグラムは、概して、ピクセル値が現在ブロックの中に出現する回数を表す。
【００７２】
ビデオエンコーダ20は、ヒストグラムを導出するとき、1つまたは複数の変数を初期設定し得る。一例として、ビデオエンコーダ20は、パレットインデックスidxを0に初期設定(すなわち、idx=0に設定)し得る。別の例として、ビデオエンコーダ20は、パレットPを空となるように初期設定(すなわち、P=φ、j=0に設定)し得る。
【００７３】
ビデオエンコーダ20は、より多く出現するピクセルが値のリストの前方近くに配置されるように、ヒストグラムを、たとえば、降順でソートし得る。たとえば、ビデオエンコーダ20は、fiの降順に従ってHをソートし得、順序付きリストは、Ho={(ui,fi),i={0,1,2,...,M},fi≧fi+1}として表現され得る。この例では、順序付きリストは、最も頻繁に出現するピクセル値をリストの前方(上部)に、最も頻繁に出現しないピクセル値をリストの後方(下部)に含む。
【００７４】
ビデオエンコーダ20は、1つまたは複数のエントリをヒストグラムからパレットの中へコピーし得る。一例として、ビデオエンコーダ20は、ヒストグラムの中で最も頻度が高いエントリをパレットの中に挿入し得る。たとえば、ビデオエンコーダ20は、(j,uj)をパレットPの中に挿入し得る(すなわち、P=P∪{(idx,uj)})。いくつかの例では、エントリをパレットの中に挿入した後、ビデオエンコーダ20は、パレットの中に挿入するための、ヒストグラムの中で次に頻度が高いエントリを評価し得る。たとえば、ビデオエンコーダ20は、idx=idx+1、j=j+1に設定し得る。
【００７５】
ビデオエンコーダ20は、次に頻度が高いエントリ(すなわち、uj+1)がパレットの中の任意のピクセル(すなわち、x)の近傍内にあるかどうか(すなわち、距離(uj+1,x)<Thresh)を決定し得る。たとえば、ビデオエンコーダ20は、エントリの値がパレットの中の任意のピクセルの値のしきい値距離内にあるかどうかを決定することによって、エントリがパレットの中の任意のピクセルの近傍内にあるかどうかを決定し得る。いくつかの例では、ビデオエンコーダ20は、距離関数をフレキシブルに選択し得る。一例として、ビデオエンコーダ20は、3つのカラー成分(たとえば、ルミナンス、青色相クロミナンス、および赤色相クロミナンスの各々)または1つのカラー成分(たとえば、ルミナンス、青色相クロミナンス、または赤色相クロミナンスのうちの1つ)の予測の絶対差分の合計(SAD)または2乗誤差の合計(SSE)として、距離関数を選択し得る。いくつかの例では、ビデオエンコーダ20は、しきい値Threshをフレキシブルに選択し得る。一例として、ビデオエンコーダ20は、現在ブロックの量子化パラメータ(QP:quantization parameter)に依存するようにしきい値を選択し得る。別の例として、ビデオエンコーダ20は、idxの値またはjの値に依存するようにしきい値を選択し得る。
【００７６】
次に頻度が高いエントリ(すなわち、uj+1)がパレットの中の任意のピクセルの近傍内にあるとビデオエンコーダ20が決定する場合、ビデオエンコーダ20は、ヒストグラムの中のエントリを挿入しなくてよい。次に頻度が高いエントリ(すなわち、uj+1)がパレットの中の任意のピクセルの近傍内にないとビデオエンコーダ20が決定する場合、ビデオエンコーダ20は、ヒストグラムの中のエントリを挿入してよい。
【００７７】
ビデオエンコーダ20は、1つまたは複数の条件が満たされるまでパレットの中にエントリを挿入し続けてよい。いくつかの例示的な条件は、idx=Mのとき、j=Mのとき、またはパレットのサイズが既定の値よりも大きいときである。
【００７８】
パレットベースコーディングは、いくらかの量のシグナリングオーバーヘッドを有することがある。たとえば、パレットのサイズなどのパレットの特性、ならびにパレット自体をシグナリングするために、いくつかのビットが必要とされ得る。加えて、ブロックのピクセルに対するインデックス値をシグナリングするために、いくつかのビットが必要とされ得る。本開示の技法は、いくつかの例では、そのような情報をシグナリングするために必要とされるビットの数を低減し得る。たとえば、本開示で説明する技法は、パレットベースコーディングモードをシグナリングすること、パレットを送信すること、パレットを予測すること、パレットを導出すること、ならびにパレットベースコーディングマップおよび他のシンタックス要素を送信することのうちの、1つまたは複数の様々な組合せのための技法を含み得る。
【００７９】
いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、別のパレットを使用してパレットを予測し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のピクセル値を示す第1のエントリを有する第1のパレットを決定し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、次いで、第1のパレットの第1のエントリに基づいて、第2のパレットの第2のピクセル値を示す1つまたは複数の第2のエントリを決定し得る。ビデオエンコーダ20および/またはビデオデコーダ30はまた、第2のパレットを使用してビデオデータのブロックのピクセルをコーディングし得る。
【００８０】
第1のパレットの中のエントリに基づいて第2のパレットのエントリを決定するとき、ビデオエンコーダ20は、第2のパレットを再構成するためにビデオデコーダによって使用され得る様々なシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ20は、全体的なパレット(または、ビデオデータの各カラー成分、たとえば、Y、Cb、Cr、またはY、U、V、またはR、G、Bが、別個のパレットを有する場合は、複数のパレット)が現在コーディングされているブロックの1つまたは複数の隣接ブロックからコピーされていることを示すために、ビットストリームの中の1つまたは複数のシンタックス要素を符号化し得る。現在ブロックの現在パレットのエントリがそこから予測される(たとえば、コピーされる)パレットは、予測パレットと呼ばれることがある。予測パレットは、空間的に隣接するブロックおよび/またはブロックの特定の走査順序で隣接するブロックを含む、1つまたは複数の隣接ブロックからのパレットエントリを含み得る。たとえば、隣接ブロックは、現在コーディングされているブロックの空間的に左側(左隣接ブロック)または上方(上隣接ブロック)に位置してよい。別の例では、ビデオエンコーダ20は、現在ブロックの因果的ネイバーの中で最も頻度が高いサンプル値を使用して、予測パレットエントリを決定してよい。別の例では、隣接ブロックは、ブロックをコーディングするために使用される特定の走査順序に従って、現在コーディングされているブロックに隣接してよい。すなわち、隣接ブロックは、走査順序において現在ブロックの前にコーディングされた1つまたは複数のブロックであってよい。ビデオエンコーダ20は、パレットがそこからコピーされている隣接ブロックのロケーションを示すために、1つまたは複数のシンタックス要素を符号化し得る。
【００８１】
いくつかの例では、パレット予測は、エントリ方向で実行されてよい。たとえば、ビデオエンコーダ20は、予測パレットのエントリごとに、パレットエントリが現在ブロック用のパレットに含まれるかどうかを示すために、1つまたは複数のシンタックス要素を符号化し得る。ビデオエンコーダ20が現在ブロック用のパレットのエントリを予測しない場合、ビデオエンコーダ20は、予測されていないエントリ、ならびにそのようなエントリの数を規定するために、1つまたは複数の追加のシンタックス要素を符号化し得る。
【００８２】
上記で説明したシンタックス要素は、パレット予測ベクトルと呼ばれることがある。たとえば、上述のように、ビデオエンコーダ20およびビデオデコーダ30は、隣接ブロックからの1つまたは複数のパレット(総称して参照パレットと呼ばれる)に基づいて、現在ブロック用のパレットを予測し得る。参照パレットを生成するとき、最新のパレットを待ち行列の前方に追加することによって、先入れ後出し(FIFO:first-in first-out)が使用され得る。待ち行列が既定のしきい値を上回る場合、最も古い要素が外へポップ(pop)されてよい。新しい要素を待ち行列の前方にプッシュ(push)した後、待ち行列の始まりから数えて重複した要素を除去するために、プルーニングプロセスが適用され得る。詳細には、いくつかの例では、ビデオエンコーダ20は、参照パレットの中のピクセル値が現在パレットに対して再使用されるかどうかを示すために、0-1ベクトルを符号化し得る(また、ビデオデコーダ30は復号し得る)。一例として、下のTable 3(表3)の例に示すように、参照パレットは、6個の項目(たとえば、6個のインデックス値およびそれぞれのピクセル値)を含み得る。
【００８３】
【表３】
2017535161.tif 000005
【００８４】
例示のための一例では、ビデオエンコーダ20は、v0、v2、v3、v4、およびv5が現在パレットにおいて再使用され、v1が再使用されないことを示す、ベクトル(1,0,1,1,1,1)をシグナリングし得る。v0、v2、v3、v4、およびv5を再使用することに加えて、ビデオエンコーダ20は、5および6によるインデックスを有する2つの新たな項目を現在パレットに追加し得る。この例にとっての現在パレットが、下のTable 4(表4)に示される。
【００８５】
【表４】
2017535161.tif 000006
【００８６】
パレット予測0-1ベクトルをコーディングするために、ベクトルの中の項目ごとに、ビデオエンコーダ20は、その値を表すための1ビットをコーディングし得、ビットはCABACバイパスを使用してコーディングされ得る。CABACに関して、一例として、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30)は、ビデオデータのブロックに関連するシンボルをコーディングするための確率モデル(コンテキストモデルとも呼ばれる)を選択し得る。たとえば、エンコーダにおいて、ターゲットシンボルは、確率モデルを使用することによってコーディングされ得る。デコーダにおいて、ターゲットシンボルは、確率モデルを使用することによって構文解析され得る。いくつかの事例では、コンテキスト適応型コーディングと非コンテキスト適応型コーディングとの組合せを使用してビンがコーディングされ得る。たとえば、ビデオコーダは、他のビンのためにコンテキスト適応型コーディングを使用しながら1つまたは複数のビンのために通常の算術コーディングコンテキスト適応プロセスをバイパスまたは省略するために、バイパスモードを使用し得る。そのような例では、ビデオコーダは、ビンをバイパスコーディングするために、固定された確率モデルを使用し得る。すなわち、バイパスコーディングされるビンは、コンテキスト更新または確率更新を含まない。概して、ビンをコンテキストコーディングすることは、コンテキストコーディングモードを使用してビンをコーディングすることを指すことがある。同様に、ビンをバイパスコーディングすることは、バイパスコーディングモードを使用してビンをコーディングすることを指すことがある。
【００８７】
しかしながら、パレット間での高相関に起因して、パレット予測ベクトルの中の0および1は等しく分布しないことがあり、そのことは、たとえば、0-1ベクトルがパレット間での高相関を活用しないことがあるので、コーディング効率に影響を及ぼし得る。さらに、予測され得ないパレット項目の数(たとえば、新たなパレットエントリ(上のTable 2(表2)の例におけるu0およびu1)の数)は、各ビットがCABACバイパスを使用してコーディングされた単項コードを使用して、2値化およびシグナリングされ得る。パレット予測ベクトルにおける問題と同様に、たとえば、実際には単項コードのビットが異なる確率を有し得るので、単項コードの中の各ビットを確率が等しくなるようにモデリングすることは準最適であり得る。
【００８８】
いくつかの例では、ビデオエンコーダ20は、たとえば、そのようなビンのバイパスコーディングに依存する技法に比べてコーディング効率を改善するために、コンテキストを有するCABACを使用して、パレット予測ベクトルおよび/または単項コーディングされた残りのパレットサイズをコーディングし得る。いくつかの例では、パレット予測ベクトルの中の項目は、単一のCABACコンテキストを共有することができる。このようにして、複雑さが低減され得る。いくつかの例では、単項コードは、単一のコンテキストを使用することができる。このようにしても、複雑さが低減され得る。
【００８９】
いくつかの例では、ビデオエンコーダ20は、固定長コーディングを使用してインデックス値をコーディングし得る。そのような例では、ビデオエンコーダ20は、CABACバイパスを使用して固定長コードの中の各ビットをコーディングし得る。しかしながら、場合によっては、パレットの中のインデックスの数が2のべき乗でないことがある。そのような場合、固定長コードのコードワードが完全に利用され得るとは限らない。たとえば、パレットサイズが5である場合、インデックスは0、1、2、3、および4である。各インデックスを固定長コードを用いてコーディングするために、ビデオエンコーダ20は、3ビットを使用しなければならないことになる。しかしながら、3ビットを使用することによって、ビデオエンコーダ20は3つのコードワード(8-5=3)を浪費し得、そのことはコーディング効率に影響を及ぼし得る。場合によっては、ビデオエンコーダ20がエスケープピクセルをコーディングするとき、類似の問題が起こり得る。いくつかの例では、固定長コーディングを使用するのではなく、ビデオエンコーダ20は、インデックス値および/またはエスケープピクセルをコーディングするために、短縮バイナリコードを利用し得る。
【００９０】
本開示の他の態様は、ビデオエンコーダ20および/またはビデオデコーダ30がピクセル値を決定することを可能にするマップを構成および/または送信することに関する。たとえば、本開示の他の態様は、特定のピクセルをパレットのエントリに関連付けるインデックスのマップを構成および/または送信することに関する。
【００９１】
いくつかの例では、ビデオエンコーダ20は、ブロックのピクセルがパレットの中の対応する値を有するかどうかを示し得る。例示のための一例では、マップの(i,j)エントリがビデオデータのブロックの中の(i,j)ピクセル位置に対応すると想定する。この例では、ビデオエンコーダ20は、ブロックのピクセル位置ごとにフラグを符号化し得る。ビデオエンコーダ20は、(i,j)ロケーションにおけるピクセル値がパレットの中の値のうちの1つであることを示すために、(i,j)エントリに対してフラグを1に等しく設定し得る。カラーがパレットに含まれる(すなわち、フラグが1に等しい)とき、ビデオエンコーダ20はまた、パレットの中のカラーを識別する(i,j)エントリに対するパレットインデックスを示すデータを符号化し得る。ピクセルのカラーがパレットに含まれない(すなわち、フラグが0に等しい)とき、ビデオエンコーダ20はまた、エスケープピクセルと呼ばれることがあるピクセルに対するサンプル値を示すデータを符号化し得る。ビデオデコーダ30は、上記で説明したデータを符号化ビットストリームから取得し得、そのデータを使用してブロックの中の特定のロケーションに対するパレットインデックスおよび/またはピクセル値を決定し得る。
【００９２】
いくつかの事例では、所与の位置におけるピクセルがマッピングされるパレットインデックスと、隣接ピクセルが同じパレットインデックスにマッピングされる確率との間に相関があり得る。すなわち、ピクセルが特定のパレットインデックスにマッピングされるとき、1つまたは複数の隣接ピクセル(空間的なロケーションの観点から)が同じパレットインデックスにマッピングされる確率は比較的高くなり得る。
【００９３】
いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータの同じブロックの1つまたは複数のインデックスに対して、ビデオデータのブロックの1つまたは複数のインデックスを決定およびコーディングし得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、ビデオデータのブロックの中の第1のピクセルに関連する第1のインデックス値を決定するように構成され得、その場合、第1のインデックス値は、第1のピクセルの値をパレットのエントリに関連付ける。ビデオエンコーダ20および/またはビデオデコーダ30はまた、第1のインデックス値に基づいて、ビデオデータのブロックの中の1つまたは複数の第2のピクセルに関連する1つまたは複数の第2のインデックス値を決定し、ビデオデータのブロックの第1および1つまたは複数の第2のピクセルをコーディングするように構成され得る。したがって、この例では、マップのインデックスは、マップの1つまたは複数の他のインデックスに対してコーディングされ得る。
【００９４】
上記で説明したように、ビデオエンコーダ20および/またはビデオデコーダ30は、マップのインデックス値をマップの他のインデックスに対してコーディングするためのいくつかの異なる技法を使用し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、マップのインデックス値をマップの他のインデックスに対してコーディングするために、インデックスモード、上コピーモード、および遷移モードを使用し得る。
【００９５】
パレットベースコーディングの「インデックスモード」では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットインデックスを最初にシグナリングし得る。インデックスがパレットのサイズに等しい場合、このことは、サンプルがエスケープサンプルであることを示す。この場合、ビデオエンコーダ20および/またはビデオデコーダ30は、成分ごとにサンプル値または量子化サンプル値をシグナリングし得る。たとえば、パレットサイズが4である場合、非エスケープサンプルにとって、パレットインデックスは範囲[0,3]の中にある。この場合、4としてのインデックス値は、エスケープサンプルを意味し得る。インデックスが非エスケープサンプルを示す場合、ビデオエンコーダ20および/またはビデオデコーダ30は、ランレングスを示す非負の値n-1によって、同じインデックスを共有する、走査順序での後続のサンプルの数を規定し得るランレングスをシグナリングし得、そのことは、現在のピクセルを含む後続のn個のピクセルが、最初にシグナリングされたインデックスと同じピクセルインデックスを有することを意味する。
【００９６】
パレットベースコーディングの「上からのコピー」モードでは、ビデオエンコーダ20および/またはビデオデコーダ30は、現在ピクセルを含む後続のm個のピクセルにとって、パレットインデックスがそれらのすぐ上のネイバーとそれぞれ同じであることを示すために、非負のランレングス値m-1をシグナリングし得る。「上からのコピー」ランモード内ではパレットインデックスが異なる場合があるという意味で、「上からのコピー」モードが「インデックス」モードと異なることに留意されたい。
【００９７】
パレットベースコーディングの遷移モードでは、ビデオエンコーダ20および/またはビデオデコーダ30がマップのインデックスをコーディングするとき、ビデオエンコーダ20および/またはビデオデコーダ30は、インデックス値の間での遷移に関する情報を記憶し得、記憶された情報を、後でインデックス値を予測するために使用し得る。いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30によって記憶される情報は、所与のインデックス値の最後の出現に対する後続のインデックス値を含む、遷移テーブルと呼ばれるテーブルであり得る。後続のインデックス値をコーディングするとき、ビデオエンコーダ20および/またはビデオデコーダ30は、予測インデックス値を決定するために、記憶された情報を使用し得る。しかしながら、予測される値が正確でないことがある(すなわち、実際には現在のインデックス値のインデックス値でないことがある)ので、ビデオエンコーダ20および/またはビデオデコーダ30はまた、予測インデックス値が正確であるかどうかという表示をコーディングし得る。現在のインデックス値が予測インデックス値に等しくない場合、ビデオエンコーダ20および/またはビデオデコーダ30は、短縮バイナリコードを使用して現在のインデックス値をコーディングし得る。ビデオエンコーダ20とビデオデコーダ30の両方が、予測インデックス値を決定するために同じプロセスを利用し得る。
【００９８】
本開示の1つまたは複数の技法によれば、遷移モードのための単一の2値化を使用するのではなく、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットインデックス値をコーディングするために使用すべき2値化を複数の2値化の中から選択し得る。一例として、複数の2値化のうちの第1の2値化を使用してパレットインデックスをコーディングするとき、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットインデックスが予測インデックス値に等しいかどうかを示すシンタックス要素をコーディングし得、パレットインデックスが予測インデックス値に等しくない場合、可変長コードを使用してパレットインデックスをコーディングし得る。別の例として、複数の2値化のうちの第2の2値化を使用してパレットインデックスをコーディングするとき、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットインデックスが予測インデックス値に等しいかどうかを示すシンタックス要素をコーディングせずに、可変長コードを使用してパレットインデックスをコーディングし得る。さらに、第1の2値化と第2の2値化の両方において、ビデオエンコーダ20および/またはビデオデコーダ30によって使用される可変長コードは、小さいインデックス値が大きいインデックス値よりも短いコードを有するように定義され得る。たとえば、6個のエントリを含むパレット(すなわち、[0,5]としての範囲の中のパレットインデックス)において、第1のエントリ(すなわち、パレットインデックス値[0])に対応する可変長コードは、第6のエントリ(すなわち、パレットインデックス値[5])に対応する可変長コードよりも短くなり得る。そのような可変長コーディングの一例は、短縮バイナリコーディングである。
【００９９】
いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットのサイズに基づいて2値化を選択し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットのサイズに基づいて変数を決定し得る。いくつかの例では、変数は、パレットのサイズであり得る。いくつかの例では、変数は、1つまたは複数の調整が実行された後のパレットのサイズであり得る(たとえば、SCM2.0に記載されるようなmaxSymbol)。調整のさらなる説明が以下に提供される。ビデオエンコーダ20および/またはビデオデコーダ30は、変数が既定のしきい値を満たすかどうかに基づいて、複数のパレットインデックス2値化の中から2値化を選択し得る。一例として、変数が既定のしきい値以上である場合、ビデオエンコーダ20および/またはビデオデコーダ30は、第1の2値化を選択し得る。別の例として、変数が既定のしきい値未満である場合、ビデオエンコーダ20および/またはビデオデコーダ30は、第2の2値化を選択し得る。したがって、いくつかの例では、変数が小さいとき(たとえば、パレットサイズが小さい場合)、ビデオコーダは、第2の2値化を使用してインデックス値をコーディングし得る。上で述べたように、第2の2値化を使用してインデックス値をコーディングするとき、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットインデックスが予測インデックス値に等しいかどうかを示すシンタックス要素をコーディングせずに、可変長コードを使用してインデックス値をコーディングし得る。このようにして、ビデオエンコーダ20および/またはビデオデコーダ30は、パレットインデックスを表すために使用されるデータの量を低減し得る(すなわち、パレットサイズが小さいとき、パレットインデックスが予測インデックス値に等しいかどうかを示すシンタックス要素をコーディングしないことによって)。
【０１００】
図2は、本開示の技法を実施し得る例示的なビデオエンコーダ20を示すブロック図である。図2は説明のために提供され、広く例示されかつ本開示で説明されるような技法の限定と見なされるべきでない。説明のために、本開示は、HEVCコーディングのコンテキストでビデオエンコーダ20を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１０１】
ビデオエンコーダ20は、本開示で説明する様々な例によるパレットベースビデオコーディングのための技法を実行するように構成され得るデバイスの一例を表す。たとえば、ビデオエンコーダ20は、HEVCコーディングにおけるCUまたはPUなどのビデオデータの様々なブロックを、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して選択的にコーディングするように構成され得る。非パレットベースコーディングモードは、HEVCドラフト10によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指すことがある。ビデオエンコーダ20は、一例では、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すパレットの中のピクセル値を選択し、ビデオデータのブロックの位置のうちの少なくともいくつかを、選択されたピクセル値にそれぞれ対応するパレットの中のエントリに関連付ける情報をシグナリングするように構成され得る。シグナリングされた情報は、ビデオデコーダ30によって、ビデオデータを復号するために使用され得る。
【０１０２】
図2の例では、ビデオエンコーダ20は、予測処理ユニット100、残差生成ユニット102、変換処理ユニット104、量子化ユニット106、逆量子化ユニット108、逆変換処理ユニット110、再構成ユニット112、フィルタユニット114、復号ピクチャバッファ116、およびエントロピー符号化ユニット118を含む。予測処理ユニット100は、インター予測処理ユニット120およびイントラ予測処理ユニット126を含む。インター予測処理ユニット120は、動き推定ユニットおよび動き補償ユニット(図示せず)を含む。ビデオエンコーダ20はまた、本開示で説明するパレットベースコーディング技法の様々な態様を実行するように構成された、パレットベース符号化ユニット122を含む。他の例では、ビデオエンコーダ20は、より多数の、より少数の、または異なる機能の構成要素を含み得る。
【０１０３】
ビデオエンコーダ20は、ビデオデータを受信し得る。ビデオエンコーダ20は、ビデオデータのピクチャのスライスの中の各CTUを符号化し得る。CTUの各々は、ピクチャの、等しいサイズのルーマコーディングツリーブロック(CTB:coding tree block)、および対応するCTBに関連し得る。CTUを符号化することの一部として、予測処理ユニット100は、4分木区分を実行して、CTUのCTBを次第に小さくなるブロックに分割し得る。より小さいブロックは、CUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、CTUに関連するCTBを4つの等しいサイズのサブブロックに区分し得、サブブロックのうちの1つまたは複数を4つの等しいサイズのサブサブブロックに区分し得、以下同様である。
【０１０４】
ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化表現(すなわち、コード化CU)を生成し得る。CUを符号化することの一部として、予測処理ユニット100は、CUに関連するコーディングブロックを、CUの1つまたは複数のPUの間で区分し得る。したがって、各PUは、ルーマ予測ブロックおよび対応するクロマ予測ブロックに関連し得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートし得る。上記に示したように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズは、PUのルーマ予測ブロックのサイズを指すことがある。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測に対して2N×2NまたはN×NとしてのPUサイズ、およびインター予測に対して2N×2N、2N×N、N×2N、N×N、または類似のものとしての対称のPUサイズをサポートし得る。ビデオエンコーダ20およびビデオデコーダ30はまた、インター予測に対して2N×nU、2N×nD、nL×2N、およびnR×2NとしてのPUサイズ向けの非対称区分をサポートし得る。
【０１０５】
インター予測処理ユニット120は、CUの各PUに対してインター予測を実行することによって、PUに対する予測データを生成し得る。PUに対する予測データは、PUの予測サンプルブロックおよびPUに対する動き情報を含み得る。インター予測処理ユニット120は、PUがIスライスの中にあるのか、Pスライスの中にあるのか、またはBスライスの中にあるのかに応じて、CUのPUのための異なる動作を実行し得る。Iスライスでは、すべてのPUがイントラ予測される。したがって、PUがIスライスの中にある場合、インター予測処理ユニット120は、PUに対してインター予測を実行しない。したがって、Iモードで符号化されるブロックの場合、予測されるブロックは、同じフレーム内で以前に符号化された隣接ブロックからの空間予測を使用して形成される。
【０１０６】
PUがPスライスの中にある場合、インター予測処理ユニット120の動き推定ユニットは、PUに対する参照領域を求めて参照ピクチャのリスト(たとえば、「RefPicList0」)の中の参照ピクチャを検索し得る。PUに対する参照領域は、PUのサンプルブロックに最も密に対応するサンプルブロックを含む、参照ピクチャ内の領域であり得る。動き推定ユニットは、PUに対する参照領域を含む参照ピクチャのRefPicList0の中での位置を示す、参照インデックスを生成し得る。加えて、動き推定ユニットは、PUのコーディングブロックと参照領域に関連する参照ロケーションとの間の空間変位を示す、MVを生成し得る。たとえば、MVは、現在の復号ピクチャの中の座標から参照ピクチャの中の座標までのオフセットを提供する2次元ベクトルであり得る。動き推定ユニットは、PUの動き情報として参照インデックスおよびMVを出力し得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照ロケーションにおける実際のサンプルまたは補間されたサンプルに基づいて、PUの予測サンプルブロックを生成し得る。
【０１０７】
PUがBスライスの中にある場合、動き推定ユニットは、PUに対して単予測または双予測を実行し得る。PUに対して単予測を実行するために、動き推定ユニットは、PUに対する参照領域を求めてRefPicList0または第2の参照ピクチャリスト(「RefPicList1」)の参照ピクチャを検索し得る。動き推定ユニットは、PUの動き情報として、参照領域を含む参照ピクチャのRefPicList0またはRefPicList1の中での位置を示す参照インデックス、PUのサンプルブロックと参照領域に関連する参照ロケーションとの間の空間変位を示すMV、および参照ピクチャがRefPicList0の中にあるのか、またはRefPicList1の中にあるのかを示す1つまたは複数の予測方向インジケータを出力し得る。インター予測処理ユニット120の動き補償ユニットは、PUの動きベクトルによって示された参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測サンプルブロックを生成し得る。
【０１０８】
PUに対して双方向インター予測を実行するために、動き推定ユニットは、PUに対する参照領域を求めてRefPicList0の中の参照ピクチャを検索し得、また、PUに対する別の参照領域を求めてRefPicList1の中の参照ピクチャを検索し得る。動き推定ユニットは、参照領域を含む参照ピクチャのRefPicList0およびRefPicList1の中での位置を示す参照ピクチャインデックスを生成し得る。加えて、動き推定ユニットは、参照領域に関連する参照ロケーションとPUのサンプルブロックとの間の空間変位を示すMVを生成し得る。PUの動き情報は、PUの参照インデックスおよびMVを含み得る。動き補償ユニットは、PUの動きベクトルによって示された参照領域における実際のサンプルまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測サンプルブロックを生成し得る。
【０１０９】
本開示の様々な例によれば、ビデオエンコーダ20は、パレットベースコーディングを実行するように構成され得る。HEVCフレームワークに関して、一例として、パレットベースコーディング技法は、コーディングユニット(CU)モードとして使用されるように構成され得る。他の例では、パレットベースコーディング技法は、HEVCのフレームワークにおけるPUモードとして使用されるように構成され得る。したがって、CUモードのコンテキストにおいて(本開示全体にわたって)本明細書で説明される、開示されるプロセスのすべては、追加または代替として、PUに適用され得る。しかしながら、そのような技法が、独立に機能するように、または他の既存の、もしくはこれから開発されるべきシステム/規格の一部として機能するように適用され得るので、これらのHEVCベースの例は、本明細書で説明するパレットベースコーディング技法の制約または限定と見なされるべきでない。これらの場合には、パレットコーディングのためのユニットは、正方形ブロック、長方形ブロック、または非矩形形状の領域でさえあり得る。
【０１１０】
パレットベース符号化ユニット122は、たとえば、パレットベース符号化を、たとえば、CUまたはPUに対してパレットベース符号化モードが選択されたときに実行し得る。たとえば、パレットベース符号化ユニット122は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置のピクセル値を表すパレットの中のピクセル値を選択し、ビデオデータのブロックの位置のうちの少なくともいくつかを、選択されたピクセル値にそれぞれ対応するパレットの中のエントリに関連付ける情報をシグナリングするように構成され得る。様々な機能がパレットベース符号化ユニット122によって実行されるものとして説明されるが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１１１】
パレットベース符号化ユニット122は、複数のモードを使用してパレットインデックス値を符号化し得る。たとえば、パレットベース符号化ユニット122は、インデックス値を他のインデックスに対してコーディングするために、インデックスモード、上コピーモード、および遷移モードを使用し得る。遷移モードを使用するとき、パレットベース符号化ユニット122は、ビデオデータの現在ブロックの現在ピクセルに対して、現在ピクセルのカラー値に対応すると予測される、パレットの中の特定のエントリを決定し得る。いくつかの例では、特定のエントリは、予測インデックス、最確モード(MPM:most-probable-mode)、または遷移予測インデックスと呼ばれることがある。上記で説明したように、パレットベース符号化ユニット122は、遷移テーブルに基づいて特定のエントリを決定し得る。
【０１１２】
いくつかの例では、パレットベース符号化ユニット122は、現在ブロックの現在ピクセルに対するパレットインデックス値を符号化するとき、調整済みパレットを生成するためにプルーニング動作を実行し得る。現在ピクセル用の調整済みパレットを生成するために、パレットベース符号化ユニット122は、現在ピクセルに対するパレットインデックス値であり得ない1つまたは複数のエントリを、現在ブロック用のパレットから除去し得る。プルーニング動作の一例のさらなる詳細が、図6を参照しながら以下で説明される。いずれの場合も、1つまたは複数のエントリを現在ブロック用のパレットから除去することによって、パレットベース符号化ユニット122は、現在ブロックに対してシグナリングされ得る可能なインデックスの範囲を低減し得る。このようにして、パレットベース符号化ユニット122は、現在ブロックに対するパレットインデックスをシグナリングするために使用されるデータの量を低減し得る。
【０１１３】
パレットベース符号化ユニット122は、現在ブロックの現在ピクセルに対するパレットインデックス値を2値化(すなわち、そのバイナリ表現を作成)し得る。いくつかの例では、パレットベース符号化ユニット122は、遷移モードを使用してコーディングされたすべてのパレットインデックスに対して、単一の2値化を使用し得る。たとえば、パレットベース符号化ユニット122は、現在ピクセルに対するパレットインデックス値が予測インデックス(すなわち、現在ピクセルのカラー値に対応すると予測される、パレットの中の特定のエントリ)に等しいかどうかを示すフラグを符号化し得る。現在ピクセルに対するパレットインデックス値が予測インデックスに等しくない場合、パレットベース符号化ユニット122は、現在ピクセル用のパレットから予測インデックスを除去することによって第2のプルーニング動作を実行し得、短縮バイナリコードを使用して、現在ピクセルに対するパレットインデックス値を残りの可能なインデックスの間で符号化し得る。しかしながら、いくつかの例では、遷移モードを使用してコーディングされたすべてのパレットインデックスに対して、単一の2値化を使用することが望ましくないことがある。
【０１１４】
本開示の1つまたは複数の技法によれば、現在ブロックの現在ピクセルのパレットインデックスを符号化するために単一の2値化を使用するのではなく、パレットベース符号化ユニット122は、パレットの1つまたは複数の特性に基づいて、複数のパレットインデックス2値化の中から2値化を選択し得る。たとえば、パレットベース符号化ユニット122は、パレットのサイズに基づいて変数を決定し得、その変数を既定のしきい値と比較し得る。
【０１１５】
いくつかの例では、変数は、パレットのサイズであり得る。いくつかの例では、変数は、上述の、また図6を参照しながら以下で説明するプルーニングプロセスなどの、1つまたは複数の調整が実行された後のパレットのサイズであり得る(たとえば、SCM2.0に記載されるようなmaxSymbol)。いくつかの例では、パレットベース符号化ユニット122は、スライスレベル、ピクチャレベル、またはシーケンスレベルのうちの1つまたは複数において、既定のしきい値を符号化し得る。いくつかの例では、既定のしきい値は、パレットベース符号化ユニット122によって知られている定数であってよい。
【０１１６】
いくつかの例では、パレットベース符号化ユニット122は、変数が既定のしきい値を満たすかどうかに基づいて、複数のパレットインデックス2値化の中から2値化を選択し得る。一例として、変数が既定のしきい値以上である場合、パレットベース符号化ユニット122は、複数のパレットインデックス2値化の中から第1の2値化を選択し得、第1の2値化を使用してパレットインデックスを符号化し得る。別の例として、変数が既定のしきい値未満である場合、パレットベース符号化ユニット122は、複数のパレットインデックス2値化の中から第2の2値化を選択し得、第2の2値化を使用してパレットインデックスを符号化し得る。
【０１１７】
複数のパレットインデックス2値化のうちの第1の2値化を使用してパレットインデックスを符号化するために、パレットベース符号化ユニット122は、パレットインデックスが予測インデックスに等しいかどうかを示すシンタックス要素をコーディングし得る。パレットインデックス値が予測インデックスに等しくない場合、パレットベース符号化ユニット122は、現在ピクセル用のパレットから予測インデックスを除去することによって第2のプルーニング動作を実行し得、固定長コードを使用して、現在ピクセルに対するパレットインデックス値を残りの可能なインデックスの間で符号化し得る。複数のパレットインデックス2値化のうちの第2の2値化を使用してパレットインデックスを符号化するために、パレットベース符号化ユニット122は、パレットインデックスが予測インデックスに等しいかどうかを示すシンタックス要素をコーディングせずに、可変長コードを使用してパレットインデックスをコーディングし得る。パレットインデックスを符号化するためにパレットベース符号化ユニット122が使用し得るいくつかの固定長コードは、必ずしも限定はしないが、短縮バイナリコード、短縮単項もしくは短縮ゴロムコード、ゴロムコードファミリーの他の変形形態、または任意の他の可変長コードを含む。
【０１１８】
いくつかの例では、パレットベース符号化ユニット122は、選択された2値化を示すフラグを符号化し得る。たとえば、パレットベース符号化ユニット122は、CUレベルにおいて選択された2値化を示すフラグを符号化し得る。いくつかの例では、2つの異なる2値化を使用する代わりに、パレットベース符号化ユニット122は、3つ以上の2値化を使用してよく、(フラグの代わりに)シンタックス要素を使用してその選択を明示的にシグナリングしてよい。
【０１１９】
上記で説明したように、パレットインデックス値が予測インデックスに等しくない場合、パレットベース符号化ユニット122は、現在ピクセル用のパレットから予測インデックスを除去することによって第2のプルーニング動作を実行し得、現在ピクセルに対するパレットインデックス値を残りの可能なインデックスの間で符号化し得る。予測インデックス除去動作の一例のさらなる詳細が、図8を参照しながら以下で説明される。現在ブロック用のパレットから予測インデックスを除去することによって、パレットベース符号化ユニット122は、現在ブロックに対してシグナリングされ得る可能なインデックスの範囲を低減し得る。このようにして、パレットベース符号化ユニット122は、現在ブロックに対するパレットインデックスをシグナリングするために使用されるデータの量を低減し得る。
【０１２０】
さらに、いくつかの例では、予測インデックス値は、パレットの中の最初のエントリでない場合がある。本開示の1つまたは複数の技法によれば、パレットベース符号化ユニット122は、予測インデックス値がパレットの中の最初のエントリになるように(すなわち、特定のエントリの値がパレットの中の他のエントリの値未満になるように)パレットの中のエントリを並べ替え得る。たとえば、6個のエントリを含むパレット(すなわち、[0,5]としての範囲の中のパレットインデックス)において、第4のエントリ(すなわち、パレットインデックス値[3])を予測インデックス値であるものとして、パレットベース符号化ユニット122は、第4のエントリをパレットインデックス値[0]へ移動させるとともに、予測インデックス値よりも小さい前のパレットインデックス値を1だけインクリメントしてよい。したがって、予測インデックス値が可変長コードを使用して符号化されるとき、予測インデックス値は、最短の可能なコード長を有する。このようにして、パレットベース符号化ユニット122は、パレットインデックスを表すために使用されるデータの量を低減し得る。パレットエントリ並べ替え動作の一例のさらなる詳細が、図7を参照しながら以下で説明される。
【０１２１】
いくつかの例では、パレットベース符号化ユニット122は、インデックス値をコーディングするためにどのモードが使用されるのかという表示をシグナリングし得る。たとえば、パレットベース符号化ユニット122は、現在のインデックス値をコーディングするために、インデックスモードが使用されるのか、上コピーモードが使用されるのか、または遷移コピーモードが使用されるのかを示すシンタックス要素(たとえば、palette_run_type_flag)をシグナリングし得る。以前の遷移モード符号化方式では、モードによって記述される遷移モード方式などが、上のTable 1(表1)に従ってシグナリングされた。しかしながら、いくつかの例では、Table 1(表1)のシグナリング方式は効率的でないことがある。
【０１２２】
本開示の1つまたは複数の技法によれば、パレットベース符号化ユニット122は、遷移コピーモードをインデックスモードと結合するシグナリング方式を使用し得る。たとえば、上のTable 2(表2)に従ってモードがシグナリングされ得る。パレットベース符号化ユニット122は、エントロピー符号化ユニット118に、Table 2(表2)におけるビンをコンテキストコーディングさせ得るか、または部分的にコンテキストコーディングさせ部分的にバイパスコーディングさせ得る。一例として、パレットベース符号化ユニット122は、エントロピー符号化ユニット118に、Table 2(表2)からのビンを、下のTable 5(表5)に示すように部分的にコンテキストコーディングさせ部分的にバイパスコーディングさせ得る。Table 5(表5)に示すように、エントロピー符号化ユニット118は、第1のビンをコンテキストコーディングし得、第2のビンをバイパスコーディングし得る。いくつかの例では、エントロピー符号化ユニット118によって使用されるコンテキストは、上のピクセルのモード(インデックスモード、または遷移コピーモード、または上コピーモード)に依存し得る。たとえば、上のピクセルが遷移コピーモードまたはインデックスモード(エスケープモードを含む)である場合、エントロピー符号化ユニット118は、第1のビンをコーディングするためにコンテキスト0を使用し得、そうでない(上のピクセルが上コピーモードである)場合、エントロピー符号化ユニット118は、第1のビンをコーディングするためにコンテキスト1を使用し得る。
【０１２３】
【表５】
2017535161.tif 000007
【０１２４】
いくつかの例では、パレットベース符号化ユニット122は両方のビンをコンテキストコーディングし得、コンテキストはパレットサイズに依存し得る。たとえば、パレットベース符号化ユニット122は、エントロピー符号化ユニット118に、Table 2(表2)からのビンを、下のTable 6(表6)に示すようにコンテキストコーディングさせ得る。Table 6(表6)における第1のビンをコーディングするためにエントロピー符号化ユニット118によって使用されるコンテキストは、隣接ピクセルのモードに依存し得、第2のビンをコーディングするためにエントロピー符号化ユニット118によって使用されるコンテキストは、パレットサイズに依存し得る。詳細には、第1のビンに対して、エントロピー符号化ユニット118は、上述のものと類似のコンテキストモデリングを適用し得る。第2のビンに対して、現在ブロックのパレットサイズがしきい値(たとえば、8)よりも小さい場合、エントロピー符号化ユニット118は、一方のコンテキストを使用し得、そうでない場合、エントロピー符号化ユニット118は、第2のビンをコーディングするために他方のコンテキストを使用し得る。
【０１２５】
【表６】
2017535161.tif 000008
【０１２６】
いくつかの例では、エントロピー符号化ユニット118は、パレットの中に存在した任意の冗長なモードシグナリングに対して、遷移モードを推定し得る。たとえば、左および上のパレットインデックスが同じでありエスケープでないとき、パレットモードは上からのコピーモードであり得ず、または上のピクセルがエスケープであるとき、上からのコピーモードは使用され得ず、最初の行において上からのコピーモードは利用可能でなく、以下同様である。そのような場合、エントロピー符号化ユニット118は、「使用されない」または「許容されない」モードをシグナリングしてよいが、代わりに遷移モードが使用または推定され得る。この場合、遷移モードを示す余分なビンシグナリングは必要とされなくてよい。
【０１２７】
以前の遷移モード符号化方式では、現在ブロックのための遷移モード情報は、現在ブロックに対する遷移モードの使用にかかわらずシグナリングされる。したがって、現在ブロックが遷移モードを使用しないとき、以前の遷移モード符号化方式は効率的でないことがある。
【０１２８】
本開示の1つまたは複数の技法によれば、パレットベース符号化ユニット122は、ビデオデータの現在ブロックに対して、現在ブロックにとって遷移モードが有効化されているかどうかを示すシンタックス要素をコーディングし得る。たとえば、パレットベース符号化ユニット122は、現在ブロックにとって遷移モードが有効化されているかどうかを示すフラグ(たとえば、use_trans_flag)をコーディングし得る。いくつかの例では、パレットベース符号化ユニット122は、use_trans_flagを1としてコーディングし得、その場合、現在ブロックは遷移コピーモードを使用する。そのような例では、パレットベース符号化ユニット122は、現在ブロックのための遷移モード情報をシグナリングし得る。いくつかの例では、パレットベース符号化ユニット122は、use_trans_flagを0としてコーディングし得、その場合、現在ブロックは遷移コピーモードを使用しない。そのような例では、パレットベース符号化ユニット122は、現在ブロックのための遷移モード情報をシグナリングしなくてよく、パレットベース符号化ユニット122は、パレットインデックスをコーディングするために、(SCM2.0において行われるような)従来のシグナリングを使用し得る。このようにして、パレットベース符号化ユニット122は、遷移モードを使用しないブロックに対して遷移モードをシグナリングすることに関連するオーバーヘッドコストを低減し得る。
【０１２９】
いくつかの例では、パレットベース符号化ユニット122は、エントロピー符号化ユニット118に、1つのコンテキストまたは複数のコンテキストを有するuse_trans_flagをコンテキストコーディングさせ得、そのことは、隣接ブロックのuse_trans_flag値に依存し得る。一例として、左または上の隣接ブロックのどちらも遷移コピーモードを使用しない場合、エントロピー符号化ユニット118は、第1のコンテキスト(たとえば、コンテキスト0)を使用し得る。別の例として、左または上のいずれかの隣接ブロックが遷移コピーモードを使用する場合、エントロピー符号化ユニット118は、第2のコンテキスト(たとえば、コンテキスト1)を使用し得る。別の例として、左と上の両方の隣接ブロックが遷移コピーモードを使用する場合、エントロピー符号化ユニット118は、第3のコンテキスト(たとえば、コンテキスト2)を使用し得る。
【０１３０】
パレットベース符号化ユニット122は、本明細書で説明する様々なシンタックス要素のいずれかを生成するように構成され得る。したがって、ビデオエンコーダ20は、本開示で説明するようなパレットベースコーディングモードを使用して、ビデオデータのブロックを符号化するように構成され得る。ビデオエンコーダ20は、パレットコーディングモードを使用してビデオデータのブロックを選択的に符号化し得、または異なるモード、たとえば、そのようなHEVCインター予測コーディングモードまたはイントラ予測コーディングモードを使用して、ビデオデータのブロックを符号化し得る。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されたCUまたはPUであってよい。ビデオエンコーダ20は、インター予測時間コーディングモードまたはイントラ予測空間コーディングモードを用いて一部のブロックを符号化し得、パレットベースコーディングモードを用いて他のブロックを復号し得る。
【０１３１】
イントラ予測処理ユニット126は、PUに対してイントラ予測を実行することによって、PUに対する予測データを生成し得る。PUに対する予測データは、PUに対する予測サンプルブロックおよび様々なシンタックス要素を含み得る。イントラ予測処理ユニット126は、Iスライス、Pスライス、およびBスライスの中のPUに対して、イントラ予測を実行し得る。
【０１３２】
PUに対してイントラ予測を実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUに対する予測データの複数のセットを生成し得る。イントラ予測モードを使用してPUに対する予測データのセットを生成するために、イントラ予測処理ユニット126は、イントラ予測モードに関連する方向で、隣接PUのサンプルブロックからPUのサンプルブロックにわたってサンプルを延ばし得る。PU、CU、およびCTUに対して左から右、上から下への符号化順序を仮定すると、隣接PUは、PUの上、右上、左上、または左であってよい。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば、33個の方向性イントラ予測モードを使用し得る。いくつかの例では、イントラ予測モードの数は、PUに関連する領域のサイズに依存し得る。
【０１３３】
予測処理ユニット100は、PUに対してインター予測処理ユニット120によって生成される予測データ、またはPUに対してイントラ予測処理ユニット126によって生成される予測データの中から、CUのPUに対する予測データを選択し得る。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/ひずみメトリックに基づいて、CUのPUに対する予測データを選択する。選択される予測データの予測サンプルブロックは、選択予測サンプルブロックと本明細書で呼ばれることがある。
【０１３４】
残差生成ユニット102は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック、ならびにCUのPUの選択予測ルーマブロック、選択予測Cbブロック、および選択予測Crブロックに基づいて、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを生成し得る。たとえば、残差生成ユニット102は、残差ブロックの中の各サンプルがCUのコーディングブロックの中のサンプルとCUのPUの対応する選択予測サンプルブロックの中の対応するサンプルとの間の差分に等しい値を有するように、CUの残差ブロックを生成し得る。
【０１３５】
変換処理ユニット104は、4分木区分を実行して、CUに関連する残差ブロックをCUのTUに関連する変換ブロックに区分し得る。したがって、TUは、ルーマ変換ブロックおよび2つのクロマ変換ブロックに関連し得る。CUのTUのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づいてよく、または基づかなくてもよい。「残差4分木」(RQT:residual quad-tree)と呼ばれる4分木構造が、領域の各々に関連するノードを含み得る。CUのTUは、RQTのリーフノードに相当し得る。
【０１３６】
変換処理ユニット104は、1つまたは複数の変換をTUの変換ブロックに適用することによって、CUのTUごとに変換係数ブロックを生成し得る。変換処理ユニット104は、TUに関連する変換ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向変換、または概念的に類似の変換を、変換ブロックに適用し得る。いくつかの例では、変換処理ユニット104は、変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われてよい。
【０１３７】
量子化ユニット106は、係数ブロックの中の変換係数を量子化し得る。量子化プロセスは、変換係数の一部または全部に関連するビット深度を低減し得る。たとえば、nビットの変換係数は、量子化中にmビットの変換係数に切り捨てられてよく、ただしnはmよりも大きい。量子化ユニット106は、CUに関連する量子化パラメータ(QP)値に基づいて、CUのTUに関連する係数ブロックを量子化し得る。ビデオエンコーダ20は、CUに関連するQP値を調整することによって、CUに関連する係数ブロックに適用される量子化の程度を調整し得る。量子化が情報の損失をもたらすことがあり、したがって、量子化変換係数の精度は元の精度よりも低い場合がある。
【０１３８】
逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、逆量子化および逆変換を係数ブロックに適用して、係数ブロックから残差ブロックを再構成し得る。再構成ユニット112は、再構成された残差ブロックを、予測処理ユニット100によって生成された1つまたは複数の予測サンプルブロックからの対応するサンプルに加算して、TUに関連する再構成された変換ブロックを生成し得る。このようにしてCUのTUごとに変換ブロックを再構成することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構成し得る。
【０１３９】
フィルタユニット114は、1つまたは複数のデブロッキング動作を実行して、CUに関連するコーディングブロックにおけるブロッキングアーティファクトを低減し得る。フィルタユニット114が1つまたは複数のデブロッキング動作を再構成されたコーディングブロックに対して実行した後、復号ピクチャバッファ116は、再構成されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、他のピクチャのPUに対してインター予測を実行するために、再構成されたコーディングブロックを含む参照ピクチャを使用し得る。加えて、イントラ予測処理ユニット126は、CUと同じピクチャの中の他のPUに対してイントラ予測を実行するために、復号ピクチャバッファ116の中の再構成されたコーディングブロックを使用し得る。
【０１４０】
エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能構成要素からデータを受信し得る。たとえば、エントロピー符号化ユニット118は、係数ブロックを量子化ユニット106から受信し得、シンタックス要素を予測処理ユニット100から受信し得る。エントロピー符号化ユニット118は、1つまたは複数のエントロピー符号化動作をデータに対して実行して、エントロピー符号化されたデータを生成し得る。たとえば、エントロピー符号化ユニット118は、コンテキスト適応型可変長コーディング(CAVLC)動作、CABAC動作、可変長-可変長(V2V)コーディング動作、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)動作、確率間隔区分エントロピー(PIPE)コーディング動作、指数ゴロム符号化動作、または別のタイプのエントロピー符号化動作を、データに対して実行し得る。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成された、エントロピー符号化データを含むビットストリームを出力し得る。たとえば、ビットストリームは、CUに対するRQTを表すデータを含み得る。
【０１４１】
いくつかの例では、残差コーディングはパレットコーディングと一緒に実行されない。したがって、ビデオエンコーダ20は、パレットコーディングモードを使用してコーディングするとき、変換または量子化を実行し得ない。加えて、ビデオエンコーダ20は、パレットコーディングモードを使用して残差データから別個に生成されたデータをエントロピー符号化し得る。
【０１４２】
図3は、本開示の技法を実施するように構成されている例示的なビデオデコーダ30を示すブロック図である。3は説明のために提供され、広く例示されかつ本開示で説明されるような技法の限定でない。説明のために、本開示は、HEVCコーディングのコンテキストでビデオデコーダ30を説明する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
【０１４３】
ビデオデコーダ30は、本開示で説明する様々な例によるパレットベースビデオコーディングのための技法を実行するように構成され得るデバイスの一例を表す。たとえば、ビデオデコーダ30は、HEVCコーディングにおけるCUまたはPUなどのビデオデータの様々なブロックを、パレットベースコーディングまたは非パレットベースコーディングのいずれかを使用して選択的に復号するように構成され得る。非パレットベースコーディングモードは、HEVCドラフト10によって規定される様々なコーディングモードなどの、様々なインター予測時間コーディングモードまたはイントラ予測空間コーディングモードを指すことがある。ビデオデコーダ30は、一例では、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置をパレットの中のエントリに関連付ける情報を受信し、情報に基づいてパレットの中のピクセル値を選択し、選択されたピクセル値に基づいてブロックのピクセル値を再構成するように構成され得る。
【０１４４】
図3の例では、ビデオデコーダ30は、エントロピー復号ユニット150、予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、フィルタユニット160、および復号ピクチャバッファ162を含む。予測処理ユニット152は、動き補償ユニット164およびイントラ予測処理ユニット166を含む。ビデオデコーダ30はまた、本開示で説明するパレットベースコーディング技法の様々な態様を実行するように構成された、パレットベース復号ユニット165を含む。他の例では、ビデオデコーダ30は、より多数の、より少数の、または異なる機能の構成要素を含み得る。
【０１４５】
コード化ピクチャバッファ(CPB)は、ビットストリームの符号化ビデオデータ(たとえば、NALユニット)を受信および記憶し得る。エントロピー復号ユニット150は、符号化ビデオデータ(たとえば、NALユニット)をCPBから受信するとともにNALユニットを構文解析して、シンタックス要素を復号し得る。エントロピー復号ユニット150は、NALユニットの中のエントロピー符号化シンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて、復号ビデオデータを生成し得る。
【０１４６】
ビットストリームのNALユニットは、コード化スライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、シンタックス要素をコード化スライスNALユニットから抽出およびエントロピー復号し得る。コード化スライスの各々は、スライスヘッダおよびスライスデータを含み得る。スライスヘッダは、スライスに関係するシンタックス要素を含み得る。スライスヘッダの中のシンタックス要素は、スライスを含むピクチャに関連するPPSを識別するシンタックス要素を含み得る。
【０１４７】
シンタックス要素をビットストリームから復号することに加えて、ビデオデコーダ30は、非区分CUに対して再構成動作を実行し得る。非区分CUに対して再構成動作を実行するために、ビデオデコーダ30は、CUの各TUに対して再構成動作を実行し得る。CUのTUごとに再構成動作を実行することによって、ビデオデコーダ30は、CUの残差ブロックを再構成し得る。
【０１４８】
CUのTUに対して再構成動作を実行することの一部として、逆量子化ユニット154は、TUに関連する係数ブロックを逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)し得る。逆量子化ユニット154は、量子化の程度と、同様に、逆量子化ユニット154が適用すべき逆量子化の程度とを決定するために、TUのCUに関連するQP値を使用し得る。すなわち、圧縮率、すなわち、元のシーケンスおよび圧縮されたシーケンスを表すために使用されるビット数の比が、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮率はまた、採用されるエントロピーコーディングの方法に依存し得る。
【０１４９】
逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、TUに関連する残差ブロックを生成するために、1つまたは複数の逆変換を係数ブロックに適用し得る。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向変換、または別の逆変換を係数ブロックに適用し得る。
【０１５０】
PUがイントラ予測を使用して符号化されている場合、イントラ予測処理ユニット166は、イントラ予測を実行して、PUに対する予測ブロックを生成し得る。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に隣接するPUの予測ブロックに基づいて、PUに対する予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数のシンタックス要素に基づいて、PUに対するイントラ予測モードを決定し得る。
【０１５１】
予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)および第2の参照ピクチャリスト(RefPicList1)を構成し得る。さらに、PUがインター予測を使用して符号化されている場合、エントロピー復号ユニット150は、PUに対する動き情報を抽出し得る。動き補償ユニット164は、PUの動き情報に基づいて、PUに対する1つまたは複数の参照領域を決定し得る。動き補償ユニット164は、PUに対する1つまたは複数の参照ブロックにおけるサンプルブロックに基づいて、PUに対する予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
【０１５２】
再構成ユニット158は、CUのTUに関連するルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック、ならびにCUのPUの予測ルーマブロック、予測Cbブロック、および予測Crブロック、すなわち、適用可能なとき、イントラ予測データまたはインター予測データのいずれかを使用して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構成し得る。たとえば、再構成ユニット158は、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックのサンプルを、予測ルーマブロック、予測Cbブロック、および予測Crブロックの対応するサンプルに加算して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構成し得る。
【０１５３】
フィルタユニット160は、デブロッキング動作を実行して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックに関連するブロッキングアーティファクトを低減し得る。ビデオデコーダ30は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを復号ピクチャバッファ162に記憶し得る。復号ピクチャバッファ162は、その後の動き補償、イントラ予測、および図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために、参照ピクチャを提供し得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162の中のルーマブロック、Cbブロック、およびCrブロックに基づいて、他のCUのPUに対してイントラ予測動作またはインター予測動作を実行し得る。このようにして、ビデオデコーダ30は、ビットストリームから、有意ルーマ係数ブロックの変換係数レベルを抽出し得、変換係数レベルを逆量子化し得、変換係数レベルに変換を適用して変換ブロックを生成し得、変換ブロックに少なくとも部分的に基づいてコーディングブロックを生成し得、表示用にコーディングブロックを出力し得る。
【０１５４】
本開示の様々な例によれば、ビデオデコーダ30は、パレットベースコーディングを実行するように構成され得る。パレットベース復号ユニット165は、たとえば、パレットベース復号を、たとえば、CUまたはPUに対してパレットベース復号モードが選択されたときに実行し得る。たとえば、パレットベース復号ユニット165は、ピクセル値を示すエントリを有するパレットを生成し、ビデオデータのブロックの少なくともいくつかの位置をパレットの中のエントリに関連付ける情報を受信し、情報に基づいてパレットの中のピクセル値を選択し、選択されたピクセル値に基づいてブロックのピクセル値を再構成するように構成され得る。様々な機能がパレットベース復号ユニット165によって実行されるものとして説明されるが、そのような機能の一部または全部は、他の処理ユニット、または異なる処理ユニットの組合せによって実行され得る。
【０１５５】
パレットベース復号ユニット165は、パレットコーディングモード情報を受信し得、パレットコーディングモードがブロックに適用されることをパレットコーディングモード情報が示すとき、上記の動作を実行し得る。パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、または異なるモードの使用を他のモード情報が示すとき、パレットベース復号ユニット165は、パレットコーディングモードがブロックに適用されないことをパレットコーディングモード情報が示すとき、非パレットベースコーディングモード、たとえば、そのようなHEVCインター予測コーディングモードまたはHEVCイントラ予測コーディングモードを使用して、ビデオデータのブロックを復号する。ビデオデータのブロックは、たとえば、HEVCコーディングプロセスに従って生成されたCUまたはPUであってよい。ビデオデコーダ30は、インター予測時間コーディングモードまたはイントラ予測空間コーディングモードを用いて一部のブロックを復号し得、パレットベースコーディングモードを用いて他のブロックを復号し得る。パレットベースコーディングモードは、複数の異なるパレットベースコーディングモードのうちの1つを備え得、または単一のパレットベースコーディングモードがあり得る。
【０１５６】
パレットベース復号ユニット165によって受信されるパレットコーディングモード情報は、フラグなどのパレットモードシンタックス要素を備え得る。パレットモードシンタックス要素の第1の値は、パレットコーディングモードがブロックに適用されることを示し、パレットモードシンタックス要素の第2の値は、パレットコーディングモードがビデオデータのブロックに適用されないことを示す。パレットベース復号ユニット165は、予測ユニットレベル、コーディングユニットレベル、スライスレベル、またはピクチャレベルのうちの1つもしくは複数においてパレットコーディングモード情報を受信し得るか、またはピクチャパラメータセット(PPS)、シーケンスパラメータセット(SPS)、またはビデオパラメータセット(VPS)のうちの少なくとも1つの中でパレットコーディングモード情報を受信し得る。
【０１５７】
いくつかの例では、パレットベース復号ユニット165は、ビデオデータのブロックに関連する、コーディングブロックのサイズ、フレームタイプ、色空間、カラー成分、フレームサイズ、フレームレート、スケーラブルビデオコーディングにおけるレイヤIDまたはマルチビューコーディングにおけるビューidのうちの1つまたは複数に基づいて、パレットコーディングモード情報を推定し得る。
【０１５８】
パレットベース復号ユニット165はまた、ビデオデータを有するパレットの中のエントリのうちの少なくともいくつかを定義する情報を受信し、受信された情報に少なくとも部分的に基づいてパレットを生成するように構成され得る。パレットのサイズは、固定または可変であってよい。場合によっては、パレットのサイズは可変であり、ビデオデータと一緒にシグナリングされる情報に基づいて調整可能である。シグナリングされる情報は、パレットの中のエントリがパレットの中での最後のエントリであるかどうかを規定し得る。また、場合によっては、パレットは最大サイズを有してよい。
【０１５９】
パレットは、ブロックのルーマ成分およびクロマ成分にとってのピクセル値を示すエントリを含む単一のパレットであってよい。この場合、パレットの中の各エントリは、ルーマ成分および2つのクロマ成分にとってのピクセル値を示すトリプルエントリである。代替として、パレットは、ブロックのルーマ成分のピクセル値を示すエントリを含むルーマパレット、およびブロックのそれぞれのクロマ成分にとってのピクセル値を示すエントリを含むクロマパレットを備える。
【０１６０】
いくつかの例では、パレットベース復号ユニット165は、以前に処理されたデータに基づいてパレットの中のエントリを予測することによって、パレットを生成し得る。以前に処理されたデータは、以前に復号された隣接ブロックに対するパレット、またはパレットからの情報を含み得る。パレットベース復号ユニット165は、パレットの中のエントリが予測されるべきかどうかを示す予測シンタックス要素を受信し得る。予測シンタックス要素は、それぞれ、ルーマ成分およびクロマ成分に対するパレットの中のエントリが予測されるべきかどうかを示す複数の予測シンタックス要素を含み得る。
【０１６１】
パレットベース復号ユニット165は、いくつかの例では、スライスまたはピクチャの中の左の隣接ブロック用または上の隣接ブロック用のパレットの中のエントリに基づいて、パレットの中のエントリのうちの少なくともいくつかを予測し得る。この場合、左の隣接ブロック用または上の隣接ブロック用のいずれかのパレットの中のエントリに基づいて予測される、パレットの中のエントリは、予測のための左の隣接ブロックまたは上の隣接ブロックの選択を示すシンタックス要素に基づいて、パレットベース復号ユニット165によって予測され得る。シンタックス要素は、予測のための左の隣接ブロックまたは上の隣接ブロックの選択を示す値を有するフラグであってよい。
【０１６２】
いくつかの例では、パレットベース復号ユニット165は、パレットの中の少なくともいくつかの選択されたエントリが、エントリごとに、予測されるべきかどうかを示す1つまたは複数の予測シンタックス要素を受信し得、それに応じてエントリを生成し得る。パレットベース復号ユニット165は、エントリのうちのいくつかを予測し得、パレットの中の他のエントリを直接規定する情報を受信し得る。
【０１６３】
パレットベース復号ユニット165は、ブロックの1つまたは複数の位置にとってのピクセル値を受信すること、およびパレットの中のエントリにピクセル値を追加してパレットの少なくとも一部分をオンザフライで動的に生成することによって、部分的にパレットを生成し得る。ピクセル値を追加することは、エントリの初期セットを備える初期パレットに、またはエントリの初期セットを含まない空のパレットに、ピクセル値を追加することを備え得る。いくつかの例では、追加することは、エントリの初期セットを備える初期パレットに新たなエントリを最初に追加するかもしくは初期パレットの中の既存のエントリを満たすように、ピクセル値を追加すること、または初期パレットの中のエントリのピクセル値を交換もしくは変更することを備える。
【０１６４】
いくつかの例では、パレットは、復号プロセスが不可逆であるように、ブロックの中の位置のうちの1つに対するパレットの中から選択されたピクセル値が、ブロックの中の位置の実際のピクセル値と異なる量子化パレットであってよい。たとえば、異なる実際のピクセル値を有する2つの異なる位置に対するパレットの中から、同じピクセル値が選択されてよい。
【０１６５】
パレットベース復号ユニット165によって受信され、ビデオデータのブロックの少なくともいくつかの位置をパレットの中のエントリに関連付ける情報は、ブロックの中の位置のうちの少なくともいくつかに対するパレットインデックス値を含むマップ情報を備え得、パレットインデックス値の各々は、パレットの中のエントリのうちの1つに対応する。マップ情報は、それぞれ、同じパレットインデックス値を有する、ブロックの中のいくつかの連続した位置を示す、1つまたは複数のランシンタックス要素を含み得る。
【０１６６】
パレットベース復号ユニット165は、複数のモードを使用してパレットインデックス値を復号し得る。たとえば、パレットベース復号ユニット165は、インデックス値を他のインデックスに対してコーディングするために、インデックスモード、上コピーモード、および遷移モードを使用し得る。遷移モードを使用するとき、パレットベース復号ユニット165は、ビデオデータの現在ブロックの現在ピクセルに対して、現在ピクセルのカラー値に対応すると予測される、パレットの中の特定のエントリを決定し得る。いくつかの例では、特定のエントリは、予測インデックス、最確モード(MPM)、または遷移予測インデックスと呼ばれることがある。上記で説明したように、パレットベース復号ユニット165は、遷移テーブルに基づいて特定のエントリを決定し得る。
【０１６７】
いくつかの例では、パレットベース復号ユニット165は、現在ブロックの現在ピクセルに対するパレットインデックス値を符号化するとき、調整済みパレットを生成するためにプルーニング動作を実行し得る。現在ピクセル用の調整済みパレットを生成するために、パレットベース復号ユニット165は、現在ピクセルに対するパレットインデックス値であり得ない1つまたは複数のエントリを、現在ブロック用のパレットから除去し得る。プルーニング動作の一例のさらなる詳細が、図6を参照しながら以下で説明される。いずれの場合も、1つまたは複数のエントリを現在ブロック用のパレットから除去することによって、パレットベース復号ユニット165は、現在ブロックに対してシグナリングされ得る可能なインデックスの範囲を低減し得る。このようにして、パレットベース復号ユニット165は、現在ブロックに対するパレットインデックスをシグナリングするために使用されるデータの量を低減し得る。
【０１６８】
パレットベース復号ユニット165は、現在ブロックの現在ピクセルに対するパレットインデックス値を2値化解除(de-binarize)(すなわち、バイナリ表現から再構成)し得る。いくつかの例では、パレットベース復号ユニット165は、遷移モードを使用してコーディングされたすべてのパレットインデックスに対して、単一の2値化を使用し得る。たとえば、パレットベース復号ユニット165は、現在ピクセルに対するパレットインデックス値が予測インデックス(すなわち、現在ピクセルのカラー値に対応すると予測される、パレットの中の特定のエントリ)に等しいかどうかを示すフラグを復号し得る。現在ピクセルに対するパレットインデックス値が予測インデックスに等しくない場合、パレットベース復号ユニット165は、現在ピクセル用のパレットから予測インデックスを除去することによって第2のプルーニング動作を実行し得、短縮バイナリコードを使用して、現在ピクセルに対するパレットインデックス値を残りの可能なインデックスの間で符号化し得る。しかしながら、いくつかの例では、遷移モードを使用してコーディングされたすべてのパレットインデックスに対して、単一の2値化を使用することが望ましくないことがある。
【０１６９】
本開示の1つまたは複数の技法によれば、現在ブロックの現在ピクセルのパレットインデックスを符号化するために単一の2値化を使用するのではなく、パレットベース復号ユニット165は、パレットの1つまたは複数の特性に基づいて、複数のパレットインデックス2値化の中から2値化を選択し得る。たとえば、パレットベース復号ユニット165は、パレットのサイズに基づいて変数を決定し得、その変数を既定のしきい値と比較し得る。
【０１７０】
いくつかの例では、パレットベース復号ユニット165は、変数が既定のしきい値を満たすかどうかに基づいて、複数のパレットインデックス2値化の中から2値化を選択し得る。一例として、変数が既定のしきい値以上である場合、パレットベース復号ユニット165は、複数のパレットインデックス2値化の中から第1の2値化を選択し得、第1の2値化を使用してパレットインデックスを復号し得る。別の例として、変数が既定のしきい値未満である場合、パレットベース復号ユニット165は、複数のパレットインデックス2値化の中から第2の2値化を選択し得、第2の2値化を使用してパレットインデックスを復号し得る。
【０１７１】
複数のパレットインデックス2値化のうちの第1の2値化を使用してパレットインデックスを復号するために、パレットベース復号ユニット165は、パレットインデックスが予測インデックスに等しいかどうかを示すシンタックス要素を復号し得る。パレットインデックス値が予測インデックスに等しくない場合、パレットベース復号ユニット165は、現在ピクセル用のパレットから予測インデックスを除去することによって第2のプルーニング動作を実行し得、固定長コードを使用して、現在ピクセルに対するパレットインデックス値を残りの可能なインデックスの間で復号し得る。複数のパレットインデックス2値化のうちの第2の2値化を使用してパレットインデックスを復号するために、パレットベース復号ユニット165は、パレットインデックスが予測インデックスに等しいかどうかを示すシンタックス要素を復号せずに、可変長コードを使用してパレットインデックスを復号し得る。パレットインデックスを符号化するためにパレットベース復号ユニット165が使用し得るいくつかの固定長コードは、必ずしも限定はしないが、短縮バイナリコード、短縮単項もしくは短縮ゴロムコード、ゴロムコードファミリーの他の変形形態、または任意の他の可変長コードを含む。
【０１７２】
上記で説明したように、パレットインデックス値が予測インデックスに等しくない場合、パレットベース復号ユニット165は、現在ピクセル用のパレットから予測インデックスを除去することによって第2のプルーニング動作を実行し得、現在ピクセルに対するパレットインデックス値を残りの可能なインデックスの間で復号し得る。予測インデックス除去動作の一例のさらなる詳細が、図8を参照しながら以下で説明される。現在ブロック用のパレットから予測インデックスを除去することによって、パレットベース復号ユニット165は、現在ブロックに対してシグナリングされ得る可能なインデックスの範囲を低減し得る。このようにして、パレットベース復号ユニット165は、現在ブロックに対するパレットインデックスをシグナリングするために使用されるデータの量を低減し得る。
【０１７３】
さらに、いくつかの例では、予測インデックス値は、パレットの中の最初のエントリでない場合がある。本開示の1つまたは複数の技法によれば、パレットベース復号ユニット165は、予測インデックス値がパレットの中の最初のエントリになるように(すなわち、特定のエントリの値がパレットの中の他のエントリの値未満になるように)パレットの中のエントリを並べ替え得る。たとえば、6個のエントリを含むパレット(すなわち、[0,5]としての範囲の中のパレットインデックス)において、第4のエントリ(すなわち、パレットインデックス値[3])を予測インデックス値であるものとして、パレットベース符号化ユニット122は、第4のエントリをパレットインデックス値[0]へ移動させるとともに、前のパレットインデックス値を1だけインクリメントしてよい。したがって、予測インデックス値が可変長コードを使用して復号されるとき、予測インデックス値は、最短の可能なコード長を有する。このようにして、パレットベース復号ユニット165は、パレットインデックスを表すために使用されるデータの量を低減し得る。パレットエントリ並べ替え動作の一例のさらなる詳細が、図7を参照しながら以下で説明される。
【０１７４】
いくつかの例では、パレットベース復号ユニット165は、インデックス値をコーディングするためにどのモードが使用されるのかという表示を受信し得る。たとえば、パレットベース復号ユニット165は、現在のインデックス値をコーディングするために、インデックスモードが使用されるのか、上コピーモードが使用されるのか、または遷移コピーモードが使用されるのかを示すシンタックス要素(たとえば、palette_run_type_flag)を復号し得る。以前の遷移モード符号化方式では、モードによって記述される遷移モード方式などが、上のTable 1(表1)に従ってシグナリングされた。しかしながら、いくつかの例では、Table 1(表1)のシグナリング方式は効率的でないことがある。
【０１７５】
本開示の1つまたは複数の技法によれば、パレットベース復号ユニット165は、遷移コピーモードをインデックスモードと結合するシグナリング方式を使用し得る。たとえば、上のTable 2(表2)に従ってモードがシグナリングされ得る。パレットベース復号ユニット165は、エントロピー復号ユニット150に、Table 2(表2)におけるビンをコンテキストコーディングさせ得るか、または部分的にコンテキストコーディングさせ部分的にバイパスコーディングさせ得る。一例として、パレットベース復号ユニット165は、エントロピー復号ユニット150に、Table 2(表2)からのビンを、上のTable 5(表5)に示すように部分的にコンテキストコーディングさせ部分的にバイパスコーディングさせ得る。Table 5(表5)に示すように、エントロピー復号ユニット150は、第1のビンをコンテキストコーディングし得、第2のビンをバイパスコーディングし得る。いくつかの例では、エントロピー復号ユニット150によって使用されるコンテキストは、上のピクセルのモード(インデックスモード、または遷移コピーモード、または上コピーモード)に依存し得る。たとえば、上のピクセルが遷移コピーモードまたはインデックスモード(エスケープモードを含む)である場合、エントロピー復号ユニット150は、第1のビンをコーディングするためにコンテキスト0を使用し得、そうでない(上のピクセルが上コピーモードである)場合、エントロピー復号ユニット150は、第1のビンをコーディングするためにコンテキスト1を使用し得る。
【０１７６】
いくつかの例では、パレットベース復号ユニット165は両方のビンをコンテキストコーディングし得、コンテキストはパレットサイズに依存し得る。たとえば、パレットベース復号ユニット165は、エントロピー復号ユニット150に、Table 2(表2)からのビンを、上のTable 6(表6)に示すようにコンテキストコーディングさせ得る。Table 6(表6)における第1のビンをコーディングするためにエントロピー復号ユニット150によって使用されるコンテキストは、隣接ピクセルのモードに依存し得、第2のビンをコーディングするためにエントロピー復号ユニット150によって使用されるコンテキストは、パレットサイズに依存し得る。詳細には、第1のビンに対して、エントロピー復号ユニット150は、上述のものと類似のコンテキストモデリングを適用し得る。第2のビンに対して、現在ブロックのパレットサイズがしきい値(たとえば、8)よりも小さい場合、エントロピー復号ユニット150は、一方のコンテキストを使用し得、そうでない場合、エントロピー復号ユニット150は、第2のビンをコーディングするために他方のコンテキストを使用し得る。
【０１７７】
いくつかの例では、エントロピー復号ユニット150は、パレットの中に存在した任意の冗長なモードシグナリングに対して、遷移モードを推定し得る。たとえば、左および上のパレットインデックスが同じでありエスケープでないとき、パレットモードは上からのコピーモードであり得ず、または上のピクセルがエスケープであるとき、上からのコピーモードは使用され得ず、最初の行において上からのコピーモードは利用可能でなく、以下同様である。そのような場合、エントロピー復号ユニット150は、「使用されない」または「許容されない」モードをシグナリングしてよいが、代わりに遷移モードが使用または推定され得る。この場合、遷移モードを示す余分なビンシグナリングは必要とされなくてよい。
【０１７８】
以前の遷移モード符号化方式では、現在ブロックのための遷移モード情報は、現在ブロックに対する遷移モードの使用にかかわらずシグナリングされる。したがって、現在ブロックが遷移モードを使用しないとき、以前の遷移モード符号化方式は効率的でないことがある。
【０１７９】
本開示の1つまたは複数の技法によれば、パレットベース復号ユニット165は、ビデオデータの現在ブロックに対して、現在ブロックにとって遷移モードが有効化されているかどうかを示すシンタックス要素をコーディングし得る。たとえば、パレットベース復号ユニット165は、現在ブロックにとって遷移モードが有効化されているかどうかを示すフラグ(たとえば、use_trans_flag)をコーディングし得る。いくつかの例では、パレットベース復号ユニット165は、use_trans_flagを1としてコーディングし得、その場合、現在ブロックは遷移コピーモードを使用する。そのような例では、パレットベース符号化ユニット122は、現在ブロックのための遷移モード情報をシグナリングし得る。いくつかの例では、パレットベース復号ユニット165は、use_trans_flagを0としてコーディングし得、その場合、現在ブロックは遷移コピーモードを使用しない。そのような例では、パレットベース復号ユニット165は、現在ブロックのための遷移モード情報をシグナリングしなくてよく、パレットベース復号ユニット165は、パレットインデックスをコーディングするために、(SCM2.0において行われるような)従来のシグナリングを使用し得る。このようにして、パレットベース復号ユニット165は、遷移モードを使用しないブロックに対して遷移モードをシグナリングすることに関連するオーバーヘッドコストを低減し得る。
【０１８０】
いくつかの例では、パレットベース復号ユニット165は、エントロピー復号ユニット150に、1つのコンテキストまたは複数のコンテキストを有するuse_trans_flagをコンテキストコーディングさせ得、そのことは、隣接ブロックのuse_trans_flag値に依存し得る。一例として、左または上の隣接ブロックのどちらも遷移コピーモードを使用しない場合、エントロピー復号ユニット150は、第1のコンテキスト(たとえば、コンテキスト0)を使用し得る。別の例として、左または上のいずれかの隣接ブロックが遷移コピーモードを使用する場合、エントロピー復号ユニット150は、第2のコンテキスト(たとえば、コンテキスト1)を使用し得る。別の例として、左と上の両方の隣接ブロックが遷移コピーモードを使用する場合、エントロピー復号ユニット150は、第3のコンテキスト(たとえば、コンテキスト2)を使用し得る。
【０１８１】
図4は、本開示の技法に一致する、ビデオデータをコーディングするためのパレットを決定することの一例を示す概念図である。図4の例は、第1のパレット184に関連付けられている第1のコーディングユニット(CU)180、および第2のパレット192に関連付けられている第2のCU188を有するピクチャ178を含む。以下でより詳細に説明するように、本開示の技法によれば、第2のパレット192は第1のパレット184に基づく。ピクチャ178はまた、イントラ予測コーディングモードを用いてコーディングされたブロック196、およびインター予測コーディングモードを用いてコーディングされたブロック200を含む。
【０１８２】
図4の技法は、説明のために、ビデオエンコーダ20(図1および図2)およびビデオデコーダ30(図1および図3)のコンテキストにおいて、HEVCビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセッサおよび/またはデバイスによって、他のビデオコーディングプロセスおよび/または規格において適用され得ることを理解されたい。
【０１８３】
概して、パレットは、現在コーディングされているCU、すなわち図4の例におけるCU188にとって、支配的および/または代表的ないくつかのピクセル値を指す。第1のパレット184および第2のパレット192は、複数のパレットを含むように示される。いくつかの例では、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30などの)は、パレットをCUのカラー成分ごとに別個にコーディングし得る。たとえば、ビデオエンコーダ20は、CUのルーマ(Y)成分用のパレット、CUのクロマ(U)成分用の別のパレット、およびCUのクロマ(V)成分用のさらに別のパレットを符号化し得る。この例では、YパレットのエントリがCUのピクセルのY値を表し得、UパレットのエントリがCUのピクセルのU値を表し得、VパレットのエントリがCUのピクセルのV値を表し得る。別の例では、ビデオエンコーダ20は、CUのルーマ(Y)成分用のパレット、CUの2つの成分(U、V)用の別のパレットを符号化し得る。この例では、YパレットのエントリがCUのピクセルのY値を表し得、U-VパレットのエントリがCUのピクセルのU-V値ペアを表し得る。
【０１８４】
他の例では、ビデオエンコーダ20は、CUのすべてのカラー成分用の単一のパレットを符号化し得る。この例では、ビデオエンコーダ20は、Yi、Ui、およびViを含むトリプル値であるi番目のエントリを有するパレットを符号化し得る。この場合、パレットは、ピクセルの成分の各々に対する値を含む。したがって、複数の個々のパレットを有するパレットのセットとしてのパレット184および192の表現は、一例にすぎず限定を意図しない。
【０１８５】
図4の例では、第1のパレット184は、それぞれ、エントリインデックス値1、エントリインデックス値2、およびエントリインデックス値3を有する、3つのエントリ202〜206を含む。エントリ202〜206は、インデックス値を、それぞれ、ピクセル値A、ピクセル値B、およびピクセル値Cを含むピクセル値に関連付ける。本明細書で説明するように、第1のCU180の実際のピクセル値をコーディングするのではなく、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30などの)は、パレットベースコーディングを使用して、インデックス1〜3を使用してブロックのピクセルをコーディングし得る。すなわち、第1のCU180のピクセル位置ごとに、ビデオエンコーダ20は、ピクセルに対するインデックス値を符号化し得、その場合、インデックス値は、第1のパレット184のうちの1つまたは複数の中のピクセル値に関連付けられている。ビデオデコーダ30は、インデックス値をビットストリームから取得し得、インデックス値および第1のパレット184のうちの1つまたは複数を使用して、ピクセル値を再構成し得る。したがって、パレットベース復号においてビデオデコーダ30によって使用するために、第1のパレット184がビデオエンコーダ20によって符号化ビデオデータビットストリームの中で送信される。概して、1つまたは複数のパレットが、CUごとに送信されてよく、または異なるCUの間で共有されてもよい。
【０１８６】
ビデオエンコーダ20およびビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定し得る。たとえば、ビデオエンコーダ20は、CU用のパレットが、(空間的に、または走査順序に基づいて)隣接するCUまたは因果的ネイバーの最も頻度が高いサンプルなどの1つまたは複数の他のCUに関連する1つまたは複数のパレットから予測されるかどうかを示すために、CU(一例として、第2のCU188を含む)ごとにpred_palette_flagを符号化し得る。たとえば、そのようなフラグの値が1に等しいとき、第2のCU188に対する第2のパレット192が1つまたは複数のすでに復号されたパレットから予測されるとビデオデコーダ30は決定し得、したがって、第2のCU188に対する新たなパレットは、pred_palette_flagを含むビットストリームに含まれない。そのようなフラグが0に等しいとき、第2のCU188に対するパレット192が新たなパレットとしてビットストリームに含まれるとビデオデコーダ30は決定し得る。いくつかの例では、pred_palette_flagは、CUの異なるカラー成分ごとに別個にコーディングされ得る(たとえば、YUVビデオのCUに対して、3つのフラグ、すなわち、Yにとっての1つ、Uにとっての1つ、およびVにとっての1つ)。他の例では、CUのすべてのカラー成分に対して単一のpred_palette_flagがコーディングされ得る。
【０１８７】
上記の例では、現在ブロック用のパレットのエントリのうちのいずれかが予測されているかどうかを示すために、pred_palette_flagはCUごとにシグナリングされる。いくつかの例では、1つまたは複数のシンタックス要素が、エントリごとにシグナリングされ得る。すなわち、パレット予測子のエントリごとに、そのエントリが現在パレットの中に存在するかどうかを示すためにフラグがシグナリングされ得る。上述のように、パレットエントリが予測されていない場合、パレットエントリは、明示的にシグナリングされ得る。
【０１８８】
第2のパレット192を第1のパレット184に対して決定する(たとえば、pred_palette_flagが1に等しい)とき、ビデオエンコーダ20および/またはビデオデコーダ30は、予測パレット、この例では第1のパレット184がそこから決定される1つまたは複数のブロックの位置を特定し得る。予測パレットは、現在コーディングされているCU(たとえば、(空間的に、または走査順序に基づいて)隣接するCU、または因果的ネイバーの最も頻度が高いサンプル)、すなわち、第2のCU188の、1つまたは複数の隣接CUに関連し得る。1つまたは複数の隣接CUのパレットは、予測子パレットに関連し得る。いくつかの例では、図4に示す例などの、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のCU188用の予測パレットを決定するとき、左の隣接CU、すなわち第1のCU180の位置を特定し得る。他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、上のCU、すなわちCU196などの、第2のCU188に対して他の位置における1つまたは複数のCUの位置を特定し得る。
【０１８９】
ビデオエンコーダ20および/またはビデオデコーダ30は、階層に基づくパレット予測のためにCUを決定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のために、最初に左の隣接CU、すなわち第1のCU180を識別し得る。左の隣接CUが予測のために利用可能でない(たとえば、左の隣接CUが、イントラ予測モードもしくはイントラ予測モードなどのパレットベースコーディングモード以外のモードを用いてコーディングされているか、またはピクチャもしくはスライスの一番左のエッジに位置している)場合、ビデオエンコーダ20および/またはビデオデコーダ30は、上の隣接CU、すなわちCU196を識別し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のために利用可能なパレットを有するCUの位置を特定するまで、利用可能なCUをロケーションの所定の順序に従って探索し続けてよい。いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、複数のブロック、および/または隣接ブロックの再構成されたサンプルに基づいて予測パレットを決定し得る。
【０１９０】
図4の例は単一のCU、すなわち第1のCU180からの予測パレットとして第1のパレット184を示すが、他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、隣接CUの組合せから予測のためのパレットの位置を特定し得る。たとえば、ビデオエンコーダ20および/またはビデオデコーダは、1つまたは複数の式、関数、規則などを適用して、複数の隣接CUのうちの1つまたはその組合せのパレットに基づいてパレットを生成し得る。
【０１９１】
さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、パレット予測のためのいくつかの潜在的な候補を含む候補リストを構成し得る。リストの中の重複した候補を除去するために、ビデオエンコーダ20とビデオデコーダ30の両方においてプルーニングプロセスが適用され得る。そのような例では、ビデオエンコーダ20は、パレット予測のために使用される現在CUがその中から選択される(たとえば、パレットをコピーする)リストの中の候補CUを示すために、候補リストへのインデックスを符号化し得る。ビデオデコーダ30は、同様の方法で候補リストを構成し得、インデックスを復号し得、復号されたインデックスを、現在CUと一緒に使用するための対応するCUのパレットを選択するために使用し得る。
【０１９２】
一例では、例示のために、ビデオエンコーダ20およびビデオデコーダ30は、現在コーディングされているCUの上に位置する1つのCUと、現在コーディングされているCUの左に位置する1つのCUとを含む、候補リストを構成し得る。この例では、ビデオエンコーダ20は、候補選択を示すために、1つまたは複数のシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ20は、現在CU用のパレットが現在CUの左に位置するCUからコピーされていることを示すために、0としての値を有するフラグを符号化し得る。ビデオエンコーダ20は、現在CU用のパレットが現在CUの上に位置するCUからコピーされていることを示すために、1としての値を有するフラグを符号化し得る。ビデオデコーダ30は、そのフラグを復号し、パレット予測のために適切なCUを選択する。
【０１９３】
さらに他の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、1つまたは複数の他のパレットに含まれるサンプル値が1つまたは複数の隣接CUに出現する頻度に基づいて、現在コーディングされているCU用のパレットを決定する。たとえば、ビデオエンコーダ20および/またはビデオデコーダ30は、所定の数のCUのコーディングの間に最も頻繁に使用されるインデックス値に関連するカラーを追跡し得る。ビデオエンコーダ20および/またはビデオデコーダ30は、最も頻繁に使用されるカラーを、現在コーディングされているCU用のパレットに含め得る。
【０１９４】
いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、エントリ方向ベースのパレット予測を実行し得る。たとえば、ビデオエンコーダ20は、予測パレットのエントリごとに、それぞれの予測パレットエントリが現在パレットにおいて再使用されるかどうか(たとえば、別のCUのパレットの中のピクセル値が現在パレットによって再使用されるかどうか)を示す、1つまたは複数のフラグなどの1つまたは複数のシンタックス要素を符号化し得る。この例では、ビデオエンコーダ20は、エントリが予測パレット(たとえば、隣接CUに関連するパレットの対応するエントリ)から予測された値であるとき、所与のエントリに対して1に等しい値を有するフラグを符号化し得る。ビデオエンコーダ20は、特定のエントリが別のCUのパレットから予測されていないことを示すために、特定のエントリに対して0に等しい値を有するフラグを符号化し得る。この例では、ビデオエンコーダ20はまた、予測されていないパレットエントリの値を示す追加のデータを符号化し得る。
【０１９５】
図4の例では、第2のパレット192は、それぞれ、エントリインデックス値1、エントリインデックス値2、エントリインデックス値3、およびエントリインデックス4を有する4つのエントリ208〜214を含む。エントリ208〜214は、それぞれ、ピクセル値A、ピクセル値B、ピクセル値C、およびピクセル値Dを含むピクセル値に、インデックス値を関連付ける。ビデオエンコーダ20および/またはビデオデコーダ30は、上記で説明した技法のいずれかを使用して、第2のCU188をコーディングするために、パレット予測のために第1のCU180の位置を特定するとともに第1のパレット184のエントリ1〜3を第2のパレット192のエントリ1〜3にコピーし得る。このようにして、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のパレット184に基づいて第2のパレット192を決定し得る。加えて、ビデオエンコーダ20および/またはビデオデコーダ30は、第2のパレット192とともに含められるべきエントリ4のためのデータをコーディングし得る。そのような情報は、予測子パレットから予測されていないパレットエントリの数、およびそれらのパレットエントリに対応するピクセル値を含み得る。
【０１９６】
いくつかの例では、本開示の態様によれば、第2のパレット192などのパレットが完全に予測パレット(第1のパレット184として図4に示すが、1つまたは複数のブロックからのエントリからなることがある)から予測されているかどうか、または第2のパレット192の特定のエントリが予測されているかどうかを、1つまたは複数のシンタックス要素が示し得る。たとえば、エントリのすべてが予測されているかどうかを、最初のシンタックス要素が示し得る。エントリのすべてが予測されているとは限らないことを最初のシンタックス要素が示す場合(たとえば、0としての値を有するフラグ)、第2のパレット192のどのエントリが予測パレットから予測されているのかを、1つまたは複数の追加のシンタックス要素が示し得る。
【０１９７】
本開示のいくつかの態様によれば、パレット予測に関連するいくつかの情報が、コーディングされているデータの1つまたは複数の特性から推定され得る。すなわち、ビデオエンコーダ20がシンタックス要素を符号化する(また、ビデオデコーダ30がそのようなシンタックス要素を復号する)のではなく、ビデオエンコーダ20およびビデオデコーダ30は、コーディングされているデータの1つまたは複数の特性に基づいてパレット予測を実行し得る。
【０１９８】
図5は、本開示の技法に一致する、ピクセルのブロック用のパレットへのインデックスを決定することの一例を示す概念図である。たとえば、図5は、インデックス値に関連するピクセルのそれぞれの位置をパレット244のエントリに関連付けるインデックス値(値1、2、および3)のマップ240を含む。パレット244は、図4に関して上記で説明した第1のパレット184および第2のパレット192と同様の方法で決定され得る。
【０１９９】
再び、図5の技法は、説明のために、ビデオエンコーダ20(図1および図2)およびビデオデコーダ30(図1および図3)のコンテキストにおいて、HEVCビデオコーディング規格に関して説明される。しかしながら、本開示の技法はこのように限定されず、他のビデオコーディングプロセッサおよび/またはデバイスによって、他のビデオコーディングプロセスおよび/または規格において適用され得ることを理解されたい。
【０２００】
マップ240は図5の例ではピクセル位置ごとにインデックス値を含むように示されるが、他の例では、すべてのピクセル位置が、ピクセル値をパレット244のエントリに関連付けるインデックス値に関連し得るとは限らないことを理解されたい。すなわち、上述のように、いくつかの例では、ピクセル値がパレット244に含まれない場合、マップ240の中の位置に対する実際のピクセル値(または、その量子化バージョン)の表示をビデオエンコーダ20は符号化し得る(また、ビデオデコーダ30は符号化ビットストリームから取得し得る)。
【０２０１】
いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、どのピクセル位置がインデックス値に関連するのかを示す追加のマップをコーディングするように構成され得る。たとえば、マップの中の(i,j)エントリがCUの(i,j)位置に対応すると想定する。ビデオエンコーダ20は、マップ(すなわち、各ピクセル位置)のエントリごとに、関連するインデックス値をエントリが有するかどうかを示す1つまたは複数のシンタックス要素を符号化し得る。たとえば、ビデオエンコーダ20は、CUの中の(i,j)ロケーションにおけるピクセル値がパレット244の中の値のうちの1つであることを示すために、1としての値を有するフラグを符号化し得る。ビデオエンコーダ20はまた、そのような一例では、パレットの中のピクセル値を示すとともにビデオデコーダがピクセル値を再構成することを可能にするために、パレットインデックス(図5の例では値1〜3として示される)を符号化し得る。パレット244が単一のエントリおよび関連するピクセル値を含む事例では、ビデオエンコーダ20は、インデックス値のシグナリングをスキップ(skip)してよい。ビデオエンコーダ20は、CUの中の(i,j)ロケーションにおけるピクセル値がパレット244の中の値のうちの1つでないことを示すために、0としての値を有するようにフラグを符号化し得る。この例では、ビデオエンコーダ20はまた、ピクセル値を再構成する際にビデオデコーダ30によって使用するためのピクセル値の表示を符号化し得る。いくつかの事例では、ピクセル値は、不可逆方式でコーディングされてよい。
【０２０２】
CUのある位置の中のピクセルの値は、CUの他の位置における1つまたは複数の他のピクセルの値の表示を提供し得る。たとえば、CUの隣接ピクセル位置が、同じピクセル値を有するか、または(2つ以上のピクセル値が単一のインデックス値にマッピングされ得る不可逆コーディングの場合)同じインデックス値にマッピングされ得る、比較的高い確率があり得る。
【０２０３】
したがって、ビデオエンコーダ20は、同じピクセル値またはインデックス値を有する所与の走査順序でのいくつかの連続するピクセルまたはインデックス値を示す、1つまたは複数のシンタックス要素を符号化し得る。上述のように、同様の値のピクセルまたはインデックス値のストリングは本明細書ではランと呼ばれることがある。例示のための一例では、所与の走査順序での2つの連続するピクセルまたはインデックスが異なる値を有する場合、ランは0に等しい。所与の走査順序での2つの連続するピクセルまたはインデックスが同じ値を有するが、走査順序での第3のピクセルまたはインデックスが異なる値を有する場合、ランは1に等しい。同じ値を有する3つの連続するインデックスまたはピクセルの場合、ランは2であり、以下同様である。ビデオデコーダ30は、ランを示すシンタックス要素を符号化ビットストリームから取得し得、そのデータを使用して、同じピクセルまたはインデックス値を有する連続するロケーションの数を決定し得る。
【０２０４】
ビデオデコーダ30は、上記で説明したシンタックス要素を受信し得、行266、268、および270を再構成し得る。たとえば、ビデオデコーダ30は、現在コーディングされているマップ240の位置に対するインデックス値を示すデータを、符号化ビットストリームから取得し得る。ビデオデコーダ30はまた、同じインデックス値を有する、走査順序での連続した位置の数を示すデータを取得し得る。
【０２０５】
図6は、本開示の技法に一致する、ピクセルのブロック用のパレットからインデックスを除去するための例示的なプルーニング動作を示す概念図である。図6の技法は、図1および図2のビデオエンコーダ20または図1および図3のビデオデコーダ30などの、ビデオコーダによって実行され得る。
【０２０６】
図6は、図4に関して上記で説明した第1のパレット184および第2のパレット192と同様の方法で決定され得るパレット602を含む。パレット602は、カラー値にそれぞれ対応する7つのエントリを含み得る。図6に示すように、エントリインデックス0は、カラー値Aに対応し得、エントリインデックス1は、カラー値Bに対応し得、エントリインデックス2は、カラー値Cに対応し得、エントリインデックス3は、カラー値Dに対応し得、エントリインデックス4は、カラー値Eに対応し得、エントリインデックス5は、カラー値Fに対応し得、エントリインデックス6は、カラー値Gに対応し得る。
【０２０７】
上記で説明したように、ビデオコーダのパレットベースコーディングユニット(たとえば、ビデオエンコーダ20のパレットベース符号化ユニット122またはビデオデコーダ30のパレットベース復号ユニット165)は、ビデオデータの現在ブロックの現在ピクセルに対して、現在ピクセルのカラー値に対応すると予測される、パレットの中の特定のエントリを決定し得る。図6の例では、パレットベースコーディングユニットは、パレット602のエントリ2が現在ピクセルのカラー値に対応すると予測される(すなわち、現在ピクセルがカラー値Cを有すると予測される)と決定し得る。したがって、パレット602のエントリ2は、最確モード(MPM)としてマークされる。
【０２０８】
上記で説明したように、パレットベースコーディングユニットは、現在ブロックの現在ピクセルに対するパレットインデックス値を符号化するとき、調整済みパレットを生成するためにプルーニング動作を実行し得る。現在ピクセル用の調整済みパレットを生成するために、パレットベースコーディングユニットは、現在ピクセルに対するパレットインデックス値であり得ない1つまたは複数のエントリを、現在ブロック用のパレットから除去し得る。たとえば、現在ピクセルが走査順序において現在ブロック内の最初のピクセルでなく、走査順序において最後にコーディングされたピクセルが非エスケープピクセルである場合、パレットベースコーディングユニットは、以下の手順を現在ピクセルのパレットインデックスTに適用し得る。
【０２０９】
最初に、現在ブロックの中にエスケープピクセルがない場合、パレットベースコーディングユニットは、変数maxSymbolを現在ブロックのパレットサイズに等しく設定し得る。代替として、現在ブロックの中に少なくとも1つのエスケープピクセルがある場合、パレットベースコーディングユニットは、現在ブロックがエスケープピクセルを有し得る場合には変数maxSymbolを現在ブロックのパレットサイズ+1に等しく設定し得る。図6の例においては、現在ブロックは、エスケープピクセルを含まない。したがって、図6の例では、パレットベースコーディングユニットは、maxSymbolを現在ブロックのパレットサイズに等しく設定し得、現在ブロックのパレットサイズは7である(すなわち、maxSymbol=7)。
【０２１０】
パレットベースコーディングユニットは、パレットが、現在ピクセルに対するパレットインデックス値であり得ない1つまたは複数のエントリを含むかどうかを決定し得る。一例として、走査順序において最後にコーディングされた、現在ピクセルの隣接ピクセルが「インデックス」モードでコーディングされている場合、パレットベースコーディングユニットは、現在ピクセルのパレットインデックスTが、最後にコーディングされた隣接ピクセルのインデックスに等しくなり得ないと決定し得る。そのような例では、パレットベースコーディングユニットは、変数Refを最後にコーディングされた隣接ピクセルのインデックス値に等しく設定し得る。別の例として、最初でない行に現在ピクセルがあり、走査順序において最後にコーディングされた隣接ピクセルが「上コピー」モードであり、現在ピクセルの上のピクセルが非エスケープである場合、パレットベースコーディングユニットは、現在ピクセルのパレットインデックスTが上のピクセルのインデックスに等しくなり得ないと決定し得る。そのような例では、パレットベースコーディングユニットは、変数Refを上のピクセルのインデックス値に等しく設定し得る。どちらの例でも、パレットベースコーディングユニットは、maxSymbolをデクリメント(すなわち、maxSymbolを(maxSymbol-1)に等しく設定)し得、現在ピクセルのパレットインデックスTがRefよりも大きい場合、パレットベースコーディングユニットは、現在ピクセルパレットインデックスTをデクリメント(すなわち、現在のインデックスTを(T-1)に等しく設定)し得る。
【０２１１】
図6の例では、パレットベースコーディングユニットは、パレット602のエントリインデックス4が現在ピクセルに対するパレットインデックス値であり得ないと決定し得る。決定に基づいて、パレットベースコーディングユニットは、Refをインデックス4に等しく設定し、パレット602からインデックス4を除去し、Refよりも大きいエントリインデックスのインデックス値をデクリメントし(すなわち、エントリインデックス4をカラー値Fに対応するように設定し、エントリインデックス5はカラー値Gに対応し得る)、maxSymbolをデクリメントして(すなわち、maxSymbol=maxSymbol-1=6)、現在ピクセルに対する調整済みパレット604を生成し得る。
【０２１２】
現在ブロック用のパレットから1つまたは複数のエントリを除去することによって、パレットベースコーディングユニットは、現在ブロックに対してシグナリングされ得る可能なインデックスの範囲を低減し得る。たとえば、図6に示すように、可能なインデックスの範囲が0〜6となるのではなく、調整された範囲は0〜5である。このようにして、パレットベースコーディングユニットは、現在ブロックに対するパレットインデックスをシグナリングするために使用されるデータの量を低減し得る。
【０２１３】
図7は、本開示の技法に一致する、ピクセルのブロック用のパレット内でインデックスを並べ替えるための例示的な動作を示す概念図である。図7の技法は、図1および図2のビデオエンコーダ20または図1および図3のビデオデコーダ30などの、ビデオコーダによって実行され得る。
【０２１４】
図7は、図6の調整済みパレット604などの調整済みパレットを表し得るパレット702を含む。パレット702は、カラー値にそれぞれ対応する6つのエントリを含み得る。図7に示すように、エントリインデックス0は、カラー値Aに対応し得、エントリインデックス1は、カラー値Bに対応し得、エントリインデックス2は、カラー値Cに対応し得、エントリインデックス3は、カラー値Dに対応し得、エントリインデックス4は、カラー値Fに対応し得、エントリインデックス5は、カラー値Gに対応し得る。
【０２１５】
上記で説明したように、ビデオコーダのパレットベースコーディングユニット(たとえば、ビデオエンコーダ20のパレットベース符号化ユニット122またはビデオデコーダ30のパレットベース復号ユニット165)は、予測インデックス値がパレットの中の最初のエントリになるように(すなわち、特定のエントリの値がパレットの中の他のエントリの値未満になるように)パレットの中のエントリを並べ替え得る。たとえば、予測されたインデックス(MPM)がインデックス2である図7に示すように、パレットベースコーディングユニットは、インデックス2に関連付けられた値をインデックス0へ移動させるとともに、予測されたインデックスよりも小さいエントリのインデックスを1だけインクリメントして(すなわち、値Aをインデックス0からインデックス1へ移動させ、値Bをインデックス1からインデックス2へ移動させて)並べ替えられたパレット704を生成してよい。したがって、パレットベースコーディングユニットが予測インデックス値を可変長コードを使用してコーディングするとき、予測インデックス値は、最短の可能なコード長を有する。このようにして、パレットベースコーディングユニットは、パレットインデックスを表すために使用されるデータの量を低減し得る。
【０２１６】
いくつかの例では、パレットベースコーディングユニットは、予測インデックス値がパレットの中の最初のエントリになるようにパレットの中のエントリを常に並べ替えてよい。いくつかの例では、パレットベースコーディングユニットは、予測インデックス値がパレットの中の最初のエントリになるようにパレットの中のエントリをまったく並べ替えなくてよい。いくつかの例では、パレットベースコーディングユニットは、いくつかの条件下では、予測インデックス値がパレットの中の最初のエントリとなるようにパレットの中のエントリを並べ替えてよい。一例として、パレットベースコーディングユニットは、パレット(または、調整済みパレット)の中のエントリの数が、2値化を選択するためにパレットベースコーディングユニットによって使用され得る上記で説明した既定のしきい値などのしきい値未満である場合、予測インデックス値がパレットの中の最初のエントリとなるようにパレットの中のエントリを並べ替えてよい。たとえば、しきい値が7でありパレットの中のエントリの数が6である場合、パレットベースコーディングユニットは、予測インデックス値がパレットの中の最初のエントリになるようにパレットの中のエントリを並べ替えてよい。別の例として、パレットベースコーディングユニットは、パレット(または、調整済みパレット)の中のエントリの数が、2値化を選択するためにパレットベースコーディングユニットによって使用され得る上記で説明した既定のしきい値などのしきい値以上である場合、予測インデックス値がパレットの中の最初のエントリになるようにパレットの中のエントリを並べ替えてよい。たとえば、しきい値が4でありパレットの中のエントリの数が6である場合、パレットベースコーディングユニットは、予測インデックス値がパレットの中の最初のエントリになるようにパレットの中のエントリを並べ替えてよい。
【０２１７】
図8は、本開示の技法に一致する、ピクセルのブロック用のパレット内でインデックスを並べ替えるとともに、そうしたパレットからインデックスを除去するための例示的な動作を示す概念図である。図8の技法は、図1および図2のビデオエンコーダ20または図1および図3のビデオデコーダ30などの、ビデオコーダによって実行され得る。
【０２１８】
図8は、図6の調整済みパレット604などの調整済みパレットを表し得るパレット802を含む。パレット802は、カラー値にそれぞれ対応する6つのエントリを含み得る。図8に示すように、エントリインデックス0は、カラー値Aに対応し得、エントリインデックス1は、カラー値Bに対応し得、エントリインデックス2は、カラー値Cに対応し得、エントリインデックス3は、カラー値Dに対応し得、エントリインデックス4は、カラー値Fに対応し得、エントリインデックス5は、カラー値Gに対応し得る。
【０２１９】
上記で説明したように、ビデオコーダのパレットベースコーディングユニット(たとえば、ビデオエンコーダ20のパレットベース符号化ユニット122またはビデオデコーダ30のパレットベース復号ユニット165)は、予測インデックス値がパレットの中の最初のエントリになるように(すなわち、特定のエントリの値がパレットの中の他のエントリの値未満になるように)パレットの中のエントリを並べ替え得る。たとえば、予測されたインデックス(MPM)がインデックス2である図8に示すように、パレットベースコーディングユニットは、インデックス2に関連付けられた値をインデックス0へ移動させるとともに、予測されたインデックスよりも小さいエントリのインデックスを1だけインクリメントして(すなわち、値Aをインデックス0からインデックス1へ移動させ、値Bをインデックス1からインデックス2へ移動させて)並べ替えられたパレット804を生成してよい。
【０２２０】
また上記で説明したように、パレットインデックス値が予測インデックスに等しくない場合、パレットベースコーディングユニットは、現在ピクセル用のパレットから予測インデックスを除去することによってプルーニング動作を実行し得、現在ピクセルに対するパレットインデックス値を残りの可能なインデックスの間でコーディングし得る。予測インデックスがインデックス0に並べ替えられる図8の例では、現在ピクセルに対するパレットインデックス値が実際には2である(すなわち、現在ピクセルのカラーが値Bである)場合、パレットベースコーディングユニットは、予測インデックスを除去し得、並べ替えられた調整済みパレット806を生成するように残りのインデックスをデクリメントし得る。
【０２２１】
図9は、本開示の技法に一致する、ビデオデータのブロックのピクセルに対するインデックスを符号化するための例示的なプロセスを示すフローチャートである。図9の技法は、図1および図2に示すビデオエンコーダ20などの、ビデオコーダによって実行され得る。説明のために、図9の技法が図1および図2のビデオエンコーダ20のコンテキスト内で説明されるが、ビデオエンコーダ20の構成と異なる構成を有するビデオコーダが図9の技法を実行してよい。
【０２２２】
上記で説明したように、ビデオエンコーダ20は、ビデオデータの現在ブロックを符号化するためにパレットベース符号化を実行し得る。たとえば、ビデオエンコーダ20のパレットベース符号化ユニット122は、それぞれのカラー値にそれぞれ対応する複数のエントリを有するパレットを決定し得(902)、ビデオデータの現在ブロックのピクセルとパレットの中のエントリのインデックスとの間のマッピングを生成し得、マップのインデックスを符号化し得る。パレットベース符号化ユニット122は、マップのインデックス値をコーディングするためにいくつかの異なる技法を使用し得、時にはマップのインデックス値をマップの他のインデックスに対してコーディングすることがある。たとえば、パレットベース符号化ユニット122は、マップのインデックス値をマップの他のインデックスに対してコーディングするために、インデックスモード、上コピーモード、および遷移モードを使用し得る。いくつかの例では、インデックス値をコーディングしながら、パレットベース符号化ユニット122は、インデックス値の間での遷移に関する情報を記憶し得る。たとえば、パレットベース符号化ユニット122は、所与のインデックス値の最後の出現に対する後続のインデックス値を含む、遷移テーブルと呼ばれるテーブルを保有し得る。パレットベース符号化ユニット122は、現在ピクセルに対する予測インデックスを決定し得る(904)。たとえば、パレットベース符号化ユニット122は、ビデオデータの現在ブロックの現在ピクセルのカラー値に対応すると予測される、パレットの中の特定のエントリを決定し得る。いくつかの例では、パレットベース符号化ユニット122は、遷移テーブルに基づいて予測インデックスを決定し得る。
【０２２３】
本開示の1つまたは複数の技法によれば、単一の2値化を使用してインデックス値を符号化するのではなく、パレットベース符号化ユニット122は、現在のインデックス値を符号化するために使用すべき2値化を、複数の2値化の中から選択し得る。いくつかの例では、パレットベース符号化ユニット122は、パレットのサイズに基づいて2値化を選択し得る。たとえば、パレットベース符号化ユニット122は、パレットのサイズに基づいて変数を決定し得る(906)。いくつかの例では、変数は、パレットのサイズであり得る。いくつかの例では、変数は、図6を参照しながら上記で説明したプルーニング動作などの、1つまたは複数の調整が実行された後のパレットのサイズであり得る。
【０２２４】
パレットベース符号化ユニット122は、決定された変数がしきい値未満であるかどうかを決定し得る(908)。変数がしきい値未満であると決定される場合(908の「Yes」分岐)、パレットベース符号化ユニット122は、複数の2値化のうちの第2の2値化を使用して現在のインデックス値を符号化し得る。たとえば、パレットベース符号化ユニット122は、可変長コードを使用して現在のインデックス値を符号化し得る(910)。いくつかの例では、パレットベース符号化ユニット122は、現在ピクセルに対する予測インデックスに対応するエントリがパレットの中で最初になるように、現在ピクセル用のパレットのインデックスを並べ替え得る。
【０２２５】
変数がしきい値未満でないと決定される場合(908の「No」分岐)、パレットベース符号化ユニット122は、複数の2値化のうちの第1の2値化を使用して現在のインデックス値を符号化し得る。たとえば、パレットベース符号化ユニット122は、現在のインデックスが予測インデックスに等しいかどうかを決定し得る(912)。現在のインデックスが予測インデックスに等しい場合(912の「Yes」分岐)、パレットベース符号化ユニット122は、インデックスが予測インデックスに等しいことを示すフラグを符号化し得る(たとえば、MPM_pred_flag=1)(914)。現在のインデックスが予測インデックスに等しくない場合(912の「No」分岐)、パレットベース符号化ユニット122は、インデックスが予測インデックスに等しくないことを示すフラグを符号化し得(たとえば、MPM_pred_flag=0)(916)、可変長コードを使用して現在のインデックス値を符号化し得る(918)。いくつかの例では、現在のインデックスが予測インデックスに等しくない場合、パレットベース符号化ユニット122は、現在ピクセル用のパレットから予測インデックスを除去し得、可変長コードを使用して、現在のインデックス値を残りのエントリの間で符号化し得る。
【０２２６】
図10は、本開示の技法に一致する、ビデオデータのブロックのピクセルに対するインデックスを復号するための例示的なプロセスを示すフローチャートである。図10の技法は、図1および図3に示すビデオデコーダ30などの、ビデオコーダによって実行され得る。説明のために、図10の技法が図1および図3のビデオデコーダ30のコンテキスト内で説明されるが、ビデオデコーダ30の構成と異なる構成を有するビデオコーダが図10の技法を実行してよい。
【０２２７】
上記で説明したように、ビデオデコーダ30は、ビデオデータの現在ブロックを復号するためにパレットベース復号を実行し得る。たとえば、ビデオデコーダ30のパレットベース復号ユニット165は、それぞれのカラー値にそれぞれ対応する複数のエントリを有するパレットを決定し得(1002)、ビデオデータの現在ブロックのピクセルとパレットの中のエントリのインデックスとの間のマッピングのインデックスを復号し得る。パレットベース復号ユニット165は、マップのインデックス値をコーディングするためにいくつかの異なる技法を使用し得、時にはマップのインデックス値をマップの他のインデックスに対してコーディングすることがある。たとえば、パレットベース復号ユニット165は、マップのインデックス値をマップの他のインデックスに対してコーディングするために、インデックスモード、上コピーモード、および遷移モードを使用し得る。いくつかの例では、インデックス値をコーディングしながら、パレットベース復号ユニット165は、インデックス値の間での遷移に関する情報を記憶し得る。たとえば、パレットベース復号ユニット165は、所与のインデックス値の最後の出現に対する後続のインデックス値を含む、遷移テーブルと呼ばれるテーブルを保有し得る。パレットベース復号ユニット165は、現在ピクセルに対する予測インデックスを決定し得る(1004)。たとえば、パレットベース復号ユニット165は、ビデオデータの現在ブロックの現在ピクセルのカラー値に対応すると予測される、パレットの中の特定のエントリを決定し得る。いくつかの例では、パレットベース復号ユニット165は、遷移テーブルに基づいて予測インデックスを決定し得る。
【０２２８】
本開示の1つまたは複数の技法によれば、単一の2値化を使用してインデックス値を復号するのではなく、パレットベース復号ユニット165は、現在のインデックス値を復号するために使用すべき2値化を、複数の2値化の中から選択し得る。いくつかの例では、パレットベース復号ユニット165は、パレットのサイズに基づいて2値化を選択し得る。たとえば、パレットベース復号ユニット165は、パレットのサイズに基づいて変数を決定し得る(1006)。いくつかの例では、変数は、パレットのサイズであり得る。いくつかの例では、変数は、図6を参照しながら上記で説明したプルーニング動作などの、1つまたは複数の調整が実行された後のパレットのサイズであり得る。
【０２２９】
パレットベース復号ユニット165は、決定された変数がしきい値未満であるかどうかを決定し得る(1008)。変数がしきい値未満であると決定される場合(1008の「Yes」分岐)、パレットベース復号ユニット165は、複数の2値化のうちの第2の2値化を使用して現在のインデックス値を復号し得る。たとえば、パレットベース復号ユニット165は、可変長コードを使用して現在のインデックス値を復号し得る(1010)。いくつかの例では、パレットベース復号ユニット165は、現在ピクセルに対する予測インデックスに対応するエントリがパレットの中で最初になるように、現在ピクセル用のパレットのインデックスを並べ替え得る。
【０２３０】
変数がしきい値未満でないと決定される場合(1008の「No」分岐)、パレットベース復号ユニット165は、現在のインデックスが予測インデックスに等しいかどうかを示すフラグ(たとえば、MPM_pred_flag)を復号し得る(1012)。現在のインデックスが予測インデックスに等しいことをフラグが示す場合(たとえば、MPM_pred_flag=1)(1014の「Yes」分岐)、パレットベース復号ユニット165は、現在のインデックスを予測インデックスに等しいものとして復号し得、現在ピクセルのカラーが、予測インデックスに関連するパレットの中のカラーであることを復号し得る(1016)。現在のインデックスが予測インデックスに等しくないことをフラグが示す場合(たとえば、MPM_pred_flag=0)(1014の「No」分岐)、パレットベース復号ユニット165は、可変長コードを使用して現在のインデックス値を復号し得(1018)、現在ピクセルのカラーが、復号されたインデックス値に関連するパレットの中のカラーであると決定し得る。いくつかの例では、現在のインデックスが予測インデックスに等しくない場合、パレットベース復号ユニット165は、現在ピクセル用のパレットから予測インデックスを除去し得、可変長コードを使用して、現在のインデックス値を残りのエントリの間で復号し得る。
【０２３１】
いくつかの例では、パレットベース復号ユニット165は、以下の例示的な技法を使用して、現在のインデックス、すなわちdecPltIndexを復号し得る。パレットベース復号ユニット165は、変数RefをINT_MAXに等しく設定し得、変数maxSymbolを現在ブロックのパレットサイズに等しく設定し得る。パレットベース復号ユニット165は、現在ピクセルに対するパレットインデックス値であり得ない1つまたは複数のエントリを、現在ブロック用のパレットから除去し得る。一例として、左のピクセルが「インデックス」モードである場合、現在ピクセルは左のピクセルインデックスに等しくなり得ず、パレットベース復号ユニット165は、Refを左のピクセルのインデックス値に等しく設定し得、maxSymbolMinus1を(maxSymbol-1)に等しく設定し得る。別の例として、最初でない行/列に現在ピクセルがあり、左のピクセルが「上コピー」モードであり、現在ピクセルの上のピクセルが非エスケープである場合、現在ピクセルのインデックスは上のピクセルのインデックスに等しくなり得ず、パレットベース復号ユニット165は、Refを左のピクセルのインデックス値に等しく設定し得、maxSymbolMinus1を(maxSymbol-1)に等しく設定し得る。
【０２３２】
maxSymbolMinus1がしきい値Thr未満である場合、パレットベース復号ユニット165は、短縮バイナリコードを使用して、maxSymbolMinus1を前提としたシンボルdecPltSymbolを復号し得る。maxSymbolMinus1がThr以上である場合、パレットベース復号ユニット165は、フラグと短縮バイナリコードとの組合せを使用してdecPltSymbolを復号し得る。たとえば、パレットベース復号ユニット165は、インデックス予測フラグMPM_pred_flagを復号し得、decPltSymbolをMPM_pred_flagに等しく設定し得る。MPM_pred_flagが1に等しい場合、パレットベース復号ユニット165は、maxSymbolMinus2を(maxSymbolMinus1-1)に等しく設定し得、短縮バイナリコードを使用して、maxSymbolMinus2を前提としたdecPltSymbolRefを復号し得、decPltSymbolを(decPltSymbolRef+1)に等しく設定し得る。
【０２３３】
decPltSymbolが0に等しい場合、パレットベース復号ユニット165は、decPltIndexをMPM(すなわち、現在ピクセルに対する予測インデックス)に等しく設定し得る。decPltSymbolが0に等しくない場合、パレットベース復号ユニット165は、以下の手順を適用し得る。すなわち、RefがINT_MAXに等しくなくMPMがRefよりも大きい場合、パレットベース復号ユニット165は、bMPMLargerThanRefフラグを1に等しく設定し得、そうでない場合、パレットベース復号ユニット165は、bMPMLargerThanRefフラグを0に等しく設定し得る。以下の2つの条件、すなわち、1)decPltSymbolがMPMよりも小さいこと、または2)bMPMLargerThanRefが0に等しくdecPltSymbolがMPMに等しいこと、のいずれかが真である場合、パレットベース復号ユニット165は、decPltSymbolを(decPltSymbol-1)に等しく設定し得る。RefがINT_MAXに等しくなくdecPltSymbolがRef以上である場合、パレットベース復号ユニット165は、decPltSymbolを(decPltSymbol+1)に等しく設定し得る。最後に、パレットベース復号ユニット165は、現在パレットのインデックスdecPltIndexをdecPltSymbolに等しく設定し得る。
【０２３４】
例に応じて、本明細書で説明する技法のいずれかのいくつかの行為またはイベントは異なる順序で実行されてもよく、一緒に追加され、統合され、または省略されてもよい(たとえば、説明される行為またはイベントのすべてが技法の実施のために必要とは限らない)ことを認識されたい。その上、いくつかの例では、行為またはイベントは、順次的にではなく、たとえばマルチスレッド処理、割り込み処理、または複数のプロセッサを通じて同時に実行され得る。加えて、明快のために本開示のいくつかの態様は単一のモジュールまたはユニットによって実行されるものとして説明されるが、本開示の技法がビデオコーダに関連するユニットまたはモジュールの組合せによって実行され得ることを理解されたい。
【０２３５】
例示のために、本開示のいくつかの態様は開発中のHEVC規格に関して説明された。しかしながら、本開示で説明する技法は、まだ開発されていない他の標準的なまたは独自のビデオコーディングプロセスを含む、他のビデオコーディングプロセスにとって有用であり得る。
【０２３６】
上記で説明したように、ビデオコーダは、インデックス値をコーディングするために短縮バイナリコーディングを使用し得る。短縮バイナリコーディングは、通常、有限のアルファベットを伴う均一な確率分布に対して使用されるが、現在のHEVCでは使用されていない。短縮バイナリコーディングは、数値nとしての合計サイズを有するアルファベットによってパラメータ化される。nが2のべき乗でないとき、短縮バイナリコーディングはバイナリ符号化のいくらか一般的な形態である。
【０２３７】
nが2のべき乗である場合、0≦x<nに対してコーディングされる値は、xに対する長さlog2(n)の単純なバイナリコードである。そうでない場合、2k≦n<2k+1となるようにk=floor(log2(n))とし、u=2k+1-nとする。
【０２３８】
短縮バイナリコーディングは、最初のu個のシンボルを、長さkのコードワードに割り当て、次いで、残りのn-u個のシンボルを、長さk+1のコードワードの最後のn-u個に割り当てる。Table 7(表7)はn=5についての一例である。
【０２３９】
【表７】
2017535161.tif 000009
【０２４０】
どの2値化方法かにかかわらず、各ビンは、通常のコンテキストコーディングモードまたはバイパスモードのいずれかで処理され得る。全体の符号化(復号)プロセスのスピードアップを可能にするために選択されたビンに対して、バイパスモードが選択され得る。
【０２４１】
本明細書で説明する技法は、ビデオエンコーダ20(図1および図2)および/またはビデオデコーダ30(図1および図3)によって実行されてよく、それらの両方が概してビデオコーダと呼ばれることがある。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指すことがある。
【０２４２】
技法の様々な態様の特定の組合せが上記で説明されているが、これらの組合せは、本開示で説明する技法の例を示すために提供されているにすぎない。したがって、本開示の技法は、これらの例示的な組合せに限定されるべきでなく、本開示で説明する技法の様々な態様の考えられるいかなる組合せも包含し得る。
【０２４３】
1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体に記憶またはコンピュータ可読媒体を介して送信されてよく、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に相当する、コンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に相当し得る。データ記憶媒体は、本開示で説明した技法の実施のための命令、コード、および/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品がコンピュータ可読媒体を含んでもよい。
【０２４４】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または命令またはデータ構造の形式の所望のプログラムコードを記憶するために使用され得るとともに、コンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、いかなる接続も厳密にはコンピュータ可読媒体と呼ばれる。たとえば、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから命令が送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク（登録商標）、光ディスク、デジタル多用途ディスク(DVD)、フロッピーディスク、およびBlu-ray（登録商標）ディスクを含み、ディスク(disk)は通常、データを磁気的に再生し、ディスク(disc)はレーザーを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲に含まれるべきである。
【０２４５】
命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積されたもしくは個別の論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書で説明した技法の実装に適した任意の他の構造のいずれかを指すことがある。加えて、いくつかの態様では、本明細書で説明した機能は、専用のハードウェア内で、ならびに/または符号化および復号のために構成された、もしくは複合コーデックに組み込まれたソフトウェアモジュール内で提供され得る。また、技法は、1つまたは複数の回路または論理要素において完全に実施され得る。
【０２４６】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実施され得る。様々な構成要素、モジュール、またはユニットは、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために本開示で説明されているが、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。むしろ、上記で説明したように、様々なユニットは、コーデックハードウェアユニットにおいて結合されてよく、または適切なソフトウェアおよび/もしくはファームウェアとともに、上記で説明したような1つもしくは複数のプロセッサを含む相互動作可能なハードウェアユニットの集合によって提供されてもよい。
【０２４７】
様々な例が説明された。これらおよび他の例は、以下の特許請求の範囲内に入る。
【符号の説明】
【０２４８】
10  ビデオコーディングシステム
12  ソースデバイス
14  宛先デバイス
16  リンク
18  ビデオソース
19  ストレージデバイス
20  ビデオエンコーダ
22  出力インターフェース
28  入力インターフェース
30  ビデオデコーダ
32  ディスプレイデバイス
100  予測処理ユニット
102  残差生成ユニット
104  変換処理ユニット
106  量子化ユニット
108  逆量子化ユニット
110  逆変換処理ユニット
112  再構成ユニット
114  フィルタユニット
116  復号ピクチャバッファ
118  エントロピー符号化ユニット
120  インター予測処理ユニット
122  パレットベース符号化ユニット
126  イントラ予測処理ユニット
150  エントロピー復号ユニット
152  予測処理ユニット
154  逆量子化ユニット
156  逆変換処理ユニット
158  再構成ユニット
160  フィルタユニット
162  復号ピクチャバッファ
164  動き補償ユニット
165  パレットベース復号ユニット
166  イントラ予測処理ユニット
178  ピクチャ
180  第1のコーディングユニット
184  第1のパレット
188  第2のコーディングユニット
192  第2のパレット
202〜206  エントリ
208〜214  エントリ
240  マップ
244  パレット
【図１】
2017535161.tif 000010
【図２】
2017535161.tif 000011
【図３】
2017535161.tif 000012
【図４】
2017535161.tif 000013
【図５】
2017535161.tif 000014
【図６】
2017535161.tif 000015
【図７】
2017535161.tif 000016
【図８】
2017535161.tif 000017
【図９】
2017535161.tif 000018
【図１０】
2017535161.tif 000019
【手続補正書】
【提出日】平成29年4月10日(2017.4.10)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ビデオデータをコーディングする方法であって、前記方法が、
ビデオコーダによって、ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定するステップと、
前記ビデオコーダによって、ビデオデータの前記現在ブロックの現在ピクセルのカラー値に対応すると予測される、前記パレットの中の特定のエントリを決定するステップと、
前記ビデオコーダによって、複数のパレットインデックス2値化の中から2値化を選択するステップであって、前記2値化を選択するステップが、
前記パレットのサイズに基づいて変数を決定するステップ、および
前記変数が既定のしきい値を満たすかどうかに基づいて、前記複数のパレットインデックス2値化の中から前記2値化を選択するステップを備える、ステップと、
前記ビデオコーダによって、前記選択された2値化を使用して、前記パレットの中のどのエントリがビデオデータの前記現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すパレットインデックスをコーディングするステップとを備え、前記複数のパレットインデックス2値化のうちの第1の2値化を使用して前記パレットインデックスをコーディングするステップは、前記パレットインデックスが前記特定のエントリに等しいかどうかを示すシンタックス要素をコーディングするステップを備え、前記複数のパレットインデックス2値化のうちの第2の2値化を使用して前記パレットインデックスをコーディングするステップは、前記シンタックス要素をコーディングせずに、可変長コードを使用して前記パレットインデックスをコーディングするステップを備える、
方法。
【請求項２】
前記第1の2値化を使用して前記パレットインデックスをコーディングするステップは、
前記パレットインデックスが前記特定のエントリに等しくない場合、前記可変長コードを使用して前記パレットインデックスをコーディングするステップをさらに備える、
請求項1に記載の方法。
【請求項３】
前記現在ブロックがエスケープピクセルを含むかどうかと、走査順序において最後にコーディングされた、前記現在ピクセルの隣接ピクセルのコーディングモードと、前記現在ピクセルが前記走査順序での最初の行にあるかどうかとに基づいて、前記変数がさらに決定される、請求項1に記載の方法。
【請求項４】
前記既定のしきい値は、スライスレベル、ピクチャレベル、またはシーケンスレベルのうちの1つまたは複数においてシグナリングされるか、あるいはエンコーダとデコーダの両方によって知られている定数である、請求項1に記載の方法。
【請求項５】
前記変数が前記しきい値を満たすかどうかに基づいて前記複数のパレットインデックス2値化の中から前記2値化を選択するステップは、
前記変数が前記既定のしきい値以上である場合、前記複数のパレットインデックス2値化の中から前記第1の2値化を選択するステップと、
前記変数が前記既定のしきい値未満である場合、前記複数のパレットインデックス2値化の中から前記第2の2値化を選択するステップとを備える、
請求項1に記載の方法。
【請求項６】
前記複数のパレットインデックス2値化の中から前記2値化を選択するステップが、
ビデオデータの前記現在ブロックに対して、前記選択された2値化を示すシンタックス要素をコーディングするステップを備える、
請求項1に記載の方法。
【請求項７】
前記特定のエントリの値が前記パレットの中の他のエントリの値未満になるように前記パレットの中の前記エントリを並べ替えるステップ
をさらに備える、請求項1に記載の方法。
【請求項８】
ビデオデータの前記現在ブロックに対して、前記現在ブロックにとって遷移モードが有効化されているかどうかを示すシンタックス要素をコーディングするステップ
をさらに備える、請求項1に記載の方法。
【請求項９】
前記ビデオコーダによって、前記現在ブロックのそれぞれのピクセルに対して、複数のモードのうちの、前記それぞれのピクセルに対する前記カラー値を予測するために使用されるモードを示すそれぞれのシンタックス要素をコーディングするステップをさらに備え、前記複数のモードが、インデックスモード、遷移コピーモード、および上コピーモードを含み、前記インデックスモードが使用されるときの前記シンタックス要素の2値化と、前記遷移モードが使用されるときの前記シンタックス要素の2値化とを、単一のビットが区別する、
請求項1に記載の方法。
【請求項１０】
前記パレットを決定するステップは、ビデオデータの前記現在ブロック用の前記パレットがビデオデータの以前にコーディングされたブロック用のパレットから予測されるかどうかを決定するステップを備え、前記現在ピクセルの前記カラー値に対応すると予測される、前記パレットの中の前記特定のエントリが、前記現在ブロック用の遷移テーブルに基づいて決定され、前記方法は、
前記現在ブロック用の前記パレットがビデオデータの以前にコーディングされたブロック用の前記パレットから予測されるとの決定に応答して、前記現在ブロック用の前記遷移テーブルをビデオデータの前記以前にコーディングされたブロック用の遷移テーブルから予測するステップをさらに備える、
請求項1に記載の方法。
【請求項１１】
前記現在ピクセルの前記カラー値に対応すると予測される、前記パレットの中の前記特定のエントリが、前記現在ブロック用の遷移テーブルに基づいて決定され、前記方法は、
前記現在ブロック用の前記遷移テーブルがビデオデータの以前にコーディングされたブロック用の遷移テーブルから継承されるかどうかを示すシンタックス要素をコーディングするステップをさらに備える、
請求項1に記載の方法。
【請求項１２】
前記方法がワイヤレス通信デバイス上で実行可能であり、前記デバイスが、
ビデオデータを記憶するように構成されたメモリと、
前記メモリに記憶された前記ビデオデータを処理するための命令を実行するように構成されたプロセッサとを備え、前記デバイスが、
前記コーディングされたパレットインデックスを送信するように構成された送信機、および
前記コーディングされたパレットインデックスを受信するように構成された受信機
のうちの1つまたは両方をさらに備える、
請求項1に記載の方法。
【請求項１３】
前記ワイヤレス通信デバイスがセルラー電話であり、前記送信機および/または前記受信機が、前記コーディングされたパレットインデックスをセルラー通信規格に従って変調するように構成される、請求項12に記載の方法。
【請求項１４】
ビデオコーディングデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
1つまたは複数のプロセッサとを備え、前記1つまたは複数のプロセッサは、
ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定することと、
ビデオデータの前記現在ブロックの現在ピクセルのカラー値に対応すると予測される、前記パレットの中の特定のエントリを決定することと、
複数のパレットインデックス2値化の中から2値化を選択することであって、前記複数のパレットインデックス2値化の中から前記2値化を選択するために、前記1つまたは複数のプロセッサが、
前記パレットのサイズに基づいて変数を決定し、
前記変数が既定のしきい値を満たすかどうかに基づいて、前記複数のパレットインデックス2値化の中から前記2値化を選択するように構成されることと、
前記選択された2値化を使用して、前記パレットの中のどのエントリがビデオデータの前記現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すパレットインデックスをコーディングすることとを行うように構成され、前記複数のパレットインデックス2値化のうちの第1の2値化を使用して前記パレットインデックスをコーディングするために、前記1つまたは複数のプロセッサは、前記パレットインデックスが前記特定のエントリに等しいかどうかを示すシンタックス要素をコーディングするように構成され、前記複数のパレットインデックス2値化のうちの第2の2値化を使用して前記パレットインデックスをコーディングするために、前記1つまたは複数のプロセッサは、前記シンタックス要素をコーディングせずに、可変長コードを使用して前記パレットインデックスをコーディングするように構成される、
ビデオコーディングデバイス。
【請求項１５】
前記第1の2値化を使用して前記パレットインデックスをコーディングするために、前記1つまたは複数のプロセッサは、
前記パレットインデックスが前記特定のエントリに等しくない場合、前記可変長コードを使用して前記パレットインデックスをコーディングするようにさらに構成される、
請求項14に記載のビデオコーディングデバイス。
【請求項１６】
前記現在ブロックがエスケープピクセルを含むかどうかと、走査順序において最後にコーディングされた、前記現在ピクセルの隣接ピクセルのコーディングモードと、前記現在ピクセルが前記走査順序での最初の行にあるかどうかとに基づいて、前記変数がさらに決定される、請求項14に記載のビデオコーディングデバイス。
【請求項１７】
前記既定のしきい値は、スライスレベル、ピクチャレベル、またはシーケンスレベルのうちの1つまたは複数においてシグナリングされるか、あるいはエンコーダとデコーダの両方によって知られている定数である、請求項14に記載のビデオコーディングデバイス。
【請求項１８】
前記変数が前記しきい値を満たすかどうかに基づいて前記複数のパレットインデックス2値化の中から前記2値化を選択するために、前記1つまたは複数のプロセッサは、
前記変数が前記既定のしきい値以上である場合、前記複数のパレットインデックス2値化の中から前記第1の2値化を選択し、
前記変数が前記既定のしきい値未満である場合、前記複数のパレットインデックス2値化の中から前記第2の2値化を選択するように構成される、
請求項14に記載のビデオコーディングデバイス。
【請求項１９】
前記複数のパレットインデックス2値化の中から前記2値化を選択するために、前記1つまたは複数のプロセッサは、
ビデオデータの前記現在ブロックに対して、前記選択された2値化を示すシンタックス要素をコーディングするように構成される、
請求項14に記載のビデオコーディングデバイス。
【請求項２０】
前記1つまたは複数のプロセッサは、
前記特定のエントリの値が前記パレットの中の他のエントリの値未満になるように前記パレットの中の前記エントリを並べ替えるようにさらに構成される、
請求項14に記載のビデオコーディングデバイス。
【請求項２１】
前記1つまたは複数のプロセッサは、
ビデオデータの前記現在ブロックに対して、前記現在ブロックにとって遷移モードが有効化されているかどうかを示すシンタックス要素をコーディングするようにさらに構成される、
請求項14に記載のビデオコーディングデバイス。
【請求項２２】
前記1つまたは複数のプロセッサは、
ビデオコーダによって、前記現在ブロックのそれぞれのピクセルに対して、複数のモードのうちの、前記それぞれのピクセルに対する前記カラー値を予測するために使用されるモードを示すそれぞれのシンタックス要素をコーディングするようにさらに構成され、前記複数のモードが、インデックスモード、遷移コピーモード、および上コピーモードを含み、前記インデックスモードが使用されるときの前記シンタックス要素の2値化と、前記遷移モードが使用されるときの前記シンタックス要素の2値化とを、単一のビットが区別する、
請求項14に記載のビデオコーディングデバイス。
【請求項２３】
前記パレットを決定するために、前記1つまたは複数のプロセッサは、ビデオデータの前記現在ブロック用の前記パレットがビデオデータの以前にコーディングされたブロック用のパレットから予測されるかどうかを決定するように構成され、前記現在ピクセルの前記カラー値に対応すると予測される、前記パレットの中の前記特定のエントリが、前記現在ブロック用の遷移テーブルに基づいて決定され、前記1つまたは複数のプロセッサは、
前記現在ブロック用の前記パレットがビデオデータの以前にコーディングされたブロック用の前記パレットから予測されるとの決定に応答して、前記現在ブロック用の前記遷移テーブルをビデオデータの前記以前にコーディングされたブロック用の遷移テーブルから予測するようにさらに構成される、
請求項14に記載のビデオコーディングデバイス。
【請求項２４】
前記現在ピクセルの前記カラー値に対応すると予測される、前記パレットの中の前記特定のエントリが、前記現在ブロック用の遷移テーブルに基づいて決定され、前記1つまたは複数のプロセッサは、
前記現在ブロック用の前記遷移テーブルがビデオデータの以前にコーディングされたブロック用の遷移テーブルから継承されるかどうかを示すシンタックス要素をコーディングするようにさらに構成される、
請求項14に記載のビデオコーディングデバイス。
【請求項２５】
前記ビデオコーディングデバイスがワイヤレス通信デバイスであり、
前記コーディングされたパレットインデックスを送信するように構成された送信機、および
前記コーディングされたパレットインデックスを受信するように構成された受信機
のうちの1つまたは両方をさらに備える、
請求項14に記載のビデオコーディングデバイス。
【請求項２６】
前記ワイヤレス通信デバイスがセルラー電話であり、前記送信機および/または前記受信機が、前記コーディングされたパレットインデックスをセルラー通信規格に従って変調するように構成される、請求項25に記載のビデオコーディングデバイス。
【請求項２７】
ビデオコーディングデバイスであって、
ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定するための手段と、
ビデオデータの前記現在ブロックの現在ピクセルのカラー値に対応すると予測される、前記パレットの中の特定のエントリを決定するための手段と、
複数のパレットインデックス2値化の中から2値化を選択するための手段であって、前記2値化を選択するための前記手段が、
前記パレットのサイズに基づいて変数を決定するための手段、および
前記変数が既定のしきい値を満たすかどうかに基づいて、前記複数のパレットインデックス2値化の中から前記2値化を選択するための手段を備える、手段と、
前記選択された2値化を使用して、前記パレットの中のどのエントリがビデオデータの前記現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すパレットインデックスをコーディングするための手段とを備え、前記複数のパレットインデックス2値化のうちの第1の2値化を使用して前記パレットインデックスをコーディングするための前記手段は、前記パレットインデックスが前記特定のエントリに等しいかどうかを示すシンタックス要素をコーディングするための手段を備え、前記複数のパレットインデックス2値化のうちの第2の2値化を使用して前記パレットインデックスをコーディングするための前記手段は、前記シンタックス要素をコーディングせずに、可変長コードを使用して前記パレットインデックスをコーディングするための手段を備える、
ビデオコーディングデバイス。
【請求項２８】
命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、実行されたとき、ビデオコーディングデバイスの1つまたは複数のプロセッサに、
ビデオデータの現在ブロックに対して、それぞれのカラー値にそれぞれ対応する複数のエントリを含むパレットを決定することと、
ビデオデータの前記現在ブロックの現在ピクセルのカラー値に対応すると予測される、前記パレットの中の特定のエントリを決定することと、
複数のパレットインデックス2値化の中から2値化を選択することであって、前記1つまたは複数のプロセッサに前記2値化を選択される前記命令が、前記1つまたは複数のプロセッサに、
前記パレットのサイズに基づいて変数を決定させ、
前記変数が既定のしきい値を満たすかどうかに基づいて、前記複数のパレットインデックス2値化の中から前記2値化を選択させる命令を備えることと、
前記選択された2値化を使用して、前記パレットの中のどのエントリがビデオデータの前記現在ブロックの現在ピクセルに対するカラー値に対応するのかを示すパレットインデックスをコーディングすることとをさせ、前記1つまたは複数のプロセッサに前記複数のパレットインデックス2値化のうちの第1の2値化を使用して前記パレットインデックスをコーディングさせる前記命令が、前記1つまたは複数のプロセッサに、前記パレットインデックスが前記特定のエントリに等しいかどうかを示すシンタックス要素をコーディングさせる命令を備え、前記1つまたは複数のプロセッサに前記複数のパレットインデックス2値化のうちの第2の2値化を使用して前記パレットインデックスをコーディングさせる前記命令が、前記1つまたは複数のプロセッサに、前記シンタックス要素をコーディングせずに、可変長コードを使用して前記パレットインデックスをコーディングさせる命令を備える、
コンピュータ可読記憶媒体。
【国際調査報告】
2017535161.tif 000020
2017535161.tif 000021
2017535161.tif 000022
2017535161.tif 000023
2017535161.tif 000024