[0023]本開示は、視差ベクトル導出に関する技法について説明し、より詳細には、本開示は、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)が3次元(3D)ビデオコーディングにおける使用のために現在のビューの現在のピクチャ内の現在のブロックのための視差ベクトルを導出する技法について説明する。ビデオコーダは、異なるビュー中の対応するブロックの位置を特定するために、視差ベクトルを使用し得る。このようにして、視差ベクトルは、2つの異なるビュー中の2つの同様のビデオブロック間の視差を表し得る。以下でより詳細に説明されるように、ビデオコーダは、視差動きベクトルとして視差ベクトルを使用することができ、現在のブロックは、視差動きベクトルによって位置を特定されるブロックに基づいて予測され得る。ビデオコーダはまた、他の目的のためにも視差ベクトルを使用し得る。一例として、ビデオコーダは、別のビュー中の対応するブロックの位置を特定するために視差ベクトルを使用し、次いで、現在のブロックの動き情報を決定するために、位置を特定されたブロックの動き情報を使用し得る。その上、視差ベクトルのためのさらに他の使用があり得る。本開示では、「現在の」という用語は、概して、現在コーディングされているビュー、ピクチャ、またはブロックを指すために使用される。したがって、現在のブロックは、概して、すでにコーディングされたブロックとは対照的に、または、まだコーディングされていないブロックとは対照的に、コーディングされているビデデータのブロックを表す。
[0024]現在のピクチャの現在のブロックのための視差ベクトルは、現在のピクチャとは異なるビュー中である対応するピクチャ中の対応するブロックを指すベクトルである。したがって、視差ベクトルを使用して、ビデオコーダは、対応するピクチャ中で、現在のピクチャの現在のブロックに対応するブロックの位置を特定することができる。この場合、対応するピクチャは、現在のピクチャと同じ時間インスタンスのものであるが、異なるビュー中にあるピクチャである。対応するピクチャ中の対応するブロックおよび現在のピクチャ中の現在のブロックは、同様のビデオコンテンツを含み得るが、現在のピクチャ中の現在のブロックのロケーションと対応するピクチャ中の対応するブロックのロケーションとの間に少なくとも水平視差がある。現在のブロックの視差ベクトルは、対応するピクチャ中のブロックと現在のピクチャ中の現在のブロックとの間のこの水平視差の測度を提供する。いくつかの事例では、対応するピクチャ内のブロックのロケーションと現在のピクチャ内の現在のブロックのロケーションとの間に垂直視差もあり得るが、多くの事例では、垂直視差はゼロになる。現在のブロックの視差ベクトルはまた、対応するピクチャ中のブロックと現在のピクチャ中の現在のブロックとの間のこの垂直視差の測度を提供し得る。視差ベクトルは、2つの成分(x成分およびy成分)を含んでいるが、多くの事例では、垂直成分はゼロに等しくなる。現在のビューの現在のピクチャおよび異なるビューの対応するピクチャが表示される時間は、同じであってよく、すなわち、現在のピクチャおよび対応するピクチャは、同じ時間インスタンスのピクチャである。
[0025]2Dビデオコーディングでは、フレームは、テクスチャビューコンポーネントまたは単にテクスチャと呼ばれることがある、1つのビューコンポーネントのみによって表される。いくつかのタイプの3Dビデオコーディングでは、テクスチャビューコンポーネントおよび深度ビューコンポーネント、または単にテクスチャおよび深度という、2つのビューコンポーネントがある。たとえば、各ビューは、テクスチャビューと深度ビューとを含み得、ただし、ビューは複数のビューコンポーネントを含み、たとえば、テクスチャビューは複数のテクスチャビューコンポーネントを含み、深度ビューは複数の深度ビューコンポーネントを含む。各テクスチャビューコンポーネントは、ビューのビューコンポーネントを形成するために、深度ビューコンポーネントに関連付けられる。深度ビューコンポーネントは、テクスチャビューコンポーネント中のオブジェクトの相対深度を表す。深度ビューコンポーネントおよびテクスチャビューコンポーネントは、別個に復号可能であり得る。
[0026]本開示は、視差ベクトルを導出するための技法について説明する。視差ベクトルを導出するための1つのそのような技法は、後方ビュー合成予測(BVSP)モードとともに使用され得る。ビデオコーダは、第1のテクスチャビューのブロックが、BVSPモードを使用してコーディングされるべきであると決定し得る。ビデオコーダは、深度ビュー中で、第1のテクスチャビューのブロックに対応する深度ブロックの位置を特定し、深度ブロックの2つ以上の隅の位置のための深度値を決定し得る。深度値に基づいて、ビデオコーダは、ブロックのための視差ベクトルを導出し、視差ベクトルを使用して、第2のテクスチャビューのブロックの位置を特定し得る。ビデオコーダは、次いで、第2のテクスチャビューのブロックを使用して、第1のテクスチャビューのブロックをインター予測し得る。この点について、および、以下でより詳細に説明されるように、本開示の技法は、対応する深度ブロックの隅のサンプルのみを使用して、BVSPモードにおける使用のために、視差ベクトルを決定することによって、視差ベクトル導出プロセスを簡略化し得る。
[0027]別の例示的な技法では、第1のビューのブロックについて、ビデオコーダは、第1のテクスチャビューのブロックに対応する深度ビュー中の深度ブロックの位置を特定し、深度ブロックの少なくとも1つの深度値に基づいて、第1のテクスチャビューのブロックのための視差ベクトルを導出し得る。ビデオコーダは、次いで、導出された視差ベクトルに基づいて、ブロックの第1のサブブロックをコーディングし、同じ導出された視差ベクトルに基づいて、マクロブロックの第2のサブブロックをコーディングし得る。この点について、および、以下でより詳細に説明されるように、本開示の技法は、ブロックのための1つの視差ベクトルを導出し、そのブロックの2つ以上のサブブロックのためにその視差を使用することによって、視差ベクトル導出プロセスを簡略化し得る。特定のサブブロックについて指定されたコーディングモードに応じて、ビデオコーダは、導出された視差ベクトルを視差動きベクトルとして使用することができ、または、異なるビュー中の対応するブロックを識別するために、視差ベクトルを使用し、その対応するブロックから、サブブロックを予測するための動き情報を決定することができる。
[0028]図1は、本開示で説明される視差ベクトル導出のための技法を実行するように構成され得る、例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示されるように、システム10は、宛先デバイス14によって後の時間で復号されるべき符号化されたビデオデータを生成するソースデバイス12を含む。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
[0029]システム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月に記載されており、その内容全体は参照により本明細書に組み込まれる。いくつかの追加のビデオコーディング規格には、AVCに基づく、MVC+Dおよび3D−AVCがある。加えて、新しいビデオコーディング規格、すなわち高効率ビデオコーディング(HEVC)が、ITU−T Video Coding Experts Group(VCEG)およびISO/IEC Motion Picture Experts Group(MPEG)のJoint Collaboration Team on Video Coding(JCT−VC)によって開発された。
[0030]単に例示のために、本開示で説明される技法は、3D−AVCなど、H.264規格による例とともに説明される。しかしながら、本開示で説明される技法は、これらの例示的な規格に限定されると見なされるべきではなく、マルチビューコーディングもしくは3Dビデオコーディングのための他のビデオコーディング規格(たとえば、3D−HEVC)、または必ずしも特定のビデオコーディング規格に基づくとは限らないマルチビューコーディングもしくは3Dビデオコーディングに関連する技法に拡張可能であり得る。たとえば、本開示で説明される技法は、マルチビューコーディングのためのビデオエンコーダ/デコーダ(コーデック)によって実装され、ここでマルチビューコーディングは、2つ以上のビューのコーディングを含む。
[0031]宛先デバイス14は、リンク16を介して、復号されるべき符号化されたビデオデータを受信し得る。リンク16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動することが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、リンク16は、ソースデバイス12が、符号化されたビデオデータをリアルタイムで宛先デバイス14に直接送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、高周波(RF)スペクトルあるいは1つまたは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得る、ルータ、スイッチ、基地局、または任意の他の機器を含み得る。
[0032]代替的に、符号化されたデータは、出力インターフェース22からストレージデバイス34に出力され得る。同様に、符号化されたデータは、入力インターフェースによってストレージデバイス34からアクセスされ得る。ストレージデバイス34は、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性もしくは不揮発性メモリ、または符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散したまたはローカルでアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイス34は、ソースデバイス12によって生成された符号化されたビデオを保持できるファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、ストレージデバイス34から、記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバとすることができる。例示的なファイルサーバとしては、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブがある。宛先デバイス14は、インターネット接続を含む任意の標準的なデータ接続を通じて、符号化されたビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに適しているワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含み得る。ストレージデバイス34からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0033]視差ベクトル導出のための本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例のような、種々のマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成され得る。
[0034]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。場合によっては、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含み得る。ソースデバイス12において、ビデオソース18は、ビデオキャプチャデバイス、たとえばビデオカメラ、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、および/もしくはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムのようなソース、またはそのようなソースの組合せを含み得る。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。
[0035]キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータにより生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオデータは、ソースデバイス12の出力インターフェース22を介して宛先デバイス14に直接送信され得る。符号化されたビデオデータは、さらに(または代替的に)、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのためにストレージデバイス34上に記憶され得る。
[0036]宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。場合によっては、入力インターフェース28は、受信機および/またはモデムを含み得る。宛先デバイス14の入力インターフェース28は、リンク16を介して、符号化されたビデオデータを受信する。リンク16を介して通信され、またはストレージデバイス34上に提供された符号化されたビデオデータは、ビデオデータを復号する際にビデオデコーダ30などのビデオデコーダが使用するための、ビデオエンコーダ20によって生成された様々なシンタックス要素を含み得る。そのようなシンタックス要素は、通信媒体上で送信され、記憶媒体上に記憶される符号化されたビデオデータとともに含まれ得、またはファイルサーバを記憶した。
[0037]ディスプレイデバイス32は、宛先デバイス14と一体であってよく、またはその外部にあり得る。いくつかの例では、宛先デバイス14は、集積ディスプレイデバイスを含むことができ、また、外部ディスプレイデバイスとインターフェースするように構成され得る。他の例では、宛先デバイス14はディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号されたビデオデータをユーザに対して表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、種々のディスプレイデバイスのいずれかを備え得る。
[0038]図1には示されないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれオーディオエンコーダおよびオーディオデコーダと統合されてよく、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するための、適切なMUX−DEMUXユニット、または他のハードウェアとソフトウェアとを含み得る。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0039]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。たとえば、本開示で説明される技法は、装置またはデバイスの観点から説明され得る。一例として、装置またはデバイスは、ビデオデコーダ30(たとえば、ワイヤレス通信デバイスの一部としての宛先デバイス14)を含んでよく、ビデオデコーダ30は、本開示で説明される技法を実装する(たとえば、本開示で説明される技法に従って、ビデオデータを復号する)ように構成された1つまたは複数のプロセッサを含んでよい。別の例として、装置またはデバイスは、ビデオデコーダ30を含むマイクロプロセッサまたは集積回路(IC)を含んでよく、マイクロプロセッサまたはICは、宛先デバイス14または別のタイプのデバイスの一部であり得る。同じことは、ビデオエンコーダ20にも当てはまり得る(すなわち、ソースデバイス12のような装置もしくはデバイス、および/またはマイクロコントローラもしくはICは、ビデオエンコーダ20を含み、その場合、ビデオエンコーダ20は、本開示で説明される技法に従ってビデオデータを符号化するように構成される)。
[0040]本技法が部分的にソフトウェアで実装されるとき、デバイスは、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェアでその命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれてよく、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合されてよい。
[0041]ビデオシーケンスは、一般に、ビューからの一連のビデオピクチャを含む。ピクチャグループ(GOP)は、概して、一連の1つまたは複数のビデオピクチャを備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、GOPの1つもしくは複数のピクチャのヘッダ中、または他の場所に含み得る。各ピクチャは、それぞれのピクチャのための符号化モードを記述するピクチャシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオピクチャ内のビデオブロックに対して動作する。ビデオブロックは、H.264規格において定義されるようなマクロブロック、マクロブロックのパーティション、および場合によってはパーティションのサブブロックに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有し得、指定されたコーディング規格に従ってサイズが異なり得る。各ビデオピクチャは複数のスライスを含み得る。各スライスは複数のブロックを含み得る。
[0042]一例として、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に等しいとは限らない。
[0043]ブロックがイントラモード符号化される(たとえば、イントラ予測される)とき、ブロックは、ブロック用のイントラ予測モードを記述するデータを含む場合がある。別の例として、ブロックがインターモード符号化される(たとえば、インター予測される)とき、ブロックは、ブロックについての動きベクトルを定義する情報を含む場合がある。この動きベクトルは、同じビュー中の参照ピクチャを指す(たとえば、時間動きベクトル)か、または別のビュー中の参照ピクチャを指す(たとえば、視差動きベクトル)。ブロックのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分と、動きベクトルの垂直成分と、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)とを記述する。加えて、インター予測されるとき、ブロックは、動きベクトルが指す参照ピクチャなどの参照インデックス情報、および/または動きベクトル用の参照ピクチャリスト(たとえば、RefPicList0もしくはRefPicList1)を含む場合がある。
[0044]H.264規格では、イントラ予測またはインター予測コーディングの後、ビデオエンコーダ20は、マクロブロックのための残差データを計算する。残差データは、符号化されていないピクチャのピクセルと、H.264におけるマクロブロックのための予測値との間のピクセル差分に対応し得る。
[0045]いくつかの例では、変換係数を生成するための任意の変換の後、ビデオエンコーダ20は、変換係数の量子化を実行する。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減する。たとえば、量子化中にnビット値がmビット値に切り捨てられ、ただし、nはmよりも大きい。
[0046]いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するためにあらかじめ定義された走査順序を利用する。他の例では、ビデオエンコーダ20は適応走査を実行する。1次元ベクトルを形成するために、量子化変換係数を走査した後、いくつかの例では、ビデオエンコーダ20は、いくつかの例として、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピー符号化方法に従って、1次元ベクトルをエントロピー符号化する。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30によって使用するための符号化されたビデオデータに関連するシンタックス要素をエントロピー符号化する。
[0047]CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、たとえば、シンボルの隣接値が0ではないかどうかに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルの可変長コードを選択し得る。VLCにおけるコードワードは、比較的短いコードが優勢シンボルに対応し、一方より長いコードが劣勢シンボルに対応するように構成され得る。このようにして、VLCの使用は、たとえば、送信されるべき各シンボルのために等長コードワードを使用するよりも、ビット節約を達成し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0048]ビデオデコーダ30は、ビデオエンコーダ20の技法の逆を実施する。たとえば、ビデオデコーダ30は、符号化されたビデオビットストリームを復号し、逆量子化および逆変換によって残差ブロックを決定する。ビデオデコーダ30は、ピクチャ内のブロックのためのピクセル値を決定するために、前に復号されたピクチャのブロックと残差ブロックとを合計する。
[0049]本開示で説明されるいくつかの技法は、ビデオエンコーダ20とビデオデコーダ30の両方によって実行され得る。一例として、ビデオエンコーダ20は、ビデオデータのブロックをどのように符号化するかを決定することの一部として、視差ベクトルを導出し得る。ビデオエンコーダ20はまた、参照ピクチャを生成するために使用される復号ループの一部として、視差ベクトルを導出し得る。ビデオデコーダ30は、ビデオブロックを復号することの一部として、ビデオエンコーダ20によって実行される同じ視差ベクトル導出技法を実行し得る。本開示は、時々、ビデオデコーダ30によって実行されているような技法に言及することがあるが、別段に規定されていない限り、ビデオデコーダ30に関して説明される技法はまた、ビデオエンコーダ20によっても実行され得ることが仮定されるべきである。
[0050]上記で説明されたように、本開示で説明される技法は、3dビデオコーディングを対象とする。本技法をよりよく理解するために、下記は、いくつかのH.264/AVCコーディング技法、H.264/MVC拡張および高効率ビデオコーディング(HEVC)規格の観点からのマルチビュービデオコーディング、ならびに、3D−AVC技法について説明する。
[0051]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が複数の(1よりも多い)MBパーティションに区分されないとき、MBは、各方向に、MBパーティション全体のための1つの動きベクトルのみを有する。
[0052]ビデオコーディング(符号化または復号)の一部として、ビデオデコーダ30は、RefPicList0およびRefPicList1と呼ばれる、1つまたは2つの参照ピクチャリストを構成するように構成され得る。参照ピクチャリスト(複数可)は、フレームまたはスライスのマクロブロックをインター予測するために使用され得る参照ピクチャを識別する。たとえば、ビデオエンコーダ20は、参照インデックスと参照ピクチャリスト識別子とをシグナリングし得る。ビデオデコーダ30は、参照インデックスと参照ピクチャリスト識別子とを受信し、参照インデックスと参照ピクチャリスト識別子とから、現在のマクロブロックをインター予測復号するために使用されるべきである参照ピクチャを決定し得る。
[0053]MBが4つの8×8MBパーティションに区分されるとき、各8×8MBパーティションは、H.264/AVCサブブロックにさらに区分され得る。8×8MBパーティションから、H.264/AVCサブブロック、すなわち、1つの8×8サブブロック、2つの8×4サブブロック、2つの4×8サブブロック、または4つの4×4サブブロックを得るための、4つの異なる方法がある。各H.264/AVCサブブロックは、各方向において異なる動きベクトルを有し得るが、各方向のための同じ参照ピクチャインデックスを共有することができる。8×8MBパーティションがサブブロックに区分される方法は、サブブロック区分と称される。
[0054]本開示は、概して、ビデオデータの任意のブロックを指すために、ブロックという用語を使用する。たとえば、H.264コーディングおよびその拡張のコンテキストでは、ブロックは、マクロブロック、マクロブロックパーティション、サブブロック、または任意の他のタイプのブロックのいずれかを指すことがある。HEVCおよびその拡張のコンテキストでは、ブロックは、PU、TU、CU、または任意の他のタイプのブロックのいずれかを指すことがある。本開示で使用されるサブブロックは、概して、より大きいブロックの任意の部分を指す。サブブロックはまた、それ自体で単にブロックと呼ばれることもある。H.264/AVCにおいて定義されるようなサブブロックに特に言及するとき、H.264/AVCサブブロックという用語が使用され得る。そうでない場合、本開示で使用されるサブブロックは、概して、H.264/AVCサブブロック、ならびに、上記で説明された他のタイプのサブブロックを包含する、総称語であるものとする。
[0055]マルチビュービデオコーディングでは、複数の異なるビデオコーディング規格がある。混乱を避けるために、本開示が一般的にマルチビュービデオコーディングについて説明するとき、本開示は「マルチビュービデオコーディング」というフレーズを使用する。概して、マルチビュービデオコーディングでは、ベースビュー、および、1つまたは複数の非ベースビューまたは依存ビューがある。ベースビューは、依存ビューのいずれにも関係なく、完全に復号可能である(すなわち、ベースビューは、時間動きベクトルを用いてのみインター予測される)。これは、マルチビュービデオコーディングのために構成されないコーデックが、完全に復号可能である少なくとも1つのビューをなお受信することを可能にする(すなわち、ベースビューが抽出され、他のビューが破棄されて、マルチビュービデオコーディングのために構成されないデコーダが、3Dエクスペリエンスがないにもかかわらず、ビデオコンテンツをなお復号することが可能にされ得る)。1つまたは複数の依存ビューは、ベースビューに関して、または別の依存ビューに関してインター予測され(すなわち、視差補償予測され)、あるいは、同じビュー中の他のピクチャに関してインター予測され(すなわち、動き補償予測され)得る。
[0056]「マルチビュービデオコーディング」が総称的に使用されるのに対して、頭文字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では、各ビューは、テクスチャビューと深度ビューとを含み、ただし、ビューは複数のビューコンポーネントを含み、テクスチャビューは複数のテクスチャビューコンポーネントを含み、深度ビューは複数の深度ビューコンポーネントを含む。
[0057]各テクスチャビューコンポーネントは、ビューのビューコンポーネントを形成するために、深度ビューコンポーネントに関連付けられる。深度ビューコンポーネントは、テクスチャビューコンポーネント中のオブジェクトの相対深度を表す。MVC+Dでは、深度ビューコンポーネントおよびテクスチャビューコンポーネントは、別個に復号可能である。たとえば、ビデオデコーダ30は、第1のコーデックがテクスチャビューコンポーネントを復号し、第2のコーデックが深度ビューコンポーネントを復号する、MVCコーデックの2つのインスタンスを実装し得る。これらの2つのコーデックは、テクスチャビューコンポーネントおよび深度ビューコンポーネントが別個に符号化されるので、互いに無関係に実行することができる。
[0058]MVC+Dでは、深度ビューコンポーネントは常に、関連付けられた(たとえば、対応する)テクスチャビューコンポーネントの直後にくる。このようにして、MVC+Dは、テクスチャビューコンポーネントが深度ビューコンポーネントより前に復号される、テクスチャ優先コーディングをサポートする。
[0059]テクスチャビューコンポーネントおよびその関連付けられた(たとえば、対応する)深度ビューコンポーネントは、同じピクチャ順序カウント(POC:picture order count)値とview_idとを含み得る(すなわち、テクスチャビューコンポーネントおよびその関連付けられた深度ビューコンポーネントのPOC値およびview_idは同じである)。POC値は、テクスチャビューコンポーネントの表示順序を示し、view_idは、テクスチャビューコンポーネントおよび深度ビューコンポーネントが属する先のビューを示す。
[0060]図2は、典型的なMVC復号順序(すなわち、ビットストリーム順序)を示す。復号順序構成は時間優先(time-first)コーディングと呼ばれる。アクセスユニットの復号順序は、出力または表示の順序と同一ではない場合があることに留意されたい。図2では、S0〜S7は、それぞれマルチビュービデオの異なるビューを指す。T0〜T8は、それぞれ1つの出力時間インスタンスを表す。アクセスユニットは、1つの出力時間インスタンスについてのすべてのビューのコーディングされたピクチャを含み得る。たとえば、第1のアクセスユニットは時間インスタンスT0についてのビューS0〜S7のすべてを含み得、第2のアクセスユニットは時間インスタンスT1についてのビューS0〜S7のすべてを含み得、以下同様である。
[0061]簡潔にするために、本開示は以下の定義を使用し得る。
ビューコンポーネント:単一のアクセスユニット中のビューのコーディングされた表現。ビューが、コーディングされたテクスチャ表現とコーディングされた深度表現の両方を含むとき、ビューコンポーネントは、テクスチャビューコンポーネントと深度ビューコンポーネントとを含み得る。
テクスチャビューコンポーネント:単一のアクセスユニット中のビューのテクスチャのコーディングされた表現。
深度ビューコンポーネント:単一のアクセスユニット中のビューの深度のコーディングされた表現。
[0062]上記で説明されたように、本開示のコンテキストでは、ビューコンポーネント、テクスチャビューコンポーネント、および深度ビデコンポーネントは、一般にレイヤと呼ばれることがある。図2では、ビューの各々はピクチャのセットを含む。たとえば、ビューS0はピクチャ0、8、16、24、32、40、48、56、および64のセットを含み、ビューS1はピクチャ1、9、17、25、33、41、49、57、および65のセットを含み、以下同様である。各セットは2つのピクチャを含み、一方のピクチャはテクスチャビューコンポーネントと呼ばれ、他方のピクチャは深度ビューコンポーネントと呼ばれる。ビューのピクチャのセット内のテクスチャビューコンポーネントおよび深度ビューコンポーネントは、互いに対応すると見なされ得る。たとえば、ビューのピクチャのセット内のテクスチャビューコンポーネントは、そのビューのピクチャのセット内の深度ビューコンポーネントに対応すると見なされ、その逆も同様である(すなわち、深度ビューコンポーネントはセット中のそれのテクスチャビューコンポーネントに対応し、その逆も同様である)。本開示で使用する、深度ビューコンポーネントに対応するテクスチャビューコンポーネントは、単一のアクセスユニットの同じビューの一部であるテクスチャビューコンポーネントおよび深度ビューコンポーネントと見なされ得る。
[0063]テクスチャビューコンポーネントは、表示される実際の画像コンテンツを含む。たとえば、テクスチャビューコンポーネントは、ルーマ(Y)成分と、クロマ(CbおよびCr)成分とを含み得る。深度ビューコンポーネントは、それの対応するテクスチャビューコンポーネント中のピクセルの相対深度を示し得る。一例のアナロジーとして、深度ビューコンポーネントは、ルーマ値のみを含むグレースケール画像と同様である。言い換えれば、深度ビューコンポーネントは、画像コンテンツを搬送するのではなく、テクスチャビューコンポーネント中のピクセルの相対深度の測度を与え得る。
[0064]たとえば、深度ビューコンポーネント中の純白のピクセルは、対応するテクスチャビューコンポーネント中のそれの対応する1つまたは複数のピクセルが閲覧者から見てより近いことを示し、深度ビューコンポーネント中の純黒のピクセルは、対応するテクスチャビューコンポーネント中のそれの対応する1つまたは複数のピクセルが閲覧者から見てより遠いことを示す。黒と白との中間にあるグレーの様々な陰影は、異なる深度レベルを示す。たとえば、深度ビューコンポーネント中の濃いグレーのピクセルは、テクスチャビューコンポーネント中のそれの対応するピクセルが、深度ビューコンポーネント中のより薄いグレーのピクセルよりも遠いことを示す。ピクセルの深度を識別するためにグレースケールのみが必要とされるので、深度ビューコンポーネントの色値がいかなる目的も果たし得ないことから、深度ビューコンポーネントはクロマ成分を含む必要がない。上記の説明は、深度画像をテクスチャ画像に関係付ける目的のためのアナロジーであるものとする。深度画像中の深度値は、実際にはグレーの陰影を表すものではなく、実際には、8ビットまたは他のビットサイズの深度値を表す。
[0065]深度を識別するためにルーマ値(たとえば、強度値)のみを使用する深度ビューコンポーネントが説明のために提供され、限定するものと見なされるべきではない。他の例では、テクスチャビューコンポーネント中のピクセルの相対深度を示すために任意の技法が利用され得る。
[0066]図3は、マルチビュービデオコーディング用の(各ビュー内のピクチャ間予測と、ビュー間のビュー間予測の両方を含む)典型的なMVC予測構造を示している。予測方向は矢印によって示され、矢印の終点のオブジェクトは、予測参照として矢印の始点のオブジェクトを使用する。MVCでは、H.264/AVC動き補償のシンタックスを使用するが、異なるビュー中のピクチャが参照ピクチャとして使用されることを可能にする視差動き補償によって、ビュー間予測がサポートされる。
[0067]図3の例では、(ビューID「S0」〜「S7」を有する)8つのビューが示され、12個の時間ロケーション(「T0」〜「T11」)がビューごとに示されている。すなわち、図3中の各行はビューに対応し、一方各列は時間ロケーションを示す。
[0068]MVCがH.264/AVCデコーダによって復号可能である、いわゆるベースビューを有し、また、ステレオビューペアがMVCによってもサポートされ得るが、MVCの利点は、MVCが、3Dビデオ入力として3つ以上のビューを使用し、複数のビューによって表されるこの3Dビデオを復号する例をサポートできることである。MVCデコーダを有するクライアントのレンダラは、複数のビューを用いて3Dビデオコンテンツを予想し得る。
[0069]図3中のピクチャは、各行と各列の交点に示されている。H.264/AVC規格は、ビデオの一部分を表すためにフレームという用語を使用し得る。本開示では、ピクチャという用語とフレームという用語とを互換的に使用し得る。
[0070]図3中のピクチャは、対応するピクチャがイントラコーディングされる(すなわち、Iピクチャである)か、あるいは一方向に(すなわち、Pピクチャとして)または複数の方向に(すなわち、Bピクチャとして)インターコーディングされるかを指定する、文字を含むブロックを使用して示されている。概して、予測は矢印によって示され、ここで矢印の終点のピクチャは、予測参照のために矢印の始点のピクチャを使用する。たとえば、時間ロケーションT0にあるビューS2のPピクチャは、時間ロケーションT0にあるビューS0のIピクチャから予測される。
[0071]シングルビュービデオ符号化の場合と同様に、マルチビュービデオコーディングビデオシーケンスのピクチャは、異なる時間ロケーションにあるピクチャに関して予測符号化され得る。たとえば、時間ロケーションT1にあるビューS0のbピクチャは、時間ロケーションT0にあるビューS0のIピクチャからそのbピクチャに向けられた矢印を有し、その矢印は、bピクチャがIピクチャから予測されることを示す。しかしながら、さらに、マルチビュービデオ符号化のコンテキストにおいて、ピクチャはビュー間予測され得る。すなわち、ビューコンポーネントは、参照のために他のビュー中のビューコンポーネントを使用することができる。MVCでは、たとえば、別のビュー中のビューコンポーネントがインター予測参照であるかのように、ビュー間予測が実現される。潜在的なビュー間参照は、シーケンスパラメータセット(SPS)MVC拡張においてシグナリングされ、インター予測またはビュー間予測参照のフレキシブルな順序付けを可能にする参照ピクチャリスト構成プロセスによって変更され得る。ビュー間予測は、3D−HEVC(マルチビュープラス深度)を含むHEVCの提案されたマルチビュー拡張の機能でもある。
[0072]図3は、ビュー間予測の様々な例を提供する。図3の例では、ビューS1のピクチャは、ビューS1の異なる時間ロケーションにあるピクチャから予測されるものとして、ならびに同じ時間ロケーションにあるビューS0およびS2のピクチャからビュー間予測されるものとして示されている。たとえば、時間ロケーションT1にあるビューS1のbピクチャは、時間ロケーションT0およびT2にあるビューS1のBピクチャの各々、ならびに時間ロケーションT1にあるビューS0およびS2のbピクチャから予測される。
[0073]いくつかの例では、図3はテクスチャビューコンポーネントを示すものとして見なされ得る。たとえば、図2に示されたIピクチャ、Pピクチャ、Bピクチャ、およびbピクチャは、ビューの各々のためのテクスチャビューコンポーネントと見なされ得る。本開示で説明される技法によれば、図3に示されたテクスチャビューコンポーネントの各々について、対応する深度ビューコンポーネントがある。いくつかの例では、深度ビューコンポーネントは、対応するテクスチャビューコンポーネントについて図3に示された方法と同様の方法で予測され得る。
[0074]2つのビューのコーディングもMVCによってサポートされ得る。MVCの利点のうちの1つは、MVCエンコーダが3Dビデオ入力として3つ以上のビューをとり得、MVCデコーダがそのようなマルチビュー表現を復号し得ることである。したがって、MVCデコーダをもついかなるレンダラも、3つ以上のビューをもつ3Dビデオコンテンツを復号し得る。
[0075]上記で説明されたように、MVCでは、(いくつかの事例では、同じ時間インスタンスをもつことを意味する)同じアクセスユニット中のピクチャ間で、ビュー間予測が可能にされる。非ベースビューのうちの1つの中のピクチャをコーディングするとき、ピクチャが異なるビュー内にあるが同じ時間インスタンス内にある場合、そのピクチャは参照ピクチャリストに追加され得る。ビュー間予測の参照ピクチャは、任意のインター予測の参照ピクチャと同様に、参照ピクチャリストの任意の位置に置かれ得る。図3に示されたように、ビューコンポーネントは、参照用に他のビュー中のビューコンポーネントを使用することができる。MVCでは、別のビュー中のビューコンポーネントがインター予測参照であるかのように、ビュー間予測が実現される。
[0076]MVCでは、同じアクセスユニット中の(すなわち、同じ時間インスタンスをもつ)ピクチャ間でビュー間予測が可能にされる。非ベースビューのうちの1つ中のピクチャをコーディングするとき、ピクチャが異なるビュー中にあるが同じ時間インスタンスをもつ場合、そのピクチャは参照ピクチャリストに追加され得る。ビュー間予測参照ピクチャは、任意のインター予測参照ピクチャと同様に、参照ピクチャリストの任意の位置に置かれ得る。
[0077]図3に示されたように、ビューコンポーネントは、参照用に他のビュー中のビューコンポーネントを使用することができる。これはビュー間予測と呼ばれる。MVCでは、別のビュー中のビューコンポーネントがインター予測参照であるかのように、ビュー間予測が実現される。
[0078]マルチビュービデオコーディングのコンテキストでは、2種類の動きベクトルが存在する。neは、時間参照ピクチャを指す通常の動きベクトルである。対応する時間インター予測は、動き補償予測(MCP:motion-compensated prediction)である。他方のタイプの動きベクトルは、異なるビュー中のピクチャ(すなわち、ビュー間参照ピクチャ)を指す視差動きベクトルである。対応するインター予測は、視差補償予測(DCP:disparity-compensated prediction)である。
[0079]次のセクションは、AVCベース3Dビデオコーディング規格について説明する。現在、VCEGおよびMPEGのJoint Collaboration Team on 3D Video Coding(JCT−3V)は、H.264/AVCに基づく3DV規格、すなわち、3D−AVCを開発中である。3D−AVCでは、MVCにおけるビュー間予測の他に、新しいコーディングツールが含まれ、サポートされている。3D−AVCのための最新のソフトウェア3D−ATMは、以下のリンクからダウンロード可能であり、すなわち、[3D−ATMバージョン6.2]:http://mpeg3dv.research.nokia.com/svn/mpeg3dv/tags/3DV−ATMv6.2/である。
[0080]AVCベース3Dビデオ(3D−AVC)コーディング規格は、JCT−3Vによって現在開発中であり、3D−AVCの最新のバージョンは、現在公に入手可能であり、すなわち、M. M. Hannuksela、Y. Chen、T. Suzuki、J.−R. Ohm、G. J. Sullivan、「3D−AVC draft text 5」、JCT3V−C1002、ジュネーブ、スイス、2013年1月である。それは、2014年3月14日現在、以下のリンクから入手可能であり、参照により本明細書に組み込まれ、すなわち、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/3_Geneva/wg11/JCT3V−C1002−v3.zipである。
[0081]3D−AVCにおけるビューコンポーネントのコーディング順序について、次に説明する。3D−AVCは、ベースビューのテクスチャ部分がH.264/AVCデコーダによって完全に復号可能である形で、H.264/AVCと互換性がある。たとえば、ベースビューのビューコンポーネント中のテクスチャビューコンポーネントは、同じベースビュー中の他のテクスチャビューコンポーネントのみを用いてインター予測され得る。ベースビュー中のテクスチャビューコンポーネントは、ビュー間予測されなくてよい。また、ベースビュー中のテクスチャビューコンポーネントは、復号の目的のために対応する深度ビューコンポーネントを必要としなくてよい。
[0082]3D−AVCにおける拡張ビューコンポーネントでは、いくつかの他の例示的な技法において、深度がテクスチャより前にコーディングされ得、テクスチャビューコンポーネントが、深度ビューコンポーネントからの情報に基づいてコーディングされ得、これは深度優先(depth-first)コーディングとしても知られる。ただし、各テクスチャビューコンポーネントは、上記で説明されたMVC+Dにおけるような、テクスチャ優先コーディング順序において、それぞれの深度ビューコンポーネントの前でコーディングされる。言い換えれば、いくつかの他の例示的な技法では、3D−AVCでは、ベースビューのテクスチャビューコンポーネントが最初にコーディングされ、ベースビューの関連付けられた深度ビューコンポーネントによって後続され、第1のエンハンスメントビューまたは依存ビューの深度ビューコンポーネントによって後続され、第1のエンハンスメントビューまたは依存ビューの関連付けられたテクスチャビューコンポーネントによって後続され、第2のエンハンスメントビューまたは依存ビューの深度ビューコンポーネントによって後続され、第2のエンハンスメントビューまたは依存ビューの関連付けられたテクスチャビューコンポーネントによって後続され、以下同様である。
[0083]たとえば、3D−AVCにおけるテクスチャビューコンポーネントおよび深度ビューコンポーネントのコーディング順序は、次のように例示される。以下の例では、T0およびD0は、それぞれ、ベースビューのテクスチャビューコンポーネントと深度ビューコンポーネントとを指し、TiおよびDiは、それぞれ、i番目の依存ビューのテクスチャビューコンポーネントと深度ビューコンポーネントとを指す。以下の例では、3つのビューが考慮される。
[0084]第1の例では、考慮されるビューは、T0、D0、D1、D2、T1、およびT2である。この例では、ベースビュー(T0およびD0)は、テクスチャ優先コーディング順序でコーディングされるが、一方依存ビューは、深度優先コーディング順序でコーディングされる。ハイブリッドコーディング順序が、3D−AVCの共通試験条件において現在使用されている。別の例では、コーディングの順序は、T0、D0、T1、D1、T2、およびD2である。すなわち、すべてのビューコンポーネントが、テクスチャ優先コーディング順序でコーディングされる。
[0085]ビュー間予測がTiに対して可能にされる場合、参照テクスチャビューは、ビュー間参照ピクチャを含むビューとして定義され、対応する深度ビューは、参照テクスチャビューのものと同じビュー順序インデックスを有する参照深度ビューとして定義される。
[0086]深度マップを介した3D−AVC視差ベクトル導出について、次に説明する。視差ベクトルを導出するための技法は、各低レベルコーディングツールとともに変化し得るが、一般に、依存ビューの深度データは、テクスチャビューコンポーネントコーディングのための視差ベクトル導出のために使用される。これは、深度優先コーディング順序のために、依存ビューの深度ビューが利用可能であるからである。使用される低レベルコーディングツールは、3D−AVCにおける、インループブロックベースビュー合成ビュー間予測(BVSP)および深度ベース動きベクトル予測(D−MVP:depth-based motion vector prediction)である。ビデオコーダ、たとえば、ビデオデコーダ30は、(依存フレームと呼ばれることがある)依存ビュー中の(深度マップと呼ばれることがある)深度ビューの深度値から変換された視差ベクトルを使用し得る。3D−AVC参照ソフトウェアでは、典型的には、実際の深度マップ値から特定のビューに対する視差への変換プロセスの結果が、カメラパラメータとともにルックアップテーブルに記憶される。
[0087]視差ベクトル導出における使用のための、4隅からの最大深度導出について、次に説明する。深度値を導出するために、ビデオデコーダ30は、最初に、深度ビューコンポーネントの参照深度ブロックを識別する。参照深度ブロックは、現在のMB/パーティション/サブブロックにコロケートされ/対応する。識別された参照深度ブロック中で、ビデオデコーダ30は、左上、右上、左下、および右下の深度サンプルに対応する4隅のサンプルにアクセスする。深度値は、次いで、4隅の深度サンプルの最大値を取ることによって計算される。
[0088]最後に、ビデオデコーダ30は、計算された深度値を使用し、視差ベクトルの垂直成分を0に設定して、ルックアップテーブルから視差ベクトルの水平成分を推論する。この方法では、MBがパーティションまたはサブブロックに分割されるとき、アクセスされた深度サンプルの数が増加する。たとえば、16×16MBが4つの8×8パーティションに区分されるとき、アクセスされるべき深度サンプルの数は16であり、16×16MBが16個の4×4パーティションに区分されるとき、アクセスされるべき深度サンプルの数は64である。
[0089]3D−AVCにおけるBVSPは、3D−AVCならびに他のコーディング規格によってサポートされたコーディングモードである。BVSPは、W. Su他による「3DV−CE1.a:Block−Based View Synthesis Prediction for 3DV−ATM」(JCT3V−A0107)において最初に提案されており、それは、以下のリンクからダウンロード可能であり、参照により本明細書に組み込まれ、すなわち、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/1_Stockholm/wg11/JCT3V−A0107−v1.zipである。
[0090]図4は、後方ワーピングに基づくBVSPの概念図である。図4を参照すると、以下のコーディング順序、(T0、D0、D1、T1)が利用され、Tがテクスチャビューを指し、Dが深度ビューを指す、と仮定する。テクスチャコンポーネントT0は、ベースビューであり、T1は、VSPでコーディングされた依存ビューである。深度マップコンポーネントD0(図4に示されない)およびD1は、T0およびT1に関連付けられたそれぞれの深度マップである。
[0091]依存ビューT1では、現在コーディングされているブロックCbのサンプル値が、VSP予測を使用して、ベースビューT0のサンプル値からなる参照エリアR(Cb)から予測される(VSP予測)。コーディングされるべき現在のサンプル(すなわち、Cb)と参照サンプル(すなわち、R(Cb))との間の変位ベクトル(Disp_vec)は、現在コーディングされているテクスチャサンプルに関連付けられた深度マップ値からのT1とT0との間の導出された視差ベクトルとして示される。
[0092]深度値から視差ベクトルへの変換のプロセスは、たとえば以下の式を用いて実行され得る。
ただし、jおよびiは、Cb内のローカル空間座標であり、dCb(j,i)は、ビュー1の深度マップ画像における深度マップ値であり、Zは、実際の対応する深度値であり、Dは、特定のビュー0への導出された視差ベクトルの水平成分である。パラメータf、b、ZnearおよびZfarは、カメラセットアップを指定するパラメータであり、すなわち、使用される焦点距離(f)、ビュー#1とビュー#0との間のカメラ分離(b)、および、深度マップ変換のパラメータを表す深度範囲(Znear、Zfar)である。
[0093]いくつかの例では、導出された視差ベクトルの垂直成分が0に設定されることに留意されたい。また、いくつかの3DV−ATM実装形態では、式(1)および(2)は、あらゆる深度マップ値(0...255)についてすでに事前計算され、ルックアップテーブルとして記憶されている。
[0094]図3の例では、Cbは、現在コーディングされているブロックを表す。ビデオデコーダ30は、BVSPモードを使用してCbをコーディングし得る。Cbが、BVSPモードを使用してコーディングされるべきである場合、ビデオデコーダ30は、Cbに対応する深度ブロック、図4におけるd(Cb)を識別する。この点について、対応することは、コロケートされることを意味する。深度ブロックd(Cb)は、複数の深度値を含む。d(Cb)のそれらの深度値のうちの1つまたは複数に基づいて、ビデオデコーダ30は、視差値を決定する。その視差値が視差ベクトルのx成分として使用されてよく、y成分が0に設定される。視差ベクトルを使用して、ビデオデコーダ30は、異なるビュー中の、参照ブロック、図4の例におけるR(cb)を識別し、その参照ブロックに基づいて、ブロックCbをインター予測し得る。
[0095]深度ビュー解像度およびテクスチャビュー解像度は同じであってよく、または、それらは異なってよい。深度ビュー解像度およびテクスチャビュー解像度が異なる場合、ビデオデコーダ30は、コロケートされた深度そのブロックを発見するために変換を実行し得る。ビデオデコーダ30は、次のように変換を実行し得る。(x,y)はブロックCbの左上位置を示すとする。深度ビュー中のコロケートされたブロックの左上隅の位置は、(x>>reduced_resolution_flag,y>>reduced_resolution_flag)によって表される。シンタックス要素「reduced_resolution_flag」は、あるビューコンポーネントペアの深度ビューコンポーネントが同じビューコンポーネントペアのテクスチャビューコンポーネントのルーマ成分よりも低い空間解像度を有すること、ならびに、深度ビューコンポーネントの幅と高さの両方が、すべてのテクスチャビューコンポーネントの幅および高さの半分であることを指定するために、1に等しい。
[0096]本開示の次のセクションは、BVSPのいくつかの実装問題について説明する。1つの問題は、BVSPブロックの指示、すなわち、どのようなブロックが、BVSPモードを使用してコーディングされるべきであるかを含む。BVSPブロックは、次のように示される。
−MBレベルにおける1つのフラグが、現在のMBが従来のスキップ/直接モードでコーディングされるかどうか、または、スキップ/直接モードでコーディングされるが、合成参照コンポーネントから予測されるかどうかを、シグナリングするために使用される。このコンテキストでは、「従来のスキップ/直接モードは、H.264/AVCコーディング規格において使用されるスキップ/直接モードの拡張バージョンを指し、合成参照コンポーネントは、ビュー間ブロックから生成された参照ブロックを指す。
−MBパーティション(16×16から8×8まで)ごとに、各参照ピクチャリスト中の参照インデックス(または、3D−AVCのためのいくつかの提案と同様に、フラグ)が、参照ピクチャをシグナリングするために使用される。パーティションがBVSPモードでコーディングされるとき、BVSPコーディングされたブロックのための動きベクトルがないので、動きベクトル差分はシグナリングされない。
[0097]フラグまたは参照インデックスのいずれかが合成参照コンポーネントを示すとき、以下の項目において説明されるような1つのパーティションの予測が呼び出される。言い換えれば、あるビットは、MBまたはMBパーティションが従来のスキップ/直接モードまたはBVSPモードを使用してコーディングされるかどうかを示し得る。BVSPモードでは、ビデオデコーダ30は、MBまたはMBパーティションをK×Kブロックに分割し、K×Kブロックごとに、コロケートされた深度ブロックを識別し、深度ブロックから視差値を得て、視差ベクトルによって指されたビュー間参照ピクチャからMBまたはMBパーティションを予測することによって、(あなたが合成スキップ/直接と呼んでいる)BVSPモードを使用してコーディングされるMBまたはMBパーティションの部分を復号する。
[0098]3D−AVCにおいて、従来のスキップ/直接モードでは、ビデオデコーダ30は、次のように動きベクトルと参照インデックスとを導出する。参照ビュー中の(視差ベクトルによって指される)対応するブロックの動きベクトルは、利用可能な場合、現在のブロックの動きベクトルに等しく設定され、現在のブロックの参照インデックスがそれに応じて導出される。ビュー間動きベクトルが利用不可能である、すなわち、視差ベクトルによって指されたベースビュー中の参照ブロックがイントラコーディングされる場合、参照インデックスをゼロに設定することによって、従来の中央値ベース動きベクトル予測方式が使用される。
[0099]BVSPに関する別の実装問題は、予測導出プロセスを含む。そのサイズがN×Mによって示される(ただし、NまたはMは、8または16とする)、MBパーティションごとに、そのMBパーティションがBVSPモードでコーディングされる場合、現在のMBパーティションは、K×K(ただし、Kは、3D−AVCのためのいくつかの提案と同様に8×8であるか、4×4、2×2、または1×1であり得る)に等しいサイズをもついくつかの下位領域にさらに区分される。下位領域ごとに、別個の視差ベクトルが導出され、各下位領域が、ビュー間参照ピクチャ中の導出された視差ベクトルによって位置を特定された1つのブロックから予測され、すなわち、図4におけるR(cb)である。いくつかの例示的な共通試験条件では、Kは4になるように定義される。導出された視差ベクトルは、BVSPコーディングされたブロックについては記憶されず、その理由は、そのようなベクトルを使用するコーディングツールがないからであることに留意されたい。
[0100]BVSPに関する別の実装問題は、視差ベクトル導出プロセスを含む。深度優先コーディング順序が適用されるとき、視差ベクトルは、図4の例に示されるように、対応する非ベース深度ビュー中の対応する深度ブロックからの深度値を変換することによって導出される。単一の深度値が、最初に、K×K下位領域にコロケートされた/対応する深度ブロックからの4隅の深度サンプルにアクセスすることによって、および、次いで、4つのアクセスされた深度サンプルの最大値を取ることによって、計算される。計算された深度値は、後に、式(1)および(2)を使用して、視差ベクトルに変換される。テクスチャ優先コーディング順序が適用されるとき、非ベーステクスチャビューを復号するときに対応する非ベース深度ビューが利用不可能であるので、BVSPモードが無効化される。
[0101]通常のインター予測モードのための3D−AVCにおける深度ベース動きベクトル予測(D−MVP)について、次に説明する。D−MVPは、深度優先コーディング順序のために利用可能である、現在のビューの関連付けられた深度マップデータを使用する、動きベクトル予測方法を指す。その方法は、依存ビュー中のテクスチャビューコンポーネントとともに適用される。
[0102]3D−AVCでは、動きベクトル予測は、隣接ブロックを依然として利用する。隣接ブロックは、順に、現在のブロックの左ブロックと、上ブロックと、右上ブロックと、左上ブロックとを含む。左上ブロック中の動きベクトルは、他の3つの隣接ブロックのうちの1つが動きベクトルを含んでおらず、したがって利用不可能であると見なされるときのみ、使用される。
[0103]隣接ブロックからの動きベクトルは、予測されるべき現在の動きベクトルとして異なるタイプを有する場合、利用不可能であると見なされる。動きベクトルのタイプは、対応する参照インデックスに依存する。すなわち、参照インデックスがビュー間参照ピクチャに対応する場合、動きベクトルは、視差動きベクトルであり、タイプは「視差」であり、参照インデックスが(同じビュー中の)時間参照ピクチャに対応する場合、動きベクトルは、時間動きベクトルであり、タイプは「時間」である。
[0104]3D−AVCでは、3つの隣接ブロックが利用可能である場合、3つの隣接ブロック中の動きベクトルが、現在のブロックの動きベクトル予測のために採用される。時間的予測では、それらの動きベクトルがすべて同じタイプを有し、同じ参照インデックスを有する場合、H.264/AVCと同様に、メディアンフィルタが直接使用され、他の場合(動きベクトルが異なるタイプに属しており、異なる参照インデックスを有する場合)、動きベクトルがさらに導出される。現在の参照ピクチャがビュー間参照ピクチャであるとき、隣接ブロック位置における動きベクトルタイプおよびそれらの参照インデックスがチェックされ、隣接ブロックがすべて同じタイプと同じ参照インデックスとを有する場合、メディアンフィルタが適用される。どちらの場合も、3つよりも少ない隣接ブロックが利用可能である場合、3つの隣接ブロックが利用可能になるように、利用不可能なブロックのための動きベクトルがさらに導出される。
[0105]空間隣接ブロックが、利用可能な時間動きベクトルを含んでいない場合、時間動きベクトルが、現在のブロックについて予測されるべきである。参照ビューピクチャ中の現在のブロックの参照ブロックは、ブロックベースビュー合成予測に関して上記で説明されたように導出された視差ベクトルによって識別される。参照ブロックの中心位置を含んでいるブロックの動きベクトルは、時間動きベクトルである場合、現在の空間隣接ブロックについて導出される。時間動きベクトルが利用不可能であると見なされる(イントラブロック、または、現在の参照ピクチャとともに整合された参照ビュー中の参照ピクチャを指していない)場合、導出された動きベクトルは、ゼロに設定される。
[0106]空間隣接ブロックが利用可能な視差動きベクトルを含んでおらず、視差動きベクトルが、現在のブロックについて予測されるべきである場合、現在のブロックについて導出された視差ベクトルは、ブロックベースビュー合成予測に関して上記で説明されたような視差動きベクトルに変換される。
[0107]3D−AVCでは、D−MVP方法が、H.264/AVCにおける従来の中央値関数ベース動きベクトル予測に組み込まれる。そのため、空間隣接ブロック中の動きベクトルが利用可能である(または、当初は利用可能ではないが、上記で述べられた方法で利用可能にされる)とき、中央値関数は、依然として3つの動きベクトルに適用され得るが、そのうちのすべてが同じタイプに属するべきである。
[0108]スキップおよび直接モードのための3D−AVCにおけるビュー間動き予測について、次に説明する。3D−AVCにおけるビュー間動き予測は、Pスキップ、Bスキップ、B−16×16直接、およびB−8×8直接モードで実行される。これらのモードでは、参照ブロックを識別するために使用される視差ベクトルは、隣接ブロックから、または、現在のMBに関連付けられた対応する深度ブロックからの導出された視差ベクトルから(ブロックベースビュー合成予測に関しては、上記参照)のいずれかのものである。候補隣接ブロックA、BおよびCが、それが視差動きベクトルを有するかどうかにかかわらず、その利用可能性についてチェックされる。1つの空間隣接ブロックが利用可能である、すなわち、それが視差動きベクトルを含んでいる場合、この視差動きベクトルが視差ベクトルになる。
[0109]空間隣接ブロックA、BおよびCのための視差ベクトルが利用不可能である場合、現在のMBに関連付けられた、深度ブロックから導出された視差ベクトル(ブロックベースビュー合成予測に関しては、上記参照)が、利用不可能なブロックのために使用される。その後、視差ベクトルを得るために、メディアンフィルタが適用される。
[0110]上記のプロセスから得られたこの視差ベクトルは、参照ビューピクチャ中の参照ブロックを得るために使用される。参照ブロック内で、動きベクトル(すなわち、ビュー間動きベクトル)は、利用可能な場合、現在のブロックの動きベクトルに等しく設定され、現在のブロックの参照インデックスがそれに応じて導出される。
[0111]ビュー間動きベクトルが利用可能ではない、すなわち、視差ベクトルによって指されたベースビュー中の参照ブロックがイントラコーディングされる場合、従来の中央値ベース動きベクトル予測方式が使用される。この場合、参照インデックスが最初に導出され、セクション1.4.5において説明されたD−MVP方式が、現在のMBのための動きベクトル予測を導出するために使用される。
[0112]視差ベクトル導出のための改善について、次に説明する。JCT3V−C0122では、簡略化された視差ベクトル導出方法が提案されている。提案された方法では、現在のMBが、スキップまたは直接ではないインター予測モードでコーディングされるとき、現在のMBを用いたすべてのパーティション/サブブロックは、現在のMBの関連付けられた深度ブロックの右下の深度サンプルから計算される、導出された視差ベクトルを共有する。ただし、現在のMBがスキップまたは直接モードでコーディングされるとき、異なる視差ベクトル導出プロセス、すなわち、参照深度ブロックの4隅のサンプルにアクセスすることが、利用される。さらに、BVSPモードでは、MBパーティションの各K×K下位領域の参照深度ブロックの4隅のサンプルにアクセスすることが、依然として必要とされる。
[0113]JCT3V−C0134では、インターモードでコーディングされるとき、同じMB内のすべてのパーティションブロックが、現在のMBにコロケートされる/対応する同じ参照深度ブロックからの4隅のサンプルの最大深度値から導出される単一の視差ベクトルを共有することが提案されている。ただし、BVSPモードでは、MBパーティションの各K×K下位領域の参照深度ブロックの4隅のサンプルにアクセスすることが、依然として必要とされる。
[0114]本開示は、次に、3D−HEVCの態様について説明する。隣接ブロックベース視差ベクトル導出(NBDV)は、すべてのビューに対してテクスチャ優先コーディング順序を使用する3D−HEVCにおける視差ベクトル導出方法として使用され得る。現在の3D−HEVCの設計では、NBDVから導出された視差ベクトルは、参照ビューの深度マップから深度データを取り出すことによって、さらに精緻化され得る。NBDVでは、視差ベクトル(DV)は、2つのビューの間の変位を推定するものとして使用される。隣接ブロックは、ビデオコーディングにおいてほぼ同じ動き/視差情報を共有するので、現在のブロックは、良い予測子として、隣接ブロック中の動きベクトル情報を使用することができる。この考えに従って、NBDVは、異なるビュー中の視差ベクトルを推定するために、隣接視差情報を使用する。
[0115]いくつかの空間隣接ブロックおよび時間隣接ブロックは、最初に定義される。隣接ブロックの各々が、次いで、現在のブロックと候補ブロックとの間の相関の優先度によって決定された、あらかじめ定義された順序でチェックされる。視差動きベクトル(すなわち、ビュー間参照ピクチャを指す動きベクトル)が候補中で発見されると、視差動きベクトルが視差ベクトルに変換される。2つのセットの隣接ブロックが利用される。一方のセットは、空間隣接ブロックからのものであり、他方のセットは、時間隣接ブロックからのものである。
[0116]3D−HEVCは、JCT3V−A0097、3D−CE5.h:Disparity vector generation results、L. Zhang、Y. Chen、M. Karczewicz(Qualcomm)において提案された隣接ブロック(ベース)視差ベクトル(NBDV)方法を、最初に採用した。暗黙的視差ベクトル(implicit disparity vector)が、JCTVC−A0126、3D−CE5.h:Simplification of disparity vector derivation for HEVC−based 3D video coding、J. Sung、M. Koo、S. Yea(LG)において簡略化されたNBDVとともに含まれた。それに加えて、JCT3V−B0047、3D−CE5.h related:Improvements for disparity vector derivation、J. Kang、Y. Chen、L. Zhang、M. Karczewicz(Qualcomm)では、NBDVは、復号されたピクチャバッファに記憶された暗黙的視差ベクトルを除去することによって、さらに簡略化されるが、また、RAPピクチャ選択を用いてコーディング利得も改善した。
[0117]現在の(本開示の時間現在での)NBDVでは、5つの空間隣接ブロックが、視差ベクトル導出のために使用される。それらは、図5におけるA0、A1、B0、B1またはB2によって示されるような、現在のブロック(たとえば、現在の予測ユニット(PU))の左下ブロック、左ブロック、右上ブロック、上ブロック、および左上ブロックである。これらの隣接ブロックは、HEVCにおけるマージモードにおいて使用されたものと同じであることに留意されたい。したがって、追加のメモリアクセスが必要とされない。
[0118]時間隣接ブロックをチェックするために、ビデオコーダは、候補ピクチャリストの構成プロセスを最初に実行し得る。一例では、現在のビューからの最大2つの参照ピクチャが、候補ピクチャとして扱われ得る。ビデオコーダは、コロケートされた参照ピクチャを候補ピクチャリストに最初に挿入することができ、参照インデックスの昇順に候補ピクチャの残りによって後続される。両方の参照ピクチャリスト中で同じ参照インデックスをもつ参照ピクチャが利用可能であるとき、コロケートされたピクチャの同じ参照ピクチャリスト中のものが、他のものに先行し得る。候補ピクチャリスト中の候補ピクチャごとに、時間隣接ブロックを導出するために3つの候補領域が決定され得る。
[0119]ブロックがビュー間動き予測でコーディングされるとき、異なるビュー中の対応するブロックを選択するために、視差ベクトルが導出され得る。暗黙的視差ベクトル(IDV、導出された視差ベクトルとも呼ばれる)は、ビュー間動き予測において導出された視差ベクトルと呼ばれる。ブロックが動き予測でコーディングされるとしても、導出された視差ベクトルは、後続のブロックをコーディングする目的のために破棄されない。
[0120]3D−HTM6.0の現在の設計では、ビデオコーダは、NBDVプロセスに従って、時間隣接ブロック中の視差動きベクトルと、空間隣接ブロック中の視差動きベクトルと、次いでIDVとを、順にチェックする。視差動きベクトルまたはIDVが発見されると、プロセスは終了させられる。
[0121]ビデオコーダは、深度情報にアクセスすることによって、NBDVを使用して導出された視差ベクトルをさらに精緻化し得る。1つの視差ベクトルがNBDVプロセスから導出されるとき、ビデオコーダは、参照ビューの深度マップから深度データを取り出すことによって、視差ベクトルをさらに精緻化し得る。精緻化プロセスは、2つのステップを含み得る。
a)ベースビューなど、前にコーディングされた参照深度ビュー中の導出された視差ベクトルによって、対応する深度ブロックの位置を特定し、対応する深度ブロックのサイズは、現在のPUのものと同じである。
b)対応する深度ブロックの4隅のピクセルから1つの深度値を選択し、それを、精緻化された視差ベクトルの水平成分に変換する。視差ベクトルの垂直成分は、不変である。
[0122]ビデオコーダは、ビュー間動き予測のために、精緻化された視差ベクトルを使用し得るが、一方精緻化されていない視差ベクトルは、ビュー間残差予測のために使用される。加えて、精緻化された視差ベクトルは、後方VSPモードでコーディングされる場合、1つのPUの動きベクトルとして記憶され得る。
[0123]本開示の技法によれば、空間隣接ブロックのうちの1つは、BVSPコーディングされたブロックに対応し得、空間隣接ブロックのうちの別のものは、非BVSPコーディングされたブロックに対応し得る。たとえば、ブロックA1は、BVSPコーディングされたブロックに対応し得、ブロックB1は、非BVSPコーディングされたブロックに対応し得る。それにもかかわらず、現在のブロックのための動き情報をコーディングするとき、ビデオコーダは、同じ論理関数を使用してブロックA1とブロックB1の両方のための動き情報にアクセスし得る。上記で述べられた例における、BVSPコーディングされたブロック、すなわち、ブロックA1のための動き情報は、参照ピクチャを識別する参照インデックスを含むことが仮定される。したがって、ブロックA1の動き情報にアクセスするための別個の論理関数が、ビデオコーダにおいて与えられる必要がない。
[0124]図6は、隣接ブロックを使用する後方ビュー合成予測(BVSP)に関する技法を示す概念図である。BVSPは、3D−HEVCのための技法として提案され、採用されている。JCT3V−C0152において提案されたような後方ワーピングVSP手法が、第3回JCT−3V会合において採用された。この後方ワーピングVSPの基本的な考えは、3D−AVCにおけるブロックベースVSPと同じである。これらの2つの技法の両方は、動きベクトル差分を送信することを避け、より正確な動きベクトルを使用するために、後方ワーピングおよびブロックベースVSPを使用する。実装の詳細は、異なるプラットフォームのために異なる。本開示は、概して、3D−HEVCにおける後方ビュー合成予測を指すために頭文字語BVSPを使用するが、BVSPはまた、3D−AVCのブロックベースビュー合成予測を指すこともある。
[0125]3D−HTMでは、テクスチャ優先コーディングが共通試験条件において適用される。したがって、対応する非ベース深度ビューは、1つの非ベーステクスチャビューを復号するとき、利用不可能である。したがって、深度情報が推定され、BVSPを実行するために使用される。ブロックのための深度情報を推定するために、隣接ブロックから視差ベクトルを最初に導出し、次いで、参照ビューから深度ブロックを取得するために、導出された視差ベクトルを使用することが提案された。
[0126]HTM5.1試験モデルでは、NBDV(隣接ブロック視差ベクトル)として知られる視差ベクトル予測子を導出するためのプロセスが存在する。(dvx,dvy)がNBDV関数から識別された視差ベクトルを示し、現在のブロック位置が(blockx,blocky)であるとする。参照ビューの深度画像中の(blockx+dvx,blocky+dvy)における深度ブロックをフェッチすることが提案された。フェッチされた深度ブロックは、現在の予測ユニット(PU)の同じサイズを有することになり、それが次いで、現在のPUのための後方ワーピングを行うために使用されることになる。図6は、参照ビューから深度ブロックの位置を特定し、次いで、BVSP予測のためにその深度ブロックを使用するためのステップを示す。
[0127]図6の例では、深度ピクチャ150およびテクスチャピクチャ154は、同じビューに対応するが、一方テクスチャピクチャ152は、異なるビューに対応する。特に、テクスチャピクチャ152は、参照ピクチャとして働く、テクスチャピクチャ154に対してコーディングされている現在のブロック160を含む。ビデオコーダは、現在のブロック160に隣接する、隣接ブロック162を参照し得る。隣接ブロック162は、以前に決定された視差ベクトル166を含む。視差ベクトル166は、現在のブロック160のための視差ベクトル164として導出され得る。したがって、視差ベクトル164は、参照ビューの深度ピクチャ150中の深度ブロック156を参照する。
[0128]ビデオコーダは、次いで、後方ワーピングを実行するために、現在のブロック160のピクセルのための視差値168(すなわち、テクスチャ値)を決定するために、深度ブロック156のピクセル(すなわち、深度値)を使用し得る。ビデオコーダは、次いで、視差値168によって識別されたピクセルから、現在のブロック160のための予測されたブロック(すなわち、BVSP参照ブロック)のための値を合成し得る。ビデオコーダは、次いで、この予測されたブロックを使用して、現在のブロック160を予測し得る。たとえば、ビデオエンコーダ20によるビデオ符号化中に、ビデオエンコーダ20は、残差値を生成するために、予測されたブロックと現在のブロック160との間のピクセルごとの差分を計算し得、ビデオエンコーダ20は、次いで、それを変換、量子化、およびエントロピー符号化し得る。他方では、ビデオデコーダ30によるビデオ復号中に、ビデオデコーダ30は、残差データをエントロピー復号、逆量子化、および逆変換し、次いで、現在のブロック160を再生するために、残差データを(ピクセルごとのベースで)予測されたブロックと結合し得る。
[0129]JCT3V−C0152は、以下で説明されるように、3D−HEVCのBVSP技法への変更を提案した。特に、イタリック体のテキストは、3D−HEVCに追加されたテキストを表すが、一方「除去された(removed:)」が前に付けられた括弧付きのテキストは、3D−HEVCからの削除を表す。
BVSPがシーケンスにおいて可能にされる場合、ビュー間動き予測のためのNBDVプロセスが変更され、差異が以下のパラグラフにおいて強調される。
●時間隣接ブロックの各々について、それが視差動きベクトルを使用する場合、その視差動きベクトルが視差ベクトルとして返され、それが、3D−HEVCのセクション1.6.1.3において説明された方法を用いてさらに精緻化される。
●空間隣接ブロックの各々について、以下が適用される。
〇順に、参照ピクチャリスト0および参照ピクチャリスト1について、
□それが視差動きベクトルを使用する場合、その視差動きベクトルが視差ベクトルとして返され、それが、セクション1.6.1.3において説明された方法を用いてさらに精緻化される。
□そうでない場合、それがBVSPモードを使用する場合、関連付けられた動きベクトルが視差ベクトルとして返される。それが、セクション1.6.1.3において説明されたものと同様の方法で、さらに精緻化される。ただし、最大深度値は、4隅のピクセルではなく、対応する深度ブロックのすべてのピクセルから選択され、精緻化された視差ベクトルの垂直成分は、0に設定される。
●空間隣接ブロックの各々について、それがIDVを使用する場合、そのIDVが視差ベクトルとして返され、それが、セクション1.6.1.3において説明された方法を用いてさらに精緻化される。
[0130]導入されたBVSPモードは、空間インターコード化モードとして扱われ、BVSPモードの使用を示すフラグが、PUごとに維持され得る。ビットストリーム中でフラグをシグナリングするのではなく、新しいマージング候補(BVSPマージング候補)がマージ候補リストに追加された。フラグは、復号されたマージ候補インデックスがBVSPマージング候補に対応するかどうかに依存する。BVSPマージング候補は、次のように、JCT3V−C0152によって、定義される。
●参照ピクチャリストごとの参照ピクチャインデックス:−1
●参照ピクチャリストごとの動きベクトル:精緻化された視差ベクトル
[0131]JCT3V−C0152では、BVSPマージング候補の挿入された位置は、以下で説明されるように、空間隣接ブロックに依存する。
●5つの空間隣接ブロックのいずれか(図5に示されたA0、A1、B0、B1、またはB2)が、BVSPモードでコーディングされる、すなわち、隣接ブロックの維持されたフラグが1に等しい場合、BVSPマージング候補は、対応する空間マージング候補として扱われ、マージ候補リストに挿入される。BVSPマージング候補は、マージ候補リストに一度のみ挿入されることになる。
●そうでない(5つの空間隣接ブロックのいずれもがBVSPモードでコーディングされない)場合、BVSPマージング候補は、時間マージング候補の直前に、マージ候補リストに挿入される。
[0132]組み合わされた双予測マージング候補導出プロセス中に、BVSPマージング候補を含めることを避けるために、追加の条件がチェックされ得ることに留意されたい。
[0133]JCT3V−J0152は、そのサイズがN×Mによって示された、各BVSPコーディングされたPUが、K×K(ただし、Kは4または2であり得る)に等しいサイズをもついくつかの下位領域にさらに区分されることを、さらに規定した。下位領域ごとに、別個の視差動きベクトルが導出され、各下位領域が、ビュー間参照ピクチャ中の導出された視差動きベクトルによって位置を特定された1つのブロックから予測される。言い換えれば、BVSPコーディングされたPUのための動き補償ユニットのサイズは、K×Kに設定される。共通試験条件では、Kは4に設定される。
[0134]JCT3V−J0152は、BVSPモードでコーディングされた1つのPU内の下位領域(4×4ブロック)ごとに、対応する4×4深度ブロックが、第1に、上記で上述された精緻化された視差ベクトルを用いて、参照深度ビュー中で位置を特定されることを、さらに規定している。第2に、対応する深度ブロック中の16個の深度ピクセルの最大値が選択される。第3に、最大値が視差動きベクトルの水平成分に変換される。視差動きベクトルの垂直成分は、0に設定される。
[0135]3D−HEVCでは、テクスチャ優先コーディング順序が適用されるとき、予測ユニット(PU)ごとに、参照深度ビュー中の考慮深度値あり/なしで、視差ベクトルがNBDVから導出され得る。視差ベクトルが取得された後、視差ベクトルは、1つのPUがBVSPモードでコーディングされる場合、そのPUの4×4下位領域ごとにさらに精緻化されることになる。
[0136]3D−HEVCは、精緻化プロセスを2つのステップを含むものとして説明している、すなわち、1)導出された視差ベクトルによって位置を特定される参照深度ビュー中の4×4深度ブロックから1つの最大深度値を選択し、2)精緻化された視差ベクトルの垂直成分を0になるように保ちながら、深度値を精緻化された視差ベクトルの水平成分に変換する。視差ベクトルが1つのPUの1つの4×4下位領域について精緻化された後、3D−HEVCは、精緻化された視差ベクトルが、動き補償のために参照テクスチャビュー中で1つのブロックの位置を特定するために使用されることを規定している。
[0137]3D−AVCにおけるNBDVについて、次に説明する。いくつかの3Dコーディング技法によれば、MBレベルNBDVは、現在のMBのための視差ベクトルを導出するために使用され、動きベクトル予測のためにさらに使用され得る。視差動きベクトルが識別されると、すなわち、時間または空間隣接ブロックのうちの1つがビュー間参照ピクチャを使用すると、それが現在のMBのための視差ベクトルとして返される。
[0138]いくつかの3Dコーディング技法によれば、NBDVから導出された視差ベクトルは、対応する深度ブロックにアクセスすることによって、さらに精緻化され得る。たとえば、(視差ベクトルによって識別された)参照ビューの深度ブロックの4隅の深度値が使用されてよく、最大深度値が選択され、視差ベクトルに変換される。他の3Dコーディング技法によれば、BVSPは、各4×4または8×8ブロックに対してある方法で利用され、対応する深度ブロックが、視差動きベクトルを生成するために使用される。視差ベクトル導出プロセスと同様に、(精緻化された視差ベクトルによって識別された)深度ブロックの4隅が使用されてよく、最大深度値が、視差動きベクトルに変換されるように選択される。
[0139]本開示の技法は、いくつかの潜在的な問題に対処し得る。一例として、インターモードにおけるD−MVPでは、1つのMB中の様々なパーティションブロックのためのDVを導出するために、深度−DV変換が複数回実行される必要があり、そのことが、現在のMBがパーティション/サブブロックに分割されるとき、メモリからアクセスされるべき深度サンプルの数を増す。別の例として、スキップ/直接モードにおけるD−MVPでは、関連付けられた深度ブロックの4隅のサンプルの最大深度値を取ることによって、視差ベクトルがMBについて導出され、これは、高いメモリアクセス帯域幅を必要とする。別の例として、BVSPモードでは、現在の下位領域の関連付けられた深度ブロックの4隅の深度サンプルの最大値を取ることによって、視差ベクトルがサイズK×Kの下位領域について導出され、これは、高いメモリアクセス帯域幅を犠牲にして行われる。別の例として、スキップ/直接MBでは、ビュー間動きベクトルが利用可能ではないとき、従来の中央値ベース動きベクトル予測が使用される。別の例として、3D−HEVCでは、視差ベクトルがビュー間予測された隣接ブロックから導出されるとき、現在のブロックのための視差ベクトルを精緻化することは、参照深度ブロックの4隅にアクセスすることのみを必要とする。視差ベクトルがBVSPコーディングされた隣接ブロックから導出されるとき、現在のブロックのための視差ベクトルを精緻化することと、BVSPモードでコーディングされたPUのための4×4または8×8下位領域のための視差動きベクトルを生成することとは、わずかに異なる設計を必要とし、その設計は、参照ブロックのすべてのサンプルにアクセスすることを必要とする。
[0140]本開示は、深度マップにアクセスすることによって視差ベクトルが導出されるとき、視差(動き)ベクトル導出プロセスを簡略化し得る技法を導入する。これらの技法の説明は、主に3D−AVCに焦点を合わせ得るが、同様の考えが3D−HEVCに適用可能であり得ることを理解されたい。より詳細には、本開示は、深度−視差変換方式が利用されるとき、様々なインター予測モード(スキップ/直接、インターを含む)ならびにBVSPモードのための、簡略化および統合された視差ベクトル導出方式を提供する。計算およびメモリアクセスが簡略化され得る。
[0141]図7は、8×8深度ブロック170の一例を示す。深度ブロック170の4隅のサンプルは、172A〜172Dと標示される。ビットストリーム中の「reduced_resolution_flag」は、深度ビューがテクスチャビューに対して低減された解像度を有するかどうか、または、深度ビューがテクスチャビューと同じ解像度を有するかどうかを示し得る。reduced_resolution_flagが1に等しい場合、テクスチャビュー中の16×16マクロブロックは、対応するテクスチャビュー中の、8×8深度ブロック170など、対応する(すなわち、コロケートされた)8×8深度ブロックを有することになる。reduced_resolution_flagが0に等しい場合、、テクスチャビュー中の16×16マクロブロックは、対応するテクスチャビュー中の対応する(すなわち、コロケートされた)16×16深度ブロックを有することになる。以下のいくつかの例について、深度ブロック170を参照することによって説明する。
[0142]本開示の1つの技法によれば、非ベーステクスチャビューコンポーネントをコーディングするとき、ビデオデコーダ30は、現在のテクスチャブロックを含んでいるマクロブロックに対応する深度ブロックにアクセスすることによって、マクロブロック全体のためのただ1つの視差ベクトルを導出し得る。現在のMBがスキップ/直接モードでコーディングされるか、他のインターモードでコーディングされるかにかかわらず、視差ベクトルがMB内の任意のブロックについて必要とされるときは常に、ビデオデコーダ30は、同じMBレベル視差ベクトル導出から同じ唯一の視差ベクトルを一度導出し得る。ビデオデコーダ30は、たとえば、隅のサンプル172A〜172Dの深度値にアクセスし、4隅のサンプルから最大深度値を決定することによって、視差ベクトルを導出し得る。ビデオデコーダ30は、次いで、たとえば、ルックアップテーブルまたは上記の式(1)と(2)とを使用して、最大深度値を視差値に変換し得る。いくつかの実装形態では、ビデオデコーダ30は、4隅のサンプル以外の深度値にアクセスすることによって、および/または、最大値以外の値を識別することによって、視差ベクトルを導出し得る。
[0143]一例として、非ベーステクスチャビューのマクロブロックについて、ビデオデコーダ30は、マクロブロックに対応する深度ブロックの位置を特定し、深度ブロックの少なくとも1つの深度値に基づいて、マクロブロックのための視差ベクトルを導出し得る。ビデオデコーダ30は、導出された視差ベクトルに基づいてマクロブロックの第1のサブブロックをコーディングし、導出された視差ベクトルに基づいてマクロブロックの第2のサブブロックをコーディングし得る。深度ブロックおよびマクロブロックは、コロケートされ得る。ビデオデコーダ30は、深度ブロックの2つ以上の隅のサンプルの深度値を含む、深度値のセットを決定することによって、マクロブロックのための視差ベクトルを導出し、深度値のセットから、最大深度値を識別し得る。ビデオデコーダ30は、たとえば、スキップモードおよび直接モードのうちの1つを使用して、第1のサブブロックをコーディングし、スキップモードまたは直接モード以外のインター予測モードを使用して、第2のサブブロックをコーディングし得る。
[0144]スキップ/直接モードとインター予測との間の1つの潜在的な差分が、次いで、マクロブロックのとき)スキップ/直接モードを使用してコーディングされ、いかなる区分もないようになり、すなわち、16×16のMBサイズが完全にコーディングされる。MBが、スキップ/直接以外のモード(すなわち、インターモード)を使用してコーディングされるとき、MB区分が存在し得る。また、各MBパーティションがサブブロック(すなわち、H.264/AVCサブブロック)にさらに区分され得る。本開示の技法によれば、MBのために導出された同じ視差ベクトルが、スキップ/直接およびインターモードなど、すべてのモードのために使用され得る。
[0145]本開示の別の技法によれば、同じビュー内の深度ビューコンポーネントの対応する深度ブロックから視差ベクトルを導出するとき、現在のMBの対応する深度ブロックの左下(172A)および右下(172B)隅の深度サンプルのみがアクセスされる。図7に示されるように、典型的には、MBは、3D−AVCにおいて、同じビュー中の8×8参照ブロックに対応する。深度ブロックは、典型的には、(半分に水平および垂直ダウンサンプドされて)より低い空間解像度を有する。したがって、16×16マクロブロックは、8×8深度ブロックに対応する。本開示の1つの技法によれば、隅のサンプル172Aおよび172Bのみが、MB全体のための視差ベクトルを導出するためにアクセスされる。さらに、アクセスされた深度サンプルの最大深度値は、それを視差ベクトルに変換するために使用される。代替的に、参照深度ブロックの左上(172C)および右下(172B)隅のサンプルのみがアクセスされる。代替的に、参照深度ブロックの左上(172C)および右上(172D)隅のサンプルのみがアクセスされる。代替的に、参照深度ブロックの左下(172A)および右下(172B)隅のサンプルのみがアクセスされる。代替的に、参照深度ブロックの左下(172A)および右上(172D)隅のサンプルのみがアクセスされる。代替的に、参照深度ブロックの右下(172B)および右上(172D)隅のサンプルのみがアクセスされる。代替的に、対応する深度ブロック内に位置する任意の他の2つのサンプルがアクセスされ、たとえば、1つの中心ピクセルおよび1つの隅のピクセル、または2つの中心ピクセルなどである。代替的に、2つのサンプルがアクセスされるとき、最大値ではなく、これらの2つの深度サンプルの平均/最小値が使用され得る。
[0146]本開示の別の技法によれば、同様の深度−視差変換方法が、MBパーティション内でサイズK×Kの下位領域ごとに視差ベクトルを導出するために、BVSPモードにおいて使用され得る。参照深度ブロックが、K×K下位領域について最初に識別され、MBレベル視差ベクトル導出におけるものと同様に、参照深度ブロックの相対座標(relative coordination)における位置(たとえば、K×K下位領域に対応する/コロケートされた参照深度ブロックの右下および左下隅)をもつ同じ隅のサンプルがアクセスされる。代替的に、参照深度ブロックのより少数の隅のサンプルが、BVSPのためにアクセスされ得る。
[0147]本開示の別の技法によれば、現在の3D−AVCのスキップ/直接モードでは、ビュー間動きベクトルが利用不可能であるとき、動きベクトル予測子が、3つの隣接ブロックの動きベクトルの中間を使用するのではなく、参照インデックスを含む、第1の利用可能な空間ネイバーの動きベクトルであるように設定される。空間ネイバーのいずれかが0以上の参照ピクチャインデックスを有するかどうかを、順にチェックする。真である場合、現在のMBの動きベクトルおよび参照ピクチャインデックスは、それぞれ、空間隣接ブロックの動きベクトルおよび参照インデックスに等しくなるように設定され、チェックプロセスが終了する。
[0148]本開示の別の技法によれば、NBDVが3D−AVCのために使用され、参照ビューの深度マップが、視差ベクトルを精緻化するために使用されるとき、同じ2つの隅のサンプルが、精緻化された視差ベクトルに変換されるべき1つの最適な深度値を得るために使用され得る。
[0149]本開示の別の技法によれば、NBDVが3D−AVCのために使用され、参照ビューの深度マップが、BVSPモードで視差動きベクトルを生成するために使用されるとき、同じ2つの隅のサンプルが、視差動きベクトルに変換されるべき1つの最適な深度値を得るために使用され得る。
[0150]本開示の別の技法によれば、3D−HEVCでは、同様に、BVSPモードで視差動きベクトルのための参照ブロックにアクセスすることは、隣接ブロックの隅のサンプルを単にチェックすることによって、ある方法で整合され得る。言い換えれば、K×K下位領域ごとに、ビデオデコーダ30は、K×K下位領域を含んでいる予測ユニットの視差ベクトルによって識別されたK×K下位領域の参照深度ブロックの隅のサンプルのみをチェックする。さらに、上記で説明されたような簡略化は、MBブロックではなく、PUまたはCUに精緻化を適用することによって、3D−HEVCに適用可能であり得る。
[0151]上記で説明された技法を実装する態様について、スキップ/直接モードにおける視差ベクトル導出から始めて、以下でより詳細に説明する。この例では、現在のピクチャに対する現在のMBの左上サンプルのロケーションは、(x,y)によって示される。1つの深度値(D)は、次のように参照深度ビュー中の左下および右下隅のピクセルから、現在のMBについて選択される。
ただし、関数max(・)は、Di(iは0から1である)の最大値を返し、Diは、次のように計算されるi番目のピクセルロケーションにおける深度値を示す。
ここで、SMD_POSは、「reduced_resolution_flag」がそれぞれ1および0に等しいとき、7および15に等しい。1に等しい「reduced_resolution_flag」は、あるビューコンポーネントペアの深度ビューコンポーネントが同じビューコンポーネントペアのテクスチャビューコンポーネントのルーマ成分よりも低い空間解像度を有すること、ならびに、深度ビューコンポーネントの幅と高さの両方が、すべてのテクスチャビューコンポーネントの幅および高さの半分であることを指定する。0に等しい「reduced_resolution_flag」は、深度ビューコンポーネントとテクスチャビューコンポーネントの両方が存在するとき、それらが同じ空間解像度を有することを指定する。最後に、視差ベクトルの水平成分が、式(1)と(2)とを使用して、選択された深度値Dから計算され、視差ベクトルの垂直成分は、常に0に設定される。
[0152]インターモードにおける視差ベクトル導出について、次に説明する。この例では、現在のピクチャに対する(現在のパーティション/下位領域が位置する)現在のMBの左上位置は、(x,y)によって示される。1つの深度値(D)は、次のように参照深度ビュー中の左下および右下隅のピクセルから、現在のMBについて選択される。
ただし、関数max(・)は、Di(iは0から1である)の最大値を返し、Diは、次のように計算されるi番目のピクセルロケーションにおける深度値を示す。
ここで、SMD_POSおよびreduced_resolution_flagは、上記で説明されたように機能する。最後に、視差ベクトルの水平成分が、式(1)と(2)、またはルックアップテーブルを使用して、選択された深度値Dから計算され、視差ベクトルの垂直成分は、0に設定され得る。
[0153]BVSPモードにおける視差ベクトル導出について、次に説明する。K×K(ただし、Kは8または4であり得る)による下位領域のサイズ、現在のピクチャに対する現在のMBパーティション内の1つの下位領域の左上位置は、(x,y)によって示される。1つの深度値(D)は、次のように参照深度ビュー中の左下および右下隅のピクセルから、サイズK×Kの下位領域ごとに選択される。
ただし、関数max(・)は、Di(iは0から1である)の最大値を返し、Diは、次におけるi番目の深度ピクセルロケーションを示す。
ここで、VSP_Sは次のように計算される。
および、reduced_resolution_flagは、上記で定義されたように機能する。最後に、視差ベクトルの水平成分が、式(1)と(2)、またはルックアップテーブルを使用して、選択された深度値Dから計算され得、視差ベクトルの垂直成分は、0に設定され得る。
[0154]ビュー間動きが利用可能ではないときのスキップ/直接モードにおけるMVPについて、次に説明する。この例では、iが0、1および2に等しい、(0および1に等しいXについての)動きベクトルMvc_X[i]および参照インデックスRic_X[i]が、現在のMBの空間ネイバーA、BおよびCにそれぞれ示される。現在のスキップ/直接MBに対応するベースビュー中の参照ブロックがイントラモードで符号化されるとき、現在のMBのための予測された動きベクトル(Mvp0,Mvp1)および参照インデックス(Ri0,Ri1)が次のように計算される。
1.Mvp0,Mvp1の両方をゼロ動きベクトル[0,0]に等しく初期化し、参照インデックスRi0,Ri1が−1に等しく設定される。
2.すべての空間候補ネイバーが−1に等しい参照インデックスを有する(すなわち、すべてのi=0、1、2について、Ric_0[i]=−1およびRic_1[i]=−1)とき、現在のMBの動きベクトルおよび参照インデックスがゼロに設定される。
3.0から2であるiについて、以下が適用される。
〇i番目(i=0、1、2)の空間ネイバーがゼロ以上の参照インデックスを有する場合、予測された動きベクトルMvp0とMvp1とを、それぞれ、動きベクトルMvC_0[i]およびMvC_1[i]に等しくなるように設定する。さらに、参照インデックスRi0およびRi1が、それぞれ、参照インデックスRic_0[i]およびRic_1[i]に等しく設定される。
[0155]図8は、本開示で説明される技法を実装し得るビデオエンコーダの一例を示すブロック図である。たとえば、図8は、3D−AVC準拠または3D−HEVC準拠のいずれかのビデオエンコーダを表し得る、ビデオエンコーダ20を示す。ビデオエンコーダ20について、PU、TU、およびCUなど、あるHEVC用語を使用して説明するが、ビデオエンコーダ20に関して説明される技法はまた、H.264規格に従ってコーディングされたビデオとともに実行され得ることを理解されたい。
[0156]ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングとインターコーディングとを実行することができる。たとえば、ビデオエンコーダ20は、インター予測符号化またはイントラ予測符号化を実行できる。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間的冗長性を低減または除去するために、空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接フレームもしくはピクチャ内の時間的冗長性、または、異なるビュー中のピクチャ間の冗長性を低減または除去するために、時間的予測またはビュー間予測に依拠する。イントラモード(Iモード(登録商標))は、いくつかの空間ベースの圧縮モードのいずれかを指すことがある。単方向予測(Pモード)または双方向予測(Bモード)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指すことがある。
[0157]図8の例では、ビデオエンコーダ20は、ビデオデータメモリ40と、予測処理ユニット42と、参照ピクチャメモリ64と、加算器50と、変換処理ユニット52と、量子化処理ユニット54と、エントロピー符号化ユニット56とを含む。予測処理ユニット42は、動きおよび視差推定ユニット44と、動きおよび視差補償ユニット46と、イントラ予測ユニット48とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化処理ユニット58と、逆変換処理ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するために、デブロッキングフィルタ(図8に図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理することになる。デブロッキングフィルタに加えて、(ループ内またはループ後の)追加ループフィルタも使用され得る。
[0158]ビデオデータメモリ40は、ビデオエンコーダ20の構成要素によって符号化されるべきビデオデータを記憶し得る。ビデオデータメモリ40に記憶されたビデオデータは、たとえば、ビデオソース18から取得され得る。参照ピクチャメモリ64は、(たとえば、イントラ予測コーディングモードまたはインター予測コーディングモードとも呼ばれる、イントラコーディングモードまたはインターコーディングモードで)ビデオエンコーダ20によってビデオデータを符号化する際に使用するための、参照ビデオデータを記憶する復号ピクチャバッファ(DPBの一例である。ビデオデータメモリ40および参照ピクチャメモリ64は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)など、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ40および参照ピクチャメモリ64は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ40は、ビデオエンコーダ20の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0159]ビデオエンコーダ20は、ビデオデータを受信し、区分ユニット(図示せず)は、データをビデオブロックに区分する。この区分は、スライス、タイル、または他のより大きいユニットへの区分、ならびにビデオブロック区分(たとえば、マクロブロックパーティション、およびパーティションのサブブロック)をも含み得る。ビデオエンコーダ20は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示している。スライスは、複数のビデオブロックに(および、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット42は、誤差結果(たとえば、コーディングレートおよびひずみレベル)に基づいて現在のビデオブロックのために、複数のイントラコーディングモード(イントラ予測コーディングモード)のうちの1つ、または複数のインターコーディングモード(インター予測コーディングモード)のうちの1つなど、複数の可能なコーディングモードのうちの1つを選択し得る。予測処理ユニット42は、たとえば、現在のブロックをコーディングするために、BVSPモードを選択し得る。予測処理ユニット42は、得られたイントラコーディングされたブロックまたはインターコーディングされたブロックを、残差ブロックデータを生成するために加算器50に与え、参照ピクチャとして使用するための符号化されたブロックを再構成するために加算器62に与え得る。
[0160]予測処理ユニット42内のイントラ予測ユニット48は、空間圧縮を行うために、コーディングされるべき現在のブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対する現在のビデオブロックのイントラ予測コーディングを実行し得る。予測処理ユニット42内の動きおよび視差推定ユニット44ならびに動きおよび視差補償ユニット46は、時間圧縮を行うために、1つまたは複数の参照ピクチャ中の1つまたは複数の予測ブロックに対する現在のビデオブロックのインター予測コーディングを実行する。
[0161]動きおよび視差推定ユニット44は、ビデオシーケンスの所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンス中のビデオスライスをPスライスまたはBスライスに指定し得る。動きおよび視差推定ユニット44と動きおよび視差補償ユニット46とは、高度に統合され得るが、概念的な目的のために別々に示されている。動きおよび視差推定ユニット44によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、参照ピクチャ内の予測ブロックに対する、現在のビデオフレームまたはピクチャ内のビデオブロックの変位を示し得る。
[0162]予測ブロックは、絶対値差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきビデオブロックにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動きおよび視差推定ユニット44は、フルピクセル位置と分数ピクセル位置とに対する動き探索を実行し、分数ピクセル精度で動きベクトルを出力し得る。
[0163]動きおよび視差推定ユニット44は、ビデオブロックの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングされた(インター予測コーディングされた)スライスにおけるビデオブロックのための動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(RefPicList0)または第2の参照ピクチャリスト(RefPicList1)から選択され得、それらの参照ピクチャリストの各々は、参照ピクチャメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動きおよび視差推定ユニット44は、エントロピー符号化ユニット56と動きおよび視差補償ユニット46とに計算された動きベクトルを送る。
[0164]動きおよび視差補償ユニット46によって実行される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成すること、場合によってはサブピクセル精度への補間を実行することを伴い得る。現在のビデオブロックの動きベクトルを受信すると、動きおよび視差補償ユニット46は、動きベクトルが参照ピクチャリストのうちの1つにおいて指す予測ブロックの位置を特定し得る。ビデオエンコーダ20は、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。ピクセル差分値は、ブロックの残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。動きおよび視差補償ユニット46はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するための、ビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0165]いくつかの例では、動きおよび視差補償ユニット46は、現在のビュー中の現在のブロックのためにBVSPを実行し得る。すなわち、動きおよび視差補償ユニット46は、第1のビュー中の参照ピクチャメモリ64のピクチャを決定し得る。上記でより詳細に説明されたように、動きおよび視差補償ユニット46は、深度ビュー中の対応するブロックにアクセスすることによって、現在のブロックのための視差ベクトルを決定し得る。次いで、深度ブロックの深度値を使用して、動きおよび視差補償ユニット46は、予測されたブロックが、第1のビューおよび現在のビューとは異なる第2のビュー中で形成されるように、現在のブロック中のピクセルの位置に対して決定された、第1のビュー中のピクチャのピクセル値をワーピングし得る。動きおよび視差補償ユニット46は、この予測されたブロックを、残差を計算することにおいて、および、現在のブロックを再生することにおいてそれぞれ使用するために、加算器50および加算器62に与え得る。同様に、本開示の技法によれば、ビデオエンコーダ20は、動き情報が、予測されたブロック(すなわち、BVSP参照ブロック)がそこから合成される第1のビュー中のピクチャを識別する値を有する参照インデックスを含むように、現在のブロックのための動き情報を定義するシンタックスデータを符号化し得る。
[0166]イントラ予測ユニット48は、上記で説明されたように、動きおよび視差推定ユニット44と動きおよび視差補償ユニット46とによって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット48は、現在のブロックを符号化するために使用するべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット48は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット48(または、いくつかの例では、モード選択ユニット)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。たとえば、イントラ予測ユニット48は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択することができる。レートひずみ分析は、概して、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット48は、どのイントラ予測モードがブロックについて最良のレートひずみ値を呈するかを決定するために、様々な符号化されたブロックのひずみおよびレートから比率を計算し得る。
[0167]いずれの場合も、ブロックのイントラ予測モードを選択した後に、イントラ予測ユニット48は、ブロックについての選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット56に提供し得る。エントロピー符号化ユニット56は、本開示の技法に従って、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、送信ビットストリーム中に、複数のイントラ予測モードインデックステーブルおよび複数の修正されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々のために使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを含み得る。
[0168]予測処理ユニット42が、インター予測またはイントラ予測のいずれかを介して、現在のビデオブロックのための予測ブロックを生成した後、ビデオエンコーダ20は、現在のビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロックにおける残差ビデオデータは、変換処理ユニット52に適用され得る。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換のような変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット52は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換し得る。
[0169]変換処理ユニット52は、得られた変換係数を量子化処理ユニット54に送り得る。量子化処理ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化処理ユニット54は、次いで、量子化変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
[0170]量子化の後、エントロピー符号化ユニット56は量子化変換係数をエントロピー符号化する。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピー符号化方法もしくは技法を実行し得る。エントロピー符号化ユニット56によるエントロピー符号化の後、符号化されたビットストリームは、ビデオデコーダ30に送信されるか、またはビデオデコーダ30が後で送信するかもしくは取り出すためにアーカイブされ得る。エントロピー符号化ユニット56はまた、コーディングされている現在のビデオスライスのための動きベクトルと他のシンタックス要素とをエントロピー符号化することができる。
[0171]逆量子化処理ユニット58および逆変換処理ユニット60は、参照ピクチャの参照ブロックとして後で使用する目的でピクセル領域において残差ブロックを再構成するために、それぞれ逆量子化および逆変換を適用する。動きおよび視差補償ユニット46は、残差ブロックを参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動きおよび視差補償ユニット46はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、参照ピクチャメモリ64に記憶するための参照ブロックを生成するために、再構成された残差ブロックを動きおよび視差補償ユニット46によって生成された動き補償予測ブロックに加算する。参照ブロックは、後続のビデオフレームまたはピクチャ中のブロックをインター予測するために、動きおよび視差推定ユニット44と動きおよび視差補償ユニット46とによって参照ブロックとして使用され得る。
[0172]このようにして、ビデオエンコーダ20は、本開示で説明される1つまたは複数の例示的な技法を実装するように構成され得るビデオエンコーダの一例である。たとえば、ビデオデータメモリ40は、ビデオデータを記憶する。ビデオデータは、依存ビューのテクスチャビデオコンポーネントと、そのテクスチャビューコンポーネントに対応する深度ビューコンポーネントとを含んでよく、その各々を、ビデオエンコーダ20は、3D−AVC準拠または3D−HEVC準拠ビデオコーディングプロセスにおいて符号化することになる。
[0173]本開示で説明される技法では、ビデオエンコーダ20は、3D−AVC準拠または3D−HEVC準拠ビデオコーディングプロセスにおいて、ビデオデータの依存ビューのテクスチャビューコンポーネントを符号化するように構成される、1つまたは複数のプロセッサを含み得る。上記で説明されたように、3D−AVCにおける各ビューは、テクスチャビューコンポーネントと深度ビューコンポーネントとを含む。3D−AVCにおいて、1つのベースビューと、1つまたは複数のエンハンスメントビューまたは依存ビューとがあり、ただし、1つまたは複数のエンハンスメントビューまたは依存ビューのテクスチャビューコンポーネントは、ビュー間予測され得る。
[0174]テクスチャビューコンポーネントを符号化するために、ビデオエンコーダ20は、少なくとも1つの隣接ブロックが、依存ビュー以外のビュー中のビュー間参照ピクチャを参照する視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、テクスチャビューコンポーネント中の現在のブロックの1つまたは複数の隣接ブロックの動き情報を評価するように構成され得る。ビデオエンコーダ20は、隣接ブロックのうちの1つのための視差動きベクトルに基づいて、現在のブロックのための視差ベクトルを導出し得る。テクスチャ優先コーディングのために、ビデオエンコーダ20は、テクスチャビューコンポーネントを符号化することに続いて、テクスチャビューコンポーネントに対応する、ビデオデータの深度ビューコンポーネントを符号化し得る。
[0175]いくつかの例では、ビデオエンコーダ20の予測処理ユニット42は、視差ベクトル導出およびBVSPコーディングのための本開示で説明される例を実装するように構成されたプロセッサの一例であり得る。いくつかの例では、予測処理ユニット42以外のユニット(たとえば、1つまたは複数のプロセッサ)が、上記で説明された例を実装することができる。いくつかの例では、予測処理ユニット42は、ビデオエンコーダ20の1つまたは複数の他のユニットとともに、上記で説明された例を実装することができる。いくつかの例では、ビデオエンコーダ20のプロセッサ(図8には図示せず)は、単独で、またはビデオエンコーダ20の他のプロセッサとともに、上記で説明された例を実装することができる。
[0176]図9は、本開示で説明される技法を実装し得るビデオデコーダの一例を示すブロック図である。図9は、本開示で説明される技法を実装し得るビデオデコーダの一例を示すブロック図である。たとえば、図9は、3D−AVC準拠または3D−HEVC準拠のいずれかのビデオデコーダを表し得る、ビデオデコーダ30を示す。ビデオデコーダ30について、PU、TU、およびCUなど、あるHEVC用語を使用して説明するが、ビデオデコーダ30に関して説明される技法はまた、H.264規格に従ってコーディングされたビデオとともに実行され得ることを理解されたい。
[0177]ビデオデコーダ30は、インター予測復号またはイントラ予測復号を実行することができる。図9は、ビデオデコーダ30を示す。図9の例では、ビデオデコーダ30は、ビデオデータメモリ69と、エントロピー復号ユニット70と、予測処理ユニット71と、逆量子化処理ユニット76と、逆変換処理ユニット78と、加算器80と、参照ピクチャメモリ82とを含む。予測処理ユニット71は、動きおよび視差補償ユニット72と、イントラ予測ユニット74とを含む。ビデオデコーダ30は、いくつかの例では、図8のビデオエンコーダ20に関して説明された符号化パスとは概して逆の復号パスを実行し得る。
[0178]ビデオデータメモリ69は、ビデオエンコーダ30の構成要素によって復号されるべき、符号化されたビデオビットストリームなどのビデオデータを記憶し得る。ビデオデータメモリ69に記憶されたビデオデータは、たとえば、ストレージデバイス34から、カメラなどのローカルビデオソースから、ビデオデータのワイヤードもしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ69は、符号化されたビデオビットストリームからの符号化されたビデオデータを記憶する、コーディングされたピクチャバッファ(CPB)を形成し得る。
[0179]参照ピクチャメモリ82は、(たとえば、イントラコーディングモードまたはインターコーディングモードで)ビデオデコーダ30によってビデオデータを復号する際に使用するための、参照ビデオデータを記憶する、復号されたピクチャバッファ(DPB)の一例である。ビデオデータメモリ69および参照ピクチャメモリ82は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)など、様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ69および参照ピクチャメモリ82は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ69は、ビデオデコーダ30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
[0180]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化されたビデオスライスのビデオブロックと、関連付けられるシンタックス要素とを表す、符号化されたビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化係数と、動きベクトルと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと他のシンタックス要素とを予測処理ユニット71に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[0181]ビデオスライスがイントラコーディングされた(I)スライスとしてコーディングされるとき、予測処理ユニット71のイントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコーディングされた(すなわち、B、またはP)スライスとしてコーディングされるとき、予測処理ユニット71の動きおよび視差補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルおよび他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ82に記憶された参照ピクチャに基づいて、デフォルト構成技法を使用して参照ピクチャリスト(RefPicList0およびRefPicList1)を構成し得る。
[0182]動きおよび視差補償ユニット72は、動きベクトルと他のシンタックス要素とを解析することによって現在のビデオスライスのビデオブロックについての予測情報を決定し、復号されている現在のビデオブロックのための予測ブロックを生成するために、予測情報を使用する。たとえば、動きおよび視差補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)と、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)と、スライスの参照ピクチャリストのうちの1つまたは複数についての構成情報と、スライスの各インター符号化されたビデオブロックのための動きベクトルと、スライスの各インターコーディングされたビデオブロックについてのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。
[0183]動きおよび視差補償ユニット72はまた、補間フィルタに基づいて補間を実行し得る。動きおよび視差補償ユニット72は、参照ブロックのサブ整数ピクセルの補間値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用し得る。この場合、動きおよび視差補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するために、その補間フィルタを使用し得る。
[0184]動きおよび視差補償ユニット72は、現在のビュー中の現在のブロックのための後方ビュー合成予測を実行し得る。すなわち、動きおよび視差補償ユニット72は、第1のビュー中の参照ピクチャメモリ82のピクチャを決定し得る。上記でより詳細に説明されたように、動きおよび視差補償ユニット72は、現在のブロックに対応する深度ブロックを決定し得、深度ブロックの深度値を使用して、動きおよび視差補償ユニット72は、予測されたブロック(すなわち、BVSP参照ブロック)が、第1のビューおよび現在のビューとは異なる第2のビュー中で形成されるように、現在のブロック中のピクセルの位置に対して決定された、第1のビュー中のピクチャのピクセル値をワーピングし得る。動きおよび視差補償ユニット72は、この予測されたブロックを、残差を計算することにおいて、および、現在のブロックを再生することにおいてそれぞれ使用するために、加算器50および加算器80に与え得る。同様に、本開示の技法によれば、ビデオデコーダ30は、動き情報が、予測されたブロックがそこから合成される第1のビュー中のピクチャを識別する値を有する参照インデックスを含むように、現在のブロックのための動き情報を定義するシンタックスデータを復号し得る。
[0185]逆量子化処理ユニット76は、ビットストリーム中で与えられ、エントロピー復号ユニット70によって復号された、量子化変換係数を逆量子化(inverse quantize)、(すなわち、逆量子化(de-quantize))する。逆量子化プロセスは、量子化の程度を決定するために、同様に、適用されるべき逆量子化の程度を決定するために、ビデオスライス中の各ビデオブロックについてビデオエンコーダ20によって計算される量子化パラメータを使用することを含み得る。逆変換処理ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換(たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセス)を変換係数に適用する。
[0186]動きおよび視差補償ユニット72が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックのための予測ブロックを生成した後に、ビデオデコーダ30は、逆変換処理ユニット78からの残差ブロックを動きおよび視差補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器80は、この加算演算を実行する1つまたは複数の構成要素を表す。所望される場合、ブロッキングアーティファクトを除去するために復号されたブロックをフィルタ処理するデブロッキングフィルタも適用され得る。ピクセル遷移を平滑化するために、または場合によってはビデオ品質を改善するために、(コーディングループ内またはコーディングループ後のいずれかの)他のループフィルタも使用され得る。次いで、所与のピクチャ中の復号されたビデオブロックは、その後の動き補償に使用される参照ピクチャを記憶する参照ピクチャメモリ82に記憶される。参照ピクチャメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上に後で提示するための、復号されたビデオを記憶する。
[0187]このようにして、ビデオデコーダ30は、本開示で説明される1つまたは複数の例示的な技法を実装するように構成され得るビデオデコーダの一例である。たとえば、ビデオデータメモリ69は、ビデオデータを記憶する。ビデオデータは、そこからビデオデコーダ30が依存ビューのテクスチャビデオコンポーネントと、そのテクスチャビューコンポーネントに対応する深度ビューコンポーネントとを復号することができる情報を含んでよく、その各々を、ビデオエンコーダ20は、3D−AVC準拠または3D−HEVC準拠ビデオコーディングプロセスにおいて符号化される。
[0188]本開示で説明される技法では、ビデオデコーダ30は、3D−AVC準拠または3D−HEVC準拠ビデオコーディングプロセスにおいて、ビデオデータの依存ビューのテクスチャビューコンポーネントを復号するように構成される、1つまたは複数のプロセッサを含み得る。テクスチャビューコンポーネントを復号するために、ビデオデコーダ30は、少なくとも1つの隣接ブロックが、依存ビュー以外のビュー中のビュー間参照ピクチャを参照する視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、テクスチャビューコンポーネント中の現在のブロックの1つまたは複数の隣接ブロックの動き情報を評価するように構成され得る。ビデオエンコーダ30は、隣接ブロックのうちの1つのための視差動きベクトルに基づいて、現在のブロックのための視差ベクトルを導出し得る。テクスチャ優先コーディングのために、ビデオエンコーダ30は、テクスチャビューコンポーネントを復号することに続いて、テクスチャビューコンポーネントに対応する、ビデオデータの深度ビューコンポーネントを復号し得る。
[0189]いくつかの例では、ビデオデコーダ30の予測処理ユニット71は、視差ベクトル導出およびBVSPコーディングのための本開示で説明される例を実装するように構成されたプロセッサの一例であり得る。いくつかの例では、予測処理ユニット71以外のユニット(たとえば、1つまたは複数のプロセッサ)が、上記で説明された例を実装することができる。いくつかの例では、予測処理ユニット71は、ビデオデコーダ30の1つまたは複数の他のユニットとともに、上記で説明された例を実装することができる。さらにいくつかの他の例では、ビデオデコーダ30のプロセッサ(図9には図示せず)は、単独で、またはビデオデコーダ30の他のプロセッサとともに、上記で説明された例を実装することができる。
[0190]図10は、本開示の技法による例示的な3Dビデオコーディングプロセスを示すフローチャートである。図10の技法は、3D−AVC準拠ビデオまたは3D−HEVC準拠ビデオのいずれかに適用可能であり得る。図10の技法について、たとえば、ビデオエンコーダ20などのビデオエンコーダ、またはビデオデコーダなどのビデオデコーダであり得る、一般的なビデオコーダに関して説明する。ビデオコーダは、第1のテクスチャビューのブロックが、BVSPモードを使用してコーディングされるべきであると決定する(110)。ビデオ復号を実行するとき、ビデオデコーダ30は、たとえば、第1のテクスチャビューのブロックがブロックベースビュー合成モードを使用してコーディングされるべきであることを示す、シンタックス要素を受信することによって、第1のテクスチャビューのブロックがBVSPモードを使用して復号されるべきであると決定し得る。ビデオ符号化を実行するとき、ビデオエンコーダ20は、たとえば、いくつかのコーディングパスを実行することと、所望のレートひずみトレードオフを生成するモードとして、BVSPモードを識別することとによって、第1のテクスチャビューのブロックがBVSPモードを使用してコーディングされるべきであると決定し得る。
[0191]ビデオコーダは、深度ビュー中で、第1のテクスチャビューのブロックに対応する深度ブロックの位置を特定する(112)。3D−AVCでは、この例におけるブロックは、マクロブロックまたはマクロブロックパーティションのK×K下位領域を指すことがある。3D−HEVCでは、ブロックはまた、K×K下位領域を指すことがある。対応する深度ブロックは、たとえば、3D−AVCでは、コロケートされた深度ブロックであってよく、または、3D−HEVCでは、NBDVを使用して生成された視差ベクトルによって識別される参照ベースビュー(すなわち、第2のビュー)中の深度ブロックであってよい。ビデオコーダは、深度ブロックの2つ以上の隅の位置のための深度値を決定する(114)。深度値に基づいて、ビデオコーダは、ブロックのための視差ベクトルを導出する(116)。視差ベクトルを使用して、ビデオコーダは、第2のテクスチャビューのブロックの位置を特定する(118)。ビデオコーダは、第2のテクスチャビューのブロックを使用して、第1のテクスチャビューのブロックをインター予測する(120)。第1のテクスチャビューは、たとえば、非ベーステクスチャビューであってよく、第2のテクスチャビューは、たとえば、ベーステクスチャビューであってよい。図10の技法が3D−AVC準拠ビデオコーダによって実装されるとき、第1のテクスチャビューのブロックは、たとえば、マクロブロックパーティションのサブブロックであり得る。図10の技法が3D−HEVC準拠コーダによって実装されるとき、第1のテクスチャビューのブロックは、たとえば、予測ユニットであり得る。
[0192]図11は、本開示の技法による例示的な3Dビデオコーディングプロセスを示すフローチャートである。図11の技法について、3D−AVC用語を使用して説明するが、それらの技法は、潜在的に、3D−HEVCなどの他のビデオコーディング規格に拡張され得る。図11の技法について、たとえば、ビデオエンコーダ20などのビデオエンコーダ、またはビデオデコーダなどのビデオデコーダであり得る、一般的なビデオコーダに関して説明する。ビデオコーダは、第1のテクスチャビュー、第1の深度ビュー、第2のテクスチャビュー、および第2の深度ビューに対して、テクスチャ優先コーディングを実行する(122)。第1のテクスチャビューおよび第1のベース深度ビューは、たとえば、ベースビューであり得るが、一方第2のテクスチャビューおよび第2の深度ビューは、非ベースビューである。
[0193]第2のテクスチャビューのマクロブロックについて、ビデオコーダは、第1の深度ビュー中で、マクロブロックに対応する深度ブロックの位置を特定する(124)。深度ブロックの少なくとも1つの深度値に基づいて、ビデオコーダは、マクロブロックのための視差ベクトルを導出する(126)。ビデオコーダは、たとえば、深度ブロックの2つ以上の隅のサンプルの深度値を含む、深度値のセットを決定することによって、視差ベクトルを導出し、深度値のセットから、最大深度値を識別し得る。最大深度値が、次いで、深度値を視差値に変換する変換テーブルに基づいて、または、何らかの他の技法を使用して、視差ベクトルに変換され得る。ビデオコーダは、導出された視差ベクトルに基づいて、マクロブロックの第1のサブブロックをコーディングする(128)。ビデオコーダは、導出された視差ベクトルに基づいて、マクロブロックの第2のサブブロックをコーディングする(130)。ビデオコーダは、たとえば、スキップモードおよび直接モードのうちの1つを使用して、第1のサブブロックをコーディングし、スキップモードまたは直接モード以外のインター予測モードを使用して、第2のサブブロックをコーディングし得る。図11の例では、サブブロックは、たとえば、H.264/AVCサブブロックであってよく、または、マクロブロックパーティションであってよい。
[0194]1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形コンピュータ可読記憶媒体、または、(2)信号もしくは搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法を実装するための命令、コードおよび/またはデータ構造を取り出すために、1つもしくは複数のコンピュータ、または1つもしくは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0195]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは、命令またはデータ構造の形態の所望のプログラムコードを記憶するために使用されコンピュータによってアクセスされ得る、任意の他の媒体を備え得る。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合には、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用されるディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)およびBlu−rayディスク(disc)を含み、一方ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0196]命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)のような1つもしくは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路によって実行され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または本明細書で説明された技法の実装に適した任意の他の構造のいずれかを指し得る。加えて、いくつかの態様では、本明細書に記載された機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/もしくはソフトウェアモジュール内に設けられる場合があるか、または複合コーデックに組み込まれる場合がある。また、本技法は、1つまたは複数の回路または論理要素において完全に実装され得る。
[0197]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、もしくはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、前述のように、適切なソフトウェアおよび/またはファームウェアとともに、様々なユニットがコーデックハードウェアユニットにおいて組み合わせられ得るか、または前述のような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合体よって設けられ得る。
[0198]様々な例について説明した。これらおよび他の例は、以下の特許請求の範囲内である。