【文献】
Thomas Wiegand et al.,WD2:Working Draft 2 of High−Efficiency Video Coding,Joint Collaborative Team on Video Coding (JCT−VC) of ITU−T SG16 WP3 and ISO/IEC JTC1/SC29/WG11,4th Meeting:Daegu,KR,2011年4月15日,JCTVC−D503_r1,pp.1,86−87,91−94
(58)【調査した分野】(Int.Cl.,DB名)
前記1つ以上の動きベクトルが第1のブロックと同じ動きベクトルタイプを有し、前記動きベクトルタイプが視差動きベクトルタイプであるとき、前記動きベクトル予測子候補リストに前記1つ以上の動きベクトルを追加すること、をさらに備える、請求項3に記載の方法。
前記第1の動きベクトルに関する前記動きベクトルタイプが、時間動きベクトルを備え、前記1つ以上の動きベクトルの少なくとも1つに関する動きベクトルタイプが、視差動きベクトルを備えるとき、前記少なくとも1つの動きベクトルが前記動きベクトル予測子候補リストに含むために利用不可能であると決定すること、をさらに備える、請求項3に記載の方法。
前記1つ以上の動きベクトルが第1のブロックと同じ動きベクトルタイプを有し、前記動きベクトルタイプが視差動きベクトルタイプであるとき、前記1つ以上のプロセッサは、前記動きベクトル予測子候補リストに前記1つ以上の動きベクトルを追加するようにさらに構成される、請求項9に記載の装置。
前記第1の動きベクトルに関する前記動きベクトルタイプが、時間動きベクトルを備え、前記1つ以上の動きベクトルの少なくとも1つに関する動きベクトルタイプが、視差動きベクトルを備えるとき、前記1つ以上のプロセッサは、前記少なくとも1つの動きベクトルが前記動きベクトル予測子候補リストに含むために利用不可能であると決定するようにさらに構成される、請求項9に記載の装置。
【発明を実施するための形態】
【0017】
幾つかのビデオコード化システムによれば、データ圧縮を達成するように、ビデオシーケンスにおける時間的冗長性を低減するために、動き推定及び動き補償が使用され得る。この場合、ビデオデータの予測ブロック、例えば、コード化されている現在ビデオブロックの値を予測するために使用され得る別のビデオピクチャ又はスライスからのブロックを識別する動きベクトルが生成され得る。残差データのブロックを生成するために、予測ビデオブロックの値が現在ビデオブロックの値から減算される。動き情報(例えば、動きベクトル、動きベクトルインデックス、予測方向、又は他の情報)が、残差データとともにビデオエンコーダからビデオデコーダに通信される。デコーダは、残差データを予測ブロックのデータと組み合わせることによって、(動きベクトルに基づいて)同じ予測ブロックの位置を特定し、符号化されたビデオブロックを再構成することができる。
【0018】
幾つかの場合には、動きベクトルの予測コード化はまた、動きベクトルを通信するために必要とされるデータの量を更に低減するために適用される。動きベクトルが確立されるとき、動きベクトルはターゲットピクチャから参照ピクチャまでである。動きベクトルは、空間的又は時間的に予測され得る。空間的に予測される動きベクトルは、利用可能な空間ブロック(同じタイムインスタンスのブロック)に関連する。時間的に予測される動きベクトルは、利用可能な時間ブロック(異なるタイムインスタンスのブロック)に関連する。動きベクトル予測の場合、エンコーダは、動きベクトル自体を符号化及び通信するのではなく、周知の(又は知り得る)動きベクトルに対する動きベクトル差分(MVD)を符号化し、通信する。H.264/AVCでは、現在動きベクトルを定義するためにMVDとともに使用され得る周知の動きベクトルは、所謂動きベクトル予測子(MVP)によって定義され得る。有効なMVPであるために、動きベクトルは、MVP及びMVDによって現在コード化されている動きベクトルと同じピクチャをポイントしなければならない。
【0019】
ビデオコーダは、MVPのための候補として空間的及び時間的方向における幾つかの隣接ブロックを含む動きベクトル予測子候補リストを構築し得る。この場合、ビデオエンコーダは、符号化レート及び歪みの分析に基づいて(例えば、レート歪みコスト分析又は他のコード化効率分析を使用して)候補セットから最も正確な予測子を選択し得る。MVPをどこに配置すべきかをデコーダに通知するために、動きベクトル予測子インデックス(mvp_idx)がビデオデコーダに送信され得る。MVDも通信される。デコーダは、動きベクトルを再構成するように、MVDを(動きベクトル予測子インデックスによって定義された)MVPと組み合わせ得る。
【0020】
コード化されている現在ビデオブロックのために隣接ビデオブロックの動き情報(動きベクトル、参照ピクチャインデックス、予測方向、又は他の情報)が継承される、所謂「マージモード」も利用可能であり得る。現在ビデオブロックがそれの動き情報をそこから引き継ぐ隣接を識別するために、インデックス値が使用され得る。
【0021】
マルチビュービデオコード化(MVC)は、ビデオデータの複数のビューをカプセル化するためのビデオコード化規格である。概して、各ビューは、共通のシーンの対応するビデオデータが撮影された異なる奥行き、又は角度に対応する。MVCは、メタデータのセット、即ち、ビューについての記述データを集合的に、個別に与える。
【0022】
コード化されたビューがビデオデータの3次元(3D)表示器のために使用され得る。例えば、2つのビュー(例えば、視聴者の左眼のビュー及び右眼のビュー)は、光の異なる偏光を使用して同時又はほぼ同時に表示され得、視聴者の眼の各々がビューの各々を受け取るように、視聴者は受動的偏光眼鏡を着用し得る。代替的に、視聴者は、各眼を別個に遮断する能動的眼鏡を着用し得、表示器は、眼鏡と同期して各眼の画像間を高速に交互に入れ替わる。
【0023】
MVCでは、特定のビューの特定のピクチャはビューコンポーネントと呼ばれる。即ち、ビューのビューコンポーネントは、ビューの特定のタイムインスタンスに対応する。一般に、2つのビューの同じ又は対応する被写体は同一位置にされない。「視差ベクトル」という用語は、異なるビュー中の対応する被写体に対するあるビューのピクチャ中の被写体の変位を示すベクトルを指すために使用され得る。そのようなベクトルは「変位ベクトル」と呼ばれることもある。視差ベクトルは、ピクチャのビデオデータの画素又はブロックにも適用可能であり得る。例えば、第1のビューのピクチャ中の画素は、第1のビュー及び第2のビューがそこから撮影される異なるカメラ位置に関係する特定の視差だけ、第2のビューのピクチャ中の対応する画素に関して変位させられ得る。幾つかの例では、視差は、1つのビューから別のビューまでの動きベクトルを予測するために使用され得る。
【0024】
MVCのコンテキストでは、1つのビューのピクチャが別のビューのピクチャから予測され得る。例えば、ビデオデータのブロックが、同じタイムインスタンスであるが、異なるビューの参照ピクチャ中のビデオデータのブロックに対して予測され得る。一例では、現在コード化されているブロックを「現在ブロック」と呼ぶことがある。異なるビュー中にあるが同じタイムインスタンス中のブロックから現在ブロックを予測する動きベクトルを、「視差動きベクトル」と呼ぶ。視差動きベクトルは、一般に、2つ以上のビューが利用可能であり得るマルチビュービデオコード化のコンテキストにおいて適用可能である。本開示によれば、視差動きベクトルについての「ビュー距離」は、参照ピクチャのビューとターゲットピクチャのビューとの間の変換差を指し得る。即ち、ビュー距離は、参照ピクチャのビュー識別子とターゲットピクチャのビュー識別子との間のビュー識別子差として表され得る。
【0025】
別のタイプの動きベクトルは「時間動きベクトル」である。マルチビュービデオコード化のコンテキストにおいて、時間動きベクトルは、異なるタイムインスタンス中にあるが、同じビュー内のブロックから現在ブロックを予測する動きベクトルを指す。本開示によれば、時間動きベクトルの「時間距離」は、参照ピクチャからターゲットピクチャまでのピクチャ順序カウント(POC)距離を指し得る。
【0026】
本開示の幾つかの技法は、マルチビュー設定におけるビデオデータのブロックに関連する動き情報(例えば、動きベクトル、動きベクトルインデックス、予測方向、又は他の情報)を使用して現在コード化されているブロックの動き情報を予測することを対象とする。例えば、本開示の態様によれば、異なるビューから予測された動きベクトルは、現在ブロックの動きベクトル予測のために使用される1つ以上の動きベクトルリストのための候補として追加され得る。幾つかの例では、ビデオコーダは、現在コード化されているブロックとは異なるビュー中のブロックに関連する視差動きベクトルを使用して現在ブロックについての動きベクトルを予測し得、予測された視差動きベクトルを候補動きベクトルリストに追加し得る。他の例では、ビデオコーダは、現在コード化されているブロックとは異なるビュー中のブロックに関連する時間動きベクトルを使用して、現在ブロックについての動きベクトルを予測し得、予測された時間動きベクトルを候補動きベクトルリストに追加し得る。
【0027】
本開示の態様によれば、視差動きベクトルは、現在コード化されているブロックについての動きベクトル予測子として使用される前に基準化され得る。例えば、視差動きベクトルが、予測されている現在動きベクトルと同じビュー識別子を有する参照ピクチャを識別し、視差動きベクトルが、予測されている現在動きベクトルと同じビュー識別子をもつターゲットピクチャを有する場合、視差動きベクトルは、現在ブロックについての動きベクトルを予測するために使用される前に基準化され得ない。他の例では、視差動きベクトルは、現在ブロックについての動きベクトルを予測するために使用される前に基準化され得る。
【0028】
別の例では、視差動きベクトルは、空間的に隣接するブロックに関連する視差動きベクトルから予測され得る。この例では、視差動きベクトルの参照ピクチャのビュー識別子が、予測されるべき動きベクトル(例えば、現在予測されているブロックに関連する動きベクトル)の参照ピクチャのビュー識別子と同じである場合、基準化は必要とされ得ない。そうでない場合、視差動きベクトルは、ビデオデータを撮影するために使用されたカメラのカメラ位置に基づいて基準化され得る。即ち、例えば、予測のために使用されている視差動きベクトルは、視差動きベクトルの参照ピクチャのビュー識別子と動きベクトルのターゲットピクチャのビュー識別子との間の差に応じて基準化され得る。幾つかの例では、視差動きベクトル基準化は、ビューの変換に基づいて基準化され得る。
【0029】
別の例では、視差動きベクトルは、時間的に隣接するブロックに関連する視差動きベクトルから予測され得る。この例では、視差動きベクトルの参照ピクチャのビュー識別子が予測されるべき動きベクトルの参照ピクチャのビュー識別子と同じであり、視差動きベクトルのターゲットピクチャのビュー識別子が予測されるべき動きベクトルの参照ピクチャのビュー識別子と同じである場合、基準化は必要とされ得ない。そうでない場合、前の例に関して説明したように、視差動きベクトルは、ビュー識別子の差に基づいて基準化され得る。
【0030】
時間動きベクトル予測に関して、本開示の態様によれば、第2の異なるビュー中にターゲットピクチャを有する時間動きベクトルを予測するために、第1のビュー中にターゲットピクチャを有する時間動きベクトルが使用され得る。幾つかの例では、予測のために使用されている時間動きベクトルのターゲットピクチャ中のブロックは、異なるビュー中の現在予測されているブロックと同一位置にされ得る。他の例では、予測のために使用されている時間動きベクトルのターゲットピクチャ中のブロックは、2つのビュー間の視差により、現在ブロックからオフセットされ得る。
【0031】
幾つかの例では、異なるビューから予測されている動きベクトルが時間動きベクトルであるとき、動きベクトルはピクチャ順序カウント(POC)距離の差に基づいて基準化され得る。例えば、本開示の態様によれば、予測のために使用されている時間動きベクトルの参照ピクチャが、予測されている現在動きベクトルの参照ピクチャと同じPOC値を有し、予測のために使用されている時間動きベクトルのターゲットピクチャが、予測されている現在動きベクトルの参照ピクチャと同じPOC値を有する場合、予測のために使用されている動きベクトルは基準化され得ない。しかしながら、そうでない場合、予測のために使用されている動きベクトルは、予測のために使用されている動きベクトルの参照ピクチャと現在予測されている動きベクトルの参照ピクチャとの間のPOC値の差に基づいて基準化され得る。
【0032】
本開示の幾つかの態様によれば、異なるビューからの時間及び/又は視差動きベクトルは、MVP候補として使用され得る。例えば、時間及び/又は視差動きベクトルは、現在ブロックについてのMVDを計算するために使用され得る。本開示の他の態様によれば、異なるビューからの時間及び/又は視差動きベクトルは、マージ候補として使用され得る。例えば、時間及び/又は視差動きベクトルは、現在ブロックのために継承され得る。そのような例では、現在ビデオブロックがそれの動き情報をそこから継承する隣接を識別するために、インデックス値が使用され得る。いずれの場合も、MVP又はマージ候補として使用される異なるビューからの視差及び/又は時間動きベクトルは、MVP又はマージ候補として使用される前に基準化され得る。
【0033】
図1は、マルチビューコード化における動きベクトル予測のための技法を利用し得る例示的なビデオ符号化及び復号システム10を示すブロック図である。
図1に示すように、システム10は、宛先機器14によって後で復号されるべき符号化されたビデオデータを与える発信源12を含む。特に、発信源12は、コンピュータ可読媒体16を介して宛先機器14にビデオデータを与える。発信源12及び宛先機器14は、デスクトップコンピュータ、ノートブック(即ち、ラップトップ)コンピュータ、タブレットコンピュータ、セットトップボックス、所謂「スマート」フォン、所謂「スマート」パッドなどの電話ハンドセット、テレビジョン、カメラ、表示装置、デジタルメディアプレーヤ、ビデオゲームコンソール、ビデオストリーミング機器などを含む、広範囲にわたる機器のいずれかを備え得る。場合によっては、発信源12及び宛先機器14は、ワイヤレス通信のために装備され得る。
【0034】
宛先機器14は、コンピュータ可読媒体16を介して復号されるべき符号化されたビデオデータを受信し得る。コンピュータ可読媒体16は、発信源12から宛先機器14に符号化されたビデオデータを移動させることができる任意のタイプの媒体又は機器を備え得る。一例では、コンピュータ可読媒体16は、発信源12が、符号化されたビデオデータをリアルタイムで宛先機器14に直接送信することを可能にするための通信媒体を備え得る。
【0035】
符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先機器14に送信され得る。通信媒体は、無線周波数(RF)スペクトル又は1つ以上の物理伝送線路など、任意のワイヤレス又は有線通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットなどのグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、発信源12から宛先機器14への通信を可能にするのに有用であり得るルータ、スイッチ、基地局、又は任意の他の機器を含み得る。
【0036】
幾つかの例では、符号化されたデータは、出力インターフェース22から記憶装置に出力され得る。同様に、符号化されたデータは、入力インターフェースによって記憶装置からアクセスされ得る。記憶装置は、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性又は不揮発性メモリ、若しくは符号化されたビデオデータを記憶するための任意の他の好適なデジタル記憶媒体などの様々な分散された又はローカルにアクセスされたデータ記憶媒体のいずれかを含み得る。更なる一例では、記憶装置は、ファイルサーバ、又は発信源12によって生成された符号化されたビデオを記憶し得る別の中間記憶装置に対応し得る。
【0037】
宛先機器14は、ストリーミング又はダウンロードを介して記憶装置から記憶されたビデオデータにアクセスし得る。ファイルサーバは、符号化されたビデオデータを記憶し、その符号化されたビデオデータを宛先機器14に送信することができる任意のタイプのサーバであり得る。例示的なファイルサーバは、(例えば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)機器、又はローカルディスクドライブを含む。宛先機器14は、インターネット接続を含む、任意の標準のデータ接続を介して符号化されたビデオデータにアクセスし得る。これは、ファイルサーバに記憶された符号化されたビデオデータにアクセスするのに好適である、ワイヤレスチャネル(例えば、Wi−Fi(登録商標)接続)、有線接続(例えば、DSL、ケーブルモデムなど)、又は両方の組合せを含み得る。記憶装置からの符号化されたビデオデータの送信は、ストリーミング送信、ダウンロード送信、又はそれらの組合せであり得る。
【0038】
本開示の技法は、必ずしもワイヤレス適用例又は設定に限定されるとは限らない。本技法は、オーバージエアテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、動的適応ストリーミングオーバーHTTP(DASH)などのインターネットストリーミングビデオ送信、データ記憶媒体上に符号化されるデジタルビデオ、データ記憶媒体に記憶されたデジタルビデオの復号、又は他の適用例など、様々なマルチメディア適用例のいずれかをサポートするビデオコード化に適用され得る。幾つかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、及び/又はビデオテレフォニーなどの適用例をサポートするために、単方向又は二方向のビデオ送信をサポートするように構成され得る。
【0039】
図1の例では、発信源12は、ビデオ発信源18と、ビデオエンコーダ20と、出力インターフェース22とを含む。宛先機器14は、入力インターフェース28と、ビデオデコーダ30と、表示装置32とを含む。本開示によれば、発信源12のビデオエンコーダ20は、マルチビューコード化における動きベクトル予測のための技法を適用するように構成され得る。他の例では、発信源及び宛先機器は、他の構成要素又は構成を含み得る。例えば、発信源12は、外部カメラなど、外部ビデオ発信源18からビデオデータを受信し得る。同様に、宛先機器14は、内蔵表示装置を含むのではなく、外部表示装置とインターフェースし得る。
【0040】
図1の図示されたシステム10は一例にすぎない。マルチビューコード化における動きベクトル予測のための技法は、任意のデジタルビデオ符号化及び/又は復号機器によって実行され得る。概して、本開示の技法はビデオ符号化機器によって実行されるが、本技法は、一般に「コーデック」と呼ばれるビデオエンコーダ/デコーダによっても実行され得る。更に、本開示の技法は、ビデオプリプロセッサによっても実行され得る。発信源12及び宛先機器14は、発信源12が宛先機器14に送信するためのコード化ビデオデータを生成するような、コード化機器の例にすぎない。幾つかの例では、機器12、14の各々がビデオ符号化構成要素と復号構成要素とを含むので、機器12、14は、実質的に対称的に動作し得る。従って、システム10は、例えば、ビデオストリーミング、ビデオ再生、ビデオブロードキャスト、又はビデオテレフォニーのための、ビデオ機器12とビデオ機器14との間の一方向又は双方向のビデオ送信をサポートし得る。
【0041】
発信源12のビデオ発信源18は、ビデオカメラなどの撮像装置、予め撮影されたビデオを含んでいるビデオアーカイブ、及び/又はビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェースを含み得る。更なる代替として、ビデオ発信源18は、発信源ビデオとしてのコンピュータグラフィックスベースのデータ、又はライブビデオとアーカイブビデオとコンピュータ生成ビデオとの組合せを生成し得る。場合によっては、ビデオ発信源18がビデオカメラである場合、発信源12及び宛先機器14は、所謂カメラ付き携帯電話又はビデオ電話を形成し得る。但し、上述のように、本開示で説明する技法は、概してビデオコード化に適用可能であり得、ワイヤレス及び/又は有線アプリケーションに適用され得る。各場合において、撮影されたビデオ、以前に撮影されたビデオ、又はコンピュータ生成ビデオはビデオエンコーダ20によって符号化され得る。符号化されたビデオ情報は、次いで、出力インターフェース22によってコンピュータ可読媒体16上に出力され得る。
【0042】
コンピュータ可読媒体16は、ワイヤレスブロードキャスト又は有線ネットワーク送信などの一時媒体、又はハードディスク、フラッシュドライブ、コンパクトディスク、デジタルビデオディスク、ブルーレイディスク、又は他のコンピュータ可読媒体などの記憶メディア(即ち、非一時的記憶媒体)を含み得る。幾つかの例では、ネットワークサーバ(図示せず)は、例えば、ネットワーク送信を介して、発信源12から符号化されたビデオデータを受信し、宛先機器14に符号化されたビデオデータを与え得る。同様に、ディスクスタンピング機能など、媒体生成機能のコンピューティング機器は、発信源12から符号化されたビデオデータを受信し、符号化されたビデオデータを含んでいるディスクを生成し得る。従って、様々な例では、コンピュータ可読媒体16は、様々な形態の1つ以上のコンピュータ可読媒体を含むと理解され得る。
【0043】
宛先機器14の入力インターフェース28は、コンピュータ可読媒体16から情報を受信する。コンピュータ可読媒体16の情報は、ブロック及び他のコード化ユニット、例えば、GOPの特性及び/又は処理を記述するシンタックス要素を含む、ビデオデコーダ30によっても使用される、ビデオエンコーダ20によって定義されるシンタックス情報を含み得る。表示装置32は、復号されたビデオデータをユーザに対して表示し、陰極線管(CRT)、液晶表示器(LCD)、プラズマ表示器、有機発光ダイオード(OLED)表示器、又は別のタイプの表示装置など、様々な表示装置のいずれかを備え得る。
【0044】
ビデオエンコーダ20及びビデオデコーダ30は、現在開発中の高効率ビデオコード化(HEVC)規格など、ビデオコード化規格に従って動作し得、HEVCテストモデル(HM)に準拠し得る。代替的に、ビデオエンコーダ20及びビデオデコーダ30は、代替的にMPEG−4,Part 10,Advanced Video Coding(AVC)と呼ばれるITU−T H.264規格など、他のプロプライエタリ規格又は業界規格、又はそのような規格の拡張に従って動作し得る。但し、本開示の技法は特定のコード化規格に限定されない。ビデオコード化規格の他の例は、MPEG−2及びITU−T H.263を含む。
図1には示されていないが、幾つかの態様では、ビデオエンコーダ20及びビデオデコーダ30は、それぞれオーディオエンコーダ及びデコーダと統合され得、適切なMUX−DEMUXユニット、又は他のハードウェア及びソフトウェアを含んで、共通のデータストリーム又は別個のデータストリーム中のオーディオとビデオの両方の符号化を処理し得る。適用可能な場合、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、又はユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠し得る。
【0045】
ITU−T H.264/MPEG−4(AVC)規格は、Joint Video Team(JVT)として知られる共同パートナーシップの成果として、ISO/IECのMoving Picture Experts Group(MPEG)とともにITU−TのVideo Coding Experts Group(VCEG)によって公式化された。幾つかの態様では、本開示で説明する技法は、概してH.264規格に準拠する機器に適用され得る。H.264規格は、ITU−T Study Groupによる2005年3月付けのITU−T勧告H.264「Advanced Video Coding for generic audiovisual services」に記載されており、本明細書ではH.264規格又はH.264仕様、若しくはH.264/AVC規格又は仕様と呼ばれ得る。Joint Video Team(JVT)はH.264/MPEG−4 AVCへの拡張に取り組み続けている。
【0046】
JCT−VCは、HEVC規格の開発に取り組んでいる。HEVCの規格化の取り組みは、HEVCテストモデル(HM)と呼ばれるビデオコード化機器の発展的モデルに基づく。HMは、例えば、ITU−T H.264/AVCに従う既存の機器に対してビデオコード化機器の幾つかの追加の能力を仮定する。例えば、H.264は9つのイントラ予測符号化モードを提供するが、HMは33個ものイントラ予測符号化モードを提供し得る。
【0047】
一般に、HMの作業モデルは、ビデオピクチャ(又は「フレーム」)が、ルーマとクロマの両方のサンプルを含む一連のツリーブロック又は最大コード化単位(LCU)に分割され得ることを記載する。ビットストリーム内のシンタックスデータが、画素の数に関して最大コード化単位であるLCUのサイズを定義し得る。スライスは、幾つかの連続的なツリーブロックをコード化順に含む。ピクチャは、1つ以上のスライスに区分され得る。各ツリーブロックは、4分木に従ってコード化単位(CU)に分割され得る。概して、4分木データ構造はCUごとに1つのノードを含み、ルートノードはツリーブロックに対応する。CUが4つのサブCUに分割された場合、CUに対応するノードは4つのリーフノードを含み、リーフノードの各々はサブCUのうちの1つに対応する。
【0048】
4分木データ構造の各ノードは、対応するCUのシンタックスデータを与え得る。例えば、4分木のノードは、そのノードに対応するCUがサブCUに分割されるかどうかを示す分割フラグを含み得る。CUのシンタックス要素は、再帰的に定義され得、CUがサブCUに分割されるかどうかに依存し得る。CUが更に分割されない場合、そのCUはリーフCUと呼ばれる。本開示では、元のリーフCUの明示的分割が存在しない場合でも、リーフCUの4つのサブCUをリーフCUとも呼ぶ。例えば、16×16サイズのCUが更に分割されない場合、この16×16CUが決して分割されなくても、4つの8×8サブCUをリーフCUとも呼ぶ。
【0049】
CUは、CUがサイズ差異を有さないことを除いて、H.264規格のマクロブロックと同様の目的を有する。例えば、ツリーブロックは、4つの子ノード(サブCUとも呼ぶ)に分割され得、各子ノードは、次に、親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードと呼ばれる、最終的な、分割されていない子ノードは、コード化ノードを備え、リーフCUとも呼ばれる。コード化されたビットストリームに関連付けられたシンタックスデータは、最大CU深さと呼ばれる、ツリーブロックが分割され得る最大回数を定義し得、コード化ノードの最小サイズをも定義し得る。従って、ビットストリームは最小コード化単位(SCU)をも定義し得る。本開示では、HEVCのコンテキストにおけるCU、PU、又はTUのいずれか、又は他の規格のコンテキストにおける同様のデータ構造(例えば、H.264/AVCにおけるそれのマクロブロック及びサブブロック)を指すために、「ブロック」という用語を使用する。
【0050】
CUは、コード化ノードと、コード化ノードに関連付けられた予測単位(PU)及び変換単位(TU)とを含む。CUのサイズは、コード化ノードのサイズに対応し、正方形でなければならない。CUのサイズは、8×8画素から最大64×64以上の画素を有するツリーブロックのサイズまでに及び得る。各CUは、1つ以上のPUと、1つ以上のTUとを含み得る。CUに関連付けられたシンタックスデータは、例えば、CUを1つ以上のPUに区分することを記述し得る。区分モードは、CUが、スキップモード符号化又はダイレクトモード符号化されるか、イントラ予測モード符号化されるか、又はインター予測モード符号化されるかによって異なり得る。PUは、非正方形に区分され得る。CUに関連付けられたシンタックスデータは、例えば、4分木に従って、CUを1つ以上のTUに区分することも記述し得る。TUは、形状が正方形又は非正方形(例えば、矩形)であり得る。
【0051】
HEVC規格は、CUごとに異なり得るTUに従う変換を可能にする。TUは、一般に、区分されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、常にそうであるとは限らない。TUは、一般に、PUと同じサイズであるか又はそれよりも小さくなり得る。幾つかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT)として知られる4分木構造を使用してより小さい単位に再分割され得る。RQTのリーフノードは変換単位(TU)と呼ばれることがある。TUに関連する画素差分値は、量子化され得る変換係数を生成するために変換され得る。
【0052】
リーフCUは、1つ以上の予測単位(PU)を含み得る。概して、PUは、対応するCUの全部又は一部分に対応する空間エリアを表し、そのPUの参照サンプルを取り出すためのデータを含み得る。更に、PUは、予測に関係するデータを含む。例えば、PUがイントラモード符号化されるとき、PUについてのデータは、PUに対応するTUについてのイントラ予測モードを記述するデータを含み得る残差4分木(RQT)中に含まれ得る。別の例として、PUがインターモード符号化されるとき、PUは、PUについての1つ以上の動きベクトルを定義するデータを含み得る。PUについての動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(例えば、1/4画素精度又は1/8画素精度)、動きベクトルがポイントする参照ピクチャ、及び/又は動きベクトルの参照ピクチャリスト(例えば、リスト0、又はリスト1、又はリスト0)を記述し得る。
【0053】
1つ以上のPUを有するリーフCUは、1つ以上の変換単位(TU)をも含み得る。変換単位は、上記で説明したように、RQT(TU4分木構造とも呼ばれる)を使用して指定され得る。例えば、分割フラグは、リーフCUが4つの変換単位に分割されるかどうかを示し得る。次いで、各変換単位は更にサブTUに分割され得る。TUが更に分割されないとき、そのTUはリーフTUと呼ばれることがある。概して、イントラコード化の場合、リーフCUに属する全てのリーフTUは同じイントラ予測モードを共有する。即ち、概して、リーフCUの全てのTUの予測値を計算するために同じイントラ予測モードが適用される。イントラコード化の場合、ビデオエンコーダ20は、イントラ予測モードを使用して各リーフTUの残差値をTUに対応するCUの一部と元のブロックとの間の差として計算し得る。TUは、必ずしもPUのサイズに制限されるとは限らない。従って、TUは、PUよりも大きいことも小さいこともある。イントラコード化の場合、PUは、同じCUの対応するリーフTUと同一位置にされ得る。幾つかの例では、リーフTUの最大サイズは、対応するリーフCUのサイズに対応し得る。
【0054】
更に、リーフCUのTUも、残差4分木(RQT)と呼ばれるそれぞれの4分木データ構造に関連付けられ得る。即ち、リーフCUは、リーフCUがどのようにTUに区分されるかを示す4分木を含み得る。TU4分木のルートノードは概してリーフCUに対応し、CU4分木のルートノードは概してツリーブロック(又はLCU)に対応する。分割されないRQTのTUはリーフTUと呼ばれる。概して、本開示では、特に明記しない限り、リーフCU及びリーフTUに言及するためにそれぞれCU及びTUという用語を使用する。
【0055】
ビデオシーケンスは、一般に一連のピクチャを含む。本明細書で説明する「ピクチャ」及び「フレーム」という用語は互換的に使用され得る。即ち、ビデオデータを含んでいるピクチャはビデオフレーム又は単に「フレーム」と呼ばれることがある。ピクチャのグループ(GOP)は、一般に、一連の1つ以上のビデオフレームを備える。GOPは、GOP中に含まれる幾つかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、1つ以上のピクチャのヘッダ中、又は他の場所に含み得る。ピクチャの各スライスは、それぞれのスライスについての符号化モードを記述するスライスシンタックスデータを含み得る。ビデオエンコーダ20は、一般的に、ビデオデータを符号化するために、個々のビデオスライス内のビデオブロックに対して動作する。ビデオブロックは、CU内のコード化ノードに対応し得る。ビデオブロックは、固定サイズ又は変動サイズを有し得、指定のコード化規格に応じてサイズが異なり得る。
【0056】
例として、HMは、様々なPUサイズでの予測をサポートする。特定のCUのサイズが2N×2Nであると仮定すると、HMは、2N×2N又はN×NのPUサイズでのイントラ予測をサポートし、2N×2N、2N×N、N×2N、又はN×Nの対称的なPUサイズでのインター予測をサポートする。HMはまた、2N×nU、2N×nD、nL×2N、及びnR×2NのPUサイズでのインター予測のための非対称区分をサポートする。非対称区分では、CUの単方向は区分されないが、他の方向が25%と75%とに区分される。25%の区分に対応するCUの部分は、「n」とその後ろに付く「Up」、「Down」、「Left」、又は「Right」という表示によって示される。従って、例えば「2N×nU」は、上部に2N×0.5N PUと下部に2N×1.5N PUとで水平方向に区分される2N×2N CUを指す。
【0057】
本開示では、「N×N(NxN)」及び「N×N(N by N)」は、垂直寸法及び水平寸法に関するビデオブロックの画素寸法、例えば、16×16(16x16)画素又は16×16(16 by 16)画素を指すために互換的に使用され得る。概して、16×16ブロックは、垂直方向に16画素を有し(y=16)、水平方向に16画素を有する(x=16)。同様に、N×Nブロックは、概して、垂直方向にN画素を有し、水平方向にN画素を有し、Nは非負整数値を表す。ブロック中の画素は行と列に構成され得る。更に、ブロックは、必ずしも、水平方向において垂直方向と同じ数の画素を有する必要があるとは限らない。例えば、ブロックは、N×M画素を備え得、Mは必ずしもNに等しいとは限らない。
【0058】
CUのPUを使用したイントラ予測コード化又はインター予測コード化の後、ビデオエンコーダ20は、CUのTUのための残差データを計算し得る。PUは、(画素領域とも呼ばれる)空間領域において予測画素データを生成する方法又はモードを記述するシンタックスデータを備え得、TUは、例えば、残差ビデオデータへの離散コサイン変換(DCT)、整数変換、ウェーブレット変換、又は概念的に同様の変換などの変換の適用後に、変換領域において係数を備え得る。残差データは、符号化されていないピクチャの画素と、PUに対応する予測値との間の画素差分に対応し得る。ビデオエンコーダ20は、CUのための残差データを含むTUを形成し、次いで、TUを変換して、CUのための変換係数を生成し得る。
【0059】
変換係数を生成するための任意の変換の後、ビデオエンコーダ20は、変換係数の量子化を実行し得る。量子化は、概して、更なる圧縮を提供する、係数を表すために使用されるデータの量をできるだけ低減するために変換係数を量子化するプロセスを指す。量子化プロセスは、係数の一部又は全部に関連するビット深度を低減し得る。例えば、量子化中にnビット値がmビット値に切り捨てられ得、nはmよりも大きい。
【0060】
量子化の後に、ビデオエンコーダは、変換係数を走査して、量子化された変換係数を含む2次元行列から1次元ベクトルを生成し得る。走査は、アレイの前部により高いエネルギー(従って、より低い周波数)係数を配置し、アレイの後部により低いエネルギー(従って、より高い周波数)係数を配置するように設計され得る。幾つかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するために予め定義された走査順序を利用し得る。他の例では、ビデオエンコーダ20は適応走査を実行し得る。量子化変換係数を走査して1次元ベクトルを形成した後、ビデオエンコーダ20は、例えば、コンテキスト適応型可変長コード化(CAVLC:context adaptive variable length coding)、コンテキスト適応型バイナリ算術コード化(CABAC:context adaptive binary arithmetic coding)、シンタックスベースコンテキスト適応型2値算術コード化(SBAC:syntax-based context-adaptive binary arithmetic coding)、確率区間区分エントロピー(PIPE:Probability Interval Partitioning Entropy)コード化、又は別のエントロピー符号化方法に従って1次元ベクトルをエントロピー符号化し得る。また、ビデオエンコーダ20は、ビデオデータの復号の際に、ビデオデコーダ30によって使用するために符号化されたビデオデータに関連付けられたシンタックス要素をエントロピー符号化し得る。
【0061】
CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、例えば、シンボルの隣接値が非0か否かに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボルの可変長コードを選択し得る。VLCにおけるコードワードは、比較的短いコードが優勢シンボルに対応し、より長いコードが劣勢シンボルに対応するように構成され得る。このようにして、VLCの使用は、例えば、送信されるべき各シンボルのために等長コードワードを使用するよりも、ビット節約を達成し得る。確率決定は、シンボルに割り当てられるコンテキストに基づき得る。
【0062】
ビデオエンコーダ20は、ブロックベースのシンタックスデータ、ピクチャベースのシンタックスデータ、及びGOPベースのシンタックスデータなどのシンタックスデータを、例えば、ピクチャヘッダ、ブロックヘッダ、スライスヘッダ、又はGOPヘッダ中でビデオデコーダ30に更に送り得る。GOPシンタックスデータは、それぞれのGOP中の幾つかのピクチャを記述し得、ピクチャシンタックスデータは、対応するピクチャを符号化するために使用される符号化/予測モードを示し得る。
【0063】
ビデオエンコーダ20及びビデオデコーダ30はそれぞれ、適用可能なとき、1つ以上のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理回路、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ又はデコーダ回路のいずれか、又はそれらの任意の組合せとして実施され得る。ビデオエンコーダ20及びビデオデコーダ30の各々は1つ以上のエンコーダ又はデコーダ中に含まれ得、そのいずれも複合ビデオエンコーダ/デコーダ(コーデック)の一部として統合され得る。ビデオエンコーダ20及び/又はビデオデコーダ30を含む機器は、集積回路、マイクロプロセッサ、及び/又はセルラー電話などのワイヤレス通信機器を備え得る。
【0064】
図2は、マルチビューコード化において動きベクトルを予測するための本開示で説明する技法を実施し得る例示的なビデオエンコーダ20を示すブロック図である。ビデオエンコーダ20は、ビデオスライス内のビデオブロックのイントラコード化及びインターコード化を実行し得る。イントラコード化は、所与のピクチャ内のビデオの空間的冗長性を低減又は除去するために空間的予測に依拠する。インターコード化は時間的予測を利用して、ビデオシーケンスの隣接ピクチャ又はピクチャ内のビデオの時間的冗長性を低減又は除去する。イントラモード(Iモード)は、幾つかの空間ベースの圧縮モードのいずれかを指し得る。単方向予測(Pモード)又は双方向予測(Bモード)などのインターモードは、幾つかの時間ベースの圧縮モードのいずれかを指し得る。
【0065】
図2に示すように、ビデオエンコーダ20は、符号化すべきビデオデータを受信する。
図2の例では、ビデオエンコーダ20は、モード選択ユニット40と、加算器50と、変換ユニット52と、量子化ユニット54と、エントロピー符号化ユニット56と、参照ピクチャメモリ64とを含む。次に、モード選択ユニット40は、動き推定ユニット42と、動き補償ユニット44と、イントラ予測ユニット46と、区分ユニット48とを含む。ビデオブロック再構成のために、ビデオエンコーダ20はまた、逆量子化ユニット58と、逆変換ユニット60と、加算器62とを含む。再構成されたビデオからブロッキネスアーティファクトを除去するためにブロック境界をフィルタ処理するデブロッキングフィルタ(
図2に図示せず)も含まれ得る。所望される場合、デブロッキングフィルタは、一般に、加算器62の出力をフィルタ処理するであろう。追加のループフィルタ(ループ内又はループ後)もデブロッキングフィルタに加えて使用され得る。そのようなフィルタは、簡潔のために示されていないが、所望される場合、(ループ内フィルタとして)加算器50の出力をフィルタ処理し得る。
【0066】
符号化プロセス中に、ビデオエンコーダ20は、コード化されるべきピクチャ又はスライスを受信する。ピクチャ又はスライスは複数のビデオブロックに分割され得る。動き推定ユニット42及び動き補償ユニット44は、時間圧縮を行うために、1つ以上の参照ピクチャ中の1つ以上のブロックに対する受信したビデオブロックのインター予測コード化を実行する。イントラ予測ユニット46は、代替的に、空間圧縮を行うために、コード化されるべきブロックと同じピクチャ又はスライス中の1つ以上の隣接ブロックに対する受信したビデオブロックのイントラ予測コード化を実行し得る。ビデオエンコーダ20は、例えば、ビデオデータの各ブロックに適切なコード化モードを選択するために、複数のコード化パスを実行し得る。
【0067】
更に、区分ユニット48は、前のコード化パスにおける前の区分方式の評価に基づいてビデオデータのブロックをサブブロックに区分し得る。例えば、区分ユニット48は、初めにピクチャ又はスライスをLCUに区分し、レート歪み分析(例えば、レート歪み最適化)に基づいてLCUの各々をサブCUに区分し得る。モード選択ユニット40は、LCUをサブCUに区分することを示す4分木データ構造を更に生成し得る。4分木のリーフノードCUは、1つ以上のPU及び1つ以上のTUを含み得る。
【0068】
モード選択ユニット40は、例えば、誤差結果に基づいてコード化モード、即ち、イントラ又はインターのうちの1つを選択し、残差ブロックデータを生成するために、得られたイントラコード化ブロック又はインターコード化ブロックを加算器50に与え、参照ピクチャとして使用するための符号化ブロックを再構成するために、得られたイントラコード化ブロック又はインターコード化ブロックを加算器62に与え得る。モード選択ユニット40はまた、動きベクトル、イントラモードインジケータ、区分情報、及び他のそのようなシンタックス情報など、シンタックス要素をエントロピーコード化ユニット56に与える。
【0069】
動き推定ユニット42、動きベクトル予測ユニット43、及び動き補償ユニット44は、高度に統合され得るが、概念的な目的のために別々に示してある。動き推定ユニット42によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、現在ピクチャ(又は他のコード化単位)内のコード化されている現在ブロックに対する参照ピクチャ(又は他のコード化単位)内の予測ブロックに対する、現在ピクチャ内のビデオブロックのPUの変位を示し得る。
【0070】
予測ブロックは、絶対値差分和(SAD:sum of absolute difference)、2乗差分和(SSD:sum of square difference)、又は他の差分メトリックによって決定され得る画素差分に関して、コード化されるべきブロックにぴったり一致することがわかるブロックである。幾つかの例では、ビデオエンコーダ20は、参照ピクチャバッファと呼ばれることもある参照ピクチャメモリ64に記憶された参照ピクチャのサブ整数画素位置の値を計算し得る。例えば、ビデオエンコーダ20は、参照ピクチャの1/4画素位置、1/8画素位置、又は他の分数画素位置の値を補間し得る。従って、動き推定ユニット42は、フル画素位置と分数画素位置とに対する動き探索を実行し、分数画素精度で動きベクトルを出力し得る。
【0071】
動き推定ユニット42は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライスにおけるビデオブロックのPUについての動きベクトルを計算する。従って、概して、動きベクトルについてのデータは、参照ピクチャリストと、参照ピクチャリストへのインデックス(ref_idx)と、水平成分と、垂直成分とを含み得る。参照ピクチャは、第1の参照ピクチャリスト(リスト0)、第2の参照ピクチャリスト(リスト1)、又は結合された参照ピクチャリスト(リストc)から選択され得、それらの各々が、参照ピクチャメモリ64に記憶された1つ以上の参照ピクチャを識別する。
【0072】
動き推定ユニット42は、参照ピクチャの予測ブロックを識別する動きベクトルを生成し、エントロピー符号化ユニット56と動き補償ユニット44とに送り得る。即ち、動き推定ユニット42は、予測ブロックを含んでいる参照ピクチャリストを識別する動きベクトルデータと、予測ブロックのピクチャを識別する参照ピクチャリストへのインデックスと、識別されたピクチャ内の予測ブロックの位置を特定するための水平及び垂直コンポーネントとを生成し、送り得る。
【0073】
幾つかの例では、現在のPUについての実際の動きベクトルを送るのではなく、動きベクトル予測ユニット43は、動きベクトルを通信するために必要とされるデータの量を更に低減するために、動きベクトルを予測し得る。この場合、動きベクトル自体を符号化及び通信するのではなく、動きベクトル予測ユニット43は、周知の(又は知り得る)動きベクトルに対する動きベクトル差分(MVD)を生成し得る。現在動きベクトルを定義するためにMVDとともに使用され得る周知の動きベクトルは、所謂動きベクトル予測子(MVP)によって定義され得る。概して、有効なMVPであるために、予測のために使用されている動きベクトルは、現在コード化されている動きベクトルと同じ参照ピクチャをポイントしなければならない。
【0074】
幾つかの例では、以下の
図5に関してより詳細に説明するように、動きベクトル予測ユニット43は、MVPのための候補として空間的及び/又は時間的方向における幾つかの隣接するブロックを含む動きベクトル予測子候補リストを構築し得る。本開示の態様によれば、以下でより詳細に説明するように、動きベクトル予測子候補はまた、(例えば、マルチビューコード化において)異なるビューのピクチャにおいて識別され得る。複数の動きベクトル予測子候補が(複数の候補ブロックから)利用可能なとき、動きベクトル予測ユニット43は、所定の選択基準に従って現在ブロックについての動きベクトル予測子を決定し得る。例えば、動きベクトル予測ユニット43は、符号化レート及び歪みの分析に基づいて(例えば、レート歪みコスト分析又は他のコード化効率分析を使用して)、候補セットから最も正確な予測子を選択し得る。他の例では、動きベクトル予測ユニット43は、動きベクトル予測子候補の平均を生成し得る。動きベクトル予測子を選択する他の方法も可能である。
【0075】
動きベクトル予測子を選択するときに、動きベクトル予測ユニット43は、MVP候補ブロックを含んでいる参照ピクチャリスト中のどこにMVPを配置すべきかを(例えば、ビデオデコーダ30などの)ビデオデコーダに通知するために使用され得る動きベクトル予測子インデックス(mvp_flag)を決定し得る。動きベクトル予測ユニット43はまた、現在ブロックと選択されたMVPとの間のMVDを決定し得る。MVPインデックス及びMVDは、動きベクトルを再構成するために使用され得る。
【0076】
幾つかの例では、動きベクトル予測ユニット43は、代わりに、所謂「マージモード」を実施し得、マージモードでは、動きベクトル予測ユニット43は、予測ビデオブロックの(動きベクトル、参照ピクチャインデックス、予測方向、又は他の情報などの)動き情報を現在ビデオブロックと「マージ」し得る。従って、マージモードに関して、現在ビデオブロックは、別の周知の(又は知り得る)ビデオブロックから動き情報を引き継ぐ。動きベクトル予測ユニット43は、マージモードのための候補として空間的及び/又は時間的方向における幾つかの隣接ブロックを含むマージモード候補リストを構築し得る。動きベクトル予測ユニット43は、マージング候補ブロックを含んでいる参照ピクチャリスト中のどこにマージングビデオブロックを配置すべきかを(例えば、ビデオデコーダ30などの)ビデオデコーダに通知するために使用され得るインデックス値(例えば、merge_idx)を決定し得る。
【0077】
本開示の態様によれば、動きベクトル予測ユニット43は、マルチビューコード化において、例えば、MVDを生成又はマージするために、動きベクトル予測子を識別し得る。例えば、動きベクトル予測ユニット43は、現在ブロックについての動きベクトルを予測するために、現在ブロックとは異なるビューコンポーネント中のブロックから視差動きベクトルを識別し得る。他の例では、動きベクトル予測ユニット43は、現在ブロックについての動きベクトルを予測するために、現在ブロックとは異なるビューコンポーネント中のブロックから時間動きベクトルを識別し得る。
【0078】
視差動きベクトル予測に関して、動きベクトル予測ユニット43は、現在コード化されているビデオブロック(「現在ブロック」と呼ぶ)についての動きベクトルを予測するために、候補ブロックから視差動きベクトル候補を識別し得る。現在ブロックは、候補ブロックと同じピクチャ中にあり得(例えば、候補ブロックに空間的に隣接する)、又は候補ブロックと同じビュー内の別のピクチャ中にあり得る。幾つかの例では、動きベクトル予測ユニット43は、現在ブロックについての動きベクトルとは異なるビュー中の参照ピクチャを指す動きベクトル予測子を識別し得る。そのような場合、本開示の技法によれば、動きベクトル予測ユニット43は、2つのビュー(例えば、動きベクトル予測子によって指されたビューと現在動きベクトルによって指されたビューとの)間のカメラ位置の差に基づいて、動きベクトル予測子を基準化し得る。例えば、動きベクトル予測ユニット43は、2つのビュー間の差に従って視差動きベクトル予測子を基準化し得る。幾つかの例では、2つのビュー間の差は、ビューに関連するビュー識別子(view_id)間の差によって表され得る。
【0079】
時間動きベクトル予測に関して、動きベクトル予測ユニット43は、現在ブロックについての動きベクトルを予測するために、現在ブロックとは異なるビュー中の候補ブロックから時間動きベクトル候補を識別し得る。例えば、動きベクトル予測ユニット43は、第1のビューの別の時間位置におけるピクチャ中のブロックを指す、第1のビュー中の時間動きベクトル予測子候補を識別し得る。本開示の態様によれば、動きベクトル予測ユニット43は、識別された時間動きベクトル予測子候補を使用して第2の異なるビュー中の現在ブロックに関連する動きベクトルを予測し得る。(動きベクトル予測子候補を含む)候補ブロック及び現在ブロックは、同一位置とされ得る。しかしながら、2つのビュー間の視差により、候補ブロックの相対位置が現在ブロックからオフセットされることがある。
【0080】
本開示の態様によれば、動きベクトル予測ユニット43は、MVPインデックス(mvp_flag)及びMVDを生成し得るか、又はマージインデックス(merge_idx)を生成し得る。例えば、動きベクトル予測ユニット43は、MVP又はマージ候補のリストを生成し得る。本開示の態様によれば、MVP及び/又はマージ候補は、現在復号されているビデオブロックとは異なるビュー中にある1つ以上のビデオブロックを含む。
【0081】
動き補償ユニット44によって実行される動き補償は、動き推定ユニット42によって決定された動きベクトル及び/又は動きベクトル予測ユニット43からの情報に基づいて、予測ブロックを取り込むこと又は生成することを含み得る。この場合も、動き推定ユニット42と、動きベクトル予測ユニット43と、動き補償ユニット44とは、幾つかの例では、機能的に統合され得る。現在ビデオブロックのPUについての動きベクトルを受信すると、動き補償ユニット44は、動きベクトルが参照ピクチャリストのうちの1つにおいてポイントする予測ブロックの位置を特定し得る。
【0082】
加算器50は、以下で説明するように、コード化されている現在ビデオブロックの画素値から予測ブロックの画素値を減算し、画素差分値を形成することによって、残差ビデオブロックを形成する。概して、動き推定ユニット42はルーマ成分に対する動き推定を実行し、動き補償ユニット44はクロマ成分とルーマ成分の両方のためにルーマ成分に基づいて計算された動きベクトルを使用する。また、モード選択ユニット40は、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するための、ビデオブロック及びビデオスライスに関連付けられたシンタックス要素を生成し得る。
【0083】
イントラ予測ユニット46は、上記で説明したように、動き推定ユニット42と動き補償ユニット44とによって実行されるインター予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測ユニット46は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。幾つかの例では、イントラ予測ユニット46は、例えば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測ユニット46(又は、幾つかの例では、モード選択ユニット40)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。
【0084】
例えば、イントラ予測ユニット46は、様々なテストされたイントラ予測モードのためのレート歪み分析を使用してレート歪み値を計算し、テストされたモードの中で最良のレート歪み特性を有するイントラ予測モードを選択し得る。レート歪み分析は、概して、符号化されたブロックと、符号化されたブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(又は誤差)の量、及び符号化されたブロックを生成するために使用されたビットレート(即ち、ビット数)を決定する。イントラ予測ユニット46は、どのイントラ予測モードがブロックにとって最良のレート歪み値を呈するかを決定するために、様々な符号化されたブロックについての歪み及びレートから比を計算し得る。
【0085】
ブロックのためにイントラ予測モードを選択した後に、イントラ予測ユニット46は、ブロックのための選択されたイントラ予測モードを示す情報をエントロピーコード化ユニット56に与え得る。エントロピーコード化ユニット56は、選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、送信されたビットストリーム中に構成データを含み得、そのデータは複数のイントラ予測モードインデックステーブル及び複数の変更されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックのコンテキストを符号化する定義と、コンテキストの各々のために使用すべき最優勢イントラ予測モード、イントラ予測モードインデックステーブル、及び変更されたイントラ予測モードインデックステーブルの指示とを含み得る。
【0086】
ビデオエンコーダ20は、コード化されている元のビデオブロックから、モード選択ユニット40からの予測データを減算することによって残差ビデオブロックを形成する。加算器50は、この減算演算を実行する1つ以上の構成要素を表す。変換処理ユニット52は、離散コサイン変換(DCT)又は概念的に同様の変換など、変換を残差ブロックに適用し、残差変換係数値を備えるビデオブロックを生成する。変換処理ユニット52は、概念的にDCTと同様である他の変換を実行し得る。ウェーブレット変換、整数変換、サブバンド変換又は他のタイプの変換も使用され得る。いずれの場合も、変換処理ユニット52は、変換を残差ブロックに適用し、残差変換係数のブロックを生成する。変換は、残差情報を画素値領域から周波数領域などの変換領域に変換し得る。
【0087】
変換処理ユニット52は、量子化ユニット54に得られた変換係数を送り得る。量子化ユニット54は、ビットレートを更に低減するために変換係数を量子化する。量子化プロセスは、係数の一部又は全部に関連するビット深度を低減し得る。量子化の程度は、量子化パラメータを調整することによって変更され得る。幾つかの例では、量子化ユニット54は、次いで、量子化された変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット56が走査を実行し得る。
【0088】
量子化の後、エントロピーコード化ユニット56が量子化変換係数をエントロピーコード化する。例えば、エントロピーコード化ユニット56は、コンテキスト適応型可変長コード化(CAVLC)、コンテキスト適応型バイナリ算術コード化(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コード化(SBAC)、確率間隔区分エントロピー(PIPE)コード化、又は別のエントロピーコード化技法を実行し得る。コンテキストベースのエントロピーコード化の場合、コンテキストは、隣接するブロックに基づき得る。エントロピーコード化ユニット56によるエントロピーコード化の後、符号化されたビットストリームは、別の機器(例えば、ビデオデコーダ30)に送信されるか、あるいは後の送信又は検索のためにアーカイブされ得る。
【0089】
逆量子化ユニット58及び逆変換ユニット60は、それぞれ逆量子化及び逆変換を適用して、例えば参照ブロックとして後で使用するために、画素領域において残差ブロックを再構成する。動き補償ユニット44は、残差ブロックを参照ピクチャメモリ64のピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット44はまた、再構成された残差ブロックに1つ以上の補間フィルタを適用して、動き推定において使用するサブ整数画素値を計算し得る。加算器62は、再構成された残差ブロックを、動き補償ユニット44によって生成された動き補償予測ブロックに加算して、参照ピクチャメモリ64に記憶するための再構成されたビデオブロックを生成する。再構成されたビデオブロックは、後続のピクチャ中のブロックをインターコード化するために動き推定ユニット42及び動き補償ユニット44によって参照ブロックとして使用され得る。
【0090】
図3は、マルチビューコード化において動きベクトルを予測するための本開示で説明する技法を実施し得る例示的なビデオデコーダ30を示すブロック図である。
図3の例では、ビデオデコーダ30は、エントロピー復号ユニット80と、予測ユニット81と、逆量子化ユニット86と、逆変換ユニット88と、加算器90と、参照ピクチャメモリ92とを含む。予測ユニット81は、動き補償ユニット82と、イントラ予測ユニット84とを含む。
【0091】
復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化されたビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化されたビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット80は、量子化係数、動きベクトル、及び他のシンタックス要素を生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット80は、予測ユニット81に動きベクトルと他のシンタックス要素とを転送する。ビデオデコーダ30は、ビデオスライスレベル及び/又はビデオブロックレベルでシンタックス要素を受信し得る。
【0092】
例えば、背景として、ビデオデコーダ30は、ネットワークを介した、所謂「ネットワークアブストラクションレイヤユニット(network abstraction layer unit)」又はNALユニットへの送信のために圧縮された圧縮ビデオデータを受信し得る。各NALユニットは、NALユニットに記憶されるデータのタイプを識別するヘッダを含み得る。一般にNALユニットに記憶されるデータの2つのタイプがある。NALユニットに記憶されるデータの第1のタイプはビデオコード化レイヤ(VCL)データであり、これは圧縮ビデオデータを含む。NALユニットに記憶されるデータの第2のタイプは非VCLデータと呼ばれ、これは、多数のNALユニットに共通のヘッダデータを定義するパラメータセットなどの追加情報、及び補足エンハンスメント情報(SEI)を含む。
【0093】
例えば、パラメータセットは、(例えば、シーケンスパラメータセット(SPS)中の)シーケンスレベルヘッダ情報と、(例えば、ピクチャパラメータセット(PPS)中の)まれに変化するピクチャレベルヘッダ情報とを含み得る。パラメータセット中に含まれている、まれに変化する情報は、シーケンス又はピクチャごとに繰り返される必要がなく、それによりコード化効率が改善される。更に、パラメータセットの使用はヘッダ情報の帯域外送信を可能にし、それにより誤り耐性のための冗長送信の必要が回避される。
【0094】
ビデオスライスがイントラコード化された(I)スライスとしてコード化されるとき、予測ユニット81のイントラ予測ユニット84は、信号伝達されたイントラ予測モードと、現在ピクチャの、前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックについての予測データを生成し得る。ピクチャがインターコード化された(即ちB、P又はGPB)スライスとしてコード化されるとき、予測ユニット81の動き補償ユニット82は、エントロピー復号ユニット80から受信した動きベクトルと他のシンタックス要素とに基づいて、現在ビデオスライスのビデオブロックの予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ92に記憶された参照ピクチャに基づいて、デフォルト構成技法を使用して、参照ピクチャリスト、リスト0及びリスト1を構成し得る。
【0095】
動き補償ユニット82は、動きベクトルと他のシンタックス要素とを解析することによって現在ビデオスライスのビデオブロックについての予測情報を決定し、予測情報を使用して、復号されている現在ビデオブロックのための予測ブロックを生成する。例えば、動き補償ユニット82は、ビデオスライスのビデオブロックをコード化するために使用される予測モード(例えば、イントラ又はインター予測)、インター予測スライスタイプ(例えば、Bスライス、Pスライス、又はGPBスライス)、スライスのための参照ピクチャリストの1つ又は複数についての構成情報、スライスのインター符号化されたビデオブロックごとの動きベクトル、スライスのインターコード化されたビデオブロックごとのインター予測状況、及び現在ビデオスライスにおけるビデオブロックを復号するための他の情報を決定するために、受信されたシンタックス要素の幾つかを使用する。幾つかの例では、動き補償ユニット82は、動きベクトル予測ユニット83からいくらかの動き情報を受信し得る。
【0096】
本開示の態様によれば、動きベクトル予測ユニット83は、現在ブロックのための動き情報を取り出すべき場所を示す予測データを受信し得る。例えば、動きベクトル予測ユニット83は、MVPインデックス(mvp_flag)、MVD、マージフラグ(merge_flag)、及び/又はマージインデックス(merge_idx)などの動きベクトル予測情報を受信し、そのような情報を使用して、現在ブロックを予測するために使用される動き情報を識別し得る。即ち、ビデオエンコーダ20に関して上述したように、本開示の態様によれば、動きベクトル予測ユニット83は、MVPインデックス(mvp_flag)及びMVDを受信し得、そのような情報を使用して、現在ブロックを予測するために使用される動きベクトルを決定し得る。動きベクトル予測ユニット83は、MVP又はマージ候補のリストを生成し得る。本開示の態様によれば、MVP及び/又はマージ候補は、現在復号されているビデオブロックとは異なるビュー中にある1つ以上のビデオブロックを含み得る。
【0097】
動きベクトル予測ユニット83は、MVP又はマージインデックスを使用して、現在ブロックの動きベクトルを予測するために使用される動き情報を識別し得る。即ち、例えば、動きベクトル予測ユニット83は、MVPインデックス(mvp_flag)を使用して参照ピクチャのリストからMVPを識別し得る。動きベクトル予測ユニット83は、現在ブロックについての動きベクトルを決定するために、識別されたMVPを受信したMVDと組み合わせ得る。他の例では、動きベクトル予測ユニット83は、現在ブロックについての動き情報を決定するために、マージインデックス(merge_idx)を使用して参照ピクチャのリストからマージ候補を識別し得る。いずれの場合も、現在ブロックについての動き情報を決定した後に、動きベクトル予測ユニット83は、現在ブロックのための予測ブロックを生成し得る。
【0098】
本開示の態様によれば、動きベクトル予測ユニット83は、マルチビューコード化において、動きベクトル予測子を決定し得る。例えば、動きベクトル予測ユニット83は、現在ブロックとは異なるビューコンポーネント中のブロックから視差動きベクトルを指定する情報を受信し得、その情報は、現在ブロックについての動きベクトルを予測するために使用される。他の例では、動きベクトル予測ユニット83は、現在ブロックとは異なるビューコンポーネント中のブロックから時間動きベクトルを識別する情報を受信し得、その情報は現在ブロックについての動きベクトルを予測するために使用される。
【0099】
視差動きベクトル予測に関して、動きベクトル予測ユニット83は、候補ブロックから現在ブロックについての視差動きベクトルを予測し得る。候補ブロックは、(例えば、候補ブロックに空間的に隣接する)現在ブロックと同じピクチャ中にあり得、又は現在ブロックと同じビュー内の別のピクチャ中にあり得る。候補ブロックはまた、異なるビューのピクチャ中にあるが、現在ブロックと同じタイムインスタンス中にあり得る。
【0100】
例えば、MVP又はマージモードのいずれかに関して、予測されるべき現在ブロックの視差動きベクトル「A」のターゲットピクチャ及び参照ピクチャは知られている(以前に決定された)。説明のために、候補ブロックからの動きベクトルは「B」であると仮定する。本開示の態様によれば、動きベクトルBが視差動きベクトルでない場合、動きベクトル予測ユニット83は、候補ブロックを利用不可能である(例えば、動きベクトルAを予測するために利用可能でない)と見なし得る。即ち、動きベクトル予測ユニット83は、動きベクトル予測のために候補ブロックを使用する能力を無効化し得る。
【0101】
動きベクトルBが視差動きベクトルであり、動きベクトルBの参照ピクチャが視差動きベクトルAの参照ピクチャのビューと同じビューに属し、動きベクトルBのターゲットピクチャが視差動きベクトルAのターゲットピクチャと同じビューに属する場合、動きベクトル予測ユニット83は、ベクトルAの候補予測子として直接動きベクトルBを使用し得る。そうでない場合、動きベクトル予測ユニット83は、視差動きベクトルBが動きベクトルAの候補予測子として使用され得る前に視差動きベクトルBを基準化し得る。そのような場合、本開示の技法によれば、動きベクトル予測ユニット83は、動きベクトルAのビュー距離と動きベクトルBのビュー距離とに基づいて視差動きベクトルを基準化し得る。例えば、動きベクトル予測ユニット83は、動きベクトルBのビュー距離で除算された動きベクトルAのビュー距離に等しい基準化ファクタによって、視差動きベクトルBを基準化し得る。幾つかの例では、動きベクトル予測ユニット83は、参照ピクチャ及びターゲットピクチャのビュー識別子を使用してそのような基準化を実行し得る。
【0102】
時間動きベクトル予測に関して、動きベクトル予測ユニット83は、現在ブロックのビューとは異なるビュー中の候補ブロックから現在ブロックについての時間動きベクトルを予測し得る。例えば、動きベクトル予測ユニット83は、第1のビュー中にターゲットピクチャを有する時間動きベクトル予測子候補を識別し、第1のビューの別の時間位置における参照ピクチャ中のブロックを指し得る。本開示の態様によれば、動きベクトル予測ユニット83は、識別された時間動きベクトル予測子候補を使用して第2の異なるビュー中の現在ブロックに関連する動きベクトルを予測し得る。
【0103】
例えば、MVP又はマージモードのいずれかに関して、予測されるべき現在ブロックの時間動きベクトル「A」のターゲットピクチャ及び参照ピクチャは知られている(以前に決定された)。説明のために、候補ブロックからの動きベクトルは「B」であると仮定する。本開示の態様によれば、候補ブロックからの動きベクトルBが時間動きベクトルでない場合、動きベクトル予測ユニット83は、候補ブロックを利用不可能である(例えば、動きベクトルAを予測するために利用可能でない)と見なし得る。即ち、幾つかの例では、動きベクトル予測ユニット83は、動きベクトル予測のために候補ブロックを使用する能力を無効化し得る。
【0104】
動きベクトルBが時間動きベクトルであり、動きベクトルBの参照ピクチャのPOCが動きベクトルAの参照ピクチャと同じであり、動きベクトルBのターゲットピクチャのPOCが動きベクトルBのターゲットピクチャと同じである場合、動きベクトル予測ユニット83は、動きベクトルAの候補予測子として直接動きベクトルBを使用し得る。そうでない場合、動きベクトル予測ユニット83は、時間距離に基づいて時間動きベクトルBを基準化し得る。(動きベクトル予測子候補を含む)候補ブロックと、現在ブロックとは、異なるビュー中にコロケートされ得る。しかしながら、2つのビュー間の視差により、候補ブロックの相対位置が現在ブロックからオフセットされることがある。
【0105】
逆量子化ユニット86は、ビットストリーム中で与えられ、エントロピー復号ユニット80によって復号された、量子化変換係数を逆量子化(inverse quantize)、即ち、逆量子化(de-quantize)する。逆量子化プロセスは、各ビデオブロックについてビデオエンコーダ20によって計算される量子化パラメータを使用して量子化の程度を決定し、同様に、適用すべき逆量子化の程度を決定することを含み得る。
【0106】
逆変換ユニット88は、画素領域において残差ブロックを生成するために、逆変換、例えば逆DCT、逆整数変換、又は概念的に同様の逆変換プロセスを変換係数に適用する。本開示の態様によれば、逆変換ユニット88は、変換が残差データに適用された方法を決定し得る。即ち、例えば、逆変換ユニット88は、変換(例えば、DCT、整数変換、ウェーブレット変換、又は1つ以上の他の変換)が、受信したビデオデータのブロックに関連する残差ルーマサンプルと残差クロマサンプルとに適用された方法を表すRQTを決定し得る。
【0107】
動き補償ユニット82が、動きベクトルと他のシンタックス要素とに基づいて現在ビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換ユニット88からの残差ブロックを動き補償ユニット82によって生成された対応する予測ブロックと加算することによって、復号されたビデオブロックを形成する。加算器90は、この加算演算を実行する1つ以上の構成要素を表す。必要に応じて、ブロック歪み(blockiness artifacts)を除去するために、デブロッキングフィルタを適用して復号ブロックをフィルタ処理し得る。画素遷移を平滑化するために、又は場合によってはビデオ品質を改善するために、他のループフィルタが(コード化ループ中又はコード化ループ後のいずれかで)使用され得る。次いで、所与のピクチャ中の復号されたビデオブロックは、その後の動き補償に使用される参照ピクチャを記憶する参照ピクチャメモリ92に記憶される。参照ピクチャメモリ92はまた、
図1の表示装置32などの表示装置上での後の表示のための、復号されたビデオを記憶する。
【0108】
図4は、例示的なMVC予測パターンを示す概念図である。
図4の例では、8つのビューが示され、各ビューについて12個の時間位置が示されている。概して、
図4中の各行はビューに対応し、各列は時間位置を示す。ビューの各々は、他のビューに対する相対的なカメラ位置を示すために使用され得るビュー識別子(「view_id」)を使用して識別され得る。
図4に示す例では、ビューIDは「S0」〜「S7」として示されているが、数字のビューIDも使用され得る。更に、時間位置の各々は、ピクチャの表示順序を示すピクチャ順序カウント(POC)値を使用して識別され得る。
図4に示す例では、POC値は「T0」〜「T11」として示されている。
【0109】
MVCは、H.264/AVCデコーダによって復号可能である所謂ベースビューを有し、ステレオビューペアがMVCによってサポートされ得るが、MVCは、3Dビデオ入力として3つ以上のビューをサポートし得る。従って、MVCデコーダを有するクライアントのレンダラ(renderer)は、複数のビューを用いて3Dビデオコンテンツを予想し得る。
【0110】
図4中のピクチャは、対応するピクチャがイントラコード化される(即ち、Iフレームである)のか、又は一方向に(即ち、Pフレームとして)インターコード化されるのか、複数の方向に(即ち、Bフレームとして)インターコード化されるのかを指定する、文字を含む影付きブロックを使用して示される。概して、予測は矢印によって示され、ここで矢印の終点のピクチャは、予測参照のために矢印の始点の被写体を使用する。例えば、時間位置T0におけるビューS2のPフレームは、時間位置T0におけるビューS0のIフレームから予測される。
【0111】
シングルビュービデオ符号化の場合と同様に、マルチビュービデオシーケンスのピクチャは、異なる時間位置におけるピクチャに関して予測符号化され得る。例えば、時間位置T1におけるビューS0のbフレームは、時間位置T0におけるビューS0のIフレームからそのbフレームに向けられた矢印を有し、その矢印は、bフレームがIフレームから予測されることを示す。しかしながら、更に、マルチビュービデオ符号化のコンテキストにおいて、ピクチャはビュー間予測され得る。即ち、ビューコンポーネントは、参照のために他のビュー中のビューコンポーネントを使用することができる。MVCでは、例えば、別のビュー中のビューコンポーネントがインター予測参照であるかのように、ビュー間予測が実現される。潜在的なビュー間参照は、シーケンスパラメータセット(SPS)MVC拡張において信号伝達され得、インター予測又はビュー間予測参照のフレキシブルな順序付けを可能にする参照ピクチャリスト構成プロセスによって変更され得る。
【0112】
図4は、ビュー間予測の様々な例を与える。
図4の例では、ビューS1のピクチャは、ビューS1の異なる時間位置におけるピクチャから予測されるものとして、及び同じ時間位置におけるビューS0及びS2のピクチャのうちのピクチャからビュー間予測されるものとして示されている。例えば、時間位置T1におけるビューS1のbフレームは、時間位置T0及びT2におけるビューS1のBフレームの各々、並びに時間位置T1におけるビューS0及びS2のbフレームから予測される。
【0113】
図4の例では、大文字の「B」及び小文字の「b」は、異なる符号化方法ではなく、ピクチャ間の異なる階層関係を示すものとする。概して、大文字の「B」フレームは、小文字の「b」フレームよりも予測階層が比較的高い。
図4はまた、異なるレベルの陰影を使用して予測階層の変形体を示し、より大きい量の陰影の(即ち、比較的より暗い)ピクチャは、より少ない陰影を有する(即ち、比較的より明るい)それらのピクチャよりも予測階層が高い。例えば、
図4中の全てのIフレームは、完全陰影を用いて示されるが、Pフレームは、いくぶんより明るい陰影を有し、Bフレーム(及び小文字のbフレーム)は、互いに様々なレベルの陰影を有するが、Pフレーム及びIフレームの陰影よりも常に明るい。
【0114】
概して、階層が比較的高いそれらのピクチャが、階層が比較的低いピクチャの復号中に参照ピクチャとして使用され得るように、予測階層が比較的高いピクチャは、階層が比較的低いピクチャを復号する前に復号されるべきであるという点で、予測階層はビュー順序インデックスに関係する。ビュー順序インデックスは、アクセスユニット中のビューコンポーネントの復号順序を示すインデックスである。ビュー順序インデックスは、SPSなど、パラメータセット中で暗示され得ない。
【0115】
このようにして、参照ピクチャとして使用されるピクチャは、その参照ピクチャを参照して符号化されたピクチャを復号する前に復号され得る。ビュー順序インデックスは、アクセスユニット中のビューコンポーネントの復号順序を示すインデックスである。各ビュー順序インデックスiについて、対応するview_idが信号伝達される。ビューコンポーネントの復号は、ビュー順序インデックスの昇順に従う。全てのビューが提示された場合、ビュー順序インデックスのセットは、0からビューの全数よりも1つ少ない数までの連続的な順序付きセットを備える。
【0116】
MVCでは、全ビットストリームのサブセットが抽出されて、依然としてMVCに準拠するサブビットストリームが形成され得る。例えば、サーバによって与えられるサービス、1つ以上のクライアントのデコーダの容量、サポート、及び能力、及び/又は1つ以上のクライアントの選好に基づいて、特定の適用例が必要とし得る、多くの可能なサブビットストリームがある。例えば、あるクライアントが3つのビューのみを必要とし得、2つのシナリオがあり得る。一例では、あるクライアントは、滑らかな視聴体験(viewing experience)を必要とし、view_id値S0、S1、及びS2のビューを選好し得、別の他のクライアントは、ビュースケーラビリティを必要とし、view_id値S0、S2、及びS4のビューを選好し得る。これらのサブビットストリームの両方が、独立したMVCビットストリームとして復号され、同時にサポートされ得ることに留意されたい。
【0117】
図5は、(マージモードを含む)動きベクトル予測を実行するときに潜在的な動きベクトル予測子候補を示すブロック図である。即ち、現在コード化されているブロック100について、隣接ブロックA
0、A
1、B
0、B
1、及びB
2からの動き情報(例えば、水平成分と垂直成分とを備える動きベクトル、動きベクトルインデックス、予測方向、又は他の情報)が、ブロック100についての動き情報を予測するために使用され得る。更に、コロケートブロックCOLに関連する動き情報も、ブロック100についての動き情報を予測するために使用され得る。隣接ブロックA
0、A
1、B
0、B
1、B
2及び同一位置のブロックCOLを、動きベクトル予測のコンテキストにおいて、概して、以下動きベクトル予測子候補と呼ぶ。
【0118】
幾つかの例では、
図5に示す動きベクトル予測子候補は、動きベクトル予測を実行する(例えば、MVDを生成するかマージモードを実行する)ときに識別され得る。他の例では、マージモード及び動きベクトル予測を実行するときに、異なる候補が識別され得る。即ち、ビデオコーダは、動きベクトル予測を実行するためのものとは異なる、マージモードを実行するための動きベクトル予測子候補のセットを識別し得る。
【0119】
マージモードを実行するために、一例では、ビデオエンコーダ(ビデオエンコーダ20など)は、初めに、動きベクトル予測子候補からのどの動きベクトルがブロック100とマージするために利用可能であるかを決定し得る。即ち、幾つかの事例では、例えば、動きベクトル予測子候補がイントラコード化されているか、コード化されていないか、又は存在しない(例えば、動きベクトル予測子候補のうちの1つ以上が別のピクチャ又はスライス中にある)ために、動きベクトル予測子候補のうちの1つ以上からの動き情報が利用不可能であり得る。ビデオエンコーダ20は、利用可能な動きベクトル予測子候補ブロックの各々を含む動きベクトル予測子候補リストを構成し得る。
【0120】
候補リストを構成した後に、ビデオエンコーダ20は、現在ブロック100についての動きベクトルとして使用されるべき動きベクトルを候補リストから選択し得る。幾つかの例では、ビデオエンコーダ20は、ブロック100についての動きベクトルに最もよく一致する動きベクトルを候補リストから選択し得る。即ち、ビデオエンコーダ20は、レート歪み分析に従って動きベクトルを候補リストから選択し得る。
【0121】
ビデオエンコーダ20は、ブロック100がマージモードを使用して符号化されるという指示を与え得る。例えば、ビデオエンコーダ20は、ブロック100についての動きベクトルがマージモードを使用して予測されることを示すフラグ又は他のシンタックス要素を設定し得る。一例では、ビデオエンコーダ20は、merge_flag[x0][y0]を設定することによって、ブロック100についてのインター予測パラメータが動きベクトル予測子候補から推測されることを示し得る。この例では、アレイインデックスx0、y0は、ピクチャ(又はスライス)の左上ルーマサンプルに対する予測ブロックの左上ルーマサンプルの位置(x0,y0)を指定し得る。
【0122】
更に、幾つかの例では、ビデオエンコーダ20は、ブロック100がそれの動きベクトルをそこから継承するマージング候補を識別するインデックスを与え得る。例えば、merge_idx[x0][y0]は、マージング候補リスト中のピクチャを識別するマージング候補インデックスを指定し得、x0、y0は、ピクチャ(又はスライス)の左上ルーマサンプルに対する予測ブロックの左上ルーマサンプルの位置(x0,y0)を指定する。
【0123】
(ビデオデコーダ30などの)ビデオデコーダは、ブロック100を復号するときに適切なマージ候補を識別するために同様のステップを実行し得る。例えば、ビデオデコーダ30は、ブロック100がマージモードを使用して予測されるという指示を受信し得る。一例では、ビデオデコーダ30は、merge_flag[x0][y0]を受信し得、(x0,y0)は、ピクチャ(又はスライス)の左上ルーマサンプルに対する予測ブロックの左上ルーマサンプルの位置を指定する。
【0124】
更に、ビデオデコーダ30はマージ候補リストを構成し得る。例えば、ビデオデコーダ30は、動きベクトル予測のために利用可能なビデオブロックを示す1つ以上のシンタックス要素(例えば、フラグ)を受信し得る。ビデオデコーダ30は、受信したフラグに基づいてマージ候補リストを構成し得る。幾つかの例によれば、ビデオデコーダ30は、以下のシーケンスに従ってマージ候補リスト(例えば、mergeCandList)を構成し得る。
【0125】
1 availableFlagA
1が1に等しい場合、A
1
2 availableFlagB
1が1に等しい場合、B
1
3 availableFlagB
0が1に等しい場合、B
0
4 availableFlagA
0が1に等しい場合、A
0
5 availableFlagB
2が1に等しい場合、B
2
6 availableFlagColが1に等しい場合、Col
幾つかのマージング候補が同じ動きベクトルと同じ参照インデックスとを有する場合、マージング候補はリストから削除され得る。
【0126】
ビデオデコーダ30は、受信したインデックスに従って適切なマージ候補を識別し得る。例えば、ビデオデコーダ30は、ブロック100がそれの動きベクトルをそこから引き継ぐマージング候補を識別するインデックスを受信し得る。一例では、merge_idx[x0][y0]は、マージング候補リスト中のピクチャを識別するマージング候補インデックスを指定し得、x0、y0は、ピクチャ(又はスライス)の左上ルーマサンプルに対する予測ブロックの左上ルーマサンプルの位置(x0,y0)を指定する。
【0127】
幾つかの例では、ビデオデコーダ30は、ブロック100に候補ブロックの動き情報をマージする前に、動きベクトル予測子を基準化し得る。例えば、時間動きベクトル予測子に関して、動きベクトル予測子が、ブロック100によって参照された予測ブロックとは異なる時間位置にある参照ピクチャ中の予測ブロックを指す場合(例えば、ブロック100についての実際の動きベクトル)、ビデオデコーダ30は、動きベクトル予測子を基準化し得る。例えば、ビデオデコーダ30は、動きベクトル予測子がブロック100のための参照ピクチャと同じ参照ピクチャを指すように動きベクトル予測子を基準化し得る。幾つかの例では、ビデオデコーダ30は、ピクチャ順序カウント(POC)値における差に従って動きベクトル予測子を基準化し得る。即ち、ビデオデコーダ30は、候補ブロックと動きベクトル予測子によって指される予測ブロックとの間のPOC距離と、ブロック100と(例えば、ブロック100についての実際の動きベクトルによって指される)現在参照ピクチャとの間のPOC距離との差に基づいて、動きベクトル予測子を基準化し得る。適切な動きベクトル予測子を選択した後に、ビデオデコーダ30は、動きベクトル予測子に関連する動き情報をブロック100についての動き情報にマージし得る。
【0128】
ビデオデータの現在ブロックについての動きベクトル予測を実行するために、同様のプロセスがビデオエンコーダ20及びビデオデコーダ30によって実施され得る。例えば、ビデオエンコーダ20は、初めに、動きベクトル予測子候補からのどの動きベクトルがMVPとして使用されるために利用可能であるかを決定し得る。例えば、動きベクトル予測子候補がイントラコード化されているか、まだコード化されていないか、存在しないために、動きベクトル予測子候補のうちの1つ以上からの動き情報が利用不可能であり得る。
【0129】
動きベクトル予測子候補のうちのどれが利用可能であるかを決定するために、ビデオエンコーダ20は、次に所定の優先度ベースの方式に従って動きベクトル予測子候補の各々を分析し得る。例えば、各動きベクトル予測子候補について、ビデオエンコーダ20は、動きベクトル予測子がブロック100についての実際の動きベクトルと同じ参照ピクチャを指すかどうかを決定し得る。動きベクトル予測子が同じ参照ピクチャを指す場合、ビデオエンコーダ20は、MVP候補リストに動きベクトル予測子候補を追加し得る。動きベクトル予測子が同じ参照ピクチャを指さない場合、動きベクトル予測子は、MVP候補リストに追加される前に基準化され得る(例えば、上記で説明したように、POC距離に基づいて基準化され得る)。
【0130】
同一位置のブロックCOLに関して、同一位置のブロックが2つ以上の動きベクトル予測子を含む(例えば、COLがBフレームとして予測される)場合、ビデオエンコーダ20は、(ブロック100のための)現在リストと現在参照ピクチャとに従って時間動きベクトル予測子のうちの1つを選択し得る。次いで、ビデオエンコーダ20は、選択された時間動きベクトル予測子を動きベクトル予測子候補リストに追加し得る。
【0131】
ビデオエンコーダ20は、enable_temporal_mvp_flagを設定することによって、1つ以上の動きベクトル予測子が利用可能であることを信号伝達し得る。候補リストを構築した後に、ビデオエンコーダ20は、ブロック100についての動きベクトル予測子として使用されるべき動きベクトルを候補から選択し得る。幾つかの例では、ビデオエンコーダ20は、レート歪み分析に従って候補動きベクトルを選択し得る。
【0132】
ビデオエンコーダ20は、候補リスト中のMVPを識別するMVPインデックス(mvp_flag)を使用して、選択された動きベクトル予測子を信号伝達し得る。例えば、ビデオエンコーダ20は、リスト0の動きベクトル予測子インデックスを指定するためにmvp_l0_flag[x0][y0]を設定し得、x0、y0は、ピクチャの左上ルーマサンプルに対する候補ブロックの左上ルーマサンプルの位置(x0,y0)を指定する。別の例では、ビデオエンコーダ20は、リスト1の動きベクトル予測子インデックスを指定するためにmvp_l1_flag[x0][y0]を設定し得、x0、y0は、ピクチャの左上ルーマサンプルに対する候補ブロックの左上ルーマサンプルの位置(x0,y0)を指定する。更に別の例では、ビデオエンコーダ20は、リストcの動きベクトル予測子インデックスを指定するためにmvp_lc_flag[x0][y0]を設定し得、x0、y0は、ピクチャの左上ルーマサンプルに対する候補ブロックの左上ルーマサンプルの位置(x0,y0)を指定する。
【0133】
ビデオエンコーダ20はまた、動きベクトル差分値(MVD)を生成し得る。MVDは、選択された動きベクトル予測子とブロック100についての実際の動きベクトルとの間の差を構成し得る。ビデオエンコーダ20は、MVPインデックスを用いてMVDを信号伝達し得る。
【0134】
ビデオデコーダ30は、動きベクトル予測子を使用して、現在ブロックについての動きベクトルを決定するために同様の動作を実行し得る。例えば、ビデオデコーダ30は、動きベクトル予測が1つ以上のピクチャのために使用可能であることを示す指示をパラメータセット(例えば、ピクチャパラメータセット(PPS))中で受信し得る。即ち、一例では、ビデオデコーダ30は、PPS中でenable_temporal_mvp_flagを受信し得る。特定のピクチャが、0に等しいenable_temporal_mvp_flagを有するPPSを参照するとき、参照ピクチャメモリ中の参照ピクチャは「時間動きベクトル予測のために未使用」としてマークされ得る。
【0135】
動きベクトル予測が実施される場合、ブロック100を受信すると、ビデオデコーダ30はMVP候補リストを構成し得る。ビデオデコーダ30は、ビデオエンコーダ20に関して上述した方式と同じ方式を使用してMVP候補リストを構成し得る。幾つかの事例では、ビデオデコーダ30は、ビデオエンコーダ20に関して上述したものと同様の動きベクトル基準化を実行し得る。例えば、動きベクトル予測子がブロック100と同じ参照ピクチャを指さない場合、動きベクトル予測子は、MVP候補リストに追加される前に基準化され得る(例えば、上記で説明したように、POC距離に基づいて基準化され得る)。ビデオデコーダ30は、候補リスト中のMVPを識別する受信したMVPインデックス(mvp_flag)を使用して、ブロック100のための適切な動きベクトル予測子を識別し得る。次いで、ビデオデコーダ30は、MVPと受信したMVDとを使用してブロック100についての動きベクトルを生成し得る。
【0136】
図5に、概して、シングルビューにおけるマージモードと動きベクトル予測とを示す。
図5に示す動きベクトル予測子候補ブロックは単に例として与えたものにすぎず、より多い、より少ない、又は異なるブロックが動き情報を予測するために使用され得ることを理解されたい。本開示の態様によれば、以下で説明するように、マージモード及び動きベクトル予測はまた、(MVCにおいてなど)2つ以上のビューがコード化されるときに適用され得る。そのような場合、動きベクトル予測子及び予測ブロックは、ブロック100とは異なるビュー中にあり得る。
【0137】
図6は、マルチビューコード化において動きベクトル予測子を生成及び基準化することを示す概念図である。例えば、本開示の態様によれば、ビデオコーダ(ビデオエンコーダ20又はビデオデコーダ30など)は、現在ブロック126についての動きベクトル予測子124(mv’)を生成するために、視差動きベクトル予測子候補ブロック122(「候補ブロック」)からの視差動きベクトル120(mv)を基準化し得る。
図6についてビデオデコーダ30に関して説明するが、本開示の技法は、他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコード化ユニットなどを含む様々な他のビデオコーダによって行われ得ることを理解されたい。
【0138】
図6の例では、候補ブロック122は、ビューコンポーネント2(view_id 2)中で現在ブロック126に空間的に隣接する。候補ブロック122は、インター予測され、ビューコンポーネント0(view_id 0)中の予測ブロックを参照する(又は「指し示す」)動きベクトル120を含む。例えば、動きベクトル120は、ビュー2(view_id 2)中のターゲットピクチャと、ビュー0(view_id 0)中の参照ピクチャとを有する。現在ブロック126も、インター予測され、ビューコンポーネント1(view_id 1)中の予測ブロックを指す実際の動きベクトル(図示せず)を含む。即ち、例えば、現在ブロック126についての実際の動きベクトルは、ビュー2(view_id 2)中のターゲットピクチャと、ビュー1(view_id 1)中の参照ブロックとを有する。
【0139】
本開示の態様によれば、ビデオデコーダ30は、動きベクトル120の基準化されたバージョンを使用して現在ブロック126についての動きベクトル予測子124を生成し得る。例えば、ビデオデコーダ30は、動きベクトル120と現在ブロック126についての実際の動きベクトルとの間のビュー距離の差に基づいて動きベクトル120を基準化し得る。即ち、ビデオデコーダ30は、候補ブロック122のための(参照ピクチャ中の)予測ブロックと、現在ブロック126のための(参照ピクチャ中の)予測ブロックとを撮影するために使用されたカメラのカメラ位置の差に基づいて動きベクトル120を基準化し得る。従って、ビデオデコーダ30は、候補ブロック122についての動きベクトル120によって指し示されたビューコンポーネントと、現在ブロック126についての実際の動きベクトルによって指し示されたビューコンポーネントとの差に応じて、視差動きベクトル120(例えば、予測のために使用されている動きベクトル)を基準化し得る。
【0140】
一例では、ビデオデコーダ30は、以下に示す式(1)に従って、現在ブロックについての基準化された動きベクトル予測子を生成し得る。
【数1】
【0141】
式中、ViewDistance(mv)は、動きベクトル120の参照ピクチャのビューID(例えば、ViewId(RefPic(mv))と、動きベクトル120のターゲットピクチャのビューID(例えば、ViewId(TargetPic(mv))との間の差に等しく、ViewDistance(mv’)は、動きベクトル予測子124の参照ピクチャのビューID(例えば、ViewId(RefPic(mv’))と、動きベクトル予測子124のターゲットピクチャのビューID(例えば、ViewId(TargetPic(mv’))との間の差に等しい。従って、この例では、動きベクトル予測子124の参照ピクチャ、RefPic(mv’)は新しいターゲットビューに属し、動きベクトル予測子124のターゲットピクチャ、TargetPic(mv’)は現在ビューに属する。同様に、動きベクトル120の参照ピクチャ、RefPic(mv)は候補動きベクトルが指すビューに属し、動きベクトル120のターゲットピクチャ、TargetPic(mv)は現在ビューに属する。従って、ビデオデコーダ30は、以下の式(2)に従って、基準化された動きベクトル予測子を生成し得る。
【数2】
【0142】
式中、mv’は現在ブロックについての基準化された動きベクトル予測子を表し、mvは候補ブロックについての動きベクトルを表し、ViewID(NewTarget)は現在ブロックについての実際の動きベクトルによって指されたビューコンポーネントであり、ViewID(Current)は現在ブロックのビューコンポーネントであり、ViewID(Candidate)は候補ブロックのビューコンポーネントである。式(2)を
図6の例に適用すると、mv’は現在ブロック126についての基準化された動きベクトル予測子を表し、mvは動きベクトル120を表し、ViewID(NewTarget)は動きベクトル124によって指されたビューコンポーネントであり、ViewID(Current)は現在ブロック126のビューコンポーネントであり、ViewID(Candidate)は候補ブロック122のビューコンポーネントである。従って、
図4に示す例では、動きベクトル予測子124は、1/2倍に基準化された動きベクトル120である(例えば、
【数3】
【0143】
)。即ち、ビデオデコーダ30は、現在ブロック126についての動きベクトル予測子124を生成するために、動きベクトル120の水平変位成分と垂直変位成分の両方を1/2倍だけ基準化し得る。
【0144】
図6に関して説明する動きベクトル基準化は、マージすることと動きベクトル予測との両方のために実行され得る。即ち、例えば、ビデオデコーダ30は、現在ブロック126についての動き情報に動きベクトル120をマージする前に動きベクトル120を基準化し得る。別の例では、ビデオデコーダ30は、動きベクトル予測子124と現在ブロック126についての実際の動きベクトルとの間の差に応じて、動きベクトル差分値(MVD)を計算する前に動きベクトル120を基準化し得る。
【0145】
図6の例に示すように、候補ブロック122と現在ブロック126とは同じビューコンポーネント中にあり得る。しかしながら、他の例では、
図7及び
図8に関してより詳細に説明するように、候補ブロックは、現在ブロックとは異なるビューコンポーネント中にあり得る。
【0146】
図7は、動きベクトル予測子を生成及び基準化することを示す別の概念図である。例えば、本開示の態様によれば、ビデオコーダ(ビデオエンコーダ20又はビデオデコーダ30など)は、現在ブロック136(x,y)についての動きベクトル予測子134(mv’)を生成するために、視差動きベクトル予測子候補ブロック132(x’,y’)からの視差動きベクトル130(mv)を基準化し得、候補ブロック132は現在ブロック136とは異なるビューコンポーネントに属する。従って、
図7に関して図示及び説明するプロセスは、概して、ビュー間視差動きベクトル予測と呼ばれることがある。
図7についてビデオデコーダ30に関して説明するが、本開示の技法は、他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコード化ユニットなどを含む様々な他のビデオコーダによって行われ得ることを理解されたい。
【0147】
図7に示す例では、候補ブロック132はビューコンポーネント1(view_id 1)中にある。候補ブロック132は、インター予測され、ビューコンポーネント0(view_id 0)中の予測ブロックを指す動きベクトル130(mv)を含む。例えば、動きベクトル130は、ビュー1(view_id 1)中のターゲットピクチャと、ビュー0(view_id 0)中の参照ピクチャとを有する。現在ブロック136は、候補ブロック132とコロケートされ、ビューコンポーネント2(view_id 2)中にある。以下でより詳細に説明するように、幾つかの例では、現在ブロック136は、第1の参照ビュー(view_id 1)中のブロックを識別する実際の動きベクトル(図示せず)を含み得る。即ち、例えば、現在ブロック136についての実際の動きベクトルは、ビュー2(view_id 2)中のターゲットピクチャを有し、ビュー1(view_id 1)中の参照ブロックを有し得る。他の例では、現在ブロックは、第2の参照ビュー(view_id 0)中のブロックを識別する実際の動きベクトルを含み得る。即ち、例えば、現在ブロック136についての実際の動きベクトルは、ビュー2(view_id 2)中のターゲットピクチャを有し、ビュー0(view_id 0)中の参照ブロックを有し得る。従って、動きベクトル予測子134(mv’)は、第1の参照ビュー(view_id 1)中のブロックを指し得る。別の例では、第2の動きベクトル予測子138(mv’’)は、第2の参照ビュー(view_id 0)中のブロックを指し得る。
【0148】
幾つかの例では、第2の動きベクトル予測子138が動きベクトル予測のために利用可能でないことがある。例えば、第2の動きベクトル予測子138は、第2の参照ビュー中の予測ブロックが直接ビュー間予測のために利用可能である場合のみ生成され得る。第2の参照ビュー中の予測ブロックの利用可能性は、例えば、(シーケンスパラメータセット(SPS)又はピクチャパラメータセット(PPS)などの)パラメータセット又は現在ブロック136に関連するスライスヘッダ中で指定され得る。
【0149】
本開示の態様によれば、ビデオデコーダは、マージモードを使用して、又は動きベクトル予測を使用して、ビュー間視差動きベクトル予測を実行し得る。マージモードに関して、ビデオデコーダ30は、初めに、現在ブロック136についての「ターゲットビュー」を選択し得る。概して、ターゲットビューは、現在ブロック136のための予測ブロックを含む。幾つかの例では、ターゲットビューは、(view_id 1として
図7に示す)第1の参照ビューであり得る。他の例では、ターゲットビューは、(view_id 0として
図7に示す)第2の参照ビューであり得る。しかしながら、上述のように、幾つかの例では、ビュー間予測のために使用されるために第2の参照ビュー中の予測ブロックが利用可能である場合、第2の参照ビューはターゲットビューとしてのみ使用され得る。
【0150】
幾つかの例では、ビデオデコーダ30は、第1の参照ビューをターゲットビューとして選択し得る。他の例では、ビデオデコーダ30は、利用可能なとき、第2の参照ビューをターゲットビューとして選択し得る。ターゲットビューの選択は、例えば、予測ブロック及び/又は所定の選択アルゴリズムの利用可能性に基づいて決定され得る。現在ブロック136の参照インデックス(ref_idx)は、現在ブロック136の参照ピクチャリストに追加されるターゲットビューの予測ブロックを含んでいるピクチャのインデックスに対応する。
【0151】
ターゲットビューを選択した後に、ビデオデコーダ30は、候補ブロック132の位置を特定し得る。一例では、説明のために、現在ブロック136の左上ルーマサンプルが座標(x,y)のピクチャ(又はスライス)中にあると仮定する。ビデオデコーダ30は、候補ブロック132についてのビューコンポーネント1中の同一位置の座標を決定し得る。更に、幾つかの例では、ビデオデコーダ30は、現在ブロック136のビューコンポーネント(ビューコンポーネント2)と候補ブロック132のビューコンポーネント(ビューコンポーネント1)との間の視差に基づいて、座標を調整し得る。従って、ビデオデコーダ30は、候補ブロック132の座標を(x’,y’)として決定し得、(x’,y’)=(x,y)+視差である。幾つかの例では、視差は、SPS、PPS、スライスヘッダ、CUシンタックス、及び/又はPUシンタックス中に含まれ及び/又は計算され得る。
【0152】
候補ブロック132の位置を特定した後に、ビデオデコーダ30は、動きベクトル130と現在ブロック136についての実際の動きベクトルとの間のビュー距離の差に基づいて、候補ブロック132についての動きベクトル130を基準化し得る。即ち、ビデオデコーダ30は、候補ブロック132のための予測ブロックと、現在ブロック136のための予測ブロック(例えば、ターゲットビュー中の予測ブロック)とを撮影するために使用されたカメラのカメラ位置の差に基づいて、動きベクトル130を基準化し得る。即ち、ビデオデコーダ30は、候補ブロック132についての動きベクトル130によって指されたビューコンポーネントと、ターゲットビューのビューコンポーネントとの間の差に応じて、視差動きベクトル130(例えば、予測のために使用されている動きベクトル)を基準化し得る。
【0153】
一例では、ビデオデコーダ30は、以下に示す式(3)に従って、現在ブロックについての基準化された動きベクトル予測子を生成し得る。
【数4】
【0154】
式中、mv’は現在ブロックについての基準化された動きベクトル予測子を表し、mvは候補ブロックについての動きベクトルを表し、ViewID(Target)は選択されたターゲットビューのビューコンポーネントであり、ViewID(Current)は現在ブロックのビューコンポーネントであり、ViewID(SecondReference)は(利用可能な場合)第2の参照ビューのビューコンポーネントであり、ViewID(Reference)は第1の参照ビューのビューコンポーネントである。幾つかの例では、ViewID(Target)−ViewID(Current)は、動きベクトル予測子134のビュー距離と呼ばれることがあり、ViewID(SecondReference)−ViewID(Reference)は、動きベクトル130のビュー距離と呼ばれることがある。即ち、動きベクトル予測子134のビュー距離は、動きベクトル予測子134のターゲットピクチャ(view_id 1)と参照ピクチャ(view_id 2)との間の差であり、動きベクトル130のビュー距離は、動きベクトル130のターゲットピクチャ(view_id 0)と参照ピクチャ(view_id 1)との間の差である。式(3)を
図7の例に適用すると、mv’は、どのビューコンポーネントがターゲットビューのために選択されるかに応じて、基準化された動きベクトル予測子134又は基準化された動きベクトル予測子138のいずれかを表す。例えば、第1の参照ビュー(view_id 1)がターゲットビューとして選択される場合、mv’は基準化された動きベクトル予測子134を表し、mvは動きベクトル130を表し、ViewID(Target)は動きベクトル予測子134によって指されたビューコンポーネントであり、ViewID(Current)は現在ブロック136のビューコンポーネントであり、ViewID(SecondReference)は第2の参照ビュー(view_id 0)のビューコンポーネントであり、ViewID(Reference)は第1の参照ビュー(view_id 1)のビューコンポーネントである。従って、
図7に示す例では、動きベクトル予測子134は、1倍に基準化された動きベクトル130である(例えば、
【数5】
【0155】
)。即ち、動きベクトル130の水平変位成分及び垂直変位成分は、動きベクトル予測子134の水平変位成分及び垂直変位成分と同じであり得る。代替的に、第2の参照ビュー(view_id 0)がターゲットビューのために選択される場合、mv’は基準化された動きベクトル予測子138を表し、mvは動きベクトル130を表し、ViewID(Target)は動きベクトル予測子138によって指されたビューコンポーネントであり、ViewID(Current)は現在ブロック136のビューコンポーネントであり、ViewID(SecondReference)は第2の参照ビュー(view_id 0)のビューコンポーネントであり、ViewID(Rreference)は第1の参照ビュー(view_id 1)のビューコンポーネントである。従って、
図7に示す例では、動きベクトル予測子138は、2倍に基準化された動きベクトル130である(例えば、
【数6】
【0156】
)。即ち、ビデオデコーダ30は、現在ブロック136についての動きベクトル予測子138を生成するために、動きベクトル130の水平変位成分と垂直変位成分の両方を2倍に拡大し得る。
【0157】
本開示の態様によれば、ビデオデコーダ30は、動きベクトル予測を実行する(例えば、MVPを生成する)ときに同様のステップを実行し得る。例えば、ビデオデコーダ30は、第1の参照ビュー(view_id 1)又は第2の参照ビュー(view_id 0)であり得るターゲットビューを選択し得る。しかしながら、現在ブロックのための予測ブロックを含んでいるビュー成分の参照ピクチャがビュー間予測のために利用可能でない場合、対応する予測子は使用され得ない。従って、ターゲットビューの選択は、例えば、予測ブロック及び/又は所定の選択アルゴリズムの利用可能性に基づいて決定され得る。
【0158】
現在ブロック136のための予測ブロックが、第1の参照ビュー(view_id 1)又は第2の参照ビュー(view_id 0)のいずれかにおいて直接のビュー間予測のために使用されるために利用可能でない場合、ビデオデコーダ30は、動きベクトル予測を実行し得ない。少なくとも1つの予測ブロックが利用可能な場合、ビデオデコーダ30は、現在ブロック136についての実際の動きベクトルに関連する予測ブロックを含む参照ビューを選択し得る。
【0159】
ターゲットビューを選択した後、次いで、ビデオデコーダ30は、マージモードに関して上述したステップを繰り返し得る。例えば、ビデオデコーダ30は、候補ブロック132の位置を特定し得る。即ち、ビデオデコーダ30は、候補ブロック132についてのビューコンポーネント1中のコロケート座標を決定し得る。更に、幾つかの例では、ビデオデコーダ30は、現在ブロック136のビューコンポーネント(ビューコンポーネント2)と候補ブロック132のビューコンポーネント(ビューコンポーネント1)との間の視差に基づいて、座標を調整し得る。
【0160】
更に、候補ブロック132の位置を特定した後に、ビデオデコーダ30は、候補ブロック132のための予測ブロックと、現在ブロック136のための予測ブロック(例えば、ターゲットビュー中の予測ブロック)とを撮影するために使用されたカメラのカメラ位置の差に基づいて、候補ブロック132についての動きベクトル130を基準化し得る。即ち、ビデオデコーダ30は、候補ブロック132についての動きベクトル130によって指されたビューコンポーネントと、ターゲットビューのビューコンポーネントとの間の差に応じて、視差動きベクトル130(例えば、予測のために使用されている動きベクトル)を基準化し得る。幾つかの例では、ビデオデコーダ30は、上記の式(2)を使用して動きベクトル予測子基準化を実行し得る。他の例では、以下で
図8に関して説明するように、動きベクトル予測子基準化は他のビューに拡張され得る。
【0161】
ビデオデコーダ30は、(例えば、上記で
図5に関して説明した)マージモード及び/又は動きベクトル予測を実行するときに候補リストに候補ブロック132を追加し得る。本開示の態様によれば、候補ブロックは、様々な方法で(例えば、マージモード又はMVP用いた動きベクトル予測のいずれかのための)動きベクトル予測子候補リストに追加され得る。例えば、ビデオデコーダ30は、以下の方式に従ってマージモード候補の位置を特定することによって候補リストを構成し得る。
【0162】
1 availableFlagA
1が1に等しい場合、A
1
2 availableFlagVが1に等しい場合、V
3 availableFlagB
1が1に等しい場合、B
1
4 availableFlagB
0が1に等しい場合、B
0
5 availableFlagA
0が1に等しい場合、A
0
6 availableFlagB
2が1に等しい場合、B
2
7 availableFlagColが1に等しい場合、Col
式中、Vは候補ブロック132を表す。他の例では、候補ブロック132は、位置を特定され、候補リストの他の位置において候補リストに追加され得る。
【0163】
図8は、本開示の態様による、動きベクトル予測子を生成及び基準化することを示す別の概念図である。例えば、本開示の態様によれば、ビデオコーダ(ビデオエンコーダ20又はビデオデコーダ30など)は、現在ブロック146についての動きベクトル予測子144(mv’)を生成するために、視差動きベクトル予測子候補ブロック142からの視差動きベクトル140(mv)を基準化し得、候補ブロック142は現在ブロック146とは異なるビューコンポーネントに属する。
図8についてビデオデコーダ30に関して説明するが、本開示の技法は、他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコード化ユニットなどを含む様々な他のビデオコーダによって行われ得ることを理解されたい。
【0164】
図8に示す例は、
図7に関して図示及び説明した動きベクトル予測を4つ以上のビューを含む環境に拡張する。例えば、
図8に示すように、候補ブロック142はビューコンポーネント2(view_id 2)中にある。候補ブロック142は、インター予測され、ビューコンポーネント1(view_id 1)中の予測ブロックを指す動きベクトル140(mv)を含む。例えば、動きベクトル140は、ビュー2(view_id 2)中のターゲットピクチャと、ビュー1(view_id 1)中の参照ピクチャとを有する。現在ブロック146は、候補ブロック142とコロケートされ、ビューコンポーネント3(view_id 3)中にある。
【0165】
本開示の態様によれば、ビデオデコーダ30は、現在ブロック146についてのターゲットビューをビューコンポーネント0(view_id 0)として選択し得る。例えば、ターゲットビューは、概して、現在ブロックのための予測ブロックを含む。予測ブロックを含んでいるピクチャがビュー間参照ピクチャであり、現在ブロック146のための予測ブロックが第3の参照ビュー(view_id 0)中にある場合、ビデオデコーダ30は、第3の参照ビューをターゲットビューとして選択し得る。
【0166】
ターゲットビューを選択した後に、ビデオデコーダ30は、候補ブロック142の位置を特定し得る。例えば、現在ブロック146の左上ルーマサンプルがビューコンポーネント3中の座標(x,y)にあるピクチャ(又はスライス)中にあると仮定すると、ビデオデコーダ30は、候補ブロック142についてのビューコンポーネント2中の同一位置の座標を決定し得る。更に、上述のように、ビデオデコーダ30は、現在ブロック146のビューコンポーネント(ビューコンポーネント3)と候補ブロック142のビューコンポーネント(ビューコンポーネント2)との間の視差に基づいて、座標を調整し得る。
【0167】
候補ブロック142の位置を特定した後に、ビデオデコーダ30は、動きベクトル140と現在ブロック146についての実際の動きベクトルとの間のビュー距離の差に基づいて、候補ブロック142についての動きベクトル140を基準化し得る。即ち、ビデオデコーダ30は、候補ブロック142のための予測ブロックと、現在ブロック146のための予測ブロック(例えば、ターゲットビュー中の予測ブロック)とを撮影するために使用されたカメラのカメラ位置の差に基づいて、動きベクトル130を基準化し得る。即ち、ビデオデコーダ30は、候補ブロック142についての動きベクトル140によって指されたビューコンポーネントと、ターゲットビューのビューコンポーネント(view_id 0)との間の差に応じて、視差動きベクトル140(例えば、予測のために使用されている動きベクトル)を基準化し得る。
【0168】
一例では、ビデオデコーダ30は、以下に示す式(4)に従って、現在ブロックについての基準化された動きベクトル予測子を生成し得る。
【数7】
【0169】
式中、mv’は現在ブロックについての基準化された動きベクトル予測子を表し、mvは候補ブロックについての動きベクトルを表し、ViewID(Third)は第3の参照ビューのビューコンポーネントであり、ViewID(Current)は現在ブロックのビューコンポーネントであり、ViewID(SecondReference)は(利用可能な場合)第2の参照ビューのビューコンポーネントであり、ViewID(Reference)は第1の参照ビューのビューコンポーネントである。幾つかの例では、ViewID(Third)−ViewIDは、動きベクトル予測子144のビュー距離と呼ばれることがあり、ViewID(SecondReference)−ViewID(Reference)は、動きベクトル140のビュー距離と呼ばれることがある。即ち、動きベクトル予測子144のビュー距離は、動きベクトル予測子144のターゲットピクチャ(view_id 0)と参照ピクチャ(view_id 3)との間の差であり、動きベクトル140のビュー距離は、動きベクトル140のターゲットピクチャ(view_id 1)と参照ピクチャ(view_id 2)との間の差である。式(3)を
図8の例に適用すると、mv’は基準化された動きベクトル予測子144を表す。例えば、ViewID(Third)は第3の参照ビュー(view_id 0)を表し、mv’は基準化された動きベクトル予測子144を表し、mvは動きベクトル140を表し、ViewID(Current)は現在ブロック146のビューコンポーネントであり、ViewID(SecondReference)は第2の参照ビュー(view_id 1)のビューコンポーネントであり、ViewID(Reference)は第1の参照ビュー(view_id 2)のビューコンポーネントである。従って、
図8に示す例では、動きベクトル予測子144は、3倍に基準化された動きベクトル140である(例えば、
【数8】
【0170】
)。即ち、ビデオデコーダ30は、動きベクトル予測子144を形成するために、動きベクトル140の水平変位成分と垂直変位成分とを3倍に拡大し得る。
【0171】
図7〜
図8はビュー間視差動きベクトル予測に関する例を与えるが、そのような例は単に説明のために与えたものにすぎないことを理解されたい。即ち、視差動きベクトル予測のための技法は、図示のビューよりも多い又は少ないビューに適用され得る。追加又は代替として、視差動きベクトル予測のための技法は、ビューが異なるビュー識別子を有する状況において適用され得る。
【0172】
図9は、ビデオデータのブロックについての予測情報をコード化する例示的な方法を示す流れ図である。
図9に示す例は、概して、ビデオコーダによって実行されるものとして説明する。幾つかの例では、
図9の方法は、上述したビデオエンコーダ20(
図1及び
図2)又はビデオデコーダ30(
図1及び
図3)によって行われ得ることを理解されたい。他の例では、
図9の方法は、様々な他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコード化ユニットなどによって実行され得る。
【0173】
図9に示す例示的な方法によれば、ビデオコーダは、第1のビュー中のビデオデータの第1のブロックを識別し、ビデオデータの第1のブロックは第1の視差動きベクトルに関連する(160)。例えば、ビデオデータの第1のブロックについて動きベクトルは、別のビューコンポーネント中の参照ブロックを識別する視差動きベクトルであり得る。次いで、ビデオコーダは、ビデオデータの第2のブロックに関連する第2の動きベクトルが視差動きベクトルであるかどうかを決定する(162)。
【0174】
第2の動きベクトルが視差動きベクトルでない場合(ステップ162のNOブランチ)、ビデオコーダは異なる動きベクトル予測子候補を識別する(164)。即ち、本開示の幾つかの態様によれば、時間動きベクトル(例えば、第2の動きベクトルが時間動きベクトルであるとき、第2の動きベクトル)を予測するために視差動きベクトル(例えば、第1の動きベクトル)を使用する能力は、使用不能であり得る。そのような場合、ビデオコーダは、動きベクトル予測のために使用されるために利用不可能であるものとして第1の動きベクトルを識別し得る。
【0175】
第2の動きベクトルが視差動きベクトルである場合(ステップ162のYESブランチ)、ビデオコーダは、第2の動きベクトルについての動きベクトル予測子を生成するために第1の動きベクトルを基準化する(166)。例えば、本開示の態様によれば、ビデオコーダは、第1の視差動きベクトルと第2の動きベクトルとに関連するビュー距離の差に基づいて、視差動きベクトル予測子を生成するために第1の動きベクトルを基準化し得る。即ち、幾つかの例では、ビデオコーダは、カメラ位置に基づいて第2のブロックについての動きベクトル予測子を基準化し得る。例えば、ビデオコーダは、
図6〜
図8に関して図示及び説明したように、ビュー識別子の差に応じて第2の動きベクトルを基準化し得る。
【0176】
次いで、ビデオコーダは、基準化された動きベクトル予測子を使用して第2のブロックについての予測データをコード化する(168)。例えば、ビデオコーダは、マージモードを使用して又は動きベクトル予測を使用して、第2のブロックについての予測データをコード化し得る。マージモードの場合、ビデオコーダは、基準化された第2の動きベクトル予測子を使用して第2のブロックについての予測データを直接コード化し得る。動きベクトル予測の場合、ビデオコーダは、MVDを生成することによって第2のブロックについての予測データをコード化し得る。MVDは、第1の動きベクトルと基準化された第2の動きベクトルとの間の差を含み得る。
【0177】
また、
図9に関して図示及び説明したステップは一例として与えたものにすぎないことを理解されたい。即ち、
図9の方法のステップは、必ずしも
図9に示した順序で実行される必要があるとは限らず、より少数の、追加の、又は代替のステップが実行され得る。
【0178】
図10は、現在ブロックとは異なるビュー中のブロックから動きベクトル予測子を生成することを示す概念図である。例えば、本開示の態様によれば、ビデオコーダ(ビデオエンコーダ20又はビデオデコーダ30など)は、時間動きベクトル予測子候補ブロック182からの時間動きベクトル180(mv)を使用して現在ブロック186についての動きベクトル予測子184(mv’)を生成し得、候補ブロック182は、現在ブロック186とは異なるビューコンポーネントに属する。
図10についてビデオデコーダ30に関して説明するが、本開示の技法は、他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコード化ユニットなどを含む様々な他のビデオコーダによって行われ得ることを理解されたい。
【0179】
図10に示すように、現在ブロック186はビューコンポーネント1(view_id 1)中にある。候補ブロック182はビューコンポーネント0(view_id 0)中にある。候補ブロック182は、時間的に予測され、同じビューコンポーネント内の異なる時間位置中の予測ブロックを指す動きベクトル180(mv)を含む。即ち、
図10に示す例では、動きベクトル180は、変数iに等しい参照インデックス(ref_idx=i)を有するピクチャ中の予測ブロックを識別する。
【0180】
現在ブロック186の左上ルーマサンプルが座標(x,y)のピクチャ(又はスライス)中にあると仮定する。ビデオデコーダ30は、候補ブロック182についてのビューコンポーネント0中の同一位置の座標を決定することによって、候補ブロック182の位置を特定し得る。幾つかの例では、ビデオデコーダ30は、現在ブロック186のビューコンポーネント(view_id 1)と候補ブロック182のビューコンポーネント(view_id 0)との間の視差に基づいて候補ブロック182の座標を調整し得る。従って、ビデオデコーダ30は、候補ブロック182の座標を(x’,y’)として決定し得、(x’,y’)=(x,y)+視差である。幾つかの例では、視差は、SPS、PPS、スライスヘッダ、CUシンタックス、及び/又はPUシンタックス中に含まれ及び/又は計算され得る。
【0181】
本開示の態様によれば、ビデオデコーダ30は、次いで、予測のために使用されている動きベクトル180の参照インデックスを再マッピングし得る。概して、上述のように、動きベクトルについてのデータは、参照ピクチャリストと、参照ピクチャリストへのインデックス(ref_idxと呼ぶ)と、水平成分と、垂直成分とを含む。HEVCでは、2つの通常の参照ピクチャリスト(例えば、リスト0及びリスト1)と、合成参照ピクチャリスト(例えば、リストc)とがあり得る。一般性の損失なしに、現在参照ピクチャリストが(リスト0、リスト1、又はリストcのいずれかに対応し得る)リストtであると仮定する。
図10に示す例によれば、候補ブロック182についての動きベクトル180は、POC値2と、iに等しいref_idxとを有するビューコンポーネント0(view_id 0)中にあるピクチャ中の予測ブロックを識別し得る。本開示の態様によれば、ビデオデコーダ30は、現在ブロック186と同じタイムインスタンス中の現在ブロック186についてのコロケート予測ブロックを識別し得る。即ち、候補ブロック182のための予測ブロック及び現在ブロック186のための予測ブロックは、同じ時間位置を有するが、2つの異なるビューのピクチャ中にある。
【0182】
一例では、現在ブロック186のための識別された予測ブロックが現在ピクチャについての参照ピクチャリストt中のj番目の参照ピクチャに対応する場合、ビデオデコーダ30は、現在ブロック186についての参照インデックス(ref_idx)をjとして予測し得、ビデオデコーダ30は、動きベクトル予測子184を動きベクトル180と同じ値に設定し得る。従って、ビデオデコーダ30は、現在ブロック186についての参照インデックスをref_idx iからref_idx jに効果的に再マッピングする。即ち、ビデオデコーダ30は、現在ブロック186についての動きベクトル予測子184が候補ブロック182と同じ参照ピクチャリストと水平成分と垂直成分とを有すると決定し、しかしながら、動きベクトル予測子184は、参照ピクチャリスト中のi番目の参照ピクチャではなく参照ピクチャリスト中のj番目の参照ピクチャを指す。
【0183】
本開示の態様によれば、幾つかの例では、ビデオデコーダはまた、動きベクトル予測子184を基準化し得る。例えば、現在ブロック186のための識別された予測ブロックを含んでいるピクチャが参照ピクチャリストt中に含まれない場合、ビデオデコーダ30は、参照ピクチャリストt中の最も近い第2のピクチャを識別し得る。幾つかの例では、2つのピクチャが、現在ブロック186のための識別された予測ブロックを含んでいるピクチャまで等しい距離を有する場合、ビデオデコーダ30は、現在ブロック186を含んでいるピクチャにより近いピクチャを第2のピクチャとして選択し得る。説明のために、識別されたピクチャが参照インデックスkを有すると仮定する。この例では、ビデオデコーダ30は、次いで、動きベクトル予測子184の参照インデックスをkとして予測し得、ビデオデコーダ30は、ピクチャ順序カウント(POC)における差に基づいて動きベクトル予測子184を基準化し得る。即ち、ビデオデコーダ30は、現在ブロック186と参照インデックスjにおけるピクチャとの間の距離と、現在ブロック186と参照インデックスkにおけるピクチャとの間の距離との間の差に基づいて動きベクトル予測子184を基準化し得る。
【0184】
幾つかの例によれば、ビデオデコーダ30は、動きベクトル予測を実行するときに同じプロセスを実行し得る。しかしながら、動きベクトル予測子184を決定した後に、ビデオデコーダ30は、MVDを使用して現在ブロック186についての動きベクトルを生成し得る。動きベクトル予測は同じプロセスを使用し得る。別の例では、動きベクトル予測に関して、現在ブロック186のための予測ブロックの位置が特定され得ない(上記で参照インデックスjにあると識別された)場合、ビデオデコーダ30は、現在ブロック186についてマージモード又は動きベクトル予測を実行し得ない。即ち、ビデオデコーダ30は、動きベクトル予測子184を基準化するのではなく、動きベクトル予測子184が利用不可能であると見なし得る。
【0185】
ビデオデコーダ30は、(例えば、上記で
図5に関して説明した)マージモード及び/又は動きベクトル予測を実行するための候補リストに候補ブロック182を追加し得る。本開示の態様によれば、候補ブロック182は、様々な方法で(例えば、マージモード又はMVP用いた動きベクトル予測のいずれかのための)動きベクトル予測子候補リストに追加され得る。例えば、ビデオデコーダ30は、以下の方式に従って候補の位置を特定することによって候補リストを構成し得る。
【0186】
1 availableFlagA
1が1に等しい場合、A
1
2 availableFlagVが1に等しい場合、V
3 availableFlagB
1が1に等しい場合、B
1
4 availableFlagB
0が1に等しい場合、B
0
5 availableFlagA
0が1に等しい場合、A
0
6 availableFlagB
2が1に等しい場合、B
2
7 availableFlagColが1に等しい場合、Col
式中、Vは候補ブロック182を表す。他の例では、候補ブロック132は、位置を特定され、候補リストの他の位置において候補リストに追加され得る。
【0187】
図11は、動きベクトル予測子を生成する例示的な方法を示す流れ図である。
図11に示す例は、概して、ビデオコーダによって実行されるものとして説明する。幾つかの例では、
図11の方法は、上述したビデオエンコーダ20(
図1及び
図2)又はビデオデコーダ30(
図1及び
図3)によって行われ得ることを理解されたい。他の例では、
図11の方法は、様々な他のプロセッサ、処理ユニット、エンコーダ/デコーダ(コーデック)などのハードウェアベースのコード化ユニットなどによって実行され得る。
【0188】
図11に示す例によれば、ビデオコーダは、第1のビューの第1の時間位置中のビデオデータの第1のブロックを識別し、第1のブロックは、第1の時間動きベクトルに関連する(202)。本開示の態様によれば、ビデオデータの第2のブロックに関連する第2の動きベクトルが時間動きベクトルであり、第2のブロックが第1のブロックとは異なる第2のビューからであるとき(ステップ204のYESブランチ)、ビデオコーダは、第1の動きベクトルに基づいて動きベクトル予測子を決定する(206)。即ち、例えば、ビデオコーダは、第1の動きベクトルから第2の動きベクトルを予測するための動きベクトル予測子を決定し得る。ビデオコーダはまた、動きベクトル予測子を使用して第2のブロックについての予測データをコード化する(208)。例えば、ビデオコーダは、動きベクトル予測子をマージモードで使用するか、又はMVD値を生成するために使用し得る。
【0189】
第2の動きベクトルが時間動きベクトルでない、及び/又はビデオデータの第2のブロックがビデオデータの第1のブロックとは異なるビューからでない場合(ステップ204のNOブランチ)、ビデオコーダは、第2の動きベクトルが視差動きベクトルであるかどうかを決定する(210)。本開示の態様によれば、第2の動きベクトルが視差動きベクトルでない場合(ステップ210のNOブランチ)、ビデオコーダは異なる動きベクトル予測子候補を識別する(212)。即ち、ビデオコーダは、幾つかの例では、第2の動きベクトルを予測するために第1の動きベクトルを使用し得ない。
【0190】
第2の動きベクトルが視差動きベクトルである場合(ステップ210のYESブランチ)、ビデオコーダは、視差動きベクトル予測が使用不能であるかどうかを決定する(214)。即ち、本開示の幾つかの態様によれば、視差動きベクトル(例えば、第2の動きベクトルが視差動きベクトルであるとき、第2の動きベクトル)を予測するために時間動きベクトル(例えば、第1の動きベクトル)を使用する能力は使用不能であり得る。そのような場合、ビデオコーダは、異なる動きベクトル予測子候補を識別する(212)(ステップ214のNOブランチ)。
【0191】
ビデオコーダは、視差動きベクトル予測が使用可能である(例えば、又はそのような機能を有効化/無効化する能力が存在しない)と決定した場合、ビデオコーダは、第1の動きベクトルに基づいて第2の動きベクトルについての動きベクトル予測子を決定する(206)(ステップ214のYESブランチ)。更に、ビデオコーダはまた、動きベクトル予測子を使用して第2のブロックについての予測データをコード化する(208)。例えば、ビデオコーダは、動きベクトル予測子をマージモードで使用するか、又はMVD値を生成するために使用し得る。
【0192】
また、
図11に関して図示及び説明するステップは一例として与えたものにすぎないことを理解されたい。即ち、
図11の方法のステップは、必ずしも
図11に示した順序で実行される必要があるとは限らず、より少数の、追加の、又は代替のステップが実行され得る。
【0193】
例に応じて、本明細書で説明した方法のうちのいずれかの幾つかの行為又はイベントは、異なるシーケンスで実行され得、互いに付加、マージ、又は除外され得る(例えば、全ての説明した行為又はイベントが、方法の実施のために必要であるとは限らない)ことを理解されたい。更に、幾つかの例では、行為又はイベントは、連続的にではなく、例えば、マルチスレッド処理、割込み処理、又は複数のプロセッサを介して、同時に実行され得る。更に、本開示の幾つかの態様は、明快のために単一のモジュール又はユニットによって実行されるものとして説明したが、本開示の技法は、ビデオコーダに関連するユニット又はモジュールの組合せによって実行され得ることを理解されたい。
【0194】
1つ以上の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実施され得る。ソフトウェアで実施される場合、機能は、1つ以上の命令又はコードとしてコンピュータ可読媒体上に記憶されるか、又はコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体又は通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。
【0195】
このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、又は(2)信号又は搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実施のための命令、コード及び/又はデータ構造を取り出すために1つ以上のコンピュータあるいは1つ以上のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
【0196】
限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROM又は他の光ディスクストレージ、磁気ディスクストレージ、又は他の磁気記憶装置、フラッシュメモリ、あるいは命令又はデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、又は赤外線、無線、及びマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、又は他のリモートソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。
【0197】
但し、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)及びディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)及びブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
【0198】
命令は、1つ以上のデジタル信号プロセッサ(DSP)などの1つ以上のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路又はディスクリート論理回路によって実行され得る。従って、本明細書で使用する「プロセッサ」という用語は、前述の構造、又は本明細書で説明した技法の実施に好適な他の構造のいずれかを指すことがある。更に、幾つかの態様では、本明細書で説明した機能は、符号化及び復号のために構成された専用のハードウェア及び/又はソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つ以上の回路又は論理要素中に十分に実施され得る。
【0199】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、又はICのセット(例えば、チップセット)を含む、多種多様な機器又は装置において実施され得る。本開示では、開示する技法を実行するように構成された機器の機能的態様を強調するために様々な構成要素、モジュール、又はユニットについて説明したが、それらの構成要素、モジュール、又はユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェア及び/又はファームウェアとともに、上記で説明した1つ以上のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、又は相互動作ハードウェアユニットの集合によって与えられ得る。
【0200】
本開示の様々な態様について説明した。これら及び他の態様は以下の特許請求の範囲内に入る。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
ビデオデータをコード化する方法であって、
第1のビューからの第1の時間位置中のビデオデータの第1のブロックを識別することと、前記第1のブロックが第1の視差動きベクトルに関連する、
ビデオデータの第2のブロックに関連する第2の動きベクトルについての動きベクトル予測子を決定することと、前記動きベクトル予測子が前記第1の視差動きベクトルに基づく、
前記第2の動きベクトルが視差動きベクトルを備えるとき、前記動きベクトル予測子を決定することが、基準化された動きベクトル予測子を生成するために前記第1の視差動きベクトルを基準化することを備え、前記第1の視差動きベクトルを基準化することが、前記第1の動きベクトルのビュー距離によって除算された前記第2の視差動きベクトルのビュー距離を備える基準化ファクタを前記第1の視差動きベクトルに適用することを備える、
前記基準化された動きベクトル予測子を使用して前記第2のブロックについての予測データをコード化することと
を備える、方法。
[C2]
前記第2の動きベクトルが視差動きベクトルでないとき、前記第1の視差動きベクトルから前記動きベクトル予測子を決定する能力を無効化することを備える、C1に記載の方法。
[C3]
ビデオデータの前記第2のブロックが前記第1のビューからである、C1に記載の方法。
[C4]
ビデオデータの前記第2のブロックが、ビデオデータの前記第1のブロックに時間的に隣接する、C3に記載の方法。
[C5]
ビデオデータの前記第2のブロックが前記第1の時間位置中にある、C1に記載の方法。
[C6]
ビデオデータの前記第2のブロックが第2の異なるビューからであり、前記第2のビューの前記第2のブロックと前記第1のビューの前記第1のブロックとの間の視差値を使用して前記第1のブロックを識別することを更に備える、C5に記載の方法。
[C7]
ビデオデータの前記第2のブロックが、前記第1の時間位置とは異なる第2の時間位置中にある、C1に記載の方法。
[C8]
ビデオデータの前記第2のブロックが、前記第1のビューからであり、前記第1の時間位置からである、C1に記載の方法。
[C9]
ビデオデータの前記第2のブロックが、前記第1のビューからの前記第1の時間位置中のビデオデータの前記第1のブロックに空間的に隣接する、C8に記載の方法。
[C10]
前記第2の動きベクトルを予測するための候補リストに前記動きベクトル予測子を追加することを更に備える、C1に記載の方法。
[C11]
前記候補リストに前記動きベクトル予測子を追加するより前に前記動きベクトル予測子を基準化することを更に備える、C10に記載の方法。
[C12]
視差動きベクトルのビュー距離が、参照ピクチャのビュー識別子と前記視差動きベクトルに関連するターゲットピクチャのビュー識別子との間の差を備える、C1に記載の方法。
[C13]
視差動きベクトルのビュー距離が、参照ピクチャを含んでいるビューのカメラ位置と前記視差動きベクトルに関連するターゲットピクチャを含んでいるビューのカメラ位置との間の幾何学的距離を備える、C1に記載の方法。
[C14]
ビデオデータの前記第2のブロックについての前記予測データをコード化することが、前記予測データを符号化することを備える、C1に記載の方法。
[C15]
ビデオデータの前記第2のブロックについての前記予測データをコード化することが、前記予測データを復号することを備える、C1に記載の方法。
[C16]
ビデオデータの前記第2のブロックについての前記予測データを使用してビデオデータの前記第2のブロックをコード化することを更に備える、C1に記載の方法。
[C17]
1つ以上のプロセッサを備えるビデオデータをコード化するための装置であって、前記1つ以上のプロセッサが、
第1のビューからの第1の時間位置中のビデオデータの第1のブロックを識別することと、前記第1のブロックが第1の視差動きベクトルに関連する、
ビデオデータの第2のブロックに関連する第2の動きベクトルについての動きベクトル予測子を決定することと、前記動きベクトル予測子が前記第1の視差動きベクトルに基づく、
前記第2の動きベクトルが視差動きベクトルを備えるとき、前記1つ以上のプロセッサが、基準化された動きベクトル予測子を生成するために前記第1の視差動きベクトルを基準化することによって前記動きベクトル予測子を決定するように構成され、前記第1の視差動きベクトルを基準化することが、前記第1の動きベクトルのビュー距離によって除算された前記第2の視差動きベクトルのビュー距離を備える基準化ファクタを前記第1の視差動きベクトルに適用することを備える、
前記基準化された動きベクトル予測子に基づいて前記第2のブロックについての予測データをコード化することと
を行うように構成された、装置。
[C18]
前記第2の動きベクトルが視差動きベクトルでないとき、前記1つ以上のプロセッサが、前記第1の視差動きベクトルから前記動きベクトル予測子を決定する能力を無効化するように構成された、C17に記載の装置。
[C19]
ビデオデータの前記第2のブロックが前記第1のビューからである、C17に記載の装置。
[C20]
ビデオデータの前記第2のブロックが、ビデオデータの前記第1のブロックに時間的に隣接する、C19に記載の装置。
[C21]
ビデオデータの前記第2のブロックが前記第1の時間位置中にある、C17に記載の装置。
[C22]
ビデオデータの前記第2のブロックが第2の異なるビューからであり、前記1つ以上のプロセッサが、前記第2のビューの前記第2のブロックと前記第1のビューの前記第1のブロックとの間の視差値を使用して前記第1のブロックを識別するように更に構成された、C21に記載の装置。
[C23]
ビデオデータの前記第2のブロックが、前記第1の時間位置とは異なる第2の時間位置中にある、C17に記載の装置。
[C24]
ビデオデータの前記第2のブロックが、前記第1のビューからであり、前記第1の時間位置からである、C17に記載の装置。
[C25]
ビデオデータの前記第2のブロックが、前記第1のビューからの前記第1の時間位置中のビデオデータの前記第1のブロックに空間的に隣接する、C24に記載の装置。
[C26]
前記1つ以上のプロセッサが、前記第2の動きベクトルを予測するための候補リストに前記動きベクトル予測子を追加するように更に構成された、C17に記載の装置。
[C27]
前記1つ以上のプロセッサが、前記候補リストに前記動きベクトル予測子を追加するより前に前記動きベクトル予測子を基準化するように更に構成された、C26に記載の装置。
[C28]
視差動きベクトルのビュー距離が、参照ピクチャのビュー識別子と前記視差動きベクトルに関連するターゲットピクチャのビュー識別子との間の差を備える、C17に記載の装置。
[C29]
視差動きベクトルのビュー距離が、参照ピクチャを含んでいるビューのカメラ位置と前記視差動きベクトルに関連するターゲットピクチャを含んでいるビューのカメラ位置との間の幾何学的距離を備える、C17に記載の装置。
[C30]
ビデオデータの前記第2のブロックについての前記予測データをコード化するために、前記1つ以上のプロセッサが、前記予測データを符号化するように構成された、C17に記載の装置。
[C31]
ビデオデータの前記第2のブロックについての前記予測データをコード化するために、前記1つ以上のプロセッサが、前記予測データを復号するように構成された、C17に記載の装置。
[C32]
前記1つ以上のプロセッサが、ビデオデータの前記第2のブロックについての前記予測データを使用してビデオデータの前記第2のブロックをコード化するように更に構成された、C17に記載の装置。
[C33]
第1のビューからの第1の時間位置中のビデオデータの第1のブロックを識別するための手段と、前記第1のブロックが第1の視差動きベクトルに関連する、
ビデオデータの第2のブロックに関連する第2の動きベクトルについての動きベクトル予測子を決定するための手段と、前記動きベクトル予測子が前記第1の視差動きベクトルに基づく、
前記第2の動きベクトルが視差動きベクトルを備えるとき、前記動きベクトル予測子を決定するための前記手段が、基準化された動きベクトル予測子を生成するために前記第1の視差動きベクトルを基準化することによって前記動きベクトル予測子を決定するように構成され、前記第1の視差動きベクトルを基準化することが、前記第1の動きベクトルのビュー距離によって除算された前記第2の視差動きベクトルのビュー距離を備える基準化ファクタを前記第1の視差動きベクトルに適用することを備える、
前記基準化された動きベクトル予測子に基づいて前記第2のブロックについての予測データをコード化するための手段と
を備える、ビデオデータをコード化するための装置。
[C34]
前記第2の動きベクトルが視差動きベクトルでないとき、前記第1の視差動きベクトルから前記動きベクトル予測子を決定する能力を無効化するための手段を更に備える、C33に記載の装置。
[C35]
ビデオデータの前記第2のブロックが前記第1のビューからである、C33に記載の装置。
[C36]
ビデオデータの前記第2のブロックが、ビデオデータの前記第1のブロックに時間的に隣接する、C35に記載の装置。
[C37]
ビデオデータの前記第2のブロックが前記第1の時間位置中にある、C33に記載の装置。
[C38]
ビデオデータの前記第2のブロックが第2の異なるビューからであり、前記第2のビューの前記第2のブロックと前記第1のビューの前記第1のブロックとの間の視差値を使用して前記第1のブロックを識別するための手段を更に備える、C37に記載の装置。
[C39]
ビデオデータの前記第2のブロックが、前記第1の時間位置とは異なる第2の時間位置中にある、C33に記載の装置。
[C40]
ビデオデータの前記第2のブロックが、前記第1のビューからであり、前記第1の時間位置からである、C33に記載の装置。
[C41]
ビデオデータの前記第2のブロックが、前記第1のビューからの前記第1の時間位置中のビデオデータの前記第1のブロックに空間的に隣接する、C33に記載の装置。
[C42]
前記第2の動きベクトルを予測するための候補リストに前記動きベクトル予測子を追加するための手段を更に備える、C33に記載の装置。
[C43]
前記候補リストに前記動きベクトル予測子を追加するより前に前記動きベクトル予測子を基準化するための手段を更に備える、C33に記載の装置。
[C44]
視差動きベクトルのビュー距離が、参照ピクチャのビュー識別子と前記視差動きベクトルに関連するターゲットピクチャのビュー識別子との間の差を備える、C33に記載の装置。
[C45]
視差動きベクトルのビュー距離が、参照ピクチャを含んでいるビューのカメラ位置と前記視差動きベクトルに関連するターゲットピクチャを含んでいるビューのカメラ位置との間の幾何学的距離を備える、C33に記載の装置。
[C46]
ビデオデータの前記第2のブロックについての前記予測データをコード化するための手段が、前記予測データを符号化するための手段を備える、C33に記載の装置。
[C47]
ビデオデータの前記第2のブロックについての前記予測データをコード化するための手段が、前記予測データを復号するための手段を備える、C33に記載の装置。
[C48]
ビデオデータの前記第2のブロックについての前記予測データを使用してビデオデータの前記第2のブロックをコード化するための手段を更に備える、C33に記載の装置。
[C49]
命令を記憶したコンピュータ可読媒体であって、前記命令は、実行されたとき、1つ以上のプロセッサに、
第1のビューからの第1の時間位置中のビデオデータの第1のブロックを識別することと、前記第1のブロックが第1の視差動きベクトルに関連する、
ビデオデータの第2のブロックに関連する第2の動きベクトルについての動きベクトル予測子を決定することと、前記動きベクトル予測子が前記第1の視差動きベクトルに基づく、
前記第2の動きベクトルが視差動きベクトルを備えるとき、前記命令が、前記1つ以上のプロセッサに、基準化された動きベクトル予測子を生成するために前記第1の視差動きベクトルを基準化することによって前記動きベクトル予測子を決定させ、前記第1の視差動きベクトルを基準化することが、前記第1の動きベクトルのビュー距離によって除算された前記第2の視差動きベクトルのビュー距離を備える基準化ファクタを前記第1の視差動きベクトルに適用することを備える、
前記基準化された動きベクトル予測子に基づいて前記第2のブロックについての予測データをコード化することと
を行わせる、コンピュータ可読記憶媒体。
[C50]
前記第2の動きベクトルが視差動きベクトルでないとき、前記1つ以上のプロセッサに、前記第1の視差動きベクトルから前記動きベクトル予測子を決定する能力を無効化させる命令を更に備える、C49に記載のコンピュータ可読記憶媒体。
[C51]
ビデオデータの前記第2のブロックが前記第1のビューからである、C49に記載のコンピュータ可読記憶媒体。
[C52]
ビデオデータの前記第2のブロックが、ビデオデータの前記第1のブロックに時間的に隣接する、C51に記載のコンピュータ可読記憶媒体。
[C53]
ビデオデータの前記第2のブロックが前記第1の時間位置中にある、C49に記載のコンピュータ可読記憶媒体。
[C54]
ビデオデータの前記第2のブロックが第2の異なるビューからであり、前記1つ以上のプロセッサに、前記第2のビューの前記第2のブロックと前記第1のビューの前記第1のブロックとの間の視差値を使用して前記第1のブロックを識別させる命令を更に備える、C53に記載のコンピュータ可読記憶媒体。
[C55]
ビデオデータの前記第2のブロックが、前記第1の時間位置とは異なる第2の時間位置中にある、C49に記載のコンピュータ可読記憶媒体。
[C56]
ビデオデータの前記第2のブロックが、前記第1のビューからであり、前記第1の時間位置からである、C49に記載のコンピュータ可読記憶媒体。
[C57]
ビデオデータの前記第2のブロックが、前記第1のビューからの前記第1の時間位置中のビデオデータの前記第1のブロックに空間的に隣接する、C56に記載のコンピュータ可読記憶媒体。
[C58]
前記1つ以上のプロセッサに、前記第2の動きベクトルを予測するための候補リストに前記動きベクトル予測子を追加させる命令を更に備える、C49に記載のコンピュータ可読記憶媒体。
[C59]
前記1つ以上のプロセッサに、前記候補リストに前記動きベクトル予測子を追加するより前に前記動きベクトル予測子を基準化させる命令を更に備える、C58に記載のコンピュータ可読記憶媒体。
[C60]
視差動きベクトルのビュー距離が、参照ピクチャのビュー識別子と前記視差動きベクトルに関連するターゲットピクチャのビュー識別子との間の差を備える、C49に記載のコンピュータ可読記憶媒体。
[C61]
視差動きベクトルのビュー距離が、参照ピクチャを含んでいるビューのカメラ位置と前記視差動きベクトルに関連するターゲットピクチャを含んでいるビューのカメラ位置との間の幾何学的距離を備える、C49に記載のコンピュータ可読記憶媒体。
[C62]
前記1つ以上のプロセッサにビデオデータの前記第2のブロックについての予測データをコード化させる命令が、前記1つ以上のプロセッサに前記予測データを符号化させる命令を備える、C49に記載のコンピュータ可読記憶媒体。
[C63]
前記1つ以上のプロセッサにビデオデータの前記第2のブロックについての予測データをコード化させる命令が、前記1つ以上のプロセッサに前記予測データを復号させる命令を備える、C49に記載のコンピュータ可読記憶媒体。
[C64]
前記1つ以上のプロセッサに、ビデオデータの前記第2のブロックについての前記予測データを使用してビデオデータの前記第2のブロックをコード化させる命令を更に備える、C49に記載のコンピュータ可読記憶媒体。