本出願は、その内容全体が参照により本明細書に組み込まれている、2012年12月14日に出願した米国仮特許出願第61/737,639号の利益を主張するものである。
[0034]高効率ビデオコーディング(HEVC)は、新しく開発されたビデオコーディング規格である。3D−HEVCは、3次元(3D)ビデオデータに対するHEVCの拡張である。3D−HEVCは、異なる視点からの同じシーンの複数のビューを構成する。3D−HEVCに対する標準化の取組みは、HEVCに基づくマルチビュービデオコーデックの標準化を含む。3D−HEVCでは、異なるビューから再構成されたビューコンポーネント(すなわち、再構成ピクチャ)に基づくビュー間予測がイネーブルされる。さらに、3D−HEVCは、ビュー間動き予測とビュー間残差予測とを実装する。
[0035]ビデオの同じ時間インスタンスを表す各ビューのピクチャは、類似のビデオコンテンツを含む。しかしながら、ビューのビデオコンテンツは、互いに関して空間的に変位され得る。特にビューのビデオコンテンツは、異なる視点を表し得る。たとえば、第1のビュー内のピクチャ内のビデオブロックは、第2のビュー内のピクチャ内のビデオブロックに類似しているビデオコンテンツを含み得る。この例では、第1のビュー内のピクチャ内のビデオブロックの位置と第2のビュー内のピクチャ内のビデオブロックの位置は、異なり得る。たとえば、異なるビュー内のビデオブロックの位置の間にはある程度の変位があり得る。
[0036]ビデオブロックに対する視差ベクトルは、この変位の尺度を与える。たとえば、第1のビュー内のピクチャのビデオブロックは、第2のビュー内のピクチャ内の対応するビデオブロックの変位を示す視差ベクトルに関連付けられ得る。
[0037]ビデオブロックに対する視差ベクトルを導出する一技術は、隣接ブロック視差ベクトル(NBDV)導出と称される。NBDV導出技術では、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、現在のブロックの隣接要素であるブロックを評価して、隣接ブロックのどれかが異なるビュー内のピクチャとともにインター予測されているかどうかを決定する。たとえば、マルチビューコーディングは、ビュー間予測を行う。ビュー間予測では、第1のビュー内のピクチャ内のビデオブロックは、第2の異なるビュー内のピクチャ内のデータ(たとえば、ビデオブロック)とともにインター予測される。ビュー間予測は、インター予測に類似し、ここにおいて、インター予測とビュー間予測の両方において、ピクチャ内のビデオブロックは、別のピクチャ内のビデオブロックとともにインター予測される。しかしながら、通常のインター予測では、ピクチャは同じビューからのものであるが、ビュー間予測では、ピクチャは異なるビューからのものである。
[0038]ビュー間動き補償と、ビュー間動き予測と、ビュー間残差予測とを含む、いくつかの形態のビュー間予測がある。ビュー間動き補償では、ビデオコーダは、ビュー間予測されているブロックに対する動きベクトルを決定することができる。混同を避けるために、ビュー間予測に使用される動きベクトルは、この動きベクトルが異なるビュー内のピクチャを指しているので、視差動きベクトルと称される。通常のインター予測に使用される動きベクトルは、この動きベクトルが同じビュー内であるが、異なる時間インスタンスにあるピクチャを指しているので、時間的動きベクトルと称される。
[0039]視差動きベクトルは、現在のブロックのビュー間動き補償に使用されるブロックを識別する。その一方で、視差ベクトルは、現在のブロックのものと類似のビデオコンテンツを含む異なるビュー内のピクチャ内のブロックを識別する。視差動きベクトルの目的と異なる視差ベクトルの様々な目的があり得る。しかしながら、視差ベクトルは、視差動きベクトルと同じ目的に使用されることも可能であると思われるが、その場合、視差ベクトルと視差動きベクトルとは同じになる。しかしながら、一般に、視差ベクトルと視差動きベクトルとは、異なるベクトルであり、異なる目的に使用され得る。
[0040]NBDV導出技術において、ビデオコーダは、現在のブロックの隣接ブロックを評価し、隣接ブロックのどれかが視差動きベクトルとともにビュー間予測されているかどうかを決定する。隣接ブロックが、視差動きベクトルとともにビュー間予測されている場合、ビデオコーダは、隣接ブロックに対する視差動きベクトルを現在のブロックに対する視差ベクトルに変換することができる。たとえば、ビデオコーダは、視差動きベクトルの水平成分を保持し、視差動きベクトルの垂直成分を0に設定することによって隣接ブロックに対する視差動きベクトルを現在のブロックに対する視差ベクトルに変換することができる。他の例では、ビデオコーダは、隣接ブロックに対する視差動きベクトルを現在のブロックに対する視差ベクトルに変換するときに垂直成分を0以外の値に設定することができる。隣接ブロックは、現在のブロックと同じピクチャ内にブロックを含み得る(たとえば、空間的隣接ブロック)。そのような空間的隣接ブロックは、視差動きベクトルとともにビュー間予測されるものとしてよく、現在のブロックに対する視差ベクトルを形成し得る空間的隣接ブロックに対する視差動きベクトルは、空間的視差ベクトル(SDV)と称される。いくつかの例では、隣接ブロックは、現在のブロックが置かれているピクチャと異なるピクチャ内にブロックを含み得る(たとえば、時間的隣接ブロック)。そのような時間的隣接ブロックは、視差動きベクトルとともにビュー間予測されるものとしてよく、現在のブロックに対する視差ベクトルを形成し得る時間的隣接ブロックに対する視差動きベクトルは、時間的視差ベクトル(TDV)と称される。
[0041]いくつかの例では、ビデオコーダは、NBDV導出を実行する一環として、隣接ブロックの暗黙的視差ベクトル(IDV)に基づいて現在のブロックに対する視差ベクトルを決定することができる。上で示されているように、ビデオコーダがNBDV導出を実行するときに、ビデオコーダは、視差動きベクトルについて隣接ブロックをチェックする。ビデオコーダが視差動きベクトルについて隣接ブロックをチェックするときに、ビデオコーダは、隣接ブロックがIDVを有しているかどうかも決定することができる。隣接ブロックが、IDVを有している場合、ビデオコーダは、隣接ブロックがIDVを有していることを示すように隣接ブロックに対するIDVフラグを設定することができる。視差動きベクトルについて隣接ブロックの各々をチェックした後に、ビデオコーダが、隣接ブロックのどれも視差動きベクトルを有していないと決定した場合、ビデオコーダは、隣接ブロックのIDVフラグを使用して、IDVを有している隣接ブロックを識別することができる。次いで、ビデオコーダは、IDVを現在のブロックに対する視差ベクトルに変換することができる。隣接ブロックに対するIDVは、隣接ブロックの予測(すなわち、コーディング)時に隣接ブロックについて導出された視差ベクトルであり得る。
[0042]現在のブロックに対する視差ベクトルを導出することについての上記の説明から、現在のブロックに対する視差ベクトルの導出は、計算集約的(computationally intensive)であり、すでにコーディングされている隣接ブロックに対する視差動きベクトルとIDVとを決定するためにメモリに対する複数回の呼び出しを必要とする場合があることが知られ得る。本開示で説明されている1つまたは複数の技術によれば、ブロックごとに視差ベクトルを導出する代わりに、ビデオコーダは、ブロックのグループについて視差ベクトルを導出し、導出された視差ベクトルをブロックのグループ内のブロックの各々に対する視差ベクトルとして使用し得る。
[0043]たとえば、上で説明されているように、コーディングユニット(CU)は、複数の予測ユニット(PU)に分割され得る。本開示で説明されている1つまたは複数の技術によれば、CU内の各PUについて視差ベクトルを導出する代わりに、ビデオコーダは、CUの代表的PUに対する視差ベクトルを導出することができる。この例では、ビデオコーダは、CUの各PUに対する視差ベクトルを別々に導出する代わりに、導出された視差ベクトル(すなわち、代表的PUに対する視差ベクトル)をCU内のPUの各々に割り当てることができる。さらに、ビデオコーダは、導出された視差ベクトルに基づいて、代表的ブロック以外の複数のブロック内の任意のブロックに対する視差ベクトルを別々に導出することなく、複数のブロック内の2つまたはそれ以上のブロックに対するビュー間予測を実行することができる。
[0044]上で説明されているように、ビデオコーダは、隣接ブロックを評価し、隣接ブロックのどれかが視差動きベクトルとともにビュー間予測されているかどうかを決定する。本開示のいくつかの例示的な技術では、ビデオコーダがNBDV導出時に評価する隣接ブロックの数を制限している。たとえば、ビデオコーダが、視差ベクトル導出プロセス(たとえば、NBDV導出)を実行し、第1または第2のいずれかの空間的隣接ブロックが、視差動きベクトルまたはIDVを有している場合に、ビデオコーダは、視差動きベクトルまたはIDVを現在のブロックに対する視差ベクトルに変換し得る。しかしながら、視差ベクトル導出プロセスは、第1および第2のいずれの空間的隣接ブロックも視差動きベクトルまたはIDVを有していない場合であっても第1および第2の空間的隣接ブロックに加えてどれかの空間的隣接ブロックが視差動きベクトルまたはIDVを有しているかどうかを決定しない。そこで、第1および第2の空間的隣接ブロックが視差動きベクトルまたはIDVを有しているかどうかに関係なく、ビデオコーダは、追加の空間的隣接ブロックをチェックしない。
[0045]さらに、本開示の1つまたは複数の技術は、IDVが処理される仕方を修正することができる。たとえば、いくつかの技術において、ビデオコーダは、IDVフラグを利用して、隣接ブロックがIDVを有するかどうかを示す。IDVフラグを格納することは、必要でない場合がある。むしろ、本開示の1つまたは複数の技術によれば、ビデオコーダは、範囲外情報(たとえば、不正な値)を使用して、すでにコーディングされている隣接ブロックについてIDVが存在しているかどうかを決定することができる。たとえば、すでにコーディングされている隣接ブロックがそのような範囲外情報を有しているかどうかに応じて、ビデオコーダは、隣接ブロックに対してIDVが存在しているかどうかを決定することができる。
[0046]図1は、本開示の技術を利用することができる例示的なビデオコーディングシステム10を示すブロック図である。本明細書で使用されているように、「ビデオコーダ」という用語は、一般的に、ビデオエンコーダとビデオデコーダの両方を指す。本開示では、「ビデオコーディング」または「コーディング」という用語は、一般的に、ビデオ符号化またはビデオ復号を指すものとしてよい。
[0047]図1に示されているように、ビデオコーディングシステム10は、ソースデバイス12と宛先デバイス14とを含む。ソースデバイス12は、符号化ビデオデータを生成する。したがって、ソースデバイス12は、ビデオ符号化デバイスまたはビデオ符号化装置と称され得る。宛先デバイス14は、ソースデバイス12によって生成された符号化ビデオデータを復号することができる。したがって、宛先デバイス14は、ビデオ復号デバイスまたはビデオ復号装置と称され得る。ソースデバイス12と宛先デバイス14とは、ビデオコーディングデバイスまたはビデオコーディング装置の例としてよい。
[0048]ソースデバイス12と宛先デバイス14とは、デスクトップコンピュータ、モバイルコンピューティングデバイス、ノートブック(たとえば、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話送受器、テレビジョン、カメラ、表示デバイス、デジタルメディアプレーヤ、ビデオゲーム機、車載コンピュータなどを含む、広範なデバイスを備えるものとしてよい。
[0049]宛先デバイス14は、チャネル16を介してソースデバイス12から符号化ビデオデータを受信することができる。チャネル16は、符号化ビデオデータをソースデバイス12からステーションデバイス14に移動することができる1つまたは複数の媒体またはデバイスを備えることができる。一例において、チャネル16は、ソースデバイス12が符号化ビデオデータを直接、宛先デバイス14にリアルタイムで送信することを可能にする1つまたは複数の通信媒体を備えることができる。この例では、ソースデバイス12は、ワイヤレス通信プロトコルなどの、通信規格に従って符号化ビデオデータを変調することができ、変調ビデオデータを宛先デバイス14に送信することができる。1つまたは複数の通信媒体は、高周波(RF)スペクトルなどのワイヤレスおよび/または有線通信媒体、または1つまたは複数の物理的伝送路を含み得る。1つまたは複数の通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはグローバルネットワーク(たとえば、インターネット)などの、パケットベースのネットワークの一部をなすものとしてよい。1つまたは複数の通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を円滑にする他の機器を含み得る。
[0050]別の例において、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを格納するストレージ媒体を含み得る。この例では、宛先デバイス14は、たとえば、ディスクアクセスまたはカードアクセスを介して、ストレージ媒体にアクセスすることができる。ストレージ媒体は、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、または符号化ビデオデータを格納するための他の好適なデジタルストレージ媒体などの、様々なローカルでアクセスされるデータストレージ媒体を含み得る。
[0051]さらなる例において、チャネル16は、ソースデバイス12によって生成された符号化ビデオデータを格納するファイルサーバまたは別の中間ストレージデバイスを含み得る。この例では、宛先デバイス14は、ストリーミングまたはダウンロードを介してファイルサーバまたは他の中間ストレージデバイスに格納されている符号化ビデオデータにアクセスすることができる。ファイルサーバは、符号化ビデオデータを格納し、符号化ビデオデータを宛先デバイス14に送信することができる種類のサーバとすることができる、ファイルサーバの例として、ウェブサーバ(たとえば、ウェブサイト用)、ファイル転送プロトコル(FTP)サーバ、ネットワーク接続ストレージ(NAS)デバイス、およびローカルディスクドライブが挙げられる。
[0052]宛先デバイス14は、インターネット接続などの、標準的なデータ接続を通じて符号化ビデオデータにアクセスすることができる。データ接続の種類の例として、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、有線接続(たとえば、デジタル加入者回線(DSL)、ケーブルモデムなど)、またはファイルサーバ上に格納されている符号化ビデオデータにアクセスするのに適している両方の組合せが挙げられ得る。ファイルサーバからの符号化ビデオデータの伝送は、ストリーミング伝送、ダウンロード伝送、または両方の組合せであってよい。
[0053]本開示の技術は、ワイヤレスアプリケーションまたは設定に制限されない。これらの技術は、オーバーザエアテレビ放送、ケーブルテレビ伝送、衛星テレビ伝送、たとえば、インターネットを介した、ストリーミングビデオ伝送、データストレージ媒体上に格納するためのビデオデータの符号化、データストレージ媒体上に格納されているビデオデータの復号、または他のアプリケーションなどの様々なマルチメディアアプリケーションのサポートにおいてビデオコーディングに適用され得る。いくつかの例では、ビデオコーディングシステム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオ電話などのアプリケーションをサポートするために一方向または双方向のビデオ伝送をサポートするように構成され得る。
[0054]図1は単なる例であり、本開示の技術は、符号化デバイスと復号デバイスとの間のデータ通信を必ずしも含まないビデオコーディング設定(たとえば、ビデオ符号化またはビデオ復号)に適用され得る。他の例では、データ(たとえば、符号化および/または復号されたビデオデータなどのビデオデータ)は、たとえば、ローカルメモリから取り出されるか、ネットワーク上でストリーミング配信される。ビデオ符号化デバイスは、データを符号化してメモリに格納することができ、かつ/またはビデオ復号デバイスは、メモリからデータを取り出して復号することができる。多くの例において、符号化と復号とは、互いに通信しないが、単に、データを符号化してメモリに入れ、かつ/またはメモリからデータを取り出して復号するデバイスによって実行される。
[0055]図1の例において、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを備える。いくつかの例では、出力インターフェース22は、変調器/復調器(モデム)および/または送信器を含み得る。ビデオソース18は、ビデオキャプチャデバイス、たとえば、ビデオカメラ、すでにキャプチャされているビデオデータを収めてあるビデオアーカイブ、ビデオコンテンツプロバイダからビデオデータを受信するためのビデオ配信インターフェース、および/またはビデオデータを生成するためのコンピュータグラフィックスシステム、またはビデオデータのそのようなソースの組合せを含み得る。
[0056]ビデオエンコーダ20は、ビデオソース18からのビデオデータを符号化し得る。いくつかの例では、ソースデバイス12は、出力インターフェース22を介して符号化ビデオデータを宛先デバイス14に直接送信する。他の例では、符号化ビデオデータは、復号および/または再生のために宛先デバイス14により後からアクセスできるようにストレージ媒体またはファイルサーバ上にも格納され得る。
[0057]図1の例において、宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、表示デバイス32とを含む。いくつかの例では、入力インターフェース28は、受信器および/またはモデムを含む。入力インターフェース28は、チャネル16上で符号化ビデオデータを受信することができる。ビデオデコーダ30は、符号化ビデオデータを復号し得る。表示デバイス32は、復号ビデオデータを表示することができる。表示デバイス32は、宛先デバイス14と一体であるか、または宛先デバイス14に外付けであってもよい。表示デバイス32は、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または他の種類の表示デバイスなどの、様々な表示デバイスを備えることができる。
[0058]ビデオエンコーダ20とビデオデコーダ30とは、各々、1つまたは複数のマイクロプロセッサ、デジタルシグナルプロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリートロジック、ハードウェア、またはこれらの任意の組合せなどの、様々な好適な回路のうちのどれかとして実装され得る。これらの技術が、部分的にソフトウェアにより実装される場合、デバイスは、ソフトウェアに対する命令を、好適な非一時的コンピュータ可読ストレージ媒体に格納することができ、1つまたは複数のプロセッサを使用して本開示の技術を実行することでハードウェアにより命令を実行することができる。前記のどれか(ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組合せなどを含む)は、1つまたは複数のプロセッサであることが企図され得る。ビデオエンコーダ20とビデオデコーダ30との各々は、1つまたは複数のエンコーダまたはデコーダに含まれるものとすることもでき、これらのいずれかがそれぞれのデバイスにおいて組み合わされたエンコーダ/デコーダ(CODEC)の一部として集積化され得る。
[0059]本開示では、一般的に、ビデオエンコーダ20がビデオデコーダ30などの別のデバイスに特定の情報を「シグナリング」することを参照することがある。「シグナリング(する)」という用語は、一般的に、シンタックス要素および/または圧縮ビデオデータを復号するために使用される他のデータの通信を指すものとしてよい。そのような通信は、リアルタイムまたはほぼリアルタイムで行われ得る。代替的に、そのような通信は、ある長さの時間にわたって行われるものとしてよく、たとえば、符号化時に符号化ビットストリームでシンタックス要素をコンピュータ可読ストレージ媒体に格納するときに行われ、次いで、それらの要素はこの媒体に格納された後にいつでも復号デバイスによって取り出せる。
[0060]いくつかの例では、ビデオエンコーダ20とビデオデコーダ30とは、スケーラブルビデオ符号化(SVC)拡張、マルチビュービデオコーディング(MVC)拡張、MVCベース3DV拡張を含むISO/IEC MPEG−4ビジュアルおよびITU−T H.264(ISO/IEC MPEG−4 AVCとしても知られている)などのビデオ圧縮規格に従って動作する。さらに、H.264/AVCへの3次元ビデオ(3DV)コーディング拡張、すなわちAVCベース3DVを作成する取組みが進行中である。H.264のMVC拡張の共同ドラフトは、「オーディオビジュアルサービス全般のための高度ビデオコーディング方式」、ITU−T勧告H.264、2010年3月において説明されている。他の例では、ビデオエンコーダ20とビデオデコーダ30とは、ITU−T H.261、ISO/IEC MPEG−1ビジュアル、ITU−T H.262またはISO/IEC MPEG−2ビジュアル、およびITU−T H.263、ISO/IEC−4ビジュアルに従って動作し得る。したがって、ビデオエンコーダ20とビデオデコーダ30とは、ITU−T H.261、ISO/IEC MPEG−1ビジュアル、ITU−T H.262またはISO/IEC MPEG−2ビジュアル、ITU−T H.263、ISO/IEC MPEG−4ビジュアル、およびSVCとMVCとの拡張を含むITU−T H.264(ISO/IEC MPEG−4 AVCとしても知られている)を含むビデオコーディング規格に従って動作し得る。
[0061]他の例では、ビデオエンコーダ20とビデオデコーダ30とは、ITU−Tビデオコーディングエキスパートグループ(VCEG)とISO/IECモーションピクチャエキスパートグループ(MPEG)とのビデオコーディングに関する共同チーム(JCT−VC)によって開発された高効率ビデオコーディング(HEVC)規格に従って動作し得る。HEVC規格のドラフトは、「HEVC作業ドラフト8」または「HEVCベース仕様」と称され、Brossらの「高効率ビデオコーディング(HEVC)テキスト仕様ドラフト8」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディングに関する共同チーム(JCT−VC)、第10回会合、ストックホルム、スウェーデン、2012年7月において説明されている。さらに、HEVCに対するスケーラブルビデオコーディングと、マルチビューコーディングと、3DVとの拡張を作成する取組みが進行中である。HEVCのスケーラブルビデオコーディング拡張は、SHEVCと称され得る。ビデオエンコーダ20とビデオデコーダ30とは、HEVC規格のそのような拡張に従って動作し得る。
[0062]現在、VCEGとMPEGとの3Dビデオコーディングに関する共同チーム(JCT−3C)がHEVCに基づく3DV規格を開発中であり、これに対する標準化の取組みの一環として、HEVCに基づくマルチビュービデオコーデックの標準化(MV−HEVC)とHEVCに基づく3Dビデオコーディング(3D−HEVC)とがある。3D−HEVCについては、テクスチャと奥行きの両方のビューに対する、コーディングユニット/予測ユニットレベルにおけるツールを含む、新しいコーディングツールが含まれ、サポートされ得る。2013年12月5日現在、3D−HEVCに対するソフトウェア(すなわち、3D−HTMバージョン6.0)が以下のリンクからダウンロード可能である。
[3D−HTM]: https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM−6.0/
[0063]一般に、HEVCの動き圧縮ループは、H.264/AVCのものと同じである。たとえば、現在のフレーム
に等しいものとしてよい。
上記の式において、Pは、P個のフレームに対する一方向予測またはB個のフレームに対する双方向予測を示す。
[0064]しかしながら、HEVCにおける動き圧縮のユニットは、以前のビデオコーディング規格のとは異なる。たとえば、以前のビデオコーディング規格におけるマクロブロックの概念は、HEVCに存在しない。むしろ、マクロブロックは、一般的な四分木方式に基づく自由度の高い階層構造で置き換えられる。この方式の範囲内で、3種類のブロック、すなわち、コーディングユニット(CU)と、予測ユニット(PU)と、変換ユニット(TU)とが定義される。CUは、領域分割の基本ユニットである。CUの概念は、マクロブロックの概念に類似しているが、CUは、最大サイズに制限されず、CUにより、等しいサイズの4つのCUへの再帰的分割でコンテンツ適応性を改善することができる。PUは、インター/イントラ予測の基本ユニットであり、PUは、不規則な画像パターンを効果的にコーディングするため、単一のPU内に任意の形状の複数のパーティションを含み得る。TUは、変換の基本ユニットである。CUのTUは、CUのPUから独立して定義され得る。しかしながら、TUのサイズは、TUが属すCUに制限される。ブロック構造を3つの異なる概念に分けるこの方法は、その役割に従って各々を最適化することを可能にし、その結果、コーディング効率が改善され得る。
[0065]HEVCと他のビデオコーディング仕様において、ビデオシーケンスは、典型的に、一連のピクチャを含む。ピクチャは、「フレーム」とも称され得る。ピクチャは、SL、SCb、およびScrと表される、3つのサンプル配列を含み得る。SLは、ルーマサンプルの2次元配列(すなわち、ブロック)である。SCbは、Cb色度サンプルの2次元配列である。SCrは、Cr色度サンプルの2次元配列である。色度サンプルは、本明細書では「クロマ」サンプルとも称され得る。他の場合において、ピクチャは、モノクロであってもよく、またルーマサンプルの配列のみを含んでいてもよい。
[0066]ピクチャの符号化された表現を生成するために、ビデオエンコーダ20は、コーディングツリーユニット(CTU)のセットを生成することができる。CTUの各々は、ルーマサンプルのコーディングツリーブロック(CTB)と、クロマサンプルの2つの対応するコーディングツリーブロックと、コーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備えるものとしてよい。モノクロピクチャまたは3つの別々の色平面を有するピクチャにおいて、CTUは、単一のコーディングツリーブロックと、コーディングツリーブロックのサンプルをコーディングするために使用されるシンタックス構造とを備えることができる。コーディングツリーブロックは、サンプルのN×Nのブロックであってよい。CTUは、「ツリーブロック」または「最大コーディングユニット」(LCU)とも称され得る。HEVCのCTUは、H.264/AVCなどの、他の規格のマクロブロックに概して類似しているものとしてよい。しかしながら、CTUは、特定のサイズに必ずしも制限されず、1つまたは複数のCUを含み得る。
[0067]スライスは、ラスタースキャン順に連続的に順序付けられた整数個のCTUを含み得る。コーディングされたスライスは、スライスヘッダとスライスデータとを備え得る。スライスのスライスヘッダは、スライスに関する情報を提供するシンタックス要素を含むシンタックス構造であってよい。スライスデータは、スライスのコーディングされたCTUを含み得る。
[0068]本開示では、「ビデオユニット」または「ビデオブロック」または「ブロック」という用語を使用して、サンプルの1つまたは複数のブロックのサンプルをコーディングするために使用される1つまたは複数のサンプルブロックとシンタックス構造とを指すものとしてよい。ビデオユニットの種類の例として、CTU、CU、PU、変換ユニット(TU)、マクロブロック、マクロブロックパーティションなどが挙げられ得る。いくつかの文脈では、PUの説明は、マクロブロックパーティションのマクロブロックの説明と交換され得る。
[0069]コーディングされたCTUを生成するために、ビデオエンコーダ20は、CTUのコーディングツリーブロック上で四分木分割法を再帰的に実行して、コーディングツリーブロックをコーディングブロック、すなわち「コーディングツリーユニット」に分割することができる。コーディングブロックは、サンプルのN×Nのブロックである。CUは、ルーマサンプルのコーディングブロックを備え、またルーマサンプル配列と、Cbサンプル配列と、Crサンプル配列とを有するピクチャのクロマサンプルの2つの対応するコーディングブロックと、コーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備える。モノクロピクチャまたは3つの別々の色平面を有するピクチャにおいて、CUは、単一のコーディングブロックと、コーディングブロックのサンプルをコーディングするために使用されるシンタックス構造とを備えることができる。
[0070]ビデオエンコーダ20は、CUのコーディングブロックを1つまたは複数の予測ブロックに分割することができる。予測ブロックは、同じ予測が適用されるサンプルの矩形(すなわち、正方形または非正方形)ブロックである。CUのPUは、ルーマサンプルの予測ブロックと、クロマサンプルの2つの対応する予測ブロックと、予測ブロックを予測するために使用されるシンタックス構造とを備えることができる。モノクロピクチャまたは3つの別々の色平面を有するピクチャにおいて、PUは、単一の予測ブロックと、予測ブロックを予測するために使用されるシンタックス構造とを備えることができる。ビデオエンコーダ20は、CUの各PUのルーマ予測ブロックと、Cb予測ブロックと、Cr予測ブロックとに対する予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成することができる。したがって、本開示では、CUは、1つまたは複数のPUに分割されると言うことができる。説明を簡単にするため、本開示は、PUの予測ブロックのサイズを単にPUのサイズとして参照し得る。
[0071]ビデオエンコーダ20は、イントラ予測またはインター予測を使用してPUに対する予測ブロックを生成することができる。ビデオエンコーダ20が、イントラ予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられているピクチャのサンプルに基づいてPUの予測ブロックを生成することができる。本開示では、「に基づく」という言い回しは、「に少なくとも部分的に基づく」を示すものとしてよい。
[0072]ビデオエンコーダ20が、インター予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられているピクチャ以外の1つまたは複数のピクチャの復号されたサンプルに基づいてPUの予測ブロックを生成することができる。ブロック(たとえば、PU)の予測ブロックを生成するためにインター予測が使用される場合、本開示では、ブロックを「インターコーディング(された)」または「インター予測(された)」と称するものとしてよい。インター予測は、一方向(すなわち、片方向予測)または双方向(すなわち、双予測)とすることができる。片方向予測または双予測を実行するために、ビデオエンコーダ20は、現在のピクチャに対して第1の基準ピクチャリスト(RefPicList0)と、第2の基準ピクチャリスト(RefPicList1)とを生成することができる。基準ピクチャリストの各々は、1つまたは複数の基準ピクチャを含み得る。基準ピクチャリストが構成された後(すなわち、利用可能な場合のRefPicList0とRefPicList1)、基準ピクチャリストへの基準インデックスが、基準ピクチャリストに含まれている基準ピクチャを識別するために使用され得る。
[0073]片方向予測を使用する場合、ビデオエンコーダ20は、RefPicList0とRefPicList1のいずれか、または両方で基準ピクチャを探索し、基準ピクチャ内の基準位置を決定することができる。さらに、片方向予測を使用する場合、ビデオエンコーダ20は、基準位置に対応するサンプルに少なくとも部分的に基づいて、PUに対する予測ブロックを生成することができる。さらに、片方向予測を使用する場合、ビデオエンコーダ20は、PUの予測ブロックと基準位置との間の空間的変位を示す単一の動きベクトルを生成することができる。動きベクトルは、PUの予測ブロックと基準位置との間の水平変位を指定する水平成分を含み、PUの予測ブロックと基準位置との間の垂直変位を指定する垂直成分を含み得る。
[0074]双予測を使用してPUを符号化する場合、ビデオエンコーダ20は、RefPicList0内の基準ピクチャ内の第1の基準位置とRefPicList1内の基準ピクチャ内の第2の基準位置とを決定することができる。ビデオエンコーダ20は、第1と第2との基準位置に対応するサンプルに少なくとも部分的に基づいて、PUに対する予測ブロックを生成することができる。さらに、双予測を使用してPUを符号化する場合、ビデオエンコーダ20は、PUの予測ブロックと第1の基準位置との間の空間的変位を示す第1の動きベクトルと、PUの予測ブロックと第2の基準位置との間の空間的変位を示す第2の動きベクトルとを生成することができる。
[0075]ビデオエンコーダ20がインター予測を使用してPUの予測ブロックを生成する場合、ビデオエンコーダ20は、PUに関連付けられているピクチャ以外の1つまたは複数のピクチャのサンプルに基づいてPUの予測ブロックを生成することができる。たとえば、ビデオエンコーダ20は、一方向インター予測(すなわち、片方向予測)または双方向インター予測(すなわち、双予測)をPU上で実行することができる。
[0076]ビデオエンコーダ20が、PU上で片方向予測を実行する場合、ビデオエンコーダ20は、PUの動きベクトルに基づいて、基準ピクチャ内の基準位置を決定することができる。ビデオエンコーダ20は、次いで、PUに対する予測ブロックを決定することができる。PUに対する予測ブロック内の各サンプルは、基準位置に関連付けられ得る。いくつかの例では、PUに対する予測ブロック内のサンプルは、PUと同じサイズを有してその左上の隅部が基準位置であるサンプルのブロック内にある場合に、基準位置に関連付けられ得る。予測ブロック内の各サンプルは、基準ピクチャの実際の、または補間されたサンプルであってよい。予測ブロックのルーマサンプルが基準ピクチャの補間されたルーマサンプルに基づく場合、ビデオエンコーダ20は、8タップ補間フィルタを基準ピクチャの実際のルーマサンプルに適用することによって補間されたルーマサンプルを生成することができる。予測ブロックのクロマサンプルが基準ピクチャの補間されたクロマサンプルに基づく場合、ビデオエンコーダ20は、4タップ補間フィルタを基準ピクチャの実際のクロマサンプルに適用することによって補間されたクロマサンプルを生成することができる。一般に、フィルタのタップの数は、フィルタを数学的に表現する係数要求の数を示す。タップ数の多いフィルタは、タップ数の少ないフィルタに比べて一般的に複雑である。
[0077]ビデオエンコーダ20がPU上で双予測を実行する場合、PUは2つの動きベクトルを有する。ビデオエンコーダ20は、PUの動きベクトルに基づいて、2つの基準ピクチャ内の2つの基準位置を決定することができる。次いで、ビデオエンコーダ20は、上で説明されているようにして、2つの基準位置に関連付けられている基準ブロックを決定することができる。次いで、ビデオエンコーダ20は、PUに対する予測ブロックを決定することができる。予測ブロック内の各サンプルは、基準ブロック内の対応するサンプルの加重平均であってよい。サンプルの重みは、PUを含むピクチャからの基準ピクチャの時間的距離に基づくものとしてよい。
[0078]ビデオエンコーダ20は、CUを様々な分割モードに従って1つまたは複数のPUに分割することができる。たとえば、CUのPUに対する予測ブロックを生成するためにイントラ予測が使用される場合、CUは、PART_2N×2NモードまたはPART_N×Nモードに従って分割され得る。PART_2N×2Nモードでは、CUは1つのPUしか有しない。PART_N×Nモードでは、CUは、矩形予測ブロックを有する4つの等しいサイズのPUを有する。CUのPUに対する予測ブロックを生成するためにインター予測が使用される場合、CUは、PART_2N×2Nモード、PART_N×Nモード、PART_2N×Nモード、PART_N×2Nモード、PART_2N×nUモード、PART_2N×uDモード、PART_nL×2Nモード、またはPART_nR×2Nモードに従って分割され得る。PART_2N×NモードとPART_N×2Nとにおいて、CUは、矩形予測ブロックを有する2つの等しいサイズのPUに分割される。PART_2N×nUモードと、PART_2N×uDモードと、PART_nL×2Nモードと、PART_nR×2Nモードとの各々において、CUは、矩形予測ブロックを有する2つのサイズが等しくないPUに分割される。
[0079]ビデオエンコーダ20が、CUの1つまたは複数のPUに対する予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成した後、ビデオエンコーダ20は、CUに対するルーマ残差ブロックを生成することができる。CUのルーマ残差ブロック内の各サンプルは、CUの予測ルーマブロックのうちの1つの中のルーマサンプルとCUの元のルーマコーディングブロック内の対応するサンプルとの間の差を示す。それに加えて、ビデオエンコーダ20は、CUに対するCb残差ブロックを生成することができる。CUのCb残差ブロック内の各サンプルは、CUの予測Cbブロックのうちの1つの中のCbサンプルとCUの元のCbコーディングブロック内の対応するサンプルとの間の差を示し得る。ビデオエンコーダ20は、CUに対するCr残差ブロックも生成することができる。CUのCr残差ブロック内の各サンプルは、CUの予測Crブロックのうちの1つの中のCrサンプルとCUの元のCrコーディングブロック内の対応するサンプルとの間の差を示し得る。
[0080]さらに、ビデオエンコーダ20は、四分木分割法を使用して、CUのルーマ残差ブロックと、Cb残差ブロックと、Cr残差ブロックとを1つまたは複数のルーマ変換ブロックと、Cb変換ブロックと、Cr変換ブロックとに分解することができる。変換ブロックは、同じ変換が適用されるサンプルの矩形(たとえば、正方形または非正方形)ブロックである。CUのTUは、ルーマサンプルの変換ブロックと、クロマサンプルの2つの対応する変換ブロックと、変換ブロックサンプルを変換するために使用されるシンタックス構造とを備えることができる。そこで、CUの各TUは、ルーマ変換ブロックと、Cb変換ブロックと、Cr変換ブロックとに関連付けられ得る。TUに関連付けられているルーマ変換ブロックは、CUのルーマ残差ブロックのサブブロックであってよい。Cb変換ブロックは、CUのCb残差ブロックのサブブロックであってよい。Cr変換ブロックは、CUのCr残差ブロックのサブブロックであってよい。モノクロピクチャまたは3つの別々の色平面を有するピクチャにおいて、TUは、単一の変換ブロックと、変換ブロックのサンプルを変換するために使用されるシンタックス構造とを備えることができる。
[0081]ビデオエンコーダ20は、1つまたは複数の変換をTUのルーマ変換ブロックに適用して、TUに対するルーマ係数ブロックを生成することができる。係数ブロックは、変換係数の2次元配列であってよい。変換係数は、スカラ量であってよい。ビデオエンコーダ20は、1つまたは複数の変換をTUのCb変換ブロックに適用して、TUに対するCb係数ブロックを生成することができる。ビデオエンコーダ20は、1つまたは複数の変換をTUのCr変換ブロックに適用して、TUに対するCr係数ブロックを生成することができる。
[0082]係数ブロック(たとえば、ルーマ係数ブロック、Cb係数ブロック、またはCr係数ブロック)を生成した後、ビデオエンコーダ20は、係数ブロックを量子化することができる。量子化は、一般的に、変換係数が量子化され、場合によっては、変換係数を表現するために使用されるデータの量を減らし、さらに圧縮を施すプロセスを指す。ビデオエンコーダ20は、CUに関連付けられている量子化パラメータ(QP)値に基づいてCUのTUに関連付けられている係数ブロックを量子化することができる。ビデオエンコーダ20は、CUに関連付けられているQP値を調整することによって、CUに関連付けられている係数ブロックに適用される量子化の程度を調整することができる。いくつかの例では、CUに関連付けられているQP値は、全体として現在のピクチャまたはスライスに関連付けられ得る。ビデオエンコーダ20が、係数ブロックを量子化した後、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素をエントロピー符号化することができる。たとえば、ビデオエンコーダ20は、量子化された変換係数を示すシンタックス要素に対してコンテキスト適応型バイナリ算術コーディング(CABAC)を実行することができる。
[0083]ビデオエンコーダ20は、コーディングされたピクチャと関連データとの表現を形成するビットシーケンスを含むビットストリームを出力することができる。ビットストリームは、ネットワーク抽象化レイヤ(NAL)ユニットのシーケンスを備えることができる。NALユニットは、NALユニット内のデータの型の指示を含むシンタックス構造とエミュレーション防止ビットとともに必要に応じて散在するローバイトシーケンスペイロード(RBSP)の形態のそのデータを含むバイトである。NALユニットの各々は、NALユニットヘッダを含み、RBSPをカプセル化する。NALユニットヘッダは、NALユニット型コードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって指定されるNALユニット型コードは、NALユニットの型を示す。RBSPは、NALユニット内にカプセル化されている整数個のバイトを含むシンタックス構造であってよい。いくつかの場合において、RBSPはゼロビットを含む。
[0084]異なる型のNALユニットは、異なる種類のRBSPをカプセル化することができる。たとえば、異なる型のNALユニットは、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)、コーディングされたスライス、SEIなどに対して異なるRBSPをカプセル化することができる。ビデオコーディングデータに対してRBSPをカプセル化するNALユニットは(パラメータセットとSEIメッセージとに対するRBSPとは反対に)ビデオコーディングレイヤ(VCL)NALユニットと称され得る。
[0085]HEVCでは、SPSは、コーディングビデオシーケンス(CVS)のすべてのスライスに適用される情報を含み得る。HEVCでは、CVSは、瞬間復号リフレッシュ(IDR)ピクチャ、またはリンク切断アクセス(BLA)ピクチャ、またはIDRピクチャまたはBLAピクチャではないその後のすべてのピクチャを含む、ビットストリーム内の第1のピクチャであるクリーンランダムアクセス(CRA)ピクチャから始まるものとしてよい。すなわち、HEVCでは、CVSは、復号の順序で、ビットストリーム内の第1のアクセスユニットであるCRAアクセスユニット、IDRアクセスユニットまたはBLAアクセスユニット、その後に続く、その後のIDRアクセスユニットまたはBLAアクセスユニットまでであってその後のIDRアクセスユニットまたはBLAアクセスユニットを含まないすべてのその後のアクセユニットを含む、ゼロまたはそれ以上の非IDRアクセスユニットと非BLAアクセスユニットからなるものとしてよいアクセスユニットのシーケンスを備えることができる。
[0086]VPSは、ゼロまたはそれ以上のCVS全体に適用されるシンタックス要素を備えるシンタックス構造である。SPSは、SPSがアクティブであるときにアクティブであるVPSを識別するシンタックス要素を含み得る。そのため、VPSのシンタックス要素は、SPSのシンタックス要素よりも一般的に適用可能であり得る。PPSは、ゼロまたはそれ以上のコーディングされたピクチャに適用されるシンタックス要素を備えるシンタックス構造である。PPSは、PPSがアクティブであるときにアクティブであるSPSを識別するシンタックス要素を含み得る。スライスのスライスヘッダは、スライスがコーディングされているときにアクティブであるPPSを示すシンタックス要素を含み得る。
[0087]ビデオデコーダ30は、ビデオエンコーダ20によって生成されたビットストリームを受信することができる。それに加えて、ビデオデコーダ30は、ビットストリームを解析して、ビットストリームからシンタックス要素を取得することができる。ビデオデコーダ30は、ビットストリームから取得されたシンタックス要素に少なくとも部分的に基づいてビデオデータのピクチャを再構成することができる。ビデオデータを再構成するプロセスは、一般的に、ビデオエンコーダ20によって実行されるプロセスに相反するものとしてよい。たとえば、ビデオデコーダ30は、PUの動きベクトルを使用して、現在のCUのPUに対する予測ブロックを決定することができる。それに加えて、ビデオデコーダ30は、現在のCUのTUに関連付けられている係数ブロックを逆量子化することができる。ビデオデコーダ30は、係数ブロックに対して逆変換を実行し、現在のCUのTUに関連付けられている変換ブロックを再構成することができる。ビデオデコーダ30は、現在のCUのPUに対する予測ブロックのサンプルを現在のCUのTUの変換ブロックの対応するサンプルに加えることによって現在のCUのコーディングブロックを再構成することができる。ピクチャの各CUに対してコーディングブロックを再構成することによって、ビデオデコーダ30は、ピクチャを再構成することができる。
[0088]各コーディングされたピクチャは、コーディングされたピクチャまたはコーディングされたピクチャの後の(将来の)ピクチャのいずれかによって基準のために使用され得るすべてのピクチャを含む基準ピクチャセットを有する。ビデオコーダは、どのピクチャが将来のピクチャの基準としてのみ使用され得るかを区別することができる。基準ピクチャリストは、現在のピクチャに対して使用され得る基準ピクチャセット(「RPS」)内のピクチャ(すなわち、「現在に対するRPS」)に基づいて構成され、したがって、将来のピクチャの基準としてしか使用され得ないピクチャに基づいて再構成されることはない。
[0089]いくつかの例では、ビデオエンコーダ20が、現在のピクチャの符号化を開始すると、ビデオエンコーダ20は、現在のピクチャに対して基準ピクチャの5つのサブセット(すなわち、基準ピクチャサブセット)を生成し得る。いくつかの例では、これら5つの基準ピクチャサブセットは、RefPicSetStCurrBefore、RefPicSetStCurrAfter、RefPicSetStFoll、RefPicSetLtCurr、およびRefPicSetLtFollである。本開示では、RefPicSetStCurrBefore、RefPicSetStCurrAfter、RefPicSetStFollにおける基準ピクチャを「短期基準ピクチャ」、「短期ピクチャ」、または「STRP」として参照することができる。したがって、「短期基準ピクチャ」は、短期基準に使用されているものとして(たとえば、RefPicSetStCurrBefore、RefPicSetStCurrAfter、またはRefPicSetStFollであることによって)マークされるピクチャであってよい。本開示では、RefPicSetLtCurrとRefPicSetLtFollとにおける基準ピクチャを「長期基準ピクチャ」、「長期ピクチャ」、または「LTRP」として参照することができる。ビデオエンコーダは、各ピクチャに対して5つの基準ピクチャサブセットを再生成することができる。
[0090]さらに、現在のピクチャの現在のスライスが、Pスライス(すなわち、イントラ予測と片方向インター予測とがイネーブルにされているスライス)である場合、ビデオエンコーダ20は、現在のピクチャのRefPicStCurrAfter基準ピクチャサブセットと、RefPicStCurrBefore基準ピクチャサブセットと、RefPicStLtCurr基準ピクチャサブセットとからの基準ピクチャを使用して、現在のスライスに対する単一の基準ピクチャリスト(RefPicList0)を生成することができる。現在のスライスが、Bスライス(すなわち、イントラ予測と、片方向インター予測と、双方向インター予測とがイネーブルにされているスライス)である場合、ビデオエンコーダ20は、現在のピクチャのRefPicStCurrAfter基準ピクチャサブセットと、RefPicStCurrBefore基準ピクチャサブセットと、RefPicStLtCurr基準ピクチャサブセットとからの基準ピクチャを使用して、現在のスライスに対する2つの基準ピクチャリスト(RefPicList0とRefPicList1)を生成することができる。ビデオエンコーダ20は、現在のピクチャの第1のスライスに対するスライスヘッダ内に、現在のピクチャの基準ピクチャサブセットを決定するためにビデオデコーダ30が使用することができるシンタックス要素を含み得る。ビデオデコーダ30が、現在のピクチャの現在のスライスを復号する場合、ビデオデコーダ30は、現在のピクチャの基準ピクチャサブセットを決定し、RefPicList0および/またはRefPicList1を再生成することができる。
[0091]上で示されているように、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)が、ピクチャの現在のスライスのコーディングを開始すると、ビデオコーダは、第1の基準ピクチャリスト(すなわち、RefPicList0)を初期化し得る。さらに、現在のスライスがBスライスである場合、ビデオコーダは、第2の基準ピクチャリスト(すなわち、RefPicList1)を初期化し得る。いくつかの例では、基準ピクチャリスト初期化は、基準ピクチャのピクチャ順序カウント(POC)値の順序に基づいて基準ピクチャメモリ(すなわち、復号ピクチャバッファ)内の基準ピクチャをリストに入れる明示的機構である。POC値は、同じコーディングされたビデオシーケンス内の他のピクチャの出力順序位置に関する出力順序で関連するピクチャの位置を示す各ピクチャに関連付けられている変数である。
[0092]RefPicList0を生成するために、ビデオコーダ(たとえば、ビデオエンコーダまたはビデオデコーダ)は、RefPicList0の初期の既定バージョンを生成するものとしてよい。RefPicList0の初期バージョンにおいて、RefPicSetStCurrBefore内の基準ピクチャが最初にリストされ、その後に、RefPicSetStCurrAfter内の基準ピクチャが続き、その後に、RefPicSetLtCurr内の基準ピクチャが続く。同様に、RefPicList1を生成するために、ビデオコーダは、RefPicList1の初期バージョンを生成することができる。RefPicList1の初期バージョンにおいて、RefPicSetStCurrAfter内の基準ピクチャが最初にリストされ、その後に、RefPicSetStCurrBefore内の基準ピクチャが続き、その後に、RefPicSetLtCurr内の基準ピクチャが続く。
[0093]ビデオコーダが基準ピクチャリスト(たとえば、RefPicList0またはRefPicList1)を初期化した後、ビデオコーダは、基準ピクチャリスト内の基準ピクチャの順序を修正することができる。言い換えれば、ビデオコーダは、基準ピクチャリスト修正(RPLM)プロセスを実行することができる。ビデオコーダは、1つの特定の基準ピクチャが基準ピクチャリスト内の複数の位置に出現し得る場合を含めて、任意の順序で基準ピクチャの順序を修正することができる。言い換えれば、基準ピクチャリスト順序変更機構は、ピクチャが初期化リストに属していないとしても、基準ピクチャリスト初期化時にリストに入れられたピクチャの位置を新しい位置に修正するか、または基準ピクチャを基準ピクチャメモリ内の任意の位置に入れることができる。しかしながら、ピクチャの位置がリストのアクティブな基準ピクチャの数を超える場合、ピクチャは、最終基準ピクチャリストのエントリとみなされない。スライスヘッダは、基準ピクチャリスト内のアクティブな基準ピクチャの数を示す1つまたは複数のシンタックス要素を含み得る。
[0094]いくつかの例では、ビデオコーダは、ビデオコーダが最終基準ピクチャリスト(すなわち、RefPicList0とRefPicList1)を構成した後にBスライスに対して組み合わされたリスト(たとえば、RefPicListC)を構成する。ビデオコーダは、さらに1つまたは複数の基準ピクチャリスト修正シンタックス要素が、組み合わされたリストについて存在する場合に、組み合わされたリストをさらに修正することができる。
[0095]いくつかの例では、ビデオエンコーダ20は、マージ/スキップモードまたは高度動きベクトル予測(AMVP)モードを使用するPUの動き情報をシグナリングすることができる。言い換えれば、HEVCでは、動きパラメータの予測に2つのモードがあり、1つはマージ/スキップモードであり、もう1つはAMVPモードである。動き予測は、1つまたは複数の他のブロックの動き情報に基づくブロック(たとえば、PU)の動き情報の決定を備え得る。PUの動き情報は、PUの動きベクトル(複数可)と、PUの基準インデックス(複数可)と、1つまたは複数の予測方向指標とを含み得る。
[0096]ビデオエンコーダ20が、マージモードを使用して現在のPUの動き情報をシグナリングする場合、ビデオエンコーダ20は、マージ候補リストを生成する。言い換えれば、ビデオエンコーダ20は、動きベクトル予測因子リスト構成プロセスを実行することができる。マージ候補リストは、現在のPUに空間的または時間的に隣接するPUの動き情報を示すマージ候補のセットを含む。すなわち、マージモードでは、候補が空間的隣接ブロックと時間的隣接ブロックとからのものであり得る動きパラメータ(たとえば、基準インデックス、動きベクトルなど)の候補リストが構成される。
[0097]さらに、マージモードでは、ビデオエンコーダ20は、マージ候補リストからマージ候補を選択することができ、選択されたマージ候補によって示されている動き情報を現在のPUの動き情報として使用することができる。ビデオエンコーダ20は、選択されたマージ候補のマージ候補リスト内の位置をシグナリングすることができる。たとえば、ビデオエンコーダ20は、選択されたマージ候補の候補リスト内の位置を示すインデックス(すなわち、マージ候補インデックス)を送信することによって、選択された動きベクトルパラメータをシグナリングすることができる。ビデオデコーダ30は、ビットストリームから、インデックスを取得して候補リストに入れることができる(すなわち、マージ候補インデックス)。それに加えて、ビデオデコーダ30は、同じマージ候補リストを生成することができ、マージ候補インデックスに基づいて、選択されたマージ候補を決定することができる。次いで、ビデオデコーダ30は、選択されたマージ候補の動き情報を使用して、現在のPUに対する予測ブロックを生成することができる。すなわち、ビデオデコーダ30は、候補リストインデックスに少なくとも部分的に基づいて、候補リスト内の選択された候補を決定することができ、ここにおいて、選択された候補は、現在のPUに対する動きベクトルを指定する。このようにして、デコーダ側では、インデックスが復号された後、インデックス点が現在のPUによって継承され得る対応するブロックのすべての動きパラメータ。
[0098]スキップモードは、マージモードに似ている。スキップモードでは、ビデオエンコーダ20とビデオデコーダ30とは、ビデオエンコーダ20とビデオデコーダ30とがマージモードでマージ候補リストを使用する同じ方法でマージ候補リストを生成し、使用する。しかしながら、ビデオエンコーダ20が、スキップモードを使用して現在のPUの動き情報をシグナリングする場合、ビデオエンコーダ20は、現在のPUに対する残差データをシグナリングしない。したがって、ビデオデコーダ30は、残差データを使用することなく、マージ候補リスト内の選択された候補の動き情報によって示される基準ブロックに基づいてPUに対する予測ブロックを決定することができる。
[0099]AMVPモードは、ビデオエンコーダ20が候補リストを生成することができ、候補リストから方法を選択することができるという点でマージモードに似ている。しかしながら、ビデオエンコーダ20がAMVPモードを使用して現在のPUのRefPicListX(ここで、Xは0または1)動き情報をシグナリングする場合、ビデオエンコーダ20は、現在のPUに対するRefPicListX動きベクトル差(MVD)と現在のPUに対するRefPicListX基準インデックスとをシグナリングすることを、現在のPUに対するRefPicListX動きベクトル予測因子(MVP)フラグをシグナリングすることに加えて行うことができる。現在のPUに対するRefPicListX MVPフラグは、AMVP候補リスト内の選択されたAMVP候補の位置を示し得る。現在のPUに対するRefPicListX MVDは、現在のPUのRefPicListX動きベクトルと選択されたAMVP候補の動きベクトルとの間の差を示し得る。この方法で、ビデオエンコーダ20は、RefPicListX MVPフラグと、RefPicListX基準インデックス値と、RefPicListX MVDとをシグナリングすることによって現在のPUのRefPicListX動き情報をシグナリングすることができる。言い換えれば、現在のPUに対する動きベクトルを表すビットストリーム内のデータは、基準インデックスと、候補リストへのインデックスと、MVDとを表すデータを含み得る。したがって、選択された動きベクトルは、インデックスを候補リスト内に送信することによってシグナリングされ得る。それに加えて、基準インデックス値と動きベクトル差ともシグナリングされ得る。
[0100]さらに、現在のPUの動き情報が、AMVPモードを使用してシグナリングされる場合、ビデオデコーダ30は、ビットストリームから、現在のPUに対するMVDと、MVPフラグとを取得することができる。ビデオデコーダ30は、同じAMVP候補リストを生成することができ、MVPフラグに基づいて、選択されたAMVP候補を決定することができる。言い換えれば、AMVPでは、各動き仮説に対する動きベクトル予測因子の候補リストは、コーディングされた基準インデックスに基づいて導出される。前述のように、このリストは、同じ基準インデックスに関連付けられている隣接ブロックの動きベクトル、さらには時間的基準ピクチャ内の同一の位置にある(co-located)ブロック(コロケートブロック)の隣接ブロックの動きパラメータに基づいて導出される時間的動きベクトル予測因子を含み得る。ビデオデコーダ30は、MVDを選択されたAMVP候補によって示されている動きベクトルに加えることによって現在のPUの動きベクトルを復元することができる。すなわち、ビデオデコーダ30は、選択されたAMVP候補とMVDとによって示されている動きベクトルに基づいて、現在のPUの動きベクトルを決定することができる。次いで、ビデオデコーダ30は、現在のPUの1つまたは複数の復元された動きベクトルを使用して、現在のPUに対する予測ブロックを生成することができる。
[0101]ビデオコーダが、現在のPUに対するAMVP候補リストを生成する場合、ビデオコーダは、現在のPUに空間的に隣接する位置をカバーするPU(すなわち、空間的隣接PU)の動き情報に基づく1つまたは複数のAMVP候補と、現在のPUに時間的に隣接するPUの動き情報に基づく1つまたは複数のAMVP候補を導出することができる。本開示では、PU(または他の種類のビデオユニット)はPUに関連付けられている予測ブロック(またはビデオユニットに関連付けられている他の種類のサンプルブロック)がある位置を含む場合に、その位置を「カバーする」と言われることがある。候補リストは、同じ基準インデックスに関連付けられている隣接ブロックの動きベクトル、さらには時間的基準ピクチャ内の同一の位置にある(co-located)ブロック(コロケートブロック)の隣接ブロックの動きパラメータ(すなわち、動き情報)に基づいて導出される時間的動きベクトル予測因子を含み得る。
[0102]図2は、現在のPU40に関する例示的な空間的隣接PUを示す概念図である。図2の例では、空間的隣接PUは、A0、A1、B0、B1、およびB2として示されている位置をカバーするPUであるものとしてよい。言い換えれば、現在のPU40とその空間的隣接PUとの間の例示的な関係は図2に示されている。
[0103]空間的隣接要素PUに関して、次のシンボルが定義され得る。
ルーマ位置(xP,yP)は、現在のピクチャの左上のサンプルに関する現在のPUの左上のルーマサンプルを指定するために使用される。
変数nPSWとnPSHとは、ルーマに対するPUの幅と高さとを表す。
現在のピクチャの左上のサンプルに関する現在のPU Nの左上のルーマサンプルは、(xN,yN)である。
上記の定義において、(xN,yN)(NはA0、A1、B0、B1、またはB2で置き換えられる)は、(xP−1,yP+nPSH)、(xP−1,yP+nPSH−1)、(xP+nPSW,yP−1)、(xP+nPSW−1,yP−1)、または(xP−1,yP−1)としてそれぞれ定義される。
[0104]現在のPUに時間的に隣接するPU(すなわち、現在のPUと異なる時間インスタンスに関連付けられているPU)の動き情報に基づくマージ候補リストまたはAMVP候補リスト内の候補は、TMVPと称され得る。TMVPは、HEVCのコーディング効率を改善するために使用され、他のコーディングツールとは異なってもよく、TMVPは、復号ピクチャバッファ内のフレームの動きベクトルにアクセスする必要がある場合がある。より具体的には、TMVPは、基準ピクチャリスト内のピクチャの動きベクトルにアクセスする必要がある場合がある。
[0105]TMVPを決定するために、ビデオコーダは、現在のPUと同一の位置にあるPU(コロケートPU)を含む基準ピクチャを最初に識別することができる。言い換えれば、ビデオコーダは、いわゆる「同一の位置にある(co-located)ピクチャ(コロケートピクチャ)」を識別することができる。現在のピクチャの現在のスライスがBスライス(すなわち、双方向にインター予測されたPUを含むことが許されているスライス)である場合、ビデオエンコーダ20は、スライスヘッダで、同一の位置にあるピクチャがRefPicList0からのものであるかまたはRefPicList1からのものであるかを示すシンタックス要素(たとえば、collocated_from_l0_flag)をシグナリングすることができる。言い換えれば、TMVPの使用が現在のスライスに対してイネーブルにされ、現在のスライスがBスライス(たとえば、双方向にインター予測されたPUを含むことが許されているスライス)であるときに、ビデオエンコーダ20は、スライスヘッダでシンタックス要素(たとえば、collocated_from_l0_flag)をシグナリングして、同一の位置にあるピクチャがRefPicList0にあるか、またはRefPicList1にあるかを示すことができる。
[0106]スライスヘッダ内のシンタックス要素(たとえば、collocated_ref_idx)は、識別された基準ピクチャリスト内の同一の位置にあるピクチャを示すものとしてよい。こうして、ビデオデコーダ30が、同一の位置にあるピクチャを含む基準ピクチャリストを識別した後、ビデオデコーダ30は、スライスヘッダでシグナリングされ得る、collocated_ref_idxを使用して、識別された基準ピクチャリスト内の同一の位置にあるピクチャを識別することができる。
[0107]ビデオコーダは、同一の位置にあるピクチャをチェックすることによって同一の位置にあるPUを識別することができる。TMVPは、同一の位置にあるPUを含むCUの右下のPUの動き情報、またはこのPUを含むCUの中心PU内の右下のPUの動き情報のいずれかを示し得る。したがって、このPUを含むCUの右下のPUの動き、またはこのPUを含むCUの中心PU内の右下のPUの動きのいずれかが使用される。同一の位置にあるPUを含むCUの右下のPUは、PUの予測ブロックの右下のサンプルの右の、直下の位置と同一の位置にある位置をカバーするPUであってよい。言い換えれば、TMVPは、基準ピクチャ内にあり、現在のPUの右下隅部と同一の位置にある位置をカバーするPUの動き情報を示し得るか、または、基準ピクチャ内にあり、現在のPUの中心(すなわち、現在のPUの予測ブロックの中心)と同一の位置にある位置をカバーするPUの動き情報を示し得る。
[0108]ビデオコーダが、時間的基準ピクチャ内のTMVPの動きベクトルを指定する動きベクトル候補(たとえば、AMVP候補リストのマージリスト内の候補)を生成する場合、ビデオコーダは、時間的基準ピクチャの時間的位置(POC値によって反映される)に基づいてTMVPの動きベクトルを拡大縮小することができる。言い換えれば、ビデオコーダは、現在のピクチャと基準ピクチャとの間のPOC距離に基づいて動きベクトル候補の動きベクトルを拡大縮小することができる。たとえば、ビデオコーダが、第1のピクチャと第2のピクチャとの間のPOC距離に基づいて動きベクトルを拡大縮小する場合、ビデオコーダは、第1のピクチャのPOC値と第2のピクチャのPOC値との間の差が、第1のピクチャのPOC値と第2のピクチャのPOC値との間の差が小さいときよりも大きい場合に、より大きい量だけ動きベクトルの大きさを増加させることができる。
[0109]マルチビューコーディングでは、異なる視点からの同じシーンの複数のビューがあり得る。「アクセスユニット」という用語は、同時インスタンスに対応するピクチャのセットを指すために使用される。したがって、ビデオデータは、時間の経過とともに生じる一連のアクセスユニットとして概念化され得る。「ビューコンポーネント」は、単一のアクセスユニットにおけるビューのコーディングされた表現であるものとしてよい。本開示では、「ビュー」は、同じビュー識別子に関連付けられているビューコンポーネントのシーケンスを指すものとしてよい。
[0110]マルチビューコーディングは、ビュー間予測をサポートする。ビュー間予測は、HEVCで使用されるインター予測に類似しており、同じシンタックス要素を使用することができる。しかしながら、ビデオコーダが、現在のビデオユニット(PUなど)に対してビュー間予測を実行する場合、ビデオエンコーダ20は、基準ピクチャとして、現在のビデオユニットと同じアクセスユニット内にあるが、ビューが異なる、ピクチャを使用することができる。言い換えれば、マルチビューコーディングでは、ビュー間予測は、同じアクセスユニットの異なるビューでキャプチャされたピクチャ間で実行され(すなわち、同じ時間インスタンス内で)、これによりビュー間の相関を取り除く。対照的に、従来のインター予測は、異なるアクセスユニット内のピクチャのみを基準ピクチャとして使用する。
[0111]マルチビューコーディングでは、ビットストリームは複数のレイヤを有することができる。レイヤは、異なるビューに対応し得る。ビューは、ビデオデコーダ(たとえば、ビデオデコーダ30)がビューに関連付けられているピクチャを、任意の他のビュー内のピクチャを参照することなく復号することができる場合に「ベースビュー」と称され得る。ビューは、ビューの復号が1つまたは複数の他のビューに関連付けられているピクチャの復号に依存する場合に非ベースビューと称され得る。
[0112]たとえば、NALユニットは、ヘッダ(すなわち、NALユニットヘッダ)とペイロード(たとえば、RBSP)とを含み得る。NALユニットヘッダは、nuh_reserved_zero_6bitsシンタックス要素を含み得る。異なる値を指定するnuh_reserved_zero_6bitシンタックス要素を有するNALユニットは、ビットストリームの異なる「レイヤ」に属す。そこで、マルチビューコーディング、3DV、またはSVCでは、NALユニットのnuh_reserved_zero_6bitsシンタックス要素は、NALユニットのレイヤ識別子(すなわち、レイヤID)を指定することができる。いくつかの例では、NALユニットのnuh_reserved_zero_6bitsシンタックス要素は、NALユニットがマルチビューコーディング、3DVコーディング、またはSVCにおけるベースレイヤに関係する場合に0に等しい。ビットストリームのベースレイヤ内のデータは、ビットストリームの他のレイヤ内のデータを参照することなく復号され得る。NALユニットが、マルチビューコーディング、3DV、またはSVCにおけるベースレイヤに関係しない場合、nuh_reserved_zero_6bitsシンタックス要素は、非ゼロの値を有し得る。上で示されているように、マルチビューコーディングと3DVコーディングとにおいて、ビットストリームの異なるレイヤは、異なるビューに対応し得る。SVCでは、ベースレイヤ以外のレイヤは、「エンハンスメントレイヤ」と称され、ビットストリームから復号されたビデオデータの表示品位を高める情報を提供することができる。
[0113]さらに、レイヤ内のいくつかのピクチャは、同じレイヤ内の他のピクチャを参照することなく復号され得る。そこで、レイヤのいくつかのピクチャのデータをカプセル化するNALユニットは、レイヤ内の他のピクチャの復号性に影響を及ぼすことなくビットストリームから取り除かれ得る。そのようなピクチャのデータをカプセル化しているNALユニットを取り除くことで、ビットストリームのフレームレートを下げることができる。レイヤ内の他のピクチャを参照することなく復号され得るレイヤ内のピクチャのサブセットは、本明細書では「サブレイヤ」または「時間的サブレイヤ」と称され得る。
[0114]NALユニットは、temporal_idシンタックス要素も含み得る。NALユニットのtemporal_idシンタックス要素は、NALユニットの時間的識別子を指定する。NALユニットの時間的識別子は、NALユニットが関連付けられているサブレイヤを識別する。こうして、ビットストリームの各サブレイヤは、異なる時間的識別子に関連付けられ得る。第1のNALユニットの時間的識別子が、第2のNALユニットの時間的識別子より小さい場合、第1のNALユニットによってカプセル化されているデータは、第2のNALユニットによってカプセル化されているデータを参照することなく復号され得る。
[0115]非ベースビューのうちの1つにおけるピクチャをコーディングする場合、ビデオコーダ(ビデオエンコーダ20またはビデオデコーダ30など)は、ピクチャを基準ピクチャリスト内に追加することを、そのピクチャが、ビデオコーダが現在コーディングしているピクチャと異なるビューに関連付けられているが、ビデオコーダが現在コーディングしているピクチャと同じ時間インスタンス(すなわち、アクセスユニット)に関連付けられている場合に行うことができる。他のインター予測基準ピクチャと同様に、ビデオコーダは、ビュー間予測基準ピクチャをインター予測基準ピクチャと同じ方法で基準ピクチャリストの任意の位置に挿入することができる。言い換えれば、ビュー間予測でコーディングされたピクチャは、他の非ベースビューのビュー間予測に対して基準ピクチャリスト内に追加され得る。
[0116]H.264/AVCのMVC拡張では、ビュー間予測は、視差動き補償(すなわち、ビュー間動き予測)によってサポートされており、これはH.264/AVC動き補償のシンタックスを使用するが、異なるビュー内のピクチャが基準ピクチャとして使用されることを許す。2つのビューのコーディングは、H.264/AVCのMVC拡張でもサポートされ得る。H.264/AVCのMVC拡張の利点の1つは、MVCエンコーダが、3つ以上のビューを3Dビデオ入力として受け取ることができ、MVCデコーダが、そのようなマルチビュー表現を復号することができるという点である。したがって、MVCデコーダを備えるレンダラは、3つ以上のビューを備える3Dビデオコンテンツを予期することができる。
[0117]MVCでは、ビュー間予測は、同じアクセスユニット内のピクチャ間で許される(すなわち、同じ時間インスタンスで)。非ベースビューでピクチャをコーディングする場合、ビデオコーダは、基準ピクチャリスト内に、ビュー間基準ピクチャ(すなわち、現在のピクチャと異なるビューに関連付けられているが、現在のピクチャと同じ時間インスタンスに関連付けられているピクチャ)を含めることができる。ビュー間基準ピクチャは、インター予測基準ピクチャと全く同様に、基準ピクチャリストの任意の位置に入れられ得る。ビュー間基準ピクチャが、動き補償に使用される場合、対応する動きベクトルは、「視差動きベクトル」と称される。
[0118]マルチビュービデオコーディングの状況では、2種類の動きベクトルがある。動きベクトルの1つの種類は、時間的基準ピクチャを指す通常の動きベクトルである。通常の時間的動きベクトルに対応するインター予測の種類は、動き補償予測(MCP)と称され得る。ビュー間予測基準ピクチャが、動き補償に使用される場合、対応する動きベクトルは、「視差動きベクトル」と称され得る。言い換えれば、視差動きベクトルは、異なるビュー内のピクチャ(すなわち、視差基準ピクチャまたはビュー間基準ピクチャ)を指す。視差動きベクトルに対応するインター予測の種類は、「視差補償予測」または「DCP」と称され得る。
[0119]図3は、例示的なマルチビュー復号順序を示す概念図である。マルチビュー復号順序は、ビットストリーム順序であってよい。図3の例では、各正方形は、ビューコンポーネントに対応する。正方形の列は、アクセスユニットに対応する。各アクセスユニットは、時間インスタンスのすべてのビューのコーディングされたピクチャを含むように定義され得る。正方形の行は、ビューに対応する。図3の例では、アクセスユニットはT0...T8のラベルが付けられ、ビューはS0...S7のラベルが付けられている。アクセスユニットの各ビューコンポーネントは、次のアクセスユニットのビューコンポーネントの前に復号されるので、図3の復号順序は、時間順コーディング(time-first coding)と称され得る。アクセスユニットの復号順序は、出力または表示順序と同一でなくてもよい。
[0120]マルチビューコーディングは、ビュー間予測をサポートすることができる。ビュー間予測は、H.264/AVC、HEVC、または他のビデオコーディング仕様で使用されるインター予測に類似しており、同じシンタックス要素を使用することができる。しかしながら、ビデオコーダが、現在のビデオユニット(マクロブロックまたはPUなど)に対してビュー間予測を実行する場合、ビデオコーダは、基準ピクチャとして、現在のビデオユニットと同じアクセスユニット内にあるが、ビューが異なる、ピクチャを使用することができる。対照的に、従来のインター予測は、異なるアクセスユニット内のピクチャのみを基準ピクチャとして使用する。
[0121]図4は、マルチビューコーディングのための例示的な予測構造体を示す概念図である。図4のマルチビュー予測構造体は、時間的およびビュー間予測を含む。図4の例では、各正方形は、ビューコンポーネントに対応する。図4の例では、アクセスユニットはT0...T11のラベルが付けられ、ビューはS0...S7のラベルが付けられている。「I」のラベルが付けられている正方形は、イントラ予測されたビューコンポーネントである。「P」のラベルが付けられている正方形は、片方向インター予測されたビューコンポーネントである。「B」と「b」のラベルが付けられている正方形は、双方向インター予測されたビューコンポーネントである。「b」のラベルが付けられた正方形は、「B」のラベルが付けられた正方形を基準ピクチャとして使用することができる。第1の正方形から第2の正方形に向かう矢印は、第1の正方形がインター予測において第2の正方形に対する基準ピクチャとして利用可能であることを示している。図4の垂直矢印によって示されているように、同じアクセスユニットの異なるビュー内のビューコンポーネントは、基準ピクチャとして利用可能であるものとしてよい。したがって、図4は、マルチビュービデオコーディングに対する典型的なMVC予測(各ビュー内のインターピクチャ予測とビュー間予測の両方を含む)を示しており、ここでは、予測は、矢印によって示されており、指されているオブジェクトは指しているオブジェクトを予測基準に使用する。アクセスユニットの1つのビューコンポーネントを同じアクセスユニットの別のビューコンポーネントに対する基準ピクチャとして使用することは、ビュー間予測と称され得る。
[0122]上で述べたように、HEVCのマルチビュー拡張(すなわち、MV−HEVC)とHEVCの3DV拡張(すなわち、3D−HEVC)とは、開発中である。すなわち、VCEGとMPEGとの3Dビデオコーディングに関する共同チーム(JCT−3V)がHEVCに基づく3DV規格を開発中であり、これに対する標準化の取組みの一環として、HEVCに基づくマルチビュービデオコーデックの標準化(MV−HEVC)とHEVCに基づく3Dビデオコーディング(3D−HEVC)とがある。
[0123]Gerhard Techら、「3D−HEVC Test Model Description draft 1」、JCT3V−A1005、ITU−T SG 16 WP 3とISO/IEC JTC 1/SC 29/WG 11との3Dビデオコーディング拡張開発に関する共同チーム、第1回会合:ストックホルム、スウェーデン、16−20、2012年7月(これ以降、「3D−HEVC試験モデル1」)では、基準ソフトウェアの説明、さらには3D−HEVCの作業ドラフトを提示している。3D−HEVC用の基準ソフトウェア、すなわち3DV−HTMは、https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/trunkから入手可能である。Gerhard Techら、「MV−HEVC Working Draft 1」、JCT3V−A1004、ITU−T SG 16 WP 3とISO/IEC JTC 1/SC 29/WG 11との3Dビデオコーディング拡張開発に関する共同チーム、第1回会合:ストックホルム、スウェーデン、16−20、2012年7月(これ以降、「JCT3V−A1004」)では、MV−HEVCの作業ドラフトを提示している。
[0124]HEVCのランダムアクセスの概念は、マルチビューと3DVとの拡張に拡大適用される。JCT3V−A1004は、ランダムアクセスポイントアクセスユニット、さらにはランダムアクセスビューコンポーネントの詳細な定義を含む。たとえば、JCT3V−A1004では、ランダムアクセスポイント(RAP)ビューコンポーネントを、スライスのみを含み、各スライスは、境界値を含めて7から12までの範囲内のnal_unit_typeを有する、ビューコンポーネントとして定義する。ランダムアクセスポイントビューコンポーネントは、インター予測から予測されない。したがって、HEVCのマルチビューまたは3D拡張(すなわち、MV−HEVCまたは3D−HEVC)では、ビューコンポーネントがランダムアクセスポイントであるかどうかは、ビューコンポーネントのNALユニット型に依存する。この型がランダムアクセスポイントピクチャに対するHEVCベース仕様において定義されているものに属す場合、現在のビューコンポーネントは、ランダムアクセスポイントビューコンポーネント(または単純に、現在のビューのランダムアクセスポイントピクチャ)である。ランダムアクセスポイント(RAP)ビューコンポーネントは、PまたはBピクチャであってよい。Pピクチャは、片方向予測インター予測とイントラ予測とが許されているが、双予測インター予測は許されていないピクチャである。Bピクチャは、片方向予測インター予測と、双予測インター予測と、イントラ予測とが許されているピクチャである。さらに、JCT3V−A1004では、ランダムアクセスポイントアクセスユニットを、コーディングされたピクチャがRAPピクチャであるアクセスユニットとして定義している。
[0125]いくつかの例では、ランダムアクセス機能は、時間的次元(したがってビューの内側)におけるいくつかの予測に対してHEVCベース仕様と同様にディセーブルにされるかまたは制約されるかのいずれかがなされるように時間的予測にのみ適用される。しかしながら、ランダムアクセスポイントビューコンポーネントに対するビュー間予測は、それでも可能であり、また典型的であり、これにより、H.264/MVCにおけるアンカーピクチャと同様に、コーディング効率を改善することができる。
[0126]ビデオコーダは、ブロック(たとえば、PU、CUなど)に対する視差ベクトルを決定することができる。一般に、視差ベクトルは、2つのビューの間の変位の推定量として使用される。ビデオコーダは、ブロックに対する視差ベクトルを使用して、ビュー間動きもしくは残差予測について別のビュー内に基準ブロックを配置することができるか、または、ビュー間動き予測のため視差ベクトルを視差動きベクトルに変換し得る。
[0127]ビデオコーダが、現在のブロック(たとえば、現在のPU、CUなど)に対してビュー間動き予測を実行する場合、ビデオコーダは、現在のブロックに対する視差ベクトルを使用して、基準ビュー内の対応するブロック(たとえば、基準PU)を識別することができる。次いで、ビデオコーダは、対応するブロックの動き情報(たとえば、動きベクトル、基準インデックスなど)をマージモードまたはAMVPモードに対する候補リスト内の候補として使用することができる。言い換えれば、現在のブロックの対応するブロックは、視差ベクトルによって識別され、その動きベクトルは、現在のブロックのAMVPまたはマージリストの追加の候補として使用され得る。さらに、いくつかの例では、ビデオコーダは、現在のブロックに対する視差ベクトルを、マージモードまたはAMVPモードに対する候補リスト内の候補として使用することができる。すなわち、視差ベクトルは、視差動きベクトルに変換されて、AMVPまたはマージリスト内に追加され得る。
[0128]さらに、ビデオコーダは、ブロック(たとえば、PU、CUなど)の視差ベクトルを使用して、ビュー間残差予測を実行することができる。ビデオエンコーダ20が、ビュー間残差予測を実行する場合、ビデオエンコーダ20は、現在のブロックに対する視差ベクトルを使用して、基準ビュー内の対応するブロックを識別することができる。ビデオエンコーダ20は、次いで、対応するブロックに対する残差を決定することができる。次いで、ビデオエンコーダ20は、対応するブロックに対する残差と現在のブロックに対する残差との間の差をシグナリングすることができる。ビデオデコーダ30は、現在ブロックに対する視差ベクトルを使用して、対応するブロックを識別することができ、対応するブロックに対する残差を決定することができる。次いで、ビデオコーダは、シグナリングされた残差のサンプルを対応するブロックに対する残差の対応するサンプルと現在のブロックに対する予測ブロックの対応するサンプルとに加えて、現在のブロックのサンプルを再構成することができる。この方法で、現在のブロックが現在のCUであり、現在のCUの対応するブロックが非ゼロの残差ピクセルを含む場合、ブロックの残差は、現在のCUの残差を予測するために使用される。
[0129]いくつかの例では、ビデオコーダは、隣接ブロックベース視差ベクトル(NBDV)の方法を使用して、ブロックに対する視差ベクトルを導出することができる。3D−HEVCでは、最初に、L. Zhangら、「3D−CE5.h: Disparity vector generation results」、ITU−T SG 16 WP 3とISO/IEC JTC 1/SC 29/WG 11との3Dビデオコーディング拡張開発に関する共同チーム、第1回会合:ストックホルム、スウェーデン、16−20、2012年7月、文書JCT3V−A0097(これ以降、「JCT3V−A0097」)で提案されているNBDV導出プロセスを採用した。NBDV導出プロセスは、それ以来、さらに適応がなされている。たとえば、Sungら、「3D−CE5.h: Simplification of disparity vector derivation for HEVC−based 3D video coding」、ITU−T SG 16 WP 3とISO/IEC JTC 1/SC 29/WG 11との3Dビデオコーディング拡張開発に関する共同チーム、第1回会合:ストックホルム、スウェーデン、16−20、2012年7月、文書JCT3V−A0126(これ以降、「JCT3V−A0126」)において簡素化されたNBDVとともに暗黙的視差ベクトル(IDV)が含まれた。さらに、Kangら、「3D−CE5.h related: Improvements for disparity vector derivation」、ITU−T SG 16 WP 3とISO/IEC JTC 1/SC 29/WG 11との3Dビデオコーディング拡張開発に関する共同チーム、第2回会合:上海、中国、13−19、2012年10月、文書JCT3V−B0047(これ以降、「JCT3V−B0047」)において、NBDV導出プロセスは、復号ピクチャバッファ内に格納されているIDVを取り除くことによってさらに簡素化され、その一方で、RAPピクチャ選択によりコーディング利得を改善している。
[0130]マルチビュービデオコーディングにおける視差動き補償は、視差動きベクトルにより実行される。隣接ブロック(たとえば、現在のブロックに空間的または時間的に隣接するブロック)は、ビデオコーディングにおいてほとんど同じ動き/視差情報を共有するので、現在のブロックは、隣接ブロックにおける動きベクトル情報を、コーディング利得を改善するための良好な予測因子として使用することができる。この考え方に従って、NBDV導出プロセスは、異なるビュー内の視差ベクトルを推定するために隣接視差情報を使用する。具体的には、NBDV導出プロセスは、空間的隣接ブロックと時間的隣接ブロックとからの視差動きベクトルを使用して、現在のブロックに対する視差ベクトルを導出する。
[0131]ビデオコーダが、NBDV導出プロセスを実行する場合、ビデオコーダは、隣接ブロックの2つのセットを利用することができる。一方のセットは、空間的隣接ブロックからのものであり、他方のセットは、時間的隣接ブロックからのものである。ビデオコーダは、空間的隣接ブロックと時間的隣接ブロックとを定義済み順序でチェックすることができる。定義済み順序は、現在のブロックと候補ブロックとの間の相関の優先度によって決定され得る。視差動きベクトルが、候補内に見つかった後、ビデオコーダは、視差動きベクトルを視差ベクトルに変換することができる。
[0132]NBDV導出プロセスのいくつかのバージョンにおいて、ビデオコーダは、視差ベクトル導出に5つの空間的隣接ブロックを使用する。たとえば、ビデオコーダは、空間的隣接ブロック、すなわち、現在のブロックの左下の空間的隣接ブロックと、左の空間的隣接ブロックと、右上の空間的隣接ブロックと、上の空間的隣接ブロックと、左上の空間的隣接ブロックとをチェックすることができる。さらに、NBDV導出プロセスのいくつかのバージョンでは、これら5つの空間的隣接ブロックは、視差ベクトル導出に使用され、ブロックは図2に示されているように位置A0、A1、B0、B1、およびB2をそれぞれカバーするものとしてよい。いくつかの例では、NBDV導出プロセスで使用される空間的隣接ブロックは、HEVCのマージモードで使用されるものと同じである。したがって、いくつかのそのような例では、追加のメモリアクセスは不要である。
[0133]さらに、上で述べたように、ビデオコーダは、現在のブロック(たとえば、現在のPU)に対する視差ベクトルを決定するプロセスの一部として時間的隣接PUをチェックすることができる。ビデオコーダが、時間的隣接ブロック(たとえば、時間的隣接PU)をチェックする場合、ビデオコーダは、最初に、候補ピクチャリストの構成プロセスを実行するものとしてよい。ビデオコーダが、候補ピクチャリストの構成プロセスを実行する場合、ビデオコーダは、現在のビュー(すなわち、現在のブロックに関連付けられているビュー)からのすべての基準ピクチャを候補ピクチャとして取り扱うことができる。さらに、ビデオコーダが、候補ピクチャリストの構成プロセスを実行する場合、ビデオコーダは、最初に、候補ピクチャリスト内にいわゆる「同一の位置にあるピクチャ」を挿入し、続いて、候補ピクチャの残りを、基準インデックスの昇順で挿入することができる。すなわち、ビデオコーダは、残りの候補ピクチャが現在のピクチャの基準ピクチャリスト(たとえば、RefPicList0とRefPicList1)内に出現する順序に従って残りの候補ピクチャを候補ピクチャリスト内に挿入することができる。現在のブロックを含むスライスのスライスヘッダ内の1つまたは複数のシンタックス要素は、同一の位置にあるピクチャを示すことができる。両方の基準ピクチャリスト(たとえば、RefPicList0とRefPicList1)内の同じ基準インデックスを有する基準ピクチャがNDBV導出プロセスでの使用に利用可能である場合、同一の位置にあるピクチャと同じ基準ピクチャリスト内の基準ピクチャは、候補ピクチャリスト内で、他の基準ピクチャに先行する。
[0134]候補ピクチャリストを生成した後、ビデオコーダは、候補ピクチャリスト内の候補ピクチャ内の候補領域を決定することができる。ビデオコーダは、候補領域を使用して、時間的隣接ブロックを決定することができる。上で示されているように、ビデオコーダは、視差動きベクトルまたは時間的隣接ブロックのIDVに基づいて現在ブロックに対する視差ベクトルを導出することができる。いくつかの例では、候補ピクチャリスト内の各候補ピクチャについて、ビデオコーダは、3つの候補領域を決定することができる。これら3つの候補領域は、次のように定義され得る。
CPU:現在のPUまたは現在のCUの同一の位置にある領域(コロケート領域)
CLCU:現在のPUの同一の位置にある領域をカバーする最大コーディングユニット(LCU)
BR:CPUの右下の4×4のブロック
[0135]16×16のブロックにおけるより小さいブロックは、動き補償の結果と同じ動き情報を共有するので、ビデオコーダは、視差ベクトルに対するサンプルブロックを1つだけチェックすればよい。候補領域が、複数の16×16のブロックをカバーする場合、ビデオコーダは、ラスタースキャン順序に従って候補領域内のすべての16×16のブロックをチェックすることができる。たとえば、時間的に同一の位置にあるブロックに対する動きベクトルは、基準ピクチャの16×16のブロック内に格納され、典型的には、ビデオコーダは、4×4のブロックにアクセスして、動きベクトルを見つける。こうして、ビデオコーダが、候補ブロックを16×16のブロック内に置いた場合、すべての4×4のブロックは、共通動きベクトルを含み、ビデオコーダは、異なる動きベクトルを見つけるためにすべての4×4のブロックをチェックする必要はない。他方、候補領域が16×16より大きい場合、16×16のブロックの外の4×4のブロックは、異なる動きベクトルを含み得る。
[0136]ビデオコーダが、候補領域(または候補領域内の16×16のブロック)をチェックする場合、ビデオコーダは、候補領域をカバーするPUが視差動きベクトルを指定するかどうかを決定することができる。候補領域をカバーするPUが、視差動きベクトルを指定する場合、ビデオコーダは、PUの視差動きベクトルに基づいて現在のブロックの視差ベクトルを決定することができる。
[0137]いくつかの例では、ビデオコーダは、NBDV導出プロセスを実行する一環として優先度ベースの視差ベクトル決定を実行することができる。たとえば、ビデオコーダは、ビデオコーダが視差動きベクトルを含む隣接ブロックを識別した後に、ビデオコーダが視差動きベクトルを現在のブロックに対する視差ベクトルに変換するように視差ベクトルを導出することができる。次いで、ビデオコーダは、ビュー間動き予測および/またはビュー間残差予測に視差ベクトルを使用することができる。いくつかの例では、隣接ブロックのチェック順序は、隣接ブロックと現在のブロックとの間の相関に基づいて定義される。たとえば、ビデオコーダは、最初に、空間的隣接ブロックを1つずつチェックし得る。ビデオコーダが視差動きベクトルを識別した後、ビデオコーダは、視差動きベクトルを視差ベクトルとして返す。いくつかの例では、5つの空間的隣接ブロックのチェック順序は、A1、B1、B0、A0、およびB2として定義される。
[0138]さらに、候補ピクチャリスト内の各候補ピクチャについて、ビデオコーダは、この候補ピクチャにおける3つの候補領域を順にチェックすることができる。3つの領域のチェック順序は、第1の非ベースビューについてはCPU、CLCU、およびBR、第2の非ベースビューについてはBR、CPU、CLUとして定義される。この例では、第1の非ベースビューに関連付けられているピクチャの復号は、ベースビューに関連付けられているピクチャの復号に依存するが、他のビューに関連付けられているピクチャの復号には依存し得ない。さらに、この例では、第2の非ベースビューに関連付けられているピクチャの復号は、ベースビュー、また場合によっては、第1の非ベースビューに関連付けられているピクチャの復号に依存するが、もし存在すれば他のビューに関連付けられているピクチャの復号には依存し得ない。簡単にするため、空間的隣接ブロック内の視差動きベクトルは、SDVとして表され、時間的隣接ブロック内の視差動きベクトルは、TDVとして表され得る。
[0139]ビデオコーダがブロックの動きベクトル(複数可)(すなわち、空間的隣接ブロック、候補ピクチャの候補領域、または候補ピクチャの候補領域の16×16のブロック)をチェックする場合、ビデオコーダは、ブロックの動きベクトル(複数可)が視差動きベクトルであるかどうかを決定することができる。ピクチャのブロックの視差動きベクトルは、ピクチャの視差基準ピクチャ内の位置を指している動きベクトルである。与えられたピクチャの視差基準ピクチャは、与えられたピクチャと同じアクセスユニットに関連付けられているが、与えられたピクチャと異なるビューに関連付けられているピクチャであるものとしてよい。ビデオコーダが、視差動きベクトルを識別する場合、ビデオコーダは、チェックプロセスを終了することができる。ビデオコーダは、返された視差動きベクトルを視差ベクトルに変換することができ、またビュー間動き予測とビュー間残差予測とに対して視差ベクトルを使用することができる。たとえば、ビデオコーダは、視差動きベクトルの水平成分に等しい現在のブロックに対する視差ベクトルの水平成分を設定することができ、視差ベクトルの垂直成分を0に設定することができる。
[0140]ビデオコーダが空間的隣接PUをチェックする場合に、ビデオコーダは、最初に、隣接PUが視差動きベクトルを有しているかどうかをチェックすることができる。空間的隣接PUのどれもが視差動きベクトルを有していない場合、ビデオコーダは、空間的隣接PUのどれかがIDVを有しているかどうかを決定することができる。IDVは、空間的または時間的隣接PU(たとえば、ビュー間動き予測またはビュー間残差予測を使用してコーディングされるPU)の視差ベクトルであってよい。たとえば、ビデオコーダが、ビュー間動き予測でブロックをコーディングする場合、ビデオコーダは、異なるビュー内の対応するブロックを選択するために視差ベクトルを導出することが必要になることがある。この例では、「IDV」という用語は、ビュー間動き予測において導出された視差ベクトルを指すものとしてよい。ブロックが、時間的動き予測でコーディングされ得るとしても、ビデオコーダは、1つまたは複数の次のブロックをコーディングするために、導出された視差ベクトルを破棄しない。この方法で、IDVは、視差ベクトル導出のためにそのブロックに格納され得る。
[0141]NBDV導出プロセスの一環としてビデオコーダがIDVをチェックするいくつかの例では、ビデオコーダは、次のステップを実行することができる。次のステップのどれかで視差ベクトルを見つけた場合、ビデオコーダは、導出プロセスを終了することができる。
ステップ1:5つの空間的隣接ブロックを、A1、B1、B0、A0、およびB2の順序でチェックして、視差動きベクトルを見つける。視差動きベクトルが見つかった後、ビデオコーダは、視差動きベクトルを視差ベクトルに変換する。空間的隣接ブロックがIDVを含んでいる場合、ビデオコーダは、それらのIDVフラグを「IDV使用済み」とマークし、IDVフラグの関連する値を格納する。
ステップ2:時間的動きベクトル予測がイネーブルにされている場合に、次のように適用する。
a)現在のコーディングモードがAMVPである場合、ターゲット基準ピクチャリスト内にあるターゲット基準インデックスを有する基準ピクチャが、同一の位置にあるピクチャ(コロケートピクチャ)として使用される。同一の位置にあるピクチャ内の2つのブロックが定義される(すなわち、同一の位置にある(コロケート)PU(BR)の右下のブロックと、同一の位置にある(コロケート)PU(CB)の中心のブロック)。この例では、ビデオコーダは、次の順序でコロケートピクチャのブロックをチェックする。
1)BRをチェックして、BRが視差動きベクトルを含んでいるかどうかを確認する。含んでいれば、ビデオコーダは、視差動きベクトルを視差ベクトルに変換する。含んでいなければ、BRがスキップモードとしてコーディングされ、BRがIDVを含んでいる(すなわち、IDVのフラグが1に等しい)場合、ビデオコーダは、BRを「IDV使用済み」とマークし、関連するIDVを格納する。次いで、ビデオコーダは、ステップ3を実行するものとしてよい。
2)CBをチェックして、CBが視差動きベクトルを含んでいるかどうかを確認する。含んでいれば、ビデオコーダは、視差動きベクトルを視差ベクトルに変換する。含んでいなければ、BRがスキップモードとしてコーディングされ、BRがIDVを含んでいる(すなわち、IDVのフラグが1に等しい)場合、ビデオコーダは、BRを「IDV使用済み」とマークし、ビデオコーダは、関連するIDVを格納する。次いで、ビデオコーダは、ステップ3を実行するものとしてよい。
b)現在のコーディングモードがスキップ/マージである場合、ビデオコーダは、適用可能な場合に、各基準ピクチャリスト内の2つの同一の位置にある基準ピクチャを使用する。同一の位置にある基準ピクチャを示す基準インデックスは、左の隣接PUの基準インデックスまたは0に等しいものとしてよい。基準ピクチャリスト0と1との同一の位置にあるピクチャの各々について、ビデオコーダは、a)1)とa)2)とのステップを順に実行する。
ステップ3:5つの空間的隣接ブロックのうちの1つが、スキップモードを使用してコーディングされ、空間的隣接ブロックがIDVを含む(すなわち、空間的隣接ブロックが「IDV使用済み」とマークされているフラグを有する)場合に、ビデオコーダは、IDVを視差ベクトルとして返す。この例では、IDVに対する空間的隣接ブロックのチェック順序は、A0、A1、B0、B1、およびB2である。
ステップ4:時間的動きベクトル予測がイネーブルにされ、「IDV使用済み」とマークされているコロケートピクチャ内に1つのブロック(すなわち、BRまたはCB)がある場合、ビデオコーダは、そのブロックに関連付けられているIDVを視差ベクトルに変換する。
[0142]復号ピクチャバッファ(DPB)内のIDVにアクセスすることに関連付けられている要求されるメモリ帯域幅と複雑度とは大きくなる可能性がある。たとえば、隣接ブロックがNBDV導出プロセスにおいてIDVを有するかどうかを決定するために、ビデオコーダは、隣接ブロックのAMVPまたはマージ候補リストを再構成し、再構成されたAMVPまたはマージ候補リスト内のビュー間動きベクトル候補を識別することが必要になる場合がある。隣接ブロックのAMVPまたはマージ候補リストの再構成は、比較的計算集約的で、大きな帯域幅を必要とする可能性がある。したがって、ビデオコーダは、低複雑度のNBDV導出プロセスを実行するものとしてよい。ビデオコーダは、ビデオコーダが低複雑度のNBDV導出プロセスを実行するときに、より少ないブロック候補を考慮する。たとえば、ビデオコーダは、DPBに、IDVに対する情報を格納することができる。この例では、IDVに対する付加的な情報は、すべての以前にコーディングされたピクチャに対するIDVフラグとベクトルとを含み得る。さらに、低複雑度のNBDV導出プロセスでは、DPB内のIDV候補を取り除くことで、メモリ帯域幅を減らすことができる。言い換えれば、ビデオコーダは、IDV関係情報をDPBに格納しない。
[0143]いくつかの低複雑度のNBDV導出プロセスにおいて、ビデオコーダは、上で説明されているNBDV導出プロセスよりも少ない、候補ピクチャの候補領域をチェックする。たとえば、図5は、時間的候補ピクチャの対応するPUにおける時間的隣接要素を示す概念図である。図5の例において、ビデオコーダは、「Pos.A」と「Pos.B」とによって示されるこの位置をカバーする候補領域をチェックすることができる。さらに、いくつかの低複雑度のNBDV導出プロセスにおいて、ビデオコーダは、同一の位置にある(コロケート)ピクチャとランダムアクセスピクチャのみの候補領域をチェックすることができる。したがって、いくつかの例において、コロケートピクチャとランダムアクセスピクチャとは、時間的ブロックのチェックについて考慮される(すなわち、図5に示されているような下の下と中心のブロック)。
[0144]さらに、いくつかの低複雑度のNBDV導出プロセスにおいて、ビデオコーダは、スライスレベルまたはピクチャレベルで候補ピクチャ導出を1回実行することができる。言い換えれば、ビデオコーダは、ピクチャまたはスライスごとに1回NBDV導出プロセスで使用するための候補ピクチャリストを生成することができる。その結果、そのような低複雑度のNBDV導出プロセスにおいて、ビデオコーダは、PUレベルまたはCUレベルで候補ピクチャ導出プロセスをもはや呼び出さない。
[0145]3D−HEVCで視差ベクトルを導出するためのプロセスは、潜在的に、次の問題を有することがある。たとえば、NBDV導出プロセスは、ビュー間動き予測のためPUごとに呼び出され、そのため、計算複雑度が著しく増大し得る。さらに、NBDV導出プロセスにおいてチェックされる空間的隣接ブロックの数は、潜在的に大きく、いくつかの空間的隣接ブロックは、同じ、または類似のコーディング効率を達成するためにチェックされる必要がないこともあり得る。
[0146]本開示の技術は、3D−HEVCにおける視差ベクトル導出プロセス(すなわち、NBDV)に対していくつかの改善と簡素化とをもたらし得る。たとえば、CUベースの視差ベクトル導出は、視差導出プロセスがCUに対して1回のみ呼び出され、CUの内側のすべてのPUが、たとえば、ビュー間動き予測とビュー間残差予測とを含む、ビュー間予測に対して、同じ導出された視差ベクトルを共有する仕組みであるものとしてよい。CUベースの視差ベクトル導出の結果、計算複雑度が減少し、並列処理が向上し得る。
[0147]たとえば、ビデオエンコーダ20は、ビデオデータのコーディングされた表現を含むビットストリームを生成することができる。ビットストリームを生成する一環として、ビデオエンコーダ20は、視差ベクトル導出プロセスを実行して、複数のブロック内の代表的ブロックに対する視差ベクトルを導出することができる。この例では、ビデオデータは、複数のブロックに分割される親ブロックを含む。さらに、この例において、ビデオエンコーダ20は、一部は、導出された視差ベクトルに基づいて、代表的ブロック以外の複数のブロック内の任意のブロックに対する視差ベクトルを別々に導出することなく、複数のブロック(すなわち、親ブロックの2つまたはそれ以上のブロック)内の2つまたはそれ以上のブロックに対するビュー間予測を実行することによって、ビデオデータのコーディングされた表現を含むビットストリームを生成することができる。
[0148]別の例において、ビデオデコーダ30は、視差ベクトル導出プロセスを実行して、複数のブロック内の代表的ブロックに対する視差ベクトルを導出することができる。この例では、ビデオデータは、複数のブロックに分割される親ブロックを含む。さらに、この例において、ビデオデコーダ30は、一部は、導出された視差ベクトルに基づいて、代表的ブロック以外の複数のブロック内の任意のブロックに対する視差ベクトルを別々に導出することなく、複数のブロック内の2つまたはそれ以上のブロックに対するビュー間予測を実行することによって、複数のブロック(たとえば、親ブロック)内の2つまたはそれ以上のブロックに対するサンプルブロックを再構成することができる。
[0149]本開示の別の例示的な技術では、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、PUに対する視差ベクトルを導出するために修正されたNBDV導出プロセスを実行することができる。ビデオコーダが、修正されたNBDV導出プロセスを実行する場合、ビデオコーダは、3D−HEVC試験モデル1で説明されているNBDV導出プロセスに比べて、SDVおよび/またはIDVを導出するためにより少ない空間的隣接ブロックをチェックする。たとえば、ビデオコーダが、修正されたNBDV導出プロセスを実行する場合、ビデオコーダは、左のブロックと上のブロック(図2においてA1とB1として表されている)のみをチェックする。さらに、この例において、ビデオコーダは、左のブロックをチェックし、次いで、上のブロックをチェックすることができる。他の例では、ビデオコーダは、上のブロックをチェックし、次いで、左のブロックをチェックすることができる。本開示の修正されたNBDV導出プロセスの結果、3D−HEVC試験モデル1で説明されているNBDV導出プロセスに対してコーディング利得に対する変更が最小限度に抑えられ、複雑度が低減され得る。
[0150]たとえば、ビデオエンコーダ20は、視差ベクトル導出プロセスを実行して、現在のブロックに対する視差ベクトルを決定することができる。視差ベクトル導出プロセスを実行する一環として、ビデオエンコーダ20は、第1または第2のいずれかの空間的隣接ブロックが視差動きベクトルまたはIDVを有している場合に、視差動きベクトルまたはIDVを現在のブロックに対する視差ベクトルに変換することができる。この例では、視差ベクトル導出プロセスは、第1および第2のいずれの空間的隣接ブロックも視差動きベクトルまたはIDVを有していない場合であっても第1および第2の空間的隣接ブロックに加えてどれかの空間的隣接ブロックが視差動きベクトルまたはIDVを有しているかどうかを決定しない。いくつかの例では、第1の空間的隣接ブロックは、現在のブロックの上縁に隣接し(すなわち、上の隣接ブロック)、第2の空間的隣接ブロックは、現在のブロックの左縁に隣接する(すなわち、左の隣接ブロック)。本開示では、ブロック(たとえば、CTUのコーディングツリーブロック、CUのコーディングブロック、PUの予測ブロックなど)に対応するサンプルのブロックの外縁をブロックの縁と称することがある。さらに、そのような例では、ビデオエンコーダ20は、現在のブロックに対する導出された視差ベクトルに部分的に基づいて、現在のブロックの符号化された表現を生成することができる。
[0151]別の例では、ビデオデコーダ30は、視差ベクトル導出プロセスを実行して、現在のブロックに対する視差ベクトルを決定することができる。視差ベクトル導出プロセスを実行する一環として、ビデオデコーダ30は、第1または第2のいずれかの空間的隣接ブロックが視差動きベクトルまたはIDVを有している場合に、視差動きベクトルまたはIDVを現在のブロックに対する視差ベクトルに変換することができる。視差ベクトル導出プロセスは、第1および第2のいずれの空間的隣接ブロックも視差動きベクトルまたはIDVを有していない場合であっても第1および第2の空間的隣接ブロックに加えてどれかの空間的隣接ブロックが視差動きベクトルまたはIDVを有しているかどうかを決定しない。いくつかの例では、第1の空間的隣接ブロックは、現在のブロックの左縁に隣接し(すなわち、左の隣接ブロック)、第2の空間的隣接ブロックは、現在のブロックの上縁に隣接する(すなわち、上の隣接ブロック)。さらに、ビデオデコーダ30は、一部は、導出された視差ベクトルに基づいて、現在のブロックに対するビュー間予測を実行することによって、現在のブロックに対するサンプルブロックを再構成することができる。
[0152]3D−HEVCで視差ベクトルを導出するためのプロセスの別の例示的な潜在的問題として、ビデオコーダは、すべてのブロック内の関連するフラグを格納して、空間的隣接ブロックがIDVを含むかどうかを示す。そのようなフラグを格納することで、システム内のメモリの必要量が増大し得る。さらに、各ブロックは、2つまでのIDVを含むことができる(すなわち、RefPicList0に対応するIDVとRefPicList1に対応するIDV)。本開示で説明されている技術において、そのようなフラグの格納は、必要でない場合がある。
[0153]本開示の例示的な技術によれば、IDVは、単純な方法で表現され、これにより、空間的隣接ブロックがIDVを含むかどうかを示す信号のほかに使用されるフラグはない。さらに、ブロックについて、基準インデックス、基準ビューインデックス、または基準ビューインデックスの差がシグナリングされ、不正な基準インデックス(すなわち、1)、不正な基準ビューインデックス(たとえば、現在のビューと同じ)、および/または基準ビューインデックスの不正な差(たとえば、0)は、ブロックに対して、暗黙的視差ベクトルが存在していないことを示す。それに加えて、ただ1つの視差ベクトルが、1つの空間的隣接ブロックに対して存在し得る。
[0154]したがって、いくつかのそのような例において、空間的隣接ブロックがIDVを含むかどうかを示すために、フラグがシグナリングされない。たとえば、ビデオエンコーダ20は、空間的隣接ブロックがIDVを含むかどうかを示すためにフラグをシグナリングし得ない。さらに、このようないくつかの例では、不正な基準インデックス、不正な基準ビューインデックス、および基準ビューインデックスの不正な差のうちの1つは、隣接ブロックに対してIDVが存在していることを示す。たとえば、ビデオエンコーダ20は、隣接ブロックに対してIDVが存在していることを示すために、不正な基準インデックス、不正な基準ビューインデックス、および基準ビューインデックスの不正な差のうちの1つをシグナリングすることができる。
[0155]本開示の例示的な技術は、別々に、または併せて使用され得る。すなわち、本開示の技術的態様はどれも、視差ベクトル導出に対する完全な解決方法において組み合わされ得る。
[0156]図6は、本開示の技術を実装し得る例示的なビデオエンコーダ20を示すブロック図である。図6は説明のために用意され、本開示において広範に例示され、説明されているような技術に対する制限とみなされるべきでない。説明のために、本開示では、HEVCコーディングを背景としてビデオエンコーダ20について説明する。しかしながら、本開示の技術は、他のコーディング規格または方法に適用可能であるものとしてよい。
[0157]図6の例において、ビデオエンコーダ20は、予測処理ユニット100と、残差生成ユニット102と、変換処理ユニット104と、量子化ユニット106と、逆量子化ユニット108と、逆変換処理ユニット110と、再構成ユニット112と、フィルタユニット114と、復号ピクチャバッファ116と、エントロピー符号化ユニット118とを含む。予測処理ユニット100は、インター予測処理ユニット120とイントラ予測処理ユニット126とを含む。インター予測処理ユニット120は、動き推定ユニット122と動き補償ユニット124とを含む。他の例では、ビデオエンコーダ20は、より多い、より少ない、または異なる機能コンポーネントを含んでもよい。
[0158]ビデオエンコーダ20は、ビデオデータを受信することができる。ビデオエンコーダ20は、ビデオデータのピクチャのスライス内の各CTUを符号化することができる。CTUの各々は、ピクチャのサイズが等しいルーマコーディングツリーブロック(CTB)と、対応するCTBとに関連付けられ得る。CTUを符号化する一環として、予測処理ユニット100は、四分木分割法を実行して、CTUのCTBをだんだん小さくなるいくつかのブロックに分割することができる。より小さいブロックは、CUのコーディングブロックであってよい。たとえば、予測処理ユニット100は、CTUに関連付けられているCTBをサイズが等しい4つのサブブロックに分割し、それらのサブブロックのうちの1つまたは複数をサイズが等しい4つのサブサブブロックに分割し、というように続けることができる。
[0159]ビデオエンコーダ20は、CTUのCUを符号化して、CUの符号化された表現(すなわち、コーディングされたCU)を生成することができる。CUを符号化する一環として、予測処理ユニット100は、CUに関連付けられているコーディングブロックをCUの1つまたは複数のPUの間で分割することができる。したがって、各PUは、ルーマ予測ブロックと、対応するクロマ予測ブロックとに関連付けられ得る。ビデオエンコーダ20とビデオデコーダ30とは、様々なサイズを有するPUをサポートすることができる。上で示されているように、CUのサイズは、CUのルーマコーディングブロックのサイズを指すものとしてよく、PUのサイズは、PUのルーマ予測ブロックのサイズを指すものとしてよい。特定のCUのサイズが2N×2Nであると仮定すると、ビデオエンコーダ20とビデオデコーダ30とは、イントラ予測に対する2N×2NまたはN×NのPUサイズと、インター予測に対する2N×2N、2N×N、N×2N、N×N、または同様のものの対称的PUサイズとをサポートすることができる。ビデオエンコーダ20とビデオデコーダ30とは、インター予測に対する2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズに対する非対称的分割もサポートし得る。
[0160]インター予測処理ユニット120は、CUの各PUにインター予測を実行することによってPUに対する予測データを生成することができる。PUに対する予測データは、PUの予測ブロックとPUに対する動き情報とを含み得る。インター予測処理ユニット120は、PUがIスライスにあるか、Pスライスにあるか、またはBスライスにあるかに応じてCUのPUに対して異なるオペレーションを実行し得る。Iスライスでは、すべてのPUがイントラ予測される。したがって、PUがIスライス内にある場合、インター予測処理ユニット120は、PUにインター予測を実行しない。
[0161]PUがPスライス内にある場合、動き推定ユニット122は、PUに対する基準領域に対する基準ピクチャのリスト(たとえば、「RefPicList0」)内の基準ピクチャを探索することができる。PUに対する基準領域は、PUの予測ブロックに最も正確に対応するサンプルを含む、基準ピクチャ内の、一領域であるものとしてよい。動き推定ユニット122は、PUに対する基準領域を含む基準ピクチャのRefPicList0内の位置を示す基準インデックスを生成することができる。それに加えて、動き推定ユニット122は、PUの予測ブロックと基準領域に関連付けられている基準位置との間の空間的変位を示す動きベクトルを生成することができる。たとえば、動きベクトルは、現在のピクチャ内の座標から基準ピクチャ内の座標へのオフセットを与える2次元ベクトルであるものとしてよい。動き推定ユニット122は、基準インデックスと動きベクトルとをPUの動き情報として出力することができる。動き補償ユニット124は、PUの動きベクトルによって示される基準位置における実際の、または補間されたサンプルに基づいてPUの予測ブロックを生成することができる。
[0162]PUがBスライス内にある場合、動き推定ユニット122は、PUに対する片方向予測または双予測を実行することができる。PUに対する片方向予測を実行するために、動き推定ユニット122は、PUに対する基準領域に対するRefPicList0または第2の基準ピクチャリスト(「RefPicList1」)の基準ピクチャを探索することができる。動き推定ユニット122は、PUの動き情報として、基準領域を含む基準ピクチャのRefPicList0またはRefPicList1内の位置を示す基準インデックスと、PUの予測ブロックと基準領域に関連付けられている基準位置との間の空間的変位を示す動きベクトルと、基準ピクチャがRefPicList0内にあるかまたはRefPicList1内にあるかを示す1つまたは複数の予測方向指標とを出力することができる。動き補償ユニット124は、PUの動きベクトルによって示される基準位置における実際の、または補間されたサンプルに少なくとも部分的に基づいてPUの予測ブロックを生成することができる。
[0163]PUに対する双方向インター予測を実行するために、動き推定ユニット122は、PUに対する基準領域に対するRefPicList0内の準備ピクチャを探索し、PUに対する別の基準領域に対するRefPicList1内の基準ピクチャも探索することができる。動き推定ユニット122は、基準領域を含む基準ピクチャのRefPicList0とRefPicList1とにおける位置を示す基準インデックスを生成することができる。それに加えて、動き推定ユニット122は、基準領域に関連付けられている基準位置とPUの予測ブロックとの間の空間的変位を示す動きベクトルを生成することができる。PUの動き情報は、基準インデックスとPUの動きベクトルとを含み得る。動き補償ユニット124は、PUの動きベクトルによって示される基準位置における実際の、または補間されたサンプルに少なくとも部分的に基づいてPUの予測ブロックを生成することができる。
[0164]イントラ予測処理ユニット126は、PUにイントラ予測を実行することによってPUに対する予測データを生成することができる。PUに対する予測データは、PUに対する予測ブロックと様々なシンタックス要素とを含み得る。イントラ予測処理ユニット126は、Iスライスと、Pスライスと、BスライスとにおいてPUにイントラ予測を実行することができる。
[0165]PUにイントラ予測を実行するために、イントラ予測処理ユニット126は、複数のイントラ予測モードを使用して、PUに対する予測ブロックの複数のセットを生成することができる。特定のイントラ予測モードを使用してイントラ予測を実行する場合、イントラ予測処理ユニット126は、隣接ブロックからのサンプルの特定のセットを使用してPUに対する予測ブロックを生成することができる。隣接ブロックは、PUと、CUと、CTUとについて左から右、上から下の符号化順序を仮定して、PUの予測ブロックの上、右上、左上、または左であるものとしてよい。イントラ予測処理ユニット126は、様々な数のイントラ予測モード、たとえば、33個の方向性イントラ予測モードを使用することができる。いくつかの例では、イントラ予測モードの数は、PUの予測ブロックのサイズに依存し得る。
[0166]予測処理ユニット100は、PUに対するインター予測処理ユニット120によって生成される予測データまたはPUに対するイントラ予測処理ユニット126によって生成される予測データのうちからCUのPUに対する予測データを選択することができる。いくつかの例では、予測処理ユニット100は、予測データのセットのレート/歪み尺度に基づいてCUのPUに対する予測データを選択する。選択された予測データの予測ブロックは、本明細書では、選択予測ブロックと称され得る。
[0167]残差生成ユニット102は、CUのルーマコーディングブロックと、Cbコーディングブロックと、Crコーディングブロックと、CUのPUの選択された予測ルーマブロックと、予測Cbブロックと、予測Crブロックとに基づいて、CUのルーマ残差ブロックと、Cb残差ブロックと、Cr残差ブロックとを生成することができる。たとえば、残差生成ユニット102は、残差ブロック内の各サンプルがCUのコーディングブロック内のサンプルとCUのPUの対応する選択予測ブロック内の対応するサンプルとの間の差に等しい値を有するようにCUの残差ブロックを生成することができる。
[0168]変換処理ユニット104は、四分木分割法を実行して、CUの残差ブロックをCUのTUに関連付けられている変換ブロックに分割することができる。したがって、TUは、ルーマ変換ブロックと2つの対応するクロマ変換ブロックとに関連付けられ得る。CUのTUのルーマとクロマとの変換ブロックのサイズと位置とは、CUのPUの予測ブロックのサイズと位置とに基づくか、または基づかないものとしてもよい。
[0169]変換処理ユニット104は、1つまたは複数の変換をTUの変換ブロックに適用することによってCUの各TUに対する変換係数ブロックを生成することができる。変換処理ユニット104は、様々な変換をTUに関連付けられている変換ブロックに適用することができる。たとえば、変換処理ユニット104は、離散コサイン変換(DCT)、方向性変換、または概念上類似している変換を変換ブロックに適用することができる。いくつかの例では、変換処理ユニット104は、変換を変換ブロックに適用しない。そのような例では、変換ブロックは、変換係数ブロックとして取り扱われ得る。
[0170]量子化ユニット106は、係数ブロック内の変換係数を量子化することができる。量子化プロセスは、変換係数のうちの一部または全部に関連付けられているビット深度を低減することができる。たとえば、nビット変換係数は、切り捨てで量子化時にmビット変換係数に下げられ、ここで、nはmより大きい。量子化は、情報の損失を持ち込み得るため、量子化された変換係数は、元の変換係数よりも低い精度を有し得る。
[0171]逆量子化ユニット108と逆変換処理ユニット110とは、逆量子化と逆変換とをそれぞれ係数ブロックに適用して、係数ブロックから残差ブロックを再構成することができる。再構成ユニット112は、再構成された残差ブロックを予測処理ユニット100によって生成された1つまたは複数の予測ブロックからの対応するサンプルに加えて、TUに関連付けられている再構成された変換ブロックを生成することができる。この方法でCUの各TUに対して変換ブロックを再構成することによって、ビデオエンコーダ20は、CUのコーディングブロックを再構成することができる。
[0172]フィルタユニット114は、1つまたは複数のデブロッキングオペレーションを実行して、CUに関連付けられているコーディングブロック内のブロッキングアーチファクトを低減することができる。復号ピクチャバッファ116は、フィルタユニット114が再構成されたコーディングブロックに1つまたは複数のデブロッキングオペレーションを実行した後に、再構成されたコーディングブロックを格納することができる。インター予測処理ユニット120は、再構成されたコーディングブロックを含む基準ピクチャを使用して、他のピクチャのPUにインター予測を実行することができる。それに加えて、イントラ予測処理ユニット126は、復号ピクチャバッファ116内の再構成されたコーディングブロックを使用して、CUと同じピクチャ内の他のPUにイントラ予測を実行することができる。
[0173]エントロピー符号化ユニット118は、ビデオエンコーダ20の他の機能コンポーネントからデータを受信することができる。たとえば、エントロピー符号化ユニット118は、量子化ユニット106から係数ブロックを受信することができ、予測処理ユニット100からシンタックス要素を受信することができる。エントロピー符号化ユニット118は、データに1つまたは複数のエントロピー符号化オペレーションを実行して、エントロピー符号化されたデータを生成することができる。たとえば、エントロピー符号化ユニット118は、データに、コンテキスト適応型可変長コーディング(CAVLC)オペレーション、CABACオペレーション、変数−変数(V2V)レングスコーディングオペレーション、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)オペレーション、確率間隔区分エントロピー(PIPE)コーディングオペレーション、指数ゴロム符号化オペレーション、または別の種類のエントロピー符号化オペレーションを実行することができる。ビデオエンコーダ20は、エントロピー符号化ユニット118によって生成されたエントロピー符号化データを含むビットストリームを出力することができる。
[0174]本開示の1つまたは複数の技術によれば、親ブロックは、複数のブロックに分割され、視差ベクトル導出プロセスが、複数のブロック内の代表的ブロックに対する視差ベクトルを導出するために実行される。ビデオエンコーダ20は、一部は、導出された視差ベクトルに基づいて、代表的ブロック以外の複数のブロック内の任意のブロックに対する視差ベクトルを別々に導出することなく、複数のブロック内の2つまたはそれ以上のブロックに対するビュー間予測(たとえば、ビュー間動き予測および/またはビュー間残差予測)を実行することによって、ビデオデータのコーディングされた表現を含むビットストリームを生成することができる。さらに、本開示のいくつかの例示的な技術において、ビデオエンコーダ20は、視差ベクトル導出プロセスを実行して、現在のブロックに対する視差ベクトルを決定することができる。視差ベクトル導出プロセスを実行する一環として、第1または第2のいずれかの空間的隣接ブロックが視差動きベクトルまたは暗黙的視差ベクトルを有している場合に、ビデオエンコーダ20は、視差動きベクトルまたは暗黙的視差ベクトルを現在のブロックに対する視差ベクトルに変換することができる。視差ベクトル導出プロセスは、第1および第2のいずれの空間的隣接ブロックも視差動きベクトルまたは暗黙的視差ベクトルを有していない場合であっても第1および第2の空間的隣接ブロックに加えてどれかの空間的隣接ブロックが視差動きベクトルまたは暗黙的視差ベクトルを有しているかどうかを決定しない。
[0175]図7は、本開示の技術を実装するように構成されている例示的なビデオデコーダ30を示すブロック図である。図7は説明のために用意され、本開示において広範に例示され、説明されているような技術に対する制限ではない。説明のために、本開示では、HEVCコーディングを背景としてビデオデコーダ30について説明する。しかしながら、本開示の技術は、他のコーディング規格または方法に適用可能であるものとしてよい。
[0176]図7の例において、ビデオデコーダ30は、エントロピー復号ユニット150と、予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構成ユニット158と、フィルタユニット160と、復号ピクチャバッファ162とを含む。予測処理ユニット152は、動き補償ユニット164とイントラ予測処理ユニット166とを含む。他の例では、ビデオデコーダ30は、より多い、より少ない、または異なる機能コンポーネントを含んでもよい。
[0177]コーディングピクチャバッファ(CPB)151は、ビットストリームの符号化されたビデオデータ(たとえば、NALユニット)を受信し、格納することができる。エントロピー復号ユニット150は、CPB151からNALユニットを受信し、NALユニットを解析して、ビットストリームからシンタックス要素を取得することができる。エントロピー復号ユニット150は、NALユニット内のエントロピー符号化されたシンタックス要素をエントロピー復号することができる。予測処理ユニット152と、逆量子化ユニット154と、逆変換処理ユニット156と、再構成ユニット158と、フィルタユニット160とは、ビットストリームから抽出されたシンタックス要素に基づいて復号されたビデオデータを生成することができる。
[0178]ビットストリームのNALユニットは、コーディングされたスライスNALユニットを含み得る。ビットストリームを復号する一環として、エントロピー復号ユニット150は、コーディングされたスライスNALユニットからシンタックス要素を抽出して、エントロピー復号することができる。コーディングされたスライスの各々は、スライスヘッダとスライスデータとを含み得る。スライスヘッダは、スライスに関係するシンタックス要素を含むものとしてよい。
[0179]ビットストリームからシンタックス要素を復号することに加えて、ビデオデコーダ30は、CUに復号オペレーションを実行することができる。CUに復号オペレーションを実行することによって、ビデオデコーダ30は、CUのコーディングブロックを再構成することができる。
[0180]CUに復号オペレーションを実行する一環として、逆量子化ユニット154は、CUのTUに関連付けられている係数ブロックを逆量子化する、すなわち、デクオンタイズ(de-quantize)することができる。量子化ユニット154は、TUのCUに関連付けられているQP値を使用して、量子化の程度と、同じように、逆量子化ユニット154が適用する逆量子化の程度とを決定することができる。すなわち、圧縮比、すなわち、元のシーケンスを表すために使用されるビットの数と圧縮されたシーケンスのビットの数との比は、変換係数を量子化するときに使用されるQPの値を調整することによって制御され得る。圧縮比は、採用されるエントロピーコーディングの方法にも依存し得る。
[0181]逆量子化ユニット154が係数ブロックを逆量子化した後、逆変換処理ユニット156は、1つまたは複数の逆変換を係数ブロックに適用して、TUに関連付けられている残差ブロックを生成することができる。たとえば、逆変換処理ユニット156は、逆DCT、逆整数変換、逆カルーネン・レーベ変換(KLT)、逆回転変換、逆方向性変換、または別の逆変換を係数ブロックに適用することができる。
[0182]PUがイントラ予測を使用して符号化される場合、イントラ予測処理ユニット166は、イントラ予測を実行して、PUに対する予測ブロックを生成することができる。イントラ予測処理ユニット166は、イントラ予測モードを使用して、空間的隣接PUの予測ブロックに基づいてPUに対する予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成することができる。イントラ予測処理ユニット166は、ビットストリームから復号された1つまたは複数のシンタックス要素に基づいてPUに対するイントラ予測モードを決定することができる。
[0183]予測処理ユニット152は、ビットストリームから抽出されたシンタックス要素に基づいて第1の基準ピクチャリスト(RefPicList0)と第2の基準ピクチャリスト(RefPicList1)とを構成することができる。さらに、PUが、インター予測を使用して符号化される場合、エントロピー復号ユニット150は、PUに対する動き情報を取得することができる。動き補償ユニット164は、PUの動き情報に基づいて、PUに対する1つまたは複数の基準領域を決定することができる。動き補償ユニット164は、PUに対する1つまたは複数の基準ブロックにおけるサンプルに基づいて、PUに対する予測ルーマブロックと、予測Cbブロックと、予測Crブロックとを生成することができる。
[0184]再構成ユニット158は、適用可能な場合に、CUのTUに関連付けられているルーマ変換ブロックと、Cb変換ブロックと、Cr変換ブロックと、CUのPUの予測ルーマブロックと、予測Cbブロックと、予測Crブロックとからの残差値、すなわち、イントラ予測データまたはインター予測データのいずれかを使用して、CUのルーマコーディングブロックと、Cbコーディングブロックと、Crコーディングブロックとを再構成することができる。たとえば、再構成ユニット158は、ルーマ変換ブロックと、Cb変換ブロックと、Cr変換ブロックとのサンプルを予測ルーマブロックと、予測Cbブロックと、予測Crブロックとの対応するサンプルに加えて、CUのルーマコーディングブロックと、Cbコーディングブロックと、Crコーディングブロックとを再構成することができる。
[0185]フィルタユニット160は、デブロッキングオペレーションを実行して、CUのルーマコーディングブロックと、Cbコーディングブロックと、Crコーディングブロックとに関連付けられているブロッキングアーチファクトを低減することができる。ビデオデコーダ30は、CUのルーマコーディングブロックと、Cbコーディングブロックと、Crコーディングブロックとを復号ピクチャバッファ162に格納することができる。復号ピクチャバッファ162は、その後の動き補償、イントラ予測、および図1の表示デバイス32などの表示デバイスへの表示のために基準ピクチャを提供することができる。たとえば、ビデオデコーダ30は、復号ピクチャバッファ162内のルーマブロックと、Cbブロックと、Crブロックとに基づいて、他のCUのPUにイントラ予測オペレーションまたはインター予測オペレーションを実行するものとしてよい。この方法で、ビデオデコーダ30は、ビットストリームから、有意なルーマ係数ブロックの変換係数レベルを抽出し、変換係数レベルを逆量子化し、変換を変換係数レベルに適用して変換ロックを生成し、変換ブロックに少なくとも部分的に基づいて、コーディングブロックを生成し、表示用のコーディングブロックを出力することができる。
[0186]本開示の1つまたは複数の技術によれば、親ブロック(たとえば、CTU、CUなど)は、複数のブロックに分割されるものとしてよく、視差ベクトル導出プロセスが、複数のブロック内の代表的ブロックに対する視差ベクトルを導出するために実行される。ビデオデコーダ30は、一部は、導出された視差ベクトルに基づいて、代表的ブロック以外の複数のブロック内の任意のブロックに対する視差ベクトルを別々に導出することなく、複数のブロック内の2つまたはそれ以上のブロックに対するビュー間予測を実行することによって、複数のブロック内の2つまたはそれ以上のブロックに対するサンプルブロックを再構成することができる。さらに、いくつかの例では、ビデオデコーダ30は、視差ベクトル導出プロセスを実行して、現在のブロックに対する視差ベクトルを決定することができる。視差ベクトル導出プロセスを実行する一環として、第1または第2のいずれかの空間的隣接ブロックが視差動きベクトルまたはIDVを有している場合に、ビデオデコーダ30は、視差動きベクトルまたはIDVを現在のブロックに対する視差ベクトルに変換することができる。視差ベクトル導出プロセスは、第1および第2のいずれの空間的隣接ブロックも視差動きベクトルまたはIDVを有していない場合であっても第1および第2の空間的隣接ブロックに加えてどれかの空間的隣接ブロックが視差動きベクトルまたはIDVを有しているかどうかを決定しない。
[0187]上で説明されているように、ビデオコーダは、CUベースのNBDV導出プロセスを実行して、CUの各PUに対する視差ベクトルを導出することができる。ビデオコーダが、CUベースのNBDV導出プロセスを実行して、CUの各PUに対する視差ベクトルを導出する場合、ビデオコーダは、CUに対してNBDV導出プロセスを1回だけ実行し、導出された視差ベクトルをCUのすべてのPUに割り当てる。言い換えれば、CUベースのNBDV導出プロセスは、すべてのPUとCU自体とが、たとえば、3D−HEVCで導出されるように、NBDV導出プロセスに基づいて1回導出された同じ視差ベクトルを共有するように実行され得る。NBDV導出プロセスは、代表的ブロック(たとえば、PUまたはCU)に適用可能である。たとえば、CUは、複数のPUに分割されるものとしてよく、ビデオコーダは、視差ベクトル導出プロセスを実行して、複数のPU(たとえば、CU内の)内の代表的PUに対する視差ベクトルを導出することができる。
[0188]さらに、CUベースのNBDV導出プロセスは、直接的な拡張としてLCUベースのNBDV導出プロセスに、または任意のブロックサイズ用のNBDV導出プロセスに拡張され得る。たとえば、LCUは、複数のCUに分割されるものとしてよく、ビデオコーダは、視差ベクトル導出プロセスを実行して、複数のCU内の代表的CUに対する視差ベクトルを導出することができる。
[0189]上で説明されているように、ビデオコーダは、NBDV導出プロセスを実行するときに5つの空間的隣接ブロックをチェックし得る。5つの空間的隣接ブロックは、常にCU全体に対して代表的PUを1つだけ考慮することによってNBDVのように配置され得る。
[0190]本開示では、複数のPUの代表的PUは、NBDV処理ユニット(NPU)と称され得る。他の例では、ビデオコーダは、NPUを様々な方法で設定することができる。たとえば、NPUは、現在のCUであってもよい。別の例では、NPUは、現在のCU内の第1のPUであってもよい。この例では、第1のPUは、CUの左上のピクセルをカバーするPUであると定義されている。
[0191]別の例において、ビデオコーダは、代表的ブロックとして、CUの右下のピクセルをカバーするPUを代表的PUであるとして選択することができる。言い換えれば、ビデオコーダは、CUの右下のピクセルをカバーするPUをNPUとして選択することができる。別の例では、ビデオコーダは、代表的ブロックとして、CUの右上のピクセルをカバーするPUを代表的PUであるとして選択することができる。言い換えれば、ビデオコーダは、代表的ブロックとして、CUの右上のピクセルをカバーするPUをNPUとして選択することができる。さらに別の例では、ビデオコーダは、CUの左下のピクセルをカバーするPUを代表的PUであるとして選択することができる。言い換えれば、ビデオコーダは、CUの左下のピクセルをカバーするPUをNPUとして選択することができる。本開示では、説明を簡単にするため、CUの右下のピクセル、右上のピクセル、または左下のピクセルは、それぞれ、CUのコーディングブロックの右下のピクセル、右上のピクセル、または左下のピクセルであるものとしてよい。
[0192]図8は、CUと同一である2N×2NのPUにおける例示的な空間的隣接要素と時間的隣接要素とを示す概念図である。図8の例において、ビデオコーダは、ビデオコーダが視差動きベクトルとIDVとについて位置200と、202と、204と、206と、208とをカバーするブロックをチェックするNBDV導出プロセスを実行することができる。さらに、図8の例において、ビデオコーダがNBDV導出プロセスを実行する場合、ビデオコーダは、候補基準ピクチャ内にあり、位置210および212と同一の位置にあるブロックをチェックすることができる。
[0193]図9は、CUの第1のPUがCUに対する代表的PUであるNBDV導出プロセスで使用される例示的な空間的隣接ブロックと時間的隣接ブロックとを示す概念図である。図9の例では、代表的ブロックは、CUの左のN×2NのPUである。言い換えれば、図9は、PUがN×2Nの形状を有する一例である。現在のCUのパーティション情報が与えられた場合(たとえば、NX2N)、ブロック位置は、第1のPU(たとえば、左のPU)のものにより決定され得る。図9は、ブロック位置(すなわち、隣接ブロックによってカバーされる位置)が第1のPUの形状に基づいて決定され得る仕方の一例である。
[0194]特に、図9の例において、ビデオコーダは、ビデオコーダが視差動きベクトルとIDVとについて位置250と、252と、254と、256と、258とをカバーするブロックをチェックするNBDV導出プロセスを実行することができる。さらに、図9の例において、ビデオコーダがNBDV導出プロセスを実行する場合、ビデオコーダは、候補基準ピクチャ内にあり、位置260および262と同一の位置にあるブロックをチェックすることができる。図8および9の例でわかるように、NBDV導出プロセスで使用される隣接ブロックによってカバーされる位置は、CUがPUに分割される仕方とPUのうちのどれが代表的ブロックであるかとに応じてCUのPUに対して異なり得る。したがって、ビデオコーダは、第1のPUの形状に基づいて複数のブロック位置を決定することができ、ここにおいて、複数のブロック位置における各それぞれのブロック位置は、複数の隣接ブロック内のそれぞれの隣接ブロックによってカバーされる。さらに、ビデオコーダは、空間的視差動きベクトル、暗黙的視差ベクトル、または時間的視差動きベクトルについて隣接ブロックのうちの1つまたは複数をチェックすることができる。
[0195]図10は、本開示の1つまたは複数の技術による、ビデオコーダの例示的なオペレーションを示す流れ図である。図10の例に示されているように、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、視差ベクトル導出プロセスを実行して、複数のブロック内の代表的ブロックに対する視差ベクトルを導出することができる(300)。図10の例において、ビデオデータは、複数のブロックに分割される親ブロックを含み得る。たとえば、親ブロックは、CUであってもよく、複数のブロック内の各ブロックは、CUのPUであってもよい。この例では、代表的ブロックは、CUの第1のPUであるものとしてよい。別の例では、親ブロックは、LCUであってよく、複数のブロック内の各ブロックは、CUであってよく、代表的ブロックは、LCUのCUのうちの1つであってよい。
[0196]さらに、ビデオコーダは、導出された視差ベクトルに基づいて、代表的ブロック以外の複数のブロック内の任意のブロックに対する視差ベクトルを別々に導出することなく、複数のブロック内の2つまたはそれ以上のブロックに対するビュー間予測を実行することができる(302)。ビデオコーダが、ビデオデコーダであるいくつかの例では、ビデオデコーダは、一部は、導出された視差ベクトルに基づいて、代表的ブロック以外の複数のブロック内の任意のブロックに対する視差ベクトルを別々に導出することなく、複数のブロック内の2つまたはそれ以上のブロックに対するビュー間予測を実行することによって、複数のブロック内の2つまたはそれ以上のブロックに対するサンプルブロックを再構成することができる。同様に、ビデオコーダが、ビデオエンコーダであるいくつかの例では、ビデオエンコーダは、一部は、導出された視差ベクトルに基づいて、代表的ブロック以外の複数のブロック内の任意のブロックに対する視差ベクトルを別々に導出することなく、複数のブロック内の2つまたはそれ以上のブロックに対するビュー間予測を実行することによって、ビデオデータのコーディングされた表現を含むビットストリームを生成することができる。ビデオコーダが、2つまたはそれ以上のブロックに対してビュー間予測を実行する場合、ビデオコーダは、導出された視差ベクトルに基づいて、2つまたはそれ以上のブロックについてビュー間動き予測およびビュー間残差予測のうちの1つまたは複数を実行することができる。
[0197]図11Aは、本開示の1つまたは複数の技術による、ビュー間動き予測を実行するためのビデオエンコーダの例示的なオペレーション350を示す流れ図である。図11Aの例に示されているように、ビデオエンコーダ(たとえば、ビデオエンコーダ20)は、現在のCUの分割モードを決定することができる(352)。本開示の1つまたは複数の技術によれば、ビデオエンコーダは、視差ベクトル導出プロセスを実行して、現在のCUの代表的PUに対する視差ベクトルを決定することができる(354)。代表的ブロックがCUであるいくつかの例では、ビデオエンコーダは、少なくとも一部は複数の隣接ブロックを決定することによって視差ベクトル導出プロセスを実行することができ、ここにおいて、複数の隣接ブロックは、CUに隣接する空間的隣接ブロックと、CUの中心と同一の位置にある位置をカバーする時間的隣接ブロックと、CUの右真下の位置をカバーする時間的隣接ブロックとを含む。さらに、そのような例では、ビデオエンコーダは、空間的視差動きベクトル、暗黙的視差ベクトル、または時間的視差動きベクトルについて隣接ブロックのうちの1つまたは複数をチェックすることができる。
[0198]次に、ビデオエンコーダは、代表的PUに対する視差ベクトルに基づいて、現在のPUに対するビュー間予測動きベクトル候補(IPMVC)を決定することができる。IPMVCは、現在のピクチャと異なるビューに関連付けられている基準ピクチャ内の位置を示す動きベクトル候補である。現在のPUは、現在のCUのPUのうちの1つである。次いで、ビデオエンコーダは、現在のPUに対する候補リスト(たとえば、マージ候補リストまたはAMVP候補リスト)内にIPMVCを含み得る(358)。その後、ビデオエンコーダは、候補リストから候補を選択することができる(360)。いくつかの場合において、選択された候補は、IPMVCである。次いで、ビデオエンコーダは、ビットストリーム内に、選択された候補のインデックスを示すデータを含み得る(362)。たとえば、候補リストがマージ候補リストである場合、ビデオエンコーダは、ビットストリーム内に、merge_idxシンタックス要素を示すデータを含み得る。別の例では、候補リストは、AMVP候補リストであり、ビデオエンコーダは、ビットストリーム内に、mvp_l0_flagシンタックス要素またはmvp_l1_flagシンタックス要素を示すデータを含み得る。この例では、ビデオエンコーダは、現在のPUに対する基準インデックスを示すデータ(たとえば、ref_idxl0シンタックス要素またはref_idxl1シンタックス要素)と、現在のPUに対する動きベクトル差を示すデータ(たとえば、mvd_codingシンタックス構造)も含み得る。
[0199]次いで、ビデオエンコーダは、現在のCU内にPUが残っているかどうかを決定することができる(364)。現在のCU内に1つまたは複数のPUが残っている場合(364の「はい」)、ビデオエンコーダは、残りのPUのうちの1つを現在のPUとしてアクション356〜364を繰り返すことができる。他方、現在のCU内に残っているPUがない場合(364の「いいえ」)、オペレーション350は終了し、ビデオエンコーダは、他の符号化アクションを実行することができる。
[0200]図11Bは、本開示の1つまたは複数の技術による、ビュー間動き予測を実行するためのビデオデコーダの例示的なオペレーション380を示す流れ図である。図11Bの例に示されているように、ビデオデコーダ(たとえば、ビデオデコーダ30)は、現在のCUの分割モードを決定することができる(382)。いくつかの例では、ビデオデコーダは、現在のCUのpart_modeシンタックス要素に基づいて現在のCUの分割モードを決定することができる。
[0201]本開示の1つまたは複数の技術によれば、ビデオデコーダは、視差ベクトル導出プロセスを実行して、現在のCUの代表的PUに対する視差ベクトルを決定することができる(384)。たとえば、ビデオデコーダは、視差ベクトル導出プロセスを実行して、現在のCUの第1のPUに対する視差ベクトルを決定することができる。代表的ブロックがCUであるいくつかの例では、ビデオデコーダは、少なくとも一部は複数の隣接ブロックを決定することによって視差ベクトル導出プロセスを実行することができ、ここにおいて、複数の隣接ブロックは、CUに隣接する空間的隣接ブロックと、CUの中心と同一の位置にある位置をカバーする時間的隣接ブロックと、CUの右真下の位置をカバーする時間的隣接ブロックとを含む。さらに、そのような例では、ビデオデコーダは、空間的視差動きベクトル、IDV、または時間的視差動きベクトルについて隣接ブロックのうちの1つまたは複数をチェックすることができる。
[0202]次に、ビデオデコーダは、代表的PUに対する視差ベクトルに基づいて、現在のPUに対するIPMVCを決定することができる(386)。現在のPUは、現在のCUのPUのうちの1つである。次いで、ビデオデコーダは、現在のPUに対する候補リスト(たとえば、マージ候補リストまたはAMVP候補リスト)内にIPMVCを含み得る(388)。その後、ビデオデコーダは、ビットストリーム内のデータに基づいて、候補リスト内の選択された候補を決定することができる(390)。たとえば、候補リストがマージ候補リストである場合、ビデオデコーダは、ビットストリームから取得されたmerge_idxシンタックス要素に基づいて選択された候補を決定することができる。別の例では、候補リストがAMVP候補リストである場合、ビデオデコーダは、ビットストリームから取得されたmvp_l0_flagシンタックス要素またはmvp_l1_flagシンタックス要素に基づいて選択された候補を決定することができる。いくつかの場合において、選択された候補は、IPMVCである。次いで、ビデオデコーダは、選択された候補に基づいて、現在のPUに対する動きベクトルを決定することができる(392)。
[0203]次いで、ビデオデコーダは、現在のCU内にPUが残っているかどうかを決定することができる(394)。現在のCU内に1つまたは複数のPUが残っている場合(394の「はい」)、ビデオデコーダは、残りのPUのうちの1つを現在のPUとしてアクション386〜394を繰り返すことができる。他方、現在のCU内に残っているPUがない場合(394の「いいえ」)、オペレーション380は終了し、ビデオデコーダは、他の復号アクションを実行することができる。
[0204]図12Aは、本開示の1つまたは複数の技術による、ビュー間残差予測を実行するためのビデオエンコーダの例示的なオペレーション400を示す流れ図である。図12Aの例に示されているように、ビデオエンコーダ(たとえば、ビデオエンコーダ20)は、親ブロックの代表的ブロックについて視差ベクトルを決定することができる(402)。いくつかの例では、親ブロックは、親ブロックに対する代表的ブロックを含む、複数のブロックに分割される。たとえば、代表的ブロックはCUであってよく、親ブロックはCTUであってよい。他の場合において、代表的ブロックはPUであってよく、親ブロックはCUであってよい。他の例では、親ブロックは、サブブロックに分割されず、親ブロックに対する代表的ブロックは、親ブロック自体である。たとえば、代表的ブロックと親ブロックとは、同じPU、CU、CTUなどであってよい。
[0205]さらに、図12Aの例において、ビデオエンコーダは、代表的ブロックに対する視差ベクトルに基づいて、現在のブロックに対する視差基準ブロックを決定することができる(404)。上で示されているように、親ブロックは、1つまたは複数のサブブロックに分割され得る。現在のブロックは、サブブロックのうちの1つであってよい。さらに、現在のブロックに対する視差基準ブロックは、視差基準ピクチャ内のサンプルに基づくサンプルのブロックを備えることができる。たとえば、視差基準ブロックは、視差基準ピクチャのサンプルを含み得る。視差基準ピクチャは、現在のブロックと同じ時間インスタンスに関連付けられているが、現在のブロックと異なるビューに関連付けられる。
[0206]ビデオエンコーダは、視差基準ブロックに対する残差データを決定することができる(406)。視差基準ブロックに対する残差データは、視差基準ブロックのサンプルと視差基準ブロックに対する1つまたは複数の予測ブロックの対応するサンプルとの間の差を示すサンプルを含み得る。次いで、ビデオエンコーダは、現在のブロックに対する残差データを決定することができる(408)。現在のブロックに対する残差データは、現在のブロックに対する元のサンプルブロック内の対応するサンプル間の差を示すサンプルと、現在のブロックに対する視差基準ブロックに対する残差データと、1つまたは複数の予測ブロックとを含み得る。その後、ビデオエンコーダは、親ブロック内にサブブロックが残っているかどうかを決定することができる(410)。親ブロック内に1つまたは複数のサブブロックが残っている場合(410の「はい」)、ビデオエンコーダは、残りのサブブロックのうちの1つを現在のブロックとしてアクション404〜410を繰り返すことができる。この方法で、ビデオエンコーダは、代表的ブロックに対する視差ベクトルを使用して、親ブロックのサブブロックの各々について視差基準ブロックを決定することができる。
[0207]他方、親ブロック内に残っているサブブロックがない場合(410の「いいえ」)、ビデオエンコーダは、ビットストリーム内に、親ブロックに対する残差を表すデータを含み得る(412)。たとえば、親ブロックがCTUであり、サブブロックの各々がCUである場合、親ブロックに対する残差データを表すデータは、CTUのCUの各々の残差データの変換され量子化されたバージョンを示すデータを備え得る。別の例では、親ブロックがCUであり、サブブロックの各々がPUである場合、CUに対する残差データを表すデータは、CUのPUの各々の残差データの変換され量子化されたバージョンを示すデータを含み得る。
[0208]図12Bは、本開示の1つまたは複数の技術による、ビュー間残差予測を実行するためのビデオデコーダの例示的なオペレーション450を示す流れ図である。図12Bの例に示されているように、ビデオデコーダ(たとえば、ビデオデコーダ30)は、親ブロックの代表的ブロックについて視差ベクトルを決定することができる(452)。いくつかの例では、親ブロックは、親ブロックに対する代表的ブロックを含む、複数のブロックに分割される。たとえば、代表的ブロックはCUであってよく、親ブロックはCTUであってよい。他の場合において、代表的ブロックはPUであってよく、親ブロックはCUであってよい。他の例では、親ブロックは、サブブロックに分割されず、親ブロックに対する代表的ブロックは、親ブロック自体である。たとえば、代表的ブロックと親ブロックとは、同じPU、CU、CTUなどであってよい。
[0209]さらに、図12Bの例において、ビデオデコーダは、代表的ブロックに対する視差ベクトルに基づいて、現在のブロックに対する視差基準ブロックを決定することができる(454)。上で示されているように、親ブロックは、1つまたは複数のサブブロックに分割され得る。現在のブロックは、サブブロックのうちの1つであってよい。さらに、現在のブロックに対する視差基準ブロックは、視差基準ピクチャ内のサンプルに基づくサンプルのブロックを備えることができる。たとえば、視差基準ブロックは、視差基準ピクチャのサンプルを含み得る。視差基準ピクチャは、現在のブロックと同じ時間インスタンスに関連付けられているが、現在のブロックと異なるビューに関連付けられる。
[0210]ビデオデコーダは、視差基準ブロックに対する残差データを決定することができる(456)。視差基準ブロックに対する残差データは、視差基準ブロックのサンプルと視差基準ブロックに対する1つまたは複数の予測ブロックの対応するサンプルとの間の差を示すサンプルを含み得る。その後、ビデオデコーダは、親ブロック内にサブブロックが残っているかどうかを決定することができる(458)。親ブロック内に1つまたは複数のサブブロックが残っている場合(458の「はい」)、ビデオデコーダは、残りのサブブロックのうちの1つを現在のブロックとしてアクション454〜458を繰り返すことができる。この方法で、ビデオデコーダは、代表的ブロックに対する視差ベクトルを使用して、親ブロックのサブブロックの各々について視差基準ブロックを決定することができる。
[0211]他方、親ブロック内に残っているサブブロックがない場合(458の「いいえ」)、ビデオデコーダは、親ブロックに対するサンプルブロック(たとえば、コーディングツリーブロック、コーディングブロックなど)を決定することができる(460)。親ブロックに対するサンプルブロックは、親ブロックの1つまたは複数のサブブロックと、1つまたは複数の予測ブロックと、ビットストリームでシグナリングされる残差データとに対する視差基準ブロックに対する残差データ内の対応するサンプルの総和であるサンプルを含み得る。
[0212]上で説明されているように、ビデオコーダは、本開示の技術により、3D−HEVC試験モデル1で説明されているNBDV導出プロセスよりも少ない空間的隣接ブロックを使用する修正されたNBDV導出プロセスを実行することができる。一例において、ビデオコーダが、修正されたNBDV導出プロセスを実行する場合、ビデオコーダは、左の空間的隣接ブロックと上の空間的隣接ブロックとを考慮するだけでよい(すなわち、図2のA1およびB1として表されているブロック)。図13は、2つのPUに対する例示的な左の空間的隣接ブロックと上の空間的隣接ブロックとを示す概念図である。特に、図13は、N×2NのPUと2N×NのPUとに対する左と上との空間的隣接ブロックを示している。図13の例に示されているように、左の空間的隣接ブロックは、現在のブロックの左縁に隣接し(たとえば、N×2NのPUまたは2N×NのPU)、上の空間的隣接ブロックは、現在のブロックの上縁に隣接する(たとえば、N×2NのPUまたは2N×NのPU)。
[0213]しかしながら、左と上との4×4の空間的隣接ブロックを常に考慮する代わりに、チェックすべきブロックの数が少なくなるようにいくつかの代替的形態も用意され得る。たとえば、一解決方法では、ビデオコーダは、3つの空間的隣接ブロックをチェックする。たとえば、図14に示されているように、ビデオコーダは、上と、左と、左上との空間的隣接ブロックのみをチェックする。すなわち、図14は、NBDV導出プロセスで使用される左、上、および左上の空間的隣接ブロックを示す概念図である。この例では、ビデオコーダは、上と、左と、左上との空間的隣接ブロックをその順序でチェックし得る。他の例では、ビデオコーダは、上と、左と、左上との空間的隣接ブロックを他の任意の順序でチェックし得る。
[0214]他の例では、ビデオコーダは、NBDV導出プロセスにおいて空間的隣接ブロックのどれかをチェックすることができる。言い換えれば、他の空間的隣接ブロックは、図2に示されている5つの空間的隣接ブロックA0と、A1と、B0と、B1と、B2との間で間引かれ得る。いくつかの例では、間引きの後にチェックされるべきブロックの総数は、ゼロ超、5未満であるものとしてよい。さらに、いくつかの例では、ビデオコーダは、視差動きベクトルについて5つの空間的隣接ブロックのサブセットをチェックすることができるが、IDVについては5つの空間的隣接ブロックすべてをチェックすることができる。言い換えれば、この例において、この縮小は、IDVが探索されるブロックについて適用される場合も適用されない場合もある。さらに、いくつかの例では、空間的隣接ブロックのチェック順序は、順序変更可能である。
[0215]空間的隣接ブロックの縮小は、本開示の別のところで説明されているCUベースNBDV導出プロセスと組み合わされ得る。たとえば、図13の例において、NPUは、左上のピクセルをカバーするPUであり、NPUの空間的隣接ブロックは、NPUの上の空間的隣接ブロックと左の空間的隣接ブロックのみである。別の例では、NPUは、CUであり、空間的隣接ブロックは、図14に示されているように、CUの上の空間的隣接ブロックと、左の空間的隣接ブロックと、左上の空間的隣接ブロックとである。
[0216]図15は、本開示の1つまたは複数の技術による、ビデオコーダの例示的なオペレーション600を示す流れ図である。図15の例において、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、視差ベクトル導出プロセスを実行して、現在のブロックに対する視差ベクトルを決定することができる(602)。本開示の1つまたは複数の技術によれば、視差ベクトル導出プロセスを実行する一環として、ビデオコーダは、第1または第2のいずれかの空間的隣接ブロックが視差動きベクトルまたはIDVを有している場合に、視差動きベクトルまたはIDVを現在のブロックに対する視差ベクトルに変換することができる。図15の例において、視差ベクトル導出プロセスは、第1および第2のいずれの空間的隣接ブロックも視差動きベクトルまたはIDVを有していない場合であっても第1および第2の空間的隣接ブロックに加えてどれかの空間的隣接ブロックが視差動きベクトルまたはIDVを有しているかどうかを決定しない。いくつかの例では、第1の空間的隣接ブロックは、現在のブロックの上縁に隣接し、第2の空間的隣接ブロックは、現在のブロックの左縁に隣接する。いくつかの例では、ビデオコーダは、最初に、視差動きベクトル(またはIDV)について第1の空間的隣接ブロックをチェックし、次いで、視差動きベクトル(またはIDV)について第2の空間的隣接ブロックをチェックし得る。他の例では、ビデオコーダは、最初に、視差動きベクトル(またはIDV)について第2の空間的隣接ブロックをチェックし、次いで、視差動きベクトル(またはIDV)について第1の空間的隣接ブロックをチェックし得る。
[0217]さらに、図15の例において、ビデオコーダは、導出された視差ベクトルに基づいて、代表的ブロック以外の複数のブロック内の任意のブロックに対する視差ベクトルを別々に導出することなく、複数のブロック内の2つまたはそれ以上のブロックに対するビュー間予測を実行する(604)。ビデオコーダが、ビデオデコーダを備えるいくつかの例では、ビデオデコーダは、一部は、導出された視差ベクトルに基づいて、現在のブロックに対するビュー間予測を実行することによって、現在のブロックに対するサンプルブロックを再構成する。ビデオコーダが、ビデオエンコーダを備えるいくつかの例では、ビデオエンコーダは、現在のブロックに対する導出された視差ベクトルに部分的に基づいて、現在のブロックの符号化された表現を生成する。
[0218]図16は、本開示の一例による、現在のブロックに対する視差ベクトルを決定するためのビデオコーダの例示的なオペレーション620を示す流れ図である。図16の例において、ビデオコーダは、現在のブロックに対する視差ベクトルを決定するときに最大2つまでの空間的隣接ブロックを使用する。具体的には、図16の例において、ビデオコーダは、第1の空間的隣接ブロックが視差動きベクトルを有するかどうかを決定することができる(622)。いくつかの例では、第1の空間的隣接ブロックは、現在のブロックの左縁に隣接する。他の例では、第1の空間的隣接ブロックは、現在のブロックの上縁に隣接する。第1の空間的隣接ブロックが視差動きベクトルを有すると決定したことに応答して(622の「はい」)、ビデオコーダは、第1の空間的隣接ブロックの視差動きベクトルを現在のブロックに対する視差ベクトルに変換し得る(624)。
[0219]他方、第1の空間的隣接ブロックが視差動きベクトルを有しないと決定したことに応答して(622の「いいえ」)、ビデオコーダは、第2の空間的隣接ブロックが視差動きベクトルを有するかどうかを決定することができる(626)。いくつかの例では、第2の空間的隣接ブロックは、現在のブロックの左縁に隣接する。他の例では、第2の空間的隣接ブロックは、現在のブロックの上縁に隣接する。第2の空間的隣接ブロックが視差動きベクトルを有すると決定したことに応答して(626の「はい」)、ビデオコーダは、第2の空間的隣接ブロックの視差動きベクトルを現在のブロックに対する視差ベクトルに変換し得る(628)。そうでない場合、第2の空間的隣接ブロックが視差動きベクトルを有しないと決定したことに応答して(626の「いいえ」)、ビデオコーダは、現在のブロックに対する視差ベクトルが利用不可能であることを示し得る(630)。
[0220]上で説明されているように、双予測インター予測では、最大2つまでの基準ピクチャリスト(すなわち、RefPicList0とRefPicList1)があり得る。さらに、双予測ブロック(たとえば、PU)は、2つの動きベクトルを含む。ブロックの両方の動きベクトル(すなわち、RefPicList0とRefPicList1とにそれぞれ対応する動きベクトル)が視差動きベクトルである場合、RefPicList1に対応する動きベクトルは冗長であり得る。
[0221]3D−HEVC試験モデル1では、ビデオコーダは、隣接ブロックがRefPicList0内の基準ピクチャを使用するかどうかを決定する。たとえば、ビデオコーダは、PredFlagL0[xN][yN]が1に等しいかどうかをチェックすることができ、ここで、(xN,yN)は、隣接ブロックによってカバーされる位置であり、PredFlagL0は、特定の座標をカバーするブロックがRefPicList0内の基準ピクチャを利用するかどうかを示す値の配列である。
[0222]さらに、3D−HEVC試験モデル1で説明されているように、隣接ブロックがRefPicList0内の基準ピクチャを使用する場合、ビデオコーダは、隣接ブロックに対するRefPicList0基準インデックスがRefPicList0内のビュー間基準ピクチャを示しているかどうか、もしそうならば、ビュー間基準ピクチャは、特定の基準ビューインデックスに等しいビュー順序インデックスを有するかどうかを決定することができる。たとえば、ビデオコーダは、RefPicList0[RefIdxL0[xN][yN]]が、ViewOrderIndexがrefViewIdxに等しいビュー間基準ピクチャであるかどうかを決定することができ、ここで、RefIdxLx0[xN][yN]は、隣接ブロックに対するRefPicList0基準インデックスであり、refViewIdxは、特定のビューインデックスである。もしそうならば、ビデオコーダは、視差ベクトルを隣接ブロックに対するRefPicList0動きベクトルに等しいものとなるように設定することができる。そうでなければ、隣接ブロックの予測モードがスキップモードであり、隣接ブロックが、隣接ブロックがビュー間動きベクトル(たとえば、隣接ブロックがIDVを有しているときに生じ得る)を有することを示すビュー間予測動きベクトルフラグを有する場合に、ビデオコーダは、変数(たとえば、ivpMVDispN0)を隣接ブロックの視差ベクトル(たとえば、IvpMvDispL0[xN,yN])に設定することができる。次いで、ビデオコーダは、RefPicList1に対してこのプロセスを繰り返すことができる。ビュー順序インデックスは、アクセスユニット内のビューコンポーネントの復号順序を示す値(すなわち、インデックス)であるものとしてよい。
[0223]したがって、JCT3V−A1005のセクションG.8.5.2.1.13で説明されているように、
0から1の各Xについて、availableNが1に等しく、PredFlagLX[xN][yN]が1に等しい場合に、以下が適用される。
a.RefPicListX[RefIdxLX[xN][yN]]が、ViewOrderIndexがrefViewIdxに等しいビュー間基準ピクチャである場合に、以下が適用される。
mvDisp=mvLXN[xN][yN]
availableDV=1
b.そうでなければ、PredMode[xN][yN]がMODE_SKIPに等しく、IvpMvFlagLX[xN,yN]が1に等しい場合に、以下が適用される。
ivpMvDispNX=IvpMvDispLX[xN,yN]
availableFlagIvpMvNX=1
[0224]本開示のいくつかの技術によれば、ビデオコーダは、3D−HEVC試験モデル1で説明されているようにビデオコーダがRefPicList0とRefPicList1の両方をチェックするとは限らない刈り込みプロセスを実行することができる。むしろ、ビデオコーダは、基準ピクチャリストのうちの1つのみをチェックすることができる。たとえば、ビデオコーダは、RefPicList0のみをチェックすることができる。他の例では、ビデオコーダは、RefPicList1のみをチェックすることができる。したがって、この刈り込みプロセスでは、空間的隣接ブロックまたは時間的隣接ブロックについて、RefPicList0とRefPicList1の両方に対応する動きベクトルをチェックする代わりに視差動きベクトルをこのブロックから導出するために、ビデオコーダは、RefPicList0(RefPicList1)に対応する動きベクトルのみをチェックする。
[0225]たとえば、ビデオコーダが、視差ベクトル導出プロセスを実行するときに、ビデオコーダは、隣接ブロックについて、隣接ブロックが第2の基準ピクチャリスト(たとえば、RefPicList0またはRefPicList1)に対応する動きベクトルを有するかどうかに関係なく、第1の基準ピクチャリスト(たとえば、RefPicList0またはRefPicList1)に対応する隣接ブロックの動きベクトルが視差動きベクトルであるかどうかのみをチェックすることができる。さらに、この例において、第1の基準ピクチャリストに対応する隣接ブロックの動きベクトルが視差動きベクトルである場合、ビデオコーダは、視差動きベクトルを代表的ブロックに対する視差ベクトルに変換し得る。
[0226]図17は、本開示の1つまたは複数の技術による、現在のブロックに対する視差ベクトルを決定するためのビデオコーダの例示的なオペレーション650を示す流れ図である。図16および17の例などの、いくつかの例では、IDVは、単純な方法で表現されるものとしてよく、このため、隣接ブロックがIDVを含むかどうかをシグナリングするために使用されるフラグはない。むしろ、そのような例では、ビデオコーダは、隣接ブロックの1つまたは複数の既存の変数(たとえば、基準インデックス、基準ビューインデックスなど)を、隣接ブロックがIDVを含むことを示すように設定することができる。
[0227]図17の例に示されているように、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、現在の空間的隣接ブロックが視差動きベクトルを有するかどうかを決定することができる(652)。現在の空間的隣接ブロックが視差動きベクトルを有すると決定したことに応答して(652の「はい」)、ビデオコーダは、現在の空間的隣接ブロックの視差動きベクトルを現在のブロックに対する視差ベクトルに変換し得る(654)。視差動きベクトルを視差ベクトルに変換した後、オペレーション650は終了する。
[0228]他方、現在の空間的隣接ブロックが視差動きベクトルを有しないと決定したことに応答して(652の「いいえ」)、ビデオコーダは、残りの空間的隣接ブロックがあるかどうかを決定することができる(660)。1つまたは複数の空間的隣接ブロックがあると決定したことに応答して(660の「はい」)、ビデオコーダは、空間的隣接ブロックのうちの別の1つに関してアクション652〜656を繰り返すことができる。この方法で、ビデオコーダは、ビデオコーダが空間的隣接ブロックのすべてを有するか、または空間的動きベクトルを識別するまでアクション652〜656を実行することができる。ビデオコーダは、空間的隣接ブロックをA1、B1、B0、A0、およびB2の順序でチェックすることができる。
[0229]残っている空間的隣接ブロックはないと決定したことに応答して(656の「いいえ」)、ビデオコーダは、時間的動きベクトル予測がイネーブルにされているかどうかを決定することができる(658)。ビデオコーダが、時間的動きベクトル予測がイネーブルにされていると決定した場合(658の「はい」)、ビデオコーダは、図18に示されている(図17で「A」と示されている)オペレーション650の一部分を実行することができる。図18に示されているオペレーション650の一部分を実行した後、または時間的動きベクトル予測がイネーブルにされていないと決定した後(658の「いいえ」)、ビデオコーダは、IDVについて空間的隣接ブロックをチェックすることができる。ビデオコーダは、空間的隣接ブロックをA0、A1、B0、B1、およびB2の順序でチェックすることができる。したがって、図17の例において、ビデオコーダは、現在の空間的隣接ブロックがスキップモードでコーディングされ、その特定の変数を不正な値に設定されているかどうかを決定することができる(660)。現在の空間的隣接ブロックに対する特定の変数が、不正な値に設定されている場合、現在の空間的隣接ブロックは、IDVを有する。たとえば、現在のブロックに対する視差ベクトルを決定する前に、ビデオコーダは、現在の空間的隣接ブロックをすでにコーディングしている。現在の空間的隣接ブロックをコーディングする一環として、ビデオコーダは、動き予測プロセス(たとえば、マージモードプロセスまたはAMVPプロセス)を実行して、現在の空間的隣接ブロックに対する動き情報を決定することができる。3D−HEVC作業ドラフト1では、ビデオコーダが動き予測プロセスを実行したときに、ビデオコーダは、ビュー間予測動きベクトルフラグ(たとえば、IvpMvFlagLX)を設定して、現在の空間的隣接ブロックがIDVを有するかどうかを示す。しかしながら、本開示の1つまたは複数の技術によれば、現在の空間的隣接ブロックがIDVを有することを示すために、ビデオコーダは現在の空間的隣接ブロックの特定の変数を不正な値に設定し得る。上で示されているように、特定の変数は、基準インデックスと、基準ビューインデックスと、他の変数とであるものとしてよい。ビデオコーダが、現在の空間的隣接ブロックに対する動き情報を決定した後、ビデオコーダが特定の変数を再び必要としない場合がある。したがって、特定の変数は、現在の空間的隣接ブロックがIDVを有するかどうかを示すために再利用され得る。
[0230]現在の空間的隣接ブロックがスキップモードでコーディングされ、その特定の変数を不正な値に設定されていると決定したことに応答して(660の「はい」)、ビデオコーダは、現在の空間的隣接ブロックのIDVを現在のブロックに対する視差ベクトルに変換し得る(662)。現在の空間的隣接ブロックのIDVを現在のブロックに対する視差ベクトルに変換した後、オペレーション650は終了する。
[0231]他方、現在の空間的隣接ブロックがスキップモードでコーディングされていない、または現在の空間的隣接ブロックに対する特定の変数が不正な値に設定されていないと決定したことに応答して(660の「いいえ」)、ビデオコーダは、残りの空間的隣接ブロックがあるかどうかを決定することができる(664)。1つまたは複数の空間的隣接ブロックが残っていると決定したことに応答して(664の「はい」)、ビデオコーダは、残りの空間的隣接ブロックのうちの1つを現在の空間的隣接ブロックとしてアクション660〜664を繰り返すことができる。
[0232]残っている空間的隣接ブロックはないと決定したことに応答して(664の「いいえ」)、ビデオコーダは、現在のブロックに対する視差ベクトルが利用不可能であることを示し得る(666)。次いで、オペレーション650は終了し得る。
[0233]図18は、図17に示されているオペレーション650の例示的な継続を示す流れ図である。図18の例に示されているように、ビデオコーダは、現在のブロックのコーディングモードがAMVPであるかどうかを決定することができる(690)。コーディングモードはAMVPであると決定したことに応答して(690の「はい」)、ビデオコーダは、コロケートピクチャ内のBR領域とCB領域とを定義することができる(692)。次に、ビデオコーダは、BR領域をカバーするブロック(たとえば、PU)が視差動きベクトルを有するかどうかを決定することができる(694)。BR領域をカバーするブロックが視差動きベクトルを有すると決定したことに応答して(694の「はい」)、ビデオコーダは、BR領域をカバーするブロックの視差動きベクトルを現在のブロックに対する視差ベクトルに変換し得る(696)。次いで、ビデオコーダは、オペレーション650の視差ベクトル導出プロセスを終了させることができる。
[0234]他方、BR領域をカバーするブロックが視差動きベクトルを有しないと決定したことに応答して(694の「いいえ」)、ビデオコーダは、CB領域をカバーするブロックが視差動きベクトルを有するかどうかを決定することができる(698)。CB領域をカバーするブロックが視差動きベクトルを有すると決定したことに応答して(698の「はい」)、ビデオコーダは、CB領域をカバーするブロックの視差動きベクトルを現在のブロックの視差ベクトルに変換し得る(700)。次いで、ビデオコーダは、オペレーション650の視差ベクトル導出プロセスを終了させることができる。しかしながら、CB領域をカバーするブロックが視差動きベクトルを有しない場合(698の「いいえ」)、ビデオコーダは、「B」とマークされている円の後の図17に示されているオペレーション650の一部分を実行することができる。
[0235]コーディングモードはAMVPでないと決定したことに応答して(690の「いいえ」)、ビデオコーダは、候補ピクチャリスト内の現在のコロケートピクチャ内のBR領域とCB領域とを定義することができる(702)。次に、ビデオコーダは、現在の候補ピクチャのBR領域をカバーするブロック(たとえば、PU)が視差動きベクトルを有するかどうかを決定することができる(704)。現在の候補ピクチャのBR領域をカバーするブロックが視差動きベクトルを有すると決定したことに応答して(704の「はい」)、ビデオコーダは、現在の候補ピクチャのBR領域をカバーするブロックの視差動きベクトルを現在のブロックに対する視差ベクトルに変換し得る(706)。次いで、ビデオコーダは、オペレーション650の視差ベクトル導出プロセスを終了させることができる。
[0236]他方、現在の候補ピクチャのBR領域をカバーするブロックが視差動きベクトルを有しないと決定したことに応答して(704の「いいえ」)、ビデオコーダは、現在の候補ピクチャのCB領域をカバーするブロックが視差動きベクトルを有するかどうかを決定することができる(708)。現在の候補ピクチャのCB領域をカバーするブロックが視差動きベクトルを有すると決定したことに応答して(708の「はい」)、ビデオコーダは、現在の候補ピクチャのCB領域をカバーするブロックの視差動きベクトルを現在のブロックの視差ベクトルに変換し得る(710)。次いで、ビデオコーダは、オペレーション650の視差ベクトル導出プロセスを終了させることができる。
[0237]しかしながら、現在の候補ピクチャのCB領域をカバーするブロックが視差動きベクトルを有しないと決定したことに応答して(708の「いいえ」)、ビデオコーダは、候補ピクチャリスト内に残りの候補ピクチャがあるかどうかを決定することができる(712)。候補ピクチャリスト内に1つまたは複数の候補ピクチャが残っていると決定したことに応答して(712の「はい」)、ビデオコーダは、候補ピクチャの別の1つを現在の候補ピクチャとしてアクション702〜712を実行することができる。他方、候補ピクチャリスト内に候補ピクチャが残っていないと決定したことに応答して(712の「いいえ」)、ビデオコーダは、「B」とマークされている円の後の図17に示されているオペレーション650の一部分を実行することができる。
[0238]例1。ビデオデータをコーディングする方法であって、1つまたは複数の予測ユニット(PU)を含むビデオデータのコーディングユニット(CU)に対する視差ベクトルを決定することと、ここにおいて、視差ベクトルはCUの1つまたは複数のPUの各々に共通である、決定された視差ベクトルに基づいてCUに対してビュー間動き予測とビュー間残差予測とのうちの1つまたは複数を実行することとを備える方法。
[0239]例2。視差ベクトルを視差動きベクトルとして採用することをさらに備え、ここにおいて、決定された視差ベクトルに基づいてCUに対してビュー間動き予測とビュー間残差予測とのうちの1つまたは複数を実行することは、視差動きベクトルを使用してCUに対してビュー間動き予測とビュー間残差予測とのうちの1つまたは複数を実行することを備える、例1の方法。
[0240]例3。CUに対する視差ベクトルを決定することは、視差動きベクトル(DMV)とビデオデータの基準ブロックに関連付けられている暗黙的視差ベクトル(IDV)とのうちの1つに基づいて視差ベクトルを決定することを備える例1の方法。
[0241]例4。基準ブロックはCUに関連付けられている空間的隣接ブロックと、CUに関連付けられている時間的隣接ブロックとのうちの1つを備える例3の方法。
[0242]例5。CUは、ビデオデータのフレームの複数のCUのうちの1つを備え、空間的隣接ブロックは、CU以外の、複数のCUのうちの別のCU内に含まれ、フレーム内のCUに隣接して配置されている、ビデオデータのブロックを備える例4の方法。
[0243]例6。CUは、ビデオデータの第1のフレームの第1の複数のCUのうちの1つを備え、時間的隣接ブロックは、ビデオデータの第2のフレーム内に含まれるビデオデータのブロックを備え、ここにおいて、第1のフレームは第2のフレームと異なる、例4の方法。
[0244]例7。第2のフレーム内に含まれるブロックは、第2のフレームの第2の複数のCUのうちのCU内に含まれるビデオデータのブロックと、ここにおいて、第2のフレームの第2の複数のCUのうちのCUは、第1のフレームの第1の複数のCUのうちのCUと同一の位置にある、第2のフレームの第2の複数のCUのうちのCUに隣接して配置されているビデオデータのブロックとのうちの1つを備える例6の方法。
[0245]例8。CUは、ビデオデータのフレームの複数のCUのうちの1つを備え、基準ブロックは、フレーム内のCUの左下隅部に隣接して配置されている、CU以外の、複数のCUのうちの第1のCU内に含まれる第1の隣接PUと、フレーム内のCUのすぐ左に配置されている、CU以外の、複数のCUのうちの第2のCU内に含まれる第2の隣接PUと、フレーム内のCUの左上隅部に隣接して配置されている、CU以外の、複数のCUのうちの第3のCU内に含まれる第3の隣接PUと、フレーム内のCUのすぐ上に配置されている、CU以外の、複数のCUのうちの第4のCU内に含まれる第4の隣接PUと、フレーム内のCUの右上隅部に隣接して配置されている、CU以外の、複数のCUのうちの第5のCU内に含まれる第5の隣接PUとのうちの1つを備える例3の方法。
[0246]例9。基準ブロックは、第1の隣接PUと、第2の隣接PUと、第3の隣接PUと、第4の隣接PUと、第5の隣接PUのサブセットに含まれる1つを備える例8の方法。
[0247]例10。基準ブロックはCUと同一の位置にある第2のフレームの一部の中に含まれるビデオデータの第2のフレームの第1の領域と、CUのPUと同一の位置にある第2のフレームの一部の中に含まれる第2のフレームの第2の領域と、第2のフレームの最大CU(LCU)に対応する、第1の領域と第2の領域とのうちの一方または両方を含む、第2のフレームの第3の領域と、第1の領域と第2の領域とのうちの1つまたは複数の右下隅部に隣接して配置されている第2のフレームの第4の領域とのうちの1つを備える例3の方法。
[0248]例11。基準ブロックは、CUの、CU以外の、空間的隣接CUと時間的隣接CUとのうちの1つのPUを備える例3の方法。
[0249]例12。基準ブロックは、CUの複数のPUのうちの代表的PUに基づいて決定される例3の方法。
[0250]例13。視差動きベクトルは、所定の順序によりCUに関連付けられている1つまたは複数の基準ブロックの各々の視差動きベクトルと暗黙的視差ベクトルとのうちの1つを決定することによって決定される例3の方法。
[0251]例14。所定の順序は、CUと1つまたは複数の基準ブロックの各々との間の相関の量に基づいて定義される例13の方法。
[0252]例15。さらに、
[0253]暗黙的視差ベクトル(IDV)がCUに関連付けられている基準ブロックについて存在しているかどうかを、基準インデックスと、基準ビューインデックスと、基準ビューインデックスの差と、不正な基準インデックスと、不正な基準ビューインデックスと、不正な基準ビューインデックスの差とのうちの1つをシグナリングすることによって示すことを備える例1の方法。
[0254]例16。単一ビットフラグを使用してIDVが基準ブロックに対して存在しているかどうかを示すことを回避することをさらに備える例15の方法。
[0255]例17。例1〜16の任意の組合せの方法。
[0256]例18。方法がエンコーダによって実行される例1〜16のいずれか1つまたはこれらの組合せの方法。
[0257]例19。方法がデコーダによって実行される例1〜16のいずれか1つまたはこれらの組合せの方法。
[0258]例20。例1〜16のいずれか1つまたはこれらの組合せの方法を実行するように構成されたシステム。
[0259]例21。実行されたときに1つまたは複数のプロセッサに例1〜16のいずれか1つまたはこれらの組合せの方法を実行させる命令を備える非一時的コンピュータ可読ストレージ媒体。
[0260]例22。例1〜16のいずれか1つまたはこれらの組合せの方法を実行するように構成されたビデオ符号化デバイス。
[0261]例23。例1〜16のいずれか1つまたはこれらの組合せの方法を実行するように構成されたビデオ復号デバイス。
[0262]例24。ビデオデータをコーディングするためのデバイスであって、1つまたは複数の予測ユニット(PU)を含むビデオデータのコーディングユニット(CU)に対する視差ベクトルを決定するための手段と、ここにおいて、視差ベクトルはCUの1つまたは複数のPUの各々に共通である、決定された視差ベクトルに基づいてCUに対してビュー間動き予測とビュー間残差予測とのうちの1つまたは複数を実行するための手段とを備えるデバイス。
[0263]例25。視差ベクトルを視差動きベクトルとして採用するための手段をさらに備え、ここにおいて、決定された視差ベクトルに基づいてCUに対してビュー間動き予測とビュー間残差予測とのうちの1つまたは複数を実行するための手段は、視差動きベクトルを使用してCUに対してビュー間動き予測とビュー間残差予測とのうちの1つまたは複数を実行するための手段を備える、例24のデバイス。
[0264]例26。CUに対する視差ベクトルを決定するための手段は、視差動きベクトル(DMV)とビデオデータの基準ブロックに関連付けられている暗黙的視差ベクトル(IDV)とのうちの1つに基づいて視差ベクトルを決定するための手段を備える例24のデバイス。
[0265]例27。基準ブロックは、CUに関連付けられている空間的隣接ブロックと、CUに関連付けられている時間的隣接ブロックとのうちの1つを備える例26のデバイス。
[0266]例28。CUは、ビデオデータのフレームの複数のCUのうちの1つを備え、空間的隣接ブロックは、CU以外の、複数のCUのうちの別のCU内に含まれ、フレーム内のCUに隣接して配置されている、ビデオデータのブロックを備える例27のデバイス。
[0267]例29。CUは、ビデオデータの第1のフレームの第1の複数のCUのうちの1つを備え、時間的隣接ブロックは、ビデオデータの第2のフレーム内に含まれるビデオデータのブロックを備え、ここにおいて、第1のフレームは第2のフレームと異なる、例27のデバイス。
[0268]例30。第2のフレーム内に含まれるブロックは、第2のフレームの第2の複数のCUのうちのCU内に含まれるビデオデータのブロックと、ここにおいて、第2のフレームの第2の複数のCUのうちのCUは、第1のフレームの第1の複数のCUのうちのCUと同一の位置にある、第2のフレームの第2の複数のCUのうちのCUに隣接して配置されているビデオデータのブロックとのうちの1つを備える例29のデバイス。
[0269]例31。CUは、ビデオデータのフレームの複数のCUのうちの1つを備え、基準ブロックは、フレーム内のCUの左下隅部に隣接して配置されている、CU以外の、複数のCUのうちの第1のCU内に含まれる第1の隣接PUと、フレーム内のCUのすぐ左に配置されている、CU以外の、複数のCUのうちの第2のCU内に含まれる第2の隣接PUと、フレーム内のCUの左上隅部に隣接して配置されている、CU以外の、複数のCUのうちの第3のCU内に含まれる第3の隣接PUと、フレーム内のCUのすぐ上に配置されている、CU以外の、複数のCUのうちの第4のCU内に含まれる第4の隣接PUと、フレーム内のCUの右上隅部に隣接して配置されている、CU以外の、複数のCUのうちの第5のCU内に含まれる第5の隣接PUとのうちの1つを備える例26のデバイス。
[0270]例32。基準ブロックは、第1の隣接PUと、第2の隣接PUと、第3の隣接PUと、第4の隣接PUと、第5の隣接PUとのサブセットに含まれる1つを備える例31のデバイス。
[0271]例33。基準ブロックは、CUと同一の位置にある第2のフレームの一部の中に含まれるビデオデータの第2のフレームの第1の領域と、CUのPUと同一の位置にある第2のフレームの一部の中に含まれる第2のフレームの第2の領域と、第2のフレームの最大CU(LCU)に対応する、第1の領域と第2の領域とのうちの一方または両方を含む、第2のフレームの第3の領域と、第1の領域と第2の領域とのうちの1つまたは複数の右下隅部に隣接して配置されている第2のフレームの第4の領域とのうちの1つを備える例26のデバイス。
[0272]例34。基準ブロックは、CUの、CU以外の、空間的隣接CUと時間的隣接CUとのうちの1つのPUを備える例26のデバイス。
[0273]例35。基準ブロックは、CUの複数のPUのうちの代表的PUに基づいて決定される例26のデバイス。
[0274]例36。視差動きベクトルを決定するための手段は、所定の順序によりCUに関連付けられている1つまたは複数の基準ブロックの各々の視差動きベクトルと暗黙的視差ベクトルとのうちの1つを決定するための手段を備える例26のデバイス。
[0275]例37。所定の順序は、CUと1つまたは複数の基準ブロックの各々との間の相関の量に基づいて定義される例36のデバイス。
[0276]例38。暗黙的視差ベクトル(IDV)がCUに関連付けられている基準ブロックについて存在しているかどうかを、基準インデックスと、基準ビューインデックスと、基準ビューインデックスの差と、不正な基準インデックスと、不正な基準ビューインデックスと、不正な基準ビューインデックスの差とのうちの1つをシグナリングすることによって示すための手段をさらに備える例24のデバイス。
[0277]例39。単一ビットフラグを使用してIDVが基準ブロックに対して存在しているかどうかを示すことを回避するための手段をさらに備える例38のデバイス。
[0278]例40。本開示で説明されている任意のデバイスまたは方法。
[0279]上記の例はどれもその詳細が、他の例と組み合わされ、本開示と一致するものとしてよい。1つまたは複数の例において、説明されている機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組合せで実装され得る。ソフトウェアで実装される場合、これらの機能は、1つまたは複数の命令もしくはコードとして、コンピュータ可読媒体上で格納または送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データストレージ媒体などの有形の媒体に対応する、コンピュータ可読ストレージ媒体、またはたとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を円滑にする媒体を含む通信媒体を含むものとしてよい。このように、コンピュータ可読媒体は、一般的に、(1)非一時的である有形のコンピュータ可読ストレージ媒体、または(2)信号もしくは搬送波などの通信媒体に対応し得る。データストレージ媒体は、本開示において説明されている技術の実装のため、命令、コード、および/またはデータ構造体を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る利用可能な任意の媒体とすることができる。コンピュータプログラム製品はコンピュータ可読媒体を含むものとしてよい。
[0280]例として、限定はしないが、このようなコンピュータ可読ストレージ媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROM、または他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、または命令もしくはデータ構造体の形態で所望のプログラムコードを格納するために使用され得る、コンピュータによってアクセスされ得る他の任意の媒体を備えることができる。また、接続がコンピュータ可読媒体と称されることも適切である。たとえば、命令が同軸ケーブル、光ファイバケーブル、ツイストペア線、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバケーブル、ツイストペア線、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読ストレージ媒体とデータストレージ媒体とは、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに、非一時的な有形のストレージ媒体に向けられることが理解されるであろう。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0281]命令は、1つまたは複数のデジタルシグナルプロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルロジックアレイ(FPGA)、または他の同等の集積回路もしくはディスクリート部品による論理回路などの1つまたは複数のプロセッサによって実行され得る。したがって、本明細書で使用されているような「プロセッサ」という用語は、前述の構造物または本明細書で説明されている技術の実装に適している他の構造物のいずれかを指すものとしてよい。それに加えて、いくつかの態様では、本明細書で説明されている機能は、符号化と復号とを行うように構成された専用ハードウェアおよび/またはソフトウェアモジュール内に設けられるか、または組み合わされたコーデックに組み込まれ得る。また、これらの技術は、1つまたは複数の回路または論理素子で完全に実装されることもあり得る。
[0282]本開示の技術は、ワイヤレスハンドセット、集積回路(IC)、または一組のIC(たとえば、チップセット)を含む、様々なデバイスもしくは装置で実装され得る。様々なコンポーネント、モジュール、またはユニットは、開示されている技術を実行するように構成されたデバイスの機能的態様を強調するように本開示において説明されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。むしろ、上で説明されているように、様々なユニットが、コーデックハードウェアユニット内に組み合わされるか、または好適なソフトウェアおよび/またはファームウェアと併せて、上述のような1つまたは複数のプロセッサを含む、相互運用性を有するハードウェアユニットの集合体によって構成され得る。
[0283]様々な例が説明された。これらおよび他の例は、次の請求項の範囲内にある。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1] ビデオデータを復号する方法であって、
現在のブロックに対する視差ベクトルを導出するために、視差ベクトル導出プロセスを実行することと、ここで、前記視差ベクトル導出プロセスを実行することは、
第1または第2の空間的隣接ブロックのいずれかが視差動きベクトルまたは暗黙的視差ベクトルを有している場合に、前記視差動きベクトルまたは前記暗黙的視差ベクトルを前記現在のブロックに対する前記視差ベクトルに変換することを備え、
ここで、前記視差ベクトル導出プロセスは、前記第1および前記第2の空間的隣接ブロックのいずれもが視差動きベクトルまたは暗黙的視差ベクトルを有していない場合であっても、前記第1および第2の空間的隣接ブロックに加えていずれかの空間的隣接ブロックが視差動きベクトルまたは暗黙的視差ベクトルを有しているかどうかを決定しない、
前記現在のブロックに対するサンプルブロックを、一部は、前記導出された視差ベクトルに基づいて前記現在のブロックに対するビュー間予測を実行することによって再構成することと、
を備える方法。
[C2] 前記第1の空間的隣接ブロックは、前記現在のブロックの上縁に隣接し、前記第2の空間的隣接ブロックは、前記現在のブロックの左縁に隣接するC1に記載の方法。
[C3] 前記視差ベクトル導出プロセスを実行することは、視差動きベクトルについて前記第1の空間的隣接ブロックをチェックすることと、次いで、視差動きベクトルについて前記第2の空間的隣接ブロックをチェックすることと、を備えるC2に記載の方法。
[C4] 前記視差ベクトル導出プロセスを実行することは、視差動きベクトルについて前記第2の空間的隣接ブロックをチェックすることと、次いで、視差動きベクトルについて前記第1の空間的隣接ブロックをチェックすることと、を備えるC2に記載の方法。
[C5] ビデオデータを符号化する方法であって、
現在のブロックに対する視差ベクトルを導出するために、視差ベクトル導出プロセスを実行することと、ここで、前記視差ベクトル導出プロセスを実行することは、
第1または第2の空間的隣接ブロックのいずれかが視差動きベクトルまたは暗黙的視差ベクトルを有している場合に、前記視差動きベクトルまたは前記暗黙的視差ベクトルを前記現在のブロックに対する前記視差ベクトルに変換することを備え、
ここで、前記視差ベクトル導出プロセスは、前記第1および前記第2の空間的隣接ブロックのいずれもが視差動きベクトルまたは暗黙的視差ベクトルを有していない場合であっても、前記第1および第2の空間的隣接ブロックに加えていずれかの空間的隣接ブロックが視差動きベクトルまたは暗黙的視差ベクトルを有しているかどうかを決定しない、
前記現在のブロックに対して前記導出された視差ベクトルに一部基づいて、前記現在のブロックの符号化された表現を生成することと、
を備える方法。
[C6] 前記第1の空間的隣接ブロックは、前記現在のブロックの上縁に隣接し、前記第2の空間的隣接ブロックは、前記現在のブロックの左縁に隣接するC5に記載の方法。
[C7] 前記視差ベクトル導出プロセスを実行することは、視差動きベクトルについて前記第1の空間的隣接ブロックをチェックすることと、次いで、視差動きベクトルについて前記第2の空間的隣接ブロックをチェックすることと、を備えるC6に記載の方法。
[C8] 前記視差ベクトル導出プロセスを実行することは、視差動きベクトルについて前記第2の空間的隣接ブロックをチェックすることと、次いで、視差動きベクトルについて前記第1の空間的隣接ブロックをチェックすることと、を備えるC6に記載の方法。
[C9] ビデオデータを記憶するように構成されたメモリと、
前記ビデオデータの現在のブロックに対する視差ベクトルを導出するために、視差ベクトル導出プロセスを実行するように構成された1つまたは複数のプロセッサと、を備え、ここで、前記視差ベクトル導出プロセスを実行することは、
第1または第2の空間的隣接ブロックのいずれかが視差動きベクトルまたは暗黙的視差ベクトルを有している場合に、前記視差動きベクトルまたは前記暗黙的視差ベクトルを前記現在のブロックに対する前記視差ベクトルに変換することを備え、
ここで、前記視差ベクトル導出プロセスは、前記第1および前記第2の空間的隣接ブロックのいずれもが視差動きベクトルまたは暗黙的視差ベクトルを有していない場合であっても、前記第1および第2の空間的隣接ブロックに加えていずれかの空間的隣接ブロックが視差動きベクトルまたは暗黙的視差ベクトルを有しているかどうかを決定しない、デバイス。
[C10] 前記第1の空間的隣接ブロックは、前記現在のブロックの上縁に隣接し、前記第2の空間的隣接ブロックは、前記現在のブロックの左縁に隣接するC9に記載のデバイス。
[C11] 前記1つまたは複数のプロセッサは、前記1つまたは複数のプロセッサが前記視差ベクトル導出プロセスを実行したときに、前記1つまたは複数のプロセッサが視差動きベクトルについて前記第1の空間的隣接ブロックをチェックし、次いで視差動きベクトルについて前記第2の空間的隣接ブロックをチェックするように構成されるC10に記載のデバイス。
[C12] 前記1つまたは複数のプロセッサは、前記1つまたは複数のプロセッサが前記視差ベクトル導出プロセスを実行したときに、前記1つまたは複数のプロセッサが視差動きベクトルについて前記第2の空間的隣接ブロックをチェックし、次いで視差動きベクトルについて前記第1の空間的隣接ブロックをチェックするように構成されるC10に記載のデバイス。
[C13] 前記1つまたは複数のプロセッサは、前記現在のブロックに対するサンプルブロックを、一部は、前記導出された視差ベクトルに基づいて前記現在のブロックに対するビュー間予測を実行することによって、再構成するようにさらに構成されるC9に記載のデバイス。
[C14] 前記1つまたは複数のプロセッサは、前記現在のブロックに対する前記導出された視差ベクトルに一部基づいて、前記現在のブロックの符号化された表現を生成するようにさらに構成されるC9に記載のデバイス。
[C15] 現在のブロックに対する視差ベクトルを導出するために、視差ベクトル導出プロセスを実行する手段と、ここで、前記視差ベクトル導出プロセスを実行することは、
第1または第2の空間的隣接ブロックのいずれかが視差動きベクトルまたは暗黙的視差ベクトルを有している場合に、前記視差動きベクトルまたは前記暗黙的視差ベクトルを前記現在のブロックに対する前記視差ベクトルに変換することを備え、
ここで前記視差ベクトル導出プロセスは、前記第1および前記第2の空間的隣接ブロックのいずれもが視差動きベクトルまたは暗黙的視差ベクトルを有していない場合であっても、前記第1および第2の空間的隣接ブロックに加えていずれかの空間的隣接ブロックが視差動きベクトルまたは暗黙的視差ベクトルを有しているかどうかを決定しない、
ビュー間予測を実行するために、前記現在のブロックに対する前記視差ベクトルを使用する手段と、
を備えるデバイス。
[C16] 前記第1の空間的隣接ブロックは、前記現在のブロックの上縁に隣接し、前記第2の空間的隣接ブロックは、前記現在のブロックの左縁に隣接するC15に記載のデバイス。
[C17] 命令が記憶されている非一時的コンピュータ可読データ記憶媒体であって、前記命令は実行されたときに、1つまたは複数のプロセッサに、
現在のブロックに対する視差ベクトルを導出するために、視差ベクトル導出プロセスを実行することと、ここで、前記視差ベクトル導出プロセスを実行することは、
第1または第2の空間的隣接ブロックのいずれかが視差動きベクトルまたは暗黙的視差ベクトルを有している場合に、前記視差動きベクトルまたは前記暗黙的視差ベクトルを前記現在のブロックに対する前記視差ベクトルに変換することを備え、
ここで、前記視差ベクトル導出プロセスは、前記第1および前記第2の空間的隣接ブロックのいずれもが視差動きベクトルまたは暗黙的視差ベクトルを有していない場合であっても、前記第1および第2の空間的隣接ブロックに加えていずれかの空間的隣接ブロックが視差動きベクトルまたは暗黙的視差ベクトルを有しているかどうかを決定しない、
ビュー間予測を実行するために、前記現在のブロックに対する前記視差ベクトルを使用することと、
を行わせる、非一時的コンピュータ可読データ記憶媒体。
[C18] 前記第1の空間的隣接ブロックは、前記現在のブロックの上縁に隣接し、前記第2の空間的隣接ブロックは、前記現在のブロックの左縁に隣接するC11に記載の非一時的コンピュータ可読データ記憶媒体。