(57)【要約】一実施形態において、本方法は、一つのユニットのビデオコンテンツを受け取る。該ユニットのビデオコンテンツは、双予測モードで符号化される。該ユニットの第１の動きベクトルのための動きベクトル予測子候補集合が決定される。次に、本方法は、第１の動きベクトルのための動きベクトル予測子候補集合から、第１の動きベクトル予測子を決定し、さらに、該ユニットのビデオコンテンツの第２の動きベクトルのための第２の動きベクトル予測子を計算する。第２の動きベクトル予測子は、第１の動きベクトルまたは第１の動きベクトル予測子に基づいて計算される。
2014523708.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
双予測モードで符号化される一つのユニットのビデオコンテンツを受け取ること、
該ユニットの第１の動きベクトルのための動きベクトル予測子候補集合を決定すること、
計算装置により、前記第１の動きベクトルのための前記動きベクトル予測子候補集合から、第１の動きベクトル予測子を決定すること、
前記計算装置により、前記ユニットのビデオコンテンツの第２の動きベクトルのための第２の動きベクトル予測子を、前記第１の動きベクトルまたは前記第１の動きベクトル予測子に基づいて計算すること
を含む方法。
【請求項２】
前記第２の動きベクトル予測子は、前記第１の動きベクトルまたは前記第１の動きベクトル予測子のスケーリングに基づいて計算される、請求項１に記載の方法。
【請求項３】
前記第２の動きベクトル予測子は、前記ユニットと、前記第１の動きベクトルにより指し示される第１の参照ピクチャとの間の第１の時間的間隔、および、前記ユニットと、前記第２の動きベクトルにより指し示される第２の参照ピクチャとの間の第２の時間的間隔に基づいて計算される、請求項１に記載の方法。
【請求項４】
前記第２の動きベクトル予測子は、前記第２の時間的間隔と前記第１の時間的間隔との比によって、前記第１の動きベクトルまたは前記第１の動きベクトル予測子をスケーリングすることにより計算される、請求項３に記載の方法。
【請求項５】
前記第２の動きベクトル予測子は、前記ユニットと、前記第１の動きベクトルにより指し示される第１の参照ピクチャとの間の第１のピクチャ・オーダ・カウント（ＰＯＣ）差、および、前記ユニットと、前記第２の動きベクトルにより指し示される第２の参照ピクチャとの間の第２のピクチャ・オーダ・カウント差に基づいて計算される、請求項１に記載の方法。
【請求項６】
前記第２の動きベクトル予測子は、前記第２のＰＯＣ差と前記第１のＰＯＣ差との比によって、前記第１の動きベクトルまたは前記第１の動きベクトル予測子をスケーリングすることにより計算される、請求項５に記載の方法。
【請求項７】
前記第２の動きベクトル予測子は、第２の動きベクトル候補リストから選択されたものではない、請求項１に記載の方法。
【請求項８】
方法であって、
第１のユニットのビデオコンテンツを受け取ること、
第２のユニットのビデオコンテンツを受け取ることであって、前記第１のユニットのビデオコンテンツおよび前記第２のユニットのビデオコンテンツは、第３のユニットのビデオコンテンツ内にある、前記第２のユニットのビデオコンテンツを受け取ること、
計算装置により、前記第１のユニットのビデオコンテンツの第１の動きベクトルのための第１の動きベクトル予測子を決定すること、
前記計算装置により、前記第１のユニットのビデオコンテンツの前記第１の動きベクトル予測子または前記第１の動きベクトルから、前記第２のユニットのビデオコンテンツのための第１の動きベクトル予測子を計算すること
を含む方法。
【請求項９】
前記第１のユニットのビデオコンテンツが単予測モードであり、前記第２のユニットのビデオコンテンツが双予測モードであるときに、前記第１のユニットのビデオコンテンツの前記第１の動きベクトル予測子または前記第１の動きベクトルから、前記第２のユニットのビデオコンテンツのための第１の動きベクトル予測子および第２の動きベクトル予測子を計算すること、
前記第１のユニットのビデオコンテンツが双予測モードであり、前記第２のユニットのビデオコンテンツが双予測モードであるときに、前記第１のユニットのビデオコンテンツの第１の動きベクトル予測子または第１の動きベクトルおよび第２の動きベクトル予測子または第２の動きベクトルから、前記第２のユニットのビデオコンテンツのための第１の動きベクトル予測子および第２の動きベクトル予測子を計算すること、
前記第１のユニットのビデオコンテンツが双予測モードであり、前記第２のユニットのビデオコンテンツが単予測モードであるときに、前記第１のユニットのビデオコンテンツの前記第１の動きベクトル予測子、前記第１の動きベクトル、前記第１のユニットのビデオコンテンツの第２の動きベクトル予測子、または第２の動きベクトルから、前記第２のユニットのビデオコンテンツのための第１の動きベクトル予測子を計算すること
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記第１のユニットのビデオコンテンツの前記第１の動きベクトルのための第１の動きベクトル予測子候補集合を決定すること、
前記第１のユニットのビデオコンテンツの第２の動きベクトルのための第２の動きベクトル予測子候補集合を決定すること
をさらに含み、
前記第１のユニットのビデオコンテンツの前記第１の動きベクトルのための前記第１の動きベクトル予測子は、前記第１の動きベクトル予測子候補集合から決定され、
前記第１のユニットのビデオコンテンツの前記第２の動きベクトルのための第２の動きベクトル予測子は、前記第２の動きベクトル予測子候補集合から決定される、請求項８に記載の方法。
【請求項１１】
前記第２のユニットのビデオコンテンツの前記第１の動きベクトル予測子は、前記第１のユニットのビデオコンテンツの前記第１の動きベクトル予測子または前記第１の動きベクトルのスケーリングに基づいて計算される、請求項８に記載の方法。
【請求項１２】
スケーリングは、時間的間隔またはＰＯＣ差に基づくものである、請求項８に記載の方法。
【請求項１３】
装置であって、
１つまたは複数のコンピュータプロセッサと、
命令を含むコンピュータ可読記憶媒体と
を備え、該命令は、実行されることで、前記１つまたは複数のコンピュータプロセッサを制御して、
双予測モードで符号化される一つのユニットのビデオコンテンツを受け取ること、
前記ユニットの第１の動きベクトルのための動きベクトル予測子候補集合を決定すること、
前記第１の動きベクトルのための前記動きベクトル予測子候補集合から、第１の動きベクトル予測子を決定すること、
前記ユニットのビデオコンテンツの第２の動きベクトルのための第２の動きベクトル予測子を、前記第１の動きベクトルまたは前記第１の動きベクトル予測子に基づいて計算すること
を実施するように動作させる、装置。
【請求項１４】
前記第２の動きベクトル予測子は、前記第１の動きベクトルまたは前記第１の動きベクトル予測子のスケーリングに基づいて計算される、請求項１３に記載の装置。
【請求項１５】
前記第２の動きベクトル予測子は、前記ユニットと、前記第１の動きベクトルにより指し示される第１の参照ピクチャとの間の第１の時間的間隔、および、前記ユニットと、前記第２の動きベクトルにより指し示される第２の参照ピクチャとの間の第２の時間的間隔に基づいて計算される、請求項１３に記載の装置。
【請求項１６】
前記第２の動きベクトル予測子は、前記ユニットと、前記第１の動きベクトルにより指し示される第１の参照ピクチャとの間の第１のピクチャ・オーダ・カウント（ＰＯＣ）差、および、前記ユニットと、前記第２の動きベクトルにより指し示される第２の参照ピクチャとの間の第２のピクチャ・オーダ・カウント差に基づいて計算される、請求項１３に記載の装置。
【請求項１７】
装置であって、
１つまたは複数のコンピュータプロセッサと、
命令を含むコンピュータ可読記憶媒体と
を備え、該命令は、実行されることで、前記１つまたは複数のコンピュータプロセッサを制御して、
第１のユニットのビデオコンテンツを受け取ること、
第２のユニットのビデオコンテンツを受け取ることであって、前記第１のユニットのビデオコンテンツおよび前記第２のユニットのビデオコンテンツは、第３のユニットのビデオコンテンツ内にある、前記第２のユニットのビデオコンテンツを受け取ること、
計算装置により、前記第１のユニットのビデオコンテンツの第１の動きベクトルのための第１の動きベクトル予測子を決定すること、
前記計算装置により、前記第１のユニットのビデオコンテンツの前記第１の動きベクトル予測子または前記第１の動きベクトルから、前記第２のユニットのビデオコンテンツのための第１の動きベクトル予測子を計算すること
を実施するように動作させる、装置。
【請求項１８】
前記第１のユニットのビデオコンテンツが単予測モードであり、前記第２のユニットのビデオコンテンツが双予測モードであるときに、前記第１のユニットのビデオコンテンツの前記第１の動きベクトル予測子または前記第１の動きベクトルから、前記第２のユニットのビデオコンテンツのための第１の動きベクトル予測子および第２の動きベクトル予測子を計算すること、
前記第１のユニットのビデオコンテンツが双予測モードであり、前記第２のユニットのビデオコンテンツが双予測モードであるときに、前記第１のユニットのビデオコンテンツの第１の動きベクトル予測子または第１の動きベクトルおよび第２の動きベクトル予測子または第２の動きベクトルから、前記第２のユニットのビデオコンテンツのための第１の動きベクトル予測子および第２の動きベクトル予測子を計算すること、
前記第１のユニットのビデオコンテンツが双予測モードであり、前記第２のユニットのビデオコンテンツが単予測モードであるときに、前記第１のユニットのビデオコンテンツの前記第１の動きベクトル予測子、前記第１の動きベクトル、前記第１のユニットのビデオコンテンツの第２の動きベクトル予測子、または第２の動きベクトルから、前記第２のユニットのビデオコンテンツのための第１の動きベクトル予測子を計算すること
をさらに実施するように動作可能である、請求項１７に記載の装置。
【請求項１９】
前記第２のユニットのビデオコンテンツの前記第１の動きベクトル予測子は、前記第１のユニットのビデオコンテンツの前記第１の動きベクトル予測子または前記第１の動きベクトルのスケーリングに基づいて計算される、請求項１７に記載の装置。
【請求項２０】
スケーリングは、時間的間隔またはＰＯＣ差に基づくものである、請求項１７に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、動きベクトル予測設計に関する。
【背景技術】
【０００２】
［動きベクトル予測設計］
ビデオ圧縮システムでは、圧縮演算の多くにブロック処理を採用している。ブロックは、近傍画素のグループであり、圧縮演算に関して一つの符号化ユニットとして扱うことができる。理論的には、符号化ユニットが大きいほど、直近傍画素間の相関関係を利用するためには好ましい。例えば、モーション・ピクチャ・エキスパート・グループ（ＭＰＥＧ）‐１、ＭＰＥＧ‐２、ＭＰＥＧ‐４などの様々なビデオ圧縮標準規格では、（マクロブロック（ＭＢ）と呼ばれる）４×４、８×８、１６×１６のブロックサイズを用いる。
【０００３】
高効率ビデオ符号化（ＨＥＶＣ：Ｈｉｇｈ Ｅｆｆｉｃｉｅｎｃｙ Ｖｉｄｅｏ Ｃｏｄｉｎｇ）は、ブロックベースのハイブリッド時空間予測符号化方式である。ＨＥＶＣでは、図１に示すように、入力ピクチャを、最大符号化ユニット（ＬＣＵ：ＬａｒｇｅｓｔＣｏｄｉｎｇ Ｕｎｉｔ）と呼ばれる正方形ブロックに分割する。従前の符号化標準とは異なり、ＬＣＵを１２８×１２８画素ほどの大きさとすることができる。各ＬＣＵは、符号化ユニット（ＣＵ：ＣｏｄｉｎｇＵｎｉｔ）と呼ばれる、より小さい正方形ブロックに分割することができる。図２は、ＬＣＵのＣＵ分割の一例を示している。ＬＣＵ１００は、最初に４つのＣＵ １０２に分割される。各ＣＵ１０２を、さらに、ＣＵ １０２のサイズの４分の１である、より小さい４つのＣＵ１０２に分割することもできる。この分割処理を、ＣＵを分割することができる回数の制限を課すなど、一定の基準に基づいて繰り返すことができる。図示のように、ＣＵ１０２‐１、１０２‐３、１０２‐４は、ＬＣＵ １００のサイズの４分の１である。ＣＵ １０２‐２は、さらに、４つのＣＵ１０２‐５、１０２‐６、１０２‐７、１０２‐８に分割されている。
【０００４】
各ＣＵ １０２は、１つまたは複数の予測ユニット（ＰＵ：ＰｒｅｄｉｃｔｉｏｎＵｎｉｔ）を含むことができる。図３は、ＣＵのＰＵ分割の一例を示している。ＰＵは、空間予測または時間予測を実行するために用いることができる。ＣＵは、空間的または時間的のいずれかで予測符号化することができる。ＣＵがイントラモードで符号化される場合は、ＣＵの各ＰＵは、独自の空間予測方向を持つことができる。ＣＵがインタモードで符号化される場合は、ＣＵの各ＰＵは、それ自体の動きベクトル（複数の場合もある）と、関連する参照ピクチャ（複数の場合もある）とを持つことができる。
【０００５】
ＨＥＶＣでは、動きベクトル（ＭＶ：Ｍｏｔｉｏｎ Ｖｅｃｔｏｒ）が予測符号化される。現在のＰＵが１つの現在の動きベクトルおよび関連する参照インデックスを持つ場合、現在のＰＵと空間的に隣接するＰＵまたは同一位置の時間的なＰＵの動きベクトルから、動きベクトル予測子（ＭＶＰ：ＭｏｔｉｏｎＶｅｃｔｏｒ Ｐｒｅｄｉｃｔｏｒ）が導出される。そして、現在の動きベクトルとＭＶＰとの差を求めて符号化する。これによると、現在の動きベクトルの情報の代わりに差分のみが送信されるので、オーバヘッドが削減される。
【０００６】
高度な動きベクトル予測（ＡＭＶＰ：Ａｄｖａｎｃｅｄ Ｍｏｔｉｏｎ Ｖｅｃｔｏｒ Ｐｒｅｄｉｃｔｉｏｎ）では、ＭＶＰの候補集合から現在の動きベクトルに最適なＭＶＰを選択することを提案している。現在のＰＵの現在の動きベクトルのためのＭＶＰ候補集合は、空間的に隣接するＰＵおよび同一位置のＰＵの動きベクトルで構成される。ＭＶＰ候補集合は、重複するＭＶＰ候補を取り除くことで、削減することができる。選択されたＭＶＰ候補を示すインデックスｍｖｐＩｄｘは、選択されたＭＶＰを指示するためにビットストリームで伝送することができる。
【０００７】
双予測モード（ｂｉ−ｐｒｅｄｉｃｔｉｏｎ ｍｏｄｅ）では、現在のＰＵは、参照リスト０への動きベクトルＭＶ０と、参照リスト１への動きベクトルＭＶ１の、２つの動きベクトルを持ち得る。２つの動きベクトルＭＶ０とＭＶ１により指し示される対応する参照ピクチャは、それぞれ参照リスト０と参照リスト１でインデックスされている。これら２つの動きベクトルを符号化するために、まず２つのＭＶＰ候補集合が形成される。一方の候補集合は、リスト０への動きベクトルのためのものであり、他方の候補集合はリスト１への動きベクトルのためのものである。上記と同様の手順を適用することにより、動きベクトルＭＶ０とＭＶ１に最適なＭＶＰを見つける。このため、２つの候補リストでの２つの探索が実行される。２つのリストで２つのＭＶＰを決定することは、計算処理を増大させる。また、この場合、２つのＭＶＰインデックスは、ビットストリームで伝送され得るが、これによりオーバヘッドが増加する。
【０００８】
［ＰＵのＭＶＰの並列処理］
現在のＰＵの動きベクトル予測子（ＭＶＰ）は、現在のＰＵの空間的および（同一位置の）時間的な近傍ブロックの動きベクトル（ＭＶ）から導出される。
【０００９】
図１３Ａおよび１３Ｂは、（ａ）で、ＣＵが同じサイズのＰＵを１つのみ含む場合と、（ｂ）で、ＣＵが２つの非正方形ＰＵ（ＰＵ０とＰＵ１）を含む場合の、２つの例を示している。例によって、現在のＰＵの空間的近傍ブロックが、現在のＰＵブロックが属するのと同じＣＵ内にあることも、またはないこともある。図１３Ａでは、現在のＰＵの空間的近傍ブロック（斜線で示す）はすべて、現在のＣＵの外にある。一方、図１３Ｂでは、ＰＵ０の空間的近傍ブロックはすべて、現在のＣＵの外にある。しかし、ＰＵ１の左の空間的近傍ブロックはＰＵ０であり、これは同じ現在のＣＵ内にある。
【００１０】
図１４Ａおよび１４Ｂは、ＣＵが２つのＰＵを含む場合の２つの例を示している。図１４Ａでは、右のＰＵ（ＰＵ１）が、左のＰＵ（ＰＵ０）を、左の空間的近傍のものの１つとして使用し、図１４Ｂでは、下のＰＵ（ＰＵ１）が、上のＰＵ（ＰＵ０）を、上の空間的近傍のものの１つとして使用する。このため、ＣＵ内のこれら２つのＰＵを並列処理することはできない。つまり、ＰＵ１がそれ自体のＭＶＰ導出を開始する前に、ＰＵ１は、ＰＵ０が動きベクトルの導出を終えるのを待たなければならない。
【００１１】
また、可能性のある候補の集合を符号化するのに一定の順序が用いられる。どのようなＰＵ分割であっても、左の空間的近傍のもののインデックス番号は、常に上の空間的近傍のもののインデックス番号よりも小さい。これによると、具体的なＰＵ分割によっては、結果的に符号化性能が低くなることがある。
【発明の概要】
【課題を解決するための手段】
【００１２】
一実施形態において、方法は、一つのユニットのビデオコンテンツを受け取る。該ユニットのビデオコンテンツは、双予測モードで符号化される。該ユニットの第１の動きベクトルのための動きベクトル予測子候補集合が決定される。次に、該方法は、第１の動きベクトルのための動きベクトル予測子候補集合から、第１の動きベクトル予測子を決定し、さらに、該ユニットのビデオコンテンツの第２の動きベクトルのための第２の動きベクトル予測子を計算する。第２の動きベクトル予測子は、第１の動きベクトルまたは第１の動きベクトル予測子に基づいて計算される。
【００１３】
一実施形態において方法を提供し、該方法は、第１のユニットのビデオコンテンツを受け取ること、第２のユニットのビデオコンテンツを受け取ることを含み、このとき、第１のユニットのビデオコンテンツおよび第２のユニットのビデオコンテンツは、第３のユニットのビデオコンテンツ内にあり、該方法は、さらに、計算装置により、第１のユニットのビデオコンテンツの第１の動きベクトルのための第１の動きベクトル予測子を決定すること、計算装置により、第１のユニットのビデオコンテンツの第１の動きベクトル予測子または第１の動きベクトルから、第２のユニットのビデオコンテンツのための第１の動きベクトル予測子を計算することを含む。
【００１４】
一実施形態において装置を提供し、該装置は、１つまたは複数のコンピュータプロセッサと、命令を含むコンピュータ可読記憶媒体と、を備え、命令は、実行されることで、上記１つまたは複数のコンピュータプロセッサを制御して、双予測モードで符号化される一つのユニットのビデオコンテンツを受け取ること、該ユニットの第１の動きベクトルのための動きベクトル予測子候補集合を決定すること、第１の動きベクトルのための動きベクトル予測子候補集合から、第１の動きベクトル予測子を決定すること、該ユニットのビデオコンテンツの第２の動きベクトルのための第２の動きベクトル予測子を、第１の動きベクトルまたは第１の動きベクトル予測子に基づいて計算することを実施するように動作させるものである。
【００１５】
一実施形態において装置を提供し、該装置は、１つまたは複数のコンピュータプロセッサと、命令を含むコンピュータ可読記憶媒体と、を備え、命令は、実行されることで、上記１つまたは複数のコンピュータプロセッサを制御して、第１のユニットのビデオコンテンツを受け取ること、第２のユニットのビデオコンテンツを受け取ることであって、このとき、第１のユニットのビデオコンテンツおよび第２のユニットのビデオコンテンツは、第３のユニットのビデオコンテンツ内にあり、さらに、計算装置により、第１のユニットのビデオコンテンツの第１の動きベクトルのための第１の動きベクトル予測子を決定すること、計算装置により、第１のユニットのビデオコンテンツの第１の動きベクトル予測子または第１の動きベクトルから、第２のユニットのビデオコンテンツのための第１の動きベクトル予測子を計算することを実施するように動作させるものである。
【００１６】
以下の詳細な説明および添付の図面は、具体的な実施形態の特徴および効果について、より良い理解を与えるものである。
【図面の簡単な説明】
【００１７】
【図１】最大符号化ユニット（ＬＣＵ）と呼ばれる正方形ブロックに分割された入力ピクチャを示す図である。
【図２】ＬＣＵのＣＵ分割の一例を示す図である。
【図３】ＣＵのＰＵ分割の一例を示す図である。
【図４】一実施形態によるビデオコンテンツの符号化および復号化のためのシステムの例を示す図である。
【図５】一実施形態により、動きベクトルＭＶ０とＭＶ１がどちらも過去の参照ピクチャを指し示す場合の例を示す図である。
【図６】一実施形態により、動きベクトルＭＶ０が過去の参照ピクチャを指し示し、動きベクトルＭＶ１が未来の参照ピクチャを指し示す場合の他の例を示す図である。
【図７】一実施形態により、動きベクトルＭＶ０とＭＶ１が過去の参照ピクチャを指し示す場合の例を示す図である。
【図８】一実施形態により、動きベクトルＭＶ０が過去の参照ピクチャを指し示し、動きベクトルＭＶ１が未来の参照ピクチャを指し示す場合の第２の例を示す図である。
【図９】一実施形態により、第２の動きベクトル予測子を求める方法の簡略化したフローチャートを示す図である。
【図１０Ａ】一実施形態により、ＣＵ内に複数のＰＵが存在する場合に、第１のＰＵの情報に基づいて、第２のＰＵの第１と第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０または／およびＭＶＰ＿ｌｉｓｔ１を計算する例を示す図である。
【図１０Ｂ】一実施形態により、ＣＵ内に複数のＰＵが存在する場合に、第１のＰＵの情報に基づいて、第２のＰＵの第１と第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０または／およびＭＶＰ＿ｌｉｓｔ１を計算する例を示す図である。
【図１１】一実施形態により、一符号化ユニット内に２つのＰＵがある場合に、ＭＶＰを求める方法の簡略化したフローチャートを示す図である。
【図１２Ａ】一実施形態によるエンコーダの例を示す図である。
【図１２Ｂ】一実施形態によるデコーダの例を示す図である。
【図１３Ａ】ＣＵが同じサイズのＰＵを１つのみ含む場合の例を示す図である。
【図１３Ｂ】ＣＵが２つの非正方形ＰＵ（ＰＵ０とＰＵ１）を含む場合の例を示す図である。
【図１４Ａ】ＣＵが２つのＰＵを含む場合の例を示す図である。
【図１４Ｂ】ＣＵが２つのＰＵを含む場合の例を示す図である。
【図１５Ａ】一実施形態により、候補として用いられるブロックの例を示す図である。
【図１５Ｂ】一実施形態により、候補として用いられるブロックの例を示す図である。
【発明を実施するための形態】
【００１８】
本明細書では、ビデオ圧縮システムのための技術について記載する。以下では、具体的な実施形態の完全な理解を与えるため、説明を目的として数多くの例および具体的詳細について記載する。請求項により規定される具体的な実施形態は、これらの例における特徴の一部またはすべてを、単独または以下に記載の他の特徴との組み合わせで含むことができ、さらに、本明細書に記載の特徴およびコンセプトの変形および均等物を含むことができる。
【００１９】
［動きベクトル予測設計］
図４は、一実施形態によるビデオコンテンツの符号化および復号化のためのシステム４００の例を示している。エンコーダ４０２は、動きベクトル予測子（ＭＶＰ）マネージャ４０６‐１を有し、デコーダ４０４は、ＭＶＰマネージャ４０６‐２を有する。ＭＶＰマネージャ４０６は、ＰＵまたは他のブロックサイズなどの一つのユニットのビデオコンテンツ（ａｕｎｉｔ ｏｆ ｖｉｄｅｏ ｃｏｎｔｅｎｔ）のＭＶＰを決定するために、動きベクトル予測を実行する。一実施形態において、ＭＶＰマネージャ４０６は、ＰＵのための２つの動きベクトル予測子を決定する。現在のピクチャ（例えば、ＰＵ）の動きベクトルＭＶ０とＭＶ１は、第１の参照リスト０と第２の参照リスト１でインデックスされた２つの参照ピクチャ（またはブロック）を指し示すものである。
【００２０】
具体的な実施形態では、第２の動きベクトル予測子を、別の動きベクトルまたは別の動きベクトル予測子から導出する。例えば、ＭＶＰマネージャ４０６は、最初に、動きベクトルＭＶ０のための第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０を取得する。これは、上述のように、隣接するＰＵおよび同一位置のＰＵの動きベクトルを求めることにより計算することができる。留意すべきことは、この説明では、第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０を最初に取得するものとしているが、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を最初に取得してもよいということである。ＭＶＰマネージャ４０６は、第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０を取得した後に、動きベクトルＭＶ０または第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０のどちらかから、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を計算する。例えば、後述するように、スケーリングを用いて第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を計算する。スケーリングは、時間的間隔（ｔｅｍｐｏｒａｌｄｉｓｔａｎｃｅ）またはピクチャ・オーダ・カウント（ＰＯＣ：Ｐｉｃｔｕｒｅ Ｏｒｄｅｒ Ｃｏｕｎｔ）など、異なる特性に基づくものとすることができる。
【００２１】
一実施形態において、ＭＶＰマネージャ４０６は、動きベクトルＭＶ０のためのＭＶＰ候補集合を決定する。ＭＶＰ候補集合は、隣接するＰＵおよび同一位置のＰＵの動きベクトルを用いて決定することができる。次に、ＭＶＰマネージャ４０６は、ＭＶＰ候補集合から、動きベクトルＭＶ０のための、最適なＭＶＰ候補である第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０および対応するインデックスｍｖｐＩｄｘ＿ｌｉｓｔ０を選択する。現在の動きベクトルＭＶ０の参照を用いて、どの近傍（空間的または時間的な近傍）ＰＵを第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０として選択するか特定される。一実施形態において、さらに、動きベクトルＭＶ０の参照リスト０がｍｖｐＩｄｘ＿ｌｉｓｔ０とは異なる場合に、動きベクトルＭＶ０が指すのと同じ参照ピクチャを第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０が指し示すように、第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０はスケーリングされる。以下では、第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０は、既にスケーリングされたものであると仮定する。近傍ＰＵが選択されると、その近傍ＰＵの参照も分かる。従って、現在のＰＵの情報から、ｍｖｐＩｄｘ＿ｌｉｓｔ０が導出される。
【００２２】
次に、ＭＶＰマネージャ４０６は、第２のＭＶＰ候補である、動きベクトルＭＶ１のための第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を、動きベクトルＭＶ０または第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０のいずれかから計算する。この計算は、候補集合から選択する代わりに実行されるものである。
【００２３】
［時間的間隔］
一実施形態において、ＭＶＰマネージャ４０６‐１は、時間的間隔を用いて、動きベクトルＭＶ１のための第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を計算する。第１の時間的間隔ＴＲ１は、現在のピクチャと、動きベクトルＭＶ０により指し示される参照ピクチャとの間のものである。第２の時間的間隔ＴＲ２は、現在のピクチャと、動きベクトルＭＶ１により指し示される参照ピクチャとの間のものである。動きベクトルＭＶ１のための第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１は、動きベクトルＭＶ０から計算される。例えば、以下のものを用いて、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を次のように計算することができる。
【００２４】
ＭＶＰ＿ｌｉｓｔ１＝（符号）（ＴＲ２／ＴＲ１）＊ＭＶ０
ここで、動きベクトルＭＶ０と動きベクトルＭＶ１がどちらも過去または未来を指している場合は、符号は正（＋）であり、そうでなければ符号は負（−）である。符号を用いる理由は、動きベクトルＭＶ０とＭＶ１が反対方向を指している場合があるからであり、その場合、スケーリングに負符号を適用する必要がある。
【００２５】
図５は、一実施形態により、動きベクトルＭＶ０とＭＶ１がどちらも過去の参照ピクチャを指し示す場合の例を示している。現在のピクチャ５０２は、符号化されるＰＵを含んでいる。現在のピクチャ５０２は、第１の参照ピクチャ５０４‐１および第２の参照ピクチャ５０４‐２と共に図示されている。参照ピクチャ５０４‐１と５０４‐２は、現在のピクチャ５０２と比べて過去の（表示順がより小さい）ものである。時間間隔を、ＴＲ１＝０およびＴＲ２＝８として図示している。これによって、参照ピクチャ５０４‐１が４ピクチャ分だけ過去であり、参照ピクチャ５０４‐２が８ピクチャ分だけ過去であることを示すことができる。他の時間的間隔を測定してもよい。
【００２６】
動きベクトルＭＶ１のための第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１は、以下のように計算することができる。
ＭＶＰ＿ｌｉｓｔ１＝（ＴＲ２／ＴＲ１）＊ＭＶ０＝（８／４）＊ＭＶ０＝ＭＶ０＜＜１
この場合、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１は、時間的間隔比８／４＊動きベクトルＭＶ０に基づいて計算される。第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１が参照ピクチャ５０４‐２を指し示すものとして図示されているように、動きベクトルＭＶ０のスケーリングが用いられる。次に、動きベクトルＭＶ１と第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１との差を計算して、符号化することができる。
【００２７】
図６は、一実施形態により、動きベクトルＭＶ０が過去の参照ピクチャを指し示し、動きベクトルＭＶ１が未来の参照ピクチャを指し示す場合の他の例を示している。時間差ＴＲ１は４ピクチャ分の間隔であり、時間的間隔ＴＲ２は８ピクチャ分の間隔である。
【００２８】
動きベクトルＭＶ１のための第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１は、次のように求めることができる。
ＭＶＰ＿ｌｉｓｔ１＝−（ＴＲ２／ＴＲ１）＊ＭＶ０＝−（８／４）＊ＭＶ０＝−（ＭＶ０＜＜１）
この場合、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１は、動きベクトルＭＶ０のスケーリングを負にしたものに等しい。これは、動きベクトルＭＶ１が、過去の参照ピクチャではなく、未来の参照ピクチャを指しているからである。図示のように、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１が参照ピクチャ５０４‐２を指し示すように、動きベクトルＭＶ０のスケーリングが用いられる。第１の動きベクトルＭＶ０を用いて第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を計算すると、計算の複雑さが軽減される。
【００２９】
第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０は、エンコーダ４０２とデコーダ４０４の両方で使用することができるので、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を計算するために、動きベクトルＭＶ０の代わりに、第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０を用いることができる。以下のものを用いて、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を次のように計算することができる。
【００３０】
ＭＶＰ＿ｌｉｓｔ１＝（符号）（ＴＲ２／ＴＲ１）＊ＭＶＰ＿ｌｉｓｔ０
ここで、ＴＲ１は、現在のピクチャと、動きベクトルＭＶ０により指し示される参照ピクチャとの時間的間隔であり（一例では、第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０は、動きベクトルＭＶ０の参照インデックスを用いて正規化されている。つまり、動きベクトルＭＶ０と第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０は、同じ参照ピクチャを指し示している。）、一方、ＴＲ２は、現在のピクチャと、動きベクトルＭＶ１により指し示される参照ピクチャとの時間的間隔である。第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０と動きベクトルＭＶ１が過去または未来を指している場合は、符号が正である。そうでなければ、符号は負である。第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０を用いて第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を計算すると、計算の複雑さが軽減される。
【００３１】
よって、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１は、ＭＶＰ候補集合からＭＶＰ候補を選択する代わりに、動きベクトルＭＶ０または第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０のいずれかから計算される。この場合、第２のリストについてのＭＶＰインデックスを符号化および送信するために必要となるオーバヘッドはなく、その結果、ビットの節約となる。また、第２のＭＶＰ候補であるＭＶＰ＿ｌｉｓｔ１を決定するために、ＭＶＰ選択プロシージャを実施する必要がない。その結果、リスト１についてのＭＶＰ選択プロシージャを用いる場合と比較して、具体的な実施形態の複雑さが半減する。
【００３２】
エンコーダ４０２が現在のＰＵのビットストリームを符号化するときに、ＭＶＰマネージャ４０６‐１は、第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０のビットストリームで送られるインデックスを用いて、第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０を決定する。そして、ＭＶＰマネージャ４０６‐１は、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を計算することができる。例えば、ＭＶＰマネージャ４０６‐１は、上述の方法を用いて、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を計算することができる。エンコーダ４０２は、次に、第１の動きベクトルＭＶ０と第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０との差、および第２の動きベクトルＭＶ１と第２動きベクトル予測子ＭＶＰ＿ｌｉｓｔとの差を求める。そして、エンコーダ４０２は、それらの差分をビットストリームでデコーダ４０４に送信する。
【００３３】
デコーダ４０４が現在のＰＵのビットストリームを復号化するときに、ＭＶＰマネージャ４０６‐２は、第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０のビットストリームで送られるインデックスを用いて、第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０を求める。そして、ＭＶＰマネージャ４０６‐２は、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を計算することができる。例えば、ＭＶＰマネージャ４０６‐２は、上述の方法を用いて、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を計算することができる。デコーダ４０４は、次に、第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０を用いてビットストリームで送られる差分を用いて、第１の動きベクトルＭＶ０を求め、さらに、計算による動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を用いてビットストリームで送られる差分を用いて、第２の動きベクトルＭＶ１を求める。第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１は、第１の動きベクトルＭＶ０または第１の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０から計算したものをスケーリングしたバージョンである場合がある。そして、動きベクトルＭＶ０とＭＶ１は、時間予測処理で用いることができる。
【００３４】
第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を計算するために、他の例を採用してもよい。他の式を用いることもできる。例えば、以下のものを用いることができる。
ＭＶＰ＿ｌｉｓｔ１＝ＭＶＰ０
ＭＶＰ＿ｌｉｓｔ１＝ＭＶＰ＿ｌｉｓｔ０
他の式を用いることもできる。エンコーダ４０２およびデコーダ４０４は、使用する計算方法を選択することができる。例えば、あるＰＵではスケーリングを使用し、他のＰＵでは、式ＭＶＰ＿ｌｉｓｔ１＝ＭＶＰ０を使用することができる。
【００３５】
［ＰＯＣを用いたＭＶＰ候補の計算］
一実施形態において、動きベクトルＭＶ１のための第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を導出するために、ピクチャ・オーダ・カウント（ＰＯＣ）を用いることができる。所与のＰＵについて、現在のピクチャと参照ピクチャのＰＯＣを、それぞれ、ｐｏｃ＿ｃｕｒｒ、ｐｏｃ＿ｒｅｆ＿ｌｉｓｔ０、およびｐｏｃ＿ｒｅｆ＿ｌｉｓｔ１とすることができる。現在のピクチャと、第１の参照リストｒｅｆ＿ｌｉｓｔ０でインデックスされる参照ピクチャとの間のＰＯＣ差ｄｉｆｆ＿ｐｏｃ＿ｃｕｒｒ＿ｌｉｓｔ０は、次のようになる。
【００３６】
ｄｉｆｆ＿ｐｏｃ＿ｃｕｒｒ＿ｌｉｓｔ０＝ｐｏｃ＿ｃｕｒｒ−ｐｏｃ＿ｒｅｆ＿ｌｉｓｔ０
この場合、ｄｉｆｆ＿ｐｏｃ＿ｃｕｒｒ＿ｌｉｓｔ０は、現在のＰＯＣと、リスト０にある第１の参照ピクチャのＰＯＣとの差である。
【００３７】
同様に、現在のピクチャと、第２の参照リストｒｅｆ＿ｌｉｓｔ１でインデックスされる参照ピクチャとの間のＰＯＣ差ｄｉｆｆ＿ｐｏｃ＿ｃｕｒｒ＿ｌｉｓｔ１は、次のように定義される。
【００３８】
ｄｉｆｆ＿ｐｏｃ＿ｃｕｒｒ＿ｌｉｓｔ１＝ｐｏｃ＿ｃｕｒｒ−ｐｏｃ＿ｒｅｆ＿ｌｉｓｔ１
この場合、ｄｉｆｆ＿ｐｏｃ＿ｃｕｒｒ＿ｌｉｓｔ１は、現在のピクチャのＰＯＣと、リスト１の第２の参照ピクチャのＰＯＣとの差である。
【００３９】
具体的な実施形態では、動きベクトルＭＶ０をスケーリングすることにより、動きベクトルＭＶ１のための第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を求める。計算例は次のようなものとすることができる。
【００４０】
ＭＶＰ＿ｌｉｓｔ１＝（ｄｉｆｆ＿ｐｏｃ＿ｃｕｒｒ＿ｌｉｓｔ１／ｄｉｆｆ＿ｐｏｃ＿ｃｕｒｒ＿ｌｉｓｔ０）＊ＭＶ０
図７は、一実施形態により、動きベクトルＭＶ０とＭＶ１が過去の参照ピクチャを指し示す場合の例を示している。図７において、現在のピクチャ５０２のＰＯＣは８である。動きベクトルＭＶ０は、ＰＯＣが４である参照ピクチャ５０４‐１を指しており、動きベクトルＭＶ１は、ＰＯＣが０である参照ピクチャ５０４‐２を指している。動きベクトルＭＶ１のための第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１は、次のように計算される。
【００４１】
ＭＶＰ＿ｌｉｓｔ１＝（（８−０）／（８−４））ＭＶ０＝ＭＶ０＜＜１
第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１が参照ピクチャ５０４‐２を指し示すものとして図示されているように、動きベクトルＭＶ０のスケーリングが用いられる。そして、動きベクトルＭＶ１と第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１との差を計算して、符号化することができる。
【００４２】
図８は、一実施形態により、動きベクトルＭＶ０が過去の参照ピクチャ５０４‐１を指し示し、動きベクトルＭＶ１が未来の参照ピクチャ５０４‐２を指し示す場合の第２の例を示している。動きベクトルＭＶ１のためのＭＶＰ候補は、次のように計算される。
【００４３】
ＭＶＰ＿ｌｉｓｔ１＝（（８−１６）／（８−４））ＭＶ０＝−（ＭＶ０＜＜１）
図８に示すように、現在のピクチャ５０２のＰＯＣは８であり、参照ピクチャ５０４‐１のＰＯＣは４であり、参照ピクチャ５０４‐２のＰＯＣは１６である。この場合、符号が負であることは、第２のＭＶＰ予測子ＭＶＰ＿ｌｉｓｔ１が、動きベクトルＭＶ０と反対の方向であることを示している。
【００４４】
また、時間差に関して上述した他の計算を適用して、ＰＯＣを用いることも可能である。例えば、動きベクトル予測子を用いて、第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ１を計算することができる。
【００４５】
図９は、一実施形態により、第２の動きベクトル予測子を求める方法の簡略化したフローチャート９００を示している。本方法は、９０２において、現在のユニットのビデオコンテンツを受け取る。現在のユニットのビデオコンテンツは、双予測モードで符号化される。本方法は、９０４において、現在のユニットのビデオコンテンツの第１の動きベクトルのための動きベクトル予測子候補集合を決定する。９０６で、第１の動きベクトルのための動きベクトル予測子候補集合から、第１の動きベクトル予測子が決定される。本方法は、９０８において、現在のユニットのビデオコンテンツの第２の動きベクトルのための第２の動きベクトル予測子を計算する。第２の動きベクトル予測子は、第１の動きベクトルまたは第１の動きベクトル予測子に基づいて計算される。
【００４６】
［ＣＵ内の２つのＰＵのＭＶＰの計算］
図１０Ａおよび図１０Ｂは、一実施形態により、ＣＵ内に複数のＰＵが存在する場合に、第１のＰＵの情報に基づいて、第２のＰＵの第１と第２の動きベクトル予測子ＭＶＰ＿ｌｉｓｔ０または／およびＭＶＰ＿ｌｉｓｔ１を計算する例を示している。当然のことながら、ＣＵの他の分割も認めることができる。図１０Ａおよび図１０Ｂでは、符号化順序に関して、ＰＵ０がＣＵにおける第１のＰＵとみなされ、その後にＰＵ１が続く。これら２つのＰＵには、高い相関関係があるはずであり、ＰＵ０とＰＵ１のＭＶＰは類似したものであり得る。
【００４７】
具体的な実施形態では、ＰＵ１のＭＶＰを、ＰＵ０のＭＶＰから導出する。ＰＵ０とＰＵ１は、単予測と双予測の任意の組み合わせとすることができる。例えば、ＰＵ０とＰＵ１の両方を単予測とすることができ、ＰＵ０は単予測でＰＵ１は双予測とすることができ、あるいはＰＵ０とＰＵ１の両方が双予測である。一例では、ＰＵ０は、第１の参照リストｒｅｆ＿ＰＵ０＿ｌｉｓｔ０と第２の参照リストｒｅｆ＿ＰＵ０＿ｌｉｓｔ１でインデックスされる２つの参照ピクチャを指し示す２つまでの動きベクトルＭＶ０＿ＰＵ０とＭＶ１＿ＰＵ０を持つことができる。同様に、ＰＵ１は、第１の参照リストｒｅｆ＿ＰＵ１＿ｌｉｓｔ０と第２の参照リストｒｅｆ＿ＰＵ１＿ｌｉｓｔ１でインデックスされる２つの参照ピクチャを指し示す２つまでの動きベクトルＭＶ０＿ＰＵ１とＭＶ１＿ＰＵ１を持つことができる。最初に、ＰＵ０のための第１の動きベクトル予測子ＭＶＰ０＿ＰＵ０とＭＶＰ１＿ＰＵ０を決定し、次に、ＰＵ１のための第２の動きベクトル予測子ＭＶＰ０＿ＰＵ１とＭＶＰ１＿ＰＵ１を、第１の動きベクトル予測子ＭＶＰ０＿ＰＵ０とＭＶＰ１＿ＰＵ０から導出することができる。以下の計算によって、第１の動きベクトル予測子ＭＶＰ０＿ＰＵ０とＭＶＰ１＿ＰＵ０をスケーリングすることができる。例えば、スケーリングは、時間的間隔またはＰＯＣに基づくものとすることができる。以下のものを用いて、ＰＵ１のための第１の動きベクトル予測子ＭＶＰ０＿ＰＵ１を計算することができる。
【００４８】
ＭＶＰ０＿ＰＵ１＝（ＴＲ０＿ＰＵ１／ＴＲ０＿ＰＵ０）＊ＭＶＰ０＿ＰＵ０
同様に、ＰＵ１のための第２の動きベクトル予測子ＭＶＰ１＿ＰＵ１を、ＭＶＰ１＿ＰＵ０から計算する。具体的な例は、次のようなものである。
【００４９】
ＭＶＰ１＿ＰＵ１＝（ＴＲ１＿ＰＵ１／ＴＲ１＿ＰＵ０）＊ＭＶＰ１＿ＰＵ０
一実施形態において、上記の２つの式で、ＴＲ０＿ＰＵ０は、現在のピクチャのＰＯＣと、動きベクトルＭＶ０＿ＰＵ０により指し示される参照ピクチャのＰＯＣとの差であり、ＴＲ０＿ＰＵ１は、現在のピクチャのＰＯＣと、動きベクトルＭＶ０＿ＰＵ１により指し示される参照ピクチャのＰＯＣとの差であり、ＴＲ１＿ＰＵ０は、現在のピクチャのＰＯＣと、ＭＶ１＿ＰＵ０により指し示される参照ピクチャのＰＯＣとの差であり、ＴＲ１＿ＰＵ１は、現在のピクチャのＰＯＣと、動きベクトルＭＶ１＿ＰＵ１により指し示される参照ピクチャのＰＯＣとの差である。他の時間差を用いることもできる。
【００５０】
ＰＵは、参照リスト０と参照リスト１の両方を用いないこともある。例えば、ＰＵ０は、参照リスト０または参照リスト１のどちらかのみを用いることができる。一方、ＰＵ１は、それでも参照リスト０と参照リスト１の両方を用いることがある。この場合、第２の動きベクトル予測子ＭＶＰ０＿ＰＵ１とＭＶＰ１＿ＰＵ１は、第１の動きベクトル予測子ＭＶＰ０＿ＰＵ０またはＭＶＰ１＿ＰＵ０のいずれかから導出することができる。例えば、ＭＶＰ０＿ＰＵ０のみが使用できる場合、第２の動きベクトル予測子ＭＶＰ０＿ＰＵ１とＭＶＰ１＿ＰＵ１は、次のように求めることができる。
【００５１】
ＭＶＰ０＿ＰＵ１＝（ＴＲ０＿ＰＵ１／ＴＲ０＿ＰＵ０）＊ＭＶＰ０＿ＰＵ０
ＭＶＰ１＿ＰＵ１＝（ＴＲ１＿ＰＵ１／ＴＲ０＿ＰＵ０）＊ＭＶＰ０＿ＰＵ０
別のケースで、両方のＰＵが単予測であって、ＭＶＰ０＿ＰＵ０のみ使用できる場合に、第２の動きベクトル予測子ＭＶＰ０＿ＰＵ１は、ＭＶＰ０＿ＰＵ０から求められる。図１１は、一実施形態により、一符号化ユニット内に２つのＰＵがある場合に、ＭＶＰを求める方法の簡略化したフローチャート１１００を示している。本方法は、１１０２で、第１のユニットのビデオコンテンツを受け取る。本方法は、１１０４で、第２のユニットのビデオコンテンツを受け取る。第１のユニットのビデオコンテンツ（ＰＵ０）と第２のユニットのビデオコンテンツ（ＰＵ１）は、第３のユニットのビデオコンテンツ（ＣＵ）内にある。第１または第２のユニットのビデオコンテンツは、単予測または双予測モードで符号化することができる。本例では、両方の一つのユニットが双予測とされるが、他の例も認められる。１１０６で、第１のユニットのビデオコンテンツの第１の動きベクトルのための第１の動きベクトル予測子が決定される。１１０８で、第１のユニットのビデオコンテンツの第２の動きベクトルのための第２の動きベクトル予測子が決定される。本方法は、１１１０で、第１のユニットのビデオコンテンツの第１の動きベクトル予測子から、第２のユニットのビデオコンテンツの第１の動きベクトル予測子を計算し、さらに、第１のユニットのビデオコンテンツの第２の動きベクトル予測子から、第２のユニットのビデオコンテンツの第２の動きベクトル予測子を計算する。
【００５２】
［エンコーダおよびデコーダの例］
図１２Ａは、一実施形態によるエンコーダ４０２の例を示している。以下、エンコーダ４０２の全体的動作について説明するが、当然のことながら、本明細書の開示および教示に基づく、記載の符号化プロセスへの変更が、当業者により認められるであろう。
【００５３】
現在のＰＵであるｘについて、空間予測または時間予測のいずれかにより、予測ＰＵであるｘ’が取得される。そして、予測ＰＵが現在のＰＵから減算されて、その結果、残差ＰＵであるｅが得られる。空間予測ブロック１２０４は、ＰＵごとに、水平、垂直、対角４５度、対角１３５度、ＤＣ（フラット平均）、平面などの様々な空間予測方向を含むことができる。
【００５４】
時間予測ブロック１２０６は、動き推定処理により時間予測を実行する。動き推定処理では、参照ピクチャにわたって、現在のＰＵに最も適合する予測を探索する。最も適合する予測は、動きベクトル（ＭＶ）と関連する参照ピクチャ（ｒｅｆＩｄｘ）とによって記述される。動きベクトルと関連する参照ピクチャとは、符号化されたビットストリームに含められる。
【００５５】
変換ブロック１２０７は、残差ＰＵであるｅの変換処理を実行する。変換ブロック１２０７は、変換ドメインの残差ＰＵであるＥを出力する。
次に、量子化器１２０８が、残差ＰＵの変換係数Ｅを量子化する。量子化器１２０８は、とり得る有限個の値に変換係数を変換する。エントロピー符号化ブロック１２１０は、量子化された係数をエントロピー符号化し、その結果、伝送される最終的な圧縮ビットが得られる。コンテキスト適応型可変長符号化（ＣＡＶＬＣ：Ｃｏｎｔｅｘｔ‐ＡｄａｐｔｉｖｅＶａｒｉａｂｌｅ Ｌｅｎｇｔｈ Ｃｏｄｉｎｇ）またはコンテキスト適応型２値算術符号化（ＣＡＢＡＣ：Ｃｏｎｔｅｘｔ‐Ａｄａｐｔｉｖｅ Ｂｉｎａｒｙ Ａｒｉｔｈｍｅｔｉｃ Ｃｏｄｉｎｇ）など、様々なエントロピー符号化法を用いることができる。
【００５６】
さらに、エンコーダ４０２内の復号化プロセスにおいて、逆量子化器１２１２が、残差ＰＵの量子化された変換係数を逆量子化する。そして、逆量子化器１２１２は、残差ＰＵの逆量子化された変換係数Ｅ’を出力する。逆変換ブロック１２１４は、逆量子化された変換係数を受け取って、これを逆変換することで、結果として、再構成された残差ＰＵであるｅ’を得る。そして、再構成されたＰＵであるｅ’は、空間的または時間的いずれかの対応する予測ｘ’に加算され、これにより、新たに再構成されたＰＵであるｘ”が形成される。ループフィルタ１２１６は、再構成されたＰＵであるｘ”に対してデブロッキングを実行することで、ブロッキング・アーチファクトを抑制する。さらに、ループフィルタ１２１６は、復号化されたピクチャのデブロッキングフィルタ処理が完了した後に、画素適応オフセット処理を実行することができ、これにより、再構成された画素と元の画素との間の画素値オフセットを補償する。また、ループフィルタ１２１６は、再構成されたＰＵに適応ループフィルタ処理を実行することもでき、これにより、入力ピクチャと出力ピクチャとの間の符号化歪みを最小化する。さらに、再構成されたピクチャが参照ピクチャである場合は、それらの参照ピクチャは、後の時間予測のために、参照バッファ１２１８に記憶される。
【００５７】
図１２Ｂは、一実施形態によるデコーダ４０４の例を示している。以下、デコーダ４０４の全体的動作について説明するが、当然のことながら、本明細書の開示および教示に基づく、記載の復号化プロセスへの変更が、当業者により認められるであろう。デコーダ４０４は、符号化されたビデオコンテンツの入力ビットをエンコーダ４０２から受信する。
【００５８】
エントロピー復号化ブロック１２３０は、入力ビットストリームに対してエントロピー復号化を実行することで、残差ＰＵの量子化された変換係数を生成する。逆量子化器１２３２は、残差ＰＵの量子化された変換係数を逆量子化する。そして、逆量子化器１２３２は、残差ＰＵの逆量子化された変換係数であるＥ’を出力する。逆変換ブロック１２３４は、逆量子化された変換係数を受け取って、それらを逆変換し、その結果、再構成された残差ＰＵであるｅ’を得る。
【００５９】
そして、再構成されたＰＵであるｅ’は、空間的または時間的いずれかの対応する予測ｘ’に加算され、これにより、新たに再構成されたＰＵであるｘ”が形成される。ループフィルタ１２３６は、再構成されたＰＵであるｘ”に対してデブロッキングを実行することで、ブロッキング・アーチファクトを抑制する。さらに、ループフィルタ１２３６は、復号化されたピクチャのデブロッキングフィルタ処理が完了した後に、画素適応オフセット処理を実行することができ、これにより、再構成された画素と元の画素との間の画素値オフセットを補償する。また、ループフィルタ１２３６は、再構成されたＰＵに適応ループフィルタ処理を実行することもでき、これにより、入力ピクチャと出力ピクチャとの間の符号化歪みを最小化する。さらに、再構成されたピクチャが参照ピクチャである場合は、それらの参照ピクチャは、後の時間予測のために、参照バッファ１２３８に記憶される。
【００６０】
予測ＰＵであるｘ’は、空間予測または時間予測のいずれかにより取得される。空間予測ブロック１２４０は、ＰＵごとに、水平、垂直、対角４５度、対角１３５度、ＤＣ（フラット平均）、平面などの、復号化された空間予測方向を受け取ることができる。空間予測方向は、予測ＰＵであるｘ’を決定するために用いられる。
【００６１】
時間予測ブロック１２０６は、動き推定処理により時間予測を実行する。復号化された動きベクトルを用いて、予測ＰＵであるｘ’を決定する。動き推定処理では、補間を用いることができる。
【００６２】
［ＰＵのＭＶＰの並列処理］
一実施形態において、１つのＣＵ内に２つのＰＵがある場合に、ＭＶＰマネージャ４０６は、これら２つのＰＵを並列に処理する。ただし、従来、図１４Ａにおける右のＰＵ、または図１４Ｂにおける下のＰＵは、同じＣＵ内の左または上のＰＵを空間的近傍のものの１つとして使用しなければならないので、並列に処理されてはいなかった。具体的な実施形態では、現在のＰＵのための空間候補として、空間的近傍のＣＵ内のＰＵのみを用いる。このようにして、ＭＶＰマネージャ４０６は、同じＣＵ内のＰＵを並列処理する。
【００６３】
図１５Ａおよび１５Ｂは、一実施形態により、候補として用いられるブロックの例を示している。図１５Ａでは、右のＰＵ（すなわちＰＵ１）の左空間ブロックとして、ブロックＡｌ（すなわちＰＵ０）の代わりにブロックＡ０が用いられる。ブロックＡ２とＡ３は、そのまま、右のＰＵ（ＰＵ１）の左下と左上のブロックとして扱われる。同様に、図１５Ｂでは、下のＰＵ（すなわちＰＵ１）の上空間ブロックとして、ブロックＢ１（すなわちＰＵ０）の代わりにブロックＢ０が用いられ、ブロックＢ２とＢ３は、下のＰＵ（ＰＵ１）の右上と左上のブロックとして扱われる。このように、ＰＵ０は、ＭＶＰを見つけるためのＰＵ１の処理において、空間的近傍ブロックとして用いられない。これによって、ＰＵ０とＰＵ１の動きベクトル予測子を見つけるためにＰＵ０とＰＵ１を並列処理することが可能となる。代替的実施形態では、ＭＶＰマネージャ４０６は、図１４Ａの例における左近傍のもの、および図１４Ｂの例における上近傍のものは、使用できないものとして扱う。この場合、これら２つの近傍のものは、ＭＶＰ計算に使用されないので、ＰＵ０とＰＵ１を並列処理することが可能である。
【００６４】
符号化性能を向上させるために、具体的な実施形態において、空間的および時間的近傍のインデキシングを変更することができる。より具体的には、１つのＣＵ内に１つのみのＰＵがある場合は、現在のインデキシングがそのまま変更されることなく、この場合、左近傍ブロックのインデックスが上近傍ブロックのインデックスよりも小さい。
【００６５】
１つのＣＵ内に２つのＰＵがある場合は、左ブロックと上ブロックのインデックスが交換されることがある。この交換は、ＰＵ分割タイプなど、様々な要因に依存し得る。例えば、図１５Ａおよび１５Ｂは、一実施形態による異なる分割タイプを示している。図１５Ａにおいて、ＰＵタイプが、Ｎ×２Ｎ、ｎＬ×２Ｎ、またはｎＲ×２Ｎである場合、左のＰＵ（すなわちＰＵ０）については、左近傍ブロック（すなわちＡ０）のインデックスとして、上近傍ブロック（すなわちＡ３）のインデックスよりも小さい値を割り当てることができ、右のＰＵ（すなわちＰＵ１）については、上近傍ブロック（すなわちＡ３）のインデックスとして、左近傍ブロック（すなわちＡ０）のインデックスよりも小さい値を割り当てることができる。
【００６６】
図１５Ｂにおいて、ＰＵタイプが、２Ｎ×Ｎ、２Ｎ×ｎＵ、または２Ｎ×ｎＤである場合、上のＰＵ（すなわちＰＵ０）については、上近傍ブロック（すなわちＢ０）のインデックスとして、左近傍ブロック（すなわちＢ３）のインデックスよりも小さい値を割り当てることができ、下のＰＵ（すなわちＰＵ１）については、左近傍ブロック（すなわちＢ３）のインデックスとして、上近傍ブロック（すなわちＢ０）のインデックスよりも小さい値を割り当てることができる。
【００６７】
具体的な実施形態は、命令実行システム、装置、システム、もしくはマシンで使用されるか、またはそれと接続された非一時的なコンピュータ可読記憶媒体において、実現することができる。コンピュータ可読記憶媒体は、具体的な実施形態で記載した方法を実行するようにコンピュータシステムを制御するための命令を含む。命令は、１つ以上のコンピュータプロセッサにより実行されることで、具体的な実施形態において記載したことを実行するように機能し得るものである。
【００６８】
本明細書および請求項の全体において使用される場合の「〜において（ｉｎ）」の意味に続く表現は、文脈上別段の明確な定めがない限り、「〜の中で（ｉｎ）」と「〜の上で（ｏｎ）」を含むものである。
【００６９】
上記の説明では、様々な実施形態を、具体的な実施形態の様々な側面をどのように実現し得るのかについての例と共に示している。上記の例および実施形態は、唯一の実施形態であるとみなされるべきではなく、それらは、以下の請求項により規定される具体的な実施形態の柔軟性および有効性を例証するために提示されるものである。上記の開示および以下の請求項に基づき、他の構成、実施形態、実現形態、および均等物を、請求項で規定される本発明の範囲から逸脱することなく採用することができる。
【図１０Ａ】
2014523708.tif 000003
【図１０Ｂ】
2014523708.tif 000004
【図１５Ａ】
2014523708.tif 000005
【図１５Ｂ】
2014523708.tif 000006
【図１】
2014523708.tif 000007
【図２】
2014523708.tif 000008
【図３】
2014523708.tif 000009
【図４】
2014523708.tif 000010
【図５】
2014523708.tif 000011
【図６】
2014523708.tif 000012
【図７】
2014523708.tif 000013
【図８】
2014523708.tif 000014
【図９】
2014523708.tif 000015
【図１１】
2014523708.tif 000016
【図１２Ａ】
2014523708.tif 000017
【図１２Ｂ】
2014523708.tif 000018
【図１３Ａ】
2014523708.tif 000019
【図１３Ｂ】
2014523708.tif 000020
【図１４Ａ】
2014523708.tif 000021
【図１４Ｂ】
2014523708.tif 000022
【国際調査報告】
2014523708.tif 000023
2014523708.tif 000024
2014523708.tif 000025