[0032]本開示で説明する技法は、一般に、マルチビューテクスチャ(又はテクスチャ及び深度)コード化(MVC)を対象とし、より詳細には、ビデオコーダ(例えば、ビデオエンコーダ又はビデオデコーダ)が、MVCに対する現在ビューの現在ピクチャ内の現在ブロックに対する視差ベクトルを決定する方式を対象とする。MVCは、各ビューが複数のピクチャを含む、複数のビューがコード化される方式を指す。MVCは、3次元(3D)ビデオをサポートするために使用され得る。3D用途では、表示器が2つ以上のビューからピクチャを提示するとき、ビューアは、表示器の2次元(2D)エリアに制限された画像ではなく、3Dの体積を包含する画像を知覚する。3Dの体積を包含する画像のビューアの知覚は、異なるビューのピクチャ内の対象物間の水平視差に起因する。
[0033]視差ベクトルは、現在ピクチャの現在ビューと異なるビュー内にある、対応するピクチャ内のブロックを指すベクトルである。対応するピクチャ内のブロック及び現在ピクチャ内の現在ブロックは、類似するビデオコンテンツを含み得るが、対応するピクチャ内のブロックの位置と現在ピクチャ内の現在ブロックの位置との間に水平視差が存在する。現在ブロックの視差ベクトルは、対応するピクチャ内のブロックと現在ピクチャ内の現在ブロックとの間のこの水平視差の測度を提供する。言い換えれば、対応するピクチャ内のブロックの位置と現在ピクチャ内の現在ブロックの位置との間には垂直視差も存在し得る。現在ブロックの視差ベクトルは、対応するピクチャ内のブロックと現在ピクチャ内の現在ブロックとの間のこの垂直視差の測度を提供し得る。現在ビューの現在ピクチャ及び異なるビューの対応するピクチャが表示される時間は、同じであり得る(即ち、現在ビュー及び異なるビューが同じ時間インスタンスに対するビューであるように)。
[0034]以下でより詳細に説明するように、ビデオコーダは、1つ又は複数の、現在ブロックに空間的及び時間的に隣接するブロックに対する動き情報に基づいて視差ベクトルを決定する。しかしながら、これらの空間的及び時間的隣接ブロックに対する動き情報が記憶される方式のため、幾つかの例では、ビデオコーダは、空間的及び時間的隣接ブロックに対してブロックごとに動き情報を決定する必要はない。そうではなく、ビデオコーダは、領域ごとに動き情報を決定するように構成され得、ここで1つの領域は1つ又は複数の隣接ブロックを含み、現在ブロックのサイズより大きくなり得る。この例では、ブロックごとに動き情報を決定することと比較してより少ない、情報の決定をもたらし得る、領域ごとに動き情報をビデオコーダが決定するように、空間的及び時間的隣接ブロックに対する動き情報が記憶される方式を、ビデオコーダが構成する。
[0035]幾つかの例では、ビデオコーダは、ピクチャ内の画素の相対深度を示す、ピクチャに対する深度マップを導出することを必ずしも必要とすることなく、又はグローバル視差ベクトル(GDV)を必ずしもコード化することなく、視差ベクトルを決定する。導出された深度マップから決定される視差ベクトルは、スムーズ時間ビュー予測された(STV)視差ベクトルと呼ばれる。GDVは、各画素に同じ視差ベクトルを割り当てるベクトルである。幾つかの他の例では、STV視差ベクトルは、予測単位/コード化単位/マクロブロック/マクロブロック区分の各々に適用され得、従って、それらの各々はそれ自体のSTVを有する。
[0036]ピクチャに対する深度マップを導出することに、多大の処理と時間を要することがある。従って、必ずしもピクチャに対する深度マップを導出する必要なくブロックに対する視差ベクトルを決定することは、効率的なビデオコード化を促進する。更に、深度マップが利用可能である場合でも、本開示で説明する技法は利用され得る。技法はまた、深度マップコード化ツールのために使用され得る。その上、GDVは、異なるビューにおいて対応するブロック間の視差について正確な表現を提供していない。例えば、1つのビュー内のピクチャにおける2つのブロックは、別のビュー内のピクチャにおいて異なる量だけ変位させられることがある。GDVは、全ての画素に対して同じ視差ベクトルを割り当てるので、GDVは、2つのブロックの視差の異なる量を正確に規定しない。
[0037]視差ベクトルは、ビュー間動き予測、ビュー間残差予測など、幾つかのコード化ツールにおいて使用され得る。例えば、ビュー間動き予測は、視差ベクトルが2つの方法において使用され得る一例である。第1の方法では、ビュー間動き予測に対して、現在ブロックの視差ベクトルが指すブロックに対する動きベクトルは、現在ブロックの動きベクトルに対する複数の潜在的動きベクトル予測子の動きベクトル予測子であり得る。ビデオコーダがこの動きベクトル予測子(例えば、現在ブロックの視差ベクトルによって指されるブロックの動きベクトル)を選択するとき、ビデオコーダは、マージモード又はスキップモード(単純化するために、以下の説明では、マージモードとスキップモードの両方を示すために、マージモードが使用される)における現在ブロックの動きベクトルとしてこの動きベクトル予測子を使用し得、拡張型動きベクトル予測(AMVP)モードにおいて現在ブロックの動きベクトルを決定するためにこの動きベクトル予測子を使用し得る。この場合、視差ベクトルから変換された動きベクトルは、AMVPモード又はマージモードに対する追加の候補として使用される。第2の方法では、ビュー間動き予測に対して、視差ベクトルが、参照ビュー内の1つの対応するブロックの位置を特定するために使用され、対応するブロックの動き情報が、AMVPモード又はマージモードに対する候補に変換され得る。
[0038]例えば、マージモードの例では、ビデオコーダは、現在ブロックの動きベクトルとして動きベクトル予測子を設定し、現在ブロックをインター予測するために、動きベクトル予測子によって指される参照ピクチャを使用することができる。AMVPモードでは、ビデオコーダは、動きベクトル予測子と現在ブロックの実際の動きベクトルとの間の残差をコード化することができる。この例では、ビデオコーダは、現在ブロックの動きベクトルを決定するために、動きベクトル予測子に残差を加算するか、又は動きベクトル予測子から残差を減算する。また、AMVPモードでは、ビデオコーダは、現在ブロックをインター予測するために使用される参照ピクチャを識別するために、第1及び第2の参照ピクチャリストのうちの少なくとも一方の中に参照インデックスをコード化する。
[0039]必ずしも深度マップを導出する必要なく視差ベクトルを決定することによって、ビデオコーダは、視差ベクトルを決定するためにビデオコーダが最初に深度マップを導出する場合の例と比較してより効率的な方式で、視差ベクトルが指すブロックに対する動きベクトルを決定するように構成され得る。更に、GDVに依存しないことによって、ビデオコーダは、決定された視差ベクトルを用いてより正確な視差の量を提供するように構成され得、ここで決定された視差ベクトルは、動きベクトルがマージモード又はAMVPモードにおいて使用されるべきであるブロックをより正確に規定する。視差が指すブロックに対する動きベクトルは、マージモード及びAMVPモードにおける現在ブロックに対する潜在的動きベクトル予測子であるので、本開示で説明する技法では、ビデオコーダは、幾つかの他の技法と比較してより効率的な方式でマージモードとAMVPモードとを実装するように構成され得る。
[0040]幾つかの例では、ビデオコーダは、視差ベクトルの候補リストに基づいてブロックに対する視差ベクトルを決定するように構成される。例えば、深度マップを導出し、深度マップから視差ベクトルを導出するのではなく、幾つかの例では、ビデオコーダは、候補視差ベクトルのリストを構築し、候補視差ベクトルのうちの1つを選択し、選択された候補視差ベクトルに基づいて現在ブロックに対する視差ベクトルを決定する。ビデオコーダが候補視差ベクトルのうちの1つを選択する様々な方法が存在し得、本開示で説明する説明する技法は、候補視差ベクトルを選択するための特定の方法に限定されない。
[0041]必ずしも深度マップを導出することなく視差ベクトルを決定することは、幾つかのタイプのピクチャに対するビュー間動き予測/ビュー間残差予測など、幾つかのコード化ツールを可能にし得る。例えば、ビュー間動き予測は、本開示で説明する技法を使用する瞬時デコーダリフレッシュ(IDR)ピクチャ及びクリーンランダムアクセス(CRA)ピクチャなど、ランダムアクセスポイント(RAP)ピクチャに適用され得る。幾つかの他の技法(例えば、本開示で説明する技法によらない技法)では、RAPピクチャは、推定されるRAPピクチャの深度マップを導出するために完全に復号されなければならず、かつ視差ベクトルは推定された深度マップに依存するので、ビュー間動き予測は、幾つかの非ベースビュー(例えば、従属ビュー(dependent view))内のRAPピクチャに適用されないことがある。深度マップを必要とすることなく視差ベクトルを導出することによって、本開示で説明する技法は、非ベースビューのRAPピクチャに対するビュー間動き予測を可能にし得る。
[0042]幾つかの例では、ビデオコーダは、空間的及び時間的隣接ブロックに基づいて候補視差ベクトルのリストを構築する。例えば、現在ブロックに対して空間的又は時間的に隣接するブロックがビュー間予測を使用した場合、そのようなブロックに対する視差動きベクトルは、候補視差ベクトルとして潜在的に含まれ得る。ビュー間予測は、現在ブロックをインター予測するために使用される参照ブロックを含む参照ピクチャが、現在ブロックを含む現在ピクチャが位置するビューと異なるビュー内に位置するインター予測を指す。視差動きベクトルは、第2の異なるビュー内のピクチャにおけるブロックを指す、第1のビュー内のピクチャにおけるブロックに対するベクトルである。
[0043]上記で説明したように、本開示で説明する技法によれば、候補視差ベクトルのリストを構築することにおいて、ビデオコーダは、空間的及び時間的隣接ブロックに対する動きベクトル情報が記憶される方式を構成し得る。例えば、時間的隣接ブロックを含む参照ピクチャに対して、ビデオコーダは、あらゆる例において参照ピクチャ内の4×4ブロックの各々に対する動きベクトルを記憶するとは限らないが、幾つかの例において参照ピクチャ内の4×4ブロックの各々に対する動きベクトルを記憶することがある。幾つかの例では、ビデオデコーダは、16×16領域(ここで16×16領域は16の4×4ブロックを含む)に対して1つの参照ピクチャリスト内の1つの動きベクトルを記憶するように構成され得る。16×16領域に対するこの1つの動きベクトルは、参照ピクチャリスト内の領域内の16の4×4ブロックの各々に対する単一の動きベクトルと見なされ得る。
[0044]簡単のために、以下の説明では、領域に対する動きベクトルは、1つの参照ピクチャリストの動きベクトルを表す。同じく、参照ピクチャからであれ、現在ピクチャの中からであれ、領域は1つ又は複数のブロックを含み得る。説明を簡単にするために、技法は、領域が2つ以上のブロックを含む例を用いて説明されるが、領域は1つ又は複数のブロックを含み得ることを理解されたい。
[0045]上記の例では、参照ピクチャ内の16×16領域内の4×4ブロックの各々は、異なる動きベクトルによってコード化され得るが、ビデオコーダが動きベクトル情報を記憶するとき、16×16領域内の4×4ブロックの各々に対する個別の動きベクトル情報は失われ、4×4ブロックの各々に対して同じである1つの動きベクトルで置き換えられる。16×16領域内に動きベクトルを記憶することの別の利点は、メモリ要件が著しく低減される(即ち、16×16領域内の4×4ブロックの各々に対して動きベクトルを記憶する必要がない)ことである。ビデオコーダが16×16領域に対する単一の動きベクトルを決定する、異なる方法が存在し得、本開示で説明する技法は、ビデオコーダが16×16領域に対して単一の動きベクトルを決定する特定の方法に限定されない。
[0046]ビデオコーダが、ブロックごとではなく、領域に対して動きベクトルを記憶する例では、ビデオコーダが、現在ブロックに時間的に隣接するあらゆる単一の4×4ブロックの動きベクトル情報を決定することは、必ずしも必要でない。例えば、候補視差ベクトルを決定するために、ビデオコーダは、参照ピクチャ内の下記の位置、即ち現在ブロックに同一位置に配置された(co-located)領域と、同一位置に配置された領域をカバーするより大きいコード化単位(LCU)領域内のブロックと、右下のブロックとを検査することができる。しかしながら、これらの検査されたエリアの全てに対する動きベクトル情報は、ビデオコーダが動きベクトル情報を記憶した方式に起因して、同じであることが起こり得る。従って、ビデオコーダは、現在ブロックに対する候補視差ベクトルを決定するために、これらのブロックの全てに対して動きベクトル情報を決定する必要はないことがある。
[0047]代わりに、ビデオコーダは、16×16領域に対する動きベクトル情報を決定し得る。この16×16領域に対する動きベクトルが視差動きベクトルである場合、この視差動きベクトルは、現在ブロックに対する視差ベクトルを決定するために使用される候補視差ベクトルであり得る。この例では、16×16領域は、4×4の時間的隣接ブロックの各々よりサイズが大きい。同じく、16×16領域は、現在ブロックのサイズよりサイズが大きい。ビデオコーダは、ブロックごとに、4×4の時間的隣接ブロックを検査し得ることを理解されたい。
[0048]上記の例では、ビデオコーダは、現在ブロックに時間的に隣接する領域に基づいて候補視差ベクトルを決定する。上記で説明したように、幾つかの例では、ビデオコーダはまた、いずれかの空間的隣接ブロックがビュー間予測されるかどうか評価し、現在ブロックの視差ベクトルに対する候補としてこれらの空間的隣接ブロックに対する視差動きベクトルを使用する。時間的隣接ブロックを有する場合と同様に、幾つかの例では、ビデオコーダは、空間的隣接ブロックに対して全ての動きベクトル情報を記憶するとは限らない。
[0049]例えば、現在ブロックを含むライン上のライン内のブロックをインター予測している間、ビデオコーダは、ラインバッファにおけるこのライン(即ち、現在ブロックを含むラインの上のライン)内のブロックに対する動きベクトル情報を記憶する。ラインバッファにおいて、ビデオコーダは、4×4ブロックの各々に対する動きベクトル情報の全てを記憶するとは限らない。そうではなく、2つのブロックが、同じ動きベクトル情報を共有することがある。しかしながら、同じ動きベクトル情報を共有する2つのブロックは、全ての例において必要であるとは限らず、ビデオコーダは、4×4ブロックの各々に対して動きベクトル情報の全てを記憶することがある。
[0050]例えば、ライン内に配列された4つの4×4ブロックが存在するものと仮定する。ライン内に配列されたこれらの4つの4×4ブロックの各々に対して動きベクトルが存在することがあり、これらの4つの4×4ブロックに対する動きベクトルが異なることがある。
[0051]この例では、第1及び第2の4×4ブロックに対する動きベクトルは異なることがあるが、記憶するときに、第1及び第2の4×4ブロックは同じ動きベクトル情報を共有し、ビデオコーダは、ラインバッファ内のこれらのブロックの両方に対して1つの動きベクトルを記憶する。この1つの動きベクトルは、第1及び第2の4×4ブロックに対する単一の動きベクトルを表す。
[0052]幾つかの例では、ビデオコーダは、第1と第2の両ブロックに対する動きベクトルとして第1のブロックに対する動きベクトル情報を記憶し、それにより、第2の4×4ブロックに対する動きベクトル情報は失われ、第1の4×4ブロックに対する動きベクトル情報が保存される。同じく、この例では、第3及び第4の4×4ブロックに対する動きベクトルは異なることがあるが、記憶するときに、第3及び第4の4×4ブロックは同じ動きベクトル情報を共有し、ビデオコーダは、ラインバッファ内のこれらの両ブロックに対して1つの動きベクトルを記憶できる。この1つの動きベクトルは、第3及び第4の4×4ブロックに対する単一の動きベクトルを表す。幾つかの例では、ビデオコーダは、第3と第4の両ブロックに対する動きベクトルとして第4のブロックに対する動きベクトル情報を記憶し、それにより、第2の4×4ブロックに対する動きベクトル情報は失われ、第4の4×4ブロックに対する動きベクトル情報が保存される。
[0053]幾つかの例では、記憶される動きベクトル情報は、第1及び第2の4×4ブロック、又は第3及び第4の4×4ブロックから導出され得、導出された動きベクトル情報は、2つのブロックのうちのいずれかの一方と同一でないことがある。概して、ビデオコーダは、ラインバッファに記憶される必要がある動きベクトル情報を低減するためにいずれかの技法を使用し得、上記で説明した(例えば、2つのブロックの動きベクトル情報として1つのブロックに対する動きベクトル情報を記憶する、又は2つのブロックに対する動きベクトル情報を導出する)技法が例として提供されているが、限定と見なされるべきではない。
[0054]上記の例では、ビデオコーダは、現在ブロックを含むラインの上のライン内の8×4領域に対する動きベクトル情報を記憶し、ここで8×4領域の各々は、2つの4×4ブロックを含む。この場合、ビデオコーダは、現在ブロックに空間的に隣接するブロックの中のあらゆる単一の4×4ブロックに対する動きベクトル情報を、必ずしも決定する必要があるとは限らない。例えば、空間的隣接ブロックのうちの幾つかに対する動きベクトル情報は同じであることが起こり得る。この例では、ブロックのうちの1つだけに対する動きベクトル情報を決定することが、どの候補が候補視差ベクトルのリストに含まれ得るかを決定するのに十分であることがある。
[0055]言い換えれば、ビデオコーダは、空間的隣接ブロックの中の4×4ブロックに対する動きベクトル情報を決定することはない。そうではなく、ビデオコーダは、(この例では)8×4領域に対する動きベクトル情報を決定し得、ここで8×4領域は、現在ブロックにそれぞれ空間的に隣接している2つの4×4ブロックを含む(例えば、2つの4×4ブロックを表す単一の動きベクトル)。この8×4領域に対する動きベクトルが視差動きベクトルである場合、この視差動きベクトルは、現在ブロックに対する視差ベクトルを決定するために使用される候補視差ベクトルであり得る。この例では、8×4領域は、4×4の空間的隣接ブロックの各々よりサイズが大きい。同じく、8×4領域は、現在ブロックのサイズよりサイズが大きいことがある。
[0056]その上、本開示で説明する技法は、幾つかのビデオコード化技法に存在する他の問題を克服することができる。例えば、空間的及び時間的隣接ブロックに対する視差動きベクトルは、水平成分と垂直成分の両方(例えば、x座標とy座標の両方)を含み得る。しかしながら、視差ベクトルの幾つかの例は、水平成分だけを含む。それ故、幾つかの例では、空間的及び時間的隣接ブロックの視差動きベクトルを使用するとき、ビデオコーダは、y座標値を0に設定することがあり、それにより候補視差ベクトルはx座標だけを含む。やはり、全ての視差ベクトルが、必ずしも水平成分だけを含む必要があるとは限らず、水平成分と垂直成分の両方を含むこともある。
[0057]逆に、以下でより詳細に説明するように、視差ベクトルが視差動きベクトルとして使用されるとき、視差動きベクトルはy成分を含まない。しかしながら、幾つかの例では、その位置が予測されているブロックと正確に同じy座標にないブロックから現在ブロックをビュー間予測することが有利であることがある。言い換えれば、ビュー間予測されているブロックから水平にだけ変位されている、参照ビュー内の参照ピクチャにおけるブロックは、必ずしも予測のために最良のブロックであるとは限らない。この場合、参照ビュー内の参照ピクチャにおける水平に変位されたブロックの上又は下のいずれかにあるブロックを識別するために、視差動きベクトルがy座標を含むことが望ましい。幾つかの例では、本開示で説明する技法は、視差動きベクトルが視差ベクトルから導出されるとき、視差動きベクトルがy座標を含むことを可能にする。
[0058]図1は、本開示で説明する1つ又は複数の例による、例示的なビデオ符号化システムとビデオ復号システムとを示すブロック図である。例えば、システム10は発信源機器12と宛先機器14とを含む。発信源機器12及び宛先機器14が、異なるビューのピクチャをそれぞれコード化するマルチビューコード化(MVC)を実装するように、発信源機器12及び宛先機器14が構成される。異なるビューのピクチャが一緒に見られるとき、ビューアは、表示器の2Dエリアに制約される画像の代わりに、3Dの体積を包含する画像を知覚する。
[0059]システム10は、異なるビデオコード化規格、プロプライエタリ規格、又はマルチビューコード化の他の方法に従って動作できる。下記は、ビデオコード化規格の数例を説明しており、限定と見なされるべきではない。ビデオコード化規格は、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の最新のジョイントドラフトは、「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2010年3月に記載されている。MVCの更に最近の公的に入手可能なジョイントドラフトは、「Advanced video coding for generic audiovisual services」、ITU−T勧告H.264、2012年6月に記載されている。MVCの現在のジョイントドラフトは、2012年1月時点で承認されている。
[0060]更に、ITU−T Video Coding Experts Group(VCEG)とISO/IEC Motion Picture Experts Group(MPEG)とのJoint Collaboration Team on Video Coding(JCT−VC)によって開発されている新しいビデオコード化規格、即ち、高効率ビデオコード化(HEVC)がある。HEVC WD9と呼ばれる、HEVCの最近の作業ドラフトが、2013年3月6日時点で、http://phenix.int−evry.fr/jct/doc_end_user/documents/11_Shanghai/wg11/JCTVC−K1003−v10.zipから入手可能である。
[0061]単に例示のために、本開示で説明する技法が、H.264及びHEVCの規格による例とともに説明される。幾つかの例では、本開示で説明する技法は、H.264 3D−AVC規格、H.264 MVC+Depth(H.264 MVC+D)規格、及び3D−HEVC規格に対して適用可能であり得る。しかしながら、本開示で説明する技法は、これらの例示的な規格に限定されると見なされるべきではなく、マルチビューコード化又は3Dビデオコード化に対する他のビデオコード化規格、若しくは必ずしも特定のビデオコード化規格に基づくとは限らないマルチビューコード化又は3Dビデオコード化に関連する技法に拡張可能であり得る。例えば、本開示で説明する技法は、マルチビューコード化に対するビデオエンコーダ/デコーダ(コーデック)によって実装され、ここでマルチビューコード化は、2つ以上のビューのコード化を含む。
[0062]図1に示すように、システム10は、宛先機器14によって後で復号されるべき符号化ビデオデータを生成する発信源機器12を含む。発信源機器12及び宛先機器14は、所謂「スマート」フォン、所謂「スマート」パッドなどのワイヤレスハンドセット、又はワイヤレス通信用に装備される他のそのようなワイヤレス機器を含む、広範な機器のうちのいずれかを備える。発信源機器12及び宛先機器14の更なる例には、デジタルテレビジョン、デジタルダイレクトブロードキャストシステム内の機器、ワイヤレスブロードキャストシステム内の機器、携帯情報端末(PDA)、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、電子ブックリーダ、デジタルカメラ、デジタル記録機器、デジタルメディアプレーヤ、ビデオゲーム機器、ビデオゲームコンソール、セルラー無線電話、衛星無線電話、ビデオ遠隔会議機器、及びビデオストリーミング機器などが含まれるが、それらに限定されない。
[0063]宛先機器14は、リンク16を介して復号されるべき符号化ビデオデータを受信することができる。リンク16は、発信源機器12から宛先機器14に符号化ビデオデータを移動することが可能な任意のタイプの媒体又は機器を備える。一例では、リンク16は、発信源機器12が、符号化されたビデオデータをリアルタイムで宛先機器14に直接送信することを可能にするための、通信媒体を備える。符号化されたビデオデータは、ワイヤレス通信プロトコルなどの通信規格に従って変調され、宛先機器14に送信され得る。通信媒体は、高周波(RF)スペクトル若しくは1つ又は複数の物理伝送線路など、任意のワイヤレス又は有線通信媒体を備え得る。通信媒体は、ローカルエリアネットワーク、ワイドエリアネットワーク、又はインターネットのようなグローバルネットワークなど、パケットベースネットワークの一部を形成し得る。通信媒体は、発信源機器12から宛先機器14への通信を可能にするために有用であり得る、ルータ、スイッチ、基地局、又は任意の他の機器を含み得る。
[0064]幾つかの例では、符号化データは、出力インターフェース22から記憶装置33に出力される。同様に、符号化データは、入力インターフェース28によって記憶装置33からアクセスされる。記憶装置33の例は、ハードドライブ、ブルーレイ(登録商標)ディスク、DVD、CD−ROM、フラッシュメモリ、揮発性若しくは不揮発性メモリ、又は符号化ビデオデータを記憶するための任意の他の好適なデジタル記憶媒体のような、種々の分散された又はローカルにアクセスされるデータ記憶媒体のいずれかを含む。更なる一例では、記憶装置33は、発信源機器12によって生成された符号化ビデオを保持するファイルサーバ又は別の中間記憶装置に対応する。これらの例では、宛先機器14は、ストリーミング又はダウンロードを介して記憶装置33から、記憶されたビデオデータにアクセスする。ファイルサーバは、符号化ビデオデータを記憶し、その符号化ビデオデータを宛先機器14に送信することが可能な任意のタイプのサーバである。例示的なファイルサーバは、(例えば、ウェブサイトのための)ウェブサーバ、FTPサーバ、ネットワーク接続ストレージ(NAS)機器、又はローカルディスクドライブを含む。宛先機器14は、インターネット接続を含む任意の標準データ接続を介して、符号化ビデオデータにアクセスする。これは、ファイルサーバに記憶された符号化ビデオデータにアクセスするのに好適であるワイヤレスチャネル(例えば、Wi−Fi(登録商標)接続)、ワイヤード接続(例えば、DSL、ケーブルモデムなど)、又は両方の組合せを含み得る。記憶装置33からの符号化ビデオデータの送信は、ストリーミング送信、ダウンロード送信、又は両方の組合せであり得る。
[0065]本開示の技法は、必ずしもワイヤレス適用例又は設定に限定されるとは限らない。本技法は、無線を通じたテレビジョン放送、ケーブルテレビジョン送信、衛星テレビジョン送信、(例えばインターネットを介した)ストリーミングビデオ送信、データ記憶媒体に記憶するためのデジタルビデオの符号化、データ記憶媒体に記憶されたデジタルビデオの復号、又は他の用途など、種々のマルチメディア用途のいずれかをサポートするビデオコード化に適用され得る。幾つかの例では、システム10は、ビデオストリーミング、ビデオ再生、ビデオブロードキャスティング、及び/又はビデオテレフォニーなどの適用例をサポートするために、一方向又は双方向のビデオ送信をサポートするように構成される。
[0066]図1の例では、発信源機器12は、ビデオ発信源18と、ビデオエンコーダ20と、出力インターフェース22とを含む。場合によっては、出力インターフェース22は、変調器/復調器(モデム)及び/又は送信機を含む。発信源機器12において、ビデオ発信源18は、(例えばビデオカメラなどの)撮像装置、以前に撮影されたビデオを含んでいるビデオアーカイブ、ビデオコンテンツプロバイダからビデオを受信するためのビデオフィードインターフェース、及び/又は発信源ビデオとしてコンピュータグラフィックスデータを生成するためのコンピュータグラフィックスシステムなどの発信源、そのような発信源の組合せ、又は任意の他の発信源のうちの1つ又は複数を含む。一例として、ビデオ発信源18がビデオカメラである場合、発信源機器12及び宛先機器14は、所謂カメラフォン又はビデオフォンを形成し得る。但し、本開示で説明する技法は、概してビデオコード化に適用可能であり得、ワイヤレス及び/又はワイヤード適用例に適用される。
[0067]ビデオエンコーダ20は、撮影されたビデオ、以前に撮影されたビデオ、又はコンピュータ生成されたビデオを符号化する。発信源機器12の出力インターフェース22は、符号化されたビデオデータを宛先機器14に送信するように構成される。符号化ビデオデータは、更に(又は代替として)、復号及び/又は再生のための宛先機器14又は他の機器による後のアクセスのために記憶装置33上に記憶され得る。
[0068]宛先機器14は、入力インターフェース28と、ビデオデコーダ30と、表示装置32とを含む。幾つかの場合、入力インターフェース28は、受信機及び/又はモデムを含む。宛先機器14の入力インターフェース28は、リンク16を介して、又は記憶装置33から符号化ビデオデータを受信する。リンク16を介して通信され、又は記憶装置33上に与えられた符号化ビデオデータは、ビデオデータを復号する際に、ビデオデコーダ30など、ビデオデコーダが使用するためのビデオエンコーダ20によって生成される様々なシンタックス要素を含む。そのようなシンタックス要素は、通信媒体上で送信されるか、記憶媒体上に記憶されるか、又はファイルサーバ上に記憶される符号化ビデオデータとともに含まれ得る。
[0069]表示装置32は、宛先機器14と一体化されるか又はその外部にあり得る。幾つかの例では、宛先機器14は、一体型表示装置を含み、また、外部表示装置とインターフェースするように構成される。他の例では、宛先機器14は表示装置である。概して、表示装置32は、復号されたビデオデータをユーザに対して表示し、液晶表示器(LCD)、プラズマ表示器、有機発光ダイオード(OLED)表示器、又は別のタイプの表示装置など、様々な表示装置のいずれかを備える。
[0070]ビデオエンコーダ20及びビデオデコーダ30は、上記に記載した例など、様々なビデオコード化規格に従って動作し得る。しかしながら、本開示で説明する技法は、そのように限定さるものと見なされるべきではない。説明のために、ビデオエンコーダ20及びビデオデコーダ30は、HEVC又はH.264の規格及びそのような規格の拡張のコンテキストの中で説明され、H.264 3D−AVC規格、H.264 MVC+D規格、及び3D−HEVC規格などの規格に適用され得る。但し、本開示の技法は、いかなる特定のコード化規格にも限定されない。ビデオ圧縮規格の他の例には、MPEG−2及びITU−T H.263がある。On2 VP6/VP7/VP8と呼ばれるものなど、プロプライエタリなコード化技法もまた、本明細書で説明する技法のうちの1つ又は複数を実施し得る。
[0071]図1には示されていないが、幾つかの態様では、ビデオエンコーダ20及びビデオデコーダ30は、それぞれオーディオエンコーダ及びデコーダと統合され、適切なMUX−DEMUXユニット、又は他のハードウェア及びソフトウェアを含んで、共通のデータストリーム又は別個のデータストリーム中のオーディオとビデオの両方の符号化を処理する。適用可能な場合、幾つかの例では、MUX−DEMUXユニットは、ITU H.223マルチプレクサプロトコル、又はユーザデータグラムプロトコル(UDP)などの他のプロトコルに準拠する。
[0072]ビデオエンコーダ20及びビデオデコーダ30はそれぞれ、1つ又は複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディスクリート論理、ソフトウェア、ハードウェア、ファームウェアなど、様々な好適なエンコーダ回路のいずれか、又はそれらの任意の組合せとして実装され得る。本技法が部分的にソフトウェアで実装されるとき、機器は、好適な非一時的コンピュータ可読媒体にソフトウェアの命令を記憶し、1つ又は複数のプロセッサを使用してその命令をハードウェアで実行して、本開示の技法を実行し得る。ビデオエンコーダ20及びビデオデコーダ30の各々は1つ又は複数のエンコーダ又はデコーダ中に含まれ得、そのいずれも、それぞれの機器において複合エンコーダ/デコーダ(コーデック)の一部として統合され得る。本開示で説明する技法によって、ビデオエンコーダ20はビデオデータを符号化するように構成され、ビデオデコーダ30はビデオデータを復号するように構成される。
[0073]図2は、本開示で説明する1つ又は複数の例による、例示的なマルチビュービデオコード化(MVC)の符号化又は復号の順序を示すグラフィック図である。例えば、図2に示された復号順序配置は、時間第1コード化と呼ばれる。図2では、S0〜S7は、各々マルチビュービデオの異なるビューを指す。T0〜T8は、それぞれ1つの出力時間インスタンスを表す。アクセス単位は、1つの出力時間インスタンスについての全てのビューのコード化ピクチャを含み得る。例えば、第1のアクセス単位は、時間インスタンスT0(即ち、ピクチャ0〜7)についてのビューS0〜S7の全てを含み、第2のアクセス単位は、時間インスタンスT1(即ち、ピクチャ8〜15)についてのビューS0〜S7の全てを含み、以下同様である。この例では、ピクチャ0〜7は、同じ時間インスタンス(即ち、時間インスタンスT0)におけるものであり、ピクチャ8〜15は、同じ時間インスタンス(即ち、時間インスタンスT1)におけるものである。同じ時間インスタンスを有するピクチャは概して同時に表示され、3D体積を包含する画像をビューアに知覚させるものは、同じ時間インスタンスの複数のピクチャ内の対象物間の水平視差と、場合によっては何らかの垂直視差である。
[0074]図2では、ビューの各々はピクチャのセットを含む。例えば、ビューS0は、ピクチャ0、8、16、24、32、40、48、56、及び64のセットを含み、ビューS1は、1、9、17、25、33、41、49、57、及び65のセットを含み、以下同様である。各セットは2つのピクチャを含み、一方のピクチャはテクスチャビューコンポーネントと呼ばれ、他方のピクチャは深度ビューコンポーネントと呼ばれる。ビューのピクチャのセット内のテクスチャビューコンポーネントと深度ビューコンポーネントは、互いに対応すると考えることができる。例えば、ビューのピクチャのセット内のテクスチャビューコンポーネントは、ビューのピクチャのセット内の深度ビューコンポーネントに対応すると考えられ、その逆も真である(即ち、深度ビューコンポーネントはセット内のそのテクスチャビューコンポーネントに対応し、その逆も真である)。本開示で使用されるように、深度ビューコンポーネントに対応するテクスチャビューコンポーネントは、単一のアクセス単位の同じビューの一部であるテクスチャビューコンポーネントと深度ビューコンポーネントと考えることができる。
[0075]テクスチャビューコンポーネントは、表示される実際の画像コンテンツを含む。例えば、テクスチャビューコンポーネントは、ルーマ(Y)成分と、クロマ(Cb及びCr)成分とを含むことができる。深度ビューコンポーネントは、その対応するテクスチャビューコンポーネント内の画素の相対深度を示すことができる。一例として、深度ビューコンポーネントは、ルーマ値のみを含むグレースケール画像と見なされ得る。言い換えれば、深度ビューコンポーネントは、いかなる画像コンテンツも伝達することができないが、むしろテクスチャビューコンポーネント内の画素の相対深度の測度を提供することができる。
[0076]例えば、深度ビューコンポーネント内の純白の画素は、対応するテクスチャビューコンポーネント内のその対応する1つ又は複数の画素が見る人の視点からより近いことを示し、深度ビューコンポーネント内の純黒の画素は、対応するテクスチャビューコンポーネント内のその対応する1つ又は複数の画素が見る人の視点から更に離れていることを示す。黒と白の中間にあるグレーの様々な陰影は、異なる深度レベルを示す。例えば、深度ビューコンポーネント内の非常にグレーな画素は、テクスチャビューコンポーネント内のその対応する画素が、深度ビューコンポーネント内のわずかにグレーな画素よりも更に離れていることを示す。画素の深度を識別するためにグレースケールだけが必要とされるために、深度ビューコンポーネントは、深度ビューコンポーネント用の色値がいかなる目的にも働くことができないので、クロマ成分を含む必要がない。
[0077]ルーマ値(例えば、強度値)のみを使用して深度を識別する深度ビューコンポーネントは、例示のために提供され、限定的であると考えられるべきでない。一般に、テクスチャビューコンポーネント内の画素の相対深度を示すために、いずれかの技法が使用される場合がある。
[0078]MVCによれば、テクスチャビューコンポーネントは、同じビューであるが異なるアクセス単位内のテクスチャビューコンポーネントから、又は、同じアクセス単位内だが1つ又は複数の異なるビュー内のテクスチャビューコンポーネントからインター予測される。テクスチャビューコンポーネントは「ビデオブロック」と呼ばれ、H.264のコンテキストでは通常「マクロブロック」と呼ばれるビデオデータのブロック内でコード化される場合がある。HEVC規格など、他のビデオコード化規格は、ビデオブロックをツリーブロック又はコード化単位(CU)と呼ぶ場合がある。
[0079]同じ時間インスタンス内のピクチャにおけるビデオコンテンツは同様であり得る。しかしながら、ビデオコンテンツは、水平方向に、場合によっては垂直方向にも、わずかに変位され得る。例えば、ブロックがビューS0のピクチャ0における(x、y)に位置する場合、ビューS1のピクチャ1における(x+x’、y)に位置するブロックは、ビューS0のピクチャ0における(x、y)に位置するブロックと同様のビデオコンテンツを含む。この例では、ビューS0のピクチャ0における(x、y)に位置するブロック及びビューS1のピクチャ1における(x+x’、y)に位置するブロックは、対応するブロックと見なされる。幾つかの例では、ビューS1のピクチャ1において(x+x’、y)に位置するブロックに対する視差ベクトルは、それの対応するブロックの位置を指す。例えば、(x+x’、y)に位置するブロックに対する視差ベクトルは、(−x’、0)である。
[0080]幾つかの例では、ビデオエンコーダ20又はビデオデコーダ30は、第2のビューのピクチャ内の対応するブロックを識別するために、第1のビューのピクチャ内のブロックの視差ベクトルを使用する。ビデオエンコーダ20又はビデオデコーダ30は、第1のビュー内のピクチャにおけるブロックの候補動き予測子のリスト内の候補動きベクトル予測子として、第2のビューのピクチャ内の識別された対応するブロックに対する動き情報を使用できる。幾つかの例では、ビデオエンコーダ20又はビデオデコーダ30は、第1のビュー内のピクチャにおけるブロックに対する動きベクトル予測子として、この候補動き予測子(例えば、第2のビューのピクチャ内のブロックに対する動き情報)を選択する。この例では、ビデオエンコーダ20又はビデオデコーダ30は、所謂マージモード又は拡張型動きベクトル予測(AMVP)モードによる動きベクトル予測子に基づいて、第1のビュー内のピクチャにおけるブロックに対する動きベクトルを決定し、両モードは下記でより詳細に説明される。幾つかの例では、視差ベクトルは、第1のビューの現在の残差情報を予測するために、第2のビュー内の残差ブロックの位置を特定するために使用され得る。
[0081]ビデオエンコーダ20又はビデオデコーダ30は、ブロックの視差ベクトルを決定するように構成される。幾つかの他の技法(即ち、本開示で説明する技法によるもの以外の技法)では、ビデオエンコーダ20又はビデオデコーダ30は、最初にテクスチャビューコンポーネントに対する深度ビューコンポーネントを導出し、次に、導出された深度ビューコンポーネントに基づいてテクスチャビューコンポーネント内のブロックに対する視差ベクトルを決定する。得られた視差ベクトルは、スムーズ時間ビュー予測された(STV)視差ベクトルと呼ばれる。同じく、幾つかの他の技法では、ビデオエンコーダ20及びビデオデコーダ30は、各画素に同じ視差ベクトルを割り当てるグローバル視差ベクトル(GDV)をコード化する。
[0082]しかしながら、深度ビューコンポーネントを導出することは複雑である(即ち、多大の処理と時間を要する)ことがある。本開示で説明する技法は、ビデオエンコーダ20及びビデオデコーダ30が、必ずしも最初に深度ビューコンポーネントを決定することなく、テクスチャビューコンポーネント内のブロックに対する視差ベクトルを決定することを可能にする。しかしながら、ビデオエンコーダ20及びビデオデコーダ30が最初に深度ビューコンポーネントを導出する場合でも、ビデオエンコーダ20及びビデオデコーダ30は、やはり、本開示で説明する技法を使用できる。幾つかの場合には、本開示で説明する技法は、深度マップコード化ツールとして有用であり得る。
[0083]同じく、GDVは、実際の視差ベクトルの正確な測度でないことがあり、従って動きベクトルが動きベクトル予測子として使用されるブロックを正確に指さないことがある。言い換えれば、GDVが指すブロックの動きベクトルは、実際の視差ベクトルが指すブロックの動きベクトルよりも正確でない動きベクトル予測子である。
[0084]図3は、例示的なMVC予測パターンを示すグラフィック図である。図3の例では、(ビューID「S0」〜「S7」を有する)8つのビューが示され、12個の時間位置(「T0」〜「T11」)がビューごとに示されている。即ち、図3中の各行はビューに対応し、各列は時間位置を示す。
[0085]MVCがH.264/AVCデコーダ又はHEVCデコーダによって復号可能である、所謂ベースビューを有し、また、ステレオビューペアがMVCによってもサポートされ得るが、MVCの利点は、MVCが、3Dビデオ入力として3つ以上のビューを使用し、複数のビューによって表されるこの3Dビデオを復号する例をサポートできることである。MVCデコーダ(例えば、H.264/MVCデコーダ又はHEVCデコーダ)を有するクライアントのレンダラは、複数のビューを用いて3Dビデオコンテンツを予想できる。
[0086]図3では、ビューS0はベースビューと見なされ、ビューS1〜S7は従属ビューと見なされる。ベースビューは、ビュー間予測されないピクチャを含む。ベースビュー内のピクチャは、同じビュー内の他のピクチャに関してインター予測され得る。例えば、ビューS0内のピクチャはいずれも、ビューS1〜S7のいずれかの中のピクチャに関してインター予測されないが、ビューS0内のピクチャの幾つかは、ビューS0内の他のピクチャに関してインター予測される。
[0087]従属ビューは、ビュー間予測されるピクチャを含む。例えば、ビューS1〜S7の各々は、別のビュー内のピクチャに関してインター予測される少なくとも1つのピクチャを含む。従属ビュー内のピクチャは、ベースビュー内のピクチャに関してインター予測され得るか、又は他の従属ビュー内のピクチャに関してインター予測され得る。
[0088]ベースビューと従属ビューの両方を含むことは、異なるタイプのビデオデコーダがピクチャを復号できることを確実にする。例えば、1つのタイプのビデオデコーダは、マルチビューコード化を処理するように構成されていない。ビデオデコーダのタイプは、依然としてベースビューを復号できる一方で、マルチビューコード化を処理するように構成されるビデオコーダは、ビューS0〜S7の各々を復号できる。
[0089]文書m22570及びm22571は、HEVCベース3Dコード化(3D−HEVC)に対する幾つかの技法を規定し、2013年3月6日時点で、パスワードを用いて、http://wg11.sc29.org/doc_end_user/documents/98_Geneva/wg11/m22570−v2−m22570−v2.zip;http://wg11.sc29.org/doc_end_user/documents/98_Geneva/wg11/m22571−v2−m22571−v2.zipから利用可能である。これらの文書で説明されるツールのうちの1つは、同じアクセス単位の他のビュー内のすでにコード化された動きパラメータに基づいて、従属ビュー内のブロックの動きパラメータ(即ち、動きベクトル及び参照インデックス)が、(例えば、AMVPモード又はマージモードで)予測又は推測される、ビュー間動き予測である。より詳細に説明するように、m22570及びm22571の文書で説明される技法には、幾つかの制限及び問題が存在することがある。本開示で説明する技法は、m22570及びm22571の文書で説明される技法における制限及び問題のうちの幾つかを潜在的に克服する。3D−HEVCに対する最新の参照ソフトウェア説明書は、Gerhard Tech、Krzysztof Wenger、Ying Chen、Sehoon Yeaの「3D−HEVC Test Model 1」、http://phenix.it−sudparis.eu/jct2/doc_end_user/documents/1_Stockholm/wg11/JCT3V−A1005−v1.zip. Stockholm、Sweden、2012年4月として利用可能である。3D−HEVCに対する最新の参照ソフトウェア、即ちHTMは、http://hevc.hhi.fraunhofer.de/svn/svn_3DVCSoftware/trunkから利用可能である。
[0090]図3内のピクチャは、図3内の各行及び各列の交点で示される。MVC拡張を有するH.264/AVC規格は、ビデオの一部分を表すために期間フレーム(term frame)を使用し得る一方で、HEVC規格は、ビデオの一部分を表すために期間ピクチャ(term picture)を使用し得る。本開示は、ピクチャという用語とフレームという用語とを互換的に使用する。
[0091]図3のピクチャは、対応するピクチャがイントラコード化される(即ち、Iフレームである)か、又は一方向に(即ち、Pフレームとして)、若しくは複数の方向に(即ち、Bフレームとして)インターコード化されるかを指定する、文字を含む影付きブロックを使用して示される。概して、予測は矢印によって示され、ここで矢印の終点のピクチャは、予測参照用に矢印の始点のピクチャを使用する。例えば、時間位置T0にあるビューS2のPピクチャは、時間位置T0にあるビューS0のIピクチャから予測される。
[0092]シングルビュービデオ符号化の場合と同様に、マルチビューコード化ビデオシーケンスのピクチャは、異なる時間位置にあるピクチャに対して予測符号化することができる。例えば、時間位置T1にあるビューS0のbピクチャは、時間位置T0にあるビューS0のIピクチャからそのbピクチャに向けられた矢印を有し、その矢印は、bピクチャがIピクチャから予測されることを示す。しかしながら、更に、マルチビュービデオ符号化のコンテキストにおいて、ピクチャはビュー間予測することができる。即ち、ビューコンポーネント(例えば、テクスチャビューコンポーネント)は、参照用の他のビュー内のビューコンポーネントを使用することができる。MVCでは、例えば、別のビュー内のビューコンポーネントがインター予測参照であるかのように、ビュー間予測が実現される。潜在的なビュー間参照は、シーケンスパラメータセット(SPS)MVC拡張においてシグナリングされ、インター予測又はビュー間予測参照のフレキシブルな順序付けを可能にする参照ピクチャリスト構成プロセスによって変更され得る。
[0093]図3は、ビュー間予測の様々な例を提供する。図3の例では、ビューS1のピクチャは、ビューS1の異なる時間位置にあるピクチャから予測されるものとして、及び同じ時間位置にあるビューS0及びビューS2のピクチャからビュー間予測されるものとして示されている。例えば、時間位置T1にあるビューS1のbピクチャは、時間位置T0及びT2にあるビューS1のBピクチャの各々、並びに時間位置T1にあるビューS0及びビューS2のbピクチャから予測される。
[0094]図3の例では、大文字「B」及び小文字「b」は、異なるコード化方法ではなく、ピクチャ間の異なる階層関係を示すために使用される。概して、大文字の「B」ピクチャは、小文字の「b」フレームよりも予測階層が比較的高い。図3はまた、異なるレベルの陰影を使用して予測階層の変形形態を示し、より大きい量の陰影の(即ち、比較的より暗い)フレームは、より少ない陰影を有する(即ち、比較的より明るい)それらのフレームよりも予測階層が高い。例えば、図3の全てのIピクチャは完全陰影を用いて示されるが、Pピクチャはいくぶん明るい陰影を有し、Bピクチャ(及び小文字のbピクチャ)は、互いに対して様々なレベルの陰影を有するが、Pピクチャ及びIピクチャの陰影よりも常に明るい。
[0095]概して、階層が比較的高いそれらのピクチャが、階層が比較的低いピクチャの復号中に参照ピクチャとして使用され得るように、予測階層が比較的高いピクチャは、階層が比較的低いピクチャを復号する前に復号されるべきであるという点で、予測階層はビュー順序インデックスに関係する。ビュー順序インデックスは、アクセス単位中のビューコンポーネントの復号順序を示すインデックスである。H.264/AVC(MVC追補)の付属書類Hにおいて規定されているように、ビュー順序インデックスは、シーケンスパラメータセット(SPS)のMVC拡張において暗示されている。SPSでは、インデックスiごとに、対応するview_idが通知される。ビューコンポーネントの復号は、ビュー順序インデックスの昇順に従う。全てのビューが提示された場合、ビュー順序インデックスは、0からnum_views_minus_1までの連続する順序になっている。
[0096]このようにして、参照ピクチャとして使用されるピクチャは、その参照ピクチャを参照して符号化されたピクチャを復号する前に復号される。ビュー順序インデックスは、アクセス単位中のビューコンポーネントの復号順序を示すインデックスである。ビュー順序インデックスiごとに、対応するview_idが通知される。ビューコンポーネントの復号は、ビュー順序インデックスの昇順に従う。全てのビューが提示された場合、ビュー順序インデックスのセットは、0からビューの全数よりも1少ない数までの連続的な順序付きセットを備え得る。
[0097]階層の等しいレベルにある幾つかのピクチャの場合、復号順序は、互いに重要でない場合がある。例えば、時間位置T0にあるビューS0のIピクチャは、時間位置T0にあるビューS2のPピクチャ用の参照ピクチャとして使用され、そのPピクチャは、今度は、時間位置T0にあるビューS4のPピクチャ用の参照ピクチャとして使用される。従って、時間位置T0にあるビューS0のIピクチャは、時間位置T0にあるビューS2のPピクチャの前に復号されるべきであり、そのPピクチャは、時間位置T0にあるビューS4のPピクチャの前に復号されるべきである。しかしながら、ビューS1及びS3は、予測のために互いに依拠しないが、代わりに、予測階層がより高いビューからのみ予測されるので、ビューS1とS3との間で復号順序は重要でない。その上、ビューS1がビューS0及びS2の後に復号される限り、ビューS1はビューS4の前に復号され得る。
[0098]このようにして、ビューS0〜S7を記述するために階層順序を使用することができる。表記法SA>SBは、ビューSAがビューSBの前に復号されるべきであることを意味する。この表記法を使用すると、図2の例では、S0>S2>S4>S6>S7である。また、図2の例に関して、S0>S1、S2>S1、S2>S3、S4>S3、S4>S5、及びS6>S5である。これらの要件に違反しないビューのための任意の復号順序が可能である。従って、幾つかの制限のみを有する、多くの異なる復号順序が可能である。
[0099]幾つかの例では、図3は、テクスチャビューコンポーネントを示すものとして見ることができる。所謂マージモード又はAMVPモードでビュー間動き予測を実装するためのこれらの例では、幾つかの場合、ビデオエンコーダ20又はビデオデコーダ30は、動きベクトル予測子として、インター予測されるべきである現在ブロックの視差ベクトルによって指されるブロックに対する動きベクトルを使用する。本開示で説明する技法は、必ずしも深度ビューコンポーネントを導出する必要なく、かつ必ずしもグローバル視差ベクトルに依存することなく、現在ブロックの視差ベクトルを決定する。
[0100]一般に、ビデオシーケンスは、ビュー(例えば、図2及び図3に示すビュー)からの一連のビデオピクチャを含む。ピクチャのグループ(GOP)は、概して、一連の1つ又は複数のビデオピクチャを備える。GOPは、GOP中に含まれる幾つかのピクチャを記述するシンタックスデータを、GOPのヘッダ中、GOPの1つ又は複数のピクチャのヘッダ中、又は他の場所に含み得る。各ピクチャは、それぞれのピクチャのための符号化モードを記述するピクチャシンタックスデータを含み得る。ビデオエンコーダ20は、一般に、ビデオデータを符号化するために、個々のビデオピクチャ内のビデオブロックに対して動作する。ビデオブロックは、H.264規格で規定されるマクロブロック、マクロブロックの区分、及び場合によっては区分のサブブロック、又はHEVC規格で規定される最大コード化単位(LCU:largest coding unit)、コード化単位(CU)、予測単位(PU)、若しくは変換単位(TU)に対応できる。ビデオブロックは、サイズを固定することも変更することもでき、指定のコード化規格に応じてサイズが異なることがある。各ビデオピクチャは複数のスライスを含み得る。各スライスは複数のブロックを含み得る。
[0101]一例として、ITU−T H.264規格は、ルーマ成分については16×16、8×8、又は4×4、及びクロマ成分については8×8など、様々なブロックサイズのイントラ予測をサポートし、並びにルーマ成分については16×16、16×8、8×16、8×8、8×4、4×8及び4×4、及びクロマ成分については対応するスケーリングされたサイズなど、様々なブロックサイズのインター予測をサポートする。本開示では、「N×(x)N」と「N×(by)N」は、垂直寸法及び水平寸法に関するブロックの画素寸法(例えば、16×(x)16画素又は16×(by)16画素)を指すために互換的に使用され得る。一般に、16×16ブロックは、垂直方向に16画素を有し(y=16)、水平方向に16画素を有する(x=16)。同様に、N×Nブロックは、一般に、垂直方向にN画素を有し、水平方向にN画素を有し、但し、Nは非負整数値を表す。ブロック中の画素は行と列に構成され得る。その上、ブロックは、必ずしも、水平方向において垂直方向と同じ数の画素を有する必要があるとは限らない。例えば、ブロックはN×M画素を備えてよく、但し、Mは必ずしもNに等しいとは限らない。
[0102]ブロックがイントラモード符号化される(例えば、イントラ予測される)とき、ブロックは、ブロック用のイントラ予測モードを記述するデータを含む場合がある。別の例として、ブロックがインターモード符号化される(例えば、インター予測される)とき、ブロックは、ブロックについての動きベクトルを定義する情報を含む場合がある。この動きベクトルは、同じビュー内の参照ピクチャを指すか、又は別のビュー内の参照ピクチャを指す。ブロックについての動きベクトルを定義するデータは、例えば、動きベクトルの水平成分と、動きベクトルの垂直成分と、動きベクトルの解像度(例えば、1/4画素精度又は1/8画素精度)とを記述する。加えて、インター予測されるとき、ブロックは、動きベクトルが指す参照ピクチャなどの参照インデックス情報、及び/又は動きベクトル用の参照ピクチャリスト(例えば、RefPicList0若しくはRefPicList1)を含む場合がある。
[0103]JCT−VCは、HEVC規格の開発に取り組んでいる。HEVC規格化の取り組みは、HEVCテストモデル(HM)と呼ばれるビデオコード化機器の発展的モデルに基づく。HMは、(例えば、ITU−T H.264/AVC)に従う既存の機器に対してビデオコード化機器の幾つかの追加の能力を仮定する。例えば、H.264は9つのイントラ予測符号化モードを提供するが、HMは33個もの方向性/角度イントラ予測符号化モードプラスDCモード及び平面モードを提供することができる。
[0104]HMの作業モデルは、ビデオピクチャが、ルーマとクロマの両方のサンプルを含む一連のツリーブロック又は最大コード化単位(LCU)に分割され得ることを記載する。ツリーブロックは、H.264規格のマクロブロックと同様の目的を有する。スライスは、コード化順序で幾つかの連続するツリーブロックを含む。ビデオピクチャは、1つ又は複数のスライスに区分され得る。各ツリーブロックは、4分木に従ってコード化単位(CU)に分割され得る。例えば、4分木のルートノードとしてのツリーブロックは、4つの子ノードに分割され得、各子ノードは、次に、親ノードとなり、別の4つの子ノードに分割され得る。4分木のリーフノードとしての、最終的な、分割されていない子ノードは、コード化ノード(即ち、コード化ビデオブロック)を備える。コード化ビットストリームに関連するシンタックスデータは、ツリーブロックが分割され得る最大回数を定義し得、コード化ノードの最小サイズをも定義し得る。ツリーブロックは、幾つかの例では、LCUと呼ばれる。
[0105]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は、形状が方形又は非方形であり得る。
[0106]HEVC規格は、CUごとに異なり得るTUに従う変換を可能にする。TUは、一般に、区分化されたLCUについて定義された所与のCU内のPUのサイズに基づいてサイズ決定されるが、常にそうであるとは限らない。TUは、一般にPUと同じサイズであるか又はPUよりも小さい。幾つかの例では、CUに対応する残差サンプルは、「残差4分木」(RQT:residual quad tree)として知られる4分木構造を使用してより小さい単位に再分割される。RQTのリーフノードは変換単位(TU)と呼ばれることがある。幾つかの例では、TUに関連する画素差分値は、変換されて変換係数が生成され、その変換係数は量子化される。
[0107]一般に、PUは、予測プロセスに関連したデータを含む。例えば、PUがイントラモード符号化されるとき、PUは、PUのイントラ予測モードを記述するデータを含む。別の例として、PUがインターモード符号化されるとき、PUは、PUのための動きベクトルを定義するデータを含む。PUについての動きベクトルを定義するデータは、例えば、動きベクトルの水平成分、動きベクトルの垂直成分、動きベクトルの解像度(例えば、1/4画素精度又は1/8画素精度)、動きベクトルが指す参照ピクチャ、及び/又は動きベクトル用の参照ピクチャリスト(例えば、RefList0又はRefPicList1)を記述する。
[0108]概して、TUは、変換プロセスと量子化プロセスとのために使用される。1つ又は複数のPUを有する所与のCUは、1つ又は複数の変換単位(TU)も含み得る。予測の後に、ビデオエンコーダ20は、PUに対応する残差値を計算し得る。残差値は、エントロピーコード化のためのシリアル化変換係数(serialized transform coefficient)を生成するために、TUを使用して変換係数に変換され、量子化され、走査され得る画素差分値を備える。本開示では、一般に、CUのコード化ノードを指すために「ビデオブロック」という用語を使用する。幾つかの特定の場合において、本開示では、コード化ノードならびにPU及びTUを含む、ツリーブロック、即ち、LCU又はCUを指す「ビデオブロック」という用語も使用し得る。
[0109]一例として、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を指す。
[0110]H.264規格又はHEVC規格のいずれでも、イントラ予測又はインター予測のコード化に続いて、ビデオエンコーダ20は、HEVCではCUのTU用の、又はH.264ではマクロブロック用の残差データを計算する。PUは、(画素領域とも呼ばれる)空間領域において画素データを備え、TUは、残差ビデオデータへのある変換(例えば、離散コサイン変換(DCT))、整数変換、ウェーブレット変換、又は概念的に同様の変換の適用後に、変換領域において係数を備える。残差データは、符号化されていないピクチャの画素と、HEVCでのPUに対応する予測値、又はH.264でのマクロブロックに関する予測値との間の画素差分に対応する場合がある。
[0111]幾つかの例では、変換係数を生成するための任意の変換の後に、ビデオエンコーダ20は、変換係数の量子化を実行する。量子化は、概して、更なる圧縮を提供する、係数を表すために使用されるデータの量をできるだけ低減するために変換係数を量子化するプロセスを指す。量子化プロセスは、係数の一部又は全部に関連するビット深度を低減する。例えば、量子化中にnビット値がmビット値に切り捨てられ、nはmよりも大きい。
[0112]幾つかの例では、ビデオエンコーダ20は、エントロピー符号化され得るシリアル化ベクトルを生成するために、量子化変換係数を走査するために予め定義された走査順序を利用する。他の例では、ビデオエンコーダ20は適応走査を実行する。量子化変換係数を走査して1次元ベクトルを形成した後に、幾つかの例では、ビデオエンコーダ20は、数例をあげると、コンテキスト適応型可変長コード化(CAVLC)、コンテキスト適応型バイナリ算術コード化(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コード化(SBAC)、確率間隔区分エントロピー(PIPE)コード化、又は別のエントロピー符号化方法に従って、1次元ベクトルをエントロピー符号化する。ビデオエンコーダ20はまた、ビデオデータを復号する際にビデオデコーダ30が使用するための符号化ビデオデータに関連するシンタックス要素をエントロピー符号化する。
[0113]CABACを実行するために、ビデオエンコーダ20は、送信されるべきシンボルに、コンテキストモデル内のコンテキストを割り当て得る。コンテキストは、例えば、シンボルの隣接値が非0であるか否かに関係し得る。CAVLCを実行するために、ビデオエンコーダ20は、送信されるべきシンボル用の可変長コードを選択することができる。VLCにおけるコードワードは、比較的短いコードが有望なシンボル(probable symbols)に対応し、より長いコードが有望でないシンボル(less probable symbols)に対応するように構成され得る。このようにして、VLCの使用は、例えば、送信されるべき各シンボルのために等長コードワードを使用するよりも、ビット節約を達成し得る。確率決定は、シンボルに割り当てられるコンテキストに基づく場合がある。
[0114]上記で説明したように、MVCでは、ビデオエンコーダ20及びビデオデコーダ30は、第2のビューの参照ピクチャ内の参照ブロックに関する第1のビューの現在ピクチャ内の現在ブロックをインター予測する。そのようなインター予測は、ビュー間予測と呼ばれる。現在ピクチャ及び参照ピクチャの時間インスタンスは、それぞれのビューにおいて同じであり得る。この例では、ビデオエンコーダ20又はビデオデコーダ30は、同じアクセス単位内のピクチャにわたってビュー間予測を実行し、ここで同じアクセス単位内のピクチャは、同じ時間インスタンスにおけるものである。
[0115]現在ブロックについてビュー間予測を実行するために、ビデオエンコーダ20又はビデオデコーダ30は、インター予測に対して使用され得る参照ピクチャを識別する参照ピクチャリストを、ビュー間予測に対して使用され得るピクチャを含めて構築する。インター予測は、参照ピクチャ内の参照ブロックに関して現在ピクチャ内の現在ブロックを予測することを指す。ビュー間予測は、ビュー間予測において、参照ピクチャが現在ピクチャのビューと異なるビュー内にある、インター予測のサブセットである。従って、ビュー間予測に対して、ビデオエンコーダ20及びビデオデコーダ30は、構築された参照ピクチャリストの一方又は両方に他のビュー内の参照ピクチャを追加する。他のビュー内の参照ピクチャは、構築された参照ピクチャリスト内の任意の位置において識別され得る。本開示で使用されるように、ビデオデコーダ20がブロックについてインター予測を実行している(例えば、インター予測している)とき、ビデオエンコーダ20は、ブロックをインター予測符号化していると見なされ得る。ビデオデコーダ30がブロックについてインター予測を実行している(例えば、インター予測している)とき、ビデオエンコーダ30は、ブロックをインター予測復号していると見なされ得る。
[0116]インター予測において、現在ブロックに対する動きベクトルは、現在ブロックをインター予測するための参照ブロックとして使用されるべきであるブロックの位置を識別し、構築された参照ピクチャリストの一方又は両方への参照インデックスは、現在ブロックをインター予測するための参照ブロックとして使用されるべきであるブロックを含む参照ピクチャを識別する。MVCでは、少なくとも2つのタイプの動きベクトルが存在する。時間動きベクトル(temporal motion vector)は時間参照ピクチャを指し、ここで時間参照ピクチャは、予測されるべきブロックを含むピクチャと同じビュー内のピクチャであり、時間参照ピクチャは、予測されるべきブロックを含むピクチャより早く又は遅く表示される。視差動きベクトルは、予測されるべきブロックを含むピクチャ内のビュー以外のビュー内の参照ピクチャを指す。本開示では、「動きベクトル」という用語は、時間動きベクトル又は視差動きベクトルのいずれか、若しくは時間動きベクトルのみ又は視差動きベクトルのみを指すことがあり、そのことは、記載のコンテキストの中で明確となる。
[0117]ビデオエンコーダ20又はビデオデコーダ30が時間動きベクトルを使用するとき、ビデオエンコーダ20及びビデオデコーダ30は、動き補償予測(MCP)を実装しているものと見なされる。ビデオエンコーダ20又はビデオデコーダ30が視差動きベクトルを使用するとき、ビデオエンコーダ20及びビデオデコーダ30は、視差補償予測(DCP)又はビュー間予測を実装しているものと見なされる。
[0118]通知される必要があるビデオデータの量を低減するために、必ずしも、ビデオエンコーダ20が、あらゆる例において予測されるべき現在ブロックに対する動きベクトルを通知する必要があるとは限らない。そうではなく、ビデオデコーダ30は、動きベクトル予測子に基づいて現在ブロックに対する動きベクトルを決定する。動きベクトル予測子は、現在ブロック以外のブロックに対する動きベクトルである。現在ブロック以外のブロックは、現在ブロックに空間的に隣接するブロック、現在ブロックに時間的に隣接するブロック、又は現在ブロックのビュー以外のビュー内の対応するブロックであり得る。
[0119]ビデオデコーダ30は、マージモード又は拡張型動きベクトル予測(AMVP)モードに従って現在ブロックの動きベクトルを決定するために、動きベクトル予測子を使用する。マージモードとAMVPモードの両方において、幾つかの例では、ビデオデコーダ30は、動きベクトル予測子の候補リストを構築するために内在的技法を実装する。内在的技法は、ビデオデコーダ30が、必ずしも、動きベクトル予測子の候補リストを構築する方式でビデオデコーダ30に教える教示をビデオエンコーダ20から受信することを必要とするとは限らないことを意味する。他の例では、ビデオエンコーダ20が、動きベクトル予測子の候補リストを構築する方式でビデオデコーダ30に教えることが可能である。例示のために、技法は、ビデオデコーダ30が、候補動きベクトル予測子のリストを構築するために内在的技法を実装する例を用いて説明される。
[0120]例えば、ビデオデコーダ30は、1つ又は複数の、現在ブロックに空間的に隣接するブロックの動きベクトルを決定し、これらの動きベクトルを候補動きベクトル予測子として動きベクトル予測子の候補リストに含める。幾つかの例では、ビデオデコーダ30は、1つ又は複数の、現在ブロックに時間的に隣接するブロックの動きベクトルを決定し、これらの動きベクトルを候補動きベクトル予測子として動きベクトル予測子の候補リストに含める。時間的隣接ブロックは、現在ブロックがそれのピクチャ内に包含するピクチャにおいてほぼ同じエリアを包含する現在ブロックを含むピクチャと同じビュー内のピクチャにおけるブロックを指す。時間的隣接ブロックは、同一位置に配置されたブロックと呼ばれることがある。
[0121]幾つかの例では、ビデオデコーダ30は、時間的隣接ブロックのピクチャ順序カウント(POC)値及び現在ブロックのPOC値に基づいて、時間的隣接ブロックに対する動きベクトルを拡大縮小する(scale)。POC値は、ピクチャの表示順序又は出力順序を示す。
[0122]更に、幾つかの例では、ビデオデコーダ30は、現在ブロックの視差ベクトルによって指されるブロックの動きベクトルを決定する。現在ブロックの視差ベクトルによって指されるブロックは、現在ブロックと異なるビュー内にある。視差ベクトルによって指されるブロックは、現在ブロックに対応するブロックと呼ばれる。というのは、対応するブロック及び現在ブロックは、同様であるが異なるビューの観点からのビデオコンテンツを含むからである。これらの例では、ビデオデコーダ30は、対応するブロックに対する動きベクトルを候補動きベクトル予測子として候補動きベクトル予測子のリストに含める。
[0123]幾つかの例では、ビデオエンコーダ20は、動きベクトル予測子の候補リストにインデックス値を通知し、ビデオデコーダ30は、動きベクトル予測子のリストへのインデックス値に基づいて、動きベクトル予測子の候補リスト内で識別された動きベクトル予測子を選択する。マージモードにおいて、ビデオデコーダ30は、現在ブロックに対する動きベクトルとして、選択された動きベクトル予測子を設定する。同じく、マージモードにおいて、ビデオデコーダ30は、選択された動きベクトル予測子が指した参照ピクチャを継承する。例えば、動きベクトル予測子は、現在ブロック以外のブロックに対する動きベクトルである。現在ブロック以外のブロックに対する動きベクトルは、第1の参照ピクチャリスト(RefPicList0)又は第2の参照ピクチャリスト(RefPicList1)のうちの一方へのインデックス値によって識別される参照ピクチャを指す。マージモードにおいて、ビデオデコーダ30は、現在ブロックに対する参照ピクチャリストへの参照インデックスとして、参照ピクチャリストへの参照インデックスを継承する。幾つかの例では、参照インデックスは、それが継承され得るより前に、ピクチャ順序カウント(POC)値に基づいて変換される必要がある。このようにして、ビデオデコーダ30は、現在ブロックに対する動きベクトルと、マージモードにおいて現在ブロックをインター予測するために使用される参照ピクチャとを決定する。
[0124]AMVPモードにおいて、候補動きベクトル予測子のリストにインデックス値を通知することに加えて、ビデオエンコーダ20は、インデックス値によって識別される動きベクトル予測子と現在ブロックの実際の動きベクトルとの間の残差を通知する。ビデオデコーダ30は、動きベクトル予測子の候補リストへのインデックス値に基づいて動きベクトル予測子を選択し、現在ブロックに対する動きベクトルを決定するために、通知された、インデックス値によって識別された動きベクトル予測子と現在ブロックの実際の動きベクトルとの間の残差を加算又は減算する。
[0125]幾つかの例では、AMVPモードにおいて、ビデオエンコーダ20はまた、ビデオデコーダ30が現在ブロックをインター予測するために使用すべきである参照ピクチャを識別するRefPicList0又はRefPicList1に参照インデックスを通知する。言い換えれば、マージモードとは違って、AMVPモードにおいて、ビデオデコーダ30は、参照インデックスを継承しないで、参照インデックスを受信する。
[0126]図4は、動きベクトルが候補動きベクトル予測子であり得る、空間的隣接ブロックを示す概念図である。図4では、インター予測されるべきである現在ブロックは、予測単位(PU)34である。図4は、PU34(即ち、PU34と同じピクチャ内のブロック)に空間的に隣接するブロックA0、A1、B0、B1及びB2を示す。幾つかの例では、ビデオデコーダ30は、A0、A1、B0、B1及びB2に対する動きベクトルを決定し、これらの動きベクトルのうちの1つ又は複数を、利用可能であれば場合によっては拡大縮小した後、PU34に対する候補動きベクトル予測子のリストに候補動きベクトル予測子として含める。
[0127]ブロックA0、A1、B0、B1及びB2は、PU34に空間的に隣接するブロックの例であり、PU34に空間的に隣接するブロックの例のみと見なされるべきではない。例えば、PU34に空間的に隣接するブロックは、ブロックA0、A1、B0、B1及びB2以外の位置に位置することができる。ブロックA0、A1、B0、B1及びB2の位置は、次のように定義される。
[0128]図4では、ルーマ位置(xP、yP)は、PU34を含む現在ピクチャの左上のサンプルに関連するPU34の左上のルーマサンプルを指定する。従って、現在ピクチャの左上のサンプルに関連する現在のPU「N」の左上のルーマサンプルは(xN、yN)である。変数nPSW及びnPSHは、ルーマに対するPU34の幅と高さとを示す。この例では、(xN、yN)(NはA0、A1、B0、B1又はB2で置き換えられる)は、それぞれ(xP−1、yP+nPSH)、(xP−1、yP+nPSH−1)、(xP+nPSW、yP−1)、(xP+nPSW−1、yP−1)、又は(xP−1、yP−1)として定義される。このようにして、ビデオデコーダ30は、空間的隣接ブロックの位置を決定する。ビデオデコーダ30がPU34の動きベクトルを決定するために動きベクトル予測子の候補リスト内に含めるものは、これらのブロックのうちの1つ又は複数の可能な基準化(possible scaling)後の動きベクトルである。
[0129]ビデオデコーダ30が、時間的隣接ブロックに対する動きベクトルを決定する方式を、以下で説明する。上記で説明したように、幾つかの例では、時間的隣接ブロックは、インター予測されるべき現在ブロックを含むピクチャと同じビュー内のピクチャ内に存在する。しかしながら、時間的隣接ブロックは、必ずしも、インター予測されるべき現在ブロックを含むピクチャと同じビュー内のピクチャ内に存在する必要があるとは限らない。幾つかの例では、時間的隣接ブロックは、インター予測されるべき現在ブロックを含むピクチャのビューと異なるビュー内のピクチャ内に存在することがある。例えば、時間的隣接ブロックを含むピクチャは、インター予測されるべき現在ブロックを含むピクチャに対する参照ピクチャリストのうちの1つへのcollocated_ref_idxインデックス値によって識別され得る。collocated_ref_idxインデックス値は、インター予測されるべきブロックを含むピクチャと同じビュー内のピクチャ、又はインター予測されるべきブロックを含むピクチャと異なるビュー内のピクチャを識別することができる。これらの例のいずれにおいても、collocated_ref_idxインデックス値によって識別されたピクチャは、「時間的隣接ブロック」を、この用語が本開示内で使用されるように、含み得る。候補動きベクトル予測子である時間的隣接ブロックに対する動きベクトルは、時間的動きベクトル予測子(TMVP)と呼ばれる。
[0130]時間的隣接ブロックに対する動きベクトルを決定するために、ビデオデコーダ30は、どのピクチャが時間的隣接ブロックを含んでいるかを決定し得る。時間的隣接ブロックを含むピクチャは、同一位置に配置されたピクチャ(co-located picture)と呼ばれる。インター予測されるべきブロック(例えば、現在ブロック)が現在ピクチャのスライス内にあり、スライスがBスライスである(例えば、RefPicList0、RefPicList1内の参照ピクチャに関して、又は一方がRefPicList0内で識別され、他方がRefPicList1内で識別される2つの参照ピクチャに関して予測される)場合、ビデオエンコーダ20は、同一位置に配置されたピクチャがRefPicList0内で識別されるか又はRefPicList1内で識別されるかを示すフラグ(例えば、collocated_from_l0_flag)を通知する。例えば、フラグ値が1の場合、ビデオデコーダ30は、同一位置に配置されたピクチャはRefPicList0内で識別されるものと決定し、フラグ値が0の場合、ビデオデコーダ30は、同一位置に配置されたピクチャはRefPicList1内で識別されるものと決定する。
[0131]幾つかの例では、Bスライスに対して、ビデオデコーダ30は、構築されたRefPicList0及びRefPicList1から、組み合わされた参照ピクチャリスト(RefPicListC)を構築する。ビデオコーダが参照ピクチャリスト変更シンタックスを通知する場合、ビデオデコーダ30は、RefPicListCを変更する。ビデオデコーダ30がRefPicListCを構築する例では、ビデオエンコーダ20は、collocated_from_l0_flagを通知しなくてよい。これらの例では、ビデオデコーダ30は、同一位置に配置されたピクチャはRefPicListC内で識別されるものと決定する。
[0132]インター予測されるべきブロックが、現在ピクチャのスライス内にあり、スライスがPスライスである(例えば、RefPicList0内の参照ピクチャに関して予測される)場合、ビデオエンコーダ20はフラグを通知しなくてよい。この場合、ビデオデコーダ30は、現在ブロック(即ち、インター予測されるべきブロック)がPスライス内にあるので、同一位置に配置されたピクチャはRefPicList0内に位置するものと決定する。
[0133]ビデオデコーダ30はまた、決定された参照ピクチャリストへのインデックスを受信できる。例えば、ビデオエンコーダ20は、インター予測されるべき現在ブロックを含むスライスのスライスヘッダにcollocated_ref_idxシンタックスを通知する。上記で説明したように、collocated_ref_idxシンタックスは、決定された参照ピクチャリストにインデックス値を与える。ビデオデコーダ30は、参照ピクチャリストへのインデックス値に基づいて、時間的隣接ブロックを含む同一位置に配置されたピクチャを決定する。
[0134]次に、ビデオデコーダ30は、決定された同一位置に配置されたピクチャ内の、同一位置に配置されたブロックを識別する。例えば、ビデオデコーダ30は、それのピクチャ内の現在ブロックの位置に基づいて、同一位置に配置されたピクチャ内の同一位置に配置されたブロックの位置を識別する。例えば、現在ブロックが予測単位(PU)であるものと仮定する。この場合、ビデオデコーダ30は、それのピクチャ内のPUの位置に基づいて、同一位置に配置されたピクチャ内のコード化単位(CU)の位置を決定する。同一位置に配置されたピクチャ内のこのCUは、同一位置に配置されたブロックと呼ばれる。
[0135]幾つかの例では、ビデオデコーダ30は、同一位置に配置されたブロック内の右下のPUに対する動きベクトルを決定する。幾つかの例では、ビデオデコーダ30は、同一位置に配置されたブロックの変更された中央位置をカバーするPUに対する動きベクトルを決定する。同一位置に配置されたブロックの変更された中央位置は、同一位置に配置されたブロックの中心点から同一位置に配置されたブロックの右下隅に向かって延びるブロックを指すことができる。言い換えれば、同一位置に配置されたブロックの変更された中央位置に位置するブロックの左上隅が、同一位置に配置されたブロックの中心となり得、同一位置に配置されたブロックの変更された中央位置に位置するブロックの右下隅が、同一位置に配置されたブロックの中心に関して下方向及び右方向に延びることができる。幾つかの例では、ビデオデコーダ30は、同一位置に配置されたピクチャ及び現在ブロックを含むピクチャのPOC値に基づいてこれらの識別された動きベクトルを拡大縮小する。
[0136]HEVC規格は、更に、どのピクチャが同一位置に配置されたピクチャであり得るかを定義する。言い換えれば、HEVC規格は、更に、どのピクチャを、ビデオデコーダ30が、時間的隣接ブロックから候補動きベクトル予測子を決定するために使用できるかを定義する。例えば、ビデオエンコーダ20は、ピクチャパラメータセット(PPS)内のenable_temporal_mvp_flagを通知する。現在ブロックを含むピクチャの時間的識別値(temporal_id)が0であり、ピクチャに対するシンタックス要素がPPSを指し、enable_temporal_mvp_flagが0であるとき、ビデオデコーダ30は、ビデオデコーダ30の復号されたピクチャバッファ(DPB)内に記憶されている全ての参照ピクチャを「時間的動きベクトル予測に対して未使用」として設定することができる。この場合、ビデオデコーダ30は、現在ブロックを含むピクチャに対する、及び復号順序で現在ブロックを含むピクチャに後続するピクチャに対する同一位置に配置されたピクチャとして現在ブロックを含むピクチャより、復号順序で前にあるピクチャを使用しない。
[0137]図5は、視差ベクトルに基づいて候補動きベクトル予測子を決定する方式を示す概念図である。図5で説明する例は、必ずしも、本開示で説明する技法に従うとは限らず、本開示で説明する技法において、ビデオデコーダ30は、視差ベクトルを決定するために深度マップを導出する必要はない。図5は、現在ビューの現在ピクチャ36を示す。現在ピクチャ36は、インター予測されるべきブロックである現在ブロック38を含む。現在ブロック38に対する候補動きベクトル予測子を決定するために、図5の例では、ビデオデコーダ30は、現在ブロック38に対する視差ベクトルを決定する。
[0138]ブロック38に対する視差ベクトルを決定するために、ビデオデコーダ30は、現在ピクチャ36内の現在ブロック38の位置40Aを決定する。ビデオデコーダ30は、深度マップ42内の深度値41を決定する。例えば、ビデオデコーダ30は、現在ピクチャ36の深度マップ42を導出する必要があり、深度値41は、現在ブロック38内の位置40Aに位置する画素の相対深度を示す。
[0139]図5のこの例では、ビデオデコーダ30は、視差ベクトル46を決定する。例えば、ビデオデコーダ30は、ビューアが深度値41によって規定される深度においてブロック38のビデオコンテンツを知覚するように、現在ブロック38がどれだけ水平に変位されるべきかを決定することができる。視差ベクトル46は、決定された水平変位の量を示し、それ故深度値41に基づいて決定され得る。視差ベクトル46は、スムーズ時間ビュー予測された(STV)視差ベクトルの一例である。
[0140]説明したように、視差ベクトル46は、参照ビュー内の現在ピクチャ44の参照サンプルブロック48を指す。参照サンプルブロック48は、現在ブロック38のビデオコンテンツと同様のビデオコンテンツを含み得、参照サンプルブロック48の位置は、現在ビュー内の現在ピクチャ36における現在ブロック38の位置に対して、参照ビュー内の現在ピクチャ44において水平に変位されている。参照ブロック48の動きベクトル50は、参照ビューの参照ピクチャ54の参照ブロック52を指す。
[0141]動きベクトル50は、現在ブロック38の動きベクトルに対する動きベクトル予測子の一例である。例えば、ビデオデコーダ30は、現在ブロック38に対する動きベクトル予測子の候補リスト内に動きベクトル50を含む。
[0142]幾つかの例では、ビデオデコーダ30はまた、現在ブロック38に対する候補動きベクトル予測子として視差ベクトル46を含む。例えば、図5は、参照ブロック48がインター予測されることを示す。しかしながら、説明のために、参照ブロック48はインター予測されず、イントラ予測されるものと仮定する。この場合、ビデオデコーダ30が動きベクトル予測子として使用できる参照ブロック48に対する動きベクトルは存在しない。従って、この例では、ビデオデコーダ30は、動きベクトル予測子の候補リスト内に、動きベクトル予測子として視差ベクトル46を含む。
[0143]動きベクトル50が候補動きベクトル予測子として含まれるために満足する必要がある幾つかの要件が存在し得る。一例として、ビデオデコーダ30は、動きベクトル50が指すピクチャ(即ち、参照ビュー内のピクチャ54)の時間インスタンスが、ピクチャ60(即ち、ピクチャ54及びピクチャ60が同じアクセス単位に属する)など、現在ブロック38の1つの参照ピクチャの時間インスタンスと同じである場合だけ、動きベクトル50が動きベクトル予測子の候補リスト内に含まれるものと決定する。
[0144]図5に示す例では、ビデオデコーダ30は、マージモードを実装する。例えば、ビデオエンコーダ20は、ビデオデコーダ30が構築した動きベクトル予測子の候補リストへのインデックスを通知する。図5では、動きベクトル予測子の候補リストへのインデックスが、動きベクトル50を識別するものと仮定する。この場合、マージモードに対して、ビデオデコーダ30は、動きベクトル50を選択し、ブロック38に対する動きベクトル(即ち、動きベクトル56)として動きベクトル50を設定する。
[0145]同じく、この例では、ビデオデコーダ30は、参照ビュー内の参照ピクチャ54を識別した参照ピクチャリストへの参照インデックスを継承し得た。この例では、ビデオデコーダ30が現在ビューのピクチャ36に対して構築する参照ピクチャリストへの継承された参照インデックスは、現在ビュー内の参照ピクチャ60を識別できる。現在ビュー内の参照ピクチャ60は、参照ブロック58を含む。ビデオデコーダ30は、現在ブロック38をインター予測するために参照ブロック58を使用する。
[0146]図5に関して説明したAMVPモード及びマージモードの技法は、次のように要約され得る。例えば、AMVPモード及びマージモードは両方とも、ビュー間動きベクトル予測子が動きベクトル予測子の候補リスト内に含まれることを可能にする。ビデオデコーダ30は、現在ブロックの中央サンプルの深度推定値を決定し、決定された深度推定値に基づいて参照ビュー内の視差ベクトルと参照ブロックとを決定する。
[0147]AMVPモードでは、現在ブロックに対してRefPicList0及びRefPicList1の一方又は両方への参照インデックスがビュー間参照ピクチャを指す場合、ビデオデコーダ30は、ビュー間動きベクトルを決定された視差ベクトルに等しく設定する。同じく、視差ベクトルによって指されているブロックに対してRefPicList0及びRefPicList1の一方又は両方への参照インデックスが時間的参照ピクチャ(即ち、視差ベクトルによって指されるブロックを含むピクチャと同じビュー内のピクチャ)を指す場合、及び時間的参照ピクチャの時間インスタンスが、ビデオデコーダ30がインター予測のために使用すべきである参照ピクチャの時間インスタンスと同じである場合、ビデオデコーダ30は、動きベクトル予測子として参照ブロックに対する動きベクトルを使用する。全ての他の場合には、ビデオデコーダ30は、異なるビューからの動きベクトルを使用しない。
[0148]マージモード(又はスキップモード)において、ビデオデコーダ30は、ピクチャ36に対して構築された参照ピクチャリスト内の第1の2つのインデックスを使用する。参照インデックス0に対して、ビデオデコーダ30は、AMVPモードに関して上記で説明した能登同じ方式で候補動きベクトル予測子を決定する(即ち、参照インデックス0において識別されたピクチャは参照ピクチャ44である)。ビデオデコーダ30が参照インデックス0において識別されたピクチャに対する候補動きベクトル予測子を決定する場合、ビデオデコーダ30は、候補動きベクトルとして動きベクトル50を含み、動きベクトル50の参照インデックス(即ち、ピクチャ54を識別する参照インデックス)を継承する。
[0149]ビデオデコーダ30が参照インデックス0を用いて識別されるピクチャを有する候補動きベクトル予測子を決定しない場合、ビデオデコーダ30は、参照インデックス1を用いて識別されるピクチャに対して、マージモードにおいて上記のステップを繰り返す。ビデオデコーダ30が参照インデックス1を用いて識別されるピクチャを有する候補動きベクトル予測子を決定しない場合、ビデオデコーダ30は、動きベクトル予測子の候補リストに参照ビューからのブロックに対する動きベクトルを含めない。
[0150]幾つかの例では、ビデオデコーダ30は、参照インデックス1によって識別されるピクチャで開始し、次に、参照インデックス0によって識別されるピクチャに進む。これは、ビュー間動き予測よりも多くの時間的予測を実施するビデオデコーダ30をもたらすことがある。
[0151]図5で説明する例では、ビデオデコーダ30は、視差ベクトル46を決定するために、深度マップ42を最初に導出する必要があった。ビデオデコーダ30が深度マップ42を導出する様々な方法が存在する。一例として、ビデオデコーダ30は、従属ビュー内のピクチャに対する深度マップを決定/更新するために、ベースビュー内のピクチャの時間動きベクトルと、ベースビュー内のピクチャに対応するベースビュー内の深度マップとを使用する。別の例として、ビデオデコーダ30は、従属ビュー内のピクチャに対する深度マップを決定/更新するために、従属ビュー内でかつベースビュー内のピクチャに対する時間動きベクトルと、従属ビュー内のピクチャに対する視差動きベクトルとを使用する。深度マップを導出するために他の方法が存在し得る。
[0152]一例として、コード化プロセスの初めに、ビデオデコーダ30は、ベースビュー内の第1のピクチャを復号することができる。ベースビューは、別のビュー内のピクチャから予測されないピクチャを含み得る。例えば、図3を参照すると、ビューS0内のピクチャはビューS1〜S7のいずれかの中のピクチャでインター予測されないので、ベースビューはビューS0であり得る。ビューS0内の第1のピクチャは、イントラ予測されるピクチャ(即ち、時間T0におけるビューS0内のIで表されるIピクチャ)である。同じく、非ベースビュー(例えば、従属ビュー)のうちの1つの中の第1のピクチャは、ビュー間動き予測、又はイントラ予測され得る。非ベースビュー(従属ビューと呼ばれる)は、(例えば、視差動きベクトルを有する)別のビュー内のピクチャに関してインター予測されるピクチャを含み得る。コード化プロセスのこの段階において、深度マップは利用可能でない。
[0153]非ベースビュー内の第1のピクチャを復号した後、視差動きベクトルが利用可能になる(即ち、視差動きベクトルが、非ベースビューの第1のピクチャ内のブロックをインター予測するために使用される)。これらの視差動きベクトルは、深度マップを生成するために深度値に変換され得る。深度マップは、ベースビューに対してマッピングするために使用され得るか、又は非ベースビュー内の後続のピクチャの深度マップを更新するために使用され得る。深度マップから、ビデオデコーダ30は、ブロックに対する視差ベクトルを決定することができる。
[0154]概して、深度マップを導出するためのそのような技法は複雑であり、ビデオコーダ30に、深度マップを導出するために処理能力と処理時間を消費することを要する。本開示で説明する例では、ビデオデコーダ30は、現在ブロックに対する視差ベクトルを決定するために深度マップを最初に導出しなくてよい。代わりに、ビデオデコーダ30は、空間的及び/又は時間的隣接ブロックの視差動きベクトルから視差ベクトルを決定し得、そのことは、導出された深度マップから視差ベクトルを決定するよりも複雑でないタスクであり得る。
[0155]幾つかの他の技法では、深度マップから視差ベクトルを決定するのではなく、ビデオエンコーダ20及びビデオデコーダ30が、GDVを符号化又は復号することができる。GDVは全ての画素に対して同じ視差ベクトルを与えるので、GDVは、実際の視差ベクトルに対して正確な測度を与えず、従って、GDVから決定された動きベクトル予測子は、ブロックの実際の視差ベクトルから決定される動きベクトル予測子ほど良好ではない。従って、深度マップによって、及び実際の視差ベクトルの代替としてGDVを使用することによって、視差ベクトルを決定することには、欠陥が存在することがある。
[0156]幾つかの例では、本開示で説明する技法に従って決定された視差ベクトルは、現在ブロックの実際の視差ベクトルと同一でないことがある。一例として、実際の視差ベクトルは、現在ブロックに対して水平にのみ変位された対応するブロックを指すので、現在ブロックの実際の視差ベクトルは、x成分を含み、y成分を含まないか又はy成分に対して0を含むことがある。幾つかの例では、視差ベクトルを決定するために使用される視差動きベクトルはx成分とy成分の両方を含み得るので、決定された視差ベクトルは、x成分とy成分の両方を含む。ビュー間動き予測のために使用されるのは構築された視差ベクトルであるので、ブロックに対して決定された視差ベクトルは、ビュー間動き予測に対する視差ベクトル(DVIVMP)と呼ばれることがある。
[0157]現在ブロックに対する視差ベクトルを決定するために、ビデオデコーダ30は、視差ベクトルの候補リストを構築する。視差ベクトルのこの候補リストは、動きベクトル予測子の候補リストと混同されるべきではない。視差ベクトルの候補リストは、現在ブロックの視差ベクトルを決定するために潜在的に使用され得るベクトルを識別する。動きベクトル予測子の候補リストは、現在ブロックの動きベクトルを決定するために潜在的に使用され得るベクトルを識別する。
[0158]同じく、視差ベクトル及び視差動きベクトルは、混同されるべきではない。第1のビュー内のブロックの視差動きベクトルは、第2のビュー内のブロックを指す動きベクトルであり、ここで第2のビュー内のブロックは、第1のビュー内のブロックをインター予測するために使用される参照ブロックである。視差ベクトルは、予測されるブロックと異なるビュー内のブロックを指すベクトルであり、視差ベクトルによって指されるブロックを含むピクチャに対する、予測されているブロックの変位を示す。視差ベクトルによって指されているブロックは、必ずしも、現在ブロックをインター予測するために使用される必要があるとは限らないが、現在ブロックに対する動きベクトル予測子を決定するために使用され得る。幾つかの例では、(決定された視差ベクトルのy成分を0に設定することによって)変更された視差ベクトルによって指されるブロックは、現在ブロックをインター予測するために使用される。幾つかの例では、変更された視差ベクトルは、視差動きベクトルの一例と見なされる。
[0159]言い換えれば、全ての視差ベクトルが視差動きベクトルであるとは限らず、視差ベクトルによって指されるブロックが現在ブロックをインター予測するために使用されるとき、それらの視差ベクトルは、視差動きベクトルに変換され得る。視差動きベクトルは、インター予測のための参照ブロックとして使用されるブロックを指し、必ずしも、現在ブロックの変位を示すとは限らない。
[0160]例えば、ビデオエンコーダ20は、現在ブロックのビューと異なるビュー内のピクチャにおいて探索を実行し、現在ブロックに最もよく適合する、異なるビューのピクチャにおけるブロックを発見する。次いで、ビデオエンコーダ20及びビデオデコーダ30は、「最もよく適合する」ブロックの位置を視差動きベクトルとして識別することによって現在ブロックをインター予測するために、この「最もよく適合する」ブロックを使用する。
[0161]視差ベクトルは、必ずしも、「最もよく適合する」ブロックを指すとは限らない。そうではなく、視差ベクトルは、動きベクトルが動きベクトル予測子として使用され得るブロックを指す。しかしながら、視差ベクトルが指すブロックがインター予測されない(例えば、視差ベクトルが指すブロックに対する動きベクトルが存在しない)場合、視差ベクトルは、候補動きベクトル予測子であり得る。幾つかの例では、視差ベクトルが指すブロックがインター予測される場合でも、変更後の視差ベクトルは、追加の候補動きベクトル予測子であり得る。
[0162]視差ベクトルが(例えば、動きベクトル予測子を決定するために)どのように使用されるかの上記の例は、例示のためだけに提供されており、限定と見なされるべきでないことを理解されたい。言い換えれば、上記の例は、決定された視差ベクトルが使用され得る幾つかの方法を説明するが、本開示で説明する技法は、そのように限定するものと見なされるべきではない。概して、一例として、必ずしも深度マップを導出する必要なしに視差ベクトルを決定するための技法など、本開示で説明する技法は、視差ベクトル決定するための例示的な方法を提供する。
[0163]視差ベクトルの候補リストを構築するために、ビデオデコーダ30は、空間的隣接ブロック及び/又は時間的隣接ブロックが視差動きベクトルを用いてビュー間動き予測されているかどうかを決定する。ビデオデコーダ30は、視差ベクトルの候補リスト又は内在視差ベクトルを使用した候補リスト内でビュー間動き予測された隣接ブロックに対する視差動きベクトルのうちの1つ又は複数を含み得る。内在視差ベクトルについて、以下でより詳細に説明する。更に、幾つかの例では、STV又はGDVはまた、視差ベクトルの候補リストを構築するために使用され得る。ビデオデコーダ30は、候補視差ベクトルのリストから1つを選択するために、複数の異なる技法のうちのいずれか1つを使用し得、選択された候補視差ベクトルを現在ブロックに対する視差ベクトルとして設定する。
[0164]上記の例では、ビデオデコーダ30は、視差ベクトルの候補リストを構築するために、空間的隣接ブロック及び時間的隣接ブロックの動きベクトル情報をブロックごとに評価した。しかしながら、空間的隣接ブロック及び時間的隣接ブロックの動きベクトル情報をブロックごとに評価することは、ビデオデコーダ30が空間的及び時間的隣接ブロックの動きベクトル情報を記憶する方式を仮定すると不十分であることがある。より詳細に説明したように、幾つかの例では、ビデオデコーダ30が動きベクトル情報を領域ごとに評価し、領域は複数の隣接ブロックを含み、現在ブロックよりサイズが大きくなるように、空間的隣接ブロック及び時間的隣接ブロックの動きベクトル情報が記憶される方式を、ビデオデコーダ30が構成する。しかしながら、ビデオデコーダ30が空間的又は時間的隣接ブロックの動きベクトル情報をブロックごとに記憶する場合、領域は1つのブロックを含み得る。言い換えれば、本開示では、領域は1つ又は複数のブロックを含み得る。
[0165]視差動きベクトルの領域ごとの評価に基づいて、ビデオデコーダ30は、候補視差ベクトルのリストを構築し、候補視差ベクトルのうちの1つを選択し、選択された候補視差ベクトルに基づいて現在ブロックに対する視差ベクトルを決定する。ビデオデコーダ30は、決定された視差ベクトルによって指されるブロックを使用してマージモード又はAMVPモードを実装する。幾つかの例では、ビデオデコーダ30はまた、決定された視差ベクトルによって指されるブロックを使用してビュー間残差予測を実装し得る。幾つかの例では、ビデオデコーダ30は、決定された視差ベクトルによって指されるブロックを使用して他のコード化ツールを実装し得る。一例として、ビデオデコーダ30は、隣接する領域(例えば、1つ又は複数の空間的又は時間的隣接ブロックを含む領域)の視差動きベクトルをブロックに対する視差ベクトルとして使用することによって、ブロックをインター予測復号することができる。例えば、ビデオデコーダ30は、隣接する領域の視差動きベクトルをブロックの視差ベクトルとして使用して、マージモード又はAMVPモードを実装し得る。
[0166]本開示で説明する技法では、領域に対する視差動きベクトルは、x成分とy成分の両方を含む。従って、幾つかの例では、決定された視差ベクトルは、x成分とy成分の両方を含む。幾つかの例では、ビデオデコーダ30はまた、動きベクトル予測子の候補リストに現在ブロックに対する候補動きベクトル予測子として決定された視差ベクトルを含める。
[0167]ビデオデコーダ30は、動きベクトル予測子の候補リスト内に決定された視差ベクトルを含める前に、決定された視差ベクトルを変更することができる。例えば、ビデオデコーダ30は、決定された視差ベクトルを変更するために決定された視差ベクトルのy成分を0に等しく設定し、動きベクトル予測子の候補リストに変更された視差ベクトルを含める。幾つかの例では、変更された視差ベクトルは、決定された視差ベクトルより良好な、現在ブロックの動きベクトルに対する予測子である。幾つかの例では、0に等しくないことがある決定された視差ベクトルのy成分は、変更されずに保たれ、ビュー間動き予測及び/又はビュー間残差予測に使用される。
[0168]更に、本開示で説明する幾つかの技法では、空間的及び時間的隣接ブロックから視差ベクトルを決定することによって、幾つかのタイプのピクチャが、ビュー間動き予測及び/又はビュー間残差予測、あるいは視差ベクトルを使用する他のコード化ツールを用いてコード化され得る。例えば、幾つかの他の技法(即ち、本開示で説明する技法に従わない技法)では、従属ビューは、瞬時デコーダリフレッシュ(IDR)ピクチャ及びクリーンランダムアクセス(CRA)ピクチャなど、ランダムアクセスポイント(RAP)ピクチャを含む。これらの他の技法では、RAPピクチャに対する深度マップは、RAPピクチャが完全に復号されるまで利用できない。従って、これらの他の技法では、RAPピクチャは、深度マップが視差ベクトルを決定するために利用できなかったので、マージモード又はAMVPモードを使用してビュー間予測され得なかった。
[0169]しかしながら、本開示で説明する技法では、ビデオデコーダ30は、深度マップを導出する必要なく、視差ベクトルを決定するように構成され得る。従って、幾つかの例では、ビデオデコーダ30は、RAPピクチャに対してマージモード及びAMVPモードを実装するように構成され得、ここで動きベクトル予測子の候補リストはRAPピクチャのビュー以外のビュー内のブロックからの動きベクトルを含む。
[0170]ピクチャの例示的なタイプを以下で説明する。HEVCにおけるネットワーク抽象化レイヤ(NAL:network abstract layer)ユニットタイプによって識別され得る4つのピクチャタイプが存在する。ピクチャのタイプの例には、限定はしないが、瞬時デコーダリフレッシュ(IDR)ピクチャと、クリーンランダムアクセス(CRA)ピクチャと、時間レイヤアクセス(TLA:temporal layer access)ピクチャと、IDR、CRA又はTLAピクチャでないコード化ピクチャとがある。
[0171]H.264/AVC規格はIDRピクチャを定義し、HEVC規格はH.264/AVC規格からIDRピクチャの定義を継承した。HEVC規格はまた、クリーンランダムアクセス(CRA)ピクチャと、ブロークンリンクアクセス(BLA:broken link access)ピクチャと、時間レイヤアクセス(TLA)ピクチャとを定義した。これらのピクチャタイプはHEVCにおいて新しく、H.264/AVC規格において利用できない。
[0172]CRAピクチャは、ビデオシーケンスの中央の任意のランダムアクセスポイントから始まる復号を可能にし、ランダムアクセスに対してIDRピクチャを使用するより効率的であり得るピクチャタイプである。HEVCでは、これらのCRAピクチャから始まるビットストリームもまた、ビットストリームに適合している。TLAピクチャは、有効な時間レイヤスイッチングポイントを示すために使用され得るピクチャタイプである。CRAピクチャとTLAピクチャとを以下でより詳細に説明する。
[0173]ブロードキャスティング及びストリーミングなどのビデオ用途では、ビューアは、最小の遅延で、異なるチャネル間を切り替えること、又はビデオ内の特定の部分にジャンプすることを欲することがある。そのような切替又はジャンプを可能にするために、ビデオエンコーダ20は、ビデオビットストリーム内に一定の間隔でランダムアクセスピクチャを含み得る。ランダムアクセスピクチャは、そのピクチャから復号が開始し得るピクチャである。例えば、ユーザがビデオ内でチャネルを切り替えるか、又はビデオ内の特定の部分にジャンプするとき、ビデオは、ランダムアクセスピクチャにおいて切り替わるか、又はランダムアクセスピクチャにジャンプする。
[0174]H.264/AVCとHEVCの両方の中で指定されるIDRピクチャは、ランダムアクセスに対して使用され得る。しかしながら、IDRピクチャは、コード化ビデオビデオシーケンスを開始させ、ビデオデコーダ30の復号されたピクチャバッファ(DPB)を常に削除するので、復号順序でIDRに続くピクチャは、IDRピクチャの前に復号されたピクチャを参照として使用できない。例えば、インター予測(例えば、インター予測復号)のために参照ピクチャとしてビデオデコーダ30が使用する復号されたピクチャを、DPBは記憶した。ビデオデコーダ30がIDRピクチャにおいて復号を開始するときに発生するように、ビデオデコーダ30がDPBをクリアする場合、復号順序でIDRピクチャに続くピクチャ(先行ピクチャと呼ばれる)が参照ピクチャとして使用できる、DPB内のピクチャは存在しない。
[0175]その結果、ランダムアクセスに対するIDRピクチャに依存するビットストリームは、著しく低いコード化効率(例えば、6%)を有することがある。コード化効率を改善するために、復号順序でCRAピクチャに後続するが出力順序でCRAピクチャに先行するピクチャが、CRAピクチャより前に復号されたピクチャを参照として使用することを、HEVCにおけるCRAピクチャが可能にする。
[0176]図6は、クリーンランダムアクセス(CRA)ピクチャの一例を示す概念図である。例えば、図6は、それらの表示順序によって識別されるピクチャを示す。表示順序は、ピクチャ順序カウント(POC)値によって識別される。例えば、図6では、POC値24を有するピクチャはCRAピクチャであり、Group of Picture(GOP)に属する。GOPはまた、POC値17〜23を有するピクチャを含む。POC値17〜23を有するピクチャは、復号順序でCRAピクチャ(即ち、POC値24を有するピクチャ)に後続する(即ち、POC値17〜23を有するピクチャは、POC値24を有するCRAピクチャによってインター予測されるか、又はPOC値24を有するCRAピクチャによってインター予測されたピクチャによってインター予測される)。しかしながら、POC値17〜23を有するピクチャは、POC値24を有するCRAピクチャに出力順序で先行する(即ち、POC値17〜23を有するピクチャは、POC値24を有するCRAピクチャより早く表示される)。
[0177]この例では、POC値17〜23を有するピクチャは、POC値24を有するCRAの先行ピクチャと呼ばれ、ビデオデコーダ30が、現在のCRAピクチャ(即ち、POC値24を有するピクチャ)より前にIDR又はCRAのピクチャから復号を開始する場合、正しく復号され得る。しかしながら、ビデオデコーダ30が、POC値24を有するCRAピクチャから復号を開始する場合、ビデオデコーダ30は、POC値17〜23を有するピクチャを適正に復号することはできない。これらの場合には、ビデオデコーダ30は、ランダムアクセス復号の間に先行ピクチャ(即ち、POC値17〜23を有するピクチャ)を廃棄する。
[0178]更に、ビデオデコーダ30が復号を開始する場所に応じて利用可能でないことがある参照ピクチャからのエラー伝搬を防止するために、POC値24を有するCRAピクチャに復号順序と出力順序の両方で後続する次のGOP内の全てのピクチャは、POC値24を有するCRAピクチャに復号順序又は出力順序のいずれかで先行するピクチャを、参照として使用しない。例えば、上記で説明したように、ビデオデコーダ30が、POC値24を有するCRAピクチャから復号を開始する場合、ビデオデコーダ30は、POC値17〜23を有するピクチャを廃棄する。この場合には、POC値17〜23を有するピクチャは利用可能ではないので、POC値24を有するCRAピクチャに復号順序と出力順序の両方で後続するピクチャは、POC値17〜23を有するピクチャのうちのいずれかを参照ピクチャとして使用しない。
[0179]同様のランダムアクセス機能が、リカバリポイント補足強調情報(SEI)メッセージを有するH.264/AVCにおいてサポートされる。H.264/AVC規格に準拠する全てのビデオデコーダが、リカバリポイントSEIメッセージをサポートするとは限らない。
[0180]HEVCにおいて、CRAピクチャによって開始するビットストリームは、適合ビットストリームと見なされる。上記で説明したように、ビットストリームがCRAピクチャによって開始するとき、CRAピクチャの先行ピクチャは利用不能参照ピクチャを指し、従って正しく復号され得ない。しかしながら、同じく上記で説明したように、HEVCは、開始するCRAピクチャの先行ピクチャは出力せず、従って「クリーンランダムアクセス」という名称であることを明記している。
[0181]ビットストリーム適合性要件を確立するために、HEVCは、非出力先行ピクチャを復号するために利用不能参照ピクチャを生成するための復号プロセスを指定する。しかしながら、復号プロセスがビットストリームの開始から実行されるときと比較して、ビデオデコーダ30が同等の出力を生成し得る限り、ビデオデコーダ30は、必ずしも、その復号プロセスに従わねばならないとは限らない。その上、HEVCにおいて、適合ビットストリームは、IDRピクチャをまったく含まず、従ってコード化ビデオシーケンスのサブセット又は不完全なコード化ビデオシーケンスを含み得る。
[0182]上記で説明したように、幾つかの例では、ビデオデコーダ30は、現在ブロックに対する視差ベクトルを決定するために、空間的及び時間的隣接ブロックの動きベクトルを評価する。以下の例は、ビデオデコーダ30が、空間的及び時間的隣接ブロックの動きベクトルから現在ブロックに対する視差ベクトルを決定する例示的な方式を示す。以下の例は限定と見なされるべきではなく、技法は、現在ブロックに対する視差ベクトルを決定するための他の可能な技法に拡張可能である。
[0183]ターゲット参照ビューを与えられると、ターゲット参照ビューからのビュー間動き予測を可能にするために、ビデオデコーダ30は、ビュー間動き予測に対する視差ベクトル(DVIVMP)及び/又はビュー間残差予測を作成するために、空間視差ベクトル、時間視差ベクトル、及び/又は内在視差ベクトルを使用できる。空間視差ベクトル、時間視差ベクトル、及び内在視差ベクトルの全てについて、以下でより詳細に説明する。幾つかの例では、視差ベクトルは、所与のターゲット参照ビューによって制限されず、そのことは、視差ベクトルは利用可能と見なされる任意の従属ビュー内のピクチャに対応し、決定された視差ベクトルとして直接使用され得ることを意味する。幾つかの例では、この視差ベクトルは、同じアクセス単位のターゲット参照ビュー内のすでにコード化された動きパラメータに基づいて、現在ビュー内のブロックの動きパラメータ(即ち、動きベクトル予測子)を予測又は推測するために使用される。本開示の技法によれば、ビデオデコーダ30は、決定された内在視差ベクトル(IDV)、空間視差ベクトル(SDV)、及び時間視差ベクトル(TDV)に基づいて、候補視差ベクトルのリストを構築することができる。例えば、決定された候補視差ベクトルのうちの1つ又は複数は、マージ又はAMVPに対する候補リスト内に含まれ得る。
[0184]図7は、候補視差ベクトルを決定することの一例を示す概念図である。図7では、ピクチャ62は、第1のビュー内にあり、マージモード又はAMVPモードを使用してインター予測されるべきであるブロック64を含む。ブロック64に対する視差ベクトルを決定するために、ビデオデコーダ30は、空間的隣接ブロックに対する動きベクトルを決定する。ビデオデコーダ30は、任意の順序で空間的に隣接するブロックを評価し得る。空間的隣接ブロックの各々に対して、ビデオデコーダ30は、空間的隣接ブロックが、RefPicList0内の参照ピクチャを識別する前方予測ベクトルを用いて予測されるか、又はRefPicList1内の参照ピクチャを識別する後方予測ベクトルを用いて予測されるかを決定する。組み合わされた参照ピクチャリスト(即ち、RefPicListC)が使用される場合、ビデオデコーダ30は、空間的隣接ブロックに対する動きベクトルがRefPicListC内のピクチャを識別するかどうかを決定する。これらの空間的隣接ブロックのうちのいずれかが視差動きベクトルを用いてインター予測される場合、ビデオデコーダ30は、ブロック64に対する候補視差ベクトルのリスト内に視差動きベクトルを含める。
[0185]例えば、図7は、ブロック64にそれぞれ空間的に隣接する、空間的隣接ブロック66と空間的隣接ブロック68とを示す(例えば、隣接ブロック66/68はブロック64と同じピクチャ、ピクチャ62に属する)。この例では、ブロック66及び68はそれぞれ、4×4ブロックである。図7では、ピクチャ70のブロック72を指す時間動きベクトル78で示されるように、ブロック66は、ピクチャ70のブロック72を用いてインター予測される。ピクチャ70は、ピクチャ62と同じビュー内にあるが、異なる時間インスタンスにおけるものである。
[0186]ブロック68は、ピクチャ74のブロック76に関してビュー間予測される。例えば、ブロック68に対する動きベクトル80は、ピクチャ74のブロック76を指す視差動きベクトルである。ピクチャ62及び74は、同じ時間インスタンス内の異なるビュー内にある。ピクチャ74は、ピクチャ62が位置する第1のビューと異なる第2のビューに位置するので、動きベクトル80は、視差動きベクトルである。その上、ピクチャ62及びピクチャ74の時間インスタンスは同じである。従って、ピクチャ62及びピクチャ74は、同じアクセス単位に属する。
[0187]この例では、ビデオデコーダ30は、ブロック66の動きベクトル78とブロック68の動きベクトル80とを評価して、動きベクトル80が視差動きベクトルであるものと決定する。次に、ビデオデコーダ30は、視差ベクトルの候補リスト内に視差動きベクトル80を含める。視差動きベクトル80は、空間視差ベクトル(SDV)と呼ばれることがある。
[0188]しかしながら、ビデオデコーダ30がブロック66及びブロック68の動きベクトル情報を記憶する方式のため、必ずしも、ビデオデコーダ30がブロック66とブロック68の両方の動きベクトル情報を評価するとは限らない。例えば、ビデオデコーダ30がブロック66とブロック68とをインター予測した後、ビデオデコーダ30は、ビデオデコーダ30のラインバッファ内にブロック66及びブロック68に対する動きベクトル情報を記憶する。幾つかの例では、ラインバッファ内に動きベクトル情報を記憶する前に、ビデオデコーダ30が、ブロック66及びブロック68のうちの一方に対する動きベクトル情報を記憶するように、又はブロック66及び68に対する動きベクトル情報からブロック66と68の両方に対する動きベクトル情報を導出するように、ビデオデコーダ30は、ブロック66及びブロック68に対する動きベクトル情報を圧縮する。動きベクトル情報の圧縮を、図8に更に示す。動きベクトル情報の圧縮は、あらゆる例において必要であるとは限らない。
[0189]図8は、本開示で説明する1つ又は複数の例による、動きベクトル情報が記憶される方式を示す概念図である。図8は、ラインバッファ82を示す。ラインバッファ82は、予測されるべきである現在ブロックの上に空間的に配置されたブロックに対する動きベクトルを記憶する。図8のブロック0〜15はそれぞれ、4×4ブロックである。
[0190]動きベクトル情報は、インター予測方向と、参照ピクチャインデックスと、動きベクトル(MV)とを含む。幾つかの例では、ビデオデコーダ30は、ラインバッファ82内のブロック0〜15の各々に対する動きベクトル情報を記憶しない。そうではなく、ビデオデコーダ30は、ラインバッファ82内のブロック4つごとにそのうちの2つに対する動きベクトル情報を記憶する。これは、1ラインに対して2:1の動きベクトル情報圧縮をもたらし、ラインバッファ82内に記憶される必要のある、より少ない情報をもたらす。
[0191]例えば、ブロック0〜3の各々に対する動きベクトル情報は異なることがある。この例では、ブロック0及びブロック1に対する動きベクトル情報は異なるが、記憶すると、ブロック0及びブロック1は同じ動きベクトル情報を共有し、ビデオデコーダ30は、ラインバッファ82内のブロック0と1の両方に対して1セットの動きベクトル情報を記憶する。図8では、ビデオデコーダ30は、ブロック0とブロック1の両方に対する動きベクトル情報として、ブロック0に対する動きベクトル情報を記憶する。この場合には、ブロック1に対する動きベクトル情報は失われ、ブロック0に対する動きベクトル情報が保存される。
[0192]同様に、この例では、ブロック2及びブロック3に対する動きベクトル情報は異なるが、記憶すると、ブロック2及び3は同じ動きベクトル情報を共有し、ビデオデコーダ30は、ラインバッファ内のブロック2とブロック3の両方に対して1セットの動きベクトル情報を記憶し得る。幾つかの例では、ビデオデコーダ30は、ブロック2と3の両方に対する動きベクトル情報として、ブロック3に対する動きベクトル情報を記憶する。この場合には、ブロック2に対する動きベクトル情報は失われ、ブロック3に対する動きベクトル情報が保存される。
[0193]言い換えれば、ラインバッファ低減のための動きベクトル情報圧縮に対して、ビデオデコーダ30は、ラインバッファ82内のブロック0とブロック1の両方に対する動きベクトル情報を記憶しない。そうではなく、ビデオデコーダ30は、ラインバッファ82内のブロック1の動きベクトル情報を記憶し、ブロック0の動きベクトル情報が失われることがある。同様に、ビデオデコーダ30は、ラインバッファ82内のブロック3の動きベクトル情報を記憶し、ブロック2の動きベクトル情報が失われることがある。
[0194]図8では、暗いブロックは、動きベクトル情報が記憶されるブロックを示す。矢印は、動きベクトル情報が、記憶された動きベクトル情報によって現在の表されているブロックを示す。図示のように、ブロックのうちの半分に対する動きベクトル情報が失われ、ブロックのうちの他の半分に対する動きベクトル情報によって表されるので、全てのブロックに対する動きベクトル情報が記憶される場合と比較して、半分のメモリだけがラインバッファ82内に必要である。
[0195]図8に関して説明する技法は、動きベクトル情報圧縮を実装するための1つの方法である。ラインバッファ低減のために動きベクトル情報圧縮を実装するための他の方法が存在し得、本開示で説明する技法は、ラインバッファ低減のために動きベクトル情報圧縮を実装するための特定の方法に制限されない。
[0196]本開示で説明する技法によれば、ラインバッファ82は、領域内の全てのブロックに対してではなく、ブロックの一領域に対する動き情報を記憶するので、ビデオデコーダ30は、ブロック0〜15の各々に対して動きベクトル情報を決定する必要はない。例えば、領域84A〜84Hはそれぞれ、画素の8×4領域を表す。例えば、領域84Aは、第1の8×4領域を表し、第1の8×4領域はブロック0と1とを含む。この例では、ブロック0の動きベクトル情報は、領域84Aの動きベクトル情報と見なされる。領域84Bは、第2の8×4領域を表し、第2の8×4領域はブロック2と3とを含み、以下同様である。この例では、ブロック3の動きベクトル情報は、領域84Bの動きベクトル情報と見なされ、以下同様である。
[0197]更に、図8は8×4領域を示すが、本開示の態様は、そのように限定されない。他の例では、領域は4×8領域であり得、ここでラインバッファ82は、水平ラインではなく垂直ライン内に存在するブロックに対する動きベクトル情報を記憶する。同様に、空間的隣接ブロックの4×4ブロックのサイズはまた、例示のために提供され、限定と見なされるべきではない。
[0198]図8の例では、ビデオデコーダ30は、領域84A〜84Hのうちのどの1つが現在ブロックに空間的に隣接するブロックを含むかを決定し得る。次に、ビデオデコーダ30は、領域内の空間的隣接ブロックの各々に対して動きベクトル情報を決定するのではなく、現在ブロックに空間的に隣接するブロックを含む領域に対する動きベクトル情報を決定する。領域に対する動きベクトルが視差動きベクトルである場合、ビデオデコーダ30は、現在ブロックに対する候補視差ベクトルのリストに視差動きベクトルを含め得る。この例では、領域に対する動きベクトルは、領域内の複数のブロックに対する単一の動きベクトルを表す。
[0199]幾つかの例では、空間的隣接ブロックを含む領域に対する2つの動きベクトルが存在し得、1つはRefPicList0を指し、もう1つはRefPicList1を指す。これらの例では、RefPicList0を指す空間的隣接ブロックを含む領域内の全てのブロックに対する1つの単一の動きベクトルと、RefPicList1を指す空間的隣接ブロックを含む領域内の全てのブロックに対する1つの単一の動きベクトルとが存在する。
[0200]例えば、図7に戻って参照し、図7のブロック66が図8のブロック2に対応し、ブロック68が図8のブロック3に対応するものと仮定する。この例では、ラインバッファ82は、視差動きベクトル80に対する動きベクトル情報と、ピクチャ74を識別する参照インデックスとを記憶し、時間動きベクトル78に対する動きベクトル情報と、ピクチャ70を識別する参照インデックスとを記憶しない。
[0201]この例では、ビデオデコーダ30は、ブロック66に対する動きベクトル情報と、ブロック68に対する動きベクトル情報とを決定する必要はない。代わりに、ビデオデコーダ30は、領域84Bに対する動きベクトル情報を決定し得、ここで領域84Bはブロック66とブロック68とを含む。これは、ビデオデコーダ30が動きベクトル情報のより少ない決定を行うことを可能にし、それにより効率的なビデオコード化を促進する。この場合には、領域84Bの動きベクトル情報は、動きベクトルが視差動きベクトル80であることを示す。領域84に対する動きベクトルは視差動きベクトルであるので、ビデオデコーダ30は、ブロック64に対する候補視差ベクトルのリストに、ブロック64に対する候補視差ベクトルとして視差動きベクトル80を含める。視差動きベクトル80は空間的隣接領域84に対する視差ベクトルであるので、視差動きベクトル80は、空間視差ベクトル(SDV)と呼ばれることがある。同じく、空間的隣接ブロック(例えば、空間的隣接領域)に対する視差動きベクトル80が、ブロック64に対する視差ベクトルであるものと決定される(例えば、それは、候補視差ベクトルのリストから選択されるため)場合、ビデオデコーダ30は、ブロック64をインター予測するためにブロック64に対する視差ベクトルとして視差動きベクトル80を使用し得る。例えば、ビデオデコーダ30は、ブロック64の視差ベクトルとして視差動きベクトル80を使用して、ブロック64にAMVPモード又はマージモードを実装し得る。
[0202]図7及び図8の例では、ビデオデコーダ30は、現在ブロックに対する候補視差ベクトルを決定するために、空間的隣接ブロックを使用した。幾つかの例では、空間的隣接ブロックを使用することに代えて又は加えて、ビデオデコーダ30は、現在ブロックに対する別の候補視差ベクトルを決定するために時間的隣接ブロックを使用する。
[0203]図9は、候補視差ベクトルを決定することの一例を示す概念図である。図9は、インター予測されるべきであるブロック88を含むビュー1内のピクチャ86を示す。ピクチャ86に対する3つの可能な参照ピクチャが存在し、ピクチャ96及びピクチャ106は、これらのピクチャがピクチャ86と同じビュー内に属するからであり、ピクチャ90は、ピクチャ90が異なるビュー(ビュー0)内にあるがピクチャ86と同じアクセス単位内にある(例えば、ピクチャ86及びピクチャ90の時間インスタンスが同じである)からである。
[0204]この例では、ビデオデコーダ30は、参照ピクチャ90、96及び106内の3つの同一位置に配置されたブロック(即ち、ブロック92、ブロック98及びブロック108)に対する動きベクトル情報を決定する。例えば、ビデオデコーダ30は、同一位置に配置されたブロック92、98及び108のうちのいずれかに対する動きベクトルが視差動きベクトルであるかどうかを決定する。
[0205]図9では、ブロック108はイントラ予測され、従って、視差動きベクトルを用いて予測されない。ブロック92は動きベクトル94を用いてインター予測される。しかしながら、動きベクトル94はピクチャ110におけるブロック112を指し、ピクチャ110はピクチャ90と同じビュー(即ち、ビュー0)内にあるので、動きベクトル94は時間動きベクトルである。
[0206]ピクチャ96のブロック98は、動きベクトル100によって示されるように、ピクチャ102のブロック104に関してインター予測される。この例では、ピクチャ96はビュー1内にあり、ピクチャ102は異なるビュー(即ち、ビュー0)内にある。それ故、動きベクトル100は、視差動きベクトルである。この例では、ビデオデコーダ30は、視差動きベクトル100を候補視差ベクトルとして候補視差ベクトルのリストに含む。視差動きベクトル100は同一位置に配置されたブロックに対する動きベクトルであるので、視差動きベクトル100は、時間視差ベクトル(TDV)と呼ばれる。
[0207]図9は、ブロック88と同一位置に配置される、同一位置に配置されたブロックの幾つかの例を示す。同一位置に配置されたブロックの他の複数の例が存在し得る。例えば、現在ブロックに対する同一位置に配置されたブロックの一例は、それの現在ピクチャ内に位置する現在ブロックと同じ領域内に位置する同一位置に配置されたピクチャ内のブロックである。この領域は、同一位置に配置された領域(CR)と呼ばれる。言い換えれば、同一位置に配置されたブロックの一例は、同一位置に配置されたピクチャのCR内のブロックである。
[0208]同一位置に配置されたブロックの別の例は、同一位置に配置された領域をカバーする最大コード化単位(LCU)である。例えば、LCUは、現在ブロックよりサイズが大きく、それ故現在ピクチャ内の現在ブロックによって包含されるエリアと比較して、同一位置に配置されたピクチャ内のより大きいエリアを包含することができる。そのようなLCUがカバーする領域は、同一位置に配置されたLCU(CLCU)と呼ばれる。
[0209]同一位置に配置されたブロックの更に別の例として、ビデオデコーダ30は、同一位置に配置されたピクチャ内の同一位置に配置された領域の右下に位置するブロックを識別する。同一位置に配置されたブロックのこの例はBRと呼ばれ、BRは右下のブロックに対する頭字語である。同一位置に配置されたブロックの例を更に、図10に示す。同一位置に配置されたブロックの更に別の例として、同一位置に配置されたピクチャ内に位置する任意のブロックが、候補視差ベクトルを導出するために使用され得る。
[0210]図10は、予測されるべき現在ブロックと同一位置に配置される同一位置配置ブロックの例を示す概念図である。図10は、ピクチャ114とピクチャ118とを示す。幾つかの例では、ピクチャ114及びピクチャ118は、同じビューに属し、異なるアクセス単位に属する。幾つかの例では、ピクチャ114及びピクチャ118は、異なるビューに属し、同じアクセス単位に属する。いずれの例においても、ピクチャ118は、ピクチャ114と同一位置に配置されていると見なされる。代替的に、ピクチャ118は、第1の例に対してだけ、ピクチャ114と同一位置に配置されている(即ち、同じビューに属し、異なるアクセス単位に属する)と見なされる。
[0211]ピクチャ114は、例えば、マージモード又はAMVPモード若しくは残差予測を使用してインター予測されるべきであるブロック116を含む。マージモード又はAMVPモードを実装するために、ビデオデコーダ30は、ブロック116に対する候補視差ベクトルを決定し、ここで候補視差ベクトルのうちの1つ又は複数は、ビュー間予測される同一位置に配置されたブロックからの視差動きベクトルである。
[0212]図10では、ブロック120は、ブロック116と同一位置に配置される同一位置配置ブロックの一例である。例えば、ブロック120は、ブロック116がピクチャ114内でカバーするのと同じ領域をピクチャ118内でカバーする。ブロック120は、同一位置に配置された領域(CR)ブロック(例えば、同一位置に配置されたピクチャ内の同一位置に配置された領域をカバーするブロック)と呼ばれる。
[0213]ブロック122は、ブロック116と同一位置に配置される同一位置配置ブロックの別の例である。例えば、ブロック122は、サイズがブロック116のサイズより大きいか又は等しい最大コード化単位(LCU)である。図10の例では、ブロック122は、ブロック116がピクチャ114内でカバーするエリアより大きいエリアをピクチャ118内でカバーする。しかしながら、ブロック122は、ブロック116がピクチャ114内でカバーするのと少なくとも同じエリアをピクチャ118内でカバーする。この場合には、ブロック122は、ブロック116の同一位置に配置された領域をカバーするLCUであり、CLCUブロックと呼ばれる。
[0214]ブロック124は、ブロック116と同一位置に配置される同一位置配置ブロックの更に別の例である。例えば、ブロック124は、ブロック116が存在するピクチャ114内の領域と同一位置に配置される、ピクチャ118内の同一位置配置領域の右下に位置する。ブロック124は、BRブロックと呼ばれる。
[0215]幾つかの例では、ブロック116に対する候補視差ベクトルを決定するために、ビデオデコーダ30は、CRブロック120、CLCUブロック122及びBRブロック124のうちの1つ又は複数に対する動きベクトル情報を決定する。例えば、ビデオデコーダ30は、CRブロック120、CLCUブロック122及びBRブロック124内の4×4ブロックの各々がビュー間予測されるかどうかを決定する。ビデオデコーダ30は、ブロック116に対する候補視差ベクトルのリストに、CRブロック120、CLCUブロック122及びBRブロック124内のビュー間予測された4×4ブロックに対する視差動きベクトルを含め得る。
[0216]しかしながら、CRブロック120、CLCUブロック122及びBRブロック124内の4×4ブロックの各々に対して動きベクトル情報を決定することは、ビデオデコーダ30に、必要以上に多くの同一位置に配置されたブロックに対する動きベクトル情報を不必要に決定することを要求することがある。例えば、空間的隣接ブロックを有する例と同様に、ビデオデコーダ30は、同一位置に配置されたピクチャ内の4×4ブロックの各々に対する動きベクトル情報を記憶しなくてよい。しかしながら、幾つかの例では、ビデオデコーダ30が、同一位置に配置されたピクチャ内の4×4ブロックに対する動きベクトル情報を記憶することが起こり得る。
[0217]例えば、ビデオデコーダ30が、同一位置に配置されたピクチャ内のブロックをインター予測又はイントラ予測した後、ビデオデコーダ30は、同一位置に配置されたピクチャ内のインター予測された4×4ブロックの動きベクトルに16倍圧縮(16x compression)を適用し得る。一例として、16倍圧縮を適用するために、ビデオデコーダ30は、16の4×4ブロック(水平方向に4つの4×4ブロック及び垂直方向に4つの4×4ブロック)に基づいて1つの動きベクトル情報を生成し、16×16領域に対する動きベクトルを得る。例えば、ビデオデコーダ30は、16の4×4ブロックの全てを表すために、1つの16×16領域の左上の4×4ブロックの動き情報を選択し得る。ビデオデコーダ30は、ビデオデコーダ30のバッファ内に16×16領域に対する動きベクトルを記憶する。このバッファは、ラインバッファ82と同じでよく、又はビデオデコーダ30の異なるバッファでもよい。
[0218]言い換えれば、同一位置に配置されたピクチャ内の16×16領域は、16の4×4ブロックを含む。これらの16の4×4ブロックに対する動きベクトル情報は、異なってもよい。しかしながら、メモリ帯域幅低減のための動きベクトル圧縮のために、これらの16の4×4ブロックの各々に対する個別の動きベクトル情報は失われ、16の4×4ブロックを包含する16×16領域に対する1つの動きベクトルで置き換えられることがある。16×16領域に対するこの動きベクトルは、16×16領域内の複数の4×4ブロックに対する単一の動きベクトルを表す。この単一の動きベクトルは、2つの参照ピクチャリスト(RefPicList0又はRefPicList1)のうちの一方を指すことがある。幾つかの例では、16×16領域に対する2つの動きベクトルが存在し得、1つはRefPicList0を指し、もう1つはRefPicList1を指す。これらの例では、RefPicList0を指す16×16領域内の全てのブロックに対する1つの単一の動きベクトルと、RefPicList1を指す16×16領域内の全てのブロックに対する1つの単一の動きベクトルとが存在する。圧縮が使用されない例では、領域は1つの4×4ブロックを含み得る。
[0219]その上、16の4×4ブロックを含む1つの16×16領域である領域は、例示のために提供されており、限定と見なされるべきではない。領域は16×16と異なるサイズであってよく、ビデオデコーダ30は、16倍圧縮に対して水平方向と垂直方向の両方に、動きベクトルフィールドを4分の1にダウンサンプリングすることができる。同様に、時間的隣接ブロックの4×4ブロックサイズはまた、例示のために提供され、限定と見なされるべきではない。
[0220]本開示で説明する技法によれば、ビデオデコーダ30は、同一位置に配置されたブロック内の4×4ブロックの各々に対する動きベクトル情報を決定する必要はない。そうではなく、ビデオデコーダ30は、同一位置に配置されたブロック内の4×4ブロックを含む16×16領域に対する動きベクトル情報を決定することができる。例えば、図10に戻って参照すると、ビデオデコーダ30は、4×4ブロックのうちのどれが視差動きベクトルを用いてビュー間予測されたかを決定するために、CRブロック120、CLCUブロック122又はBRブロック124内の4×4ブロックの各々に対する動きベクトル情報を決定する必要はない。
[0221]この例では、ビデオデコーダ30は、16×16領域又はCRブロック120と、CLCUブロック122と、BRブロック124とをカバーする領域に対する動きベクトルが視差動きベクトルであるかどうかを決定する。16×16領域又はCRブロック120と、CLCUブロック122と、BRブロック124とをカバーする領域に対する動きベクトルが視差動きベクトルである場合、ビデオデコーダ30は、ブロック116の候補視差ベクトルのリストに、視差動きベクトルを候補視差ベクトルとして含める。同じく、CRブロック120と、CLCUブロック122と、BRブロック124とをカバーする1つ又は複数の領域(例えば、時間的隣接領域)に対する視差動きベクトルが、ブロック88に対する視差ベクトルであるものと決定される(例えば、それは、候補視差ベクトルのリストから選択されるため)場合、ビデオデコーダ30は、ブロック88をインター予測するためにブロック88に対する視差ベクトルとしてこの視差動きベクトルを使用し得る。例えば、ビデオデコーダ30は、ブロック88の視差ベクトルとして視差動きベクトルを使用して、ブロック88にAMVPモード又はマージモードを実装し得る。
[0222]図7〜図10に示す例は、ビデオデコーダ30が、候補視差ベクトルのリストに追加される候補視差ベクトルを決定する。例えば、図7及び図8は、空間視差ベクトル(SDV)を候補視差ベクトルのリストに含めることを説明する。図9及び図10は、時間視差ベクトル(TDV)を候補視差ベクトルのリストに含めることを説明する。ビデオデコーダ30が、現在ブロックに対する視差ベクトルとしてSDV又はTDVを選択する場合、ビデオデコーダ30は、動きベクトル情報が現在ブロックに対する動きベクトル情報を決定するために使用されるブロックを識別するために、選択されたSDV又はTDVの視差ベクトルを使用して、現在ブロックにマージモード又はAMVPモードを実装する。
[0223]しかしながら、本開示で説明する技法は、そのように限定されない。幾つかの例では、ビデオデコーダ30はまた内在視差ベクトル(IDV)を決定し、候補視差ベクトルのリストにIDVを含める。IDVは、ビュー間動き予測を用いてコード化される隣接ブロックの視差ベクトルである。例えば、予測されるべき現在ブロックが第1のブロックと呼ばれると仮定すると、第1のブロックに隣接するブロックは第2のブロックと呼ばれ、第2のブロックに隣接するブロックは第3のブロックと呼ばれる。
[0224]この例では、第2のブロックは、第2のブロックと同じビュー内のピクチャに関してインター予測される。しかしながら、第2のブロックに対する動きベクトルは、第3のブロックから決定される。例えば、第2のブロックに対する動きベクトルを決定するために、ビデオデコーダ30は、上記で説明した同様の技法を使用して第2のブロックに対する視差ベクトルを決定する。ビデオデコーダ30は、第2のブロックの視差ベクトルが指す第3のブロックに対する動きベクトルを、第2のブロックに対する動きベクトルとして使用する。この場合には、第2のブロックの視差ベクトルは内在視差ベクトルと呼ばれ、ビデオデコーダ30は、第1のブロックに対する候補視差ベクトルとしてこのIDVを含む。
[0225]言い換えれば、ビデオデコーダ30は、現在ブロックに空間的及び時間的に隣接するブロックに基づいて、図7〜図10に関して上記で説明したSDVとTDVとを決定する。ビデオデコーダ30は、現在ブロックに空間的及び/又は時間的に隣接する1つのブロックに、空間的及び/又は時間的に隣接する複数のブロックに基づいてIDVを決定するという点で、IDVはSDV及びTDVと異なる。例えば、ビデオデコーダ30が、第2のブロックの視差ベクトルによって位置指定される第3のブロックの動きベクトルに基づいて、空間的及び/又は時間的隣接ブロック(第2のブロックと呼ばれる)に対する動きベクトルを決定する場合、ビデオデコーダ30は、現在ブロック(第1のブロックと呼ばれる)に対する視差ベクトルの候補リストに視差ベクトル(IDVと呼ばれる)を含める。IDVベクトルを、図11で更に説明する。
[0226]図11は、候補視差ベクトルを決定することの一例を示す概念図である。図11は、ブロック128を含む現在ピクチャ126を示し、ここでブロック128は予測されるべきブロックである。図11では、ブロック130はブロック128に隣接し、動きベクトル138で示すように、ピクチャ134のブロック136を用いてインター予測される。この例では、ビデオデコーダ30は、AMVPモード又はマージモードを使用して動きベクトル138を決定し、ここでビデオデコーダ30は、ブロック130に対する候補動きベクトル予測子のリストを構築した。図11では、ビデオデコーダ30は、ブロック130に対する候補動きベクトル予測子を含んでおり、ここでビデオデコーダ30は、ブロック130に空間的に隣接する、空間的隣接ブロックの視差ベクトルに基づいて、ブロック130に対する候補動きベクトル予測子を決定した。言い換えれば、幾つかの例では、ビデオデコーダ30は、ブロック130に対する候補動きベクトル予測子を決定するために、本開示で説明する技法を実装した。
[0227]例えば、ビデオデコーダ30は、ブロック130に空間的に隣接するブロックが、ブロック130を含むピクチャと同じアクセス単位内で、異なるビュー内のブロックを指す視差動きベクトルに関してビュー間予測されるものと決定し得た。次に、ビデオデコーダ30は、異なるビュー内のブロックに対する動きベクトルを決定し得た。異なるビュー内のブロックに対する動きベクトルが、ブロック130をインター予測するために使用されるべきである参照ピクチャと同じアクセス単位(例えば、同じ時間インスタンス)内にあるピクチャを指す場合、ビデオデコーダ30は、ブロック130をインター予測するために異なるビュー内のブロックに対する動きベクトル情報を使用できた。
[0228]例えば、図11では、ブロック132は、ブロック130に空間的に隣接する。同じく、図11では、ブロック132は、視差動きベクトル144で示されるように、ピクチャ140のブロック142によってビュー間予測される。この例では、ピクチャ140及びピクチャ126は同じアクセス単位(例えば、同じ時間インスタンス)内にあるが、異なるビュー内にあり、それ故動きベクトル144は、視差動きベクトルである。この例では、ビデオデコーダ30は、視差動きベクトル144が、ブロック130に対する候補視差ベクトルであるものと決定した。
[0229]ブロック130に対する動きベクトルを決定するために、ビデオデコーダ30は、ブロック142(即ち、ブロック130に対する決定された視差ベクトルによって指されるブロック、ここでブロック130に対する決定された視差ベクトルは視差動きベクトル144である)の動きベクトルを決定する。図示のように、ブロック142は、動きベクトル150によって示されるように、ピクチャ146のブロック148に関してインター予測される。この例では、ビデオデコーダ30は、ブロック130に対する候補動きベクトル予測子として動きベクトル150を含む。例えば、ビデオエンコーダ20は、ブロック130がピクチャ134を用いてインター予測されるべきであるものと決定できた。この例では、ピクチャ146は、ピクチャ134と同じ時間インスタンス(例えば、同じアクセス単位)内にある。それ故、動きベクトル150は、ブロック130に対する有効な動きベクトル予測子であり得る。
[0230]図11では、ビデオデコーダ30は、動きベクトル150はブロック130に対する動きベクトル予測子であるものと決定し、ブロック130の動きベクトルを動きベクトル150に等しく設定した。例えば、図11は、ブロック130の動きベクトルである動きベクトル138を示す。この例では、ビデオデコーダ30は、動きベクトル150から動きベクトル138に延びる破線によって示されるように、動きベクトル150に基づいて動きベクトル138を決定する。例えば、動きベクトル138は、動きベクトル150の動きベクトル情報を継承した。
[0231]この例では、ビデオデコーダ30は、決定された視差ベクトル144(即ち、ブロック130の決定された視差ベクトルである、ブロック132の視差動きベクトル)に基づいてブロック130に対する動きベクトルを決定し、ブロック130はブロック128に空間的に隣接するので、ビデオデコーダ30は、ブロック128に対する候補視差ベクトルとして視差動きベクトル144を含む。この例では、視差動きベクトル144は、内在視差ベクトル(IDV)と呼ばれる。その上、この例では、ビデオデコーダ30は、内在視差ベクトル(即ち、視差動きベクトル144)に基づいてブロック130に対する動きベクトルを決定するので、ブロック130は、内在視差予測された(IDP)ブロックと呼ばれる。
[0232]図11は、空間的隣接ブロックに基づいてIDVの例を示すが、本開示で説明する技法は、そのように限定されないことに留意されたい。幾つかの例では、ブロック130とブロック132の両方が図11に示す空間的隣接ブロックであるのとは違って、ブロック130は時間的隣接ブロックであってよく、ブロック132は、ブロック130に隣接する空間的又は時間的隣接ブロックであってよい。従って、IDVの一例は、空間的隣接ブロックに基づいて決定されたIDVである。IDVの別の例は、時間的隣接ブロックに基づいて決定されたIDVである。
[0233]その上、本開示で説明する技法によれば、ビデオデコーダ30は、ブロックに対する動き情報が現在ブロックに対するIDVを決定するときに記憶される方式を構成し得る。例えば、IDVが空間的隣接ブロックに基づくとき、ビデオデコーダ30は、ブロックの領域(例えば、ブロックの8×4領域)に対する動きベクトルが視差動きベクトルであるかどうかを決定し得、ここで領域はインター予測されるべきブロックを含むピクチャと同じピクチャ内の複数のブロックを含み、ブロックのうちの少なくとも1つに対する動きベクトルは他のブロックに対する動きベクトルとは異なる。同じく、IDVが時間的隣接ブロックに基づくとき、ビデオデコーダ30は、ブロックの領域(例えば、ブロックの16×16領域)に対する動きベクトルが視差動きベクトルであるかどうかを決定し得、ここで領域はインター予測されるべきブロックを含むピクチャと異なるピクチャ内の複数のブロックを含む。
[0234]従って、ビデオデコーダ30は、ブロックの領域(即ち、現在ブロックに隣接する領域)は、領域に対する動きベクトルが領域に隣接するブロックの視差動きベクトルから導出される(即ち、図11のブロック132は図11のブロック130を含むブロックの領域に隣接する)とき、内在視差予測領域であるものと決定できる。領域が内在視差予測領域であるものと決定することに応答して、ビデオデコーダ30は、領域に隣接するブロックの視差動きベクトルが、現在ブロック(例えば、図11のブロック128)に対する視差ベクトルであるかどうかを決定できる。例えば、ビデオデコーダ30は、候補視差ベクトルのリスト内の領域に隣接するブロックの視差動きベクトルを含み得、視差動きベクトルを選択できる。この例では、視差動きベクトル(即ち、視差動きベクトル144)がブロック128に対する視差ベクトルであるものと決定する場合、ビデオデコーダ30は、視差動きベクトル144をブロック128に対する視差ベクトルとして使用して、ブロック128をインター予測復号することができる。幾つかの例では、隣接する領域に対する視差動きベクトルがブロック128に対する視差ベクトルであるものと決定されなかった(例えば、空間的又は時間的隣接領域に対する視差動きベクトルが、ブロック128に対する視差ベクトルであるものと決定しなかったか、又は空間的又は時間的隣接領域が、視差動きベクトルを用いてインター予測されなかった)場合、ビデオデコーダ30は、視差動きベクトル144をブロック128に対する視差ベクトルとして使用して、ブロック128をインター予測復号することができる。
[0235]このようにして、ビデオデコーダ30が、現在ブロックに空間的及び/又は時間的に隣接するブロックに対する動きベクトル情報を記憶した方式に基づいて、ビデオデコーダ30は、予測されるべきである現在ブロックに対する候補視差ベクトルのリストを構築し得る。候補視差ベクトルのこのリストは、1つ又は複数の空間視差ベクトル(SDV)、1つ又は複数の時間視差ベクトル(TDV)、及び/又は1つ又は複数の内在視差ベクトル(IDV)を含み得る。
[0236]ビデオデコーダ30は、候補視差ベクトルのリストから候補視差ベクトルのうちの1つを選択できる。本開示で説明するように、現在ブロックに対する候補視差ベクトルのリストを決定すること、及びリストから候補視差ベクトルを選択することは、STV及びGDVに関して上記で説明した問題を克服することができ、それにより、ビデオデコーダ30は、最小の複雑さで、時間的に効率よく、現在ブロックに対する視差ベクトルを決定できる。
[0237]どの候補視差ベクトルを選択するかを決定するためにビデオデコーダ30が使用する、様々な可能な基準が存在し得る。一例として、ビデオデコーダ30は、最も頻繁に発生する候補視差ベクトルを選択する。別の例として、ビデオデコーダ30は、第1の候補視差ベクトルを選択する(例えば、1つの候補視差ベクトルが発見されるとすぐに、ビデオデコーダ30は候補視差ベクトルを探すことを停止する)。この例では、ビデオデコーダ30は、最初にSDVを、次にTDVを、続いてIDVを発見できるが、SDV、TDV及びIDVの順序は例示のために提供されており、限定と見なされるべきではない。例えば、ビデオデコーダ30がSDVを発見する場合、SDVは視差ベクトルであり得る。しかしながら、SDVは存在しないが、ビデオデコーダ30がTDVを発見する場合、TDVは視差ベクトルであり得、以下同様である。
[0238]別の例として、ビデオデコーダ30が候補視差ベクトルのx成分とy成分との平方和、及びその和の結果の平方根を得ることによって決定された最短候補視差ベクトルを、ビデオデコーダ30が選択する。一般に、ビデオデコーダ30は、ビデオエンコーダ20から候補視差ベクトル内のインデックス値を受信することを含めて、候補視差ベクトルのリストから候補視差ベクトルを選択するための任意の技法を使用できる。
[0239]ビデオデコーダ30は、選択された候補視差ベクトルに基づいて現在ブロックの視差ベクトルを決定できる。例えば、ビデオデコーダ30は、選択された候補視差ベクトルを現在ブロックの視差ベクトルとして設定する。この例では、選択された候補視差ベクトルもまたx成分とy成分の両方を含んでいた場合、現在ブロックの決定された視差ベクトルは、x成分とy成分の両方を含み得る。幾つかの例では、ビデオデコーダ30は、現在ブロックの決定された視差ベクトル内に垂直成分が存在しないように、選択された候補視差ベクトルのy成分を0に等しく設定できる。
[0240]幾つかの例では、ビデオデコーダ30は、現在ブロックのビューと異なるビュー内にあるピクチャ内のブロックを識別するために、決定された視差ベクトルを使用する。ビデオデコーダ30は、現在ブロックのビューと異なるビュー内にあるピクチャ内のブロックに対する動きベクトルを決定する。この例では、ビデオデコーダ30は、現在ブロックに対する候補動きベクトル予測子のリストに候補動きベクトル予測子として決定された動きベクトルを含める。幾つかの例では、決定された動きベクトルが現在ピクチャをインター予測するために使用されるピクチャと同じ時間インスタンス内のピクチャを指す場合、ビデオデコーダ30は、現在ピクチャに対する候補動きベクトル予測子のリストに候補動きベクトル予測子として決定された動きベクトルを含める。
[0241]ビデオデコーダ30は、現在ブロックに対する動きベクトル予測子の候補リストに基づいて、現在ブロックにマージモード又はAMVPモードを実装できる。例えば、ビデオデコーダ30は、一例として、ビデオエンコーダ20から動きベクトル予測子のリスト内のインデックス値を受信することなどによって、動きベクトル予測子のうちの1つを選択できる。次に、ビデオデコーダ30は、上記で説明した方式で、選択された候補動きベクトル予測子に対する動きベクトル情報を使用する。
[0242]同じく、幾つかの例では、ビデオデコーダ30はまた、候補動きベクトル予測子として、決定された視差ベクトルを含む。例えば、上記で説明したように、候補動きベクトル予測子のリストは、必ずしも、動きベクトルを規定するシンタックス要素を受信することなく、ビデオデコーダ30が現在ブロックに対する動きベクトルを決定する方法を提供する。幾つかの場合には、決定された視差ベクトル(例えば、視差ベクトルの候補リストから選択された視差ベクトル)はまた、現在ブロックに対する適切な候補動きベクトル予測子であり得、候補動きベクトル予測子であり得る。
[0243]決定された視差ベクトルが候補動きベクトルである場合の例では、決定された視差ベクトルは、視差動きベクトルと見なされる。これは、これらの例では、視差ベクトルが指すブロックが、現在ブロックをインター予測するために直接使用される(例えば、ビデオエンコーダ20は視差ベクトルが指すブロックと現在ブロックとの間の残差を通知する)からである。
[0244]幾つかの例では、ビデオデコーダ30は、決定された視差ベクトルを変更する。例えば、上記で説明したように、現在ブロックに対する決定された視差ベクトルは、x成分とy成分の両方を含み得る。幾つかの例では、ビデオデコーダ30は、決定された視差ベクトルのy成分を0に等しく設定する。ビデオデコーダ30は、現在ブロックに対する候補動きベクトル予測子として、変更された視差ベクトルを含む。
[0245]幾つかの例では、ビデオデコーダ30は、マージモード又はAMVPモードの並列処理を実装する。例えば、HEVCにおいて、ビデオデコーダ30は、最大コード化単位(LCU)を並列動き推定領域(MER)に分割し得、異なるMERに属する、現在ブロックへのそれらの隣接ブロックだけが、動きベクトル予測子のリストのための構築プロセスに含まれることを可能にする。
[0246]ビデオエンコーダ20は、ピクチャパラメータセット(PPS)内のMERのサイズを規定できる。例えば、PPS内のlog2_parallel_merge_level_minus2シンタックス要素は、MERのサイズを規定する。更に、2N×2Nがコード化単位(CU)の最小サイズであるように、MERサイズがN×Nより大きいとき、空間的隣接ブロックは、それが現在ブロックと同じMERの中にある場合に利用不可と見なされる方式で、MERが実施されることを、HEVC規格が規定できる。
[0247]同じく、上記の技法は、ビュー間動き予測に関して説明されているが、これらの技法は、ビュー間残差予測に拡張可能である。例えば、ビュー間残差予測は、HEVCベースの3DVにおいて有効である。HEVCベースの3DVにおいて、深度マップから決定される視差ベクトルは、残差参照ビュー内の残差参照ブロックを位置指定するために使用される。残差予測が残差ブロックに対して有効であるとき、残差ブロックが、動き補償予測子及びこのブロックに対する通知された残差の他に加えられる。
[0248]幾つかの例では、ビュー間残差予測に対して、ビデオデコーダ30は、上記で説明した方式で(例えば、SDV、TDV及び/又はIDVに基づいて)視差ベクトルを決定できる。ビデオデコーダ30は、視差ベクトルが指すブロックを決定できる。この例では、ビュー間残差予測に対して、ビデオデコーダ30は、現在ブロックの残差情報をインター予測するために決定されたブロック(即ち、視差ベクトルが指すブロック)の残差情報を使用できる。ビデオエンコーダ20は、同様の技法を実装できる。
[0249]上記で説明したように、深度マップから決定される視差ベクトルに依存することは、計算が複雑であり、時間がかかる。従って、ビデオデコーダ30は、視差ベクトルを決定するために上記で説明した技法を使用でき、次に、上記で説明した技法と同様に、残差ブロックに対するビュー間残差予測を実装できる。
[0250]上記の例は、ビデオデコーダ30が、空間的隣接ブロック及び時間的隣接ブロックに基づいて、現在ブロックに対する視差ベクトルを決定する方式を説明した。以下の例は、どの隣接ブロックが視差ベクトルを用いてビュー間予測されるかを決定するために、空間的隣接ブロック及び時間的隣接ブロックのどちらが評価されるべきであるかを、ビデオデコーダ30が決定する方式を説明する。
[0251]例えば、所与の現在ビュー及び参照ビュー(例えば、ターゲット参照ビュー又は任意の他の従属ビュー)に対して、ビデオデコーダ30は、空間的隣接ブロック、時間的隣接ブロック、又は(内在視差ベクトルに対するような)隣接ブロックの隣接ブロックから候補視差ベクトルが発見されるときはいつでも、候補視差ベクトルを含み得る。幾つかの例では、ビデオデコーダ30は、最初に、空間的隣接ブロックから決定された視差ベクトルを含み、次に、候補視差ベクトルのリスト内の時間的隣接ブロックから決定された視差ベクトルを含み、続いて、隣接ブロックの隣接ブロックから決定された視差ベクトルを含む。幾つかの例では、ビデオデコーダ30は、最初に、時間的隣接ブロックから決定された視差ベクトルを含み、次に、候補視差ベクトルのリスト内の空間的隣接ブロックから決定された視差ベクトルを含み、続いて、隣接ブロックの隣接ブロックから決定された視差ベクトルを含む。
[0252]幾つかの例では、ビデオデコーダ30は、最初に、空間的隣接ブロックのうちのいずれかが視差動きベクトルを用いてビュー間予測されるかどうかを決定し、視差動きベクトルが発見される場合、ビデオデコーダ30は、視差ベクトルの候補のリストにその視差動きベクトルを含めることができ、時間的隣接ブロックのうちのいずれかが視差動きベクトルを用いてビュー間予測されるかどうかを決定することに進まなくてよい。幾つかの例では、ビデオデコーダ30は、最初に、時間的隣接ブロックのうちのいずれかが視差動きベクトルを用いてビュー間予測されるかどうかを決定し、視差動きベクトルが発見される場合、ビデオデコーダ30は、視差ベクトルの候補のリストにその視差動きベクトルを含めることができ、空間的隣接ブロックのうちのいずれかが視差動きベクトルを用いてビュー間予測されるかどうかを決定することに進まなくてよい。空間的/時間的隣接ブロック及び隣接ブロックの隣接ブロックの検査順序は、任意の順列で可能である。
[0253]空間的隣接ブロック又は時間的隣接ブロックに対して、ビデオデコーダ30は、空間的隣接ブロック又は時間的隣接ブロックに対する動きベクトルがRefPicList0内のピクチャを指すかどうかを決定し、動きベクトルが視差動きベクトルである場合、ビデオデコーダ30は、候補視差ベクトルのリストにこの視差動きベクトルを含めることができる。場合によっては、空間的隣接ブロック又は時間的隣接ブロックに対する動きベクトルが、RefPicList1/RefPicListC内のピクチャを指す場合、ビデオデコーダ30は、候補視差ベクトルのリストにこの視差動きベクトルを含めることができる。前の例では、ビデオデコーダ30は、最初にRefPicList0を、次にRefPicList1/RefPicListCを検査した。幾つかの例では、ビデオデコーダ30は、最初にRefPicList1/RefPicListCを、次にRefPicList0を検査する。幾つかの例では、1つだけの参照ピクチャリスト、例えばRefPicList0又はRefPicList1だけが検査され得る。
[0254]空間的隣接ブロックに対して、ビデオデコーダ30は、隣接領域に対する動きベクトルが任意の順序の(例えば、左上から始まって右上に達するか、又は右上から始まって左上に達する)視差動きベクトルであるかどうかを決定できる。ビデオデコーダ30が、必ずしも領域内の動きベクトルを決定するとは限らない、幾つかの例では、ビデオデコーダ30は、任意の順序で、空間的に隣接する4×4ブロックのうちのいずれかの動きベクトルが、AMVPモード又はマージモードに対する視差動きベクトルであるかどうかを決定できる。例えば、ビデオデコーダ30が4×4の空間的隣接ブロックを検査する順序は、例えば、ビュー間動き予測を使用しないHEVC規格によって規定された順序であり得る。例えば、ビュー間動き予測を使用しないマージモードに対して、HEVCは、ビデオデコーダ30が、図4に示すように、A1、B1、B0、A0及びB2の順序で動きベクトルを検査することを規定する。この例では、ビデオデコーダ30は、A1、B1、B0、A0及びB2のうちのいずれかに対する動きベクトルが視差動きベクトルであるかどうかを、その順序で決定できる。
[0255]代替として、ビデオデコーダ30は、上記の5つのブロック(即ち、A1、B1、B0、A0及びB2)の順序における任意の順列、又は空間的隣接領域の任意の順列を使用できる。幾つかの例では、ビデオデコーダ30は、隣接ブロック又は隣接領域のサブセットに対する動きベクトルが、視差動きベクトルであるかどうかを、幾つかの例では、任意の順列において、決定できる。
[0256]同じく、空間的隣接ブロックが、予測されるべき現在ブロックと同じMER内にある場合、ビデオデコーダ30は、空間的隣接ブロックが視差動きベクトルを用いてビュー間予測されるかどうかを決定しない。しかしながら、本開示で説明する技法は、そのように限定されない。幾つかの他の例では、空間的隣接ブロックが、予測されるべき現在ブロックと同じMER内にある場合、ビデオデコーダ30は、そのブロックが視差動きベクトルを用いてビュー間予測されるかどうかを決定する。
[0257]上記で説明したように、幾つかの例では、ビデオデコーダ30が、空間的隣接ブロックがブロックごとにビュー間予測されるかどうかを決定することは、必ずしも必要であるとは限らないが、空間的隣接ブロックが領域ごとにビュー間予測されるかどうかを決定できる。例えば、領域は、複数のブロックを含み得る。一例として、ブロックは4×4であってよく、領域は、8×4領域を包含する2つのブロックであってよい。ブロック及び領域の他のサイズが可能であり、本開示で説明する技法は、4×4ブロック及び8×4領域の例に限定されると見なされるべきではない。
[0258]時間的隣接ブロックに対して、ビデオデコーダ30は、時間的隣接ブロックが視差動きベクトルを用いてビュー間予測されるかどうか決定するために、どの同一位置に配置されたピクチャを評価するか、及び同一位置に配置されたピクチャ内のどのブロックを評価するかを決定できる。例えば、幾つかの例では、同一位置に配置されたピクチャを選択するために、ビデオデコーダ30は、現在ブロックを含む現在ピクチャの参照ピクチャリスト(複数可)内で識別されるピクチャを評価する。これらの例では、ビデオデコーダ30は、参照ピクチャリスト(複数可)内で識別されるピクチャを、昇順(例えば、リスト内の最初のピクチャから始まって最後のピクチャで終了する)で評価する。幾つかの例では、ビデオデコーダ30は、参照ピクチャリスト(複数可)内で識別されるピクチャを、降順(例えば、リスト内の最後のピクチャから始まってリスト内の最初のピクチャで終了する)で評価する。
[0259]一例として、ビデオエンコーダ20によって通知されるnum_ref_idx_l0_active_minus1シンタックス要素はRefPicList0内のエントリーの数を識別し、ビデオエンコーダ20によって通知されるnum_ref_idx_l1_active_minus1シンタックス要素又はnum_ref_idx_1C_active_minus1は、それぞれRefPicList1又はRefPicListC内のエントリーの数を識別する。num_ref_idx_lC_active_minus1シンタックス要素は、現在のHEVC規格の一部分ではないが、追加の例として本明細書に含まれる。例示のために、参照ピクチャリストがRefPicList0及びRefPicList1である技法について説明する。この例では、Nを、参照ピクチャリスト(複数可)内のエントリーの数を規定する、これらの2つの通知された値のうちの大きい方に等しくさせる。同じく、ref_idxが、RefPicList0又はRefPicList1内の参照インデックスを指すようにする。
[0260]一例では、ビデオデコーダ30は、上記で説明したcollocated_from_l0_flagの値に基づいて、RefPicList0及びRefPicList1内で識別されるピクチャを検査する。例えば、collocated_from_l0_flagが0である場合、ビデオデコーダ30は、最初に、RefPicList0[ref_idx]、ここでref_idxは0〜Nに及ぶ、の中で識別されたピクチャが、視差動きベクトルに関してビュー間予測される同一位置に配置されたブロックを含むかどうかを決定する。RefPicList0内のピクチャ内の同一位置に配置されたブロックのうちのいずれもが、視差動きベクトルを用いてビュー間予測されない場合、ビデオデコーダ30は、RefPicList1[ref_idx]、ここでref_idxは0〜Nに及ぶ、の中で識別されたピクチャが、視差動きベクトルに関してビュー間予測される同一位置に配置されたブロックを含むかどうかを決定する。
[0261]collocated_from_l0_flagが1である場合、ビデオデコーダ30は、最初に、RefPicList1[ref_idx]、ここでref_idxは0〜Nに及ぶ、の中で識別されたピクチャが、視差動きベクトルに関してビュー間予測される同一位置に配置されたブロックを含むかどうかを決定する。RefPicList1内のピクチャ内の同一位置に配置されたブロックのうちのいずれもが、視差動きベクトルを用いてビュー間予測されない場合、ビデオデコーダ30は、RefPicList0[ref_idx]、ここでref_idxは0〜Nに及ぶ、の中で識別されたピクチャが、視差動きベクトルに関してビュー間予測される同一位置に配置されたブロックを含むかどうかを決定する。
[0262]幾つかの例では、ビデオデコーダ30は、最初に、RefPicList0[ref_idx]によって識別される、RefPicList0内のいずれかのピクチャが、collocated_from_l0_flagの値にかかわらず視差ベクトルを用いてビュー間予測される同一位置に配置されたブロックを含むかどうかを検査し、次に、RefPicList1[ref_idx]によって識別される、RefPicList1内のいずれかのピクチャが、collocated_from_l0_flagの値にかかわらず視差ベクトルを用いてビュー間予測される同一位置に配置されたブロックを含むかどうかを検査する。幾つかの例では、ビデオデコーダ30は、最初に、RefPicList1[ref_idx]によって識別される、RefPicList1内のいずれかのピクチャが、collocated_from_l0_flagの値にかかわらず視差ベクトルを用いてビュー間予測される同一位置に配置されたブロックを含むかどうかを検査し、次に、RefPicList0[ref_idx]によって識別される、RefPicList0内のいずれかのピクチャが、collocated_from_l0_flagの値にかかわらず視差ベクトルを用いてビュー間予測される同一位置に配置されたブロックを含むかどうかを検査する。
[0263]RefPicList0又はRefPicList1内のピクチャを検査するとき、ピクチャのうちの1つが現在ブロックのビューと異なるビュー内のピクチャに対するものである場合、ビデオデコーダ30は、視差ベクトルを用いてビュー間予測されるようなピクチャ内に同一位置に配置されたブロックが存在するかどうかは決定しなくてよい(例えば、参照ピクチャリスト内の異なるビューからのピクチャはスキップされ得る)。代替として、ビデオデコーダ30は、現在ピクチャのビューと異なるビュー内のピクチャが、視差動きベクトルを用いてビュー間予測される同一位置に配置されたブロックを含むかどうかを決定できる。例えば、現在ブロックのビューと異なるビュー内のピクチャは、現在ビューを含むピクチャと同じアクセス単位内の、前に復号されたピクチャであり得る。
[0264]幾つかの例では、ビデオデコーダ30は、ピクチャがRefPicList0又はRefPicList1内に含まれない場合でも、現在ピクチャのビューと異なるビュー内のピクチャが、視差動きベクトルを用いてビュー間予測される同一位置に配置されたブロックを含むかどうかを決定できる。これらの例では、幾つかの例で、現在ブロックを含むピクチャと同じアクセス単位内のピクチャを有するマルチビューが存在することが起こり得る。これらの場合には、ビデオデコーダ30は、ビュー順序インデックスの降順でピクチャを検査できる。例えば、ビデオデコーダ30は、最高のビュー順序インデックスを有するビュー内のピクチャが、視差動きベクトルを用いてビュー間予測される同一位置に配置されたブロックを含むかどうかを決定し得、続いて、2番目に最高のビュー順序インデックスを有するビューによって同様に決定し得、以下同様である。
[0265]別の例では、ビデオデコーダ30は、異なるビュー内にあるピクチャの各々に対するビュー識別子と現在ブロックに対するビュー識別子との間の差を決定する。ビデオデコーダ30は、差に基づいて昇順でピクチャを検査する。例えば、現在ブロックを含む現在ピクチャと同じアクセス単位内にそれぞれ存在する第1のビュー内のピクチャと第2のビュー内のピクチャとが存在し、第1のビューに対するビュー識別子と現在ビューに対するビュー識別子との間の差は、第2のビューに対するビュー識別子と現在ビューに対するビュー識別子との間の差より小さいものと仮定する。この場合には、ビデオデコーダ30は、最初に、第1のビュー内のピクチャ内の同一位置に配置されたブロックのうちのいずれかが視差ベクトルを用いてビュー間予測されるかどうかを決定し得、ビュー間予測されない場合、第2のビュー内のピクチャ内の同一位置に配置されたブロックのうちのいずれかが視差ベクトルを用いてビュー間予測されるかどうかを決定する。
[0266]幾つかの例では、ビデオデコーダ30は、ピクチャのうちのいずれかが視差動きベクトルを用いてビュー間予測される同一位置に配置されたブロックを含むかどうかを決定するために、参照ピクチャリスト内で識別されたピクチャのサブセットだけを検査する。幾つかの例では、ピクチャのこのサブセットは、比較的小さい参照インデックスを用いて識別されたピクチャ(例えば、RefPicList0及びRefPicList1内の参照インデックス0及び参照インデックス1を用いて識別されるピクチャ)を含み得る。言い換えれば、ビデオデコーダ30は、RefPicList0及びRefPicList1の切り捨てバージョン(truncated version)で識別されたピクチャを検査できる。
[0267]上記は、ビデオデコーダ30が、視差動きベクトルを用いてビュー間予測される同一位置に配置されたブロックを識別するために、同一位置に配置されたピクチャを検査する順序の幾つかの例示的な方法を説明する。下記は、視差動きベクトルを用いてビュー間予測される同一位置に配置されたブロックを識別するために、ビデオデコーダ30が各ピクチャ内を検査する、同一位置に配置されたブロックを説明する。
[0268]上記で説明したように、同一位置に配置されたブロックの3つの例(例えば、図10に関して上記で説明した、CRブロック、CLCUブロック及びBRブロック)が存在し得る。幾つかの例では、ビデオデコーダ30は、どの同一位置に配置されたブロックが視差動きベクトルを用いてビュー間予測されるかを決定するために、CRブロック、CLCUブロック及びBRブロックの各々を検査できる。幾つかの例では、ビデオデコーダ30は、CRブロック、CLCUブロック及びBRブロックのうちの1つ又は複数であるが、3つ全てであるとは限らないブロックを検査できる。例えば、ビデオデコーダ30は、1つのインスタンス内のBRブロックを検査しなくてよく、1つのインスタンス内のCRブロックを検査しなくてよく、かつ1つのインスタンス内のCLCUブロックを検査しなくてよい。
[0269]幾つかの例では、ビデオデコーダ30が同一位置に配置されたブロックの3つの例を検査する順序は、異なるビュー内のピクチャに対して異なる。例えば、第1のビュー内のピクチャに対して、ビデオデコーダ30は、これらのブロックのうちのいずれかが、視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、最初にCRブロックを、続いてCLCUブロックを、次に、BRブロックを検査する。第2のビュー内のピクチャに対して、ビデオデコーダ30は、これらのブロックのうちのいずれかが、視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、最初にBRブロックを、続いてCRブロックを、次に、CLCUブロックを検査する。
[0270]CRブロック又はCLCUブロックの各々に対して、ビデオデコーダ30は、4×4ブロックのうちのいずれかが、視差動きベクトルを用いてビュー間予測されるかどうかを決定するために、CRブロック又はCLCUブロック内の4×4ブロックの各々をラスタ走査できる。ビデオデコーダ30がCLCUブロックをラスタ走査する場合の例では、ビデオデコーダ30は、CRブロックの4×4ブロックをスキップし得、CRブロックの4×4ブロックのうちのいずれかが、視差動きベクトルを用いてビュー間予測されるかどうかを決定しない。
[0271]しかしながら、4×4の時間的隣接ブロックの各々を検査することは、必要ではない。例えば、上記で説明したように、ビデオデコーダ30は、4×4ブロックの各々に対する動きベクトル情報ではなく、動きベクトル圧縮によって16の4×4ブロックを含む1つの16×16領域に対して動きベクトル情報を記憶できる。これらの例では、ビデオデコーダ30は、16×16領域に対する動きベクトルが視差動きベクトルであるかどうかを決定するために、ラスタ走査順に16×16領域を検査できる。ビデオデコーダ30は、同一位置に配置されたピクチャが異なるアクセス単位内にあるが同じビュー内にある場合の例において、及び同一位置に配置されたピクチャが同じアクセス単位内にあるが異なるビュー内にある場合の例において、16×16領域内を検査できる。
[0272]16×16領域は一例として説明されており、限定と見なされるべきでない。幾つかの例では、領域は、16×16より大きくても小さくてもよく、かつ時間的隣接ブロック(例えば、同じビュー内であるが異なる時間インスタンス内にあるピクチャ内のブロック、又は異なるビュー内であるが同じ時間インスタンス内にあるピクチャ内のブロック)に対する動きベクトル情報をビデオデコーダ30が圧縮する方式に基づくことができる。
[0273]幾つかの例では、ビデオデコーダ30は、N×Nブロック上の同一位置に配置されたブロックについてラスタ走査することができ、ここで2N×2Nは、最小のコード化単位(CU)のサイズである。幾つかの例では、ビデオデコーダ30は、予測単位(PU)についてラスタ走査することができる。
[0274]本開示で説明する技法によれば、(例えば、空間的隣接ブロック及び時間的隣接ブロックの走査に基づいて)少なくとも1つの視差動きベクトルを識別した後、ビデオデコーダ30は、異なる目的で視差動きベクトルを使用できる。一例として、ビデオデコーダ30は、現在ブロックに対する候補視差ベクトルのリストに視差動きベクトルを含めることができ、選択された候補視差ベクトルによって指されるブロックに対する動きベクトル情報は、AMVPモード及びマージモードに対する候補動きベクトル予測子のリストに含められる。別の例として、ビデオデコーダ30は、候補動きベクトル予測子のリストに視差動きベクトルを含めることができる。この例では、幾つかの例で、ビデオデコーダ30は、視差動きベクトルのy成分をゼロに等しく設定することによって、視差動きベクトルを変更できる。
[0275]上記の例示的な技法は、ビデオデコーダ30の観点から説明されているが、本開示で説明する技法は、そのように限定されない。一般に、ビデオエンコーダ20は、ビデオデコーダ30に関して上記で説明した技法と同様の技法を実装するように構成され得る。その上、幾つかの例では、ビデオデコーダ30は、本開示で説明する技法を実装するように構成されるが、ビデオエンコーダ20はそうではない。幾つかの例では、ビデオデコーダ20は、本開示で説明する技法を実装するように構成されるが、ビデオエンコーダ30はそうではない。幾つかの例では、ビデオエンコーダ20とビデオデコーダ30の両方が、本開示で説明する技法を実装するように構成される。
[0276]従って、本開示は、第1のビュー内のピクチャ内の領域に対する動きベクトルが視差動きベクトルであるかどうかを決定するように構成されたビデオコーダ(例えば、ビデオエンコーダ20及び/又はビデオデコーダ30)を説明する。この例では、領域は、予測されるべきである現在ブロックに、時間的又は空間的に隣接する。例えば、領域は、1つ又は複数の時間的又は空間的隣接ブロックを含み、この領域に対する動きベクトルは、1つの参照ピクチャリストに対する複数の時間的又は空間的隣接ブロックに対する単一の動きベクトルを表す。例えば、2つの参照ピクチャリストからインター予測される場合、領域に対する1つの動きベクトルは1つの参照ピクチャリスト(例えば、RefPicList0又はRefPicList1のうちの一方)に対して1つ又は複数のブロックに対する単一の動きベクトルを表し、領域に対する別の動きベクトルは別の参照ピクチャリスト(例えば、RefPicList0又はRefPicList1のうちの他方)に対して1つ又は複数のブロックに対する単一の動きベクトルを表す。ビデオコーダは、現在ブロックに対する候補視差ベクトルのリストに視差動きベクトルを含めるように更に構成される。同じく、幾つかの例では、現在ブロックは、瞬時デコーダリフレッシュ(IDR)ピクチャ又はクリーンランダムアクセス(CRA)ピクチャのブロックである。
[0277]領域が空間的隣接領域である場合の例では、領域は、2つの4×4ブロックを含む1つの8×4領域であり得る。この例では、空間的隣接領域を含むピクチャはまた、予測されるべきである現在ブロックを含む。領域が時間的隣接領域である場合の例では、領域は、16の4×4ブロックを含む1つの16×16領域であり得る。この例では、時間的隣接領域を含むピクチャは、現在ブロックを含まない。上記で説明したように、圧縮が、時間的及び/又は空間的隣接ブロックに対する動きベクトル情報を記憶するために使用されない場合、空間的隣接領域及び/又は時間的隣接領域は、複数のブロックではなく、1つのブロックを含み得る。
[0278]本開示で説明する技法によれば、ビデオコーダは、参照ピクチャリスト(例えば、RefPicList0及びRefPicList1のうちの一方又は両方)内で識別されたピクチャ内の時間的隣接領域が視差動きベクトルを用いてビュー間予測されるかどうかを決定するように構成され得る。例えば、第1のピクチャの領域がビュー間予測されるかどうかをビデオコーダが決定した後、ビデオコーダは、第2のピクチャの領域がビュー間予測されるかどうかを決定する。第2のピクチャの領域がビュー間予測される場合、ビデオコーダは、現在ブロックに対する候補視差ベクトルのリストに第2のピクチャの領域に対する視差動きベクトルを含める。
[0279]この例では、第1のピクチャ及び第2のピクチャはいずれも、1つの参照ピクチャリストに属する。同じく、幾つかの例では、参照ピクチャリストは、第1のピクチャと第2のピクチャとを昇順で識別する。例えば、参照ピクチャリスト内の第1のピクチャを識別する参照インデックスは、参照ピクチャリスト内の第2のピクチャを識別する参照インデックスより小さい。言い換えれば、第1のピクチャは、参照ピクチャリスト内で第2のピクチャより早く識別される。
[0280]その上、ビデオコーダは、マージモード及びAMVPモードのためなど、ビュー間予測目的で視差動きベクトルを使用できる。例えば、ビデオコーダは、現在ブロックに対する視差ベクトルとして視差動きベクトルを設定する。ビデオコーダは、視差ベクトルが指すブロックを決定する。ビデオコーダはまた、視差ベクトルが指すブロックに対する動きベクトルを決定し、候補動きベクトル予測子のリストに視差動きベクトルを含める。ビデオコーダは、次に、候補動きベクトル予測子のうちの1つに基づいて現在ブロックをインター予測することができる。
[0281]幾つかの例では、ビデオコーダは、候補動きベクトル予測子のリストに視差動きベクトルを含める。例えば、ビデオコーダは、視差動きベクトルのy成分をゼロに等しく設定することによって視差動きベクトルを変更し、候補動きベクトル予測子のリストに変更された視差動きベクトルを含める。
[0282]幾つかの例では、ビデオコーダは、ビュー間残差予測に対して本開示で説明する技法を実装できる。例えば、ビデオコーダは、視差ベクトルが指すブロックを決定することができ、現在ブロックの残差情報をインター予測するために、視差ベクトルが指すブロック(即ち、決定されたブロック)の残差情報を使用できる。
[0283]図12は、本開示で説明する技法を実施できるビデオエンコーダの一例を示すブロック図である。例えば、図12は、ビデオスライス内のビデオブロックのイントラコード化とインターコード化とを実行できるビデオエンコーダ20を示す。例えば、ビデオエンコーダ20は、インター予測符号化又はイントラ予測符号化を実行できる。イントラコード化は、所与のビデオフレーム又はピクチャ内のビデオの空間的冗長性を低減又は除去するために空間的予測に依拠する。インターコード化は、ビデオシーケンスの隣接フレーム又はピクチャ内のビデオの時間的冗長性を低減又は除去するために時間的予測に依拠する。イントラモード(Iモード)は、幾つかの空間ベースの圧縮モードのいずれかを指し得る。単方向予測(Pモード)又は双予測(Bモード)などのインターモードは、幾つかの時間ベースの圧縮モードのいずれかを指し得る。
[0284]図12の例では、ビデオエンコーダ20は、区分化ユニット152と、予測単位154と、参照ピクチャメモリ176と、加算器162と、変換単位164と、量子化ユニット166と、エントロピー符号化ユニット168とを含む。予測処理ユニット154は、動き推定ユニット156と、動き補償ユニット158と、イントラ予測ユニット160とを含む。ビデオブロック復元のために、ビデオエンコーダ20はまた、逆量子化処理ユニット170と、逆変換処理ユニット172と、加算器174とを含む。ブロック境界をフィルタ処理して、復元されたビデオからブロッキネスアーティファクトを除去するデブロッキングフィルタ(図12に図示せず)も含むことができる。必要な場合、デブロッキングフィルタは、通常、加算器174の出力をフィルタ処理することになる。デブロッキングフィルタに加えて、(ループ内又はループ後の)追加ループフィルタも使用することができる。参照ピクチャメモリ176は、復号ピクチャバッファ(DPB)の一例である。
[0285]図12に示すように、ビデオエンコーダ20はビデオデータを受信し、区分化ユニット152はデータをビデオブロックに区分する。この区分は、例えば、LCU及びCUの4分木構造に応じて、スライス、タイル、又は他のより大きいユニットへの区分化、及びビデオブロック区分をも含み得る。ビデオエンコーダ20は、概して、符号化されるべきビデオスライス内のビデオブロックを符号化する構成要素を示す。スライスは、複数のビデオブロックに(及び、場合によっては、タイルと呼ばれるビデオブロックのセットに)分割され得る。予測処理ユニット154は、誤り結果(例えば、コード化レート及び歪みレベル)に基づいて、現在ビデオブロックのために、複数のイントラコード化モードのうちの1つ、又は複数のインターコード化モードのうちの1つなど、複数の可能なコード化モードのうちの1つを選択し得る。予測処理ユニット154は、得られたイントラコード化ブロック又はインターコード化ブロックを、残差ブロックデータを生成するために加算器162に与え、参照ピクチャとして使用するための符号化ブロックを再構成するために加算器174に与え得る。
[0286]予測処理ユニット154内のイントラ予測ユニット160は、空間圧縮を行うために、コード化されるべき現在ブロックと同じフレーム又はスライス中の1つ又は複数の隣接ブロックに対する現在ビデオブロックのイントラ予測コード化を実行し得る。予測処理ユニット154内の動き推定ユニット156及び動き補償ユニット158は、時間圧縮を行うために、1つ又は複数の参照ピクチャ中の1つ又は複数の予測ブロックに対する現在ビデオブロックのインター予測コード化を実行する。
[0287]動き推定ユニット156は、ビデオシーケンスの所定のパターンに従ってビデオスライスのためのインター予測モードを決定するように構成され得る。所定のパターンは、シーケンス中のビデオスライスをPスライス又はBスライスに指定し得る。動き推定ユニット156と動き補償ユニット158とは、高度に統合され得るが、概念的な目的のために別々に示されている。動き推定ユニット156によって実行される動き推定は、ビデオブロックの動きを推定する動きベクトルを生成するプロセスである。動きベクトルは、例えば、参照ピクチャ内の予測ブロックに対する現在ビデオフレーム又はピクチャ内のビデオブロックのPUの変位を示し得る。
[0288]予測ブロックは、絶対値差分和(SAD)、差分2乗和(SSD)、又は他の差分尺度によって決定され得る画素差分に関して、コード化されるべきビデオブロックのPUに厳密に一致することが分かるブロックである。幾つかの例では、ビデオエンコーダ20は、参照ピクチャメモリ176に記憶された参照ピクチャのサブ整数画素位置の値を計算し得る。例えば、ビデオエンコーダ20は、参照ピクチャの1/4画素位置、1/8画素位置、又は他の分数画素位置の値を補間し得る。従って、動き推定ユニット156は、フル画素位置と分数画素位置とに対する動き探索を実行し、分数画素精度で動きベクトルを出力し得る。
[0289]動き推定ユニット156は、PUの位置を参照ピクチャの予測ブロックの位置と比較することによって、インターコード化スライス中のビデオブロックのPUについての動きベクトルを計算する。参照ピクチャは、第1の参照ピクチャリスト(RefPicList0)又は第2の参照ピクチャリスト(RefPicList1)から選択され得、それらの参照ピクチャリストの各々は、参照ピクチャメモリ176に記憶された1つ又は複数の参照ピクチャを識別する。動き推定ユニット156は、計算された動きベクトルをエントロピー符号化ユニット168と動き補償ユニット158とに送る。
[0290]動き補償ユニット158によって実行される動き補償は、動き推定によって決定された動きベクトルに基づいて予測ブロックをフェッチ又は生成すること、場合によってはサブ画素精度への補間を実行することを伴い得る。現在ビデオブロックのPUのための動きベクトルを受信すると、動き補償ユニット158は、参照ピクチャリストのうちの1つにおいて動きベクトルが指す予測ブロックの位置を特定し得る。ビデオエンコーダ20は、コード化されている現在ビデオブロックの画素値から予測ブロックの画素値を減算し、画素差分値を形成することによって残差ビデオブロックを形成する。画素差分値は、ブロックの残差データを形成し、ルーマ差分成分とクロマ差分成分の両方を含み得る。加算器162は、この減算演算を実行する1つ又は複数の構成要素を表す。動き補償ユニット158はまた、ビデオスライスのビデオブロックを復号する際にビデオデコーダ30が使用するための、ビデオブロックとビデオスライスとに関連するシンタックス要素を生成し得る。動き推定ユニット156及び動き補償ユニット158は共に、同様に、インター予測を実装することができ、ここでブロックは、別のビュー内のブロックに関してインター予測される。
[0291]イントラ予測ユニット160は、上記で説明したように、動き推定ユニット156と動き補償ユニット158とによって実行されるインター予測の代替として、現在ブロックをイントラ予測し得る。特に、イントラ予測ユニット160は、現在ブロックを符号化するために使用すべきイントラ予測モードを決定し得る。幾つかの例では、イントラ予測ユニット160は、例えば、別個の符号化パス中に、様々なイントラ予測モードを使用して現在ブロックを符号化し得、イントラ予測ユニット160(又は、幾つかの例では、モード選択ユニット)は、テストされたモードから使用するのに適切なイントラ予測モードを選択し得る。例えば、イントラ予測ユニット160は、様々なテストされたイントラ予測モードのためのレート歪み分析を使用してレート歪み値を計算し、テストされたモードの中で最良のレート歪み特性を有するイントラ予測モードを選択し得る。レート歪み分析は、概して、符号化ブロックと、符号化ブロックを生成するために符号化された元の符号化されていないブロックとの間の歪み(又は誤差)の量、ならびに符号化ブロックを生成するために使用されるビットレート(即ち、ビット数)を決定する。イントラ予測ユニット160は、どのイントラ予測モードがブロックについて最良のレート歪み値を呈するかを決定するために、様々な符号化ブロックの歪み及びレートから比を計算し得る。
[0292]いずれの場合も、ブロックのイントラ予測モードを選択した後に、イントラ予測ユニット160は、ブロックについての選択されたイントラ予測モードを示す情報をエントロピー符号化ユニット168に提供し得る。エントロピー符号化ユニット168は、本開示の技法に従って選択されたイントラ予測モードを示す情報を符号化し得る。ビデオエンコーダ20は、送信ビットストリーム中に、複数のイントラ予測モードインデックステーブル及び複数の変更されたイントラ予測モードインデックステーブル(コードワードマッピングテーブルとも呼ばれる)と、様々なブロックの符号化コンテキストの定義と、コンテキストの各々について使用すべき、最確イントラ予測モード、イントラ予測モードインデックステーブル、及び変更されたイントラ予測モードインデックステーブルの指示とを含み得る構成データを含み得る。
[0293]予測処理ユニット154が、インター予測又はイントラ予測のいずれかを介して、現在ビデオブロックのための予測ブロックを生成した後、ビデオエンコーダ20は、現在ビデオブロックから予測ブロックを減算することによって残差ビデオブロックを形成する。残差ブロックにおける残差ビデオデータは、1つ又は複数のTUに含まれ得、変換処理ユニット164に適用され得る。変換処理ユニット164は、変換、例えば離散コサイン変換(DCT)又は概念的に同様の変換を使用して、残差ビデオデータを残差変換係数に変換する。変換処理ユニット164は、画素領域からの残差ビデオデータを周波数領域などの変換領域に変換し得る。
[0294]変換処理ユニット164は、得られた変換係数を量子化処理ユニット166に送り得る。量子化処理ユニット166は、ビットレートを更に低減するために変換係数を量子化する。量子化プロセスは、係数の一部又は全部に関連するビット深度を低減することができる。量子化の程度は、量子化パラメータを調整することによって変更され得る。幾つかの例では、量子化処理ユニット166は、次いで、量子化された変換係数を含む行列の走査を実行し得る。代替的に、エントロピー符号化ユニット168が走査を実行し得る。
[0295]量子化の後、エントロピー符号化ユニット168は、量子化変換係数をエントロピー符号化する。例えば、エントロピー符号化ユニット168は、コンテキスト適応型可変長コード化(CAVLC)、コンテキスト適応型バイナリ算術コード化(CABAC)、シンタックスベースコンテキスト適応型バイナリ算術コード化(SBAC)、確率間隔区分エントロピー(PIPE)コード化又は別のエントロピー符号化方法又は技法を実行し得る。エントロピー符号化ユニット168によるエントロピー符号化の後に、符号化ビットストリームは、ビデオデコーダ30に送信されるか、あるいはビデオデコーダ30が後で送信するか又は取り出すためにアーカイブされ得る。エントロピー符号化ユニット168はまた、コード化されている現在ビデオスライスのための動きベクトルと他のシンタックス要素とをエントロピー符号化し得る。
[0296]逆量子化処理ユニット170及び逆変換処理ユニット172は、それぞれ逆量子化及び逆変換を適用して、参照ピクチャの参照ブロックとして後で使用するために、画素領域において残差ブロックを再構成する。動き補償ユニット158は、残差ブロックを参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つの予測ブロックに加算することによって参照ブロックを計算し得る。動き補償ユニット158はまた、再構成された残差ブロックに1つ又は複数の補間フィルタを適用して、動き推定において使用するサブ整数画素値を計算し得る。加算器174は、再構成された残差ブロックを動き補償ユニット158によって生成された動き補償予測ブロックに加算して、参照ピクチャメモリ176に記憶するための参照ブロックを生成する。参照ブロックは、後続のビデオフレーム又はピクチャ中のブロックをインター予測するために、動き推定ユニット156及び動き補償ユニット158によって参照ブロックとして使用され得る。
[0297]このようにして、ビデオエンコーダ20は、本開示で説明する1つ又は複数の例示的な技法を実装するように構成されたビデオエンコーダの一例である。例えば、予測処理ユニット154は、空間的及び時間的隣接領域の視差動きベクトルに基づいて現在ブロックに対する視差ベクトルを決定するように構成され得る。予測処理ユニット154はまた、候補動きベクトル予測子のリストのための候補動きベクトル予測子を決定するために、決定された視差ベクトルを使用するように構成され得る。幾つかの例では、予測処理ユニット154は決定された視差ベクトルを変更し、候補動きベクトル予測子のリストに変更された、決定された視差ベクトルを含むことができる。予測処理ユニット154はまた、ビュー間動き予測及びビュー間残差予測のために構成され得る。
[0298]幾つかの例では、予測処理ユニット154以外のユニットが、上記で説明した例を実装することができる。幾つかの他の例では、予測処理ユニット154は、ビデオエンコーダ20の1つ又は複数の他のユニットとともに、上記で説明した例を実装することができる。幾つかの他の例では、ビデオエンコーダ20のプロセッサ又はユニット(図12には図示せず)は、単独で、又はビデオエンコーダ20の他のユニットとともに、上記で説明した例を実装することができる。
[0299]図13は、本開示で説明する技法を実装し得るビデオデコーダの一例を示すブロック図である。例えば、ビデオデコーダ30は、インター予測復号又はイントラ予測復号を実行することができる。図13は、ビデオデコーダ30を示す。図13の例では、ビデオデコーダ30は、エントロピー復号ユニット180と、予測処理ユニット181と、逆量子化処理ユニット186と、逆変換処理ユニット188と、加算器190と、参照ピクチャメモリ192とを含む。予測処理ユニット181は、動き補償ユニット182と、イントラ予測単位184とを含む。ビデオデコーダ30は、幾つかの例では、図12のビデオエンコーダ20に関して説明した符号化パスとは概して逆の復号パスを実行し得る。参照ピクチャメモリ192は、復号ピクチャバッファ(DPB)の一例である。
[0300]復号プロセス中に、ビデオデコーダ30は、ビデオエンコーダ20から、符号化ビデオスライスのビデオブロックと、関連するシンタックス要素とを表す符号化ビデオビットストリームを受信する。ビデオデコーダ30のエントロピー復号ユニット180は、量子化係数、動きベクトル、及び他のシンタックス要素を生成するためにビットストリームをエントロピー復号する。エントロピー復号ユニット180は、予測処理ユニット181に動きベクトルと他のシンタックス要素とを転送する。ビデオデコーダ30は、ビデオスライスレベル及び/又はビデオブロックレベルでシンタックス要素を受信し得る。
[0301]ビデオスライスがイントラコード化(I)スライスとしてコード化されたとき、予測処理ユニット181のイントラ予測単位184は、シグナリングされたイントラ予測モードと、現在フレーム又はピクチャの、前に復号されたブロックからのデータとに基づいて、現在ビデオスライスのビデオブロックのための予測データを生成し得る。ビデオフレームがインターコード化(即ち、B、又はP)スライスとしてコード化されるとき、予測処理ユニット181の動き補償ユニット182は、エントロピー復号ユニット180から受信された動きベクトル及び他のシンタックス要素に基づいて、現在のビデオスライスのビデオブロックのための予測ブロックを生成する。予測ブロックは、参照ピクチャリストのうちの1つ内の参照ピクチャのうちの1つから生成され得る。ビデオデコーダ30は、参照ピクチャメモリ192に記憶された参照ピクチャに基づいて、デフォルト構成技法を使用して参照ピクチャリスト(RefPicList0及びRefPicList1)を構成し得る。
[0302]動き補償ユニット182は、動きベクトルと他のシンタックス要素とを解析することによって現在ビデオスライスのビデオブロックについての予測情報を決定し、予測情報を使用して、復号されている現在ビデオブロックのための予測ブロックを生成する。例えば、動き補償ユニット182は、ビデオスライスのビデオブロックをコード化するために使用される予測モード(例えば、イントラ又はインター予測)と、インター予測スライスタイプ(例えば、Bスライス又はPスライス)と、スライスの参照ピクチャリストのうちの1つ又は複数についての構成情報と、スライスの各インター符号化ビデオブロックについての動きベクトルと、スライスの各インターコード化ビデオブロックについてのインター予測ステータスと、現在ビデオスライス中のビデオブロックを復号するための他の情報とを決定するために、受信されたシンタックス要素の幾つかを使用する。
[0303]動き補償ユニット182はまた、補間フィルタに基づいて補間を実施し得る。動き補償ユニット182は、ビデオブロックの符号化中にビデオ符号器20によって使用される補間フィルタを使用して、参照ブロックのサブ整数画素の補間値を計算し得る。この場合、動き補償ユニット182は、受信されたシンタックス要素からビデオ符号器20によって使用された補間フィルタを決定し、その補間フィルタを使用して予測ブロックを生成し得る。
[0304]逆量子化処理ユニット186は、ビットストリーム中で与えられ、エントロピー復号ユニット180によって復号された、量子化変換係数を逆量子化(inverse quantize)、(即ち、逆量子化(de-quantize))する。逆量子化プロセスは、ビデオスライス中の各ビデオブロックについてビデオエンコーダ20によって計算される量子化パラメータを使用して量子化の程度を決定し、同様に、適用すべき逆量子化の程度を決定することを含み得る。逆変換処理ユニット188は、画素領域において残差ブロックを生成するために、逆変換(例えば、逆DCT、逆整数変換、又は概念的に同様の逆変換プロセス)を変換係数に適用する。
[0305]動き補償ユニット182が、動きベクトル及び他のシンタックス要素に基づいて現在のビデオブロックのための予測ブロックを生成した後、ビデオデコーダ30は、逆変換処理ユニット188からの残差ブロックを動き補償ユニット182によって生成された対応する予測ブロックと加算することによって、復号ビデオブロックを形成する。加算器190は、この加算演算を実行する1つ又は複数のコンポーネントを表す。所望される場合、ブロッキネスアーティファクトを除去するために、復号ブロックをフィルタリングするためのデブロッキングフィルタも適用され得る。画素遷移を平滑化するか、又はさもなければビデオ品質を改善するために、(コード化ループ内又はコード化ループ後の)他のループフィルタも使用され得る。次いで、所与のピクチャ内の復号されたビデオブロックは、その後の動き補償に使用される参照ピクチャを記憶する参照ピクチャメモリ192に記憶される。参照ピクチャメモリ192はまた、図1の表示装置32などの表示装置上に後で提示するための、復号されたビデオを記憶する。
[0306]このようにして、ビデオデコーダ30は、本開示で説明する1つ又は複数の技法を実装するように構成されたビデオデコーダの一例である。例えば、予測処理ユニット181は、空間的及び時間的隣接領域の視差動きベクトルに基づいて現在ブロックに対する視差ベクトルを決定するように構成され得る。予測処理ユニット181はまた、候補動きベクトル予測子のリストのための候補動きベクトル予測子を決定するために決定された視差ベクトルを使用するように構成され得る。幾つかの例では、予測処理ユニット181は決定された視差ベクトルを変更し、候補動きベクトル予測子のリストに変更された決定された視差ベクトルを含むことができる。予測処理ユニット181はまた、ビュー間動き予測及びビュー間残差予測を実行するように構成され得る。
[0307]幾つかの例では、予測処理ユニット181以外のユニットが、上記で説明した例を実装することができる。幾つかの例では、予測処理ユニット181は、ビデオデコーダ30の1つ又は複数の他のユニットとともに、上記で説明した例を実装することができる。更に幾つかの他の例では、ビデオデコーダ30のプロセッサ又はユニット(図13には図示せず)は、単独で、又はビデオデコーダ30の他のユニットとともに、上記で説明した例を実装することができる。
[0308]図14は、本開示で説明する1つ又は複数の技法によるビデオデコーダの例示的な動作を示すフローチャートである。ビデオデコーダの一例は、ビデオデコーダ30である。図14に示すように、ビデオデコーダ30は、領域に対する動きベクトルが視差動きベクトルであるかどうかを決定できる(194)。例えば、領域は1つ又は複数のブロックを含み、複数のビューのうちの第1のビュー内のピクチャ内に存在することができる。領域に対する動きベクトルは、1つの参照ピクチャリスト(即ち、RefPicList0又はRefPicList1)に対する領域内の1つ又は複数のブロックに対する単一の動きベクトルを表し得る。簡単のために、技法は、参照ピクチャリストのうちの1つに対するものである領域に対する動きベクトルを用いて説明される。幾つかの場合には、領域に対する2つの動きベクトルが存在し得る。これらの例では、1つの参照ピクチャリストに対する領域内のブロックの全てに対する単一の動きベクトルと、他の参照ピクチャリストに対する領域内のブロックの全てに対する単一の動きベクトルとが存在し得る。
[0309]領域は、現在ブロックに隣接する(例えば、空間的に隣接する、時間的に隣接する)ことができる。領域はまた、現在ブロックに空間的又は時間的に隣接するブロックに、空間的又は時間的に隣接することができる。同じく、動きベクトルが、第2の異なるビュー内(例えば、領域を有するピクチャを含むビューと異なるビュー内)のピクチャを指す場合、動きベクトルは、視差動きベクトルであり得る。
[0310]ピクチャ内の領域に対する動きベクトルが視差動きベクトルであるものと決定することに応答して、ビデオデコーダ30は、領域に対する視差動きベクトルが現在ブロックに対する視差ベクトルであるかどうかを決定できる(196)。領域に対する視差動きベクトルが現在ブロックに対する視差ベクトルであるかどうかを、ビデオデコーダ30が決定できる、様々な方法が存在し得る。一例として、ビデオデコーダ30は、空間視差ベクトル(SDV)を決定するために空間的隣接領域を検査し、時間視差ベクトル(TDV)を決定するために時間的隣接領域を検査し、内在視差ベクトル(IDV)を決定するために空間的/時間的隣接ブロックの空間的/時間的隣接領域を検査することができる。ビデオデコーダ30は、SDV、TDV及びIDVを含む候補視差ベクトルのリストを構築し、現在ブロックに対する視差ベクトルとして候補視差ベクトルのうちの1つを選択することができる。別の例として、ビデオデコーダ30は、現在ブロックに対する視差ベクトルとして第1の視差動きベクトルを選択できる。領域に対する視差動きベクトルが現在ブロックに対する視差ベクトルであるかどうかを、ビデオデコーダ30が決定する、他の例示的な方法が存在し得る。
[0311]ビデオデコーダ30は、現在ブロックをインター予測復号する(198)。例えば、領域に対する視差動きベクトルが現在ブロックに対する視差ベクトルであるものと決定される場合、ビデオデコーダ30は、現在ブロックに対する視差ベクトルとして視差動きベクトルを使用して現在ブロックをインター予測復号する。インター予測復号は、ビデオデコーダ30によって実行されるインター予測を指す。例えば、ビデオデコーダ30は、視差ベクトルが指すブロックを決定できる。ビデオデコーダ30は、視差ベクトルが指すブロックに対する動きベクトルを決定し、候補動きベクトル予測子のリストに、視差ベクトルが指すブロックに対する動きベクトルを含める。この例では、視差ベクトルが指すブロックに対する動きベクトルが、マージモード又は拡張型動きベクトル予測(AMVP)モードの一部分として候補動きベクトル予測子のリストから選択されるとき、ビデオデコーダ30は、視差ベクトルが指すブロックに対する動きベクトルに基づいて現在ブロックをインター予測復号することができる。
[0312]図15は、本開示で説明する1つ又は複数の技法によるビデオエンコーダの例示的な動作を示すフローチャートである。ビデオエンコーダの一例は、ビデオエンコーダ20である。概して、ビデオエンコーダ20は、現在ブロックに対する視差ベクトルを決定することに関して、ビデオデコーダ30に対して図14において上記で説明した技法と同様の技法を実行できる。
[0313]例えば、ビデオエンコーダ20は、領域に対する動きベクトルが視差動きベクトルであるかどうかを決定できる(200)。ビデオエンコーダ20は、図14におけるビデオデコーダ30に関して上記で説明した方式と同様の方式で、領域に対する動きベクトルが視差動きベクトルであるかどうかを決定できる。ピクチャ内の領域に対する動きベクトルが視差動きベクトルであるものと決定することに応答して、ビデオデコーダ20は、領域に対する視差動きベクトルが現在ブロックに対する視差ベクトルであるかどうかを決定する(202)。領域に対する視差動きベクトルが現在ブロックに対する視差ベクトルであるかどうかをビデオエンコーダ20が決定できる様々な方法が存在し得、方法は、領域に対する視差動きベクトルが現在ブロックに対する視差ベクトルであるかどうかをビデオデコーダ30が決定する方式と同様であり得る。ビデオデコーダ20は、現在ブロックをインター予測符号化する(204)。例えば、領域に対する視差動きベクトルが現在ブロックに対する視差ベクトルであるものと決定される場合、ビデオエンコーダ20は、現在ブロックに対する視差ベクトルとして視差動きベクトルを使用してインター予測符号化する(204)。インター予測符号化は、ビデオエンコーダ20によって実行されるインター予測を指し、ビデオエンコーダ20は、ビデオデコーダ30と同様であるがビデオデータを符号化するための方式で、現在ブロックをインター予測符号化することができる。上記で説明したように、ビデオデコーダ30は、ビデオデータを復号するためにインター予測復号を実行できる。
[0314]図16は、本開示で説明する1つ又は複数の技法による、ビデオコーダの例示的な動作を示すフローチャートである。ビデオエンコーダ20及び/又はビデオデコーダ30は、図16に示す例示的な技法を実装するように構成され得る。
[0315]例えば、ビデオコーダは、空間的又は時間的隣接領域に対する動きベクトルが視差動きベクトルであるかどうかを決定する(206)。空間的隣接領域(例えば、2つの4×4ブロックを含む1つの8×4領域)は、予測されるべきブロックと同じピクチャ内にある。時間的隣接領域(例えば、16の4×4ブロックを含む1つの16×16領域)は、予測されるべきブロックを含むピクチャ以外のピクチャ内にある。幾つかの例では、ビデオコーダは、空間的又は時間的隣接ブロックに空間的又は時間的に隣接する領域に対する動きベクトルが視差動きベクトルであるかどうかを決定できる。領域に対する動きベクトルは、領域内にある複数のブロックに対する単一の動きベクトルを表す。
[0316]更に、時間的隣接領域に対して、ビデオコーダは、現在ブロックに対する一方又は両方の参照ピクチャリスト(即ち、現在ブロックを含むピクチャに対して構築された参照ピクチャリスト)内の各ピクチャを評価できる。各ピクチャに対して、ピクチャが、視差動きベクトルを用いてインター予測される時間的隣接領域を含むかどうかを、ビデオコーダが決定できる。幾つかの例では、ビデオコーダは、参照ピクチャリスト内の各ピクチャを昇順で評価する。同じく、ビデオコーダは、collocated_from_l0_flagの値に基づいてRefPicList0内のピクチャを最初に、又はRefPicList1内のピクチャを最初に評価する。他の例では、ビデオコーダは、collocated_from_l0_flagの値にかかわらず、RefPicList0内のピクチャを最初に、RefPicList1内のピクチャを次に評価し、又はその逆も成り立つ。
[0317]図16の例では、ビデオコーダは、候補視差ベクトルのリストに視差動きベクトルを含める(208)。ビデオコーダが、候補視差ベクトルのリストからこの視差動きベクトルを選択する場合、ビデオコーダは、視差動きベクトルによって指されるブロックの動きベクトルを決定する(210)。この例では、ビデオコーダは、現在ブロックに対する候補動きベクトル予測子のリストに決定された動きベクトルを含める(212)。幾つかの例では、ビデオコーダはまた、候補動きベクトル予測子のリストに視差動きベクトルの変更されたバージョン(例えば、それのy成分がゼロに等しく設定された視差動きベクトル)を含む(214)。
[0318]幾つかの場合には、ビデオコーダは、候補動きベクトル予測子のリストへのインデックスを示すコード化シンタックス要素に基づいて候補動きベクトル予測子を選択する(216)。次に、ビデオコーダは、拡張型動きベクトル予測(AMVP)モード又はマージモードを使用して現在ブロックをインター予測する(218)。
[0319]1つ又は複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、又はそれらの任意の組合せで実装され得る。ソフトウェアに実装される場合、機能は、1つ若しくは複数の命令若しくはコードとしてコンピュータ可読媒体上に記憶されるか、又はコンピュータ可読媒体を介して送信され、ハードウェアベースの処理ユニットによって実行することができる。コンピュータ可読媒体は、例えば、通信プロトコルに従って、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含むデータ記憶媒体又は通信媒体などの有形媒体に対応するコンピュータ可読記憶媒体を含み得る。このようにして、コンピュータ可読媒体は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、あるいは(2)信号又は搬送波などの通信媒体に対応し得る。データ記憶媒体は、本開示で説明した技法の実装のための命令、コード及び/又はデータ構造を取り出すために1つ又は複数のコンピュータあるいは1つ又は複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。コンピュータプログラム製品はコンピュータ可読媒体を含み得る。
[0320]限定ではなく例として、そのようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM(登録商標)、CD−ROM又は他の光ディスクストレージ、磁気ディスクストレージ、又は他の磁気記憶装置、フラッシュメモリ、あるいは命令又はデータ構造の形態の所望のプログラムコードを記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。また、いかなる接続もコンピュータ可読媒体と適切に呼ばれる。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、又は赤外線、無線、及びマイクロ波などのワイヤレス技術を使用して、ウェブサイト、サーバ、又は他のリモート発信源から送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、又は赤外線、無線、及びマイクロ波などのワイヤレス技術は、媒体の定義に含まれる。但し、コンピュータ可読記憶媒体及びデータ記憶媒体は、接続、搬送波、信号、又は他の一時媒体を含まないが、代わりに非一時的有形記憶媒体を対象とすることを理解されたい。本明細書で使用するディスク(disk)及びディスク(disc)は、コンパクトディスク(disc)(CD)、レーザーディスク(登録商標)(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピー(登録商標)ディスク(disk)及びブルーレイディスク(disc)を含み、ディスク(disk)は、通常、データを磁気的に再生し、ディスク(disc)は、データをレーザーで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含めるべきである。
[0321]命令は、1つ又は複数のデジタル信号プロセッサ(DSP)などの1つ又は複数のプロセッサ、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、あるいは他の等価な集積回路又はディスクリート論理回路によって実行され得る。従って、本明細書で使用する「プロセッサ」という用語は、前述の構造、又は本明細書で説明する技法の実装に好適な他の構造のいずれかを指す。更に、幾つかの態様では、本明細書で説明した機能は、符号化及び復号のために構成された専用のハードウェア及び/又はソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、1つ又は複数の回路又は論理要素中に十分に実装され得る。
[0322]本開示の技法は、ワイヤレスハンドセット、集積回路(IC)、又はICのセット(例えば、チップセット)を含む、多種多様な機器又は装置において実装され得る。本開示では、開示する技法を実行するように構成された機器の機能的態様を強調するために様々な構成要素、モジュール、又はユニットについて説明したが、それらの構成要素、モジュール、又はユニットを、必ずしも異なるハードウェアユニットによって実現する必要があるとは限らない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェア及び/又はファームウェアとともに、上記で説明した1つ又は複数のプロセッサを含めて、コーデックハードウェアユニットにおいて組み合わせられるか、又は相互動作ハードウェアユニットの集合によって与えられ得る。
[0323]幾つかの例では、技法は、ビデオデコーダを備える機器又はビデオエンコーダを備える機器を用いて説明される。機器は、ワイヤレス通信機器など、スタンドアロン機器であり得る。幾つかの例では、機器は、マイクロプロセッサ又は集積回路であり得る。これらの例では、マイクロプロセッサ又は集積回路は、適用可能な場合、ビデオデコーダ又はビデオエンコーダを含み得る。幾つかの例では、ビデオデコーダ及びビデオエンコーダは、スタンドアロンのマイクロプロセッサ又は集積回路であり得る。
[0324]様々な例について説明した。これら及び他の例は以下の特許請求の範囲内に入る。
以下に本件出願当初の特許請求の範囲に記載された発明を付記する。
[1] ビデオデータを復号するための方法であって、複数のビューのうちの第1のビュー内のピクチャ内の領域に対する動きベクトルが、視差動きベクトルであるかどうかを決定することと、前記領域が予測されるべき現在ブロックに隣接し、前記領域が1つ以上のブロックを含み、前記領域に対する前記動きベクトルが1つの参照ピクチャリストに対する前記1つ以上のブロックに対する単一の動きベクトルを表し、前記視差動きベクトルが第2の異なるビュー内のピクチャを指す、前記ピクチャ内の前記領域に対する前記動きベクトルが前記視差動きベクトルであるものと決定することに応答して、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する視差ベクトルであるかどうかを決定することと、前記現在ブロックをインター予測復号することとを備え、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルであるものと決定される場合、前記復号することが、前記現在ブロックに対する前記視差ベクトルとして前記領域に対する前記視差動きベクトルを使用する、方法。
[2] 前記第1のビュー内の前記ピクチャ内の前記領域に対する前記動きベクトルが視差動きベクトルであるかどうかを決定することが、前記現在ブロックに空間的に隣接する、空間的隣接領域に対する前記動きベクトルが前記視差動きベクトルであるかどうかを決定することを備え、前記ピクチャが、前記空間的隣接領域を含み、前記現在ブロックを含む、[1]に記載の方法。
[3] 前記空間的隣接領域が、2つの4×4ブロックを含む1つの8×4領域を備える、[2]に記載の方法。
[4] 前記第1のビュー内の前記ピクチャ内の前記領域に対する前記動きベクトルが視差動きベクトルであるかどうかを決定することが、前記現在ブロックに時間的に隣接する、時間的隣接領域に対する前記動きベクトルが前記視差動きベクトルであるかどうかを決定することを備え、前記ピクチャが、前記時間的隣接領域を含み、前記現在ブロックを含まない、[1]に記載の方法。
[5] 前記時間的隣接領域が、16の4×4ブロックを含む1つの16×16領域を備える、[4]に記載の方法。
[6] 前記領域に対する前記動きベクトルが、前記領域に隣接するブロックの視差動きベクトルから導出されるとき、前記領域が内在視差予測領域であるものと決定することと、前記領域が前記内在視差予測領域であるものと決定することに応答して、前記領域に隣接する前記ブロックの前記視差動きベクトルが、前記現在ブロックに対する前記視差ベクトルであるかどうかを決定することとを更に備え、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルでない場合、前記復号することが、前記領域に隣接する前記ブロックの前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルであるものと決定される場合、前記現在ブロックに対する前記視差ベクトルとして前記領域に隣接する前記ブロックに対する前記視差動きベクトルを使用する、[1]に記載の方法。
[7] 前記視差ベクトルが指すブロックを決定することと、前記視差ベクトルが指す前記ブロックに対する動きベクトルを決定することと、候補動きベクトル予測子のリストに、前記視差ベクトルが指す前記ブロックに対する前記動きベクトルを含めることとを更に備え、前記現在ブロックをインター予測復号することが、前記視差ベクトルが指す前記ブロックに対する前記動きベクトルがマージモード又は拡張型動きベクトル予測(AMVP)モードの一部分として候補動きベクトル予測子の前記リストから選択されるとき、前記視差ベクトルが指す前記ブロックに対する前記動きベクトルに基づいて前記現在ブロックをインター予測復号することを備える、[1]に記載の方法。
[8] 前記視差ベクトルが指すブロックを決定することを更に備え、前記現在ブロックをインター予測復号することが、前記現在ブロックの残差情報をインター予測するために、決定された前記ブロックの残差情報を使用することを備える、[1]に記載の方法。
[9] 前記視差動きベクトルを変更することと、前記現在ブロックに対する候補動きベクトル予測子のリストに、変更された前記視差動きベクトルを含めることとを更に備える、[1]に記載の方法。
[10] 前記視差動きベクトルを変更することが、前記視差動きベクトルのy成分をゼロに等しく設定することを備える、[9]に記載の方法。
[11] 前記現在ブロックが、瞬時デコーダリフレッシュ(IDR)ピクチャ又はクリーンランダムアクセス(CRA)ピクチャのブロックであり得る、[1]に記載の方法。
[12] ビデオデータを符号化するための方法であって、複数のビューのうちの第1のビュー内のピクチャ内の領域に対する動きベクトルが、視差動きベクトルであるかどうかを決定することと、前記領域が予測されるべき現在ブロックに隣接し、前記領域が1つ以上のブロックを含み、前記領域に対する前記動きベクトルが1つの参照ピクチャリストに対する前記1つ以上のブロックに対する単一の動きベクトルを表し、前記視差動きベクトルが第2の異なるビュー内のピクチャを指し示す、前記ピクチャ内の前記領域に対する前記動きベクトルが前記視差動きベクトルであるものと決定することに応答して、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する視差ベクトルであるかどうかを決定することと、前記現在ブロックをインター予測復号することとを備え、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルであるものと決定される場合、前記符号化が、前記現在ブロックに対する前記視差ベクトルとして前記領域に対する前記視差動きベクトルを使用する、方法。
[13] 前記第1のビュー内の前記ピクチャ内の前記領域に対する前記動きベクトルが視差動きベクトルであるかどうかを決定することが、前記現在ブロックに空間的に隣接する、空間的隣接領域に対する前記動きベクトルが前記視差動きベクトルであるかどうかを決定することを備え、前記ピクチャが、前記空間的隣接領域を含み、前記現在ブロックを含む、[12]に記載の方法。
[14] 前記空間的隣接領域が、2つの4×4ブロックを含む1つの8×4領域を備える、[13]に記載の方法。
[15] 前記第1のビュー内の前記ピクチャ内の前記領域に対する前記動きベクトルが視差動きベクトルであるかどうかを決定することが、前記現在ブロックに時間的に隣接する、時間的隣接領域に対する前記動きベクトルが前記視差動きベクトルであるかどうかを決定することを備え、前記ピクチャが、前記時間的隣接領域を含み、前記現在ブロックを含まない、[12]に記載の方法。
[16] 前記時間的隣接領域が、16の4×4ブロックを含む1つの16×16領域を備える、[15]に記載の方法。
[17] 前記領域に対する前記動きベクトルが、前記領域に隣接するブロックの視差動きベクトルから導出されるとき、前記領域が内在視差予測領域であるものと決定することと、前記領域が前記内在視差予測領域であるものと決定することに応答して、前記領域に隣接する前記ブロックの前記視差動きベクトルが、前記現在ブロックに対する前記視差ベクトルであるかどうかを決定することとを更に備え、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルでない場合、前記符号化することが、前記領域に隣接する前記ブロックの前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルであるものと決定される場合、前記現在ブロックに対する前記視差ベクトルとして前記領域に隣接する前記ブロックに対する前記視差動きベクトルを使用する、[12]に記載の方法。
[18] 前記視差ベクトルが指し示すブロックを決定することを更に備え、前記現在ブロックをインター予測符号化することが、前記現在ブロックの残差情報をインター予測するために、決定された前記ブロックの残差情報を使用することを備える、[12]に記載の方法。
[19] 前記視差動きベクトルを変更することと、前記現在ブロックに対する候補動きベクトル予測子のリストに、変更された前記視差動きベクトルを含めることとを更に備える、[12]に記載の方法。
[20] 前記視差動きベクトルを変更することが、前記視差動きベクトルのy成分をゼロに等しく設定することを備える、[19]に記載の方法。
[21] 前記現在ブロックが、瞬時デコーダリフレッシュ(IDR)ピクチャ又はクリーンランダムアクセス(CRA)ピクチャの前記現在ブロックである、[12]に記載の方法。
[22] ビデオデータを復号するための装置であって、複数のビューのうちの第1のビュー内のピクチャ内の領域に対する動きベクトルが、視差動きベクトルであるかどうかを決定することと、前記領域が予測されるべき現在ブロックに隣接し、前記領域が1つ以上のブロックを含み、前記領域に対する前記動きベクトルが1つの参照ピクチャリストに対する前記1つ以上のブロックに対する単一の動きベクトルを表し、前記視差動きベクトルが第2の異なるビュー内のピクチャを指し示す、前記ピクチャ内の前記領域に対する前記動きベクトルが前記視差動きベクトルであるものと決定することに応答して、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する視差ベクトルであるかどうかを決定することと、前記現在ブロックをインター予測復号することとを行うように構成されたビデオデコーダを備え、前記現在ブロックを復号するために、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルであるものと決定される場合、前記ビデオデコーダが、前記現在ブロックに対する前記視差ベクトルとして前記領域に対する前記視差動きベクトルを使用する、装置。
[23] 前記第1のビュー内の前記ピクチャ内の前記領域に対する前記動きベクトルが視差動きベクトルであるかどうかを決定するために、前記ビデオデコーダが、前記現在ブロックに空間的に隣接する、空間的隣接領域に対する前記動きベクトルが前記視差動きベクトルであるかどうかを決定するように構成され、前記ピクチャが、前記空間的隣接領域を含み、前記現在ブロックを含む、[22]に記載の装置。
[24] 前記空間的隣接領域が、2つの4×4ブロックを含む1つの8×4領域を備える、[23]に記載の装置。
[25] 前記第1のビュー内の前記ピクチャ内の前記領域に対する前記動きベクトルが視差動きベクトルであるかどうかを決定するために、前記ビデオデコーダが、前記現在ブロックに時間的に隣接する、時間的隣接領域に対する前記動きベクトルが前記視差動きベクトルであるかどうかを決定するように構成され、前記ピクチャが、前記時間的隣接領域を含み、前記現在ブロックを含まない、[22]に記載の装置。
[26] 前記時間的隣接領域が、16の4×4ブロックを含む1つの16×16領域を備える、[25]に記載の装置。
[27] 前記ビデオデコーダが、前記領域に対する前記動きベクトルが、前記領域に隣接するブロックの視差動きベクトルから導出されるとき、前記領域が内在視差予測領域であるものと決定することと、前記領域が前記内在視差予測領域であるものと決定することに応答して、前記領域に隣接する前記ブロックの前記視差動きベクトルが、前記現在ブロックに対する前記視差ベクトルであるかどうかを決定することとを行うように構成され、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルでない場合、前記現在ブロックを復号するために、前記ビデオエンコーダが、前記領域に隣接する前記ブロックの前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルであるものと決定される場合、前記現在ブロックに対する前記視差ベクトルとして前記領域に隣接する前記ブロックに対する前記視差動きベクトルを使用する、[22]に記載の装置。
[28] 前記ビデオデコーダが、前記視差ベクトルが指し示すブロックを決定することと、前記視差ベクトルが指し示す前記ブロックに対する動きベクトルを決定することと、候補動きベクトル予測子のリストに、前記視差ベクトルが指し示す前記ブロックに対する前記動きベクトルを含めることとを行うように構成され、前記現在ブロックをインター予測復号するために、前記ビデオデコーダが、前記視差ベクトルが指し示す前記ブロックに対する前記動きベクトルがマージモード又は拡張型動きベクトル予測(AMVP)モードの一部分として候補動きベクトル予測子の前記リストから選択されるとき、前記視差ベクトルが指し示す前記ブロックに対する前記動きベクトルに基づいて前記現在ブロックをインター予測復号するように構成される、[22]に記載の装置。
[29] 前記ビデオデコーダが、前記視差ベクトルが指し示すブロックを決定するように構成され、前記現在ブロックをインター予測復号するために、前記ビデオデコーダが、前記現在ブロックの残差情報をインター予測するために、決定された前記ブロックの残差情報を使用するように構成される、[22]に記載の装置。
[30] 前記ビデオデコーダが、前記視差動きベクトルを変更することと、前記現在ブロックに対する候補動きベクトル予測子のリストに、変更された前記視差動きベクトルを含めることとを行うように構成される、[22]に記載の装置。
[31] 前記視差動きベクトルを変更するために、前記ビデオデコーダが、前記視差動きベクトルのy成分をゼロに等しく設定するように構成される、[30]に記載の装置。
[32] 前記現在ブロックが、瞬時デコーダリフレッシュ(IDR)ピクチャ又はクリーンランダムアクセス(CRA)ピクチャの前記現在ブロックである、[22]に記載の装置。
[33] 前記装置が、ワイヤレス通信装置と、マイクロプロセッサと、集積回路とのうちの1つを備える、[22]に記載の装置。
[34] ビデオデータを符号化するための装置であって、複数のビューのうちの第1のビュー内のピクチャ内の領域に対する動きベクトルが、視差動きベクトルであるかどうかを決定することと、前記領域が予測されるべき現在ブロックに隣接し、前記領域が1つ以上のブロックを含み、前記領域に対する前記動きベクトルが1つの参照ピクチャリストに対する前記1つ以上のブロックに対する単一の動きベクトルを表し、前記視差動きベクトルが第2の異なるビュー内のピクチャを指し示す、前記ピクチャ内の前記領域に対する前記動きベクトルが前記視差動きベクトルであるものと決定することに応答して、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する視差ベクトルであるかどうかを決定することと、前記現在ブロックをインター予測符号化することとを行うように構成されたビデオエンコーダを備え、前記現在ブロックを符号化するために、前記ビデオエンコーダが、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルであるものと決定される場合、前記現在ブロックに対する前記視差ベクトルとして前記領域に対する前記視差動きベクトルを使用する、装置。
[35] 前記第1のビュー内の前記ピクチャ内の前記領域に対する前記動きベクトルが視差動きベクトルであるかどうかを決定するために、前記ビデオエンコーダが、前記現在ブロックに空間的に隣接する、空間的隣接領域に対する前記動きベクトルが前記視差動きベクトルであるかどうかを決定するように構成され、前記ピクチャが、前記空間的隣接領域を含み、前記現在ブロックを含む、[34]に記載の装置。
[36] 前記空間的隣接領域が、2つの4×4ブロックを含む1つの8×4領域を備える、[35]に記載の装置。
[37] 前記第1のビュー内の前記ピクチャ内の前記領域に対する前記動きベクトルが視差動きベクトルであるかどうかを決定するために、前記ビデオエンコーダが、前記現在ブロックに時間的に隣接する、時間的隣接領域に対する前記動きベクトルが前記視差動きベクトルであるかどうかを決定するように構成され、前記ピクチャが、前記時間的隣接領域を含み、前記現在ブロックを含まない、[34]に記載の装置。
[38] 前記時間的隣接領域が、16の4×4ブロックを含む1つの16×16領域を備える、[37]に記載の装置。
[39] 前記ビデオエンコーダが、前記領域に対する前記動きベクトルが、前記領域に隣接するブロックの視差動きベクトルから導出されるとき、前記領域が内在視差予測領域であるものと決定することと、前記領域が前記内在視差予測領域であるものと決定することに応答して、前記領域に隣接する前記ブロックの前記視差動きベクトルが、前記現在ブロックに対する前記視差ベクトルであるかどうかを決定することとを行うように構成され、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルでない場合、前記現在ブロックを符号化するために、前記ビデオエンコーダが、前記領域に隣接する前記ブロックの前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルであるものと決定される場合、前記現在ブロックに対する前記視差ベクトルとして前記領域に隣接する前記ブロックに対する前記視差動きベクトルを使用する、[34]に記載の装置。
[40] 前記ビデオエンコーダが、前記視差ベクトルが指し示すブロックを決定するように構成され、前記現在ブロックをインター予測符号化するために、前記ビデオエンコーダが、前記現在ブロックの残差情報をインター予測するために、決定された前記ブロックの残差情報を使用するように構成される、[34]に記載の装置。
[41] 前記ビデオエンコーダが、前記視差動きベクトルを変更することと、前記現在ブロックに対する候補動きベクトル予測子のリストに、前記変更された視差動きベクトルを含めることとを行うように構成される、[34]に記載の装置。
[42] 前記視差動きベクトルを変更するために、前記ビデオエンコーダが、前記視差動きベクトルのy成分をゼロに等しく設定するように構成される、[41]に記載の装置。
[43] 前記現在ブロックが、瞬時デコーダリフレッシュ(IDR)ピクチャ又はクリーンランダムアクセス(CRA)ピクチャの前記現在ブロックである、[34]に記載の装置。
[44] ビデオデータを復号するための装置であって、複数のビューのうちの第1のビュー内のピクチャ内の領域に対する動きベクトルが、視差動きベクトルであるかどうかを決定するための手段と、前記領域が予測されるべき現在ブロックに隣接し、前記領域が1つ以上のブロックを含み、前記領域に対する前記動きベクトルが1つの参照ピクチャリストに対する前記1つ以上のブロックに対する単一の動きベクトルを表し、前記視差動きベクトルが第2の異なるビュー内のピクチャを指し示す、前記ピクチャ内の前記領域に対する前記動きベクトルが前記視差動きベクトルであるものと決定することに応答して、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する視差ベクトルであるかどうかを決定するための手段と、前記現在ブロックをインター予測復号するための手段とを備え、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルであるものと決定される場合、前記インター予測復号するための前記手段が、前記現在ブロックに対する前記視差ベクトルとして前記領域に対する前記視差動きベクトルを使用する、装置。
[45] 前記第1のビュー内の前記ピクチャ内の前記領域に対する前記動きベクトルが視差動きベクトルであるかどうかを決定するための前記手段が、前記現在ブロックに空間的に隣接する、空間的隣接領域に対する前記動きベクトルが前記視差動きベクトルであるかどうかを決定するための手段を備え、前記ピクチャが、前記空間的隣接領域を含み、前記現在ブロックを含む、[44]に記載の装置。
[46] 前記空間的隣接領域が、2つの4×4ブロックを含む1つの8×4領域を備える、[45]に記載の装置。
[47] 前記第1のビュー内の前記ピクチャ内の前記領域に対する前記動きベクトルが視差動きベクトルであるかどうかを決定するための前記手段が、前記現在ブロックに時間的に隣接する、時間的隣接領域に対する前記動きベクトルが前記視差動きベクトルであるかどうかを決定するための手段を備え、前記ピクチャが、前記時間的隣接領域を含み、前記現在ブロックを含まない、[44]に記載の装置。
[48] 前記時間的隣接領域が、16の4×4ブロックを含む1つの16×16領域を備える、[47]に記載の装置。
[49] ビデオデータを符号化するための装置であって、複数のビューのうちの第1のビュー内のピクチャ内の領域に対する動きベクトルが、視差動きベクトルであるかどうかを決定するための手段と、前記領域が予測されるべき現在ブロックに隣接し、前記領域が1つ以上のブロックを含み、前記領域に対する前記動きベクトルが1つの参照ピクチャリストに対する前記1つ以上のブロックに対する単一の動きベクトルを表し、前記視差動きベクトルが第2の異なるビュー内のピクチャを指し示す、前記ピクチャ内の前記領域に対する前記動きベクトルが前記視差動きベクトルであるものと決定することに応答して、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する視差ベクトルであるかどうかを決定するための手段と、前記現在ブロックをインター予測符号化するための手段とを備え、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルであるものと決定される場合、インター予測符号化するための前記手段が、前記現在ブロックに対する前記視差ベクトルとして前記領域に対する前記視差動きベクトルを使用する、装置。
[50] 前記第1のビュー内の前記ピクチャ内の前記領域に対する前記動きベクトルが視差動きベクトルであるかどうかを決定するための前記手段が、前記現在ブロックに空間的に隣接する、空間的隣接領域に対する前記動きベクトルが前記視差動きベクトルであるかどうかを決定するための手段を備え、前記ピクチャが、前記空間的隣接領域を含み、前記現在ブロックを含む、[49]に記載の装置。
[51] 前記空間的隣接領域が、2つの4×4ブロックを含む1つの8×4領域を備える、[50]に記載の装置。
[52] 前記第1のビュー内の前記ピクチャ内の前記領域に対する前記動きベクトルが視差動きベクトルであるかどうかを決定することが、前記現在ブロックに時間的に隣接する、時間的隣接領域に対する前記動きベクトルが前記視差動きベクトルであるかどうかを決定することを備え、前記ピクチャが、前記時間的隣接領域を含み、前記現在ブロックを含まない、[49]に記載の装置。
[53] 前記時間的隣接領域が、16の4×4ブロックを含む1つの16×16領域を備える、[52]に記載の装置。
[54] 命令を記憶されたコンピュータ可読記憶媒体であって、前記命令が、実行されると1つ以上のプロセッサに、複数のビューのうちの第1のビュー内のピクチャ内の領域に対する動きベクトルが、視差動きベクトルであるかどうかを決定することと、前記領域が予測されるべき現在ブロックに隣接し、前記領域が1つ以上のブロックを含み、前記領域に対する前記動きベクトルが1つの参照ピクチャリストに対する前記1つ以上のブロックに対する単一の動きベクトルを表し、前記視差動きベクトルが第2の異なるビュー内のピクチャを指し示す、前記ピクチャ内の前記領域に対する前記動きベクトルが前記視差動きベクトルであるものと決定することに応答して、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する視差ベクトルであるかどうかを決定することと、前記現在ブロックをインター予測復号することとを行わせ、前記1つ以上のプロセッサに復号させる前記命令が、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルであるものと決定される場合、前記1つ以上のプロセッサに、前記現在ブロックに対する前記視差ベクトルとして前記領域に対する前記視差動きベクトルを使用させる命令を備える、コンピュータ可読記憶媒体。
[55] 命令を記憶されたコンピュータ可読記憶媒体であって、前記命令が、実行されると1つ以上のプロセッサに、複数のビューのうちの第1のビュー内のピクチャ内の領域に対する動きベクトルが、視差動きベクトルであるかどうかを決定することと、前記領域が予測されるべき現在ブロックに隣接し、前記領域が1つ以上のブロックを含み、前記領域に対する前記動きベクトルが1つの参照ピクチャリストに対する前記1つ以上のブロックに対する単一の動きベクトルを表し、前記視差動きベクトルが第2の異なるビュー内のピクチャを指し示す、前記ピクチャ内の前記領域に対する前記動きベクトルが前記視差動きベクトルであるものと決定することに応答して、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する視差ベクトルであるかどうかを決定することと、前記現在ブロックをインター予測符号化することとを行わせ、前記1つ以上のプロセッサに符号化させる前記命令が、前記領域に対する前記視差動きベクトルが前記現在ブロックに対する前記視差ベクトルであるものと決定される場合、前記1つ以上のプロセッサに、前記現在ブロックに対する前記視差ベクトルとして前記領域に対する前記視差動きベクトルを使用させる命令を備える、コンピュータ可読記憶媒体。