(57)【要約】【課題】基準フレームと参照フレームとの間の動きベクトルを、階層化処理により、算出する場合に、より効率的に、処理サイクル数を少なくして、消費電力を抑制する。【解決手段】高解像度層のブロック毎に、当該高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする高解像度層計算判定手段を設ける。高解像度層計算判定手段で、高解像度層のブロックについての動きベクトルの算出をすると判定したときには、高解像度動きベクトル算出手段を動作させて、高解像度層の動きベクトルを算出させるようにすると共に、高解像度層のブロックについての動きベクトルの算出をしないと判定したときには、高解像度動きベクトル算出手段を動作させずに、低解像度動きベクトル算出手段で算出された低解像度層の動きベクトルを、高解像度の層の画像サイズに合わせた大きさにしたもので代用するようにする。【選択図】図１
2010288110.tif 000002
【特許請求の範囲】
【請求項１】
高解像度の基準フレームの画像情報が格納される高解像度基準フレームバッファと、
高解像度の参照フレームの画像情報が格納される高解像度参照フレームバッファと、
前記高解像度の基準フレームの画像が縮小された低解像度の基準フレームの画像情報が格納される低解像度基準フレームバッファと、
前記高解像度の参照フレームの画像が縮小された低解像度の参照フレームの画像情報が格納される低解像度参照フレームバッファと、
前記低解像度基準フレームおよび前記低解像度参照フレームにおいて、複数の画素からなる所定の大きさの低解像度層のブロックの単位で、低解像度層の動きベクトルを算出する低解像度動きベクトル算出手段と、
前記高解像度基準フレームおよび前記高解像度参照フレームにおいて、前記低解像度層のブロックに対応する大きさの高解像度層のブロックの単位で、前記低解像度層の動きベクトルの算出結果を用いながら、高解像度層の動きベクトルを算出する高解像度動きベクトル算出手段と、
前記高解像度層のブロック毎に、当該高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする高解像度層計算判定手段と、
を備え、
前記高解像度層計算判定手段で、前記高解像度層のブロックについての動きベクトルの算出をすると判定したときには、前記高解像度動きベクトル算出手段を動作させて、前記高解像度層の動きベクトルを算出させるようにすると共に、前記高解像度層のブロックについての動きベクトルの算出をしないと判定したときには、前記高解像度動きベクトル算出手段を動作させずに、前記低解像度動きベクトル算出手段で算出された前記低解像度層の動きベクトルを、前記高解像度の層の画像サイズに合わせた大きさにしたもので代用するようにする
画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記高解像度層計算判定手段は、前記高解像度基準フレームに設定されたブロックに対応する位置の前記低解像度基準フレームのブロックについての動きベクトルの算出時に用いられる前記低解像度層の情報を用いて、前記高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする
画像処理装置。
【請求項３】
請求項２に記載の画像処理装置において、
前記高解像度層計算判定手段は、前記高解像度基準フレームに設定されたブロックに対応する位置の前記低解像度基準フレームのブロックについて算出された動きベクトルの大きさに基づいて、前記高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする
画像処理装置。
【請求項４】
請求項２に記載の画像処理装置において、
前記高解像度層計算判定手段は、前記高解像度基準フレームに設定されたブロックに対応する位置の前記低解像度基準フレームのブロックと、当該低解像度基準フレームのブロックについて算出された動きベクトルの参照先の前記低解像度参照フレームのブロックとの相関度に基づいて、前記高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする
画像処理装置。
【請求項５】
請求項２に記載の画像処理装置において、
前記高解像度層計算判定手段は、前記高解像度基準フレームに設定されたブロックに対応する位置の前記低解像度基準フレームのブロック内の画像情報のエッジ量に基づいて、前記高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする
画像処理装置。
【請求項６】
請求項２に記載の画像処理装置において、
前記高解像度層計算判定手段は、前記高解像度基準フレームに設定されたブロックに対応する位置の前記低解像度基準フレームのブロックと、当該低解像度基準フレームのブロックと同じ位置の前記低解像度参照フレームのブロックとの相関度に基づいて、前記高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする
画像処理装置。
【請求項７】
請求項１に記載の画像処理装置において、
前記高解像度層計算判定手段は、前記高解像度基準フレームに設定されたブロックついての動きベクトルの算出時に用いられる前記高解像度層の情報を用いて、前記高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする
画像処理装置。
【請求項８】
請求項７に記載の画像処理装置において、
前記高解像度層計算判定手段は、前記高解像度基準フレームに設定されたブロック内の画像情報のエッジ量に基づいて、前記高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする
画像処理装置。
【請求項９】
請求項７に記載の画像処理装置において、
前記高解像度層計算判定手段は、前記高解像度基準フレームに設定されたブロックと、当該高解像度基準フレームに設定されたブロックに対応する位置の前記高解像度参照フレームのブロックとの相関度に基づいて、前記高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする
画像処理装置。
【請求項１０】
請求項１に記載の画像処理装置において、
前記高解像度層計算判定手段は、前記高解像度基準フレームに設定されたブロックと、当該高解像度基準フレームに設定されたブロックに対応する位置の前記低解像度基準フレームのブロックとの相関度に基づいて、前記高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする
画像処理装置。
【請求項１１】
請求項１に記載の画像処理装置において、
前記高解像度層計算判定手段は、前記高解像度基準フレームに設定されたブロックと、当該高解像度基準フレームに設定されたブロックに対応する位置の前記低解像度基準フレームのブロックについて算出された動きベクトルにより定まる位置の前記高解像度参照フレームのブロックとの相関度に基づいて、前記高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする
画像処理装置。
【請求項１２】
画像について、基準フレームと参照フレームとの間の動きベクトルを、前記基準フレームおよび参照フレームにおいて設定された複数の画素からなる所定の大きさのブロック毎に算出する画像処理装置における画像処理方法であって、
第１の格納手段が、高解像度の基準フレームの画像情報を高解像度基準フレームバッファに格納する第１の格納工程と、
第２の格納手段が、高解像度の参照フレームの画像情報を高解像度参照フレームバッファに格納する第２の格納工程と、
第１の縮小手段が、前記高解像度の基準フレームの画像を縮小して、低解像度の基準フレームの画像情報を生成する第１の縮小工程と、
第２の縮小手段が、前記高解像度の参照フレームの画像を縮小して、低解像度の参照フレームの画像情報を生成する第２の縮小工程と、
第３の格納手段が、前記低解像度の基準フレームの画像情報を低解像度基準フレームバッファに格納する第３の格納工程と、
第４の格納手段が、前記低解像度の参照フレームの画像情報を低解像度参照フレームバッファに格納する第４の格納工程と、
低解像度動きベクトル算出手段が、前記低解像度基準フレームおよび前記低解像度参照フレームにおいて、複数の画素からなる所定の大きさの低解像度層のブロックの単位で、低解像度層の動きベクトルを算出する低解像度動きベクトル算出工程と、
高解像度動きベクトル算出手段が、前記高解像度基準フレームおよび前記高解像度参照フレームにおいて、前記低解像度層のブロックに対応する大きさの高解像度層のブロックの単位で、前記低解像度層の動きベクトルの算出結果を用いながら、高解像度層の動きベクトルを算出する高解像度動きベクトル算出工程と、
高解像度層計算判定手段が、前記高解像度層のブロック毎に、当該高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする判定工程と、
前記判定工程で、前記高解像度層のブロックについての動きベクトルの算出をすると判定したときには、前記高解像度動きベクトル算出工程を実行させて、前記高解像度層の動きベクトルを算出させるようにすると共に、前記高解像度層のブロックについての動きベクトルの算出をしないと判定したときには、前記高解像度動きベクトル算出工程を実行させずに、前記低解像度動きベクトル算出工程で算出された前記低解像度層の動きベクトルを、前記高解像度の層の画像サイズに合わせた大きさにしたもので代用するようにする
画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、２枚の異なる画面の間での動き（動きベクトル）を検出する画像処理装置および画像処理方法に関する。この明細書で、画面とは、１フレーム分または１フィールド分の画像データからなり、１枚分としてディスプレイに表示される画像を意味しているものとしている。
【背景技術】
【０００２】
２枚の異なる画面の間での動き（動きベクトル）を検出し、検出した動きベクトルを用いることで、種々の画像処理を行うことができる。
【０００３】
例えば、動画像データを扱う際には、動画像データにおける２画面間の動きベクトルを用いることによって動画像データを、高効率で圧縮できることが広く知られている。また、検出した動きベクトルを用いることで、テレビジョンカメラのパン・チルト検出や被写体追尾などの処理を行うことも知られている。
【０００４】
さらに、最近では、検出した動きベクトルを用いて画像を重ね合わせることにより、センサレス手ぶれ補正や低照度撮影時のノイズ除去など、多岐に渡って応用が進められている。
【０００５】
動きベクトルの算出方法としては、ブロックマッチング手法や勾配法などが知られており、一般的には、ブロックマッチング手法が良く使用されている。
【０００６】
ブロックマッチング手法では、注目画面である参照画面と、当該参照画面の動きの元となる基準画面との間の２画面間の動きベクトルを、所定の大きさの矩形領域のブロック毎に、参照画面と基準画面との間での相関度を算出することにより算出する。
【０００７】
すなわち、基準画面に設定される基準ブロックと、参照画面において探索領域（サーチ範囲）内に複数設定される参照ブロックとの間の相関の強さを表す相関度をそれぞれ求める。そして、その求められた相関度のうち最も相関度の高い参照ブロックに基づいて、基準ブロックに対する動きベクトルを算出する。
【０００８】
なお、基準画面が時間的に参照画面よりも前の画面とされる場合（例えば、ＭＰＥＧにおける動き検出の場合）と、参照画面が時間的に基準画面よりも前の画面とされる場合（例えば、画像フレームの重ね合わせによるノイズ低減の場合）の両方がある。
【０００９】
前述したように、この明細書で、画面とは、１フレームまたは１フィールドの画像データからなる画像を意味しているが、この明細書における以下の説明の便宜上、画面は１フレームからなるものとして、画面をフレームと称することとする。したがって、参照画面は参照フレーム、基準画面は基準フレームと称することとする。
【００１０】
従来の一般的なブロックマッチングの概要を、図２７〜図３０を参照して説明する。
【００１１】
ここで説明するブロックマッチング手法においては、例えば、図２７（Ａ）に示すように、基準フレーム１００を、それぞれ水平方向の複数画素および垂直方向の複数ライン分からなる所定の大きさの矩形領域（ブロックという）の複数個に分割する。基準フレーム１００におけるこれらの複数個のブロック１０２のそれぞれを、基準ブロックという。
【００１２】
ブロックマッチングにおいては、基準ブロック１０２と相関性の高いブロックを、参照フレーム１０１の中から検索する。参照フレーム１０１に設定される基準ブロックと同じ大きさのブロックを参照ブロックと呼ぶ。
【００１３】
そして、前記検索の結果、相関性が最も高いとして参照フレーム１０１内に検出された参照ブロック１０３（図２７（Ｂ）参照）を、動き補償ブロックと呼ぶ。また、基準ブロック１０２と動き補償ブロック１０３との間の位置ずれ（位置ずれ量と位置ずれ方向を含む）を、動きベクトル（図２７（Ｂ）の符号１０４参照）と称する。
【００１４】
動きベクトル１０４は、参照フレーム１０１において、基準フレーム１００の各基準ブロック１０２の位置と同じ位置に、基準ブロック１０２の射影イメージブロック１０９を想定したとき、この基準ブロックの射影イメージブロック１０９の位置（例えば中心位置）と、動き補償ブロック１０３の位置（例えば中心位置）との間の位置ずれに相当し、位置ずれ量と位置ずれの方向成分も有するものである。
【００１５】
ブロックマッチング処理の概要を説明する。図２８において点線で示すように、参照フレーム１０１において、基準フレーム１００の各基準ブロック１０２の位置と同じ位置に基準ブロックの射影イメージブロック１０９を想定する。そして、この基準ブロックの射影イメージブロック１０９の中心の座標を、動き検出の原点１０５とする。そして、動きベクトル１０４が、動き検出の原点１０５から或る範囲内に存在すると仮定し、この動き検出の原点１０５を中心した所定の範囲をサーチ範囲１０６（図２７の一点鎖線参照）と設定する。
【００１６】
次に、参照フレームにおいて、基準ブロック１０２と同じ大きさのブロック（参照ブロック）１０８を設定する。そして、この参照ブロック１０８の位置を、サーチ範囲１０６内において、例えば水平方向および垂直方向に、１画素または複数画素単位で移動させるようにする。したがって、サーチ範囲１０６においては、複数個の参照ブロック１０８が設定されることになる。
【００１７】
ここで、参照ブロック１０８を、サーチ範囲１０６内を移動させるというのは、この例では、動き検出原点１０５が基準ブロックの中心位置であるので、参照ブロック１０８の中心位置を、サーチ範囲１０６内を移動させることを意味する。そのため、参照ブロック１０８を構成する画素は、サーチ範囲１０６よりもはみ出すことがある。
【００１８】
そして、サーチ範囲において、設定される各参照ブロック１０８に対して、当該各参照ブロック１０８と基準ブロック１０２との位置ずれ量および位置ずれ方向を表すベクトル（参照ベクトルという）１０７（図B参照）を設定する。そして、それぞれの参照ベクトル１０７が指し示す位置にある参照ブロック１０８の画像内容と、基準ブロック１０２の画像内容との相関性を評価する。
【００１９】
参照ベクトル１０７は、図２９に示すように、参照ブロック１０８の水平方向（Ｘ方向）の位置ずれ量Ｖｘとし、垂直方向（Ｙ方向）の位置ずれ量をＶｙとしたとき、ベクトル（Ｖｘ，Ｖｙ）と表すことができる。
【００２０】
例えば、参照ブロック１０８が、基準ブロック１０２の位置から、Ｘ方向に１画素ずれた位置にある場合、参照ベクトル１０７はベクトル（１，０）となる。また、図３０に示すように、参照ブロック１０８が、基準ブロック１０２の位置から、Ｘ方向に３画素、Y方向に２画素ずれた位置にある場合には、参照ベクトル１０７はベクトル（３，２）となる。
【００２１】
つまり、参照ベクトル１０７は、図３０の例に示すように、基準ブロック１０２および参照ブロック１０８の位置を、それぞれのブロックの中心位置とした場合、対応する各参照ブロック１０８の中心位置と基準ブロック１０２の中心位置との位置ずれを意味する。
【００２２】
参照ブロック１０８は、サーチ範囲１０６において移動するものとなるが、その場合に、参照ブロック１０８の中心位置がサーチ範囲１０６内を移動する。前述もしたように、参照ブロック１０８は、水平方向および垂直方向の複数画素からなる。このため、基準ブロック１０２とブロックマッチング処理される対象となる参照ブロック１０８が移動する最大範囲は、図３０に示すように、サーチ範囲１０６よりも広いマッチング処理範囲１１０となる。
【００２３】
そして、基準ブロック１０２の画像内容との相関が最も強いとして検出された参照ブロック１０８の位置を、基準ブロック１０２の、参照フレーム１０１における位置（動いた後の位置）として検出し、検出した参照ブロックを、動き補償ブロック１０３とする。そして、その検出した動き補償ブロック１０３の位置と、基準ブロック１０２の位置との間の位置ずれ量を、方向成分を含む量としての動きベクトル１０４として検出するようにする（図２７（Ｂ）参照）。
【００２４】
ここで、基準ブロック１０２と、サーチ範囲１０６に設定される複数の参照ブロック１０８との相関の強さを表す相関値は、基本的には基準ブロック１０２と参照ブロック１０８との対応する画素値を用いて算出される。この相関値を得る方法としては、自乗平均を用いる方法やブロック内の画素の差分の総和を算出する方法、その他種々の方法が提案されている。
【００２５】
以上のように、ブロックマッチング手法では、参照ブロックと基準ブロックとの相関度を、ブロック同士が近似しているかどうかの評価値として算出する。そして、算出した相関度が高い（評価値が高い）参照ブロックをサーチ範囲内において検出し、当該評価値の高い参照ブロックと基準ブロックとの位置ずれ量と位置ずれの方向とを、基準ブロックに対する動きベクトルとして検出する。
【００２６】
上述のようなブロックマッチング手法においては、サーチ範囲内に複数設定される参照ブロックと基準ブロックとの間の相関度を、参照ブロックごとに算出するため、画像処理量（処理サイクル数）が多くなり、消費電力が大きくなってしまうという問題がある。
【００２７】
この問題を解決するため、基準フレームと参照フレームそれぞれについて、高解像度の画像と、高解像度の画像を縮小して得た低解像度の画像とで階層を構成し、階層ごとに動きベクトルを算出する方法が考案されている（特許文献１参照）。
【００２８】
この階層的な動きベクトルの算出手法においては、低解像度の画像について、基準ブロックに対する動きベクトルを求め、求めた動きベクトルから、高解像度の画像における基準ブロックに対する参照ブロックのサーチ範囲を定める。したがって、高解像度の画像では、参照フレームにおける参照ブロックのサーチ範囲を狭い範囲とすることができる。
【００２９】
以上のことから、階層化手法を用いれば、低解像度の画像での動きベクトルの算出の際には、画素数が少なくなるので、基準ブロックと参照ブロックとの相関度を算出する際の演算処理量が少なくなる。そして、低解像度の画像に基づいて得た動きベクトルから、高解像度の画像における基準ブロックに対する参照ブロックのサーチ範囲を狭い範囲とすることができる。このため、最終的に得たい高解像度の画像の基準ブロックに対する動きベクトルを少ない画像処理量（処理サイクル数）で算出することができる。
【００３０】
しかし、階層的に動きベクトルを算出する方法でも、画像の縮小率が高すぎると正確な動きベクトルを求めることが出来ないため、階層的に動きベクトルを算出するだけでは画像処理量や消費電力の削減には限界があった。
【００３１】
これに対して、例えば特許文献２には、画像を帯域分離して低周波画像と高周波画像で階層を構成し、高周波成分の総量が閾値以下の場合は高周波画像での動きベクトル算出を省略するという方法が考案されている。
【先行技術文献】
【特許文献】
【００３２】
【特許文献１】特開２００９−５５４１０号公報
【特許文献２】特開２００４−５６３０５号公報
【発明の概要】
【発明が解決しようとする課題】
【００３３】
しかしながら、特許文献２の方法では、画像信号について、帯域分離して階層化するための処理量が必要となり、その分、画像処理量を削減することができないと言う問題がある。
【００３４】
また、特許文献２の方法では、動きベクトルの算出の省略は、高周波画像のフレーム全体に対して行うようにしているため、フレーム全体に対する高周波の割合が高い場合は、動きベクトルの算出の省略はなく、計算量を削減できないという問題もあった。
【００３５】
この発明は、以上の点にかんがみ、より効率的に、処理サイクル数を少なくして、消費電力を抑制することができる画像処理装置および方法を提供することを目的とする。
【課題を解決するための手段】
【００３６】
上記の課題を解決するために、この発明による画像処理装置は、
高解像度の基準フレームの画像情報が格納される高解像度基準フレームバッファと、
高解像度の参照フレームの画像情報が格納される高解像度参照フレームバッファと、
前記高解像度の基準フレームの画像が縮小された低解像度の基準フレームの画像情報が格納される低解像度基準フレームバッファと、
前記高解像度の参照フレームの画像が縮小された低解像度の参照フレームの画像情報が格納される低解像度参照フレームバッファと、
前記低解像度基準フレームおよび前記低解像度参照フレームにおいて、複数の画素からなる所定の大きさの低解像度層のブロックの単位で、低解像度層の動きベクトルを算出する低解像度動きベクトル算出手段と、
前記高解像度基準フレームおよび前記高解像度参照フレームにおいて、前記低解像度層のブロックに対応する大きさの高解像度層のブロックの単位で、前記低解像度層の動きベクトルの算出結果を用いながら、高解像度層の動きベクトルを算出する高解像度動きベクトル算出手段と、
前記高解像度層のブロック毎に、当該高解像度層のブロックについての動きベクトルの算出をするか否かの判定をする高解像度層計算判定手段と、
を備え、
前記高解像度層計算判定手段で、前記高解像度層のブロックについての動きベクトルの算出をすると判定したときには、前記高解像度動きベクトル算出手段を動作させて、前記高解像度層の動きベクトルを算出させるようにすると共に、前記高解像度層のブロックについての動きベクトルの算出をしないと判定したときには、前記高解像度動きベクトル算出手段を動作させずに、前記低解像度動きベクトル算出手段で算出された前記低解像度層の動きベクトルを、前記高解像度の層の画像サイズに合わせた大きさにしたもので代用するようにする
ことを特徴とする。
【００３７】
上述の構成のこの発明による画像処理装置においては、階層化は、帯域分離ではなく、画像の縮小によりなされ、簡単な処理でよい。
【００３８】
そして、高解像度層では、動きベクトルの算出をするかどうかの判定を、高解像度基準フレームに設定されるブロック毎に行う。したがって、動きベクトルを算出する基準フレームと参照フレームとの画像内容に応じて、適宜、高解像度層のブロックの動きベクトルの算出を省略することができる。
【発明の効果】
【００３９】
この発明によれば、高解像度層での動きベクトルの算出をするかどうかの判定を、高解像度基準フレームに設定されるブロック毎に行う。このため、基準フレームと参照フレームとの画像内容に応じて、適宜、高解像度層のブロックの動きベクトルの算出を省略することができる。これにより、処理サイクル数や消費電力を、的確に抑制することができる。
【図面の簡単な説明】
【００４０】
【図１】この発明による画像処理装置の第１の実施形態のハードウエア構成例を示すブロック図である。
【図２】この発明による画像処理装置の実施形態で用いる階層化ブロックマッチング処理を説明するための図である。
【図３】この発明による画像処理装置の実施形態で用いる階層化ブロックマッチング処理を説明するための図である。
【図４】この発明による画像処理装置の実施形態で用いる階層化ブロックマッチング処理を説明するための図である。
【図５】この発明による画像処理装置の実施形態で用いる階層化ブロックマッチング処理を説明するための図である。
【図６】この発明による画像処理装置の実施形態で用いる階層化ブロックマッチング処理を説明するための図である。
【図７】この発明による画像処理装置の実施形態を説明するために用いる演算式を示す図である。
【図８】この発明による画像処理装置の実施形態で用いるブロックマッチング処理の流れを説明するためのフローチャートを示す図である。
【図９】この発明による画像処理装置の第１の実施形態における処理の流れを説明するためのフローチャートを示す図である。
【図１０】この発明による画像処理装置の第２の実施形態のハードウエア構成例を示すブロック図である。
【図１１】この発明による画像処理装置の第２の実施形態における処理の流れを説明するためのフローチャートを示す図である。
【図１２】この発明による画像処理装置の第３の実施形態のハードウエア構成例を示すブロック図である。
【図１３】この発明による画像処理装置の第３の実施形態における処理の流れを説明するためのフローチャートを示す図である。
【図１４】この発明による画像処理装置の第４の実施形態のハードウエア構成例を示すブロック図である。
【図１５】この発明による画像処理装置の第４の実施形態における処理の流れを説明するためのフローチャートを示す図である。
【図１６】この発明による画像処理装置の第５の実施形態のハードウエア構成例を示すブロック図である。
【図１７】この発明による画像処理装置の第５の実施形態における処理の流れを説明するためのフローチャートを示す図である。
【図１８】この発明による画像処理装置の第６の実施形態のハードウエア構成例を示すブロック図である。
【図１９】この発明による画像処理装置の第６の実施形態における処理の流れを説明するためのフローチャートを示す図である。
【図２０】この発明による画像処理装置の第７の実施形態のハードウエア構成例を示すブロック図である。
【図２１】この発明による画像処理装置の第７の実施形態における処理の流れを説明するためのフローチャートを示す図である。
【図２２】この発明による画像処理装置の第８の実施形態のハードウエア構成例を示すブロック図である。
【図２３】この発明による画像処理装置の第８の実施形態における処理の流れを説明するためのフローチャートを示す図である。
【図２４】この発明による画像処理装置の他の実施形態を説明するための図である。
【図２５】この発明による画像処理装置の他の実施形態を説明するための図である。
【図２６】この発明による画像処理装置の他の実施形態における処理の流れを説明するためのフローチャートを示す図である。
【図２７】この発明による画像処理装置の実施形態で用いるブロックマッチング処理の概要を説明するための図である。
【図２８】この発明による画像処理装置の実施形態で用いるブロックマッチング処理の概要を説明するための図である。
【図２９】この発明による画像処理装置の実施形態で用いるブロックマッチング処理の概要を説明するための図である。
【図３０】この発明による画像処理装置の実施形態で用いるブロックマッチング処理の概要を説明するための図である。
【発明を実施するための形態】
【００４１】
以下、この発明による画像処理装置および方法の幾つかの実施形態を、図を参照しながら説明する。
【００４２】
この発明の実施形態を説明する前に、当該実施形態で用いる階層的な動きベクトル算出手法を用いた画像処理装置の概要を説明する。
【００４３】
この実施形態では、先ず、元の画像（高解像度画像）に対して縮小画像（低解像度画像）を作成し、作成した縮小画像でブロックマッチングを行い、縮小画像での動きベクトルの検出を行なう。次に、縮小画像での動きベクトルの検出結果を基に、元の高解像度画像でのブロックマッチングを行う。
【００４４】
図２および図３に、基準フレームおよび参照フレームの画像縮小化のイメージを示す。すなわち、この実施形態においては、例えば図２に示すように、高解像度基準フレーム１２０は、水平方向および垂直方向のそれぞれを、１／ｎ（ｎは正の数）に縮小して、低解像度基準フレーム１２１とする。すなわち、例えば、水平方向および垂直方向のそれぞれの画素数を、１／ｎに間引くことにより、低解像度の画像情報を生成する。
【００４５】
動きベクトルは、前述と同様に、フレームを複数個に分割したブロック単位に検出する。高解像度基準フレーム１２０を複数個に分割して生成した高解像度基準ブロック１２２は、低解像度基準フレームでは、水平方向および垂直方向のそれぞれが１／ｎ×１／ｎに縮小された低解像度基準ブロック１２３となる。
【００４６】
そして、基準フレームの画像縮小倍率１／ｎに合わせて、参照フレームを縮小する。すなわち、図３に示すように、高解像度参照フレーム１２４は、水平方向および垂直方向のそれぞれを、１／ｎに縮小して、低解像度参照フレーム１２５とする。
【００４７】
そして、高解像度参照フレーム１２４上に設定される高解像度参照ブロック１２６は、低解像度参照フレーム１２５では、１／ｎ×１／ｎに縮小された低解像度参照ブロック１２７となる。そして、高解像度参照フレーム１２４上で検出される高解像度動きベクトル１２８は、低解像度参照フレーム１２５では、１／ｎ×１／ｎに縮小された低解像度動きベクトル１２９として検出される。
【００４８】
図４に、低解像度参照ベクトルと高解像度参照ベクトルの関係を示す。参照フレームに設定されるサーチ範囲は、例えば基準ブロックに対応する位置の参照ブロックの中心位置に等しい動き検出原点１３１，１３２を中心に設定される。
【００４９】
図４（Ｂ）に示すように、１／ｎ×１／ｎに画像縮小された低解像度参照フレーム１２５上に設定された低解像度サーチ範囲１３４は、高解像度参照フレーム１２４では、図４（Ａ）に示すサーチ範囲１３３のように広い範囲となる。
【００５０】
この例の階層化処理においては、低解像度サーチ範囲１３４内において、低解像度参照フレーム１２５での動き検出原点１３２からの位置ズレを表す低解像度参照ベクトル１３５を設定し、それぞれの低解像度参照ベクトル１３５が指し示す位置にある低解像度参照ブロック１２７と、低解像度基準ブロック１２３（図２参照）との相関性を評価する。
【００５１】
そして、相関性を評価するための評価値が高い低解像度参照ブロック１２７に対応する低解像度参照ベクトルを、低解像度動きベクトル１２９（図３参照）として検出する。
【００５２】
この場合、縮小画像において、ブロックマッチングを行うので、低解像度参照フレーム１２５において相関値を算出すべき低解像度参照ブロック位置の数を少なくすることができる。したがって、相関値の算出回数（マッチング処理回数）が少なくすることができ、その分だけ、消費電力を削減することができる。
【００５３】
図５に示すように、低解像度サーチ範囲１３４に応じて定まる低解像度マッチング処理範囲１４３内に設定される複数個の低解像度参照ブロックと低解像度基準ブロックとのブロックマッチングによる相関性評価により、低解像度参照フレーム１２５における低解像度動きベクトル１２９が算出される。
【００５４】
検出された低解像度動きベクトル１２９の精度は、画像が１／ｎ×１／ｎに縮小されているので、１ピクセルのｎ倍の低精度となっている。そこで、この算出された低解像度動きベクトル１２９をｎ倍しても、高解像度参照フレーム１２４において、１ピクセル精度の動きベクトルは得られない。
【００５５】
しかし、高解像度参照フレーム１２４においては、検出された低解像度動きベクトル１２９をｎ倍した動きベクトルの近傍に、１ピクセル精度の高解像度動きベクトルが存在することは明らかである。
【００５６】
そこで、この例では、図４（Ｃ）および図５に示すように、高解像度参照フレーム１２４において、低解像度動きベクトル１２９をｎ倍した動きベクトルが指し示す位置を中心として、高解像度サーチ範囲１４０を設定する。そして、低解像度動きベクトル１２９をｎ倍した動きベクトルが指し示す位置を高解像度参照フレーム１２４で検出する高解像度動きベクトルの原点とする。
【００５７】
高解像度サーチ範囲１４０は、高解像度動きベクトルが存在するであろうと考えられる狭い範囲である。この高解像度サーチ範囲１４０は、高解像度参照フレーム１２４で、階層化処理をしない場合に設定されるサーチ範囲１３３（図４（Ａ）参照）に比較して、非常に狭い範囲とすることができる。そして、設定した高解像度サーチ範囲１４０に応じて高解像度マッチング処理範囲１４４が設定される。
【００５８】
そして、この高解像度サーチ範囲１４０内の位置を示すものとして、高解像度参照フレーム１２４における高解像度参照ベクトルを、低解像度動きベクトル１２９をｎ倍した動きベクトルが指し示す位置を原点として設定する。そして、各高解像度参照ベクトルが指し示す位置に高解像度参照ブロック１４２を設定して、高解像度基準フレーム１２０の高解像度基準ブロック１２２との間で前述した相関度を算出するようにする。
【００５９】
そして、高解像度基準ブロック１２２と最も相関度が高い高解像度参照ブロック１４２に対応する高解像度参照ベクトルを、高解像度動きベクトルとして検出する。
【００６０】
そして、高解像度参照フレーム１２４において検出された高解像度動きベクトルと、低解像度参照フレーム１２５において検出された低解像度動きベクトルの合成ベクトルとして、高解像度基準ブロックについての目的とするブロック毎動きベクトルを検出する。
【００６１】
すなわち、図６に示すように、この例の階層化処理においては、元画像の縮小画像である低解像度基準フレーム１２１上に、高解像度基準フレーム１２０に設定される高解像度基準ブロックに対応する低解像度基準ブロック１２３を設定する。そして、この低解像度基準ブロック１２３について、低解像度参照フレーム１２５との間でのブロックマッチング処理により、低解像度動きベクトル１２９を求める。
【００６２】
次に、高解像度参照フレーム１２４において、低解像度動きベクトル１２９をｎ倍した動きベクトル１５１が指し示す位置を原点として、サーチ範囲を定め、当該サーチ範囲内に複数個の高解像度参照ブロックを設定する。そして、設定した複数個の高解像度参照ブロックと、高解像度基準ブロック１２２との間での相関度を求め、最も相関度が大きい高解像度参照ブロックに対応する高解像度参照ベクトルを、高解像度動きベクトル１５２として検出する。
【００６３】
そして、低解像度動きベクトル１２９をｎ倍した動きベクトル１５１と、高解像度動きベクトル１５２との合成ベクトルとして、高解像度基準ブロック１２２についての目的とするブロック毎動きベクトル１５３を検出する。
【００６４】
ここで、低解像度動きベクトル１２９をＭＶ１、高解像度動きベクトル１５２をＭＶ２とし、目的とするブロック毎動きベクトル１５３をＭＶとすると、
ＭＶ＝ｎＭＶ１＋ＭＶ２
として算出される。
【００６５】
図５に示したように、高解像度参照フレーム１２４で設定された高解像度サーチ範囲１４０および高解像度マッチング処理範囲１４４は、低解像度サーチ範囲１３４および低解像度マッチング処理範囲１４３を縮小率の逆数倍であるｎ倍したサーチ範囲１３４´およびマッチング処理範囲１４３´に比較して非常に狭い範囲となる。
【００６６】
階層化マッチングを行わずに、高解像度においてのみブロックマッチング処理をした場合には、サーチ範囲１３７´およびマッチング処理範囲１４３´において、複数個の参照ブロックを設定して、基準ブロックとの相関値を求める演算をする必要がある。しかし、階層化マッチング処理においては、図５のように、非常に狭い範囲においてのみマッチング処理を行えばよい。
【００６７】
このため、当該狭い範囲である、高解像度サーチ範囲１４０および高解像度マッチング処理範囲１４４に設定される高解像度参照ブロックの数は非常に少なくなり、マッチング処理回数（相関値演算回数）を非常に小さくすることができる。したがって、処理量がすくなくなるので、消費電力を削減することができると共に、処理を高速化することもできるという効果を得ることができる。
【００６８】
なお、上記の説明では、基準フレームと参照フレームとの画像縮小倍率は同じとしたが、演算量削減のため、基準フレームと参照フレームとで異なる画像縮小倍率を用い、画素補間等の処理で、両フレームの画素数を合わせて、マッチングを行うようにしてもよい。
【００６９】
また、水平方向および垂直方向のそれぞれの縮小倍率を同一としたが、水平方向と垂直方向とで、縮小倍率を異ならせるようにしても良い。例えば水平方向は１／ｎに縮小し、垂直方向は、１／ｍ（ｍは正の数で、ｎ≠ｍ）に縮小する場合には、縮小画面は、元の画面の１／ｎ×１／ｍの大きさになる。
【００７０】
なお、上述の階層化処理においては、低解像度動きベクトルと高解像度動きベクトルとの合成ベクトルとして目的のブロック毎動きベクトルを算出するようにした。これは、高解像度動きベクトルの原点を、低解像度動きベクトルを画像縮小倍率の逆数倍した動きベクトルが指し示す位置を高解像度参照ベクトルの原点位置としたからである。
【００７１】
高解像度参照ベクトルの原点位置を、高解像度基準ブロックの中心位置のままとした場合には、検出された高解像度動きベクトルは、そのまま目的のブロック毎動きベクトルとすることができる。
【００７２】
以上の説明では、低解像度フレームでのブロックマッチングの結果を用いて、必ず、高解像度フレームのブロックマッチングを行うようにした。
【００７３】
これに対して、この発明の実施形態では、高解像度の層では、高解像度フレームの高解像度基準ブロック毎に、動きベクトルを算出するかしないかを判定する。そして、動きベクトルを算出しなくてもよいと判定した場合には、当該高解像度基準ブロックについての動きベクトルの算出を省略する。
【００７４】
そして、高解像度の層で、動きベクトルの算出しないとした高解像度基準ブロックの動きベクトルは、当該高解像度基準ブロックに対応する低解像度基準ブロックについて求められた低解像度動きベクトルを画像縮小倍率の逆数倍したもので代用するようにする。
【００７５】
高解像度の層で、高解像度基準ブロック毎に、動きベクトルを算出するかしないかを判定する手法については、以下に説明するように幾つかの手法がある。以下に説明する複数個の実施形態は、高解像度基準ブロック毎に、動きベクトルを算出するかしないかを判定する手法が異なるものであって、すべて、上述した階層化処理を可能とする構成を備えることを前提とするものである。
【００７６】
［第１の実施形態］
図１は、この発明による画像処理装置の第１の実施形態の要部の構成例のブロック図である。なお、この第１の実施形態の画像処理装置だけではなく、以下に説明する実施形態の画像装置は、例えば動画の画像信号から動きベクトルを検出する動きベクトル検出装置の構成例である。
【００７７】
この第１の実施形態は、高解像度基準ブロック毎に、動きベクトルを算出するかしないかを判定する手法が、低解像度層での情報のみを使用する場合の例である。この例の場合、元の画像の縮小画像である低解像画像のみについての情報を用いるため、処理サイクル数や消費電力を、より少なく抑えることができる。
【００７８】
図１に示すように、この例においては、動画の画像信号の各フレームの画像信号が１フレーム遅延された、時間的に１フレーム前の各フレームの画像信号は、基準フレーム信号ＴＧとして高解像度基準フレームバッファ１に取り込まれる。
【００７９】
また、動画の画像信号の現在の各フレームの画像信号が、参照フレーム信号ＲＥＦとして高解像度参照フレームバッファ２に取り込まれる。
【００８０】
高解像度基準フレームバッファ１および高解像度参照フレームバッファ２は、それぞれ別々のフレームメモリで構成されていてもよいし、複数フレーム分を格納可能な１個の画像メモリの異なるメモリ領域として構成されていてもよい。
【００８１】
高解像度基準フレームバッファ１に取り込まれた高解像度基準フレームの画像信号は、画像縮小部３により、前述したようにして、１／ｎに縮小されて低解像度基準フレームの画像信号とされた後、低解像度基準フレームバッファ５に格納される。
【００８２】
また、高解像度参照フレームバッファ２に取り込まれた高解像度参照フレームの画像信号は、画像縮小部４により、前述したようにして、１／ｎに縮小されて低解像度参照フレームの画像信号とされた後、低解像度参照フレームバッファ６に格納される。
【００８３】
これらの低解像度基準フレームバッファ５および低解像度参照フレームバッファ６も、それぞれ別々の縮小画面分のメモリで構成されていてもよいし、複数の縮小画面分を格納可能な１個の画像メモリの異なるメモリ領域として構成されていてもよい。
【００８４】
低解像度基準ブロック決定部７は、低解像度基準フレームに設定される複数個の低解像度基準ブロックの中から、低解像度動きベクトルを検出する低解像度基準ブロックを順次に決定する。そして、低解像度基準ブロック決定部７は、決定した低解像度基準ブロックの画像信号を、低解像度基準フレームバッファ５から読み出して、低解像度動きベクトル計算部９に供給する。
【００８５】
低解像度基準ブロック決定部７は、また、決定した低解像度基準ブロックの位置情報を、低解像度参照ブロック決定部８に通知する。
【００８６】
低解像度参照ブロック決定部８は、低解像度基準ブロック決定部７から受けた低解像度基準ブロックの位置情報に基づき、低解像度参照フレームにおけるサーチ範囲（マッチング処理範囲）を決定する。そして、低解像度参照ブロック決定部８は、決定したサーチ範囲の複数個の低解像度参照ブロックを、順次に、低解像度参照フレームバッファ６から読み出し、低解像度動きベクトル計算部９に供給する。
【００８７】
低解像度動きベクトル計算部９は、低解像度基準ブロックと、サーチ範囲内の複数個の低解像度参照ブロックのそれぞれとの間の相関度を計算する。
【００８８】
この例においては、相関度を示す尺度となる相関値として、例えば、低解像度基準ブロック内の各画素の輝度値と、低解像度参照ブロック内の対応する各画素の輝度値との差分の絶対値の、ブロック内の全画素についての総和（図７の式（１）参照）が用いられる。この差分の絶対値の総和を差分絶対値和と呼ぶ。以下、この差分絶対値和をＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）値と記載することとする。相関値としてＳＡＤ値が用いられる場合には、ＳＡＤ値が小さいほど相関が強い（相関度が高い）ものとされる。
【００８９】
低解像度動きベクトル計算部９は、相関度の最も高い低解像度ブロックに対応する低解像度参照ベクトルを、低解像度基準ブロックに対する低解像度動きベクトルとして検出する。
【００９０】
そして、低解像度動きベクトル計算部９は、低解像度基準ブロックの低解像度基準フレームにおける位置情報と、当該低解像度基準ブロックについて検出した低解像度動きベクトルとを、低解像度動きベクトル用バッファ１０に格納する。
【００９１】
低解像度動きベクトル用バッファ１０には、低解像度基準フレームにおける全ての低解像度基準ブロックについての位置情報と、当該低解像度基準ブロックについて検出された低解像度動きベクトルとが格納される。
【００９２】
低解像度基準ブロック決定部７、低解像度参照ブロック決定部８および低解像度動きベクトル計算部９での処理の流れを、図８に示す。この図８は、１枚の低解像度基準フレームの全ての低解像度基準ブロックについての処理の流れを示すものである。
【００９３】
そして、この図８の処理の流れは、低解像度基準ブロック決定部７、低解像度参照ブロック決定部８および低解像度動きベクトル計算部９が、例えばマイクロコンピュータによるソフトウエア処理とされた場合の処理の流れに等しい。
【００９４】
なお、図８においては、基準ブロックおよび参照ブロック等について、低解像度の層であることを明記していないが、これは、高解像度の層においても、同様にして動きベクトルの算出がなされることを考慮したものである。
【００９５】
先ず、低解像度基準フレームにおいて、低解像度動きベクトルを求めようとする低解像度基準ブロックを決定する（ステップＳ１０１）。次に、決定した低解像度基準ブロックに対応するサーチ範囲を決定し、当該サーチ範囲の一つの低解像度参照ブロックを決定する（ステップＳ１０２）。
【００９６】
次に、ステップＳ１０２で決定した低解像度参照ブロックと、ステップＳ１０１で決定した低解像度基準ブロックとの間の相関値を求める（ステップＳ１０３）。この例では、前述したように、相関値としてＳＡＤ値を求める。
【００９７】
次に、求めた相関値（ＳＡＤ値）と低解像度参照ブロックの低解像度参照フレームにおける位置とを対応付けて保存する（ステップＳ１０４）。
【００９８】
次に、サーチ範囲内の全ての低解像度参照ブロックについての相関値の計算が終了したか否か判別する（ステップＳ１０５）。
【００９９】
このステップＳ１０５で、全ての低解像度参照ブロックについては終了していないと判別したときには、ステップＳ１０２に戻り、サーチ範囲内において、相関値の計算が終了していない他の一つの低解像度参照ブロックを決定する。そして、ステップＳ１０２以降の処理を繰り返す。
【０１００】
ステップＳ１０５で、サーチ範囲内の全ての低解像度参照ブロックについての相関値の計算が終了したと判別したときには、当該サーチ範囲内の低解像度参照ブロックに中から、相関度が最も強い低解像度参照ブロックを検出する（ステップＳ１０６）。相関値がＳＡＤ値である場合には、ＳＡＤ値が最小である低解像度参照ブロックを検出する。
【０１０１】
ステップＳ１０６で、相関度が最も強い低解像度参照ブロックを検出したら、その検出した低解像度参照ブロックに対応する参照ベクトルを、低解像度動きベクトルとして検出し、低解像度動きベクトル用バッファ１０に書き込む（ステップＳ１０７）。
【０１０２】
次に、低解像度基準フレーム内の全ての低解像度基準ブロックについての低解像度動きベクトルの検出が終了したか否か判別する（ステップＳ１０８）。
【０１０３】
そして、ステップＳ１０８で、低解像度基準フレーム内の全ての低解像度基準ブロックについての低解像度動きベクトルの検出は終了していないと判別したときには、ステップＳ１０１に戻る。そして、低解像度基準フレーム内の低解像動きベクトルを検出していない他の一つの低解像度基準ブロックを決定し、このステップＳ１０１以降の処理を繰り返す。
【０１０４】
また、ステップＳ１０８で、低解像度基準フレーム内の全ての低解像度基準ブロックについての低解像度動きベクトルの検出は終了したと判別したときには、この処理ルーチンを終了する。
【０１０５】
図１の高解像度の層についての構成について説明する。
【０１０６】
高解像度基準ブロック決定部１１は、高解像度基準フレームに設定される複数個の高解像度基準ブロックの中から、高解像度動きベクトルを検出する高解像度基準ブロックを順次に決定する。そして、高解像度基準ブロック決定部１１は、決定した高解像度基準ブロックの画像信号を、高解像度基準フレームバッファ１から読み出して、高解像度動きベクトル計算部１３に供給する。
【０１０７】
高解像度基準ブロック決定部１１は、また、決定した高解像度基準ブロックの位置情報を、高解像度参照ブロック決定部１２に通知する。
【０１０８】
高解像度参照ブロック決定部１２は、高解像度基準ブロック決定部１１から受けた高解像度基準ブロックの位置情報に基づき、対応する低解像度基準ブロックについての低解像度動きベクトルを、低解像度動きベクトル用バッファ１０から取得する。
【０１０９】
そして、高解像度参照ブロック決定部１２は、高解像度基準ブロック決定部１１から受けた高解像度基準ブロックの位置情報と、低解像度動きベクトル用バッファ１０から取得した低解像度動きベクトルとに基づき、高解像度参照フレームにおけるサーチ範囲（マッチング処理範囲）を決定する。
【０１１０】
そして、高解像度参照ブロック決定部１２は、決定したサーチ範囲の複数個の高解像度参照ブロックを、順次に、高解像度参照フレームバッファ２から読み出し、高解像度動きベクトル計算部１３に供給する。
【０１１１】
高解像度動きベクトル計算部１３は、低解像度基準ブロックと、サーチ範囲内の複数個の低解像度参照ブロックのそれぞれとの間の相関度を、図８に示した処理の流れと同様にして計算する。
【０１１２】
ただし、この高解像度の層においては、ステップＳ１０２の参照ブロックの決定時のサーチ範囲の決定については、前述したように、低解像度動きベクトルをも用いる点が、低解像度の層の場合と異なる。
【０１１３】
そして、この例では、この高解像度動きベクトル計算部１３は、さらに、求めた高解像度動きベクトルと、低解像度動きベクトル用バッファ１０からの対応する低解像度動きベクトルとを合成して、階層化処理後の動きベクトルを得る計算も行う。
【０１１４】
従来の階層化処理であれば、この高解像度動きベクトル計算部１３で得られた動きベクトルを、最終的な動きベクトルとして出力する。この場合に、図８のステップＳ１０７においては、検出した動きベクトルは、バッファに格納するようにしたが、この高解像度層では、バッファに格納することなく、動きベクトルを出力するようにする。
【０１１５】
この発明の実施形態の画像処理装置における階層化処理においては、前述したように、高解像層では、設定された高解像度基準ブロック毎に、上述の動きベクトルを求める計算を実行するか否かを判定するようにする。そして、高解像度層での計算を実行すると判定したときには、高解像度動きベクトル計算部１３で求められた動きベクトルを出力する。また、高解像度層での計算を実行しないと判定したときには、高解像度基準ブロックに対応する位置の低解像度基準ブロックについて求められた低解像度動きベクトルを、縮小倍率の逆数倍したものを、代替の動きベクトルとして出力する。
【０１１６】
このため、この発明の実施形態の画像処理装置においては、高解像度層計算判定部１４と、スケーリング部１５と、動きベクトル切替部１６とを設ける。
【０１１７】
スケーリング部１５は、低解像度動きベクトル用バッファ１０からの低解像度動きベクトルを、縮小倍率の逆数倍して、動きベクトル切替部１６に供給する。
【０１１８】
動きベクトル切替部１６は、高解像度動きベクトル計算部１３からの動きベクトルと、スケーリング部１５からの動きベクトルとの２つの動きベクトルを入力として受け、そのいずれかを選択して出力するようにする。
【０１１９】
高解像度層計算判定部１４には、高解像度基準ブロック決定部１１から、決定された高解像度基準ブロックの位置情報が送られる。高解像度層計算判定部１４は、受け取った位置情報から、決定された高解像度基準ブロックを認識し、当該高解像度基準ブロックについて、後述するようにして、上述の高解像層での動きベクトルを求める計算を実行するか否かを判定する。
【０１２０】
高解像度層計算判定部１４は、高解像度動きベクトル計算部１３および高解像度参照ブロック決定部１２に対して、計算および処理を実行させるか否かの制御信号ＣＴＬを供給する。また、この例では、高解像度層計算判定部１４は、動きベクトル切替部１６に対して、２つの動きベクトルのいずれを選択して出力するかの切替制御信号ＳＷを供給する。
【０１２１】
高解像度層計算判定部１４は、高解像度層での計算を実行すると判定したときには、高解像度動きベクトル計算部１３および高解像度参照ブロック決定部１２に対して、制御信号ＣＴＬにより、計算および処理を実行するように制御指示する。また、高解像度層計算判定部１４は、高解像度層での計算を実行すると判定したときには、動きベクトル切替部１６に対して、切替制御信号ＳＷにより、高解像度動きベクトル計算部１３からの動きベクトルを選択して出力するように制御指示する。
【０１２２】
また、高解像度層計算判定部１４は、高解像度層での計算を実行しないと判定したときには、高解像度動きベクトル計算部１３および高解像度参照ブロック決定部１２に対して、制御信号ＣＴＬにより、計算および処理を実行しないように制御指示する。
【０１２３】
また、高解像度層計算判定部１４は、高解像度層での計算を実行しないと判定したときには、低解像度動きベクトルバッファ１０に、高解像度基準ブロックの位置に対応する低解像度動きベクトルの読み出し指示を送る。すると、低解像度動きベクトルバッファ１０は、指示された低解像度動きベクトルをスケーリング部１５に供給する。スケーリング部１５は、受け取った低解像度動きベクトルを縮小倍率の逆数倍して、動きベクトル切替部１６に供給する。
【０１２４】
そして、高解像度層計算判定部１４は、高解像度層での計算を実行しないと判定したときには、動きベクトル切替部１６に対して、切替制御信号ＳＷにより、スケーリング部１５からの動きベクトルを選択して出力するように制御指示する。したがって、高解像度層計算判定部１４で、高解像度層での計算を実行しないと判定されたときには、動きベクトル切替部１６から、スケーリング部１５からの低解像度動きベクトルが縮小倍率の逆数倍された動きベクトルが出力される。
【０１２５】
＜第１の実施形態における高解像度層計算判定部１４における判定＞
そして、この第１の実施形態においては、高解像度層計算判定部１４における判定は、次のようにして行う。
【０１２６】
高解像度層計算判定部１４は、低解像度動きベクトルバッファ１０から、高解像度基準ブロック決定部１１で決定した高解像度基準ブロックに対応する低解像度基準ブロックについての低解像度動きベクトルを取得する。すなわち、高解像度層計算判定部１４は、低解像度動きベクトルバッファ１０に、高解像度基準ブロックに対応する低解像度基準ブロックについての低解像度動きベクトルの読み出し指示を送って、当該低解像度動きベクトルを取得する。
【０１２７】
そして、この第１の実施形態においては、高解像度層計算判定部１４は、取得した低解像度動きベクトルの大きさが、予め定めた閾値より大であるか否か判別し、その判別結果に応じて、高解像度層での動きベクトルの計算を実行させるかどうかを決定する。
【０１２８】
ここで、高解像度層計算判定部１４は、動きベクトル（ｘ，ｙ）の大きさ｜Ｖ（ｘ，ｙ）｜を、図７の（２）式に示すユークリッド距離や図７の（３）式に示すマンハッタン距離を用いて計算する。
【０１２９】
高解像度層計算判定部１４は、低解像度動きベクトルの大きさが、予め定めた閾値以上であると判別したときには、高解像度層での動きベクトルの計算を実行すると判定し、その判定結果に応じた前述の制御信号ＣＴＬおよび切替制御信号ＳＷを出力する。また、高解像度層計算判定部１４は、低解像度動きベクトルの大きさが、予め定めた閾値より小であると判別したときには、高解像度層での動きベクトルの計算を実行しないと判定し、その判定結果に応じた前述の制御信号ＣＴＬおよび切替制御信号ＳＷを出力する。
【０１３０】
このような判定をするのは、低解像度動きベクトルの大きさが閾値よりも小さいときには、２画面間での動きが小さく、高解像度動きベクトルを用いて得られる最終的な動きベクトルと、低解像度動きベクトルとの差が僅かであろうと考えられるからである。
【０１３１】
したがって、前記閾値は、高解像度動きベクトルを用いて得られる最終的な動きベクトルと、低解像度動きベクトルとの差として、どの程度まで許容するかに応じて定められる。
【０１３２】
この第１の実施形態における高解像度層での処理の流れを、図９のフローチャートを参照して説明する。
【０１３３】
このフローチャートの処理は、高解像度基準ブロック決定部１１、高解像度参照ブロック決定部１２、高解像度動きベクトル計算部１３および高解像度層計算判定部１４の部分が、マイクロコンピュータにより構成された場合のソフトウエア処理に対応する。後述する他の実施形態についても同様である。
【０１３４】
先ず、高解像度基準フレームにおいて、高解像度動きベクトルを求めようとする高解像度基準ブロックを決定する（ステップＳ１１１）。
【０１３５】
次に、決定した高解像度基準ブロックに対応する位置の低解像度基準ブロックの動きベクトル（低解像度動きベクトル）を、低解像度動きベクトルバッファ１０から取得する（ステップＳ１１２）。
【０１３６】
取得した低解像度動きベクトルの大きさを計算し、当該低解像度動きベクトルの大きさが、閾値以上であるか否か判別する（ステップＳ１１３）。
【０１３７】
ステップＳ１１３で、低解像度動きベクトルの大きさが、閾値以上であると判別したときには、高解像度層での動きベクトルの計算を実行し、求めた動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ１１４）。このステップＳ１１４での処理の流れの詳細は、図８において、点線で囲んだ動きベクトルの計算処理部分と同様のものとなる。
【０１３８】
また、ステップＳ１１３で、低解像度動きベクトルの大きさが、閾値よりも小さいと判別したときには、高解像度層での動きベクトルの計算を実行しない。そして、高解像度基準ブロックに対応する位置の低解像度動きベクトルを低解像度動きベクトルバッファ１０から読み出す。さらに、スケーリング部１５からの低解像度動きベクトルが縮小倍率の逆数倍された動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ１１５）。
【０１３９】
ステップＳ１１４およびステップＳ１１５の次には、全ての高解像度基準ブロックについての処理が終了したか否か判別する（ステップＳ１１６）。ステップＳ１１６で、全ての高解像度基準ブロックについての処理は終了していないと判別したときには、ステップＳ１１１に戻り、未処理の次の高解像度基準ブロックを設定して、このステップＳ１１１以降の処理を繰り返す。また、ステップＳ１１６で、全ての高解像度基準ブロックについての処理を終了したと判別したときには、この処理ルーチンを終了する。
【０１４０】
［第２の実施形態］
図１０は、この第２の実施形態の場合の画像処理装置の要部の構成例のブロック図である。図１０において、図１に示した第１の実施形態の画像処理装置と同一部分には、同一参照符号を付してある。
【０１４１】
この第２の実施形態を含め、以下に説明する他の幾つかの実施形態は、高解像度層計算判定部１４の入力情報と、その入力情報を用いた処理内容が異なるだけで、その他の部分の構成および処理内容は、上述した第１の実施形態と全く同様である。
【０１４２】
この第２の実施形態も、第１の実施形態と同様に、高解像度基準ブロック毎に、動きベクトルを算出するかしないかを判定する手法が、低解像度層での情報のみを使用する場合の例である。
【０１４３】
この第２の実施形態の高解像度層計算判定部１４は、高解像度基準ブロックに対応する位置の低解像度基準ブロックの動きベクトル（低解像度動きベクトル）に対応する相関値と、予め定めた閾値とを比較する。そして、高解像度層計算判定部１４は、その比較結果から高解像度層での動きベクトル計算を実行するかどうかを判定する。
【０１４４】
低解像度基準ブロックの低解像度動きベクトルに対応する相関値は、当該低解像度動きベクトルに対応する低解像度参照ブロックと、低解像度基準ブロックとの相関度の強さを示すものである。低解像度層で求めた低解像度動きベクトルが、相関度が相当以上に強いものであるときには、当該低解像度動きベクトルが信頼に足るものであるので、高解像度層での動きベクトルを検出する必要がないと考えられる。また、高解像度動きベクトルを用いて得られる最終的な動きベクトルと、低解像度動きベクトルとの差が僅かであろうと考えられる。
【０１４５】
そこで、第２の実施形態では、高解像度層計算判定部１４では、高解像度基準ブロックに対応する位置の低解像度基準ブロックの動きベクトルに対応する相関値と閾値とを比較して、前記相関度が相当以上強いか否かを判定する。
【０１４６】
そして、高解像度層計算判定部１４は、相関値と閾値との比較から、相関度が低いと判別したときには、高解像度層での動きベクトルの計算を実行すると判定し、その判定結果に応じた前述の制御信号ＣＴＬおよび切替制御信号ＳＷを出力する。また、高解像度層計算判定部１４は、相関値と閾値との比較から、相関度が高いと判別したときには、高解像度層での動きベクトルの計算を実行しないと判定し、その判定結果に応じた前述の制御信号ＣＴＬおよび切替制御信号ＳＷを出力する。
【０１４７】
したがって、この第２の実施形態における前記閾値は、高解像度層での動きベクトルの計算をしないとする、低解像度層における低解像度基準ベクトルと動きベクトルが検出された低解像度参照ベクトルとの相関度の強さに応じて決定する。
【０１４８】
この第２の実施形態においては、低解像度動きベクトル用バッファには、低解像度基準ブロックの位置情報および低解像度動きベクトルに加えて、低解像度動きベクトルに対応する相関値が記憶されている。
【０１４９】
この相関値は、低解像度動きベクトル計算部９で、低解像度基準ブロックと、サーチ範囲内の複数の低解像度参照ブロックのそれぞれとの間で計算された相関値のうちの最も相関度の強い値である。前述したＳＡＤ値を用いる場合には、サーチ範囲内の複数の低解像度参照ブロックのそれぞれについて計算されたＳＡＤ値のうちの最小値である。
【０１５０】
第２の実施形態における高解像度層計算判定部１４は、高解像度基準ブロックに対応する位置の低解像度基準ブロックの動きベクトル（低解像度動きベクトル）に対応する相関値を、低解像度動きベクトル用バッファ１０から取得するようにする。
【０１５１】
したがって、図１０に示したこの第２の実施形態のハードウエア構成は、図１に示した第１の実施形態のブロック図と同様となっている。ただし、低解像度動きベクトル用バッファ１０から取得する情報が、第１の実施形態では、低解像度動きベクトルの情報であったのに対して、この第２の実施形態では、低解像度動きベクトルに対応する相関値である点が異なる。
【０１５２】
この第２の実施形態における高解像度層での処理の流れを、図１１のフローチャートを参照して説明する。
【０１５３】
先ず、高解像度基準フレームにおいて、高解像度動きベクトルを求めようとする高解像度基準ブロックを決定する（ステップＳ２０１）。
【０１５４】
次に、決定した高解像度基準ブロックに対応する位置の低解像度基準ブロックの動きベクトル（低解像度動きベクトル）に対応する相関値を、低解像度動きベクトルバッファ１０から取得する（ステップＳ２０２）。
【０１５５】
取得した相関値と閾値とを比較して、低解像度動きベクトルに対応する低解像度参照ブロックと、低解像度基準ブロックとの相関度が高いか、低いかを判別する（ステップＳ２０３）。相関値としてＳＡＤ値を用いる場合には、相関値が閾値以下である場合には、相関度が高く、相関値が閾値よりも大きいときには、相関度が低いと判別する。
【０１５６】
ステップＳ２０３で、相関度が低いと判別したときには、高解像度層での動きベクトルの計算を実行し、求めた動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ２０４）。このステップＳ２０４での処理の流れの詳細は、図８において、点線で囲んだ動きベクトルの計算処理部分と同様のものとなる。
【０１５７】
また、ステップＳ２０３で、相関度が高いと判別したときには、高解像度層での動きベクトルの計算を実行しない。そして、高解像度基準ブロックに対応する位置の低解像度動きベクトルを低解像度動きベクトルバッファ１０から読み出す。さらに、スケーリング部１５からの低解像度動きベクトルが縮小倍率の逆数倍された動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ２０５）。
【０１５８】
ステップＳ２０４およびステップＳ２０５の次には、全ての高解像度基準ブロックについての処理が終了したか否か判別する（ステップＳ２０６）。ステップＳ２０６で、全ての高解像度基準ブロックについての処理は終了していないと判別したときには、ステップＳ２０１に戻り、未処理の次の高解像度基準ブロックを設定して、このステップＳ２０１以降の処理を繰り返す。また、ステップＳ２０６で、全ての高解像度基準ブロックについての処理を終了したと判別したときには、この処理ルーチンを終了する。
【０１５９】
なお、上述の説明では、この第２の実施形態においては、低解像度動きベクトルバッファ１０に低解像度動きベクトルに対応する相関値を記憶しておくようにした。しかし、相関値を記憶せずに、高解像度基準ブロックに対応する位置の低解像度基準ブロックについて、再度、低解像度参照ブロックとの相関演算を行って、低解像度動きベクトルに対応する相関値を算出し、高解像度計算判定部１４に供給するようにしてもよい。
【０１６０】
［第３の実施形態］
図１２は、第３の実施形態の場合の画像処理装置の要部の構成例のブロック図である。図１２において、図１に示した第１の実施形態の画像処理装置と同一部分には、同一参照符号を付してある。
【０１６１】
この第３の実施形態も、第１の実施形態および第２の実施形態と同様に、高解像度基準ブロック毎に、動きベクトルを算出するかしないかを判定する手法が、低解像度層での情報のみを使用する場合の例である。
【０１６２】
この第３の実施形態の高解像度層計算判定部１４は、高解像度基準ブロックに対応する位置の低解像度基準ブロックの画像情報からエッジ量を算出し、当該エッジ量に基づいて、高解像度層での動きベクトル計算を実行するかどうかを判定する。
【０１６３】
高解像度基準ブロックに対応する低解像度基準ブロックの画像情報中のエッジ量が多い場合には、複雑な画像内容であるので、動きベクトルの検出誤差の影響を受け易いと考えられる。また、高解像度基準ブロックに対応する低解像度基準ブロックの画像情報中のエッジ量が少ない場合には、平坦な画像であって、動きベクトルの検出誤差の影響を受け難いと考えられる。
【０１６４】
このような考えから、この第３の実施形態においては、高解像度層計算判定部１４は、高解像度基準ブロックに対応する低解像度基準ブロックの画像情報中のエッジ量が多い場合には、高解像度層での動きベクトル計算を実行すると判定する。
【０１６５】
また、高解像度層計算判定部１４は、高解像度基準ブロックに対応する低解像度基準ブロックの画像情報中のエッジ量が少ない場合には、高解像度層での動きベクトル計算を実行せずに、低解像度動きベクトルを代用すると判定する。
【０１６６】
以上のことから、この第３の実施形態の図１２のハードウエア構成例においては、高解像度層計算判定部１４は、低解像度動きベクトルバッファ１０からの情報は受けない。高解像度層計算判定部１４は、その代わりに、低解像度基準ブロック決定部７に要求して、高解像度基準ブロック決定部１１で決定された高解像度基準ブロックに対応する低解像度基準ブロックの画像情報を受ける。
【０１６７】
その他は、上述の第１の実施形態の場合と同様である。
【０１６８】
この第３の実施形態における高解像度層計算判定部１４は、例えば、ラプラシアンフィルタなどを使用して低解像度基準ブロック内の各画素のエッジ量を求め、全エッジ量の総和を計算することで、エッジ量を求めるようにする。
【０１６９】
なお、ラプラシアンフィルタは、ある画素（ｘ，ｙ）の近傍画素（ｘ−ｉ，ｙ−ｊ）の輝度値Ｉ（ｘ−ｉ，ｙ−ｊ）を、係数で重み付けした値を累積（コンボリューション）することで計算できる（図７の（４）式参照）。ラプラシアンフィルタのコンボリューション係数行列αは、行列の中心を処理画素の座標として、例えば図７の（５）式に示すような係数を用いる。
【０１７０】
この第３の実施形態における高解像度層での処理の流れを、図１３のフローチャートを参照して説明する。
【０１７１】
先ず、高解像度基準フレームにおいて、高解像度動きベクトルを求めようとする高解像度基準ブロックを決定する（ステップＳ３０１）。
【０１７２】
次に、決定した高解像度基準ブロックに対応する位置の低解像度基準ブロックの画像情報を取得し、当該低解像度基準ブロック内の画像情報のエッジ量を計算する（ステップＳ３０２）。
【０１７３】
計算により求めたエッジ量と、予め定められた閾値とを比較して、エッジ量が閾値以上であるか否かを判別する（ステップＳ３０３）。
【０１７４】
ステップＳ３０３で、エッジ量が閾値以上であると判別したときには、高解像度層での動きベクトルの計算を実行し、求めた動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ３０４）。このステップＳ３０４での処理の流れの詳細は、図８において、点線で囲んだ動きベクトルの計算処理部分と同様のものとなる。
【０１７５】
また、ステップＳ３０３で、エッジ量が閾値よりも少ないと判別したときには、高解像度層での動きベクトルの計算を実行しない。そして、高解像度基準ブロックに対応する位置の低解像度動きベクトルを低解像度動きベクトルバッファ１０から読み出す。さらに、スケーリング部１５からの低解像度動きベクトルが縮小倍率の逆数倍された動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ３０５）。
【０１７６】
ステップＳ３０４およびステップＳ３０５の次には、全ての高解像度基準ブロックについての処理が終了したか否か判別する（ステップＳ３０６）。ステップＳ３０６で、全ての高解像度基準ブロックについての処理は終了していないと判別したときには、ステップＳ３０１に戻り、未処理の次の高解像度基準ブロックを設定して、このステップＳ３０１以降の処理を繰り返す。また、ステップＳ３０６で、全ての高解像度基準ブロックについての処理を終了したと判別したときには、この処理ルーチンを終了する。
【０１７７】
［第４の実施形態］
図１４は、第４の実施形態の場合の画像処理装置の要部の構成例のブロック図である。図１４において、図１に示した第１の実施形態の画像処理装置と同一部分には、同一参照符号を付してある。
【０１７８】
この第４の実施形態も、第１の実施形態、第２の実施形態および第３の実施形態と同様に、高解像度基準ブロック毎に、動きベクトルを算出するかしないかを判定する手法が、低解像度層での情報のみを使用する場合の例である。
【０１７９】
この第４の実施形態の高解像度層計算判定部１４は、高解像度基準ブロックに対応する位置の低解像度基準ブロックと同じ位置の低解像度参照ブロックとの相関度に基づいて、高解像度層での動きベクトル計算を実行するかどうかを判定する。
【０１８０】
低解像度基準ブロックと同じ位置の低解像度参照ブロックとの相関度が高いときには、２画面間での動きが小さく、高解像度動きベクトルを用いて得られる最終的な動きベクトルと、低解像度動きベクトルとの差が僅かであろうと考えられる。一方、低解像度基準ブロックと同じ位置の低解像度参照ブロックとの相関度が低いときには、２画面間での動きが大きく、高解像度動きベクトルを用いて最終的な動きベクトルを得る方がよいと考えられる。
【０１８１】
このような考えから、この第４の実施形態においては、高解像度層計算判定部１４は、高解像度基準ブロックに対応する位置の低解像度基準ブロックと同じ位置の低解像度参照ブロックとの相関度が低い場合には、高解像度層での動きベクトル計算を実行すると判定する。
【０１８２】
また、高解像度層計算判定部１４は、高解像度基準ブロックに対応する位置の低解像度基準ブロックと同じ位置の低解像度参照ブロックとの相関度が高い場合には、高解像度層での動きベクトル計算を実行せずに、低解像度動きベクトルを代用すると判定する。
【０１８３】
高解像度基準ブロックに対応する位置の低解像度基準ブロックと同じ位置の低解像度参照ブロックとの相関度が高いか否かは、低解像度基準ブロックと同じ位置の低解像度参照ブロックとの相関値と閾値とを比較して、その比較結果により判定する。
【０１８４】
この第４の実施形態の図１４のハードウエア構成例においては、高解像度層計算判定部１４は、高解像度基準ブロックに対応する位置の低解像度基準ブロックおよび低解像度参照ブロックを、低解像度基準ブロック決定部７および低解像度参照ブロック決定部８から得るようにする。すなわち、高解像度層計算判定部１４は、高解像度基準ブロック決定部１１から高解像度基準ブロックの位置情報を得ている。高解像度層計算判定部１４は、この位置情報に基づき、対応する位置の低解像度基準ブロックおよび低解像度参照ブロックを、低解像度基準ブロック決定部７および低解像度参照ブロック決定部８に要求して取得するようにする。
【０１８５】
そして、高解像度層計算判定部１４は、取得した低解像度基準ブロックと低解像度参照ブロックとの相関値を、例えばＳＡＤ値として求める。そして、高解像度層計算判定部１４は、この求めたＳＡＤ値と、予め定められている閾値とを比較し、ＳＡＤ値が閾値以下のときには、相関度が高いと判定し、ＳＡＤ値が閾値よりも大きいときには、相関度が低いと判定する。
【０１８６】
その他は、上述の第１の実施形態の場合と同様である。
【０１８７】
なお、低解像度動きベクトル計算部９においては、低解像度基準フレームおよび低解像度参照フレームで同じ位置の低解像度基準ブロックと低解像度参照ブロックとの相関値を求める場合もある。そこで、低解像度動きベクトル計算部９に保持用バッファを設けて、同じ位置の低解像度基準ブロックと低解像度参照ブロックとの相関値を保持するようにする。そして、高解像度層計算判定部１４からの位置情報を伴う要求に応じて、低解像度動きベクトル計算部９が、対応位置の相関値を高解像度層計算判定部１４に提供するように構成することもできる。
【０１８８】
ただし、動きベクトルの大きさが大きいときには、同じ位置の低解像度基準ブロックと低解像度参照ブロックとの相関値は計算されないので、低解像度動きベクトル計算部９の保持用バッファに、対応する相関値が存在しない場合がある。そこで、その場合には、高解像度層計算判定部１４は、上述のようにして、同じ位置の低解像度基準ブロックと低解像度参照ブロックとを取得して、両ブロックの相関値を演算する必要がある。
【０１８９】
この第４の実施形態における高解像度層での処理の流れを、図１５のフローチャートを参照して説明する。
【０１９０】
先ず、高解像度基準フレームにおいて、高解像度動きベクトルを求めようとする高解像度基準ブロックを決定する（ステップＳ４０１）。
【０１９１】
次に、決定した高解像度基準ブロックに対応する位置の低解像度基準ブロックの画像情報と、同じ位置の低解像度参照ブロックの画像情報とを取得して、当該低解像度基準ブロックと低解像度参照ブロックとの相関値を計算する（ステップＳ４０２）。
【０１９２】
求めた相関値と閾値とを比較して、低解像度基準ブロックと同じ位置の低解像度参照ブロックとの相関度が高いか、低いかを判別する（ステップＳ４０３）。相関値としてＳＡＤ値を用いる場合には、相関値が閾値以下である場合には、相関度が高く、相関値が閾値よりも大きいときには、相関度が低いと判別する。
【０１９３】
ステップＳ４０３で、相関度が低いと判別したときには、高解像度層での動きベクトルの計算を実行し、求めた動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ４０４）。このステップＳ４０４での処理の流れの詳細は、図８において、点線で囲んだ動きベクトルの計算処理部分と同様のものとなる。
【０１９４】
また、ステップＳ４０３で、相関度が高いと判別したときには、高解像度層での動きベクトルの計算を実行しない。そして、高解像度基準ブロックに対応する位置の低解像度動きベクトルを低解像度動きベクトルバッファ１０から読み出す。さらに、スケーリング部１５からの低解像度動きベクトルが縮小倍率の逆数倍された動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ４０５）。
【０１９５】
ステップＳ４０４およびステップＳ４０５の次には、全ての高解像度基準ブロックについての処理が終了したか否か判別する（ステップＳ４０６）。ステップＳ４０６で、全ての高解像度基準ブロックについての処理は終了していないと判別したときには、ステップＳ４０１に戻り、未処理の次の高解像度基準ブロックを設定して、このステップＳ４０１以降の処理を繰り返す。また、ステップＳ４０６で、全ての高解像度基準ブロックについての処理を終了したと判別したときには、この処理ルーチンを終了する。
【０１９６】
次に、高解像度層での動きベクトルの計算をするかしないかの判定を、高解像度層における情報を用いる場合の実施形態について説明する。この場合、高解像度層における情報を用いるので、高解像度層での動きベクトルの計算をするかしないかの判定を、精度良く行うことができる。
【０１９７】
［第５の実施形態］
図１６は、第５の実施形態の場合の画像処理装置の要部の構成例のブロック図である。図１６において、図１に示した第１の実施形態の画像処理装置と同一部分には、同一参照符号を付してある。
【０１９８】
第５の実施形態は、前述の第３の実施形態の考え方を、高解像度層の情報を用いる場合に適用したものである。
【０１９９】
この第５の実施形態の高解像度層計算判定部１４は、高解像度基準ブロック内の画像情報についてエッジ量を算出し、当該エッジ量に基づいて、高解像度層での動きベクトル計算を実行するかどうかを判定する。
【０２００】
すなわち、この第５の実施形態においては、高解像度層計算判定部１４は、高解像度基準ブロックの画像情報中のエッジ量が多い場合には、高解像度層での動きベクトル計算を実行すると判定する。
【０２０１】
また、高解像度層計算判定部１４は、高解像度基準ブロックの画像情報中のエッジ量が少ない場合には、高解像度層での動きベクトル計算を実行せずに、低解像度動きベクトルを代用すると判定する。
【０２０２】
この第５の実施形態の図１６のハードウエア構成例においては、高解像度層計算判定部１４は、高解像度基準ブロック決定部１１からの高解像度基準ブロックの画像情報を受ける。
【０２０３】
その他は、上述の第１の実施形態の場合と同様である。
【０２０４】
この第５の実施形態における高解像度層計算判定部１４は、前述した第３の実施形態と同様にして、例えば、ラプラシアンフィルタなどを使用して高解像度基準ブロック内の各画素のエッジ量を求め、全エッジ量の総和を計算することで、エッジ量を求める。
【０２０５】
この第５の実施形態における高解像度層での処理の流れを、図１７のフローチャートを参照して説明する。
【０２０６】
先ず、高解像度基準フレームにおいて、高解像度動きベクトルを求めようとする高解像度基準ブロックを決定する（ステップＳ５０１）。
【０２０７】
次に、決定した高解像度基準ブロックの画像情報を取得し、当該高解像度基準ブロック内の画像情報のエッジ量を計算する（ステップＳ５０２）。
【０２０８】
計算により求めたエッジ量と、予め定められた閾値とを比較して、エッジ量が閾値以上であるか否かを判別する（ステップＳ５０３）。
【０２０９】
ステップＳ５０３で、エッジ量が閾値以上であると判別したときには、高解像度層での動きベクトルの計算を実行し、求めた動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ５０４）。このステップＳ５０４での処理の流れの詳細は、図８において、点線で囲んだ動きベクトルの計算処理部分と同様のものとなる。
【０２１０】
また、ステップＳ５０３で、エッジ量が閾値よりも少ないと判別したときには、高解像度層での動きベクトルの計算を実行しない。そして、高解像度基準ブロックに対応する位置の低解像度動きベクトルを低解像度動きベクトルバッファ１０から読み出す。さらに、スケーリング部１５からの低解像度動きベクトルが縮小倍率の逆数倍された動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ５０５）。
【０２１１】
ステップＳ５０４およびステップＳ５０５の次には、全ての高解像度基準ブロックについての処理が終了したか否か判別する（ステップＳ５０６）。ステップＳ５０６で、全ての高解像度基準ブロックについての処理は終了していないと判別したときには、ステップＳ５０１に戻り、未処理の次の高解像度基準ブロックを設定して、このステップＳ５０１以降の処理を繰り返す。また、ステップＳ５０６で、全ての高解像度基準ブロックについての処理を終了したと判別したときには、この処理ルーチンを終了する。
【０２１２】
［第６の実施形態］
図１８は、第５の実施形態の場合の画像処理装置の要部の構成例のブロック図である。図１８において、図１に示した第１の実施形態の画像処理装置と同一部分には、同一参照符号を付してある。
【０２１３】
第６の実施形態は、前述の第４の実施形態の考え方を、高解像度層の情報を用いる場合に適用したものである。
【０２１４】
この第６の実施形態の高解像度層計算判定部１４は、高解像度基準ブロックと、同じ位置の高解像度参照ブロックとの相関度に基づいて、高解像度層での動きベクトル計算を実行するかどうかを判定する。
【０２１５】
高解像度基準ブロックと同じ位置の高解像度参照ブロックとの相関度が高いときには、２画面間での動きが小さく、階層処理をして最終的に得られる動きベクトルと、低解像度動きベクトルとの差が僅かであろうと考えられる。
【０２１６】
一方、高解像度基準ブロックと同じ位置の高解像度参照ブロックとの相関度が低いときには、２画面間での動きが大きく、階層処理をして、高解像度動きベクトルを検出し、最終的な動きベクトルを得る方がよいと考えられる。
【０２１７】
このような考えから、この第６の実施形態においては、高解像度層計算判定部１４は、高解像度基準ブロックと同じ位置の低解像度参照ブロックとの相関度が低い場合には、高解像度層での動きベクトル計算を実行すると判定する。
【０２１８】
また、高解像度層計算判定部１４は、高解像度基準ブロックと同じ位置の高解像度参照ブロックとの相関度が高い場合には、高解像度層での動きベクトル計算を実行せずに、低解像度動きベクトルを代用すると判定する。
【０２１９】
高解像度基準ブロックと同じ位置の高解像度参照ブロックとの相関度が高いか否かは、高解像度基準ブロックと同じ位置の高解像度参照ブロックとの相関値と閾値とを比較して、その比較結果により判定する。
【０２２０】
この第６の実施形態の図１８のハードウエア構成例においては、高解像度層計算判定部１４は、高解像度基準ブロック決定部１１の出力として高解像度基準ブロックの画像情報を得るようにする。また、高解像度層計算判定部１４は、高解像度基準ブロック決定部１１から高解像度基準ブロックの位置情報に基づいて、高解像度参照フレームバッファ２にアクセスして、同位置の高解像度参照ブロックの画像情報を取得するようにする。
【０２２１】
そして、高解像度層計算判定部１４は、取得した高解像度基準ブロックと高解像度参照ブロックとの相関値を、取得した画像情報を用いて、例えばＳＡＤ値として求める。そして、高解像度層計算判定部１４は、この求めたＳＡＤ値と、予め定められている閾値とを比較し、ＳＡＤ値が閾値以下のときには、相関度が高いと判定し、ＳＡＤ値が閾値よりも大きいときには、相関度が低いと判定する。
【０２２２】
その他は、上述の第１の実施形態の場合と同様である。
【０２２３】
この第６の実施形態における高解像度層での処理の流れを、図１９のフローチャートを参照して説明する。
【０２２４】
先ず、高解像度基準フレームにおいて、高解像度動きベクトルを求めようとする高解像度基準ブロックを決定する（ステップＳ６０１）。
【０２２５】
次に、決定した高解像度基準ブロックの画像情報と同じ位置の低解像度参照ブロックの画像情報とを取得して、当該低解像度基準ブロックと低解像度参照ブロックとの相関値を計算する（ステップＳ６０２）。
【０２２６】
求めた相関値と閾値とを比較して、高解像度基準ブロックと同じ位置の高解像度参照ブロックとの相関度が高いか、低いかを判別する（ステップＳ６０３）。相関値としてＳＡＤ値を用いる場合には、相関値が閾値以下である場合には、相関度が高く、相関値が閾値よりも大きいときには、相関度が低いと判別する。
【０２２７】
ステップＳ６０３で、相関度が低いと判別したときには、高解像度層での動きベクトルの計算を実行し、求めた動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ６０４）。このステップＳ６０４での処理の流れの詳細は、図８において、点線で囲んだ動きベクトルの計算処理部分と同様のものとなる。
【０２２８】
また、ステップＳ６０３で、相関度が高いと判別したときには、高解像度層での動きベクトルの計算を実行しない。そして、高解像度基準ブロックに対応する位置の低解像度動きベクトルを低解像度動きベクトルバッファ１０から読み出す。さらに、スケーリング部１５からの低解像度動きベクトルが縮小倍率の逆数倍された動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ６０５）。
【０２２９】
ステップＳ６０４およびステップＳ６０５の次には、全ての高解像度基準ブロックについての処理が終了したか否か判別する（ステップＳ６０６）。ステップＳ６０６で、全ての高解像度基準ブロックについての処理は終了していないと判別したときには、ステップＳ６０１に戻り、未処理の次の高解像度基準ブロックを設定して、このステップＳ６０１以降の処理を繰り返す。また、ステップＳ６０６で、全ての高解像度基準ブロックについての処理を終了したと判別したときには、この処理ルーチンを終了する。
【０２３０】
次に、高解像度層での動きベクトルの計算をするかしないかの判定を、低解像度層と高解像度層との両方における情報を用いる場合の実施形態について説明する。
【０２３１】
［第７の実施形態］
図２０は、第７の実施形態の場合の画像処理装置の要部の構成例のブロック図である。図２０において、図１に示した第１の実施形態の画像処理装置と同一部分には、同一参照符号を付してある。
【０２３２】
この第７の実施形態の高解像度層計算判定部１４は、高解像度基準ブロックと、当該高解像度基準ブロックに対応する位置の低解像度基準ブロックとの相関度に基づいて、高解像度層での動きベクトル計算を実行するかどうかを判定する。
【０２３３】
高解像度基準ブロックと、同位置の低解像度基準ブロックとの相関度が高い場合には、元の画像と、それを縮小した画像とが相関度が高いことを意味し、それは、ブロックの画像内容が比較的平坦で変化が少ないことを意味していると考えられる。そのような場合には、階層処理をして最終的に得られる動きベクトルと、低解像度動きベクトルとの差が僅かであろうと考えられる。
【０２３４】
このような考えから、この第７の実施形態においては、高解像度層計算判定部１４は、高解像度基準ブロックと、高解像度基準ブロックに対応する位置の低解像度基準ブロックとの相関度が低い場合には、高解像度層での動きベクトル計算を実行すると判定する。
【０２３５】
また、高解像度層計算判定部１４は、高解像度基準ブロックと、高解像度基準ブロックに対応する位置の低解像度基準ブロックとの相関度が高い場合には、高解像度層での動きベクトル計算を実行せずに、低解像度動きベクトルを代用すると判定する。
【０２３６】
高解像度基準ブロックと、この高解像度基準ブロックに対応する位置の低解像度参照ブロックとの相関度が高いか否かは、両ブロックの相関値と閾値とを比較して、その比較結果により判定する。
【０２３７】
この第７の実施形態の図２０のハードウエア構成例においては、高解像度層計算判定部１４は、高解像度基準ブロック決定部１１の出力として高解像度基準ブロックの画像情報を得るようにする。また、高解像度層計算判定部１４は、高解像度基準ブロックに対応する位置の低解像度基準ブロックの画像情報を、低解像度基準ブロック決定部７から得るようにする。すなわち、高解像度層計算判定部１４は、高解像度基準ブロック決定部１１から取得した高解像度基準ブロックの位置情報に基づき、対応する位置の低解像度基準ブロックを、低解像度基準ブロック決定部７に要求して取得するようにする。
【０２３８】
そして、高解像度層計算判定部１４は、取得した高解像度基準ブロックと低解像度基準ブロックとの相関値を、例えばＳＡＤ値として求める。そして、高解像度層計算判定部１４は、この求めたＳＡＤ値と、予め定められている閾値とを比較し、ＳＡＤ値が閾値以下のときには、相関度が高いと判定し、ＳＡＤ値が閾値よりも大きいときには、相関度が低いと判定する。
【０２３９】
その他は、上述の第１の実施形態の場合と同様である。
【０２４０】
この第７の実施形態における高解像度層での処理の流れを、図２１のフローチャートを参照して説明する。
【０２４１】
先ず、高解像度基準フレームにおいて、高解像度動きベクトルを求めようとする高解像度基準ブロックを決定する（ステップＳ７０１）。
【０２４２】
次に、決定した高解像度基準ブロックの画像情報と、当該高解像度基準ブロックに対応する位置の低解像度基準ブロックの画像情報とを取得して、当該高解像度基準ブロックと低解像度基準ブロックとの相関値を計算する（ステップＳ７０２）。
【０２４３】
求めた相関値と閾値とを比較して、高解像度基準ブロックと、対応する同位置の低解像度基準ブロックとの相関度が高いか、低いかを判別する（ステップＳ７０３）。相関値としてＳＡＤ値を用いる場合には、相関値が閾値以下である場合には、相関度が高く、相関値が閾値よりも大きいときには、相関度が低いと判別する。
【０２４４】
ステップＳ７０３で、相関度が低いと判別したときには、高解像度層での動きベクトルの計算を実行し、求めた動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ７０４）。このステップＳ７０４での処理の流れの詳細は、図８において、点線で囲んだ動きベクトルの計算処理部分と同様のものとなる。
【０２４５】
また、ステップＳ７０３で、相関度が高いと判別したときには、高解像度層での動きベクトルの計算を実行しない。そして、高解像度基準ブロックに対応する位置の低解像度動きベクトルを低解像度動きベクトルバッファ１０から読み出す。さらに、スケーリング部１５からの低解像度動きベクトルが縮小倍率の逆数倍された動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ７０５）。
【０２４６】
ステップＳ７０４およびステップＳ７０５の次には、全ての高解像度基準ブロックについての処理が終了したか否か判別する（ステップＳ７０６）。ステップＳ７０６で、全ての高解像度基準ブロックについての処理は終了していないと判別したときには、ステップＳ７０１に戻り、未処理の次の高解像度基準ブロックを設定して、このステップＳ７０１以降の処理を繰り返す。また、ステップＳ７０６で、全ての高解像度基準ブロックについての処理を終了したと判別したときには、この処理ルーチンを終了する。
【０２４７】
［第７の実施形態の変形例］
上述の第７の実施形態では、高解像度基準ブロックと、当該高解像度基準ブロックに対応する位置の低解像度基準ブロックとの相関度に基づいて、高解像度層での動きベクトル計算を実行するかどうかを判定した。これに対して、前述の第４の実施形態の考え方を、低解像度層および高解像度層の両方の情報を用いる場合に適用した場合には、高解像度基準ブロックと、当該高解像度基準ブロックに対応する位置の低解像度参照ブロックとの相関度を求めるようにしても良い。
【０２４８】
すなわち、高解像度基準ブロックと、当該高解像度基準ブロックに対応する位置の低解像度参照ブロックとの相関度に基づいて、高解像度層での動きベクトル計算を実行するかどうかを判定するようにしても良い。
【０２４９】
［第８の実施形態］
図２２は、第８の実施形態の場合の画像処理装置の要部の構成例のブロック図である。図２２において、図１に示した第１の実施形態の画像処理装置と同一部分には、同一参照符号を付してある。
【０２５０】
前述したように、高解像度参照ブロック決定部１２は、低解像度動きベクトル用バッファ１０から、高解像度基準ブロックに対応する位置の低解像度基準ブロックの動きベクトルを取得する。そして、当該低解像度動きベクトルを縮小倍率の逆数倍した動きベクトルで指し示される位置を特定し、当該位置を中心にして、高解像度参照フレームにおけるサーチ範囲を設定する。
【０２５１】
この第８の実施形態では、高解像度層計算判定部１４は、高解像度参照ブロック決定部１２に要求して、低解像度基準ブロックの動きベクトルで指し示される位置を中心位置とする高解像度参照ブロックの位置の情報を取得する。この位置の高解像度参照ブロックを、以下、判定用高解像度参照ブロックと呼ぶ。
【０２５２】
そして、高解像度層計算判定部１４は、この取得した位置情報を用いて、高解像度参照フレームバッファ２から、判定用高解像度参照ブロックの画像情報を取得する。また、高解像度層計算判定部１４は、高解像度基準ブロック決定部１１からの高解像度基準ブロックの画像情報を取得する。
【０２５３】
そして、この第８の実施形態においては、高解像度層計算判定部１４は、高解像度基準ブロックと、判定用高解像度参照ブロックとの相関度を求め、この相関度に基づいて、高解像度層での動きベクトル計算を実行するかどうかを判定する。
【０２５４】
すなわち、この第８の実施形態では、判定用高解像度参照ブロックと、高解像度基準ブロックとの相関度が高ければ、高解像度層での計算は不要と判定する。また、判定用高解像度参照ブロックと、高解像度基準ブロックとの相関度が低ければ、高解像度層での計算を実行すると判定する。
【０２５５】
この第８の実施形態においても、高解像度基準ブロックと、判定用高解像度参照ブロックとの相関度が高いか否かは、高解像度基準ブロックと、判定用高解像度参照ブロックとの相関値を求め、求めた相関値と閾値とを比較して、その比較結果により判別する。そして、この例においても、相関値はＳＡＤ値を用いる。
【０２５６】
その他は、上述の第１の実施形態の場合と同様である。
【０２５７】
なお、この第８の実施形態では、高解像度層での計算を実行しないときでも、高解像度参照ブロック決定部１２では、判定用高解像度参照ブロックを決定する処理は実行することになる。もっとも、判定用高解像度参照ブロックを決定する処理を、高解像度層計算判定部１４で行う場合には、高解像度参照ブロック決定部１２は、上述の実施形態と同様に、高解像度層での計算を実行しないときには動作停止とすることができる。
【０２５８】
この第８の実施形態における高解像度層での処理の流れを、図２３のフローチャートを参照して説明する。
【０２５９】
先ず、高解像度基準フレームにおいて、高解像度動きベクトルを求めようとする高解像度基準ブロックを決定する（ステップＳ８０１）。
【０２６０】
次に、低解像度動きベクトル用バッファ１０から、決定した高解像度基準ブロックに対応する位置の低解像度基準ブロックの動きベクトルをロード（取得）する（ステップＳ８０２）。
【０２６１】
次に、取得した高解像度基準ブロックに対応する位置の低解像度基準ブロックの動きベクトルを、縮小倍率の逆数倍して、高解像度画像のサイズに応じた大きさにスケーリングする（ステップＳ８０３）。
【０２６２】
次に、高解像度参照フレームにおいて、スケーリングされた動きベクトルが指し示す高解像度参照ブロック、すなわち、判定用高解像度参照ブロックを決定する（ステップＳ８０４）。
【０２６３】
そして、ステップＳ８０１で取得した高解像度基準ブロックの画像情報と、ステップＳ８０４で取得した判定用高解像度参照ブロックの画像情報とを用いて、当該高解像度基準ブロックと判定用高解像度参照ブロックとの相関値を計算する（ステップＳ８０５）。
【０２６４】
求めた相関値と閾値とを比較して、高解像度基準ブロックと、判定用高解像度参照ブロックとの相関度が高いか、低いかを判別する（ステップＳ８０６）。相関値としてＳＡＤ値を用いる場合には、相関値が閾値以下である場合には、相関度が高く、相関値が閾値よりも大きいときには、相関度が低いと判別する。
【０２６５】
ステップＳ８０６で、相関度が低いと判別したときには、高解像度層での動きベクトルの計算を実行し、求めた動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ８０７）。このステップＳ８０７での処理の流れの詳細は、図８において、点線で囲んだ動きベクトルの計算処理部分と同様のものとなる。
【０２６６】
また、ステップＳ８０６で、相関度が高いと判別したときには、高解像度層での動きベクトルの計算を実行しない。そして、高解像度基準ブロックに対応する位置の低解像度動きベクトルを低解像度動きベクトルバッファ１０から読み出す。さらに、スケーリング部１５からの低解像度動きベクトルが縮小倍率の逆数倍された動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ８０８）。
【０２６７】
ステップＳ８０７およびステップＳ８０８の次には、全ての高解像度基準ブロックについての処理が終了したか否か判別する（ステップＳ８０９）。ステップＳ８０９で、全ての高解像度基準ブロックについての処理は終了していないと判別したときには、ステップＳ８０１に戻り、未処理の次の高解像度基準ブロックを設定して、このステップＳ８０１以降の処理を繰り返す。また、ステップＳ８０９で、全ての高解像度基準ブロックについての処理を終了したと判別したときには、この処理ルーチンを終了する。
【０２６８】
［その他の実施形態および変形例］
以上の実施形態では、高解像度層の計算を行わないと判定したときには、低解像度層で求めた低解像度動きベクトルを、そのまま、縮小倍率の逆数倍して出力するようにした。
【０２６９】
しかし、前述したブロックマッチング手法では、ピクセル（画素）単位でブロックマッチングを行っているため、動きベクトルはピクセル精度でしか算出されない。このため、低解像度層で求められた低解像度動きベクトルは、低解像度画像のピクセル単位の精度しか得られない。
【０２７０】
これに対して、次のようにして、サブピクセル精度の高精度の低解像度動きベクトルを算出することができる。このサブピクセル精度の高精度動きベクトルの算出手法について説明する。
【０２７１】
前述した低解像度動きベクトル計算部９では、低解像度参照ブロックをサーチ範囲内において、ピクセル単位で移動させ、ブロックマッチングを行っている。低解像度動きベクトル計算部９では、ピクセル単位で異なる位置の低解像度参照ブロックに対して、基準ブロックとの相関値を求め、求めた相関値のテーブルを作成する。
【０２７２】
そして、サーチ範囲の全ての低解像度参照ブロックについて求めた相関値のテーブルから、低解像度基準ブロックとの相関度が最も高い低解像度参照ブロックの位置を検出し、その位置に対応する低解像度参照ベクトルを、低解像度動きベクトルとして検出する。
【０２７３】
相関値として、ＳＡＤ値を用いる場合には、前記テーブルは、ＳＡＤテーブルと呼ばれる。
【０２７４】
ここでは、二次曲線を用いて、ＳＡＤテーブルを補間することで、ピクセル単位でマッチング処理を行ったＳＡＤテーブルから、サブピクセル精度の動きベクトルを算出することを考える。この場合において、二次曲線近似補間ではなく、線形補間や、３次以上の高次の近似曲線補間を用いても良いが、精度とハードウエア化との兼ね合いから、この例では、二次曲線近似補間を用いることとする。
【０２７５】
この二次曲線近似補間においては、図２４に示すように、ピクセル精度の動きベクトル１５１が指し示すＳＡＤテーブルのＳＡＤ値の最小値Ｓmin（図２４の参照符号１５２参照）と、当該最小値Ｓminの位置の近傍位置の複数個のＳＡＤ値を使用する。
【０２７６】
最小値Ｓminの位置の近傍位置の複数個のＳＡＤ値を、ここでは、近傍ＳＡＤ値という。この例では、近傍ＳＡＤ値としては、最小値Ｓminの位置のＸ方向およびＹ方向に隣接する４個の近傍ＳＡＤ値Ｓx1、Ｓx2およびＳy1、Ｓy2（図２４の参照符号１５３，１５４，１５５，１５６参照）を使用する。
【０２７７】
先ず、Ｘ方向（水平方向）についてのサブピクセル精度の演算を行う。図２５に示すように、ＳＡＤ値の最小値Ｓminと、Ｘ方向（水平方向）の近傍２点の近傍ＳＡＤ値Ｓx1、Ｓx2を使って、二次の近似曲線１５７を当てはめる。この二次曲線１５７の極小を取る座標が、サブピクセル精度のＳＡＤ値の最小値ＳＸminとなる動きベクトル（高精度動きベクトル）のＸ座標Ｖｘとなる。このときの二次曲線近似補間の式を、次式（６）に示す。
【０２７８】
ＳＸmin＝１／２×（Ｓx2−Ｓx1）／（Ｓx2−２Ｓmin＋Ｓx1）…式（６）
この計算式（６）で求めたサブピクセル精度のＳＡＤ値の最小値ＳＸminがＳＡＤテーブル上で取るＸ座標が、サブピクセル精度のＳＡＤ値の最小値となるＸ座標Ｖｘとなる。
【０２７９】
この計算式（６）の割り算は、複数回の引き算で実現可能である。求めたいサブピクセル精度が、例えば元の画素ピッチの１／４の画素ピッチの精度であれば、僅か２回の引き算でも求められるため、回路規模、演算時間、共に小さく、二次の近時曲線補間よりもかなり複雑な三次曲線補間と殆ど変わらない性能が実現できる。
【０２８０】
同様に、ＳＡＤ値の最小値Ｓminと、Ｙ方向（垂直方向）の近傍２点の近傍ＳＡＤ値Ｓy1、Ｓy2を使って、二次の近似曲線を当て嵌め、この二次曲線の極小値ＳＹminを取るＹ座標が、サブピクセル精度のＳＡＤ値の最小値となるＹ座標Ｖｙとなる。このときの二次曲線近似補間の式を、次式（７）に示す。
【０２８１】
ＳＹmin＝１／２×（Ｓy2−Ｓy1）／（Ｓy2−２Ｓmin＋Ｓy1）…式（７）
以上のようにして、二次曲線の近似を、Ｘ方向およびＹ方向の２回、行うことで、サブピクセル精度の高精度の動きベクトル（Ｖｘ、Ｖｙ）が求まる。
【０２８２】
以上の説明では、ＳＡＤ値の最小値と、そのＸ方向（水平方向）およびＹ方向（垂直方向）の近傍２点のＳＡＤ値を使用したが、各方向の近傍のＳＡＤ値は２点以上であってもよい。また、二次曲線をＸ方向、Ｙ方向に代えて、例えば、斜め方向に近似曲線を当て嵌めてもかまわない。さらに、Ｘ方向、Ｙ方向に、斜め方向を加えて近似曲線を当て嵌めてもかまわない。
【０２８３】
なお、以上の実施形態では、ブロックマッチング手法を用いて動きベクトルを検出するようにしたが、勾配法を用いて、動きベクトルを検出するようにしてもよい。
【０２８４】
勾配法は、フレーム内の空間的な輝度の変化と、フレーム間の時間的な輝度の変化から速度を予測する方法であり、例えば特許文献（特許第３６１７６７１号）に詳細に記載されている。局所領域毎の勾配法としては、Ｌｕｋａｓ  ＆  Ｋａｎａｄｅの提案手法が良く知られている。ブロック単位毎に、勾配法の自乗誤差が最小になるように、動きベクトルを求める。
【０２８５】
なお、前記特許文献（特許第３６１７６７１号）に記載されているように、ブロックマッチングの動きベクトルを基準として、勾配法で、動きベクトルを求めることで、少ない計算量で少数精度（サブピクセル精度）の動きベクトルを求めることができる。
【０２８６】
上述の実施形態では、階層処理は、低解像度層の画像フレームの全ての基準ブロックについての動きベクトルを求めた後、高解像度層の画像フレームの基準ブロックについての処理を開始するようにした。
【０２８７】
しかしながら、階層処理としては、基準ブロック毎に行うようにしてもよい。その場合の処理の流れを、図２６のフローチャートに示す。
【０２８８】
すなわち、先ず、低解像度基準ブロックを決定する（ステップＳ９０１）。次に、決定した低解像度基準ブロックについての低解像動きベクトルの計算および検出を行う（ステップＳ９０２）。
【０２８９】
次に、高解像度基準ブロックを決定する（ステップＳ９０３）。次に、決定した高解像度基準ブロックについての動きベクトルの計算を実行するか否かの判定を行う（ステップＳ９０４）。このステップＳ９０４での判定は、高解像度層計算判定部１４の動作として説明した通りである。
【０２９０】
ステップＳ９０４で、計算をすると判定したときには、高解像度動きベクトル計算部１３での高解像度層での動きベクトルの計算を実行し、求めた動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ９０５）。このステップＳ９０５での処理の流れの詳細は、図８において、点線で囲んだ動きベクトルの計算処理部分と同様のものとなる。
【０２９１】
また、ステップＳ９０４で、計算しないと判定したときには、高解像度動きベクトル計算部１３の処理動作を停止させ、高解像度層での動きベクトルの計算を実行しない。そして、高解像度基準ブロックに対応する位置の低解像度動きベクトルを低解像度動きベクトルバッファ１０から読み出す。さらに、スケーリング部１５からの低解像度動きベクトルが縮小倍率の逆数倍された動きベクトルを、動きベクトル切替部１６から出力するようにする（ステップＳ９０６）。
【０２９２】
ステップＳ９０５およびステップＳ９０６の次には、全ての高解像度基準ブロックについての処理が終了したか否か判別する（ステップＳ９０７）。ステップＳ９０７で、全ての高解像度基準ブロックについての処理は終了していないと判別したときには、ステップＳ９０１に戻り、未処理の次の低解像度基準ブロックを設定して、このステップＳ９０１以降の処理を繰り返す。また、ステップＳ９０７で、全ての高解像度基準ブロックについての処理を終了したと判別したときには、この処理ルーチンを終了する。
【０２９３】
以上の実施形態では、階層化処理は、２階層の場合に適用したが、３階層以上の場合にも適用可能である。その場合に、中位の階層で動きベクトルの計算を実行しないと判断したときは、それよりも上位の階層でも動きベクトルを計算しないことは言うまでもない。そして、その場合には、動きベクトルの計算を実行した階層において算出した動きベクトルを、最上位の階層の画像サイズに応じてスケーリングして出力動きベクトルとするものである。
【０２９４】
例えば４階層の場合において、２階層までは動きベクトル処理を実行したが、３階層目は実行しないと判定したときには、３階層目だけでなく、４階層目も動きベクトルの検出を中止する。そして、２階層目で算出された合成動きベクトルを、４階層目の画像サイズに合わせてスケーリングした動きベクトルを出力するようにする。
【０２９５】
以上の実施形態は、動画の画像情報についての動きベクトルを検出する場合として説明したが、例えば、撮像装置で、複数枚の画像を重ね合わせて静止画像を得るようにする場合にも、この発明は適用可能である。また、静止画撮影時の手ぶれ補正のための動きベクトルを検出する場合にも、この発明は、適用可能である。
【符号の説明】
【０２９６】
１…高解像度基準フレームバッファ、２…高解像度参照フレームバッファ、３，４…画像縮小部、５…低解像度基準フレームバッファ、６…低解像度参照フレームバッファ、７…低解像度基準ブロック決定部、８…低解像度参照ブロック決定部、９…低解像度動きベクトル計算部、１０…低解像度動きベクトルバッファ、１１…高解像度基準ブロック決定部、１２…高解像度参照ブロック決定部、１３…高解像度動きベクトル計算部、１４…高解像度層計算判定部、１５…スケーリング部、１６…動きベクトル切替部
【図１】
2010288110.tif 000003
【図２】
2010288110.tif 000004
【図３】
2010288110.tif 000005
【図４】
2010288110.tif 000006
【図５】
2010288110.tif 000007
【図６】
2010288110.tif 000008
【図７】
2010288110.tif 000009
【図８】
2010288110.tif 000010
【図９】
2010288110.tif 000011
【図１０】
2010288110.tif 000012
【図１１】
2010288110.tif 000013
【図１２】
2010288110.tif 000014
【図１３】
2010288110.tif 000015
【図１４】
2010288110.tif 000016
【図１５】
2010288110.tif 000017
【図１６】
2010288110.tif 000018
【図１７】
2010288110.tif 000019
【図１８】
2010288110.tif 000020
【図１９】
2010288110.tif 000021
【図２０】
2010288110.tif 000022
【図２１】
2010288110.tif 000023
【図２２】
2010288110.tif 000024
【図２３】
2010288110.tif 000025
【図２４】
2010288110.tif 000026
【図２５】
2010288110.tif 000027
【図２６】
2010288110.tif 000028
【図２７】
2010288110.tif 000029
【図２８】
2010288110.tif 000030
【図２９】
2010288110.tif 000031
【図３０】
2010288110.tif 000032