(57)【特許請求の範囲】
【請求項１】
複数のブロックに分割されて符号化された画像で構成されるビデオデータをデコードするデコード方法であって、
デコード対象のブロックに関する動きベクトルであって、前記デコード方法における精緻化対象の動きベクトルを決定することと、
前記決定された動きベクトルによって参照されるサブサンプル位置の画素を補間するための画素値群であって、所定範囲内の複数の画素における画素値群である第１の画素値群から、バイリニア補間を用いて、２次元配列の第２の画素値群を生成することと、
前記第２の画素値群の少なくとも一部の画素値を用いて、前記決定された動きベクトルの位置を精緻化する第１の精緻化を実行して、精緻化された第１の位置を決定することと、
前記第２の画素値群の少なくとも一部の画素値を用いて前記第１の位置を更に精緻化する第２の精緻化を実行して、サブサンプル精度の精緻化動きベクトルを生成することと、
前記第２の精緻化が実行されると、前記精緻化動きベクトルを用いて前記デコード対象のブロックをデコードすることと
を有し、
前記デコード方法は、少なくとも、前記バイリニア補間を用いて生成された前記第２の画素値群以外の画素値が前記第２の精緻化に必要となる場合は、前記第２の画素値群以外の画素値を使用しないように、前記第２の精緻化を抑制することを更に含む
ことを特徴とするデコード方法。
【請求項２】
複数のブロックに分割されるフレームで構成されるビデオデータをエンコードして符号化データを生成するエンコード方法であって、
エンコード対象のブロックに関する動きベクトルであって、少なくとも前記符号化データをデコードするデコード方法において精緻化される精緻化対象の動きベクトルを決定することと、
前記決定された動きベクトルによって参照されるサブサンプル位置の画素を補間するための画素値群であって、所定範囲内の複数の画素における画素値群である第１の画素値群から、バイリニア補間を用いて、２次元配列の第２の画素値群を生成することと、
前記第２の画素値群の少なくとも一部の画素値を用いて、前記決定された動きベクトルの位置を精緻化する第１の精緻化を実行して、精緻化された第１の位置を決定することと、
前記第２の画素値群の少なくとも一部の画素値を用いて前記第１の位置を更に精緻化する第２の精緻化を実行して、サブサンプル精度の精緻化動きベクトルを生成することと、
前記第２の精緻化が実行されると、前記精緻化動きベクトルを用いて前記エンコード対象のブロックをエンコードすることと
を有し、
前記エンコード方法は、少なくとも、前記バイリニア補間を用いて生成された前記第２の画素値群以外の画素値が前記第２の精緻化に必要となる場合は、前記第２の画素値群以外の画素値を使用しないように、前記第２の精緻化を抑制することを更に含む
ことを特徴とするエンコード方法。
【請求項３】
複数のブロックに分割されて符号化された画像で構成されるビデオデータをデコードするデコード装置であって、
デコード対象のブロックに関する動きベクトルであって、前記デコード装置における精緻化対象の動きベクトルを決定する決定手段と、
前記決定された動きベクトルによって参照されるサブサンプル位置の画素を補間するための画素値群であって、所定範囲内の複数の画素における画素値群である第１の画素値群から、バイリニア補間を用いて、２次元配列の第２の画素値群を生成する生成手段と、
前記第２の画素値群の少なくとも一部の画素値を用いて、前記決定された動きベクトルの位置を精緻化する第１の精緻化を実行して、精緻化された第１の位置を決定する第１の生成手段と、
前記第２の画素値群の少なくとも一部の画素値を用いて前記第１の位置を更に精緻化する第２の精緻化を実行して、サブサンプル精度の精緻化動きベクトルを生成する第２の生成手段と、
前記第２の精緻化が実行されると、前記精緻化動きベクトルを用いて前記デコード対象のブロックをデコードするデコード手段と、
少なくとも、前記バイリニア補間を用いて生成された前記第２の画素値群以外の画素値が前記第２の精緻化に必要となる場合は、前記第２の画素値群以外の画素値を使用しないように、前記第２の精緻化を抑制する抑制手段と
を有することを特徴とするデコードを行うデコード装置。
【請求項４】
複数のブロックに分割されるフレームで構成されるビデオデータをエンコードして符号化データを生成するエンコード装置であって、
エンコード対象のブロックに関する動きベクトルであって、少なくとも前記符号化データをデコードするデコード装置において精緻化される精緻化対象の動きベクトルを決定する決定手段と、
前記決定された動きベクトルによって参照されるサブサンプル位置の画素を補間するための画素値群であって、所定範囲内の複数の画素における画素値群である第１の画素値群から、バイリニア補間を用いて、２次元配列の第２の画素値群を生成する生成手段と、
前記第２の画素値群の少なくとも一部の画素値を用いて、前記決定された動きベクトルの位置を精緻化する第１の精緻化を実行して、精緻化された第１の位置を決定する第１の生成手段と、
前記第２の画素値群の少なくとも一部の画素値を用いて前記第１の位置を更に精緻化する第２の精緻化を実行して、サブサンプル精度の精緻化動きベクトルを生成する第２の生成手段と、
前記第２の精緻化が実行されると、前記精緻化動きベクトルを用いて前記エンコード対象のブロックをエンコードするエンコード手段と、
少なくとも、前記バイリニア補間を用いて生成された前記第２の画素値群以外の画素値が前記第２の精緻化に必要となる場合は、前記第２の画素値群以外の画素値を使用しないように、前記第２の精緻化を抑制する抑制手段と
を有することを特徴とするエンコード装置。
【請求項５】
コンピュータを、請求項３に記載のデコード装置の各手段として機能させることを特徴とするプログラム。
【請求項６】
コンピュータを、請求項４に記載のエンコード装置の各手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ビデオデータを符号化または復号するための方法およびデバイスに関する。より詳細には、本発明がフレームレートアップコンバージョンモード(Frame-Rate Up Comversion）又はＦＲＵＣモードとして参照される、デコーダ側動きベクトル導出モードを使用する特定の符号化モードによる符号化に関する。
【背景技術】
【０００２】
ビデオデータの予測符号化は、フレームのピクセルのブロックへの分割に基づく。画素の各ブロックについて、予測ブロックが利用可能なデータ内で探索される。予測ブロックは、ＩＮＴＥＲ符号化モードにおいては、現在のブロックとは異なる参照フレームにおけるブロックとなり、ＩＮＴＲＡ符号化モードにおいては現在のフレーム内の隣接画素から生成される。予測ブロックを決定する異なる方法に従って、異なる符号化モードが定義される。符号化の結果は、予測ブロックと、符号化されるブロックと予測ブロックとの間の差からなる残差ブロックとの指示である。
【０００３】
ＩＮＴＥＲ符号化モードに関して、予測ブロックの指示は、符号化しようとしているブロックの位置に対する予測ブロックの参照画像内の位置を与える動きベクトルである。動きベクトルは、それ自体、動きベクトル予測子(motion vector predictor)に基づいて予測的に符号化される。ＨＥＶＣ (High Efficiency Video Coding)規格は、動きベクトルの予測符号化のためのいくつかの既知の符号化モード、すなわち、ＡＭＶＰ(Advanced Motion Vector Prediction)モード、マージ導出プロセスを定義する。これらのモードは、動きベクトル予測子の候補リストの構築と、エンコードに使用されるこのリスト内の動きベクトル予測子のインデックスのシグナリングとに基づく。典型的には、残差動きベクトルもシグナリングされる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
最近、ＦＲＵＣと呼ばれる、動きベクトル予測に関する新しい符号化モードが導入された。これは、シグナリングを全く伴わない動きベクトル予測子のデコーダ側導出プロセスを定義する。導出プロセスの結果は、デコーダによるインデックスまたは残差動きベクトルの送信なしに、動きベクトル予測子として使用される。
【０００５】
ＦＲＵＣモードの符号化および復号の現在の実施は、多くのメモリアクセスを生成し、既知の符号化モードと比較して、デコーダによって考慮されなければならないメモリアクセスの最悪の場合を著しく増加させる。
【０００６】
本発明は、前述の問題のうちの１つまたは複数に対処するように考案された。本発明はデコーダ側動きベクトル導出方法を使用して動き情報が予測される符号化モードを使用する場合に、メモリアクセスの必要性を低減する符号化および復号の改善に関する。
【課題を解決するための手段】
【０００７】
本発明が提供する、複数のブロックに分割されて符号化された画像で構成されるビデオデータをデコードするデコード方法は、
デコード対象のブロックに関する動きベクトルであって、前記デコード方法における精緻化対象の動きベクトルを決定することと、
前記決定された動きベクトルによって参照されるサブサンプル位置の画素を補間するための画素値群であって、所定範囲内の複数の画素における画素値群である第１の画素値群から、バイリニア補間を用いて、２次元配列の第２の画素値群を生成することと、
前記第２の画素値群の少なくとも一部の画素値を用いて、前記決定された動きベクトルの位置を精緻化する第１の精緻化を実行して、精緻化された第１の位置を決定することと、
前記第２の画素値群の少なくとも一部の画素値を用いて前記第１の位置を更に精緻化する第２の精緻化を実行して、サブサンプル精度の精緻化動きベクトルを生成することと、
前記第２の精緻化が実行されると、前記精緻化動きベクトルを用いて前記デコード対象のブロックをデコードすることと
を有し、
前記デコード方法は、少なくとも、前記バイリニア補間を用いて生成された前記第２の画素値群以外の画素値が前記第２の精緻化に必要となる場合は、前記第２の画素値群以外の画素値を使用しないように、前記第２の精緻化を抑制することを更に含むことを特徴とする。
また、本発明が提供する、複数のブロックに分割されるフレームで構成されるビデオデータをエンコードして符号化データを生成するエンコード方法は、
エンコード対象のブロックに関する動きベクトルであって、少なくとも前記符号化データをデコードするデコード方法において精緻化される精緻化対象の動きベクトルを決定することと、
前記決定された動きベクトルによって参照されるサブサンプル位置の画素を補間するための画素値群であって、所定範囲内の複数の画素における画素値群である第１の画素値群から、バイリニア補間を用いて、２次元配列の第２の画素値群を生成することと、
前記第２の画素値群の少なくとも一部の画素値を用いて、前記決定された動きベクトルの位置を精緻化する第１の精緻化を実行して、精緻化された第１の位置を決定することと、
前記第２の画素値群の少なくとも一部の画素値を用いて前記第１の位置を更に精緻化する第２の精緻化を実行して、サブサンプル精度の精緻化動きベクトルを生成することと、
前記第２の精緻化が実行されると、前記精緻化動きベクトルを用いて前記エンコード対象のブロックをエンコードすることと
を有し、
前記エンコード方法は、少なくとも、前記バイリニア補間を用いて生成された前記第２の画素値群以外の画素値が前記第２の精緻化に必要となる場合は、前記第２の画素値群以外の画素値を使用しないように、前記第２の精緻化を抑制することを更に含むことを特徴とする。
本発明の第１の態様が提供する、画素のブロックに分割されたフレームで構成されるビデオデータをデコードする方法は、画素のブロックについて、
デコーダ側の動きベクトル導出方法によって動き情報が得られる符号化モードを使用して動きベクトル予測子の動きベクトルリストを導出することと、
ここで、前記導出は、動きベクトルの可能な位置を定義するテンプレートに基づくものである；
ここで、画素のブロックのサイズが、４×４、４×８、または８×４画素の場合、画素単位のテンプレートサイズは画素単位のブロックサイズ以下である、
を含むことを特徴とする。
【０００８】
実施形態では、前記テンプレートは、前記ブロックの左に位置する、前記画素のブロックと同じサイズを有する画素のブロックによって構成される。
【０００９】
実施形態では、前記テンプレートは、前記ブロックの上に位置する、前記画素のブロックと同じサイズを有する画素のブロックによって構成される。
【００１０】
本発明の他の態様が提供する、画素のブロックに分割されたフレームで構成されるビデオデータをデコードする方法は、画素のブロックについて、
デコーダ側の動きベクトル導出方法によって動き情報が得られるモードを使用して動きベクトル予測子の動きベクトルリストを導出することと、
ここで、前記導出は、動きベクトルの可能な位置を定義するテンプレートに基づくものである；
前記方法は更に、
前記リスト内のいくつかの動きベクトルを除去して、動きベクトルの数を所定の数に制限すること
を含むことを特徴とする。
【００１１】
実施形態では、前記除去される動きベクトルは、前記リスト内の第１の動きベクトルである。
【００１２】
実施形態では、前記除去される動きベクトルは、前記リスト内の最後のものである。
【００１３】
実施形態では、前記動きベクトルリストは、３の所定の数に制限される。
【００１４】
本発明の他の態様が提供する、各々が画素のブロックに分割されるフレームで構成されるビデオデータを復号する方法は、画素のブロックについて
デコーダ側の動きベクトル導出方法によって動き情報が得られるモードを使用して動きベクトル予測子の動きベクトルリストを導出することと、
ここで、前記導出は動きベクトルの可能な位置を定義するテンプレートに基づくものである；
ブロックレベルで候補の第１のリストを導出し、サブブロックレベルで候補の第２のリストを導出することとを含む動きベクトルリストの導出と、
動きベクトルマージ候補の評価、ＡＴＭＶＰ動きベクトル候補の評価、片側予測子の評価、および、隣接予測子の評価を含む候補の前記第１のリストの導出と、
ここで、片側予測子は、動きベクトルマージ候補の評価の前に最初に評価される
を含むことを特徴とする。
【００１５】
本発明の他の態様が提供する、各々が画素のブロックに分割されるフレームで構成されるビデオデータを復号する方法は、画素のブロックについて
デコーダ側の動きベクトル導出方法によって動き情報が得られるモードを使用して動きベクトル予測子の動きベクトルリストを導出することと、
ここで、前記導出は、動きベクトルの可能な位置を定義するテンプレートに基づくものである；
ブロックレベルで候補の第１のリストを導出することと、サブブロックレベルで候補の第２のリストを導出することとを含む、動きベクトル・リストの導出と、
ＡＴＭＶＰ候補の評価およびスケーリングされた時間的予測因子の評価を含む候補の前記第１のリストの導出と、
ここで、ＡＴＭＶＰ候補の評価は、スケーリングされた時間的予測子の評価の前に行われる；
を含むことを特徴とする。
【００１６】
本発明の他の態様が提供する、各々が画素のブロックに分割されるフレームで構成されるビデオデータを復号する方法は、画素のブロックについて
デコーダ側の動きベクトル導出方法によって動き情報が得られるモードを使用して動きベクトル予測子の動きベクトルリストを導出することと、
ここで、前記導出は、動きベクトルの可能な位置を定義するテンプレートに基づくものである；
左、上、右上、右下および左上の画素のブロックからの予測子を含む空間予測子の評価、ＡＴＭＶＰ予測子の評価、および時間予測子の評価を含む候補の動きベクトルリストの導出と、
ここで、左空間予測子の評価は、左上空間予測子の評価の後に行われる；
を含むことを特徴とする。
【００１７】
本発明の他の態様が提供する、各々が画素のブロックに分割されるフレームで構成されるビデオデータを復号する方法は、画素のブロックについて
デコーダ側の動きベクトル導出方法によって動き情報が得られる符号化モードを使用して動きベクトル予測子の動きベクトルリストを導出することと、
ここで、前記導出は、動きベクトルの可能な位置を定義するテンプレートに基づくものである;
左、上、右上、右下および左上の画素のブロックからの予測子を含む空間予測子の評価、ＡＴＭＶＰ予測子の評価、および時間予測子の評価を含む候補の動きベクトルリストの導出と、
ここで、ＡＴＭＶＰ予測子の評価は、前記空間予測子の評価の前の最初に行われる；
を含むことを特徴とする。
【００１８】
本発明の他の態様が提供する、各々が画素のブロックに分割されるフレームで構成されるビデオデータを復号する方法は、画素のブロックについて、
デコーダ側の動きベクトル導出方法によって動き情報が得られるモードを使用して動きベクトル予測子の動きベクトルリストを導出することと、
ここで前記導出は、動きベクトルの可能な位置を定義するテンプレートに基づくものである；
左、上、右上、右下および左上の画素のブロックからの予測子を含む空間予測子の評価、ＡＴＭＶＰ予測子の評価、および時間予測子の評価を含む候補の動きベクトルリストの導出と、
予測子の評価は、以下の順序で行われる、
最初に左上の空間予測子、次にＡＴＭＶＰ予測子、次に左下の空間予測子、次に右上の空間予測子、次に上の空間予測子、次に左の空間予測子、次に時間予測子である；
を含むことを特徴とする。
【００１９】
本発明の他の態様が提供する、各々が画素のブロックに分割されるフレームで構成されるビデオデータを復号する方法は、画素のブロックについて
デコーダ側の動きベクトル導出方法によって動き情報が得られるモードを使用して動きベクトル予測子の動きベクトルリストを導出することと、
ここで、前記導出は、動きベクトルの可能な位置を定義するテンプレートに基づくものである；
ブロックレベルで候補の第１のリストを導出することと、サブブロックレベルで候補の第２のリストを導出するステップとを含む動きベクトルリストの導出と、
ここで、候補の第２のリストは、ブロックのサイズが４×４、４×８、または８×３画素であるとき、前記第１のリスト内の最良の候補のみを含む；
を含むことを特徴とする。
【００２０】
実施形態では、前記最良の候補は、レート歪みコストを最小化する候補である。
【００２１】
本発明の他の態様が提供する、各々が画素のブロックに分割されるフレームで構成されるビデオデータを復号する方法は、画素のブロックについて、
デコーダ側の動きベクトル導出方法によって動き情報が得られるモードを使用して動きベクトル予測子の動きベクトルリストを導出することと、
ここで、前記導出は、動きベクトルの可能な位置を定義するテンプレートに基づくものである；
前記リスト内の動きベクトル予測子を評価して、最良の候補を得ることと、
前記最良の候補に基づいてサブ画素解像度で精緻化ベクトル予測子を評価することと、
ここで、前記精緻化ベクトル予測子の評価は、前記最良の候補のテンプレートにおいて画素値を使用するように制限する；
を含むことを特徴とする。
【００２２】
実施形態では、前記最良の候補は、レート歪みコストを最小化する候補である。
【００２３】
本発明の他の態様が提供する、プログラマブル装置のためのコンピュータプログラム製品であって、前記コンピュータプログラム製品は、前記プログラマブル装置にロードされ、前記プログラマブル装置によって実行されるときに、本発明による方法を実施するための一連の命令を含むことを特徴とするコンピュータプログラム製品。
【００２４】
本発明の他の態様は、本発明による方法を実施するためのコンピュータプログラムの命令を記憶するコンピュータ可読記憶媒体を提供する。
【００２５】
本発明による方法の少なくとも一部は、コンピュータで実施することができる。したがって、本発明は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、または本明細書ではすべて一般に“回路”、“モジュール”、もしくは“システム”と呼ばれることがあるソフトウェアおよびハードウェアの態様を組み合わせた実施形態の形態をとることができる。さらに、本発明は、媒体に具現化されるコンピュータ利用可能なプログラムコードを有する任意の有形の表現媒体に具現化されたコンピュータプログラム製品の形成をとることができる。
【００２６】
本発明はソフトウェアにて実施できるので、本発明は、任意の適切なキャリア媒体上のプログラマブル装置に提供するためのコンピュータ可読コードとして実施することができる。有形の非一時的キャリア媒体は、フロッピー(登録商標)ディスク、ＣＤ−ＲＯＭ、ハードディスクドライブ、磁気テープ装置、またはソリッドステートメモリデバイスなどの記憶媒体を含むことができる。一時的なキャリア媒体は、電気信号、電子信号、光信号、音響信号、磁気信号、または電磁信号、例えばマイクロ波またはＲＦ信号などの信号を含むことができる。
【００２７】
本発明の実施形態が、単なる例として、以下の図面を参照して説明される。
【図面の簡単な説明】
【００２８】
【図１】ＨＥＶＣエンコーダアーキテクチャを示す図。
【図２】デコーダの原理を示す図。
【図３】マージモードの動きベクトル導出プロセスのフローチャート。
【図４】マージ候補のリストの生成プロセスにおける新しいＡＴＭＶＰモーション候補の包含を示す図。
【図５】ＦＲＵＣマージモードにおけるテンプレートマッチングおよびバイラテラルマッチングを示す図。
【図６】ＦＲＵＣマージ情報の復号を示す図。
【図７】マージモードおよびマージＦＲＵＣモードのエンコーダ評価を示す図。
【図８】ＪＥＭの符号化単位およびサブ符号化単位レベルにおけるマージＦＲＵＣモード導出を示す図。
【図９】符号化単位レベルに対する動きベクトルリスト導出を示す図。
【図１０】サブ符号化単位レベルのための動きベクトル・リスト導出を示す図。
【図１１】ＪＥＭテンプレートマッチング方法のための現ブロックの周辺のテンプレートを示す図。
【図１２】画素の１／４ペルグリッド内の１つのブロックに対するメモリアクセスを示す図。
【図１３】動きベクトル精緻化を示す図。
【図１４】画素の１／４画素グリッドにおける動きベクトル精緻化に使用される画素を示す図。
【図１５】本発明の一実施形態で使用される例示的なテンプレートを示す図。
【図１６】本発明の一実施形態における動きベクトルリストの刈り込み処理を示す図。
【図１７】本発明の一実施形態における符号化単位レベルの動きベクトルリスト導出を示す図。
【図１８】本発明の一実施形態におけるサブ符号化単位レベルのための動きベクトルリスト導出を示す図。
【図１９】本発明の一実施形態におけるマージモード候補の導出を示す図。
【図２０】本発明の一実施形態におけるマージモード候補の導出を示す図。
【図２１】本発明の一実施形態における、符号化単位およびサブ符号化単位レベルでのマージＦＲＵＣモード導出を示す図。
【図２２】本発明の一実施形態のための画素のグリッドにおける動きベクトル精緻化のために使用される画素を示す図。
【図２３】本発明の一実施形態に関する図２２の例と比較して、1/4ピクセル解像度のグリッドにおける動きベクトル精緻化に使用される画素を示す図。
【図２４】本発明の１以上の実施形態を実施するためのコンピューティングデバイスの概略ブロック図である。
【発明を実施するための形態】
【００２９】
図１は、ＨＥＶＣエンコーダアーキテクチャを示す。ビデオエンコーダでは、オリジナルシーケンス１０１が、符号化単位(coding unit)と呼ばれる、画素のブロック１０２に分割される。次に、符号化モードが各ブロックに影響を及ぼされる。ＨＥＶＣで典型的に使用される符号化モードには、空間予測に基づくモード、すなわちＩＮＴＲＡモード１０３と、時間予測に基づくモード、すなわち、動き推定１０４および動き補償１０５に基づくＩＮＴＥＲモードの２つのファミリがある。ＩＮＴＲＡ符号化単位は、一般に、ＩＮＴＲＡ予測と呼ばれるプロセスによって、その因果境界における符号化された画素から予測される。
【００３０】
時間的予測は最初に、動き推定ステップ１０４において、符号化単位に最も近い参照領域を参照フレーム１１６と呼ばれる、以前のまたは将来のフレームにおいて見つけることからなる。この参照領域は、予測ブロックを構成する。次に、この符号化単位は、予測ブロックを使用して予測され、動き補償ステップ１０５において残差を計算される。
【００３１】
空間的および時間的予測の両方の場合において、残差は、オリジナルの予測子ブロックから符号化単位を減算することによって計算される。
【００３２】
ＩＮＴＲＡ予測では、予測方向が符号化される。時間予測では、少なくとも１つの動きベクトルが符号化される。しかしながら、動きベクトル符号化に関連するビットレートコストをさらに低減するために、動きベクトルは直接符号化されない。実際、動きが均一であると仮定すると、動きベクトルを、この動きベクトルとその周囲の動きベクトルとの間の差としてエンコードすることは特に興味深い。例えば、Ｈ．２６４／ＡＶＣ符号化規格では、動きベクトルが現在のブロックの上および左に位置する３つのブロック間で計算された中央ベクトル(median vector)に関して符号化される。中央ベクトルと現在のブロック動きベクトルとの間で計算された差分(残差動きベクトルとも呼ばれる)のみが、ビットストリームに符号化される。これは、モジュール“Ｍｖ予測および符号化”１１７で処理される。各符号化ベクトルの値は、動きベクトルフィールド１１８に記憶される。予測に使用される隣接する動きベクトルは、動きベクトルフィールド１１８から抽出される。
【００３３】
次に、モジュール１０６において、レート歪み性能を最適化するモードが選択される。冗長性をさらに低減するために、モジュール１０７内にて、変換、典型的にはＤＣＴが残差ブロックに適用され、そして、モジュール１０８にて量子化がその係数に適用される。次に、量子化された係数ブロックは、モジュール１０９において、エントロピー符号化され、その結果がビットストリーム１１０に挿入される。
【００３４】
次に、エンコーダはモジュール１１１〜１１６において、将来の動き推定のために、符号化されたフレームのデコードを実行する。これらのステップは、エンコーダおよびデコーダが同じ参照フレームを有することを可能にする。符号化されたフレームを再構成するため、モジュール１１１にて残差は逆量子化され、モジュール１１２において逆変換されて、ピクセル領域において“再構成された(reconstructed)”残差を提供する。符号化モード(ＩＮＴＥＲまたはＩＮＴＲＡ)に従って、この残差はＩＮＴＥＲ予測器１１４又はＩＮＴＲＡ予測器１１３に加えられる。
【００３５】
次に、この第１の再構成は、モジュール１１５において、１つまたは複数の種類のポストフィルタリングによってフィルタリングされる。これらのポストフィルタは、符号化及び復号されるループに統合される。エンコーダおよびデコーダ側で同じ参照フレームを使用するために、それらをエンコーダおよびデコーダ側で再構成されたフレームに適用する必要があることを意味する。このポストフィルタリングの目的は、圧縮アーチファクトを除去することである。
【００３６】
図２には、デコーダの原理が示されている。ビデオストリーム２０１は、まずモジュール２０２においてエントロピー復号される。次に、残差データは、モジュール２０３において逆量子化され、モジュール２０４において逆変換されて、画素値が得られる。モードデータは、また、モードの機能としてエントロピー復号され、ＩＮＴＲＡAタイプ復号またはＩＮＴＥＲタイプ復号が実行される。ＩＮＴＲＡモードの場合は、ビットストリーム２０５にて特定されるＩＮＴＲＡ予測モードの機能としてＩＮＴＲＡ予測子が決定される。モードがＩＮＴＥＲの場合は、動き情報がビットストリーム２０２から抽出される。これは、参照フレームインデックスと動きベクトル残差とから構成される。動きベクトル予測子は、動きベクトル２１０を得るため、動きベクトル残差に加えられる。次に、動きベクトルを使用して、参照フレーム２０６内の参照領域の位置が突き止められる。なお、動きベクトルフィールドデータ２１１は、次に復号される動きベクトルの予測に用いるために、復号された動きベクトルで更新される。デコードされたフレームのこの第１の再構成は、エンコーダ側で使用されるのと全く同じポストフィルタでポストフィルタリング２０７される。デコーダの出力は、圧縮解除されたビデオ２０９となる。
【００３７】
ＨＥＶＣ規格は３つの異なるＩＮＴＥＲモード、すなわち、インターモード、マージモード(Merge mode)、およびマージスキップモード(Merge Skip mode)を使用する。これらのモード間の主な違いは、ビットストリームにおけるデータシグナリングである。動きベクトル符号化の場合、現在のＨＥＶＣ規格は、その先行技術と比較して、動きベクトル予測のための競合ベースのスキームを含む。インターモードまたはマージモードのそれぞれについて最良の動きベクトル予測子または最良の動き情報を見つけるために、いくつかの候補が符号器側で率歪み基準と競合していることを意味する。最良の予測子または動き情報の最良の候補に対応するインデックスが、ビットストリームに挿入される。デコーダは予測子または候補の同じセットを導出することができ、デコードされたインデックスに従って最良のものを使用することになる。
【００３８】
予測子および候補の導出の設計は、複雑さに大きな影響を与えることなく最良の符号化効率を達成するために非常に重要である。ＨＥＶＣでは、２つの動きベクトル導出が使用される。１つはインターモード(Advanced Motion Vector Prediction(ＡＭＶＰ))のためのものであり、１つはマージモード(Merge derivation process)のためのものである。
【００３９】
既に述べたように、マージモードの候補(“古典的(classical)”またはスキップ)は、方向、リスト、参照フレーム・インデックス、および動きベクトルの全て動き情報を表す。いくつかの候補が、以下に記載されるマージ導出プロセスによって生成され、それぞれがインデックスを有する。現在のＨＥＶＣ設計では、両方のマージモードの最大候補は５に等しい。
【００４０】
図３は、マージモードの動きベクトル導出プロセスのフローチャートである。導出の第１のステップでは、７つのブロック位置３０１〜３０７が考慮される。モジュール３０８は、空間動きベクトルの利用可能性をチェックし、最大５つの動きベクトルを選択する。このモジュールでは、予測子が存在する場合、およびこのブロックがイントラ符号化されていない場合、予測子が利用可能である。これら５つの動きベクトルの選択およびチェックは、以下の条件で説明される。
【００４１】
“左”Ａ１動きベクトル３０１が利用可能であり、それが存在し、それがイントラ符号化されていないことを意味する場合、“左”ブロックの動きベクトルが選択され、空間候補のリスト３１０内の第１の候補として使用される。Ａ１動きベクトルは、現在の符号化単位のすぐ左側のブロックの動きベクトルである。
【００４２】
“上”Ｂ１動きベクトル３０２が利用可能である場合、“上”ブロックの候補動きベクトルは、それが存在する場合、刈り込み(pruning)モジュール３０９にて、Ａ１と比較される。Ｂ１がＡ１に等しい場合、Ｂ１は空間候補のリスト３１０に追加されず、そうでない場合、Ｂ１は追加される。Ｂ１動きベクトルは、現在の符号化単位の直上のブロックの動きベクトルである。刈り込みモジュール３０９によって適用される一般的な原理は、以前に選択された候補に対して任意の新しい候補をチェックし、以前に選択された候補と同じ値を有する新しい候補の選択を防止することである。
【００４３】
“右上”Ｂ０動きベクトル３０３が利用可能であり、リスト内でまだ選択されていない場合、それも空間候補リスト３１０に追加される。Ｂ０動きベクトルは、現在の符号化単位の上のブロックのすぐ左側のブロックの動きベクトルである。
【００４４】
“左下”Ａ０動きベクトル３０４が利用可能であり(３０８)、リスト内でまだ選択されていない場合、それも空間候補リスト３１０に追加される。Ａ０動きベクトルは、現在の符号化単位の左側のブロックの直下のブロックの動きベクトルである。
【００４５】
空間候補リスト３１０がこの段階で４つの候補を含まない場合、“左上”Ｂ２動きベクトル３０５の可用性がテストされ、それが利用可能であり、リスト内でまだ選択されていない場合は、それも空間候補リスト３１０に追加される。Ｂ２動きベクトルは、現在の符号化単位の左側のブロックの直上のブロックの動きベクトルである。
【００４６】
この段階の終わりに、空間候補リスト３１０は、０から４までの空間候補を含むことになる。
【００４７】
時間的候補については、２つの位置が使用できる。Ｈ３０６で参照される位置は、一緒に並んだ（collocated)ブロックの右下の位置に対応し、中心３０７で参照される位置は一緒に並んだブロックに対応する。Collocatedは、時間フレームにおける同じ位置のブロックを意味する。これらの位置が図３に示さる。
【００４８】
ＡＭＶＰとして、まず、Ｈ位置３０６におけるブロックの利用可能性がモジュール３１１によってチェックされる。利用可能でない場合、中心位置３０７のブロックがモジュール３１１によってチェックされる。これらの位置の少なくとも１つの動きベクトルが利用可能である場合、この時間動きベクトルは、必要であれば、空間候補の直後にマージ候補リストに挿入される時間候補３１３を作成するために、必要であれば、リストＬ０およびＬ１の両方について、スケールモジュール３１２によって、インデックス０を有する参照フレームにスケーリングすることができる。
【００４９】
候補の数（Ｎｂ_Ｃａｎｄ)が、ステップ３１４のテストにて、候補の最大数(Ｍａｘ_Ｃａｎｄ)よりも厳密に劣っている場合、結合候補は、モジュール３１５によって生成され、そうでない場合はマージ候補の最終リスト３１８が構築される。モジュール３１５は、Ｂフレームのための現在のフレームの場合にのみ使用され、現在のマージリスト内の利用可能な候補に基づいて、いくつかの候補を生成する。この生成は、１つの候補からのリストＬ０の動きベクトルを２番目の動きベクトル候補のリストＬ１の動きベクトルと結合することにある。
【００５０】
候補の数（Ｎｂ_Ｃａｎｄ）が、ステップ３１６のテストにて、依然として候補の最大数(Ｍａｘ_Ｃａｎｄ)より厳密に劣っている場合、候補のマージリスト３１８内の候補の最大数に達するように、モジュール３１７にて、ゼロ動き候補が生成される。
【００５１】
このプロセスの最後にて、マージ候補３１８の最終リストが構築され、Ｍａｘ_Ｃａｎｄ個の候補を含む。
【００５２】
マージモードは、予測単位(prediction unit:ＰＵ)に対応する画素のブロックに適用される。さらに、(インターモードにおけるような)マージモードにおける予測単位は、符号化単位サイズ(２Ｎ×２Ｎ)に等しくすることができる。さらに、マージスキップ予測単位は常にサイズ２Ｎ×２Ｎを有する。この場合、予測単位は符号化単位に等しい。マージモード予測単位の場合、エンコーダ側で、１つの候補が選択され、そのインデックスがビットストリームに挿入される。ＨＥＶＣでは、このインデックスは、第１のビットのみがＣＡＢＡＣコンテキストに依存する、単項最大コード（unary max code）で符号化される(ＣＡＢＡＣはエントロピー符号化方法である“コンテキスト適応２進算術符号化（Context-Adaptive Binary Arithmetic Coding）”を表す)。この第１のビットは、確率に従って２値化されることを意味する。他のビットは、等確率で２値化される。この単項maxの最大値は、スライスヘッダ内の送信値に依存する。しかし、この最大値は５を超えることはできない。単項コード（unary code）は、より大きい数の場合よりも、より小さい数の場合に、より少ないビットとなる。
【００５３】
ＨＥＶＣ規格を定義した標準化グループＩＴＵ−Ｔ ＶＣＥＧ(Q6/16)とＩＳＯ／ＩＥＣ ＭＰＥＧ(JTC 1/SC 29/WG 1 1)の両方は、Ｊｏｉｎｔ  Ｖｉｄｅｏ  Ｅｘｐｌｏｒａｔｉｏｎ  Ｔｅａｍ（JVET）として知られる共同コラボレーションとして、ＨＥＶＣの後継向けの将来のビデオコーディングテクノロジーを研究している。ＪＥＭ(Joint Exploration Model)は、ＨＥＶＣツールと、このＪＶＥＴグループによって選択された新しい追加ツールとを含む。特に、このソフトウェアは、動き情報を効率的に符号化するために、デコーダ側アルゴリズムにおいて動き情報導出を含む。追加ツールのリストは、ＪＶＥＴ−Ｆ１００１として参照される文書に記載されている。
【００５４】
符号化効率を高めるために、図３に示す候補の古典的なマージモード導出に、追加の候補が追加された。主な変更は、Ａｄｖａｎｃｅｄ  Ｔｅｍｐｏｒａｌ  Ｍｏｔｉｏｎ  Ｖｅｃｔｏｒ  Ｐｒｅｄｉｃｔｉｏｎ（ＡＴＭＶＰ）予測子を含めることである。Ａｄｖａｎｃｅｄ  Ｔｅｍｐｏｒａｌ  Ｍｏｔｉｏｎ  Ｖｅｃｔｏｒ  Ｐｒｅｄｉｃｔｉｏｎ法は、各符号化単位が、一緒に並んだ（collocated）参照ピクチャにおける現在の符号化単位よりも小さい複数のブロックから複数の組の動き情報をフェッチすることを可能にする。空間-時間動きベクトル予測(ＳＴＭＶＰ)法では、サブ符号化単位(sub-coding unit)の動きベクトルが、時間動きベクトル予測子および空間隣接動きベクトルを使用することによって再帰的に導出される。さらなる詳細は、文献ＪＶＥＴ−Ｆ１００１に見出すことができる。
【００５５】
図４は、図３に示されたマージ候補のリストの生成プロセスにおける、新しいＡＴＭＶＰモーション候補の包含を示している。以下では、その差のみを記載する。ＡＴＭＶＰ候補には、ステップ４１９で生成された予測単位レベル候補４２０と、ステップ４２１で生成されたサブ符号化単位レベル候補４２２の２種類がある。両タイプの候補４２０および４２２は、空間予測子(spatial predictors)４２３のリストに追加される。左上の空間候補４０５は、それが存在し、他の空間候補と比較して重複候補でない場合、リストの最後に追加される。次に、古典的時間予測子がこのリストに追加され、リスト内の候補の数がその最大値に達していない場合にはマージモードの古典的導出が処理される。さらに、マージモードの候補の最大数(Ｍａｘ_Ｃａｎｄ)は、ＨＥＶＣ規格と比較して、ＪＥＭと呼ばれる例示的な実装では５から７に増加されている。
【００５６】
デコーダ側での動きベクトル導出は、文書ＪＶＥＴ-Ｆ１００１ではパターン一致動きベクトル導出(Pattern matched motion vector derivation:ＰＭＭＶＤ)として示されている。ＪＥＭにおけるＰＭＭＶＤモードは、フレームレートアップコンバージョン(ＦＲＵＣ)技術に基づく特別なマージモードである。このモードでは、ブロックの動き情報はシグナリングされず、デコーダ側で導出される。
【００５７】
ＪＥＭの現在のバージョンでは、テンプレートマッチングとバイラテラルマッチングの２つのタイプの検索が可能である。図５は、これら２つの方法を示している。バイラテラルマッチング５０１の原理は、現在の符号化単位の動き軌跡に沿った２つのブロック間の最良のマッチングを見つけることである。
【００５８】
テンプレートマッチング５０２の原理は、現在のブロックの周りの再構成された画素と、評価された動きベクトルによって指し示されるブロックの周りの隣接する画素との間のマッチングコストを計算することによって、現在の符号化単位の動き情報を導出することである。テンプレートは、現在のブロックの周りの隣接画素のパターン、および予測ブロックの周りの隣接画素の対応するパターンに対応する。
【００５９】
両マッチングタイプ(テンプレートまたはバイラテラル)について、計算された異なるマッチングコストが比較されて、最良のマッチングコストが見つけられる。最良の一致を得る動きベクトルまたは動きベクトルの対が、導出された動き情報として選択される。さらなる詳細は、ＪＶＥＴ-Ｆ１００１に見出すことができる。
【００６０】
両マッチング方法は、動き情報全体、動きベクトル、参照フレーム、予測のタイプを導出する可能性を提供する。ＪＥＭにおいて“ＦＲＵＣ”と記されている、デコーダ側における動き情報導出は、全てのＨＥＶＣインターモード、すなわちＡＭＶＰ、マージ及びマージスキップに対して適用される。
【００６１】
ＡＭＶＰの場合、すべての動き情報、すなわち、uniまたはbi予測、参照フレームインデックス、予測子インデックス動きベクトル、および残差動きベクトルがシグナリングされ、ＦＲＵＣ法が適用されて、予測子のリストである場合、第１の予測子に設定される新しい予測子が決定される。従って、それはインデックス０を有する。
【００６２】
マージおよびマージスキップモードの場合、ＦＲＵＣフラグがＣＵに対してシグナリングされる。ＦＲＵＣが偽である場合、マージインデックスがシグナリングされ、通常のマージモードが使用される。ＦＲＵＣフラグが真であるとき、追加のＦＲＵＣモードフラグは、どの方法(双方向マッチングまたはテンプレートマッチング)がブロックの動き情報を導出するために使用されるべきかを示すためにシグナリングされる。なお、バイラテラルマッチングは、Ｂフレームのみに適用され、Ｐフレームには適用されない。
【００６３】
マージおよびマージスキップモードの場合、動きベクトルフィールドが、現在のブロックに対して定義される。これは、ベクトルが、現符号化単位よりも小さいサブ符号化単位に対して定義されることを意味する。さらに、古典的なマージに関しては、各リストに対する１つの動きベクトルがブロックに対する動き情報を形成することができる。
【００６４】
図６は、ブロックのマージモードのためのＦＲＵＣフラグのシグナリングを示すフローチャートである。ブロックは、ＨＥＶＣ表現による符号化単位または予測単位とすることができる。
【００６５】
第１のステップ６０１にて、符号化単位がスキップモードに従って符号化されているかどうかを知るために、スキップフラグが復号される。ステップ６０２のテストで、このフラグが偽であった場合、マージフラグがステップ６０３にて復号され、ステップ６０５にてテストされる。符号化単位がスキップまたはマージモードに従って符号化されいるとき、マージＦＲＵＣフラグがステップ９０４にて復号される。符号化単位がスキップまたはマージモードに従って符号化されていない場合、ステップ６０６において、古典的なＡＭＶＰインターモードのイントラ予測情報が復号される。ステップ６０７でのテストで、現在の符号化単位のＦＲＵＣフラグが真であり、現在のスライスがＢスライスである場合、マッチングモードフラグがステップ６０８で復号される。なお、ＦＲＵＣにおけるバイラテラルマッチングは、Ｂスライスに対してのみ利用可能であることに留意されたい。スライスがＢスライスでなく、ＦＲＵＣが選択されている場合、モードは必然的にテンプレートマッチングであり、マッチングモードフラグは存在しない。符号化単位がＦＲＵＣでない場合、ステップ６０９にて、古典的マージインデックスが復号される。
【００６６】
ＦＲＵＣマージモードは、エンコーダ側にて、古典的マージモード(および他の可能なマージ)と競合する。図７は、ＪＥＭにおける現在の符号化モード評価方法を示す。まず、ステップ７０１において、ＨＥＶＣの古典的マージモードが評価される。候補リストは最初に、ステップ７０２において、元のブロックとリストの各候補との間の単純なＳＡＤ(絶対差の和)で評価される。次に、ステップ７０４〜７０８によって示される、制限された候補のリストの各候補の実レート歪み(rate distortion:ＲＤ)コストが評価される。その評価では、ステップ７０５でのレート歪みと、ステップ７０６での残差のないレート歪みとが評価される。最後に、ステップ７０９において、最良のマージ候補が決定され、この最良のマージ候補は、残差を有しても有しなくてもよい。
【００６７】
次に、ステップ７１０〜７１６において、ＦＲＵＣマージモードが評価される。ステップ７１０にて、各マッチング方法、すなわち、双方向マッチングおよびテンプレートマッチングについて、ステップ７１１において、現在のブロックの動きベクトルフィールドが得られ、ステップ７１２および７１３において、残差の有る場合と無い場合のフルレート歪みコスト評価が計算される。残差の有無にかかわらず、最良の動きベクトル７１６が、ステップ７１５において、これらのレート歪みコストに基づいて決定される。最後に、古典的マージモードとＦＲＵＣマージモードとの間の最良のモードが、他のモードの可能な評価の前に、ステップ７１７において決定される。
【００６８】
図８は、エンコーダ側でのＦＲＵＣマージ評価方法を示す。ステップ８０１にて、各マッチングタイプ、すなわちテンプレートマッチングタイプおよびバイラテラルタイプについて、モジュール８１により符号化単位レベルが評価され、続いてモジュール８２によってサブ符号化単位レベルが評価される。目標は、現在の符号化単位８０３内の各サブ符号化単位の動き情報を見つけることである。
【００６９】
モジュール８１は、符号化単位レベル評価を処理する。ステップ８１１において、動き情報のリストが導出される。ステップ８１２において、このリストの各動き情報について、歪みコストが計算され、互いに比較される。テンプレートの最良の動きベクトル、またはバイラテラル８１３のための最良の組はコストを最小化するものである。次に、動きベクトル精緻化（refinement）ステップ８１４が適用され、得られた動きベクトルの精度を改善する。ＦＲＵＣ法では、テンプレートマッチング推定のために、古典的離散コサイン変換補間フィルタ(ＤＣＴＩＦ)補間フィルタの代わりにバイリニア補間が使用される。これにより、従来のＤＣＴＩＦのブロック周辺の７画素ではなく、ブロック周辺のメモリアクセスが１画素に削減されます。実際、バイリニア補間フィルタは、一方向のサブ画素値を得るために２画素のみしか必要としない。
【００７０】
動きベクトル精緻化の後、ステップ８１５において、現在の符号化単位のためのより良好な動きベクトルが得られる。この動きベクトルは、サブ符号化単位レベル評価に使用される。
【００７１】
ステップ８０２にて、現在の符号化単位は、いくつかのサブ符号化単位に再分割される。サブ符号化単位は、４分木構造における符号化単位の分割深さに依存する正方形ブロックである。その最小サイズは４×４である。
【００７２】
各サブＣＵ（サブ符号化単位）について、サブＣＵレベル評価モジュール８２は、最良の動きベクトルを評価する。ステップ８２１において、ステップ８１５においてＣＵレベルで得られた最良の動きベクトルを含む動きベクトルリストが導出される。ステップ８２２にて、各動きベクトルに対する歪みコストが評価される。しかし、そのコストは動きベクトルフィールドの発散を回避するため、符号化単位レベルで得られた最良の動きベクトルと現在の動きベクトルとの間の距離を表すコストも含む。最良の動きベクトル８２３は、最小コストに基づいて得られる。次に、このベクトル８２３は、ステップ８１４でＣＵレベルで行われたのと同じ方法で、ＭＶ精緻化処理８２４により精緻化される。
【００７３】
プロセスの終わりで、１つのマッチングタイプについて、各サブＣＵについての動き情報が得られる。エンコーダ側では、両方のマッチングタイプ間の最良のＲＤコストが比較され、最良のものが選択される。デコーダ側では、この情報はビットストリームからデコードされる（図６のステップ６０８）。
【００７４】
ＦＲＵＣマージモードまたはＡＭＶＰについて、動きベクトルのリストは、サブ符号化単位レベルのためのリストと、符号化単位レベルとで異なる。図９は、図８の符号化単位レベルステップ８１１の動きベクトル導出プロセスを示す。
【００７５】
このプロセスは、各リストＬ０またはＬ１に対して独立して実施することができる。プロセスは、参照フレームのインデックス９０１と、符号化モードがＡＭＶＰであるかどうかを示すフラグ９０２に対応するいくつかの入力を受け取る。次に、テストステップ９０３において、現在のモードがＡＶＭＶＰまたはマージモードであるかどうかがチェックされる。それがＡＭＶＰである場合、ステップ９０４において、ＡＭＶＰ予測子がリストに追加される。これらの予測子は、ＡＭＶＰ処理で得られた左、上、および時間的予測子である。このステップは、リスト内に最大３つの予測子を追加することになる。
【００７６】
次に、ステップ９０５において、動きベクトルマージ候補が生成される。これらの候補は、ステップ９０６で追加されたＡＴＭＶＰ候補を除いて、ＦＲＵＣのリストに追加される。これらのステップにより、７つまでの新しい予測子を追加することができる。
【００７７】
次に、ステップ９０７において、片側予測子（unilateral predictors）がリストに追加される。片側予測子は、各参照フレームに対する４×４ブロックレベルでの動き補間に基づいて生成される。さらなる詳細は、ＪＶＥＴ-Ｆ１００１に見出すことができる。このプロセスは、４×４ブロックレベルで補間されたすべての動きの中で、いくつかの予測子しか必要としない。ブロックの高さ(Ｈ)または幅(Ｗ)が４より大きい場合、２つの予測子を追加することができる。したがって、ＨおよびＷの両方が４より大きいサイズＨ×Ｗのブロックについては、２×２＝４個の予測子を追加することができる。Ｈが４に等しく、Ｗが４より大きい場合、予測子の数は１×２=２個の予測子である。４×４ブロックの場合は、１つの予測子のみが追加される。
【００７８】
最終的に、ステップ９０８にて、いくつかの隣接する予測子が追加される。そして、さらに、最大２つの予測子が追加される。
【００７９】
リストに追加された各予測子について、この予測子が重複予測子ではないことがチェックされる。その結果、リスト９０９は、異なる値を有する予測子のみを含むことになる。
【００８０】
プロセスの終了でのリスト９０９内の予測子の最大数は、以下の表に要約される。
【００８１】
【表１】
0006945654.tif 000002
【００８２】
図１０は、図８のステップ８２１に対応するＦＲＵＣのサブ符号化単位レベルの動きベクトルリスト構成を示している。この処理は、リストＬ０およびＬ１ごとに実行される。
【００８３】
まず、ステップ１００２において、符号化単位レベルで得られた最良の動きベクトル１０１を、リストの最初の位置に追加する。
【００８４】
２度目に、ステップ１００４のように、いくつかの隣接する動きベクトルが、参照フレームの同じインデックス、及び、同じリストＬ０またはＬ１とを有する場合、いくつかの隣接する動きベクトルが追加される。このプロセスでは、最大４つの動きベクトルが加算される。このステップは、符号化単位レベルでの最良の動きベクトルに対応する参照フレームのインデックス１００３を必要とする。
【００８５】
次に、ステップ１００５にて、リストの各参照フレームからのすべての時間動きベクトルが、符号化単位レベルで得られた最良の動きベクトルの参照フレームにスケーリングされ、リストに追加される。リストが１６個の参照フレームを含むことができると考える場合、１６個の追加の予測子がこのリストに追加できることになる。
【００８６】
最終的には、ステップ１００６において、ＡＴＭＰ予測子がリストに追加できる。２つのタイプのＡＴＭＶＰ予測子が追加される。しかし、４×４サブ符号化単位については、各タイプについて１つのベクトル、すなわち２つの予測子のみが追加されるという制約が存在する。より大きなサブ符号化単位の場合、４つの予測子を追加することができる。
【００８７】
符号化単位レベルと同様に、リストに追加される各予測子は、重複予測子ではない。その結果、リスト１００７は、異なる値を有する予測子のみを含むことになる。なお、この処理はＡＭＶＰには適用されない。
【００８８】
プロセスの終了でのリスト１００７内の予測子の最大数は、以下の表に要約される。
【００８９】
【表２】
0006945654.tif 000003
【００９０】
最悪ケースの復号においては、４×４ブロックについてテストされる動きベクトルの最大数は、２つの異なるリストが存在し得るので、符号化単位レベルにおける予測子の最大数にサブ符号化単位レベルにおける予測子の最大数を加えたものに、２を乗じたものに対応する。これは、レート歪み基準に従ってテストされる同数のブロック位置に対応する最大５２個の予測子をもたらす。
【００９１】
これは、復号のために２つのブロック位置のみがアクセスされるＨＥＶＣにおけるブロックの復号と比較して非常に多い。
【００９２】
テンプレートＦＲＵＣマッチングモードの場合、テンプレートは、図１１の灰色で示されるように、レート歪みコストを推定するために使用されるブロックまで4行、その左の4列から構成される。ＦＲＵＣ動きベクトルリストの動きベクトル予測子のレート歪みを評価するために、評価された動きベクトル予測子によって参照されるブロックの対応するテンプレートにアクセスする必要がある。
【００９３】
図１２は、４×４ブロックのハードウェア実装に必要なブロックメモリアクセスのいくつかの例を示している。
【００９４】
ダイヤグラム１２１は、ＦＲＵＣテンプレートを評価するためにアクセスされる必要があるピクセルを示す。評価された動きベクトルによって参照されるブロック１２５を考慮すると、テンプレートマッチングは、グレーで示される左及び上のブロックにアクセスする必要がある。白色で示された左上のブロック内の画素もアクセスされるが、これはいくつかの実施形態では、２つのより小さいブロックメモリサイズよりも、より高いブロックメモリサイズに１回だけアクセスする方が複雑ではないからである。さらに、サブ画素位置および動きベクトル精緻化を計算解除できるようにするためには、このブロックの周りの１以上の画素(破線ピクセルとして示されている)にアクセスして、バイリニア補間の画素を生成する必要がある。したがって、４×４ブロックのベクトル位置については、動きベクトル精緻化を評価する必要があることを考慮することによって、（４＋４＋２）×（４＋４＋２）=１００画素にアクセスする必要がある。または、動きベクトルリスト推定のためのアクセスのみを考慮する場合は、（４＋４＋１）×（４＋４＋１）＝８１画素となる。したがって、現在のブロックの１つの画素当たり、評価のために、１つのベクトルにつき１００／（４×４）＝６．２５画素に対してアクセスされ(動きベクトルの精緻化も考慮する場合)、８１／（４×４）〜＝５画素が、図８のステップ８１２における動きベクトルリスト評価のために、現在のブロックの１つの画素に対してアクセスされる。
【００９５】
しかし、ダイヤグラム１２２に示されるように、実際に必要とされるより少ない数のピクセルまたはピクセルにアクセスすることが可能であり、ここでは、評価のために厳密に必要とされるピクセルのみが考慮される。しかし、これは、そのようなバッファを設計するために、非常に特殊なハードウェア実装を必要とする。
【００９６】
別の可能性は、ダイヤグラム１２３に示すように、テンプレートのみにアクセスすることである。その場合、上ブロックおよび左ブロックは、２つの別個のメモリアクセスで独立してアクセスされる。その場合、５×５×２＝５０画素が、動きベクトルリスト評価のためにアクセスされる必要がある。そして、追加の動きベクトル精緻化を考慮する場合には、６×６×２＝７２画素となる。
【００９７】
バイラテラルＦＲＵＣマッチングモードの場合、テンプレートは、動きベクトルによって参照されるブロックである。したがって、リスト内の１つのベクトル予測子について、２つのブロック位置が、図１２のダイヤグラム１２３によって示されるように考慮される。したがって、動きベクトルリスト評価のみを考慮した場合が、５×５×２＝５０画素がアクセスされる必要があり、追加の動きベクトル精緻化を考慮する場合には、６×６×２＝７２画素となる。
【００９８】
従来の動き補償における、双方向予測では、各リストの１つに対して、２つのブロックの位置にアクセスする必要がある。ＤＣＴＩＦは、バイリニアよりも長いフィルタであるので、ダイヤグラム１２４に示すように、より多くの画素にアクセスする必要がある。４×４ブロックの場合、（４＋７）×（４＋７）×２＝２４２画素が４×４ブロックに対してアクセスされる必要がある。
【００９９】
以下の表は、マッチングモードごとのＦＲＵＣマージモード、および４×４ブロックの従来のマージモードの最悪の場合の複雑さについてアクセスされるメモリに関するいくつかの数値を示す。報告されているように、ＦＲＵＣマージモードは、従来の動き補償と比較して、デコーダ側で必要とされる最悪の場合のメモリアクセスを大幅に増加させる。
【０１００】
【表３】
0006945654.tif 000004
【０１０１】
図８のステップ８１４および８２４の動きベクトル精緻化は、識別された最良の予測子(８１３または８２３)の周りの追加の探索によって、動きベクトル予測子の精度を向上させる。
【０１０２】
図１３は、この動きベクトル精緻化を示している。
【０１０３】
この方法は、リスト(８１２または８２２)内で識別された最良の動きベクトル予測子１３０１を入力として取る。
【０１０４】
ステップ１３０２にて、ダイヤモンド探索が１／４画素位置に対応する解像度で適用される。このダイヤモンド探索は、最良のベクトル動きを中心とする１／４画素解像度で図ダイヤグラム１３１によって示されている。このステップの結果、１／４画素解像度の新しい最良された動きベクトル１３０３が得られる。
【０１０５】
このダイヤモンド探索の最良の動きベクトル位置１３０３は、ステップ１３０４にて、解像度１／４画素のクロス探索の中心となる。このクロスサーチは、最良ベクトル動き１３０３を中心とする、１／４画素解像度における、ダイアグラム１３２によって示されている。このステップの結果、１／４画素解像度の、新しい最良された動きベクトル１３０５が得られる。
【０１０６】
この探索ステップ１３０４で得られた新たな最良の動きベクトル位置１３０５は、ステップ１３０６における解像度１／８画素解像度でのクロス探索の中心となる。このステップの結果、１／８画素解像度の新しい最良された動きベクトル１３０７が得られる。ダイヤグラム１３３は、１／８解像度において、これらの３つの探索ステップにおける、テストされたすべての位置と共に示している。
【０１０７】
図１４は、１／４のサブ画素グリッドにおける４×４ブロックを表している。
【０１０８】
ブロック１４１のこの図では、オレンジ色の画素１４２が画素解像度での画素位置を表している。赤色画素１４３は、バッファ内の画素である。青色画素１４４は、動きベクトルによって参照されるブロックの補間画素を表す。グレー位置１４５は、精緻化された動きベクトルの全ての潜在的な位置を表している。
【０１０９】
サブ画素位置として動きベクトルによって参照される補間ブロックとして、補間のためにバッファに入れられる画素のブロックのサイズは、画素解像度で（４＋１）×（４＋１）＝２５画素のブロックとなる。動きベクトル精緻化(ステップ８１４または８２４)の場合、可能なサブ画素位置はグレーで表される。
【０１１０】
ビデオデコーダのハードウェア設計は、最悪の場合の複雑さを考慮しなければならない。そうしないと、この最悪の場合が発生したときに、時間通りに復号することができなくなるからである。ＦＲＵＣ方では、メモリアクセスの最悪ケースを著しく増加させる。ただし、４×４、４×８または８×４ブロックの使用を防止するという、メモリアクセスの最悪のケースを減らす簡単な方法は、コーディング効率が大幅に低下させる。
【０１１１】
本発明の目的は、符号化効率の劣化を低減しながら、メモリアクセスに関する最悪の場合の複雑さを低減することである。この問題を解決するためのいくつかの実施形態を以下に説明する。
【０１１２】
図１５に示す本発明の第１の実施形態では、メモリアクセスを低減するため、テンプレート形状が縮小される。白色ピクセルは考慮されるピクセルのブロックを表し、グレーピクセルはＦＲＵＣマージモードのテンプレートマッチングを評価するために使用されるテンプレートを表す。ダイヤグラム１５１は、従来技術を示し、ダイヤグラム１５２〜１５６は、第１の実施形態の異なる変形例または異なる場合を示す。
【０１１３】
ダイヤグラム１５１は、４×４ブロックの従来技術のテンプレートを示し、上の４×４ブロックと、左の４×４ブロックがテンプレートを構成するために使用される。
【０１１４】
この実施形態では、ブロックがダイヤグラム１５２に示すように４×４ブロックであるときの、上ブロックのみがテンプレートを構成するように選択される。上の４×４ブロックが存在しない場合、同様に左ブロックでテンプレートを構成することができる。この実施形態では、テンプレートサイズは現在のブロックのサイズを超えない。さらに、テンプレートのためのメモリに１つの４×４ブロックだけを記憶する必要があるので、４×４ブロックのメモリアクセス最悪ケースは、図１２のダイヤグラム１２１によって示される場合の８１画素のバッファから、この実施形態の場合の（４＋１）×（４＋１）＝２５画素に大幅に低減される。
【０１１５】
この実施形態が４×４ブロックに対して許容される場合、８×４および４×８ブロックが最悪の場合となる。４×４ブロックに使用されるのと同じアイデアを使用して、ダイヤグラム１５４に示されるようなテンプレートが、ダイヤグラム１５３に示されるテンプレートの代わりに、４×８ブロックに使用されてもよい。同様に、ダイヤグラム１５６に示すようなテンプレートを、ダイヤグラム１５５に示すテンプレートの代わりに８×４ブロックに使用することができる。テンプレートは、ダイヤグラム１５４によって示されるように、４×８ブロックについては左テンプレートに縮小され、８×４ブロックについてはダイヤグラム１５６によって示されるように、上ブロックに縮小される。４×４ブロックの場合と同様に、テンプレートサイズは現在のブロックのサイズを超えない。４×４ブロックについては、４×８ブロックまで、または８×４ブロックまでのテンプレートが存在しない場合、他のテンプレート、それぞれ上および左の４×４ブロックに切り替えることが可能である。
【０１１６】
この実施形態は、テンプレートが現在のブロックのサイズを超えることができない制限と考えることができる。
【０１１７】
本実施形態のメモリワーストケースの結果は以下の表にまとめられる。
【０１１８】
【表４】
0006945654.tif 000005
【０１１９】
したがって、この実施形態では、最悪の場合のメモリアクセスは２．５だけ低減される。全ての４×４、８×４、及び４×８ブロックが回避され、同じ最悪の場合の低減につながる明らかな解決策と比較して、提案された実施形態は、より良好な符号化効率を与える。
【０１２０】
メモリアクセスを制限するために、本発明の別の実施形態で採用される解決策は、図８のステップ８１１および８２１での、予測子リスト内で生成される予測子の数を制限することである。
【０１２１】
一実施形態では、ステップ８１１によって生成された符号化単位レベルおよびステップ８２１によって生成されたサブ符号化単位レベルにおけるリスト内の予測子の数が、従来技術で使用された候補の最大数よりも少ない数Ｎに制限される。予測子リストは、通常通りに生成され、制限は生成されたリスト内のいくつかの予測子を除去することによって得られる。リスト内の実際に除去された予測子は、モードまたはマッチングタイプに従って変化する。
【０１２２】
図１６に提案するプロセスを示す。最初に、従来技術のように、ステップ１６０１にて、ＦＲＵＣ動きベクトルリストが導出される。
【０１２３】
ステップ１６０２のテストでモードがＡＭＶＰである場合、ステップ１６０５にて、リストのＮ個の第１の動きベクトルが保持され、続く動きベクトルが除去される。
【０１２４】
モードがＡＭＶＰではなく、ステップ１６０３のテストで、ＦＲＵＣマッチングタイプがテンプレートマッチングである場合は、ステップ１６０４にて、リストのＮ個の最後の動きベクトルが保持され、最初の動きベクトルは除去される。
【０１２５】
それ以外の場合、ステップ１６０５にて、リストのＮ個の第１の動きベクトルが保持され、その次の動きベクトルが除去される。
【０１２６】
なお、この実施形態は、適合させることができることに留意されたい。特に、テストステップ１６０３または１６０２のうちの１つを省略することができる。代替実施形態では、各テストの存在を、符号化単位レベルまたはサブ符号化単位レベルプロセスに依存して行われる。例えば、テスト１６０２はＣＵレベルでのみで適用され、テスト１６０３はサブＣｕベルでのみで適用される。
【０１２７】
この実施形態は、マージモード候補の古典的な派生に対して相補性を提供するので、効率的である。これは、テンプレートマッチングＦＲＵＣモードにとって特に興味深い。ＡＭＶＰの場合、第１の予測子はＡＭＶＰ動きベクトル予測子リストの予測子であるため、第１の予測子を保持することは重要である。そして、ＡＭＶＰモードにおけるＦＲＵＣの現在の使用は、最も確率の高い予測子の一種の決定となる。これは、ＦＲＵＣマージモードでは異なる。したがって、一実施形態では、古典的なＡＭＶＰモードと競合するＡＭＶＰ ＦＲＵＣモードが存在する場合であって、ＡＭＶＰモードが選択されている場合はリストの最後のＮ個の予測子が保持され、ＡＭＶＰ ＦＲＵＣモードでは最初のＮ個の動きベクトル予測子が保持される。
【０１２８】
この実施形態では同じプロセスを使用して、ハードウェア実装にとって興味深い可能性がある動きベクトルリストを導出することができるが、これは動きベクトルのリストが非常に長い場合にはあまり効率的ではない可能性がある。別の実施形態では、Ｎ個の第１の動きベクトルが常に保持される。動きベクトルリスト導出処理は、いくつかのパラメータに応じて変更し、Ｎ個のベクトルに限定されたベクトルリストを直接生成するようにしてもよい。例えば、これらのパラメータは、図１６の制限プロセスで使用されるパラメータとして、モードおよびマッチングタイプでとすることができる。
【０１２９】
図１７および図１８は、そのような実施形態を示す。
【０１３０】
図９に示す対応するプロセスと比較して、図１７に示す符号化単位レベルでのベクトルリスト導出方法は、リストへのベクトルの挿入順序を変更する。片側予測子が評価され、したがって、ステップ１７０７に、最初に挿入される。次に、マージ予測子がステップ１７０５および１７０６に挿入される。
【０１３１】
図１０に示された対応するプロセスと比較して、図１８に示されたサブ符号化単位レベルにおけるベクトルリスト導出方法はまた、リストにおけるベクトルの挿入の順序を変更する。２つのタイプのＡＴＭＶＰ予測子は、ステップ１８０５におけるスケーリングされた時間的予測子の挿入の前、および、ステップ１８０４において挿入された隣接予測子の前に、ステップ１８０６に挿入される。
【０１３２】
別のおよび/または追加の実施形態では、スケーリングされた動きベクトル時間予測子が逆の順序で生成される。実際、それらは、最高のインデックスを有する参照フレームから最低の最小フレームインデックスに加えられる。Ｎ個の第１の予測子のみがメモリに保持される場合、最も低い参照フレームインデックスを有するスケーリングされた時間的予測子を使用することが好ましい。実際、一般に、最も低い参照フレームインデックスは最も近い参照フレームを表し、その結果、動きは、より関連性があるはずである。代替実施形態では、スケーリングされた時間予測子が最も近い参照フレームから最も遠い参照フレームに追加される。
【０１３３】
この実施形態が適用される場合、および符号化単位およびサブ符号化単位レベルについて、ab４×４ブロック、Ｎ＝３個の予測子の以下の表に記載されるように、最悪の場合を大幅に低減する。
【０１３４】
【表５】
0006945654.tif 000006
【０１３５】
テンプレートおよびバイラテラルマッチングの両方の最悪の場合が低減されることに注目する価値がある。
【０１３６】
好ましい実施形態では、各予測子セットに対する予測子の数が３に等しいＮに設定される。
【０１３７】
追加の一実施形態では、リスト内の予測子の数がサイズＮに達しない場合、いくつかの仮想予測子が追加される。いくつかの既知の仮想予測子はオフセット予測子である。オフセット予測子は、オフセット値を、別の予測子の水平及び/又は垂直ベクトル成分に、一般的にはリスト内の第１の予測子に加算することによって得られる。
【０１３８】
一実施形態では、マージおよびマージＦＲＵＣのための動きベクトルリストが異なる順序で生成される。マージ候補リストは、ＨＥＶＣにおいて最良の符号化効率を得るように設定されている。したがって、リストの最初の位置に最も確からしい予測子が設定されるように動きベクトル候補を順序付けることが考えられる。マージＦＲＵＣモードは、動き情報が非常に予測可能である場合に、ほとんどが選択される。したがって、マージリストの第１の予測子は一般に、ＨＥＶＣを用いて選択される。マージＦＲＵＣモードがイネーブルである場合、第１のマージ候補はあまり選択されない。したがって、マージＦＲＵＣが最も確率の高いモードを頻繁に見つけることができることを考慮に入れた、古典的なマージ導出のための異なる順序を有する特定のリストを有することは興味深い可能性がある。なお、この実施形態は、符号化効率を改善するが、必ずしも最悪の場合の問題ではないことに留意されたい。この実施形態は、固定された動きベクトルリストサイズを必要としない。
【０１３９】
図１９は、この実施形態を示し、図４に示す動きベクトル導出プロセスの変形例に対応する。その場合、左予測子１９０１の評価は、左下１９０５の後に評価される位置に移る。したがって、その評価は、時間予測子の直前の空間リストの終わりに追加される。
【０１４０】
図２０は、この実施形態の別の可能性を示す。その場合、図４に示す動きベクトル導出処理と比較すると、ＡＴＭＶＰ候補２０１９及び２０２１の評価が、導出処理において最初に発生するよう移される。その結果、図９のステップ９０６におけるマージＦＲＵＣモードの導出には存在しない、これらの予測子が、リスト内の第１の位置を有する。したがって、それらは第１の位置で選択される機会がより多くなる。したがって、ＦＲＵＣマージリストに存在しないこれらの候補は、マージＦＲＵＣに対してより良好な相補性を有し、より低いビットでそれらのインデックスを符号化する。
【０１４１】
別の代替実施形態では、時間的に前に評価されたすべての候補が逆の順序で評価される。空間予測子の典型的な評価は、左上、符号化単位レベルでのＡＴＭＶＰ、ＡＴＭＶＰサブ符号化単位レベル、左下、右上、上および左になる。もちろん、この実施形態は、ＡＭＶＰ ＦＲＵＣモードが存在する場合に適合させることができる。
【０１４２】
サブ符号化単位導出プロセスのための新しい動きベクトルリストの使用は、最悪の場合のブロック位置のメモリアクセスを生成する。したがって、サブ符号化単位レベルで動き情報の新しいリストを構築しないことが好ましい。
【０１４３】
図２１は、図８に関連する、この実施形態を示している。この場合、図８のモジュール８２１に対応するモジュール２１２１は、動きベクトルリストの第１の位置に、符号化単位レベルで得られた最良の動きベクトルを含めるだけである。しかし、符号化単位レベルの場合と比較して、新しい動きベクトルは導出されない。したがって、各サブ符号化単位について、符号化単位レベルでの最良の動きベクトルのみが評価される。この実施形態の利点は、メモリアクセスの著しい最悪の場合の低減に対する符号化効率の影響が小さいことである。実際、ステップ２１２１は、ステップ８２１と比較して新しいメモリアクセスを必要としない。
【０１４４】
この実施形態が前の実施形態と組み合わされ、符号化単位レベルで得られた最良の動きベクトルが動きベクトル精緻化によって変更された場合、予測子の数を増加させず、予測子の数をＮに制限し続けるために、１つの予測子を除去する必要がある。実際に、ＭＶ精緻化２１１４または８１４は、リスト２１１１と比較して新しいベクトルを生成することができ、したがって、同じ量のベクトルを有するために１つを除去する必要がある。
【０１４５】
一実施形態では、この制約が典型的には４×４、４×８、および８×４ブロックの小さなブロックサイズ(ＣＵサイズ)に対してのみ適用され、最悪の場合におけるメモリアクセスを低減し、他の符号化単位サイズに対する符号化効率を低減しない。
【０１４６】
以下の表は、各マッチングモードに対するＦＲＵＣマージモードの最悪の場合の複雑さと、この実施形態がイネーブルされるときの４×４ブロックに対する従来のマージモードとに対してアクセスされるメモリに関するいくつかの数値を与える。
【０１４７】
【表６】
0006945654.tif 000007
【０１４８】
図１４に示すような動きベクトルの最良候補の精緻化は、追加のメモリアクセスを生成する。さらなる実施形態では、動きベクトル精緻化の潜在的な位置がバッファ内に既にあるピクセルに制限する。
【０１４９】
図２２は、この実施形態を示す。この図は図１４に基づくものである。図１４と比較すると、この実施形態では、動きベクトル精緻化の潜在的な位置がバッファ２２５内の画素に制限される。これは、最良の動きベクトル８１５のテンプレートに対してアクセスされる画素位置よりも新しい画素位置にアクセスすることが許可されていないことを意味する。もちろん、実施形態によれば、バッファは、異なる画素を含むことができる。したがって、この実施形態においては、動きベクトルは初期動きベクトル位置のバイリニア補間に必要な画素のみを使用するように制限される。
【０１５０】
動きベクトル位置がバッファの外側にあることを識別するために、以下の条件を使用することができる。
if((mvCandX＞＞mvRes != mvCurCenterX＞＞mvRes) OR ((mvCandY＞＞mvRes != mvCurCenterX＞＞mvRes))
ここで、(mvCandX, mvCandY)はテストされた動きベクトル位置であり、(mvCurCenterX, mvCurCenterY)は、初期ブロックの動きベクトル、または以前の精緻化ステップの初期位置である。"＞＞" は右シフト演算子である。そして、mvResは、現在のサブピクセル解像度のビット数を表す。例えば、現解像度が１／１６th ｐｅｌである場合、mvResは４に等しい。
【０１５１】
さらに、バッファ内のフルピクセル位置を点探索位置を考慮する必要がある。したがって、第１の条件は以下のようになる。 
if(((mvCandX＞＞mvRes != mvCurCenterX＞＞mvRes) AND (mvCandX ％ 16 !=0))
OR ((mvCandY＞＞mvRes != mvCurCenterX＞＞mvRes) AND (mvCandY ％ 16 !=0))) 
ここで、“％”はモジュロ演算子である。
【０１５２】
値１６は、最高サブピクセル解像度が16thサブ画素でない場合に変更することができる。
【０１５３】
mvCurCenterXまたはmvCurCenterYがフルピクセル解像度である特定の場合には、mvCurCenterX ％ １６ は０に等しいか、またはmvCurCenterY ％ １６の場合には追加のバッファが左または右にあるかどうか、mvCurCenterY ％ １６のときには、上又は下にあるかどうかを決定することが必要である。実際、前の条件がフルピクセル解像度のブロックで使用される場合、精緻化は不可能である。
【０１５４】
したがって、mvCurCenterX ％ １６が０に等しいとき、テストされた位置が右の線ではなく左の線のみを必要とするかどうかをチェックするために、以下の条件が追加される。
((mvCandX＞＞mvRes)-(mvCurCenterX＞＞mvRes)) ＜ ０
【０１５５】
図２３は、この実施形態で使用される異なる例示的な検索図を示す。
【０１５６】
ダイヤグラム２３１は、図２２の例についてダイヤグラム１３１によって示されたダイヤモンド探索パターン位置と比較して、この実施形態で制限されたダイヤモンド探索パターン位置を示す。
【０１５７】
この実施形態の利点は、図８のステップ８１４および８２４の実行において新しいメモリアクセスが必要とされないことである。
【０１５８】
この制約は、テストされる位置の数を減らすので、符号化効率をわずかに低下させる。劣化を低減するために、回避された位置を置き換えるために、いくつかの位置を追加することができる。
【０１５９】
これらの位置を生成する１つの可能な方法は、２で割った逆オフセットを中心位置に加算することである。新しいmvCandXのこの値を得るための１つの可能な公式は、以下の通りである。
mvCandX = mvCurCenterX - (mvCandX - mvCurCenterX)/2; 
【０１６０】
ダイヤグラム２３２は、この実施形態のダイヤモンド探索の結果を示す。ダイヤグラム２３１と比較して、２つの新しい画素位置が加算される。
【０１６１】
位置を生成するための１つの可能な方法は、ダイヤモンドの内側の４分の１ピクセル位置のすべての位置、または可能なメモリバッファ２３４の内側の４分の１ピクセル位置のすべての位置を加算することである。その場合、動きベクトル精緻化１３０２、１３０４、および１３０６の３つのステップは、これらの実施形態によって置き換えることができる。コーナーに表されたフルピクセル位置も、ダイヤグラム２３４に示すようにテストされることに注意されたい。
【０１６２】
位置を生成するための別の可能な方法は、ダイヤグラム２３１と比較して、ダイヤグラム２３５に表される追加の位置を生成する。
【０１６３】
位置を生成するためのさらに別の可能な方法は、ダイヤグラム２３６に示すように、ポイントされたブロックがバッファの外側にあるときに、mvCandXまたはmvCandYをバッファの最大フルピクセル位置に等しく設定することである。
【０１６４】
追加の実施形態では、動きベクトル精緻化がリストの各動きベクトル予測子に適用され、最良のものが選択される。実際、この実施形態では、動きベクトル精緻化プロセスのために新しい画素にアクセスする必要はない。この追加の実施形態は、現在の動きベクトルＦＲＵＣ導出よりも良好な符号化効率を与える。
【０１６５】
一実施形態では、動きベクトルリ精緻化が動きベクトルを有する他の符号化モードに適用され、ＭＶ精緻化に対する制約が適用される。この実施形態は、例えばバイラテラルマッチングが使用される場合、新しいメモリ・アクセスなしに符号化効率を改善する。
【０１６６】
記載された実施形態の全ての可能な組み合わせが可能である。
【０１６７】
以下の表は、提案されている最悪ケースの削減方法がすべて有効にされている場合の、各マッチングモードに対するＦＲＵＣマージモードの最悪ケースのメモリ・アクセスの複雑さ、および４×４ブロックに対する従来のマージモードの最悪ケースのメモリ・アクセスの複雑さに関するいくつかの数値を示している。
【０１６８】
【表７】
0006945654.tif 000008
【０１６９】
全てのこれらの実施形態がＮ＝３個の予測子のみでイネーブルされるとき、最悪の場合は、古典的な動き補償のための現在の最悪の場合の２倍未満である。
【０１７０】
図２４は、本発明の１つまたは複数の実施形態を実施するためのコンピューティングデバイス２４００の概略ブロック図である。コンピューティングデバイス２４００は、マイクロコンピュータ、ワークステーション、または軽量ポータブルデバイスなどの装置とすることができる。コンピューティングデバイス２４００は、以下のものが接続された通信バスを備える: 
・ＣＰＵと呼ばれるマイクロプロセッサのような中央処理装置２４０１; 
・ＲＡＭで示されるランダムアクセスメモリ２４０２；これは本発明の実施形態の方法の実行可能コード、ならびに本発明の実施形態による画像の少なくとも一部を符号化または復号する方法を実施するために必要な変数およびパラメータを記録するように適合されたレジスタを格納するためのものであり、そのメモリ容量は例えば、拡張ポートに接続されたオプショナルなＲＡＭによって拡張することができる。 
・ＲＯＭで示される読み出し専用メモリ２４０３；これは本発明の実施形態を実施するためのコンピュータプログラムを記憶するものである。 
・ネットワークインタフェース２４０４；これは、典型的には処理されるデジタルデータが送信または受信される通信ネットワークに接続されるものである。ネットワークインタフェース２４０４は単一のネットワークインタフェースであってもよく、または異なるネットワークインタフェース(例えば、有線および無線インターフェース、または異なる種類の有線または無線インターフェース)のセットから構成されてもよい。データパケットは、ＣＰＵ２４０１で実行されるソフトウェアアプリケーションの制御下で、送信のためにネットワークインターフェースに書き込まれるか、または受信のためにネットワークインターフェースから読み出される。 
・ ユーザインターフェース２４０５；これはユーザからの入力を受信するために、またはユーザに情報を表示するために使用される。 
・ＨＤで示されるハードディスク２４０６；これは、大容量記憶装置として提供されてもよい。
・Ｉ／Ｏモジュール２４０７；これはビデオソースまたはディスプレイのような外部デバイスから／へデータを受信／送信するために使用されてもよい。
【０１７１】
実行可能コードは読み出し専用メモリ２４０３、ハードディスク２４０６、または例えばディスクのようなリムーバブルデジタル媒体のいずれかに格納されてもよい。変形例によれば、プログラムの実行可能なコードはハードディスク２４０６のような通信装置２４００の記憶手段の１つに記憶されてから実行されるために、ネットワークインタフェース２４０４を介して通信ネットワークの手段によって受信されることができる。
【０１７２】
中央処理ユニット２４０１は本発明の実施形態によるプログラムの命令またはソフトウェアコードの一部の実行を制御し、指示するように適合され、命令は、前述の記憶手段のうちの１つに記憶される。ＣＰＵ２４０１は、電源投入後、例えばプログラムＲＯＭ２４０３やハードディスク(ＨＤ)２４０６からロードされたソフトウェアアプリケーションに関するメインＲＡＭメモリ２４０２からの指示を実行することができる。このようなソフトウェアアプリケーションは、ＣＰＵ２４０１によって実行されると、図Ｘに示すフローチャートのステップを実行する。
【０１７３】
図Ｘに示すアルゴリズムの任意のステップはＰＣ(“パーソナルコンピュータ”）、ＤＳＰ(“デジタルシグナルプロセッサ”)、またはマイクロコントローラなどのプログラマブルコンピューティングマシンによる命令、またはプログラムのセットの実行によってソフトウェアで実施することができ、あるいは、ＦＰＧＡ(“フィールドプログラマブルゲートアレイ”)またはＡＳＩＣ(“特定用途向け集積回路”)などのマシンまたは専用コンポーネントによってハードウェアで実施することができる。
【０１７４】
以上、特定の実施形態を参照して本発明を説明したが、本発明は特定の実施形態に限定されるものではなく、本発明の範囲内にある修正は当業者には明らかであろう。
【０１７５】
多くのさらなる修正および変形は単に例として与えられ、添付の特許請求の範囲によってのみ決定される本発明の範囲を限定することを意図しない、前述の例示的な実施形態を参照することにより、当業者に示唆されるのであろう。特に、異なる実施形態からの異なる特徴は、適宜、交換されてもよい。
【０１７６】
特許請求の範囲において、単語“備える(comprising）”は他の要素又はステップを排除するものではなく、不定冠詞“a”又は“an”は複数を排除するものではない。異なる特徴が相互に異なる従属請求項に記載されているという単なる事実は、これらの特徴の組み合わせが有利に使用されることができないことを示すものではない。
【図１】
0006945654.tif 000009
【図２】
0006945654.tif 000010
【図３】
0006945654.tif 000011
【図４】
0006945654.tif 000012
【図５】
0006945654.tif 000013
【図６】
0006945654.tif 000014
【図７】
0006945654.tif 000015
【図８】
0006945654.tif 000016
【図９】
0006945654.tif 000017
【図１０】
0006945654.tif 000018
【図１１】
0006945654.tif 000019
【図１２】
0006945654.tif 000020
【図１３】
0006945654.tif 000021
【図１４】
0006945654.tif 000022
【図１５】
0006945654.tif 000023
【図１６】
0006945654.tif 000024
【図１７】
0006945654.tif 000025
【図１８】
0006945654.tif 000026
【図１９】
0006945654.tif 000027
【図２０】
0006945654.tif 000028
【図２１】
0006945654.tif 000029
【図２２】
0006945654.tif 000030
【図２３】
0006945654.tif 000031
【図２４】
0006945654.tif 000032