(57)【特許請求の範囲】
【請求項１】
動きベクトル検出の対象画像をＭ画素×Ｎ画素のブロックに分割し、該ブロック毎に参照画像との間の動きベクトルを検出する動きベクトル検出装置であって、対象画像を格納する対象画像レジスタ群と参照画像を格納する参照画像レジスタ群と、対象画像レジスタ群と参照画像レジスタ群に接続し対象画像と参照画像間の相関値を計算する相関演算回路群を備え、対象画像レジスタ群には隣接する複数ブロックの対象画像データをフィールド毎に間引いてＭ×Ｎ画素とした対象画像処理ブロックを保持し、該Ｍ×Ｎ画素のデータを同時に相関演算回路群に出力し、参照画像レジスタ群はＭ×Ｎ×Ｋ画素分のレジスタを行列状に配置して一次元に接続し、前記参照画像レジスタ群に前記対象画像処理ブロックの動きベクトル探索に必要な参照画像を左端から上下方向に順次入力し、ブロックサイズの参照画像データを画面上の位置をシフトしながら相関演算回路群に順次出力し、該相関演算回路群は対象画像データと順次入力される参照画像データ間の相関値を計算する相関演算回路を複数備え、前記対象画像処理ブロックのうち、同一対象ブロックの同一フィールドに属する画素の相関演算に対して前記相関演算器を１つずつ割り当て、動きベクトル検出処理すること、を特徴とする動きベクトル検出装置。
【請求項２】
複数の前記対象画像処理ブロックに対し、それぞれ前記対象画像レジスタ群と相関演算回路群を備え、隣接する前記対象画像処理ブロックに対する動きベクトル検出を並列に行うことを特徴とする請求項１記載の動きベクトル検出装置。
【請求項３】
動きベクトル検出の対象画像を水平方向に１／Ｐに間引き、垂直方向に１／Ｑに間引いて前記対象画像レジスタ群に入力し、対象画像レジスタ群内で水平方向にＰ画素毎、垂直方向にＱ×２画素毎のデータが同一ブロックの同一フィールドに属する対象画像データとなるように前記対象画像処理ブロックを保持することを特徴とする請求項１または２記載の動きベクトル検出装置。
【請求項４】
前記相関演算回路は複数の差分絶対値回路と複数の加算器を備え、同時に入力される複数の対象画像データと参照画像データ間の相関演算を一括して行うことを特徴とする請求項１，２または３記載の動きベクトル検出装置。
【請求項５】
動きベクトル検出の対象画像をＭ画素×Ｎ画素のブロックに分割し、該ブロック毎に参照画像との間の動きベクトルを検出する動きベクトル検出装置であって、対象画像を格納する対象画像レジスタ群と参照画像を格納する参照画像レジスタ群と、対象画像レジスタ群と参照画像レジスタ群に接続し対象画像と参照画像間の相関値を計算する相関演算回路群を備え、対象画像レジスタ群には隣接する複数ブロックの対象画像データをフレーム毎に間引いてＭ×Ｎ画素とした対象画像処理ブロックを保持し、該Ｍ×Ｎ画素のデータを同時に相関演算回路群に出力し、参照画像レジスタ群はＭ×Ｎ×Ｋ画素分のレジスタを行列状に配置して一次元に接続し、前記参照画像レジスタ群に前記対象画像処理ブロックの動きベクトル探索に必要な参照画像を左端から上下方向に順次入力し、ブロックサイズの参照画像データを画面上の位置をシフトしながら相関演算回路群に順次出力し、該相関演算回路群は対象画像データと順次入力される参照画像データ間の相関値を計算する相関演算回路を複数備え、前記対象画像処理ブロックのうち、同一対象ブロックに属する画素の相関演算に対して前記相関演算器を１つずつ割り当て、動きベクトル検出処理すること、を特徴とする動きベクトル検出装置。
【請求項６】
動きベクトル検出の対象画像を水平方向に１／Ｐに間引き、垂直方向に１／Ｑに間引いて前記対象画像レジスタ群に入力し、対象画像レジスタ群内で水平方向にＰ画素毎、垂直方向にＱ画素毎のデータが同一ブロックに属する対象画像データとなるように前記対象画像処理ブロックを保持することを特徴とする請求項５記載の動きベクトル検出装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、動画像データを動き補償フレーム間符号化方式でデータ量圧縮する場合に用いられる動きベクトル検出装置に関するものである。
【０００２】
【従来の技術】
動画像データはデータ量が非常に多いため、記録や伝送する際には画像圧縮や高能率符号化といわれる手法を用いて、視覚的に検知できる画質劣化を抑えつつ、データレートを記録可能又は伝送可能なレートまで、或は十分な記録時間が得られるレートまで下げることが一般的である。
【０００３】
高能率符号化方式のとしては、例えばＭＰＥＧ２方式がある。ＭＰＥＧ２はＩＳＯ／ＩＥＣ  １３８１８  として規格化されている方式で、動画像の高能率符号化方式として動き報償フレーム間符号化方式を用いる。
【０００４】
ＭＰＥＧ２方式では、フレーム画像をマクロブロックと呼ばれる１６画素×１６画素の領域に分割し、マクロブロック毎に動きベクトル検出を行い、符号化対象マクロブロックと動きベクトルで示されたマクロブロックサイズの参照画像データとの差分を符号化する。動きベクトルはフレーム動きベクトルとフィールド動きベクトルを適応的に用いる。フレーム動きベクトルでは、１つの予測方向に対してマクロブロック毎に１つの動きベクトルを求める。フィールド動きベクトルでは、マクロブロック、参照画像ともに２フィールドに分割し、フィールド毎に動きベクトルを求めるため、１つの予測方向に対してマクロブロック毎に２本の動きベクトルが必要になる。
【０００５】
次に一般的な動きベクトル検出の動作を説明する。動きベクトル検出では、参照画像上で対象画像ブロックに似通ったブロックを探索する。そのため参照画像上で対象画像ブロックと同位置周辺に探索範囲を設定し、探索範囲内で動きベクトルの候補となる候補ベクトルを設定する。候補ベクトルは対象画像ブロックとの偏位を示し、候補ベクトル毎に参照画像のブロックサイズのデータと対象画像ブロックとの相関演算を行う。
【０００６】
図１７に動きベクトル検出のブロックサイズが１６画素×１６画素で、探索範囲が＋／−１６画素の場合の例を示す。この場合、対象画像ブロックと探索範囲内の様々な位置の候補ベクトルに対するブロックサイズの参照画像データとの間で相関演算を行い、最も相関の高い位置に対する偏位を動きベクトルとする。
【０００７】
全探索と呼ばれる方法では、探索範囲内にとりうる全てのベクトルを候補ベクトルとする。図１７に示した探索範囲が＋／−１６画素の場合、候補ベクトル数は整数画素精度で３３×３３本あり、それぞれに１６画素×１６画素の相関演算を行うことになり、その演算量は膨大になる。
【０００８】
演算量を減らす方法として、特開平５−４０８２８に記載の方法がある。特開平５−４０８２８に記載の方法では、第１の探索行程として候補ベクトルを間引いて動きベクトル探索し、間引いた候補ベクトルの中から最適な動きベクトルを選択する。そして、第２の探索行程として第１の対策行程で選択した動きベクトルの周辺を候補ベクトルの密度を高くして再度動きベクトル探索するもので、相関演算の回数を減らすことで演算量を減らしている。さらには、動きベクトル探索での相関演算（ここではマッチング演算としている）に用いる画素を間引いて相関演算１回当たりの演算量を減らしている。例えば第１の探索行程で候補ベクトルを水平、垂直方向とも１／２に間引けば第１の行程での相関演算回数は１／４になり、相関演算に用いる画素を水平、垂直方向とも１／２に間引けば相関演算１回当たりの演算量も１／４になる。
【０００９】
【発明が解決しようとする課題】
しかしながら、候補ベクトルを間引くと最適なベクトルが選ばれなくなることが多くなり、比較的大きな画質劣化を生じるという問題がある。また、特開平５−４０８２８に記載の方法では、第２の探索行程においてフレームベクトルの検出は可能であるが、フィールドベクトルの検出ができない。フィールドベクトルの検出のためには、フレームベクトル探索とは別にフィールドベクトル用の探索を行う必要がある。
【００１０】
また、従来の方式では参照画像データへのアクセス量が膨大になるという問題がある。特開平５−４０８２８に記載の方式では、１つの候補ベクトルに対して動きベクトル検出ブロックと同じサイズの参照画像データが必要になる、即ち候補ベクトルの数をＮとすると画像サイズのＮ倍の参照画像データを入力する必要がある。一般的にはＮは数百以上である。
【００１１】
一般的な例を説明すると、例えば図１７の場合では、１つのブロックの動きベクトルを探索するために最低でも９マクロブロック分の参照画像データが必要になる。動きベクトル検出を輝度成分だけで行う場合には、動きベクトル検出だけのために対象画像、参照画像合わせて対象画像の輝度のデータレートの１０倍のデータを動きベクトル検出装置に入力しなければならない。画像サイズを７２０画素×４８０画素、フレームレート３０枚／秒とすると、動きベクトル検出装置に入力される輝度データ量は
７２０×４８０×３０×１０  ＝  １０３，６８０，０００  画素／秒
となる。通常、動きベクトル検出では、対象画像データと参照画像データは外部のメモリから入力されるが、この値を実現するためには、動きベクトル検出装置とメモリ間のバス幅が１６ビット（１画素８ビットとする）の場合で５０Ｍワード／秒以上、６４ビットの場合でも１２．５Ｍワード／秒以上のスピードが要求される。
【００１２】
本発明は、このような問題点に鑑みてなされたものであり、動きベクトル探索の相関演算に用いる画素データを間引いて演算量を減らし、かつ参照画像データの入力データレートを低くすることを可能にし、さらにフレームベクトルとフィールドベクトルを同時に検出することが可能な動きベクトル検出装置を提供することを目的とする。
【００１３】
【課題を解決するための手段】
本発明では、動きベクトル検出の相関演算に用いる画素を間引き、動きベクトル検出対象ブロック当たりの演算量を減らしている。そして、演算量減少で生じた演算性能の余裕を同時処理に振り分け、複数ブロックの動きベクトルを同時に検出することで、参照画像の入力データ量を低く抑える。さらに複数の相関演算器を並列して動作させることで、より多数ブロックの動きベクトル検出を同時進行させ参照画像の入力データ量をさらに低く抑えることができるものである。
【００１４】
また、相関演算をフィールド単位で行ってフィールド動きベクトルの評価値を求め、フレーム動きベクトルの評価値はフレームを構成する２つのフィールド動きベクトルの評価値の和とすることで、フィールド動きベクトルとフレーム動きベクトルの同時検出を可能にするものである。
【００１５】
請求項１記載の本発明では、動きベクトル検出の対象画像をＭ画素×Ｎ画素のブロックに分割し、該ブロック毎に参照画像との間の動きベクトルを検出する動きベクトル検出装置であって、対象画像を格納する対象画像レジスタ群と参照画像を格納する参照画像レジスタ群と、対象画像レジスタ群と参照画像レジスタ群に接続し対象画像と参照画像間の相関値を計算する相関演算回路群を備え、対象画像レジスタ群には隣接する複数ブロックの対象画像データをフィールド毎に間引いてＭ×Ｎ画素とした対象画像処理ブロックを保持し、該Ｍ×Ｎ画素のデータを同時に相関演算回路群に出力し、参照画像レジスタ群はＭ×Ｎ×Ｋ画素分のレジスタを行列状に配置して一次元に接続し、前記参照画像レジスタ群に前記対象画像処理ブロックの動きベクトル探索に必要な参照画像を左端から上下方向に順次入力し、ブロックサイズの参照画像データを画面上の位置をシフトしながら相関演算回路群に順次出力し、該相関演算回路群は対象画像データと順次入力される参照画像データ間の相関値を計算する相関演算回路を複数備え、前記対象画像処理ブロックのうち、同一対象ブロックの同一フィールドに属する画素の相関演算に対して前記相関演算器を１つずつ割り当て、動きベクトル検出処理することを特徴とする。
【００１６】
請求項２記載の本発明は、請求項１記載の動きベクトル検出装置において、複数の前記対象画像処理ブロックに対し、それぞれ前記対象画像レジスタ群と相関演算回路群を備え、隣接する前記対象画像処理ブロックに対する動きベクトル検出を並列に行うことを特徴とする。
【００１７】
請求項３記載の本発明は、請求項１，２記載の動きベクトル検出装置において、動きベクトル検出の対象画像を水平方向に１／Ｐに間引き、垂直方向に１／Ｑに間引いて前記対象画像レジスタ群に入力し、対象画像レジスタ群内で水平方向にＰ画素毎、垂直方向にＱ×２画素毎のデータが同一ブロックの同一フィールドに属する対象画像データとなるように前記対象画像処理ブロックを保持することを特徴とする。
【００１８】
請求項４記載の本発明は、請求項１，２，３記載の動きベクトル検出装置において、前記相関演算回路は複数の差分絶対値回路と複数の加算器を備え、同時に入力される複数の対象画像データと参照画像データ間の相関演算を一括して行うことを特徴とする。
【００１９】
【課題を解決するための手段】
請求項５記載の本発明は、動きベクトル検出の対象画像をＭ画素×Ｎ画素のブロックに分割し、該ブロック毎に参照画像との間の動きベクトルを検出する動きベクトル検出装置であって、対象画像を格納する対象画像レジスタ群と参照画像を格納する参照画像レジスタ群と、対象画像レジスタ群と参照画像レジスタ群に接続し対象画像と参照画像間の相関値を計算する相関演算回路群を備え、対象画像レジスタ群には隣接する複数ブロックの対象画像データをフレーム毎に間引いてＭ×Ｎ画素とした対象画像処理ブロックを保持し、該Ｍ×Ｎ画素のデータを同時に相関演算回路群に出力し、参照画像レジスタ群はＭ×Ｎ×Ｋ画素分のレジスタを行列状に配置して一次元に接続し、前記参照画像レジスタ群に前記対象画像処理ブロックの動きベクトル探索に必要な参照画像を左端から上下方向に順次入力し、ブロックサイズの参照画像データを画面上の位置をシフトしながら相関演算回路群に順次出力し、該相関演算回路群は対象画像データと順次入力される参照画像データ間の相関値を計算する相関演算回路を複数備え、前記対象画像処理ブロックのうち、同一対象ブロックに属する画素の相関演算に対して前記相関演算器を１つずつ割り当て、動きベクトル検出処理すること、を特徴とする。
【００２０】
請求項６記載の本発明は、請求項５記載の動きベクトル検出装置において、動きベクトル検出の対象画像を水平方向に１／Ｐに間引き、垂直方向に１／Ｑに間引いて前記対象画像レジスタ群に入力し、対象画像レジスタ群内で水平方向にＰ画素毎、垂直方向にＱ画素毎のデータが同一ブロックに属する対象画像データとなるように前記対象画像処理ブロックを保持することを特徴とする。
【００２１】
【発明の実施の形態】
以下図面を参照しながら、本発明の実施の形態を詳細に説明する。
【００２２】
ここでは、ＮＴＳＣやＰＡＬといったインターレースされたテレビジョン信号をＭＰＥＧ２方式で符号化する場合に用いることができる動きベクトル検出装置の例を説明する。即ち、動きベクトル検出は１６画素×１６画素のマクロブロック毎に求め、フレーム動きベクトルとフィールド動きベクトルの両方を求める場合である。フィールドは、マクロブロックの第１行が含まれるフィールドを奇数フィールド、第２行が含まれるフィールドを偶数フィールドと呼ぶことにする。また、動きベクトル検出の探索範囲は＋／−１６画素とする。
【００２３】
図１に本発明の動きベクトル検出装置の第１の実施の形態を示す。これは請求項１に対応するものである。図１において動きベクトル検出装置１は対象画像レジスタ群２、参照画像レジスタ群３、相関演算回路群４、最適ベクトル選択回路５で構成され、対象画像レジスタ群２には動きベクトル検出の対象画像データが、参照画像レジスタ群３には参照画像データがそれぞれ外部のメモリから入力される。なお、図１の対象画像レジスタ群２、参照画像レジスタ群３、相関演算回路群４は概略を示しており、詳細な構成は後述する。
【００２４】
図２に対象画像レジスタ群２の構成を示す。図２で’Ｒ’は８ビットのレジスタを示し、１画素分のデータを格納する。対象画像レジスタ群２には複数マクロブロックの対象画像データを間引いて１マクロブロック分のデータ量としたもの（以下では対象画像処理ブロックと呼ぶ）が入力される。図３に一例として、上下左右に隣接する４マクロブロックのデータを水平、垂直方向それぞれ１／２に間引いたものを対象画像処理ブロックとする場合の例を示す。図３は隣接する４つのマクロブロックＡ，Ｂ，Ｃ，Ｄのデータが示されており、Ａ１，．．．，Ａ２５６，Ｂ１，．．．，Ｂ２５６，Ｃ１，．．．，Ｃ２５６，Ｄ１，．．．Ｄ２５６は画素データを示す。このうち、対象画像レジスタ群２には、水平、垂直方向ともに１／２に間引いた斜線をつけたデータが対象画像処理ブロックとして入力される。垂直方向は、偶数フィールド、奇数フィールドそれぞれで１／２に間引いているため、フレームとしてみると２ライン毎に間引いていることになる。
【００２５】
対象画像レジスタ群２には上記の対象画像処理ブロックが１画素毎に入力され、順次接続されたレジスタに転送される。そして、保持している２５６画素分のデータ全てが相関演算回路群４に出力される。対象画像レジスタ群２には、画素毎に水平方向のマクロブロックを交互に、２行毎に垂直方向のマクロブロックを交互に入力する。即ち、
Ａ１，    Ｂ１，    Ａ３，    Ｂ３，．．．，  Ａ１５，  Ｂ１５，
Ａ１７，  Ｂ１７，  Ａ１９，  Ｂ１９，．．．，  Ａ３１，  Ｂ３１，
Ｃ１，    Ｄ１，    Ｃ３，    Ｄ３，．．．，  Ｃ１５，  Ｄ１５，
Ｃ１７，  Ｄ１７，  Ｃ１９，  Ｄ１９，．．．，  Ｃ３１，  Ｄ３１，
．．．．．．．．．．．．．．．．．．．．．．．．．．．．．．．．
．．．．．．．．．．．．．．．．．．．．．．．．．．．．．．．．
Ａ１９３，Ｂ１９３，Ａ１９５，Ｂ１９５，．．．，Ａ２０７，Ｂ２０７，
Ａ２０９，Ｂ２０９，Ａ２１１，Ｂ２１１，．．．，Ａ２２３，Ｂ２２３，
Ｃ１９３，Ｄ１９３，Ｃ１９５，Ｄ１９５，．．．，Ｃ２０７，Ｄ２０７，
Ｃ２０９，Ｄ２０９，Ｃ２１１，Ｄ２１１，．．．，Ｃ２２３，Ｄ２２３，
の順で入力する。この順で対象画像処理ブロックデータを入力し、全データを入力した後に対象画像レジスタ群２に保持される対象画像処理ブロックデータを図４に示す。１６×８画素の各フィールドデータは図４（ａ）に示したサブサンプリングパターンでサブサンプリングされ、サンプリングされたデータは図４（ｂ）に示す位置に保持される。図４（ｂ）では、水平２画素、垂直４画素の矩形ブロック内にマクロブロックＡ〜Ｄの全てのマクロブロックの偶数フィールドデータと奇数フィールドデータが含まれ、矩形内でのマクロブロック及びフィールドの位置関係は全ての矩形で同一である。
【００２６】
次に参照画像レジスタ群３について説明する。参照画像レジスタ群３は垂直方向隣接した複数のマクロブロックサイズの参照画像データを格納する。参照画像レジスタ群３のサイズは、水平方向は動きベクトル検出するブロックと同一サイズ、垂直方向は対象画像レジスタ群２に保持されている垂直方向のマクロブロック数に相当するサイズと探索範囲の和である。従って、本例の場合の参照画像レジスタ群３のサイズは、
水平方向はマクロブロックサイズと同一で１６画素
垂直方向は、（２マクロブロック分）＋（探索範囲  ＋／−１６画素）で６４画素
となる。
【００２７】
参照画像レジスタ群３には、探索範囲を探索できるだけの参照画像データを順次入力していく。本実施の形態では、図５に示すように対象マクロブロックと同位置を中心として、水平、垂直両方向とも＋／−１６画素広い範囲の６４×６４画素の参照画像データを入力することになる。
【００２８】
図６に参照レジスタ群３の構成を示す。図６の’Ｒ’は８ビットのレジスタを示し、１画素分のデータを保持する。参照画像レジスタ群３へは、図５で示した参照画像データが図５に矢印で示したように、左端の列から順に垂直方向に１画素づつ入力され、入力データは順次接続されるレジスタ間を転送される。そして、垂直方向の６４画素データのうち、図６に示すように下からマクロブロックサイズ分のデータ、即ち１６×１６画素のレジスタに保持している参照画像データを相関演算回路群４に出力する。１６×１６画素のレジスタに図７に斜線で示した部分のデータが保持される時点から演算回路群４に出力を開始し、相関演算を実行する。そして図６の構成により、参照画像レジスタ群３に次の参照画像データが入力されると、参照画像レジスタ群３内の全データがレジスタ間を転送され、図８のａで示すように１画素下にずれた位置のマクロブロックサイズのデータが出力されることになる。
【００２９】
このように、参照画像レジスタ群３に１画素の参照画像データが入力される毎に１６×１６画素データが出力される。また、図８には参照画像レジスタ群３から相関演算回路群４に出力される１６×１６画素データの中心位置の動きを矢印で示している。中心位置は、探索領域の左上に対応する位置から始まり、参照画像データが入力される毎に下に移動し、次に順に右の列に移動する。実線で示した位置は１６画素×１６画素の矩形領域が出力される場合で、点線は例えば図８のｂで示したようにブロックが上下に分断された無効データが出力される場合である。
【００３０】
このように、参照画像レジスタ群３から相関演算回路群４に出力されるデータうち、図８に実線の矢印で示した中心位置に対応するデータをたどると探索範囲内の左端の列の最上部を左端の点とするマクロブロックサイズのデータ始まり、垂直方向下向きに移動し、次に左から２列目、．．．と出力される。即ち、対象マクロブロックＡについてみると、
動きベクトル（−１６，−１６）に対応した参照画像データ
動きベクトル（−１６，−１５）に対応した参照画像データ
．．．．．．．．
動きベクトル（−１６，＋３２）に対応した参照画像データ
動きベクトル（−１５，−１６）に対応した参照画像データ
動きベクトル（−１５，−１５）に対応した参照画像データ
．．．．．．．．
動きベクトル（＋３２，＋３２）に対応した参照画像データ
の順で出力されることになる。
【００３１】
相関演算回路群４には４マクロブロックの対象画像データを間引いて１６×１６画素とした対象画像処理ブロックと前述した１６×１６画素の参照画像データが同時に入力される。そして、相関演算回路群４は対象画像データと参照画像データ間で画素毎の相関演算を行い、対象画像データのマクロブロック毎、フィールド毎の相関値を一括して求めるよう動作する。相関演算回路群４については後述する。よって、参照画像レジスタ群３に１画素の参照画像データが入力される毎に相関演算回路群４には１つの候補点に対応する１６×１６画素の参照画像データが入力されることになり、参照画素の入力を完了した時点で全ての候補点について対象画像との間の相関値が計算できることになる。
【００３２】
図９に本発明の相関演算回路群４の構成を示す。相関演算回路群４では、４マクロブロックの対象マクロブロックを間引いて１６×１６画素とした対象画像データと１６×１６画素の参照画像データが入力され、マクロブロック毎、フィールド毎の相関値を最適ベクトル選択回路５に出力する。相関演算回路群４は請求項４記載の本発明にもとづく相関演算回路２１〜２８を備える。相関演算回路２１〜２８は同一の機能を持ち、各相関演算回路に同一の対象画像マクロブロックの同一フィールドに属するデータ及び相関演算に必要な参照画像データが入力される。本例では水平、垂直方向とも１／２に間引いているため、対象画像、参照画像各（１６×８＝３２）画素のデータが入力され、相関値を一括して計算する。なお、ここでは画素間の差分絶対値の和を相関値と呼んでいる。
【００３３】
図４（ｂ）に相関演算回路群４に入力される対象画像処理ブロックのデータを示したが、ここからマクロブロックＡの奇数フィールドだけを取り出すと図１０に斜線で示したようになる。斜線の間にはマクロブロックＡの偶数フィールド及びマクロブロックＢ，Ｃ，Ｄの偶数フィールド及び奇数フィールドデータが保持されているため、対象画像レジスタ２内では間引かれる前の間隔で並んでいる。間引かれる前の間隔で並ぶのはマクロブロックＡ〜Ｄの全マクロブロックの両フィールドについて同様である。一方参照画像は間引きが行われないため、全マクロブロックの両フィールドについて差分をとる対象画素と参照画素の位置が対応することになる。従って、相関演算回路群４では、画素毎に差分絶対値を計算し、対象画像のそれぞれのマクロブロック、フィールドに属する画素の差分絶対値の和を求めることでマクロブロックＡ〜Ｄについてフィールド毎の相関値を同時に得ることができる。
【００３４】
図９に示した各相関演算回路は３２個の差分絶対値回路（図面では｜Ａ−Ｂ｜で示す）と３１個の加算器（図面ではＡＤＤで示す）で構成される。各差分絶対値回路には同一マクロブロック、同一フィールドに属す３２画素分の対象画像データと該画素データと相関演算を行う３２画素分の参照画像データのうち各１画素が入力され、差分絶対値が出力される。出力された差分絶対値は後段の加算器で順々に加算され、３２画素分の差分絶対値の和が後段の最適ベクトル選択回路５に出力される。各相関演算回路の出力は、水平、垂直それぞれ１／２に間引かれた３２画素の対象画像フィールドの差分絶対値和となる。ここで、差分絶対値回路及び加算器の演算速度が遅い場合には、差分絶対値回路或は加算器にレジスタを備えパイプライン構成としてもよい。なお、相関演算回路に入力される対象画像データは固定で、参照画像データは１行づつ下向きにずれるため、フィールド間の相関演算は、まず対象画像の偶数フィールドと参照画像の偶数フィールド間、同奇数フィールドと同奇数フィールド間で行い、次に偶数フィールドと奇数フィールド間、奇数フィールドと偶数フィールド間で行うことになり、以下この動作を繰り返す。
【００３５】
最適ベクトル選択回路５にはフィールドベクトルの相関値が入力される。また、フレームベクトルの相関値をフレームは構成する２フィールドに対するベクトルの相関値の和として全ての候補点に対して求める。そして、相関値から最も誤差の少ない、即ち相関の高い最適なフィールドベクトル、または最適なフレームベクトルを選択し出力する。
【００３６】
次に、図１１に４マクロブロックの動きベクトル検出を行う場合の対象画像レジスタ群２、参照画像レジスタ群３、相関演算回路群４のタイムチャートを示す。ここでは、図１２に示すように、探索範囲の左上のマクロブロックサイズの参照画像データを（０，０）として、左下が（０，４８）、右上が（４８，０）、右下が（４８，４８）として表している。また、１クロック毎に対象画像データ又は参照画像データが１画素分入力されるとしている。
【００３７】
まず、対象画像レジスタ群２には４マクロブロックのデータを１／４に間引いた対象画像処理ブロックのデータが２５６クロックで入力され、その後は状態を保持して相関演算回路４に２５６画素のデータを出力し続ける。その後、参照画像レジスタ群３に水平、垂直各４マクロブロック、即ち１６マクロブロックの参照画像データが入力される。図１３に参照画像データ入力期間開始の９７６（６４×１５＋１６）クロック後に参照画像レジスタ群３に入力されているデータを斜線で示す。参照画像データ入力期間開始の９７６クロック後に、図６の下側１６×１６画素のレジスタから（０，０）位置のマクロブロックサイズのデータが出力されることになる。
【００３８】
以後図８に示したように、６４クロック毎に４９クロック間はマクロブロックサイズの参照画像データが出力され、１５クロック間は２つの領域に分断された無効データが出力される。そして、相関演算回路群４ではマクロブロックサイズの参照画像データが得られる期間に対象画像データと参照画像データ間の相関演算を行う。相関演算回路では、１クロック毎に入力される対象画像データと参照画像データを高速に処理し、１クロック毎にフィールド単位の差分絶対値和が出力される。
【００３９】
なお、本発明ではある探索範囲に対して複数マクロブロックの動きベクトルを検出するため、マクロブロックによって探索範囲が異なる。例えば、図５において対象マクロブロックＡ〜Ｄの全マクロブロックが同じ探索範囲を動きベクトル探索するため、マクロブロックＡの探索範囲は、垂直マイナス方向には−１６画素になるが垂直プラス方向には＋３２画素になる。図４に示した対象レジスタ群２に格納される位置を勘案すると、各マクロブロックの探索範囲は、
マクロブロックＡ      垂直  −１６／＋３２    水平  −１６／＋３２
マクロブロックＢ      垂直  −１６／＋３２    水平  −３１／＋１７
マクロブロックＣ      垂直  −３０／＋１８    水平  −１６／＋３２
マクロブロックＤ      垂直  −３０／＋１８    水平  −３１／＋１７
となり、最低で＋／−１６画素になっている。なお、マクロブロック毎に間引きのサンプル画素を変更することで、探索範囲を変化させることもできる。
【００４０】
本発明の請求項１の実施の形態では、４マクロブロックの動きベクトル検出するために、対象画像１マクロブロック分、参照画像１６マクロブロック分の１７マクロブロック分のデータを入力する必要があるが、対象画像レジスタ群及び相関演算回路群を複数備えることで参照画像データの入力量を減らすことができる。以下にそれを説明する。
【００４１】
図１４に本発明の第２の実施の形態のブロック図を示す。これは請求項２に対応する。図１４の実施の形態と図１の実施の形態では、図１４の実施の形態では対象画像レジスタ群及び相関演算回路群を２つ備え、相関演算を並列して行う点が異なるが、各回路の動作は同一である。
【００４２】
図１の実施の形態では、４マクロブロックの動きベクトル検出毎に動きベクトル探索に必要な参照画像データを入力しているが、隣接する４マクロブロックの探索範囲は重複している領域があるため、参照画像データを重複して入力する必要があった。図１５を用いて説明すると、対象マクロブロックＡ，Ｂ，Ｃ，Ｄの動きベクトル検出をする場合に参照画像データとして参照マクロブロック列１，２，３，４を入力し、マクロブロックＥ，Ｆ，Ｇ，Ｈの動きベクトル検出をする場合に参照画像データとして参照マクロブロック列３，４，５，６を入力する必要があり、参照マクロブロック列３，４を重複して入力する必要がある。
【００４３】
このように、図１に示した実施の形態ではほとんどの参照マクロブロック列を２度入力する必要があった。図１４の第２の実施の形態では、第１の実施の形態で述べた対象画像レジスタ群を２組備え、例えば図１５の対象マクロブロックＡ，Ｂ，Ｃ，Ｄを対象画像レジスタ群２で、Ｅ，Ｆ，Ｇ，Ｈを対象画像レジスタ群１２で保持し、動きベクトル検出を２つの相関演算回路群で並列して行う。このため、水平方向に重複する探索範囲については、参照画像データを１度入力するだけで済む。
【００４４】
図１６に図１４に示した本発明の請求項２の実施の形態のタイムチャートを示す。図１６のタイムチャートを図１５に沿って説明する。なお、図１６のタイムチャートと図１の実施の形態のタイムチャートである図１１のタイムチャートでは、図１１のタイムチャートでは４マクロブロックの動きベクトル検出毎に連続する４０９６クロックの参照画像入力期間を設けていたが、図１６のタイムチャートではこの期間を２分割し、対象画像レジスタ群２及び１２に交互に対象画像データを入力する点が異なる。
【００４５】
この例ではまず対象マクロブロックＡ，Ｂ，Ｃ，Ｄを最初の２５６クロックで対象画像レジスタ群２に入力し、続いて参照マクロブロック列１，２のデータを参照画像レジスタ群３に入力し、参照マクロブロック列１，２の範囲を相関演算回路群４で動きベクトル探索する。図１６に示した相関演算期間は図１１に示したのと同様に６４クロック期間中、相関演算を行う４９クロック間と間相関演算を行わない１５クロック間の繰り返しであるが、ここではタイムチャートへの記述を省略している。
【００４６】
次に対象マクロブロックＥ，Ｆ，Ｇ，Ｈを対象画像レジスタ群１２に入力し、続いて参照マクロブロック列３，４を参照画像レジスタ群３に入力し、参照マクロブロック列３，４の範囲を動きベクトル探索する。このとき、対象マクロブロックＡ，Ｂ，Ｃ，Ｄの相関演算を相関演算回路群４で行い、対象マクロブロックＥ，Ｆ，Ｇ，Ｈの相関演算を相関演算回路群１３で並列に行う。次に対象マクロブロックＩ，Ｊ，Ｋ，Ｌを対象画像レジスタ群２に入力する。このように２つの対象画像レジスタ群と２つの相関演算回路群を並列して動作させることで、水平方向に探索範囲が重複する場合でも、参照画像データは１度入力するだけで動きベクトル検出が可能である。
【００４７】
図１４の第２の実施の形態では、水平方向に探索領域が重複する場合でも参照画像データを重複することなしに入力して動きベクトル検出が可能であるが、垂直方向に探索範囲が重複している場合には、参照画像データを重複して入力しなければならない。そこで図１４において、対象画像レジスタ群及び相関演算回路群を複数備え、水平方向に時分割で動きベクトル検出した原理を垂直方向にも適用することで、垂直方向にも探索範囲が重複している場合であっても参照画像データを重複なしに入力して動きベクトル検出が可能になる。
【００４８】
図５及び図１０で示した間引きパターンは本発明の請求項３にもとづくものであり、対象画像データを垂直、水平方向とも１／２に間引いた場合に、対象画像レジスタ内で保持されるデータが間引かれる前の状態の間隔で並ぶようにするものである。先に述べたように、このように構成すれば、対象画像レジスタに保持されているデータとマクロブロックサイズの参照画像データ間で差分をとる画素の位置が一致しているため、同一マクロブロック、同一フィールドに属する対象画像データの差分絶対値の和を求めるだけでフィールド毎の相関値が得られ、後段の相関演算回路での回路構成が容易になる。
【００４９】
このことは、より一般的に水平方向に１／Ｐ、垂直方向に１／Ｑに間引く場合でも可能である。この場合、対象画像レジスタ群へのデータ入力順は前記の水平方向、垂直方向とも１／２に間引いた場合の入力データ順を拡張し、まず１画素毎に水平方向にＰマクロブロックのデータを入力し、２行分の画素データの入力毎に、垂直方向に隣接するＰマクロブロックのデータを順次入力する。そして次に最初のマクロブロックから水平方向に間引き後の第３行、第４行を入力し、２行分の入力毎に垂直方向に隣接するマクロブロックの間引き後の第３行、第４行を入力する。このように入力することで、対象画像レジスタ群には間引く前の間隔、即ち水平方向Ｐ画素毎、垂直方向Ｑ×２画素毎に同一マクロブロックの同一フィールドのデータが保持される。
【００５０】
以上はフィールドベクトルとフレームベクトルを同時検出する場合の実施の形態であるが、フレームベクトルのみ検出する構成も、対象画像データをフレーム毎に間引いて対象画像処理ブロックを構成し、１つの相関演算回路を同一ブロックに属する画素の相関演算に対して割り当てることで容易に実現可能である。
【００５１】
また、その際対象画像レジスタ群に保持する対象画像データと、参照画像レジスタ内の相関演算に必要となる参照画像データの位置を一致させる方法も容易に推測できる。
【００５２】
【発明の効果】
請求項１の本発明では、動きベクトル検出に必要な相関演算に用いる画素数を間引くことを利用して、複数ブロックの動きベクトル検出の同時処理を可能にしている。また、動きベクトル検出では参照画素のアクセスが非常に多く、メモリからの転送の負荷が大きな障害となるが、本発明によると複数のブロックの動きベクトルを同時に検出するため、参照画素のアクセス量が従来の約１／５に削減できる。
【００５３】
また、請求項２の本発明では、対象画像処理ブロックを保持する対象画像レジスタ群及び相関演算を行う相関演算回路群を複数備えることで、参照画素の重複したアクセスを無くすことが可能で、参照画像データの読み出しをより少なくすることができる。
【００５４】
また、請求項１，２，３の本発明では、間引かれた対象画像を対象画像レジスタ群に保持する際に、参照画像レジスタ群内の相関演算に必要となる画素の位置に対応するように配置するため、相関演算回路を簡素に構成することができる。さらに本発明によれば、複数ブロックの相関演算をフィールド毎に行うことができ、また、フレーム動きベクトルの相関値はブロックを構成する２フィールドに対する相関値の和として算出できるので、フィールド動きベクトルとフレーム動きベクトルの同時検出が可能である。
【００５５】
また、請求項４の本発明では、相関演算回路では、１ブロックの片フィールドの相関演算を一括して行うため、対象画像データと順次入力される参照画像データ間の相関値を連続して計算できる。
【００５６】
さらに、請求項５，６の本発明はフレーム動きベクトルを検出する場合に適した構成とすることも容易で、簡素な構成でフレーム動きベクトルのみを検出することが可能である。
【００５７】
以上のように、本発明では動きベクトル検出の演算量が少なく、また参照画像の読み出し量も少なく、フレーム予測、フィールド予測が同時に可能であるため、ＭＰＥＧ２方式などフレーム予測／フィールド予測適応型動き補償フレーム間予測方式を用いる場合に、特に効果が顕著である。
【図面の簡単な説明】
【図１】請求項１記載の本発明の実施の形態のブロック図である。
【図２】対象画像レジスタ群の構成を示す図である。
【図３】対象画像レジスタ群に入力されるデータの一例である。
【図４】対象画像レジスタ群で保持されるデータの並びを示す図である。
【図５】参照画像レジスタ群に入力される参照画像データの例である。
【図６】参照画像レジスタ群の構成を示す図である。
【図７】参照画像レジスタ群から相関演算回路群に出力される参照画像データの例である。
【図８】参照画像レジスタ群から相関演算回路群に出力される参照画像データのその他の例である。
【図９】相関演算回路群及び請求項４記載の本発明である相関演算回路の構成である。
【図１０】相関演算回路群に入力される対象画像データのうち、同一マクロブロックかつ同一フィールドに属するデータを示す図である。
【図１１】請求項１の本発明のタイムチャートである。
【図１２】参照画像データの座標表現を説明する図である。
【図１３】参照画像レジスタ群に入力されるデータのその他の例である。
【図１４】請求項２記載の本発明の実施の形態のブロック図である。
【図１５】参照画像データを重複して入力する場合を説明する図である。
【図１６】請求項２の本発明のタイムチャートである。
【図１７】動きベクトル検出の探索範囲を示す図である。
【符号の説明】
１  動きベクトル検出装置
２  対象画像レジスタ群
３  参照画像レジスタ群
４  相関演算回路群
５  最適ベクトル選択回路
１１  動きベクトル検出装置
１２  対象画像レジスタ群
１３  相関演算回路群
１４  最適ベクトル選択回路
２１  相関演算回路
２２  相関演算回路
２３  相関演算回路
２４  相関演算回路
２５  相関演算回路
２６  相関演算回路
２７  相関演算回路
２８  相関演算回路
【図１】
0003698501.tif 000002
【図２】
0003698501.tif 000003
【図３】
0003698501.tif 000004
【図４】
0003698501.tif 000005
【図５】
0003698501.tif 000006
【図６】
0003698501.tif 000007
【図７】
0003698501.tif 000008
【図８】
0003698501.tif 000009
【図９】
0003698501.tif 000010
【図１０】
0003698501.tif 000011
【図１１】
0003698501.tif 000012
【図１２】
0003698501.tif 000013
【図１３】
0003698501.tif 000014
【図１４】
0003698501.tif 000015
【図１５】
0003698501.tif 000016
【図１６】
0003698501.tif 000017
【図１７】
0003698501.tif 000018