[0024]本開示は、テクスチャビューと深度ビューとを含み得るビデオコンテンツのコーディング(たとえば、符号化または復号)のための様々な技法を説明する。本技法は、いくつかの態様では、ビデオエンコーダによって実施され得る。他の態様では、本技法はビデオデコーダによって実施され得る。さらに、そのような方法は、トランスコーダ、メディアアウェアネットワーク要素(MANEs)などの他のデバイスにおいて実施され得る。本開示では、本技法は、例示の目的のためにビデオエンコーダおよびデコーダに関して説明される。
[0025]ビデオコーディング規格は、ITU−T H.261と、ISO/IEC MPEG−1 Visualと、ITU−T H.262またはISO/IEC MPEG−2 Visualと、ITU−T H.263と、ISO/IEC MPEG−4 Visualと、それのスケーラブルビデオコーディング(SVC)およびマルチビュービデオコーディング(MVC)拡張を含む(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264とを含む。
[0026]さらに、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)とISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)とのビデオコーディングにおけるジョイントコラボレーションチーム(JCT−VC:Joint Collaboration Team on Video Coding)によって開発されたビデオコーディング規格、高効率ビデオコーディング(HEVC)がある。以下でHEVC WD8と呼ぶ、HEVCの1つの最近のワーキングドラフト(WD:Working Draft)は、http://phenix.int-evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC-K1003-v10.zipから入手可能である。HEVCの別の、より最近のドラフトは、本明細書では「HEVCテキスト仕様ドラフト10」と呼ぶ。
[0027]マルチビュービデオコーディング(MVC:multiview video coding)はH.264/アドバンストビデオコーディング(AVC)の拡張である。MVC仕様は、以下の本開示のセクションおよびサブセクションにおいて簡単に説明される。
[0028]図1は、サブ予測ユニット(PU)レベル高度残差予測のための技法を実装または場合によっては利用するように構成され得る例示的なビデオ符号化および復号システム10を示すブロック図である。図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化されたビデオデータを提供するソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介して宛先デバイス14にビデオデータを提供する。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミングデバイスなどを含む、広範囲のデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14は、ワイヤレス通信のために装備され得る。
[0029]宛先デバイス14は、コンピュータ可読媒体16を介して復号されるべき符号化されたビデオデータを受信し得る。コンピュータ可読媒体16は、ソースデバイス12から宛先デバイス14に符号化されたビデオデータを移動させることが可能な任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が、リアルタイムで宛先デバイス14に直接符号化されたビデオデータを送信することを可能にするための通信媒体を備え得る。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波数(RF)スペクトルあるいは1つまたは複数の物理伝送線路(physical transmission lines)など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワークなどのパケットベースネットワーク、またはインターネットなどのグローバルネットワークの一部を形成し得る。通信媒体は、ルータ、スイッチ、基地局、またはソースデバイス12から宛先デバイス14への通信を可能にするために有用であり得る任意の他の機器を含み得る。
[0030]いくつかの例では、符号化されたデータは、出力インターフェース22から、ストレージデバイス31などのストレージデバイスに出力され得る。同様に、符号化されたデータは入力インターフェース28によってストレージデバイス31からアクセスされ得る。ストレージデバイス31は、ハードドライブ、Blu−ray(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性もしくは不揮発性のメモリ、または符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体など、様々な分散したまたはローカルでアクセスされるデータ記憶媒体のいずれかを含み得る。さらなる一例では、ストレージデバイス31は、ソースデバイス12によって生成された符号化されたビデオを記憶し得るファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介してストレージデバイスから記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先デバイス14に送信することが可能な任意のタイプのサーバであり得る。例示的なファイルサーバは、(たとえば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む、任意の標準のデータ接続を通して符号化されたビデオデータにアクセスし得る。これは、ファイルサーバ上に記憶された符号化されたビデオデータにアクセスするのに好適であるワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージデバイスからの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはそれらの組合せであり得る。
[0031]本開示の技法は、必ずしもワイヤレス適用例または設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、または他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、および/またはビデオテレフォニーなどの適用例をサポートするために一方向または二方向ビデオ送信をサポートするように構成され得る。
[0032]図1の例では、ソースデバイス12は、ビデオソース18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオデコーダ30と、ディスプレイデバイス32とを含む。本開示によれば、ソースデバイス12のビデオエンコーダ20は、サブPUレベル高度残差予測のために、本明細書で説明する技法を実施するように構成され得る。たとえば、ビデオエンコーダ20は、サブPUレベル高度残差予測のために、本明細書で説明される技法を使用して、デコーダ30などのビデオデコーダが符号化されたビデオビットストリームを復号することを可能にするために、符号化されたビデオビットストリーム中でシグナリング情報を符号化するように構成され得る。ビデオデコーダ30は、サブPUレベル高度残差予測のために、本明細書で説明される技法を実施するように構成され得る。他の例では、ソースデバイスおよび宛先デバイスは他のコンポーネントまたは構成(arrangements)を含み得る。たとえば、ソースデバイス12は、外部カメラなど、外部ビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、統合されたディスプレイデバイスを含むのではなく、外部ディスプレイデバイスとインターフェースし得る。
[0033]このようにして、ビデオエンコーダ20とビデオデコーダ30の一方または両方は、以下でさらに詳細に説明される図4の方法の例など、ビデオデータをコーディングする方法を実施するように構成されたビデオコーダの例であり得る。
[0034]図1の図示されたシステム10は、一例にすぎない。サブPUレベル高度残差予測のための本明細書で説明される技法は、任意の好適なデジタルビデオ符号化および/または復号デバイスによって実施され得る。概して、本開示の技法はビデオ符号化デバイスによって実施されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実施され得る。さらに、本開示の技法は、ビデオプリプロセッサによっても実施され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が宛先デバイス14に送信するためのコード化されたビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように、実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、またはビデオテレフォニーのためのビデオデバイス12とビデオデバイス14との間の一方向または二方向ビデオ送信をサポートし得る。
[0035]ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、前にキャプチャされたビデオを含んでいるビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースデータ、またはライブビデオとアーカイブされたビデオとコンピュータ生成されたビデオとの組合せを生成し得る。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14はいわゆるカメラフォンまたはビデオフォンを形成し得る。ただし、上述のように、本開示で説明される技法は、概してビデオコーディングに適用可能であり得、ワイヤレスおよび/またはワイヤード適用例に適用され得る。各場合において、キャプチャされたビデオ、前にキャプチャされたビデオ、またはコンピュータ生成されたビデオは、ビデオエンコーダ20によって符号化され得る。符号化されたビデオ情報は、次いで、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
[0036]コンピュータ可読媒体16は、ワイヤレスブロードキャストまたはワイヤードネットワーク送信などの一時的媒体、あるいはハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−rayディスク、または他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、ソースデバイス12から符号化されたビデオデータを受信し、たとえば、ネットワーク送信を介して、その符号化されたビデオデータを宛先デバイス14に提供し得る。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化されたビデオデータを受信し、その符号化されたビデオデータを含んでいるディスクを生成し得る。したがって、コンピュータ可読媒体16は、様々な例において、様々な形態の1つまたは複数のコンピュータ可読媒体を含むことが理解されよう。
[0037]宛先デバイス14の入力インターフェース28はコンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ビデオエンコーダ20によって定義され、またビデオデコーダ30によって使用される、ブロックおよび他のコード化されたユニット、たとえば、GOPsの特性および/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、ユーザに復号されたビデオデータを表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。
[0038]ビデオエンコーダ20およびビデオデコーダ30は、HEVC規格などのビデオコーディング規格に従って動作し得、概して、HEVCテストモデル(HM)に準拠し得る。代替的に、ビデオエンコーダ20およびビデオデコーダ30は、代替的にMPEG−4,Part10,アドバンストビデオコーディング(AVC)と呼ばれるITU−T H.264規格など、他のプロプライエタリ規格または業界規格、またはそのような規格の拡張に従って動作し得る。ただし、本開示の技法は、いかなる特定のコーディング規格にも限定されない。ビデオコーディング規格の他の例は、MPEG−2およびITU−T H.263を含む。図1には示されていないが、いくつかの態様では、ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、オーディオエンコーダおよびデコーダと統合され得、共通のデータストリームまたは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
[0039]ITU−T H.264/MPEG−4(AVC)規格は、ジョイントビデオチーム(JVT)として知られる共同パートナーシップの成果として、ISO/IECムービングピクチャエキスパートグループ(MPEG)とともにITU−Tビデオコーディングエキスパートグループ(VCEG)によって策定された。いくつかの態様では、本開示で説明される技法は、H.264規格に概して準拠するデバイスに適用され得る。H.264規格は、ITU−T Study Groupによる2005年3月付けのITU−T勧告H.264「Advanced Video Coding for generic audiovisual services」に記載されており、それは本明細書ではH.264規格またはH.264仕様、あるいはH.264/AVC規格または仕様と呼ばれることがある。ジョイントビデオチーム(JVT)は、H.264/MPEG−4 AVCへの拡張に取り組み続けている。
[0040]ビデオエンコーダ20およびビデオデコーダ30は、それぞれ、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアまたはそれらの任意の組合せなど、様々な好適なエンコーダ回路のいずれかとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、デバイスは、ソフトウェアのための命令を好適な非一時的コンピュータ可読記憶媒体に記憶し、その命令をハードウェアで実行し、1つまたは複数のプロセッサに本開示の技法を実施させ得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも、それぞれのデバイスにおいて複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。
[0041]HEVC規格化の取り組みは、HEVCテストモデル(HM)と呼ばれるビデオコーディングデバイスの発展的モデルに基づいていた。HMは、たとえば、ITU−T H.264/AVCに従う既存のデバイスに対して、ビデオコーディングデバイスのいくつかの追加の能力を仮定する。たとえば、H.264は9つのイントラ予測符号化モードを提供するが、HMは33個ものイントラ予測符号化モードを提供し得る。
[0042]概して、HMの作業モデルは、ビデオフレームまたはピクチャが、ルーマサンプルとクロマサンプルの両方を含む一連のツリーブロックまたは最大コーディングユニット(LCU:largest coding unit)に分割され(be divided)得ることを記述する。今度のHEVC規格はまた、LCUを「コーディングツリーユニット」またはCTUと呼ぶ。ビットストリーム内のシンタックスデータが、ピクセルの数に関して最大コーディングユニットであるLCUに関するサイズを定義し得る。スライスは、コーディング順序でいくつかの連続するツリーブロックを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコーディングユニット(CU)に分割され(be split)得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはツリーブロックに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。
[0043]4分木データ構造の各ノードは、対応するCUに関するシンタックスデータを提供し得る。たとえば、4分木におけるノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUに関するシンタックス要素は、繰り返し(recursively)定義され得、CUがサブCUに分割されるかどうかに依存し得る。CUがさらに分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的分割が存在しない場合でも、リーフCUの4つのサブCUはリーフCUとも呼ばれる。たとえば、16×16サイズのCUがさらに分割されない場合、その16×16CUが決して分割されないが、4つの8×8サブCUはリーフCUとも呼ばれる。
[0044]CUは、CUがサイズ差異を有しないことを除いて、H.264規格のマクロブロックと同様の目的を有する。たとえば、ツリーブロックは、(サブCUとも呼ばれる)4つの子ノードに分割され得、各子ノードは、今度は親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードと呼ばれる、最後の分割されていない子ノードは、リーフCUとも呼ばれるコーディングノードを備える。コード化されたビットストリームに関連するシンタックスデータは、最大CU深度と呼ばれる、ツリーブロックが分割され得る最大回数を定義し得、また、コーディングノードの最小サイズを定義し得る。したがって、ビットストリームはまた、最小コーディングユニット(SCU:smallest coding unit)を定義し得る。本開示は、HEVCのコンテキストにおけるCU、PU、またはTU、以下でより詳細に説明するサブPU、あるいは他の規格のコンテキストにおける同様のデータ構造(たとえば、H.264/AVCにおけるマクロブロックおよびそのサブブロック)のいずれかを指すために「ブロック」という用語を使用する。
[0045]CUは、コーディングノードと、コーディングノードに関連する予測ユニット(PU)および変換ユニット(TU:transform unit)とを含む。CUのサイズは、コーディングノードのサイズに対応し、形状が正方形でなければならない。CUのサイズは、8×8ピクセルから最大64×64ピクセル以上をもつツリーブロックのサイズにまでわたり得る。各CUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。CUに関連するシンタックスデータは、たとえば、CUの1つまたは複数のPUへの区分を記述し得る。区分モードは、CUが、スキップモード符号化もしくはダイレクトモード符号化されるか、イントラ予測モード符号化されるか、またはインター予測モード符号化されるかによって異なり得る。PUは、形状が非方形になるように区分され得る。CUに関連するシンタックスデータはまた、たとえば、4分木に従う、CUの1つまたは複数のTUへの区分を記述し得る。TUは、形状が正方形または非正方形(たとえば、長方形)であり得る。
[0046]HEVC規格は、異なるCUについて異なり得る、TUに従う変換を可能にする。TUは、一般に、区分されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、これは常にそうであるとは限らない。TUは、一般に、PUと同じサイズであるか、またはそれよりも小さい。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT:residual quad tree)として知られる4分木構造を使用して、より小さいユニットに再分割され得る。RQTのリーフノードは変換ユニット(TU)と呼ばれることがある。TUに関連するピクセル差分値は、変換係数を生成するために変換され、その変換係数は量子化され得る。
[0047]リーフCUは、1つまたは複数の予測ユニット(PU)を含み得る。概して、PUは、対応するCUの全部または一部分に対応する空間的エリアを表し、そのPUに関する参照サンプルを取り出すためのデータを含み得る。その上、PUは、予測に関係するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUに関するデータは、PUに対応するTUに関するイントラ予測モードを記述するデータを含み得る残差4分木(RQT)中に含まれ得る。別の例として、PUがインターモード符号化されるとき、PUは、PUに関する1つまたは複数の動きベクトルを定義するデータを含み得る。PUに関する動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルに関する解像度(たとえば、1/4ピクセル精度または1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルに関する参照ピクチャリスト(たとえば、リスト0、リスト1、またはリストC)を記述し得る。
[0048]1つまたは複数のPUを有するリーフCUはまた、1つまたは複数の変換ユニット(TU)を含み得る。変換ユニットは、上記で説明したように、(TU4分木構造とも呼ばれる)RQTを使用して指定され得る。たとえば、分割フラグは、リーフCUが4つの変換ユニットに分割されるかどうかを示し得る。次いで、各変換ユニットは、さらなるサブTUにさらに分割され得る。TUがさらに分割されないとき、そのTUはリーフTUと呼ばれることがある。概して、イントラコーディングの場合、リーフCUに属するすべてのリーフTUは、同じイントラ予測モードを共有する。すなわち、同じイントラ予測モードが、概して、リーフCUのすべてのTUに関する予測された値を計算するために適用される。イントラコーディングの場合、ビデオエンコーダは、イントラ予測モードを使用して各リーフTUに関する残差値を、TUに対応するCUの部分と元のブロックとの間の差分として計算し得る。TUは、必ずしもPUのサイズに制限されるとは限らない。したがって、TUは、PUよりも大きいことも小さいこともある。イントラコーディングの場合、PUは、同じCUに関する対応するリーフTUとコロケートされ(be collocated)得る。いくつかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
[0049]その上、リーフCUのTUはまた、残差4分木(RQT)と呼ばれる、それぞれの4分木データ構造に関連し得る。すなわち、リーフCUは、リーフCUがどのようにTUに区分されるかを示す4分木を含み得る。TU4分木のルートノードは概してリーフCUに対応し、一方、CU4分木のルートノードは概してツリーブロック(またはLCU)に対応する。分割されないRQTのTUはリーフTUと呼ばれる。概して、本開示は、別段に明記されていない限り、リーフCUおよびリーフTUに言及するためにそれぞれCUおよびTUという用語を使用する。
[0050]ビデオシーケンスは、一般に、一連のビデオフレームまたはピクチャを含む。ピクチャのグループ(GOP)は、概して、ビデオピクチャのうちの一連の1つまたは複数を備える。GOPは、GOP中に含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャのうちの1つまたは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスに関する符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに作用する。ビデオブロックはCU内のコーディングノードに対応し得る。ビデオブロックは、固定サイズまたは変動サイズを有し得、指定されたコーディング規格に応じてサイズが異なり得る。
[0051]一例として、HMは、様々なPUサイズでの予測をサポートする。特定のCUのサイズが2N×2Nであると仮定すると、HMは、2N×2NまたはN×NのPUサイズでのイントラ予測、および2N×2N、2N×N、N×2N、またはN×Nの対称のPUサイズでのインター予測をサポートする。HMはまた、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズでのインター予測のための非対称区分をサポートする。非対称区分では、CUの一方向は区分されないが、他の方向は25%と75%とに区分される。25%の区分に対応するCUの部分は、「n」とそれに続く「Up」、「Down」、「Left」、または「Right」という指示によって示される。したがって、たとえば、「2N×nU」は、上部における2N×0.5N PUと下部における2N×1.5N PUとで水平方向に区分された2N×2N CUを指す。
[0052]本開示では、「N×N(NxN)」および「N×N(N by N)」は、垂直寸法および水平寸法(vertical and horizontal dimensions)に関するビデオブロックのピクセル寸法、たとえば、16×16(16x16)ピクセルまたは16×16(16 by 16)ピクセルを指すために互換的に使用され得る。概して、16×16ブロックは、垂直方向に16ピクセル(y=16)、および水平方向に16ピクセル(x=16)を有する。同様に、N×Nブロックは、概して、垂直方向にNピクセルを有し、水平方向にNピクセルを有し、ここで、Nは非負整数値を表す。ブロック中のピクセルは行および列に配列され得る。その上、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有する必要があるとは限らない。たとえば、ブロックはN×Mピクセルを備え得、ここで、Mは必ずしもNに等しいとは限らない。
[0053]インター予測は、概して、時間的動きベクトルおよび/またはディスパリティ動きベクトル(disparity motion vector)を含み得る1つまたは複数の動きベクトルを使用してブロック(たとえば、PU)を予測することを伴う。高度残差予測(ARP)は、以下でより詳細に説明するように、ブロックを予測するために、時間的動きベクトル(temporal motion vector)と、ディスパリティベクトルまたはディスパリティ動きベクトルのうちの少なくとも1つとの両方を使用する。より詳細には、ARP技法は、PUに対応するCUの一部分に関する予測子を計算することと、PUに対応するCUのその部分に関する残差予測子を計算することと、次いで、予測子と残差予測子と残差とを使用してCUのその部分をコーディングすることとを含み、ただし、残差は、CUのその部分と、予測子および残差予測子の組合せとの間の差を表す。さらに、残差予測子は、重み付け係数を適用することによって変更され得る。
[0054]本開示の技法によれば、PUを含むCUが、ARPを使用してコーディングされるとき、PUはサブPUに分割され得る。本開示の技法によれば、PUに関する動きベクトル(時間的動きベクトルまたはディスパリティ動きベクトルのいずれか)が、ARPの場合、参照ブロックの第2の部分に関する時間的動き情報および/またはディスパリティ情報とは異なる時間的動き情報および/またはディスパリティ情報を有する第1の部分を含む参照ブロックを識別するとき、サブPUが形成され得る。たとえば、PUのディスパリティ動きベクトルによって識別されるビュー間参照ブロックの場合、ビュー間参照ブロックはビュー間参照ピクチャの2つ以上の重複しないブロックをカバーし得、2つの重複しないブロックは別個の時間的動き情報を有し得る。別個の時間的動き情報は、第1の部分が時間的動き情報の第1のセットを有し、第2の部分が時間的動き情報の第2の異なるセットを有する状況を指すことがある。代替的に、別個の時間的動き情報は、第1の部分が時間的動き情報の第1のセットを有し、(たとえば、第2の部分が、イントラ予測を使用してコーディングされるので、または第2の部分に関する時間的動き情報が破損した(corrupted)ので)第2の部分が利用可能な時間的動き情報を有しない状況を指すことがある。別の例として、時間的参照ブロックは時間的参照ピクチャの2つ以上の重複しないPUをカバーし得、重複しないPUは別個のディスパリティベクトルまたはディスパリティ動きベクトルを有し得る(あるいはディスパリティ動きベクトルおよび/またはディスパリティ情報は、上記で説明したように、2つの重複しないブロックのうちの1つについて利用不可能であり得る)。
[0055]このようにして、サブPUは、参照ブロックの第2の部分に関する動き/ディスパリティ情報とは異なる動き/ディスパリティ情報を含む第1の部分を有する参照ブロックを指す動きベクトル(時間的またはディスパリティ)を有するPUから生じ得る。したがって、サブPUは、4つのN×N PUに区分される2N×2N CUのN×N PUと同じであるものとして解釈されるべきでない(とはいえ、1つのサブPUのサイズは、2N×2N CUの1つのN×N PUのサイズに等しくなり得る)。たとえば、サブPUレベルでARPを使用して予測されるPUのサブPUは、PU自体のシンタックス要素の一部を形成する定義された動き/ディスパリティ情報を必ずしも含むとは限らないことになる。代わりに、サブPUレベルARPを使用してコーディングされるPUのサブPUに関する動き/ディスパリティ情報は、たとえば、参照ブロックの2つ以上の部分が、異なる動き/ディスパリティ情報を有すると仮定すると、(時間的動きベクトルかディスパリティ動きベクトルかにかかわらず)動きベクトルを使用してPUに対して識別される参照ブロックに関する動き/ディスパリティ情報から生じ得る。
[0056]サブPUは、PUの一部を含むが全部を含まないPUの一部分であり、ただし、1つのPUは、各サブPUがPUの重複しない一部分である複数のサブPUに分割(split)(すなわち、区分または分割(divide))される。各サブPUは、各ブロックについて、復号中にそれぞれのサブPU自体の(1つまたは複数の)対応する/参照ブロックの位置を特定する(locate)ために使用されるべき(1つまたは複数の)別個のベクトルがあるブロックである。各サブPUについて、サブPUに関する対応する参照ブロックを決定するために別個の決定が行われる。CUよりも小さいPUの場合でも、サブPUがPU全体を備えないことがある。たとえば、区分された2N×2N CUが4つのN×N PUである場合、これらのN×N PUはPUであり、サブPUではないが、N×N PU自体はサブPUに区分され得、ただし、PUの各サブPUは、PUの重複しない一部分である。CUが、CUよりも小さいPUに分割されるとき、各得られたPUはPUを構成し、得られたPUはサブPUを構成しない。同じく、これらの得られたPUの(すなわち、CUの分割の結果としての)各々はサブPUに分割され得、したがって、この場合、それぞれCUよりも小さいPUに分割されたCUがあり、各PUは、それぞれPUよりも小さいサブPUに分割される。
[0057]いくつかの例では、ARPがCUについて実施されているとき、現在のPUを符号化している間、ビデオエンコーダ20は現在のPUを2つ以上のサブPUに分割し、ただし、各サブPUは、CUの重複しない一部分である。次いで、現在のPUの各サブPUについて、ビデオエンコーダ20は第1のタイプの動きベクトルを生成する。動きベクトルの第1のタイプの様々な例は、以下でさらに詳細に説明される。しかしながら、手短に言えば、いくつかの例では、以下でより詳細に説明されるように、第1のタイプはディスパリティ動きベクトルである。他の例では、以下でより詳細に説明されるように、第1のタイプはディスパリティベクトルである。しかしながら、本開示はそのように限定されず、以下でより詳細に説明されるように、他のタイプの動きベクトルが採用され得る。
[0058]現在のPUのサブPUの各々に関する第1のタイプの動きベクトルを生成した後に、ビデオエンコーダ20は、次いで、サブPUの各々について、ベクトルのそれぞれの第1のタイプによって識別される対応するブロックから、第2のタイプのそれぞれの動きベクトルを生成する。動きベクトルの第2のタイプの様々な例は、以下でさらに詳細に説明される。しかしながら、手短に言えば、いくつかの例では、以下でより詳細に説明されるように、第2のタイプは時間的動きベクトルである。しかしながら、本開示はそのように限定されず、以下でより詳細に説明されるように、様々な他のタイプの動きベクトルも採用され得る。
[0059]ビデオエンコーダ20は、次いで、それぞれのサブPUに関連する生成された動きベクトルを使用して、ARPに従ってPUの各サブPUに対応するCUの各部分を符号化する。
[0060]たとえば、いくつかの例では、ビデオエンコーダ20は、予測ユニット(PU)の2つ以上のサブPUがPUの重複しない部分であるように、コーディングユニット(CU)のPUを、第1のサブPUと第2のサブPUとを含む2つ以上のサブPUに分割する。これらの例のうちのいくつかでは、ビデオエンコーダ20は、第1のサブPUに関する第1のタイプの第1の動きベクトルと、第2のサブPUに関する第1のタイプの第2の動きベクトルとを取得する。また、これらの例のうちのいくつかでは、ビデオエンコーダ20は、第2のタイプが第1のタイプとは異なるように、第1のサブPUに関する第2のタイプの第3の動きベクトルと、第2のサブPUに関する第2のタイプの第4の動きベクトルとを取得する。また、これらの例のうちのいくつかでは、ビデオエンコーダ20は、第1の動きベクトルと第3の動きベクトルとを使用して、高度残差予測(ARP)に従って第1のサブPUに対応するCUの第1の部分を符号化する。また、これらの例のうちのいくつかでは、ビデオエンコーダ20は、第2の動きベクトルと第4の動きベクトルとを使用して、ARPに従って第2のサブPUに対応するCUの第2の部分を符号化する。いくつかの例では、第1の動きベクトルと第2の動きベクトルとは同じであるが、第3の動きベクトルと第4の動きベクトルとは異なる。いくつかの他の例では、第1の動きベクトルと第2の動きベクトルとは異なるが、第3の動きベクトルと第4の動きベクトルとは同じである。いくつかの例では、第1または第2のタイプの動きベクトルは、現在のサブPUではなく他のブロックから導出される。
[0061]上記および以下の様々な説明は、いくつかの動作(actions)のための特定の順序を説明するが、本開示はそのように限定されず、説明される動作のための他の好適な順序が本開示の範囲および趣旨(spirit)内で使用され得る。たとえば、上記で説明されたように、いくつかの例では、ビデオエンコーダは現在のPU中の各サブPUに関する第1のタイプの動きベクトルを生成し、次いで、ビデオエンコーダは、現在のPUの各サブPUに関する第2のタイプの動きベクトルを生成し、ビデオエンコーダは、各それぞれのサブPUに関連する生成された動きベクトルを使用して各サブPUに対応するCUの各部分を符号化する。しかしながら、他の例では、ビデオエンコーダ20は、最初に、現在のPUの第1のサブPUに関する第1のタイプの動きベクトルを生成し、次いで、ビデオエンコーダはPUの第1のサブPUに関する第2のタイプの動きベクトルを生成し、次いで、ビデオエンコーダは、生成された動きベクトルを使用して、ARPに従って第1のサブPUと対応するCUの部分を符号化する。次に、ビデオエンコーダ20は、PUの第2のサブPUについて同様の動作を実施し、以下同様である。
[0062]いくつかの例では、ビデオデコーダ30はPUを2つ以上のPUに分割し、ただし、各サブPUは、CUの重複しない一部分である。次いで、現在のPUの各サブPUについて、ビデオデコーダ30は第1のタイプの動きベクトルを取得する。現在のPUのサブPUの各々に関する第1のタイプの動きベクトルを生成した後に、ビデオデコーダ30は、次いで、サブPUの各々について、第2のタイプのそれぞれの動きベクトルを生成する。いくつかの例では、動きベクトルは、エンコーダ中に前に生成する動きベクトルであり、ビットストリームからそれらを取り出すことによって、デコーダによって取得される。
[0063]ビデオデコーダ30は、次いで、それぞれのサブPUに関連する取得されたベクトルを使用して、ARPに従ってPUの各サブPUに対応するCUの各部分を復号する。CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングに続いて、ビデオエンコーダ20は、CUのTUに関する残差データを計算し得る。PUは、(ピクセル領域とも呼ばれる)空間的領域において予測ピクセルデータを生成する方法またはモードを記述するシンタックスデータを備え得、TUは、変換、たとえば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、および/または概念的に同様の変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャのピクセルと、PUに対応する予測値との間のピクセル差分に対応し得る。ビデオエンコーダ20は、CUに関する残差データを含むTUを形成し、次いで、CUに関する変換係数を生成するためにTUを変換し得る。
[0064]変換係数を生成する任意の変換演算に続いて、ビデオエンコーダ20は、変換係数の量子化を実施し得る。量子化は、一般に、係数を表すために使用されるデータの量をできるだけ低減するために変換係数が量子化され、さらなる圧縮を行うプロセスを指す。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。たとえば、nビット値は、量子化中にmビット値に切り捨てられ得、ここで、nはmよりも大きい。
[0065]量子化の後に、ビデオエンコーダは、変換係数を走査して、量子化変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、アレイの前部に(at the front of the array)より高いエネルギー(したがって、より低い周波数)係数を配置し、アレイの後部に(at the back of the array)より低いエネルギー(したがって、より高い周波数)係数を配置するように設計され得る。いくつかの例では、ビデオエンコーダ20は、量子化変換係数を走査して、エントロピー符号化され得るシリアル化ベクトル(a serialized vector)を生成するために、あらかじめ定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20は適応型走査を実施し得る。量子化変換係数を走査して1次元のベクトルを形成した後、ビデオエンコーダ20は、たとえば、コンテキスト適応型可変長コーディング(CAVLC:context-adaptive variable length coding)、コンテキスト適応型バイナリ算術コーディング(CABAC:context-adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率間隔区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コーディングまたは別のエントロピー符号化の方法に従って、1次元のベクトルをエントロピー符号化し得る。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するための符号化されたビデオデータに関連するシンタックス要素をエントロピー符号化し得る。
[0066]CABACを実施するために、ビデオエンコーダ20は、コンテキストモデル内のコンテキストを、送信されるべきシンボルに割り当て得る。コンテキストは、たとえば、シンボルの隣接する値(neighboring values)が非0であるか否かに関係し得る。CAVLCを実施するために、ビデオエンコーダ20は、送信されるべきシンボルに関する可変長コードを選択し得る。VLC中のコードワードは、比較的より短いコードが優勢シンボル(more probable symbols)に対応し、より長いコードが劣勢シンボル(less probable symbols)に対応するように構成され得る。このようにして、VLCの使用は、たとえば、送信されるべき各シンボルに関する等長コードワードを使用することに勝るビット節約を達成し得る。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
[0067]ビデオエンコーダ20は、ブロックベースのシンタックスデータ、フレームベースのシンタックスデータ、および/またはGOPベースのシンタックスデータなどのシンタックスデータを、たとえば、フレームヘッダ、ブロックヘッダ、スライスヘッダ、またはGOPヘッダ中でビデオデコーダ30にさらに送り得る。GOPシンタックスデータは、それぞれのGOP中のフレームの数を記述し得、フレームシンタックスデータは、対応するフレームを符号化するために使用される符号化/予測モードを示し得る。
[0068]ビデオエンコーダ20およびビデオデコーダ30はそれぞれ、適用可能なとき、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダまたはデコーダ回路のいずれか、あるいはそれらの任意の組合せとして実装され得る。ビデオエンコーダ20およびビデオデコーダ30の各々は1つまたは複数のエンコーダまたはデコーダ中に含まれ得、そのいずれも複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ20および/またはビデオデコーダ30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話などのワイヤレス通信デバイスを備え得る。
[0069]図2は、サブPUレベル高度残差予測のための本明細書で説明する技法を実装または場合によっては利用し得るビデオエンコーダ20の一例を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコーディングおよびインターコーディングを実施し得る。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオにおける空間的冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレームまたはピクチャ内のビデオにおける時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースコーディングモードのいずれかを指すことがある。単方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースコーディングモードのいずれかを指すことがある。
[0070]図2に示されているように、ビデオエンコーダ20は、符号化されるべきビデオフレーム内の現在のビデオブロックを受信する。図2の例では、ビデオエンコーダ20は、モード選択ユニット40と、参照フレームメモリ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、エントロピーコーディングユニット56とを含む。モード選択ユニット40は、次に、動き補償ユニット44と、動き推定ユニット42と、イントラ予測ユニット46と、パーティションユニット48とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを削除するために、ブロック境界をフィルタ処理するための(図2に示されていない)デブロッキングフィルタも含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理することになる。(ループ中またはループ後の(post loop))追加のフィルタもデブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタ処理し得る。
[0071]符号化プロセス中に、ビデオエンコーダ20はコーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間的予測を提供するために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して受信されたビデオブロックのインター予測コーディングを実施する。イントラ予測ユニット46は、代替的に、空間的予測を提供するために、コーディングされるべきブロックと同じフレームまたはスライス中の1つまたは複数の隣接するブロックに対して受信されたビデオブロックのイントラ予測コーディングを実施し得る。ビデオエンコーダ20は、たとえば、ビデオデータの各ブロックについて適切なコーディングモードを選択するために、複数のコーディングパス(multiple coding passes)を実施し得る。
[0072]その上、パーティションユニット48は、前のコーディングパスにおける前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分し得る。たとえば、パーティションユニット48は、初めにフレームまたはスライスをLCUに区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいてLCUの各々をサブCUに区分し得る。モード選択ユニット40は、さらに、サブCUへのLCUの区分を示す4分木データ構造を生成し得る。4分木のリーフノードCUは、1つまたは複数のPUと、1つまたは複数のTUとを含み得る。
[0073]モード選択ユニット40は、たとえば、誤差結果に基づいてコーディングモード、すなわち、イントラまたはインターのうちの1つを選択し、残差ブロックデータを生成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器50に提供し、参照フレームとして使用するための符号化されたブロックを再構成するために、得られたイントラコード化ブロックまたはインターコード化ブロックを加算器62に提供し得る。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、パーティション情報、および他のそのようなシンタックス情報など、シンタックス要素をエントロピーコーディングユニット56に提供する。
[0074]動き推定ユニット42と動き補償ユニット44とは、高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット42によって実施される動き推定は、ビデオブロックに関する動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム(または他のコード化されたユニット)内でコーディングされている現在のブロックに対する参照フレーム(または他のコード化されたユニット)内の予測ブロックに対する現在のビデオフレームまたはピクチャ内のビデオブロックのPUの変位(displacement)を示し得る。予測ブロックは、絶対値差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、または他の差分メトリックによって決定され得るピクセル差分に関して、コーディングされるべきブロックにぴったり一致することがわかるブロックである。いくつかの例では、ビデオエンコーダ20は、参照フレームメモリ64に記憶された参照ピクチャのサブ整数ピクセル位置に関する値を計算し得る。たとえば、ビデオエンコーダ20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間し得る。したがって、動き推定ユニット42は、フルピクセル位置と分数ピクセル位置とに対する動き探索(a motion search)を実施し、分数ピクセル精度で動きベクトルを出力し得る。
[0075]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUに関する動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの参照ピクチャリストの各々は、参照フレームメモリ64に記憶された1つまたは複数の参照ピクチャを識別する。動き推定ユニット42は、計算された動きベクトルをエントロピー符号化ユニット56と動き補償ユニット44とに送る。
[0076]動き補償ユニット44によって実施される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて予測ブロックをフェッチまたは生成することを伴い得る。同じく、動き推定ユニット42および動き補償ユニット44は、いくつかの例では、機能的に統合され得る。現在のビデオブロックのPUに関する動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいてそれを指す予測ブロックの位置を特定し得る。加算器50は、以下で説明されるように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。概して、動き推定ユニット42はルーマ成分に対して動き推定を実施し、動き補償ユニット44は、クロマ成分とルーマ成分の両方について、ルーマ成分に基づいて計算された動きベクトルを使用する。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。
[0077]イントラ予測ユニット46は、上記で説明されたように、動き推定ユニット42と動き補償ユニット44とによって実施されるインター予測の代替として、現在のブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在のブロックを符号化するために使用すべきイントラ予測モードを決定し得る。いくつかの例では、イントラ予測ユニット46は、たとえば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在のブロックを符号化し得、イントラ予測ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。
[0078]たとえば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードに関するレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択し得る。レートひずみ分析は、概して、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または誤差)の量、ならびに符号化されたブロックを生成するために使用されるビットレート(すなわち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックに関する最良のレートひずみ値を呈するかを決定するために、様々な符号化されたブロックのひずみおよびレートから比率を計算し得る。
[0079]ブロックに関するイントラ予測モードを選択した後に、イントラ予測ユニット46は、ブロックに関する選択されたイントラ予測モードを示す情報をエントロピーコーディングユニット56に提供し得る。エントロピーコーディングユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、複数のイントラ予測モードインデックステーブルおよび複数の変更されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックに関する符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および変更されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを送信ビットストリーム中に含め得る。
[0080]ビデオエンコーダ20は、コーディングされている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実施する1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的に同様の変換などの変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、DCTと概念的に同様である他の変換を実施し得る。ウェーブレット変換、整数変換、サブバンド変換または他のタイプの変換も使用され得る。いずれの場合も、変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報をピクセル値領域から周波数領域などの変換領域に変換し得る。変換処理ユニット52は、得られた変換係数を量子化ユニット54に送り得る。量子化ユニット54は、ビットレートをさらに低減するために変換係数を量子化する。量子化プロセスは、係数の一部または全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。いくつかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列の走査を実施し得る。代替的に、エントロピー符号化ユニット56が走査を実施し得る。
[0081]量子化の後に、エントロピーコーディングユニット56は量子化変換係数をエントロピーコーディングする。たとえば、エントロピーコーディングユニット56は、コンテキスト適応型可変長コーディング(CAVLC)、コンテキスト適応型バイナリ算術コーディング(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コーディング(SBAC)、確率間隔区分エントロピー(PIPE)コーディングまたは別のエントロピーコーディング技法を実施し得る。コンテキストベースエントロピーコーディングの場合、コンテキストは隣接するブロックに基づき得る。エントロピーコーディングユニット56によるエントロピーコーディングの後に、符号化されたビットストリームは、別のデバイス(たとえば、ビデオデコーダ30)に送信されるか、あるいは後で送信するかまたは取り出すためにアーカイブされ得る。
[0082]逆量子化ユニット58および逆変換ユニット60は、それぞれ逆量子化および逆変換を適用して、たとえば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを参照フレームメモリ64のフレームのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、動き推定において使用するためのサブ整数ピクセル値を計算するために、再構成された残差ブロックに1つまたは複数の補間フィルタを適用し得る。加算器62は、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償された予測ブロックに加算して、参照フレームメモリ64に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のビデオフレーム中のブロックをインターコーディングするために動き推定ユニット42および動き補償ユニット44によって参照ブロックとして使用され得る。
[0083]図2のビデオエンコーダ20は、本開示で説明される様々な方法を実施するように構成されたビデオエンコーダの一例を表す。たとえば、ビデオエンコーダ20は、以下でより詳細に説明される図4および/または図11の方法など、ビデオデータをコーディングする方法を実施するように構成されたビデオコーダの一例であり得る。
[0084]特に、いくつかの例では、ビデオエンコーダ20のモード選択ユニット20は、符号化モードとパラメータとのどの組合せが最良のレートひずみ特性を生じるかを決定するために様々な反復符号化パスを評価する。CU(またはそれの一部分、たとえば、PUに対応する一部分)に関するこれらのパスのうちの1つは、ARPを使用してCUのコーディングをテストすることを含む。ビデオエンコーダ20は、CUの各PUをサブPUに区分することによって、サブPUレベルでARPを適用する。
[0085]いくつかの例では、ARPがPUについて実施されているとき、ビデオエンコーダ20は現在のPUを2つ以上のサブPUに分割し、ただし、各サブPUは、CUの重複しない一部分である。次いで、各サブPUについて、動き推定ユニット42は、PUのサブPUの各々に関する第1のタイプの動きベクトルを生成する。動きベクトルの第1のタイプの様々な例については、以下でさらに詳細に説明される。しかしながら、手短に言えば、いくつかの例では、以下でより詳細に説明されるように、第1のタイプはディスパリティ動きベクトルである。他の例では、以下でより詳細に説明されるように、第1のタイプはディスパリティベクトルである。しかしながら、本開示はそのように限定されず、以下でより詳細に説明されるように、他のタイプの動きベクトルが採用され得る。
[0086]ビデオエンコーダ20は、次いで、PUのサブPUの各々の第2のタイプの動きベクトルを生成する。動きベクトルの第2のタイプの様々な例は、以下でさらに詳細に説明される。しかしながら、手短に言えば、いくつかの例では、以下でより詳細に説明されるように、第2のタイプは時間的動きベクトルである。しかしながら、本開示はそのように限定されず、以下でより詳細に説明されるように、様々な他のタイプの動きベクトルも採用され得る。
[0087]ビデオエンコーダ20は、次いで、それぞれのサブPUに関連する生成された動きベクトルを使用して、ARPに従ってPUの各サブPUに対応するCUの各部分を符号化する。
[0088]動き補償ユニット44は、ARPを使用して符号化されるPUのサブPUに関する参照ブロックを決定するために、第1の動きベクトルを使用し得る。さらに、動き補償ユニット44は、サブPUに関する対応するブロックを決定するために第2の動きベクトルを使用し、対応するブロックに関する参照ブロックを決定するために、対応するブロックに第1の動きベクトルを適用し得る。動き補償ユニット44は、次いで、対応するブロックと、対応するブロックに関する参照ブロックとの間の差として、サブPUに関する残差予測子を計算し得る。いくつかの例では、残差予測子は、重み付け係数を適用することによって変更され得る。したがって、加算器50は、サブPUに対応するCUの元の部分、すなわち、サブPUに関する参照ブロックと、重み付けされた残差予測子との間の差として、サブPUに関する残差ブロックを計算し得る。この場合も、第1の動きベクトルと第2の動きベクトルとが異なるタイプのベクトルであり得ることに留意されたい。たとえば、第1の動きベクトルは時間的動きベクトルであり得、第2の動きベクトルはディスパリティベクトルまたはディスパリティ動きベクトルであり得る。代替的に、第1の動きベクトルはディスパリティ動きベクトルであり得、第2の動きベクトルは時間的動きベクトルであり得る。
[0089]このようにして、ビデオエンコーダ20は、ビデオデータを記憶するように構成されたメモリと、メモリに結合され、予測ユニット(PU)の2つ以上のサブPUがPUの重複しない部分であるように、コーディングユニット(CU)のPUを、第1のサブPUと第2のサブPUとを含む2つ以上のサブPUに分割することと、第1のサブPUに関する第1のタイプの第1の動きベクトルと、第2のサブPUに関する第1のタイプの第2の動きベクトルとを取得することと、第2のタイプが第1のタイプとは異なるように、第1のサブPUに関する第2のタイプの第3の動きベクトルと、第2のサブPUに関する第2のタイプの第4の動きベクトルとを取得することと、第1の動きベクトルと第3の動きベクトルとを使用して、高度残差予測(ARP)に従って第1のサブPUに対応するCUの第1の部分をコーディングすることと、第2の動きベクトルと第4の動きベクトルとを使用して、ARPに従って第2のサブPUに対応するCUの第2の部分をコーディングすることとを行うように構成された、1つまたは複数のプロセッサとを含むデバイスの一例を表す。
[0090]図3は、ビデオコーディングにおけるサブPUレベル高度残差予測のための技法を実装または場合によっては利用し得るビデオデコーダ30の一例を示すブロック図である。図3の例では、ビデオデコーダ30は、エントロピー復号ユニット70と、動き補償ユニット72と、イントラ予測ユニット74と、逆量子化ユニット76と、逆変換ユニット78と、参照フレームメモリ82と、加算器80とを含む。ビデオデコーダ30は、いくつかの例では、ビデオエンコーダ20(図2)に関して説明された符号化パスとは概して逆の復号パスを実施し得る。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成し得、イントラ予測ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成し得る。
[0091]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化されたビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット70は、量子化された係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと他のシンタックス要素とを動き補償ユニット72に転送する。ビデオデコーダ30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受信し得る。
[0092]ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、イントラ予測ユニット74は、シグナリングされたイントラ予測モードと、現在のフレームまたはピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックに関する予測データを生成し得る。ビデオフレームがインターコード化(すなわち、B、PまたはGPB)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックに関する予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照フレームメモリ82に記憶された参照ピクチャに基づいて、デフォルト構成技法を使用して、参照フレームリスト、すなわち、リスト0とリスト1とを構成し得る。動き補償ユニット72は、動きベクトルと他のシンタックス要素とをパースすること(parsing)によって現在のビデオスライスのビデオブロックに関する予測情報を決定し、復号されている現在のビデオブロックに関する予測ブロックを生成するために、その予測情報を使用する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラまたはインター予測)と、インター予測スライスタイプ(たとえば、Bスライス、Pスライス、またはGPBスライス)と、スライスに関する参照ピクチャリストのうちの1つまたは複数に関する構成情報と、スライスの各インター符号化されたビデオブロックに関する動きベクトルと、スライスの各インターコード化されたビデオブロックに関するインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のいくつかを使用する。
[0093]動き補償ユニット72はまた、補間フィルタに基づいて補間を実施し得る。動き補償ユニット72は、ビデオブロックの符号化中にビデオエンコーダ20によって使用された補間フィルタを使用して、参照ブロックのサブ整数ピクセルに関する補間された値を計算し得る。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオエンコーダ20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
[0094]逆量子化ユニット76は、ビットストリーム中で提供され、エントロピー復号ユニット70によって復号された量子化変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中のビデオブロックごとにビデオデコーダ30によって計算される量子化パラメータQPYの使用を含み得る。
[0095]逆変換ユニット78は、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用して、ピクセル領域において残差ブロックを生成する。
[0096]動き補償ユニット72が、動きベクトルと他のシンタックス要素とに基づいて現在のビデオブロックに関する予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器80は、この加算演算を実施する1つまたは複数の構成要素を表す。所望される場合、ブロッキネスアーティファクトを除去するために、復号されたブロックをフィルタ処理するためにデブロッキングフィルタも適用され得る。(コーディングループ中の、またはコーディングループの後のいずれかの)他のループフィルタも、ピクセル遷移を平滑化するか、または場合によってはビデオ品質を改善するために使用され得る。所与のフレームまたはピクチャにおける復号されたビデオブロックは、次いで、その後の動き補償のために使用される参照ピクチャを記憶する参照ピクチャメモリ82に記憶される。参照フレームメモリ82はまた、図1のディスプレイデバイス32などのディスプレイデバイス上での後の提示のために、復号されたビデオを記憶する。
[0097]いくつかの例では、ARPは各CUについて実施されることも実施されないこともあり、ただし、いくつかの例では、ARPは、ARPが実施されるべきである各CUについてシグナリングされる。(他の例では、ARPは、CUレベル以外のあるレベルにおいてシグナリングされ得る。)ARPがCUについて実施されるとき、それはサブPUレベルで実施される。ビデオデコーダ30が復号している間、それは、ARPがシグナリングされる各CUについてサブPU ARPを実施する。
[0098]いくつかの例では、ARPがそれにおいて実施されることをシグナリングされたCUのPUを復号しながら、ビデオデコーダ30は、PUを2つ以上のPUに分割し、ただし、各サブPUは、CUの重複しない一部分である。次いで、各サブPUについて、ビデオデコーダ30は、PUのサブPUの各々に関する第1のタイプの動きベクトルを取得する。ビデオデコーダ30は、次いで、CUのサブPUの各々の第2のタイプの動きベクトルを取得する。いくつかの例では、動きベクトルは、エンコーダ中に前に生成する動きベクトルであり、ビットストリームからそれらを取り出すことによって、デコーダによって取得される。
[0099]ビデオデコーダ30は、次いで、取得された動きベクトルを使用して、ARPに従ってPUの各サブPUに対応するCUの各部分を復号する。
[0100]このようにして、ビデオデコーダ30は、ビデオデータを記憶するように構成されたメモリと、メモリに結合され、予測ユニット(PU)の2つ以上のサブPUがPUの重複しない部分であるように、コーディングユニット(CU)のPUを、第1のサブPUと第2のサブPUとを含む2つ以上のサブPUに分割することと、第1のサブPUに関する第1のタイプの第1の動きベクトルと、第2のサブPUに関する第1のタイプの第2の動きベクトルとを取得することと、第2のタイプが第1のタイプとは異なるように、第1のサブPUに関する第2のタイプの第3の動きベクトルと、第2のサブPUに関する第2のタイプの第4の動きベクトルとを取得することと、第1の動きベクトルと第3の動きベクトルとを使用して、高度残差予測(ARP)に従って第1のサブPUに対応するCUの第1の部分をコーディングすることと、第2の動きベクトルと第4の動きベクトルとを使用して、ARPに従って第2のサブPUに対応するCUの第2の部分をコーディングすることとを行うように構成された、1つまたは複数のプロセッサとを含むデバイスの一例を表す。
[0101]図4は、ビデオデータをコーディングするための例示的なプロセス(470)を示す流れ図である。いくつかの例では、図4のプロセスにおいて実施される動作は、ビデオエンコーダ20またはビデオデコーダ30などのビデオコーダによって実施され得るが、他のビデオコーディングデバイスが、図4のプロセスを実施するように構成され得る。
[0102]開始ブロックの後に、ビデオコーダは、予測ユニット(PU)の2つ以上のサブPUがPUの重複しない部分であるように、コーディングユニットのPUを、第1のサブPUと第2のサブPUとを含む2つ以上のサブPUに分割する(471)。
[0103]ブロック471において、PUは、異なる例において様々な異なる方法で2つ以上のサブPUに分割され得る。いくつかの例では、PUは、2つの等しいサイズのサブPUに分割され得、ただし、各サブPUはPUの別個の半分(a separate half)である。いくつかの例では、PUは、4つの等しいサイズの正方形サブPUに分割され得、ただし、各サブPUはPUの別個の1/4である。いくつかの例では、サブPUは、それぞれ、サイズが少なくとも8ピクセル×少なくとも8ピクセルである。しかしながら、本開示はそのように限定されず、互いに対して等しいサイズのサブPU、互いに対して等しくないサイズのサブPU、正方形形状のサブPU、長方形形状のサブPU、正方形または長方形以外の形状を有するPUなどを含む、2つ以上のサブPUへのPUの様々な他の分割が採用され得る。
[0104]ビデオコーダは、第1のサブPUに関する第1のタイプの第1の動きベクトルを取得し、第1のタイプの第2の動きベクトルは第2のサブPUに関するものである(472)。
[0105]ブロック472において、第1のサブPUについて第1のタイプの第1の動きベクトルが取得され、第2のサブPUについて第1のタイプの第2の動きベクトルが取得される。第1の動きベクトルと第2の動きベクトルとの様々な例は、以下でさらに詳細に説明される。しかしながら、手短に言えば、いくつかの例では、以下でより詳細に説明されるように、第1のタイプはディスパリティ動きベクトルである。他の例では、以下でより詳細に説明されるように、第1のタイプはディスパリティベクトルである。しかしながら、本開示はそのように限定されず、以下でより詳細に説明されるように、他のタイプの動きベクトルが採用され得る。いくつかの例では、各サブPUについて、第1のタイプの同じ動きベクトルが取得される。すなわち、第1の動きベクトルと第2の動きベクトルとは、同じ動きベクトルを備え得る。
[0106]ビデオコーダは、第2のタイプが第1のタイプとは異なるように、第1のサブPUについて取得される第2のタイプの第3の動きベクトルを取得し、第2のサブPUについて決定される第2のタイプの第4の動きベクトルを取得する(474)。
[0107]ブロック474において、第1のサブPUついて第2のタイプの第3の動きベクトルが取得され、第2のサブPUについて第2のタイプの第4の動きベクトルが取得される。第3の動きベクトルと第4の動きベクトルとの様々な例は、以下でさらに詳細に説明される。しかしながら、手短に言えば、いくつかの例では、以下でより詳細に説明されるように、第2のタイプは時間的動きベクトルである。しかしながら、本開示はそのように限定されず、以下でより詳細に説明されるように、様々な他のタイプの動きベクトルも採用され得る。
[0108]ビデオコーダは、次いで、第1の動きベクトルと第3の動きベクトルとを使用して、高度残差予測(ARP)に従ってコーディングされる第1のサブPUに対応するCUの第1の部分をコーディングする(491)。ビデオコーダは、次いで、第2の動きベクトルと第4の動きベクトルとを使用して、ARPに従ってコーディングされる第2のサブPUに対応するCUの第2の部分をコーディングする(492)。プロセスは、次いで、他の処理が再開されるリターンブロックに進む。
[0109]図4のプロセスのいくつかの例は符号化プロセスである。これらの例のうちのいくつかでは、ブロック472および474において、動きベクトルは、以下でより詳細に説明されるように、動きベクトルを導出および/または生成することによって取得され、ブロック491および492において、CUの部分は、CUの部分を符号化することによってコーディングされる。図4のプロセスの他の例は復号プロセスである。これらの例のうちのいくつかでは、ブロック472および474において、動きベクトルは、ビットストリームからそれらを取り出すことによって取得され、ブロック491において、CUの部分は、CUの部分を復号することによってコーディングされる。しかしながら、本開示はそのように限定されず、様々な他の例も採用され得る。
[0110]図5は、例示的なMVC予測パターンを示す概念図である。MVCにおけるビュー間予測(inter-view prediction)は本明細書で説明され、それは、本明細書では、本開示に従って、ARPとともにサブPUレベルで実施される。図5に、マルチビュービデオコーディングのための(各ビュー内のピクチャ間予測とビュー間予測の両方を含む)例示的なMVC予測構造が示され、ここで、予測は矢印によって示され、矢印の終点のオブジェクトは予測参照のために矢印の始点のオブジェクトを使用する。
[0111]MVCでは、ビュー間の相関を削除するために、同じアクセスユニットの(すなわち、同じ時間インスタンスをもつ)異なるビュー中でキャプチャされたピクチャの間でビュー間予測が実施される。ビュー間予測を用いてコーディングされたピクチャは、他の非ベースビューのビュー間予測用の参照ピクチャリスト中に追加され得る。
[0112]ビュー間予測参照ピクチャは、インター予測参照ピクチャと同様の方法で、参照ピクチャリストの任意の位置に置かれ得る。
[0113]マルチビュービデオコーディングのコンテキストでは、2種類の動きベクトルがある。一方は時間的参照ピクチャを指す通常の動きベクトル(a normal motion vector)であり、対応する時間的インター予測は動き補償された予測(MCP)である。他方は、異なるビュー中のピクチャ(すなわち、ビュー間参照ピクチャ)を指すディスパリティ動きベクトル(DMV:disparity motion vector)であり、対応するインター予測はディスパリティ補償された予測(DCP:disparity-compensated prediction)である。
[0114]HEVCベース3Dビデオコーディング規格が説明される。現在、VCEGおよびMPEGの3Dビデオコーディングにおけるジョイントコラボレーションチーム(JCT−3C)は、HEVCに基づく3次元ビデオ(3DV)規格を開発中であり、それのために、規格化の取り組みの一部は、HEVCに基づくマルチビュービデオコーデック(MV−HEVC)と、HEVCに基づく3Dビデオコーディング(3D−HEVC)のための別の部分との規格化を含む。3D−HEVCでは、コーディングユニット/予測ユニットレベルにおけるコーディングツールを含む新たなコーディングツールが、テクスチャビューと深度ビューの両方について含められ、サポートされ得る。3D−HEVCのための最新のソフトウェア3D−HTMが以下のリンクからダウンロードされ得る。
[0115][3D−HTM version 7.0]:
https://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/tags/HTM-7.0/
[0116]以下のような最新の参照ソフトウェア記述ならびに3D−HEVCのワーキングドラフトが利用可能になる。
[0117]Gerhard Tech、Krzysztof Wenger、Ying Chen、Sehoon Yea、「3D-HEVC Test Model 4」、JCT3V−D1005_spec_v1、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発におけるジョイントコラボレーティブチーム、第4回会議、Incheon、KR、2013年4月20〜26日。それは、以下のリンクからダウンロードされ得る。
[0118]http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/4_Incheon/wg11/JCT3V-D1005-v1.zip
[0119]隣接するブロックベースディスパリティベクトル導出(NBDV:neighboring block based disparity vector derivation)は、本明細書で説明される。NBDVは、すべてのビューについてテクスチャファーストコーディング順序を使用する、3D−HEVCにおけるディスパリティベクトル導出方法のために使用される。現在の3D−HEVCの設計では、NBDVから導出されたディスパリティベクトルは、参照ビューの深度マップから深度データを取り出すことによって、さらに改良され得る。
[0120]NBDV概観が説明される。ディスパリティベクトル(DV)は、2つのビュー間の変位の推定量のために使用される。隣接するブロックが、ビデオコーディングにおいてほとんど同じ動き/ディスパリティ情報を共有するので、現在のブロックは、良好な予測子として、隣接するブロック中の動きベクトル情報を使用することができる。この考えに従って、NBDVは、異なるビュー中のディスパリティベクトルを推定するために、隣接するディスパリティ情報を使用する。
[0121]いくつかの空間的に隣接するブロックおよび時間的に隣接するブロックは、最初に定義される。定義された空間的に隣接するブロックおよび/または時間的に隣接するブロックの各々は、次いで、現在のブロックと候補ブロックとの間の相関の優先度によって決定された、あらかじめ定義された順序で検査される。ディスパリティ動きベクトル(たとえば、ビュー間参照ピクチャを指す動きベクトル)が候補中で発見されると、ディスパリティ動きベクトルがディスパリティベクトルに変換され、関連するビュー順序インデックスも返される。隣接するブロックの2つのセットが利用される。一方のセットは、空間的に隣接するブロックからのものであり、他方のセットは、時間的に隣接するブロックからのものである。
[0122]3D−HEVCにおけるNBDVが説明される。3D−HEVCは、JCT3V−A0097において提案された隣接するブロック(ベース)ディスパリティベクトル(NBDV)方法を第1に採用した。暗黙的ディスパリティベクトル(implicit disparity vector)が、JCTVC−A0126中に簡略化されたNBDVとともに含まれた。さらに、JCT3V−B0047では、NBDVは、復号されたピクチャバッファに記憶された暗黙的ディスパリティベクトルを除去することによってさらに簡略化されるが、また、RAPピクチャ選択を用いてコーディング利得を改善した。
[0123]JCT3V−A0097:3D-CE5.h: Disparity vector generation results、L.Zhang、Y.Chen、M.Karczewicz(Qualcomm)。
[0124]JCT3V−A0126:3D-CE5.h: Simplification of disparity vector derivation for HEVC-based 3D video coding、J.Sung、M.Koo、S.Yea(LG)。
[0125]JCT3V−B0047:3D-CE5.h related: Improvements for disparity vector derivation、J.Kang、Y.Chen、L.Zhang、M.Karczewicz(Qualcomm)。
[0126]JCT3V−D0181:CE2: CU-based Disparity Vector Derivation in 3D-HEVC、J.Kang、Y.Chen、L.Zhang、M.Karczewicz(Qualcomm)。
[0127]本開示の技法によれば、ARPを使用して、いくつかのピクチャのブロックがコーディングされ得る。より詳細には、これらの技法によれば、ブロックのPUがサブPUに分割され、ARPを使用してコーディングされ得る。たとえば、PU(たとえば、時間T2におけるビューS1中のBピクチャのPU)のディスパリティ動きベクトルは、時間T2においてビューS2のBピクチャ中のビュー間参照ブロックを指すことがある。参照ブロックは2つ以上のブロックと重複し得、各々はそれ自体の別個の動き/ディスパリティ情報をもつ。たとえば、ビュー間参照ブロックの第1の部分は、時間T4においてビューS2のBピクチャの時間的参照ブロックを識別する時間的動きベクトルを有し得、ビュー間参照ブロックの第2の部分は、時間T4においてビューS2のBピクチャの異なる時間的参照ブロックを識別する時間的動きベクトルを有し得る。ビュー間参照ブロックに関する時間的参照ブロックを識別するために、これらの2つの時間的動きベクトルのうちの1つのみを使用するのではなく、ビデオコーダ(たとえば、ビデオエンコーダ20またはビデオデコーダ30)は、ARPに従ってビュー間参照ブロックからの動き/ディスパリティ情報の両方のセットを使用して、PUを2つのサブPUとしてコーディングし得る。
[0128]図6は、NBDVによる、コーディングユニット(CU)に対する例示的な空間的ネイバーを示す概念図である。NBDVの一例では、5つの空間的に隣接するブロックは、ディスパリティベクトル導出のために使用され、それは、本開示によれば、ARPとともにサブPUレベルで符号化および復号する際に実施され得る。5つの空間的に隣接するブロックは、図6に示されているように、A0、A1、B0、B1およびB2によって示されているような、現在の予測ユニット(PU)をカバーするコーディングユニット(CU)の左下ブロック、左ブロック、右上ブロック、上ブロック、および左上ブロックである。それらは、HEVCにおけるMERGE/AMVPモードにおいて使用されたものと同じであることに留意されたい。したがって、追加のメモリアクセスが必要とされない。
[0129]時間的に隣接するブロックを検査するために、候補ピクチャリストの構成プロセスが最初に実施される。現在のビューから2つまでの参照ピクチャが、候補ピクチャとして扱われ得る。コロケートされた参照ピクチャが最初に候補ピクチャリスト中に挿入され、候補ピクチャの残りが参照インデックスの昇順に続く。両方の参照ピクチャリスト中で同じ参照インデックスをもつ参照ピクチャが利用可能であるとき、コロケートされたピクチャの同じ参照ピクチャリスト中の参照ピクチャが、他の参照ピクチャに先行する。候補ピクチャリスト中の候補ピクチャごとに、時間的に隣接するブロックを導出するために3つの候補領域が決定される。
[0130]ブロックがビュー間動き予測でコーディングされるとき、異なるビュー中の対応するブロックを選択するために、ディスパリティベクトルが導出される。暗黙的ディスパリティベクトル(IDV、または別名導出されたディスパリティベクトル)は、ビュー間動き予測において導出されたディスパリティベクトルと呼ばれる。ブロックが動き予測でコーディングされても、導出されたディスパリティベクトルは、後続のブロックをコーディングする目的のために破棄されない。
[0131]3D−HTM7.0の現在の設計では、NBDVプロセスは、時間的に隣接するブロック中のディスパリティ動きベクトルと、空間的に隣接するブロック中のディスパリティ動きベクトルと、次いでIDVとを、順に検査する。ディスパリティ動きベクトルまたはIDVが発見されると、プロセスは終了する。
[0132]深度情報にアクセスすることを伴うNBDV(NBDV−R)の改良が説明される。1つのディスパリティベクトルがNBDVプロセスから導出されるとき、それは、参照ビューの深度マップから深度データを取り出すことによってさらに改良される。改良プロセスは、以下の2つのステップを含む。
a)ベースビューなど、前にコーディングされた参照深度ビュー中の導出されたディスパリティベクトルによって、対応する深度ブロックの位置を特定し、対応する深度ブロックのサイズは、現在のPUのサイズと同じである。
b)対応する深度ブロックの4つのコーナーピクセルから1つの深度値を選択し、それを、改良されたディスパリティベクトルの水平成分に変換する。ディスパリティベクトルの垂直成分は不変である。
[0133]改良されたディスパリティベクトルはビュー間動き予測のために使用されるが、改良されていないディスパリティベクトルはビュー間残差予測のために使用される。
[0134]高度残差予測(ARP)は本明細書で説明される。Part_2N×2N(簡単のために2N×2N)に等しいパーティションモードをもつCUに適用される高度残差予測(ARP)は、JCT3V−D0177において提案されたように、第4回JCT3V会議において採用された。
[0135]図7は、本開示の態様によれば、サブPUレベルで実施される、高度残差予測(ARP)の例示的な予測構造を示す概念図である。図7に関連して説明される各ブロックはサブPUブロックである。各PUは2つ以上のサブPUに分割され、ただし、各サブPUは、PUの重複しない一部分である。図7は、採用される予測構造を示す。図7に示されているように、現在のブロックの予測のプロセス中に、以下のブロック、「Curr」、「Base」、「CurrTRef」、および「BaseTRef」が使用される。
[0136]Currは、現在コーディングされているブロックである。Baseは、現在のブロックのピクチャとは異なるビューであるが、参照ブロックと同じ時間にあるピクチャ中の参照ブロックである。Baseが中にあるピクチャは参照ビューまたはベースビューと呼ばれ、Currが中にあるピクチャは現在のビューと呼ばれる。以下でより詳細に説明されるように、Baseはディスパリティベクトル(DV)によってCurrから導出される。CurrとBaseとの間の関係は図7に示されている。
[0137]たとえば、現在のビューおよび参照/ベースビューは、同時の、左眼のためのビューおよび右眼のためのビューなどの異なるビューであり得る。しかしながら、様々な例では、ビューは、様々な異なる方法で異なり得る。いくつかの例では、上記で説明された異なるビューはベース深度ビューである。他の例では、異なるビューは非ベース深度ビューである。
[0138]CurrTRefは、ブロックCurrが中にある同じビュー中にあるが異なる時間におけるブロックである。CurrTRefは、動き補償を使用してCurrの時間的動きベクトル(TMV:temporal motion vector)によってCurrから導出される。CurrTRefは、Currに対する動き補償されたブロックである。CurrとCurrTRefとの間の関係は図7に示されている。
[0139]BaseTRefは、ブロックBaseと同じビュー中にあり、CurrTRefと同じ時間のブロックである。BaseTRefはCurrの時間的動きベクトル(TMV)によってBaseから導出される。BaseTRefは、Currの位置からTMV+DVのベクトルを用いて識別される。BaseTRefは、Baseに対する動き補償されたブロックである。Curr、Base、およびCurrTRefとのBaseTRefの関係は図7に示されている。
[0140]符号化中に、TMV、DV、残差予測子、および重み付け係数wは、以下でより詳細に説明されるように、計算され、ビットストリーム中で符号化される。復号中に、ビットストリームからTMVと、DVと、残差予測子とwとを取り出すことと、最終予測子(final predictor)を計算するために取り出された情報を使用することとによって、Currの最終予測子が計算している。
[0141]符号化中に、残差予測子はBaseTRef−Baseとして計算され、ただし、この減算演算は、ピクセルアレイBaseTRefおよびBaseの各ピクセルに適用されるピクセルごとの減算(a pixel-wise subtraction)である。さらに、符号化中に、重み付け係数wは計算され、ただし、復号中に最終予測子を計算している間、重み付け係数は残差予測子を乗算される。したがって、復号中に計算される現在のブロックの最終予測子はCurrTRef+w*(BaseTRef−Base)によって与えられる。
[0142]いくつかの例では、3つの重み付け係数、すなわち、0、0.5および1がARPにおいて使用される。いくつかの例では、現在のCUに関する最小レートひずみコストにつながる、9.0.5および1の中からの重み付け係数は最終重み付け係数として選択され、(いくつかの例では、それぞれ、重み付け係数0、1、および0.5に対応する0、1および2としてコーディングされる)対応する重み付け係数インデックスは、CUレベルでビットストリーム中で送信される。いくつかの例では、1つのCU中のすべてのPU予測は同じ重み付け係数を共有する。重み付け係数が0に等しいとき、ARPは現在のCUのために使用されない。
[0143]上記の説明および図7は、単方向予測が適用される例に適用される。他の例では、双方向予測が適用される。これらの例では、上記で説明されたステップは各参照ピクチャリストについて適用される。現在のブロックが1つの参照ピクチャリストに関する(異なるビュー中の)ビュー間参照ピクチャを使用するとき、残差予測プロセスは無効化される。
[0144]図8は、現在のブロックと参照ブロックと動き補償されたブロックとの間の関係を示す概念図であり、ただし、各ブロックはサブPUブロックである。サブPUブロックを用いたARPの復号プロセスは、以下のように説明される。
[0145]第1に、ディスパリティベクトル(DV)が取得され、ただし、DVはターゲット参照ビュー(V0)を指す。現在のブロックCurrは現在のビュー(Vm)中にあるが、参照ビュー(V0)はVmとは異なるビューである。いくつかの例では、DVは、現在の3D−HEVCにおいて指定されているように導出され得る。次いで、同じアクセスユニット内の参照ビューのピクチャ中で、対応するブロックBaseがディスパリティベクトルを使用して位置を特定される。現在のブロックのロケーションに追加されるDVは参照ビュー(V0)中のBaseのロケーションを与える。ブロックBaseのピクチャは参照ビューV0を有するが、現在のブロックのピクチャと同じPOC(ピクチャ順序カウント(Picture Order Count))値を有するところにあり、これは、ブロックBaseのピクチャがブロックBaseと同時にあることを意味する。
[0146]次に、BaseTRefが位置を特定される。現在のブロックのロケーションに加算されるTMV+DVは、BaseTRefを含むピクチャ中のBaseTRefのロケーションを与える。現在のブロックと、対応するブロックと、動き補償されたブロックとの間の関係が図8に示されている。ビューVmの参照ピクチャと同じPOC値を有するビューV0中の参照ピクチャは、対応するブロックの参照ピクチャとして選択される。
[0147]重み付けされたファクタおよび残差ブロックはビットストリームから取り出され得る。重み付け係数(w)は、重み付けされた残差ブロックを得るために残差ブロック(BaseTRef−Base)に適用され、重み付けされた残差ブロックの値は、予測されたサンプルに加算される。すなわち、上記で説明されたように、最終予測子はCurrTRef+w*(BaseTRef−Base)のように計算される。
[0148]動きベクトルスケーリングを介した参照ピクチャ選択の一例は以下のように実施され得る。いくつかの例では、参照ビューとは異なるピクチャが、対応するブロックの動き補償されたブロック(たとえば、図7に示されたBaseTRef)を生成するためにアクセスされる必要があり得る。いくつかの例では、現在のサブPUの復号された動きベクトルは、重み付け係数が0に等しくないとき、上記で説明されたプロセスにおいてTMVを適用する前に、固定されたピクチャ(a fixed picture)の方へスケーリングされる。JCT3V−D0177では、固定されたピクチャは、それが同じビューからのものである場合、各参照ピクチャリストの第1の参照ピクチャとして定義される。いくつかの例では、復号された動きベクトルが固定されたピクチャを指さないとき、復号された動きベクトルは、最初にスケーリングされ、次いでCurrTRefおよびBaseTRefを識別するために使用される。ARPのために使用されるそのような参照ピクチャはターゲットARP参照ピクチャと呼ばれることがある。
[0149]いくつかの例では、動き補償は補間フィルタ処理を使用し得る。いくつかの例では、双線形フィルタは補間プロセス中に適用される。いくつかの例では、従来の8/4タップフィルタが補間プロセス中に適用され得る。
[0150]いくつかの例では、参照ビューは、NBDVプロセスから返されるビュー順序インデックスによって識別される。いくつかの例では、1つの参照ピクチャリスト中の1つのPUの参照ピクチャが現在のビューとは異なるビューからのものであるとき、ARPはこの参照ピクチャリストについて無効化される。
[0151]いくつかの例では、上記で説明された例におけるディスパリティベクトル(DV)の代わりにディスパリティ動きベクトル(DMV)が使用され得る。たとえば、DMVは、上記で説明されたBaseとBaseTRefとの導出のためにDVの代わりに使用され得る。
[0152]いくつかの例では、ビュー間残差に関するARPは以下のように実施される。現在のサブPUがビュー間参照ピクチャを使用するとき、ビュー間残差の予測が可能にされる。ビュー間残差に関するARPが実施されるとき、異なるアクセスユニット内のビュー間残差が計算され、次いで、計算された残差情報が、現在のサブPUブロックのビュー間残差を予測するために使用される。
[0153]図9は、ビュー間残差に関するARPを示す概念図である。参照ブロックBaseは、現在のブロックのディスパリティ動きベクトル(DMV)によって位置を特定される参照/ベースビュー中のブロックである。ブロックCurrTRefは、現在のブロックと同じビューをもつが異なるPOCをもつピクチャ中のブロックであり、現在のブロックからのTMVのベクトルを用いて位置を特定される。ブロックBaseTRefは、Baseと同じビュー、およびBaseTRefと同じPOCをもつピクチャ中にあり、現在のブロックからのmvLX+DMVのベクトルを用いて識別される。
[0154]現在のサブPUの残差信号の残差予測子はCurrTRef−BaseTRefとして計算され得、ただし、減算はピクセルごとの減算を示す。
[0155]時間的残差予測のためのARPの現在の設計と同様に、3つの相対的ブロックを生成するために双線形フィルタが使用され得る。
[0156]また、Baseによって含まれている時間的動きベクトルが、現在のサブPUの第1の利用可能な時間的参照ピクチャの異なるアクセスユニット中にある参照ピクチャを指すとき、いくつかの例では、それは、最初に、第1の利用可能な時間的参照ピクチャにスケーリングされ、スケーリングされた動きベクトルは、異なるアクセスユニット中の2つのブロックの位置を特定するために使用される。
[0157]図9は、ビュー間予測された動きベクトル候補の導出プロセスの一例を示す。
[0158]いくつかの例では、IC(照明補償(Illumination Compensation))とARP重み付け係数シグナリングとの同時最適化は、以下のように実施され得る。
[0159]ICの使用は、フラグ、すなわち、コーディングユニット(CU)レベルでシグナリングされ得るic_flagによって示され得るが、ARP重み付け係数も、シグナリングされるときにCUレベルにある。いくつかの例では、ic_flagのシグナリングは、ic_flagの不要なシグナリングオーバーヘッドを回避するために、ARP重み付け係数が0に等しくないときスキップされる。
[0160]いくつかの例では、ARPがビュー間残差について使用されるとき、またはディスパリティ動きベクトル(DMV)がDVの代わりに使用されるとき、現在のPUの参照ブロックの中心位置をカバーするブロック(CR)は、1つの時間的/ディスパリティ動きベクトルを取得するために使用される。しかしながら、CRの動き情報は利用不可能であり得る。いくつかの例では、CRの動き情報が利用不可能であるとき、ビュー間残差に関するARPは無効にされ、時間的残差に関するARPは、依然としてNBDVプロセスからDVを使用する。いくつかの例では、CRの動き情報が利用不可能であるとき、もう1つのブロックが検査される。いくつかの例では、追加のブロックは、時間的マージング候補(temporal merging candidate)、すなわち、参照ブロックの右下位置をカバーするPU(BR)と同様の方法で定義される。いくつかの例では、CRおよびBRは、順序が正しく検査され、(時間的またはディスパリティの所望のタイプをもつ)動きベクトルがCR中に見つけられないとき、BRブロックに関連する動き情報が使用される。
[0161]追加のブロックを検査することのいくつかの例は、以下のように説明される。これらの例では、サンプルは以下のように定義され得る。現在のPUの左上サンプルは(x,y)として定義され、現在のPUのサイズはW×Hとして定義され、現在のPUの時間的/ディスパリティ動きベクトルは(mv[0],mv[1])として定義され、参照ブロックの中心位置は(xRefPU,yRefPU)として定義され、ただし、xRefPU=x+W/2+((mv[0]+2)>>2)、およびyRefPU=y+H/2+((mv[1]+2)>>2)であり、参照ブロックの右下の位置は(xRefPU,yRefPU)として定義され、ただし、xRefPU=x+W+((mv[0]+2)>>2)およびyRefPU=y+H+((mv[1]+2)>>2)である。
[0162]図10は、各PUが4つの等しいサイズの正方形形状のサブPUに分割されたビュー間残差に関する例示的なサブPUベースのARPを示す概念図である。本開示によれば、PUは、異なる例では様々な異なる方法で2つ以上のサブPUに分割され得るので、この例は、単に例として図示および説明される。また、図10に、PUの1つのサブPUについて実施されているARPを示し、ARPがそのために実施されているサブPUに関する対応するベクトルを示す。図10には示されていないが、各他のサブPUは、ARPがサブPUについて実施される間使用するために動きベクトルのそれ自体のセットを有する。
[0163]時間的予測残差とビュー間予測残差のいずれかまたは両方についてARPを実施することによって、ディスパリティ動きベクトルまたは時間的動きベクトルのより微細なグラニュラリティ(finer granularity)が、コーディングユニット中の現在の予測ユニット(PU)の複数のブロックについて維持され得る。動きベクトルのより微細なグラニュラリティは、現在のPU内の各ブロックがそれ自体のBaseとCurrTRefとBaseTRefとを識別することを可能にし得る。いくつかの例では、および現在のPUの各ブロックについて別個の残差が生成される。
[0164]いくつかの例では、ARPは全コーディングユニット(CU)ついてシグナリングされ、ARPがCUについて適用されるべきか否かを示し得る。ARPがそのためにシグナリングされるCUをコーディングするとき、CUはPUに分割され、各PUはサブPUに分割される。たとえば、サブPUレベルARPがビュー間残差に適用されるとき、現在のPU(たとえば、図10中のCurr)はいくつかのサブPUに分割される。各所与の(i番目の)サブPUについて、参照ビュー(たとえば、図10中のBasei)の同じアクセスユニット中のサブPUの同じサイズをもつ参照ブロックは、現在のPUのディスパリティ動きベクトル(すなわち、図10中のDMV)によって識別される。対応する参照ブロックが1つの時間的動きベクトルを含んでいる場合、それは、異なるアクセスユニット中の2つのブロック(たとえば、CurrTRefiおよびBaseTRefi)の位置を特定するために使用され、これらの2つのブロックは、上記でより詳細に説明されたように残差予測子を生成するために使用される。2つのブロックは、BaseiとDMVとの時間的動き情報によって識別される。
[0165]いくつかの例では、Baseiの1つの所与の位置(たとえば、中心位置)を含んでいる予測ユニットに関連する時間的動きベクトルのみが考慮される。いくつかの例では、Baseiの複数の位置(たとえば、中心および右下)を含んでいる予測ユニットは順序が正しく検査され、時間的動きベクトルが発見されると、検査プロセスは終了する。
[0166]他の例では、PUレベルの代表的な時間的動き情報が最初に発見され、利用可能な場合、デフォルト動き情報と見なされる。Baseiに関連する1つまたは複数の所与の位置が利用可能な時間的動き情報に導かないとき、代表的な時間的動き情報はBaseiに割り当てられる。
[0167]他の例では、時間的動きベクトルが発見されない場合、デフォルト動き情報が適用される。いくつかの例では、デフォルト動き情報は、現在のディスパリティ動きベクトルによって識別される現在のPUの参照ブロックによって含まれている時間的動き情報として定義され、ただし、参照ブロックは、現在のPUと同じサイズを有する。いくつかの例では、デフォルト動き情報は0値動きベクトルとして定義され、現在の参照ピクチャリスト中の最小インデックスをもつ時間的参照ピクチャのインデックスとして定義される。
[0168]ビュー間残差に適用されているサブPUレベルARPのいくつかの例では、(DMVによって識別されるように)現在のPUの対応する領域の動き情報は、領域内のすべてのブロックの動き情報がアクセスされるように一度アクセスされ得る。
[0169]サブPUレベルARPが時間的残差に適用されるとき、現在のPUはいくつかのサブPUに分割される。所与のサブPUについて、現在のビューの異なるアクセスユニット中のサブPUの同じサイズをもつ参照ブロックは、現在のPUの同じ時間的動きベクトルによって識別される。サブPUの対応する参照ブロックが1つのディスパリティ動きベクトルを含んでいる場合、ディスパリティ動きベクトルは、NBDVプロセスからディスパリティベクトルを改良し、参照ビュー中の2つのブロック(BaseおよびBaseTRef)を識別するために使用される。場合によっては、(たとえば、NBDVを利用することによって導出される)ディスパリティベクトルはデフォルトベクトルと見なされ、参照ビュー中の2つのブロックを識別するために使用される。参照ビュー中の2つのブロックは、残差予測子を生成するために使用される。
[0170]いくつかの例では、1つまたは複数のサブPUのサイズは8×8ピクセルに等しくなり得る。いくつかの例では、1つまたは複数のサブPUのサイズは、たとえば、非限定的な例、8×16、16×8、または16×16ピクセルのように、8×8ピクセルよりも大きくなり得る。いくつかの例では、1つまたは複数のサブPUのサイズは現在のPUまたは現在のCUのサイズに依存し得る。いくつかの例では、1つまたは複数のサブPUのサイズはPUよりも大きくない。たとえば、所与の例示的な設計である場合、サブPUサイズは16×16であるが、PUサイズはちょうど8×16であり、この場合、サブPUレベルARPが適用されるとき、特定のPUについて、最小処理サイズを16×16と見なすのではなく、このPUに関する最小処理サイズは依然として8×16である。
[0171]必要とされるサブPU(サブCU)サイズが(K×L)であり、PUサイズが(M,N)である一例では、所与のPU内の実際の処理サイズは(min(K,M)×min(L,N))である。
[0172]いくつかの例では、サブPUのサイズは、ビデオパラメータセット(VPS)、シーケンスパラメータセット(SPS)、ピクチャパラメータセット(PPS)またはスライスヘッダ中でシグナリングされ得る。
[0173]いくつかの例では、Nが自然数である2N×2Nのパーティションサイズが説明されるが、他の例では、2N×2N以外のパーティションサイズが採用され得る。他の例では、PUの幅および高さが両方とも8ピクセルに等しいかまたはそれよりも大きいときのみ、ARPは適用される。
[0174]図11は、ビデオデータを符号化するための例示的なプロセス(1170)を示す流れ図である。いくつかの例では、図11のプロセスは、ビデオエンコーダ20などのエンコーダによって実施され得る。開始ブロックの後に、エンコーダは、予測ユニット(PU)の2つ以上のサブPUがPUの重複しない部分であるように、コーディングユニット(CU)のPUを、第1のサブPUと第2のサブPUとを含む2つ以上のサブPUに分割する(1171)。PUが2つ以上のサブPUに分割されることが述べられるとき、概念上の分割への言及が行われており、したがって、PU全体に対してすべての動作を実施することとは対照的に、後続の動作は各別個のサブPUに別々に実施され得る。
[0175]エンコーダは、次いで、PUの各サブPUに関するディスパリティ動きベクトル(DMV)またはディスパリティベクトル(DV)を生成する(1172)。DVまたはDMVを生成するために採用されるプロセスは、従来の動き補償において時間的動きベクトルを生成するためのプロセスと、たとえ異なっていても(albeit different)、同様であり得る。しかしながら、それは、ある時間におけるピクチャと別の時間におけるピクチャとの間でブロックが移動したところを証明するベクトルを生成することではなく、DMVまたはDVが、同時に2つの異なるビュー間のブロックの位置の変化を示し、したがって、経時的な動き(motion over time)ではなく異なるビュー中のブロックの位置のディスパリティを示すという点で異なる。また、ブロック1172において使用されるプロセスは、ブロックがサブPUブロックであるという点で、従来の動き補償とは異なる。
[0176]エンコーダは、次いで、PUの各サブPUについて生成される時間的動きベクトル(TMV)を生成する(1174)。時間的動きベクトルは動き補償技法を介して生成され得る。
[0177]エンコーダは、次いで、PUの各サブPUに関する残差予測子を生成する(1176)。残差予測子はBaseTRef−Baseとして示され、ここにおいて、減算演算はBaseTRefとBaseとの間のピクセルごとの減算演算である。「Base」は、現在のブロックと比較して、DV(またはディスパリティベクトルではなく、ディスパリティ動きベクトルが使用される場合にはDMV)のベクトルを用いて識別される対応するブロックを指し、「BaseTRef」は、現在のブロックと比較して、DV+TMV(またはディスパリティベクトルではなく、ディスパリティ動きベクトルが使用される場合にはDMV+TMV)のベクトルを用いて識別される対応するブロックを指す。
[0178]エンコーダは、次いで、PUの各サブPUについて生成される重み付け係数を生成する(1177)。いくつかの例では、重み付け係数は0、0.5、または1のいずれかであり、重み付け係数は、可能な重み付け係数または0、0.5、または1のうちのどれが最低レートひずみコストに導くことになるかを決定することによって生成される。いくつかの例では、1つの重み付け係数がCU全体について決定され、CUのすべてのコード化された部分は同じ重み付け係数を使用する。他の例では、別個の重み付け係数がCUの各別個の部分について計算され、記憶され得る。
[0179]エンコーダは、次いで、高度残差予測(ARP)に従って、PUの各サブPUに対応するCUの部分を符号化する(1199)。プロセスは、次いで、他の処理が再開されるリターンブロックに進む。
[0180]このようにして、図11の方法は、予測ユニット(PU)の2つ以上のサブPUがPUの重複しない部分であるように、コーディングユニット(CU)のPUを、第1のサブPUと第2のサブPUとを含む2つ以上のサブPUに分割することと、第1のサブPUに関する第1のタイプの第1の動きベクトルと、第2のサブPUに関する第1のタイプの第2の動きベクトルとを取得することと、第2のタイプが第1のタイプとは異なるように、第1のサブPUに関する第2のタイプの第3の動きベクトルと、第2のサブPUに関する第2のタイプの第4の動きベクトルとを取得することと、第1の動きベクトルと第3の動きベクトルとを使用して高度残差予測(ARP)に従って第1のサブPUに対応するCUの第1の部分を符号化することと、第2の動きベクトルと第4の動きベクトルとを使用してARPに従って第2のサブPUに対応するCUの第2の部分を符号化することとを含む方法の一例を表す。
[0181]図12は、ビデオデータをコーディングするための例示的なプロセス(1270)を示す流れ図である。いくつかの例では、図12のプロセスは、ビデオデコーダ30などのデコーダによって実施され得る。開始ブロックの後に、デコーダは、予測ユニット(PU)の2つ以上のサブPUがPUの重複しない部分であるように、コーディングユニット(CU)のPUを、第1のサブPUと第2のサブPUとを含む2つ以上のサブPUに分割する(1271)。
[0182]デコーダは、次いで、PUの各サブPUに関するディスパリティ動きベクトル(DMV)またはディスパリティベクトル(DV)を取得する(1272)。いくつかの例では、DMVまたはDVは、ビットストリームからDMVまたはDVを取り出すことによって取得される。デコーダは、次いで、異なるビュー中の現在のサブPU対応するサブPUブロックの位置を特定する(1273)。これは、現在のサブPUのロケーションからブロック1272において取得されたDMVまたはDVを使用して達成される。
[0183]デコーダは、次いで、PUの各サブPUについて生成される時間的動きベクトル(MV)を生成する(1274)。いくつかの例では、TMVは、ビットストリームからTMVを取り出すことによって取得される。デコーダは、次いで、BaseTRef中の対応するサブPUブロックを提供する(1275)。これは、現在のサブPUのロケーションからのDV+TMV(または、ディスパリティベクトルではなく、ディスパリティ動きベクトルが使用された場合、DMV+TMV)を使用して達成される。
[0184]デコーダは、次いで、予測子を導出する(1278)。これは、メモリから残差予測子と重み付け係数とを取り出すことと、重み付けされた残差ブロックを得るために残差ブロックに重み付け係数を適用することと、予測されたサンプルに重み付けされた残差ブロックの値を加算することとによって達成され得る。デコーダは、次いで、高度残差予測(ARP)に従って、PUの各サブPUに対応するCUの部分を復号する(1299)。プロセスは、次いで、他の処理が再開されるリターンブロックに進む。
[0185]このようにして、図12の方法は、予測ユニット(PU)の2つ以上のサブPUがPUの重複しない部分であるように、コーディングユニット(CU)のPUを、第1のサブPUと第2のサブPUとを含む2つ以上のサブPUに分割することと、第1のサブPUに関する第1のタイプの第1の動きベクトルと、第2のサブPUに関する第1のタイプの第2の動きベクトルとを決定することと、第2のタイプが第1のタイプとは異なるように、第1のサブPUに関する第2のタイプの第3の動きベクトルと、第2のサブPUに関する第2のタイプの第4の動きベクトルとを決定することと、第1の動きベクトルと第3の動きベクトルとを使用して高度残差予測(ARP)に従って第1のサブPUに対応するCUの第1の部分を復号することと、第2の動きベクトルと第4の動きベクトルとを使用してARPに従って第2のサブPUに対応するCUの第2の部分を復号することとを含む方法の一例を表す。
[0186]上記例に応じて、本明細書で説明された技法のうちのいずれかのいくつかの動作またはイベントが、異なるシーケンス中で実施され得、全体的に追加、マージ、または除外され得る(たとえば、すべての説明された動作またはイベントが本技法の実施のために必要であるとは限らない)ことを認識されたい。その上、いくつかの例では、動作またはイベントは、連続的にではなく、たとえば、マルチスレッド処理、割込み処理、または複数のプロセッサを通して同時に実施され得る。
[0187]1つまたは複数の例において、前述の機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、1つまたは複数の命令またはコードとして、コンピュータ可読媒体上に記憶されるか、またはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実施され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応する、コンピュータ可読記憶媒体を含み得るか、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、または(2)信号または搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明される技法の実装のための命令、コードおよび/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0188]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気記憶デバイス、フラッシュメモリ、または命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用してウェブサイト、サーバ、または他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu−rayディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
[0189]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路など、1つまたは複数のプロセッサによって実施され得る。したがって、本明細書で使用される「プロセッサ」という用語は、前述の構造、または、本明細書で説明される技法の実装に好適な他の構造のいずれかを指すことがある。さらに、いくつかの態様では、本明細書で説明された機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内に提供されるか、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素で十分に実装され得る。
[0190]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示される技法を実施するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットが説明されたが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。そうではなく、上記で説明されたように、様々なユニットは、コーデックハードウェアユニット中で組み合わせられるか、または上記で説明された1つまたは複数のプロセッサを含む、好適なソフトウェアおよび/またはファームウェアとともに相互動作可能なハードウェアユニットの集合によって提供され得る。
[0191]様々な例が説明された。これらおよび他の例は以下の特許請求の範囲内に入る。