[0034]高効率ビデオコーディング(HEVC)は、新たに開発されたビデオコーディング規格である。3D−HEVCは、3DビデオデータのためのHEVCの拡張である。3D−HEVCは、異なる視点からの同じシーンの複数のビューを提供する。3D−HEVCのための規格化作業の一部は、HEVCに基づくマルチビュービデオコーデックの規格化を含む。3D−HEVCでは、異なるビューから再構成されたビュー成分に基づくビュー間予測が有効にされる。
[0035]3D−HEVCにおいて、ビュー間予測は、標準HEVCにおいて使用される動き補償と同様であり、同じまたは類似のシンタックス要素を使用し得る。マージモード、スキップモード、および高度動きベクトル予測(AMVP)モードが動き予測の例示的なタイプである。ビデオコーダが予測ユニット(PU)に対してビュー間予測を実行するとき、ビデオコーダは、動き情報のソースとして、PUと同じアクセスユニット中にあるが、異なるビュー中にあるピクチャを使用し得る。対照的に、動き補償に対する他の手法は、参照ピクチャとして異なるアクセスユニット中のピクチャのみを使用することができる。したがって、3D−HEVCでは、従属ビュー中のブロックの動きパラメータは、同じアクセスユニットの他のビュー中のすでにコード化動きパラメータに基づいて予測または推測される。
[0036]ビデオコーダが動き予測を実行するとき、ビデオコーダは、現在PUの動き情報がマージモード、スキップモード、またはAMVPモードを使用してシグナリングされるとき、候補リスト(たとえば、マージ用候補リストまたはAMVP候補リスト)を生成し得る。3D−HEVCにおけるビュー間動き予測を実装するために、ビデオコーダは、マージ用候補(merging candidates)リストおよびAMVP候補リスト中にビュー間予測動きベクトル候補(IPMVC:inter-view predicted motion vector candidates)を含み得る。ビデオコーダは、候補リスト中の他の候補と同じ方法でIPMVCを使用し得る。IPMVCは、ビュー間参照ピクチャ中のPU(すなわち、参照PU)の動き情報を指定し得る。ビュー間参照ピクチャは、現在PUと同じアクセスユニット中にあるが、現在PUとは異なるビュー中にあり得る。
[0037]いくつかの例では、IPMVCは、現在PUの複数のサブPUの動きパラメータ(たとえば、動きベクトル、参照インデックスなど)を指定することができる。概して、PUの各サブPUは、PUの予測ブロックの異なる、等しいサイズのサブブロックに関連付けられ得る。たとえば、PUのルーマ予測ブロックが32×32であり、サブPUサイズが4×4である場合、ビデオコーダは、PUを、PUのルーマ予測ブロックの異なる4×4サブブロックに関連付けられた64個のサブPUに区分することができる。この例では、サブPUはまた、PUのクロマ予測ブロックの対応するサブブロックに関連付けられ得る。したがって、IPMVCは、複数の動きパラメータセットを指定することができる。そのような例では、IPMVCが候補リスト中の選択された候補である場合、ビデオコーダは、IPMVCによって指定された複数の動きパラメータセットに基づいて、現在PUのための予測ブロックを決定することができる。
[0038]現在PUのサブPUの動きパラメータを指定するIPMVCを決定するために、ビデオコーダは、ラスタ走査順序に従って、サブPUの各々を処理することができる。ビデオコーダがサブPU(すなわち、現在サブPU)を処理するとき、ビデオコーダは、現在PUについての視差ベクトルに基づいて、サブPUに対応する参照ブロックを決定することができる。参照ブロックは、現在ピクチャと同じ時間インスタンス中にあり得るが、現在ピクチャとは異なるビュー中にある。現在サブPUに対応する参照ブロックが動き補償予測を使用してコーディングされる(たとえば、参照ブロックが1つまたは複数の動きベクトル、参照インデックスなどを有する)場合、ビデオコーダは、現在サブPUの動きパラメータをサブPUに対応する参照ブロックの動きパラメータに設定することができる。さもなければ、現在サブPUに対応する参照ブロックが動き補償予測を使用してコーディングされない(たとえば、参照ブロックがイントラ予測を使用してコーディングされる)場合、ビデオコーダは、ラスタ走査順序で、その対応する参照ブロックが動き補償予測を使用してコーディングされる最も近いサブPUを識別することができる。ビデオコーダは、次いで、現在サブPUの動きパラメータを識別されたサブPUに対応する参照ブロックの動きパラメータに設定することができる。
[0039]場合によっては、識別されたサブPUは、ラスタ検索順序で現在サブPUよりも後で発生する。したがって、現在サブPUに関する動きパラメータを決定するとき、ビデオコーダは、その対応する参照ブロックが動き補償予測を使用してコーディングされるサブPUを発見するために順方向に走査することができる。代替的に、ビデオコーダが、サブPUの処理の間に、その対応する参照ブロックが動き補償予測を使用してコーディングされるPUに遭遇するまで、ビデオコーダは現在サブPUの動きパラメータを決定することを遅延させることができる。これらの事例のいずれにおいても、追加の複雑さおよびコーディング遅延が加えられる。
[0040]本開示の1つまたは複数の技法によれば、ビデオコーダは、現在PUを複数のサブPUに区分することができる。さらに、ビデオコーダは、デフォルト動きパラメータを決定することができる。さらに、ビデオコーダは、複数のサブPUからのサブPUを特定の順序で処理することができる。場合によっては、ビデオコーダは、サブPUのうちのいずれかを処理するのに先立って、デフォルト動きパラメータを決定することができる。現在PUの各それぞれのPUに関して、ビデオコーダは、それぞれのサブPUのための参照ブロックを決定することができる。それぞれのサブPUのための参照ブロックが動き補償予測を使用してコーディングされる場合、ビデオコーダは、それぞれのサブPUのための参照ブロックの動きパラメータに基づいて、それぞれのサブPUの動きパラメータを設定することができる。しかしながら、それぞれのサブPUのための参照ブロックが動き補償予測を使用してコーディングされない場合、ビデオコーダは、それぞれのサブPUの動きパラメータをデフォルト動きパラメータに設定することができる。
[0041]本開示の1つまたは複数の技法によれば、それぞれのサブPUのための参照ブロックが動き補償予測を使用してコーディングされない場合、特定の順序の任意の後のサブPUのための参照ブロックは動き補償予測を使用してコーディングされるという後続の決定に応答して、それぞれのサブPUの動きパラメータは設定されない。したがって、ビデオコーダがサブPUを処理しているとき、ビデオコーダは、その対応する参照ブロックが動き補償予測を使用してコーディングされることを発見するために、順方向に走査しなくてよいか、または、ビデオコーダが、サブPUの処理の間、その対応する参照ブロックが動き補償予測を使用してコーディングされたPUに遭遇するまで、それぞれのサブPUの動きパラメータを決定することを遅延させなくてよい。有利には、これは、複雑さおよびコーディング遅延を低減し得る。
[0042]図1は、本開示の技法を利用できる例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用する「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指すことがある。
[0043]図1に示すように、ビデオコーディングシステム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は符号化ビデオデータを生成する。したがって、ソースデバイス12はビデオ符号化デバイスまたはビデオ符号化装置と呼ばれることがある。宛先デバイス14はソースデバイス12によって生成された符号化ビデオデータを復号することができる。したがって、宛先デバイス14はビデオ復号デバイスまたはビデオ復号装置と呼ばれることがある。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
[0044]ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、車内コンピュータなどを含む、広範囲のデバイスを備え得る。
[0045]宛先デバイス14は、チャネル16を介してソースデバイス12から符号化ビデオデータを受信し得る。チャネル16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な1つまたは複数の媒体またはデバイスを備え得る。一例では、チャネル16は、ソースデバイス12が符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にする1つまたは複数の通信媒体を備えることができる。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの通信規格に従って符号化ビデオデータを変調し得、変調されたビデオデータを宛先デバイス14に送信し得る。1つまたは複数の通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などのワイヤレスおよび/または有線の通信媒体を含む場合がある。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)などのパケットベースネットワークの一部を形成する場合がある。1つまたは複数の通信媒体は、ソースデバイス12から宛先デバイス14への通信を容易にする、ルータ、スイッチ、基地局、または他の機器を含む場合がある。
[0046]別の例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶する記憶媒体を含み得る。この例では、宛先デバイス14は、たとえば、ディスクアクセスまたはカードアクセスを介して、記憶媒体にアクセスし得る。記憶媒体は、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化ビデオデータを記憶するための他の適切なデジタル記憶媒体など、種々のローカルにアクセスされるデータ記憶媒体を含み得る。
[0047]さらなる例では、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを記憶するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、宛先デバイス14は、ストリーミングまたはダウンロードを介して、ファイルサーバまたは他の中間ストレージデバイスに記憶された符号化ビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶することと、符号化ビデオデータを宛先デバイス14に送信することとが可能なタイプのサーバであり得る。例示的なファイルサーバとしては、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブが挙げられる。
[0048]宛先デバイス14は、インターネット接続などの標準的なデータ接続を通して符号化ビデオデータにアクセスし得る。データ接続の例示的なタイプとしては、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適な、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、デジタル加入者線(DSL)、ケーブルモデムなど)、または両方の組合せがあり得る。ファイルサーバからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0049]本開示の技法は、ワイヤレス適用例または設定に限定されない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのビデオデータの符号化、データ記憶媒体に記憶されたビデオデータの復号、または他の用途などの様々なマルチメディア用途をサポートするビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話などの用途をサポートするために、単方向または双方向のビデオ送信をサポートするように構成され得る。
[0050]図1は一例にすぎず、本開示の技法は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含むとは限らないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データがローカルメモリから取り出されること、ネットワークを介してストリーミングされることなどが行われる。ビデオ符号化デバイスはデータを符号化し、メモリに記憶し得、および/またはビデオ復号デバイスはメモリからデータを取り出し、復号し得る。多くの例では、符号化および復号は、互いに通信しないが、メモリにデータを符号化し、および/またはメモリからデータを取り出して復号するだけであるデバイスによって実行される。
[0051]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含む場合がある。ビデオソース18は、たとえばビデオカメラなどのビデオキャプチャデバイス、以前にキャプチャされたビデオデータを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオフィードインターフェース、および/またはビデオデータを生成するためのコンピュータグラフィックスシステム、あるいはビデオデータのそのようなソースの組合せを含み得る。
[0052]ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化することができる。いくつかの例では、ソースデバイス12は、出力インターフェース22を介して宛先デバイス14に符号化ビデオデータを直接送信する。他の例では、符号化ビデオデータはまた、復号および/または再生のための宛先デバイス14による後のアクセスのために記憶媒体またはファイルサーバ上に記憶され得る。
[0053]図1の例では、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの例では、入力インターフェース28は、受信機および/またはモデムを含む。入力インターフェース28は、チャネル16を介して符号化ビデオデータを受信し得る。ビデオデコーダ30は、符号化ビデオデータを復号し得る。ディスプレイデバイス32は、復号されたビデオデータを表示し得る。ディスプレイデバイス32は、宛先デバイス14と一体化され得るかまたはその外部にあり得る。ディスプレイデバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスを備える場合がある。
[0054]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ハードウェアなど、様々な好適な回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装される場合、デバイスは、適切な非一時的コンピュータ可読記憶媒体にソフトウェアの命令を記憶し得、1つまたは複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。(ハードウェア、ソフトウェア、ハードウェアとソフトウェアの組合せなどを含む)上記のいずれも、1つまたは複数のプロセッサであると見なされ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれる場合があり、両者のいずれかがそれぞれのデバイス内の複合エンコーダ/デコーダ(CODEC)の一部として組み込まれる場合がある。
[0055]本開示は、概して、ビデオエンコーダ20が、ある情報をビデオデコーダ30などの別のデバイスに「シグナリング」することに言及する場合がある。「シグナリング」という用語は、概して、圧縮ビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指し得る。そのような通信は、リアルタイムまたはほぼリアルタイムに起こり得る。代替的に、そのような通信は、符号化時に符号化されたビットストリーム内でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに行われる場合があるなど、ある時間期間にわたって行われ得、次いで、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出され得る。
[0056]いくつかの例では、ビデオエンコーダ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に従って動作し得る。
[0057]他の例では、ビデオエンコーダ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 10」と呼ばれる、HEVC規格のドラフトは、Brossら、「(FDIS&承認に関する)High Efficiency Video Coding(HEVC)text specification draft 10」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC:Joint Collaborative Team on Video Coding)、第12回会議、ジュネーブ、スイス、2013年1月(以下で、「HEVC Working Draft 10」または「HEVC base specification」)に記載されている。さらに、HEVC向けのスケーラブルビデオコーディング拡張を製作する作業が進行中である。HEVCのスケーラブルビデオコーディング拡張はSHEVCまたはSHVCと呼ばれることがある。
[0058]さらに、VCEGおよびMPEGの3Dビデオコーディング共同研究部会(JCT−3V)は、現在、HEVCのマルチビューコーディング拡張(すなわち、MV−HEVC)を開発している。Techら、「MV−HEVC Draft Text 4」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第4回会合:インチョン、韓国、2013年4月(以下、「MV−HEVC Test Model 4」)は、MV−HEVCのドラフトである。MV−HEVCでは、HEVCにおいてCUレベルまたはPUレベルで何のモジュールも再設計される必要がないように、高レベルシンタックス(HLS)変更のみが存在し得る。このことは、HEVCのために構成されたモジュールがMV−HEVCのために再使用されることを可能にし得る。言い換えれば、MV−HEVCは、高レベルのシンタックス変更だけを実現し、CU/PUレベルのシンタックス変更など、低レベルのシンタックス変更を実現しない。
[0059]さらに、VCEGおよびMPEGのJCT−3Vは、HEVCに基づく3DV規格を開発中であり、規格化作業の一部は、HEVCに基づくマルチビュービデオコーデック(MV−HEVC)、およびHEVCに基づく3Dビデオコーディング(3D−HEVC)についての別の一部の規格化を含む。3D−HEVCでは、テクスチャビューと深度ビューの両方に対する、CUおよび/またはPUレベルのコーディングツールを含む新たなコーディングツールが、含まれサポートされ得る。2013年12月17日の時点で、3D−HEVC用ソフトウェア(たとえば、3D−HTM)が、以下のリンクからダウンロード可能である。[3D−HTMバージョン7.0]:https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM−7.0/
[0060]参照ソフトウェア記述、ならびに3D−HEVCの作業草案は次のように利用可能である。2013年12月17日付の、Gerhard Techら、「3D−HEVC Test Model 4」、JCT3V−D1005_spec_v1、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第4回会合:インチョン、韓国、2013年4月(以下、「3D−HEVC Test Model 4」)は以下のリンクからダウンロード可能である。http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/2_Shanghai/wg11/JCT3V−B1005−v1.zip。2013年12月17日付の、Techら、「3D−HEVC Draft Text 3」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第3回会合:ジュネーブ、スイス、2013年1月、文書番号JCT3V−C1005(以下、「3D−HEVC Test Model 3」)が、http://phenix.it−sudparis.eu/jct2/doc_end_user/current_document.php?id=706から利用可能から利用可能であり、3D−HEVCの参照ソフトウェア記述の別のバージョンである。3D−HEVCは、Techら、「3D−HEVC Draft Text 2」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第6回会合:ジュネーブ、スイス、2013年10月25日〜11月1日、文書JCT3V−F1001−v2(以下、「3D−HEVC Draft Test 2」)にも記述されている。ビデオエンコーダ20およびビデオデコーダ30は、SHEVC、MV−HEVC、および/または3D−HEVCに従って動作し得る。
[0061]HEVCおよび他のビデオコーディング仕様では、ビデオシーケンスは一般に一連のピクチャを含む。ピクチャは「フレーム」と呼ばれることもある。ピクチャは、SL、SCb、およびSCrと示される3つのサンプルアレイを含み得る。SLは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。SCbは、Cbクロミナンスサンプルの2次元アレイである。SCrは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれることもある。他の例では、ピクチャは、モノクロームであり得、ルーマサンプルのアレイのみを含み得る。
[0062]ビデオエンコーダ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を含み得る。
[0063]本開示は、1つまたは複数のサンプルブロックのサンプルをコーディングするのに使われる1つまたは複数のサンプルブロックおよびシンタックス構造を指すのに、「ビデオユニット」または「ビデオブロック」または「ブロック」という用語を使う場合がある。例示的なタイプのビデオユニットは、CTU、CU、PU、変換ユニット(TU)、マクロブロック、マクロブロック区分などを含み得る。いくつかのコンテキストでは、PUの説明は、マクロブロックまたはマクロブロック区分の説明と交換され得る。
[0064]コード化CTUを生成するために、ビデオエンコーダ20は、CTUのコーディングツリーブロックに対して4分木区分を再帰的に実行して、コーディングツリーブロックをコーディングブロックに分割し得、したがって「コーディングツリーユニット」という名称がある。コーディングブロックは、サンプルのN×Nブロックである。CUは、ルーマサンプルアレイとCbサンプルアレイとCrサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、そのピクチャのクロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備え得る。
[0065]ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分してもよい。予測ブロックは、同じ予測がそれに適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUの予測ユニット(PU)は、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備え得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、PUは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備え得る。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成してもよい。
[0066]ビデオエンコーダ20は、イントラ予測またはインター予測を使用して、PUのための予測ブロックを生成し得る。ビデオエンコーダ20がイントラ予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャの復号サンプルに基づいてPUの予測ブロックを生成し得る。各PUのルーマ成分に関するHEVCのいくつかのバージョンでは、図2に示すように、(2から34までインデックス付けされた)33個の角度予測モードと、(1とインデックス付けされた)DCモードと、(0とインデックス付けされた)平面モードとを有するイントラ予測方法が利用される。図2は、HEVCにおける例示的なイントラ予測モード方向を示す概念図である。
[0067]ビデオエンコーダ20がインター予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられたピクチャ以外の1つまたは複数のピクチャの復号サンプルに基づいて、PUの予測ブロックを生成し得る。インター予測は、単方向インター予測(すなわち、単予測(uni-prediction))でも双方向インター予測(すなわち、双予測(bi-prediction))でもよい。インター予測を実行するために、ビデオエンコーダ20は、現在スライスについての第1の参照ピクチャリスト(RefPicList0)を生成すればよく、場合によっては、現在スライスについての第2の参照ピクチャリスト(RefPicList1)を生成してもよい。参照ピクチャリストの各々は、1つまたは複数の参照ピクチャを含み得る。単予測を使うとき、ビデオエンコーダ20は、RefPicList0およびRefPicList1のいずれかまたは両方において参照ピクチャを探索して、参照ピクチャ内の参照ロケーションを決定すればよい。さらに、単予測を使うとき、ビデオエンコーダ20は、参照ロケーションに対応するサンプルに少なくとも部分的に基づいて、PUのための予測サンプルブロックを生成すればよい。さらに、単予測を使うとき、ビデオエンコーダ20は、PUの予測ブロックと参照ロケーションとの間の空間変位を示す単一の動きベクトルを生成すればよい。PUの予測ブロックと参照ロケーションとの間の空間変位を示すために、動きベクトルは、PUの予測ブロックと参照ロケーションとの間の水平変位を指定する水平成分を含み得、PUの予測ブロックと参照ロケーションとの間の垂直変位を指定する垂直成分を含み得る。
[0068]PUを符号化するのに双予測を使うとき、ビデオエンコーダ20は、RefPicList0中の参照ピクチャ中の第1の参照ロケーションと、RefPicList1中の参照ピクチャ中の第2の参照ロケーションとを決定すればよい。次いで、ビデオエンコーダ20は、PUのための予測ブロックを、第1および第2の参照ロケーションに対応するサンプルに少なくとも部分的に基づいて生成し得る。さらに、PUを符号化するのに双予測を使うとき、ビデオエンコーダ20は、PUのサンプルブロックと第1の参照ロケーションとの間の空間変位を示す第1の動きベクトルと、PUの予測ブロックと第2の参照ロケーションとの間の空間変位を示す第2の動きベクトルとを生成すればよい。
[0069]一般に、Bピクチャの第1の参照ピクチャリストまたは第2の参照ピクチャリスト(たとえば、RefPicList0またはRefPicList1)に関する参照ピクチャリスト構築は、2つのステップ、すなわち参照ピクチャリストの初期化と、参照ピクチャリストの並べ替え(修正)とを含む。参照ピクチャリスト初期化は、(復号ピクチャバッファ(DPB)としても知られる)参照ピクチャメモリ中の参照ピクチャをPOC(ピクチャの表示順で整列されるピクチャ順序カウント)値の順序に基づいてリストに入れる明示的機構である。参照ピクチャリスト並べ替え機構は、参照ピクチャリスト初期化中にリストに入れられたピクチャの位置を任意の新しい位置に修正すること、または参照ピクチャメモリ中の任意の参照ピクチャを、そのピクチャが初期化リストに属さなくても、任意の位置に入れることができる。参照ピクチャリスト並べ替え(修正)後のいくつかのピクチャは、リスト中のはるかに離れた位置に入れられる場合がある。ただし、ピクチャの位置が、リストのアクティブ参照ピクチャの数を超える場合、ピクチャは、最終的な参照ピクチャリストのエントリとは見なされない。各リストに関するアクティブな参照ピクチャの数は、スライスヘッダ内でシグナリングされ得る。参照ピクチャリスト(すなわち、利用可能な場合、RefPicList0およびRefPicList1)が構築された後、参照ピクチャリストに対する参照インデックスは、参照ピクチャリストに含まれる任意の参照ピクチャを識別するために使用され得る。
[0070]ビデオエンコーダ20がCUの1つまたは複数のPUについての予測ブロック(たとえば、ルーマ、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コーディングブロック中の対応するサンプルとの間の差分を示し得る。
[0071]さらに、ビデオエンコーダ20は、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は、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備え得る。
[0072]ビデオエンコーダ20は、TUについての係数ブロックを生成するために、TUの変換ブロックに1回または複数回の変換を適用することができる。たとえば、ビデオエンコーダ20は、TUについてのルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1回または複数回の変換を適用することができる。係数ブロックは変換係数の2次元ブロックであってよい。変換係数はスカラー量であり得る。ビデオエンコーダ20はTUのCb変換ブロックに1回または複数の変換を適用してTUのCb係数ブロックを生成してよい。ビデオエンコーダ20はTUのCr変換ブロックに1回または複数の変換を適用してTUのCr係数ブロックを生成してよい。
[0073]ビデオエンコーダ20は、係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、係数ブロックを量子化してもよい。量子化は、一般に、変換係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を実現する処理を指す。ビデオエンコーダ20が係数ブロックを量子化した後に、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素をエントロピー符号化し得る。たとえば、ビデオエンコーダ20は、量子化変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC:Context-Adaptive Binary Arithmetic Coding)を実行し得る。
[0074]ビデオエンコーダ20は、コード化ピクチャと関連付けられたデータの表現を形成するビットのシーケンスを含むビットストリームを出力し得る。ビットストリームは、一連のネットワークアブストラクションレイヤ(NAL)ユニットを備え得る。NALユニットは、NALユニット中のデータのタイプの指示と、必要に応じてエミュレーション防止ビットが点在するローバイトシーケンスペイロード(RBSP:raw byte sequence payload)の形態でそのデータを含んでいるバイトとを含んでいるシンタックス構造である。NALユニットの各々は、NALユニットヘッダを含み、RBSPをカプセル化する。NALユニットヘッダは、NALユニットタイプコードを含むシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの例では、RBSPはゼロビットを含む。
[0075]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。 たとえば、異なるタイプのNALユニットが、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、コード化スライス、補足エンハンスメント情報(SEI)などについての異なるRBSPをカプセル化することができる。ビデオコーディングデータに対するRBSP(パラメータセットおよびSEIメッセージに対するRBSPに対立するものとして)をカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれることがある。
[0076]HEVCでは、SPSは、コード化ビデオシーケンス(CVS)のすべてのスライスに該当する情報を含み得る。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アクセスユニットとからなり得る、アクセスユニットのシーケンスを備え得る。HEVCでは、アクセスユニットは、復号順序が連続しており、ちょうど1つのコード化ピクチャを含む、NALユニットのセットであり得る。コード化ピクチャのコード化スライスNALユニットに加えて、アクセスユニットはまた、コード化ピクチャのスライスを含まない他のNALユニットを含み得る。いくつかの例では、アクセスユニットの復号により、復号ピクチャが常に生じ得る。
[0077]VPSは、0個以上のCVS全体に適用されるシンタックス要素を備えるシンタックス構造である。SPSは、0個以上のCVS全体に適用されるシンタックス要素を備えるシンタックス構造でもある。SPSは、SPSがアクティブであるとき、アクティブであるVPSを識別するシンタックス要素を含み得る。したがって、VPSのシンタックス要素は、SPSのシンタックス要素よりも一般的に適用可能であり得る。PPSは、0個以上のコード化ピクチャに適用されるシンタックス要素を備えるシンタックス構造である。PPSは、PPSがアクティブであるとき、アクティブであるSPSを識別するシンタックス要素を含み得る。スライスのスライスヘッダは、スライスがコーディングされるときにアクティブであるPPSを示すシンタックス要素を含み得る。
[0078]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信することができる。さらに、ビデオデコーダ30は、ビットストリームをパースして、ビットストリームからシンタックス要素を取得し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、PUの動きベクトルを使用して現在CUのPUのための予測ブロックを決定し得る。さらに、ビデオデコーダ30は、現在CUのTUに関連付けられた係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在CUのTUに関連付けられた変換ブロックを再構成するために係数ブロックに対して逆変換を実行し得る。ビデオデコーダ30は、現在CUのPUのための予測ブロックのサンプルを現在CUのTUの変換ブロックの対応するサンプルに加算することによって、現在CUのコーディングブロックを再構成し得る。ピクチャの各CUのためのコーディングブロックを再構成することによって、ビデオデコーダ30はピクチャを再構成し得る。
[0079]いくつかの例では、ビデオエンコーダ20は、マージモードまたは高度動きベクトル予測(AMVP)モードを使用して、PUの動き情報をシグナリングすることができる。たとえば、HEVCでは、動きパラメータの予測のために2つのモードがあり、一方はマージモードであり、他方はAMVPである。動き予測は、1つまたは複数の他のブロックの動き情報に基づく、ブロック(たとえば、PU)の動き情報の決定を備え得る。PUの(本明細書で、動きパラメータとも呼ばれる)動き情報は、PUの動きベクトルと、PUの参照インデックスとを含み得る。
[0080]ビデオエンコーダ20がマージモードを使用して現在PUの動き情報をシグナリングするとき、ビデオエンコーダ20は、マージ候補リストを生成し得る。言い換えると、ビデオエンコーダ20は、動きベクトル予測子リスト構築プロセスを実行することができる。マージ候補リストは、現在PUに空間的または時間的に隣接するPUの動き情報を示すマージ候補のセットを含む。すなわち、マージモードでは、動きパラメータ(たとえば、参照インデックス、動きベクトルなど)の候補リストが構築され、候補は、空間的隣接ブロックおよび時間的隣接ブロックからであり得る。
[0081]さらに、マージモードでは、ビデオエンコーダ20は、マージ候補リストからマージ候補を選択することができ、選択されたマージ候補によって示される動き情報を、現在PUの動き情報として使うことができる。ビデオエンコーダ20は、選択されたマージ候補のマージ候補リスト中の位置をシグナリングし得る。たとえば、ビデオエンコーダ20は、インデックスを候補リスト中に送信することによって、選択された動きベクトルパラメータをシグナリングすることができる。ビデオデコーダ30は、ビットストリームから、候補リストの中へのインデックス(すなわち、候補リストインデックス)を取得することができる。さらに、ビデオデコーダ30は、同じマージ候補リストを生成することができ、選択されたマージ候補の位置の表示に基づいて、選択されたマージ候補を決定することができる。ビデオデコーダ30は、次いで、選択されたマージ候補の動き情報を、現在PUのための予測ブロックを生成するのに使い得る。つまり、ビデオデコーダ30は、候補リストインデックスに少なくとも部分的に基づいて、候補リスト中の選択された候補を決定することができ、ここで、選択された候補は、現在PUについての動きベクトルを指定する。このように、デコーダ側では、インデックスが復号されると、インデックスが指す対応するブロックのすべての動きパラメータは、現在PUによって継承され得る。
[0082]スキップモードはマージモードと同様である。スキップモードでは、ビデオエンコーダ20およびビデオデコーダ30は、マージモードにおいてビデオエンコーダ20およびビデオデコーダ30がマージ候補リストを使うのと同じようにマージ候補リストを生成し、使うことができる。ただし、ビデオエンコーダ20がスキップモードを使って現在PUの動き情報をシグナリングするとき、ビデオエンコーダ20は、現在PUについてのどの残差データもシグナリングしない。したがって、ビデオデコーダ30は、残差データを使用せずに、マージ候補リスト中の選択された候補の動き情報によって示される参照ブロックに基づいて、PUのための予測ブロックを決定することができる。
[0083]AMVPモードは、ビデオエンコーダ20が候補リストを生成することができ、候補リストから候補を選択することができるという点で、マージモードと同様である。ただし、ビデオエンコーダ20がAMVPモードを使って現在PUのRefPicListX動き情報をシグナリングするとき、ビデオエンコーダ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とを表すデータを含み得る。
[0084]さらに、AMVPモードを使って現在PUの動き情報がシグナリングされると、ビデオデコーダ30は、ビットストリームから、現在PUについてのMVDと、MVPフラグとを取得することができる。ビデオデコーダ30は、同じAMVP候補リストを生成することができ、MVPフラグに基づいて、選択されたAMVP候補を決定することができる。ビデオデコーダ30は、選択されたAMVP候補によって示される動きベクトルにMVDを加算することによって、現在PUの動きベクトルを回復することができる。つまり、ビデオデコーダ30は、選択されたAMVP候補によって示される動きベクトルおよびMVDに基づいて、現在PUの動きベクトルを決定することができる。ビデオデコーダ30は、次いで、回復された1つの動きベクトルまたは複数の動きベクトルを、現在PU用の予測ブロックを生成するのに使い得る。
[0085]ビデオデコーダ30が現在PUについてのAMVP候補リストを生成するとき、ビデオデコーダ30は、現在PUに空間的に隣接するロケーションをカバーするPU(すなわち、空間的隣接PU)の動き情報に基づいて、1つまたは複数のAMVP候補を導出することができる。図3は、現在ブロック40に対して、例示的な空間的隣接PUを示す概念図である。図3の例では、空間的隣接PUは、A0、A1、B0、B1、およびB2として示されるロケーションをカバーするPUであり得る。PUの予測ブロックがあるロケーションを含むとき、PUはそのロケーションをカバーし得る。
[0086]現在PUに時間的に隣接するPU(すなわち、現在PUとは異なる時間インスタンス中にあるPU)の動き情報に基づくマージ候補リストまたはAMVP候補リスト中の候補は、時間的動きベクトル予測子と呼ばれ得る。時間的動きベクトル予測の使用は、時間的動きベクトル予測(TMVP)と呼ばれる場合がある。TMVPは、HEVCのコーディング効率を向上させるために使用され得、他のコーディングツールとは異なり、TMVPは、復号ピクチャバッファ中、より具体的には、参照ピクチャリスト中のフレームの動きベクトルにアクセスする必要があり得る。
[0087]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がスライスヘッダ中でシグナリングされる。
[0088]時間的動きベクトル予測子を決定するために、ビデオコーダは、現在PUと同じ場所にあるPUを含む参照ピクチャを最初に識別することができる。言い換えると、ビデオコーダはいわゆるコロケートピクチャを識別することができる。現在ピクチャの現在スライスがBスライス(すなわち、双方向インター予測されたPUを含むことが許容されるスライス)である場合、ビデオエンコーダ20は、コロケートピクチャがRefPicList0からのものであるかRefPicList1からのものであるかを示すシンタックス要素(たとえば、collocated_from_l0_flag)を、スライスヘッダ中でシグナリングすることができる。言い換えると、TMVPが現在スライスに対して有効にされ、現在スライスがBスライス(たとえば、双方向インター予測されたPUを含むことが許容されるスライス)であるとき、ビデオエンコーダ20は、コロケートピクチャがRefPicList0の中にあるかRefPicList1の中にあるかを示すために、シンタックス要素(たとえば、collocated_from_l0_flag)を、スライスヘッダ中でシグナリングすることができる。
[0089]スライスヘッダ内のシンタックス要素(たとえば、collocated_ref_idx)は、識別された参照ピクチャリスト中のコロケートピクチャを示し得る。したがって、ビデオデコーダ30がコロケートピクチャを含む参照ピクチャリストを識別した後、ビデオデコーダ30は、識別された参照ピクチャリスト中のコロケートピクチャを識別するために、スライスヘッダ中でシグナリングされ得るcollocated_ref_idxを使用することができる。ビデオコーダは、コロケートピクチャをチェックすることによって、コロケートPUを識別し得る。時間的動きベクトル予測子は、右下のPUコロケートPUの動き情報と、コロケートPUの中心PUの動き情報のいずれかを示し得る。
[0090]マージモードまたはAMVPモードのための動き候補を生成するために上記のプロセスによって識別された動きベクトル(すなわち、時間的動きベクトル予測子の動きベクトル)が使用されるとき、ビデオコーダは、(POC値によって反映される)時間的ロケーションに基づいて、動きベクトルをスケーリングすることができる。たとえば、ビデオコーダは、現在ピクチャのPOC値と参照ピクチャのPOC値との差が小さいときよりも、現在ピクチャのPOC値と参照ピクチャのPOC値との差が大きいときに、動きベクトルの大きさをより大きな量増大させることができる。
[0091]時間的動きベクトル予測子から導出される時間マージ候補に対するすべてのあり得る参照ピクチャリストの目標参照インデックスは、常に0に設定され得る。しかしながら、AMVPの場合、すべてのあり得る参照ピクチャの目標参照インデックスは、復号参照インデックスに等しいように設定され得る。言い換えれば、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に等しいとき、復号順序においてその特定のピクチャの前にあるピクチャからの動きベクトルは、その特定のピクチャ、または復号順序でその特定のピクチャの後にあるピクチャの復号において、時間的動きベクトル予測子として使用されない。
[0092]本開示の技法は、MV−HEVCと3D−HEVCとを含む、マルチビューコーディングおよび/または3DVの規格ならびに仕様に潜在的に適用可能である。MV−HEVCおよび3D−HEVCで定義されるようなマルチビューコーディングでは、異なる視点からの同じシーンの複数のビューが存在し得る。マルチビューコーディングのコンテキストでは、同じ時間インスタンスに対応するピクチャのセットを指すために「アクセスユニット」という用語が使用され得る。場合によっては、マルチビューコーディングのコンテキストでは、アクセスユニットは、指定された分類規則に従って互いに関連付けられ、復号順序で連続し、同じ出力時間に関連付けられたすべてのコード化ピクチャのVCL NALユニットと、それらの関連付けられた非VCL NALユニットとを含むNALユニットのセットであり得る。したがって、ビデオデータは、時間とともに生じる一連のアクセスユニットとして概念化され得る。
[0093]3D−HEVCで定義されるような3DVコーディングでは、「ビュー成分」は、単一のアクセスユニット中のビューのコード化表現であり得る。ビュー成分は、深度ビューコンポーネントとテクスチャビューコンポーネントとを含み得る。深度ビューコンポーネントは、単一のアクセスユニット中のビューの深度のコード化表現であり得る。テクスチャビューコンポーネントは、単一のアクセスユニット中のビューのテクスチャのコード化表現であり得る。本開示では、「ビュー」は、同じビュー識別子に関連付けられたビュー成分のシーケンスを指すことがある。
[0094]ビューのピクチャのセット内のテクスチャビューコンポーネントおよび深度ビューコンポーネントは、互いに対応するものと見なされ得る。たとえば、ビューのピクチャのセット内のテクスチャビューコンポーネントは、そのビューのピクチャのセット内の深度ビューコンポーネントに対応すると見なされ、その逆も同様である(すなわち、深度ビューコンポーネントはセット中のそのテクスチャビューコンポーネントに対応し、その逆も同様である)。本開示で使用する、深度ビューコンポーネントに対応するテクスチャビューコンポーネントは、単一のアクセスユニットの同じビューの一部であるテクスチャビューコンポーネントおよび深度ビューコンポーネントと見なされ得る。
[0095]テクスチャビューコンポーネントは、表示される実際の画像コンテンツを含む。たとえば、テクスチャビューコンポーネントは、ルーマ(Y)成分と、クロマ(CbおよびCr)成分とを含み得る。深度ビューコンポーネントは、その対応するテクスチャビューコンポーネント中のピクセルの相対深度を示し得る。一例として、深度ビューコンポーネントは、ルーマ値のみを含むグレースケール画像である。言い換えると、深度ビューコンポーネントは、任意の画像コンテンツを伝達するのではなく、テクスチャビューコンポーネント中のピクセルの相対深度の測定値を提供することができる。
[0096]たとえば、深度ビューコンポーネント中の純白のピクセルは、対応するテクスチャビューコンポーネント中のその対応する1つまたは複数のピクセルが閲覧者から見てより近いことを示し、深度ビューコンポーネント中の純黒のピクセルは、対応するテクスチャビューコンポーネント中のその対応する1つまたは複数のピクセルが閲覧者から見てより遠いことを示す。黒と白との中間にあるグレーの様々な陰影は、異なる深度レベルを示す。たとえば、深度ビューコンポーネント中の濃いグレーのピクセルは、テクスチャビューコンポーネント中のその対応するピクセルが、深度ビューコンポーネント中のより薄いグレーのピクセルよりも遠いことを示す。ピクセルの深度を識別するためにグレースケールのみが必要とされるので、深度ビューコンポーネント用の色値がいかなる目的も果たし得ないことから、深度ビューコンポーネントはクロマ成分を含む必要がない。
[0097]深度を識別するためにルーマ値(たとえば、強度値)のみを使用する深度ビューコンポーネントが説明のために提供され、限定するものと見なされるべきではない。他の例では、テクスチャビューコンポーネント中のピクセルの相対深度を示すために任意の技法が利用される場合がある。
[0098]マルチビューコーディングでは、ビデオデコーダ(たとえば、ビデオデコーダ30)が、あるビュー中のピクチャを任意の他のビュー中のピクチャを参照せずに復号することができる場合、そのビューは「ベースビュー」と呼ばれることがある。非ベースビューのうちの1つの中のピクチャをコーディングするとき、ピクチャが、異なるビュー中にあるがビデオコーダが現在コーディングしているピクチャと同じ時間インスタンス(すなわち、アクセスユニット)内にある場合、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、参照ピクチャリスト(たとえば、RefPicList0またはRefPicList1)にピクチャを追加し得る。他のインター予測参照ピクチャと同様に、ビデオコーダは、参照ピクチャリストの任意の位置にビュー間予測参照ピクチャを挿入し得る。
[0099]マルチビューコーディングは、ビュー間予測をサポートする。ビュー間予測は、H.264/AVC、HEVC、または他のビデオコーディング仕様において使用されるインター予測と同様であり、同じシンタックス要素を使用し得る。しかしながら、ビデオコーダが(マクロブロック、CU、またはPUなどの)現在ブロックに対してビュー間予測を実行するとき、ビデオエンコーダ20は、参照ピクチャとして、その現在ブロックと同じアクセスユニット中にあるが、異なるビュー中にあるピクチャを使用することができる。言い換えると、マルチビューコーディングにおいて、ビュー間予測は、ビューの間の相関を取り除くために、同じアクセスユニット中(すなわち、同じ時間インスタンス中)の異なるビュー中でキャプチャされたピクチャの間で実行される。対照的に、従来のインター予測は、参照ピクチャとして異なるアクセスユニット中のピクチャのみを使用する。
[0100]図4は、例示的なマルチビュー復号順序を示す概念図である。マルチビュー復号順序はビットストリーム順序であり得る。図4の例では、各正方形がビュー成分に対応する。正方形の列は、アクセスユニットに対応する。各アクセスユニットは、時間インスタンスのすべてのビューのコード化ピクチャを含むように定義され得る。正方形の行は、ビューに対応する。図4の例では、アクセスユニットがT0〜T8と標示され、ビューがS0〜S7と標示される。アクセスユニットの各ビュー成分は次のアクセスユニットのビュー成分の前に復号されるので、図4の復号順序はタイムファーストコーディングと呼ばれることがある。アクセスユニットの復号順序は、ビューの出力または表示順序と同一ではないこともある。
[0101]図5は、マルチビューコーディングのための例示的な予測構造を示す概念図である。図5のマルチビュー予測構造は、時間的予測とビュー間予測とを含む。図5の例では、各正方形がビュー成分に対応する。図5の例では、アクセスユニットがT0〜T11と標示され、ビューがS0〜S7と標示される。「I」と標示される正方形は、イントラ予測されたビュー成分である。「P」と標示される正方形は、単方向インター予測されたビュー成分である。「B」および「b」と標示される正方形は、双方向インター予測されたビュー成分である。「b」と標示される正方形は、「B」と標示される正方形を参照ピクチャとして使用し得る。第1の正方形から第2の正方形を指す矢印は、第1の正方形が、インター予測において、第2の正方形のための参照ピクチャとして利用可能であることを示す。図4の垂直の矢印で示すように、同じアクセスユニットの異なるビュー内のビュー成分は、参照ピクチャとして利用可能であり得る。このように、図5は、マルチビュービデオコーディング用の典型的なMVC予測(各ビュー内のインターピクチャ予測とインタービュー予測の両方を含む)構造を示し、予測参照のために矢印の始点のオブジェクトを使用して矢印の終点のオブジェクトへの矢印によって予測が示される。アクセスユニットの1つのビュー成分を同じアクセスユニットの別のビュー成分に対する参照ピクチャとして使用することは、ビュー間予測と呼ばれることがある。
[0102]H.264/AVCのMVC拡張のようなマルチビューコーディングでは、ビュー間予測は視差動き補償によってサポートされ、視差動き補償は、H.264/AVC動き補償のシンタックスを使用するが、異なるビュー中のピクチャが参照ピクチャとして使用されることが可能になる。2つのビューのコーディングも、H.264/AVCのMVC拡張によってサポートされ得る。H.264/AVCのMVC拡張の利点の1つは、MVCエンコーダが3Dビデオ入力として3つ以上のビューを取り込むことができ、MVCデコーダがそのようなマルチビュー表現を復号することができることである。したがって、MVCデコーダをもつ任意のレンダラは、3つ以上のビューをもつ3Dビデオコンテンツを予想し得る。
[0103]MV−HEVCおよび3D−HEVCで定義されるマルチビュービデオコーディングなど、マルチビュービデオコーディングのコンテキストでは、2種類の動きベクトルが存在する。動きベクトルの1つの種類は、時間参照ピクチャを指す通常動きベクトルである。通常時間的動きベクトルに対応するインター予測のタイプは、「動き補償予測」または「MCP」と呼ばれ得る。ビュー間予測参照ピクチャが動き補償のために使用されるとき、対応する動きベクトルは「視差動きベクトル」と呼ばれる。言い換えると、視差動きベクトルは、異なるビュー中のピクチャ(すなわち、ビュー間参照ピクチャ)を指す。視差動きベクトルに対応するインター予測のタイプは、「視差補償予測」または「DCP」と呼ばれ得る。
[0104]3D−HEVCは、ビュー間動き予測とビュー間残差予測とを使用して、コーディング効率を改善することができる。言い換えれば、コーディング効率をさらに改善するために、2つの新規の技術、すなわち、「ビュー間動き予測」および「ビュー間残差予測」が、参照ソフトウェアに採用されてきている。ビュー間動き予測では、ビデオコーダは、現在PUとは異なるビューの中のPUの動き情報に基づいて、現在PUの動き情報を決定する(すなわち、予測する)ことができる。ビュー間残差予測では、ビデオコーダが、現在CUとは異なるビュー中の残差データに基づいて、現在CUの残差ブロックを決定することができる。
[0105]ビュー間動き予測とビュー間残差予測とを可能にするために、ビデオコーダは、ブロック(たとえば、PU、CUなど)のための視差ベクトルを決定することができる。言い換えれば、これらの2つのコーディングツールを有効にするために、第1のステップは視差ベクトルを導出する。概して、視差ベクトルは、2つのビューの間の変位を推定するものとして使われる。ビデオコーダは、ビュー間動きまたは残差予測のために別のビュー中の参照ブロックを位置特定するのに、ブロックについての視差ベクトルを使ってもよく、ビデオコーダは、視差ベクトルを、ビュー間動き予測のために視差動きベクトルにコンバートしてもよい。すなわち、視差ベクトルは、ビュー間動き/残差予測のために他のビュー中の対応するブロックを位置特定するために使用され得るか、またはビュー間動き予測のために視差動きベクトルに変換され得る。
[0106]いくつかの例では、ビデオコーダは、PU(すなわち、現在PU)についての視差ベクトルを導出するために、隣接ブロックベースの視差ベクトル(NBDV:Neighboring Blocks Based Disparity Vector)導出の方法を使用することができる。たとえば、現在PUについての視差ベクトルを導出するために、NBDV導出と呼ばれるプロセスが、3D−HEVCに関するテストモデル(すなわち、3D−HTM)において使用され得る。
[0107]NBDV導出プロセスは、現在ブロックについての視差ベクトルを導出するのに、空間的および時間的に隣接するブロックからの視差動きベクトルを使う。隣接ブロック(たとえば、現在ブロックに空間的または時間的に隣接するブロック)は、ビデオコーディングにおいて、ほぼ同じ動きと視差情報とを共有する見込みがあるので、現在ブロックは、隣接ブロック中の動きベクトル情報を、現在ブロックの視差ベクトルの予測子として使ってよい。したがって、NBDV導出プロセスは、異なるビュー中の視差ベクトルを推定するために隣接する視差情報を使用する。
[0108]NBDV導出プロセスでは、ビデオコーダは、固定されたチェック順序で、空間的隣接ブロックおよび時間的隣接ブロックの動きベクトルをチェックすることができる。ビデオコーダが空間的隣接ブロックまたは時間的隣接ブロックの動きベクトルをチェックするとき、ビデオコーダは、動きベクトルが視差動きベクトルかどうかを決定することができる。ピクチャのPUの視差動きベクトルは、ピクチャのビュー間参照ピクチャ中のロケーションを指す動きベクトルである。ピクチャのビュー間参照ピクチャは、ピクチャと同じアクセスユニット中にあるが、異なるビュー中にあるピクチャであり得る。ビデオコーダが視差動きベクトルまたは暗黙視差ベクトル(IDV)を識別するとき、ビデオコーダはチェックプロセスを終了することができる。IDVは、ビュー間予測を使用してコーディングされた空間的または時間的隣接PUの視差ベクトルであり得る。IDVは、PUがビュー間動きベクトル予測を採用するとき、すなわち、AMVPまたはマージモードのための候補が視差ベクトルの助けにより他のビュー中の参照ブロックから導出されるときに生成され得る。IDVは、視差ベクトル導出の目的で、PUに記憶され得る。さらに、ビデオコーダが視差動きベクトルまたはIDVを特定するとき、ビデオコーダは、特定された視差動きベクトルまたはIDVを返すことができる。
[0109]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を視差ベクトルに変換することができ、ビュー間動き予測およびビュー間残差予測のために視差ベクトルを使用することができる。
[0110]3D−HEVCのいくつかの設計では、ビデオコーダがNBDV導出プロセスを実行するとき、ビデオコーダは時間的隣接ブロック中の視差動きベクトル、空間的隣接ブロック中の視差動きベクトル、次いで、IDVの順にチェックする。ビデオコーダが現在ブロックのための視差動きベクトルを発見すると、ビデオコーダは、NBDV導出プロセスを終了することができる。したがって、視差動きベクトルまたはIDVが識別されると、チェックプロセスは終了され、識別された視差動きベクトルは返されて、ビュー間動き予測およびビュー間残差予測において使用されることになる視差ベクトルに変換される。ビデオコーダがNBDV導出プロセスを実行することによって現在ブロックについての視差ベクトルを決定することが不可能であるとき(すなわち、視差動きベクトル、またはNBDVプロセスの間に発見されるIDVが存在しないとき)、ビデオコーダは、NBDVを利用不可能と標識することができる。
[0111]いくつかの例では、ビデオコーダがNBDV導出プロセスを実行することによって現在PUのための視差ベクトルを導出することが不可能である場合(すなわち、視差ベクトルが発見されない場合)、ビデオコーダは、現在PUのための視差ベクトルとして0視差ベクトルを使用することができる。0視差ベクトルは、0に等しい水平成分と垂直成分の両方を有する視差ベクトルである。したがって、NBDV導出プロセスが利用不可能な結果を返すときであっても、視差ベクトルを必要とするビデオコーダの他のコーディングプロセスは、現在ブロックのために0視差ベクトルを使用することができる。
[0112]いくつかの例では、ビデオコーダがNBDV導出プロセスを実行することによって現在PUのための視差ベクトルを導出することが不可能である場合、ビデオコーダは、現在PUに対するビュー間残差予測を無効にすることができる。しかしながら、ビデオコーダがNBDV導出プロセスを実行することによって現在PUのための視差ベクトルを導出することが可能かどうかに関係なく、ビデオコーダは、現在PUに対してビュー間動き予測を使用することができる。すなわち、すべての事前に定義された隣接ブロックをチェックした後で視差ベクトルが発見されない場合、ビュー間動き予測のために0視差ベクトルが使用され得るが、ビュー間残差予測は対応するPUに対して無効にされ得る。
[0113]上述したように、ビデオコーダは、現在PUについての視差ベクトルを決定するプロセスの一環として空間的隣接PUをチェックすることができる。いくつかの例では、ビデオコーダは以下の空間的隣接ブロック、すなわち、左下の空間的隣接ブロックと、左の空間的隣接ブロックと、右上の空間的隣接ブロックと、上の空間的隣接ブロックと、左上の空間的隣接ブロックとをチェックする。たとえば、NBDV導出プロセスのいくつかのバージョンでは、視差ベクトル導出のために5個の空間的隣接ブロックが使用される。5個の空間的隣接ブロックは、図3に示すように、位置A0、A1、B0、B1、およびB2をそれぞれカバーし得る。ビデオコーダは、5個の空間的隣接ブロックをA1、B1、B0、A0、およびB2の順にチェックし得る。HEVC用のマージモードで同じ5個の空間的隣接ブロックが使用され得る。したがって、いくつかの例では、何の追加のメモリアクセスも必要とされない。空間的隣接ブロックの1つが視差動きベクトルを有する場合、ビデオコーダは確認処理を終了することができ、現在PUについての最終的な視差ベクトルとして視差動きベクトルを使用することができる。言い換えれば、それらのうちの1つが視差動きベクトルを使用する場合、チェックプロセスは終了され、最終的な視差ベクトルとして、対応する視差動きベクトルが使用されることになる。
[0114]さらに、上述したように、ビデオコーダは、現在PUについての視差ベクトルを決定するプロセスの一環として時間的隣接PUをチェックすることができる。時間的隣接ブロック(たとえば、PU)をチェックする場合、候補ピクチャリストの構築プロセスが最初に実行され得る。いくつかの例では、ビデオコーダは、視差動きベクトルについての現在ビューから最大で2つの参照ピクチャをチェックすることができる。第1の参照ピクチャはコロケートピクチャであり得る。したがって、コロケートピクチャ(すなわち、コロケート参照ピクチャ)は、最初に候補ピクチャリスト中に挿入され得る。第2の候補ピクチャは、ランダムアクセスピクチャ、または、最小POC値差分と最小時間識別子とを有する参照ピクチャであり得る。言い換えれば、時間的ブロックのチェックのために、現在ビューからの2つの参照ピクチャ、コロケートピクチャおよびにランダムアクセスピクチャまたは最小POC差分と最小時間IDとを有する参照ピクチャまでが考慮される。ビデオコーダは、まずランダムアクセスピクチャをチェックし、続いて、コロケートピクチャをチェックし得る。
[0115]各候補ピクチャリスト(すなわち、ランダムアクセスピクチャおよびコロケートピクチャ)について、ビデオコーダは2つのブロックをチェックすることができる。具体的には、ビデオコーダは、中央ブロック(CR)および右下ブロック(BR)をチェックすることができる。図6は、NBDV導出プロセスにおける例示的な時間的隣接ブロックを示す概念図である。中央ブロックは、現在PUのコロケート領域の中央4×4ブロックであり得る。右下ブロックは、現在PUのコロケート領域の右下4×4ブロックであり得る。したがって、候補ピクチャごとに、2つのブロックが、第1の非ベースビューのためのCRおよびBR、または第2の非ベースビューのためのBR、CRの順序でチェックされる。CRまたはBRを変換するPUのうちの1つが視差動きベクトルを有する場合、ビデオコーダはチェック処理を終了することができ、現在PUのための最終的な視差ベクトルとしてその視差動きベクトルを使用することができる。この例では、第1の非ベースビューに関連付けられるピクチャの復号は、ベースビューに関連付けられるピクチャの復号に依存し得るが、他のビューに関連付けられるピクチャの復号には依存しないことがある。さらに、この例では、第2の非ベースビューに関連付けられるピクチャの復号は、ベースビュー、場合によっては、第1の非ベースビューに関連付けられるピクチャの復号に依存し得るが、存在する場合、他のビューに関連付けられるピクチャの復号には依存しないことがある。
[0116]図6の例では、ブロック42は、現在PUのためのコロケート領域を示す。さらに、図6の例では、「Pos.A」と標示されたブロックは中央ブロックに対応する。「Pos.B」と標示されたブロックは右下ブロックに対応する。図6の例に示すように、中央ブロックはコロケート領域の中心点の中心の真下、およびその右に位置特定され得る。
[0117]ビデオコーダが隣接PU(たとえば、空間的隣接PUまたは時間的隣接PU)を確認するとき、ビデオコーダはまず、隣接PUが視差動きベクトルを有するかどうかを確認することができる。隣接PUのいずれもが視差動きベクトルを有しない場合、ビデオコーダは、空間的隣接PUのいずれかがIDVを有するかどうかを決定することができる。言い換えれば、すべての空間的/時間的隣接ブロックに関して、視差動きベクトルが使用されるかどうかが最初にチェックされ、続いて、IDVがチェックされる。空間的隣接ブロックが最初にチェックされ、続いて、時間的隣接ブロックがチェックされる。IDVに関する隣接ブロックをチェックするとき、ビデオコーダは、A0、A1、B0、B1、およびB2の順に空間的隣接ブロックをチェックすることができる。空間的隣接PUの1つがIDVを有し、IDVがマージ/スキップモードとしてコーディングされる場合、ビデオコーダはチェック処理を終了することができ、現在PUのための最終視差ベクトルとしてIDVを使用することができる。言い換えれば、5つの空間的隣接ブロックは、A0、A1、B0、B1、およびB2の順でチェックされる。それらのうちの1つがIDVであり、それがスキップ/マージモードでコーディングされ得る場合、チェックプロセスは終了され、対応するIDVは最終的な視差ベクトルとして使用され得る。
[0118]上記のように、現在ブロックについての視差ベクトルは、参照ビュー中の参照ピクチャ(すなわち、参照ビュー成分)中のロケーションを示し得る。いくつかの3D−HEVC設計では、ビデオコーダは参照ビューについての深度情報にアクセスすることが許容される。いくつかのそのような3D−HEVC設計では、ビデオコーダが現在ブロックについての視差ベクトルを導出するためにNBDV導出プロセスを使用するとき、ビデオコーダは、現在ブロックについての視差ベクトルをさらに洗練するために洗練プロセスを適用し得る。ビデオコーダは、参照ピクチャの深度マップに基づいて、現在ブロックについての視差ベクトルを洗練することができる。言い換えれば、NBDV方式から生成された視差ベクトルは、コーディングされた深度マップ内の情報を使用してさらに洗練され得る。すなわち、視差ベクトルの精度は、ベースビュー深度マップにおいてコーディングされた情報を利用することによって向上され得る。この洗練プロセスは、本明細書において、NBDV洗練(「NBDV−R」)、NBDV洗練プロセス、または深度指向NBDV(Do−NBDV)と呼ばれることがある。
[0119]NBDV導出プロセスが利用可能な視差ベクトルを返すとき(たとえば、NBDV導出プロセスが、そのNBDV導出プロセスが視差動きベクトルまたは隣接ブロックのIDVに基づいて、現在ブロックについての視差ベクトルを導出することが可能であったことを示す変数を返すとき)、ビデオコーダは、参照ビューの深度マップから深度データを取り出すことによって、視差ベクトルをさらに洗練することができる。いくつかの例では、洗練プロセスは以下のステップを含む。
1.参照ビューの深度マップ中のブロックの位置を特定するために、現在ブロックの視差ベクトルを使用する。言い換えると、ベースビューなど、以前にコーディングされた参照深度ビュー中の導出された視差ベクトルによって対応する視差ブロックの位置を特定する。この例では、深度中の対応するブロックのサイズは現在PUのサイズ(すなわち、現在PUの予測ブロックのサイズ)と同じであり得る。
2.視差ベクトルは、4つのコーナー深度値の最大値から、コロケート深度ブロックから計算される。これは、視差ベクトルの水平成分に等しいように設定されるが、視差ベクトルの垂直成分は0に設定される。
[0120]いくつかの例では、NBDV導出プロセスが利用可能な視差ベクトルを返さないとき(たとえば、NBDV導出プロセスが、そのNBDV導出プロセスが視差動きベクトルまたは隣接ブロックのIDVに基づいて、現在ブロックについての視差ベクトルを導出することが不可能であったことを示す変数を返すとき)、ビデオコーダは、NBDV洗練プロセスを実行せず、ビデオコーダは、現在ブロックについての視差ベクトルとして、ゼロ視差ベクトルを使用し得る。言い換えると、NBDV導出プロセスが利用可能な視差ベクトルを提供しないとき、したがって、NBDV導出プロセスの結果が利用不可能であるとき、上記のNBDV−Rプロセスはスキップされ、ゼロ視差ベクトルが直接返される。
[0121]3D−HEVCのためのいくつかの提案では、ビデオコーダは、ビュー間動き予測用に現在のブロックについての洗練された視差ベクトルを使用するが、ビデオコーダは、ビュー間残差予測用に現在ブロックについての洗練されていない視差ベクトルを使用する。たとえば、ビデオコーダは、現在ブロックについての洗練されていない視差ベクトルを導出するためのNBDV導出プロセスを使用し得る。ビデオコーダは、次いで、現在ブロックについての洗練された視差ベクトルを導出するためのNBDV洗練プロセスを適用し得る。ビデオコーダは、現在ブロックの動き情報を決定するために、現在ブロックについての洗練された視差ベクトルを使用し得る。さらに、ビデオコーダは、現在ブロックの残差ブロックを決定するために、現在ブロックについての洗練されていない視差ベクトルを使用し得る。
[0122]このようにして、この新規の視差ベクトルは、「深度指向隣接ブロックベース視差ベクトル(DoNBDV:depth oriented neighboring block based disparity vector)」と呼ばれる。次いで、NBDV方式からの視差ベクトルは、AMVPおよびマージモードのためのビュー間候補導出のためにDoNBDV方式から、この新規に導出された視差ベクトルに置換される。ビデオコーダは、ビュー間残差予測に関する洗練されていない視差ベクトルを使用し得る。
[0123]ビデオコーダは、後方ビュー合成予測(BVSP)用に視差動きベクトルを洗練するために類似の洗練プロセスを使用し得る。このようにして、BVSP用に使用されるべき視差ベクトルまたは視差動きベクトルを洗練するために深度が使用され得る。洗練された視差ベクトルがBVSPモードでコーディングされる場合、洗練された視差ベクトルは、1つのPUの動きベクトルとして記憶され得る。
[0124]ビデオコーダは、ビュー成分を合成するためにBVSPを実行し得る。BVSP手法は、Tian他の「CE1.h:Backward View Synthesis Prediction Using Neighboring Blocks」、文書JCT3V−C0152(以下、「JCT3V−C0152」)において提案され、第3回JCT−3V会合で採用された。BVSPは、3D−AVC中のブロックベースのVSPに概念的に類似する。言い換えると、後方ワーピングVSPの基本的な考えは、3D−AVC中のブロックベースのVSPと同じである。3D−AVC中のBVSPおよびブロックベースのVSPは両方とも、動きベクトル差分を送信することを回避して、より正確な動きベクトルを使用するために、後方ワーピングおよびブロックベースのVSPを使用する。しかしながら、異なるプラットフォームにより、実装形態詳細は異なり得る。
[0125]3D−HEVCのいくつかのバージョンでは、テクスチャファーストコーディングが適用され得る。テクスチャファーストコーディングでは、ビデオコーダは、対応する深度ビューコンポーネント(すなわち、テクスチャビューコンポーネントと同じPOC値およびビュー識別子を有する深度ビューコンポーネント)をコーディングするのに先立って、テクスチャビューコンポーネントをコーディング(たとえば、符号化または復号)する。したがって、対応する非ベースビューテクスチャビューコンポーネントのコーディングに使用するために非ベースビュー深度ビューコンポーネントは利用不可能である。言い換えると、ビデオコーダが非ベーステクスチャビューコンポーネントをコーディングするとき、対応する非ベース深度ビューコンポーネントは利用不可能である。したがって、BVSPを実行するために、深度情報が推定および使用され得る。
[0126]ブロックに関する深度情報を推定するために、隣接ブロックから視差ベクトルを最初に導出し、次いで参照ビューから深度ブロックを取得するために導出された視差ベクトルを使用することが提案される。3D−HEVC Test Model 5.1(すなわち、HTM5.1テストモデル)では、NBDV導出プロセスとして知られている視差ベクトル予測子を導出するためのプロセスが存在する。(dvx,dvy)は、NBDV導出プロセスから識別された視差ベクトルを示すものとし、現在ブロックの位置は(blockx,blocky)である。ビデオコーダは、参照ビューの深度画像中で(blockx+dvx,blocky+dvy)において深度ブロックをフェッチし得る。フェッチされた深度ブロックは、現在CUと同じサイズを有し得る。ビデオコーダは、次いで、現在PUについて後方ワーピングを実行するために、フェッチされた深度ブロックを使用し得る。図7は、BVSPを実行するための参照ビューからの深度ブロック導出を示す概念図である。図7は、参照ビューからの深度ブロックの位置がどのように特定され、次いで、BVSP予測用に使用されるかの3つのステップを示す。
[0127]BVSPがシーケンスにおいて有効にされる場合、ビュー間動き予測のためのNBDV導出プロセスは変更され得、差分は、以下の段落においてボールドで示される。
時間的隣接ブロックの各々について、時間的隣接ブロックが視差動きベクトルを使用する場合、視差動きベクトルは視差ベクトルとして返され、視差動きベクトルは、本開示において他の箇所で説明する方法を用いてさらに洗練される。
空間的隣接ブロックの各々について、以下が適用される。
参照ピクチャリスト0または参照ピクチャリスト1の各々について、以下が適用される。
空間的隣接ブロックが視差動きベクトルを使用する場合、視差動きベクトルは視差ベクトルとして返され、視差動きベクトルは、本開示において他の箇所で説明する方法を用いてさらに洗練される。
さもなければ、空間的隣接ブロックがBVSPモードを使用する場合、関連動きベクトルは視差ベクトルとして返され得る。視差ベクトルは、本開示において他の箇所で説明するのと同様の方法でさらに洗練され得る。しかしながら、最大深度値は、4つのコーナーピクセルではなく、対応する深度ブロックのすべてのピクセルから選択され得る。
[0128]空間的隣接ブロックの各々について、空間的隣接ブロックがIDVを使用する場合、IDVは視差ベクトルとして返される。ビデオコーダは、本開示において他の箇所で説明する方法のうちの1つまたは複数を使用して、視差ベクトルをさらに洗練することができる。
[0129]ビデオコーダは、上で説明されたBVSPモードを特別なインターコード化モードとして扱うことができ、ビデオコーダは、各PUに関するBVSPモードの使用を示すフラグを維持することができる。ビデオコーダは、ビットストリーム中でフラグをシグナリングするのではなく、新規のマージ用候補(BVSPマージ用候補)をマージ候補リストに追加することができ、フラグは、復号されたマージ候補インデックスがBVSPマージ用候補に対応するかどうかに依存する。いくつかの例では、BVSPマージ用候補は次のように定義される。
参照ピクチャリストごとの参照ピクチャインデックス:−1
参照ピクチャリストごとの動きベクトル:洗練された視差ベクトル
いくつかの例では、BVSPマージ用候補の挿入位置は、空間的隣接ブロックに依存する。たとえば、5つの空間的隣接ブロック(A0、A1、B0、B1またはB2)のうちのいずれかがBVSPモードを用いてコーディングされる場合、すなわち、隣接ブロックの維持されたフラグが1に等しい場合、ビデオコーダは、BVSPマージ用候補を、対応する空間マージ用候補として扱えばよく、BVSPマージ用候補をマージ候補リストに挿入することができる。ビデオコーダは、BVSPマージ用候補をマージ候補リストに一度だけ挿入することができる。さもなければ、この例では、(たとえば、5つの空間的隣接ブロックのうちのいずれも、BVSPモードを用いてコーディングされないとき)、ビデオコーダは、何らかの時間マージ用候補の直前にBVSPマージ用候補をマージ候補リストに挿入することができる。結合双予測(combined bi-predictive)マージ用候補導出プロセスの間、ビデオコーダは、BVSPマージ用候補を含めるのを避けるために、追加条件を検査すればよい。
[0130]各BVSPコード化PUの場合、ビデオコーダは、BVSPを、K×K(ここで、Kは4または2であり得る)に等しいサイズを有するいくつかの下位領域にさらに区分することができる。BVSPコード化PUのサイズは、N×Mによって示され得る。各下位領域に関して、ビデオコーダは、別個の視差動きベクトルを導出することができる。さらに、ビデオコーダは、ビュー間参照ピクチャ中の導出された視差動きベクトルによって位置特定された1つのブロックから各下位領域を予測することができる。言い換えれば、BVSPコード化PUのための動き補償ユニットのサイズはK×Kに設定される。同じテスト条件では、Kは4に設定される。
[0131]BVSPに関して、ビデオコーダは、以下の視差動きベクトル導出プロセスを実行することができる。BVSPモードを用いてコーディングされた1つのPU内の各サブ領域(4×4ブロック)について、ビデオコーダは最初に、対応する4×4深度ブロックを、上で言及した洗練された視差ベクトルを有する参照深度ビュー中に位置特定することができる。第2に、ビデオコーダは、対応する深度ブロック中の16個の深度ピクセルの最大値を選択することができる。第3に、ビデオコーダは、その最大値を視差動きベクトルの水平成分に変換することができる。ビデオコーダは、視差動きベクトルの垂直成分を0に設定することができる。
[0132]DoNBDV技法から導出された視差ベクトルに基づいて、ビデオコーダは、新規の動きベクトル候補(すなわち、ビュー間予測動きベクトル候補(IPMVC))を、利用可能な場合、AMVPおよびスキップ/マージモードに追加することができる。IPMVCは、利用可能な場合、時間的動きベクトルである。スキップモードはマージモードと同じ動きベクトル導出プロセスを有するので、本文書で説明する技法は、マージモードとスキップモードの両方に適用され得る。
[0133]マージ/スキップモードの場合、IPMVCは以下のステップによって導出され得る。第1に、ビデオコーダは、視差ベクトルを使用して、同じアクセスユニットの参照ビュー中の現在ブロック(たとえば、PU、CUなど)の対応するブロックを位置特定することができる。第2に、対応するブロックがイントラコーディングされず、ビュー間予測されず、対応するブロックの参照ピクチャが、現在ブロックの同じ参照ピクチャリスト中への1つのエントリのPOC値に等しいPOCを有する場合、ビデオコーダは、POCに基づいて、対応するブロックの参照インデックスを変換することができる。さらに、ビデオコーダは、対応するブロックの予測方向、対応するブロックの動きベクトル、および変換された参照インデックスを指定するためにIPMVCを導出することができる。
[0134]3D−HEVC Test Model 4の第H.8.5.2.1.10項は、時間的ビュー間動きベクトル候補に関する導出プロセスを記述する。IPMVCは時間的参照ピクチャ中のロケーションを示すため、IPMVCは、時間的ビュー間動きベクトル候補と呼ばれる場合がある。3D−HEVC Test Model 4の第H8.5.2.1.10項に記載されるように、参照層ルーマロケーション(xRef,yRef)は
によって導出される。
上の式H−124およびH−125で、(xP,yP)は、現在ピクチャの左上ルーマサンプルに対する現在PUの左上ルーマサンプルの座標を示し、nPSWおよびnPSHは、現在予測ユニットの幅および高さをそれぞれ示し、refViewIdxは参照ビュー順序インデックスを示し、mvDispは視差ベクトルを示す。対応するブロックは、refViewIdxに等しいViewIdxを有するビュー成分中のルーマロケーション(xRef,yRef)をカバーするPUに設定される。上の式H−124およびH−125で、および本開示の他の式で、Clip3関数は
として定義され得る。
[0135]図8は、マージ/スキップモードのためのIPMVCの例示的な導出を示す概念図である。言い換えれば、図8は、ビュー間予測動きベクトル候補の導出プロセスの一例を示す。図8の例では、現在PU50は、時間インスタンスT1においてビューV1中に発生する。現在PU50に対する参照PU52は、現在PU50と異なるビュー(すなわち、ビューV0)中で現在PUと同じ時間インスタンス(すなわち、時間インスタンスT1)において発生する。図8の例では、参照PU52は、双方向にインター予測される。したがって、参照PU52は、第1の動きベクトル54と第2の動きベクトル56とを有する。動きベクトル54は、参照ピクチャ58中の位置を示す。参照ピクチャ58は、ビューV0中で時間インスタンスT0において発生する。動きベクトル56は、参照ピクチャ60中の位置を示す。参照ピクチャ60は、ビューV0中で時間インスタンスT3において発生する。
[0136]ビデオコーダは、参照PU52の動き情報に基づいて、現在PU50のマージ候補リストに含めるためのIPMVCを生成し得る。IPMVCは、第1の動きベクトル62と第2の動きベクトル64とを有し得る。動きベクトル62は動きベクトル54に整合し、動きベクトル64は動きベクトル56に整合する。ビデオコーダは、IPMVCの第1の参照インデックスが参照ピクチャ58と同じ時間インスタンス(すなわち、時間インスタンスT0)において発生する参照ピクチャ(すなわち、参照ピクチャ66)の現在PU50に関するRefPicList0内の位置を示すようにIPMVCを生成する。図8の例では、参照ピクチャ66は、現在PU50に関するRefPicList0内の第1の位置(すなわち、Ref0)において発生する。さらに、ビデオコーダは、IPMVCの第2の参照インデックスが参照ピクチャ60と同じ時間インスタンスにおいて発生する参照ピクチャ(すなわち、参照ピクチャ68)の現在PU50に関するRefPicList1内の位置を示すようにIPMVCを生成する。したがって、図8の例では、IPMVCのRefPicList0参照インデックスは、0に等しい場合がある。図8の例では、参照ピクチャ70は、現在PU50に関するRefPicList1内の第1の位置(すなわち、Ref0)において発生し、参照ピクチャ68は、現在PU50に関するRefPicList1内の第2の位置(すなわち、Ref1)において発生する。したがって、IPMVCのRefPicList1参照インデックスは、1に等しい場合がある。
[0137]IPMVCを生成し、IPMVCをマージ候補リストに含めることに加えて、ビデオコーダは、現在PUについての視差ベクトルをビュー間視差動きベクトル(IDMVC)に変換することができ、IDMVCを現在PUに関するマージ候補リストに含めることができる。言い換えれば、視差ベクトルは、IPMVCとは異なる位置内のマージ候補リスト中に追加されるか、または、IDMVCが利用可能であるとき、IPMVCと同じ位置内のAMVP候補リスト中に追加されるIDMVCに変換され得る。IPMVCまたはIDMVCのどちらも、このコンテキストでは「ビュー間候補」と呼ばれる。言い換えれば、「ビュー間候補」という用語は、IPMVCとIDMVCのいずれかを指すために使用され得る。いくつかの例では、マージ/スキップモードでは、ビデオコーダは、利用可能な場合、IPMVCを、すべての空間マージ用候補および時間マージ用候補の前にマージ候補リストに常に挿入する。さらに、ビデオコーダは、A0から導出された空間マージ用候補の前にIDMVCを挿入することができる。
[0138]上に示したように、ビデオコーダは、DoNBDVの方法を用いて視差ベクトルを導出することができる。視差ベクトルの場合、3D−HEVCにおけるマージ用候補リスト構成プロセスは、次のように定義され得る。
1.IPMVC挿入
IPMVCが、上記で説明した手順によって導出される。IPMVCが利用可能である場合、IPMVCはマージリストに挿入される。
2.3D−HEVCにおける空間マージ用候補およびIDMVCの挿入のための導出プロセス
以下、すなわち、A1、B1、B0、A0、またはB2の順序で空間的隣接PUの動き情報をチェックする。制約付きプルーニングが以下の手順によって実行される。
A1およびIPMVCが同じ動きベクトルおよび同じ参照インデックスを有する場合、A1は、候補リストに挿入されないが、場合によっては、A1はそのリストに挿入される。
B1およびA1/IPMVCが同じ動きベクトルおよび同じ参照インデックスを有する場合、B1は、候補リストに挿入されないが、場合によっては、B1はそのリストに挿入される。
B0が利用可能である場合、B0は、候補リストに追加される。IDMVCが、上記で説明した手順によって導出される。IDMVCが利用可能であり、IDMVCがA1およびB1から導出された候補とは異なる場合、IDMVCは候補リストに挿入される。
BVSPがピクチャ全体に関してまたは現在スライスに関して有効にされる場合、BVSPマージ用候補はマージ候補リストに挿入される。
A0が利用可能である場合、A0は候補リストに追加される。
B2が利用可能である場合、B2は候補リストに追加される。
3.時間マージ用候補のための導出プロセス
コロケートPUの動き情報が利用されるHEVCにおける時間マージ用候補導出プロセスと同様に、しかしながら、時間マージ用候補の目標参照ピクチャインデックスは、0に固定される代わりに、変更され得る。0に等しい目標参照インデックスが(同じビュー中の)時間的参照ピクチャに対応する一方で、コロケートPUの動きベクトルがビュー間参照ピクチャを指すとき、目標参照インデックスは、参照ピクチャリスト中へのビュー間参照ピクチャの第1のエントリに対応する別のインデックスに変更され得る。反対に、0に等しい目標参照インデックスがビュー間参照ピクチャに対応する一方で、コロケートPUの動きベクトルが時間的参照ピクチャを指すとき、目標参照インデックスは、参照ピクチャリスト中への時間的参照ピクチャの第1のエントリに対応する別のインデックスに変更され得る。
4.3D−HEVCにおける結合双予測マージ用候補のための導出プロセス
上記の2つのステップから導出された候補の総数が候補の最大数未満である場合、10CandIdxおよび11CandIdxの仕様を除いてHEVCにおいて定義されたものと同じプロセスが実行される。図9は、3D−HEVCにおける10CandIdxおよび11CandIdxの例示的な仕様を示す表である。combIdx、10CandIdx、および11CandIdxの間の関係は、図9の表において定義されている。HEVC Working Draft 10の第8.5.3.2.3項は、結合双予測マージ用候補を導出する際の10CandIdxおよび11CandIdxの例示的な使用を定義する。
5.ゼロ動きベクトルマージ用候補のための導出プロセス
HEVCにおいて定義されたものと同じ手順が実行される。
3D−HEVCに関する参照ソフトウェアのいくつかのバージョンでは、マージ(たとえば、MRG)リスト中の候補の総数は最大6であり、five_minus_max_num_merge_candが、スライスヘッダ中で6から減算されたマージ候補の最大数を指定するためにシグナリングされる。five_minus_max_num_merge_candは、両端値を含む、0〜5の範囲内にある。five_minus_max_num_merge_candシンタックス要素は、5から減算されたスライス中でサポートされるマージ用MVP候補の最大数を指定し得る。マージ用動きベクトル予測(MVP)候補の最大数、MaxNumMergeCandは、MaxNumMergeCand=5−fixe_minus_max_num_merge_cand+iv_mv_pred_flag[nuh_layer_id]として計算され得る。five_minus_max_num_merge_candの値は、MaxNumMergeCandが0から(5+iv_mv_pred_flag[nuh_layers_id])の範囲内にあるように制限され得る。
[0139]上に示したように、HEVC Working Draft 10の第8.5.3.2.3項は、結合双予測マージ用候補を導出する際の10CandIdxおよび11CandIdxの例示的な使用を定義する。HEVC Working Draft 10の第8.5.3.2.3項を下に複写する。
結合双予測マージ用候補のための導出プロセス
このプロセスへの入力は以下の通りである。
マージ用候補リストmergeCandList、
mergeCandList中の候補Nごとの参照インデックスrefIdxL0NおよびrefIdxL1N、
mergeCandList中の候補Nごとの予測リスト利用フラグpredFlagL0NおよびpredFlagL1N、
mergeCandList中の候補Nごとの動きベクトルmvL0NおよびmvL1N、
mergeCandList内の要素の数numCurrMergeCand、
空間マージ候補導出プロセスおよび時間マージ候補導出プロセス後のmergeCandList内の要素の数numOrigMergeCand。
このプロセスの出力は以下の通りである。
マージ用候補リストmergeCandList、
mergeCandList内の要素の数numCurrMergeCand、
このプロセスの呼出しの間にmergeCandListに追加された新規候補combCandkごとの参照インデックスrefIdxL0combCandkおよびrefIdxL1combCandk、
このプロセスの呼出しの間にmergeCandListに追加された新規候補combCandkごとの予測リスト利用フラグpredFlagL0combCandkおよびpredFlagL1combCandk、
このプロセスの呼出しの間にmergeCandListに追加された新規候補combCandkごとの動きベクトルmvL0combCandkおよびmvL1combCandk。
numOrigMergeCandが1よりも大きくMaxNumMergeCand未満であるとき、変数numInputMergeCandはnumCurrMergeCandに等しいように設定され、変数combIdxは0に等しいように設定され、変数combStopはFALSEに等しいように設定され、combStopがTRUEに等しくなるまで次のステップが繰り返されてよい。
1.変数l0CandIdxおよびl1CandIdxは、表8〜6において指定されるようにcombIdxを使用して導出される。
2.10Candが、マージ用候補リストmergeCandList中の、位置10CandIdxにおける候補であり、11Candが、マージ用候補リストmergeCandList中の位置11CandIdxにおける候補である、次の割当てが行われる。
kが(numCurrMergeCand−numInputMergeCand)に等しい候補combCand
kがmergeCandListの終わりに追加され、すなわち、mergeCandList[numCurrMergeCand]はcombCand
kに等しいように設定され、combCand
kの参照インデックス、予測リスト利用フラグ、および動きベクトルは次のように導出され、numCurrMergeCandは1だけ増分される。
4.combIdxは1だけ増分される。
5.combIdxが(numOrigMergeCand*(numOrigMergeCand−1))に等しいか、またはnumCurrMergeCandがMaxNumMergeCandに等しいとき、combStopはTRUEに等しいように設定される。
[0140]動きベクトル継承(MVI:motion vector inheritance)は、テクスチャ画像とその関連する深度画像との間の動き特性の類似度を活用する。具体的には、ビデオコーダは、MVI候補をマージ候補リストに含めることができる。深度画像中の所与のPUに関して、MVI候補は、それが利用可能な場合、すでにコーディングされている、対応するテクスチャブロックの動きベクトルと参照インデックスとを使用して再使用する。図10は、深度コーディングのための動きベクトル継承候補の例示的な導出を示す概念図である。図10は、現在PUの中央の右下に対して位置特定される4×4ブロックとして、対応するテクスチャブロックが選択されるMVI候補の導出プロセスの例を示す。
[0141]いくつかの例では、整数精度を有する動きベクトルが深度コーディングで使用されるのに対して、テクスチャコーディングに関して動きベクトルの1/4分の1精度が利用される。したがって、対応するテクスチャブロックの動きベクトルは、MVI候補として使用する前にスケーリングされ得る。
[0142]MVI候補生成により、深度ビューに関するマージ候補リストは次のように構築され得る。
1.MVI挿入
MVIが上で説明した手順によって導出される。MVIが利用可能である場合、ビデオコーダは、MVIをマージリストに挿入することができる。
2.3D−HEVCにおける空間マージ用候補およびIDMVCの挿入のための導出プロセス
以下、すなわち、A1、B1、B0、A0、またはB2の順序で空間的隣接PUの動き情報をチェックする。ビデオコーダは、以下の手順によって、制約付きプルーニングを実行することができる。
A1およびMVIが同じ動きベクトルおよび同じ参照インデックスを有する場合、ビデオコーダは、A1を候補リストに挿入しない。
B1およびA1/MVIが同じ動きベクトルならびに同じ参照インデックスを有する場合、ビデオコーダは、B1を候補リストに挿入しない。
B0が利用可能である場合、ビデオコーダはB0を候補リストに追加する。
A0が利用可能である場合、ビデオコーダはA0を候補リストに追加する。
B2が利用可能である場合、ビデオコーダはB2を候補リストに追加する。
3.時間マージ用候補のための導出プロセス
コロケートPUの動き情報が利用されるHEVCにおける時間マージ用候補導出プロセスと同様に、しかしながら、時間マージ用候補の目標参照ピクチャインデックスは、目標参照ピクチャインデックスを0に固定する代わりに、3D−HEVCにおけるテクスチャコーディングに関するマージ候補リスト構築に関して、本開示の他の箇所で説明したように変更され得る。
4.3D−HEVCにおける結合双予測マージ用候補のための導出プロセス
上記の2つのステップから導出された候補の総数が候補の最大数未満である場合、ビデオコーダは、10CandIdxおよび11CandIdxの仕様を除いて、HEVCにおいて定義されたものと同じプロセスを実行することができる。combIdx、10CandIdx、および11CandIdxの間の関係は、図9の表において定義されている。
6.ゼロ動きベクトルマージ用候補のための導出プロセス
HEVCにおいて定義されたものと同じ手順が実行される。
[0143]上に示したように、3D−HEVCはビュー残差予測を実現する。高度残差予測(ARP)はビュー間残差予測の一形態である。http://phenix.it−sudparis.eu/jct3v/doc_end_user/documents/4_Incheon/wg11/JCT3V−D0177−v2.zip(以下、JCT3V−D0177)から利用可能である、2013年12月17日付の、Zhangら、「CE4:Advanced Residual Prediction for Multiview Coding」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張共同研究部会、第4回会合:インチョン、韓国、2013年4月20日〜26日、文書JCT3V−D0177で提案されたように、第4回JCT3V会合において、Part_2N×2Nに等しい区分モードでARPをCUに適用することが採用された。
[0144]図11は、マルチビュービデオコーディングにおけるARPの例示的な予測構造を示す。図11に示すように、ビデオコーダは、現在ブロックの予測において以下のブロックを呼び出すことができる。
1.現在ブロック:Curr
2.視差ベクトル(DV)によって導出される参照/ベースビュー中の参照ブロック:Base。
3.現在ブロックの(時間的)動きベクトル(TMVと示される)によって導出されるブロックCurrと同じビュー中のブロック:CurrTRef。
4.現在ブロックの時間的動きベクトル(TMV)によって導出されるブロックBaseと同じビュー中のブロック:BaseTRef。このブロックは、現在ブロックと比較してTMV+DVのベクトルを用いて識別される。
[0145]残差予測子はBaseTRef−Baseと示され、示されたピクセルアレイの各ピクセルに減算演算が適用される。ビデオエンコーダは、残差予測子に対して重み付け係数wを乗算することができる。したがって、現在ブロックの最終的な予測子は次のように示され得る:CurrTref+w*(BaseTref−Base)。
[0146]上の説明と図11は両方とも、単方向(uni-directional)予測が適用されるという仮定に基づく。双方向予測の事例に拡大するとき、上記のステップが各参照ピクチャリストに対して適用される。現在ブロックが1つの参照ピクチャリストに関して(異なるビュー中の)ビュー間参照ピクチャを使用するとき、残差予測プロセスは無効にされる。
[0147]デコーダ側において提案されるARPの主な手順は次のように説明され得る。まず、ビデオコーダは、目標参照ビューを指す、3D−HEVC Working Draft 4で指定されるような視差ベクトルを取得することができる。次いで、現在ピクチャと同じアクセスユニット中の参照ビューのピクチャ中で、ビデオコーダは、対応するブロックを位置特定するために視差ベクトルを使用することができる。次に、ビデオコーダは、参照ブロックに対する動き情報を導出するために、現在ブロックの動き情報を再使用することができる。ビデオコーダは、次いで、残差ブロックを導出するために、対応するブロックベースの現在ブロックの同じ動きベクトルと、参照ブロックに対する参照ビュー中の導出された参照ピクチャとに対して動き補償を適用することができる。図12は、現在ブロックと、対応するブロックと、動き補償ブロックとの間の関係を示す。言い換えると、図12は、現在ブロックと、参照ブロックと、動き補償ブロックとの例示的な関係を示す概念図である。現在ビュー(Vm)の参照ピクチャと同じPOC(ピクチャ順序カウント)値を有する参照ビュー(V0)中の参照ピクチャは、対応するブロックの参照ピクチャとして選択される。次に、ビデオコーダは、重み付けされた残差ブロックを決定するために、残差ブロックに重み係数を加えることができる。ビデオコーダは、重み付けされた残差ブロックの値を予測されたサンプルに加算することができる。
[0148]3つの重み係数、すなわち、0、0.5、および1がARPにおいて使用される。ビデオエンコーダ20は、最終的な重み係数として、現在CUについての最小レート歪みコストにつながる重み係数を選択することができる。ビデオエンコーダ20は、対応する重み係数インデックス(それぞれ、重み係数0、1、および0.5に対応する0、1、および2)をCUレベルで、ビットストリーム内でシグナリングすることができる。CU内のすべてのPU予測は同じ重み係数を共有し得る。重み係数が0に等しいとき、ビデオコーダは現在CUに関してARPを使用しない。
[0149]http://phenix.int−evry.fr/jct3v/doc_end−User/documents/3_Geneva/wg11/JCT3V−C0049−v2.zip(以下、JCT3V−C0049)から利用可能な、2013年8月30日付けの、Zhangら、「3D−CE4:Advanced Residual Prediction for Multiview Coding」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第3回会合、ジュネーブ、スイス、2013年1月17日〜23日、文書JCT3V−C0049において、非ゼロ重み係数を用いてコーディングされたPUの参照ピクチャはブロックごとに異なり得る。したがって、ビデオコーダは、対応するブロックの動き補償ブロック(すなわち、図11の例で、BaseTRef)を生成するために、参照ビューから異なるピクチャにアクセスする必要があり得る。ビデオコーダは、重み係数が0に等しくないとき、残差生成プロセスに関する動き補償を実行する前に、固定ピクチャに対して現在PUの復号動きベクトルをスケーリングすることができる。JCT3V−D0177では、固定ピクチャは、それが同じビューからである場合、各参照ピクチャリストの第1の参照ピクチャとして定義される。復号動きベクトルが固定ピクチャを指さないとき、ビデオコーダは、最初に、復号動きベクトルをスケーリングし、次いで、CurrTRefおよびBaseTRefを識別するために、スケーリングされた動きベクトルを使用することができる。ARPに関して使用されるそのような参照ピクチャは、目標ARP参照ピクチャと呼ばれる場合がある。
[0150]JCT3V−C0049では、ビデオコーダは、対応するブロックおよび対応するブロックの予測ブロックの補間プロセスの間に双線形フィルタを適用することができる。非ベースビュー中の現在PUの予測ブロックに関する間、ビデオコーダは従来の8/4タップフィルタを適用することができる。JCT3V−D0177は、ARPが適用されるとき、ブロックがベースビュー中にあるか、または非ベースビュー中にあるかにかかわらず、双線形を常に採用することを提案する。
[0151]ARPでは、ビデオコーダは、NBDV導出プロセスから返されたビュー順序インデックスによって参照ビューを識別することができる。ARPのいくつかの設計では、1つの参照ピクチャリスト中の1つのPUの参照ピクチャが現在ビューの異なるビューからであるとき、ARPはこの参照ピクチャリストに関して無効にされる。
[0152]その各々の内容全体が参照により組み込まれている、2013年6月28日に出願された米国仮特許出願第61/840,400号、および2013年7月18日に出願された米国仮特許出願第61/847,942号では、深度ピクチャをコーディングするとき、現在ブロックの隣接サンプルから推定された深度値によって視差ベクトルは変換される。さらに、たとえば、視差ベクトルによって識別されたベースビューの参照ブロックにアクセスすることによって、より多くのマージ候補が導出され得る。
[0153]3D−HEVCでは、ビデオコーダは2つのステップによって参照4×4ブロックを識別することができる。第1のステップは、視差動きベクトルを用いてピクセルを識別する。第2のステップは、(それぞれ、RefPicList0またはRefPicList1に対応する動き情報の一意のセットを有する)4×4ブロックを得て、マージ候補を作成するために動き情報を利用する。
[0154]参照ビュー中のピクセル(xRef,yRef)は次のように識別され得る。
式中、(xP,yP)は、現在PUの左上サンプルの座標であり、mvDispは、視差ベクトルであり、nPSW×nPSHは現在PUのサイズであり、PicWidthInSamplesLおよびPicHeightInSamplesLは(現在ビューと同じ)参照ビュー中のピクチャの解像度を定義する。
[0155]http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V−E0184−v2.zipから利用可能である、2013年12月17日付の、Anら、「3D−CE3.h関連:Sub−PU level inter−view motion prediction」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張共同研究部会、第5回会合、ウィーン、オーストリア、2013年7月27日〜8月2日、文書JCT3V−E0184(以下、「JCT3V−E0184」)は、時間的ビュー間マージ候補(すなわち、参照ビュー中の参照ブロックから導出された候補)に関するサブPUレベルビュー間動き予測方法を提案している。ビュー間動き予測の基本概念は、本開示の他の箇所で説明される。ビュー間予測の基本概念では、深度ビュー中の現在PUに関して参照ブロックの動き情報だけが使用される。しかしながら、現在PUは、参照ビュー中の(現在PUの視差ベクトルによって識別された現在PUと同じサイズを有する)参照エリアに対応し得、参照エリアは豊富な動き情報を有し得る。したがって、サブPUレベルビュー間動き予測(SPIVMP)方法が図13に示すように提案される。言い換えれば、図13は、サブPUビュー間動き予測を示す概念図である。
[0156]時間的ビュー間マージ候補は次のように導出され得る。時間的ビュー間マージ候補に関する導出プロセスでは、割り当てられたサブPUサイズはN×Nとして示され得る。異なるサブPUブロックサイズ、たとえば、4×4、8×8、および16×16が適用され得る。
[0157]時間的ビュー間マージ候補に関する導出プロセスでは、ビデオコーダは、最初に、現在PUを、その各々が現在PUよりも小さいサイズを有する複数のサブPUに分割することができる。現在PUのサイズは、nPSW×nPSHよって示され得る。サブPUのサイズは、nPSWsub×nPSHSubによって示され得る。nPSWsubおよびnPSHsubは、次の式に示すように、nPSWおよびnSPHに関係し得る。
さらに、ビデオコーダは、デフォルト動きベクトルtmvLXを(0,0)に設定することができ、各参照ピクチャリストに関して、参照インデックスrefLXを−1に設定することができる(Xは0または1である)。
[0158]さらに、時間的ビュー間マージ候補を決定するとき、ビデオコーダは、各サブPUに関する次の動作をラスタ走査順序で適用することができる。まず、ビデオコーダは、参照サンプルロケーション(xRefSub,yRefSub)を取得するために(その左上のサンプルロケーションが(xPSub,yPSub)である)現在サブPUの中間位置に視差ベクトルを追加することができる。ビデオコーダは、次の式を使用して、(xRefSub,yRefSub)を決定することができる。
ビデオコーダは、現在サブPUのための参照ブロックとして(xRefSub,yRefSub)をカバーする参照ビュー中のブロックを使用することができる。
[0159]識別された参照ブロックが時間的動きベクトルを使用してコーディングされる場合、ならびに、refL0とrefL1の両方が−1に等しく、現在サブPUがラスタ走査順序で第1のサブPUでない場合、参照ブロックの動き情報はすべての以前のサブPUによって継承される。さらに、識別された参照ブロックが時間的動きベクトルを使用してコーディングされる場合、現在サブPUに関する動きパラメータとして関連する動きパラメータが使用され得る。さらに、識別された参照ブロックが時間的動きベクトルを使用してコーディングされる場合、ビデオコーダは、tmvLXおよびrefLXを現在サブPUの動き情報に更新することができる。さもなければ、参照ブロックがイントラコーディングされる場合、ビデオコーダは、現在サブPUの動き情報をtmvLXおよびrefLXに設定することができる。
[0160]JCT3V−E0184で提案されるサブPU動き予測方法は、1つまたは複数の問題を有する。たとえば、参照ビュー中の1つのサブPUの対応するブロックがイントラコーディングされる(すなわち、その動き情報が利用不可能である)とき、ラスタ走査順序で最も近いサブPUの動き情報が現在サブPUに複写される。したがって、ラスタ走査順序で第1のN個のサブPUの対応するブロックがイントラ符号化され、(N+1)番目のサブPUの対応するブロックがインターコーディングされる場合、(N+1)番目のサブPUに設定された関連動き情報は第1のN個のサブPUに複写されるべきであり、これは、さらなる複雑さおよびコーディング遅延を引き起こす。
[0161]本開示の1つまたは複数の例はビュー間動き予測に関する。たとえば、本開示の1つまたは複数の例は、マージインデックスがビュー間動き予測を示すコンテキストで適用可能である。
[0162]たとえば、一例では、ビデオコーダがサブPU様式でビュー間動き予測を使用するとき、それに関する動き情報が利用不可能である現在サブPU場合、ビデオコーダは、デフォルト動きベクトルおよびデフォルト参照インデックスから動き情報を複写することができる。たとえば、現在サブPUに関する動き情報が利用不可能である場合、ビデオコーダは、デフォルト動きベクトルおよびデフォルト参照インデックスから現在サブPUに関する動き情報を複写することができる。この例では、デフォルト動きパラメータは、動き補償予測を使用してコーディングされる参照ブロックを有する後続のサブPUが存在するかどうかにかかわらず、複数のサブPU中の各サブPUに関して同じである。
[0163]いくつかの例では、ビデオコーダ(たとえばビデオエンコーダ20またはビデオデコーダ30)は現在PUを複数のサブPUに分割することができる。現在PUは現在ピクチャ中にある。さらに、ビデオコーダは、デフォルト動きパラメータを決定することができる。デフォルト動きパラメータは、1つまたは複数のデフォルト動きベクトルと、1つまたは複数のデフォルト参照インデックスとを含み得る。さらに、ビデオコーダは、複数のサブPUからのサブPUを特定の順序で処理することができる。複数のサブPUからの各それぞれのサブPUに関して、ビデオコーダは、それぞれのサブPUのための参照ブロックを決定することができる。
[0164]いくつかの例では、参照ピクチャは現在ピクチャとは異なるビュー中にあり得、ビデオコーダは、現在PUの視差ベクトルに基づいて、参照ピクチャ中の参照サンプルロケーションを決定することができる。そのような例では、それぞれのサブPUのための参照ブロックは、参照サンプルロケーションをカバーすることができる。他の例では、現在ピクチャは深度ビューコンポーネントであり、参照ピクチャは、現在ピクチャと同じビューおよびアクセスユニット中のテクスチャビューコンポーネントである。そのような例では、ビデオコーダは、それぞれのサブPUのための参照ブロックがそれぞれのサブPUとコロケートされた参照ピクチャのPUであると決定することができる。
[0165]さらに、複数のサブPU(または、複数のサブPUのサブセット)からの各それぞれのサブPUに関して、それぞれのサブPUのための参照ブロックが動き補償予測を使用してコーディングされる場合、ビデオコーダは、それぞれのサブPUのための参照ブロックの動きパラメータに基づいて、それぞれのサブPUの動きパラメータを設定することができる。他方で、それぞれのサブPUのための参照ブロックが動き補償予測を使用してコーディングされない場合、ビデオコーダは、それぞれのサブPUの動きパラメータをデフォルト動きパラメータに設定することができる。
[0166]本開示の1つまたは複数の例によれば、それぞれのサブPUのための参照ブロックが動き補償予測を使用してコーディングされない場合、その順序の任意の後のサブPUのための参照ブロックは動き補償予測を使用してコーディングされるという後続の決定に応答して、それぞれのサブPUの動きパラメータは設定されない。したがって、サブPUのうちの少なくとも1つのための参照ブロックが動き補償予測を使用してコーディングされない状況では、ビデオコーダは、その対応する参照ブロックが動き補償予測を使用してコーディングされるサブPUを発見するために順方向に走査しなくてよい。同様に、ビデオコーダが、サブPUの処理の間に、その対応する参照ブロックが動き補償予測を使用してコーディングされるPUに遭遇するまで、ビデオコーダは、それぞれのサブPUの動きパラメータを決定することを遅延させなくてよい。有利には、これは、複雑さおよびコーディング遅延を低減し得る。
[0167]ビデオコーダは、現在PUの候補リスト中に候補を含めることができ、ここにおいて、この候補は複数のサブPUの動きパラメータに基づく。いくつかの例では、候補リストはマージ候補リストである。さらに、ビデオコーダがビデオエンコーダ(たとえば、ビデオエンコーダ20)である場合、ビデオエンコーダは、その候補リスト中の選択された候補を示すシンタックス要素(たとえば、merge_idx)をビットストリーム内でシグナリングすることができる。ビデオコーダがビデオデコーダ(たとえば、ビデオデコーダ30)である場合、ビデオデコーダは、その候補リスト中の選択された候補を示すシンタックス要素(たとえば、merge_idx)をビットストリームから取得することができる。ビデオデコーダは、現在ブロックのための予測ブロックを再構成するために、選択された候補の動きパラメータを使用し得る。
[0168]本開示で説明する技法のうちの少なくともいくつかは、別個に、または互いとともに実装され得る。
[0169]図14は、本開示の技法を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図14は、説明のために提供されるものであり、本開示で広く例示し説明する技法を限定するものと見なされるべきではない。説明の目的で、本開示は、HEVCコーディングのコンテキストにおいてビデオエンコーダ20を記載する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0170]図14の例において、ビデオエンコーダ20は、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構成ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120と、イントラ予測処理ユニット126とを含む。インター予測処理ユニット120は、動き推定ユニット122と、動き補償ユニット124とを含む。他の例では、ビデオエンコーダ20は、より多いか、より少ないか、または異なる機能構成要素を含み得る。
[0171]ビデオエンコーダ20はビデオデータを受信し得る。ビデオエンコーダ20はビデオデータのピクチャのスライス中の各CTUを符号化してもよい。CTUの各々は、等しいサイズのルーマコーディングツリーブロック(CTB:coding tree block)と、ピクチャの対応するCTBとに関連付けられ得る。CTUを符号化することの一部として、予測処理ユニット100は4分木区分を実行して、CTUのCTBを徐々により小さいブロックに分割し得る。より小さいブロックはCUのコーディングブロックであり得る。たとえば、予測処理ユニット100は、CTUに関連付けられたCTBを4つの等しいサイズのサブブロックに区分し、サブブロックのうちの1つまたは複数を、4つの等しいサイズのサブサブブロックに区分し得、以下同様である。
[0172]ビデオエンコーダ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サイズ用の非対称区分化をサポートすることができる。
[0173]インター予測処理ユニット120は、CUの各PUに対してインター予測を実行することによってPUの予測データを生成し得る。PUの予測データは、PUの予測ブロックと、PUの動き情報とを含み得る。インター予測処理ユニット120は、PUがIスライス中にあるのか、Pスライス中にあるのか、Bスライス中にあるのかに応じて、CUのPUに対して異なる演算を実行し得る。Iスライス中では、すべてのPUがイントラ予測される。したがって、PUがIスライス中にある場合、インター予測処理ユニット120はPUに対してインター予測を実行しない。
[0174]PUがPスライス中にある場合、動き推定ユニット122は、PUの参照領域について参照ピクチャリスト(たとえば、「RefPicList0」)中の参照ピクチャを探索し得る。PUの参照領域は、PUの予測ブロックに最も近接して対応するサンプルを含んでいる参照ピクチャ内の領域であり得る。動き推定ユニット122は、PUの参照領域を含んでいる参照ピクチャのRefPicList0中の位置を示す参照インデックスを生成し得る。さらに、動き推定ユニット122は、PUのコーディングブロックと参照領域に関連付けられた参照ロケーションとの間の空間変位を示す動きベクトルを生成し得る。たとえば、動きベクトルは、現在ピクチャにおける座標から参照ピクチャにおける座標までのオフセットを与える2次元ベクトルであり得る。動き推定ユニット122は、PUの動き情報として、参照インデックスと動きベクトルとを出力し得る。動き補償ユニット124は、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに基づいて、PUの予測ブロックを生成し得る。
[0175]PUがBスライス中にある場合、動き推定ユニット122は、PUについての単予測または双予測を実行し得る。PUについての単予測を実行するために、動き推定ユニット122は、PUの参照領域についてRefPicList0の参照ピクチャまたは第2の参照ピクチャリスト(「RefPicList1」)を探索し得る。動き推定ユニット122は、PUの動き情報として、参照領域を含んでいる参照ピクチャのRefPicList0またはRefPicList1中の位置を示す参照インデックスと、PUの予測ブロックと参照領域に関連する参照ロケーションとの間の空間変位を示す動きベクトルと、参照ピクチャがRefPicList0中にあるのかRefPicList1中にあるのかを示す1つまたは複数の予測方向インジケータとを出力し得る。動き補償ユニット124は、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成し得る。
[0176]PUについての双方向インター予測を実行するために、動き推定ユニット122は、PUの参照領域についてRefPicList0中の参照ピクチャを探索し得、またPUの別の参照領域についてRefPicList1中の参照ピクチャを探索し得る。動き推定ユニット122は、参照領域を含んでいる参照ピクチャのRefPicList0およびRefPicList1中の位置を示す参照インデックスを生成し得る。さらに、動き推定ユニット122は、参照領域に関連する参照ロケーションとPUの予測ブロックとの間の空間変位を示す動きベクトルを生成し得る。PUの動き情報は、PUの参照インデックスと動きベクトルとを含み得る。動き補償ユニット124は、PUの動きベクトルによって示された参照ロケーションにおける実際のまたは補間されたサンプルに少なくとも部分的に基づいて、PUの予測ブロックを生成し得る。
[0177]いくつかの例では、動き推定ユニット122はPUに関するマージ候補リストを生成することができる。マージ候補リストを生成する一環として、動き推定ユニット122は、IPMVCおよび/またはテクスチャマージ候補を決定することができる。IPMVCおよび/またはテクスチャマージ候補を決定するとき、動き推定ユニット122は、PUをサブPUに区分し、それらのサブPUに関する動きパラメータを決定するために、特定の順序に従って、それらのサブPUを処理することができる。本開示の1つまたは複数の技法によれば、それぞれのサブPUのための参照ブロックが動き補償予測を使用してコーディングされない場合、その特定の順序の任意の後のサブPUのための参照ブロックは動き補償予測を使用してコーディングされるという後続の決定に応答して、動き推定ユニット122はそれぞれのサブPUの動きパラメータを設定しない。むしろ、それぞれのサブPUのための参照ブロックが動き補償予測を使用してコーディングされない場合、動き推定ユニット122は、それぞれのサブPUの動きパラメータをデフォルト動きパラメータに設定することができる。IPMVCまたはテクスチャマージ候補がマージ候補リスト中の選択されたマージ候補である場合、動き補償ユニット124は、IPMVCまたはテクスチャマージ候補によって指定された動きパラメータに基づいて、それぞれのPUのための予測ブロックを決定することができる。
[0178]イントラ予測処理ユニット126は、PUに対してイントラ予測を実行することによって、PU用の予測データを生成することができる。PUの予測データは、PUの予測ブロックと、様々なシンタックス要素とを含み得る。イントラ予測処理ユニット126は、Iスライス内、Pスライス内、およびBスライス内のPUに対してイントラ予測を実行することができる。
[0179]PUに対してイントラ予測を実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUについて複数セットの予測データを生成し得る。特定のイントラ予測モードを使用してイントラ予測を実行するとき、イントラ予測処理ユニット126は、隣接ブロックからのサンプルの特定のセットを使用してPUの予測ブロックを生成し得る。隣接ブロックは、PU、CU、およびCTUについて左から右、上から下の符号化順序を仮定すると、PUの予測ブロックの上、右上、左上、または左にあり得る。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば33個の方向のイントラ予測モードを使用することができる。いくつかの例では、イントラ予測モードの数はPUの予測ブロックのサイズに依存し得る。
[0180]予測処理ユニット100は、PUについてインター予測処理ユニット120によって生成された予測データ、またはPUについてイントラ予測処理ユニット126によって生成された予測データの中から、CUのPUの予測データを選択することができる。いくつかの例では、予測処理ユニット100は、これらの組の予測データのレート/歪み測定基準に基づいて、CUのPUについての予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択された予測ブロックと呼ばれることがある。
[0181]残差生成ユニット102は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロック、ならびにCUのPUの選択された予測ルーマブロック、予測Cbブロック、および予測Crブロックに基づいて、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロックを生成し得る。たとえば、残差生成ユニット102は、残差ブロック中の各サンプルが、CUのコーディングブロック中のサンプルとCUのPUの対応する選択された予測ブロック中の対応するサンプルとの間の差分に等しい値を有するように、CUの残差ブロックを生成し得る。
[0182]変換処理ユニット104は、4分木区分を実行して、CUの残差ブロックをCUのTUに関連付けられた変換ブロックに区分し得る。したがって、TUは、ルーマ変換ブロックと、2つの対応するクロマ変換ブロックとに関連付けられ得る。CUのTUのルーマ変換ブロックおよびクロマ変換ブロックのサイズおよび位置は、CUのPUの予測ブロックのサイズおよび位置に基づくことも基づかないこともある。
[0183]変換処理ユニット104は、TUの変換ブロックに1つまたは複数の変換を適用することによって、CUのTUごとに変換係数ブロックを生成し得る。変換処理ユニット104は、TUに関連付けられた変換ブロックに様々な変換を適用し得る。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向性変換、または概念的に同様の変換を変換ブロックに適用し得る。いくつかの例において、変換処理ユニット104は変換ブロックに変換を適用しない。そのような例では、変換ブロックは変換係数ブロックとして扱われてもよい。
[0184]量子化ユニット106は、係数ブロック内の変換係数を量子化し得る。量子化プロセスは、変換係数の一部または全部に関連付けられたビット深度を低減し得る。たとえば、量子化中にnビット変換係数はmビット変換係数に切り捨てられ得、ただし、nはmよりも大きい。量子化ユニット106は、CUに関連付けられた量子化パラメータ(QP)値に基づいてCUのTUに関連付けられた係数ブロックを量子化し得る。ビデオエンコーダ20は、CUに関連付けられたQPの値を調整することによって、CUに関連付けられた係数ブロックに適用される量子化の程度を調整することができる。量子化は情報の損失をもたらす恐れがあり、したがって、量子化変換係数は、元の係数よりも低い精度を有することがある。
[0185]逆量子化ユニット108および逆変換処理ユニット110は、それぞれ、係数ブロックに逆量子化および逆変換を適用して、係数ブロックから残差ブロックを再構成し得る。再構成ユニット112は、再構成された残差ブロックを、予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに加算して、TUに関連付けられた再構成された変換ブロックを生成し得る。ビデオエンコーダ20は、このようにCUの各TUのための変換ブロックを再構成することによってCUのコーディングブロックを再構成し得る。
[0186]フィルタユニット114は、1つまたは複数のデブロッキング演算を実行して、CUに関連付けられたコーディングブロック中のブロッキングアーティファクトを低減し得る。復号ピクチャバッファ116は、フィルタユニット114が、再構成されたコーディングブロックに対して1つまたは複数のデブロッキング演算を実行した後、再構成されたコーディングブロックを記憶し得る。インター予測処理ユニット120は、再構成されたコーディングブロックを含んでいる参照ピクチャを使用して、他のピクチャのPUに対してインター予測を実行し得る。加えて、イントラ予測処理ユニット126は、復号ピクチャバッファ116内の再構成されたコーディングブロックを使用して、CUと同じピクチャ内の他のPUに対してイントラ予測を実行することができる。
[0187]エントロピー符号化ユニット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によって生成されたエントロピー符号化データを含むビットストリームを出力し得る。
[0188]図15は、本開示の技法を実装し得る例示的なビデオデコーダ30を示すブロック図である。図15は、説明のために提供されるものであり、本開示において広く例示し説明する技法を限定するものではない。説明の目的で、本開示は、HEVCコーディングのコンテキストにおいてビデオデコーダ30を記載する。しかしながら、本開示の技法は、他のコーディング規格または方法に適用可能であり得る。
[0189]図15の例では、ビデオデコーダ30は、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構成ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164とイントラ予測処理ユニット166とを含む。他の例では、ビデオデコーダ30は、より多いか、より少ないか、または異なる機能構成要素を含み得る。
[0190]コード化ピクチャバッファ(CPB)151は、ビットストリームの符号化ビデオデータ(たとえば、NALユニット)を受信し、記憶し得る。エントロピー復号ユニット150は、CPB151からNALユニットを受信し、NALユニットをパースして、ビットストリームからシンタックス要素を取得し得る。エントロピー復号ユニット150は、NALユニット中のエントロピー符号化されたシンタックス要素をエントロピー復号し得る。予測処理ユニット152、逆量子化ユニット154、逆変換処理ユニット156、再構成ユニット158、およびフィルタユニット160は、ビットストリームから抽出されたシンタックス要素に基づいて復号ビデオデータを生成することができる。
[0191]ビットストリームのNALユニットは、コード化スライスNALユニットを含み得る。ビットストリームを復号することの一部として、エントロピー復号ユニット150は、コード化スライスNALユニットからシンタックス要素を抽出し、エントロピー復号し得る。コード化スライスの各々は、スライスヘッダと、スライスデータとを含み得る。スライスヘッダは、スライスに関するシンタックス要素を含み得る。
[0192]ビットストリームからシンタックス要素を得ることに加えて、ビデオデコーダ30は、CUに対して復号演算を実行し得る。CUに対して復号演算を実行することによって、ビデオデコーダ30はCUのコーディングブロックを再構成し得る。
[0193]CUに対して復号演算を実行することの一部として、逆量子化ユニット154は、CUのTUに関連付けられた係数ブロックを逆量子化(inverse quantize)、すなわち、量子化解除(de-quantize)し得る。逆量子化ユニット154は、TUのCUに関連付けられたQPの値を使用して、量子化の程度を決定することができ、同様に、逆量子化ユニット154が適用するための逆量子化の程度を決定することができる。つまり、圧縮比、すなわち、元のシーケンスと圧縮されたシーケンスとを表すために使用されるビット数の比は、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比はまた、採用されたエントロピーコーディングの方法に依存し得る。
[0194]逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、係数ブロックに1つまたは複数の逆変換を適用して、TUに関連付けられた残差ブロックを生成することができる。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネンレーベ変換(KLT)、逆回転変換、逆方向性変換、または別の逆変換を、係数ブロックに適用することができる。
[0195]イントラ予測を使用してPUが符号化される場合、イントラ予測処理ユニット166は、イントラ予測を実行して、PUについての予測ブロックを生成し得る。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的に隣接するPUの予測ブロックに基づいてPUの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成してもよい。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数のシンタックス要素に基づいてPUのイントラ予測モードを決定し得る。
[0196]予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて、第1の参照ピクチャリスト(RefPicList0)および第2の参照ピクチャリスト(RefPicList1)を構成し得る。さらに、インター予測を使用してPUが符号化される場合、エントロピー復号ユニット150は、PUの動き情報を取得し得る。動き補償ユニット164は、PUの動き情報に基づいて、PUの1つまたは複数の参照領域を決定し得る。動き補償ユニット164は、PUのための1つまたは複数の参照ブロックにおけるサンプルに基づいて、PUの予測ルーマブロック、予測Cbブロック、および予測Crブロックを生成し得る。
[0197]いくつかの例では、動き補償ユニット164はPUに関するマージ候補リストを生成することができる。マージ候補リストを生成する一環として、動き補償ユニット164は、IPMVCおよび/またはテクスチャマージ候補を決定することができる。IPMVCおよび/またはテクスチャマージ候補を決定するとき、動き補償ユニット164は、PUをサブPUに区分し、それらのサブPUの各々に関する動きパラメータを決定するために、特定の順序に従って、それらのサブPUを処理することができる。本開示の1つまたは複数の技法によれば、それぞれのサブPUのための参照ブロックが動き補償予測を使用してコーディングされない場合、その特定の順序の任意の後のサブPUのための参照ブロックは動き補償予測を使用してコーディングされるという後続の決定に応答して、動き補償ユニット164はそれぞれのサブPUの動きパラメータを設定しない。むしろ、それぞれのサブPUのための参照ブロックが動き補償予測を使用してコーディングされない場合、動き補償ユニット164は、それぞれのサブPUの動きパラメータをデフォルト動きパラメータに設定することができる。IPMVCまたはテクスチャマージ候補がマージ候補リスト中の選択されたマージ候補である場合、動き補償ユニット164は、IPMVCまたはテクスチャマージ候補によって指定された動きパラメータに基づいて、それぞれのPUのための予測ブロックを決定することができる。
[0198]再構成ユニット158は、CUのTUに関連付けられたルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックからの残差値、ならびにCUのPUの予測ルーマブロック、予測Cbブロック、および予測Crブロックが適用可能な場合にそれらを使用して、すなわち、イントラ予測データまたはインター予測データのいずれかを使用して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構成し得る。たとえば、再構成ユニット158は、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックのサンプルを予測ルーマブロック、予測Cbブロック、および予測Crブロックの対応するサンプルに加算して、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックを再構成し得る。
[0199]フィルタユニット160は、CUのルーマコーディングブロック、Cbコーディングブロック、およびCrコーディングブロックに関連付けられたブロッキングアーティファクトを低減するためにデブロッキング演算を実行し得る。ビデオデコーダ30は、CUのルーマコーディングブロックと、Cbコーディングブロックと、Crコーディングブロックとを復号ピクチャバッファ162に記憶してもよい。復号ピクチャバッファ162は、後続の動き補償、イントラ予測、および図1のディスプレイデバイス32などのディスプレイデバイス上での提示のために参照ピクチャを与え得る。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162中のルーマブロック、Cbブロック、およびCrブロックに基づいて、他のCUのPUに対してイントラ予測演算またはインター予測演算を実行し得る。このようにして、ビデオデコーダ30は、有意ルーマ係数ブロックの変換係数レベルをビットストリームから抽出し、変換係数レベルを逆量子化し、変換係数レベルに変換を適用して変換ブロックを生成し、変換ブロックに少なくとも部分的に基づいてコーディングブロックを生成し、コーディングブロックを表示のために出力し得る。
[0200]以下の部分は、(公開されている)3D−HEVCに対する例示的な復号プロセス変更を提供する。サブPU時間的ビュー間動きベクトル候補に関する導出プロセスにおいて、ビデオコーダは、最初に、PUレベルビュー間予測動きベクトル候補を生成することができる。中心参照サブPU(すなわち、ビュー間参照ブロック中の中心サブPU)がインター予測モードを用いてコーディングされ、参照ピクチャリストX中の中心参照サブPUの参照ピクチャが、現在スライスの参照ピクチャ中の1つのエントリのPOC値と同一のPOC値を有する場合、X=0または1に対して、PUレベルの予測動きベクトル候補として、その動きベクトルおよび参照ピクチャが使用される。さもなければ、ビデオコーダは、PUレベル予測動きベクトル候補として、参照ピクチャリスト0および(現在スライスがBスライスである場合)参照ピクチャリスト1に関して、0に等しい参照ピクチャインデックスを用いたゼロ動きを使用することができる。ビデオコーダは、次いで、その対応する参照ブロックがイントラ予測モードでコーディングされるか、またはインター予測モードでコーディングされるかのいずれかであるが、その参照ピクチャが現在スライスの参照ピクチャリスト中に含まれないサブPUの動きとして、PUレベル予測動きベクトル候補を使用することができる。
[0201]本開示の例は、3D−HEVC Draft Test 2(すなわち、文書JCT3V−F1001v2)に定義されたサブPUレベルのビュー間動き予測プロセス(または、サブ予測ブロック時間的ビュー間動きベクトル候補に関する導出プロセス)を変更し得る。本開示の1つまたは複数の例によれば、3D−HEVC Draft Text 2に追加されたテキストには下線が引かれ、3D−HEVC Draft Test 2から削除されたテキストは、イタリック体で標示され、二重角括弧で囲まれる。
復号プロセス
H.8.5.3.2.16 サブ予測ブロック時間的ビュー間動きベクトル候補のための導出プロセス
このプロセスは、iv_mv_pred_flag[nuh_layer_id]が0に等しい場合のみ呼び出される。
このプロセスへの入力は以下の通りである。
現在ピクチャの左上ルーマサンプルに対する現在予測ユニットの左上ルーマサンプルのルーマロケーション(xPb,yPb)、
現在予測ユニットの幅および高さをそれぞれ指定する変数nPbWならびにnPbH、
参照ビューインデックスrefViewIdx。
視差ベクトルmvDisp、
このプロセスの出力は以下の通りである。
Xが、時間的ビュー間動きベクトル候補が利用可能であるかどうかを指定する、両端値を含む、0から1の範囲であるフラグavailableFlagLXInterView、
Xが、両端値を含む、0から1の範囲である、時間的ビュー間動きベクトル候補mvLXInterView。
Xが、参照ピクチャリストRefPicListX中の参照ピクチャを指定する、両端値を含む、0から1の範囲である参照インデックスrefIdxLXinterView、
両端値を含む、0から1の範囲のXに関して、次のことが当てはまる。
フラグavailableFlagLXInterViewが0に等しいように設定される。
動きベクトルmvLXInterViewが(0,0)に等しいように設定される。
参照インデックスrefIdxLXInterViewが−1に等しいように設定される。
変数nSbWおよびnSbHが、以下のように導出される。
可変フラグcenterPredFlagLX、動きベクトルcenterMvLX、および参照インデックスcenterRefIdxLXを導出するために、次のことが当てはまる。
変数centerAvailableFlagが0に等しいように設定される。
両端値を含む、0から1の範囲のXの場合、次のことが当てはまる。
フラグcenterPredFlagLXが0に等しいように設定される。
動きベクトルcenterMvLXが(0,0)に等しいように設定される。
参照インデックスcenterRefIdxLXが−1に等しいように設定される。
参照レイヤルーマロケーション(xRef,yRef)は以下によって導出される。
変数ivRefPbは、ivRefPicによって指定されたビュー間参照ピクチャ中で(xRef,yRef)によって与えられるロケーションをカバーするルーマ予測ブロックを指定する。
ルーマロケーション(xIvRefPb,yIvRefPb)は、ivRefPicによって指定されたビュー間参照ピクチャの左上ルーマサンプルに対してivRefPbによって指定されたビュー間参照ルーマ予測ブロックの左上サンプルに等しいように設定される。
ivRefPbがイントラ予測モードでコーディングされないとき、両端値を含む、0から1の範囲のXに関して、次のことが当てはまる。
Xが0に等しいか、または現在スライスがBスライスであるとき、両端値を含む、Xから(1−X)の範囲のYに関して、次のことが当てはまる。
変数refPicListLYIvRef、predFlagLyIYRef、mvLYIvRef、およびrefIdxLYIvRefは、それぞれ、ピクチャivRefPicのRefPicListLY、PredFlagLY、MvLY、およびRefIdxLYに等しいように設定される。
predFlagLYIvRef[xIvRefPb][yIvRefPb]が1に等しいとき、両端値を含む、0からnum_ref_idx_1X_active_minus1までの各iに関して、次のことが当てはまる。
PicOrderCnt(refPicListLYIvRef[refIdxLYIvRef[xIvRefPb][yIvRefPb]])がPicOrderCnt(RefPicListLX[i])に等しく、centerPredFlagLxが0に等しいとき、次のことが当てはまる。
centerAvailableFlagが0に等しく、ivRefPicがIスライスでない場合、両端値を含む、0から1の範囲のXに関して、次のことが当てはまる。
両端値を含む、0から1の範囲のXに関して、次のことが当てはまる。
フラグavailableFlagLXInterViewがcenterPredFlagLXに等しいように設定される。
動きベクトルmvLXInterViewがcenterMvLXに等しいように設定される。
参照インデックスrefIdxLXInterViewがcenterRefIdxLXに等しいように設定される。
両端値を含む、0から(nPbH/nSbH−1)の範囲のyBlkに関して、および両端値を含む、0から(nPbW/nSbW−1)の範囲のxBlkに関して、次のことが当てはまる。
変数curAvailableFlagが0に等しいように設定される。
両端値を含む、0から1の範囲のXに関して、次のことが当てはまる。
フラグspPredFlagL1[xBlk][yBlk]が0に等しいように設定される。
動きベクトルspMvLXが(0,0)に等しいように設定される。
参照インデックスspRefIdxLX[xBlk][yBlk]が−1に等しいように設定される。
参照レイヤルーマロケーション(xRef,yRef)は以下によって導出される。
変数ivRefPbは、ivRefPicによって指定されるビュー間参照ピクチャ中で(xRef,yRef)によって与えられるロケーションをカバーするルーマ予測ブロックを指定する。
ルーマロケーション(xIvRefPb,yIvRefPb)は、ivRefPicによって指定されるビュー間参照ピクチャの左上ルーマサンプルに対してivRefPbによって指定されるビュー間参照ルーマ予測ブロックの左上サンプルに等しいように設定される。
ivRefPbがイントラ予測モードでコーディングされないとき、両端値を含む、0から1の範囲のXに関して、次のことが当てはまる。
0に等しいか、または現在スライスがBスライスであるとき、両端値を含む、Xから(1−X)の範囲のYに関して、次のことが当てはまる。
変数refPicListLYIvRef、predFlagLYIvRef[x][y]、mvLYIvRef[x][y]、およびrefIdxLYIvRef[x][y]は、それぞれ、ピクチャivRefPicのRefPicListLY、PredFlagLY[x][y]、MvLY[x][y]、およびRefIdxLY[x][y]に等しいように設定される。
predFlagLYIvRef[xIvRefPb][yIvRefPb]が1に等しいとき、両端値を含む、0からnum_ref_idx_1X_active_minus1までの各iに関して、次のことが当てはまる。
PicOrderCnt(refPicListLYIvRef[refIdxLYIvRef[xIvRefPb][yIvRefPb]])がPicOrderCnt(RefPicListLX[i])に等しく、spPredFlagLX[xBlk][yBlk]が0に等しいとき、次のことが当てはまる。
[[curAvailableFlagに応じて、次のことが当てはまる。
curAvailableFlagが1に等しいとき、次の順序ステップが当てはまる。
1.lastAvailableFlagが0に等しいとき、以下のことが当てはまる。
両端値を含む、0から1の範囲のXに関して、次のことが当てはまる。
curSubBockIdxが0よりも大きいとき、両端値を含む、0から(curSubBlockIdx−1)の範囲のkに関して、次のことが当てはまる。
変数iおよびkが、以下で指定されるように導出される。
両端値を含む、0から1の範囲のXに関して、次のことが当てはまる。
2.変数lastAvailableFlagが1に等しいように設定される。
3.変数xLastAvailおよびyLastAvailが、xBlkおよびyBlkに等しいように設定される。]]
[[さもなければ、(]]curAvailableFlagが0に等しい場合[[)、lastAvailableFlagが1に等しいとき]]、両端値を含む、0から1の範囲のXに関して、次のことが当てはまる。
[[変数curSubBlockIdxがcurSubBlockIdx+1に等しいように設定される]]。
復号プロセスにおいて後に呼び出される変数の導出プロセスで使用するために、x=0..nPbW−1およびy=0..nPbH−1に関して、次の割当てが行われる。
両端値を含む、0から1の範囲のXに関して、次のことが当てはまる。
変数SubPredFlagLX、SubPbMvLX、およびSubPbRefIdxLXが、以下で指定されるように導出される。
第8.5.3.2.9項におけるクロマ動きベクトルに関する導出プロセスは、入力として、SubPbMvLX[xPb+x][yPb+y]で呼び出され、出力はSubPbMvCLX[xPb+x][yPb+y]である。
[0202]図16Aは、本開示の一例による、インター予測を使用してCUを符号化するためのビデオデコーダ20の例示的な動作を示すフローチャートである。図16Aの例では、ビデオエンコーダ20は、現在CUの現在PUに関するマージ候補リストを生成することができる(200)。本開示の1つまたは複数の例によれば、ビデオエンコーダ20は、マージ候補リストが現在PUのサブPUに関する動き情報に基づく時間的ビュー間マージ候補を含むように、マージ候補リストを生成することができる。いくつかの例によれば、現在PUは深度PUであり得、ビデオエンコーダ20は、マージ候補リストが現在深度PUのサブPUに関する動き情報に基づくテクスチャマージ候補を含むように、マージ候補リストを生成することができる。さらに、いくつかの例では、ビデオエンコーダ20は、現在PUに関するマージ候補リストを生成するために、図17の動作を実行することができる。
[0203]現在PUに関するマージ候補リストを生成した後、ビデオエンコーダ20は、マージ候補リストからマージ候補を選択する(202)。いくつかの例では、ビデオエンコーダ20は、レート/ひずみ分析に基づいてマージ候補を選択し得る。さらに、ビデオエンコーダ20は、現在PUのための予測ブロックを決定する(204)ために、選択されたマージ候補の動き情報(たとえば、動きベクトルおよび参照インデックス)を使用することができる。ビデオエンコーダ20は、選択されたマージ候補のマージ候補リスト中の位置を示すマージ候補インデックスをシグナリングし得る(206)。
[0204]選択されたマージ候補が、本開示の例で説明するサブPUを使用して構成されるIPMVCまたはMVI候補(すなわち、テクスチャマージ候補)である場合、IPMVCまたはMVI候補は、現在PUの各サブPUに関する動きパラメータの別個のセット(たとえば、1つまたは複数の動きベクトルのセットおよび1つまたは複数の参照インデックスのセット)を指定することができる。ビデオエンコーダ20が現在PUのための予測ブロックを決定しているとき、ビデオエンコーダ20は、サブPUのための予測ブロックを決定するために、現在PUのサブPUの動きパラメータを使用することができる。ビデオエンコーダ20は、現在CUのサブPUのための予測ブロックをアセンブルすることによって、現在CUのための予測ブロックを決定することができる。
[0205]ビデオエンコーダ20は、現在CU中に何らかの残っているPUが存在するかどうかを決定することができる(208)。現在CU中に1つまたは複数の残っているPUが存在する場合(208の「YES」)、ビデオエンコーダ20は、現在PUとして、現在CUの別のPUで動作200〜208を繰り返すことができる。このようにして、ビデオエンコーダ20は、現在CUの各PUに対して動作200〜208を繰り返すことができる。
[0206]現在CUの残っているPUが何も存在しないとき(208の「いいえ」)、ビデオエンコーダ20は、現在CUに関する残差データを決定することができる(210)。いくつかの例では、残差データの各サンプルは、現在CUのコーディングブロック中のサンプルと、現在CUのPUの予測ブロック中の対応するサンプルとの間の差分を示すことができる。他の例では、ビデオエンコーダ20は、現在CUに関する残差データを決定することができる。ビデオエンコーダ20は、ビットストリーム中で残差データをシグナリングすることができる(212)。たとえば、ビデオエンコーダ20は、係数ブロックを生成し、それらの係数を量子化し、量子化された係数を示すシンタックス要素をエントロピー符号化し、エントロピー符号化されたシンタックス要素をビットストリーム内に含めるために、1つまたは複数の変換を残差データに適用することによって、ビットストリーム中で残差データをシグナリングすることができる。
[0207]図16Bは、本開示の一例による、インター予測を使用してCUを復号するためのビデオデコーダ30の例示的な動作を示すフローチャートである。図16Bの例では、ビデオデコーダ30は、現在CUの現在PUに関するマージ候補リストを生成することができる(220)。本開示の1つまたは複数の例によれば、ビデオデコーダ30は、マージ候補リストが現在PUのサブPUに関する動き情報に基づく時間的ビュー間マージ候補を含むように、マージ候補リストを生成することができる。いくつかの例では、現在PUは深度PUであり得、ビデオデコーダ30は、マージ候補リストが現在深度PUのサブPUに関する動き情報に基づくテクスチャマージ候補を含むように、マージ候補リストを生成することができる。さらに、いくつかの例では、ビデオデコーダ30は、現在PUに関するマージ候補リストを生成するために、図17の動作を実行することができる。
[0208]現在PUに関するマージ候補リストを生成した後、ビデオデコーダ30は、マージ候補リストから選択されたマージ候補を決定することができる(222)。いくつかの例では、ビデオデコーダ30は、ビットストリーム内でシグナリングされたマージ候補インデックスに基づいて、選択されたマージ候補を決定することができる。さらに、ビデオデコーダ30は、現在PUのための予測ブロックを決定する(224)ために、選択されたマージ候補の動きパラメータ(たとえば、動きベクトルおよび参照インデックス)を使用することができる。たとえば、ビデオデコーダ30は、現在PUのためのルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロックを決定するために、選択されたマージ候補の動きパラメータを使用することができる。
[0209]選択されたマージ候補が、本開示の例で説明するサブPUを使用して構成されるIPMVCまたはMVI候補である場合、IPMVCまたはMVI候補は、現在PUの各サブPUに関する動きパラメータの別個のセット(たとえば、1つまたは複数の動きベクトルのセットおよび1つまたは複数の参照インデックスのセット)を指定することができる。ビデオデコーダ30が現在PUのための予測ブロックを決定しているとき、ビデオデコーダ30は、サブPUのための予測ブロックを決定するために、現在PUのサブPUの動きパラメータを使用することができる。ビデオデコーダ30は、現在CUのサブPUのための予測ブロックをアセンブルすることによって、現在PUのための予測ブロックを決定することができる。
[0210]ビデオデコーダ30は、現在CU中に何らかの残っているPUが存在するかどうかを決定することができる(226)。現在CU中に1つまたは複数の残っているPUが存在する場合(226の「YES」)、ビデオデコーダ30は、現在PUとして、現在CUの別のPUで動作220〜226を繰り返すことができる。このようにして、ビデオデコーダ30は、現在CUの各PUに関する動作220〜226を繰り返すことができる。
[0211]現在CUの残っているPUが何もないとき(226の「いいえ」)、ビデオデコーダ30は、現在CUに関する残差データを決定することができる(228)。いくつかの例では、ビデオデコーダ30は、現在CUのPUの動きパラメータを決定するのと平行して、残差データを決定することができる。いくつかの例では、ビデオデコーダ30は、現在CUに関する残差データを決定することができる。さらに、ビデオデコーダ30は、現在CUのPUのための予測ブロックと、現在CUに関する残差データとに基づいて、現在CUのコーディングブロックを再構成することができる(230)。
[0212]図17は、本開示の一例による、現在ビューコンポーネント中の現在PUに関するマージ候補リストを構築するためのビデオコーダの例示的な動作を示すフローチャートである。図17の例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、空間マージ用候補を決定することができる(250)。空間マージ候補は、図3で、ロケーションA0、A1、B0、B1、およびB2をカバーするPUの動きパラメータを指定するマージ候補を含み得る。いくつかの例では、ビデオコーダは、MV−HEVC Test Model 4の第G.8.5.2.1.2項に記述されている動作を実行することによって、空間マージ候補を決定することができる。さらに、図17の例では、ビデオコーダは時間マージ用候補を決定することができる(252)。時間マージ用候補は、現在ビューコンポーネントとは異なる時間インスタンスである参照ビューコンポーネントのPUの動きパラメータを指定し得る。いくつかの例では、ビデオコーダは、3D−HEVC Test Model 4の第H.8.5.2.1.7項に記述されている動作を実行することによって、時間マージ候補を決定することができる。
[0213]さらに、ビデオコーダは、IPMVCおよびIDMVCを決定することができる(254)。本開示の例によれば、ビデオコーダは、サブPUレベルビュー間動き予測技法を使用して、IPMVCを生成することができる。したがって、IPMVCは、現在PUの各サブPUの動きパラメータを指定し得る。いくつかの例では、ビデオコーダは、IPMVCを決定するために、図19の動作を実行することができる。IDMVCは、現在PUについての視差ベクトルを指定し得る。いくつかの例では、ビデオコーダは、現在レイヤに関するビュー間動き予測フラグ(たとえば、iv_mv_pred_flag)が、ビュー間動き予測が現在レイヤに関して有効にされることを示すときだけ、IPMVCおよびIDMVCを決定することができる。現在レイヤは、現在ビューコンポーネントが属するレイヤであり得る。
[0214]さらに、図17の例では、ビデオコーダはVSPマージ候補を決定することができる(256)。いくつかの例では、ビデオコーダは、3D−HEVC Test Model 4の第H.8.5.2.1.12項に記述されている動作を実行することによって、VSPマージ候補を決定することができる。いくつかの例では、ビデオコーダは、現在レイヤに関するビュー合成予測フラグが、ビュー合成予測が現在レイヤに関して有効にされることを示すときだけ、VSPマージ候補を決定することができる。
[0215]さらに、ビデオコーダは、現在ビューコンポーネントが深度ビューコンポーネントであるかどうかを決定することができる(258)。現在ビューコンポーネントが深度ビューコンポーネントであると決定すること(258の「はい」)に応答して、ビデオコーダはテクスチャマージ候補を決定することができる(260)。テクスチャマージ候補は、現在(深度)ビューコンポーネントに対応するテクスチャビューコンポーネント中の1つまたは複数のPUの動き情報を指定し得る。本開示の1つまたは複数の例によれば、ビデオコーダは、サブPUレベル動き予測技法を使用して、テクスチャマージ候補を生成することができる。したがって、テクスチャマージ候補は、現在PUの各サブPUの動きパラメータを指定し得る。いくつかの例では、ビデオコーダは、テクスチャマージ候補を決定するために、図19の動作を実行することができる。ビデオコーダは、テクスチャマージコンポーネントが利用可能であるかどうか決定することができる(262)。テクスチャマージコンポーネントが利用可能であると決定すること(262の「はい」)に応答して、ビデオコーダは、テクスチャマージ候補をマージ候補リストに挿入することができる(264)。
[0216]現在ピクチャが深度ピクチャでないと決定すること(258の「いいえ」)に応答して、テクスチャマージ候補が利用可能でないと決定すること(262の「いいえ」)に応答して、またはテクスチャマージ候補をマージ候補リストに挿入した後、ビデオコーダは、IPMVCが利用可能かどうかを決定することができる(266)。ビデオコーダが、現在PUがベースビュー中にあるときなど、IPMVCを決定することが不可能であったとき、IPMVCは利用不可能であり得る。IPMVCが利用可能であると決定すること(268の「はい」)に応答して、ビデオコーダは、IPMVCをマージ候補リストに挿入することができる(268)。
[0217]IPMVCが利用可能でないと決定すること(266の「いいえ」)に応答して、またはIPMVCをマージ候補リストに挿入した後、ビデオコーダは、ロケーションA1(すなわち、A1空間マージ候補)に関する空間マージ候補が利用可能かどうかを決定することができる(270)。空間マージ候補に関連するロケーション(たとえば、ロケーションA0、A1、B0、B1、またはB2)をカバーするPUがイントラ予測を使用してコーディングされるとき、または現在スライスもしくは現在ピクチャの境界外部にあるとき、A1空間マージ候補など、空間マージ候補は利用可能であり得る。A1空間マージ候補が利用可能であると決定すること(270の「はい」)に応答して、ビデオコーダは、A1空間マージ候補の動きベクトルおよび参照インデックスがIPMVCの代表的な動きベクトルおよび代表的な参照インデックスに整合するかどうかを決定することができる(270)。A1空間マージ候補の動きベクトルおよび参照インデックスがIPMVCの代表的な動きベクトルおよび代表的な参照インデックスに整合しないと決定すること(272の「いいえ」)に応答して、ビデオコーダは、A1空間マージ候補をマージ候補リストに挿入することができる(274)。
[0218]上に示したように、ビデオコーダは、サブPUレベル動き予測技法を使用して、IPMVCおよび/またはテクスチャマージ候補を生成することができる。したがって、IPMVCおよび/またはテクスチャマージ候補は、複数の動きベクトルおよび複数の参照インデックスを指定し得る。したがって、ビデオコーダは、A1空間マージ候補の動きベクトルがIPMVCおよび/またはテクスチャマージ候補の代表的な動きベクトルに整合するかどうか、ならびにA1空間マージ候補の参照インデックスがIPMVCおよび/またはテクスチャマージ候補の代表的な参照インデックスに整合するかどうかを決定することができる。IPMVCの代表的な動きベクトルおよび代表的な参照インデックスは、本明細書において「PUレベルIPMVC」と呼ばれる場合がある。テクスチャマージ候補の代表的な動きベクトルおよび代表的な参照インデックスは、本明細書において「PUレベル動きパラメータ継承(MPI)候補」と呼ばれる場合がある。ビデオコーダは、様々な方法で、PUレベルIPMVCおよびPUレベルMPI候補を決定し得る。ビデオコーダがPUレベルIPMVCおよびPUレベルMPI候補をどのように決定し得るかの例は、本開示の他の箇所で説明される。
[0219]A1空間マージ候補が利用可能でないと決定すること(270の「いいえ」)に応答して、A1空間マージ候補の動きベクトルおよび参照インデックスがIPMVCの代表的な動きベクトルおよび代表的な参照インデックスに整合すると決定すること(272の「はい」)に応答して、またはA1空間マージ候補をマージ候補リストに挿入した後、ビデオコーダは、ロケーションB1(すなわち、B1空間マージ候補)に関する空間マージ候補が利用可能であるかどうかを決定することができる(276)。B1空間マージ候補が利用可能であると決定すること(276の「はい」)に応答して、ビデオコーダは、B1空間マージ候補の動きベクトルおよび参照インデックスがIPMVCの代表的な動きベクトルおよび代表的な参照インデックスに整合するかどうかを決定することができる(278)。B1空間マージ候補の動きベクトルおよび参照インデックスがIPMVCの代表的な動きベクトルおよび代表的な参照インデックスに整合しないと決定すること(278の「いいえ」)に応答して、ビデオコーダは、B1空間マージ候補をマージ候補リストに含めることができる(280)。
[0220]B1空間的動きベクトルが利用可能でないと決定すること(276の「いいえ」)に応答して、B1空間動きベクトルの動きベクトルおよび参照インデックスがIPMVCの代表的な動きベクトルおよび代表的な参照インデックスに整合すると決定すること(278の「はい」)に応答して、またはB1空間マージ候補をマージ候補リストに挿入した後、ビデオコーダは、ロケーションB0(すなわち、B0空間マージ候補)に関する空間マージ候補が利用可能であるかどうかを決定することができる(282)。B0空間マージ候補が利用可能であると決定すること(282の「はい」)に応答して、ビデオコーダは、B0空間マージ候補をマージ候補リストに挿入することができる(284)。
[0221]上で示したように、ビデオコーダは、様々な方法で、IPMVCの代表的な動きベクトルおよび代表的な参照インデックスを決定することができる。一例では、ビデオコーダは、現在PUのサブPUの中から、中央サブPUを決定することができる。この例では、中心サブPUは、現在PUのルーマ予測ブロックの中心ピクセルに最も近いサブPUである。予測ブロックの高さおよび/または幅は偶数のサンプルであり得るため、予測ブロックの「中心」ピクセルは、予測ブロックの真の中心に隣接するピクセルであり得る。さらに、この例では、ビデオコーダは、次いで、現在PUについての視差ベクトルを中心サブPUのルーマ予測ブロックの中心の座標に追加することによって、中心サブPUのためのビュー間参照ブロックを決定することができる。中心サブPUのためのビュー間参照ブロックが動き補償予測を使用してコーディングされる(すなわち、中心サブPUのためのビュー間参照ブロックが1つまたは複数の動きベクトルおよび参照インデックスを有する)場合、ビデオコーダは、PUレベルIPMVCの動き情報を中心サブPUのためのビュー間参照ブロックの動き情報に設定することができる。したがって、中心サブPUによって提供されるPUレベルIPMVCは、このサブPU候補を、空間的隣接候補A1およびB1など、他の候補でプルーニングするために使用され得る。たとえば、従来の候補(たとえば、A1空間マージ候補またはB1空間マージ候補)が中心サブPUによって作成される候補に等しい場合、他の従来の候補はマージ候補リストに追加されない。
[0222]B0空間マージ候補が利用可能でないと決定すること(282の「いいえ」)に応答して、またはB0空間マージ候補をマージ候補リストに挿入した後、ビデオコーダはIDMVCが利用可能であるかどうかと、IDMVCの動きベクトルおよび参照インデックスがA1空間マージ候補ならびにB1空間マージ候補の動きベクトルおよび参照インデックスと異なるかどうかとを決定することができる(286)。IDMVCが利用可能であり、IDMVCの動きベクトルおよび参照インデックスがA1空間マージ候補およびB1空間マージ候補の動きベクトルならびに参照インデックスと異なると決定すること(286の「はい」)に応答して、ビデオコーダはIDMVCをマージ候補リストに挿入することができる(288)。
[0223]IDMVCが利用可能でないと決定すること、またはIDMVCの動きベクトルおよび参照インデックスがA1空間マージ候補ならびにB1空間マージ候補の動きベクトルおよび参照インデックスと異ならないと決定すること(286の「いいえ」)に応答して、またはIDMVCをマージ候補リストに挿入した後、ビデオコーダは図18に示す(図17で「A」と示される)参照ピクチャリスト構築動作の一部を実行することができる。
[0224]図18は、本開示の一例による、図17の参照ピクチャリスト構築動作の継続を示すフローチャートである。図18の例では、ビデオコーダはVSPマージ候補が利用可能であるかどうかを決定することができる(300)。VSPマージ候補が利用可能であると決定すること(300の「はい」)に応答して、ビデオコーダは、VSPマージ候補をマージ候補リストに挿入することができる(302)。
[0225]VSPマージ候補が利用可能でないと決定すること(300の「いいえ」)に応答して、またはVSPマージ候補をマージ候補リストに挿入した後、ビデオコーダは、ロケーションA0(すなわち、A0空間マージ候補)に関する空間マージ候補が利用可能かどうかを決定することができる(304)。A0空間マージ候補が利用可能であると決定すること(304の「はい」)に応答して、ビデオコーダは、A0空間マージ候補をマージ候補リストに挿入することができる(306)。
[0226]さらに、A0空間マージ候補が利用可能でないと決定すること(306の「いいえ」)に応答して、またはA0空間マージ候補をマージ候補リストに挿入した後、ビデオコーダは、ロケーションB2(すなわち、B2空間マージ候補)に関する空間マージ候補が利用可能かどうかを決定することができる(308)。B2空間マージ候補が利用可能であると決定すること(308の「はい」)に応答して、ビデオコーダは、B2空間マージ候補をマージ候補リストに挿入することができる(310)。
[0227]B2空間マージ候補が利用可能でないと決定すること(308の「いいえ」)に応答して、またはB2空間マージ候補をマージ候補リストに挿入した後、ビデオコーダは、時間マージ候補が利用可能かどうかを決定することができる(312)。時間マージ候補が利用可能であると決定すること(312の「はい」)に応答して、ビデオコーダは、時間マージ候補をマージ候補リストに挿入することができる(314)。
[0228]さらに、時間マージ候補が利用可能でないと決定すること(312の「いいえ」)に応答して、または時間マージ候補をマージ候補リストに挿入した後、ビデオコーダは、現在スライスがBスライスであるかどうかを決定することができる(316)。現在スライスがBスライスであると決定すること(316の「はい」)に応答して、ビデオコーダは結合双予測マージ候補を導出することができる(318)。いくつかの例では、ビデオコーダは、3D−HEVC Test Model 4の第H.8.5.2.1.3項に記述されている動作を実行することによって、結合双予測マージ候補を導出することができる。
[0229]現在スライスがBスライスでないと決定すること(316の「はい」)に応答して、または結合双予測マージ用候補を導出した後、ビデオコーダはゼロ動きベクトルマージ候補を導出することができる(320)。ゼロ動きベクトルマージ候補は、0に等しい水平成分および垂直成分を有する動きベクトルを指定し得る。いくつかの例では、ビデオコーダは、3D−HEVC Test Model 4の第8.5.2.1.4項に記述されている動作を実行することによって、ゼロ動きベクトル候補を導出することができる。
[0230]図19は、本開示の一例による、IPMVCまたはテクスチャマージ候補を決定するためのビデオコーダの動作を示すフローチャートである。図19の例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は現在PUを複数のサブPUに分割することができる(348)。異なる例では、サブPUの各々のブロックサイズは、4×4、8×8、16×16、または別のサイズであり得る。
[0231]さらに、図19の例では、ビデオコーダはデフォルト動きベクトルおよびデフォルト参照インデックスを設定することができる(350)。異なる例では、ビデオコーダは、様々な方法で、デフォルト動きベクトルおよびデフォルト参照インデックスを設定することができる。いくつかの例では、デフォルト動きパラメータ(すなわち、デフォルト動きベクトルおよびデフォルト参照インデックス)は、PUレベル動きベクトル候補に等しい。さらに、いくつかの例では、ビデオコーダがIPMVCを決定しているか、またはテクスチャマージ候補を決定しているかに応じて、ビデオコーダはデフォルト動き情報を異なって決定することができる。
[0232]ビデオコーダがIPMVCを決定している、いくつかの例では、ビデオコーダは、3D−HEVC Test Model 4で定義されるように、現在PUの対応する領域の中心位置からPUレベルIPMVCを導出することができる。さらに、この例では、ビデオコーダは、デフォルト動きベクトルおよび参照インデックスをPUレベルIPMVCに等しいように設定することができる。たとえば、ビデオコーダは、デフォルト動きベクトルおよびデフォルト参照インデックスをPUレベルIPMVCに設定することができる。この例では、ビデオコーダは、現在PUに関する対応する領域の中心位置からPUレベルIPMVCを導出し得る。
[0233]ビデオコーダがIPMVCを決定している別の例では、ビデオコーダは、デフォルト動きパラメータを、参照ビュー中の参照ピクチャの座標(xRef,yRef)におけるピクセルをカバーするビュー間参照ブロックによって含まれた動きパラメータに設定することができる。ビデオコーダは、座標(xRef,yRef)を次のように決定することができる。
上の式で、(xP,yP)は、現在PUの左上サンプルの座標を示し、mvDispは視差ベクトルであり、nPSWxnPSHは現在PUのサイズであり、PicWidthInSamplesLおよびPicHeightInSamplesLは(現在ビューと同じ)参照ビュー中のピクチャの解像度を定義する。上の式では、二重鍵括弧内のイタリック体のテキストは、3D−HEVC Test Model 4の第H.8.5.2.1.10項の式H−124およびH−125から削除されたテキストを示す。
[0234]上で論じたように、3D−HEVC Test Model 4の第H.8.5.2.1.10項は、時間的ビュー間動きベクトル候補に関する導出プロセスを記述する。さらに、上で論じたように、式H−124およびH−125は、参照ピクチャ中の参照ブロックのルーマロケーションを決定するために、3D−HEVC Test Model 4の第H.8.5.2.1.10項で使用される。3D−HEVC Test Model 4の式H−124およびH−125と対照的に、この例の式はnPSWおよびnPSHから1を差し引かない。結果として、xRefおよびyRefは、現在PUの予測ブロックの真の中心の右側真下のピクセルの座標を示す。サンプル値の現在PUの予測ブロックの幅および高さは偶数であり得るため、現在PUの予測ブロックの真の中心においてサンプル値が存在しない場合がある。xRefおよびyRefが現在PUの予測ブロックの真の中心の左側真上のピクセルの座標を示すときに対して、RefおよびyRefが現在PUの予測ブロックの真の中心の右側真下のピクセルの座標を示すとき、コーディング利得が生じ得る。他の例では、ビデオコーダは、デフォルト動きベクトルおよびデフォルト参照インデックスを導出するために異なるピクセル(xRef,yRef)をカバーする他のブロックを使用することができる。
[0235]ビデオコーダがIPMVCを決定しているとき、ビデオコーダがデフォルト動きパラメータをどのように設定し得るかの別の例では、現在PUのサブPUの動きパラメータを設定するのに先立って、ビデオコーダは、現在PUのすべてのサブPUの中から、現在PUのルーマ予測ブロックの中心ピクセルに最も近いサブPUを選定することができる。ビデオコーダは、次いで、選定されたサブPUに関して、参照ビューコンポーネント中の参照ブロックを決定することができる。言い換えれば、ビデオコーダは、選定されたサブPUのためのビュー間参照ブロックを決定することができる。選定されたサブPUのビュー間参照ブロックが動き補償予測を使用してコーディングされるとき、ビデオコーダは、デフォルト動きベクトルおよびデフォルト参照インデックスを導出するために、選定されたサブPUのためのビュー間参照ブロックを使用することができる。言い換えれば、ビデオコーダは、デフォルト動きパラメータを、現在PUのルーマ予測ブロックの中心ピクセルに最も近い参照ブロックのサブPUの動きパラメータに設定することができる。
[0236]このようにして、ビデオコーダは、現在PUの予測ブロックと同じサイズを有する、参照ピクチャ中の参照ブロックを決定することができる。さらに、ビデオコーダは、参照ブロックのサブPUの中から、参照ブロックの中心ピクセルに最も近いサブPUを決定することができる。ビデオコーダは、参照ブロックの決定されたサブPUの動きパラメータからデフォルト動きパラメータを導出することができる。
[0237]ビデオコーダは、様々な方法で、参照ブロックの中心ピクセルに最も近いサブPUを決定することができる。たとえば、サブPUサイズが2U×2Uであると仮定すると、ビデオコーダは、現在PUのルーマ予測ブロックの左上サンプルに対して次の座標を有するサブPUを選定することができる。(((nPSW>>(u+1))−1)<<u,(((nPSH>>(u+1))−1)<<u)。それ以外に記載された、参照ブロックの中心ピクセルに最も近いサブPUは、参照ブロックの左上サンプルに対して次の座標を有するピクセルを含む。(((nPSW>>(u+1))−1)<<u,(((nPSH>>(u+1))−1)<<u)。代替的に、ビデオコーダは、現在PUのルーマ予測ブロックの左上サンプルに対する次の座標相対的座標を有するサブPUを選定することができる((nPSW>>(u+1))<<u,(nPSH>>(u+1))<<u)。それ以外に記載された、参照ブロックの中心ピクセルに最も近いサブPUは、参照ブロックの左上サンプルに対して次の座標を有するピクセルを含む。((nPSW>>(u+1))<<u,(nPSH>>(u+1))<<u)。これらの式では、nPSWおよびnPSHは、それぞれ、現在PUのルーマ予測ブロックの幅および高さである。このようにして、一例では、ビデオコーダは、現在PUの複数のサブPUの中から、現在PUのルーマ予測ブロックの中心ピクセルに最も近いサブPUを決定することができる。この例では、ビデオコーダは、決定されたサブPUのためのビュー間参照ブロックからデフォルト動きパラメータを導出することができる。
[0238]ビデオコーダがIPMVCを決定している他の例では、デフォルト動きベクトルはゼロ動きベクトルである。さらに、いくつかの例では、デフォルト参照インデックスは、現在参照ピクチャリスト中の第1の利用可能な時間的参照ピクチャ(すなわち、現在ピクチャとは異なる時間インスタンス中の参照ピクチャ)に等しいか、またはデフォルト参照インデックスは0に等しくてもよい。言い換えれば、デフォルト動きパラメータは、デフォルト動きベクトルとデフォルト参照インデックスを含み得る。ビデオコーダは、デフォルト動きベクトルをゼロ動きベクトルに設定することができ、デフォルト参照インデックスを、0、または現在参照ピクチャリスト中の第1の利用可能な時間的参照ピクチャに設定することができる。
[0239]たとえば、現在スライスがPスライスである場合、デフォルト参照インデックスは、現在ピクチャのRefPicList0中の第1の利用可能な時間的参照ピクチャ(すなわち、最小参照インデックスを有する、現在ピクチャのRefPicList0中の時間的参照ピクチャ)を示し得る。さらに、現在スライスがBスライスであり、RefPicList0からのインター予測は有効にされるが、現在ピクチャのRefPicList1からのインター予測は有効にされない場合、デフォルト参照インデックスは、現在ピクチャのRefPicList0中の第1の利用可能な時間的参照ピクチャを示し得る。現在スライスがBスライスであり、現在ピクチャのRefPicList1からのインター予測は有効にされるが、現在ピクチャのRefPicList0からのインター予測は有効にされない場合、デフォルト参照インデックスは、現在ピクチャのRefPicList1中の第1の利用可能な時間的参照ピクチャ(すなわち、最小参照インデックスを有する、現在ピクチャのRefPicList1中の時間的参照ピクチャ)を示し得る。現在スライスがBスライスであり、現在ピクチャのRefPicList0および現在ピクチャのRefPicList1からのインター予測が有効にされる場合、デフォルトRefPicList0参照インデックスは、現在ピクチャのRefPicList0中の第1の利用可能な時間的参照ピクチャを示し得、デフォルトRefPicList1参照インデックスは、現在ピクチャのRefPicList1中の第1の利用可能な時間的参照ピクチャを示し得る。
[0240]さらに、ビデオコーダがIPMVCを決定しているとき、デフォルト動きパラメータを決定するための、上で与えられたいくつかの例では、ビデオコーダは、デフォルト動きパラメータを、現在PUのルーマ予測ブロックの中心ピクセルに最も近いサブPUの動きパラメータに設定することができる。しかしながら、これらの例および他の例では、デフォルト動きパラメータは利用不可能な状態に留まる場合がある。たとえば、現在PUのルーマ予測ブロックの中心ピクセルに最も近いサブPUに対応するビュー間参照ブロックがイントラ予測される場合、デフォルト動きパラメータは利用不可能な状態に留まる場合がある。したがって、いくつかの例では、デフォルト動きパラメータが利用不可能であり、第1のサブPUのためのビュー間参照ブロックが動き補償予測を使用してコーディングされる(すなわち、第1のサブPUのためのビュー間参照ブロックが利用可能な動き情報を有する)とき、ビデオコーダは、デフォルト動きパラメータを第1のサブPUの動きパラメータに設定することができる。この例では、第1のサブPUは、現在PUのサブPUのラスタ走査順序で現在PUの第1のサブPUであり得る。したがって、デフォルト動きパラメータを決定するとき、ビデオコーダは、複数のサブPUのラスタ走査順序で第1のサブPUが利用可能な動きパラメータを有すると決定することに応答して、デフォルト動きパラメータを複数のサブPUのラスタ走査順序で第1のサブPUの利用可能な動きパラメータに設定することができる。
[0241]さもなければ、デフォルト動き情報が利用不可能であるとき(たとえば、第1のサブPUのためのビュー間参照ブロックの動きパラメータが利用不可能であるとき)、現在サブPU行の第1のサブPUが利用可能な動きパラメータを有する場合、ビデオコーダは、デフォルト動き情報を、現在サブPU行の第1のサブPUの動きパラメータに設定することができる。デフォルト動きパラメータが依然として利用不可能であるとき(たとえば、現在サブPU行の第1のサブPUのためのビュー間参照ブロックが利用不可能であるとき)、ビデオコーダは、デフォルト動きベクトルをゼロ動きベクトルに設定することができ、デフォルト参照インデックスを現在参照ピクチャリスト中の第1の利用可能な時間的参照ピクチャに等しいように設定することができる。このようにして、ビデオコーダがデフォルト動きパラメータを決定しているとき、ビデオコーダは、それぞれのサブPUを含むサブPUの行の第1のサブPUが利用可能な動きパラメータを有すると決定することに応答して、デフォルト動きパラメータを、それぞれのサブPUを含むサブPUの行の第1のサブPUの利用可能な動きパラメータに設定することができる。
[0242]さらに、図17の例に関して上で説明したように、ビデオコーダは、サブPUレベル動き予測技法を使用して、テクスチャマージ候補を決定することができる。そのような例では、現在PUは、本明細書では「現在深度PU」と呼ばれる場合がある。ビデオコーダは、テクスチャマージ候補を決定するために、図19の動作を実行することができる。したがって、ビデオコーダがテクスチャマージ候補を決定しているとき、ビデオコーダは、現在深度PUをいくつかのサブPUに分割することができ、各サブPUは、動き補償に関するコロケートテクスチャブロックの動き情報を使用する。さらに、ビデオコーダがテクスチャマージ候補を決定しているとき、サブPUの対応するテクスチャブロックがイントラコーディングされるか、または対応するテクスチャブロックの参照ピクチャと同じアクセスユニット中のピクチャが現在深度PUの参照ピクチャリスト中に含まれない場合、ビデオコーダは、デフォルト動きベクトルおよびデフォルト参照インデックスをサブPUに割り当てることができる。したがって、概して、コロケートテクスチャブロックがイントラコーディングされず、コロケートテクスチャブロックによって使用される参照ピクチャが現在深度ピクチャの参照ピクチャリスト中にあるとき、ビデオコーダは、コロケートテクスチャブロックが利用可能な動き情報を有すると決定することができる。反対に、コロケートテクスチャブロックがイントラコーディングされるか、またはコロケートテクスチャブロックが現在深度ピクチャの参照ピクチャリスト中にない参照ピクチャを使用するとき、コロケートテクスチャブロックの動きパラメータは利用不可能であり得る。
[0243]上で示したように、ビデオコーダがIPMVCを決定しているか、またはテクスチャマージ候補を決定しているかに応じて、ビデオコーダはデフォルト動き情報を異なって決定することができる。たとえば、ビデオコーダがテクスチャマージ候補を決定しているとき、ビデオコーダは、次の例または他の例のうちの1つに従って、デフォルト動きベクトルおよびデフォルト参照インデックスを決定することができる。一例では、コロケートテクスチャブロックは、現在深度PUでコロケートされ得、現在深度PUと同じサイズを有し得る。この例では、ビデオコーダは、デフォルト動きベクトルおよびデフォルト参照インデックスを、コロケートテクスチャブロックの中心ピクセルをカバーするブロックの動き情報に設定する。
[0244]したがって、いくつかの例では、ワー現在ピクチャは深度ビューコンポーネントであり、参照ピクチャは、現在ピクチャと同じビューおよびアクセスユニット中にあるテクスチャビューコンポーネントである、ビデオコーダは、デフォルト動きパラメータを、現在PUとコロケートされた、現在PUと同じサイズを有する参照ピクチャ中にある参照ブロックのピクセルをカバーするブロックに関連付けられた動きパラメータに設定することができる。そのような例では、ピクセルは、参照ブロックの中心ピクセルであり得るか、または参照ブロックの別のピクセルであり得る。
[0245]ビデオコーダがテクスチャマージ候補を決定している別の例では、コロケートテクスチャブロックは現在深度PUと同じサイズを有し得る。この例では、ビデオコーダは、デフォルト動きベクトルおよびデフォルト参照インデックスをコロケートテクスチャブロック内の任意の所与のピクセルをカバーするブロック(たとえば、PU)の動き情報に設定することができる。
[0246]ビデオコーダがテクスチャマージ候補を決定している別の例では、ビデオコーダは、まず、現在深度PUの中心サブPUを選定することができる。現在深度PUのすべてのサブPUの中で、中心サブPUは、現在深度PUの予測ブロックの中心ピクセルに最も近く位置特定され得る(または中心ピクセルを含み得る)。ビデオコーダは、次いで、デフォルト動きベクトルおよびデフォルト参照インデックスを導出するために、中心サブPUとコロケートされたテクスチャブロックを使用することができる。サブPUサイズが2U×2Uであると仮定すると、ビデオコーダは、中心サブPUが、現在深度PUの予測ブロックの左上サンプル(したがって、コロケートテクスチャブロックの左上サンプル)に対して次の座標を有するサブPUであると決定することができる。(((nPSW>>(u+1))−1)<<u,(((nPSH>>(u+1))−1)<<u)。代替的に、ビデオコーダは、中心サブPUの相対的座標は以下であると決定することができる。((nPSW>>(u+1))<<u,(nPSH>>(u+1))<<u)。これらの式では、nPSWおよびnPSHは、それぞれ、現在深度PUの予測ブロックの幅および高さである。
[0247]このようにして、一例では、ビデオコーダは、現在PUの複数のサブPUの中から、現在PUの予測ブロックの中心に最も近いサブPUを決定することができる。この例では、ビデオコーダは、決定されたサブPUのためのコロケートテクスチャブロックからデフォルト動きパラメータを導出することができる。
[0248]ビデオコーダがテクスチャマージ候補を決定しており、(たとえば、中心サブPUのためのコロケートテクスチャブロックの動きパラメータが利用不可能であるとき)デフォルト動き情報が利用不可能である、いくつかの例では、ビデオコーダは、現在深度PUの第1のサブPUのためのコロケートテクスチャブロックが利用可能な動き情報を有するかどうかを決定することができる。現在深度PUの第1のサブPUは、現在深度PUのサブPUのラスタ走査順序で現在深度PUの第1のサブPUであり得る。現在深度PUの第1のサブPUのためのコロケートテクスチャブロックの動きパラメータが利用可能である場合、ビデオコーダは、デフォルト動きパラメータを、現在深度PUの第1のサブPUの動きパラメータに設定することができる。
[0249]さらに、ビデオコーダがテクスチャマージ候補を決定している、いくつかの例では、デフォルト動き情報が利用不可能であるとき(たとえば、第1のサブPUのためのコロケートテクスチャブロックの動きパラメータが利用不可能であるとき)、現在サブPU行の第1のサブPUが利用可能な動き情報を有する場合、ビデオコーダは、デフォルト動き情報を、現在サブPU行の第1のサブPUの動き情報に設定する。さらに、デフォルト動き情報が利用不可能であるとき(たとえば、現在サブPU行の第1のサブPUの動き情報が利用不可能であるとき)、デフォルト動きベクトルはゼロ動きベクトルであり、デフォルト参照インデックスは現在参照ピクチャリスト中の第1の利用可能な時間的参照ピクチャまたは0に等しい。
[0250]ビデオコーダがテクスチャマージ候補を決定している、いくつかの例では、デフォルト動きベクトルはゼロ動きベクトルであり、デフォルト参照インデックスは、現在参照ピクチャリスト中の第1の利用可能な時間的参照ピクチャまたは0に等しい。
[0251]ビデオコーダがIPMVCを決定しているか、またはテクスチャマージ候補を決定しているかにかかわらず、ビデオコーダは、現在PU全体に関するデフォルト動き情報を設定することができる。したがって、ビデオコーダは、空間的隣接ブロック、(このPUを含むピクチャがTMVPの間にコロケートピクチャとして使用されるとき)時間的隣接ブロックを予測するため、またはデブロッキングのためのいずれかで、現在PU中により多くの動きベクトルを記憶する必要がない。
[0252]さらに、ビデオコーダは、PUレベル動きベクトル候補を決定することができる(352)。たとえば、ビデオコーダがIPMVCを決定しているか、またはテクスチャマージ候補を決定しているかに応じて、ビデオコーダはPUレベルIPMVCまたはPUレベル動きパラメータ継承(MPI)候補(すなわち、PUレベルテクスチャマージ候補)を決定することができる。ビデオコーダは、PUレベル動きベクトル候補に基づいて、候補リスト中の1つまたは複数の空間マージ候補を含めるかどうかを決定することができる。いくつかの例では、PUレベル動きベクトル候補は、デフォルト動きパラメータと同じ動きパラメータを指定する。
[0253]ビデオコーダがIPMVCを決定している、いくつかの例では、ビデオコーダは、3D−HEVC Test Model 4で定義されるように、現在PUの対応する領域の中心位置からPUレベルIPMVCを導出することができる。図17の例で説明したように、ビデオコーダは、マージ候補リスト中にA1空間マージ候補およびB1空間マージ候補を含めるかどうかを決定するために、IPMVC(すなわち、PUレベルIPMVC)の代表的な動きベクトルおよび代表的な参照インデックスを使用することができる。
[0254]ビデオコーダがIPMVCを決定している別の例では、ビデオコーダは、現在PUの視差ベクトルに基づいて、ビュー間参照ピクチャ中の参照ブロックを決定することができる。ビデオコーダは、次いで、参照ブロックの中心ピクセルをカバーするサブPU(すなわち、参照ブロックの中心ピクセルに最も近いサブPU)を決定することができる。この例では、ビデオコーダは、PUレベルIPMVCが参照ブロックの決定されたサブPUの動きパラメータを指定すると決定することができる。本開示の他の箇所で示すように、ビデオコーダは、様々な方法で、参照ブロックの中心ピクセルに最も近いサブPUを決定することができる。たとえば、サブPUサイズが2U×2Uであると仮定すると、参照ブロックの中心ピクセルに最も近いサブPUは、参照ブロックの左上サンプルに対して次の座標を有するピクセルを含む。(((nPSW>>(u+1))−1)<<u,(((nPSH>>(u+1))−1)<<u)。代替的に、参照ブロックの中心ピクセルに最も近いサブPUは、参照ブロックの左上サンプルに対して次の座標を有するピクセルを含む。((nPSW>>(u+1))<<u,(nPSH>>(u+1))<<u)。これらの式では、nPSWおよびnPSHは、それぞれ、現在PUのルーマ予測ブロックの幅および高さである。この例では、ビデオコーダは、PUレベルIPMVCとして決定されたサブPUの動きパラメータを使用することができる。PUレベルIPMVCは、IPMVCの代表的な動きベクトルおよび代表的な参照インデックスを指定し得る。このようにして、ビデオコーダは、PUレベルIPMVCを決定するために、参照ブロックの中心ピクセルに最も近いサブPUの動きパラメータを使用することができる。言い換えれば、ビデオコーダは、現在PUの対応する領域の中心位置からPUレベルIPMVCを導出して、そのPUレベルIPMVCに基づいて、候補リスト中に空間マージ候補を含めるかどうかを決定することができる。サブPUから使用される動きパラメータは、ビデオコーダがIPMVCを作成するために使用した動きパラメータと同じであり得る。
[0255]ビデオコーダがテクスチャマージ候補を決定している、いくつかの例では、デフォルト動きパラメータに関して中心サブPUから使用される動き情報は、PUレベル動きパラメータ継承(MPI)候補を作成するために使用される動き情報と同じであり得る。ビデオコーダは、PUレベルMPI候補に基づいて、候補リスト中に空間マージ用候補を含めるかどうかを決定することができる。たとえば、A1空間マージ用候補およびPUレベルMPI候補が同じ動きベクトルおよび同じ参照インデックスを有する場合、ビデオコーダは、A1空間マージ用候補をマージ候補リストに挿入しない。同様に、B1空間マージ用候補およびA1空間マージ用候補、またはPUレベルMPI候補が同じ動きベクトルならびに同じ参照インデックスを有する場合、ビデオコーダは、B1をマージ候補リストに挿入しない。
[0256]図19の例では、ビデオコーダは、現在PUの現在サブPUに関して、参照ピクチャ中の参照サンプルロケーションを決定することができる(354)。参照ピクチャは、現在PUを含むピクチャ(すなわち、現在ピクチャ)とは異なるビュー中にあり得る。いくつかの例では、ビデオコーダは、現在PUについての視差ベクトルを現在サブPUの中心ピクセルの座標に追加することによって、参照ロケーションを決定することができる。現在PUが深度PUであるときなど、他の例では、参照サンプルロケーションは、現在深度PUの予測ブロックのサンプルとコロケートされ得る。
[0257]さらに、ビデオコーダは、現在サブPUのための参照ベクトルを決定することができる(356)。参照ブロックは、参照ピクチャのPUであってよく、決定された参照サンプルロケーションをカバーし得る。次に、ビデオコーダは、参照ブロックが動き補償予測を使用してコーディングされるかどうかを決定することができる(358)。たとえば、参照ブロックがイントラ予測を使用してコーディングされる場合、ビデオコーダは、参照ブロックが動き補償予測を使用してコーディングされないと決定することができる。参照ブロックが動き補償予測を使用してコーディングされる場合、参照ブロックは1つまたは複数の動きベクトルを有する。
[0258]参照ブロックが動き補償予測を使用してコーディングされると決定すること(358の「はい」)に応答して、ビデオコーダは、参照ブロックの動きパラメータに基づいて、現在サブPUの動きパラメータを設定することができる(360)。たとえば、ビデオコーダは、現在サブPUのRefPicList0動きベクトルを参照ブロックのRefPicList0動きベクトルに設定することができ、現在サブPUのRefPicList0参照インデックスを参照ブロックのRefPicList0参照インデックスに設定することができ、現在サブPUのRefPicList1動きベクトルを参照ブロックのRefPicList1動きベクトルに設定することができ、現在サブPUのRefPicList1参照インデックスを参照ブロックのRefPicList1参照インデックスに設定することができる。
[0259]他方で、参照ブロックが動き補償予測を使用してコーディングされないと決定すること(358の「いいえ」)に応答して、ビデオコーダは、現在サブPUの動きパラメータをデフォルト動きパラメータに設定することができる(362)。このようにして、図19の例では、現在サブPUのための参照ブロックが動き補償予測を使用してコーディングされないとき、ビデオコーダは、現在サブPUの動きパラメータを、動き補償予測を使用してコーディングされた参照ブロックを有する、最も近いサブPUの動きパラメータに設定しない。むしろ、ビデオコーダは、現在サブPUの動きパラメータをデフォルト動きパラメータに直接設定することができる。これは、コーディングプロセスのプロセスを簡素化および加速し得る。
[0260]現在サブPUの動き情報を設定した後、ビデオコーダは、現在PUが何らかの追加のサブPUを有するかどうかを決定することができる(364)。現在PUが1つまたは複数の追加のサブPUを有すると決定すること(364の「はい」)に応答して、ビデオコーダは、現在サブPUとして、現在PUのサブPUのうちの別の1つを用いて動作354〜364を実行することができる。このようにして、ビデオコーダは、現在PUのサブPUの各々の動きパラメータを設定することができる。他方で、現在PUの何の追加のサブPUも存在しないと決定すること(366の「いいえ」)に応答して、ビデオコーダは、現在PUに関するマージ候補リスト中に候補(たとえば、IPMVC)を含めることができる。候補は、現在PUのサブPUの各々の動きパラメータを指定し得る。
[0261]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアに実装される場合、機能は、1つもしくは複数の命令もしくはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行することができる。コンピュータ可読媒体は、たとえば、データ記憶媒体などの有形媒体、または、たとえば通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体に対応する、コンピュータ可読記憶媒体を含むことができる。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形コンピュータ可読記憶媒体、または、(2)信号もしくは搬送波などの通信媒体に対応することができる。データ記憶媒体は、本開示に記載された技法を実装するための命令、コードおよび/またはデータ構造を取り出すために、1つもしくは複数のコンピュータ、または1つもしくは複数のプロセッサによってアクセスできる任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含むことができる。
[0262]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ー(登録商標)ディスク(disk)およびブルーレイ(登録商標)ディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
[0263]命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)などの1つもしくは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路によって実行され得る。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書に記載された技法の実施に適した任意の他の構造のいずれかを指す場合がある。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/もしくはソフトウェアモジュール内に提供され得、または複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素中で十分に実装され得る。
[0264]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上で説明されたように、様々なユニットが、適切なソフトウェアおよび/またはファームウェアとともに、上で説明された1つまたは複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わされてもよく、または相互動作可能なハードウェアユニットの集合によって与えられてもよい。
[0265]様々な例について説明してきた。これらおよび他の例は、以下の特許請求の範囲内である。