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