(57)【特許請求の範囲】
【請求項１】
垂直フィルタ、水平フィルタ及びキュービックフィルタを含む動き補償装置の動き補償方法において、
（ａ）複数のコーデックのうち何れか一つを表すコーデック情報及び複数の色成分のうち何れか一つを表す色情報によって、現在画像に対応する参照画像の画素を補間する垂直リニアフィルタリング方式、水平リニアフィルタリング方式及びキュービックフィルタリング方式のうち少なくとも一つのフィルタリング方式を決定し、前記垂直フィルタ、水平フィルタ及びキュービックフィルタのうち前記決定されたフィルタリング方式を利用するフィルタに前記参照画像の値を入力することによって前記画素の間に位置した画素の値を算出するステップと、
（ｂ）前記算出された画素の値を含む動き補償データ、及び前記参照画像と前記現在画像との差を合算することによって前記現在画像を復元するステップと、を含み、
前記参照画像の画素の値が入力されるフィルタは複数のタップを有し、前記タップの個数は、前記コーデック情報及び前記色情報によって決定されることを特徴とする動き補償方法。
【請求項２】
前記（ａ）ステップは、
（ａ１）前記コーデック情報及び前記色情報によって、選択的に前記参照画像の何れか一つのブロックの何れか一つの垂直ラインに位置した画素の値から、前記垂直ラインに位置した画素の間に位置した画素の値を算出するステップと、
（ａ２）前記コーデック情報及び前記色情報によって、選択的に前記ブロックの何れか一つの水平ラインに位置した画素の値から、前記水平ラインに位置した画素の間に位置した画素の値を算出するステップと、
（ａ３）前記コーデック情報及び前記色情報によって、選択的に前記ブロックの何れか一つのキュービックに位置した画素の値から、前記キュービックに位置した画素の間に位置した画素の値を算出するステップと、を含むことを特徴とする請求項１に記載の動き補償方法。
【請求項３】
前記コーデック情報がＨ．２６４／ＡＶＣを表し、前記色情報が輝度成分を表す場合、前記（ａ１）ステップ、前記（ａ２）ステップ、及び前記（ａ３）ステップのそれぞれは、画素の値を算出することを特徴とする請求項２に記載の動き補償方法。
【請求項４】
前記（ａ１）ステップは、前記垂直ラインに位置した画素の値を６個のタップに適用することにより、前記垂直ラインに位置した画素の間に位置した画素の値を算出し、
前記（ａ２）ステップは、前記水平ラインに位置した画素の値を６個のタップに適用することにより、前記水平ラインに位置した画素の間に位置した画素の値を算出し、
前記（ａ３）ステップは、前記キュービックに位置した２個の画素の値を４個のタップのうち、２個のタップに適用することにより、前記キュービックに位置した画素の間に位置した画素の値を算出することを特徴とする請求項３に記載の動き補償方法。
【請求項５】
前記コーデック情報がＨ．２６４／ＡＶＣを表し、前記色情報が色差成分を表す場合、前記（ａ１）ステップ及び前記（ａ２）ステップは、画素の値を算出せず、前記（ｃ）ステップは、画素の値を算出することを特徴とする請求項２に記載の動き補償方法。
【請求項６】
前記（ａ１）ステップ、前記（ａ２）ステップ、及び前記（ａ３）ステップのそれぞれは、前記コーデック情報、前記色情報及び複数のフィルタのうち何れか一つを表すフィルタ情報によって選択的に前記画素の値を算出することを特徴とする請求項２に記載の動き補償方法。
【請求項７】
前記コーデック情報がＶＣ１を表し、前記色情報が輝度成分または色差成分を表し、前記フィルタ情報がリニアフィルタを表す場合、前記（ａ１）ステップ及び前記（ａ２）ステップは、画素の値を算出し、前記（ａ３）ステップは、画素の値を算出しないことを特徴とする請求項６に記載の動き補償方法。
【請求項８】
前記コーデック情報がＶＣ１を表し、前記色情報が輝度成分または色差成分を表し、前記フィルタ情報がキュービックフィルタを表す場合、前記（ａ１）ステップ及び前記（ａ２）ステップは、画素の値を算出せず、前記（ａ３）ステップは、画素の値を算出することを特徴とする請求項６に記載の動き補償方法。
【請求項９】
前記（ａ）ステップは、前記参照画像の何れか一つのブロックの動きベクトルが指示する画素の値を算出することを特徴とする請求項１に記載の動き補償方法。
【請求項１０】
前記コーデック情報によって選択的に前記水平ラインでない他の水平ラインに位置した画素の値から、前記他の水平ラインに位置した画素の間に位置した画素の値を算出するステップをさらに含むことを特徴とする請求項２に記載の動き補償方法。
【請求項１１】
前記コーデック情報によって選択的に前記ブロックの動きベクトルが指示する画素の値を生成するために要求されるキュービック位置に前記画素の値を整列するステップと、
前記コーデック情報によって選択的に前記整列された画素の値から前記整列された画素の間に位置した画素の値を算出するステップと、をさらに含むことを特徴とする請求項２に記載の動き補償方法。
【請求項１２】
前記（ａ１）ステップは、前記垂直ラインに位置した整数画素の値から前記垂直ラインに位置した画素の間に位置した１／２画素の値を算出し、
前記（ａ２）ステップは、前記水平ラインに位置した整数画素の値から前記水平ラインに位置した画素の間に位置した１／２画素の値を算出し、
前記（ａ３）ステップは、前記ブロックを構成する何れか一つの整数画素、前記（ａ）ステップで算出された１／２画素の値及び前記（ｂ）ステップで算出された１／２画素の値から前記キュービックに位置した画素の間に位置した１／４画素の値を算出することを特徴とする請求項２に記載の動き補償方法。
【請求項１３】
前記コーデックのそれぞれの動きベクトルが指示する画素の位置によって、選択的に複数のレジスターのうち所定位置のレジスターに保存された画素の値を出力するステップをさらに含み、
前記（ａ）ステップは、所定数のクロックの間に出力されて累積された画素の値から前記画素の間に位置した画素の値を算出することを特徴とする請求項１に記載の動き補償方法。
【請求項１４】
ブロックのサイズによって、前記所定位置のレジスターのうち何れか一つを出力することを特徴とする請求項１３に記載の動き補償方法。
【請求項１５】
外部メモリから前記参照画像に該当するデータを受信するために待機する区間及び前記外部メモリから前記データを受信する区間の間、前記（ａ１）ステップ、前記（ａ２）ステップ及び前記（ａ３）ステップのそれぞれは、パイプライン形態で行われることを特徴とする請求項２に記載の動き補償方法。
【請求項１６】
垂直フィルタ、水平フィルタ及びキュービックフィルタを含む動き補償装置の動き補償方法において、
複数のコーデックのうち何れか一つを表すコーデック情報及び複数の色成分のうち何れか一つを表す色情報によって、現在画像に対応する参照画像の画素を補間する垂直リニアフィルタリング方式、水平リニアフィルタリング方式及びキュービックフィルタリング方式のうち少なくとも一つのフィルタリング方式を決定し、前記垂直フィルタ、水平フィルタ及びキュービックフィルタのうち前記決定されたフィルタリング方式を利用するフィルタに前記参照画像の画素の値を入力することによって前記画素の間に位置した画素の値を算出するステップと、
前記算出された画素の値を含む動き補償データと、前記参照画像と前記現在画像との差とを合算することによって前記現在画像を復元するステップと、を含み、
前記参照画像の画素の値が入力されるフィルタは複数のタップを有し、前記タップの個数は、前記コーデック情報及び前記色情報によって決定されることを特徴とする動き補償方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体。
【請求項１７】
垂直フィルタ、水平フィルタ及びキュービックフィルタを含み、複数のコーデックのうち何れか一つを表すコーデック情報及び複数の色成分のうち何れか一つを表す色情報によって、現在画像に対応する参照画像の画素を補間する垂直リニアフィルタリング方式、水平リニアフィルタリング方式及びキュービックフィルタリング方式のうち少なくとも一つのフィルタリング方式を決定し、前記垂直フィルタ、水平フィルタ及びキュービックフィルタのうち前記決定されたフィルタリング方式を利用するフィルタに前記参照画像の画素の値を入力することによって前記画素の間に位置した画素の値を算出する動き補償エンジンと、
前記算出された画素の値を含む動き補償データと、前記参照画像と前記現在画像との差とを合算することによって前記現在画像を復元する加算器と、を備え、
前記参照画像の画素の値が入力されるフィルタは複数のタップを有し、
前記動き補償エンジンは、前記コーデック情報及び前記色情報によって前記タップの個数を決定することを特徴とする動き補償装置。
【請求項１８】
前記垂直フィルタは、
前記コーデック情報及び前記色情報によって、選択的に前記参照画像の何れか一つのブロックの何れか一つの垂直ラインに位置した画素の値から、前記垂直ラインに位置した画素の間に位置した画素の値を算出し、
前記水平フィルタは、
コーデック情報及び前記色情報によって、選択的に前記ブロックの何れか一つの水平ラインに位置した画素の値から、前記水平ラインに位置した画素の間に位置した画素の値を算出し、
前記キュービックフィルタは、
前記コーデック情報及び前記色情報によって、選択的に前記ブロックの何れか一つのキュービックに位置した画素の値から、前記キュービックに位置した画素の間に位置した画素の値を算出することを特徴とする請求項１７に記載の動き補償装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動画を復号化する方法及び装置に係り、特に、動きを補償する方法及び装置に関する。
【背景技術】
【０００２】
動画の復号化は、色々な処理過程を経る。このような過程は、エントロピー復号化、逆変換、逆量子化、及び動き補償で構成される。これらのうち動き補償が、最長のプロセシング時間がかかる。動き補償とは、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、参照画像から参照画像と現在画像との間に共有される部分を抽出し、このように抽出されたデータ（以下“動き補償データ”という）と、参照画像と現在画像との差データ（以下“レジデューデータ”という）とを合算することによって、現在画像を復元する過程を意味する。このように、動き補償処理過程は、多くの画像データを処理せねばならないため、メモリアクセス量及び演算量が非常に多い。このような動き補償の処理量は、画像のサイズに比例するため、画像のサイズが大きくなれば、最悪の場合には、所望の時間内に画像全体が処理されず、その結果、自然な動画再生が不可能になることもある。
【０００３】
ほとんどの動画コーデックエンジニアは、動画コーデックをソフトウェアの形態で具現することを好む。これは、動画コーデックをハードウェアで具現する場合に比べて、その開発期間が短縮され、かつコストが低下し、動画コーデックの再使用が容易であり、特に、動画コーデック自体の柔軟性に優れて動画コーデックにエラーが発生する場合に、これを容易に修正しうるという長所があるためである。しかし、動画コーデックの核心は、リアルタイム処理にある。たとえソフトウェアの具現が多くの長所を有しているとしても、動画コーデックが画像の符号化及び復号化をリアルタイムで処理できなければ、無駄になる。一方、動画コーデックをハードウェアで具現する場合には、開発期間が長くなり、コストが上昇し、柔軟性が低くて、動画コーデックの修正をせねばならない場合に、動画コーデックの全体構造を変更する危険が伴うこともある。しかし、何よりも動画コーデックをハードウェアで具現する場合には、ターゲットに最適化された具現が可能であるため、ソフトウェアで処理する場合より動画符号化及び復号化の速度が飛躍的に速くなるという長所がある。
【０００４】
前記のようなハードウェア具現方式及びソフトウェア具現方式のそれぞれの相反した長短所によって、ほとんどの動画コーデックエンジニアは、この２つの方式を混合して多用する。すなわち、動画コーデックを構成するモジュールは、各特徴によってＳ／Ｗで処理する部分とＨ／Ｗで処理する部分とに分けて具現される。この場合、必須的にハードウェアで具現せねばならない部分が動き補償である。動き補償に要求されるデータ演算量も多いが、何よりもメモリアクセスが他の部分に比べてはるかに多いため、ソフトウェア的な処理が不適合であった。
【０００５】
最近、動画コーデック具現の重要なイッシュは、一つの動画プレイヤで多様な動画フォーマットを再生可能にすることである。主に多く使われる動画フォーマットは、ＭＰＥＧ４、ＶＣ１、Ｈ.２６４／ＡＶＣである。しかし、このような３つのコーデックを一つの機器に具現しようとするとき、それぞれのコーデックに対する動き補償をそれぞれ具現すれば、ソフトウェアで処理する場合には、データ演算量及びメモリアクセス量が大きく増加するという問題が発生し、ハードウェアで具現する場合にも、ハードウェアの大きさ及び製作コストが上昇するという問題点が発生する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする技術的課題は、データ演算量及びメモリアクセスを減らし、ハードウェアの大きさ及び製作コストを減少させるためのマルチコーデックを支援しつつも、動画の再生をリアルタイムで処理可能にし、動き補償のためのチップのサイズ縮小及びチップ製作コストを低下させる装置及び方法を提供することである。また、前記の方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供することである。
【０００７】
本発明が解決しようとする技術的課題は、前記のような技術的課題に限定されず、さらに他の技術的課題が存在しうる。これは、当業者ならば、下記の記載から明確に分かる。
【課題を解決するための手段】
【０００８】
前記課題を解決するための本発明による動き補償方法は、（ａ）複数のコーデックのうち何れか一つを表すコーデック情報によって、現在画像に対応する参照画像の画素を補間する複数の方式のうち少なくとも一つの方式を利用して、前記参照画像の画素の値から前記画素の間に位置した画素の値を算出するステップと、（ｂ）前記算出された画素値を含む動き補償データと、前記参照画像と前記現在画像との差とを合算することによって前記現在画像を復元するステップとを含む。
【０００９】
前記（ａ）ステップは、（ａ１）前記コーデック情報によって、選択的に前記参照画像の何れか一ブロックの何れか一つの垂直ラインに位置した画素の値から、前記垂直ラインに位置した画素の間に位置した画素の値を算出するステップと、（ａ２）前記コーデック情報によって、選択的に前記ブロックの何れか一つの水平ラインに位置した画素の値から、前記水平ラインに位置した画素の間に位置した画素の値を算出するステップと、（ａ３）前記コーデック情報によって、選択的に前記ブロックの何れか一つのキュービックに位置した画素の値から、前記キュービックに位置した画素の間に位置した画素の値を算出するステップと、を含む。
【００１０】
前記課題を解決するために、本発明は、前記の動き補償方法をコンピュータで実行させるためのプログラムを記録したコンピュータで読み取り可能な記録媒体を提供する。
【００１１】
前記課題を解決するための本発明による動き補償装置は、複数のコーデックのうち何れか一つを表すコーデック情報によって、現在画像に対応する参照画像の画素を補間する複数の方式のうち少なくとも一つの方式を利用して、前記参照画像の画素の値から前記画素の間に位置した画素の値を算出する動き補償エンジンと；前記算出された画素値を含む動き補償データと、前記参照画像と前記現在画像との差とを合算することによって前記現在画像を復元する加算器とを備える。
【００１２】
前記動き補償エンジンは、前記コーデック情報によって選択的に前記参照画像の何れか一ブロックの何れか一つの垂直ラインに位置した画素の値から前記垂直ラインに位置した画素の間に位置した画素の値を算出する垂直フィルタと、前記コーデック情報によって選択的に前記ブロックの何れか一つの水平ラインに位置した画素の値から前記水平ラインに位置した画素の間に位置した画素の値を算出する水平フィルタと、前記コーデック情報によって選択的に前記ブロックの何れか一つのキュービックに位置した画素の値から前記キュービックに位置した画素の間に位置した画素の値を算出するキュービックフィルタとを備える。
【発明の効果】
【００１３】
本発明によれば、ＭＰＥＧ４、Ｈ.２６４／ＡＶＣ、ＶＣ１のような複数のコーデックのうち何れか一つを表すコーデック情報によって、垂直フィルタリング、水平フィルタリング、キュービックフィルタリングなどの複数のコーデック間の共通的な部分を選択的に行うことによって、マルチコーデックを支援する動き補償をハードウェアで具現することによってチップサイズを最小化しうる。特に、前記のように、共通的な部分が選択的に行えるようにモジュール化することにより、ハードウェアへの具現を容易にし、これと共にチップに所要される部品の数の減少によってチップの製作コストが低下する。
【００１４】
また、本発明によれば、外部メモリからデータを受信するために待機する区間及び外部メモリからデータを受信する区間の間、垂直フィルタリング、水平フィルタリング、キュービックフィルタリングがパイプライン形態で行われることによって動き補償処理時間を最小化し、これにより、マルチコーデックを支援しつつも、画像の符号化及び復号化がリアルタイムで処理されて、マルチコーデックを支援するＤＭＢ再生装置を容易に製作しうる。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照して本発明の実施形態を詳細に説明する。
【００１６】
図１は、多様な動画圧縮コーデックのそれぞれで使われる動き補償のためのフィルタの特性を表で示す図である。さらなる高解像度の画像を復元するために、現在動画圧縮コーデックでは、動きベクトルが参照画像内の画素、すなわち整数画素のみを指示せず、整数画素の間の１／２に位置した１／２画素または整数画素の間の１／４に位置した１／４画素も指示するようにしている。しかし、１／２画素及び１／４画素は、参照画像に本来存在しない画素であるため、この画素の値は、画素補間法を利用して生成される。図１は、このような画素補間に使われるフィルタの特性を動画圧縮コーデック別に示す。
【００１７】
図１を参照するに、ＭＰＥＧ４、Ｈ.２６４／ＡＶＣ、ＶＣ１の色差成分（ｃｈｒｏｍｉｎａｎｃｅ  ｃｏｍｐｏｎｅｎｔ）は、何れもキュービックフィルタ（ｃｕｂｉｃ  ｆｉｌｔｅｒ）を使用しており、ＶＣ１は、リニアフィルタ（ｌｉｎｅａｒ  ｆｉｌｔｅｒ）を共に使用する。また、輝度成分（ｌｕｍｉｎａｎｃｅ  ｃｏｍｐｏｎｅｎｔ）については、ＭＰＥＧ４は、キュービックフィルタを使用し、Ｈ.２６４／ＡＶＣは、リニアフィルタを使用し、ＶＣ１は、キュービックフィルタとリニアフィルタとを共に使用しているということが分かる。以下では、ＭＰＥＧ４、Ｈ.２６４／ＡＶＣ、ＶＣ１による画素補間の形を図２Ａないし図２Ｅを参照しつつ詳細に説明する。
【００１８】
図２Ａは、Ｈ.２６４／ＡＶＣによる輝度成分の画素補間の形を示す図である。図２Ａに示された大文字アルファベットは、整数画素を表し、小文字アルファベットは、サブ画素を表す。整数画素は、画素補間に使われる本来の画素を意味し、サブ画素は、整数画素を利用して画素補間によって生成された値を有する画素、すなわち１／２画素、１／４画素を意味する。図２Ａを参照するに、Ｈ.２６４／ＡＶＣの輝度成分に対する画素補間は、１／４画素単位までなされる。まず、図２Ａに示された１／２画素、すなわち、ｂ、ｈ、ｍ、ｓ位置の画素は、次のような式（１）によって６個の係数を有する６タップフィルタを利用して計算される。
【００１９】
ｂ１＝（Ｅ−５＊Ｆ＋２０＊Ｇ＋２０＊Ｈ−５＊Ｉ＋Ｊ）
ｈ１＝（Ａ−５＊Ｃ＋２０＊Ｇ＋２０＊Ｍ−５＊Ｒ＋Ｔ）
ｂ＝Ｃｌｉｐ１Ｙ（（ｂ１＋１６）＞＞５）
ｈ＝Ｃｌｉｐ１Ｙ（（ｈ１＋１６）＞＞５）                      （１）
ｊ１＝ｃｃ−５＊ｄｄ＋２０＊ｈ１＋２０＊ｍ１−５＊ｅｅ＋ｆｆ、または
ｊ１＝ａａ−５＊ｂｂ＋２０＊ｂ１＋２０＊ｓ１−５＊ｇｇ＋ｈｈ
ｊ＝Ｃｌｉｐ１Ｙ（（ｊ１＋５１２）＞＞１０）
ｓ＝Ｃｌｉｐ１Ｙ（（ｓ１＋１６）＞＞５）
ｍ＝Ｃｌｉｐ１Ｙ（（ｍ１＋１６）＞＞５）    
前記数式で“＊”は、乗算演算を表す。以下でも同様である。
【００２０】
次いで、図２Ａに示された１／４画素、すなわち、残りの画素は、次のような式（２）によって平均フィルタを利用して計算される。この平均フィルタは、２個の係数を有する２タップフィルタの一種であって、以下でも同様である。
【００２１】
ａ＝（Ｇ＋ｂ＋１）＞＞１
ｃ＝（Ｈ＋ｂ＋１）＞＞１
ｄ＝（Ｇ＋ｈ＋１）＞＞１
ｎ＝（Ｍ＋ｈ＋１）＞＞１
ｆ＝（ｂ＋ｊ＋１）＞＞１
ｉ＝（ｈ＋ｊ＋１）＞＞１
ｋ＝（ｊ＋ｍ＋１）＞＞１              （２）
ｑ＝（ｊ＋ｓ＋１）＞＞１
ｅ＝（ｂ＋ｈ＋１）＞＞１
ｇ＝（ｂ＋ｍ＋１）＞＞１
ｐ＝（ｈ＋ｓ＋１）＞＞１
ｒ＝（ｍ＋ｓ＋１）＞＞１
前記の式（１）及び（２）のうち、表記“＞＞”は、右側シフト演算を意味し、“＞＞”の次の数字は、何ビットをシフトするかを表す。例えば、“＞＞１”は、１ビットシフトを意味し、二等分と同等である。以下でも同様である。
【００２２】
図２Ｂは、Ｈ.２６４／ＡＶＣによる色差成分の画素補間の様子を示す図である。図２Ｂに示されたＰ１、Ｐ２、Ｐ３、Ｐ４は、整数画素を表し、４個の矢印の収斂点は、サブ画素を表す。図２Ｂを参照するに、Ｈ.２６４／ＡＶＣの色差成分に対する画素補間は、固定された位置ではない、任意の位置でなされる。すなわち、図２Ｂに示された任意の位置の画素は、次のような式（３）によってキュービックフィルタを使用して計算される。このキュービックフィルタは、４個の係数を有する４タップフィルタの一種であって、以下でも同様である。
【００２３】
Ｐ＝（（８−ｘＦｒｃ）＊（８−ｙＦｒｃ）＊Ｐ１＋ｘＦｒｃ＊（８−ｙＦｒｃ）＊Ｐ２＋（８−ｘＦｒｃ）＊ｙＦｒｃ＊Ｐ３＋ｘＦｒｃ＊ｙＦｒｃ＊Ｐ４＋３２）＞＞６            （３）
図２Ｃは、ＶＣ１によってリニアフィルタを使用した画素補間の形を示す図である。図２Ｃに示されたＰ１、Ｐ２、Ｐ３、Ｐ４は、整数画素を表し、整数画素Ｐ２とＰ３との間に位置した点は、サブ画素を表す。図２Ｃを参照するに、ＶＣ１によってリニアフィルタを使用した画素補間は、１／４画素単位までなされる。すなわち、図２Ｃに示された黒点に該当する１／２画素及び１／４画素は、次のような式（４）によってキュービックフィルタを使用して計算される。
【００２４】
Ｐ＝（ａ＊Ｐ１＋ｂ＊Ｐ２＋ｃ＊Ｐ３＋ｄ＊Ｐ４＋ｒｃ）＞＞ｓ    （４）
前記の式（４）のうち、表記“ａ”、“ｂ”、“ｃ”、“ｄ”は、キュービックフィルタの４個のタップのそれぞれの係数であって、サブ画素の位置によってその値が決定される。また、表記“ｓ”も、サブ画素の位置によってその値が決定される。
【００２５】
図２Ｄは、ＭＰＥＧ４による画素補間の様子を示す図である。図２Ｄに示されたＰ１、Ｐ２、Ｐ３、Ｐ４は、整数画素を表し、整数画素の間に位置した黒点は、サブ画素を表す。図２Ｄを参照するに、ＭＰＥＧ４の輝度成分及び色差成分に対する画素補間は、１／２画素単位までなされる。例えば、Ｐ１の位置をｄｘ＝０、ｄｙ＝０とすれば、図２Ｃに示された黒色点に該当する１／２画素は、次のような式（５）によってキュービックフィルタを使用して計算される。
【００２６】
ｄｘ＝１、ｄｙ＝０：Ｐ＝（Ｐ１＋Ｐ２＋１−ｒｃ）＞＞１
ｄｘ＝０、ｄｙ＝１：Ｐ＝（Ｐ１＋Ｐ３＋１−ｒｃ）＞＞１          （５）
ｄｘ＝１、ｄｙ＝１：Ｐ＝（Ｐ１＋Ｐ２＋Ｐ３＋Ｐ４−ｒｃ）＞＞１
前記の式（５）のうち、表記“ｒｃ”は、ラウンド制御（ｒｏｕｎｄｉｎｇ  ｃｏｎｔｒｏｌ）を意味し、０または１を有する。以下でも同様である。
【００２７】
図２Ｅは、ＶＣ１によってキュービックフィルタを使用した画素補間の様子を示す図である。図２Ｅに示されたＰ１、Ｐ２、Ｐ３、Ｐ４は、整数画素を表し、４個の矢印の収斂点は、サブ画素を表す。図２Ｅを参照するに、Ｈ.２６４／ＡＶＣの色差成分に対する画素補間は、固定され位置ではない、任意の位置でなされる。すなわち、図２Ｂに示された任意の位置の画素は、次のような式（６）によってキュービックフィルタを使用して計算される。
【００２８】
Ｐ＝（ａ＊Ｐ１＋ｂ＊Ｐ２＋ｃ＊Ｐ３＋ｄ＊Ｐ４＋ｒｃ）＞＞ｓ      （６）
前記の式（６）のうち、表記“ａ”、“ｂ”、“ｃ”、“ｄ”は、キュービックフィルタの４個のタップのそれぞれの係数であって、サブ画素の位置によってその値が決定される。また、表記“ｓ”も、サブ画素の位置によってその値が決定される。
【００２９】
前記のように、ＭＰＥＧ４、Ｈ.２６４／ＡＶＣ、ＶＣ１で使われるフィルタのそれぞれのタップ数と係数値とは異なるが、このような係数値は、調整が可能であり、あるタップの係数値を０にすることによってタップ数も調整が可能である。例えば、６タップフィルタを構成する６個のタップのうち、２個のタップの係数値を０にすることによって、この６タップフィルタは、４タップフィルタとして使われる。また、４タップフィルタを構成する４個のタップのうち、２個のタップの係数値を０にすることによって、この４タップフィルタは、２タップフィルタ、すなわち平均フィルタとして使われる。したがって、ＭＰＥＧ４、Ｈ.２６４／ＡＶＣ、ＶＣ１のそれぞれで使われるフィルタの間には、相互共有できる部分が存在するということが分かり、これを利用すれば、前記の３つのコーデック（ＣＯＤＥＣ）を何れもさらに小さい数のフィルタを利用して動き補償を効率的に処理しうる。
【００３０】
前記の３つのコーデックのうち、Ｈ.２６４／ＡＶＣが最も複雑な方式で画素を補間する。しかし、Ｈ.２６４／ＡＶＣは、輝度成分に対してリニアフィルタリング方式の６タップフィルタを使用し、色差成分に対しては、キュービックフィルタリング方式の４タップフィルタを使用するため、これらは、ＭＰＥＧ４、ＶＣ１のキュービックフィルタリング方式の４タップフィルタ及びＶＣ１のリニアフィルタリング方式の４タップフィルタに使われる。したがって、ＭＰＥＧ４、ＶＣ１の画素補間法は、Ｈ.２６４／ＡＶＣの画素補間法のサブセットと言える。
【００３１】
すなわち、６個のタップを有する一つのリニアフィルタは、その６個のタップのそれぞれの係数値を調整することにより、ＭＰＥＧ４のリニアフィルタ、Ｈ.２６４／ＡＶＣのリニアフィルタ、ＶＣ１のリニアフィルタの何れにも使われる。また、４個のタップを有するキュービックフィルタは、その４個のタップのそれぞれの係数値を調整することにより、ＭＰＥＧ４のキュービックフィルタ、Ｈ.２６４／ＡＶＣのキュービックフィルタ、ＶＣ１のキュービックフィルタの何れもに使われる。しかし、Ｈ.２６４／ＡＶＣによる輝度成分の画素補間過程は、式（２）による平均フィルタリング過程を要求している。
【００３２】
しかし、式（２）によって算出される１／４画素のそれぞれは、その位置によって画素補間時に利用される周辺の画素が異なる。すなわち、ｅ、ｇ、ｐ、ｒ位置の画素の値は、そのそれぞれの画素を中心にしたダイアモンド位置の画素値を利用して算出され、ｆ、ｉ、ｋ、ｇ位置の画素の値は、そのそれぞれの画素を中心にした十字位置の画素値を利用して算出される。このように、Ｈ.２６４／ＡＶＣの１／４画素補間過程は、画素の位置による複雑なフィルタリング過程であるため、ハードウェアとして具現されるのが容易でなかった。
【００３３】
図３は、本発明の一実施形態によるキュービックフィルタを示す図である。図３を参照するに、本実施形態では、前記のようなＨ.２６４／ＡＶＣの１／４画素補間過程を、図３に示したように、キュービックフィルタに適用した。図３に示された形態のキュービックフィルタを利用すれば、Ｈ.２６４／ＡＶＣの１／４画素補間過程は、キュービックフィルタという共通モジュールを通じてなされる。
【００３４】
一般的に、キュービックフィルタは、キュービックの頂点のそれぞれに位置した整数画素（Ｉｎｔｅｇｅｒ  ｐｅｌ）の値を利用して、キュービックの辺のそれぞれの中心に位置した１／２画素の値及びキュービックの中心に位置した１／２画素（Ｈａｌｆ  ｐｅｌ）の値を算出する。本実施形態では、このようなキュービックフィルタの特性を利用して前記の式（２）に該当する計算を処理する。例えば、ａ位置の１／４画素（Ｑｕａｔｅｒ  ｐｅｌ）の値は、Ｇ位置の整数画素の値、ｂ位置の１／２画素の値を、図３に示されたキュービックフィルタに適用することによって算出される。当業者ならば、他の位置の１／４画素の値も、図３に示したように算出されるということが分かる。
【００３５】
図４は、本発明の一実施形態によるマルチコーデック支援動き補償装置の構成図である。図４を参照するに、本実施形態によるマルチコーデック支援動き補償装置は、スレーブインターフェース（スレーブＩ／Ｆ）１０、マスターインターフェース（マスターＩ／Ｆ）２０、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）Ｉ／Ｆ  ３０、動き補償エンジン４０、第１メモリ５０、第２メモリ６０、及び加算器７０で構成される。
【００３６】
スレーブＩ／Ｆ  １０は、本実施形態によるマルチコーデック支援動き補償装置を備える動画復号化装置（図示せず）のシステムバスを経由して、外部動画符号化装置（図示せず）から伝送されたレジデューデータをフェッチし、フェッチされたレジデューデータを第２メモリ６０に出力する。また、スレーブＩ／Ｆ  １０は、システムバスを経由して、外部動画符号化装置から動き補償のために必要なパラメータであるＭＣ（Ｍｏｔｉｏｎ  Ｃｏｍｐｅｎｓａｔｉｏｎ）パラメータをフェッチし、フェッチされたＭＣパラメータをマスターＩ／Ｆ  ２０に出力する。
【００３７】
マスターＩ／Ｆ  ２０は、スレーブＩ／Ｆ  １０から入力されたＭＣパラメータを解釈し、その解釈結果に基づいて、ＭＣパラメータを選別してＤＭＡ  Ｉ／Ｆ  ３０及び動き補償エンジン４０に出力することにより、ＤＭＡ  Ｉ／Ｆ  ３０を構成するＤＭＡモジュール３１及びＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）モジュール３２のそれぞれの動作を制御し、動き補償エンジン４０を構成する垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３、キュービック整列部４４、及びキュービックフィルタ４５のそれぞれの動作を制御する。
【００３８】
第１メモリ５０は、動き補償エンジン４０によって生成された動き補償データを保存し、第２メモリ６０は、スレーブＩ／Ｆ  １０から入力されたレジデューデータを保存する。一般的に、第１メモリ５０及び第２メモリ６０は、ＳＲＡＭ（スタティックランダムアクセスメモリ）で具現される。加算器７０は、第１メモリ５０に保存された動き補償データと第２メモリ６０に保存されたレジデューデータとを合算することによって現在画像を復元し、復元された現在画像のデータをＤＭＡ  Ｉ／Ｆ  ３０に出力する。
【００３９】
ＤＭＡ  Ｉ／Ｆ  ３０は、ＤＭＡモジュール３１及びＦＩＦＯモジュール３２で構成される。ＤＭＡモジュール３１は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、システムバスを経由して外部メモリ（図示せず）から、参照画像と現在画像との間に共有される参照画像の３２ビット単位のデータをフェッチし、加算器７０によって復元された現在画像を外部メモリに保存する。
【００４０】
ＦＩＦＯモジュール３２は、ＤＭＡモジュール３１によってフェッチされた３２ビット単位のデータを８ビット単位で抽出して順次に動き補償エンジン４０に出力する。特に、ＦＩＦＯモジュール３２は、実際に動き補償のために必要なデータのみを動き補償エンジン４０に出力する８ビットアンパッキング以外に、参照画像に動きベクトルが指示するデータが存在しない場合、この動きベクトルによるパッディングも共に行う。
【００４１】
動き補償エンジン４０は、ＤＭＡ  Ｉ／Ｆ  ３０から入力された８ビット単位のデータに対する動き補償を行う。さらに詳細に説明すると、動き補償エンジン４０は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータ中の複数のコーデックのうち何れか一つを表すコーデック情報、複数の色成分のうち何れか一つを表す色情報、及び複数のフィルタのうち何れか一つを表すフィルタ情報によって現在画像に対応する参照画像の画素を補間する複数の方式、すなわち、垂直リニアフィルタリング、水平リニアフィルタリング、キュービックフィルタリングのうち少なくとも一つの方式を利用して、参照画像の画素の値からその画素の間に位置した画素の値を算出する。
【００４２】
図４を参照するに、動き補償エンジン４０は、さらに垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３、キュービック整列部４４、及びキュービックフィルタ４５で構成される。
【００４３】
垂直フィルタ４１は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータ中の複数のコーデックのうち何れか一つを表すコーデック情報、複数の色成分のうち何れか一つを表す色情報、及び複数のフィルタのうち何れか一つを表すフィルタ情報によって、選択的にＤＭＡ  Ｉ／Ｆ  ３０から入力された参照画像の何れか一ブロックの何れか一つの垂直ラインに位置した整数画素の値から、この垂直ラインに位置した整数画素の間に位置した１／２画素の値を算出する。特に、垂直フィルタ４１は、６個のタップを有するリニアフィルタで具現され、前記の垂直ラインに位置した整数画素の値を６個のタップに適用することにより、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち前記のブロックの動きベクトルが指示する１／２画素の値を算出する。
【００４４】
第１水平フィルタ４２は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうちコーデック情報、色情報、及びフィルタ情報によって、選択的にＤＭＡ  Ｉ／Ｆ  ３０から入力された参照画像の何れか一ブロックの何れか一つの水平ラインに位置した整数画素の値から、その水平ラインに位置した整数画素の間に位置した１／２画素の値を算出する。特に、第１水平フィルタ４２は、６個のタップを有するリニアフィルタで具現され、前記の水平ラインに位置した画素の値を６個のタップに適用することにより、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち前記のブロックの動きベクトルが指示する１／２画素の値を算出する。
【００４５】
第２水平フィルタ４３は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的に第１水平フィルタ４２によって処理される水平ラインでない他の水平ラインに位置した整数画素または１／２画素の値から、その水平ラインに位置した整数画素の間に位置した１／２画素の値を算出する。ここで、１／２画素は、周辺の整数画素から算出される。特に、第２水平フィルタ４３は、６個のタップを有するリニアフィルタで具現され、前記の水平ラインに位置した整数画素または１／２画素の値を６個のタップに適用することにより、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち前記のブロックの動きベクトルが指示する１／２画素の値を算出する。
【００４６】
キュービック整列部４４は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的に前記のブロックの動きベクトルが指示する１／２画素、１／４画素、または任意の位置の画素の値を生成するために要求されるキュービック位置に、ＤＭＡ  Ｉ／Ｆ  ３０から入力された整数画素または１／２画素の値を整列する。
【００４７】
キュービックフィルタ４５は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的に図３に示されたところによって、キュービック整列部４４によって整列された４個の整数画素の値から、この整列された画素の間に位置した１／２画素、１／４画素、または任意の位置の画素の値を算出する。また、キュービックフィルタ４５は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的に第１水平フィルタ４２及び第２水平フィルタ４３から入力された輝度成分のブロックの何れか一つのキュービックに位置した２個の整数画素または１／２画素の値から、このキュービックに位置した２個の画素の間に位置した１／２画素または１／４画素の値を算出する。特に、キュービックフィルタ４５は、４個のタップを有するキュービックフィルタで具現され、前記のキュービック位置の２個または４個の画素の値をこのキュービック位置に対応する２個のタップまたは４個のタップに適用することにより、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、前記のブロックの動きベクトルが指示する１／２画素、１／４画素、任意の位置の画素の値を算出する。
【００４８】
垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３、キュービック整列部４４及びキュービックフィルタ４５のそれぞれは、全ての画素に対して動作するのではなく、動きベクトルの値によって動作する。それは、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち動きベクトルが整数画素の位置を指示する場合には、参照画面と予測画面との間の動きが正確に整数画素間隔の倍数に該当する場合であるため、参照画面を構成する整数画素の値が予測画面を構成する画素の値となるので、垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３、キュービック整列部４４、及びキュービックフィルタ４５による画素値補間が不要である。しかし、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち動きベクトルが１／２画素または１／４画素の位置を指示する場合には、参照画面と予測画面との間の動きが正確に整数画素間隔の倍数に該当しない場合であるため、参照画面を構成する整数画素の値を利用して補間された値が予測画面を構成する画素の値となるので、垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３、キュービック整列部４４及びキュービックフィルタ４５による画素値補間が必要である。
【００４９】
垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３、キュービック整列部４４及びキュービックフィルタ４５による画素値補間が参照画像全体に対して行われば、垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３及びキュービックフィルタ４５によって処理されず、そのまま通過された整数画素の値、これらフィルタによって算出された１／２画素の値、１／４画素の値及び任意の位置の画素の値全体は、前記の参照画像に対応する現在画像の動き補償データとして完成される。
【００５０】
図５ないし図７は、図４に示された動き補償装置での各コーデック別動作シナリオを示す図である。図５ないし図７を参照するに、Ｈ.２６４／ＡＶＣの輝度成分とＶＣ１とは、リニアフィルタリングを行うために、水平フィルタリングと垂直フィルタリングとを行い、その他の場合には、キュービック整列を通じてキュービックフィルタリングを行う。
【００５１】
図５は、図４に示された動き補償装置でのＨ.２６４／ＡＶＣのリニアフィルタ及びキュービックフィルタの動作シナリオを示す図である。図５を参照するに、図４に示された動き補償装置は、次のような動作シナリオによってＨ.２６４／ＡＶＣの輝度成分フィルタリングを行う。
【００５２】
ＤＭＡ  Ｉ／Ｆ  ３０は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、システムバスを経由して外部メモリから参照画像の輝度成分を所定サイズのブロック単位でフェッチし、フェッチされた輝度成分のブロックを垂直フィルタ４１に出力する。
【００５３】
垂直フィルタ４１は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報がＨ.２６４／ＡＶＣを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表せば、ＤＭＡ  Ｉ／Ｆ  ３０から入力された輝度成分のブロックを構成する整数画素のうち何れか一つの垂直ラインに位置した整数画素の値から、この垂直ラインに位置した整数画素の間に位置した１／２画素の値を算出する。特に、垂直フィルタ４１は、前記の垂直ラインに位置した整数画素の値を６個のタップに適用することにより、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、前記のブロックの動きベクトルが指示する１／２画素の値を算出し、算出された１／２画素の値を第１水平フィルタ４２または第２水平フィルタ４３に出力する。垂直フィルタ４１は、前記のブロックの動きベクトルが整数画素を指示すれば、ＤＭＡ  Ｉ／Ｆ  ３０から入力された輝度成分のブロックを構成する整数画素の値をそのまま第１水平フィルタ４２または第２水平フィルタ４３に出力する。
【００５４】
例えば、動きベクトルが指示する画素の位置が図２Ａに示されたｈである場合ならば、垂直フィルタ４１は、Ａ、Ｃ、Ｇ、Ｍ、Ｒ、Ｔ位置の整数画素値を６個のタップに適用して、ｈ１＝（Ａ−５＊Ｃ＋２０＊Ｇ＋２０＊Ｍ−５＊Ｒ＋Ｔ）、ｈ＝Ｃｌｉｐ１Ｙ（（ｈ１＋１６）＞＞５）を計算することによってｈ位置の１／２画素の値を算出する。
【００５５】
第１水平フィルタ４２は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報がＨ.２６４／ＡＶＣを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表せば、垂直フィルタ４１を経由してＤＭＡ  Ｉ／Ｆ  ３０から入力された輝度成分のブロックを構成する整数画素のうち何れか一つの水平ラインに位置した整数画素の値から、この水平ラインに位置した整数画素の間に位置した１／２画素の値を算出する。特に、第１水平フィルタ４２は、前記の水平ラインに位置した整数画素の値を６個のタップに適用することにより、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、前記のブロックの動きベクトルが指示する１／２画素の値を算出し、算出された１／２画素の値をキュービックフィルタ４５に出力する。また、第１水平フィルタ４２は、前記のブロックの動きベクトルが整数画素を指示すれば、ＤＭＡ  Ｉ／Ｆ  ３０から入力された輝度成分のブロックを構成する整数画素の値をそのままキュービックフィルタ４５に出力する。また、第１水平フィルタ４２は、垂直フィルタ４１から入力された１／２画素の値をそのままキュービックフィルタ４５に出力する。
【００５６】
例えば、動きベクトルが指示する画素の位置が図２に示されたｂである場合ならば、第１水平フィルタ４２は、Ｅ、Ｆ、Ｇ、Ｈ、Ｉ、Ｊ位置の整数画素値を６個のタップに適用してｂ１＝（Ｅ−５＊Ｆ＋２０＊Ｇ＋２０＊Ｈ−５＊Ｉ＋Ｊ）、ｂ＝Ｃｌｉｐ１Ｙ（（ｂ１＋１６）＞＞５）を計算することによってｂ位置の１／２画素の値を算出する。
【００５７】
第２水平フィルタ４３は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報がＨ.２６４／ＡＶＣを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表せば、垂直フィルタ４１を経由してＤＭＡ  Ｉ／Ｆ  ３０から入力された輝度成分のブロックを構成する整数画素のうち、前記の水平ラインでない他の水平ラインに位置した整数画素または１／２画素の値からこの水平ラインに位置した整数画素または１／２画素の間に位置した１／２画素の値を算出する。特に、第２水平フィルタ４３は、この水平ラインに位置した整数画素または１／２画素の値を６個のタップに適用することにより、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、前記のブロックの動きベクトルが指示する１／２画素の値を算出し、算出された１／２画素の値をキュービックフィルタ４５に出力する。また、第２水平フィルタ４３は、前記のブロックの動きベクトルが整数画素を指示すれば、ＤＭＡ  Ｉ／Ｆ  ３０から入力された輝度成分のブロックを構成する整数画素の値をそのままキュービックフィルタ４５に出力する。また、第２水平フィルタ４３は、垂直フィルタ４１から入力された１／２画素の値をそのままキュービックフィルタ４５に出力する。
【００５８】
例えば、動きベクトルが指示する画素の位置が図２に示されたｊである場合ならば、第２水平フィルタ４３は、ｃｃ、ｄｄ、ｈ１、ｍ１、ｅｅ、ｆｆ位置の１／２画素値を６個のタップに適用して、ｊ１＝ｃｃ−５＊ｄｄ＋２０＊ｈ１＋２０＊ｍ１−５＊ｅｅ＋ｆｆ、ｊ＝Ｃｌｉｐ１Ｙ（（ｊ１＋５１２）＞＞１０）を計算することによってｊ位置の１／２画素の値を算出する。前記の式（２）のうち、ｆ＝（ｂ＋ｊ＋１）＞＞１のように、ある１／４画素の値を求めるためには、同時に二つの１／２画素の値が要求される場合がある。このような場合、ｂ位置の１／２画素の値を算出する過程とｊ位置の１／２画素の値を算出する過程とを同時に処理するために、第１水平フィルタ４２と第２水平フィルタ４３とが別途に存在する。
【００５９】
キュービックフィルタ４５は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報がＨ.２６４／ＡＶＣを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表せば、第１水平フィルタ４２及び第２水平フィルタ４３から入力された輝度成分のブロックの何れか一つのキュービックに位置した整数画素または１／２画素の値から、このキュービックに位置した２個の画素の間に位置した１／４画素の値を算出する。特に、キュービックフィルタ４５は、前記のキュービック位置の２個の画素の値を、４個のタップのうち前記のキュービック位置に対応する２個のタップに適用することにより、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち前記のブロックの動きベクトルが指示する１／４画素の値を算出し、算出された１／４画素の値を第１メモリ５０に出力する。また、キュービックフィルタ４５は、第１水平フィルタ４２または第２水平フィルタから入力された整数画素または１／２画素の値をそのまま第１メモリ５０に出力する。
【００６０】
例えば、動きベクトルが指示する画素の位置が図２に示されたａである場合ならば、キュービックフィルタ４５は、Ｇ位置の整数画素値及びｂ位置の１／２画素値を、４個のタップのうち前記キュービック位置に対応する２個のタップに適用して、ａ＝（Ｇ＋ｂ＋１）＞＞１を計算することによってａ位置の１／４画素の値を算出する。
【００６１】
図５を参照するに、図４に示された動き補償装置は、次のような動作シナリオによって、Ｈ.２６４／ＡＶＣの色差成分Ｃｂフィルタリングを行う。
【００６２】
ＤＭＡ  Ｉ／Ｆ  ３０は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、システムバスを経由して外部メモリから参照画像の色差成分Ｃｂを所定サイズのブロック単位でフェッチし、フェッチされた色差成分Ｃｂのブロックをキュービック整列部４４に出力する。
【００６３】
キュービック整列部４４は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報がＨ.２６４／ＡＶＣを表し、色情報が色差成分Ｃｂを表し、フィルタ情報がキュービックフィルタを表せば、マスターＩ／Ｆ  ２０から入力された動きベクトルが指示する任意の位置の画素の値を生成するために要求されるキュービック位置に、ＤＭＡ  Ｉ／Ｆ  ３０から入力された色差成分Ｃｂのブロックを構成する整数画素の値のうち４個を整列し、整列された４個の整数画素の値をキュービックフィルタ４５に出力する。
【００６４】
キュービックフィルタ４５は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報がＨ.２６４／ＡＶＣを表し、色情報が色差成分Ｃｂを表し、フィルタ情報がキュービックフィルタを表せば、図３に示されたところによって、キュービック整列部４４によって整列された４個の整数画素の値から、この整列された画素の間に位置した任意の位置の画素の値を算出する。特に、キュービックフィルタ４５は、前記のキュービック位置の４個の画素の値を前記キュービック位置に対応する４個のタップに適用することにより、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち前記ブロックの動きベクトルが指示する１／４画素の値を算出し、算出された１／４画素の値を第１メモリ５０に出力する。
【００６５】
例えば、動きベクトルが指示する画素の位置が図２Ｂに示された４つの矢印の収斂点である場合ならば、キュービックフィルタ４５は、Ｐ１、Ｐ２、Ｐ３及びＰ４位置の整数画素値を４個のタップに適用して、Ｐ＝（（８−ｘＦｒｃ）＊（８−ｙＦｒｃ）＊Ｐ１＋ｘＦｒｃ＊（８−ｙＦｒｃ）＊Ｐ２＋（８−ｘＦｒｃ）＊ｙＦｒｃ＊Ｐ３＋ｘＦｒｃ＊ｙＦｒｃ＊Ｐ４＋３２）＞＞６を計算することによって、任意の位置の画素の値を算出する。
【００６６】
図５を参照するに、ＤＭＡ  Ｉ／Ｆ  ３０、キュービック整列部４４、キュービックフィルタ４５のそれぞれは、色差成分Ｃｒに対しても、前記色差成分Ｃｂの動作シナリオと同一に動作する。したがって、Ｈ.２６４／ＡＶＣの色差成分Ｃｂフィルタリングの動作シナリオについての詳細な説明は省略する。
【００６７】
図６は、図４に示された動き補償装置でのＶＣ１のリニアフィルタの動作シナリオを示す図である。図６を参照するに、図４に示された動き補償装置は、次のような動作シナリオによってＶＣ１の輝度成分フィルタリングを行う。
【００６８】
ＤＭＡ  Ｉ／Ｆ  ３０は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、システムバスを経由して外部メモリから参照画像の輝度成分を所定サイズのブロック単位でフェッチし、フェッチされた輝度成分のブロックを垂直フィルタ４１に出力する。
【００６９】
垂直フィルタ４１は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報がＶ１を表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表せば、ＤＭＡ  Ｉ／Ｆ  ３０から入力された輝度成分のブロックを構成する整数画素のうち何れか一つの垂直ラインに位置した整数画素の値から、この垂直ラインに位置した整数画素の間に位置した１／２画素または１／４画素の値を算出する。特に、垂直フィルタ４１は、前記の垂直ラインに位置した整数画素の値を４個のタップに適用することにより、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、前記ブロックの動きベクトルが指示する１／２画素または１／４画素の値を算出し、算出された１／２画素または１／４画素の値を第１水平フィルタ４２に出力する。垂直フィルタ４１は、４タップフィルタの係数値を調整することによって１／２画素または１／４画素の値を算出しうる。また、垂直フィルタ４１は、前記ブロックの動きベクトルが整数画素を指示すれば、ＤＭＡ  Ｉ／Ｆ  ３０から入力された輝度成分のブロックを構成する整数画素の値をそのまま第１水平フィルタ４２に出力する。
【００７０】
図５に示された実施形態では、垂直フィルタ４１及び第１水平フィルタ４２として６タップフィルタが使われた。６タップフィルタは、６個のタップのうち２個のタップが使われずに、ハードウェア構造の変更なしに４タップフィルタとして使われるため、図６に示された実施形態では、垂直フィルタ４１及び第１水平フィルタ４２は、４タップフィルタとなりうる。
【００７１】
第１水平フィルタ４２は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報がＶ１を表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表せば、垂直フィルタ４１を経由してＤＭＡ  Ｉ／Ｆ  ３０から入力された輝度成分のブロックを構成する整数画素のうち何れか一つの水平ラインに位置した整数画素値から、この水平ラインに位置した整数画素の間に位置した１／２画素または１／４画素の値を算出する。特に、第１水平フィルタ４２は、前記水平ラインに位置した整数画素値を４個のタップに適用することにより、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、前記ブロックの動きベクトルが指示する１／２画素または１／４画素の値を算出し、算出された１／２画素または１／４画素の値をキュービックフィルタ４５に出力する。また、第１水平フィルタ４２は、前記ブロックの動きベクトルが整数画素を指示すれば、垂直フィルタ４１を経由してＤＭＡ  Ｉ／Ｆ  ３０から入力された輝度成分のブロックを構成する整数画素の値をそのまま第１メモリ５０に出力する。また、第１水平フィルタ４２は、垂直フィルタ４１から入力された１／２画素または１／４画素の値をそのまま第１メモリ５０に出力する。
【００７２】
例えば、動きベクトルが指示する画素の位置が図２Ｃに示された黒点である場合ならば、第１水平フィルタ４２は、Ｐ１、Ｐ２、Ｐ３及びＰ４位置の整数画素値を４個のタップに適用してＰ＝（ａ＊Ｐ１＋ｂ＊Ｐ２＋ｃ＊Ｐ３＋ｄ＊Ｐ４＋ｒｃ）＞＞ｓを計算することにより、図２Ｃに示された黒色点に該当する１／２画素または１／４画素の値を算出する。垂直フィルタ４１の具体的な例は、示されていないが、水平フィルタリングが垂直フィルタリングに変わることを除いては、前記の通りである。また、図６を参照するに、ＤＭＡ  Ｉ／Ｆ  ３０、垂直フィルタ４１、第２水平フィルタ４３のそれぞれは、色差成分Ｃｂ、Ｃｒに対しても、前記輝度成分の動作シナリオと同一に動作する。
【００７３】
ＶＣ１のリニアフィルタとして参照画像の輝度成分に対する動きを補償する過程は、二つの水平フィルタが同時に使われねばならない場合がないため、何れか一つの水平フィルタのみが使われればよい。特に、本実施形態では、第１水平フィルタ４２及び第２水平フィルタ４３のうち、第１水平フィルタ４２を使用するとしたが、当業者ならば、第２水平フィルタ４３を使用することもあるということが分かる。
【００７４】
図７は、図４に示された動き補償装置でのＭＰＥＧ４及びＶＣ１のキュービックフィルタの動作シナリオを示す図である。図７を参照するに、図４に示された動き補償装置は、次のような動作シナリオによってＭＰＥＧ４及びＶＣ１の輝度成分フィルタリングを行う。
【００７５】
ＤＭＡ  Ｉ／Ｆ  ３０は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、システムバスを経由して外部メモリから参照画像の色差成分Ｃｂを所定サイズのブロック単位でフェッチし、フェッチされた輝度成分のブロックをキュービック整列部４４に出力する。
【００７６】
キュービック整列部４４は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報がＭＰＥＧ４またはＶＣ１を表し、色情報が輝度成分を表し、フィルタ情報がキュービックフィルタを表せば、マスターＩ／Ｆ  ２０から入力された動きベクトルが指示する１／２画素または任意の位置の画素の値を生成するために要求されるキュービック位置に、ＤＭＡ  Ｉ／Ｆ  ３０から入力された輝度成分のブロックを構成する整数画素の値のうち４個を整列し、整列された４個の整数画素の値をキュービックフィルタ４５に出力する。
【００７７】
キュービックフィルタ４５は、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、コーデック情報がＭＰＥＧ４またはＶＣ１を表し、色情報が輝度成分を表し、フィルタ情報がキュービックフィルタを表せば、図３に示されたところによって、キュービック整列部４４によって整列された４個の整数画素の値から、この整列された画素の間に位置した１／２画素または任意の位置の画素の値を算出する。特に、キュービックフィルタ４５は、前記キュービック位置の４個の画素の値を前記キュービック位置に対応する４個のタップに適用することにより、マスターＩ／Ｆ  ２０から入力されたＭＣパラメータのうち、前記ブロックの動きベクトルが指示する１／２画素または任意の位置の画素の値を算出し、算出された１／２画素または任意の位置の画素の値を第１メモリ５０に出力する。
【００７８】
例えば、動きベクトルが指示する画素の位置が図２Ｄに示された黒点である場合ならば、キュービックフィルタ４５は、Ｐ１、Ｐ２、Ｐ３及びＰ４位置の整数画素値を４個のタップに適用して、Ｐ＝（Ｐ１＋Ｐ２＋１−ｒｃ）＞＞１、Ｐ＝（Ｐ１＋Ｐ３＋１−ｒｃ）＞＞１、Ｐ＝（Ｐ１＋Ｐ２＋Ｐ３＋Ｐ４−ｒｃ）＞＞１を計算することにより、図２Ｄに示された黒色点に該当する画素の値を算出する。また、動きベクトルが指示する画素の位置が図２Ｅに示された４つの矢印の収斂点である場合ならば、キュービックフィルタ４５は、Ｐ１、Ｐ２、Ｐ３及びＰ４位置の整数画素値を４個のタップに適用して、Ｐ＝（ａ＊Ｐ１＋ｂ＊Ｐ２＋ｃ＊Ｐ３＋ｄ＊Ｐ４＋ｒｃ）＞＞ｓを計算することにより、任意の位置の画素の値を算出する。
【００７９】
図７を参照するに、ＤＭＡ  Ｉ／Ｆ  ３０、キュービック整列部４４、キュービックフィルタ４５のそれぞれは、色差成分Ｃｂ、Ｃｒに対しても、前記輝度成分の動作シナリオと同一に動作する。
【００８０】
特に、本実施形態は、レジスターアレイ方式を採択している。第１水平フィルタ４２または第２水平フィルタ４３による水平フィルタリング及び垂直フィルタ４１による垂直フィルタリングを何れも行う場合には、水平フィルタリングの結果値を垂直フィルタリングで使用するか、または垂直フィルタリングの結果値を水平フィルタリングで使用する。
【００８１】
図８は、図４に示された垂直フィルタ４１の内部のレジスターアレイチェーンを示す図である。図８を参照するに、図４に示された垂直フィルタ４１の内部のレジスターアレイチェーンは、Ｈ.２６４／ＡＶＣの場合に、何れか一つのブロックの何れか一つのラインを構成する画素の数が２１個であることを考慮して、２１個の８ビットレジスターで構成される。Ｈ.２６４／ＡＶＣ以外の他のコーデックの場合には、何れか一つのブロックの何れか一つのラインを構成する画素の数が２１個未満である。特に、Ｈ.２６４／ＡＶＣは、６タップフィルタを使用するため、このようなレジスターアレイチェーンが５個必要であり、相互直列に連結される。何れか一つのレジスターアレイチェーンの出力値は、これに連結された他のレジスターアレイチェーンの入力値となる。
【００８２】
図４に示された垂直フィルタ４１の内部のレジスターアレイチェーンは、ＤＭＡ  Ｉ／Ｆ  ３０からクロックごとに８ビットに該当する一画素の値を入力され、入力された画素値をＲ０レジスターに保存すると同時に、２１個のレジスターのそれぞれに現在保存された画素値を右側に一つずつシフトし、これにより、Ｒ２０レジスターに保存された画素値を送出する。
【００８３】
特に、図４に示された垂直フィルタ４１の内部のレジスターアレイチェーンは、Ｈ.２６４／ＡＶＣ、ＶＣ１のそれぞれの動きベクトルが指示する画素の位置が整数画素である場合、クロックごとに８×１
ＭＵＸを通じてブロックサイズによって、Ｒ３レジスターに保存された画素値、Ｒ７レジスターに保存された画素値、Ｒ１５レジスターに保存された画素値のうち何れか一つを出力する。例えば、図４に示された垂直フィルタ４１の内部のレジスターアレイチェーンは、動き補償エンジン４０によって４ｘ４ブロック単位で動き補償がなされる場合には、Ｒ３レジスターに保存された画素値を出力し、８×８ブロック単位で動き補償がなされる場合には、Ｒ７レジスターに保存された画素値を出力し、１６×１６ブロック単位で動き補償がなされる場合には、Ｒ１５レジスターに保存された画素値を出力する。
【００８４】
もし、Ｈ.２６４／ＡＶＣの動きベクトルが指示する画素の位置が整数画素ではない場合、図４に示された垂直フィルタ４１の内部のレジスターアレイチェーンは、ブロックサイズによってＲ８レジスターに保存された画素値、Ｒ１２レジスターに保存された画素値、Ｒ２０レジスターに保存された画素値のうち何れか一つを出力する。例えば、図４に示された垂直フィルタ４１の内部のレジスターアレイチェーンは、動き補償エンジン４０によって４×４ブロック単位で動き補償がなされる場合には、Ｒ８レジスターに保存された画素値を出力し、８×８ブロック単位で動き補償がなされる場合には、Ｒ１２レジスターに保存された画素値を出力し、１６×１６ブロック単位で動き補償がなされる場合には、Ｒ２０レジスターに保存された画素値を出力する。
【００８５】
もし、ＶＣ１コーデックで動きベクトルが指示する画素の位置が整数画素ではない場合、図４に示された垂直フィルタ４１の内部のレジスターアレイチェーンは、ブロックサイズによって、Ｒ１０レジスターの出力値、Ｒ１８レジスターの出力値のうち何れか一つを出力する。例えば、図４に示された垂直フィルタ４１の内部のレジスターアレイチェーンは、動き補償エンジン４０によって８×８ブロック単位で動き補償がなされる場合には、Ｒ１０レジスターに保存された画素値を出力し、１６×１６ブロック単位で動き補償がなされる場合には、Ｒ２０レジスターに保存された画素値を出力する。ＶＣ１の場合には、４×４ブロックモードを支援しない。
【００８６】
図９は、図４に示された垂直フィルタ４１の内部の６タップフィルタの構成図である。図９を参照するに、図４に示された垂直フィルタ４１の内部の６タップフィルタは、図８に示されたレジスターアレイチェーンの出力値を入力される。すなわち、図４に示された垂直フィルタ４１の内部の６タップフィルタは、図８に示されたレジスターアレイチェーンから６個のクロックの間に出力されて累積された６個の画素値、すなわち、レジスター１〜５に保存された５個の整数画素値及び現在入力された一つの画素値から、この画素の間に位置した１／２画素の値を算出する。一つのレジスターアレイチェーンからの出力値は、６タップフィルタの一つのレジスターに保存されるため、６タップフィルタの５個のレジスターに対応してレジスターアレイチェーンが５個が必要である。すなわち、図９に示された６タップフィルタは、式（１）に示された演算、例えば、ｂ１＝（Ｅ−５＊Ｆ＋２０＊Ｇ＋２０＊Ｈ−５＊Ｉ＋Ｊ）を計算するために、９個のレジスター、４個の乗算器、５個の加算器を備えている。図９に示された最も左側の加算器の二つの入力端子と４個の乗算器のそれぞれの入力端子とが６個のタップに該当する。
【００８７】
図１０は、図４に示された動き補償装置の内部でのデータ処理についてのタイミング図である。図１０を参照するに、外部メモリに対して参照画像に該当する３２ビット単位のデータを伝送することを要請した後に、このデータを受信するために待機するデータレーテンシ区間と外部メモリから３２ビット単位のデータを受信するデータ伝達区間との間、ＤＭＡ  Ｉ／Ｆ  ３０、垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３、及びキュービックフィルタ４５は、パイプライン形態でそのそれぞれの動作を行う。一般的に、データレーテンシ区間及びデータ伝達区間が非常に長いため、垂直フィルタ４１、第１水平フィルタ４２、第２水平フィルタ４３、及びキュービックフィルタ４５のフィルタリング動作がこの区間に隠されて行われる。これにより、動き補償をさらに高速で処理しうる。
【００８８】
図１１は、本発明の望ましい一実施形態によるマルチコーデック支援動き補償方法のフローチャートである。図１１を参照するに、本実施形態によるマルチコーデック支援動き補償方法は、図４に示されたマルチコーデック支援動き補償装置で時系列的に処理されるステップで構成される。したがって、以下省略された内容であっても、図１１に示されたマルチコーデック支援動き補償装置について前述した内容は、本実施形態によるマルチコーデック支援動き補償方法にも適用される。
【００８９】
ステップ１００で、マルチコーデック支援動き補償装置は、システムバスを経由して外部符号化装置から、参照画像と現在画像との差に該当するレジデューデータ及び動き補償のために必要なパラメータのＭＣパラメータをフェッチする。
【００９０】
ステップ２００で、マルチコーデック支援動き補償装置は、ステップ１００でフェッチされたレジデューデータを保存する。
【００９１】
ステップ３００で、マルチコーデック支援動き補償装置は、ステップ１００でフェッチされたＭＣパラメータのうち、現在画像のブロックと参照画像の対応ブロックとの間の変位を表す動きベクトルを参照して、システムバスを経由して外部メモリから参照画像と現在画像との間に共有される参照画像の３２ビット単位のデータをフェッチする。
【００９２】
ステップ４００で、マルチコーデック支援動き補償装置は、ステップ３００でフェッチされた３２ビット単位のデータに対して、８ビットアンパッキング及び動きベクトルによるパッディングを行う。
【００９３】
ステップ５００で、マルチコーデック支援動き補償装置は、ステップ１００でフェッチされたＭＣパラメータのうち、複数のコーデックのうち何れか一つを表すコーデック情報、複数の色成分のうち何れか一つを表す色情報、及び複数のフィルタのうち何れか一つを表すフィルタ情報によって、選択的にステップ４００での処理結果に該当する参照画像の何れか一つのブロックの何れか一つの垂直ラインに位置した整数画素の値から、この垂直ラインに位置した整数画素の間に位置した１／２画素の値を算出する。
【００９４】
さらに詳細に説明すれば、ステップ５００で、マルチコーデック支援動き補償装置は、コーデック情報がＨ.２６４／ＡＶＣを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表す場合、またはコーデック情報がＶＣ１を表し、色情報が輝度成分または色差成分を表し、フィルタ情報がリニアフィルタを表す場合に、ステップ４００での処理結果に該当する参照画像の何れか一つのブロックの何れか一つの垂直ラインに位置した整数画素の値から、この垂直ラインに位置した整数画素の間に位置した１／２画素の値を算出する。残りの場合については、前記のようなステップ５００での垂直フィルタリングは、行われない。
【００９５】
ステップ６００で、マルチコーデック支援動き補償装置は、ステップ１００でフェッチされたＭＣパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的にステップ４００での処理結果に該当する参照画像の何れか一つのブロックの何れか一つの水平ラインに位置した整数画素の値から、この水平ラインに位置した整数画素の間に位置した１／２画素または１／４画素の値を算出する。
【００９６】
さらに詳細に説明すれば、ステップ６００で、マルチコーデック支援動き補償装置は、コーデック情報がＨ.２６４／ＡＶＣを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表す場合、またはコーデック情報がＶＣ１を表し、色情報が輝度成分または色差成分を表し、フィルタ情報がリニアフィルタを表す場合に、ステップ４００での処理結果に該当する参照画像の何れか一つのブロックの何れか一つの垂直ラインに位置した整数画素の値から、この垂直ラインに位置した整数画素の間に位置した１／２画素または１／４画素の値を算出する。残りの場合については、前記のようなステップ６００での垂直フィルタリングは、行われない。
【００９７】
ステップ７００で、マルチコーデック支援動き補償装置は、ステップ１００でフェッチされたＭＣパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的にステップ６００で処理される水平ラインでない他の水平ラインに位置した整数画素または１／２画素の値から、この水平ラインに位置した整数画素または１／２画素の間に位置した１／２画素の値を算出する。
【００９８】
さらに詳細に説明すると、ステップ７００で、マルチコーデック支援動き補償装置は、コーデック情報がＨ.２６４／ＡＶＣを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表す場合に、ステップ６００で処理される水平ラインでない他の水平ラインに位置した整数画素または１／２画素の値から、この水平ラインに位置した整数画素または１／２画素の間に位置した１／２画素の値を算出する。残りの場合については、前記のようなステップ７００での垂直フィルタリングは、行われない。
【００９９】
ステップ８００で、マルチコーデック支援動き補償装置は、ステップ１００でフェッチされたＭＣパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的に輝度成分のブロックの何れか一つのキュービックに位置した整数画素またはステップ６００及びステップ７００で算出された１／２画素の値から、このキュービックに位置した２個の画素の間に位置した１／４画素の値を算出する。
【０１００】
さらに詳細に説明すると、ステップ８００で、マルチコーデック支援動き補償装置は、コーデック情報がＨ.２６４／ＡＶＣを表し、色情報が輝度成分を表し、フィルタ情報がリニアフィルタを表す場合に、輝度成分のブロックの何れか一つのキュービックに位置した整数画素またはステップ６００及びステップ７００で算出された１／２画素の値から、このキュービックに位置した２個の画素の間に位置した１／４画素の値を算出する。残りの場合については、前記のようなステップ８００でのキュービックフィルタリングは行われない。
【０１０１】
ステップ９００で、マルチコーデック支援動き補償装置は、ステップ１００でフェッチされたＭＣパラメータのうち、コーデック情報、色情報、及びフィルタ情報によって、選択的に前記ブロックの動きベクトルが指示する１／２画素、１／４画素、または任意の位置の画素の値を生成するために要求されるキュービック位置に、ステップ４００での処理結果に該当する整数画素の値を整列する。
【０１０２】
さらに詳細に説明すると、ステップ９００で、マルチコーデック支援動き補償装置は、コーデック情報がＨ.２６４／ＡＶＣを表し、色情報が色差成分を表し、フィルタ情報がキュービックフィルタを表す場合、コーデック情報がＭＰＥＧ４を表し、色情報が輝度成分または色差成分を表し、フィルタ情報がキュービックフィルタを表す場合、またはコーデック情報がＶＣ１を表し、色情報が輝度成分または色差成分を表し、フィルタ情報がキュービックフィルタを表す場合に、前記ブロックの動きベクトルが指示する１／２画素、１／４画素、または任意の位置の画素の値を生成するために要求されるキュービック位置に、ステップ４００での処理結果に該当する整数画素の値を整列する。残りの場合については、前記のようなステップ９００でのキュービック整列は行われない。
【０１０３】
ステップ１０００で、マルチコーデック支援動き補償装置は、図３に示されたところによって、ステップ９００で整列された４個の整数画素の値から、この整列された画素の間に位置した１／２画素、１／４画素、または任意の位置の画素の値を算出する。
【０１０４】
ステップ１１００で、マルチコーデック支援動き補償装置は、ステップ３００からステップ１０００までの過程が参照画像全体に対して完了されたか否かを確認し、その結果、完了されたならば、ステップ１２００に進み、完了されていなければ、ステップ３００に戻る。
【０１０５】
ステップ１２００で、マルチコーデック支援動き補償装置は、ステップ３００からステップ１０００までの過程によって生成された動き補償データを保存する。
【０１０６】
ステップ１３００で、マルチコーデック支援動き補償装置は、ステップ１２００で保存された動き補償されたデータとステップ２００で保存されたレジデューデータとを合算することによって現在画像を復元する。
【０１０７】
一方、前述した本発明の実施形態は、コンピュータで実行できるプログラムで作成可能であり、コンピュータで読み取り可能な記録媒体を利用して、前記プログラムを動作させる汎用デジタルコンピュータで具現される。また、前述した本発明の実施形態で使われたデータの構造は、コンピュータで読み取り可能な記録媒体に色々な手段を通じて記録される。前記コンピュータで読み取り可能な記録媒体は、マグネチック保存媒体（例えば、ＲＯＭ（リードオンリメモリ）、フロッピー（登録商標）ディスク、ハードディスクなど）、光学的判読媒体（例えば、ＣＤ−ＲＯＭ、ＤＶＤなど）のような保存媒体を含む。
【０１０８】
以上、本発明についてその望ましい実施形態を中心に説明した。当業者は、本発明が本発明の本質的な特性から逸脱しない範囲で変形された形態で具現されるということが分かるであろう。したがって、開示された実施形態は、限定的な観点でなく、説明的な観点で考慮されねばならない。本発明の範囲は、前述した説明でなく、特許請求の範囲に現れており、それと同等な範囲内にある全ての差異点は、本発明に含まれていると解釈されねばならない。
【産業上の利用可能性】
【０１０９】
本発明は、動画を復号化するデバイス、例えば、デジタルＴＶ、コンピュータ、携帯電話などに適用可能である。
【図面の簡単な説明】
【０１１０】
【図１】多様な動画圧縮コーデックのそれぞれで使われる動き補償のためのフィルタの特性を表で示す図である。
【図２Ａ】Ｈ.２６４／ＡＶＣによる輝度成分の画素補間の様子を示す図である。
【図２Ｂ】Ｈ.２６４／ＡＶＣによる色差成分の画素補間の様子を示す図である。
【図２Ｃ】ＶＣ１によってリニアフィルタを使用した画素補間の様子を示す図である。
【図２Ｄ】ＭＰＥＧ４による画素補間の様子を示す図である。
【図２Ｅ】ＶＣ１によってキュービックフィルタを使用した画素補間の様子を示す図である。
【図３】本発明の一実施形態によるキュービックフィルタを示す図である。
【図４】本発明の一実施形態によるマルチコーデック支援動き補償装置の構成図である。
【図５】図４に示された動き補償装置でのＨ.２６４／ＡＶＣのリニアフィルタ及びキュービックフィルタの動作シナリオを示す図である。
【図６】図４に示された動き補償装置でのＶＣ１のリニアフィルタの動作シナリオを示す図である。
【図７】図４に示された動き補償装置でのＭＰＥＧ４及びＶＣ１のキュービックフィルタの動作シナリオを示す図である。
【図８】図４に示された垂直フィルタ内部のレジスターアレイチェーンを示す図である。
【図９】図４に示された垂直フィルタ内部の６タップフィルタの構成図である。
【図１０】図４に示された動き補償装置内部でのデータ処理に関するタイミング図である。
【図１１】本発明の望ましい一実施形態によるマルチコーデック支援動き補償方法のフローチャートである。
【符号の説明】
【０１１１】
１０  スレーブＩ／Ｆ
２０  マスターＩ／Ｆ
３０  ＤＭＡ  Ｉ／Ｆ
３１  ＤＭＡモジュール
３２  ＦＩＦＯモジュール
４０  動き補償エンジン
４１  垂直フィルタ
４２  第１水平フィルタ
４３  第２水平フィルタ
４４  キュービック整列部
４５  キュービックフィルタ
５０  第１メモリ
６０  第２メモリ
７０  加算器
【図１】
0005698428.tif 000002
【図２Ａ】
0005698428.tif 000003
【図２Ｂ】
0005698428.tif 000004
【図２Ｃ】
0005698428.tif 000005
【図２Ｄ】
0005698428.tif 000006
【図２Ｅ】
0005698428.tif 000007
【図３】
0005698428.tif 000008
【図４】
0005698428.tif 000009
【図５】
0005698428.tif 000010
【図６】
0005698428.tif 000011
【図７】
0005698428.tif 000012
【図８】
0005698428.tif 000013
【図９】
0005698428.tif 000014
【図１０】
0005698428.tif 000015
【図１１】
0005698428.tif 000016