[0024]一般に、本開示は、(たとえば、H.264AVCのマルチビュービデオコーディング(MVC)拡張における)H.264/アドバンストビデオコーディング(AVC)コーデックによる2つ以上のビューのコーディングを含む、アドバンストコーデックに基づくマルチビュービデオコーディング用の技法を記載する。本開示は、視差ベクトル導出に関する技法を提案する。3D AVCベースのビデオコーディング(すなわち、3D−AVC)は、3次元(3D)ビデオコーディング用のH.264/AVCのAVC互換ビデオプラス深度拡張である。H.264/AVCのMVCプラス深度(MVC+D)拡張と同様に、3D−AVCは、テクスチャコンポーネントおよび深度マップコンポーネントのコーディングをサポートする。しかしながら、本開示の技法は、一般的に、高効率ビデオコーディング(HEVC)規格のマルチビュー拡張を含む任意のマルチビュービデオコーディング技法に適用可能であり得る。
[0025]マルチビュービデオコーディングでは、様々なビューのビデオコンテンツは、様々な視点を表す場合がある。たとえば、第1のビューにおけるピクチャ内のビデオブロックは、第2のビューにおけるピクチャ内のビデオブロックと同様のビデオコンテンツを含む場合がある。この例では、第1のビューにおけるピクチャ内のビデオブロックの位置と、第2のビューにおけるピクチャ内のビデオブロックの位置は、異なる場合がある。たとえば、異なるビューにおけるビデオブロックの位置の間に、何らかの変位(すなわち、視差)が存在する場合がある。マルチビュービデオコーディングでは、異なるビューから復元されたビューコンポーネントに基づくビュー間予測が可能にされ得る。ビュー間予測は、ビデオの同じ時間インスタンスを表す各ビューのピクチャが同様のビデオコンテンツを含むことができるという事実を活用することによって、コーディング利得を実現することができる。
[0026]現在ピクチャ内のビデオブロックがビュー間予測を使用してコーディングされるとき、そのブロックは、ビュー間参照ピクチャ内の位置を示す動きベクトルを有することができる。ビュー間参照ピクチャは、現在ピクチャと同じ時間インスタンス内にある(すなわち、関連付けられている)が、現在ピクチャとは異なるビュー内にある(すなわち、関連付けられている)参照ピクチャであり得る。ブロックの動きベクトルがビュー間参照ピクチャ内の位置を示す場合、動きベクトルは視差動きベクトルと呼ばれる場合がある。ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、現在ブロック用の予測ブロックを決定するために、現在ブロックの視差動きベクトルを使用することができる。ビデオコーダがビデオエンコーダである場合、ビデオコーダは、現在ブロック用の残差データを生成するために、現在ブロック用の予測ブロックを使用することができる。ビデオコーダがビデオデコーダである場合、ビデオコーダは、現在ビデオブロック用のサンプル値を復元するために、現在ブロック用の予測ブロックと現在ブロック用の残差データとを使用することができる。
[0027]さらに、特定のピクチャ内のブロックは、ビュー間参照ピクチャ内の対応するブロックの動き情報または残差データと同様の動き情報または残差データを有することができる。したがって、ビデオコーダは、ビュー間参照ピクチャ内の対応するブロックの動き情報または残差データに基づいて、現在ピクチャ内の現在ブロックの動き情報または残差データを予測することができる。ビデオコーダは、ビュー間参照ピクチャ内の対応するブロックの位置を決定するために、現在ブロック用の視差ベクトルを決定することができる。ビデオコーダは、現在ブロックが視差動きベクトルを有しているかどうかにかかわらず、ビュー間参照ピクチャ内の対応するブロックの動き情報または残差データに基づいて、現在ブロックの動き情報または残差データを予測することができる。したがって、ビュー間参照ピクチャ内の対応するブロックの動き情報または残差データに基づいて、現在ブロックの動き情報または残差データが予測される場合、現在ブロックは視差ベクトルを有していると言われる。後でコーディングされるブロックの視差ベクトル導出プロセスに視差ベクトルが使用されるとき、視差ベクトルは、暗黙視差ベクトル(IDV)と呼ばれる場合がある。現在ブロック用の視差ベクトルは、以前のブロックのうちの1つのブロック用の視差ベクトルに等しい場合がある。
[0028]ビデオコーダは、現在ブロック用の視差ベクトルを導出するために、隣接ブロックベース視差ベクトル(NBDV)導出プロセスを使用することができる。NBDV導出プロセスでは、ビデオコーダは、現在ブロックに隣接するブロックを確認することができる。隣接ブロックには、空間隣接ブロックおよび時間隣接ブロックが含まれ得る。空間隣接ブロックは、現在ブロックと同じピクチャ(すなわち、現在ピクチャ)内にある。時間隣接ブロックは、現在ピクチャとは異なる1つまたは複数のピクチャ内にある。ビデオコーダが隣接ブロックを確認するとき、ビデオコーダは、隣接ブロックが視差動きベクトルを有するかどうかを決定することができる。隣接ブロックのうちの1つが視差動きベクトルを有するとビデオコーダが決定したとき、ビデオコーダは、隣接ブロックの確認を停止することができ、隣接ブロックの視差動きベクトルを現在ブロック用の視差ベクトルに変換することができる。隣接ブロックのいずれも視差動きベクトルを有していない場合、ビデオコーダは、空間隣接ブロックのいずれかがIDVを有するかどうかを決定することができる。空間隣接ブロックのうちの1つがIDVを有するとビデオコーダが決定したとき、ビデオコーダは、隣接ブロックの確認を停止することができ、隣接ブロックのIDVを現在ブロック用の視差ベクトルに変換することができる。
[0029]既存のNBDV導出プロセスに関していくつかの問題が存在する。たとえば、NBDV導出プロセスにおけるIDVの使用は、記憶要件およびメモリアクセスの回数における著しい増加を必要とする可能性がある。本開示の技法は、NBDV導出プロセスに関するそのような問題に対処することができる。たとえば、ビデオコーダは、本開示の技法に従って、ビデオデータの現在ピクチャのスライス用の導出視差ベクトル(DDV)に少なくとも部分的に基づいて、スライスの第1のブロック用のNBDVを導出することができる。スライスは、ビデオデータの1つまたは複数のブロックを含む場合がある。ビデオコーダは、第1のブロック用のNBDVに少なくとも部分的に基づいて、第1のブロックをコーディングすることができる。加えて、ビデオコーダは、スライス用の更新されたDDVとして第1のブロック用のNBDVを記憶することができる。更新されたDDVとして第1のブロック用のNBDVを記憶した後、ビデオコーダは、更新されたDDVに少なくとも部分的に基づいて、スライスの第2のブロック用のNBDVを導出することができる。加えて、ビデオコーダは、第2のブロック用のNBDVに少なくとも部分的に基づいて、第2のブロックをコーディングすることができる。このプロセスは、スライス内のブロックごとに続けることができる。特に、スライス用のDDVは、以前コーディングされたブロックのNBDVであることに基づいて更新される場合があり、次いで、更新されたDDVは、次のブロック用のNBDVを導出するために使用される。このようにDDVを使用することによって、ビデオコーダは、スライスのブロック用のより正確な視差ベクトルを決定することが可能であり得る。視差ベクトルの確度を増大させると、ビットストリームのサイズが低減され得る。
[0030]図1は、本開示に記載される技法を利用することができる例示的なビデオ符号化および復号システム10を示すブロック図である。本明細書で使用する「ビデオコーダ」という用語は、ビデオエンコーダとビデオデコーダの両方を総称的に指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、ビデオ符号化またはビデオ復号を総称的に指す場合がある。
[0031]図1に示されたように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを生成するソースデバイス12を含む。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と呼ばれる場合がある。宛先デバイス14は、ソースデバイス12によって生成された符号化ビデオデータを復号することができる。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と呼ばれる場合がある。ソースデバイス12および宛先デバイス14は、ビデオコーディングデバイスまたはビデオコーディング装置の例であり得る。
[0032]ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備える場合がある。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信に対応する場合がある。
[0033]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信機を含む。ビデオソース18は、ビデオキャプチャデバイス(たとえば、ビデオカメラ)、以前にキャプチャされたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するビデオフィードインターフェース、および/もしくはソースビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステム、またはそのようなソースの組合せなどのソースを含む場合がある。一例として、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラ付き電話またはビデオ電話を形成することができる。しかしながら、本開示に記載される技法は、概してビデオコーディングに適用可能であり得るし、ワイヤレスおよび/または有線の適用例に適用され得る。
[0034]キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。ソースデバイス12の出力インターフェース22は、符号化ビデオデータを宛先デバイス14に直接送信することができる。ストレージデバイス34は、復号および/または再生のための宛先デバイス14または他のデバイスによる後のアクセスのために、符号化ビデオデータを記憶することができる。
[0035]宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。場合によっては、入力インターフェース28は、受信機および/またはモデムを含む場合がある。宛先デバイス14の入力インターフェース28は、リンク16を介して符号化ビデオデータを受信することができる。リンク16を介して通信されるか、またはストレージデバイス34に供給された符号化ビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30などのビデオデコーダが使用するための、ビデオエンコーダ20によって生成される様々なシンタックス要素を含む場合がある。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体に記憶されるか、またはファイルサーバに記憶される符号化ビデオデータに含まれる場合がある。
[0036]ディスプレイデバイス32は、宛先デバイス14と一体化されるか、またはその外部に存在する場合がある。いくつかの例では、宛先デバイス14は、一体型ディスプレイデバイスを含み、また、外部ディスプレイデバイスとインターフェースするように構成される場合がある。他の例では、宛先デバイス14はディスプレイデバイスであり得る。一般に、ディスプレイデバイス32は、復号されたビデオデータをユーザに表示し、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなどの様々なディスプレイデバイスのいずれかを備える場合がある。
[0037]上記に示されたように、宛先デバイス14は、リンク16を介して、復号されるべき符号化ビデオデータを受信することができる。リンク16は、ソースデバイス12から宛先デバイス14に符号化ビデオデータを移動させることが可能なタイプの媒体またはデバイスを備える場合がある。一例では、リンク16は、ソースデバイス12が、リアルタイムに符号化ビデオデータを宛先デバイス14に直接送信することを可能にする通信媒体を備える場合がある。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信される場合がある。通信媒体は、無線周波(RF)スペクトルまたは1つもしくは複数の物理伝送線路などの任意のワイヤレスまたは有線の通信媒体を備える場合がある。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどの、パケットベースネットワークの一部を形成する場合がある。通信媒体は、ソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る、ルータ、スイッチ、基地局、または任意の他の機器を含む場合がある。
[0038]代替として、符号化データは、出力インターフェース22からストレージデバイス34に出力される場合がある。同様に、符号化データは、入力インターフェース28によってストレージデバイス34からアクセスされる場合がある。ストレージデバイス34は、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性メモリもしくは不揮発性メモリ、または符号化ビデオデータを記憶するための任意の他の適切なデジタル記憶媒体などの様々な分散した、またはローカルでアクセスされるデータ記憶媒体のいずれかを含む場合がある。さらなる一例では、ストレージデバイス34は、ソースデバイス12によって生成された符号化ビデオを保持することができる、ファイルサーバまたは別の中間ストレージデバイスに対応する場合がある。宛先デバイス14は、ストリーミングまたはダウンロードを介して、ストレージデバイス34から記憶されたビデオデータにアクセスすることができる。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先デバイス14に送信することが可能な、任意のタイプのサーバであり得る。例示的なファイルサーバには、(たとえば、ウェブサイト用の)ウェブサーバ、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、ローカルディスクドライブ、または、他のコンピューティングデバイスにデータを提供する他のタイプのデバイスもしくはシステムが含まれる。宛先デバイス14は、インターネット接続を含む任意の標準的なデータ接続を介して、符号化ビデオデータにアクセスすることができる。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、有線接続(たとえば、DSL、ケーブルモデムなど)、または両方の組合せを含む場合がある。ストレージデバイス34からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、または両方の組合せであり得る。
[0039]本開示の技法は、必ずしもワイヤレスの適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、たとえばインターネットを介したストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例などの、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用される場合がある。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話などの適用例をサポートするために、一方向または双方向のビデオ送信をサポートするように構成される場合がある。
[0040]図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、各々オーディオエンコーダおよびオーディオデコーダと統合される場合があり、共通のデータストリームまたは別個のデータストリーム内のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含む場合がある。適用可能な場合、いくつかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠することができる。
[0041]ビデオエンコーダ20およびビデオデコーダ30は、各々、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェア、またはそれらの任意の組合せなどの様々な適切なエンコーダ回路のいずれかとして実装される場合がある。本技法がソフトウェアに部分的に実装されるとき、デバイスは、適切な非一時的コンピュータ可読媒体にソフトウェア用の命令を記憶することができ、本開示の技法を実行するために1つまたは複数のプロセッサを使用してハードウェア内でその命令を実行することができる。ビデオエンコーダ20およびビデオデコーダ30の各々は、1つまたは複数のエンコーダまたはデコーダに含まれる場合があり、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合される場合がある。
[0042]本開示は、概して、ビデオデコーダ30などの別のデバイスにある情報を「シグナリング」するビデオエンコーダ20に言及する場合がある。「シグナリング」という用語は、概して、圧縮されたビデオデータを復号するために使用されるシンタックス要素および/または他のデータの通信を指す場合がある。そのような通信は、リアルタイムまたはほぼリアルタイムで行われる場合がある。代替として、そのような通信は、符号化時に符号化されたビットストリーム内でシンタックス要素をコンピュータ可読記憶媒体に記憶するときに行われる場合があるなどの、ある時間期間にわたって行われる場合があり、次いで、これらの要素は、この媒体に記憶された後の任意の時間に復号デバイスによって取り出される場合がある。したがって、シグナリングは、概して、符号化されたビットストリームを処理および/または復号するのに使用する符号化されたビットストリーム内の情報を提供することを指す場合がある。
[0043]いくつかの例では、ビデオエンコーダ20およびビデオデコーダ30は、そのスケーラブルビデオコーディング(SVC)拡張、マルチビュービデオコーディング(MVC)拡張、およびMVCベース3DV拡張を含む、ISO/IEC MPEG−4 Visualおよび(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264などのビデオ圧縮規格に従って動作する。さらに、H.264/AVCに対する3次元ビデオ(3DV)コーディング拡張、すなわちAVCベース3DVまたは「3D−AVC」を生成する作業が進行中である。H.264のMVC拡張のジョイントドラフトは、「一般的な視聴覚サービス用のアドバンストビデオコーディング」、ITU−T勧告H.264、2010年3月(以下、「H.264/AVC仕様」)に記載されている。他の例では、ビデオエンコーダ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−4 Visualに従って動作することができる。しかしながら、本開示の技法は、いかなる特定のコーディング規格にも限定されない。
[0044]上記に示されたように、VCEGおよびMPEGの3Dビデオコーディング共同研究部会(JCT−3V)は、現在、H.264/AVCに基づく3DV規格、すなわち3D−AVCを開発している。3D−AVCの場合、MVC内のビュー間予測に加えて新しいコーディングツールが含まれ、サポートされている。2014年3月3日時点で、3D−AVC用ソフトウェア(すなわち、3D−ATM)が、以下のリンクからダウンロード可能である:[3D−ATM version 6.2]:http://mpeg3dv.research.nokia.com/svn/mpeg3dv/tags/3DV−ATMv6.2/。3D−AVCのドラフト版は、Hannukselaら、「3D−AVCドラフトテキスト5」、JCT3V−C1002、ジュネーブ、スイス、2013年1月(以下、「3D−AVCドラフトテキスト5」)に公開されており、その内容全体は参照により本明細書に組み込まれている。2014年3月3日時点で、3D−AVCドラフトテキスト5は、以下のリンクから入手可能である:http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/3_Geneva/wg11/JCT3V−C1002−v3.zip。
[0045]他の例では、ビデオエンコーダ20およびビデオデコーダ30は、ITU−Tビデオコーディングエキスパートグループ(VCEG)とISO/IECモーションピクチャエキスパートグループ(MPEG)とのビデオコーディング共同研究部会(JCT−VC)によって開発された高効率ビデオコーディング(HEVC)規格、またはHEVCの拡張に従って動作することができる。Brossら、「高効率ビデオコーディング(HEVC)テキスト仕様ドラフト9」、第11回会合:上海、中国、2012年10月10〜19日、文書JCTVCーK1003が、「HEVCワーキングドラフト9」と呼ばれるHEVC規格のワーキングドラフトを提供する。2014年3月3日時点で、HEVCワーキングドラフト9は、http://phenix.int−evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC−K1003−v12.zipでダウンロード可能である。
[0046]さらに、HEVC用のマルチビューコーディング拡張と3DV拡張とを作成する作業が進行中である。言い換えれば、VCEGとMPEGとの3Dビデオコーディング共同研究部会(JCT−3V)は、HEVCに基づく3DV規格を開発中であり、規格化作業の一部は、HEVCに基づくマルチビュービデオコーデック(MV−HEVC)、およびHEVCに基づく3Dビデオコーディング(3D−HEVC)についての別の一部の規格化を含む。ビデオエンコーダ20およびビデオデコーダ30は、HEVC規格に対するそのような拡張に従って動作することができる。HEVCのマルチビューコーディング拡張は、MV−HEVCと呼ばれる場合がある。Techら、「MV−HEVCワーキングドラフト1」、JCT3V−A1004、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第1回会合:ストックホルム、スウェーデン、2012年7月16〜20日(以下、「JCT3V−A1004」または「MV−HEVCワーキングドラフト1」)は、MV−HEVCについてのワーキングドラフトを提供する。Techら、「MV−HEVCワーキングドラフト2」、JCT3V−B1004、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第2回会合:上海、中国、2012年10月13〜19日(以下、「MV−HEVCワーキングドラフト2」)は、MV−HEVCについての別のワーキングドラフトを提供する。
[0047]HEVCの3DV拡張は、3D−HEVCと呼ばれる場合がある。Techら、「3D−HEVCテストモデル記述ドラフトのドラフト」、JCT3V−B1005、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第1回会合:ストックホルム、スウェーデン、2012年7月16〜20日(以下、「3D−HEVCテストモデル1」)は、3D−HEVCの参照ソフトウェアならびにワーキングドラフトを記述する。Techら、「3D−HEVCテストモデル記述ドラフト2」、JCT3V−B1005、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第2回会合:上海、中国、2012年10月(以下、「3D−HEVCテストモデル2」)は、3D−HEVCの参照ソフトウェア記述ならびに別のワーキングドラフトを含む。
[0048]ビデオシーケンスは、通常、一連のビデオフレームを含む。ビデオエンコーダ20は、通常、ビデオデータを符号化するために、個々のビデオフレーム内のビデオブロックに対して動作する。本開示は、サンプルの1つまたは複数のブロック(すなち、「サンプルブロック」)のサンプルをコーディングするために使用される、1つまたは複数のサンプルブロックとシンタックス構造とを指すために、「ビデオブロック」または「ブロック」という用語を使用する場合がある。例示的なタイプのブロックには、マクロブロック、マクロブロックパーティション、サブマクロブロック、コーディングユニット、予測ユニット、コーディングツリーブロックなどが含まれ得る。
[0049]ビデオブロックのサンプルブロックは、固定サイズまたは可変サイズを有する場合があり、指定されたコーディング規格に応じてサイズが異なる場合がある。サンプル(すなわち、「サンプル値」)は、ピクセルの色成分(たとえば、ルーマ成分またはクロマ成分)を示すことができる。場合によっては、サンプルは深度値を示すことができる。
[0050]H.264/AVCでは、ピクチャのグループ(GOP)は、一般に、一連の1つまたは複数のビデオフレームを備える。GOPは、GOPに含まれるフレームの数を記述するシンタックスデータを、GOPのヘッダ、GOPの1つもしくは複数のフレームのヘッダ、または他の場所に含む場合がある。各フレームは、それぞれのフレームの符号化モードを記述するフレームシンタックスデータを含む場合がある。
[0051]さらに、H.264/AVCでは、ビデオブロックは、マクロブロック(MB)またはマクロブロックのパーティション(すなわち、マクロブロックパーティション)に対応する場合がある。MBは、3つのサンプルアレイを有するピクチャのルーマサンプルの16×16ブロックおよびクロマサンプルの2つの対応するブロック、またはモノクロームピクチャもしくは3つの個別のカラープレーンを使用してコーディングされるピクチャのサンプルの16×16ブロックである。MBパーティションは、3つのサンプルアレイを有するピクチャに対するインター予測のためのマクロブロックの区分化から得られたルーマサンプルの1つのブロックおよびクロマサンプルの2つの対応するブロック、またはモノクロームピクチャもしくは3つの個別のカラープレーンを使用してコーディングされるピクチャのインター予測のためのマクロブロックの区分化から得られたルーマサンプルの1つのブロックである。H.264/AVCでは、各々のインター予測されたマクロブロックは、4つの異なる方法、すなわち1つの16×16マクロブロックパーティション、2つの16×8マクロブロックパーティション、2つの8×16マクロブロックパーティション、および4つの8×8マクロブロックパーティションで区分化される場合がある。1つのMB内の異なるMBパーティションは、予測方向(すなわち、RefPicList0またはRefPicList1)ごとに異なる参照インデックス値を有する場合がある。
[0052]H.264/AVCにおけるマクロブロックの概念は、HEVCには存在しない。そうではなく、マクロブロックは、一般的な4分木方式に基づく極めて柔軟な階層構造によって置き換えられる。この方式の中で、3タイプのブロック、すなわちコーディングユニット(CU)、予測ユニット(PU)、および変換ユニット(TU)が定義される。CUは領域分割の基本ユニットである。CUの概念はマクロブロックの概念に類似するが、CUは最大サイズに制限されず、CUにより、コンテンツの適応性を向上させるために、4つの等しいサイズのCUへの再帰分割が可能になる。PUはインター/イントラ予測の基本ユニットである。いくつかの例では、PUは、不規則な画像パターンを効果的にコーディングするために、単一のPUの中に複数の任意の形状のパーティションを含むことができる。TUは変換の基本ユニットである。CUのTUは、CUのPUから独立して定義され得る。しかしながら、TUのサイズは、TUが属するCUに限定される。3つの異なる概念へのブロック構造のこの分離は、各々がその役割に従って最適化されることを可能にすることができ、これにより、コーディング効率の改善がもたらされ得る。
[0053]HEVCにおけるピクチャの符号化された表現を生成するために、ビデオエンコーダ20は、コーディングツリーユニット(CTU)のセットを生成することができる。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)と呼ばれる場合もある。CTUの各々は、ルーマサンプルのコーディングツリーブロックと、クロマサンプルの2つの対応するコーディングツリーブロックと、それらのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備える場合がある。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、CTUは、単一のコーディングツリーブロックと、そのコーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備える場合がある。コーディングツリーブロックは、サンプルのN×Nのブロックであり得る。したがって、HEVCのテストモデルは、ビデオフレームまたはピクチャが、ルーマサンプルとクロマサンプルの両方を含む一連のツリーブロックまたはLCUに分割され得ることを記載している。HEVCのCTUは、H.264/AVCなどの他の規格のマクロブロックに広い意味で類似する場合がある。しかしながら、CTUは、必ずしも特定のサイズに限定されるとは限らず、1つまたは複数のCUを含む場合がある。
[0054]HEVCにおいてコード化CTUを生成するために、ビデオエンコーダ20は、コーディングツリーブロックをコーディングブロックに分割するために、CTUのコーディングツリーブロックに対して4分木区分化を再帰的に実行することができ、したがって、「コーディングツリーユニット」という名称がある。言い換えれば、各コーディングツリーブロックは、4分木に従ってCUに分割される場合がある。たとえば、コーディングツリーブロックは、4分木のルートノードとして、4つの子ノードに分割される場合があり、各子ノードは、次に親ノードとなり、別の4つの子ノードに分割される場合がある。最終的な分割されない子ノードは、4分木のリーフノードとして、コーディングノード、すなわち、コード化ビデオブロックを備える。コード化ビットストリームに関連付けられたシンタックスデータは、ツリーブロックが分割され得る最大回数を定義することができ、コーディングノードの最小サイズも定義することができる。
[0055]コーディングブロックは、サンプルのN×Nのブロックである。CUは、ルーマサンプルアレイとCbサンプルアレイとCrサンプルアレイとを有するピクチャのルーマサンプルのコーディングブロックと、クロマサンプルの2つの対応するコーディングブロックと、それらのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備える場合がある。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、CUは、単一のコーディングブロックと、そのコーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備える場合がある。CUのサイズは、一般に、CUのコーディングブロックのサイズに対応し、通常、形状が方形である。CUのサイズは、8×8ピクセルから、64×64ピクセル以上の最大サイズを有するCTUのサイズまで及ぶ場合がある。
[0056]ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに区分化することができる。概して、PUは、予測プロセスに関するデータを含む。CUのPUは、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、それらの予測ブロックを予測するために使用されるシンタックス構造とを備える場合がある。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、PUは、単一の予測ブロックと、その予測ブロックを予測するために使用されるシンタックス構造とを備える場合がある。予測ブロックは、同じ予測が適用されるサンプルの方形(たとえば、M×N、ここでMはNに等しくても等しくなくてもよい)ブロックであり得る。したがって、PUは、形状が非正方形になるように区分化され得る。HEVCおよび他のビデオコーディング規格のコンテキストでは、「ビデオブロック」または「ブロック」という用語は、LCU、CU、またはPUに適用することができる。
[0057]一例として、HEVC用のテストモデルは、様々なPUサイズでの予測をサポートする。特定のCUのサイズが2N×2Nであると仮定すると、HEVC用のテストモデルは、PUサイズが2N×2NまたはN×Nのイントラ予測と、対称のPUサイズが2N×2N、2N×N、N×2N、またはN×Nのインター予測とをサポートする。HEVC用のテストモデルはまた、PUサイズが2N×nU、2N×nD、nL×2N、およびnR×2Nのインター予測のための非対称区分化をサポートする。非対称区分化では、CUの一方向は区分化されないが、他の方向は25%と75%とに区分化される。25%のパーティションに対応するCUの部分は、「n」とその後ろに付く「Up」、「Down」、「Left」、または「Right」という表示によって示される。したがって、たとえば、「2N×nU」は、上部の2N×0.5NのPUおよび下部の2N×1.5NのPUで水平方向に区分化された2N×2NのCUを指す。
[0058]本開示では、たとえば16×16ピクセルまたは16by16ピクセルなどの「N×N」および「NbyN」は、垂直および水平の寸法に関して、ビデオブロックのピクセル範囲を指すために互換的に使用される場合がある。一般に、16×16ブロックは、垂直方向に16個のピクセルを有し(y=16)、水平方向に16個のピクセルを有する(x=16)。同様に、N×Nブロックは、一般に、垂直方向にN個のピクセルを有し、水平方向にN個のピクセルを有し、ここでNは非負整数値を表す。ブロック内のピクセルは行および列で配列され得る。その上、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有する必要はない。たとえば、ブロックはN×Mピクセルを備える場合があり、ここで、Mは必ずしもNに等しいとは限らない。
[0059]ビデオエンコーダ20は、CUの各PUの予測ブロック(たとえば、ルーマ予測ブロック、Cb予測ブロック、およびCr予測ブロック)用の予測ブロック(たとえば、ルーマブロック、Cbブロック、およびCrブロック)を生成することができる。したがって、本開示では、CUは、1つまたは複数のPUに区分化されると言うことができる。説明を簡単にするために、本開示は、PUの予測ブロックのサイズを単にPUのサイズと呼ぶ場合がある。CUに関連付けられたシンタックスデータは、たとえば、CUを1つまたは複数のPUに区分化することを記述することができる。区分化モードは、CUが、スキップモードもしくは直接モードで符号化されるか、イントラ予測モードで符号化されるか、またはインター予測モードで符号化されるかによって異なる場合がある。
[0060]いくつかの例では、MB、MBパーティション、CU、PUなどのビデオブロックがスキップモードでコーディングされるとき、ビデオブロックについて残差データはシグナリングされない。たとえば、H.264/AVCでは、スキップされたMBは、MBが「スキップされた」として復号されるべきであるという指示以外でデータがコーディングされないMBである。いくつかの例では、直接モードを使用してビデオブロックがコーディングされるとき、ビデオブロックについて動きベクトルはコーディングされない。たとえば、H.264/AVCでは、直接予測は、動きベクトルが復号されないブロック(すなわち、サンプルのM×Nアレイ)についてのインター予測である。
[0061]ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分化される場合がある。スライスは、ラスタ走査順序などのコーディング順序で連続的に順序付けられた整数個のビデオブロックを含む場合がある。H.264/AVCでは、スライスは、コーディング順序で連続的に順序付けられた整数個のマクロブロックを含む場合がある。HEVCでは、スライスは、コーディング順序で連続的に順序付けられた整数個のCTUを含む場合がある。ピクチャの各スライスは、それぞれのスライスのための符号化モードを記述するスライスシンタックスデータを含む場合がある。コード化スライスは、スライスヘッダとスライスデータとを備える場合がある。スライスのスライスヘッダは、スライスについての情報を提供するシンタックス要素を含むシンタックス構造であり得る。スライスデータはスライスのコード化ビデオブロックを含む場合がある。ビデオエンコーダ20は、通常、ビデオデータを符号化するために、個々のスライス(すなわち、「ビデオスライス」)内のビデオブロックに対して動作する。
[0062]ビデオコーディング規格は様々なタイプのスライスを定義する。たとえば、H.264/AVCおよびHEVCは、Iスライスと、Pスライスと、Bスライスとを定義する。一般に、Iスライスはイントラ予測のみを使用して復号されるスライスである。一般に、Pスライスは、各ブロックのサンプル値を予測するために、最大1つの動きベクトルと1つの参照インデックスとを使用するイントラ予測またはインター予測を使用して復号され得るスライスである。一般に、Bスライス(すなわち、b−予測スライス)は、各ブロックのサンプル値を予測するために、最大2つの動きベクトルと参照インデックスとを使用するイントラ予測またはインター予測を使用して復号され得るスライスである。さらに、H.264/AVCは、SIスライスおよびSPスライスなどのさらなるスライスタイプを定義する。SIスライスは、イントラ予測のみを使用し、予測サンプルの量子化を使用してコーディングされるスライスである。したがって、H.264/AVCでは、Iスライスは、イントラ予測のみを使用して復号される、SIスライスではないスライスである。SPスライスは、各ブロックのサンプル値を予測するために、最大1つの動きベクトルと参照インデックスとを使用する予測サンプルの量子化を用いるイントラ予測またはインター予測を使用してコーディングされ得るスライスである。したがって、H.264/AVCでは、Pスライスは、各ブロックのサンプル値を予測するために、最大1つの動きベクトルと1つの参照インデックスとを使用するイントラ予測またはインター予測を使用して復号され得るSPスライスではないスライスである。
[0063]ビデオエンコーダ20が現在ビデオブロックを符号化するとき、ビデオエンコーダ20は、現在ビデオブロックに対応する予測ブロックを生成することができる。ビデオエンコーダ20は、予測ブロックを生成するためにイントラ予測またはインター予測を実行することができる。たとえば、ビデオエンコーダ20は、インター予測またはイントラ予測を使用してマクロブロックを符号化することができる。ビデオエンコーダ20が現在ビデオブロックについてイントラ予測を実行するとき、ビデオエンコーダ20は、現在ビデオブロックと同じピクチャ内のサンプルに基づいて、現在ビデオブロック用の予測ブロックを生成することができる。たとえば、ビデオエンコーダ20がイントラ予測を使用してマクロブロックを符号化するとき、ビデオエンコーダ20は、現在ピクチャ内のサンプルに基づいて、マクロブロック用の1つまたは複数の予測ブロックを生成することができる。イントラ予測を使用して符号化されたマクロブロックは、イントラマクロブロックと呼ばれる場合がある。H.264は9個のイントラ予測符号化モードを提供するが、HEVCは33個ものイントラ予測符号化モードを提供することができる。たとえば、PUがイントラモードで符号化されるとき、PUは、PUについてのイントラ予測モードを記述するデータを含む場合がある。
[0064]ビデオエンコーダ20が、現在ビデオブロック用の予測ブロックを生成するためにインター予測を実行するとき、ビデオエンコーダ20は、1つまたは複数の参照ピクチャ内のサンプルに基づいて予測ブロックを生成することができる。参照ピクチャは、現在ビデオブロックを含んでいるピクチャ以外のピクチャであり得る。
[0065]H.264/AVCのコンテキストでは、ビデオエンコーダ20がインター予測を使用してマクロブロックを符号化するとき、ビデオエンコーダ20は、現在ピクチャ以外の1つまたは複数のピクチャ(すなわち、マクロブロックを含んでいるピクチャ)のサンプルに基づいて、マクロブロック用の1つまたは複数の予測ブロックを生成する。インター予測を使用して符号化されたマクロブロックは、インターマクロブロックと呼ばれる場合がある。
[0066]HEVCのコンテキストでは、PUがインターモードで符号化されるとき、PUは、PU用の動きベクトルを定義するデータを含む場合がある。PU用の動きベクトルを定義するデータは、たとえば、予測方向によって示され得る、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトル用の参照ピクチャリスト(たとえば、リスト0、リスト1、もしくはリストC)を記述することができる。
[0067]ビデオエンコーダ20が、現在ビデオブロック用の予測ブロックを生成した後、ビデオエンコーダ20は、現在ビデオブロック用の残差ブロックを生成することができる。残差ブロック内の各サンプルは、現在ビデオブロックのルーマブロックまたはクロマブロック内の対応するサンプルと、現在ビデオブロック用の予測ブロックとの間の差分に基づく場合がある。たとえば、HEVCのコンテキストでは、残差データは、符号化されていないピクチャのピクセルと、CUに対応する予測値との間のピクセル差分に対応する場合がある。ビデオエンコーダ20は、変換係数ブロックを生成するために、残差ブロックのサンプルに変換を適用することができる。ビデオエンコーダ20は、残差ブロックに様々な変換を適用することができる。たとえば、HEVCのコンテキストでは、CUのPUを使用するイントラ予測コーディングまたはインター予測コーディングに続いて、ビデオエンコーダ20は、CUのTUによって指定された変換が適用される残差データを計算することができる。言い換えれば、ビデオエンコーダ20は、CU用の残差データを形成し、次いで、変換係数を生成するために残差データを変換することができる。いくつかの例では、ビデオエンコーダ20は、離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換などの変換を残差ブロックに適用することができる。
[0068]ビデオエンコーダ20は、現在ビデオブロックを表すために使用されるビット数をさらに低減するために、変換係数ブロックを量子化することができる。変換係数を生成する任意の変換に続いて、ビデオエンコーダ20は、変換係数の量子化を実行することができる。量子化は、一般に、係数を表すために使用されるデータの量をできるだけ低減するために、変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。量子化プロセスは、係数の一部または全部に関連付けられたビット深度を低減することができる。たとえば、量子化中にnビット値がmビット値に切り捨てられる場合があり、ここで、nはmよりも大きい。
[0069]いくつかの例では、ビデオエンコーダ20は、変換係数ブロックを量子化した後、量子化変換成分の1次元ベクトル(すなわち、直列化ベクトル)を形成するために、量子化変換係数を走査することができる。いくつかの例では、ビデオエンコーダ20は、量子化変換係数を走査して直列化されたベクトルを生成するために、あらかじめ定義された走査順序を利用することができる。他の例では、ビデオエンコーダ20は適応型走査を実行することができる。量子化変換係数を表すシンタックス要素は、エントロピー符号化され得る。言い換えれば、1次元ベクトルを形成するために量子化変換係数を走査した後、ビデオエンコーダ20は、1次元ベクトルをエントロピー符号化することができる。
[0070]HEVC規格により、異なるCUについて異なり得るTUに従う変換が可能になる。一般に、TUは、変換プロセスおよび量子化プロセスのために使用される。1つまたは複数のPUを有する所与のCUは、1つまたは複数のTUを含む場合もある。予測に続いて、ビデオエンコーダ20は、PUに従ってコーディングノードによって識別されたビデオブロックから残差値を計算することができる。コーディングノードは、次いで、元のビデオブロックではなく残差値を参照するように更新される。残差値はピクセル差分値を備える場合があり、ピクセル差分値は、エントロピーコーディングのための直列化変換係数を生成するためにTU内で指定された変換と他の変換情報とを使用して変換係数に変換され、量子化され、走査される場合がある。コーディングノードは、これらの直列化変換係数を指すようにもう一度更新される場合がある。
[0071]ビデオエンコーダ20は、変換係数ブロック内の変換係数を表すシンタックス要素と、現在ビデオブロックに関連付けられた他のシンタックス要素とをエントロピー符号化することができる。たとえば、ビデオエンコーダ20は、シンタックス要素に対して、コンテキスト適応型バイナリ算術コーディング(CABAC)、コンテキスト適応型可変長コーディング(CAVLC)、指数ゴロムコーディング、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分化エントロピー(PIPE)、または別のタイプのエントロピー符号化を実行することができる。ビデオエンコーダ20は、エントロピー符号化シンタックス要素と、現在ビデオブロックに関連付けられた他のシンタックス要素とを含むビットストリームを出力することができる。
[0072]HEVCでは、ビデオエンコーダ20は、CUの1つまたは複数の残差ブロック(たとえば、CUのルーマ残差ブロック、Cb残差ブロック、およびCr残差ブロック)を、1つまたは複数の変換ブロック(たとえば、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロック)に分解するために、4分木区分化を使用することができる。変換ブロックは、同じ変換が適用されるサンプルの矩形(たとえば、正方形または非正方形)ブロックである。CUのTUは、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、それらの変換ブロックサンプルを変換するために使用されるシンタックス構造とを備える場合がある。したがって、CUの各TUは、ルーマ変換ブロック、Cb変換ブロック、およびCr変換ブロックに関連付けられる場合がある。TUに関連付けられたルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであり得る。Cb変換ブロックはCUのCb残差ブロックのサブブロックであり得る。Cr変換ブロックはCUのCr残差ブロックのサブブロックであり得る。3つの別個のカラープレーンを有する1つまたは複数のモノクロームピクチャでは、TUは、単一の変換ブロックと、その変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備える場合がある。このようにして、CUに対応する残差サンプルは、「残差4分木」(RQT)として知られる4分木構造を使用して、より小さいユニットに再分割される場合がある。RQTのリーフノードはTUと呼ばれる場合がある。CUに関連付けられたシンタックスデータは、たとえば、4分木に従ってCUを1つまたは複数のTUに区分化することも記述することができる。
[0073]いくつかの例では、区分化LCUについて定義されたCUのTUは、CUのPUのサイズに基づいてサイズが決定されるが、いつもこうであるとは限らない。いくつかの例では、TUは、PUと同じサイズであるか、またはPUよりも小さい。
[0074]さらに、HEVCでは、ビデオエンコーダ20は、TU用の係数ブロックを生成するために、TUの変換ブロックに1回または複数回の変換を適用することができる。係数ブロックは変換係数の2次元アレイであり得る。たとえば、ビデオエンコーダ20は、TU用のルーマ係数ブロックを生成するために、TUのルーマ変換ブロックに1回または複数回の変換を適用することができる。変換係数はスカラー量であり得る。ビデオエンコーダ20は、TU用のCb係数ブロックを生成するために、TUのCb変換ブロックに1回または複数回の変換を適用することができる。ビデオエンコーダ20は、TU用のCr係数ブロックを生成するために、TUのCr変換ブロックに1回または複数回の変換を適用することができる。このようにして、TUに関連付けられたピクセル差分値は、変換係数を生成するために変換され得るし、その変換係数は量子化され得る。
[0075]ビットストリームは、コード化ピクチャおよび関連データの表現を形成する一連のビットを含む場合がある。ビットストリームは、一連のネットワークアブストラクションレイヤ(NAL)ユニットを備える場合がある。NALユニットの各々は、NALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP)をカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含む場合がある。NALユニットのNALユニットヘッダによって指定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを含んでいるシンタックス構造であり得る。いくつかの例では、RBSPはゼロビットを含む。
[0076]異なるタイプのNALユニットは、異なるタイプのRBSPをカプセル化することができる。たとえば、第1のタイプのNALユニットはピクチャパラメータセット(PPS)用のRBSPをカプセル化することができ、第2のタイプのNALユニットはコード化スライス用のRBSPをカプセル化することができ、第3のタイプのNALユニットは補足エンハンスメント情報(SEI)用のRBSPをカプセル化することができ、以下同様である。(パラメータセット用およびSEIメッセージ用のRBSPではなく)ビデオコーディングデータ用のRBSPをカプセル化するNALユニットは、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれる場合がある。コード化スライスをカプセル化するNALユニットは、コード化スライスNALユニットと呼ばれる場合がある。
[0077]ビデオデコーダ30は、ビデオデータの符号化表現を含むビットストリームを受信することができる。ビデオデコーダ30は、ビットストリームからシンタックス要素を抽出するために、ビットストリームを構文解析することができる。ビットストリームからシンタックス要素を抽出することの一部として、ビデオデコーダ30は、ビットストリームの部分をエントロピー復号することができる。ビデオデコーダ30は、現在ビデオブロック(たとえば、MBまたはMBパーティションなど)に関連付けられたシンタックス要素に少なくとも部分的に基づいて、予測ブロックを生成するためにインター予測またはイントラ予測を実行することができる。加えて、ビデオデコーダ30は、残差ブロックを生成するために、変換係数ブロックの変換係数を逆量子化することができ、変換係数ブロックに1つまたは複数の逆変換を適用することができる。次いで、ビデオデコーダ30は、残差ブロックおよび予測ブロックに少なくとも部分的に基づいて、現在ビデオブロックのルーマブロックとクロマブロックとを復元することができる。このようにして、ピクチャの各ビデオブロックのルーマブロックとクロマブロックとを復元することによって、ビデオデコーダ30はピクチャを復元することができる。
[0078]上述されたように、ビデオエンコーダ20は、特定のビデオブロック用の予測ブロックを生成するために、インター予測を実行することができる。より詳細には、ビデオエンコーダ20は、予測ブロックを生成するために、単方向インター予測または双方向インター予測を実行することができる。
[0079]ビデオエンコーダ20が現在ビデオブロック(たとえば、MB、MBパーティション、PUなど)について単方向インター予測を実行するとき、ビデオエンコーダ20は、単一の参照ピクチャリスト(たとえば、「リスト0」または「RefPicList0」)の中の参照ピクチャ内の参照ブロックを探索することができる。参照ブロックは、現在ビデオブロックのルーマブロックおよびクロマブロックに類似するルーマサンプルの1つのブロックとクロマサンプルの複数の対応するブロックであり得る。さらに、ビデオエンコーダ20が単方向インター予測を実行するとき、ビデオエンコーダ20は、特定のビデオブロックについての動き情報を生成することができる。特定のビデオブロックについての動き情報は、動きベクトルと参照インデックスとを含む場合がある。動きベクトルは、現在ビデオブロックのサンプルブロックの現在ピクチャ内の位置と、参照ブロックの参照ピクチャ内の位置との間の空間変位を示すことができる。参照インデックスは、参照ブロックを含んでいる参照ピクチャの参照ピクチャリスト内の位置を示す。現在ビデオブロック用の予測ブロック内のサンプルは、参照ブロック内の対応するサンプルに等しい場合がある。
[0080]ビデオエンコーダ20が現在ビデオブロック(たとえば、MB、MBパーティション、PUなど)について双方向インター予測を実行するとき、ビデオエンコーダ20は、第1の参照ピクチャリスト(「リスト0」または「RefPicList0」)の中の参照ピクチャ内の第1の参照ブロックを探索することができ、第2の参照ピクチャリスト(「リスト1」または「RefPicList1」)の中の参照ピクチャ内の第2の参照ブロックを探索することができる。ビデオエンコーダ20は、第1の参照ブロックおよび第2の参照ブロックに少なくとも部分的に基づいて、現在ビデオブロック用の予測ブロックを生成することができる。加えて、ビデオエンコーダ20は、現在ビデオブロックのサンプルブロックと第1の参照ブロックとの間の空間変位を示す第1の動きベクトルを生成することができる。ビデオエンコーダ20はまた、第1の参照ブロックを含んでいる参照ピクチャの第1の参照ピクチャリスト内の位置を識別する第1の参照インデックスを生成することができる。さらに、ビデオエンコーダ20は、現在ビデオブロックのブロックと第2の参照ブロックとの間の空間変位を示す第2の動きベクトルを生成することができる。ビデオエンコーダ20はまた、第2の参照ブロックを含んでいる参照ピクチャの第2の参照ピクチャリスト内の位置を識別する第2の参照インデックスを生成することができる。
[0081]ビデオエンコーダ20が現在ビデオブロック(たとえば、MB、MBパーティション、PUなど)について単方向インター予測を実行するとき、ビデオデコーダ30は、現在ビデオブロックの参照ブロックを識別するために、現在ビデオブロックの動き情報を使用することができる。次いで、ビデオデコーダ30は、現在ビデオブロックの参照ブロックに基づいて、現在ビデオブロック用の予測ブロックを生成することができる。ビデオエンコーダ20が現在ビデオブロックについて双方向インター予測を実行するとき、ビデオデコーダ30は、現在ビデオブロックの2つの参照ブロックを識別するために、現在ビデオブロック用の動き情報を使用することができる。ビデオデコーダ30は、現在ビデオブロックの2つの参照ブロックに基づいて、現在ビデオブロックの予測ブロックを生成することができる。
[0082]H.264/AVCでは、MBが4つの8×8MBパーティションに区分化されないとき、MBはMBパーティション全体について各予測方向(すなわち、RefPicList0またはRefPicList1)に1つの動きベクトルしか有していない場合がある。MBが4つの8×8MBパーティションに区分化されたとき、各8×8MBパーティションはサブブロックにさらに区分化され得る。8×8MBパーティションから、1つの8×8サブブロック、2つの8×4サブブロック、2つの4×8サブブロック、または4つの4×4サブブロックに、サブブロックを区分化する4つの異なる方法がある。各サブブロックは、予測方向ごとに異なる動きベクトルを有することができる。8×8MBパーティションがサブブロックに区分化される方式は、サブブロックパーティションと呼ばれる場合がある。
[0083]マルチビュービデオコーディング(MVC)は、H.264/AVCの拡張である。マルチビューコーディングでは、異なる視点からの同じシーンの複数のビューがあり得る。マルチビューコーディングのコンテキストでは、「アクセスユニット」という用語は、同じ時間インスタンスに対応するピクチャのセットを指す場合がある。したがって、ビデオデータは、時間とともに生じる一連のアクセスユニットとして概念化され得る。
[0084]マルチビューコーディングでは、ビットストリームは複数のレイヤを有する場合がある。レイヤの各々は異なるビューに対応する場合がある。マルチビューコーディングでは、ビデオデコーダ(たとえば、ビデオデコーダ30)が、あるビューの中のピクチャを任意の他のビューの中のピクチャと無関係に復号することができる場合、そのビューは「ベースビュー」と呼ばれる場合がある。ビューは、ビューの復号が1つまたは複数の他のビューの中のピクチャの復号に依存する場合、非ベースビューと呼ばれる場合がある。
[0085]図2は、マルチビューコーディングのための例示的な予測構造を示す概念図である。マルチビュービデオコーディングのための(各ビュー内のピクチャ間予測とビュー間予測の両方を含む)典型的なMVC予測構造が図2に示され、ここで、予測は矢印によって示され、矢印の終点のオブジェクトは、予測参照のために矢印の始点のオブジェクトを使用する。
[0086]図2のマルチビュー予測構造は、時間予測とビュー間予測とを含む。図2の例では、各正方形がビューコンポーネントに対応する。図2の例では、アクセスユニットがT0〜T11と標示され、ビューがS0〜S7と標示される。「I」と標示される正方形は、イントラ予測されたビューコンポーネントである。「P」と標示される正方形は、単方向インター予測されたビューコンポーネントである。「B」および「b」と標示される正方形は、双方向インター予測されたビューコンポーネントである。「b」と標示される正方形は、「B」と標示される正方形を参照ピクチャとして使用することができる。第1の正方形から第2の正方形を指す矢印は、第1の正方形が、インター予測において、第2の正方形のための参照ピクチャとして利用可能であることを示す。図2の垂直の矢印によって示されたように、同じアクセスユニットの異なるビュー内のビューコンポーネントは、参照ピクチャとして利用可能であり得る。アクセスユニットの1つのビューコンポーネントを同じアクセスユニットの別のビューコンポーネントのための参照ピクチャとして使用することは、ビュー間予測と呼ばれる場合がある。
[0087]MVCでは、ビュー間予測は、ビューの間の相関を取り除くために、同じアクセスユニット(すなわち、同じ時間インスタンス内)の異なるビューの中でキャプチャされたピクチャの間で実行される。ビュー間予測を用いてコーディングされたピクチャは、他の非ベースビューのビュー間予測用の参照ピクチャリストの中に追加される場合がある。ビュー間予測参照ピクチャは、インター予測参照ピクチャと同様の方法で、参照ピクチャリストの任意の位置に置かれ得る。
[0088]マルチビュービデオコーディングのコンテキストでは、2種類の動きベクトルが存在する。動きベクトルの1つの種類は、時間参照ピクチャ(すなわち、現在ピクチャとは異なる時間インスタンス内のピクチャ)を指す通常の動きベクトルである。通常の時間動きベクトルに対応するインター予測のタイプは、「動き補償予測」または「MCP」と呼ばれる場合がある。ビュー間予測参照ピクチャが動き補償に使用されるとき、対応する動きベクトルは、「視差動きベクトル」と呼ばれる場合がある。言い換えると、視差動きベクトルは、異なるビューの中のピクチャ(すなわち、視差参照ピクチャまたはビュー間参照ピクチャ)を指す。視差動きベクトルに対応するインター予測のタイプは、「視差補償予測」または「DCP」と呼ばれる場合がある。
[0089]図3は、例示的なマルチビュー復号順序を示す概念図である。言い換えれば、典型的なMVC復号順序(すなわち、ビットストリーム順序)が図3に示されている。復号順序の構成は、時間優先コーディングと呼ばれる。アクセスユニットの復号順序は出力または表示の順序と同じでない場合があることに留意されたい。図3では、S0〜S7は、各々マルチビュービデオの異なるビューを指す。T1〜T9は、各々1つの出力時間インスタンスを表す。アクセスユニットは、1つの出力時間インスタンスについてのすべてのビューのコード化ピクチャを含む場合がある。たとえば、第1のアクセスユニットは時間インスタンスT1についてのビューS0〜S7のすべてを含む場合があり、第2のアクセスユニットは時間インスタンスT2についてのビューS0〜S7のすべてを含む場合があり、以下同様である。
[0090]以下のセクションは、概して、マルチビュービデオコーディングと3Dビデオコーディングとを説明する。マルチビュービデオコーディングおよび3Dビデオコーディングのコンテキストでは、「ビューコンポーネント」は、単一のアクセスユニット内のビューのコード化表現であり得る。ビューがコード化テクスチャ表現とコード化深度表現の両方を含むとき、ビューコンポーネントは、テクスチャビューコンポーネントと深度ビューコンポーネントとを備える(たとえば、それらから構成される)場合がある。したがって、各テクスチャビューコンポーネントは、対応する深度ビューコンポーネントを有する場合がある。一般に、テクスチャビューコンポーネントはビデオコンテンツ(たとえば、ピクセル値のルーマ成分およびクロマ成分)を含み、深度ビューコンポーネントはテクスチャビューコンポーネント内のピクセルの相対深度を示すことができる。したがって、ビューごとの複数のビデオピクチャは、テクスチャビューコンポーネントと呼ばれる場合がある。本開示では、「ビュー」は、同じビュー識別子に関連付けられた一連のビューコンポーネントを指す場合がある。
[0091]より詳細には、テクスチャビューコンポーネント(すなわち、テクスチャピクチャ)は、単一のアクセスユニット内のビューのテクスチャのコード化表現であり得る。テクスチャビューコンポーネントは、表示される実際の画像コンテンツを含む。たとえば、テクスチャビューコンポーネントは、ルーマ(Y)成分と、クロマ(CbおよびCr)成分とを含む場合がある。テクスチャビューは、ビュー順序インデックスの同一の値に関連付けられた一連のテクスチャビューコンポーネントであり得る。ビューのビュー順序インデックスは、他のビューに対するビューのカメラ位置を示すことができる。
[0092]本開示の技法は、テクスチャデータと深度データとをコーディングすることによって3Dビデオデータをコーディングすることに関する。一般に、「テクスチャ」という用語は、画像のルミナンス(すなわち、輝度または「ルーマ」)値と画像のクロミナンス(すなわち、色または「クロマ」)値とを記述するために使用される。いくつかの例では、テクスチャ画像は、1セットのルミナンスデータと、青色相(Cb)および赤色相(Cr)のための2セットのクロミナンスデータとを含む場合がある。4:2:2または4:2:0などの特定のクロマサンプリングフォーマットでは、クロマデータは、ルーマデータに対してダウンサンプリングされる。すなわち、クロミナンスピクセルの空間解像度は、対応するルミナンスピクセルの空間解像度よりも低く、たとえば、ルミナンス解像度の1/2または1/4であり得る。
[0093]深度ビューコンポーネント(すなわち、深度ピクチャ)は、単一のアクセスユニットの中のビューの深度のコード化表現であり得る。深度ビューは、ビュー順序インデックスの同一の値に関連付けられた一連の深度ビューコンポーネントであり得る。深度ビューコンポーネントは、その対応するテクスチャビューコンポーネント内のピクセルの相対深度を示すことができる。一例として、深度ビューコンポーネントは、ルーマ値のみを含むグレースケール画像である。言い換えれば、深度ビューコンポーネントは、任意の画像コンテンツを伝達するのではなく、むしろテクスチャビューコンポーネント内のピクセルの相対深度の測定値を提供することができる。
[0094]いくつかの例では、深度ビューコンポーネント内の純白のピクセルは、対応するテクスチャビューコンポーネント内のその対応する1つまたは複数のピクセルが閲覧者から見てより近いことを示し、深度ビューコンポーネント内の純黒のピクセルは、対応するテクスチャビューコンポーネント内のその対応する1つまたは複数のピクセルが閲覧者から見てより遠いことを示す。黒と白との中間にあるグレーの様々な色合いは、様々な深度レベルを示す。たとえば、深度ビューコンポーネント内の濃いグレーのピクセルは、テクスチャビューコンポーネント内のその対応するピクセルが、深度ビューコンポーネント内の薄いグレーのピクセルよりも遠いことを示す。ピクセルの深度を識別するためにグレースケールのみが必要とされるので、深度ビューコンポーネント用の色値がいかなる目的も果たし得ないことから、深度ビューコンポーネントはクロマ成分を含む必要がない。深度を識別するためにルーマ値(たとえば、強度値)のみを使用する深度ビューコンポーネントは、説明のために提供され、限定するものと見なされるべきではない。他の例では、テクスチャビューコンポーネント内のピクセルの相対深度を示すために任意の技法が利用される場合がある。
[0095]深度データは、一般に、対応するテクスチャデータ用の深度値を記述する。たとえば、深度画像は、各々が対応するテクスチャデータ用の深度を記述する深度ピクセルのセットを含む場合がある。深度データは、対応するテクスチャデータ用の水平視差を決定するために使用され得る。したがって、テクスチャデータと深度データとを受信するデバイスは、一方のビュー(たとえば、左眼ビュー)のための第1のテクスチャ画像を表示し、深度値に基づいて決定された水平視差値だけ第1の画像のピクセル値をオフセットすることによって、他方のビュー(たとえば、右眼ビュー)のための第2のテクスチャ画像を生成するように第1のテクスチャ画像を修正するために、深度データを使用することができる。一般に、水平視差(または単に「視差」)は、第1のビュー内のピクセルの第2のビュー内の対応するピクセルに対する水平空間オフセットを記述し、ここで、2つのピクセルは、2つのビュー内で表される同じオブジェクトの同じ部分に対応する。
[0096]さらに他の例では、画像プレーンに直交するz次元におけるピクセルについて深度データが定義され得るし、その結果、画像について定義されたゼロ視差プレーンに対して、所与のピクセルに関連付けられた深度が定義される。そのような深度は、ピクセルを表示するための水平視差を作成するために使用され得るし、その結果、ピクセルは、ゼロ視差プレーンに対するピクセルのz次元深度値に応じて、左眼と右眼で異なるように表示される。ゼロ視差プレーンはビデオシーケンスの異なる部分に対して変化する場合があり、ゼロ視差プレーンに対する深度の量も変化する場合がある。ゼロ視差プレーン上に位置するピクセルは、左眼および右眼に対して同様に定義され得る。ゼロ視差プレーンの前に位置するピクセルは、ピクセルが画像プレーンに直交するz方向の画像から出てくるように見える知覚を作成するように、(たとえば、水平視差を用いて)左眼と右眼に対して異なる位置で表示され得る。ゼロ視差プレーンの後に位置するピクセルは、深度のわずかな知覚を提示するために、わずかなぼかしとともに表示され得るか、または(たとえば、ゼロ視差プレーンの前に位置するピクセルの水平視差とは反対の水平視差を用いて)左眼と右眼に対して異なる位置で表示され得る。画像用の深度データを伝達または定義するために、他の多くの技法が使用される場合もある。
[0097]深度ビューコンポーネント内のピクセルごとに、テクスチャビューコンポーネント内の1つまたは複数の対応するピクセルがあり得る。たとえば、深度ビューコンポーネントの空間解像度とテクスチャビューコンポーネントの空間解像度が同じである場合、深度ビューコンポーネント内の各ピクセルは、テクスチャビューコンポーネント内の1つのピクセルに対応する。深度ビューコンポーネントの空間解像度がテクスチャビューコンポーネントの空間解像度よりも小さい場合、深度ビューコンポーネント内の各ピクセルは、テクスチャビューコンポーネント内の複数のピクセルに対応する。深度ビューコンポーネント内のピクセルの値は、テクスチャビュー内の対応する1つまたは複数のピクセルの相対深度を示すことができる。
[0098]いくつかの例では、ビデオエンコーダは、ビューの各々についてテクスチャビューコンポーネントおよび対応する深度ビューコンポーネント用のビデオデータをシグナリングする。ビデオデコーダ30は、表示用にビューのビデオコンテンツを復号するために、テクスチャビューコンポーネントと深度ビューコンポーネントの両方のビデオデータを利用することができる。次いで、ディスプレイは、3Dビデオを生成するためにマルチビュービデオを表示する。
[0099]図3に戻ると、ビューの各々はピクチャのセットを含む。たとえば、ビューS0は、ピクチャ0、8、16、24、32、40、48、56、および64のセットを含み、ビューS1は、ピクチャ1、9、17、25、33、41、49、57、および65のセットを含み、以下同様である。各セットは2つのピクチャを含み、一方のピクチャはテクスチャビューコンポーネントと呼ばれ、他方のピクチャは深度ビューコンポーネントと呼ばれる。ビューのピクチャのセット内のテクスチャビューコンポーネントと深度ビューコンポーネントは、互いに対応すると見なされ得る。たとえば、ビューのピクチャのセット内のテクスチャビューコンポーネントは、そのビューのピクチャのセット内の深度ビューコンポーネントに対応すると見なされ、その逆も同様である(すなわち、深度ビューコンポーネントはセット内のそのテクスチャビューコンポーネントに対応し、その逆も同様である)。本開示で使用する、深度ビューコンポーネントに対応するテクスチャビューコンポーネントは、単一のアクセスユニットの同じビューの一部であるテクスチャビューコンポーネントおよび深度ビューコンポーネントと見なされ得る。
[0100]本開示の次のセクションは、AVCベース3Dビデオコーディング規格(すなわち、3D−AVC)を説明する。3D−AVCにおけるビューコンポーネントのコーディング順序が以下に説明される。ベースビューのテクスチャ部分がH.264/AVCデコーダに対して完全に復号可能であるように、3D−AVCはH.264/AVCと互換性がある。3D−AVCにおける強化されたビューコンポーネントの場合、深度はテクスチャより前にコーディングされ得るし、テクスチャビューコンポーネントは、深度ビューコンポーネントからの情報に基づいてコーディングされ得るし、これは深度優先コーディングとして知られている。対照的に、テクスチャ優先コーディング順序では、各テクスチャビューコンポーネントは、それぞれの深度ビューコンポーネントの前にコーディングされる。たとえば、3D−AVCにおけるテクスチャビューコンポーネントと深度ビューコンポーネントのコーディング順序は、以下のように例示され得る:ここにおいて、T0およびD0は、それぞれベースビューのテクスチャビューコンポーネントおよび深度ビューコンポーネントを指し、TiおよびDiは、それぞれi番目の従属ビューのテクスチャビューコンポーネントおよび深度ビューコンポーネントを指す。以下の例では、3つのビューが存在する。
− T0 D0 D1 D2 T1 T2:ベースビュー(T0およびD0)がテクスチャ優先コーディング順序でコーディングされ、従属ビューが深度優先コーディング順序でコーディングされる。ハイブリッドコーディング順序は、現在、3D−AVCの通常のテスト条件で使用されている。
− T0 D0 T1 D1 T2 D2:すべてのビューコンポーネントがテクスチャ優先コーディング順序でコーディングされる。
[0101]ビュー間予測がTiに対して有効である場合、参照テクスチャビューは、ビュー間参照ピクチャを含むビューとして定義され、対応する深度ビューは、参照テクスチャビューのビュー順序インデックスと同じビュー順序インデックスを有する参照深度ビューとして定義される。
[0102]ビデオコーダは、2つのビューの間の視差の推定器として視差ベクトル(DV)を使用することができる。隣接ブロックはビデオコーディングにおいてほとんど同じ動き/視差情報を共有するので、現在ブロックは、良好な予測子として隣接ブロックにおける動きベクトル情報を使用することができる。深度マップを介した3D−AVC視差ベクトル導出が次に説明される。視差ベクトルを導出するための技法は、低レベルコーディングツールごとに異なる場合があるが、通常、深度優先コーディング順序のおかげで、テクスチャビューコンポーネントのコーディングに従属ビューの深度データが利用される。
[0103]3D−AVCにおけるインループブロックベースビュー合成ビュー間予測(BVSP)および深度ベース動きベクトル予測(D−MVP)は、主に、従属フレーム内の深度マップの深度値から変換された視差ベクトルを使用する低レベルコーディングツールである。通常、3D−AVCソフトウェアでは、実際の深度マップ値から特定のビューに対する特定のビューに対する視差への変換プロセスの結果は、カメラパラメータを有する参照テーブルに記憶される。
[0104]BVSPは3D−AVCにおいて有効にされ得る。BVSPは、当初、Suら、「3DV−CE1.a:3DV−ATM向けのブロックベースビュー合成予測」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第1回会合:ストックホルム、スウェーデン、2012年7月16〜20日、文書JCT3V−A0107(以下、「JCT3V−A0107」)で提案され、JCT3V−A0107は、2014年3月3日時点で、以下のリンクからダウンロード可能である:http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/1_Stockholm/wg11/JCT3V−A0107−v1.zip。
[0105]図4は、バックワードワーピングに基づくBVSPの例示的な概念の可視化である。図4を参照すると、以下のコーディング順序が利用されると仮定する:(T0、D0、D1、T1)。テクスチャコンポーネントT0はベースビューであり、T1はVSPでコーディングされる従属ビューである。深度マップコンポーネントD0およびD1は、T0およびT1に関連付けられたそれぞれの深度マップである。
[0106]従属ビューT1において、現在ブロックCbのサンプル値は、ベースビューT0のサンプル値からなる参照エリアR(Cb)から予測される。コード化サンプルと参照サンプルとの間の変位ベクトルは、現在コーディングされているテクスチャサンプルに関連付けられた深度マップ値から、T1とT0との間の導出視差ベクトルとして表記される。
[0107]いくつかの例では、ビデオコーダは、深度値から視差ベクトルへの変換のプロセスを実行するために、以下の式を使用することができる。
ここで、jおよびiはCb内のローカル空間係数であり、d(Cb(j,i))はビュー#1の深度マップ画像内の深度マップ値であり、Zはd(Cb(j,i))の実際の深度値であり、Dは特定のビュー#0に対する導出視差ベクトルの水平成分である。パラメータf、b、Znear、およびZfarは、カメラのセットアップを指定するパラメータ、すなわち、使用される焦点距離(f)、ビュー#1とビュー#0との間のカメラ分離(b)、および深度範囲(Znear、Zfar)であり、深度マップ変換のパラメータを表す。
[0108]いくつかの例では、導出視差ベクトルの垂直成分は、常に0に等しく設定される。3D−AVCの現在の実装形態(すなわち、3DV−ATMの実装形態)では、式(1)および(2)は、深度マップ値(0〜255)ごとにすでに事前計算され、参照テーブルとして記憶されている。したがって、ビデオコーダは、上記に提供された式(1)と(2)とを計算することなく深度値を視差ベクトルに変換するために、参照テーブルを使用することができる。
[0109]BVSPに関する1つの実装問題は、BVSPブロックの指示に関与する。いくつかの例では、BVSPブロックは以下のように示される。MBレベルにある1つのフラグは、現在MBが従来のスキップ/直接モードでコーディングされているかどうか、または現在MBがスキップ/直接モードでコーディングされているが、合成参照コンポーネントから予測されているかどうかをシグナリングする。(16×16から8×8への)MBパーティションごとに、参照ピクチャリストに対応する参照インデックスは、参照ピクチャリスト内の参照ピクチャをシグナリングする。ビデオエンコーダがMBパーティションを符号化するためにBVSPモードを使用するとき、BVSPコード化ブロック用の動きベクトルが存在しないので、ビデオエンコーダは、MBパーティション用の動きベクトル差分(MVD)をシグナリングしない。MBパーティションが合成参照コンポーネントを使用してコーディングされていることをフラグまたは参照インデックスのいずれかが示したとき、ビデオコーダは、下記に記載されるように、1つのパーティンションの予測を起動することができる。
[0110]BVSPに関する別の実装問題は、予測導出プロセスに関与する。N×MはMBパーティションのサイズを表記することができ、ここで、NまたはMは8または16に等しい。MBパーティションがBVSPモードでコーディングされた場合、MBパーティションはさらに、K×Kに等しいサイズを有するいくつかの下位領域に区分化され、ここで、Kは4×4、2×2、または1×1であり得る。MBパーティションの下位領域ごとに、ビデオコーダは、別個の導出視差ベクトルを導出する。さらに、MBパーティションのそれぞれの下位領域ごとに、ビデオコーダは、ビュー間参照ピクチャ内の対応するブロック、すなわち図4のR(cb)を特定するために、導出視差ベクトルを使用する。ビデオコーダは、それぞれの下位領域用の対応するブロックからそれぞれの下位領域を予測することができる。BVSPの一例は、4×4(Kが4に等しいことを意味する)のサイズを有するブロック用のバックワードワーピングに基づく。導出視差ベクトルは、そのようなベクトルを使用するコーディングツールが存在しないので、BVSPコード化ブロック用に記憶されない。
[0111]別の実装問題は、視差ベクトル導出プロセスに関与する。深度優先コーディング順序が適用されたとき、ビデオコーダは、図4に示されたように、対応する非ベース深度ビュー内の対応する深度ブロックの深度値を変換することによって、導出視差ベクトルを取得することができる。深度ブロックの中心位置の深度値、1つの深度ブロック内のすべての深度値の最大値、1つの深度ブロック内の4つのコーナーピクセルの最大値、および深度ブロック/深度MBの右下ピクセルの深度値などの、1つの深度ブロックの深度値を選択するために、いくつかの技法が適用され得る。テクスチャ優先コーディング順序が適用されたとき、非ベーステクスチャビューを復号するとき対応する非ベース深度ビューが利用不可なので、ビデオコーダは、BVSPモードを無効にすることができる。
[0112]通常のインターモード用の3D−AVCにおける深度ベース動きベクトル予測(D−MVP)が次に説明される。D−MVPは、現在ビュー内の関連する深度マップデータを組み込む動きベクトル予測方法であり、それは、深度優先コーディング順序に起因して利用可能である。ビデオコーダは、従属(すなわち、非ベース)ビュー内のテクスチャビューコンポーネントでD−MVPを適用することができる。
[0113]3D−AVCでは、D−MVP方法は、H.264/AVCにおける従来のメディアン関数ベースの動きベクトル予測に組み込まれる。詳細には、隣接ブロック内の動きベクトルの参照インデックスが動き予測のタイプを知るために確認されるように、予測されるべき動きベクトルのタイプ(すなわち、時間動きベクトルか視差動きベクトルか)が最初に識別される。
[0114]隣接ブロックは、順番に、現在ブロックに対して、左ブロックと、上ブロックと、右上ブロックと、左上ブロックとを含む。いくつかの例では、ビデオコーダは、他の3つの隣接ブロック(すなわち、左ブロック、上ブロック、および右上ブロック)のうちの1つが動きベクトルを含まず、したがって利用不可と見なされるとき、左上ブロック内の動きベクトルのみを使用することができる。
[0115]その後、3つの隣接ブロックが利用可能になった場合、ビデオコーダは、現在ブロック用の動きベクトルの動きベクトル予測に、3つの隣接ブロック内の動きベクトルを利用することができる。時間予測では、3つの隣接ブロックの動きベクトルがすべて同じタイプであり、すべてが同じ参照インデックスを有する場合、ビデオコーダは、H.264/AVCに記述されたようにメディアンフィルタを直接使用することができる。そうでない場合(3つの隣接ブロックの動きベクトルが異なるタイプに属し、3つの隣接ブロックが異なる参照インデックスを有する場合)、ビデオコーダはさらに、現在ブロック用の動きベクトルを導出することができる。現在参照ピクチャがビュー間参照ピクチャであるとき、ビデオコーダは、隣接ブロックの位置における動きベクトルのタイプとそれらの参照インデックスとを確認することができる。動きベクトルがすべて同じタイプと同じ参照インデックスとを有する場合、ビデオコーダは、メディアンフィルタを適用することができる。どちらの場合も、利用可能な隣接ブロックが3つよりも少ない場合、ビデオコーダはさらに、3つの隣接ブロックが利用可能になるように、利用可能ではないブロック用の動きベクトルを導出することができる。
[0116]隣接ブロック用に導出された動きベクトルは、導出動きベクトルと呼ばれる場合がある。現在ブロックの動きベクトルを導出するために、ビデオコーダは、現在動きベクトル(すなわち、隣接ブロックの動きベクトル)が視差動きベクトルであるかどうか、隣接ブロックの動きベクトルが現在動きベクトルのタイプと異なるタイプを有するかどうか、または隣接ブロックの動きベクトルが利用不可かどうかを決定することができる。これらの条件のうちのいずれかが該当する場合、ビデオコーダは、現在ブロックの導出動きベクトルを視差動きベクトルであるように設定することができ、ビデオコーダは、対応する深度ビューコンポーネントから視差動きベクトルを変換することができる。ビデオコーダは、同じビューの深度ビューコンポーネントの対応するブロックの4つのコーナーの深度値の最大値を視差値に変換することができる。ビデオコーダは、導出動きベクトルの水平成分に視差値を設定することができる。ビデオコーダは、導出動きベクトルの垂直成分をゼロになるように設定することができる。
[0117]現在動きベクトルが時間動きベクトルである場合、ビデオコーダは、参照(ベース)ビュー内の参照ブロックの時間動きベクトルを決定するために、(上述されたのと同様に導出された)視差値を使用することができる。ビデオコーダは、導出動きベクトルを時間動きベクトルになるように設定することができる。時間動きベクトルが利用不可であると見なされる(たとえば、時間隣接ブロックがイントラブロックであるか、または時間隣接ブロックの動きベクトルが、現在参照ピクチャと位置合わせされた参照ビュー内の参照ピクチャを指さない)場合、ビデオコーダは、導出動きベクトルをゼロに設定することができる。
[0118]スキップモードおよび直接モード用の3D−AVCにおけるビュー間動き予測が次に説明される。H.264/AVC仕様のセクション7.3.5および7.4.5に記載されているように、マクロブロック用のmacroblock_layerシンタックス構造は、マクロブロック用のマクロブロックタイプを指定するmb_typeシンタックス要素を含む場合がある。mb_typeシンタックス要素のセマンティクスは、マクロブロックを含んでいるスライスのスライスタイプに依存する。スライスがPスライスである場合、マクロブロックタイプはP_Skipタイプを含む。マクロブロックのマクロブロックタイプがP_Skipであるとき、ビットストリーム内のマクロブロック用のデータはこれ以上存在しない。スライスがBスライスである場合、マクロブロックタイプは、B_SkipモードとB_Direct_16×16モード(すなわち、B−16×16直接モード)とを含む。マクロブロックのマクロブロックタイプがB_Skipであるとき、ビットストリーム内のマクロブロック用のデータはこれ以上存在しない。マクロブロックのマクロブロックタイプがB_Direct_16×16であるとき、ビットストリーム内のマクロブロック用の動きベクトル差分または参照インデックスは存在しない。さらに、マクロブロックのマクロブロックタイプがB_Direct_16×16であるとき、直接モード予測についてのH.264/AVC仕様の節8.4.1における動きベクトルおよび参照フレームインデックス用の導出プロセス内で、関数MbPartWidth(B_Direct_16×16)およびMbPartHeight(B_Direct_16×16)が使用される。
[0119]さらに、macroblock_layerシンタックス構造は、1つまたは複数のsub_mb_predシンタックス構造を含む場合がある。sub_mb_predシンタックス構造は、サブマクロブロックタイプを指定する4つのsub_mb_typeシンタックス要素を含む場合がある。サブマクロブロックタイプは、B_Direct_8×8モード(すなわち、B−8×8直接モード)を含む。サブマクロブロックのサブマクロブロックタイプがB_Direct_8×8であるとき、ビットストリーム内のサブマクロブロック用の動きベクトル差分または参照インデックスは存在しない。直接モード予測についてのH.264/AVC仕様の節8.4.1における動きベクトルおよび参照フレームインデックス用の導出プロセス内で、関数SubMbPartWidth(B_Direct_8×8)およびSubMbPartHeight(B_Direct_8×8)が使用される。
[0120]ビデオコーダは、P_Skip、B_Skip、B−16×16直接モード、およびB−8×8直接モードで、3D−AVCにおけるビュー間動き予測を実行することができる。ビュー間動き予測を実行するために、ビデオコーダは、最初に、隣接ブロックからの現在ブロック用の視差ベクトル、ならびに同じビューの深度ビューコンポーネントの深度値から変換された視差ベクトルを導出することができる。1つの利用可能な空間隣接ブロックが視差動きベクトルを含む場合、ビデオコーダは、この視差動きベクトルが現在ブロック用の視差ベクトルであると決定することができる。そうでない場合、隣接ブロックのうちのいずれも視差動きベクトルを有していないとき、ビデオコーダは、(D−MVPにおける変換と同様に)深度値からブロックの視差動きベクトルを変換することができる。その後、ビデオコーダは、現在ブロック用の視差ベクトルを決定するために、3つの隣接ブロックにメディアンフィルタを適用することができる。
[0121]ビデオコーダは、参照(たとえば、ベース)ビュー内の参照ブロックの時間動きベクトルを決定するために、現在ブロック用の視差ベクトルを使用することができる。時間動きベクトルが利用不可である場合、ビデオコーダは第1に参照インデックスを導出することができ、ビデオコーダは、動きベクトル予測子を生成するために、上記で説明されたように、D−MVPを適用することができる。
[0122]3D−AVCおよびHEVCのマルチビュー拡張は、ブロック用の視差ベクトルを導出するために、隣接ブロックベース視差ベクトル(NBDV)導出プロセスを使用することができる。一般に、NBDV導出プロセスは、現在ブロック用の視差ベクトルを推定するための隣接視差情報を使用する。いくつかの空間および時間の隣接候補ブロックが最初に定義される。ビデオコーダは、あらかじめ定義された順序で隣接ブロックの各々を確認することができる。あらかじめ定義された順序は、現在ブロックと隣接ブロックとの間の相関の優先度によって決定される場合がある。隣接ブロックが視差動きベクトルを有する(すなわち、隣接ブロックの動きベクトルがビュー間参照ピクチャを指す)とビデオコーダが決定すると、ビデオコーダは、視差動きベクトルを現在ブロック用の視差ベクトルに変換することができる。
[0123]一般に、ビデオコーダは、NBDV導出プロセスを実行するとき、隣接ブロックの2つのセットを使用することができる。隣接ブロックの一方のセットは空間隣接ブロックからのものであり、隣接ブロック他方のセットは時間隣接ブロックからのものである。いくつかの例では、NBDVという用語は、ブロックの視差ベクトルを導出するためにNBDV導出プロセスが使用された場合、ブロックの視差ベクトルを指すために使用される。
[0124]ビデオコーダは、すべてのビューについてテクスチャ優先コーディング順序を使用する、3D−HEVCにおける視差ベクトル導出方法として、NBDV導出プロセスを使用することができる。現在の3D−HEVC設計では、ビデオコーダはまた、参照ビューの深度マップから深度データを取り出すために、NBDV導出プロセスを使用することができる。3D−HEVCは、最初に、Zhangら、「視差ベクトル生成結果」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第1回会合:ストックホルム、スウェーデン、2012年7月16〜20日、文書JCT3V−A0097(以下、JCT3V−A0097)で提案されたNBDV方法を採用した。暗黙視差ベクトルは、JCT3V−A0126:Sungら、「3D−CE5.h:HEVCベースの3Dビデオコーディングのための視差ベクトル導出の簡略化」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第1回会合:ストックホルム、スウェーデン、2012年7月16〜20日、文書JCT3V−A0126(以下、JCT3V−A0126)における簡略化されたNBDVに含まれる。加えて、Kangら、「3D−CE5.h関連:視差ベクトル導出のための改善」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発共同研究部会、第2回会合:上海、中国、2012年10月13〜19日、文書JCT3V−B0047(以下、JCT3V−B0047)では、NBDV導出プロセスは、ランダムアクセスピクチャ(RAP)の選択で改善されたコーディング利得を実現しながら、復号ピクチャバッファに記憶された暗黙視差ベクトルを除去することによって、さらに簡略化された。
[0125]いくつかのNBDV導出プロセスでは、ビデオコーダは、視差ベクトル導出のための5つの空間隣接ブロックを使用する。5つの空間隣接ブロックは、A0、A1、B0、B1、およびB2によって表記される、現在PUの左下ブロック、左ブロック、右上ブロック、上ブロック、および左上ブロックである。提案されたNBDV導出プロセスで使用される5つの空間隣接ブロックは、HEVCにおけるマージモードで使用される同じ5つの空間隣接ブロックであり得る。したがって、いくつかの例では、5つの空間隣接ブロックにアクセスするために、さらなるメモリアクセスは必要とされない。
[0126]時間隣接ブロックを確認するために、ビデオコーダは、最初に、候補ピクチャリストの構築プロセスを実行することができる。ビデオコーダは、現在ビューからのすべての参照ピクチャを候補ピクチャとして扱うことができる。ビデオコーダは、最初に、いわゆるコロケートされた参照ピクチャを候補ピクチャリストに挿入し、その後に、参照インデックスの昇順で候補ピクチャの残り(すなわち、現在ビュー内の参照ピクチャ)が続く。すなわち、ビデオコーダは、残りの候補ピクチャが現在ピクチャの参照ピクチャリスト(たとえば、RefPictList0およびRefPictList1)内で現れる順序に従って、残りの候補ピクチャを候補ピクチャリストに挿入することができる。現在ブロックを含んでいるスライスのスライスヘッダ内の1つまたは複数のシンタックス要素は、コロケートされたピクチャを示すことができる。いくつかの例では、両方の参照ピクチャリスト(たとえば、RefPictList0およびRefPictList1)内で同じ参照インデックスを有する参照ピクチャがNBDV導出プロセスでの使用に利用可能であるとき、コロケートされたピクチャと同じ参照ピクチャリスト内の参照ピクチャは、候補ピクチャリスト内で他の参照ピクチャに先行する。
[0127]ビデオコーダがビュー間動き予測でブロックをコーディングするとき、ビデオコーダは、異なるビュー内の対応するブロックを選択するための視差ベクトルを導出することができる。「暗黙視差ベクトル」または「IDV」(または場合によっては「導出視差ベクトル」)という用語は、ビュー間動き予測において導出された視差ベクトルを指すことができる。たとえば、ビデオコーダが動き予測(すなわち、時間動き予測)でブロックをコーディングすることができる場合でも、ビデオコーダは、導出視差ベクトルを廃棄しない。むしろ、ビデオコーダは、後続のブロックをコーディングする目的で視差ベクトルを使用することができる。詳細には、ビデオコーダは、視差ベクトルを暗黙視差ベクトルとして扱うことができ、1つまたは複数の他のブロック用の視差ベクトルを決定するために、NBDV導出プロセスにおいて暗黙視差ベクトルを使用することができる。
[0128]通常、ビデオコーダがNBDV導出プロセスを実行するとき、ビデオコーダは、順番に、時間隣接ブロック内の視差動きベクトルと、空間隣接ブロック内の視差動きベクトルと、次いで暗黙視差ベクトルとを確認する。ビデオコーダが視差ベクトルを見出すと、ビデオコーダは、NBDV導出プロセスを終了することができる。
[0129]バックワードVSPは3D−HEVCにおいて有効にされ得る。3D−HEVCでは、ビデオコーダがテクスチャ優先コーディング順序を適用するとき、ビデオコーダは、参照深度ビュー内の深度値の考慮事項の有無にかかわらず、PUごとに、NBDV導出プロセスから視差ベクトルを導出することができる。ビデオコーダが視差ベクトルを取得した後、PUの4×4下位領域がBVSPモードでコーディングされた場合、ビデオコーダはさらに、1つのPUの4×4下位領域ごとに視差ベクトルを改良することができる。
[0130]改良プロセスは2つのステップを含む場合がある。1番目のステップでは、ビデオコーダは、参照深度ビュー内の4×4深度ブロックから1つの最大深度値を選択することができる。ビデオコーダは、4×4深度ブロックを特定するために導出視差ベクトルを使用することができる。2番目のステップでは、ビデオコーダは、改良された視差ベクトルの垂直成分を0であるように保持しながら、改良された視差ベクトルの水平成分に深度値を変換することができる。視差ベクトルがPUの4×4下位領域用に改良された後、ビデオコーダは、動き補償のために参照テクスチャビュー内の1つのブロックを特定するために、改良された視差ベクトルを使用することができる。
[0131]上記に示されたように、3D−HEVCは、視差ベクトルを導出するためにNBDV導出プロセスを使用することができる。参照により本明細書に組み込まれる、2013年2月26日に出願された米国仮特許出願第61/769,716号、以下‘716出願は、3D−AVC用のNBDV導出プロセスを記載する。‘716出願に記載されたように、ビデオコーダは、現在MB用の視差ベクトルを導出するためにMBレベルのNBDV導出プロセスを使用することができる。ビデオコーダはさらに、動きベクトル予測のために現在MB用の視差ベクトルを使用することができる。‘716出願に記載されたように、ビデオコーダが視差動きベクトルを識別すると(すなわち、ビデオコーダがビュー間参照ピクチャを使用する時間隣接ブロックまたは空間隣接ブロックを識別すると)、ビデオコーダは、現在MB用の視差ベクトルとして視差動きベクトルを返すことができる。
[0132]図5は、NBDV導出プロセスのための例示的な空間隣接ブロックを示す概念図である。‘716出願では、ビデオコーダがNBDV導出プロセスにおいて空間隣接ブロックを確認するとき、ビデオコーダは、AVC動き予測プロセスにおいてビデオコーダが確認する空間隣接ブロックを確認することができる。ビデオコーダが‘716出願で提案されたNBDV導出プロセスにおいて空間隣接ブロックを確認するとき、ビデオコーダは、図5の例に示されたように、A(左)、B(上)、C(右上)、およびD(左上)の順序で、空間隣接ブロックを確認することができる。言い換えれば、AVC動き予測プロセスにおいて確認される空間隣接ブロックは、提案されたNBDVプロセスにおいて、A(左)、B(上)、C(右上)、およびD(左上)の順序で確認される。
[0133]さらに、‘716出願で提案されたNBDV導出プロセスでは、ビデオコーダは時間隣接ブロックを確認することができる。図6は、NBDV導出プロセスのための例示的な時間隣接ブロックを示す概念図である。ビデオコーダは、現在ピクチャと同じビュー内の2つまでの参照ピクチャ:(Bスライス用のRefPicList1[0]およびRefPicList0[0]ならびにPスライス用のRefPicList0[0])からのブロックを確認することができる。現在、ビデオコーダは、ピクチャごとに3つの時間ブロックを確認することができる。ピクチャごとに、ビデオコーダは、図6の例に示されたように、BR(右下)、CT3(センター3)、およびCO2(コーナー2)の順序で、下記に示されるようなコロケートされたMBに対するコロケートされたブロックを確認することができる。
[0134]さらに、‘716出願では、NBDV導出プロセスの終了は以下のように記載されている。ビデオコーダは、上述された隣接ブロックを順番に確認することができる。3D−HEVCと同様に、ビデオコーダは、最初に時間隣接ブロックを確認し、後で空間隣接ブロックを確認することができる。ブロックが利用可能な視差動きベクトルを含んでいるとビデオコーダが決定すると、ビデオコーダは、導出プロセスを終了することができる。
[0135]MVC+Dと比較されたときの、‘716出願で提案された方法のコーディング利得が、以下の表に示される。
‘716出願の提案された方法により、3D−AVCでは効率的にサポートされないテクスチャのみのコーディングが可能になる。同じテクスチャのみの構成を可能にするとき、現在の3D−AVCの構成からのコーディング利得は1%にすぎない。
[0136]いくつかの例では、参照ビューの深度ビューコンポーネントにアクセスするNBDV導出プロセスが3D−AVCにおいて使用される。その内容全体が参照により本明細書に組み込まれる、2013年2月27日に出願された米国仮特許出願第61/770,268号(‘268出願)に記載されたように、NBDV導出プロセスは、ベース/参照ビューの深度ビューコンポーネントにアクセスすることによって、さらに改善され得る。‘268出願に記載されたように、ビデオコーダは、深度ビューコンポーネント内の深度ピクセルを特定するために、隣接ブロックから導出された視差ベクトルを使用することができ、その結果、ビデオコーダは視差ベクトルをさらに改良することができる。以下の表は、MVC+Dと比較されたときの、‘268出願の提案された方法のコーディング利得を示す。
上記に示されたように、‘268出願の提案された方法は5%以上のコーディング利得を提供するが、深度ビューコンポーネントにアクセスすることが依然必要とされる。
[0137]3D−AVC用に開発されたNBDV導出方法は、以下の問題を有する可能性がある。第1に、‘716出願で提案されたNBDV導出方法を利用するとき、D−MVPとBVSPとを含むコーディングツールは、主に、視差ベクトルが十分に正確ではないという理由のせいで、効率的ではなくなる。第2に、‘268出願で提案されたNBDV導出方法を利用するとき、深度ビューコンポーネントにアクセスするこが常に必要とされる。この場合でも、隣接ブロックから取得された最初の視差ベクトルは、ビデオコーダが深度ビューコンポーネント内のより正確なエリアを識別することを妨げる可能性もある。第3に、視差ベクトルは、3D−HEVCにおけるようにIDVにアクセスすることによって改善される可能性がある。しかしながら、そのようなIDVを使用すると、空間隣接ブロックと時間隣接ブロックの両方のためにさらなるストレージが必要になる可能性がある。空間隣接ブロックおよび時間隣接ブロック用のIDVのストレージは、動きフィールドのサイズと同様のレベルで著しくより多いストレージとより多いメモリアクセスとを必要とする可能性がある。
[0138]本開示は改善されたNBDVプロセスを提案する。詳細には、本開示の技法は、スライス全体用の1つまたは複数の導出視差ベクトル(DDV)を記憶することによって、NBDV生成(すなわち、NBDV導出プロセス)を改善するソリューションを提供することができる。本開示の技法は、主に、‘716出願および‘268出願に記載されたNBDV方法のために設計され得る。
[0139]本開示の1つまたは複数の技法によれば、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、1つまたは複数のDDVを記憶することができる。ビデオコーダは、後でコーディングされるビデオブロックの視差ベクトルを予測するためにDDVを使用することができる。言い換えれば、以前のブロックからの1つまたは複数のDDVは、将来のブロックの視差ベクトルをより良く予測するために記憶される。
[0140]いくつかの例では、現在ブロックが深度ビューコンポーネントであり、ビデオコーダがDDVを導出したブロックがテクスチャビューコンポーネントである場合、ビデオコーダは、現在ブロックの視差ベクトルを予測するためにDDVを使用しない。その上、現在ブロックがテクスチャビューコンポーネントであり、ビデオコーダがDDVを導出したブロックが深度ビューコンポーネントである場合、ビデオコーダは、現在ブロックの視差ベクトルを予測するためにDDVを使用しない。たとえば、DDVは、現在MBを含んでいないビューコンポーネントとは異なる任意のビューコンポーネントの任意のブロックの視差ベクトルを予測するために使用されない。言い換えれば、DDVは、現在MBを含んでいない任意のビューコンポーネントの任意のブロックの視差ベクトルを予測するために使用されない。
[0141]さらに、いくつかの例では、現在ブロックとビデオコーダがDDVを導出したブロックが異なるスライス内にある場合、ビデオコーダは、現在ブロックの視差ベクトルを予測するためにDDVを使用しない。たとえば、DDVは、現在MBを含んでいないスライスとは異なる任意のスライスの任意のブロックの視差ベクトルを予測するために使用されない。
[0142]上記に示されたように、ビデオコーダは、スライス用の1つまたは複数のDDVを保持することができる。いくつかの例では、ビデオコーダによってスライス用に保持されるDDVの数は、現在ピクチャの幅、現在ピクチャの高さ、または現在スライス内のブロックの数に比例しない。言い換えれば、保持されるべきDDVの数は、ピクチャの幅、ピクチャの高さ、またはスライスが有するブロックの数に比例しない。むしろ、いくつかの例では、ビデオコーダによって保持されるDDVの数は、1つのMB、1つのCU、または1つのLCUの中のブロックの数に比例する。
[0143]本開示のいくつかの例では、ビデオコーダは1つのDDVのみを記憶する。たとえば、ビデオコーダがスライスの(コーディング順序で)最初のMBをコーディングすると、ビデオコーダは、MBの視差ベクトルをDDVに記憶することができる。現在MBをコーディングするとき、ビデオコーダは、次のMB用の視差ベクトルを導出するために、NBDV導出プロセスにおいて記憶されたDDVを使用することができる。言い換えれば、現在MBをコーディングするとき、(通常、左のMBである)前のMBをコーディングするときに以前記憶され、生成されたDDVがNBDVに使用される。
[0144]このようにして、ビデオコーダは、いくつかの例では、ビデオデータの現在ピクチャのスライス用のDDVを記憶することができる。さらに、ビデオコーダは、ビデオデータの現在ピクチャのスライス用のDDVに少なくとも部分的に基づいて、スライスの第1のブロック用のNBDVを導出することができる。ビデオコーダは、第1のブロック用のNBDVに少なくとも部分的に基づいて、第1のブロックをコーディングすることができる。さらに、ビデオコーダは、DDVとして第1のブロック用のNBDVを記憶することができる。たとえば、ビデオコーダがスライスの最初のMBをコーディングすると(すなわち、その後)、ビデオコーダは、DDVとしてMBの視差ベクトルを記憶することができる。したがって、いくつかの例では、ビデオコーダは、ビデオデータの現在ピクチャのスライス用のただ1つのDDVを記憶することができ、ここにおいて、スライスは複数のブロックを含む。さらに、そのような例では、ビデオコーダは、特定のブロック用の視差ベクトルを決定するために、NBDV導出プロセスにおいてスライス用のDDVを使用することができ、ここにおいて、特定のブロックはスライスのブロックのうちの1つである。そのような例では、ビデオコーダは、スライス用のDDVとして、特定のブロック用の視差ベクトルを記憶することができる。
[0145]DDVとして第1のブロック用のNBDVを記憶した後、ビデオコーダは、DDVに少なくとも部分的に基づいて、スライスの第2のブロック用のNBDVを導出することができる。いくつかの例では、第1のブロックは第2のブロックのすぐ左側にある。さらに、ビデオコーダは、第2のブロック用のNBDVに少なくとも部分的に基づいて、第2のブロックをコーディングすることができる。そのような例では、第1のブロックはマクロブロックであり得るし、第2のブロックもマクロブロックであり得る。他の事例では、第1のブロックおよび第2のブロックはCUであり得るか、第1のブロックおよび第2のブロックはPUであり得るか、または第1のブロックおよび第2のブロックはLCUであり得る。
[0146]いくつかの例では、ビデオコーダは、現在MBの視差ベクトルを指定するためにDDVを更新することができる。たとえば、ビデオコーダがビュー間動き予測を使用して現在MBをコーディングするときのみ、ビデオコーダは、現在MBの視差ベクトルを指定するためにDDVを更新することができる。言い換えれば、NBDVの結果を使用して、たとえばビュー間動き予測を使用して現在MBがコーディングされるときのみ、DDVが更新される。別の例では、現在MBがインターコーディングされるときのみ、ビデオコーダは、現在MBの視差ベクトルを指定するためにDDVを更新することができる。言い換えれば、現在MBがインターコーディングされるときのみ、DDVが更新される。別の例では、現在MBがインターコード化スライス(たとえば、PスライスまたはBスライス)であるときのみ、ビデオコーダは、現在MBの視差ベクトルを指定するためにDDVを更新することができる。したがって、この例では、現在スライスがインターコーディングされるときのみ、DDVが更新される。別の例では、現在MBがスキップモードまたは直接モードでコーディングされるときのみ、ビデオコーダは、現在MBの視差ベクトルを指定するためにDDVを更新することができる。言い換えれば、現在MBがスキップモードまたは直接モードでコーディングされるときのみ、DDVが更新される。
[0147]さらに、いくつかの例では、ビデオコーダは、あるブロック用の視差ベクトルの大きさがDDVの大きさよりも大きいことの決定に応答して、DDVとしてそのブロック用の視差ベクトルを記憶することができる。たとえば、現在MBの視差ベクトルの水平成分がDDVの水平成分よりも大きい場合のみ、ビデオコーダは、現在MBの視差ベクトルを指定するためにDDVを更新することができる。言い換えれば、現在MBの導出視差ベクトルが以前記憶されたDDVよりも大きい場合のみ、DDVがさらに記憶/更新される。ここで、視差ベクトルの水平成分の絶対値が比較される。
[0148]いくつかの例では、DDVがゼロである場合のみ、ビデオコーダは、現在ブロックの視差ベクトルを指定するためにDDVを更新することができる。いくつかの例では、ビデオコーダは、DDVの両方の成分がゼロに等しいとき、ゼロであるとしてDDVを識別することができる。他の例では、ビデオコーダは、DDVの水平成分がゼロに等しいとき、ゼロであるとしてDDVを識別することができる。したがって、そのような例では、DDVが(両方の成分がゼロであること、または水平成分のみがゼロであることによって識別された)ゼロである場合のみ、DDVがさらに記憶または更新される。
[0149]いくつかの例では、記憶されたDDVが現在ブロックの左側にあるブロック用の視差ベクトルを指定するときのみ、ビデオコーダは、記憶されたDDVから現在ブロック用の視差ベクトルを導出することができる。たとえば、ビデオコーダがDDVを導出したMBが現在MBの左側に隣接していない場合、ビデオコーダは、現在MB用の視差ベクトルを導出するためにDDVを使用しない。言い換えれば、DDVを生成するために使用された以前のMBが現在MBの左側に位置するMBではない場合、DDVは現在MBのNBDVを導出するために使用されない。
[0150]したがって、上記または本開示の他の場所で提供された本開示の様々な例では、ビデオコーダは、ある条件が満足されたことに応答して、ブロック用のNBDVを指定するためにDDVを更新することができ、その条件は、第1のブロックがビュー間動き予測を使用してコーディングされること、第1のブロックがインターコーディングされること、スライスがインターコーディングされること、第1のブロックがスキップモードまたは直接モードでコーディングされること、第1のブロック用のNBDVの大きさがDDVの大きさよりも大きいこと、およびDDVがゼロでないことのうちの1つである。
[0151]ビデオコーダは、記憶されたDDV、時間隣接ブロック用の視差動きベクトル(TDV)、および空間隣接ブロック用の視差動きベクトル(SDV)に少なくとも部分的に基づいて、現在ブロック用のNBDVを導出することができる。すなわち、DDVは、様々な方法で、考えられる(TDVと表記された)時間隣接ブロックからの視差動きベクトルおよび(SDVと表記された)空間隣接ブロックからの視差動きベクトルとともに使用され得る。したがって、第1のブロック用のNBDVを導出することは、そのブロック用のNBDVを導出するために、DDVと、時間隣接ブロック用の視差動きベクトルと、空間隣接ブロック用の視差動きベクトルとを使用することを備える場合がある。
[0152]たとえば、ビデオコーダがいかなるTDVまたはSDVも識別することができない場合、ビデオコーダは、DDVとして現在ブロックの視差ベクトルを設定することができる。言い換えれば、利用可能なTDVまたはSDVが識別されなかった後、視差ベクトルがDDVに設定される。したがって、TDVまたはSDVのいずれも現在ブロック用のNBDVを決定する際の使用に利用可能ではないことの決定に応答して、ビデオコーダは、現在ブロック用のNBDVが記憶されたDDVに等しいと決定することができる。
[0153]いくつかの例では、利用可能なTDVまたはSDVが存在せず、DDVがゼロでない場合のみ、ビデオコーダは、DDVとして現在ブロック用の視差ベクトルを設定する。ビデオコーダは、DDVの成分のうちのいずれかがゼロでないとき、DDVがゼロでないと決定することができる。代替として、ビデオコーダは、DDVの水平成分がゼロでないとき、DDVがゼロでないと決定することができる。この例では、DDVがゼロである場合、ビデオコーダは、現在ブロック用の視差ベクトルをゼロに設定することができる。言い換えれば、時間ネイバーおよび空間ネイバーが利用可能な視差動きベクトルを提供しないとき、DDVが(両方の成分がゼロであること、または水平成分のみがゼロであることによって識別された)ゼロでない場合、ゼロでないDDVがNBDVに返され、そうでない場合、ゼロの視差ベクトルが返される。
[0154]さらに、DDVを確認することに加えてTDVとSDVとを確認するNBDV導出プロセスをビデオコーダが実行するいくつかの例では、ビデオコーダは、様々な順序で、TDVとSDVとDDVとを確認することができる。言い換えれば、視差ベクトルは所与のあらかじめ定義された順序で確認される。利用可能であり、(両方の成分がゼロでないこと、または水平成分のみがゼロでないことによって識別された)ゼロでない視差動きベクトルをビデオコーダが識別すると、ビデオコーダは、識別された視差動きベクトルから現在ブロックの視差ベクトルを導出することができる。たとえば、ビデオコーダが、あらかじめ定義された順序で記憶されたDDVとTDVとSDVとを確認しながら、記憶されたDDV、TDV、およびSDVの間から利用可能なゼロでない視差動きベクトルを識別するとき、ビデオコーダは、現在ブロック用の視差ベクトルが利用可能なゼロでない視差ベクトルに等しいと決定することができる。考えられるあらかじめ定義された確認順序は、
・TDV、SDV、およびDDVと、
・SDV、TDV、およびDDVと、
・DDV、SDV、およびTDVと、
・DDV、TDV、およびSDVと、
・TDV、DDV、およびSDVと、
・SDV、DDV、およびTDVと
を含む場合がある。
たとえば、ビデオコーダが、TDV、SDV、およびDDV、またはSDV、TDV、およびDDVの順序を使用する場合、ブロック用のNBDVを導出することは、時間隣接ブロックが視差動きベクトルを有していないことを決定した後、および空間隣接ブロックが視差動きベクトルを有していないことを決定した後、DDVとしてそのブロック用のNBDVを設定することを備える場合がある。
[0155]より詳細には、ビデオコーダがTDV、SDV、およびDDVの順序を使用する場合、ビデオコーダは、時間隣接ブロックが視差動きベクトルを有しているかどうかを決定することができる。さらに、時間隣接ブロックが視差動きベクトルを有していることの決定に応答して、ビデオコーダは、時間隣接ブロックの視差動きベクトルに基づいて、そのブロック用のNBDVを導出することができる。時間隣接ブロックが視差動きベクトルを有していないことの決定に応答して、ビデオコーダは、複数の空間隣接ブロック内の任意の空間隣接ブロックが視差動きベクトルを有しているかどうかを決定することができる。複数の空間隣接ブロック内の特定の空間隣接ブロックが視差動きベクトルを有していることの決定に応答して、ビデオコーダは、特定の空間隣接ブロックの視差動きベクトルに基づいて、そのブロック用のNBDVを導出することができる。複数の空間隣接ブロック内のいずれの空間隣接ブロックも視差動きベクトルを有していないことの決定に応答して、ビデオコーダは、DDVとして、そのブロック用のNBDVを導出することができる。
[0156]いくつかの例では、ビデオコーダは2つ以上のDDVを導出する。そのような例では、ビデオコーダは、ある特定の順序でDDVを形成することができる。いくつかのそのような例では、複数のDDVを有するDDVのみを再生することによって、DDVを確認することに加えてTDVとSDVとを確認するNBDV導出プロセスをビデオコーダが実行する上記の例で記載されたのと同じあらかじめ定義された順序で、ビデオコーダは、TDVおよびSDVとともにDDVを一緒に考慮することができる。たとえば、ビデオコーダが、あらかじめ定義された確認順序でTDVと、SDVと、2つ以上の記憶されたDDVとを確認しながら、TDV、SDV、および2つ以上の記憶されたDDVの間から、利用可能なゼロでない視差ベクトルが識別されたとき、ビデオコーダは、現在ブロック用の視差ベクトルが利用可能なゼロでない視差ベクトルに等しいと決定することができ、ここにおいて、あらかじめ定義された確認順序では、2つ以上の記憶されたDDVが特定の順序に従って確認される。
[0157]ビデオコーダが2つ以上のDDVを導出するいくつかの例では、DDVが現在ブロックの隣接MBから生成されなかった場合、DDVは、現在MBの視差ベクトルを予測するために使用されるDDVから除外される。
[0158]さらに、いくつかの例では、ビデオコーダは2つのDDV、すなわちDDV1とDDV2とを導出する。DDV1およびDDV2は、最初に同じであるように設定される場合がある。しかしながら、DDV1は、現在MBの右の隣接MBである現在MBがコーディングされると更新され、DDV2は、現在MBの上の隣接MBである現在MBがコーディングされると更新される。すなわち、DDV1は、以前連続してコーディングされたMBの右の隣接MBとして現在MBがコーディングされると更新され、DDV2は、以前連続してコーディングされたMBの下の隣接MBとして現在MBがコーディングされると更新される。ビデオコーダが現在MBをコーディングするとき、ビデオコーダはDDV1とDDV2の両方をコーディングすることができ、DDV1はDDV2よりも高い優先度を有する。言い換えれば、ビデオコーダはDDV2よりも前にDDV1を確認する。別の例では、DDV1が現在ブロックの左側にあるブロックから導出される場合のみ、ビデオコーダは、現在ブロックの視差ベクトルを導出するためにDDV1を使用する。たとえば、DDV1が左の隣接MBから導出される場合のみ、DDV1は視差ベクトルを導出するために使用される。加えて、DDV2が現在ブロックの上にあるブロックから導出される場合、ビデオコーダは、現在ブロック用の視差ベクトルを導出するためにDDV2を使用することができる。たとえば、DDV2が上の隣接MBから導出される場合、DDV2は視差ベクトルを導出するために使用される。
[0159]いくつかの例では、ベース/参照ビューの深度ビューコンポーネントにアクセスすることが許可された場合、DDVを使用することに関して2つ以上の代替手法が可能である。1つの手法では、ビデオコーダは、深度ビューコンポーネントにアクセスすることが禁止されたときのみ、DDVを使用する。たとえば、深度ビューコンポーネントにアクセスすることが禁止されたことの決定に応答して、ビデオコーダは、1つまたは複数の記憶されたDDVに基づいて、現在ブロック用の視差ベクトルを導出することができる。
[0160]ベース/参照ビューの深度ビューコンポーネントにアクセスすることが許可された別の例では、ビデオコーダは、上記のように記載された最初の視差ベクトルを決定するためにDDVを使用する。その後、ビデオコーダはさらに、潜在的により正確な深度ブロックを識別して視差動きベクトルを改良するために、最初の視差ベクトルを使用する。たとえば、ベース/参照ビューの深度ビューコンポーネントにアクセスすることが許可されたとき、ビデオコーダは、1つまたは複数の記憶されたDDVに基づいて、現在ブロック用の最初のNBDVを決定することができ、潜在的により正確な深度ブロックを識別して現在ブロック用の最初の視差ベクトルを改良するために、現在ブロック用の最初の視差ベクトルを使用することができる。
[0161]さらに、ベース/参照ビューの深度ビューコンポーネントにアクセスすることが許可されたいくつかの例では、ビデオコーダは、‘268出願に記載されたように改良された視差ベクトルを使用することによって、DDVを改善することができる。たとえば、ベース/参照ビューの深度ビューコンポーネントにアクセスすることが許可されたとき、ビデオコーダは、1つまたは複数の記憶されたDDVを改良することができる。いくつかの例では、ビデオコーダは、MBレベルにおいて改良された視差ベクトルをDDVとして記憶する。別の例では、ビデオコーダは、MBレベルよりも小さいブロックレベルにおいて改良された視差ベクトルをDDVとして記憶する。たとえば、ビデオコーダは、MB内の右下のコーナーの改良された視差ベクトルをDDVとして記憶することができる。このようにして、ビデオコーダは、深度ビューコンポーネント内の深度ピクセルに基づいて、ブロック用のNBDVを改良することができ、ビデオコーダがそのブロック用のNBDVをDDVとして記憶するとき、ビデオコーダは、そのブロック用の改良されたNBDVを指定するためにDDVを更新することができる。
[0162]以下は、3D−HEVCに対する本開示の提案された技法(たとえば、方法)の一般化である。3D−HEVCに対する提案された技法の一般化の第1のポイントでは、本開示の上述された技法は、PU、CU、またはLCUによって置き換えられるMBを有する3D−HEVCにも適用され得る。3D−HEVCに対する本開示の提案された技法の一般化の第2のポイントでは、3D−HEVCにおいて本開示の提案された技法が使用されるとき、ビデオコーダはIDVを記憶する必要がない場合がある。言い換えれば、3D−AVC、3D−HEVC、ならびに潜在的に他のビデオコーディングの規格および仕様では、本開示のいくつかの例によれば、ビデオコーダは、スライスのいかなるブロック用のIDVも記憶しない場合がある。
[0163]3D−HEVCに対する提案された技法の一般化の第3のポイントでは、LCUまたはCUごとに、ビデオコーダは、最小のコーディングユニット(たとえば、4×4または8×8)よりも大きいか、またはそれに等しいユニット内の最も右のブロックのDDVを記憶することができる。現在PUをコーディングするとき、ビデオコーダは、現在PUの視差ベクトルを予測するために、左LCUの現在PUの左ブロックからビデオコーダが導出したDDVを使用することができる。たとえば、LCUが64×64であり、最小のコーディングユニットが4×4であるとき、ビデオコーダは16個までのDDVを記憶することができる。記憶されたDDVが同じPUのブロックに属するので、記憶されたDDVのうちのいくつかは同じである可能性がある。
[0164]さらに、LCUまたはCUの場合、ビデオコーダは、LCUまたはCU内のPUのうちの1つから導出された1つのDDVのみを記憶することができる。現在PUをコーディングするとき、ビデオコーダは、現在PUの視差ベクトルを予測するために、現在PUの左LCU/CUのDDVを使用することができる。一例では、ビデオコーダは、LCUまたはCU内のPUのすべての利用可能なDDVの関数を介して、記憶されるべき1つのLCUまたはCUのDDVを選択することができる。
[0165]このようにして、ビデオエンコーダ20は、スライスの1つまたは複数の以前コーディングされたブロックから1つまたは複数のDDVを記憶することができる。さらに、ビデオエンコーダ20は、1つまたは複数の記憶されたDDVに基づいて、スライスの現在ブロック用のNBDVを導出することができる。ビデオエンコーダ20は、現在ブロック用のNBDVに少なくとも部分的に基づいて、現在ブロックを符号化することができる。同様に、ビデオデコーダ20は、スライスの1つまたは複数の以前コーディングされたブロックから1つまたは複数のDDVを記憶することができる。さらに、ビデオデコーダ20は、1つまたは複数の記憶されたDDVに少なくとも部分的に基づいて、スライスの現在ブロック用のNBDVを導出することができる。ビデオデコーダ30は、現在ブロック用のNBDVに少なくとも部分的に基づいて、現在ブロックを復号することができる。
[0166]3D−HEVCに対する本開示の提案された技法の一般化の別のポイントでは、ビデオコーダは、スライスごとにただ1つのDDVを保持することができる。ビデオコーダは、CUがコーディングされるとDDVを更新することができる。様々な例では、ビデオコーダは、様々な方法でDDVを更新することができる。
[0167]たとえば、スライスがイントラコーディングされないとき、ビデオコーダは、CUがNBDV導出プロセスからもたらされる視差ベクトルを使用するかどうかにかかわらず、CUごとにNBDV導出プロセスを起動することができる。言い換えれば、スライスがイントラコーディングされないと、CUがNBDVの結果を使用するかどうかにかかわらず、CUごとにNBDVが起動される。ビデオコーダは、DDVを更新するためにNBDVの結果を使用することができ、ビデオコーダがNBDV導出プロセスによって導出された視差ベクトルに等しいようにDDVを設定できることを意味する。
[0168]本開示の技法が3D−HEVCに対して一般化されるときビデオコーダがどのようにしてDDVを更新することができるかの別の例では、ビデオコーダがCUをコーディングするためにインター予測を使用した後、ビデオコーダは、NBDV導出プロセスを起動することができる。言い換えれば、CUがインターコーディングされると、CU用にNBDVが起動される。ビデオコーダは、DDVを更新するためにNBDVの結果(すなわち、NBDV導出プロセスによって導出された視差ベクトル)を使用することができる。そうではなく、ビデオコーダがCUをコーディングするためにインター予測を使用しない場合、ビデオコーダはDDVを更新しない。
[0169]本開示の技法が3D−HEVCに対して一般化されるときビデオコーダがどのようにしてDDVを更新することができるかの別の例では、ビデオコーダがNBDVの結果を使用してCU内のPUをコーディングするとき、ビデオコーダは、NBDVの結果(すなわち、NBDV導出プロセスによって導出された視差ベクトル)を使用してDDVを更新することができる。この例では、ビデオコーダがNBDVの結果を使用しないでPUをコーディングするとき、ビデオコーダはDDVを更新しない。言い換えれば、NBDVの結果を使用してCU内のPUがコーディングされると、DDVを更新するためにNBDVの結果が使用され、そうでない場合DDVは更新されない。
[0170]本開示の技法が3D−HEVCに対して一般化されるときビデオコーダがどのようにしてDDVを更新することができるかの別の例では、ビデオコーダがスキップモードでCUの少なくとも1つのPUをコーディングするとき、ビデオコーダは、NBDVの結果(すなわち、NBDV導出プロセスによって導出された視差ベクトル)を指定するために、DDVを更新することができる。言い換えれば、この例では、CU内の少なくとも1つのPUがスキップモードでコーディングされると、DDVを更新するためにNBDVの結果は使用されない。
[0171]3D−HEVCに対する本開示の提案された技法の一般化の別の例示的なポイントでは、ビデオコーダは、いくつかの例では、スライスごとにただ1つのDDVを保持することができ、PUがコーディングされるときのみ、ビデオコーダはDDVを更新することができる。したがって、本開示の様々な例では、スライス用にただ1つのDDVが保持され、スライスの第1のブロックがコーディングされた後にコーディングされるスライスのブロック(マクロブロック、CU、PUなど)ごとにDDVが1度更新される。いくつかの例では、ビデオコーダは、様々な方法でDDVを更新することができる。たとえば、それぞれのPUをコーディングするためにビデオコーダがNBDVの結果を使用するかどうかにかかわらず、スライスがイントラコーディングされないとき、ビデオコーダは、スライスのそれぞれのPUごとにNBDV導出プロセスを起動することができる。この例では、ビデオコーダは、DDVを更新するためにNBDVの結果を使用することができる。言い換えれば、スライスがイントラコーディングされないと、PUがNBDVの結果を使用するかどうかにかかわらず、PUごとにNBDVが起動される。
[0172]ビデオコーダがスライスごとにただ1つのDDVを保持するときビデオコーダがどのようにしてDDVを更新することができるかの別の例では、ビデオコーダがPUをコーディングするためにインター予測を使用した場合、ビデオコーダは、NBDV導出プロセスを起動することができる。この例では、ビデオコーダは、DDVを更新するためにNBDVの結果を使用することができる。そうではなく、ビデオコーダがPUをコーディングするためにインター予測を使用しなかった場合、ビデオコーダは、DDVを更新するためにNBDVの結果を使用しない。言い換えれば、PUがインターコーディングされると、PU用にNBDVが起動される。DDVを更新するためにNBDVの結果が使用され、そうでない場合DDVは更新されない。
[0173]ビデオコーダがスライスごとにただ1つのDDVを保持するときビデオコーダがどのようにしてDDVを更新することができるかの別の例では、ビデオコーダがNBDVの結果を使用してPUをコーディングするとき、ビデオコーダは、DDVを更新するためにNBDVの結果を使用することができる。この例では、ビデオコーダがNBDVの結果を使用してPUをコーディングしないとき、ビデオコーダは、DDVを更新するためにNBDVの結果を使用しない。言い換えれば、NBDVの結果を使用してPUがコーディングされると、DDVを更新するためにNBDVの結果が使用され、そうでない場合DDVは更新されない。
[0174]ビデオコーダがスライスごとにただ1つのDDVを保持するときビデオコーダがどのようにしてDDVを更新することができるかの別の例では、ビデオコーダがPUをコーディングするためにスキップモードを使用するとき、ビデオコーダは、DDVを更新するためにNBDVの結果を使用することができる。言い換えれば、PUがスキップモードでコーディングされると、DDVを更新するためにNBDVの結果が使用される。
[0175]本開示の技法が3D−HEVCに対して一般化されるいくつかの例では、ビデオコーダはスライスごとに1つのDDVを保持することができ、ビデオコーダがCUをコーディングすると、またはビデオコーダがPUをコーディングすると、ビデオコーダはDDVを更新し、ブロックの空間隣接ブロックおよび時間隣接ブロックが視差動きベクトルを有していないとき、ビデオコーダは、ブロックの視差ベクトル(すなわち、NBDV)を導出するためにDDVを使用することができる。言い換えれば、空間隣接ブロックおよび時間隣接ブロックが視差動きベクトルを含んでいないとき、NBDVを導出するためにDDVが使用される。この場合、ビデオコーダは、DDVと等しいようにNBDVを設定することができる。その後、ビデオコーダはさらに、参照ビューの深度にアクセスすることによって、DDVとして設定されたNBDVを改良することができる。いくつかの例では、ビデオコーダは、元のNBDV(すなわち、ブロックの改良されていない視差ベクトル)を使用して、参照ビューの深度ビューコンポーネントにアクセスすることからもたらされた、改良された視差ベクトルに等しくDDVを設定することができる。
[0176]さらに、本開示の技法が3D−AVCまたは3D−HEVCのいずれかに適用されるいくつかの例では、ビデオコーダは、DDVの水平成分のみを記憶および更新することができ、ビデオコーダは、DDVの垂直成分を常に0に設定することができる。
[0177]任意のビデオコーデックに対して、本開示の1つまたは複数の例示的な技法が一般化され得る。たとえば、ブロックごとに変数が導出され得る。変数は、現在ブロックを復号するために使用され、必要である。変数は、各ブロックが復号された後更新され得る。前のブロックによって更新され得るような変数は、現在ブロックを予測するために搬送される。変数は、隣接ブロックのみから予測され、(たとえば、差分コーディングを使用して)直接的または間接的にシグナリングされない。
[0178]図7は、本開示の1つまたは複数の技法を実装することができる、例示的なビデオエンコーダ20を示すブロック図である。図7の例では、ビデオエンコーダ20は、予測処理ユニット48と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56と、逆量子化ユニット58と、逆変換処理ユニット60と、加算器62と、フィルタユニット64と、参照ピクチャメモリ66とを含む。予測処理ユニット48は、動き推定ユニット68(すなわち、動きおよび視差補償ユニット)と、動き補償ユニット70(すなわち、動きおよび視差補償ユニット)と、イントラ予測処理ユニット72とを含む。
[0179]図7に示されたように、ビデオエンコーダ20はビデオデータを受信し、データをビデオブロックに区分化する。この区分化は、スライス、タイル、または他のより大きいユニットにピクチャを区分化すること、ならびに、たとえば、LCUおよびCUの4分木構造に従った、またはHEVCの場合マクロブロックを区分化することによる、ビデオブロックの区分化を含む場合もある。ビデオエンコーダ20は、概して、符号化されるべきスライス内のビデオブロックを符号化する構成要素を示す。スライスは、複数のビデオブロックに(および、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割される場合がある。
[0180]予測処理ユニット48は、誤差結果(たとえば、コーディングレートおよびひずみレベル)に基づいて現在ビデオブロックのために、複数のイントラコーディングモードのうちの1つ、または複数のインターコーディングモードもしくはビュー間コーディングモードのうちの1つなどの、複数の可能なコーディングモードのうちの1つを選択することができる。予測処理ユニット48は、スライス内のビデオブロックのイントラコーディングとインターコーディングとを実行することができる。インターコーディング(すなわち、時間インター予測)は、ビデオシーケンスの隣接するフレームまたはピクチャ内のビデオにおける時間の冗長性を低減または除去するために、時間予測に依存する場合がある。イントラコーディング(すなわち、「イントラモード」または「Iモード」)(登録商標)は、いくつかの空間ベースの圧縮モードのいずれかを指す場合がある。単方向予測(すなわち、「単予測」もしくは「Pモード」)または双方向予測(すなわち、「双予測」もしくは「Bモード」)などのインターモードは、いくつかの時間ベースの圧縮モードのいずれかを指す場合がある。加えて、予測処理ユニット48は、上述されたように、異なるビュー内のピクチャ間でビュー間予測を実行することができる。予測処理ユニット48は、得られたイントラコード化ブロックまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器50に供給し、参照ピクチャとして使用するための元のブロックを復元するために加算器62に供給することができる。
[0181]予測処理ユニット48内のイントラ予測処理ユニット72は、空間圧縮を実現するために、コーディングされるべき現在ブロックと同じフレームまたはスライス内の1つまたは複数の隣接ブロックに対して、現在ビデオブロックのイントラ予測コーディング(すなわち、イントラコーディング)を実行することができる。言い換えれば、イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間の冗長性を低減または除去するために、空間予測に依存する。予測処理ユニット48内の動き推定ユニット68および動き補償ユニット70は、時間圧縮とビュー間圧縮とを実現するために、1つまたは複数の参照ピクチャおよび/または参照ビュー内の1つまたは複数の予測ブロックに対して、現在ビデオブロックのインター予測コーディングおよび/またはビュー間コーディングを実行する。
[0182]予測処理ユニット48は、ビデオシーケンス用の所定のパターンに従って、スライスのためのインター予測モードおよび/またはビュー間予測モードを決定することができる。所定のパターンは、シーケンス内のスライスをPスライスまたはBスライスとして指定することができる。動き推定ユニット68および動き補償ユニット70は、高度に統合される場合があるが、概念的な目的のために別々に示されている。動き推定ユニット68は、動き推定および/または視差推定を実行することができる。動き推定は、ビデオブロックについての動きを推定する動きベクトルを生成するプロセスを備える。たとえば、動きベクトルは、参照ピクチャ内の予測ブロックに対する、現在ビデオフレームまたは現在ピクチャ内の現在ブロック(たとえば、PU、MB、MBパーティションなど)の変位を示すことができる。視差推定は、異なるビュー内のブロックから現在コーディングされているブロックを予測するために使用され得る、視差ベクトルを生成するプロセスである。
[0183]予測ブロックは、絶対差分和(SAD)、2乗差分和(SSD)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべき現在ブロック(たとえば、PU、MB、MBパーティションなど)にぴったり一致することがわかるブロックであり得る。いくつかの例では、ビデオエンコーダ20は、参照ピクチャメモリ66に記憶された参照ピクチャの整数未満のピクセル位置のための値を計算することができる。参照ピクチャメモリ66は、復号ピクチャバッファと呼ばれる場合もある。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の小数ピクセル位置の値を補間することができる。したがって、動き推定ユニット68は、フルピクセル位置および小数ピクセル位置に対する動き探索を実行し、小数ピクセル精度で動きベクトルを出力することができる。
[0184]予測処理ユニット48は、ブロックの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコーディングまたはビュー間予測されたスライスにおけるブロック(たとえば、PU、MB、MBパーティションなど)用の(動き補償予測のための)動きベクトルおよび/または(視差補償予測のための)視差ベクトルを計算することができる。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択される場合があり、それらの参照ピクチャリストの各々は、参照ピクチャメモリ66に記憶された1つまたは複数の参照ピクチャを識別する。ビュー間予測の場合、参照ピクチャは異なるビュー内にある。動き推定ユニット68は、計算された動きベクトルおよび/または視差ベクトルをエントロピー符号化ユニット56および動き補償ユニット70に送ることができる。
[0185]動き補償ユニット70は、動き補償および/または視差補償を実行することができる。動き補償および/または視差補償は、動き推定および/または視差推定によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することと、場合によってはサブピクセル精度への補間を実行することとを伴う場合がある。ブロック(たとえば、PU、MB、MBパーティションなど)用の動きベクトルおよび/または視差を受信すると、動き補償ユニット70は、参照ピクチャリストのうちの1つの中で動きベクトルおよび/または視差ベクトルが指す予測ブロックを特定することができる。予測処理ユニット48はまた、スライスのビデオブロックを復号する際に、ビデオデコーダ30が使用するための、ビデオブロックおよびスライスに関連付けられたシンタックス要素を生成することができる。
[0186]加算器50は、コーディングされている現在ビデオブロックの対応するピクセル値から予測ブロックのピクセル値を減算し、それによりピクセル差分値を形成することによって、残差ビデオブロックを形成することができる。ピクセル差分値は、現在ビデオブロック用の残差データを形成する。ピクセル差分値は、ルーマ差分値とクロマ差分値の両方を含む場合がある。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表すことができる。
[0187]イントラ予測処理ユニット72は、上述されたように、動き推定ユニット68および動き補償ユニット70によって実行されるインター予測の代替として、現在ビデオブロック用の1つまたは複数の予測ブロックを生成するためにイントラ予測を実行することができる。たとえば、イントラ予測処理ユニット72は、現在ビデオブロック用の1つまたは複数の予測ブロックを生成するために使用するイントラ予測モードを決定することができる。現在ビデオブロック用のイントラ予測モードを決定(すなわち、選択)した後、イントラ予測処理ユニット72は、エントロピー符号化ユニット56に現在ビデオブロック用の選択されたイントラ予測モードを示す情報(たとえば、シンタックス要素)を供給することができる。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化することができる。
[0188]いくつかの例では、様々なイントラ予測モードを使用して、イントラ予測処理ユニット72は、現在ビデオブロックを符号化することができる(すなわち、イントラ予測処理ユニット72は、現在ビデオブロック用の1つまたは複数の予測ブロックを生成することができる)。たとえば、イントラ予測処理ユニット72は、別々の符号化パスの間、現在ビデオブロック用の予測ブロックを生成することができる。イントラ予測処理ユニット72は、テストされたモードから、使用する適切なイントラ予測モードを選択することができる。たとえば、イントラ予測処理ユニット72は、様々なテストされたイントラ予測モードのためのレートひずみ分析を使用してレートひずみ値を計算し、テストされたイントラ予測モードの中で最良のレートひずみ特性を有するイントラ予測モードを選択することができる。一般に、レートひずみ分析は、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測処理ユニット72は、どのイントラ予測モードが予測ブロック用の最良のレートひずみ値を呈するかを決定するために、様々な符号化ブロックについてのひずみおよびレートから比を計算することができる。
[0189]いくつかの例では、動き推定ユニット68は、現在ビデオブロック用の視差ベクトルを決定することができる。動き推定ユニット68は、現在ビデオブロックについての動きベクトル予測を実行するために、現在ブロック用の視差ベクトルを使用することができる。たとえば、動き推定ユニット68は、ビュー間参照ピクチャ内の対応するブロックを決定するために、現在ブロック用の視差ベクトルを使用することができる。加えて、動き推定ユニット68は、現在ビデオブロック用の動きベクトル候補リスト(たとえば、マージ候補リストまたはAMVP候補リスト)を生成することができる。動きベクトル候補リストは、対応するビュー間参照ブロックの1つまたは複数の動きベクトルを指定する1つまたは複数の候補を含む場合がある。動き補償ユニット70は、候補に基づいて予測ブロックを決定することができ、予測ブロックのレートひずみ分析および他のデータに基づいて、候補のうちの1つを選択することができる。動き補償ユニット70は、選択された候補を示す1つまたは複数のシンタックス要素を生成することができる。さらに、いくつかの例では、動き補償ユニット70は、現在ビデオブロックについての残差予測(たとえば、高度残差予測)を実行するために、現在ビデオブロック用の視差ベクトルを使用することができる。したがって、そのような例では、動き補償ユニット70によって最終的に生成された予測ブロックは、現在ビデオブロック用の予測ブロックと現在ビデオブロック用の残差予測子との間の差分に基づく場合がある。
[0190]動き推定ユニット68は、現在ビデオブロック用の視差ベクトルを決定するために、NBDV導出プロセスを使用することができる。本開示の1つまたは複数の技法によれば、動き推定ユニット68は、現在スライス用の1つまたは複数のDDVを初期化することができる。動き推定ユニット68は、現在ビデオブロック用の視差ベクトルを決定するために、NBDV導出プロセスにおいて現在スライス用の1つまたは複数のDDVを使用することができる。いくつかの例では、動き推定ユニット68は、現在スライス用の単一のDDVを初期化し、現在スライスの最初のビデオブロックの後の現在スライスのそれぞれのビデオブロックごとに、現在スライス用のDDVが、コーディング順序でそれぞれのビデオブロックの直前に現れるビデオブロック用の視差ベクトルを指定するように、DDVを更新する。
[0191]このようにして、動き推定ユニット68は、現在ピクチャの現在スライス用のDDVを記憶することができる。さらに、動き推定ユニット68は、DDVに少なくとも部分的に基づいて、現在スライスの第1のビデオブロック用のNBDVを導出することができる。動き補償ユニット70およびビデオエンコーダ20の他のユニットは、第1のビデオブロック用のNBDVに少なくとも部分的に基づいて、第1のビデオブロックを符号化することができる。さらに、動き推定ユニット68は、第1のビデオブロック用のNBDVをDDVとして記憶することができ、それによってDDVを更新する。DDVとして第1のビデオブロック用のNBDVを記憶した後、動き推定ユニット68は、更新されたDDVに少なくとも部分的に基づいて、現在スライスの第2のビデオブロック用のNBDVを導出することができる。動き補償ユニット70およびビデオエンコーダ20の他のユニットは、第2のビデオブロック用のNBDVに少なくとも部分的に基づいて、第2のビデオブロックを符号化することができる。動き推定ユニット68、動き補償ユニット70、およびビデオエンコーダ20の他のユニットは、現在スライスのさらなるビデオブロックについて、これらのアクションの実行を続けることができる。
[0192]予測処理ユニット48が、インター予測またはイントラ予測のいずれかを介して、現在ビデオブロック用の予測ブロックを生成した後、加算器50は、現在ビデオブロックの対応するサンプル値から予測ブロックのサンプル値を減算することによって、残差ブロックを形成することができる。残差ブロック内の残差ビデオデータは、1つまたは複数のTUに含まれる場合がある。変換処理ユニット52は、残差ビデオデータを残差変換係数に変換するために、ある変換を使用することができる。たとえば、変換処理ユニット52は、残差ビデオデータを変換するために、離散コサイン変換(DCT)または概念的に同様の変換を使用することができる。いくつかの例では、変換処理ユニット52は、残差ビデオデータをピクセル領域から周波数領域などの変換領域に変換することができる。
[0193]変換処理ユニット52は、得られた変換係数を量子化ユニット54に送ることができる。量子化ユニット54は、ビットレートをさらに低減するために、変換処理ユニット52によって生成された変換係数を量子化することができる。量子化プロセスは、係数の一部または全部に関連付けられたビット深度を低減することができる。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット54は、量子化変換係数を含む行列の走査を実行することができる。代替として、エントロピー符号化ユニット56が走査を実行する場合がある。
[0194]量子化に続いて、エントロピー符号化ユニット56は、量子化変換係数をエントロピー符号化することができる。言い換えれば、エントロピー符号化ユニット56は、量子化変換係数を表すシンタックス要素をエントロピー符号化することができる。たとえば、エントロピー符号化ユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分化エントロピー(PIPE)コーディング、または別のエントロピー符号化の方法もしくは技法を実行することによって、量子化変換係数をエントロピー符号化することができる。エントロピー符号化ユニット56は、コーディングされている現在スライス用の他のシンタックス要素もエントロピー符号化することができる。
[0195]ビデオエンコーダ20は、ビデオデータの符号化表現を含む符号化ビットストリームを出力することができる。ビットストリームは、エントロピー符号化ユニット56によって生成されたエントロピー符号化シンタックス要素と、他のエントロピー符号化シンタックス要素またはエントロピー符号化されていないシンタックス要素とを含む場合がある。符号化ビットストリームは、ビデオデコーダ30に送信されるか、またはビデオデコーダ30が後で送信するかもしくは取り出すためにアーカイブされる場合がある。
[0196]逆量子化ユニット58および逆変換処理ユニット60は、参照ピクチャの参照ブロックとして後で使用するためのピクセル領域内の残差ブロックを復元するために、それぞれ、逆量子化および逆変換を適用することができる。加算器62は、逆変換処理ユニット60によって生成された残差ブロック内のサンプルを、予測処理ユニット48によって生成された1つまたは複数の予測ブロックの対応するサンプルに加算することによって、サンプルブロックを復元することができる。いくつかの例では、加算器62は、参照ピクチャメモリ66に記憶するための参照ブロックを生成するために、復元された残差ブロックを予測ブロック(たとえば、動き補償ユニット44によって生成された動き補償予測ブロック)に加算する。したがって、参照ピクチャメモリ66は、ビデオデータを記憶するメモリであり得る。動き推定ユニット68および動き補償ユニット70は、後続のビデオフレームまたはピクチャ内のブロックをインター予測するために、参照ブロックとして参照ブロックを使用することができる。動き補償ユニット70は、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つの予測ブロックに残差ブロックを加算することによって、参照ブロックを計算することができる。動き補償ユニット70はまた、動き推定で使用するための整数未満のピクセル値を計算するために、復元された残差ブロックに1つまたは複数の補間フィルタを適用することができる。
[0197]図7の例では、フィルタユニット64は、加算器62によって生成されたサンプルブロックに1つまたは複数のフィルタを適用することができる。たとえば、フィルタユニット64は、復元されたビデオからブロッキネスアーティファクトを除去するために、ブロック境界をフィルタリングするデブロッキングフィルタを適用することができる。いくつかの例では、フィルタユニット64は、デブロッキングフィルタに加えて、追加のループフィルタ(インループまたはポストループ)を使用する。
[0198]図8は、本開示の1つまたは複数の技法を実装することができる、例示的なビデオデコーダ30を示すブロック図である。図8の例では、ビデオデコーダ30は、エントロピー復号ユニット80と、予測処理ユニット82と、逆量子化ユニット84と、逆変換処理ユニット86と、加算器88と、参照ピクチャメモリ90とを含む。予測処理ユニット82は、動き補償ユニット92(すなわち、動きおよび視差補償ユニット)と、イントラ予測処理ユニット94とを含む。いくつかの例では、ビデオデコーダ30は、図7からのビデオエンコーダ20に関して記載された符号化パスとは全体的に逆の復号パスを実行することができる。
[0199]ビデオデコーダ30は、ビデオエンコーダ20から、符号化スライスのビデオブロックと、関連付けられたシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット80は、量子化係数と、動きベクトルと、視差ベクトルと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。より詳細には、エントロピー復号ユニット80は、ビデオビットストリームからシンタックス要素を取得するために、構文解析プロセスを実行することができる。構文解析プロセスを実行することの一部として、エントロピー復号ユニット80は、ビデオビットストリーム内でシグナリングされたエントロピー符号化シンタックス要素をエントロピー復号することができる。エントロピー復号ユニット80は、動きベクトル、視差ベクトル、および他の情報に関連付けられたシンタックス要素を予測処理ユニット82に転送することができる。ビデオデコーダ30は、スライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信することができる。
[0200]現在スライスがイントラコード化スライス(たとえば、Iスライス、SIスライスなど)としてコーディングされたとき、予測処理ユニット82のイントラ予測処理ユニット94は、シグナリングされたイントラ予測モード、および現在フレームまたは現在ピクチャの以前復号されたブロックからのデータに基づいて、現在スライスのビデオブロック用の予測データを生成することができる。現在スライスがインターコーディングされた(たとえば、Pスライス、Bスライス、SPスライスなどである)とき、予測処理ユニット82の動き補償ユニット92は、エントロピー復号ユニット80から受信された動きベクトル、視差ベクトル、およびシンタックス要素に基づいて、現在スライスのビデオブロック用の予測ブロックを製作(すなわち、生成)することができる。
[0201]ビデオデコーダ30の予測処理ユニット82は、(復号ピクチャバッファ(DPB)とも呼ばれる場合もある)参照ピクチャメモリ90に記憶された参照ピクチャに基づいて、(たとえば、デフォルトの)構築技法を使用して、参照フレームリスト、すなわち、リスト0とリスト1とを構築することができる。動き補償ユニット92は、参照ピクチャリストのうちの1つまたは複数内の1つまたは複数の参照ピクチャから予測ブロックを生成することができる。
[0202]動き補償ユニット92は、動きベクトルと他のシンタックス要素とを構文解析することによって、現在スライスのビデオブロックについての予測情報を決定することができ、復号されている現在ビデオブロック用の予測ブロックを生成するために、予測情報を使用することができる。たとえば、動き補償ユニット92は、スライスのビデオブロックをコーディングするために使用する予測モード(たとえば、イントラ予測またはインター予測)を決定する受信されたシンタックス要素、インター予測またはビュー間予測のスライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)を決定するシンタックス要素、スライス用の参照ピクチャリストのうちの1つまたは複数についての構築情報を決定するシンタックス要素、スライスの各インター符号化ビデオブロック用の動きベクトルおよび/または視差ベクトルを決定するシンタックス要素、スライスの各インターコード化ビデオブロックについてのインター予測ステータスを決定するシンタックス要素、ならびに現在スライス内のビデオブロックを復号するために他の情報を決定するシンタックス要素のうちのいくつかを使用することができる。
[0203]動き補償ユニット92はまた、補間フィルタに基づいて補間を実行することができる。動き補償ユニット92は、参照ブロックの整数未満のピクセル用の補間された値を計算するために、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用することができる。いくつかの例では、動き補償ユニット92は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定することができ、予測ブロックを生成するためにその補間フィルタを使用することができる。
[0204]いくつかの例では、動き補償ユニット92は、現在ビデオブロック用の視差ベクトルを決定することができる。動き補償ユニット92は、現在ビデオブロック用の動きベクトル予測を実行するために、現在ブロック用の視差ベクトルを使用することができる。たとえば、動き補償ユニット92は、ビュー間参照ピクチャ内の対応するブロックを決定するために、現在ブロック用の視差ベクトルを使用することができる。加えて、動き補償ユニット92は、現在ビデオブロック用の動きベクトル候補リスト(たとえば、マージ候補リストまたはAMVP候補リスト)を生成することができる。動きベクトル候補リストは、対応するビュー間参照ブロックの1つまたは複数の動きベクトルを指定する1つまたは複数の候補を含む場合がある。動き補償ユニット92は、ビットストリームから取得された1つまたは複数のシンタックス要素に基づいて、候補リスト内の選択された候補を決定することができる。次いで、動き補償ユニット92は、選択された候補によって指定された1つまたは複数の動きベクトルに基づいて、現在ビデオブロック用の1つまたは複数の動きベクトルを決定することができる。たとえば、候補リストがマージ候補リストである場合、動き補償ユニット92は、現在ビデオブロックの動きベクトルが選択された候補によって指定された動きベクトルと一致すると決定することができる。候補リストがAMVP候補リストである場合、動き補償ユニット92は、現在ビデオブロックの動きベクトルが、ビットストリーム内でシグナリングされた動きベクトル差分(MVD)と選択された候補によって指定された動きベクトルの和に等しいと決定することができる。
[0205]いくつかの例では、動き補償ユニット70は、現在ビデオブロックについての残差予測(たとえば、高度残差予測)を実行するために、現在ビデオブロック用の視差ベクトルを使用することができる。そのような例では、動き補償ユニット92は、現在ブロック用の残差予測子を決定するために視差ベクトルを使用することができる。動き補償ユニット92によって最終的に生成された予測ブロックは、現在ビデオブロック用の予測ブロックと現在ビデオブロック用の残差予測子との間の差分に基づく場合がある。
[0206]動き補償ユニット92は、現在ビデオブロック用の視差ベクトルを決定するために、NBDV導出プロセスを使用することができる。本開示の1つまたは複数の技法によれば、動き補償ユニット92は、現在スライス用の1つまたは複数のDDVを初期化することができる。動き補償ユニット92は、現在ビデオブロック用の視差ベクトルを決定するために、NBDV導出プロセスにおいて現在スライス用の1つまたは複数のDDVを使用することができる。いくつかの例では、動き補償ユニット92は、現在スライス用の単一のDDVを初期化し、現在スライスの最初のビデオブロックの後の現在スライスのそれぞれのビデオブロックごとに、現在スライス用のDDVが、コーディング順序でそれぞれのビデオブロックの直前に現れるビデオブロック用の視差ベクトルを指定するように、DDVを更新する。
[0207]このようにして、動き補償ユニット92は、現在ピクチャの現在スライス用のDDVを記憶することができる。さらに、動き補償ユニット92は、DDVに少なくとも部分的に基づいて、現在スライスの第1のビデオブロック用のNBDVを導出することができる。動き補償ユニット92およびビデオデコーダ30の他のユニットは、第1のビデオブロック用のNBDVに少なくとも部分的に基づいて、第1のビデオブロックを復号することができる。さらに、動き補償ユニット92は、第1のビデオブロック用のNBDVをDDVとして記憶することができ、それによってDDVを更新する。DDVとして第1のブロック用のNBDVを記憶した後、動き補償ユニット92は、更新されたDDVに少なくとも部分的に基づいて、現在スライスの第2のビデオブロック用のNBDVを導出することができる。動き補償ユニット92およびビデオデコーダ30の他のユニットは、第2のビデオブロック用のNBDVに少なくとも部分的に基づいて、第2のビデオブロックを復号することができる。動き補償ユニット92およびビデオデコーダ30の他のユニットは、現在スライスのさらなるビデオブロックについて、これらのアクションの実行を続けることができる。
[0208]逆量子化ユニット84は、ビットストリーム内でシグナリングされた量子化変換係数を逆量子化(inverse quantize)、すなわち逆量子化(de-quantize)するために、逆量子化プロセスを実行することができる。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するために、現在スライス内のビデオブロックごとにビデオエンコーダ20によって計算された量子化パラメータの使用を含む場合がある。逆変換処理ユニット86は、ピクセル領域内で残差ブロックを生成するために、変換係数に逆変換を適用することができる。たとえば、逆変換処理ユニット86は、変換係数を変換するために、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを適用することができる。
[0209]動き補償ユニット92が現在ビデオブロック用の予測ブロックを生成した後、ビデオデコーダ30は、逆変換処理ユニット86によって生成された残差ブロックのサンプル値を、動き補償ユニット92によって生成された予測ブロックの対応するサンプル値と加算することによって、復号ビデオブロックを形成することができる。加算器88は、この加算演算を実行する1つまたは複数の構成要素を表す。
[0210]必要な場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタリングするためにデブロッキングフィルタが適用される場合もある。ピクセル遷移を平滑化するために、または場合によってはビデオ品質を改善するために、(コーディングループ内またはコーディングループ後のいずれかで)他のループフィルタが使用される場合もある。次いで、所与のフレームまたはピクチャ内の復号ビデオブロックは、その後の動き補償のために使用される参照ピクチャを記憶する、(復号ピクチャバッファと呼ばれることがある)参照ピクチャメモリ90に記憶される。参照ピクチャメモリ90はまた、図1のディスプレイデバイス32などのディスプレイデバイス上での表示のために、復号ビデオデータを記憶することができる。したがって、参照ピクチャメモリ90は、ビデオデータを記憶するメモリであり得る。
[0211]図9Aは、本開示の一例による、ビデオエンコーダ20の例示的な動作を示すフローチャートである。他の例では、ビデオエンコーダ20は、図9Aの動作と同様であるが、より多いか、より少ないか、または異なるアクションを含む動作を実行することができる。たとえば、他の例では、図9Aの1つまたは複数のアクションが省略、並べ替え、または反復される場合がある。図9Aは図7を参照して説明される。しかしながら、図9Aの例はそのように限定されない。
[0212]図9Aの例では、予測処理ユニット48は、ビデオデータの現在ピクチャのスライス用のただ1つのDDVを記憶することができる(152)。スライスは複数のブロックを含む。さらに、予測処理ユニット48は、特定のブロック用の視差ベクトルを決定するために、NBDV導出プロセスにおいてスライス用のDDVを使用することができる(154)。特定のブロックはスライスのブロックのうちの1つである。さらに、予測処理ユニット48は、スライス用のDDVとして、特定のブロック用の視差ベクトル(すなわち、NBDV)を記憶することができる(156)。
[0213]さらに、図9Aの例では、ビデオエンコーダ20は、特定のブロック用の視差ベクトルに少なくとも部分的に基づいて、特定のブロックを符号化することができる(158)。たとえば、ビデオエンコーダ20は、ビュー間動き予測および/またはビュー間残差予測を実行して特定のブロックの符号化表現を生成するために、特定のブロック用のNBDVを使用することができる。いくつかの例では、ビデオエンコーダ20は、スライスのさらなるブロックに関して図9Aの動作を続ける。さらに、いくつかの例では、スライス用のDDVとして特定のブロック(すなわち、第1のブロック)用の視差ベクトルを記憶した後、予測処理ユニット48は、スライスの第2のブロック用の視差ベクトルを決定するために、NBDV導出プロセスにおいてスライス用のDDVを使用することができる。ビデオエンコーダ20は、第2のブロック用の視差ベクトルに少なくとも部分的に基づいて、第2のブロックを符号化することができる。いくつかの例では、第1のブロックおよび第2のブロックはマクロブロックである。他の例では、第1のブロックおよび第2のブロックはCUであるか、第1のブロックおよび第2のブロックはPUであるか、または第1のブロックおよび第2のブロックはLCUである。
[0214]図9Bは、本開示の一例による、ビデオデコーダ30の例示的な動作を示すフローチャートである。他の例では、ビデオデコーダ30は、図9Bの動作と同様であるが、より多いか、より少ないか、または異なるアクションを含む動作を実行することができる。たとえば、他の例では、図9Aの1つまたは複数のアクションが省略、並べ替え、または反復される場合がある。図9Bは図8を参照して説明される。しかしながら、図9Bの例はそのように限定されない。
[0215]図9Bの例では、予測処理ユニット82は、ビデオデータの現在ピクチャのスライス用のただ1つのDDVを記憶することができる(172)。スライスは複数のブロックを含む。さらに、予測処理ユニット82は、特定のブロック用の視差ベクトルを決定するために、NBDV導出プロセスにおいてスライス用のDDVを使用することができる(174)。特定のブロックはスライスのブロックのうちの1つである。さらに、予測処理ユニット82は、スライス用のDDVとして、特定のブロック用の視差ベクトル(すなわち、NBDV)を記憶することができる(176)。
[0216]さらに、図9Bの例では、ビデオデコーダ30は、特定のブロック用の視差ベクトル(すなわち、NBDV)に少なくとも部分的に基づいて、特定のブロックを復号することができる(178)。たとえば、ビデオデコーダ30は、特定のブロック用のサンプルのブロックを復元するプロセスの一部として、ビュー間動き予測および/またはビュー間残差予測を実行するために、特定のブロック用の視差ベクトルを使用することができる。いくつかの例では、スライス用のDDVとして特定のブロック(すなわち、第1のブロック)用の視差ベクトルを記憶した後、予測処理ユニット82は、スライスの第2のブロック用の視差ベクトルを決定するために、NBDV導出プロセスにおいてスライス用のDDVを使用することができる。ビデオデコーダ30は、第2のブロック用の視差ベクトルに少なくとも部分的に基づいて、第2のブロックを復号することができる。たとえば、ビデオデコーダ30は、第2のブロック用のサンプルのブロックを復元するプロセスの一部として、ビュー間動き予測および/またはビュー間残差予測を実行するために、第2のブロック用の視差ベクトル(すなわち、NBDV)を使用することができる。いくつかの例では、特定のブロック(すなわち、第1のブロック)および第2のブロックはマクロブロックである。他の例では、第1のブロックおよび第2のブロックはCUであるか、第1のブロックおよび第2のブロックはPUであるか、または第1のブロックおよび第2のブロックはLCUである。いくつかの例では、ビデオデコーダ30は、スライスのさらなるブロックに関して図9Bの動作を続けることができる。
[0217]図10は、本開示の一例による、例示的な視差ベクトル導出動作を示すフローチャートである。他の例では、ビデオコーダは、図10の動作と同様であるが、より多いか、より少ないか、または異なるアクションを含む動作を実行することができる。たとえば、他の例では、図10の1つまたは複数のアクションが省略、並べ替え、または反復される場合がある。ビデオエンコーダ20またはビデオデコーダ30などのビデオコーダは、図10の例示的な視差ベクトル導出動作を実行することができる。ビデオコーダは、現在ピクチャの現在スライスの現在ブロック用の視差ベクトルを決定するために、図10の動作を実行することができる。様々な例では、現在ブロックは、マクロブロック、CU、PU、LCU、または別のタイプのブロックもしくはビデオブロックであり得る。
[0218]図10の例では、ビデオコーダは、現在ブロック用の時間隣接ブロックを決定することができる(200)。時間隣接ブロックは、現在ピクチャとは異なるアクセスユニット内の参照ピクチャのブロックであり得る。さらに、ビデオコーダは、時間隣接ブロックが視差動きベクトルを有しているかどうかを決定することができる(202)。時間隣接ブロックが視差動きベクトルを有していることの決定に応答して(202の「はい」)、ビデオコーダは、時間隣接ブロックの視差動きベクトルに基づいて、現在ブロック用の視差ベクトルを設定することができる(204)。たとえば、ビデオコーダは、現在ブロック用の視差ベクトルの水平成分を時間隣接ブロックの視差動きベクトルの水平成分に設定することができ、現在ブロック用の視差ベクトルの垂直成分を0に等しく設定することができる。他の例では、ビデオコーダは、現在ブロック用の視差ベクトルを時間隣接ブロック用の視差動きベクトルに等しく設定することができる。
[0219]一方、時間隣接ブロックが視差動きベクトルを有していないことの決定に応答して(202の「いいえ」)、ビデオコーダは、空間隣接ブロックが視差動きベクトルを有しているかどうかを決定することができる(206)。空間隣接ブロックは、図5の位置A、B、C、またはDのうちの1つまたは複数をカバーするブロックであり得る。空間隣接ブロックが視差動きベクトルを有していることの決定に応答して(206の「はい」)、ビデオコーダは、時間隣接ブロックの視差動きベクトルに基づいて、現在ブロック用の視差ベクトルを設定することができる(208)。たとえば、ビデオコーダは、現在ブロック用の視差ベクトルの水平成分を空間隣接ブロックの視差動きベクトルの水平成分に設定することができ、現在ブロック用の視差ベクトルの垂直成分を0に等しく設定することができる。他の例では、ビデオコーダは、現在ブロック用の視差ベクトルを空間隣接ブロック用の視差動きベクトルに等しく設定することができる。
[0220]空間隣接ブロックが視差動きベクトルを有していないことの決定に応答して(206の「いいえ」)、ビデオコーダは、確認すべき任意の残りの空間隣接ブロックが存在するかどうかを決定することができる(210)。1つまたは複数の残りの空間隣接ブロックが存在することの決定に応答して(210の「はい」)、ビデオコーダは、別の空間隣接ブロックに関してアクション(206)と、適切な場合アクション(208)とを繰り返すことができる。このようにして、空間隣接ブロックのうちの1つが視差動きベクトルを有しているか、または確認すべき残りの空間隣接ブロックが存在しないとビデオコーダが決定するまで、ビデオコーダは、空間隣接ブロックの各々を確認することができる。確認すべき残りの空間隣接ブロックが存在しないことの決定に応答して(210の「いいえ」)、ビデオコーダは、DDVに基づいて現在ブロック用の視差ベクトルを設定することができる(212)。たとえば、ビデオコーダは、現在ブロック用の視差ベクトルをDDVと等しく設定することができる。
[0221](204)、(208)、または(212)において視差ベクトルを設定した後、ビデオコーダは、現在ブロック用の視差ベクトルにDDVを設定することができる(214)。このようにして、ビデオコーダは、現在スライス内の次のブロックが使用するためのDDVを更新する。
[0222]以下は、本開示の1つまたは複数の技法による、さらなる例である。
[0223]例1.本明細書で開示された実施形態のいずれかに従ってビデオデータを符号化する方法。
[0224]例2.本明細書で開示された実施形態のいずれかに従ってビデオデータを復号する方法。
[0225]例3.実行されたとき、例1〜2の方法のいずれかを実施する命令を記憶したコンピュータ可読媒体。
[0226]例4.例1〜2の方法のいずれかを実施するように構成されたプロセッサを備える装置。
[0227]例5.スライスの1つまたは複数の以前コーディングされたブロックから1つまたは複数の導出視差ベクトル(DDV)を記憶することと、1つまたは複数の記憶されたDDVに少なくとも部分的に基づいて、スライスの現在ブロック用の隣接ブロックベース視差ベクトル(NBDV)を導出することと、現在ブロック用のNBDVに少なくとも部分的に基づいて現在ブロックを符号化することとを備える、ビデオデータを符号化する方法。
[0228]例6.記憶されたDDVが現在ブロックの左側にあるブロック用の記憶されたDDVを含み、現在ブロック用のNBDVを導出することが、現在ブロックの左側にあるブロック用の記憶されたDDVに少なくとも部分的に基づいて、現在ブロック用のNBDVを導出することを備える、例5の方法。
[0229]例7.方法が、1つまたは複数の記憶されたDDVが現在ブロックの左側にあるブロック用の記憶されたDDVを含むかどうかを決定することをさらに備え、現在ブロック用のNBDVを導出することが、1つまたは複数の記憶されたDDVが現在ブロックの左側にあるブロック用の記憶されたDDVを含むことの決定に応答して、現在ブロックの左側にあるブロック用の記憶されたDDVに少なくとも部分的に基づいて、現在ブロック用のNBDVを決定することを備える、例5の方法。
[0230]例8.1つまたは複数のDDVを記憶することが、ブロックのDDVの大きさが以前記憶されたDDVの大きさよりも大きいことの決定に応答して、ブロック用のDDVを記憶することを備える、例5の方法。
[0231]例9.現在ブロック用のNBDVを導出することが、記憶されたDDV、時間隣接ブロック用の視差動きベクトル(TDV)、および空間隣接ブロック用の視差動きベクトル(SDV)に少なくとも部分的に基づいて、現在ブロック用のNBDVを導出することを備える、例5の方法。
[0232]例10.現在ブロック用のNBDVを導出することが、TDVまたはSDVのいずれも現在ブロック用のNBDVを決定する際の使用に利用可能ではないことの決定に応答して、現在ブロック用のNBDVが記憶されたDDVに等しいと決定することを備える、例9の方法。
[0233]例11.現在ブロック用のNBDVを導出することが、あらかじめ定義された順序で記憶されたDDVと、TDVと、SDVとを確認しながら、記憶されたDDV、TDV、およびSDVの間から利用可能なゼロでない視差動きベクトルが識別されたとき、現在ブロック用のNBDVが利用可能なゼロでない視差ベクトルに等しいと決定することを備える、例9の方法。
[0234]例12.1つまたは複数のDDVを記憶することが、スライスの2つ以上の以前コーディングされたブロックから2つ以上のDDVを記憶することを備え、2つ以上の記憶されたDDVが特定の順序を有し、現在ブロック用のNBDVを導出することが、あらかじめ定義された確認順序でTDVと、SDVと、2つ以上の記憶されたDDVとを確認しながら、TDV、SDV、および2つ以上の記憶されたDDVの間から利用可能なゼロでない視差ベクトルが識別されたとき、現在ブロック用のNBDVが利用可能なゼロでない視差ベクトルに等しいと決定することを備え、あらかじめ定義された確認順序では、2つ以上の記憶されたDDVが特定の順序に従って確認される、例5の方法。
[0235]例13.現在ブロック用のNBDVを導出することが、深度ビューコンポーネントにアクセスすることが禁止されたことの決定に応答して、1つまたは複数の記憶されたDDVに少なくとも部分的に基づいて、現在ブロック用のNBDVを導出することを備える、例5の方法。
[0236]例14.現在ブロック用のNBDVを導出することが、ベース/参照ビューの深度ビューコンポーネントにアクセスすることが許可されたとき、1つまたは複数の記憶されたDDVに少なくとも部分的に基づいて、現在ブロック用の最初のNBDVを決定することと、潜在的により正確な深度ブロックを識別して現在ブロック用の最初のNBDVを改良するために、現在ブロック用の最初のNBDVを使用することとを備える、例5の方法。
[0237]例15.ベース/参照ビューの深度ビューコンポーネントにアクセスすることが許可されたとき、1つまたは複数の記憶されたDDVを改良することをさらに備える、例5の方法。
[0238]例16.現在ブロックが、マクロブロック、予測ユニット(PU)、コーディングユニット(CU)、または最大コーディングユニット(LCU)である、例5の方法。
[0239]例17.記憶されたDDVの数が、1つのマクロブロック、コーディングユニット、または最大コーディングユニット(LCU)内のブロックの数に比例する、例5の方法。
[0240]例18.記憶されたDDVの数が、現在ブロックに関連付けられたピクチャの幅もしくは高さ、またはスライス内のブロックの数に比例しない、例5の方法。
[0241]例19.現在ブロックがNBDVの結果を使用してコーディングされるときのみ、記憶されたDDVを更新することを方法がさらに備える、例5の方法。
[0242]例20.現在ブロックがインターコーディングされるときのみ、記憶されたDDVを更新することをさらに備える、例5の方法。
[0243]例21.スライスがインターコーディングされるときのみ、記憶されたDDVを更新することをさらに備える、例5の方法。
[0244]例22.現在ブロックがスキップ/直接モードでコーディングされるときのみ、記憶されたDDVを更新することをさらに備える、例5の方法。
[0245]例23.ただ1つのDDVがスライス用に保持され、コーディングユニット(CU)がコーディングされるとそのDDVが更新される、例5の方法。
[0246]例24.スライスがイントラコーディングされないとき、それぞれのCUがNBDVを使用するかどうかにかかわらず、スライスのそれぞれのCUごとにNBDVを起動することと、DDVを更新するためにNBDVの結果を使用することとをさらに備える、例23の方法。
[0247]例25.CUがインターコーディングされるとき、NBDVの結果を決定するためにCU用のNBDVを起動し、DDVを更新するためにNBDVの結果を使用することと、CUがインターコーディングされないとき、DDVの更新を控えることとをさらに備える、例23の方法。
[0248]例26.CU内の予測ユニット(PU)がNBDVの結果を使用してコーディングされるとき、DDVを更新するためにNBDVの結果を使用することと、PUがNBDVの結果を使用してコーディングされないとき、DDVの更新を控えることとをさらに備える、例23の方法。
[0249]例27.CU内の少なくとも1つのPUがスキップモードでコーディングされるとき、DDVを更新するためにNBDVの結果を使用することをさらに備える、例23の方法。
[0250]例28.ただ1つのDDVがスライス用に保持され、PUがコーディングされるとそのDDVが更新される、例5の方法。
[0251]例29.スライスがイントラコーディングされないとき、それぞれのPUがNBDVを使用するかどうかにかかわらず、スライスのそれぞれのPUごとにNBDVを起動することと、DDVを更新するためにNBDVの結果を使用することとをさらに備える、例28の方法。
[0252]例30.PUがインターコーディングされるとき、NBDVの結果を決定するためにPU用のNBDVを起動し、DDVを更新するためにNBDVの結果を使用することと、PUがインターコーディングされないとき、DDVの更新を控えることとをさらに備える、例28の方法。
[0253]例31.PUがNBDVの結果を使用してコーディングされるとき、DDVを更新するためにNBDVの結果を使用することと、PUがNBDVの結果を使用してコーディングされないとき、DDVの更新を控えることとをさらに備える、例28の方法。
[0254]例32.PUがスキップモードでコーディングされるとき、DDVを更新するためにNBDVの結果を使用することをさらに備える、例28の方法。
[0255]例33.空間隣接ブロックおよび時間隣接ブロックが視差動きベクトルを含んでいないとき、NBDVを導出するためにDDVを使用することをさらに備え、NBDVがDDVに等しいように設定される、例23または例28の方法。
[0256]例34.参照ビューの深度にアクセスすることによって、NBDVを改良することをさらに備える、例33の方法。
[0257]例35.NBDVを使用して参照ビューの深度にアクセスすることによって、改良された視差ベクトルを生成することと、改良された視差ベクトルに等しいようにDDVを設定することとをさらに備える、例33の方法。
[0258]例36.1つまたは複数のDDVを記憶することが、1つまたは複数のDDVの水平成分のみを記憶することと、1つまたは複数のDDVの垂直成分を0に等しく設定することとを備える、例5の方法。
[0259]例37.例5〜例36の任意の組合せを備える方法。
[0260]例38.スライスの1つまたは複数の以前コーディングされたブロックから1つまたは複数の導出視差ベクトル(DDV)を記憶することと、1つまたは複数の記憶されたDDVに少なくとも部分的に基づいて、スライスの現在ブロック用の隣接ブロックベース視差ベクトル(NBDV)を導出することと、現在ブロック用のNBDVに少なくとも部分的に基づいて現在ブロックを復号することとを備える、ビデオデータを復号する方法。
[0261]例39.記憶されたDDVが現在ブロックの左側にあるブロック用の記憶されたDDVを含み、現在ブロック用のNBDVを導出することが、現在ブロックの左側にあるブロック用の記憶されたDDVに少なくとも部分的に基づいて、現在ブロック用のNBDVを導出することを備える、例38の方法。
[0262]例40.方法が、1つまたは複数の記憶されたDDVが現在ブロックの左側にあるブロック用の記憶されたDDVを含むかどうかを決定することをさらに備え、現在ブロック用のNBDVを導出することが、1つまたは複数の記憶されたDDVが現在ブロックの左側にあるブロック用の記憶されたDDVを含むことの決定に応答して、現在ブロックの左側にあるブロック用の記憶されたDDVに少なくとも部分的に基づいて、現在ブロック用のNBDVを決定することを備える、例38の方法。
[0263]例41.1つまたは複数のDDVを記憶することが、ブロックのDDVの大きさが以前記憶されたDDVの大きさよりも大きいことの決定に応答して、ブロック用のDDVを記憶することを備える、例38の方法。
[0264]例42.現在ブロック用のNBDVを導出することが、記憶されたDDV、時間隣接ブロック用の視差動きベクトル(TDV)、および空間隣接ブロック用の視差動きベクトル(SDV)に少なくとも部分的に基づいて、現在ブロック用のNBDVを導出することを備える、例38の方法。
[0265]例43.現在ブロック用のNBDVを導出することが、TDVまたはSDVのいずれも現在ブロック用のNBDVを決定する際の使用に利用可能ではないことの決定に応答して、現在ブロック用のNBDVが記憶されたDDVに等しいと決定することを備える、例42の方法。
[0266]例44.現在ブロック用のNBDVを導出することが、あらかじめ定義された順序で記憶されたDDVと、TDVと、SDVとを確認しながら、記憶されたDDV、TDV、およびSDVの間から利用可能なゼロでない視差動きベクトルが識別されたとき、現在ブロック用のNBDVが利用可能なゼロでない視差ベクトルに等しいと決定することを備える、例42の方法。
[0267]例45.1つまたは複数のDDVを記憶することが、スライスの2つ以上の以前コーディングされたブロックから2つ以上のDDVを記憶することを備え、2つ以上の記憶されたDDVが特定の順序を有し、現在ブロック用のNBDVを導出することが、あらかじめ定義された確認順序でTDVと、SDVと、2つ以上の記憶されたDDVとを確認しながら、TDV、SDV、および2つ以上の記憶されたDDVの間から利用可能なゼロでない視差ベクトルが識別されたとき、現在ブロック用のNBDVが利用可能なゼロでない視差ベクトルに等しいと決定することを備え、あらかじめ定義された確認順序では、2つ以上の記憶されたDDVが特定の順序に従って確認される、例38の方法。
[0268]例46.現在ブロック用のNBDVを導出することが、深度ビューコンポーネントにアクセスすることが禁止されたことの決定に応答して、1つまたは複数の記憶されたDDVに少なくとも部分的に基づいて、現在ブロック用のNBDVを導出することを備える、例38の方法。
[0269]例47.現在ブロック用のNBDVを導出することが、ベース/参照ビューの深度ビューコンポーネントにアクセスすることが許可されたとき、1つまたは複数の記憶されたDDVに少なくとも部分的に基づいて、現在ブロック用の最初のNBDVを決定することと、潜在的により正確な深度ブロックを識別して現在ブロック用の最初のNBDVを改良するために、現在ブロック用の最初のNBDVを使用することとを備える、例38の方法。
[0270]例48.ベース/参照ビューの深度ビューコンポーネントにアクセスすることが許可されたとき、1つまたは複数の記憶されたDDVを改良することをさらに備える、例38の方法。
[0271]例49.現在ブロックが、マクロブロック、予測ユニット(PU)、コーディングユニット(CU)、または最大コーディングユニット(LCU)である、例38の方法。
[0272]例50.記憶されたDDVの数が、1つのマクロブロック、コーディングユニット、または最大コーディングユニット(LCU)内のブロックの数に比例する、例38の方法。
[0273]例51.記憶されたDDVの数が、現在ブロックに関連付けられたピクチャの幅もしくは高さ、またはスライス内のブロックの数に比例しない、例38の方法。
[0274]例52.ただ1つのDDVがスライス用に保持され、コーディングユニット(CU)がコーディングされるとそのDDVが更新される、例38の方法。
[0275]例53.スライスがイントラコーディングされないとき、それぞれのCUがNBDVを使用するかどうかにかかわらず、スライスのそれぞれのCUごとにNBDVを起動することと、DDVを更新するためにNBDVの結果を使用することとをさらに備える、例52の方法。
[0276]例54.CUがインターコーディングされるとき、NBDVの結果を決定するためにCU用のNBDVを起動し、DDVを更新するためにNBDVの結果を使用することと、CUがインターコーディングされないとき、DDVの更新を控えることとをさらに備える、例52の方法。
[0277]例55.CU内の予測ユニット(PU)がNBDVの結果を使用してコーディングされるとき、DDVを更新するためにNBDVの結果を使用することと、PUがNBDVの結果を使用してコーディングされないとき、DDVの更新を控えることとをさらに備える、例52の方法。
[0278]例56.CU内の少なくとも1つのPUがスキップモードでコーディングされるとき、DDVを更新するためにNBDVの結果を使用することをさらに備える、例52の方法。
[0279]例57.ただ1つのDDVがスライス用に保持され、PUがコーディングされるとそのDDVが更新される、例38の方法。
[0280]例58.スライスがイントラコーディングされないとき、それぞれのPUがNBDVを使用するかどうかにかかわらず、スライスのそれぞれのPUごとにNBDVを起動することと、DDVを更新するためにNBDVの結果を使用することとをさらに備える、例57の方法。
[0281]例59.PUがインターコーディングされるとき、NBDVの結果を決定するためにPU用のNBDVを起動し、DDVを更新するためにNBDVの結果を使用することと、PUがインターコーディングされないとき、DDVの更新を控えることとをさらに備える、例57の方法。
[0282]例60.PUがNBDVの結果を使用してコーディングされるとき、DDVを更新するためにNBDVの結果を使用することと、PUがNBDVの結果を使用してコーディングされないとき、DDVの更新を控えることとをさらに備える、例57の方法。
[0283]例61.PUがスキップモードでコーディングされるとき、DDVを更新するためにNBDVの結果を使用することをさらに備える、例57の方法。
[0284]例62.空間隣接ブロックおよび時間隣接ブロックが視差動きベクトルを含んでいないとき、NBDVを導出するためにDDVを使用することをさらに備え、NBDVがDDVに等しいように設定される、例52または例57の方法。
[0285]例63.参照ビューの深度にアクセスすることによって、NBDVを改良することをさらに備える、例62の方法。
[0286]例64.NBDVを使用して参照ビューの深度にアクセスすることによって、改良された視差ベクトルを生成することと、改良された視差ベクトルに等しいようにDDVを設定することとをさらに備える、例62の方法。
[0287]例65.1つまたは複数のDDVを記憶することが、1つまたは複数のDDVの水平成分のみを記憶することと、1つまたは複数のDDVの垂直成分を0に等しく設定することとを備える、例38の方法。
[0288]例66.例38〜例65の任意の組合せを備える方法。
[0289]例67.スライスの1つまたは複数の以前コーディングされたブロックから1つまたは複数の導出視差ベクトル(DDV)を記憶するための手段と、1つまたは複数の記憶されたDDVに少なくとも部分的に基づいて、スライスの現在ブロック用の隣接ブロックベース視差ベクトル(NBDV)を導出するための手段と、現在ブロック用のNBDVに少なくとも部分的に基づいて現在ブロックを符号化するための手段とを備える、ビデオデータを符号化するように構成された装置。
[0290]例68.例6〜例36の方法のいずれかを実施するための手段をさらに備える、例67の装置。
[0291]例69.スライスの1つまたは複数の以前コーディングされたブロックから1つまたは複数の導出視差ベクトル(DDV)を記憶するための手段と、1つまたは複数の記憶されたDDVに少なくとも部分的に基づいて、スライスの現在ブロック用の隣接ブロックベース視差ベクトル(NBDV)を導出するための手段と、現在ブロック用のNBDVに少なくとも部分的に基づいて現在ブロックを復号するための手段とを備える、ビデオデータを復号するように構成された装置。
[0292]例70.例38〜例65の方法のいずれかを実施するための手段をさらに備える、例69の装置。
[0293]例71.例1〜例36のいずれかの方法を実装するように構成された1つまたは複数のプロセッサを備える、ビデオ符号化デバイス。
[0294]例72.例38〜例65のいずれかの方法を実装するように構成された1つまたは複数のプロセッサを備える、ビデオ復号デバイス。
[0295]例73.ビデオ符号化装置によって実行されたとき、例1〜例36のいずれかの方法を実施するようにビデオ符号化装置を構成する命令を記憶した、コンピュータ可読記憶媒体。
[0296]例74.ビデオ復号装置によって実行されたとき、例38〜例65のいずれかの方法を実施するようにビデオ符号化装置を構成する命令を記憶した、コンピュータ可読記憶媒体。
[0297]例75.1つまたは複数の隣接ブロックに基づいて、ピクチャの現在ブロック用の変数を導出することと、ここにおいて、変数はビットストリーム内で直接的または間接的にシグナリングされない、現在ブロックを復号するために変数を使用することと、現在ブロックが復号された後、変数を更新することとを備える、ビデオデータを復号するための方法。
[0298]例76.1つまたは複数の隣接ブロックに基づいて、ピクチャの現在ブロック用の変数を導出することと、ここにおいて、変数はビットストリーム内で直接的または間接的にシグナリングされない、現在ブロックを復号するために変数を使用することと、現在ブロックが復号された後、変数を更新することとを行うように構成されたビデオデコーダを備える、デバイス。
[0299]例77.1つまたは複数の隣接ブロックに基づいて、ピクチャの現在ブロック用の変数を導出するための手段と、ここにおいて、変数はビットストリーム内で直接的または間接的にシグナリングされない、現在ブロックを復号するために変数を使用するための手段と、現在ブロックが復号された後、変数を更新するための手段とを備える、デバイス。
[0300]例78.実行されたとき、1つまたは複数の隣接ブロックに基づいて、ピクチャの現在ブロック用の変数を導出することと、ここにおいて、変数はビットストリーム内で直接的または間接的にシグナリングされない、現在ブロックを復号するために変数を使用することと、現在ブロックが復号された後、変数を更新することとを行うようにビデオ復号デバイスを構成する命令を記憶した、コンピュータ可読記憶媒体。
[0301]1つまたは複数の例では、記載された機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せに実装される場合がある。ソフトウェアに実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行される場合がある。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含む場合がある。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号もしくは搬送波などの通信媒体に対応する場合がある。データ記憶媒体は、本開示に記載された技法を実装するための命令、コード、および/またはデータ構造を取り出すために、1つもしくは複数のコンピュータ、または1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含む場合がある。
[0302]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得るし、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、任意の接続は、適切にコンピュータ可読媒体と称される。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時媒体を含まないが、代わりに、非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれるべきである。
[0303]命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)などの1つもしくは複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価な集積回路もしくはディスクリート論理回路によって実行される場合がある。したがって、本明細書で使用する「プロセッサ」という用語は、前述の構造、または本明細書に記載された技法の実装に適した任意の他の構造のいずれかを指す場合がある。加えて、いくつかの態様では、本明細書に記載された機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/もしくはソフトウェアモジュール内に設けられるか、または複合コーデックに組み込まれる場合がある。また、本技法は、1つまたは複数の回路または論理要素の中に完全に実装される可能性がある。
[0304]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置の中に実装される場合がある。開示された技法を実施するように構成されたデバイスの機能的態様を強調するために、本開示では、様々な構成要素、モジュール、またはユニットが記載されているが、それらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上述されたように、適切なソフトウェアおよび/またはファームウェアとともに、様々なユニットがコーデックハードウェアユニット内で組み合わせられるか、または上述されたような1つもしくは複数のプロセッサを含む、相互動作可能なハードウェアユニットの集合体よって設けられる場合がある。
[0305]様々な例が記載された。これらおよび他の例は、以下の特許請求の範囲内にある。
以下に本願出願当初の特許請求の範囲を付記する。
[C1] ビデオデータを復号する方法であって、
前記ビデオデータの現在ピクチャのスライス用のただ1つの導出視差ベクトル(DDV)を記憶することと、ここにおいて、前記スライスは複数のブロックを含む、
特定のブロック用の視差ベクトルを決定するために、隣接ブロックベース視差ベクトル(NBDV)導出プロセスにおいて、前記スライス用の前記DDVを使用することと、ここにおいて、前記特定のブロックは前記スライスの前記ブロックのうちの1つである、
前記スライス用の前記DDVとして、前記特定のブロック用の前記視差ベクトルを記憶することとを備える、方法。
[C2] 前記特定のブロック用の前記視差ベクトルに少なくとも部分的に基づいて、前記特定のブロックを復号することをさらに備える、C1に記載の方法。
[C3] 前記特定のブロックが第1のブロックであり、前記方法が、前記スライス用の前記DDVとして、前記第1のブロック用の前記視差ベクトルを記憶した後、
第2のブロック用の視差ベクトルを決定するために、NBDV導出プロセスにおいて、前記スライス用の前記DDVを使用することと、ここにおいて、前記第2のブロックは前記スライスの前記ブロックのうちの1つである、
前記第2のブロック用の前記視差ベクトルに少なくとも部分的に基づいて、前記第2のブロックを復号することとをさらに備える、C1に記載の方法。
[C4] 前記第1のブロックが、前記第2のブロックのすぐ左側にある、C3に記載の方法。
[C5] 前記第1のブロックがマクロブロックであり、前記第2のブロックがマクロブロックである、C3に記載の方法。
[C6] 前記第1のブロックおよび前記第2のブロックがコーディングユニット(CU)であるか、前記第1のブロックおよび前記第2のブロックが予測ユニット(PU)であるか、または前記第1のブロックおよび前記第2のブロックが最大コーディングユニット(LCU)である、C3に記載の方法。
[C7] 前記NBDV導出プロセスにおいて前記スライス用の前記DDVを使用することが、前記特定のブロック用の前記視差ベクトルを導出するために、前記スライス用の前記DDVと、時間隣接ブロック用の視差動きベクトルと、空間隣接ブロック用の視差動きベクトルとを使用することを備える、C1に記載の方法。
[C8] 前記NBDV導出プロセスにおいて前記スライス用の前記DDVを使用することが、
前記時間隣接ブロックが視差動きベクトルを有していないと決定した後、および前記空間隣接ブロックが視差動きベクトルを有していないと決定した後、前記スライス用の前記DDVに等しいように前記特定のブロック用の前記視差ベクトルを設定することを備える、C7に記載の方法。
[C9] 前記NBDV導出プロセスにおいて前記スライス用の前記DDVを使用することが、
前記時間隣接ブロックが視差動きベクトルを有しているかどうかを決定することと、
前記時間隣接ブロックが視差動きベクトルを有していることの決定に応答して、前記時間隣接ブロックの前記視差動きベクトルに基づいて、前記特定のブロック用の前記視差ベクトルを導出することと、
前記時間隣接ブロックが視差動きベクトルを有していないことの決定に応答して、複数の空間隣接ブロック内の任意の空間隣接ブロックが視差動きベクトルを有しているかどうかを決定することと、
前記複数の空間隣接ブロック内の特定の空間隣接ブロックが視差動きベクトルを有していることの決定に応答して、前記特定の空間隣接ブロックの前記視差動きベクトルに基づいて、前記特定のブロック用の前記視差ベクトルを導出することと、
前記複数の空間隣接ブロック内のいずれの空間隣接ブロックも視差動きベクトルを有していないことの決定に応答して、前記スライス用の前記DDVとして、前記特定のブロック用の前記視差ベクトルを導出することとを備える、C8に記載の方法。
[C10] 前記特定のブロックの後にコーディングされる前記スライスのブロックごとに1度、前記スライス用の前記DDVを更新することをさらに備える、C1に記載の方法。
[C11] 前記スライス用の前記DDVとして、前記特定のブロック用の前記視差ベクトルを記憶することが、ある条件が満足されたことに応答して、前記特定のブロック用の前記視差ベクトルを指定するために、前記スライス用の前記DDVを更新することを備え、前記条件が、
前記特定のブロックがビュー間動き予測を使用してコーディングされること、
前記特定のブロックがインターコーディングされること、
前記スライスがインターコーディングされること、
前記特定のブロックがスキップモードまたは直接モードでコーディングされること、
前記特定のブロック用の前記視差ベクトルの大きさが、前記スライス用の前記DDVの大きさよりも大きいこと、および
前記スライス用の前記DDVがゼロではないこと、のうちの1つである、C1に記載の方法。
[C12] 深度ビューコンポーネント内の深度ピクセルに基づいて、前記特定のブロック用の前記視差ベクトルを改良することをさらに備え、
前記スライス用の前記DDVとして、前記特定のブロック用の前記視差ベクトルを記憶することが、前記特定のブロック用の前記改良された視差ベクトルを指定するために、前記スライス用の前記DDVを更新することを備える、C1に記載の方法。
[C13] 前記方法が、前記スライスの前記ブロックのいずれか用の暗黙視差ベクトルを記憶しないことをさらに備える、C1に記載の方法。
[C14] ビデオデータを符号化する方法であって、
前記ビデオデータの現在ピクチャのスライス用のただ1つの導出視差ベクトル(DDV)を記憶することと、ここにおいて、前記スライスは複数のブロックを含む、
特定のブロック用の視差ベクトルを決定するために、隣接ブロックベース視差ベクトル(NBDV)導出プロセスにおいて、前記スライス用の前記DDVを使用することと、ここにおいて、前記特定のブロックは前記スライスの前記ブロックのうちの1つである、
前記スライス用の前記DDVとして、前記特定のブロック用の前記視差ベクトルを記憶することとを備える、方法。
[C15] 前記特定のブロック用の前記視差ベクトルに少なくとも部分的に基づいて、前記特定のブロックを符号化することをさらに備える、C14に記載の方法。
[C16] 前記特定のブロックが第1のブロックであり、前記方法が、前記スライス用の前記DDVとして、前記第1のブロック用の前記視差ベクトルを記憶した後、
第2のブロック用の視差ベクトルを決定するために、NBDV導出プロセスにおいて、前記スライス用の前記DDVを使用することと、ここにおいて、前記第2のブロックは前記スライスの前記ブロックのうちの1つである、
前記第2のブロック用の前記視差ベクトルに少なくとも部分的に基づいて、前記第2のブロックを符号化することとさらに備える、C14に記載の方法。
[C17] 前記第1のブロックが、前記第2のブロックのすぐ左側にある、C16に記載の方法。
[C18] 前記第1のブロックがマクロブロックであり、前記第2のブロックがマクロブロックである、C16に記載の方法。
[C19] 前記第1のブロックおよび前記第2のブロックがコーディングユニット(CU)であるか、前記第1のブロックおよび前記第2のブロックが予測ユニット(PU)であるか、または前記第1のブロックおよび前記第2のブロックが最大コーディングユニット(LCU)である、C16に記載の方法。
[C20] 前記特定のブロックについての前記NBDV導出プロセスにおいて前記スライス用の前記DDVを使用することが、前記特定のブロック用の前記視差ベクトルを導出するために、前記スライス用の前記DDVと、時間隣接ブロック用の視差動きベクトルと、空間隣接ブロック用の視差動きベクトルとを使用することを備える、C14に記載の方法。
[C21] 前記NBDV導出プロセスにおいて前記スライス用の前記DDVを使用することが、
前記時間隣接ブロックが視差動きベクトルを有していないと決定した後、および前記空間隣接ブロックが視差動きベクトルを有していないと決定した後、前記スライス用の前記DDVに等しいように前記特定のブロック用の前記視差ベクトルを設定することを備える、C20に記載の方法。
[C22] 前記NBDV導出プロセスにおいて前記スライス用の前記DDVを使用することが、
前記時間隣接ブロックが視差動きベクトルを有しているかどうかを決定することと、
前記時間隣接ブロックが視差動きベクトルを有していることの決定に応答して、前記時間隣接ブロックの前記視差動きベクトルに基づいて、前記特定のブロック用の前記視差ベクトルを導出することと、
前記時間隣接ブロックが視差動きベクトルを有していないことの決定に応答して、複数の空間隣接ブロック内の任意の空間隣接ブロックが視差動きベクトルを有しているかどうかを決定することと、
前記複数の空間隣接ブロック内の特定の空間隣接ブロックが視差動きベクトルを有していることの決定に応答して、前記特定の空間隣接ブロックの前記視差動きベクトルに基づいて、前記特定のブロック用の前記視差ベクトルを導出することと、
前記複数の空間隣接ブロック内のいずれの空間隣接ブロックも視差動きベクトルを有していないことの決定に応答して、前記スライス用の前記DDVとして、前記特定のブロック用の前記視差ベクトルを導出することとを備える、C21に記載の方法。
[C23] 前記特定のブロックの後にコーディングされる前記スライスのブロックごとに1度、前記スライス用の前記DDVを更新することをさらに備える、C14に記載の方法。
[C24] 前記スライス用の前記DDVとして、前記特定のブロック用の前記視差ベクトルを記憶することが、ある条件が満足されたことに応答して、前記特定のブロック用の前記視差ベクトルを指定するために、前記スライス用の前記DDVを更新することを備え、前記条件が、
前記特定のブロックがビュー間動き予測を使用してコーディングされること、
前記特定のブロックがインターコーディングされること、
前記スライスがインターコーディングされること、
前記特定のブロックがスキップモードまたは直接モードでコーディングされること、
前記特定のブロック用の前記視差ベクトルの大きさが、前記スライス用の前記DDVの大きさよりも大きいこと、および
前記スライス用の前記DDVがゼロではないこと、のうちの1つである、C14に記載の方法。
[C25] 深度ビューコンポーネント内の深度ピクセルに基づいて、前記特定のブロック用の前記視差ベクトルを改良することをさらに備え、
前記スライス用の前記DDVとして、前記特定のブロック用の前記視差ベクトルを記憶することが、前記特定のブロック用の前記改良された視差ベクトルを指定するために、前記スライス用の前記DDVを更新することを備える、C14に記載の方法。
[C26] 前記方法が、前記スライスの前記ブロックのいずれか用の暗黙視差ベクトルを記憶しないことをさらに備える、C14に記載の方法。
[C27] ビデオデータを記憶するメモリと、
前記ビデオデータの現在ピクチャのスライス用のただ1つの導出視差ベクトル(DDV)を記憶することと、ここにおいて、前記スライスは複数のブロックを含む、
特定のブロック用の視差ベクトルを決定するために、隣接ブロックベース視差ベクトル(NBDV)導出プロセスにおいて、前記スライス用の前記DDVを使用することと、ここにおいて、前記特定のブロックは前記スライスの前記ブロックのうちの1つである、
前記スライス用の前記DDVとして、前記特定のブロック用の前記視差ベクトルを記憶することと
を行うように構成された、1つまたは複数のプロセッサとを備える、ビデオコーディングデバイス。
[C28] 前記1つまたは複数のプロセッサが、前記特定のブロック用の前記視差ベクトルに少なくとも部分的に基づいて、前記特定のブロックを符号化するように構成された、C27に記載のビデオコーディングデバイス。
[C29] 前記1つまたは複数のプロセッサが、前記特定のブロック用の前記視差ベクトルに少なくとも部分的に基づいて、前記特定のブロックを復号するように構成された、C27に記載のビデオコーディングデバイス。
[C30] 前記特定のブロックが第1のブロックであり、前記スライス用の前記DDVとして、前記第1のブロック用の前記視差ベクトルを記憶した後、後、前記1つまたは複数のプロセッサが、
第2のブロック用の視差ベクトルを決定するために、NBDV導出プロセスにおいて、前記スライス用の前記DDVを使用することと、ここにおいて、前記第2のブロックは前記スライスの前記ブロックのうちの1つである、
前記第2のブロック用の前記視差ベクトルに少なくとも部分的に基づいて、前記第2のブロックをコーディングとを行うように、前記1つまたは複数のプロセッサがさらに構成された、C27に記載のビデオコーディングデバイス。
[C31] 前記第1のブロックが、前記第2のブロックのすぐ左側にある、C27に記載のビデオコーディングデバイス。
[C32] 前記第1のブロックがマクロブロックであり、前記第2のブロックがマクロブロックである、C27に記載のビデオコーディングデバイス。
[C33] 前記第1のブロックおよび前記第2のブロックがコーディングユニット(CU)であるか、前記第1のブロックおよび前記第2のブロックが予測ユニット(PU)であるか、または前記第1のブロックおよび前記第2のブロックが最大コーディングユニット(LCU)である、C27に記載のビデオコーディングデバイス。
[C34] 前記1つまたは複数のプロセッサが、前記特定のブロック用の前記視差ベクトルを導出するために、前記スライス用の前記DDVと、時間隣接ブロック用の視差動きベクトルと、空間隣接ブロック用の視差動きベクトルとを使用するように構成された、C27に記載のビデオコーディングデバイス。
[C35] 前記1つまたは複数のプロセッサが、前記時間隣接ブロックが視差動きベクトルを有していないと決定した後、および前記空間隣接ブロックが視差動きベクトルを有していないと決定した後、前記スライス用の前記DDVに等しいように前記特定のブロック用の前記視差ベクトルを設定するように構成された、C34に記載のビデオコーディングデバイス。
[C36] 前記1つまたは複数のプロセッサが、
前記時間隣接ブロックが視差動きベクトルを有しているかどうかを決定することと、
前記時間隣接ブロックが視差動きベクトルを有していることの決定に応答して、前記時間隣接ブロックの前記視差動きベクトルに基づいて、前記特定のブロック用の前記視差ベクトルを導出することと、
前記時間隣接ブロックが視差動きベクトルを有していないことの決定に応答して、複数の空間隣接ブロック内の任意の空間隣接ブロックが視差動きベクトルを有しているかどうかを決定することと、
前記複数の空間隣接ブロック内の特定の空間隣接ブロックが視差動きベクトルを有していることの決定に応答して、前記特定の空間隣接ブロックの前記視差動きベクトルに基づいて、前記特定のブロック用の前記視差ベクトルを導出することと、
前記複数の空間隣接ブロック内のいずれの空間隣接ブロックも視差動きベクトルを有していないことの決定に応答して、前記スライス用の前記DDVとして、前記特定のブロック用の前記視差ベクトルを導出することとを行うように構成された、C35に記載のビデオコーディングデバイス。
[C37] 前記1つまたは複数のプロセッサが、前記第1のブロックの後にコーディングされる前記スライスのブロックごとに1度、前記DDVを更新するように構成された、C27に記載のビデオコーディングデバイス。
[C38] 前記1つまたは複数のプロセッサが、ある条件が満足されたことに応答して、前記特定のブロック用の前記視差ベクトルを指定するために、前記スライス用の前記DDVを更新するように構成され、前記条件が、
前記特定のブロックがビュー間動き予測を使用してコーディングされること、
前記特定のブロックがインターコーディングされること、
前記スライスがインターコーディングされること、
前記特定のブロックがスキップモードまたは直接モードでコーディングされること、
前記特定のブロック用の前記視差ベクトルの大きさが、前記スライス用の前記DDVの大きさよりも大きいこと、および
前記スライス用の前記DDVがゼロではないこと、のうちの1つである、C27に記載のビデオコーディングデバイス。
[C39] 前記1つまたは複数のプロセッサが、深度ビューコンポーネント内の深度ピクセルに基づいて、前記特定のブロック用の前記視差ベクトルを改良するように構成され、
前記1つまたは複数のプロセッサが、前記特定のブロック用の前記改良された視差ベクトルを指定するために、前記スライス用の前記DDVを更新するように構成された、C27に記載のビデオコーディングデバイス。
[C40] 前記1つまたは複数のプロセッサが、前記スライスの任意のブロック用の暗黙視差ベクトルを記憶しないように構成された、C27に記載のビデオコーディングデバイス。
[C41] ビデオデータをコーディングするように構成されたビデオコーディングデバイスであって、
前記ビデオデータの現在ピクチャのスライス用のただ1つの導出視差ベクトル(DDV)を記憶するための手段と、ここにおいて、前記スライスは複数のブロックを含む、
特定のブロック用の視差ベクトルを決定するために、隣接ブロックベース視差ベクトル(NBDV)導出プロセスにおいて、前記スライス用の前記DDVを使用するための手段と、ここにおいて、前記特定のブロックは前記スライスの前記ブロックのうちの1つである、
前記スライス用の前記DDVとして、前記特定のブロック用の前記視差ベクトルを記憶するための手段とを備える、ビデオコーディングデバイス。
[C42] 実行されたとき、
ビデオデータの現在ピクチャのスライス用のただ1つの導出視差ベクトル(DDV)を記憶することと、ここにおいて、前記スライスは複数のブロックを含む、
特定のブロック用の視差ベクトルを決定するために、隣接ブロックベース視差ベクトル(NBDV)導出プロセスにおいて、前記スライス用の前記DDVを使用することと、ここにおいて、前記特定のブロックは前記スライスの前記ブロックのうちの1つである、
前記スライス用の前記DDVとして、前記特定のブロック用の前記視差ベクトルを記憶することとをビデオコーディングデバイスの1つまたは複数のプロセッサに行わせる命令を記憶した、非一時的コンピュータ可読媒体。