本出願は、2014年7月7日に出願された米国仮出願番号第62/021,289号、2014年7月22日に出願された米国仮出願番号第62/027,334号、2014年7月30日に出願された米国仮出願番号第62/030,714号、2014年8月11日に出願された米国仮出願番号第62/035,625号、2014年8月21日に出願された米国仮出願番号第62/040,020号、2014年8月21日に出願された米国仮出願番号第62/040,022号を基礎とする優先権を主張するものであり、その開示内容は参照することにより本明細書に組み入れられる。
本発明は、ビデオデータのパレット符号化に関し、特に、予測器がエスケープ画素に対応するとき、予測器のコピーモードに関連する問題を解決する各種の技術に関するものである。
高効率ビデオ符号化(HEVC)は、近年発展している新しい符号化基準である。高効率ビデオ符号化(HEVC)システムにおいて、H.264/AVCの固定サイズのマクロブロックは、符号化ユニット(CU)というフレキシブルなブロックにより代替される。CU中の画素は、同じ符号化パラメータを共有して、符号化効率を改善する。CUは最大CU(LCU)から始まり、HEVCの符号化ツリーユニット(CTU)とも称される。符号化ユニットの概念に加え、予測単位(PU)の概念もHEVCに導入される。一旦、CU階層ツリーの分割が行われると、各リーフCUは、予測タイプ、および、PU分割にしたがって、さらに、1つ以上の予測単位(PU)に分割される。スクリーンコンテント符号化のいくつかの符号化ツールが発展している。本発明に関連するパレット符号化ツールを、以下に簡潔に記載する。
パレット符号化
HEVCスクリーンコンテンツ符号化(SCC)の発展期間中、いくつかの提案が開示されて、パレットベース符号化に取り組んでいる。例えば、パレット予測と共有技術が、JCTVC-N0247 (Guo et al.,“RCE3: Results of Test 3.1 on Palette Mode for Screen Content Coding”, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14th Meeting: Vienna, AT, 25 July - 2 Aug. 2013 Document: JCTVC-N0247)(非特許文献1)およびJCTVC-O0218 (Guo et al.,“Evaluation of Palette Mode Coding on HM-12.0+RExt-4.1”, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Geneva, CH, 23 Oct. - 1 Nov. 2013, Document: JCTVC-O0218)(非特許文献2)で開示される。JCTVC-N0247(非特許文献1)とJCTVC-O0218(非特許文献2)において、各カラーコンポーネントのパレットが構成、および、送信される。パレットが、その左に隣接するCUから予測(または、共有)されて、ビットレートを低下させる。その後、所定ブロック中の全画素が、それらのパレットインデックスを用いて符号化される。JCTVC-N0247 による符号化プロセスの例は以下のようである。
1.パレットの送信: まず、カラーインデックス表 (パレット表とも称される)サイズが、パレット素子(即ち、カラー値)により送信される。
2.画素値の送信: CU中の画素がラスター走査順序で符号化される。1つ以上の画素の各群において、まず、ランベース(run−base)モードのフラグが送信されて、“コピーインデックスモード(copy index mode)”または“コピー上記モード(copy above mode)”が用いられるかどうかを示す。
2.1 “コピーインデックスモード”: このランベースモードにおいて、まず、各自パレットインデックスが、run値を表す各自run値 “palette_run” (例えば、M)によりシグナリングされる。ある文献では、“コピーインデックスモード”は、“インデックス”モードとも称される。本発明において、用語“palette_run”は、“pixel_run”、または、単に “run”とも称される。run値は、合計M個の連続したサンプルが、すべて、runモードを用いて符号化されることを示す。ビットストリーム中でシグナリングされるとき、同じパレットインデックスを有するので、現在の位置、および、以下のM位置に送信されるこれ以上の情報が必要ない。パレットインデックス (例えば、i)も、全ての3カラーコンポーネントにより共有され、それは、YUV 色空間の場合において、再構築された画素値が (Y, U, V) = (paletteY[i], paletteU[i], paletteV[i])であることを意味する。
2.2 “モード”: oコピー上記モードにおいて、各自の値 “palette_run”(例えば、N)が送信されて、現在の画素および以下のN画素において、パレットインデックスが、列中の対応するパレットインデックスと同じであることを示す。
3.剰余の送信: ステージ2で送信されるパレットインデックスが画素値に戻されて、予測として用いられる。HEVC剰余符号化を用いて、剰余情報が送信され、再構築のために、予測に加えられる。
コピーインデックスモード、および、コピー上記モード両方は、この発明において、“コピーモード”と称される。コピーインデックスモードでは、コピーインデックス符号化画素の主要画素のパレットインデックスが送信される。コピーインデックス符号化画素の数も送信される。デコーダ側では、下方の画素の符号化モード(即ち、コピーインデックスモード)を決定した後、主要画素のパレットインデックスの情報、および、コピーインデックス符号化画素の数のみが、コピーインデックス符号化画素の再構築に必要とされる。主要画素に続く画素は、予測器(即ち、左の画素)から“複製”することにより再構築される。画素値は、パレット表を用いて再構築される。コピー上記モードにおいて、上記画素がすでに再構築されているので、送信される必要がある予測器に関連するパレットインデックス(即ち、上記画素)がない。現在の画素は、上記画素から“複製”される。
JCTVC-N0247において、各コンポーネントのパレットが構成、および、送信される。パレットが、その左に隣接するCUから予測(または、共有)されて、ビットレートを低下させる。JCTVC-O0218において、パレットの各構成要素は、トリプレットであり、3カラーコンポーネントの特定の組み合わせを示す。また、CUをまたぐパレットの予測符号化(predictive coding)が除去される。
JCTVC-O0218に類似したもう1つのパレット符号化技術も開示されている。左のCUから全てのパレット表を予測する代わりに、個々のパレットのパレットカラーエントリが上記CUまたは左のCUの正確に対応するパレットカラーエントリから予測される。
画素パレットインデックス値の送信において、予測符号化方法は、JCTVC-O0182 (Guo et al., “AHG8: Major-color-based screen content coding”, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Geneva, CH, 23 Oct. - 1 Nov. 2013, Document: JCTVC-O0182)に開示されたインデックスで用いられる。3つのタイプのラインモード、即ち、水平モード、垂直モード、およびノーマルモードが各インデックスラインの符号化に用いられる。水平モードでは、同じラインの全てのインデックスは、同じ値を有する。その値が上記画素ラインの第1の画素と同じである場合、ラインモードのシグナリングビットのみが送信される。垂直モードでは、現在のインデックスラインが上記インデックスラインと同じであることを示している。従って、ラインモードのシグナリングビットのみが送信される。ノーマルモードでは、ラインのインデックスは、個別に予測される。各インデックスの位置では、左隣接、または上記隣接が予測器として用いられ、予測シンボルがデコーダに送信される。
また、画素は、主要色の画素(パレットカラーを指しているパレットインデックス)およびJCTVC-O0182に基づくエスケープ画素に分類される。主要色の画素において、画素値は、主要なカラーインデックス(即ち、パレットインデックス)およびデコーダ側でパレット表に基づいて再構築される。エスケープ画素では、画素値は、ビットストリーム中でさらにシグナリングされる。
パレット表シグナリング
スクリーンコンテンツ符号化(SCC)基準のリファレンスソフトウェアでは、SCM-2.0 (Joshi et al., Screen content coding test model 2 (SCM 2), Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 18th Meeting: Sapporo, JP, July 2014, Document No.: JCTVC-R1014), 向上したパレットスキームが、JCTVC-R0348 (Onno, et al., Suggested combined software and text for run-based palette mode, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 18th Meeting: Sapporo, JP, July 2014, Document No.: JCTVC-R0348)に整合される。前のパレット符号化CUのパレット表は、現在のパレット表の符号化用に予測器として用いられる。パレット表の符号化では、現在のパレット表は、前の符号化されたパレット表(パレット予測器)のどのパレットカラーを再利用するかを選ぶことによって、または新しいパレットカラーを送信することによってシグナリングされる。現在のパレットサイズは、予測されたパレットサイズ(即ち、numPredPreviousPalette)に送信されたパレットサイズ(即ち、num_signaled_palette_entries)を加えたサイズとしてセットされる。予測されたパレットは、前の再構築されたパレット符号化CUから導出されたパレットである。現在のCUをパレットモードとして符号化するとき、予測されたパレットを用いた予測されていないこれらのパレットカラーは、ビットストリーム(即ち、シグナリングされたエントリ)に直接送信される。
パレット更新の例が以下に示される。この実施例では、現在のCUは、6に等しいパレットサイズを有するパレットモードとして符号化される。6つの主要色の中の3つは、パレット予測器から予測され(numPredPreviousPalette = 3)、もう3つは、ビットストリーム(即ち、シグナリングされたエントリ)に直接送信される。送信された3色は、以下に示される例示的構文を用いてシグナリングされることができる。
num_signaled_palette_entries = 3
for(cIdx=0; cIdx<3; cIdx++ )// signal colors for different components
for(i=0; i<num_signaled_palette_entries; i++ )
palette_entries[cIdx][numPredPreviousPalette+i]
この実施例では、パレットサイズは6つであるため、0〜5のパレットインデックスが用いられ、パレットカラー表にエントリする主要色を示す。3つの予測されたパレットカラーは、インデックス0〜2で表されている。このように、3つの新しいパレットエントリは、インデックス3〜5用に送信される。
SCM−2.0では、ウェーブフロント並列処理(wavefront parallel processing; WPP)が適用されていない場合、パレット予測表は、各スライスの初め、または各タイルの初めで初期化(リセット)される。WPPが適用される場合、最後の符号化パレット表は、各スライスの初め、または各タイルの初めで初期化(リセット)されるだけでなく、各CTU列の初めでも初期化(リセット)される。
パレット予測の符号化
JCTVC-O0218 および JCTVC-N0247では、パレット予測のフラグは、最後に符号化されたパレットCUからパレットを予測するように用いられる。1ビットが各エントリに用いられる。パレットエントリのパレット予測のフラグが1の場合、このパレットは、現在のCU用に再利用される。
JCTVC-R0348では、符号語(codeword)の異なる2値化方法が開示され、各予測されたパレット間のゼロラン(zero−runs)が符号化される。もう1つの実施例が図1に示される。符号語Nは、次のパレットの1である再利用フラグの前にN個のゼロがあることを意味している。例えば、“0”は、次のパレットが再利用されることを意味する(即ち、現在および次の再利用フラグ1の間に0はない)。“1”は、第2の次のパレットが再利用されることを意味する。10のパレットを有するパレット予測表における、ゼロランベースのパレット予測のもう1つの実施例が図1に示される。0、2、3、5、および8に対応するパレット表のパレットエントリは、現在のCUによって再利用される。予測されたパレットのゼロランはそれぞれ{0, 1, 0, 1, 2}である。
2値化方法は、order-K (EG-K code)を有するExponential-Golomb符号、order-K (EG-K code)を有するtruncated Exponential-Golomb符号、またはN-bit Truncated Unary code + EG-K codeであることができる。Kは、0、1、2、または3であることができる。Nは、0、1、2、または3であることができる。
最後に使用されたパレットをシグナリングするために、エンドコード(EC)を符号語内に挿入する方法が、JCTVC-R0228 (Seregin, et al., Non-SCCE3: Run-length coding for palette predictor, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 18th Meeting: Sapporo, JP, July 2014, Document No.: JCTVC-R0228) で開示される。EC以上のゼロランは、1によって増加される。デコーダ側では、復号されたゼロランがECと等しい場合、他に予測されたパレットがないことを意味する。復号されたゼロランがECより大きい場合、実際のゼロランは、復号されたゼロラン引く1である。例えば、ECは、1にセットされることができ、1以上の任意のゼロランは、1によって増加される。従って、図1の実施例において、符号化または復号化された符号語は、図2に示されるように{0, 2, 0, 2, 3, 1}となる。
現存するパレット符号化では、予測器がエスケープ画素のとき、デコーダは問題が発生する可能性がある。例えば、コピー上記モードが選ばれて、上記画素がエスケープ画素である場合、エスケープ画素の下方にある現在の画素は、正確に再構築されない可能性がある。現存する、コピー上記モードに従って、ラン値(run value)のみがシグナリングされる。エスケープインデックスは、上記エスケープ画素の下方にある現在の画素に割り当てられることができる。しかしながら、エスケープ値が送信されないため、上記エスケープ画素の下方にある現在の画素は、再構築されることができない。従って、エスケープ画素である予測器と関連する問題を克服する方法を開発することが必要である。
コピーモードを用いたパレット符号化のエスケープ画素である予測器に関連した問題を克服する方法が開示される。本発明の1つの実施形態に基づいた、コピー上記モードにおける予測器がエスケープ画素である場合、現在のエスケープ画素のエスケープ値は、送信され、予測器と関連したエスケープ画素が送信された画素値を用いて再構築されることができるようになる。エスケープ画素の各コンポーネントの画素値は、送信されることができる。コピー上記モードで予測されている連続した画素の数に対応したラン値は、シグナリング、導出、または推定されることができる。ラン値がシグナリングされた場合、エスケープ画素用にエスケープ値の前にシグナリングされることができる。現在の画素の主要画素の上に配置された上記画素がエスケープ画素の場合、ラン値は、ゼロになるように制限される。現在の符号化モードがコピーインデックスモードに対応し、シグナリングされたインデックスがエスケープインデックスの場合、コピーインデックスモードで予測されている連続した画素の数に対応したラン値は、シグナリング、導出、または推定されることができる。ラン値がシグナリングされた場合、エスケープ画素用にエスケープ値の前にシグナリングされることができる。連続した画素は、エスケープ画素として符号化される。連続したエスケープ画素のパレットインデックスは、エスケープインデックスとして符号化され、エスケープ画素のエスケープ値は送信される。調整された最大パレットインデックス(AdjustedMaxPaletteIndex)は、符号化ユニット(CU)の第1のサンプル以外、最大パレットインデックス引く1に等しくなるように固定される(即ち、MaxPaletteIndex - 1)。対応するデコーダ側の実施形態も開示される。
もう1つの実施形態では、エスケープ画素である予測器と関連した問題は、エンコーダ側に制限をかけることによって解決される。コピー上記モードでは、現在の画素の上方に配置された上記画素がエスケープ画素のとき、コピー上記ランは終了し、コピー上記モードは、現在の画素に使用不可能として指定されるか、またはコピー上記モードに選択されない。従って、エスケープ画素である予測器と関連した問題は生じなくなる。
またもう1つの実施形態では、エスケープ画素である予測器と関連した問題は、エスケープ値、エスケープインデックスとエスケープ値の両方、または予測器がエスケープ画素であるときに、予測器の再構築された画素値を直接コピーすることによって解決される。例えば、コピー上記モードでは、現在の画素の上方に配置された上記画素がエスケープ画素の場合、現在の画素は、エスケープインデックスとエスケープ値、または上記画素の再構築された画素値をコピーすることによって再構築されることができる。
またもう1つの実施形態では、エスケープ画素である予測器と関連した問題は、パレットインデックス0など、所定のパレットインデックスによって予測器と置き換えることによって解決される。例えば、コピー上記モードでは、エスケープ画素である任意の上記画素は、所定のインデックスとして処理される。言い換えれば、現在の画素が所定のインデックスであり、上記画素がエスケープ画素である場合、コピー上記ランは続く。コピーインデックスモードのケースでは、Nの連続した画素がエスケープ画素の場合、主要画素は、パレットインデックス(即ち、エスケープインデックス)および画素値(即ち、エスケープ値)を送信することによって符号化される。全ての以下の画素は所定のインデックスとして符号化される。
0、2、3、5、および8に対応するパレット表のエントリが、現在のCUによって再利用され、予測されたパレットのゼロランはそれぞれ{0, 1, 0, 1, 2}である、例示的なゼロランベースのパレット予測を示している。
“1”に対応するエンドコード(EC)が、再利用フラグの符号化の終了を示すのに用いられ、図1に対応するゼロランが{0, 2, 0, 2, 3, 1}となる、例示的なゼロランベースのパレット予測を示している。
隣接画素のカラー値を表1のカラーインデックス表に基づいたカラーインデックスに置き換えるサンプルを示しており、図3Aの隣接画素値は、図3Bの隣接画素インデックスに置き換えられる。
隣接画素のカラー値を表1のカラーインデックス表に基づいたカラーインデックスに置き換えるサンプルを示しており、図3Aの隣接画素値は、図3Bの隣接画素インデックスに置き換えられる。
隣接画素からのカラーインデックス予測の実施例を示しており、第1の画素のインデックスは、上記隣接画素を予測器として用いて、第1の画素のインデックスが1として復号化される。
前のコピー上記モードと関連した冗長の例を示しており、現在のサンプルは、“?”と示され、上記インデックスは“A”である。
前のコピー上記右モードと関連した冗長の例を示しており、現在のサンプルは、“?”と示され、上記右インデックスは“C”である。
前のコピーインデックスモードと関連した冗長の例を示しており、現在のサンプルは、“?”と示され、左インデックスは“A”である。
本発明の実施形態に基づいて決定された冗長のケースにおける置換インデックス予測器を用いた実施例を示している。
以下の説明は、本発明を実施するベストモードが開示されている。この説明は、本発明の一般原理を例示する目的のためのもので本発明を限定するものではない。本発明の範囲は、添付の請求の範囲を参考にして決定される。
予測モードでの予測器としてのエスケープ画素の課題
JCTVC-O0218、JCTVC-N0247、およびJCTVC-O0182では、いくつかの予測モード、例えば、コピー上記モードおよびコピーインデックスモードは、パレットインデックスマップ符号化でサポートされる。コピーインデックスモードは、ブロック内の画素が左から右へラスタースキャン順序に処理されるとき、左の画素のインデックスがコピーされるため、ときに“copy left mode”とも称される。また、コピーレフトモード(copy left mode)は、この開示では、横断走査順序で前の画素をコピーすることを称することもある。これらのモードでは、カラーインデックスは、予測器、例えば1つ以上の上記サンプルまたは左のサンプルからコピーされる。Screen Content Coding Test Model 2 (SCM-2.0)、JCTVC-O0218に類似したランベースのパレット符号化方法、およびJCTVC-N0247は、整合される。SCM−2.0では、コピー上記モードおよびコピーインデックスモードが用いられる。エスケープサンプルは、runモードの最大パレットサイズと等しいカラーインデックスで符号化される。runモードでは、符号化されたパレットサイズがコピーインデックスモードの最大パレットサイズと等しい場合、各コンポーネント値(例えば、R/G/BコンポーネントまたはY/U/Vコンポーネント)はシグナリングされる。
しかしながら、SCM−2.0では、コピー上記モードが用いられ、上記のサンプルがエスケープサンプルとして符号化された場合、エスケープ値は、シグナリングされない。デコーダはこれらのサンプル値を再構築することができない。この問題を克服するために、各種の方法が以下に開示される。
A.エスケープ値のシグナリングにおけるエンコーダの制約
この実施形態に基づいて、エスケープサンプルまたはエスケープカラーインデックスは、コピーインデックスモードで、または新しいインデックスモードのみで符号化されることができるように、エンコーダの制約が開示される。言い換えれば、このケースにおいて、例えばコピー上記モードなどの他の予測コピーモードは用いられない。従って、コピー上記モードのケースでは、上記画素のエスケープ画素でないエスケープ画素のみがコピー上記モードにおける予測器として用いられることができる。従って、コピー上記モードが用いられた場合、エスケープ値をシグナリングする必要がない。この開示では、サンプルおよび画素は、同じ意味で用いられる。従って、エスケープサンプルは、エスケープ画素とも呼ばれることができる。
B.エスケープサンプルを予測器として使用不可能にする
この実施形態に基づいて、エスケープサンプルまたはエスケープカラーインデックスは、コピーインデックスモードで、または新しいインデックスモードのみで符号化されることができる。言い換えれば、このケースにおいて、例えばコピー上記モードなどの他の予測コピーモードは用いられない。従って、予測コピーモード(例えばコピー上記モード)が用いられた場合、エスケープ値をシグナリングする必要がない。また、コピーモード(例えば、コピー上記モードの上記サンプル)の予測器がエスケープサンプルの場合、コピーモードは、使用可能でなくなる。コピーモードの構文は、除去されることができる。例えば、上記サンプルがエスケープサンプルである場合、現在のサンプル用のコピー上記モードはなくなる。例えば、現在の予測モードは、上記サンプルがエスケープサンプルである場合、コピーインデックスモードとして推定されることができる。もう1つの実施例では、上記サンプルのカラーインデックスは、コピー上記モードが用いられる場合、現在の画素用にコピーされる。上記サンプルがエスケープサンプルである場合、インデックスコピーの工程は、終了する。例えば、コピー上記モードがシグナリングされ、runが5であり、上記第3のサンプルがエスケープサンプルである場合、上記2つのサンプルのみコピーする。実際のrun値は、1と等しい。
C.コピーモードにおいて再構築された画素値の直接コピー
コピーモードでは、値 “palette_run” (例えば、N)が送信、導出、または推定されて、現在の画素および以下のN画素において、画素値がコピーモードで符号化された各位置(例えば、上、左、上部左、Mラインの上部、上部右位置)で再構築された画素値と等しいことを示す。これらの予測コピーモードでエスケープの符号化(例えば、エスケープ値を符号化する)は必要でない。
この方法では、palette_runは、シグナリングされたインデックスがエスケープインデックスと等しくても、コピーインデックスモードに対してシグナリングされることができる。エスケープインデックスのpalette_runが0(例えば、N)より大きい場合、デコーダは、現在のサンプルおよび次のサンプルに再構築された値を充填する。エスケープ値は、palette_runの構文の後、シグナリングされることができる。
D.エスケープサンプル予測器(Escape sample predictor)用のコピーモードにおけるエスケープ値およびインデックスの直接コピー
コピーモードでは、値 “palette_run” (例えば、N)が送信、導出、または推定されて、現在の画素および以下のN画素において、カラーインデックスがコピーモードで符号化された位置で各カラーインデックスと等しいことを示し、カラーインデックスが各コピーモードの位置(例えば、上、左、上部左、Mラインの上部、上部右、など)でカラーインデックスと等しいことを示す。しかしながら、予測器がエスケープサンプルである場合、現在のサンプルは、インデックス(即ち、エスケープインデックス)をコピーするだけでなく、予測器からエスケープ値(例えば、palette_Escape_val)もコピーする。これらの予測コピーモードでエスケープの符号化(例えば、エスケープ値を符号化する)は必要でない。
palette_runは、シグナリングされたインデックスがエスケープインデックスと等しくても、コピーインデックスモードに対してシグナリングされることができる。エスケープインデックスのpalette_runが0(例えば、N)より大きい場合、デコーダは、現在のサンプルおよび次のサンプル用にエスケープ値を充填する。エスケープ値は、palette_runの構文の後、シグナリングされることができる。もう1つの実施例では、エスケープインデックスのpalette_runが0より大きい場合、エスケープ値の(N+1)サンプルはサンプリングされる。
E.エスケープサンプル予測器用のコピーモードにおけるエスケープ値の直接コピー
コピーモードでは、値 “palette_run” (例えば、N)が送信、導出、または推定されて、現在の画素および以下のN画素において、カラーインデックスが各コピーモードの位置(例えば、上、左、上部左、Mラインの上部、上部右、など)でカラーインデックスと等しいことを示す。しかしながら、予測器がエスケープサンプルである場合、現在のサンプルは、予測器からエスケープ値(例えば、palette_Escape_val)をコピーし、現在のインデックスを所定のインデックス(例えば、0)として設定する。これらの予測コピーモードでエスケープの符号化(例えば、エスケープ値を符号化する)は必要でない。
この方法では、palette_runは、シグナリングされたインデックスがエスケープインデックスと等しくても、コピーインデックスモードに対してシグナリングされることができる。エスケープインデックスのpalette_runが0(例えば、N)より大きい場合、第1のサンプルは、エスケープ値で再構築され、余剰のサンプルは、所定のインデックスで再構築される。エスケープ値は、palette_runの構文の後、シグナリングされることができる。
F. エスケープサンプル予測器用の予測コピーモードにおける所定のカラーインデックスとしてエスケープサンプルを処理する
コピーモードでは、値 “palette_run” (例えば、N)が送信、導出、または推定されて、現在の画素および以下のN画素において、カラーインデックスが各コピーモードの位置(例えば、上、左、上部左、Mラインの上部、上部右、など)でカラーインデックスと等しいことを示す。しかしながら、予測器がエスケープサンプルである場合、予測器のカラーインデックスは、本発明の実施形態に基づいて所定のカラーインデックス(例えば、0)として処理される。例えば、コピー上記モードが現在の画素に対してシグナリングされ、予測器(即ち、現在の画素上方の画素)がエスケープ画素である場合、予測器は、所定のインデックスとして処理される。従って、現在の画素が所定のインデックスと等しい場合、コピー上記ラン(copy−above run)が続く。デコーダ側では、現在のインデックスは、予測器(即ち、現在の画素上方の画素)がエスケープ画素である場合、所定のインデックスに設定される。これらの予測コピーモードでエスケープの符号化(例えば、エスケープ値を符号化する)は必要でない。
この実施形態は、コピーインデックスモードのケースにも用いられることができる。従って、palette_runは、シグナリングされたインデックスがエスケープインデックスと等しくても、コピーインデックスモードに対してシグナリングされることができる。シグナリングされたインデックスと関連したエスケープ値は、palette_runの構文の後、シグナリングされることができる。エスケープインデックスのpalette_runが0より大きい場合、第1のサンプルは、エスケープ値で再構築され、余剰のサンプルは、所定のインデックスで再構築される。例えば、コピーインデックスモードが用いられ、palette_runが4の場合、主要画素は、エスケープ画素であり、次の4つのピクセルは、所定のインデックスを有する。5つの画素は、現在の実施形態に基づいてコピーインデックスモードを用いて符号化される。エスケープ画素である主要画素を使用可能にし、この予測器を所定のインデックスとして処理することによって、コピーインデックスモードが従来のコピーインデックスモードから変更されたことは明らかである。もう1つの例では、エスケープインデックスのpalette_runが0(例えば、N)より大きい場合、第1のサンプルは、エスケープ値で再構築され、余剰のサンプルも各サンプル用にエスケープ値をシグナリングする必要がある。余剰のサンプルは、シグナリングされたエスケープ値でそれぞれ再構築される。エスケープ値の(N+1)サンプルはシグナリングされる。
一実施形態に基づいて、コピーインデックスモードの調整された最大パレットインデックス(AdjustedMaxPaletteIndex)は、符号化ユニット(CU)の第1のサンプル以外、最大パレットインデックス引く1に等しくなるように固定される(MaxPaletteIndex ‐ 1に固定される)。CUの第1のサンプルにおいて、AdjustedMaxPaletteIndexは、MaxPaletteIndexに等しい。AdjustedMaxPaletteIndexは、予測器または最後に符号化されたインデックスがエスケープサンプルであってもなくても、独立している。このパラメータは、固定長符号符号化またはtruncate binary符号符号化のインデックス符号化に用いられることができる。
G.予測器がエスケープサンプルの場合、エスケープ値を送信する
コピーモードでは、値 “palette_run” (例えば、N)が送信、導出、または推定されて、現在の画素および以下のN画素において、カラーインデックスが各コピーモードの位置(例えば、上、左、上部左、Mラインの上部、上部右、など)でカラーインデックスと等しいことを示す。しかしながら、予測器がエスケープサンプルである場合、エスケープの符号化(例えば、エスケープ値を符号化する)は、本発明の実施形態に基づいて、これらのサンプルに対してシグナリングされる。例えば、上記サンプルがエスケープサンプルであり、コピー上記モードが現在のサンプル(現在のエスケープ画素とも呼ばれる)に選ばれた場合、各コンポーネントのエスケープ値は、現在のサンプル用にシグナリングされる。即ち、コピー上記モードが選ばれ、上記画素がエスケープ画素の場合、現在の画素用の3コンポーネント(例えば、YUVコンポーネントまたはRGBコンポーネント)の値がシグナリングされる。エスケープ値は、“palette_run”の後、シグナリングされることができる。シグナリングされるエスケープ値の数は、予測器から予測されているエスケープサンプルの数によって決まる。また、予測器からの第1のサンプルがエスケープサンプルの場合、palette_runは、0として推定されるか、または0に設定されることができる。
予測器がエスケープサンプルの場合、もう1つの制約が増加され、palette_runが終了する。このように、palette_runは、終了することができる。
H.予測器がエスケープサンプルの場合、エスケープラン(escape run)のエスケープ値を送信する
コピーモードでは、値 “palette_run” (例えば、N)が送信、導出、または推定されて、現在の画素および以下のN画素において、カラーインデックスが各コピーモードの位置(例えば、上、左、上部左、Mラインの上部、上部右、など)でカラーインデックスと等しいことを示す。しかしながら、予測器がエスケープサンプルである場合、エスケープの符号化(例えば、エスケープ値を符号化する)は、これらのサンプルに対してシグナリングされる。例えば、上記サンプルがエスケープサンプルであり、コピー上記モードが選ばれた場合、各コンポーネントのエスケープ値は、現在のサンプル(現在のエスケープ画素とも呼ばれる)用にシグナリングされる。エスケープ値は、“palette_run”の直後、シグナリングされることができる。シグナリングされるエスケープ値の数は、予測器から予測されているエスケープサンプルの数によって決まる。コピーインデックスモードにおいて、シグナリングされたインデックスがエスケープインデックスのとき、palette_runは、シグナリングされて、現在の画素および以下のN画素がエスケープサンプルであることを示すことができる。エスケープコード(例えば、エスケープ値を符号化する)は、これらのサンプルに対してシグナリングされる。エスケープ値は、palette_runの構文の後、シグナリングされることができる。
この実施形態に基づいて、コピーインデックスモードの調整された最大パレットインデックス(AdjustedMaxPaletteIndex)は、符号化ユニット(CU)の第1のサンプル以外、最大パレットインデックス引く1に等しくなるように固定される(MaxPaletteIndex ‐ 1に固定される)。CUの第1のサンプルにおいて、AdjustedMaxPaletteIndexは、MaxPaletteIndexに等しい。AdjustedMaxPaletteIndexは、予測器または最後に符号化されたインデックスがエスケープサンプルであってもなくても、独立している。このパラメータは、固定長符号符号化またはtruncate binary符号符号化のインデックス符号化に用いられることができる。
I.エスケープインデックスからインデックスを予測する
予測元(prediction source)(例えば、上記インデックスまたは左のインデックス)がエスケープインデックスの場合、現在のサンプルのインデックスは、エスケープサンプルとして推定される。次いで、現在のサンプル用のエスケープ値がシグナリングされる。
例えば、現在のpalette_runがコピー上記モードとしてシグナリングされ、少なくとも1つの上記サンプルがエスケープインデックスの場合、エスケープインデックスを有するサンプルは、エスケープサンプルとして推定される。次いで、エスケープ値がシグナリングされる。
もう1つの実施例では、palette_runがコピーレフトモードとしてシグナリングされ、左のインデックスがエスケープインデックスの場合、現在のサンプルは、エスケープサンプルとして推定される。次いで、エスケープ値がシグナリングされる。従って、現在のpalette_runがコピーインデックスモードとしてシグナリングされ、新しいシグナリングされたインデックスがエスケープインデックスの場合、palette_runと関連した全てのサンプルは、エスケープサンプルとして推定される。次いで、エスケープ値がシグナリングされる。
この実施例では、palette_runのNサンプルがエスケープインデックスとして推定されるとき、Mエスケープ画素値がシグナリングされ、NおよびMは、正の整数である。Mは、Nと等しいことができ、個々のエスケープ画素値は、このケースにおいてpalette_runの全てのサンプル用にシグナリングされる。Mは、Nより小さく、エスケープ画素値は、palette_runの一部のサンプルに送信され、余剰のサンプルは、送信されたエスケープ値をシェアする。例えば、Mは、1つであり、全てのサンプルに送信された1つのエスケープ値は、エスケープインデックスとして推定されてこのエスケープ値をシェアする。
J.導出された、または所定のインデックスを用いて、エスケープインデックスからインデックスを予測する
予測元(例えば、上記インデックスまたは左のインデックス)がエスケープインデックスの場合、現在のサンプルのインデックスは、予測元が予測のために用いられる場合、導出された、または所定のインデックスとして推定される。所定のインデックスは、0であることができる。
例えば、現在のpalette_runがコピー上記モードとしてシグナリングされ、少なくとも1つの上記サンプルがエスケープインデックスの場合、エスケープインデックスを有するサンプルは、関連する予測モードが用いられる場合、導出された、または所定のインデックスとして推定される。所定のインデックスは、0であることができる。
もう1つの実施例では、palette_runがコピーインデックスモードとしてシグナリングされ、左のインデックスがエスケープインデックスの場合、現在のサンプルは、関連する予測モードが用いられる場合、導出された、または所定のインデックスとして推定される。所定のインデックスは、0であることができる。
もう1つの実施例では、現在のpalette_runがコピーインデックスモードによってシグナリングされた場合、palette_run値は、シグナリングされ、新しいシグナリングされたインデックスがエスケープインデックであるかどうかを示す。新しいシグナリングされたインデックスがエスケープインデックスである場合、palette_runの第1のサンプルは、エスケープインデックスとして推定され、余剰のサンプルは、導出された、または所定のインデックスとして推定される。所定のインデックスは、0であることができる。
K.インデックス符号化の冗長インデックスを除去する
SCM 2.0では、デコーダは、冗長インデックスが除去されることができるようにいくつかの条件をチェックする必要がある。例えば、デコーダは、前のpalette_runがコピー上記モードであるかどうかと、上記サンプルがエスケープインデックスとして符号化されないかどうかをチェックすることができる。両方の条件が真である場合、上記サンプルのインデックスは、冗長インデックス値として処理され、インデックス符号化の間に除去されることができる。
一実施形態では、条件のチェックは、解析の段階で除去されることができる。コピーインデックスモードがCUの第1のサンプル以外の任意のサンプルの位置に用いられる場合、少なくとも1つの冗長インデックス値が存在する。従って、解析の段階では、デコーダは、条件のチェックなしに固定された冗長インデックスの数(例えば、1)を直接除去することができる。
いずれかの予測方法がCU(CUの境界をまたぐ予測)の第1サンプルに用いられた場合、前述のエスケープ画素予測は、上述の冗長の除去と組み合わせられることができる。インデックス値の解析方法は、以下のように定義されることができる。コピーインデックスモードが任意のサンプルの位置に用いられる場合、少なくとも1つの冗長インデックス値が存在する。従って、解析の段階では、デコーダは、条件のチェックなしに固定された冗長インデックスを直接除去することができる。
L.インデックス符号化の冗長インデックスの除去後、インデックス値を再構築する
インデックスの再構築の段階では、デコーダは、除去された冗長インデックス値を計算する。解析されたインデックス値が除去された冗長インデックス値以上の場合、再構築されたインデックス値は、解析されたインデックス値に1を加えた値と等しい。等しくない場合、再構築されたインデックス値は、解析されたインデックス値である。
“I.エスケープインデックスからインデックスを予測する”に開示された実施形態に基づいて、予測元がエスケープインデックスの場合、除去された冗長インデックス値は、エスケープインデックス値である。
“J.導出された、または所定のインデックスを用いて、エスケープインデックスからインデックスを予測する” に開示された実施形態に基づいて、予測元がエスケープインデックスの場合、除去された冗長インデックス値は、導出された、または所定のインデックスである。所定のインデックスは0である。
M.隣接画素からカラーインデックスマップ符号化を予測する
現在のCUの主要のカラーインデックスマップは、現在のCUの隣接画素(NP)から予測されることができる。カラーインデックスマップを符号化するとき、エンコーダ/デコーダは、まず、隣接画素(NP)を決定することができる。PNは、現在の符号化ユニットのカラーインデックスを予測するのに用いられることができる。予測の前、NPの画素値は、主要のカラーテーブルによってカラーインデックス内にマッピングされることができ、マッピングされたカラーインデックスは、現在の符号化ユニットのカラーインデックスを予測するのに用いられる。例えば、表1に示されるように、現在の符号化ユニットの主要なカラーテーブルを用いることによって、NPの画素値は、図3Aと図3Bに示されたようにカラーインデックス内にマッピングされることができる。隣接画素値は、イタリック体と括弧で示され、マッピングされたカラーインデックスは、各NPの画素値の下方に示される。
NPは、任意の前に復号化された、または再構築された画素であることができ、空間的に隣接するサンプルまたは時間的に隣接するサンプル、および各剰余を含む。隣接画素は、サンプル適応オフセット(SAO)またはデブロッキングフィルタなどのループ内フィルタのない再構築された画素であることができる。隣接画素は、SAO、デブロッキングフィルタ、またはSAOおよびデブロッキングフィルタの両方でフィルタリングされた、再構築された画素であることもできる。時間的NPは、参照画像の同一位置にある、または動きベクトルで示された位置にある画素であることができる。一例実施例では、NPは、最も近い上記列、および最も近い左の行の画素に簡素化される。
符号化の間、カラーインデックスは、NPによって予測されることができる。図4は、画素のカラーインデックスが上記NPによって測定された実施例を示している。第1の画素のインデックスは、この実施例では、1として復号化される。
カラーインデックスをNPに割り当てる場合(NPs to color indices)、カラー値をマッピングする量子化方法を簡素化するために、デコーダは、パレットの一部の色だけをテストすることができる。NPに適合する色がない場合、デコーダは、固定された、または導出されたインデックスをNPに割り当てることができる。例えば、デコーダは、Ntest1からNtest2のカラーインデックスのみをテストする。適合する色がない場合、デコーダはNPを割り当て、インデックスNtest3とNtest3は、0であることができる。Ntest1とNtest2は、固定される、または導出されることができる。Ntest1とNtest2は、CUサイズに基づいて導出されることができる。
NPに適合する色を識別するために、デコーダはNtestカラーをNPとテストすることもできる。テストされた色の間の違いがCtest1であり、NPがしきい値より小さい場合、NPは、インデックスCtest1に割り当てられる。しきい値は固定される、または導出されることができる。例えば、しきい値は、QP設定に基づいて導出されることができる。NPのスレッショルド値より小さい、それに対応した違いを有する1つ以上のテストされた色がある場合、NPは、より小さい違いを有するテストされた色に量子化されることができる。
カラーインデックスにNPの値の量子化を簡素化するために、NPのスレッショルド値より小さい、違いを有する1つ以上のテストされた色がある場合、NPは、最新のテストされた色に量子化されることができる。色をテストする順序は、最大のインデックスから最小のインデックスの順序(即ち、最小発生インデックスから最大発生インデックス)であることができる。言い換えれば、それらの両方が異なるスレッショルド値内にあるとき、より大きい発生インデックスは、より小さい発生インデックスを上書きする。
もう1つの実施形態では、NPのスレッショルド値より小さい、違いを有する1つ以上のテストされた色がある場合、NPは、最初のテストされた色に量子化されることができる。色をテストする順最小のインデックスから最大のインデックスの順序(即ち、最大発生インデックスから最小発生インデックス)であることができる。言い換えれば、それらの両方が異なるスレッショルド値内にあるとき、より大きい発生インデックスは、より小さい発生インデックスを上書きする。テストプロセスは、任意のテストカラーが適合された場合、早期に終了することができる。
カラーインデックスにNPの値の量子化を簡素化するもう1つの方法において、デコーダは、カラー値のNMSB_COLOR MSBsのみを用いて、パレットのカラーを有する画素と比較することができる。NMSB_COLORは、固定される、または導出されることができる。NMSB_COLORは、CUサイズに基づいて導出されることができる。異なるカラーコンポーネントにおいて、NMSB_COLORは、異なることができる。例えば、Y/GコンポーネントのNMSB_COLORは、UV/RBコンポーネントのNMSB_COLORは、より大きいことができる。
上述の“予測モードのエスケープカラー(Escape color with prediction mode)” および “NPからカラーインデックスマップ符号化を予測する(Prediction for color index map coding from NPs)”の技術は、統一されることができる。例えば、デコーダは、“Prediction for color index map coding from NPs”において、NPをエスケープインデックス内に直接量子化することができる。結果、第1の列の画素がコピー上記モードとしてシグナリングされた場合、画素は、エスケープインデックスから予測されることができる。エスケープインデックスから予測を処理するには、“コピーモードで再構築された値を直接コピーする(Direct copy of the reconstructed value in the copy mode)” または “エスケープサンプル予測器用のコピーモードで再構築された値を直接コピーする(Direct copy of the reconstructed value in the copy mode for the Escape sample predictor)”。言い換えれば、予測器は、NPの再構築された画素値を第1の列の画素にコピーする。第1の列の上方から予測された画素の再構築されたインデックスは、エスケープインデックスとして推定される。
本発明の1つの態様は、“Escape”インデックスを符号化するカラーインデックス符号化に取り組んでいる。インデックス“Escape”は、画素値がパレット表のどのインデックスにもマッピングされることができない画素にある。カラーインデックス符号化のさまざまな実施形態が以下に述べられる。
i.エスケープのラン(run)
JCTVC-N0247に開示されたパレット符号化スキームでは、“copy_index mode” およびインデックス “Escape”がまずシグナリングされ、次いでインデックス “Escape”を有する画素を符号化するためにその実際の画素値をシグナリングする。インデックス “Escape”を有する画素が連続して配置されたとき、このプロセスは、インデックス “Escape”を有する各画素に対して繰り返される。例えば、{“copy_indexmode”, “Escape index”, value}に対応する構文の設定は、インデックス “Escape”を有する連続した画素に対して繰り返されることができる。1つの実施形態では、“copy_index mode” または “copy_above mode”に加えて、新しい予測モード(例えば、“Escape run mode”)がエスケープインデックスに含まれる。上述のモードのシグナリング後、インデックス “Escape”をシグナリングすることなく、“number of run”および画素値がシグナリングされる。例示的なプロセスが以下に述べられる。
1)各位置において、フラグが送信され、“copy_above mode”、“copy_index mode”、および “Escape run mode”の中から選ばれた予測モードを示す。
2)“copy_above mode” が用いられた場合、 “palette_run”は、フラグに次いで送信される。現在の位置からのランの数のインデックスは、スキャンの順序に沿った上記ラインのそれらと同じである。
3)“copy_above mode” が用いられた場合、“palette_run”は、フラグの後、“palette_run”に次いでシグナリングされる。ランの数においては、インデックスは、シグナリングされたインデックスと同じである。
4)“Escape run mode”が用いられた場合、 “palette_run”がシグナリングされる。ランの数の画素値がシグナリングされる。
ii.コピー上記モードのエスケープ
画素が“copy_above mode”のとき、画素のインデックスは、スキャンの方向に沿ったその上記画素と同じである。従来技術は、エスケープ画素またはエスケープインデックスが“copy_above mode”のランに含まれているとき、プロセスを定義していない。1つの実施形態では、“copy_above mode”のランがエスケープインデックスを含んでもいなくてもシグナリングされる。この実施形態に基づいた例示的なプロセスおよびシグナリングが以下に述べられる。
1)“copy_above mode”が用いられた場合、 “palette_run”は、モードフラグに次いでシグナリングされる。現在の位置からのランの数のインデックスは、スキャンの順序に沿った上記ラインのそれらと同じである。
2)ランの数の後、“Escape in the run” フラグは、送信され、任意のエスケープピクセルが “copy_above”画素に存在するかどうかを示す。
3)“Escape in the run” が真である場合、これらのエスケープ画素の画素値は、順次にシグナリングされる。
上述の実施例では、エスケープインデックスの数が導出される。もう1つの実施形態では、“copy_above mode”の現在のセットの“Escape”インデックスの数は、画素値をシグナリングする前に明示的にシグナリングされる。この明示的なシグナリングは、“Escape in the run”フラグと代替することができる。
iii.“palette_run”のシグナリング
“palette_run”は、インデックスのシグナリング後、またはシグナリング前にシグナリングされることができる。従来の技術では、“number of runs”は、インデックスの後にシグナリングされる。本発明の実施形態では、“palette_run”のシグナリングの順序は、変えられる。例えば、“palette_run”は、“index”が存在するときに“index”の前に、または“index”が存在しないときに予測モードの後にシグナリングされる。実施形態に基づいた例示的なプロセスおよびシグナリングは、以下に述べられる。
1)各位置において、まず、フラグが送信され、“copy_above mode”および“copy_index mode”から選ばれた予測モードを示す。
2)“palette_run”が送信される。
3)“copy_above mode”が用いられたとき、現在の位置からのランの数のインデックスは、スキャンの順序に沿った上記ラインのそれらと同じである。
4)“copy_index mode”が用いられたとき、“index”は、フラグの後、シグナリングされる。
a.“index”が“Escape”の場合、現在の位置からのランの数の画素値がシグナリングされる。
b.“index”がパレット表にある場合、現在の位置からのランの数のインデックスは、シグナリングされたインデックスと同じである。
上述の“palette_run”のシグナリングの技術は、本発明で述べられた他の技術と組み合わせられる。
他の実施例では、“palette_run”は、予測モードおよびインデックスの前にシグナリングされる。例示的なシグナリングおよびプロセスは以下に述べられる。
1)各位置では、“palette_run”がシグナリングされる。
2)フラグが“palette_run”に次いでシグナリングされ、“copy_above mode” および “copy_index mode”から選ばれた予測モードを示す。
a.“copy_above mode” が用いられた場合、のそれらと同じ現在の位置からのランの数のインデックスは、スキャンの順序に沿った上記ラインのそれらと同じである。
b.“copy_indexmode”が用いられたとき、“index”は、フラグの後、シグナリングされる。
i.“index”が“Escape”の場合、現在の位置からのランの数の画素値がシグナリングされる。
ii.“index”がパレット表にある場合、現在の位置からのランの数のインデックスは、シグナリングされたインデックスと同じである。
上述の“palette_run”のシグナリングの技術は、本発明で述べられた他の技術と組み合わせられる。
もう1つの実施形態では、“palette_run”が1と等しいとき、インデックスが現在の位置に対してシグナリングされる。言い換えれば、予測モードのシグナリングが必要ない。インデックスがエスケープの場合、画素値はエスケープインデックスの後、シグナリングされる。例示的なシグナリングおよびプロセスは以下に示される。
1)各位置では、“palette_run”がシグナリングされる。
2)“palette_run”が1と等しいとき、“index”がシグナリングされる。また、“index”が“Escape”の場合、画素値がシグナリングされる。
3)その他(即ち、“palette_run”が1より大きい)
フラグが“palette_run”に次いでシグナリングされ、“copy_above mode” および “copy_index mode”から選ばれた予測モードを示す。
a.“copy_above mode” が用いられた場合、のそれらと同じ現在の位置からのランの数のインデックスは、スキャンの順序に沿った上記ラインのそれらと同じである。
b.“copy_indexmode”が用いられたとき、“index”は、フラグの後、シグナリングされる。
i.“index”が“Escape”の場合、現在の位置からのランの数の画素値がシグナリングされる。
ii.“index”がパレット表にある場合、現在の位置からのランの数のインデックスは、シグナリングされたインデックスと同じである。
上述の“palette_run”のシグナリングの技術は、本発明で述べられた他の技術と組み合わせられる。
iv.“Escape”の画素値をシグナリングする
“Escape”インデックスに対応する画素値がシグナリングされたとき、実際値が直接シグナリングされる。サンプル値を直接シグナリングする代わりに、実際値と参照値の間の違いもシグナリングされることができる(即ち、差分符号化)。従来の技術では、差動符号化の参照値は、同じCUの既に再構築されたエスケープ値に基づいている。本発明のいくつかの実施形態では、他の参照値も用いられることができる。例えば、参照値は、直接シグナリングされる、または導出されることができる。もう1つの実施例では、参照値は、パレット予測表の第N番目のインデックスであることができ、インデックスNと値差分がシグナリングされる。またもう1つの実施例では、参照値は、隣接ブロックから再構築された値であることができる。参照値は、再構築された従来のイントラ/インター、パレット値、またはエスケープ値であることができる。参照値は、連続した“Escape”画素の最小画素値であることができる。また、参照値は、連続した“Escape”画素のN番目の値であることができる。
N.遷移コピー(transition copy; TC)予測のヒルベルト(Hilbert)インデックススキャン
遷移コピー(TC)予測では、値“palette_run” (例えば、N)が送信、または導出されて、現在の画素および以下のN画素において、パレットインデックスは、遷移コピー表導出(transition−copy−table−derived; TCT derived)インデックスと等しい。Nは1であることができる。
符号化の間、デコーダは、遷移コピー表(transition copy table; TCT)を維持し、前のK復号化インデックスと次のNインデックスの間の関係を符号化する。次いで、新しいNインデックスを復号する前に、デコーダは、前のK復号化インデックスを用いて、以下のNインデックスの予測パターンを探索する。NおよびKは、送信または導出される。
遷移コピーにおいて、ブロック内のカラーインデックスは、ブロックを通過するスキャンパターンに基づいて処理される。本発明の実施形態に基づいて、インデックスマップは、ヒルベルトスキャンの順序を用いてスキャンされる。ヒルベルトスキャンから得られたランレングスが符号化される。開始位置は、ヒルベルトスキャン用に変えられることができる。インデックスマップは、まず回転されて、次いでスキャンされる。スキャンパターンは、例えば、JCTVC-R0348で開示されたこれらのように、異なるパレット関連符号化用に用いられることができる。
O.冗長の予測モードの構文を除去する
本発明の1つの実施形態は、予測モードが冗長である場合、予測モードの構文を除去する。例えば、上述の画素がエスケープ画素の場合、コピー上記モードは、除去されることができ、予測モードがコピーインデックスモードとして推定されることができる。
もう1つの実施例では、最後の予測モードがコピーインデックスモードであり、上記画素は、エスケープ画素でなく、上記画素と前の画素のインデックスは、同じである場合、コピー上記モードは、除去されることができる。予測モードは、コピーインデックスモードとして推定されることができる。
またもう1つの実施例では、最後の予測モードがコピーインデックスモードであり、上記画素と前の画素のインデックスは、同じである場合、コピー上記モードは、除去されることができる。予測モードは、コピーインデックスモードとして推定されることができる。
またもう1つの実施例では、上記画素がエスケープ画素である場合、または最後の予測モードがコピーインデックスモードであり、上記画素と前の画素のインデックスが同じである場合、コピー上記モードは、除去されることができる。予測モードは、コピーインデックスモードとして推定されることができる。
コピー上記ランモードの予測元を改善する
パレットコーディングでは、現在の画素の冗長インデックスIrun_redは、最後の符号化した予測モードから導出される。最後の符号化した予測モード以外の予測モードにおいては、第1のインデックス予測器がIrun_redと同じである場合、第1のインデックス予測器は、固定されたインデックス、または導出されたインデックスである、置換インデックス(replacement index)によって置き換えられることができる。置換インデックスは、0または最小値(smallest possible)、およびIrun_redと等しくない非冗長インデックス(non−redundant index)であることができる。例えば、Irun_redが0である場合、置換インデックスは、1に設定されることができる。または、置換インデックスは、0に設定されることができる。インデックスの置換方法は、Irun_redがエスケープインデックスと等しい場合、無効にされることができる。
SCM 2.0では、前の予測モードがコピー上記モードである場合、現在のインデックスは、上記インデックスと同じであることができない。または、現在のインデックス符号化は、コピー上記モードの前のラン内に併合されることができる。この冗長インデックス値は、Irun_redと呼ばれる。図5Aは、コピー上記モードと関連した冗長の例を示しており、現在のサンプルは、“?”と示され、上記インデックスは“A”である。現在のインデックスは、“A”であることはできず、且つインデックスAは、現在のインデックスを符号化する冗長である。従って、このケースでは、予測元のリファイメント(refinement)は、他の予測モードが用いられる場合、開示される。例えば、予測モードがコピー上記右(copy−above−right)モードの場合、上記右画素のインデックスはAであることはできない。これは、固定されたインデックス、または導出されたインデックスに対応した置換インデックスによって置き換えられることができる。置換インデックスは、図5Bに示されたインデックスCであることができ、“C”は、0または最小値、およびIrun_redと等しくない非冗長インデックスであることができる。例えば、Irun_redが0である場合、インデックスCは、1に設定されることができる。または、インデックスCは、0に設定されることができる。
もう1つの実施形態では、前の予測モードがコピーインデックスモードである場合、現在のインデックスは、左のインデックス現在のインデックスは、上記インデックスと同じであることができない。または、現在のインデックス符号化は、コピー上記モードの前のラン内に併合されることができる。この冗長インデックス値は、Irun_redと呼ばれる。図6Aは、コピー上記モードと関連した冗長の例を示しており、現在のサンプルは、“?”と示され、上記インデックスは“A”である。しかしながら、現在の符号化されるべき(to−be−encode)インデックスの上記インデックスがIrun_redと等しい場合、現在のインデックスのコピー上記予測は、冗長である。従って、このケースでは、コピー上記モードが用いられる場合、上述のインデックスのインデックス予測器は、置き換えられる。
現在のto−be−encodeインデックス、例えば、図6AのインデックスAがIrun_redと等しい場合、デコーダは、図6BのインデックスCのように、固定されたインデックスまたは導出されたインデックスに対応した置換インデックスによってコピー上記モードの上記インデックスのインデックス予測器を置き換えることができる。インデックスCは、0または最小値、およびIrun_redと等しくない非冗長インデックス(non−redundant index)であることができる。例えば、Irun_redが0である場合、インデックスCは、1に設定されることができる。または、インデックスCは、0に設定されることができる。
本実施形態に基づいたもう1つの実施例では、Irun_redは、任意の予測モードの冗長インデックス、例えば、コピー上記2列モード(copy−above−2−row−mode)の上記2列のインデックスであることができる。最後の符号化されたモードがコピーインデックスモードであり、前の符号化されたインデックスがIrun_redと同じ場合、予測モード(例えば、コピー上記2列モードの上記2列のインデックス)のIrun_redは、導出されたインデックスと置き換えられることができる。
本実施形態に基づいたまたもう1つの実施例では、コピー上記モードが選ばれることができる符号化モードの1つである場合、予測モードは、コピーインデックスモードのランがコピー上記モードのランより、ずっと大きくても、コピー上記モードに設定される。
予測器が置換インデックスによって置き換えられた場合、コピーインデックスモードのインデックス符号化は、変更されることができる。2つの冗長インデックス(即ち、Irun_redおよび置換インデックス)は、除去されることができる。例えば、最後の符号化されたモードがコピーインデックスモードであり、上記インデックスが前のインデックスと同じであり、且つ上記インデックスがエスケープインデックスでない場合、2つのインデックスは、現在の画素用のコピーインデックスモードのインデックス符号化で除去されることができる。2つのインデックスの1つは、前のインデックスであり、もう1つは、置換インデックスである。
実施形態に基づいたまたもう1つの実施例では、最後の符号化されたモードがコピーインデックスモードであり、上記インデックスが前のインデックスと同じである場合、最大値(maximum possible)のインデックスは、2より大きく、上記インデックスは、エスケープでなく、2つのインデックスは、現在の画素のコピーインデックスモードのインデックス符号化で除去されることができる。2つのインデックスの1つは、前のインデックスであり、もう1つは、置換インデックスである。
本発明に基づいたまたもう1つの実施例では、最後の符号化されたモードがコピーインデックスモードであり、上記インデックスが前のインデックスと同じであり、且つ最大値のインデックスが2より大きい場合、2つのインデックスは、現在の画素用のコピーインデックスモードのインデックス符号化で除去されることができる。2つのインデックスの1つは、前のインデックスであり、もう1つは、置換インデックスである。
本発明に基づいた実施形態は、もう1つのインデックス冗長をチェックする。この技術は、この発明で前に開示されたTCリファイメントプロセスに適用されることもできる。従って、インデックス冗長に基づいてTC予測器をリファインするとき、デコーダも更なる冗長を上述の技術によってチェックされるように検討することができる
Q.隣接画素からカラーインデックスマップ符号化の冗長インデックスを除去する
本発明において上述したように、インデックス冗長は、SCM−2.0に存在する。前のランがコピー上述ランである場合、現在のインデックスは、新しいコピー左ランで符号化されるとき、現在のインデックスの上記インデックスと同じであることができない。または、現在のインデックス符号化は、前のラン内に併合されることができる。一方では、SCM−2.0では、第1の列にコピー上記ランがない。従って、デコーダは、第1の列にあるコピー上記ランの冗長インデックスのチェックを行わない。
もう1つの実施形態に基づいて、冗長インデックスの除去も第1の列に適用される。冗長インデックスの除去プロセスは、隣接画素(NP)に基づいて変更される。第1の列の画素を符号化するとき、エンコーダは、前のランがコピー上記ランであるかどうかをチェックする。現在のインデックスは、それが新しいコピー左ランで符号化されたとき、現在のインデックスの上記NPのインデックスと同じであることができない。このケースでは、Irun_redは、現在のインデックスの上記NPのインデックスと等しい。
解析スループットを向上させるために、デコーダは、解析の段階で符号化されたインデックス値(即ち、Irun_redを除去した)のみを解析し、再構築の段階で真のパレットインデックス(即ち、Irun_redを増加した)を再構築することができる。従って、NPからカラーインデックスの量子化プロセスは、再構築の段階に移動されて、解析スループットを向上させることができる。
上の記述が提示されて、当業者に、特定のアプリケーションとその要求のコンテキストに記述される通り、本発明を行うことができる。当業者なら、記述された具体例への各種修正が理解でき、ここで定義される一般原則は別の実施例にも応用できる。よって、本発明は、記述される特定の実施例に制限することを目的としておらず、原理と新規特徴と一致する最大範囲に一致する。上述の記述において、本発明の十分な理解を提供するため、各種特定の詳細が説明される。当業者なら、本発明が行えることが理解できる。
上述の本発明の具体例は、各種ハードウェア、ソフトウェアコード、または、それらの組み合わせで実行される。例えば、本発明の具体例は、画像圧縮チップに整合される回路、または、画像圧縮ソフトウェアに整合されるプログラムコードで、上述の処理を実行する。本発明の具体例は、デジタルシグナルプロセッサ(DSP)で実行されるプログラムコードで、上述の処理を実行する。本発明は、さらに、コンピュータプロセッサ、デジタルシグナルプロセッサ、マイクロプロセッサ、または、フィールドプログラマブルゲートアレイ(FPGA)により実行される複数の機能を含む。これらのプロセッサは、本発明により具体化される特定の方法を定義する機械読み取り可能ソフトウェアコード、または、ファームウェアコードを実行することにより、本発明による特定のタスクを実行するように設定される。ソフトウェアコード、または、ファームウェアコードは、異なるプログラミング言語、および、異なるフォーマット、または、スタイルで開発される。ソフトウェアコードは、さらに、異なるターゲットプラットフォームにコンパイルされる。しかし、本発明によるタスクを実行するソフトウェアコードの異なるコードフォーマット、スタイル、および、言語、および、設定コードのその他の手段は、本発明の精神を逸脱しない。
本発明では好ましい実施例を前述の通り開示したが、これらは決して本発明を限定するものではなく、当該技術を熟知する者なら誰でも、本発明の精神と領域を脱しない範囲内で各種の変動や潤色を加えることができ、従って本発明の保護範囲は、特許請求の範囲で指定した内容を基準とする。
本出願は、2014年7月7日に出願された米国仮出願番号第62/021,289号、2014年7月22日に出願された米国仮出願番号第62/027,334号、2014年7月30日に出願された米国仮出願番号第62/030,714号、2014年8月11日に出願された米国仮出願番号第62/035,625号、2014年8月21日に出願された米国仮出願番号第62/040,020号、2014年8月21日に出願された米国仮出願番号第62/040,022号を基礎とする優先権を主張するものであり、その開示内容は参照することにより本明細書に組み入れられる。
本発明は、ビデオデータのパレット符号化に関し、特に、予測器がエスケープ画素に対応するとき、予測器のコピーモードに関連する問題を解決する各種の技術に関するものである。
高効率ビデオ符号化(HEVC)は、近年発展している新しい符号化基準である。高効率ビデオ符号化(HEVC)システムにおいて、H.264/AVCの固定サイズのマクロブロックは、符号化ユニット(CU)というフレキシブルなブロックにより代替される。CU中の画素は、同じ符号化パラメータを共有して、符号化効率を改善する。CUは最大CU(LCU)から始まり、HEVCの符号化ツリーユニット(CTU)とも称される。符号化ユニットの概念に加え、予測単位(PU)の概念もHEVCに導入される。一旦、CU階層ツリーの分割が行われると、各リーフCUは、予測タイプ、および、PU分割にしたがって、さらに、1つ以上の予測単位(PU)に分割される。スクリーンコンテント符号化のいくつかの符号化ツールが発展している。本発明に関連するパレット符号化ツールを、以下に簡潔に記載する。
パレット符号化
HEVCスクリーンコンテンツ符号化(SCC)の発展期間中、いくつかの提案が開示されて、パレットベース符号化に取り組んでいる。例えば、パレット予測と共有技術が、JCTVC-N0247 (Guo et al.,“RCE3: Results of Test 3.1 on Palette Mode for Screen Content Coding”, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14th Meeting: Vienna, AT, 25 July - 2 Aug. 2013 Document: JCTVC-N0247)(非特許文献1)およびJCTVC-O0218 (Guo et al.,“Evaluation of Palette Mode Coding on HM-12.0+RExt-4.1”, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Geneva, CH, 23 Oct. - 1 Nov. 2013, Document: JCTVC-O0218)(非特許文献2)で開示される。JCTVC-N0247(非特許文献1)とJCTVC-O0218(非特許文献2)において、各カラーコンポーネントのパレットが構成、および、送信される。パレットが、その左に隣接するCUから予測(または、共有)されて、ビットレートを低下させる。その後、所定ブロック中の全画素が、それらのパレットインデックスを用いて符号化される。JCTVC-N0247 による符号化プロセスの例は以下のようである。
1.パレットの送信: まず、カラーインデックス表 (パレット表とも称される)サイズが、パレット素子(即ち、カラー値)により送信される。
2.画素値の送信: CU中の画素がラスター走査順序で符号化される。1つ以上の画素の各群において、まず、ランベース(run−base)モードのフラグが送信されて、“コピーインデックスモード(copy index mode)”または“コピーアバッヴモード(copy above mode)”が用いられるかどうかを示す。
2.1 “コピーインデックスモード”: このランベースモードにおいて、まず、各自パレットインデックスが、run値を表す各自run値 “palette_run” (例えば、M)によりシグナリングされる。ある文献では、“コピーインデックスモード”は、“インデックス”モードとも称される。本発明において、用語“palette_run”は、“pixel_run”、または、単に “run”とも称される。run値は、合計M個の連続したサンプルが、すべて、runモードを用いて符号化されることを示す。ビットストリーム中でシグナリングされるとき、同じパレットインデックスを有するので、現在の位置、および、以下のM位置に送信されるこれ以上の情報が必要ない。パレットインデックス (例えば、i)も、全ての3カラーコンポーネントにより共有され、それは、YUV 色空間の場合において、再構築された画素値が (Y, U, V) = (paletteY[i], paletteU[i], paletteV[i])であることを意味する。
2.2 “モード”: コピーアバッヴモードにおいて、各自の値 “palette_run”(例えば、N)が送信されて、現在の画素および以下のN画素において、パレットインデックスが、列中の対応するパレットインデックスと同じであることを示す。
3.剰余の送信: ステージ2で送信されるパレットインデックスが画素値に戻されて、予測として用いられる。HEVC剰余符号化を用いて、剰余情報が送信され、再構築のために、予測に加えられる。
コピーインデックスモード、および、コピーアバッヴモード両方は、この発明において、“コピーモード”と称される。コピーインデックスモードでは、コピーインデックス符号化画素の主要画素のパレットインデックスが送信される。コピーインデックス符号化画素の数も送信される。デコーダ側では、下方の画素の符号化モード(即ち、コピーインデックスモード)を決定した後、主要画素のパレットインデックスの情報、および、コピーインデックス符号化画素の数のみが、コピーインデックス符号化画素の再構築に必要とされる。主要画素に続く画素は、予測器(即ち、左の画素)から“複製”することにより再構築される。画素値は、パレット表を用いて再構築される。コピーアバッヴモードにおいて、上方画素がすでに再構築されているので、送信される必要がある予測器に関連するパレットインデックス(即ち、上方画素)がない。現在の画素は、上方画素から“複製”される。
JCTVC-N0247において、各コンポーネントのパレットが構成、および、送信される。パレットが、その左に隣接するCUから予測(または、共有)されて、ビットレートを低下させる。JCTVC-O0218において、パレットの各構成要素は、トリプレットであり、3カラーコンポーネントの特定の組み合わせを示す。また、CUをまたぐパレットの予測符号化(predictive coding)が除去される。
JCTVC-O0218に類似したもう1つのパレット符号化技術も開示されている。左のCUから全てのパレット表を予測する代わりに、個々のパレットのパレットカラーエントリが上記CUまたは左のCUの正確に対応するパレットカラーエントリから予測される。
画素パレットインデックス値の送信において、予測符号化方法は、JCTVC-O0182 (Guo et al., “AHG8: Major-color-based screen content coding”, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Geneva, CH, 23 Oct. - 1 Nov. 2013, Document: JCTVC-O0182)に開示されたインデックスで用いられる。3つのタイプのラインモード、即ち、水平モード、垂直モード、およびノーマルモードが各インデックスラインの符号化に用いられる。水平モードでは、同じラインの全てのインデックスは、同じ値を有する。その値が上方画素ラインの第1の画素と同じである場合、ラインモードのシグナリングビットのみが送信される。垂直モードでは、現在のインデックスラインが上記インデックスラインと同じであることを示している。従って、ラインモードのシグナリングビットのみが送信される。ノーマルモードでは、ラインのインデックスは、個別に予測される。各インデックスの位置では、左隣接、または上記隣接が予測器として用いられ、予測シンボルがデコーダに送信される。
また、画素は、主要色の画素(パレットカラーを指しているパレットインデックス)およびJCTVC-O0182に基づくエスケープ画素に分類される。主要色の画素において、画素値は、主要なカラーインデックス(即ち、パレットインデックス)およびデコーダ側でパレット表に基づいて再構築される。エスケープ画素では、画素値は、ビットストリーム中でさらにシグナリングされる。
パレット表シグナリング
スクリーンコンテンツ符号化(SCC)基準のリファレンスソフトウェアでは、SCM-2.0 (Joshi et al., Screen content coding test model 2 (SCM 2), Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 18th Meeting: Sapporo, JP, July 2014, Document No.: JCTVC-R1014), 向上したパレットスキームが、JCTVC-R0348 (Onno, et al., Suggested combined software and text for run-based palette mode, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 18th Meeting: Sapporo, JP, July 2014, Document No.: JCTVC-R0348)に整合される。前のパレット符号化CUのパレット表は、現在のパレット表の符号化用に予測器として用いられる。パレット表の符号化では、現在のパレット表は、前の符号化されたパレット表(パレット予測器)のどのパレットカラーを再利用するかを選ぶことによって、または新しいパレットカラーを送信することによってシグナリングされる。現在のパレットサイズは、予測されたパレットサイズ(即ち、numPredPreviousPalette)に送信されたパレットサイズ(即ち、num_signaled_palette_entries)を加えたサイズとしてセットされる。予測されたパレットは、前の再構築されたパレット符号化CUから導出されたパレットである。現在のCUをパレットモードとして符号化するとき、予測されたパレットを用いた予測されていないこれらのパレットカラーは、ビットストリーム(即ち、シグナリングされたエントリ)に直接送信される。
パレット更新の例が以下に示される。この実施例では、現在のCUは、6に等しいパレットサイズを有するパレットモードとして符号化される。6つの主要色の中の3つは、パレット予測器から予測され(numPredPreviousPalette = 3)、もう3つは、ビットストリーム(即ち、シグナリングされたエントリ)に直接送信される。送信された3色は、以下に示される例示的構文を用いてシグナリングされることができる。
num_signaled_palette_entries = 3
for(cIdx=0; cIdx<3; cIdx++ )// signal colors for different components
for(i=0; i<num_signaled_palette_entries; i++ )
palette_entries[cIdx][numPredPreviousPalette+i]
この実施例では、パレットサイズは6つであるため、0〜5のパレットインデックスが用いられ、パレットカラー表にエントリする主要色を示す。3つの予測されたパレットカラーは、インデックス0〜2で表されている。このように、3つの新しいパレットエントリは、インデックス3〜5用に送信される。
SCM−2.0では、ウェーブフロント並列処理(wavefront parallel processing; WPP)が適用されていない場合、パレット予測表は、各スライスの初め、または各タイルの初めで初期化(リセット)される。WPPが適用される場合、最後の符号化パレット表は、各スライスの初め、または各タイルの初めで初期化(リセット)されるだけでなく、各CTU列の初めでも初期化(リセット)される。
パレット予測の符号化
JCTVC-O0218 および JCTVC-N0247では、パレット予測のフラグは、最後に符号化されたパレットCUからパレットを予測するように用いられる。1ビットが各エントリに用いられる。パレットエントリのパレット予測のフラグが1の場合、このパレットは、現在のCU用に再利用される。
JCTVC-R0348では、符号語(codeword)の異なる2値化方法が開示され、各予測されたパレット間のゼロラン(zero−runs)が符号化される。もう1つの実施例が図1に示される。符号語Nは、次のパレットの1である再利用フラグの前にN個のゼロがあることを意味している。例えば、“0”は、次のパレットが再利用されることを意味する(即ち、現在および次の再利用フラグ1の間に0はない)。“1”は、第2の次のパレットが再利用されることを意味する。10のパレットを有するパレット予測表における、ゼロランベースのパレット予測のもう1つの実施例が図1に示される。0、2、3、5、および8に対応するパレット表のパレットエントリは、現在のCUによって再利用される。予測されたパレットのゼロランはそれぞれ{0, 1, 0, 1, 2}である。
2値化方法は、order-K (EG-K code)を有するExponential-Golomb符号、order-K (EG-K code)を有するtruncated Exponential-Golomb符号、またはN-bit Truncated Unary code + EG-K codeであることができる。Kは、0、1、2、または3であることができる。Nは、0、1、2、または3であることができる。
最後に使用されたパレットをシグナリングするために、エンドコード(EC)を符号語内に挿入する方法が、JCTVC-R0228 (Seregin, et al., Non-SCCE3: Run-length coding for palette predictor, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 18th Meeting: Sapporo, JP, July 2014, Document No.: JCTVC-R0228) で開示される。EC以上のゼロランは、1によって増加される。デコーダ側では、復号されたゼロランがECと等しい場合、他に予測されたパレットがないことを意味する。復号されたゼロランがECより大きい場合、実際のゼロランは、復号されたゼロラン引く1である。例えば、ECは、1にセットされることができ、1以上の任意のゼロランは、1によって増加される。従って、図1の実施例において、符号化または復号化された符号語は、図2に示されるように{0, 2, 0, 2, 3, 1}となる。
現存するパレット符号化では、予測器がエスケープ画素のとき、デコーダは問題が発生する可能性がある。例えば、コピーアバッヴモードが選ばれて、上方画素がエスケープ画素である場合、エスケープ画素の下方にある現在の画素は、正確に再構築されない可能性がある。現存する、コピーアバッヴモードに従って、ラン値(run value)のみがシグナリングされる。エスケープインデックスは、上記エスケープ画素の下方にある現在の画素に割り当てられることができる。しかしながら、エスケープ値が送信されないため、上記エスケープ画素の下方にある現在の画素は、再構築されることができない。従って、エスケープ画素である予測器と関連する問題を克服する方法を開発することが必要である。
コピーモードを用いたパレット符号化のエスケープ画素である予測器に関連した問題を克服する方法が開示される。本発明の1つの実施形態に基づいた、コピーアバッヴモードにおける予測器がエスケープ画素である場合、現在のエスケープ画素のエスケープ値は、送信され、予測器と関連したエスケープ画素が送信されたエスケープ値を用いて再構築されることができるようになる。エスケープ画素の各コンポーネントのエスケープ値は、送信されることができる。コピーアバッヴモードで予測されている連続した画素の数に対応したラン値は、シグナリング、導出、または推定されることができる。ラン値がシグナリングされた場合、エスケープ画素用にエスケープ値の前にシグナリングされることができる。現在の画素の主要画素の上に配置された上方画素がエスケープ画素の場合、ラン値は、ゼロになるように制限される。現在の符号化モードがコピーインデックスモードに対応し、シグナリングされたインデックスがエスケープインデックスの場合、コピーインデックスモードで予測されている連続した画素の数に対応したラン値は、シグナリング、導出、または推定されることができる。ラン値がシグナリングされた場合、エスケープ画素用にエスケープ値の前にシグナリングされることができる。連続した画素は、エスケープ画素として符号化される。連続したエスケープ画素のパレットインデックスは、エスケープインデックスとして符号化され、エスケープ画素のエスケープ値は送信される。調整された最大パレットインデックス(AdjustedMaxPaletteIndex)は、符号化ユニット(CU)の第1のサンプル以外、最大パレットインデックス引く1に等しくなるように固定される(即ち、MaxPaletteIndex - 1)。対応するデコーダ側の実施形態も開示される。
もう1つの実施形態では、エスケープ画素である予測器と関連した問題は、エンコーダ側に制限をかけることによって解決される。コピーアバッヴモードでは、現在の画素の上方に配置された上方画素がエスケープ画素のとき、コピーアバッヴランは終了し、コピーアバッヴモードは、現在の画素に使用不可能として指定されるか、またはコピーアバッヴモードに選択されない。従って、エスケープ画素である予測器と関連した問題は生じなくなる。
またもう1つの実施形態では、エスケープ画素である予測器と関連した問題は、エスケープ値、エスケープインデックスとエスケープ値の両方、または予測器がエスケープ画素であるときに、予測器の再構築された画素値を直接コピーすることによって解決される。例えば、コピーアバッヴモードでは、現在の画素の上方に配置された上方画素がエスケープ画素の場合、現在の画素は、エスケープインデックスとエスケープ値、または上方画素の再構築された画素値をコピーすることによって再構築されることができる。
またもう1つの実施形態では、エスケープ画素である予測器と関連した問題は、パレットインデックス0など、所定のパレットインデックスによって予測器と置き換えることによって解決される。例えば、コピーアバッヴモードでは、エスケープ画素である任意の上方画素は、所定のインデックスとして処理される。言い換えれば、現在の画素が所定のインデックスであり、上方画素がエスケープ画素である場合、コピーアバッヴランは続く。コピーインデックスモードのケースでは、Nの連続した画素がエスケープ画素の場合、主要画素は、パレットインデックス(即ち、エスケープインデックス)および画素値(即ち、エスケープ値)を送信することによって符号化される。全ての以下の画素は所定のインデックスとして符号化される。
0、2、3、5、および8に対応するパレット表のエントリが、現在のCUによって再利用され、予測されたパレットのゼロランはそれぞれ{0, 1, 0, 1, 2}である、例示的なゼロランベースのパレット予測を示している。
“1”に対応するエンドコード(EC)が、再利用フラグの符号化の終了を示すのに用いられ、図1に対応するゼロランが{0, 2, 0, 2, 3, 1}となる、例示的なゼロランベースのパレット予測を示している。
隣接画素のカラー値を表1のカラーインデックス表に基づいたカラーインデックスに置き換えるサンプルを示しており、図3Aの隣接画素値は、図3Bの隣接画素インデックスに置き換えられる。
隣接画素のカラー値を表1のカラーインデックス表に基づいたカラーインデックスに置き換えるサンプルを示しており、図3Aの隣接画素値は、図3Bの隣接画素インデックスに置き換えられる。
隣接画素からのカラーインデックス予測の実施例を示しており、第1の画素のインデックスは、上記隣接画素を予測器として用いて、第1の画素のインデックスが1として復号化される。
前のコピーアバッヴモードと関連した冗長の例を示しており、現在のサンプルは、“?”と示され、上記インデックスは“A”である。
前のコピーアバッヴ右モードと関連した冗長の例を示しており、現在のサンプルは、“?”と示され、上記右インデックスは“C”である。
前のコピーインデックスモードと関連した冗長の例を示しており、現在のサンプルは、“?”と示され、左インデックスは“A”である。
本発明の実施形態に基づいて決定された冗長のケースにおける置換インデックス予測器を用いた実施例を示している。
以下の説明は、本発明を実施するベストモードが開示されている。この説明は、本発明の一般原理を例示する目的のためのもので本発明を限定するものではない。本発明の範囲は、添付の請求の範囲を参考にして決定される。
予測モードでの予測器としてのエスケープ画素の課題
JCTVC-O0218、JCTVC-N0247、およびJCTVC-O0182では、いくつかの予測モード、例えば、コピーアバッヴモードおよびコピーインデックスモードは、パレットインデックスマップ符号化でサポートされる。コピーインデックスモードは、ブロック内の画素が左から右へラスタースキャン順序に処理されるとき、左の画素のインデックスがコピーされるため、ときに“copy left mode”とも称される。また、コピーレフトモード(copy left mode)は、この開示では、横断走査順序で前の画素をコピーすることを称することもある。これらのモードでは、カラーインデックスは、予測器、例えば1つ以上の上記サンプルまたは左のサンプルからコピーされる。Screen Content Coding Test Model 2 (SCM-2.0)、JCTVC-O0218に類似したランベースのパレット符号化方法、およびJCTVC-N0247は、整合される。SCM−2.0では、コピーアバッヴモードおよびコピーインデックスモードが用いられる。エスケープサンプルは、runモードの最大パレットサイズと等しいカラーインデックスで符号化される。runモードでは、符号化されたパレットサイズがコピーインデックスモードの最大パレットサイズと等しい場合、各コンポーネント値(例えば、R/G/BコンポーネントまたはY/U/Vコンポーネント)はシグナリングされる。
しかしながら、SCM−2.0では、コピーアバッヴモードが用いられ、上記のサンプルがエスケープサンプルとして符号化された場合、エスケープ値は、シグナリングされない。デコーダはこれらのサンプル値を再構築することができない。この問題を克服するために、各種の方法が以下に開示される。
A.エスケープ値のシグナリングにおけるエンコーダの制約
この実施形態に基づいて、エスケープサンプルまたはエスケープカラーインデックスは、コピーインデックスモードで、または新しいインデックスモードのみで符号化されることができるように、エンコーダの制約が開示される。言い換えれば、このケースにおいて、例えばコピーアバッヴモードなどの他の予測コピーモードは用いられない。従って、コピーアバッヴモードのケースでは、上方画素のエスケープ画素でないエスケープ画素のみがコピーアバッヴモードにおける予測器として用いられることができる。従って、コピーアバッヴモードが用いられた場合、エスケープ値をシグナリングする必要がない。この開示では、サンプルおよび画素は、同じ意味で用いられる。従って、エスケープサンプルは、エスケープ画素とも呼ばれることができる。
B.エスケープサンプルを予測器として使用不可能にする
この実施形態に基づいて、エスケープサンプルまたはエスケープカラーインデックスは、コピーインデックスモードで、または新しいインデックスモードのみで符号化されることができる。言い換えれば、このケースにおいて、例えばコピーアバッヴモードなどの他の予測コピーモードは用いられない。従って、予測コピーモード(例えばコピーアバッヴモード)が用いられた場合、エスケープ値をシグナリングする必要がない。また、コピーモード(例えば、コピーアバッヴモードの上記サンプル)の予測器がエスケープサンプルの場合、コピーモードは、使用可能でなくなる。コピーモードの構文は、除去されることができる。例えば、上記サンプルがエスケープサンプルである場合、現在のサンプル用のコピーアバッヴモードはなくなる。例えば、現在の予測モードは、上記サンプルがエスケープサンプルである場合、コピーインデックスモードとして推定されることができる。もう1つの実施例では、上記サンプルのカラーインデックスは、コピーアバッヴモードが用いられる場合、現在の画素用にコピーされる。上記サンプルがエスケープサンプルである場合、インデックスコピーの工程は、終了する。例えば、コピーアバッヴモードがシグナリングされ、runが5であり、上記第3のサンプルがエスケープサンプルである場合、上記2つのサンプルのみコピーする。実際のrun値は、1と等しい。
C.コピーモードにおいて再構築された画素値の直接コピー
コピーモードでは、値 “palette_run” (例えば、N)が送信、導出、または推定されて、現在の画素および以下のN画素において、画素値がコピーモードで符号化された各位置(例えば、上、左、上部左、Mラインの上部、上部右位置)で再構築された画素値と等しいことを示す。これらの予測コピーモードでエスケープの符号化(例えば、エスケープ値を符号化する)は必要でない。
この方法では、palette_runは、シグナリングされたインデックスがエスケープインデックスと等しくても、コピーインデックスモードに対してシグナリングされることができる。エスケープインデックスのpalette_runが0(例えば、N)より大きい場合、デコーダは、現在のサンプルおよび次のサンプルに再構築された値を充填する。エスケープ値は、palette_runの構文の後、シグナリングされることができる。
D.エスケープサンプル予測器(Escape sample predictor)用のコピーモードにおけるエスケープ値およびインデックスの直接コピー
コピーモードでは、値 “palette_run” (例えば、N)が送信、導出、または推定されて、現在の画素および以下のN画素において、カラーインデックスがコピーモードで符号化された位置で各カラーインデックスと等しいことを示し、カラーインデックスが各コピーモードの位置(例えば、上、左、上部左、Mラインの上部、上部右、など)でカラーインデックスと等しいことを示す。しかしながら、予測器がエスケープサンプルである場合、現在のサンプルは、インデックス(即ち、エスケープインデックス)をコピーするだけでなく、予測器からエスケープ値(例えば、palette_Escape_val)もコピーする。これらの予測コピーモードでエスケープの符号化(例えば、エスケープ値を符号化する)は必要でない。
palette_runは、シグナリングされたインデックスがエスケープインデックスと等しくても、コピーインデックスモードに対してシグナリングされることができる。エスケープインデックスのpalette_runが0(例えば、N)より大きい場合、デコーダは、現在のサンプルおよび次のサンプル用にエスケープ値を充填する。エスケープ値は、palette_runの構文の後、シグナリングされることができる。もう1つの実施例では、エスケープインデックスのpalette_runが0より大きい場合、エスケープ値の(N+1)サンプルはサンプリングされる。
E.エスケープサンプル予測器用のコピーモードにおけるエスケープ値の直接コピー
コピーモードでは、値 “palette_run” (例えば、N)が送信、導出、または推定されて、現在の画素および以下のN画素において、カラーインデックスが各コピーモードの位置(例えば、上、左、上部左、Mラインの上部、上部右、など)でカラーインデックスと等しいことを示す。しかしながら、予測器がエスケープサンプルである場合、現在のサンプルは、予測器からエスケープ値(例えば、palette_Escape_val)をコピーし、現在のインデックスを所定のインデックス(例えば、0)として設定する。これらの予測コピーモードでエスケープの符号化(例えば、エスケープ値を符号化する)は必要でない。
この方法では、palette_runは、シグナリングされたインデックスがエスケープインデックスと等しくても、コピーインデックスモードに対してシグナリングされることができる。エスケープインデックスのpalette_runが0(例えば、N)より大きい場合、第1のサンプルは、エスケープ値で再構築され、余剰のサンプルは、所定のインデックスで再構築される。エスケープ値は、palette_runの構文の後、シグナリングされることができる。
F. エスケープサンプル予測器用の予測コピーモードにおける所定のカラーインデックスとしてエスケープサンプルを処理する
コピーモードでは、値 “palette_run” (例えば、N)が送信、導出、または推定されて、現在の画素および以下のN画素において、カラーインデックスが各コピーモードの位置(例えば、上、左、上部左、Mラインの上部、上部右、など)でカラーインデックスと等しいことを示す。しかしながら、予測器がエスケープサンプルである場合、予測器のカラーインデックスは、本発明の実施形態に基づいて所定のカラーインデックス(例えば、0)として処理される。例えば、コピーアバッヴモードが現在の画素に対してシグナリングされ、予測器(即ち、現在の画素上方の画素)がエスケープ画素である場合、予測器は、所定のインデックスとして処理される。従って、現在の画素が所定のインデックスと等しい場合、コピーアバッヴラン(copy−above run)が続く。デコーダ側では、現在のインデックスは、予測器(即ち、現在の画素上方の画素)がエスケープ画素である場合、所定のインデックスに設定される。これらの予測コピーモードでエスケープの符号化(例えば、エスケープ値を符号化する)は必要でない。
この実施形態は、コピーインデックスモードのケースにも用いられることができる。従って、palette_runは、シグナリングされたインデックスがエスケープインデックスと等しくても、コピーインデックスモードに対してシグナリングされることができる。シグナリングされたインデックスと関連したエスケープ値は、palette_runの構文の後、シグナリングされることができる。エスケープインデックスのpalette_runが0より大きい場合、第1のサンプルは、エスケープ値で再構築され、余剰のサンプルは、所定のインデックスで再構築される。例えば、コピーインデックスモードが用いられ、palette_runが4の場合、主要画素は、エスケープ画素であり、次の4つのピクセルは、所定のインデックスを有する。5つの画素は、現在の実施形態に基づいてコピーインデックスモードを用いて符号化される。エスケープ画素である主要画素を使用可能にし、この予測器を所定のインデックスとして処理することによって、コピーインデックスモードが従来のコピーインデックスモードから変更されたことは明らかである。もう1つの例では、エスケープインデックスのpalette_runが0(例えば、N)より大きい場合、第1のサンプルは、エスケープ値で再構築され、余剰のサンプルも各サンプル用にエスケープ値をシグナリングする必要がある。余剰のサンプルは、シグナリングされたエスケープ値でそれぞれ再構築される。エスケープ値の(N+1)サンプルはシグナリングされる。
一実施形態に基づいて、コピーインデックスモードの調整された最大パレットインデックス(AdjustedMaxPaletteIndex)は、符号化ユニット(CU)の第1のサンプル以外、最大パレットインデックス引く1に等しくなるように固定される(MaxPaletteIndex ‐ 1に固定される)。CUの第1のサンプルにおいて、AdjustedMaxPaletteIndexは、MaxPaletteIndexに等しい。AdjustedMaxPaletteIndexは、予測器または最後に符号化されたインデックスがエスケープサンプルであってもなくても、独立している。このパラメータは、固定長符号符号化またはtruncate binary符号符号化のインデックス符号化に用いられることができる。
G.予測器がエスケープサンプルの場合、エスケープ値を送信する
コピーモードでは、値 “palette_run” (例えば、N)が送信、導出、または推定されて、現在の画素および以下のN画素において、カラーインデックスが各コピーモードの位置(例えば、上、左、上部左、Mラインの上部、上部右、など)でカラーインデックスと等しいことを示す。しかしながら、予測器がエスケープサンプルである場合、エスケープの符号化(例えば、エスケープ値を符号化する)は、本発明の実施形態に基づいて、これらのサンプルに対してシグナリングされる。例えば、上記サンプルがエスケープサンプルであり、コピーアバッヴモードが現在のサンプル(現在のエスケープ画素とも呼ばれる)に選ばれた場合、各コンポーネントのエスケープ値は、現在のサンプル用にシグナリングされる。即ち、コピーアバッヴモードが選ばれ、上方画素がエスケープ画素の場合、現在の画素用の3コンポーネント(例えば、YUVコンポーネントまたはRGBコンポーネント)の値がシグナリングされる。エスケープ値は、“palette_run”の後、シグナリングされることができる。シグナリングされるエスケープ値の数は、予測器から予測されているエスケープサンプルの数によって決まる。また、予測器からの第1のサンプルがエスケープサンプルの場合、palette_runは、0として推定されるか、または0に設定されることができる。
予測器がエスケープサンプルの場合、もう1つの制約が増加され、palette_runが終了する。このように、palette_runは、終了することができる。
H.予測器がエスケープサンプルの場合、エスケープラン(escape run)のエスケープ値を送信する
コピーモードでは、値 “palette_run” (例えば、N)が送信、導出、または推定されて、現在の画素および以下のN画素において、カラーインデックスが各コピーモードの位置(例えば、上、左、上部左、Mラインの上部、上部右、など)でカラーインデックスと等しいことを示す。しかしながら、予測器がエスケープサンプルである場合、エスケープの符号化(例えば、エスケープ値を符号化する)は、これらのサンプルに対してシグナリングされる。例えば、上記サンプルがエスケープサンプルであり、コピーアバッヴモードが選ばれた場合、各コンポーネントのエスケープ値は、現在のサンプル(現在のエスケープ画素とも呼ばれる)用にシグナリングされる。エスケープ値は、“palette_run”の直後、シグナリングされることができる。シグナリングされるエスケープ値の数は、予測器から予測されているエスケープサンプルの数によって決まる。コピーインデックスモードにおいて、シグナリングされたインデックスがエスケープインデックスのとき、palette_runは、シグナリングされて、現在の画素および以下のN画素がエスケープサンプルであることを示すことができる。エスケープコード(例えば、エスケープ値を符号化する)は、これらのサンプルに対してシグナリングされる。エスケープ値は、palette_runの構文の後、シグナリングされることができる。
この実施形態に基づいて、コピーインデックスモードの調整された最大パレットインデックス(AdjustedMaxPaletteIndex)は、符号化ユニット(CU)の第1のサンプル以外、最大パレットインデックス引く1に等しくなるように固定される(MaxPaletteIndex ‐ 1に固定される)。CUの第1のサンプルにおいて、AdjustedMaxPaletteIndexは、MaxPaletteIndexに等しい。AdjustedMaxPaletteIndexは、予測器または最後に符号化されたインデックスがエスケープサンプルであってもなくても、独立している。このパラメータは、固定長符号符号化またはtruncate binary符号符号化のインデックス符号化に用いられることができる。
I.エスケープインデックスからインデックスを予測する
予測元(prediction source)(例えば、上記インデックスまたは左のインデックス)がエスケープインデックスの場合、現在のサンプルのインデックスは、エスケープサンプルとして推定される。次いで、現在のサンプル用のエスケープ値がシグナリングされる。
例えば、現在のpalette_runがコピーアバッヴモードとしてシグナリングされ、少なくとも1つの上記サンプルがエスケープインデックスの場合、エスケープインデックスを有するサンプルは、エスケープサンプルとして推定される。次いで、エスケープ値がシグナリングされる。
もう1つの実施例では、palette_runがコピーレフトモードとしてシグナリングされ、左のインデックスがエスケープインデックスの場合、現在のサンプルは、エスケープサンプルとして推定される。次いで、エスケープ値がシグナリングされる。従って、現在のpalette_runがコピーインデックスモードとしてシグナリングされ、新しいシグナリングされたインデックスがエスケープインデックスの場合、palette_runと関連した全てのサンプルは、エスケープサンプルとして推定される。次いで、エスケープ値がシグナリングされる。
この実施例では、palette_runのNサンプルがエスケープインデックスとして推定されるとき、Mエスケープ画素値がシグナリングされ、NおよびMは、正の整数である。Mは、Nと等しいことができ、個々のエスケープ画素値は、このケースにおいてpalette_runの全てのサンプル用にシグナリングされる。Mは、Nより小さく、エスケープ画素値は、palette_runの一部のサンプルに送信され、余剰のサンプルは、送信されたエスケープ値をシェアする。例えば、Mは、1つであり、全てのサンプルに送信された1つのエスケープ値は、エスケープインデックスとして推定されてこのエスケープ値をシェアする。
J.導出された、または所定のインデックスを用いて、エスケープインデックスからインデックスを予測する
予測元(例えば、上記インデックスまたは左のインデックス)がエスケープインデックスの場合、現在のサンプルのインデックスは、予測元が予測のために用いられる場合、導出された、または所定のインデックスとして推定される。所定のインデックスは、0であることができる。
例えば、現在のpalette_runがコピーアバッヴモードとしてシグナリングされ、少なくとも1つの上記サンプルがエスケープインデックスの場合、エスケープインデックスを有するサンプルは、関連する予測モードが用いられる場合、導出された、または所定のインデックスとして推定される。所定のインデックスは、0であることができる。
もう1つの実施例では、palette_runがコピーインデックスモードとしてシグナリングされ、左のインデックスがエスケープインデックスの場合、現在のサンプルは、関連する予測モードが用いられる場合、導出された、または所定のインデックスとして推定される。所定のインデックスは、0であることができる。
もう1つの実施例では、現在のpalette_runがコピーインデックスモードによってシグナリングされた場合、palette_run値は、シグナリングされ、新しいシグナリングされたインデックスがエスケープインデックであるかどうかを示す。新しいシグナリングされたインデックスがエスケープインデックスである場合、palette_runの第1のサンプルは、エスケープインデックスとして推定され、余剰のサンプルは、導出された、または所定のインデックスとして推定される。所定のインデックスは、0であることができる。
K.インデックス符号化の冗長インデックスを除去する
SCM 2.0では、デコーダは、冗長インデックスが除去されることができるようにいくつかの条件をチェックする必要がある。例えば、デコーダは、前のpalette_runがコピーアバッヴモードであるかどうかと、上記サンプルがエスケープインデックスとして符号化されないかどうかをチェックすることができる。両方の条件が真である場合、上記サンプルのインデックスは、冗長インデックス値として処理され、インデックス符号化の間に除去されることができる。
一実施形態では、条件のチェックは、解析の段階で除去されることができる。コピーインデックスモードがCUの第1のサンプル以外の任意のサンプルの位置に用いられる場合、少なくとも1つの冗長インデックス値が存在する。従って、解析の段階では、デコーダは、条件のチェックなしに固定された冗長インデックスの数(例えば、1)を直接除去することができる。
いずれかの予測方法がCU(CUの境界をまたぐ予測)の第1サンプルに用いられた場合、前述のエスケープ画素予測は、上述の冗長の除去と組み合わせられることができる。インデックス値の解析方法は、以下のように定義されることができる。コピーインデックスモードが任意のサンプルの位置に用いられる場合、少なくとも1つの冗長インデックス値が存在する。従って、解析の段階では、デコーダは、条件のチェックなしに固定された冗長インデックスを直接除去することができる。
L.インデックス符号化の冗長インデックスの除去後、インデックス値を再構築する
インデックスの再構築の段階では、デコーダは、除去された冗長インデックス値を計算する。解析されたインデックス値が除去された冗長インデックス値以上の場合、再構築されたインデックス値は、解析されたインデックス値に1を加えた値と等しい。等しくない場合、再構築されたインデックス値は、解析されたインデックス値である。
“I.エスケープインデックスからインデックスを予測する”に開示された実施形態に基づいて、予測元がエスケープインデックスの場合、除去された冗長インデックス値は、エスケープインデックス値である。
“J.導出された、または所定のインデックスを用いて、エスケープインデックスからインデックスを予測する” に開示された実施形態に基づいて、予測元がエスケープインデックスの場合、除去された冗長インデックス値は、導出された、または所定のインデックスである。所定のインデックスは0である。
M.隣接画素からカラーインデックスマップ符号化を予測する
現在のCUの主要のカラーインデックスマップは、現在のCUの隣接画素(NP)から予測されることができる。カラーインデックスマップを符号化するとき、エンコーダ/デコーダは、まず、隣接画素(NP)を決定することができる。PNは、現在の符号化ユニットのカラーインデックスを予測するのに用いられることができる。予測の前、NPの画素値は、主要のカラーテーブルによってカラーインデックス内にマッピングされることができ、マッピングされたカラーインデックスは、現在の符号化ユニットのカラーインデックスを予測するのに用いられる。例えば、表1に示されるように、現在の符号化ユニットの主要なカラーテーブルを用いることによって、NPの画素値は、図3Aと図3Bに示されたようにカラーインデックス内にマッピングされることができる。隣接画素値は、イタリック体と括弧で示され、マッピングされたカラーインデックスは、各NPの画素値の下方に示される。
NPは、任意の前に復号化された、または再構築された画素であることができ、空間的に隣接するサンプルまたは時間的に隣接するサンプル、および各剰余を含む。隣接画素は、サンプル適応オフセット(SAO)またはデブロッキングフィルタなどのループ内フィルタのない再構築された画素であることができる。隣接画素は、SAO、デブロッキングフィルタ、またはSAOおよびデブロッキングフィルタの両方でフィルタリングされた、再構築された画素であることもできる。時間的NPは、参照画像の同一位置にある、または動きベクトルで示された位置にある画素であることができる。一例実施例では、NPは、最も近い上記列、および最も近い左の行の画素に簡素化される。
符号化の間、カラーインデックスは、NPによって予測されることができる。図4は、画素のカラーインデックスが上記NPによって測定された実施例を示している。第1の画素のインデックスは、この実施例では、1として復号化される。
NPのカラー値をカラーインデックスにマッピングする量子化方法を簡素化するために、デコーダは、パレットの一部の色だけをテストすることができる。NPに適合する色がない場合、デコーダは、固定された、または導出されたインデックスをNPに割り当てることができる。例えば、デコーダは、Ntest1からNtest2のカラーインデックスのみをテストする。適合する色がない場合、デコーダはNPを割り当て、インデックスNtest3とNtest3は、0であることができる。Ntest1とNtest2は、固定される、または導出されることができる。Ntest1とNtest2は、CUサイズに基づいて導出されることができる。
NPに適合する色を識別するために、デコーダはNtestカラーをNPとテストすることもできる。テストされた色の間の違いがCtest1であり、NPがしきい値より小さい場合、NPは、インデックスCtest1に割り当てられる。しきい値は固定される、または導出されることができる。例えば、しきい値は、QP設定に基づいて導出されることができる。NPのスレッショルド値より小さい、それに対応した違いを有する1つ以上のテストされた色がある場合、NPは、より小さい違いを有するテストされた色に量子化されることができる。
カラーインデックスにNPの値の量子化を簡素化するために、NPのスレッショルド値より小さい、違いを有する1つ以上のテストされた色がある場合、NPは、最新のテストされた色に量子化されることができる。色をテストする順序は、最大のインデックスから最小のインデックスの順序(即ち、最小発生インデックスから最大発生インデックス)であることができる。言い換えれば、それらの両方が異なるスレッショルド値内にあるとき、より大きい発生インデックスは、より小さい発生インデックスを上書きする。
もう1つの実施形態では、NPのスレッショルド値より小さい、違いを有する1つ以上のテストされた色がある場合、NPは、最初のテストされた色に量子化されることができる。色をテストする順最小のインデックスから最大のインデックスの順序(即ち、最大発生インデックスから最小発生インデックス)であることができる。言い換えれば、それらの両方が異なるスレッショルド値内にあるとき、より大きい発生インデックスは、より小さい発生インデックスを上書きする。テストプロセスは、任意のテストカラーが適合された場合、早期に終了することができる。
カラーインデックスにNPの値の量子化を簡素化するもう1つの方法において、デコーダは、カラー値のNMSB_COLOR MSBsのみを用いて、パレットのカラーを有する画素と比較することができる。NMSB_COLORは、固定される、または導出されることができる。NMSB_COLORは、CUサイズに基づいて導出されることができる。異なるカラーコンポーネントにおいて、NMSB_COLORは、異なることができる。例えば、Y/GコンポーネントのNMSB_COLORは、UV/RBコンポーネントのNMSB_COLOR より大きいものとすることができる。
上述の“予測モードのエスケープカラー(Escape color with prediction mode)” および “NPからカラーインデックスマップ符号化を予測する(Prediction for color index map coding from NPs)”の技術は、統一されることができる。例えば、デコーダは、“Prediction for color index map coding from NPs”において、NPをエスケープインデックス内に直接量子化することができる。結果、第1の列の画素がコピーアバッヴモードとしてシグナリングされた場合、画素は、エスケープインデックスから予測されることができる。エスケープインデックスから予測を処理するには、“コピーモードで再構築された値を直接コピーする(Direct copy of the reconstructed value in the copy mode)” または “エスケープサンプル予測器用のコピーモードで再構築された値を直接コピーする(Direct copy of the reconstructed value in the copy mode for the Escape sample predictor)”。言い換えれば、予測器は、NPの再構築された画素値を第1の列の画素にコピーする。第1の列の上方から予測された画素の再構築されたインデックスは、エスケープインデックスとして推定される。
本発明の1つの態様は、“Escape”インデックスを符号化するカラーインデックス符号化に取り組んでいる。インデックス“Escape”は、画素値がパレット表のどのインデックスにもマッピングされることができない画素にある。カラーインデックス符号化のさまざまな実施形態が以下に述べられる。
i.エスケープのラン(run)
JCTVC-N0247に開示されたパレット符号化スキームでは、“copy_index mode” およびインデックス “Escape”がまずシグナリングされ、次いでインデックス “Escape”を有する画素を符号化するためにその実際の画素値をシグナリングする。インデックス “Escape”を有する画素が連続して配置されたとき、このプロセスは、インデックス “Escape”を有する各画素に対して繰り返される。例えば、{“copy_index mode”, “Escape index”, value}に対応する構文の設定は、インデックス “Escape”を有する連続した画素に対して繰り返されることができる。1つの実施形態では、“copy_index mode” または “copy_above mode”に加えて、新しい予測モード(例えば、“Escape run mode”)がエスケープインデックスに含まれる。上述のモードのシグナリング後、インデックス “Escape”をシグナリングすることなく、“number of run”および画素値がシグナリングされる。例示的なプロセスが以下に述べられる。
1)各位置において、フラグが送信され、“copy_above mode”、“copy_index mode”、および “Escape run mode”の中から選ばれた予測モードを示す。
2)“copy_above mode” が用いられた場合、 “palette_run”は、フラグに次いで送信される。現在の位置からのランの数のインデックスは、スキャンの順序に沿った上記ラインのそれらと同じである。
3)“copy_above mode” が用いられた場合、“palette_run”は、フラグの後、“palette_run”に次いでシグナリングされる。ランの数においては、インデックスは、シグナリングされたインデックスと同じである。
4)“Escape run mode”が用いられた場合、 “palette_run”がシグナリングされる。ランの数の画素値がシグナリングされる。
ii.コピーアバッヴモードのエスケープ
画素が“copy_above mode”のとき、画素のインデックスは、スキャンの方向に沿ったその上方画素と同じである。従来技術は、エスケープ画素またはエスケープインデックスが“copy_above mode”のランに含まれているとき、プロセスを定義していない。1つの実施形態では、“copy_above mode”のランがエスケープインデックスを含んでもいなくてもシグナリングされる。この実施形態に基づいた例示的なプロセスおよびシグナリングが以下に述べられる。
1)“copy_above mode”が用いられた場合、 “palette_run”は、モードフラグに次いでシグナリングされる。現在の位置からのランの数のインデックスは、スキャンの順序に沿った上記ラインのそれらと同じである。
2)ランの数の後、“Escape in the run” フラグは、送信され、任意のエスケープピクセルが “copy_above”画素に存在するかどうかを示す。
3)“Escape in the run” が真である場合、これらのエスケープ画素の画素値は、順次にシグナリングされる。
上述の実施例では、エスケープインデックスの数が導出される。もう1つの実施形態では、“copy_above mode”の現在のセットの“Escape”インデックスの数は、画素値をシグナリングする前に明示的にシグナリングされる。この明示的なシグナリングは、“Escape in the run”フラグと代替することができる。
iii.“palette_run”のシグナリング
“palette_run”は、インデックスのシグナリング後、またはシグナリング前にシグナリングされることができる。従来の技術では、“number of runs”は、インデックスの後にシグナリングされる。本発明の実施形態では、“palette_run”のシグナリングの順序は、変えられる。例えば、“palette_run”は、“index”が存在するときに“index”の前に、または“index”が存在しないときに予測モードの後にシグナリングされる。実施形態に基づいた例示的なプロセスおよびシグナリングは、以下に述べられる。
1)各位置において、まず、フラグが送信され、“copy_above mode”および“copy_index mode”から選ばれた予測モードを示す。
2)“palette_run”が送信される。
3)“copy_above mode”が用いられたとき、現在の位置からのランの数のインデックスは、スキャンの順序に沿った上記ラインのそれらと同じである。
4)“copy_index mode”が用いられたとき、“index”は、フラグの後、シグナリングされる。
a.“index”が“Escape”の場合、現在の位置からのランの数の画素値がシグナリングされる。
b.“index”がパレット表にある場合、現在の位置からのランの数のインデックスは、シグナリングされたインデックスと同じである。
上述の“palette_run”のシグナリングの技術は、本発明で述べられた他の技術と組み合わせられる。
他の実施例では、“palette_run”は、予測モードおよびインデックスの前にシグナリングされる。例示的なシグナリングおよびプロセスは以下に述べられる。
1)各位置では、“palette_run”がシグナリングされる。
2)フラグが“palette_run”に次いでシグナリングされ、“copy_above mode” および “copy_index mode”から選ばれた予測モードを示す。
a.“copy_above mode” が用いられた場合、のそれらと同じ現在の位置からのランの数のインデックスは、スキャンの順序に沿った上記ラインのそれらと同じである。
b.“copy_index mode”が用いられたとき、“index”は、フラグの後、シグナリングされる。
i.“index”が“Escape”の場合、現在の位置からのランの数の画素値がシグナリングされる。
ii.“index”がパレット表にある場合、現在の位置からのランの数のインデックスは、シグナリングされたインデックスと同じである。
上述の“palette_run”のシグナリングの技術は、本発明で述べられた他の技術と組み合わせられる。
もう1つの実施形態では、“palette_run”が1と等しいとき、インデックスが現在の位置に対してシグナリングされる。言い換えれば、予測モードのシグナリングが必要ない。インデックスがエスケープの場合、画素値はエスケープインデックスの後、シグナリングされる。例示的なシグナリングおよびプロセスは以下に示される。
1)各位置では、“palette_run”がシグナリングされる。
2)“palette_run”が1と等しいとき、“index”がシグナリングされる。また、“index”が“Escape”の場合、画素値がシグナリングされる。
3)その他(即ち、“palette_run”が1より大きい)
フラグが“palette_run”に次いでシグナリングされ、“copy_above mode” および “copy_index mode”から選ばれた予測モードを示す。
a.“copy_above mode” が用いられた場合、のそれらと同じ現在の位置からのランの数のインデックスは、スキャンの順序に沿った上記ラインのそれらと同じである。
b.“copy_index mode”が用いられたとき、“index”は、フラグの後、シグナリングされる。
i.“index”が“Escape”の場合、現在の位置からのランの数の画素値がシグナリングされる。
ii.“index”がパレット表にある場合、現在の位置からのランの数のインデックスは、シグナリングされたインデックスと同じである。
上述の“palette_run”のシグナリングの技術は、本発明で述べられた他の技術と組み合わせられる。
iv.“Escape”の画素値をシグナリングする
“Escape”インデックスに対応する画素値がシグナリングされたとき、実際値が直接シグナリングされる。サンプル値を直接シグナリングする代わりに、実際値と参照値の間の違いもシグナリングされることができる(即ち、差分符号化)。従来の技術では、差動符号化の参照値は、同じCUの既に再構築されたエスケープ値に基づいている。本発明のいくつかの実施形態では、他の参照値も用いられることができる。例えば、参照値は、直接シグナリングされる、または導出されることができる。もう1つの実施例では、参照値は、パレット予測表の第N番目のインデックスであることができ、インデックスNと値差分がシグナリングされる。またもう1つの実施例では、参照値は、隣接ブロックから再構築された値であることができる。参照値は、再構築された従来のイントラ/インター、パレット値、またはエスケープ値であることができる。参照値は、連続した“Escape”画素の最小画素値であることができる。また、参照値は、連続した“Escape”画素のN番目の値であることができる。
N.遷移コピー(transition copy; TC)予測のヒルベルト(Hilbert)インデックススキャン
遷移コピー(TC)予測では、値“palette_run” (例えば、N)が送信、または導出されて、現在の画素および以下のN画素において、パレットインデックスは、遷移コピー表導出(transition−copy−table−derived; TCT derived)インデックスと等しい。Nは1であることができる。
符号化の間、デコーダは、遷移コピー表(transition copy table; TCT)を維持し、前のK復号化インデックスと次のNインデックスの間の関係を符号化する。次いで、新しいNインデックスを復号する前に、デコーダは、前のK復号化インデックスを用いて、以下のNインデックスの予測パターンを探索する。NおよびKは、送信または導出される。
遷移コピーにおいて、ブロック内のカラーインデックスは、ブロックを通過するスキャンパターンに基づいて処理される。本発明の実施形態に基づいて、インデックスマップは、ヒルベルトスキャンの順序を用いてスキャンされる。ヒルベルトスキャンから得られたランレングスが符号化される。開始位置は、ヒルベルトスキャン用に変えられることができる。インデックスマップは、まず回転されて、次いでスキャンされる。スキャンパターンは、例えば、JCTVC-R0348で開示されたこれらのように、異なるパレット関連符号化用に用いられることができる。
O.冗長の予測モードの構文を除去する
本発明の1つの実施形態は、予測モードが冗長である場合、予測モードの構文を除去する。例えば、上述の画素がエスケープ画素の場合、コピーアバッヴモードは、除去されることができ、予測モードがコピーインデックスモードとして推定されることができる。
もう1つの実施例では、最後の予測モードがコピーインデックスモードであり、上方画素は、エスケープ画素でなく、上方画素と前の画素のインデックスは、同じである場合、コピーアバッヴモードは、除去されることができる。予測モードは、コピーインデックスモードとして推定されることができる。
またもう1つの実施例では、最後の予測モードがコピーインデックスモードであり、上方画素と前の画素のインデックスは、同じである場合、コピーアバッヴモードは、除去されることができる。予測モードは、コピーインデックスモードとして推定されることができる。
またもう1つの実施例では、上方画素がエスケープ画素である場合、または最後の予測モードがコピーインデックスモードであり、上方画素と前の画素のインデックスが同じである場合、コピーアバッヴモードは、除去されることができる。予測モードは、コピーインデックスモードとして推定されることができる。
コピーアバッヴランモードの予測元を改善する
パレットコーディングでは、現在の画素の冗長インデックスIrun_redは、最後の符号化した予測モードから導出される。最後の符号化した予測モード以外の予測モードにおいては、第1のインデックス予測器がIrun_redと同じである場合、第1のインデックス予測器は、固定されたインデックス、または導出されたインデックスである、置換インデックス(replacement index)によって置き換えられることができる。置換インデックスは、0または最小値(smallest possible)、およびIrun_redと等しくない非冗長インデックス(non−redundant index)であることができる。例えば、Irun_redが0である場合、置換インデックスは、1に設定されることができる。または、置換インデックスは、0に設定されることができる。インデックスの置換方法は、Irun_redがエスケープインデックスと等しい場合、無効にされることができる。
SCM 2.0では、前の予測モードがコピーアバッヴモードである場合、現在のインデックスは、上記インデックスと同じであることができない。または、現在のインデックス符号化は、コピーアバッヴモードの前のラン内に併合されることができる。この冗長インデックス値は、Irun_redと呼ばれる。図5Aは、コピーアバッヴモードと関連した冗長の例を示しており、現在のサンプルは、“?”と示され、上記インデックスは“A”である。現在のインデックスは、“A”であることはできず、且つインデックスAは、現在のインデックスを符号化する冗長である。従って、このケースでは、予測元のリファイメント(refinement)は、他の予測モードが用いられる場合、開示される。例えば、予測モードがコピーアバッヴ右(copy−above−right)モードの場合、上記右画素のインデックスはAであることはできない。これは、固定されたインデックス、または導出されたインデックスに対応した置換インデックスによって置き換えられることができる。置換インデックスは、図5Bに示されたインデックスCであることができ、“C”は、0または最小値、およびIrun_redと等しくない非冗長インデックスであることができる。例えば、Irun_redが0である場合、インデックスCは、1に設定されることができる。または、インデックスCは、0に設定されることができる。
もう1つの実施形態では、前の予測モードがコピーインデックスモードである場合、現在のインデックスは、左のインデックス現在のインデックスは、上記インデックスと同じであることができない。または、現在のインデックス符号化は、コピーアバッヴモードの前のラン内に併合されることができる。この冗長インデックス値は、Irun_redと呼ばれる。図6Aは、コピーアバッヴモードと関連した冗長の例を示しており、現在のサンプルは、“?”と示され、上記インデックスは“A”である。しかしながら、現在の符号化されるべき(to−be−encode)インデックスの上記インデックスがIrun_redと等しい場合、現在のインデックスのコピーアバッヴ予測は、冗長である。従って、このケースでは、コピーアバッヴモードが用いられる場合、上述のインデックスのインデックス予測器は、置き換えられる。
現在のto−be−encodeインデックス、例えば、図6AのインデックスAがIrun_redと等しい場合、デコーダは、図6BのインデックスCのように、固定されたインデックスまたは導出されたインデックスに対応した置換インデックスによってコピーアバッヴモードの上記インデックスのインデックス予測器を置き換えることができる。インデックスCは、0または最小値、およびIrun_redと等しくない非冗長インデックス(non−redundant index)であることができる。例えば、Irun_redが0である場合、インデックスCは、1に設定されることができる。または、インデックスCは、0に設定されることができる。
本実施形態に基づいたもう1つの実施例では、Irun_redは、任意の予測モードの冗長インデックス、例えば、コピーアバッヴ2列モード(copy−above−2−row−mode)の上記2列のインデックスであることができる。最後の符号化されたモードがコピーインデックスモードであり、前の符号化されたインデックスがIrun_redと同じ場合、予測モード(例えば、コピーアバッヴ2列モードの上記2列のインデックス)のIrun_redは、導出されたインデックスと置き換えられることができる。
本実施形態に基づいたまたもう1つの実施例では、コピーアバッヴモードが選ばれることができる符号化モードの1つである場合、予測モードは、コピーインデックスモードのランがコピーアバッヴモードのランより、ずっと大きくても、コピーアバッヴモードに設定される。
予測器が置換インデックスによって置き換えられた場合、コピーインデックスモードのインデックス符号化は、変更されることができる。2つの冗長インデックス(即ち、Irun_redおよび置換インデックス)は、除去されることができる。例えば、最後の符号化されたモードがコピーインデックスモードであり、上記インデックスが前のインデックスと同じであり、且つ上記インデックスがエスケープインデックスでない場合、2つのインデックスは、現在の画素用のコピーインデックスモードのインデックス符号化で除去されることができる。2つのインデックスの1つは、前のインデックスであり、もう1つは、置換インデックスである。
実施形態に基づいたまたもう1つの実施例では、最後の符号化されたモードがコピーインデックスモードであり、上記インデックスが前のインデックスと同じである場合、最大値(maximum possible)のインデックスは、2より大きく、上記インデックスは、エスケープでなく、2つのインデックスは、現在の画素のコピーインデックスモードのインデックス符号化で除去されることができる。2つのインデックスの1つは、前のインデックスであり、もう1つは、置換インデックスである。
本発明に基づいたまたもう1つの実施例では、最後の符号化されたモードがコピーインデックスモードであり、上記インデックスが前のインデックスと同じであり、且つ最大値のインデックスが2より大きい場合、2つのインデックスは、現在の画素用のコピーインデックスモードのインデックス符号化で除去されることができる。2つのインデックスの1つは、前のインデックスであり、もう1つは、置換インデックスである。
本発明に基づいた実施形態は、もう1つのインデックス冗長をチェックする。この技術は、この発明で前に開示されたTCリファイメントプロセスに適用されることもできる。従って、インデックス冗長に基づいてTC予測器をリファインするとき、デコーダも更なる冗長を上述の技術によってチェックされるように検討することができる
Q.隣接画素からカラーインデックスマップ符号化の冗長インデックスを除去する
本発明において上述したように、インデックス冗長は、SCM−2.0に存在する。前のランがコピー上述ランである場合、現在のインデックスは、新しいコピー左ランで符号化されるとき、現在のインデックスの上記インデックスと同じであることができない。または、現在のインデックス符号化は、前のラン内に併合されることができる。一方では、SCM−2.0では、第1の列にコピーアバッヴランがない。従って、デコーダは、第1の列にあるコピーアバッヴランの冗長インデックスのチェックを行わない。
もう1つの実施形態に基づいて、冗長インデックスの除去も第1の列に適用される。冗長インデックスの除去プロセスは、隣接画素(NP)に基づいて変更される。第1の列の画素を符号化するとき、エンコーダは、前のランがコピーアバッヴランであるかどうかをチェックする。現在のインデックスは、それが新しいコピー左ランで符号化されたとき、現在のインデックスの上記NPのインデックスと同じであることができない。このケースでは、Irun_redは、現在のインデックスの上記NPのインデックスと等しい。
解析スループットを向上させるために、デコーダは、解析の段階で符号化されたインデックス値(即ち、Irun_redを除去した)のみを解析し、再構築の段階で真のパレットインデックス(即ち、Irun_redを増加した)を再構築することができる。従って、NPからカラーインデックスの量子化プロセスは、再構築の段階に移動されて、解析スループットを向上させることができる。
上の記述が提示されて、当業者に、特定のアプリケーションとその要求のコンテキストに記述される通り、本発明を行うことができる。当業者なら、記述された具体例への各種修正が理解でき、ここで定義される一般原則は別の実施例にも応用できる。よって、本発明は、記述される特定の実施例に制限することを目的としておらず、原理と新規特徴と一致する最大範囲に一致する。上述の記述において、本発明の十分な理解を提供するため、各種特定の詳細が説明される。当業者なら、本発明が行えることが理解できる。
上述の本発明の具体例は、各種ハードウェア、ソフトウェアコード、または、それらの組み合わせで実行される。例えば、本発明の具体例は、画像圧縮チップに整合される回路、または、画像圧縮ソフトウェアに整合されるプログラムコードで、上述の処理を実行する。本発明の具体例は、デジタルシグナルプロセッサ(DSP)で実行されるプログラムコードで、上述の処理を実行する。本発明は、さらに、コンピュータプロセッサ、デジタルシグナルプロセッサ、マイクロプロセッサ、または、フィールドプログラマブルゲートアレイ(FPGA)により実行される複数の機能を含む。これらのプロセッサは、本発明により具体化される特定の方法を定義する機械読み取り可能ソフトウェアコード、または、ファームウェアコードを実行することにより、本発明による特定のタスクを実行するように設定される。ソフトウェアコード、または、ファームウェアコードは、異なるプログラミング言語、および、異なるフォーマット、または、スタイルで開発される。ソフトウェアコードは、さらに、異なるターゲットプラットフォームにコンパイルされる。しかし、本発明によるタスクを実行するソフトウェアコードの異なるコードフォーマット、スタイル、および、言語、および、設定コードのその他の手段は、本発明の精神を逸脱しない。
本発明では好ましい実施例を前述の通り開示したが、これらは決して本発明を限定するものではなく、当該技術を熟知する者なら誰でも、本発明の精神と領域を脱しない範囲内で各種の変動や潤色を加えることができ、従って本発明の保護範囲は、特許請求の範囲で指定した内容を基準とする。