関連出願への相互参照
本願は、「デコーダ側動きベクトル洗練のための誤差面ベースのサブピクセル精度の洗練方法」と題する、2018年7月2日に出願されたインド仮特許出願第201831024666号の利益を主張するものであり、同仮出願は、ここに参照によりその全体において組み込まれる。
H.264/AVCまたはH.265/HEVCのような現在のハイブリッド・ビデオ・コーデックは、予測符号化を含む圧縮を採用する。ビデオ・シーケンスのピクチャーは、ピクセルのブロックに細分化され、これらのブロックがその後符号化される。ブロックをピクセルごとに符号化する代わりに、ブロック全体が、そのブロックに空間的または時間的に近接した、すでにエンコードされたピクセルを使用して予測される。エンコーダは、ブロックとその予測との間の差分のみをさらに処理する。このさらなる処理は、典型的には、ブロック・ピクセルの、変換領域の係数への変換を含む。次いで、これらの係数は、量子化によってさらに圧縮され、エントロピー符号化によってさらにコンパクト化されてビットストリームを形成しうる。ビットストリームはさらに、エンコードされたビデオのデコードを可能にする任意の信号伝達情報を含む。たとえば、信号伝達情報は、入力ピクチャーのサイズ、フレームレート、量子化きざみ指示、ピクチャーのブロックに適用される予測などの、エンコードに関する設定を含んでいてもよい。符号化された信号伝達情報および符号化された信号は、エンコーダおよびデコーダの両方に知られている仕方でビットストリーム内で順序付けられる。これにより、デコーダは、符号化された信号伝達情報および符号化された信号をパースすることができる。
時間的予測は、ビデオの、フレームとも呼ばれるピクチャーどうしの間の時間的相関を利用する。時間的予測は、異なるビデオフレームどうしの間(インター)の依存性を使用する予測であるため、インター予測とも呼ばれる。よって、現在ブロックとも呼ばれる、エンコードされているブロックは、参照ピクチャー(単数または複数)と呼ばれる一つまたは複数の以前にエンコードされたピクチャー(単数または複数)から予測される。参照ピクチャーは、必ずしも、ビデオ・シーケンスの表示順序において、現在ブロックが位置している現在ピクチャーに先行するピクチャーではない。エンコーダは、表示順序とは異なる符号化順序でピクチャーを符号化してもよい。現在ブロックの予測として、参照ピクチャー内の共位置のブロックが決定されてもよい。共位置のブロックは、参照ピクチャーにおいて、現在ピクチャーにおける現在ブロックと同じ位置に位置するブロックである。そのような予測は、動きのないピクチャー領域、すなわち、あるピクチャーから別のピクチャーへと動きのないピクチャー領域については正確である。
動きを考慮に入れる予測子(predictor)、すなわち、動き補償された予測子を得るために、現在ブロックの予測を決定するとき、典型的には動き推定が使用される。よって、現在ブロックは、共位置のブロックの位置から動きベクトルによって与えられる距離のところに位置する、参照ピクチャー内のブロックによって予測される。デコーダが現在ブロックの同じ予測を決定することを可能にするために、動きベクトルはビットストリームにおいて信号伝達されてもよい。ブロックのそれぞれについての動きベクトルを信号伝達することによって引き起こされる信号伝達オーバヘッドをさらに低減するために、動きベクトル自体が推定されてもよい。動きベクトル推定は、空間および/または時間領域における近傍ブロックの動きベクトルに基づいて実行されてもよい。
現在ブロックの予測は、1つの参照ピクチャーを使用して、または2つ以上の参照ピクチャーから得られた予測に重み付けすることによって計算されてもよい。参照ピクチャーは、隣接ピクチャー、すなわち、表示順序において現在ピクチャーの直前のピクチャーおよび/または直後のピクチャーであってもよい。なぜなら、隣接ピクチャーは、現在ピクチャーに類似している可能性が最も高いからである。しかしながら、一般に、参照ピクチャーは、表示順序では現在ピクチャーに先行または後続し、ビットストリームにおいて(復号順序において)現在ピクチャーに先行する任意の他のピクチャーでありうる。これは、たとえば、ビデオ・コンテンツにおける隠蔽および/または非線形動きの場合に利点を提供しうる。よって、参照ピクチャー識別情報も、ビットストリーム内で信号伝達されてもよい。
インター予測の特別なモードは、現在ブロックの予測を生成する際に2つの参照ピクチャーが使用される、いわゆる双予測(bi-prediction)である。特に、それぞれの2つの参照ピクチャーにおいて決定された2つの予測が、現在ブロックの予測信号に組み合わされる。双予測は、単予測(uni-prediction)、すなわち、単一の参照ピクチャーのみを用いる予測よりも現在ブロックのより正確な予測につながる可能性がある。かかるより正確な予測は、現在ブロックのピクセルと予測との間の、より小さな差(「残差」とも呼ばれる)につながり、これは、より効率的にエンコードされうる、すなわち、より短いビットストリームに圧縮されうる。一般に、現在ブロックを予測するために、3つ以上のそれぞれの参照ブロックを見つけるために、3つ以上の参照ピクチャーが使用されてもよい。すなわち、マルチ参照インター予測を適用することができる。このように、マルチ参照予測という用語は、双予測および3つ以上の参照ピクチャーを用いた予測を含む。
より正確な動き推定を提供するために、参照ピクチャーの解像度が、ピクセル間でサンプルを補間することによって向上されてもよい。端数ピクセル(fractional pixel[フラクショナル・ピクセル])補間は、最も近いピクセルの重み付けされた平均によって実行できる。半ピクセル解像度の場合、たとえば、双線形補間が典型的には使用される。他の端数ピクセルは、最も近い諸ピクセルに、それぞれの最も近いピクセルから予測されるピクセルまでの間の距離の逆数によって重み付けしたものの平均として計算される。
動きベクトル推定は計算的に複雑なタスクであり、現在ブロックと、参照ピクチャーにおいて候補動ベクトルによってポイントされる対応する予測ブロックとの間の類似性が計算される。典型的には、探索領域は、画像のM×Mのサンプルを含み、M×M個の候補位置の各サンプル位置が試験される。この試験は、N×Nの参照ブロックCと、探索領域の試験される候補位置に位置するブロックRとの間の類似性指標の計算を含む。その単純さのため、差分絶対値和(sum of absolute differences、SAD)が、この目的のために頻繁に用いられる指標であり、
によって与えられる。
上記の公式において、xおよびyは、探索領域内の候補位置を定義し、一方、インデックスiおよびjは、参照ブロックCおよび候補ブロックR内のサンプルを示す。候補位置は、しばしば、ブロック変位またはオフセットと呼ばれ、これは、ブロック照合を、探索領域内の参照ブロックをシフトし、参照ブロックCと探索領域の重複部分との間の類似性を計算することとして表現することを反映する。複雑さを低減するために、候補動きベクトルの数は、通例、候補動きベクトルをある探索空間に制限することによって低減される。探索空間は、たとえば、現在の画像内の現在ブロックの位置に対応する、参照ピクチャー内の位置を取り囲むピクセルの数および/または位置によって定義されてもよい。すべてのM×Mの候補位置xおよびyについてSADを計算した後、最良のマッチするブロックRは、参照ブロックCとの最大の類似性に対応する、最も低いSADを与える位置のブロックである。他方、候補動きベクトルは、近傍ブロックの動きベクトルによって形成される候補動きベクトルのリストによって定義されうる。
動きベクトルは、通例、少なくとも部分的にはエンコーダ側で決定され、符号化されたビットストリーム内でデコーダに信号伝達される。しかしながら、動きベクトルはデコーダでも導出されうる。そのような場合、現在ブロックはデコーダでは利用できず、参照ピクチャーにおいて候補動きベクトルがポイントするブロックとの類似性を計算するために使用することはできない。よって、現在ブロックの代わりに、すでにデコードされたブロックのピクセルから構築されるテンプレートが使用される。たとえば、現在ブロックに隣接するすでにデコードされたピクセルが使用されてもよい。そのような動き推定は、信号伝達を低減するという利点を提供する。すなわち、動きベクトルは、エンコーダとデコーダの両方で同じ仕方で導出されるので、信号伝達は必要とされない。他方、そのような動き推定の精度は、より低いことがある。
精度と信号伝達オーバヘッドの間のトレードオフを提供するために、動きベクトル推定は、動きベクトル導出と動きベクトル洗練の2つのステップに分割されてもよい。たとえば、動きベクトル導出は、候補のリストからの動きベクトルの選択を含んでいてもよい。そのような選択された動きベクトルは、たとえば、探索空間内の探索によってさらに洗練されうる。探索空間における探索は、各候補動きベクトルについてのコスト関数、すなわち候補動きベクトルがポイントするブロックの各候補位置についてのコスト関数の計算に基づいている。
文書JVET-D0029: Decoder-Side Motion Vector Refinement Based on Bilateral Template Matching, X. Chen, J. An, J. Zheng (該文書はhttp://phenix.it-sudparis.eu/jvet/siteに見出すことができる)は、第1の動きベクトルが整数ピクセル解像度において見出され、該第1の動きベクトルのまわりの探索空間における半ピクセル解像度での探索によってさらに洗練される動きベクトル洗練を示している。ブロック・テンプレートに基づく双方向動きベクトル探索が使用される。
動きベクトル推定は、品質、速度および複雑さの点でその効率がビデオ符号化および復号の効率に影響を与えるので、現代のビデオ符号化器および復号器の重要な特徴である。
本発明は、ビデオのエンコードおよびデコードに関し、特に、動きベクトルの決定に関する。
本願の第1の側面では、デコーダ側動きベクトル洗練システムにおいて、それぞれの初期のサブピクセル精度の洗練中心(単数または複数)のまわりの、一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトルを得るための方法が、以下のステップを含んでいてもよい。
各参照フレームについて整数距離洗練動きベクトルを決定するために、コスト関数を用いて複数の整数1ピクセル距離洗練動作(反復工程)を逐次反復的に実行するステップであって、前記探索中心は、動作(反復工程)の後に、その動作(反復工程)における最低コストの位置に更新される、ステップと、所与の動作(反復工程)における中心位置のコストが、その周囲の一組の1ピクセル近傍位置のコストよりも低いために、逐次反復するループの早期の終了が生じることを決定する、または動作(反復工程)の所定数に到達したことを決定するステップ。早期の終了が生じる場合、本方法は、最後の探索中心およびその周囲の前記一組の1ピクセル近傍位置のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値を有する位置を計算することによって、各参照における最後の探索中心のまわりのサブピクセル距離洗練動きベクトルを決定するステップと、各参照フレームについての決定された整数距離洗練動きベクトルおよび決定されたサブピクセル距離洗練動きベクトルの合計として、総洗練動きベクトルを返すステップとを含んでいてもよい。動作(反復工程)の所定の回数に到達した場合、本方法は、すべての動作(反復工程)を通じた最小コスト関数値を有する位置に対応する洗練動きベクトルを返すステップを含んでいてもよい。
第1の側面のある実装では、コスト関数は、参照リストL1における変位が、水平方向および垂直方向の両方において参照リストL0における変位と等しく、反対向きであるように、参照リストL0およびL1の両方における統合的な洗練のために実行される(コスト関数は、SBM_JOINTと称される)。
本願の第2の側面では、デコーダ側動きベクトル洗練システムにおいて、それぞれの初期のサブピクセル精度の洗練中心(単数または複数)のまわりの、一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトルを得るための方法が、以下のステップを含んでいてもよい。
各参照フレームについて整数距離洗練動きベクトルを決定するために、第1のコスト関数を使用して複数の整数1ピクセル距離洗練動作(反復工程)を逐次反復的に実行するステップであって、前記探索中心は、動作(反復工程)の後に、その動作(反復工程)における最低コストの位置に更新される、ステップと、所与の動作(反復工程)における中心位置のコストが、その周囲の一組の1ピクセル近傍位置のコストよりも低いために、逐次反復するループの早期の終了が生じることを決定する、または動作(反復工程)の所定数に到達したことを決定するステップ。
第2のコスト関数を使用して、最後の探索中心および最後の探索中心の一組の1ピクセル近傍位置におけるコスト関数値を評価するステップ:最後の探索中心位置が、最後の探索中心に対する前記一組の1ピクセル近傍位置における第2のコスト関数値と比較したときに、最も低い第2のコスト関数値を有する場合、第2のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値を有する位置を計算することによって、各参照における最良の整数距離洗練位置のまわりのサブピクセル距離洗練動きベクトルを決定するステップと、各参照フレームについての、決定された整数距離洗練動きベクトルおよび決定されたサブピクセル距離洗練動きベクトルの合計として、総洗練動きベクトルを返すステップ。そうではなく最後の探索中心位置が、最後の探索中心に対する前記一組の1ピクセル近傍位置における第2のコスト関数値と比較したときに、最も低い第2のコスト関数値を有しない場合は、本方法は、各参照フレームについての最良の第2のコスト関数値を有する位置に対応する洗練動きベクトルを返すステップを含む。
第2の側面のある実装では、第1のコスト関数はSBM_JOINTであり、第2のコスト関数はTBM_INDEPDENDENTであり、これは、参照リストL0およびL1の両方において独立した洗練を、共通のバイラテラル平均化テンプレートに対して実行することに関連するコスト関数として定義される。
本方法は、テンプレート・マッチング使用事例およびバイラテラル・マッチング使用事例のために使用できる。
本発明の別の側面では、本明細書に開示された方法は、非一時的なコンピュータ読み取り可能媒体に記憶された命令として実装されてもよく、該命令は、上述の方法のステップを実行するためにプロセッサによって読み取られ、実行されうる。
本発明のいくつかの側面において、デコーダ側動きベクトル洗練のための方法は、初期動きベクトルに関する候補整数動きベクトル変位に対応する整数距離コストを比較することによってターゲット整数動きベクトル変位を決定するステップと、整数距離コストに対して計算を実行することによってサブピクセル動きベクトル変位を決定するステップと、ターゲット整数動きベクトル変位、サブピクセル動きベクトル変位、および初期動きベクトルに基づいて、洗練された動きベクトルを決定するステップとを含む。
本発明によって、従来の技術よりも多くの利点が達成される。たとえば、本発明の実施形態は、所与の逐次反復動作における中心位置のコストの、中心位置の周囲の一組の1ピクセル近傍位置のコストに対するチェックに基づく、逐次反復ループの決定される早期の終了を利用する。逐次反復ループを早期に終了することにより、不必要な計算を減らすまたはなくすことができる。
さらに、装置が上述の方法を実装することができ、ソフトウェアおよびハードウェアの組み合わせであってもよい。たとえば、エンコードおよび/またはデコードは、汎用プロセッサ(CPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、またはフィールド・プログラマブル・ゲート・アレイ(FPGA)などの集積回路(半導体デバイスまたはチップ)によって実行されてもよい。しかしながら、本発明の実施形態は、プログラマブルハードウェア上の実装に限定されるものではない。本発明の実施形態は、特定用途向け集積回路上で、またはCPU、DSP、FPGA、およびASICコンポーネントの一つまたは複数の組み合わせによって実装されうる。
以下では、添付の図および図面を参照して、例示的な実施形態をより詳細に説明する。
本開示のある実施形態による、ビデオ信号をエンコードするためのエンコーダの例示的な構造を示すブロック図である。
本開示のある実施形態による、ビデオ信号をデコードするためのデコーダの例示的な構造を示すブロック図である。
双予測に好適な例示的なテンプレート・マッチングを示す概略図である。
単予測および双予測に好適な例示的なテンプレート・マッチングを示す概略図である。
単予測および双予測に好適な例示的なバイラテラル・マッチングを示す概略図である;
動きベクトル探索の可能な実装を示すフロー図である。
ビデオ符号化において適用される局所的な照明補償の例を示す概略図である。
デコーダ側動きベクトル洗練の例を示す概略図である。
サブピクセル位置の例を示す概略図である。
本開示のある実施形態による、一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトル洗練を得るための、中心ピクセルの周囲の一組の1ピクセル近傍位置のブロック図である。
本開示のいくつかの実施形態による、デコーダ側動きベクトル洗練システムにおいて、一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトル洗練を得るための方法を示す簡略化されたフロー図である。
本開示のある実施形態を実装するための方法を示す簡略化されたフロー図である。
本開示のさまざまな実施形態を実装するために使用可能な装置のブロック図である。
本開示の実施形態は、動きベクトル洗練において適用されるテンプレート・マッチングの改善に関する。特に、テンプレート・マッチングは、発見された最良の諸マッチング・ブロックの平均が(局所的な照明制御によって)さらに調整されない場合でも、ゼロ平均テンプレートおよびゼロ平均候補ブロックに適用される。
テンプレート・マッチングは、第1の参照ピクチャーおよび第2の参照ピクチャーをそれぞれポイントする最良の第1および第2の動きベクトルを見つけるために使用される。テンプレート・マッチングは、デコーダによって導出されるか、デコーダに信号伝達されうる初期動きベクトルによって与えられる位置上の所定の探索空間におけるテンプレート・マッチングによって、各参照ピクチャーについて実行される。
テンプレート・マッチングは、初期動きベクトルによってポイントされるブロックから導出されたブロック・テンプレートに基づいて実行されてもよい。
現在ブロックについての予測子を得るために最良のマッチング・ブロックを見つけるためのそのようなテンプレート・マッチングは、たとえばハイブリッド・ビデオ・エンコーダおよび/またはデコーダにおいて使用されてもよい。たとえば、HEVCなどといったエンコーダおよび/またはデコーダへの適用が有利でありうる。特に、HEVCまたは新しいコーデック/標準のさらなる発展が本開示の実施形態を利用することができる。
図1は、ビデオ・ストリームのフレームまたはピクチャーの入力画像サンプルを受け取るための入力102と、エンコードされたビデオ・ビットストリームを生成するための出力172とを含むエンコーダ100を示している。本明細書中で使用される場合、本開示における用語「フレーム」はピクチャーとも呼ばれる。本開示は、ビデオのインターレース・フィールドにも適用可能であることを注意しておく。一般に、ピクチャーは、m×nのピクセルを含み、これは画像サンプルに対応し、一つまたは複数の色成分を含んでいてもよい。本明細書で使用される場合、以下の説明は、輝度サンプルとしてのピクセルに言及する。しかしながら、本開示の動きベクトル探索は、クロミナンスまたはRGBなどの探索空間の成分を含む任意の色成分に適用できることを注意しておく。さらに、1つの成分についてのみ動きベクトル推定を実行し、推定された動きベクトルをより多くの、またはすべての成分に適用することが有利でありうる。
符号化されるべき入力ブロックは、必ずしも同じサイズをもたない。1つのピクチャーが異なるサイズの諸ブロックを含んでいてもよく、異なるピクチャーのブロック・ラスタ(block raster)も異なっていてもよい。
ある例示的実施形態では、エンコーダ100は、予測、変換、量子化、およびエントロピー符号化をビデオ・ストリームに対して実行するように構成される。変換、量子化、およびエントロピー符号化は、それぞれ、変換ユニット106、量子化ユニット108、およびエントロピー符号化ユニット170によって実行され、エンコードされたビデオ・ビットストリームを生成する。
ビデオ・ストリームは、複数のフレームを含んでいてもよく、各フレームは、イントラまたはインター符号化されるあるサイズの諸ブロックに分割される。たとえば、ビデオ・ストリームの第1フレームのブロックは、イントラ予測ユニット154によってイントラ符号化される。イントラ・フレームは、独立にデコードされることができ、ランダムアクセスのためのビットストリームにおけるエントリーポイントを提供することができるように、同じフレーム内の情報のみを用いて符号化される。ビデオ・ストリームの他のフレームのブロックは、インター予測ユニット144によってインター符号化されてもよく、すなわち、以前に符号化されたフレーム(参照フレーム)からの情報を使用して時間的冗長性を減らし、インター符号化されるフレームの各ブロックは、参照フレーム内のブロックから予測される。モード選択ユニット160は、イントラ予測ユニット154によって処理されるフレームのブロック155と、インター予測ユニット144によって処理されるフレームのブロック145との間で選択するように構成される。モード選択ユニット160は、イントラ予測またはインター予測のパラメータをも制御する。画像情報のリフレッシュを可能にするために、インター符号化されたフレーム内に、イントラ符号化されたブロックが設けられてもよい。さらに、デコードのためのエントリーポイント、すなわち、デコーダが前に符号化されたフレームからの情報をもつことなくデコードを開始することができるポイントを提供するために、イントラ符号化されたブロックのみを含むイントラ・フレームが、ビデオ・シーケンスに定期的に挿入されてもよい。
イントラ推定ユニット152およびイントラ予測ユニット154は、イントラ予測を実行するように構成されたユニットである。特に、イントラ推定ユニット152は、もとの画像の知識にも基づいて予測モードを導出してもよく、一方、イントラ予測ユニット154は、対応する予測子、すなわち、選択された予測モードを用いて予測されたサンプルを、差分符号化のために提供する。空間的または時間的予測を実行するために、符号化されたブロックは、逆量子化ユニット110および逆変換ユニット112によってさらに処理されて、逆変換されたブロック113を提供してもよい。再構成ユニット114は、逆変換されたブロック113を予測ブロック165と組み合わせて、再構成されたブロック115を提供し、これが、デコードされた画像の品質をさらに改善するためにループ・フィルタリング・ユニット120に提供される。次いで、フィルタリングされたブロックは、その後デコード・ピクチャー・バッファ130に記憶される参照フレームを形成する。逆量子化ユニット110、逆変換ユニット112、再構成ユニット114およびループ・フィルタ120は、デコーダ(デコード・ループ)の一部を形成する。エンコーダ側でのそのようなデコード・ループ(デコーダ)は、デコーダ側で再構成される参照ピクチャーと同じ参照フレームを生成するという利点を提供する。よって、エンコーダおよびデコーダは、対応する仕方で動作する。ここでいう用語「再構成」は、予測ブロック165を逆変換された(デコードされた残差)ブロック113に加えることによって、再構成されたブロック115を得ることをいう。
エンコーダ100はまた、インター符号化されるべき現在のフレームまたはピクチャーのピクチャー・ブロック101と、デコード・ピクチャー・バッファ130からの一つまたは複数の参照フレームとを受領するインター推定ユニット142をも含む。動き推定は、インター推定ユニット142によって実行されるが、動き補償は、インター予測ユニット144によって実行される。動き推定は、たとえば、符号化されるべきもとの画像も使用して、あるコスト関数に基づいて動きベクトルおよび参照フレームを得るために使用される。たとえば、動き推定(インター推定)ユニット142は、初期動きベクトル推定を提供することができる。次いで、最初の動きベクトルは、ビットストリーム内で、動きベクトルの形で直接的に、またはエンコーダおよびデコーダにおいて同じように所定の規則に基づいて構築される候補のリスト内の動きベクトル候補を指すインデックスとして、信号伝達(信号として伝送)されうる。次いで、動き補償は、参照フレーム内の現在ブロックと共位置にあるブロックの、参照フレーム内の参照ブロックへの、すなわち動きベクトルによる並進として、現在ブロックの予測子を導出する。インター予測ユニット144は、現在ブロックについて、予測ブロック145を出力する。ここで、予測ブロック145はコスト関数を最小化するものである。たとえば、コスト関数は、符号化されるべき現在ブロックとその予測ブロックとの間の差であってもよく、すなわち、コスト関数は、残差ブロック105を最小化する。残差ブロックの最小化は、たとえば、現在ブロックのすべてのピクセル(サンプル)と候補参照ピクチャー内の候補ブロックとの間の差分絶対値和(SAD)の計算に基づく。一般に、平均二乗誤差(mean square error、MSE)または構造的類似性メトリック(structural similarity metric、SSIM)のような、任意の他の類似性メトリックを使用することができる。
コスト関数はまた、そのようなインター・ブロックを符号化するために必要なビット数および/またはそのような符号化から帰結する歪みであってもよい。よって、レート‐歪み最適化手順が、動きベクトル選択について決定するために、および/または一般に、ブロックのためにインター予測を使用するかイントラ予測を使用するか、そしてどの設定とともに使用するかなどのエンコード・パラメータについて決定するために使用されうる。
イントラ推定ユニット152およびインター予測ユニット154は、入力として、イントラ符号化されるべき現在のフレームまたはピクチャーのピクチャー・ブロック101と、現在のフレームのすでに再構成された領域からの一つまたは複数の参照サンプル117とを受領する。次いで、イントラ予測は、現在のフレームの現在ブロックのピクセルを、現在のフレームの参照サンプルの関数を用いて記述する。イントラ予測ユニット154は、現在ブロックについての予測ブロックを出力する。ここで、予測ブロックは、有利には、符号化されるべき現在ブロックとその予測ブロックとの間の差を最小化する、すなわち、残差ブロックを最小化するものである。残差ブロックの最小化は、たとえば、レート‐歪み最適化手順に基づくことができる。特に、予測ブロックは、参照サンプルの方向性補間として得られる。方向は、レート‐歪み最適化によって、および/または、インター予測に関連して上述したような類似性指標を計算することによって決定されてもよい。
インター推定ユニット142は、入力として、インター符号化されるべき現在のフレームまたはピクチャーのブロックまたはより普遍的に形成された画像サンプル(a more universal-formed image sample)と、2つ以上のすでにデコードされたピクチャー231とを受領する。次いで、インター予測は、現在のフレームの現在の画像サンプルを、参照ピクチャーの参照画像サンプルへの動きベクトルを用いて記述する。インター予測ユニット144は、現在の画像サンプルについて一つまたは複数の動きベクトル145を出力し、それらの動きベクトルによってポイントされる参照画像サンプルは、有利には、符号化されるべき現在画像サンプルとその参照画像サンプルとの間の差を最小化する、すなわち、残差画像サンプルを最小化するものである。次いで、現在ブロックについての予測子が、差分符号化のために、インター予測ユニット144によって提供される。
現在ブロックとその予測との間の差、すなわち残差ブロック105は、その後、変換ユニット106によって変換されて、変換された係数107を生成する。変換された係数107は、量子化ユニット108によって量子化され、エントロピー符号化ユニット170によってエントロピー符号化される。このようにして生成されたエンコードされたピクチャー・データ171、すなわちエンコードされたビデオ・ビットストリームは、イントラ符号化されたブロックおよびインター符号化されたブロックならびに対応する信号伝達情報(モード指示、動きベクトルの指示、および/またはイントラ予測方向など)を含む。変換ユニット106は、離散フーリエ変換、高速フーリエ変換、または離散コサイン変換(DFT/FFTまたはDCT)などの線形変換を適用してもよい。空間周波数領域への変換は、結果として得られる係数107が、典型的には、より低い周波数においてより高い値を有するという利点を提供する。よって、有効係数走査(effective coefficient scanning)(たとえばジグザグ走査)および量子化の後、結果として得られる値のシーケンスは、典型的には、始めにいくつかのより大きな値を有し、終わりにゼロのシーケンスを有する。これは、さらに効率的な符号化を可能にする。量子化ユニット108は、係数値の分解能を低減することにより、実際の非可逆圧縮を実行する。エントロピー符号化ユニット170は、次いで、係数値にバイナリー符号語を割り当ててビットストリームを生成する。また、エントロピー符号化ユニット170は、信号伝達情報(図1には示さず)をも符号化する。
図2は、ビデオ・デコーダ200を示す。ビデオ・デコーダ200は、デコード・ピクチャー・バッファ230と、インター予測ユニット244と、ブロック予測ユニットであるイントラ予測ユニット254とを含む。デコード・ピクチャー・バッファ230は、エンコードされたビデオ・ビットストリームから再構成された少なくとも1つ(単予測の場合)または少なくとも2つ(双予測の場合)の参照フレームを記憶するように構成され、参照フレームは、エンコードされたビデオ・ビットストリームの現在のフレーム(現在デコードされているフレーム)とは異なる。イントラ予測ユニット254は、デコードされるべきブロックの推定値である予測ブロックを生成するように構成される。イントラ予測ユニット254は、デコード・ピクチャー・バッファ230から得られた参照サンプルに基づいて、この予測を生成するように構成される。
デコーダ200は、ビデオ・エンコーダ100によって生成されたエンコードされたビデオ・ビットストリームをデコードするように構成され、好ましくは、デコーダ200とエンコーダ100の両方が、エンコード/デコードされるべきそれぞれのブロックについて同一の予測を生成する。デコード・ピクチャー・バッファ230およびイントラ予測ユニット254の特徴は、図1のデコード・ピクチャー・バッファ130およびイントラ予測ユニット154の特徴と同様である。
ビデオ・デコーダ200は、ビデオ・エンコーダ100の逆量子化ユニット110、逆変換ユニット112、ループ・フィルタリング・ユニット120にそれぞれ対応する、たとえば、逆量子化ユニット210、逆変換ユニット212、ループ・フィルタリング・ユニット220のような、ビデオ・エンコーダ100にも存在するユニットをさらに含む。
エントロピー・デコード・ユニット204は、受領されたエンコードされたビデオ・ビットストリームをデコードし、対応して量子化された残差変換係数209および信号伝達情報を得るように構成される。量子化された残差変換係数209は、逆量子化ユニット210および逆変換ユニット212に提供されて、残差(逆変換された)ブロックを生成する。残差ブロックは、再構成ユニット214において予測ブロック265に加えられ、和は、デコードされたビデオを得るためにループ・フィルタリング・ユニット220に提供される。デコードされたビデオのフレームは、デコード・ピクチャー・バッファ230に記憶され、インター予測のためのデコードされたピクチャー231のはたらきをすることができる。
一般に、図1および図2のイントラ予測ユニット154および254は、すでにエンコードされた領域からの参照サンプルを使用して、エンコードされる必要があるまたはデコードされる必要があるブロックのための予測信号を生成することができる。
エントロピー復号ユニット204は、その入力として、エンコードされたビットストリーム171を受領する。一般に、ビットストリームは、まずパースされる、すなわち、ビットストリームから信号伝達パラメータおよび残差が抽出される。典型的には、ビットストリームの構文および意味内容は、エンコーダおよびデコーダが相互運用可能な仕方で機能しうるように、標準によって定義される。上記の背景セクションで説明したように、エンコードされたビットストリームは、予測残差だけを含むわけではない。動き補償された予測の場合、動きベクトル指示もビットストリームにおいて符号化され、デコーダにおいて該ビットストリームからパースされる。動きベクトル指示は、動きベクトルが提供される参照ピクチャーによって、および動きベクトル座標によって与えられうる。これまでは、完全な動きベクトルを符号化することが考えられてきた。しかしながら、ビットストリームにおいて、現在の動きベクトルと前の動きベクトルとの間の差分だけがエンコードされてもよい。このアプローチは、近隣のブロックの動きベクトルの間の冗長性の活用を許容する。
参照ピクチャーを効率的に符号化するために、H.265コーデック(ITU-T、H265、シリーズH:オーディオビジュアルおよびマルチメディアシステム:高効率ビデオ符号化)は、リスト・インデックスにそれぞれの参照フレームを割り当てる、参照ピクチャーのリストを提供する。その際、参照フレームは、対応する割り当てられたリスト・インデックスをビットストリーム中に含めることによって、ビットストリーム内で信号伝達される。そのようなリストは、標準で定義されるか、またはビデオもしくはいくつかのフレームの集合の開始時に信号伝達されるものであってもよい。H.265では、参照リストL0およびL1と呼ばれる、参照ピクチャーの2つのリストが定義されていることを注意しておく。その際、参照ピクチャーは、参照リスト(L0またはL1)を示し、所望の参照ピクチャーに関連するそのリスト内のインデックスを示すことによって、ビットストリーム内で信号伝達される。2つ以上のリストを提供することは、よりよい圧縮のために利点をもつ可能性がある。たとえば、参照リストL0は、一方向的にインター予測されるスライスおよび双方向的にインター予測されるスライスの両方のために使用されてもよく、一方、参照リストL1は、双方向的にインター予測されるスライスのためにのみ使用されてもよい。しかしながら、一般に、本開示は、リストL0およびL1のいかなる内容にも限定されない。
参照リストL0およびL1は、標準で定義され、固定されてもよいが、ビデオ・シーケンスの始めにそれらを信号伝達することによって、符号化/復号におけるより大きな柔軟性が達成されうる。よって、エンコーダは、リストL0およびL1を、インデックスに従って順序付けられた特定の諸参照ピクチャーをもって構成してもよい。参照リストL0およびL1は、同じ固定サイズを有してもよい。一般に、3つ以上のリストがあってもよい。動きベクトルは、参照ピクチャー内の座標によって直接、信号伝達されてもよい。あるいはまた、H.265でも指定されているように、候補動きベクトルのリストが構築されてもよく、該リストにおいて特定の動きベクトルに関連するインデックスが伝送されることができる。
現在ブロックの動きベクトルは、通例、現在ピクチャーまたは以前に符号化されたピクチャー内の近傍ブロックの動きベクトルと相関している。これは、近傍ブロックが、同様の動きをもつ同じ動くオブジェクトに対応する可能性が高く、オブジェクトの動きが時間の経過とともに急激に変化する可能性が低いためである。結果として、近傍ブロックにおける動きベクトルを予測子として使用することで、信号伝達される動きベクトル差のサイズが減少する。動きベクトル予測子(Motion Vector Predictor、MVP)は、通例、空間的近傍ブロックから、または共位置ピクチャーにおける時間的近傍ブロックからのすでにエンコード/デコードされた動きベクトルから導出される。H.264/AVCでは、これは、3つの空間的に近隣の動きベクトルの成分ごとの中央値を実行することによって行なわれる。このアプローチを使用すると、予測子の信号伝達は必要とされない。共位置ピクチャーからの時間的MVPは、H.264/AVCのいわゆる時間的直接モード(temporal direct mode)においてのみ考慮される。H.264/AVC直接モードは、動きベクトル以外の動きデータを導出するためにも使用される。よって、それらはHEVCにおけるブロック・マージ概念に、より関連する。HEVCでは、MVPを暗黙的に導出するアプローチは、MVPのリストからのどのMVPが動きベクトル導出のために使用されるかを明示的に信号伝達する、動きベクトル競合(motion vector competition)として知られる技法によって置き換えられた。HEVCにおける可変符号化四分木ブロック構造の結果として、1つのブロックが、潜在的MVP候補として、動きベクトルを有するいくつかの近傍ブロックをもつことができる。左近傍を例にとると、最悪の場合、64×64ルーマ符号化ツリーブロックがそれ以上分割されず、その左のものが最大深度まで分割されている場合、64×64ルーマ予測ブロックは、左側に16個の4×4ルーマ予測ブロックをもつことができた。
高度動きベクトル予測(Advanced Motion Vector Prediction、AMVP)は、そのような柔軟なブロック構造を考慮に入れるよう動きベクトル競合を修正するために導入された。HEVCの開発中に、符号化効率と実装に優しい設計との間の良好なトレードオフを提供するために、初期のAMVP設計は著しく単純化された。AMVPの初期設計は、3つの異なるクラスの予測子からの5つのMVPを含んでいた:空間的近傍からの3つの動きベクトル、該3つの空間的予測子の中央値、および共位置の時間的近傍ブロックからのスケーリングされた動きベクトル。さらに、予測子のリストは、最も可能性の高い動き予測子を最初の位置に配置するように順序付けし直し、最小の信号伝達オーバヘッドを保証するよう冗長な候補を除去することによって修正された。AMVP候補リスト構築の最終的な設計は、次の2つのMVP候補を含む:a)5つの空間的近傍ブロックから導出される2つまでの空間的候補MVP;b)両方の空間的候補MVPが利用可能ではないか、またはそれらが同一である場合、2つの時間的、共位置のブロックから導出される1つの時間的候補MVP;およびc)空間的、時間的または両方の候補が利用可能でない場合はゼロ動きベクトル。動きベクトル決定に関する詳細は、参照により本明細書に組み込まれるV. Sze et al(編)による書籍、High Efficiency Video Coding (HEVC): Algorithms and Architectures、Springer, 2014、特に第5章に見出すことができる。
信号伝達オーバヘッドをさらに増加させることなく、動きベクトル推定をさらに改善するために、エンコーダ側で導出され、ビットストリームにおいて提供される動きベクトルをさらに洗練することが有益でありうる。動きベクトルの洗練は、エンコーダからの支援なしにデコーダにおいて実行されうる。エンコーダは、そのデコーダ・ループ内で、対応する動きベクトルを得るために同じ洗練を用いてもよい。動きベクトル洗練は、参照ピクチャーの整数ピクセル位置および端数ピクセル位置を含む探索空間において実行される。たとえば、端数ピクセル位置は、半ピクセル位置、1/4ピクセル位置、または他の端数位置であってもよい。端数ピクセル位置は、双線形補間のような補間によって整数(全ピクセル)位置から得ることができる。
現在ブロックの双予測では、それぞれ参照リストL0の第1の動きベクトルおよび参照リストL1の第2の動きベクトルを用いて得られた2つの予測ブロックが単一の予測信号に組み合わされる。これは、単予測よりも、もとの信号への良好な適合を提供することができ、その結果、より小さな残差情報、そして可能性としてはより効率的な圧縮が得られる。
デコーダでは、現在ブロックは、デコードされているところなので利用可能でないが、動きベクトル洗練のためには、テンプレートが使用される。テンプレートは、現在ブロックの推定値であり、すでに処理された(すなわち、エンコーダ側では符号化された、デコーダ側では復号された)画像部分に基づいて構築される。
まず、第1の動きベクトルMV0の推定値および第2の動きベクトルMV1の推定値が、デコーダ200において入力として受領される。エンコーダ100では、動きベクトル推定値MV0およびMV1は、ブロック・マッチングによって、および/または(同じピクチャー内または隣接ピクチャー内の)現在ブロックの近傍のブロックの動きベクトルによって形成される候補のリスト(たとえばマージ・リスト)内を探索することによって、得ることができる。次いで、MV0およびMV1は、有利には、ビットストリーム内でデコーダ側に信号伝達される。しかしながら、一般に、エンコーダにおける第1の決定段も、テンプレート・マッチングによって実行されることができたものであり、そのことは信号伝達オーバヘッドを減少させるという利点を提供したことを注意しておく。
デコーダ200では、ビットストリーム内の情報に基づいて、動きベクトルMV0およびMV1が有利に得られる。動きベクトルMV0およびMV1は、直接信号伝達されるか、または差分信号伝達され、および/または動きベクトルのリスト(マージ・リスト)中のインデックスが信号伝達される。しかしながら、本開示は、ビットストリーム内で動きベクトルを信号伝達することに限定されない。むしろ、本開示によれば、動きベクトルは、エンコーダの動作に対応して、動きベクトル推定の第1段ですでにテンプレート・マッチングによって決定されてもよい。第1段(動きベクトル導出)のテンプレート・マッチングは、第2の動きベクトル洗練段の探索空間とは異なる探索空間に基づいて実行されてもよい。特に、動きベクトル洗練は、より高い解像度(すなわち、探索位置間のより短い距離)を有する探索空間上で実行されてもよい。
それぞれMV0およびMV1がポイントする2つの参照ピクチャーRefPic0およびRefPic1の指示もデコーダに提供される。参照ピクチャーは、以前の処理、すなわち、それぞれエンコードおよびデコードの結果として、エンコーダおよびデコーダにおいてデコード・ピクチャー・バッファに記憶されている。これらの参照ピクチャーのうちの1つが、探索によって、動きベクトル洗練のために選択される。動きベクトルの決定のための装置の参照ピクチャー選択ユニットは、MV0がポイントする第1の参照ピクチャーと、MV1がポイントする第2の参照ピクチャーとを選択するように構成される。該選択に続いて、参照ピクチャー選択ユニットは、動きベクトル洗練を実行するために第1の参照ピクチャーが使用されるか、または第2の参照ピクチャーが使用されるかを決定する。動きベクトル洗練を実行するために、第1の参照ピクチャー内の探索領域は、動きベクトルMV0がポイントする候補位置のまわりで定義される。探索空間内でテンプレート・マッチングを実行し、差分絶対値和(SAD)のような類似性メトリックを決定することによって、探索領域内の諸候補探索空間位置が、テンプレート・ブロックに最も類似するブロックを見つけるために分析される。探索空間の位置は、テンプレートの左上隅が照合される位置を示す。上述したように、左上隅は単なる慣例であり、中心点のような探索空間の任意の点が、一般に、照合位置を示すために使用されうる。
図4Aは、単予測にも適用可能な代替的なテンプレート・マッチングを示す。詳細は、文書JVET-A1001、特にJianle Chen et. al.による"Algorithm Description of Joint Exploration Test Model 1"と題される、http://phenix.it-sudparis.eu/jvet/でアクセス可能な文書JVET-A1001のセクション2.4.6."Pattern matched motion vector derivation"に見出すことができる。このテンプレート・マッチング・アプローチにおけるテンプレートは、現在のフレームにおける現在のブロックに隣接するサンプルとして決定される。文書JVET-A1001の図1に示されるように、現在ブロックの上および左の境界に隣接するすでに再構成されたサンプルが取られ、「L形テンプレート」と呼ばれうる。
参照により組み込まれる文書JVET-D0029によれば、デコーダ側動きベクトル洗練(DMVR)は、2つのそれぞれの参照ピクチャーRefPict0およびRefPict1をポイントする初期動きベクトルMV0およびMV1を入力として有する。これらの初期動きベクトルは、RefPict0およびRefPict1内のそれぞれの探索空間を決定するために使用される。さらに、動きベクトルMV0とMV1を用いて、MV0およびMV1によってポイントされる(サンプルの)それぞれのブロックAおよびBに基づき、次のようにテンプレート(template)が構築される:
Template=function(Block A, Block B)
関数(function)は、サンプル毎の重み付けされた加算と組み合わされたサンプル・クリッピング操作であってもよい。次いで、該テンプレートは、それぞれの参照ピクチャーRefpic0およびRefpic1におけるMV0およびMV1に基づいて決定された探索空間においてテンプレート・マッチングを実行するために使用される。それぞれの探索空間における最良のテンプレート・マッチを決定するためのコスト関数はSAD(Template, Block candA')であり、ここでblock candA'は、MV0によって与えられる位置にまたがる探索空間において候補MVによってポイントされる候補符号化ブロックである。図3は、最良のマッチング・ブロックA'の決定と、結果として得られる洗練された動きベクトルMV0'とを示す。対応して、図3に示されるように、最良のマッチング・ブロックB'およびブロックB'をポイントする対応する動きベクトルMV1'を見つけるために、同じテンプレートが使用される。換言すれば、初期動きベクトルMV0およびMV1によってポイントされるブロックAおよびBに基づいてテンプレートが構築された後、洗練された動きベクトルMV0'およびMV1'が、テンプレートを用いたRefPic0およびRefPic1上の探索を介して見出される。
動きベクトル導出技法は、時に、フレームレート・アップコンバージョン(frame rate up-conversion、FRUC)とも呼ばれる。初期動きベクトルMV0およびMV1は、一般に、エンコーダおよびデコーダが動きベクトル洗練のために同じ初期ポイントを使用することができることを保証するために、ビットストリームにおいて示されてもよい。あるいはまた、初期動きベクトルは、一つまたは複数の初期候補を含む初期候補のリストを提供することによって得られてもよい。それらのそれぞれについて、洗練された動きベクトルが決定され、最後に、最も低いコスト関数を有する洗練された動きベクトルが選択される。
上述したように、テンプレート・マッチングによる動きベクトル導出モードは、フレームレート・アップコンバージョン(FRUC)技法に基づく特別なマージ・モードである。このモードでは、ブロックの動き情報がデコーダ側で導出される。文書JVET-A1001(http://phenix.it-sudparis.eu/jvet/においてアクセス可能な"Algorithm Description of Joint Exploration Test Model 1")に記載されている具体的な実装によれば、マージ・フラグが真の場合、CUまたはPUについてFRUCフラグが信号伝達される。FRUCフラグが偽である場合、マージ・インデックスが信号伝達され、通常のマージ・モードが使用される。FRUCフラグが真の場合は、追加のFRUCモード・フラグが信号伝達されて、どの方法(バイラテラル・マッチングまたはテンプレート・マッチング)がそのブロックについての動き情報を導出するために使用されるべきかを示す。
まとめると、動きベクトル導出プロセスの間、まず、バイラテラル・マッチングまたはテンプレート・マッチングに基づいて、予測ユニット(PU)全体について、初期動きベクトルが導出される。まず、MV候補のリストが生成され、これは、たとえば、PUのマージ・リストであることができる。リストがチェックされ、最小マッチング・コストにつながる候補が開始点(初期動きベクトル)として選択される。次いで、開始点周辺のバイラテラル・マッチングまたはテンプレート・マッチングに基づく局所的な探索が実行され、最小マッチング・コストをもたらす動きベクトル(単数または複数)(MV)が、そのPUについてのMVとして採用される。次いで、動き情報は、導出されたPU動きベクトルを開始点としてさらに洗練される。予測ユニット〔予測単位〕(prediction unit、PU)および符号化ユニット〔符号化単位〕(coding unit)という用語は、本明細書では、ピクチャー(フレーム)内のサンプルのブロックを記述するために交換可能に使用されることができる。
図4Bに示されるように、(文書JVET-A1001に記載されている)バイラテラル・マッチングは、2つの異なる参照ピクチャーにおいて、現在のCUの動き軌跡(motion trajectory)に沿った2つのブロックの間の最も近いマッチを見つけることによって、現在のCUの動き情報を導出するために使用される。連続した動き軌跡の想定のもとで、それら2つの参照ブロックをポイントする動きベクトルMV0およびMV1は、現在ピクチャーと該2つの参照ピクチャーとの間の時間的距離、すなわちTD0およびTD1に比例するものとする。よって、本開示のある実施形態では、それぞれの試験された候補ベクトル対において、2つのそれぞれのベクトルは、画像平面内の直線上にある。特別な場合として、現在ピクチャーが時間的に2つの参照ピクチャーの間に存在し、現在ピクチャーから2つの参照ピクチャーまでの時間的距離が同じである場合、バイラテラル・マッチングはミラーに基づく双方向MVになる。
図4Aに示されているように、(文書JVET-A1001に記載されている)テンプレート・マッチングは、現在ピクチャー内のテンプレート(現在のCUの上および/または左の近傍ブロック)と参照ピクチャー内のブロック(テンプレートと同じサイズ)との間の最も近い一致を見つけることによって、現在のCUの動き情報を導出するために使用される。文書JVET-A1001の"Pattern matched motion vector derivation"のセクションは、テンプレート・マッチングおよびバイラテラル・マッチング方法の具体的な実装を記述している。一例は、バイラテラル・マッチング動作は「マージ・フラグ」が真の場合にのみ適用されることを開示しており、「ブロック・マージ」動作モードが選択されることを示している。ここで、文書JVET-A1001の著者は、H.265規格の「マージ・モード」を参照している。JVET-A1001に記載されたテンプレート・マッチングおよびバイラテラル・マッチング方法は、他のビデオ符号化規格にも適用でき、特定の実装におけるバリエーションが生じることを注意しておく。
図5は、デコーダ側動きベクトル洗練(DMVR)動作を示すフロー図である。文書JVET-D0029によれば、DMVRは、1)予測タイプがスキップ・モードまたはマージ・モードに設定されている、2)予測モードが双予測である、という2つの条件のもとで適用される。まず、初期動きベクトル(参照リストL0の)MV0および(参照リストL1の)MV1が導出される。導出プロセスは、それぞれのスキップ動作およびマージ動作に従って実行される。ここで、文書JVET-D0029の著者は、H.265規格のスキップ・モードとマージ・モードを参照している。これらのモードの説明は、v. Sze, M. Budagavi and G.J. Sullivan(編)による書籍High Efficiency Video Coding (HEVC), Algorithms and Architectures, 2014のセクション5.2.2.3"Merge Motion Data Signaling and Skip Mode"に見出すことができる。H.265では、スキップ・モードが使用される場合、ブロックについて、動きデータが明示的に信号伝達される代わりに推測されること、および予測残差がゼロである、すなわち変換係数が伝送されないことが示される。マージ・モードが選択される場合も動きデータは推測されるが、予測残差はゼロではない、すなわち、変換係数は明示的に信号伝達される。
パース・インデックスは、入力ビデオ・ストリームからパースされる(510)。パースされたインデックスは、構築される(520)MV候補リストのうちの最良の動きベクトル候補をポイントする。次いで、最良の動きベクトル候補が選択され(530)、重み付け平均化(540)によってテンプレートが得られる。DMVR(550)は以下のように適用される。図3を参照して上記で説明したように、MV0およびMV1によって参照されるブロックを足し合わせることによって、ブロック・テンプレートが計算される。その後、クリッピングが実行される。テンプレートは、初期動きベクトルMV0のまわりの洗練された動きベクトルMV0'を見つけるために使用される。探索領域は、整数画素分解能である(探索空間の点が互いに整数サンプル距離だけ離れている)。テンプレート・ブロックとMV0'によってポイントされる新しいブロックとを比較するために、差分絶対値和(SAD)コスト指標が使用される。テンプレートは、MV0'のまわりで洗練されたMV0"を見つけるために使用される。探索領域は、半画素分解能である(探索空間の点がサンプル距離の半分だけ互いに離れている)。用語「画素」および「ピクセル」は、本明細書では交換可能に使用される。同じコスト指標が使用される。最後の2つのステップは、MV1"を見つけるために繰り返される。新たな双予測されたブロックは、MV0"およびMV1"によってポイントされるブロックを足し合わせることによって形成される。次いで、そのような洗練された動きベクトルMV0"およびMV1"によってポイントされるブロックblock_A'およびblock_B'が平均され、たとえば重み付け平均され(560)、最終的な予測が得られる。
図6は、本開示のある実施形態によるビデオ符号化および復号に使用されうる局所的照明補償(local illumination compensation、LIC)の例を示す概略図である。局所的照明補償(LIC)は、スケーリング因子「a」およびオフセット「b」を使用する、照明変化についての線形モデルに基づく。LICは、それぞれのインター・モード符号化される符号化ユニット(CU)について、適応的に有効または無効にされうる。LICがCUに適用されるとき、現在のCUの近傍サンプルおよびその対応する参照サンプルを使って、パラメータaおよびbを導出するために、最小二乗誤差法を用いてもよい。より具体的には、図6に示されるように、CUのサブサンプリング(2:1サブサンプリング)された近傍サンプルおよび参照ピクチャー内の(現在のCUまたはサブCUの動き情報によって識別される)対応するサンプルが使用される。LICパラメータは、各予測方向について別々に導出され、適用される。ここで、サブサンプリング2:1は、現在のCU境界および参照ブロック上の一つおきのピクセルが取られることを意味する。スケーリング因子/乗法的重み付け因子およびオフセットの使用についてのさらなる詳細は、文書JVET-A1001のセクション"2.4.4. Local illumination compensation"に見出すことができる。
図7は、参照ピクチャーRefPic0に対して実行されるデコーダ側動きベクトル洗練(DMVR)反復工程を示す概略図である。現在ピクチャーは現在ブロック710を含み、該現在ブロックについて、RefPic0において動きベクトルMV0に基づいて動きベクトルMV0'が見出されるべきである。5つの整数位置を含む探索空間が決定され、候補位置によってポイントされる諸ブロックはAxと称される。出力は、動きベクトルMV0'によってポイントされる、諸ブロックAxのうちの最良マッチングである。
明示的なマージ・モード・インデックスが信号伝達されるときはいつでも、デコーダ側動きベクトル洗練は、信号伝達されたインデックスから規範的に推定される参照インデックスおよび動きベクトル(単数または複数)から開始する。明示的なマージ・モード・インデックスが信号伝達されない場合、デコーダにおいてコスト関数を用いて一組の初期動きベクトル候補が評価され、最低コストの候補が洗練のための開始点として選択される。このように、デコーダ側の動きベクトル導出方法が、予測/再構成された近傍ブロック境界サンプルに基づく(一般にテンプレート・マッチング(Template Matching、TM)と称される;図4A参照)(または)参照リストL0および参照リストL1における対応するパッチの間の差分最小化を通じたバイラテラル・マッチングに基づく(一般にバイラテラル・マッチング(Bilateral matching、BM)コストと称される)(または)参照リストL0および参照リストL1における対応するパッチの平均化バージョンとL0/L1における変位との間の差に基づく(DMVRコストと呼ばれる)ことに関わりなく、サブピクセル精度の動きベクトルであってもよい諸開始点のまわりで実行される必要のある洗練探索が存在する。
コスト関数を評価するため、整数グリッド位置での参照フレームの値に基づいて、サブピクセル精度の中心での値を導出するために、補間が実行される必要がある。補間フィルタは、双線形補間フィルタのように単純であってもよいし、あるいは2D DCTベースの分離可能型補間フィルタのように、より長いフィルタであってもよい。洗練の間に考慮される各位置で繰り返し、あるブロックについて補間されたサンプルを導出する複雑さを低減するために、L0および/またはL1におけるサブピクセル精度の位置(単数または複数)を中心とする洗練点の整数ピクセル距離グリッドが、別の発明で提案されていた。この場合、現在の最良コストの位置に近い新しい位置が考慮されるので、増分的〔インクリメンタル〕な補間が実行されるだけでよい。整数ピクセル距離グリッドの洗練が完了した後、マージMVに関して最良の整数デルタMVが得られる。
圧縮利得をさらに改善するために、サブピクセル距離洗練を実行することができる。半ピクセル距離洗練は、参照フレーム(単数または複数)内の最良の整数距離MV位置(単数または複数)から半ピクセル距離のところにおける補間されたサンプルを必要とする。L0とL1の間で合同してサブピクセル精度の洗練を実行することが可能である。この場合、L0における最良の整数距離MV位置に関するL0における変位を逆にして、L1における最良の整数距離MV位置に関する対応するL1における対応する変位が得られる。L0およびL1において、サブピクセル精度の洗練を独立して実行することも可能である。
図8は、本開示のある実施形態による整数および端数サンプル位置の例を示す概念図である。図8を参照すると、「A」として示されるピクセル位置は整数ピクセルであり、半ピクセル位置(ロケーション)はb、h、jとして示され、すべての1/4ピクセル位置(ロケーション)はa、c、d、e、f、g、I、k、n、p、q、およびrとして示される。8点の正方形パターンで半ピクセル洗練を行なうためには、3つの平面(plane)が必要であり、同様に、1/4ピクセル洗練のためには、HEVC規格により8つの平面が必要である。より新しい規格は、1/16ピクセルの精度の補間を考えている。
「A」が整数ピクセルである場合、ピクセル位置a、bおよびcは水平補間のみを必要とし、d、hおよびnは垂直補間のみを必要とし、他のすべての点は垂直補間と水平補間の両方を必要とする。
整数ピクセル距離洗練およびサブピクセル距離洗練の際に、最終的な動き補償予測プロセスのために使用される補間とは異なる補間手順を使用することが可能である。たとえば、双線形補間は、洗練のために使用できる、より単純な補間であるが、最終的な動き補償予測(motion compensated prediction、MCP)は、2D DCTベースの補間フィルタを必要とすることがある。参照フレームバッファから取り出された整数ピクセル・グリッド・データは、外部メモリ(たとえば、DDR)からこのデータを複数回取り出し直すことを避けるために、すべての補間が完了できるまで、内部メモリ(たとえば、SRAM)内の第1のバッファに保持される必要がある。整数ピクセル・グリッド・サンプルの補間を通じて導出され、サブピクセル精度の洗練中心からの整数ピクセル距離洗練のために必要とされる整数ピクセル距離グリッドは、すべての整数ピクセル距離洗練が完了するまで、内部メモリ内の第2のバッファにおいて維持される必要がある。最良整数ピクセル距離位置(これは、整数ピクセル・グリッドに対するサブピクセル位置でありうる)のまわりの半ピクセル距離洗練については、中心の両側の対称的な半ピクセル洗練点間の距離が1整数ピクセル距離だけ離間されていることを考えると、2つの水平半ピクセル距離位置が補間される平面を共有し、2つの垂直半ピクセル距離位置が補間される平面を共有し、4つの対角方向の半ピクセル距離位置が補間される平面を共有する。
洗練のための補間が最終的なMCP補間と同じである場合、第2のバッファに記憶されている整数ピクセル距離洗練データを保持することが好ましいことがある。最良の整数ピクセル距離位置がサブピクセル洗練後の最良の位置であることが判明したときに、最終的なMCP補間計算を回避できるからである。洗練と最終的なMCPの間で補間が異なる場合は、第2のバッファは、半ピクセル距離洗練のために必要な3つの平面のうちの1つのための補間で上書きすることができる。
計算負荷と内部メモリの必要性を低減するために、ある従来技術は、4つの対角方向の半ピクセル距離位置のみを評価し、他の従来技術は、水平方向および垂直方向だけの半ピクセル距離位置のみを評価する。したがって、必要とされる内部メモリ・バッファのセットは、2(対角方向の半ピクセル距離位置のみが評価され、補間が異なる場合)から5(3つの半ピクセル距離平面すべてについて評価が行なわれ、補間が異ならない場合)までの範囲である。ある従来技術は、追加の1/4ピクセル距離および1/8ピクセル距離洗練を実行するが、これらの洗練における各位置は個々の補間を要求し、これは、計算的に禁止的であり、追加の圧縮利得に見合うものではない。補間がより高いタップフィルタを使用する場合、水平フィルタリングがまず実行され、フィルタリングされた結果が一時バッファに記憶され、次いで垂直フィルタリングが実行される。
本開示の実施形態は、整数ピクセル距離グリッド位置で評価されたコストを利用する誤差面技法を通じて、明示的な洗練なしに、デコーダ側の動きベクトル洗練/導出の間に、最良の整数距離動きベクトルのまわりのサブピクセル距離デルタ動きベクトルを導出するための方法および装置を提供する。これらのコストを用いてパラメトリック誤差面(parametric error surface)がフィッティングされ、連立方程式を解くことによりパラメトリック誤差面の最小位置が得られる。本開示の諸側面は、整数距離ピクセル位置(それ自体は整数ピクセル・グリッドに関するサブピクセル位置でありうる)のまわりでのデコーダ側サブピクセル距離洗練を利用し、テンプレート・マッチング、バイラテラル・マッチング、およびテンプレートに基づくバイラテラル・マッチングのようなデコーダ側動きベクトル洗練の種々の変形を扱う。
デコーダ側動きベクトル洗練/導出が符号化システムの規範的な側面であることを考えると、エンコーダも、エンコーダの再構成とデコーダの再構成との間にドリフトを生じさせないために、同じ誤差面技法を実行しなければならないであろう。よって、本開示のすべての実施形態のすべての側面は、エンコードおよびデコード・システムの両方に適用可能である。
テンプレート・マッチングでは、洗練動きは、明示的に信号伝達されたマージ・インデックスに基づいて、またはコスト評価を通して暗黙的に導出されるサブピクセル精度の中心から始まる参照においてのみ生じる。
バイラテラル・マッチングでは、(平均化されたテンプレートの有無にかかわらず)洗練は、明示的に信号伝達されたマージ・インデックスに基づいて、またはコスト評価を通して暗黙的に導出された、それぞれのサブピクセル精度の中心から始まる、参照リストL0およびL1において開始される。
バイラテラル・マッチング・コストが、参照リストL0における所与の水平方向および垂直方向の変位について、参照リストL1における、等しくかつ反対向きの水平方向および垂直方向の変位に基づいて評価される場合には、諸図面に示された位置は参照リストL0に対応すると想定され、参照リストL1における位置は、参照リストL1における現在の反復工程中心(current iteration center)に対して水平方向および垂直方向の変位を反転させることによって導出される。
よって、メモリ・サイズおよび計算複雑性を増加させることなく、明示的なサブピクセル距離洗練の符号化利得の大部分を実現する必要がある。
実施形態1
Nを、規範的に許容されている整数の1ピクセル距離洗練反復工程の最大数とする。第1の整数距離洗練反復工程は、前述のサブピクセル精度の洗練中心から開始し、中心位置が、規定された一組の1ピクセル近傍位置の評価されたコスト関数値よりも低い評価されたコスト関数値を有するか、またはN回の反復工程が実行され終わるまで、進行する。反復工程の回数Nに到達し、中心位置が、一組のその1ピクセル近傍位置と比較したときに、最小(最低)のコスト関数値を有する位置ではない場合、誤差面に基づくサブピクセル洗練は実行されず、すべての反復工程を通じて最小(最低)のコスト関数値を有する位置が、デコーダ側動きベクトル洗練プロセスからの最終的なデルタ動きベクトルとして宣言される。終了反復工程の一組の1ピクセル近傍位置において最小(最低)のコスト関数値をもつ中心位置で洗練が終了する場合、次の誤差面に基づくサブピクセル洗練手順が適用される。
以下では、中心Cの周囲の一組の1ピクセル近傍位置を、その左(L)、上(T)、右(R)、および下(B)の整数1ピクセル距離とする。図9は、本開示のある実施形態による、一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトル洗練を得るための、中心ピクセルの周囲の一組の1ピクセル近傍位置のブロック図である。図9を参照すると、2D座標系の原点はCにあり、L、T、R、Bにおける座標は、(−1,0)、(0,1)、(1,0)、および(0,−1)に対応する。これらの5つの位置における評価されたコスト関数値は、E(0,0)、E(−1,0)、E(0,1)、E(1,0)、およびE(0,−1)であろう。2D放物面関数を用いた5パラメータの誤差面(error surface)は、次のように定義される:
E(x,y)=A*(x−x0)2+B*(y−y0)2+C (1)
ここで、E(x,y)は、デカルト座標(x,y)の評価されたコスト関数であり、(x0,y0)は、最小(最低)の誤差を有する、中心(0,0)に関するサブピクセル変位に関連する(対応する)デカルト座標であり、Cは、この位置での誤差に対応するパラメータであり、AおよびBは、誤差面モデル・パラメータである。A、B、CはE(x, y)を計算するための定数値である。
他方、A、B、C、x0、y0が未知のパラメータであることを考慮すると、5つの位置(0,0)、(−1,0)、(0,−1)、(1,0)および(0,1)における利用可能な評価されたコスト関数値を用いて5つの方程式を解くと、(x0,y0)は次のように計算(決定)できる:
x0=(E(−1,0)−E(1,0))/(2*(E(−1,0)+E(1,0)−2*E(0,0))) (2)
y0=(E(0,−1)−E(0,1))/(2*(E(0,−1)+E(0,1)−2* E(0,0))) (3)
x0およびy0はサブピクセル動きベクトル変位に関連する座標である。E(−1,0)、E(1,0)、E(0,0)、E(0,−1)およびE(0,1)は、それぞれ、初期動きベクトルに関する候補整数動きベクトル変位(−1,0)、(1,0)、(0,0)、(0,−1)に対応する整数距離コストである。座標x0およびy0は、デルタ動きベクトルのサブピクセル精度に応じたスケール因子Nによってスケーリングされることができ、ここで、たとえば、ピクセル精度1/2、1/4、1/8および1/16について、それぞれN=2、4、8および16である。
別の実施形態では、式(2)および(3)は次のように表わすことができる:
x0=(E(−1,0)−E(1,0))/(2*N*(E(−1,0)+E(1,0)−2*E(0,0))) (2')
y0=(E(0,−1)−E(0,1))/(2*N*(E(0,−1)+E(0,1)−2*E(0,0))) (3')
ここで、たとえば、ピクセル精度1/2、1/4、1/8および1/16について、それぞれN=1、2、4、および8である。
式(2)および(3)に基づき、x0は、位置(−1,0)、(1,0)および(0,0)のみに従って計算(決定)できることを注意しておく。同様に、y0は、位置(0,−1)、(0,1)、および(0,0)のみに従って計算(決定)できる。
また、中心(0,0)に対する4つの位置(−1,0)、(0,−1)、(1,0)、および(0,1)のすべてにおける評価されたコスト(初期動きベクトルに対する最良の整数距離変位に対応する)が利用可能でない場合には、パラメトリック誤差面はフィッティングできないことも注意しておく。そのような場合、サブピクセル精度のデルタ変位は、最良の整数距離変位に加算されない。
最終的な動き補償によってサポートされるサブピクセル精度に依存して、スケール因子Nを適切に選択することができる。
サブピクセル動きベクトル変位は、式(1)、(2)および(3)により、xおよびy方向において−0.5および+0.5を限界としている。通例関心があるのは1/16ピクセルまでの精度なので、上記2つの除算は、シフト、比較、および増分演算のみで効率的に実行することができる。
いくつかの実施形態では、デコーダ側動きベクトル洗練のための方法は、初期動きベクトルに関して候補整数動きベクトル変位に対応する整数距離コストを比較することによりターゲット整数動きベクトル変位を決定することと、整数距離コストに関して計算を実行することによりサブピクセル動きベクトル変位を決定することと、ターゲット整数動きベクトル変位、サブピクセル動きベクトル変位および初期動きベクトルに基づいて、洗練された動きベクトルを決定することとを含む。
ある実施形態では、本方法は、サブピクセル動きベクトル変位を決定する前に、所定の動きベクトル変位がターゲット整数動きベクトル変位を含むかどうかを決定し;所定の動きベクトル変位がターゲット整数動きベクトル変位を含む場合には、整数距離コストに関して計算を実行することによってサブピクセル動きベクトル変位を決定することをさらに含んでいてもよい。別の実施形態では、本方法は、さらに、サブピクセル動きベクトル変位を決定する前に、ターゲット整数動きベクトル変位に対する位置(−1,0)、(0,−1)、(1,0)および(0,1)において、評価されたコストが利用可能であるかどうかを決定し;ターゲット整数動きベクトル変位に対する位置(−1,0)、(0,−1)、(1,0)および(0,1)において、評価されたコストが利用可能であると決定された場合に、整数距離コストに関して計算を実行することによってサブピクセル動きベクトル変位を決定することを含んでいてもよい。
ある実施形態では、本方法は、前記所定の動きベクトル変位がターゲット整数動きベクトル変位を含まない場合、ターゲット整数動きベクトル変位および初期動きベクトルに基づいて、洗練された動きベクトルを計算することをさらに含んでいてもよい。別の実施形態では、本方法は、評価されたコストの少なくとも一つまたは複数が、ターゲット整数動きベクトル変位に対する位置(−1,0)、(0,−1)、(0,1)、および(1,0)において利用可能でないと判断された場合、ターゲット整数動きベクトル変位および初期動きベクトルに基づいて、洗練された動きベクトルを計算することをさらに含んでいてもよい。
ある実施形態では、ターゲット整数動きベクトル変位を決定することは、各候補整数動きベクトル変位についての整数距離コストを計算し、最低の整数距離コストに対応する候補整数動きベクトル変位を、ターゲット整数動きベクトル変位として選択することを含んでいてもよい。
ある実施形態では、ターゲット整数動きベクトル変位は、参照ピクチャー・リストL0に対応する第1の動きベクトル変位と、参照ピクチャー・リストL1に対応する第2の動きベクトル変位とを含む。本方法は、さらに、参照ピクチャー・リストL0に対応する候補整数動きベクトル変位に対応する整数コストを比較することによって第1の動きベクトル変位を決定し、第1の動きベクトル変位を逆にすることによって第2の動きベクトル変位を決定することを含んでいてもよい。
記載される実施形態は例示的なものであり、限定的なものではないことを理解すべきである。整数距離洗練プロセスが1ピクセル近傍集合内でこれらの多くの評価されたコスト関数値をもたらす場合には、参照文書におけるような他の5点、6点、および9点ベースの誤差面方法を使用することができる。
本実施形態の方法は、2つの内部メモリ・バッファのみを必要とする。第1のバッファは、再構成ピクチャー・バッファからの整数ピクセル・グリッドを記憶するように構成され、第2のバッファは、整数距離洗練の間に整数距離グリッドを記憶するように構成され(これはパラメトリック誤差面を得るために利用される)、最終的なサブピクセル精度の動き補償された予測サンプルで上書きするために使用できる。
本開示の諸実施形態によれば、高精度のサブピクセル精度のデルタ動きベクトルが、サブピクセル精度レベルのいずれにおいても明示的な洗練なしに、得られる。
同じコスト関数がすべての反復工程を通じて使用される場合、整数距離洗練反復工程に必要な計算を超えて追加の補間やコスト関数評価の計算は必要とされない。
図10は、本開示のある実施形態による、デコーダ側動きベクトル洗練システムにおける一つまたは複数の参照フレーム内のサブピクセル精度のデルタ動きベクトルを得るための方法1000を示す簡略化されたフロー図である。方法1000は、以下のステップを含んでいてもよい。
ステップ1001:プロセッサを提供する。プロセッサは、本明細書に記載される方法を実行するために、ビデオ・エンコーダおよび/またはデコーダに統合された一つまたは複数の処理ユニット(CPU、DSP)またはビデオ圧縮ソフトウェアに統合されたプログラム・コードであってもよい。
ステップ1003:前記一つまたは複数の参照フレームの各参照フレームについて整数距離洗練動きベクトルを決定するために、コスト関数を使用して、整数1ピクセル距離洗練動作(反復工程)をプロセッサによって逐次反復的に実行することによって、ループを開始する。
ステップ1005:プロセッサによって、一組の1ピクセル近傍位置のコスト関数値に対する、現在の動作の探索中心の位置のコスト関数値を決定する。現在の反復工程の探索中心のコストが最も低いと決定された場合、すなわち、逐次反復ループからの早期終了の場合(1005、yes):
ステップ1011:各参照フレーム内の最後の探索中心のまわりのサブピクセル距離洗練動きベクトルを、最後の最後の探索中心およびそのまわりの一組の1ピクセル近傍位置のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値を有する位置を計算することによって決定する;
ステップ1013:各参照フレームについて、決定された整数距離洗練動きベクトルと、決定されたサブピクセル距離洗練動きベクトルとの和として、総洗練動きベクトルを返す。
本方法は、さらに:探索中心の位置のコスト関数値が最低のコスト関数値でない場合には(1005、no)、ステップ(1007)に進むことを含む。
ステップ(1007):現在の動作が最後の動作(反復工程)であることを決定する。現在の動作が最後の動作である場合(1007、yes)、すべての動作を通じた最低のコスト値をもつ位置に対応する洗練動きベクトルを返す(1015)。現在の動作が最後の動作でない場合(1007、no)、そのラット動作において最低のコストをもつ位置に中心を更新し、ループおよび反復ステップ(1003)に戻る。
実施形態2
パラメトリック誤差面を導出するために利用される整数距離位置におけるコスト関数評価が、整数距離洗練の、以前の反復工程の間に実行されたコスト関数評価と異なる場合、実施形態1の種々の変形がある。
たとえば、バイラテラル・マッチングが使用される場合、3つのタイプの洗練が可能である。第1の洗練タイプは、参照リストL1における変位が参照リストL0における変位と水平方向および垂直方向の両方で等しくかつ反対になるように、参照リストL0およびL1の両方において合同的な洗練を実行することである(第1の洗練タイプは、SBM_JOINTと称される)。第2の洗練タイプは、共通のバイラテラル平均化テンプレートに対して、参照リストL0およびL1の両方において独立した洗練を実行することである(第2の洗練タイプは、TBM_INDEPENDENTと称される)。第3の洗練タイプは、バイラテラル平均化テンプレートに対して参照リストL0またはL1において洗練を実行し、推定された水平および垂直方向の変位を、他方の参照リスト(洗練にL0を使用した場合はL1、洗練にL1を使用した場合はL0)における変位を得る際に反転させる(第3の洗練タイプは、TBM_IN_1REF_NEG_IN_OTHERと称される)。
(中心位置のコストが周囲の一組の1ピクセル近傍コストより低いために)逐次反復ループの早期の終了が生じる反復工程を予測することは困難であるため、パラメトリック誤差面を導出するために利用される整数距離位置でのコスト関数評価が、整数距離洗練の、以前の反復工程の間に実行されたコスト関数評価と異なる場合はいつでも、早期終了中心を中心とするコスト関数評価の追加のセットが、要求されるコスト関数を用いて実行される。
次の表1は、整数距離洗練の間の早期終了後に追加の評価が必要となる、バイラテラル・マッチング中のいくつかの状況を与える。
整数距離洗練逐次反復の間は洗練タイプSBM_JOINTが最も良く機能することが観察された。洗練タイプTBM_INDEPENDENTを用いてL0およびL1における独立したサブピクセル・デルタ動きベクトルを得るときは、L0およびL1における等しく、反対の変位と比較したとき、小さな追加的な符号化利得が達成される。しかしながら、L0およびL1における独立した洗練は、L0およびL1位置におけるコスト評価を独立して必要とし、よって、計算的には、合同的な等しく、かつ反対の変位推定オプション(SBM_JOINT洗練)よりも複雑である。SBM_JOINT洗練に加えて、早期終了は追加的なコスト関数評価を必要としない。
図11は、本開示のある実施形態による、デコーダ側動きベクトル洗練システムにおけるそれぞれの初期サブピクセル精度の洗練中心(単数または複数)のまわりの一つまたは複数の参照フレーム内のサブピクセル精度のデルタ動きベクトルを得るための方法1100を示す簡略化されたフロー図である。方法1100は、以下のステップを含んでいてもよい。
ステップ1101:プロセッサを提供する。プロセッサは、本明細書に記載される方法を実行するために、ビデオ・エンコーダおよび/またはデコーダに統合された一つまたは複数の処理ユニット(CPU、DSP)またはビデオ圧縮ソフトウェアに統合されたプログラム・コードであってもよい。
ステップ1103:前記一つまたは複数の参照フレームの各参照フレームについて整数距離洗練動きベクトルを決定するために、コスト関数を使用して、整数1ピクセル距離洗練動作(反復工程)をプロセッサによって逐次反復的に実行する。
ステップ1105:現在の動作が最後の動作であるかどうかを決定する。現在の動作が最後の動作である場合(1105、yes):
ステップ1111:前記一つまたは複数の参照フレームの各参照フレームについて独立したサブピクセル・デルタ動きベクトルを得るために、第2のコスト関数を用いて整数1ピクセル距離洗練を実行する。
現在の動作が最後の動作でない場合(1105、no)は、ステップ1107に進む。
ステップ1107:現在の動作の探索中心の位置のコスト関数値が、一組の1ピクセル近傍位置における最低のコスト関数値であるかどうかを決定する。探索中心の位置のコスト関数値が最低のコスト関数値である場合(1107、yes)は、ステップ1111に進む(すなわち、逐次反復ループの早期終了)。探索中心の位置のコスト関数値が最低のコスト関数値でない場合(1107、no)は、ステップ1109に進む。
ステップ1109:その動作における最も低いコスト値をもつ位置に中心を更新し、次の整数1ピクセル距離洗練動作を実行するためにループに戻る。
ステップ1111:前記一つまたは複数の参照フレームの各参照フレームについて独立したサブピクセル・デルタ動きベクトルを得るために、第2のコスト関数を用いて整数1ピクセル距離洗練を実行する。
ステップ1113:最後の探索中心位置が、最後の探索中心への一組の1ピクセル近傍位置における第2のコスト関数値に対して、最も低い第2のコスト関数値を有するかどうかを決定する。最後の探索中心位置が、最も低い第2のコスト関数値をもつ場合(1113、yes):
ステップ1115:第2のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値をもつ位置を計算することによって、各参照フレーム内の最良の整数距離洗練位置のまわりのサブピクセル距離洗練動きベクトルを決定する。
ステップ1117:各参照フレームについて、決定された整数距離洗練MVおよび決定されたサブピクセル距離洗練MVの和として、総総洗練MVを返す。
本開示の実施形態は、上述の方法を実行するように構成された装置をも提供する。装置は、ソフトウェアとハードウェアの組み合わせであってもよい。たとえば、エンコードおよび/またはデコードは、汎用プロセッサ(CPU)、またはデジタル信号プロセッサ(DSP)、またはフィールドプログラマブルゲートアレイ(FPGA)などのチップによって実行されてもよい。しかしながら、本開示の実施形態は、プログラマブルハードウェア実装に限定されない。本開示のいくつかの実施形態は、特定用途向け集積回路(ASIC)または上述のハードウェア構成要素の組み合わせを使用して実装されてもよい。
エンコードおよび/またはデコードはまた、コンピュータ読み取り可能媒体に記憶されたプログラム命令またはプログラム・コードによって実装されてもよい。プログラム命令は、プロセッサまたはコンピュータによって実行されると、プロセッサまたはコンピュータに上記方法のステップを実行させる。コンピュータ読み取り可能媒体は、DVD、CD、USB(フラッシュ)ドライブ、ハードディスク、ネットワークを介して利用可能なサーバー記憶装置等のような、プログラム・コードが記憶される任意の媒体でありうる。
図12は、本開示のさまざまな実施形態を実装するために使用できる装置1200のブロック図である。装置1200は、図1に示されるエンコード装置100および図2に示されるデコード装置200であってもよい。さらに、装置1200は、記載された要素の一つまたは複数をホストすることができる。いくつかの実施形態では、装置1200は、スピーカー、マイクロフォン、マウス、タッチスクリーン、キーパッド、キーボード、プリンタ、ディスプレイ等の一つまたは複数の入出力装置を備える。装置1200は、バスに接続された、一つまたは複数の中央処理装置(CPU)1210、メモリ1220、大容量記憶装置1230、ビデオ・アダプター1240、およびI/Oインターフェース1260を含んでいてもよい。バスは、メモリバスまたはメモリコントローラ、周辺バス、ビデオバスなどを含む任意のタイプのいくつかのバスアーキテクチャーのうちの一つまたは複数である。
CPU 1210は、任意のタイプの電子データ・プロセッサを有することができる。メモリ1220は、スタティック・ランダム・アクセス・メモリ(SRAM)、ダイナミック・ランダム・アクセス・メモリ(DRAM)、同期DRAM(SDRAM)、リード・オンリー・メモリ(ROM)、それらの組み合わせなど、任意のタイプのシステム・メモリを有していてもよく、またはかかるメモリであってもよい。ある実施形態では、メモリ1220は、起動時に使用するためのROMと、プログラムを実行する間に使用するためのプログラムおよびデータ記憶のためのDRAMとを含んでいてもよい。いくつかの実施形態では、メモリ1220は、非一時的であってもよい。大容量記憶装置1230は、データ、プログラム、および他の情報を記憶し、該データ、プログラム、および他の情報をバスを介してアクセス可能にする任意のタイプの記憶装置を含んでいてもよい。大容量記憶装置1230は、たとえば、CPU 1210によって実行されると、CPUに本明細書に記載の方法を実行させるプログラム・コードを記憶するように構成されたソリッド・ステート・ドライブ、ハード・ディスク・ドライブ、磁気ディスク・ドライブ、光ディスク・ドライブなどのうちの一つまたは複数を含む。CPU 1210は、図10および図11に関連して説明したステップをいくつかの動作にわたって逐次反復的に行なうように構成されることができる。CPU 1210は、MV0がポイントする第1の参照ピクチャーと、MV1がポイントする第2の参照ピクチャーとを選択するように構成された参照選択ユニットを含んでいてもよい。参照ピクチャーの選択後、参照ピクチャー選択ユニットは、動きベクトル洗練を実行するために第1の参照ピクチャーが使用されるか第2の参照ピクチャーが使用されるかを決定してもよい。
ビデオ・アダプター1240およびI/Oインターフェース1260は、外部の入出力装置を装置1200に結合するためのインターフェースを提供する。たとえば、装置1200は、クライアントにSQLコマンドインターフェースを提供してもよい。図示されるように、入力および出力装置の例は、ビデオ・アダプター1240に結合されたディスプレイ1290、およびI/Oインターフェース1260に結合されたマウス/キーボード/プリンタ1270の任意の組み合わせを含む。他の装置が装置1200に結合されてもよく、追加の、またはより少ないインターフェースカードが利用されてもよい。たとえば、シリアルインターフェースカード(図示せず)を使用して、プリンタのためにシリアルインターフェースを提供してもよい。
装置1200はまた、イーサネットケーブルなどの有線リンク、および/またはアクセスノードまたは一つまたは複数のネットワーク1280への無線リンクを含む、一つまたは複数のネットワークインターフェース1250を含んでいてもよい。ネットワークインターフェース1250は、装置1200がネットワーク1280を介して遠隔ユニットと通信することを許容する。たとえば、ネットワークインターフェース1250は、データベースに通信を提供してもよい。ある実施形態では、装置1200は、データ処理および他の処理ユニット、インターネット、遠隔記憶施設などの遠隔装置との通信のために、ローカル・エリア・ネットワークまたはワイド・エリア・ネットワークに結合される。装置1200は、入力(たとえば、ネットワークインターフェース)から受信した一つまたは複数のピクチャー・ブロックをエンコードし、および/またはビットストリームからのビデオ・ピクチャーをデコードするために使用されることができる。装置1200は、ビットストリームから圧縮されたピクチャー・ブロックを抽出するように構成されたビットストリーム・パーサと、サブピクセル精度のデルタ動きベクトル洗練を得るように構成された動きベクトル洗練ユニットと、得られた動きベクトルに基づいてブロック再構成を実行するように構成された再構成ユニットとを含んでいてもよい。
本開示の特定の特徴または側面が、いくつかの実装または実施形態のうちの1つのみに関して開示されていることがありうるが、そのような特徴または側面は、任意の与えられたまたは特定の用途にのために望まれ、有利でありうるように、他の実装または実施形態の一つまたは複数の他の特徴または側面と組み合わされてもよい。さらに、用語「含む」、「有する」、「もつ」、またはそれらの他の変形が、詳細な説明または特許請求の範囲のいずれかで使用される場合、そのような用語は、「含む」という用語と同様に包含的であることが意図されている。また、用語「例示的」、「たとえば」、および「例」は、最良または最適ではなく、単に例として意図される。「結合された」および「接続された」という用語は、派生語とともに使用されたことがありうる。これらの用語は、直接物理的または電気的に接触しているか、または互いに直接接触していないかにかかわらず、2つの要素が互いと協働または相互作用することを示すために使用されたことがありうることを理解しておくべきである。
本明細書では、個別的な側面が図示され説明されてきたが、当業者には、本開示の範囲から逸脱することなく、多様な代替および/または同等の実装が、図示され説明された個別的な側面の代わりに用いてもよいことが理解されるであろう。本願は、本明細書中で議論される個別的な側面の任意の適応または変形をカバーすることが意図されている。
以下の特許請求の範囲における要素は、対応する標識を伴って特定の序列で記載されているが、請求項の記載が、それらの要素のいくつかまたは全部を実装するための特定の序列を別段に意味しない限り、それらの要素は、必ずしもその特定の序列で実施されることに限定されることを意図されるものではない。
上記の教示に照らして多くの代替、修正、および変形が、当業者には明白であろう。もちろん、当業者は、本明細書に記載されている用途以外にも本発明の多くの用途があることを容易に認識する。本発明は、一つまたは複数の具体的な実施形態を参照して説明されてきたが、当業者は、本発明の範囲から逸脱することなく、それに多くの変更を加えることができることを認識する。よって、添付の特許請求の範囲およびそれらの均等物の範囲内で、本発明は、本明細書に具体的に記載されている以外の仕方で実施されうることが理解されるべきである。
上述の回路はまた、単一の集積チップであってもよい。しかしながら、本発明は、これに限定されず、回路は、異なるピースまたはハードウェア、または、対応するコードでプログラムされた汎用プロセッサまたはDSPのようなハードウェアおよびソフトウェアの組み合わせを含んでいてもよい。
上述のフローチャートは、デコーダ側動きベクトル洗練技法の例を示すことが意図されている。当業者は、本開示の範囲から逸脱することなく、本開示を実施するためにステップを修正したり、またはステップを組み合わせたりしてもよい。
本開示のある側面では、デコーダ側の動きベクトル洗練システムにおける一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトル洗練を得るための方法が提供される。本方法は、以下を含んでいてもよい:
プロセッサを提供し(1001);
前記一つまたは複数の参照フレームの各参照フレームについて整数距離洗練動きベクトルを決定するために、コスト関数を使用して、整数1ピクセル距離洗練動作をプロセッサによって逐次反復的に実行すること(1003)によって、ループ動作を開始し;
探索中心の位置のコスト関数値が、一組の1ピクセル近傍位置における最も低い関数値であるかどうかを、プロセッサによって判定し(1005);
探索中心の位置のコスト関数値が前記最も低いコスト関数値である場合(1005、yes)、ループ動作を終了し;
各参照フレーム内の探索中心のまわりのサブピクセル距離洗練動きベクトルを、探索中心および一組の1ピクセル近傍位置のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値を有する位置を計算することによって決定し(1011);
各参照フレームについて、パラメトリック誤差面を使って得られたサブピクセル位置を返すこと(1013)。
ある実施形態では、本方法は、さらに:探索中心の位置のコスト関数値が前記最低のコスト関数値でない場合には(1005、no);
現在の動作が最後の動作であるかどうかを判定し(1007);
現在の動作が最後の動作である場合(1007、yes):
最低のコスト関数をもつ各参照フレーム内の諸位置を返し(1015);
現在の動作が最後の動作でない場合(1007、no):
プロセッサによって、現在の整数1ピクセル距離洗練動作の探索中心の位置を、現在の動作において最も低いコストを有する位置によって更新し(1009);
ループ動作(1003、1005、1007、1009)を繰り返すこと。
ある実施形態では、パラメトリック誤差面は、中心ピクセルから等距離のところに離間した4つの周辺ピクセルによって囲まれた中心ピクセルにおいて配置された5つのピクセルを含む。
ある実施形態では、コスト関数は、次式によって計算される:
E(x,y)=A*(x−x0)2+B*(y−y0)2+C;
ここで、E(x,y)は座標(x,y)の評価されたコスト関数値であり、x0およびy0は、最小誤差をもつ、中心(0,0)に関するサブピクセル変位に関連する座標であり、Cは、座標(x0,y0)における誤差に関連するパラメータであり、AおよびBは定数値であり、xおよびyは、近傍位置に関連する座標であり、xおよびyは、それぞれ−1,0および1を含む整数である。
ある実施形態では、サブピクセル位置は、次式によって得られる:
x0=(E(−1,0)−E(1,0))/(2*N*(E(−1,0)+E(1,0)−2*E(0,0)));
y0=(E(0,−1)−E(0,1))/(2*N*(E(0,−1)+E(0,1)−2*E(0,0)))
ここで
E(x,y)=A*(x−x0)2+B*(y−y0)2+C;
E(x,y)は評価されたコスト関数値であり、x0およびy0は、最小誤差をもつ、中心(0,0)に関するサブピクセル変位に関連する座標であり、Cは、座標(x0,y0)における誤差に関連するパラメータであり、AおよびBは、定数値であり、xおよびyは、近傍位置に関連する座標であり、xおよびyは、それぞれ−1,0,および1を含む整数であり、Nは、1/2、1/4、1/8,または1/16のサブピクセル精度について1,2,4,または8の整数である。
ある実施形態では、サブピクセル精度のデルタ動きベクトル洗練は、テンプレート・マッチングによって得られる。
本開示の別の側面では、デコーダ側動きベクトル洗練システムにおいて、一つまたは複数の参照フレーム内のサブピクセル精度のデルタ動きベクトルを得るための装置が提供される。装置は、処理ユニットと、処理ユニットに以下のステップを実行させるために、コンピュータ読み取り可能な命令を内部に有する、非一時的なコンピュータ読み取り可能な媒体とを含む:
各参照フレームについて整数距離洗練動きベクトルを決定するために、コスト関数を使用して、N回の整数1ピクセル距離洗練動作を逐次反復的に実行することによって、ループ動作を開始するステップであって、現在の反復工程の探索中心の位置は、前の動作における最も低いコストをもつ位置によって更新される、ステップと;
探索中心の位置のコストが、一組の1ピクセル近傍位置のどのコストよりも低いかどうかを判定するステップと;
探索中心の位置のコストが最も低いコストである場合;
ループ動作を終了するステップと;
各参照フレーム内の探索中心のまわりのサブピクセル距離洗練動きベクトルを、探索中心および一組の1ピクセル近傍位置のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値を有する位置を計算することによって決定するステップと;
各参照フレームについて、パラメトリック誤差面を使って得られたサブピクセル位置を返すステップ。
ある実施形態では、コンピュータ読み取り可能な命令を内部に有する、本非一時的なコンピュータ読み取り可能な媒体は、処理ユニットにさらに以下のステップを実行させる:
探索中心の位置のコスト関数値が最も低いコスト関数値でない場合は(1005、no):現在の動作が最後の動作であるかどうかを判定するステップと;
現在の動作が最後の動作である場合:最低のコスト関数をもつ各参照フレーム内の諸位置を返すステップと;
現在の動作が最後の動作でない場合:プロセッサによって、
現在の整数1ピクセル距離洗練動作の探索中心の位置を、現在の洗練動作において最も低いコストを有する位置によって更新し(1009);ループ動作を繰り返すステップ。
ある実施形態では、コスト関数は、次式によって計算される:
E(x,y)=A*(x−x0)2+B*(y−y0)2+C;
ここで、E(x,y)は評価されたコスト関数値であり、x0およびy0は、最小誤差をもつ、中心(0,0)に関するサブピクセル変位に関連する座標であり、Cは、座標(x0,y0)における誤差に関連するパラメータであり、AおよびBは定数値であり、xおよびyは、近傍位置に関連する座標であり、xおよびyは、それぞれ−1,0および1を含む整数である。
ある実施形態では、サブピクセル位置は、次式によって得られる:
x0=(E(−1,0)−E(1,0))/(2*N*(E(−1,0)+E(1,0)−2*E(0,0)));
y0=(E(0,−1)−E(0,1))/(2*N*(E(0,−1)+E(0,1)−2*E(0,0)))
ここで
E(x,y)=A*(x−x0)2+B*(y−y0)2+C;
E(x,y)は評価されたコスト関数値であり、x0およびy0は、最小誤差をもつ、中心(0,0)に関するサブピクセル変位に関連する座標であり、Cは、座標(x0,y0)における誤差に関連するパラメータであり、AおよびBは、定数値であり、xおよびyは、近傍位置に関連する座標であり、xおよびyは、それぞれ−1,0,および1を含む整数であり、Nは、1/2、1/4、1/8,または1/16のサブピクセル精度について1,2,4,または8の整数である。
本開示の別の側面は、デコーダ側動きベクトル洗練システムにおいて、参照リストL0内および参照リスト1内の一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトル洗練を得るための方法を提供する。本方法は、以下を含み得る:
プロセッサを提供すること(1101);
前記一つまたは複数の参照フレームの各参照フレームについて整数距離洗練動きベクトルを決定するために、第1のコスト関数を使用して、整数1ピクセル距離洗練動作をプロセッサによって逐次反復的に実行すること(1103)によってループ動作を開始すること;
現在の動作が最後の動作であるかどうか判断すること(1105);
現在の動作が最後の動作である場合(1105、yes):
各参照フレームについて独立したサブピクセル・デルタ動きベクトルを得るために、第2のコスト関数を使用して、整数1ピクセル距離洗練を実行すること(1111);
現在の動作が最後の動作でない場合(1105、no);
プロセッサによって、現在の動作の探索中心の位置のコスト関数値が、一組の1ピクセル近傍位置における第1の最低の関数値であるかどうかを判断すること(1107);
探索中心の位置のコスト関数値が第1の最低の関数値である場合(1107、yes):
ループ動作を終了すること;
各参照フレームについて独立したサブピクセル・デルタ動きベクトルを得るために、第2のコスト関数を使用して、整数1ピクセル距離洗練を実行すること(1111);
現在の動作の探索中心の位置のコスト関数値が第1の最低の関数値でない場合(1107、no):
中心を、現在の動作の第1の最低のコストをもつ位置に更新すること;および
ループ動作(1103、1105、1107、1109)を繰り返すこと。
ある実施形態において、本方法は、さらに、以下を含んでいてもよい:
プロセッサによって、得られた独立したサブピクセル・デルタ動きベクトルの探索中心の位置の第2のコスト関数値が第2の最低の関数値であるかどうかを判断すること(1113);
第2のコスト関数値が最低のコスト関数値である場合(1113、yes);
探索中心および一組の1ピクセル近傍位置のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値を有する位置を計算することによって、各参照フレーム内の探索中心のまわりのサブピクセル距離洗練動きベクトルを決定すること(1115);
各参照フレームについてパラメトリック誤差面を用いて得られた各参照フレームについての決定された整数距離洗練動きベクトルおよび決定されたサブピクセル距離洗練動きベクトルの和として、総洗練動きベクトルを返すこと(1117);
第2のコスト関数値が第2の最低コスト関数値でない場合(1113、no);
第2の最低のコスト関数値をもつ各参照フレーム内の位置に対応する洗練動きベクトルを返すこと(1119)。
ある実施形態では、サブピクセル位置は次式によって導出される:
x0=(E(−1,0)−E(1,0))/(2*N*(E(−1,0)+E(1,0)−2*E(0,0)))
y0=(E(0,−1)−E(0,1))/(2*N*(E(0,−1)+E(0,1)−2* E(0,0)))
ここで、
E(x,y)=A*(x−x0)2+B*(y−y0)2+C;
(x0,y0)は最小の誤差をもつ、(0,0)に関するサブピクセル変位に対応し、Cは(x0,y0)における誤差に対応し、AおよびBは定数であり、(x,y)は近傍位置に対応し、xは−1,0,1を含み、yは−1,0,1を含む。
ある実施形態では、第1のコスト関数および第2のコスト関数のそれぞれは、次式によって計算される:
E(x,y)=A*(x−x0)2+B*(y−y0)2+C;
ここで、E(x, y)は評価されたコスト関数値であり、x0およびy0は、最小の誤差をもつ、中心(0,0)に関するサブピクセル変位に関連するデカルト座標であり、Cは、デカルト座標(x0,y0)における誤差に関連するパラメータであり、AおよびBは定数値であり、xおよびyは、近傍位置に関連するデカルト座標であり、xおよびyは、それぞれ、−1、0および1を含む整数である。
ある実施形態では、サブピクセル精度のデルタ動きベクトル洗練は、バイラテラル・マッチングによって得られる。
ある実施形態では、バイラテラル・マッチングは、参照リストL0および参照リストL1の両方において合同洗練を実行することを含む。
ある実施形態では、バイラテラル・マッチングは、共通のバイラテラル平均化テンプレートに関係して、参照リストL0および参照リストL1の両方において独立した合同洗練を実行することを含む。
ある実施形態では、バイラテラル・マッチングは、共通のバイラテラル平均化テンプレートに関係して、参照リストL0または参照リストL1のいずれかで洗練を実行し、他の参照リストにおける変位を得るときに、推定された水平および垂直方向の変位を反転させることを含む。
まとめると、本開示の実施形態は、双方向の動きベクトル推定のためのテンプレート・マッチングに基づく動きベクトル決定に関する。特に、洗練されるべき初期動きベクトルによってポイントされるブロックの平均として、ブロック・テンプレートが構築される。次いで、動きベクトル洗練が、2つの異なる参照ピクチャーにおけるテンプレート・マッチングによって実行される。マッチングは、2つの参照ピクチャーのそれぞれにおいて、最良のマッチング・ブロックに対応するマッチング関数の最適(関数に依存して最小または最大)を見つけることによって実行される。最適は、(探索空間の動きベクトル候補によってポイントされるブロック位置のうちで)ゼロ平均テンプレートおよびゼロ平均候補ブロックについて探索される。換言すれば、関数最適化を実行する前に、テンプレートの平均がテンプレートから減算され、候補ブロックの平均が候補ブロックから減算される。次いで、現在ブロックの予測子が、それぞれの参照ピクチャーにおける最良のマッチング・ブロックの重み付けされた平均として計算される。
関連出願への相互参照
本願は、「デコーダ側動きベクトル洗練のための誤差面ベースのサブピクセル精度の洗練方法」と題する、2018年7月2日に出願されたインド仮特許出願第201831024666号の利益を主張するものであり、同仮出願は、ここに参照によりその全体において組み込まれる。
H.264/AVCまたはH.265/HEVCのような現在のハイブリッド・ビデオ・コーデックは、予測符号化を含む圧縮を採用する。ビデオ・シーケンスのピクチャーは、ピクセルのブロックに細分化され、これらのブロックがその後符号化される。ブロックをピクセルごとに符号化する代わりに、ブロック全体が、そのブロックに空間的または時間的に近接した、すでにエンコードされたピクセルを使用して予測される。エンコーダは、ブロックとその予測との間の差分のみをさらに処理する。このさらなる処理は、典型的には、ブロック・ピクセルの、変換領域の係数への変換を含む。次いで、これらの係数は、量子化によってさらに圧縮され、エントロピー符号化によってさらにコンパクト化されてビットストリームを形成しうる。ビットストリームはさらに、エンコードされたビデオのデコードを可能にする任意の信号伝達情報を含む。たとえば、信号伝達情報は、入力ピクチャーのサイズ、フレームレート、量子化きざみ指示、ピクチャーのブロックに適用される予測などの、エンコードに関する設定を含んでいてもよい。符号化された信号伝達情報および符号化された信号は、エンコーダおよびデコーダの両方に知られている仕方でビットストリーム内で順序付けられる。これにより、デコーダは、符号化された信号伝達情報および符号化された信号をパースすることができる。
時間的予測は、ビデオの、フレームとも呼ばれるピクチャーどうしの間の時間的相関を利用する。時間的予測は、異なるビデオフレームどうしの間(インター)の依存性を使用する予測であるため、インター予測とも呼ばれる。よって、現在ブロックとも呼ばれる、エンコードされているブロックは、参照ピクチャー(単数または複数)と呼ばれる一つまたは複数の以前にエンコードされたピクチャー(単数または複数)から予測される。参照ピクチャーは、必ずしも、ビデオ・シーケンスの表示順序において、現在ブロックが位置している現在ピクチャーに先行するピクチャーではない。エンコーダは、表示順序とは異なる符号化順序でピクチャーを符号化してもよい。現在ブロックの予測として、参照ピクチャー内の共位置のブロックが決定されてもよい。共位置のブロックは、参照ピクチャーにおいて、現在ピクチャーにおける現在ブロックと同じ位置に位置するブロックである。そのような予測は、動きのないピクチャー領域、すなわち、あるピクチャーから別のピクチャーへと動きのないピクチャー領域については正確である。
動きを考慮に入れる予測子(predictor)、すなわち、動き補償された予測子を得るために、現在ブロックの予測を決定するとき、典型的には動き推定が使用される。よって、現在ブロックは、共位置のブロックの位置から動きベクトルによって与えられる距離のところに位置する、参照ピクチャー内のブロックによって予測される。デコーダが現在ブロックの同じ予測を決定することを可能にするために、動きベクトルはビットストリームにおいて信号伝達されてもよい。ブロックのそれぞれについての動きベクトルを信号伝達することによって引き起こされる信号伝達オーバヘッドをさらに低減するために、動きベクトル自体が推定されてもよい。動きベクトル推定は、空間および/または時間領域における近傍ブロックの動きベクトルに基づいて実行されてもよい。
現在ブロックの予測は、1つの参照ピクチャーを使用して、または2つ以上の参照ピクチャーから得られた予測に重み付けすることによって計算されてもよい。参照ピクチャーは、隣接ピクチャー、すなわち、表示順序において現在ピクチャーの直前のピクチャーおよび/または直後のピクチャーであってもよい。なぜなら、隣接ピクチャーは、現在ピクチャーに類似している可能性が最も高いからである。しかしながら、一般に、参照ピクチャーは、表示順序では現在ピクチャーに先行または後続し、ビットストリームにおいて(復号順序において)現在ピクチャーに先行する任意の他のピクチャーでありうる。これは、たとえば、ビデオ・コンテンツにおける隠蔽および/または非線形動きの場合に利点を提供しうる。よって、参照ピクチャー識別情報も、ビットストリーム内で信号伝達されてもよい。
インター予測の特別なモードは、現在ブロックの予測を生成する際に2つの参照ピクチャーが使用される、いわゆる双予測(bi-prediction)である。特に、それぞれの2つの参照ピクチャーにおいて決定された2つの予測が、現在ブロックの予測信号に組み合わされる。双予測は、単予測(uni-prediction)、すなわち、単一の参照ピクチャーのみを用いる予測よりも現在ブロックのより正確な予測につながる可能性がある。かかるより正確な予測は、現在ブロックのピクセルと予測との間の、より小さな差(「残差」とも呼ばれる)につながり、これは、より効率的にエンコードされうる、すなわち、より短いビットストリームに圧縮されうる。一般に、現在ブロックを予測するために、3つ以上のそれぞれの参照ブロックを見つけるために、3つ以上の参照ピクチャーが使用されてもよい。すなわち、マルチ参照インター予測を適用することができる。このように、マルチ参照予測という用語は、双予測および3つ以上の参照ピクチャーを用いた予測を含む。
より正確な動き推定を提供するために、参照ピクチャーの解像度が、ピクセル間でサンプルを補間することによって向上されてもよい。端数ピクセル(fractional pixel[フラクショナル・ピクセル])補間は、最も近いピクセルの重み付けされた平均によって実行できる。半ピクセル解像度の場合、たとえば、双線形補間が典型的には使用される。他の端数ピクセルは、最も近い諸ピクセルに、それぞれの最も近いピクセルから予測されるピクセルまでの間の距離の逆数によって重み付けしたものの平均として計算される。
動きベクトル推定は計算的に複雑なタスクであり、現在ブロックと、参照ピクチャーにおいて候補動ベクトルによってポイントされる対応する予測ブロックとの間の類似性が計算される。典型的には、探索領域は、画像のM×Mのサンプルを含み、M×M個の候補位置の各サンプル位置が試験される。この試験は、N×Nの参照ブロックCと、探索領域の試験される候補位置に位置するブロックRとの間の類似性指標の計算を含む。その単純さのため、差分絶対値和(sum of absolute differences、SAD)が、この目的のために頻繁に用いられる指標であり、
によって与えられる。
上記の公式において、xおよびyは、探索領域内の候補位置を定義し、一方、インデックスiおよびjは、参照ブロックCおよび候補ブロックR内のサンプルを示す。候補位置は、しばしば、ブロック変位またはオフセットと呼ばれ、これは、ブロック照合を、探索領域内の参照ブロックをシフトし、参照ブロックCと探索領域の重複部分との間の類似性を計算することとして表現することを反映する。複雑さを低減するために、候補動きベクトルの数は、通例、候補動きベクトルをある探索空間に制限することによって低減される。探索空間は、たとえば、現在の画像内の現在ブロックの位置に対応する、参照ピクチャー内の位置を取り囲むピクセルの数および/または位置によって定義されてもよい。すべてのM×Mの候補位置xおよびyについてSADを計算した後、最良のマッチするブロックRは、参照ブロックCとの最大の類似性に対応する、最も低いSADを与える位置のブロックである。他方、候補動きベクトルは、近傍ブロックの動きベクトルによって形成される候補動きベクトルのリストによって定義されうる。
動きベクトルは、通例、少なくとも部分的にはエンコーダ側で決定され、符号化されたビットストリーム内でデコーダに信号伝達される。しかしながら、動きベクトルはデコーダでも導出されうる。そのような場合、現在ブロックはデコーダでは利用できず、参照ピクチャーにおいて候補動きベクトルがポイントするブロックとの類似性を計算するために使用することはできない。よって、現在ブロックの代わりに、すでにデコードされたブロックのピクセルから構築されるテンプレートが使用される。たとえば、現在ブロックに隣接するすでにデコードされたピクセルが使用されてもよい。そのような動き推定は、信号伝達を低減するという利点を提供する。すなわち、動きベクトルは、エンコーダとデコーダの両方で同じ仕方で導出されるので、信号伝達は必要とされない。他方、そのような動き推定の精度は、より低いことがある。
精度と信号伝達オーバヘッドの間のトレードオフを提供するために、動きベクトル推定は、動きベクトル導出と動きベクトル洗練の2つのステップに分割されてもよい。たとえば、動きベクトル導出は、候補のリストからの動きベクトルの選択を含んでいてもよい。そのような選択された動きベクトルは、たとえば、探索空間内の探索によってさらに洗練されうる。探索空間における探索は、各候補動きベクトルについてのコスト関数、すなわち候補動きベクトルがポイントするブロックの各候補位置についてのコスト関数の計算に基づいている。
文書JVET-D0029: Decoder-Side Motion Vector Refinement Based on Bilateral Template Matching, X. Chen, J. An, J. Zheng (該文書はhttp://phenix.it-sudparis.eu/jvet/siteに見出すことができる)は、第1の動きベクトルが整数ピクセル解像度において見出され、該第1の動きベクトルのまわりの探索空間における半ピクセル解像度での探索によってさらに洗練される動きベクトル洗練を示している。ブロック・テンプレートに基づく双方向動きベクトル探索が使用される。
動きベクトル推定は、品質、速度および複雑さの点でその効率がビデオ符号化および復号の効率に影響を与えるので、現代のビデオ符号化器および復号器の重要な特徴である。
本発明は、ビデオのエンコードおよびデコードに関し、特に、動きベクトルの決定に関する。
本願の第1の側面では、デコーダ側動きベクトル洗練システムにおいて、それぞれの初期のサブピクセル精度の洗練中心(単数または複数)のまわりの、一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトルを得るための方法が、以下のステップを含んでいてもよい。
各参照フレームについて整数距離洗練動きベクトルを決定するために、コスト関数を用いて複数の整数1ピクセル距離洗練動作(反復工程)を逐次反復的に実行するステップであって、前記探索中心は、動作(反復工程)の後に、その動作(反復工程)における最低コストの位置に更新される、ステップと、所与の動作(反復工程)における中心位置のコストが、その周囲の一組の1ピクセル近傍位置のコストよりも低いために、逐次反復するループの早期の終了が生じることを決定する、または動作(反復工程)の所定数に到達したことを決定するステップ。早期の終了が生じる場合、本方法は、最後の探索中心およびその周囲の前記一組の1ピクセル近傍位置のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値を有する位置を計算することによって、各参照における最後の探索中心のまわりのサブピクセル距離洗練動きベクトルを決定するステップと、各参照フレームについての決定された整数距離洗練動きベクトルおよび決定されたサブピクセル距離洗練動きベクトルの合計として、総洗練動きベクトルを返すステップとを含んでいてもよい。動作(反復工程)の所定の回数に到達した場合、本方法は、すべての動作(反復工程)を通じた最小コスト関数値を有する位置に対応する洗練動きベクトルを返すステップを含んでいてもよい。
第1の側面のある実装では、コスト関数は、参照リストL1における変位が、水平方向および垂直方向の両方において参照リストL0における変位と等しく、反対向きであるように、参照リストL0およびL1の両方における統合的な洗練のために実行される(コスト関数は、SBM_JOINTと称される)。
本願の第2の側面では、デコーダ側動きベクトル洗練システムにおいて、それぞれの初期のサブピクセル精度の洗練中心(単数または複数)のまわりの、一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトルを得るための方法が、以下のステップを含んでいてもよい。
各参照フレームについて整数距離洗練動きベクトルを決定するために、第1のコスト関数を使用して複数の整数1ピクセル距離洗練動作(反復工程)を逐次反復的に実行するステップであって、前記探索中心は、動作(反復工程)の後に、その動作(反復工程)における最低コストの位置に更新される、ステップと、所与の動作(反復工程)における中心位置のコストが、その周囲の一組の1ピクセル近傍位置のコストよりも低いために、逐次反復するループの早期の終了が生じることを決定する、または動作(反復工程)の所定数に到達したことを決定するステップ。
第2のコスト関数を使用して、最後の探索中心および最後の探索中心の一組の1ピクセル近傍位置におけるコスト関数値を評価するステップ:最後の探索中心位置が、最後の探索中心に対する前記一組の1ピクセル近傍位置における第2のコスト関数値と比較したときに、最も低い第2のコスト関数値を有する場合、第2のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値を有する位置を計算することによって、各参照における最良の整数距離洗練位置のまわりのサブピクセル距離洗練動きベクトルを決定するステップと、各参照フレームについての、決定された整数距離洗練動きベクトルおよび決定されたサブピクセル距離洗練動きベクトルの合計として、総洗練動きベクトルを返すステップ。そうではなく最後の探索中心位置が、最後の探索中心に対する前記一組の1ピクセル近傍位置における第2のコスト関数値と比較したときに、最も低い第2のコスト関数値を有しない場合は、本方法は、各参照フレームについての最良の第2のコスト関数値を有する位置に対応する洗練動きベクトルを返すステップを含む。
第2の側面のある実装では、第1のコスト関数はSBM_JOINTであり、第2のコスト関数はTBM_INDEPDENDENTであり、これは、参照リストL0およびL1の両方において独立した洗練を、共通のバイラテラル平均化テンプレートに対して実行することに関連するコスト関数として定義される。
本方法は、テンプレート・マッチング使用事例およびバイラテラル・マッチング使用事例のために使用できる。
本発明の別の側面では、本明細書に開示された方法は、非一時的なコンピュータ読み取り可能媒体に記憶された命令として実装されてもよく、該命令は、上述の方法のステップを実行するためにプロセッサによって読み取られ、実行されうる。
本発明のいくつかの側面において、デコーダ側動きベクトル洗練のための方法は、初期動きベクトルに関する候補整数動きベクトル変位に対応する整数距離コストを比較することによってターゲット整数動きベクトル変位を決定するステップと、整数距離コストに対して計算を実行することによってサブピクセル動きベクトル変位を決定するステップと、ターゲット整数動きベクトル変位、サブピクセル動きベクトル変位、および初期動きベクトルに基づいて、洗練された動きベクトルを決定するステップとを含む。
本発明によって、従来の技術よりも多くの利点が達成される。たとえば、本発明の実施形態は、所与の逐次反復動作における中心位置のコストの、中心位置の周囲の一組の1ピクセル近傍位置のコストに対するチェックに基づく、逐次反復ループの決定される早期の終了を利用する。逐次反復ループを早期に終了することにより、不必要な計算を減らすまたはなくすことができる。
さらに、装置が上述の方法を実装することができ、ソフトウェアおよびハードウェアの組み合わせであってもよい。たとえば、エンコードおよび/またはデコードは、汎用プロセッサ(CPU)、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、またはフィールド・プログラマブル・ゲート・アレイ(FPGA)などの集積回路(半導体デバイスまたはチップ)によって実行されてもよい。しかしながら、本発明の実施形態は、プログラマブルハードウェア上の実装に限定されるものではない。本発明の実施形態は、特定用途向け集積回路上で、またはCPU、DSP、FPGA、およびASICコンポーネントの一つまたは複数の組み合わせによって実装されうる。
以下では、添付の図および図面を参照して、例示的な実施形態をより詳細に説明する。
本開示のある実施形態による、ビデオ信号をエンコードするためのエンコーダの例示的な構造を示すブロック図である。
本開示のある実施形態による、ビデオ信号をデコードするためのデコーダの例示的な構造を示すブロック図である。
双予測に好適な例示的なテンプレート・マッチングを示す概略図である。
単予測および双予測に好適な例示的なテンプレート・マッチングを示す概略図である。
単予測および双予測に好適な例示的なバイラテラル・マッチングを示す概略図である;
動きベクトル探索の可能な実装を示すフロー図である。
ビデオ符号化において適用される局所的な照明補償の例を示す概略図である。
デコーダ側動きベクトル洗練の例を示す概略図である。
サブピクセル位置の例を示す概略図である。
本開示のある実施形態による、一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトル洗練を得るための、中心ピクセルの周囲の一組の1ピクセル近傍位置のブロック図である。
本開示のいくつかの実施形態による、デコーダ側動きベクトル洗練システムにおいて、一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトル洗練を得るための方法を示す簡略化されたフロー図である。
本開示のある実施形態を実装するための方法を示す簡略化されたフロー図である。
本開示のさまざまな実施形態を実装するために使用可能な装置のブロック図である。
本開示の実施形態は、動きベクトル洗練において適用されるテンプレート・マッチングの改善に関する。特に、テンプレート・マッチングは、発見された最良の諸マッチング・ブロックの平均が(局所的な照明制御によって)さらに調整されない場合でも、ゼロ平均テンプレートおよびゼロ平均候補ブロックに適用される。
テンプレート・マッチングは、第1の参照ピクチャーおよび第2の参照ピクチャーをそれぞれポイントする最良の第1および第2の動きベクトルを見つけるために使用される。テンプレート・マッチングは、デコーダによって導出されるか、デコーダに信号伝達されうる初期動きベクトルによって与えられる位置上の所定の探索空間におけるテンプレート・マッチングによって、各参照ピクチャーについて実行される。
テンプレート・マッチングは、初期動きベクトルによってポイントされるブロックから導出されたブロック・テンプレートに基づいて実行されてもよい。
現在ブロックについての予測子を得るために最良のマッチング・ブロックを見つけるためのそのようなテンプレート・マッチングは、たとえばハイブリッド・ビデオ・エンコーダおよび/またはデコーダにおいて使用されてもよい。たとえば、HEVCなどといったエンコーダおよび/またはデコーダへの適用が有利でありうる。特に、HEVCまたは新しいコーデック/標準のさらなる発展が本開示の実施形態を利用することができる。
図1は、ビデオ・ストリームのフレームまたはピクチャーの入力画像サンプルを受け取るための入力102と、エンコードされたビデオ・ビットストリームを生成するための出力172とを含むエンコーダ100を示している。本明細書中で使用される場合、本開示における用語「フレーム」はピクチャーとも呼ばれる。本開示は、ビデオのインターレース・フィールドにも適用可能であることを注意しておく。一般に、ピクチャーは、m×nのピクセルを含み、これは画像サンプルに対応し、一つまたは複数の色成分を含んでいてもよい。本明細書で使用される場合、以下の説明は、輝度サンプルとしてのピクセルに言及する。しかしながら、本開示の動きベクトル探索は、クロミナンスまたはRGBなどの探索空間の成分を含む任意の色成分に適用できることを注意しておく。さらに、1つの成分についてのみ動きベクトル推定を実行し、推定された動きベクトルをより多くの、またはすべての成分に適用することが有利でありうる。
符号化されるべき入力ブロックは、必ずしも同じサイズをもたない。1つのピクチャーが異なるサイズの諸ブロックを含んでいてもよく、異なるピクチャーのブロック・ラスタ(block raster)も異なっていてもよい。
ある例示的実施形態では、エンコーダ100は、予測、変換、量子化、およびエントロピー符号化をビデオ・ストリームに対して実行するように構成される。変換、量子化、およびエントロピー符号化は、それぞれ、変換ユニット106、量子化ユニット108、およびエントロピー符号化ユニット170によって実行され、エンコードされたビデオ・ビットストリームを生成する。
ビデオ・ストリームは、複数のフレームを含んでいてもよく、各フレームは、イントラまたはインター符号化されるあるサイズの諸ブロックに分割される。たとえば、ビデオ・ストリームの第1フレームのブロックは、イントラ予測ユニット154によってイントラ符号化される。イントラ・フレームは、独立にデコードされることができ、ランダムアクセスのためのビットストリームにおけるエントリーポイントを提供することができるように、同じフレーム内の情報のみを用いて符号化される。ビデオ・ストリームの他のフレームのブロックは、インター予測ユニット144によってインター符号化されてもよく、すなわち、以前に符号化されたフレーム(参照フレーム)からの情報を使用して時間的冗長性を減らし、インター符号化されるフレームの各ブロックは、参照フレーム内のブロックから予測される。モード選択ユニット160は、イントラ予測ユニット154によって処理されるフレームのブロック155と、インター予測ユニット144によって処理されるフレームのブロック145との間で選択するように構成される。モード選択ユニット160は、イントラ予測またはインター予測のパラメータをも制御する。画像情報のリフレッシュを可能にするために、インター符号化されたフレーム内に、イントラ符号化されたブロックが設けられてもよい。さらに、デコードのためのエントリーポイント、すなわち、デコーダが前に符号化されたフレームからの情報をもつことなくデコードを開始することができるポイントを提供するために、イントラ符号化されたブロックのみを含むイントラ・フレームが、ビデオ・シーケンスに定期的に挿入されてもよい。
イントラ推定ユニット152およびイントラ予測ユニット154は、イントラ予測を実行するように構成されたユニットである。特に、イントラ推定ユニット152は、もとの画像の知識にも基づいて予測モードを導出してもよく、一方、イントラ予測ユニット154は、対応する予測子、すなわち、選択された予測モードを用いて予測されたサンプルを、差分符号化のために提供する。空間的または時間的予測を実行するために、符号化されたブロックは、逆量子化ユニット110および逆変換ユニット112によってさらに処理されて、逆変換されたブロック113を提供してもよい。再構成ユニット114は、逆変換されたブロック113を予測ブロック165と組み合わせて、再構成されたブロック115を提供し、これが、デコードされた画像の品質をさらに改善するためにループ・フィルタリング・ユニット120に提供される。次いで、フィルタリングされたブロックは、その後デコード・ピクチャー・バッファ130に記憶される参照フレームを形成する。逆量子化ユニット110、逆変換ユニット112、再構成ユニット114およびループ・フィルタ120は、デコーダ(デコード・ループ)の一部を形成する。エンコーダ側でのそのようなデコード・ループ(デコーダ)は、デコーダ側で再構成される参照ピクチャーと同じ参照フレームを生成するという利点を提供する。よって、エンコーダおよびデコーダは、対応する仕方で動作する。ここでいう用語「再構成」は、予測ブロック165を逆変換された(デコードされた残差)ブロック113に加えることによって、再構成されたブロック115を得ることをいう。
エンコーダ100はまた、インター符号化されるべき現在のフレームまたはピクチャーのピクチャー・ブロック101と、デコード・ピクチャー・バッファ130からの一つまたは複数の参照フレームとを受領するインター推定ユニット142をも含む。動き推定は、インター推定ユニット142によって実行されるが、動き補償は、インター予測ユニット144によって実行される。動き推定は、たとえば、符号化されるべきもとの画像も使用して、あるコスト関数に基づいて動きベクトルおよび参照フレームを得るために使用される。たとえば、動き推定(インター推定)ユニット142は、初期動きベクトル推定を提供することができる。次いで、最初の動きベクトルは、ビットストリーム内で、動きベクトルの形で直接的に、またはエンコーダおよびデコーダにおいて同じように所定の規則に基づいて構築される候補のリスト内の動きベクトル候補を指すインデックスとして、信号伝達(信号として伝送)されうる。次いで、動き補償は、参照フレーム内の現在ブロックと共位置にあるブロックの、参照フレーム内の参照ブロックへの、すなわち動きベクトルによる並進として、現在ブロックの予測子を導出する。インター予測ユニット144は、現在ブロックについて、予測ブロック145を出力する。ここで、予測ブロック145はコスト関数を最小化するものである。たとえば、コスト関数は、符号化されるべき現在ブロックとその予測ブロックとの間の差であってもよく、すなわち、コスト関数は、残差ブロック105を最小化する。残差ブロックの最小化は、たとえば、現在ブロックのすべてのピクセル(サンプル)と候補参照ピクチャー内の候補ブロックとの間の差分絶対値和(SAD)の計算に基づく。一般に、平均二乗誤差(mean square error、MSE)または構造的類似性メトリック(structural similarity metric、SSIM)のような、任意の他の類似性メトリックを使用することができる。
コスト関数はまた、そのようなインター・ブロックを符号化するために必要なビット数および/またはそのような符号化から帰結する歪みであってもよい。よって、レート‐歪み最適化手順が、動きベクトル選択について決定するために、および/または一般に、ブロックのためにインター予測を使用するかイントラ予測を使用するか、そしてどの設定とともに使用するかなどのエンコード・パラメータについて決定するために使用されうる。
イントラ推定ユニット152およびインター予測ユニット154は、入力として、イントラ符号化されるべき現在のフレームまたはピクチャーのピクチャー・ブロック101と、現在のフレームのすでに再構成された領域からの一つまたは複数の参照サンプル117とを受領する。次いで、イントラ予測は、現在のフレームの現在ブロックのピクセルを、現在のフレームの参照サンプルの関数を用いて記述する。イントラ予測ユニット154は、現在ブロックについての予測ブロックを出力する。ここで、予測ブロックは、有利には、符号化されるべき現在ブロックとその予測ブロックとの間の差を最小化する、すなわち、残差ブロックを最小化するものである。残差ブロックの最小化は、たとえば、レート‐歪み最適化手順に基づくことができる。特に、予測ブロックは、参照サンプルの方向性補間として得られる。方向は、レート‐歪み最適化によって、および/または、インター予測に関連して上述したような類似性指標を計算することによって決定されてもよい。
インター推定ユニット142は、入力として、インター符号化されるべき現在のフレームまたはピクチャーのブロックまたはより普遍的に形成された画像サンプル(a more universal-formed image sample)と、2つ以上のすでにデコードされたピクチャー231とを受領する。次いで、インター予測は、現在のフレームの現在の画像サンプルを、参照ピクチャーの参照画像サンプルへの動きベクトルを用いて記述する。インター予測ユニット144は、現在の画像サンプルについて一つまたは複数の動きベクトル145を出力し、それらの動きベクトルによってポイントされる参照画像サンプルは、有利には、符号化されるべき現在画像サンプルとその参照画像サンプルとの間の差を最小化する、すなわち、残差画像サンプルを最小化するものである。次いで、現在ブロックについての予測子が、差分符号化のために、インター予測ユニット144によって提供される。
現在ブロックとその予測との間の差、すなわち残差ブロック105は、その後、変換ユニット106によって変換されて、変換された係数107を生成する。変換された係数107は、量子化ユニット108によって量子化され、エントロピー符号化ユニット170によってエントロピー符号化される。このようにして生成されたエンコードされたピクチャー・データ171、すなわちエンコードされたビデオ・ビットストリームは、イントラ符号化されたブロックおよびインター符号化されたブロックならびに対応する信号伝達情報(モード指示、動きベクトルの指示、および/またはイントラ予測方向など)を含む。変換ユニット106は、離散フーリエ変換、高速フーリエ変換、または離散コサイン変換(DFT/FFTまたはDCT)などの線形変換を適用してもよい。空間周波数領域への変換は、結果として得られる係数107が、典型的には、より低い周波数においてより高い値を有するという利点を提供する。よって、有効係数走査(effective coefficient scanning)(たとえばジグザグ走査)および量子化の後、結果として得られる値のシーケンスは、典型的には、始めにいくつかのより大きな値を有し、終わりにゼロのシーケンスを有する。これは、さらに効率的な符号化を可能にする。量子化ユニット108は、係数値の分解能を低減することにより、実際の非可逆圧縮を実行する。エントロピー符号化ユニット170は、次いで、係数値にバイナリー符号語を割り当ててビットストリームを生成する。また、エントロピー符号化ユニット170は、信号伝達情報(図1には示さず)をも符号化する。
図2は、ビデオ・デコーダ200を示す。ビデオ・デコーダ200は、デコード・ピクチャー・バッファ230と、インター予測ユニット244と、ブロック予測ユニットであるイントラ予測ユニット254とを含む。デコード・ピクチャー・バッファ230は、エンコードされたビデオ・ビットストリームから再構成された少なくとも1つ(単予測の場合)または少なくとも2つ(双予測の場合)の参照フレームを記憶するように構成され、参照フレームは、エンコードされたビデオ・ビットストリームの現在のフレーム(現在デコードされているフレーム)とは異なる。イントラ予測ユニット254は、デコードされるべきブロックの推定値である予測ブロックを生成するように構成される。イントラ予測ユニット254は、デコード・ピクチャー・バッファ230から得られた参照サンプルに基づいて、この予測を生成するように構成される。
デコーダ200は、ビデオ・エンコーダ100によって生成されたエンコードされたビデオ・ビットストリームをデコードするように構成され、好ましくは、デコーダ200とエンコーダ100の両方が、エンコード/デコードされるべきそれぞれのブロックについて同一の予測を生成する。デコード・ピクチャー・バッファ230およびイントラ予測ユニット254の特徴は、図1のデコード・ピクチャー・バッファ130およびイントラ予測ユニット154の特徴と同様である。
ビデオ・デコーダ200は、ビデオ・エンコーダ100の逆量子化ユニット110、逆変換ユニット112、ループ・フィルタリング・ユニット120にそれぞれ対応する、たとえば、逆量子化ユニット210、逆変換ユニット212、ループ・フィルタリング・ユニット220のような、ビデオ・エンコーダ100にも存在するユニットをさらに含む。
エントロピー・デコード・ユニット204は、受領されたエンコードされたビデオ・ビットストリームをデコードし、対応して量子化された残差変換係数209および信号伝達情報を得るように構成される。量子化された残差変換係数209は、逆量子化ユニット210および逆変換ユニット212に提供されて、残差(逆変換された)ブロックを生成する。残差ブロックは、再構成ユニット214において予測ブロック265に加えられ、和は、デコードされたビデオを得るためにループ・フィルタリング・ユニット220に提供される。デコードされたビデオのフレームは、デコード・ピクチャー・バッファ230に記憶され、インター予測のためのデコードされたピクチャー231のはたらきをすることができる。
一般に、図1および図2のイントラ予測ユニット154および254は、すでにエンコードされた領域からの参照サンプルを使用して、エンコードされる必要があるまたはデコードされる必要があるブロックのための予測信号を生成することができる。
エントロピー復号ユニット204は、その入力として、エンコードされたビットストリーム171を受領する。一般に、ビットストリームは、まずパースされる、すなわち、ビットストリームから信号伝達パラメータおよび残差が抽出される。典型的には、ビットストリームの構文および意味内容は、エンコーダおよびデコーダが相互運用可能な仕方で機能しうるように、標準によって定義される。上記の背景セクションで説明したように、エンコードされたビットストリームは、予測残差だけを含むわけではない。動き補償された予測の場合、動きベクトル指示もビットストリームにおいて符号化され、デコーダにおいて該ビットストリームからパースされる。動きベクトル指示は、動きベクトルが提供される参照ピクチャーによって、および動きベクトル座標によって与えられうる。これまでは、完全な動きベクトルを符号化することが考えられてきた。しかしながら、ビットストリームにおいて、現在の動きベクトルと前の動きベクトルとの間の差分だけがエンコードされてもよい。このアプローチは、近隣のブロックの動きベクトルの間の冗長性の活用を許容する。
参照ピクチャーを効率的に符号化するために、H.265コーデック(ITU-T、H265、シリーズH:オーディオビジュアルおよびマルチメディアシステム:高効率ビデオ符号化)は、リスト・インデックスにそれぞれの参照フレームを割り当てる、参照ピクチャーのリストを提供する。その際、参照フレームは、対応する割り当てられたリスト・インデックスをビットストリーム中に含めることによって、ビットストリーム内で信号伝達される。そのようなリストは、標準で定義されるか、またはビデオもしくはいくつかのフレームの集合の開始時に信号伝達されるものであってもよい。H.265では、参照リストL0およびL1と呼ばれる、参照ピクチャーの2つのリストが定義されていることを注意しておく。その際、参照ピクチャーは、参照リスト(L0またはL1)を示し、所望の参照ピクチャーに関連するそのリスト内のインデックスを示すことによって、ビットストリーム内で信号伝達される。2つ以上のリストを提供することは、よりよい圧縮のために利点をもつ可能性がある。たとえば、参照リストL0は、一方向的にインター予測されるスライスおよび双方向的にインター予測されるスライスの両方のために使用されてもよく、一方、参照リストL1は、双方向的にインター予測されるスライスのためにのみ使用されてもよい。しかしながら、一般に、本開示は、リストL0およびL1のいかなる内容にも限定されない。
参照リストL0およびL1は、標準で定義され、固定されてもよいが、ビデオ・シーケンスの始めにそれらを信号伝達することによって、符号化/復号におけるより大きな柔軟性が達成されうる。よって、エンコーダは、リストL0およびL1を、インデックスに従って順序付けられた特定の諸参照ピクチャーをもって構成してもよい。参照リストL0およびL1は、同じ固定サイズを有してもよい。一般に、3つ以上のリストがあってもよい。動きベクトルは、参照ピクチャー内の座標によって直接、信号伝達されてもよい。あるいはまた、H.265でも指定されているように、候補動きベクトルのリストが構築されてもよく、該リストにおいて特定の動きベクトルに関連するインデックスが伝送されることができる。
現在ブロックの動きベクトルは、通例、現在ピクチャーまたは以前に符号化されたピクチャー内の近傍ブロックの動きベクトルと相関している。これは、近傍ブロックが、同様の動きをもつ同じ動くオブジェクトに対応する可能性が高く、オブジェクトの動きが時間の経過とともに急激に変化する可能性が低いためである。結果として、近傍ブロックにおける動きベクトルを予測子として使用することで、信号伝達される動きベクトル差のサイズが減少する。動きベクトル予測子(Motion Vector Predictor、MVP)は、通例、空間的近傍ブロックから、または共位置ピクチャーにおける時間的近傍ブロックからのすでにエンコード/デコードされた動きベクトルから導出される。H.264/AVCでは、これは、3つの空間的に近隣の動きベクトルの成分ごとの中央値を実行することによって行なわれる。このアプローチを使用すると、予測子の信号伝達は必要とされない。共位置ピクチャーからの時間的MVPは、H.264/AVCのいわゆる時間的直接モード(temporal direct mode)においてのみ考慮される。H.264/AVC直接モードは、動きベクトル以外の動きデータを導出するためにも使用される。よって、それらはHEVCにおけるブロック・マージ概念に、より関連する。HEVCでは、MVPを暗黙的に導出するアプローチは、MVPのリストからのどのMVPが動きベクトル導出のために使用されるかを明示的に信号伝達する、動きベクトル競合(motion vector competition)として知られる技法によって置き換えられた。HEVCにおける可変符号化四分木ブロック構造の結果として、1つのブロックが、潜在的MVP候補として、動きベクトルを有するいくつかの近傍ブロックをもつことができる。左近傍を例にとると、最悪の場合、64×64ルーマ符号化ツリーブロックがそれ以上分割されず、その左のものが最大深度まで分割されている場合、64×64ルーマ予測ブロックは、左側に16個の4×4ルーマ予測ブロックをもつことができた。
高度動きベクトル予測(Advanced Motion Vector Prediction、AMVP)は、そのような柔軟なブロック構造を考慮に入れるよう動きベクトル競合を修正するために導入された。HEVCの開発中に、符号化効率と実装に優しい設計との間の良好なトレードオフを提供するために、初期のAMVP設計は著しく単純化された。AMVPの初期設計は、3つの異なるクラスの予測子からの5つのMVPを含んでいた:空間的近傍からの3つの動きベクトル、該3つの空間的予測子の中央値、および共位置の時間的近傍ブロックからのスケーリングされた動きベクトル。さらに、予測子のリストは、最も可能性の高い動き予測子を最初の位置に配置するように順序付けし直し、最小の信号伝達オーバヘッドを保証するよう冗長な候補を除去することによって修正された。AMVP候補リスト構築の最終的な設計は、次の2つのMVP候補を含む:a)5つの空間的近傍ブロックから導出される2つまでの空間的候補MVP;b)両方の空間的候補MVPが利用可能ではないか、またはそれらが同一である場合、2つの時間的、共位置のブロックから導出される1つの時間的候補MVP;およびc)空間的、時間的または両方の候補が利用可能でない場合はゼロ動きベクトル。動きベクトル決定に関する詳細は、参照により本明細書に組み込まれるV. Sze et al(編)による書籍、High Efficiency Video Coding (HEVC): Algorithms and Architectures、Springer, 2014、特に第5章に見出すことができる。
信号伝達オーバヘッドをさらに増加させることなく、動きベクトル推定をさらに改善するために、エンコーダ側で導出され、ビットストリームにおいて提供される動きベクトルをさらに洗練することが有益でありうる。動きベクトルの洗練は、エンコーダからの支援なしにデコーダにおいて実行されうる。エンコーダは、そのデコーダ・ループ内で、対応する動きベクトルを得るために同じ洗練を用いてもよい。動きベクトル洗練は、参照ピクチャーの整数ピクセル位置および端数ピクセル位置を含む探索空間において実行される。たとえば、端数ピクセル位置は、半ピクセル位置、1/4ピクセル位置、または他の端数位置であってもよい。端数ピクセル位置は、双線形補間のような補間によって整数(全ピクセル)位置から得ることができる。
現在ブロックの双予測では、それぞれ参照リストL0の第1の動きベクトルおよび参照リストL1の第2の動きベクトルを用いて得られた2つの予測ブロックが単一の予測信号に組み合わされる。これは、単予測よりも、もとの信号への良好な適合を提供することができ、その結果、より小さな残差情報、そして可能性としてはより効率的な圧縮が得られる。
デコーダでは、現在ブロックは、デコードされているところなので利用可能でないが、動きベクトル洗練のためには、テンプレートが使用される。テンプレートは、現在ブロックの推定値であり、すでに処理された(すなわち、エンコーダ側では符号化された、デコーダ側では復号された)画像部分に基づいて構築される。
まず、第1の動きベクトルMV0の推定値および第2の動きベクトルMV1の推定値が、デコーダ200において入力として受領される。エンコーダ100では、動きベクトル推定値MV0およびMV1は、ブロック・マッチングによって、および/または(同じピクチャー内または隣接ピクチャー内の)現在ブロックの近傍のブロックの動きベクトルによって形成される候補のリスト(たとえばマージ・リスト)内を探索することによって、得ることができる。次いで、MV0およびMV1は、有利には、ビットストリーム内でデコーダ側に信号伝達される。しかしながら、一般に、エンコーダにおける第1の決定段も、テンプレート・マッチングによって実行されることができたものであり、そのことは信号伝達オーバヘッドを減少させるという利点を提供したことを注意しておく。
デコーダ200では、ビットストリーム内の情報に基づいて、動きベクトルMV0およびMV1が有利に得られる。動きベクトルMV0およびMV1は、直接信号伝達されるか、または差分信号伝達され、および/または動きベクトルのリスト(マージ・リスト)中のインデックスが信号伝達される。しかしながら、本開示は、ビットストリーム内で動きベクトルを信号伝達することに限定されない。むしろ、本開示によれば、動きベクトルは、エンコーダの動作に対応して、動きベクトル推定の第1段ですでにテンプレート・マッチングによって決定されてもよい。第1段(動きベクトル導出)のテンプレート・マッチングは、第2の動きベクトル洗練段の探索空間とは異なる探索空間に基づいて実行されてもよい。特に、動きベクトル洗練は、より高い解像度(すなわち、探索位置間のより短い距離)を有する探索空間上で実行されてもよい。
それぞれMV0およびMV1がポイントする2つの参照ピクチャーRefPic0およびRefPic1の指示もデコーダに提供される。参照ピクチャーは、以前の処理、すなわち、それぞれエンコードおよびデコードの結果として、エンコーダおよびデコーダにおいてデコード・ピクチャー・バッファに記憶されている。これらの参照ピクチャーのうちの1つが、探索によって、動きベクトル洗練のために選択される。動きベクトルの決定のための装置の参照ピクチャー選択ユニットは、MV0がポイントする第1の参照ピクチャーと、MV1がポイントする第2の参照ピクチャーとを選択するように構成される。該選択に続いて、参照ピクチャー選択ユニットは、動きベクトル洗練を実行するために第1の参照ピクチャーが使用されるか、または第2の参照ピクチャーが使用されるかを決定する。動きベクトル洗練を実行するために、第1の参照ピクチャー内の探索領域は、動きベクトルMV0がポイントする候補位置のまわりで定義される。探索空間内でテンプレート・マッチングを実行し、差分絶対値和(SAD)のような類似性メトリックを決定することによって、探索領域内の諸候補探索空間位置が、テンプレート・ブロックに最も類似するブロックを見つけるために分析される。探索空間の位置は、テンプレートの左上隅が照合される位置を示す。上述したように、左上隅は単なる慣例であり、中心点のような探索空間の任意の点が、一般に、照合位置を示すために使用されうる。
図4Aは、単予測にも適用可能な代替的なテンプレート・マッチングを示す。詳細は、文書JVET-A1001、特にJianle Chen et. al.による"Algorithm Description of Joint Exploration Test Model 1"と題される、http://phenix.it-sudparis.eu/jvet/でアクセス可能な文書JVET-A1001のセクション2.4.6."Pattern matched motion vector derivation"に見出すことができる。このテンプレート・マッチング・アプローチにおけるテンプレートは、現在のフレームにおける現在のブロックに隣接するサンプルとして決定される。文書JVET-A1001の図1に示されるように、現在ブロックの上および左の境界に隣接するすでに再構成されたサンプルが取られ、「L形テンプレート」と呼ばれうる。
参照により組み込まれる文書JVET-D0029によれば、デコーダ側動きベクトル洗練(DMVR)は、2つのそれぞれの参照ピクチャーRefPict0およびRefPict1をポイントする初期動きベクトルMV0およびMV1を入力として有する。これらの初期動きベクトルは、RefPict0およびRefPict1内のそれぞれの探索空間を決定するために使用される。さらに、動きベクトルMV0とMV1を用いて、MV0およびMV1によってポイントされる(サンプルの)それぞれのブロックAおよびBに基づき、次のようにテンプレート(template)が構築される:
Template=function(Block A, Block B)
関数(function)は、サンプル毎の重み付けされた加算と組み合わされたサンプル・クリッピング操作であってもよい。次いで、該テンプレートは、それぞれの参照ピクチャーRefpic0およびRefpic1におけるMV0およびMV1に基づいて決定された探索空間においてテンプレート・マッチングを実行するために使用される。それぞれの探索空間における最良のテンプレート・マッチを決定するためのコスト関数はSAD(Template, Block candA')であり、ここでblock candA'は、MV0によって与えられる位置にまたがる探索空間において候補MVによってポイントされる候補符号化ブロックである。図3は、最良のマッチング・ブロックA'の決定と、結果として得られる洗練された動きベクトルMV0'とを示す。対応して、図3に示されるように、最良のマッチング・ブロックB'およびブロックB'をポイントする対応する動きベクトルMV1'を見つけるために、同じテンプレートが使用される。換言すれば、初期動きベクトルMV0およびMV1によってポイントされるブロックAおよびBに基づいてテンプレートが構築された後、洗練された動きベクトルMV0'およびMV1'が、テンプレートを用いたRefPic0およびRefPic1上の探索を介して見出される。
動きベクトル導出技法は、時に、フレームレート・アップコンバージョン(frame rate up-conversion、FRUC)とも呼ばれる。初期動きベクトルMV0およびMV1は、一般に、エンコーダおよびデコーダが動きベクトル洗練のために同じ初期ポイントを使用することができることを保証するために、ビットストリームにおいて示されてもよい。あるいはまた、初期動きベクトルは、一つまたは複数の初期候補を含む初期候補のリストを提供することによって得られてもよい。それらのそれぞれについて、洗練された動きベクトルが決定され、最後に、最も低いコスト関数を有する洗練された動きベクトルが選択される。
上述したように、テンプレート・マッチングによる動きベクトル導出モードは、フレームレート・アップコンバージョン(FRUC)技法に基づく特別なマージ・モードである。このモードでは、ブロックの動き情報がデコーダ側で導出される。文書JVET-A1001(http://phenix.it-sudparis.eu/jvet/においてアクセス可能な"Algorithm Description of Joint Exploration Test Model 1")に記載されている具体的な実装によれば、マージ・フラグが真の場合、CUまたはPUについてFRUCフラグが信号伝達される。FRUCフラグが偽である場合、マージ・インデックスが信号伝達され、通常のマージ・モードが使用される。FRUCフラグが真の場合は、追加のFRUCモード・フラグが信号伝達されて、どの方法(バイラテラル・マッチングまたはテンプレート・マッチング)がそのブロックについての動き情報を導出するために使用されるべきかを示す。
まとめると、動きベクトル導出プロセスの間、まず、バイラテラル・マッチングまたはテンプレート・マッチングに基づいて、予測ユニット(PU)全体について、初期動きベクトルが導出される。まず、MV候補のリストが生成され、これは、たとえば、PUのマージ・リストであることができる。リストがチェックされ、最小マッチング・コストにつながる候補が開始点(初期動きベクトル)として選択される。次いで、開始点周辺のバイラテラル・マッチングまたはテンプレート・マッチングに基づく局所的な探索が実行され、最小マッチング・コストをもたらす動きベクトル(単数または複数)(MV)が、そのPUについてのMVとして採用される。次いで、動き情報は、導出されたPU動きベクトルを開始点としてさらに洗練される。予測ユニット〔予測単位〕(prediction unit、PU)および符号化ユニット〔符号化単位〕(coding unit)という用語は、本明細書では、ピクチャー(フレーム)内のサンプルのブロックを記述するために交換可能に使用されることができる。
図4Bに示されるように、(文書JVET-A1001に記載されている)バイラテラル・マッチングは、2つの異なる参照ピクチャーにおいて、現在のCUの動き軌跡(motion trajectory)に沿った2つのブロックの間の最も近いマッチを見つけることによって、現在のCUの動き情報を導出するために使用される。連続した動き軌跡の想定のもとで、それら2つの参照ブロックをポイントする動きベクトルMV0およびMV1は、現在ピクチャーと該2つの参照ピクチャーとの間の時間的距離、すなわちTD0およびTD1に比例するものとする。よって、本開示のある実施形態では、それぞれの試験された候補ベクトル対において、2つのそれぞれのベクトルは、画像平面内の直線上にある。特別な場合として、現在ピクチャーが時間的に2つの参照ピクチャーの間に存在し、現在ピクチャーから2つの参照ピクチャーまでの時間的距離が同じである場合、バイラテラル・マッチングはミラーに基づく双方向MVになる。
図4Aに示されているように、(文書JVET-A1001に記載されている)テンプレート・マッチングは、現在ピクチャー内のテンプレート(現在のCUの上および/または左の近傍ブロック)と参照ピクチャー内のブロック(テンプレートと同じサイズ)との間の最も近い一致を見つけることによって、現在のCUの動き情報を導出するために使用される。文書JVET-A1001の"Pattern matched motion vector derivation"のセクションは、テンプレート・マッチングおよびバイラテラル・マッチング方法の具体的な実装を記述している。一例は、バイラテラル・マッチング動作は「マージ・フラグ」が真の場合にのみ適用されることを開示しており、「ブロック・マージ」動作モードが選択されることを示している。ここで、文書JVET-A1001の著者は、H.265規格の「マージ・モード」を参照している。JVET-A1001に記載されたテンプレート・マッチングおよびバイラテラル・マッチング方法は、他のビデオ符号化規格にも適用でき、特定の実装におけるバリエーションが生じることを注意しておく。
図5は、デコーダ側動きベクトル洗練(DMVR)動作を示すフロー図である。文書JVET-D0029によれば、DMVRは、1)予測タイプがスキップ・モードまたはマージ・モードに設定されている、2)予測モードが双予測である、という2つの条件のもとで適用される。まず、初期動きベクトル(参照リストL0の)MV0および(参照リストL1の)MV1が導出される。導出プロセスは、それぞれのスキップ動作およびマージ動作に従って実行される。ここで、文書JVET-D0029の著者は、H.265規格のスキップ・モードとマージ・モードを参照している。これらのモードの説明は、v. Sze, M. Budagavi and G.J. Sullivan(編)による書籍High Efficiency Video Coding (HEVC), Algorithms and Architectures, 2014のセクション5.2.2.3"Merge Motion Data Signaling and Skip Mode"に見出すことができる。H.265では、スキップ・モードが使用される場合、ブロックについて、動きデータが明示的に信号伝達される代わりに推測されること、および予測残差がゼロである、すなわち変換係数が伝送されないことが示される。マージ・モードが選択される場合も動きデータは推測されるが、予測残差はゼロではない、すなわち、変換係数は明示的に信号伝達される。
パース・インデックスは、入力ビデオ・ストリームからパースされる(510)。パースされたインデックスは、構築される(520)MV候補リストのうちの最良の動きベクトル候補をポイントする。次いで、最良の動きベクトル候補が選択され(530)、重み付け平均化(540)によってテンプレートが得られる。DMVR(550)は以下のように適用される。図3を参照して上記で説明したように、MV0およびMV1によって参照されるブロックを足し合わせることによって、ブロック・テンプレートが計算される。その後、クリッピングが実行される。テンプレートは、初期動きベクトルMV0のまわりの洗練された動きベクトルMV0'を見つけるために使用される。探索領域は、整数画素分解能である(探索空間の点が互いに整数サンプル距離だけ離れている)。テンプレート・ブロックとMV0'によってポイントされる新しいブロックとを比較するために、差分絶対値和(SAD)コスト指標が使用される。テンプレートは、MV0'のまわりで洗練されたMV0"を見つけるために使用される。探索領域は、半画素分解能である(探索空間の点がサンプル距離の半分だけ互いに離れている)。用語「画素」および「ピクセル」は、本明細書では交換可能に使用される。同じコスト指標が使用される。最後の2つのステップは、MV1"を見つけるために繰り返される。新たな双予測されたブロックは、MV0"およびMV1"によってポイントされるブロックを足し合わせることによって形成される。次いで、そのような洗練された動きベクトルMV0"およびMV1"によってポイントされるブロックblock_A'およびblock_B'が平均され、たとえば重み付け平均され(560)、最終的な予測が得られる。
図6は、本開示のある実施形態によるビデオ符号化および復号に使用されうる局所的照明補償(local illumination compensation、LIC)の例を示す概略図である。局所的照明補償(LIC)は、スケーリング因子「a」およびオフセット「b」を使用する、照明変化についての線形モデルに基づく。LICは、それぞれのインター・モード符号化される符号化ユニット(CU)について、適応的に有効または無効にされうる。LICがCUに適用されるとき、現在のCUの近傍サンプルおよびその対応する参照サンプルを使って、パラメータaおよびbを導出するために、最小二乗誤差法を用いてもよい。より具体的には、図6に示されるように、CUのサブサンプリング(2:1サブサンプリング)された近傍サンプルおよび参照ピクチャー内の(現在のCUまたはサブCUの動き情報によって識別される)対応するサンプルが使用される。LICパラメータは、各予測方向について別々に導出され、適用される。ここで、サブサンプリング2:1は、現在のCU境界および参照ブロック上の一つおきのピクセルが取られることを意味する。スケーリング因子/乗法的重み付け因子およびオフセットの使用についてのさらなる詳細は、文書JVET-A1001のセクション"2.4.4. Local illumination compensation"に見出すことができる。
図7は、参照ピクチャーRefPic0に対して実行されるデコーダ側動きベクトル洗練(DMVR)反復工程を示す概略図である。現在ピクチャーは現在ブロック710を含み、該現在ブロックについて、RefPic0において動きベクトルMV0に基づいて動きベクトルMV0'が見出されるべきである。5つの整数位置を含む探索空間が決定され、候補位置によってポイントされる諸ブロックはAxと称される。出力は、動きベクトルMV0'によってポイントされる、諸ブロックAxのうちの最良マッチングである。
明示的なマージ・モード・インデックスが信号伝達されるときはいつでも、デコーダ側動きベクトル洗練は、信号伝達されたインデックスから規範的に推定される参照インデックスおよび動きベクトル(単数または複数)から開始する。明示的なマージ・モード・インデックスが信号伝達されない場合、デコーダにおいてコスト関数を用いて一組の初期動きベクトル候補が評価され、最低コストの候補が洗練のための開始点として選択される。このように、デコーダ側の動きベクトル導出方法が、予測/再構成された近傍ブロック境界サンプルに基づく(一般にテンプレート・マッチング(Template Matching、TM)と称される;図4A参照)(または)参照リストL0および参照リストL1における対応するパッチの間の差分最小化を通じたバイラテラル・マッチングに基づく(一般にバイラテラル・マッチング(Bilateral matching、BM)コストと称される)(または)参照リストL0および参照リストL1における対応するパッチの平均化バージョンとL0/L1における変位との間の差に基づく(DMVRコストと呼ばれる)ことに関わりなく、サブピクセル精度の動きベクトルであってもよい諸開始点のまわりで実行される必要のある洗練探索が存在する。
コスト関数を評価するため、整数グリッド位置での参照フレームの値に基づいて、サブピクセル精度の中心での値を導出するために、補間が実行される必要がある。補間フィルタは、双線形補間フィルタのように単純であってもよいし、あるいは2D DCTベースの分離可能型補間フィルタのように、より長いフィルタであってもよい。洗練の間に考慮される各位置で繰り返し、あるブロックについて補間されたサンプルを導出する複雑さを低減するために、L0および/またはL1におけるサブピクセル精度の位置(単数または複数)を中心とする洗練点の整数ピクセル距離グリッドが、別の発明で提案されていた。この場合、現在の最良コストの位置に近い新しい位置が考慮されるので、増分的〔インクリメンタル〕な補間が実行されるだけでよい。整数ピクセル距離グリッドの洗練が完了した後、マージMVに関して最良の整数デルタMVが得られる。
圧縮利得をさらに改善するために、サブピクセル距離洗練を実行することができる。半ピクセル距離洗練は、参照フレーム(単数または複数)内の最良の整数距離MV位置(単数または複数)から半ピクセル距離のところにおける補間されたサンプルを必要とする。L0とL1の間で合同してサブピクセル精度の洗練を実行することが可能である。この場合、L0における最良の整数距離MV位置に関するL0における変位を逆にして、L1における最良の整数距離MV位置に関する対応するL1における対応する変位が得られる。L0およびL1において、サブピクセル精度の洗練を独立して実行することも可能である。
図8は、本開示のある実施形態による整数および端数サンプル位置の例を示す概念図である。図8を参照すると、「A」として示されるピクセル位置は整数ピクセルであり、半ピクセル位置(ロケーション)はb、h、jとして示され、すべての1/4ピクセル位置(ロケーション)はa、c、d、e、f、g、I、k、n、p、q、およびrとして示される。8点の正方形パターンで半ピクセル洗練を行なうためには、3つの平面(plane)が必要であり、同様に、1/4ピクセル洗練のためには、HEVC規格により8つの平面が必要である。より新しい規格は、1/16ピクセルの精度の補間を考えている。
「A」が整数ピクセルである場合、ピクセル位置a、bおよびcは水平補間のみを必要とし、d、hおよびnは垂直補間のみを必要とし、他のすべての点は垂直補間と水平補間の両方を必要とする。
整数ピクセル距離洗練およびサブピクセル距離洗練の際に、最終的な動き補償予測プロセスのために使用される補間とは異なる補間手順を使用することが可能である。たとえば、双線形補間は、洗練のために使用できる、より単純な補間であるが、最終的な動き補償予測(motion compensated prediction、MCP)は、2D DCTベースの補間フィルタを必要とすることがある。参照フレームバッファから取り出された整数ピクセル・グリッド・データは、外部メモリ(たとえば、DDR)からこのデータを複数回取り出し直すことを避けるために、すべての補間が完了できるまで、内部メモリ(たとえば、SRAM)内の第1のバッファに保持される必要がある。整数ピクセル・グリッド・サンプルの補間を通じて導出され、サブピクセル精度の洗練中心からの整数ピクセル距離洗練のために必要とされる整数ピクセル距離グリッドは、すべての整数ピクセル距離洗練が完了するまで、内部メモリ内の第2のバッファにおいて維持される必要がある。最良整数ピクセル距離位置(これは、整数ピクセル・グリッドに対するサブピクセル位置でありうる)のまわりの半ピクセル距離洗練については、中心の両側の対称的な半ピクセル洗練点間の距離が1整数ピクセル距離だけ離間されていることを考えると、2つの水平半ピクセル距離位置が補間される平面を共有し、2つの垂直半ピクセル距離位置が補間される平面を共有し、4つの対角方向の半ピクセル距離位置が補間される平面を共有する。
洗練のための補間が最終的なMCP補間と同じである場合、第2のバッファに記憶されている整数ピクセル距離洗練データを保持することが好ましいことがある。最良の整数ピクセル距離位置がサブピクセル洗練後の最良の位置であることが判明したときに、最終的なMCP補間計算を回避できるからである。洗練と最終的なMCPの間で補間が異なる場合は、第2のバッファは、半ピクセル距離洗練のために必要な3つの平面のうちの1つのための補間で上書きすることができる。
計算負荷と内部メモリの必要性を低減するために、ある従来技術は、4つの対角方向の半ピクセル距離位置のみを評価し、他の従来技術は、水平方向および垂直方向だけの半ピクセル距離位置のみを評価する。したがって、必要とされる内部メモリ・バッファのセットは、2(対角方向の半ピクセル距離位置のみが評価され、補間が異なる場合)から5(3つの半ピクセル距離平面すべてについて評価が行なわれ、補間が異ならない場合)までの範囲である。ある従来技術は、追加の1/4ピクセル距離および1/8ピクセル距離洗練を実行するが、これらの洗練における各位置は個々の補間を要求し、これは、計算的に禁止的であり、追加の圧縮利得に見合うものではない。補間がより高いタップフィルタを使用する場合、水平フィルタリングがまず実行され、フィルタリングされた結果が一時バッファに記憶され、次いで垂直フィルタリングが実行される。
本開示の実施形態は、整数ピクセル距離グリッド位置で評価されたコストを利用する誤差面技法を通じて、明示的な洗練なしに、デコーダ側の動きベクトル洗練/導出の間に、最良の整数距離動きベクトルのまわりのサブピクセル距離デルタ動きベクトルを導出するための方法および装置を提供する。これらのコストを用いてパラメトリック誤差面(parametric error surface)がフィッティングされ、連立方程式を解くことによりパラメトリック誤差面の最小位置が得られる。本開示の諸側面は、整数距離ピクセル位置(それ自体は整数ピクセル・グリッドに関するサブピクセル位置でありうる)のまわりでのデコーダ側サブピクセル距離洗練を利用し、テンプレート・マッチング、バイラテラル・マッチング、およびテンプレートに基づくバイラテラル・マッチングのようなデコーダ側動きベクトル洗練の種々の変形を扱う。
デコーダ側動きベクトル洗練/導出が符号化システムの規範的な側面であることを考えると、エンコーダも、エンコーダの再構成とデコーダの再構成との間にドリフトを生じさせないために、同じ誤差面技法を実行しなければならないであろう。よって、本開示のすべての実施形態のすべての側面は、エンコードおよびデコード・システムの両方に適用可能である。
テンプレート・マッチングでは、洗練動きは、明示的に信号伝達されたマージ・インデックスに基づいて、またはコスト評価を通して暗黙的に導出されるサブピクセル精度の中心から始まる参照においてのみ生じる。
バイラテラル・マッチングでは、(平均化されたテンプレートの有無にかかわらず)洗練は、明示的に信号伝達されたマージ・インデックスに基づいて、またはコスト評価を通して暗黙的に導出された、それぞれのサブピクセル精度の中心から始まる、参照リストL0およびL1において開始される。
バイラテラル・マッチング・コストが、参照リストL0における所与の水平方向および垂直方向の変位について、参照リストL1における、等しくかつ反対向きの水平方向および垂直方向の変位に基づいて評価される場合には、諸図面に示された位置は参照リストL0に対応すると想定され、参照リストL1における位置は、参照リストL1における現在の反復工程中心(current iteration center)に対して水平方向および垂直方向の変位を反転させることによって導出される。
よって、メモリ・サイズおよび計算複雑性を増加させることなく、明示的なサブピクセル距離洗練の符号化利得の大部分を実現する必要がある。
実施形態1
Nを、規範的に許容されている整数の1ピクセル距離洗練反復工程の最大数とする。第1の整数距離洗練反復工程は、前述のサブピクセル精度の洗練中心から開始し、中心位置が、規定された一組の1ピクセル近傍位置の評価されたコスト関数値よりも低い評価されたコスト関数値を有するか、またはN回の反復工程が実行され終わるまで、進行する。反復工程の回数Nに到達し、中心位置が、一組のその1ピクセル近傍位置と比較したときに、最小(最低)のコスト関数値を有する位置ではない場合、誤差面に基づくサブピクセル洗練は実行されず、すべての反復工程を通じて最小(最低)のコスト関数値を有する位置が、デコーダ側動きベクトル洗練プロセスからの最終的なデルタ動きベクトルとして宣言される。終了反復工程の一組の1ピクセル近傍位置において最小(最低)のコスト関数値をもつ中心位置で洗練が終了する場合、次の誤差面に基づくサブピクセル洗練手順が適用される。
以下では、中心Cの周囲の一組の1ピクセル近傍位置を、その左(L)、上(T)、右(R)、および下(B)の整数1ピクセル距離とする。図9は、本開示のある実施形態による、一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトル洗練を得るための、中心ピクセルの周囲の一組の1ピクセル近傍位置のブロック図である。図9を参照すると、2D座標系の原点はCにあり、L、T、R、Bにおける座標は、(−1,0)、(0,1)、(1,0)、および(0,−1)に対応する。これらの5つの位置における評価されたコスト関数値は、E(0,0)、E(−1,0)、E(0,1)、E(1,0)、およびE(0,−1)であろう。2D放物面関数を用いた5パラメータの誤差面(error surface)は、次のように定義される:
E(x,y)=A*(x−x0)2+B*(y−y0)2+C (1)
ここで、E(x,y)は、デカルト座標(x,y)の評価されたコスト関数であり、(x0,y0)は、最小(最低)の誤差を有する、中心(0,0)に関するサブピクセル変位に関連する(対応する)デカルト座標であり、Cは、この位置での誤差に対応するパラメータであり、AおよびBは、誤差面モデル・パラメータである。A、B、CはE(x, y)を計算するための定数値である。
他方、A、B、C、x0、y0が未知のパラメータであることを考慮すると、5つの位置(0,0)、(−1,0)、(0,−1)、(1,0)および(0,1)における利用可能な評価されたコスト関数値を用いて5つの方程式を解くと、(x0,y0)は次のように計算(決定)できる:
x0=(E(−1,0)−E(1,0))/(2*(E(−1,0)+E(1,0)−2*E(0,0))) (2)
y0=(E(0,−1)−E(0,1))/(2*(E(0,−1)+E(0,1)−2* E(0,0))) (3)
x0およびy0はサブピクセル動きベクトル変位に関連する座標である。E(−1,0)、E(1,0)、E(0,0)、E(0,−1)およびE(0,1)は、それぞれ、初期動きベクトルに関する候補整数動きベクトル変位(−1,0)、(1,0)、(0,0)、(0,−1)に対応する整数距離コストである。座標x0およびy0は、デルタ動きベクトルのサブピクセル精度に応じたスケール因子Nによってスケーリングされることができ、ここで、たとえば、ピクセル精度1/2、1/4、1/8および1/16について、それぞれN=2、4、8および16である。
別の実施形態では、式(2)および(3)は次のように表わすことができる:
x0=(E(−1,0)−E(1,0))/(2*N*(E(−1,0)+E(1,0)−2*E(0,0))) (2')
y0=(E(0,−1)−E(0,1))/(2*N*(E(0,−1)+E(0,1)−2*E(0,0))) (3')
ここで、たとえば、ピクセル精度1/2、1/4、1/8および1/16について、それぞれN=1、2、4、および8である。
式(2)および(3)に基づき、x0は、位置(−1,0)、(1,0)および(0,0)のみに従って計算(決定)できることを注意しておく。同様に、y0は、位置(0,−1)、(0,1)、および(0,0)のみに従って計算(決定)できる。
また、中心(0,0)に対する4つの位置(−1,0)、(0,−1)、(1,0)、および(0,1)のすべてにおける評価されたコスト(初期動きベクトルに対する最良の整数距離変位に対応する)が利用可能でない場合には、パラメトリック誤差面はフィッティングできないことも注意しておく。そのような場合、サブピクセル精度のデルタ変位は、最良の整数距離変位に加算されない。
最終的な動き補償によってサポートされるサブピクセル精度に依存して、スケール因子Nを適切に選択することができる。
サブピクセル動きベクトル変位は、式(1)、(2)および(3)により、xおよびy方向において−0.5および+0.5を限界としている。通例関心があるのは1/16ピクセルまでの精度なので、上記2つの除算は、シフト、比較、および増分演算のみで効率的に実行することができる。
いくつかの実施形態では、デコーダ側動きベクトル洗練のための方法は、初期動きベクトルに関して候補整数動きベクトル変位に対応する整数距離コストを比較することによりターゲット整数動きベクトル変位を決定することと、整数距離コストに関して計算を実行することによりサブピクセル動きベクトル変位を決定することと、ターゲット整数動きベクトル変位、サブピクセル動きベクトル変位および初期動きベクトルに基づいて、洗練された動きベクトルを決定することとを含む。
ある実施形態では、本方法は、サブピクセル動きベクトル変位を決定する前に、所定の動きベクトル変位がターゲット整数動きベクトル変位を含むかどうかを決定し;所定の動きベクトル変位がターゲット整数動きベクトル変位を含む場合には、整数距離コストに関して計算を実行することによってサブピクセル動きベクトル変位を決定することをさらに含んでいてもよい。別の実施形態では、本方法は、さらに、サブピクセル動きベクトル変位を決定する前に、ターゲット整数動きベクトル変位に対する位置(−1,0)、(0,−1)、(1,0)および(0,1)において、評価されたコストが利用可能であるかどうかを決定し;ターゲット整数動きベクトル変位に対する位置(−1,0)、(0,−1)、(1,0)および(0,1)において、評価されたコストが利用可能であると決定された場合に、整数距離コストに関して計算を実行することによってサブピクセル動きベクトル変位を決定することを含んでいてもよい。
ある実施形態では、本方法は、前記所定の動きベクトル変位がターゲット整数動きベクトル変位を含まない場合、ターゲット整数動きベクトル変位および初期動きベクトルに基づいて、洗練された動きベクトルを計算することをさらに含んでいてもよい。別の実施形態では、本方法は、評価されたコストの少なくとも一つまたは複数が、ターゲット整数動きベクトル変位に対する位置(−1,0)、(0,−1)、(0,1)、および(1,0)において利用可能でないと判断された場合、ターゲット整数動きベクトル変位および初期動きベクトルに基づいて、洗練された動きベクトルを計算することをさらに含んでいてもよい。
ある実施形態では、ターゲット整数動きベクトル変位を決定することは、各候補整数動きベクトル変位についての整数距離コストを計算し、最低の整数距離コストに対応する候補整数動きベクトル変位を、ターゲット整数動きベクトル変位として選択することを含んでいてもよい。
ある実施形態では、ターゲット整数動きベクトル変位は、参照ピクチャー・リストL0に対応する第1の動きベクトル変位と、参照ピクチャー・リストL1に対応する第2の動きベクトル変位とを含む。本方法は、さらに、参照ピクチャー・リストL0に対応する候補整数動きベクトル変位に対応する整数コストを比較することによって第1の動きベクトル変位を決定し、第1の動きベクトル変位を逆にすることによって第2の動きベクトル変位を決定することを含んでいてもよい。
記載される実施形態は例示的なものであり、限定的なものではないことを理解すべきである。整数距離洗練プロセスが1ピクセル近傍集合内でこれらの多くの評価されたコスト関数値をもたらす場合には、参照文書におけるような他の5点、6点、および9点ベースの誤差面方法を使用することができる。
本実施形態の方法は、2つの内部メモリ・バッファのみを必要とする。第1のバッファは、再構成ピクチャー・バッファからの整数ピクセル・グリッドを記憶するように構成され、第2のバッファは、整数距離洗練の間に整数距離グリッドを記憶するように構成され(これはパラメトリック誤差面を得るために利用される)、最終的なサブピクセル精度の動き補償された予測サンプルで上書きするために使用できる。
本開示の諸実施形態によれば、高精度のサブピクセル精度のデルタ動きベクトルが、サブピクセル精度レベルのいずれにおいても明示的な洗練なしに、得られる。
同じコスト関数がすべての反復工程を通じて使用される場合、整数距離洗練反復工程に必要な計算を超えて追加の補間やコスト関数評価の計算は必要とされない。
図10は、本開示のある実施形態による、デコーダ側動きベクトル洗練システムにおける一つまたは複数の参照フレーム内のサブピクセル精度のデルタ動きベクトルを得るための方法1000を示す簡略化されたフロー図である。方法1000は、以下のステップを含んでいてもよい。
ステップ1001:プロセッサを提供する。プロセッサは、本明細書に記載される方法を実行するために、ビデオ・エンコーダおよび/またはデコーダに統合された一つまたは複数の処理ユニット(CPU、DSP)またはビデオ圧縮ソフトウェアに統合されたプログラム・コードであってもよい。
ステップ1003:前記一つまたは複数の参照フレームの各参照フレームについて整数距離洗練動きベクトルを決定するために、コスト関数を使用して、整数1ピクセル距離洗練動作(反復工程)をプロセッサによって逐次反復的に実行することによって、ループを開始する。
ステップ1005:プロセッサによって、一組の1ピクセル近傍位置のコスト関数値に対する、現在の動作の探索中心の位置のコスト関数値を決定する。現在の反復工程の探索中心のコストが最も低いと決定された場合、すなわち、逐次反復ループからの早期終了の場合(1005、yes):
ステップ1011:各参照フレーム内の最後の探索中心のまわりのサブピクセル距離洗練動きベクトルを、最後の最後の探索中心およびそのまわりの一組の1ピクセル近傍位置のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値を有する位置を計算することによって決定する;
ステップ1013:各参照フレームについて、決定された整数距離洗練動きベクトルと、決定されたサブピクセル距離洗練動きベクトルとの和として、総洗練動きベクトルを返す。
本方法は、さらに:探索中心の位置のコスト関数値が最低のコスト関数値でない場合には(1005、no)、ステップ(1007)に進むことを含む。
ステップ(1007):現在の動作が最後の動作(反復工程)であることを決定する。現在の動作が最後の動作である場合(1007、yes)、すべての動作を通じた最低のコスト値をもつ位置に対応する洗練動きベクトルを返す(1015)。現在の動作が最後の動作でない場合(1007、no)、その動作において最低のコストをもつ位置に中心を更新し、ループおよび反復ステップ(1003)に戻る。
実施形態2
パラメトリック誤差面を導出するために利用される整数距離位置におけるコスト関数評価が、整数距離洗練の、以前の反復工程の間に実行されたコスト関数評価と異なる場合、実施形態1の種々の変形がある。
たとえば、バイラテラル・マッチングが使用される場合、3つのタイプの洗練が可能である。第1の洗練タイプは、参照リストL1における変位が参照リストL0における変位と水平方向および垂直方向の両方で等しくかつ反対になるように、参照リストL0およびL1の両方において合同的な洗練を実行することである(第1の洗練タイプは、SBM_JOINTと称される)。第2の洗練タイプは、共通のバイラテラル平均化テンプレートに対して、参照リストL0およびL1の両方において独立した洗練を実行することである(第2の洗練タイプは、TBM_INDEPENDENTと称される)。第3の洗練タイプは、バイラテラル平均化テンプレートに対して参照リストL0またはL1において洗練を実行し、推定された水平および垂直方向の変位を、他方の参照リスト(洗練にL0を使用した場合はL1、洗練にL1を使用した場合はL0)における変位を得る際に反転させる(第3の洗練タイプは、TBM_IN_1REF_NEG_IN_OTHERと称される)。
(中心位置のコストが周囲の一組の1ピクセル近傍コストより低いために)逐次反復ループの早期の終了が生じる反復工程を予測することは困難であるため、パラメトリック誤差面を導出するために利用される整数距離位置でのコスト関数評価が、整数距離洗練の、以前の反復工程の間に実行されたコスト関数評価と異なる場合はいつでも、早期終了中心を中心とするコスト関数評価の追加のセットが、要求されるコスト関数を用いて実行される。
次の表1は、整数距離洗練の間の早期終了後に追加の評価が必要となる、バイラテラル・マッチング中のいくつかの状況を与える。
整数距離洗練逐次反復の間は洗練タイプSBM_JOINTが最も良く機能することが観察された。洗練タイプTBM_INDEPENDENTを用いてL0およびL1における独立したサブピクセル・デルタ動きベクトルを得るときは、L0およびL1における等しく、反対の変位と比較したとき、小さな追加的な符号化利得が達成される。しかしながら、L0およびL1における独立した洗練は、L0およびL1位置におけるコスト評価を独立して必要とし、よって、計算的には、合同的な等しく、かつ反対の変位推定オプション(SBM_JOINT洗練)よりも複雑である。SBM_JOINT洗練に加えて、早期終了は追加的なコスト関数評価を必要としない。
図11は、本開示のある実施形態による、デコーダ側動きベクトル洗練システムにおけるそれぞれの初期サブピクセル精度の洗練中心(単数または複数)のまわりの一つまたは複数の参照フレーム内のサブピクセル精度のデルタ動きベクトルを得るための方法1100を示す簡略化されたフロー図である。方法1100は、以下のステップを含んでいてもよい。
ステップ1101:プロセッサを提供する。プロセッサは、本明細書に記載される方法を実行するために、ビデオ・エンコーダおよび/またはデコーダに統合された一つまたは複数の処理ユニット(CPU、DSP)またはビデオ圧縮ソフトウェアに統合されたプログラム・コードであってもよい。
ステップ1103:前記一つまたは複数の参照フレームの各参照フレームについて整数距離洗練動きベクトルを決定するために、コスト関数を使用して、整数1ピクセル距離洗練動作(反復工程)をプロセッサによって逐次反復的に実行する。
ステップ1105:現在の動作が最後の動作であるかどうかを決定する。現在の動作が最後の動作である場合(1105、yes):
ステップ1111:前記一つまたは複数の参照フレームの各参照フレームについて独立したサブピクセル・デルタ動きベクトルを得るために、第2のコスト関数を用いて整数1ピクセル距離洗練を実行する。
現在の動作が最後の動作でない場合(1105、no)は、ステップ1107に進む。
ステップ1107:現在の動作の探索中心の位置のコスト関数値が、一組の1ピクセル近傍位置における最低のコスト関数値であるかどうかを決定する。探索中心の位置のコスト関数値が最低のコスト関数値である場合(1107、yes)は、ステップ1111に進む(すなわち、逐次反復ループの早期終了)。探索中心の位置のコスト関数値が最低のコスト関数値でない場合(1107、no)は、ステップ1109に進む。
ステップ1109:その動作における最も低いコスト値をもつ位置に中心を更新し、次の整数1ピクセル距離洗練動作を実行するためにループに戻る。
ステップ1111:前記一つまたは複数の参照フレームの各参照フレームについて独立したサブピクセル・デルタ動きベクトルを得るために、第2のコスト関数を用いて整数1ピクセル距離洗練を実行する。
ステップ1113:最後の探索中心位置が、最後の探索中心への一組の1ピクセル近傍位置における第2のコスト関数値に対して、最も低い第2のコスト関数値を有するかどうかを決定する。最後の探索中心位置が、最も低い第2のコスト関数値をもつ場合(1113、yes):
ステップ1115:第2のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値をもつ位置を計算することによって、各参照フレーム内の最良の整数距離洗練位置のまわりのサブピクセル距離洗練動きベクトルを決定する。
ステップ1117:各参照フレームについて、決定された整数距離洗練MVおよび決定されたサブピクセル距離洗練MVの和として、総洗練MVを返す。
本開示の実施形態は、上述の方法を実行するように構成された装置をも提供する。装置は、ソフトウェアとハードウェアの組み合わせであってもよい。たとえば、エンコードおよび/またはデコードは、汎用プロセッサ(CPU)、またはデジタル信号プロセッサ(DSP)、またはフィールドプログラマブルゲートアレイ(FPGA)などのチップによって実行されてもよい。しかしながら、本開示の実施形態は、プログラマブルハードウェア実装に限定されない。本開示のいくつかの実施形態は、特定用途向け集積回路(ASIC)または上述のハードウェア構成要素の組み合わせを使用して実装されてもよい。
エンコードおよび/またはデコードはまた、コンピュータ読み取り可能媒体に記憶されたプログラム命令またはプログラム・コードによって実装されてもよい。プログラム命令は、プロセッサまたはコンピュータによって実行されると、プロセッサまたはコンピュータに上記方法のステップを実行させる。コンピュータ読み取り可能媒体は、DVD、CD、USB(フラッシュ)ドライブ、ハードディスク、ネットワークを介して利用可能なサーバー記憶装置等のような、プログラム・コードが記憶される任意の媒体でありうる。
図12は、本開示のさまざまな実施形態を実装するために使用できる装置1200のブロック図である。装置1200は、図1に示されるエンコード装置100および図2に示されるデコード装置200であってもよい。さらに、装置1200は、記載された要素の一つまたは複数をホストすることができる。いくつかの実施形態では、装置1200は、スピーカー、マイクロフォン、マウス、タッチスクリーン、キーパッド、キーボード、プリンタ、ディスプレイ等の一つまたは複数の入出力装置を備える。装置1200は、バスに接続された、一つまたは複数の中央処理装置(CPU)1210、メモリ1220、大容量記憶装置1230、ビデオ・アダプター1240、およびI/Oインターフェース1260を含んでいてもよい。バスは、メモリバスまたはメモリコントローラ、周辺バス、ビデオバスなどを含む任意のタイプのいくつかのバスアーキテクチャーのうちの一つまたは複数である。
CPU 1210は、任意のタイプの電子データ・プロセッサを有することができる。メモリ1220は、スタティック・ランダム・アクセス・メモリ(SRAM)、ダイナミック・ランダム・アクセス・メモリ(DRAM)、同期DRAM(SDRAM)、リード・オンリー・メモリ(ROM)、それらの組み合わせなど、任意のタイプのシステム・メモリを有していてもよく、またはかかるメモリであってもよい。ある実施形態では、メモリ1220は、起動時に使用するためのROMと、プログラムを実行する間に使用するためのプログラムおよびデータ記憶のためのDRAMとを含んでいてもよい。いくつかの実施形態では、メモリ1220は、非一時的であってもよい。大容量記憶装置1230は、データ、プログラム、および他の情報を記憶し、該データ、プログラム、および他の情報をバスを介してアクセス可能にする任意のタイプの記憶装置を含んでいてもよい。大容量記憶装置1230は、たとえば、CPU 1210によって実行されると、CPUに本明細書に記載の方法を実行させるプログラム・コードを記憶するように構成されたソリッド・ステート・ドライブ、ハード・ディスク・ドライブ、磁気ディスク・ドライブ、光ディスク・ドライブなどのうちの一つまたは複数を含む。CPU 1210は、図10および図11に関連して説明したステップをいくつかの動作にわたって逐次反復的に行なうように構成されることができる。CPU 1210は、MV0がポイントする第1の参照ピクチャーと、MV1がポイントする第2の参照ピクチャーとを選択するように構成された参照選択ユニットを含んでいてもよい。参照ピクチャーの選択後、参照ピクチャー選択ユニットは、動きベクトル洗練を実行するために第1の参照ピクチャーが使用されるか第2の参照ピクチャーが使用されるかを決定してもよい。
ビデオ・アダプター1240およびI/Oインターフェース1260は、外部の入出力装置を装置1200に結合するためのインターフェースを提供する。たとえば、装置1200は、クライアントにSQLコマンドインターフェースを提供してもよい。図示されるように、入力および出力装置の例は、ビデオ・アダプター1240に結合されたディスプレイ1290、およびI/Oインターフェース1260に結合されたマウス/キーボード/プリンタ1270の任意の組み合わせを含む。他の装置が装置1200に結合されてもよく、追加の、またはより少ないインターフェースカードが利用されてもよい。たとえば、シリアルインターフェースカード(図示せず)を使用して、プリンタのためにシリアルインターフェースを提供してもよい。
装置1200はまた、イーサネットケーブルなどの有線リンク、および/またはアクセスノードまたは一つまたは複数のネットワーク1280への無線リンクを含む、一つまたは複数のネットワークインターフェース1250を含んでいてもよい。ネットワークインターフェース1250は、装置1200がネットワーク1280を介して遠隔ユニットと通信することを許容する。たとえば、ネットワークインターフェース1250は、データベースに通信を提供してもよい。ある実施形態では、装置1200は、データ処理および他の処理ユニット、インターネット、遠隔記憶施設などの遠隔装置との通信のために、ローカル・エリア・ネットワークまたはワイド・エリア・ネットワークに結合される。装置1200は、入力(たとえば、ネットワークインターフェース)から受信した一つまたは複数のピクチャー・ブロックをエンコードし、および/またはビットストリームからのビデオ・ピクチャーをデコードするために使用されることができる。装置1200は、ビットストリームから圧縮されたピクチャー・ブロックを抽出するように構成されたビットストリーム・パーサと、サブピクセル精度のデルタ動きベクトル洗練を得るように構成された動きベクトル洗練ユニットと、得られた動きベクトルに基づいてブロック再構成を実行するように構成された再構成ユニットとを含んでいてもよい。
本開示の特定の特徴または側面が、いくつかの実装または実施形態のうちの1つのみに関して開示されていることがありうるが、そのような特徴または側面は、任意の与えられたまたは特定の用途にのために望まれ、有利でありうるように、他の実装または実施形態の一つまたは複数の他の特徴または側面と組み合わされてもよい。さらに、用語「含む」、「有する」、「もつ」、またはそれらの他の変形が、詳細な説明または特許請求の範囲のいずれかで使用される場合、そのような用語は、「含む」という用語と同様に包含的であることが意図されている。また、用語「例示的」、「たとえば」、および「例」は、最良または最適ではなく、単に例として意図される。「結合された」および「接続された」という用語は、派生語とともに使用されたことがありうる。これらの用語は、直接物理的または電気的に接触しているか、または互いに直接接触していないかにかかわらず、2つの要素が互いと協働または相互作用することを示すために使用されたことがありうることを理解しておくべきである。
本明細書では、個別的な側面が図示され説明されてきたが、当業者には、本開示の範囲から逸脱することなく、多様な代替および/または同等の実装が、図示され説明された個別的な側面の代わりに用いてもよいことが理解されるであろう。本願は、本明細書中で議論される個別的な側面の任意の適応または変形をカバーすることが意図されている。
以下の特許請求の範囲における要素は、対応する標識を伴って特定の序列で記載されているが、請求項の記載が、それらの要素のいくつかまたは全部を実装するための特定の序列を別段に意味しない限り、それらの要素は、必ずしもその特定の序列で実施されることに限定されることを意図されるものではない。
上記の教示に照らして多くの代替、修正、および変形が、当業者には明白であろう。もちろん、当業者は、本明細書に記載されている用途以外にも本発明の多くの用途があることを容易に認識する。本発明は、一つまたは複数の具体的な実施形態を参照して説明されてきたが、当業者は、本発明の範囲から逸脱することなく、それに多くの変更を加えることができることを認識する。よって、添付の特許請求の範囲およびそれらの均等物の範囲内で、本発明は、本明細書に具体的に記載されている以外の仕方で実施されうることが理解されるべきである。
上述の回路はまた、単一の集積チップであってもよい。しかしながら、本発明は、これに限定されず、回路は、異なるピースまたはハードウェア、または、対応するコードでプログラムされた汎用プロセッサまたはDSPのようなハードウェアおよびソフトウェアの組み合わせを含んでいてもよい。
上述のフローチャートは、デコーダ側動きベクトル洗練技法の例を示すことが意図されている。当業者は、本開示の範囲から逸脱することなく、本開示を実施するためにステップを修正したり、またはステップを組み合わせたりしてもよい。
本開示のある側面では、デコーダ側の動きベクトル洗練システムにおける一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトル洗練を得るための方法が提供される。本方法は、以下を含んでいてもよい:
プロセッサを提供し(1001);
前記一つまたは複数の参照フレームの各参照フレームについて整数距離洗練動きベクトルを決定するために、コスト関数を使用して、整数1ピクセル距離洗練動作をプロセッサによって逐次反復的に実行すること(1003)によって、ループ動作を開始し;
探索中心の位置のコスト関数値が、一組の1ピクセル近傍位置における最も低い関数値であるかどうかを、プロセッサによって判定し(1005);
探索中心の位置のコスト関数値が前記最も低いコスト関数値である場合(1005、yes)、ループ動作を終了し;
各参照フレーム内の探索中心のまわりのサブピクセル距離洗練動きベクトルを、探索中心および一組の1ピクセル近傍位置のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値を有する位置を計算することによって決定し(1011);
各参照フレームについて、パラメトリック誤差面を使って得られたサブピクセル位置を返すこと(1013)。
ある実施形態では、本方法は、さらに:探索中心の位置のコスト関数値が前記最低のコスト関数値でない場合には(1005、no);
現在の動作が最後の動作であるかどうかを判定し(1007);
現在の動作が最後の動作である場合(1007、yes):
最低のコスト関数をもつ各参照フレーム内の諸位置を返し(1015);
現在の動作が最後の動作でない場合(1007、no):
プロセッサによって、現在の整数1ピクセル距離洗練動作の探索中心の位置を、現在の動作において最も低いコストを有する位置によって更新し(1009);
ループ動作(1003、1005、1007、1009)を繰り返すこと。
ある実施形態では、パラメトリック誤差面は、中心ピクセルから等距離のところに離間した4つの周辺ピクセルによって囲まれた中心ピクセルにおいて配置された5つのピクセルを含む。
ある実施形態では、コスト関数は、次式によって計算される:
E(x,y)=A*(x−x0) 2 +B*(y−y0) 2 +C;
ここで、E(x,y)は座標(x,y)の評価されたコスト関数値であり、x0およびy0は、最小誤差をもつ、中心(0,0)に関するサブピクセル変位に関連する座標であり、Cは、座標(x0,y0)における誤差に関連するパラメータであり、AおよびBは定数値であり、xおよびyは、近傍位置に関連する座標であり、xおよびyは、それぞれ−1,0および1を含む整数である。
ある実施形態では、サブピクセル位置は、次式によって得られる:
x0=(E(−1,0)−E(1,0))/(2*N*(E(−1,0)+E(1,0)−2*E(0,0)));
y0=(E(0,−1)−E(0,1))/(2*N*(E(0,−1)+E(0,1)−2*E(0,0)))
ここで
E(x,y)=A*(x−x0) 2 +B*(y−y0) 2 +C;
E(x,y)は評価されたコスト関数値であり、x0およびy0は、最小誤差をもつ、中心(0,0)に関するサブピクセル変位に関連する座標であり、Cは、座標(x0,y0)における誤差に関連するパラメータであり、AおよびBは、定数値であり、xおよびyは、近傍位置に関連する座標であり、xおよびyは、それぞれ−1,0,および1を含む整数であり、Nは、1/2、1/4、1/8,または1/16のサブピクセル精度について1,2,4,または8の整数である。
ある実施形態では、サブピクセル精度のデルタ動きベクトル洗練は、テンプレート・マッチングによって得られる。
本開示の別の側面では、デコーダ側動きベクトル洗練システムにおいて、一つまたは複数の参照フレーム内のサブピクセル精度のデルタ動きベクトルを得るための装置が提供される。装置は、処理ユニットと、処理ユニットに以下のステップを実行させるために、コンピュータ読み取り可能な命令を内部に有する、非一時的なコンピュータ読み取り可能な媒体とを含む:
各参照フレームについて整数距離洗練動きベクトルを決定するために、コスト関数を使用して、N回の整数1ピクセル距離洗練動作を逐次反復的に実行することによって、ループ動作を開始するステップであって、現在の反復工程の探索中心の位置は、前の動作における最も低いコストをもつ位置によって更新される、ステップと;
探索中心の位置のコストが、一組の1ピクセル近傍位置のどのコストよりも低いかどうかを判定するステップと;
探索中心の位置のコストが最も低いコストである場合;
ループ動作を終了するステップと;
各参照フレーム内の探索中心のまわりのサブピクセル距離洗練動きベクトルを、探索中心および一組の1ピクセル近傍位置のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値を有する位置を計算することによって決定するステップと;
各参照フレームについて、パラメトリック誤差面を使って得られたサブピクセル位置を返すステップ。
ある実施形態では、コンピュータ読み取り可能な命令を内部に有する、本非一時的なコンピュータ読み取り可能な媒体は、処理ユニットにさらに以下のステップを実行させる:
探索中心の位置のコスト関数値が最も低いコスト関数値でない場合は(1005、no):現在の動作が最後の動作であるかどうかを判定するステップと;
現在の動作が最後の動作である場合:最低のコスト関数をもつ各参照フレーム内の諸位置を返すステップと;
現在の動作が最後の動作でない場合:プロセッサによって、
現在の整数1ピクセル距離洗練動作の探索中心の位置を、現在の洗練動作において最も低いコストを有する位置によって更新し(1009);ループ動作を繰り返すステップ。
ある実施形態では、コスト関数は、次式によって計算される:
E(x,y)=A*(x−x0) 2 +B*(y−y0) 2 +C;
ここで、E(x,y)は評価されたコスト関数値であり、x0およびy0は、最小誤差をもつ、中心(0,0)に関するサブピクセル変位に関連する座標であり、Cは、座標(x0,y0)における誤差に関連するパラメータであり、AおよびBは定数値であり、xおよびyは、近傍位置に関連する座標であり、xおよびyは、それぞれ−1,0および1を含む整数である。
ある実施形態では、サブピクセル位置は、次式によって得られる:
x0=(E(−1,0)−E(1,0))/(2*N*(E(−1,0)+E(1,0)−2*E(0,0)));
y0=(E(0,−1)−E(0,1))/(2*N*(E(0,−1)+E(0,1)−2*E(0,0)))
ここで
E(x,y)=A*(x−x0) 2 +B*(y−y0) 2 +C;
E(x,y)は評価されたコスト関数値であり、x0およびy0は、最小誤差をもつ、中心(0,0)に関するサブピクセル変位に関連する座標であり、Cは、座標(x0,y0)における誤差に関連するパラメータであり、AおよびBは、定数値であり、xおよびyは、近傍位置に関連する座標であり、xおよびyは、それぞれ−1,0,および1を含む整数であり、Nは、1/2、1/4、1/8,または1/16のサブピクセル精度について1,2,4,または8の整数である。
本開示の別の側面は、デコーダ側動きベクトル洗練システムにおいて、参照リストL0内および参照リスト1内の一つまたは複数の参照フレームにおけるサブピクセル精度のデルタ動きベクトル洗練を得るための方法を提供する。本方法は、以下を含み得る:
プロセッサを提供すること(1101);
前記一つまたは複数の参照フレームの各参照フレームについて整数距離洗練動きベクトルを決定するために、第1のコスト関数を使用して、整数1ピクセル距離洗練動作をプロセッサによって逐次反復的に実行すること(1103)によってループ動作を開始すること;
現在の動作が最後の動作であるかどうか判断すること(1105);
現在の動作が最後の動作である場合(1105、yes):
各参照フレームについて独立したサブピクセル・デルタ動きベクトルを得るために、第2のコスト関数を使用して、整数1ピクセル距離洗練を実行すること(1111);
現在の動作が最後の動作でない場合(1105、no);
プロセッサによって、現在の動作の探索中心の位置のコスト関数値が、一組の1ピクセル近傍位置における第1の最低の関数値であるかどうかを判断すること(1107);
探索中心の位置のコスト関数値が第1の最低の関数値である場合(1107、yes):
ループ動作を終了すること;
各参照フレームについて独立したサブピクセル・デルタ動きベクトルを得るために、第2のコスト関数を使用して、整数1ピクセル距離洗練を実行すること(1111);
現在の動作の探索中心の位置のコスト関数値が第1の最低の関数値でない場合(1107、no):
中心を、現在の動作の第1の最低のコストをもつ位置に更新すること;および
ループ動作(1103、1105、1107、1109)を繰り返すこと。
ある実施形態において、本方法は、さらに、以下を含んでいてもよい:
プロセッサによって、得られた独立したサブピクセル・デルタ動きベクトルの探索中心の位置の第2のコスト関数値が第2の最低の関数値であるかどうかを判断すること(1113);
第2のコスト関数値が最低のコスト関数値である場合(1113、yes);
探索中心および一組の1ピクセル近傍位置のコスト関数値を使用してフィッティングされたパラメトリック誤差面上の最小値を有する位置を計算することによって、各参照フレーム内の探索中心のまわりのサブピクセル距離洗練動きベクトルを決定すること(1115);
各参照フレームについてパラメトリック誤差面を用いて得られた各参照フレームについての決定された整数距離洗練動きベクトルおよび決定されたサブピクセル距離洗練動きベクトルの和として、総洗練動きベクトルを返すこと(1117);
第2のコスト関数値が第2の最低コスト関数値でない場合(1113、no);
第2の最低のコスト関数値をもつ各参照フレーム内の位置に対応する洗練動きベクトルを返すこと(1119)。
ある実施形態では、サブピクセル位置は次式によって導出される:
x0=(E(−1,0)−E(1,0))/(2*N*(E(−1,0)+E(1,0)−2*E(0,0)))
y0=(E(0,−1)−E(0,1))/(2*N*(E(0,−1)+E(0,1)−2* E(0,0)))
ここで、
E(x,y)=A*(x−x0) 2 +B*(y−y0) 2 +C;
(x0,y0)は最小の誤差をもつ、(0,0)に関するサブピクセル変位に対応し、Cは(x0,y0)における誤差に対応し、AおよびBは定数であり、(x,y)は近傍位置に対応し、xは−1,0,1を含み、yは−1,0,1を含む。
ある実施形態では、第1のコスト関数および第2のコスト関数のそれぞれは、次式によって計算される:
E(x,y)=A*(x−x0) 2 +B*(y−y0) 2 +C;
ここで、E(x, y)は評価されたコスト関数値であり、x0およびy0は、最小の誤差をもつ、中心(0,0)に関するサブピクセル変位に関連するデカルト座標であり、Cは、デカルト座標(x0,y0)における誤差に関連するパラメータであり、AおよびBは定数値であり、xおよびyは、近傍位置に関連するデカルト座標であり、xおよびyは、それぞれ、−1、0および1を含む整数である。
ある実施形態では、サブピクセル精度のデルタ動きベクトル洗練は、バイラテラル・マッチングによって得られる。
ある実施形態では、バイラテラル・マッチングは、参照リストL0および参照リストL1の両方において合同洗練を実行することを含む。
ある実施形態では、バイラテラル・マッチングは、共通のバイラテラル平均化テンプレートに関係して、参照リストL0および参照リストL1の両方において独立した合同洗練を実行することを含む。
ある実施形態では、バイラテラル・マッチングは、共通のバイラテラル平均化テンプレートに関係して、参照リストL0または参照リストL1のいずれかで洗練を実行し、他の参照リストにおける変位を得るときに、推定された水平および垂直方向の変位を反転させることを含む。
まとめると、本開示の実施形態は、双方向の動きベクトル推定のためのテンプレート・マッチングに基づく動きベクトル決定に関する。特に、洗練されるべき初期動きベクトルによってポイントされるブロックの平均として、ブロック・テンプレートが構築される。次いで、動きベクトル洗練が、2つの異なる参照ピクチャーにおけるテンプレート・マッチングによって実行される。マッチングは、2つの参照ピクチャーのそれぞれにおいて、最良のマッチング・ブロックに対応するマッチング関数の最適(関数に依存して最小または最大)を見つけることによって実行される。最適は、(探索空間の動きベクトル候補によってポイントされるブロック位置のうちで)ゼロ平均テンプレートおよびゼロ平均候補ブロックについて探索される。換言すれば、関数最適化を実行する前に、テンプレートの平均がテンプレートから減算され、候補ブロックの平均が候補ブロックから減算される。次いで、現在ブロックの予測子が、それぞれの参照ピクチャーにおける最良のマッチング・ブロックの重み付けされた平均として計算される。