[0034]本開示は、マルチビューおよび/またはマルチビュープラス深度(たとえば、3D−HEVC)ビデオコーディングにおけるビュー間予測の効率および品質を改善するための技法について説明する。特に、本開示は、マージモード動きベクトル予測のコーディング効率を改善するための技法を提案する。概して、マージモードは、ビデオエンコーダが動き情報をシグナリングすることができる効率を増大させるための技法である。ビデオエンコーダが現在のブロックを符号化するためにマージモードを使用するとき、ビデオエンコーダは、1つまたは複数のマージ候補を備えるマージ候補リストを生成する。マージ候補リスト内の各マージ候補は、異なる動き情報を示し得る。たとえば、マージ候補のうちの1つまたは複数は、現在のブロックの空間的隣接部または時間的隣接部を表すブロックの動き情報を指定し得る。さらに、マルチビューコーディングおよび3次元ビデオコーディングにおいて、マージ候補リストは、ビュー間予測動きベクトル候補(IPMVC)を含み得る。IPMVCを決定するために、ビデオエンコーダは、ビュー間参照ピクチャ内の対応するブロックを識別するのに現在のブロックの視差ベクトルを使用し得る。対応するブロックがイントラ予測されず、ビュー間予測されず、現在のブロックと異なる出力時間インスタンスにおける参照ピクチャ内の1つまたは複数の動きベクトルその指示位置を有する場合、IPMVCは、対応するブロックの動き情報を指定し得る。
[0035]ビデオエンコーダは、現在のブロックに関する予測ブロックを決定するために、マージ候補リストからマージ候補を選択し、選択されたマージ候補の動き情報を使用し得る。ビデオエンコーダは、残差データを生成するために予測ブロックを使用し得る。ビデオエンコーダは、ビットストリーム中に、残差データを表すデータを含み得る。加えて、ビデオエンコーダは、ビットストリーム中に、選択されたマージ候補のインデックスを表すデータを含み得る。
[0036]ビデオデコーダは、現在のブロックを復号するとき、同じマージ候補リストを構成することができ、選択されたマージ候補を決定するためにインデックスを使用することができる。次いで、ビデオデコーダは、現在のブロックに関する予測ブロックを決定するために、選択されたマージ候補の動き情報を使用し得る。ビデオデコーダは、現在のブロックのピクセル値を再構成するために残差データとともに予測ブロックを使用し得る。
[0037]いくつかの事例では、マージ候補リスト内のマージ候補によって指定された動き情報は、特にマルチビューまたは3次元ビデオコーディングが使用されているときは、あまり正確でない。その結果、ビットストリームサイズが増大する場合がある。いくつかの事例では、マージ候補リスト内のマージ候補は、IPMVCを導出するのに使用される視差ベクトルがあまり正確でないので、あまり正確でない。言い換えれば、不正確な視差ベクトルは、不正確なビュー間予測動きベクトル候補およびビュー間視差動きベクトル候補につながり得る。さらに、現在のブロックの視差ベクトルは、現在のブロックに空間的に隣接するブロックの1つまたは複数の視差動きベクトルに基づいて決定され得る。空間的に隣接するブロックの視差動きベクトルが現在のブロックの視差動きベクトルに高く相関し得ることは、マージ候補リストを生成しながら十分には活用されない。
[0038]本開示の技法は、これらの欠陥のうちの1つまたは複数に対処し得る。たとえば、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、ビデオデータの現在のブロックの空間的隣接ブロック間で、第1の参照ピクチャリストに対応する第1の利用可能な視差動きベクトルを決定し得る。さらに、ビデオコーダは、視差シフト動きベクトル(DSMV)候補を導出するために第1の利用可能な視差動きベクトルの水平成分をシフトさせ得る。次いで、ビデオコーダは、DSMV候補をマージ候補リストに追加し得る。このように決定されたDSMV候補は、精度の増大を有し、したがって、より小さいビットストリームサイズをもたらし得る。
[0039]図1は、本開示の技法を利用し得る例示的なビデオ符号化/復号システム10を示すブロック図である。図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを与えるソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介してビデオデータを宛先デバイス14に与える。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備える場合がある。場合によっては、ソースデバイス12および宛先デバイス14はワイヤレス通信のために装備され得る。
[0040]宛先デバイス14は、コンピュータ可読媒体16を介して復号されるべき符号化ビデオデータを受信し得る。コンピュータ可読媒体16は、符号化ビデオデータをソースデバイス12から宛先デバイス14に移動することが可能なタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信することを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの任意のワイヤレスまたは有線の通信媒体を備える場合がある。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワークなどのパケットベースのネットワーク、またはインターネットなどのグローバルネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を促進するために有用であり得る任意の他の機器を含み得る。
[0041]いくつかの例では、符号化データは、出力インターフェース22から記憶デバイスへ出力され得る。同様に、符号化データは、入力インターフェースによって記憶デバイスからアクセスされ得る。記憶デバイスは、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性もしくは不揮発性のメモリ、または符号化ビデオデータを記憶するための任意の他の適当なデジタル記憶媒体などの、様々な分散されたまたは局所的にアクセスされるデータ記憶媒体のうちのいずれかを含み得る。さらなる例では、記憶デバイスは、ソースデバイス12によって生成される符号化されたビデオを記憶する、ファイルサーバまたは別の中間的な記憶デバイスに相当し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して記憶デバイスの記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的ファイルサーバは、ウェブサーバ(たとえば、ウェブサイト用)、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準的なデータ接続を介して符号化ビデオデータにアクセスし得る。これは、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、またはファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した、その両方の組合せを含み得る。記憶デバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[0042]本開示の技法は、ワイヤレスのアプリケーションまたはセッティングに必ずしも限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオプレイバック、ビデオブロードキャスティングおよび/またはビデオテレフォニーなどの適用例をサポートするために一方向または双方向のビデオ送信をサポートするように構成され得る。
[0043]図1の例では、ソースデバイス12は、ビデオソース18と、深度推定ユニット19と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、深度画像ベースレンダリング(DIBR:depth image based rendering)ユニット31と、ディスプレイデバイス32とを含む。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または構成を含んでもよい。たとえば、ソースデバイス12は、外部カメラなどの外部のビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、統合されたディスプレイデバイスを含むのではなく、外部のディスプレイデバイスとインターフェースしてもよい。
[0044]図1の例示されたシステム10は、一例にすぎない。本開示の技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。概して、本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。その上、本開示の技法は、ビデオプリプロセッサによっても実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14に送信するためのコード化ビデオデータを生成する、そのようなコーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素と復号構成要素とを含むように実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、またはビデオテレフォニーのための、ビデオデバイス12とビデオデバイス14との間の一方向または双方向のビデオ送信をサポートし得る。
[0045]ソースデバイス12のビデオソース18は、ビデオカメラ、以前にキャプチャされたビデオを含むビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースなどの、ビデオキャプチャデバイスを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。しかしながら、上述のように、本開示に記載される技法は、一般にビデオコーディングに適用可能であり、ワイヤレスおよび/または有線の適用例に適用され得る。各場合において、ビデオエンコーダ20は、キャプチャされたビデオ、プリキャプチャされたビデオ、またはコンピュータ生成されたビデオを符号化し得る。次いで、出力インターフェース22は、コンピュータ可読媒体16上に符号化ビデオ情報を出力し得る。
[0046]ビデオソース18は、ビデオエンコーダ20にビデオデータの複数のビューを与え得る。たとえば、ビデオソース18は、各々が、撮影されている特定のシーンに対して一意の水平位置を有するカメラのアレイに対応し得る。代替的に、ビデオソース18は、たとえばコンピュータグラフィックスを使用して異なる水平カメラの視点からビデオデータを生成し得る。深度推定ユニット19は、テクスチャ画像内のピクセルに対応する深度ピクセルに関する値を決定するように構成され得る。たとえば、深度推定ユニット19は、音響航法/測距(SONAR:Sound Navigation and Ranging)ユニット、光検出/測距(LIDAR:Light Detection and Ranging)ユニット、またはシーンのビデオデータを記録しながら実質的に同時に深度値を直接決定することが可能な他のユニットを表し得る。
[0047]追加または代替として、深度推定ユニット19は、異なる水平カメラ視点から実質的に同時にキャプチャされた2つ以上の画像を比較することによって間接的に深度値を計算するように構成され得る。画像内の実質的に同様のピクセル値の間の水平視差を計算することによって、深度推定ユニット19は、シーン内の様々なオブジェクトの深度を概算することができる。いくつかの例では、深度推定ユニット19は、ビデオソース18と機能的に統合される。たとえば、ビデオソース18がコンピュータグラフィックス画像を生成するとき、深度推定ユニット19は、たとえば、ピクセルのz座標と、テクスチャ画像をレンダリングするのに使用されるオブジェクトとを使用してグラフィカルオブジェクトに関する実際の深度マップを与え得る。
[0048]コンピュータ可読媒体16は、ワイヤレスブロードキャストまたは有線ネットワーク送信などの一時的な媒体、または、ハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスク、または別のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、ソースデバイス12から符号化ビデオデータを受信することができ、たとえば、ネットワーク送信を介して、その符号化ビデオデータを宛先デバイス14に与えることができる。同様に、ディスクプレス加工施設などの媒体製造施設のコンピューティングデバイスは、ソースデバイス12によって生成された符号化ビデオデータを受信し、符号化ビデオデータを含むディスクを製造し得る。したがって、様々な例では、コンピュータ可読媒体16は、様々な形態の1つまたは複数のコンピュータ可読媒体を含むものと理解され得る。
[0049]宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信し得る。コンピュータ可読媒体16の情報は、ビデオエンコーダ20によって定義されビデオデコーダ30によっても使用される、ブロックおよび他のコード化ユニット、たとえば、ピクチャグループ(GOP)の特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、復号ビデオデータをユーザに表示する。ディスプレイデバイス32は、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの、様々なディスプレイデバイスのいずれかを備え得る。いくつかの例では、ディスプレイデバイス32は、たとえば閲覧者に対する3次元(3D)視覚効果を生成するために、同時にまたは実質的に同時に2つ以上のビューを表示することが可能なデバイスを備える。
[0050]宛先デバイス14のDIBRユニット31は、ビデオデコーダ30から受信された復号されたビューのテクスチャおよび深度情報を使用して、合成されたビューをレンダリングし得る。たとえば、DIBRユニット31は、対応する深度マップ中のピクセルの値に応じてテクスチャ画像のピクセルデータに関する水平視差を決定し得る。DIBRユニット31は、次いで、決定された水平視差によりテクスチャ画像中のピクセルを左または右にオフセットすることによって、合成された画像を生成し得る。このように、ディスプレイデバイス32は、任意の組合せにおいて、復号されたビューおよび/または合成されたビューに対応し得る、1つまたは複数のビューを表示することができる。
[0051]図1には示されないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は各々、オーディオエンコーダおよびデコーダと統合されてよく、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するための、適切なMUX−DEMUXユニット、または他のハードウェアとソフトウェアとを含み得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0052]ビデオエンコーダ20およびビデオデコーダ30は各々、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなどの、様々な適切なエンコーダ回路のいずれかとして実装され得る。本技法がソフトウェアに部分的に実装されるとき、デバイスは、ソフトウェアに対する命令を適切な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するための1つまたは複数のプロセッサを使用してハードウェアにおいて命令を実行し得る。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれてもよく、そのいずれかは、複合エンコーダ/デコーダ(コーデック)の一部として、それぞれのデバイスに統合され得る。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0053]概して、本開示の技法は、アドバンストコーデックに基づいたマルチビューおよび/または3Dビデオコーディングに関する。本開示の技法は、多種多様なビデオコーディング規格のいずれかに適用され得る。たとえば、ビデオエンコーダ20およびビデオデコーダ30は、ビデオ圧縮規格に応じて動作し得る。例示的なビデオコーディング規格としては、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、および他のプロプライエタリ規格もしくは業界規格またはそのような規格の拡張がある。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、MPEG−4,Part10と呼ばれることがあるITU−T H.264規格、Advanced Video Coding(AVC)(すなわち、H.264/AVC)、または、ITU−T H.264/AVCのマルチビューコーディング(MVC)拡張およびITU−T H.264/AVCのスケーラブルビデオコーディング(SVC)拡張などのH.264/AVCの拡張に応じて動作する。
[0054]ISO/IEC Moving Picture Experts Group(MPEG)とともにITU−T Video Coding Experts Group(VCEG)は、共同ビデオ部会(JVT)として知られる共同パートナーシップの産物としてITU−T H.264/MPEGー4(AVC)規格を策定した。いくつかの態様では、本開示で説明する技法は、概してH.264/AVC規格に準拠するデバイスに適用され得る。H.264/AVC規格は、本明細書ではH.264規格もしくはH.264仕様、またはH.264/AVC規格もしくは仕様と呼ばれることがある、ITU−T Study Groupによる2005年3月付けのITU−T勧告H.264、Advanced Video Coding for generic audiovisual servicesに記載されている。Joint Video Team(JVT)はH.264/AVCへの拡張の取組みを続けている。
[0055]さらに、ITU−T Video Coding Experts Group(VCEG)とISO/IEC Motion Picture Experts Group(MPEG)とのJoint Collaboration Team on Video Coding(JCT−VC)によって開発された新しいビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)がある。現在、VCEGおよびMPEGのJoint Collaboration Team on 3D Video Coding(JCT−3V)は、HEVCに基づいて3DV規格を開発中である。HEVCに基づく3DV規格に関する規格化の取組みとしては、HEVCに基づくマルチビュービデオコーデック(MV−HEVC)の規格化があり、別の部分としては、HEVCに基づく3Dビデオコーディング(3D−HEVC)の規格化がある。HEVCにおけるコーディングユニット(CU)レベルまたは予測ユニット(PU)レベル内のモジュールが再設計される必要がないように、またMV−HEVCのために完全には再使用することができないように、MV−HEVCにおいて、ハイレベルシンタックス(HLS)変化だけが与えられる。3D−HEVC用に、コーディングユニット/予測ユニットレベルにおけるコーディングツールを含む新規のコーディングツールが、テクスチャビューと深度ビューの両方のために、含められ、サポートされ得る。いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、HEVC、MV−HEVC、または3D−HEVCに応じて動作し、HEVCテストモデル(HM)に準拠し得る。したがって、本開示の技法は、ITU−T H.264/AVC(アドバンストビデオコーディング)のマルチビュービデオコーディング(MVC)拡張、HEVC規格の3Dビデオ(3DV)拡張(たとえば、3D−HEVC)、または他のコーディング規格に適用され得る。
[0056]HEVCの標準化の取組みは、HEVCテストモード(HM)と呼ばれるビデオコーディングデバイスの発展型モデルに基づく。HMは、たとえば、ITU−T H.264/AVCに従う既存のデバイスに対してビデオコーディングデバイスのいくつかの追加の機能を仮定する。たとえば、H.264は9個のイントラ予測符号化モードを提供するが、HMは33個もの角度イントラ予測符号化モードプラスDCモードと平面モードとを提供することができる。
[0057]2014年3月26日付けでhttp://phenix.it−sudparis.eu/jct/doc_end_user/documents/10_Stockholm/wg11/JCTVC−J1003−v8.zip(本明細書では「HEVC WD8」と呼ばれる)からダウンロードできる、Brossら、「High Efficiency Video Coding(HEVC) text specification draft 8」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第10回会合:ストックホルム、スウェーデン、2012年7月11日〜20日は、HEVC規格のドラフトである。2014年3月26日付けでhttp://phenix.int−evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC−K1003−v10.zip(本明細書では「HEVC WD9」と呼ばれる)からダウンロードできる、Brossら、「High Efficiency Video Coding(HEVC) text specification draft 9」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第11回会合:上海、中国、2012年10月10日〜19日は、HEVC規格の別のドラフトである。2013年6月25日付けでhttp://phenix.int−evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC−L1003−v34.zip(本明細書では「HEVC WD10」と呼ばれる)からダウンロードできる、Brossら、「High Efficiency Video Coding(HEVC) text specification draft 10」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第12回会合:ジュネーブ、スイス、2013年1月14日〜23日は、HEVC規格の別のドラフトである。
[0058]2013年6月25日付けでhttp://phenix.it−sudparis.eu/jct2/doc_end_user/documents/4_Incheon/wg11/JCT3V−D1005−v1.zip(以下、「3D−HEVC Test Model4」)において利用可能な、Techら、「3D−HEVC Test Model4」、JCT3V−D1005_spec_v1、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第4回会合:インチョン、韓国、2013年4月20日〜26日は、3D−HEVCの参照ソフトウェアの記載および作業中のドラフトである。3D−HEVC用のソフトウェア3D−HTMは、以下のリンク、すなわち、[3D−HTM version 7.0]:https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM−7.0/からダウンロード可能である。3D−HEVC用の3D−HTMの別のバージョンは、以下のリンク、すなわち、[3D−HTM version 5.0]:https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM−5.0/からダウンロード可能である。
[0059]説明のために、本開示の技法について、主に、ITU−T H.264/AVCのMVC拡張または3D−HEVCのいずれかに関して説明する。しかしながら、本開示の技法は、3次元効果をもたらすために使用されるビデオデータをコーディングするための他の規格に適用され得る。
[0060]概して、HEVCのHMの作業中のモデルは、ビデオフレームまたはピクチャが、ルーマサンプルとクロマサンプルの両方を含むコーディングツリーユニット(CTU)または最大コーディングユニット(LCU)のシーケンスに分割され得ることを記載している。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大コーディングユニットであるLCUのサイズを定義し得る。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分される場合がある。スライスは、コーディング順にいくつかの連続するCTUを含む。コード化スライスは、スライスヘッダとスライスデータとを備え得る。スライスのスライスヘッダは、スライスについての情報を提供するシンタックス要素を含むシンタックス構造であり得る。言い換えれば、スライスヘッダは、スライス内に含まれるすべてのビデオブロックに関連するデータ要素を含む。スライスデータは、スライスのコード化CTUを含み得る。
[0061]各ツリーブロックは、4分木に従って、コーディングユニット(CU)に分割され得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはツリーブロックに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。
[0062]4分木データ構造の各ノードは、対応するCUのシンタックスデータを与え得る。たとえば、4分木のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUのシンタックス要素は、再帰的に定義され、CUがサブCUに分割されるかどうかに依存し得る。CUがさらに分割されない場合、そのCUはリーフCUと呼ばれる。いくつかの例では、元のリーフCUの明示的な分割が存在しない場合でも、リーフCUの4つのサブCUは、リーフCUと呼ばれ得る。たとえば、16×16サイズのCUがさらに分割されない場合、この16×16CUが決して分割されなくても、4つの8×8サブCUはリーフCUとも呼ばれる。
[0063]CUは、CUがサイズ差異を有しないことを除いて、H.264規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、4つの子ノード(サブCUとも呼ばれる)に分割され、各子ノードは、次に親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードと呼ばれる、最後の分割されていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化ビットストリームに関連するシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックが分割され得る最大回数を定義することができ、コーディングノードの最小サイズを定義することもできる。それに応じて、ビットストリームは最小コーディングユニット(SCU:smallest coding unit)を定義することもできる。本開示は、「ブロック」という用語を、HEVCのコンテキストにおいてCU、PU、またはTUのうちのいずれか、または他の規格のコンテキストにおいて同様のデータ構造(たとえば、H.264/AVCのマクロブロックおよびそのサブブロック)を参照するために使用し得る。
[0064]CUは、「コーディングノード」と、コーディングノードに関連する予測ユニット(PU)および変換ユニット(TU:transform unit)とを含む場合がある。「コーディングノード」は、シンタックス要素の組を備え得る。CUは、階層的4分木におけるノードに対応し得るので、「コーディングノード」を含んでいると言われる場合がある。CUのサイズは、コーディングブロックのサイズに対応し、いくつかの例では、形状が正方形でなければならない。CUのサイズは、8×8ピクセルから、最大で64×64ピクセルまたはそれを超えるツリーブロックのサイズまで及ぶ場合がある。各CUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。たとえば、CUに関連するシンタックスデータは、CUを1つまたは複数のPUに区分することを記述し得る。区分モードは、CUがスキップモードもしくはダイレクトモードで符号化されるか、イントラ予測モードで符号化されるか、またはインター予測モードで符号化されるかの間で異なり得る。PUは、形状が非正方形に区分され得る。CUに関連するシンタックスデータは、たとえば、4分木に従って、CUを1つまたは複数のTUに区分することも記述し得る。TUは、形状が正方形または非正方形(たとえば、矩形)であり得る。
[0065]HEVC規格は、異なるCUに対して異なり得る、TUに従う変換を可能にする。TUは、通常、区分されたLCUのために定義された、所与のCU内のPUのサイズに基づいてサイズ決定されるが、これは常にそうであるとは限らない。TUは、通常、PUと同じサイズであるか、またはPUよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT:residual quad tree)として知られる4分木構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードは、変換ユニット(TU)と呼ばれることがある。TUに関連するピクセル差分値は、変換係数を生成するために変換され、その変換係数は量子化され得る。
[0066]リーフCUは、1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUのすべてまたは一部分に対応する空間エリアを表し、そのPUの参照サンプルを取り出すためのデータを含み得る。その上、PUは、予測に関係するデータを含む。たとえば、PUがイントラモードで符号化されるとき、PUに関するデータは、残差4分木(RQT)に含まれ、残差4分木は、PUに対応するTUに関するイントラ予測モードを記述するデータを含め得る。別の例として、PUがインターモードで符号化されるとき、PUは、PUのための1つまたは複数の動きベクトルを定義するデータを含み得る。PUのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルに関する解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルの参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)を記述し得る。
[0067]1つまたは複数のPUを有するリーフCUは、1つまたは複数の変換ユニット(TU)を含むこともできる。TUは、上記で説明したように、RQT(TU4分木構造とも呼ばれる)を使用して指定され得る。たとえば、分割フラグは、リーフCUが4つのTUに分割されるかどうかを示し得る。次いで、各変換ユニットは、さらなるサブTUに、さらに分割され得る。TUがさらに分割されないとき、そのTUはリーフTUと呼ばれることがある。概して、イントラコーディングの場合、リーフCUに属するすべてのリーフTUは同じイントラ予測モードを共有する。すなわち、概して、リーフCUのすべてのTUの予測値を計算するために同じイントラ予測モードが適用される。イントラコーディングの場合、ビデオエンコーダは、イントラ予測モードを使用して各リーフTUの残差値を、TUに対応するCUの一部と元のブロックとの間の差分として計算し得る。TUは、必ずしもPUのサイズに制限されるとは限らない。したがって、TUはPUよりも大きくても、または小さくてもよい。イントラコーディングの場合、PUは、同じCUの対応するリーフTUとコロケートされ得る。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
[0068]その上、リーフCUのTUは、残差4分木(RQT)と呼ばれる、それぞれの4分木データ構造に関連付けることもできる。すなわち、リーフCUは、リーフCUがどのようにTUに区分されるかを示す4分木を含み得る。TU4分木のルートノードは一般にリーフCUに対応し、CU4分木のルートノードは一般にツリーブロック(またはLCU)に対応する。分割されないRQTのTUは、リーフTUと呼ばれる。概して、本開示では、特に明記しない限り、リーフCUおよびリーフTUに言及するためにそれぞれCUおよびTUという用語を使用する。
[0069]ビデオシーケンスは、通常、一連のビデオフレームまたはピクチャを含む。ピクチャグループ(GOP)は、概して、ビデオピクチャのうちの一連の1つまたは複数を備える。GOPは、GOPに含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャの1つまたは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスの符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、通常、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは可変サイズを有し、指定のコーディング規格に応じてサイズが異なり得る。
[0070]一例として、HEVCのHMは、様々なPUサイズでの予測をサポートする。特定のCUのサイズが2N×2Nとすれば、HEVCのHMは、2N×2NまたはN×NのPUサイズでのイントラ予測、および2N×2N、2N×N、N×2N、またはN×Nの対称なPUサイズでのインター予測をサポートする。HEVCのHMは、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズでのインター予測のための非対称な区分もサポートする。非対称な区分では、CUの一方向は区分されないが、他の方向は25%および75%に区分される。25%の区分に対応するCUの部分は、「n」とそれに続く「Up」、「Down」、「Left」、または「Right」という指示によって示される。したがって、たとえば、「2N×nU」は、上部の2N×0.5NのPU、および下部の2N×1.5NのPUによって水平に区分される2N×2NのCUを指す。
[0071]本開示では、「N×N」および「N by N」は、垂直および水平の寸法の観点からビデオブロックのピクセル寸法を参照するために、たとえば、16×16ピクセルまたは16by16ピクセルのように、互換的に使用され得る。一般に、16×16ブロックは、垂直方向に16ピクセル(y=16)、および水平方向に16ピクセル(x=16)を有する。同様に、N×Nブロックは、一般に、垂直方向にNピクセル、および水平方向にNピクセルを有し、ここでNは非負整数値を表す。ブロック内のピクセルは、行および列に配列され得る。その上、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有する必要があるとは限らない。たとえば、ブロックはN×Mピクセルを備えてよく、この場合に、Mは必ずしもNに等しいとは限らない。
[0072]CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングの後に、ビデオエンコーダ20は、CUのTUのための残差データを計算し得る。PUは、空間領域(ピクセル領域とも呼ばれる)において予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え、TUは、変換、たとえば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUに関する残差データを含むTUを形成し、次いで、CUの変換係数を生成するためにTUを変換し得る。
[0073]変換係数を生成するための任意の変換の後で、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、概して、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部またはすべてに関連するビット深度を低減し得る。たとえば、量子化中にnビット値をmビット値に切り捨てることができ、ここで、nはmよりも大きい。
[0074]量子化の後に、ビデオエンコーダは、変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、アレイの前部により高いエネルギー(したがって、より低い周波数)係数を配置し、アレイの後部により低いエネルギー(したがって、より高い周波数)係数を配置するように設計され得る。いくつかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するためにあらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20は、適応走査を実行し得る。1次元ベクトルを形成するために量子化変換係数を走査した後、ビデオエンコーダ20は、1次元ベクトルをエントロピー符号化することができる。すなわち、ビデオエンコーダ20は、変換係数を表すシンタックス要素をエントロピー符号化することができる。ビデオエンコーダ20は、コンテキスト適応型可変長コーディング(CAVLC:context-adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context-adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディングまたは別のエントロピー符号化などの様々なエントロピー符号化技法を使用して変換係数を表すシンタックス要素をエントロピー符号化し得る。ビデオエンコーダ20は、ビデオデータを復号する際にビデオデコーダ30が使用するための、符号化ビデオデータに関連付けられたシンタックス要素をエントロピー符号化することもできる。
[0075]CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルにコンテキストモデル内のコンテキストを割り当て得る。たとえば、コンテキストは、シンボルの隣接する値が非0であるか否かに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルに関する可変長コードを選択し得る。可変長コーディング(VLC)におけるコードワードは、比較的短いコードが優勢シンボルに対応する一方で、より長いコードが劣勢シンボルに対応するように構成され得る。このように、VLCの使用は、たとえば、送信されるべき各シンボルに対して等長のコードワードを使用するよりもビット節約を達成し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0076]ビデオエンコーダ20は、コード化ピクチャおよび関連データの表現を形成するビットのシーケンスを含むビットストリームを出力し得る。ビットストリームは、一連のネットワークアブストラクションレイヤ(NAL)ユニットを備え得る。NALユニットは、NALユニット中のデータのタイプの指示と、必要に応じてエミュレーション防止ビットが点在するローバイトシーケンスペイロード(RBSP:raw byte sequence payload)の形態でそのデータを含むバイトとを含んでいるシンタックス構造である。NALユニットの各々は、NALユニットヘッダを含み、RBSPをカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含む、シンタックス構造であり得る。いくつかの例では、RBSPは0ビットを含む。
[0077]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化し得る。たとえば、異なるタイプのNALユニットは、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、コード化スライス、補足エンハンスメント情報(SEI)などに関する異なるRBSPをカプセル化することができる。ビデオコーディングデータに対するRBSP(パラメータセットおよびSEIメッセージに対するRBSPに対立するものとして)をカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれることがある。
[0078]HEVCでは、SPSは、コード化ビデオシーケンス(CVS)のすべてのスライスに適用される情報を含み得る。HEVCでは、CVSは、瞬時復号リフレッシュ(IDR)ピクチャ、あるいはブロークンリンクアクセス(BLA)ピクチャ、あるいは、IDRまたはBLAピクチャではないすべての後続のピクチャを含むビットストリーム中の最初のピクチャであるクリーンランダムアクセス(CRA)ピクチャから開始し得る。すなわち、HEVCでは、CVSは、復号順序で、ビットストリーム中の第1のアクセスユニットであるCRAアクセスユニットと、IDRアクセスユニットまたはBLAアクセスユニットと、それに続いて、後続のIDRまたはBLAアクセスユニットを含まないがそれまでのすべての後続のアクセスユニットを含む、0個以上の非IDRおよび非BLAアクセスユニットとからなり得る、アクセスユニットのシーケンスを備え得る。
[0079]VPSは、0個以上のCVS全体に適用されるシンタックス要素を備えるシンタックス構造である。SPSは、SPSがアクティブであるとき、アクティブであるVPSを識別するシンタックス要素を含み得る。したがって、VPSのシンタックス要素は、SPSのシンタックス要素よりも一般的に適用可能であり得る。PPSは、0個以上のコード化ピクチャに適用されるシンタックス要素を備えるシンタックス構造である。PPSは、PPSがアクティブであるとき、アクティブであるSPSを識別するシンタックス要素を含み得る。スライスのスライスヘッダは、スライスがコーディングされるときにアクティブであるPPSを示すシンタックス要素を含み得る。
[0080]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信し得る。さらに、ビデオデコーダ30は、ビットストリームからシンタックス要素を取得するためにビットストリームを構文解析し得る。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構成し得る。ビデオデータを再構成するためのプロセスは、概して、ビデオエンコーダ20によって実行されるプロセスの逆であり得る。たとえば、ビデオデコーダ30は、現在のCUのPUのための予測ブロックを決定するためにPUの動きベクトルを使用し得る。さらに、ビデオデコーダ30は、現在のCUのTUに関連付けられた係数ブロックを逆量子化し得る。ビデオデコーダ30は、現在のCUのTUに関連付けられた変換ブロックを再構成するために係数ブロックに対して逆変換を実行し得る。ビデオデコーダ30は、現在のCUのPUのための予測ブロックのサンプルを現在のCUのTUの変換ブロックの対応するサンプルに加算することによって、現在のCUのコーディングブロックを再構成し得る。ビデオデコーダ30は、ピクチャの各CUのためのコーディングブロックを再構成することによってピクチャを再構成し得る。
[0081]上記に示すように、ビデオエンコーダ20およびビデオデコーダ30は、ビデオデータを符号化または復号するとき、インター予測を実行し得る。インター予測は、参照ピクチャリスト構成を含むこともできる。参照ピクチャリストは、動き探索および動き推定を実行するために利用可能な参照ピクチャまたは参照フレームを含む。通常、Bピクチャ(双方向予測ピクチャ)の第1または第2の参照ピクチャリストに関する参照ピクチャリスト構成は、2つのステップ、すなわち参照ピクチャリスト初期化と、参照ピクチャリスト並べ替え(修正)とを含む。参照ピクチャリスト初期化は、参照ピクチャメモリ(復号ピクチャバッファ(DPB)としても知られる)中の参照ピクチャを、POC(ピクチャ順序カウント)値の順序に基づいてリストに入れる明示的な機構である。ピクチャのPOC値は、ピクチャの表示順序で並べられる。参照ピクチャリスト並べ替え機構は、参照ピクチャリスト初期化ステップ中にリストに入れられたピクチャの位置を任意の新しい位置に修正するか、または参照ピクチャメモリ中の任意の参照ピクチャが初期化リストに入れられなくとも、そのピクチャを任意の位置に入れることができる。いくつかのピクチャは、参照ピクチャリスト並べ替え(修正)後、初期の位置からはるかに離れた、リスト中の位置に入れられる場合がある。ただし、ピクチャの位置がリストのアクティブ参照ピクチャの数を超える場合、ピクチャは、最終参照ピクチャリストのエントリーとは見なされない。アクティブな参照ピクチャの数は、リストごとにスライスヘッダにおいてシグナリングされ得る。参照ピクチャリスト(すなわち、利用可能な場合、RefPicList0およびRefPicList1)が構成された後、参照ピクチャリストに対する参照インデックスは、参照ピクチャリストに含まれる任意の参照ピクチャを識別するために使用され得る。
[0082]インター予測を使用してPUをコーディングすることは、現在のブロック(たとえば、PU)と参照フレーム中のブロックとの間の動きベクトルを計算することを含み得る。動きベクトルは、動き推定(または動き探索)と呼ばれるプロセスを通して計算され得る。たとえば、動きベクトルは、参照フレームの参照サンプルに対する、現在のフレーム内のPUの変位を示すことができる。参照サンプルは、絶対差分和(SAD)、2乗差分和(SSD)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされているPUを含むCUの部分にぴったり一致することがわかるブロックであり得る。参照サンプルは、参照フレームまたは参照スライス内のどこにでも発生し得る。いくつかの例では、参照サンプルは、分数ピクセル位置において発生し得る。現在の部分に最も良く一致する参照フレームの部分を見つけると、エンコーダは、現在のブロックのための現在の動きベクトルを、現在のブロックから参照フレーム中の一致する部分までの(たとえば、現在のブロックの中心から一致する部分の中心までの)位置の差分として決定する。
[0083]いくつかの例では、ビデオエンコーダ20は、符号化ビデオビットストリーム中で、各ブロックの動きベクトルをシグナリングする。ビデオエンコーダ30は、ビデオデータを復号するために動き補償を実行するのにシグナリングされた動きベクトルを使用し得る。ただし、元の動きベクトルを直接シグナリングすると、通常、情報を搬送するのに多数のビットが必要とされるので、コーディングがあまり効率的でなくなることがある。
[0084]したがって、いくつかの事例では、元の動きベクトルを直接シグナリングするのではなく、ビデオエンコーダ20は、各区分について(たとえば、各PUについて)動きベクトルを予測し得る。この動きベクトル予測を実行する際に、ビデオエンコーダ20は、現在のブロックと同じフレーム中の空間的に隣接するブロックから決定される候補動きベクトルのセット、または、参照フレーム(すなわち、現在のフレーム以外のフレーム)中のコロケートブロックから決定される時間的候補動きベクトルを選択し得る。ビデオエンコーダ20は、動きベクトル予測を実行し、必要な場合、シグナリングする際のビットレートを低減するために、元の動きベクトルをシグナリングするのではなく、動きベクトルを予測するために参照ピクチャへのインデックスをシグナリングし得る。空間的に隣接するブロックからの候補動きベクトルベクトルは、空間的MVP候補と呼ばれることがあるが、別の参照フレーム中のコロケートブロックからの候補動きベクトルは時間的MVP候補と呼ばれることがある。
[0085]動きベクトル予測の2つの異なるモードまたはタイプが、HEVC規格において提案されている。一方のモードは「マージ」モードと呼ばれる。他方のモードは、進化型動きベクトル予測(AMVP)と呼ばれる。マージモードでは、ビデオエンコーダ20は、フレームの現在のブロックのための選択された候補動きベクトルから、動きベクトルと、参照インデックス(所与の参照ピクチャリストにおいて動きベクトルが指す参照フレームを識別する)と、動き予測方向(すなわち、参照フレームが時間的に現在のフレームに先行するかまたは後続するかに関して、参照ピクチャリスト(リスト0またはリスト1)を識別する)とをコピーするように、予測シンタックスのビットストリームシグナリングを通してビデオデコーダ30に命令する。ビデオエンコーダ20は、ビットストリームにおいて、インデックスを候補動きベクトルリスト中にシグナリングすることによって、この命令を達成する。インデックスは、候補動きベクトルリスト内の選択された候補動きベクトル(すなわち、特定の空間的MVP候補または時間的MVP候補)を識別し得る。したがって、マージモードでは、予測シンタックスは、モード(この場合は「マージ」モード)を識別するフラグと、選択された候補動きベクトルを識別するインデックスとを含み得る。いくつかの事例では、候補動きベクトルは、現在のブロックに関する因果的ブロック中にある。概して、因果的ブロックは、コーディング順に現在のブロックの前に発生する。したがって、ビデオデコーダ30は、候補動きベクトルをすでに復号している。したがって、ビデオデコーダ30は、因果的ブロックのための動きベクトルと参照インデックスと動き予測方向とを、すでに受信および/または決定している。したがって、ビデオデコーダ30は、単に、メモリから、因果的ブロックに関連する動きベクトルと参照インデックスと動き予測方向とを取り出し、これらの値を現在のブロックのための動き情報としてコピーし得る。マージモードにおいてブロックを再構成するために、ビデオデコーダ30は、現在ブロックのための導出された動き情報を使用して予測ブロックを取得し、コード化ブロックを再構成するために予測ブロックに残差データを加算し得る。
[0086]AMVPでは、ビデオエンコーダ20は、候補ブロックから動きベクトルのみをコピーし、コピーされたベクトルを現在のブロックの動きベクトルのための予測子として使用するように、ビットストリームシグナリングを通してビデオデコーダ30に命令し、動きベクトル差分(MVD)をシグナリングする。現在のブロックの動きベクトルに関連する参照フレームおよび予測方向は、別にシグナリングされる。MVDは、現在ブロックのための現在動きベクトルと、候補ブロックから導出された動きベクトル予測子との間の差分である。この場合、ビデオエンコーダ20は、動き推定を使用して、コーディングすべきブロックのために実際の動きベクトルを決定し得る。次いで、ビデオエンコーダ20は、MVD値として、実際の動きベクトルと動きベクトル予測子との間の差分を決定し得る。このように、ビデオデコーダ30は、マージモードの場合のように、現在の動きベクトルとして候補動きベクトルの正確なコピーを使用しないが、そうではなく、動き推定から決定された現在の動きベクトルに値が「近接」し得る候補動きベクトルを使用し、現在の動きベクトルを再生するためにMVDを加算し得る。AMVPモードにおいてブロックを再構成するために、デコーダは、コード化ブロックを再構成するために対応する残差データを加算し得る。
[0087]たいていの状況では、MVDは、シグナリングするために現在の動きベクトル全体よりも少ないビットを必要とする。したがって、AMVPは、動きベクトル全体を送信することに勝るコーディング効率を維持しながら、現在の動きベクトルをより正確にシグナリングすることを可能にし得る。対照的に、マージモードは、MVDの指定を可能にしない。したがって、マージモードは、シグナリング効率の増大(すなわち、より少ないビット)のための動きベクトルシグナリングの精度を犠牲にする場合がある。AMVPの予測シンタックスは、モードのフラグ(この場合はAMVPフラグ)と、候補ブロックのインデックスと、現在の動きベクトルと候補ブロックからの予測動きベクトルとの間のMVDと、参照インデックスと、動き予測方向とを含み得る。
[0088]図2は、マージモードとAMVPモードの両方において使用され得る候補ブロックの例示的なセット120を示す概念図である。図2の例では、候補ブロックは、左下(A0)121、左(A1)122、左上(B2)125、上(B1)124、および右上(B0)123の空間的位置、ならびに、時間的(T)126位置にある。図2の例では、左候補ブロック122は、現在のブロック127の隣接した左エッジである。左ブロック122の下エッジは、現在のブロック127の下エッジと一直線に並ぶ。上ブロック124は、現在のブロック127の隣接した上エッジである。上ブロック124の右エッジは、現在のブロック127の右エッジと一直線に並ぶ。
[0089]上記で示すように、ビデオコーダは、マージモードおよびAMVPモードにおいて時間的隣接ブロックを使用し得る。すなわち、別の技法が、時間的動きベクトル予測子(TMVP:temporal motion vector predictor)または時間的動きベクトル候補に関係する。TMVPを決定するために、最初に、コロケートピクチャが識別されることになる。コロケートピクチャは、参照ピクチャリストが構成されている、現在のピクチャと異なる時間から来る。現在のピクチャがBスライスである場合、シンタックス要素collocated_from_10_flagは、コロケートピクチャがRefPicList0からのものか、またはRefPicList1からのものかを示すために、スライスヘッダ中でシグナリングされ得る。参照ピクチャリストが識別された後、スライスヘッダ中でシグナリングされたシンタックス要素collocated_ref_idxは、リスト中のピクチャ内のピクチャを識別するために使用され得る。
[0090]コロケートPU(たとえば、時間的動きベクトル候補)は、次いで、コロケートピクチャをチェックすることによって識別される。このPUを含むCUの右下のPUの動きベクトル、またはこのPUを含むCUの中心PU内の右下のPUの動きのいずれかが、使用される。
[0091]上記のプロセスによって識別される動きベクトルが、AMVPまたはマージモードのための動き候補を生成するために使用されるとき、動きベクトルは、通常、時間的位置(POC値によって反映される)に基づいてスケーリングされる。TMVPから導出される時間的マージ候補のためのすべての考えられる参照ピクチャリストのターゲット参照インデックスは0に設定されるが、AMVPの場合、ターゲット参照インデックスは、復号された参照インデックスに等しく設定される。
[0092]HEVCでは、SPSは、フラグsps_temporal_mvp_enable_flagを含み、sps_temporal_mvp_enable_flagが1に等しいとき、スライスヘッダは、フラグpic_temporal_mvp_enable_flagを含み得る。ある特定のピクチャに対してpic_temporal_mvp_enable_flagとtemporal_idの両方が0に等しいとき、復号順序がその特定のピクチャの前のピクチャからの動きベクトルは、特定のピクチャ、または復号順序が特定のピクチャの後のピクチャの復号において、時間的動きベクトル予測子として使用されない。
[0093]上述のように、MVCは、ITU−T H.264/AVCの拡張である。マルチビューコーディングでは、異なる視点からの同じシーンの複数のビューがあり得る。「アクセスユニット」という用語は、同じ時間インスタンスに対応するピクチャのセットを指すために使用され得る。言い換えれば、アクセスユニットは、1つの出力時間インスタンスのためのすべてのビューのコード化ピクチャを含み得る。「ビュー成分」は、単一のアクセスユニット内のビューのコード化表現であり得る。いくつかの例では、ビュー成分は、テクスチャビュー成分と深度ビュー成分とを含む場合がある。本開示では、「ビュー」は、同じビュー識別子に関連する一連のビュー成分を指すことがある。したがって、ビューがコード化テクスチャ表現とコード化深度表現の両方を含むとき、ビュー成分は、テクスチャビュー成分および深度ビュー成分を備える(たとえば、これらの成分からなる)場合がある。いくつかの例では、テクスチャビュー成分は、単一のアクセスユニット内のビューのテクスチャのコード化表現である。さらに、いくつかの例では、深度ビュー成分は、単一のアクセスユニット内のビューの深度のコード化表現である。
[0094]各テクスチャビュー成分は、表示されるべき実際の画像コンテンツを含む。たとえば、テクスチャビュー成分は、ルーマ(Y)成分と、クロマ(CbおよびCr)成分とを含み得る。各深度ビュー成分は、その対応するテクスチャビュー成分中のピクセルの相対深度を示し得る。いくつかの例では、深度ビュー成分は、ルーマ値のみを示すグレースケール画像である。言い換えれば、深度ビュー成分は、任意の画像コンテンツを搬送するのではなく、対応するテクスチャビュー成分中のピクセルの相対深度の測度を与え得る。
[0095]たとえば、深度ビュー成分中の純白ピクセルは、そのピクセルの対応するピクセル、または対応するテクスチャビュー成分のピクセルが閲覧者の視点から比較的近いことを示し得る。この例では、深度ビュー成分中の純黒ピクセルは、そのピクセルの対応するピクセル、または対応するテクスチャビュー成分のピクセルが閲覧者の視点からはるかに遠いことを示す。黒と白との中間にあるグレーの様々な陰影は、異なる深度レベルを示す。たとえば、深度ビュー成分中のダークグレーのピクセルは、テクスチャビュー成分中のピクセルの対応するピクセルが、深度ビュー成分中の薄いグレーのピクセルよりもはるかに遠いことを示す。この例では、ピクセルの深度を識別するためにグレースケールのみが必要とされるので、深度ビュー成分のクロマ成分がいかなる目的も果たし得ないことから、深度ビュー成分は、クロマ成分を含む必要がない。本開示は、説明の目的で、深度を識別するためにルーマ値(たとえば、強度値)のみを使用して深度ビュー成分の例を提供するが、限定するものと見なされるべきではない。他の例では、テクスチャビュー成分中のピクセルの相対深度を示すために他の技法が利用され得る。
[0096]マルチビューコーディングでは、ビットストリームは複数のレイヤを有し得る。レイヤの各々は、異なるビューに対応し得る。マルチビューコーディングでは、ビデオデコーダ(たとえば、ビデオデコーダ30)が、あるビュー中のピクチャを任意の他のビュー中のピクチャと無関係に復号することができる場合、そのビューは「ベースビュー」と呼ばれることがある。ビューは、ビューの復号が1つまたは複数の他のビュー中のピクチャの復号に依存する場合、非ベースビューと呼ばれ得る。非ベースビューのうちの1つの中のピクチャをコーディングするとき、ピクチャが、異なるビュー中にあるがビデオコーダが現在コーディング中のピクチャと同じ時間インスタンス(すなわち、アクセスユニット)内にある場合、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、参照ピクチャリストにピクチャを追加し得る。他のインター予測参照ピクチャと同様に、ビデオコーダは、参照ピクチャリストの任意の位置にビュー間予測参照ピクチャを挿入し得る。
[0097]SVCでは、ベースレイヤ以外のレイヤは、「エンハンスメントレイヤ」と呼ばれることがあり、ビットストリームから復号されるビデオデータの視覚的品質を向上させる情報を提供し得る。スケーラブルビデオコーディング(たとえば、スケーラブルHEVC)では、「レイヤ表現」は、単一のアクセスユニット中の空間レイヤのコード化表現であり得る。説明を簡単にするために、本開示は、ビュー成分および/またはレイヤ表現を「ビュー成分/レイヤ表現」と呼び得る。
[0098]レイヤを実装するために、NALユニットのヘッダは、nuh_reserved_zero_6bitsシンタックス要素を含み得る。異なる値を指定するnuh_reserved_zero_6bitシンタックス要素を有するNALユニットは、ビットストリームの異なる「レイヤ」に属する。したがって、マルチビューコーディング、3DV、またはSVCでは、NALユニットのnuh_reserved_zero_6bitsシンタックス要素はNALユニットのレイヤ識別子(すなわち、レイヤID)を指定する。いくつかの例では、NALユニットがマルチビューコーディング、3DVコーディング、またはSVCにおけるベースレイヤに関係する場合、NALユニットのnuh_reserved_zero_6bitsシンタックス要素は0に等しい。ビットストリームのベースレイヤ中のデータは、ビットストリームの他のレイヤ中のデータと無関係に復号され得る。NALユニットがマルチビューコーディング、3DV、またはSVCにおけるベースレイヤに関係しない場合、シンタックス要素のnuh_reserved_zero_6bitsシンタックス要素は、非0値を有し得る。上記のように、マルチビューコーディングおよび3DVコーディングでは、ビットストリームの異なるレイヤは、異なるビューに対応し得る。
[0099]さらに、レイヤ内のいくつかのビュー成分/レイヤ表現は、同じレイヤ内の他のビュー成分/レイヤ表現とは無関係に復号され得る。したがって、レイヤのいくつかのビュー成分/レイヤ表現のデータをカプセル化したNALユニットは、そのレイヤ中の他のビュー成分/レイヤ表現の復号可能性に影響を及ぼすことなくビットストリームから除去され得る。そのようなビュー成分/レイヤ表現のデータをカプセル化したNALユニットを除去すると、ビットストリームのフレームレートが低減し得る。レイヤ内の他のビュー成分/レイヤ表現を参照せずに復号され得るレイヤ内のビュー成分/レイヤ表現のサブセットは、本明細書では「サブレイヤ」または「時間サブレイヤ」と呼ばれ得る。
[0100]NALユニットは、NALユニットの時間識別子(すなわち、TemporalId)を指定するtemporal_idシンタックス要素を含み得る。NALユニットの時間識別子は、そのNALユニットが属するサブレイヤを識別する。したがって、ビットストリームの各サブレイヤは、異なる時間識別子を有し得る。概して、第1のNALユニットの時間識別子が、第2のNALユニットの時間識別子未満である場合、第1のNALユニットによってカプセル化されたデータは、第2のNALユニットによってカプセル化されたデータを参照することなく復号され得る。
[0101]ビットストリームは、複数の動作点に関連付けられ得る。ビットストリームの各動作点は、レイヤ識別子のセット(たとえば、nuh_reserved_zero_6bits値のセット)および時間識別子に関連付けられる。レイヤ識別子のセットは、OpLayerIdSetと示され、時間識別子は、TemporalIDと示され得る。NALユニットのレイヤ識別子が動作点のレイヤ識別子のセット内にあり、NALユニットの時間識別子が動作点の時間識別子以下である場合、NALユニットは動作点に関連付けられる。動作点表現は、動作点に関連付けられるビットストリームサブセットである。動作点表現は、動作点に関連付けられる各NALユニットを含み得る。いくつかの例では、動作点表現は、動作点に関連付けられないVCL NALユニットを含まない。
[0102]いくつかの例では、マルチビューコーディングおよび3次元ビデオコーディングは、閲覧者に対する3次元効果を生成するために使用され得る。ビデオ中で3次元効果を生成するために、シーンの2つのビュー、たとえば、左眼ビューおよび右眼ビューが同時にまたはほぼ同時に示され得る。シーンの左眼ビューおよび右眼ビューに対応する、同じシーンの2つのピクチャは、閲覧者の左眼と右眼との間の水平視差を表すわずかに異なる水平位置からキャプチャされ得る(または、たとえば、コンピュータ生成グラフィックとして生成され得る)。左眼ビューのピクチャが閲覧者の左眼によって知覚され、右眼ビューのピクチャが閲覧者の右眼によって知覚されるようにこれらの2つのピクチャを同時にまたはほぼ同時に表示することによって、閲覧者は3次元ビデオ効果を経験し得る。左眼ビューと右眼ビューの両方を組合せで含む合成画像を作成することなどによって3Dを容易にするために、他の技法も使用され得る。合成画像内の右眼ビューと左眼ビューとを区別するために偏光(または、場合によっては光色もしくは光特性)が使用される場合があり、3Dグラスは、3D効果をもたらすために右眼および左眼が見る画像をフィルタリングし得る。マルチビュービデオデータは、3Dビデオを通信およびレンダリングするための多種多様な方法において有用である場合がある。
[0103]概して、本開示は、マルチビュービデオデータ、たとえば、3次元(3D)効果を生成するために使用されるビデオデータをコーディングおよび処理するための技法について説明する。本開示の他の場所で示すように、マルチビュービデオデータは、テクスチャ情報と深度情報の両方を含む場合があり、ここでテクスチャ情報は、一般にピクチャのルミナンス(輝度または強度)およびクロミナンス(色、たとえば青色相、赤色相)を記載する。深度情報は、深度マップによって表される場合があり、個々のピクセルは、テクスチャピクチャの対応するピクセルが、スクリーンに、スクリーンの比較的前に、またはスクリーンの比較的後ろに表示されるべきかどうかを示す値を割り当てられる。これらの深度値は、テクスチャ情報および深度情報を使用してピクチャを合成するとき、視差値に変換され得る。
[0104]図3は、例示的なマルチビュー復号順序を示す概念図である。言い換えれば、典型的なMVC復号順序(すなわち、ビットストリーム順序)が図3に示されている。MVCでは、複数のビューに関するデータが、時間優先順序でコーディングされる。したがって、復号順序の構成は、時間優先コーディングと呼ばれる。具体的には、共通の時間インスタンスにおける複数のビューの各々のビュー成分(たとえば、ピクチャ)がコーディングされ得、次いで、異なる時間インスタンスのビュー成分の別のセットがコーディングされ得、以下同様である。アクセスユニットの復号順序は、必ずしも、アクセスユニット中のピクチャの出力(または表示)順序と同じであるとは限らない。
[0105]図3に示す復号順序構成は、時間優先コーディングと呼ばれる。図2では、S0〜S7は各々、マルチビュービデオの異なるビューを指す。T0〜T9は各々、1つの出力時間インスタンスを表す。上記に示すように、アクセスユニットは、1つの出力時間インスタンスについてのすべてのビューのコード化ピクチャを含み得る。たとえば、第1のアクセスユニットは時間インスタンスT0についてのビューS0〜S7のすべてを含み得、第2のアクセスユニットは時間インスタンスT1についてのビューS0〜S7のすべてを含み得、以下同様である。
[0106]図3では、ビューの各々は、ピクチャのセットを含む。たとえば、ビューS0はピクチャ0、8、16、24、32、40、48、56、および64のセットを含み、ビューS1はピクチャ1、9、17、25、33、41、49、57、および65のセットを含み、以下同様である。各セットは2つのピクチャを含み、一方のピクチャはテクスチャビュー成分と呼ばれ、他方のピクチャは深度ビュー成分と呼ばれる。ビューのピクチャのセット内のテクスチャビュー成分および深度ビュー成分は、互いに対応するものと見なされる場合がある。たとえば、ビューのピクチャのセット内のテクスチャビュー成分は、そのビューのピクチャのセット内の深度ビュー成分に対応すると見なされ、その逆も同様である(すなわち、深度ビュー成分はセット中のそのテクスチャビュー成分に対応し、その逆も同様である)。本開示で使用する、深度ビュー成分に対応するテクスチャビュー成分は、単一のアクセスユニットの同じビューの一部であるテクスチャビュー成分および深度ビュー成分と見なされる場合がある。
[0107]図4は、マルチビューコーディングのための例示的な予測構造を示す概念図である。言い換えれば、マルチビュービデオコーディングのための(各ビュー内のピクチャ間予測とビュー間予測の両方を含む)典型的なMVC予測構造が、図4に示されている。予測方向は矢印によって示され、矢印の終点のオブジェクトは、予測参照として矢印の始点のオブジェクトを使用する。MVCでは、H.264/AVC動き補償のシンタックスを使用するが、異なるビュー中のピクチャが参照ピクチャとして使用されることを可能にする視差動き補償によって、ビュー間予測がサポートされる。図4の例は、各ビューに関して8つのビュー(ビューID「S0」〜「S7」を有する)と、12個の時間ロケーション(「T0」〜「T11」)とを示す。すなわち、図4の各行はビューに対応するが、各列は時間ロケーションを示す。図4のピクチャは、各行と各列の交点において示される。H.264/AVC規格は、ビデオの一部分を表すためにフレームという用語を使用し得る。本開示では、ピクチャという用語とフレームという用語とを互換的に使用し得る。
[0108]図4のピクチャは、対応するピクチャがイントラコーディングされる(すなわち、Iピクチャである)か、または一方向に(すなわち、Pピクチャとして)もしくは複数の方向に(すなわち、Bピクチャとして)インターコーディングされるかを指定する、文字を含むブロックを使用して示される。概して、予測は矢印によって示され、ここで矢印の終点のピクチャは、予測参照のために矢印の始点のピクチャを使用する。たとえば、時間ロケーションT0にあるビューS2のPピクチャは、時間ロケーションT0にあるビューS0のIピクチャから予測される。
[0109]シングルビュービデオ符号化の場合と同様に、マルチビュービデオコーディングビデオシーケンスのピクチャは、異なる時間ロケーションにあるピクチャに関して予測符号化され得る。たとえば、時間ロケーションT1にあるビューS0のbピクチャは、時間ロケーションT0にあるビューS0のIピクチャからそのbピクチャに向けられた矢印を有し、その矢印は、bピクチャがIピクチャから予測されることを示す。しかしながら、加えて、マルチビュービデオの符号化の状況において、ピクチャはビュー間予測され得る。すなわち、ビュー成分は、参照のために他のビュー中のビュー成分を使用することができる。MVCでは、たとえば、別のビュー中のビュー成分がインター予測参照であるかのように、ビュー間予測が実現される。潜在的なビュー間参照は、SPS MVC拡張(すなわち、MVCに関係するシンタックス要素のためのSPSの拡張)においてシグナリングされ、インター予測参照またはビュー間予測参照のフレキシブルな順序付けを可能にする参照ピクチャリスト構成プロセスによって変更され得る。ビュー間予測はまた、3D−HEVC(マルチビュープラス深度)を含むHEVCの提案されたマルチビュー拡張の機能である。
[0110]MVCはH.264/AVCデコーダによって復号可能であるいわゆるベースビューを有し、ステレオビューペアはMVCによってサポートされ得るが、MVCの利点は、MVCが、3Dビデオ入力として3つ以上のビューを使用し複数のビューによって表されるこの3Dビデオを復号する例を、サポートし得ることである。2つのビューのコーディングもサポートされる場合があり、またMVCである。MVCの利点のうちの1つは、MVCエンコーダが3Dビデオ入力として3つ以上のビューをとらえることができ、また、MVCデコーダがそのようなマルチビュー表現を復号することができることである。MVCデコーダを有するクライアントのレンダラは、複数のビューを用いて3Dビデオコンテンツを予想し得る。
[0111]MVCでは、同じアクセスユニット中の(すなわち、同じ時間インスタンスを有する)ピクチャ間でビュー間予測が可能にされる。非ベースビューのうちの1つにおいてピクチャをコーディングするとき、ピクチャが異なるビュー中にあるが同じ時間インスタンス内にある場合、そのピクチャは参照ピクチャリストに追加され得る。ビュー間参照ピクチャは、任意のインター予測参照ピクチャと同様に、参照ピクチャリストの任意の位置に置かれ得る。ビュー間参照ピクチャが動き補償のために使用されるとき、対応する動きベクトルは「視差動きベクトル」と呼ばれる。図4に示すように、ビュー成分は、参照用に他のビュー中のビュー成分を使用することができる。MVCでは、別のビュー中のビュー成分がインター予測参照であるかのように、ビュー間予測が実現される。
[0112]図4は、ビュー間予測の様々な例を提供する。図4の例では、ビューS1のピクチャは、ビューS1の異なる時間ロケーションにあるピクチャから予測されるものとして示され、ならびに同じ時間ロケーションにあるビューS0およびS2のピクチャからビュー間予測されるものとして示されている。たとえば、時間ロケーションT1にあるビューS1のbピクチャは、時間ロケーションT0およびT2にあるビューS1のBピクチャの各々、ならびに時間ロケーションT1にあるビューS0およびS2のbピクチャから予測される。
[0113]いくつかの例では、図4は、テクスチャビュー成分を示すものとして見なされ得る。たとえば、図4に示すIピクチャ、Pピクチャ、Bピクチャ、およびbピクチャは、ビューの各々に関するテクスチャビュー成分と見なされ得る。本開示で説明する技法によれば、図4に示すテクスチャビュー成分の各々に対して対応する深度ビュー成分が存在し得る。いくつかの例では、深度ビュー成分は、対応するテクスチャビュー成分に関して図4に示す方法と同様の方法で予測され得る。
[0114]別のタイプのマルチビュービデオコーディングフォーマットは、深度値の使用を導入する。マルチビュービデオプラス深度(MVD)データフォーマットの場合、テクスチャ画像および深度マップは、マルチビューテクスチャピクチャによって独立にコーディングされ得る。MVDデータフォーマットは、3Dテレビジョンおよびフリー視点ビデオにおいて普及している。図5は、テクスチャ画像およびその関連のサンプルごとの深度マップを有するMVDデータフォーマットを示す概念図である。深度範囲は、対応する3Dポイントに関してカメラからの最小距離Znearおよび最大距離Zfarの範囲内にあるように制限され得る。
[0115]カメラパラメータおよび深度範囲値は、3Dディスプレイ上でレンダリングする前に復号されたビュー成分を処理するのに役立つ場合がある。したがって、特別な補足エンハンスメント情報(SEI)メッセージは、H.264/MVCの現行バージョン、すなわち、取得環境の様々なパラメータを指定する情報を含むマルチビュー取得情報SEIに関して定義され得る。しかしながら、深度範囲関連の情報を示すためにH.264/MVCにおいて指定されるシンタックスが存在しない。
[0116]3Dビデオ(3DV)は、マルチビュービデオプラス深度(MVD)フォーマットを使用して表され得るが、様々なビュー(個々の水平カメラ位置に対応し得る)の少数のキャプチャされたテクスチャ画像および関連の深度マップがコーディングされる場合があり、得られたビットストリームパケットは、3Dビデオビットストリーム中に多重化され得る。
[0117]MVCと同様に、3D−HEVCにおいて、異なるビューから再構成されたビュー成分に基づくビュー間予測が可能になる。ビュー間予測を使用してブロックがコーディングされるとき、コロケートピクチャ中のTMVPが指す参照ピクチャのタイプ(たとえば、時間的またはビュー間)と、時間的マージ候補のためのターゲット参照ピクチャのタイプ(すなわち、HEVCにおいて0に等しい参照インデックスを有するターゲット参照ピクチャ)とは、異なる場合がある。たとえば、一方の参照ピクチャは、ビュー間参照ピクチャ(視差に設定されるタイプ)であり、他方の参照ピクチャは、時間的参照ピクチャ(時間に設定されるタイプ)である。ビュー間参照ピクチャは、コーディング中の現在のビューからの別のビューからの参照ピクチャであり得る。ビュー間参照ピクチャは、ビデオコーダが現在コーディング中であるピクチャ(すなわち、現在のピクチャ)と同じ時間インスタンス(たとえば、同じPOC)から、または異なる時間基準から来る場合がある。時間的参照ピクチャは、ビデオコーダが現在コーディング中であるCU(すなわち、現在コーディングされているCU)とは異なる時間インスタンスからのピクチャであるが、現在コーディングされているCUと同じビュー内にある。特に3D−HTMソフトウェアのバージョンなどの他の例では、時間的マージ候補のためのターゲット参照ピクチャは、0または現在コーディングされているPUに対して左の隣接PUの参照ピクチャインデックスの値に等しく設定され得る。したがって、時間的マージ候補のためのターゲット参照ピクチャインデックスは、0に等しくない場合がある。
[0118]コーディング効率をさらに改善するために、2つの新規の技術、すなわち、「ビュー間動き予測」および「ビュー間残差予測」が、3D−HEVC用の最新の参照ソフトウェアに採用されてきている。ビュー間動き予測およびビュー間残差予測は、現在コーディングされているビューから様々なビューにおける動きベクトル候補およびCUを使用する。動き探索、動き推定、および動きベクトル予測のために使用されるビューは、現在コーディングされているビューと同じ時間インスタンスから来る場合があるか、または異なる時間インスタンスから来る場合がある。これらの2つのコーディングツールを有効にするために、第1のステップは、視差ベクトルを導出する。ビデオコーダは、ビュー間動き/残差予測のために別のビュー中の対応するブロックを位置特定するか、またはビュー間動き予測のために視差ベクトルを視差動きベクトルに変換するかのいずれかのために視差ベクトルを使用し得る。
[0119]ビュー間動き/残差予測に使用される別の概念は、暗黙的視差ベクトル(IDV:implicit disparity vector)である。IDVは、PUがビュー間動きベクトル予測を採用する(すなわち、AMVPまたはマージモードのための候補が、視差ベクトルの助けとともに他のビュー中の対応するブロックから導出される)とき、生成され得る。そのような視差ベクトルは、IDVと呼ばれる。IDVは、視差ベクトル導出の目的でPUに記憶される。
[0120]ビデオコーダは、視差ベクトルを導出するために、隣接ブロックベースの視差ベクトル(NBDV:Neighboring Blocks Based Disparity Vector)導出と呼ばれる方法を使用し得る。ビデオコーダがブロックに関する視差ベクトルを導出するためにNBDV導出を使用するとき、ビデオコーダは、視差動きベクトルのために空間的隣接ブロックおよび時間的隣接ブロックをチェックする。上記に示すように、視差動きベクトルは、ビュー間参照ピクチャ中のロケーションを指す。いくつかの例では、ビデオコーダは、固定されたチェック順に空間的隣接ブロックまたは時間的隣接ブロックをチェックする。いくつかの例では、ビデオコーダは、最初に空間的隣接ブロックをチェックし、続いて、時間的隣接ブロックをチェックする。
[0121]ビデオコーダが視差動きベクトルを識別すると、ビデオコーダは、チェックプロセスを終了させ、識別された視差動きベクトルを返し、ビデオコーダがビュー間動き予測およびビュー間残差予測において使用し得る視差ベクトルにその視差動きベクトルを変換することができる。ビデオコーダが、すべてのあらかじめ定義された隣接ブロックをチェックした後に視差動きベクトルを見出さない場合、ビデオコーダは、ビュー間動き予測に関してゼロ視差ベクトルを使用し得るが、ビュー間残差予測は、対応するPU(すなわち、ビデオコーダが視差ベクトルを決定中であるブロック)に関して無効にされ得る。
[0122]いくつかの例では、ビデオコーダは、視差ベクトル導出のための5つの空間的隣接ブロックをチェックする。5つの空間的隣接ブロックは、図2に定義したように、A0、A1、B0、B1、またはB2によって示される、現在のPUの左下ブロック、左ブロック、右上ブロック、上ブロック、および左上ブロックである。いくつかの例では、ビデオコーダは、A1、B1、B0、A0、およびB2の順に5つの空間的隣接ブロックをチェックする。隣接ブロックのうちの1つが視差動きベクトルを使用する場合、ビデオコーダはチェックプロセスを終了させることができ、最終的な視差ベクトルとして対応する視差動きベクトルを使用することができる。
[0123]いくつかの例では、ビデオコーダは、時間的ブロックのチェックのために、現在のビューからの2つの参照ピクチャ、コロケートピクチャ、ならびにランダムアクセスピクチャ、または最小のPOC差分および最小の時間的IDを有する参照ピクチャまでを考慮し得る。ビデオコーダは、最初にランダムアクセスピクチャをチェックし、続いて、コロケートピクチャをチェックし得る。概して、ランダムアクセスピクチャ(すなわち、ランダムアクセスポイント(RAP)ピクチャ)は、ビデオコーダがビットストリームの開始以外のビットストリームの復号プロセスを開始し得るピクチャである。図6は、隣接ブロック視差ベクトル導出のための時間的隣接ブロックを示す概念図である。図6の例では、ビデオコーダは、各候補ピクチャに関する2つの候補ブロック、すなわち、
a)中心ブロック(CR):現在のPUのコロケート領域の中心の4×4ブロック(図6の「Pos.A」参照)。
b)右下ブロック(BR):現在のPUのコロケート領域の右下の4×4ブロック(図6の「Pos.B」参照)。
をチェックし得る。
[0124]いくつかの例では、各候補ピクチャに関して、ビデオコーダは、2つのブロック、すなわち、第1の非ベースビューに関してはCRおよびBRを、または第2の非ベースビューに関してはBR、次いでCRを順にチェックする。ブロックのうちの1つが視差動きベクトルを有する場合、ビデオコーダはチェックプロセスを終了させることができ、最終的な視差ベクトルとして対応する視差動きベクトルを使用することができる。
[0125]空間的隣接ブロックまたは時間的隣接ブロックのいずれも視差動きベクトルを有しない場合、ビデオコーダは、5つの空間的隣接ブロックのいずれかがIDVを有するかどうかを決定することができる。言い換えれば、すべての空間的/時間的隣接ブロックに関して、視差動きベクトルが使用されるかどうかが最初にチェックされ、続いて、IDVがチェックされる。いくつかの例では、5つの空間的隣接ブロックのいずれかがIDVを有するかどうかをビデオコーダがチェックするとき、ビデオコーダは、A0、A1、B0、B1、およびB2の順に5つの空間的隣接ブロックをチェックすることができる。5つの空間的隣接ブロックのうちの1つがIDVを使用し、空間的隣接ブロックがスキップ/マージモードとしてコーディングされる場合、ビデオコーダは、チェックプロセスを終了させることができ、最終的な視差ベクトルとして対応するIDVを使用することができる。
[0126]いくつかの例では、ビデオコーダは、コード化深度マップ内の情報を使用してNBDV方式から生成された視差ベクトルをさらに改善することができる。たとえば、視差ベクトルの精度は、ベースビュー深度マップにおいてコーディングされた情報を利用することによって向上され得る。いくつかの例では、改善ステップについて次のように説明する。第1に、ベースビューなどの以前にコーディングされた参照深度ビューにおける導出された視差ベクトルによって対応する深度ブロックを位置特定する。対応する深度ブロックのサイズは、現在のPUのサイズと同じである。第2に、ビデオコーダは、4つのコーナー深度値の最大値を使用してコロケート深度ブロックから視差ベクトルを計算する。ビデオコーダは、計算済視差ベクトルを視差ベクトルの水平成分に等しく設定する一方で、ビデオコーダは、視差ベクトルの垂直成分を0に設定する。
[0127]この新規の視差ベクトルは、「深度指向隣接ブロックベース視差ベクトル(DoNBDV:depth oriented neighboring block based disparity vector)」と呼ばれる。ビデオコーダは、次いで、AMVPおよびマージモードに関するビュー間候補導出のためにDoNBDV方式から、この新規に導出された視差ベクトルによってNBDV方式からの視差ベクトルを交換し得る。ビデオコーダは、ビュー間残差予測に関する改善されていない視差ベクトルを使用し得る。加えて、PUが後方ビュー合成予測(VSP:view synthesis prediction)モードを使用してコーディングされる場合、ビデオコーダは、改善された視差ベクトルを1つのPUの動きベクトルとして記憶し得る。
[0128]ここで、3D−HEVCにおいて隣接ブロックを使用したブロックベースビュー合成予測(VSP)について説明する。Tianら、「CE1.h:Backward View Synthesis Prediction using Neighbouring Blocks」(以下、JCT3V−C0152)において提案された後方ワーピングVSPアプローチは、第3回JCT−3V会合において採択された。JCT3V−C0152のコピーは、2014年3月26日付けで、http://phenix.int−evry.fr/jct3v/doc_end_user/current_document.php?id=594において利用可能である。後方ワーピングVSP(BVSP)の基本思想は、3D−AVCにおけるブロックベースVSPと同じである。これら2つの技法の両方は、動きベクトル差分を送信するのを避け、より正確な動きベクトルを使用するために後方ワーピングVSPおよびブロックベースVSPを使用する。実装形態の詳細は、異なるプラットフォームのために異なる。
[0129]以下の段落では、BVSPという用語は、3D−HEVCにおける後方ワーピングVSPアプローチを示す。3D−HTMでは、テクスチャ優先コーディングは、共通のテスト条件において適用される。したがって、対応する非ベース深度ビューは、1つの非ベーステクスチャビューを復号するとき、利用不可能である。したがって、深度情報は、BVSPを実行するために推定および使用される。ブロックに関する深度情報を推定するために、隣接ブロックから視差ベクトルを最初に導出し、次いで参照ビューから深度ブロックを取得するために導出された視差ベクトルを使用することが提案される。
[0130]HTM5.1テストモデルは、視差ベクトル予測子を導出するためにNBDV導出を使用する。NBDV導出の場合、(dvx,dvy)をNBDV導出から識別された視差ベクトルとし、現在のブロックの位置は、(blockx,blocky)である。参照ビューの深度画像では、(blockx+dvx,blocky+dvy)において深度ブロックをフェッチすることが提案される。フェッチされた深度ブロックは、現在の予測ユニット(PU)の同じサイズを有する。ビデオコーダは、次いで、現在のPUに関する後方ワーピングを実行するためにフェッチされた深度ブロックを使用し得る。
[0131]図7は、どのように参照ビューからの深度ブロックが位置特定され、次いでBVSP予測に使用されるか3つのステップを示す。図7の例では、ビデオコーダは、現在のテクスチャピクチャ60をコーディング中である。現在のテクスチャピクチャ60は、合成された参照テクスチャピクチャ62に依存するので、「依存テクスチャピクチャ」と標示される。言い換えれば、ビデオコーダは、現在のテクスチャピクチャ60を復号するために参照テクスチャピクチャ62を合成する必要があり得る。参照テクスチャピクチャ62および現在のテクスチャピクチャ60は、同じアクセスユニット内にあるが、異なるビュー内にある。
[0132]参照テクスチャピクチャ62を合成するために、ビデオコーダは、現在のテクスチャピクチャ60のブロック(すなわち、ビデオユニット)を処理し得る。図7の例では、ビデオコーダは、現在のブロック64を処理中である。ビデオコーダが現在のブロック64を処理するとき、ビデオコーダは、現在のブロック64に関する視差ベクトルを導出するためにNBDV導出プロセスを実行し得る。たとえば、図7の例では、ビデオコーダは、現在のブロック64に隣接するブロック68の視差ベクトル66を識別する。視差ベクトル66の識別は、図7のステップ1として示される。さらに、図7の例では、ビデオコーダは、視差ベクトル66に基づいて、現在のブロック64の視差ベクトル69を決定する。たとえば、視差ベクトル69は、視差ベクトル66のコピーであり得る。視差ベクトル66をコピーすることは、図7のステップ2として示される。
[0133]ビデオコーダは、現在のブロック64の視差ベクトル69に基づいて、参照深度ピクチャ72中の参照ブロック70を識別し得る。参照深度ピクチャ72、現在のテクスチャピクチャ60、および参照テクスチャピクチャ62は各々、同じアクセスユニット内にあり得る。参照深度ピクチャ72および参照テクスチャピクチャ62は、同じビュー内にあり得る。ビデオコーダは、現在のブロック64のテクスチャサンプル値および参照ブロック70の深度サンプル値に基づいて、参照テクスチャピクチャ62のテクスチャサンプル値を決定し得る。テクスチャサンプル値を決定するプロセスは、後方ワーピングと呼ばれる場合がある。3D−HEVC Test Model3のセクションH.8.5.2.2.7は、後方ワーピングのプロセスを記載する。後方ワーピングは、図7のステップ3として示される。このように、図7は、どのように参照ビューからの深度ブロックが位置特定され、次いでBVSP予測に使用されるかの3つのステップを示す。
[0134]BVSPがシーケンスにおいて有効にされる場合、ビュー間動き予測のためのNBDVプロセスは変更され、差分は、以下の段落のボールドイタリックで示される。
時間的隣接ブロックの各々に関して、時間的隣接ブロックが視差動きベクトルを使用する場合、ビデオコーダは視差ベクトルとして視差動きベクトルを返し、視差ベクトルは上記で説明したようにさらに改善される。
空間的隣接ブロックの各々に関して、以下のものが適用される。
各参照ピクチャリスト0または参照ピクチャリスト1に関して、以下のものが適用される。空間的隣接ブロックが視差動きベクトルを使用する場合、ビデオコーダは視差ベクトルとして視差動きベクトルを返し、ビデオコーダは、上記で説明した方法によって視差ベクトルをさらに改善する。
別段に、空間的隣接ブロックがBVSPモードを使用する場合、ビデオコーダは、視差ベクトルとして関連の動きベクトルを返す。ビデオコーダは、上記と同様の方法で視差ベクトルをさらに改善する。しかしながら、ビデオコーダは、4つのコーナーピクセルではなく対応する深度ブロックのすべてのピクセルから最大深度値を選択する。
空間的隣接ブロックの各々に関して、空間的隣接ブロックがIDVを使用する場合、ビデオコーダは視差ベクトルとしてIDVを返し、ビデオコーダは、上記で説明した方法によって視差ベクトルをさらに改善した。
[0135]導入されたBVSPモードは特別のインターコード化モードとして扱われ、BVSPモードの使用を示すフラグが、各PUのために維持されるべきである。ビデオコーダは、ビットストリーム中のフラグをシグナリングするのではなく、新規のマージ候補(すなわち、BVSPマージ候補)をマージ候補リストに追加することができ、フラグは、復号されたマージ候補インデックスがBVSPマージ候補に対応するかどうかに依存する。BVSPマージ候補は、次のように定義され得る。
各参照ピクチャリストに関する参照ピクチャインデックス:−1
各参照ピクチャリストに関する動きベクトル:改善された視差ベクトル
[0136]BVSPマージ候補の挿入位置は、空間的隣接ブロックに依存し得る。たとえば、5つの隣接ブロック(すなわち、A0、A1、B0、B1、またはB2)のいずれかがBVSPモードを用いてコーディングされる(すなわち、隣接ブロックの維持されたフラグが1に等しい)場合、ビデオコーダは、BVSPマージ候補を対応する空間的マージ候補として扱うことができ、BVSPマージ候補をマージ候補リストに挿入することができる。ビデオコーダは、BVSPマージ候補をマージ候補リストに一度だけ挿入することができる。別段に、5つの空間的隣接ブロックのいずれもBVSPモードを用いてコーディングされない場合、ビデオコーダは、時間的マージ候補の直前にBVSPマージ候補をマージ候補リストに挿入する。結合双予測マージ候補導出プロセス中に、ビデオコーダは、BVSPマージ候補を含むことを避けるための追加の条件をチェックする。
[0137]サイズがN×Mによって示される各BVSPコード化PUの場合、BVSPコード化PUは、K×K(ここでKは4または2であり得る)に等しいサイズを有するいくつかの下位領域にさらに区分される。下位領域ごとに、別個の視差動きベクトルが導出され、各下位領域は、ビュー間参照ピクチャ中の導出された視差動きベクトルによって位置特定された1つのブロックから予測される。言い換えれば、BVSPコード化PUに関する動き補償ユニットのサイズは、K×Kに設定される。共通のテスト条件では、Kは4に設定される。
[0138]本セクションは、視差動きベクトル導出プロセスについて説明する。BVSPモードを用いてコーディングされた1つのPU内の各下位領域(4×4ブロック)の場合、対応する4×4深度ブロックは、上述の改善された視差ベクトルを用いて参照深度ビューにおいて最初に位置特定される。次に、ビデオコーダは、対応する深度ブロック中の16個の深度ピクセルの最大値を選択する。次に、ビデオコーダは、その最大値を視差動きベクトルの水平成分に変換する。ビデオコーダは、視差動きベクトルの垂直成分をゼロに設定する。
[0139]本開示の次のセクションは、スキップ/マージモードに関するビュー間候補導出プロセスについて説明する。DoNBDV方式から導出された視差ベクトルに基づいて、新規の動きベクトル候補(すなわち、ビュー間予測動きベクトル候補(IPMVC))は、利用可能な場合、AMVPおよびスキップ/マージモードに追加され得る。ビュー間予測動きベクトルは、利用可能な場合、時間動きベクトルである。スキップモードがマージモードと同じ動きベクトル導出プロセスを有するので、本文書で説明される一部またはすべての技法は、マージモードとスキップモードの両方に適用され得る。
[0140]マージ/スキップモードに関して、ビデオコーダは、以下のステップによってビュー間予測動きベクトルを導出し得る。第1に、ビデオコーダは、同じアクセスユニットの参照ビュー中の現在のPU/CUの対応するブロックを位置特定するために視差ベクトルを使用する。対応するブロックがイントラコーディングされず、ビュー間予測をされず、対応するブロックの参照ピクチャが、現在のPU/CUの同じ参照ピクチャリスト内への1つのエントリー(すなわち、参照ピクチャ)のPOC値に等しいPOCを有する場合、ビデオコーダは、ビュー間予測動きベクトルとなるようにPOCに基づいて参照インデックスを変換した後、動き情報(予測方向、参照ピクチャ、および動きベクトル)を導出し得る。
[0141]図8は、ビュー間予測動きベクトル候補の導出プロセスの一例を示す。視差ベクトルは、現在コーディングされているビュー(ビュー1すなわちV1)中の現在のPU100に対する異なるビュー(たとえば、ビュー0すなわちV0)中の対応するブロック102を見出すことによって計算される。対応するブロック102がイントラコーディングされず、ビュー間予測されず、その参照ピクチャが、現在のPU100の参照ピクチャリスト中にあるPOC値(たとえば、図8に示される、Ref0,List 0、Ref0,List1、Ref1,List1)を有する場合、対応するブロック102に関する動き情報が、ビュー間予測動きベクトルとして使用される。ビデオコーダは、POCに基づいて参照インデックスをスケーリングし得る。
[0142]図8の例では、現在のPU100は、時間インスタンスT1においてビューV1内に発生する。現在のPU100に対する参照PU102は、現在のPU100と異なるビュー(すなわち、ビューV0)内に、現在のPU100と同じ時間インスタンス(すなわち、時間インスタンスT1)において発生する。図8の例では、参照PU102は、双方向にインター予測される。したがって、参照PU102は、第1の動きベクトル104および第2の動きベクトル106を有する。動きベクトル104は、参照ピクチャ108内の位置を示す。参照ピクチャ108は、ビューV0内に時間インスタンスT0において発生する。動きベクトル106は、参照ピクチャ110内の位置を示す。参照ピクチャ110は、ビューV0内に時間インスタンスT3において発生する。
[0143]ビデオコーダは、参照PU102の動き情報に基づいて、現在のPU100のマージ候補リストに含めるためのIPMVCを生成し得る。IPMVCは、第1の動きベクトル112および第2の動きベクトル114を有し得る。動きベクトル112は動きベクトル104にマッチングし、動きベクトル114は動きベクトル106にマッチングする。ビデオコーダは、IPMVCの第1の参照インデックスが参照ピクチャ108と同じ時間インスタンス(すなわち、時間インスタンスT0)において発生する参照ピクチャ(すなわち、参照ピクチャ116)の現在のPU100に関するRefPicList0内の位置を示すようにIPMVCを生成する。図8の例では、参照ピクチャ116は、現在のPU100に関するRefPicList0内の第1の位置(すなわち、Ref0)において発生する。さらに、ビデオコーダは、IPMVCの第2の参照インデックスが参照ピクチャ110と同じ時間インスタンスにおいて発生する参照ピクチャ(すなわち、参照ピクチャ118)の現在のPU100に関するRefPicList1内の位置を示すようにIPMVCを生成する。したがって、図8の例では、IPMVCのRefPicList0参照インデックスは、0に等しい場合がある。図8の例では、参照ピクチャ119は、現在のPU100に関するRefPicList1内の第1の位置(すなわち、Ref0)において発生し、参照ピクチャ118は、現在のPU100に関するRefPicList1内の第2の位置(すなわち、Ref1)において発生する。したがって、IPMVCのRefPicList1参照インデックスは、1に等しい場合がある。
[0144]ビュー間予測動きベクトル候補が利用可能でない(たとえば、対応するブロック102がイントラコーディングされるか、またはビュー間予測される)場合、ビデオコーダは、視差ベクトルをビュー間視差動きベクトルに変換することができるが、ビデオコーダは、このビュー間視差動きベクトルを、利用可能な場合、ビュー間予測動きベクトル候補と同じ位置のAMVPまたはマージ候補リストに追加する。得られた候補は、ビュー間視差動きベクトル候補(IDMVC:Inter-view Disparity Motion Vector Candidate)と呼ばれる場合がある。したがって、IDMVCは、現在のブロックの視差ベクトルを指定し得る。ビュー間予測動きベクトルまたはビュー間視差動きベクトルのいずれかは、このコンテキストでは「ビュー間候補」と呼ばれる場合がある。
[0145]AMVPモードでは、ターゲット参照インデックスが時間的動きベクトルに対応する場合、ビデオコーダは、視差ベクトルによって位置特定された現在のPUの対応するブロック内の動きベクトルをチェックすることによってIPMVCを見出す。IPMVCが利用不可能である場合、ビデオコーダは、ゼロ動きベクトル候補を候補リストに追加する。AMVPモードでは、ターゲット参照インデックスが視差動きベクトルに対応する場合、ビデオコーダは、IPMVCを導出しないが、ビデオコーダは、視差ベクトルをビュー間視差動きベクトルに変換し、このビュー間視差動きベクトルを候補リストに追加する。
[0146]マージ/スキップモードでは、ビデオコーダは、すべての空間的マージ候補および時間的マージ候補の前に、利用可能な場合、IPMVCをマージ候補リストに常に挿入する。ビデオコーダは、A0から導出された空間的マージ候補の前にIDMVCを挿入する。3D−HTMソフトウェアのあるバージョンは、ビュー間予測動きベクトルまたはビュー間視差動きベクトルを、AMVP候補リスト内のすべての空間的候補および時間的候補の前に常に挿入する。
[0147]本開示の次のセクションは、3D−HEVCにおけるマージ候補リスト構成について説明する。第1に、ビデオコーダは、DoNBDVの方法を用いて視差ベクトルを導出する。ビデオコーダがそのような視差ベクトルを見出さない場合、ビデオコーダは、ゼロ視差ベクトルを使用する。視差ベクトルの場合、3D−HEVCにおけるマージ候補リスト構成プロセスは、次のように定義され得る。
1.IPMVC挿入
− ビデオコーダは、上記で説明したプロシージャによってIPMVCを導出する。IPMVCが利用可能である場合、ビデオコーダは、IPMVCをマージリストに挿入する。
2.3D−HEVCにおける空間的マージ候補およびIDMVCの挿入に関する導出プロセス
− 以下の順序、すなわち、A1、B1、B0、A0、またはB2で、空間的隣接PUの動き情報をチェックする。ビデオコーダは、以下の手順によって、制約付きプルーニングを実行する。
− A1およびIPMVCが同じ動きベクトルおよび同じ参照インデックスを有する場合、ビデオコーダは、A1を候補リストに挿入しないが、場合によっては、ビデオコーダは、A1を候補リストに挿入する。
− B1およびA1/IPMVCが同じ動きベクトルおよび同じ参照インデックスを有する場合、ビデオコーダは、B1を候補リストに挿入しないが、場合によっては、ビデオコーダは、B1を候補リストに挿入する。
− B0が利用可能である場合、ビデオコーダは、B0を候補リストに追加する。IDMVCが、上記で説明したプロシージャによって導出される。IDMVCが利用可能であり、IDMVCがA1およびB1から導出された候補とは異なる場合、ビデオコーダは、IDMVCを候補リストに挿入する。
− BVSPがピクチャ全体または現在のスライスに関して有効にされる場合、ビデオコーダは、BVSPマージ候補をマージ候補リストに挿入する。
− A0が利用可能である場合、ビデオコーダは、A0を候補リストに追加する。
− B2が利用可能である場合、ビデオコーダは、B2を候補リストに追加する。
3.時間的マージ候補に関する導出プロセス
− コロケートPUの動き情報が利用される、HEVCにおける時間的マージ候補導出プロセスと同様である。
4.3D−HEVCにおける結合双予測マージ候補に関する導出プロセス
− 上記の2つのステップから導出された候補の総数が、候補の最大数未満である場合、ビデオコーダは、l0CandIdxおよびl1CandIdxの指定を除いて、HEVC WD10(および/またはHEVCの他のバージョン)に定義されているものと同じプロセスを実行する。combIdx、l0CandIdx、およびl1CandIdxの間の関係は、図9に示すテーブルにおいて定義されている。combIdx、l0CandIdx、およびl1CandIdxの間の関係は、図9に示すテーブルにおいて定義されている。言い換えれば、図9は、l0CandIdxおよびl1CandIdxの例示的な仕様を示す例示的なテーブルである。
5.ゼロ動きベクトルマージ候補に関する導出プロセス
− ビデオコーダは、HEVCにおいて定義されたものと同じプロシージャを実行する。
[0148]3D−HEVCに関するソフトウェアのいくつかのバージョンでは、マージリスト中の候補の総数は最大6であり、five_minus_max_num_merge_candが、スライスヘッダ中で6から減算されるマージ候補の最大数を指定するためにシグナリングされる。five_minus_max_num_merge_candは、両端値を含む、0〜5の範囲内にある。
[0149]マージ候補リストを生成する別の例では、視差ベクトルは、DoNBDVの方法を用いて最初に導出される。そのような視差ベクトルが見出されない場合、ゼロ視差ベクトルが利用される。視差ベクトルの場合、3D−HEVCにおけるマージ候補リスト構成プロセスは、次のように定義され得る。
1.IPMVC挿入
− IPMVCが、上記で説明したプロシージャによって導出される。IPMVCが利用可能である場合、IPMVCはマージリストに挿入される。
2.3D−HEVCにおける空間的マージ候補およびIDMVCの挿入に関する導出プロセス
− 以下の順序、すなわち、A1、B1、B0、A0、またはB2で空間的隣接PUの動き情報をチェックする。制約付きプルーニングは、以下のプロシージャによって実行される。
− A1およびIPMVCが同じ動きベクトルおよび同じ参照インデックスを有する場合、A1は、候補リストに挿入されないが、場合によっては、A1はそのリストに挿入される。
− B1およびA1/IPMVCが同じ動きベクトルおよび同じ参照インデックスを有する場合、B1は、候補リストに挿入されないが、場合によっては、B1はそのリストに挿入される。
− B0が利用可能である場合、B0は、候補リストに追加される。IDMVCが、上記で説明したプロシージャによって導出される。IDMVCが利用可能であり、A1およびB1から導出された候補と異なる場合、IDMVCは候補リストに挿入される。
− BVSPがピクチャ全体または現在のスライスに関して有効にされる場合、BVSPマージ候補は、マージ候補リストに挿入される。
− A0が利用可能である場合、A0は、候補リストに追加される。
− B2が利用可能である場合、B2は、候補リストに追加される。
3.時間的マージ候補に関する導出プロセス
− しかしながら、コロケートPUの動き情報が利用されるHEVCにおける時間的マージ候補導出プロセスと同様に、時間的マージ候補のターゲット参照ピクチャインデックスが、0となるように固定するのではなく変更され得る。0に等しいターゲット参照インデックスが時間的参照ピクチャ(同じビュー内)に対応する一方で、コロケートPUの動きベクトルがビュー間参照ピクチャを指すとき、ターゲット参照インデックスは、参照ピクチャリスト内へのビュー間参照ピクチャの第1のエントリーに対応する別のインデックスに変更される。反対に、0に等しいターゲット参照インデックスがビュー間参照ピクチャに対応する一方で、コロケートPUの動きベクトルが時間的参照ピクチャを指すとき、ターゲット参照インデックスは、参照ピクチャリスト内への時間的参照ピクチャの第1のエントリーに対応する別のインデックスに変更される。
4.3D−HEVCにおける結合双予測マージ候補に関する導出プロセス
− 上記の2つのステップから導出された候補の総数が、候補の最大数未満である場合、HEVCにおいて定義されたものと同じプロセスは、l0CandIdxおよびl1CandIdxの仕様を除いて実行される。combIdx、l0CandIdx、およびl1CandIdxの間の関係は、図9において定義されている。
5.ゼロ動きベクトルマージ候補に関する導出プロセス
− HEVCにおいて定義されたものと同じプロシージャが実行される。
[0150]3D−HEVCにおけるマージ候補リスト構成のための代替技法
[0151]上記で説明した方法に加えて、両方の内容全体が参照によって本明細書に組み込まれる、同時係属の、2012年12月7日に出願された米国仮出願第61/734,929号(以下、「’929出願」)と、2012年12月30日に出願された米国仮出願第61/747,350号(以下、「’350出願」)とは、以下の技法について説明する。参照ビュー中の改善された視差ベクトルによって識別された対応するブロックは、現在の方法と同様に、IPMVCを導出するために使用される。適用可能な場合、2つのシフト視差ベクトルが導出される。
− 左シフト視差ベクトル(LDV:Left shifted Disparity Vector):水平成分に関して16だけ視差ベクトルを減算する。
− 右シフト視差ベクトル(RDV:Right shifted Disparity Vector):水平成分に関して16だけ視差ベクトルを加算する。
[0152]IPMVCを導出するためのLDV/RDVの使用は、現在の3D−HEVCにおける視差ベクトルと同じである。導出されたIPMVCが利用可能である場合、導出されたIPMVCは、マージ候補リストに追加される。場合によっては、ビデオコーダは、次のように、シフト視差ベクトルをマージ候補リストに追加されるべき視差動きベクトルに変換する。
− 左候補:視差動きベクトル候補は、DV[0]−4に等しい水平成分と0に等しい垂直成分とを有する動きベクトルに設定される。
− 右候補:視差動きベクトル候補は、DV[0]+4に等しい水平成分と0に等しい垂直成分とを有する動きベクトルに設定される。
[0153]シフト視差動き予測子から導出される追加のマージ候補
[0154]以下の技法は、Guillemotら、「Additional merge candidates derived from shifted disparity candidate predictors」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第3回会合:ジュネーブ、スイス、2013年1月17日〜23日、書類JCT3V−C0148(以下、「JCT3V−C0148」)におけるマージ候補リストを構成するために提案された。JCT3V−C0148は、2014年3月26日付けで、http://phenix.int−evry.fr/jct3v/doc_end_user/current_document.php?id=589から利用可能であり、参照により本明細書に組み込まれる。JCT3V−C0148によって提案された技法では、マージリスト中の候補の第1〜第3の位置は、第1の視差動きベクトル候補を探索するために走査される。そのような候補が利用可能である場合、2つの新規の候補が視差動きベクトルを+4および−4だけ水平にシフトさせることによって生成される。生成された候補は、マージ候補リストに挿入される。
[0155]参照により本明細書に組み込まれる、2013年4月4日に出願された同時係属中の米国仮出願第61/808,562号(以下、「’562出願」)は、マージ候補リストを構成するための技法を提案する。’562出願の提案された技法では、2つの候補(すなわち、左候補および右候補)は、以下に説明するステップを追うことによって生成される。
− 視差ベクトルDVは、適用可能な場合、2つのシフト視差ベクトルを導出するためにシフトされる。
− DVは、LDV/RDVを導出するために水平に−4/4だけ左/右にシフトされ、参照ビューにおける左/右IPMC候補を導出するためにそのシフトされたDVが使用される。
− 左/右IPMCが利用不可能である場合、視差シフト動きベクトル(DSMV)として示される候補が、導出され左/右候補であるように設定される。DSMVは次のように導出される。
− 空間的隣接ブロックA1、B1、B0、A0、またはB2からRefPicList0に対応する第1の利用可能な視差動きベクトル(DMV)が、導出するために使用される。
− DMVが利用可能である(すなわち「mv」として示される)場合、
i.DSMV[0]=mv[0]、DSMV[1]=mv[1]、DSMV[0][0]−/+=4、参照インデックスが、第1の利用可能な候補(DMVを含む)から継承される。
ii.BVSPが有効にされるとき、DSMV[0][1]は0に設定される。
場合によっては、DSMV[0][0]=DV[0]−/+4、DSMV[1][0]=DV[0]−/+4、DSMV[0][1]=0、およびDSMV[1][1]=0。左候補および右候補は、それぞれ、時間的マージ候補の前後に右に挿入される。左候補または右候補は、ビュー間予測動きベクトル候補である場合、IPMVCとだけ比較される。
[0156]Linら、「3D−CE5.h関連:Additional inter−view merging candidate」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張共同研究部会、第4回会合:インチョン、韓国、2013年4月20日〜26日、書類第JCT3V−D0109号(以下、「JCT3V−D0109」)は、マージ候補リスト中の追加のビュー間候補を含めるためのプロセスについて説明する。JCT3V−D0109は、2014年3月26日付けで、http://phenix.int−sudparis.eu/jct3v/doc_end_user/current_document.php?id=794から利用可能であり、参照により本明細書に組み込まれる。図10は、マージ候補リスト中の追加のビュー間候補を含めるためにJCT3V−D0109に記載されたプロセスを示す。言い換えれば、図10は、マージ/スキップモードのための追加のビュー間候補の導出を示す概念図である。
[0157]図10の例では、現在のブロック140は、視差ベクトル142を有する。視差ベクトル142は、ビュー間参照ピクチャ中のブロックIの位置を示す。追加のビュー間候補を導出するために、ビデオコーダは、シフト視差ベクトル144を決定し得る。シフト視差ベクトル144は、視差ベクトル142と同じ水平成分および垂直成分を有する場合があるが、シフト視差ベクトル144の原点は、「H」によって図10に示す位置である。その場合、ビデオコーダは、ビュー間参照ピクチャ中のブロックI2を決定するためにシフト視差ベクトル144を使用し得る。追加のビュー間候補は、ブロックI2の動き情報を有し得る。したがって、JCT3V−D0109では、追加のビュー間予測動きベクトル候補は、図10に示すように視差ベクトルによってシフトされたHの位置として位置特定される対応するブロック(I2)から導出される。追加候補は、元のIPMVCと異なる場合にのみ、時間的マージ候補の直前にマージ候補リストに挿入される。
[0158]進化型残差予測
[0159]上記に示すように、3D−HEVCは、ビュー残差予測をサポートし得る。3D−HEVCに関するいくつかの提案では、ビュー間残差予測は、いわゆる進化型残差予測(ARP)によって実現される。ARPは、2つのビューの残差信号間の相関をより効率的に利用するために提案されてきた。
[0160]図11は、マルチビュービデオコーディングにおけるARPの例示的な予測構造を示す概念図である。ARPでは、視差ベクトルを用いて識別される参照ブロックの残差は、参照ビューに関する残差ピクチャを維持し残差ピクチャ中の参照ブロック内の残差を直接予測することなく、図11に示すように、オンザフライで生成される。図11は、現在のピクチャ170、時間的参照ピクチャ172、視差参照ピクチャ174、および時間的視差参照ピクチャ176という、4つのピクチャを含む。現在のピクチャ170は、非ベースビューV1中にあり、時間インスタンスTj中にある。時間的参照ピクチャ172は、非ベースビュー中にあり、時間インスタンスTi中にある。視差参照ピクチャ174は、ベースビュー中にあり、時間インスタンスTj中にある。時間的視差参照ピクチャ176は、ベースビュー中にあり、時間インスタンスTi中にある。
[0161]現在のピクチャ170は、「Dc」として示される現在のPUを含む。言い換えれば、Dcは、現在のビュー(すなわち、非ベースビュー)中の現在のブロックを表す。Dcは、時間的参照ピクチャ172の中の位置を示す、時間的動きベクトルVDを有する。ビデオエンコーダ20は、時間的動きベクトルVDによって示されるロケーションと関連付けられるピクチャ172中のサンプルに基づいて、時間的参照ブロックDrを決定することができる。したがって、Drは時間Tiにおける同じビュー(ビュー1)からのDcの時間的予測ブロックを示し、VDはDcからDrへの動きを示す。
[0162]さらに、ビデオエンコーダ20は、Dcの視差ベクトルによって示されるロケーションと関連付けられる視差参照ピクチャ174中のサンプルに基づいて、視差参照ブロックBcを決定することができる。したがって、Bcは、参照ブロック(すなわち、時間Tjにおける参照ビュー(ベースビュー)中のDcの表現)を示す。Bcの左上の位置は、導出された視差ベクトルをDcの左上の位置に加算することによって、導出された視差ベクトルを用いて計算され得る。DcおよびBcは、2つの異なるビューにおける同じオブジェクトの投影であり得るので、DcおよびBcは同じ動き情報を共有するはずである。したがって、時間Tiにおけるビュー0中のBcの時間的予測ブロックBrは、VDの動き情報を適用することによってBcから位置決定され得る。
[0163]ビデオエンコーダ20は、時間的視差ピクチャ176中の時間的視差参照ブロックBr(Bcの予測ブロック)を決定することができる。上述したように、時間視差ピクチャ176は、Brと同じビュー(すなわち、ビューV0)中にあり、Drと同じ時間インスタンス(すなわち、時間インスタンスTi)中にある。ビデオエンコーダ20は、Dcの動きベクトルVDによって示されるロケーションにおけるサンプルに基づいて、Brを判断することができる。したがって、Brの左上位置は、Bcの左上位置に動きベクトルVDを加算することによって、再利用される動きベクトルVDを用いて算出され得る。Bcの左上位置は、Dcの左上位置と視差ベクトルとの合計に等しくなり得る。したがって、Brの左上位置は、Dcの左上位置の座標と、視差ベクトルと、動きベクトルVDとの合計に等しくなり得る。このように、図11に矢印178によって示すように、ビデオエンコーダ20は、Brを決定するために、動きベクトルVDを再利用することができる。したがって、図11に示すように、Dcとして示される、非ベースビュー中の現在のブロックの残差をより十分に予測するために、参照ブロックBcは、最初に視差ベクトルによって識別され、参照ブロックの動き補償は、予測信号Brと参照ブロックBcの再構成信号との間の残差を導出するために呼び出される。
[0164]さらに、ARPにおいて、第1の残差ブロック中の各サンプルは、Dc中のサンプルとDrの対応するサンプルとの間の差分を示し得る。第1の残差ブロックは、Dcの元の残差ブロックと呼ばれ得る。第2の残差ブロック中の各サンプルは、Bc中のサンプルとBr中の対応するサンプルとの間の差分を示し得る。第2の残差ブロックは、「残差予測子」と呼ばれ得る。ビデオエンコーダ20は、Brを決定するために動きベクトルVDを使用するので、残差予測子は、Bcの実際の残差データと異なり得る。
[0165]ARPモードが呼び出されるとき、予測残差が、非ベースビューの予測信号の上部に加算される場合があり、この予測信号は、いくつかの例では、非ベースビューの参照ピクチャ中のブロックDrからの動き補償によって生成される。ARPモードの利点の1つは、(ARPのために残差を生成するとき)参照ブロックによって使用される動きベクトルが、現在のブロックの動きベクトルと一直線に並び、その結果、現在のブロックの残差信号がより正確に予測され得ることである。したがって、残差のエネルギーは、かなり低減され得る。ベース(参照)ビューと非ベースビューとの間の量子化差分がより低い予測精度につながり得るので、ビデオコーダは、参照ビューから生成された残差に2つの重み係数、すなわち0.5および1を適応的に適応し得る。
[0166]さらに、ベース(参照)ビューにおける追加の動き補償がメモリアクセスおよび計算の大幅な増大を必要とする場合があるので、コーディング効率の少ない犠牲を伴いながら設計をより実用的にするためのいくつかの技法が採用されてきた。第1に、ARPモードは、特にビデオエンコーダ20においてPUが計算を低減させるために2N×2N(すなわち、PUを含むCUが単一のPUのみを有する)でコーディングされるとき、PUに関してのみ有効にされる。第2に、ARPモードによってコーディングされるブロックに関するメモリアクセスを大幅に低減させるのに、参照ブロックと現在のブロックの両方の動き補償のために双線形フィルタが採用される。第3に、キャッシュ効率を改善するために、動きベクトルは非ベースビュー中の様々なピクチャを指す場合があるが、ベースビュー中の参照ピクチャは固定される。この場合、ビデオコーダは、ピクチャ距離に基づいて現在のブロックの動きベクトルをスケーリングする必要がある場合がある。
[0167]HEVCベースのマルチビュー/3DVコーディングにおける動き関連技術の現在の設計は、導出される視差ベクトルが最適コーディング効率のためにはあまり正確でない可能性があるので、以下の問題を有する。一例として、不正確な視差ベクトルは、不正確なビュー間予測動きベクトル候補およびビュー間視差動きベクトル候補につながり得る。また、空間的隣接候補A0、A1、B0、B1、またはB2の視差動きベクトルが現在のコーディングPUの視差動きベクトルに高く相関することは、マージ候補リストを生成しながら十分には活用されない。
[0168]これらの欠点に鑑みて、本開示は、特に3D−HEVCの非ベーステクスチャビューに関して、マージ候補リストに追加されるべきより正確な候補を導出するための様々な技法を提案する。
[0169]以下の説明を明確にするために、本開示は、参照ピクチャリスト0に関してはmv[0]によって、参照ピクチャリスト1に関してはmv[1]によって予測ユニット(ブロック)の動きベクトルを示し、DVによって現在のブロックの視差ベクトルを示し、N、M1、およびM2によって所与のシフト値を示し、1つの動きベクトルmv[i]の水平成分および垂直成分は、jが0および1であるmv[i][j]によってそれぞれ示される。
[0170]本開示の以下の例の各々は、1つのシフト方向に関して1つの追加候補(N/Mは負または正である)を生成するために別々に使用される(たとえば、本開示の以下の例は代替例である)。いくつかの例では、以下の例の1つまたは複数は、連携して使用され得る。
[0171]本開示の第1の例では、ビデオコーダは、RefPicList0中に視差動きベクトルを有する空間的隣接ブロックA1、B1、B0、A0、またはB2のうちの第1のブロックを識別する。ビデオコーダは、識別された空間的隣接ブロックのRefPicList0視差動きベクトルに等しい追加の動きベクトル候補(MvC)のRefPicList0動きベクトルを設定することができる。加えて、ビデオコーダは、識別された空間的隣接ブロックのRefPicList1動きベクトルに等しいMvCのRefPicList1動きベクトルを設定することができる。ビデオコーダは、次いで、MvCのRefPicList0動きベクトルの水平成分をシフトさせ得る。得られた候補は、本明細書では、視差シフト動きベクトル(DSMV)候補と呼ばれる場合がある。言い換えれば、空間的隣接ブロックA1、B1、B0、A0、またはB2のRefPicList0に対応する第1の利用可能な視差動きベクトル(DMV)は、追加の動きベクトル候補MvCを生成するために、(利用可能な視差動きベクトルである)mv[0]の水平成分をシフトさせることによって追加候補を導出するのに使用される。この候補は、視差シフト動きベクトル(DSMV)または「DSMV候補」として示される。
[0172]したがって、この第1の例では、視差動きベクトルが利用可能である場合、MvC[0]=mv[0]、MvC[1]=mv[1]、およびMvC[0][0]+=N、参照インデックスが、第1の利用可能な候補(DMVを含む)から継承される。一代替例では、候補は、RefPicList1に対応するブロック(DMVを含む)のDVおよび動きベクトルから結合される。すなわち、MvC[0]=DV、MvC[1]=mv[1]、およびMvC[0][0]+=N。DMVが利用不可能である場合、固定されたNに関して、追加候補は生成されない。
[0173]このように、ビデオコーダは、ビデオデータの現在のブロックの空間的隣接ブロック間で第1の利用可能な視差動きベクトルを決定し得る。第1の利用可能な視差動きベクトルは、第1の参照ピクチャリスト(たとえば、RefPicList0)に対応する。さらに、ビデオコーダは、DSMV候補を導出するために第1の利用可能な視差動きベクトルの水平成分をシフトさせ得る。ビデオコーダは、DSMV候補をマージ候補リストに追加し得る。さらに、いくつかの例では、空間的隣接ブロックは、特定の空間的隣接ブロックを含み、第1の利用可能な視差動きベクトルは、特定の空間的隣接ブロックの第1の動きベクトルである。空間的隣接ブロックのうちの少なくとも1つが視差動きベクトルを有するとき、ビデオコーダは、DSMV候補の第1の動きベクトルを特定の空間的隣接ブロックの第1の動きベクトルに設定することができる。加えて、ビデオコーダは、DSMV候補の第2の動きベクトルを特定の空間的隣接ブロックの第2の動きベクトルに設定することができ、この特定の空間的隣接ブロックの第2の動きベクトルは第2の参照ピクチャリストに対応する。ビデオコーダは、DSMV候補の第1の動きベクトルの水平成分にオフセットを加算し、それによって、DSMV候補を導出するために第1の利用可能な視差動きベクトルの水平成分を効果的にシフトさせ得る。いくつかの例では、オフセットは4に等しい。
[0174]本開示の第2の例では、ビデオコーダは、第1の例で説明したように、DSMV候補を最初に生成し得る。DSMV候補が利用可能でない場合、ビデオコーダは、より詳細には次のように、動きベクトルを視差ベクトルからシフトしたベクトルに設定することによってDSMV候補(MvCとして示される)を生成し得る。MvC[0]=DVおよびMvC[0][0]+=N、MvC[0][1]=0およびMvC[1]=DVおよびMvC[1][0]+=N、MvC[1][1]=0およびMvC[X]に対応する参照インデックスは、NBDVプロセスの間に視差ベクトルとともに識別される参照ビューに属するRefPicListX中のピクチャの参照インデックスに設定される。一代替例では、ビデオコーダは、RefPicListXに関連する参照インデックスを−1に設定する。
[0175]このように、空間的隣接ブロックのいずれも視差動きベクトルを有しないとき、ビデオコーダは、DSMV候補の第1の動きベクトル(すなわち、MvC[0])とDSMV候補の第2の動きベクトル(すなわち、MvC[1])とを現在のブロックの視差ベクトル(すなわち、DV)に設定し得る。さらに、ビデオコーダは、DSMV候補の第1の動きベクトルの水平成分(すなわち、MvC[0][0])にオフセット(すなわち、N)を加算し、DSMV候補の第2の動きベクトルの水平成分(すなわち、MvC[1][0])にオフセットを加算し得る。ビデオコーダは、DSMV候補の第1の動きベクトルの垂直成分(すなわち、MvC[0][1])と、DSMV候補の第2の動きベクトルの垂直成分(すなわち、MvC[1][1])とを0に設定し得る。この例では、ビデオコーダは、現在のブロックの視差ベクトルを決定するために、隣接ブロックに基づいてプロセス(たとえば、NBDV導出プロセス、DoNBDV導出プロセスなど)を実行し得る。このプロセスは、現在のブロックの視差ベクトルとともに参照ビューを識別し得る。さらに、空間的隣接ブロックのいずれも視差動きベクトルを有しないとき、ビデオコーダは、DSMV候補の第1の動きベクトルに対応する参照インデックスを、第1の参照ピクチャリスト中にあり識別された参照ビューに属するピクチャの参照インデックスに設定し得る。加えて、ビデオコーダは、DSMV候補の第2の動きベクトルに対応する参照インデックスを、第2の参照ピクチャリスト中にあり識別された参照ビューに属するピクチャの参照インデックスに設定し得る。
[0176]本開示の第3の例では、DSMV候補は、上記の第1の例に従って最初に生成されるべきである。加えて、ビデオコーダは、マージ候補リストを生成するために現在のPU/CUのシフト視差ベクトルから導出される参照ビューからのIPMVCを考慮することもできる。シフト視差ベクトルからのIPMVCが利用可能である場合、ビデオコーダは、追加候補をIPMVCに設定する。場合によっては、DSMV候補が利用可能である場合、ビデオコーダは、追加候補をDSMV候補に設定する。場合によっては、同じシフト方向(負または正のシフト値)に関して追加候補が存在しない。IPMVCおよびDSMV候補はどちらも、負または正のシフトを有する。DSMV候補を生成するためのシフトがNであると仮定すると、対応するIPMVCを生成するためのシフトはMであり、NおよびMは異なる場合がある。
[0177]本開示の第4の例では、IPMVC候補またはDSMV候補のいずれかに基づいて候補を生成する優先度が逆転する場合がある。より詳細には、DSMV候補が利用可能である場合、ビデオコーダは、追加候補をDSMV候補に設定する。場合によっては、IPMVCが利用可能である場合、ビデオコーダは、追加候補をIPMVCに設定する。場合によっては、同じシフト方向に関して追加候補が存在しない。
[0178]本開示の第5の例では、第2の例において説明したDSMV候補を生成する技法は、BVSPがピクチャ全体に関してまたは現在のシーケンスに関して有効にされる場合、MvC[X]は視差動きベクトル(DMV)から導出されるとき、ビデオコーダが動きベクトルMvC[X]の垂直成分を0に設定することができるように結合される場合があり、Xは0または1に等しい。第2の例においてビデオコーダがステップを実行した後、ビデオコーダは、DMVが利用可能でありBVSPが有効にされる場合、MvC[0][1]を0に設定し得る。一代替例では、DMVが利用可能でありBVSPが有効にされる場合、ビデオコーダは、MvC[0][1]および/またはMvC[1][1]を0に設定する。このように、後方ワーピングビュー合成予測がピクチャ全体または現在のシーケンスに関して有効にされる場合、ビデオコーダは、DSMV候補の第1の動きベクトルが第1の利用可能な視差動きベクトル(すなわち、DMV)から導出されるとき、DSMV候補の第1の動きベクトルの垂直成分を0に設定することができる。さらに、後方ワーピングビュー合成予測がピクチャ全体または現在のシーケンスに関して有効にされる場合、ビデオコーダは、DSMV候補の第2の動きベクトルが第1の利用可能な視差動きベクトルから導出されるとき、DSMV候補の第2の動きベクトルの垂直成分を0に設定することができる。
[0179]本開示の第6の例では、ビデオコーダは、上記で説明した第2の例または第5の例のいずれかに従って、DSMV候補を最初に生成する。しかしながら、この第6の例では、加えて、ビデオコーダは、マージ候補リストを生成するために現在のPU/CUのシフト視差ベクトルから導出される参照ビューからのIPMVCを考慮することができる。この例では、最終的な候補がMvComCであると仮定されたい。両端値を含む、0〜1のXに関して、IPMVC[X]が利用可能である場合、MvComC[X]=IPMVC[X]、場合によってはMvComC[X]=DSMV[X]。
[0180]以下の段落は、代替構成について説明する一連の例を提供する。第1の例示的な代替構成では、DSMVを生成する場合、ビデオコーダは、MvC[X]が視差ベクトル(DV)または視差動きベクトル(DMV)から導出されるとき、動きベクトルMvC[X]の垂直成分を0に設定することができるが、Xは0または1に等しい。代替的に、動きベクトルMvC[X]の垂直成分は、0に設定されない場合がある。
[0181]第2の例示的な代替構成では、DSMVを生成するためにNが使用され、IPMVCを生成するためにMが使用される。NおよびMは、ともに使用されるとき、同じであるか、または同じでない場合がある。代替的に、MとNの両方は、正または負である。いくつかの例では、Mは、4、8、16、32、64、−4、−8、−16、−32、−64、または1つのビュー内の最小PUの幅/高さのうちのいずれかの値に等しい。さらに、いくつかの例では、Nは、4、8、16、32、64、−4、−8、−16、−32、−64、または1つのビュー内の最小PUの幅/高さのうちのいずれかの値に等しい。
[0182]第3の例示的な代替構成では、2つの候補、(N,M)の負の組合せ(両方が負)または(N,M)の正の組合せを有するDSMVまたはIPMVCのいずれかから各々が生成される。ビデオコーダは、2つの候補までを生成し、2つの候補をマージ候補リストに追加し得る。別の代替形態では、ビデオコーダは、正または負の組合せのいずれかを使用して1つの候補を生成する。
[0183]第4の例示的な代替構成では、ビデオコーダは、より詳細には以下の方法のうちの1つにおいて、すべての空間的候補およびBVSP候補を挿入する前に追加候補をマージ候補リストに挿入する。一代替形態では、ビデオコーダは、TMVPマージ候補の直後に2つの候補をどちらも追加する。一代替形態では、ビデオコーダは、TMVPマージ候補の直前に2つの候補をどちらも追加する。別の代替形態では、ビデオコーダは、TMVPの直前に一方の候補を追加し、TMVPマージ候補の直後に他方の候補を追加する。一代替形態では、(N,M)の正の組合せによって導出される候補は、マージ候補リストに追加される(これら2つの追加候補)のうちの第1の候補である。概して、正の組合せは、NとMの両方が正であるとき、起こる。一代替形態では、(N,M)の負の組合せによって導出される候補は、マージ候補リストに追加される(これら2つの追加候補)のうちの第1の候補である。概して、負の組合せは、NとMの両方が負であるとき、起こる。候補は、プルーニングを用いて追加され得る(すなわち、その候補の動き情報が元のIPMVCの動き情報に等しくない場合、その候補が追加され得る)。ここで、その動き情報は、動きベクトルおよび参照インデックスを含む。
[0184]第5の例示的な代替構成では、ビデオコーダは、DSMVを生成するために、すべての空間的隣接ブロック(すなわち、ブロックA1、B1、B0、A0、およびB2)をチェックするのではなく、A1のブロックを除いて、B1、B0、A0、およびB2をチェックする。一代替形態では、空間的ブロックA1およびB1のみが順にチェックされる。代替的に、空間的ブロックA1、B1、およびB0が順にチェックされる。代替的に、空間的ブロックA1、B1、B0、およびA0が順にチェックされる。代替的に、BVSPを用いてコーディングされた空間的ブロックは、DMVを生成するために使用されるものと見なされず、これは、BVSPを用いてコーディングされたブロックがチェックされないことを意味する。代替的に、候補リストに挿入される空間的候補A1、B1、B0、A0、およびB2のみがチェックされる。代替的に、BVSPを用いてコーディングされた空間的ブロックは、DMVを生成するために使用されるものと見なされる。代替的に、ビュー間参照ピクチャから双方向にコーディングされた空間的ブロックが考慮されない。代替的に、BVSPから双方向にコーディングされた空間的ブロックが考慮されない。代替的に、双方向にコーディングされる一方でいかなる時間的動きベクトルも含まない空間的ブロックは、考慮されない。
[0185]第6の例示的な代替構成では、ビデオコーダは、DSMVを生成するために、DMVを含む第1の利用可能な空間的マージ候補を識別するのではなく、第1の条件または第2の条件が真であるとき、DSMVのみを生成する。第1の条件は、第1の2つの利用可能なマージ候補の両方が1つの参照ピクチャリスト中にDMVを含むことを指定する。第2の条件は、A1およびB1から導出されるマージ候補がマージ候補リストに含まれ、これらのマージ候補の両方が1つの参照ピクチャリスト中にDMVを含むことを指定する。
[0186]第7の例示的な代替構成では、ビデオコーダは、DSMVを生成するために、空間的マージ候補をチェックするだけでなく、時間的マージ候補もチェックする。しかしながら、ビデオコーダは、ゼロ動きベクトルマージ候補も結合双予測マージ候補もチェックしない。
[0187]第8の例示的な代替構成では、ビデオコーダは、DSMVを生成するために、ビュー間予測参照からのブロックおよび時間的参照からのブロックを用いて双方向に予測される1つのブロックからのDMVを検出するとき、DSMVのみを生成し、ビュー間予測参照に対応する動きベクトル(DMV)はシフトされ、時間的参照に対応する動きベクトルは、新規候補を生成するために保持される。
[0188]上記の例のうちの1つまたは複数において説明された技法は、様々な方法で実装され得る。1つの例示的な実装形態では、ビデオコーダは、各追加のマージ候補を生成するために上記で説明した第6の例において説明したコーディングシステムを使用し、ビデオコーダは、上記で説明した第5の例において説明したDSMV候補を生成する。この例示的な実装形態では、ビデオコーダは、(N,M)=(−4,−4)および(N,M)=(4,4)を用いて、それぞれ順に2つの候補までを生成する。さらに、この例示的な実装形態では、ビデオコーダは、TMVPの直前に第1の追加候補を追加し、TMVP候補の直後に他の追加の候補を追加する。TMVPが利用可能でない場合、ビデオコーダは、すべての空間的候補およびBVSP候補を挿入した後に2つの候補を追加する。
[0189]前の段落の例示的な実装形態では、ビデオコーダは、追加候補を用いて以下のマージ候補リスト構成プロセスを実行し得る。2つの追加の左/右候補をマージ候補リストに挿入することに関係する以下のマージ候補リスト構成プロセスの一部分が下線を引かれる。
1.IPMVC挿入
ビデオコーダは、上記で説明したプロシージャによってIPMVCを導出する。IPMVCが利用可能である場合、ビデオコーダは、IPMVCをマージ候補リストに挿入する。
2.3D−HEVCにおける空間的マージ候補およびIDMVCの挿入のための導出プロセス
以下の順序、A1、B1、B0、A0、またはB2で空間的隣接PUの動き情報をチェックする。ビデオコーダは、以下の手順によって、制約付きプルーニングを実行する。
− A1およびIPMVCが同じ動きベクトルおよび同じ参照インデックスを有する場合、ビデオコーダは、A1をマージ候補リストに挿入しない。場合によっては、A1がBVSPモードでコーディングされない場合、ビデオコーダは、利用可能な場合、A1をマージ候補リストに挿入する。場合によっては、ビデオコーダは、BVSPマージ候補をマージ候補リストに追加する。
− B1およびA1/IPMVCが同じ動きベクトルおよび同じ参照インデックスを有する場合、ビデオコーダは、B1をマージ候補リストに挿入しない。場合によっては、B1がBVSPモードでコーディングされない場合、ビデオコーダは、B1が利用可能な場合、B1をマージ候補リストに挿入する。場合によっては、BVSP候補があらかじめマージ候補リストに追加されない場合、ビデオコーダは、BVSPマージ候補をマージ候補リストに追加する。
− B0がBVSPモードでコーディングされない場合、ビデオコーダは、B0が利用可能な場合、B0をマージ候補リストに追加する。場合によっては、BVSP候補があらかじめマージ候補リストに追加されない場合、ビデオコーダは、BVSPマージ候補をマージ候補リストに追加する。
− ビデオコーダは、上記で説明したプロシージャによってIDMVCを導出する。IDMVCが利用可能であり、IDMVCがA1およびB1から導出された候補とは異なる場合、ビデオコーダは、IDMVCをマージ候補リストに挿入する。
− A0がBVSPモードでコーディングされない場合、ビデオコーダは、A0が利用可能な場合、A0をマージ候補リストに追加する。場合によっては、BVSP候補があらかじめマージ候補リストに追加されない場合、ビデオコーダは、BVSPマージ候補をマージ候補リストに追加する。
− B2がBVSPモードでコーディングされない場合、ビデオコーダは、B2が利用可能な場合、B2をマージ候補リストに追加する。場合によっては、BVSP候補があらかじめマージ候補リストに追加されない場合、ビデオコーダは、BVSPマージ候補をマージ候補リストに追加する。
5つの空間的隣接ブロックのいずれもBVSPモードを用いてコーディングされない場合、ビデオコーダは、BVSPマージ候補をマージ候補リストに挿入する。
− 左の追加候補を挿入する。
− 左候補がIPMVCである場合、ビデオコーダは、ステップ1において左候補をIPMCのみと比較する。場合によっては、左候補はDSMV候補であり、ビデオコーダは、左候補を任意の既存の候補と比較しない。
3.時間的マージ候補に関する導出プロセス
− ビデオコーダは、HEVC Workig Draft10において定義されたものと同じプロシージャを実行する。
4.右の追加候補を挿入する。
− 右候補がIPMVCである場合、ビデオコーダは、ステップ1において右候補をIPMCのみと比較する。場合によっては、右候補はDSMV候補であり、ビデオコーダは、右候補を任意の既存の候補と比較しない。
5.3D−HEVCにおける結合双予測マージ候補に関する導出プロセス
− 上記の2つのステップから導出された候補の総数が、候補の最大数未満である場合、ビデオコーダは、l0CandIdxおよびl1CandIdxの仕様を除いて、HEVC Workig Draft10において定義されたものと同じプロセスを実行する。combIdx、l0CandIdx、およびl1CandIdxの間の関係は、図9において定義されている。
1.ゼロ動きベクトルマージ候補に関する導出プロセス
− ビデオコーダは、ゼロ動きベクトルマージ候補を導出するために、HEVC Workig Draft10において定義されたものと同じプロシージャを実行する。
[0190]上記で説明したプロセスのステップ3および4において示すように、ビデオコーダは、左の追加候補(LDV)および/または右の追加候補(RDV)をマージ候補リストに挿入することができる。ビデオコーダは、次のようにLDVおよびRDVを生成し得る。LDV=DV、LDV[0]+=−4(RDV=DV、RDV[0]+=4)。
1)「3D−HEVCにおけるマージ候補リスト構成のための代替技法」という名称の本開示のセクションにおいて上記で説明した左/右IPMVCを生成するためにLDV/RDVを使用する。
2)左/右IPMVCが利用可能である場合、左/右候補は、左/右IPMVCに設定される。
3)場合によっては、「左/右DSMV候補の生成」という名称の本開示のセクションにおいてそれぞれ説明するように、左/右DSMV候補が生成される。
[0191]左/右DSMV候補の生成
[0192]いくつかの例では、左DSMV候補の生成を起動するためのプロセスは、左/右へのIPMVCが利用不可能でありMvCが最終的な左/右候補として返されるときにのみ、呼び出され得る。左/右DSMV候補は、次のように生成され得る。
1)DMVが利用可能でないことを考慮する。
a)リストC={A1、B1、B0、A0、およびB2}中の各空間的候補C[i]に関して
i)C[i]のrefIdxL0がビュー間参照に対応する場合、以下のことが適用される。代替的に、この条件は、「C[i]のrefIdxL0がビュー間参照に対応し、C[i]のrefIdxL1が時間的参照に対応する場合」に変更される。
(1)C[i]の動きベクトルがmvであると仮定する。
(2)DMVがmv[0]に設定され、利用可能と見なされる。
(3)ループを終了する(ブレーク)。
2)DMVが利用可能である場合、追加の左/右候補MvCを得るために以下のことが適用される。
a)(MvC[0][0]、MvC[0][1])が(mv[0][0]+N,mv[0][1])に設定され、(MvC[1][0]、MvC[1][1])が(mv[1][0],mv[1][1])に設定される。
b)MVCのrefIdL0が、DMVを含む第1の利用可能な空間的候補のrefIdxLXに等しく設定される。
c)MVCのrefIdxL1が、DMVを含む空間的隣接ブロックのrefIdxL1に等しく設定される。
d)BVSPが現在のピクチャに関して有効にされるとき、MvC[0][1]はさらに0に設定される。
3)場合によっては、MvCは次のように生成される。
a)(MvC[0][0]、MvC[0][1])=(DV[0][0]+N,0)、(MvC[1][0]、MvC[1][1])=(DV[1][0]+N,0)。
b)両端値を含む、0〜1のXに関して、refIdxLXは、RefPicListX中のピクチャの参照インデックスに等しく設定されるが、RefPicListXは、視差ベクトルとともにNBDVプロセスの間に識別される参照ビューに属する。
この例では、Nは、左候補に関しては−4であり、右候補に関しては4である。
[0193]いくつかの態様では、本開示の技法は、次のように要約され得る。第9の例では、参照ビューからのより多くのIPMVCが、マージ候補リストを生成するために現在のPU/CUのシフト視差ベクトルから導出され得る。視差ベクトルDVは、水平方向にDV[0]+M1だけ、および垂直方向にDV[0]+M2だけシフトされる。ビデオコーダは、IPMVCを生成するために参照ビュー中の対応するブロックを位置特定するのにシフト視差ベクトル(DV[0]+M1,DV[1]+M2)を使用し得る。IPMVCが利用可能である場合、ビデオコーダは、マージリストに関する追加候補としてIPMVCを使用し得る。
[0194]第10の例では、前の段落のようにシフト視差ベクトルからのIPMVCが利用不可能である場合、空間的隣接ブロックA1、B1、B0、A0、またはB2のRefPicList0に対応する第1の利用可能な視差動きベクトル(DMV)は、追加の動きベクトル候補MvCを生成するために、(利用可能な視差動きベクトルである)mv[0]の水平成分をシフトさせることによって追加候補を導出するのに使用される。この候補は、視差シフト動きベクトル(DSMV)として示される。DMVが利用可能である場合、MvC[0]=mv[0]、MvC[1]=mv[1]、およびMvC[0][0]+=N、参照インデックスが、第1の利用可能な候補(DMVを含む)から継承される。したがって、ビデオコーダは、DSMV候補の第1の動きベクトルを、特定の空間的隣接ブロックの第1の動きベクトルに設定することができる。この特定の空間的隣接ブロックは、現在のブロックの空間的隣接ブロック間で第1の利用可能な視差動きベクトルを有し得る。加えて、ビデオコーダは、DSMV候補の第2の動きベクトルを特定の空間的隣接ブロックの第2の動きベクトルに設定することができ、この特定の空間的隣接ブロックの第2の動きベクトルは第2の参照ピクチャリストに対応する。さらに、ビデオコーダは、DSMVの第1の動きベクトルに対応する参照インデックスを、特定の空間的隣接ブロックの第1の動きベクトルに対応する参照インデックスに設定することができる。ビデオコーダは、DSMVの第2の動きベクトルに対応する参照インデックスを、特定の空間的隣接ブロックの第2の動きベクトルに対応する参照インデックスに設定することができる。一代替形態では、BVSPがピクチャ全体または現在のシーケンスに関して有効にされるとき、動きベクトルMvC[0][1]および/またはMvC[1][1]の垂直成分が0に設定され得る。DMVが利用不可能である場合、固定されたNに関して、追加候補は生成されない。
[0195]第11の例では、ビデオコーダは、第10の例で説明したように、DSMVを最初に生成する。しかしながら、この例では、DSMVが利用可能でない場合、ビデオコーダは、次のように、動きベクトルを視差ベクトルからシフトしたベクトルに設定することによってDSMV(MvCとして示される)を導出し得る。MvC[0]=DVおよびMvC[0][0]+=N、MvC[0][1]=0およびMvC[1]=DVおよびMvC[1][0]+=N、MvC[1][1]=0およびMvC[X]に対応する参照インデックスは、NBDVプロセスの間に視差ベクトルとともに識別される参照ビューに属するRefPicListX中のピクチャの参照インデックスに設定される。代替的に、RefPicListXに関連する参照インデックスは−1に設定される。
[0196]第12の例では、IPMVCを生成するのに使用されるシフト値M1およびM2は、同じであるか、または同じでない場合がある。この例では、M1およびM2は、4、8、16、32、64、−4、−8、−16、−32、−64のうちの任意の値をとり得る。一代替形態では、M1はM2に等しい場合があり、たとえば、これらはどちらも16に等しいか、またはどちらも−16に等しい場合がある。一代替形態では、M1およびM2は、1つのビュー内の最小PUの幅および高さ、または任意の最小CUの幅および高さ、または現在のPU/CUの幅および高さに等しい。代替的に、M1とM2の両方は、正である場合がある。代替的に、M1とM2の両方は、負である場合がある。代替的に、M1が正であり、M2が負である場合がある。代替的に、M1が負であり、M2が正である場合がある。代替的に、M1が(((幅/2)*4)+4)に等しく、M2が(((高さ/2)*4)+4)に等しい場合があるが、現在のPUのサイズは幅×高さである。代替的に、M1およびM2はそれぞれ、1つのビュー内の最小PUの幅および高さ、または任意の最小CUの幅および高さ、または現在のPU/CUの幅の2倍(すなわち、2*幅)および高さの2倍(すなわち、2*高さ)に等しい。
[0197]第13の例では、DSMV候補を生成するのに使用されるシフト値Nは、4、8、16、32、64、−4、−8、−16、−32、−64、または1つのビュー内の最小PUの幅/高さのうちのいずれかの値に等しく設定され得る。一代替形態では、シフト値NおよびMi(iは1または2に等しい)は、同じである場合がある。一代替形態では、シフト値NおよびMi(iは1または2に等しい)は、同じでない場合がある。
[0198]第14の例では、2つの候補、(N,M1,M2)の正の組合せ(すべてが正)または(N,M1,M2)の負の組合せを有するDSMVまたはIPMVCのいずれかから各々が生成される。2つの候補までは、生成され、マージ候補リストに追加され得る。別の代替形態では、正または負の組合せのいずれかを使用して1つの候補のみが生成される。
[0199]第15の例では、ビデオコーダは、1つの追加候補のみを生成するとき、より詳細には以下の方法のうちの1つにおいて、すべての空間的候補を挿入した後に追加候補をマージ候補リストに挿入する。一代替形態では、ビデオコーダは、TMVPマージ候補の直前に候補を追加する。一代替形態では、ビデオコーダは、TMVPマージ候補の直後に候補を追加する。一代替形態では、ビデオコーダは、空間的マージ候補A0の直後および空間的マージ候補B2の直前に候補を追加する。言い換えれば、ビデオコーダは、現在のブロックの左上にある空間的隣接ブロックに関するマージ候補の直後に追加のIPMVCをマージ候補リストに追加し得る。一代替形態では、ビデオコーダは、BVSP候補の直後および空間的マージ候補A0の直前に候補を追加する。さらに、候補は、プルーニングを用いて追加され得る。候補がプルーニングを用いて追加され得る一例では、第9の例と同様に生成された追加のIPMC候補のみが、いかなる候補を用いてもプルーニングされない第10および第11の例と同様に生成された元のIPMC候補およびDSMV候補を用いてプルーニングされる。
[0200]第16の例では、ビデオコーダは、より詳細には以下の方法のうちの1つにおいて、すべての空間的候補を挿入した後に追加されたマージ候補リストに追加候補を挿入する。一代替形態では、ビデオコーダは、TMVPマージ候補の直後に2つの候補をどちらも追加する。一代替形態では、ビデオコーダは、TMVPマージ候補の直前に2つの候補をどちらも追加する。一代替形態では、ビデオコーダは、TMVPの直前に一方の候補を追加し、TMVPマージ候補の直後に他方の候補を追加する。一代替形態では、(N,M1,M2)の正の組合せによって導出される候補は、マージ候補リストに追加される(これら2つの追加候補)のうちの第1の候補である。一代替形態では、(N,M1,M2)の負の組合せによって導出される候補は、マージ候補リストに追加される(これら2つの追加候補)のうちの第1の候補である。候補は、米国仮出願第61/734,929号および米国仮出願第61/747,350号に述べられるにプルーニングプロセスと同様のプルーニングを用いて追加され得る。
[0201]このセクションでは、追加のマージ候補を生成するための本開示の提案技法のうちの1つの実装形態について説明する。一例では、2つの候補までは、(N,M1,M2)=(4,16,16)および(N,M1,M2)=(−4,−16,−16)を用いてそれぞれ順に生成される。ビデオコーダは、TMVPの直前に第1の追加候補(左候補)を追加し、TMVP候補の直後に第2の追加候補(右候補)を追加する。TMVP候補が利用可能でない場合、ビデオコーダは、すべての空間的候補を挿入した後に2つの候補を追加する。
[0202]ここで、追加候補を有するマージ候補リスト構成について説明する。ビデオコーダは、以下にボールドテキストで強調されるように、マージ候補リストに2つの追加の左/右候補を挿入する。
1.IPMVC挿入
IPMVCが、上記で説明したプロシージャによって導出される。IPMVCが利用可能である場合、IPMVCはマージリストに挿入される。
2.3D−HEVCにおける空間的マージ候補およびIDMVCの挿入に関する導出プロセス
以下の順序、A1、B1、B0、A0、またはB2で空間的隣接PUの動き情報をチェックする。制約付きプルーニングは、以下のプロシージャによって実行される。
− A1およびIPMVCが同じ動きベクトルおよび同じ参照インデックスを有する場合、A1は、候補リストに挿入されない。場合によっては、ビデオコーダは、A1をリストに挿入する。
− B1およびA1/IPMVCが同じ動きベクトルおよび同じ参照インデックスを有する場合、ビデオコーダは、B1を候補リストに挿入しない。場合によっては、ビデオコーダは、B1をリストに挿入する。
− B0が利用可能である場合、ビデオコーダは、B0を候補リストに追加する。
− IDMVCが、上記で説明したプロシージャによって導出される。IDMVCが利用可能であり、IDMVCがA1およびB1から導出された候補とは異なる場合、ビデオコーダは、IDMVCを候補リストに挿入する。
− BVSPがピクチャ全体または現在のスライスに関して有効にされる場合、ビデオコーダは、BVSPマージ候補をマージ候補リストに挿入する。
− A0が利用可能である場合、ビデオコーダは、A0を候補リストに追加する。
− B2が利用可能である場合、ビデオコーダは、B2を候補リストに追加する。
− 上記で説明したように導出された左の追加候補を挿入する。
− 左候補がIPMVCである場合、ビデオコーダは、ステップ1において左候補をIPMCと比較する。− 左候補がIPMCに等しくない場合、または左候補がDSMVである場合(左IPMCが利用不可能であるとき)、ビデオコーダは、左候補を挿入する。
3.時間的マージ候補に関する導出プロセス
− しかしながら、コロケートPUの動き情報が利用されるHEVCにおける時間的マージ候補導出プロセスと同様に、時間的マージ候補のターゲット参照ピクチャインデックスが、上記で説明したように、0となるように固定するのではなく変更され得る。
4.上記で説明したように導出された右の追加候補を挿入する。
右候補がIPMVCである場合、右候補は、ステップ1においてIPMCと比較される。− 右候補がIPMCに等しくない場合、または右候補がDSMVである場合(右IPMCが利用不可能であるとき)、ビデオコーダは、右候補を挿入する。
5.3D−HEVCにおける結合双予測マージ候補に関する導出プロセス
− 上記の2つのステップから導出された候補の総数が、候補の最大数未満である場合、ビデオコーダは、l0CandIdxおよびl1CandIdxの仕様を除いて、HEVCにおいて定義されたものと同じプロセスを実行する。combIdx、l0CandIdx、およびl1CandIdxの間の関係は、図9において定義されている。
6.ゼロ動きベクトルマージ候補に関する導出プロセス
− ビデオコーダは、HEVC Working Draft10において定義されたものと同じプロシージャを実行する。
[0203]ビデオコーダは、様々な方法で左/右の追加候補を生成し得る。一例では、ビデオコーダは、次のようにLDV/RDVを生成する。LDV=DV、LDV[0]+=16、LDV[1]+=16(RDV=DV、RDV[0]+=−16、RDV[1]+=−16)。この例では、ビデオコーダは、各々が参照により本明細書に組み込まれる、米国仮特許出願第61/734,929号および第61/747,350号と、米国特許出願第14/098,151号とに記載されるように左/右IPMVCを生成するためにLDV/RDVを使用し得る。左/右IPMVCが利用可能である場合、ビデオコーダは、左/右候補を左/右IPMVCに設定する。場合によっては、ビデオコーダは、上記で説明したように左/右DSMV候補を生成する。
[0204]ビデオコーダは、様々な方法で左/右DSMV候補を生成し得る。一例では、ビデオコーダは、左/右IPMVCが利用不可能でありMvCが最終的な左/右候補として返されるとき、左/右DSMV候補を生成するためのプロセスのみを呼び出す。この例では、ビデオコーダは、次のように左/右DSMV候補を生成する。
[0205]第1に、DMVが利用可能でないことを考慮する。リストC={A1、B1、B0、A0、およびB2}中の各空間的候補C[i]に関して
i)C[i]のrefIdxL0がビュー間参照に対応する場合、以下のことが適用される。一代替形態では、この条件は、「C[i]のrefIdxL0がビュー間参照に対応し、C[i]のrefIdxL1が時間的参照に対応する場合」に変更される。
(1)C[i]の動きベクトルがmvであると仮定する。
(2)DMVがmv[0]に設定され、利用可能と見なされる。
(3)ループを終了する(ブレーク)。
2)DMVが利用可能である場合、追加の左/右候補MvCを得るために以下のことが適用される。
a)(MvC[0][0]、MvC[0][1])が(mv[0][0]+N,mv[0][1])に設定され、(MvC[1][0]、MvC[1][1])が(mv[1][0],mv[1][1])に設定される。
b)MvCのrefIdL0が、DMVを含む第1の利用可能な空間的候補のrefIdxLXに等しく設定される。
c)MvCのrefIdxL1が、DMVを含む空間的隣接ブロックのrefIdxL1に等しく設定される。
d)BVSPが現在のピクチャに関して有効にされるとき、MvC[0][1]はさらに0に設定される。
3)場合によっては、ビデオコーダは、次のようにMvCを生成する。
a)(MvC[0][0]、MvC[0][1])=(DV[0][0]+N,0)、(MvC[1][0]、MvC[1][1])=(DV[1][0]+N,0)。
b)両端値を含む、0〜1のXに関して、refIdxLXは、RefPicListX中のピクチャの参照インデックスに等しく設定されるが、RefPicListXは、視差ベクトルとともにNBDVプロセスの間に識別される参照ビューに属する。
ここで、Nは、左候補に関しては4であり、右候補に関しては−4である。
[0206]別の例では、ビデオコーダは、(N,M1,M2)=(4,(((幅/2)*4)+4),(((高さ/2)*4)+4))を用いて1つの候補のみを生成するが、現在のPUサイズは、幅×高さである。TMVP候補の直前に1つの追加候補のみが追加される。TMVPが利用可能でない場合、ビデオコーダは、すべての空間的候補を挿入した後に追加候補を追加する。
[0207]以下のものは、追加候補を用いたマージ候補リスト構成に関する本開示の別の例示的な技法である。この例では、以下にボールドで強調されるように、1つの追加候補のみがマージ候補リストに挿入される。
1.IPMVC挿入
IPMVCが、上記で説明したプロシージャによって導出される。IPMVCが利用可能である場合、IPMVCはマージリストに挿入される。
2.3D−HEVCにおける空間的マージ候補およびIDMVCの挿入に関する導出プロセス
以下の順序、A1、B1、B0、A0、またはB2で空間的隣接PUの動き情報をチェックする。ビデオコーダは、以下の手順によって、制約付きプルーニングを実行する。
− A1およびIPMVCが同じ動きベクトルおよび同じ参照インデックスを有する場合、ビデオコーダは、A1を候補リストに挿入しない。場合によっては、ビデオコーダは、A1を候補リストに挿入する。
− B1およびA1/IPMVCが同じ動きベクトルおよび同じ参照インデックスを有する場合、ビデオコーダは、B1を候補リストに挿入しない。場合によっては、ビデオコーダは、B1を候補リストに挿入する。
− B0が利用可能である場合、ビデオコーダは、B0を候補リストに追加する。
− IDMVCが、上記で説明したプロシージャによって導出される。IDMVCが利用可能であり、IDMVCがA1およびB1から導出された候補とは異なる場合、ビデオコーダは、IDMVCを候補リストに挿入する。
− BVSPがピクチャ全体または現在のスライスに関して有効にされる場合、ビデオコーダは、BVSPマージ候補をマージ候補リストに挿入する。
− A0が利用可能である場合、ビデオコーダは、A0を候補リストに追加する。
− B2が利用可能である場合、ビデオコーダは、B2を候補リストに追加する。
− 以下のセクションで説明するように導出された追加候補を挿入する。
− 追加候補がIPMVCである場合、ビデオコーダは、ステップ1において追加候補をIPMCと比較する。− 追加候補がIPMCに等しくない場合、または追加候補がDSMVである場合(追加IPMVCが利用不可能であるとき)、ビデオコーダは、追加候補を候補リストに挿入する。
3.時間的マージ候補に関する導出プロセス
− 時間的マージ候補に関する導出プロセスは、コロケートPUの動き情報が利用される、HEVCにおける時間的マージ候補導出プロセスと同様である。しかしながら、時間的マージ候補のターゲット参照ピクチャインデックスは、「1つの追加候補の生成」という名称の本開示のセクションにおいて説明するように、0となるように固定するのではなく変更され得る。
4.3D−HEVCにおける結合双予測マージ候補に関する導出プロセス
− 上記の2つのステップから導出された候補の総数が、候補の最大数未満である場合、HEVCにおいて定義されたものと同じプロセスは、l0CandIdxおよびl1CandIdxの仕様を除いて実行される。combIdx、l0CandIdx、およびl1CandIdxの間の関係は、図9において定義されている。
5.ゼロ動きベクトルマージ候補に関する導出プロセス
− ゼロ動きベクトル候補を導出するために、HEVCにおいて定義されたものと同じプロシージャが実行され得る。
1つの追加候補の生成
1)RDVは次のように生成される。RDV=DV、RDV[0]+=(((幅/2)*4)+4)、RDV[1]+=(((高さ/2)*4)+4)。
2)3D−HEVCにおける視差ベクトルによって生成されるIPMVCと同様のIPMVCを生成するためにRDVを使用するが、現在のブロックの中心位置は、参照ビューの参照ブロック中のピクセルを識別するためにRDVを用いてシフトされ、ピクセルをカバーするブロック(4×4)内の動き情報は、IPMVC候補を生成するのに使用される。
3)ステップ(2)においてIPMVCが利用可能である場合、追加候補はIPMVCに設定される。
4)場合によっては、ステップ(2)においてIPMVCが利用不可能であるとき、「1つのDSMV候補の生成」という名称の本開示のセクションにおいて説明するように、DSMV候補が生成される。
1つのDSMV候補の生成
これは、本開示の他の例に関して上記で説明した同様の対応するプロシージャとサブセクションである。1つの差異は、生成されるDSMVが常に右DSMVであることである。このプロセスは、前のセクションの追加のIPMVCが利用不可能であり、MvCが最終候補として返されるときにのみ呼び出される。DSMV候補は、4に等しいNを設定することによって次のように生成される。
1)DMVが利用可能でないことを考慮する。
a)リストC={A1、B1、B0、A0、およびB2}中の各空間的候補C[i]に関して
i)C[i]のrefIdxL0がビュー間参照に対応する場合、以下のことが適用される。代替的に、この条件は、「C[i]のrefIdxL0がビュー間参照に対応し、C[i]のrefIdxL1が時間的参照に対応する場合」に変更される。
(1)C[i]の動きベクトルがmvであると仮定する。
(2)DMVがmv[0]に設定され、利用可能と見なされる。
(3)ループを終了する(ブレーク)。
2)DMVが利用可能である場合、追加候補MvCを得るために以下のことが適用される。
a)(MvC[0][0]、MvC[0][1])が(mv[0][0]+N,mv[0][1])に設定され、(MvC[1][0]、MvC[1][1])が(mv[1][0],mv[1][1])に設定される。
b)MvCのrefIdL0が、DMVを含む第1の利用可能な空間的候補のrefIdxL0に等しく設定される。
c)MvCのrefIdxL1が、DMVを含む空間的隣接ブロックのrefIdxL1に等しく設定される。
d)BVSPが現在のピクチャに関して有効にされるとき、MvC[0][1]はさらに0に設定される。
3)場合によっては、MvCは次のように生成される。
a)(MvC[0][0]、MvC[0][1])=(DV[0][0]+N,0)、(MvC[1][0]、MvC[1][1])=(DV[1][0]+N,0)。
b)両端値を含む、0〜1のXに関して、refIdxLXは、RefPicListX中のピクチャの参照インデックスに等しく設定されるが、RefPicListXは、視差ベクトルとともにNBDVプロセスの間に識別される参照ビューに属する。
[0208]したがって、上記の説明では、ビデオコーダは、現在のブロックの視差ベクトル(すなわち、DV)を第1の値によって水平に、第2の値によって垂直にシフトさせることによってシフト視差ベクトル(すなわち、RDV)を決定し得る。いくつかの例では、第1の値は(((W/2)*4)+4)に等しく、第2の値は(((H/2)*4)+4)に等しいが、ここでWは現在のブロックの幅であり、Hは現在のブロックの高さである。さらに、ビデオコーダは、参照ビュー内の対応するブロックを位置特定するためにシフト視差ベクトル(すなわち、RDV)を使用し得る。追加のIPMVCは、ビュー間参照ピクチャ中の対応するブロックの動き情報を示す。ビデオコーダは、追加のIPMVCが元のIPMCと異なるとき、追加のIPMVCをマージ候補リストに挿入し得る。しかしながら、追加のIPMVCが利用可能でないとき、ビデオコーダは、DSMV候補を生成し得る。本開示の他の場所で示すように、ビデオコーダは、ビデオデータの現在のブロックの空間的隣接ブロック間で、第1の参照ピクチャリストに対応する第1の利用可能な視差動きベクトルを決定し得る。ビデオコーダは、次いで、DSMV候補を導出するために第1の利用可能な視差動きベクトルの水平成分をシフトさせ得る。空間的隣接ブロックのいずれも視差動きベクトルを含まないとき、DSMV候補は、現在のブロックの視差ベクトルの水平成分プラスオフセットに等しいDSMV候補の水平成分を設定することによって生成される場合があり、DSMV候補の垂直成分はゼロに設定される。
[0209]図12は、本開示の技法を実装し得る、ビデオエンコーダ20の例を示すブロック図である。ビデオエンコーダ20は、ビデオスライス、たとえばテクスチャ画像と深度マップの両方のスライス内のビデオブロックのイントラコーディングおよびインターコーディング(ビュー間コーディングを含む)を実行し得る。テクスチャ情報は、概して、ルミナンス(輝度または強度)情報とクロミナンス(色、たとえば赤い色相および青い色相)情報とを含む。概して、ビデオエンコーダ20は、ルミナンススライスに対するコーディングモードを決定し、クロミナンス情報を符号化するために(たとえば、区分情報、イントラ予測モード選択、動きベクトルなどを再使用することによって)ルミナンス情報をコーディングすることからの予測情報を再使用し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレーム内またはピクチャ内のビデオの時間的な冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード(登録商標))は、いくつかの空間ベースのコーディングモードのうちの任意のものを参照し得る。一方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースのコーディングモードのうちの任意のものを参照し得る。
[0210]図12の例では、ビデオエンコーダ20は、モード選択ユニット240と、参照フレームメモリ264と、加算器250と、変換処理ユニット252と、量子化ユニット254と、エントロピー符号化ユニット256とを含む。今度は、モード選択ユニット240は、動き補償ユニット244と、動き推定ユニット242と、イントラ予測ユニット246と、区分ユニット248とを含む。ビデオブロックの再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット258と、逆変換ユニット260と、加算器262とを含む。ブロック境界をフィルタして、再構成されたビデオからブロッキネスアーティファクトを除去するために、デブロッキングフィルタ(図12に示さず)も含まれ得る。必要な場合、デブロッキングフィルタは、通常、加算器262の出力をフィルタリングする。さらなるフィルタ(インループまたはポストループ)も、デブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡約のために図示されないが、必要な場合、加算器250の出力を(インループフィルタとして)フィルタリングし得る。
[0211]符号化プロセス中に、ビデオエンコーダ20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。したがって、図12に示すように、ビデオエンコーダ20は、符号化されるべきビデオフレーム(たとえば、テクスチャ画像または深度マップ)内の現在のビデオブロック(すなわち、ルミナンスブロック、クロミナンスブロック、または深度ブロックなどのビデオデータのブロック)を受信する。
[0212]動き推定ユニット242および動き補償ユニット244は、時間的予測またはビュー間予測をもたらすために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して受信されたビデオブロックのインター予測コーディングを実行し得る。代替的に、イントラ予測ユニット246は、空間的予測をもたらすために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接ブロックに対して受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオエンコーダ20は、たとえば、ビデオデータの各ブロックに関して適切なコーディングモードを選択するために、複数のコーディングパスを実行し得る。
[0213]その上、区分ユニット248は、前のコーディングパスにおける前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、区分ユニット248は、最初は、レートひずみ分析(たとえば、レートひずみ最適化)に基づいて、フレームまたはスライスをLCUに区分し、LCUの各々をサブCUに区分し得る。モード選択ユニット240は、LCUのサブCUへの区分を示す4分木データ構造をさらに生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。
[0214]モード選択ユニット240は、たとえば、誤差結果に基づいてコーディングモード、すなわち、イントラまたはインターのうちの1つを選択し、残差ブロックデータを生成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器250に与え、また参照フレームとして使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器262に与え得る。モード選択ユニット240は、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報などの、シンタックス要素をエントロピー符号化ユニット256に与えることもできる。
[0215]動き推定ユニット242および動き補償ユニット244は、高度に統合される場合があるが、概念的な目的のために別々に示している。動き推定ユニット242によって実行される動き推定は、動きベクトルを生成する処理であり、ビデオブロックに対する動きを推定する。いくつかの例では、動きベクトルは、現在のフレーム(または他のコード化ユニット)内でコーディングされている現在のブロックに対する参照フレーム(または他のコード化ユニット)内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位を示し得る。
[0216]予測ブロックは、ピクセル差分の観点で、コーディングされるべきブロックと密にマッチングすることが見出されたブロックであり、ピクセル差分は、絶対差分和(SAD)、2乗差分和(SSD)、または他の差分メトリックによって決定され得る。いくつかの例では、ビデオエンコーダ20は、参照フレームメモリ264に記憶された参照ピクチャのサブ整数ピクセル位置の値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数のピクセル位置の値を補間し得る。したがって、動き推定ユニット242は、完全なピクセル位置および分数のピクセル位置に対して動き探索を実行し、分数のピクセル精度で動きベクトルを出力し得る。
[0217]動き推定ユニット242は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUに関する動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(「List0」または「RefPicList0」)または第2の参照ピクチャリスト(「List1」または「RefPicList1」)から選択される場合があり、それらの参照ピクチャリストの各々は、参照フレームメモリ264に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット242は、計算された動きベクトルをエントロピー符号化ユニット256と動き補償ユニット244とに送り得る。
[0218]動き補償ユニット244によって実行される動き補償は、動き推定ユニット242によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することに関与し得る。同様に、動き推定ユニット242および動き補償ユニット244は、いくつかの例では、機能的に統合され得る。現在のビデオブロックのPUに関する動きベクトルを受信すると、動き補償ユニット244は、動きベクトルが参照ピクチャリストのうちの1つにおいて指す予測ブロックを位置特定し得る。いくつかの例では、加算器250は、以下で説明するように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。一般に、動き推定ユニット242は、ルーマ成分に対する動き推定を実行し、動き補償ユニット244は、クロマ成分とルーマ成分の両方のために、ルーマ成分に基づいて計算された動きベクトルを使用する。このように、動き補償ユニット244は、動き推定ユニット242がクロマ成分に関する動き探索を実行する必要がないように、クロマ成分をコーディングするためにルーマ成分に関して決定された動き情報を再使用し得る。モード選択ユニット240はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0219]本開示の1つまたは複数の技法によれば、動き推定ユニット242は、マージ候補リストを生成し得る。動き推定ユニット242は、マージ候補リストを生成することの一部として、ビデオデータの現在のブロックの空間的隣接ブロック間で第1の利用可能な視差動きベクトルを決定し得る。第1の利用可能な視差動きベクトルは、第1の参照ピクチャリスト(たとえば、RefPicList0)に対応し得る。さらに、動き推定ユニット242は、DSMV候補を導出するために第1の利用可能な視差動きベクトルの水平成分をシフトさせ得る。空間的隣接ブロックのいずれも視差動きベクトルを含まないとき、動き推定ユニット242は、現在のブロックの視差ベクトルの水平成分プラスオフセットに等しい場合があるDSMV候補の水平成分を設定することによって、またDSMV候補の垂直成分をゼロに設定することによってDSMV候補を生成し得る。加えて、動き推定ユニット242は、視差ベクトルを水平と垂直の両方にシフトさせることによって指されるビュー間参照ピクチャの動き情報を使用して追加のIPMVCを生成し得る。動き推定ユニット242は、DSMV候補または追加のIPMVCをマージ候補リストに追加し得る。いくつかの例では、動き推定ユニット242は、追加のIPMVCが利用可能でない場合、追加のIPMVC候補の代わりにDSMV候補をマージ候補リストに追加する。動き推定ユニット242は、マージ候補リストから候補を選択し、ビットストリーム内に、選択されたマージ候補のインデックスを表すデータを含み得る。動き補償ユニット244は、選択されたマージ候補の動き情報に基づいて、現在のブロックに関する予測ブロックを決定し得る。
[0220]イントラ予測ユニット246は、上記で説明したように、動き推定ユニット242および動き補償ユニット244によって実行されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット246は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット246は、たとえば、別個の符号化パス中に様々なイントラ予測モードを使用して現在のブロックを符号化し、イントラ予測ユニット246(または、いくつかの例では、モード選択ユニット240)は、使用するのに適切なイントラ予測モードを、テストされたモードから選択し得る。
[0221]たとえば、イントラ予測ユニット246は、様々なテストされたイントラ予測モードに関して、レートひずみ分析を使用してレートひずみの値を計算し、テストされたモード間で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、一般に、符号化されたブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のある量のひずみ(すなわち、エラー)と、符号化ブロックを生成するために使用されるビットレート(すなわち、いくつかのビット)とを決定する。イントラ予測ユニット246は、どのイントラ予測モードがブロックに関する最良のレートひずみの値を示すかを決定するために、様々な符号化ブロックに関するひずみおよびレートから比を計算し得る。
[0222]イントラ予測ユニット246は、ブロックに関するイントラ予測モードを選択した後、ブロックに関して選択されたイントラ予測モードを示す情報を、エントロピー符号化ユニット256に提供し得る。エントロピー符号化ユニット256は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、送信されるビットストリーム中に構成データを含む場合があり、構成データは、コンテキストの各々に関して使用する、複数のイントラ予測モードのインデックステーブルおよび複数の修正されたイントラ予測モードのインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックに関する符号化コンテキストの定義と、最も起こりそうなイントラ予測モードの表示と、イントラ予測モードのインデックステーブルと、修正されたイントラ予測モードのインデックステーブルとを含み得る。
[0223]いくつかの例では、ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット240からの予測データを減算することによって残差ビデオブロックを形成する。加算器250は、この減算演算を実行する1つの構成要素または複数の構成要素を表す。変換処理ユニット252は、離散コサイン変換(DCT)または概念的には類似の変換などの変換を残差ブロックに適用し、残差変換係数の値を備えるビデオブロックを生成し得る。変換処理ユニット252は、概念的にはDCTに類似の他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換処理ユニット252は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。
[0224]変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。変換処理ユニット252は、得られた変換係数を量子化ユニット254に送り得る。量子化ユニット254は、ビットレートをさらに低減させるために変換係数を量子化する。量子化プロセスは、係数の一部またはすべてに関連するビット深度を低減させ得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット254は、次いで、量子化変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット256が、走査を実行し得る。
[0225]量子化の後に、エントロピー符号化ユニット256は、量子化変換係数をエントロピーコーディングし得る。たとえば、エントロピー符号化ユニット256は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディング、または別のエントロピーコーディング技法を実行し得る。コンテキストベースエントロピーコーディングの場合、コンテキストは隣接ブロックに基づく可能性がある。エントロピー符号化ユニット256によるエントロピーコーディングの後で、符号化ビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信され、後に伝送するかまたは取り出すために保管され得る。
[0226]逆量子化ユニット258および逆変換ユニット260は、ピクセル領域中で残差ブロックを再構成するために、たとえば参照ブロックとして後で使用するために、それぞれ逆量子化および逆変換を適用する。動き補償ユニット244は、残差ブロックを参照フレームメモリ264のフレームのうちの1つの予測ブロックに加算することによって、参照ブロックを計算し得る。動き補償ユニット244は、動き推定において使用するためにサブ整数ピクセル値を計算するのに、1つまたは複数の補間フィルタを再構成された残差ブロックに適用することもできる。加算器262は、参照フレームメモリ264に記憶するために再構成されたビデオブロックを生成するのに、再構成された残差ブロックを、動き補償ユニット244によって生成された動き補償予測ブロックに加算し得る。再構成されたビデオブロックは、動き推定ユニット242および動き補償ユニット244によって、後続のビデオフレーム中のブロックをインターコーティングするための参照ブロックとして使用され得る。
[0227]ビデオエンコーダ20は、対応するクロミナンス成分がなくとも、ルミナンス成分をコーディングするためのコーディング技法に実質的に似るように深度マップを符号化し得る。たとえば、イントラ予測ユニット246は、深度マップのブロックをイントラ予測し得るが、動き推定ユニット242および動き補償ユニット244は、深度マップのブロックをインター予測し得る。
[0228]図13は、本開示の技法を実装し得る、ビデオデコーダ30の例を示すブロック図である。図13の例では、ビデオデコーダ30は、エントロピー復号ユニット270と、動き補償ユニット272と、イントラ予測ユニット274と、逆量子化ユニット276と、逆変換ユニット278と、参照フレームメモリ282と、加算器280とを含む。いくつかの例では、ビデオデコーダ30は、ビデオエンコーダ20(図12)に関して記載される符号化パスに概して相反する復号パスを実行する。動き補償ユニット272は、エントロピー復号ユニット270から受信された動きベクトルに基づいて予測データを生成することができる。言い換えれば、動き補償ユニット272は、エントロピー復号ユニット270から受信されたシンタックス要素から決定された動きベクトルに基づいて予測データを生成することができる。異なる例では、エントロピー復号ユニット270は、そのようなシンタックス要素をエントロピー復号するか、またはしない場合がある。イントラ予測ユニット274は、エントロピー復号ユニット270から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。
[0229]復号プロセス中に、ビデオデコーダ30は、符号化ビデオスライスのビデオブロックおよび関連するシンタックス要素を表す符号化ビデオビットストリームを、ビデオエンコーダ20から受信する。エントロピー復号ユニット270は、量子化係数、動きベクトルまたはイントラ予測モードインジケータ、および他のシンタックス要素を生成するためにビットストリームをエントロピー復号する。言い換えれば、エントロピー復号ユニット270は、ビットストリーム中の少なくとも一部のシンタックス要素をエントロピー復号することができる。ビデオデコーダ30の様々な構成要素は、量子化係数、動きベクトル、イントラ予測モードインジケータなどを決定するためにそのようなシンタックス要素を使用し得る。いくつかの例では、エントロピー復号ユニット270は、動きベクトルおよび様々なシンタックス要素を動き補償ユニット272に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルにおいてシンタックス要素を受信し得る。
[0230]ビデオスライスが、イントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット274は、現在のフレームまたはピクチャの以前に復号されたブロックから、シグナリングされたイントラ予測モードおよびデータに基づいて、現在のビデオスライスのビデオブロックに関する予測データを生成し得る。ビデオフレームがインターコード化(たとえば、B、P、またはGPB)スライスとしてコーディングされるとき、動き補償ユニット272は、エントロピー復号ユニット270から受信された動きベクトルおよびシンタックス要素に基づいて、現在のビデオスライスのビデオブロックに関する予測ブロックを生成し得る。予測ブロックは、参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照フレームメモリ282に記憶された参照ピクチャに基づいて参照フレームリスト、すなわちList0およびList1を構成し得る。
[0231]動き補償ユニット272は、動きベクトルおよび他のシンタックス要素を解析することによって現在のビデオスライスのビデオブロックに関する予測情報を決定し、復号されている現在のビデオブロックに関する予測ブロックを生成するために予測情報を使用し得る。たとえば、動き補償ユニット272は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスの参照ピクチャリストのうちの1つまたは複数に関する構成情報と、スライスの各インター符号化ビデオブロックに関する動きベクトルと、スライスの各インターコード化ビデオブロックに関するインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用し得る。
[0232]動き補償ユニット272は、補間フィルタに基づいて補間を実行することもできる。動き補償ユニット272は、参照ブロックのサブ整数ピクセルに関して補間された値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用されたものと同じ補間フィルタを使用し得る。この場合、動き補償ユニット272は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、予測ブロックを生成するために補間フィルタを使用し得る。
[0233]本開示の1つまたは複数の技法によれば、動き補償ユニット272は、マージ候補リストを生成し得る。動き補償ユニット272は、マージ候補リストを生成することの一部として、ビデオデータの現在のブロックの空間的隣接ブロック間で第1の利用可能な視差動きベクトルを決定し得る。第1の利用可能な視差動きベクトルは、第1の参照ピクチャリスト(たとえば、RefPicList0)に対応し得る。さらに、動き補償ユニット272は、DSMV候補を導出するために第1の利用可能な視差動きベクトルの水平成分をシフトさせ得る。動き補償ユニット272は、DSMV候補または追加のIPMVCをマージ候補リストに追加し得る。いくつかの例では、動き補償ユニット272は、追加のIPMVC候補が利用可能でない場合、追加のIPMVC候補の代わりにDSMV候補をマージ候補リストに追加する。さらに、動き補償ユニット272は、ビットストリームから得られたデータ(たとえば、マージ候補インデックス)に基づいて、マージ候補リスト中の選択候補を決定し得る。動き補償ユニット272は、選択されたマージ候補の動き情報に基づいて、現在のブロックに関する予測ブロックを決定し得る。
[0234]逆量子化ユニット276は、ビットストリーム中で与えられ、エントロピー復号ユニット270によって復号された量子化変換係数を逆量子化(inverse quantize)、すなわち逆量子化(de−quantize)し得る。言い換えれば、逆量子化ユニット276は、エントロピー復号ユニット270によってエントロピー復号され得る、ビットストリームに含まれるシンタックス要素によって示される量子化変換係数を逆量子化し得る。逆量子化プロセスは、量子化の程度を決定し、同様に適用されるべき逆量子化の程度を決定するために、ビデオスライス中の各ビデオブロックに関してビデオデコーダ30によって計算される量子化パラメータQPYの使用を含み得る。逆変換ユニット278は、ピクセル領域内の残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的には類似の逆変換プロセスを、変換係数に適用し得る。
[0235]動き補償ユニット272が、動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックに関する予測ブロックを生成した後、ビデオデコーダ30は、(たとえば、逆変換ユニット278からの残差ブロックを動き補償ユニット272によって生成された対応する予測ブロックと加算することによって)復号されたビデオブロックを形成し得る。加算器280は、この加算演算を実行する1つの構成要素または複数の構成要素を表し得る。必要な場合、デブロッキングフィルタも、ブロッキネスアーティファクトを除去するのに、復号ブロックをフィルタリングするために適用され得る。他のループフィルタ(コーディングループの中、またはコーディングループの後のいずれかにおける)も、ピクセルの遷移を平滑化し、または場合によってはビデオ品質を改善するために使用され得る。所与のフレームまたはピクチャの復号ビデオブロックは、次いで、参照ピクチャメモリ282に記憶され、この参照ピクチャメモリ282は後続の動き補償のために使用される参照ピクチャを記憶する。参照フレームメモリ282は、図1のディスプレイデバイス32などのディスプレイデバイス上で後に提示するために復号ビデオも記憶する。
[0236]図14Aは、本開示の1つまたは複数の技法による、ビデオエンコーダ20の例示的な動作を示すフローチャートである。図14Aは図12を参照しながら説明されるが、図14Aの動作は、そのように限定されない。図14Aの例では、1つまたは複数のアクションは、再構成または省略される場合がある。他の例では、同様の動作は、追加のアクションを含み得る。
[0237]図14Aの例では、ビデオエンコーダ20の動き推定ユニット242は、現在のブロック(たとえば、現在のPU)に関するマージ候補リストを構成することができる(300)。本開示の少なくとも一部の技法によれば、動き推定ユニット242は、マージ候補リストがDSMV候補または追加のIPMVCを含むようにマージ候補リストを生成することができる。いくつかの例では、動き推定ユニット242は、空間的隣接ブロックの視差動きベクトルの水平成分をシフトさせることによってDSMV候補を生成する。言い換えれば、DSMV候補の水平成分は、DMVを含む空間的隣接ブロックの視差動きベクトルの水平成分プラスオフセットに等しい場合があり、DSMV候補の垂直成分は、DMVを含む空間的隣接ブロックの視差ベクトルの垂直成分に等しい場合がある。空間的隣接ブロックのいずれも視差動きベクトルを含まないとき、動き推定ユニット242は、現在のブロックの視差ベクトルの水平成分プラスオフセットに等しいDSMV候補の水平成分を設定することによって、またDSMV候補の垂直成分をゼロに設定することによってDSMVを生成し得る。さらに、いくつかの例では、動き推定ユニット242は、マージ候補リストを生成するために、図15および図16に示す例示的な演算を実行する。
[0238]動き推定ユニット242は、マージ候補リストを生成した後、マージ候補リストからマージ候補を選択することができる(302)。加えて、ビデオエンコーダ20の動き補償ユニット244は、選択されたマージ候補の動き情報を使用して現在のブロックに対する1つまたは複数の予測ブロックを生成することができる(304)。ビデオエンコーダ20は、ビットストリームにおいて選択されたマージ候補のインデックスをシグナリングすることができる(306)。
[0239]図14Bは、本開示の1つまたは複数の技法による、ビデオデコーダ30の例示的な動作を示すフローチャートである。図14Bは図13を参照しながら説明されるが、図14Bの動作は、そのように限定されない。図14Bの例では、1つまたは複数のアクションは、再構成または省略される場合がある。他の例では、同様の動作は、追加のアクションを含み得る。
[0240]図14Bの例では、ビデオデコーダ30の動き補償ユニット272は、現在のブロック(たとえば、現在のPU)に関するマージ候補リストを構成することができる(320)。本開示の少なくとも一部の技法によれば、動き補償ユニット272は、マージ候補リストが追加のIPMVCまたはDSMV候補を含むようにマージ候補リストを生成することができる。いくつかの例では、動き補償ユニット272は、空間的隣接ブロックの視差動きベクトルの水平成分をシフトさせることによってDSMV候補を生成する。言い換えれば、DSMV候補の水平成分は、空間的隣接ブロックの視差動きベクトルの水平成分プラスオフセットに等しい場合があり、DSMV候補の垂直成分は、空間的隣接ブロックの視差動きベクトルの垂直成分に等しい場合がある。空間的隣接ブロックのいずれも視差動きベクトルを含まないとき、動き補償ユニット272は、現在のブロックの視差ベクトルの水平成分プラスオフセットに等しいDSMV候補の水平成分を設定することによって、またDSMV候補の垂直成分をゼロに設定することによってDSMVを生成し得る。さらに、いくつかの例では、動き補償ユニット272は、マージ候補リストを生成するために、図15および図16に示す例示的な演算を実行する。
[0241]動き補償ユニット272は、ビットストリームにおいてシグナリングされたインデックスに基づいて、マージ候補リスト中の選択されたマージ候補を決定することができる(322)。加えて、動き補償ユニット272は、選択されたマージ候補の動き情報を使用して現在のブロックに対する1つまたは複数の予測ブロックを生成することができる(324)。ビデオデコーダ30は、現在のブロックの予測ブロックに少なくとも部分的に基づいてピクセル値を再構成することができる(326)。
[0242]図15は、本開示の1つまたは複数の技法による、現在のブロックに関するマージ候補リストを構成するための例示的な動作349の第1の部分を示すフローチャートである。図15の例示的な動作では、1つまたは複数のアクションは、再構成または省略される場合がある。他の例では、同様の動作は、追加のアクションを含み得る。
[0243]図15の例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、IPMVCを決定することができる(350)。いくつかの例では、ビデオコーダは、ビュー間参照ピクチャ内の対応するブロックを識別するのに現在のブロックに関する視差ベクトルを使用することによってIPMVCを決定することができる。そのような例では、対応するブロックが、イントラ予測されず、ビュー間予測されず、時間的動きベクトル(すなわち、対応するブロックと異なる時間インスタンスに関連する参照ピクチャ中のロケーションを示す動きベクトル)を有する場合、IPMVCは、対応するブロックの動きベクトルと、対応するブロックの予測方向インジケータと、対応するブロックの変換された参照インデックスとを指定することができる。次に、ビデオコーダは、IPMVCが利用可能であるかどうかを決定することができる(352)。いくつかの例では、IPMVCは、ビュー間参照ピクチャ内またはビュー間参照ピクチャの境界外の対応するブロックがイントラ予測される場合、利用不可能である。IPMVCが利用可能であること(352の「はい」)を決定するのに応答して、ビデオコーダは、IPMVCをマージ候補リストに挿入することができる(354)。
[0244]IPMVCをマージ候補リストに挿入した後、またはIPMVCが利用可能でないこと(352の「いいえ」)を決定するのに応答して、ビデオコーダは、空間的隣接PUが利用可能な動きベクトルを有するかどうかを決定するために空間的隣接PUをチェックすることができる(356)。いくつかの例では、空間的隣接PUは、図2のA0、A1、B0、B1、およびB2で示すロケーションをカバーする。説明を簡単にするために、本開示は、A0、A1、B0、B1、およびB2として、それぞれロケーションA0、A1、B0、B1、およびB2をカバーするPUの動き情報を参照し得る。
[0245]図15の例では、ビデオコーダは、A1がIPMVCにマッチングするかどうかを決定することができる(358)。A1がIPMVCにマッチングしないこと(358の「いいえ」)を決定するのに応答して、ビデオコーダは、A1をマージ候補リストに挿入することができる(360)。場合によっては、A1がIPMVCにマッチングすること(358の「はい」)を決定するのに応答して、またはA1をマージ候補リストに挿入した後、ビデオコーダは、B1がA1またはIPMVCにマッチングするかどうかを決定することができる(362)。B1がA1またはIPMVCにマッチングしないこと(362の「いいえ」)を決定するのに応答して、ビデオコーダは、B1をマージ候補リストに挿入することができる(364)。他方、B1がA1もしくはIPMVCにマッチングすること(362の「はい」)を決定するのに応答して、またはB1をマージ候補リストに挿入した後、ビデオコーダは、B0が利用可能であるかどうかを決定することができる(366)。B0が利用可能であること(366の「はい」)を決定するのに応答して、ビデオコーダは、B0をマージ候補リストに挿入することができる(368)。B0が利用可能でない(366の「いいえ」)場合、またはB0をマージ候補リストに挿入した後、ビデオコーダは、IDMVCが利用可能であるかどうか、およびIDMVCがA1にもB1にもマッチングしないかどうかを決定することができる(370)。IDMVCがビュー間参照ピクチャの境界の外部にあるロケーションを示す場合、IDMVCは利用不可能である場合がある。IDMVCが利用可能であることと、IDMVCがA1にもB1にもマッチングしないことと(370の「はい」)を決定するのに応答して、ビデオコーダは、IDMVCをマージ候補リストに挿入することができる(372)。IDMVCが利用可能でないか、またはIDMVCがA1もしくはB1にマッチングする(370の「いいえ」)場合、あるいはIDMVCをマージ候補リストに挿入した後、ビデオコーダは、図16に示す動作349の一部分(「A」によって示される)を実行することができる。
[0246]図16は、本開示の1つまたは複数の技法による、現在のブロックに関するマージ候補リストを構成するための図15の例示的な動作349の第2の部分を示すフローチャートである。上記に示すように、IDMVCが利用可能でないか、またはIDMVCがA1もしくはB1にマッチングする(370の「いいえ」)場合、あるいはIDMVCをマージ候補リストに挿入した後、ビデオコーダは、図16に示す動作349の一部分を実行することができる。したがって、IDMVCが利用可能でないか、またはIDMVCがA1もしくはB1にマッチングする(370の「いいえ」)場合、あるいはIDMVCをマージ候補リストに挿入した後、ビデオコーダは、BVSPが有効にされるかどうかを決定することができる(374)。BVSPが有効にされる(374の「はい」)場合、ビデオコーダは、BVSP候補をマージ候補リストに挿入することができる(376)。BVSPが有効にされない(374の「いいえ」)場合、またはBVSP候補をマージ候補リストに挿入した後、ビデオコーダは、A0が利用可能であるかどうかを決定することができる(378)。A0が利用可能である(378の「はい」)場合、ビデオコーダは、A0をマージ候補リストに挿入することができる(380)。場合によっては、A0が利用可能でない(378の「いいえ」)場合、またはA0をマージ候補リストに挿入した後、ビデオコーダは、B2が利用可能であるかどうかを決定することができる(382)。B2が利用可能である(382の「はい」)場合、ビデオコーダは、B2をマージ候補リストに挿入することができる(384)。
[0247]B2が利用可能でない(382の「いいえ」)場合、またはB2をマージ候補リストに挿入した後、ビデオコーダは、追加のマージ候補を決定することができる(385)。ビデオコーダは、様々な方法で追加のマージ候補を決定することができる。本開示の1つまたは複数の技法によれば、ビデオコーダは、追加のマージ候補を決定するために図16〜図19および/または図20の例示的な動作を実行することができる。追加のマージ候補は、追加のIPMVCまたはDSMV候補である場合がある。ビデオコーダは、追加のマージ候補を決定した後、追加のマージ候補が追加のIPMVCであるかどうかを決定することができる(386)。追加のマージ候補が追加のIPMVCである(386の「はい」)場合、ビデオコーダは、追加のIPMVCがアクション(350)において決定されたIPMVCにマッチングするかどうかを決定することができる(387)。追加のIPMVCがIPMVCにマッチングしない(387の「いいえ」)場合、または追加のマージ候補が追加のIPMVCでない(すなわち、追加のマージ候補がDSMV候補である)(386の「いいえ」)場合、ビデオコーダは、マージ候補リスト内に追加のマージ候補(すなわち、追加のIPMVCまたはDSMV候補)を含むことができる(388)。
[0248]追加のマージ候補が追加のIPMVCであり、追加のIPMVCがIPMVCにマッチングする(387の「はい」)場合、またはマージ候補リスト中に追加のマージ候補を含んだ後、ビデオコーダは、マージ候補リスト中に時間的マージ候補を含むことができる(390)。さらに、ビデオコーダは、結合双予測マージ候補に関する導出プロセスを実行することができる(392)。ゼロ動きベクトル候補に関する例示的な導出プロセスは、HEVC WD10のセクション8.5.3.2.3に記載されている。加えて、ビデオコーダは、ゼロ動きベクトル候補に関する導出プロセスを実行することができる(394)。ゼロ動きベクトル候補に関する例示的な導出プロセスは、HEVC WD10のセクション8.5.3.2.4に記載されている。
[0249]図17は、本開示の1つまたは複数の技法による、追加のマージ候補を決定するための例示的な動作399の第1の部分を示すフローチャートである。追加のマージ候補は、追加のIPMVCまたはDSMV候補である場合がある。動作399では、1つまたは複数のアクションは、再構成または省略される場合がある。他の例では、同様の動作は、追加のアクションを含み得る。
[0250]図17の例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、シフト視差ベクトルを決定することができる(400)。いくつかの例では、ビデオコーダは、現在のブロック(すなわち、ビデオコーダが現在コーディング中であるブロック)の視差ベクトルを第1の値によって水平に、第2の値によって垂直にシフトさせることによってシフト視差ベクトルを決定することができる。いくつかの例では、現在のブロックはPUであり、第1の値は(((W/2)*4)+4)に等しく、第2の値は(((H/2)*4)+4)に等しいが、ここでWは現在のブロックの幅であり、Hは現在のブロックの高さである。
[0251]ビデオコーダは、ビュー間参照ピクチャ内の対応するブロックを決定するためにシフト視差ベクトルを使用することができる(402)。たとえば、ビデオコーダは、シフト視差ベクトルによってシフトされた現在のブロックの中心位置に対応するビュー間参照ピクチャ中のピクセルを識別することができる。さらに、ビデオコーダは、対応するブロックの少なくとも1つの動きベクトルが利用可能であるかどうかを決定することができる(404)。たとえば、ビデオコーダは、対応するブロックがイントラ予測される場合、または対応するブロックがビュー間参照ピクチャの境界の外部にある場合、対応するブロックの動きベクトルが利用可能でないことを決定することができる。対応するブロックの少なくとも1つの動きベクトルが利用可能である(404の「はい」)場合、ビデオコーダは、対応するブロックの動き情報に基づいて追加のIPMVCを生成することができる(406)。たとえば、識別されたピクセルをカバーするブロック内の動き情報は、追加のIPMVC候補を生成するために使用され得る。ビデオコーダは、追加のIPMVCをマージ候補リスト中の追加のマージ候補として含むことができる。いくつかの例では、ビデオコーダは、追加のIPMVCが元のIPMVCと異なるときにのみ、追加のIPMVCをマージ候補リスト中に含む。たとえば、ビデオコーダは、図16のアクション388においてマージ候補リスト中に追加のIPMVCを含むことができる。
[0252]このように、ビデオコーダは、参照ビュー中の第1の対応するブロックを位置特定するために、現在のブロックの視差ベクトルを使用することができる。さらに、第1の対応するブロックの動き情報が利用可能であることを決定するのに応答して、ビデオコーダは、第1のIPMVCをマージ候補リストに挿入することができる。第1のIPMVCは、第1の対応するブロックの少なくとも1つの動きベクトルを示すことができる。加えて、ビデオコーダは、現在のブロックの視差ベクトルを第1の値によって水平に、第2の値によって垂直にシフトさせることによってシフト視差ベクトルを決定することができる。ビデオコーダは、参照ビュー中の第2の対応するブロックを位置特定するためにシフト視差ベクトルを使用することができる。第2の対応するブロックの動き情報が利用可能であり、第1のIPMVCの動き情報にマッチングしないことを決定することに応答して、ビデオコーダは、第2のIPMVCをマージ候補リストに挿入することができるが、第2のIPMVCは第2の対応するブロックの少なくとも1つの動きベクトルを示す。
[0253]他方、対応するブロックの動きベクトルが利用可能でない(404の「いいえ」)場合、ビデオコーダは、利用可能な視差動きベクトルに関してまだチェックされていない少なくとも1つの空間的隣接ブロックが存在するかどうかを決定することができる(408)。いくつかの例では、チェックされるべき空間的隣接ブロックは、ロケーションA1、B1、B0、A0、およびB2に対応する空間的隣接ブロックである。さらに、いくつかの例では、ビデオコーダは、A1、B1、B0、A0、およびB2の順に空間的隣接ブロックをチェックすることができる。
[0254]用可能な視差動きベクトルに関してまだチェックされていない少なくとも1つの空間的隣接ブロックが存在する(408の「はい」)場合、ビデオコーダは、現在の空間的隣接ブロック(すなわち、現在のブロックに関するマージ候補リストに含めるための追加のマージ候補を決定するために動作399を実行するコースにおいてまだチェックされていない空間的隣接ブロック)が利用可能な視差動きベクトルを有するかどうかを決定することができる(410)。いくつかの例では、現在の空間的隣接ブロックは、現在の空間的隣接ブロックのRefPicList0参照インデックスがビュー間参照ピクチャを示す場合、利用可能な視差動きベクトルを有する。他の例では、現在の空間的隣接ブロックのRefPicList0参照インデックスがビュー間参照ピクチャを示し、現在の空間的隣接ブロックのRefPicList1参照インデックスが時間的参照ピクチャを示す場合、現在の空間的隣接ブロックは、利用可能な視差動きベクトルを有する。
[0255]現在の空間的隣接ブロックが利用可能な視差動きベクトルを有する(410の「はい」)ことを決定するのに応答して、ビデオコーダは、図18に示す動作399の一部分(「A」によって示される)を実行することができる。他方、現在の空間的隣接ブロックが利用可能な視差動きベクトルを有しない(410の「いいえ」)場合、ビデオコーダは、まだチェックされていない少なくとも1つの空間的隣接ブロックが存在するかどうかを再び決定することができる(408)。チェックされるべき別の空間的隣接ブロックが存在する場合、ビデオコーダは、この空間的隣接ブロックが利用可能な視差動きベクトルを有するかどうかを決定することができる。このように、ビデオコーダは、利用可能な視差動きベクトルを有する空間的隣接ブロックをビデオコーダが識別するまで、またはチェックすべき残りの空間的隣接ブロックが存在しなくなるまで、空間的隣接ブロックをチェックし続けることができる。チェックすべき残りの空間的隣接ブロックが存在しない(408の「いいえ」)ことを決定するのに応答して、ビデオコーダは、図19に示す動作399の一部分(「B」によって示される)を実行することができる。
[0256]図18は、本開示の1つまたは複数の技法による、追加のマージ候補を決定するための動作399の第2の部分を示すフローチャートである。上記に示すように、利用可能な視差動きベクトルを有する空間的隣接ブロックをビデオコーダが識別するとき、ビデオコーダは、図18に示す動作399の一部分を実行することができる。
[0257]図18の例では、ビデオコーダは、DSMV候補のRefPicList0動きベクトル(すなわち、「MV」)の水平成分を現在の空間的隣接ブロック(すなわち、第1の利用可能な視差動きベクトルを有する空間的に隣接するブロック)のRefPicList0視差動きベクトルの水平成分プラスオフセットに設定することができる(430)。いくつかの例では、オフセットは4に等しい場合がある。加えて、ビデオコーダは、DSMV候補のRefPicList0動きベクトルの垂直成分を、現在の空間的隣接ブロックのRefPicList0視差動きベクトルの垂直成分に設定することができる(432)。いくつかの例では、BVSPが現在のピクチャまたはスライスに関して有効にされるとき、ビデオコーダは、DSMV候補のRefPicList0動きベクトルの垂直成分をゼロに設定することができる。
[0258]ビデオコーダは、DSMV候補のRefPicList1動きベクトルの水平成分を、現在の空間的隣接ブロックのRefPicList1動きベクトルの水平成分に設定することができる(434)。さらに、ビデオコーダは、追加のDSMV候補のRefPicList1動きベクトルの垂直成分を、現在の空間的隣接ブロックのRefPicList1動きベクトルの垂直成分に設定することができる(436)。ビデオコーダは、DSMV候補の参照インデックスを、現在の空間的隣接ブロックの参照インデックスに設定することができる(438)。ビデオコーダは、DSMV候補をマージ候補リスト中の追加のマージ候補として含むことができる。たとえば、ビデオコーダは、図16のアクション388においてマージ候補リスト中にDSMV候補を含むことができる。
[0259]図19は、本開示の1つまたは複数の技法による、追加のマージ候補を決定するための例示的な動作の第3の部分を示すフローチャートである。上記に示すように、空間的隣接ブロックのいずれも利用可能な視差動きベクトルを有しないとき、ビデオコーダは、図19に示す動作399の一部分を実行することができる。
[0260]図19の例では、ビデオコーダは、DSMV候補のRefPicList0動きベクトル(すなわち、「MV」)の水平成分を現在のブロックの視差動きベクトルの水平成分プラスオフセットに設定することができる(450)。いくつかの例では、オフセットは4に等しい場合がある。加えて、ビデオコーダは、DSMV候補のRefPicList0動きベクトルの垂直成分をゼロに設定することができる(452)。さらに、ビデオコーダは、DSMV候補のRefPicList1動きベクトルの水平成分を、現在のブロックの視差ベクトルの水平成分プラスオフセットに設定することができる(454)。いくつかの例では、オフセットは4に等しい場合がある。ビデオコーダは、DSMV候補のRefPicList1動きベクトルの垂直成分をゼロに設定することができる(456)。加えて、ビデオコーダは、DSMV候補のRefPicList0参照インデックスを、現在のブロックに関する視差ベクトルの導出中に(たとえば、NBDVまたはDoNBDVの導出動作中に)識別される参照ビューに属するRefPicList0中のピクチャの参照インデックスに設定することができる(458)。ビデオコーダは、DSMV候補のRefPicList1参照インデックスを、現在のブロックに関する視差ベクトルの導出中に(たとえば、NBDVまたはDoNBDVの導出動作中に)識別される参照ビューに属するRefPicList1中のピクチャの参照インデックスに設定することができる(460)。
[0261]図20は、本開示の1つまたは複数の技法による、ビデオコーダの例示的な動作を示すフローチャートである。図20の例では、1つまたは複数のアクションは、再構成または省略される場合がある。他の例では、同様の動作は、追加のアクションを含み得る。
[0262]図20の例では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、ビデオデータの現在のブロックの空間的隣接ブロック間で第1の利用可能な視差動きベクトルを決定することができる(470)。第1の利用可能な視差動きベクトルは、第1の参照ピクチャリスト(たとえば、RefPicList0)に対応する。さらに、ビデオコーダは、DSMV候補を導出するために第1の利用可能な視差動きベクトルの水平成分をシフトさせることができる(472)。ビデオコーダは、DSMV候補をマージ候補リストに追加することができる(474)。いくつかの例では、シフト視差ベクトル(すなわち、シフト視差ベクトルによって示されるビュー間参照ブロックのマージ候補指示動き情報)から生成されたIPMVCが利用可能でないとき、ビデオコーダは、DSMV候補をマージ候補リストに追加する。さらに、いくつかの例では、ビデオコーダがビデオエンコーダである場合、ビデオエンコーダは、マージ候補リストから候補を選択し、ビットストリーム中に、選択されたマージ候補のインデックスを表すデータを含むことができる。ビデオエンコーダは、選択されたマージ候補の動き情報に基づいて、現在のブロックに関する予測ブロックを決定することができる。ビデオエンコーダは、ビットストリーム中に、予測ブロック上で部分的に決定された残差データを表すデータを含むことができる。他の例では、ビデオデコーダがビデオデコーダである場合、ビデオデコーダは、ビットストリームから得られたデータに基づいて、マージ候補リスト中の選択されたマージ候補を決定することができる。さらに、ビデオデコーダは、選択されたマージ候補の動き情報に基づいて、現在のブロックに関する予測ブロックを決定することができる。ビデオデコーダは、残差データおよび予測ブロックに基づいて、現在のブロックのサンプル値を再構成することができる。
[0263]以下の段落は、本開示の追加の例示的な技法を提供する。
[0264]例1: ビデオデータの現在のブロックをコーディングする際に使用するためのマージモード動きベクトル予測候補リストのためのビュー間予測動きベクトル候補を導出することと、マージモード動きベクトル予測候補リストのための1つまたは複数の追加のビュー間予測動きベクトル候補を導出することと、ここにおいて、1つまたは複数の追加のビュー間予測動きベクトル候補は、ビデオデータの現在のブロックの1つまたは複数のシフト視差ベクトルから導出される、マージモード動きベクトル予測候補リストを使用してビデオデータの現在のブロックに関する動きベクトルをコーディングすることとを備えるマルチビュービデオデータをコーディングする方法。
[0265]例2: 1つまたは複数のシフト視差ベクトルのうちの少なくとも1つは、第1の値M1によって水平にシフトされ、第2の値M2によって垂直にシフトされる、例1に記載の方法。
[0266]例3: 第1の値M1と第2の値M2とは異なる値である、例2に記載の方法。
[0267]例4: 第1の値M1と第2の値M2とは同じ値である、例2に記載の方法。
[0268]例5: 第1の値M1および第2の値M2は、4、8、16、32、64、−4、−8、−16、−32、および−64を含むリストから任意の値をとり得る、例2に記載の方法。
[0269]例6: 第1の値M1は1つの参照ビュー内の最小予測ユニットの幅に等しく、第2の値M1は1つの参照ビュー内の最小予測ユニットの高さに等しい、例2に記載の方法。
[0270]例7: 第1の値M1は1つの参照ビュー内の最小コーディングユニットの幅に等しく、第2の値M1は1つの参照ビュー内の最小コーディングユニットの高さに等しい、例2に記載の方法。
[0271]例8: 第1の値M1はビデオデータの現在のブロックの幅に等しく、第2の値M1はビデオデータの現在のブロックの高さに等しい、例2に記載の方法。
[0272]例9: マージモード動きベクトル予測候補リストのための1つまたは複数の追加のビュー間予測動きベクトル候補を導出することは、追加の候補を生成せず、視差シフト動きベクトルを生成するために第1の利用可能な視差動きベクトルの水平成分だけ空間的に隣接するブロックから第1の利用可能な視差動きベクトルをシフトさせることと、視差シフト動きベクトルをマージモード動きベクトル予測候補リストに追加することとをさらに備える、例1に記載の方法。
[0273]例10: 1つまたは複数の追加のビュー間予測動きベクトル候補は、任意の空間的候補の後にマージモード動きベクトル予測候補リストに追加される、例1に記載の方法。
[0274]例11: 1つまたは複数の追加のビュー間予測動きベクトル候補は、時間的動きベクトル予測候補の後に追加される、例10に記載の方法。
[0275]例12: 1つまたは複数の追加のビュー間予測動きベクトル候補は、時間的動きベクトル予測候補の前に追加される、例10に記載の方法。
[0276]例13: 1つまたは複数の追加のビュー間予測動きベクトル候補のうちの一方は、時間的動きベクトル予測候補の後に追加され、1つまたは複数の追加のビュー間予測動きベクトル候補のうちの他方は、時間的動きベクトル予測候補の前に追加される、例10に記載の方法。
[0277]例14: ビデオデータの現在のブロックをコーディングする際に使用するためのマージモード動きベクトル予測候補リストのためのビュー間予測動きベクトル候補を導出するための手段と、マージモード動きベクトル予測候補リストのための1つまたは複数の追加のビュー間予測動きベクトル候補を導出するための手段と、ここにおいて、1つまたは複数の追加のビュー間予測動きベクトル候補は、ビデオデータの現在のブロックの1つまたは複数のシフト視差ベクトルから導出される、マージモード動きベクトル予測候補リストを使用してビデオデータの現在のブロックに関する動きベクトルをコーディングするための手段とを備える、ビデオデータをコーディングするように構成された装置。
[0278]例15: 例1〜13に記載された方法の任意の組合せを実行するように構成されたビデオエンコーダ。
[0279]例16: 例1〜13に記載された方法の任意の組合せを実行するように構成されたビデオデコーダ。
[0280]例17: 実行されると、ビデオデータを符号化するように構成されたデバイスの1つまたは複数のプロセッサに、例1〜13に記載された方法の任意の組合せを実行させる命令を記憶する、コンピュータ可読記憶媒体。
[0281]例18: 実行されると、ビデオデータを復号するように構成されたデバイスの1つまたは複数のプロセッサに、例1〜13に記載された方法の任意の組合せを実行させる命令を記憶する、コンピュータ可読記憶媒体。
[0282]例19: 本開示で説明する方法の任意の組合せ。
[0283]例20: 本開示で説明する方法のいずれか、またはそれらの組合せを実行するように構成されたデバイス。
[0284]例に応じて、本明細書に記載される技法のうちの任意のもののいくつかの振る舞いまたは事象は、異なるシーケンスで実行され得、全体的に追加、結合、または除外され得ることが、認識されるべきである(たとえば、記載される振る舞いまたは事象のすべてが、この技法の実施のために必要であるとは限らない)。その上、いくつかの例では、振る舞いまたは事象は、たとえば、マルチスレッドの処理、割込み処理、または多数のプロセッサを用いて、連続的ではなく同時に実行され得る。
[0285]本明細書に開示する方法、システムおよび装置と関連して説明する様々な例示的論理ブロック、モジュール、回路、およびアルゴリズムのステップは、電子ハードウェア、プロセッサによって実行されるコンピュータソフトウェア、または両方の組合せとして実装できることを、当業者は認識するであろう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップを、上記では概してそれらの機能に関して説明した。そのような機能がハードウェアとして実装されるか、ソフトウェアとして実装されるかは、特定の適用例および全体的なシステムに課される設計制約に依存する。当業者は、説明する機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本発明の範囲からの逸脱を生じるものと解釈されるべきではない。
[0286]さらに、本明細書で開示した例は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、またはその他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタロジック、個別ハードウェア構成要素などの電子デバイスまたは回路、あるいは本明細書で説明した機能を実行するように設計されたそれらの任意の組合せを用いて実装または実施され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは、任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサとの組合せ、複数のマイクロプロセッサ、DSPコアと併用される1つもしくは複数のマイクロプロセッサ、または他の任意のそのような構成として実装され得る。
[0287]1つまたは複数の例では、述べられた機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで、実施されてもよい。ソフトウェアで実施される場合、諸機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体を介して記憶または伝送され得、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を支援する任意の媒体を含む、データ記憶媒体または通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体または(2)信号またはキャリア波などの通信媒体に相当し得る。データ記憶媒体は、本開示に記載される技法の実施のために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによって、命令、コードおよび/またはデータ構造を取り出すためにアクセスされ得る、任意の利用できる媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含んでもよい。
[0288]例として、それに限定されず、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスク記憶装置、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、フラッシュメモリ、または命令またはデータ構造の形態で所望のプログラムコードを記憶するために使用可能であり、コンピュータによってアクセス可能な他の任意の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他の遠隔ソースから、同軸ケーブル、光ファイバケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して伝送される場合、同軸ケーブル、光ファイバケーブル、ツイストペア、DSL、または赤外線、無線、マイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、キャリア波、信号、または他の一時的な媒体を含まないが、代わりに、非一時的な、有形の記憶媒体を対象とすることを理解されたい。本明細書において、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタルバーサタイルディスク(DVD)、フロッピー(登録商標)ディスクおよびブルーレイディスクを含み、この場合、ディスク(disk)は、通常、磁気的にデータを再生し、ディスク(disc)は、レーザーを用いてデータを光学的に再生する。上述したものの組合せも、コンピュータ可読媒体の範囲の中に含められるべきである。
[0289]命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の同等の統合された、もしくは個別の論理回路などの、1つまたは複数のプロセッサによって実行され得る。したがって、「プロセッサ」という用語は、本明細書において、前述の構造のうちの任意のものまたは本明細書に記載される技法の実施のために適当な任意の他の構造を参照し得る。加えて、いくつかの態様では、本明細書に記載される機能性は、符号化および復号のために構成され、または組み合わされたコーデックに組み込まれる、専用のハードウェア内および/またはソフトウェアモジュール内で提供され得る。また、技法は、1つまたは複数の回路または論理素子内で完全に実施されてよい。
[0290]したがって、本明細書で開示する例に関して説明する方法またはアルゴリズムのステップは、直接ハードウェアで実施するか、プロセッサによって実行されるソフトウェアモジュールで実施するか、またはその2つの組合せで実施することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、取外し可能ディスク、CD−ROM、または、当技術分野で知られている他の任意の形の記憶媒体の中に存在してよい。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替として、記憶媒体はプロセッサに一体化され得る。プロセッサおよび記憶媒体は、ASIC中に存在してよい。ASICは、ユーザ端末中に存在してよい。代替形態では、プロセッサおよび記憶媒体は、ユーザ端末内の個別構成要素として存在し得る。
[0291]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)または1組のIC(たとえば、チップセット)を含む、多種多様なデバイスまたは装置に実装され得る。様々な構成要素、モジュール、またはユニットは、開示された技法を実行するように構成されるデバイスの機能上の態様を強調するために、本開示に記載されるが、必ずしも異なるハードウェアユニットによる実現を求めるとは限らない。むしろ、上述したように、様々なユニットは、コーデックハードウェアユニットの中で組み合わされ、または、上述される1つまたは複数のプロセッサを含む、適当なソフトウェアおよび/またはファームウェアと一緒に相互作用するハードウェアユニットが集まったものによって提供され得る。
[0292]様々な例が、述べられた。これらおよび他の例は、以下の特許請求の範囲の範囲内である。