[0022]本開示は、3Dアドバンストビデオコーディング(AVC)コーデックを用いた2つ以上のビューのコーディングを含む、アドバンストコーデックに基づくマルチビュービデオコーディングに関する。より具体的には、視差ベクトル生成に関する技法が提案される。3D−AVCにおいて、ビュー成分は、テクスチャビュー成分と深度ビュー成分とを含み、ここで、テクスチャビュー成分はビデオデータ(すなわち、ピクチャ)を含み、対応する深度ビュー成分はテクスチャビュー成分内のオブジェクトの相対的な深さを示す。視差ベクトルは、別のビューのテクスチャビュー成分内の対応するブロックのロケーションを示す、テクスチャビュー成分内のブロックのベクトルである。
[0023]3D−AVCにおける視差ベクトル生成のためのいくつかの技法は、テクスチャビュー成分内のブロックに対する視差ベクトルを生成するために、深度ビュー成分(深さマップとも呼ばれる)に依存する。視差ベクトルを生成するために深度ビュー成分に依存する必要性に対して、いくつかの問題が存在することがある。深度ビュー成分は視差ベクトル生成を必要とするので、非ベースビューに対して、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、対応するテクスチャビュー成分をコーディング(たとえば、符号化または復号)する前に、最初に深度ビュー成分をコーディングする(たとえば、符号化または復号をする)(深度優先のコーディングと呼ばれる)必要がある。しかしながら、3D−AVCベースのビデオサービスのクライアントは、テクスチャビュー成分(すなわち、テクスチャビューの復号)だけを要求し得るが、メディアゲートウェイが深度ビュー成分(たとえば、深度パケット)を転送することをスキップすること、またはビデオデコーダが深度ビュー成分を不必要に復号することを回避することは不可能であることがある。したがって、これらの他の技法は、帯域幅と復号の複雑さの両方を著しく増加する。
[0024]その上、いくつかの他のビデオコーディング規格は、テクスチャビュー成分が、マルチビュービデオコーディング(MVC)プラス深度(D)、すなわちMVC+Dビデオコーディング規格、および開発中の3D高効率ビデオコーディング(3D−HEVC:3D-High Efficiency Video Coding)ビデオコーディング規格におけるように、深度ビュー成分の前にコーディングされる、テクスチャ優先のコーディングを可能にする。H.264/AVCのMVC拡張など、いくつかの他のビデオコーディング規格は、さらに、深度に依存しない。深度優先のコーディング順序に対して、マルチビュー互換性は、テクスチャだけの抽出の機能はないので不可能である。同じく、テクスチャ優先のコーディング順序は、MVCコーディング規格に一般に使用され、設計における共通性が、実施の容易さをもたらし得る。しかしながら、深度優先のコーディングに対して、そのような設計における共通性は不可能である。言い換えれば、深度優先のコーディングは、一貫性のない設計要素と見なされ得る。
[0025]さらに、深度ビュー成分は、対応するテクスチャビュー成分の前に復号されるので、深度優先のコーディングにおいて、テクスチャビュー成分が復号される時点の遅延が存在する。この遅延は、概して望ましくないが、テクスチャビュー成分がビューのランダムアクセスポイントであり、ビューのランダムアクセスポイントにおいて復号待ち時間が存在する場合は特に望ましくない。
[0026]いくつかの技法は、テクスチャ優先のコーディングが3D−AVCに対して実施される場合に使用されてきた。これらの他の技法において、視差ベクトル導出は排除される(すなわち、視差ベクトル導出は存在しない)。これらの他の技法は、深度優先のコーディングおよび視差ベクトル導出を伴いMVC+Dコーデックに近い3D−AVCコーデックと比較して、3D−AVCコーデックに対する劣ったコーディング性能をもたらしていた。言い換えれば、視差ベクトル導出方法の不在は、テクスチャコーディングツールに対して極めて非効率的なコーディングコストを招く。
[0027]本開示で説明する技法はテクスチャ優先のコーディングを可能にし、視差ベクトルを導出しながら、他のビデオコーディング技法を伴う実施の容易さをもたらす。特に、本開示で説明する技法は、対応する深度ビュー成分(たとえば、深度マップ)に依存することなく、マクロブロックに対する視差ベクトルを導出する。たとえば、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、現在のマクロブロックに隣接するマクロブロックの動きベクトル情報を評価(すなわち、検査)する。隣接ブロックの動きベクトルは、現在のマクロブロックを含む他のビューのビュー内のピクチャを指し、ビデオコーダは、評価された隣接ブロックのそのような動きベクトルを現在のマクロブロックに対する視差ベクトルに変換する(すなわち、隣接ブロックの動きベクトルを現在のマクロブロックに対する視差ベクトルとして利用する)。このようにして、ビデオコーダは、テクスチャビュー成分内のマクロブロックに対する視差ベクトルを決定するために、深度ビュー成分に依存する必要はない。
[0028]本開示では、現在のマクロブロックを含むビュー以外のビュー内のピクチャを指す動きベクトルは、視差動きベクトルと呼ばれる。言い換えれば、視差動きベクトルは、ビュー間参照ピクチャ(すなわち、現在のマクロブロックを含むビュー以外のビュー内のピクチャ)内のブロックを指すベクトルである。本開示で説明する技法では、評価された隣接ブロックが視差動きベクトルを用いてインター予測されるとビデオコーダが決定する場合、ビデオコーダは、隣接するマクロブロックの視差動きベクトルを現在のブロックに対する視差ベクトルに変換する。
[0029]視差動きベクトルおよび視差ベクトルは、混同されるべきではない。視差動きベクトルは、補償のために使用されるビュー間参照ピクチャ内のマクロブロックを指す(すなわち、現在のブロックと、視差動きベクトルによって指されるマクロブロックとの間の残差が決定され、動き補償または視差補償の一部として現在のブロックを復元するために使用される)。視差ベクトルは、現在のブロックと、視差ベクトルが指す対応するブロックとの間の視差を示すベクトルである。次に、視差ベクトルは、ビュー合成、動きベクトル予測、および様々な他のコーディングツールなど、様々な目的に使用される。いくつかの場合には、視差ベクトルによって指されるブロックは、補償のために使用されることが可能である。そのような場合では、視差ベクトルは、視差動きベクトルでもあると見なされる。言い換えれば、視差ベクトルおよび視差動きベクトルは、視差ベクトルによって指されるマクロブロックが補償のためにも使用されることが生じ、その場合に視差ベクトルおよび視差動きベクトルが同じになる場合を除いて、異なるベクトルである。
[0030]視差動きベクトルおよび時間的動きベクトルは、混同されるべきではない。非マルチビュービデオコーディングでは、動きベクトルは異なるピクチャ内のブロックを指すが、1つのビューしかないので、異なるピクチャ内のこのブロックは、インター予測される現在のマクロブロックと同じビュー内にある。そのような動きベクトルは、本開示では混乱を避けるために、時間的動きベクトルまたは通常の動きベクトルと呼ばれる。一方で、視差動きベクトルは、3D−AVCなど、マルチビュービデオコーディング技法において使用され、ここで、動きベクトルは、別のビュー内の参照ピクチャを指す。
[0031]たとえば、マルチビュービデオコーディングのコンテキストでは、2種類の動きベクトルが存在する。一方は、時間的参照ピクチャを指す通常の動きベクトルであり、対応するインター予測は、動き補償予測(MCP)である。他方は、異なるビュー内のピクチャを指す視差動きベクトルであり、対応するインター予測は、視差補償予測(DCP)である。視差動きベクトルではない通常の動きベクトルは、本開示では時間的動きベクトルとも呼ばれる。
[0032]同じく、参照ピクチャが別のビューである場合のインター予測は、ビュー間予測と呼ばれる。現在のマクロブロックを含むビュー以外のビュー内の参照ピクチャは、ビュー間参照ピクチャと呼ばれ、同じビュー内の参照ピクチャは、時間的参照ピクチャと呼ばれる。その上、1つのアクセスユニットは、実質的に同時に表示されるべき異なるビューからのピクチャを復号するためのビデオデータを含み、視差動きベクトルは、現在のマクロブロックに対するビデオデータを含むアクセスユニットと同じアクセスユニット内のビュー間参照ピクチャだけを指すことができる。しかしながら、時間的動きベクトルは、別のアクセスユニット内にあるが、同じビューに対する時間的参照ピクチャを指す。
[0033]言い換えると、マルチビュービデオコーディングにおいて、ビュー間予測は、ビューの間の相関を取り除くために、同じアクセスユニットの(すなわち、同じ時間インスタンスを有する)異なるビュー中でキャプチャされたピクチャの間で実行される。ビュー間予測を用いてコーディングされたピクチャが、他の非ベースビューのビュー間予測用の参照ピクチャリスト中に追加され得る。ビュー間予測参照ピクチャは、インター予測参照ピクチャと同様に、参照ピクチャリストの任意の位置に置かれ得る。
[0034]より詳細に説明するように、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、隣接ブロックが、ビュー間参照ピクチャを指す視差動きベクトルを用いてインター予測されるかどうかを決定するために、現在のマクロブロックの1つまたは複数の隣接ブロックの動き情報を評価し得る。いくつかの例では、ビデオデコーダは、第1の参照ピクチャリスト(RefPicList0)内のピクチャを指す隣接ブロックの動きベクトルの動き情報だけを評価し、第2の参照ピクチャリスト(RefPicList1)内のピクチャを指す隣接ブロックの動きベクトルの動き情報を評価することを回避し得る。たとえば、第1の隣接ブロックは、(たとえば、視差動きベクトルを用いてインター予測された)視差動きベクトルを有し得るが、この視差動きベクトルは、RefPicList1内のビュー間参照ピクチャを指し得る。この例では、ビデオコーダは、この第1の隣接ブロックに対する視差動きベクトルを評価(たとえば、検査)することを回避し(すなわち、この第1の隣接ブロックに対する視差動きベクトルが、現在のブロックに対する視差ベクトルになることはなく)、別の隣接ブロックを続行することができる。このようにして、技法は、アクセスされたに必要な動き情報の量を低減し、それによって、現在のマクロブロックをコーディングするためにかかる時間の量を低減することができる。
[0035]現在のマクロブロックに隣接するブロックは、空間的隣接ブロック(たとえば、現在のマクロブロックと同じピクチャ内のブロック)と、時間的隣接ブロック(たとえば、現在のマクロブロックを含むピクチャと異なるピクチャ内のブロック)とを含む。時間的隣接ブロックを含むピクチャは、時間的ピクチャと呼ばれる。
[0036]多数の候補時間的ピクチャ(たとえば、復号されたピクチャバッファ内に記憶されている任意の以前にコーディングされたピクチャ)が存在することがある。しかしながら、本開示で説明する技法は、いくつかの例において、候補時間的ピクチャの数を制限し得る。たとえば、技法は、時間的隣接ブロックを含む候補時間的ピクチャの数を、2つの時間的ピクチャに制限し得る。
[0037]一例として、ビデオコーダは、第1の時間的ピクチャを選択し得、ここで、第1の時間的ピクチャは、第1の参照ピクチャリストの第1のエントリ(たとえば、RefPicList0のエントリ0)において識別されるピクチャであり、また、第2の時間的ピクチャを選択し得、ここで、第2の時間的ピクチャは、第2の参照ピクチャリストの第1のエントリ(たとえば、RefPicList1のエントリ0)において識別されるピクチャである。2つの参照ピクチャリストの第1のエントリ内で識別されるピクチャを選択することは、視差動きベクトル(および、いくつかの例では、RefPicList0を指す視差動きベクトル)を用いてインター予測される時間的隣接ブロックを得ることができそうな時間的ピクチャを利用するように、参照ピクチャリストが構築されるメカニズムを利用し得る。
[0038]いくつかの例では、ビデオコーダは、現在のマクロブロックを複数のブロック(たとえば、パーティションまたはサブブロック)に区分し得る。上記で説明したように、ビデオコーダは、評価された隣接ブロックのうちの1つに対する視差動きベクトルに基づいて、現在のマクロブロックに対する視差ベクトルを導出し得る。いくつかの例では、ビデオコーダは、この導出された視差ベクトルを現在のマクロブロック内のブロックの各々に割り当て得る。このようにして、ビデオコーダは、それが導出する必要のある視差ベクトルの量を最小化し、マクロブロックに対する視差ベクトルを導出し、その同じ視差ベクトルをマクロブロックのすべてのブロックに割り当てる(すなわち、マクロブロックのブロックは、マクロブロックに対して導出された視差ベクトルを、それら自体のそれぞれの視差ベクトルとして採用する)ことができる。
[0039]図1は、本開示で説明する1つまたは複数の例による、例示的なビデオ符号化システムとビデオ復号システムとを示すブロック図である。たとえば、システム10はソースデバイス12と宛先デバイス14とを含む。ソースデバイス12および宛先デバイス14が、異なるビューのピクチャを各々コーディングするマルチビューコーディングを実装するように、ソースデバイス12および宛先デバイス14が構成される。異なるビューのピクチャが実質的に同時に見られるとき、ビューアは、ディスプレイの2Dエリアに制約される画像の代わりに、3Dの体積を包含する画像を知覚する。
[0040]システム10は、異なるビデオコーディング規格、プロプライエタリ規格、またはマルチビューコーディングの任意の他の方法に従って動作し得る。下記は、ビデオコーディング規格の数例を説明しており、限定と見なされるべきではない。ビデオコーディング規格は、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月に記載されており、その内容全体は参照により本明細書に組み込まれる。いくつかの追加のビデオコーディング規格は、MVC+Dと3D−AVCとを含む。
[0041]単に例示のために、本開示で説明する技法が、3D−AVCなどのH.264規格による例とともに説明される。しかしながら、本開示で説明する技法は、これらの例示的な規格に限定されると見なされるべきではなく、マルチビューコーディングもしくは3Dビデオコーディング(たとえば、3D−HEVC)に対する他のビデオコーディング規格、または必ずしも特定のビデオコーディング規格に基づくとは限らないマルチビューコーディングもしくは3Dビデオコーディングに関連する技法に拡張可能であり得る。たとえば、本開示で説明する技法は、マルチビューコーディングに対するビデオエンコーダ/デコーダ(コーデック)によって実装され、ここでマルチビューコーディングは、2つ以上のビューのコーディングを含む。
[0042]図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化されたビデオデータを生成するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、いわゆる「スマート」フォン、いわゆる「スマート」パッドなどのワイヤレスハンドセット、またはワイヤレス通信用に装備される他のそのようなワイヤレスデバイスを含む、広範なデバイスのうちのいずれかを備える。ソースデバイス12および宛先デバイス14のさらなる例としては、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム内のデバイス、ワイヤレスブロードキャストシステム内のデバイス、携帯情報端末(PDA)、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録デバイス、デジタルメディアプレーヤ、ビデオゲームデバイス、ビデオゲームコンソール、セルラー無線電話、衛星無線電話、ビデオ遠隔会議デバイス、およびビデオストリーミングデバイスなどがあるが、それらに限定されない。
[0043]宛先デバイス14は、リンク16を介して、復号されるべき符号化されたビデオデータを受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備える。一例では、リンク16は、ソースデバイス12が、符号化されたビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にするための、通信媒体を備える。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの任意のワイヤレスまたは有線の通信媒体を備える場合がある。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得るルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[0044]いくつかの例では、符号化データは、出力インターフェース22からストレージデバイス34に出力される。同様に、符号化データは、入力インターフェース28によってストレージデバイス34からアクセスされる。ストレージデバイス34の例としては、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体のような、種々の分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれかがある。さらなる一例では、ストレージデバイス34は、ソースデバイス12によって生成された符号化ビデオを保持するファイルサーバまたは別の中間ストレージデバイスに対応する。これらの例では、宛先デバイス14は、ストリーミングまたはダウンロードを介してストレージデバイス34から、記憶されたビデオデータにアクセスする。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバである。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準データ接続を介して、符号化ビデオデータにアクセスする。これは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに適しているワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含むことができる。ストレージデバイス34からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0045]本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、無線を通じたテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、(たとえばインターネットを介した)ストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の用途など、種々のマルチメディア用途のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成される。
[0046]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。場合によっては、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含む。ソースデバイス12において、ビデオソース18は、(たとえばビデオカメラなどの)ビデオキャプチャデバイス、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/またはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどのソース、そのようなソースの組合せ、あるいは任意の他のソースのうちの1つまたは複数を含む。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き電話またはビデオ電話を形成することができる。ただし、本開示で説明する技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。
[0047]ビデオエンコーダ20は、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオを符号化する。ソースデバイス12の出力インターフェース22は、符号化されたビデオデータを宛先デバイス14に送信するように構成される。符号化ビデオデータは、さらに(または代替として)、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのためにストレージデバイス34上に記憶され得る。
[0048]宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。いくつかの場合、入力インターフェース28は、受信機および/またはモデムを含む。宛先デバイス14の入力インターフェース28は、リンク16を介して、またはストレージデバイス34から符号化ビデオデータを受信する。リンク16を介して通信され、またはストレージデバイス34上に与えられた符号化ビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30など、ビデオデコーダが使用するためのビデオエンコーダ20によって生成される様々なシンタックス要素を含む。そのようなシンタックス要素は、通信媒体上で送信され、記憶媒体上に記憶される符号化されたビデオデータとともに含まれ得、またはファイルサーバを記憶した。
[0049]ディスプレイデバイス32は、宛先デバイス14と一体化されること、またはその外部に存在することがある。いくつかの例では、宛先デバイス14は、一体型ディスプレイデバイスを含み、また、外部ディスプレイデバイスとインターフェースするように構成される。他の例では、宛先デバイス14はディスプレイデバイスである。概して、ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備える。
[0050]ビデオエンコーダ20およびビデオデコーダ30は、上記に記載した例など、様々なビデオコーディング規格に従って動作し得る。しかしながら、本開示で説明する技法は、そのように限定さるものと見なされるべきではない。説明の目的で、ビデオエンコーダ20およびビデオデコーダ30は、3D−AVC規格など、H.264規格のコンテキストにおいて説明される。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオ圧縮規格の他の例としては、MPEG−2およびITU−T H.263があり、3D−HEVCがある。On2 VP6/VP7/VP8と呼ばれるものなど、プロプライエタリなコーディング技法もまた、本明細書で説明する技法のうちの1つまたは複数を実施し得る。
[0051]図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、各々オーディオエンコーダおよびデコーダと統合され、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含んで、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理する。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠する。
[0052]ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの様々な適切なエンコーダ回路のいずれかとして実装され得る。たとえば、本開示で説明する技法は、装置またはデバイスの観点から説明され得る。一例として、装置またはデバイスは、ビデオデコーダ30(たとえば、ワイヤレス通信デバイスの一部としての宛先デバイス14)を含み得、ビデオデコーダ30は、本開示で説明する技法を実施する(たとえば、本開示で説明する技法に従ってビデオデータを復号する)ように構成された1つまたは複数のプロセッサを含むことができる。別の例として、装置またはデバイスは、ビデオデコーダ30を含むマイクロプロセッサまたは集積回路(IC)を含み得、マイクロプロセッサまたはICは、宛先デバイス14または別のタイプのデバイスの一部であり得る。同じ装置またはデバイスが、ビデオエンコーダ20に適用することができる(すなわち、ソースデバイス12および/またはマイクロコントローラもしくはICのような装置またはデバイスが、ビデオエンコーダ20を含み、ここで、ビデオエンコーダ20は、本開示で説明する技法に従ってビデオデータを符号化するように構成される)。
[0053]本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれてよく、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合されてよい。
[0054]ビデオシーケンスは、一般にビューからの一連のビデオピクチャを含む。ピクチャのグループ(GOP)は、概して、一連の1つまたは複数のビデオピクチャを備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、GOPの1つまたは複数のピクチャのヘッダ中、または他の場所に含み得る。各ピクチャは、それぞれのピクチャのための符号化モードを記述するピクチャシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオピクチャ内のビデオブロックに対して動作する。ビデオブロックは、H.264規格において規定されるように、マクロブロック、マクロブロックのパーティション、または場合によりパーティションのサブブロックに対応する場合がある。ビデオブロックは、固定サイズまたは可変サイズを有し得、指定されたコーディング規格に従ってサイズが異なり得る。各ビデオピクチャは複数のスライスを含み得る。各スライスは複数のブロックを含み得る。
[0055]一例として、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×(x)N」と「N×(by)N」は、垂直寸法および水平寸法に関するブロックのピクセル寸法(たとえば、16×(x)16ピクセルまたは16×(by)16ピクセル)を指すために互換的に使用され得る。概して、16×16ブロックは、垂直方向に16ピクセルを有し(y=16)、水平方向に16ピクセルを有する(x=16)。同様に、N×Nブロックは、概して、垂直方向にNピクセルを有し、水平方向にNピクセルを有し、ただし、Nは非負整数値を表す。ブロック中のピクセルは行と列で構成され得る。さらに、ブロックは、必ずしも、水平方向に垂直方向と同じ数のピクセルを有する必要はない。たとえば、ブロックはN×Mピクセルを備えてよく、この場合に、Mは必ずしもNに等しいとは限らない。
[0056]ブロックがイントラモード符号化される(たとえば、イントラ予測される)とき、ブロックは、ブロック用のイントラ予測モードを記述するデータを含む場合がある。別の例として、ブロックがインターモード符号化される(たとえば、インター予測される)とき、ブロックは、ブロックについての動きベクトルを定義する情報を含む場合がある。この動きベクトルは、同じビュー内の参照ピクチャ(たとえば、時間的動きベクトル)を指すか、または別のビュー内の参照ピクチャ(たとえば、視差動きベクトル)を指す。ブロックについての動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分と、動きベクトルの垂直成分と、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)とを記述する。加えて、インター予測されるとき、ブロックは、動きベクトルが指す参照ピクチャなどの参照インデックス情報、および/または動きベクトル用の参照ピクチャリスト(たとえば、RefPicList0もしくはRefPicList1)を含む場合がある。
[0057]H.264規格では、イントラ予測コーディングまたはインター予測コーディングに続いて、ビデオエンコーダ20は、マクロブロックに対する残差データを計算する。残差データは、符号化されていないピクチャのピクセルと、H.264におけるマクロブロックに対する予測値との間のピクセル差分に対応し得る。
[0058]いくつかの例では、変換係数を生成するための任意の変換の後に、ビデオエンコーダ20は、変換係数の量子化を実行する。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減する。たとえば、量子化中にnビット値がmビット値に切り捨てられ、ただし、nはmよりも大きい。
[0059]いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するためにあらかじめ定義された走査順序を利用する。他の例では、ビデオエンコーダ20は適応走査を実行する。量子化変換係数を走査して1次元ベクトルを形成した後に、いくつかの例では、ビデオエンコーダ20は、数例をあげると、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピー符号化方法に従って、1次元ベクトルをエントロピー符号化する。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するための符号化ビデオデータに関連するシンタックス要素をエントロピー符号化する。
[0060]CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、たとえば、シンボルの隣接値が0ではないかどうかに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルの可変長コードを選択し得る。VLCにおけるコードワードは、比較的短いコードが優勢シンボルに対応し、より長いコードが劣勢シンボルに対応するように構成され得る。このようにして、VLCの使用は、たとえば、送信されるべき各シンボルのために等長コードワードを使用するよりも、ビット節約を達成し得る。確率決定は、シンボルに割り当てられたコンテキストに基づくことができる。
[0061]ビデオデコーダ30は、ビデオエンコーダ20の技法の逆を実施する。たとえば、ビデオデコーダ30は、符号化されたビデオビットストリームを復号し、逆量子化および逆変換によって残差ブロックを決定する。ビデオデコーダ30は、ピクチャ内のブロックに対するピクセル値を決定するために、残差ブロックと以前に復号されたピクチャのブロックとを合計する。
[0062]上記で説明したように、本開示で説明する技法は、3D−AVCを対象とする。本技法をより深く理解するように、以下は、いくつかのベーシックなH.264/AVCコーディング技法と、H.264/MVC拡張および高効率ビデオコーディング(HEVC)規格の観点からのマルチビュービデオコーディングと、3D−AVC技法とを説明する。そのような説明の後、本開示は、視差ベクトルを導出するための技法、特に、深度ビュー成分(たとえば、深度マップ)に依存する必要なしに3D−AVCに対する視差ベクトルを導出するための技法を説明する。
[0063]H.264/アドバンスビデオコーディング(AVC)に対して、ビデオ符号化または復号(たとえば、コーディング)は、マクロブロックについて実施され、ここで、マクロブロックは、インター予測またはイントラ予測された(すなわち、インター予測符号化もしくは復号された、またはイントラ予測符号化もしくは復号された)フレームの一部を表す。たとえば、H.264/AVCにおいて、各インターマクロブロック(MB)(たとえば、インター予測されたマクロブロック)は、1つの16×16MBパーティション、2つの16×8MBパーティション、2つの8×16MBパーティション、または4つの8×8MBパーティションの4つの異なる方法に区分され得る。1つのMB中の異なるMBパーティションは、各方向(すなわち、RefPicList0またはRefPicList1)に対して異なる参照インデックス値を有し得る。MBが4つの8×8MBパーティションに区分されないとき、MBはMBパーティション全体について各方向に1つの動きベクトルしか有しない。
[0064]ビデオコーディング(符号化または復号)の一部として、ビデオエンコーダ20およびビデオデコーダ30は、RefPicList0およびRefPicList1と呼ばれる1つまたは2つの参照ピクチャリストを構築するように構成される。参照ピクチャリストは、フレームまたはスライスのマクロブロックをインター予測するために使用され得る参照ピクチャを識別する。たとえば、ビデオエンコーダ20は、参照インデックスおよび参照ピクチャリスト識別子を通知し得る。ビデオデコーダ30は、参照インデックスと参照ピクチャリスト識別子とを受信し、参照インデックスおよび参照ピクチャリスト識別子から現在のマクロブロックをインター予測復号するために使用されるべき参照ピクチャを決定することができる。
[0065]MBが4つの8×8のMBパーティションに区分されるとき、各8×8のMBパーティションはサブブロックにさらに区分され得る。8×8MBパーティションからサブブロック、すなわち、1つの8×8サブブロック、2つの8×4サブブロック、2つの4×8サブブロック、および4つの4×4サブブロックのサブブロックを得るために、4つの異なる方法がある。各サブブロックは、各方向に異なる動きベクトルを有し得る。8×8MBパーティションがサブブロックに区分される方法は、サブブロックパーティションと名付けられる。
[0066]マルチビュービデオコーディングに対して、複数の異なるビデオコーディング規格がある。混乱を避けるために、本開示がマルチビュービデオコーディングを概略的に説明するとき、本開示は、「マルチビュービデオコーディング」という句を使用する。概して、マルチビュービデオコーディングには、ベースビューと、1つまたは複数のエンハンスメントビューまたは従属ビューとが存在する。ベースビューは、従属ビューのいずれかを参照することなく、完全に復号可能である(すなわち、ベースビューは、時間的動きベクトルを用いてインター予測されるだけである)。これは、マルチビュービデオコーディング用に構成されないコーデックが、完全に復号可能な少なくとも1つのビューを依然として受信することを可能にする(すなわち、ベースビューが抽出され、他のビューが廃棄され、マルチビュービデオコーディング用に構成されていないデコーダが、3Dエクスペリエンスがなくともビデオコンテンツをさらに復号することを可能にする)。1つまたは複数のエンハンスメントビューまたは従属ビューは、ベースビューに関して、他のエンハンスメントビューもしくは従属ビューに関して、または同じビュー内の他のピクチャに関してインター予測(すなわち、視差補償予測または動き補償予測)され得る。
[0067]一方で、「マルチビュービデオコーディング」は、一般的に使用され、頭字語MVCは、H.264/AVCの拡張と関連付けられる。したがって、本開示が頭字語MVCを使用するとき、本開示は具体的にH.264/AVCビデオコーディング規格の拡張を指している。H.264/AVCのMVC拡張は、時間的動きベクトルに加えて別のタイプの動きベクトルとして視差動きベクトルに依存する。MVC+Dと呼ばれる別のビデオコーディング規格もまた、JCT−3VおよびMPEGによって開発された。MVC+Dは、テクスチャと深度の両方に対してMVCのコーディングツールと同じ低レベルのコーディングツールを適用し、深度の復号は、テクスチャの復号とは独立しており、その逆も成り立つ。たとえば、MVCにおいて、フレームは、テクスチャビュー成分または単にテクスチャと呼ばれる1つのビュー成分によってのみ表される。MVC+Dにおいて、テクスチャビュー成分および深度ビュー成分、または単にテクスチャおよび深度の2つのビュー成分がある。たとえば、MVC+Dにおいて、各ビューは、テクスチャビューと深度ビューとを含み、ここで、ビューは複数のビュー成分を含み、テクスチャビューは複数のテクスチャビュー成分を含み、深度ビューは複数の深度ビュー成分を含む。
[0068]各テクスチャビュー成分は、ビューのビュー成分を形成するために深度ビュー成分と関連付けられる。深度ビュー成分は、テクスチャビュー成分内のオブジェクトの相対深度を表す。MVC+Dにおいて、深度ビュー成分およびテクスチャビュー成分は、個別に復号可能である。たとえば、ビデオデコーダ30は、第1のコーデックはテクスチャビュー成分を復号し、第2のコーディングされたは深度ビュー成分を復号する、MVCコーデックの2つのインスタンスを実施し得る。テクスチャビュー成分および深度ビュー成分は個別に符号化されるので、これらの2つのコーデックは、互いに独立に実行し得る。
[0069]MVC+Dにおいて、深度ビュー成分は、常に、関連付けられた(たとえば、対応する)テクスチャビュー成分の直後にくる。このようにして、MVC+Dはテクスチャ優先のコーディングをサポートし、ここで、テクスチャビュー成分は、深度ビュー成分の前に復号される。
[0070]テクスチャビュー成分およびそれの関連付けられた(たとえば、対応する)深度ビュー成分は、同じピクチャ順序カウント(POC)値およびview_idを含み得る(すなわち、テクスチャビュー成分およびそれの関連付けられた深度ビュー成分のPOC値およびview_idは同じである)。POC値は、テクスチャビュー成分の表示順序を示し、view_idは、テクスチャビュー成分および深度ビュー成分が属するビューを示す。
[0071]3Dアドバンスビデオコーディング(AVC)に対する以下の追加の説明。MPEGにおける最近の規格化活動は、3Dビデオ技術に対する提案募集(CfP:Call for Proposal)を含み、現在の参照ソフトウェアにおける応答の中から選択されたいくつかの技法が存在する。AVCベースの3Dビデオ(3D−AVC)コーディング規格は、JCT−3Vによって現在開発中であり、3D−AVCの最新バージョンは、現在、公に利用可能であり、参照によりその全体、M.M.Hannuksela、Y.Chen、T.Suzuki、J.−R.Ohm、G.J.Sullivanの「3D−AVCドラフトテキスト5」、JCT3V−C1002、ジュネーブ、CH、2013年1月、が本明細書に組み込まれる。それは、2014年2月25日現在、以下のリンク、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/3_Geneva/wg11/JCT3V−C1002−v3.zipから入手可能である。
[0072]ベースビューのテクスチャ部はH.264/AVCデコーダに対して完全に復号可能であるという意味で、3D−AVCはH.264/AVCに準拠している。たとえば、ベースビューのビュー成分内のテクスチャビュー成分は、同じベースビュー内の他のテクスチャビュー成分を用いてのみインター予測され得る。ベースビュー内のテクスチャビュー成分は、ビュー間予測されないことがある。同じく、ベースビュー内のテクスチャビュー成分は、復号の目的に対して、対応する深度ビュー成分を必要としないことがある。
[0073]3D−AVC内の強化された(enhanced)ビュー成分に対して、いくつかの他の例示的な技法では、深度はテクスチャの前にコーディングされ得、テクスチャビュー成分は、深度ビュー成分からの情報に基づいてコーディングされ得、それは深度優先のコーディングとしても知られている。しかしながら、各テクスチャビュー成分は、上記で説明したMVC+Dにおけるように、テクスチャ優先のコーディング順序で、それぞれの深度ビュー成分の前にコーディングされる。言い換えれば、いくつかの他の例示的な技法では、3D−AVCにおいて、ベースビューのテクスチャビュー成分が最初にコーディングされ、ベースビューの関連する深度ビュー成分がそれに追随し、第1のエンハンスメントビューまたは従属ビューの深度ビュー成分がそれに追随し、第1のエンハンスメントビューまたは従属ビューの関連するテクスチャビュー成分がそれに追随し、第2のエンハンスメントビューまたは従属ビューの深度ビュー成分がそれに追随し、第2のエンハンスメントビューまたは従属ビューの関連するテクスチャビュー成分がそれに追随し、以下同様である。
[0074]たとえば、3D−AVCにおけるテクスチャビュー成分および深度ビュー成分のコーディング順序は、以下のように例示されており、そこにおいて、T0およびD0はそれぞれ、ベースビューのテクスチャビュー成分と深度ビュー成分とを指し、T1およびD1はそれぞれ、従属ビューのテクスチャビュー成分と深度ビュー成分とを指す。T0、D0、D1、T1...、ベースビューは、テクスチャ優先のコーディング順序でコーディングされる一方で、従属ビューは、深度優先のコーディング順序でコーディングされる。いくつかの他の例示的な技法において、ハイブリッドコーディング順序が、3D−AVCに対して使用される。ベースビューは、テクスチャ優先のコーディング順序によってAVC互換性を有し得る一方で、従属ビューは、Diの復号された情報はTi(iは0に等しくない)によって使用されるので、そのような種類の互換性を持たない。
[0075]いくつかの例では、3D−AVCに対してさえ、ベースビューおよび従属ビューのテクスチャ優先のコーディングは可能であり、以下のコーディング順序、T0、D0、T1、D1..において例示される。この例では、すべてのビュー成分は、AVC/マルチビュー互換性を提供し得るテクスチャ優先のコーディング順序でコーディングされる。
[0076]上記で説明したように、互換性問題に加えて、テクスチャ優先のコーディングと比較して、深度優先のコーディングに伴ういくつかの欠点が存在することがある。たとえば、ビューのランダムアクセスポイントにおける復号待ち時間、ここで、テクスチャビュー成分の復号は対応する深度ビュー成分の復号によって遅延される。しかしながら、ビューのランダムアクセスポイントのピクチャはチャネルスイッチオーバーを可能にするピクチャであるので、ビューのランダムアクセスポイントに対する復号待ち時間を最小化することが好ましい。
[0077]さらに、深度優先のコーディングに対して、ビデオデコーダが深度を必要とせず、テクスチャビューを復号することだけを必要とする場合、深度ビューはテクスチャビューを復号するために必要とされるので、深度パケットをスキップするため、またはビデオデコーダが深度ビューの復号をスキップすることを可能にするための実際的な方法は存在しないことがある。たとえば、深度ビューは、深度優先のコーディングにおいてテクスチャビューを復号するのに必要であるので、メディアゲートウェイは、コーディングされたビットストリームから深度ビューを廃棄することはできない。これは、増加された帯域幅をもたらし、復号の複雑さを増加する。
[0078]同じく、一貫性のない設計要素が存在することがある。たとえば、テクスチャ優先のコーディング順序は、一般に、以下で説明したMVC+DおよびHEVCビデオコーディング規格を含む、マルチビュービデオコーディングに対して使用される。設計における共通性は、深度優先のコーディングが必要とされる場合に利用不可能な実装形態の各々を提供し得る。
[0079]いくつかの技法が、3D−AVCとともにテクスチャ優先のコーディングを使用ために提案されている。一例として、3D−AVCは、深度ビュー成分を、対応するテクスチャビュー成分内のマクロブロックに対する視差ベクトルを導出するために使用し、深度ビュー成分が最初に復号されることを必要にする。いくつかの技法は、視差ベクトルの導出を回避することを提案しており、それは、テクスチャ優先のコーディングを支援する。しかしながら、視差ベクトル導出が存在しない例における3D−AVCコーデックの性能は悪く、MVC+Dに従ったものである。
[0080]上記のように、3D−AVCに対するいくつかの例示的な技法は、関連するテクスチャビュー成分内のマクロブロックに対する視差ベクトルを導出するために、深度マップ(たとえば、深度ビュー成分)を使用する。視差ベクトルをどのように導出するかは、各低レベルコーディングツールによって変化することがある。しかしながら、一般的に、従属ビューの深度データは、深度優先のコーディング順序によって、テクスチャビュー成分コーディングのために使用される。3D−AVCにおけるインループブロックベースのビュー合成ビュー間予測および深度ベースの動きベクトル予測(D−MVP)は、深度マップからサポートされる視差ベクトルを使用する低レベルコーディングツールである。3D−AVCソフトウェアにおいて、実際の深度マップ値から特定のビューに対する視差への変換プロセスの結果が、カメラパラメータとともにルックアップテーブルに記憶される。
[0081]一般に、視差ベクトルは、1つまたは複数のコーディングツールを実施するために使用され得る(たとえば、ビデオエンコーダ20およびビデオデコーダ30は、視差ベクトルを導出するために深度ビュー成分を使用することなく1つまたは複数のコーディングツールを実施するために、導出された視差ベクトルを利用し得る)。たとえば、上記で説明したように、視差ベクトルは、一部として、ビュー間予測および動きベクトル予測(MVP)として使用され得る。MVPは、概して、コーディングされたビットストリームが、マクロブロックの実際の動きベクトルに対する情報を含まないが、代わりに動きベクトルが導出され得る情報を含む技法を指す。たとえば、動きベクトル予測では、マクロブロックに対する動きベクトルは、隣接ブロックの動きベクトルまたは隣接ブロックの動きベクトルによって指されるブロックの動きベクトルなどの動きベクトル予測子、ならびに実際の動きベクトルと動きベクトル予測子との間の差分である動きベクトル差分から予測される。動きベクトル予測子は、それ自体候補予測子のセットから予測されることにより得る。
[0082]以下は、通常のインター予測モードに対する深度ベースの動きベクトル予測を説明する。D−MVPは、深度優先のコーディング順序によって利用可能な現在ビュー内の関連する深度マップデータを組み込む動きベクトル予測方法を指す。D−MVPは、従属ビュー内のテクスチャビュー成分を用いて適用される。
[0083]3D−AVCにおいて、D−MVP方法は、H.264/AVCにおいて従来のメディアン関数ベースの動きベクトル予測に組み込まれる。具体的には、予測されるべき動きベクトルのタイプ(すなわち、時間的動きベクトルかまたは視差動きベクトルか)が、最初に識別される。たとえば、D−MVP方法では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、隣接ブロックをインター予測するために使用される参照ピクチャが、現在のマクロブロックと同じビュー内の参照ピクチャであるかまたは異なるビュー内の参照ピクチャであるかを決定するために、隣接ブロック内の動きベクトルの参照インデックスを検査し得る。参照ピクチャが同じビュー内にある場合、隣接ブロックは時間的動きベクトルを用いてインター予測され、参照ピクチャが異なるビュー内にある場合、隣接ブロックは視差動きベクトルを用いてインター予測される(すなわち、ビュー間予測される)。
[0084]隣接ブロックは、現在のブロックの左ブロック、上ブロック、右上ブロック、および左上ブロックの順に含む。左上ブロック内の動きベクトルは、その他の3つの隣接ブロックのうちの1つが動きベクトルを含まないときだけ使用される。一例として、左ブロック、上ブロック、または右上ブロックがイントラ予測される場合、イントラ予測されたブロックに対する動きベクトルは、利用不可能であると見なされる。この例では、ビデオコーダは、左上ブロックの動きベクトルを評価し得る。これらの隣接ブロックは、H.264/AVCビデオコーディング規格における動き予測に対して使用されるのと同じ隣接ブロックである。
[0085]3つの隣接ブロックが利用可能である場合、3つの隣接ブロック内の動きベクトルは、現在のブロックの動きベクトル予測のために使用される。時間的予測では、隣接ブロックの動きベクトルが同じタイプ(すなわち、すべてが時間的動きベクトルまたはすべてが視差動きベクトル)であり、同じ参照インデックスを有する(すなわち、同じ参照ピクチャを指す)場合、ビデオデコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、動きベクトル予測子を決定するために、H.264/AVCにおけるようなメディアンフィルタを直接使用する。ビデオコーダは、現在のブロックについての動きベクトルを決定するために、動きベクトル予測子を使用する。
[0086]場合によっては、隣接ブロックの動きベクトルが異なるタイプであり、および/または異なる参照インデックスを有する場合、動きベクトルは、動きベクトル予測子を決定するために使用されるためにさらに導出される。現在の参照ピクチャがビュー間参照ピクチャであるとき、ビデオコーダは、隣接ブロック位置において動きベクトルタイプおよびそれらの参照インデックスを検査(たとえば、評価)する。それらがすべて、同じ動きベクトルタイプと同じ参照インデックスとを有するとビデオデコーダが決定する場合、ビデオデコーダは、動きベクトル予測子を決定するためにメディアンフィルタを適用する。
[0087]両方の場合(たとえば、同じタイプの動きベクトルおよび同じ参照インデックス、または異なるタイプの動きベクトルもしくは異なる参照インデックス)、3つ未満の隣接ブロックが利用可能である場合、ビデオデコーダは、3つの隣接ブロックが利用可能になるように、利用不可能なブロックに対して動きベクトルを導出する。隣接ブロックに対して導出された動きベクトルは、導出された動きベクトルと呼ばれ、以下で説明するように生成される。
[0088]ビデオコーダは、現在の動きベクトルが視差動きベクトルであるかどうかを決定し得る。そうするために、ビデオコーダは、現在のブロックに対する動きベクトルの参照ピクチャリストへの参照インデックスを決定し得る(すなわち、ビデオデコーダ30は、現在のブロックに対する動きベクトルの参照ピクチャリストへの参照インデックスを、通知されたコーディングされたビットストリームから決定し得る)。参照インデックスがビュー間参照ピクチャ(すなわち、POC値および/またはview_idから決定される、別のビュー内の参照ピクチャ)を識別した場合、ビデオコーダは、現在のブロックに対する動きベクトルは視差動きベクトルであることを決定し得る。
[0089]現在の動きベクトルが視差動きベクトルであり、ここで、その動きベクトルが現在の動きベクトルのタイプと異なるタイプを有するかまたはその動きベクトルが利用不可能である場合、このブロックの導出された動きベクトルは、対応する深度ビュー成分から変換される視差動きベクトルになるように設定される。言い換えれば、3D−AVCに対するこの例示的な技法では、現在のブロックに対する動きベクトルが視差動きベクトルであり、隣接ブロックに対する動きベクトルが、視差動きベクトルでないかまたは場合によっては隣接ブロックに対する視差動きベクトルを導出するために利用不可能である場合、ビデオコーダは、深度ビュー成分内の対応するブロックを識別し、隣接ブロックに対する視差ベクトルを決定するために深度ビュー成分内の対応するブロックを使用し、隣接ブロックに対する視差ベクトルを隣接ブロックの視差動きベクトルとして使用する。この視差動きベクトルは、隣接ブロックに対する導出された動きベクトルであると見なされる。
[0090]ビデオコーダは、同じビュー内の深度ビュー成分の対応するブロックを使用し、この対応するブロックの4つの隅の深度値の最大値を視差値に変換する。この視差値は、導出された動きベクトルの水平成分になる。ビデオコーダは、導出された動きベクトルの垂直成分をゼロになるように設定する。
[0091]上記の例では、現在のブロックに対する動きベクトルは、視差動きベクトルであった。いくつかの場合、ビデオコーダは、現在のブロックに対する動きベクトルは時間的動きベクトルであることを決定し得る。たとえば、ビデオコーダは、現在のマクロブロックに対する動きベクトルの参照ピクチャリストへの参照インデックスを決定し、参照インデックスから参照ピクチャを識別することができる。参照ピクチャが現在のマクロブロックと同じビューに属する(POC値および/またはview_idから決定される)場合、ビデオコーダは、現在のマクロブロックに対する動きベクトルは時間的動きベクトルである(すなわち、参照ピクチャは時間的参照ピクチャである)ことを決定する。
[0092]現在の動きベクトルが時間的動きベクトルである場合、ビデオコーダは、参照ビュー(ベースビュー)内の参照ブロックの時間的動きベクトルを得るために、視差値(上記と同様に導出される)を使用する。この例では、ビデオコーダは、導出された動きベクトルを時間的動きベクトルになるように設定する。時間的動きベクトルが利用不可能である(イントラブロック、または現在の参照ピクチャと整列された参照ビュー内の参照ピクチャを指さない)と見なされる場合、導出された動きベクトルは、ゼロに設定される。
[0093]たとえば、現在のブロックに対する動きベクトルが時間的動きベクトルである場合、隣接ブロックに対する動きベクトルが時間的動きベクトルでないか、または場合によっては、利用不可能である隣接ブロックに対する時間的動きベクトルを導出するために、ビデオコーダは、上記で説明した技法を使用して隣接ブロックに対する視差ベクトルを決定し得る。次に、ビデオコーダは、視差ベクトルが指すベースビュー内のブロックを決定する。ビデオコーダは、ベースビュー内のブロックに対する動きベクトルが存在するかどうかを決定する。ベースビュー内のブロックに対する動きベクトルが存在する場合、動きベクトルは、ベースビュー内のブロックはビュー間予測され得ないので、時間的動きベクトルである必要がある。ビデオコーダは、ベースビュー内のブロックの時間的動きベクトルを、隣接ブロックに対する導出された動きベクトルとして設定する。ベースビュー内のブロックに対する動きベクトルが存在しない場合(すなわち、イントラコーディングされるか、またはベースビュー内のブロックに対する動きベクトルが、現在ピクチャに対する参照ピクチャとして識別されない参照ピクチャを指す場合)、ビデオコーダは、隣接ブロックに対する導出された動きベクトルをゼロに等しく設定する。
[0094]上記で説明した例は、通常モードに対する動きベクトル予測に対するものである。以下は、スキップモードおよび直接モードに対する動きベクトル予測、特に、3D−AVCのいくつかの例示的な技法におけるスキップモードおよび直接モードに対するビュー間動き予測に対する例を説明する。
[0095]3D−AVCにおけるビュー間動き予測は、Pスキップ、Bスキップ、B−16×16直接モード、およびB−8×8直接モードにおいて実行される。ビデオコーダは、隣接ブロックからの視差ベクトル、ならびに同じビューの深度ビュー成分の深度値から変換された視差ベクトルを、最初に導出し得る。1つの利用可能な空間的隣接ブロックが視差動きベクトルを含む場合、この視差動きベクトルは、視差ベクトルになる。場合によっては、視差動きベクトルを含まない隣接ブロックに対して、ブロックの視差動きベクトルが、(D−MVPにおける変換と同様に)深度値から変換され、その後、メディアンフィルタが、視差ベクトルを得るために、3つの隣接ブロックに適用される。
[0096]ビデオコーダは、参照ビューの参照ブロック内の時間的動きベクトルを識別するために、参照(ベース)ビュー内の参照ブロックの時間的動きベクトルを得るために導出されたベクトルを使用する。時間的動きベクトルが利用不可能である場合、ビデオコーダは、参照インデックスを最初に導出し、ビデオコーダは、動きベクトル予測子を作成するために、上記で説明したD−MVP技法を適用する。上記で説明したD−MVP技法は、通常のインター予測モードに対する深度ベースの動きベクトルを指す。
[0097]上記の説明に基づいて、視差ベクトルは、3D−AVCにおける有用なコーディングツールであることがわかる。たとえば、視差ベクトルは、動きベクトル予測に対するような1つまたは複数のコーディングツールを実施するために使用されるが、視差ベクトルに対する他の使用も同様に存在し得る。上記で説明したように、いくつかの3D−AVC技法は、視差ベクトル導出に対して(すなわち、従属ビューまたはエンハンスメントビューに対する深度優先のコーディングに対して)テクスチャビュー成分の深度ビュー成分を使用し、そのことが、復号待ち時間、実施の複雑さ、他のビデオコーディング規格に対する拡張可能性の欠如、深度ビュー成分が必要でない場合の帯域幅の非効率性、および他の潜在的な欠点などの問題をもたらす。
[0098]本開示で説明する技法は、対応する深度ビュー成分の使用を必要としない視差ベクトル導出を可能にする。このようにして、技法は、視差ベクトル導出を伴う従属ビューに対する3D−AVCにおけるテクスチャ優先のコーディングを可能にする。視差ベクトル導出を達成するために、本開示で説明する技法は、隣接ブロックの動きベクトル情報に依存する。一例では、隣接ブロックに対する動きベクトルが視差動きベクトルである場合、本開示で説明する技法は、隣接ブロックの視差動きベクトルを現在のブロックに対する視差ベクトルとして利用する。このようにして、ビデオエンコーダ20およびビデオデコーダ30は、対応する深度ビュー成分に依存する必要なしに、テクスチャビュー成分の現在のマクロブロックに対する視差ベクトルを決定し得る。同じく、このようにして、ビデオエンコーダ20およびビデオデコーダ30は、視差ベクトルを導出するために深度ビュー成分を使用することなく、導出された視差ベクトル利用して1つまたは複数のコーディングツールを実施し得る。
[0099]3D−HEVCビデオコーディング規格は、隣接ブロックベースの視差ベクトル(NBDV)導出と呼ばれる方式を利用する。本開示で説明する技法は、3D−AVCにおけるNBDV導出技法を利用し得る。さらに、3D−HEVCにおけるNBDV導出技法は、予測ユニット(PU)を含むコーディングユニット(CU)の概念に依存する。コーディングユニットおよび予測ユニットは、3D−AVC内に存在せず、マクロブロックが代わりに使用され、3D−AVCにおいてNBDV技法を活用することにおける複雑さを生じる。本開示で説明する技法は、3D−AVCに対して、3D−HEVCにおけるNBDV導出など、コーディングツール活用のそのような複雑さを克服する。
[0100]この意味で、本開示で説明する技法は、3D−AVCにおける隣接ブロックベースの視差ベクトル導出プロセスと見なされ得る。NBDV導出を活用する3D−AVCに対する視差ベクトル導出を説明する前に、以下は、NBDV導出に対する追加のコンテキストを提供する。
[0101]NBDV導出プロセスは、すべてのビューに対してテクスチャ優先のコーディング順序を使用する3D−HEVCビデオコーディング規格における視差ベクトル導出方法に使用される。現在の3D−HEVC設計では、ビデオコーダは、参照ビューの深度マップから深度データを取り出すために、NBDVを使用する。
[0102]最新の参照ソフトウェア記述ならびに3D−HEVCの作業ドラフトが、2014年2月25日現在時点で、http://phenix.it−sudparis.eu/jct3v/doc_end_user/current_document.php?id=460から、以下の、Gerhard Tech、Krzysztof Wenger、Ying Chen、Sehoon Yea、「3D−HEVC Test Model Description draft 2」、JCT3V−B1005、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのジョイントコラボレーティブチームオン3Dビデオコーディング拡張開発、第2回会議、上海、中国、2012年10月として利用可能となり、その内容全体は参照により本明細書に組み込まれる。
[0103]以下は、NBDV導出プロセスの概観を提供する。上記で説明したように、視差ベクトル(DV)は、2つのビュー間の視差の推定の表示であり得る。多くの場合、隣接ブロックは、ビデオコーディングにおいてほぼ同じ動き/視差情報を共有する。したがって、現在のブロックは、隣接ブロック内の動きベクトル情報を良好な視差予測子として使用し得る。隣接ブロックの動き情報は良好な視差予測を形成するので、NBDV導出は、異なるビュー内の視差ベクトルを推定するために隣接する視差情報を使用する。
[0104]NBDV導出において、いくつかの可能な空間的および時間的隣接ブロックが存在し、あらかじめ規定された空間的ブロックおよび隣接ブロックが、NBDV導出技法の一部として評価される。ビデオコーダは、現在のブロックと候補ブロック(すなわち、検査される隣接ブロック)との間の相関の優先度によって決定された、あらかじめ規定された順序で、隣接ブロックの各々を検査(たとえば、評価)する。候補(すなわち、隣接ブロックのうちの1つにおける)が視差動きベクトルを用いてインター予測される(すなわち、ビュー間予測される)ことをビデオコーダが決定すると、ビデオコーダは、隣接ブロックの視差動きベクトルを現在のブロックに対する視差ベクトルに変換する。
[0105]以下でより詳細に説明するように、どの隣接ブロックが評価されるかに対して、いくつかの制限が存在することがある。一例として、ビデオエンコーダ20およびビデオデコーダ30は、第1の参照ピクチャリストを指す動きベクトル(たとえば、第1の参照ピクチャリスト内で識別されるビュー間参照ピクチャを指す視差動きベクトル)を用いて隣接ブロックを評価(たとえば、検査)し得、第2の参照ピクチャリストを指す動きベクトル(たとえば、第2の参照ピクチャリスト内で識別されるビュー間参照ピクチャを指す視差動きベクトル)を用いて隣接ブロックを評価することを回避し得る(たとえば、評価しないまたは検査しない)。
[0106]たとえば、隣接ブロックに対する参照ピクチャリストインデックスが0に等しい(RefPicList0を識別する)場合、ビデオエンコーダ20およびビデオデコーダ30は、隣接ブロックに対する動きベクトルが、現在のマクロブロックに対する視差ベクトルを導出するために使用され得る視差動きベクトルであるかどうかを決定する目的で、動き情報を評価し得る。隣接ブロックに対する参照ピクチャリストインデックスが1に等しい(RefPicList1を識別する)場合、ビデオエンコーダ20およびビデオデコーダ30は、隣接ブロックに対する動きベクトルが、現在のマクロブロックに対する視差ベクトルを導出するために使用され得る視差動きベクトルであるかどうかを決定する目的で、動き情報を評価することを回避し得る(たとえば、評価しない)。
[0107]言い換えれば、隣接ブロックが視差動きベクトルを有するが、その視差動きベクトルがRefPicList1内のビュー間参照ピクチャを指す場合、ビデオエンコーダ20およびビデオデコーダ30は、現在のブロックに対する視差ベクトルを導出するためにこの視差動きベクトルを利用し得、ビュー間参照ピクチャを指す視差動きベクトルを有する隣接ブロックがRefPicList0であるまで追加の隣接ブロックを評価し続けてよく、発見される。次に、ビデオエンコーダ20およびビデオデコーダ30は、現在のブロックに対する視差ベクトルを導出するために、この視差動きベクトルを利用し得る。このようにして、技法は、現在のブロックに対する視差ベクトルを導出するために使用され得る視差動きベクトルを発見するために評価される必要のある隣接ブロックの数を最小化し得る。
[0108]いくつかの例では、ビデオコーダは、一方のセットが空間的隣接ブロックからであり、他方のセットが時間的隣接ブロックからである、隣接ブロックの2つのセットを利用する。空間的隣接ブロックは、現在のマクロブロックと同じフレーム内のブロックであり、時間的隣接ブロックは、異なるフレーム内のブロックである。いくつかの例では、時間的隣接ブロックは、現在のマクロブロックと同じビュー内によって必要とされる(すなわち、時間的隣接ブロックを含むフレームおよび現在のマクロブロックを含むフレームが同じビュー内にある)。
[0109]より詳細に説明するように、時間的隣接ブロックを含むピクチャは、時間的ピクチャと呼ばれる。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30が時間的隣接ブロックを識別するために選択する時間的ピクチャの数に対する制限が存在することがある。一例では、2つの時間的ピクチャが存在し得、ビデオエンコーダ20およびビデオデコーダ30は、時間的ピクチャの一方として第1の参照ピクチャリスト(RefPicList0)の第1のエントリ(エントリ0)内に位置するピクチャを選択し、他方の時間的ピクチャとして第2の参照ピクチャリスト(RefPicList1)の第1のエントリ(エントリ0)内に位置するピクチャを選択することができる。ビデオエンコーダ20およびビデオデコーダ30は、これらの選択された時間的ピクチャ内のブロックを評価し得る。一例では、ビデオエンコーダ20およびビデオデコーダ30は、右下ブロックを評価し得、ここで、右下ブロックは、選択された時間的ピクチャ内の現在のマクロブロックの下部の右側の位置に位置するブロックである。
[0110]空間的隣接ブロックに関して、いくつかの制限が存在し得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、最大4つまでの空間的隣接ブロックの動き情報を評価し得る。これらの4つの空間的隣接ブロックは、現在のマクロブロックの左に位置するブロックと、現在のマクロブロックの上に位置するブロックと、現在のマクロブロックの左上に位置するブロックと、現在のマクロブロックの右上に位置するブロックとを含む。
[0111]本開示で説明するように、動き予測に対して、ビデオエンコーダ20およびビデオデコーダ30は、現在のブロックの左ブロック、上ブロック、右上ブロックおよび左上ブロックを評価し得、ここで、左上ブロック内の動きベクトルは、その他の3つの隣接ブロックのうちの1つが動きベクトルを含まないときだけ使用される。したがって、いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30が視差ベクトルを導出する目的で評価する4つの空間的隣接ブロックのうちの3つが、H.264/AVCビデオコーディング規格において動き予測のために使用されるのと同じ隣接ブロックであり得る。
[0112]以下は、3D−HEVCにおけるNBDV導出に関する追加の詳細を提供する。3D−HEVCは、参照によりその全コンテンツが本明細書に組み込まれる、JCT3V−A0097において提案されたNBDV方法を最初に採用した。暗黙的視差ベクトルが、参照によりその全コンテンツが本明細書に組み込まれる、JCTVC−A0126における簡略化されたNBDVとともに含まれた。加えて、参照によりその全コンテンツが本明細書に組み込まれるJCT3V−B0047において、NBDVは、復号されたピクチャバッファ内に記憶された暗黙的視差ベクトルを除去することによってさらに簡略化されるが、同じく、ランダムアクセスポイント(RAP)ピクチャ選択によってコーディング利得を改善される。
[0113]JCT3V−A0097:3D−CE5.h:視差ベクトル生成結果、L.Zhang、Y.Chen、M.Karczewiczが、2014年2月25日現在、http://phenix.int−evry.fr/jct3v/doc_end_user/current_document.php?id=89から発見され得る。JCT3V−A0126:3D−CE5.h:HEVCベースの3Dビデオコーディングに対する視差ベクトル導出の簡略化、Jaewon Sung、Moonmo Koo、Sehoon Yea(LG)が、2014年2月25日現在、http://phenix.int−evry.fr/jct2/doc_end_user/current_document.php?id=142から発見され得る。JCT3V−B0047:3D−CE5.h関連:視差ベクトル導出のため改善、J.Kang、Y.Chen、L.Zhang、M.Karczewiczが、2014年2月25日現在、http://phenix.it−sudparis.eu/jct2/doc_end_user/current_document.php?id=236から発見され得る。
[0114]3D−HEVCに対するNBDV導出プロセスのため1つの提案書において、現在の予測ユニット(PU)のA0、A1、B0、B1またはB2で示される左下、左、右上、上、および左上の5つの空間的隣接ブロックが、視差ベクトル導出のために使用される。これらのブロックは、HEVCにおけるMERGEモードにおいて使用されるブロックと同じであり、したがって、追加のメモリアクセスは不要であることに留意されたい。
[0115]時間的隣接ブロックを検査するために、ビデオコーダは、最初に、候補ピクチャリストの構築プロセスを実行し得る。この例では、現在のビューからのすべての参照ピクチャが、候補ピクチャとして扱われ得る。ビデオコーダは、最初に、コロケートされた参照ピクチャを候補ピクチャリストに挿入し、続いて、候補ピクチャの残りを、参照インデックスの昇順で挿入する。両参照ピクチャリスト内の同じ参照インデックスを有する参照ピクチャが利用可能であるとき、コロケートされたピクチャの同じ参照ピクチャリスト内の一方が、他方に先行する。いくつかの例では、候補ピクチャリスト内の各候補ピクチャに対して、3つの候補領域が、時間的隣接ブロックを導出するために決定される。
[0116]ブロックがビュー間動き予測を用いてコーディングされるとき、視差ベクトルは、異なるビュー内の対応するブロックを選択するために導出される必要があることがある。暗黙的視差ベクトル(IDVまたは導出された視差ベクトル)は、隣接ブロックのビュー間動き予測において導出された視差ベクトルを指す。隣接ブロックが動き予測を用いてコーディングされるとしても、導出された視差ベクトルは、後続のブロックをコーディングする目的で廃棄されることはない。たとえば、隣接ブロックの導出された視差ベクトル(すなわち、暗黙的視差ベクトル)は、現在のブロックに対する視差ベクトルとして使用され得る。
[0117]一般的に、NBDV導出プロセスは、時間的隣接ブロック内の視差動きベクトル、空間的隣接ブロック内の視差動きベクトル、次に暗黙的視差ベクトルを、順番に検査するが、他の順番が可能である。視差動きベクトルまたは暗黙的視差ベクトルが発見されると、ビデオコーダはプロセスを終了し、視差動きベクトルまたは暗黙的視差ベクトルを現在のブロックに対する視差ベクトルとして使用する。
[0118]加えて、深度指向の隣接ブロック視差ベクトル(DoNBDV:depth oriented neighboring block disparity vector)の概念も存在する。DoNBDVを導出するために、NBDV導出プロセスが、参照ビューの深度データを取り出すために使用され、それによって、対応する深度データが、視差ベクトルを導出するために使用される。ここでの深度データは、参照ビューの深度ビュー成分からであり、現在のブロックを含むテクスチャビュー成分の深度データではないことに留意されたい。したがって、テクスチャ優先のコーディングは、依然として、DoNBDV導出を用いて可能である。NBDVと深度データとの同時最適化が、NBDV導出プロセスから単独で導出された視差ベクトルと比較して、視差ベクトルの精度を高め得る。加えて、NBDVまたはDoNBDV導出の結果は、ビュー間動き予測およびビュー間残差予測などの他のコーディングツールに対して使用され得る。DoNBDV導出は、JCT3V−C0131:3D−CE1.h:仮想深度取出し(virtual depth retrieval)を有する深度指向の隣接ブロック視差ベクトル、Y.L.Changら、MediaTekに記載されており、本書は、2014年2月25日現在、http://phenix.int−evry.fr/jct3v/doc_end_user/current_document.php?id=572から入手可能であり、その全コンテンツは参照により本明細書に組み込まれる。
[0119]ビデオエンコーダ20およびビデオデコーダ30は、本開示で説明する技法を実装するように構成され得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、テクスチャが第1に各ビュー成分に対してコーディングされることを可能にすることによって、3D−AVCの効率的なコーディングを可能にする技法を実装するように構成され得る。ビデオエンコーダ20およびビデオデコーダ30は、対応する深度データが、テクスチャ優先のコーディング順序によって3D−AVCにおいて利用可能でない(またはまだ利用可能でない)とき、現在のブロックの空間的/時間的隣接ブロックから2つ以上の利用可能な視差動きベクトルを考慮する、本開示の例示的なNBDV導出技法を使用して視差ベクトルを導出し得る。
[0120]一例として、ビデオデコーダ30は、従属ビューのテクスチャ優先のコーディングを用いて生成された3D−AVC準拠ビデオコーディングプロセスにおいてコーディングされたビットストリームを受信し得る。この例では、3D−AVC準拠ビデオコーディングプロセスは、3D−AVCビデオコーディング規格において規定されたビデオコーディングツールを使用するビデオコーディングプロセスを指す。従属ビューのテクスチャ優先のコーディングは、テクスチャビュー成分が、対応する深度ビュー成分の前にコーディングされる場合を指す(すなわち、T0、D0、T1、D1、以下同様)。
[0121]ビデオデコーダ30は、3D−AVC準拠ビデオコーディングプロセスにおける従属ビューのうちの1つの従属ビューのテクスチャビュー成分を復号し得る。この例では、テクスチャビュー成分を復号するために、ビデオデコーダ30は、少なくとも1つの隣接ブロックが、従属ビュー以外のビュー内のビュー間参照ピクチャを指す視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、テクスチャビュー成分内の現在のブロックの1つまたは複数の隣接ブロックの動き情報を評価するように構成され得る。同じく、テクスチャビュー成分を復号するために、ビデオデコーダ30は、隣接ブロックのうちの1つに対する視差動きベクトルに基づいて、現在のブロックに対する視差ベクトルを導出するように構成され得る。ビデオデコーダ30は、テクスチャビュー成分を復号することに続いて、テクスチャビュー成分に対応する深度ビュー成分を復号し得る。
[0122]別の例として、ビデオエンコーダ20は、3D−AVC準拠ビデオコーディングプロセスにおける従属ビューのテクスチャビュー成分を符号化し得る。この例では、テクスチャビュー成分を符号化するために、ビデオエンコーダ20は、少なくとも1つの隣接ブロックが、従属ビュー以外のビュー内のビュー間参照ピクチャを指す視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、テクスチャビュー成分内の現在のブロックの1つまたは複数の隣接ブロックの動き情報を評価するように構成され得る。同じく、テクスチャビュー成分を符号化するために、ビデオエンコーダ20は、隣接ブロックのうちの1つに対する視差動きベクトルに基づいて、現在のブロックに対する視差ベクトルを導出するように構成され得る。
[0123]ビデオエンコーダ20は、テクスチャビュー成分を符号化することに続いて、テクスチャビュー成分に対応する深度ビュー成分を符号化し得る。ビデオエンコーダ20はまた、符号化されたテクスチャビュー成分と符号化された深度ビュー成分とを含む従属ビューのテクスチャ優先のコーディングを用いてコーディングされたビットストリームを出力のために生成し得る。
[0124]以下でさらに詳細に説明するように、NBDV導出プロセスを3D−AVCに適用する技法は、3D−AVCにおけるNBDV導出および/またはNBDV導出を有する動きベクトル予測に関する特徴を含み得る。以下は、3D−AVCに対するNBDV導出の例を説明し、続いて、視差ベクトルが、ビュー間動き予測などにおいて使用され得る、例示的な方法を説明する。
[0125]説明を容易にするために、本技法は、ビデオコーダに関して説明される。ビデオコーダの例としては、ビデオエンコーダ20およびビデオデコーダ30がある。以下の説明では、「コーディングする(code)」という用語は、場合に応じて、符号化する(encode)または復号する(decode)を記述するために使用され得る。たとえば、コーディングする(code)という用語は、ビデオエンコーダ20によって実行されるときに符号化する(encode)を指し、ビデオデコーダ30によって実行されるときに復号する(decode)を指す。同様に、コーディング(coding)という用語は、ビデオエンコーダ20によって実行されるときに符号化(encoding)を指し、ビデオデコーダ30によって実行されるときに復号(decoding)を指すことができる。
[0126]たとえば、本開示で説明する技法では、3D−AVCに対するビデオデータをコーディングするためのデバイスはビデオコーダを含み、ビデオコーダは1つまたは複数のプロセッサを備え、本開示で説明する技法を実装するように構成され得る。たとえば、ビデオコーダは、3D−AVC準拠ビデオコーディングプロセスにおける従属ビューのテクスチャビュー成分をコーディングし得る。テクスチャビュー成分をコーディングするために、ビデオコーダは、少なくとも1つの隣接ブロックが、従属ビュー以外のビュー内のビュー間参照ピクチャを指す視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、テクスチャビュー成分内の現在のブロックの1つまたは複数の隣接ブロックの動き情報を評価し、隣接ブロックのうちの1つに対する視差動きベクトルに基づいて現在のブロックに対する視差ベクトルを導出するように構成され得る。ビデオコーダはまた、テクスチャビュー成分をコーディングすることに続いて、テクスチャビュー成分に対応する深度ビュー成分をコーディングするように構成される。
[0127]概して、ビデオコーダは、テクスチャビュー成分に対する視差動きベクトルを決定するために、隣接ブロックの位置について以前にコーディングされた動き情報を検査し、現在のブロックに対して、視差ベクトルとして使用した。加えて、いくつかの例では、ビデオコーダは、現在のブロックがビュー合成関連モードなどの他のモードに関連する場合、動きベクトルを視差動きベクトルとして見なすことができる。上記で説明したように、ビデオコーダは、あらかじめ規定された時間的および空間的隣接ブロックを順番に検査する。いくつかの例では、ビデオコーダが視差動きベクトルを識別すると、ビデオコーダは、隣接ブロックに対する視差動きベクトルに基づいて、現在のブロックに対する視差ベクトルを導出する(すなわち、視差動きベクトルが視差ベクトルになる)。視差動きベクトルを識別することおよび視差動きベクトルを使用することが視差ベクトルを導出した後、ビデオコーダは、NBDV導出プロセスを終了する。
[0128]3D−AVC準拠コーダによって使用されるNBDV導出プロセスは、3D−AVCのコーディング状況に対して適応的に設計されたいくつかの特徴のうちの1つまたは複数を含み得る。たとえば、上記で説明したように、マクロブロック(MB)はサブブロックに区分され得、サブブロックは4×4ブロックレベルにさらに分割され得る。いくつかの例では、ビデオコーダは、マクロブロックに対して一度、視差ベクトルを導出し(たとえば、NBDVプロセスが一度実行され)、この導出された視差ベクトルをマクロブロック内のブロック(すなわち、サブブロックまたは4×4ブロック)のすべてに割り当てることができる。いくつかの例では、ビデオコーダは、各個々のMBパーティションレベル、サブMBパーティションレベルに対して、またはさらに4×4ブロックレベルにおいて、視差ベクトルを導出し得る(すなわち、NBDVプロセスは、個々のMBパーティションレベル、サブMBパーティションレベル、またはさらに4×4ブロックレベルにおいて起動され得る)。
[0129]言い換えれば、ビデオコーダは、現在のブロックに対する視差ベクトルを導出し得る。いくつかの例では、現在のブロックは、テクスチャビュー成分のマクロブロックであり得る。これらの例では、ビデオコーダは、導出された視差ベクトルをマクロブロック内の各ブロックに割り当て得る。いくつかの例では、現在のブロックは、複数のブロックを含むマクロブロック内のブロックであり得る。これらの例では、ビデオコーダは、マクロブロック内の複数のブロックの各々に対する視差ベクトルを導出し得る。
[0130]いくつかの例では、視差動きベクトルを識別するために各隣接ブロックに対する動き情報を検査するとき、ビデオコーダは、参照ピクチャリスト(たとえば、RefPicList0)に対応する動きベクトルだけを検査し得る。これらの例では、ビデオコーダは、その他の参照ピクチャリスト(たとえば、RefPicList1)に対応する動きベクトルを検査しない。
[0131]たとえば、ビデオコーディングの一部として、ビデオコーダは、RefPicList0およびRefPicList1と呼ばれる1つまたは2つの参照ピクチャリストを構築する。ビデオエンコーダ20およびビデオデコーダ30は、各々、1つまたは複数の参照ピクチャリストを構築するために同じプロセスを利用する。参照ピクチャリストは、インター予測のために使用され得る参照ピクチャを識別する。参照ピクチャリストへの参照インデックスは、インター予測のために使用されるべき参照ピクチャを識別する。双予測されるフレームまたはスライス(すなわち、BフレームまたはBスライス)に対して、ビデオコーダは、両参照ピクチャリストを構築し、単方向予測されるフレームまたはスライス(すなわち、PフレームまたはPスライス)に対して、ビデオコーダは、1つの参照ピクチャリスト(たとえば、RefPicList0)だけを構築する。
[0132]隣接ブロックは、2つの動きベクトルを含み得、各々が、参照ピクチャリストのうちの1つを指す。これらの例では、ビデオコーダは、RefPicList0を指す動きベクトルが視差動きベクトルであるかどうかだけを決定し、RefPicList1を指す動きベクトルが視差動きベクトルであるかどうかを決定せず、またはその逆も成り立つ。言い換えれば、動き情報を評価(たとえば、検査)するために、ビデオコーダは、少なくとも1つの隣接ブロックが視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、2つの参照ピクチャリストのうちの第1の参照ピクチャリストを指す動きベクトルを有する1つまたは複数の隣接ブロックだけの動き情報を評価し、少なくとも1つの隣接ブロックが視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、2つの参照ピクチャリストのうちの第2の参照ピクチャリストを指す動きベクトルを有する1つまたは複数の隣接ブロックの動き情報の評価を回避することができる。
[0133]上記で説明したように、ビデオコーダは、隣接ブロックの動き情報を評価し得、ここで、隣接ブロックは、空間的隣接ブロックと時間的隣接ブロックとを含む。空間的隣接ブロックは、コーディングされているブロックと同じフレームまたはピクチャ内のブロックであり、時間的隣接ブロックは、時間的ピクチャ内にあり、ここで、時間的ピクチャは、コーディングされているブロックを含むピクチャと同じビュー内のピクチャである。
[0134]そのブロックが潜在的に時間的隣接ブロックであり得る時間的ピクチャの可能性は非常に高い。しかしながら、視差ベクトルを導出するために評価される必要のある時間的ピクチャの数を最小化するために、ビデオコーダは、視差ベクトルを導出することを導出するために使用される時間的ピクチャを決定するための、以下の例示的な技法のうちの1つまたは複数を実施し得る。
[0135]一般的に、ビデオコーダは、時間的隣接ブロック内の視差動きベクトルを検査するために、2つまでの時間的ピクチャを選択し得る。時間的隣接ブロックは、コロケートされた(たとえば、配列された(collocated))ブロックであり得る。コロケートされたブロックは、現在のブロックが現在ピクチャ内で包含するのと同じ面積を、時間的ピクチャ内で包含する(すなわち、コロケートされたブロックは、現在のブロックが現在ピクチャ内に配置される、時間的ピクチャ内の同じ位置に配置される)。たとえば、ビデオコーダは、第1の時間的ピクチャ内の1つまたは複数の時間的隣接ブロックの動き情報を評価し得、時間的隣接ブロックがいずれも、視差動きベクトルを用いてビュー間予測されない場合、ビデオコーダは、第2の時間的ピクチャ内の1つまたは複数の時間的隣接ブロックの動き情報を評価し得る。
[0136]いくつかの例では、2つの候補時間的ピクチャのうち、一方の候補時間的ピクチャは、RefPicList0からのインデックス0(たとえば、エントリ0)を有するピクチャであり、他方の候補時間的ピクチャは、RefPicList1内のインデックス0(たとえば、エントリ0)を有するピクチャである。ピクチャタイプがPピクチャである(すなわち、RefPicList1は利用可能でない)場合、ビデオコーダは、RefPicList0からのインデックス0を有するピクチャだけを使用し得る。言い換えれば、テクスチャビュー成分のコーディングの一部として、ビデオコーダは、第1の時間的ピクチャを選択し得、ここで、第1の時間的ピクチャは、第1の参照ピクチャリスト(たとえば、RefPicList0)の第1のエントリ(たとえば、インデックス0)において識別されたピクチャである。ビデオコーダはまた、第2の時間的ピクチャを選択し得、ここで、第2の時間的ピクチャは、第2の参照ピクチャリスト(たとえば、RefPicList1)の第1のエントリ(たとえば、インデックス0)において識別されたピクチャである。
[0137]ビデオコーダが評価し得る時間的隣接ブロックは、2つの候補時間的ピクチャのうちの1つの中のブロックであり得る。たとえば、これらの例では、ビデオコーダは、第1の選択された時間的ピクチャまたは第2の選択された時間的ピクチャの少なくとも一方の中の、少なくとも1つの時間的隣接ブロックの動き情報を評価し得る。
[0138]代替として、ビデオコーダは、アンカピクチャと、時間的IDと、現在ピクチャとのPOC差とを考慮するアルゴリズム的プロセスを用いて2つの時間的ピクチャを導出し得る。時間的IDは、時間的識別値であり、ここで、より高い時間的ID値を有するピクチャは、より低い時間的ID値を有するピクチャをインター予測するために使用され得ないが、より低い時間的ID値を有するピクチャは、より高い時間的ID値を有するピクチャをインター予測するために使用され得る。たとえば、ビデオコーダは、利用可能な場合、参照ピクチャリストのうちの1つの中で識別されるアンカピクチャを、時間的ピクチャとして選択し得る。利用可能でない場合、ビデオコーダは、最小の時間的ID値を有する参照ピクチャリストの中のピクチャを選択し得、複数のピクチャが同じ最小の時間的ID値を有する場合、ビデオコーダは、POC値に基づいて現在ピクチャへの最短距離を有する参照ピクチャを選択し得る(すなわち、最小差を有するピクチャが、時間的ピクチャであると見なされる)。
[0139]いくつかの例では、ピクチャタイプがPピクチャである場合、ビデオコーダは、RefPicList0から1つのピクチャだけを返すことができる。いくつかの例では、視差ベクトルを導出するために使用される時間的ピクチャを決定するのではなく、ビデオエンコーダ20は、視差ベクトルを導出するために使用される2つの時間的ピクチャを示す情報を通知し得、ビデオデコーダは、通知された情報を受信し、通知された情報に基づいて視差ベクトルを導出するために使用される2つの時間的ピクチャを決定し得る。たとえば、スライスヘッダの一部として視差ベクトルを導出するために使用される2つの時間的ピクチャを示す情報を、ビデオエンコーダ20が通知し、ビデオデコーダ30が受信することができる。
[0140]上記の例は、2つまでの時間的ピクチャを決定するビデオコーダを説明したが、技法はそのように制限されない。たとえば、ビデオコーダは、時間的ピクチャとして1つのピクチャだけを使用し得る。一例として、アンカピクチャであるピクチャだけが、時間的ピクチャであり得る。別一例として、アンカピクチャであるピクチャだけが、時間的ピクチャであり得る。
[0141]いくつかの例では、時間的レベルが0に等しい(すなわち、0の時間的ID値)ピクチャだけが、時間的ピクチャであり得る。これらの例では、1つ、2つ、または3つ以上の時間的ピクチャがあることが可能である。
[0142]NBDV導出技法の一部として、ビデオコーダが1つまたは複数の時間的ピクチャを選択すると、ビデオコーダは、1つまたは複数の時間的ピクチャ内の1つまたは複数の時間的ブロックに対する動き情報を評価し得る。時間的ブロックは、時間的に配列されたMBの内部または外部の任意のブロック位置を指すことができる。ビデオコーダが評価する時間的ブロックの位置および順序は、あらかじめ規定され得る。
[0143]一例として、ビデオコーダは、コロケートされたMBの内部の中心ブロックの動き情報を評価し得、中心ブロックがビュー間予測されない場合、コロケートされたMBの内部の右下隅のブロックの動き情報を評価し得、その逆も成り立つ。別の例として、ビデオコーダは、コロケートされたMBの内部の中心ブロックの動き情報を評価し得、中心ブロックがビュー間予測されない場合、MBの内部の左下隅のブロックの動き情報を評価し得、その逆も成り立つ。さらに別の例として、ビデオコーダは、コロケートされたMBの内部の右下隅のブロックの動き情報を評価し得、右下隅のブロックがビュー間予測されない場合、MBの内部の左下隅のブロックの動き情報を評価し得、その逆も成り立つ。さらなる例として、ビデオコーダは、コロケートされたMBの内部の中心ブロックの動き情報を評価し得、中心ブロックがビュー間予測されない場合、MBの外部の右下ブロックの動き情報を評価し得、その逆も成り立つ。
[0144]いくつかの例では、ビデオコーダは、コロケートされたMBの内部の中心ブロックの動き情報を評価し得、中心ブロックがビュー間予測されない場合、MBの内部の左下隅ブロックの動き情報を評価し得、MBの内部の左下隅ブロックがビュー間予測されない場合、MBの外部の右下ブロックの動き情報を評価し得、または任意の並べ替えで評価し得る。しかしながら、右下ブロックの位置が外部にある場合、MBは利用可能でなく(たとえば、ピクチャ境界の外)ビデオコーダは、4つの隅の位置のブロックの動き情報を評価し得る。たとえば、ビデオコーダは、視差ベクトル導出のために右下隅の位置の動き情報を評価し得る。
[0145]いくつかの例では、ビデオコーダは、コロケートされたMBの内部の中心ブロックの動き情報を評価し得、中心ブロックがビュー間予測されない場合、MBの外部の右下ブロックの動き情報を評価し得、MBの外部の右下ブロックがビュー間予測されない場合、時間的にコロケートされたMBの4つの中心ブロックの動き情報を評価し得、または任意の並べ替えで評価し得る。一般に、コロケートされたMBの内部/外部からの任意の選択されたブロックの位置が、考慮され得る(たとえば、中心ブロックおよび右下ブロックだけ)。
[0146]時間的ピクチャ内の複数のブロックを評価するのではなく、いくつかの例では、ビデオコーダは、1つの時間的ブロックだけ(たとえば、右下ブロックだけ)の動き情報を評価し得る。たとえば、ビデオコーダは、候補時間的ピクチャのうちの少なくとも1つ(たとえば、第1の選択された時間的ピクチャまたは第2の選択された時間的ピクチャの少なくとも一方、ここで、第1の選択された時間的ピクチャはRefPicList0内のエントリ0であり、第2の選択された時間的ピクチャはRefPicList1内のエントリ0である)の中の1つのブロックだけ(たとえば、右下ブロック)に対する動き情報を評価し得る。
[0147]いくつかの例では、時間的ピクチャ内の動きベクトルの水平成分だけが、アクセスされる。これらの例では、垂直成分は、記憶またはアクセスされる必要はない。いくつかの例では、時間的ピクチャ内の動きベクトルの1つの成分は、[−128、127]の範囲に制限される。これらの例では、ビデオコーダは、動きベクトルに対して1バイトだけを記憶する必要があり得る(すなわち、8ビットは、−128〜127に及ぶ256値を表すために使用され得る)。
[0148]いくつかの例では、ブロックが視差動きベクトルを含むのかまたは時間的動きベクトルを含むのかを示すための参照インデックスを置き換えるために、1つだけのフラグが記憶される。この場合、ビデオコーダによって実施されるNBDV導出プロセスは、常に、視差ベクトルを1つの参照ビューに返すことができる。
[0149]上記は、1つまたは複数の時間的ピクチャを決定することと、決定された1つまたは複数の時間的ピクチャの中のどの時間的ブロックを、ビデオコーダが現在のブロックに対する視差ベクトルを導出するために評価するかを決定することとの例を説明した。以下は、現在のブロックに対する視差ベクトルを導出するために、空間的隣接ブロックにアクセスするビデオコーダの例を説明する。
[0150]いくつかの例では、空間的ブロックは、同じピクチャ内の以前にコーディングされた任意のブロックの位置を参照させ得る。ビデオコーダは、これらの空間的ブロックに対して動き情報を評価し得、空間的ブロックがビュー間予測されることを空間的ブロックの動きベクトルが示す場合、ビデオコーダは、視差ベクトルを導出するために空間的ブロックの視差動きベクトルを利用し得る。
[0151]いくつかの例では、空間的ブロックは、コーディングされる現在のブロックの左、上、左上、および右上の位置における隣接ブロックなど、最大4つまでの空間的隣接ブロックを含む。これらの例では、4つの隣接ブロックのうちの3つが、H.264/AVCビデオコーディング規格における動き予測において使用される隣接ブロックと同じである。いくつかの例では、ビデオコーダは、右上の位置が利用可能でない(たとえば、ピクチャ境界の外)場合だけ、左上の位置を考慮し得る。
[0152]上記で説明したように、ビデオコーダは、動き情報隣接ブロックをあらかじめ規定された順番に評価し得、ビデオコーダが、隣接ブロックに対する視差動きベクトル(いくつかの例では、RefPicList0を指すことを必要とされる)を識別すると、ビデオコーダは、視差ベクトルを導出するために視差動きベクトルを使用する(すなわち、視差動きベクトルを視差ベクトルに変換する)ことができ、動き情報がまだ評価されていない他の隣接ブロックが存在しても、NBDV導出プロセスを終了する。ただし、本開示で説明する技法は、そのように限定されない。
[0153]一例として、ビデオコーダが、その0に等しくない水平成分を有する視差動きベクトルを識別すると、ビデオコーダは、視差動きベクトルを視差ベクトルに変換し得、第1の識別された視差動きベクトルの後ではなくその時点で、NBDV導出プロセスを終了する。別の例として、ビデオコーダが、非ゼロの視差動きベクトルを識別すると、ビデオコーダは、視差動きベクトルを視差ベクトルに変換し得、第1の識別された視差動きベクトルの後ではなくその時点で、NBDV導出プロセスを終了する。
[0154]いくつかの例では、さらに、視差動きベクトルが空間的/時間的隣接ブロック内で識別されないとき、ビデオコーダは、ゼロ視差ベクトルを使用する。言い換えれば、ビデオコーダは、1つまたは複数の隣接ブロックのいずれも、ビュー間予測されない場合、現在のブロックに対する視差ベクトルをゼロに等しく設定し得る。
[0155]いくつかの例では、3D−AVCに対するNBDV導出技法を使用して導出された視差ベクトルに対して、いくつかの制限が存在することがある。一例として、ビデオコーダは、導出された視差ベクトルの垂直成分を、視差動きベクトルの垂直成分と同じになるように設定し得、それによって視差ベクトルの垂直成分は0に設定されない。一例では、ビデオコーダは、常に、導出プロセスの最後に視差ベクトルの垂直成分を0に等しく設定し得る。たとえば、ビデオコーダは、視差ベクトルの水平成分を、視差動きベクトルの水平成分に等しく設定し得、視差ベクトルの垂直成分を0に等しく設定し得る。
[0156]別の例では、ビデオコーダは、視差ベクトルを使用するコーディングモードに応じて、視差ベクトルの垂直成分を0に等しく設定することもしないこともある。たとえば、ビュー間動き予測において、ビデオコーダは、NBDV導出プロセスによって得られた視差ベクトルを、視差動きベクトル予測子として視差動きベクトルに変換し得る。変換された視差動きベクトルは、視差動きベクトルの垂直成分が何であったかにかかわらず、「ビュー間動き予測モード」によるゼロ垂直成分を有し得る。しかしながら、視差動きベクトルが不変であることが可能である。同じ状況が、NBDV導出が使用されるとき、時間的動き予測およびPスキップ/B直接モードに適用され得る。
[0157]上記で説明したように、視差ベクトルを導出するために深度ビュー成分を使用することなく導出された動きベクトルを利用してビデオコーダが実装し得る1つまたは複数のコーディングツールの一例として、ビデオコーダは、動きベクトル予測の目的で導出された視差ベクトルを利用し得る。以下は、NBDV導出を用いる動きベクトル予測を説明する。
[0158]テクスチャ優先のコーディング順序では、NBDV導出プロセスは、動きベクトル予測プロセスにおける視差ベクトルとなるように使用され、参照ビューの参照ブロックを識別するために使用されるかまたは現在のコーディングブロックの視差動きベクトルに変換されるように使用される。例として、以下の場合を説明する。
[0159]ビデオコーダ(たとえば、ビデオエンコーダ20およびビデオデコーダ30)は、通常のインター予測モードに対してD−MVP(深度ベースの動きベクトル予測)導出を利用し得る。しかしながら、深度に依存するのではなく、技法は、動きベクトル予測のためにNBDV導出を利用する。通常のインター予測モードは、コーディングされたビットストリームが、動きベクトルが導出される情報を含み、残差データを含む、インター予測モードを指し、ここで、残差データは、動きベクトルによって指されるブロックと実際の現在のブロックとの間の差である。
[0160]通常のインター予測モードにおける動きベクトル予測のため第1の例示的な技法では、動きベクトル予測プロセス中に、ビデオコーダは、現在のブロックをインター予測するために使用される参照ピクチャがビュー間参照ピクチャであるかどうかを決定し得る。一例では、ビデオエンコーダ20は、インター予測符号化現在のブロックのために使用された参照ピクチャリストへの参照インデックスを、コーディングされたビットストリーム内で通知し得、ビデオデコーダ30は、現在のブロックのインター予測復号のために使用される参照ピクチャを識別し得る。次に、ビデオデコーダ30は、参照ピクチャのPOC値および/またはvtew_id値に基づいて、識別された参照ピクチャが、ビュー間参照ピクチャであるかまたは時間的参照ピクチャであるかを決定し得る。ビデオエンコーダ20は、インター予測のために使用された参照ピクチャを選択しており、したがって、ビデオエンコーダ20は、選択された参照ピクチャがビュー間参照ピクチャであるかまたは時間的参照ピクチャであるかを決定し得る。
[0161]言い換えれば、ビデオコーダは、現在のブロックに対する参照インデックスがビュー間参照ピクチャに対応するかどうかを決定し得る。この意味で、インター予測のために使用されるべき参照ピクチャは知られているが、参照ピクチャを指す動きベクトルは知られておらず、動きベクトル予測技法を使用して予測され得る。
[0162]参照ピクチャがビュー間参照ピクチャである場合、ビデオコーダは、動きベクトル予測のために使用される隣接ブロックがビュー間予測されないかどうかを決定し得る。上記で説明したように、動きベクトル予測では、ビデオコーダは、左ブロック、上ブロック、右上ブロックに対する動きベクトルを利用し、その他のブロックのうちの1つに対する動きベクトルが利用不可能である場合にのみ左上ブロックに対する動きベクトルを利用する。本開示では、左ブロック、上ブロック、右上ブロック、およびその他のブロックのうちの1つに対する動きベクトルが利用不可能である場合にのみ左上ブロックが、動きベクトル予測のために使用される隣接ブロックの例である。
[0163]この例示的な技法では、現在のブロックに対する参照インデックスがビュー間参照ピクチャに対応し、動きベクトル予測のために使用される隣接ブロックがビュー間予測されない(すなわち、ビュー間参照ピクチャを指す視差動きベクトルを用いて予測されない)場合、ビデオコーダは、導出された視差ベクトルを、上記で説明したNBDV導出技法を使用して、視差動きベクトルとして、動きベクトル予測のために使用され、ビュー間予測されない隣接ブロックに割り当て得る。一例として、左ブロックはビュー間予測されず、したがって、左ブロックに対する視差動きベクトルはないものと仮定する。しかしながら、現在のブロックは、ビュー間参照ピクチャに対応する参照インデックスによって示されるように、ビュー間予測される。
[0164]この例では、ビデオコーダは、現在のブロックに対する導出された視差ベクトルを、あたかもそれが、動きベクトル予測のための、左ブロックに対する視差動きベクトルであるかのように見なす。現在のブロックに対する導出された視差動きベクトルは、今や、左ブロックに対する視差動きベクトルとして割り当てられ、左ブロックをインター予測するために使用されないことを理解されたい。むしろ、現在のブロックに対する動きベクトル予測を目的として、左ブロックがビュー間予測されない場合、導出された視差ベクトルは、左ブロックの視差動きベクトルとして置き換えるかまたは代用する。
[0165]その後、メディアンフィルタが、動きベクトル予測子を導出するために、隣接ブロックの動きベクトルに適用される。たとえば、ビデオコーダは、動きベクトルの候補リストを構築し、ここで、この場合は現在のブロックがビュー間予測されるので、候補リストは視差動きベクトルを含む(たとえば、3つの視差動きベクトル)。動きベクトル予測のために使用される隣接ブロックのうちの1つがビュー間予測されない場合、ビデオコーダは、導出された視差ベクトルを3つの視差動きベクトルのリストへの候補動きベクトルとして代用する。ビデオコーダは、メディアンフィルタリングを利用して、現在のブロックに対する動きベクトル予測子を決定し、ここで、メディアンフィルタリングは、視差動きベクトルとして、動きベクトル予測のために使用される隣接ブロックに割り当てられる現在のブロックに対する導出された視差ベクトルを、フィルタリングされる動きベクトルのうちの1つとして利用する。
[0166]次に、ビデオコーダは、動きベクトル予測子に基づいて、現在のブロックをインター予測コーディングする(ビデオデコーダ30に対して復号し、ビデオエンコーダ20に対して符号化する)。たとえば、ビデオコーダは動きベクトル差分(MVD)を決定し(たとえば、ビデオエンコーダ20はMVDを通知し、ビデオデコーダ30はMVDを受信し)、次に、ビデオコーダは、現在のブロックに対する動きベクトル(たとえば、この例では、現在のブロックに対する視差動きベクトル)を決定するために、MVDを動きベクトル予測子に加算する。次に、ビデオコーダは、現在のブロックに対する参照インデックスによって識別された参照ピクチャを指す決定された動きベクトルを用いて現在のブロックをインター予測コーディングする。
[0167]動きベクトル予測に対する第2の例示的な技法では、ビデオコーダは、現在のブロックがビュー間予測されるかどうかを決定し得る(たとえば、現在のブロックに対する参照ピクチャリストへの参照インデックスが、ビュー間参照ピクチャに対応するかどうかを決定する)。この例では、現在のブロックに対する参照インデックスがビュー間参照ピクチャに対応する場合、ビデオコーダは、現在のブロックに対する導出された視差ベクトルを、現在に対する動きベクトル予測子として利用し得る。この例では、ビデオコーダは、動きベクトル予測子を決定するためにメディアンフィルタリングを利用せず、代わりに、現在の動きベクトル(すなわち、現在のブロックに対する動きベクトル)を予測するために、導出された視差ベクトルを視差動きベクトルに直接変換する。ビデオコーダは、上記で説明したように、動きベクトル予測子に基づいて現在のブロックをインター予測コーディングし得る。
[0168]動きベクトル予測に対する上記の例は、現在のブロックがビュー間予測される場合に基づいていた。以下は、現在のブロックはビュー間予測されないが、時間的参照ピクチャを用いて予測されるとき、導出された視差ベクトルを使用する動きベクトル予測に対する1つの例示的な技法を説明する。
[0169]ビデオコーダは、参照ピクチャリストへの参照インデックスに対応する参照ピクチャに基づいて、現在のブロックが、時間的参照ピクチャを用いて予測されるかどうかを決定し得る。いくつかの例では、動きベクトル予測のために使用される隣接ブロックが、時間的動きベクトルを用いてインター予測されないことがあり得る。
[0170]この場合、ビデオコーダは、参照ビュー内の配置された参照ブロック(すなわち、視差ベクトルによって指される配置されたブロック)に対する現在のブロックに対して、NBDV導出技法を使用して導出された視差ベクトルを利用し得る。視差ベクトルによって指されるブロックが、利用可能な時間的動きベクトルを有する場合、ビデオコーダは、この時間的動きベクトルを、時間的動きベクトルを用いてインター予測されない動きベクトル予測のために使用される隣接ブロックに対する動きベクトルとして割り当て得る。言い換えれば、ビデオコーダは、視差ベクトルによって指されるブロックに対する時間的動きベクトルを、動きベクトル予測のために、隣接ブロックに対する時間的動きベクトルとして代用する。次に、ビデオコーダは、上記と同様に、動きベクトル予測子を決定するためにメディアンフィルタリングを使用する。
[0171]一般に、動きベクトル予測に対して、動きベクトル予測子を決定するために使用される候補動きベクトルは、現在のブロックに対して使用されることになる動きベクトルと同じタイプの動きベクトルである必要があり得る。たとえば、現在のブロックが参照インデックスから決定されたようにインター予測される場合、現在のブロックに対する動きベクトルは視差動きベクトルである。いくつかの例では、現在のブロックに対する動きベクトル予測子を決定するために使用される候補動きベクトルもまた、視差動きベクトルである。この場合、視差ベクトルは、ビュー間予測されないかまたは動きベクトル予測子として直接使用される隣接ブロックに対して、視差動きベクトルとして代用される。現在のブロックが、参照インデックスから決定されたのと同じビュー内の参照ピクチャを用いてインター予測される場合、現在のブロックに対する動きベクトルは、時間的動きベクトルである。いくつかの例では、現在のブロックに対する動きベクトル予測子を決定するために使用される候補動きベクトルもまた、時間的動きベクトルである。この場合、視差ベクトルはブロックを識別するために使用され、この識別されたブロックに対する時間的動きベクトルは、ビュー間予測されない隣接ブロックに対する時間的動きベクトルとして代用される。
[0172]上記は、通常のインター予測モードに関する動きベクトル予測に関する例を説明した。以下は、NBDVを使用するスキップモードおよび直接モードに関する動きベクトル予測のための例示的な技法を説明する。
[0173]スキップモードおよび直接モードは、現在のブロックを復号するためのコーディングされたビットストリーム内に、残差ベクトルまたは動きベクトルが含まれないインター予測モードを指す。対照的に、通常のインター予測モードにおいて、ビデオエンコーダ20は、動きベクトルが導出される情報を通知するか、または動きベクトルを識別する情報を通知する。加えて、通常のインター予測モードにおいて、ビデオエンコーダ20は、動きベクトルによって識別されたブロックと実際の現在のブロックとの間の残差を通知する。スキップモードは、一般に、単方向予測されたピクチャまたはスライス(たとえば、PフレームまたはPスライス)と関連付けられ、直接モードは、一般に、双予測されたピクチャまたはスライス(たとえば、BフレームまたはBスライス)と関連付けられる。簡潔にするため、NBDV導出プロセスを使用するスキップモードおよび直接モードに対するビュー間動きベクトル予測は、一緒に説明される。
[0174]一例では、ビデオコーダは、スキップモードおよび直接モードに対するビュー間動き予測のために使用される視差ベクトルを決定するために、現在のブロックに対するNBDV導出技法から導出された視差ベクトルを、隣接ブロックの視差動きベクトルと一緒に利用し得る。NBDV導出技法から導出された視差ベクトル、ならびにスキップモードおよび直接モードに対するビュー間動き予測のために使用される視差ベクトルは、異なってもよくまたは同じでもよい。ビデオコーダは、参照ビュー内のブロックを識別するためにビュー間動き予測のために使用される視差ベクトルを利用し、識別されたブロックに対する動きベクトルを決定する。ビデオコーダは、識別されたブロックに対する動きベクトルを、現在の3D−AVCにおけるように現在のブロックに対する動きベクトルに変換する。
[0175]いくつかの例では、隣接ブロックに対する視差動きベクトルがない場合、ビデオコーダは、NBDV導出技法から現在のブロックに対して導出された視差ベクトルを、隣接ブロックの視差ベクトルの代わりに、隣接ブロックに対する視差動きベクトルとして代用し得る。このようにして、現在のブロックの隣接ブロックは、特に、ビュー間動き予測のために使用される最後の視差ベクトルの予測のために使用されるとき、現在のブロックと同じ視差ベクトルを有することができる。
[0176]上記の例は、NBDV導出技法を使用してスキップモードまたは直接モードに対するビュー間動き予測に対して視差ベクトルを利用する1つの方法を説明した。ただし、本開示の態様はそのように限定されない。一例として、ビデオコーダは、スキップモードまたは直接モードに対するビュー間動き予測に対して、NBDV導出技法から導出された視差ベクトルを直接使用し得る。別の例として、導出された視差ベクトルが利用可能である場合、それは、ビュー間動き予測のために直接使用され、さもなければ、メディアンフィルタリングが上記で説明されたように使用される。
[0177]図2は、本開示で説明する技法を実装し得るビデオエンコーダの一例を示すブロック図である。たとえば、図2は、ビデオスライス内のビデオブロックのイントラコーディングとインターコーディングとを実行できるビデオエンコーダ20を示す。たとえば、ビデオエンコーダ20は、インター予測符号化またはイントラ予測符号化を実行できる。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオ内の空間的冗長性を低減または除去するために、空間的予測に依存する。インターコーディングは、ビデオシーケンスの隣接するフレームもしくはピクチャ内の時間的冗長性、または異なるビュー内のピクチャ間の冗長性を低減または除去するために、時間的予測またはビュー間予測に依存する。イントラモード(Iモード)(登録商標)は、いくつかの空間ベースの圧縮モードのいずれかを指すことがある。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指すことがある。
[0178]図2の例では、ビデオエンコーダ20は、ビデオデータメモリ40と、予測処理ユニット42と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化処理ユニット54と、エントロピー符号化ユニット56とを含む。予測処理ユニット42は、動き推定ユニット44と、動き補償ユニット46と、イントラ予測ユニット48とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化処理ユニット58と、逆変換処理ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ(図2に図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタリングすることになる。デブロッキングフィルタに加えて追加のループフィルタ(ループ内またはループ後)も使用され得る。
[0179]ビデオデータメモリ40は、ビデオエンコーダ20の(たとえば、ビデオデータを記憶するように構成された)構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ40に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。参照ピクチャメモリ64は、ビデオエンコーダ20によってビデオデータを(たとえば、イントラコーディングモードまたはインターコーディングモードにおいて、イントラ予測コーディングモードまたはインター予測コーディングモードとも呼ばれる)符号化するのに使用するための参照ビデオデータを記憶する復号ピクチャバッファ(DPBの一例である。ビデオデータメモリ40および参照ピクチャメモリ64は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含むダイナミックランダムアクセスメモリ(DRAM)など、多様なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ40および参照ピクチャメモリ64は、同じメモリデバイスまたは個別のメモリデバイスによって設けられ得る。様々な例では、ビデオデータメモリ40は、ビデオエンコーダ20の他の構成要素とのオンチップであってよく、またはそれらの構成要素に対してオフチップであってもよい。
[0180]ビデオエンコーダ20はビデオデータを受信し、区分ユニット(図示せず)はデータをビデオブロックに区分する。この区分はまた、スライス、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分(たとえば、マクロブロックパーティションおよびパーティションのサブブロック)を含み得る。ビデオエンコーダ20は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示している。スライスは、複数のビデオブロックに(および、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット42は、誤差結果(たとえば、コーディングレートおよびひずみレベル)に基づいて現在のビデオブロックのために、複数のイントラコーディングモード(イントラ予測コーディングモード)のうちの1つ、あるいは複数のインターコーディングモード(インター予測コーディングモード)のうちの1つなど、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット42は、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを、残差ブロックデータを生成するために加算器50に与え、参照ピクチャとして使用するための符号化されたブロックを再構成するために加算器62に与え得る。
[0181]予測処理ユニット42内のイントラ予測ユニット48は、空間圧縮を行うために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対する現在のビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット42内の動き推定ユニット44および動き補償ユニット46は、時間圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数の予測ブロックに対する現在のビデオブロックのインター予測コーディングを実行する。
[0182]動き推定ユニット44は、ビデオシーケンスの所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンス中のビデオスライスをPスライスまたはBスライスに指定し得る。動き推定ユニット44および動き補償ユニット46は、高度に統合される場合があるが、概念的な目的のために別々に示してある。動き推定ユニット44によって実施される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する現在ビデオフレームまたはピクチャ内のビデオブロックの変位を示し得る。
[0183]予測ブロックは、絶対値差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきビデオブロックにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット44は、フルピクセル位置と分数ピクセル位置とに対する動き探索を実施し、分数ピクセル精度で動きベクトルを出力し得る。
[0184]動き推定ユニット44は、ビデオブロックの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされた(インター予測コーディングされた)スライスにおけるビデオブロックについての動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(RefPicList0)または第2の参照ピクチャリスト(RefPicList1)から選択され得、それらの参照ピクチャリストの各々は、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット44は、計算された動きベクトルを、エントロピー符号化ユニット56と動き補償ユニット46とに送る。
[0185]動き補償ユニット46によって実行される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によってはサブピクセル精度への補間を実行することを伴い得る。現在のビデオブロックの動きベクトルを受信すると、動き補償ユニット46は、動きベクトルが参照ピクチャリストのうちの1つにおいて指す予測ブロックの位置を特定し得る。ビデオエンコーダ20は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって残差ビデオブロックを形成する。ピクセル差分値は、ブロックの残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。動き補償ユニット46はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するための、ビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0186]イントラ予測ユニット48は、上記で説明したように、動き推定ユニット44と動き補償ユニット46とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット48は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット48は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット48(または、いくつかの例では、モード選択ユニット)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。たとえば、イントラ予測ユニット48は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択することができる。レートひずみ分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット48は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化されたブロックのひずみおよびレートから比率を計算し得る。
[0187]いずれの場合も、ブロックのイントラ予測モードを選択した後に、イントラ予測ユニット48は、ブロックについての選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供し得る。エントロピー符号化ユニット56は、本開示の技法に従って、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、送信ビットストリーム中に、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々のために使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを含み得る。
[0188]予測処理ユニット42が、インター予測またはイントラ予測のいずれかを介して、現在のビデオブロックのための予測ブロックを生成した後、ビデオエンコーダ20は、現在のビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロックにおける残差ビデオデータは、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換のような変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
[0189]変換処理ユニット52は、得られた変換係数を量子化処理ユニット54に送り得る。量子化処理ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化処理ユニット54は、次いで、量子化変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
[0190]量子化の後に、エントロピー符号化ユニット56は、量子化変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピー符号化方法もしくは技法を実施し得る。エントロピー符号化ユニット56によるエントロピー符号化の後に、符号化ビットストリームは、ビデオデコーダ30に送信されるか、またはビデオデコーダ30が後で送信するかもしくは取り出すためにアーカイブされ得る。エントロピー符号化ユニット56はまた、コード化されている現在のビデオスライスのための動きベクトルと他のシンタックス要素とをエントロピー符号化し得る。
[0191]逆量子化処理ユニット58および逆変換処理ユニット60は、それぞれ逆量子化および逆変換を適用して、参照ピクチャの参照ブロックとして後で使用するために、ピクセル領域において残差ブロックを再構成する。動き補償ユニット46は、残差ブロックを参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット46はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、再構成された残差ブロックを動き補償ユニット46によって生成された動き補償予測ブロックに加算して、参照ピクチャメモリ64に記憶するための参照ブロックを生成する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動き推定ユニット44および動き補償ユニット46によって参照ブロックとして使用され得る。
[0192]このようにして、ビデオエンコーダ20は、本開示で説明する1つまたは複数の例示的な技法を実装するように構成されたビデオエンコーダの一例である。たとえば、ビデオデータメモリ40は、ビデオデータを記憶する。ビデオデータは、従属ビューのテクスチャビデオ成分と、テクスチャビュー成分に対応する深度ビュー成分とを含み得、それらの各々を、ビデオエンコーダ20は、3D−AVC準拠ビデオコーディングプロセスにおいて符号化することになる。
[0193]本開示で説明する技法では、ビデオエンコーダ20は、3D−AVC準拠ビデオコーディングプロセスにおいて、ビデオデータの従属ビューのテクスチャビュー成分を符号化するように構成された1つまたは複数のプロセッサを含み得る。上記で説明したように、3D−AVCにおける各ビューは、テクスチャビュー成分と深度ビュー成分とを含む。3D−AVCにおいて1つのベースビューと1つまたは複数のエンハンスメントビューまたは従属ビューとが存在し、ここで、1つまたは複数のエンハンスメントビューまたは従属ビューのテクスチャビュー成分は、ビュー間予測され得る。
[0194]テクスチャビュー成分を符号化するために、ビデオエンコーダ20は、少なくとも1つの隣接ブロックが、従属ビュー以外のビュー内のビュー間参照ピクチャを指す視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、テクスチャビュー成分内の現在のマクロブロックの1つまたは複数の隣接ブロックの動き情報を評価するように構成され得る。いくつかの例では、ビデオエンコーダ20は、第1の参照ピクチャリスト(RefPicList0)を指す動きベクトルを用いて隣接ブロックの動き情報を評価し、第2の参照ピクチャリスト(RefPicList1)を指す動きベクトルを用いて隣接ブロックの動き情報を評価することを回避することができる。
[0195]隣接ブロックは、空間的隣接ブロックおよび時間的隣接ブロックである。時間的隣接ブロックは、第1の選択されたピクチャおよび第2の選択されたピクチャのうちの少なくとも一方の中にあり得る。第1の選択されたピクチャは、第1の参照ピクチャリスト(RefPicList0)のエントリ0(インデックス0)内で識別されるピクチャである。第2の選択されたピクチャは、第2の参照ピクチャリスト(RefPicList1)のエントリ0(インデックス0)内で識別されるピクチャである。ビデオエンコーダ20が評価する最大4つまでの空間的隣接ブロックが存在し得、ここで、4つの空間的隣接ブロックのうちの3つは、H.264/AVCビデオコーディング規格における動き予測において使用されるのと同じ隣接ブロックである。
[0196]ビデオエンコーダ20は、隣接ブロックのうちの1つに対する視差動きベクトルに基づいて現在のマクロブロックに対する視差ベクトルを導出し得る。ビデオエンコーダ20は、現在のマクロブロックに対する導出された視差ベクトルを現在のマクロブロック内のブロックに割り当てる。テクスチャ優先のコーディングに対して、ビデオエンコーダ20は、テクスチャビュー成分を符号化することに続いて、テクスチャビュー成分に対応する、ビデオデータの深度ビュー成分を符号化し得る。
[0197]一例として、ビデオエンコーダ20は、候補時間的ピクチャを選択し得、これらの候補時間的ピクチャのうちの1つの中の時間的ブロックを評価し得る。たとえば、ビデオエンコーダ20は、第1の参照ピクチャリスト(たとえば、RefPicList0)の第1のエントリ(たとえば、エントリ0)内で識別されるピクチャである第1の時間的ピクチャを選択し得、第2の参照ピクチャリスト(たとえば、RefPicList1)の第1のエントリ(たとえば、エントリ0)内で識別されるピクチャである第2の時間的ピクチャを選択し得る。1つまたは複数の隣接ブロックは、第1の選択された時間的ピクチャまたは第2の選択された時間的ピクチャのうちの少なくとも一方の中の、少なくとも1つの時間的隣接ブロックを含む。いくつかの例では、1つの時間的隣接ブロック(たとえば、右下ブロック)だけが存在し得る。
[0198]別の(上記の例との組合せで、または単独で使用され得る)例として、ビデオエンコーダ20は、少なくとも1つの隣接ブロックが、視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、2つの参照ピクチャリストのうちの第1の参照ピクチャリスト(たとえば、RefPicList0)を指す動きベクトルを有する1つまたは複数の隣接ブロックだけの動き情報を評価し得る。これらの例では、ビデオエンコーダ20は、少なくとも1つの隣接ブロックが、視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、2つの参照ピクチャリストのうちの第2の参照ピクチャリスト(たとえば、RefPicList1)を指す動きベクトルを有する1つまたは複数の隣接ブロックの動き情報の評価を回避し得る。
[0199]いくつかの例では、ビデオエンコーダ20の予測処理ユニット42は、本開示で説明する例を実装するように構成されたプロセッサの一例であり得る。いくつかの例では、予測処理ユニット42以外のユニット(たとえば、1つまたは複数のプロセッサ)が、上記で説明した例を実装し得る。いくつかの例では、予測処理ユニット42は、ビデオエンコーダ20の1つまたは複数の他のユニットとともに、上記で説明した例を実装し得る。いくつかの例では、ビデオエンコーダ20のプロセッサ(図2に示さず)は、単独で、またはビデオエンコーダ20の他のプロセッサとともに、上記で説明した例を実装し得る。
[0200]図3は、本開示で説明する技法を実装し得るビデオデコーダの一例を示すブロック図である。たとえば、ビデオデコーダ30は、インター予測復号またはイントラ予測復号を実行することができる。図3は、ビデオデコーダ30を示す。図3の例では、ビデオデコーダ30は、ビデオデータメモリ69と、エントロピー復号ユニット70と、予測処理ユニット71と、逆量子化処理ユニット76と、逆変換処理ユニット78と、加算器80と、参照ピクチャメモリ82とを含む。予測処理ユニット71は、動き補償ユニット72と、イントラ予測ユニット74とを含む。ビデオデコーダ30は、いくつかの例では、図2からのビデオエンコーダ20に関して説明した符号化パスとは概して逆の復号パスを実行し得る。
[0201]ビデオデータメモリ69は、ビデオデコーダ30の構成要素によって復号されるために、符号化されたビデオビットストリームなど、(たとえば、ビデオデータを記憶するように構成された)ビデオデータを記憶し得る。ビデオデータメモリ69内に記憶されたビデオデータは、たとえば、ストレージデバイス34から、ビデオデータのワイヤードもしくはワイヤレスネットワーク通信を介してまたは物理的データ記憶媒体にアクセスすることによってカメラなどのローカルビデオソースから、取得され得る。ビデオデータメモリ69は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶するコーディングされたピクチャバッファ(CPB)を形成し得る。
[0202]参照ピクチャメモリ82は、ビデオデコーダ30によってビデオデータを(たとえば、イントラコーディングモードまたはインターコーディングモードにおいて)復号するのに使用するための参照ビデオデータを記憶する復号されたピクチャバッファ(DPB)の一例である。ビデオデータメモリ69および参照ピクチャメモリ82は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスを含むダイナミックランダムアクセスメモリ(DRAM)など、多様なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ69および参照ピクチャメモリ82は、同じメモリデバイスまたは個別のメモリデバイスによって設けられ得る。様々な例では、ビデオデータメモリ69は、ビデオデコーダ30の他の構成要素とのオンチップであってよく、またはそれらの構成要素に対してオフチップであってもよい。
[0203]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化されたビデオスライスのビデオブロックと、関連付けられるシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化係数と、動きベクトルと、他のシンタックス要素とを生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと他のシンタックス要素とを予測処理ユニット71に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[0204]ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、予測処理ユニット71のイントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコーディングされた(すなわち、B、またはP)スライスとしてコーディングされるとき、予測処理ユニット71の動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82に記憶された参照ピクチャに基づいて、デフォルト構成技法を使用して参照ピクチャリスト(RefPicList0およびRefPicList1)を構成し得る。
[0205]動き補償ユニット72は、動きベクトルと他のシンタックス要素とをパースすることによって現在ビデオスライスのビデオブロックのための予測情報を決定し、その予測情報を使用して、復号されている現在のビデオブロックのための予測ブロックを生成する。たとえば、動き補償ユニット72は、受信されたシンタックス要素のうちのいくつかを使用して、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)と、スライスの参照ピクチャリストのうちの1つまたは複数についての構成情報と、スライスの各インター符号化されたビデオブロックについての動きベクトルと、スライスの各インターコーディングされたビデオブロックについてのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを判断する。
[0206]動き補償ユニット72はまた、補間フィルタに基づいて補間を実行し得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルの補間値を計算し得る。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
[0207]逆量子化処理ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された、量子化変換係数を逆量子化(inverse quantize)、(すなわち、逆量子化(de-quantize))する。逆量子化プロセスは、量子化の程度を決定するために、同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライス中の各ビデオブロックについてビデオエンコーダ20によって計算される量子化パラメータを使用することを含み得る。逆変換処理ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換(たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセス)を変換係数に適用する。
[0208]動き補償ユニット72が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックのための予測ブロックを生成した後に、ビデオデコーダ30は、逆変換処理ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために復号されたブロックをフィルタ処理するデブロッキングフィルタも適用され得る。ピクセル遷移を平滑化するために、または場合によってはビデオ品質を改善するために、(コーディングループ内またはコーディングループ後のいずれかの)他のループフィルタも使用され得る。次いで、所与のピクチャ中の復号されたビデオブロックは、その後の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ82に記憶される。参照ピクチャメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上に後で提示するために、復号されたビデオを記憶する。
[0209]このようにして、ビデオデコーダ30は、本開示で説明する1つまたは複数の例示的な技法を実装するように構成されたビデオデコーダの一例である。たとえば、ビデオデータメモリ69は、ビデオデータを記憶する。ビデオデータは、ビデオデコーダ30が従属ビューのテクスチャビデオ成分とテクスチャビュー成分に対応する深度ビュー成分とを復号し得る情報を含み得、それらの各々を、ビデオエンコーダ20は3D−AVC準拠ビデオコーディングプロセスにおいて符号化される。
[0210]本開示で説明する技法では、ビデオデコーダ30は、3D−AVC準拠ビデオコーディングプロセスにおいて、ビデオデータの従属ビューのテクスチャビュー成分を復号するように構成された1つまたは複数のプロセッサを含み得る。テクスチャビュー成分を復号するために、ビデオデコーダ30は、少なくとも1つの隣接ブロックが、従属ビュー以外のビュー内のビュー間参照ピクチャを指す視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、テクスチャビュー成分内の現在のマクロブロックの1つまたは複数の隣接ブロックの動き情報を評価するように構成され得る。いくつかの例では、ビデオデコーダ30は、第1の参照ピクチャリスト(RefPicList0)を指す動きベクトルを用いて隣接ブロックの動き情報を評価し、第2の参照ピクチャリスト(RefPicList1)を指す動きベクトルを用いて隣接ブロックの動き情報を評価することを回避することができる。
[0211]隣接ブロックは、空間的隣接ブロックおよび時間的隣接ブロックである。時間的隣接ブロックは、第1の選択されたピクチャおよび第2の選択されたピクチャのうちの少なくとも一方の中にあり得る。第1の選択されたピクチャは、第1の参照ピクチャリスト(RefPicList0)のエントリ0(インデックス0)内で識別されるピクチャである。第2の選択されたピクチャは、第2の参照ピクチャリスト(RefPicList1)のエントリ0(インデックス0)内で識別されるピクチャである。ビデオデコーダ30が評価する最大4つまでの空間的隣接ブロックが存在し得、ここで、4つの空間的隣接ブロックのうちの3つは、H.264/AVCビデオコーディング規格における動き予測において使用されるのと同じ隣接ブロックである。
[0212]ビデオデコーダ30は、隣接ブロックのうちの1つに対する視差動きベクトルに基づいて現在のマクロブロックに対する視差ベクトルを導出し得る。ビデオデコーダ30は、現在のマクロブロックに対する導出された視差ベクトルを現在のマクロブロック内のブロックに割り当て得る。テクスチャ優先のコーディングに対して、ビデオデコーダ30は、テクスチャビュー成分を復号することに続いて、テクスチャビュー成分に対応する、ビデオデータの深度ビュー成分を復号し得る。
[0213]一例として、ビデオデコーダ30は、候補時間的ピクチャを選択し得、これらの候補時間的ピクチャのうちの1つの中の時間的ブロックを評価し得る。たとえば、ビデオデコーダ30は、第1の参照ピクチャリスト(たとえば、RefPicList0)の第1のエントリ(たとえば、エントリ0)内で識別されるピクチャである第1の時間的ピクチャを選択し得、第2の参照ピクチャリスト(たとえば、RefPicList1)の第1のエントリ(たとえば、エントリ0)内で識別されるピクチャである第2の時間的ピクチャを選択し得る。1つまたは複数の隣接ブロックは、第1の選択された時間的ピクチャまたは第2の選択された時間的ピクチャのうちの少なくとも一方の中の、少なくとも1つの時間的隣接ブロックを含む。いくつかの例では、1つの時間的隣接ブロック(たとえば、右下ブロック)だけが存在し得る。
[0214]別の(上記の例との組合せで、または単独で使用され得る)例として、ビデオデコーダ30は、少なくとも1つの隣接ブロックが、視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、2つの参照ピクチャリストのうちの第1の参照ピクチャリスト(たとえば、RefPicList0)を指す動きベクトルを有する1つまたは複数の隣接ブロックだけの動き情報を評価し得る。これらの例では、ビデオデコーダ30は、少なくとも1つの隣接ブロックが、視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、2つの参照ピクチャリストのうちの第2の参照ピクチャリスト(たとえば、RefPicList1)を指す動きベクトルを有する1つまたは複数の隣接ブロックの動き情報の評価を回避し得る。
[0215]いくつかの例では、ビデオデコーダ30の予測処理ユニット71は、本開示で説明する例を実装するように構成されたプロセッサの一例であり得る。いくつかの例では、予測処理ユニット71以外のユニット(たとえば、1つまたは複数のプロセッサ)が、上記で説明した例を実装し得る。いくつかの例では、予測処理ユニット71は、ビデオデコーダ30の1つまたは複数の他のユニットとともに、上記で説明した例を実装することができる。さらにいくつかの他の例では、ビデオデコーダ30のプロセッサ(図3に示さず)は、単独で、またはビデオデコーダ30の他のユニットとともに、上記で説明した例を実装することができる。
[0216]以下は、ビデオエンコーダ20およびビデオデコーダ30が、上記で説明され、簡潔のためにビデオコーダで説明された技法を実装し得る例示的な方式を説明し、ここで、ビデオコーダは、コンテキストに基づいてビデオエンコーダ20またはビデオデコーダ30であり得る。本開示で説明する技法は、特定の例示的な実装形態のいずれかに限定されると見なされるべきではない。技法のうちのいずれかは、視差ベクトル導出のための他の技法のうちの1つまたは複数と組み合わされ得る。技法の各態様は、1つの完全な技法に組み合わされ得る。
[0217]最初に、ビデオコーダは、1つまたは複数の時間的ピクチャを決定し得る。各時間的ピクチャに対して、ビデオコーダは、ブロック位置によってあらかじめ規定されている、1つまたは複数の決定された時間的隣接ブロックを検査(たとえば、評価)し得る。たとえば、ビデオコーダは、参照ピクチャリスト内の1つまたは複数のピクチャとなるべき時間的ピクチャを決定し得る。各時間的ピクチャは、現在ピクチャと同じビューに属することを必要とされ得る。
[0218]一例では、ビデオコーダは、暗黙的導出技法を使用して時間的ピクチャを決定し得る。以下では、ビデオコーダは、2つまでの時間的ピクチャ、tempPic[0]とtempPic[1]とを決定する。
[0219]時間的ピクチャを暗黙的に決定する一例として、RefPicList0およびRefPicList1における第1のエントリが使用され、2つまでの時間的ピクチャが使用される。一例では、現在のスライスがPスライスであるとき、RefPicList0[0]が唯一の時間的ピクチャであり、現在のスライスがBスライスであるとき、RefPicList0[0]が第1の時間的ピクチャであり、RefPicList1[0]が第2の時間的ピクチャである。別の例として、RefPicList1[0]は第1の時間的ピクチャであり、RefPicList0[0]は第2の時間的ピクチャである。さらに別の例として、参照ピクチャリスト内またはDPB(復号されたピクチャバッファ)内の任意の2つの時間的参照ピクチャが、時間的ピクチャとして選択され得る。
[0220]時間的ピクチャを暗黙的に決定する別の例として、ビデオコーダは、H.264/AVC時間的直接モードにおいて使用されるように、コロケートされたピクチャ(すなわち、RefPicList1[0])を第1の時間的ピクチャとして選択し得る。ビデオコーダは、第2の時間的ピクチャを、第2の時間的ピクチャがより多くの視差動きベクトルを含む可能性が高い方法で選択する。
[0221]以下は、時間的ピクチャを暗黙的に決定する例を説明する。
i=0;
現在のスライスタイプがBである場合、tempPic[i]=RefPicList1[0]、i++;
tempPic[i]は以下のように導出される:
RefPicList0またはRefPicList1における各ピクチャPicに対して、Picがアンカピクチャである場合、tempPic[i]=Pic、リターン;
利用可能な場合、RefPicList0およびRefPicList1におけるピクチャに対して、tempPic[i]は、最低のtemporal_idを有するピクチャに設定される。同じtemporal_idを有する複数のピクチャが存在する場合、tempPic[i]は、現在ピクチャに対してより小さいPOC差分を有するピクチャとなるように設定される。代替として、RefPicList1が利用可能であるときでも、RefPicList1内のピクチャはこのステップにおいて考慮されない。
[0222]別の例として、temporal_idは、以下のように、導出プロセスの途中では考慮されない:
i=0;
現在のスライスタイプがBである場合、tempPic[i]=RefPicList1[0]、i++;
tempPic[i]は以下のように導出される:
RefPicList0またはRefPicList1内の各ピクチャPicに対して、Picがアンカピクチャである場合、tempPic[i]=Pic、リターン;
現在のスライスがPスライスである場合、RefPicList0内のピクチャに対して、tempPic[i]は、現在ピクチャに対して最小のPOC差分を有するピクチャを有するピクチャに設定される。
現在のスライスがBスライスである場合、tempPic[i]が、現在ピクチャに対して最小のPOC差分を有するピクチャを有するピクチャとなるように設定される方法で、RefPicList0内のピクチャを検査し、続いて、RefPicList1内のピクチャを検査する。
[0223]いくつかの例では、時間的ピクチャの暗黙的導出の代わりに、明示的導出が可能である。たとえば、時間的ピクチャの数および時間的ピクチャが、ビデオデコーダ30が受信する、ビデオエンコーダ20によって設定されるスライスヘッダまたはピクチャパラメータの中で明示的に通知され得る。一例では、1つの時間的ピクチャだけが明示的に通知される。
[0224]一例では、ビデオコーダは、第1の時間的ピクチャは、常に、Bスライスに対してRefPicList1[0]およびPスライスに対してRefPicList0[0]となるべきであることを決定し得る。この例では、第2の時間的ピクチャは、ビデオエンコーダ20によって通知され、スライスヘッダ内でref_idx_temp_picとしてビデオデコーダ30によって受信され、第2の時間的ピクチャは、RefPicList0[ref_idx_temp_pic]となるように導出される。別の例では、第2の時間的ピクチャは利用可能ではなく、したがってPスライスに対して通知されない。別の例では、両参照インデックス値は、インデックスref_idx_temp_pic0およびref_idx_temp_pic1として通知され、時間的ピクチャは、RefPicList0[ref_idx_temp_pic0]およびRefPicList0[ref_idx_temp_pic1]として識別される。別の例では、両参照インデックス値は、インデックスref_idx_temp_pic0およびref_idx_temp_pic1として通知され、時間的ピクチャは、RefPicList0[ref_idx_temp_pic0]およびRefPicList1[ref_idx_temp_pic1]として識別される。
[0225]追加の例として、両参照インデックス値は、インデックスref_idx_temp_pic0およびref_idx_temp_pic1として通知される。しかしながら、Bスライスに対して、現在のスライスがBスライスである場合、1つの追加のフラグlist0_flag0およびlist0_flag1(Pスライスに対して0であると推察される)が通知され、時間的ピクチャは、RefPicListX0[ref_idx_temp_pic0]およびRefPicListX1[ref_idx_temp_pic1]、X0およびX1は、それぞれlist0_flag0およびlist0_flag1に等しい、として識別される。
[0226]決定された時間的ピクチャによって、ビデオコーダは、隣接ブロックが視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、時間的にコロケートされたブロック位置の動き情報を評価し得る。基本的には、時間的にコロケートされたマクロブロックのあらかじめ規定された4×4ブロックは、視差動きベクトルを探索するために検査される。
[0227]図4A〜図4Hは、視差ベクトル導出のために検査される時間的にコロケートされたマクロブロック(MB)に対する例示的なブロック位置を示す。図4Aに示すように、ブロック位置は、4隅のブロックおよび中心ブロックなどのマクロブロックの内部、またはさらに右下ブロックなどのマクロブロックの外部であり得る。代替として、しかしながら、位置は、配列されたMB内の任意の4×4ブロックおよびMBの外部の任意の隣接ブロックであり得る。代替として、しかしながら、すべての可能な位置の中のいくつかの選択的な位置が、複雑さを低減するために使用され得る。
[0228]図4Bにおいて、中心位置およびMBの外部の右下の位置だけが考慮され得る。図4Cにおいて、中心位置およびMBの内部の右下隅の位置だけが考慮され得る。図4Dにおいて、中心位置およびMBの内部の左下隅の位置だけが考慮され得る。図4Eにおいて、MBの内部の右下隅の位置および左下隅の位置が考慮され得る。図4Fにおいて、中心位置および下の行の2つの隅の位置が考慮され得る。図4Gにおいて、中心、内部の左下隅ブロック、およびMBの外部の右下ブロックが考慮され得る。
[0229]いくつかの例では、ブロック候補のうちの1つが利用可能でない場合(たとえば、ピクチャの境界の外)、位置は、別の位置で置き換えられる。たとえば、図4Hにおいて、MBの外部の右下ブロックの位置が利用可能でない場合、右下隅の位置が検査される。
[0230]いくつかの例では、位置は、一定の条件によって変化することがある。たとえば、現在のMBとコロケートされたMBとの間で著しい動きの変化がある場合、位置は、動きにつれて相応に変更され得る。検査の順序は、検査されるべきブロック位置の任意の並べ替えられた順序であってよい。
[0231]上記は、時間的ブロックを評価するための例を説明した、以下は、空間的ブロックを評価するための実装形態を説明する。例は、これらのブロックのいずれかが、視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、ビデオコーダが検査する空間的ブロックを示す。
[0232]図5A〜図5Dは、視差ベクトル導出のために検査される空間的に隣接するマクロブロックに対する例示的なブロック位置を示す。時間的にコロケートされたブロックと同様にして、現在コーディングされたMBに対するあらかじめ規定された4×4空間的隣接ブロックが、同じく存在する。図5A〜図5Dに示すように、ブロック位置A、B、CおよびDが、視差動きベクトルを見つけ出すために検査されるが、他の組合せおよび並べ替えが可能である。
[0233]図5Aにおいて、ブロック位置A、B、およびCが、視差動きベクトルを見つけ出すために検査される。位置Cが利用可能でない(たとえば、ピクチャの境界の外)場合、位置Dが考慮される。いくつかの例では、現在のMBのすべての行および列の中の任意の隣接位置が、位置A、B、C、およびDの上部で考慮され得る。いくつかの例では、行および列の中の任意の選択的な位置が考慮され得る。
[0234]図5Bにおいて、ブロック位置AおよびBが考慮され得る。図5Cにおいて、ブロック位置AおよびCが考慮され得、いくつかの例では、位置Cにおけるブロックが利用可能でない場合、ブロック位置CがDで置き換えられ得る。図5Dにおいて、MBの上の行におけるブロック位置が考慮され得る。加えて、選択されたブロック位置における任意の並べ替えられた順序が、探索プロセスにおいて適用され得る。
[0235]上記は、これらの隣接ブロックのいずれかが、NBDV(隣接ブロックベースの視差ベクトル)導出技法において視差ベクトル導出のためにビュー間予測されるかどうかを決定するために、その動き情報が評価する空間的および空間的隣接体の例を説明した。以下は、NBDV導出技法が終了される時点(すなわち、ビデオコーダが、視差ベクトルを導出するために隣接ブロックの動き情報を評価することを停止する時点)の例を説明する。
[0236]一般に、ビデオコーダが視差動きベクトルを識別すると、ビデオコーダは、動き情報を評価することを停止する。しかしながら、いくつかの例では、その水平成分が0に等しくない視差動きベクトルは、終了条件と見なされない。言い換えれば、隣接ブロックが視差動きベクトルを用いてビュー間予測されるとしても、視差動きベクトルの水平成分が0に等しくない場合、ビデオコーダは、隣接ブロックの動き情報を評価し続けることができる。
[0237]いくつかの例では、終了条件は、ビデオがゼロの視差動きベクトルを識別した時点であり得る。いくつかの例では、ビデオは、複数の視差動きベクトル候補を識別することがあり、その場合は、1つが視差ベクトルになるようにフィルタリングを適用する。いくつかの例では、視差動きベクトルが発見されない場合、ビデオコーダは、動きベクトル予測に対してゼロの視差ベクトルを使用するか、または視差ベクトルに応じて他のコーディングツールを使用する。
[0238]以下は、動きベクトル予測の実装例を説明する。たとえば、以下は、通常のインターモードならびにスキップモードおよび直接モードに対するNBDVベースの動きベクトル予測についての詳細な実施態様を提供する。この例では、D−MVPプロセスと、スキップモードおよび直接モードに対するビュー間動き予測の両方の間に、視差動きベクトルが隣接ブロックに対して利用不可能であるときに、視差動きベクトルはNBDV導出結果から変換される。時間的予測に対するD−MVPプロセスの間に、参照ブロックを識別するために使用される視差ベクトルは、NBDV結果となるように設定される。以下は、3D−AVCの以前のバージョンから削除された文言を識別するために下線とイタリック体とを使用し、変更を示す方法として、追加された文言を識別するために下線と太字体とを使用する。
[0239]以下は、ビュー間予測におけるD−MVPプロセスを用いるNBDV導出に対する擬似コードである。
J8.3 3DVCインター予測、ビュー間予測、ビュー合成予測、および適応型ルミナンス補償
...
関数Disparity(depthSample,srcIndex,refIndex)が、次のように規定されるdisparityValueを返すように規定される。
...
J8.3.1.8 メディアンルーマ動きベクトル予測に対する深度ベースの導出プロセス
...
パーティションmbAddrN\mbPartIdxN\subMbPartIdxNが利用可能でないかまたはrefIdxLXNがrefIdxLXに等しくないかのいずれかであるとき、mvLXNが、以下の順序付けられたステップによって規定されるように導出される:
1.サブクローズ6.4.1に規定される逆マクロブロック走査プロセスは、CurrMbAddrを入力として起動され、出力は(x1、y1)に割り当てられる。
2.サブクローズ6.4.2.1に規定される逆マクロブロックパーティション走査プロセスは、mbPartIdxを入力として起動され、出力は(dx1、dy1)に割り当てられる。
3.サブクローズ6.4.2.2に規定される逆サブマクロブロックパーティション走査プロセスは、mbPartIdxおよびsubMbPartIdxを入力として起動され、出力は(dx2、dy2)に割り当てられる。
4.サブクローズJ.8.3.1.8.1に規定されるメディアンルーマ動きベクトル予測におけるビュー間動きベクトルの修正プロセスは、DepthRefPicList0[refIdxL0]に等しいdepthPic、x1+dx1+dx2に等しいdbx1、y1+dy1+dy2に等しいdby1、およびmvL0に等しいmvを入力として起動され、出力が動きベクトルmvLXNに割り当てられる。
動きベクトル予測mvpLXの各成分が、動きベクトルmvLXA、mvLXB、およびmvLXCの対応するベクトル成分のメディアンによって与えられる:
J8.3.1.8.1 メディアンルーマ動きベクトル予測におけるビュー間動きベクトルに対する修正プロセス
refViewIdをdepthPicのview_id値にする。
以下の順序のステップが適用される:
1.変数maxDepthは次のように規定される。
実施形態#1に規定されるようにNBDVプロセスを起動して、出力された視差ベクトルtempDVが次のように設定される。
[0240]以下は、時間的予測におけるD−MVPプロセスを用いるNBDVに対する擬似コードである。
J8.3 3DVCインター予測、ビュー間予測、ビュー合成予測、および適応型ルミナンス補償
...
関数Disparity(depthSample,srcIndex,refIndex)が、次のように規定されるdisparityValueを返すように規定される。
...
J8.3.1.9 メディアンルーマ時間的動きベクトル予測に対する深度ベースの導出プロセス
...
パーティションmbAddrN\mbPartIdxN\subMbPartIdxNが利用可能でないかまたはrefIdxLXNがrefIdxLXに等しくないかのいずれかであるとき、mvLXNが、以下の順序付けられたステップによって規定されるように導出される:
1.サブクローズ6.4.1に規定される逆マクロブロック走査プロセスが、CurrMbAddrを入力として起動され、出力が(x1、y1)に割り当てられる。
2.サブクローズ6.4.2.1に規定される逆マクロブロックパーティション走査プロセスが、mbPartIdxを入力として起動され、出力が(dx1、dy1)に割り当てられる。
3.サブクローズ6.4.2.2に規定される逆サブマクロブロックパーティション走査プロセスが、mbPartIdxおよびsubMbPartIdxを入力として起動され、出力が(dx2、dy2)に割り当てられる。
4.サブクローズJ.8.3.1.9.1に規定されるプロセスは、DepthCurrPicに設定されたdepthPic、x1+dx1+dx2に設定されたdbx1、y1+dy1+dy2に設定されたdby1、およびlistSuffixFlagを入力として、ならびにInterViewPic、オフセットベクトルdv、および変数InterViewAvailableを出力として起動される。
5.refIdxCorrespondおよびmvCorrespondは、次のように設定される。
...
J.8.3.1.9.1 視差ベクトルおよびビュー間参照に対する導出プロセス
このプロセスに対する入力は、深度参照ビュー成分depthPicと、パーティションの左上のサンプルのロケーション(dbx1、dby1)と、listSuffixFlagとである。
このプロセスの出力は、ピクチャInterViewPicと、オフセットベクトルdvと、変数InterViewAvailableとである。
変数InterViewAvailableは、0に等しく設定される。
以下は、ビュー間参照ピクチャまたはビュー間オンリー参照ピクチャ、InterViewPicを導出するために適用され、Xは、listFuffixFlagが1のときに1に設定され、そうでないときに0に設定される。
InterViewAvailableが1に等しいとき、以下のステップが順番に適用される。
実施形態#1に規定されるようにNBDVプロセスを起動して、出力された視差ベクトルtempDVが次のように設定される。
[0241]以下は、ビュー間動き予測を用いるNBDVに対する擬似コードである。
J8.3 3DVCインター予測、ビュー間予測、ビュー合成予測、および適応型ルミナンス補償
...
関数Disparity(depthSample,srcIndex,refIndex)が、次のように規定されるdisparityValueを返すように規定される。
...
J.8.3.1.4 視差ベクトルおよびビュー間参照に対する導出プロセス
...
DvAvailable[0]+DvAvailable[1]+DvAvailable[2]が1に等しい場合、以下が適用される。
− そうでない場合には、以下のステップが順番に適用される。
− 変数dispVectorは次のように規定される。
− 実施形態#1に規定されるようにNBDVプロセスを起動して、出力された視差ベクトルtempDVが次のように設定される。
[0242]以下は、NBDVから導出された視差ベクトルが、ビュー間予測ならびに/または直接モードおよびスキップモードに直接使用されるときの、NBDVベースの動きベクトル予測の詳細な実装形態の別の例を提供する。この実装形態では、視差ベクトルは、NBDVからの視差ベクトルから変換され、メディアンフィルタリングはスキップされる。代わりに、視差動きベクトルが、動きベクトル予測になる。
[0243]以下は、ビュー間予測におけるD−MVPに対するNBDVの直接使用に対する擬似コードを提供する。
J8.3.1.8 メディアンルーマ動きベクトル予測に対する深度ベースの導出プロセス
...
パーティションmbAddrN\mbPartIdxN\subMbPartIdxNが利用可能でないかまたはrefIdxLXNがrefIdxLXに等しくないかのいずれかであるとき、mvLXNが、以下の順序付けられたステップによって規定されるように導出される。
1.サブクローズ6.4.1に規定される逆マクロブロック走査プロセスが、CurrMbAddrを入力として起動され、出力が(x1、y1)に割り当てられる。
2.サブクローズ6.4.2.1に規定される逆マクロブロックパーティション走査プロセスが、mbPartIdxを入力として起動され、出力が(dx1、dy1)に割り当てられる。
3.サブクローズ6.4.2.2に規定される逆サブマクロブロックパーティション走査プロセスが、mbPartIdxおよびsubMbPartIdxを入力として起動され、出力が(dx2、dy2)に割り当てられる。
4.サブクローズJ.8.3.1.8.1に規定されるメディアンルーマ動きベクトル予測におけるビュー間動きベクトルの修正プロセスは、DepthRefPicList0[refIdxL0]に等しいdepthPic、x1+dx1+dx2に等しいdbx1、y1+dy1+dy2に等しいdby1、およびmvL0に等しいmvを入力として起動され、出力が動きベクトルmvLXNに割り当てられる。
動きベクトル予測mvpLXの各成分が、動きベクトルmvLXA、mvLXB、およびmvLXCの対応するベクトル成分のメディアンによって与えられる。
− 実施形態#1に規定されるようにNBDVプロセスを起動して、視差ベクトルをtempDVに記憶する。
[0244]以下は、スキップ/直接モードにおけるビュー間動きベクトル予測に対するNBDVの直接使用のための擬似コードを提供する。
J.8.3.1.4 視差ベクトルおよびビュー間参照に対する導出プロセス
InterViewAvailableを0に等しく設定する。
以下は、ビュー間参照ピクチャまたはビュー間オンリー参照ピクチャ、InterViewPicを導出するために適用される。
InterViewAvailableが1に等しいとき、以下のステップが順番に適用される。
− サブクローズ8.4.1.3.2に規定されるプロセスが、0に等しく設定されたmbPartIdx、0に等しく設定されたsubMbPartIdx、「na」に等しく設定されたcurrSubMbType、および0に等しく設定されたlistSuffixFlagを入力とし、ならびに参照インデックスrefIdxCandL0[i]および動きベクトルmvCandL0[i]を出力とし、隣接するパーティションA、BおよびCに対応してiがそれぞれ、0、1および2に等しい状態で起動される。
− サブクローズ8.4.1.3.2に規定されるプロセスが、0に等しく設定されたmbPartIdx、0に等しく設定されたsubMbPartIdx、「na」に等しく設定されたcurrSubMbType、および1に等しく設定されたlistSuffixFlagを入力とし、ならびに参照インデックスrefIdxCandL1[i]および動きベクトルmvCandL1[i]を出力とし、隣接するパーティションA、BおよびCに対応してiが、それぞれ0、1および2に等しい状態で起動される。
− 変数dvは、以下の順序付けられたステップによって規定されるように導出される。
− 隣接するパーティションA、BおよびCのそれぞれに対応して0、1および2に等しいiを用いてDvAvailable[i]およびmvCand[i]を、次のように設定する。
− DvAvailable[0]+DvAvailable[1]+DvAvailable[2]が1に等しい場合、以下が適用される。
− そうでない場合には、以下のステップが順番に適用される。
− 変数dispVectorは次のように規定される。
− 0、1および2に等しいiの各値に対して、DvAvailable[i]が0に等しいとき、mvCand[i]は、dispVectorに設定される。
実施形態#1に規定されるようにNBDVプロセスを起動して、視差ベクトルをtempDVに記憶する。
[0245]上記で説明したように、いくつかの例では、ビデオコーダは、マクロブロックに対して一度NBDVプロセスを起動し得、すべてのパーティションは、同じ結果を共有する。いくつかの例では、ビデオコーダは、MBパーティションレベルにおいてNBDVプロセスを起動し得る。
[0246]図6Aおよび図6Bは、パーティションが8×16のときの、視差ベクトル導出のために検査されるマクロブロックパーティションに対する隣接ブロックの例示的なブロック位置を示す。特に、図6Aは、MBパーティションベースのNBDV導出における空間的隣接ブロックを示し、図6Bは、MBパーティションベースのNBDV導出における時間的隣接ブロックを示す。
[0247]いくつかの例では、時間的ブロックは、MBベースのNBDV導出の位置を追従する。いくつかの例では、空間的ブロックは、MBベースのNBDV導出の位置を追従する。いくつかの例では、NBDV導出プロセスは、サブMBパーティションにおいてまたはさらに4×4ブロックレベルにおいて起動され得、ブロック位置は適宜に変更され得る。
[0248]D−MVPにおいて(すなわち、動きベクトル予測において)、ビデオコーダは、サブMBパーティションレベルまたはMBパーティションレベルにおいて動きベクトル予測を起動し得る。一例として、ビデオコーダは、MBパーティションまたはサブMBパーティションにおけるあらゆるD−MVPプロセスにおいて、MBパーティションベースのNBDV導出を起動し得る。別の例として、ビデオコーダは、MBパーティションまたはサブMBパーティションにおけるあらゆるD−MVPプロセスにおいて起動し得る。
[0249]上記は、時間的ピクチャの導出の例と、NBDVおよび動き予測の一例と、ビュー間予測におけるD−MVPプロセスを用いるNBDV導出の一例と、時間的予測におけるD−MVPプロセスを用いるNBDV導出の一例と、ビュー間動き予測を用いるNBDV導出とを説明した。以下は、そのような技法のいくつかの追加の例を提供する。これらの例は、上記で説明した時間的ピクチャを導出するための技法の追加、または代わりである。言い換えれば、以下の技法は、個々に、または上記で説明した例のいずれかとともに使用され得る。
[0250]以下は、時間的ピクチャの導出に対する第1の追加の例である。いくつかの例では、時間的ピクチャは、現在ピクチャと同じアクセスユニットに属さないピクチャである。現在ピクチャがPスライスである場合、1つの時間的ピクチャだけが、RefPicList0[0]となるように導出される。現在ピクチャがBスライスである場合、2つの時間的ピクチャが、順番に、RefPicList1[0]およびRefPicList0[0]として導出される。
[0251]いくつかの例では、以下の代替の導出プロセスが適用され得る。現在ピクチャが、0に等しいtemporal_idを有する場合、1つの時間的ピクチャだけが、RefPicList0[0]となるように導出される。代替として、この場合の時間的ピクチャは、利用可能である場合はRefPicList1[0]であり得、RefPicList1[0]が利用不可能である場合はRefPicList0[0]であり得る。現在ピクチャが0より大きいtemporal_idを有する場合、2つの時間的ピクチャが、順番に、利用可能である場合にRefPicList1[0]および利用可能である場合にRefPicList0[0]として導出される。
[0252]いくつかの例では、以下の代替の導出プロセスが適用され得る。現在ピクチャがアンカピクチャを有する場合、1つの時間的ピクチャだけが、RefPicList0[0]となるように導出される。代替として、この場合の時間的ピクチャは、利用可能である場合はRefPicList1[0]であり得、RefPicList1[0]が利用不可能である場合はRefPicList0[0]であり得る。現在ピクチャが非アンカピクチャを有する場合、2つの時間的ピクチャが、順番に、利用可能である場合にRefPicList1[0]および利用可能である場合にRefPicList0[0]として導出される。
[0253]以下は、時間的ピクチャの導出に対する第2の追加の例である。時間的ピクチャの導出に対する第2の追加の例の技法は、時間的ピクチャの導出に対する第1の例と同様であり得る。しかしながら、現在ピクチャがアンカピクチャに属する場合、時間的ピクチャは導出されず、NBDV導出プロセスは、時間的隣接ブロックを検査しない(たとえば、NBDVプロセスは、常に、時間的隣接ブロックを検査しない)。
[0254]以下は、NBDV導出および動き予測に対する追加の例を説明する。この例示的な技法は、3D−AVCにおけるNBDV導出に対して上記で説明した例と同様であり得る。しかしながら、2つの代替のうちの1つは、NBDVプロセスの出力はブロックの視差動きベクトル(DMV)によって設定される視差ベクトル(DV)であると仮定して、適用される。
DV[1]は0に設定される、
DV[1]はDMV[1]に設定される。
[0255]ここで、NBDV導出プロセスは、全MBに対して起動されていることが仮定されている。同じく、NBDVに基づく動きベクトル予測に対して上記で説明したものと同様に、DVは、深度から変換された視差ベクトルを置き換えるために使用され、DVは、様々なインター予測モードの同じ方法においてさらに使用される。
[0256]以下は、ビュー間予測におけるD−MVPプロセスを用いるNBDV導出の別の例に対する擬似コードである。
J8.3 3DVCインター予測、ビュー間予測、ビュー合成予測、および適応型ルミナンス補償
ビュー間予測におけるD−MVPプロセスを用いるNBDVの第1の例に関して上記で説明したものと同じ。
J8.3.1.8.1 メディアンルーマ動きベクトル予測におけるビュー間動きベクトルに対する修正プロセス
refViewIdをdepthPicのview_id値にする。
以下の順序のステップが適用される:
3.変数maxDepthは次のように規定される。
[0257]以下は、時間的予測におけるD−MVPプロセスを用いるNBDVの別の例に対する擬似コードである。
J8.3 3DVCインター予測、ビュー間予測、ビュー合成予測、および適応型ルミナンス補償
時間的予測におけるD−MVPプロセスを用いるNBDVの第1の例において説明したものと同じ。
J8.3.1.9 メディアンルーマ時間的動きベクトル予測に対する深度ベースの導出プロセス
時間的予測におけるD−MVPプロセスを用いるNBDVの第1の例において説明したものと同じ。
J.8.3.1.9.1 視差ベクトルおよびビュー間参照に対する導出プロセス
このプロセスに対する入力は、深度参照ビュー成分depthPicと、パーティションの左上のサンプルのロケーション(dbx1、dby1)と、listSuffixFlagとである。
このプロセスの出力は、ピクチャInterViewPicと、オフセットベクトルdvと、変数InterViewAvailableとである。
変数InterViewAvailableは、0に等しく設定される。
以下は、ビュー間参照ピクチャまたはビュー間オンリー参照ピクチャ、InterViewPicを導出するために適用され、Xは、listFuffixFlagが1のときに1に設定され、そうでないときに0に設定される。
InterViewAvailableが1に等しいとき、以下のステップが順番に適用される。
[0258]以下は、ビュー間動き予測を用いるNBDVに対する追加の例に対する擬似コードである。
J8.3 3DVCインター予測、ビュー間予測、ビュー合成予測、および適応型ルミナンス補償
上記で説明したビュー間動き予測を用いるNBDVの第1の例において説明したものと同じ。
J.8.3.1.4 視差ベクトルおよびビュー間参照に対する導出プロセス
...
DvAvailable[0]+DvAvailable[1]+DvAvailable[2]が1に等しい場合、以下が適用される。
− そうでない場合には、以下のステップが順番に適用される。
− 変数dispVectorは次のように規定される。
[0259]図7は、本開示で説明する技法による符号化の例示的な動作を示すフローチャートである。ビデオデータメモリ40は、ベースビューと従属ビューとを記憶し得る。ビデオエンコーダ20の1つまたは複数のプロセッサは、3D−AVC準拠ビデオコーディングプロセスにおいて、従属ビューのテクスチャビュー成分を符号化し得る(100)。ビデオエンコーダ20の1つまたは複数のプロセッサは、テクスチャビュー成分を符号化することに続いて、テクスチャビュー成分に対応する深度ビュー成分を符号化し得る(102)。テクスチャビュー成分内のブロックに対する視差ベクトル導出は深度ビュー成分を必要としないので、技法は、テクスチャビュー成分が深度ビュー成分の前に符号化されることを可能にする。ビデオエンコーダ20の1つまたは複数のプロセッサは、符号化されたテクスチャビュー成分と符号化された深度ビュー成分とを含む従属ビューのテクスチャ優先のコーディングを用いてコーディングされたビットストリームを出力のために生成し得る。
[0260]図8は、本開示で説明する技法による復号の例示的な動作を示すフローチャートである。ビデオデコーダ30の1つまたは複数のプロセッサは、従属ビューのテクスチャ優先のコーディングを用いて生成された3D−AVC準拠ビデオコーディングプロセスにおいてコーディングされたビットストリームを受信し得る(106)。たとえば、ビデオデータメモリ69は、ビデオデコーダ30の1つまたは複数のプロセッサが、テクスチャビュー成分と深度ビュー成分とを含むベースビューと従属ビューとを含む3D−AVC準拠ビデオを復号するために使用する情報を記憶し得る。
[0261]ビデオデコーダ30の1つまたは複数のプロセッサは、従属ビューのテクスチャビュー成分を復号し得る(108)。ビデオデコーダ30の1つまたは複数のプロセッサは、テクスチャビュー成分を復号することに続いて、テクスチャビュー成分に対応する深度ビュー成分を復号し得る(110)。
[0262]図9は、本開示で説明する技法による視差ベクトル導出およびインター予測コーディングの例示的な動作を示すフローチャートである。例示のために、図9に示す例が、ビデオコーダに関して説明される。ビデオコーダの一例はビデオエンコーダ20であり、ビデオコーダの別の例はビデオデコーダ30である。したがって、ビデオエンコーダ20およびビデオデコーダ30は、図9で説明する例示的な技法を実装するように構成され得る。
[0263]例示のように、ビデオコーダは、隣接ブロックが、ビュー間参照ピクチャを指す視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、隣接ブロックの動き情報を評価し得る(112)。ビデオコーダは、ビュー間予測された隣接ブロックの視差動きベクトルに基づいて視差ベクトルを導出し得る(114)。
[0264]たとえば、1つまたは複数の隣接ブロックは、時間的隣接ブロックを含む。この時間的隣接ブロックは、2つの時間的ピクチャ候補の時間的ピクチャ内にあり得る。2つの時間的ピクチャ候補を決定するために、ビデオコーダは、第1の時間的ピクチャと第2の時間的ピクチャとを選択し得、第1の時間的ピクチャおよび第2の時間的ピクチャは、それぞれの参照ピクチャリストの第1のエントリ内で識別されるピクチャであり得る。
[0265]いくつかの例では、ビデオコーダは、2つの参照ピクチャリストのうちの1つを指す(たとえば、RefPicList0を指す)動きベクトルを有する隣接ブロックだけの動き情報を評価し得る。隣接ブロックに対する動きベクトルが他の参照ピクチャリストを指す場合、ビデオコーダは、動き情報を評価しない。言い換えれば、ビデオコーダは、他方の参照ピクチャリスト(RefPicList1)を指す動きベクトルを有する隣接ブロックの動き情報の評価を回避し得る。このようにして、視差動きベクトルが存在するとしても、視差動きベクトルがRefPicList1(すなわち、RefPicList1内のビュー間参照ピクチャ)を指す場合、この視差動きベクトルは、現在のマクロブロックに対する視差ベクトルを導出するために使用されない。
[0266]通常のインター予測モードに対するビュー間動きベクトル予測に対して本開示で説明する技法では、参照インデックスがビュー間参照ピクチャに対応し、動きベクトル予測のために使用される隣接ブロックが視差動きベクトルを用いてインター予測されない場合、ビデオコーダは、導出された視差ベクトルを、ビュー間予測されない隣接ブロックに割り当て得る(116)。ビデオコーダは、参照ピクチャリストへの参照インデックスがビュー間参照ピクチャを識別する場合、現在のブロックがビュー間予測されるべきかどうかを決定することができる。
[0267]図9に示す例では、ビデオコーダは、メディアンフィルタリングを利用して動きベクトル予測子を決定し得、ここで、メディアンフィルタリングは、視差動きベクトルとして、ビュー間予測されない隣接ブロックに割り当てられた視差ベクトルを利用する(118)。ビデオコーダは、動きベクトル予測子に基づいて現在のブロックをインター予測コーディングし得る(120)。たとえば、ビデオコーダは、動きベクトル予測子、および動きベクトル予測子と現在のブロックに対する実際の動きベクトルとの間の差に基づいて、現在のブロックに対する動きベクトルを決定し得る。次に、ビデオコーダは、インター予測コーディングのために使用される現在のブロックに対する動きベクトルから、予測子ブロックを識別し得る。
[0268]図10は、本開示で説明する技法による視差ベクトル導出およびインター予測コーディングの別の例示的な動作を示すフローチャートである。例示のために、図10に示す例が、ビデオコーダに関して説明される。ビデオコーダの一例はビデオエンコーダ20であり、ビデオコーダの別の例はビデオデコーダ30である。したがって、ビデオエンコーダ20およびビデオデコーダ30は、図10で説明する例示的な技法を実装するように構成され得る。
[0269]図10に示すように、ビデオコーダは、図9に関する上記の説明と同様に、隣接ブロックがビュー間予測されるかどうかを決定するために隣接ブロックの動き情報を評価し(122)、ビュー間予測された隣接ブロックの視差動きベクトルに基づいて視差ベクトルを導出する(124)ことができる。図10の例では、参照インデックスがビュー間参照ピクチャに対応する場合、ビデオコーダは、導出された視差ベクトルを動きベクトル予測子として利用する(126)。この例では、ビデオコーダは、動きベクトル予測子を決定するためにメディアンフィルタリングを使用する必要はない。ビデオコーダは、図9に関して上記で説明したインター予測コーディングと同様に、動きベクトル予測子に基づいて現在のブロックをインター予測コーディングする(128)ことができる。
[0270]例によっては、本明細書で説明した方法のうちいずれかの、いくつかの作用またはイベントは、異なるシーケンスで実行され得、追加、マージ、または完全に除外され得る(たとえば、すべての説明した作用またはイベントが、本方法の実施のために必要であるとは限らない)ことを認識されたい。さらに、いくつかの例では、作用またはイベントは、順次にではなく、同時に、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して実行され得る。
[0271]本明細書に開示する方法、システムおよび装置と関連して説明する様々な例示的論理ブロック、モジュール、回路、およびアルゴリズムのステップは、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、または両方の組合せとして実装できることを、当業者は認識するであろう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能をハードウェアとして実装するか、ソフトウェアとして実装するかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装することができるが、そのような実装の決定は、本開示の範囲からの逸脱を生じるものと解釈すべきではない。
[0272]さらに、本明細書で開示した例は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはその他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタロジック、個別ハードウェア構成要素などの電子デバイスまたは回路、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実施され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。また、プロセッサは、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと連携する1つまたは複数のマイクロプロセッサ、あるいは任意の他のそのような構成として実現され得る。
[0273]本明細書で開示する例に関して説明する方法またはアルゴリズムのステップは、直接ハードウェアで実施するか、プロセッサによって実行されるソフトウェアモジュールで実施するか、またはその2つの組合せで実施することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROM(登録商標)メモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROM、または当技術分野で知られている任意の他の形態の記憶媒体中に常駐することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替として、記憶媒体はプロセッサに一体化され得る。プロセッサおよび記憶媒体はASIC内に存在することができ得る。ASICはユーザ端末中に常駐し得る。代替形態では、プロセッサおよび記憶媒体は、ユーザ端末内の個別構成要素として存在することができる。
[0274]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、もしくはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、前述のように、適切なソフトウェアおよび/またはファームウェアとともに、様々なユニットがコーデックハードウェアユニットにおいて組み合わされ得るか、または前述のような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合体によって設けられ得る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1] 3Dアドバンストビデオコーディング(3D−AVC)に対するビデオデータを復号する方法であって、
従属ビューのテクスチャ優先のコーディングを用いて生成された3D−AVC準拠ビデオコーディングプロセスにおいてコーディングされたビットストリームを受信することと、
前記3D−AVC準拠ビデオコーディングプロセスにおいて前記従属ビューのうちの1つの従属ビューのテクスチャビュー成分を復号することと、ここにおいて、前記テクスチャビュー成分を復号することは、
第1の時間的ピクチャを選択すること、ここにおいて、前記第1の時間的ピクチャは、第1の参照ピクチャリストの第1のエントリにおいて識別されたピクチャを備える、
第2の時間的ピクチャを選択すること、ここにおいて、前記第2の時間的ピクチャは、第2の参照ピクチャリストの第1のエントリにおいて識別されたピクチャを備える、
少なくとも1つの隣接ブロックが、前記従属ビュー以外のビュー内のビュー間参照ピクチャを指す視差動きベクトルを用いてビュー間予測されるかどうかを決定するために前記テクスチャビュー成分内の現在のマクロブロックの1つまたは複数の隣接ブロックの動き情報を評価すること、ここにおいて、前記1つまたは複数の隣接ブロックは、空間的隣接ブロックと、前記第1の選択された時間的ピクチャまたは前記第2の選択された時間的ピクチャのうちの少なくとも一方における少なくとも1つの時間的隣接ブロックとを備える、
前記評価された隣接ブロックのうちの1つに対する前記視差動きベクトルに基づいて前記現在のブロックに対する視差ベクトルを導出すること、および
前記導出され視差ベクトルを前記マクロブロック内の各ブロックに割り当てることを備える、
前記テクスチャビュー成分を復号することに続いて前記テクスチャビュー成分に対応する深度ビュー成分を復号することとを備える、方法。
[C2] 前記視差ベクトルを導出するために前記深度ビュー成分を使用することなく、前記導出された視差ベクトルを利用して1つまたは複数のコーディングツールを実装することをさらに備える、C1に記載の方法。
[C3] 動き情報を評価することが、
少なくとも1つの隣接ブロックが前記視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、2つの参照ピクチャリストのうちの前記第1の参照ピクチャリストを指す動きベクトルを有する前記1つまたは複数の隣接ブロックだけの動き情報を評価することと、
少なくとも1つの隣接ブロックが前記視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、前記2つの参照ピクチャリストのうちの前記第2の参照ピクチャリストを指す動きベクトルを有する前記1つまたは複数の隣接ブロックの動き情報の前記評価を回避することとを備える、C1に記載の方法。
[C4] 動き情報を評価することが、
前記第1の選択された時間的ピクチャまたは前記第2の選択された時間的ピクチャの少なくとも一方の中の1つの右下ブロックだけに対する動き情報を評価することを備え、前記右下ブロックが、前記現在のマクロブロックの下部の右側の位置で、前記第1の選択された時間的ピクチャまたは前記第2の選択された時間的ピクチャの前記少なくとも一方の中に位置するブロックを備える、C1に記載の方法。
[C5] 動き情報を評価することが、
最大4つまでの空間的隣接ブロックの動き情報を評価することを備える、C1に記載の方法。
[C6] 前記4つの空間的隣接ブロックのうちの3つが、H.264/AVCビデオコーディング規格における動き予測のために使用されるのと同じ隣接ブロックを備える、C5に記載の方法。
[C7] 前記4つの空間的隣接ブロックが、
前記現在のマクロブロックの左に位置するブロックと、前記現在のマクロブロックの上に位置するブロックと、前記現在のマクロブロックの左上に位置するブロックと、前記現在のマクロブロックの右上に位置するブロックとを備える、C5に記載の方法。
[C8] 視差ベクトルを導出することが、
前記視差ベクトルの水平成分を、前記視差動きベクトルの水平成分に等しく設定することと、
前記視差ベクトルの垂直成分をゼロに等しく設定することとを備える、C1に記載の方法。
[C9] 3Dアドバンストビデオコーディング(3D−AVC)に対するビデオデータを符号化する方法であって、
3D−AVC準拠ビデオコーディングプロセスにおいて従属ビューのテクスチャビュー成分を符号化することと、ここにおいて、前記テクスチャビュー成分を符号化することは、
第1の時間的ピクチャを選択すること、ここにおいて、前記第1の時間的ピクチャは、第1の参照ピクチャリストの第1のエントリにおいて識別されたピクチャを備える、
第2の時間的ピクチャを選択すること、ここにおいて、前記第2の時間的ピクチャは、第2の参照ピクチャリストの第1のエントリにおいて識別されたピクチャを備える、
少なくとも1つの隣接ブロックが、前記従属ビュー以外のビュー内のビュー間参照ピクチャを指す視差動きベクトルを用いてビュー間予測されるかどうかを決定するために前記テクスチャビュー成分内の現在のマクロブロックの1つまたは複数の隣接ブロックの動き情報を評価すること、ここにおいて、前記1つまたは複数の隣接ブロックは、空間的隣接ブロックと、前記第1の選択された時間的ピクチャまたは前記第2の選択された時間的ピクチャの少なくとも一方における少なくとも1つの時間的隣接ブロックとを備える、
前記評価された隣接ブロックのうちの1つに対する前記視差動きベクトルに基づいて前記現在のブロックに対する視差ベクトルを導出すること、および
前記導出された視差ベクトルを前記マクロブロック内の各ブロックに割り当てることを備える、
前記テクスチャビュー成分を符号化することに続いて前記テクスチャビュー成分に対応する深度ビュー成分を符号化することと、
前記符号化されたテクスチャビュー成分と前記符号化された深度ビュー成分とを含む従属ビューのテクスチャ優先のコーディングを用いてコーディングされたビットストリームを出力のために生成することと備える、方法。
[C10] 前記視差ベクトルを導出するために前記深度ビュー成分を使用することなく、前記導出された視差ベクトルを利用して1つまたは複数のコーディングツールを実装することをさらに備える、C9に記載の方法。
[C11] 動き情報を評価することが、
少なくとも1つの隣接ブロックが前記視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、2つの参照ピクチャリストのうちの前記第1の参照ピクチャリストを指す動きベクトルを有する前記1つまたは複数の隣接ブロックだけの動き情報を評価することと、
少なくとも1つの隣接ブロックが前記視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、前記2つの参照ピクチャリストのうちの前記第2の参照ピクチャリストを指す動きベクトルを有する前記1つまたは複数の隣接ブロックの動き情報の前記評価を回避することとを備える、C9に記載の方法。
[C12] 動き情報を評価することが、
前記第1の選択された時間的ピクチャまたは前記第2の選択された時間的ピクチャの少なくとも一方の中の1つの右下ブロックだけに対する動き情報を評価することを備え、前記右下ブロックが、前記現在のマクロブロックの下部の右側の位置で、前記第1の選択された時間的ピクチャまたは前記第2の選択された時間的ピクチャの前記少なくとも一方の中に位置するブロックを備える、C9に記載の方法。
[C13] 動き情報を評価することが、
最大4つまでの空間的隣接ブロックの動き情報を評価することを備える、C9に記載の方法。
[C14] 前記4つの空間的隣接ブロックのうちの3つが、H.264/AVCビデオコーディング規格における動き予測のために使用されるのと同じ隣接ブロックを備える、C13に記載の方法。
[C15] 前記4つの空間的隣接ブロックが、
前記現在のマクロブロックの左に位置するブロックと、前記現在のマクロブロックの上に位置するブロックと、前記現在のマクロブロックの左上に位置するブロックと、前記現在のマクロブロックの右上に位置するブロックとを備える、C13に記載の方法。
[C16] 視差ベクトルを導出することが、
前記視差ベクトルの水平成分を前記視差動きベクトルの水平成分に等しく設定することと、
前記視差ベクトルの垂直成分をゼロに等しく設定することとを備える、C9に記載の方法。
[C17] 3Dアドバンストビデオコーディング(3D−AVC)に対するビデオデータをコーディングするためのデバイスであって、
ビデオデータを記憶するように構成されたメモリと、
ビデオコーダとを備え、前記ビデオコーダが、1つまたは複数のプロセッサを備え、および
3DAVC準拠ビデオコーディングプロセスにおいて、前記ビデオデータの従属ビューのテクスチャビュー成分をコーディングすることと、ここにおいて、前記テクスチャビュー成分をコーディングするために、前記ビデオコーダが、
少なくとも1つの隣接ブロックが、前記従属ビュー以外のビュー内でビュー間参照ピクチャを指す視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、2つの参照ピクチャリストのうちの第1の参照ピクチャリストを指す動きベクトルを有する前記テクスチャビュー成分内の現在のマクロブロックのブロックの1つまたは複数の隣接ブロックだけの動き情報を評価し、前記2つの参照ピクチャリストのうちの第2の参照ピクチャリストを指す動きベクトルを有する隣接ブロックの動き情報を評価することを回避すること、および
前記評価された隣接ブロックのうちの1つに対する前記視差動きベクトルに基づいて前記現在のブロックに対する視差ベクトルを導出すること、
前記導出された視差ベクトルを前記マクロブロック内の各ブロックに割り当てることを行うように構成される、
前記テクスチャビュー成分をコーディングすることに続いて、前記テクスチャビュー成分に対応する、前記ビデオデータの深度ビュー成分をコーディングすることとを行うように構成される、デバイス。
[C18] 前記ビデオコーダがビデオデコーダを備え、従属ビューのテクスチャ優先のコーディングを用いて生成された前記3D−AVC準拠ビデオコーディングプロセスにおいてコーディングされたビットストリームを、前記ビデオデコーダが受信するように構成され、前記従属ビューから前記ビデオデコーダが前記テクスチャビュー成分を復号し、前記テクスチャビュー成分に対応する前記深度ビュー成分を復号する、C17に記載のデバイス。
[C19] 前記ビデオコーダがビデオエンコーダを備え、前記ビデオエンコーダが、前記ビデオエンコーダによって符号化された前記テクスチャビュー成分を含み、前記ビデオエンコーダによって符号化された前記深度ビュー成分を含む従属ビューの、テクスチャ優先のコーディングを用いてコーディングされたビットストリームを出力のために生成するように構成される、C17に記載のデバイス。
[C20] 前記テクスチャビュー成分をコーディングするために、前記ビデオコーダが、
第1の時間的ピクチャを選択することと、ここにおいて、前記第1の時間的ピクチャは、前記第1の参照ピクチャリストの第1のエントリにおいて識別されたピクチャを備える、
第2の時間的ピクチャを選択することと、ここにおいて、前記第2の時間的ピクチャは、前記第2の参照ピクチャリストの第1のエントリにおいて識別されたピクチャを備える、を行うように構成され、
動き情報を評価するために、前記ビデオコーダが、少なくとも1つのブロックに対する動きベクトルが前記第1の参照ピクチャリストを指す場合、前記第1の時間的ピクチャまたは前記第2の時間的ピクチャの少なくとも一方の中の前記少なくとも1つのブロックの動き情報を評価するように構成される、C17に記載のデバイス。
[C21] 動き情報を評価するために、前記ビデオコーダが、
前記第1の選択された時間的ピクチャまたは前記第2の選択された時間的ピクチャの少なくとも一方の中の1つの右下ブロックだけに対する動き情報を評価するように構成され、前記右下ブロックが、前記現在のマクロブロックの下部の右側の位置で、前記第1の選択された時間的ピクチャまたは前記第2の選択された時間的ピクチャの少なくとも一方の中に位置するブロックを備える、C20に記載のデバイス。
[C22] 動き情報を評価するために、前記ビデオコーダが、
最大4つまでの空間的隣接ブロックの動き情報を評価するように構成される、C17に記載のデバイス。
[C23] 前記4つの空間的隣接ブロックのうちの3つが、H.264/AVCビデオコーディング規格における動き予測のために使用されるのと同じ隣接ブロックを備える、C22に記載のデバイス。
[C24] 前記4つの空間的隣接ブロックが、
前記現在のマクロブロックの左に位置するブロックと、前記現在のマクロブロックの上に位置するブロックと、前記現在のマクロブロックの左上に位置するブロックと、前記現在のマクロブロックの右上に位置するブロックとを備える、C22に記載のデバイス。
[C25] 視差ベクトルを導出するために、前記ビデオコーダが、
前記視差ベクトルの水平成分を前記視差動きベクトルの水平成分に等しく設定することと、
前記視差ベクトルの垂直成分をゼロに等しく設定することとを行うように構成される、C17に記載のデバイス。
[C26] ワイヤレス通信デバイスを備える、C17に記載のデバイス。
[C27] その上に記憶された命令を有するコンピュータ可読記憶媒体であって、前記命令が、実行されると、3Dアドバンストビデオコーディング(3D−AVC)に対するビデオデータをコーディングするためのデバイスのビデオコーダの1つまたは複数のプロセッサに、
前記3D−AVC準拠ビデオコーディングプロセスにおいて従属ビューのうちの1つの前記従属ビューのテクスチャビュー成分をコーディングすることと、ここにおいて、前記1つまたは複数のプロセッサに前記テクスチャビュー成分をコーディングさせる前記命令は、前記1つまたは複数のプロセッサに、
少なくとも1つの隣接ブロックが、前記従属ビュー以外のビュー内でビュー間参照ピクチャを指す視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、2つの参照ピクチャリストのうちの第1の参照ピクチャリストを指す動きベクトルを有する前記テクスチャビュー成分内の現在のマクロブロックのブロックの1つまたは複数の隣接ブロックだけの動き情報を評価し、前記2つの参照ピクチャリストのうちの第2の参照ピクチャリストを指す動きベクトルを有する隣接ブロックの動き情報を評価することを回避すること、および
前記評価された隣接ブロックのうちの1つに対する前記視差動きベクトルに基づいて前記現在のブロックに対する視差ベクトルを導出すること、
前記導出され視差ベクトルを前記マクロブロック内の各ブロックに割り当てることを行わせる命令を備える、
前記テクスチャビュー成分をコーディングすることに続いて前記テクスチャビュー成分に対応する深度ビュー成分をコーディングすることとを行わせる、コンピュータ可読記憶媒体。
[C28] 前記1つまたは複数のプロセッサに、
第1の時間的ピクチャを選択することと、ここにおいて、前記第1の時間的ピクチャは、前記第1の参照ピクチャリストの第1のエントリにおいて識別されたピクチャを備える、
第2の時間的ピクチャを選択することと、ここにおいて、前記第2の時間的ピクチャは、前記第2の参照ピクチャリストの第1のエントリにおいて識別されたピクチャを備える、を行わせる命令をさらに備え、
前記1つまたは複数のプロセッサに動き情報を評価させる前記命令が、前記1つまたは複数のプロセッサに、少なくとも1つのブロックに対する動きベクトルが前記第1の参照ピクチャリストを指す場合、前記第1の時間的ピクチャまたは前記第2の時間的ピクチャの少なくとも一方の中の前記少なくとも1つのブロックの動き情報を評価させる命令を備える、C27に記載のコンピュータ可読記憶媒体。
[C29] 前記ビデオコーダがビデオデコーダを備え、前記記憶媒体が、前記ビデオデコーダの前記1つまたは複数のプロセッサに、
従属ビューのテクスチャ優先のコーディングを用いて生成された前記3D−AVC準拠ビデオコーディングプロセスにおいてコーディングされたビットストリームを受信させる命令をさらに備え、前記従属ビューから前記ビデオデコーダが前記テクスチャビュー成分を復号し、前記テクスチャビュー成分に対応する前記深度ビュー成分を復号する、C27に記載のコンピュータ可読記憶媒体。
[C30] 前記ビデオコーダがビデオエンコーダを備え、前記記憶媒体が、前記ビデオエンコーダの前記1つまたは複数のプロセッサに、
前記ビデオエンコーダによって符号化された前記テクスチャビュー成分を含み、前記ビデオエンコーダによって符号化された前記深度ビュー成分を含む従属ビューのテクスチャ優先のコーディングを用いてコーディングされたビットストリームを出力のために生成させる命令をさらに備える、C27に記載のコンピュータ可読記憶媒体。