[0039] 本開示は、マルチレイヤビデオコーディングにおける色域スケーラビリティのための3次元(3D)色予測に関する技法について説明する。マルチレイヤビデオコーディングは、スケーラブルビデオコーディング拡張、マルチビュービデオコーディング拡張、3Dビデオコーディング(すなわち、マルチビュービデオコーディングプラス深度)拡張、またはHEVCに対する他のマルチレイヤビデオコーディング拡張のうちのいずれかを含む、高効率ビデオコーディング(HEVC:High Efficiency Video Coding)に一致し得る。本技法は、ビデオデータの下位レイヤに関する色域がそのビデオデータの上位レイヤに関する色域と異なるとき、レイヤ間参照ピクチャを生成するためにビデオエンコーダおよび/またはビデオデコーダによって使用され得る。いくつかの例では、本技法は、ビデオデータの下位レイヤのビット深度(bit depth)がビデオデータの上位レイヤに関するビット深度とは異なるときにも使用され得る。
[0040] 色域は、たとえば、ビデオデータのピクチャ、スライス、ブロック、またはレイヤ中で画像に関して複写され得る色の完全範囲を備える。従来、マルチレイヤビデオコーディングでは、ビデオデータの下位レイヤ(たとえば、ベースレイヤ)およびビデオデータの上位レイヤ(たとえば、エンハンスメントレイヤ)は、同じ色域内、たとえば高解像度(HD)色域BT.709内の色データを含む。この場合、ビデオエンコーダおよび/またはビデオデコーダは、ビデオデータの下位レイヤに関するコロケート参照ピクチャのアップサンプリングされたバージョンとして、そのビデオデータの上位レイヤに関するレイヤ間参照ピクチャを生成することができる。
[0041] しかしながら、いくつかの例では、ビデオデータの下位レイヤは、第1の色域、たとえば、BT.709内の色データを含むことが可能であり、そのビデオデータの上位レイヤは、異なる第2の色域、たとえば、超高解像度(UHD:ultra-high definition)色域BT.2020内の色データを含むことが可能である。この例では、ビデオデータの上位レイヤに関するレイヤ間参照ピクチャを生成するために、ビデオエンコーダおよび/またはビデオデコーダは、まず、ビデオデータの下位レイヤに関する第1の色域内の参照ピクチャの色データをそのビデオデータの上位レイヤに関する第2の色域に変換するために、色予測を実行しなければならない。
[0042] ビデオエンコーダおよび/またはビデオデコーダは、色域スケーラビリティに関する3Dルックアップテーブルを使用して、色予測を実行することができる。いくつかの例では、色成分の各々、すなわち、ルーマ(Y)成分、第1のクロマ(U)成分、および第2のクロマ(V)成分に関して、別個の3Dルックアップテーブルが生成され得る。3Dルックアップテーブルの各々は、ルーマ(Y)次元と、第1のクロマ(U)次元と、第2のクロマ(V)次元とを含み、3つの独立した色成分(Y、U、V)を使用してインデックス付けされる。
[0043] 従来、3Dルックアップテーブルは、3Dルックアップテーブルがルーマ成分、第1のクロマ成分、および第2のクロマ成分に関して同じサイズを有するように、常に対称的である。加えて、従来、3Dルックアップテーブルは、3Dルックアップテーブルの各次元のサイズが常に同じであるように、常に平衡である。これは結果として、高い計算複雑性と高いシグナリングコストとを有する、大きいテーブルサイズをもたらす可能性がある。たとえば、テーブルサイズは、9×9×9または17×17×17までであり得る。
[0044] 2014年10月10日に出願した、米国特許出願第14/512,177号(整理番号第1212−712US01/140193)では、ビデオエンコーダならびに/またはビデオデコーダが、3Dルックアップテーブルが第1のクロマ成分および第2のクロマ成分とは異なるサイズをルーマ成分に関して有するように、非対称的および/もしくは不平衡型3Dルックアップテーブルを生成することを可能にする技法について説明されている。ビデオエンコーダおよび/またはビデオデコーダは、第1のクロマ成分および第2のクロマ成分とは異なる数のセグメントにルーマ成分を区分することによって、この非対称的および/または不平衡型3Dルックアップテーブルを生成することができる。この例では、テーブルサイズは8×2×2までであり得る。
[0045] 本開示の技法は、色域スケーラビリティのための3Dルックアップテーブルを生成するために使用される情報のシグナリングを対象とする。本技法によれば、ビデオエンコーダは、色域スケーラビリティのために生成される3Dルックアップテーブルの区分情報および/または色値を符号化することができる。ビデオデコーダは、色域スケーラビリティを実行するために3Dルックアップテーブルを生成するための区分情報および/または色値を復号することができる。本開示で説明する技法は、非対称的および/または不平衡型3Dルックアップテーブルを生成するために使用される情報をシグナリングする際に特に有用であり得る。
[0046] 開示する技法の一例では、ビデオデコーダおよび/またはビデオエンコーダは、基本区分値、たとえば、3Dルックアップテーブルに関する最大分割深度(maximal split depth)に従って、色成分の各々をいくつかのオクタントに区分し、次いで、ルーマ区分値に基づいて、ルーマ成分のオクタントの各々をさらに区分することによって、第1のクロマ成分および第2のクロマ成分に関するより粗い区分とルーマ成分に関するより細かい成分とを用いて、3Dルックアップテーブルを生成することができる。このようにして、3Dルックアップテーブルのクロマ成分は、より少数の、すなわちより少ないオクタントに区分され(すなわち、より粗く区分され)、3Dルックアップテーブルのルーマ成分は、より多数の、すなわちより多くのオクタントに区分される(すなわち、より細かく区分される)。
[0047] 一例では、ルーマ区分値はビットストリーム内でビデオエンコーダによってビデオデコーダにシグナリングされ得る。他の例では、基本区分値もビットストリーム内でビデオエンコーダによってビデオデコーダにシグナリングされ得る。他の場合には、ルーマ区分値はビデオエンコーダとビデオデコーダの両方によって導出され得、および/または基本区分値はビデオエンコーダとビデオデコーダの両方において知られている事前定義された値であり得る。
[0048] 一例として、基本区分値は、第1のクロマ色成分、第2のクロマ色成分、およびルーマ色成分の各々が単一のオクタントに区分されるように、1に等しく、ルーマ区分値は、ルーマ成分の単一のオクタントが、サイズ4×1×1の3Dルックアップテーブルをもたらす、4個のオクタントに区分されるように、4に等しい。別の例として、基本区分値は、第1のクロマ色成分、第2のクロマ色成分、およびルーマ色成分の各々が2個のオクタントに区分されるように、2に等しく、ルーマ区分値は、ルーマ成分の2個のオクタントの各々が、サイズ8×2×2の3Dルックアップテーブルをもたらす、4個のオクタントに区分されるように、4に等しい。わかるように、より低い区分値は、色成分に関して、より粗い区分(すなわち、より少数のオクタント)をもたらす。
[0049] 本技法によれば、色成分の各々は、基本区分値またはルーマ区分値のうちの1つもしくは複数に基づいて、1つもしくは複数のオクタントに区分され得る。本開示では、「オクタント(octant)」という用語は、8つの頂点(vertex)を含む3次元領域と定義される。本開示では、「区分(partition)」、「オクタント」、「セグメント(segment)」および「直方体(cuboid)」という用語は、3Dルックアップテーブルの色成分の区分された領域を記述するために交換可能に使用され得る。
[0050] 加えて、2個以上のオクタント、すなわち、1よりも大きい基本区分値に区分されている3Dルックアップテーブルの第1のクロマ成分および第2のクロマ成分のうちの少なくとも1つに基づいて、ビデオエンコーダは、クロマ成分のうちの1つに関する区分境界(partitioning boundary)をビデオデコーダにシグナリングすることができる。区分境界は、クロマ成分のうちの1つの、2個以上のオクタントへの不均等区分(uneven partitioning)を定義する。すなわち、クロマ成分のうちの1つまたは両方は、2個以上の均等または等しくサイズ決定されたオクタントに区分され得ない。この場合、クロマ成分のうちの所与の1つに関して、オクタントのうちの少なくとも1つは、2個以上の他のオクタントとは異なるサイズを有する。本開示の技法によれば、ビデオエンコーダは、クロマ成分のうちの1つが2個以上のオクタントに区分されるという条件に基づいてだけ、区分境界をシグナリングする。さもなければ、区分境界は、不要であり、ビデオデコーダにシグナリングされない。
[0051] 開示する技法の別の例では、ビデオエンコーダおよび/またはビデオデコーダは、ルーマ色成分、第1のクロマ色成分、および第2のクロマ色成分の各々に関するオクタントの数とオクタントの各々に関する色値とに基づいて、3Dルックアップテーブルを生成することができる。上で説明したように、場合によっては、3Dルックアップテーブルの色成分のうちの少なくとも1つに関するオクタントの数も、ビデオエンコーダによってビデオデコーダにシグナリングされ得る。ビデオデコーダが3Dルックアップテーブル内の色値を決定するために、3Dルックアップテーブル内の色値の線形カラーマッピング関数に関するカラーマッピング係数がビデオエンコーダによってビデオデコーダにシグナリングされる。線形カラーマッピング関数は、ビデオデータの下位レイヤに関する第1の色域内の色データをビデオデータの上位レイヤに関する第2の色域に変換するために使用され、カラーマッピング係数は、ビデオデータの下位レイヤの色成分と上位レイヤの色成分との間の重みファクタ(weighting factor)である。色成分の各々に関して、カラーマッピング係数のうちの1つは、ビデオデータの下位レイヤおよび上位レイヤの同じ色成分間の重みファクタを定義する重要係数(key coefficient)であり得る。
[0052] 線形カラーマッピング関数のカラーマッピング係数は、浮動小数点値(floating point value)として導出される。ビットストリーム内でカラーマッピング係数をシグナリングする前に、浮動小数点値は整数値(integer value)に変換され得る。整数値は浮動小数点値より精度が低い可能性があるが、整数値は、浮動小数点値よりもシグナリングがより容易であり、整数演算は、浮動小数点演算よりも計算コストがより安い。この変換は、整数値ベースの3Dルックアップテーブルの入力ビット深度(input bit-depth)または出力ビット深度(output bit-depth)のうちの少なくとも1つに関するビット深度を使用することができる。加えて、カラーマッピング係数の値は、事前定義された固定値、または3Dルックアップテーブルの入力ビット深度もしくは出力ビット深度のうちの少なくとも1つに応じた値に基づいた所与の範囲内に制限され得る。
[0053] カラーマッピング係数の元の値とカラーマッピング係数の予測値(predicted value)との間の残差値(residual value)がビットストリーム内で符号化されるように、カラーマッピング係数のうちの1つまたは複数が予測され得る。たとえば、色成分の各々に関する第1のオクタントに関して、線形カラーマッピング関数のカラーマッピング係数は事前定義された固定値(fixed value)に基づいて予測され得る。一例では、線形カラーマッピング関数の重要係数は、事前定義された非ゼロ値に等しい予測値に基づいて予測され得、任意の残りのカラーマッピング係数は、ゼロに等しい予測値に基づいて予測され得る。この例では、色成分の各々に関する任意の残りのオクタントのカラーマッピング係数は、第1のオクタントなど、少なくとも1つの前のオクタントからの予測値に基づいて予測され得る。場合によっては、カラーマッピング係数の残差値は、決定された量子化値(quantization value)に基づいて量子化され得る。ビデオエンコーダは、カラーマッピング係数を適切に復号するための逆量子化(inverse quantization)を実行するために、ビデオデコーダに関して決定された量子化値をシグナリングすることができる。
[0054] ビデオコーディング規格は、ITU−T H.261と、ISO/IEC MPEG−1 Visualと、ITU−T H.262またはISO/IEC MPEG−2 Visualと、ITU−T H.263と、ISO/IEC MPEG−4 Visualと、そのスケーラブルビデオコーディング(SVC:Scalable Video Coding)およびマルチビュービデオコーディング(MVC:Multi-view Video Coding)拡張を含む(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264とを含む。
[0055] 新しいビデオコーディング規格、すなわちHEVCの設計が、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)とのビデオコーディングに関する共同研究部会(JCT−VC:Joint Collaboration Team on Video Coding)によって確定されている。「HEVC Working Draft 10(WD10)」と呼ばれるHEVCドラフト仕様書、Brossら、「High efficiency video coding(HEVC)text specification draft 10(FDIS & Last Callに関する)」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディングに関する共同研究部会(JCT−VC)、第12回会合:ジュネーブ、スイス、2013年1月14日〜23日、JCTVC−L1003v34は、http://phenix.int−evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC−L1003−v34.zipから利用可能である。確定したHEVC規格は、HEVCバージョン1と呼ばれる。
[0056] 欠陥報告、Wangら、「High Efficiency video coding(HEVC)Defect Report」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディングに関する共同研究部会(JCT−VC)、第14回会合:ウィーン、オーストリア、2013年7月25日〜8月2日、JCTVC−N1003v1は、http://phenix.int−evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC−N1003−v1.zipから利用可能である。確定したHEVC規格文書は、ITU−T H.265、Series H:Audiovisual and Multimedia Systems、Infrastructure of audiovisual services−Coding of moving video、High efficiency video coding、国際電気通信連合(ITU:International Telecommunication Union)の電気通信標準化部門、2013年4月として公開されている。
[0057] HEVCに対するマルチビュー拡張(MV−HEVC:multi-view extension to HEVC)およびより高度な3Dビデオコーディングに関する別のHEVC拡張(3D−HEVC:HEVC extension for more advanced 3D video coding)がJCT−3Vによって開発されている。MV−HEVC Working Draft 5(WD5)と呼ばれる、MV−HEVCのドラフト仕様書、Techら、「MV−HEVC Draft Text 5」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発に関する共同研究部会(JCT−3V:Joint Collaborative Team on 3D Video Coding Extension Development)、第5回会合、ウィーン、オーストリア、2013年7月27日〜8月2日、JCT3V−E1004v6は、http://phenix.int−evry.fr/jct/doc_end_user/documents/5_Vienna/wg11/JCT3V−E1004−v6.zipから入手可能である。3D−HEVC Working Draft 1(WD1)と呼ばれ、Techら、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発に関する共同研究部会(JCT−3V)、第5回会議、ウィーン、オーストリア、2013年7月27日〜8月2日、JCT3V−E1001v3に記載されている3D−HEVCのドラフト仕様書は、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V−E1001−v3.zipから利用可能である。
[0058] HEVCに対するスケーラブル拡張(SHVC)は、JCT−VCによって開発されている。SHVC Working Draft 3(WD3)と呼ばれるSHVCのドラフト仕様書は、Chenら、「SHEVC Draft 3」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11のビデオコーディングに関する共同研究部会(JCT−VC)、第14回会議:ウィーン、オーストリア、2013年7月25日〜8月2日、JCTVC−N1008v3は、http://phenix.int−evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC−N1008−v3.zipから入手可能である。
[0059] 図1は、3Dルックアップテーブルベースの色域スケーラビリティのための技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、宛先デバイス14によって後の時点で復号されるべき、符号化されたビデオデータを提供するソースデバイス12を含む。具体的には、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを提供する。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信に対する機能を備え得る。
[0060] 宛先デバイス14は、コンピュータ可読媒体16を介して、復号されるべき符号化されたビデオデータを受信することができる。コンピュータ可読媒体16は、符号化されたビデオデータをソースデバイス12から宛先デバイス14に移動することが可能な、任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が符号化されたビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波(RF)スペクトルあるいは1つもしくは複数の物理伝送線路など、任意のワイヤレス通信媒体またはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワークなどのパケットベースのネットワーク、またはインターネットなどのグローバルネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る、ルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[0061] いくつかの例では、符号化されたデータは、出力インターフェース22からストレージデバイスへ出力され得る。同様に、符号化されたデータは、ストレージデバイスから入力インターフェースによってアクセスされ得る。ストレージデバイスは、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性もしくは不揮発性のメモリ、または符号化されたビデオデータを記憶するための任意の他の適切なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれをも含み得る。さらなる例では、ストレージデバイスは、ソースデバイス12によって生成された、符号化されたビデオを記憶することができるファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、ストレージデバイスから記憶されたビデオデータにアクセスすることができる。ファイルサーバは、符号化されたビデオデータを記憶でき、符号化されたビデオデータを宛先デバイス14に送信できる、任意のタイプのサーバとすることができる。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準データ接続を介して、符号化されたビデオデータにアクセスすることができる。これは、ファイルサーバ上に記憶された、符号化されたビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi−F接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージデバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその組合せとすることができる。
[0062] 本開示の技法は、ワイヤレス応用またはワイヤレス設定に必ずしも限定されない。本技法は、無線テレビジョンブロードキャスト、ケーブルテレビジョン送信、衛星テレビジョン送信、HTTP上の動的適応ストリーミング(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の応用など、様々なマルチメディア応用のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、および/またはビデオ電話などの応用をサポートするために一方向もしくは両方向のビデオ送信をサポートするように構成され得る。
[0063] 図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、ビデオデータを並列に処理するための技法を適用するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または構成を含み得る。たとえば、ソースデバイス12は、外部カメラなどの外部のビデオソース18からビデオデータを受信することができる。同様に、宛先デバイス14は、統合されたディスプレイデバイスを含むのではなく、外部のディスプレイデバイスとインターフェースしてもよい。
[0064] 図1の例示されたシステム10は、一例にすぎない。ビデオデータを並列に処理するための技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。概して、本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、一般に「コーデック(CODEC)」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。その上、本開示の技法はビデオプリプロセッサによっても実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が、宛先デバイス14に送信するためのコード化ビデオデータを生成するコーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、もしくはビデオ電話のためのビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートし得る。
[0065] ソースデバイス12のビデオソース18は、ビデオカメラ、以前にキャプチャされたビデオを包含するビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなどの、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてコンピュータグラフィックスベースのデータ、または、ライブビデオ、アーカイブされたビデオ、およびコンピュータ生成ビデオの組合せを生成することができる。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き電話またはビデオ付き電話を形成し得る。しかしながら、上で述べたように、本開示で説明した技法は、一般にビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤードの応用例に適用され得る。各場合において、キャプチャされたビデオ、前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオエンコーダ20によって符号化され得る。次いで、符号化ビデオ情報は、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
[0066] コンピュータ可読媒体16は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−rayディスク、もしくは他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化されたビデオデータを受信し、符号化されたビデオデータを宛先デバイス14に提供することができる。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化されたビデオデータを受信し、その符号化されたビデオデータを包含しているディスクを生成し得る。したがって、様々な例では、コンピュータ可読媒体16は、様々な形態の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
[0067] 宛先デバイス14の入力インターフェース28は、情報をコンピュータ可読媒体16から受信する。コンピュータ可読媒体16の情報は、ビデオエンコーダ20によって定義され、ビデオデコーダ30によっても使用される、ブロックおよび他のコード化ユニット、たとえば、ピクチャグループ(GOP)の特性ならびに/または処理を記述するシンタックス要素(syntax element)を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのうちのいずれかを備え得る。
[0068] ビデオエンコーダ20およびビデオデコーダ30は各々、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなどの、様々な適切なエンコーダ回路のいずれかとして実装され得る。本技法がソフトウェアに部分的に実装されるとき、デバイスは、ソフトウェアに対する命令を適切な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するための1つまたは複数のプロセッサを使用してハードウェアにおいてそれらの命令を実行することができる。ビデオエンコーダ20およびビデオデコーダ30の各々は、そのいずれかが、複合エンコーダ/デコーダ(コーデック)の一部として、それぞれのデバイス内に統合され得る、1つもしくは複数のエンコーダまたはデコーダに含まれてもよい。
[0069] いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、そのスケーラブルビデオコーディング(SVC)拡張と、マルチビュービデオコーディング(MVC)拡張と、MVCベースの3次元ビデオ(3DV)拡張とを含む、ISO/IEC MPEG−4 Visualおよび(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264などのビデオ圧縮規格に従って動作する。場合によっては、MVCベースの3DVに適合する任意のビットストリームは、MVCプロファイル、たとえばステレオハイプロファイルに準拠するサブビットストリームを常に包含する。さらに、H.264/AVCへの3DVコーディング拡張、すなわち、AVCベースの3DVを生成するための取り組みが進行中である。ビデオコーディング規格の他の例は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、ITU−T H.263、ISO/IEC MPEG−4 Visual、およびITU−T H.264、ISO/IEC Visualなどがある。
[0070] 図1の例では、ビデオエンコーダ20およびビデオデコーダ30は、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)とのビデオコーディングに関する共同研究部会(JCT−VC:Joint Collaboration Team on Video Coding)によって確定された高効率ビデオコーディング(HEVC)規格に従って動作し得る。上記で参照したHEVCドラフト仕様書は、HEVC Working Draft 10(WD10)と呼ばれ、HEVC規格の確定したバージョンはHEVCバージョン1と呼ばれる。MV−HEVCおよび3D−HEVCはJCT−3Vによって開発されている。MV−HEVCの最近のドラフト仕様書はMV−HEVC WD5と呼ばれ、3D−HEVCの最近のドラフト仕様書は3D−HEVC WD1と呼ばれる。SHVCはJCT−VCによって開発されている。SHVCの最近のドラフト仕様書は、SHVC WD3と呼ばれる。
[0071] HEVCおよび他のビデオコーディング規格では、ビデオシーケンスは、一般に、一連のピクチャを含む。ピクチャは「フレーム(frame)」と呼ばれる場合もある。ピクチャは、SL、SCbおよびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ(chroma)」サンプルと呼ばれる場合もある。他の例では、ピクチャは、モノクロームであり得るし、ルーマサンプルのアレイのみを含む場合がある。
[0072] ビデオエンコーダ20は、コーディングツリーユニット(CTU:coding tree unit)のセットを生成し得る。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別個の色平面を有するピクチャでは、CTUは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックはサンプルのN×Nブロックであり得る。CTUは、「ツリーブロック(tree block)」または「最大コーディングユニット」(LCU:largest coding unit)と呼ばれることもある。HEVCのCTUは、H.264/AVCなどの他のビデオコーディング規格のマクロブロックに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスター走査順序で連続的に順序付けられた整数個のCTUを含み得る。
[0073] 本開示は、サンプル、およびサンプルの1つもしくは複数のブロックのサンプルをコーディングするために使用されるシンタックス構造の1つもしくは複数のブロックを指すために、「ビデオユニット(video unit)」または「ビデオブロック(video block)」という用語を使用することがある。例示的なタイプのビデオユニットには、HEVCにおけるCTU、CU、PU、変換ユニット(TU:transform unit)、または他のビデオコーディング規格におけるマクロブロック、マクロブロックパーティションなどが含まれ得る。
[0074] コーディングされたCTUを生成するために、ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するように、CTUのコーディングツリーブロックに対して4分木区分を再帰的に実行することができ、したがって「コーディングツリーユニット」という名称である。コーディングブロックは、サンプルのN×Nのブロックである。CUは、ルーマサンプルアレイと、Cbサンプルアレイと、Crサンプルアレイとを有するピクチャの、ルーマサンプルのコーディングブロックと、クロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別個の色平面を有するピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
[0075] ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分することができる。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックであり得る。CUの予測ユニット(PU:prediction unit)は、ルーマサンプルの予測ブロックと、ピクチャのクロマサンプルの2つの対応する予測ブロックと、予測ブロックサンプルを予測するために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別個の色平面を有するピクチャでは、PUは、単一の予測ブロックと、それらの予測ブロックサンプルを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックに関する予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成し得る。
[0076] ビデオエンコーダ20は、PUに関する予測ブロックを生成するためにイントラ予測またはインター予測を使用することができる。ビデオエンコーダ20がPUの予測ブロックを生成するためにイントラ予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成することができる。
[0077] ビデオエンコーダ20がPUの予測ブロックを生成するためにインター予測を使用する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号されたサンプルに基づいて、PUの予測ブロックを生成することができる。インター予測は、単方向インター予測(すなわち、単予測(uni-prediction))または双方向インター予測(すなわち、双予測(bi-prediction))であり得る。単予測または双予測を実行するために、ビデオエンコーダ20は、現在のスライスに関して、第1の参照ピクチャリスト(RefPicList0)と第2の参照ピクチャリスト(RefPicList1)とを生成し得る。
[0078] 参照ピクチャリストの各々は、1つまたは複数の参照ピクチャを含み得る。単予測を使用するとき、ビデオエンコーダ20は、参照ピクチャ中の参照ロケーションを決定するために、RefPicList0およびRefPicList1のいずれかまたは両方の中の参照ピクチャを探索することができる。さらに、単予測を使用するとき、ビデオエンコーダ20は、参照ロケーションに対応するサンプルに少なくとも部分的に基づいて、PUに関する予測サンプルブロックを生成することができる。さらに、単予測を使用するとき、ビデオエンコーダ20は、PUの予測ブロックと参照ロケーションとの間の空間変位を示す単一の動きベクトルを生成することができる。PUの予測ブロックと参照ロケーションとの間の空間変位を示すために、動きベクトルは、PUの予測ブロックと参照ロケーションとの間の水平変位を指定する水平成分を含み得、PUの予測ブロックと参照ロケーションとの間の垂直変位を指定する垂直成分を含み得る。
[0079] PUを符号化するために双予測を使用するとき、ビデオエンコーダ20は、RefPicList0中の参照ピクチャ中の第1の参照ロケーションと、RefPicList1中の参照ピクチャ中の第2の参照ロケーションとを決定することができる。ビデオエンコーダ20は、次いで、第1の参照ロケーションおよび第2の参照ロケーションに対応するサンプルに少なくとも部分的に基づいて、PUに関する予測ブロックを生成することができる。さらに、PUを符号化するために双予測を使用するとき、ビデオエンコーダ20は、PUのサンプルブロックと第1の参照ロケーションとの間の空間変位を示す第1の動きと、PUの予測ブロックと第2の参照ロケーションとの間の空間変位を示す第2の動きとを生成することができる。
[0080] ビデオエンコーダ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コーディングブロック中の対応するサンプルとの間の差分を示し得る。
[0081] さらに、ビデオエンコーダ20は、CUのルーマ残差ブロックと、Cb残差ブロックと、Cr残差ブロックとを、1つまたは複数のルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに分解するために、4分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形ブロックであってもよい。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、それらの変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。モノクロームピクチャまたは3つの別個の色平面を有するピクチャでは、TUは、単一の変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連付けられ得る。TUに関連付けられたルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであってよい。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであってよい。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであってよい。
[0082] ビデオエンコーダ20は、TUに関するルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1回または複数回の変換を適用し得る。係数ブロックは、変換係数の2次元アレイであり得る。変換係数は、スカラー量であってよい。ビデオエンコーダ20は、TUに関するCb係数ブロックを生成するために、TUのCb変換ブロックに1回または複数回の変換を適用することができる。ビデオエンコーダ20は、TUに関するCr係数ブロックを生成するために、TUのCr変換ブロックに1回または複数回の変換を適用することができる。
[0083] 係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロックまたはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化することができる。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。さらに、ビデオエンコーダ20は、ピクチャのCUのTUの変換ブロックを再構成するために、変換係数を逆量子化し、変換係数に逆変換を適用することができる。ビデオエンコーダ20は、CUのコーディングブロックを再構成するために、CUのTUの再構成された変換ブロックと、CUのPUの予測ブロックとを使用することができる。ピクチャの各CUのコーディングブロックを再構成することによって、ビデオエンコーダ20は、ピクチャを再構成することができる。ビデオエンコーダ20は、復号ピクチャバッファ(DPB:decoded picture buffer)に再構成されたピクチャを記憶することができる。ビデオエンコーダ20は、DPB中の再構成されたピクチャを、インター予測およびイントラ予測のために使用することができる。
[0084] ビデオエンコーダ20が係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化することができる。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対して、コンテキスト適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実行することができる。ビデオエンコーダ20は、エントロピー符号化されたシンタックス要素をビットストリーム内に出力することができる。
[0085] ビデオエンコーダ20は、コード化ピクチャおよび関連するデータの表現を形成する一連のビットを含むビットストリームを出力することができる。ビットストリームは、一連のネットワークアブストラクションレイヤ(NAL:network abstraction layer)ユニットを備え得る。NALユニットの各々は、NALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP:raw byte sequence payload)をカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含む場合がある。NALユニットのNALユニットヘッダによって規定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含むシンタックス構造であり得る。いくつかの事例では、RBSPは0ビットを含む。
[0086] 様々なタイプのNALユニットは、様々なタイプのRBSPをカプセル化することができる。たとえば、第1のタイプのNALユニットはピクチャパラメータセット(PPS)に関するRBSPをカプセル化することができ、第2のタイプのNALユニットはコード化スライスに関するRBSPをカプセル化することができ、第3のタイプのNALユニットは補助拡張情報(SEI:supplemental enhancement information)に関するRBSPをカプセル化することができ、以下同様である。PPSは、0個以上のコード化ピクチャ全体に適用されるシンタックス要素を含み得るシンタックス構造である。ビデオコーディングデータに関するRBSPをカプセル化するNALユニットは(パラメータセットおよびSEIメッセージに関するRBSPとは対照的に)、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれる場合がある。コード化スライスをカプセル化するNALユニットは、本明細書ではコード化スライスNALユニットと呼ばれる場合がある。コード化スライスに関するRBSPは、スライスヘッダとスライスデータとを含み得る。
[0087] ビデオデコーダ30は、ビットストリームを受信することができる。加えて、ビデオデコーダ30は、ビットストリームからシンタックス要素を復号するために、ビットストリームをパースすることができる。ビデオデコーダ30は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構成することができる。ビデオデータを再構成するための処理は、全般に、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、現在CUのPUに関する予測ブロックを決定するために、PUの動きベクトルを使用することができる。ビデオデコーダ30は、PUに関する予測ブロックを生成するために、PUの1つまたは複数の動きベクトルを使用することができる。
[0088] 加えて、ビデオデコーダ30は、現在CUのTUに関連付けられた係数ブロックを逆量子化することができる。ビデオデコーダ30は、現在CUのTUに関連付けられた変換ブロックを再構成するために、係数ブロックに対して逆変換を実行することができる。ビデオデコーダ30は、現在CUのPUに関する予測サンプルブロックのサンプルを現在CUのTUの変換ブロックの対応するサンプルに加算することによって、現在CUのコーディングブロックを再構成することができる。ピクチャの各CUのコーディングブロックを再構成することによって、ビデオデコーダ30は、ピクチャを再構成し得る。ビデオデコーダ30は、出力のためにおよび/または他のピクチャを復号する際に使用するために、復号されたピクチャを復号ピクチャバッファ内に記憶することができる。
[0089] MV−HEVC、3D−HEVC、およびSHVCでは、ビデオエンコーダは、一連のネットワークアブストラクションレイヤ(NAL:network abstraction layer)ユニットを備えるマルチレイヤビットストリームを生成し得る。ビットストリームの様々なNALユニットが、ビットストリームの様々なレイヤに関連付けられ得る。レイヤは、同じレイヤ識別子を有するビデオコーディングレイヤ(VCL:video coding layer)NALユニットおよび関連する非VCL NALユニットのセットとして定義され得る。レイヤは、マルチビュービデオコーディングにおけるビューと等価であり得る。マルチビュービデオコーディングでは、レイヤは、異なる時間インスタンスを伴う同じレイヤのすべてのビュー成分を含み得る。各ビュー成分は、特定の時間インスタンスにおける特定のビューに属するビデオシーンのコード化ピクチャであり得る。3Dビデオコーディングでは、レイヤは、特定のビューのすべてのコード化深度ピクチャ、または特定のビューのコード化テクスチャピクチャのいずれかを含み得る。同様に、スケーラブルビデオコーディングのコンテキストにおいて、レイヤは、通常、他のレイヤ中のコード化ピクチャと異なるビデオ特性を有するコード化ピクチャに対応する。そのようなビデオ特性は、通常、空間解像度と品質レベル(信号対雑音比)とを含む。HEVCおよびその拡張では、時間スケーラビリティは、特定の時間レベルを伴うピクチャのグループをサブレイヤと定義することによって、1つのレイヤ中で達成され得る。
[0090] ビットストリームのそれぞれの各レイヤについて、下位レイヤ中のデータは、上位レイヤ中のデータと無関係に復号され得る。スケーラブルビデオコーディングでは、たとえば、ベースレイヤ中のデータは、エンハンスメントレイヤ中のデータと無関係に復号され得る。NALユニットは単に、単一のレイヤのデータをカプセル化する。SHVCでは、ビデオデコーダが、あるビュー中のピクチャをいかなる他のレイヤのデータとも無関係に復号できる場合、そのビューは「ベースレイヤ(base layer)」と呼ばれ得る。ベースレイヤは、HEVCベース仕様に準拠し得る。したがって、ビットストリームの残りの最高レイヤのデータをカプセル化するNALユニットは、ビットストリームの残りのレイヤ中のデータの復号可能性に影響を及ぼすことなくビットストリームから除去され得る。MV−HEVCおよび3D−HEVCでは、上位レイヤは、さらなるビュー成分を含み得る。SHVCでは、上位レイヤは、信号対雑音比(SNR:signal to noise ratio)エンハンスメントデータ、空間エンハンスメントデータ、および/または時間エンハンスメントデータを含み得る。
[0091] いくつかの例では、上位レイヤのデータは、1つまたは複数の下位レイヤ中のデータを参照して復号され得る。下位レイヤは、レイヤ間予測を使用して上位レイヤを圧縮するための参照ピクチャとして使用され得る。下位レイヤのデータは、上位レイヤと同じ解像度を有するようにアップサンプリングされ得る。概して、1つまたは複数のアップサンプリングされた下位レイヤが、1つまたは複数の近隣ピクチャではなく、参照ピクチャとして使用され得ることを除いて、ビデオエンコーダ20およびビデオデコーダ30は、上記で説明したインター予測と同様の方法でレイヤ間予測を実行することができる。
[0092] 図2は、3つの異なる次元におけるスケーラビリティの一例を示す概念図である。スケーラブルビデオコーディング構造では、スケーラビリティは、3つの次元において有効化される。図2の例では、スケーラビリティは、空間(S)次元100、時間(T)次元102、および信号対雑音比(SNR)次元または品質(Q)次元104において有効化される。時間次元102では、たとえば、7.5Hz(T0)、15Hz(T1)、または30Hz(T2)を有するフレームレートが時間スケーラビリティによってサポートされ得る。空間スケーラビリティがサポートされるとき、たとえば、QCIF(S0)、CIF(S1)、および4CIF(S2)など、異なる解像度が空間次元100において有効化される。特定の空間解像度およびフレームレートごとに、ピクチャ品質を改善するために、SNR次元104内にSNRレイヤ(Q1)が追加され得る。
[0093] ビデオコンテンツがそのようなスケーラブルな方法で符号化されると、たとえば、クライアントまたは送信チャネルに依存する適用要件に従って、実際の配信されたコンテンツを適応させるために、抽出器ツールが使用され得る。図2に示した例では、各立方体は、同じフレームレート(時間レベル)、空間解像度、およびSNRレイヤを有するピクチャを包含する。立方体(すなわち、ピクチャ)を次元100、102、104のいずれかに追加することによって、より良い表現が達成され得る。2つ、3つ、またはさらに多くのスケーラビリティが有効化されるとき、複合スケーラビリティがサポートされる。
[0094] H.264に対するSVC拡張、すなわちSHVCなど、スケーラブルビデオコーディング規格では、最低の空間レイヤおよびSNRレイヤを有するピクチャは、単一レイヤビデオコーデックとの互換性を有し、最低の時間レベルにあるピクチャは、より高い時間レベルにあるピクチャを用いて拡張され得る時間ベースレイヤを形成する。ベースレイヤに加えて、空間スケーラビリティおよび/または品質スケーラビリティを実現するために、いくつかの空間エンハンスメントレイヤおよび/またはSNRエンハンスメントレイヤが追加され得る。各々の空間エンハンスメントレイヤまたはSNRエンハンスメントレイヤ自体は、ベースレイヤと同じ時間スケーラビリティ構造で、時間的にスケーラブルであり得る。1つの空間エンハンスメントレイヤまたはSNRエンハンスメントレイヤについて、それが依存する下位レイヤは、その特定の空間エンハンスメントレイヤまたはSNRエンハンスメントレイヤのベースレイヤと呼ばれることがある。
[0095] 図3は、スケーラブルビデオコーディングビットストリームのある例示的な構造110を示す概念図である。ビットストリーム構造110は、ピクチャまたはスライスI0、P4、およびP8を含むレイヤ0 112と、ピクチャまたはスライスB2、B6、およびB10を含むレイヤ1 114とを含む。加えて、ビットストリーム構造110は、各々がピクチャ0、2、4、6、8、および10を含むレイヤ2 116ならびにレイヤ3 117と、ピクチャ0から11を含むレイヤ4 118とを含む。
[0096] ベースレイヤは、最低の空間レイヤおよび品質レイヤを有する(すなわち、QCIF解像度を有する、レイヤ0 112およびレイヤ1 114中のピクチャ)。これらの中で、最低時間レベルのそれらのピクチャは、図3のレイヤ0 112に示すように、時間ベースレイヤを形成する。時間ベースレイヤ(レイヤ0)112は、上位時間レベル、たとえば、15Hzのフレームレートを有するレイヤ1 114、または30Hzのフレームレートを有するレイヤ4 118のピクチャで拡張され得る。
[0097] ベースレイヤ112、114に加えて、空間スケーラビリティおよび/または品質スケーラビリティを実現するために、いくつかの空間エンハンストレイヤおよび/またはSNRエンハンスメントレイヤが追加され得る。たとえば、CIF解像度を有するレイヤ2 116は、ベースレイヤ112、114に対する空間エンハンスメントレイヤであり得る。別の例では、レイヤ3 117は、ベースレイヤ112、114、およびレイヤ2 116に対するSNRエンハンスメントレイヤであり得る。図3に示すように、各々の空間エンハンスメントレイヤまたはSNRエンハンスメントレイヤ自体は、ベースレイヤ112、114と同じ時間スケーラビリティ構造で、時間的にスケーラブルであり得る。加えて、エンハンスメントレイヤは空間解像度とフレームレートの両方を向上させることが可能である。たとえば、レイヤ4 118は、フレームレートを15Hzから30Hzにさらに増大させる、4CIF解像度エンハンスメントレイヤを提供する。
[0098] 図4は、ビットストリーム順序(bitstream order)で、例示的なスケーラブルビデオコーディングアクセスユニット120A〜120E(「アクセスユニット120」)を示す概念図である。図4に示すように、同じ時間インスタンス内のコード化ピクチャまたはスライスは、ビットストリーム順序で連続しており、H.264に対するSVC拡張、すなわち、SHVCなど、スケーラブルビデオコーディング規格のコンテキストにおいて1つのアクセスユニットを形成する。次いで、これらのアクセスユニット120は、表示順序とは異なるものとされ得、たとえば、アクセスユニット120間の時間予測関係によって決定され得る復号順序に従う。
[0099] たとえば、アクセスユニット120Aは、レイヤ0 112からのピクチャI0と、レイヤ2 116からのピクチャ0と、レイヤ3 117からのピクチャ0と、レイヤ4 118からのピクチャ0とを含む。アクセスユニット120Bは、レイヤ0 112からのピクチャP4と、レイヤ2 116からのピクチャ4と、レイヤ3 117からのピクチャ4と、レイヤ4 118からのピクチャ4とを含む。アクセスユニット120Cは、レイヤ1 114からのピクチャB2と、レイヤ2 116からのピクチャ2と、レイヤ3 117からのピクチャ2と、レイヤ4 118からのピクチャ2とを含む。アクセスユニット120Dは、レイヤ4 118からのピクチャ1を含み、アクセスユニット120Eはレイヤ4 118からのピクチャ3を含む。
[0100] 図5は、ある例示的な3レイヤSHVCエンコーダ122を示すブロック図である。図5に示すように、SHVCエンコーダ122は、ベースレイヤエンコーダ124と、第1のエンハンスメントレイヤエンコーダ125と、第2のエンハンスメントレイヤエンコーダ126とを含む。高レベルのシンタックス専用SHVCでは、HEVC単一レイヤコーディングと比較されると、新しいブロックレベルのコーディングツールは存在しない。SHVCでは、スライスおよびその上のレベルのシンタックス変更、ならびにピクチャのフィルタリングまたはアップサンプリングなどのピクチャレベルの動作のみが許可される。
[0101] レイヤ間の冗長性を低減するために、単一レイヤ中でインターフレーム予測と同じようにレイヤ間予測が達成され得るように、上位レイヤ/エンハンスメントレイヤに関して、下位レイヤ/ベースレイヤに関するアップサンプリングされたコロケート参照レイヤピクチャが生成され、参照バッファ内に記憶され得る。図5に示すように、リサンプリングされたレイヤ間参照(ILR:inter-layer reference)ピクチャ128がベースレイヤエンコーダ124中の参照ピクチャから生成され、第1のエンハンスメントレイヤエンコーダ125内に記憶される。同様に、リサンプリングされたILRピクチャ129が第1のエンハンスメントレイヤエンコーダ125中の参照ピクチャから生成され、第2のエンハンスメントレイヤエンコーダ126内に記憶される。SHVC WD3では、ILRピクチャはエンハンスメントレイヤに関する長期参照ピクチャとして標示される。レイヤ間参照ピクチャに関連付けられた動きベクトル差分はゼロに制約される。
[0102] 超高解像度テレビジョン(UHDTV:ultra-high definition television)デバイスおよびそのコンテンツの次の展開は、レガシーデバイスとは異なる色域を使用することになる。具体的には、HDはBT.709推奨、ITU−R推奨BT.709「Parameter values for the HDTV standards for production and international programme exchange」2010年12月を使用するのに対して、UHDTVは、BT.2020推奨、ITU−R推奨BT.2020「Parameter values for UHDTV systems for production and international programme exchange」2012年4月を使用することになる。色域は、たとえば、ピクチャ、スライス、ブロック、またはビデオデータのレイヤ中で画像に関して複写され得る色の完全範囲を備える。これらのシステム間の主な差は、UHDTVの色域はHDよりかなり大きい点である。UHDTVは、高解像度など、他のUHDTV特性に一致する、より真に迫った、または現実的な視聴体験を提供することになると主張されている。
[0103] 図6は、サンプルビデオシーケンス130のある例示的な色域を示すグラフである。図6に示すように、SWG1サンプルビデオシーケンス130は、UHD色域BT.2020 132の輪郭線内の点の集まりとして示される。比較のために、HD色域BT.709 134の輪郭および国際照明委員会(CIE:International Commission on Illumination)−XYZ線形色空間136の輪郭はSWG1サンプルビデオシーケンス130をオーバーレイする。UHD色域BT.2020 132はHD色域BT.709 134よりもかなり大きいことが図6から容易に分かる。BT.709色域134から外れるSWG1サンプルビデオシーケンス130内のピクセルの数に留意されたい。
[0104] 図7は、HD色域BT.709 134からUHD色域BT.2020 132への変換を示すブロック図である。HD色域BT.709 134とUHD色域BT.2020 132は両方とも、ルーマ成分およびクロマ成分(たとえば、YCbCrまたはYUV)中のカラーピクセルの表現を定義する。各色域は、CIE−XYZ線形色空間136の間の変換を定義する。この一般的な中間色空間は、HD色域BT.709 134内のルーマ値およびクロマ値のUHD色域BT.2020 132内の対応するルーマ値およびクロマ値への変換を定義するために使用され得る。
[0105] 図6に示したサンプルシーケンスの色域および図7に示した色域変換に関するさらなる詳細は、L.Kerofsky、A.Segall、S.−H.Kim、K.Misra、「Color Gamut Scalable Video Coding:New Results」、JCTVC−L0334、ジュネーブ、スイス、2013年1月14日〜23日(以下、「JCTVC−L0334」と呼ばれる)に見出すことができる。
[0106] 図8は、ベースレイヤ色域とエンハンスメントレイヤ色域とが異なるときに、レイヤ間参照ピクチャを生成し得る色予測処理ユニット144を含む色域スケーラブルコーダ140を示すブロック図である。色予測処理ユニット144は、ベースレイヤおよびエンハンスメントレイヤの色域が異なる色域スケーラブルビデオコーディングを実行するために、図1からのビデオエンコーダ20またはビデオデコーダ30などのビデオコーダによって使用され得る。
[0107] 図8に示す例では、ベースレイヤコーディングループ142は、第1の色域、たとえば、BT.709内の色データを含むピクチャのビデオコーディングを実行し、エンハンスメントレイヤコーディングループ146は、第2の色域、たとえば、BT.2020内の色データを含むピクチャのビデオコーディングを実行する。色予測処理ユニット144は、第1の色域内のベースレイヤ参照ピクチャの色データを第2の色域にマッピングまたは変換するために色予測を実行し、ベースレイヤ参照ピクチャのマッピングされた色データに基づいて、エンハンスメントレイヤに関するレイヤ間参照ピクチャを生成する。
[0108] 高いコーディング効率を達成するために、色予測処理ユニット144は、レイヤ間参照ピクチャを生成するとき、特定の色予測を実行するように構成される。下記でより詳細に説明するように、色予測処理ユニット144は、線形予測モデル、区分線形予測モデル、または3Dルックアップテーブルベースの色予測モデルのうちのいずれかに従って、色予測を実行するように構成され得る。
[0109] 線形予測モデルは、上記で参照したJCTVC−L0334で提案されている。概して、線形予測モデルの色予測プロセスは、利得およびオフセットモデルとして説明され得る。線形予測モデルは個々の色平面上で動作する。整数計算を容易にするために、パラメータは、パラメータnumFractionBitsを使用した計算において使用される小数ビットの数について説明する。各チャネルに関して、gain[c]およびoffset[c]が指定される。線形予測モデルは、次のように定義される、
[0110] 区分線形予測モデルは、上記で参照された、JCTVC−L0334に基づく、C.Auyeung、K.Sato、「AHG14:Color gamut scalable video coding with piecewise linear predictions and shift−offset model」、JCTVC−N0271、ウィーン、オーストリア、2013年7月で提案されている。区分線形予測モデルの色予測プロセスも、利得およびオフセットモデルとして説明され得る。区分線形予測モデルは、次のように定義される、
予測パラメータknot[c]、offset[c]、gain1[c]、およびgain2[c]はビットストリーム中で符号化され得る。
[0111] 図9(a)および図9(b)は、色域スケーラビリティのためのある例示的な3Dルックアップテーブル150を示す概念図である。3Dルックアップテーブルベースの色予測モデルは、P.Bordes、P.Andrivon、F.Hiron、「AHG14:Color Gamut Scalable Video Coding using 3D−LUT:New Results」、JCTVC−N0168、ウィーン、オーストリア、2013年7月(以下、「JCTVC−N0168」)で提案されている。色域スケーラビリティのための3Dルックアップテーブルの原理は図9(a)および図9(b)に示される。3Dルックアップテーブル150は、第1の3D色空間、たとえば、HD色域BT.709のサブサンプリングと見なされてよく、この場合、各交点は、第2の3D色空間(すなわち、予測された)値に対応するカラートリプレット(color triplet)(y、u、v)、たとえば、UHD色域BT.2020に関連付けられる。
[0112] 概して、第1の色域は、各色次元(すなわち、Y、U、およびV)内のオクタントまたは直方体に区分され得、オクタントの交点は、第2の色域に対応するカラートリプレットに関連付けられ、3Dルックアップテーブル150をポピュレートするために使用される。各色次元内の交点またはセグメントの数は、3Dルックアップテーブルのサイズを示す。図9(a)は、各色次元内のオクタントの交点、すなわち、交差する格子点を示す。図9(b)は、交点の各々に関連付けられた異なる色値を示す。示すように、図9(a)では、各色次元は4つの交点を有し、図9(b)では、各色次元は4つの色値を含む。
[0113] 図10は、色域スケーラビリティのための3Dルックアップテーブル152を用いた3線補間を示す概念図である。第1の色域内の所与のベースレイヤカラーサンプルに関して、エンハンスメントレイヤに関する第2の色域内のその予測の計算は、次の式に従って、3線補間を使用して行われる。
式中、
y0は、yよりも下位である、最も近いサブサンプリングされた交点のインデックスである。
y1は、yより上位である、最も近いサブサンプリングされた交点のインデックスである。
図9に示す3Dルックアップテーブル、および図10に示す3Dルックアップテーブルとの3線補間のさらなる詳細は、上記で参照されたJCTVC−N0168に見出され得る。
[0114] 図11は、色域スケーラビリティのための3Dルックアップテーブル154を用いた四面体補間を示す概念図である。四面体補間は、3Dルックアップテーブルの計算上の複雑さを低減させるために、上で説明した3線補間の代わりに使用され得る。
[0115] 図12は、四面体補間を使用して補間されるべき3Dルックアップテーブルの点Pを包含するために使用される四面体の6つの例156A〜156F(集合的に「四面体156」)を示す概念図である。図12の例では、頂点P0およびP7が四面体内に含まれなければならないと仮定すると、3Dルックアップテーブルのオクタント内で補間されるべき点Pを含む四面体を決定するために6つの選択肢が存在する。四面体補間を使用して、3Dルックアップテーブルは、各2つの成分、すなわち、yおよびu、yおよびv、uおよびvの関係をチェックする代わりに、高速決定のために設計され得る。
[0116] いくつかの例では、色成分の各々、すなわち、ルーマ(Y)成分、第1のクロマ(U)成分、および第2のクロマ(V)成分に関して、別個の3Dルックアップテーブルが生成され得る。3Dルックアップテーブルの各々は、ルーマ(Y)次元と、第1のクロマ(U)次元と、第2のクロマ(V)次元とを含み、3つの独立した色成分(Y、U、V)を使用してインデックス付けされる。
[0117] 一例では、マッピング関数は、3Dルックアップテーブルに基づいて各色成分に関して定義され得る。ルーマ(Y)ピクセル値に関するある例示的なマッピング関数は次の式で提示される。
上記の式では、YEはエンハンスメントレイヤ中のルーマ画素値を表し、レイヤ(YB,UUB,VB)はベースレイヤピクセル値を表し、LUTY,LUTU,LUTVおよびLUTCは、それぞれ、各色成分Y、U、V、および定数に関する3Dルックアップテーブルを表す。同様にマッピング関数は、エンハンスメントレイヤ内の第1のクロマ(U)ピクセル値および第2のクロマ(V)ピクセル値に関して定義され得る。
[0118] 概して、3Dルックアップテーブルベースの色域スケーラビリティは、結果として、良好なコーディング性能をもたらす。しかしながら、3Dルックアップテーブルは、概して、ハードウェア実装でキャッシュメモリ内に記憶されるため、3Dルックアップテーブルのサイズは懸念事項であり得る。従来、3Dルックアップテーブルは、3Dルックアップテーブルがルーマ成分、第1のクロマ成分、および第2のクロマ成分に関して同じサイズを有するように、常に対称的である。加えて、従来、3Dルックアップテーブルは、3Dルックアップテーブルの各次元のサイズが常に同じであるように、常に平衡である。これは結果として、高い計算複雑性と高いシグナリングコストとを有する、大きいテーブルサイズをもたらす。たとえば、テーブルサイズは、9×9×9または17×17×17までであり得る。
[0119] 場合によっては、色域スケーラビリティのために使用される3Dルックアップテーブルのサイズはあまりにも大きく、実際の実装に問題をもたらす可能性がある。加えて、大きなテーブルサイズ、および3Dルックアップテーブルに関する3線補間の使用は、計算上高い複雑さをもたらす。
[0120] 2014年10月10日に出願した、米国特許出願第14/512,177号(整理番号第1212−712US01/140193)では、3Dルックアップテーブルベースの色域スケーラビリティに関するシグナリングコストと計算複雑性の両方が低減され得るように、以下の方法が提案される。
[0121] 第1の方法は、ルーマ(Y)成分ならびにクロマ(UおよびV)成分が異なるサイズを有するように、非対称3Dルックアップテーブルを生成することを含む。場合によっては、3Dルックアップテーブルは、第1のクロマ成分および第2のクロマ成分の各々に関するよりも大きいサイズ、すなわち、より多いセグメントまたはオクタントをルーマ成分に関して有し得る。この場合、クロマ成分はより粗いルックアップテーブルを使用することができ、ルーマ成分はより微細化されたルックアップテーブルを使用することができる。たとえば、テーブルサイズは8×2×2までであり得る。他の場合では、3Dルックアップテーブルは、ルーマ成分に関するよりも大きいサイズをクロマ成分のうちの1つまたは両方に関して有し得る。
[0122] 第2の方法は、3Dルックアップテーブルに関するテーブルインデックスとしてどの色成分が使用されているかに応じて、各次元のサイズが異なるように、不平衡3Dルックアップテーブル、すなわち、テーブル[M][N][K]を生成することを含む。3Dルックアップテーブルは、テーブルインデックスとして使用される色成分に関連付けられた次元に関してより大きいサイズを有し得る。この場合、カラーマッピングはテーブルインデックスとして使用される色成分に関してより正確であり得るが、他の色成分に関する精度はより低い。
[0123] 第3の方法は、ルーマ成分3Dルックアップテーブルだけを生成することと、ルーマ成分予測を実行するために、3Dルックアップテーブルだけを使用することとを含む。1次元(1D)線形マッピング技法または区分的線形マッピング技法は、クロマ成分に関して使用され得る。
[0124] 本開示の技法は、色域スケーラビリティのための3Dルックアップテーブルを生成するために使用される情報のシグナリングを対象とする。本技法によれば、ビデオエンコーダ20は、色域スケーラビリティのために生成される3Dルックアップテーブルの区分情報および/または色値を符号化することができる。ビデオデコーダ30は、色域スケーラビリティを実行するために3Dルックアップテーブルを生成するための区分情報および/または色値を復号することができる。開示する技法は、3Dルックアップテーブルの色成分の効率的な区分と、3Dルックアップテーブルに関する区分情報および/または色値の効率的なシグナリングとを実現する。このようにして、開示する技法は、3Dルックアップテーブルを生成するためのシグナリングコストと計算上の複雑さの両方を低減し得る。本開示で説明する技法は、非対称的および/または不平衡型3Dルックアップテーブルを生成するために使用される情報をシグナリングする際に特に有用であり得る。
[0125] 一例では、本開示で説明する説明する技法は、3Dルックアップテーブルが第1のクロマ成分および第2のクロマ成分(たとえば、CbおよびCrまたはUおよびV)に関してより粗い区分を有し、ルーマ成分(たとえば、Y)に関してより細かい区分を有するように非対称的区分を可能にすることによって、3Dルックアップテーブルの色成分のより効率的な区分を実現することができる。本技法は、3Dルックアップテーブルに関する基本数の区分に加えて、ルーマ成分に関するいくつかの追加の区分をシグナリングすることによって、3Dルックアップテーブルに関する区分情報のより効率的なシグナリングを実現することもできる。別の例では、本技法は、第1のクロマ成分および第2のクロマ成分(たとえば、CbおよびCrまたはUおよびV)の共同区分を可能にすることによって、3Dルックアップテーブルの色成分のより効率的な区分を実現することができる。
[0126] 本技法は、以下の1つまたは複数を可能にすることによって、色域スケーラビリティ(CGS:color gamut scalability)のための3Dルックアップテーブルを生成するために使用される情報のより効率的なシグナリングを実現することもできる。第1の例では、ビデオパラメータセット(VPS:video parameter set)、シーケンスパラメータセット(SPS:sequence parameter set)、ピクチャパラメータセット(PPS:picture parameter set)、スライスヘッダ(slice header)、または任意の他の高レベルシンタックスヘッダ(high level syntax header)内など、CGS色予測情報がどこでシグナリングされるかを示すために、フラグまたはインデックスがシグナリングされ得る。第2の例では、非対称的(asymmetric)および/または不平衡型(unbalanced)3Dルックアップテーブルのサイズ、すなわち、セグメントまたはオクタントの数を示すために、いくつかの区分がシグナリングされ得る。第3の例では、クロマ成分が共同で区分されるとき、クロマ中心区分の範囲がシグナリングされ得る。
[0127] 第4の例では、CGS色予測情報の下位レベル(たとえば、スライスレベル)パラメータは、CGS色予測情報の上位レベル(たとえば、PPSレベル)パラメータから予測的にコーディングされ得る。第5の例では、CGS色予測情報のシンタックステーブルは、VPS、SPS、PPS、またはスライスヘッダ内など、ビットストリーム内でシグナリングされ得る。いくつかのCGS色予測シンタックステーブルがビットストリーム内の異なるロケーションでシグナリングされるとき、コーディングされるべきピクチャをカバーする下位レベルにおけるシンタックステーブルが、ピクチャに関して使用され得る。第6の例では、CGS色予測情報のシンタックステーブルは、コーディングされるべきピクチャに関してテクスチャ予測が有効化されるかどうかに従って、条件付きでシグナリングされ得る。ビデオデータの上位レイヤ、すなわち、拡張レイヤが複数のテクスチャ参照レイヤを有するとき、その色域が拡張レイヤとは異なる参照レイヤのすべてまたはいくつかに関して、CGS色予測シンタックステーブルがシグナリングされ得る。第7の例では、低い複雑さを維持するために、CGS色予測シンタックステーブルは、ピクチャ当たり、せいぜい1つだけの参照レイヤに関してシグナリングされるようにさらに制約され得る。
[0128] 第8の例では、3Dルックアップテーブル内のクロマ方向のうちの1つに沿って不均等な区分を取得するために、第1のクロマ成分および第2のクロマ成分のうちの少なくとも1つに関して区分境界がシグナリングされ得る。区分境界情報は、クロマ成分のうちの少なくとも1つがクロマ方向に沿って2個以上のセグメントまたはオクタントに区分されるとき、条件付きでシグナリングされ得る。
[0129] 3Dルックアップテーブルの色成分の各々が1つまたは複数のオクタントに区分されると、本開示で説明する技法は、3Dルックアップテーブルの色値のより効率的なシグナリングを実現することができる。本技法は、3Dルックアップテーブルの色成分の各々に関する各オクタントに関して、オクタントの各々の頂点の値、またはオクタントの各々に関する線形カラーマッピング関数のカラーマッピング係数のうちのいずれかをシグナリングすることを含む。本開示では、「区分(partition)」、「オクタント(octant)」、「セグメント(segment)」および「直方体(cuboid)」という用語は、3Dルックアップテーブルの色成分の区分された領域を記述するために交換可能に使用され得る。
[0130] 第1の例では、色成分の各々に関する各オクタントに関して、オクタントの頂点がシグナリングされ得る。この例では、所与の頂点の予測値と所与の頂点の実測値との間の残差値がシグナリングされ得る。場合によっては、残差ブロックはさらに量子化され得る。量子化ステップ情報、たとえば、量子化値は、シグナリングされてもよく、または予測値であってもよい。残差値は、第k次指数ゴロムコーディング(kth-order exp-golomb coding)を用いてコーディングされ得る。次数kは、ビットストリーム内でシグナリングされ得るか、またはビットストリーム内で、残差値の大きさなど、他の情報に基づいて適応的に導出され得る。各オクタントすなわち区分に関して、すべての頂点がシグナリングされる必要があるとは限らない。たとえば、近隣のオクタントすなわち直方体が頂点値を共有しない場合、少なくとも4つの頂点がシグナリングされ得る。少なくとも4つの頂点は、オクタントすなわち直方体内のすべての値を補間するために使用され得る。
[0131] 第2の例では、色成分の各々に関する各オクタントに関して、オクタントの頂点の代わりに、3Dルックアップテーブル内の色値の線形カラーマッピング関数に関するカラーマッピング係数(すなわち、a、b、c、およびd)がシグナリングされ得る。色域予測を直接的に実行するために、カラーマッピングパラメータを有する線形カラーマッピング関数が使用され得る。線形カラーマッピング関数は、ビデオデータの下位レイヤに関する第1の色域内の色データをビデオデータの上位レイヤに関する第2の色域に変換するために使用され、カラーマッピング係数は、ビデオデータの下位レイヤの色成分と上位レイヤの色成分との間の重みファクタ(weighting factor)である。本開示では、「カラーマッピング係数(color mapping coefficient)」および「線形色予測係数(linear color prediction coefficient)」という用語は交換可能に使用され得る。加えて、「線形カラーマッピング関数(linear color mapping function)」、「線形色予測関数(linear color prediction function)」、および「3D線形方程式(3D linear equation)」という用語も交換可能に使用され得る。
[0132] この例では、カラーマッピング係数(すなわち、a、b、c、およびd)は、事前定義された数のビットを使用して、浮動小数点値から整数値に変換または量子化され得る。場合によっては、変換情報または量子化情報がビットストリーム内でシグナリングされ得る。他の場合には、変換情報または量子化情報(すなわち、1の値を表すために使用されるビットの数)は、3Dルックアップテーブルの入力ビット深度または出力ビット深度のうちの少なくとも1つに依存し得る。
[0133] 色成分の各々に関して、線形カラーマッピング関数のカラーマッピング係数のうちの1つは、予測されている同じ色成分の重みファクタを定義する重要係数であり得る。たとえば、線形カラーマッピング関数Ue=a・Yb+b・Ub+c・Vb+dを使用して上位レイヤの第1のクロマ成分(すなわち、Ue)を予測するとき、bは下位レイヤの第1のクロマ成分(すなわち、Ub)と予測されている上位レイヤの第1のクロマ成分(すなわち、Ue)との間の重みファクタであるため、bは重要係数である。重要係数のシグナリングは、他の係数とは異なり得る。いくつかの例では、重要係数の予測は、事前定義された非ゼロ値に依存し得るのに対して、他の係数の予測は、ゼロに等しい予測値に依存し得る。他の例では、重要係数の予測は、3Dルックアップテーブルの入力ビット深度または出力ビット深度のうちの少なくとも1つに依存し得る。
[0134] 色域スケーラビリティのための3Dルックアップテーブルを効率的に区分およびシグナリングするための技法の上で説明した多数の例は、単独で、または何らかの組合せで使用されてよく、本開示で説明する例示的な組合せに限定されるべきではない。3Dルックアップテーブルの色成分の効率的な区分、ならびに3Dルックアップテーブルに関する区分情報および/または色値の効率的なシグナリングに関して開示する技法の追加の詳細を下で提供する。
[0135] 上で説明したように、一例では、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のクロマ成分および第2のクロマ成分の共同区分を実行することによって、色域スケーラビリティのための3Dルックアップテーブルを生成することができる。従来の3Dルックアップテーブルでは、ルーマ成分、第1のクロマ成分、および第2のクロマ成分(すなわち、Y、U、およびV)は、単独で区分される。各成分がN個のセグメントまたはオクタントに分割されるとき、オクタントの総数は、大きな3DルックアップテーブルをもたらすN×N×Nであり得る。たとえば、テーブルサイズは、9×9×9または17×17×17までであり得る。オクタントの数を低減させるために、本開示の技法は、第1のクロマ成分および第2のクロマ成分(すなわち、UおよびV)を共同で区分しながら、ルーマ成分(すなわち、Y)の単独区分を実現することができる。
[0136] たとえば、ルーマ成分はM個の区分またはオクタントに均等に分割され得る。第1のクロマ成分および第2のクロマ成分の2D U×V空間は、次いで、次のように、2個の区分に分割され得る。
式中(u,v)は、U成分およびV成分のピクセル値を示し、CBitは、クロマ成分のビット深度を表し、2CBit-1は、クロマピクセルの中心値に対応し、Rは、中心値2CBit-1に対する距離を示す。場合によっては、Rは事前定義された固定値であり得、さもなければ、Rは、VPS、SPS、PPS、またはスライスヘッダ内でなど、ビットストリーム内でシグナリングされる値であり得る。
[0137] 図13は、単独で区分されたルーマ成分と共同で区分されたクロマ成分とを用いた例示的な3Dルックアップテーブル158を示す概念図である。図13の図示の例では、ルーマ成分(すなわち、Y)は、区分線160A、160B、および160Cに従って、4つの部分に均等に区分される。クロマ成分(すなわち、U−V)は区分直方体162に従って、2つの領域に区分される。この例では、クロマ対ピクセル値(u,v)の場合、それは区分直方体162の内部か、または区分直方体162の外部のいずれかである。図13の例では、3Dルックアップテーブル158は4×2=8個の区分に区分される。
[0138] 別の例では、クロマ成分(すなわち、U−V)は共同で区分されるのに対して、ルーマ成分(すなわち、Y)はM個の区分に分割されるが、M個の区分は必ずしも同じサイズであり得るとは限らない。言い換えれば、区分のうちの少なくとも1つが他の区分とは異なるサイズを有するように、ルーマ成分は不均等に区分され得る。たとえば、ルーマ成分の中心値に近接して位置する区分は、中心値からさらに離れて位置する区分よりも微細化、すなわち、細かくされ得る。
[0139] 共同クロマ成分(すなわち、U−V)区分の例では、色域スケーラビリティ(CGS)のための線形カラーマッピング関数のカラーマッピング係数をシグナリングするためのシンタックステーブルおよび関連するセマンティクスは、下の表1〜表3において、次のとおりであり得る。上記の、SHVC WD3に対するいずれかの編集、追加、または更新は、イタリック体のテキストによって示されている。
1に等しいcgs_enable_flagは、色域スケーラビリティが有効化されることを指定する。0に等しいcgs_enable_flagは、色域スケーラビリティが無効化されることを指定する。存在しないとき、cgs_enable_flagは0であると推定される。
1に等しいcgs_info_in_pps_flagは、cgs_info_tableがPPS内に存在することを指定する。0に等しいcgs_info_in_pps_flagは、cgs_info_tableは、PPS内に存在しないが、スライスヘッダ内に存在することを指定する。存在しないとき、cgs_infor_in_pps_flagは0であると推定される。
cgs_uv_part_range_from_centerシンタックス要素は、クロマ成分の中心値からのクロマ区分の範囲を指定する。存在しないとき、cgs_uv_part_range_from_centerは0であると推定される。
cgs_y_part_num_log2シンタックス要素は、CGS色予測におけるルーマ区分の数を指定する。存在しないとき、cgs_y_part_num_log2は0であると推定される。CGS_PART_NUMパラメータは、次のように導出される。CGS_PART_NUM=1<<(cgs_y_part_num_log2+1)。
cgs_color_pred_coeff_minus128シンタックス要素およびcgs_color_pred_coeffシンタックス要素は、各々、CGSのための線形カラーマッピング関数のカラーマッピング係数を指定する。存在しないとき、これらは0であると推定される。いくつかの例では、cgs_color_pred_coeff_minus128シンタックス要素およびcgs_color_pred_coeffシンタックス要素は、異なるエントロピーコーディング方法を使用してシグナリングされ得ることに留意されたい。上の表2の例では、se(v)のエントロピーコーディング方法が使用される。代替的に、第k次指数ゴロムコーディングまたは固定長コーディングが使用され得る。cgs_color_pred_coeff_minus128シンタックス要素は、この例では、1.0の浮動小数点値を表すために使用される整数値である128に等しい事前定義された固定数として重要係数に関する予測値を示すことにも留意されたい。
色域スケーラビリティが有効化され(たとえば、cgs_enable_flat=1)、cgs_info_tableがPPS内に存在しない(たとえば、cgs_info_in_pps_flag=0)とき、cgs_info_tableは、PPS内に存在しないが、スライスヘッダ内に存在する。
[0140] 上で説明したように、別の例では、ビデオエンコーダ20および/またはビデオデコーダ30は、第1のクロマ成分および第2のクロマ成分(たとえば、CbおよびCrまたはUおよびV)に関するより粗い区分とルーマ成分(たとえば、Y)に関するより細かい区分とを用いて、色域スケーラビリティのための3Dルックアップテーブルを生成することができる。ビデオエンコーダ20および/またはビデオデコーダ30は、基本区分値、たとえば、3Dルックアップテーブルに関する最大分割深度に従って、色成分の各々をいくつかのオクタントに区分し、次いで、ルーマ区分値に基づいて、ルーマ成分のオクタントの各々をさらに区分することによって、この3Dルックアップテーブルを生成することができる。一例では、ルーマ区分値はビットストリーム内でビデオエンコーダ20によってビデオデコーダ30にシグナリングされ得る。いくつかの例では、基本区分値もビットストリーム内でビデオエンコーダ20によってビデオデコーダ30にシグナリングされ得る。他の場合では、ルーマ区分値はビデオエンコーダ20とビデオデコーダ30の両方によって導出され得、および/または基本区分値はビデオエンコーダとビデオデコーダの両方において知られている事前定義された値であり得る。
[0141] 一例では、ビデオエンコーダ20および/またはビデオデコーダ30は、初めに、事前定義またはシグナリングされた分割深度(split depth)に達するまで、色成分の各々(すなわち、Y−U−V空間)が反復的および対称的に分割または区分されるように、3Dルックアップテーブルを構成する。分割深度は、3Dルックアップテーブルの色成分のすべてが区分され得る最大回数を定義する。このようにして、基本区分値は分割深度として定義され得る。その場合、ビデオエンコーダ20および/またはビデオデコーダ30は、ルーマ成分(すなわち、Y)がより細かい区分を有するのに対して、クロマ成分(すなわち、UおよびV)がより粗い区分を有するように、ルーマ方向(すなわち、Y)に沿って、各々、最小の立方体またはオクタントを均等に、または不均等にさらに分割する。
[0142] たとえば、ルーマ成分に関するより細かい区分とクロマ成分に関するより粗い区分とを有する、提案される3Dルックアップテーブルは、下の表4において次のようにシグナリングされ得る。上記の、SHVC WD3に対するいずれかの編集、追加、または更新は、イタリック体のテキストによって示されている。
cur_octant_depthシンタックス要素は、現在の表に関して、Y−U−V空間に関する最大分割深度を示す。言い換えれば、cur_octant_depthシンタックス要素は、3Dルックアップテーブルに関する基本区分値を示す。
cur_y_part_num_log2シンタックス要素は、最小立方体に関するY区分の数を指定する。代替的に、cur_y_part_num_log2シンタックス要素は、そのsplit_octant_flagが0に等しい立方体に関するY区分の数を指定する。言い換えれば、cur_y_part_num_log2シンタックス要素は、3Dルックアップテーブルのルーマ成分に関するルーマ区分値を示す。一例として、cur_octant_depthによって示される基本区分値は、色成分の各々が単一のオクタントに区分されるように、1に等しく、cur_y_part_num_log2によって示されるルーマ区分値は、ルーマ成分の単一のオクタントが、サイズ4×1×1の3Dルックアップテーブルをもたらす、4個のオクタントに区分されるように、4に等しい。別の例として、cur_octant_depthによって示される基本区分値は、色成分の各々が2個のオクタントに区分されるように、2に等しく、cur_y_part_num_log2によって示されるルーマ区分値は、ルーマ成分の2個のオクタントの各々が、サイズ8×2×2の3Dルックアップテーブルをもたらす、4個のオクタントに区分されるように、4に等しい。
input_bit_depth_minus8シンタックス要素は、3Dルックアップテーブル入力のビット深度を指定する。InputBitDepthパラメータは次のように計算され得る。InputBitDepth=8+input_bit_depth_minus8。
output_bit_depth_minus8シンタックス要素は、3Dルックアップテーブル出力のビット深度を指定する。OutputBitDepthパラメータは次のように計算され得る。OutputBitDepth=8+output_bit_depth_minus8。
res_quant_bitシンタックス要素は、3Dルックアップテーブルの各色成分に関する各オクタントに関する頂点残差値またはカラーマッピング係数残差値のいずれかを量子化する際に使用されるビットの数を指定する。残差値の量子化は、頂点残差値またはカラーマッピング係数残差値をres_quant_bitだけ右シフトすることによって達成される。
coding_octantシンタックステーブルについて、下で表5に関してより詳細に説明する。下の表5に示すcoding_octantシンタックステーブルの例では、ルーマ成分(すなわち、Y)がクロマ成分(すなわち、UおよびV)よりも細かい区分を有するように、最小のオクタントすなわち直方体だけが、ルーマ(すなわち、Y方向)に沿ってさらに分割される。いくつかの例では、任意のオクタントすなわち直方体はルーマ方向に沿って分割され得る。この例では、オクタントがルーマ方向に沿ってさらに分割されるかどうかがビットストリーム内でシグナリングされ得る。
[0143] 上で説明したように、さらなる例では、ビデオエンコーダ20および/またはビデオデコーダ30は、色成分の各々に関するオクタントの数と、オクタントの各々に関する色値とに基づいて、3Dルックアップテーブルを生成することができる。場合によっては、3Dルックアップテーブルの色成分のうちの少なくとも1つに関するオクタントの数は、ビデオエンコーダ20によってビデオデコーダ30にシグナリングされ得る。ビデオデコーダ30が3Dルックアップテーブルの色成分の各々に関する各オクタントに関する色値を決定するために、ビデオエンコーダ20は、オクタントの各々の頂点またはオクタントの各々の色値の線形カラーマッピング関数に関するカラーマッピング係数のいずれかをシグナリングすることができる。
[0144] 上で説明した一例では、オクタントすなわち区分の各々に関して、ビデオエンコーダ20は、3Dルックアップテーブル内の色値の線形カラーマッピング関数のカラーマッピング係数をシグナリングすることができる。線形カラーマッピング関数は、ビデオデータの下位レイヤに関する第1の色域内の色データをビデオデータの上位レイヤに関する第2の色域に変換するために使用され、カラーマッピング係数は、ビデオデータの下位レイヤの色成分と上位レイヤの色成分との間の重みファクタである。色成分の各々に関して、カラーマッピング係数のうちの1つは、ビデオデータの下位レイヤおよび上位レイヤの同じ色成分間の重みファクタを定義する重要係数であり得る。
[0145] 共通線形カラーマッピング関数は、次のように表現され得る。
この例示的な関数では、下付き文字eおよびbは、それぞれ、ルーマ色成分、第1のクロマ色成分、および第2のクロマ色成分(すなわち、Y、U、およびV)の各々に関する上位レイヤ(すなわち、拡張レイヤ)および下位レイヤ(たとえば、ベースレイヤ)を示す。パラメータa、b、c、およびdはカラーマッピング係数を表す。いくつかの例では、カラーマッピング係数a00、b11、およびc22は、色成分の各々に関する重要係数、すなわち、ベースレイヤおよび拡張レイヤの同じ色成分間の重みファクタを表す)。本開示では、これらの係数は重要係数と呼ばれるが、同様に定義される係数は他の名称で呼ばれる場合もあるため、この名称は限定的と見なされるべきではない。いくつかの例では、所与のオクタントに関する線形カラーマッピング関数のカラーマッピング係数(すなわち、a、b、c、およびd)は、最初に、所与のオクタントの頂点に変換され得、次いで、それらの頂点の値は、3Dルックアップテーブル内の色値を表すために、ビットストリーム内でコーディングされ得る。
[0146] いくつかの例では、線形カラーマッピング関数のカラーマッピング係数(すなわち、a、b、c、およびd)は、浮動小数点値として導出される。この例では、ビデオエンコーダ20は、カラーマッピング係数の浮動小数点値を整数値に変換または量子化し、次いで、各オクタントに関して、それらの整数値をビットストリーム内に符号化することができる。たとえば、カラーマッピング係数の整数値は、上の表2に示したcgs_info_table内で符号化され得るか、または下の表5に示すcoding_octant表内で符号化され得る。ビデオデコーダ30は、次いで、カラーマッピング係数の整数値を使用して、整数演算を実行することができる。
[0147] 合理的な精度でカラーマッピング係数の浮動小数点値を表すために、たとえば、1.0の浮動小数点値を表すための整数値として256(8ビット)を使用して、1.0の浮動小数点値を表すための整数値が選択される。ビデオエンコーダ20は、次の方程式に従って、変換または量子化を実行することができる。
式中、aは、変換または量子化されるべきカラーマッピング係数の浮動小数点値を示し、Aは、変換または量子化された整数値であり、
は、パラメータxを、xよりも小さい最大整数値に丸める床関数(floor function)を示し、Nは、1.0の浮動小数点値を変換または量子化するために必要とされるビットの数を示す。このようにして、浮動小数点値を表す整数値はパラメータNに基づくビット深度(たとえば、8ビット)を有する。
[0148] 一例では、変換または量子化は、8または10など、事前定義された固定値に設定された、上記の方程式
の指数のパラメータNに基づき得る。別の例では、変換または量子化は、3Dルックアップテーブルの入力ビット深度(すなわち、Bi)または出力ビット深度(すなわち、Bo)のうちの少なくとも1つに基づいて決定されたNの値に基づき得る。たとえば、変換または量子化は、次の方程式のうちの1つに従って決定されたパラメータNに基づき得る。
[0149] いくつかの例では、ビデオエンコーダ20および/またはビデオデコーダ30は、カラーマッピング係数を予測し、カラーマッピング係数の元の値とカラーマッピング係数の予測値との間の差分として、カラーマッピング係数の残差値をコーディングすることができる。たとえば、所与のオクタントに関して、カラーマッピング係数のうちの少なくとも1つ、たとえば、重要係数のうちの1つに関する予測または予測の一部は、事前定義された固定値に等しい予測値に基づき得る。一例では、予測値は2Nに等しく設定されてよく、この場合、Nは、上で説明した量子化ビット値である。別の例として、所与のオクタントに関して、カラーマッピング係数のうちの少なくとも1つ、たとえば、重要係数のうちの1つに関する予測または予測の一部は、3Dルックアップテーブルの入力ビット深度(すなわち、Bi)または出力ビット深度(すなわち、Bo)のうちの少なくとも1つに依存し得る。たとえば、予測または予測の一部は、
に等しい予測値に基づき得る。
[0150] 一例として、ビデオエンコーダ20および/またはビデオデコーダ30は、次のようにカラーマッピング係数の予測を実行することができる。色成分の各々に関する第1のオクタントに関して、線形カラーマッピング関数のカラーマッピング係数は事前定義された固定値に基づいて予測され得る。色成分の各々に関する重要係数は、他の係数とは異なって予測され得る。たとえば、重要係数は、事前定義された非ゼロ値に等しい予測値に基づいて予測され得、任意の残りのカラーマッピング係数は、ゼロに等しい予測値に基づいて予測され得る。この例では、色成分の各々に関する任意の残りのオクタントのカラーマッピング係数は、第1のオクタントなど、少なくとも1つの前のオクタントからの予測値に基づいて予測され得る。
[0151] カラーマッピング係数の予測の別の例として、色成分の各々に関する第1のオクタントに関して、すべての色成分に関する重要係数に関する予測値は、
に等しく設定されてよく、他の係数に関する予測値は0に等しく設定されてよい。この例では、色成分の各々に関する残りのオクタントの係数は前のオクタントから予測され得る。さらなる例では、カラーマッピング係数の予測は、色成分の各々に関する異なる区分間またはオクタント間で実行され得る。代替的に、カラーマッピング係数のセットは、SPSまたはPPS内など、基本係数としてシグナリングされ得る。その場合、カラーマッピング係数の実測値と基本係数の値との間の差分はピクチャレベルまたはスライスレベルでシグナリングされ得る。
[0152] 場合によっては、カラーマッピング係数の残差値は、決定された量子化値に基づいて量子化され得る。ビデオエンコーダ20は、ビデオデコーダ30がカラーマッピング係数を適切に復号するための逆量子化を実行するために、決定された量子化値をシグナリングすることができる。一例では、決定された量子化値は、上の表4に関してより詳細に説明したres_quant_bitシンタックス要素によって示され得る。
[0153] この場合、色成分の各々に関するオクタントの各々に関して、ビデオエンコーダ20は、カラーマッピング係数の元の値と、カラーマッピング係数の予測値とに基づいて、カラーマッピング係数の残差値を計算し、決定された量子化値に基づいて、カラーマッピング係数の残差値を量子化し、次いで、カラーマッピング係数の残差値をビットストリーム内で符号化することができる。ビデオエンコーダ20は、決定された量子化値を示すために、res_quant_bitシンタックス要素を符号化することもできる。ビデオデコーダ30は、次いで、res_quant_bitシンタックス要素と、カラーマッピング係数の残差値とを復号し、決定された量子化値に基づいて、カラーマッピング係数の残差値を逆量子化し、復号された残差値とカラーマッピング係数の予測値とに基づいて、カラーマッピング係数を再構成する。
[0154] 加えて、カラーマッピング係数の値は、事前定義された固定値、または3Dルックアップテーブルの入力ビット深度もしくは出力ビット深度のうちの少なくとも1つに応じた値に基づいた所与の範囲内に制限され得る。カラーマッピング係数の値(すなわち、a、b、c、およびd)は、3Dルックアップテーブルを生成する計算上の複雑さを低減するために、ある範囲に限定され得る。一例として、この値は、両端値を含む−2Mから2M−1の範囲内に制限されてよく、この場合、Mは10または12など、事前定義された固定値に等しく設定される。代替的に、Mの値は、3Dルックアップテーブルの量子化ビット値N、入力ビット深度(すなわち、Bi)、または出力ビット深度(すなわち、B0)のうちの1つもしくは複数に依存し得る。
[0155] 上で説明した別の例では、オクタントすなわち区分の各々に関して、ビデオエンコーダ20は、3Dルックアップテーブル内の色値を示すために、オクタントの頂点の値をシグナリングすることができる。3Dルックアップテーブルの色値をシグナリングするために使用され得るcoding_octantシンタックステーブルは、本開示では、主に、オクタント頂点の値をシグナリングすることに関して説明される。しかしながら、各オクタントに関する線形カラーマッピング関数に関するカラーマッピング係数の値をシグナリングするために、実質的に同様のcoding_octantシンタックステーブルが使用され得るため、本説明は限定的であると見なされるべきではない。
[0156] 上の表4に示した3Dルックアップテーブル色データシンタックス内に含まれるcoding_octantシンタックステーブルについて、下で表5に関して説明する。上記の、SHVC WD3に対するいずれかの編集、追加、または更新は、イタリック体のテキストによって示されている。
1に等しいsplit_octant_flagは、オクタントが、頂点残差オクタントコーディングのためにすべての方向で半分のサイズを有する8個のオクタントに分割されることを指定する。存在しないとき、それは、0に等しいと推定される。
変数YPartNumは、YPartNum=1<<cur_y_part_num_log2として導出される。
1に等しいencoded_vertex_flagは、インデックス[yIdx2+i][uIdx][vIdx][vertex]を有する頂点の残差が存在することを指定する。0に等しいencoded_vertex_flagは、頂点に関する残差が存在しないことを指定する。存在しないとき、このフラグは0に等しいと推定される。
変数yIdxは、次のように導出される。
変数uIdxは、次のように導出される。
変数vIdxは、次のように導出される。
resY[yIdx][uIdx][vIdx][vertex],resU[yIdx][uIdx][vIdx][vertex]、およびresV[yIdx][uIdx][vIdx][vertex]は、インデックス[yIdx][uIdx][vIdx][vertex]を有する頂点のY成分、U成分、およびV成分と、この頂点に関して予測されるY成分値、U成分値、およびV成分値との間の差分(すなわち、残差値)である。存在しないとき、これらの差分resY[yIdx][uIdx][vIdx][vertex],resU[yIdx][uIdx][vIdx][vertex]、およびresV[yIdx][uIdx][vIdx][vertex]は、0に等しいと推定される。
[0157] 3Dルックアップテーブルの各オクタントに関する線形カラーマッピング関数に関するカラーマッピング係数をシグナリングする例示的な技法では、coding_octantシンタックステーブルは、頂点残差値resY[yIdx][uIdx][vIdx][vertex],resU[yIdx][uIdx][vIdx][vertex]、およびresV[yIdx][uIdx][vIdx][vertex]をシグナリングする代わりに、オクタントの線形カラーマッピング関数に関するカラーマッピング係数(すなわち、a、b、c、およびd)とオクタントに関して予測されるカラーマッピング係数値との間の差分である残差値を示すことができる。
[0158] オクタント頂点の値をシグナリングする例示的な技法に戻ると、3Dルックアップテーブルの各入力は次のように導出され得る。
式中、Xは色成分Y、U、およびVの各々を示し、predX[yIdx][uIdx][vIdx][vertex]は下の表6に従って導出される。
場合によっては、上の表6に関して説明した予測手順のシフト演算の間に追加のオフセットが適用され得る。
[0159] 3Dルックアップテーブルの各オクタントに関する線形カラーマッピング関数に関するカラーマッピング係数をシグナリングする例示的な技法では、カラーマッピング係数の残差値を逆量子化し、カラーマッピング係数の逆量子化された残差値をカラーマッピング係数の予測値に加算することによって、3Dルックアップテーブルの線形カラーマッピング関数に関するカラーマッピング係数(すなわち、lutY、lutU、lutV)を導出または再構成するために、同様の方程式が使用され得る。
[0160] 場合によっては、カラーマッピング係数lutY、lutU、およびlutVの値は、3Dルックアップテーブルを生成する計算上の複雑さを低減するために、ある範囲に限定され得る。一例として、この値は、両端値を含む−2Mから2M−1の範囲内に制限されてよく、この場合、Mは10または12など、事前定義された固定値に等しく設定される。代替的に、Mの値は、3Dルックアップテーブルの量子化ビット値N、入力ビット深度(すなわち、Bi)、または出力ビット深度(すなわち、B0)のうちの1つもしくは複数に依存し得る。
[0161] ビデオエンコーダ20および/またはビデオデコーダ30が、上で説明した1つまたは複数の例示的な技法を使用して3Dルックアップテーブルを生成した後、3Dルックアップテーブルを使用して、次のように色予測が実行され得る。色予測プロセスに対する入力は、ある色空間、たとえば、ビデオデータの下位レイヤまたはベースレイヤに関する第1の色域内の(y,u,v)トリプレットである。色予測プロセスに対する出力は、別の色空間、たとえば、ビデオデータの上位レイヤすなわち拡張レイヤに関する第2の色域内のトリプレット(Y,U,V)である。まず、入力トリプレット(y,u,v)をカバーする最小のオクタントすなわち直方体が3Dルックアップテーブル内に位置特定される。直方体の開始頂点のインデックスの各々が次のように導出される。
いくつかの例では、インデックス計算の間に追加のオフセットが適用され得る。その場合、オクタントすなわち直方体の別の3つのインデックスが、(yIndex,uIndex+1,vIndex);(yIndex,uIndex+1,vIndex+1);および(yIndex+1,uIndex+1,vIndex+1)として導出される。これらの4つの頂点は、図12で四面体156Dとして示される、第4の事例の四面体補間(tetrahedral interpolation)(P0,P1,P3,P7)に対応し得る。次いで、4つの頂点の3Dルックアップ値を補間する四面体補間によって出力トリプレット(output triplet)(Y,U,V)が取得される。他の例では、他の事例の四面体補間が使用され得る。代替的に、オクタントすなわち直方体のすべての8つの頂点が導出され得る。この場合、出力トリプレット(Y,U,V)を導出するために、3線補間が使用され得る。
[0162] さらに別の例では、3DルックアップテーブルはSPSまたはPPS内でシグナリングされ得る。その場合、スライスヘッダ内で、3Dルックアップテーブルが現在スライスに関して上書きされることになるかどうかを示すための追加のフラグがシグナリングされ得る。代替的にまたは/および追加で、3Dルックアップテーブルは、SPS内でシグナリングされ、PPS内で更新され得る。max_octant_depth、max_y_part_num_log2、input_bit_depth、およびoutput_bit_depthなどの共通情報は、SPSまたはPPS内など、最高レベルでだけシグナリングされ得る。ここで、max_octant_depthおよびmax_y_part_num_log2は、3Dルックアップテーブルのサポートされる最大区分数を示す。場合によっては、そのような情報は、最高レベルでシグナリングされる代わりに、プロファイルおよび/またはレベル関連であり得る。
[0163] 上で説明したように、追加の例では、ビデオエンコーダ20は、2個以上のオクタントに区分されているクロマ成分のうちの少なくとも1つ、すなわち、1よりも大きい基本区分値に基づいて、3Dルックアップテーブルのクロマ成分(すなわち、UまたはV)のうちの少なくとも1つに関する区分境界を条件付きでビデオデコーダ30にシグナリングすることができる。場合によっては、クロマ成分のうちの1つまたは両方は均等に区分されない場合がある。言い換えれば、クロマ成分のうちの所与の1つに関して、区分のうちの少なくとも1つは他の区分とは異なるサイズを有する。区分境界は、クロマ成分のうちの1つの、2個以上のオクタントへの不均等区分を定義する。
[0164] 従来、各クロマ成分に関する区分境界情報は、クロマ成分が2個以上のセグメントすなわちオクタントに均等に区分されているかどうかにかかわらず、常にシグナリングされる。本開示の技法によれば、一例では、ビデオエンコーダ20は、クロマ成分(すなわち、UまたはV)のうちの少なくとも1つが2個以上の部分に区分されるときだけ区分境界をシグナリングする。さもなければ、区分境界は、不要であり、ビデオデコーダにシグナリングされない。別の例では、ビデオエンコーダ20は、クロマ成分(すなわち、UおよびV)の各々が2個以上の部分に区分されるときだけ区分境界をシグナリングする。
[0165] 下の表7に関して説明する例では、この条件は、cur_octant_depthシンタックス要素が1に等しいことに基づく。上の表4に関して上で説明したように、cur_octant_depthシンタックス要素は、3Dルックアップテーブルに関する最大分割深度として基本区分値を示す。cur_octant_depthシンタックス要素が1に等しいとき、ルーマ成分、第1のクロマ成分、および第2のクロマ成分の各々は2つのセグメントまたはオクタントに区分される。この場合、区分境界情報をシグナリングするための条件を満たすためには、クロマ成分(すなわち、UおよびV)の両方が2つの部分に区分されなければならない。上記の、SHVC WD3に対するいずれかの編集、追加、または更新は、イタリック体のテキストによって示されている。
cb_part_threshold_minus_centerシンタックス要素は、第1のクロマ成分(すなわち、Cb)に関する区分境界を指定する。cb_part_threshold_minus_centerシンタックス要素が存在しないとき、それは0と推定される。
変数CbPartThresholdは(1<<(cm_input_luma_bit_depth_minus8+cm_input_chroma_bit_depth_delta+7))+cb_part_threshold_minus_centerに等しく設定される。
Cb値が変数CbPartThresholdよりも小さいか、またはそれよりも大きくないとき、Cb値は第1のCb区分に属する。さもなければ、それは第2のCb区分内に属する。
cr_part_threshold_minus_centerシンタックス要素は、第2のクロマ成分(すなわち、Cr)に関する区分境界を指定する。cr_part_threshold_minus_centerシンタックス要素が存在しないとき、それは0と推定される。
変数CrPartThresholdは(1<<(cm_input_luma_bit_depth_minus8+cm_input_chroma_bit_depth_delta+7))+cr_part_threshold_minus_centerに設定される。
Cr値が変数CrPartThresholdよりも小さいか、またはそれよりも大きくないとき、Cr値は第1のCr区分に属する。さもなければ、それは第2のCr区分内に属する。
cb_part_threshold_minus_centerシンタックス要素およびcr_part_threshold_minus_centerシンタックス要素はコーディングに先立って量子化されないことに留意されたい。
[0166] 図14は、マルチレイヤビデオコーディングにおいて3Dルックアップテーブルベースの色域スケーラビリティを使用するための技法を実装し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングとインターコーディングとを実行することができる。イントラコーディングは、所与のビデオフレームもしくはピクチャ内のビデオの空間冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレームもしくはピクチャ内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースのコーディングモードのいずれをも指すことができる。単一方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースのコーディングモードのいずれをも指すことができる。
[0167] 図14に示すように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内で現在のビデオブロックを受信する。図14の例では、ビデオエンコーダ20は、モード選択ユニット40と、ビデオデータメモリ41と、復号ピクチャバッファ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56とを含む。モード選択ユニット40は、今度は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測処理ユニット46と、区分ユニット48と、色予測処理ユニット66とを含む。ビデオブロックの再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換処理ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクト(blockiness artifact)を除去するためにブロック境界をフィルタリングするためのデブロッキングフィルタ(deblocking filter)(図14に図示せず)も含まれ得る。必要な場合、デブロッキングフィルタは、通常、加算器62の出力をフィルタリングすることになる。さらなるフィルタ(インループまたはポストループ)も、デブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡約のために図示されないが、必要な場合、加算器50の出力を(インループフィルタとして)フィルタリングし得る。
[0168] ビデオデータメモリ41は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶することができる。ビデオデータメモリ41内に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。復号ピクチャバッファ64は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ41および復号ピクチャバッファ64は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ41および復号ピクチャバッファ64は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ41は、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0169] 符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間予測を提供するために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測処理ユニット46は、代替で、空間予測を提供するために、コーディングされるべきブロックと同一のフレームまたはスライス中の1つもしくは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを実行することができる。ビデオエンコーダ20は、たとえば、ビデオデータのブロックごとに適当なコーディングモードを選択するために、複数のコーディングパスを実行することができる。
[0170] さらに、区分ユニット48は、前のコーディングパス内の前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分することができる。たとえば、区分ユニット48は、最初に、フレームまたはスライスをLCUに区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいて、LCUの各々をサブCUに区分することができる。モード選択ユニット40は、サブCUへのLCUの区分を示す4分木データ構造をさらに生成することができる。4分木の葉ノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
[0171] モード選択ユニット40は、たとえば、誤差の結果に基づいて、コーディングモードのうちの1つを選択し、得られたイントラコード化ブロックまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器50に提供し、参照フレームとして使用するための符号化されたブロックを再構成するために加算器62に提供することができる。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報などのシンタックス要素をエントロピー符号化ユニット56に提供する。
[0172] 動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念上の目的から別々に示されている。動き推定ユニット42によって実行される動き推定は、ビデオブロックに関する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在ピクチャ(または、他のコード化ユニット)内でコーディングされている現在ブロックに対する参照ピクチャ(または、他のコード化ユニット)内の予測ブロックに対する現在ビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分の観点で、コーディングされるべきブロックと密に一致することが見出されたブロックである。いくつかの例では、ビデオエンコーダ20は、復号ピクチャバッファ64内に記憶された参照ピクチャのサブ整数ピクセル位置に関する値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間することができる。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に関する動き検索を実行し、分数ピクセル精度を有する動きベクトルを出力することができる。
[0173] 動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされたスライス中のビデオブロックのPUの動きベクトルを計算する。参照ピクチャは、その各々が、復号ピクチャバッファ64内に記憶された1つまたは複数の参照ピクチャを識別する、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得る。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[0174] 動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて、予測ブロックをフェッチすること、またはこれを生成することを含み得る。やはり、動き推定ユニット42および動き補償ユニット44は、いくつかの例で、機能的に統合され得る。現在ビデオブロックのPUの動きベクトルを受信するときに、動き補償ユニット44は、参照ピクチャリストのうちの1つにおいて動きベクトルが指す予測ブロックを突き止めることができる。加算器50は、下記で論じるように、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差値を形成することによって、残差ビデオブロックを形成する。一般に、動き推定ユニット42は、ルーマ成分に対して動き推定を実行し、動き補償ユニット44は、クロマ成分とルーマ成分の両方に関して、ルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40は、ビデオスライスのビデオブロックを復号する際のビデオデコーダ30による使用のために、ビデオブロックとビデオスライスとに関連付けられたシンタックス要素を生成することもできる。
[0175] イントラ予測処理ユニット46は、上述のように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在ブロックをイントラ予測することができる。特に、イントラ予測処理ユニット46は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定することができる。いくつかの例では、イントラ予測処理ユニット46は、たとえば別々の符号化パス中に、様々なイントラ予測モードを使用して現在ブロックを符号化することができ、イントラ予測処理ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用すべき適当なイントラ予測モードを選択することができる。
[0176] たとえば、イントラ予測処理ユニット46は、様々なテストされたイントラ予測モードに関するレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの間で最良レートひずみ特性(best rate-distortion characteristics)を有するイントラ予測モードを選択することができる。レートひずみ分析は、一般に、符号化されたブロックと、符号化されたブロックを作るために符号化された、元の符号化されていないブロックとの間のひずみ(または、誤差)の量、ならびに符号化されたブロックを作るのに使用されたビットレート(すなわち、ビットの個数)を決定する。イントラ予測処理ユニット46は、どのイントラ予測モードがブロックに関して最良のレートひずみ値を示すのかを決定するために、様々な符号化されたブロックに関するひずみとレートとから比率を計算することができる。
[0177] ブロックに関するイントラ予測モードを選択した後に、イントラ予測処理ユニット46は、ブロックの選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供することができる。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化することができる。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび(符号語マッピングテーブルとも呼ばれる)複数の修正されたイントラ予測モードインデックステーブルと、様々なブロックに関する符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの表示とを含み得る構成データを、送信されるビットストリーム中に含めることができる。
[0178] ビデオエンコーダ20は、モード選択ユニット40からの予測データを、コーディングされている元のビデオブロックから減算することによって、残差ビデオブロックを形成する。加算器50は、この減算演算を実行する、1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT:discrete cosine transform)または概念的に類似する変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、DCTに概念的に類似する他の変換を実行することができる。ウェーブレット変換、整数変換、サブバンド変換、または他のタイプの変換も使用され得る。どの場合においても、変換処理ユニット52は、残差ブロックに変換を適用して、残差変換係数のブロックを作る。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換することができる。変換処理ユニット52は、得られた変換係数を量子化ユニット54に送ることができる。
[0179] 量子化ユニット54は、ビットレートをさらに低減させるために、変換係数を量子化する。量子化プロセスは、係数の一部またはすべてに関連付けられたビット深度を低減させることができる。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット54は次いで、量子化された変換係数を含む行列の走査を実行することができる。代替的に、エントロピー符号化ユニット56が、このスキャンを実行することができる。
[0180] 量子化の後に、エントロピー符号化ユニット56は、量子化された変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット56は、コンテキスト適応可変長コーディング(CAVLC:context adaptive variable length coding)、コンテキスト適応2進算術コーディング(CABAC:context adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応2進算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率区間区分エントロピー(PIPE:probability interval partitioning entropy)コーディング、または別のエントロピーコーディング技法を実行することができる。コンテキストベースのエントロピーコーディングの場合、コンテキストは、隣接ブロックに基づくものとされ得る。エントロピー符号化ユニット56によるエントロピーコーディングの後に、符号化されたビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信されるか、または後の送信もしくは取出のためにアーカイブされ得る。
[0181] 逆量子化ユニット58および逆変換処理ユニット60は、たとえば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成するために、それぞれ、逆量子化および逆変換を適用する。動き補償ユニット44は、復号ピクチャバッファ64のフレームのうちの1つの予測ブロックに残差ブロックを加算することによって参照ブロックを計算することができる。動き補償ユニット44は、動き推定での使用のためにサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用することもできる。加算器62は、復号ピクチャバッファ64内に記憶するための再構成されたビデオブロックを生成するために、再構成された残差ブロックを動き補償ユニット44によって生成された動き補償された予測ブロックに加算する。再構成されたビデオブロックは、後続ビデオフレーム中のブロックをインターコーディングするための参照ブロックとして、動き推定ユニット42と動き補償ユニット44とによって使用され得る。
[0182] 本開示で説明する技法によれば、ビデオエンコーダ20は、マルチレイヤビデオデータを符号化するとき、3Dルックアップテーブルベースの色域スケーラビリティを実行するように構成される。ビデオエンコーダ20は、SHVC拡張、MV−HEVC拡張、および3D−HEVC拡張、または他のマルチレイヤビデオコーディング拡張のいずれかに従って、マルチレイヤビデオデータを予測して、符号化することができる。具体的には、ビデオエンコーダ20の色予測処理ユニット66は、ビデオデータの上位レイヤに関する色域がそのビデオデータの下位レイヤに関する色域と異なるとき、ビデオデータの上位レイヤのピクチャ中のビデオブロックを予測するために使用されるレイヤ間参照ピクチャを生成することができる。
[0183] ビデオエンコーダ20の色予測処理ユニット66は、ビデオデータの下位レイヤに関する第1の色域内の参照ピクチャの色データをそのビデオデータの上位レイヤに関する第2の色域に変換するために、色域スケーラビリティのための3Dルックアップテーブルを使用して、色予測を実行することができる。いくつかの例では、色予測処理ユニット66は、色成分の各々、すなわち、ルーマ成分、第1のクロマ成分、および第2のクロマ成分に関して、別個の3Dルックアップテーブルを生成することができる。3Dルックアップテーブルの各々は、ルーマ次元と、第1のクロマ次元と、第2のクロマ次元とを含み、3つの独立した色成分を使用してインデックス付けされる。
[0184] 本開示の技法は、色域スケーラビリティのための3Dルックアップテーブルを生成するために使用される情報のシグナリングに関する。そのような技法のいくつかの例では、ビデオエンコーダ20は、色域スケーラビリティのために生成される3Dルックアップテーブルの区分情報および/または色値を符号化することができる。本開示で説明する技法は、非対称的および/または不平衡型3Dルックアップテーブルを生成するために使用される情報をシグナリングする際に特に有用であり得る。
[0185] 開示する技法の一例では、ビデオエンコーダ20の色予測処理ユニット66は、第1のクロマ成分および第2のクロマ成分に関するより粗い区分とルーマ成分に関するより細かい区分とを用いて、3Dルックアップテーブルを生成することができる。色予測処理ユニット66は、基本区分値、たとえば、3Dルックアップテーブルに関する最大分割深度に従って、第1のクロマ色成分、第2のクロマ色成分、およびルーマ色成分の各々を第1の数のオクタントに区分し、次いで、ルーマ区分値に基づいて、ルーマ成分の第1の数のオクタントの各々をさらに区分することによって、この3Dルックアップテーブルを生成することができる。このようにして、3Dルックアップテーブルの第1のクロマ成分および第2のクロマ成分の各々は、より少数の、すなわちより少ないオクタントに区分され(すなわち、より粗く区分され)、3Dルックアップテーブルのルーマ成分は、より多数の、すなわちより多くのオクタントに区分される(すなわち、より細かく区分される)。
[0186] 一例として、基本区分値は、色成分の各々が単一のオクタントに区分されるように、1に等しく、ルーマ区分値は、ルーマ成分の単一のオクタントが、サイズ4×1×1の3Dルックアップテーブルをもたらす、4個のオクタントに区分されるように、4に等しい。別の例として、基本区分値は、色成分の各々が2個のオクタントに区分されるように、2に等しく、ルーマ区分値は、ルーマ成分の2個のオクタントの各々が、サイズ8×2×2の3Dルックアップテーブルをもたらす、4個のオクタントに区分されるように、4に等しい。わかるように、より低い区分値は、色成分に関して、より粗い区分(すなわち、より少数のオクタント)をもたらす。
[0187] 場合によっては、色予測処理ユニット66は、ルーマ区分値を示す少なくとも1つのシンタックス要素(たとえば、第1のシンタックス要素)を生成する。他の場合には、ルーマ区分値はビデオエンコーダ20とビデオデコーダ30の両方において導出されるか、または知られている場合がある。一例として、色予測処理ユニット66は、基本区分値に少なくとも部分的に基づいて、ルーマ区分値を導出することができる。場合によっては、色予測処理ユニット66は、基本区分値を示す少なくとも1つのシンタックス要素(たとえば、第2のシンタックス要素)を生成することもできる。他の場合には、基本区分値はビデオエンコーダ20とビデオデコーダ30の両方において知られている事前定義された値であり得る。ビデオエンコーダ20のエントロピー符号化ユニット56は、次いで、第1のシンタックス要素および/または第2のシンタックス要素をエントロピー符号化することができる。
[0188] 加えて、ビデオエンコーダ20は、クロマ成分のうちの少なくとも1つに関する区分境界を示す1つまたは複数のシンタックス要素を条件付きで符号化することができる。区分境界は、クロマ成分のうちの1つの、2個以上のオクタントへの不均等区分を定義する。本開示の技法のいくつかの例によれば、ビデオエンコーダ20は、クロマ成分のうちの少なくとも1つが2個以上のオクタントに区分されるとき、すなわち、基本区分値が1よりも大きいときだけ、区分境界を示すシンタックス要素を符号化する。さもなければ、区分境界のシグナリングは不要である。
[0189] 開示する技法の別の例では、ビデオエンコーダ20は、ルーマ色成分、第1のクロマ色成分、および第2のクロマ色成分の各々に関するオクタントの数と、オクタントの各々に関する色値とに基づいて、3Dルックアップテーブルを生成することができる。上で説明したように、場合によっては、ビデオエンコーダ20は、3Dルックアップテーブルの色成分のうちの少なくとも1つに関するオクタントの数を示す少なくとも1つのシンタックス要素を符号化することができる。ビデオエンコーダ20は、色成分の各々に関するオクタントの各々に関する色値を符号化することもできる。たとえば、ビデオエンコーダ20は、3Dルックアップテーブル内の色値の線形カラーマッピング関数に関するカラーマッピング係数を符号化することができる。線形カラーマッピング関数は、ビデオデータの下位レイヤに関する第1の色域内の色データをビデオデータの上位レイヤに関する第2の色域に変換するために使用される。線形カラーマッピング関数に関するカラーマッピング係数は、ビデオデータの下位レイヤの色成分と上位レイヤの色成分との間の重みファクタである。色成分の各々に関して、カラーマッピング係数のうちの1つは、ビデオデータの下位レイヤおよび上位レイヤの同じ色成分間の重みファクタを定義する重要係数であり得る。
[0190] 線形カラーマッピング関数に関するカラーマッピング係数は、浮動小数点値として導出され得る。カラーマッピング係数を符号化するのに先立って、ビデオエンコーダ20の色予測処理ユニット66は、カラーマッピング係数の浮動小数点値を整数値に変換することができる。この変換は、3Dルックアップテーブルの入力ビット深度または出力ビット深度のうちの少なくとも1つに基づく、整数値に関するビット深度を使用することができる。加えて、色予測処理ユニット66は、カラーマッピング係数の値を、事前定義された固定値、または3Dルックアップテーブルの入力ビット深度もしくは出力ビット深度のうちの少なくとも1つに応じた値に基づいた所与の範囲内に制限し得る。
[0191] 本開示の技法のいくつかの例では、色予測処理ユニット66は、カラーマッピング係数の元の値とカラーマッピング係数の予測値との間の残差値を符号化するために、カラーマッピング係数のうちの1つまたは複数を予測することができる。たとえば、色成分の各々に関する第1のオクタントに関して、色予測処理ユニット66は、事前定義された固定値に基づいて、線形カラーマッピング関数のカラーマッピング係数を予測することができる。一例では、色成分の各々に関する第1のオクタントに関して、色予測処理ユニット66は、事前定義された非ゼロ値に等しい予測値に基づいて、線形カラーマッピング関数の重要係数を符号化し、ゼロに等しい予測値に基づいて、線形カラーマッピング関数の任意の残りのカラーマッピング係数を符号化することができる。この例では、色予測処理ユニット66は、第1のオクタントなど、少なくとも1個の前に符号化されたオクタントからの予測値に基づいて、色成分の各々に関する任意の残りのオクタントのカラーマッピング係数を符号化することができる。
[0192] ビデオエンコーダ20のエントロピー符号化ユニット56は、次いで、色成分の各々に関するオクタントの各々に関する線形カラーマッピング関数に関するカラーマッピング係数の残差値をエントロピー符号化することができる。場合によっては、エントロピー符号化に先立って、ビデオエンコーダ20は、決定された量子化値に基づいて、量子化ユニット54を使用してカラーマッピング係数の残差値を量子化することができる。ビデオエンコーダ20は、決定された量子化値を符号化することができる。
[0193] 3Dルックアップテーブルの生成時に、色予測処理ユニット66は、3Dルックアップテーブルを使用して、ビデオデータの下位レイヤに関する参照ピクチャの色予測を実行し、色予測された参照ピクチャに基づいて、そのビデオデータの上位レイヤに関する少なくとも1つのレイヤ間参照ピクチャを生成する。レイヤ間参照ピクチャの生成時に、ビデオエンコーダ20の動き補償ユニット44は、3Dルックアップテーブルを使用して生成されたレイヤ間参照ピクチャに基づいて、ビデオデータの上位レイヤのピクチャ中のビデオブロックを予測するために、上記で説明したように動作することができる。ビデオエンコーダ20は、次いで、ビデオデコーダ30に送信するために、ビットストリーム内のビデオブロックの残差データを符号化することができる。
[0194] 図15は、マルチレイヤビデオコーディングにおいて3Dルックアップテーブルベースの色域スケーラビリティを使用することを決定するための技法を実装し得るビデオデコーダ30の一例を示すブロック図である。図15の例では、ビデオデコーダ30は、エントロピー復号ユニット70と、ビデオデータメモリ71と、動き補償ユニット72と、イントラ予測処理ユニット74と、色予測処理ユニット86と、逆量子化ユニット76と、逆変換処理ユニット78と、復号ピクチャバッファ82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図14)に関して説明した符号化パスとは概して逆の復号パスを実行することができる。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成することができるが、イントラ予測処理ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成することができる。
[0195] ビデオデータメモリ71は、ビデオデコーダ30の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶することができる。ビデオデータメモリ71内に記憶されたビデオデータは、たとえば、コンピュータ可読媒体16から、たとえば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードもしくはワイヤレスのネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ71は、符号化されたビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成することができる。復号ピクチャバッファ82は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ71および復号ピクチャバッファ82は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ71および復号ピクチャバッファ82は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ71は、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0196] 復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化されたビデオスライスのビデオブロックと、関連付けられたシンタックス要素とを表す、符号化されたビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化係数、動きベクトルまたはイントラ予測モードインジケータ、および他のシンタックス要素を生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと他のシンタックス要素とを動き補償ユニット72へ転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでのシンタックス要素を受信し得る。
[0197] ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、イントラ予測処理ユニット74は、シグナリングされたイントラ予測モードと、現在フレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックに関する予測データを生成することができる。ビデオフレームがインターコード化(すなわち、BまたはP)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在ビデオスライスのビデオブロックに関する予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、復号ピクチャバッファ82内に記憶された参照ピクチャに基づいて、デフォルトの構成技法を使用して、参照ピクチャリスト、すなわち、リスト0およびリスト1を構成することができる。動き補償ユニット72は、動きベクトルと他のシンタックス要素とをパースすることによって現在ビデオスライスのビデオブロックに関する予測情報を決定し、復号されている現在ビデオブロックの予測ブロックを生成するために、その予測情報を使用する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)と、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)と、スライス用の参照ピクチャリストのうちの1つまたは複数についての構成情報と、スライスの各インター符号化されたビデオブロックに関する動きベクトルと、スライスの各インターコード化ビデオブロックに関するインター予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
[0198] 動き補償ユニット72は、補間フィルタに基づいて補間を実行することもできる。動き補償ユニット72は、参照ブロックのサブ整数ピクセルに関して補間された値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用することができる。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するためにそれらの補間フィルタを使用することができる。
[0199] 逆量子化ユニット76は、ビットストリーム中で提供され、エントロピー復号ユニット70によって復号された、量子化された変換係数を逆量子化する(inverse quantize)、すなわち、逆量子化する(de-quantize)。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中の各ビデオブロックに関してビデオデコーダ30によって計算される量子化パラメータQPYの使用を含み得る。逆変換処理ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
[0200] 動き補償ユニット72が、動きベクトルと他のシンタックス要素とに基づいて現在ビデオブロックに関する予測ブロックを生成した後、ビデオデコーダ30は、逆変換処理ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。必要な場合、ブロッキネスアーティファクトを除去するために復号されたブロックをフィルタリングするためのデブロッキングフィルタも適用され得る。(コーディングループ中の、またはコーディングループ後のいずれかにおける)他のループフィルタも、ピクセルの遷移を平滑化し、または場合によっては、ビデオ品質を改善するために使用され得る。所与のフレームまたはピクチャ中の復号されたビデオブロックは、次いで、後続の動き補償のために使用される参照ピクチャを記憶する復号ピクチャバッファ82内に記憶される。復号ピクチャバッファ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上での後の表示のために、復号ビデオを記憶する。
[0201] 本開示で説明する技法のいくつかの例によれば、ビデオデコーダ30は、マルチレイヤビデオデータを復号するとき、3Dルックアップテーブルベースの色域スケーラビリティを実行するように構成される。ビデオデコーダ30は、SHVC拡張、MV−HEVC拡張、および3D−HEVC拡張、またはHEVCに対する他のマルチレイヤビデオコーディング拡張のいずれかに従って、予測されたマルチレイヤビデオデータを復号して、再構成することができる。具体的には、ビデオデコーダ30の色予測処理ユニット86は、ビデオデータの上位レイヤに関する色域がそのビデオデータの下位レイヤに関する色域と異なるとき、ビデオデータの上位レイヤのピクチャ中のビデオブロックを予測するために使用されるレイヤ間参照ピクチャを生成することができる。
[0202] ビデオデコーダ30の色予測処理ユニット86は、ビデオデータの下位レイヤに関する第1の色域内の参照ピクチャの色データをそのビデオデータの上位レイヤに関する第2の色域に変換するために、色域スケーラビリティのための3Dルックアップテーブルを使用して、色予測を実行することができる。いくつかの例では、色予測処理ユニット86は、色成分の各々、すなわち、ルーマ成分、第1のクロマ成分、および第2のクロマ成分に関して、別個の3Dルックアップテーブルを生成することができる。3Dルックアップテーブルの各々は、ルーマ次元と、第1のクロマ次元と、第2のクロマ次元とを含み、3つの独立した色成分を使用してインデックス付けされる。
[0203] 本開示の技法は、色域スケーラビリティのための3Dルックアップテーブルを生成するために使用される情報のシグナリングに関する。本技法によれば、ビデオデコーダ30は、色域スケーラビリティを実行するために3Dルックアップテーブルを生成するための区分情報および/または色値を復号することができる。本開示で説明する技法は、非対称的および/または不平衡型3Dルックアップテーブルを生成するために使用される情報をシグナリングする際に特に有用であり得る。
[0204] 開示する技法の一例では、ビデオデコーダ30の色予測処理ユニット86は、第1のクロマ成分および第2のクロマ成分に関するより粗い区分とルーマ成分に関するより細かい区分とを用いて、3Dルックアップテーブルを生成することができる。色予測処理ユニット86は、基本区分値、たとえば、3Dルックアップテーブルに関する最大分割深度に従って、第1のクロマ色成分、第2のクロマ色成分、およびルーマ色成分の各々を第1の数のオクタントに区分し、次いで、ルーマ区分値に基づいて、ルーマ成分の第1の数のオクタントの各々をさらに区分することによって、この3Dルックアップテーブルを生成することができる。このようにして、3Dルックアップテーブルの第1のクロマ成分および第2のクロマ成分の各々は、より少ないオクタントのより少数に区分され(すなわち、より粗く区分され)、3Dルックアップテーブルのルーマ成分は、より多数の、すなわちより多くのオクタントに区分される(すなわち、より細かく区分される)。
[0205] 一例として、基本区分値は、色成分の各々が単一のオクタントに区分されるように、1に等しく、ルーマ区分値は、ルーマ成分の単一のオクタントが、サイズ4×1×1の3Dルックアップテーブルをもたらす、4個のオクタントに区分されるように、4に等しい。別の例として、基本区分値は、色成分の各々が2個のオクタントに区分されるように、2に等しく、ルーマ区分値は、ルーマ成分の2個のオクタントの各々が、サイズ8×2×2の3Dルックアップテーブルをもたらす、4個のオクタントに区分されるように、4に等しい。わかるように、より低い区分値は、色成分に関して、より粗い区分(すなわち、より少数のオクタント)をもたらす。
[0206] 場合によっては、ビデオデコーダ30のエントロピー復号ユニット70は、ルーマ区分値を示す少なくとも1つのシンタックス要素(たとえば、第1のシンタックス要素)をエントロピー復号する。他の場合には、ルーマ区分値はビデオエンコーダ20とビデオデコーダ30の両方において導出されるか、または知られている場合がある。一例として、色予測処理ユニット86は、基本区分値に少なくとも部分的に基づいて、ルーマ区分値を導出することができる。場合によっては、エントロピー復号ユニット70は、基本区分値を示す少なくとも1つのシンタックス要素(たとえば、第2のシンタックス要素)を復号することもできる。他の場合には、基本区分値はビデオエンコーダ20とビデオデコーダ30の両方において知られている事前定義された値であり得る。色予測処理ユニット86は、上で説明したように、第1のクロマ成分および第2のクロマ成分に関するより粗い区分とルーマ成分に関するより細かい区分とを用いて、3Dルックアップテーブルを生成するために、事前定義またはシグナリングされた基本区分値と導出またはシグナリングされたルーマ区分とを使用する。
[0207] 加えて、ビデオデコーダ30は、クロマ成分のうちの少なくとも1つに関する区分境界を示す1つまたは複数のシンタックス要素を条件付きで復号することができる。区分境界は、クロマ成分のうちの1つの、2個以上のオクタントへの不均等区分を定義する。本開示の技法によれば、ビデオデコーダ30は、クロマ成分のうちの少なくとも1つが2個以上のオクタントに区分されるとき、すなわち、基本区分値が1よりも大きいときだけ、区分境界を示すシンタックス要素を復号する。さもなければ、区分境界の復号は不要である。
[0208] 開示する技法の別の例では、ビデオデコーダ30は、ルーマ色成分、第1のクロマ色成分、および第2のクロマ色成分の各々に関するオクタントの数と、オクタントの各々に関する色値とに基づいて、3Dルックアップテーブルを生成することができる。上で説明したように、場合によっては、ビデオデコーダ30は、3Dルックアップテーブルの色成分のうちの少なくとも1つに関するオクタントの数を示す少なくとも1つのシンタックス要素を復号するか、さもなければ、3Dルックアップテーブルの色成分の各々に関するオクタントの数を決定することができる。ビデオデコーダ30は、色成分の各々に関するオクタントの各々に関する色値を復号することもできる。たとえば、ビデオデコーダ30は、3Dルックアップテーブル内の色値の線形カラーマッピング関数に関するカラーマッピング係数を復号することができる。線形カラーマッピング関数は、ビデオデータの下位レイヤに関する第1の色域内の色データをビデオデータの上位レイヤに関する第2の色域に変換するために使用される。線形カラーマッピング関数に関するカラーマッピング係数は、ビデオデータの下位レイヤの色成分と上位レイヤの色成分との間の重みファクタである。色成分の各々に関して、カラーマッピング係数のうちの1つは、ビデオデータの下位レイヤおよび上位レイヤの同じ色成分間の重みファクタを定義する重要係数であり得る。
[0209] 線形カラーマッピング関数に関するカラーマッピング係数は、浮動小数点値として最初に導出される。浮動小数点値は、次いで、整数値に変換または量子化される、整数値としてシグナリングされる。この変換は、3Dルックアップテーブルの入力ビット深度または出力ビット深度のうちの少なくとも1つに基づく、整数値に関するビット深度を使用することができる。加えて、色予測処理ユニット86は、カラーマッピング係数の値を、事前定義された固定値、または3Dルックアップテーブルの入力ビット深度もしくは出力ビット深度のうちの少なくとも1つに応じた値に基づいた所与の範囲内に制限し得る。
[0210] ビデオデコーダ30のエントロピー復号ユニット70は、色成分の各々に関するオクタントの各々に関する線形カラーマッピング関数に関するカラーマッピング係数の残差値をエントロピー復号することができる。場合によっては、エントロピー復号の後、および再構成に先立って、ビデオデコーダ30は、決定された量子化値に基づいて、逆量子化ユニット76を使用してカラーマッピング係数の残差値を逆量子化することができる。ビデオデコーダ30は、決定された量子化値を示すシンタックス要素を復号することができる。
[0211] 本開示の技法によれば、色予測処理ユニット86は、カラーマッピング係数の残差値とカラーマッピング係数の予測値とに基づいて、カラーマッピング係数の値を再構成するために、カラーマッピング係数のうちの1つまたは複数を予測することができる。たとえば、色成分の各々に関する第1のオクタントに関して、色予測処理ユニット86は、事前定義された固定値に基づいて、線形カラーマッピング関数のカラーマッピング係数を予測することができる。一例では、色成分の各々に関する第1のオクタントに関して、色予測処理ユニット86は、事前定義された非ゼロ値に等しい予測値に基づいて、線形カラーマッピング関数の重要係数を復号し、ゼロに等しい予測値に基づいて、線形カラーマッピング関数の任意の残りのカラーマッピング係数を復号することができる。この例では、色予測処理ユニット86は、第1のオクタントなど、少なくとも1個の前に復号されたオクタントからの予測値に基づいて、色成分の各々に関する任意の残りのオクタントのカラーマッピング係数を復号することができる。
[0212] 3Dルックアップテーブルの生成時に、色予測処理ユニット86は、3Dルックアップテーブルを使用して、ビデオデータの下位レイヤに関する参照ピクチャの色予測を実行し、色予測された参照ピクチャに基づいて、ビデオデータの上位レイヤに関するレイヤ間参照ピクチャを生成する。レイヤ間参照ピクチャの生成時に、ビデオデコーダ30の動き補償ユニット72は、復号された残差データと、3Dルックアップテーブルを使用して生成されたレイヤ間参照ピクチャとに基づいて、ビデオデータの上位レイヤのピクチャ中のビデオブロックを再構成するために、上記で説明したように動作することができる。
[0213] 図16は、3Dルックアップテーブルの色成分のうちの少なくとも1つに関する区分情報を符号化する例示的な動作を示すフローチャートである。図16の例示的な動作は、図14のビデオエンコーダ20の色予測処理ユニット66によって実行されているとして本明細書で説明される。他の例では、この動作は、図8の色予測処理ユニット144によって実行され得る。
[0214] 本開示の技法によれば、ビデオエンコーダ20の色予測処理ユニット66は、第1のクロマ成分および第2のクロマ成分に関するより粗い区分とルーマ成分に関するより細かい区分とを用いて、3Dルックアップテーブルを生成することができる。色予測処理ユニット66は、基本区分値に基づいて、3Dルックアップテーブルのルーマ成分、第1のクロマ成分、および第2のクロマ成分の各々を第1の数のオクタントに区分することによって、この3Dルックアップテーブルを生成することができる(180)。一例では、基本区分値は、3Dルックアップテーブルに関する最大分割深度であり得る。色予測処理ユニット66は、次いで、ルーマ区分値に基づいて、ルーマ成分の第1の数のオクタントの各々を第2の数のオクタントにさらに区分する(182)。
[0215] 場合によっては、ビデオエンコーダ20は、3Dルックアップテーブルのルーマ成分に関するルーマ区分値を示す少なくとも1つのシンタックス要素(たとえば、第1のシンタックス要素)を符号化することができる。他の場合には、ルーマ区分値はビデオエンコーダ20とビデオデコーダ30の両方において導出されるか、または知られている場合がある。場合によっては、ビデオエンコーダ20は、3Dルックアップテーブルに関する基本区分値を示す少なくとも1つの追加のシンタックス要素(たとえば、第2のシンタックス要素)を生成することもできる。他の場合には、基本区分値はビデオエンコーダ20とビデオデコーダ30の両方において知られている事前定義された値であり得る。
[0216] 加えて、ビデオエンコーダ20は、クロマ成分のうちの少なくとも1つに関する区分境界を示す1つまたは複数のシンタックス要素を条件付きで符号化することができる。区分境界は、クロマ成分のうちの1つの、2個以上のオクタントへの不均等区分を定義する。本開示の技法によれば、ビデオエンコーダ20は、クロマ成分のうちの1つが2個以上のオクタントに区分されていること、すなわち、基本区分値が1よりも大きいことに基づいて、クロマ成分のうちの少なくとも1つに関する区分境界を示すシンタックス要素を符号化する。
[0217] ビデオエンコーダ20は、色成分の各々に関するオクタントの各々に関する色値を符号化することもできる。たとえば、ビデオエンコーダ20は、色成分の各々のオクタントの各々に関する頂点の色値を符号化することができる。別の例として、ビデオエンコーダ20は、3Dルックアップテーブル内の色値の線形カラーマッピング関数に関するカラーマッピング係数を符号化することができる。このようにして、図15からのビデオデコーダ30などのビデオデコーダは、マルチレイヤビデオデータを復号するための色域スケーラビリティを実行するために、シグナリングされた区分情報とシグナリングされた色値とに基づいて、3Dルックアップテーブルを生成することができる。
[0218] 図17は、3Dルックアップテーブルの色成分のうちの少なくとも1つに関する区分情報を復号する例示的な動作を示すフローチャートである。図17の例示的な動作は、図15のビデオデコーダ30の色予測処理ユニット86によって実行されているとして本明細書で説明される。他の例では、動作は、図8の色予測処理ユニット144によって実行され得る。
[0219] 本開示の技法によれば、ビデオデコーダ30は、3Dルックアップテーブルに関する基本区分値を決定する(186)。場合によっては、ビデオデコーダ30は、基本区分値を示す少なくとも1つのシンタックス要素(たとえば、第2のシンタックス要素)を受信されたビットストリームから復号することができる。他の場合には、基本区分値はビデオエンコーダ20とビデオデコーダ30の両方において知られている事前定義された値であり得る。ビデオデコーダ30はまた、3Dルックアップテーブルのルーマ成分に関するルーマ区分値を決定する(188)。場合によっては、ビデオデコーダ30は、ルーマ区分値を示す少なくとも1つのシンタックス要素(たとえば、第1のシンタックス要素)を受信されたビットストリームから復号することができる。他の例では、ビデオデコーダ30は、ルーマ区分値を導出することができる。一例では、ビデオデコーダ30は、基本区分値に少なくとも部分的に基づいて、ルーマ区分値を導出することができる。
[0220] ビデオデコーダ30の色予測処理ユニット86は、第1のクロマ成分および第2のクロマ成分に関するより粗い区分とルーマ成分に関するより細かい区分とを用いて、3Dルックアップテーブルを生成するために、基本区分値とルーマ区分値とを使用する。色予測処理ユニット86は、基本区分値に基づいて、3Dルックアップテーブルのルーマ成分、第1のクロマ成分、および第2のクロマ成分の各々を第1の数のオクタントに区分することによって、この3Dルックアップテーブルを生成することができる(190)。一例では、基本区分値は、3Dルックアップテーブルに関する最大分割深度であり得る。色予測処理ユニット86は、次いで、ルーマ区分値に基づいて、ルーマ成分の第1の数のオクタントの各々を第2の数のオクタントにさらに区分する(192)。このようにして、ルーマ成分は、クロマ成分の各々よりも多い数のオクタントを有するように区分化され得る。
[0221] 加えて、ビデオデコーダ30は、クロマ成分のうちの少なくとも1つに関する区分境界を示す1つまたは複数のシンタックス要素を条件付きで復号することができる。区分境界は、クロマ成分のうちの1つの、2個以上のオクタントへの不均等区分を定義する。本開示の技法によれば、ビデオデコーダ30は、クロマ成分のうちの1つが2個以上のオクタントに区分されていること、すなわち、基本区分値が1よりも大きいことに基づいて、クロマ成分のうちの少なくとも1つに関する区分境界を示すシンタックス要素を復号する。
[0222] ビデオデコーダ30は、色成分の各々に関するオクタントの各々に関する色値を復号することもできる。たとえば、ビデオデコーダ30は、色成分の各々のオクタントの各々に関する頂点の色値を復号することができる。別の例として、ビデオデコーダ30は、3Dルックアップテーブル内の色値の線形カラーマッピング関数に関するカラーマッピング係数を復号することができる。このようにして、ビデオデコーダ30は、マルチレイヤビデオデータを復号するための色域スケーラビリティを実行するために、シグナリングされた区分情報とシグナリングされた色値とに基づいて、3Dルックアップテーブルを生成することができる。
[0223] 図18は、3Dルックアップテーブルの色成分の各々に関するオクタントの各々に関する色値を符号化する例示的な動作を示すフローチャートである。図18の例示的な動作は、図14のビデオエンコーダ20の色予測処理ユニット66によって実行されているとして本明細書で説明される。他の例では、動作は、図8の色予測処理ユニット144によって実行され得る。
[0224] 本開示の技法によれば、ビデオエンコーダ20は、ルーマ色成分、第1のクロマ色成分、および第2のクロマ色成分の各々に関するオクタントの数と、オクタントの各々に関する色値とに基づいて、3Dルックアップテーブルを生成することができる(200)。ビデオエンコーダ20は、色成分の各々に関するオクタントの各々に関する色値を符号化することができる。より具体的には、色成分の各々に関するオクタントの各々に関して、ビデオエンコーダ20は、3Dルックアップテーブル内の色値の線形カラーマッピング関数に関するカラーマッピング係数を符号化することができる(202)。
[0225] カラーマッピング係数の符号化するのに先立って、ビデオエンコーダ20の色予測処理ユニット66は、3Dルックアップテーブルの入力ビット深度または出力ビット深度のうちの少なくとも1つに基づくビット深度を使用して、カラーマッピング係数の浮動小数点値を整数値に変換することができる。加えて、色予測処理ユニット66は、カラーマッピング係数の値を、事前定義された固定値、または3Dルックアップテーブルの入力ビット深度もしくは出力ビット深度のうちの少なくとも1つに応じた値に基づいた所与の範囲内に制限し得る。
[0226] 色予測処理ユニット66は、カラーマッピング係数の元の値とカラーマッピング係数の予測値との間の残差値を符号化するために、カラーマッピング係数のうちの1つまたは複数を予測することができる。たとえば、色成分の各々に関する第1のオクタントに関して、色予測処理ユニット66は、事前定義された非ゼロ値に等しい予測値に基づいて、線形カラーマッピング関数の重要係数を符号化し、ゼロに等しい予測値に基づいて、線形カラーマッピング関数の任意の残りのカラーマッピング係数を符号化することができる。この例では、色予測処理ユニット66は、第1のオクタントなど、少なくとも1個の前に符号化されたオクタントからの予測値に基づいて、色成分の各々に関する任意の残りのオクタントのカラーマッピング係数を符号化することができる。場合によっては、カラーマッピング係数の残差値を符号化することに先立って、ビデオエンコーダ20は、決定された量子化値に基づいて、カラーマッピング係数の残差値を量子化することができる。
[0227] ビデオエンコーダ20は、3Dルックアップテーブルの色成分のうちの少なくとも1つに関するオクタントの数を示す少なくとも1つのシンタックス要素を符号化することもできる。このようにして、図15からのビデオデコーダ30などのビデオデコーダは、マルチレイヤビデオデータを復号するための色域スケーラビリティを実行するために、シグナリングされた区分情報とシグナリングされた色値とに基づいて、3Dルックアップテーブルを生成することができる。
[0228] 図19は、3Dルックアップテーブルの色成分の各々に関するオクタントの各々に関する色値を復号する例示的な動作を示すフローチャートである。図19の例示的な動作は、図15のビデオデコーダ30の色予測処理ユニット86によって実行されているとして本明細書で説明される。他の例では、動作は、図8の色予測処理ユニット144によって実行され得る。
[0229] 本開示の技法のいくつかの例によれば、ビデオデコーダ30は、3Dルックアップテーブルのルーマ色成分、第1のクロマ色成分、および第2のクロマ色成分の各々に関するオクタントの数を決定する(204)。場合によっては、ビデオデコーダ30は、3Dルックアップテーブルの色成分のうちの少なくとも1つに関するオクタントの数を示す少なくとも1つのシンタックス要素を受信されたビットストリームから復号することができる。ビデオデコーダ30はまた、色成分の各々に関するオクタントの各々に関する色値を復号する。より具体的には、色成分の各々に関するオクタントの各々に関して、ビデオデコーダ30は、3Dルックアップテーブル内の色値の線形カラーマッピング関数に関するカラーマッピング係数を復号することができる(206)。ビデオデコーダ30の色予測処理ユニット86は、次いで、ルーマ色成分、第1のクロマ色成分、および第2のクロマ色成分の各々に関するオクタントの数と、オクタントの各々に関するカラーマッピング係数に関連する色値とに基づいて、3Dルックアップテーブルを生成する(208)。ビデオデコーダ30は、マルチレイヤビデオデータを復号するための色域スケーラビリティを実行するために、3Dルックアップテーブルを使用することができる。
[0230] ビデオデコーダ30は、色成分の各々に関するオクタントの各々に関する線形カラーマッピング関数に関するカラーマッピング係数の残差値を受信することができる。場合によっては、カラーマッピング係数の残差値を復号した後で、ビデオデコーダ30は、決定された量子化値に基づいて、カラーマッピング係数の残差値を逆量子化することができる。色予測処理ユニット86は、次いで、カラーマッピング係数のシグナリングされた残差値とカラーマッピング係数の予測値とに基づいて、カラーマッピング係数の値を再構成するために、カラーマッピング係数のうちの1つまたは複数を予測することができる。たとえば、色成分の各々に関する第1のオクタントに関して、色予測処理ユニット86は、事前定義された非ゼロ値に等しい予測値に基づいて、線形カラーマッピング関数の重要係数を復号し、ゼロに等しい予測値に基づいて、線形カラーマッピング関数の任意の残りのカラーマッピング係数を復号することができる。この例では、色予測処理ユニット86は、第1のオクタントなど、少なくとも1個の前に復号されたオクタントからの予測値に基づいて、色成分の各々に関する任意の残りのオクタントのカラーマッピング係数を復号することができる。
[0231] カラーマッピング係数を復号した後、カラーマッピング係数は、3Dルックアップテーブルの入力ビット深度または出力ビット深度のうちの少なくとも1つに基づくビット深度を使用して浮動小数点値を表す整数値であり得る。色予測処理ユニット86は、カラーマッピング係数の値を、事前定義された固定値、または3Dルックアップテーブルの入力ビット深度もしくは出力ビット深度のうちの少なくとも1つに応じた値に基づいた所与の範囲内に制限し得る。
[0232] 本開示のいくつかの態様が、説明のためにHEVC規格の拡張に関して説明されてきた。ただし、本開示で説明した技法は、他の規格またはまだ開発されていないプロプライエタリなビデオコーディング処理を含む、他のビデオコーディング処理にとって有用であり得る。
[0233] 本開示で説明したビデオコーダは、ビデオエンコーダまたはビデオデコーダを指す場合がある。同様に、ビデオコーディングユニットは、ビデオエンコーダまたはビデオデコーダを指す場合がある。同様に、ビデオコーディングは、適用可能なとき、ビデオ符号化またはビデオ復号を指す場合がある。
[0234] 例に応じて、本明細書で説明した技法のうちの任意のもののいくつかの動作または事象は、異なるシーケンスで実行され得、全体的に追加、結合、または除外され得ることが認識されるべきである(たとえば、説明した動作または事象のすべてが、本技法の実施のために必要であるとは限らない)。その上、いくつかの例では、動作または事象は、たとえば、マルチスレッドの処理、割込み処理、または多数のプロセッサを用いて、連続的ではなく同時に実行され得る。
[0235] 1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装されてもよい。ソフトウェアで実施される場合、機能は、コンピュータ可読媒体上の1つもしくは複数の命令またはコード上に記憶され、あるいはこれを介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形の媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従う、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のために命令、コード、および/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の使用可能な媒体とされ得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[0236] 限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または命令もしくはデータ構造の形態で所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、任意の接続が、コンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他の遠隔ソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、マイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含むのではなく、代わりに、非一時的な有形の記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu−rayディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲の中に含まれるべきである。
[0237] 命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の同等の統合された、あるいは個別の論理回路など、1つもしくは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または、本明細書で説明した技法の実装に適切な任意の他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアモジュールならびに/またはソフトウェアモジュール内に提供されるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つもしくは複数の回路または論理要素で十分に実装され得る。
[0238] 本開示の技法は、ワイヤレスハンドセット、集積回路(IC)もしくはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。様々なコンポーネント、モジュール、またはユニットは、開示した技術を実行するように構成されたデバイスの機能的態様を強調するように本開示において説明されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。そうではなく、上記で説明したように、様々なユニットは、コーデックハードウェアユニット中で組み合わせられるか、または上記で説明した1つもしくは複数のプロセッサを含む、適切なソフトウェアおよび/あるいはファームウェアとともに相互動作可能なハードウェアユニットの集合によって提供され得る。
[0239] 様々な例が、説明された。これらおよび他の例は、以下の特許請求の範囲に含まれる。