(57)【特許請求の範囲】
【請求項１】
インタレース方式に準拠したフィールド画像についての動きベクトルの検出を行う動きベクトル検出方法において、
第１のフィールド画像を用いて、第２のフィールド画像についての動きベクトルを所定の探索領域で検出し、
第３のフィールド画像についての動きベクトルを検出するときの探索領域を、上記第２のフィールド画像についての動きベクトルを参照するフィールド画像の動きベクトルとして用い、当該動きベクトルの示す点を中心とした第１の探索領域と、上記参照するフィールド画像と第３のフィールド画像とのフィールド間距離と、上記第１のフィールド画像と第２のフィールド画像とのフィールド間距離との比に応じて、上記第２のフィールド画像についての動きベクトルを比例配分して示される点を中心とし、上記参照するフィールド画像と第３のフィールド画像とのフィールド間距離と、上記第１のフィールド画像と第２のフィールド画像とのフィールド間距離との比に応じたサイズの第２の探索領域と、上記第１の探索領域と第２の探索領域とを接続する２つの接続線とで囲まれる面積が最大の第３の探索領域として設定し、
上記第１の探索領域及び第２の探索領域を含む上記第３の探索領域で上記第３のフィールド画像についての動きベクトルを検出することを特徴とする動きベクトル検出方法。
【請求項２】
インタレース方式に準拠したフィールド画像についての動きベクトルの検出を行う動きベクトル検出装置において、
第１のフィールド画像を用いて、第２のフィールド画像についての動きベクトルを所定の探索領域で検出する第１の動き検出手段と、
第３のフィールド画像についての動きベクトルを検出するときの探索領域を、上記第１の動き検出手段により検出された上記第２のフィールド画像についての動きベクトルを参照するフィールド画像の動きベクトルとして用い、当該動きベクトルの示す点を中心とした第１の探索領域と、上記参照するフィールド画像と第３のフィールド画像とのフィールド間距離と、上記第１のフィールド画像と第２のフィールド画像とのフィールド間距離との比に応じて、上記第２のフィールド画像についての動きベクトルを比例配分して示される点を中心とし、上記参照するフィールド画像と第３のフィールド画像とのフィールド間距離と、上記第１のフィールド画像と第２のフィールド画像とのフィールド間距離との比に応じたサイズの第２の探索領域と、上記第１の探索領域と第２の探索領域とを接続する２つの接続線とで囲まれる面積が最大の第３の探索領域として設定する探索領域設定手段と、
上記探索領域設定手段により設定した上記第１の探索領域及び第２の探索領域を含む上記第３の探索領域で第３のフィールド画像についての動きベクトルを検出する第２の動き検出手段とを備えることを特徴とする動きベクトル検出装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、インタレース方式の画像についてＭＰＥＧ（Moving Picture Image Coding Experts Group）に準拠した画像符号化処理を行うときに用いられる動きベクトルを検出する動きベクトル検出方法及び装置に関する。
【０００２】
【従来の技術】
ＭＰＥＧ方式は、画面内におけるＤＣＴ（Discrete Cosine Transform）と画像間における動き補償予測と可変長符号化とを組み合わせて動画像データの圧縮を行う符号化方式である。
【０００３】
一般に、画像間の動き補償予測においてなされる動きベクトルの検出処理は、所謂ブロックマッチングによって行われていた。このブロックマッチングは、処理の対象となる基準画像において所定の画素数に分割された基準ブロックに対して、参照画像内における同位置を起点として動きベクトルに対応する参照ブロックと上記所定の画素数と同じ画素数を有する領域を抽出し、基準ブロックと参照ブロックの対応する画素の差分の絶対値を演算し、基準ブロック内の全ての画素について差分の絶対値の和を演算する処理を行う。そして、動きベクトルを検出するときには、参照画像の探索領域内で抽出する領域を１画素ずつ移動させながら上述のブロックマッチングを繰り返して行い、上記差分の絶対値の和が最も小さい値を示した点を基点として動きベクトルを検出する。
【０００４】
【発明が解決しようとする課題】
しかし、上述のブロックマッチングを行うときは、参照画像についての動きベクトルを求めたときの探索領域と、基準画像についての動きベクトルを求めたときの探索領域と同じサイズの範囲となされて行われている。また、基準画像の動きベクトルを求めるときには、基準ブロックの動きベクトルがある程度予測できる場合であっても、参照画像の動きベクトルを基準として、ある一定の大きさの領域を探索領域として基準画像の動きベクトルを検出していた。
【０００５】
更に、上述したブロックマッチングにより動きベクトルを検出する処理は、ブロックマッチングを行うときなされる上記差分の絶対値の和を求める処理についての演算量が非常に膨大となっており、ＭＰＥＧ等の画像圧縮処理の大半の時間がこれに費やされ、ソフトウェアで実現するときの障害となっており、演算量の削減が望まれている。
【０００６】
そこで、本発明は、上述したような実情に鑑みて提案されたものであり、インタレース方式のフィールド画像について動きベクトルを検出するときの演算量を削減することができる動きベクトル検出方法及び装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
本発明者は、上述の目的を達成するために鋭意研究を重ねた結果、インタレース方式において、動画像を構成する各フィールド画像についての動きベクトルを検出するとき、トップフィールド画像とボトムフィールド画像との相関が高いことが動きベクトルの予測に用いることが可能であることを見い出した。
【０００８】
本発明は、インタレース方式に準拠したフィールド画像についての動きベクトルの検出を行う動きベクトル検出方法において、第１のフィールド画像を用いて、第２のフィールド画像についての動きベクトルを所定の探索領域で検出し、第３のフィールド画像についての動きベクトルを検出するときの探索領域を、上記第２のフィールド画像についての動きベクトルを参照するフィールド画像の動きベクトルとして用い、当該動きベクトルの示す点を中心とした第１の探索領域と、上記参照するフィールド画像と第３のフィールド画像とのフィールド間距離と、上記第１のフィールド画像と第２のフィールド画像とのフィールド間距離との比に応じて、上記第２のフィールド画像についての動きベクトルを比例配分して示される点を中心とし、上記参照するフィールド画像と第３のフィールド画像とのフィールド間距離と、上記第１のフィールド画像と第２のフィールド画像とのフィールド間距離との比に応じたサイズの第２の探索領域と、上記第１の探索領域と第２の探索領域とを接続する２つの接続線とで囲まれる面積が最大の第３の探索領域として設定し、上記第１の探索領域及び第２の探索領域を含む上記第３の探索領域で上記第３のフィールド画像についての動きベクトルを検出することを特徴とする。
また、本発明は、  インタレース方式に準拠したフィールド画像についての動きベクトルの検出を行う動きベクトル検出装置において、第１のフィールド画像を用いて、第２のフィールド画像についての動きベクトルを所定の探索領域で検出する第１の動き検出手段と、第３のフィールド画像についての動きベクトルを検出するときの探索領域を、上記第１の動き検出手段により検出された上記第２のフィールド画像についての動きベクトルを参照するフィールド画像の動きベクトルとして用い、当該動きベクトルの示す点を中心とした第１の探索領域と、上記参照するフィールド画像と第３のフィールド画像とのフィールド間距離と、上記第１のフィールド画像と第２のフィールド画像とのフィールド間距離との比に応じて、上記第２のフィールド画像についての動きベクトルを比例配分して示される点を中心とし、上記参照するフィールド画像と第３のフィールド画像とのフィールド間距離と、上記第１のフィールド画像と第２のフィールド画像とのフィールド間距離との比に応じたサイズの第２の探索領域と、上記第１の探索領域と第２の探索領域とを接続する２つの接続線とで囲まれる面積が最大の第３の探索領域として設定する探索領域設定手段と、上記探索領域設定手段により設定した上記第１の探索領域及び第２の探索領域を含む上記第３の探索領域で第３のフィールド画像についての動きベクトルを検出する第２の動き検出手段とを備えることを特徴とする。
【０００９】
このような動きベクトル検出方法及び装置によれば、フィールド画像について動きベクトルを検出するときの探索領域を、他のフィールド画像についての動きベクトルを用いて変化させて設定し、当該設定した探索領域内でブロックマッチングをして第３のフィールド画像についての動きベクトルを検出する。
【００１０】
【発明の実施の形態】
以下、本発明の実施の形態について図面を参照しながら詳細に説明する。
【００１１】
本発明は、例えば図１に示すように構成された動きベクトル検出装置１に適用される。
【００１２】
動きベクトル検出装置１は、フィールド画像についてＭＰＥＧ２規格に準拠した画像符号化処理における動きベクトルの検出する処理を行うＣＰＵ（Central Processing Unit）２を備えている。このＣＰＵ２は、動きベクトル検出プログラム起動することで、動きベクトルを検出する処理を行う。このＣＰＵ２は、動きベクトルを検出するときには、メモリ３に格納された画像データ及び動きベクトル検出プログラムを用いる。このとき、ＣＰＵ２は、制御信号をメモリ３及びＨＤＤ（Hard Disc Drive）４に出力することで、ＨＤＤ４に格納された画像データ及び動きベクトル検出プログラムをメモリ３に格納するように制御する。
【００１３】
また、このＣＰＵ２は、画像データについて例えばＭＰＥＧ方式に準拠した画像圧縮処理を行うときには、Ｉ(Intra)ピクチャについてＤＣＴ（Discrete Cosine Transform）処理を行うとともに、Ｂ(Bidirectionally predictive)，Ｐ(Predictive)ピクチャを動き補償予測をすることで画像圧縮処理を行う。このとき、ＣＰＵ２は、一のフィールド画像について動きベクトルを求めるとき、時間的に前後するフィールド画像のフィールド間距離を参照して動きベクトルを探索するときの探索領域を決定する。そして、ＣＰＵ２は、前記探索領域において例えば８×８画素からなるマクロブロック単位でブロックマッチングを行うことで動きベクトルを検出する。
【００１４】
このＣＰＵ２は、ブロックマッチングを行うとき、動きベクトルを検出する処理の対象となる基準フィールド画像において所定の画素数に分割された基準ブロックに対して、参照フィールド画像内における同位置を起点として動きベクトルに対応する参照ブロックと上記所定の画素数と同じ画素数を有する領域を基準フィールド画像内から抽出し、基準ブロックと参照ブロックの対応する画素の差分の絶対値を演算し、基準ブロック内の全ての画素について差分の絶対値の和を演算する処理を行う。
【００１５】
そして、ＣＰＵ２は、動きベクトルを検出するとき、参照フィールド画像の探索領域内で抽出する領域を１画素ずつ移動させながら上述のブロックマッチングを繰り返して行い、上記差分の絶対値の和が最も小さい値を示した点を基点として動きベクトルを検出する。なお、このＣＰＵ２が行う上記探索領域を演算して動きベクトルを検出する処理の手順の詳細については後述する。
【００１６】
メモリ３は、上記ＣＰＵ２により制御されることで、格納する内容が制御される。このメモリ３は、ＣＰＵ２からの制御信号に応じてＨＤＤ４から動きベクトル検出プログラム及び画像データが格納されるとともに、格納された動きベクトル検出プログラム及び画像データが読み込まれる。
【００１７】
ＨＤＤ４は、画像データ及び動きベクトル検出プログラムを格納する。そして、このＨＤＤ４は、ＣＰＵ２からの制御信号に応じて指定された画像データをメモリ３に出力する。
【００１８】
このＨＤＤ４に格納される画像データは、図２に示すように、インタレース方式に準拠したトップフィールド画像（Ｔ）とボトムフィール画像（Ｂ）とが交互に配列された時系列の動画像データである。そして、ＣＰＵ２は、例えばトップフィールド画像Ｔ1と次のトップフィールド画像Ｔ2とのフィールド間距離を「１．０」としたとき、トップフィールド画像Ｔ1とボトムフィールド画像Ｔ2とのフィールド間距離を「１．５」とし、ボトムフィールド画像Ｂ1とトップフィールド画像Ｔ2とのフィールド間距離を「０．５」とし、ボトムフィールド画像Ｂ1とボトムフィールド画像Ｂ2とのフィールド間距離を「１．０」として上記探索領域を演算する処理を行う。
【００１９】
図１に示したＩ／Ｆ（インターフェイス）回路５は、例えば外部から画像データが入力されるとともに、ＣＰＵ２からの制御信号に応じて画像データを外部に出力する。このＩ／Ｆ回路５は、例えば外部から画像データが入力されたときには、ＨＤＤ４に当該画像データを出力する。
【００２０】
このように構成された動きベクトル検出装置１は、ＣＰＵ２により複数のフィールド画像からなる画像データについての動きベクトルを検出するとき、ＨＤＤ４に格納された動きベクトル検出プログラムを実行することで図３のフローチャートに示すような処理を行う。
【００２１】
先ずステップＳ１において、ＣＰＵ２は、図４に示すように、探索の起点を（０，０）に設定する処理を行う。すなわち、ＣＰＵ２は、動きベクトルを検出するためにブロックマッチングを行うときの探索領域の起点を初期の設定として（０，０）とする処理を行う。
【００２２】
次のステップＳ２において、ＣＰＵ２は、例えば上述の図２に示すようにトップフィールド画像Ｔ1を用いてトップフィールド画像Ｔ2を動き補償するときに用いる動きベクトルＶTTを探索する探索領域Ｓ0を、例えば上記起点（０，０）を中心とし点（−３２，−３２）と点（＋３２，＋３２）とを対角点として定義される矩形領域とする。なお、このステップＳ２において、ＣＰＵ２は、動きベクトルＶTTを検出するときの探索領域を正確に動きベクトルを検出することができる程度の任意のサイズとしても良い。
【００２３】
次のステップＳ３において、ＣＰＵ２は、上述のステップＳ２で決定した探索領域内においてブロックマッチングを行うことで動きベクトルＶTTを検出する処理を行う。すなわち、ＣＰＵ２は、例えばトップフィールド画像Ｔ1を上記参照フィールド画像とするとともにトップフィールド画像Ｔ2を上記基準フィールド画像とし、トップフィールド画像Ｔ1に含まれる所定の画素数からなる参照ブロックＡを用いて、探索領域内でブロックマッチングを行う。これによりＣＰＵ２は、トップフィールド画像Ｔ2に含まれる基準ブロックＢを探索し、動きベクトルＶTTを検出する。
【００２４】
次のステップＳ４において、ＣＰＵ２は、ボトムフィールド画像Ｂ1を参照フィールド画像としボトムフィールド画像Ｂ2を基準フィールド画像として動きベクトルＶBBを検出する処理に移行する。このとき、ＣＰＵ２は、図５に示すように、動きベクトルＶBBを探索する起点を上述のステップＳ３で検出した動きベクトルＶTTの先端の座標位置（ｈTT，ｖTT）に設定する処理を行う。ここで、ＣＰＵ２は、動きベクトルＶTTを検出したときに用いた基準フィールド画像と参照フィールド画像とのフィールド間距離と、ボトムフィールド画像Ｂ1とボトムフィールド画像Ｂ2とのフィールド間距離とが同じであることから、動きベクトルＶTTの先端を伸縮させずに、動きベクトルＶBBを探索する起点を動きベクトルＶTTの先端の座標位置（ｈTT，ｖTT）とする。
【００２５】
次のステップＳ５において、ＣＰＵ２は、上述のステップＳ４で設定した座標位置（ｈTT，ｖTT）を中心とした所定の画素数からなる図５中の探索領域ＳBBを設定する。ここで、ＣＰＵ２は、例えば点（ｈTT，ｖTT）を中心とし点（ｈTT−４，ｖTT−４）と点（ｈTT＋４，ｖTT＋４）とを対角点として定義される矩形領域を探索領域ＳBBとする。なお、このステップＳ５において、ＣＰＵ２は、動きベクトルＶBBを検出するときの探索領域ＳBBを任意の画素数としても良い。
【００２６】
次のステップＳ６において、ＣＰＵ２は、上述のステップＳ５において設定した探索領域ＳBBにおいて上述のステップＳ３と同様にブロックマッチングを行うことで動きベクトルＶBBを検出する処理を行う。
【００２７】
次のステップＳ７において、ＣＰＵ２は、トップフィールド画像Ｔ1を参照フィールド画像としボトムフィールド画像Ｂ2を基準フィールド画像として動きベクトルＶTBを検出する処理に移行する。このとき、ＣＰＵ２は、図６に示すように、動きベクトルＶTBを探索する起点を、上述のステップＳ３で検出した動きベクトルＶTTの長さを１．５倍した座標位置に設定する処理を行う。すなわち、ＣＰＵ２は、トップフィールド画像Ｔ1とトップフィールド画像Ｔ2とのフィールド間距離と、トップフィールド画像Ｔ1とボトムフィールド画像Ｂ2とのフィールド間距離とが、１．５倍であることから、動きベクトルＶTBを探索する起点を座標位置（１．５ｈTT，１．５ｖTT）に設定する処理を行う。
【００２８】
次のステップＳ８において、ＣＰＵ２は、上述のステップＳ７で設定した座標位置（１．５ｈTT，１．５ｖTT）を中心とし、上述のステップＳ５で設定した探索領域の１．５倍の画素数からなる探索領域ＳTBを設定する。すなわち、ＣＰＵ２は、座標（１．５ｈTT，１．５ｖTT）を中心とし座標（１．５ｈTT−６，１．５ｖTT−６）と座標（ｈTT＋６，ｖTT＋６）とを対角点として定義される矩形領域を探索領域ＳTBとする。
【００２９】
次のステップＳ９において、ＣＰＵ２は、上述のステップＳ８において設定した探索領域ＳTBにおいて上述のステップＳ３と同様にブロックマッチングを行うことで動きベクトルＶTBを検出する処理を行う。
【００３０】
次のステップＳ１０において、ＣＰＵ２は、ボトムフィールド画像Ｂ1を参照フィールド画像としトップフィールド画像Ｔ2を基準フィールド画像として動きベクトルＶBTを検出する処理に移行する。このとき、ＣＰＵ２は、図７に示すように、動きベクトルＶBTを探索する起点を、上述のステップＳ３で検出した動きベクトルＶTTの長さを０．５倍した座標位置に設定する処理を行う。すなわち、ＣＰＵ２は、トップフィールド画像Ｔ1とトップフィールド画像Ｔ2とのフィールド間距離と、ボトムフィールド画像Ｂ1とトップフィールド画像Ｔ2とのフィールド間距離とが、０．５倍であることから、動きベクトルＶBTを探索する起点を座標位置（０．５ｈTT，０．５ｖTT）に設定する処理を行う。
【００３１】
次のステップＳ１１において、ＣＰＵ２は、上述のステップＳ１０で設定した座標位置（０．５ｈTT，０．５ｖTT）を中心とし、上述のステップＳ５で設定した探索領域の０．５倍の画素数からなる探索領域ＳBTを設定する。すなわち、ＣＰＵ２は、座標（０．５ｈTT，０．５ｖTT）を中心とし座標（０．５ｈTT−２，０．５ｖTT−２）と座標（ｈTT＋２，ｖTT＋２）とを対角点として定義される矩形領域を探索領域ＳBTとする。
【００３２】
次のステップＳ１２において、ＣＰＵ２は、上述のステップＳ１１において設定した探索領域ＳBTにおいて上述のステップＳ３と同様にブロックマッチングを行うことで動きベクトルＶBTを検出する処理を行う。
【００３３】
このような処理を行った結果、ＣＰＵ２は、トップフィールド画像Ｔ2についての動きベクトルをトップフィールド画像Ｔ1とボトムフィールド画像Ｂ1との２つのフィールド画像から予測した２つの動きベクトルを得る。そして、ＣＰＵ２は、これらの２つの動きベクトルから最適な動きベクトルを選択して、トップフィールド画像Ｔ2についての動きベクトルとする。また、ＣＰＵ２は、ボトムフィールド画像Ｂ2についての動きベクトルについても、トップフィールド画像Ｔ1とボトムフィールド画像Ｂ1の２つのフィールド画像から予測した動きベクトルのうち最適な動きベクトルを選択することになる。
【００３４】
このような処理を行うＣＰＵ２を備えた動きベクトル検出装置１は、インタレース方式に準拠したフィールド画像について動きベクトルを検出する処理を行うとき、上述のステップＳ１〜ステップＳ３で示したように、先ず動きベクトルＶTTを検出して他の動きベクトルＶBB、ＶBT、ＶTBを検出するとき、上記動きベクトルＶTTの先端位置を探索の起点とするとともに、フィールド間距離に応じてブロックマッチングを行って他の動きベクトルＶBB、ＶBT、ＶTBを検出するときの探索領域を変化させるので、トップフィールド画像とボトムフィールド画像との相関を利用し探索領域の画素サイズを縮小することができる。したがって、この動きベクトル検出装置１によれば、探索領域の画素サイズを縮小することにより、動きベクトルを検出する演算量を削減することができるとともに、処理時間を短縮することができる。
【００３５】
なお、上述したＣＰＵ２の処理の説明においては、先ず動きベクトルＶTTを検出して他の動きベクトルＶBB、ＶBT、ＶTBを検出するときの探索領域をことを説明したが、動きベクトル検出装置１は、先ず動きベクトルＶTT、ＶBB、ＶBT、ＶTBのいずれかの動きベクトルを検出し、フィールド間距離に比例して他の動きベクトルを検出するときの探索領域の画素サイズを変化させても良い。
【００３６】
また、上述したＣＰＵ２の処理の処理の説明においては、各フィールド画像についての動きベクトルを求めるとき、時間的に前に配置されたいずれかのフィールド画像を用いて動きベクトルを求める一例、すなわち例えばトップフィールド画像Ｔ2についての動きベクトルを求めるときにはトップフィールド画像Ｔ1及びボトムフィールド画像Ｂ1を用いて動きベクトルＶTT及び動きベクトルＶTBを求めることを説明したが、動きベクトルＶTTと動きベクトルＶTBのうちいずれか１つの動きベクトルのみを求めて各フィールド画像についての動きベクトルとしても良い。
【００３７】
更に、ＣＰＵ２は、上述したように動きベクトル検出プログラムに従ってブロックマッチングを行って動きベクトルを検出する探索領域を、ボトムフィールド画像とトップフィールド画像との相関を利用して設定する場合のみならず、内部にメモリを備え、基準フレームと時間的に近接する参照フィールド画像に含まれる参照ブロックの動きベクトルを示す点を中心とした第１の探索領域を決定し、上記参照ブロックの動きベクトルをフィールド又はフレーム間距離に応じて延長した点を中心とした第２の探索領域を設定しても良い。そして、ＣＰＵ２は、基準フィールド画像を構成する各基準ブロック毎に、ブロックマッチングを行う探索領域であることを示すフラグを生成して上記メモリに格納して動きベクトルの検出を行う。これにより、ＣＰＵ２は、基準フィールド画像に対応したフラグが存在するか否かを判断するためのマップを上記メモリに生成する。
【００３８】
このとき、ＣＰＵ２は、例えば「１」をブロックマッチングを行うフラグとし、「０」をブロックマッチングを行わないフラグとしてマップを作成する。そして、ＣＰＵ２は、フラグからなるマップを参照して、設定した探索領域内でブロックマッチングを行って動きベクトルの検出を行う。
【００３９】
つぎに、上述したようにフラグを生成して、１つの基準ブロックについて動きベクトルを検出するときのＣＰＵ２の処理について図８及び図９のフローチャートを用いて説明する。
【００４０】
先ず、ステップＳ２１において、ＣＰＵ２は、マクロブロック単位の参照ブロックについて動きベクトルが存在するか否かを判定する。そして、ＣＰＵ２は、参照ブロックに動きベクトルが存在すると判定したときにはステップＳ２に進み、参照ブロックに動きベクトルが存在しないと判定したときにはステップＳ２３に進む。
【００４１】
次のステップＳ２２において、ＣＰＵ２は、上記動きベクトル探索領域の中心位置を参照ブロックの動きベクトルの先端位置に設定する。すなわち、ＣＰＵ２は、上記中心位置から所定の画素数の矩形領域を動きベクトル探索領域として設定し、ブロックマッチングを行うことを示すフラグからなるマップを作成する領域として設定する。
【００４２】
次のステップＳ２４において、ＣＰＵ２は、図１０に示すように、上述のステップＳ２２において設定した動きベクトル探索領域の中心位置を上記メモリに格納するフラグからなるマップの中心位置とし、（−Ｓｈ，−Ｓｖ）と（＋Ｓｈ，＋Ｓｖ）を対角点とした矩形領域をマップのベースエリアとして設定する。すなわち、このＣＰＵ２は、上記ベースエリア内においてブロックマッチングを行うことを示す「１」のフラグ又はブロックマッチングを行わないことを示す「０」のフラグからなるマップを内部のメモリに作成することになる。
【００４３】
次のステップＳ２５において、ＣＰＵ２は、参照ブロックの動きベクトルの先端を中心とした所定の画素数を占める領域を第１の探索領域とするとともに、参照ブロックの動きベクトルから延長した点を中心位置として第２の探索領域を設定する。このとき、ＣＰＵ２は、動きベクトルを検出する対象となる基準フレームと上記参照ブロックの動きベクトルが存在する参照フレームとのフレーム間距離に応じて、参照ブロックの動きベクトルから延長した点の位置を決定し、当該決定した点を中心とした第２の探索領域の大きさを決定する。すなわち、このＣＰＵ２は、基準フレームと参照フレームとの距離に比例した大きさの領域を第２の探索領域の大きさとして設定する。そして、このＣＰＵ２は、第１の探索領域及び第２の探索領域を設定したことに応じて、ブロックマッチングを行うことを示すフラグを生成する。更に、ＣＰＵ２は、設定した第１の探索領域と第２の探索領域とを接続する接続線を設定し、上記第１の探索領域、第２の探索領域及び接続線で囲んだ領域を動きベクトル探索領域とし、フラグを生成する。
【００４４】
この結果、ＣＰＵ２は、上述したように設定した第１の探索領域及び第２の探索領域を例えば円形とし、第２の探索領域の大きさをフレーム間距離に応じて半径を大となるように設定し、接続線として第１の探索領域と第２の探索領域とを接続する接線で囲まれてなる動きベクトル探索領域を示すフラグをメモリのベースエリア内でマッピングすることにより、図１１に示すような第１の探索領域Ａ、第２の探索領域Ｂ及び接続線Ｃで囲まれた動きベクトル探索領域を示すマップをメモリ内に作成する。なお、この図１１において、網掛け部分はフラグが「１」の動きベクトル探索領域を示し、白抜き部分はフラグが「０」の領域を示している。
【００４５】
一方、上述のステップＳ２１で参照ブロックに動きベクトルが存在しないと判定されたステップＳ２３において、ＣＰＵ２は、動きベクトル探索領域の中心位置を基準ブロック内の座標（０，０）に設定する。
【００４６】
次のステップＳ２６において、ＣＰＵ２は、上述のステップＳ２３において設定した動きベクトル探索領域の中心を中心位置とし、（−Ｓｈ，−Ｓｖ）と（＋Ｓｈ，＋Ｓｖ）を対角点とした矩形領域をマップのベースエリアとして設定してステップＳ２７に進む。すなわち、ＣＰＵ２は、ステップＳ２１で参照ブロックに動きベクトルが存在しないと判定されたことから、動きベクトル探索領域の中心を上記矩形領域の中心位置とし、（−Ｓｈ，−Ｓｖ）と（＋Ｓｈ，＋Ｓｖ）を対角点とした矩形領域を動きベクトル探索領域としてメモリにマップを作成する。
【００４７】
ステップＳ２７において、ＣＰＵ２は、上述のステップＳ２５又はステップＳ２６で作成されたマップにおける上記ベースエリアの左上の座標位置を初期位置として指定する。すなわち、このＣＰＵ２は、動きベクトルを検出するときに行うブロックマッチングの探索位置を上記ベースエリアの左上の座標（Ｈ，Ｖ）から開始する。ここで、Ｈ及びＶは、上記マップにおける座標位置を示す変数である。
【００４８】
次のステップＳ２８において、ＣＰＵ２は、動きベクトルを検出する基準フレームからマクロブロック単位の基準ブロックの画像データをメモリ３から読み込む。
【００４９】
次のステップＳ２９において、ＣＰＵ２は、メモリに格納されているマップから座標（Ｈ，Ｖ）におけるフラグを読み出す。
【００５０】
次のステップＳ３０において、ＣＰＵ２は、上述のステップＳ２９において読み出したフラグが「１」又は「０」かを判定する。すなわち、このＣＰＵ２は、メモリに格納されたマップの座標位置に対応した基準ブロックの画素と参照ブロックの画素とを用いてブロックマッチングを行うか否かを判定する。そして、ＣＰＵ２は、フラグが「１」である場合、すなわちブロックマッチングを行うときには図９に示すステップＳ３１に進み、フラグが「０」である場合、すなわちブロックマッチングを行わないときには図９に示すステップＳ３５に進む。
【００５１】
ステップＳ３１において、ＣＰＵ２は、参照フレームから座標（Ｈ，Ｖ）に相当する参照ブロックの画像データをメモリ３から読み出す。
【００５２】
次のステップＳ３２において、ＣＰＵ２は、上述のステップＳ２８で読み出した上記座標（Ｈ，Ｖ）に対応する基準ブロックの画像データと、上述のステップＳ３１で入力された座標（Ｈ，Ｖ）に相当する参照ブロックの画像データとを比較することにより基準ブロックを構成する各画素と参照ブロックを構成する各画素との差分を演算し、差分の絶対値和を演算する。
【００５３】
次のステップＳ３３において、ＣＰＵ２は、上述のステップＳ３２で求めた差分の絶対値和が最小であるか否かを判定する。そして、ＣＰＵ２は、差分の絶対値和が最小であると判定したときにはステップＳ３４に進んで差分の絶対値和を最小値として座標（Ｈ，Ｖ）を記憶し、最小でないと判定したときにはステップＳ３５に進む。これにより、ＣＰＵ２は、動きベクトルを検出する。
【００５４】
そして、ステップＳ３５において、ＣＰＵ２は、マップの座標（Ｈ，Ｖ）をインクリメントすることで次の画素を指定し、ステップＳ３６においてマップの座標が右下、すなわち座標が（Right,Bottom）であるかを判定する。そして、ＣＰＵ２は、マップの座標が右下でないと判定したときにはステップＳ３５で指定した画素についてステップＳ２９以降の処理を行い、マップの座標が右下であると判定したときには、基準ブロックについて動きベクトルを検出する処理を終了する。
【００５５】
このように動きベクトル検出装置１は、ある基準ブロックについて動きベクトルを検出するとき、ステップＳ２５において参照ブロックの動きベクトルを用いてブロックマッチングを行う領域を決定し、ステップＳ２９からステップＳ３６までの処理を繰り返すことでフラグが生成された座標についてのみブロックマッチングを行い、ステップＳ３２で演算した差分の絶対値和が最小であるときの参照ブロックの座標を用いて基準ブロックの動きベクトルを検出する。
【００５６】
したがって、このような処理を行う動きベクトル検出装置１は、上述のステップＳ２５で説明したように、参照ブロックの動きベクトルを用いて、第１の探索領域及び第２の探索領域を設定し、当該第１の探索領域及び第２の探索領域を含む探索領域のみでブロックマッチングを行うので、参照ブロックを用いないで探索領域を設定した場合と比較して探索範囲を縮小することができる。したがって、この動きベクトル検出装置１によれば、ブロックマッチングを行う回数を削減することができ、動きベクトルを検出するための演算量を大幅に削減することができる。
【００５７】
更に、上述した処理を行う動きベクトル検出装置１によれば、動きベクトルの検出処理の精度を保持しつつ演算量を削減することができ、処理時間を短縮することができる。
【００５８】
更にまた、ＣＰＵ２は、上述したようにボトムフィールド画像とトップフィールド画像との相関を利用した探索領域を設定する処理を行う動きベクトル検出プログラムと併用することで、更に探索領域を縮小して、ブロックマッチングを行う回数を削減することができる。
【００５９】
なお、上述した動きベクトル検出装置１の処理の説明においては、図１１に示すように、ステップＳ２５において第１の探索領域Ａ及び第２の探索領域Ｂを円形領域とした一例について説明したが、動きベクトル検出装置１は、図１２に示すように第１の探索領域と第２の探索領域を矩形領域とし、第１の探索領域と第２の探索領域とを接続する直線と前記第１の探索領域及び第２の探索領域とで囲む上記動き探索領域内で動きベクトルを検出する処理を行っても良い。このように、第１の探索領域及び第２の探索領域を矩形領域とすることにより、動きベクトル検出装置１は、円形領域の探索領域を設定する場合と比較して、探索領域を設定するための処理量を削減することができ、更に処理時間を短縮することができる。
【００６０】
更に、ＣＰＵ２は、上述のように、トップフィールド画像とボトムフィールド画像との相関を利用して探索領域を設定するする場合及び時間的に前後するフレーム又はフィールドの相関を利用して探索領域を決定する場合のみならず、後述するように、相互に隣接する画素ブロックの動きベクトルにおける相関が高いことを利用して探索領域を設定しても良い。
【００６１】
このとき、ＣＰＵ２は、フィールド画像又はフレーム画像について動きベクトルを求めるときには、動きベクトルを探索するときの探索領域を設定し、前記探索領域において例えば８×８画素からなるマクロブロック単位でブロックマッチングを行うことで動きベクトルを検出する。具体的には、ＣＰＵ２は、動きベクトル検出プログラムに従って、マクロブロック毎にフレーム画像を分割し、相互に隣接するマクロブロックの動きベクトルを用いてブロックマッチングを行うときの探索領域を設定する。
【００６２】
すなわち、ＣＰＵ２は、動きベクトルを検出するときには、先ず図１３中の網掛け部分で示すように１つおきにマクロブロックを所定の探索領域でブロックマッチングを行うことで動きベクトルを検出する処理を行う。続いて、ＣＰＵ２は、図１３中の白抜き部分におけるマクロブロックを上記網掛け部分におけるマクロブロックについての動きベクトルを用いて探索領域を演算し、当該探索領域でブロックマッチングを行うことで白抜き部分のマクロブロックについての動きベクトルを検出する処理を行う。
【００６３】
このように構成された動きベクトル検出装置１は、ＣＰＵ２によりフレーム画像の画像データについて動きベクトルを検出するとき、ＨＤＤ４に格納された動きベクトル検出プログラムを実行することで図１４及び図１５のフローチャートに示すような処理を行う。
【００６４】
先ずステップＳ４１において、ＣＰＵ２は、図１６に示すような複数のマクロブロックが水平方向に配列されてなるライン（Ｌｉｎｅ）のアドレスを指定することでラインの番号（No.）を指定する処理を行う。ここで、ＣＰＵ２は、マクロブロック（ＭＢ）が水平方向に配列する複数のラインのうち、最も上部に位置するライン「０」の番号を指定する。ここで、上記ラインの番号は、上部から０，１，２，・・・，ボトム（Bottm）からなる。
【００６５】
次のステップＳ４２において、ＣＰＵ２は、上述のステップＳ４１において指定したライン「０」のうち、動きベクトルを検出するマクロブロックの番号「０」を指定する処理を行う。各ラインを構成する複数のマクロブロックの番号は、左端から右端に向かって、０，１，２，・・・，ライト（Right）からなる。
【００６６】
次のステップＳ４３において、ＣＰＵ２は、上述のステップＳ４２で指定された番号のマクロブロックについて探索領域を設定する。ここで、ＣＰＵ２は、探索領域を所定の画素数からなるサーチレンジＲに設定する。このとき、ＣＰＵ２は、例えばマクロブロックの中心位置を示す座標から（±Ｒ，±Ｒ）の対角点を有する矩形領域を探索領域として設定する。また、ＣＰＵ２は、例えばサーチレンジＲの探索領域として、３２×３２画素からなる矩形領域を設定する。そして、このＣＰＵ２は、所定の画素数からなる探索領域において時間的に前後するフレーム画像の対応するマクロブロックを用いて上述したブロックマッチングを行うことで動きベクトルを検出する処理を行う。
【００６７】
次のステップＳ４４において、ＣＰＵ２は、上述のステップＳ４３において動き検出を行ったマクロブロックと水平方向の左右に２つの番号だけずれたマクロブロックを指定する処理を行う。
【００６８】
次に、ステップＳ４５において、ＣＰＵ２は、上述のステップＳ４４で指定したマクロブロックが、フレーム画像の右端に位置するか否かを判断する。そして、ＣＰＵ２は、指定したマクロブロックがフレーム画像の右端に位置すると判断したときにはステップＳ４６に進み、右端に位置しないと判断したときにはステップＳ４３に戻る。すなわち、ＣＰＵ２は、上述のステップＳ４３〜ステップＳ４５に示す処理を行うことにより、指定したラインのうち、左端に位置するマクロブロックから右端に向かって２つの番号毎に上記ステップＳ４３で説明した所定の探索領域で動きベクトルを検出する処理を行う。
【００６９】
次のステップＳ４６において、ＣＰＵ２は、上述のステップＳ４２で指定した番号「０」のマクロブロックに右側に隣接する番号「１」のマクロブロックを指定する処理を行う。
【００７０】
次のステップＳ４７において、ＣＰＵ２は、上述のステップＳ４６又は後述のステップＳ５４で指定された番号におけるマクロブロックの右側に隣接するマクロブロックが存在するか否かを判断する。そして、ＣＰＵ２は、指定した番号におけるマクロブロックの右側に隣接するマクロブロックが存在しないと判断したときにはステップＳ４８に進み、指定した番号におけるマクロブロックの右側に隣接するマクロブロックが存在すると判断したときにはステップＳ４９に進む。
【００７１】
ステップＳ４８において、ＣＰＵ２は、上述のステップＳ４７において右側に隣接するマクロブロックが存在しないと判断されたマクロブロックについて、上述のステップＳ４３における上記所定の探索領域を設定して、当該探索領域でブロックマッチングを行うことで動きベクトルを検出する処理を行ってステップＳ５４に進む。
【００７２】
一方、ステップＳ４９において、ＣＰＵ２は、上述のステップＳ４６又は後述のステップＳ５４で指定したマクロブロックの両側に隣接するマクロブロックの動きベクトルの差分を演算し、当該差分の絶対値ΔＶを演算する。ここで、上記動きベクトルの差分の絶対値ΔＶは、マクロブロックの両側に隣接するマクロブロックの動きベクトルの指し示す方向が略同方向であるときには小さな値となり、マクロブロックの両側に隣接するマクロブロックの動きベクトルの指し示す方向が異なるほど大きな値となる。
【００７３】
次のステップＳ５０において、ＣＰＵ２は、上述のステップＳ４９で演算して得た差分の絶対値ΔＶがサーチレンジｒよりも十分に大きいか否かを判断する。ここで、「ｒ」は任意の値であり、サーチレンジｒとは点（−ｒ，−ｒ）と点（＋ｒ，＋ｒ）とを対角点に有する矩形領域である。また、このサーチレンジｒで定義される矩形領域は、上述したステップＳ４３におけるサーチレンジＲで定義される矩形領域よりも占める領域が小さく、例えば６×６画素からなる矩形領域である。そして、ＣＰＵ２は、差分の絶対値ΔＶがサーチレンジｒよりも十分に大きいとき、すなわち隣接するマクロブロックの各動きベクトルの指し示す方向が異なる場合にはステップＳ５１に進み、差分の絶対値ΔＶがサーチレンジｒよりも十分に大きくないとき、すなわち隣接するマクロブロックの各動きベクトルの指し示す方向が略同方向である場合にはステップＳ５２に進む。
【００７４】
ステップＳ５１において、ＣＰＵ２は、上述のステップＳ４６又は後述のステップＳ５４で指定されたマクロブロックの水平方向における両側に隣接するマクロブロックについての各動きベクトルを図１６に示すように指定されたマクロブロックの左上の座標位置とし、指し示す点を中心としてサーチレンジｒで定義される探索領域Ａ，Ｂをそれぞれ設定する。そして、ＣＰＵ２は、各探索領域Ａ，Ｂにおいてブロックマッチングを行うことで動きベクトルを検出してステップＳ５４に進む。
【００７５】
一方、ステップＳ５２において、ＣＰＵ２は、ステップＳ４６又はステップＳ５４で指定されたマクロブロックの水平方向における両側に隣接するマクロブロックについての各動きベクトルを用いて、図１７に示すような平均動きベクトルAveV(h,v)を演算する。
【００７６】
次のステップＳ５３において、ＣＰＵ２は、平均動きベクトルAveV(h,v)の先端が指し示す座標位置（ｈ，ｖ）を中心とし、点（−ｒ，−ｒ）と点（＋ｒ，＋ｒ）とを対角点とした矩形の探索領域Ｃを設定する。そして、ＣＰＵ２は、設定した探索領域Ｃにおいてブロックマッチングを行うことでステップＳ４６又はステップＳ５４で指定したマクロブロックについての動きベクトルを検出する。
【００７７】
次のステップＳ５４において、ＣＰＵ２は、上述のステップＳ５３で動きベクトルを検出したマクロブロックから水平方向における右側に向かって２番号だけ進める処理を行う。
【００７８】
次のステップＳ５５において、ＣＰＵ２は、上述のステップＳ５４で指定した番号のマクロブロックがラインにおける右端に位置するか否かを判断する。そして、ＣＰＵ２は、指定したマクロブロックがラインにおける右端に位置すると判断したときにはステップＳ５６に進み、指定したマクロブロックがラインにおける右端に位置しないと判断したときにはステップＳ４７に戻る。すなわち、ＣＰＵ２は、上述のステップＳ４２〜ステップＳ５５までの処理を繰り返すことにより、上述の処理を行っているラインを構成する全てのマクロブロックについて動きベクトルを検出する。
【００７９】
ステップＳ５６において、ＣＰＵ２は、上述したステップＳ４３からステップＳ５５までの処理を行ったラインから２つの番号だけボトムに向かって進めて新たなラインを指定する処理を行う。
【００８０】
次のステップＳ５７において、ＣＰＵ２は、上述のステップＳ５６で指定したラインの番号がボトムであるか否かを判断する。そして、ＣＰＵ２は、指定したラインがボトムであると判断したときには図１５に示すステップＳ５８に進み、指定したラインがボトムでないと判断したときにはステップＳ４２に戻って指定したラインについて上述のステップＳ４２〜ステップＳ５５に示す処理を行う。すなわち、ＣＰＵ２は、ステップＳ４１〜ステップＳ５７までの処理を行うことで、フレーム画像の番号「０」のラインからボトムのラインに向かって２つの番号毎に上述のステップＳ４２〜ステップＳ５５に示す処理を行う。
【００８１】
次のステップＳ５８において、ＣＰＵ２は、図１３に示すような複数のマクロブロックが垂直方向に配列されてなるラインの番号を指定する処理を行う。ここで、ＣＰＵ２は、マクロブロックが水平方向に配列する複数のラインのうち、上端から１つの番号だけ下側に隣接するライン「１」の番号を指定する。
【００８２】
次のステップＳ５９において、ＣＰＵ２は、上述のステップＳ５８において指定したライン「１」のうち、動きベクトルを検出するマクロブロックの番号「０」を指定する処理を行う。
【００８３】
次のステップＳ６０において、ＣＰＵ２は、上述のステップＳ５９で指定したマクロブロックの下側にマクロブロックが存在するか否かを判断する。そして、ＣＰＵ２は、指定したマクロブロックの下側にマクロブロックが存在しないと判断したときにはステップＳ６１に進み、指定したマクロブロックの下側にマクロブロックが存在すると判断したときにはステップＳ６２に進む。
【００８４】
ステップＳ６１において、ＣＰＵ２は、上述のステップＳ６０において下側に隣接するマクロブロックが存在しないと判断されたマクロブロックについて、上述のステップＳ４３におけるサーチレンジＲの探索領域を設定して、当該探索領域でブロックマッチングを行うことで動きベクトルを検出する処理を行ってステップＳ６７に進む。
【００８５】
一方、ステップＳ６２において、ＣＰＵ２は、上述のステップＳ５９又は後述のステップＳ６７で指定したマクロブロックの垂直方向において隣接するマクロブロックの動きベクトルの差分を演算し、当該差分の絶対値ΔＶを演算する。
【００８６】
次のステップＳ６３において、ＣＰＵ２は、上述のステップＳ６２で演算して得た差分の絶対値ΔＶがサーチレンジｒよりも大きいか否かを判断する。そして、ＣＰＵ２は、差分の絶対値ΔＶがサーチレンジｒよりも小さいときにはステップＳ６５に進み、差分の絶対値ΔＶがサーチレンジｒよりも小さくないときにはステップＳ６４に進む。
【００８７】
ステップＳ６４において、ＣＰＵ２は、上述のステップＳ５９又は後述のステップＳ６７で指定されたマクロブロックの垂直方向において隣接するマクロブロックについての各動きベクトルを図１８に示すように指定されたマクロブロックの左上の座標位置とし、指し示す点を中心としてサーチレンジｒで定義される探索領域Ｄ，Ｅをそれぞれ設定する。そして、ＣＰＵ２は、各探索領域Ｄ，Ｅにおいてブロックマッチングを行うことで動きベクトルを検出する。
【００８８】
一方、ステップＳ６５において、ＣＰＵ２は、ステップＳ５９又はステップＳ６７で指定されたマクロブロックの垂直方向において隣接するマクロブロックについての各動きベクトルを用いて、図１９に示すような平均動きベクトルAveV(h,v)を演算する。
【００８９】
次のステップＳ６６において、ＣＰＵ２は、平均動きベクトルAveV(h,v)の先端が指し示す座標位置（ｈ，ｖ）を中心とし、点（−ｒ，−ｒ）と点（＋ｒ，＋ｒ）とを対角点とした矩形の探索領域Ｆを設定する。そして、ＣＰＵ２は、設定した探索領域においてブロックマッチングを行うことでステップＳ５９又はステップＳ６７で指定したマクロブロックについての動きベクトルを検出する。
【００９０】
次のステップＳ６７において、ＣＰＵ２は、上述のステップＳ６６で動きベクトルを検出したマクロブロックから水平方向における右側に向かって１つの番号だけ進める処理を行う。
【００９１】
次のステップＳ６８において、ＣＰＵ２は、上述のステップＳ６７で指定した番号のマクロブロックがラインにおける右端に位置するか否かを判断する。そして、ＣＰＵ２は、指定したマクロブロックがラインにおける右端に位置すると判断したときにはステップＳ６９に進み、指定したマクロブロックがラインにおける右端に位置しないと判断したときにはステップＳ６０に戻る。すなわち、ＣＰＵ２は、上述のステップＳ６０〜ステップＳ６８までの処理を繰り返すことにより、上述の処理を行っているラインを構成する全てのマクロブロックについて動きベクトルを検出する。
【００９２】
ステップＳ６９において、ＣＰＵ２は、上述したステップＳ５９からステップＳ６８までの処理を行ったラインから２つの番号だけ下端に向かって進めて新たなラインを指定する処理を行う。
【００９３】
次のステップＳ７０において、ＣＰＵ２は、上述のステップＳ６９で指定したラインの番号がボトムであるか否かを判断する。そして、ＣＰＵ２は、指定したラインがボトムであると判断したときには処理を終了し、指定したラインがボトムでないと判断したときにはステップＳ５９に戻って指定したラインについて上述のステップＳ４２〜ステップＳ６８に示す処理を行う。すなわち、ＣＰＵ２は、ステップＳ５８〜ステップＳ７０までの処理を行うことで、フレーム画像の垂直方向において、番号「０」のラインからボトムのラインに向かって２つの番号毎に上述のステップＳ５９〜ステップＳ６８に示す処理を行う。
【００９４】
上述した動きベクトル検出装置１は、ステップＳ４１〜ステップＳ５７に示す処理を実行することにより指定したラインのうち水平方向に配列する全てのマクロブロックについて動きベクトルを検出し、ステップＳ５８〜ステップＳ７０に示す処理を実行することにより上記ステップＳ４１〜ステップＳ５７で処理の対象となっていないラインを指定して垂直方向に隣接するマクロブロックを用いて動きベクトルを検出することでフレーム画像を構成する全てのマクロブロックについて動きベクトルを検出する。
【００９５】
したがって、このような動きベクトル検出装置１によれば、ステップＳ４３に示す処理を行うことで、フレーム画像を構成する一部のマクロブロックについて所定の画素サイズの探索領域にてブロックマッチングを行って動きベクトルを検出する処理を行い、他のマクロブロックについては隣接するマクロブロックの動きベクトルを参照することで上記所定の画素サイズよりも小さい画素サイズの探索領域にてブロックマッチングを行って動きベクトルを検出するので、フレーム画像を構成する全てのマクロブロックについて上記所定の画素サイズの探索領域にてブロックマッチングを行って動きベクトルを検出する場合と比較して探索領域を削減することができ、ブロックマッチングを行う回数を削減することができる。したがって、この動きベクトル検出装置１によれば、動きベクトルを検出するのに要する処理時間を大幅に短縮することができる。具体的には、動きベクトル検出装置１は、上述のステップＳ４３におけるサーチレンジＲを３２×３２画素とし、隣接するマクロブロックの動きベクトルを参照した場合の上記サーチレンジｒを６×６画素としたとき、フレーム画像を構成する全てのマクロブロックについて動きベクトルを検出するための処理時間を１／１００程度に短縮することができる。
【００９６】
また、この動きベクトル検出装置１によれば、ステップＳ４９及びステップＳ５０で示す処理を行うことで動きベクトルを検出するマクロブロックに隣接するマクロブロックの動きベクトルが指し示す方向を判断し、各動きベクトルが指し示す方向に応じて設定する探索範囲を変化させるので、隣接するマクロブロックの動きベクトルが異なる方向を指し示していても、高精度な動きベクトルの検出を行うことができる。
【００９７】
【発明の効果】
以上詳細に説明したように、本発明によれば、第３のフィールド画像についての動きベクトルを検出するときの探索領域を、上記第２のフィールド画像についての動きベクトルを参照するフィールド画像の動きベクトルとして用い、当該動きベクトルの示す点を中心とした第１の探索領域と、上記参照するフィールド画像と第３のフィールド画像とのフィールド間距離と、上記第１のフィールド画像と第２のフィールド画像とのフィールド間距離との比に応じて、上記第２のフィールド画像についての動きベクトルを比例配分して示される点を中心とし、上記参照するフィールド画像と第３のフィールド画像とのフィールド間距離と、上記第１のフィールド画像と第２のフィールド画像とのフィールド間距離との比に応じたサイズの第２の探索領域と、上記第１の探索領域と第２の探索領域とを接続する２つの接続線とで囲まれる面積が最大の第３の探索領域として設定するので、第３のフィールド画像についての動きベクトルを求めるときの探索領域のサイズを変化させることができる。したがって、この動きベクトル検出方法及び装置によれば、動きベクトルにおいてトップフィールド画像とボトムフィールド画像との相関が高いことを利用して、サイズの小さな探索領域を設定することができる。従って、この動きベクトル検出方法及び装置によれば、動きベクトルの検出を行うときのブロックマッチングを行う探索領域を縮小させることでブロックマッチングの行う回数を削減することができ、処理時間を削減することができる。
【図面の簡単な説明】
【図１】本発明を適用した動きベクトル検出装置の構成を示すブロック図である。
【図２】インタレース方式のフィールド画像のフィールド間距離について説明するための図である。
【図３】本発明を適用した動きベクトル検出装置に備えられるＣＰＵが動きベクトル検出プログラムにしたがって動きベクトルを検出する処理手順を示すフローチャートである。
【図４】所定の探索領域を決定して動きベクトルＶTTを探索することを説明するための図である。
【図５】動きベクトルＶTTを用いて動きベクトルＶBBを探索する起点及び探索領域を決定することを説明するための図である。
【図６】動きベクトルＶTTを用いて動きベクトルＶTBを探索する起点及び探索領域を決定することを説明するための図である。
【図７】動きベクトルＶTTを用いて動きベクトルＶBTを探索する起点及び探索領域を決定することを説明するための図である。
【図８】同動きベクトル検出装置で探索領域を設定し、動きベクトルを検出する処理を説明するためのフローチャートである。
【図９】同動きベクトル検出装置で探索領域を設定し、動きベクトルを検出する処理を説明するためのフローチャートである。
【図１０】ＣＰＵによりマップを作成する処理を説明するための図である。
【図１１】ＣＰＵのメモリに作成したマップの一例を説明するための図である。
【図１２】ＣＰＵのメモリに作成したマップの他の一例を説明するための図である。
【図１３】同動きベクトル検出装置に備えられるＣＰＵにより動きベクトルを検出する処理がされるときに、フレーム画像がマクロブロック単位に分割されることを説明するための図である。
【図１４】同動きベクトル検出装置に備えられるＣＰＵが動きベクトル検出プログラムにしたがって動きベクトルを検出する処理手順を示すフローチャートである。
【図１５】同動きベクトル検出装置に備えられるＣＰＵが動きベクトル検出プログラムにしたがって動きベクトルを検出する処理手順を示すフローチャートである。
【図１６】水平方向において隣接するマクロブロックが異なる方向を指し示しているときにおいて、隣接するマクロブロックの動きベクトルを用いて探索領域を設定して動きベクトルを検出することを説明するための図である。
【図１７】水平方向において隣接するマクロブロックが略同方向を指し示しているときにおいて、隣接するマクロブロックの動きベクトルを用いて探索領域を設定して動きベクトルを検出することを説明するための図である。
【図１８】垂直方向において隣接するマクロブロックが異なる方向を指し示しているときにおいて、隣接するマクロブロックの動きベクトルを用いて探索領域を設定して動きベクトルを検出することを説明するための図である。
【図１９】水平方向において隣接するマクロブロックが略同方向を指し示しているときにおいて、隣接するマクロブロックの動きベクトルを用いて探索領域を設定して動きベクトルを検出することを説明するための図である。
【符号の説明】
１  動きベクトル検出装置、２  ＣＰＵ
【図１】
0004196447.tif 000002
【図２】
0004196447.tif 000003
【図３】
0004196447.tif 000004
【図４】
0004196447.tif 000005
【図５】
0004196447.tif 000006
【図６】
0004196447.tif 000007
【図７】
0004196447.tif 000008
【図８】
0004196447.tif 000009
【図９】
0004196447.tif 000010
【図１０】
0004196447.tif 000011
【図１１】
0004196447.tif 000012
【図１２】
0004196447.tif 000013
【図１３】
0004196447.tif 000014
【図１４】
0004196447.tif 000015
【図１５】
0004196447.tif 000016
【図１６】
0004196447.tif 000017
【図１７】
0004196447.tif 000018
【図１８】
0004196447.tif 000019
【図１９】
0004196447.tif 000020