(57)【要約】      （修正有）【課題】ゼロサイズパレットに関連する問題を回避するイメージとビデオデータのパレット符号化の方法を提供する。【解決手段】方法は、現在の符号化ユニットＣＵに関連する入力データを受信する工程、現在のＣＵの現在のパレットテーブルの現在のパレットサイズ、あるいは、現在のパレットテーブルに関連する予測パレットサイズと新しいパレットサイズ両方を決定し、予測パレットサイズは、パレット予測器により予測される現在のパレットテーブルのエントリーの第一数量を示し、新しいパレットサイズは、パレット予測器により予測されない現在のパレットテーブルのエントリーの第２の数量を示す工程、及び、パレットサイズに従って、ＣＵレベルのエスケープ画素存在フラグを条件付きでシグナリングし、ＣＵレベルのエスケープ画素存在フラグは、エスケープ画素として符号化される現在のＣＵ中にサンプルがあるかどうか示す工程、を有する。【選択図】図２
2019024208.tif 000002
【特許請求の範囲】
【請求項１】
複数の符号化ユニット(以下、ＣＵと称す)に分割されるピクチャのパレット符号化の方法であって、
現在のＣＵに関連する入力データを受信する工程、
前記現在のＣＵの現在のパレットテーブルの現在のパレットサイズ、あるいは、前記現在のパレットテーブルに関連する予測パレットサイズと新しいパレットサイズ両方を決定し、前記予測パレットサイズは、パレット予測器により予測される前記現在のパレットテーブルのエントリーの第一数量を示し、前記新しいパレットサイズは、前記パレット予測器により予測されない前記現在のパレットテーブルのエントリーの第２の数量を示す工程、および、
現在のパレットサイズ、あるいは、前記予測パレットサイズと前記新しいパレットサイズ両方にしたがって、ＣＵレベルのエスケープ画素存在フラグを条件付きでシグナリングし、前記ＣＵレベルのエスケープ画素存在フラグは、エスケープ画素として符号化される前記現在のＣＵ中にサンプルがあるかどうか示す工程、
を有することを特徴とする方法。
【請求項２】
前記現在のパレットサイズがゼロ、あるいは、予測パレットサイズと新しいパレットサイズ両方がゼロである場合、前記ＣＵレベルのエスケープ画素存在フラグはシグナリングされないことを特徴とする請求項１に記載の方法。
【請求項３】
前記ＣＵレベルのエスケープ画素存在フラグは、１であると推定されることを特徴とする請求項２に記載の方法。
【請求項４】
前記現在のパレットサイズがゼロである、あるいは、前記予測パレットサイズと前記新しいパレットサイズ両方がゼロである場合、前記ＣＵレベルのエスケープ画素存在フラグが１に制限されることを特徴とする請求項１に記載の方法。
【請求項５】
前記予測パレットサイズと前記新しいパレットサイズ両方がゼロである場合、前記現在のパレットテーブルの前記現在のパレットサイズがゼロに設定されることを特徴とする請求項１に記載の方法。
【請求項６】
前記現在のパレットテーブルの前記現在のパレットサイズは、最後のパレット符号化ＣＵの前のパレットテーブルに関連することを特徴とする請求項１に記載の方法。
【請求項７】
複数の符号化ユニット(以下、ＣＵと称す)に分割されるピクチャのパレット符号化を実行するためのプロセッサを有する装置であって、
前記プロセッサは、
現在のＣＵに関連する入力データを取得し、
前記現在のＣＵの現在のパレットテーブルの現在のパレットサイズ、あるいは、前記現在のパレットテーブルに関連する予測パレットサイズと新しいパレットサイズ両方を決定し、前記予測パレットサイズは、パレット予測器により予測される前記現在のパレットテーブルのエントリーの第一数量を示し、前記新しいパレットサイズは、前記パレット予測器により予測されない前記現在のパレットテーブルのエントリーの第２の数量を示し、
現在のパレットサイズ、あるいは、前記予測パレットサイズと前記新しいパレットサイズ両方にしたがって、ＣＵレベルのエスケープ画素存在フラグを条件付きでシグナリングし、前記ＣＵレベルのエスケープ画素存在フラグは、エスケープ画素として符号化される前記現在のＣＵ中にサンプルがあるかどうか示す、ことを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この出願は、２０１４年５月２３日に出願された米国特許仮出願番号６２/００２２２１、２０１４年６月２０日に出願された米国特許仮出願番号６２/０１４９５９、２０１４年７月３０日に出願された米国特許仮出願番号６２/０３０７１４、２０１４年８月１１日に出願された米国特許仮出願番号６２/０３５６２５、２０１４年８月２１日に出願された米国特許仮出願番号６２/０４００２０２、および、２０１４年９月２２日に出願されたＰＣＴ特許出願番号/ＣＮ２０１４/０８７０８２から優先権を主張する。米国特許仮出願、および、ＰＣＴ特許出願は引用によって本願に援用される。
【０００２】
本発明は、ビデオデータのカラーインデックス符号化に関するものであって、特に、パレットサイズがゼロであるとき、問題を解消する方法を開示する。
【背景技術】
【０００３】
高効率ビデオコーディング(ＨＥＶＣ)は、近年開発されている新しい符号化標準である。高効率ビデオコーディング(ＨＥＶＣ)システムにおいて、H.264/AVCの固定サイズのマイクロブロックは、コーディングユニット(ＣＵ)と称されるフレキシブルなブロックにより代替される。ＣＵ中の画素は、同じ符号化パラメータを共有して、符号化効率を改善する。ＣＵは、ＨＥＶＣ中、符号化ツリーユニット(ＣＴＵ)とも称される最大ＣＵ(ＬＣＵ)から始まる。コーディングユニットの概念に加え、予測ユニット(ＰＵ)の概念も、また、ＨＥＶＣに導入される。一旦、ＣＵ階層ツリーの分割が行われると、各リーフＣＵは、さらに、予測タイプおよびＰＵ分割にしたがって、１つ以上の予測ユニット(ＰＵ)に分割される。
【０００４】
高効率ビデオコーディング(ＨＥＶＣ)標準の発展に伴い、ＨＥＶＣの拡張の発展も始まっている。ＨＥＶＣ拡張は、非-４:２:０カラーフォーマット、たとえば、４:２:２、および、４:４:４で標的にする範囲拡張(RExt)、および、１サンプルごとに、高ビット-深さビデオ、たとえば、１２、１４、および、１６ビットを有する。RExtを用いたふさわしいアプリケーションのひとつは、有線または無線接続によるスクリーンシェアリングである。スクリーンコンテンツの特定の特徴のため、符号化ツールが発展するとともに、符号化効率において十分な発展を証明している。それらの間で、カラーインデックスコーディング (別名、メジャーカラーベースのコーディング)技術は、インデックスを用いて、画素のブロックをパレット (メジャーカラー)に示すとともに、空間的冗長性を利用することにより、パレットとインデックスを符号化する。可能な配色の総数が大量である場合、ピクチャ領域中の色の数は、通常、一般のスクリーンコンテンツにとって非常に限られる。これにより、カラーインデックスコーディングは、スクリーンコンテント材料にとって、非常に効果的になる。
【０００５】
ＨＥＶＣ範囲拡張(RExt)の初期開発中、既に、パレット-ベースのコーディングに取り組むいくつかの提案がなされている。たとえば、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) and 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)中で、パレット予測と共有技術が開示されている。JCTVC-N0247において、各カラーコンポーネントのパレットが構築、および、送信される。パレットが、左側隣接ＣＵから予測 (あるいは、シェア)されて、ビットレートを減少させる。その後、それらのパレットインデックスを用いて、所定のブロック中の全画素が符号化される。JCTVC-N0247による符号化プロセスの例は以下のようである。
1.    パレットの送信:カラーインデックステーブルサイズがまず送信され、次に、パレットエレメンツが送信される。
2.    画素値の送信:ＣＵ中の画素が、ラスター走査順序で符号化される。一つ以上の画素の各群において、まず、ランベースモードのフラグが送信されて、“ラン”モードまたは“コピー上方”モードが用いられるかどうかを示す。
2.1    “ラン” モード: “ラン”モードにおいて、まず、パレットインデックスがシグナリングされて、その後に、run値を示す“palette_run”(たとえば、M)が続く。ラン値は、Ｍ個のサンプルの総計がすべて、“ラン”モードを用いて符号化されることを示す。ビットストリームでシグナリングされるのと同じパレットインデックスを有するので、それ以上の情報は、現在の位置および続くＭ位置に送信される必要がない。パレットインデックス (たとえば、i)は、さらに、全部で３個のカラーコンポーネントによりシェアされ、YUV カラースペースのケースにおいて、再構成された画素値が、(Y, U, V) = (paletteY[i], paletteU[i], paletteV[i])であることを意味する。
2.2    “コピー上方” モード: “コピー上方”モードにおいて、値“copy_run” (たとえば、Ｎ)が送信されて、以下のＮ個の位置 (現在のものを含む)に示され、パレットインデックスは、上述のロウ中の対応するパレットインデックスと同じである。
3.    剰余（residue）の送信:ステージ２で送信されるパレットインデックスが画素値に転換されるとともに、画素値に戻されて、予測として用いられる。剰余情報は、ＨＥＶＣ剰余コーディングを用いて送信され、且つ、再構成の予測に加えられる。
【０００６】
JCTVC-N0247で公開される作業のオリジナルバージョンで、各コンポーネントのパレットが構築および送信される。パレットが、その左隣接ＣＵから予測(共有)されて、ビットレートを減少させる。JCTVC-O0218において、パレット中の各エレメントはトリプレットで、３個のカラーコンポーネントの特定の組み合わせを表す。ＣＵ上のパレットの予測符号化が排除される。
【０００７】
Guo 等により、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)で、さらに別のメジャーカラーベースコーディング (カラーインデックスコーディング)方法が開示さている。JCTVC-O0182によると、各コンポーネントのパレットが構成、並びに、送信される。しかし、左ＣＵからのパレット全体の予測に代わって、パレット中の個別のエントリーは、上方ＣＵまたは左ＣＵ中、対応する正確なパレットエントリーから予測される。
【０００８】
JCTVC-O0182によると、予測符号化方法が、画素値の送信のインデックスに適用され、画素ラインは異なるモードにより予測される。とくに、三種のラインモードが、画素ライン、つまり、水平モード、垂直モードと通常モードに用いられる。水平モードにおいて、同じライン中の全画素は同じ値を有する。値が上方画素ラインの第１画素と同じ場合、ラインモードシグナリングビットだけが送信される。そうでなければ、インデックス値も送信される。垂直モードにおいて、現在の画素ラインは上方画素ラインと同じである。これにより、ラインモードシグナリングビットだけが送信される。通常モードにおいて、ライン中の画素は個別に予測される。各画素において、左あるいは上方の隣接画素が予測器として用いられ、且つ、予測符号がデコーダに送信される。更に画素は、メジャーカラーピクセルとエスケープ画素に分類される。メジャーカラーピクセルにおいて、デコーダは、メジャーカラーインデックスとパレットを用いることにより画素値を再構成する。エスケープ画素において、エンコーダはさらに、画素値を送信する。
【０００９】
＜パレットサイズシグナリング＞
ＳＣＭ‐２．０ (Joshi et al., Screen content coding test model 2 (SCM 2), Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC29/WG11, 18th Meeting: Sapporo, JP, 30 June-9 July 2014, Document: 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 WP3 and ISO/IEC JTC 1/SC29/WG11, 18th Meeting: Sapporo, JP, 30 June-9 July 2014, Document: JCTVC-R0348)に基づく。ＳＣＭ‐２．０において、パレットのサイズは、予測パレットのサイズ、および、送信されるパレットサイズに設置される。予測パレットは、前の再構成パレット符号化ＣＵから生成されるパレットである。現在のＣＵがパレットモードとして符号化されるとき、予測パレットにより予測されないそれらのパレットカラーは、直接、ビットストリーム中で送信される。たとえば、現在のＣＵが、６に等しいパレットサイズのパレットモードとして符号化される場合、６個のメジャーカラーのうちの３個が予測パレットから予測され、３個が、直接、ビットストリームにより送信され、送信された３個は、以下のようなサンプル構文を用いてシグナリングされる。
palette_num_signalled_entries  = 3
for ( cIdx = 0; cIdx < NumComp; cIdx++ ) 
for( i = 0; i < palette_num_signalled_entries; i++ )
palette_entries[ cIdx ][ numPredPreviousPalette + i ]
【００１０】
この例において、パレットサイズは６であるので、０から５のパレットインデックスが用いられて、パレットカラーテーブル中で、メジャーカラーとして再構成される各パレット符号化画素を示す。上述の疑似符号化において、palette_num_signalled_entries は、シグナリングされるエントリーの数量を示す。ループインデックス cIdexを有する第一ループが、NumCompカラーコンポーネントの各カラーコンポーネントのループに対応する。ループインデックスiを有する第２ループが、シグナリングされるパレットエントリーのループに対応する。
【００１１】
ＳＣＭ‐２．０において、画素が、エスケープ画素として符号化されることを示し、エスケープ画素のカラーインデックスが、パレットサイズに等しい値としてシグナリングされる。エスケープ画素は、パレット符号化ブロックで符号化されるとき、そのブロックのパレットサイズが１増加し、最後のメジャーカラーインデックスは、一例の実行にしたがって、エスケープ画素のインデックスとして用いられる。上述の例において、メジャーカラーインデックス６は、この画素が、エスケープ画素であることを示す。さらに、ＳＣＭ‐２．０において、一ＣＵレベルエスケープフラグ,palette_escape_val_present_flag, が各パレットＣＵにシグナリングされて、エスケープ画素インデックス化が、このパレットＣＵに符号化されるかどうか示す。
【００１２】
メジャーカラーインデックスの余剰性の除去は、パレットサイズにも影響する、ＳＣＭ‐２．０中の別の符号化ツールである。左側画素がランを有する通常モードとして符号化され、左側画素がエスケープ画素でない場合には、現在の画素と左側画素のメジャーカラーインデックスが等しくないと仮定される。そうでなければ、現在の画素が、左側画素のラン符号化に統合される。別の場合で、左側画素が、コピー上方モードのランで符号化されるとともに、上方画素がエスケープ画素でない場合には、現在の画素と上方画素のメジャーカラーインデックスが等しくないと仮定される。そうでなければ、現在の画素は、左側画素のコピー上方のラン符号化に統合される。ＳＣＭ‐２．０において、上述のケースで余剰性を除去するために、現在の画素を符号化するとき、左側画素のメジャーカラー(あるいは、上方画素のメジャーカラー)がパレットテーブルから除去される。この場合、パレットサイズは、元のサイズが１減少するとみなされる。注意すべきことは、左側画素がコピー上方モードとして符号化されるとともに、上方画素がエスケープ画素である場合、あるいは、左側画素がランモードとして符号化されるとともに、左側画素がエスケープ画素である場合には、上方/左側画素の値 (すなわち、エスケープインデックス)は、現在の画素を符号化するパレットカラーテーブルから除去されず、パレットサイズは１減少されない。
【００１３】
HEVC範囲拡張(RExt)で記述される現存のカラーパレット符号化によると、推定されるパレットサイズ、あるいは、受信されるパレットサイズは０に等しい。０に等しくなるパレットサイズのケースは無意味であるので、ゼロサイズパレットの問題が解消されて、ゼロサイズパレットに関連する起こりうるシステム問題を回避する必要がある。ゼロサイズのパレットテーブルに関連する問題を克服する方法を発展させることが望まれる。
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ゼロサイズパレットに関連する問題を回避するイメージとビデオデータのパレット符号化の方法が開示される。
【課題を解決するための手段】
【００１５】
本発明の実施態様によると、現在のＣＵの現在のパレットテーブルのパレットサイズに関連するサイズ情報は、エスケープ指示フラグに基づいて、条件付きでシグナリングされ、エスケープ指示フラグは、エスケープ画素として符号化される現在のＣＵ中にサンプルがあるかどうか示す。たとえば、エスケープ指示フラグがアサートされない場合、現在のＣＵの現在のパレットテーブルにシグナリングされる構文 palette_size_minus_one は、０から最大パレットサイズマイナス１の範囲に制限され、構文 palette_size_minus_one は、現在のパレットテーブルの現在のパレットサイズマイナス１を示す。この場合、現在のパレットサイズは、(palette_size_minus_one + 1)にしたがって再構成される。
【００１６】
現在のパレットテーブルは、パレット予測を用いて予測される。パレット予測器により予測できない現在のパレットのエントリーは、新しいパレットテーブルを用いて送信される。別の実施態様において、エスケープ指示フラグがアサートされず、予測パレットサイズが、パレット予測器により予測される現在のパレットテーブルのエントリーの数量がゼロであることを示す場合、新しいパレットテーブルの新しいパレットサイズは、０より大きくなるように制限される。たとえば、新しいパレットサイズマイナス１を表すサイズシンタックスは、現在のパレットテーブルにシグナリングされる。したがって、実際の新しいパレットサイズは、ビットストリームプラス１から構文解析される（parsed）サイズシンタックスに基づいて決定される。別の実行において、実際の新しいパレットサイズは、ビットストリームプラス(numPredPreviousPalette == 0 && palette_escape_val_present_flag == 0)から構文解析されるサイズシンタックスに基づいて決定され、numPredPreviousPalette は、予測パレットサイズを表す構文に対応し、palette_escape_val_present_flag は、エスケープ指示フラグに対応する。つまり、予測パレットサイズが０(すなわち、numPredPreviousPalette == 0)で、エスケープ指示フラグがアサートされない (すなわち、palette_escape_ val_present_flag == 0)場合、“1” が、構文解析されるサイズシンタックスに加えられて、実際の新しいパレットサイズを形成する。ビットストリーム中のエスケープ指示フラグの後、サイズシンタックスがシグナリングされる。あるいは、ビットストリーム中のエスケープ指示フラグの後、予測パレットサイズがシグナリングされる。
【００１７】
現在のＣＵの現在のパレットテーブルのパレットサイズは、エンコーダにより、直接、１より大きくなるように制限される。現在のパレットテーブルの復号パレットサイズがゼロである場合、ビットストリームが、非適合ビットストリームであると判断される。
【００１８】
本発明の別の実施態様は、ＣＵレベルのエスケープ画素存在フラグの条件付きシグナリングに取り組む。本発明の実施態様によると、ＣＵレベルのエスケープ画素存在フラグは、現在のパレットサイズ、あるいは、予測パレットサイズと新しいパレットサイズ両方にしたがって、条件付きでシグナリングされ、ＣＵレベルのエスケープ画素存在フラグは、エスケープ画素として符号化される現在のＣＵ中にサンプルがあるかどうか示す。たとえば、現在のパレットサイズがゼロである、あるいは、予測パレットサイズと新しいパレットサイズ両方がゼロである場合、ＣＵレベルのエスケープ画素存在フラグはシグナリングされない。あるいは、ＣＵレベルのエスケープ画素存在フラグは１であると推定される。現在のパレットサイズが０、あるいは、予測パレットサイズと新しいパレットサイズ両方が０である場合、ＣＵレベルのエスケープ画素存在フラグも１に制限される。予測パレットサイズと新しいパレットサイズ両方が０である場合、現在のパレットテーブルの現在のパレットサイズは０に設定される。 
【００１９】
さらに別の実施態様において、ＣＵレベルのエスケープ画素存在フラグが、パレット共有フラグにしたがって、条件付きでシグナリングされ、パレット共有フラグは、現在のＣＵの現在のパレットテーブルが、最後のパレット符号化ＣＵの前のパレットテーブルを共有するかどうか示す。パレット共有フラグがアサートされる場合、ＣＵレベルのエスケープ画素存在フラグは省略される。この場合、ＣＵレベルのエスケープ画素存在フラグは、最後の符号化ＣＵレベルのエスケープ画素存在フラグであると推定される。
【図面の簡単な説明】
【００２０】
【図１】本発明の一実施態様によるパレット符号化を組み込んだビデオ符号化システムのフローチャートである。
【図２】本発明の一実施態様によるパレット符号化を組み込んだビデオ符号化システムのフローチャートである。
【図３】パレット共有フラグによるパレット符号化を組み込んだビデオ符号化システムのフローチャートである。
【発明を実施するための形態】
【００２１】
以下の記述は、本発明を限定するものではない。
【００２２】
ゼロパレットの問題を克服しパレット予測符号化のパフォーマンスを改善する本発明の各種実施態様が開示される。 
【００２３】
＜パレットサイズ制約＞
前述のように、決定される現在のパレットテーブルのパレットサイズは０に等しい。０に等しいパレットサイズのケースは無意味なので、ゼロサイズパレットの問題は、ゼロサイズパレットに関連する起こりうるシステム問題を回避するように解消することが必要である。
【００２４】
各種実施態様が開示されて、ゼロサイズパレット問題を解消する。本実施態様において、構文は、ゼロサイズパレットをもたらすビットストリームの生成からエンコーダを制限するように設計される。たとえば、構文が用いられて、直接、以下のように、現在のパレットテーブルのパレットサイズをシグナリングする。
【００２５】
前記現在のパレットテーブルの前記パレットサイズマイナス１を表す前記構文palette_size_minus_oneの値は、０から最大パレットサイズマイナス１の範囲に制限される。パレットサイズは、この構文を用いて、以下のように再構成される。 
Palette_Size = palette_size_minus_one + 1.
【００２６】
JCTVC-O0218において、エンコーダは、まず、再利用フラグに関連する情報を符号化して、予測器中に再利用されるメジャーカラーの数量を示す。その後、新しいカラーサイズ(“新しいパレットサイズ”として知られる)が符号化されて、シグナリングされる新しいカラーの数量を示す。ゼロサイズパレットのケースを回避するため、再利用カラーサイズがゼロ(すなわち、予測パレットサイズがゼロ)である場合、上記と同じメカニズムが用いられる。つまり、パレットサイズマイナス１を表す構文palette_size_minus_one は、０から最大パレットサイズマイナス１の範囲に制限される。新しいカラーサイズはゼロにならず、新しいカラーサイズマイナス１が符号化される。つまり、ゼロに等しい新しいカラーサイズのケースはシグナリングされない。まず最初に、でコードは、再利用カラーサイズがゼロであるか否かを確認する。再利用カラーサイズがゼロである場合、復号される新しいカラーの数量を指示するために、復号された“新しいカラーサイズ”値は１増やされる。 
【００２７】
０に等しいパレットサイズのケースを回避する他の方法は、直接、パレットのサイズが、意味的にゼロになることを制限することである。たとえば、任意の符号化ブロック(たとえば、符号化ユニット、予測単位)のパレットサイズが０になる任意のビットストリームは、非適合ビットストリームとしてみなされる。 
【００２８】
JCTVC-O0218に用いられるパレット予測フラグにおいて、本発明の実施態様による追加フラグが用いられて、全パレット予測器が再利用されるかどうか示す。パレット予測フラグの前に、このフラグがシグナリングされる。 
【００２９】
JCTVC-N0247において、パレットサイズがまずシグナリングされる場合、パレット予測フラグが送信される。再利用パレットエントリーの数量がすでに、シグナリング済みのパレットサイズに等しい場合、本発明の実施態様は、予測フラグシグナリングを終了する。
【００３０】
シグナリングされる予測フラグの数量は、ＣＵサイズに基づく。たとえば、８x８ＣＵにとって、３２あるいは６４個のパレット予測フラグすべてがシグナリングされる必要があるのではない。これにより、部分的なパレット予測フラグ(たとえば、最初の１６の(ＣＵ幅*２)個のフラグ)だけがシグナリングされる。
【００３１】
＜ゼロサイズパレットに対する条件付きの制限＞
ゼロサイズのパレットテーブルに関連する問題を克服するため、本発明の他の実施態様は、現在のパレットブロック(たとえば、現在のＣＵ)中に任意の符号化エスケープ画素があるかどうかに基づいて、条件付きで、パレットサイズに制限を適用する。エスケープ画素が、現在のパレットブロック (たとえば、ＣＵレベルエスケープフラグ,palette_escape_val_present_flag = 0)で符号化されないとき、制限が適用されて、ゼロサイズパレットのケースを回避する。エスケープ画素が現在のパレットブロック(たとえば、ＣＵレベルエスケープフラグ, palette_escape_ val_present_flag = 1)で符号化されるとき、制限はパレットサイズに適用されない。 
【００３２】
制限がパレットサイズに適用されるとき、本実施態様による構文設計は、エンコーダが、パレットサイズが０になるビットストリームを生成するのを制限する。たとえば、palette_escape_val_present_flag が０である場合、構文は、以下のように、直接、パレットサイズをシグナリングするように設計される。
【００３３】
送信されるパレットの構文 palette_size_minus_one の値は、０から最大パレットサイズマイナス１の範囲内にあるべきであり、構文 palette_size_minus_one は、現在のパレットテーブルの現在のパレットサイズマイナス１を示す。パレットサイズは、以下の構文を用いて再構成される: 
Palette_Size = palette_size_minus_one + 1
【００３４】
０に等しいパレットサイズのケースを回避する別の方法は、直接、パレットのサイズが、意味的にゼロになるのを制限することである。たとえば、エンコーダは、符号化プロセス期間中にこのような制限を含む。それ故に、符号化ブロック(符号化ユニット、予測単位)のパレットサイズが０に等しくなる任意ビットストリームは、非適合ビットストリームとみなされる。
【００３５】
JCTVC-O0218において、まず、ＣＵレベルエスケープフラグ,palette_escape_val_present_flag,がシグナリングされる。再利用フラグの情報がシグナリングされて、再利用される予測器中のメジャーカラーの数量を示す。その後、新しいカラーサイズが符号化されて、シグナリングされる新しいカラーの数量を示す。ゼロサイズパレットのケースを回避するため、palette_escape_val_present_flag が０に等しく(すなわち、ブロック中にエスケープ画素がない)、且つ、再利用カラーサイズ がゼロである場合、新しいカラーサイズはゼロにならず、新しいカラーサイズマイナス１がシグナリングされる。新しいカラーサイズマイナス１の値が、０あるいはそれ以上に制限される。実際の新しいカラーサイズは、構文解析された新しいカラーサイズプラス１に等しい。ゼロサイズパレットを回避する制限の例は以下のようである: 
palette_num_signalled_entries=parse_palette_num_signalled_entries+ ( numPredPreviousPalette == 0 && palette_escape_val_present_flag == 0),
上記式において、palette_num_signalled_entries は新しいカラーサイズであり、 parse_palette_num_ signalled_entriesは構文解析された新しいカラーサイズであり、numPredPreviousPaletteは再利用カラーサイズである。 
【００３６】
本発明の実施態様を組み込んだ構文表が表１に示される。palette_escape_val_present_flagは、parse_palette_num_signalled_entriesの前にシグナリングされる。あるいは、numPredPreviousPaletteの構文解析／導出の前に、palette_escape_val_present_ フラグがシグナリングされる。
【表１】
2019024208.tif 000003
【００３７】
＜ＣＵレベルエスケープフラグの条件付きのシグナリング＞
【００３８】
現存のＳＣＭ‐２．０において、前のパレットテーブル(予測パレットのサイズ)と新しいパレットサイズ(新しい送信パレットのサイズ)からの予測パレットサイズがすべてゼロであるとき、全ての画素は、依然として、エスケープ画素として符号化され、ゼロに等しいメジャーカラーインデックスは、エスケープ画素を示す。つまり、予測パレットサイズと新しいパレットサイズがすべてゼロである場合、ＣＵレベルエスケープフラグは１でなければならず、このＣＵ中に、エスケープ画素/インデックスがあることを示す。 
【００３９】
したがって、本実施態様において、現在のＣＵの現在のパレットテーブルのパレットサイズがゼロである場合、ＣＵレベルエスケープフラグはシグナリングされず、且つ、１であると推定される。現在のパレットテーブルのパレットサイズは、予測パレットサイズと新しいパレットサイズの合計により決定されるので、予測パレットサイズと新しいパレットサイズがすべて０である場合、ＣＵレベルエスケープフラグはシグナリングされず、１であると推定される。あるいは、現在のパレットテーブルのパレットサイズは、最後のパレット符号化ＣＵの前のパレットテーブルに関連する。たとえば、現在のパレットテーブルのパレットサイズと前のパレットテーブルのパレットサイズは等しい。この場合、前のパレットテーブルのパレットサイズがゼロである場合、ＣＵレベルエスケープフラグはシグナリングされず、１であると推定される。
【００４０】
ＳＣＭ‐２．０において、パレット共有フラグがシグナリングされて、現在のＣＵのパレットエントリーが最後の符号化パレットＣＵから複製されることを示す。しかし、ＣＵレベルエスケープフラグは、パレット共有フラグから独立している。ＣＵレベルエスケープフラは、常に、パレット符号化ＣＵでシグナリングされる（signaled）。しかし、パレット共有のコンセプトによると、現在のパレットは、ＣＵレベルエスケープフラグを含む最後のパレット符号化ＣＵからのパレットエントリーを継承すべきである。これにより、パレット共有フラグが１に等しい場合(すなわち、パレット共有がアサートされる)、ＣＵレベルエスケープフラグはシグナリングされず、且つ、最後の符号化ＣＵレベルのエスケープ画素存在フラグであると推定される。
【００４１】
他の実施態様において、予測パレットサイズと新しいパレットサイズがすべてゼロである場合、ＣＵレベルエスケープフラグはシグナリングされず、１であると推定される。さらに他の実施態様において、符号化制限が加えられて、ＣＵレベルエスケープフラグを条件付きでシグナリングする。予測パレットサイズと新しいパレットサイズがすべてゼロである場合、ＣＵレベルエスケープフラグは、１に制限される。そうでなければ、ビットストリームは、適合／合法ビットストリームではない。 
【００４２】
新しいパレットサイズの前で、ＣＵレベルのエスケープがシグナリングされる。予測パレットサイズが０で、ＣＵレベルエスケープフラグが０である場合、新しいパレットサイズが、０より大きくなるように制限される。そうでなければ(すなわち、新しいパレットサイズ = ０)、ビットストリームは、適合／合法ビットストリームではない。 
【００４３】
ＳＣＭ‐２．０において、エスケープ画素は、エスケープインデックスを用いてシグナリングされる。しかしながら、エスケープインデックスの代わりに、明示フラグを用いて、エスケープ画素がシグナリングされてもよい。たとえば、パレットインデックスシグナリングの前、画素レベルのエスケープフラグがシグナリングされて、現在の画素がエスケープ画素であるかどうか示す。フラグが１である場合、現在の画素はエスケープ画素である。各コンポーネント(および、ラン)のエスケープ値がシグナリングされる。そうでなければ(すなわち、画素レベルのエスケープフラグ = 0)、パレットインデックスとランがシグナリングされる。 
【００４４】
画素レベルのエスケープフラグが用いられて、予測パレットサイズと新しいパレットサイズがすべてゼロである場合、画素レベルのエスケープフラグはすべて１でなければならない。これにより、別の実施態様において、画素レベルのエスケープフラグが用いられて、予測パレットサイズと新しいパレットサイズがすべてゼロである場合、画素レベルのエスケープフラグのどれもがシグナリングされず、且つ、画素レベルのエスケープフラグが１であると推定される。さらに別の実施態様において、条件付きのエスケープフラグシグナリングのために、符号化制限が加えられる。画素レベルのエスケープフラグが用いられて、予測パレットサイズと新しいパレットサイズがすべてゼロである場合、画素レベルのエスケープフラグは１に制限される。そうでなければ、ビットストリームは、適合／合法ビットストリームではない。
【００４５】
ＳＣＭ‐２．０において、indexMax パラメータが定義されて、現在のＣＵの最大パレットインデックスを示す。indexMax の定義は以下のようである。
【表２】
2019024208.tif 000004
【００４６】
indexMax は、エスケープ値がパレット中に存在するかどうか (すなわち、palette_escape_val_present_flag)に基づいており、さらに、パレットサイズ(すなわち、palette_size)に基づいている。indexMax は、０以上の整数でなければならない。indexMax が０より小さい場合には、現在のＣＵにパレットがないことを意味する。デコーダは、現在のパレット符号化ＣＵを構文解析ならびに再構成することができない。palette_sizeは０以上の整数なので、palette_size と palette_escape_val_present_flag 両方が０に等しいときだけ、indexMax は０より小さくできる。palette_share_flag, numPredPreviousPalette と num_signalled_palette_entries がすべてゼロに等しいとき、あるいは、palette_share_flag が１に等しくかつ前のパレットサイズが０に等しいとき、パレットサイズは０に等しい。
【００４７】
０以上のindexMax値を制限するため、いくつかの実施態様が、palette_escape_val_present_flag 符号化に開示される。 
【００４８】
実施態様１：palette_escape_val_present_flag 符号化のエンコーダ制限 
【００４９】
palette_sizeが０に等しい場合、 palette_escape_val_present_flagは１に制限される。そうでなければ、ビットストリームは、適合／合法ビットストリームではない。
【００５０】
実施態様２:palette_escape_val_present_flag 符号化の構文制限
【００５１】
palette_sizeが０に等しい場合、 palette_escape_val_present_flagは１に推定される。palette_escape_val_present_flag のシグナリングはこの場合省略される。 
【００５２】
表２中の構文表は、表３に示されるように修正される。パレットサイズ確認(すなわち、 “if(palette_size > 0 )”)が本発明の実施態様にしたがって加えられる。
【表３】
2019024208.tif 000005
示されない場合、palette_escape_val_present_flag は、１に等しいと推定される。
【００５３】
ＳＣＭ‐２．０において、エスケープ画素は、エスケープインデックスを用いることによりシグナリングされる。しかしながら、エスケープインデックスの代わりに、エスケープ画素は明示フラグを用いて符号化されてもよい。たとえば、パレットインデックスシグナリングの前、画素レベルのエスケープフラグがシグナリングされて、現在の画素がエスケープ画素であるかどうか示す。フラグが１である場合、現在の画素はエスケープ画素である。各コンポーネント (および、ラン)のエスケープ値がシグナリングされる。そうでなければ(すなわち、画素レベルのエスケープフラグ= 0)、パレットインデックスとランがシグナリングされる。 
【００５４】
画素レベルのエスケープフラグが用いられ、パレットサイズがゼロである場合、画素レベルのエスケープフラグは全て１でなければならない。これにより、本実施態様によると、画素レベルのエスケープフラグが用いられて、パレットサイズがゼロに等しい場合、全ての画素レベルのエスケープフラグはシグナリングされず、代わりに、これらのフラグは１に推定される。
【００５５】
他の実施態様によると、符号化制限が加えられる。画素レベルのエスケープフラグが用いられて、パレットサイズがゼロである場合、画素レベルのエスケープフラグは１に制限される。そうでなければ、ビットストリームは、適合／合法ビットストリームではない。
【００５６】
＜ＣＵレベルエスケープフラグのコンテキストモデリング＞
ＳＣＭ‐２．０において、ＣＵレベルエスケープフラグは、バイパスビン(bypass bin)で符号化される。符号化効率を改善するため、本発明の実施態様は、エントロピー符号化中のＣＵレベルエスケープフラグに、コンテキスト符号化２値を用いる。 
【００５７】
２個以上のコンテキストがこのフラグに用いられる。ＣＵレベルエスケープフラグのコンテキストフォーメーションは、最後の符号化パレットＣＵのＣＵサイズ、ＣＴＵ深さ、ＣＵ深さ、パレットサイズ (予測パレットサイズ + 新しいパレットサイズ)、予測パレットサイズ、新しいパレットサイズ、ＣＵレベルエスケープフラグ、あるいは、上述の情報の組み合わせに基づいている。
【００５８】
たとえば、ＣＵレベルエスケープフラグのコンテキストフォーメーションはＣＵサイズに基づいている。コンテキストインデックスは、以下のように定式化される:
ctxIdx = (CU_size == 8? 0 : (CU_size == 16 ? 1: 2));       (1)
ctxIdx = (CU_size == 8? 0 :1); あるいは                    (2)
ctxIdx = (CU_size == 16? 0 : 1).                           (3)
【００５９】
他の例において、ＣＵレベルエスケープフラグＣＵレベルエスケープフラグのコンテキストフォーメーションは、ＣＵ深さとＣＴＵ深さに基づく。コンテキストインデックスは、以下のように定式化される:
ctxIdx = (cu_depth);                                       (4)
ctxIdx = max(2, cu_depth);                                 (5)
ctxIdx = max(1, cu_depth);                                 (6)
ctxIdx = min(0, cu_depth-1);                               (7)
ctxIdx = min(0, cu_depth-2);                               (8)
ctxIdx = max(2, max_cu_depth - cu_depth);                  (9)
ctxIdx = max(1, max_cu_depth - cu_depth);                  (10)
ctxIdx = max(2, (max_cu_depth - cu_depth)>>1); あるいは    (11)
ctxIdx = max(1, (max_cu_depth - cu_depth)>>1).             (12)
【００６０】
ＣＵレベルエスケープフラグのコンテキストフォーメーションは、さらに、パレットサイズ (すなわち、予測パレットサイズ、プラス、新しいパレットサイズ)に基づいている。たとえば、コンテキストインデックスは、以下のように定式化される:
ctxIdx = (palette >= K? 0 : 1).                                   (13)
式中、0<=k<=max_palette_sizeであり, ｋは整数である。
【００６１】
ＣＵレベルエスケープフラグのコンテキストフォーメーションは、予測パレットサイズ、あるいは、新しいパレットサイズに基づく。たとえば、コンテキストインデックスは、以下のように定式化される:
ctxIdx = (predicted_palette_size >= K? 0 : 1),                   (14)
式中、0<=k<=max_palette_sizeであり,ｋは整数である; あるいは
ctxIdx = (new_palette-size >= K? 0 : 1),                        (15)
式中、0<=k<=max_palette_sizeであり,ｋは整数である。
【００６２】
ＣＵレベルエスケープフラグのコンテキストフォーメーションは、最後の符号化パレットＣＵのＣＵレベルエスケープフラグに基づいている。たとえば、コンテキストインデックスは、以下のように定式化される:
ctxIdx = last_coded_CU_esc_flag.                                 (16)
【００６３】
＜符号化メジャーカラーインデックスの余剰性除去に用いるパレットサイズにおける条件付きの制限＞
他の実施態様において、冗長性除去は、エスケープ画素がこのパレット符号化ＣＵに符号化されるかどうかに基づくメジャーカラーインデックス符号化に適用される。たとえば、冗長性除去は、palette_escape_val_present_flagに基づいている。現在のパレットブロック中で符号化されるエスケープ画素がない(すなわち、palette_escape_val_present_flag = 0)とき、メジャーカラーインデックス符号化の冗長性除去が適用される。scanPos >0の場合、最大codewordインデックス(すなわち、adjustedIndexMax)はindexMax-1に等しい。そうでなければ、adjustedIndexMaxはindexMaxに等しい。エスケープ画素が現在のパレットブロック(すなわち、palette_escape_val_present_flag=1)で符号化されるとき、メジャーカラーインデックス符号化の冗長性除去は適用されない。最大codeword インデックス(すなわち、adjustedIndexMax)は、全 scanPosのindexMaxに等しい。
【００６４】
図１は、本発明の実施態様によるパレット符号化を組み込んだビデオ符号化システムのフローチャートである。現在のＣＵの現在のパレットテーブルのパレットサイズに関連するサイズ情報は、エスケープ指示フラグに基づいて、条件付きでシグナリングされる。ステップ１１０に示されるように、システムは、現在の符号化ユニット(ＣＵ)に関連する入力データを受信する。入力データは、エンコーダ側で、現在のＣＵのカラー画素データに対応する。入力データは、現在のＣＵに関連する圧縮データに対応する。入力データは、メモリ(たとえば、コンピュータメモリ、バッファ(ＲＡＭあるいはＤＲＡＭ)あるいはその他の媒体)あるいはプロセッサから検索される。ステップ１２０において、エスケープ画素として符号化される現在のＣＵ中にサンプルがあるかどうかに関するエスケープ指示フラグが決定される。スケープ画素として符号化される現在のＣＵ中にサンプルがある場合、エスケープ指示フラグがアサートされる（asserted）。エスケープ画素として符号化される現在のＣＵにサンプルがない場合、エスケープ指示フラグがアサートされない。ステップ１３０において、現在のＣＵの現在のパレットテーブルのパレットサイズに関連するサイズ情報は、エスケープ指示フラグに基づいて、条件付きでシグナリングされる。
【００６５】
図２は、本発明の実施態様によるパレット符号化を組み込んだビデオ符号化システムのフローチャートである。ＣＵレベルのエスケープ画素存在フラグは、現在のパレットサイズ、あるいは、予測パレットサイズと新しいパレットサイズ両方にしたがって、条件付きでシグナリングされる。ステップ２１０に示されるように、システムは、現在の符号化ユニット(ＣＵ)に関連する入力データを受信する。ステップ２２０にて、現在のＣＵの現在のパレットテーブルの現在のパレットサイズ、あるいは、現在のパレットテーブルに関連する予測パレットサイズと新しいパレットサイズ両方が、決定される。予測パレットサイズは、パレット予測器により予測される現在のパレットテーブルのエントリーの第１の数量を示し、新しいパレットサイズは、パレット予測器により予測されない現在のパレットテーブルのエントリーの第２の数量を示す。ステップ２３０において、ＣＵレベルのエスケープ画素存在フラグは、現在のパレットサイズ、あるいは、予測パレットサイズと新しいパレットサイズ両方にしたがって、条件付きでシグナリングされる。ＣＵレベルのエスケープ画素存在フラグは、エスケープ画素として符号化される現在のＣＵ中にサンプルがあるかどうか示す。
【００６６】
図３は、パレット共有フラグによるパレット符号化を組み込んだビデオ符号化システムのフローチャートである。ステップ３１０において、システムは、現在の符号化ユニット(ＣＵ)に関連する入力データを受信する。ステップ３２０において、現在のＣＵの現在のパレットテーブルが、最後のパレット符号化ＣＵの前のパレットテーブルをシェアするかどうかに関するパレット共有フラグが決定される。現在のＣＵの現在のパレットテーブルが、最後のパレット符号化ＣＵの前のパレットテーブルをシェアする場合、パレット共有フラグがアサートされる。現在のＣＵの現在のパレットテーブルが、最後のパレット符号化ＣＵの前のパレットテーブルをシェアしない場合、パレット共有フラグがアサートされない。ステップ３３０において、ＣＵレベルのエスケープ画素存在フラグは、パレット共有フラグにしたがって、条件付きでシグナリングされる。ＣＵレベルのエスケープ画素存在フラグは、エスケープ画素として符号化される現在のＣＵ中にサンプルがあるかどうか示す。
【００６７】
示されるフローチャートは、本発明によるパレット符号化の例を説明するためのものである。当業者は、本発明の思想を脱しない範囲内で、各ステップを修正、アレンジ、分割、結合して、本発明を実行することができる。本開示において、特定の構文と語義が用いられて、例を説明し、本発明の実施態様を実行する。当業者は、本発明の思想を脱しない範囲内で、構文と語義を、等価の構文と語義と置き換えることにより、本発明を実施できる。
【００６８】
上の記述が提示されて、当業者に、特定のアプリケーションとその要求のコンテキストに記述される通り、本発明を行うことができる。当業者なら、記述された具体例への各種修正が理解でき、ここで定義される一般原則は別の実施例にも応用できる。よって、本発明は、記述される特定の実施例に制限することを目的としておらず、原理と新規特徴と一致する最大範囲に一致する。上述の記述において、本発明の十分な理解を提供するため、各種特定の詳細が説明される。当業者なら、本発明が行えることが理解できる。
【００６９】
上述の本発明の具体例は、各種ハードウェア、ソフトウェアコード、または、それらの組み合わせで実行される。たとえば、本発明の具体例は、画像圧縮チップに整合される回路、または、画像圧縮ソフトウェアに整合されるプログラムコードで、上述の処理を実行する。本発明の具体例は、デジタルシグナルプロセッサ（ＤＳＰ）で実行されるプログラムコードで、上述の処理を実行する。本発明は、さらに、コンピュータプロセッサ、デジタルシグナルプロセッサ、マイクロプロセッサ、または、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）により実行される複数の機能を含む。これらのプロセッサは、本発明により具体化される特定の方法を定義する機械読み取り可能ソフトウェアコード、または、ファームウェアコードを実行することにより、本発明による特定のタスクを実行するように設定される。ソフトウェアコード、または、ファームウェアコードは、異なるプログラミング言語、および、異なるフォーマット、または、スタイルで開発される。ソフトウェアコードは、さらに、異なるターゲットプラットフォームにコンパイルされる。しかし、本発明によるタスクを実行するソフトウェアコードの異なるコードフォーマット、スタイル、および、言語、および、設定コードのその他の手段は、本発明の思想を逸脱しない。
【００７０】
本発明では好ましい実施例を前述の通り開示したが、これらは決して本発明に限定するものではなく、当該技術を熟知する者なら誰でも、本発明の思想を脱しない範囲内で各種の変動や潤色を加えることができる。
【図１】
2019024208.tif 000006
【図２】
2019024208.tif 000007
【図３】
2019024208.tif 000008