【文献】
D.Tian et al,CE1.h: Backward View Synthesis Prediction using Neighbouring Blocks,Joint Collaborative Team on 3D Video Coding Extension Development of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 3rd Meeting: Geneva, CH, 17-23 Jan. 2013,2013年 1月21日,JCT3V-C0152
【文献】
J.An et al,3D-CE3.h related: Sub-PU level inter-view motion prediction,Joint Collaborative Team on 3D Video Coding Extension Development of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11 5th Meeting: Vienna, AT, 27 July - 2 Aug. 2013,2013年 7月27日,JCT3V-E0184
【文献】
Gerhard Tech et al.,3D-HEVC Draft Text 1,Joint Collaborative Team on 3D Video Coding Extension Development of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 5th Meeting: Vienna, AT, 27 Jul. -2 Aug. 2013 ,2013年 9月11日,JCT3V-E1001-v3,45−60頁
【文献】
H.Liu et al,CE3 related: HEVC compatible de-blocking for sub-PUs,Joint Collaborative Team on 3D Video Coding Extensions of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11 6th Meeting: Geneva, CH, 25 Oct. - 1 Nov. 2013,2013年10月18日,JCT3V-F0135
(58)【調査した分野】(Int.Cl.,DB名)
前記PUのための前記第1の動き情報を決定することは、前記PUを予測するための動き情報のマージモード候補リストからBVSP候補として前記第1の動き情報を選択することを備える、
請求項1に記載の方法。
前記サブPUの各々のための前記第2の動き情報を決定することは、前記サブPUの各々に対応する前記ビュー間参照ピクチャの前記深度ブロックのための4つのコーナーピクセルの最大値に等しい水平成分と、ゼロに等しい垂直成分とを有するように、前記サブPUの各々のための前記少なくとも1つの視差動きベクトルを導出することを備える、
請求項1に記載の方法。
前記サブPUの各々のための前記第2の動き情報を決定することは、サブPUを予測するための動き情報のマージモード候補リストからサブPU BVSP候補として前記第2の動き情報を選択することを備える、
請求項1に記載の方法。
前記メモリは、復号ピクチャバッファを備え、前記第2の動き情報を記憶することは、前記PUのための前記第1の動き情報の前記参照ビューインデックスによって識別された前記ビュー間参照ピクチャを含む参照ピクチャリストとともに、前記サブPUの各々のための前記視差動きベクトルを前記復号ピクチャバッファに記憶することを備える、
請求項1に記載の方法。
前記人工的PU境界または前記人工的TU境界を作成することは、前記PUを変換ツリー階層に関連付け、前記サブPUの各々をTUに関連付けるために、前記CUの変換ツリーを変換することを備え、前記サブPU境界は、人工的TU境界を備える、
請求項8に記載の方法。
前記人工的PU境界または前記人工的TU境界を作成することは、前記PUを変換ツリー階層に関連付け、前記サブPUの各々の少なくとも一部をTUに関連付けるために、前記CUの変換ツリーを変換することを備え、、前記サブPU境界は、人工的TUを備える、請求項8に記載の方法。
前記人工的PU境界または前記人工的TU境界を作成することは、前記PUをCUに関連付け、前記サブPUの各々をPUに関連付けるために、前記CUをコーディングツリーに変換することを備え、前記サブPU境界は、人工的PU境界を備える、
請求項8に記載の方法。
前記1つまたは複数のプロセッサは、前記PUを予測するための動き情報のマージモード候補リストからBVSP候補として前記第1の動き情報を選択することを行うように構成される、
請求項12に記載のデバイス。
前記1つまたは複数のプロセッサは、前記サブPUの各々に対応する前記ビュー間参照ピクチャの前記深度ブロックのための4つのコーナーピクセルの最大値に等しい水平成分と、ゼロに等しい垂直成分とを有するように、前記サブPUの各々のための前記第2の動き情報に含まれた前記少なくとも1つの視差動きベクトルを導出することを行うように構成される、
請求項12に記載のデバイス。
前記1つまたは複数のプロセッサは、サブPUを予測するための動き情報のマージモード候補リストからサブPU BVSP候補として前記サブPUの各々のための前記第2の動き情報を選択することを行うように構成される、
請求項12に記載のデバイス。
前記メモリは、復号ピクチャバッファを備え、前記1つまたは複数のプロセッサは、前記PUのための前記第1の動き情報の前記参照ビューインデックスによって識別された前記ビュー間参照ピクチャを含む参照ピクチャリストとともに、前記サブPUの各々のための前記第2の動き情報に含まれた前記視差動きベクトルを前記復号ピクチャバッファに記憶することを行うように構成される、
請求項12に記載のデバイス。
後方ビュー合成予測(BVSP)モードに従って、ビデオブロックのコーディングユニット(CU)の予測ユニット(PU)のための第1の動き情報を、前記PUの隣接ブロックから決定するための手段、ここにおいて、前記第1の動き情報は、少なくとも1つの視差動きベクトルと、ビュー間参照ピクチャを識別する、関連付けられた参照ビューインデックスとを含む、と、
前記PUを2つ以上のサブPUに区分するための手段と、
前記サブPUの各々のための第2の動き情報を決定するための手段、ここにおいて、前記第2の動き情報が、前記サブPUの各々に対応する前記ビュー間参照ピクチャの深度ブロックに関連付けられた、少なくとも1つの視差動きベクトルを含む、と、
前記第2の動き情報に基づいて、前記ビュー間参照ピクチャから前記サブPUの各々を予測するために、動き補償を実行するための手段と、
後続PUを予測するために使用されることになる、前記PUの前記サブPUの各々のための前記第2の動き情報をメモリに記憶するための手段と、
前記PUの前記サブPUのうちの少なくとも1つのための前記記憶された第2の動き情報に基づいて後続PUを予測するための手段と、
を備え、前記後続PUは、前記PUの隣接ブロックであり、前記後続PUを予測するための手段は、前記後続PUを予測するための動き情報のマージモード候補リストを生成するための手段をさらに備え、前記マージモード候補リストは、前記マージモード候補リスト中のサブPU BVSP候補として、前記メモリに記憶された前記PUの前記サブPUのうちの少なくとも1つのための前記第2の動き情報を含む
ビデオ処理デバイス。
【発明を実施するための形態】
【0019】
[0038]本開示は、高効率ビデオコーディング(HEVC)規格に対する3D拡張を使用する、ビデオコーディングのためのサブ予測ユニット(PU)レベルの動き予測のための技法について説明する。3D−HEVC拡張は、マルチビュービデオに加えて深度フォーマットのコーディングをサポートする。マルチビュービデオコーディングでは、現在のビデオピクチャは、同じビュー中の時間的参照ピクチャと参照ビュー中のビュー間参照ピクチャの両方によって予測され得る。
【0020】
[0039]一例では、3D−HEVCにおけるビュー合成予測は、サブPU後方ビュー合成予測(BVSP)モードを使用して実行され得る。サブPU BVSPモードでは、現在のPUのための動き情報は、視差動きベクトル、およびビュー間参照ピクチャを識別する、関連付けられた参照ビューインデックスから予測される。サブPU BVSPモードでは、現在のPUは2つ以上のサブPUに区分され、視差動きベクトルは、ビュー間参照ピクチャの対応する深度ブロックに基づいて、サブPUの各々に対して導出されたサブPU動き情報に基づいて改良される。別個のサブPU動き情報に基づいてPUのサブPUの各々を予測するために、動き補償が実行される。従来、サブPUの各々を予測するために動き補償を実行した後、現在のPUのための視差動きベクトルだけが記憶される。
【0021】
[0040]本開示の技法によれば、サブPU BVSPモードを使用して予測される各PUに対して、ビデオコーディングデバイスは、動き補償が実行された後ですら、現在のPUのサブPUの各々に対して導出された別個の動き情報を記憶する。現在のPUに対して記憶された追加の動き情報は、次いで、現在のPUが隣接ブロックである後続PUを予測するために使用され得る。
【0022】
[0041]別の例では、本開示は、動きベクトル改良が可能にされ得るシングルレイヤコーディングにおけるPUのサブPUを予測するための高度時間的動きベクトル予測(TMVP)モードを実行するための技法について説明する。従来、サブPU設計は、予測された動きベクトルのさらなる改良を可能にしないマージインター予測モードを使用したレイヤ間またはビュー間の動き予測に対してのみ可能にされる。高度TMVPモードは、PUのサブPUの各々のための異なる動きベクトルおよび参照インデックスを含む、PUのための動き情報を導出するために、少なくとも2つのステージでPUのための動きベクトルを決定することを含む。PU内のサブPUは、N×NまたはN×Mのサイズであり得、NおよびMは、任意の整数であり得る。典型的なサブPUサイズは、4×4、8×8、4×8、または8×4であり得る。
【0023】
[0042]本開示の技法によれば、現在のPUのための第1のステージの動きベクトルは、そのPUの隣接ブロックから決定され、この場合、第1のステージの動きベクトルは、現在のPUに対応する参照ピクチャのブロックを識別する。3D−HEVCにおけるサブPU動き予測と同様に、より小さいサブPUを含む参照ピクチャの対応する領域(たとえば、ブロック)のサイズは、現在のPUのサイズと同じである。このようにして、現在のPUのサブPUは、一意の動きベクトルを用いて識別された参照ピクチャの対応する領域中に対応するサブPUを有する。第1のステージの動きベクトルは、空間的および/または時間的近隣に基づいて識別され得る。代替的に、第1のステージの動きベクトルは、定数、たとえば、0、または別のあらかじめ規定された値に設定され得、現在のPUのサイズに関連する。別の代替態様では、PUのサブPUの各々は、異なる動きベクトルを用いて参照ピクチャのその対応するブロックを識別することができる。
【0024】
[0043]上記で説明したように、現在のPUは2つ以上のサブPUに区分され、サブPUの各々のための第2のステージの動き情報は、第1のステージの動きベクトルによって識別された参照ピクチャの対応する領域、たとえば、ブロックから決定され、この場合、サブPUの各々のための第2のステージの動き情報は、少なくとも1つの動きベクトルと、関連付けられた参照インデックスとを含む。サブPUの各々のための第2のステージの動き情報に基づいて、サブPUの各々を別々に予測するために、動き補償が実行される。この高度TMVPプロセスは、すべての他のマージ候補の中でマージ候補をアクティブ化すると、つまり、現在のPUのためにそのようなプロセスが実行される必要があることを示すために、特定のマージ候補が作成されると達成され得る。いくつかの例では、単にマージモードで動作する代わりに、サブPUの各々のための第2のステージの動き情報の少なくとも1つの動きベクトルを改良するために、動きベクトル差分が決定され得る。
【0025】
[0044]さらなる例として、本開示は、複数のサブPUを有する、少なくとも1つのPUを含むビデオブロックのコーディングユニット(CU)に適用されるデブロッキングフィルタプロセスに関する技法について説明する。HEVC規格に対するデブロッキングフィルタは、PU内で、すなわち、PUの隣接するサブPU間のサブPU境界に沿って、フィルタするように設計されていないが、これは、HEVCブロックでは、動き補償はPU全体に対して同じであると仮定されるためである。本開示の技法は、HEVCデブロッキングフィルタが3D−HEVCブロックのために引き続き使用され得るように、サブPUをデブロッキングフレンドリーな構造に変換することによって、サブPU境界がデブロッキングされるのを可能にする。提案されるデブロッキング技法は、3D−HEVCを含めて、マルチレイヤコーデックに適用可能であり得る。
【0026】
[0045]本開示の技法によれば、サブPUを有するPUを含むビデオブロックのCUにデブロッキングフィルタを適用するのに先立って、サブPU境界において人工的PU境界または人工的TU境界を作成するために、CUは変換される。一例では、サブPU境界が人工的TU境界に変換されるように、PUを変換ツリー階層に関連付け、サブPUの各々をTUに関連付けるために、CUの変換ツリーは変換される。別の例では、サブPU境界が人工的PU境界に変換されるように、PUをCUに関連付け、サブPUの各々をPUに関連付けるために、CUはコーディングツリーに変換される。次いで、人工的PU境界と人工的TU境界とを含めて、CUの2つの隣接するPU間のPU境界および/またはCUの2つの隣接するTU間のTU境界にデブロッキングフィルタが適用され得る。
【0027】
[0046]ビデオコーディング規格は、ITU−T H.261と、ISO/IEC MPEG−1 Visualと、ITU−T H.262またはISO/IEC MPEG−2 Visualと、ITU−T H.263と、ISO/IEC MPEG−4 Visualと、そのスケーラブルビデオコーディング(SVC)拡張およびマルチビュービデオコーディング(MVC)拡張を含む(ISO/IEC MPEG−4 AVCとしても知られる)ITU−T H.264とを含む。MVCの最新のジョイントドラフトは、ITU−T H.264、Series H:Audiovisual and Multimedia Systems、Infrastructure of audiovisual service−Coding of moving video、Advanced video coding for generic audiovisual services,Telecommunication Standardization Sector of International Telecommunication Union(ITU)、2010年3月に記載されている。
【0028】
[0047]加えて、新しいビデオコーディング規格、すなわち、高効率ビデオコーディング(HEVC)の設計が、ITU−Tビデオコーディングエキスパートグループ(VCEG:Video Coding Experts Group)およびISO/IECモーションピクチャエキスパートグループ(MPEG:Motion Picture Experts Group)のビデオコーディング共同研究部会(JCT−VC:Joint Collaboration Team on Video Coding)によって確定された。「HEVC Working Draft 10」または「WD10」と呼ばれるHEVCドラフト仕様は、Brossら、「High efficiency video coding(HEVC)text specification draft 10(FDIS&Last Callに対して)」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11のビデオコーディング共同研究部会(JCT−VC)、第12回会合:ジュネーブ、スイス、2013年1月14〜23日、JCTVC−L1003v34に記載されており、http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1003-v34.zipから入手可能である。
【0029】
[0048]確定された規格文書は、ITU−T H265、Series H:Audiovisual and Multimedia Systems,Infrastructure of audiovisual services−Coding of moving video,High efficienty video coding,Telecommunication Standarization Sector of International Telecommunication Union(ITU)、2013年4月として公開されている。Il−Koo Kimら、「High Efficiency Video Coding(HEVC)Test Model 10(HM10)Encoder Description、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11とのビデオコーディング共同研究部会(JCT−VC)、第12回会合:ジュネーブ、スイス、2013年1月14〜23日に記載されたHEVCの最近の符号化器記述は、http://phenix.int-evry.fr/jct/doc_end_user/documents/12_Geneva/wg11/JCTVC-L1002-v3.zipから入手可能である。
【0030】
[0049]3Dサービスをサポートする、HEVCの2つの拡張が、ITU−Tビデオコーディングエキスパートグループ(VCEG)およびISO/IECモーションピクチャエキスパートグループ(MPEG)の3Dビデオコーディング共同研究部会(JCT−3V:Joint Collaboration Team on 3D Video coding)によって開発されている。これらの2つの拡張は、HEVCに対するマルチビュー拡張(MV HEVC)およびHEVCに対する3D拡張(3D−HEVC)である。
【0031】
[0050]MV−HEVCは、HEVCのブロックレベル設計を変更せずに複数のテクスチャビューのコーディングをサポートする。MV−HEVC Working Draft 5(WD5)と呼ばれ、Techら、「MV−HEVC Draft Text 5」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発に関する共同研究部会(JCT−3V:Joint Collaborative Team on 3D Video Coding Extension Development)、第5回会議:ウィーン、オーストリア、2013年7月27〜8月2日、JCT3V−E1004v6に記載されるMV−HEVCのドラフト仕様は、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V−E1004−v6.zipから入手可能である。
【0032】
[0051]3D−HEVCは、マルチビュービデオに加えて深度フォーマットのコーディングをサポートし、HEVCコーディングモジュールに加えて組み込まれた新しいコーディングツールを含む。新たに導入されたコーディングツールは、テクスチャコーディングと深度コーディングの両方に適用可能である。「3D−HEVC Working Draft 1(WD1)」と呼ばれ、Techら、「3D−HEVC Draft Text 1」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発に関する共同研究部会(JCT−3V)、第5回会議:ウィーン、オーストリア、2013年7月27〜8月2日、JCT3V−E1001v3に記載される3D−HEVCのドラフト仕様は、http://phenix.it-sudparis.eu/jct2/doc_end_user/documents/5_Vienna/wg11/JCT3V-E1001-v3.zipから入手可能である。
【0033】
[0052]
図1は、本開示の技法を利用し得る例示的なビデオ符号化および復号システム10を示すブロック図である。
図1に示すように、システム10は、宛先デバイス14によって後で復号されるべき符号化ビデオデータを提供するソースデバイス12を含む。特に、ソースデバイス12は、コンピュータ可読媒体16を介してビデオデータを宛先デバイス14に提供する。ソースデバイス12および宛先デバイス14は、デスクトップコンピュータ、ノートブック(すなわち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、いわゆる「スマート」フォンなどの電話ハンドセット、いわゆる「スマート」パッド、テレビジョン、カメラ、ディスプレイデバイス、デジタルメディアプレーヤ、ビデオゲーム機、ビデオストリーミングデバイスなどを含む、広範囲にわたるデバイスのいずれかを備え得る。場合によっては、ソースデバイス12および宛先デバイス14はワイヤレス通信のために装備され得る。
【0034】
[0053]宛先デバイス14は、コンピュータ可読媒体16を介して復号されるべき符号化ビデオデータを受信することができる。コンピュータ可読媒体16は、符号化ビデオデータをソースデバイス12から宛先デバイス14に移動することが可能な、任意のタイプの媒体またはデバイスを備え得る。一例では、コンピュータ可読媒体16は、ソースデバイス12が符号化ビデオデータを宛先デバイス14にリアルタイムで直接送信するのを可能にするための通信媒体を備え得る。符号化ビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先デバイス14に送信され得る。通信媒体は、無線周波(RF)スペクトルあるいは1つもしくは複数の物理伝送線路など、任意のワイヤレスまたはワイヤード通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、またはインターネットなどのグローバルネットワークなどのパケットベースのネットワークの一部を形成し得る。通信媒体は、ソースデバイス12から宛先デバイス14への通信を容易にするために有用であり得る、ルータ、スイッチ、基地局、または任意の他の機器を含み得る。
【0035】
[0054]いくつかの例では、符号化データは、出力インターフェース22からストレージデバイスへ出力され得る。同様に、符号化データは、ストレージデバイスから入力インターフェースによってアクセスされ得る。ストレージデバイスは、ハードドライブ、Blue−rayディスク、DVD、CD−ROM、フラッシュメモリ、揮発性もしくは不揮発性のメモリ、または符号化ビデオデータを記憶するための任意の他の適切なデジタル記憶媒体など、様々な分散されたまたはローカルにアクセスされるデータ記憶媒体のいずれをも含み得る。さらなる例では、ストレージデバイスは、ソースデバイス12によって生成された符号化ビデオを記憶することができるファイルサーバまたは別の中間ストレージデバイスに対応し得る。宛先デバイス14は、ストリーミングまたはダウンロードを介して、ストレージデバイスから記憶されたビデオデータにアクセスすることができる。ファイルサーバは、符号化ビデオデータを記憶でき、符号化ビデオデータを宛先デバイス14に送信できる、任意のタイプのサーバとすることができる。例示的なファイルサーバは、(たとえば、ウェブサイト用の)ウェブサーバ、FTPサーバ、ネットワークアタッチドストレージ(NAS)デバイス、またはローカルディスクドライブを含む。宛先デバイス14は、インターネット接続を含む任意の標準データ接続を介して、符号化ビデオデータにアクセスすることができる。これは、ファイルサーバ上に記憶された符号化ビデオデータにアクセスするのに適した、ワイヤレスチャネル(たとえば、Wi−Fi(登録商標)接続)、ワイヤード接続(たとえば、DSL、ケーブルモデムなど)、またはその両方の組合せを含み得る。ストレージデバイスからの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、またはその組合せとすることができる。
【0036】
[0055]本開示の技法は、ワイヤレス応用またはワイヤレス設定に必ずしも限定されない。本技法は、無線テレビジョンブロードキャスト、ケーブルテレビジョン送信、衛星テレビジョン送信、HTTP上の動的適応ストリーミング(DASH:dynamic adaptive streaming over HTTP)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されたデジタルビデオ、データ記憶媒体上に記憶されたデジタルビデオの復号、または他の応用例など、様々なマルチメディア応用のいずれかをサポートするビデオコーディングに適用され得る。いくつかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、および/もしくはビデオ電話などの応用をサポートするために一方向または両方向のビデオ送信をサポートするように構成され得る。
【0037】
[0056]
図1の例では、ソースデバイス12は、ビデオソース18と、深度推定ユニット19と、ビデオ符号化器20と、出力インターフェース22とを含む。宛先デバイス14は、入力インターフェース28と、ビデオ復号器30と、深度画像ベースのレンダリング(DIBR:depth image based rendering)ユニット31と、ディスプレイデバイス32とを含む。他の例では、ソースデバイスおよび宛先デバイスは、他の構成要素または構成を含んでもよい。たとえば、ソースデバイス12は、外部カメラなどの外部のビデオソース18からビデオデータを受信し得る。同様に、宛先デバイス14は、統合されたディスプレイデバイスを含むのではなく、外部のディスプレイデバイスとインターフェースしてもよい。
【0038】
[0057]
図1の例示されたシステム10は、一例にすぎない。本開示の技法は、任意のデジタルビデオ符号化および/または復号デバイスによって実行され得る。概して、本開示の技法はビデオ符号化デバイスによって実行されるが、本技法は、一般に「コーデック」と呼ばれるビデオ符号化器/復号器によっても実行され得る。その上、本開示の技法は、ビデオプリプロセッサによっても実行され得る。ソースデバイス12および宛先デバイス14は、ソースデバイス12が、宛先デバイス14に送信するためのコード化ビデオデータを生成するような、コーディングデバイスの例にすぎない。いくつかの例では、デバイス12、14は、デバイス12、14の各々がビデオ符号化構成要素とビデオ復号構成要素とを含むように実質的に対称的に動作し得る。したがって、システム10は、たとえば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、もしくはビデオ電話のためのビデオデバイス12とビデオデバイス14の間の一方向または双方向のビデオ送信をサポートし得る。
【0039】
[0058]ソースデバイス12のビデオソース18は、ビデオカメラなどのビデオキャプチャデバイス、前にキャプチャされたビデオを包含する(containing)ビデオアーカイブ、および/またはビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。さらなる代替として、ビデオソース18は、ソースビデオとしてのコンピュータグラフィックスベースのデータ、またはライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成することができる。場合によっては、ビデオソース18がビデオカメラである場合、ソースデバイス12および宛先デバイス14は、いわゆるカメラフォンまたはビデオフォンを形成し得る。しかしながら、上記で述べたように、本開示で説明する技法は、一般にビデオコーディングに適用可能であり、ワイヤレスおよび/またはワイヤード用途に適用され得る。各々の場合において、キャプチャされたビデオ、以前にキャプチャされたビデオ、またはコンピュータ生成ビデオは、ビデオ符号化器20によって符号化され得る。次いで、符号化ビデオ情報は、出力インターフェース22によってコンピュータ可読媒体16に出力され得る。
【0040】
[0059]ビデオソース18は、ビデオ符号化器20にビデオデータの複数のビューを提供し得る。たとえば、ビデオソース18は、各々が、撮影されている特定のシーンに対して一意の水平位置を有するカメラのアレイに対応し得る。代替的に、ビデオソース18は、たとえばコンピュータグラフィックスを使用して異なる水平カメラの視点からビデオデータを生成することができる。深度推定ユニット19は、テクスチャ画像内のピクセルに対応する深度ピクセルのための値を決定するように構成され得る。たとえば、深度推定ユニット19は、音響航法/測距(SONAR:Sound Navigation and Ranging)ユニット、光検出/測距(LIDAR:Light Detection and Ranging)ユニット、またはシーンのビデオデータを記録しながら実質的に同時に深度値を直接決定することが可能な他のユニットを表し得る。
【0041】
[0060]追加または代替として、深度推定ユニット19は、異なる水平カメラ視点から実質的に同時にキャプチャされた2つ以上の画像を比較することによって間接的に深度値を計算するように構成され得る。画像内の実質的に同様のピクセル値の間の水平視差を計算することによって、深度推定ユニット19は、シーン内の様々なオブジェクトの深度を概算することができる。深度推定ユニット19は、いくつかの例では、ビデオソース18と機能的に統合され得る。たとえば、ビデオソース18がコンピュータグラフィックス画像を生成するとき、深度推定ユニット19は、たとえば、ピクセルのz座標と、テクスチャ画像をレンダリングするために使用されたオブジェクトのz座標とを使用して、グラフィカルオブジェクトのための実際の深度マップを提供することができる。
【0042】
[0061]コンピュータ可読媒体16は、ワイヤレスブロードキャストもしくはワイヤードネットワーク送信などの一時媒体、または、ハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、Blu−ray(登録商標)ディスク、もしくは他のコンピュータ可読媒体などの記憶媒体(すなわち、非一時的記憶媒体)を含み得る。いくつかの例では、ネットワークサーバ(図示せず)は、たとえば、ネットワーク送信を介して、ソースデバイス12から符号化ビデオデータを受信し、宛先デバイス14に符号化ビデオデータを提供することができる。同様に、ディスクスタンピング設備など、媒体製造設備のコンピューティングデバイスは、ソースデバイス12から符号化ビデオデータを受信し、その符号化ビデオデータを包含するディスクを生成することができる。したがって、様々な例では、コンピュータ可読媒体16は、様々な形態の1つまたは複数のコンピュータ可読媒体を含むと理解され得る。
【0043】
[0062]宛先デバイス14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ビデオ符号化器20によって定義され、またビデオ復号器30によって使用される、ブロックおよび他のコード化ユニット、たとえば、GOPの特性ならびに/または処理を記述するシンタックス要素を含む、シンタックス情報を含み得る。ディスプレイデバイス32は、ユーザに復号ビデオデータを表示し、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイ、有機発光ダイオード(OLED)ディスプレイ、または別のタイプのディスプレイデバイスなど、様々なディスプレイデバイスのいずれかを備え得る。いくつかの例では、ディスプレイデバイス32は、たとえば、閲覧者のための3D視覚影響を生成するために、同時にまたは実質的に同時に2つ以上のビューを表示することが可能なデバイスを備え得る。
【0044】
[0063]宛先デバイス14のDIBRユニット31は、ビデオ復号器30から受信された復号ビューのテクスチャおよび深度情報を使用して、合成されたビューをレンダリングすることができる。たとえば、DIBRユニット31は、対応する深度マップ中のピクセルの値に応じて、テクスチャ画像のピクセルデータのための水平視差を決定し得る。DIBRユニット31は、次いで、決定された水平視差によって、テクスチャ画像中のピクセルを左または右にオフセットすることによって、合成された画像を生成し得る。このようにして、ディスプレイデバイス32は、任意の組合せにおける、復号ビューおよび/または合成ビューに対応し得る、1つもしくは複数のビューを表示することができる。ビデオ復号器30は、ビューを適切に合成するために、深度範囲とカメラパラメータとを使用することができるDIBRユニット31に深度範囲およびカメラパラメータのための精度値を提供することができる。
【0045】
[0064]
図1には示されていないが、いくつかの態様では、ビデオ符号化器20およびビデオ復号器30は各々、オーディオ符号化器およびオーディオ復号器と統合され得、共通のデータストリームもしくは別個のデータストリーム中のオーディオとビデオの両方の符号化を処理するために、適切なMUX−DEMUXユニット、または他のハードウェアおよびソフトウェアを含み得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、またはユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【0046】
[0065]ビデオ符号化器20およびビデオ復号器30は、現在の開発中の高効率ビデオコーディング(HEVC)規格などの、ビデオコーディング規格に従って動作し得、HEVCテストモデル(HM)に準拠し得る。代替的に、ビデオ符号化器20およびビデオ復号器30は、代替的にMPEG−4、Part10、アドバンストビデオコーディング(AVC)と呼ばれるITU−T H.264規格など、他のプロプライエタリ規格もしくは業界規格、またはITU−T H.264/AVCのMVC拡張など、そのような規格の拡張に従って動作し得る。
【0047】
[0066]ビデオ符号化器20およびビデオ復号器30は各々、1つもしくは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適な符号化器回路のいずれか、またはそれらの任意の組合せとして実装され得る。本技法がソフトウェアに部分的に実装されるとき、デバイスは、ソフトウェアに対する命令を適切な非一時的コンピュータ可読媒体に記憶し、本開示の技法を実行するために、1つまたは複数のプロセッサを使用して命令をハードウェアで実行することができる。ビデオ符号化器20およびビデオ復号器30の各々は、1つもしくは複数の符号化器または復号器の中に含まれ得、そのいずれかが、それぞれのデバイスにおいて複合符号化器/復号器(コーデック)の一部として統合され得る。ビデオ符号化器20および/またはビデオ復号器30を含むデバイスは、集積回路、マイクロプロセッサ、および/またはセルラー電話機などのワイヤレス通信デバイスを備えることができる。
【0048】
[0067]最初に、HEVCの例示的なコーディング技法について説明する。上記で参照したHEVC WD10は、たとえば、ITU−T H264/AVCに従う既存のデバイスに対して、ビデオコーディングデバイスのいくつかの追加の能力を推定する。たとえば、H.264は9個のイントラ予測符号化モードを提供するが、HEVC WD10は33個もの角度イントラ予測符号化モードに加えてDCモードと平面モードとを提供することができる。
【0049】
[0068]HEVCWD10および他のビデオコーディング規格では、ビデオシーケンスは、一般に、一連のピクチャを含む。ピクチャは「フレーム」と呼ばれる場合もある。ピクチャは、S
L、S
Cb、およびS
Crと示される3つのサンプルアレイを含み得る。S
Lは、ルーマサンプルの2次元アレイ(すなわち、ブロック)である。S
Cbは、Cbクロミナンスサンプルの2次元アレイである。S
Crは、Crクロミナンスサンプルの2次元アレイである。クロミナンスサンプルは、本明細書では「クロマ」サンプルと呼ばれる場合もある。他の例では、ピクチャは、モノクロームであり得、ルーマサンプルのアレイのみを含み得る。
【0050】
[0069]HEVC WD10は、ビデオフレームまたはピクチャが、ルーマサンプルとクロマサンプルの両方を含むコーディングツリーユニット(CTU)または最大コーディングユニット(LCU)のシーケンスに分割され得ることを記載している。CTUは、H.264規格のマクロブロックと同様の目的を有する。スライスは、コーディング順序でいくつかの連続するCTUを含む。ビデオフレームまたはピクチャは、1つまたは複数のスライスに区分される場合がある。各CTUは、4分木に従って、コーディングユニット(CU)にスプリットされ得る。たとえば、4分木のルートノードとしてのCTUは、4つの子ノードにスプリットされ得、各子ノードは、次に親ノードとなり得、別の4つの子ノードにスプリットされ得る。4分木のリーフノードとしての、最終的な、スプリットされていない子ノードは、コーディングノード、すなわち、コード化ビデオブロックを備える。コード化ビットストリームに関連付けられるシンタックスデータは、CTUがスプリットされ得る最大回数を定義し得、コーディングノードの最小サイズをも定義し得る。
【0051】
[0070]CUは、コーディングノードと、コーディングノードに関連付けられた予測ユニット(PU)および変換ユニット(TU)とを含む。CUのサイズは、コーディングノードのサイズに対応し、形状が正方形でなければならない。CUのサイズは、8×8ピクセルから、64×64ピクセル以上の最大値を有するツリーブロックのサイズまでに及び得る。各CUは、1つまたは複数のPUと1つまたは複数のTUとを包含し得る。CUに関連付けられたシンタックスデータは、たとえば、1つまたは複数のPUへのCUの区分を記述することができる。区分モードは、CUがスキップモード符号化もしくは直接モード符号化されるのか、イントラ予測モード符号化されるのか、またはインター予測モード符号化されるのかの間で異なる可能性がある。PUは、形状が非正方形に区分され得る。CUに関連付けられたシンタックスデータは、たとえば、4分木に従う1つまたは複数のTUへのCUの区分を記述することもできる。TUは、形状が方形または非方形であり得る。
【0052】
[0071]HEVC WD10は、異なるCUに対して異なり得る、TUに従う変換を可能にする。TUは、一般に、区分されたCTUまたはLCUのために定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、これは常にそうであるとは限らない。TUは、一般に、PU以下のサイズである。いくつかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT)として知られている4分木構造を使用して、より小さいユニットに副分割され得る。RQTのリーフノードはTUと呼ばれる場合がある。TUに関連付けられたピクセル差分値は、量子化され得る変換係数を生成するために変換され得る。
【0053】
[0072]概して、PUは、予測プロセスに関するデータを含む。たとえば、PUがイントラモード符号化されるとき、PUは、PUのためのイントラ予測モードを記述するデータを含み得る。別の例として、PUがインターモード符号化されるとき、PUは、PUのための動きベクトルを定義するデータを含み得る。PUのための動きベクトルを定義するデータは、たとえば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(たとえば、1/4ピクセル精度もしくは1/8ピクセル精度)、動きベクトルが指す参照ピクチャ、および/または動きベクトルのための参照ピクチャリスト(たとえば、リスト0もしくはリスト1)を記述し得る。
【0054】
[0073]一般に、TUは、変換処理および量子化処理のために使用される。1つまたは複数のPUを有する所与のCUは、1つまたは複数のTUを含む場合もある。予測に続いて、ビデオ符号化器20は、PUに対応する残差値を計算することができる。残差値は、エントロピーコーディングのためのシリアル化変換係数(serialized transform coefficient)を生成するために、TUを使用して変換係数に変換され、量子化され、スキャンされ得るピクセル差分値を備える。本開示では、一般に、CUのコーディングノードを指すために「ビデオブロック」という用語を使用する。いくつかの特定の場合において、本開示は、コーディングノードとPUおよびTUとを含む、LCUまたはCUと呼ばれる場合もあるCTUと呼ばれる「ビデオブロック」という用語を使用する場合もある。
【0055】
[0074]ビデオシーケンスは、一般に、一連のビデオフレームまたはビデオピクチャを含む。ピクチャグループ(GOP)は、一般に、ビデオピクチャのうちの一連の1つまたは複数を備える。GOPは、GOPに含まれるいくつかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、ピクチャのうちの1つもしくは複数のヘッダ中、または他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスのための符号化モードを記述するスライスシンタックスデータを含む場合がある。ビデオ符号化器20は、一般に、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに作用する。ビデオブロックは、CU内のコーディングノードに対応し得る。ビデオブロックは、固定されたサイズまたは変化するサイズを有することができ、規定されたコーディング規格に従ってサイズが異なり得る。
【0056】
[0075]一例として、HEVC WD10は、様々なPUサイズでの予測をサポートする。特定のCUのサイズが2N×2Nであると仮定すると、HEVC WD10は、2N×2NまたはN×NのPUサイズでのイントラ予測、および2N×2N、2N×N、N×2N、またはN×Nの対称のPUサイズでのインター予測をサポートする。HEVC WD10は、2N×nU、2N×nD、nL×2N、およびnR×2NのPUサイズでのインター予測のための非対称区分をもサポートする。非対称区分では、CUの一方の方向は区分されず、他方の方向は、25%と75%とに区分される。CUのうちで25%区分に対応する部分は、「n」とそれに続く「Up(上)」、「Down(下)」、「Left(左)」、または「Right(右)」の表示とによって示される。したがって、たとえば、「2N×nU」は、上部で2N×0.5N PU、および下部で2N×1.5N PUに水平に区分される2N×2N CUを指す。
【0057】
[0076]本開示では、「N×N(N×N)」および「N×N(N by N)」は、垂直寸法および水平寸法の観点からビデオブロックのピクセル寸法、たとえば、16×16(16×16)ピクセルまたは16×16(16 by16)ピクセルを指すために互換的に使用され得る。一般に、16×16ブロックは、垂直方向に16ピクセルを有し(y=16)、水平方向に16ピクセルを有する(x=16)。同様に、N×Nブロックは、一般に、垂直方向にNピクセル、水平方向にNピクセルを有し、Nは、非負の整数値を表す。ブロック中のピクセルは、行および列に配列され得る。さらに、ブロックは、必ずしも、水平方向において垂直方向と同じ数のピクセルを有するとは限らない。たとえば、ブロックはN×Mピクセルを備え得、この場合、Mは必ずしもNに等しいとは限らない。
【0058】
[0077]CUのPUを使用したイントラ予測コーディングまたはインター予測コーディングに続いて、ビデオ符号化器20は、CUのTUのための残差データを計算することができる。PUは、(ピクセル領域とも呼ばれる)空間領域においてピクセルデータを備える場合があり、TUは、変換、たとえば、残差ビデオデータに対する離散コサイン変換(DCT)、整数変換、ウェーブレット変換、または概念的に同様の変換の適用を受けて、変換領域において係数を備える場合がある。残差データは、符号化されていないピクチャのピクセルとPUに対応する予測値との間のピクセル差分に対応し得る。ビデオ符号化器20は、CUのための残差データを含むTUを形成し、次いで、CUのための変換係数を生成するためにTUを変換することができる。
【0059】
[0078]変換係数を生成するためのすべての変換に続いて、ビデオ符号化器20は、変換係数の量子化を実行することができる。量子化は、一般に、係数を表すために使用されるデータの量をできるだけ低減するために、変換係数が量子化され、さらなる圧縮を実現するプロセスを指す。量子化プロセスは、係数の一部またはすべてに関連付けられたビット深度を低減し得る。たとえば、nビットの値は、量子化の間にmビットの値に端数を丸められてよく、ここで、nはmよりも大きい。
【0060】
[0079]いくつかの例では、ビデオ符号化器20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数をスキャンするためにあらかじめ定義されたスキャン順序を利用し得る。他の例では、ビデオ符号化器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による使用のために、符号化ビデオデータに関連付けられたシンタックス要素をエントロピー符号化することもできる。
【0061】
[0080]CABACを実行するために、ビデオ符号化器20は、送信されるべきシンボルにコンテキストモデル内のコンテキストを割り当てることができる。コンテキストは、たとえば、シンボルの隣接値が非ゼロであるか否かに関するものとすることができる。CAVLCを実行するために、ビデオ符号化器20は、送信されるべきシンボルの可変長コードを選択することができる。VLCにおける符号語は、相対的により短いコードがよりありそうなシンボルに対応し、より長いコードがよりありそうにないシンボルに対応するように構築され得る。この形で、VLCの使用は、たとえば、送信されるべきシンボルごとに等しい長さの符号語を使用することに対するビット節約を達成することができる。確率決定は、シンボルに割り当てられたコンテキストに基づき得る。
【0062】
[0081]ビデオ符号化器20は、コード化ピクチャおよび関連付けられたデータの表現を形成するビットのシーケンスを含むビットストリームを出力することができる。ビットストリームは、一連のネットワークアブストラクションレイヤ(NAL:network abstraction layer)ユニットを備え得る。NALユニットの各々は、NALユニットヘッダを含み、ローバイトシーケンスペイロード(RBSP:raw byte sequence payload)をカプセル化する。NALユニットヘッダは、NALユニットタイプコードを示すシンタックス要素を含み得る。NALユニットのNALユニットヘッダによって規定されるNALユニットタイプコードは、NALユニットのタイプを示す。RBSPは、NALユニット内にカプセル化された整数個のバイトを包含するシンタックス構造であり得る。いくつかの事例では、RBSPは0ビットを含む。
【0063】
[0082]様々なタイプのNALユニットは、様々なタイプのRBSPをカプセル化することができる。たとえば、第1のタイプのNALユニットはピクチャパラメータセット(PPS)のためのRBSPをカプセル化し得、第2のタイプのNALユニットはコード化スライスのためのRBSPをカプセル化し得、第3のタイプのNALユニットは補助強化情報(SEI:supplemental enhancement information)のためのRBSPをカプセル化し得、以下同様である。PPSは、0以上のコード化ピクチャ全体に適用されるシンタックス要素を包含し得るシンタックス構造である。ビデオコーディングデータのためのRBSPをカプセル化するNALユニットは(パラメータセットおよびSEIメッセージのためのRBSPとは対照的に)、ビデオコーディングレイヤ(VCL)NALユニットと呼ばれる場合がある。コード化スライスをカプセル化するNALユニットは、本明細書ではコード化スライスNALユニットと呼ばれる場合がある。コード化スライスのためのRBSPは、スライスヘッダとスライスデータとを含み得る。
【0064】
[0083]ビデオ復号器30は、ビットストリームを受信することができる。加えて、ビデオ復号器30は、ビットストリームからシンタックス要素を復号するために、ビットストリームを解析することができる。ビデオ復号器30は、ビットストリームから復号されたシンタックス要素に少なくとも部分的に基づいて、ビデオデータのピクチャを再構築することができる。ビデオデータを再構築するための処理は、概して、ビデオ符号化器20によって実行される処理の逆であり得る。たとえば、ビデオ復号器30は、現在のCUのPUのための予測ブロックを決定するために、PUの動きベクトルを使用することができる。ビデオ復号器30は、PUのための予測ブロックを生成するために、PUの1つまたは複数の動きベクトルを使用することができる。
【0065】
[0084]さらに、ビデオ復号器30は、現在のCUのTUに関連付けられた係数ブロックを逆量子化することができる。ビデオ復号器30は、現在のCUのTUに関連付けられた変換ブロックを再構築するために、係数ブロックに対して逆変換を実行することができる。ビデオ復号器30は、現在のCUのPUのための予測ブロックの予測サンプルを、現在のCUのTUの変換ブロックの対応する残差サンプルに加算することによって、現在のCUのコーディングブロックを再構築することができる。ピクチャの各CUのコーディングブロックを再構築することによって、ビデオ復号器30は、ピクチャを再構築することができる。ビデオ復号器30は、出力のためにおよび/または他のピクチャを復号する際に使用するために、復号ピクチャを復号ピクチャバッファに記憶することができる。
【0066】
[0085]MV−HEVCおよび3D−HEVCでは、ビデオ符号化器20は、一連のネットワークアブストラクションレイヤ(NAL)ユニットを備えるマルチレイヤビットストリームを生成することができる。ビットストリームの異なるNALユニットが、ビットストリームの異なるレイヤに関連付けられ得る。レイヤは、同じレイヤ識別子を有するビデオコーディングレイヤ(VCL)NALユニットおよび関連付けられた非VCL NALユニットのセットとして定義され得る。レイヤは、マルチビュービデオコーディングにおけるビューと等価であり得る。マルチビュービデオコーディングでは、レイヤは、異なる時間インスタンスを伴う同じレイヤのすべてのビューコンポーネントを包含し得る。各ビューコンポーネントは、特定の時間インスタンスにおける特定のビューに属するビデオシーンのコード化ピクチャであり得る。3D−HEVCでは、レイヤは、特定のビューのすべてのコード化深度ピクチャ、または特定のビューのコード化テクスチャピクチャのいずれかを包含し得る。同様に、スケーラブルビデオコーディングのコンテキストにおいて、レイヤは、一般に、他のレイヤの中のコード化ピクチャと異なるビデオ特性を有するコード化ピクチャに対応する。そのようなビデオ特性は、一般に、空間解像度と品質レベル(信号対雑音比)とを含む。HEVCおよびそれの拡張では、時間スケーラビリティ(temporal scalability)は、特定の時間レベル(temporal level)を伴うピクチャのグループをサブレイヤと定義することによって、1つのレイヤ内で達成され得る。
【0067】
[0086]ビットストリームの各それぞれのレイヤについて、より低いレイヤの中のデータは、任意のより高いレイヤの中のデータと無関係に復号され得る。スケーラブルビデオコーディングでは、たとえば、ベースレイヤの中のデータは、エンハンスメントレイヤの中のデータと無関係に復号され得る。NALユニットは、単一のレイヤのデータをカプセル化するだけである。ビデオ復号器30が、あるビュー中のピクチャを任意の他のレイヤのデータを参照せずに復号することができる場合、そのビューは「ベースレイヤ」と呼ばれる場合がある。ベースレイヤは、HEVCベース仕様に準拠し得る。したがって、ビットストリームの残りの最高レイヤのデータをカプセル化するNALユニットは、ビットストリームの残りのレイヤの中のデータの復号可能性に影響を及ぼすことなく、ビットストリームから除去され得る。MV−HEVCおよび3D−HEVCでは、より高いレイヤは、さらなるビューコンポーネントを含み得る。
【0068】
[0087]次に、ビデオコーディングのいくつかの一般的な特徴をより詳細に論じる。最初に、動き情報について論じる。各ブロックに対して、動き情報のセットが利用可能であり得る。動き情報のセットは、前方予測方向および後方予測方向のための動き情報を含む。ここで、前方予測方向および後方予測方向は、双方向予測モードの2つの予測方向であり、「前方」および「後方」という用語は、必ずしも幾何学的な意味を有するとは限らず、代わりに、これらの用語は現在のピクチャの参照ピクチャリスト0(RefPicList0)および参照ピクチャリスト1(RefPicList1)に対応する。1つの参照ピクチャリストのみがピクチャまたはスライスに利用可能であるとき、RefPicList0のみが利用可能であり得、スライスの各ブロックの動き情報は常に前方である。
【0069】
[0088]各予測方向に対して、動き情報は参照インデックスと動きベクトルとを含む。場合によっては、簡単のために、動きベクトル自体は、それが関連付けられた参照インデックスを有すると仮定されるように呼ばれる場合がある。参照インデックスは、現在の参照ピクチャリスト(RefPicList0またはRefPicList1)中の参照ピクチャを識別するために使用される。動きベクトルは水平成分と垂直成分とを有する。
【0070】
[0089]ビデオコーディング規格において、ピクチャの表示順序を識別するためにピクチャ順序カウント(POC:picture order count)が広く使用されている。1つのコード化ビデオシーケンス内の2つのピクチャが同じPOC値を有する場合が存在するが、一般に、コード化ビデオシーケンス内でそのようなことは生じない。複数のコード化ビデオシーケンスがビットストリーム中に存在するとき、同じPOC値を有するピクチャは、復号順序の点で、互いにより近傍であり得る。ピクチャのPOC値は、一般に、参照ピクチャリスト構築、HEVCにおけるような参照ピクチャセットの導出、および動きベクトルスケーリングのために使用される。
【0071】
[0090]次に、H.264/AVCにおけるいくつかの特定の技法について論じる。最初に、AVCにおけるマクロブロック構造について論じる。H.264/AVCでは、各インターマクロブロック(MB)は、1つの16×16MB区分と、2つの16×8MB区分と、2つの8×16MB区分と、4つの8×8MB区分の、4つの異なる方法で区分され得る。1つのMB中の異なるMB区分は、各方向に異なる参照インデックス値(RefPicList0またはRefPicList1)を有し得る。MBが4つの8×8MB区分に区分されないとき、MBは各MB区分について各方向に1つの動きベクトルしか有さない。MBが、4つの8×8MB区分に区分されるとき、各8×8MB区分は、各々が各方向に異なる動きベクトルを有し得るサブブロックにさらに区分され得る。
【0072】
[0091]8×8MB区分から、サブブロック、すなわち、1つの8×8サブブロック、2つの8×4サブブロック、2つの4×8サブブロック、または4つの4×4サブブロックを得るための、4つの異なる方法がある。各サブブロックは、各方向に異なる動きベクトルを有し得る。したがって、動きベクトルは、サブブロックレベル以上のレベルに存在する。
【0073】
[0092]次に、AVCにおける時間的直接モードについて説明する。AVCでは、時間的直接モードは、Bスライス中のスキップモードもしくは直接モードのためのMBレベルまたはMB区分レベルのいずれかで有効にされ得る。各MB区分では、動きベクトルを導出するために、現在のブロックのRefPicList1[0]中の現在のMB区分とコロケートされたブロックの動きベクトルが使用される。コロケートブロック中の各動きベクトルはPOC距離に基づいてスケーリングされる。
【0074】
[0093]次に、HEVCにおけるいくつかの特定の技法について論じる。HEVCでは、スライス中の最大コーディングユニット(CU)はコーディングツリーブロック(CTB)と呼ばれる。CTBは4分木を含み、4分木のノードはCUである。技術的に、8×8CTBサイズがサポートされ得るが、CTBのサイズは、HEVCメインプロファイルにおいて16×16から64×64に及ぶ。CUのサイズは、CTBと同じ大きいサイズから8×8の小さいサイズに及ぶ。各CUは1つのモードでコーディングされる。CUがインターコーディングされるとき、CUは、2つもしくは4つの予測ユニット(PU)にさらに区分され得るか、または、さらなる区分が適用されないとき、1つのPUだけになる。CUがインターコーディングされるとき、CUの各PUのために、1つのセットの動き情報が存在する。加えて、動き情報の関連付けられたセットを導出するために、CUの各PUは一意のインター予測モードでコーディングされる。
【0075】
[0094]
図2は、CUのPUを定義するための8つの区分モード33A〜33H(「区分モード33」)を示す概念図である。PUは、CUを区分することによって定義される予測が適用される領域である。
図2に示すように、ピクチャ中の実際のオブジェクトの境界に一致するように、CUの区分を円滑にするために、PUは形の点で方形になると限定されない。区分モードに応じて、各CUは、1つ、2つ、または4つのPUを含む。いくつかの例では、2つのPUが1つのCU中に存在するとき、PART_2N×N 33B区分モードおよびPART_N×2N 33C区分モードにあるように、PUは半分のサイズの矩形であり得る。他の例では、2つのPUが1つのCU中に存在するとき、PUは、PART_2N×nU 33E区分モード、PART_2N×nD 33F区分モード、PART_nL×2N 33G区分モード、およびPART_nR×2N 33H区分モードにおけるように、CUのサイズの1/4または3/4のサイズを有する2つの方形であり得る。PART_2N×2N 33A区分モードおよびPART_N×N 33D区分モードがイントラコード化CUのために使用される。PART_N×N 33D区分モードは、対応するCUサイズが最小CUサイズに等しいときだけ可能にされる。
【0076】
[0095]
図3は、CU内の変換ツリー構造34を示す概念図である。各CUは、4分木である、1つの変換ツリーに対応し、そのリーフは変換ユニット(TU)である。変換ツリー構造34中のTUの各々は、CUの4分木区分によって定義される、変換プロセスおよび量子化プロセスが適用される方形領域である。
図3に示すように、TUは形の点で常に方形である。TUは、32×32サンプルの大きさから4×4サンプルに至るまでであり得る。最大4分木深度、すなわち、変換ツリー構造34がリーフノードを形成するためにどの程度までスプリットされ得るかは、調整可能であり、スライスヘッダシンタックス中で規定される。インターCUの場合、TUは、PUよりも大きい場合があり、すなわち、TUはPU境界を包含し得る。しかしながら、イントラCUの場合、TUはPU境界を超えることができない。
【0077】
[0096]1に等しいシンタックス要素rqt_root_cbfは、現在のCUのためのtransform_treeシンタックス構造が存在することを規定する。0に等しいシンタックス要素rqt_root_cbfは、現在のCUのためのtransform_treeシンタックス構造が存在しないことを規定する。シンタックス要素rqt_root_cbfが存在しないとき、その値は1に等しいと推論される。シンタックス要素rqt_root_cbfが0に等しいとき、変換ツリーは1つのノードのみを包含し、つまり、その変換ツリーはさらにスプリットされず、split_transform_flagは0に等しい。変換ツリー内部のノードの場合、そのノードが1に等しいsplit_tranform_flagを有する場合、そのノードは4つのノードにさらにスプリットされ、変換ツリーのリーフは0に等しいsplit_transform_flagを有する。
【0078】
[0097]簡単のために、TUすなわち変換ツリーが変換を有さないブロックに対応する場合、それは、依然として、TUすなわち変換ユニットと見なされるが、これは、変換が適用されない場合ですら、変換自体の階層は依然として存在するためである。一般に、変換がスキップされるブロックは変換ユニットに対応する。
【0079】
[0098]1に等しいTUのコード化ブロックフラグ(cbf)は、TUが1つまたは複数の非ゼロ変換係数レベルを包含すること、すなわち、0に等しくないことを規定する。0に等しいTUのCBFは、TUのすべての変換係数レベルが0に等しいことを規定する。CBFは、TUの各成分に対して設定され、すなわち、CBFは、ルミナンス(Y)成分ならびにクロミナンス(CbおよびCr)成分の各々に対して設定される。
【0080】
[0099]HEVC規格では、現在の予測ユニット(PU)のための動きを予測するための、マージモードおよび高度動きベクトル予測(AMVP)モードと名付けられた、2つのインター予測モードが存在する。スキップモードは、マージモードの特殊事例と見なされる。AMVPモードまたはマージモードのいずれかで、複数の動きベクトル予測子を含む動きベクトル(MV)候補リストが維持される。MV候補リストから候補のうちの1つを選択することによって、動きベクトル、ならびに、マージモードにおいて関連付けられた参照インデックスが現在のPUのために生成される。
【0081】
[0100]マージモードでは、MV候補リストは5つまでの候補を含む。マージ候補は、動き情報、たとえば、参照ピクチャリスト(リスト0およびリスト1)ならびに関連付けられた参照インデックスの両方に対応する動きベクトルのセットを包含し得る。マージ候補が現在のPUのためのマージインデックスによって識別される場合、現在のPUの予測のために動きベクトルおよび関連付けられた参照ピクチャが使用される。
【0082】
[0101]AMVPモードでは、MV候補リストは2つのみの候補を含む。AMVP候補は、両方の参照ピクチャリスト(リスト0およびリスト1)に対応する動きベクトルを包含する。AMVP候補が現在のPUのためのAMVPインデックスによって識別される場合、AMVP候補は動きベクトルのみを含むため、参照インデックスは、AMVPインデックスとともに、リスト0またはリスト1のいずれかからの各潜在的な予測方向のために明示的にシグナリングされる必要がある。AMVPモードでは、予測動きベクトルは、動きベクトル差分をシグナリングし、動きベクトルスケーリングを実行することによって、さらに改良され得る。
【0083】
[0102]上記で説明したように、マージ候補は、動き情報の完全セットに対して含むが、AMVP候補は、特定の予測方向のための1つの動きベクトルおよび明示的にシグナリングされた参照インデックスのみを含む。両方のモードのための候補は、現在のPUの同じ空間的隣接ブロックおよび時間的隣接ブロック(temporal neighboring blocks)から同様に導出される。
【0084】
[0103]
図4Aおよび
図4Bは、それぞれ、マージモードおよびAMVPモードのための空間的隣接候補を示す概念図である。空間的MV候補は、現在のPU(PU0)のための、
図4Aおよび
図4Bに示す隣接ブロックから導出されるが、ブロックから候補を生成するための方法はマージモードおよびAMVPモードに対して異なる。
【0085】
[0104]マージモードでは、
図4Aに示す、番号付けされた順序で、PU0 90の隣接ブロックから4つまでの空間的MV候補が導出され得る。
図4Aに示す例では、この順序は、次の通り、すなわち、左ブロック(0)、上ブロック(1)、右上ブロック(2)、左下ブロック(3)、および左上ブロック(4)である。
【0086】
[0105]AMVPモードでは、
図4Bに示す、番号付けされた順序で、PU0 92の隣接ブロックから2つまでの空間的MV候補が導出され得る。
図4Bに示すように、PU0 92の隣接ブロックは2つのグループ、すなわち、左下ブロック(0)と左ブロック(1)とを含む左グループ、および右上ブロック(2)と、上ブロック(3)と、左上ブロック(4)とを含む上グループに分割される。各グループに対して、PU0 92のための明示的なシグナリングされた参照インデックスと同じ参照ピクチャを指す隣接ブロックのための動きベクトルは、そのグループの最終的なMV候補を形成するように選ばれている最高優先順位を有する。いくつかの例では、隣接ブロックのうちのいずれも、明示的にシグナリングされた参照ピクチャを指す動きベクトルを有さない可能性がある。そのようなMV候補が発見され得ない場合、そのグループの最終的なMV候補を形成するために、第1の利用可能な動きベクトルがスケーリングされることになる。この場合、いずれの時間的な距離差分も補償されることになる。
【0087】
[0106]
図5Aは、現在のPU(PU0)94のための時間的動きベクトル予測(TMVP)候補を示す概念図である。TMVP候補は、有効にされ、利用可能である場合、空間的MV候補の後にMV候補リストに追加される。TMVP候補のための動きベクトル導出のプロセスは、マージモードとAMVPモードの両方に対して同じである。しかしながら、マージモードでは、TMVP候補のためのターゲット参照インデックスは常に0に設定される。
【0088】
[0107]TMVP候補導出のためのプライマリブロックロケーションは、
図5AでブロックT 97として示される、PU0 94のコロケートPU(PU1)96の外部の右下ブロックである。右下ブロックT97は、空間的隣接候補を生成するために使用される上ブロックおよび左ブロックに対するバイアスを補償するように選択される。しかしながら、右下ブロックTがPU0 94の現在のLCU98の外部(すなわち、位置99)に位置するか、または右下ブロックT97のための動き情報が利用可能でない場合、TMVP候補導出のために使用されるブロックは、PU0 94の中央ブロックT95に置換される。
【0089】
[0108]
図5Bは、現在のピクチャ102中の現在のP100のためのTMVPモードに対するMVスケーリングを示す概念図である。TMVP候補のための動きベクトルは、スライスレベルで示された、コロケートピクチャ106のコロケートPU104から導出される。上記で説明した、AVC中の時間的直接モードと同様に、TMVP候補の動きベクトルは、
図5Bに示すように、コロケートテンポラル距離(すなわち、コロケートピクチャ106とコロケート参照ピクチャ107との間の距離)と(すなわち、現在のピクチャ102と現在の参照ピクチャ103との間の)現在のテンポラル差分との間の差分を補償するために実行される、スケーリングを使用して、現在のPU100のために生成され得る。
【0090】
[0109]次に、HEVCにおける動きベクトル予測の他の態様について論じる。動きベクトルスケーリングでは、動きベクトルの値は提示時間におけるピクチャの距離に比例すると仮定される。動きベクトルは、2つのピクチャ、すなわち、参照ピクチャと(すなわち、包含ピクチャ(containing picture))動きベクトルを包含するピクチャとを関連付ける。別の動きベクトルを予測するためにある動きベクトルが利用されるとき、包含ピクチャと参照ピクチャの距離は、それらのピクチャのピクチャ順序カウント(POC)値に基づいて計算される。予測されるべき動きベクトルに対して、その包含ピクチャと関連付けられた参照ピクチャの両方は異なり得る。この場合、(POCに基づいて)新しい距離が計算される。動きベクトルはこれらの2つのPOC距離に基づいてスケーリングされる。空間的隣接候補の場合、2つの動きベクトルに対する包含ピクチャは同じであるが、参照ピクチャは異なる。HEVCでは、動きベクトルスケーリングは、空間的隣接候補および時間的隣接候補のためのTMVPとAMVPの両方に適用される。
【0091】
[0110]人工的動きベクトル候補生成では、動きベクトル候補リストが完全でない(すなわち、指定された数の候補未満が利用可能である)場合、そのリストが指定された数の候補を含むまで、人工的動きベクトル候補が生成されて、リストの最後に挿入され得る。マージモードでは、2つのタイプの人工的MV候補が存在する。すなわち、Bスライスに対してのみ導出される結合候補、および、第1のタイプが十分な人工的候補を提供しない場合、AMVPに対してのみ使用されるゼロ候補である。候補リスト中にすでにあり、必要な動き情報を有する候補の対の各々に対して、リスト0中のピクチャを指す第1の候補の動きベクトルと、リスト1中のピクチャを指す第2の候補の動きベクトルの結合に基づいて、双方向結合動きベクトル候補が導出される。
【0092】
[0111]候補挿入のための刈り込みプロセスで、異なるブロックからの候補は偶然同じである場合があり、これはマージ/AMVP候補リストの効率を低減する。刈り込みプロセスはこの問題に対処するために適用され得る。刈り込みプロセスは、ある状況において同一候補を挿入するのを避けるために、現在の候補リスト中のある候補を他の候補と比較する。複雑さを低減するために、各潜在的な候補をすべての他の既存の候補と比較する代わりに、限定された数の刈り込みプロセスのみが適用され得る。
【0093】
[0112]次に、HEVCにおけるデブロッキングフィルタプロセスについて説明する。デブロッキングフィルタプロセスは、復号プロセスと同じ順序でビデオブロックの各CUのために実行される。第1に、垂直エッジがフィルタリングされ(すなわち、水平フィルタリング)、次いで、水平エッジがフィルタリングされる(すなわち、垂直フィルタリング)。デブロッキングフィルタリングは、両方ともルーマ成分およびクロマ成分に関する、フィルタリングされるべきであると決定されたCU内のブロック境界に適用される。いくつかの例では、複雑さを低減するために、8×8ブロック境界はフィルタリングされるが、4×4ブロック境界は処理されない。2つの種類の境界、すなわち、TU境界およびPU境界がデブロッキングフィルタプロセスに関与する。CU境界は必然的にTU境界およびPU境界でもあるため、CU境界も考慮される。
【0094】
[0113]
図6は、デブロッキングフィルタプロセスの例示的な処理フロー108を示すフローチャートである。境界は3つのフィルタリング状態値、すなわち、フィルタリングなし、弱いフィルタリング、および強いフィルタリングを有し得る。各フィルタリング決定は、境界強度Bと、しきい値βおよびt
Cとに基づく。
【0095】
[0114]
図7は、デブロッキングフィルタプロセスのための境界強度(B)計算110の例示的な動作を示すフローチャートである。境界強度(B)は、フィルタリングプロセスが境界のためにどの程度強く必要とされ得るかを反映する。たとえば、2のB値は強いフィルタリングを示し、1のB値は弱いフィルタリングを示し、0のB値はデブロッキングフィルタリングがないことを示す。
【0096】
[0115]PおよびQをフィルタリングに関与するブロックと定義し、この場合、Pは、デブロッキングされるべき境界の左(垂直エッジの場合)または上(水平エッジの場合)に対して位置するブロックを表し、Qは、デブロッキングされるべき境界の右(垂直エッジの場合)または上(水平エッジの場合)に対して位置するブロックを表す。
図7に示した動作は、イントラコーディングモード、非ゼロ変換係数の存在、参照ピクチャ、動きベクトルの数、および動きベクトル差分に基づいて、B値がどのように計算されるかを示す。
【0097】
[0116]
図8は、デブロッキングフィルタプロセスのためのコーディングツリーユニット(CTU)境界113におけるグリッド112中のピクセル間のB計算のために再使用または参照される情報を示す概念図である。Bは4×4ブロックベースで計算されるが、Bは8×8グリッドに再度マッピングされる。4×4グリッド中のラインからなる8つのピクセルに対応するBの2つの値の最大値が、8×8グリッド中の境界のためのBとして選択される。CTU境界113において、ラインバッファメモリ要件を削減するために、
図8に示すように、左側にまたは上側に(4×4グリッド上の)すべての第2のブロックの情報が再使用される。
【0098】
[0117]フィルタオン/オフ決定、強いフィルタおよび弱いフィルタの選択、ならびに弱いフィルタリングプロセスにしきい値β’およびt
C’が関与する。これらのしきい値は、下の表1に示すように、ルーマ量子化パラメータQの値から導出される。
【0100】
変数βは次のようにβ’から導出される。
β = β′ * ( 1 << ( BitDepth
Y - 8 ) )
変数t
Cは次のようにt
C’から導出される。
t
C = t
C′ * ( 1 << ( BitDepth
Y - 8 ) )
【0101】
[0118]
図9は、境界114におけるデブロッキングフィルタプロセスのためのオン/オフフィルタ決定および強い/弱いフィルタ選択に関与するPブロック116ならびにQブロック117中のピクセルを示す概念図である。フィルタオン/オフ決定は、計算上の複雑さを低減するために、(
図9で、黒の輪郭線のボックスを使用して示した)ユニットとして各々グループ化された、境界114を超える4本のラインのピクセルを使用して行われる。フィルタが4本のラインの第1のセット118のためにオンであるか、またはオフであるかを決定するために、4本のラインの第1のセット118中の2つのボックスの各々に含まれた6つのピクセルが使用される。フィルタが4本のラインの第2のセット119のためにオンであるか、またはオフであるかを決定するために、4本のラインの第2のセット119中の2つのボックスの各々に含まれた6つのピクセルが使用される。
【0102】
[0119]オン/オフフィルタ決定のために、以下の変数が定義される。
dp0 = | p
2,0 - 2*p
1,0 + p
0,0 |
dp3 = | p
2,3 - 2*p
1,3 + p
0,3 |
dq0 = | q
2,0 - 2*q
1,0 + q
0,0 |
dq3 = | q
2,3 - 2*q
1,3 + q
0,3 |
dp0+dq0+dp3+dq3<βである場合、4本のラインの第1のセット118のためのフィルタリングがオンにされ、強い/弱いフィルタ選択プロセスが適用される。この条件が満たされない場合、4本のラインの第1のセット118のために何のフィルタリングも行われない。
【0103】
[0120]加えて、この条件が満たされる場合、変数dE、dEp1、およびdEp2は次のように、すなわち、
dEが1に等しいように設定される。
dp0 + dp3 < (β + ( β >> 1 )) >> 3 である場合、変数dEP1は、1に等しいように設定される
dq0 + dq3 < (β + ( β >> 1 )) >> 3 である場合、変数dEq1は、1に等しいように設定される
フィルタオン/オフ決定は、4本のラインの第2のセット119のために上記で説明したのと同様の方法で行われる。
【0104】
[0121]フィルタリングがオンにされる場合、強いフィルタリングと弱いフィルタイングとの間で決定が行われる。関与するピクセルは、
図9に示したように、フィルタオン/オフ決定のために使用されたピクセルと同じである。以下の2つの条件セットが満たされた場合、4本のラインの第1のセット118のフィルタリングのために強いフィルタが使用される。さもなければ、弱いフィルタが使用される。
(1) 2*(dp0+dq0) < ( β >> 2 ), | p3
0 - p0
0 | + | q0
0 - q3
0 | < ( β >> 3 )および| p0
0 - q0
0 | < ( 5* t
C + 1 ) >> 1
(2) 2*(dp3+dq3) < ( β >> 2 ), | p3
3 - p0
3 | + | q0
3
- q3
3 | < ( β >> 3 )および| p0
3 - q0
3 | < ( 5* t
C + 1 ) >> 1
4本のラインの第2のセット119のために強いフィルタリングを選択するかまたは弱いフィルタリングを選択するかに関する決定は類似の方法で行われる。
【0105】
[0122]強いフィルタリングの場合、フィルタリングされたピクセル値は以下の方程式によって取得される。3つのピクセルは、Pブロック116およびQブロック117の各々のための入力として4つのピクセルを使用して修正されることに留意されたい。
P
0’ = ( p
2 + 2*p
1 + 2*p
0 + 2*q
0 + q
1 + 4 ) >> 3
q
0’ = ( p
1 + 2*p
0 + 2*q
0 + 2*q
1 + q
2 + 4 ) >> 3
p
1’ = ( p
2 + p
1 + p
0 + q
0 + 2 ) >> 2
q
1’ = ( p
0 + q
0 + q
1 + q
2 + 2 ) >> 2
p
2’ = ( 2*p
3 + 3*p
2 + p
1 + p
0 + q
0 + 4 ) >> 3
q
2’ = ( p
0 + q
0 + q
1 + 3*q
2 + 2*q
3 + 4 ) >> 3
【0106】
[0123]弱いフィルタリングの場合、フィルタリングされたピクセル値は以下の方程式によって取得される。2つのピクセルは、Pブロック116およびQブロック117の各々のための入力として3つのピクセルを使用して修正されることに留意されたい。
デルタ(Δ)は次のように定義される。
Δ= ( 9 * ( q
0 - p
0 ) - 3 * ( q
1 - p
1 ) + 8 ) >> 4
abs(Δ)がt
C*10未満であるとき、
Δ= Clip3( - t
C , t
C , Δ)
P
0’ = Clip1
Y( p
0 + Δ)
q
0’ = Clip1
Y( q
0 - Δ)
dEp1が1に等しい場合、
Δp = Clip3( -( t
C >> 1), t
C >> 1, ( ( ( p
2 + p
0 + 1 ) >> 1 ) - p
1 + Δ) >>1 )
p
1’ = Clip1
Y( p
1 + Δp )
dEq1が1に等しい場合、
Δq = Clip3( -( t
C >> 1), t
C >> 1, ( ( ( q
2 + q
0 + 1 ) >> 1 ) - q
1 - Δ) >>1 )
q
1’ = Clip1
Y( q
1 + Δq )
【0107】
[0124]上記で説明したデブロッキング決定はルーマ成分をフィルタリングするためである。クロマフィルタリングのための境界強度Bはルーマから継承される。B>1である場合、クロマフィルタリングが実行される。1つのフィルタのみが適用され得るため、クロマのために何のフィルタ選択プロセスも実行されない。フィルリングされたサンプル値p
0’およびq
0’は、次のように導出される。
Δ= Clip3( -t
C, t
C, ( ( ( ( q
0 - p
0 ) << 2 ) + p
1 - q
1 + 4 ) >> 3 ) )
p
0’ = Clip1
C( p
0 + Δ)
q
0’ = Clip1
C( q
0 - Δ)
【0108】
[0125]次に、3D−HEVCにおけるいくつかの特定の技法について論じる。HEVC規格の3Dビデオ拡張(3D−HEVC)はJCT−3Vによって開発中である。3D−HEVC拡張は、マルチビュービデオに加えて深度フォーマットのコーディングをサポートする。
【0109】
[0126]
図10は、V3がベースビューを示し、非ベースビュー(すなわち、V1またはV5)中のピクチャが同じ時間インスタンスのベースビュー中のピクチャから予測され得る、3つのビューの事例に対するマルチビュー予測構造120を示す概念図である。
図10に示すマルチビュー予測構造120を使用するビュー間サンプル予測は、HEVCのマルチビュー拡張(MV−HEVC)によってサポートされる。MV−HEVCと3D−HEVCは両方とも、ベースビューまたはテクスチャビュー(すなわち、V3)がHEVC復号器によって復号可能であるような形でHEVCに対して互換性がある。
【0110】
[0127]MV−HEVCでは、非ベースビュー(すなわち、V1またはV5)中の現在のピクチャは、これらのピクチャのすべてを現在のピクチャのための参照ピクチャリスト中に含めることによって、同じタイムインスタンスの同じビュー中のピクチャと参照ビュー中のピクチャの両方によって予測され得る。現在のピクチャの参照ピクチャリストは、したがって、時間的参照ピクチャとビュー間参照ピクチャの両方を包含する。時間的参照ピクチャに対応する参照インデックスに関連付けられた動きベクトルは、時間的動きベクトルとして示される。ビュー間参照ピクチャに対応する参照インデックスに関連付けられた動きベクトルは、視差動きベクトルとして示される。
【0111】
[0128]3D−HEVC拡張は、ビュー間サンプル予測が3D−HEVCによってやはりサポートされるように、MV−HEVCのすべての特徴をサポートする。加えて、3D−HEVC拡張は、MV−HEVC拡張によってサポートされない、より高度なテクスチャオンリーコーディングツール(texture-only coding tools)および深度関連/依存コーディングツール(depth related/dependent coding tools)をサポートする。テクスチャオンリーコーディングツールは、同じオブジェクトに属するビュー間の対応するブロックの識別を必要とし得る。視差ベクトル導出は、したがって、3D−HEVCにおける基本的な技術である。
【0112】
[0129]マルチビューコーディング技術の1つの主な態様は、視差ベクトルの正確で効率的な導出によって、異なるビューの対応するブロックを識別することである。3D−HEVCでは、隣接ブロックベースの視差ベクトル(NBDV)導出は、HEVCにおけるAMVPモードおよびマージモードに類似した方法で設計される。しかしながら、視差ベクトルは隣接ブロックだけから導出され、その結果、視差ベクトルのさらなる改良またはスケーリングのために追加のビットは必要とされない。ビュー間サンプル予測が有効にされるとき、ビュー間参照ピクチャに対応する動きベクトル、すなわち、視差動きベクトルは、通常の動きベクトル、すなわち、時間的動きベクトルとともに、現在のブロックのための動きフィールド中にすでに存在する。NBDV導出の基本的な考えは、空間的隣接ブロックおよび時間的隣接ブロックのみを確認することによって、動きフィールド中の視差動きベクトルを使用することである。
【0113】
[0130]
図11は、現在のブロック122のためのNBDV導出のためにアクセスされる空間的隣接ブロックベースがマージモードおよびAMVPモードのためにアクセスされる空間的隣接ブロックと同じである、NBDV導出のための空間的隣接ブロックを示す概念図である。NBDVのためにアクセスされる空間的隣接ブロックA0、A1、B0、B1、およびB2は、
図4Aおよび
図4B、ならびに
図11に示した、AMVPモードおよびマージモードのためにアクセスされる空間的隣接ブロックと同じである。
【0114】
[0131]しかしながら、いずれの関連付けられた視差動きベクトルを有する現在のブロック122の空間的隣接ブロックが存在しない可能性が高い。この場合、時間的隣接ブロックも確認される。現在のブロック122の時間的隣接ブロックは、TMVPモードで使用されるような、コロケートピクチャ、加えて、視差動き補償を使用するより良好な機会を有し得る別のピクチャ、たとえば、ランダムアクセスピクチャ、または最低temporalIdを有するピクチャの中のブロックである。
図5Aに示したTMVPモードと同様の各時間的ピクチャに対して、中央ブロックおよび右下ブロックが確認される。現在のブロック122のすべての空間的隣接ブロックおよび時間的隣接ブロックが順に確認される。視差動きベクトルが識別されると、識別された視差動きベクトルと同じになるように現在のブロック122の視差ベクトルが導出され、NBDV導出プロセスは終了する。現在のブロック122の視差ベクトルは、たとえば、ビュー間動き予測およびビュー間残差予測におけるように、参照ビューのピクチャ中のビュー間参照ブロックを識別するために使用される。
【0115】
[0132]3D−HEVCでは、隣接ブロックのためにさらに使用されるように、NBDV導出の結果として、いくつかの導出された視差ベクトルを記憶することが可能であり得る。そのような導出された視差ベクトルは、暗黙的視差ベクトル(IDV:implicit disparity vectors)と名付けられる。たとえば、NBDV導出が隣接ブロックからのいずれの視差動きベクトルも識別しない場合、現在のブロック122のための最終的な視差ベクトルを導出するために使用される空間的隣接ブロックのいずれかの利用可能なIDVを識別するために、空間的隣接ブロックが再度確認され得る。最近、3D−HEVCは、より少ない空間的隣接ブロックおよび時間的隣接ブロックを確認することによって、NBDV方法の簡略化も含めた。
【0116】
[0133]3D−HEVCにおけるビュー合成予測(VSP)は、2つの主な技術的モジュール、すなわち、深度指向性NBDV(Do−NBDV:Depth-Oriented NBDV)および後方ビュー合成予測(BVSP)によって実現される。
【0117】
[0134]Do−NBDV導出では、NBDV方式によって生成された視差ベクトルは、コード化深度マップ中の情報を使用してさらに改良され得る。このようにして、視差ベクトルの精度は、ベースビュー深度マップ中でコーディングされた情報を利用することによって向上され得る。改良ステップは次のように説明される。
1.同じアクセスユニットの前にコーディングされた(ベースビューなど)参照深度ビューピクチャ中の現在のPUのためにNBDV方式によって導出された視差ベクトルに基づいて、対応する深度ブロックを位置特定し、対応する深度ブロックのサイズは現在のPUのサイズと同じである。
2.4つのコーナーピクセル深度値の最大値に基づいて、対応する深度ブロックから現在のPUのための視差ベクトルを計算する。最大値は、計算された視差ベクトルの水平成分に等しいように設定されるが、視差ベクトルの垂直成分は0に設定される。
【0118】
[0135]NBDV方式からの視差ベクトルは、次いで、Do−NBDV方式から新しく導出された視差ベクトルによって置換され、現在のPUのためのビュー間動き予測のために、(Do−NBDVからの)改良された視差ベクトルが使用される。しかしながら、(NBDVからの)改良されていない視差ベクトルは、現在のPUのためのビュー間残差予測のために使用され得る。加えて、改良された視差ベクトルは、BVSPモードでコーディングされる場合、現在のPUの1つの動きベクトルとして記憶され得る。
【0119】
[0136]BVSPモードは、その開始動きベクトルを視差動きベクトルに設定させた特殊マージモード候補として実現される。そのような候補はBVSP候補と呼ばれる。現在のPUの空間的隣接ブロックがBVSPモードでコーディングされるとき、現在のPUのための追加のBVSP候補を定義するために、隣接ブロックからの関連付けられた視差ベクトルおよび参照ビューインデックスが使用される。そのような空間的隣接ブロックから導出された空間的マージモード候補は、1に等しいBVSPフラグを用いてタグ付けされる。
【0120】
[0137]
図12は、現在のピクチャ125中の現在のPU126の異なるサブPUのために異なる動きベクトルを割り当てるBVSPモード124を示す概念図である。本開示では、3D−HEVCにおける現在のBVSPモードは、サブPU BVSPモードと呼ばれる場合がある。BVSPモードでは、現在のPU126の空間的隣接ブロックまたは時間的隣接ブロックから現在のPU126のための第1の動き情報が決定される。上記で説明したように、第1の動き情報は、マージモード候補リスト中のBVSP候補として選択され得る。第1の動き情報は、視差動きベクトルと、ビュー間参照ピクチャ128を識別する、関連付けられた参照ビューインデックスとを含む。BVSPモードの第1のステップは、上記で説明したNBDV導出と実質的に同様であり得る。
【0121】
[0138]現在のPU126は、サブ領域またはサブPUにさらに区分される。たとえば、そのサイズがN×Mによって示されるPUは、K×L(式中、KおよびLは8もしくは4であり得るが、両方とも4であり得ない)に等しいサイズを有する、いくつかのサブ領域またはサブPUにさらに区分され得る。各サブ領域またはサブPUに対して、第1の視差ベクトルに関連付けられた参照ビューインデックスによって識別されたビュー間参照ピクチャ128に関連付けられた参照深度ビューピクチャ129中の深度ブロック130のうちの対応する1つの深度ブロックにアクセスすることによって導出された別個の視差動きベクトルを含む第2の動き情報が決定される。より具体的には、現在のPU126の各サブPUに対して、深度ブロック130のうちの対応する1つの深度ブロックの4つのコーナーピクセルの最大値が選択され、サブPUのための視差動きベクトルの水平成分に変換され、視差動きベクトルはゼロに等しい垂直成分を有する。BVSPモードの第2のステップは、上記で説明したDo−NBDV導出と実質的に同様であり得る。
【0122】
[0139]現在のPU126の各サブ領域またはサブPUがその動き情報を予測させた後、各サブPUのための第2の動き情報に基づいて、ビュー間参照ピクチャ128から現在のPU126の各サブ領域またはサブPUを予測するために、HEVCの動き補償エンジンが使用され得る。BVSPモードでは、現在のPU126の各サブPUを予測するために動き補償を実行した後、現在のPU126のために選択された第1の動き情報内に含まれた第1の視差動きベクトルだけが現在のPU126のために記憶され、サブPUのための第2の動き情報内に含まれた別個の視差ベクトルは廃棄される。
【0123】
[0140]BVSPモードで、各PUは、2つ以上のセットの動き情報を有し得、すなわち、PU内部のサブPUは異なる動きベクトルを有し得る。これは、各PUが1つのセットの動き情報のみを有するHEVCとは異なる。一般に、BVSPモードでは、PU内部のサブPUは異なる動きベクトルを有し得るが、サブPUのための参照インデックス値は同じである。BVSPモードの複雑さの増大は、主に電力消費の増大にあり、最悪の複雑さは、サブPUのサイズ、ならびに、双予測状態が、HEVCにおいて有効にされる動き補償ブロックのサイズよりも決して小さくない限り、HEVC動き補償と同様である。
【0124】
[0141]3D−HEVCでは、関連付けられたテクスチャビューの後、深度ビューがコーディングされる。深度ビュー中のPUがコーディングされるとき、PUのコロケート領域内のテクスチャビューの動き情報は、現在のPUのためのマージ候補を作成し得る。この場合、マージ候補は、フルセットの動き情報を包含する動きパラメータ継承(MPI)候補と呼ばれる場合がある。
【0125】
[0142]JCT3V−E0184、Jicheng Anら、3D−CE3.h関連:Sub−PU level inter−view motion prediction」、ITU−T SG16 WP3とISO/IEC JTC1/SC29/WG11との3Dビデオコーディング拡張開発に関する共同研究部会、第5回会議、ウィーン、オーストリア、2013年7月27日〜8月2日では、ビュー間マージ候補、すなわち、ビュー間参照ピクチャ中の参照ブロックから導出された候補に対するサブPUレベルのビュー間動き予測方法の使用が説明されている。
【0126】
[0143]
図13は、現在のビュー(V1)132中の現在のPU134のためのサブPUレベルのビュー間動き予測131を示す概念図である。ビュー間動き予測モードが有効にされるとき、現在のPU134は、参照ビュー(V0)136中の視差ベクトルによって識別された現在のPUと同じサイズを有する参照領域に対応し得る。場合によっては、参照エリアは、現在のPU134のための1つのセットの動き情報のみの生成のために必要とされるよりもより豊富な動き情報を有し得る。したがって、現在のPU134が複数のサブPUに区分され、視差ベクトル(DV)が使用される、現在のPU134のサブPUの各々のための参照ビュー(V0)136中の参照ブロック138を識別する、サブPUレベルのビュー間動き予測(SPIVMP:sub-PU level inter-view motion prediction)方法が提案される。SPIVMPモードでは、現在のPU134のサブPUの各々は、現在のPU134が複数のセットの動き情報を包含し得るように、参照ブロック138から複写されたフルセットの動き情報を有する。SPIVMPモードはまた、上記で説明したサブPU BVSPモードと同様の特殊マージモード候補としてシグナリングされ得る。
【0127】
[0144]Ying ChenおよびLi Zhangに対する、「ADVANCED MOTION PREDICTION FOR 3D VIDEO CODING」と題する、2013年7月24日に出願した米国仮出願第61/858,089号では、MPI候補がサブPUレベルのビュー間動き予測と同様の方法でも拡張され得ることが提案されている。たとえば、現在の深度PUが、複数のPUを包含するコロケート領域を有する場合、現在の深度PUは、各々が異なるセットの動き情報を有し得るサブPUに分離され得る。この方法はサブPU MPIと呼ばれる場合がある。
【0128】
[0145]上記で説明した、サブPU BVSPと、サブPUビュー間動き予測と、サブPU MPIとを含む、3D−HEVCにおけるサブPU設計は、いくつかの問題を経験する可能性がある。
【0129】
[0146]第1に、上記で説明したように、サブPU BVSPモードでは、現在のPUのために選択された視差動きベクトルによって識別されたビュー間参照ピクチャの対応する深度ブロックに基づいて導出された別個のサブPU動き情報に基づいて現在のPUのサブPUの各々を予測するために、動き補償が実行される。しかしながら、サブPUの各々を予測するために動き補償を実行した後、現在のPUに対して、各参照ピクチャリストに対応する視差動きベクトルのみが記憶される。この場合、後続PUを予測するために現在のPUが使用されるとき、現在のPUのサブPUは、サブPU BVSPモードが動きベクトル予測の精度の改善に与える影響がほとんどないように、同じ動きベクトルを有すると見なされる。
【0130】
[0147]第2に、現在のサブPU設計は、レイヤ間予測が有効にされるときのみ有効にされる。しかしながら、サブPU設計は、シングルレイヤ予測における動き補償使用の精度を改善するために適用可能であり得る。加えて、現在のサブPU設計は、候補動きベクトルの何のさらなる改良も可能にされないマージインター予測モードにのみ適用可能である。したがって、現在のサブPU設計は、動き改良が可能にされる動き予測モード、たとえば、HEVCベースのコーデックのためのAMVPモードのために有効にされ得ない。
【0131】
[0148]第3に、HEVCにおいて使用されるデブロッキングフィルタは、一般に、3D−HEVCを含めて、HEVC拡張において変更されない状態に保たれる。しかしながら、HEVCでは、1つのPU内部の同じTU中のブロックは1つの単一ピクチャのブロック全体として動き補償されると仮定されるため、HEVCにおける現在のデブロッキングフィルタ設計は、サブPUの境界をフィルタリングすることができない。この場合、何のブロッキングアーティファクトも、PU内に存在する、またはPUから除去されると予想されない。3D−HEVC拡張におけるデブロッキングフィルタ設計を変更せずに、サブPU境界をデブロッキングするために、本開示は、デブロッキングフィルタプロセスが適用される前に、サブPUをデブロッキングフレンドリーな構造に変換することについて説明する。たとえば、デブロッキングフィルタリングプロセスの前に、サブPU設計を利用する各PUは、1つまたは複数のコーディングツリーに変換されることが可能であり、この場合、各サブPUは、それぞれのコーディングツリーのノードであるCU中のPUになり得る。この例では、コーディングツリー構造はHEVCシンタックス設計に対して互換性がある。
【0132】
[0149]しかしながら、上記の解決策でいくつかの追加の問題が生じる場合がある。第1の例として、予測ユニットA(PU A)が通常のインター予測を用いてコーディングされ、PU Aと同じCU内の別の予測ユニット(PU B)がサブPUを用いてコーディングされる場合、これらのPUは、2つのCUに変換されるニーズになり、フィルタリングは、サブ区分されていないPU A内部で生じ得る。第2の例として、1つのTUがサブPUを有する少なくとも1つのPUを含むCU全体のために適用されるとき、そのCUは複数のCUに変換され得、同じTUを有する複数のCUはHEVCによってサポートされない。
【0133】
[0150]本開示は、上記で説明した問題に対処するためのいくつかの技法について説明する。
【0134】
[0151]上記で説明した第1の問題に関して、3D−HEVCにおけるサブPU BVSPモードで、現在のPUのために選択された視差動きベクトルによって識別されたビュー間参照ピクチャの対応する深度ブロックに基づいて導出された別個のサブPU動き情報に基づいて、現在のPUのサブPUの各々を予測するために、動き補償を実行した後、各参照ピクチャリストに対応する視差動きベクトルのみが現在のPUのために記憶される。PUの動き補償が現在のPUの複数のサブPUのために導出された別個の動き情報に含まれた複数の動きベクトルに基づく場合ですら、単一の視差動きベクトルが各参照ピクチャリストのために記憶される。
【0135】
[0152]本開示の技法によれば、サブPU BVSPモードを使用して予測される各PUに対して、ビデオコーディングデバイス、すなわち、ビデオ符号化器20および/またはビデオ復号器30は、動き補償が実行された後ですら、現在のPUのサブPUの各々のために導出された別個の動き情報を保存、たとえば、記憶または維持する。一例として、ビデオ符号化器20および/またはビデオ復号器30は、サブPUの各々のために導出された視差動きベクトルを、現在のPUのための視差動きベクトルに関連付けられた参照ビューインデックスによって識別されたビュー間参照ピクチャを含む参照ピクチャリストとともに、復号ピクチャバッファなどのメモリに記憶することができる。
【0136】
[0153]現在のPUのために記憶された追加のより豊富な動き情報は、次いで、現在のPUが隣接ブロックである後続PUを予測するために使用され得る。たとえば、ビデオ符号化器20および/またはビデオ復号器30は、マージモード候補リスト中のサブPU BVSP候補として、現在のPUのサブPUのうちの少なくとも1つのために記憶された動き情報を含む後続PUを予測するための動き情報のマージモード候補リストを生成することができる。一例では、後続PUがサブPU BVSPモードでコーディングされる場合、ビデオ符号化器20および/またはビデオ復号器30は、後続PUのサブPUの各々のために別個の動き情報を導出する必要がない。代わりに、ビデオ符号化器20および/またはビデオ復号器30は、代わりに、後続PUのサブPUを予測するための動き情報のマージモード候補リストからサブPU BVSP候補として別個の動き情報を選択することができる。サブPU BVSPモードでPUを予測して、PUのサブPUの各々のために導出された動き情報を記憶する動作は、
図17に関して下でより詳細に説明される。
【0137】
[0154]上記で説明した第2の問題に関して、本開示は、動きベクトル改良が可能にされ得るシングルレイヤコーディングにおけるPUのサブPUを予測するための高度TMVPモードを実行するための技法について説明する。ビデオ符号化器20および/またはビデオ復号器30は、PUのサブPUの各々のための異なる動きベクトルおよび参照インデックスを含む、PUのための動き情報を導出するために、少なくとも2つのステージでPUのための動きベクトルを決定することを含む、高度TMVPモードを実行するように構成され得る。
【0138】
[0155]
図14Aおよび
図14Bは、シングルレイヤコーディングにおけるPU中のサブPUを予測するための高度TMVPモードを示す概念図である。
図14Aに示すように、高度TMVPモードの第1のステージ170は、現在のピクチャ中の現在のPU173のための参照ピクチャ中の対応するブロック174を識別する動きベクトルを決定し、高度TMVPモードの第2のステージ172は、参照ピクチャ中の対応するブロック174のサブPUから複数のセットの動き情報を抽出し、動き情報のそれらのセットの各々を現在のピクチャ中の現在のPU173のサブPUのうちの1つに割り当てる。現在のPU173の各サブPUは、したがって、別個に動き補償される。第1のステージ170の動きベクトルは、現在のPU173の空間的隣接ブロックおよび時間的隣接ブロックから導出され得る。一例では、第1のステージの動きベクトルは、すべての他のマージモード候補のうち、HEVCにおけるTMVP候補と同様の候補を含み得るか、または含み得ないマージモード候補として選択され得る。別の例では、第1のステージの動きベクトルは、すべての他のAMVP候補のうち、AMVPモード候補として選択され、改良され得る。この例では、サブPUが各予測方向のために利用可能でない動きベクトルに遭遇するとき、代表的な動きベクトルが使用され得る。
【0139】
[0156]シングルレイヤコーディングおよびサブPU TMVPに適用可能な、ビデオ符号化器20またはビデオ復号器30は、MV候補リストのための動き予測インデックスを用いてシグナリングされるPUまたはCUのための動き改良データ、たとえば、動きベクトル差分を決定することができる。一例では、各予測方向に対して、単一の動きベクトル差分が決定され得、サブPUまたはPUのすべての動きベクトルに適用可能である。別の例では、各予測方向に対して、別個の動きベクトル差分がサブPUまたはPUの各々のために決定され得る。加えて、各水平成分または垂直成分に対して、動きベクトル差分値は変換され得、結果として生じる、変換係数は、ビデオコーデックにおけるピクセル残差と同様に、さらに量子化または切り捨てられ、コーディングされ得る。
【0140】
[0157]別の例では、HEVCと同様に、サブPU動きベクトルのための動き改良データは、サブPU MV候補がAMVPモード候補リストに追加され、マージモード候補リストに追加されないとき、ビデオ符号化器20からビデオ復号器30に送信され得る。1つの代替的な例では、サブPU MV候補は、サブPUまたはPUのすべての動きベクトルに関連付けられた参照インデックス値が同じであるときのみ適用され得る。別の代替的な例では、サブPU MV候補は常に適用され得、サブPUのすべての動きベクトルに関連付けられた参照インデックス値は明示的に送信される。加えて、動きベクトル差分値の量子化または変換が適用される場合、動きベクトルは1つの固定参照ピクチャに対してスケーリングされ得る。動きベクトル差分が収集された後、これらの差分はスケーリングされた動きベクトルに追加される。その後、サブPUまたはPUの異なる参照インデックス値によって識別されたそれらのそれぞれの異なる参照ピクチャに対して新しい動きベクトルがスケーリングし戻される。
【0141】
[0158]以下のセクションは、サブPUまたはPUの動きベクトルに関連付けられた参照インデックス値が異なる場合の、上記で説明した高度TMVPモードのための例示的な実装詳細を提供する。第1のステージの動きベクトルの識別についてまず論じる。第1のステージの動きベクトルは、時間的動きベクトルを包含する、現在のPUの空間的隣接ブロックから変換される。空間的隣接ブロックは、典型的な動きベクトル予測のために使用されるブロック、たとえば、AMVPまたはHEVCのためのマージで使用されるブロックに属する。
【0142】
[0159]空間的隣接ブロックが、異なる参照インデックス値に関連付けられた候補動きベクトルを有するとき、そこからサブPUレベルの動き情報を決定するための参照ピクチャを識別するために、どの参照インデックスが使用されるかを決定するために、以下の決定プロセスのうちの1つが適用される。
1.最小参照インデックス値を有するブロックが選ばれる。「第1のステージのベクトル」になるべき時間的動きベクトルを戻すために、その中で、より早期にアクセスされた参照インデックスが選ばれる。これらのブロックは、ブロックの相対的な空間的ロケーションに基づいて、所与の順序でアクセスされると仮定される。
2.最小参照インデックス値を有するブロックが選ばれる。(2つ以上の場合)これらのブロックの動きベクトルは、「第1のステージのベクトル」になるように平均化され、代替では、中間動作が使用され得る。
3.隣接ブロックの参照インデックスの中で、最高頻度の参照インデックスが選ばれる。その参照インデックスを有するブロックの中で、「第1のステージのベクトル」になるとして、第1にアクセスされた動きベクトルが選ばれるか、または動きベクトルの平均(たとえば、中間)が使用される。代替的に、第1のステージの動きベクトルを取得するために、他の数学機能が適用され得る。
4.現在のピクチャに最も近接するPOC距離を有する参照インデックスが選ばれる。その参照インデックスを有するブロックの中で、「第1のステージのベクトル」になるとして、第1にアクセスされた動きベクトルが選ばれるか、または動きベクトルの平均(たとえば、中間または他の数学機能)が使用される。
5.上記で説明した方法と同様の方法を用いて、プライマリ参照インデックスがスライスヘッダ中でシグナリングされ、「第1のステージのベクトル」を作成するために、そのプライマリ参照インデックスに等しい参照インデックスを有するブロックが選ばれる。何のブロックもプライマリ参照インデックスに等しい参照インデックスを有さないとき、参照インデックスを選ぶための上記で説明した方法が使用され得る。
6.TMVPのために使用されるピクチャは、一般に、AVCおよびHEVCにおけるように、各スライスのために固定されるため、一次参照インデックスは、TMVPを示す参照インデックスと同じであり得る。
7.上記の参照インデックスは、RefPicList0またはRefPicList1のいずれかに対するインデックスであり得る。代替的には、参照ピクチャリストユニオン(RefPicListU)は、RefPicList0およびRefPicList1によって生成され、参照インデックスは、RefPicListUに対するインデックスであり得る。RefPicListUによって識別されるいずれのピクチャもRefPicList0もしくはReficList1のいずれか、または両方に属し、RefPicListUに属するが、RefPicList0もしくはRefPicList1に属さないピクチャは存在しないことに留意されたい。RefPicListUは、2つの同一ピクチャを有さない。代替的に、および追加として、RefPicListUは、短期ピクチャと同じレイヤ内の時間的参照ピクチャまたは短期ピクチャと標示された時間的参照ピクチャのみを包含し得る。
8.代替的に、参照インデックスおよび「第1のステージのベクトル」は、マージモード候補から選択され得る。
a.一例では、1つの相対的なブロックの位置、たとえば、左の隣接ブロックから導出された1つの空間的マージモード候補から参照インデックスと「第1のステージのベクトル」とが選択される。
b.代替的に、マージモード候補リスト中の第1の利用可能な候補から参照インデックスと「第1のステージのベクトル」とが選択され得る。
c.さらに、選択されたマージ候補が双予測を使用するとき、動きベクトルおよび参照インデックスは、マージされたセットの動き情報うちの1つから選択され得る。
【0143】
[0160]参照インデックスおよび「第1のステージのベクトル」が識別されるとき、サブPU動き情報を決定するために使用される参照ピクチャ、ならびに、現在のPUに対応する参照ピクチャ中の領域が識別される。1つの事例では、たとえば、参照インデックスは導出されて、TMVPのために使用されるピクチャは明示的にシグナリングされているため、参照インデックスは、TMVPのために使用されることになるピクチャと異なる参照ピクチャを示し得る。この場合、参照インデックスは、TMVPのために使用されるピクチャを識別するために変更され得、動きベクトルは、POC距離に基づいて、TMVPのために使用されるピクチャに対してスケーリングされ得る。
【0144】
[0161]上記の説明で、「第1のステージのベクトル」の識別は、空間的隣接ブロックのみを使用する。代替的に、「第1のステージのベクトル」を識別するために時間的近接ブロックが使用され得、この場合、時間的隣接ブロックの位置はNBDVにおいて使用されるブロックと同様である。そのような位置は、各々が識別された参照ピクチャ内に位置している、現在のPUの中央位置または現在のPUの右下位置を含む。
【0145】
[0162]次に、TMVPのためのサブPU動きの生成について論じる。現在のPUの各サブPUは、「第1のステージのベクトル」によって識別された参照ピクチャの対応するブロック内の対応するサブPUを位置特定することができる。上記で説明したサブPUレベルのビュー間動き予測と同様に、参照ピクチャの対応するサブPU内の動き情報から導出された動き情報のセットが、現在のPU中のサブPUの各々のために生成される。対応するサブPUの動き情報が利用可能でない場合、代替として、「第1のステージのベクトル」が現在のPUのサブPUのために使用され得る。各サブPUは各予測方向のために異なる参照インデックスを有し得るため、各参照ピクチャリストのためのターゲット参照ピクチャに対して動きベクトルをスケーリングする、いくつかの技法が提案される。
【0146】
[0163]
図14Bに示すように、動きソース参照ピクチャ182の対応するサブPU185内部の動きベクトル186によって識別された参照ピクチャ183はPicOriであり、対応するサブPU185を包含する参照ピクチャ(すなわち、動きソースピクチャ)182はPicTであり、現在のピクチャ180はPicCurであり、ターゲット参照ピクチャ184はPicTargである。議論のために、動きベクトル186はMVであり、スケーリングされた動きベクトルはMV’(すなわち、現在のピクチャ180中のPU181のサブPUを予測するための動きベクトル予測子188であると仮定される。高度TMVPモードの第1のステージで識別された時間的動きベクトル187がそこからサブPU動き情報が導出されたピクチャでない参照ピクチャに関連付けられるとき、POC距離に基づく動きベクトルのスケーリングがやはり可能であり得ることに留意されたい。
1.動きベクトルを現在のピクチャの固定参照インデックスに対してスケーリングする。MV’=MV
*(POC(PicTarg)−POC(PicCur))/(POC(PicOri)−POC(PicT))、POC( )関数は所与のピクチャのPOC値を戻す。上記の乗算演算および導出演算はHEVC TMVPにおけるのと同様の方法で簡略化され得ることに留意されたい。
a.固定参照インデックスは、スライス全体に対して同じであり得、たとえば、固定参照インデックスは、HEVCにおけるように、0に等しく設定され得る。
b.固定参照インデックスは、空間的隣接ブロックから導出され得る。
2.動きベクトルを、常に、PicOriである、対応するサブPUの参照ピクチャに対してスケーリングする。MV’=MV
*(POC(PicOri)−POC(PicCur))/(POC(PicOri)−POC(PicT))。
3.動きベクトルを、常に、PicTである、コロケートピクチャに対してスケーリングする。MV’=MV
*(POC(PicT)−POC(PicCur))/(POC(PicOri)−POC(PicT))。
【0147】
[0164]上記に示したように、各参照ピクチャリストからのターゲット参照ピクチャは、参照ピクチャリスト中で0に等しい参照インデックスを有する参照ピクチャに設定される。別の例では、各参照ピクチャリストからのターゲット参照ピクチャは、上記で説明したように、「第1のステージのベクトル」とともに識別された同じ参照ピクチャに設定される。サブPUレベルの動きベクトル予測のための高度TMVPの動作は、
図19に関して下でより詳細に説明される。
【0148】
[0165]上記で説明した第3の問題に関して、本開示は、複数のサブPUを有する、少なくとも1つのPUを含むビデオブロックのCUに適用されるデブロッキングフィルタプロセスに関する技法について説明する。本開示の技法は、HEVCデブロッキングフィルタが3D−HEVCブロックのために引き続き使用され得るように、サブPUをデブロッキングフレンドリーな構造に変換することによって、サブPU境界がデブロッキングされるのを可能にする。このようにして、デブロッキングフィルタを変更されない状態に保ちながら、サブPU境界に沿ってブロッキーアーティファクトのフィルタリングを可能にするように、デブロッキングフィルタに対する入力を変更することが可能である。本開示では、少なくとも部分的にサブPUを用いてコーディングされたCUは、高度CUと呼ばれ、コーディングされた高度CU内のサブPUを用いてコーディングされたPUは、高度PUと呼ばれる。高度CU中の他のPUは、もしあれば、通常のPUと呼ばれる。
【0149】
[0166]本開示において、サブPU境界に沿ってアーティファクトを除去するために、デブロッキングフィルタに対するサブPU用のエッジを導入するための、いくつかの技法について説明する。本開示で説明するサブPU変換プロセスは、デブロッキングフィルタリングプロセスの直前に、すなわち、参照ピクチャとして記憶するためにビデオブロックを再構築した後であるが、再構築されたビデオブロックをビデオ符号化器20および/またはビデオ復号器30の復号ピクチャバッファに実際に記憶する前に、3D−HEVCに導入され得る。
【0150】
[0167]第1の例では、デブロッキングフィルタを、サブPUを有するPUを含むCUに適用する直前に、ビデオ符号化器20および/またはビデオ復号器30は、サブPUの各々がコーディングツリーのノードであるコーディングユニット中のPUになることができるように、そのサブPU設計を利用する各PUを1つまたは複数のコーディングツリーに変換するように構成され得る。この例では、サブPU境界は、デブロッキングフィルタのために、人工的PU境界に変換される。コーディングツリー構造は、好ましくは、HEVCシンタックス設計に対して互換性がある。
【0151】
[0168]他の例では、サブPUを有するPUを含むビデオブロックのCUにデブロッキングフィルタを適用するのに先立って、ビデオ符号化器20および/またはビデオ復号器30は、代わりに、サブPU境界において人工的PU境界または人工的TU境界を作成するために、CUを変換するように構成され得る。一例では、ビデオ符号化器20および/またはビデオ復号器30は、PUを変換ツリー階層に関連付け、サブPUの各々をTUに関連付けるために、CUの変換ツリーを変換するように構成され得る。この例では、サブPU境界は、デブロッキングフィルタのために、人工的TU境界に変換される。別の例では、ビデオ符号化器20および/またはビデオ復号器30は、PUをCUに関連付け、サブPUの各々をPUに関連付けるために、CUをコーディングツリーに変換するように構成され得る。この例では、サブPU境界は、デブロッキングフィルタのために、人工的PU境界に変換される。コーディングツリー構造は、好ましくは、HEVCシンタックス設計に対して互換性がある。
【0152】
[0169]上記の例のうちのいずれかにおいて、サブPUをデブロッキングフレンドリーな構造に変換した後、人工的PU境界と人工的TU境界とを含めて、CUの2つの隣接するPU間のPU境界および/またはCUの2つの隣接するTU間のTU境界にデブロッキングフィルタが適用され得る。
【0153】
[0170]サブPU境界が人工的TU境界に変換されるように、PUを変換ツリー階層に関連付け、サブPUの各々をTUに関連付けるために、CUの変換ツリーが変換される、上記で説明した例では、以下の決定プロセスのうちの1つまたは複数が適用され得る。
1.変換ツリーが、1に等しいsplit_transform_flagを有するルートを有するとき、高度CUの通常のPU(もしあれば)に対応するノードは変更されない。
2.変換ツリーが、1に等しいsplit_transform_flagを有するルートを有するとき、変換ツリー階層を次のように導入するために、高度PU中のノードは変換される。
a.現在のノードに対して、split_transform_flagが0であり、TUサイズがサブPUサイズよりも大きい場合、split_transform_flagを1に設定し、4つの子ノードの各々のために、以下が適用される。
i.ノードのcbf_luma、cbf_cb、およびcbf_crが親ノードのcbf_luma、cbf_cb、およびcbf_crと同じになり、split_transform_flagが0に等しくなるように設定する。
ii.現在のノードを子ノードに設定し、ステップaに進む。
b.現在のノードに対して、split_transform_flagが1である場合、4つの子ノードの各々に対して、以下が適用される。現在のノードを子ノードに設定し、ステップaに進む。
3.代替的に、変換ツリー階層がPUのために導入され、cbf_luma、cbf_cb、およびcbf_crが新しくスプリットされたノードに設定されるとき、ノードのcbf_luma、cbf_cb、およびcbf_crは0に設定される。
4.代替的に、変換ツリー階層がPUのために導入され、cbf_luma(または、cbf_cb、もしくはcbf_cr)が新しくスプリットされたノードに設定されるとき、cbf_luma(または、cbf_cb、もしくはcbf_cr)が0に等しくない場合、ノードのcbf_luma(または、cbf_cb、もしくはcbf_cr)は任意の非ゼロの正の整数値(たとえば1)に設定され、さもなければ、0に設定される。
5.変換ツリーが0に等しいsplit_transform_flagを有するルートを有する場合、通常のPU(もしあれば)は、次のステップを用いて順に、変換ユニットにスプリットされる。
a.CUのspilt_transform_flagがまず1に設定される。
b.CUの区分がN×Nである場合、通常のPUは1つのノードに対応する。CUの区分が2N×NまたはN×2Nである場合、通常のPUは2つのノードに対応する。
c.通常のPU内の上記のノードの各々は、0に設定されたsplit_transform_flagと、高度CU全体をカバーする元の変換ユニットのcbf_luma、cbf_cb、およびcbf_crに等しくなるように設定されたcbf_luma、cbf_cb、およびcbf_crとを有するように設定される。
d.CUの高度PUの各々に対して、PUの方形領域をカバーする1つまたは2つのノードがまず生成され、各ノードに対して、上記のステップ2、3、または4と同様の変換ツリー階層が導入される。
6.上記のステップ5の代替として、通常のPU内の上記のノードの各々に対して、cbf_luma、cbf_cb、およびcbf_crは0に等しく設定される。
7.上記のステップ4の代替として、通常のPU内の上記のノードの各々に対して、cbf_luma(または、cbf_cb、もしくはcbf_cr)が0に等しくない場合、そのcbf_luma(または、cbf_cb、もしくはcbf_cr)は任意の非ゼロの正の整数値(たとえば、1)に等しく設定され、さもなければ、0に設定される。
【0154】
[0171]サブPU境界が人工的PU境界に変換されるように、PUをCUに関連付け、サブPUの各々をPUに関連付けるために、CUがコーディングツリーに変換される、上記で説明した例では、以下の決定プロセスのうちの1つまたは複数が適用され得る。
1.変換後、現在の高度CUは、コーディングツリーのルート、すなわち、少なくとも4つのコーディングユニットを包含する4分木である変換ルートになる。
2.高度CU中のいずれの通常のPUに対して、そのPUは1つまたは複数のコーディングユニットに設定される。
3.加えて、高度CU中の通常のPUから変換された変換コーディングユニットの各成分のCBF値は0になるようにさらに設定される。このようにして、PUが2つのCUに変換されている場合ですら、1つの通常のインター予測PU内のフィルタリングは回避される。
a.任意の高度PUに対して、現在の高度CUのCBF値が非ゼロである場合、変換ルートよりも1レベル下にある変換コーディングツリーまたは変換コーディングユニットのCBF値は非ゼロになるように設定される。
b.さらに、高度PU内部のいずれの変換CUもしくは変換PUまたは変換コーディングツリーに対して、それが、本来、CBF値をシグナリングさせていない場合、それは、4分木中のその親ノードのCBF値と同じになるように、または、4分木中の親ノードのCBF値と同じゼロ状態もしくは非ゼロ状態に設定される。
4.代替的に、高度CUに対して、1つの一意の変換ユニットがCU全体のために適用され得ず、つまり、通常のPUが高度CU内部にある場合、そのPUは、CUの別のPUによって共有されない変換ユニットを包含しなければならない。
a.代替または追加として、各高度PUに対して、変換ツリーのリーフノードは、サブPUよりも1レベル高くまたは深く分散され、つまり、変換CU内の4つのサブPUの各々は一意の変換ユニットをシグナリングさせる。
5.より具体的には、2L×2LサイズのCUが、サブPU設計を利用するPUを包含する場合、CU中のすべてのPUのために以下の変換が実行される。1に等しいスプリットフラグが現在の高度CUのために設定され、以下が適用され、現在のノードはCUになるように設定される。
a.ラスタスキャン順序で現在のノードの1/4方形エリアの各々に対して、以下が適用される。
i.この1/4エリアを子ノードとして設定する。
ii.子ノードがサブPUを用いてコーディングされない場合、子ノードは、2N×2N区分を有する(0に等しいスプリットフラグを有する)コーディングユニットになるように設定される。
1.代替または追加として、子ノードの各成分のCBF値は0になるように設定される。
2.代替または追加として、コーディングユニットのTUスプリットフラグは0になるように設定される。
iii.さもなければ、子ノードがサブPUでコーディングされ、2つ以上のサブPUを包含する場合、スプリットフラグは、子ノードのために1に設定され(したがって、コーディングツリーと見なされ)、以下が適用される。
1.代替または追加として、子ノードのためのCBF値が存在しない場合、子ノードは、より高いレベルの現在のノード(この子ノードの親ノード)のCBF値に等しくなるように設定される。
2.子ノードを現在のノードとして設定し、ステップaに進む。
iv.さもなければ、子ノードが1つのサブPUだけを包含する場合、子ノードはコーディングツリーのリーフ、したがって、(0に等しいスプリットフラグを有する)コーディングユニットになるように設定される。
1.子ノードの区分モードはサブPUの区分モードになるように設定される。
a.サブPUの区分モードが2N×2Nである場合、サブPUは1つの2N×2Nブロックを包含し、コーディングユニットの区分モードは2N×2Nになるように設定される。
b.サブPUの区分モードがN×2Nである場合、サブPUは2つのN×2Nブロックを包含し、コーディングユニットの区分モードはN×2Nになるように設定される。
c.サブPUの区分モードが2N×Nである場合、サブPUは2つの2N×Nブロックを包含し、コーディングユニットの区分モードは2N×Nになるように設定される。
2.代替または追加として、子ノードのためのCBF値が存在しない場合、子ノードは、より高いレベルの現在のノード(この子ノードの親ノード)のCBF値に等しくなるように設定される。
3.代替または追加として、コーディングユニットのTUスプリットフラグは0になるように設定される。
【0155】
[0172]サブPU境界が人工的TU境界に変換されるように、PUを変換ツリー階層に関連付け、サブPUの各々をTUに関連付けるために、CUの変換ツリーが変換される、上記で説明した例に関する別の代替として、以下の決定プロセスのうちの1つまたは複数が各サブPUの少なくとも一部のために適用され得る。
1.変換ツリーが1に等しいsplit_transform_flagを有するルートを有するとき、高度CUの通常のPU(または、通常のPUの一部)のみを包含する通常のノードは変更されない。
2.変換ツリーが1に等しいsplit_transform_flagを有するルートを有するとき、変換ツリー階層を次のように導入するために、任意のサブPU(または、サブPUの一部)を包含する高度ノードは変換される。
a.現在のノードに対して、現在のノードが任意のサブPU(または、サブPUの一部)を包含し、split_transform_flagが0であり、TUサイズがサブPUサイズよりも大きい場合、split_transform_flagを1に設定し、4つの子ノードの各々のために、以下が適用される。
i.ノードのcbf_luma、cbf_cb、およびcbf_crが親ノードのcbf_luma、cbf_cb、およびcbf_crと同じになり、split_transform_flagが0に等しくになるように設定する。
ii.現在のノードを子ノードに設定し、ステップaに進む。
b.現在のノードに対して、split_transform_flagが1である場合、4つの子ノードの各々のために、以下が適用される。現在のノードを子ノードに設定し、ステップaに進む。
3.代替的に、変換ツリー階層がノードのために導入され、cbf_luma、cbf_cb、およびcbf_crが新しくスプリットされたノードに設定されるとき、新しくスプリットされたノードのcbf_luma、cbf_cb、およびcbf_crは0に設定される。
4.代替的に、変換ツリー階層がノードのために導入され、cbf_luma、cbf_cb、およびcbf_crが新しくスプリットされたノードに設定されるとき、cbf_luma(または、cbf_cb、もしくはcbf_cr)が0に等しくない場合、新しくスプリットされたノードのcbf_luma(または、cbf_cb、もしくはcbf_cr)は任意の非ゼロの正の整数値(たとえば、1)に設定され、さもなければ、0に設定される。
5.変換ツリーが0に等しいsplit_transform_flagを有するルートを有するとき、通常のPU(または、通常のPUの一部)のみを包含する通常のノードは、次のステップの順で、変換ユニットにスプリットされなければならない。
a.CUのspilt_transform_flagがまず1に設定される。
b.CUの区分がN×Nである場合、通常のPUは1つの通常のノードに対応する。CUの区分が2N×NまたはN×2Nである場合、通常のPUは2つの通常のノードに対応する。CUの区分が2N×nN、2N×nD、nL×2N、またはnR×2Nである場合、通常のPUは0または2つの通常のノードに対応する。
c.上記の通常のノードの各々は、split_transform_flagを0に等しく設定させ、cbf_luma、cbf_cb、およびcbf_crを、高度CU全体をカバーする元の変換ユニットのcbf_luma、cbf_cb、およびcbf_crに等しくなるように設定させるように設定される。
d.CUのいずれのサブPU(または、サブPUの一部)を包含する高度ノードの各々に対して、上記のステップ2、3、または4と同様の変換ツリー階層が導入される。
6.上記のステップ5の代替として、上記の通常ノードの各々に対して、cbf_luma、cbf_cb、およびcbf_crは0に等しく設定される。
7.上記のステップ4の代替として、上記の通常ノードの各々にに対して、cbf_luma(または、cbf_cb、もしくはcbf_cr)が0に等しくない場合、そのcbf_luma(または、cbf_cb、もしくはcbf_cr)は任意の非ゼロの正の整数値(たとえば、1)に等しく設定され、さもなければ、0に設定される。
[0173]いくつかの例示的な実装詳細が下で提供される。下のテキストは本開示で説明する技法のうちのいくつかの実装形態のための、3D−HEVC WD1に対して提案される修正を示す。
復号プロセス
H.8.1 一般的な復号プロセス
...
3.従属節8.4、8.5、8.6、8.7、および8.8におけるプロセスは、すべてのシンタックス構造レイヤにおいてシンタックス要素を使用した復号プロセスを規定する。スライスへのピクチャの分割、スライス区分へのスライスの分割、およびコーディングツリーユニットへのスライス区分の分割はそれぞれ、ピクチャの区分を形成するように、ピクチャのコード化スライスがピクチャのコーディングツリーユニットごとにスライス区分データを包含するものとすることがビットストリームコンフォーマンスの要件である。
...
H.8.5.3.3.2 参照ピクチャ選択プロセス
このプロセスへの入力は参照インデックスrefIdxLXである。
このプロセスの出力は、ルーマサンプルrefPicLX
Lの1つの2次元アレイと、クロマサンプルrefPicLX
CbおよびrefPicLX
Crの2つの2次元アレイとからなる参照ピクチャである。
出力された参照ピクチャRefPicListX[refIdxLX]は、ルーマサンプルrefPicLX
Lの1つのpic_width_in_luma_sample×pic_height_in_luma_samplesアレイと、クロマサンプルrefPicLX
CbおよびrefPicLX
Crの2つのPicWidthInSamplesC×PicHeightInSamplesCアレイとからなる。
参照ピクチャサンプルアレイrefPicLX
L、refPicLX
Cb、およびrefPicLX
Crは、前に復号されたピクチャのための従属節第8.7および従属節8.8によって導出された復号サンプルアレイS
L、S
Cb、ならびにS
Crに対応する。
H.8.7 変換ツリー修正プロセス
H.8.7.1 一般
このプロセスに対する入力は、コーディングツリーのスプリットフラグアレイsplit_cu_flag、コーディングユニットの区分モードアレイPartMode、変換ツリーのスプリットフラグsplit_transform_flag、コーディングユニットのサブ予測ユニットフラグアレイsubPuFlag、サブ予測ユニットサイズsubPuSizeである。
このプロセスの出力は、変換ツリーの修正されたスプリットフラグアレイsplit_transform_flagである。
各コーディングユニットに対して、そのユニットがインター予測モードでコーディングされ、そのユニットがサブ予測ユニット設計を利用する予測ユニットを包含する場合、変換ツリーのスプリットフラグは、サブ予測ユニット境界が変換ユニット境界になるように修正される。
− 従属節8.7.2で規定される変換ツリーの修正プロセスは、入力として、ルーマロケーション(xCb,yCb)、(0,0)に等しく設定されたルーマロケーション(xB0,yB0)、(1<<Log2MaxCbSize)に等しく設定されたルーマコーディングブロックサイズnCbS、0に等しく設定されたコーディングツリー深度cuDepth、コーディングツリーのスプリットフラグアレイsplit_cu_flag、コーディングユニットの区分モードアレイPartMode、変換ツリーのスプリットフラグアレイsplit_transform_flag、サブ予測ユニットフラグアレイsubPuFlag、およびサブ予測ユニットサイズsubPuSizeと、出力として、変換ツリーの修正されたスプリットフラグアレイsplit_transform_flagとで呼び出される。
H.8.7.2.サブ予測ユニットを包含するコーディングユニットの変換ツリー修正プロセス
このプロセスへの入力は以下の通りである。
− 現在のピクチャの左上ルーマサンプルに対する現在のルーマコーディングブロックの左上サンプルを規定するルーマロケーション(xCb,yCb)、
− 現在のルーマコーディングブロックの左上サンプルに対する現在のルーマブロックの左上サンプルを規定するルーマロケーション(xB0,yB0)、
− ルーマコーディングブロックサイズnCbS、
− コーディングツリー深度を規定する変数cuDepth、
− コーディングツリーのスプリットフラグアレイsplit_cu_flag、
− 変換ツリーのスプリットフラグアレイsplit_transform_flag、
− サブ予測ユニットフラグアレイsubPuFlag、
− サブ予測ユニットサイズsubPuSize、
このプロセスの出力は修正済みである。
− 変換ツリーのスプリットフラグアレイsplit_transform_flag、
split_cu_flag[xCb+xB0][yCb+yB0][cuDepth]の値に応じて、以下が適用される。
− split_cu_flag[xCb+xB0][yCb+yB0][cuDepth]が1に等しい場合、以下の順序のステップが適用される。
1.変数xB1およびyB1は次のように導出される。
【0156】
−変数xB1は、xB0+(nCbS>>1)に等しく設定される。
−変数yB1は、yB0+(nCbS>>1)に等しく設定される。
2.この従属節で規定される変換ツリーの修正プロセスは、入力として、ルーマロケーション(xCb,yCb)、ルーマロケーション(xB0,yB0)、(nCbS>>1)に等しく設定されたルーマコーディングブロックサイズnCbS、cuDepth+1に等しく設定されたコーディングツリー深度cuDepth、コーディングツリーのスプリットフラグアレイsplit_cu_flag、コーディングユニットの区分モードアレイPartMode、変換ツリーのスプリットフラグアレイsplit_transform_flag、サブ予測ユニットフラグアレイsubPuFlag、サブ予測ユニットサイズsubPuSizeと、出力として、変換ツリーの修正されたスプリットフラグアレイsplit_transform_flagとで呼び出される。
3.この従属節で規定される変換ツリーの修正プロセスは、入力として、ルーマロケーション(xCb,yCb)、ルーマロケーション(xB1,yB0)、(nCbS>>1)に等しく設定されたルーマコーディングブロックサイズnCbS、cuDepth+1に等しく設定されたコーディングツリー深度cuDepth、コーディングツリーのスプリットフラグアレイsplit_cu_flag、コーディングユニットの区分モードアレイPartMode、変換ツリーのスプリットフラグアレイsplit_transform_flag、サブ予測ユニットフラグアレイsubPuFlag、サブ予測ユニットサイズsubPuSizeと、出力として、変換ツリーの修正されたスプリットフラグアレイsplit_transform_flagとで呼び出される。
4.この従属節で規定される変換ツリーの修正プロセスは、入力として、ルーマロケーション(xCb,yCb)、ルーマロケーション(xB0,yB1)、(nCbS>>1)に等しく設定されたルーマコーディングブロックサイズnCbS、cuDepth+1に等しく設定されたコーディングツリー深度cuDepth、コーディングツリーのスプリットフラグアレイsplit_cu_flag、コーディングユニットの区分モードアレイPartMode、変換ツリーのスプリットフラグアレイsplit_transform_flag、サブ予測ユニットフラグアレイsubPuFlag、サブ予測ユニットサイズsubPuSizeと、出力として、変換ツリーの修正されたスプリットフラグアレイsplit_transform_flagとで呼び出される。
5.この従属節で規定される変換ツリーの修正プロセスは、入力として、ルーマロケーション(xCb,yCb)、ルーマロケーション(xB1,yB1)、(nCbS>>1)に等しく設定されたルーマコーディングブロックサイズnCbS、cuDepth+1に等しく設定されたコーディングツリー深度cuDepth、コーディングツリーのスプリットフラグアレイsplit_cu_flag、コーディングユニットの区分モードアレイPartMode、変換ツリーのスプリットフラグアレイsplit_transform_flag、サブ予測ユニットフラグアレイsubPuFlag、サブ予測ユニットサイズsubPuSizeと、出力として、変換ツリーの修正されたスプリットフラグアレイsplit_transform_flagとで呼び出される。
− さもなければ(split_cu_flag[xCb+xB0][yCb+yB0][cuDepth]が0に等しい)、nCbSがsubPUSizeより大きい場合、以下の順序のステップが適用される。
1.変数xB1およびyB1は次のように導出される。
−変数xB1は、xB0+(nCbS>>1)に等しく設定される。
−変数yB1は、yB0+(nCbS>>1)に等しく設定される。
2.変数subPuDeblockingFlagを以下の順序のステップによって導出する。
−subPuDeblockingFlagが0に等しく設定される。
−subPuFlag[xCb+xB0][yCb+yB0]が1に等しい場合、subPuDeblockingFlagは1に等しく設定される。
subPuFlag[xCb+xB1][yCb+yB0]が1に等しい場合、subPuDeblockingFlagは1に等しく設定される。
−subPuFlag[xCb+xB0][yCb+yB1]が1に等しい場合、subPuDeblockingFlagは1に等しく設定される。
−subPuFlag[xCb+xB1][yCb+yB1]が1に等しい場合、subPuDeblockingFlagは1に等しく設定される。
−PartMode[xCb+xB0][yCb+yB0]がPART_nL×2Nに等しい場合、またはPartMode[xCb+xB0][yCb+yB0]がPART_nR×2Nに等しい場合、またはPartMode[xCb+xB0][yCb+yB0]がPART_2N×nUに等しい場合、またはPartMode[xCb+xB0][yCb+yB0]がPART_2N×nDに等しい場合、subPuDeblockingFlagは0に等しく設定される。
3.subPuDeblockingFlagが1に等しい場合、次の順序ステップが適用される。
−split_transform_flag[xCb+xB0][yCb+yB0][cuDepth]が0に等しい場合、split_transform_flag[xCb+xB0][yCb+yB0][cuDepth]を1に等しくなるように設定する。
−従属節8.7.3で規定された変換ツリーの修正プロセスは、入力として、ルーマロケーション(xCb,yCb)、ルーマロケーション(xB0,yB0)、コーディングツリー深度cuDepth、ブロックサイズnCbS、変換ツリーのスプリットフラグアレイsplit_transform_flag、予測ユニットのサブ予測ユニットフラグアレイsubPuFlag、予測ユニットのサブ予想ユニットサイズアレイsubPuSizeと、出力として、コーディングツリーの修正されたスプリットフラグアレイsplit_transform_flagとで呼び出される。
H.8.7.3 ルーマコーディングブロックの変換ツリー修正プロセス
このプロセスへの入力は以下の通りである。
− 現在のピクチャの左上ルーマサンプルに対する現在のルーマ予測ブロックの左上サンプルを規定するルーマロケーション(xCb,yCb)、
− 現在のルーマコーディングブロックの左上サンプルに対する現在のルーマブロックの左上サンプルを規定するルーマロケーション(xB0,yB0)、
− ブロックサイズを規定する変数nCbS、
− 変換ツリー深度を規定する変数trafoDepth、
− 変換ツリーのスプリットフラグアレイsplit_transform_flag、
− サブ予測ユニットフラグアレイsubPuFlag、
− サブ予測ユニットサイズsubPuSize、
このプロセスの出力は修正済みである。
− 変換ツリーのスプリットフラグアレイsplit_transform_flag、
nCbSがsubPUSizeよりも大きい場合、以下の順序のステップが適用される。
− 変数xB1およびyB1は次のように導出される。
− 変数xB1は、xB0+(nCbS>>1)に等しく設定される。
− 変数yB1は、yB0+(nCbS>>1)に等しく設定される。
− xB0、xB1のxに対して
− yB0、yB1のyに対して、
− subPuFlag[xCb+x][yCb+y]が1に等しい場合、
− split_transform_flag[xCb+x][yCb+y][trafoDepth+1]が0に等しい場合、
− split_transform_flag[xCb+x][yCb+y][trafoDepth+1]を1に等しくなるように設定する、
− この従属節で規定される変換ツリーの修正プロセスは、入力として、ルーマロケーション(xCb,yCb)、ルーマロケーション(xCb+x,yCb+y)、変換ツリー深度trafoDepthはtrafoDepth+1に等しく設定される、ブロックサイズnCbSは(nCbS>>1)に等しく設定される、変換ツリーのスプリットフラグアレイsplit_transform_flag、サブ予測ユニットフラグアレイsubPuFlag、サブ予測ユニットサイズsubPuSizeと、出力として、コーディングツリーの修正されたスプリットフラグアレイsplit_transform_flagとで呼び出される。
− さもなければ(split_transform_flag[xCb+x][yCb+y][trafoDepth+1]が1に等しい場合)、
− この従属節で規定される変換ツリーの修正プロセスは、入力として、ルーマロケーション(xCb,yCb)、ルーマロケーション(xCb+x,yCb+y)、変換ツリー深度trafoDepthはtrafoDepth+1に等しく設定される、ブロックサイズnCbSは(nCbS>>1)に等しく設定される、変換ツリーのスプリットフラグアレイsplit_transform_flag、サブ予測ユニットフラグアレイsubPuFlag、サブ予測ユニットサイズsubPuSizeと、出力として、コーディングツリーの修正されたスプリットフラグアレイsplit_transform_flagとで呼び出される。
H.8.8 インループフィルタプロセス
...
【0157】
[0174]
図15は、本開示の技法を実装するように構成され得るビデオ符号化器20の一例を示すブロック図である。ビデオ符号化器20は、ビデオスライス、たとえば、テクスチャ画像と深度マップの両方のスライス内のビデオブロックのイントラコーディングおよびインターコーディング(ビュー間コーディングを含む)を実行し得る。テクスチャ情報は、概して、ルミナンス(輝度または強度)情報とクロミナンス(色、たとえば、赤い色相および青い色相)情報とを含む。いくつかの例では、ビデオ符号化器20は、ルミナンススライスに対するコーディングモードを決定し、クロミナンス情報を符号化するために(たとえば、区分情報、イントラ予測モード選択、動きベクトルなどを再使用することによって)ルミナンス情報をコーディングすることからの予測情報を再使用することができる。イントラコーディングは、所与のビデオフレームまたはピクチャ内のビデオの空間冗長性を低減または除去するために空間的予測に依拠する。インターコーディングは、ビデオシーケンスの隣接するフレームまたはピクチャ内のビデオの時間的冗長性を低減または除去するために時間的予測に依拠する。イントラモード(Iモード)は、いくつかの空間ベースのコーディングモードのいずれかを指す場合がある。単一方向予測(Pモード)または双予測(Bモード)などのインターモードは、いくつかの時間ベースのコーディングモードのいずれかを指す場合がある。
【0158】
[0175]
図15に示すように、ビデオ符号化器20は、符号化されるべきビデオフレーム(たとえば、テクスチャ画像または深度マップ)内の現在のビデオブロック(すなわち、ルミナンスブロック、クロミナンスブロック、または深度ブロックなどのビデオデータのブロック)を受信する。
図15の例では、ビデオ符号化器20は、モード選択ユニット40と、ビデオデータメモリ41と、復号ピクチャバッファ64と、加算器50と、変換処理ユニット52と、量子化ユニット54と、フィルタユニット63と、エントロピー符号化ユニット56とを含む。フィルタユニット63は、本開示で説明するように、デブロッキングフィルタプロセスを適用することができる。モード選択ユニット40は、今度は、動き補償ユニット44と、動き推定ユニット42と、イントラ予測処理ユニット46と、区分ユニット48とを含む。ビデオブロックの再構築のために、ビデオ符号化器20はまた、逆量子化ユニット58と、逆変換処理ユニット60と、加算器62とを含む。フィルタユニット63は、再構築されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタリングするためのデブロッキングフィルタおよび/またはSAOフィルタを含み得る。追加のフィルタ(インループまたはポストループ)も、デブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡潔さのために図示されていないが、望まれる場合には、加算器50の出力を(インループフィルタとして)フィルタリングすることができる。
【0159】
[0176]ビデオデータメモリ41は、ビデオ符号化器20の構成要素によって符号化されるべきビデオデータを記憶することができる。ビデオデータメモリ41に記憶されるビデオデータは、たとえば、ビデオソース18から取得され得る。復号ピクチャバッファ64は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオ符号化器20によってビデオデータを符号化する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ41および復号ピクチャバッファ64は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM(登録商標))、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ41および復号ピクチャバッファ64は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ41は、ビデオ符号化器20の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【0160】
[0177]符号化プロセス中に、ビデオ符号化器20は、コーディングされるべきビデオフレームまたはスライスを受信する。フレームまたはスライスは、複数のビデオブロックに分割され得る。動き推定ユニット42および動き補償ユニット44は、時間的予測を提供するために、1つまたは複数の参照フレーム中の1つまたは複数のブロックに対して、受信されたビデオブロックのインター予測コーディングを実行する。イントラ予測処理ユニット46は、代替的に、空間的予測を行うために、コーディングされるべきブロックと同じフレームまたはスライス中の1つもしくは複数の隣接ブロックに対して、受信されたビデオブロックのイントラ予測コーディングを実行し得る。ビデオ符号化器20は、たとえば、ビデオデータの各ブロックに適切なコーディングモードを選択するために、複数のコーディングパスを実行することができる。
【0161】
[0178]さらに、区分ユニット48は、前のコーディングパス内の前の区分方式の評価に基づいて、ビデオデータのブロックをサブブロックに区分することができる。たとえば、区分ユニット48は、最初に、フレームまたはスライスをLCUに区分し、レートひずみ分析(たとえば、レートひずみ最適化)に基づいて、LCUの各々をサブCUに区分することができる。モード選択ユニット40は、サブCUへのLCUの区分を示す4分木データ構造をさらに生成することができる。四分木の葉ノードCUは、1つまたは複数のPUと1つまたは複数のTUとを含み得る。
【0162】
[0179]モード選択ユニット40は、たとえば、誤差結果に基づいて、コーディングモードのうちの1つ、すなわち、イントラまたはインターを選択し、結果のイントラコード化ブロックまたはインターコード化ブロックを、残差ブロックデータを生成するために加算器50に、参照フレームとしての使用のために符号化されたブロックを再構築するために加算器62に供給することができる。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、区分情報、および他のそのようなシンタックス情報などのシンタックス要素をエントロピー符号化ユニット56に提供する。
【0163】
[0180]動き推定ユニット42および動き補償ユニット44は、高度に統合され得るが、概念上の目的から別々に図示されている。動き推定ユニット42によって実行される動き推定は、ビデオブロックのための動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、たとえば、現在のフレーム(もしくは、他のコード化ユニット)内でコーディングされている現在のブロックに対する参照フレーム(もしくは、他のコード化ユニット)内の予測ブロックに対する現在のビデオフレームまたは現在のピクチャ内のビデオブロックのPUの変位を示すことができる。
【0164】
[0181]予測ブロックは、絶対差の合計(SAD:sum of absolute difference)、二乗差の合計(SSD:sum of square difference)、または他の差分基準によって決定され得るピクセル差に関する、コーディングされるべきブロックとよく一致することがわかったブロックである。いくつかの例では、ビデオ符号化器20は、復号ピクチャバッファ64に記憶された参照ピクチャのサブ整数ピクセル位置のための値を計算し得る。たとえば、ビデオ符号化器20は、参照ピクチャの1/4ピクセル位置、1/8ピクセル位置、または他の分数ピクセル位置の値を補間することができる。したがって、動き推定ユニット42は、フルピクセル位置および分数ピクセル位置に対する動き検索を実行し、分数ピクセル精度を有する動きベクトルを出力することができる。
【0165】
[0182]動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのためのPUの動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(リスト0)または第2の参照ピクチャリスト(リスト1)から選択され得、それらの各々は、復号ピクチャバッファ64に記憶された1つまたは複数の参照ピクチャを識別する。参照ピクチャリストは、本開示の技法を使用して構築され得る。動き推定ユニット42は、計算された動きベクトルを、エントロピー符号化ユニット56および動き補償ユニット44に送る。
【0166】
[0183]動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトルに基づいて、予測ブロックをフェッチまたは生成することに関与し得る。この場合も、いくつかの例では、動き推定ユニット42と動き補償ユニット44とは機能的に統合され得る。現在のビデオブロックのPUのための動きベクトルを受信するとすぐ、動き補償ユニット44は、参照ピクチャリストのうちの1つにおいて動きベクトルが指す予測ブロックを位置特定することができる。加算器50は、下で論じるように、コーディングされている現在のビデオブロックのピクセル値から予測ブロックのピクセル値を減算し、ピクセル差分値を形成することによって、残差ビデオブロックを形成する。一般に、動き推定ユニット42は、ルーマ成分に対して動き推定を実行し、動き補償ユニット44は、クロマ成分とルーマ成分の両方のために、ルーマ成分に基づいて計算された動きベクトルを使用する。このように、動き補償ユニット44は、動き推定ユニット42がクロマ成分のための動き探索を実行する必要がないように、クロマ成分をコーディングするためにルーマ成分に対して決定された動き情報を再使用することができる。モード選択ユニット40はまた、ビデオスライスのビデオブロックを復号する際にビデオ復号器30が使用するためのビデオブロックとビデオスライスとに関連するシンタックス要素を生成することができる。
【0167】
[0184]イントラ予測処理ユニット46は、上記で説明したように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在のブロックをイントラ予測することができる。特に、イントラ予測処理ユニット46は、現在のブロックを符号化するために使用するイントラ予測モードを決定することができる。いくつかの例では、イントラ予測処理ユニット46は、たとえば、別個の符号化パスの間に、様々なイントラ予測モードを使用して現在のブロックを符号化することができ、イントラ予測処理ユニット46(または、いくつかの例では、モード選択ユニット40)は、テストされたモードから使用するのに適切なイントラ予測モードを選択することができる。
【0168】
[0185]たとえば、イントラ予測処理ユニット46は、様々なテストされたイントラ予測モードにレートひずみ分析を使用してレートひずみ値を計算し、テストされたモードの中で最良のレートひずみ特性を有するイントラ予測モードを選択することができる。レートひずみ分析は、一般に、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間のひずみ(または、誤差)の量、ならびに符号化されたブロックを作成するのに使用されたビットレート(すなわち、ビットの個数)を決定する。イントラ予測処理ユニット46は、どのイントラ予測モードがブロックのための最良のレートひずみ値を示すのかを決定するために、様々な符号化されたブロックのひずみおよびレートから比を算出することができる。
【0169】
[0186]ブロックのためのイントラ予測モードを選択した後、イントラ予測処理ユニット46は、エントロピー符号化ユニット56にブロックのために選択されたイントラ予測モードを示す情報を提供することができる。エントロピー符号化ユニット56は、選択されたイントラ予測モードを示す情報を符号化することができる。ビデオ符号化器20は、複数のイントラ予測モードインデックステーブルおよび(符号語マッピングテーブルとも呼ばれる)複数の修正されたイントラ予測モードインデックステーブルと、様々なブロックのための符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、および修正されたイントラ予測モードインデックステーブルの表示とを含み得る構成データを、送信されるビットストリーム中に含めることができる。
【0170】
[0187]ビデオ符号化器20は、モード選択ユニット40からの予測データを、コーディングされている元のビデオブロックから減算することによって、残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つまたは複数の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)または概念的には類似する変換のような変換を残差ブロックに適用し、残差変換係数の値を備えるビデオブロックを生成する。変換処理ユニット52は、概念的にはDCTに類似する他の変換を実行することができる。ウェーブレット変換、整数変換、サブバンド変換または他のタイプ変換も使用され得る。いずれの場合でも、変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。
【0171】
[0188]変換は、ピクセル値領域からの残差情報を、周波数領域のような変換領域に変換することができる。変換処理ユニット52は、得られた変換係数を量子化ユニット54へ送ることができる。量子化ユニット54は、ビットレートをさらに低減するために、変換係数を量子化する。量子化プロセスは、係数の一部またはすべてに関連付けられたビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって修正され得る。いくつかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列のスキャンを実行することができる。代替的に、エントロピー符号化ユニット56がスキャンを実行することができる。
【0172】
[0189]量子化に続いて、エントロピー符号化ユニット56は、量子化された変換係数をエントロピーコーディングする。たとえば、エントロピー符号化ユニット56は、コンテキスト適応可変長コーディング(CAVLC)、コンテキスト適応2進算術コーディング(CABAC)、シンタックスベースコンテキスト適応2進算術コーディング(SBAC)、確率区間区分エントロピー(PIPE)コーディング、または別のエントロピーコーディング技法を実行することができる。コンテキストベースのエントロピーコーディングの場合、コンテキストは、隣接ブロックに基づき得る。エントロピー符号化ユニット56によるエントロピーコーディングに続いて、符号化されたビットストリームは、別のデバイス(たとえば、ビデオ復号器30)に送信され、または後の送信もしくは取出のためにアーカイブされ得る。
【0173】
[0190]逆量子化ユニット58および逆変換処理ユニット60は、たとえば、参照ブロックとして後で使用するために、ピクセル領域中で残差ブロックを再構築するために、それぞれ、逆量子化および逆変換を適用する。動き補償ユニット44は、残差ブロックを復号ピクチャバッファ64に記憶された参照ピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算することができる。動き補償ユニット44は、動き推定での使用のためにサブ整数ピクセル値を計算するために、再構築された残差ブロックに1つまたは複数の補間フィルタを適用することもできる。加算器62は、復号ピクチャバッファ64に記憶するための再構築されたビデオブロックを生成するために、再構築された残差ブロックを動き補償ユニット44によって生成された動き補償された予測ブロックに加算する。再構築されたビデオブロックは、後続ビデオフレーム中のブロックをインターコーディングするための参照ブロックとして、動き推定ユニット42と動き補償ユニット44とによって使用され得る。
【0174】
[0191]ビデオ符号化器20は、対応するクロミナンス成分がなくとも、ルミナンス成分をコーディングするためのコーディング技法に実質的に似るように深度マップを符号化することができる。たとえば、イントラ予測処理ユニット46は、深度マップのブロックをイントラ予測することができるが、動き推定ユニット42および動き補償ユニット44は、深度マップのブロックをインター予測し得る。しかしながら、上記で論じたように、深度マップのインター予測の間、動き補償ユニット44は、深度範囲と、それらの深度範囲のための精度値との差に基づいて、参照深度マップの値をスケーリング(すなわち、調整する)ことができる。たとえば、現在の深度マップ中および参照深度マップ中の異なる最大深度値が同じ実世界深度に対応する場合、ビデオ符号化器20は、予測のために、現在の深度マップ中の最大深度値に等しくなるように、参照深度マップの最大深度値をスケーリングすることができる。追加または代替として、ビデオ符号化器20は、たとえば、ビュー間予測と実質的に同様の技法を使用して、ビュー合成予測のためのビュー合成ピクチャを生成するために、更新された深度範囲値と精度値とを使用することができる。
【0175】
[0192]ビデオ符号化器20は、本開示で説明する技法のいずれかを、単独でまたは任意の組合せで実行するように構成され得るビデオ符号化器の一例を表す。たとえば、ビデオ符号化器20は、3D−HEVCにおけるビデオコーディングのためのサブPUレベルの動き予測のための技法を実行するように構成され得る。
【0176】
[0193]一例では、ビデオ符号化器20は、2つ以上のサブPUを含むPUを予測するためにサブPU BVSPモードを実行するように構成され得る。サブPU BVSPモードでは、ビデオ符号化器20の動き補償ユニット44は、少なくとも1つの視差動きベクトルと、ビュー間参照ピクチャを識別する、関連付けられた参照ビューインデックスとを含む、現在のPUのための第1の動き情報を決定する。動き補償ユニット44は、次いで、現在のPUを2つ以上のサブPUに区分し、サブPUの各々に対応するビュー間参照ピクチャの深度ブロックに関連付けられた、少なくとも1つの視差動きベクトルを含む、サブPUの各々のための第2の動き情報を決定する。動き補償ユニット44は、サブPUの各々のための第2の動き情報に基づいて、PUのサブPUの各々を予測するために、動き補償を実行する。本開示の技法によれば、サブPU BVSPモードを使用して予測される各PUに対して、ビデオ符号化器20は、動き補償が実行された後ですら、現在のPUのサブPUの各々のために導出された第2の動き情報を記憶する。第2の動き情報は、復号ピクチャバッファ64に記憶され得る。現在のPUのために記憶された追加の動き情報は、次いで、現在のPUが隣接ブロックである後続PUを予測するために使用され得る。
【0177】
[0194]別の例では、ビデオ符号化器20は、動きベクトル改良が可能にされ得るシングルレイヤコーディングにおけるPUのサブPUを予測するための高度TMVPモードを実行するように構成され得る。高度TMVPモードでは、ビデオ符号化器20の動き補償ユニット44は、現在のPUに対応する参照ピクチャのブロックを識別する、現在のPUのための第1のステージの動きベクトルを決定する。動き補償ユニット44は、次いで、現在のPUを2つ以上のサブPUに区分し、第1のステージの動きベクトルによって識別された参照ピクチャのブロックからサブPUの各々のための第2のステージの動き情報を決定し、この場合、サブPUの各々のための第2のステージの動き情報は、少なくとも1つの動きベクトルと、関連付けられた参照インデックスとを含む。動き補償ユニット44は、サブPUの各々のための第2のステージの動き情報に基づいてサブPUの各々を別個に予測するために、動き補償を実行する。いくつかの例では、動き補償ユニット44は、サブPUの各々のための第2のステージの動き情報の少なくとも1つの動きベクトルを改良するために、動きベクトル差分を決定することができる。
【0178】
[0195]別の例では、ビデオ符号化器20は、複数のサブPUを有する、少なくとも1つのPUを含むビデオブロックのCUに適用されたデブロッキングフィルタプロセスに関する技法を実行するように構成され得る。本開示の技法によれば、サブPUを有するPUを含むビデオブロックのCUにデブロッキングフィルタを適用するのに先立って、ビデオ符号化器20のフィルタユニット63は、サブPU境界において人工的PU境界または人工的TU境界を作成するために、CUを変換する。一例では、フィルタユニット63は、サブPU境界が人工的TU境界に変換されるように、PUを変換ツリー階層に関連付け、サブPUの各々をTUに関連付けるために、CUの変換ツリーを変換する。別の例では、フィルタユニット63は、サブPU境界が人工的PU境界に変換されるように、PUをCUに関連付け、サブPUの各々をPUに関連付けるために、CUをコーディングツリーに変換する。次いで、フィルタユニット63は、人工的PU境界と人工的TU境界とを含めて、CUの2つの隣接するPU間のPU境界および/またはCUの2つの隣接するTU間のTU境界にデブロッキングフィルタを適用する。
【0179】
[0196]
図16は、本開示の技法を実装し得るビデオ復号器30の一例を示すブロック図である。
図16の例では、ビデオ復号器30は、エントロピー復号ユニット70と、ビデオデータメモリ71と、動き補償ユニット72と、イントラ予測処理ユニット74と、逆量子化ユニット76と、逆変換処理ユニット78と、復号ピクチャバッファ82と、フィルタユニット83と、加算器80とを含む。ビデオ復号器30は、いくつかの例では、ビデオ符号化器20(
図15)に関して説明された符号化パスとは全般に逆の復号パスを実行することができる。動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルに基づいて予測データを生成することができ、イントラ予測処理ユニット74は、エントロピー復号ユニット70から受信されたイントラ予測モードインジケータに基づいて予測データを生成することができる。
【0180】
[0197]ビデオデータメモリ71は、ビデオ復号器30の構成要素によって復号されるべき、符号化ビデオビットストリームなどのビデオデータを記憶することができる。ビデオデータメモリ71に記憶されるビデオデータは、たとえば、コンピュータ可読媒体16から、たとえば、カメラなどのローカルビデオソースから、ビデオデータのワイヤードもしくはワイヤレスネットワーク通信を介して、または物理データ記憶媒体にアクセスすることによって取得され得る。ビデオデータメモリ71は、符号化ビデオビットストリームからの符号化ビデオデータを記憶するコード化ピクチャバッファ(CPB)を形成することができる。復号ピクチャバッファ82は、たとえば、イントラコーディングモードまたはインターコーディングモードでビデオ復号器30によってビデオデータを復号する際に使用するための参照ビデオデータを記憶する参照ピクチャメモリであり得る。ビデオデータメモリ71および復号ピクチャバッファ82は、同期DRAM(SDRAM)、磁気抵抗RAM(MRAM)、抵抗RAM(RRAM)、または他のタイプのメモリデバイスを含む、ダイナミックランダムアクセスメモリ(DRAM)のような様々なメモリデバイスのいずれかによって形成され得る。ビデオデータメモリ71および復号ピクチャバッファ82は、同じメモリデバイスまたは別個のメモリデバイスによって提供され得る。様々な例では、ビデオデータメモリ71は、ビデオ復号器30の他の構成要素とともにオンチップであるか、またはそれらの構成要素に対してオフチップであり得る。
【0181】
[0198]復号プロセスの間、ビデオ復号器30は、符号化ビデオスライスのビデオブロックおよび関連付けられたシンタックス要素を表す符号化ビットストリームをビデオ符号化器20から受信する。ビデオ復号器30のエントロピー復号ユニット70は、量子化された係数と、動きベクトルまたはイントラ予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームをエントロピー復号する。エントロピー復号ユニット70は、動きベクトルと他のシンタックス要素とを動き補償ユニット72に転送する。ビデオ復号器30は、ビデオスライスレベルおよび/またはビデオブロックレベルでシンタックス要素を受け取ることができる。
【0182】
[0199]ビデオスライスがイントラコード化(I)スライスとしてコーディングされるとき、イントラ予測処理ユニット74は、シグナリングされたイントラ予測モードと、現在のフレームまたは現在のピクチャの、前に復号されたブロックからのデータとに基づいて、現在のビデオスライスのビデオブロックのための予測データを生成することができる。ビデオフレームがインターコード化(すなわち、BまたはP)スライスとしてコーディングされるとき、動き補償ユニット72は、エントロピー復号ユニット70から受信された動きベクトルと他のシンタックス要素とに基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つの中の参照ピクチャのうちの1つから生成され得る。ビデオ復号器30は、復号ピクチャバッファ82に記憶された参照ピクチャに基づいて、本開示の技法を使用して、参照フレームリスト、すなわち、リスト0およびリスト1を構築することができる。動き補償ユニット72は、動きベクトルと他のシンタックス要素とを解析することによって現在のビデオスライスのビデオブロックのための予測情報を決定し、復号されている現在のビデオブロックの予測ブロックを生成するために、その予測情報を使用する。たとえば、動き補償ユニット72は、ビデオスライスのビデオブロックをコーディングするために使用される予測モード(たとえば、イントラ予測またはインター予測)と、インター予測スライスタイプ(たとえば、BスライスまたはPスライス)と、スライスのための参照ピクチャリストのうちの1つまたは複数についての構築情報と、スライスの各インター符号化ビデオブロックのための動きベクトルと、スライスの各インターコード化ビデオブロックのためのインター予測ステータスと、現在のビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素のうちのいくつかを使用する。
【0183】
[0200]動き補償ユニット72はまた、補間フィルタに基づいて補間を実行することができる。動き補償ユニット72は、参照ブロックのサブ整数ピクセルのために補間された値を計算するために、ビデオブロックの符号化の間にビデオ符号化器20によって使用された補間フィルタを使用することができる。この場合、動き補償ユニット72は、受信されたシンタックス要素からビデオ符号化器20によって使用された補間フィルタを決定し、予測ブロックを生成するために補間フィルタを使用することができる。
【0184】
[0201]逆量子化ユニット76は、ビットストリーム内で提供され、エントロピー復号ユニット70によって復号された、量子化変換係数を逆量子化(inverse quantize)、すなわち、逆量子化(de-quantize)する。逆量子化プロセスは、量子化の程度を決定し、同様に、適用されるべき逆量子化の程度を決定するための、ビデオスライス中の各ビデオブロックのためにビデオ復号器30によって計算される量子化パラメータQP
Yの使用を含み得る。逆変換処理ユニット78は、ピクセル領域において残差ブロックを生成するために、逆変換、たとえば、逆DCT、逆整数変換、または概念的に同様の逆変換プロセスを変換係数に適用する。
【0185】
[0202]動き補償ユニット72が、動きベクトルおよび他のシンタックス要素に基づいて現在のビデオブロックのための予測ブロックを生成した後、ビデオ復号器30は、逆変換処理ユニット78からの残差ブロックを動き補償ユニット72によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器90は、この加算演算を実行する1つまたは複数の構成要素を表す。フィルタユニット63は、デブロッキングフィルタプロセスを適用することができる。フィルタユニット63は、再構築されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタリングするためのデブロッキングフィルタおよび/またはSAOフィルタを含み得る。追加のフィルタ(インループまたはポストループ)も、デブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡潔さのために示されていないが、望まれる場合には、加算器80の出力を(インループフィルタとして)フィルタリングすることができる。所与のフレームまたはピクチャ中の復号ビデオブロックは、次いで、後続の動き補償のために使用される参照ピクチャを記憶する復号ピクチャバッファ82に記憶される。復号ピクチャバッファ82はまた、
図1のディスプレイデバイス32などのディスプレイデバイス上での後の表示のために、復号ビデオを記憶する。
【0186】
[0203]ビデオ復号器30は、対応するクロミナンス成分がなくとも、ルミナンス成分を復号するための復号技法に実質的に似るように深度マップを復号することができる。たとえば、イントラ予測処理ユニット74は、深度マップのブロックをイントラ予測することができるが、動き補償ユニット72は、深度マップのブロックをインター予測し得る。しかしながら、上記で論じたように、深度マップのインター予測の間、動き補償ユニット72は、深度範囲と、それらの深度範囲のための精度値との差に基づいて、参照深度マップの値をスケーリング(すなわち、調整する)ことができる。たとえば、現在の深度マップおよび参照深度マップ中の異なる最大深度値が同じ実世界深度に対応する場合、ビデオ復号器30は、予測のために、現在の深度マップ中の最大深度値に等しくなるように、参照深度マップの最大深度値をスケーリングすることができる。追加または代替として、ビデオ復号器30は、たとえば、ビュー間予測に実質的に類似した技法を使用して、ビュー合成予測のためのビュー合成ピクチャを生成するために、更新された深度範囲値と精度値とを使用することができる。
【0187】
[0204]ビデオ復号器30は、本開示で説明する技法のいずれかを、単独でまたは任意の組合せで実行するように構成され得るビデオ復号器の一例を表す。たとえば、ビデオ復号器30は、3D−HEVCにおけるビデオコーディングのためのサブPUレベルの動き予測のための技法を実行するように構成され得る。
【0188】
[0205]一例では、ビデオ復号器30は、2つ以上のサブPUを含むPUを予測するためにサブPU BVSPモードを実行するように構成され得る。サブPU BVSPモードでは、ビデオ復号器30の動き補償ユニット72は、少なくとも1つの視差動きベクトルと、ビュー間参照ピクチャを識別する、関連付けられた参照ビューインデックスとを含む現在のPUのための第1の動き情報を決定する。動き補償ユニット72は、次いで、現在のPUを2つ以上のサブPUに区分し、サブPUの各々に対応するビュー間参照ピクチャの深度ブロックに関連付けられた、少なくとも1つの視差動きベクトルを含む、サブPUの各々のための第2の動き情報を決定する。動き補償ユニット72は、サブPUの各々のための第2の動き情報に基づいてPUのサブPUの各々を予測するために、動き補償を実行する。本開示の技法によれば、サブPU BVSPモードを使用して予測される各PUに対して、ビデオ復号器30は、動き補償が実行された後ですら、現在のPUのサブPUの各々のために導出された第2の動き情報を記憶する。第2の動き情報は、復号ピクチャバッファ82に記憶され得る。現在のPUのために記憶された追加の動き情報は、次いで、現在のPUが隣接ブロックである後続PUを予測するために使用され得る。
【0189】
[0206]別の例では、ビデオ復号器30は、動きベクトル改良が可能にされ得るシングルレイヤコーディングにおけるPUのサブPUを予測するための高度TMVPモードを実行するように構成され得る。高度TMVPモードでは、ビデオ復号器30の動き補償ユニット72は、現在のPUに対応する参照ピクチャのブロックを識別する、現在のPUのための第1のステージの動きベクトルを決定する。動き補償ユニット72は、次いで、現在のPUを2つ以上のサブPUに区分し、第1のステージの動きベクトルによって識別された参照ピクチャのブロックからサブPUの各々のための第2のステージの動き情報を決定し、この場合、サブPUの各々のための第2のステージの動き情報は、少なくとも1つの動きベクトルと、関連付けられた参照インデックスとを含む。動き補償ユニット72は、サブPUの各々のための第2のステージの動き情報に基づいてサブPUの各々を別個に予測するために、動き補償を実行する。いくつかの例では、動き補償ユニット72は、サブPUの各々のための第2のステージの動き情報の少なくとも1つの動きベクトルを改良するために、動きベクトル差分を決定することができる。
【0190】
[0207]別の例では、ビデオ復号器30は、複数のサブPUを有する、少なくとも1つのPUを含むビデオブロックのCUに適用されるデブロッキングフィルタプロセスに関する技法を実行するように構成され得る。本開示の技法によれば、サブPUを有するPUを含むビデオブロックのCUにデブロッキングフィルタを適用するのに先立って、ビデオ復号器30のフィルタユニット83は、サブPU境界において人工的PU境界または人工的TU境界を作成するために、CUを変換する。一例では、フィルタユニット83は、サブPU境界が人工的TU境界に変換されるように、PUを変換ツリー階層に関連付け、サブPUの各々をTUに関連付けるために、CUの変換ツリーを変換する。別の例では、フィルタユニット83は、サブPU境界が人工的PU境界に変換されるように、PUをCUに関連付け、サブPUの各々をPUに関連付けるために、CUをコーディングツリーに変換する。次いで、フィルタユニット83は、人工的PU境界と人工的TU境界とを含めて、CUの2つの隣接するPU間のPU境界および/またはCUの2つの隣接するTU間のTU境界にデブロッキングフィルタを適用する。
【0191】
[0208]
図17は、サブPU BVSPモードを使用して、現在のPUを予測し、決定されたサブPU動き情報記憶を記憶する例示的な動作を示すフローチャートである。本開示では、示した演算について、
図16のビデオ復号器30を参照しながら説明する。他の例では、示した演算は、
図15のビデオ符号化器20、または3D−HEVC規格に従って動作する任意の他の符号化デバイスもしくは復号デバイスによって実行され得る。
【0192】
[0209]ビデオ復号器30は、符号化スライスのビデオブロックと、関連付けられたシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオ復号器30のエントロピー復号ユニット70は、量子化された変換係数と、動き情報および予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームを復号する。エントロピー復号ユニット70は、復号されるべきビデオブロックの残差ブロックを再構築するために、復号された量子化変換係数を逆量子化ユニット76および逆変換処理ユニット78に送る。エントロピー復号ユニット70は、復号動き情報とインター予測モードインジケータとを動き補償ユニット72に送る。
【0193】
[0210]動き補償ユニット72は、マージモードまたはAMVPインター予測モードのうちの示されたモードに従って復号されるべきビデオブロックの各CUの各PUを予測する。たとえば、マージモードでは、動き補償ユニット72は、動き情報、すなわち、現在のPUの空間的隣接ブロックおよび時間的隣接ブロックの動きベクトル、ならびに、関連付けられた参照インデックスを含む動き情報のマージモード候補リストを生成することができる。この場合、復号動き情報は、現在のPUを予測するために、マージモード候補リスト中の動き情報のセットのうちの1つを示すマージインデックスを含み得る。BVSPモードでは、マージモード候補リストは、視差動きベクトルと関連付けられた参照ビューインデックスとを含む動き情報を有する特殊BVSP候補を含み、深度情報は動き情報を改良するために使用される。
【0194】
[0211]本開示の技法によれば、動き補償ユニット72は、BVSPモードに従って、PUの隣接ブロックから、現在のPUのための第1の動き情報を決定し、この場合、第1の動き情報は、少なくとも1つの視差動きベクトルと、ビュー間参照ピクチャを識別する、関連付けられた参照ビューインデックスとを含む(140)。上記で説明したように、動き補償ユニット72は、マージモード候補リストからのBVSP候補として、現在のPUのための第1の動き情報を選択することができる。場合によっては、現在のPUのための第1の動き情報は、第1の参照ピクチャリストおよび第2の参照ピクチャリストの各々に対応する視差動きベクトルを含み得る。
【0195】
[0212]動き補償ユニット72は、次いで、現在のPUを2つ以上のサブPUに区分する(142)。動き補償ユニット72は、サブPUの各々のための第2の動き情報を決定する、この場合、第2の動き情報は、サブPUの各々に対応するビュー間参照ピクチャの少なくとも1つの視差動きベクトル関連深度ブロックを含む(144)。たとえば、動き補償ユニット72は、サブPUの各々に対応するビュー間参照ピクチャの深度ブロックのための4つのコーナーピクセルの最大値を選択し、最大値を、サブPUの各々のための視差動きベクトルの水平成分に変換することができる。サブPUの各々のための視差動きベクトルの垂直成分はゼロに等しい。場合によっては、サブPUの各々のための第2の動き情報は、第1の参照ピクチャリストおよび第2の参照ピクチャリストの各々に対応する視差動きベクトルを含み得る。
【0196】
[0213]動き補償ユニット72は、第2の動き情報に基づいて、ビュー間参照ピクチャから現在のPUのサブPUの各々を予測するために、動き補償を実行する(146)。動き補償を実行した後、ビデオ復号器30は、後続のPUを予測するために使用されることになる、現在のPUのサブPUの各々のための第2の動き情報をメモリ、たとえば、ビデオ復号器30の復号ピクチャバッファ82に記憶する(148)。たとえば、ビデオ復号器30は、サブPUの各々のために導出された視差動きベクトルを、PUのための第1の動き情報の参照ビューインデックスによって識別されたビュー間参照ピクチャを含む参照ピクチャリストに関連付けられた復号ピクチャバッファ82に記憶することができる。動き補償の間、PUのサブPUの各々のための予測ブロックを生成した後、ビデオ復号器30は、対応する残差ブロックの再構築されたバージョンと、サブPUの各々のための予測ブロックとに基づいて、ビデオブロックの再構築されたバージョンを生成する。
【0197】
[0214]従来、3D−HEVCのBVSPモードでは、サブPUの各々を予測するために動き補償を実行した後、各参照ピクチャリストに対応する単一の視差動きベクトルのみが現在のPUのために記憶される。PUの動き補償がPUの複数のサブPUのための複数の動きベクトルに基づく場合ですら、各参照ピクチャリストのための単一の視差動きベクトルが記憶される。この場合、後続PUを予測するために現在のPUが使用されるとき、現在のPUのサブPUは、サブPU BVSPモードが動きベクトル予測の精度の改善に与える影響がほとんどないように、同じ動きベクトルを有すると見なされる。
【0198】
[0215]本開示の技法によれば、サブPU BVSPモードでコーディングされる各PUに対して、ビデオ復号器30は、動き補償が実行された後ですら、現在のPUのサブPUの各々のために導出された第2の動き情報を記憶する。現在のPUのために記憶された追加の動き情報は、次いで、現在のPUが隣接ブロックである後続PUを予測するために使用され得る。たとえば、動き補償ユニット72は、マージモード候補リスト中のサブPU BVSP候補として、復号ピクチャバッファ82に記憶されたPUのサブPUのうちの少なくとも1つのための第2の動き情報を含む、後続PUを予測するための動き情報のマージモード候補リストを生成することができる。一例では、後続PUがサブPU BVSPモードでコーディングされる場合、動き補償ユニット72は、後続PUのサブPUの各々のための第2の動き情報を導出する必要がない。代わりに、動き補償ユニット72は、代わりに、後続PUのサブPUを予測するための動き情報のマージモード候補リストからサブPU BVSP候補として第2の動き情報を選択することができる。
【0199】
[0216]
図18は、CU中のサブPU境界を含めて、TU境界およびPU境界をフィルタリングするために、ビデオブロックの各CUにデブロッキングフィルタを適用する例示的な動作を示すフローチャートである。ビデオブロックを再構築した後、および参照ピクチャのブロックとしてビデオブロックを復号ピクチャバッファに記憶する前に、デブロッキングフィルタが適用される。本開示では、示した演算について、
図16のビデオ復号器30を参照しながら説明する。他の例では、示した演算は、
図15のビデオ符号化器20、またはサブPU設計およびデブロッキングフィルタを使用する任意の他の符号化デバイスもしくは復号デバイスのビデオブロック再構築ループで実行され得る。
【0200】
[0217]ビデオ復号器30は、対応する残差ブロックの再構築されたバージョンと予測ブロックとに基づいて、ビデオブロックの再構築バージョンを生成する(150)。ビデオブロックは少なくとも1つのCUを含み、CUは、2つ以上のサブPUに区分された、少なくとも1つのPUを含み得る。
図17に関して上記で説明したように、ビデオ復号器30の動き補償ユニット72は、PUのサブPUの各々のためのビデオ圧縮の間、予測ブロックを生成することができる。HEVC規格のためのデブロッキングフィルタは、PU内で、すなわち、サブPU境界に沿って、フィルタするように設計されていないが、これは、HEVCブロックでは、動き補償はPU全体のために同じであると仮定されるためである。本開示は、HEVCデブロッキングフィルタが3D−HEVCブロックのために引き続き使用され得るように、サブPUを有するPUをデブロッキングフレンドリーな構造に変換するための技法について説明する。
【0201】
[0218]2つ以上のサブPUを有するPUを含むビデオブロックのCUにデブロッキングフィルタを適用するのに先立って、ビデオ復号器30のフィルタユニット83は、PUの2つの隣接するサブPU間のサブPU境界において人工的PU境界または人工的TU境界を作成するために、CUを変換する(152)。一例では、フィルタユニット83は、サブPU境界が人工的TU境界に変換されるように、PUを変換ツリー階層に関連付け、サブPUの各々をTUに関連付けるために、CUの変換ツリーを変換する。別の例では、フィルタユニット83は、サブPU境界が人工的PU境界に変換されるように、PUをCUに関連付け、サブPUの各々をPUに関連付けるために、CUをコーディングツリーに変換する。
【0202】
[0219]次いで、フィルタユニット83は、人工的PU境界と人工的TU境界とを含めて、CUの2つの隣接するPU間のPU境界および/またはCUの2つの隣接するTU間のTU境界にデブロッキングフィルタを適用する(154)。ビデオブロックの再構築されたバージョンのCUの各々をフィルタリングした後、フィルタユニット83は、参照ピクチャのブロックとしてビデオブロックを復号ピクチャバッファ82に記憶する(156)。
【0203】
[0220]
図19、シングルレイヤコーディングにおけるPUのサブPUを予測するための高度TMVPモードの例示的な動作を示すフローチャート。本開示では、示した演算について、
図16のビデオ復号器30を参照しながら説明する。他の例では、示した演算は、
図15のビデオ符号化器20、またはサブPU設計を使用する任意の他の符号化デバイスもしくは復号デバイスによって実行され得る。
【0204】
[0221]ビデオ復号器30は、符号化ビデオスライスのビデオブロックと、関連付けられたシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオ復号器30のエントロピー復号ユニット70は、量子化された変換係数と、動き情報および予測モードインジケータと、他のシンタックス要素とを生成するために、ビットストリームを復号する。エントロピー復号ユニット70は、復号されるべきビデオブロックの残差ブロックを再構築するために、復号された量子化変換係数を逆量子化ユニット76および逆変換処理ユニット78に送る。エントロピー復号ユニット70は、復号動き情報とインター予測モードインジケータとを動き補償ユニット72に送る。
【0205】
[0222]動き補償ユニット72は、マージモードまたはAMVPインター予測モードのうちの示されたモードに従って復号されるべきビデオブロックの各CUの各PUを予測する。たとえば、マージモードでは、動き補償ユニット72は、動き情報、すなわち、現在のPUの空間的隣接ブロックおよび時間的隣接ブロックの動きベクトル、ならびに、関連付けられた参照インデックスを含む動き情報のマージモード候補リストを生成することができる。この場合、復号動き情報は、現在のPUを予測するために、マージモード候補リスト中の動き情報のセットのうちの1つを示すマージインデックスを含み得る。別の例では、AMVPモードでは、動き補償ユニット72は、現在のPUの空間的隣接ブロックおよび時間的隣接ブロックの動きベクトルのみを含むAMVPモード候補リストを生成することができる。この場合、復号動き情報は、AMVPモード候補リスト中の動きベクトルのうちの1つを示すAMVPインデックスを含み得、現在のPUを予測するために選択された動きベクトルを改良するために、明示的にシグナリングされた参照インデックスおよび任意の動きベクトル差分をやはり含み得る。
【0206】
[0223]従来、サブPU設計は、マージインター予測モードを使用したレイヤ間予測またはビュー間予測のためにのみ有効にされる。本開示は、動きベクトル改良が可能にされ得るシングルレイヤコーディングにおけるPUのサブPUを予測するための高度TMVPモードについて説明する。一例では、現在のPUを予測するための高度TMVPモードの性能を示すために、動き補償ユニット72は、PUのためのマージモード候補リスト中に高度TMVP候補を生成することができ、この場合、高度TMVP候補の選択は、PUを予測するための高度TMVPモードの性能を示す。
【0207】
[0224]本開示の技法によれば、動き補償ユニット72は、現在のPUに対応する参照ピクチャのブロックを識別するPUの隣接ブロックから、現在のPUのための第1のステージの動きベクトルを決定する(160)。一例として、動き補償ユニット72は、現在のPUの空間的隣接ブロックおよび/または時間的隣接ブロックから第1のステージの動きベクトルを導出することができる。別の例では、動き補償ユニット72は、現在のPUのためのマージモード候補リストから第1のステージの動きベクトルを選択することができる。別の例では、第1のステージの動きベクトルは、一定の値またはあらかじめ定義された値になるように設定され得る。
【0208】
[0225]動き補償ユニット72は、次いで、現在のPUを2つ以上のサブPUに区分する(162)。動き補償ユニット72は、第1のステージの動きベクトルによって識別された参照ピクチャのブロックからサブPUの各々のための第2のステージの動き情報を決定し、この場合、サブPUの各々のための第2のステージの動き情報は、少なくとも1つの動きベクトルと、関連付けられた参照インデックスとを含む(164)。場合によっては、サブPUの各々のための第2のステージの動き情報は、第1の参照ピクチャリストおよび第2の参照ピクチャリストの各々に対応する動きベクトルを含み得る。サブPUのうちの1つのための第2のステージの動き情報の動きベクトルのうちの少なくとも1つが利用可能でない場合、動き補償ユニット72は、サブPUのうちの1つのために、第1のステージの動きベクトルなど、代表的な動きベクトルを使用することができる。
【0209】
[0226]いくつかの例では、単にマージモードで動作する代わりに、AMVPモードと同様の動きベクトル改良が有効にされ得る。たとえば、動き補償ユニット72は、高度TMVPモードを使用して予測される現在のPUのための動き改良データを決定することができる。1つの事例では、動き補償ユニット72は、サブPUのうちの1つまたは複数のための第2のステージの動き情報に適用可能な動きベクトル差分を決定することができる。上記で説明したように、動きベクトル差分は、符号化ビデオビットストリームに含まれた動き情報中でシグナリングされ得る。この例では、現在のPUを予測するための動き改良データを使用する高度TMVPモードの性能を示すために、動き補償ユニット72は、PUのためのAMVPモード候補リスト中に高度TMVP候補を生成することができ、この場合、高度TMVP候補の選択は、PUを予測するための動き改良データを使用する高度TMVPモードの性能を示す。
【0210】
[0227]動き補償ユニット72は、サブPUの各々のための第2のステージの動き情報に基づいてサブPUの各々を別個に予測するために、動き補償を実行する(166)。動き補償の間、PUのサブPUの各々のための予測ブロックを生成した後、ビデオ復号器30は、対応する残差ブロックの再構築されたバージョンと、サブPUの各々のための予測ブロックとに基づいて、ビデオブロックの再構築されたバージョンを生成する。
【0211】
[0228]1つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は1つもしくは複数の命令またはコードとしてコンピュータ可読媒体上に記憶されるか、あるいはコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体などの有形媒体に対応するコンピュータ可読記憶媒体、または、たとえば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体を含み得る。このようにして、コンピュータ可読媒体は、一般に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号もしくはキャリア波のような通信媒体に対応し得る。データ記憶媒体は、本開示で説明する技法の実装のための命令、コードおよび/あるいはデータ構造を取り出すために、1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る、任意の利用可能な媒体であり得る。コンピュータプログラム製品は、コンピュータ可読媒体を含み得る。
【0212】
[0229]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROMもしくは他の光ディスクストレージ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、フラッシュメモリ、または、命令もしくはデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る任意の他の媒体を備え得る。また、任意の接続が、コンピュータ可読媒体と適切に呼ばれる。たとえば、命令が、ウェブサイト、サーバ、または他の遠隔ソースから、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線、マイクロ波などのワイヤレス技術は、媒体の定義に含まれる。ただし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的媒体を含まないが、代わりに、非一時的な有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)およびディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)、およびBlu−rayディスク(disc)を含み、ここで、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上の組合せも、コンピュータ可読媒体の範囲の中に含まれるべきである。
【0213】
[0230]命令は、1つもしくは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の同等の集積回路またはディスクリート論理回路などの1つもしくは複数のプロセッサによって実行され得る。したがって、「プロセッサ」という用語は、本明細書で使用される時に、前述の構造のいずれかまたは本明細書で説明した技法の実装に適切な任意の他の構造を指すことができる。加えて、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成されるか、または複合コーデックに組み込まれる、専用のハードウェアモジュールおよび/もしくはソフトウェアモジュール内で提供され得る。また、本技法は、1つもしくは複数の回路または論理要素で十分に実装され得る。
【0214】
[0231]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)もしくはICのセット(たとえば、チップセット)を含む、多種多様なデバイスまたは装置で実装され得る。様々な構成要素、モジュール、またはユニットは、開示した技術を実行するように構成されたデバイスの機能的態様を強調するように本開示において説明されているが、異なるハードウェアユニットによる実現を必ずしも必要としない。そうではなく、上記で説明したように、様々なユニットは、コーデックハードウェアユニット中で組み合わせられるか、または上記で説明した1つもしくは複数のプロセッサを含む、適切なソフトウェアおよび/またはファームウェアとともに相互動作可能なハードウェアユニットの集合によって提供され得る。
【0215】
[0232]様々な例が、説明された。これらおよび他の例は、以下の特許請求の範囲に含まれる。
以下に、出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータを処理する方法であって、
後方ビュー合成予測(BVSP)モードに従って、予測ユニット(PU)の隣接ブロックからビデオブロックのコーディングユニット(CU)の前記PUのための第1の動き情報を決定すること、ここにおいて、前記第1の動き情報は、少なくとも1つの視差動きベクトルと、ビュー間参照ピクチャを識別する、関連付けられた参照ビューインデックスとを含む、と、
前記PUを2つ以上のサブPUに区分することと、
前記サブPUの各々のための第2の動き情報を決定すること、ここにおいて、前記第2の動き情報は、前記サブPUの各々に対応する前記ビュー間参照ピクチャの深度ブロックに関連付けられた、少なくとも1つの視差動きベクトルを含む、と、
前記第2の動き情報に基づいて、前記ビュー間参照ピクチャから前記サブPUの各々を予測するために、動き補償を実行することと、
後続PUを予測するために使用されることになる、前記PUの前記サブPUの各々のための前記第2の動き情報をメモリに記憶することと
を備える、方法。
[C2]
後続PUを予測するための動き情報のマージモード候補リストを生成することをさらに備え、前記PUは、前記後続PUの隣接ブロックであり、前記マージモード候補リストを生成することは、前記マージモード候補リスト中のサブPU BVSP候補として、前記メモリに記憶された前記PUの前記サブPUのうちの少なくとも1つのための前記第2の動き情報を含めることを備える、
C1に記載の方法。
[C3]
前記PUのための前記第1の動き情報を決定することは、前記PUを予測するための動き情報のマージモード候補リストからBVSP候補として前記第1の動き情報を選択することを備える、
C1に記載の方法。
[C4]
前記サブPUの各々のための前記第2の動き情報を決定することは、前記サブPUの各々に対応する前記ビュー間参照ピクチャの前記深度ブロックのための4つのコーナーピクセルの最大値に等しい水平成分と、ゼロに等しい垂直成分とを有するように、前記サブPUの各々のための前記少なくとも1つの視差動きベクトルを導出することを備える、
C1に記載の方法。
[C5]
前記サブPUの各々のための前記第2の動き情報を決定することは、サブPUを予測するための動き情報のマージモード候補リストからサブPU BVSP候補として前記第2の動き情報を選択することを備える、
C1に記載の方法。
[C6]
前記メモリは、復号ピクチャバッファを備え、前記第2の動き情報を記憶することは、前記PUのための前記第1の動き情報の前記参照ビューインデックスによって識別された前記ビュー間参照ピクチャを含む参照ピクチャリストとともに、前記サブPUの各々のための前記視差動きベクトルを前記復号ピクチャバッファに記憶することを備える、
C1に記載の方法。
[C7]
前記第2の動き情報に基づいて、前記ビュー間参照ピクチャから前記PUの前記サブPUの各々のための予測ブロックを生成することと、
前記ビデオブロックと前記サブPUの各々のための前記予測ブロックとに基づいて、残差ブロックを生成することと、
前記残差ブロックとビデオビットストリーム中の前記PUのための少なくとも前記第1の動き情報のインジケータとを符号化することと
をさらに備える、C1に記載の方法。
[C8]
残差ブロックと受信されたビデオビットストリームからの前記PUのための少なくとも前記第1の動き情報のインジケータとを復号することと、
前記第2の動き情報に基づいて、前記ビュー間参照ピクチャから前記PUの前記サブPUの各々のための予測ブロックを生成することと、
前記残差ブロックと前記サブPUの各々のための前記予測ブロックとに基づいて、前記ビデオブロックの再構築されたバージョンを生成することと
をさらに備える、C1に記載の方法。
[C9]
前記ビデオブロックを復号ピクチャバッファに記憶するのに先立って、前記ビデオブロックの再構築されたバージョンの各CUにデブロッキングフィルタを適用することをさらに備え、前記2つ以上のサブPUを有する前記PUを含む前記ビデオブロックの前記CUに前記デブロッキングフィルタを適用することは、
前記CUに前記デブロッキングフィルタを適用するのに先立って、前記PU中の2つの隣接するサブPU間のサブPU境界において人工的PU境界または人工的変換ユニット(TU)境界を作成することと、
前記人工的PU境界または前記人工的TU境界を含む、前記CUの2つの隣接するPU間のPU境界または前記CUの2つの隣接するTU間のTU境界のうちの少なくとも1つに前記デブロッキングフィルタを適用することと
を備える、C1に記載の方法。
[C10]
前記人工的PU境界または前記人工的TU境界を作成することは、前記PUを変換ツリー階層に関連付け、前記サブPUの各々をTUに関連付けるために、前記CUの変換ツリーを変換することを備え、前記サブPU境界は、人工的TU境界を備える、
C9に記載の方法。
[C11]
前記人工的PU境界または前記人工的TU境界を作成することは、前記PUを変換ツリー階層に関連付け、前記サブPUの各々の少なくとも一部をTUに関連付けるために、前記CUの変換ツリーを変換することであり、ここにおいて、前記サブPU境界が人工的TUを備える、を備える、C9に記載の方法。
[C12]
前記人工的PU境界または前記人工的TU境界を作成することは、前記PUをCUに関連付け、前記サブPUの各々をPUに関連付けるために、前記CUをコーディングツリーに変換することを備え、前記サブPU境界は、人工的PU境界を備える、
C9に記載の方法。
[C13]
ビデオ処理デバイスであって、
ビデオデータを記憶するように構成されたメモリと、
前記メモリと通信する1つまたは複数のプロセッサと
を備え、前記1つまたは複数のプロセッサは、
後方ビュー合成予測(BVSP)モードに従って、予測ユニット(PU)の隣接ブロックからビデオブロックのコーディングユニット(CU)の前記PUのための第1の動き情報を決定すること、前記第1の動き情報は、少なくとも1つの視差動きベクトルと、ビュー間参照ピクチャを識別する、関連付けられた参照ビューインデックスとを含む、と、
前記PUを2つ以上のサブPUに区分することと、
前記サブPUの各々のための第2の動き情報を決定すること、ここにおいて、前記第2の動き情報は、前記サブPUの各々に対応する前記ビュー間参照ピクチャの深度ブロックに関連付けられた、少なくとも1つの視差動きベクトルを含む、と、
前記第2の動き情報に基づいて、前記ビュー間参照ピクチャから前記サブPUの各々を予測するために、動き補償を実行することと
を行うように構成され、
前記メモリは、後続PUを予測するために使用されることになる、前記PUの前記サブPUの各々のための前記第2の動き情報を記憶することを行うように構成される、
ビデオ処理デバイス。
[C14]
前記1つまたは複数のプロセッサは、後続PUを予測するための動き情報のマージモード候補リストを生成することを行うように構成され、前記PUは、前記後続PUの隣接ブロックであり、前記マージモード候補リストは、前記マージモード候補リスト中のサブPU BVSP候補として、前記メモリに記憶された前記PUの前記サブPUのうちの少なくとも1つのための前記第2の動き情報を含む、
C13に記載のデバイス。
[C15]
前記1つまたは複数のプロセッサは、前記PUを予測するための動き情報のマージモード候補リストからBVSP候補として前記第1の動き情報を選択することを行うように構成される、
C13に記載のデバイス。
[C16]
前記1つまたは複数のプロセッサは、前記サブPUの各々に対応する前記ビュー間参照ピクチャの前記深度ブロックのための4つのコーナーピクセルの最大値に等しい水平成分と、ゼロに等しい垂直成分とを有するように、前記サブPUの各々のための前記第2の動き情報に含まれた前記少なくとも1つの視差動きベクトルを導出することを行うように構成される、
C13に記載のデバイス。
[C17]
前記1つまたは複数のプロセッサは、サブPUを予測するための動き情報のマージモード候補リストからサブPU BVSP候補として前記サブPUの各々のための前記第2の動き情報を選択することを行うように構成される、
C13に記載のデバイス。
[C18]
前記メモリは、復号ピクチャバッファを備え、前記1つまたは複数のプロセッサは、前記PUのための前記第1の動き情報の前記参照ビューインデックスによって識別された前記ビュー間参照ピクチャを含む参照ピクチャリストとともに、前記サブPUの各々のための前記第2の動き情報に含まれた前記視差動きベクトルを前記復号ピクチャバッファに記憶することを行うように構成される、
C13に記載のデバイス。
[C19]
前記ビデオ処理デバイスは、ビデオ符号化デバイスを備え、前記1つまたは複数のプロセッサは、
前記第2の動き情報に基づいて、前記ビュー間参照ピクチャから前記PUの前記サブPUの各々のための予測ブロックを生成することと、
前記ビデオブロックと前記サブPUの各々のための前記予測ブロックとに基づいて、残差ブロックを生成することと、
前記残差ブロックとビデオビットストリーム中の前記PUのための少なくとも前記第1の動き情報のインジケータとを符号化することと
を行うように構成される、C13に記載のデバイス。
[C20]
前記ビデオ処理デバイスは、ビデオ復号デバイスを備え、前記1つまたは複数のプロセッサは、
残差ブロックと受信されたビデオビットストリームからの前記PUのための少なくとも前記第1の動き情報のインジケータとを復号することと、
前記第2の動き情報に基づいて、前記ビュー間参照ピクチャから前記PUの前記サブPUの各々のための予測ブロックを生成することと、
前記残差ブロックと前記サブPUの各々のための前記予測ブロックとに基づいて、前記ビデオブロックの再構築されたバージョンを生成することと
を行うように構成される、C13に記載のデバイス。
[C21]
前記1つまたは複数のプロセッサは、前記ビデオブロックを復号ピクチャバッファに記憶するのに先立って、前記ビデオブロックの再構築されたバージョンの各CUにデブロッキングフィルタを適用することを行うように構成され、前記2つ以上のサブPUを有する前記PUを含む前記ビデオブロックの前記CUに前記デブロッキングフィルタを適用するために、前記1つまたは複数のプロセッサは、
前記CUに前記デブロッキングフィルタを適用するのに先立って、前記PU中の2つの隣接するサブPU間のサブPU境界において人工的PU境界または人工的変換ユニット(TU)境界を作成することと、
前記人工的PU境界または前記人工的TU境界を含む、前記CUの2つの隣接するPU間のPU境界または前記CUの2つの隣接するTU間のTU境界のうちの少なくとも1つに前記デブロッキングフィルタを適用することと
を行うように構成される、C13に記載のデバイス。
[C22]
前記1つまたは複数のプロセッサは、前記PUを変換ツリー階層に関連付け、前記サブPUの各々をTUに関連付けるために、前記CUの変換ツリーを変換することを行うように構成され、前記サブPU境界は、人工的TU境界を備える、
C21に記載のデバイス。
[C23]
前記1つまたは複数のプロセッサは、前記PUを変換ツリー階層に関連付け、前記サブPUの各々の少なくとも一部をTUに関連付けるために、前記CUの変換ツリーを変換することを行うように構成され、前記サブPU境界は、人工的TUを備える、
C21に記載のデバイス。
[C24]
前記1つまたは複数のプロセッサは、前記PUをCUに関連付け、前記サブPUの各々をPUに関連付けるために、前記CUをコーディングツリーに変換することを行うように構成され、前記サブPU境界は、人工的PU境界を備える、
C21に記載のデバイス。
[C25]
後方ビュー合成予測(BVSP)モードに従って、予測ユニット(PU)の隣接ブロックからビデオブロックのコーディングユニット(CU)の前記PUのための第1の動き情報を決定するための手段、ここにおいて、前記第1の動き情報は、少なくとも1つの視差動きベクトルと、ビュー間参照ピクチャを識別する、関連付けられた参照ビューインデックスとを含む、と、
前記PUを2つ以上のサブPUに区分するための手段と、
前記サブPUの各々のための第2の動き情報を決定するための手段、ここにおいて、前記第2の動き情報が、前記サブPUの各々に対応する前記ビュー間参照ピクチャの深度ブロックに関連付けられた、少なくとも1つの視差動きベクトルを含む、と、
前記第2の動き情報に基づいて、前記ビュー間参照ピクチャから前記サブPUの各々を予測するために、動き補償を実行するための手段と、
後続PUを予測するために使用されることになる、前記PUの前記サブPUの各々のための前記第2の動き情報をメモリに記憶するための手段と
を備える、ビデオ処理デバイス。
[C26]
ビデオデータを処理するための命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されると、1つまたは複数のプロセッサに、
後方ビュー合成予測(BVSP)モードに従って、予測ユニット(PU)の隣接ブロックからビデオブロックのコーディングユニット(CU)の前記PUのための第1の動き情報を決定すること、ここにおいて、前記第1の動き情報は、少なくとも1つの視差動きベクトルと、ビュー間参照ピクチャを識別する、関連付けられた参照ビューインデックスとを含む、
前記PUを2つ以上のサブPUに区分することと、
前記サブPUの各々のための第2の動き情報を決定すること、ここにおいて、前記第2の動き情報は、前記サブPUの各々に対応する前記ビュー間参照ピクチャの深度ブロックに関連付けられた、少なくとも1つの視差動きベクトルを含む、と
前記第2の動き情報に基づいて、前記ビュー間参照ピクチャから前記サブPUの各々を予測するために、動き補償を実行することと、
後続PUを予測するために使用されることになる、前記PUの前記サブPUの各々のための前記第2の動き情報をメモリに記憶することと
を行わせる、コンピュータ可読記憶媒体。