[0037]本開示は、動きベクトル候補リストを利用する、マージモードおよび/または高度動きベクトル予測(AMVP:advanced motion vector prediction)のためなどの、3D−HEVCコーディングプロセスのための動きベクトル候補導出および新たな候補の追加の簡略化に関する。動きベクトル候補リストは、本明細書では候補リストとも呼ばれ、マージモードを指すとき、マージ候補リストまたはマージリストと呼ばれることもある。ビデオエンコーダは、同じビューの異なる時間インスタンスのピクチャ間の、または異なるビューの同じ時間インスタンスのピクチャ間の冗長性を低減するために、インター予測を実行し得る。以下で説明するように、コーディングユニット(CU)は複数の予測ユニット(PU)を有し得る。言い換えれば、複数のPUがCUに属し得る。ビデオエンコーダがインター予測を実行するとき、ビデオエンコーダは、PUのための動き情報をシグナリングし得る。PUの動き情報は、たとえば、参照ピクチャインデックス、動きベクトル、および予測方向インジケータを含み得る。
[0038]時間動きベクトルは、異なる時間インスタンスであるが同じビューからの参照フレームにおける、PUのビデオブロックとPUの参照ブロックとの間の変位を示し得る。視差動きベクトル(DMV)は、同じ時間インスタンスであるが異なるビューからの参照フレームにおける、PUのビデオブロックとPUの参照ブロックとの間の変位を示し得る。したがって、PUの参照ブロックは、PUのビデオブロックと類似の参照ピクチャの一部分であり得る。参照ブロックは、参照ピクチャインデックスおよび予測方向インジケータによって示される参照ピクチャの中で位置を特定され得る。
[0039]PUの動き情報を表すのに必要とされるビット数を低減するために、ビデオエンコーダは、マージモードまたは高度動きベクトル予測(AMVP)プロセスに従って、PUの各々のための候補リストを生成し得る。PUのための候補リストの中の各候補は、動き情報を示し得る。候補リストの中の候補のうちのいくつかによって示される動き情報は、他のPUの動き情報に基づき得る。たとえば、HEVCマージモードの場合、5つの空間候補ロケーションおよび1つの時間候補ロケーションがあり得る。後で説明するように、ビデオデコーダはまた、PUのための視差ベクトルに基づいて、1つまたは複数の動きベクトル候補(3D−HEVC候補)を決定し得る。いくつかの例では、ビデオエンコーダは、すでに決定された候補からの部分的な動きベクトルを組み合わせること、候補を修正すること、または単にゼロ動きベクトルを候補として挿入することによって、追加候補を生成し得る。これらの追加候補は、元の候補であるものと見なされず、本開示では仮想候補と呼ばれることがある。
[0040]本開示の技法は、一般に、ビデオエンコーダにおいて候補リストを生成するための技法、およびビデオデコーダにおいて同じ候補リストを生成するための技法に関する。ビデオエンコーダおよびビデオデコーダは、候補リストを構成するための同じ技法を実施することによって、同じ候補リストを生成することができる。たとえば、ビデオエンコーダとビデオデコーダの両方は、同じ数の候補(たとえば、マージモード用の5つまたは6つの候補、およびAMVPモード用の2つまたは3つの候補)を有するリストを構成し得る。
[0041]CUの1つのPUのための候補リストを生成した後、ビデオエンコーダは、候補リストから候補を選択し得、候補インデックスをビットストリームの中に出力し得る。選択された候補は、コーディングされているターゲットPUに最もぴったり一致する予測ブロックを指す動きベクトルを有する候補であり得る。候補インデックスは、候補リストの中での選択された候補の位置を示し得る。ビデオエンコーダはまた、PUの動き情報によって示される参照ブロックに基づいて、PUのための予測ビデオブロックを生成し得る。PUの動き情報は、選択された候補によって示される動き情報に基づいて決定可能であり得る。たとえば、マージモードでは、PUの動き情報は、選択された候補によって示される動き情報と同じであり得る。AMVPモードでは、PUの動き情報は、PUの動きベクトル差分、および選択された候補によって示される動き情報に基づいて決定され得る。ビデオエンコーダは、CUのPUの予測ビデオブロック、およびCUのための元のビデオブロックに基づいて、CUのための1つまたは複数の残差ビデオブロックを生成し得る。ビデオエンコーダは、次いで、1つまたは複数の残差ビデオブロックを、符号化するとともにビットストリームの中に出力し得る。
[0042]ビットストリームは、PUの候補リストの中の選択された候補を識別するデータを含み得る。ビデオデコーダは、PUの候補リストの中の選択された候補によって示される動き情報に基づいて、PUの動き情報を決定し得る。ビデオデコーダは、PUの動き情報に基づいて、PUのための1つまたは複数の参照ブロックを識別し得る。PUの1つまたは複数の参照ブロックを識別した後、ビデオデコーダは、PUの1つまたは複数の参照ブロックに基づいて、PUのための予測ビデオブロックを生成し得る。ビデオデコーダは、CUのPUのための予測ビデオブロック、およびCUのための1つまたは複数の残差ビデオブロックに基づいて、CUのためのビデオブロックを再構成し得る。
[0043]説明を簡単にするために、本開示は、ロケーションまたはビデオブロックを、CUまたはPUと様々な空間関係を有するものとして説明することがある。そのような説明は、ロケーションまたはビデオブロックが、CUまたはPUに関連付けられたビデオブロックと様々な空間関係を有することを意味すると解釈され得る。さらに、本開示は、ビデオコーダが現在コーディングしているPUを現在PUと呼ぶことがある。本開示は、ビデオコーダが現在コーディングしているCUを現在CUと呼ぶことがある。本開示は、ビデオコーダが現在コーディングしているピクチャを現在ピクチャと呼ぶことがある。
[0044]本開示は、概して、ベースのHEVC仕様に記載されているマージモードおよびAMVPモードを指すために、HEVCマージモードまたはHEVC AMVPモードという用語を使用する。本開示は、概して、新興の3D−HEVC規格に記載されているマージモードおよびAMVPモードを指すために、3D−HEVCマージモードおよび3D AMVPモードという用語を使用する。3D−HEVCマージモードは、候補リストを生成することの一部としてHEVCマージモードを使用し得るが、3D−HEVCマージモードは、3D−HEVCマージモード候補リストを生成するようにHEVCマージモード候補リストを修正し得る。3D−HEVCマージモードを実施するとき、たとえば、ビデオコーダは、HEVC候補を再配置し得、候補をHEVC候補に追加し得、または候補をHEVC候補から除去し得る。さらに、3D−HEVCマージリストはHEVC候補と3D−HEVC候補の両方を含んでよいが、HEVC候補リストはHEVC候補のみを含む。HEVC候補および3D−HEVC候補という用語は、概して、どのように候補が識別されるのかを指し、必ずしもどのタイプの動き情報(たとえば、時間またはビュー間)を候補が含むのかを暗示するとは限らない。
[0045]添付の図面は例を示す。添付の図面で参照番号によって示される要素は、以下の説明において同様の参照番号によって示される要素に対応する。本開示では、序数語(たとえば、「第1の」、「第2の」、「第3の」など)で始まる名称を有する要素は、必ずしもそれらの要素が特定の順序を有することを意味するとは限らない。むしろ、そのような序数語は、同じまたは同様のタイプの異なる要素を指すために使用されるにすぎない。
[0046]図1は、本開示で説明する動きベクトル候補リスト生成技法を実行するように構成され得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、宛先デバイス14によって後の時間において復号されるべき符号化ビデオデータを生成するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォン、いわゆる「スマート」パッドなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
[0047]システム10は、異なるビデオコーディング規格、プロプライエタリ(proprietary)規格、またはマルチビューコーディングの任意の他の方法に従って動作し得る。下記は、ビデオコーディング規格の数例を説明し、限定と見なされるべきではない。ビデオコーディング規格は、ITU−T H.261、ISO/IEC MPEG−1 Visualと、ITU−T H.262またはISO/IEC MPEG−2 Visualと、ITU−T H.263、ISO/IEC MPEG−4 Visualと、それのスケーラブルビデオコーディング(SVC)拡張およびマルチビュービデオコーディング(MVC)拡張を含む(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264とを含む。MVCの最新のジョイントドラフトは、「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2010年3月に記載されており、その内容全体が参照により本明細書に組み込まれる。MVCの別のジョイントドラフトは、「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2011年6月に記載されており、その内容全体が参照により本明細書に組み込まれる。いくつかの追加のビデオコーディング規格は、AVCに基づく、MVC+Dと3D−AVCとを含む。さらに、新たなビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)が、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)とのビデオコーディング共同研究部会(JCT−VC:Joint Collaboration Team on Video Coding)によって開発されている。
[0048]単に例示のために、本開示で説明する技法のうちのいくつかは、3D−HEVCビデオコーディング規格による例を用いて説明される。ただし、本開示で説明する技法は、これらの例示的な規格に限定されると見なされるべきではなく、マルチビューコーディングもしくは3Dビデオコーディングのための他のビデオコーディング規格(たとえば、3D−AVC)、または必ずしも特定のビデオコーディング規格に基づくとは限らないマルチビューコーディングもしくは3Dビデオコーディングに関連する技法に拡張可能であり得る。たとえば、本開示で説明する技法は、マルチビューコーディングのためのビデオエンコーダ/デコーダ(コーデック)によって実施され、ここで、マルチビューコーディングは、2つ以上のビューのコーディングを含む。
[0049]宛先デバイス14は、リンク16を介して、復号されるべき符号化ビデオデータを受信し得る。リンク16は、ソースデバイス12から宛先デバイス14へ符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク16は、ソースデバイス12が符号化ビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され得、宛先デバイス14へ送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースのネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る任意の他の機器を含み得る。
[0050]代替的に、符号化データは、出力インターフェース22からストレージデバイス34に出力されてもよい。同様に、符号化データは、入力インターフェースによってストレージデバイス34からアクセスされてもよい。ストレージデバイス34は、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性メモリもしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体などの、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイス34は、ソースデバイス12によって生成された符号化ビデオを保持し得るファイルサーバまたは別の中間ストレージデバイスに相当し得る。宛先デバイス14は、ストレージデバイス34からストリーミングまたはダウンロードを介して、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶すること、およびその符号化ビデオデータを宛先デバイス14へ送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準的なデータ接続を通じて符号化ビデオデータにアクセスし得る。このことは、ファイルサーバに記憶されている符号化ビデオデータにアクセスするのに好適なワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ストレージデバイス34からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0051]本開示の技法は、必ずしもワイヤレスの適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、および/またはビデオ電話のような適用例をサポートするために、一方向または双方向のビデオ伝送をサポートするように構成され得る。
[0052]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。以下でより詳細に説明するように、ビデオエンコーダ20は、本開示で説明する技法を実行するように構成され得る。いくつかの場合、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/もしくはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、またはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き携帯電話またはビデオ付き携帯電話を形成し得る。しかしながら、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤードの適用例に適用され得る。
[0053]キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータにより生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化ビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14へ直接送信され得る。符号化ビデオデータは同じく(または代替的に)、復号および/または再生のために宛先デバイス14または他のデバイスによって後でアクセスできるように、ストレージデバイス34に記憶されてもよい。
[0054]宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。以下でより詳細に説明するように、ビデオデコーダ30は、本開示で説明する技法を実行するように構成され得る。場合によっては、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を介して符号化ビデオデータを受信する。リンク16を介して通信されるかまたはストレージデバイス34上で提供される符号化ビデオデータは、ビデオデータを復号する際にビデオデコーダ30などのビデオデコーダによって使用するための、ビデオエンコーダ20によって生成された様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信される符号化ビデオデータとともに含められてよく、記憶媒体上に記憶されてよく、またはファイルサーバに記憶されてもよい。
[0055]ディスプレイデバイス32は、宛先デバイス14と統合されてよく、または宛先デバイス14の外部にあってもよい。いくつかの例では、宛先デバイス14は、集積ディスプレイデバイスを含んでよく、また、外部ディスプレイデバイスとインターフェースするように構成されてもよい。他の例では、宛先デバイス14は、ディスプレイデバイスであってもよい。一般に、ディスプレイデバイス32は、復号ビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのいずれかを備え得る。
[0056]図1に示さないが、いくつかの態様では、ビデオデコーダ30は各々、オーディオエンコーダおよびデコーダと統合されてよく、共通のデータストリームまたは別個のデータストリームの中でオーディオとビデオの両方の符号化を処理するのに適切なMUX−DEMUXユニットまたは他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0057]ビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなどの、様々な好適なエンコーダ回路機構のいずれかとして実装され得る。たとえば、本開示で説明する技法は、装置またはデバイスの観点から説明されることがある。一例として、装置またはデバイスは、ビデオデコーダ30(たとえば、ワイヤレス通信デバイスの一部としての宛先デバイス14)を含み得、ビデオデコーダ30は、本開示で説明する技法を実施する(たとえば、本開示で説明する技法に従ってビデオデータを復号する)ように構成された1つまたは複数のプロセッサを含み得る。別の例として、装置またはデバイスは、ビデオデコーダ30を含むマイクロプロセッサまたは集積回路(IC)を含んでよく、マイクロプロセッサまたはICは、宛先デバイス14または別のタイプのデバイスの一部であってよい。同じことが、ビデオエンコーダ20に対して適用され得る(すなわち、ソースデバイス12のような装置もしくはデバイス、および/またはマイクロコントローラもしくはICがビデオエンコーダ20を含み、ここで、ビデオエンコーダ20は、本開示で説明する技法に従ってビデオデータを符号化するように構成される)。
[0058]本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアのための命令を好適な非一時的コンピュータ可読媒体に記憶し得、本開示の技法を実行するために1つまたは複数のプロセッサを使用するハードウェアで命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてよく、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0059]ビデオシーケンスは、一般に、ビューからの一連のビデオピクチャを含む。ピクチャグループ(GOP:group of pictures)は、一般に、一連の1つまたは複数のビデオピクチャを備える。GOPは、GOPの中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダの中、GOPの1つもしくは複数のピクチャのヘッダの中、または他の場所に含め得る。各ピクチャは、それぞれのピクチャのための符号化モードを記述するピクチャシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオピクチャ内のビデオブロックに対して動作する。ビデオブロックは、H.264規格において規定されるように、マクロブロック、マクロブロックのパーティション、および場合によってはパーティションのサブブロックに相当し得る。ビデオブロックは、固定サイズまたは可変サイズを有し得、指定されたコーディング規格に従ってサイズが異なり得る。各ビデオピクチャは、複数のスライスを含み得る。各スライスは、複数のブロックを含み得る。
[0060]一例として、ITU−T H.264規格は、ルーマ成分については16×16、8×8、または4×4、およびクロマ成分については8×8などの、様々なブロックサイズのイントラ予測をサポートし、同様に、ルーマ成分については16×16、16×8、8×16、8×8、8×4、4×8、および4×4、ならびにクロマ成分については対応するスケーリングされたサイズなどの、様々なブロックサイズのインター予測をサポートする。本開示では、「N×N(NxN)」および「N×N(N by N)」は、垂直寸法および水平寸法に関するブロックのピクセル寸法(たとえば、16×16(16x16)ピクセルまたは16×16(16 by 16)ピクセル)を指すために互換的に使用され得る。概して、16×16ブロックは、垂直方向に16ピクセル(y=16)と、水平方向に16ピクセル(x=16)とを有する。同様に、N×Nブロックは、概して、垂直方向にN個のピクセルと、水平方向にN個のピクセルとを有し、ここで、Nは非負整数値を表す。ブロックの中のピクセルは、行および列をなして配置され得る。さらに、ブロックは、必ずしも水平方向において垂直方向と同じ数のピクセルを有する必要があるとは限らない。たとえば、ブロックはN×Mピクセルを備えてよく、ここで、Mは必ずしもNに等しいとは限らない。
[0061]ブロックがイントラモード符号化(たとえば、イントラ予測)されるとき、ブロックは、ブロックのためのイントラ予測モードを記述するデータを含み得る。別の例として、ブロックがインターモード符号化(たとえば、インター予測)されるとき、ブロックは、ブロックのための動きベクトルを定義する情報を含み得る。この動きベクトルは、同じビューの中の参照ピクチャを指すか(たとえば、時間動きベクトル)、または別のビューの中の参照ピクチャを指す(たとえば、視差動きベクトル)。ブロックのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分と、動きベクトルの垂直成分と、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)とを記述する。加えて、インター予測されるとき、ブロックは、動きベクトルが指す参照ピクチャなどの参照インデックス情報、および/または動きベクトルのための参照ピクチャリスト(たとえば、RefPicList0またはRefPicList1)を含み得る。
[0062]H.264規格では、イントラ予測またはインター予測コーディングに続いて、ビデオエンコーダ20は、マクロブロックのための残差データを計算する。残差データは、符号化されていないピクチャのピクセルと、H.264におけるマクロブロックのための予測値との間のピクセル差分に相当し得る。
[0063]いくつかの例では、変換係数を生成するための任意の変換に続いて、ビデオエンコーダ20は、変換係数の量子化を実行する。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化される、さらなる圧縮をもたらすプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減する。たとえば、量子化の間にnビット値がmビット値に丸められ、ただし、nはmよりも大きい。
[0064]いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するためにあらかじめ定義された走査順序を利用する。他の例では、ビデオエンコーダ20は適応走査を実行する。1次元ベクトルを形成するために量子化変換係数を走査した後、いくつかの例では、ビデオエンコーダ20は、いくつかの例として、コンテキスト適応型可変長コーディング(CAVLC:context adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディング、または別のエントロピー符号化方法に従って、1次元ベクトルをエントロピー符号化する。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30によって使用するための、符号化ビデオデータに関連するシンタックス要素をエントロピー符号化する。
[0065]CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、たとえば、シンボルの近隣値が非0であるか否かに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボル用の可変長コードを選択し得る。VLCにおけるコードワードは、比較的短いコードが優勢シンボルに対応し、より長いコードが劣勢シンボルに対応するように、構成され得る。このようにして、VLCの使用は、たとえば、送信されるべき各シンボル用の等長コードワードを使用することにまさるビット節約を達成し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0066]ビデオデコーダ30は、ビデオエンコーダ20の技法の逆を実施する。たとえば、ビデオデコーダ30は、符号化ビデオビットストリームを復号し、逆量子化および逆変換によって残差ブロックを決定する。ビデオデコーダ30は、ピクチャ内のブロックのためのピクセル値を決定するために、前に復号されたピクチャのブロックに残差ブロックを加算する。
[0067]本開示で説明するいくつかの技法は、ビデオエンコーダ20とビデオデコーダ30の両方によって実行され得る。一例として、ビデオエンコーダ20は、どのようにビデオデータのブロックを符号化すべきかを決定することの一部として動きベクトル候補リストを生成し得、および/またはビデオエンコーダにおける復号ループの一部として動きベクトル候補リストを生成し得る。ビデオデコーダ30は、ビデオブロックを復号することの一部として、ビデオエンコーダ20によって実行される同じ動きベクトル候補リスト生成技法を実行し得る。本開示は、時々、本開示で説明するいくつかの動きベクトル候補リスト生成技法を実行するビデオデコーダ30を指すことがある。ただし、別段に記載されていない限り、そのような技法がビデオエンコーダ20によって実行され得ることも理解されたい。
[0068]上記で説明したように、本開示で説明する技法は3Dビデオコーディングを対象とする。本技法をよりよく理解するために、下記は、いくつかのH.264/AVCコーディング技法、H.264/MVC拡張および高効率ビデオコーディング(HEVC)規格の観点からのマルチビュービデオコーディング、ならびに3D−AVC技法を説明する。
[0069]H.264/アドバンスビデオコーディング(AVC)の場合、ビデオ符号化または復号(たとえば、コーディング)はマクロブロック上で実施され、ここで、マクロブロックは、インター予測またはイントラ予測(すなわち、インター予測符号化もしくは復号、またはイントラ予測符号化もしくは復号)されるフレームの一部分を表す。たとえば、H.264/AVCでは、各インターマクロブロック(MB)(たとえば、インター予測されたマクロブロック)は、4つの異なる方法で、すなわち、1つの16×16MBパーティション、2つの16×8MBパーティション、2つの8×16MBパーティション、または4つの8×8MBパーティションに区分され得る。1つのMBにおける異なるMBパーティションは、方向ごとに異なる参照インデックス値(すなわち、RefPicList0またはRefPicList1)を有し得る。1つのMBが複数の(1よりも多い)MBパーティションに区分されないとき、そのMBは、各方向に、MBパーティション全体のための1つの動きベクトルのみを有する。
[0070]ビデオコーディング(符号化または復号)の一部として、ビデオエンコーダ20およびビデオデコーダ30は、RefPicList0およびRefPicList1と呼ばれる1つまたは2つの参照ピクチャリストを構成するように構成され得る。参照ピクチャリストは、フレームまたはスライスのマクロブロックをインター予測するために使用され得る参照ピクチャを識別する。たとえば、ビデオエンコーダ20は、参照インデックスと参照ピクチャリスト識別子とをシグナリングし得る。ビデオデコーダ30は、参照インデックスと参照ピクチャリスト識別子とを受信し得、参照インデックスおよび参照ピクチャリスト識別子から、現在のマクロブロックをインター予測復号するために使用されるべきである参照ピクチャを決定し得る。
[0071]1つのMBが4つの8×8MBパーティションに区分されるとき、各8×8MBパーティションはサブブロックにさらに区分され得る。サブブロック、すなわち、1つの8×8サブブロック、2つの8×4サブブロック、2つの4×8サブブロック、または4つの4×4サブブロックを、8×8MBパーティションから得るための4つの異なる方法がある。各サブブロックは、各方向で異なる動きベクトルを有し得るが、各方向に対して同じ参照ピクチャインデックスを共有する。8×8MBパーティションがサブブロックに区分される方法は、サブブロック区分と称される。
[0072]本開示は、概して、ビデオデータの任意のブロックを指すために、ブロックという用語を使用する。たとえば、H.264コーディングおよびそれの拡張のコンテキストにおいて、ブロックは、マクロブロック、マクロブロックパーティション、サブブロック、または任意の他のタイプのブロックのいずれかを指し得る。HEVCおよびそれの拡張のコンテキストにおいて、ブロックは、PU、TU、CU、または任意の他のタイプのブロックのいずれかを指し得る。本開示で使用するサブブロックは、概して、より大きいブロックの任意の部分を指す。サブブロックはまた、それ自体が単にブロックと呼ばれ得る。
[0073]マルチビュービデオコーディングの場合、複数の異なるビデオコーディング規格がある。混乱を避けるために、本開示がマルチビュービデオコーディングを概略的に説明するとき、本開示は「マルチビュービデオコーディング」という句を使用する。概して、マルチビュービデオコーディングでは、ベースビューおよび1つまたは複数の非ベースビューまたは依存(dependent)ビューがある。ベースビューは、依存ビューのいずれかの参照なしに十分に復号可能である(すなわち、ベースビューは、時間動きベクトルを用いてインター予測されるにすぎない)。このことは、マルチビュービデオコーディングのために構成されていないコーデックが、完全に復号可能である少なくとも1つのビューをなお受信することを可能にする(すなわち、ベースビューが抽出され得るとともに他のビューが破棄されてよく、マルチビュービデオコーディングのために構成されていないデコーダが、3Dエクスペリエンスがないにもかかわらず、ビデオコンテンツをなお復号することを可能にする)。1つまたは複数の依存ビューは、ベースビューに関してもしくは別の依存ビューに関してインター予測(すなわち、視差補償予測)され得るか、または同じビューの中の他のピクチャに関してインター予測(すなわち、動き補償予測)され得る。
[0074]「マルチビュービデオコーディング」が一般的に使用されるが、頭文字MVCはH.264/AVCの拡張に関連する。したがって、本開示が頭文字MVCを使用するとき、本開示は、特にH.264/AVCビデオコーディング規格の拡張を指している。H.264/AVCのMVC拡張は、時間動きベクトルに加えて、別のタイプの動きベクトルとして視差動きベクトルに依拠する。MVCプラス深度(MVC+D)と呼ばれる別のビデオコーディング規格も、JCT−3VおよびMPEGによって開発されている。MVC+Dは、テクスチャと深度の両方に対してMVCのものと同じ低レベルコーディングツールを適用し、深度の復号はテクスチャの復号に依存せず、その逆も同様である。たとえば、MVCでは、フレームは、テクスチャビューコンポーネントまたは単にテクスチャと呼ばれる1つのビューコンポーネントのみによって表される。MVC+Dでは、2つのビューコンポーネント、すなわち、テクスチャビューコンポーネントおよび深度ビューコンポーネント、または単にテクスチャおよび深度がある。たとえば、MVC+Dでは、各ビューはテクスチャビューと深度ビューとを含み、ここで、ビューは複数のビューコンポーネントを含み、テクスチャビューは複数のテクスチャビューコンポーネントを含み、深度ビューは複数の深度ビューコンポーネントを含む。
[0075]各テクスチャビューコンポーネントは、ビューのビューコンポーネントを形成するために、深度ビューコンポーネントに関連付けられる。深度ビューコンポーネントは、テクスチャビューコンポーネントにおける対象物の相対深度を表す。MVC+Dでは、深度ビューコンポーネントおよびテクスチャビューコンポーネントは、別々に復号可能である。たとえば、ビデオデコーダ30は、第1のコーデックがテクスチャビューコンポーネントを復号するとともに第2のコーデックが深度ビューコンポーネントを復号する、MVCコーデックの2つのインスタンスを実装し得る。これらの2つのコーデックは、テクスチャビューコンポーネントおよび深度ビューコンポーネントが別々に符号化されるので、互いに独立して実行することができる。
[0076]MVC+Dでは、深度ビューコンポーネントは、常に、関連する(たとえば、対応する)テクスチャビューコンポーネントの直後にくる。このようにして、MVC+Dは、テクスチャビューコンポーネントが深度ビューコンポーネントよりも前に復号される、テクスチャ優先コーディングをサポートする。
[0077]テクスチャビューコンポーネントおよびそれの関連する(たとえば、対応する)深度ビューコンポーネントは、同じピクチャ順序カウント(POC:picture order count)値とview_idとを含み得る(すなわち、テクスチャビューコンポーネントおよびそれの関連する深度ビューコンポーネントのPOC値およびview_idは同じである)。POC値は、テクスチャビューコンポーネントの表示順序を示し、view_idは、テクスチャビューコンポーネントおよび深度ビューコンポーネントが属するビューを示す。
[0078]図2は、一般的なMVC復号順序(すなわち、ビットストリーム順序)を示す。復号順序配置は、時間優先コーディングとして参照される。アクセスユニットの復号順序が出力順序または表示順序と同じでない場合があることに留意されたい。図2では、S0〜S7は各々、マルチビュービデオの異なるビューを指す。T0〜T8は各々、1つの出力時間インスタンスを表す。アクセスユニットは、1つの出力時間インスタンスに対するすべてのビューのコード化ピクチャを含み得る。たとえば、第1のアクセスユニットは、時間インスタンスT0に対するビューS0〜S7のすべてを含み得、第2のアクセスユニットは時間インスタンスT1に対するビューS0〜S7のすべてを含み得、以下同様である。
[0079]簡潔のために、本開示は以下の定義を使用し得る。
ビューコンポーネント:単一のアクセスユニットの中のビューのコード化表現。ビューがコード化テクスチャ表現とコード化深度表現の両方を含むとき、ビューコンポーネントは、テクスチャビューコンポーネントと深度ビューコンポーネントとを含み得る。
テクスチャビューコンポーネント:単一のアクセスユニットの中のビューのテクスチャのコード化表現。
深度ビューコンポーネント:単一のアクセスユニットの中のビューの深度のコード化表現。
[0080]上記で説明したように、本開示のコンテキストでは、ビューコンポーネント、テクスチャビューコンポーネント、および深度ビューコンポーネントは、一般にレイヤと呼ばれることがある。図2では、ビューの各々はピクチャのセットを含む。たとえば、ビューS0はピクチャ0、8、16、24、32、40、48、56、および64のセットを含み、ビューS1はピクチャ1、9、17、25、33、41、49、57、および65のセットを含み、以下同様である。各セットは2つのピクチャを含み、一方のピクチャはテクスチャビューコンポーネントと呼ばれ、他方のピクチャは深度ビューコンポーネントと呼ばれる。ビューのピクチャのセット内のテクスチャビューコンポーネントおよび深度ビューコンポーネントは、互いに対応するものと見なされてよい。たとえば、ビューのピクチャのセット内のテクスチャビューコンポーネントは、そのビューのピクチャのセット内の深度ビューコンポーネントに対応するものと見なされ、その逆も同様である(すなわち、深度ビューコンポーネントは、セットの中のそれのテクスチャビューコンポーネントに対応し、その逆も同様である)。本開示で使用するとき、深度ビューコンポーネントに対応するテクスチャビューコンポーネントは、テクスチャビューコンポーネントおよび深度ビューコンポーネントが単一のアクセスユニットの同じビューの一部であるものと見なされてよい。
[0081]テクスチャビューコンポーネントは、表示される実際の画像コンテンツを含む。たとえば、テクスチャビューコンポーネントは、ルーマ(Y)成分とクロマ(CbおよびCr)成分とを含み得る。深度ビューコンポーネントは、それの対応するテクスチャビューコンポーネントの中のピクセルの相対深度を示し得る。1つの例示的なアナロジーとして、深度ビューコンポーネントは、ルーマ値のみを含むグレースケール画像のようである。言い換えれば、深度ビューコンポーネントは、画像コンテンツを搬送しない場合があり、むしろテクスチャビューコンポーネントの中のピクセルの相対深度の尺度を提供し得る。
[0082]たとえば、深度ビューコンポーネントの中の純白のピクセルは、対応するテクスチャビューコンポーネントの中のそれの対応する1つまたは複数のピクセルが閲覧者から見てより近いことを示し、深度ビューコンポーネントの中の純黒のピクセルは、対応するテクスチャビューコンポーネントの中のそれの対応する1つまたは複数のピクセルが閲覧者から見てより遠いことを示す。黒と白との中間にあるグレーの様々な陰影は、異なる深度レベルを示す。たとえば、深度ビューコンポーネントの中の濃いグレーのピクセルは、テクスチャビューコンポーネントの中のそれの対応するピクセルが深度ビューコンポーネントの中の薄いグレーのピクセルよりも遠いことを示す。ピクセルの深度を識別するためにグレースケールのみが必要とされるので、深度ビューコンポーネントに対する色値がいかなる目的も果たし得ないことから、深度ビューコンポーネントはクロマ成分を含む必要がない。上記の説明は、深度画像をテクスチャ画像に関係付けるためのアナロジーであることを意図する。深度画像の中の深度値は、実際にはグレーの陰影を表さず、実際には、8ビットまたは他のビットサイズの深度値を表す。
[0083]深度を識別するためにルーマ値(たとえば、強度値)のみを使用する深度ビューコンポーネントは、説明のために与えられており限定と見なされるべきでない。他の例では、テクスチャビューコンポーネントの中のピクセルの相対深度を示すために、任意の技法が利用され得る。
[0084]図3は、マルチビュービデオコーディングのための(各ビュー内のインターピクチャ予測と、ビューの間でのビュー間予測の両方を含む)一般的なMVC予測構造を示す。予測方向は矢印によって示され、矢印の終点のオブジェクトは矢印の始点のオブジェクトを予測参照として使用する。MVCでは、視差動き補償によってビュー間予測がサポートされ、視差動き補償は、H.264/AVC動き補償のシンタックスを使用するが、異なるビューの中のピクチャが参照ピクチャとして使用されることを可能にする。
[0085]図3の例では、8つのビュー(ビューID「S0」〜「S7」を有する)が示され、12個の時間ロケーション(「T0」〜「T11」)がビューごとに示される。すなわち、図3における各行がビューに対応し、各列が時間ロケーションを示す。
[0086]MVCがH.264/AVCデコーダによって復号可能であるいわゆるベースビューを有し、ステレオビューペアもMVCによってサポートされ得るが、MVCの利点は、3Dビデオ入力として3つ以上のビューを使用するとともに複数のビューによって表されるこの3Dビデオを復号する例を、MVCがサポートできることである。MVCデコーダを有するクライアントのレンダラは、複数のビューを有する3Dビデオコンテンツを予期し得る。
[0087]図3におけるピクチャは、各行と各列との交差に示される。H.264/AVC規格は、ビデオの一部分を表すためにフレームという用語を使用することがある。本開示は、ピクチャという用語とフレームという用語とを互換的に使用することがある。
[0088]図3におけるピクチャは、文字を含むブロックを使用して示され、その文字は、対応するピクチャがイントラコーディングされるのか(すなわち、Iピクチャであるのか)、それとも一方向に(すなわち、Pピクチャとして)または複数の方向に(すなわち、Bピクチャとして)インターコーディングされるのかを指定する。概して、予測は矢印によって示され、ここで、矢印の終点のピクチャは矢印の始点のピクチャを予測参照のために使用する。たとえば、時間ロケーションT0におけるビューS2のPピクチャは、時間ロケーションT0におけるビューS0のIピクチャから予測される。
[0089]シングルビュービデオ符号化の場合と同様に、マルチビュービデオコーディングのビデオシーケンスのピクチャは、異なる時間ロケーションにおけるピクチャに関して予測的に符号化され得る。たとえば、時間ロケーションT1におけるビューS0のbピクチャは、時間ロケーションT0におけるビューS0のIピクチャからそのbピクチャに向けられた矢印を有し、その矢印は、bピクチャがIピクチャから予測されることを示す。しかしながら、加えて、マルチビュービデオ符号化のコンテキストにおいて、ピクチャはビュー間予測され得る。すなわち、ビューコンポーネントは、他のビューの中のビューコンポーネントを参照のために使用することができる。MVCでは、たとえば、別のビューの中のビューコンポーネントがインター予測参照であるかのように、ビュー間予測が実現される。潜在的なビュー間参照は、シーケンスパラメータセット(SPS:Sequence Parameter Set)のMVC拡張においてシグナリングされ、インター予測参照またはビュー間予測参照のフレキシブルな順序付けを可能にする参照ピクチャリスト構成プロセスによって変更され得る。ビュー間予測はまた、3D−HEVC(マルチビュープラス深度)を含む、HEVCの提案されたマルチビュー拡張の特徴である。
[0090]図3は、ビュー間予測の様々な例を提供する。図3の例では、ビューS1のピクチャは、ビューS1の異なる時間ロケーションにおけるピクチャから予測されるものとして、ならびに同じ時間ロケーションにおけるビューS0およびS2のピクチャからビュー間予測されるものとして示される。たとえば、時間ロケーションT1におけるビューS1のbピクチャは、時間ロケーションT0およびT2におけるビューS1のBピクチャの各々、ならびに時間ロケーションT1におけるビューS0およびS2のbピクチャから予測される。
[0091]いくつかの例では、図3は、テクスチャビューコンポーネントを示すものと見なされてよい。たとえば、図2に示したIピクチャ、Pピクチャ、Bピクチャ、およびbピクチャは、ビューの各々のためのテクスチャビューコンポーネントと見なされてよい。本開示で説明する技法によれば、図3に示すテクスチャビューコンポーネントの各々に対して、対応する深度ビューコンポーネントがある。いくつかの例では、深度ビューコンポーネントは、対応するテクスチャビューコンポーネントに対して、図3に示すものと同様の方法で予測され得る。
[0092]2つのビューのコーディングも、MVCによってサポートされ得る。MVCの利点のうちの1つは、MVCエンコーダが3Dビデオ入力として3つ以上のビューをとり得、MVCデコーダがそのようなマルチビュー表現を復号し得ることである。したがって、MVCデコーダを有するいかなるレンダラも、3つ以上のビューを有する3Dビデオコンテンツを復号し得る。
[0093]上記で説明したように、MVCでは、ビュー間予測は(場合によっては、同じ時間インスタンスを有することを意味する)同じアクセスユニットの中のピクチャ間で可能になる。非ベースビューのうちの1つの中のピクチャをコーディングするとき、ピクチャが異なるビューの中にあるが同じ時間インスタンス内にある場合、そのピクチャは参照ピクチャリストの中に追加され得る。ビュー間予測参照ピクチャは、任意のインター予測参照ピクチャとまったく同様に、参照ピクチャリストの任意の位置に入れられてよい。図3に示すように、ビューコンポーネントは、他のビューの中のビューコンポーネントを参照のために使用することができる。MVCでは、別のビューの中のビューコンポーネントがインター予測参照であるかのように、ビュー間予測が実現される。
[0094]MVCでは、ビュー間予測は、同じアクセスユニットの中の(すなわち、同じ時間インスタンスを有する)ピクチャ間で可能になる。非ベースビューのうちの1つの中のピクチャをコーディングするとき、ピクチャが異なるビューの中にあるが同じ時間インスタンスを有する場合、そのピクチャは参照ピクチャリストの中に追加され得る。ビュー間予測参照ピクチャは、任意のインター予測参照ピクチャとまったく同様に、参照ピクチャリストの任意の位置に入れられてよい。
[0095]図3に示すように、ビューコンポーネントは、他のビューの中のビューコンポーネントを参照のために使用することができる。このことは、ビュー間予測と称される。MVCでは、別のビューの中のビューコンポーネントがインター予測参照であるかのように、ビュー間予測が実現される。
[0096]マルチビュービデオコーディングのコンテキストでは、少なくとも2つの異なるタイプの動きベクトルがある。一方のタイプの動きベクトルは、時間参照ピクチャを指す通常の動きベクトル(時間動きベクトルと呼ばれることがある)である。対応する時間インター予測は、動き補償予測(MCP:motion-compensated prediction)である。他方のタイプの動きベクトルは、異なるビューの中のピクチャ(すなわち、ビュー間参照ピクチャ)を指す視差動きベクトルである。対応するインター予測は、視差補償予測(DCP:disparity-compensated prediction)である。
[0097]ビデオデコーダ30は、複数のHEVCインターコーディングモードを使用してビデオを復号し得る。HEVC規格では、PUのために、それぞれ、マージモード(一般に、マージの特殊な事例と見なされるスキップモード)およびAMVP)モードと称される、2つのインター予測モードがある。AMVPモードまたはマージモードのいずれかでは、ビデオデコーダ30は、複数の動きベクトル予測子のための動きベクトル候補リストを保持する。現在PUの動きベクトルならびにマージモードにおける参照インデックスは、候補リストから1つの候補をとることによって生成され得る。
[0098]候補リストは、たとえば、HEVCでは、マージモードのための最高5つの候補とAMVPモードのための2つのみの候補とを含む。マージ候補は、動き情報のセット、たとえば、参照ピクチャリスト(リスト0およびリスト1)と参照インデックスの両方に対応する動きベクトルを含み得る。マージ候補がマージインデックスによって識別される場合、現在ブロックの予測のために参照ピクチャが使用され、ならびに関連する動きベクトルが決定される。しかしながら、リスト0またはリスト1のいずれかからの潜在的な各予測方向に対するAMVPモードの下では、AMVP候補が動きベクトルのみを含むので、MVPインデックスとともに参照インデックスが候補リストに明示的にシグナリングされる必要がある。AMVPモードでは、選択された動きベクトルと、MVPインデックスに対応する動きベクトル予測子との間の動きベクトル差分が、さらにシグナリングされる。上記でわかるように、マージ候補は、動き情報のフルセットに対応し、AMVP候補は、特定の予測方向および参照インデックスのためのただ1つの動きベクトルを含む。
[0099]上記で説明したように、ビデオデコーダ30は、HEVCベースの3Dビデオコーディング規格に従ってコーディングされたビデオを復号し得る。現在、VCEGおよびMPEGの3Dビデオコーディング共同作業部会(JCT−3C)は、HEVCに基づく3DV規格を開発中であり、それのために、規格化作業の一部は、HEVCに基づくマルチビュービデオコーデック(MV−HEVC)の規格化と、HEVCに基づく3Dビデオコーデック(3D−HEVC)の規格化とを含む。3D−HEVCの場合、テクスチャと深度ビューとの両方のためのCU/PUレベルのコーディング用のツールを含む、新たなコーディングツールが含まれ得るとともにサポートされ得る。3D−HEVC用の最新のソフトウェア3D−HTMが、2014年6月13日、以下のリンクからダウンロードされ得る。
[3D−HTMバージョン9.0r1]:https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM−9.0r1/。
[00100]最新の参照ソフトウェア記述が、以下のように入手可能である。
Li Zhang、Gerhard Tech、Krzysztof Wegner、Sehoon Yea、「Test Model 6 of 3D−HEVC and MV−HEVC」、JCT3V−F1005、ITU−T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11の3Dビデオコーディング拡張開発共同作業部会、第6回会合、ジュネーブ、スイス、2013年11月。2014年6月13日現在、それは以下のリンクからダウンロードされ得る。
http://phenix.it−sudparis.eu/jct2/doc_end_user/current_document.php?id=1636。
[00101]3D−HEVCの最新のワーキングドラフトが、以下のように入手可能である。
Gerhard Tech、Krzysztof Wegner、Ying Chen、Sehoon Yea、「3D−HEVC Draft Text 2」、JCT3V−F1001、ITU−T SG 16 WP 3およびISO/IEC JTC 1/SC 29/WG 11の3Dビデオコーディング拡張開発共同作業部会、第6回会合、ジュネーブ、スイス、2013年11月。それは以下のリンクからダウンロードされ得る。
http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/6_Geneva/wg11/JCT3V−F1001−v4.zip。
[00102]ビデオデコーダ30は、様々な視差ベクトル導出プロセスを実施するように構成され得る。そのような1つのプロセスの一例は、隣接ブロックベース視差ベクトル(NBDV:Neighboring Blocks based Disparity Vector)と称され、現在の3D−HTMにおいて使用されている。NBDVは、空間隣接ブロックおよび時間隣接ブロックからの視差動きベクトルを利用する。NBDVでは、ビデオデコーダ30は、空間隣接ブロックまたは時間隣接ブロックの動きベクトルを一定の検査順序で検査する。ビデオデコーダ30が視差動きベクトルまたは暗黙的視差ベクトル(IDV:implicit disparity vector)を識別すると、ビデオデコーダ30は、検査プロセスを終了する。NBDVを実行するとき、ビデオデコーダ30は、識別された視差動きベクトルを戻し、それを視差ベクトルに変換する。ビデオデコーダ30は、ビュー間動き予測および/またはビュー間残差予測のために、この決定された視差ベクトルを使用し得る。すべての事前定義された隣接ブロックを検査した後にそのような視差ベクトルが見つからない場合、ビデオデコーダ30は、ビュー間動き予測のためにゼロ視差ベクトルを使用し得、対応するPUのためのビュー間残差予測をディセーブル(disable)し得る。
[00103]3D−HEVCは、JCT3V−A0097:3D−CE5.h:Disparity vector generation results、L.Zhang、Y.Chen、M.Karczewicz(Qualcomm)において、NBDVとしての形態を最初に採用した。IDVは、簡略化されたNBDVとともに、JCT3V−A0126:3D−CE5.h:Simplification of disparity vector derivation for HEVC−based 3D video coding、J.Sung、M.Koo、S.Yea(LG)に含められた。そのことに加えて、JCT3V−B0047:3D−CE5.h related:Improvements for disparity vector derivation、J.Kang、Y.Chen、L.Zhang、M.Karczewicz(Qualcomm)では、復号ピクチャバッファに記憶されるIDVを除去することによってNBDVがさらに簡略化され、RAPピクチャ選択に関連するコーディング利得が改善された。NBDVのさらなる改良が、JCT3V−D0181:CE2:CU−based Disparity Vector Derivation in 3D−HEVC、J.Kang、Y.Chen、L.Zhang、M.Karczewicz(Qualcomm)に記載された。
[00104]図4は、NBDVのための時間隣接ブロックを示す概念図である。上記で導入したように、NBDVを実施するとき、ビデオデコーダ30は、規定された検査順序を使用して、空間隣接ブロックと時間隣接ブロックとを検査し得る。NBDVのいくつかの実装形態では、ビデオデコーダ30は、視差ベクトル導出のために2つの空間隣接ブロックを使用する。それらの2つのブロックは、HEVC仕様の図8−3で定義されるようにA1およびB1によって示される現在PUの左および上の隣接ブロックであり、図4として転載される。ビデオデコーダ30は、時間ブロック検査のために、現在ビューからの最高2つの参照ピクチャ(たとえば、コロケート(co-located)ピクチャおよびランダムアクセスピクチャまたは最小のPOC差分および最小の時間IDを有する参照ピクチャ)を検査し得る。一例では、ビデオデコーダ30は、ランダムアクセスピクチャを最初に検査し得、続いて、コロケートピクチャを検査し得る。候補ピクチャごとに、ビデオデコーダ30は、現在PUのコロケートされた領域の中央の4×4ブロックに相当する中央ブロックを検査する。
[00105]NBDVのいくつかの実装形態では、5つの空間隣接ブロックが視差ベクトル導出のために使用される。5つの空間ネイバーは、図4に示すようにA0、A1、B0、B1、またはB2によって示されるような、現在予測ユニット(PU)をカバーするコーディングユニット(CU)の左下ブロック、左ブロック、右上ブロック、上ブロック、および左上ブロックである。これらの空間ネイバーがHEVCにおけるマージ/AMVPモードで使用される同じ空間ネイバーであることに留意されたい。したがって、追加のメモリアクセスが必要とされない。
[00106]時間隣接ブロックを検査するために、ビデオデコーダは、候補ピクチャリストの構成プロセスを最初に実行する。ビデオデコーダ30は、現在ビューからの最高2つの参照ピクチャを候補ピクチャとして扱ってよい。コロケート参照ピクチャが候補ピクチャリストに最初に挿入され、候補ピクチャの残りが参照インデックスの昇順で続く。両方の参照ピクチャリストの中で同じ参照インデックスを有する参照ピクチャが利用可能であるとき、コロケートピクチャの同じ参照ピクチャリストの中の一方は、他方に先行する。候補ピクチャリストの中の候補ピクチャごとに、時間隣接ブロックを導出するために3つの候補領域が決定される。
[00107]ビュー間動き予測を用いてブロックがコーディングされるとき、異なるビューの中の対応するブロックを選択するために視差ベクトルが導出される必要がある。暗黙的視差ベクトル(IDV、または、導出視差ベクトルとも呼ばれる)は、ビュー間動き予測において導出された視差ベクトルと呼ばれる。たとえブロックが動き予測を用いてコーディングされるとしても、導出視差ベクトルは、後続のブロックをコーディングするために破棄されない。
[00108]3D−HTM7.0および3D−HTMの後のバージョンの現在の設計では、NBDVの一部として、ビデオデコーダ30は、時間隣接ブロックの中の視差動きベクトルと、空間隣接ブロックの中の視差動きベクトルと、次いで、IDVとを、事前定義された順序で検査する。視差動きベクトルまたはIDVが見つかると、ビデオデコーダ30は、NBDVプロセスを終了する。NBDVのいくつかの実装形態では、ビデオデコーダ30によって検査される空間隣接ブロックの数は2つまで低減され得る。
[00109]ビデオデコーダ30はまた、いくつかの例では、決定された視差ベクトルを改良し得る。たとえば、ビデオデコーダ30は、NBDVを使用して生成された視差ベクトルを、コード化深度マップの中の情報を使用して改良し得る。すなわち、ビデオデコーダ30は、ベースビュー深度マップの中でコーディングされた情報を使用することによって、視差ベクトルの精度を拡張し得る。改良プロセスの一部として、ビデオデコーダ30は、ベースビューなどの、前にコーディングされた参照深度ビューの中の導出視差ベクトルによって、対応する深度ブロックの位置を最初に特定し得る。対応する深度ブロックのサイズは、現在PUのサイズと同じであり得る。ビデオデコーダ30は、次いで、たとえば、図7に示すように、コロケート深度ブロックから、たとえば、4つのコーナー深度値の最大値から視差ベクトルを計算し得る。4つのコーナーサンプルは、左上(TL)サンプル、右上(TR)サンプル、左下(BL)サンプル、および右下(BR)サンプルに相当する。ビデオデコーダ30は視差ベクトルの水平成分をこの計算された値に設定し得、視差ベクトルの垂直成分は0に設定される。
[00110]1つの視差ベクトルがNBDVプロセスから導出されると、ビデオデコーダ30は、参照ビューの深度マップから深度データを取り出すことによって、視差ベクトルをさらに改良し得る。この深度ベースの改良プロセスは、Do−NBDVと呼ばれる。改良プロセスは、たとえば、2つのステップを含み得る。第1に、ビデオデコーダ30は、ベースビューなどの、前にコーディングされた参照深度ビューの中の導出視差ベクトル(すなわち、NBDVを使用して導出された視差ベクトル)を使用して、対応する深度ブロックの位置を特定し得る。対応する深度ブロックのサイズは、現在PUのサイズと同じであり得る。第2に、ビデオデコーダ30は、対応する深度ブロックの4つのコーナーピクセルから1つの深度値を選択し得、選択された深度値を、改良される視差ベクトルの水平成分に変換し得る。視差ベクトルの垂直成分は、ビデオデコーダ30によって変化されなくてよい。
[00111]いくつかの例では、ビデオデコーダ30は、改良されていない視差ベクトルをビュー間残差予測のために使用しながら、改良された視差ベクトルをビュー間動き予測のために使用し得る。さらに、ビデオデコーダ30は、あるPUが後方ビュー合成予測モードを用いてコーディングされる場合、改良された視差ベクトルをPUの動きベクトルとして記憶し得る。3D−HEVCの現在の設計では、ベースビューの深度ビューコンポーネントは、NBDVプロセスから導出されるビュー順序インデックスの値にかかわらず常にアクセスされる。
[00112]図5は、サブPUレベルビュー間動き予測の一例を示す。図5は、V1と呼ばれる現在ビューと、V0と呼ばれる参照ビューとを示す。現在PU190は、4つのサブPU A〜Dを含む。ビデオデコーダ30は、4つの参照ブロックAR〜DRを含む参照ブロック191の位置を特定するために、4つのサブPU A〜Dの各々の視差ベクトルを使用し得る。サブPU A〜Dの視差ベクトルがDV[i]として図5に示され、ただし、iはA〜Dに対応する。4つのサブPUの各々が固有の視差ベクトルを有するので、互いに対するサブPU A〜Dのロケーションは、互いに対する参照ブロックAR〜DRのロケーションと異なることがある。サブPUレベルのビュー間動き予測では、ビデオデコーダ30は、サブPUを予測するために、参照ブロックの動きベクトルを使用し得る。参照ブロックAR〜DRの動きベクトルがMV[i]として図5に示され、ただし、iはA〜Dに対応する。したがって、一例として、サブPU Aの場合、ビデオデコーダ30は、参照ブロックARの位置を特定するためにDV[A]を使用し得、参照ブロックARがMV[A]を使用してコーディングされたと決定し得、サブPU Aのための予測ブロックの位置を特定するためにMV[A]を使用し得る。
[00113]ビデオデコーダ30は、図5に関して上記で導入したように、サブPUレベルビュー間動き予測を実行するように構成され得る。ビュー間動き予測の態様が上記で説明され、ここで、参照ブロックの動き情報だけが、依存ビューの中の現在PUのために使用される。しかしながら、現在PUは、参照ビューの中の(視差ベクトルによって識別される現在PUと同じサイズを有する)参照エリアに対応し得、参照エリアは豊富な動き情報を有し得る。図5に示すようなサブPUレベルビュー間動き予測(SPIVMP:Sub-PU level inter-view motion prediction)は、参照エリアの中の豊富な動き情報を使用することができる。SPIVMPは、パーティションモード2N×2Nのみに対して適用され得る。
[00114]JCT3V−F0110では、新たなマージ候補を生成するために、サブPUレベルビュー間動き予測方法が提案されている。新たな候補が、動きベクトル候補リストに追加される。サブPUマージ候補と称される新たな候補が、以下の方法によって導出され得る。現在PUのサイズをnPSW×nPSHとして示し、シグナリングされるサブPUサイズをN×Nによって示し、最終的なサブPUサイズをsubW×subHによって示す。
[00115]第1に、PUサイズおよびシグナリングされるサブPUサイズに応じて、現在PUを1つまたは複数のサブPUに分割する。
[00116]第2に、参照ピクチャリストごとに(Xを0および1として)、デフォルト動きベクトルtmvLXを(0,0)に、参照インデックスrefLXを−1に設定する。サブPUごとにラスタ走査順序で以下が適用される。
・以下によって参照サンプルロケーション(xRefSub,yRefSub)を取得するために、Do−NBDVまたはNBDVプロセスからのDVを現在サブPUの中央位置に追加する。
(xRefSub,yRefSub)をカバーする参照ビューの中のブロックが、現在サブPUのための参照ブロックとして使用される。
・識別された参照ブロックに対して、
・それが時間動きベクトルを使用してコーディングされる場合、以下が適用される。
・関連する動きパラメータが、現在サブPUのための候補動きパラメータとして使用され得る。
・tmvLXおよびrefLXが、現在サブPUの動き情報に更新される。
・現在サブPUがラスタ走査順序での最初のものでない場合、動き情報(tmvLXおよびrefLX)は、すべての前のサブPUによって継承される。
・そうでない(参照ブロックがイントラコーディングされる)場合、現在サブPUの動き情報がtmvLXおよびrefLXに設定される。
[00117]4×4、8×8、および16×16などの異なるサブPUブロックサイズが使用され得る。サブPUブロックのサイズは、ビューパラメータセットの中に存在し得る。
[00118]ビデオデコーダ30はまた、3D−HEVCマージ候補を動きベクトル候補リストに追加し得る。3D−HEVCマージ候補は、概して、ベースのHEVC仕様のマージモードで使用されないが3D−HEVC仕様で使用される候補を指す。3D−HEVCマージ候補を追加することの一部として、ビデオデコーダ30は、シフトされたDVおよび/またはDMVから導出される追加候補を生成し得る。ビデオデコーダ30は、たとえば、次の2つのステップによって追加候補を生成し得る。第1に、ビデオデコーダ30は、((PuWidth/2*4+4),(PuHeight/2*4+4))だけ視差ベクトル(DV)をシフトさせ得、参照ビューの中のIPMC候補を導出するために、シフトされたDVを使用する。ここで、現在PUのサイズは、PuWidth×PuHeightである。
[00119]第2に、上記ステップからIPMCが利用不可能である場合、ビデオデコーダ30は、視差シフト動きベクトル(DSMV:Disparity shifted Motion Vector)として示された候補を導出し得、DSMVを追加候補となるように設定し得る。ビデオデコーダ30は、次のようにDSMVを導出し得る。
・ビデオデコーダ30は、空間隣接ブロックA1、B1、B0、A0、またはB2から、RefPicList0に対応する最初の利用可能な視差動きベクトル(DMV)を識別する。
・DMVが利用可能である場合(それは「mv」として示される)、
i.DSMV[0]=mv[0]、DSMV[1]=mv[1]、およびDSMV[0][0]+=4とし、参照インデックスは最初の利用可能な候補(DMVを含む)から継承される。
ii.BVSPがイネーブルにされているとき、DSMV[0][1]は0に設定される。
mvは、上記のステップにおいて最初の識別されたDMVを表し、予測方向0(mv[0]によって示される)と予測方向1(mv[1]によって示される)の両方の動きベクトルを含むことができる。DSMV[i]およびmv[i]は、それぞれ、予測方向iの動きベクトルを指し、ただし、i=0または1である。mv[i][0]およびmv[i][1]は、それぞれ、mv[i]の水平成分および垂直成分を指す。DSMV[i][0]およびDSMV[i][1]は、それぞれ、DSMV[i]の水平成分および垂直成分を指す。
・そうでない場合、DSMV[0][0]=DV[0]+4、DSMV[1][0]=DV[0]+4、DSMV[0][1]=0、およびDSMV[1][1]=0とする。ここで、DVは視差ベクトルである。
[00120]ビデオデコーダ30によって実行され得るマージリスト生成プロセス全体の説明が、次に論じられる。以下に示すステップの順序は、可能性のある順序を表す。ビデオデコーダ30はまた、ステップを異なる順序で実行すること、ステップのサブセットを実行すること、または新たなセットを含めることによって、マージ候補リストを生成し得ることが考えられる。
1.ビデオデコーダ30は、視差ベクトルを導出し、視差ベクトルに基づいて、現在PUの対応するブロックを識別する。IPMCは、利用可能となるように導出された場合、動きベクトル候補リストに追加される。対応するブロックから導出されたビュー間予測動き候補(IPMC:Inter-view Predicted Motion Candidate)は、利用可能である場合、追加される。IPMCが、通常、時間参照ピクチャを指す動きベクトルを含む候補であることに留意されたい。IPMCは、図5に関して上記で説明したように、「サブPUレベルビュー間動き予測」候補に拡張され得る。
2.ビデオデコーダ30は、空間マージ候補(SMC:spatial merge candidate)A1、B1、およびB0を動きベクトル候補リストに追加する。
a.加えて、SMC生成プロセスの間、A1またはB1から導出されたSMCがステップ1におけるIPMCと同じである場合、それらは動きベクトル候補リストから除外される。
3.ビデオデコーダ30は、それらがA1およびB1と異なる場合、視差ベクトルを視差動きベクトルに変換し、視差動きベクトルを動きベクトル候補リストに追加する。
4.現在スライスに対してBVSPがイネーブルにされている場合、ビデオデコーダ30は、BVSPマージ候補を動きベクトル候補リストの中に挿入する。
5.ビデオデコーダ30は、SMC A0およびB2を動きベクトル候補リストに追加する。
6.IPMCが追加候補となるように導出された場合、ビデオデコーダ30は、それをステップ1におけるIPMCと比較する。それがステップ1におけるIPMCに等しくない場合、または追加候補がDSMV候補である場合(追加のIPMCが利用不可能であるとき)、ビデオデコーダ30は、生成された追加候補を動きベクトル候補リストの中に挿入する。
7.ビデオデコーダ30は、現在の設計のように時間マージ候補を動きベクトル候補リストに追加する。
8.ビデオデコーダ30は、有効な候補の数が最大数よりも少ない場合、他の動きベクトル候補を動きベクトル候補リストにメイする。
候補リストサイズは変更されず(依然として6つ)、候補リストの中に十分な候補があると、より多くの候補がさらに追加されないことに留意されたい。
[00121]図6は、隣接ブロックを使用する後方ビュー合成予測(BVSP)に関する技法を示す概念図である。BVSPは、3D−HEVCのための技法として提案および採用された。JCT3V−C0152において提案されたような後方ワーピングVSP手法が、第3回JCT−3V会合において採用された。この後方ワーピングVSPの基本的な考えは、3D−AVCにおけるブロックベースのVSPと同じである。これらの2つの技法の両方は、動きベクトル差分を送信することを回避するとともにより正確な動きベクトルを使用するために、後方ワーピングおよびブロックベースのVSPを使用する。実装の詳細は、異なるプラットフォームに起因して異なる。本開示は、概して、3D−HEVCにおける後方ビュー合成予測を指すために頭文字語のBVSPを使用するが、BVSPはまた、3D−AVCのブロックベースのビュー合成予測を指すことがある。
[00122]3D−HTMでは、テクスチャ優先コーディングが共通テスト条件において適用される。したがって、対応する非ベース深度ビューは、1つの非ベーステクスチャビューを復号するとき、利用不可能である。したがって、BVSPを実行するために深度情報が推定および使用される。ブロックのための深度情報を推定するために、隣接ブロックから視差ベクトルを最初に導出し、次いで、参照ビューから深度ブロックを取得するために、導出された視差ベクトルを使用することが提案された。
[00123]すでに上記で導入したように、HTM5.1テストモデルでは、NBDVと呼ばれる視差ベクトル予測子を導出するためのプロセスが存在する。(dvx,dvy)は、NBDV関数から識別された視差ベクトルを示し、現在ブロックの位置は、(blockx,blocky)である。参照ビューの深度画像の中の(blockx+dvx,blocky+dvy)における深度ブロックをフェッチすることが提案された。フェッチされた深度ブロックは、現在の予測ユニット(PU)の同じサイズを有することになり、それは、次いで、現在PUのための後方ワーピングを行うために使用されることになる。図6は、参照ビューから深度ブロックの位置を特定し、次いで、BVSP予測のために深度ブロックを使用するためのステップを示す。
[00124]図6の例では、深度ピクチャ150およびテクスチャピクチャ154は、同じビューに対応するが、テクスチャピクチャ152は、異なるビューに対応する。特に、テクスチャピクチャ152は、参照ピクチャとして働くテクスチャピクチャ154に対してコーディングされている現在ブロック160を含む。ビデオコーダは、現在ブロック160に隣接する隣接ブロック162を参照し得る。隣接ブロック162は、前に決定された視差ベクトル166を含む。視差ベクトル166は、現在ブロック160のための視差ベクトル164として導出され得る。したがって、視差ベクトル164は、参照ビューの深度ピクチャ150の中の深度ブロック156を指す。
[00125]ビデオコーダは、次いで、後方ワーピングを実行するために、現在ブロック160のピクセルのための視差値168(すなわち、テクスチャ値)を決定するために、深度ブロック156のピクセル(すなわち、深度値)を使用し得る。ビデオコーダは、次いで、視差値168によって識別されたピクセルから、現在ブロック160のための予測ブロック(すなわち、BVSP参照ブロック)のための値を合成し得る。ビデオコーダは、次いで、この予測ブロックを使用して、現在ブロック160を予測し得る。たとえば、ビデオエンコーダ20によるビデオ符号化の間、ビデオエンコーダ20は、残差値を生成するために、予測ブロックと現在ブロック160との間のピクセルごとの差分を計算し得、ビデオエンコーダ20は、次いで、それを変換、量子化、およびエントロピー符号化し得る。他方では、ビデオデコーダ30によるビデオ復号の間、ビデオデコーダ30は、残差データをエントロピー復号、逆量子化、および逆変換し得、次いで、現在ブロック160を再生するために、残差データを(ピクセルごとに)予測ブロックと結合し得る。
[00126]JCT3V−C0152において提案されたような後方ワーピングVSP手法が、第3回JCT−3V会合において採用された。この後方ワーピングVSPの基本的な考えは、3D−AVCにおけるブロックベースのVSPと同じである。これらの2つの技法の両方は、動きベクトル差分を送信することを回避するとともにより正確な動きベクトルを使用するために、後方ワーピングおよびブロックベースのVSPを使用する。実装の詳細は、異なるプラットフォームに起因して異なる。
[00127]以下の段落では、本開示はまた、3D−HEVCにおける後方ワーピングVSP手法を示すためにBVSPという用語を使用することがある。BVSPモードのシグナリングが、次に論じられる。
[00128]3D−HTMのいくつかのバージョンでは、BVSPモードは、スキップモードまたはマージモードのいずれかでのインターコードブロックのみに対してサポートされる。BVSPモードは、AMVPモードでコーディングされるブロックに対して許容されない。BVSPモードの使用を示すためのフラグを送信する代わりに、1つの追加のマージ候補(すなわち、BVSPマージ候補)が導入され、各候補は1つのBVSPフラグに関連付けられる。復号マージインデックスがBVSPマージ候補に対応するとき、それは現在の予測ユニット(PU)がBVSPモードを使用することを示し、現在PU内のサブブロックごとに、それ自体の視差動きベクトルが、深度参照ビューの中の深度値を変換することによって導出され得る。
[00129]BVSPフラグの設定が、次のように定義される。
・空間マージ候補を導出するために使用される空間隣接ブロックがBVSPモードを用いてコーディングされるとき、関連する動き情報は、従来のマージングモードとして現在ブロックによって継承される。加えて、この空間マージ候補は、1に等しいBVSPフラグを用いてタグ付けされる。
・新たに導入されたBVSPマージ候補に対して、BVSPフラグは1に設定される。
・他のすべてのマージ候補に対して、関連するBVSPフラグは0に設定される。
[00130]ビデオデコーダ30は、BVSPマージ候補を生成するように構成され得る。3D−HEVCでは、BVSPマージ候補と称される新たな候補が導出され、マージ候補リストに挿入される。対応する参照ピクチャインデックスおよび動きベクトルは、以下の方法によって設定される。
− NBDVから導出された視差ベクトルのrefVIdxLXによって示されるビューインデックスを取得する。
− refVIdxLXに等しいビュー順序インデックスを有する参照ピクチャに関連付けられた参照ピクチャリストRefPicListX(RefPicList0またはRefPicList1のいずれか)を取得する。NBDVプロセスからの対応する参照ピクチャインデックスおよび視差ベクトルは、RefPicListXの中のBVSPマージ候補の動き情報として使用される。
− 現在スライスがBスライスである場合、RefPicListX以外の参照ピクチャリスト、すなわち、Yが1−XであるRefPicListYの中のrefVIdLXに等しくないrefVIdxLYによって示されたビュー順序インデックスを有するビュー間参照ピクチャの利用可能性を検査する。
・そのような異なるビュー間参照ピクチャが見つかる場合、双予測VSPが適用される。一方、NBDVプロセスからの異なるビュー間参照ピクチャの対応する参照ピクチャインデックスおよびスケーリングされた視差ベクトルが、RefPicListYの中のBVSPマージ候補の動き情報として使用される。refVIdxLXに等しいビュー順序インデックスを有するビューからの深度ブロックが、現在ブロックの深度情報として使用され(テクスチャ優先コーディング順序の場合)、最終的な後方VSP予測子を獲得するために、2つの異なるビュー間参照ピクチャ(1つの参照ピクチャリストからの各々)が後方ワーピングプロセスを介してアクセスされ、さらに重み付けられる。
・そうでない場合、単予測VSPが、予測のための参照ピクチャリストとしてのRefPicListXとともに適用される。
[00131]上記で導入されたように、ビデオデコーダ30は、動き補償を実行するように構成され得る。3D−HTMでは、テクスチャ優先コーディングが共通テスト条件において適用される。したがって、対応する非ベース深度ビューは、1つの非ベーステクスチャビューを復号するとき、利用不可能である。したがって、BVSPを実行するために深度情報が推定および使用される。
[00132]ブロックのための深度情報を推定するために、ビデオデコーダ30が隣接ブロックから視差ベクトルを最初に導出し得、次いで、参照ビューから深度ブロックを取得するために、導出された視差ベクトルを使用し得ることが提案される。
[00133]HTM8.0テストモデルでは、NBDV(上記で説明した)と呼ばれる視差ベクトル予測子を導出するためのプロセスが存在する。(dvx,dvy)がNBDV関数から識別された視差ベクトルを示し、(blockx,blocky)が現在ブロックの位置を示すものとする。
[00134]ビデオデコーダ30は、単予測BVSPを実行し得る。たとえば、1つの提案によれば、ビデオデコーダ30は、参照ビューの深度画像の中で左上位置(blockx+dvx,blocky+dvy)を有する深度ブロックをフェッチし得る。現在ブロックは、W*Hに等しい同じサイズを有するいくつかのサブブロックに最初に分割される。W*Hに等しいサイズを有するサブブロックごとに、フェッチされた深度ブロック内の対応する深度サブブロックが利用され、深度サブブロックの4つのコーナーピクセルからの最大深度値が視差動きベクトルに変換される。各サブブロックのために導出された視差動きベクトルは、次いで、動き補償のために使用される。図6は、どのように参照ビューからの深度ブロックの位置が特定され、次いで、BVSP予測のために使用されるのかに関する3つのステップを示す。
[00135]ビデオデコーダ30はまた、双予測BVSPを実行し得る。RefPicList0およびRefPicList1の中の異なるビューからの複数のビュー間参照ピクチャがあるとき、ビデオデコーダ30は双予測VSPを適用し得る。すなわち、上記で説明したように、2つのVSP予測子が各参照リストから生成される。ビデオデコーダ30は、次いで、最終的なVSP予測子を取得するために、2つのVSP予測子を平均し得る。
[00136]動き補償サイズ、すなわち、上で説明したようなW*Hは、8×4または4×8のどちらかであり得る。動き補償サイズを決定するために、ビデオデコーダ30は以下を適用し得る。
8×8ブロックごとに、対応する深度8×8ブロックの4つのコーナーが検査され、
[00137]既存の3D動きベクトル候補リスト構成技法に関連する、いくつかの潜在的な問題があり得る。一例として、DSMV候補の生成は、すべての隣接ブロックを検査することを必要とし、そのことは、望ましくなく多数の条件検査を潜在的に必要とする。HEVCマージ候補および3D−HEVCの追加マージ候補は、あまりに多くの相互作用を必要とする。
[00138]いくつかの例では、本開示は、3D−HEVCテクスチャコーディングのためのDSMV候補導出プロセスならびに3D−HEVC候補のためのマージリスト構成の簡略化を導入する。
[00139]本開示の一技法によれば、DSMV候補の生成は、HEVCマージリスト構成プロセスによって導出された最初のN個の候補だけを探索することによって簡略化され得る。Nは、たとえば、2以下であってよい。他の例では、Nは、4、1、3などであってよい。本開示の技法によれば、HEVCマージリストの中の候補の空間的な位置の情報が必要とされなくてよい。たとえば、ビデオデコーダ30は、それらの候補がA1、B1、B0、A0、またはB2からであるかどうかを検査せずに、HEVCマージリストの中の最初の2つの候補を検査するだけでよい。既存の技法は、対照的に、候補の位置がA1、B1、B0、A0、またはB2から来ること、すなわち、候補がA1、B1、B0、A0、またはB2から来るかどうかを必要とし、ビデオデコーダは、これらの位置を順に検査する。
[00140]これらの例では、HEVCマージリストは、仮想候補を含まなくてよい。代替として、HEVCマージリストは、仮想候補を含んでもよい。
[00141]本開示の技法によれば、ビデオデコーダ30は、以下で説明するステップに従うことによって、追加候補を生成し得る。
1.ビデオデコーダ30は、((PuWidth/2*4+4),(PuHeight/2*4+4))だけDVをシフトさせ得、参照ビューの中のIPMC候補を導出するために、シフトされたDVを使用し得る。ここで、現在PUのサイズは、PuWidth×PuHeightである。現在スライスに対して深度改良がイネーブルにされている場合、DVは、Do−NBDVを使用して導出される視差ベクトルに相当し得る。そうでない場合、DVは、NBDVによって導出される視差ベクトルに相当し得る。
2.上記のステップ1からのIPMCが利用不可能である場合、ビデオデコーダ30は、DMSV候補を導出し、それを追加候補となるように設定する。ビデオデコーダ30は、次のようにDSMV候補を導出し得る。
・ビデオデコーダ30は、ベースのHEVC仕様のマージモードによって作り出されたマージリストの中の最初の2つの候補から、RefPicList0に対応する最初の利用可能な視差動きベクトル(DMV)を識別する。
・DMVが利用可能である場合(それは「mv」として示される)、
i.DSMV[0]=mv[0]、DSMV[1]=mv[1]、およびDSMV[0][0]+=4とし、参照インデックスは最初の利用可能な候補(DMVを含む)から継承される。
ii.BVSPがイネーブルにされているとき、DSMV[0][1]は0に設定される。
・そうでない場合、DSMV[0][0]=DV[0]+4、DSMV[1][0]=DV[0]+4、DSMV[0][1]=0、およびDSMV[1][1]=0とする。ここで、DVは視差ベクトルである。
[00142]代替として、ビデオデコーダ30に空間隣接候補を探索させないことによってDSMV候補の生成が簡略化され得ることが提案され、代わりに、ビデオデコーダ30は、DSMV候補をシフトされた視差ベクトルとなるように直接設定し得る。ビデオデコーダ30は、以下で説明するステップに従うことによって、追加候補を生成し得る。
1.ビデオデコーダ30は、((PuWidth/2*4+4),(PuHeight/2*4+4))だけDVをシフトさせ得、参照ビューの中のIPMC候補を導出するためにそれを使用し得る。ここで、現在PUのサイズは、PuWidth×PuHeightである。現在スライスに対して深度改良がイネーブルにされている場合、DVは、Do−NBDVを使用して導出される視差ベクトルに相当し得る。そうでない場合、DVは、NBDVによって導出される視差ベクトルに相当し得る。
2.上記のステップ1からのIPMCが利用不可能である場合、ビデオデコーダ30は、DSMV候補を導出し得、DSMVを追加候補となるように設定し得る。ビデオデコーダ30は、次のようにDSMV候補を導出し得る。DSMV[0][0]=DV[0]+4、DSMV[1][0]=DV[0]+4、DSMV[0][1]=0、およびDSMV[1][1]=0とする。ここで、DVは視差ベクトルである。
[00143]DSMVであり得る追加候補は、他のマージ候補の後において、ただし仮想候補の前に挿入される。
[00144]追加3D−HEVC候補が挿入されるときに、どの空間ネイバー/時間ネイバーからHEVCマージ候補が来るのかを無視することによって、マージ候補リスト生成が簡略化され得ることも提案される。
1.一例では、3D−HEVCマージ候補とHEVC候補との間にプルーニング(pruning)が必要とされる場合、それは常に、現在の(3D−HEVC)候補と、HEVC候補リストの固定位置における候補との間。
2.HEVC候補がプルーニング除去された後、それは「利用不可能」または「除去されるべき」として最初にマークされるが、すべての3D−HEVC候補が挿入されるまで、依然として候補リストの中に保持される。その時間において、それらの「利用不可能な」候補は除去され、残りの候補が空のスロットの中を満たすようにシフトされる。
3.BVSP候補は、空間ネイバーがBVSPであるか否かを示す変数が存在する必要がない方法で挿入され、したがって、記憶されない。
[00145]本開示の別の技法によれば、ビデオデコーダ30は、HEVCマージプロセスから生成されたいかなる特定の候補(たとえば、空間隣接候補または時間隣接候補)の利用可能性を検査することも必要としない方式で、動きベクトル候補リストのための追加マージ候補(たとえば、3D−HEVCマージ候補)を生成し得る。したがって、3D−HEVCマージ候補(たとえば、IPMC候補、BVSP候補、および/またはDMSV候補)を、図4における空間マージ候補A1および/またはB1などの特定の空間マージ候補に対してプルーニングする代わりに、ビデオデコーダ30は、3D−HEVCマージ候補が最初のN個のHEVCマージ候補のいずれかと同じであるかどうかを決定することによって、3D−HEVCマージ候補をプルーニングし得、ただし、Nは1、2、または3などの整数を表す。言い換えれば、3D−HEVC候補を空間ネイバーA1およびB1に基づいて決定された候補と比較する代わりに、3D−HEVC候補は、HEVC空間候補、HEVC時間候補、またはHEVC仮想候補のいずれかであり得る、動きベクトル候補リストの中の最初のN個の候補と比較され得る。いくつかの例では、ビデオデコーダ30は、3D−HEVC候補を最初のN個の候補と比較しなくてよいが、依然として3D−HEVC候補を動きベクトル候補リストの中の固定位置に対して比較し得る。ビデオデコーダ30は、たとえば、3D−HEVC候補を候補リストの中の第1のエントリ(たとえば、インデックス0)に対して比較しなくてよいが、3D−HEVC候補を候補リストの中の第2および第3のエントリ(たとえば、インデックス1および2)に対して比較し得る。
[00146]追加マージ候補のためのマージ候補リスト生成が、一時的マージ候補リストの中の候補の数が制限を超えるかどうかをビデオデコーダ30が検査しない方式で行われ得ることも提案され、そのことは、候補の最大数を超える、リストの中のHEVC候補の数によって引き起こされる追加の検査を回避し得る。たとえば、リストが構成される間にリストをプルーニングし、リストがいっぱいになるとリスト構成プロセスを終了する代わりに、ビデオデコーダ30は、重複候補を除去されるべきとマークし得る。すべての候補がリストの中に挿入された後、ビデオデコーダ30は、重複としてマークされた候補を除去し得、過剰な候補を除去し得る。いくつかの実装形態では、ビデオデコーダ30は、重複をマークおよび除去することなく、過剰な候補を除去してもよい。たとえば、動きベクトル候補リストに含まれるべき候補の最大数が6である場合、インデックス値を0〜5として、ビデオデコーダ30は、インデックスが6以上である任意の候補を一時的候補リストから除去し得る。
[00147]第1の例のためのマージリスト生成プロセス全体の説明が、次に記載される。この例では、ビデオデコーダ30は、空間候補、時間マージ候補、および仮想候補を、ベースのHEVC仕様のマージモードにおけるものとして最初に識別する。ビデオデコーダ30は、BVSP候補をマージ候補リストの中に、DV候補の前に挿入し得る。
[00148]変数maxMrgNumは、3D−HEVCにおける最大マージ候補数を表す。HEVCマージ候補は、HEVCマージリスト生成プロセスにおいて導出されるマージ候補を指す。
1.ビデオデコーダ30は、maxMrgNum個のマージ候補を生成するために、HEVCマージリスト生成プロセスを起動し得る。
a.ビデオデコーダ30は、SMC A1、B1、およびB0をマージ候補リストに追加し得る。
b.ビデオデコーダ30空間マージ候補(SMC)A0およびB2が、マージ候補リストに追加される。
c.時間マージ候補が、現在の設計のようにマージ候補リストに追加される(TMVP候補が3D−HEVCにおいて変更されたことに留意されたい)。
d.仮想候補が、3D−HEVCにおける現在の設計のようにマージ候補リストに追加される。
2.ビデオデコーダ30は、視差ベクトルを導出し得、視差ベクトルに基づいて、現在PUの対応するブロックを識別し得る。IPMCが利用可能となるように導出されている場合、ビデオデコーダ30は、IPMCをマージ候補リストの始まりに(たとえば、位置0番に)追加し得る。
a.ビデオデコーダ30は、IPMCを有する動きベクトル候補リストと、すでにリストの中にある第1および第2のマージ候補とを、プルーニングし得る。第1および第2のマージ候補のうちの1つがIPMCに等しい場合、ビデオデコーダ30は、それを利用不可能としてマークし得る。
i.第1のHEVCマージ候補と第2のHEVCマージ候補の両方がIPMCに等しい場合、ビデオデコーダ30は、第1のHEVCマージ候補だけを利用不可能としてマークし得る。
ii.代替として、第1のHEVCマージ候補と第2のHEVCマージ候補の両方がIPMCに等しい場合、ビデオデコーダ30は、それらの両方を利用不可能としてマークしてもよい。
b.ビデオデコーダ30は、IPMCが第1の位置に置かれるように、すなわち、すべてのHEVCマージ候補が1つの位置だけ後方にシフトされるように、リストの中のHEVCマージ候補をシフトさせ得る。
3.現在スライスに対してBVSPがイネーブルにされている場合、ビデオデコーダ30は、不活性のBVSPマージ候補をマージ候補リストの中に、リストの第3の位置(インデックスは0から始まる)において挿入し得る。ビデオデコーダ30は、BVSP候補を生成するために、視差ベクトルを変換し得る。最初に、参照深度ビューの中の現在PUの対応する深度ブロックを識別するために、視差ベクトルが使用される。次いで、深度ブロック内のサブブロック(4×8または8×4ブロック)ごとに、4つのコーナーピクセルの最大値が、視差動きベクトルに変換され、現在PUの中の対応するサブブロックのために使用される。
a.リストの中でのBVSPマージ候補に後続する他の候補のシフティングは、BVSPが第3の位置に置かれるように、すなわち、第3の位置の後のHEVCマージ候補(第3の位置におけるHEVCマージ候補を含む)が1つの位置だけ後方にシフトされるように適用される。
4.ビデオデコーダ30は、視差ベクトルを視差動きベクトルに変換し得、視差動きベクトルをマージ候補リストに、リストの第4の位置(インデックスは0から始まる)において追加し得る。これは、DV候補と称される。変換される視差ベクトルは、たとえば、上記で説明したようにNBDVまたはDo−NBDVを使用して決定された視差ベクトルであってよい。
a.DV候補は、リストの中の第1および第2の(位置1番および2番における)HEVCマージ候補とともにプルーニングされる。それらのうちの1つが利用可能であり、DV候補に等しい場合、DV候補は、利用不可能としてマークされる。
b.リストの中でのHEVCマージ候補のシフティングは、DV候補が第4の位置に置かれるように、すなわち、第4の位置の後のHEVCマージ候補(第4の位置におけるHEVCマージ候補を含む)が1つの位置だけ後方にシフトされるように適用される。
5.追加候補が右下のIPMCである場合、それはステップ1におけるIPMCと比較される。それがステップ1におけるIPMCに等しくない場合、または追加候補がDSMVである場合(追加のIPMCが利用不可能であるとき)、生成された追加候補は、リストの第6の位置(インデックスは0から始まる)において挿入される。
a.代替として、追加候補は、リストの第5の位置において挿入される。
b.リストの中でのHEVCマージ候補のシフティングは、追加候補が所与の位置(第5または第6の位置)に置かれるように、すなわち、所与の位置の後のHEVCマージ候補(所与の位置におけるHEVCマージ候補を含む)が1つの位置だけ後方にシフトされるように適用される。
6.マージ候補リストの中で利用不可能としてマークされている候補を除去し、次いで、maxMrgNum個の候補だけを含めさせるようにリストを切り捨てる。
[00149]この例に対するワーキングドラフトの実装形態の一例は、BVSP候補が第3の位置において挿入され、DV候補が第4の位置において挿入され、追加候補が第6の位置において挿入されて、以下に提供される。削除部分は取消し線を用いてマークされ、新たに追加された部分は二重下線を用いてマークされる。
I.8.5.3.2.1 マージモード用のルーマ動きベクトルのための導出プロセス
このプロセスは、MergeFlag[xPb][yPb]が1に等しいときのみ起動され、ここで、(xPb,yPb)は、現在のピクチャの左上ルーマサンプルに対する、現在のルーマ予測ブロックの左上サンプルを規定する。
このプロセスへの入力は、以下の通りである。
− 現在ピクチャの左上ルーマサンプルに対する、現在のルーマコーディングブロックの左上サンプルのルーマロケーション(xCb,yCb)、
− 現在ピクチャの左上ルーマサンプルに対する、現在のルーマ予測ブロックの左上サンプルのルーマロケーション(xPb,yPb)、
− 現在のルーマコーディングブロックのサイズを規定する変数nCbS、
− ルーマ予測ブロックの幅と高さとを規定する2つの変数nPbWおよびnPbH、
− 現在のコーディングユニット内での現在の予測ユニットのインデックスを規定する変数partIdx。
このプロセスの出力は、以下の通りである。
− ルーマ動きベクトルmvL0およびmvL1、
− 参照インデックスrefIdxL0およびrefIdxL1、
− 予測リスト利用フラグpredFlagL0およびpredFlagL1、
− 現在PUがビュー間動き予測を使用してコーディングされているかどうかを規定するフラグivpMvFlag、
− 現在PUがビュー合成予測を使用してコーディングされているかどうかを規定するフラグvspModeFlag、
− 現在PUの動きデータがサブ予測ブロックサイズの動き精度を有するかどうかを規定するフラグsubPbMotionFlag、
− 現在PUが視差導出深度を使用するかどうかを規定するフラグdispDerivedDepthFlag、
− 変数dispDerivedDepthVal(dispDerivedDepthFlagが1に等しいとき)。
関数differentMotion(N,M)は、次のように規定される。
− 以下の条件のうちの1つが真である場合、differentMotion(N,M)は1に等しい。
−predFlagLXN != predFlagLXM (Xが0および1によって置き換えられるものとして)、
−mvLXN != mvLXM (Xが0および1によって置き換えられるものとして)、
−refIdxLXN != refIdxLXM (Xが0および1によって置き換えられるものとして)、
− そうでない場合、differentMotion(N,M)は0に等しい。
動きベクトルmvL0およびmvL1、参照インデックスrefIdxL0およびrefIdxL1、ならびに予測利用フラグpredFlagL0およびpredFlagL1は、以下の順序付けられたステップによって導出される。
1.サブクローズI.8.5.3.2.18において規定されるようなベースのマージ候補リストのための導出プロセスが起動され、ルーマロケーション(xCb,yCb)、ルーマロケーション(xPb,yPb)、変数nCbS、nPbW、nPbH、およびパーティションインデックスpartIdxを入力とし、出力を、修正されたルーマロケーション(xPb,yPb)、修正された変数nPbWおよびnPbH、修正された変数partIdx、ルーマロケーション(xOrigP,yOrigP)、変数nOrigPbWおよびnOrigPbH、マージ候補リストbaseMergeCandList、ルーマ動きベクトルmvL0NおよびmvL1N、参照インデックスrefIdxL0NおよびrefIdxL1N、ならびに予測リスト利用フラグpredFlagL0NおよびpredFlagL1Nであるものとし、NはbaseMergeCandListのすべての要素によって置き換えられる。
3.iv_mv_pred_flag[nuh_layer_id]およびDispAvailabilityIdc[xPb][yPb]に応じて、以下が適用される。
− iv_mv_pred_flag[nuh_layer_id]が0に等しいか、またはDispAvailabilityIdc[xPb][yPb]がDISP_NONEに等しくない場合、フラグavailableFlagIvMC、availableIvMCShift、およびavailableFlagIvDCは0に等しく設定される。
− そうでない(iv_mv_pred_flag[nuh_layer_id]が1に等しい)場合、サブクローズI.8.5.3.2.10において規定されるようなビュー間マージ候補のための導出プロセスが起動され、ルーマロケーション(xPb,yPb)、変数nPbWおよびnPbHを入力とし、出力は、利用可能性フラグavailableFlagIvMC、availableIvMCShift、およびavailableFlagIvDC、参照インデックスrefIdxLXIvMC、refIdxLXIvMCShift、およびrefIdxLXIvDC、予測リスト利用フラグpredFlagLXIvMC、predFlagLXIvMCShift、およびpredFlagLXIvDC、ならびに動きベクトルmvLXIvMC、mvLXIvMCShift、およびmvLXIvDC(Xが、それぞれ、0または1であるものとして)に割り当てられる。
4.view_synthesis_pred_flag[nuh_layer_id]、DispAvailabilityIdc[xPb][yPb]、およびdbbp_flag[xPb][yPb]に応じて、以下が適用される。
− view_synthesis_pred_flag[nuh_layer_id]が0に等しいか、DispAvailabilityIdc[xPb][yPb]がDISP_NONEに等しいか、またはdbbp_flag[xPb][yPb]が1に等しい場合、フラグavailableFlagVSPは0に等しく設定される。
− そうでない(view_synthesis_pred_flag[nuh_layer_id]が1に等しく、DispAvailabilityIdc[xPb][yPb]がDISP_NONEに等しくなく、dbbp_flag[xPb][yPb]が0に等しい)場合、サブクローズI.8.5.3.2.13において規定されるようなビュー合成予測マージ候補のための導出プロセスが起動され、ルーマロケーション(xPb,yPb)ならびに変数nPbWおよびnPbHを入力とし、出力は、利用可能性フラグavailableFlagVSP、参照インデックスrefIdxL0VSPおよびrefIdxL1VSP、予測リスト利用フラグpredFlagL0VSPおよびpredFlagL1VSP、ならびに動きベクトルmvL0VSPおよびmvL1VSPである。
5.mpi_flag[nuh_layer_id]に応じて、以下が適用される。
− mpi_flag[nuh_layer_id]が0に等しい場合、変数availableFlagTおよびavailableFlagDは0に等しく設定される。
− そうでない(mpi_flag[nuh_layer_id]が1に等しい)場合、以下が適用される。
− サブクローズI.8.5.3.2.16において規定されるようなレイヤ間予測されたサブ予測ブロック動きベクトル候補のための導出プロセスが起動され、ルーマロケーション(xPb,yPb)、変数nPbWおよびnPbH、−1に等しい変数refViewIdx、ならびに(0,0)に等しい変数mvDispを入力とし、出力は、予測利用フラグpredFlagLXT、動きベクトルmvLXT、および参照インデックスrefIdxLXT(Xが、それぞれ、0または1であるものとして)である。
− フラグavailableFlagTは(predFlagL0T||predFlagL1T)に等しく設定される。
− サブクローズI.8.5.3.2.19において規定されるような視差導出されたマージ候補のための導出プロセスが起動され、ルーマロケーション(xPb,yPb)、変数nPbWおよびnPbHを入力とし、出力は、フラグavailableFlagD、予測利用フラグpredFlagLXD、参照インデックスrefIdxLXD、動きベクトルmvLXD(Xが、それぞれ、0または1であるものとして)、および変数dispDerivedDepthValである。
6.変数availableFlagIvDCShiftは0に等しく設定され、availableFlagIvMCShiftが0に等しく、DepthFlagが0に等しく、iが(5+NumExtraMergeCand)よりも小さいとき、サブクローズI.8.5.3.2.15において規定されるようなシフトされた視差マージ候補のための導出プロセスが起動され、
出力は、フラグavailableFlagIvDCShift、予測利用フラグpredFlagL0IvDCShiftおよびpredFlagL1IvDCShift、参照インデックスrefIdxL0IvDCShiftおよびrefIdxL1IvDCShift、ならびに動きベクトルmvL0IvDCShiftおよびmvL1IvDCShiftである。
7.マージ候補リストextMergeCandListは、次のように構成される。
10.変数Nは、以下に規定されるように導出される。
− (nOrigPbW+nOrigPbH)が12に等しい場合、以下が適用される。
N = baseMergeCandList[MergeIdx[xOrigP][yOrigP]] (I-105)
− そうでない((nOrigPbW+nOrigPbH)が12に等しくない)場合、以下が適用される。
N = extMergeCandList[MergeIdx[xOrigP][yOrigP]] (I-106)
I.8.5.3.2.15 シフトされた視差マージ候補のための導出プロセス
DepthFlagが1に等しいとき、このプロセスは起動されない。
このプロセスへの入力は、以下の通りである。
− 現在ピクチャの左上ルーマサンプルに対する、現在のルーマ予測ブロックの左上サンプルのルーマロケーション(xPb,yPb)、
− 現在のルーマ予測ブロックの幅と高さとを規定する2つの変数nPbWおよびnPbH、
− 利用可能性フラグavailableFlagN、
− 参照インデックスrefIdxL0NおよびrefIdxL1N、
− 予測リスト利用フラグpredFlagL0NおよびpredFlagL1N、
− 動きベクトルmvL0NおよびmvL1N、
− マージ候補リストmergeCandList、
− リストmergeCandListの中のマージ候補の数を規定する変数numMergeCand。
このプロセスの出力は、以下の通りである。
− シフトされた視差マージ候補が利用可能であるかどうかを規定するフラグavailableFlagIvDCShift、
− 予測利用フラグpredFlagL0IvDCShiftおよびpredFlagL1IvDCShift、
− 参照インデックスrefIdxL0IvDCShiftおよびrefIdxL1IvDCShift、
− 動きベクトルmvL0IvDCShiftおよびmvL1IvDCShift。
availableFlagIvDCShiftが0に等しく、availableFlagIvDCが1に等しいとき、availableFlagIvDCShiftは1に設定され、0〜1(両端値を含む)であるXに対して以下が適用される。
− predFlagLXIvDCShiftはpredFlagLXIvDCに等しく設定される。
− refIdxLXIvDCShiftはrefIdxLXIvDCに等しく設定される。
− mvLXIvDCShift[0]はmvL0IvDC[0]+4に等しく設定される。
− mvLXIvDCShift[1]はmvL0IvDC[1]に等しく設定される。
I.8.5.3.2.18 ベースマージ候補リストのための導出プロセス
サブクローズ8.5.3.2.1における仕様が、以下の修正とともに適用される。
− ステップ9および10が除去される。
− 「slice_typeがBに等しいとき、複合双予測マージ候補のための導出プロセスは」が、「slice_typeがBに等しく、numMergeCandが5よりも小さいとき、複合双予測マージ候補のための導出プロセスは」によって置き換えられる。
− 「サブクローズ8.5.3.2.7における時間ルーマ動きベクトル予測が起動される」が、「サブクローズI.8.5.3.2.7における時間ルーマ動きベクトル予測が起動される」によって置き換えられる。
− プロセスの出力は、以下によって置き換えられる。
− 現在ピクチャの左上ルーマサンプルに対する、現在のルーマ予測ブロックの左上サンプルの修正されたルーマロケーション(xPb,yPb)、
− ルーマ予測ブロックの修正された幅と高さとを規定する2つの変数nPbWおよびnPbH、
− 現在のコーディングユニット内での現在の予測ユニットの修正されたインデックスを規定する、修正された変数partIdx、
− 現在ピクチャの左上ルーマサンプルに対する、現在のルーマ予測ブロックの左上サンプルの元のルーマロケーション(xOrigP,yOrigP)、
− ルーマ予測ブロックの元の幅と高さとを規定する2つの変数nOrigPbWおよびnOrigPbH、
− NがmergeCandListのすべてのエントリによって置き換えられるものとして、ルーマ動きベクトルmvL0NおよびmvL1N、
− NがmergeCandListのすべてのエントリによって置き換えられるものとして、参照インデックスrefIdxL0NおよびrefIdxL1N。
NがmergeCandListのすべての要素によって置き換えられるものとして、予測リスト利用フラグpredFlagL0NおよびpredFlagL1N。
[00150]第2の例に対する動きベクトル候補リストをビデオデコーダ30がどのように生成し得るのかという説明が、次に記載される。この第2の例は、上記で説明した第1の例と類似である。主な差異は、この例では、ビデオデコーダ30が、BVSPマージ候補を動きベクトル候補リストの中に、DV候補の後に挿入することである。
1.ビデオデコーダ30は、HEVCマージリスト生成プロセスを起動する。
a.空間マージ候補(SMC)A1、B1、およびB0が、マージ候補リストに追加される。
b.空間マージ候補(SMC)A0およびB2が、マージ候補リストに追加される。
c.時間マージ候補が、現在の設計のようにマージ候補リストに追加される(TMVP候補が3D−HEVCにおいて変更されたことに留意されたい)。
2.ビデオデコーダ30は、視差ベクトルを導出し、視差ベクトルに基づいて現在PUの対応するブロックを識別する。IPMCは、利用可能となるように導出された場合、マージ候補リストの始まりに追加される。
a.IPMCは、すでにリストの中にある第1および第2のマージ候補とともにプルーニングされる。それらが両方とも利用可能であり、一方がIPMVに等しい場合、それはリストから除去される。
b.既存の候補のシフティングは、IPMCおよび他の残りのHEVCマージ候補が連続的に配置されるように適用される。
3.ビデオデコーダ30は、視差ベクトルを視差動きベクトルに変換し、視差動きベクトルをマージ候補リストに、リストの第3の位置において追加する(インデックスは0から始まり、利用可能なものが2個以下でないなら、最初の利用可能な位置である)。これは、DV候補と称される。視差ベクトルは、たとえば、上記で説明したNBDVまたはDo−NBDV技法を使用して決定され得る。
a.現在のDV候補が位置Tにあると仮定し、ここにおいて、Tは残りのHEVC候補の数の最小値+1、または3に等しい(1、2、または3であり得る)。DV候補は、1〜T−1に等しいインデックスを有する、リスト(CanList)の中のマージ候補とともにプルーニングされる。
b.既存の候補のシフティングは、IPMC、DV候補の前のHEVCマージ候補、および他の残りのHEVCマージ候補が連続的に配置されるように適用される。
4.現在スライスに対してBVSPがイネーブルにされている場合、ビデオデコーダ30は、BVSPマージ候補をマージ候補リストの中に、最初の利用可能な位置に挿入する。
5.追加候補が右下のIPMCであり、利用可能となるように導出された場合、ビデオデコーダ30は、それをステップ1において導出されたIPMCと比較する。追加候補がステップ1におけるIPMCに等しくない場合、または追加候補がDSMVである場合(追加IPMCが利用不可能であるとき)、ビデオ復号30は、追加候補をマージリストの終わりにおいて(最初の利用可能な位置に)挿入する。
6.有効な候補の数が最大数よりも少ない場合、ビデオデコーダ30は、他の動きベクトルマージ候補をマージ候補リストに追加し得る。
[00151]第3の例に対するマージリスト生成プロセス全体の説明が、次に記載される。この例では、HEVCマージリスト生成プロセスを起動するとき、空間隣接ブロックおよび時間隣接ブロックから生成される候補を含む、部分的なHEVCマージリストが生成され得る。次いで、3D−HEVCマージ候補が生成され、リストに挿入される。最後に、マージ候補数が依然として最大数よりも少ない場合、追加の仮想候補が生成される。この例では、HEVCマージリスト生成プロセスを起動するとき、完全なHEVCマージリスト(マージ候補の最大数を有する)が生成される。次いで、追加の3D−HEVCマージ候補が生成され、リストに挿入される。リストサイズが最大数よりも大きい場合、それは切り捨てられる。
[00152]maxMrgNumを3D−HEVCにおける最大マージ候補数として示す。HEVCマージ候補は、HEVCマージリスト生成プロセスにおいて導出されるマージ候補を指す。
1.ビデオデコーダ30は、maxMrgNum個のマージ候補を生成するために、HEVCマージリスト生成プロセスを起動する。
a.空間マージ候補(SMC)A1、B1、およびB0が、マージ候補リストに追加される。
b.空間マージ候補(SMC)A0およびB2が、マージ候補リストに追加される。
c.時間マージ候補が、現在の設計のようにマージ候補リストに追加される(TMVP候補が3D−HEVCにおいて変更されたことに留意されたい)。
d.仮想候補が、3D−HEVCにおける現在の設計のようにマージ候補リストに追加される。
2.ビデオデコーダ30は、視差ベクトルを導出し、視差ベクトルに基づいて現在PUの対応するブロックを識別する。ビデオデコーダ30は、利用可能となるように導出された場合、IPMCをマージ候補リストの始まりに追加する。
a.IPMCは、すでにリストの中にある第1および第2のマージ候補とともにプルーニングされ、それらのうちの1つがIPMCに等しい場合、それは利用不可能としてマークされる。
i.第1のHEVCマージ候補と第2のHEVCマージ候補の両方がIPMCに等しい場合、第1のHEVCマージ候補だけが利用不可能としてマークされる。
ii.代替として、第1のHEVCマージ候補と第2のHEVCマージ候補の両方がIPMCに等しい場合、それらの両方が利用不可能としてマークされる。
b.リストの中でのHEVCマージ候補のシフティングは、IPMCが第1の位置に置かれるように、すなわち、すべてのHEVCマージ候補が1つの位置だけ後方にシフトされるように適用される。
3.ビデオデコーダ30は、視差ベクトルを視差動きベクトルに変換し得、視差動きベクトルをマージ候補リストに、リストの第3の位置(インデックスは0から始まる)において追加し得る。これは、DV候補と称される。変換される視差ベクトルは、たとえば、上記で説明したようにNBDVまたはDo−NBDVを使用して決定された視差ベクトルであってよい。
a.代替として、DV候補は、動きベクトル候補リストに、リストの第2の位置において追加される。
b.代替として、DV候補は、動きベクトル候補リストに、リストの第4の位置において追加される。
c.DV候補が第3または第4の位置において追加されるとき、それはリストの中の第1および第2のHEVCマージ候補とともにプルーニングされる。それらのうちの1つが利用可能であり、DV候補に等しい場合、DV候補は、利用不可能としてマークされる。
d.代替として、DV候補が第2の位置において追加されるとき、それはリストの中の第1および第2のHEVCマージ候補とともにプルーニングされる。第1のHEVCマージ候補が利用可能であり、DV候補に等しい場合、DV候補は利用不可能としてマークされ、そうでなく、第2のHEVCマージ候補が利用可能であり、DV候補に等しい場合、第2のHEVC候補は利用不可能としてマークされる。
f.リストの中でのHEVCマージ候補のシフティングは、DV候補が所与の位置(第2、第3、または第4の位置)に置かれるように、すなわち、所与の位置の後のHEVCマージ候補(所与の位置におけるHEVCマージ候補を含む)が1つの位置だけ後方にシフトされるように適用される。
4.ビデオデコーダ30がDV候補をリストの第2の位置において挿入する場合、ビデオデコーダ30は、現在スライスに対してBVSPがイネーブルにされている場合、BVSPマージ候補を動きベクトル候補リストの中に、リストの第3の位置(インデックスは0から始まる)において挿入し得る。
a.代替として、DV候補がリストの第2の位置において挿入されるとき、BVSPマージ候補は、リストの第4の位置において挿入される。
b.代替として、DV候補がリストの第3の位置において挿入されるとき、BVSPマージ候補は、リストの第4の位置において挿入される。
c.代替として、BVSPマージ候補は、リストの第5の位置において挿入される。
d.リストの中でのHEVCマージ候補のシフティングは、BVSPが所与の位置(第3、第4、または第5の位置)に置かれるように、すなわち、所与の位置の後のHEVCマージ候補(所与の位置におけるHEVCマージ候補を含む)が1つの位置だけ後方にシフトされるように適用される。
5.追加候補が右下のIPMCであり、利用可能となるように導出された場合、それはステップ1におけるIPMCと比較される。それがステップ1におけるIPMCに等しくない場合、または追加候補がDSMVである場合(追加のIPMCが利用不可能であるとき)、生成された追加候補は、リストの第6の位置(インデックスは0から始まる)において挿入される。
a.代替として、追加候補は、リストの第7の位置において挿入される。
b.リストの中でのHEVCマージ候補のシフティングは、追加候補が所与の位置(第6または第7の位置)に置かれるように、すなわち、所与の位置の後のHEVCマージ候補(所与の位置におけるHEVCマージ候補を含む)が1つの位置だけ後方にシフトされるように適用される。
6.ビデオデコーダ30は、利用不可能としてマークされている候補を候補リストから除去し得、次いで、それがmaxMrgNum個の候補だけを含むようにリストを切り捨て得る。
[00153]図8は、本開示で説明する動きベクトル候補リスト生成技法を実施し得るビデオエンコーダの一例を示すブロック図である。たとえば、図8は、3D−AVC準拠または3D−HEVC準拠のいずれかのビデオエンコーダを表し得る、ビデオエンコーダ20を示す。ビデオエンコーダ20は、PU、TU、およびCUなどの、いくつかのHEVC用語を使用して説明されるが、ビデオエンコーダ20に関して説明する技法がH.264規格に従ってコーディングされたビデオを用いて実行され得ることも理解されたい。
[00154]ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングとインターコーディングとを実行し得る。たとえば、ビデオエンコーダ20は、インター予測符号化またはイントラ予測符号化を実行し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間冗長性を低減または除去するために、空間予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレーム内もしくは隣接ピクチャ内の時間冗長性または異なるビューの中のピクチャ間の冗長性を低減または除去するために、時間予測またはビュー間予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースの圧縮モードのいずれかを指し得る。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指し得る。
[00155]図8の例では、ビデオエンコーダ20は、ビデオデータメモリ40と、予測処理ユニット42と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化処理ユニット54と、エントロピー符号化ユニット56とを含む。予測処理ユニット42は、動きおよび視差推定ユニット44と、動きおよび視差補償ユニット46と、イントラ予測ユニット48とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化処理ユニット58と、逆変換処理ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するために、デブロッキングフィルタ(図8に示さず)も含まれ得る。所望される場合、デブロッキングフィルタは、通常、加算器62の出力をフィルタ処理することになる。デブロッキングフィルタに加えて、追加のループフィルタ(インループまたはポストループ)も使用され得る。
[00156]ビデオデータメモリ40は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ40に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。参照ピクチャメモリ64は、(たとえば、イントラ予測コーディングモードまたはインター予測コーディングモードとも呼ばれる、イントラコーディングモードまたはインターコーディングモードで)ビデオエンコーダ20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する復号ピクチャバッファ(DPBの一例である。ビデオデータメモリ40および参照ピクチャメモリ64は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM(登録商標))、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ40および参照ピクチャメモリ64は、同じメモリデバイスまたは別個のメモリデバイスによって設けられ得る。様々な例では、ビデオデータメモリ40は、ビデオエンコーダ20の他の構成要素とともにオンチップであってよく、またはそれらの構成要素に対してオフチップであってもよい。
[00157]ビデオエンコーダ20がビデオデータを受信し、区分ユニット(図示せず)がデータをビデオブロックに区分する。この区分はまた、スライス、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分(たとえば、マクロブロックパーティション、およびパーティションのサブブロック)を含み得る。ビデオエンコーダ20は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示す。スライスは、複数のビデオブロック(場合によっては、タイルと呼ばれるビデオブロックのセット)に分割され得る。予測処理ユニット42は、誤差結果(たとえば、コーディングレートおよびひずみレベル)に基づいて、現在ビデオブロックに対して、複数のイントラコーディングモード(イントラ予測コーディングモード)のうちの1つ、または複数のインターコーディングモード(インター予測コーディングモード)のうちの1つなどの、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット42は、得られたイントラコード化ブロックまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器50に提供し得、参照ピクチャとして使用するための符号化ブロックを再構成するために加算器62に提供し得る。
[00158]予測処理ユニット42内のイントラ予測ユニット48は、空間圧縮を行うために、コーディングされるべき現在ブロックと同じフレームまたはスライスの中の1つまたは複数の隣接ブロックに対して、現在ビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット42内の動きおよび視差推定ユニット44ならびに動きおよび視差補償ユニット46は、時間圧縮を行うために、1つまたは複数の参照ピクチャの中の1つまたは複数の予測ブロックに対して、現在ビデオブロックのインター予測コーディングを実行する。
[00159]動きおよび視差推定ユニット44は、ビデオシーケンス用の所定のパターンに従って、ビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンスの中のビデオスライスを、PスライスまたはBスライスとして指定し得る。動きおよび視差推定ユニット44ならびに動きおよび視差補償ユニット46は、高度に統合され得るが、概念的な目的のために別々に示される。動きおよび視差推定ユニット44によって実行される動き推定は、ビデオブロックの動きを推定する、動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する現在ビデオフレーム内または現在ピクチャ内のビデオブロックの変位を示し得る。
[00160]予測ブロックは、絶対差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分の観点から、コーディングされるべきビデオブロックと密に一致すると見られるブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置に関する値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動きおよび視差推定ユニット44は、フルピクセル位置および分数ピクセル位置に対して動き探索を実行し得、分数ピクセル精度で動きベクトルを出力し得る。
[00161]動きおよび視差推定ユニット44は、ビデオブロックの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化(インター予測コード化)スライスの中のビデオブロックのための動きベクトルを計算する。参照ピクチャは、その各々が参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する、第1の参照ピクチャリスト(RefPicList0)または第2の参照ピクチャリスト(RefPicList1)から選択され得る。動きおよび視差推定ユニット44は、計算された動きベクトルを、エントロピー符号化ユニット56ならびに動きおよび視差補償ユニット46へ送る。
[00162]動きおよび視差補償ユニット46によって実行される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴ってよく、場合によっては、サブピクセル精度への補間を実行し得る。現在ビデオブロックのための動きベクトルを受信すると、動きおよび視差補償ユニット46は、動きベクトルが参照ピクチャリストのうちの1つにおいて指す予測ブロックの位置を特定し得る。ビデオエンコーダ20は、コーディングされている現在ビデオブロックのピクセル値から予測ブロックのピクセル値を減算することによって残差ビデオブロックを形成し、ピクセル差分値を形成する。ピクセル差分値は、ブロックに対する残差データを形成し、ルーマとクロマの両方の差分成分を含み得る。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。動きおよび視差補償ユニット46はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30によって使用するための、ビデオブロックおよびビデオスライスに関連するシンタックス要素を生成し得る。
[00163]動きおよび視差補償ユニット46は、本開示で説明する動きベクトル候補リスト構成技法を実行するように構成され得る。一例として、動きおよび視差補償ユニット46は、1つまたは複数の動きベクトル候補を動きベクトル候補リストに追加し得、動きベクトル候補リストの中の1つまたは複数の動きベクトル候補から、視差動きベクトル候補を識別し得、視差動きベクトル候補に基づいて、視差シフト動きベクトル(DSMV)候補を決定し得、DSMV候補を動きベクトル候補リストに追加し得る。
[00164]別の例として、動きおよび視差補償ユニット46は、一時的動きベクトル候補リストに含めるための1つまたは複数の第1の動きベクトル候補を決定するために、現在ブロックの1つまたは複数の空間隣接ブロックを分析し得、一時的動きベクトル候補リストに含めるための1つまたは複数の第2の動きベクトル候補を決定するために、1つまたは複数の時間隣接ブロックを分析し得、一時的動きベクトル候補リストに含めるための1つまたは複数の追加候補を、現在ブロックのための視差ベクトルに基づいて決定し得、ここにおいて、1つまたは複数の第1の動きベクトル候補、1つまたは複数の第2の動きベクトル候補、および1つまたは複数の追加候補が、動きベクトル候補リストの中の候補の最大数よりも多くの候補を備え、動きベクトル候補リストのための最大インデックスよりも大きいインデックスを有する候補を、一時的動きベクトル候補リストから除去し得る。
[00165]別の例として、動きおよび視差補償ユニット46は、1つまたは複数の空間隣接ブロック候補を動きベクトル候補リストに追加し得、1つまたは複数の時間隣接ブロック候補を動きベクトル候補リストに追加し得、視差ベクトルに基づいて、追加候補を決定し得、追加候補を動きベクトル候補リストの中の固定位置からの候補と比較し得る。
[00166]上記で説明したように、動きおよび視差推定ユニット44ならびに動きおよび視差補償ユニット46によって実行されるインター予測の代替として、イントラ予測ユニット48が現在ブロックをイントラ予測してもよい。詳細には、イントラ予測ユニット48は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット48は、たとえば、別個の符号化パスの間、様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測ユニット48(または、いくつかの例では、モード選択ユニット)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。たとえば、イントラ予測ユニット48は、テストされた様々なイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し得、テストされたモードの中から最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されたビットレート(すなわち、いくつかのビット)を決定する。イントラ予測ユニット48は、どのイントラ予測モードがブロックに対して最良のレートひずみ値を示すのかを決定するために、様々な符号化ブロックに対するひずみおよびレートから比を計算し得る。
[00167]いずれの場合も、ブロックのためのイントラ予測モードを選択した後、イントラ予測ユニット48は、ブロックに対して選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供し得る。エントロピー符号化ユニット56は、本開示の技法に従って選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックに対してコンテキストを符号化することの定義と、コンテキストの各々に対して使用すべき、最確(most probable)イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを、送信されるビットストリームに含め得る。
[00168]予測処理ユニット42がインター予測またはイントラ予測のいずれかを介して現在ビデオブロックのための予測ブロックを生成した後、ビデオエンコーダ20は、現在ビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロックの中の残差ビデオデータは、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
[00169]変換処理ユニット52は、得られた変換係数を量子化処理ユニット54に送り得る。量子化処理ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化処理ユニット54は、次いで、量子化変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行してもよい。
[00170]量子化の後、エントロピー符号化ユニット56は、量子化された変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピー符号化方法もしくは技法を実行し得る。エントロピー符号化ユニット56によるエントロピー符号化の後、符号化ビットストリームは、ビデオデコーダ30へ送信されてよく、または後の送信もしくはビデオデコーダ30による後の取出しのためにアーカイブされてもよい。エントロピー符号化ユニット56はまた、コーディングされている現在ビデオスライスのための、動きベクトルと他のシンタックス要素とをエントロピー符号化し得る。
[00171]逆量子化処理ユニット58および逆変換処理ユニット60は、参照ピクチャの参照ブロックとして後で使用するためのピクセル領域における残差ブロックを再構成するために、それぞれ、逆量子化および逆変換を適用する。動きおよび視差補償ユニット46は、残差ブロックを参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つの予測ブロックに加算することによって、参照ブロックを計算し得る。動きおよび視差補償ユニット46はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、参照ピクチャメモリ64に記憶するための参照ブロックを生成するために、再構成された残差ブロックを動きおよび視差補償ユニット46によって生成された動き補償予測ブロックに加算する。参照ブロックは、後続のビデオフレームまたはピクチャの中のブロックをインター予測するための参照ブロックとして、動きおよび視差推定ユニット44ならびに動きおよび視差補償ユニット46によって使用され得る。
[00172]このようにして、ビデオエンコーダ20は、本開示で説明する1つまたは複数の例示的な技法を実施するように構成され得るビデオエンコーダの一例である。たとえば、ビデオデータメモリ40はビデオデータを記憶する。ビデオデータは、その各々をビデオエンコーダ20が3D−AVC準拠または3D−HEVC準拠のビデオコーディングプロセスにおいて符号化すべき、依存ビューのテクスチャビデオコンポーネントとテクスチャビューコンポーネントに対応する深度ビューコンポーネントとを含み得る。
[00173]本開示で説明する技法では、ビデオエンコーダ20は、3D−AVC準拠または3D−HEVC準拠のビデオコーディングプロセスにおいて、ビデオデータの依存ビューのテクスチャビューコンポーネントを符号化するように構成された1つまたは複数のプロセッサを含み得る。上記で説明したように、3D−AVCにおける各ビューは、テクスチャビューコンポーネントと深度ビューコンポーネントとを含む。3D−AVCでは、1つのベースビューおよび1つまたは複数の拡張ビューまたは依存ビューがあり、ここで、1つまたは複数の拡張ビューまたは依存ビューのテクスチャビューコンポーネントはビュー間予測され得る。
[00174]テクスチャビューコンポーネントを符号化するために、ビデオエンコーダ20は、少なくとも1つの隣接ブロックが、依存ビュー以外のビューの中のビュー間参照ピクチャを指す視差動きベクトルを用いてビュー間予測されているかどうかを決定するために、テクスチャビューコンポーネントの中の現在ブロックの1つまたは複数の隣接ブロックの動き情報を評価するように構成され得る。ビデオエンコーダ20は、隣接ブロックのうちの1つのための視差動きベクトルに基づいて、現在ブロックのための視差ベクトルを導出し得る。テクスチャ優先コーディングの場合、ビデオエンコーダ20は、テクスチャビューコンポーネントを符号化することに続いて、テクスチャビューコンポーネントに対応する、ビデオデータの深度ビューコンポーネントを符号化し得る。
[00175]いくつかの例では、ビデオエンコーダ20の予測処理ユニット42は、本開示で説明する例を実施するように構成されたプロセッサの一例であり得る。いくつかの例では、予測処理ユニット42以外のユニット(たとえば、1つまたは複数のプロセッサ)が、上記で説明した例を実施してもよい。いくつかの例では、予測処理ユニット42は、ビデオエンコーダ20の1つまたは複数の他のユニットとともに、上記で説明した例を実施してもよい。いくつかの例では、ビデオエンコーダ20のプロセッサ(図8に示さず)は、単独で、またはビデオエンコーダ20の他のプロセッサとともに、上記で説明した例を実施してもよい。
[00176]図9は、本開示で説明する動きベクトル候補リスト生成技法を実施し得るビデオデコーダの一例を示すブロック図である。図9は、本開示で説明する技法を実施し得るビデオデコーダの一例を示すブロック図である。たとえば、図9は、3D−AVC準拠または3D−HEVC準拠のいずれかのビデオデコーダを表し得る、ビデオデコーダ30を示す。ビデオデコーダ30は、PU、TU、およびCUなどの、いくつかのHEVC用語を使用して説明されるが、ビデオデコーダ30に関して説明する技法がH.264規格に従ってコーディングされたビデオを用いて実行され得ることも理解されたい。
[00177]ビデオデコーダ30は、インター予測復号またはイントラ予測復号を実行し得る。図9は、ビデオデコーダ30を示す。図9の例では、ビデオデコーダ30は、ビデオデータメモリ69と、エントロピー復号ユニット70と、予測処理ユニット71と、逆量子化処理ユニット76と、逆変換処理ユニット78と、加算器80と、参照ピクチャメモリ82とを含む。予測処理ユニット71は、動きおよび視差補償ユニット72と、イントラ予測ユニット74とを含む。ビデオデコーダ30は、いくつかの例では、図8からのビデオエンコーダ20に関して説明した符号化パスと概して逆の復号パスを実行し得る。
[00178]ビデオデータメモリ69は、ビデオデコーダ30の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ69に記憶されたビデオデータは、たとえば、ストレージデバイス34から、カメラなどのローカルビデオソースから、ビデオデータのワイヤードもしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって、取得され得る。ビデオデータメモリ69は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成し得る。
[00179]参照ピクチャメモリ82は、(たとえば、イントラコーディングモードまたはインターコーディングモードで)ビデオデコーダ30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する復号ピクチャバッファ(DPB)の一例である。ビデオデータメモリ69および参照ピクチャメモリ82は、同期DRAM(SDRAM)を含むダイナミックランダムアクセスメモリ(DRAM)、磁気抵抗RAM(MRAM)、抵抗性RAM(RRAM)、または他のタイプのメモリデバイスなどの、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ69および参照ピクチャメモリ82は、同じメモリデバイスまたは別個のメモリデバイスによって設けられ得る。様々な例では、ビデオデータメモリ69は、ビデオデコーダ30の他の構成要素とともにオンチップであってよく、またはそれらの構成要素に対してオフチップであってもよい。
[00180]復号プロセスの間、ビデオデコーダ30は、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを、ビデオエンコーダ20から受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化係数と、動きベクトルと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、予測処理ユニット71に動きベクトルと他のシンタックス要素とを転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[00181]ビデオスライスがイントラコード化(I)スライスとしてコーディングされているとき、予測処理ユニット71のイントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在フレームまたは現在ピクチャの、前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(すなわち、BまたはP)スライスとしてコーディングされているとき、予測処理ユニット71の動きおよび視差補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在ビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つの中の、参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82に記憶された参照ピクチャに基づいて、デフォルト構成技法を使用して参照ピクチャリスト(RefPicList0およびRefPicList1)を構成し得る。
[00182]動きおよび視差補償ユニット72は、動きベクトルと他のシンタックス要素とをパースすることによって現在ビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在ビデオブロックのための予測ブロックを生成するために予測情報を使用する。たとえば、動きおよび視差補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)と、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)と、スライスのための参照ピクチャリストのうちの1つまたは複数のための構成情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在ビデオスライスの中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
[00183]動きおよび視差補償ユニット72は、本開示で説明する動きベクトル候補リスト構成技法を実行するように構成され得る。一例として、動きおよび視差補償ユニット72は、1つまたは複数の動きベクトル候補を動きベクトル候補リストに追加し得、動きベクトル候補リストの中の1つまたは複数の動きベクトル候補から、視差動きベクトル候補を識別し得、視差動きベクトル候補に基づいて、視差シフト動きベクトル(DSMV)候補を決定し得、DSMV候補を動きベクトル候補リストに追加し得る。
[00184]別の例として、動きおよび視差補償ユニット72は、一時的動きベクトル候補リストに含めるための1つまたは複数の第1の動きベクトル候補を決定するために、現在ブロックの1つまたは複数の空間隣接ブロックを分析し得、一時的動きベクトル候補リストに含めるための1つまたは複数の第2の動きベクトル候補を決定するために、1つまたは複数の時間隣接ブロックを分析し得、一時的動きベクトル候補リストに含めるための1つまたは複数の追加候補を、現在ブロックのための視差ベクトルに基づいて決定し得、ここにおいて、1つまたは複数の第1の動きベクトル候補、1つまたは複数の第2の動きベクトル候補、および1つまたは複数の追加候補が、動きベクトル候補リストの中の候補の最大数よりも多くの候補を備え、動きベクトル候補リストのための最大インデックスよりも大きいインデックスを有する候補を、一時的動きベクトル候補リストから除去し得る。
[00185]別の例として、動きおよび視差補償ユニット72は、1つまたは複数の空間隣接ブロック候補を動きベクトル候補リストに追加し得、1つまたは複数の時間隣接ブロック候補を動きベクトル候補リストに追加し得、視差ベクトルに基づいて、追加候補を決定し得、追加候補を動きベクトル候補リストの中の固定位置からの候補と比較し得る。
[00186]動きおよび視差補償ユニット72はまた、補間フィルタに基づいて補間を実行し得る。動きおよび視差補償ユニット72は、参照ブロックのサブ整数ピクセルに対する補間値を計算するために、ビデオブロックの符号化の間にビデオエンコーダ20によって使用されるような補間フィルタを使用し得る。この場合、動きおよび視差補償ユニット72は、ビデオエンコーダ20によって使用された補間フィルタを、受信されたシンタックス要素から決定し得、予測ブロックを生成するためにその補間フィルタを使用し得る。
[00187]逆量子化処理ユニット76は、ビットストリームの中で提供されるとともにエントロピー復号ユニット70によって復号された量子化変換係数を、逆量子化(すなわち量子化解除)する。逆量子化プロセスは、量子化の程度と、同じく適用されるべき逆量子化の程度とを決定するために、ビデオスライスの中の各ビデオブロックに対してビデオエンコーダ20によって計算された量子化パラメータを使用することを含み得る。逆変換処理ユニット78は、ピクセル領域における残差ブロックを生成するために、逆変換(たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセス)を変換係数に適用する。
[00188]動きおよび視差補償ユニット72が動きベクトルおよび他のシンタックス要素に基づいて現在ビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換処理ユニット78からの残差ブロックを、動きおよび視差補償ユニット72によって生成された対応する予測ブロックに加算することによって、復号ビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキングアーティファクトを除去するために、復号ブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。ピクセル遷移を平滑化するか、または他のやり方でビデオ品質を改善するために、(コーディングループ中またはコーディングループ後のいずれかの)他のループフィルタも使用され得る。所与のピクチャの中の復号ビデオブロックは、次いで、後続の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ82に記憶される。参照ピクチャメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上で後で表示するために、復号ビデオを記憶する。
[00189]このようにして、ビデオデコーダ30は、本開示で説明する1つまたは複数の例示的な技法を実施するように構成され得るビデオデコーダの一例である。たとえば、ビデオデータメモリ69はビデオデータを記憶する。ビデオデータは、3D−AVC準拠または3D−HEVC準拠のビデオコーディングプロセスにおいてその各々をビデオエンコーダ20が符号化された、依存ビューのテクスチャビデオコンポーネントとテクスチャビューコンポーネントに対応する深度ビューコンポーネントとをビデオデコーダ30がそれから復号できる情報を含み得る。
[00190]本開示で説明する技法では、ビデオデコーダ30は、3D−AVC準拠または3D−HEVC準拠のビデオコーディングプロセスにおいて、ビデオデータの依存ビューのテクスチャビューコンポーネントを復号するように構成された1つまたは複数のプロセッサを含み得る。テクスチャビューコンポーネントを復号するために、ビデオデコーダ30は、少なくとも1つの隣接ブロックが、依存ビュー以外のビューの中のビュー間参照ピクチャを指す視差動きベクトルを用いてビュー間予測されているかどうかを決定するために、テクスチャビューコンポーネントの中の現在のブロックの1つまたは複数の隣接ブロックの動き情報を評価するように構成され得る。ビデオデコーダ30は、隣接ブロックのうちの1つのための視差動きベクトルに基づいて、現在のブロックのための視差ベクトルを導出し得る。テクスチャ優先コーディングの場合、ビデオデコーダ30は、テクスチャビューコンポーネントを復号することに続いて、テクスチャビューコンポーネントに対応する、ビデオデータの深度ビューコンポーネントを復号し得る。
[00191]いくつかの例では、ビデオデコーダ30の予測処理ユニット71は、本開示で説明する例を実施するように構成されたプロセッサの一例であり得る。いくつかの例では、予測処理ユニット71以外のユニット(たとえば、1つまたは複数のプロセッサ)が、上記で説明した例を実施してもよい。いくつかの例では、予測処理ユニット71は、ビデオデコーダ30の1つまたは複数の他のユニットとともに、上記で説明した例を実施してもよい。またいくつかの他の例では、ビデオデコーダ30のプロセッサ(図9に示さず)は、単独で、またはビデオデコーダ30の他のプロセッサとともに、上記で説明した例を実施してもよい。
[00192]図10は、本開示による動きベクトル候補リスト構成技法を示すフローチャートである。図10の技法は、たとえば、上記で説明したビデオデコーダ30に相当し得るビデオデコーダに関して説明されるが、図10の技法が他のタイプのビデオデコーダによって実施され得ることも考えられる。
[00193]ビデオデコーダは、1つまたは複数の動きベクトル候補を動きベクトル候補リストに追加し得る(110)。動きベクトル候補は、たとえば、ベースのHEVC仕様のマージモードを使用して導出された候補であり得、時間動きベクトルと視差動きベクトルのうちの一方または両方を含み得る。ビデオデコーダは、動きベクトル候補リストの中の1つまたは複数の動きベクトル候補から、視差動きベクトル候補を識別し得る(112)。したがって、特定の空間隣接ブロックまたは時間隣接ブロックのための候補を、それらの候補が視差動きベクトルを含むかどうかを決定するために再検査する代わりに、ビデオデコーダは、動きベクトル候補リストの中の1つまたは複数の特定のエントリを、そのエントリが視差動きベクトルを含むかどうかを決定するために検査し得る。たとえば、ビデオデコーダは、第2のエントリがどの空間ネイバーまたは時間ネイバーに関連し得るのかにかかわらず、動きベクトル候補リストの中の第2のエントリを、そのエントリが視差動きベクトルを含むかどうかを決定するために検査し得る。いくつかの実装形態では、ビデオデコーダは、HEVC候補だけを含む(たとえば、3D−HEVC候補を有しない)動きベクトル候補リストから視差動きベクトルを識別することがあり、または動きベクトル候補リストが3D−HEVC候補を含む場合、動きベクトル候補リストの中のHEVC候補だけを見ればよい。
[00194]ビデオデコーダは、たとえば、動きベクトル候補リストの中の最初のN個の候補から、第1の利用可能な視差動きベクトル候補を識別することによって、視差動きベクトル候補を識別してよく、ここにおいて、Nは候補の最大数よりも小さい整数である。ビデオデコーダは、たとえば、動きベクトル候補リストの中の最初のN個の候補から、参照ピクチャリストに対応する第1の利用可能な視差動きベクトル候補を識別してよく、ここにおいて、Nは整数である。他の例では、ビデオデコーダは、第1の候補を除いて(すなわち、インデックス0を有する候補を無視して)、動きベクトル候補リストの中の最初のN個の候補から、第1の利用可能な視差動きベクトル候補を識別することによって、視差動きベクトル候補を識別してよく、ここにおいて、Nは候補の最大数よりも小さい整数である。いくつかの例では、Nが2に等しくてよく、他の例では、Nが異なる整数値であってもよい。いくつかの実装形態では、最初のN個の候補が1つまたは複数の仮想候補を含むことがあり、他の実装形態では、最初のN個の候補が仮想候補を含まないことがある。ビデオデコーダは、IPMC候補が利用不可能であることに応答して、視差動きベクトル候補を識別するように構成され得る。上記の例では、最初のN個の候補はまた、最初のN個のHEVC候補(たとえば、いかなる3D−HEVC候補も除く)に制約され得る。
[00195]視差動きベクトル候補に基づいて、ビデオデコーダは、DSMV候補を決定し得る(114)。ビデオデコーダは、たとえば、上記で説明した技法を使用してDSMV候補を決定し得る。ビデオデコーダは、DSMV候補を動きベクトル候補リストに追加し得る(116)。DSMV候補を動きベクトル候補リストに追加するとき、ビデオデコーダは、動きベクトル候補リストの中で仮想候補よりも小さいインデックスをDMSV候補に割り当て得る。ビデオデータのブロックに対して、ビデオデコーダは、動きベクトル候補リストからの候補を識別するインデックス値を受信し得(118)、識別された候補に対応する動きベクトルを使用して、ビデオデータのブロックを復号し得る(120)。
[00196]図11は、本開示による動きベクトル候補リスト構成技法を示すフローチャートである。図11の技法は、たとえば、上記で説明したビデオエンコーダ20に相当し得る一般的なビデオエンコーダに関して説明されるが、図11の技法が他のタイプのビデオエンコーダによって実施され得ることも考えられる。
[00197]ビデオエンコーダは、1つまたは複数の動きベクトル候補を動きベクトル候補リストに追加し得る(122)。動きベクトル候補は、たとえば、ベースのHEVC仕様のマージモードを使用して導出された候補であり得る。ビデオエンコーダは、動きベクトル候補リストの中の1つまたは複数の動きベクトル候補から、視差動きベクトル候補を識別し得る(124)。ビデオエンコーダは、たとえば、動きベクトル候補リストの中の最初のN個の候補から、第1の利用可能な視差動きベクトル候補を識別することによって、視差動きベクトル候補を識別してよく、ここにおいて、Nは候補の最大数よりも小さい整数である。ビデオエンコーダは、たとえば、動きベクトル候補リストの中の最初のN個の候補から、参照ピクチャリストに対応する第1の利用可能な視差動きベクトル候補を識別してよく、ここにおいて、Nは整数である。いくつかの例では、Nは2に等しくてよく、他の例では、Nは異なる整数値であってもよい。いくつかの実装形態では、最初のN個の候補が1つまたは複数の仮想候補を含むことがあり、他の実装形態では、最初のN個の候補が仮想候補を含まないことがある。ビデオエンコーダは、IPMC候補が利用不可能であることに応答して、視差動きベクトル候補を識別するように構成され得る。
[00198]視差動きベクトル候補に基づいて、ビデオエンコーダは、DSMV候補を決定し得る(1126)。ビデオエンコーダは、たとえば、上記で説明した技法を使用してDSMV候補を決定し得る。ビデオエンコーダは、DSMV候補を動きベクトル候補リストに追加し得る(1128)。DSMV候補を動きベクトル候補リストに追加するとき、ビデオエンコーダは、動きベクトル候補リストの中で仮想候補よりも小さいインデックスをDMSV候補に割り当て得る。ビデオデータのブロックに対して、ビデオエンコーダは、ビデオデータのブロックを符号化するための動きベクトルを決定する(130)。動きベクトルは、動きベクトル候補リストの中の候補に相当する。ビデオエンコーダは、動きベクトル候補リストの中の候補を識別するシンタックス要素を生成する(132)。
[00199]図12は、本開示による動きベクトル候補リスト構成技法を示すフローチャートである。図12の技法は、たとえば、上記で説明したビデオデコーダ30に相当し得るビデオデコーダに関して説明されるが、図12の技法が他のタイプのビデオデコーダによって実施され得ることも考えられる。
[00200]ビデオデコーダは、一時的動きベクトル候補リストに含めるための1つまたは複数の第1の動きベクトル候補を決定するために、現在ブロックの1つまたは複数の空間隣接ブロックを分析し得る(134)。第1の動きベクトル候補は、時間動きベクトルと視差動きベクトルのうちの一方または両方を含み得る。空間隣接ブロックは、たとえば、図4に示す空間ネイバーの一部または全部に相当し得る。ビデオデコーダは、一時的動きベクトル候補リストに含めるための1つまたは複数の第2の動きベクトル候補を決定するために、1つまたは複数の時間隣接ブロックを分析し得る(136)。第2の動きベクトル候補は、時間動きベクトルと視差動きベクトルのうちの一方または両方を含み得る。ビデオデコーダは、一時的動きベクトル候補リストに含めるための1つまたは複数の追加候補を、現在ブロックのための視差ベクトルに基づいて決定し得る(138)。ビデオデコーダは、たとえば、上記で説明したようなNBDVまたはDo−NBDVプロセスを使用して、視差ベクトルを決定し得る。1つまたは複数の追加候補は、たとえば、BVSP候補、視差シフト動きベクトル候補、ビュー間予測動き候補、および右下のビュー間予測動き候補の、任意の組合せまたは順列を含み得る。
[00201]1つまたは複数の第1の動きベクトル候補、1つまたは複数の第2の動きベクトル候補、および1つまたは複数の追加候補は、動きベクトル候補リストの中の候補の最大数よりも多くの候補を含むことがある。最大数は、たとえば、5または6であってよい。ビデオデコーダは、動きベクトル候補リストのための最大インデックス以上のインデックスを有する候補を、一時的動きベクトル候補リストから除去し得る(140)。したがって、一例として、一時的動きベクトル候補リストが8つのエントリを有し、動きベクトル候補リストの中の候補の最大数が6である場合、ビデオデコーダは、動きベクトル候補リストを形成するために、インデックス6および7(リストはインデックス0において始まって)を有するエントリを、一時的動きベクトル候補リストから除去してよい。
[00202]ビデオデータのブロックに対して、ビデオデコーダは、動きベクトル候補リストからの候補を識別するインデックス値を受信し得る(142)。ビデオデコーダは、識別された候補に対応する動きベクトルを使用して、ビデオデータのブロックを復号する(144)。
[00203]ビデオデコーダはまた、一時的動きベクトル候補リストに含めるための1つまたは複数の仮想候補を生成し得る。そのような例では、1つまたは複数の第1の動きベクトル候補、1つまたは複数の第2の動きベクトル候補、1つまたは複数の仮想候補、および1つまたは複数の追加候補における候補の数は、動きベクトル候補リストの候補の最大数よりも多くの候補を含むことがあり、その場合、ビデオデコーダは、動きベクトル候補リストを生成することの一部として、一時的動きベクトル候補リストから候補を除去し得る。
[00204]ビデオデコーダはまた、代替または追加のいずれかとして、第1の動きベクトル候補のうちの1つもしくは複数の候補および/または第2の動きベクトル候補のうちの1つもしくは複数の候補を、除去のためにマークし得、次いで、マークされた候補を除去し得る。マークされた候補は、追加候補が一時的動きベクトル候補リストに追加された後に除去されてよい。したがって、リストが構成されながらリストの中の候補を再配置するのではなく、そのような再配置を低減または回避するために、ビデオデコーダは、除去のために候補をマークしてよく、ただし除去することを待ってよい。除去のためにマークされた候補を除去した後、ビデオデコーダは、次いで、リストを候補の最大数まで小さく低減するように、必要に応じて過剰な候補を除去し得る。
[00205]図13は、本開示による動きベクトル候補リスト構成技法を示すフローチャートである。図13の技法は、たとえば、上記で説明したビデオエンコーダ20に相当し得る一般的なビデオエンコーダに関して説明されるが、図13の技法が他のタイプのビデオエンコーダによって実施され得ることも考えられる。
[00206]ビデオエンコーダは、一時的動きベクトル候補リストに含めるための1つまたは複数の第1の動きベクトル候補を決定するために、現在ブロックの1つまたは複数の空間隣接ブロックを分析し得る(200)。空間隣接ブロックは、たとえば、図4に示す空間ネイバーの一部または全部に相当し得る。ビデオエンコーダは、一時的動きベクトル候補リストに含めるための1つまたは複数の第2の動きベクトル候補を決定するために、1つまたは複数の時間隣接ブロックを分析し得る(202)。ビデオエンコーダは、一時的動きベクトル候補リストに含めるための1つまたは複数の追加候補を、現在ブロックのための視差ベクトルに基づいて決定し得る(204)。1つまたは複数の追加候補は、たとえば、BVSP候補、視差シフト動きベクトル候補、ビュー間予測動き候補、または右下のビュー間予測動きベクトル候補の、任意の組合せまたは順列を含み得る。ビデオデータのブロックに対して、ビデオエンコーダは、ビデオデータのブロックを符号化するための動きベクトルを決定する(208)。動きベクトルは、動きベクトル候補リストの中の候補に相当する。ビデオエンコーダは、動きベクトル候補リストの中の候補を識別するシンタックス要素を生成する(210)。
[00207]1つまたは複数の第1の動きベクトル候補、1つまたは複数の第2の動きベクトル候補、および1つまたは複数の追加候補は、動きベクトル候補リストの中の候補の最大数よりも多くの候補を含むことがある。最大数は、たとえば、5または6であってよい。ビデオエンコーダは、動きベクトル候補リストのための最大インデックス以上のインデックスを有する候補を、一時的動きベクトル候補リストから除去し得る(206)。
[00208]ビデオエンコーダはまた、一時的動きベクトル候補リストに含めるための1つまたは複数の仮想候補を生成し得る。そのような例では、1つまたは複数の第1の動きベクトル候補、1つまたは複数の第2の動きベクトル候補、1つまたは複数の仮想候補、および1つまたは複数の追加候補における候補の数は、動きベクトル候補リストの中の候補の最大数よりも多くの候補を含むことがあり、その場合、ビデオエンコーダは、動きベクトル候補リストを生成することの一部として、一時的動きベクトル候補リストから候補を除去し得る。ビデオエンコーダはまた、代替または追加のいずれかとして、第1の動きベクトル候補のうちの1つもしくは複数の候補および/または第2の動きベクトル候補のうちの1つもしくは複数の候補を、除去のためにマークしてよく、次いで、マークされた候補を除去してよい。マークされた候補は、追加候補が一時的動きベクトル候補リストに追加された後に除去されてよい。したがって、リストが構成されながらリストの中の候補を再配置するのではなく、そのような再配置を低減または回避するために、ビデオエンコーダは、除去のために候補をマークしてよく、ただし除去することを待ってよい。
[00209]図14は、本開示による動きベクトル候補リスト構成技法を示すフローチャートである。図14の技法は、たとえば、上記で説明したビデオデコーダ30に相当し得るビデオデコーダに関して説明されるが、図14の技法が他のタイプのビデオデコーダによって実施され得ることも考えられる。
[00210]ビデオデコーダは、1つまたは複数の空間隣接ブロック候補を動きベクトル候補リストに追加する(212)。空間隣接ブロック候補は、図4に示す空間隣接ブロックの一部または全部などの空間隣接ブロックから決定された動きベクトル候補である。ビデオデコーダは、1つまたは複数の時間隣接ブロック候補を動きベクトル候補リストに追加する(214)。ビデオデコーダは、視差ベクトルに基づいて追加候補を決定する(216)。追加候補は、たとえば、BVSP候補、視差シフト動きベクトル候補、ビュー間予測動き候補、または右下のビュー間予測動き候補のいずれかであり得る。ビデオデコーダは、追加候補を動きベクトル候補リストの中の固定位置からの候補と比較する(218)。したがって、追加候補を特定の空間ネイバーまたは時間ネイバーからの候補と比較する代わりに、ビデオデコーダは、その候補がどの空間ネイバーまたは時間ネイバーに関連し得るのかにかかわらず、追加候補を動きベクトル候補リストの中の特定のインデックスの候補と比較し得る。
[00211]ビデオデータのブロックに対して、ビデオデコーダは、動きベクトル候補リストからの候補を識別するインデックス値を受信する(220)。ビデオは、識別された候補に対応する動きベクトルを使用して、ビデオデータのブロックを復号する(222)。
[00212]追加候補が、1つもしくは複数の空間隣接ブロック候補のうちの1つ、または1つもしくは複数の時間隣接ブロック候補のうちの1つと同じであることに応答して、ビデオデコーダは、追加候補を除去してよく、または追加候補を利用不可能としてマークするとともに追加候補を後で除去してもよい。代替として、追加候補が、1つもしくは複数の空間隣接ブロック候補のうちの1つ、または1つもしくは複数の時間隣接ブロック候補のうちの1つ、と同じであることに応答して、ビデオデコーダは、1つもしくは複数の空間隣接ブロック候補のうちの1つ、または1つもしくは複数の時間隣接ブロック候補のうちの1つを除去してよく、あるいは1つもしくは複数の空間隣接ブロック候補のうちの1つ、または1つもしくは複数の時間隣接ブロック候補のうちの1つを利用不可能としてマークするとともに追加候補を後で除去してもよい。ビデオデコーダはまた、追加候補を動きベクトル候補リストの中の第2の固定位置からの第2の候補と比較し得るか、または追加候補を動きベクトル候補リストの中の最初のN個の候補と比較し得、ここにおいて、Nは1よりも大きいがリストの中で許容される候補の最大数よりも小さい整数である。
[00213]図14の技法の特定の一実装形態では、ビデオデコーダは、BVSP候補をプルーニング(すなわち、除去)しなくてもよい。ビデオデコーダは、DSMVを第1および第2のHEVCマージ候補と比較し得る。DSMVが第1および第2のHEVCマージ候補のうちの1つと同じである場合、ビデオデコーダは、DSMVを「利用不可能」または「除去されるべき」としてマークし得る。ビデオデコーダは、IPMCを第1および第2のHEVCマージ候補と比較し得る。IPMCが第1のHEVCマージ候補と同じである場合、ビデオデコーダは、第1のHEVCマージ候補を「利用不可能」または「除去されるべき」としてマークし得る。そうでなく、IPMCが第2のHEVCマージ候補と同じである場合、ビデオデコーダは、第2のHEVCマージ候補を「利用不可能」または「除去されるべき」としてマークし得る。ビデオデコーダは、右下のIPMCをそのIPMCと比較し得る。右下のIPMCがそのIPMCと同じであるとき、ビデオデコーダは、右下のIPMCを「利用不可能」または「除去されるべき」としてマークし得る。
[00214]図15は、本開示による動きベクトル候補リスト構成技法を示すフローチャートである。図15の技法は、たとえば、上記で説明したビデオエンコーダ20に相当し得る一般的なビデオエンコーダに関して説明されるが、図15の技法が他のタイプのビデオエンコーダによって実施され得ることも考えられる。
[00215]ビデオエンコーダは、1つまたは複数の空間隣接ブロック候補を動きベクトル候補リストに追加する(224)。空間隣接ブロック候補は、図4に示す空間隣接ブロックの一部または全部などの空間隣接ブロックから決定された動きベクトル候補である。ビデオエンコーダは、1つまたは複数の時間隣接ブロック候補を動きベクトル候補リストに追加する(226)。ビデオエンコーダは、視差ベクトルに基づいて追加候補を決定する(228)。追加候補は、たとえば、BVSP候補、視差シフト動きベクトル候補、ビュー間予測動き候補、および右下のビュー間予測動き候補のいずれかであり得る。ビデオエンコーダは、追加候補を動きベクトル候補リストの中の固定位置からの候補と比較する(230)。ビデオデータのブロックに対して、ビデオエンコーダは、ビデオデータのブロックを符号化するための動きベクトルを決定する(232)。動きベクトルは、動きベクトル候補リストの中の候補に相当する。ビデオエンコーダは、動きベクトル候補リストの中の候補を識別するシンタックス要素を生成する(234)。
[00216]追加候補が、1つもしくは複数の空間隣接ブロック候補のうちの1つ、または1つもしくは複数の時間隣接ブロック候補のうちの1つ、と同じであることに応答して、ビデオエンコーダは、追加候補を利用不可能としてマークするとともに追加候補を後で除去してもよい。ビデオエンコーダはまた、追加候補を動きベクトル候補リストの中の第2の固定位置からの第2の候補と比較し得るか、または追加候補を動きベクトル候補リストの中の最初のN個の候補と比較し得、ここにおいて、Nは1よりも大きいがリストの中で許容される候補の最大数よりも小さい整数である。上記の例では、最初のN個の候補はまた、最初のN個のHEVC候補(たとえば、いかなる3D−HEVC候補も除く)に制約され得る。
[00217]図10〜図15のための上記の説明のうちのいくつかでは、ビデオ復号技法は、対応するビデオ符号化技法以外の追加の詳細とともに、または追加の例とともに説明されることがあった。しかしながら、別段に述べられない限り、そのような追加の詳細または追加の例がエンコーダの説明に適用可能であることも理解されたい。
[00218]1つまたは複数の例では、説明する機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されてよく、あるいはコンピュータ可読媒体を介して送信されてよく、ハードウェアベースの処理ユニットによって実行されてもよい。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含んでよく、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含んでもよい。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実施のための命令、コードおよび/またはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
[00219]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気記憶デバイス、フラッシュメモリ、または、命令またはデータ構造の形式で所望のプログラムコードを記憶するために使用され得るとともにコンピュータによってアクセスされ得る任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他のリモートソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まず、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーを用いて光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[00220]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または、本明細書で説明した技法の実装に好適な任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび/もしくはソフトウェアモジュール内に設けられてよく、または複合コーデックに組み込まれてもよい。また、本技法は、1つまたは複数の回路または論理要素で完全に実装され得る。
[00221]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置に実装され得る。本開示では、様々な構成要素、モジュール、またはユニットが、開示する技法を実行するように構成されたデバイスの機能的態様を強調するように説明されるが、異なるハードウェアユニットによる実現を必ずしも必要とするとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび/またはファームウェアとともに、上記で説明した1つまたは複数のプロセッサを含む、コーデックハードウェアユニットにおいて組み合わされてよく、または相互動作するハードウェアユニットの集合によって設けられてもよい。
[00222]様々な例が、説明された。これらおよび他の例は、以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
3次元(3D)ビデオデータを復号する方法であって、
1つまたは複数の動きベクトル候補を、動きベクトル候補リストに追加することと、
前記動きベクトル候補リストの中の前記1つまたは複数の動きベクトル候補から、視差動きベクトル候補を識別することと、
前記視差動きベクトル候補に基づいて、視差シフト動きベクトル(DSMV)候補を決定することと、
前記DSMV候補を前記動きベクトル候補リストに追加することと、
ビデオデータのブロックに対して、前記動きベクトル候補リストからの候補を識別するインデックス値を受信することと、
前記識別された候補に対応する動きベクトルを使用して、ビデオデータの前記ブロックを復号することと、
を備える方法。
[C2]
3次元(3D)ビデオデータを符号化する方法であって、
1つまたは複数の動きベクトル候補を、動きベクトル候補リストに追加することと、
前記動きベクトル候補リストの中の前記1つまたは複数の動きベクトル候補から、視差動きベクトル候補を識別することと、
前記視差動きベクトル候補に基づいて、視差シフト動きベクトル(DSMV)候補を決定することと、
前記DSMV候補を前記動きベクトル候補リストに追加することと、
ビデオデータのブロックに対して、ビデオデータの前記ブロックを符号化するための動きベクトルを決定することと、ここにおいて、前記動きベクトルは、前記動きベクトル候補リストの中の候補に対応し、
前記動きベクトル候補リストの中の前記候補を識別するシンタックス要素を生成することと
を備える方法。
[C3]
前記視差動きベクトル候補を識別することは、前記動きベクトル候補リストの中の最初のN個の候補から、第1の利用可能な視差動きベクトル候補を識別することを備え、ここにおいて、Nは候補の最大数よりも小さい整数である、[C1]または[C2]に記載の方法。
[C4]
前記視差動きベクトル候補を識別することは、前記動きベクトル候補リストの中の最初のN個の候補から、参照ピクチャリストに対応する第1の利用可能な視差動きベクトル候補を識別することを備え、ここにおいて、Nが整数である、[C1]または[C2]に記載の方法。
[C5]
Nは2に等しい、[C3]または[C4]に記載の方法。
[C6]
最初のN個の候補は、1つまたは複数の仮想候補を備える、[C3]から[C5]のいずれかに記載の方法。
[C7]
最初のN個の候補は、仮想候補を備えない、[C3]から[C5]のいずれかに記載の方法。
[C8]
前記視差動きベクトル候補を識別することは、右下のビュー間予測動き(IPMC)候補が利用不可能であることに応答して実行される、[C1]から[C7]のいずれかに記載の方法。
[C9]
前記DSMV候補を前記動きベクトル候補リストに追加することは、前記動きベクトル候補リストの中で仮想候補よりも小さいインデックスを、前記DMSV候補に割り当てることを備える、[C1]から[C7]のいずれかに記載の方法。
[C10]
3次元(3D)ビデオデータを復号する方法であって、
一時的動きベクトル候補リストに含めるための1つまたは複数の第1の動きベクトル候補を決定するために、現在ブロックの1つまたは複数の空間隣接ブロックを分析することと、
前記一時的動きベクトル候補リストに含めるための1つまたは複数の第2の動きベクトル候補を決定するために、1つまたは複数の時間隣接ブロックを分析することと、
前記一時的動きベクトル候補リストに含めるための1つまたは複数の追加候補を、前記現在ブロックのための視差ベクトルに基づいて決定することと、ここにおいて、前記1つまたは複数の第1の動きベクトル候補、前記1つまたは複数の第2の動きベクトル候補、および前記1つまたは複数の追加候補は、動きベクトル候補リストの中の候補の最大数よりも多くの候補を備え、
前記動きベクトル候補リストのための最大インデックスよりも大きいインデックスを有する候補を、前記一時的動きベクトル候補リストから除去することと、
ビデオデータのブロックに対して、前記動きベクトル候補リストからの候補を識別するインデックス値を受信することと、
前記識別された候補に対応する動きベクトルを使用して、ビデオデータの前記ブロックを復号することと、
を備える方法。
[C11]
3次元(3D)ビデオデータを符号化する方法であって、
一時的動きベクトル候補リストに含めるための1つまたは複数の第1の動きベクトル候補を決定するために、現在ブロックの1つまたは複数の空間隣接ブロックを分析することと、
前記一時的動きベクトル候補リストに含めるための1つまたは複数の第2の動きベクトル候補を決定するために、1つまたは複数の時間隣接ブロックを分析することと、
前記一時的動きベクトル候補リストに含めるための1つまたは複数の追加候補を、前記現在ブロックのための視差ベクトルに基づいて決定することと、ここにおいて、前記1つまたは複数の第1の動きベクトル候補、前記1つまたは複数の第2の動きベクトル候補、および前記1つまたは複数の追加候補は、動きベクトル候補リストの中の候補の最大数よりも多くの候補を備え、
前記動きベクトル候補リストのための最大インデックスよりも大きいインデックスを有する候補を、前記一時的動きベクトル候補リストから除去することと、
ビデオデータのブロックに対して、ビデオデータの前記ブロックを符号化するための動きベクトルを決定することと、ここにおいて、前記動きベクトルは、前記動きベクトル候補リストの中の候補に対応し、
前記動きベクトル候補リストの中の前記候補を識別するシンタックス要素を生成することと、
を備える方法。
[C12]
前記一時的動きベクトル候補リストに含めるための1つまたは複数の仮想候補を生成することをさらに備え、ここにおいて、前記1つまたは複数の第1の動きベクトル候補、前記1つまたは複数の第2の動きベクトル候補、前記1つまたは複数の仮想候補、および前記1つまたは複数の追加候補は、前記動きベクトル候補リストの中の候補の前記最大数よりも多くの候補を備える、
[C10]または[C11]に記載の方法。
[C13]
前記第1の動きベクトル候補または第2の動きベクトル候補のうちの1つまたは複数を、除去のためにマークすることと、
前記マークされた候補を除去することと、
をさらに備える[C10]から[C12]のいずれかに記載の方法。
[C14]
前記1つまたは複数の追加候補は、BVSP候補を備える、[C10]から[C13]のいずれかに記載の方法。
[C15]
前記1つまたは複数の追加候補は、視差シフト動きベクトル候補を備える、[C10]から[C14]のいずれかに記載の方法。
[C16]
前記1つまたは複数の追加候補は、ビュー間予測動き候補および右下のビュー間予測動き候補のうちの1つまたは複数を備える、[C10]から[C15]のいずれかに記載の方法。
[C17]
3次元(3D)ビデオデータを復号する方法であって、
1つまたは複数の空間隣接ブロック候補を、動きベクトル候補リストに追加することと、
1つまたは複数の時間隣接ブロック候補を、動きベクトル候補リストに追加することと、
視差ベクトルに基づいて、追加候補を決定することと、
前記追加候補を、前記動きベクトル候補リストの中の固定位置からの候補と比較することと、
ビデオデータのブロックに対して、前記動きベクトル候補リストからの候補を識別するインデックス値を受信することと、
前記識別された候補に対応する動きベクトルを使用して、ビデオデータの前記ブロックを復号することと、
を備える方法。
[C18]
3次元(3D)ビデオデータを符号化する方法であって、
1つまたは複数の空間隣接ブロック候補を、動きベクトル候補リストに追加することと、
1つまたは複数の時間隣接ブロック候補を、動きベクトル候補リストに追加することと、
視差ベクトルに基づいて、追加候補を決定することと、
前記追加候補を、前記動きベクトル候補リストの中の固定位置からの候補と比較することと、
ビデオデータのブロックに対して、前記動きベクトル候補リストからの候補を識別するインデックス値を受信することと、
ビデオデータのブロックに対して、ビデオデータの前記ブロックを符号化するための動きベクトルを決定することと、ここにおいて、前記動きベクトルは、前記動きベクトル候補リストの中の候補に対応し、
前記動きベクトル候補リストの中の前記候補を識別するシンタックス要素を生成することと、
を備える方法。
[C19]
前記追加候補が、前記1つもしくは複数の空間隣接ブロック候補のうちの1つ、または前記1つもしくは複数の時間隣接ブロック候補のうちの1つ、と同じであることに応答して、前記追加候補を利用不可能としてマークすることと、
前記追加候補を除去することと、
をさらに備える[C17]または[C18]に記載の方法。
[C20]
前記追加候補を、前記動きベクトル候補リストの中の第2の固定位置からの第2の候補と比較すること、
をさらに備える[C17]から[C19]のいずれかに記載の方法。
[C21]
前記1つまたは複数の追加候補は、BVSP候補を備える、[C17]から[C20]のいずれかに記載の方法。
[C22]
前記1つまたは複数の追加候補は、視差シフト動きベクトル候補を備える、[C17]から[C21]のいずれかに記載の方法。
[C23]
前記1つまたは複数の追加候補は、ビュー間予測動きベクトル候補を備える、[C17]から[C22]のいずれかに記載の方法。
[C24]
前記1つまたは複数の追加候補は、右下のビュー間予測動きベクトル候補を備える、[C17]から[C23]のいずれかに記載の方法。
[C25]
3次元(3D)ビデオデータをコーディングするためのデバイスであって、
1つまたは複数の動きベクトル候補を動きベクトル候補リストに追加することと、前記動きベクトル候補リストの中の前記1つまたは複数の動きベクトル候補から、視差動きベクトル候補を識別することと、前記視差動きベクトル候補に基づいて、視差シフト動きベクトル(DSMV)候補を決定することと、前記DSMV候補を前記動きベクトル候補リストに追加することと、前記識別された候補に対応する動きベクトルを使用して、ビデオデータのブロックをコーディングすることと、を行うように構成されたビデオコーダを備えるデバイス。
[C26]
前記ビデオコーダは、前記動きベクトル候補リストの中の最初のN個の候補から、第1の利用可能な視差動きベクトル候補を識別することによって、前記視差動きベクトル候補を識別するようにさらに構成され、ここにおいて、Nは候補の最大数よりも小さい整数である、[C26]に記載のデバイス。
[C27]
前記ビデオコーダは、前記動きベクトル候補リストの中の最初のN個の候補から、参照ピクチャリストに対応する第1の利用可能な視差動きベクトル候補を識別することによって、前記視差動きベクトル候補を識別するようにさらに構成され、ここにおいて、Nは整数である、[C25]または[C26]に記載のデバイス。
[C28]
Nは2に等しい、[C26]または[C27]に記載のデバイス。
[C29]
最初のN個の候補は、1つまたは複数の仮想候補を備える、[C26]から[C28]のいずれかに記載のデバイス。
[C30]
最初のN個の候補は、仮想候補を備えない、[C26]から[C28]のいずれかに記載のデバイス。
[C31]
前記ビデオコーダは、右下のビュー間予測動き(IPMC)候補が利用不可能であることに応答して、前記視差動きベクトル候補を識別するようにさらに構成される、[C25]から[C30]のいずれかに記載のデバイス。
[C32]
前記ビデオコーダは、前記動きベクトル候補リストの中で仮想候補よりも小さいインデックスを前記DMSV候補に割り当てることによって、前記DSMV候補を前記動きベクトル候補リストに追加するようにさらに構成される、[C25]から[C31]のいずれかに記載のデバイス。
[C33]
3次元(3D)ビデオデータをコーディングするためのデバイスであって、
一時的動きベクトル候補リストに含めるための1つまたは複数の第1の動きベクトル候補を決定するために、現在ブロックの1つまたは複数の空間隣接ブロックを分析することと、前記一時的動きベクトル候補リストに含めるための1つまたは複数の第2の動きベクトル候補を決定するために、1つまたは複数の時間隣接ブロックを分析することと、前記一時的動きベクトル候補リストに含めるための1つまたは複数の追加候補を、前記現在ブロックのための視差ベクトルに基づいて決定することと、ここにおいて、前記1つまたは複数の第1の動きベクトル候補、前記1つまたは複数の第2の動きベクトル候補、および前記1つまたは複数の追加候補は、動きベクトル候補リストの中の候補の最大数よりも多くの候補を備え、前記動きベクトル候補リストのための最大インデックスよりも大きいインデックスを有する候補を、前記一時的動きベクトル候補リストから除去することと、を行うように構成されたビデオコーダを備えるデバイス。
[C34]
前記ビデオコーダは、前記一時的動きベクトル候補リストに含めるための1つまたは複数の仮想候補を生成するようにさらに構成され、ここにおいて、前記1つまたは複数の第1の動きベクトル候補、前記1つまたは複数の第2の動きベクトル候補、前記1つまたは複数の仮想候補、および前記1つまたは複数の追加候補は、前記動きベクトル候補リストの中の候補の前記最大数よりも多くの候補を備える、[C33]に記載のデバイス。
[C35]
前記ビデオコーダは、前記第1の動きベクトル候補または第2の動きベクトル候補のうちの1つまたは複数を、除去のためにマークし、前記マークされた候補を除去するようにさらに構成される、[C33]または[C34]に記載のデバイス。
[C36]
前記1つまたは複数の追加候補は、BVSP候補を備える、[C33]から[C35]のいずれかに記載のデバイス。
[C37]
前記1つまたは複数の追加候補は、視差シフト動きベクトル候補を備える、[C33]から[C36]のいずれかに記載のデバイス。
[C38]
前記1つまたは複数の追加候補は、ビュー間予測動き候補および右下のビュー間予測動き候補のうちの1つまたは複数を備える、[C33]から[C37]のいずれかに記載のデバイス。
[C39]
3次元(3D)ビデオデータをコーディングするためのデバイスであって、
1つまたは複数の空間隣接ブロック候補を動きベクトル候補リストに追加することと、1つまたは複数の時間隣接ブロック候補を動きベクトル候補リストに追加することと、視差ベクトルに基づいて、追加候補を決定することと、前記追加候補を、前記動きベクトル候補リストの中の固定位置からの候補と比較することと、を行うように構成されたビデオコーダを備えるデバイス。
[C40]
前記ビデオコーダは、前記追加候補が、前記1つもしくは複数の空間隣接ブロック候補のうちの1つ、または前記1つもしくは複数の時間隣接ブロック候補のうちの1つ、と同じであることに応答して、前記追加候補を利用不可能としてマークし、前記追加候補を除去するようにさらに構成される、[C39]に記載のデバイス。
[C41]
前記ビデオコーダは、前記追加候補を、前記動きベクトル候補リストの中の第2の固定位置からの第2の候補と比較するようにさらに構成される、[C39]または[C40]に記載のデバイス。
[C42]
前記1つまたは複数の追加候補は、BVSP候補を備える、[C39]から[C41]のいずれかに記載のデバイス。
[C43]
前記1つまたは複数の追加候補は、視差シフト動きベクトル候補を備える、[C39]から[C42]のいずれかに記載のデバイス。
[C44]
前記1つまたは複数の追加候補は、ビュー間予測動き候補を備える、[C39]から[C43]のいずれかに記載のデバイス。
[C45]
前記ビデオコーダは、ビデオエンコーダを備える、[C25]から[C44]のいずれかに記載のデバイス。
[C46]
前記ビデオコーダは、ビデオデコーダを備える、[C25]から[C44]のいずれかに記載のデバイス。
[C47]
前記デバイスは、
集積回路、
マイクロプロセッサ、および
前記ビデオコーダを含むワイヤレス通信デバイス
のうちの少なくとも1つを備える、[C25]から[C46]のいずれかに記載のデバイス。
[C48]
命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
1つまたは複数の動きベクトル候補を動きベクトル候補リストに追加することと、
前記動きベクトル候補リストの中の前記1つまたは複数の動きベクトル候補から、視差動きベクトル候補を識別することと、
前記視差動きベクトル候補に基づいて、視差シフト動きベクトル(DSMV)候補を決定することと、
前記DSMV候補を前記動きベクトル候補リストに追加することと、
前記動きベクトル候補リストからの動きベクトルを使用して、ビデオデータのブロックをコーディングすることと、
を行わせる、コンピュータ可読記憶媒体。
[C49]
命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
一時的動きベクトル候補リストに含めるための1つまたは複数の第1の動きベクトル候補を決定するために、現在ブロックの1つまたは複数の空間隣接ブロックを分析することと、
前記一時的動きベクトル候補リストに含めるための1つまたは複数の第2の動きベクトル候補を決定するために、1つまたは複数の時間隣接ブロックを分析することと、
前記一時的動きベクトル候補リストに含めるための1つまたは複数の追加候補を、前記現在ブロックのための視差ベクトルに基づいて決定することと、ここにおいて、前記1つまたは複数の第1の動きベクトル候補、前記1つまたは複数の第2の動きベクトル候補、および前記1つまたは複数の追加候補は、動きベクトル候補リストの中の候補の最大数よりも多くの候補を備え、
前記動きベクトル候補リストのための最大インデックスよりも大きいインデックスを有する候補を、前記一時的動きベクトル候補リストから除去することと、
前記動きベクトル候補リストからの動きベクトルを使用して、ビデオデータのブロックをコーディングすることと、
を行わせる、コンピュータ可読記憶媒体。
[C50]
命令を記憶するコンピュータ可読記憶媒体であって、前記命令は、1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
1つまたは複数の空間隣接ブロック候補を、動きベクトル候補リストに追加することと、
1つまたは複数の時間隣接ブロック候補を、動きベクトル候補リストに追加することと、
視差ベクトルに基づいて、追加候補を決定することと、
前記追加候補を、前記動きベクトル候補リストの中の固定位置からの候補と比較することと、
を行わせる、コンピュータ可読記憶媒体。
[C51]
3次元(3D)ビデオデータをコーディングするためのデバイスであって、
1つまたは複数の動きベクトル候補を動きベクトル候補リストに追加するための手段と、
前記動きベクトル候補リストの中の前記1つまたは複数の動きベクトル候補から、視差動きベクトル候補を識別するための手段と、
前記視差動きベクトル候補に基づいて、視差シフト動きベクトル(DSMV)候補を決定するための手段と、
前記DSMV候補を前記動きベクトル候補リストに追加するための手段と、
前記動きベクトル候補リストからの動きベクトルを使用して、ビデオデータのブロックをコーディングするための手段と、
前記動きベクトル候補リストからの動きベクトルを使用して、ビデオデータの前記ブロックをコーディングするための手段と、
を備えるデバイス。
[C52]
3次元(3D)ビデオデータをコーディングするためのデバイスであって、
一時的動きベクトル候補リストに含めるための1つまたは複数の第1の動きベクトル候補を決定するために、現在ブロックの1つまたは複数の空間隣接ブロックを分析するための手段と、
前記一時的動きベクトル候補リストに含めるための1つまたは複数の第2の動きベクトル候補を決定するために、1つまたは複数の時間隣接ブロックを分析するための手段と、
前記一時的動きベクトル候補リストに含めるための1つまたは複数の追加候補を、前記現在ブロックのための視差ベクトルに基づいて決定するための手段と、ここにおいて、前記1つまたは複数の第1の動きベクトル候補、前記1つまたは複数の第2の動きベクトル候補、および前記1つまたは複数の追加候補は、動きベクトル候補リストの中の候補の最大数よりも多くの候補を備える、
前記動きベクトル候補リストのための最大インデックスよりも大きいインデックスを有する候補を、前記一時的動きベクトル候補リストから除去するための手段と、
前記動きベクトル候補リストからの動きベクトルを使用して、ビデオデータのブロックをコーディングするための手段と、
を備えるデバイス。
[C53]
3次元(3D)ビデオデータをコーディングするためのデバイスであって、
1つまたは複数の空間隣接ブロック候補を、動きベクトル候補リストに追加するための手段と、
1つまたは複数の時間隣接ブロック候補を、動きベクトル候補リストに追加するための手段と、
視差ベクトルに基づいて、追加候補を決定するための手段と、
前記追加候補を、前記動きベクトル候補リストの中の固定位置からの候補と比較するための手段と、
前記動きベクトル候補リストからの動きベクトルを使用して、ビデオデータのブロックをコーディングするための手段と、
を備えるデバイス。