[0030]高効率ビデオコーディング(HEVC)は、新たに開発されたビデオコーディング規格である。3D−HEVCは、3次元ビデオデータのためのHEVCの拡張である。3D−HEVCは、異なる視点からの同じシーンの複数のビューを提供する。3D−HEVCのための規格化の取り組みは、HEVCに基づくマルチビュービデオコーデックの規格化を含む。3D−HEVCでは、異なるビューから再構成されたビュー成分に基づくビュー間予測が有効にされる。コーディング効率をさらに改善するために、3D−HEVC用の参照ソフトウェアの一部のバージョンでは、2つの新たなコーディングツール、すなわち、ビュー間動き予測およびビュー内残差予測が採用されている。
[0031]3D−HEVCにおいて、ビュー間予測は、標準HEVCにおいて使用される動き補償と同様であり、同じまたは類似のシンタックス要素を使用し得る。マージモード、スキップモード、および高度動きベクトル予測(AMVP)モードが動き予測の例示的なタイプである。ビデオコーダが予測ユニット(PU)に対してビュー間予測を実行するとき、ビデオコーダは、動き情報のソースとして、PUと同じアクセスユニット中にあるが、異なるビュー中にあるピクチャを使用し得る。対照的に、従来の動き補償は、参照ピクチャとして異なるアクセスユニット中のピクチャのみを使用する。したがって、3D−HEVCでは、従属ビュー中のブロックの動きパラメータは、同じアクセスユニットの他のビュー中のすでにコード化動きパラメータに基づいて予測または推測される。
[0032]ビデオコーダが動き予測を実行するとき、ビデオコーダは、現在PUの動き情報がマージモード、スキップモード、またはAMVPモードを使用してシグナリングされるとき、候補リスト(たとえば、マージ用候補リストまたはAMVP候補リスト)を生成し得る。3D−HEVC中のビュー間動き予測を実装するために、候補リストはビュー間予測動きベクトル候補を含み得る。ビデオコーダは、候補リスト中の他の候補と同じ方法でビュー間予測動きベクトル候補を使用し得る。ビュー間予測動きベクトル候補は、視差参照ピクチャのPU(すなわち、参照PU)の動き情報を指定し得る。視差参照ピクチャは、現在PUと同じ時間アクセスユニット中にあるが、現在PUとは異なるビュー中にあり得る。視差基準ピクチャ中の参照PUを決定するために、ビデオコーダは、現在PUについての視差ベクトルを決定するための視差ベクトル構築プロセスを実行し得る。現在PUについての視差ベクトルは、現在PUの予測ブロックと、視差参照ピクチャ中のロケーションとの間の空間変位を示し得る。参照PUは、視差ベクトルによって示されたロケーションをカバーする視差参照ピクチャのPUであり得る。
[0033]一般に、ビュー合成予測(VSP)は、予測の目的で、現在視点に対して隣接視点からのピクチャをワーピングさせる技法である。ワーピングを実行するために、深度情報が使用される。後方ワーピングVSP(BVSP)は、後方ワーピング動作を実行する目的で深度ブロックを導出するために隣接ブロックを使用する。後方ワーピングでは、ワーピングに使用される深度は、一般に、従属ビュー中の深度ファーストコーディング(depth first coding)を必要とする、現在ピクチャの同じ視点からである。BVSP中のブロックについての深度情報を推定するために、ビデオコーダは隣接ブロックから視差ベクトルを導出することができる。ビデオコーダは、次いで、参照ビューから深度ブロックを取得するために、その導出された視差ベクトルを使用し得る。
[0034]視差ベクトルを導出するために、ビデオコーダは、隣接ブロックベースの視差ベクトル(NBDV:Neighboring Blocks Based Disparity Vector)の方法を実行し得る。ビデオコーダが現在PUに関する視差ベクトルを導出するためのNBDV導出を使用するとき、ビデオコーダは、視差ベクトルを導出するために、空間的および時間的隣接ブロックからの視差動きベクトルを使用し得る。この開示では、PUの視差動きベクトルは、視差参照ピクチャ(すなわち、PUとは異なるビュー中にある参照ピクチャ)中の位置を示す動きベクトルを指す。さらに、説明を簡単にするために、本開示は、隣接ブロックとして、空間的隣接ブロックまたは時間的隣接ブロックのいずれかを指す場合がある。
[0035]ビデオコーダは、視差ベクトルをリファインメントするために、参照ビューの深度ビューコンポーネントを使用し得る。ビデオコーダは、後方ビュー合成予測で使用する目的で視差動きベクトルをリファインメントするために同じリファインメントプロセスを使用し得る。特に、ビデオコーダは、現在PUについての視差ベクトルを決定するためにNBDVプロセスを使用し得る。ビデオコーダがNBDV導出を使用して利用可能な視差ベクトルを決定するとき(たとえば、ビデオコーダが隣接ブロック中の視差動きベクトルを発見するとき)、ビデオコーダは、参照ビューの深度マップから深度データを取り出すことによって、視差ベクトルをさらにリファインメントすることが可能である。リファインメントプロセスは2つのステップを含む。第1に、ビデオコーダは、ベースビューなど、以前にコーディングされた参照深度ビュー中の導出された視差ベクトルによって対応する深度ブロックの位置を特定する。対応する深度ブロックのサイズは現在PUのブロックのサイズと同じである。第2に、ビデオコーダは、対応する深度ブロックの4つのコーナーピクセルから1つの深度値を選択し、その選択された深度値をリファインメントされた視差ベクトルの水平成分に変換する。視差ベクトルの水平成分は不変である。
[0036]上記のプロセスは、NBDVリファインメント(NBDV−R)または深度指向NBDV(Do−NBDV)とも呼ばれる。ビデオコーダは、ビュー間動き予測についてのリファインメントされた視差ベクトルを使用し得るが、ビデオコーダはビュー間残差予測についてのリファインメントされていない視差ベクトルを使用し得る。さらに、PUが後方VSPモードでコーディングされる場合、ビデオコーダはPUの動きベクトルとして、リファインメントされた視差ベクトルを記憶し得る。NBDVプロセスが利用可能な視差ベクトルを提供しないとき、上記のNBDV−Rプロセスはスキップされ、ゼロ視差ベクトルが直接返される。
[0037]3D−HEVCの現在視差ベクトル導出方法にはいくつかの問題がある。たとえば、NBDVプロセスが利用不可能な視差ベクトルを提供するとき、ビデオコーダは、その視差ベクトルをリファインメントするために、NBDV−Rプロセスをスキップし得る。これはコーディング性能の低下をもたらし得る。
[0038]本開示の技法は、前述の問題または短所を解決し得る。すなわち、本開示は、視差ベクトル導出方法(たとえば、3D−HEVCにおけるNBDV)が利用可能な視差ベクトルを生成しないとき、参照ビューの深度ビューコンポーネントにアクセスすることによって、より良好にリファインメントされた視差ベクトルを提供し得る。
[0039]いくつかの例では、ビデオデコーダはマルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行し得る。視差ベクトル導出プロセスが利用可能な視差ベクトルを生成しないとき、ビデオデコーダは、それでも、現在ブロックについてのリファインメントされた視差ベクトルを生成するために、視差ベクトルリファインメントプロセスを依然として実行し得る。いくつかのそのような例では、視差ベクトルリファインメントプロセスはゼロ視差ベクトルを使用する。言い換えると、視差ベクトルリファインメントプロセスは、視差ベクトル導出プロセスが利用可能な視差ベクトルを生成する事例に限定されない。視差ベクトル導出プロセスが利用可能な視差ベクトルを生成しない場合ですら、本開示の技法は、(ゼロに等しい水平および垂直成分を有するデフォルト視差ベクトルなど)何らかのデフォルト視差ベクトルについての視差ベクトルリファインメントを可能にする。
[0040]いくつかの例では、視差ベクトル導出プロセス(たとえば、NBDV導出)が、当初、利用可能な視差ベクトルとして返されるか否かを識別するために変数が維持される。この変数は、一定の条件で他のコーディングツールに関して使用され得る。たとえば、0に等しいこのフラグは、現在ブロックについてのビュー間残差予測の無効をもたらし得る。
[0041]図1は、本開示の技法を利用できる例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用する「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指すことがある。
[0042]図1に示すように、ビデオコーディングシステム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は符号化ビデオデータを生成する。したがって、ソースデバイス12はビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス14はソースデバイス12によって生成された符号化ビデオデータを復号することができる。したがって、宛先デバイス14はビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
[0043]ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
[0044]宛先デバイス14は、チャネル16を介してソースデバイス12から符号化ビデオデータを受信し得る。チャネル16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12が符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にする1つまたは複数の通信媒体を備えることができる。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って符号化ビデオデータを変調し得、変調されたビデオデータを宛先デバイス14に送信し得る。1つまたは複数の通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などのワイヤレスおよび/または有線の通信媒体を含む場合がある。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)などのパケットベースネットワークの一部を形成する場合がある。1つまたは複数の通信媒体は、ソースデバイス12から宛先デバイス14への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含む場合がある。
[0045]別の例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、たとえば、ディスクアクセスまたはカードアクセスを介して、記憶媒体にアクセスし得る。記憶媒体は、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化ビデオデータを記憶するための他の適切なデジタル記憶媒体など、種々のローカルにアクセスされるデータ記憶媒体を含み得る。
[0046]さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、宛先デバイス14は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された符号化ビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、符号化ビデオデータを宛先デバイス14に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブが挙げられる。
[0047]宛先デバイス14は、インターネット接続などの標準的なデータ接続を通して符号化ビデオデータにアクセスし得る。データ接続の例示的なタイプとしては、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適な、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、デジタル加入者線(DSL)、ケーブルモデムなど)、または両方の組合せがあり得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0048]本開示の技法は、ワイヤレス適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話などの用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
[0049]図1は一例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶し得、および/またはビデオ復号デバイスはメモリからデータを取り出し、復号し得る。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、かつ/またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。データは、マルチビュービデオデータなど、ビデオデータを含み得る。
[0050]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含む場合がある。ビデオソース18は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および/またはビデオデータを生成するためのコンピュータグラフィックスシステム、あるいはビデオデータのそのようなソースの組合せを含み得る。
[0051]ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化することができる。いくつかの例では、ソースデバイス12は、出力インターフェース22を介して宛先デバイス14に符号化ビデオデータを直接送信する。他の例では、符号化ビデオデータはまた、復号および/または再生のための宛先デバイス14による後のアクセスのために記憶媒体またはファイルサーバ上に記憶され得る。
[0052]図1の例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。入力インターフェース28は、チャネル16を介して符号化ビデオデータを受信し得る。ビデオデコーダ30は、符号化ビデオデータを復号し得る。ディスプレイデバイス32は、復号されたビデオデータを表示し得る。ディスプレイデバイス32は、宛先デバイス14と一体化され得るかまたはその外部にあり得る。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスを備える場合がある。
[0053]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ハードウェアなど、様々な好適な回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェアの命令を記憶し得、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)上記のいずれも、1つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれる場合があり、両者のいずれかがそれぞれのデバイス内の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれる場合がある。
[0054]本開示は、概して、ビデオエンコーダ20が、ある情報をビデオデコーダ30などの別のデバイスに「シグナリング」することに言及する場合がある。「シグナリング」という用語は、概して、圧縮ビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムに起こり得る。代替的に、そのような通信は、符号化時に符号化されたビットストリーム内でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに行われる場合があるなど、ある時間期間にわたって行われ得、次いで、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
[0055]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、そのスケーラブルビデオコーディング(SVC)拡張、マルチビュービデオコーディング(MVC)拡張、およびMVCベースの3DV拡張を含む、ISO/IEC MPEG−4 Visualおよび(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264などのビデオ圧縮規格に従って動作する。いくつかの事例では、H.264/AVCのMVCベース3DV拡張に準拠するどんなビットストリームも、H.264/AVCのMVC拡張に準拠するサブビットストリームを常に含む。さらに、H.264/AVCに対する3次元ビデオ(3DV)コーディング拡張、すなわちAVCベースの3DVを生成する作業が進行中である。他の例では、ビデオエンコーダ20およびビデオデコーダ30は、ITU−T H.261、ISO/IEC MPEG−1 Visual、ITU−T H.262またはISO/IEC MPEG−2 Visual、およびITU−T H.264、ISO/IEC Visualに従って動作し得る。
[0056]他の例では、ビデオエンコーダ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 Working Draft 8」と呼ばれるHEVC規格のドラフトは、Brossらの「High Efficiency Video Coding(HEVC)text specification draft 8」、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT−VC:Joint Collaborative Team on Video Coding)、第10回会議、ストックホルム、スウェーデン、2012年7月、に記載されている。「HEVC Working Draft 9」と呼ばれるHEVC規格の別ドラフトは、Brossらの「High Efficiency Video Coding(HEVC) text specification draft 9」、ITU−T SG16 WP3およびISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT−VC)、第11回会議、上海、中国、2012年10月、に記載されている。さらに、HEVC向けのスケーラブルビデオコーディング拡張、マルチビューコーディング拡張、および3DV拡張を製作する作業が進行中である。HEVCのスケーラブルビデオコーディング拡張はSHEVCと呼ばれることがある。
[0057]現時点で、VCEGおよびMPEGの3Dビデオコーディング共同研究部会(JCT−3C)は、HEVCに基づく3DV規格を開発中であり、規格化作業の一部は、HEVC(MV−HEVC)に基づくマルチビュービデオコーデックの規格化を含み、別の部分はHEVCに基づく3Dビデオコーディング(3D−HEVC)の規格化を含む。3D−HEVC用に、コーディングユニット/予測ユニットレベルにおけるものを含む新たなコーディングツールが、テクスチャおよび深度ビューの両方のために、含められ、サポートされ得る。3D−HEVCのためのソフトウェア3D−HTMが以下のリンクからダウンロードされ得る。[3D−HTMバージョン6.0]:
https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM−6.0/
[0058]次のように、参照ソフトウェア記述、ならびに3D−HEVCの作業草案が利用可能である。2013年12月24日現在、以下のリンク、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/2_Shanghai/wg11/JCT3V−B1005−v1.zipからダウンロードされ得る、Gerhard Tech、Krzysztof Wenger、Ying Chen、Sehoon Yea、「3D−HEVC Test Model Description draft 2」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発に関する共同研究部会、第2回会議、上海、中国、2012年10月。3D−HEVCの参照ソフトウェア記述の別のバージョンは、http://phenix.it−sudparis.eu/jct2/doc_end_user/current_document.php?id=706から利用可能であり得る。「3D−HEVC Test Model Description Draft 3」と呼ばれる、3D−HEVCの別のドラフトは、Techらの、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11の3Dビデオコーディング拡張開発に関する共同研究部会、第3回会議、ジュネーブ、スイス、2013年1月17日〜23日、書類番号JCT3V−C1005_spec_d1に記述されている。ビデオエンコーダ20およびビデオデコーダ30は、SHEVC、MV−HEVCおよび/または3D−HEVCに従って動作し得る。
[0059]HEVCおよび他のビデオコーディング仕様では、ビデオシーケンスは一般に一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の例では、ピクチャは、モノクロームであり得、ルーマサンプルのアレイのみを含み得る。
[0060]ビデオエンコーダ20は、ピクチャの符号化表現を生成するために、コーディングツリーユニット(CTU)のセットを生成してもよい。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーン(color plane)を有する1つまたは複数のモノクロームピクチャでは、CTUは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。コーディングツリーブロックは、サンプルのN×Nブロックであり得る。CTUは「ツリーブロック」または「最大コーディングユニット」(LCU:largest coding unit)と呼ばれることもある。HEVCのCTUは、H.264/AVCなど、他の規格のマクロブロックに広い意味で類似し得る。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のコーディングユニット(CU)を含み得る。スライスは、ラスタ走査順序で連続的に順序付けられた整数個のCTUを含み得る。
[0061]コード化スライスは、スライスヘッダとスライスデータとを含み得る。スライスのスライスヘッダは、スライスについての情報を提供するシンタックス要素を含むシンタックス構造であり得る。スライスデータは、スライスのCTUを含み得る。
[0062]本開示は、1つまたは複数のサンプルブロックのサンプルをコーディングするのに使われる1つまたは複数のサンプルブロックおよびシンタックス構造を指すのに、「ビデオユニット」または「ビデオブロック」または「ブロック」という用語を使う場合がある。例示的なタイプのビデオユニットは、CTU、CU、PU、変換ユニット(TU)、マクロブロック、マクロブロック区分などを含み得る。一般に、ブロックのサイズは、そのブロックに関連付けられたサンプルブロックのサイズを指し得る。
[0063]コード化CTUを生成するために、ビデオエンコーダ20は、CTUのコーディングツリーブロックに対して4分木区分を再帰的に実行して、コーディングツリーブロックをコーディングブロックに分割し得、したがって「コーディングツリーユニット」という名称がある。コーディングブロックは、サンプルのN×Nブロックである。CUは、ルーマサンプルアレイとCbサンプルアレイとCrサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
[0064]ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分してもよい。予測ブロックは、同じ予測がそれに適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUの予測ユニット(PU)は、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、PUは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成してもよい。
[0065]ビデオエンコーダ20は、イントラ予測またはインター予測を使用して、PUのための予測ブロックを生成し得る。ビデオエンコーダ20がイントラ予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャのサンプルに基づいてPUの予測ブロックを生成し得る。本開示では、「に基づいて」という句は、「に少なくとも部分的に基づいて」を示し得る。
[0066]ビデオエンコーダ20がインター予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。インター予測は、単方向(すなわち、単予測(uni-prediction))でも双方向(すなわち、双予測(bi-prediction))でもよい。インター予測を実行するために、ビデオエンコーダ20は、現在ピクチャについての第1の参照ピクチャリスト(RefPicList0)を生成すればよく、現在ピクチャについての第2の参照ピクチャリスト(RefPicList1)を生成してもよい。参照ピクチャリストの各々は、1つまたは複数の参照ピクチャを含み得る。参照ピクチャリストが構築された後(すなわち、利用可能であれば、RefPicList0およびRefPicList1)、参照ピクチャリストに対する参照インデックスは、参照ピクチャリストに含まれる任意の参照ピクチャを識別するために使用され得る。
[0067]単予測を使うとき、ビデオエンコーダ20は、RefPicList0およびRefPicList1のいずれかまたは両方において参照ピクチャを探索して、参照ピクチャ内の参照ロケーションを決定すればよい。さらに、単予測を使うとき、ビデオエンコーダ20は、参照ロケーションに対応するサンプルに少なくとも部分的に基づいて、PUのための予測ブロックを生成すればよい。さらに、単予測を使うとき、ビデオエンコーダ20は、PUの予測ブロックと参照ロケーションとの間の空間変位を示す単一の動きベクトルを生成すればよい。動きベクトルは、PUの予測ブロックと参照ロケーションとの間の水平変位を指定する水平成分を含み得るともに、PUの予測ブロックと参照ロケーションとの間の垂直変位を指定する垂直成分を含み得る。
[0068]PUを符号化するのに双予測を使うとき、ビデオエンコーダ20は、RefPicList0中の参照ピクチャ中の第1の参照ロケーションと、RefPicList1中の参照ピクチャ中の第2の参照ロケーションとを決定すればよい。ビデオエンコーダ20は、PUのための予測ブロックを、第1および第2の参照ロケーションに対応するサンプルに少なくとも部分的に基づいて生成し得る。さらに、PUを符号化するのに双予測を使うとき、ビデオエンコーダ20は、PUの予測ブロックと第1の参照ロケーションとの間の空間変位を示す第1の動きベクトルと、PUの予測ブロックと第2の参照ロケーションとの間の空間変位を示す第2の動きベクトルとを生成すればよい。
[0069]ビデオエンコーダ20がCUの1つまたは複数のPUについての1つまたは複数の予測ブロック(たとえば、ルーマ、Cb、およびCr予測ブロック)を生成した後、ビデオエンコーダ20は、CUについての1つまたは複数の残差ブロックを生成することができる。たとえば、ビデオエンコーダ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コーディングブロック中の対応するサンプルとの間の差分を示し得る。
[0070]さらに、ビデオエンコーダ20は、CUの残差ブロック(たとえば、CUのルーマ、Cb、およびCr残差ブロック)を1つまたは複数の変換ブロック(たとえば、ルーマ、Cb、およびCr変換ブロック)に分解するために、4分木区分を使用し得る。変換ブロックは、同じ変換が適用されるサンプルの矩形(たとえば、正方形または非正方形)ブロックである。CUの変換ユニット(TU)は、ルーマサンプルの変換ブロックと、クロマサンプルの2個の対応する変換ブロックと、それらの変換ブロックサンプルを変換するために使用されるシンタックス構造とを備え得る。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロックおよびCr変換ブロックに関連付けられ得る。TUに関連付けられたルーマ変換ブロックはCUのルーマ残差ブロックのサブブロックであってもよい。Cb変換ブロックはCUのCb残差ブロックのサブブロックであってもよい。Cr変換ブロックはCUのCr残差ブロックのサブブロックであってもよい。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、TUは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
[0071]ビデオエンコーダ20は、TUについての係数ブロックを生成するために、TUの変換ブロックに1回または複数回の変換を適用することができる。たとえば、ビデオエンコーダ20は、TUについてのルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1回または複数回の変換を適用することができる。係数ブロックは変換係数の2次元ブロックであってよい。変換係数はスカラー量であり得る。ビデオエンコーダ20はTUのCb変換ブロックに1回または複数の変換を適用してTUのCb係数ブロックを生成してよい。ビデオエンコーダ20はTUのCr変換ブロックに1回または複数の変換を適用してTUのCr係数ブロックを生成してよい。
[0072]ビデオエンコーダ20は、係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、係数ブロックを量子化してもよい。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現する処理を指す。ビデオエンコーダ20が係数ブロックを量子化した後に、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実行し得る。
[0073]ビデオエンコーダ20は、コード化ピクチャと関連付けられたデータの表現を形成するビットのシーケンスを含むビットストリームを出力し得る。ビットストリームは、一連のネットワークアブストラクションレイヤ(NAL)ユニットを備え得る。NALユニットは、NALユニット中のデータのタイプの指示と、必要に応じてエミュレーション防止ビットが点在するローバイトシーケンスペイロード(RBSP:raw byte sequence payload)の形態でそのデータを含んでいるバイトとを含んでいるシンタックス構造である。NALユニットの各々は、NALユニットヘッダを含み、RBSPをカプセル化する。NALユニットヘッダは、NALユニットタイプコードを含むシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの例では、RBSPはゼロビットを含む。
[0074]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。 たとえば、異なるタイプのNALユニットが、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、コード化スライス、補足エンハンスメント情報(SEI)などについての異なるRBSPをカプセル化することができる。ビデオコーディングデータに対するRBSP(パラメータセットおよびSEIメッセージに対するRBSPに対立するものとして)をカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれることがある。
[0075]HEVCでは、SPSは、コード化ビデオシーケンス(CVS)のすべてのスライスに該当する情報を含み得る。HEVCでは、CVSは、瞬時復号リフレッシュ(IDR:instantaneous decoding refresh)ピクチャ、または切断リンクアクセス(BLA:broken link access)ピクチャ、または、ビットストリーム中の第1のピクチャであるクリーンランダムアクセス(CRA:clean random access)ピクチャから開始し、IDRまたはBLAピクチャでないすべての後続のピクチャを含み得る。すなわち、HEVCでは、CVSは、復号順序で、ビットストリーム中の第1のアクセスユニットであるCRAアクセスユニットと、IDRアクセスユニットまたはBLAアクセスユニットと、それに続いて、後続のIDRまたはBLAアクセスユニットを含まないがそれまでのすべての後続のアクセスユニットを含む、0個以上の非IDRおよび非BLAアクセスユニットとからなり得る、アクセスユニットのシーケンスを備え得る。
[0076]VPSは、0個以上のCVS全体に適用されるシンタックス要素を備えるシンタックス構造である。SPSは、SPSがアクティブであるとき、アクティブであるVPSを識別するシンタックス要素を含み得る。したがって、VPSのシンタックス要素は、SPSのシンタックス要素よりも一般的に適用可能であり得る。PPSは、0個以上のコード化ピクチャに適用されるシンタックス要素を備えるシンタックス構造である。PPSは、PPSがアクティブであるとき、アクティブであるSPSを識別するシンタックス要素を含み得る。スライスのスライスヘッダは、スライスがコーディングされるときにアクティブであるPPSを示すシンタックス要素を含み得る。
[0077]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信することができる。さらに、ビデオデコーダ30は、ビットストリームをパースして、ビットストリームからシンタックス要素を取得し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、PUの動きベクトルを使用して現在CUのPUのための予測ブロックを決定し得る。さらに、ビデオデコーダ30は、現在CUのTUに関連付けられた係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在CUのTUに関連付けられた変換ブロックを再構成するために係数ブロックに対して逆変換を実行し得る。ビデオデコーダ30は、現在CUのPUのための予測ブロックのサンプルを現在CUのTUの変換ブロックの対応するサンプルに加算することによって、現在CUのコーディングブロックを再構成し得る。ピクチャの各CUのためのコーディングブロックを再構成することによって、ビデオデコーダ30はピクチャを再構成し得る。
[0078]上記のように、CUは1つまたは複数のPUに区分され得る。「part_mode」という用語は、現在CUの区分モードを示し得る。言い換えると、part_modeは、CUがPUに区分される方式を示し得る。HEVCでは、part_modeの値は次のように制限され得る。
1つのCUのコーディングモードがMODE_INTRAに等しい場合、part_modeは0または1に等しくなるべきである。CUのコーディングモードは、CUが、イントラ予測(すなわち、MODE_INTRA)を使用してコーディングされたか、またはインター予測(すなわち、MODE_INTER)を使用してコーディングされたかを示し得る。
さもなければ(1つのCUのコーディングモードがMODE_INTERに等しい)、次のことが当てはまり得る。
現在CUのサイズが最小許容CUのサイズよりも大きく、非対称動き区分が有効にされる場合、part_modeは、両端値を含む、0から2の範囲、および、両端値を含む、4から7の範囲であるべきである。非対称動き区分が有効にされるとき、現在CUは、各々が同じサイズを有さないPUに区分され得る。
さもなければ、現在CUのサイズが最小許容CUのサイズよりも大きく、非対称動き区分が無効にされる場合、part_modeは、両端値を含む、0から2の範囲であるべきである。CUのサイズは、CUのコーディングブロック(たとえば、ルーマコーディングブロック)のサイズを指し得る。
さもなければ、現在CUのサイズが8に等しい場合、part_modeの値は、両端値を含む、0から2の範囲であるべきである。
さもなければ、現在CUのサイズが8より大きい場合、part_modeの値は、両端値を含む、0から3の範囲であるべきである。
[0079]part_modeと変数PartModeの関連値との間の関係は、下の表1において定義される。変数PartModeは、区分モードの人間が読み取れる名称を提供する。part_modeという用語は、表1の変数PartModeによって定義される定義にマップする、表1に一致する、コード化ビットストリーム中のインデックス値を定義し得る。いくつかの例では、part_modeが存在しないとき、現在CUの区分モードはPART_2N×2Nに等しいと推測され得る。
[0080]H.264/AVCでは、ビデオシーケンスは、一般に、一連のビデオフレームを含む。さらに、H.264/AVCでは、ピクチャのグループ(GOP)は、一般に、一連の1つまたは複数のビデオフレームを備える。GOPは、GOPに含まれるフレームの数を記述するシンタックスデータを、GOPのヘッダ、GOPの1つもしくは複数のフレームのヘッダ、または他の場所に含む場合がある。各フレームは、それぞれのフレームの符号化モードを記述するフレームシンタックスデータを含み得る。ビデオエンコーダ20は、通常、ビデオデータを符号化するために、個々のビデオフレーム中のブロックに対して動作する。H.264/AVCでは、ブロックは、マクロブロック(MB)またはマクロブロックの区分に対応し得る。MBは、3つのサンプルアレイを有するピクチャのルーマサンプルの16×16ブロックおよびクロマサンプルの2個の対応するブロック、またはモノクロームピクチャもしくは3つの個別のカラープレーンを使用してコーディングされるピクチャのサンプルの16×16ブロックである。MB区分は、3つのサンプルアレイを有するピクチャに対するインター予測のためにマクロブロックを区分することによって得られたルーマサンプルの1個のブロックおよびクロマサンプルの2個の対応するブロック、またはモノクロームピクチャもしくは3つの個別のカラープレーンを使用してコーディングされるピクチャのインター予測のためにマクロブロックを区分することによって得られたルーマサンプルの1個のブロックである。HEVCでは、ブロックはPUに対応し得る。ブロックに関連付けられたサンプルブロック(たとえば、ビデオユニット)は、固定サイズまたは可変サイズを有し得、指定のコーディング規格に応じてサイズが異なり得る。
[0081]H.264/AVCでは、ビデオエンコーダ20は、1つまたは複数の参照ピクチャに基づいて、インターMBに関する予測ブロックを生成する。各インターMBは4つの異なる方法で区分され得る。
1つの16×16MB区分
2つの16×8MB区分
2つの8×16MB区分
4つの8×8MB区分
1つのMB中の異なるMB区分は、各方向ごとに異なる参照インデックス値(すなわち、RefPicList0またはRefPicList1)を有し得る。したがって、ビデオコーダは、異なる参照ピクチャに基づいて、1つのインターMBの異なるMB区分に関する予測ブロックを生成し得る。インターMBが4つの8×8MB区分に区分されないとき、インターMBはMB区分全体について各方向に1つの動きベクトルしか有し得ない。言い換えると、インターMBが4つの8×8MB区分に区分されないとき、インターMBに関する単一のRefPicList0動きベクトルおよびインターMBに関する単一のRefPicList1動きベクトルだけが存在し得る。
[0082]MBが4つの8×8のMB区分に区分されるとき、各8×8のMB区分はサブブロックにさらに区分され得る。8×8MB区分をサブブロックに区分する4つの異なる方法が存在する。
1個の8×8サブブロック
2個の8×4サブブロック
2個の4×8サブブロック
4個の4×4サブブロック
各サブブロックは、各方向に異なる動きベクトルを有し得る。言い換えると、Bスライス中の各サブブロックは、RefPicList0動きベクトルおよびRefPicList1動きベクトルを有し得る。「サブブロック区分」は、8×8MB区分がどのようにサブブロックに区分されるかを示すために使用される用語である。
[0083]HEVC例では、ビデオエンコーダ20は、マージモードまたは高度動きベクトル予測(AMVP)モードを使用して、PUの動き情報をシグナリングすることができる。言い換えると、HEVCでは、動きパラメータ(すなわち、動き情報)の予測のために2つのモードがあり、一方はマージモードであり、他方はAMVPである。動き予測は、1つまたは複数の他のブロックの動き情報に基づく、ブロック(たとえば、PU)の動き情報の決定を備え得る。PUの動き情報は、PUの動きベクトル(1つまたは複数)と、PUの参照インデックス(1つまたは複数)と、1つまたは複数の予測方向インジケータとを含み得る。
[0084]ビデオエンコーダ20がマージモードを使用して現在PUの動き情報をシグナリングするとき、ビデオエンコーダ20は、マージ候補リストを生成し得る。言い換えると、ビデオエンコーダ20は、動きベクトル予測子リスト構築プロセスを実行することができる。マージ候補リストは、現在PUに空間的または時間的に隣接するPUの動き情報を示すマージ候補のセットを含む。すなわち、マージモードでは、動きパラメータ(たとえば、参照インデックス、動きベクトルなど)の候補リストが構築され、候補は、空間的隣接ブロックおよび時間的隣接ブロックからであり得る。
[0085]さらに、マージモードでは、ビデオエンコーダ20は、マージ候補リストからマージ候補を選択することができ、選択されたマージ候補によって示される動き情報を、現在PUの動き情報として使うことができる。ビデオエンコーダ20は、選択されたマージ候補のマージ候補リスト中の位置をシグナリングし得る。たとえば、ビデオエンコーダ20は、インデックスを候補リスト中に送信することによって、選択された動きベクトルパラメータをシグナリングすることができる。ビデオデコーダ30は、ビットストリームから、候補リストの中へのインデックス(すなわち、候補リストインデックス)を取得することができる。さらに、ビデオデコーダ30は、同じマージ候補リストを生成することができ、選択されたマージ候補の位置の表示に基づいて、選択されたマージ候補を決定することができる。ビデオデコーダ30は、次いで、選択されたマージ候補の動き情報を、現在PUのための予測ブロックを生成するのに使い得る。つまり、ビデオデコーダ30は、候補リストインデックスに少なくとも部分的に基づいて、候補リスト中の選択された候補を決定することができ、ここで、選択された候補は、現在PUについての動きベクトルを指定する。このように、デコーダ側では、インデックスが復号されると、インデックスが指す対応するブロックのすべての動きパラメータは、現在PUによって継承され得る。
[0086]スキップモードはマージモードと同様である。スキップモードでは、ビデオエンコーダ20およびビデオデコーダ30は、マージモードにおいてビデオエンコーダ20およびビデオデコーダ30がマージ候補リストを使うのと同じようにマージ候補リストを生成し、使うことができる。ただし、ビデオエンコーダ20がスキップモードを使って現在PUの動き情報をシグナリングするとき、ビデオエンコーダ20は、現在PUについてのどの残差データもシグナリングしない。したがって、ビデオデコーダ30は、残差データを使用せずに、マージ候補リスト中の選択された候補の動き情報によって示される参照ブロックに基づいて、PUのための予測ブロックを決定することができる。
[0087]AMVPモードは、ビデオエンコーダ20が候補リストを生成することができ、候補リストから候補を選択することができるという点で、マージモードと同様である。ただし、ビデオエンコーダ20がAMVPモードを使って現在PUのRefPicListX(Xは0または1である)動き情報をシグナリングするとき、ビデオエンコーダ20は、現在PUについてのRefPicListX動きベクトル予測子(MVP)フラグをシグナリングするのに加え、現在PUについてのRefPicListX動きベクトル差分(MVD)と、現在PUについてのRefPicListX参照インデックスとをシグナリングすることができる。現在PUについてのRefPicListX MVPフラグは、AMVP候補リスト中の選択されたAMVP候補の位置を示し得る。現在PUについてのRefPicListX MVDは、PUのRefPicListX動きベクトルと選択されたAMVP候補の動きベクトルとの間の差分を示し得る。このようにして、ビデオエンコーダ20は、RefPicListX MVPフラグと、RefPicListX参照インデックス値と、RefPicListX MVDとをシグナリングすることによって、現在PUのRefPicListX動き情報をシグナリングすることができる。言い換えると、現在PUについての動きベクトルを表す、ビットストリーム中のデータは、参照インデックスと、候補リストへのインデックスと、MVDとを表すデータを含み得る。
[0088]さらに、AMVPモードを使って現在PUの動き情報がシグナリングされると、ビデオデコーダ30は、ビットストリームから、現在PUについてのMVDと、MVPフラグとを取得することができる。ビデオデコーダ30は、同じAMVP候補リストを生成することができ、MVPフラグに基づいて、選択されたAMVP候補を決定することができる。ビデオデコーダ30は、選択されたAMVP候補によって示される動きベクトルにMVDを加算することによって、現在PUの動きベクトルを回復することができる。つまり、ビデオデコーダ30は、選択されたAMVP候補によって示される動きベクトルおよびMVDに基づいて、現在PUの動きベクトルを決定することができる。ビデオデコーダ30は、次いで、回復された1つの動きベクトルまたは複数の動きベクトルを、現在PU用の予測ブロックを生成するのに使い得る。
[0089]ビデオデコーダ30が現在PUについてのAMVP候補リストを生成するとき、ビデオデコーダ30は、現在PUに空間的に隣接するロケーションをカバーするPU(すなわち、空間的隣接PU)の動き情報に基づいて、1つまたは複数のAMVP候補を導出することができる。図2は、現在PU40に対して、例示的な空間的隣接PUを示す概念図である。図2の例では、空間的隣接PUは、A0、A1、B0、B1、およびB2として示されるロケーションをカバーするPUであり得る。PUの予測ブロックがあるロケーションを含むとき、PUはそのロケーションをカバーし得る。
[0090]現在PUに時間的に隣接するPU(すなわち、現在PUとは異なる時間インスタンス中にあるPU)の動き情報に基づくマージ候補リストまたはAMVP候補リスト中の候補は、時間的動きベクトル予測子(TMVP)と呼ばれ得る。TMVPは、HEVCのコーディング効率を向上させるために使用され得、他のコーディングツールとは異なり、TMVPは、復号ピクチャバッファ中、より具体的には、参照ピクチャリスト中のフレームの動きベクトルにアクセスする必要があり得る。
[0091]TMVPの使用は、CVSごとに、スライスごとに、または別の方式で、有効または無効にされ得る。SPS中のシンタックス要素(たとえば、sps_temporal_mvp_enable_flag)は、TMVPの使用がCVSに対して有効にされるかどうかを示し得る。さらに、TMVPの使用がCVSのために有効にされるとき、TMVPの使用は、CVS内の特定のスライスに対して有効または無効にされ得る。たとえば、スライスヘッダ中のシンタックス要素(たとえば、slice_temporal_mvp_enable_flag)は、TMVPの使用がスライスに対して有効にされるかどうかを示し得る。したがって、インター予測スライスでは、TMVPがCVS全体に対して有効にされる(たとえば、SPS中のsps_temporal_mvp_enable_flagが1に設定される)とき、TMVPの使用が現在スライスに対して有効にされているかどうかを示すために、slice_temporal_mvp_enable_flagがスライスヘッダ中でシグナリングされる。
[0092]TMVPを決定するために、ビデオコーダは、現在PUと同じ場所にあるPUを含む参照ピクチャを最初に識別することができる。言い換えると、ビデオコーダはいわゆるコロケートピクチャを識別することができる。現在ピクチャの現在スライスがBスライス(すなわち、双方向インター予測されたPUを含むことが許容されるスライス)である場合、ビデオエンコーダ20は、コロケートピクチャがRefPicList0からのものであるかRefPicList1からのものであるかを示すシンタックス要素(たとえば、collocated_from_l0_flag)を、スライスヘッダ中でシグナリングすることができる。言い換えると、TMVPの使用が現在スライスに対して有効にされ、現在スライスがBスライス(たとえば、双方向インター予測されたPUを含むことが許容されるスライス)であるとき、ビデオエンコーダ20は、コロケートピクチャがRefPicList0の中にあるかRefPicList1の中にあるかを示すために、シンタックス要素(たとえば、collocated_from_l0_flag)を、スライスヘッダ中でシグナリングすることができる。ビデオデコーダ30がコロケートピクチャを含む参照ピクチャリストを識別した後、ビデオデコーダ30は、識別された参照ピクチャリスト中のピクチャ(すなわち、コロケートピクチャ)を識別するために、スライスヘッダ中でシグナリングされ得る別のシンタックス要素(たとえば、collocated_ref_idx)を使用することができる。すなわち、参照ピクチャリストが識別された後、スライスヘッダ中でシグナリングされるcollocated_ref_idxが参照ピクチャリスト中のピクチャを識別するために使用され得る。
[0093]ビデオコーダは、コロケートピクチャをチェックすることによって、コロケートPUを識別し得る。ビデオコーダがコロケートPUをチェックするとき、ビデオコーダはコロケートピクチャの右下PUおよびコロケートピクチャの中心PUをチェックすることができる。右下PUは、現在PUの予測ブロックの右下コーナーのすぐ下および右のロケーションとコロケートされるロケーションをカバーし得る。中心PUは、現在PUの予測ブロックの中心とコロケートされるロケーションをカバーし得る。TMVPは、右下PUまたは中心PUの動き情報を示し得る。
[0094]マージモードまたはAMVPモードのための動き候補を生成するために上記のプロセスによって識別された動きベクトル(すなわち、TMVPの動きベクトル)が使用されるとき、ビデオコーダは、(POC値によって反映される)時間的ロケーションに基づいて、動きベクトルをスケーリングすることができる。たとえば、ビデオコーダは、現在ピクチャのPOC値と参照ピクチャのPOC値との差が小さいときよりも、現在ピクチャのPOC値と参照ピクチャのPOC値との差が大きいときに、動きベクトルの大きさをより大きな量増大させることができる。
[0095]TMVPから導出される時間マージ候補に対するすべてのあり得る参照ピクチャリストの目標参照インデックスは、常に0に設定され得る。しかしながら、AMVPでは、すべてのあり得る参照ピクチャの目標参照インデックスは、復号された参照インデックスに等しく設定される。HEVCでは、SPSはフラグ(たとえば、sps_temporal_mvp_enable_flag)を含んでよく、sps_temporal_mvp_enable_flagが1に等しく設定されるとき、スライスヘッダはフラグ(たとえば、pic_temporal_mvp_enable_flag)を含んでよい。ある特定のピクチャに対してpic_temporal_mvp_enable_flagとtemporal_idの両方が0に等しいとき、復号順序においてその特定のピクチャの前にあるピクチャからの動きベクトルは、その特定のピクチャ、または復号順序でその特定のピクチャの後にあるピクチャの復号において、TMVPとして使用されない。
[0096]マルチビューコーディングでは、異なる視点からの同じシーンの複数のビューがあり得る。「アクセスユニット」という用語は、同じ時間インスタンスに対応するピクチャのセットを指すために使用される。したがって、ビデオデータは、時間とともに生じる一連のアクセスユニットとして概念化され得る。「ビュー成分」は、単一のアクセスユニット内のビューのコード化表現であり得る。ビュー成分は、テクスチャビューコンポーネントと深度ビューコンポーネントとを含み得る。本開示では、「ビュー」は、同じビュー識別子に関連付けられたビュー成分のシーケンスを指すことがある。
[0097]テクスチャビューコンポーネント(すなわち、テクスチャピクチャ)は、単一のアクセスユニット中のビューのテクスチャのコード化表現であり得る。テクスチャビューは、ビュー順序インデックスの同一の値に関連付けられるテクスチャビューコンポーネントのシーケンスであり得る。ビューのビュー順序インデックスは、他のビューに対するビューのカメラ位置を示し得る。深度ビューコンポーネント(すなわち、深度ピクチャ)は、単一のアクセスユニット中のビューの深度のコード化表現であり得る。深度ビューは、ビュー順序インデックスの同一の値に関連付けられる深度ビューコンポーネントのシーケンスであり得る。
[0098]マルチビューコーディングは、ビュー間予測をサポートする。ビュー間予測は、HEVCにおいて使用されるインター予測と同様であり、同じシンタックス要素を使用し得る。ただし、ビデオコーダが現在ブロック(PUなど)に対してビュー間予測を実行するとき、ビデオエンコーダ20は、参照ピクチャとして、その現在ブロックと同じアクセスユニット中にあるが異なるビュー中にあるピクチャを使用し得る。対照的に、従来のインター予測は、参照ピクチャとして異なるアクセスユニット中のピクチャのみを使用する。
[0099]テクスチャビューコンポーネントは、表示される実際の画像コンテンツを含む。たとえば、テクスチャビューコンポーネントは、ルーマ(たとえば、Y)成分と、クロマ(たとえば、CbおよびCr)成分とを含み得る。深度ビューコンポーネントは、その対応するテクスチャビューコンポーネント中のピクセルの相対深度を示し得る。一例として、深度ビューコンポーネントは、ルーマ値のみを含むグレースケール画像である。言い換えると、深度ビューコンポーネントは、任意の画像コンテンツを伝達するのではなく、テクスチャビューコンポーネント中のピクセルの相対深度の測定値を提供することができる。
[0100]マルチビューコーディングでは、ビットストリームは複数のレイヤを有し得る。これらのレイヤの各々は、異なるビューに対応し得る。マルチビューコーディングでは、ビデオデコーダ(たとえば、ビデオデコーダ30)が、あるビュー中のピクチャを任意の他のビュー中のピクチャを参照せずに復号することができる場合、そのビューは「ベースビュー」と呼ばれることがある。ビューは、ビューの復号が1つまたは複数の他のビュー中のピクチャの復号に依存する場合、非ベースビューと呼ばれ得る。
[0101]たとえば、NALユニットは、ヘッダ(すなわち、NALユニットヘッダ)とペイロード(たとえば、RBSP)とを含み得る。NALユニットヘッダはnuh_reserved_zero_6bitsシンタックス要素を含み得る。異なる値を指定するnuh_reserved_zero_6bitシンタックス要素を有するNALユニットは、ビットストリームの異なる「レイヤ」に属する。したがって、マルチビューコーディング、3DV、またはSVCでは、NALユニットのnuh_reserved_zero_6bitsシンタックス要素はNALユニットのレイヤ識別子(すなわち、レイヤID)を指定する。いくつかの例では、NALユニットがマルチビューコーディング、3DVコーディング、またはSVCにおけるベースレイヤに関係する場合、NALユニットのnuh_reserved_zero_6bitsシンタックス要素は0に等しい。ビットストリームのベースレイヤ中のデータは、ビットストリームの他のレイヤ中のデータと無関係に復号され得る。NALユニットがマルチビューコーディング、3DV、またはSVCにおけるベースレイヤに関係しない場合、nuh_reserved_zero_6bitsシンタックス要素は非0値を有し得る。上記のように、マルチビューコーディングおよび3DVコーディングでは、ビットストリームの異なるレイヤは異なるビューに対応し得る。SVCでは、ベースレイヤ以外のレイヤは、「エンハンスメントレイヤ」と呼ばれることがあり、ビットストリームから復号されるビデオデータの視覚的品質を向上させる情報を提供し得る。
[0102]さらに、レイヤ内のいくつかのピクチャは、同じレイヤ内の他のピクチャを参照せずに復号され得る。したがって、レイヤのいくつかのピクチャのデータをカプセル化しているNALユニットは、そのレイヤ中の他のピクチャの復号可能性に影響を及ぼすことなしにビットストリームから削除され得る。そのようなピクチャのデータをカプセル化しているNALユニットを削除すると、ビットストリームのフレームレートが低減し得る。レイヤ内の他のピクチャを参照せずに復号され得るレイヤ内のピクチャのサブセットを、本明細書では「サブレイヤ」または「時間サブレイヤ」と呼ぶことがある。
[0103]非ベースビューのうちの1つの中のピクチャをコーディングするとき、ピクチャが、異なるビュー中にあるがビデオコーダが現在コーディングしているピクチャと同じ時間インスタンス(すなわち、アクセスユニット)内にある場合、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、参照ピクチャリストにピクチャを追加し得る。他のインター予測参照ピクチャと同様に、ビデオコーダは、参照ピクチャリストの任意の位置にビュー間予測参照ピクチャを挿入し得る。
[0104]図3は、例示的なマルチビュー復号順序を示す概念図である。マルチビュー復号順序はビットストリーム順序であり得る。図3の例では、各正方形がビュー成分に対応する。正方形の列は、アクセスユニットに対応する。各アクセスユニットは、時間インスタンスのすべてのビューのコード化ピクチャを含むように定義され得る。正方形の行は、ビューに対応する。図3の例では、アクセスユニットがT0〜T8と標示され、ビューがS0〜S7と標示される。アクセスユニットの各ビュー成分は次のアクセスユニットのビュー成分の前に復号されるので、図3の復号順序はタイムファーストコーディングと呼ばれることがある。アクセスユニットの復号順序は、ビューの出力または表示順序と同一ではないこともある。
[0105]マルチビューコーディングはビュー間予測をサポートすることができる。ビュー間予測は、H.264/AVC、HEVC、または他のビデオコーディング規格において使用されるインター予測と同様であり、同じシンタックス要素を使用し得る。しかしながら、ビデオコーダが(マクロブロックまたはPUのような)現在ブロックに対してビュー間予測を実行するとき、ビデオコーダは、参照ピクチャとして、現在ブロックと同じアクセスユニットの中にあるが異なるビューの中にあるピクチャを使用することができる。本明細書で説明するビュー間予測と対照的に、従来のインター予測は、参照ピクチャとして異なるアクセスユニット中のピクチャのみを使用する。
[0106]図4は、マルチビューコーディングのための例示的な予測構造を示す概念図である。図4のマルチビュー予測構造は、時間的予測とビュー間予測とを含む。図4の例では、各正方形がビュー成分に対応する。図4の例では、アクセスユニットがT0〜T11と標示され、ビューがS0〜S7と標示される。「I」と標示される正方形は、イントラ予測されたビュー成分である。「P」と標示される正方形は、単方向インター予測されたビュー成分である。「B」および「b」と標示される正方形は、双方向インター予測されたビュー成分である。「b」と標示される正方形は、「B」と標示される正方形を参照ピクチャとして使用し得る。第1の正方形から第2の正方形を指す矢印は、第1の正方形が、インター予測において、第2の正方形のための参照ピクチャとして利用可能であることを示す。図4の垂直の矢印で示すように、同じアクセスユニットの異なるビュー内のビュー成分は、参照ピクチャとして利用可能であり得る。このように、図4は、マルチビュービデオコーディング用の典型的なMVC予測(各ビュー内のインターピクチャ予測とインタービュー予測の両方を含む)構造を示し、予測参照のために矢印の始点のオブジェクトを使用して矢印の終点のオブジェクトへの矢印によって予測が示される。アクセスユニットの1つのビュー成分を同じアクセスユニットの別のビュー成分に対する参照ピクチャとして使用することは、ビュー間予測と呼ばれることがある。
[0107]H.264/AVCのMVC拡張では、ビュー間予測は視差動き補償によってサポートされ、視差動き補償は、H.264/AVC動き補償のシンタックスを使用するが、異なるビュー中のピクチャが参照ピクチャとして使用されることが可能になる。2つのビューのコーディングも、H.264/AVCのMVC拡張によってサポートされ得る。H.264/AVCのMVC拡張の利点の1つは、MVCエンコーダが3Dビデオ入力として3つ以上のビューを取り込むことができ、かつMVCデコーダがそのようなマルチビュー表現を復号することができることである。したがって、MVCデコーダをもつ任意のレンダラは、3つ以上のビューをもつ3Dビデオコンテンツを予想し得る。
[0108]マルチビューコーディングにおいて、ビュー間予測は、ビューの間の相関を取り除くために、(すなわち、同じ時間インスタンスを有する)同じアクセスユニットの異なるビュー中のピクチャの間で実行され得る。非ベースビューの1つの中のピクチャをコーディングするとき、ピクチャが異なるビュー中にあるが、同じ時間インスタンスを有する場合、ピクチャは参照ピクチャリストに追加され得る。ビュー間予測参照ピクチャは、任意のインター予測参照ピクチャと同様に、参照ピクチャリストの任意の位置に置かれ得る。
[0109]マルチビュービデオコーディングのコンテキストでは、2種類の動きベクトルが存在する。動きベクトルの1つの種類は、時間参照ピクチャを指す通常動きベクトルである。通常時間的動きベクトルに対応するインター予測のタイプは、「動き補償予測」または「MCP」と呼ばれ得る。ビュー間予測参照ピクチャが動き補償のために使用されるとき、対応する動きベクトルは「視差動きベクトル」と呼ばれる。言い換えると、視差動きベクトルは、異なるビュー中のピクチャ(すなわち、ビュー間参照ピクチャ)を指す。視差動きベクトルに対応するインター予測のタイプは、「視差補償予測」または「DCP」と呼ばれ得る。
[0110]上述したように、HEVCの3DV拡張(すなわち、3D−HEVC)は開発中である。3D−HEVCは、ビュー間動き予測とビュー間残差予測とを使用して、コーディング効率を改善することができる。ビュー間動き予測では、ビデオコーダは、現在PUとは異なるビューの中のPUの動き情報に基づいて、現在PUの動き情報を決定する(すなわち、予測する)ことができる。ビュー間残差予測では、ビデオコーダが、現在CUとは異なるビュー中の残差データに基づいて、現在CUの残差ブロックを決定することができる。
[0111]ビュー間動き予測とビュー間残差予測とを可能にするために、ビデオコーダは、ブロック(たとえば、PU、CUなど)のための視差ベクトルを決定することができる。概して、視差ベクトルは、2つのビューの間の変位を推定するものとして使われる。ビデオコーダは、ビュー間動きまたは残差予測のために別のビュー中の参照ブロックを位置特定するのに、ブロックについての視差ベクトルを使ってもよく、ビデオコーダは、視差ベクトルを、ビュー間動き予測のために視差動きベクトルにコンバートしてもよい。たとえば、ブロックがビュー間動き予測でコーディングされるとき、視差ベクトルは異なるビュー中の対応するブロックを選択するために導出されることが必要であり得る。
[0112]さらに、ビデオコーダは、現在ブロックについての視差ベクトルを導出し得る。いくつかの例では、ビデオコーダは、現在ブロックについての視差ベクトルを導出するために、隣接ブロックベースの視差ベクトル(NBDV:Neighboring Blocks Based Disparity Vector)の方法を使用することができる。すなわち、現在ブロックについての視差ベクトルを導出するために、NBDVと呼ばれるプロセスが、3D−HEVCに関するテストモデル(すなわち、3D−HTM)において使用され得る。3D−HEVCは、Zhangらによって提案されたNBDVプロセス、「3D−CE5.h:Disparity vector generation results」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発に関する共同研究部会、第1回会合、ストックホルム、スウェーデン、2012年7月16〜20日、文書JCT3V−A0097を最初に採用した。
[0113]NBDVプロセスは、現在ブロックについての視差ベクトルを導出するのに、空間的および時間的に隣接するブロックからの視差動きベクトルを使う。隣接ブロック(たとえば、現在ブロックに空間的または時間的に隣接するブロック)は、ビデオコーディングにおいて、ほぼ同じ動きと視差情報とを共有する見込みがあるので、現在ブロックは、隣接ブロック中の動きベクトル情報を、現在ブロックの視差ベクトルの予測子として使ってよい。したがって、NBDVプロセスは、異なるビュー中の視差ベクトルを推定するために隣接する視差情報を使用する。
[0114]ビデオコーダがNBDVプロセスを実行するとき、ビデオコーダは、固定されたチェック順序で、空間的隣接ブロックおよび時間的隣接ブロックの動きベクトルをチェックすることができる。すなわち、その各々が、次いで、現在ブロックと候補ブロック(すなわち、空間的または時間的隣接ブロック)との間の相関の優先度によって決定され得る、事前に定義された順序でチェックされ得るいくつかの空間的および時間的隣接ブロックが最初に定義される。したがって、隣接ブロックの2つのセットが利用される。一方のセットは空間的隣接ブロックからのものであり、他方のセットは時間的隣接ブロックからのものである。
[0115]ビデオコーダが空間的隣接ブロックまたは時間的隣接ブロックの動きベクトルをチェックするとき、ビデオコーダは、動きベクトルが視差動きベクトルかどうかを決定することができる。ピクチャのPUの視差動きベクトルは、ピクチャのビュー間参照ピクチャ中のロケーションを指す動きベクトルである。ピクチャのビュー間参照ピクチャは、ピクチャと同じアクセスユニット中にあるが、異なるビュー中にあるピクチャであり得る。視差動きベクトル(すなわち、動きベクトルはビュー間参照ピクチャを指す)が候補内に発見されると、ビデオコーダはその視差動きベクトルを視差ベクトルに変換することができる。たとえば、ビデオコーダは、視差動きベクトルの水平成分に等しく現在ブロックの視差ベクトルの水平成分を設定することができ、視差ベクトルの垂直成分を0に設定することができる。
[0116]3D−HEVCのいくつかの設計(たとえば、3D−HTM6.0)では、ビデオコーダがNBDVプロセスを実行するとき、ビデオコーダは時間的隣接ブロック中の視差動きベクトル、空間的隣接ブロック中の視差動きベクトル、次いで、暗黙視差ベクトル(IDV)の順にチェックする。IDVは、ビュー間予測を使用してコーディングされた空間的または時間的隣接PUの視差ベクトルであり得る。IDVは、導出された視差ベクトルと呼ばれることもある。IDVは、PUがビュー間動きベクトル予測を採用するとき、すなわち、AMVPまたはマージモードのための候補が視差ベクトルの助けにより他のビュー中の参照ブロックから導出されるときに生成され得る。そのような視差ベクトルが、IDVと呼ばれる。IDVは、視差ベクトル導出の目的で、PUに記憶され得る。たとえば、ブロックが動き予測でコーディングされるとしても、そのブロックについて導出された視差ベクトルは続くブロックをコーディングする目的で廃棄されない。したがって、ビデオコーダが視差動きベクトルまたはIDVを特定するとき、ビデオコーダは、特定された視差動きベクトルまたはIDVを返すことができる。IDVはSung他のNBDVの簡素化バージョン「3D−CE5.h:Simplification of disparity vector derivation for HEVC−based 3D video coding、文書JCTV3−A0126」とともに含まれた。NBDVプロセスにおけるIDVの使用は、復号ピクチャバッファ中に記憶されたIDV、およびランダムアクセスポイント(RAP)ピクチャ選択に伴う改善されたコーディング利得を除去することによって、Kang他の「3D−CE5.h関連:improvements for disparity vector derivation」、文書JCT3V−B0047においてさらに簡素化された。ビデオコーダは、返された視差動きベクトルまたはIDVを視差ベクトルに変換することができ、ビュー間動き予測およびビュー間残差予測のために視差ベクトルを使用することができる。ランダムアクセスは、ビットストリーム中の第1のコード化ピクチャでないコード化ピクチャから始まるビットストリームの復号を指す。一定の間隔でのビットストリーム中へのランダムアクセスピクチャまたはランダムアクセスポイントの挿入はランダムアクセスを有効にし得る。ランダムアクセスピクチャの例示的なタイプは、瞬時復号リフレッシュ(IDR:Instantaneous Decoder Refresh)ピクチャ、クリーンランダムアクセス(CRA:Clean Random Access)ピクチャ、および切断リンクアクセス(BLA:Broken Link Access)ピクチャを含む。したがって、IDRピクチャ、CRAピクチャ、およびBLAピクチャは、RAPピクチャと総称される。いくつかの例では、RAPピクチャは、NALユニットタイプを有し得、BLA_W_LP、BLA_W_RADL、BLA_N_LP、IDR_W_RADL、IDR_N_LP、RSV_IRAP_VCL22、RSV_IRAP_VCL23、またはCRA_NUTに等しい。
[0117]ビデオコーダが視差動きベクトルまたはIDVを識別するとき、ビデオコーダはチェックプロセスを終了することができる。したがって、ビデオコーダが現在ブロックについての視差ベクトルを発見するとき、ビデオコーダはNBDVプロセスを終了することができる。ビデオコーダがNBDVプロセスを実行することによって現在ブロックのための視差ベクトルを決定することが不可能であるとき(すなわち、視差動きベクトルがない、またはNBDVプロセスの間に発見されるIDVがないとき)、NBDVは利用不可能であると標識される。言い換えると、NBDVプロセスが利用不可能な視差ベクトルを返すことが考えられ得る。
[0118]ビデオコーダがNBDVプロセスを実行することによって現在ブロックのための視差ベクトルを導出することが不可能である場合(すなわち、視差ベクトルが発見されない場合)、ビデオコーダは、現在PUのための視差ベクトルとして0視差ベクトルを使用することができる。0視差ベクトルは、0に等しい水平成分と垂直成分の両方を有する視差ベクトルである。したがって、NBDVプロセスが利用不可能な結果を返すときであっても、視差ベクトルを必要とするビデオコーダの他のコーディングプロセスは、現在ブロックのために0視差ベクトルを使用することができる。いくつかの例では、ビデオコーダがNBDVプロセスを実行することによって現在ブロックのための視差ベクトルを導出することが不可能である場合、ビデオコーダは、現在ブロックに対するビュー間残差予測を無効にすることができる。しかしながら、ビデオコーダがNBDVプロセスを実行することによって現在ブロックのための視差ベクトルを導出することが可能かどうかに関係なく、ビデオコーダは、現在ブロックに対してビュー間動き予測を使用することができる。すなわち、すべての事前に定義された隣接ブロックをチェックした後で視差ベクトルが発見されない場合、ビュー間動き予測のために0視差ベクトルが使用され得るが、ビュー間残差予測は対応するCUに対して無効にされ得る。
[0119]上述したように、ビデオコーダは、現在PUについての視差ベクトルを決定するプロセスの一環として空間的隣接PUをチェックすることができる。いくつかの例では、ビデオコーダは以下の空間的隣接ブロック、すなわち、左下の空間的隣接ブロックと、左の空間的隣接ブロックと、右上の空間的隣接ブロックと、上の空間的隣接ブロックと、左上の空間的隣接ブロックとをチェックする。たとえば、NBDVプロセスのいくつかのバージョンでは、視差ベクトル導出のために5個の空間的隣接ブロックが使用される。5個の空間的隣接ブロックは、図2に示すように、位置A0、A1、B0、B1、およびB2をそれぞれカバーし得る。ビデオコーダは、5個の空間的隣接ブロックをA1、B1、B0、A0、およびB2の順にチェックし得る。HEVC用のマージモードで同じ5個の空間的隣接ブロックが使用され得る。したがって、いくつかの例では、何の追加のメモリアクセスも必要とされない。空間的隣接ブロックの1つが視差動きベクトルを有する場合、ビデオコーダは確認処理を終了することができ、現在ブロックについての最終的な視差ベクトルとして視差動きベクトルを使用することができる。
[0120]さらに、上述したように、ビデオコーダは、現在ブロックについての視差ベクトルを決定するプロセスの一環として時間的隣接PUをチェックすることができる。時間的隣接ブロック(たとえば、PU)をチェックする場合、候補ピクチャリストの構築プロセスが最初に実行され得る。いくつかの例では、ビデオコーダは、視差動きベクトルについての現在ビューから最大で2つの参照ピクチャをチェックすることができる。第1の参照ピクチャはコロケートピクチャであり得る。したがって、コロケートピクチャ(すなわち、コロケート参照ピクチャ)は、最初に候補ピクチャリスト中に、次いで、他の候補ピクチャ中に、参照インデックスの昇順で挿入され得る。両方の参照ピクチャリスト中の同じ参照インデックスを有する参照ピクチャが利用可能であるとき、候補リスト内で、コロケートピクチャと同じ参照ピクチャリストの参照ピクチャがコロケートピクチャと同じ参照ピクチャリスト中にない参照ピクチャに先行する。
[0121]候補ピクチャリスト中の各候補ピクチャ(すなわち、ランダムアクセスピクチャおよびコロケートピクチャ)について、ビデオコーダは3つの候補領域をチェックすることができる。3つの候補領域は、次のように定義され得る。
CPU:現在PUまたは現在CUのコロケート領域。
CLCU:現在ブロックのコロケート領域をカバーする最大コーディングユニット(LCU)。
BR:CPUの右下の4×4のブロック。
候補領域を包含するPUが視差動きベクトルを規定する場合、ビデオコーダは、PUの視差動きベクトルに基づいて、現在のビデオユニットの視差ベクトルを決定することができる。
[0122]ビデオコーダが隣接PU(たとえば、空間的隣接PUまたは時間的隣接PU)を確認するとき、ビデオコーダはまず、隣接ブロックが視差動きベクトルを有するかどうかを確認することができる。隣接PUのいずれもが視差動きベクトルを有しない場合、ビデオコーダは、空間的隣接PUのいずれかがIDVを有するかどうかを決定することができる。ビデオコーダは、A0、A1、B0、B1、およびB2の順序で、空間的隣接PUをチェックすることができる。空間的隣接PUの1つがIDVを有し、IDVがマージ/スキップモードとしてコーディングされる場合、ビデオコーダはチェック処理を終了することができ、現在PUのための最終視差ベクトルとしてIDVを使用することができる。
[0123]上記のように、ビデオコーダは、現在ブロック(たとえば、CU、PUなど)についての視差ベクトルを導出するために、NBDVプロセスを適用し得る。現在ブロックについての視差ベクトルは、参照ビュー中の参照ピクチャ(すなわち、参照成分)中のロケーションを示し得る。いくつかの3D−HEVC設計では、ビデオコーダは参照ビューについての深度情報にアクセスすることが許容される。いくつかのそのような3D−HEVC設計では、ビデオコーダが現在ブロックについての視差ベクトルを導出するためにNBDVプロセスを使用するとき、ビデオコーダは、現在ブロックについての視差ベクトルをさらにリファインメントするためにリファインメントプロセスを適用し得る。ビデオコーダは、参照ピクチャの深度マップに基づいて、現在ブロックについての視差ベクトルをリファインメントすることができる。ビデオコーダは、後方ビュー合成予測用に視差動きベクトルをリファインメントするために類似のリファインメントプロセスを使用し得る。このようにして、後方ビュー合成予測用に使用されるべき視差ベクトルまたは視差動きベクトルをリファインメントするために深度が使用され得る。このリファインメントプロセスは、本明細書において、NBDVリファインメント(「NBDV−R」)、NBDVリファインメントプロセス、または深度指向NBDV(Do−NBDV)と呼ばれることがある。
[0124]NBDVプロセスが利用可能な視差ベクトルを返すとき(たとえば、NBDVプロセスが、そのNBDVプロセスが視差動きベクトルまたは隣接ブロックのIDVに基づいて、現在ブロックについての視差ベクトルを導出することが可能であったことを示す変数を返すとき)、ビデオコーダは、参照ビューの深度マップから深度データを取り出すことによって、視差ベクトルをさらにリファインメントすることができる。いくつかの例では、リファインメントプロセスは以下の2つのステップを含む。
1.参照ビューの深度マップ中のブロックの位置を特定するために、現在ブロックの視差ベクトルを使用する。言い換えると、ベースビューなど、以前にコーディングされた参照深度ビュー中の導出された視差ベクトルによって対応する視差ブロックの位置を特定する。この例では、深度中の対応するブロックのサイズは現在ブロックのサイズと同じであり得る。
2.対応する深度ブロックの4つのコーナーピクセル中から1つの深度値を選択し、その深度値をリファインメントされた視差ベクトルの水平成分に変換する。この例では、ビデオコーダは、視差ベクトルの垂直成分を変更しない。
[0125]NBDVプロセスが利用可能な視差ベクトルを返さないとき(たとえば、NBDVプロセスが、そのNBDVプロセスが視差動きベクトルまたは隣接ブロックのIDVに基づいて、現在ブロックについての視差ベクトルを導出することが不可能であったことを示す変数を返すとき)、ビデオコーダは、NBDVリファインメントプロセスを実行せず、ビデオコーダは、現在ブロックについての視差ベクトルとして、ゼロ視差ベクトルを使用する。言い換えると、NBDVプロセスが利用可能な視差ベクトルを提供しないとき、したがって、NBDVの結果が利用不可能であるとき、上記のNBDV−Rプロセスはスキップされ、ゼロ視差ベクトルが直接返される。
[0126]いくつかの3D−HEVC設計では、ビデオコーダは、ビュー間動き予測用に現在のブロックについてのリファインメントされた視差ベクトルを使用するが、ビデオコーダは、ビュー間残差予測用に現在ブロックについてのリファインメントされていない視差ベクトルを使用する。たとえば、ビデオコーダは、現在ブロックについてのリファインメントされていない視差ベクトルを導出するためのNBDVプロセスを使用し得る。ビデオコーダは、次いで、現在ブロックについてのリファインメントされた視差ベクトルを導出するためのNBDVリファインメントプロセスを適用し得る。ビデオコーダは、現在ブロックの動き情報を決定する目的で、現在ブロックについてのリファインメントされた視差ベクトルを使用し得る。さらに、ビデオコーダは、現在ブロックの残差ブロックを決定する目的で、現在ブロックについてのリファインメントされていない視差ベクトルを使用し得る。いくつかの例では、あるPUがBVSPモードでコーディングされる場合、ビデオコーダはそのPUの動きベクトルとして、リファインメントされた視差ベクトルを記憶し得る。
[0127]後方ビュー合成予測(BVSP)手法は、Tian他の「CE1.h:Backward View Synthesis Prediction Using Neighboring Blocks」、文書JCT3V−C0152(以下、「JCT3V−C0152」)において提案され、第3回JCT−3V会合で採用された。ビデオコーダは、ビュー成分を合成するためにBVSPを実行し得る。ビュー成分は合成され得るため、ビットストリームがビュー成分のコード化表現を含むことは不要であり得る。少なくともこの理由で、BVSPの使用はビットストリームのサイズを削減し得る。
[0128]BVSPは、3D−AVC中のブロックベースのVSPに概念的に類似する。言い換えると、後方ワーピングVSPの基本的な考えは、3D−AVC中のブロックベースのVSPと同じである。3D−AVC中のBVSPおよびブロックベースのVSPは両方とも、動きベクトル差分を送信することを回避して、より正確な動きベクトルを使用するために、後方ワーピングおよびブロックベースのVSPを使用する。しかしながら、異なるプラットフォームにより、実装形態詳細は異なる。
[0129]一般に、ビデオコーダが参照テクスチャピクチャを合成するためにBVSPを実行するとき、ビデオコーダは従属テクスチャピクチャ中のブロック(たとえば、ビデオユニット)を処理する。従属テクスチャピクチャおよび合成テクスチャピクチャは、同じアクセスユニット中にあるが、異なるビュー中にある。ビデオコーダが従属テクスチャピクチャのブロック(すなわち、現在ブロック)を処理するとき、ビデオコーダは、現在ブロックの視差ベクトルを識別するためにNBDVプロセスを実行し得る。すなわち、ブロックについての深度情報を推定するために、ビデオコーダは隣接ブロックから視差ベクトルを最初に導出することができる。
[0130]さらに、ビデオコーダが参照テクスチャピクチャを合成するためにBVSPを実行するとき、ビデオコーダは、参照深度ピクチャ中の参照ブロックを識別するために、現在ブロックの視差ベクトルを使用することができる。言い換えると、ビデオコーダは、次いで、参照ビューから深度ブロックを取得するために、その導出された視差ベクトルを使用することができる。たとえば、NBDVプロセスによって識別された視差ベクトルは(dvx,dvy)として示され得、現在ブロック位置は(blockx,blocky)として示され得る。さらに、この例では、ビデオコーダは、参照ビューの深度画像中で(blockx+dvx,blocky+dVy)において深度ブロックをフェッチし得る。この例では、フェッチされた深度ブロックは現在PUの同じサイズを有する。従属テクスチャピクチャおよび参照深度ピクチャは、同じアクセスユニット中にあるが、異なるビュー中にある。ビデオコーダは、次いで、現在ブロックのサンプル値と、参照ピクチャの識別された参照ブロックのサンプル値とに基づいて、合成されたピクチャのサンプル値を決定するために、後方ワーピングプロセスを実行し得る。言い換えると、ビデオコーダは、この例では、現在PUについて後方ワーピングを実行するために、フェッチされた深度ブロックを使用することができる。
[0131]上記のように、ビデオコーダがBVSPを実行するとき、ビデオコーダは、現在ブロックについての視差ベクトルを識別するために、NBDVを実行し得る。さらに、ビデオコーダがBVSPを実行するとき、ビデオコーダは、NBDVプロセスを使用して導出された視差動きベクトルをリファインメントするために、本開示の他の箇所で説明するリファインメントプロセスに類似したリファインメントプロセスを使用することができる。ビデオコーダが視差ベクトルリファインメントプロセスを実行するとき、ビデオコーダは、参照ビュー中の深度マップ中の深度値に基づいて視差ベクトルをリファインメントすることができる。言い換えると、BVSP用に使用されるべき視差ベクトルまたは視差動きベクトルをリファインメントするために深度が使用され得る。リファインメントされた視差ベクトルがBVSPモードでコーディングされる場合、リファインメントされた視差ベクトルは、1つのPUの動きベクトルとして記憶され得る。
[0132]3D−HEVCのいくつかのバージョンでは、テクスチャファーストコーディングが適用され得る。テクスチャファーストコーディングでは、ビデオコーダは、対応する深度ビューコンポーネント(すなわち、テクスチャビューコンポーネントと同じPOC値およびビュー識別子を有する深度ビューコンポーネント)をコーディングするのに先立って、テクスチャビューコンポーネントをコーディング(たとえば、符号化または復号)する。したがって、対応する非ベースビューテクスチャビューコンポーネントのコーディングに使用するために非ベースビュー深度ビューコンポーネントは利用不可能である。言い換えると、ビデオコーダが非ベーステクスチャビューコンポーネントをコーディングするとき、対応する非ベース深度ビューコンポーネントは利用不可能である。したがって、BVSPを実行するために、深度情報が推定および使用され得る。
[0133]図5は、BVSP予測を実行するための参照ビューからの深度ブロック導出を示す概念図である。図5の例では、ビデオコーダは現在テクスチャピクチャ60をコーディング中である。現在テクスチャピクチャ60は合成された参照テクスチャピクチャ62に依存するため、現在テクスチャピクチャ60は「従属テクスチャピクチャ」とラベル付けされる。言い換えると、ビデオコーダは、現在テクスチャピクチャ60を復号するために、参照テクスチャピクチャ62を合成する必要があり得る。参照テクスチャピクチャ62および現在テクスチャピクチャ60は、同じアクセスユニット中にあるが、異なるビュー中にある。
[0134]参照テクスチャピクチャ62を合成するために、ビデオコーダは、現在テクスチャピクチャ60のブロック(すなわち、ビデオユニット)を処理し得る。図5の例では、ビデオコーダは現在ブロック64を処理中である。ビデオコーダが現在ブロック64を処理するとき、ビデオコーダは、現在ブロック64についての視差ベクトルを導出するために、NBDVプロセスを実行し得る。たとえば、図5の例では、ビデオコーダは、現在ブロック64に隣接するブロック68の視差ベクトル66を識別する。視差ベクトル66の識別は、図5のステップ1に示される。さらに、図5の例では、ビデオコーダは、視差ベクトル66に基づいて現在ブロック64の視差ベクトル68を決定する。たとえば、視差ベクトル68は視差ベクトル66の複写であり得る。視差ベクトル66の複写は、図5のステップ2に示される。
[0135]ビデオコーダは、現在ブロック64の視差ベクトル68に基づいて参照深度ピクチャ72中の参照ブロック70を識別することができる。参照深度ピクチャ72、現在テクスチャピクチャ60、および参照テクスチャピクチャ62は、各々、同じアクセスポイント中にあり得る。参照深度ピクチャ72および参照テクスチャピクチャ62は、同じビュー中にあり得る。ビデオコーダは、現在ブロック64のテクスチャサンプル値と参照ブロック70の深度サンプル値とに基づいて参照テクスチャピクチャ62のテクスチャサンプル値を決定することができる。テクスチャサンプル値を決定するプロセスは、後方ワーピングと呼ばれることがある。3D−HEVC Test Model 3の第H8.5.2.2.7項は、後方ワーピングのプロセスを記述する。後方ワーピングは図5のステップ3に示される。このようにして、図5は、参照ビューからの深度ブロックの位置がどのように特定され、次いで、BVSP予測用に使用されるかの3つのステップを示す。
[0136]いくつかの例では、BVSPは一部のCVSについて有効にされるが、他のCVSについては有効にされない。BVSPが有効にされるCVSでは、ビデオコーダは、ビュー間動き予測用のNBDVプロセスとは異なるNBDVプロセスを実行することができる。すなわち、BVSPがCVS中で有効にされる場合、ビュー間動き予測用のNBDVプロセスは変更され得る。ビデオコーダが、BVSPが有効にされるCVS中の現在ブロックに関してNBDVプロセスを実行するとき、ビデオコーダは、時間的隣接ブロックが視差動きベクトルを有するかどうかを決定し得る。時間的隣接ブロックが視差動きベクトルを有する場合、ビデオコーダは、時間的隣接ブロックの視差動きベクトルに基づいて、現在ブロックの視差ベクトルを決定することができる。ビデオコーダは、次いで、視差ベクトルをリファインメントし得る。言い換えると、時間的隣接ブロックの各々について、視差動きベクトルを使用する場合、視差動きベクトルは視差ベクトルとして返されて、本開示の他の箇所で説明する方法を用いてさらにリファインメントされる。
[0137]さらに、ビデオコーダが現在ブロックに関してNBDVプロセスを実行するとき、ビデオコーダは空間的隣接ブロックを評価し得る。空間的隣接ブロックの各々について、次のことが当てはまる。RefPicList0およびRefPicList1順序の場合、空間的隣接ブロックが視差動きベクトルを使用する場合、ビデオコーダは、現在ブロックの視差ベクトルとして視差動きベクトルを返し、ビデオコーダは、本開示の他の箇所で説明するように視差ベクトルをさらにリファインメントすることができる。さもなければ、空間的隣接ブロックがBVSPモードを使用する場合、ビデオコーダは、現在ブロックの視差ベクトルとして関連する動きベクトルを返し、本開示の他の箇所で説明される方法に類似した方式で視差ベクトルをリファインメントすることができる。しかしながら、空間的隣接ブロックがBVSPモードを使用する場合、ビデオコーダは、4つのコーナーピクセルではなく、対応する深度ブロックのすべてのピクセルから最大深度値を選択することができ、ビデオコーダは、リファインメントされた視差ベクトルの垂直成分を0に設定することができる。空間的隣接ブロックがIDVを使用する場合、ビデオコーダは、視差ベクトルとしてそのIDVを返すことができ、ビデオコーダは、本開示の他の箇所で説明する方法を用いてその視差ベクトルをさらにリファインメントすることができる。視差動きベクトルが利用不可能である場合、ビデオデコーダは、リファインメントプロセスを適用せず、ビデオコーダは、ゼロベクトルであるとして視差ベクトルを導出し得る。
[0138]ビデオコーダが現在ブロックについての視差ベクトルを決定して、現在ブロックについての視差ベクトルをリファインメントした後、ビデオコーダは、現在ブロックについての視差動きベクトルを導出し得る。現在ブロック(すなわち、BVSPモードでコーディングされた1つのPU)中の各下位領域(4×4ブロック)に関して、ビデオコーダは、リファインメントされた視差ベクトルに基づいて参照深度ビュー中の対応する4×4深度ブロックの位置を特定することができる。第2に、ビデオコーダは、対応する深度ブロック中の16個の深度ピクセルの最大値を選択することができる。第3に、ビデオコーダは、その最大値を視差動きベクトルの水平成分に変換することができる。ビデオコーダは、視差動きベクトルの垂直成分を0に設定することができる。
[0139]ビデオコーダがあるタイプのブロック(たとえば、PU、CUなど)用のNBDVを使用して視差ベクトルを導出することができる可能性は低い。たとえば、利用不可能な視差ベクトルは、スライス、タイル、またはピクチャ境界に沿ったブロック用のNBDVから生じる可能性が高い。別の例では、利用不可能な視差ベクトルは、隣接ブロックがすべてイントラ予測でコーディングされる場合、NBDVから生じる可能性が高い。
[0140]一般に、タイルは、タイルのコーディングツリーブロックラスタ走査順序で連続的に順序付けられた、1つの列および1つの行の中で同時に生じる整数個のコーディングツリーブロックである。行は整数個のコーディングツリーブロックであり得る。列は、ピクチャの上部境界から下部境界に延びる垂直境界によって互いから画成され、ピクチャ中で左から右に連続的に順序付けられる。列は、ピクチャの左境界から右境界に延びる水平境界によって互いから画成され、ピクチャ中で上から下に連続的に順序付けられる。列は整数個のコーディングツリーブロックであり得る。
[0141]3D−HEVCの現在視差ベクトル導出方法にはいくつかの問題がある。たとえば、NBDVプロセスが利用不可能な視差ベクトルを提供するとき、ビデオコーダは、その視差ベクトルをリファインメントするために、NBDV−Rプロセスをスキップし得る。これはコーディング性能の低下をもたらし得る。
[0142]本開示の技法は、以前のビデオコーディング技法に優る利点を有し得る。たとえば、本開示の技法は、視差ベクトル導出方法(たとえば、3D−HEVCのNBDV)が利用可能な視差ベクトルを生成しないとき、参照ビューの深度ビューコンポーネントにアクセスすることによって、より良好にリファインメントされた視差ベクトルを提供し得る。
[0143]いくつかの例では、ビデオコーダはマルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行し得る。ビデオコーダが視差ベクトル導出プロセスを実行するとき、ビデオコーダは、現在ブロックについての視差ベクトルを成功裏に導出することが可能なことがあり、または可能でないこともある。たとえば、近隣ブロックのうちのいずれも視差動きベクトルまたはIDVを有さないとき、ビデオコーダは視差ベクトル導出プロセスを実行することによって、現在ブロックについての視差ベクトルを成功裏に導出することが可能でないことがある。したがって、ビデオコーダが視差ベクトル導出プロセスを実行するとき、ビデオコーダは、現在ブロックについての視差ベクトルおよび可用性値(たとえば、availableDV)を生成し得る。可用性値は、ビデオコーダが、視差ベクトル導出プロセスを実行することによって、現在ブロックについての視差ベクトルを導出することが可能であったかどうかを示す。
[0144]本開示では、可用性値が、ビデオコーダが、視差ベクトル導出プロセスを実行することによって、現在ブロックについての視差ベクトルを導出することが可能であったことを示す場合、現在ブロックについての視差ベクトルは「利用可能」である。同様に、可用性値が、ビデオコーダが、視差ベクトル導出プロセスを実行することによって、現在ブロックについての視差ベクトルを導出することが不可能であったことを示す場合、現在ブロックについての視差ベクトルは「利用不可能」である。したがって、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出することが不可能であるとき、可用性値は現在ブロックについての視差ベクトルが利用不可能であることを示す。さらに、本開示では、視差ベクトル導出プロセスは、ビデオコーダが、視差ベクトル導出プロセスを実行することによって、現在ブロックについての視差ベクトルを導出することが可能であるかどうかに応じて、利用可能または利用不可能な視差ベクトルを戻したと言うことができる。
[0145]本開示の1つまたは複数の技法によれば、可用性値が、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出しなかったことを示すとき、ビデオコーダは、それでも、現在ブロックについてのリファインメントされた視差ベクトルを生成するために、視差ベクトルリファインメントプロセスを依然として実行することが可能である。したがって、視差ベクトルリファインメントプロセスは、視差ベクトル導出プロセスが利用可能な視差ベクトルを生成する事例に限定されない。したがって、視差ベクトル導出プロセスが利用可能な視差ベクトルを生成しない場合ですら、本開示の技法は、(ゼロに等しい水平および垂直成分を有するデフォルト視差ベクトルなど)デフォルト視差ベクトルについての視差ベクトルリファインメントを可能にする。
[0146]たとえば、ビデオコーダ30はマルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセス(たとえば、NBDVプロセス)を実行し得る。現在ブロックは現在ビュー中にあり得る。さらに、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出することが不可能であるとき、可用性値は現在ブロックについての視差ベクトルが利用不可能であることを示し得る。この例では、可用性値が、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出しなかったことを示すとき、ビデオデコーダ30は、参照ビューの深度ビューコンポーネントにアクセスする視差ベクトルリファインメントプロセス(たとえば、NBDV−Rプロセス)を実行することによって、現在ブロックについてのリファインメントされた視差ベクトルを生成することができる。ビデオデコーダ30は、現在ブロックについてのリファインメントされた視差ベクトルに基づいて、現在ブロックを復号することができる。たとえば、ビデオデコーダ30は、現在ブロックについてのビュー間予測、ビュー間残差予測、および/または後方ワーピングビュー合成予測を実行するためにリファインメントされた視差ベクトルを使用することができる。
[0147]同様に、ビデオエンコーダ20はマルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセス(たとえば、NBDVプロセス)を実行し得る。現在ブロックは現在ビュー中にあり得る。さらに、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出することが不可能であるとき、可用性値は現在ブロックについての視差ベクトルが利用不可能であることを示し得る。この例では、可用性値が、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出しなかったことを示すとき、ビデオエンコーダ20は、参照ビューの深度ビューコンポーネントにアクセスする視差ベクトルリファインメントプロセス(たとえば、NBDV−Rプロセス)を実行することによって、現在ブロックについてのリファインメントされた視差ベクトルを生成することができる。ビデオエンコーダ20は、現在ブロックについてのリファインメントされた視差ベクトルに基づいて、現在ブロックを符号化することができる。たとえば、ビデオエンコーダ20は、現在ブロックについてのビュー間予測、ビュー間残差予測、および/または後方ワーピングビュー合成予測を実行するために、リファインメントされた視差ベクトルを使用することができる。
[0148]いくつかの例では、NBDVプロセスが、隣接ブロック中の視差動きベクトルおよびIDVをチェックした後に利用不可能な結果を返すとき(すなわち、可用性値が現在ブロックについての視差ベクトルが利用不可能であることを示すとき)、ゼロ視差ベクトルを直接使用して、NBDV−R中のリファインメントプロセスをスキップする代わりに、ビデオコーダは、NBDV−Rプロセスにおいてゼロ視差動きベクトルを使用することができる。したがって、NBDV−R中のリファインメントプロセスは、深度ビューコンポーネントにアクセスすることによって、視差ベクトルをリファインメントするために使用され得る。
[0149]代替的に、いくつかの例では、NBDVプロセスが利用不可能な視差ベクトルを返すとき(すなわち、可用性値が、現在ブロックについての視差ベクトルが利用不可能であることを示すとき)、ビデオコーダは、現在ブロックの可用性を利用可能に設定することができ、現在ブロックの視差ベクトルをゼロに設定することができる。言い換えると、ビデオコーダは、現在ブロックについての視差ベクトルが利用可能であることを示すために、可用性値を修正することができる。ビデオコーダは、次いで、視差ベクトルリファインメントプロセスを現在ブロックについての視差ベクトルに適用することができる。
[0150]上記のように、NBDVプロセスは可用性値(たとえば、availableDV)を返すことができる。一例では、0に等しいavailableDVは、NBDVプロセスが利用不可能な視差ベクトルを返したことを示し得る。言い換えると、0に等しいavailableDVは、NBDVプロセスが現在ブロックについての視差ベクトルを導出することが不可能であったことを示し得る。1に等しいavailableDVは、NBDVプロセスが利用可能な視差ベクトルを返したことを示し得る。言い換えると、1に等しいavailableDVは、NBDVプロセスが現在ブロックについての視差ベクトルを導出することが可能であったことを示し得る。さらに、この例では、mvDispは、現在ブロックの視差ベクトルを示し、mvDisp[0]は、現在ブロックの視差ベクトルの水平成分を示し、mvDisp[1]は、現在ブロックの視差ベクトルの垂直成分を示す。したがって、この例では、availableDVが0に等しいとき、ビデオコーダは、mvDisp[0]を0に設定し、mvDisp[1]を0に設定し、availableDVを1に設定することができる。ビデオコーダは、次いで、視差ベクトルリファインメントプロセスをmvDispに適用し得る。
[0151]このようにして、可用性値(たとえば、availableDV)は、視差ベクトル導出プロセス(たとえば、NBDVプロセス)が現在ブロックについての視差ベクトルを導出することが可能であったかどうかを示すことができる。この例では、可用性値が、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出することが不可能であったことを示すとき、ビデオコーダは、現在ブロックについての視差ベクトルが利用可能であることを示すように可用性値を設定することができ、現在ブロックについての視差ベクトルをゼロ視差ベクトルに設定することができる。
[0152]さらに、ビデオコーダが、現在ブロックの視差ベクトルが利用可能であることを示すように可用性値を設定し、NBDVプロセスが利用不可能な視差を返すとき、現在ブロックの視差ベクトルをゼロに設定するいくつかの例では、ビデオコーダは、NBDVプロセスが、当初、利用可能な視差ベクトルを返したか否かを識別するための変数(たとえば、availableDVRes)を維持することができる。ビデオコーダは、ある条件で他のコーディングツール用の変数を使用することができる。たとえば、0に等しいこの変数は、ビデオコーダが現在ブロックについてのビュー間残差予測を無効にすることをもたらし得る。したがって、この例では、ビデオコーダは、視差ベクトル導出プロセスが、現在ブロックについての視差ベクトルを当初導出したかどうかを示すために変数を維持することができる。ビデオコーダは、1つまたは複数のコーディングツールによって使用するための変数を提供し得る。さらに、ビデオコーダは、変数の値に基づいてコーディングツールのうちの1つまたは複数を有効にし得る。
[0153]ビデオコーダが、現在ブロックの視差ベクトルの可用性値を利用可能に設定し、NBDVプロセスが利用不可能な視差を返すとき、現在ブロックの視差ベクトルをゼロに設定するいくつかの例では、ビデオコーダは、オフセットを現在ブロックの視差ベクトル(すなわち、ゼロ視差ベクトル)に追加することができる。この例では、ビデオコーダは、視差ベクトルリファインメントプロセスを現在ブロックについての視差ベクトルに適用しない。言い換えると、この例では、深度情報を使用したリファインメントプロセスは存在しない。したがって、この例では、視差ベクトル導出プロセスが利用不可能な視差ベクトルを返すとき、ビデオコーダは、修正された視差ベクトルを生成するために、オフセットをゼロ視差ベクトルに追加することができる。
[0154]前の段落の例では、ビデオコーダは、様々な方法で、オフセットを設定することができる。たとえば、ビデオコーダは、オフセットを現在ブロックの視差ベクトルの水平成分のみに追加することができる。さらに、いくつかの例では、ビデオコーダ(または、別のデバイス)は、カメラパラメータおよびデフォルト深度ピクセル値(たとえば、128)でオフセットを計算することができる。したがって、この例では、ビデオコーダは、カメラパラメータおよびデフォルト深度ピクセル値のうちの1つまたは複数に基づいて、オフセットを決定することができる。いくつかの例では、ビデオエンコーダ20は、現在ブロックを含むスライスのスライスヘッダ中でオフセットをシグナリングする。したがって、そのような例では、ビデオコーダは、コード化ビデオビットストリーム中で受信された、シグナリングされた値に基づいてオフセットを決定することができる。そのような例では、値はスライスヘッダ中でシグナリングされ得る。
[0155]本開示のいくつかの技法によれば、本開示で提供する例のうちの1つまたは複数は組み合わせることができる。
[0156]図6は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図6は、説明のために提供されるものであり、本開示で広く例示し説明する技法を限定するものと見なされるべきではない。説明の目的で、本開示は、HEVCコーディングのコンテキストにおいてビデオエンコーダ20を記載する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0157]図6の例において、ビデオエンコーダ20は、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構成ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120と、イントラ予測処理ユニット126とを含む。インター予測処理ユニット120は、動き推定ユニット122と、動き補償ユニット124とを含む。他の例では、ビデオエンコーダ20は、より多いか、より少ないか、または異なる機能構成要素を含み得る。
[0158]ビデオエンコーダ20はビデオデータを受信し得る。ビデオエンコーダ20はビデオデータのピクチャのスライス中の各CTUを符号化してもよい。CTUの各々は、等しいサイズのルーマコーディングツリーブロック(CTB:coding tree block)と、ピクチャの対応するCTBとに関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は4分木区分を実行して、CTUのCTBを徐々により小さいブロックに分割し得る。より小さいブロックはCUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、CTUに関連付けられたCTBを4つの等しいサイズのサブブロックに区分し、サブブロックのうちの1つまたは複数を、4つの等しいサイズのサブサブブロックに区分し得、以下同様である。
[0159]ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化表現(すなわち、コード化CU)を生成することができる。CUを符号化することの一部として、予測処理ユニット100は、CUの1つまたは複数のPUのうちのCUに関連付けられたコーディングブロックを区分することができる。したがって、各PUは、ルーマ予測ブロックと、対応するクロマ予測ブロックとに関連付けられ得る。ビデオエンコーダ20およびビデオデコーダ30は、様々なサイズを有するPUをサポートし得る。上記のように、CUのサイズはCUのルーマコーディングブロックのサイズを指すことがあり、PUのサイズはPUのルーマ予測ブロックのサイズを指すことがある。特定のCUのサイズを2N×2Nと仮定すると、ビデオエンコーダ20およびビデオデコーダ30は、イントラ予測の場合は2N×2NまたはN×NのPUサイズをサポートすることができ、インター予測の場合は2N×2N、2N×N、N×2N、N×N、または同様の対称のPUサイズをサポートすることができる。ビデオエンコーダ20およびビデオデコーダ30はまた、インター予測用の2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズ用の非対称区分化をサポートすることができる。
[0160]インター予測処理ユニット120は、CUの各PUに対してインター予測を実行することによってPUの予測データを生成し得る。PUの予測データは、PUの予測ブロックと、PUの動き情報とを含み得る。インター予測処理ユニット120は、PUがIスライス中にあるのか、Pスライス中にあるのか、Bスライス中にあるのかに応じて、CUのPUに対して異なる演算を実行し得る。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測処理ユニット120はPUに対してインター予測を実行しない。
[0161]PUがPスライス中にある場合、動き推定ユニット122は、PUの参照領域について参照ピクチャリスト(たとえば、「RefPicList0」)中の参照ピクチャを探索し得る。PUの参照領域は、PUの予測ブロックに最も近接して対応するサンプルを含んでいる参照ピクチャ内の領域であり得る。動き推定ユニット122は、PUの参照領域を含んでいる参照ピクチャのRefPicList0中の位置を示す参照インデックスを生成し得る。さらに、動き推定ユニット122は、PUの予測ブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示す動きベクトルを生成し得る。たとえば、動きベクトルは、現在ピクチャにおける座標から参照ピクチャにおける座標までのオフセットを与える2次元ベクトルであり得る。動き推定ユニット122は、PUの動き情報として、参照インデックスと動きベクトルとを出力し得る。動き補償ユニット124は、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、PUの予測ブロックを生成し得る。
[0162]PUがBスライス中にある場合、動き推定ユニット122は、PUについての単予測または双予測を実行し得る。PUについての単予測を実行するために、動き推定ユニット122は、PUの参照領域についてRefPicList0の参照ピクチャまたは第2の参照ピクチャリスト(「RefPicList1」)を探索し得る。動き推定ユニット122は、PUの動き情報として、参照領域を含んでいる参照ピクチャのRefPicList0またはRefPicList1中の位置を示す参照インデックスと、PUの予測ブロックと参照領域に関連する参照ロケーションとの間の空間変位を示す動きベクトルと、参照ピクチャがRefPicList0中にあるのかRefPicList1中にあるのかを示す1つまたは複数の予測方向インジケータとを出力し得る。動き補償ユニット124は、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成し得る。
[0163]PUについての双方向インター予測を実行するために、動き推定ユニット122は、PUの参照領域についてRefPicList0中の参照ピクチャを探索し得、またPUの別の参照領域についてRefPicList1中の参照ピクチャを探索し得る。動き推定ユニット122は、参照領域を含んでいる参照ピクチャのRefPicList0およびRefPicList1中の位置を示す参照インデックスを生成し得る。さらに、動き推定ユニット122は、参照領域に関連する参照ロケーションとPUの予測ブロックとの間の空間変位を示す動きベクトルを生成し得る。PUの動き情報は、PUの参照インデックスと動きベクトルとを含み得る。動き補償ユニット124は、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成し得る。
[0164]イントラ予測処理ユニット126は、PUに対してイントラ予測を実行することによって、PU用の予測データを生成することができる。PUの予測データは、PUの予測ブロックと、様々なシンタックス要素とを含み得る。イントラ予測処理ユニット126は、Iスライス内、Pスライス内、およびBスライス内のPUに対してイントラ予測を実行することができる。
[0165]PUに対してイントラ予測を実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUについて複数セットの予測データを生成し得る。特定のイントラ予測モードを使用してイントラ予測を実行するとき、イントラ予測処理ユニット126は、隣接ブロックからのサンプルの特定のセットを使用してPUの予測ブロックを生成し得る。隣接ブロックは、PU、CU、およびCTUについて左から右、上から下の符号化順序を仮定すると、PUの予測ブロックの上、右上、左上、または左にあり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば33個の方向のイントラ予測モードを使用することができる。いくつかの例では、イントラ予測モードの数はPUの予測ブロックのサイズに依存し得る。
[0166]いくつかの例では、インター予測処理ユニット120は、現在ブロック(たとえば、CU、PUなど)についての視差ベクトルを導出することができる。視差ベクトルは、ビュー間動き予測、ビュー間残差予測、後方ワーピングビュー合成予測などをサポートし得る。本開示の1つまたは複数の技法によれば、インター予測処理ユニット120は、マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行することができる。視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出することが不可能であるとき、可用性値は現在ブロックについての視差ベクトルが利用不可能であることを示す。可用性値が、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出しなかったことを示すとき、インター予測処理ユニット120は、参照ビューの深度ビューコンポーネントにアクセスする視差ベクトルリファインメントプロセスを実行することによって、現在ブロックについてのリファインメントされた視差ベクトルを生成することができる。
[0167]予測処理ユニット100は、PUについてインター予測処理ユニット120によって生成された予測データ、またはPUについてイントラ予測処理ユニット126によって生成された予測データの中から、CUのPUの予測データを選択することができる。いくつかの例では、予測処理ユニット100は、これらの組の予測データのレート/歪み測定基準に基づいて、CUのPUについての予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれることがある。
[0168]残差生成ユニット102は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック、ならびにCUのPUの選択された予測ルーマブロック、予測Cbブロック、および予測Crブロックに基づいて、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを生成し得る。たとえば、残差生成ユニット102は、残差ブロック中の各サンプルが、CUのコーディングブロック中のサンプルとCUのPUの対応する選択された予測ブロック中の対応するサンプルとの間の差分に等しい値を有するように、CUの残差ブロックを生成し得る。
[0169]変換処理ユニット104は、4分木区分を実行して、CUの残差ブロックをCUのTUに関連付けられた変換ブロックに区分し得る。したがって、TUは、ルーマ変換ブロックと、2つの対応するクロマ変換ブロックとに関連付けられ得る。CUのTUのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。
[0170]変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUのTUごとに変換係数ブロックを生成し得る。変換処理ユニット104は、TUに関連付けられた変換ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向性変換、または概念的に同様の変換を変換ブロックに適用し得る。いくつかの例において、変換処理ユニット104は変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われてもよい。
[0171]量子化ユニット106は、係数ブロック内の変換係数を量子化し得る。量子化プロセスは、変換係数の一部または全部に関連付けられたビット深度を低減し得る。たとえば、量子化中にnビット変換係数はmビット変換係数に切り捨てられ得、ただし、nはmよりも大きい。量子化ユニット106は、CUに関連付けられた量子化パラメータ(QP)値に基づいてCUのTUに関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ20は、CUに関連付けられたQPの値を調整することによって、CUに関連付けられた係数ブロックに適用される量子化の程度を調整することができる。量子化は情報の損失をもたらす恐れがあり、したがって、量子化変換係数は、元の係数よりも低い精度を有することがある。
[0172]逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、係数ブロックに逆量子化および逆変換を適用して、係数ブロックから残差ブロックを再構成し得る。再構成ユニット112は、再構成された残差ブロックを、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに加算して、TUに関連付けられた再構成された変換ブロックを生成し得る。再構成ユニット112は加算器と呼ばれることもある。ビデオエンコーダ20は、このようにCUの各TUのための変換ブロックを再構成することによってCUのコーディングブロックを再構成し得る。
[0173]フィルタユニット114は、1つまたは複数のデブロッキング演算を実行して、CUに関連付けられたコーディングブロック中のブロッキングアーティファクトを低減し得る。復号ピクチャバッファ116は、フィルタユニット114が、再構成されたコーディングブロックに対して1つまたは複数のデブロッキング演算を実行した後、再構成されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、再構成されたコーディングブロックを含んでいる参照ピクチャを使用して、他のピクチャのPUに対してインター予測を実行し得る。加えて、イントラ予測処理ユニット126は、復号ピクチャバッファ116内の再構成されたコーディングブロックを使用して、CUと同じピクチャ内の他のPUに対してイントラ予測を実行することができる。復号ピクチャバッファ116は参照ピクチャメモリと呼ばれることもある。したがって、復号ピクチャバッファ116は、マルチビュービデオデータなど、ビデオデータを記憶するメモリを備え得る。
[0174]エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能構成要素からデータを受信し得る。たとえば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロックを受信し得、予測処理ユニット100からシンタックス要素を受信し得る。エントロピー符号化ユニット118は、このデータに対して1つまたは複数のエントロピー符号化演算を実行して、エントロピー符号化データを生成することができる。たとえば、エントロピー符号化ユニット118は、コンテキスト適応型可変長コーディング(CAVLC)演算、CABAC演算、変数−変数(V2V:variable-to-variable)レングスコーディング演算、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)演算、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング演算、指数ゴロム符号化演算、または別のタイプのエントロピー符号化演算をデータに対して実行し得る。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。
[0175]図7は、本開示の技法を実装するように構成された例示的なビデオデコーダ30を示すブロック図である。図7は、説明のために提供されるものであり、本開示において広く例示し説明する技法を限定するものではない。説明の目的で、本開示は、HEVCコーディングのコンテキストにおいてビデオデコーダ30を記載する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0176]図7の例では、ビデオデコーダ30は、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構成ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164とイントラ予測処理ユニット166とを含む。他の例では、ビデオデコーダ30は、より多いか、より少ないか、または異なる機能構成要素を含み得る。
[0177]コード化ピクチャバッファ(CPB)151は、ビットストリームの符号化ビデオデータ(たとえば、NALユニット)を受信し、記憶し得る。エントロピー復号ユニット150は、CPB151からNALユニットを受信し、NALユニットをパースして、ビットストリームからシンタックス要素を取得し得る。エントロピー復号ユニット150は、NALユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて復号ビデオデータを生成することができる。
[0178]ビットストリームのNALユニットは、コード化スライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、コード化スライスNALユニットからシンタックス要素を抽出し、エントロピー復号し得る。コード化スライスの各々は、スライスヘッダと、スライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。
[0179]ビットストリームからシンタックス要素を得ることに加えて、ビデオデコーダ30は、CUに対して復号演算を実行し得る。CUに対して復号演算を実行することによって、ビデオデコーダ30はCUのコーディングブロックを再構成し得る。
[0180]CUに対して復号演算を実行することの一部として、逆量子化ユニット154は、CUのTUに関連付けられた係数ブロックを逆量子化(inverse quantize)、すなわち、量子化解除(de-quantize)し得る。逆量子化ユニット154は、TUのCUに関連付けられたQPの値を使用して、量子化の程度を決定することができ、同様に、逆量子化ユニット154が適用するための逆量子化の程度を決定することができる。つまり、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、採用されたエントロピーコーディングの方法に依存し得る。
[0181]逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、係数ブロックに1つまたは複数の逆変換を適用して、TUに関連付けられた残差ブロックを生成することができる。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向性変換、または別の逆変換を、係数ブロックに適用することができる。
[0182]イントラ予測を使用してPUが符号化される場合、イントラ予測処理ユニット166は、イントラ予測を実行して、PUについての予測ブロックを生成し得る。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に隣接するPUの予測ブロックに基づいてPUの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成してもよい。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数のシンタックス要素に基づいてPUのイントラ予測モードを決定し得る。
[0183]予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)および第2の参照ピクチャリスト(RefPicList1)を構成し得る。さらに、インター予測を使用してPUが符号化される場合、エントロピー復号ユニット150は、PUの動き情報を取得し得る。動き補償ユニット164は、PUの動き情報に基づいて、PUの1つまたは複数の参照領域を決定し得る。動き補償ユニット164は、PUのための1つまたは複数の参照ブロックにおけるサンプルに基づいて、PUの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
[0184]いくつかの例では、予測処理ユニット152は、現在ブロック(たとえば、CU、PUなど)についての視差ベクトルを導出することができる。視差ベクトルは、ビュー間動き予測、ビュー間残差予測、後方ワーピングビュー合成予測などをサポートし得る。本開示の1つまたは複数の技法によれば、予測処理ユニット152は、マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行することができる。視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出することが不可能であるとき、可用性値は現在ブロックについての視差ベクトルが利用不可能であることを示す。可用性値が、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出しなかったことを示すとき、予測処理ユニット152は、参照ビューの深度ビューコンポーネントにアクセスする視差ベクトルリファインメントプロセスを実行することによって、現在ブロックについてのリファインメントされた視差ベクトルを生成することができる。
[0185]再構成ユニット158は、CUのTUに関連付けられたルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックからの残差値、ならびにCUのPUの予測ルーマブロック、予測Cbブロック、および予測Crブロックが適用可能な場合にそれらを使用して、すなわち、イントラ予測データまたはインター予測データのいずれかを使用して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構成し得る。たとえば、再構成ユニット158は、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックのサンプルを予測ルーマブロック、予測Cbブロック、および予測Crブロックの対応するサンプルに加算して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構成し得る。再構成ユニット158は加算器と呼ばれることもある。
[0186]フィルタユニット160は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックに関連付けられたブロッキングアーティファクトを低減するためにデブロッキング演算を実行し得る。ビデオデコーダ30は、CUのルーマコーディングブロックと、Cbコーディングブロックと、Crコーディングブロックとを復号ピクチャバッファ162に記憶してもよい。復号ピクチャバッファ162は参照ピクチャメモリと呼ばれることもある。したがって、復号ピクチャバッファ162は、マルチビュービデオデータなど、ビデオデータを記憶するメモリを備え得る。復号ピクチャバッファ162は、後続の動き補償、イントラ予測、および図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために参照ピクチャを与え得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162中のルーマブロック、Cbブロック、およびCrブロックに基づいて、他のCUのPUに対してイントラ予測演算またはインター予測演算を実行し得る。このようにして、ビデオデコーダ30は、有意ルーマ係数ブロックの変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換係数レベルに変換を適用して変換ブロックを生成し、変換ブロックに少なくとも部分的に基づいてコーディングブロックを生成し、コーディングブロックを表示のために出力し得る。
[0187]上述のように、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、視差ベクトルを決定するためにNBDVプロセスを使用することができる。さらに、ビデオコーダは、視差ベクトルについてのリファインメントプロセスを実行することができる。本開示のいくつかの技法によれば、ビデオコーダは、NBDVプロセスが、視差ベクトルが利用不可能であると決定したとき、ゼロ視差ベクトルについてのリファインメントプロセスを実行することができる。ゼロ視差ベクトルの水平および垂直成分はゼロに等しい。そのような技法によれば、3D HEVC Test Model Description Draft 3の第H.8.5.4項は次のように修正され得る。次のテキストでは、追加された主題に下線が引かれる。
H.8.5.4 視差ベクトルについての導出プロセス
...
availableDVが1に等しく、deriveFromDepthFlagが1に等しいとき、以下の順序ステップが当てはまる。
1.第H.8.5.4.3項に指定される視差サンプルアレイについての導出プロセスは、入力として、ルーマロケーションxP、yP、視差ベクトルmvDisp、ビュー識別子refViewIdx、変数nPSW、nPSH、nPSWに等しい変数nSubBlkW、nPSHに等しい変数nSubBlkH、および1に等しいフラグrestMaxSearchFlagで呼び出され、出力はサイズのアレイdisparitySamples(nPSWD)×(nPSHD)である。
視差ベクトルmvDisp[0]の水平成分はdisparitySamples[0][0]に等しく設定される。
さもなければ、availableDVが0に等しく、deriveFromDepthFlagが1に等しいとき、以下の順序ステップが当てはまる。
1.第H.8.5.4.3項に指定される視差サンプルアレイについての導出プロセスは、入力として、ルーマロケーションxP、yP、0に等しく設定される視差ベクトルmvDisp、ビュー識別子refViewIdx、変数nPSW、nPSH、nPSWに等しい変数nSubBlkW、nPSHに等しい変数nSubBlkH、および1に等しいフラグrestMaxSearchFlagで呼び出され、出力はサイズのアレイdisparitySamples(nPSWD)×(nPSHD)である。
2.視差ベクトルmvDisp[0]の水平成分はdisparitySamples[0][0]に等しく設定される。
[0188]上記のように、第H.8.5.4.3項「視差サンプルアレイについての導出プロセス」は、第H.8.5.4項「視差ベクトルについての導出プロセス」に何の利用可能な視差動きベクトルも発見されないとき、関連する深度情報を使用してゼロ視差ベクトルをリファインメントするために呼び出される。3D HEVC Test Model Description Draft 3の第H.8.5.4.3項を下に複写する。
H.8.5.4.3 視差サンプルアレイについての導出プロセス
このプロセスへの入力は以下の通りである。
現在ピクチャの左上ルーマサンプルに対する現在予測ユニットの左上ルーマサンプルのルーマロケーション(xP,yP)、
視差ベクトルmvDisp、
参照ビューを指定するビュー識別子refViewIdx、
現在予測ユニットの幅および高さをそれぞれ指定する変数nPSWならびにnPSH、
対応する深度サンプルの変換精度を指定する変数nSubBlkWおよびnSubBlkW、
最大視差の検索が制限されるかどうかを指定するフラグrestMaxSearchFlag。
このプロセスの出力は以下の通りである。
視差値の(nPSW)x(nPSH)アレイdisparitySamples。
refDepPelsを、ViewIdxがrefViewIdxに等しい、深度ビューコンポーネントの再構成深度サンプルのアレイにする。refDepPelsの左上ルーマサンプルのルーマロケーション(x
TL,y
TL)は以下によって導出される。
サイズのアレイdisparitySamples(nPSW)×(nPSH)は、次に指定されるように導出される。
両端値を含む、0から((nPSH/nSubBlkH)−1)の範囲のsByの場合、次のことが当てはまる。
両端値を含む、0から((nPSW/nSubBlkW)−1)の範囲のsBxの場合、次のことが当てはまる。
変数maxDepは−1に等しく設定され、次に指定されるように修正される。
restMaxSearchFlagが0に等しいとき、次のことが当てはまる。
さもなければ(restMaxSearchFlagが1に等しい)、次のことが当てはまる。
アレイdepthSamplesの値は次に指定されるように導出される。
[0189]本開示の他の技法では、NBDVプロセスが任意の隣接ブロック中に利用可能な視差動きベクトルまたはIDVを発見しないときですら、ビデコーダはNBDV結果に関する可用性値を常に1に設定することができる。いくつかのそのような技法によれば、3D HEVC Test Model Description Draft 3の第H.8.5.4項は次のように修正され得る。次のテキストでは、追加された主題に下線が引かれる。下に示されない、3D HEVC Test Model Description Draft 3の第H.8.5.4項の一部は、3D HEVC Test Model Description Draft 3中と同じであり得る。
H.8.5.4 視差ベクトルについての導出プロセス
...
availableDVが0に等しいとき、mvDisp[0]は0に設定され、mvDisp[1]は0に設定され、availableDVは1に設定される。
availableDVが1に等しく、deriveFromDepthFlagが1に等しいとき、以下の順序ステップが当てはまる。
1.第H.8.5.4.3項に指定される視差サンプルアレイについての導出プロセスは、入力として、ルーマロケーションxP、yP、視差ベクトルmvDisp、ビュー識別子refViewIdx、変数nPSW、nPSH、nPSWに等しい変数nSubBlkW、nPSHに等しい変数nSubBlkH、および1に等しいフラグrestMaxSearchFlagで呼び出され、出力はサイズのアレイdisparitySamples(nPSWD)×(nPSHD)である。
視差ベクトルmvDisp[0]の水平成分はdisparitySamples[0][0]に等しく設定される。
[0190]代替的な例では、ビュー間残差予測について利用不可能NBDV結果を使用して無効にするために、可変のavailableDVResが導入され得る。この例では、可変のavailableDVResは、ビュー間残差予測を実行するか否かを制御するためにさらに使用され得る。この例では、3D HEVC Test Model Description Draft 3の第H.8.5.4項の出力として、availableDVを返す代わりに、availableDVResは、出力であり、ビュー間残差予測のためにさらに使用される。この例によれば、3D−HEVC Test Model Description Draft 3の第H.8.5.4項および第H.8.5.2.2.6項は次のように修正され得る。次のテキストでは、追加された主題に下線が引かれ、削除された主題はイタリック体で書かれ、二重鉤括弧で囲まれる。下に示されない、3D HEVC Test Model Description Draft 3の第H.8.5.4項および第H.8.5.2.2.6項の一部は、3D HEVC Test Model Description Draft 3中と同じであり得る。
H.8.5.4 視差ベクトルについての導出プロセス
...
availableDVが0に等しいとき、mvDisp[0]は0に設定され、mvDisp[1]は0に設定される。
availableDVResはavailableDVに設定される。
[[availableDVが1に等しく]]、deriveFromDepthFlagが1に等しいとき、以下の順序ステップが当てはまる。
2.第H.8.5.4.3項に指定される視差サンプルアレイについての導出プロセスは、入力として、ルーマロケーションxP、yP、視差ベクトルmvDisp、ビュー識別子refViewIdx、変数nPSW、nPSH、nPSWに等しい変数nSubBlkW、nPSHに等しい変数nSubBlkH、および1に等しいフラグrestMaxSearchFlagで呼び出され、出力はサイズのアレイdisparitySamples(nPSWD)×(nPSHD)である。
視差ベクトルmvDisp[0]の水平成分はdisparitySamples[0][0]に等しく設定される。
H.8.5.2.2.6 ビュー間残差予測プロセス
このプロセスは、res_pred_flagが1に等しい場合のみ呼び出される。
このプロセスへの入力は以下の通りである。
現在ピクチャの左上ルーマサンプルに対する現在ルーマコーディングブロックの左上サンプルを指定するルーマロケーション(xC,yC)、
現在ピクチャの左上ルーマサンプルに対する現在予測ユニットの左上ルーマサンプルのルーマロケーション(xP,yP)、
現在ルーマコーディングブロックのサイズを指定する変数nCS、
現在予測ユニットの幅および高さをそれぞれ指定する変数nPSWならびにnPSH、予測リスト利用フラグ、predFlagL0およびpredFlagL1、
ルーマ予測サンプルの(nPSW)x(nPSH)アレイpredSamplesL、
クロマ予測サンプルの2つの(nPSW/2)×(nPSH/2)アレイpredSamplesCbおよびpredSamplesCr。
このプロセスの出力は以下の通りである。
(nPSW)×(nPSH)アレイpredSamplesLの修正されたバージョン、
(nPSW/2)×(nPSH/2)アレイpredSamplesCbおよびpredSamplesCrの修正されたバージョン。
入力および出力はビュー順序インデックスrefViewIdx、フラグ[[availableDV]]availableDVResおよび視差ベクトルmvDispであるため、第H.8.5.4項で指定される視差ベクトルについての導出プロセスは、ルーマロケーション(xC,yC)および(xP,yP)、nCSのコーディングブロックサイズ、変数nPSWおよびnPSH、区分インデックスpartIdxおよび0に等しい変数deriveFromDepthFlagにより呼び出される。
refResSamplesLをViewIdxがrefViewIdxに等しいビュー成分のルーマ残差サンプルResSamplesL:の(PicWidthInSamplesL)×(PicHeightInSamplesL)アレイにする。refResSamplesCbおよびrefResSamplesCrをViewIdxがrefViewIdxに等しいビュー成分についてのインターコード化コーディングユニット用の、それぞれ、CbならびにCr残差サンプルResSamplesCbおよびResSamplesCrの(PicWidthInSamplesL/2)×(PicHeightInSamplesL/2)アレイにする。
フラグ[[availableDV]]availableDVResが0に等しいとき、この下位条項の復号プロセス全体が終了する。
値0(nPSH−1)に先行するyおよび値0(nPSW−1)に先行するxに関して、次の順序ステップが当てはまる。
...
[0191]図8は、本開示の1つまたは複数の技法による、マルチビュービデオデータを復号するためのビデオデコーダ30の例示的な動作200を示すフローチャートである。マルチビュービデオデータは3D−HEVCビデオデータであり得る。図8の例では、ビデオデコーダ30はマルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行し得る(202)。現在ブロックは現在ビュー中にある。ビデオデコーダ30は、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出することが不可能であるとき、可用性値が現在ブロックについての視差ベクトルが利用不可能であることを示すように、可用性値を設定することができる(204)。たとえば、可用性値は、視差ベクトル導出プロセスが視差動きベクトルまたは現在ブロックに隣接するブロックの暗黙的視差ベクトルから現在ブロックについての視差ベクトルを導出することが可能であるとき、現在ブロックについての視差ベクトルが利用可能であることを示し得る。いくつかの例では、ビデオデコーダ30は、視差ベクトル導出プロセスを実行する一環として可用性値を設定することができる。
[0192](たとえば、可用性値が、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出しなかったことを示すとき、または可用性値が、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出したことを示すとき)可用性値が現在ブロックについての視差ベクトルが利用可能であることを示すかどうかにかかわらず、ビデオデコーダ30は、参照ビューの深度ビューコンポーネントにアクセスする視差ベクトルリファインメントプロセスを実行することによって、現在ブロックについてのリファインメントされた視差ベクトルを生成することができる(206)。いくつかの例では、ビデオエンコーダ20は、視差ベクトルリファインメントプロセスをゼロ視差ベクトルに適用することによって、現在ブロックについてのリファインメントされた視差ベクトルを生成することができる。
[0193]図8の例では、ビデオデコーダ30は、現在ブロックについてのリファインメントされた視差ベクトルに基づいて、現在ブロックを復号する(208)。現在ブロックについてのリファインメントされた視差ベクトルに基づいて、現在ブロックを復号する一環として、ビデオデコーダ30は、ビュー間動き予測、ビュー間残差予測、または後方ビュー合成予測のうちの少なくとも1つについてのリファインメントされた視差ベクトルを使用することができる。ビュー間動き予測、ビュー間残差予測、および/または後方ビュー合成予測を使用することによって、ビデオデコーダ30は、現在ブロックに対応するサンプルブロックを再構成することが可能であり得る。
[0194]図9は、本開示の1つまたは複数の技法による、マルチビュービデオデータを符号化するためのビデオエンコーダ20の例示的な動作250を示すフローチャートである。マルチビュービデオデータは3D−HEVCビデオデータであり得る。図9の例では、ビデオエンコーダ20は、マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行し得る(252)。現在ブロックは現在ビュー中にある。ビデオエンコーダ20は、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出することが不可能であるとき、可用性値が現在ブロックについての視差ベクトルが利用不可能であることを示すように、可用性値を設定することができる(254)。たとえば、可用性値は、視差ベクトル導出プロセスが視差動きベクトルまたは現在ブロックに隣接するブロックの暗黙的視差ベクトルから現在ブロックについての視差ベクトルを導出することが可能であるとき、現在ブロックについての視差ベクトルが利用可能であることを示し得る。いくつかの例では、ビデオエンコーダ20は、視差ベクトル導出プロセスを実行する一環として可用性値を設定することができる。
[0195](たとえば、可用性値が、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出しなかったことを示すとき、または可用性値が、視差ベクトル導出プロセスが現在ブロックについての視差ベクトルを導出したことを示すとき)可用性値が現在ブロックについての視差ベクトルが利用可能であることを示すかどうかにかかわらず、ビデオエンコーダ20は、参照ビューの深度ビューコンポーネントにアクセスする視差ベクトルリファインメントプロセスを実行することによって、現在ブロックについてのリファインメントされた視差ベクトルを生成することができる(256)。いくつかの例では、ビデオエンコーダ20は、視差ベクトルリファインメントプロセスをゼロ視差ベクトルに適用することによって、現在ブロックについてのリファインメントされた視差ベクトルを生成することができる。参照ビューは、現在ビューとは異なる。
[0196]図9の例では、ビデオエンコーダ20は、現在ブロックについてのリファインメントされた視差ベクトルに基づいて、現在ブロックを符号化する(258)。言い換えると、ビデオエンコーダ20は、現在のブロックの符号化された表現を生成するために、現在ブロックについてのリファインメントされた視差ベクトルを使用することができる。現在ブロックについてのリファインメントされた視差ベクトルに基づいて、現在ブロックを符号化する一環として、ビデオエンコーダ20は、ビュー間動き予測、ビュー間残差予測、または後方ビュー合成予測のうちの少なくとも1つについてのリファインメントされた視差ベクトルを使用することができる。
[0197]図10は、本開示の1つまたは複数の追加の技法による、マルチビュービデオデータを復号するためのビデオデコーダ30の例示的な動作300を示すフローチャートである。図10の例では、ビデオデコーダ30は、現在ブロックについての視差ベクトルを導出するための視差ベクトル導出プロセスを実行し得る(302)。たとえば、ビデオデコーダ30は、現在ブロックについての視差ベクトルを導出するためのNBDVプロセスを実行し得る。その後、ビデオデコーダ30は、視差ベクトル導出プロセスが現在ブロックについて利用可能な視差ベクトルを導出したかどうかを決定することができる(304)。
[0198]視差ベクトル導出プロセスが現在ブロックについて利用可能な視差ベクトルを導出しなかったと決定すること(304の「いいえ」)に応答して、ビデオデコーダ30は、現在ブロックについての視差ベクトルがオフセットとゼロ視差ベクトルの合計に等しくなるように、現在ブロックについての視差ベクトルを決定することができる(306)。いくつかの例では、ビデオデコーダ30は、オフセットを現在ブロックの視差ベクトルの水平成分のみに追加することができる。さらに、いくつかの例では、ビデオデコーダ30は、カメラパラメータおよびデフォルト深度ピクセル値(たとえば、128)でオフセットを計算することができる。いくつかの例では、ビデオエンコーダ20は、現在ブロックを含むスライスのスライスヘッダ中でオフセットをシグナリングする。
[0199]現在のブロックについての視差ベクトルを決定した(306)後、または視差ベクトル導出プロセスが現在ブロックについて利用可能なベクトルを導出したと決定すること(304の「はい」)に応答して、ビデオデコーダ30は、現在ブロックについての視差ベクトルに基づいて、現在ブロックを復号することができる(308)。現在ブロックについてのリファインメントされた視差ベクトルに基づいて、現在ブロックを復号する一環として、ビデオデコーダ30は、ビュー間動き予測、ビュー間残差予測、または後方ビュー合成予測のうちの少なくとも1つについてのリファインメントされた視差ベクトルを使用することができる。ビュー間動き予測、ビュー間残差予測、および/または後方ビュー合成予測を使用することによって、ビデオデコーダ30は、現在ブロックに対応するサンプルブロックを再構成することが可能であり得る。
[0200]図11は、本開示の1つまたは複数の追加の技法による、マルチビュービデオデータを符号化するためのビデオデコーダ20の例示的な動作350を示すフローチャートである。図11の例では、ビデオエンコーダ20は、現在ブロックについての視差ベクトルを導出するための視差ベクトル導出プロセスを実行し得る(352)。たとえば、ビデオエンコーダ20は、現在ブロックについての視差ベクトルを導出するためのNBDVプロセスを実行し得る。その後、ビデオエンコーダ20は、視差ベクトル導出プロセスが現在ブロックについて利用可能な視差ベクトルを導出したかどうかを決定することができる(354)。
[0201]視差ベクトル導出プロセスが現在ブロックについて利用可能な視差ベクトルを導出しなかったと決定すること(354の「いいえ」)に応答して、ビデオエンコーダ20は、現在ブロックについての視差ベクトルがオフセットとゼロ視差ベクトルの合計に等しくなるように、現在ブロックについての視差ベクトルを決定することができる(356)。いくつかの例では、ビデオエンコーダ20は、オフセットを現在ブロックの視差ベクトルの水平成分のみに追加することができる。さらに、いくつかの例では、ビデオエンコーダ20は、カメラパラメータおよびデフォルト深度ピクセル値(たとえば、128)でオフセットを計算することができる。いくつかの例では、ビデオエンコーダ20は、現在ブロックを含むスライスのスライスヘッダ中でオフセットをシグナリングする。
[0202](356)で現在のブロックについての視差ベクトルを決定した後、または視差ベクトル導出プロセスが現在ブロックについて利用可能なベクトルを導出したと決定すること(354の「はい」)に応答して、ビデオエンコーダ20は、現在ブロックについての視差ベクトルに基づいて現在ブロックを復号することができる(358)。
[0203]以下は、本開示の技法による追加の例である。
[0204]
マルチビュービデオデータを復号するための方法、この方法は、マルチビュービデオデータの現在のブロックについての視差ベクトル導出プロセスを実行することと、視差ベクトル導出プロセスが利用可能な視差ベクトルを生成しないとき、現在ブロックについてのリファインメントされた視差ベクトルを生成するために、視差ベクトルリファインメントプロセスを実行することとを備える。
[0205]
視差ベクトルリファインメントプロセスを実行することが、ゼロ視差ベクトルを使用して視差ベクトルリファインメントプロセスを実行することを備える、実施例1に記載の方法。
[0206]
視差ベクトル導出が利用可能な視差ベクトルを生成しないとき、視差ベクトルリファインメントプロセスについてのゼロ視差ベクトルを生成することをさらに備える、実施例2に記載の方法。
[0207]
視差ベクトル導出プロセスが利用可能な視差ベクトルを生成しないとき、視差ベクトルが利用可能であることを示すためのステータスを設定することと、視差ベクトルの値をゼロに設定することと、ゼロの値を有する視差ベクトルを使用して、視差ベクトルリファインメントプロセスを実行することとをさらに備える、実施例2に記載の方法。
[0208]
視差ベクトル導出プロセスが利用可能な視差ベクトルを生成したかどうかを示すための変数を維持することをさらに備える、実施例1から4のいずれかまたはそれらの組合せに記載の方法。
[0209]
1つまたは複数のコーディングツールによって使用するために変数を提供することをさらに備える、実施例5に記載の方法。
[0210]
変数の値に基づいて、コーディングツールのうちの1つまたは複数を有効にすることをさらに備える、実施例6に記載の方法。
[0211]
視差ベクトル導出プロセスが利用可能な視差ベクトルを生成しないとき、修正された視差ベクトルを生成するために、オフセットをゼロ視差ベクトルに追加することをさらに備える、実施例1に記載の方法。
[0212]
カメラパラメータおよびデフォルト深度ピクセル値のうちの1つまたは複数に基づいてオフセットを決定することをさらに備える、実施例8に記載の方法。
[0213]
コード化ビデオビットストリーム中で受信された、シグナリングされた値に基づいてオフセットを決定することをさらに備える、実施例8に記載の方法。
[0214]
値がスライスヘッダ中でシグナリングされる、実施例10に記載の方法。
[0215]
視差ベクトル導出プロセスが隣接ブロック視差ベクトル(NBDV)導出プロセスである、実施例1から11のいずれかまたはそれらの組合せに記載の方法。
[0216]
視差ベクトルリファインメントプロセスが隣接ブロック視差ベクトルリファインメント(NBDV−R)プロセスである、実施例1から12のいずれかまたはそれらの組合せに記載の方法。
[0217]
ビュー間動き予測、ビュー間残差予測、または後方ビュー合成予測のうちの少なくとも1つについてのリファインメントされた視差ベクトルを使用することをさらに備える、実施例1から13のいずれかまたはそれらの組合せに記載の方法。
[0218]
マルチビュービデオデータが3D−HEVCビデオデータである、実施例1から14のいずれかまたはそれらの組合せに記載の方法。
[0219]
リファインメントされた視差ベクトルに基づいてビデオデータを復号することをさらに備える、実施例1から15のいずれかまたはそれらの組合せに記載の方法。
[0220]
マルチビュービデオデータを符号化するための方法、この方法は、マルチビュービデオデータの現在のブロックについての視差ベクトル導出プロセスを実行することと、視差ベクトル導出プロセスが利用可能な視差ベクトルを生成しないとき、現在ブロックについてのリファインメントされた視差ベクトルを生成するために、視差ベクトルリファインメントプロセスを実行することとを備える。
[0221]
視差ベクトル導出プロセスを実行することが、ゼロ視差ベクトルを使用して視差ベクトルリファインメントプロセスを実行することを備える、実施例17に記載の方法。
[0222]
視差ベクトル導出が利用可能な視差ベクトルを生成しないとき、視差ベクトルリファインメントプロセスについてのゼロ視差ベクトルを生成することをさらに備える、実施例18に記載の方法。
[0223]
視差ベクトル導出プロセスが利用可能な視差ベクトルを生成しないとき、視差ベクトルが利用可能であることを示すためのステータスを設定することと、視差ベクトルの値をゼロに設定することと、ゼロの値を有する視差ベクトルを使用して、視差ベクトルリファインメントプロセスを実行することとをさらに備える、実施例18に記載の方法。
[0224]
視差ベクトル導出プロセスが利用可能な視差ベクトルを生成したかどうかを示すための変数を維持することをさらに備える、実施例17から20のいずれかまたはそれらの組合せに記載の方法。
[0225]
1つまたは複数のコーディングツールによって使用するために変数を提供することをさらに備える、実施例21に記載の方法。
[0226]
変数の値に基づいて、コーディングツールのうちの1つまたは複数を有効にすることをさらに備える、実施例22に記載の方法。
[0227]
視差ベクトル導出プロセスが利用可能な視差ベクトルを生成しないとき、修正された視差ベクトルを生成するために、オフセットをゼロ視差ベクトルに追加することをさらに備える、実施例17に記載の方法。
[0228]
カメラパラメータおよびデフォルト深度ピクセル値のうちの1つまたは複数に基づいてオフセットを決定することをさらに備える、実施例24に記載の方法。
[0229]
コード化ビデオビットストリーム中で受信された、シグナリングされた値に基づいてオフセットを決定することをさらに備える、実施例24に記載の方法。
[0230]
値がスライスヘッダ中でシグナリングされる、実施例26に記載の方法。
[0231]
視差ベクトル導出プロセスが隣接ブロック視差ベクトル(NBDV)導出プロセスである、実施例17から27のいずれかまたはそれらの組合せに記載の方法。
[0232]
視差ベクトルリファインメントプロセスが隣接ブロック視差ベクトルリファインメント(NBDV−R)プロセスである、実施例17から28のいずれかまたはそれらの組合せに記載の方法。
[0233]
ビュー間動き予測、ビュー間残差予測、または後方ビュー合成予測のうちの少なくとも1つについてのリファインメントされた視差ベクトルを使用することをさらに備える、実施例17から29のいずれかまたはそれらの組合せに記載の方法。
[0234]
マルチビュービデオデータが3D−HEVCビデオデータである、実施例17から30のいずれかまたはそれらの組合せに記載の方法。
[0235]
実施例1から16のいずれかまたはそれらの組合せに記載の方法を実行するように構成されたビデオ復号装置。
[0236]
実施例17から31のいずれかまたはそれらの組合せに記載の方法を実行するように構成されたビデオ符号化装置。
[0237]
実施例1から16のいずれかまたはそれらの組合せに記載の方法を実行するための手段を備えるビデオ復号装置。
[0238]
実施例17から31のいずれかまたはそれらの組合せに記載の方法を実行するための手段を備えるビデオ符号化装置。
[0239]
1つもしくは複数のプロセッサに実施例1から31のいずれかまたはそれらの組合せに記載の方法を実行させるための命令を備えるコンピュータ可読媒体。
[0240]
本明細書で開示する技法のいずれかによる、ビデオデータを符号化する方法。
[0241]
本明細書で開示する技法のいずれかによる、ビデオデータを復号する方法。
[0242]
本明細書で開示する技法のいずれかを実行するように構成されたデバイス。
[0243]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアに実装される場合、機能は、1つもしくは複数の命令もしくはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行することができる。コンピュータ可読媒体は、たとえば、データ記憶媒体などの有形媒体、または、たとえば通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含むことができる。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形コンピュータ可読記憶媒体、または、(2)信号もしくは搬送波などの通信媒体に対応することができる。データ記憶媒体は、本開示に記載された技法を実装するための命令、コードおよび/またはデータ構造を取り出すために、1つもしくは複数のコンピュータ、または1つもしくは複数のプロセッサによってアクセスできる任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含むことができる。
[0244]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびブルーレイ(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
[0245]命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)などの1つもしくは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書に記載された技法の実施に適した任意の他の構造のいずれかを指す場合がある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/もしくはソフトウェアモジュール内に提供され得、または複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中で十分に実装され得る。
[0246]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上で説明されたように、様々なユニットが、適切なソフトウェアおよび/またはファームウェアとともに、上で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされてもよく、または相互動作可能なハードウェアユニットの集合によって与えられてもよい。
[0247]様々な例について説明してきた。これらおよび他の例は、以下の特許請求の範囲内である。
以下に本願発明の当初の特許請求の範囲に記載された発明を付記する。
[C1]
マルチビュービデオデータを復号するための方法であって、
前記マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行することと、前記現在ブロックは現在ビュー中にある、
前記視差ベクトル導出プロセスが前記現在ブロックについての視差ベクトルを導出することが不可能であるとき、可用性値が前記現在ブロックについての前記視差ベクトルが利用不可能であることを示すように、前記可用性値を設定することと、
前記可用性値が、前記現在ブロックについての前記視差ベクトルが利用不可能であることを示すとき、参照ビューの深度ビューコンポーネントにアクセスする視差ベクトルリファインメントプロセスを実行することによって、前記現在ブロックについてのリファインメントされた視差ベクトルを生成することと、
前記現在ブロックについての前記リファインメントされた視差ベクトルに基づいて、前記現在ブロックを復号することと
を備える方法。
[C2]
前記視差ベクトル導出プロセスが視差動きベクトルまたは前記現在ブロックに隣接するブロックの暗黙的視差ベクトルから前記現在ブロックについての前記視差ベクトルを導出することが可能であるとき、前記可用性値が前記現在ブロックについての前記視差ベクトルが利用可能であることを示す、C1に記載の方法。
[C3]
前記リファインメントされた視差ベクトルを生成することが、前記視差ベクトルリファインメントプロセスをゼロ視差ベクトルに適用することによって、前記現在ブロックについての前記リファインメントされた視差ベクトルを生成することを備える、C1に記載の方法。
[C4]
前記可用性値が前記現在ブロックについての前記視差ベクトルが利用不可能であることを示すとき、
前記現在ブロックについての前記視差ベクトルが利用可能であることを示すように、
前記可用性値を設定することと、
前記現在ブロックについての前記視差ベクトルをゼロ視差ベクトルに設定することと
をさらに備える、C1に記載の方法。
[C5]
前記視差ベクトル導出プロセスが、当初、前記現在ブロックについての前記視差ベクトルを導出したかどうかを示すための変数を維持することと、
1つまたは複数のコーディングツールによって使用するために前記変数を提供することと
をさらに備える、C4に記載の方法。
[C6]
前記変数の前記値に基づいて、前記コーディングツールのうちの1つまたは複数を有効にすることをさらに備える、C5に記載の方法。
[C7]
前記視差ベクトル導出プロセスが隣接ブロック視差ベクトル(NBDV)導出プロセスであり、
前記視差ベクトルリファインメントプロセスが隣接ブロック視差ベクトルリファインメント(NBDV−R)プロセスである
C1に記載の方法。
[C8]
前記現在ブロックについての前記リファインメントされた視差ベクトルに基づいて前記現在ブロックを復号することが、ビュー間動き予測、ビュー間残差予測、または後方ビュー合成予測のうちの少なくとも1つについての前記リファインメントされた視差ベクトルを使用することを備える、C1に記載の方法。
[C9]
前記マルチビュービデオデータが3D−HEVCビデオデータである、C1に記載の方法。
[C10]
マルチビュービデオデータを符号化するための方法であって、
前記マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行することと、前記現在ブロックは現在ビュー中にある、
前記視差ベクトル導出プロセスが前記現在ブロックについての視差ベクトルを導出することが不可能であるとき、可用性値が前記現在ブロックについての前記視差ベクトルが利用不可能であることを示すように、前記可用性値を設定することと、
前記可用性値が、前記現在ブロックについての前記視差ベクトルが利用不可能であることを示すとき、参照ビューの深度ビューコンポーネントにアクセスする視差ベクトルリファインメントプロセスを実行することによって、前記現在ブロックについてのリファインメントされた視差ベクトルを生成することと、
前記現在ブロックについての前記リファインメントされた視差ベクトルに基づいて、前記現在ブロックを符号化することと
を備える方法。
[C11]
前記視差ベクトル導出プロセスが視差動きベクトルまたは前記現在ブロックに隣接するブロックの暗黙的視差ベクトルから前記現在ブロックについての前記視差ベクトルを導出することが可能でるとき、前記可用性値が前記現在ブロックについての前記視差ベクトルが利用可能であることを示す、C10に記載の方法。
[C12]
前記リファインメントされた視差ベクトルを生成することが、前記視差ベクトルリファインメントプロセスをゼロ視差ベクトルに適用することによって、前記現在ブロックについての前記リファインメントされた視差ベクトルを生成することを備える、C10に記載の方法。
[C13]
前記可用性値が前記現在ブロックについての前記視差ベクトルが利用不可能であることを示すとき、
前記現在ブロックについての前記視差ベクトルが利用可能であることを示すように、前記可用性値を設定することと、
前記現在ブロックについての前記視差ベクトルをゼロ視差ベクトルに設定することと
をさらに備える、C10に記載の方法。
[C14]
前記視差ベクトル導出プロセスが、当初、前記現在ブロックについての前記視差ベクトルを導出したかどうかを示すための変数を維持することと、
1つまたは複数のコーディングツールによって使用するために前記変数を提供することと
をさらに備える、C13に記載の方法。
[C15]
前記変数の前記値に基づいて、前記コーディングツールのうちの1つまたは複数を有効にすることをさらに備える、C14に記載の方法。
[C16]
前記視差ベクトル導出プロセスが隣接ブロック視差ベクトル(NBDV)導出プロセスであり、
前記視差ベクトルリファインメントプロセスが隣接ブロック視差ベクトルリファインメント(NBDV−R)プロセスである
C10に記載の方法。
[C17]
前記現在ブロックについての前記リファインメントされた視差ベクトルに基づいて前記現在ブロックを符号化することが、ビュー間動き予測、ビュー間残差予測、または後方ビュー合成予測のうちの少なくとも1つについての前記リファインメントされた視差ベクトルを使用することを備える、C10に記載の方法。
[C18]
前記マルチビュービデオデータが3D−HEVCビデオデータである、C10に記載の方法。
[C19]
マルチビュービデオデータを記憶するメモリと、1つまたは複数のプロセッサとを備えるビデオコーディングデバイスであって、前記1つまたは複数のプロセッサが、
前記マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行し、前記現在ブロックは現在ビュー中にある、
前記視差ベクトル導出プロセスが前記現在ブロックについての視差ベクトルを導出することが不可能であるとき、可用性値が前記現在ブロックについての前記視差ベクトルが利用不可能であることを示すように、前記可用性値を設定し、
前記可用性値が前記現在ブロックについての前記視差ベクトルが利用不可能であることを示すとき、前記現在ブロックについてのリファインメントされた視差ベクトルを生成するために視差ベクトルリファインメントプロセスを実行する
ように構成される、ビデオコーディングデバイス。
[C20]
前記視差ベクトル導出プロセスが視差動きベクトルまたは前記現在ブロックに隣接するブロックの暗黙的視差ベクトルから前記現在ブロックについての前記視差ベクトルを導出することが可能であるとき、前記可用性値が前記現在ブロックについての前記視差ベクトルが利用可能であることを示す、C19に記載のビデオコーディングデバイス。
[C21]
前記1つまたは複数のプロセッサが、前記視差ベクトルリファインメントプロセスをゼロ視差ベクトルに適用することによって、前記現在ブロックについての前記リファインメントされた視差ベクトルを生成するように構成される、C19に記載のビデオコーディングデバイス。
[C22]
前記可用性値が前記現在ブロックについての前記視差ベクトルが利用不可能であることを示すとき、前記1つまたは複数のプロセッサが、
前記現在ブロックについての前記視差ベクトルが利用可能であることを示すように前記可用性値を設定し、
前記現在ブロックについての前記視差ベクトルをゼロ視差ベクトルに設定する
ように前記1つまたは複数のプロセッサが構成される、C19に記載のビデオコーディングデバイス。
[C23]
前記前記1つまたは複数のプロセッサが、
前記視差ベクトル導出プロセスが、当初、前記現在ブロックについての前記視差ベクトルを導出したかどうかを示すための変数を維持し、
1つまたは複数のコーディングツールによって使用するために前記変数を提供する
ように構成される、C22に記載のビデオコーディングデバイス。
[C24]
前記1つまたは複数のプロセッサが、前記変数の前記値に基づいて、前記コーディングツールのうちの1つまたは複数を有効にするように構成される、C23に記載のビデオコーディングデバイス。
[C25]
前記視差ベクトル導出プロセスが隣接ブロック視差ベクトル(NBDV)導出プロセスであり、
前記視差ベクトルリファインメントプロセスが隣接ブロック視差ベクトルリファインメント(NBDV−R)プロセスである
C19に記載のビデオコーディングデバイス。
[C26]
前記1つまたは複数のプロセッサが、ビュー間動き予測、ビュー間残差予測、または後方ビュー合成予測のうちの少なくとも1つについて前記リファインメントされた視差ベクトルを使用するように構成される、C19に記載のビデオコーディングデバイス。
[C27]
前記マルチビュービデオデータが3D−HEVCビデオデータである、C19に記載のビデオコーディングデバイス。
[C28]
前記1つまたは複数のプロセッサが、前記現在ブロックについての前記リファインメントされた視差ベクトルに基づいて、前記現在ブロックを復号するように構成される、C19に記載のビデオコーディングデバイス。
[C29]
前記1つまたは複数のプロセッサが、前記現在ブロックについての前記リファインメントされた視差ベクトルに基づいて、前記現在ブロックを符号化するように構成される、C19に記載のビデオコーディングデバイス。
[C30]
マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行するための手段と、前記現在ブロックは現在ビュー中にある、
前記視差ベクトル導出プロセスが前記現在ブロックについての視差ベクトルを導出することが不可能であるとき、可用性値が前記現在ブロックについての前記視差ベクトルが利用不可能であることを示すように、前記可用性値を設定するための手段と、
前記可用性値が前記現在ブロックについての前記視差ベクトルが利用不可能であることを示すとき、参照ビューの深度ビューコンポーネントにアクセスする視差ベクトルリファインメントプロセスを実行することによって、前記現在ブロックについてのリファインメントされた視差ベクトルを生成するための手段と
を備えるビデオコーディングデバイス。
[C31]
実行されると、
マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行し、前記現在ブロックは現在ビュー中にある、
前記視差ベクトル導出プロセスが前記現在ブロックについての視差ベクトルを導出することが不可能であるとき、可用性値が前記現在ブロックについての前記視差ベクトルが利用不可能であることを示すように、前記可用性値を設定し、
前記可用性値が、前記視差ベクトル導出プロセスが前記現在ブロックについての前記視差ベクトルを導出しなかったことを示すとき、参照ビューの深度ビューコンポーネントにアクセスする視差ベクトルリファインメントプロセスを実行することによって、前記現在ブロックについてのリファインメントされた視差ベクトルを生成する
ように1つまたは複数のプロセッサを構成する命令を記憶した、非一時的コンピュータ可読記憶媒体。
[C32]
マルチビュービデオデータを復号するための方法であって、
前記マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行することと、前記現在ブロックは現在ビュー中にある、
前記視差ベクトル導出プロセスが、前記現在ブロックについての視差ベクトルが利用不可能であると決定するとき、オフセットをゼロ視差ベクトルに追加することによって、前記現在ブロックについての前記視差ベクトルを決定することと、
前記現在ブロックについての前記視差ベクトルに基づいて、前記現在ブロックを復号することと
を備える方法。
[C33]
カメラパラメータおよびデフォルト深度ピクセル値に基づいて前記オフセットを決定することをさらに備える、C32に記載の方法。
[C34]
前記オフセットが前記マルチビュービデオデータのスライスヘッダ中でシグナリングされる、C32に記載の方法。
[C35]
前記現在ブロックについての前記視差ベクトルを決定することが、前記オフセットを前記ゼロ視差ベクトルの水平成分にのみ追加することを備える、C32に記載の方法。
[C36]
マルチビュービデオデータを符号化するための方法であって、
前記マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行することと、前記現在ブロックは現在ビュー中にある、
前記視差ベクトル導出プロセスが、前記現在ブロックについての視差ベクトルが利用不可能であると決定するとき、オフセットをゼロ視差ベクトルに追加することによって、前記現在ブロックについての前記視差ベクトルを決定することと、
前記現在ブロックについての前記視差ベクトルに基づいて、前記現在ブロックを符号化することと
を備える方法。
[C37]
カメラパラメータおよびデフォルト深度ピクセル値に基づいて前記オフセットを決定することをさらに備える、C36に記載の方法。
[C38]
前記オフセットが前記マルチビュービデオデータのスライスヘッダ中でシグナリングされる、C36に記載の方法。
[C39]
前記現在ブロックについての前記視差ベクトルを決定することが、前記オフセットを前記ゼロ視差ベクトルの水平成分にのみ追加することを備える、C36に記載の方法。
[C40]
マルチビュービデオデータを記憶するメモリと、1つまたは複数のプロセッサとを備える、マルチビュービデオデータをコーディングするためのデバイスであって、前記1つまたは複数のプロセッサが、
前記マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行し、前記現在ブロックは現在ビュー中にある、
前記視差ベクトル導出プロセスが、前記現在ブロックについての視差ベクトルが利用不可能であると決定するとき、オフセットをゼロ視差ベクトルに追加することによって、前記現在ブロックについての前記視差ベクトルを決定し、
前記現在ブロックについての前記視差ベクトルに基づいて、前記現在ブロックをコーディングする
ように構成される、デバイス。
[C41]
前記1つまたは複数のプロセッサが、カメラパラメータおよびデフォルト深度ピクセル値に基づいて前記オフセットを決定するように構成される、C40に記載のデバイス。
[C42]
前記オフセットが前記マルチビュービデオデータのスライスヘッダ中でシグナリングされる、C40に記載のデバイス。
[C43]
前記現在ブロックについての前記視差ベクトルを決定するために、前記1つまたは複数のプロセッサが、前記オフセットを前記ゼロ視差ベクトルの水平成分にのみ追加する、C40に記載のデバイス。
[C44]
マルチビュービデオデータをコーディングするためのデバイスであって、
マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行するための手段と、前記現在ブロックは現在ビュー中にある、
前記視差ベクトル導出プロセスが、前記現在ブロックについての視差ベクトルが利用不可能であると決定するとき、オフセットをゼロ視差ベクトルに追加することによって、前記現在ブロックについての前記視差ベクトルを決定するための手段と、
前記現在ブロックについての前記視差ベクトルに基づいて、前記現在ブロックをコーディングするための手段と
を備える、デバイス。
[C45]
マルチビュービデオデータをコーディングするためのデバイスの1つまたは複数のプロセッサによって実行されると、前記デバイスに、
前記マルチビュービデオデータの現在ブロックについての視差ベクトル導出プロセスを実行し、前記現在ブロックは現在ビュー中にある、
前記視差ベクトル導出プロセスが、前記現在ブロックについての視差ベクトルが利用不可能であると決定するとき、オフセットをゼロ視差ベクトルに追加することによって、前記現在ブロックについての前記視差ベクトルを決定し、
前記現在ブロックについての前記視差ベクトルに基づいて、前記現在ブロックをコーディングする
ことを行わせる命令を記憶した、非一時的コンピュータ可読データ記憶媒体。