(57)【特許請求の範囲】
【請求項１】
撮像素子からの画像データを受けて、当該画像データから、撮像画像の１画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出工程と、
光学ズームがなされたときに、当該光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の１画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出工程と、
前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記光学ズーム分ベクトル算出工程で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算工程と、
前記光学ズームがなされないときには、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算工程の前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出工程と、
前記グローバル手ぶれベクトル算出工程で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正工程と、
を備える撮像画像の歪み補正方法。
【請求項２】
請求項１に記載の撮像画像の歪み補正方法において、
前記動きベクトル検出工程は、
前記分割領域のそれぞれにおける画像の動きベクトルを、注目画面である参照画面と当該参照画面よりも前の元画面との間の前記分割領域の画像情報から検出するものであって、
前記元画面中の前記各分割領域において、所定の位置に複数の画素からなる所定の大きさの少なくとも１個のターゲットブロックを設定し、
前記ターゲットブロックと同じ大きさの参照ブロックを、前記注目画面に設定されたサーチ範囲において複数個設定し、
前記複数個の参照ブロックの内から、前記ターゲットブロックと相関の強い前記参照ブロックを検出し、
当該検出した参照ブロックの前記ターゲットブロックに対する画面上の位置ずれ量に基づいて、前記動きベクトルを検出する
ものである撮像画像の歪み補正方法。
【請求項３】
請求項２に記載の撮像画像の歪み補正方法において、
前記動きベクトル検出工程において、前記分割領域のそれぞれにおける前記画像の動きベクトルを検出する方法は、
前記参照ブロックのそれぞれにおいて、当該参照ブロック内の各画素の画素値と、前記ターゲットブロック内で対応する位置の各画素の画素値との差分の絶対値の総和を求める差分絶対値和算出工程と、
前記参照ブロックのそれぞれの前記参照画面上の位置の、前記ターゲットブロックの画面上の位置との位置ずれ量を、方向成分も含む参照ベクトルとし、当該参照ベクトルを所定の縮小率で縮小した参照縮小ベクトルを得る参照縮小ベクトル取得工程と、
前記参照縮小ベクトルに応じた大きさの前記参照ベクトルを前記位置ずれ量とする、前記所定の縮小率に応じて削減された数の複数個の前記参照ブロックのそれぞれについての差分絶対値和を記憶する縮小差分絶対値和テーブルを生成するテーブル生成工程と、
前記縮小差分絶対値和テーブルにおける前記差分絶対値和の最小値に対応する前記参照ベクトルを少なくとも用いて、前記参照画面と前記元画面との間の前記分割領域のそれぞれについての動きベクトルを算出する動きベクトル算出工程と、
を備え、
前記テーブル生成工程は、
前記参照縮小ベクトル取得工程で取得された前記参照縮小ベクトルの近傍値となる複数の前記参照ベクトルを検出する近傍参照ベクトル検出工程と、
前記差分絶対値和算出工程で算出された前記参照ブロックのそれぞれについての前記差分の絶対値の総和から、前記近傍参照ベクトル検出工程で検出された前記近傍の複数の前記参照ベクトルのそれぞれに対応する差分絶対値和のそれぞれを算出する分散差分絶対値和算出工程と、
前記分散差分絶対値和算出工程で算出された前記近傍の複数の前記参照ベクトルのそれぞれに対応する前記差分絶対値和を、それまでの前記近傍の複数の前記参照ベクトルのそれぞれに対応する前記差分絶対値和に加算する分散加算工程と、
を備える撮像画像の歪み補正方法。
【請求項４】
請求項２に記載の撮像画像の歪み補正方法において、
前記動きベクトル検出工程において、前記分割領域のそれぞれにおける前記画像の動きベクトルを検出する方法は、
前記元画面中の前記各分割領域において、所定の位置に複数の画素からなる所定の大きさの少なくとも１個のターゲットブロックを設定し、
前記ターゲットブロックと同じ大きさの参照ブロックを、前記参照画面に設定されたサーチ範囲において複数個設定し、
前記複数個の参照ブロックの内から、前記ターゲットブロックと相関の強い前記参照ブロックを検出し、
当該検出した参照ブロックの前記ターゲットブロックに対する画面上の位置ずれ量に基づいて、前記動きベクトルを検出する
ものであって、
前記参照ブロックのそれぞれにおいて、当該参照ブロック内の各画素の画素値と、前記ターゲットブロック内で対応する位置の各画素の画素値との差分の絶対値の総和を求める差分絶対値和算出工程と、
前記参照ブロックのそれぞれの前記参照画面上の位置の、前記ターゲットブロックの画面上の位置との位置ずれ量を、方向成分も含む参照ベクトルとし、当該参照ベクトルを所定の縮小率で縮小した参照縮小ベクトルを得る参照縮小ベクトル取得工程と、
前記参照縮小ベクトルに応じた大きさの前記参照ベクトルを前記位置ずれ量とする、前記所定の縮小率に応じて削減された数の複数個の前記参照ブロックのそれぞれについての差分絶対値和を記憶する縮小差分絶対値和テーブルを生成するテーブル生成工程と、
前記縮小差分絶対値和テーブルにおける前記差分絶対値和の最小値に対応する前記参照ベクトルを少なくとも用いて、前記参照画面と前記元画面との間の前記分割領域のそれぞれについての動きベクトルを算出する動きベクトル算出工程と、
を備え、
前記テーブル生成工程は、
前記参照縮小ベクトル取得工程で取得された前記参照縮小ベクトルの近傍値となる複数の前記参照ベクトルを検出する近傍参照ベクトル検出工程と、
前記差分絶対値和算出工程で算出された前記参照ブロックのそれぞれについての前記差分の絶対値の総和から、前記近傍参照ベクトル検出工程で検出された前記近傍の複数の前記参照ベクトルのそれぞれに対応する差分絶対値和のそれぞれを算出する分散差分絶対値和算出工程と、
前記分散差分絶対値和算出工程で算出された前記近傍の複数の前記参照ベクトルのそれぞれに対応する前記差分絶対値和を、それまでの前記近傍の複数の前記参照ベクトルのそれぞれに対応する前記差分絶対値和に加算する分散加算工程と、
を備える撮像画像の歪み補正方法。
【請求項５】
撮影時の手ぶれによる撮像素子の位置的変化による撮像画像の歪みを補正し、補正後の撮像画像の情報を記録するようにするものであって、光学ズーム操作部を備える撮像装置による撮像方法であって、
前記撮像装置の動きベクトル検出手段が前記撮像素子からの撮像画像データを受けて、当該撮像画像データから、撮像画像の１画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出工程と、
前記撮像装置の判別手段が、前記光学ズーム操作部においてズーム操作がなされたか否かを判別する判別工程と、
前記判別工程で前記光学ズーム操作がなされたと判別したときに、前記撮像装置の光学ズーム分ベクトル算出手段が、前記光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の１画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出工程と、
前記撮像装置のベクトル減算手段が、前記判別工程で、前記光学ズーム操作がなされたと判別したときに、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記光学ズーム分算出工程で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算工程と、
前記撮像装置の手ぶれベクトル算出手段が、前記判別工程で前記光学ズーム操作がなされていないと判別したときには、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算工程の前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出工程と、
前記撮像装置の手ぶれ補正手段が、前記グローバル手ぶれベクトル算出工程で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正工程と、
前記撮像装置の記録手段が、前記手ぶれ補正手段により補正された前記撮像画像の画像情報を記録媒体に記録する記録工程と、
を備える撮像方法。
【請求項６】
撮像素子からの画像データを受けて、当該画像データから、撮像画像の１画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出手段と、
光学ズームがなされたときに、当該光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の１画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出手段と、
前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記光学ズーム分算出手段で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算手段と、
前記光学ズームがなされていないときには、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算手段が算出した前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出手段と、
前記グローバル手ぶれベクトル算出手段で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正手段と、
を備える撮像画像の歪み補正装置。
【請求項７】
撮像素子と、
光学ズーム操作部と、
前記光学ズーム操作部を通じた光学ズーム操作に応じて、光学レンズ系を制御して、光学ズームを実行する光学ズーム駆動手段と、
前記撮像素子からの画像データを受けて、当該画像データから、撮像画像の１画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出手段と、
前記光学ズーム操作部を通じた光学ズーム操作がなされたか否かを判別する判別手段と、
前記判別手段で前記光学ズーム操作がなされたと判別したときに、前記光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の１画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出手段と、
前記判別手段で、前記光学ズーム操作がなされたと判別したときに、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記光学ズーム分算出手段で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算手段と、
前記判別手段で前記光学ズーム操作がなされていないと判別したときには、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算手段が算出した前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出手段と、
前記グローバル手ぶれベクトル算出手段で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正手段と、
前記手ぶれ補正手段により補正された前記撮像画像の画像情報を記録媒体に記録する記録手段と、
を備える撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、光学ズーム操作を伴う被写体画像の撮像時の手ぶれ等による撮像画像に発生する歪を補正する方法および当該歪を補正する装置ならびに撮像装置に関する。
【背景技術】
【０００２】
例えばビデオカメラやデジタルスチルカメラなどの、電子式に撮像画像を撮像素子に記憶し、読み出すようにする電子式の撮像装置では、手持ちにより動画像の撮影を行なったとき、いわゆる手ぶれによる撮像素子の、撮像画像の水平方向および／または垂直方向に比較的高速の位置的変化を生じると、それは、撮像画像においては、画像の揺れなどの画像歪みとなって現われる。
【０００３】
すなわち、手ぶれが無い場合には、撮像素子の撮像面上において撮像画像の形成位置は同一位置となり、時間方向の複数のフレーム画像を並べた場合に、図４８（Ａ）に示すように、フレーム画像は全く同じ位置に重なり合うものとなる。しかし、手ぶれが生じると、撮像素子の撮像面上に形成される撮像画像の位置が同一位置とはならずに、時間方向の複数のフレーム画像を並べた場合に、図４８（Ｂ）に示すように、複数のフレーム画像は揺れ動いてしまうようなものとなる。
【０００４】
この手ぶれは、特に、ズームレンズを望遠側で使用する場合にはその現象が顕著に生じやすい。このような手ぶれ現象が生じた場合には、静止しているものが揺れて動いてしまい、画像が見にくくなるという問題がある。また、被写体が惚けた状態の撮像画像になってしまうという現象も生じる。
【０００５】
また、静止画の撮影においても、複数フレームの画像を重ね合わせて撮像出力画像を得る場合に、上述と同様にして、手ぶれにより被写体が惚けた状態となる画像歪みを有する撮像画像になってしまう。
【０００６】
この手ぶれによる画像歪みを補正する手法としては、従来、手ぶれを検出するセンサを用いる光学式手ぶれ補正方式と、撮像画像についてデジタル信号処理を行うことで手ぶれを検出すると共に補正処理をするセンサレス手ぶれ補正方式とが提案されている。
【０００７】
現在市場に出回っている民生機における、静止画用途の手ぶれ補正は、光学式手ぶれ補正方式によるものであり、ジャイロセンサもしくは加速度センサを使って手ぶれベクトルを計測し、それを機構系にフィードバックして、ＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）イメージャやＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）イメージャなどのイメージセンサ（撮像素子）に射影される像が、ぶれを起こさないように高速に制御する、というものである。
【０００８】
ここでいう機構系としては、レンズ、プリズム、イメージャ（もしくはイメージャと一体化したモジュール）の位置をアクチエータにより制御する機構が提案されており、それぞれ、レンズシフト、プリズムシフト、イメージャシフトと呼ばれている。
【０００９】
一方、センサレス手ぶれ補正方式は、例えば特許文献１（特許第３３０３３１２号公報）や特許文献２（特開平６−８６１４９号公報）等に記載されているように、撮像素子から読み出した撮像画像データから、撮像画像の画面単位の動きベクトルを検出し、この動きベクトルに基づいて、画像メモリに蓄えられている撮像画像データの読み出し位置をシフトして、手ぶれ補正をする方式である。
【００１０】
また、センサレス手ぶれ補正を静止画で実現する手法としては、特許文献３（特開平７−２８３９９９号公報）を始め、幾つか提案はされている。特許文献３は、手ぶれの発生しない程度の短い露光時間で何枚かの静止画を連写撮影し、その静止画間の手ぶれベクトルを求め、その手ぶれベクトルに従って、前記連射撮影した複数枚の静止画を平行移動（およびロール軸方向に回転）させながら加算（もしくは平均化）して行くことで、最終的に手ぶれと低照度ノイズの無い高画質の静止画を得る、というアルゴリズムである。
【００１１】
上記の特許文献は、次の通りである。
【特許文献１】特許第３３８４４５９号公報
【特許文献２】特開平６−８６１４９号公報
【特許文献３】特開平７−２８３９９９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ところで、一般に、ビデオカメラには、ズームスイッチなどの光学ズーム操作部が設けられ、撮影者は、この光学ズーム操作部を通じて光学ズーム操作することにより、動画像を撮影しながら光学ズーム制御ができるように構成されている。
【００１３】
この場合に、光学ズーム中の撮像画像は、例えばズームにより拡大するときには、図４９に示すように、画像の中心位置を始点位置として、この始点位置から時間の経過に伴って徐々に大きくなるような変化をする。
【００１４】
ところが、この光学ズーム操作を伴う撮影時に、手ぶれが生じると、図５０に示すように、画像が徐々に大きくなる始点位置が、画像の中心位置からずれてしまったりして、画像が歪んでしまう恐れがある。
【００１５】
手ぶれを補正することができれば、このような光学ズーム時の歪みは軽減されるが、上述したようなジャイロセンサを用いた光学式手ぶれ補正においては、光学レンズやプリズムあるいは撮像素子を、入射光の光軸に直交する方向に変移制御するのに対して、ズーム制御は、光学レンズを前記光軸に沿う方向に変移制御するものであるため、制御が非常に複雑になる。このため、従来は、光学ズーム時には、光学式手ぶれ補正を停止したりしている。
【００１６】
また、センサレスの手ぶれ補正の場合においては、撮像素子から読み出された撮像画像データから検出された手ぶれ動きベクトルは、光学ズームによる画像の動きベクトル成分が手ぶれ動きベクトルに加わったものとなるため、検出された手ぶれ動きベクトルによって、手ぶれ補正をしても、手ぶれによる画像歪み分が除去できない。このため、センサレスの手ぶれ補正においても、光学ズーム時には、手ぶれ補正を行わないようにしている。
【００１７】
以上のように、従来の撮像装置では、光学ズーム時に発生した手ぶれを補正することは行われず、このため、光学ズーム時に手ぶれが発生すると、例えば図５０に示したような光学ズーム時の歪みが残留したものとなる。この光学ズーム時の手ぶれによる歪みは、小型のモニター画面では、比較的目立たないが、最近のように、画像が高精細度になり、大画面で画像を楽しむようになると、上記の光学ズーム時の手ぶれによる歪みが無視できなくなる。
【００１８】
この発明は、以上の点にかんがみ、光学ズーム時の手ぶれによる歪みを除去して、画像歪みの無いズーム画像が得られるようにすることを目的とする。
【課題を解決するための手段】
【００１９】
上記の課題を解決するために、本発明の撮像画像の歪み補正方法は、撮像素子からの画像データを受けて、当該画像データから、撮像画像の１画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出工程と、光学ズームがなされたときに、当該光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の１画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出工程と、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記光学ズーム分ベクトル算出工程で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算工程と、前記光学ズームがなされないときには、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算工程の前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出工程と、前記グローバル手ぶれベクトル算出工程で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正工程と、を備える。
【００２０】
本発明の撮像方法は、撮影時の手ぶれによる撮像素子の位置的変化による撮像画像の歪みを補正し、補正後の撮像画像の情報を記録するようにするものであって、光学ズーム操作部を備える撮像装置による撮像方法であって、前記撮像装置の動きベクトル検出手段が前記撮像素子からの撮像画像データを受けて、当該撮像画像データから、撮像画像の１画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出工程と、前記撮像装置の判別手段が、前記光学ズーム操作部においてズーム操作がなされたか否かを判別する判別工程と、前記判別工程で前記光学ズーム操作がなされたと判別したときに、前記撮像装置の光学ズーム分ベクトル算出手段が、前記光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の１画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出工程と、前記撮像装置のベクトル減算手段が、前記判別工程で、前記光学ズーム操作がなされたと判別したときに、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記光学ズーム分算出工程で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算工程と、前記撮像装置の手ぶれベクトル算出手段が、前記判別工程で前記光学ズーム操作がなされていないと判別したときには、前記動きベクトル検出工程で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算工程の前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出工程と、前記撮像装置の手ぶれ補正手段が、前記グローバル手ぶれベクトル算出工程で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正工程と、前記撮像装置の記録手段が、前記手ぶれ補正手段により補正された前記撮像画像の画像情報を記録媒体に記録する記録工程と、を備える。
【００２１】
本発明の撮像画像の歪み補正装置は、撮像素子からの画像データを受けて、当該画像データから、撮像画像の１画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出手段と、光学ズームがなされたときに、当該光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の１画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出手段と、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記光学ズーム分算出手段で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算手段と、前記光学ズームがなされていないときには、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算手段が算出した前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出手段と、前記グローバル手ぶれベクトル算出手段で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正手段と、を備える。
本発明の撮像装置は、撮像素子と、光学ズーム操作部と、前記光学ズーム操作部を通じた光学ズーム操作に応じて、光学レンズ系を制御して、光学ズームを実行する光学ズーム駆動手段と、前記撮像素子からの画像データを受けて、当該画像データから、撮像画像の１画面単位で、複数の分割領域を設定し、当該分割領域毎に動きベクトルを検出する動きベクトル検出手段と、前記光学ズーム操作部を通じた光学ズーム操作がなされたか否かを判別する判別手段と、前記判別手段で前記光学ズーム操作がなされたと判別したときに、前記光学ズームにより前記撮像画像に生じる画像の動きに対応する前記分割領域毎の光学ズーム分ベクトルを、前記光学ズームが開始された時点からの時間と、ズーム速度と、前記撮像画像の１画面の中心位置と前記分割領域毎の中心位置との距離を基に算出する光学ズーム分ベクトル算出手段と、前記判別手段で、前記光学ズーム操作がなされたと判別したときに、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記光学ズーム分算出手段で算出された前記分割領域毎の前記光学ズーム分ベクトルを減算し、前記分割領域毎の差分ベクトルを算出するベクトル減算手段と、前記判別手段で前記光学ズーム操作がなされていないと判別したときには、前記動きベクトル検出手段で検出された前記分割領域毎の動きベクトルから前記撮像画像についての手ぶれベクトルを算出し、前記光学ズームがなされたときには、前記ベクトル減算手段が算出した前記分割領域毎の差分ベクトルから前記撮像画像についての手ぶれベクトルを算出するグローバル手ぶれベクトル算出手段と、前記グローバル手ぶれベクトル算出手段で算出された前記グローバル手ぶれベクトルに基づいて、前記撮像画像の手ぶれによる画像歪みを補正する手ぶれ補正手段と、前記手ぶれ補正手段により補正された前記撮像画像の画像情報を記録媒体に記録する記録手段と、を備える。
【発明の効果】
【００２２】
この発明によれば、光学ズーム時の手ぶれによる歪みを除去して、画像歪みの無いズーム画像が得られる。
【発明を実施するための最良の形態】
【００２３】
以下、この発明による撮像画像の歪み補正装置および方法の実施の形態を、撮像装置に適用した場合を例に、図を参照しながら説明する。
【００２４】
［この発明による撮像画像の歪み補正装置の第１の実施形態］
図２は、この発明の撮像画像の歪み補正装置の第１の実施形態が適用された撮像装置の全体の構成例のブロック図を示すものである。
【００２５】
図２に示すように、この実施形態の撮像装置は、システムバス２にＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１が接続されると共に、システムバス２に、撮像信号処理系１０や、ユーザ操作入力部３、画像メモリ部４、記録再生装置部５などが接続されて構成されている。なお、この明細書においては、ＣＰＵ１は、種々のソフトウエア処理を行なうプログラムを記憶するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やワークエリア用ＲＡＭなどを含むものとしている。
【００２６】
この実施形態の撮像装置の筐体の所定位置には、ユーザ（撮影者）が操作する光学ズーム操作部の例としてのズームスイッチ７が取り付けられている。このズームスイッチ７は、例えば、シーソー式のボタンスイッチにより構成され、ユーザによるその操作情報がＣＰＵ１に供給される。
【００２７】
また、この実施形態では、撮像用のレンズなどを備えるカメラ光学系１０Ｌは、アクチュエータを含むズーム機構部８を備える。この例では、このズーム機構部８は、図３に示すように、カメラ光学系１０Ｌのレンズ１１０Ｌの位置を、入射光の光軸１０ａｘの方向に沿う方向に変移させる機構とされている。図３において、Ｐ１，Ｐ２，Ｐ３は、ズームポジションを示し、撮像画像はそれぞれのズームポジションに応じた画像となる。
【００２８】
そして、このズーム機構部８には、ＣＰＵ１から、ユーザによるズームスイッチ７を通じたズーム操作情報に応じて生成されたズーム制御信号ＣＴＬが供給されて、カメラ光学系１０Ｌのレンズの位置が制御されて、ズーム制御がなされる。
【００２９】
すなわち、ユーザによりズームスイッチ７を通じてズームアップ方向に操作されると、ＣＰＵ１からのズーム制御信号ＣＴＬによりズーム機構部８が制御されて、撮像レンズ系が長焦点（望遠）側になり、また、ズームダウン方向に操作されると、ＣＰＵ１からのズーム制御信号ＣＴＬによりズーム機構部８が制御されて、撮像レンズ系が短焦点側になるようにされる。
【００３０】
図２の例の撮像装置においては、ユーザ操作入力部３を通じた撮像記録開始操作を受けて、後述するような撮像画像データの記録処理を行なう。また、ユーザ操作入力部３を通じた撮像記録画像の再生開始操作を受けて、図２の撮像装置は、記録再生装置部５の記録媒体に記録された撮像画像データの再生処理を行なう。
【００３１】
図２に示すように、撮像レンズ１０Ｌを備えるカメラ光学系（図示は省略）を通じた被写体からの入射光は、撮像素子１１に照射されて撮像される。撮像素子１１は、ＣＣＤイメージャやＣＭＯＳイメージャで構成されている。
【００３２】
この例の撮像装置においては、撮像記録開始操作がなされると、撮像素子１１からは、タイミング信号発生部１２からのタイミング信号により、撮像画像データがサンプリングされることにより、赤（Ｒ）、緑（Ｇ）、青（Ｂ）の３原色から構成されるベイヤー配列のＲＡＷ信号であるデジタル撮像信号が出力される。
【００３３】
出力された撮像信号は、前処理部１３に供給され、欠陥補正やγ補正等の前処理が施され、データ変換部１４に供給される。データ変換部１４は、これに入力された撮像信号から、輝度信号成分Ｙと、色差信号成分Ｃｂ／Ｃｒとにより構成されるデジタル撮像信号（ＹＣデータ）に変換し、そのデジタル撮像信号を、システムバスを介して画像メモリ部４に供給する。
【００３４】
画像メモリ部４は、この図２の例においては、２個のフレームメモリ４１，４２からなり、データ変換部１４からのデジタル撮像信号は、先ず、フレームメモリ４１に格納される。そして、１フレーム経過すると、フレームメモリ４１に記憶されているデジタル撮像信号が、フレームメモリ４２に転送されると共に、フレームメモリ４１には、データ変換部１４からの新たなフレームのデジタル撮像信号が書き込まれる。したがって、フレームメモリ４２には、フレームメモリ４１に格納されているフレーム画像よりも１フレーム分前のフレーム画像が格納されている。
【００３５】
手ぶれ動きベクトル検出部１５は、この実施形態では、撮像画像データから撮像画像の動きベクトルを検出して、手ぶれ動きベクトルを検出する。また、手ぶれ動きベクトル検出部１５は、特に、撮影時に、光学ズーム操作を伴っているときには、光学ズームによる画像の動き成分である光学ズーム分ベクトルを除去した手ぶれ動きベクトルを、後述するようにして検出する。このため、手ぶれ動きベクトル検出部１５には、後述するように、ＣＰＵ１からのズームスイッチ７の操作に応じたズーム情報ＺＭが供給される。
【００３６】
撮像画像データから動きベクトルを検出する方法としては、後述するように、２画面間の相関を求めるブロックマッチングを用いる。手ぶれ動きベクトル検出部１５は、システムバス２を介して、画像メモリ部４の２個のフレームメモリ４１およびフレームメモリ４２をアクセスして、その格納撮像画像データを読み出し、当該撮像画像データからの動きベクトル検出処理を実行する。この場合、フレームメモリ４２に格納されているフレーム画像は、後述する元フレームの画像とされ、また、フレームメモリ４１に格納されているフレーム画像は、後述する参照フレームの画像とされる。
【００３７】
そして、手ぶれ動きベクトル検出部１５は、その検出結果である手ぶれ動きベクトルを、その後段の解像度変換部１６に制御信号として伝達する。
【００３８】
解像度変換部１６は、手ぶれ動きベクトル検出部１５から受け取った手ぶれ動きベクトル（グローバル手ぶれベクトル）にしたがって、フレームメモリ４２に格納されている遅延フレームの画像データを切り出しながら、必要な解像度および画像サイズに変換する処理をする。このフレームメモリ４２からの、算出した画像歪み補正量にしたがった切り出しにより、変換後の画像は、手ぶれがピクセル単位で除去される画像となる。
【００３９】
この解像度変換部１６からの手ぶれに基づく画像歪みが除去された画像データは、ＮＴＳＣ（Ｎａｔｉｏｎａｌ  Ｔｅｌｅｖｉｓｉｏｎ  Ｓｙｓｔｅｍ  Ｃｏｍｍｉｔｔｅｅ）エンコーダ１８によりＮＴＳＣ方式の標準カラー映像信号に変換され、電子式ビューファインダーを構成するモニターディスプレイ６に供給され、撮影時の画像がその表示画面にモニター表示される。
【００４０】
このモニター表示と並行して、解像度変換部１６からの手ぶれが除去された画像データはコーデック部１７で記録変調などのコーディング処理された後、記録再生装置部５に供給されて、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）などの光ディスクやハードディスクなどの記録媒体に記録される。
【００４１】
この記録再生装置部５の記録媒体に記録された撮像画像データは、ユーザ操作入力部３を通じた再生開始操作に応じて読み出され、コーデック部１７に供給されて、再生デコードされる。そして、再生デコードされた画像データはＮＴＳＣエンコーダ１８を通じてモニターディスプレイ６に供給され、再生画像がその表示画面に表示される。なお、図１では、図示を省略したが、ＮＴＳＣエンコーダ１８からの出力映像信号は、映像出力端子を通じて外部に導出することが可能とされている。
【００４２】
［手ぶれ動きベクトル検出部１５の構成例］
図１に、この実施形態における手ぶれ動きベクトル検出部１５の構成例のブロック図を示す。この実施形態における手ぶれ動きベクトル検出部１５は、動きベクトル検出処理部１５１と、光学ズーム分ベクトル算出部１５２と、光学ズーム分ベクトル減算部１５３と、セレクタ１５４と、グローバル手ぶれベクトル算出部１５５と、タイミング制御部１５６とを備えて構成される。
【００４３】
タイミング制御部１５６は、ＣＰＵ１からの制御の下に、各部にタイミング信号を供給する。
【００４４】
動きベクトル検出処理部１５１は、タイミング制御部１５６からのタイミング制御信号に基づいて動作し、画像メモリ部４から読み出した２画面分の画像データから、撮像画像について動きベクトルを検出する。
【００４５】
この例では、後で詳述するように、この実施形態では、図４に示すように、１画面ＦＬ中に複数個、この例では、水平方向に４個、スイッチ方向に４個の合計１６個のターゲット領域ＴＧが設定され、動きベクトル検出処理部１５１では、この複数個のターゲット領域ＴＧｉ（この例では、ｉ＝１，２，・・・，１６）のそれぞれについて動きベクトルＭＶｉ（この例では、ｉ＝１，２，・・・，１６）が検出される（図５（Ａ）参照）。
【００４６】
そして、動きベクトル検出処理部１５１は、検出した複数個の動きベクトルを、タイミング制御部１５６からのタイミング制御信号による制御に従って、セレクタ１５４の一方の入力端Ａに供給すると共に、光学ズーム分ベクトル減算部１５３に供給する。
【００４７】
光学ズーム分ベクトル算出部１５２は、ユーザによりズームスイッチ７を通じたズーム操作がなされたときに、タイミング制御部１５６からのタイミング制御信号による制御にしたがって、ＣＰＵ１からのズーム情報ＺＭを用いて、光学ズーム分ベクトルを算出する。
【００４８】
この例では、光学ズーム分ベクトル算出部１５２は、動きベクトル検出処理部１５１で動きベクトルが検出される前記ターゲット領域ＴＧｉのそれぞれにおける光学ズーム分ベクトルＺＶｉ（この例では、ｉ＝１，２，・・・，１６）を算出する（図５（Ｂ）参照）。そして、光学ズーム分ベクトル算出部１５２は、算出した光学ズーム分ベクトルＺＶｉのそれぞれを、光学ズーム分ベクトル減算部１５３に供給する。
【００４９】
各ターゲット領域ＴＧｉについての光学ズーム分ベクトルＺＶｉの大きさは、ズームスイッチ７が操作開始された時点からの時間ｔと、ズーム速度ｖと、図４に示すように、各ターゲット領域ＴＧｉの中心位置と、画面ＦＬの中心位置Ｃｏとの間の距離ｄｉ（この例では、ｉ＝１〜１６）とから求められる。
【００５０】
ズーム速度ｖは、撮像レンズ１１０Ｌが、図３の矢印で示す光軸１０ａｘに沿う方向に１フレーム画像区間の間に移動する距離を、１フレームの時間で割り算した値である。ズーム速度ｖは、１画面ごとについて定められる。一般に、ズーム速度ｖは、ズームスイッチ７が操作開始された時点からの時間ｔに比例して大きくなる。
【００５１】
そして、１画面内の各ターゲット領域ＴＧｉについての光学ズーム分ベクトルの大きさは、各ターゲット領域ＴＧｉの中心位置と、画面ＦＬの中心位置Ｃｏとの間の距離ｄｉに比例した値となる。
【００５２】
すなわち、ズームスイッチ７が操作開始された時点からの時間ｔが分かると、ズーム速度ｖが求められ、ズーム速度ｖが求まると、当該フレームにおける各ターゲット領域ＴＧｉについての光学ズーム分ベクトルの大きさが求められる。
【００５３】
なお、各ターゲット領域ＴＧｉについての光学ズーム分ベクトルＺＶｉの向きは、図５（Ｂ）に示すように、画面ＦＬの中心位置Ｃｏから、各ターゲット領域ＴＧｉの中心位置に向かう方向に沿ったものとなる。
【００５４】
ユーザによりズームスイッチ７を通じたズーム操作がなされたときには、ＣＰＵ１は、ズーム制御信号ＣＴＬを生成してズーム機構部８に供給すると同時に、ズーム速度ｖの情報と、ユーザによるズーム開始時からの時間ｔの情報とからなるズーム情報ＺＭを光学ズーム分ベクトル算出部１５２供給する。
【００５５】
光学ズーム分ベクトル算出部１５２は、このＣＰＵ１からのズーム情報ＺＭを用いて、上述のようにして、各ターゲット領域ＴＧｉについての光学ズーム分ベクトルＺＶｉを求め、求めた光学ズーム分ベクトルＺＶｉを光学ズーム分ベクトル減算部１５３に供給する。
【００５６】
光学ズーム分ベクトル減算部１５３は、動きベクトル検出処理部１５１からの動きベクトルＭＶｉ（図５（Ａ））のそれぞれと、光学ズーム分ベクトル算出部１５２からの光学ズーム分ベクトルＺＶｉ（図５（Ｂ））のそれぞれとの差分のベクトルＶｅｃを、前記ターゲット領域ＴＧｉのそれぞれについて求める（図６（Ａ）参照）。そして、求めた差分のベクトルＶｅｃｉ（この例では、ｉ＝１，２，・・・，１６）（図６（Ｂ）参照）を、セレクタ１５４の他方の入力端Ｂに供給する。
【００５７】
ＣＰＵ１は、ユーザによりズームスイッチ７を通じたズーム操作がなされたときには、セレクタ１５４から、入力端Ｂ側に入力された光学ズーム分ベクトル減算部１５３からのベクトルを選択して出力し、その他のときには、入力端Ａ側に入力された動きベクトル検出処理部１５１からの動きベクトルを選択して出力するようにする選択制御信号ＳＥＬを、セレクタ１５４に供給する。セレクタ１５４は、選択制御信号ＳＥＬによる選択制御に応じて選択されたベクトルを、グローバル手ぶれベクトル算出部１５５に供給する。
【００５８】
したがって、グローバル手ぶれベクトル算出部１５５は、ズーム操作がなされていない撮像時には、動きベクトル検出処理部１５１からの複数個の動きベクトルＭＶｉを受け取り、過去のフレームにおけるそれらの動きベクトルＭＶｉからの推移も加味しながら統計的に処理することで、１フレームについて１つのグローバルベクトルＧＶｅｃ、即ち、フレームの手ぶれベクトルを確定して得、解像度変換部１６に供給するようにする。
【００５９】
また、ズーム操作がなされた撮像時には、グローバル手ぶれベクトル算出部１５５は、光学ズーム分ベクトル減算部１５３からの差分のベクトルＶｅｃｉを受け取り、過去のフレームにおけるそれらのベクトルＶｅｃｉからの推移も加味しながら統計的に処理することで、１フレームについて１つのグローバルベクトルＧＶｅｃ、即ち、フレームの手ぶれベクトルを確定して得、解像度変換部１６に供給するようにする。
【００６０】
解像度変換部１６は、前述したように、このグローバル手ぶれベクトルＧＶｅｃにしたがって、フレームメモリ４２に格納されている遅延フレームの画像データを切り出しながら、必要な解像度および画像サイズに変換する処理をする。
【００６１】
したがって、ズーム操作を伴った撮像時には、図７に示すように、手ぶれが除去されたズーム撮影画像が得られるものである。
【００６２】
［手ぶれ動きベクトル検出部１５における動きベクトルの検出について］
この実施の形態では、光学式の手ぶれ補正は全く使用せずに、センサレスの手ぶれ補正を行うようにしている。そして、手ぶれ動きベクトル検出部１５の動きベクトル検出処理部１５１では、撮像画像の手ぶれ動きベクトルを検出する方法として、２画面間の相関を求めるブロックマッチングを用いる。このブロックマッチングを用いる方法は、ジャイロ（角速度）センサなどの機械的な部品が不要なので、撮像装置の小型、軽量化を実現することができるという点で有利である。
【００６３】
図８および図９は、ブロックマッチングの概要を図示したものである。また、図１０には、その処理フローチャートの一般例を示す。
【００６４】
ブロックマッチングは、撮像装置部からの撮像画像について、注目画面である参照画面と、当該参照画面よりも１画面分前の撮像画面である元画面との間の１画面分単位での動きベクトルを、所定の大きさの矩形領域のブロックについて、参照画面と元画面との相関を算出することにより算出する方法である。
【００６５】
なお、ここで画面とは、１フレームまたは１フィールドの画像データからなる画像を意味しているが、この明細書では、説明の便宜上、画面は１フレームからなるものとして、画面をフレームと称することとする。したがって、参照画面は参照フレーム、元画面は元フレームと称する。
【００６６】
例えば、参照フレームの画像データは、撮像装置部からの現フレームの画像データ、または現フレームの画像データがフレームメモリに格納されて１フレーム分遅延されたものとされる。元フレームの画像データは、参照フレームの画像データがさらにフレームメモリに格納されて１フレーム分遅延されたものとされる。
【００６７】
図８および図９は、従来のブロックマッチングの概要を説明するための図である。また、図１０は、従来のブロックマッチング処理のフローチャートの一例である。
【００６８】
ブロックマッチングにおいては、図８に示すように、元フレーム１０１の任意の所定の位置において、水平方向の複数画素および垂直方向の複数ライン分からなる所定の大きさの矩形領域からなるターゲットブロック１０３が設定される。
【００６９】
これに対して、参照フレーム１０２において、元フレームのターゲットブロック１０３の位置と同じ位置に、ターゲットブロックの射影イメージブロック１０４（図８の点線参照）を想定し、このターゲットブロックの射影イメージブロック１０４を中心としたサーチ範囲１０５（図８の一点鎖線参照）を設定すると共に、ターゲットブロック１０３と同じ大きさの参照ブロック１０６を考える。
【００７０】
そして、この参照ブロック１０６の位置を参照フレーム１０２のサーチ範囲１０５内において移動させ、各位置において参照ブロック１０６に含まれる画像内容と、ターゲットブロック１０３の画像内容との相関を求め、最も相関が強いとして検出された参照ブロック１０６の位置を、元フレームのターゲットブロック１０３が、参照フレーム１０２において移動した位置として検出するようにする。そして、その検出した参照フレーム１０６の位置と、ターゲットブロックの位置との間の位置ずれ量を、方向成分を含む量としての動きベクトルとして検出するようにする。
【００７１】
この場合、参照ブロック１０６は、サーチ範囲１０５を、例えば水平方向および垂直方向に、１画素または複数画素単位で移動させるようにする。したがって、サーチ範囲１０５内には、複数個の参照ブロックが設定されることになる。
【００７２】
ここで、ターゲットブロック１０３と、サーチ範囲１０５内を移動する各参照ブロック１６との相関は、ターゲットブロック１０３内の各画素の輝度値と、参照ブロック１０６内の対応する各画素の輝度値との差分の絶対値の、ブロック内の全画素についての総和（この差分の絶対値の総和を差分絶対値和と呼ぶ。以下、この差分絶対値和をＳＡＤ（Ｓｕｍ  ｏｆ  Ａｂｓｏｌｕｔｅ  Ｄｉｆｆｅｒｅｎｃｅ）と記載することとする）を求めることにより検出する。すなわち、ＳＡＤ値が最小となる位置の参照ブロック１０６が最も相関が強い参照ブロックとして検出され、その検出された参照ブロック１０６のターゲットブロック１０３の位置に対する位置ずれ量が動きベクトルとして検出される。
【００７３】
ブロックマッチングでは、サーチ範囲１０５内に設定される複数個の参照ブロック１０６のそれぞれの、ターゲットブロック１０３の位置に対する位置ずれ量は、方向成分を含む量としての参照ベクトル１０７（図８参照）で表現される。各参照ブロック１０６の参照ベクトル１０７は、参照ブロック１０６の参照フレーム１０２上の位置に応じた値となるが、従来のブロックマッチングでは、ＳＡＤ値が最小値となる参照ブロック１０６の参照ベクトルを、動きベクトルとして検出するものである。
【００７４】
そこで、ブロックマッチングでは、一般に、図９に示すように、サーチ範囲１０５内において設定される複数個の参照ブロック１０６のそれぞれとターゲットブロック１０３との間におけるＳＡＤ値（以下、説明の簡単のため参照ブロックについてのＳＡＤ値という）を、それぞれの参照ブロック１０６の位置に応じた参照ベクトル１０７のそれぞれに対応させて、メモリに記憶しておき、そのメモリに記憶された全ての参照ブロック１０６についてのＳＡＤ値の中から、最小のＳＡＤ値の参照ブロック１０６を検出することで、動きベクトル１１０を検出するようにしている。
【００７５】
サーチ範囲１０５内に設定された複数個の参照ブロック１０６の位置に応じた参照ベクトル１０７のそれぞれに対応させて、それぞれの参照ブロック１０６についてのＳＡＤ値を記憶したものを、差分絶対値和テーブル（以下ＳＡＤテーブルという）と呼ぶ。図４のＳＡＤテーブル１０８が、これを示しており、このＳＡＤテーブル１０８において、それぞれの参照ブロック１０６についてのＳＡＤ値をＳＡＤテーブル要素１０９という。
【００７６】
なお、上述の説明において、ターゲットブロック１０３および参照ブロック１０６の位置とは、それらのブロックの任意の特定の位置、例えば中心位置を意味するものであり、参照ベクトル１０７は、参照フレーム１０２におけるターゲットブロック１０３の射影イメージブロック１０４の位置と、参照ブロック１０６の位置との間のずれ量（方向を含む）を示すものである。図８および図９の例では、ターゲットブロック１０３は、フレームの中心位置にあるとしている場合である。
【００７７】
そして、各参照ブロック１０６に対応する参照ベクトル１０７は、参照フレーム１０２上のターゲットブロック１０３に対応する位置に対する当該各参照ブロック１０６の位置ずれとなっているので、参照ブロック１０６の位置が特定されると、その位置に対応して参照ベクトルの値も特定される。したがって、ＳＡＤテーブル１０８のメモリにおける参照ブロックのＳＡＤテーブル要素のアドレスが特定されると、対応する参照ベクトルは特定されることになる。
【００７８】
以上説明した従来のブロックマッチングの処理を、図１０のフローチャートを参照して説明すると、次のようになる。
【００７９】
先ず、サーチ範囲１０５内の１つの参照ブロックＩｉを指定するが、これは、当該参照ブロックＩｉに対応する参照ベクトルを指定することに等しい（ステップＳ１）。ここで、図１０において、（ｖｘ，ｖｙ）は、ターゲットブロックのフレーム上の位置を基準位置（０，０）としたときに、指定された参照ベクトルにより示される位置を示し、ｖｘは指定された参照ベクトルによる、基準位置からの水平方向のずれ量成分であり、また、ｖｙは指定された参照ベクトルによる、基準位置からの垂直方向成分のずれ量成分である。
【００８０】
ここでは、ずれ量ｖｘ、ｖｙは、画素を単位とした値とされ、例えばｖｘ＝＋１は、基準位置（０，０）に対して、水平方向の右方向に１画素分ずれた位置を示し、また、ｖｘ＝−１は、基準位置（０，０）に対して、水平方向の左方向に１画素分ずれた位置を示している。また、例えばｖｙ＝＋１は、基準位置（０，０）に対して、垂直方向の下方向に１画素分ずれた位置を示し、また、ｖｙ＝−１は、基準位置（０，０）に対して、垂直方向の上方向に１画素分ずれた位置を示している。
【００８１】
以上のように、（ｖｘ、ｖｙ）は、参照ベクトルで示される基準位置に対する位置（以下、簡単のため、参照ベクトルで示される位置という）を示しており、参照ベクトルのそれぞれに対応している。つまり、ｖｘおよびｖｙを整数としたとき、（ｖｘ、ｖｙ）は参照ベクトルのそれぞれを表すことになる。したがって、以下の説明においては、（ｖｘ、ｖｙ）の位置を示す参照ベクトルを、参照ベクトル（ｖｘ、ｖｙ）と記載することがある。
【００８２】
ここで、サーチ範囲の中心位置をターゲットブロックの位置、つまり前記基準位置（０，０）とし、サーチ範囲を、水平方向には±Ｒｘ、垂直方向には±Ｒｙとしたとき、
−Ｒｘ≦ｖｘ≦＋Ｒｘ、−Ｒｙ≦ｖｙ≦＋Ｒｙ
とされるものである。
【００８３】
次に、ターゲットブロックＩｏ内の１つの画素の座標（ｘ，ｙ）を指定する（ステップＳ２）。次に、ターゲットブロックＩｏ内の指定された１つの座標（ｘ，ｙ）の画素値Ｉｏ（ｘ，ｙ）と、参照ブロックＩｉ内の対応する画素位置の画素値Ｉｉ（ｘ＋ｖｘ，ｙ＋ｖｙ）との差分の絶対値αを算出する（ステップＳ３）。すなわち、差分絶対値αは、
α＝｜Ｉｏ（ｘ，ｙ）−Ｉｉ（ｘ＋ｖｘ，ｙ＋ｖｙ）｜    ・・・（式１）
として算出される。
【００８４】
そして、算出した差分絶対値αを、当該参照ブロックＩｉの参照ベクトル（ｖｘ，ｖｙ）が指し示すアドレス（テーブル要素）の、それまでのＳＡＤ値に加算し、その加算であるＳＡＤ値を、当該アドレスに書き戻すようにする（ステップＳ４）。すなわち、参照ベクトル（ｖｘ，ｖｙ）に対応するＳＡＤ値を、ＳＡＤ（ｖｘ，ｖｙ）と表すと、
ＳＡＤ（ｖｘ，ｖｙ）＝Σα＝Σ｜Ｉｏ（ｘ，ｙ）−Ｉｉ（ｘ＋ｖｘ，ｙ＋ｖｙ）｜
・・・（式２）
として算出し、当該参照ベクトル（ｖｘ，ｖｙ）が指し示すアドレスに書き込むようにする。
【００８５】
次に、ターゲットブロックＩｏ内の全ての座標（ｘ，ｙ）の画素について、上記の演算を行なったか否かを判別し（ステップＳ５）、ターゲットブロックＩｏ内の全ての座標（ｘ，ｙ）の画素については、未だ、演算は終了していないと判別したときには、ステップＳ２に戻り、ターゲットブロックＩｏ内の次の座標（ｘ，ｙ）の画素位置を指定し、このステップＳ２以降の処理を繰り返す。
【００８６】
また、ステップＳ５で、ターゲットブロックＩｏ内の全ての座標（ｘ，ｙ）の画素について、上記の演算を行なったと判別したときには、当該参照ブロックについてのＳＡＤ値の算出が終了したと判別して、サーチ範囲内の全ての参照ブロック、すなわち、全ての参照ベクトル（ｖｘ，ｖｙ）についての上記の演算処理を完了したか否か判別する（ステップＳ６）。
【００８７】
ステップＳ６で、未だ、上記の演算処理を完了していない参照ベクトル（ｖｘ，ｖｙ）があると判別すると、ステップＳ１に戻り、上記の演算処理を完了していない次の参照ベクトル（ｖｘ，ｖｙ）を設定して、このステップＳ１以降の処理を繰り返す。
【００８８】
そして、ステップＳ６で、上記の演算処理を完了していない参照ベクトル（ｖｘ，ｖｙ）はサーチ範囲内になくなったと判別すると、ＳＡＤテーブルが完成したとして、当該完成したＳＡＤテーブルにおいて、最小値となっているＳＡＤ値を検出する（ステップＳ７）。そして、当該最小値となっているＳＡＤ値のアドレスに対応する参照ベクトルを動きベクトルとして検出する（ステップＳ８）。ここで、ＳＡＤの最小値をＳＡＤ（ｍｘ，ｍｙ）と書き表すと、目的とする動きベクトルは、位置（ｍｘ，ｍｙ）を示すベクトル（ｍｘ，ｍｙ）として算出される。
【００８９】
以上で、１つのターゲットブロックに対するブロックマッチングによる動きベクトルの検出処理は、終了となる
以上のようなブロックマッチングを用いたセンサレスの手ぶれ動きベクトルの検出方法の場合、原理的に、ピクセル精度の手ぶれベクトル検出が実現可能であり、また、センサやレンズシフト等の機構を削減できるため、コスト的にも相当優位である。
【００９０】
しかし、上述した従来のブロックマッチングに依存する技術の延長では、１画面分の画素数に比例してＳＡＤテーブルの規模が増加するため、現在の５００万画素オーバーの静止画サイズの動きベクトル検出を、現実的な回路規模で実現するのは非常に困難である。
【００９１】
過去、各社様々な工夫を凝らしながら、ＮＴＳＣ（Ｎａｔｉｏｎａｌ  Ｔｅｌｅｖｉｓｉｏｎ  Ｓｙｓｔｅｍ  Ｃｏｍｍｉｔｔｅｅ）動画の高々１７万画素の手ぶれベクトル検出の回路規模削減に苦慮していた背景がある上に、ＮＴＳＣ動画の場合、６０ｆｐｓ（ｆｒａｍｅ  ｐｅｒ  ｓｅｃｏｎｄ；フレーム／秒）のため手ぶれのサーチ範囲は狭くて済むが、静止画の場合、３ｆｐｓ程度が前提となり、サーチ範囲が極端に大きくなることも問題を困難にしている一因である。画素数と同じく、サーチ範囲にも比例してＳＡＤテーブルのテーブル要素数が増加するからである。
【００９２】
センサレス手ぶれ補正を静止画で実現する手法としては、前述の特許文献３（特開平７−２８３９９９号公報）を始め、幾つか提案はされている。特許文献３は、手ぶれの発生しない程度の短い露光時間で何枚かの静止画を連写撮影し、その静止画間の手ぶれベクトルを求め、その手ぶれベクトルに従って、前記連射撮影した複数枚の静止画を平行移動（およびロール軸方向に回転）させながら加算（もしくは平均化）して行くことで、最終的に手ぶれと低照度ノイズの無い高画質の静止画を得る、というアルゴリズムである。
【００９３】
実現できるレベルの現実的な提案としては、特許文献４（特開２００５−３８３９６公報）を挙げることができる。この特許文献４に示されたものは、画像を縮小変換したサイズで動ベクトルを求める手段と、同一のＳＡＤテーブルを複数のブロックで共有する手段から構成される。画像の縮小変換と、ＳＡＤテーブルの複数ブロックでの共有化は、ＳＡＤテーブルサイズの削減を実現するための、非常に良い手法であり、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）画像圧縮方式における動きベクトル検出やシーンチェンジ検出等、他分野でも使われている。
【００９４】
しかし、この特許文献４のアルゴリズムの問題点として、画像の縮小変換と、その際のメモリ（ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）））アクセスに、時間とメモリ容量を消費することと、ＳＡＤテーブルを複数ブロックで時分割アクセスする手法のため、メモリアクセスが非常に増加し、この処理にも時間を要してしまうという課題がある。動画の手ぶれ補正においては、リアルタイム性と同時にシステム遅延時間の短縮が求められるため、この処理時間の問題が課題となってしまうのである。
【００９５】
また、元画像を縮小変換する際には、エイリアシング（折り返し歪み）や、低照度ノイズ除去のためのローパスフィルタを、縮小処理の前処理として実装するが必要である。しかし、縮小倍率に応じて、ローパスフィルタの特性が変化する上、特に、垂直方向のローパスフィルタの場合、多タップのデジタルフィルタとした場合に、多くのラインメモリと演算ロジックを必要としなければならず、回路規模増加の問題が生じる。
【００９６】
他方、ブロックマッチングを使用しないアルゴリズムも提案されている（例えば前述の特許文献２（特開平６−８６１４９号公報）、特許文献５（特開２００４−３４３４８３公報）など）。これらは、２つのフレーム画像内それぞれで、何らかの特徴点を複数点検出し、それらの２つのフレーム間の対応付けを取ることで全体の手ぶれベクトル（グローバルベクトル）を求める手法である。もしくは、片方のフレームのみで特徴点を検出し、その特徴点の周囲に関してのみ、もう一方のフレームに対してブロックマッチングを施しても良い。
【００９７】
この特許文献２や特許文献５のアルゴリズムは、回路規模を削減するうえで非常に有効であり、理想的ではあるものの、現実には、２フレームに共通して存在する、画像全体の真に特徴のある特徴点を、どこまで効率的に数を絞って特定出来るかに、その実効性が掛かっている。したがって、この特許文献５や特許文献６のアルゴリズムに比べると、民生機では森羅万象が撮像対象である限り、ロバスト性においてブロックマッチング手法に一日の長があると考えられる。
【００９８】
上述の通り、デジタルカメラなどの撮像装置では、今後益々高密度画素化が進み、高性能化が求められると予想されるが、このような状況においては、静止画の撮影時の手ぶれ補正を、ジャイロ（角速度）センサを用いないセンサレスで実現する意義は非常に大きい。
【００９９】
そこで、上述したように、ブロックマッチングを用いて、センサレスで、手ぶれ動きベクトルを検出し、その検出した動きベクトルを用いて手ぶれ補正を行なうことが有望であるが、ブロックマッチングの現実解として、回路規模、処理速度、ロバスト性を全て満たす提案はなされていないのが現状である。
【０１００】
そして、ブロックマッチング技法において、最大の問題となっているのが、ＳＡＤテーブルの増大である。既に述べたように、デジタルカメラにおいては、そのイメージャが５００万画素以上が前提の昨今において、画素数に比例してＳＡＤテーブルサイズが大きくならざるを得ない上、静止画の場合、３ｆｐｓ程度のため、動画の６０ｆｐｓの手ぶれ範囲と比較して、何１０倍も広いサーチ範囲が必要であり、当該サーチ範囲の拡大は、即ちＳＡＤテーブルの増大と等しいからである。
【０１０１】
多人数評価の結果、３ｆｐｓの静止画の場合における手ぶれ範囲は、全フレームを１００%として±１０％程度であることが判明している。既に高級機では世に出ている１２００万画素を仮定し、現状で提案されている技術のまま、必要なＳＡＤテーブルサイズを見積もると、約８０メガビットである。しかも、現実的な処理速度を満たそうとすると、このＳＡＤテーブル情報を格納するメモリは、内蔵ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））であることが求められる。半導体プロセスルールが進んだとは言え、このサイズは、ほぼ３桁程度、現実的なレベルからはかけ離れている。
【０１０２】
この実施の形態では、以上の点にかんがみ、ブロックマッチングを用いて２フレーム間の動きベクトルを検出する場合において、ＳＡＤテーブルサイズの大幅な削減が可能である画像処理方法および装置を提供するようにする。
【０１０３】
また、前述したブロックマッチングにおける従来の提案手法のうち、特許文献４に記載された画像の縮小変換によるＳＡＤテーブルの削減手法に関して、２つの問題を提起した。画像の縮小変換に伴う処理時間の増大並びにメモリ容量の消費と、画像の縮小変換に伴うエイリアシング回避のための適切なローパスフィルタの実装に伴う回路増大の問題である。以下に説明する実施の形態においては、これらの問題点をも解決したものである。
【０１０４】
［実施の形態の動きベクトル検出処理部１５１で用いる新規なブロックマッチング手法の概要］
この実施の形態においても、上述したブロックマッチングを用いて、２フレーム間の動きベクトルを検出するのであるが、ターゲットブロックと参照ブロック間において求められるＳＡＤ値を、参照ブロックの参照ベクトルに対応して記憶するのではなく、当該参照ベクトルを縮小し、その縮小した参照縮小ベクトルに対応する、当該参照縮小ベクトルの近傍の複数の参照ベクトルに分散加算して記憶するようにする。
【０１０５】
これにより、従来のＳＡＤテーブルに比較して、ＳＡＤテーブルのサイズを大幅に縮小するようにするものである。
【０１０６】
図１１〜図１３は、実施の形態で用いる新規なブロックマッチング手法の概要を説明するための図である。図１３は、従来のＳＡＤテーブルＴＢＬｏと、実施形態で用いる新規なブロックマッチング手法において生成される縮小ＳＡＤテーブルＴＢＬｓとの関係を示すものである。
【０１０７】
この実施形態においても、図８に示したように、従来と同様に、参照フレームにおいて、元フレームに設定されたターゲットブロックの位置を中心としてサーチ範囲が設定される。そして、このサーチ範囲において、前述したような複数の参照ブロックが設定され、各参照ブロック内の画素とターゲットブロック内の対応する画素の輝度値の差分の絶対値の総和、つまり、ＳＡＤ値が求められる。
【０１０８】
従来は、求められたＳＡＤ値は、図１１に示すように、対象となっている参照ブロックの参照ベクトルＲＶに対応するアドレスのテーブル要素ｔｂｌとしてＳＡＤテーブルＴＢＬｏに書き込まれる。
【０１０９】
したがって、従来のブロックマッチングでは、ターゲットブロックと参照ブロックとのフレーム画像上における位置ずれ量を表わす参照ベクトルＲＶと、ＳＡＤテーブルＴＢＬｏの各テーブル要素である参照ブロックのＳＡＤ値とは、１対１に対応している。すなわち、従来のＳＡＤテーブルＴＢＬｏでは、サーチ範囲で取り得る参照ベクトルＲＶと等しい数のＳＡＤ値のテーブル要素数を備えるものとなっている。
【０１１０】
これに対して、この実施形態におけるブロックマッチングでは、図１１および図１２（Ａ）、（Ｂ）に示すように、対象となっている参照ブロックの参照ベクトルＲＶは、縮小率１／ｎ（ｎは自然数）で縮小されて参照縮小ベクトルＣＶとされる。
【０１１１】
ここで、以下の説明においては、説明の便宜上、水平方向縮小倍率と垂直方向の縮小倍率とを同じとしているが、水平方向縮小倍率と垂直方向の縮小倍率とは独立の異なる値でも良い。また、後で述べるが、水平方向縮小倍率と垂直方向の縮小倍率とを独立に任意の自然数分の１として設定できるようにしておく方が、柔軟性も高く好都合である。
【０１１２】
この実施形態においても、前述の従来のブロックマッチング手法について説明したのと同様に、サーチ範囲の中心とされるターゲットブロックの位置を基準位置（０，０）とし、参照ベクトルは、当該基準位置からの画素単位の水平方向および垂直方向のずれ量（ｖｘ，ｖｙ）（ｖｘ、ｖｙは、整数）を指し示すものとされ、参照ベクトルＲＶのそれぞれは、参照ベクトル（ｖｘ，ｖｙ）で表される。
【０１１３】
参照ベクトル（ｖｘ，ｖｙ）が、水平方向および垂直方向のそれぞれについて１／ｎに縮小された参照縮小ベクトル（ｖｘ／ｎ，ｖｙ／ｎ）で示される位置（ｖｘ／ｎ，ｖｙ／ｎ）は、整数ではなく、小数成分が発生することがある。このため、この実施形態では、縮小前の元の参照ベクトルＲＶに対応して求められたＳＡＤ値を、参照縮小ベクトルＣＶに最も近い１つの参照ベクトルに対応するテーブル要素として記憶してしまうと誤差が生じることになる。
【０１１４】
そこで、この実施形態では、まず、参照縮小ベクトルＣＶで示される位置（ｖｘ／ｎ，ｖｙ／ｎ）の近傍の複数の参照ベクトルで示される複数の位置（テーブル要素）を検出する。そして、参照ベクトルＲＶの参照ブロックについて求められたＳＡＤ値は、その検出した近傍の複数の参照ベクトルに対応するＳＡＤ値に分散して加算するようにする。
【０１１５】
この場合に、この実施形態では、参照縮小ベクトルＣＶで示される位置の近傍の周囲の複数個の参照ベクトルで示される位置に対応するテーブル要素ｔｂｌに書き込むべき成分として分散加算する値は、縮小前の元の参照ベクトルＲＶに対応して求められたＳＡＤ値から、参照縮小ベクトルとその近傍の参照ベクトルとのそれぞれが示す位置の関係を用いて、前記近傍の参照ベクトルのそれぞれに対応して分散加算するＳＡＤ値を算出し、算出したＳＡＤ値のそれぞれを、対応する参照ベクトルのテーブル要素成分として加算するようにする。
【０１１６】
ここで、分散するだけでなく加算するというのは、参照縮小ベクトルの近傍の複数の参照ベクトルは、異なる複数の参照縮小ベクトルについて重複して検出されることになるので、１つの参照ベクトルについて、重複したＳＡＤ値は加算するという意味である。
【０１１７】
なお、参照縮小ベクトルＣＶが示す位置（ｖｘ／ｎ，ｖｙ／ｎ）が、参照ベクトルが示す位置に一致する場合、つまり、ｖｘ／ｎおよびｖｙ／ｎの値が整数であるときには、周辺の複数の参照ベクトルを検出する必要はなく、当該位置（ｖｘ／ｎ，ｖｙ／ｎ）を示す参照ベクトルに対応して、縮小前の元の参照ベクトルＲＶに対応して求められたＳＡＤ値を記憶するようにするものである。
【０１１８】
次に、具体例を挙げて、以上の処理を説明する。例えば、ターゲットブロックの位置を基準（０，０）としたときに、図１２（Ａ）に示すように、（−３，−５）の位置を示す参照ブロックＲＶを、水平方向および垂直方向に、１／ｎ＝１／４倍に縮小すると、その参照縮小ベクトルＣＶで示される位置は、図１２（Ｂ）に示すように、（−０．７５，−１．２５）となる。
【０１１９】
したがって、参照縮小ベクトルＣＶで示される位置は小数成分が発生し、参照ベクトルで示される位置とは一致しない。
【０１２０】
そこで、この場合には、図１３に示すように、当該参照縮小ベクトルＣＶが示す位置の近傍位置を示す複数個の近傍参照ベクトルが検出される。図１３の例では、１つの参照縮小ベクトルＣＶに対して、４個の近傍参照ベクトルＮＶ１，ＮＶ２，ＮＶ３，ＮＶ４が検出される。
【０１２１】
そして、前述したように、この実施形態では、参照ベクトルＲＶの参照ブロックについて求められたＳＡＤ値は、これら４個の近傍参照ベクトルＮＶ１，ＮＶ２，ＮＶ３，ＮＶ４に対応するＳＡＤ値として分散加算される。
【０１２２】
この場合に、この実施形態では、４個の近傍参照ベクトルＮＶ１，ＮＶ２，ＮＶ３，ＮＶ４のそれぞれに分散加算するＳＡＤ値は、参照縮小ベクトルＣＶで示される位置Ｐ０（図１３において×印として示す）と、４個の近傍参照ベクトルＮＶ１，ＮＶ２，ＮＶ３，ＮＶ４のそれぞれで示される位置Ｐ１，Ｐ２，Ｐ３，Ｐ４（図１３において○印として示す）との位置関係を用いて線形加重分散値として算出する。
【０１２３】
図１３の例の場合には、参照縮小ベクトルＣＶで示される位置Ｐ０は、周辺近傍の４個の参照ベクトルＮＶ１，ＮＶ２，ＮＶ３，ＮＶ４のそれぞれで示される位置Ｐ１，Ｐ２，Ｐ３，Ｐ４を、水平方向に１：３、垂直方向に３：１に内分する位置にある。
【０１２４】
そこで、縮小前の元の参照ベクトルＲＶに対応して求められたＳＡＤ値をＳαとしたとき、周辺近傍の４個の参照ベクトルＮＶ１，ＮＶ２，ＮＶ３，ＮＶ４のそれぞれで示される位置Ｐ１，Ｐ２，Ｐ３，Ｐ４に対応するＳＡＤテーブル要素に分散加算する値ＳＡＤｐ１，ＳＡＤｐ２，ＳＡＤｐ３，ＳＡＤｐ４のそれぞれは、
ＳＡＤｐ１＝Ｓα×９／１６
ＳＡＤｐ２＝Ｓα×３／１６
ＳＡＤｐ３＝Ｓα×３／１６
ＳＡＤｐ４＝Ｓα×１／１６
となる。
【０１２５】
そして、この実施形態では、求められた値ＳＡＤｐ１，ＳＡＤｐ２，ＳＡＤｐ３，ＳＡＤｐ４のそれぞれを、近傍の４個の参照ベクトルＮＶ１，ＮＶ２，ＮＶ３，ＮＶ４のそれぞれで示される位置Ｐ１，Ｐ２，Ｐ３，Ｐ４に対応するＳＡＤテーブル要素にそれぞれ加算する。
【０１２６】
この実施形態では、以上の処理を、サーチ範囲内のすべての参照ブロックについて行なう。
【０１２７】
以上のことから、この実施形態では、参照ベクトルＲＶを１／ｎに縮小する場合には、全ての参照ベクトルに１対１に対応する従来サイズのＳＡＤテーブルＴＢＬｏに対して、水平方向に１／ｎ、また、垂直方向に１／ｎに縮小した縮小ＳＡＤテーブルＴＢＬｓを用意して、この縮小ＳＡＤテーブルＴＢＬｓのテーブル要素として、参照縮小ベクトルＣＶの近傍の参照ベクトルに対応するＳＡＤ値を求めるようにすれば良い（図１１参照）。
【０１２８】
したがって、この実施形態の場合には、縮小ＳＡＤテーブルＴＢＬｓのテーブル要素の数は、従来のＳＡＤテーブルＴＢＬｏのテーブル要素数の１／ｎ２となり、テーブルサイズを大幅に小さくすることが可能である。
【０１２９】
なお、上述の実施形態の説明においては、参照縮小ベクトルＣＶの近傍の４個の参照ベクトルを検出し、当該４個の近傍参照ベクトルに対応するＳＡＤテーブル要素に対して、対照の参照ブロック（参照ベクトルＲＶ）について算出したＳＡＤ値を線形加重分散加算するようにしたが、参照縮小ベクトルＣＶの近傍の複数の参照ベクトルの選び方およびその近傍参照ベクトルに対応するＳＡＤテーブル要素に対する分散加算の方法は、上述の例に限られるものではない。
【０１３０】
例えば、参照縮小ベクトルＣＶの近傍の９個もしくは１６個の参照ベクトルを検出し、当該９個もしくは１６個の近傍参照ベクトルに対応するＳＡＤテーブル要素に対して、いわゆるキュービック（Ｃｕｂｉｃ）補間による分散加算を行なうようにすれば、より精度は高くなる。しかし、リアルタイム性と演算回路の削減を重視すると、上述した近傍４個の参照ベクトルに対応するテーブル要素への線形加重分散加算が、より有効である。
【０１３１】
この実施形態においても、参照ブロックをサーチ範囲内で遍く移動させ、全ての参照ブロックのＳＡＤ値に対してＳＡＤテーブル（この実施形態では縮小ＳＡＤテーブル）への代入を行う点は、従来手法と同じである。
【０１３２】
ただし、従来は、参照ベクトルとＳＡＤテーブル要素のアドレスが１対１に対応していたため、ＳＡＤテーブルへは単なる代入で済んだが、この実施形態による手法では、参照ブロックについて算出したＳＡＤ値を分散加算させるため、縮小ＳＡＤテーブルにおいて、参照ベクトルとテーブルアドレスは１対１ではない。したがって、この実施形態の手法の場合には、ＳＡＤ値のテーブルアドレスへの単なる代入ではなく、加算して代入する、いわゆる代入加算である必要がある。また、そのため、ＳＡＤテーブル（縮小ＳＡＤテーブル）の各テーブル要素は、最初に初期化（０クリア）しておかなければならない。
【０１３３】
ところで、従来のブロックマッチング手法では、以上のようにして完成させたＳＡＤテーブルにおいて、ＳＡＤ値が最小値となるテーブル要素を探索し、その最小値となるテーブル要素のテーブルアドレスを、参照ベクトルに変換すれば、動ベクトルの検出を完了した。
【０１３４】
これに対して、この実施形態による手法では、ＳＡＤテーブルは、参照ベクトルを縮小した参照縮小ベクトルに対応した縮小ＳＡＤテーブルであるため、当該縮小ＳＡＤテーブルの最小値がそのまま正確な動きベクトルには対応していない。
【０１３５】
もっとも、ある程度の誤差を許す装置の場合には、縮小ＳＡＤテーブルの最小値となるテーブル要素のテーブルアドレスを、参照ベクトルに変換したものを、さらに縮小率１／ｎの逆数倍、つまりｎ倍することで、動きベクトルを検出するようにすることもできる。
【０１３６】
しかし、より正確な動きベクトルを検出するようにする場合には、以下に説明するように、縮小ＳＡＤテーブルのテーブル要素値に対して補間処理を施すことで、元のベクトル精度で、正確な動きベクトルを検出するようにする。
【０１３７】
＜より正確な動きベクトルを検出するための補間処理の第１の例＞
より正確な動きベクトルを検出するための補間処理の第１の例は、縮小ＳＡＤテーブルにおける複数個のＳＡＤテーブル要素値（ＳＡＤ値）を、１つの２次曲面で近似する手法である。この手法は、前述した特許文献１に記載されている手法を縮小ＳＡＤテーブルに対して適用した手法である。
【０１３８】
すなわち、縮小ＳＡＤテーブルにおいて、ＳＡＤ値が最小値となるテーブル要素（整数精度最小値テーブル要素（整数精度テーブルアドレス））と、この整数精度最小値テーブル要素を中心とする複数の整数精度テーブル要素とを求め、それらのテーブル要素のＳＡＤ値を用いて、最小自乗法によりＳＡＤ値の２次曲面を決定し、この２次曲面の最小値となるＳＡＤ値を検出し、当該検出した最小値となるＳＡＤ値に対応する位置（参照フレーム上において、基準位置に対してずれた位置）を検出し、当該検出した位置を小数精度の最小値テーブルアドレス（縮小ＳＡＤテーブルにおいてＳＡＤ値が最小値となるベクトル（最小値ベクトルという）に対応）とする。
【０１３９】
この場合、一意の２次曲面を定めるためには、図１４（Ａ）または（Ｂ）に示すように、整数精度最小値テーブル要素ｔｍと、当該テーブル要素ｔｍをその両側から挟む位置の、当該テーブル要素ｔｍの近傍の４個の整数精度テーブル要素ｔ１，ｔ２，ｔ３，ｔ４が最低限必要である。
【０１４０】
そして、図１５に示すように、参照フレームのサーチ範囲内の縮小ＳＡＤテーブルに対応する参照縮小ベクトルの範囲内において、ターゲットフレームの位置を基準位置（０，０）として、水平方向および垂直方向のずれ量（参照縮小ベクトルに対応）の軸ｖｘ／ｎおよび軸ｖｙ／ｎを考えると共に、これらの軸ｖｘ／ｎおよび軸ｖｙ／ｎに垂直な軸として、ＳＡＤ値の軸を考え、これら３軸からなる座標空間を想定する。
【０１４１】
そして、例えば、整数精度最小値テーブル要素ｔｍのＳＡＤ値と、当該整数精度最小値テーブル要素ｔｍを挟む２個のテーブル要素ｔ１、ｔ３のＳＡＤ値とから、図１５の座標空間において２次曲線を生成する。また、整数精度最小値テーブル要素ｔｍのＳＡＤ値と、当該最小値テーブル要素ｔｍを挟む他の２個のテーブル要素ｔ２、ｔ４のＳＡＤ値とから、図１５の座標空間において、他の２次曲線を生成する。そして、これら２個の２次曲線を含む２次曲面２０１を、最小自乗法により求め、その２次曲面２０１を、図１５に示すように、座標空間において生成する。
【０１４２】
そして、生成されたＳＡＤ値の２次曲面２０１の最小値２０２を検出し、その最小値を取るＳＡＤ値に対応する位置（ｖｘ／ｎ，ｖｙ／ｎ）（図１５の位置２０３）を検出し、当該検出した位置（ｖｘ／ｎ，ｖｙ／ｎ）を、小数精度のテーブル要素（テーブルアドレス）として検出する。そして、検出した小数精度テーブル要素に対応するベクトル（最小値ベクトル）２０４を、図１６に示すようにｎ倍して、元の大きさ精度の動きベクトル２０５を得る。
【０１４３】
例えば、図１７に示すように、参照ベクトルを１／４に縮小した場合における縮小ＳＡＤテーブルＴＢＬｓの、小数精度テーブル要素の最小値アドレスから求められる最小値ベクトル２０４が、（−０．７７７，−１．４９２）の場合に、これらを4倍した（−３．１０８，−５．９６８）が、動きベクトル２０５となる。この動きベクトル２０５は、元画像のスケールにおける動きベクトルを再現したものとなっている。
【０１４４】
以上の説明は、整数精度最小値テーブル要素ｔｍと、その近傍の４テーブル要素を用いた場合として説明したが、ＳＡＤ値の２次曲面を最小自乗法により求めるためには、より多くの複数近傍テーブル要素を用いたほうがよい。そこで、一般には、整数精度最小値テーブル要素ｔｍを中心として、その周囲の水平方向×垂直方向＝ｍ×ｍ個（ｍは３以上の整数）の矩形領域のテーブル要素を用いるようにする。
【０１４５】
しかし、この複数近傍テーブル要素の数は、多ければ良いというものではなく、広い範囲のテーブル要素を用いると、演算量の増加を招く上、画像パターンに依存するローカルミニマムの偽値を使用してしまう可能性も高まるので、適切な複数近傍テーブル要素の数からなる矩形領域のテーブル要素を用いるようにする。
【０１４６】
適切な複数近傍テーブル要素の数からなる矩形領域のテーブル要素の例として、この実施形態では、整数精度最小値テーブル要素ｔｍを中心として、その周囲の水平方向×垂直方向＝３×３個の矩形領域のテーブル要素を用いるようにする例と、整数精度最小値テーブル要素ｔｍを中心として、その周囲の水平方向×垂直方向＝３×３個の矩形領域のテーブル要素を用いるようにする例とについて説明する。
【０１４７】
＜３×３個の矩形領域のテーブル要素を用いる例＞
図１８に、整数精度最小値テーブル要素ｔｍを中心として、その周囲の水平方向×垂直方向＝３×３個の矩形領域（図１８で塗りを付して示してある）のテーブル要素を用いるようにする例を示す。
【０１４８】
この図１８の例の場合には、図１８（Ａ）に示すように、整数精度最小値テーブル要素ｔｍと、その近傍の８個の近傍テーブル要素のＳＡＤ値を用いて、図１８（Ｂ）に示すような２次曲面２０１を、最小自乗法により生成する。そして、生成されたＳＡＤ値の２次曲面２０１の最小値２０２を検出し、その最小値を取るＳＡＤ値に対応する位置（ｖｘ／ｎ，ｖｙ／ｎ）（図１８（Ｂ）の位置２０３）を検出し、当該検出した位置２０３を、小数精度の最小値テーブル要素位置（小数精度最小値テーブルアドレス）として検出する。
【０１４９】
そして、検出した小数精度テーブル要素位置２０３に対応するベクトル（最小値ベクトル）２０４を、前述した図１６に示すようにｎ倍して、元の大きさ精度の動きベクトル２０５を得る。
【０１５０】
ここで、ＳＡＤ値の２次曲面２０１の最小値２０２に対応する位置２０３の算出方法は、次のようになる。すなわち、図１９に示すように、整数精度最小値テーブル要素ｔｍの位置を原点（０，０）とする（ｘ，ｙ）座標を考える。この場合、周辺の８個のテーブル要素の位置は、３個のｘ軸方向の位置、すなわち、ｘ＝−１、ｘ＝０、ｘ＝１と、３個のＹ軸方向の位置、すなわち、ｙ＝−１、ｙ＝０、ｙ＝１との繰り合わせで表され、（−１，−１）、（０，−１）、（１，−１）、（−１，０）、（０，１）、（−１，１）、（０，１）、（１，１）の８位置となる。
【０１５１】
そして、図１９のテーブルにおける各テーブル要素のＳＡＤ値を、Ｓｘｙとする。したがって、例えば、整数精度最小値テーブル要素ｔｍ（位置（０，０））のＳＡＤ値はＳ００と表され、また、右下の位置（１，１）のテーブル要素値のＳＡＤ値はＳ１１と表される。
【０１５２】
すると、整数精度最小値テーブル要素ｔｍの位置を原点（０，０）とする（ｘ，ｙ）座標における小数精度の位置（ｄｘ、ｄｙ）は、図２０に示す（式Ａ）および（式Ｂ）により、求めることができる。
【０１５３】
図２０の（式Ａ）および（式Ｂ）において、
ｘ＝−１のとき、Ｋｘ＝−１
ｘ＝０のとき、Ｋｘ＝０
ｘ＝０のとき、Ｋｘ＝１
となる。また、
ｙ＝−１のとき、Ｋｙ＝−１
ｙ＝０のとき、Ｋｙ＝０
ｙ＝０のとき、Ｋｙ＝１
となる。
【０１５４】
こうして求められた小数精度の位置（ｄｘ，ｄｙ）は、整数精度最小値テーブル要素ｔｍの位置を原点（０，０）とする位置であるので、この小数精度の位置（ｄｘ，ｄｙ）と整数精度最小値テーブル要素ｔｍの位置とから、求めるサーチ範囲の中心位置からの位置２０３を検出することができる。
【０１５５】
［４×４個の矩形領域のテーブル要素を用いる例］
図２１に、整数精度最小値テーブル要素ｔｍをほぼ中心として、その周囲の水平方向×垂直方向＝４×４個の矩形領域のテーブル要素（図２１で塗りを付して示してある）を用いるようにする例を示す。
【０１５６】
この場合に、整数精度最小値テーブル要素ｔｍと、その近傍の８テーブル要素（３×３）や、その近傍の２４テーブル要素（５×５）のように、前記ｍの値が奇数である場合には、整数精度最小値テーブル要素ｔｍは、常に、使用する矩形領域の複数のテーブル要素の中心になるため、使用するテーブル範囲は単純に決定する。
【０１５７】
これに対して、近傍の１５テーブル要素（４×４）のように、ｍが偶数である場合には、整数精度最小値テーブル要素ｔｍは、使用する矩形領域の複数のテーブル要素の中心位置とはならないので、若干の工夫が必要となる。
【０１５８】
つまり、整数精度最小値テーブル要素ｔｍから見て、水平方向に左右の隣接テーブル要素のＳＡＤ値を比較し、小さい値となった側の方向の、当該方向の隣接テーブル要素に隣接するテーブル要素を近傍テーブル要素の４列目として採用する。同様に、垂直方向に上下の隣接テーブル要素のＳＡＤ値を比較し、小さい値となった側の方向の、当該方向の隣接テーブル要素に隣接するテーブル要素を近傍テーブル要素の４行目として採用する。
【０１５９】
図２１の例では、整数精度最小値テーブル要素ｔｍの水平方向に左右の隣接テーブル要素のＳＡＤ値は、「１７７」と「１７３」であるので、ＳＡＤ値が小さい右隣の値「１７３」のテーブル要素のさらに右隣の列を第４列目として採用する。また、整数精度最小値テーブル要素ｔｍの垂直方向に上下の隣接テーブル要素のＳＡＤ値は、「１６８」と「１８２」であるので、ＳＡＤ値が小さい上隣の値「１６８」のテーブル要素のさらに上隣の行を第４行目として採用する。
【０１６０】
そして、図２１の例の場合には、整数精度最小値テーブル要素ｔｍと、その近傍の１５個の近傍テーブル要素のＳＡＤ値を用いて、２次曲面２０１を、最小自乗法により生成する。そして、生成されたＳＡＤ値の２次曲面２０１の最小値２０２を検出し、その最小値を取るＳＡＤ値に対応する位置（ｖｘ／ｎ，ｖｙ／ｎ）（図２１の位置２０３）を検出し、当該検出した位置２０３を、小数精度の最小値テーブル要素位置（小数精度最小値テーブルアドレス）として検出する。
【０１６１】
そして、検出した小数精度テーブル要素位置２０３に対応するベクトル（最小値ベクトル）２０４を、前述した図１６に示すようにｎ倍して、元の大きさ精度の動きベクトル２０５を得る。
【０１６２】
ここで、この例の場合におけるＳＡＤ値の２次曲面２０１の最小値２０２に対応する位置２０３の算出方法は、次のようになる。すなわち、図２２に示すように、整数精度最小値テーブル要素ｔｍの位置を原点（０，０）とする（ｘ，ｙ）座標を考える。
【０１６３】
この例の場合には、１６テーブル要素からなる矩形領域中における整数精度最小値テーブル要素ｔｍの位置に応じて、図２２（Ａ），（Ｂ），（Ｃ），（Ｄ）のような４通りのテーブル要素配置を考える必要がある。
【０１６４】
この場合、周辺の１５個のテーブル要素の位置は、図２２（Ａ），（Ｂ），（Ｃ），（Ｄ）から分かるように、４個のｘ軸方向の位置、すなわち、ｘ＝−１、ｘ＝０、ｘ＝１、ｘ＝２またはｘ＝−２と、４個のＹ軸方向の位置、すなわち、ｙ＝−１、ｙ＝０、ｙ＝１、ｙ＝２またはｙ＝−２との繰り合わせで表される１５位置となる。
【０１６５】
そして、図２２のテーブルにおける各テーブル要素のＳＡＤ値を、Ｓｘｙとする。したがって、例えば、整数精度最小値テーブル要素ｔｍ（位置（０，０））のＳＡＤ値はＳ００と表され、また、位置（１，１）のテーブル要素値のＳＡＤ値はＳ１１と表される。
【０１６６】
すると、整数精度最小値テーブル要素ｔｍおよびその周辺の１６テーブル要素からなる矩形領域中の中心位置を原点（０，０）とする（ｘ，ｙ）座標における小数精度の位置（ｄｘ，ｄｙ）は、図２３に示す（式Ｃ）および（式Ｄ）により、求めることができる。
【０１６７】
ここで、図２３の（式Ｃ）および（式Ｄ）において、ＫｘおよびＫｙは、整数精度最小値テーブル要素ｔｍおよびその周辺の１６テーブル要素からなる矩形領域中の中心位置を原点（０，０）とする（Ｋｘ，Ｋｙ）座標を考えたときの、前記図２２（Ａ），（Ｂ），（Ｃ），（Ｄ）に示した４通りのテーブル要素配置に応じた値となる。このときの（Ｋｘ，Ｋｙ）座標を図２４に示す。
【０１６８】
すなわち、図２２（Ａ）の場合には、
ｘ＝−２のとき、Ｋｘ＝−１．５
ｘ＝−１のとき、Ｋｘ＝−０．５
ｘ＝０のとき、Ｋｘ＝０．５
ｘ＝１のとき、Ｋｘ＝１．５
となる。また、
ｙ＝−２のとき、Ｋｙ＝−１．５
ｙ＝−１のとき、Ｋｙ＝−０．５
ｙ＝０のとき、Ｋｙ＝０．５
ｙ＝１のとき、Ｋｙ＝１．５
となる。
【０１６９】
また、図２２（Ｂ）の場合には、
ｘ＝−２のとき、Ｋｘ＝−１．５
ｘ＝−１のとき、Ｋｘ＝−０．５
ｘ＝０のとき、Ｋｘ＝０．５
ｘ＝１のとき、Ｋｘ＝１．５
となる。また、
ｙ＝−１のとき、Ｋｙ＝−１．５
ｙ＝０のとき、Ｋｙ＝−０．５
ｙ＝１のとき、Ｋｙ＝０．５
ｙ＝２のとき、Ｋｙ＝１．５
となる。
【０１７０】
また、図２２（Ｃ）の場合には、
ｘ＝−１のとき、Ｋｘ＝−１．５
ｘ＝０のとき、Ｋｘ＝−０．５
ｘ＝１のとき、Ｋｘ＝０．５
ｘ＝２のとき、Ｋｘ＝１．５
となる。また、
ｙ＝−２のとき、Ｋｙ＝−１．５
ｙ＝−１のとき、Ｋｙ＝−０．５
ｙ＝０のとき、Ｋｙ＝０．５
ｙ＝１のとき、Ｋｙ＝１．５
となる。
【０１７１】
また、図２２（Ｄ）の場合には、
ｘ＝−１のとき、Ｋｘ＝−１．５
ｘ＝０のとき、Ｋｘ＝−０．５
ｘ＝１のとき、Ｋｘ＝０．５
ｘ＝２のとき、Ｋｘ＝１．５
となる。また、
ｙ＝−１のとき、Ｋｙ＝−１．５
ｙ＝０のとき、Ｋｙ＝−０．５
ｙ＝１のとき、Ｋｙ＝０．５
ｙ＝２のとき、Ｋｙ＝１．５
となる。
【０１７２】
また、図２３の（式Ｃ）および（式Ｄ）におけるΔｘおよびΔｙは、（Ｋｘ，Ｋｙ）座標に対する図２２（Ａ），（Ｂ），（Ｃ），（Ｄ）の各テーブル要素配置における（ｘ，ｙ）座標とのずれ量を表しており、
図２２（Ａ）の場合には、Δｘ＝−０．５、Δｙ＝−０．５、
図２２（Ｂ）の場合には、Δｘ＝−０．５、Δｙ＝０．５、
図２２（Ｃ）の場合には、Δｘ＝０．５、Δｙ＝−０．５、
図２２（Ｄ）の場合には、Δｘ＝０．５、Δｙ＝０．５、
となる。
【０１７３】
こうして求められた小数精度の位置（ｄｘ，ｄｙ）は、整数精度最小値テーブル要素ｔｍの位置を原点（０，０）とする位置であるので、この小数精度の位置（ｄｘ，ｄｙ）と整数精度最小値テーブル要素ｔｍの位置とから、求めるサーチ範囲の中心位置からの位置２０３を検出することができる。
【０１７４】
＜より正確な動きベクトルを検出するための補間処理の第２の例＞
より正確な動きベクトルを検出するための補間処理の第２の例は、縮小ＳＡＤテーブルにおける整数精度最小値テーブル要素を含む複数個の水平方向のテーブル要素のＳＡＤ値を用いて水平方向の３次曲線を生成すると共に、整数精度最小値テーブル要素を含む複数個の垂直方向のテーブル要素のＳＡＤ値を用いて垂直方向の３次曲線を生成し、それぞれの３次曲線の極小値となる位置（ｖｘ，ｖｙ）を検出して、検出した位置を小数精度の最小値アドレスとするものである。
【０１７５】
図２５は、この第２の例を説明するための図である。前述の第１の例と同様にして、整数精度最小値テーブル要素ｔｍと、この整数精度最小値テーブル要素を中心とする複数の整数精度テーブル要素、図２５の例では、４×４＝１６個のテーブル要素を求める（図２５（Ａ）で塗りを付した部分参照）。
【０１７６】
次に、第１の例と同様にして、図２５（Ｂ）に示すように、参照フレームのサーチ範囲内の縮小ＳＡＤテーブルに対応する参照縮小ベクトルの範囲内において、ターゲットフレームの位置を基準位置（０，０）として、水平方向および垂直方向のずれ量（参照縮小ベクトルに対応）の軸ｖｘ／ｎおよび軸ｖｙ／ｎを考えると共に、これらの軸ｖｘ／ｎおよび軸ｖｙ／ｎに垂直な軸として、ＳＡＤ値の軸を考え、これら３軸からなる座標空間を想定する。
【０１７７】
次に、整数精度最小値テーブル要素ｔｍの周囲の１６個のテーブル要素のうち、整数精度最小値テーブル要素ｔｍを含む４個の水平方向のテーブル要素のＳＡＤ値を用いて、前記座標空間に水平方向の３次曲線２０６を生成する。この水平方向の３次曲線２０６の極小値に対応する水平方向の位置ｖｘ／ｎとして、小数精度最小値テーブル要素位置の水平方向位置を検出する。
【０１７８】
次に、整数精度最小値テーブル要素ｔｍの周囲の１６個のテーブル要素のうち、整数精度最小値テーブル要素ｔｍを含む４個の垂直方向のテーブル要素のＳＡＤ値を用いて、前記座標空間に垂直方向の３次曲線２０７を生成する。この垂直方向の３次曲線２０７の極小値に対応する垂直方向の位置ｖｙ／ｎとして、小数精度最小値テーブル要素位置の垂直方向位置を検出する。
【０１７９】
以上により求めた小数精度最小値テーブル要素位置の水平方向の位置と、垂直方向の位置から、小数精度最小値テーブル要素位置（小数精度最小値テーブルアドレス）２０８を検出する。そして、当該検出した小数精度テーブル要素位置２０８に対応するベクトル（最小値ベクトル）２０９を、前述した図１６に示すようにｎ倍して、元の大きさ精度の動きベクトルを得る。
【０１８０】
すなわち、第２の例は、第１の例で説明した方法により、水平方向、垂直方向のそれぞれの４個のテーブル要素を確定し、図２５（Ｂ）に示すように、水平方向、垂直方向のそれぞれで、３次曲線を一意に定める手法である。
【０１８１】
ここで、ＳＡＤ値の３次曲線２０６および２０９の最小値２０２に対応する位置２０８の算出方法は、次のようになる。すなわち、水平方向または垂直方向のいずれかの方向における３次曲線において、最小値の近傍の４点のＳＡＤ値を、前記水平方向または垂直方向のいずれかの方向に沿った順番に、Ｓ０、Ｓ１、Ｓ２、Ｓ３としたとき、小数精度の最小値が、図２６に示す３つの区間Ｒａ，Ｒｂ，Ｒｃのいずれにあるかにより、最小値を取る小数成分ｕを算出する式が異なる。
【０１８２】
ここで、区間ＲａはＳＡＤ値Ｓ０となる位置とＳＡＤ値Ｓ１となる位置との間の区間、ＲｂはＳＡＤ値Ｓ１となる位置とＳＡＤ値Ｓ２となる位置との間の区間、ＲｃはＳＡＤ値Ｓ２となる位置とＳＡＤ値Ｓ３となる位置との間の区間である。
【０１８３】
そして、小数精度の最小値が、図２６に示す区間Ｒａにあるときには、図２７の（式Ｅ）により、整数精度の最小値の位置に対する最小値を取る位置までのずれの小数成分ｕが算出される。
【０１８４】
また、同様に、小数精度の最小値が、図２６に示す区間Ｒｂにあるときには、図２７の（式Ｆ）により、整数精度の最小値の位置に対する最小値を取る位置までのずれの小数成分ｕが算出される。
【０１８５】
さらに、小数精度の最小値が、図２６に示す区間Ｒｃにあるときには、図２７の（式Ｇ）により、整数精度の最小値の位置に対する最小値を取る位置までのずれの小数成分ｕが算出される。
【０１８６】
そして、小数精度の最小値が、図２６に示す３つの区間Ｒａ，Ｒｂ，Ｒｃのいずれにあるかの判別は、次のようにして行なう。
【０１８７】
すなわち、図２８は、その判別を説明するための図である。図２８（Ａ），（Ｂ），（Ｃ）に示すように、先ず、整数精度のＳＡＤ値の最小値Ｓｍｉｎと、２番目に小さい整数精度のＳＡＤ値Ｓｎ２とを検出し、小数精度の最小値は、検出された整数精度のＳＡＤ値の最小値Ｓｍｉｎの位置と、２番目に小さい整数精度のＳＡＤ値Ｓｎ２の位置との間の区間に存在するとして検出する。次に、整数精度のＳＡＤ値の最小値Ｓｍｉｎと、２番目に小さい整数精度のＳＡＤ値Ｓｎ２とが、図２８に示したＳＡＤ値Ｓ０、Ｓ１、Ｓ２、Ｓ３のいずれの位置となっているかにより、検出した区間が区間Ｒａ，Ｒｂ，Ｒｃのいずれであるかの判別を行なう。
【０１８８】
なお、図２８（Ｄ）に示すように、整数精度のＳＡＤ値の最小値ＳｍｉｎがＳＡＤ値のまたは位置にあって、４個のテーブル要素値の端に位置する場合には、最小位置が推定できないとして、この実施形態では、エラーとして扱い、最小値位置の算出は行なわないようにする。もっとも、この図２８（Ｄ）のような場合においても、最小値位置を算出するようにしてもよい。
【０１８９】
以上のようにして、この実施形態によれば、１／ｎ２にスケールダウンした小さいサイズの縮小ＳＡＤテーブルを用いて、元の画像スケールにおける動きベクトルを検出することができる。この場合に、１／ｎ２にスケールダウンした小さいサイズの縮小ＳＡＤテーブルを用いているにも関わらず、従来とほぼ同様のベクトル検出結果が得られることを図２０に示す。
【０１９０】
図２９の横軸は、水平方向または垂直方向の一方についての１次元方向の縮小倍率ｎであり、また、縦軸は、検出される動きベクトルについての誤差（ベクトル誤差）を示している。図２９のベクトル誤差の数値は画素数で表されている。
【０１９１】
図２９において、曲線３０１は、縮小倍率に対するベクトル誤差の平均値である。また、曲線３０２は、縮小倍率に対するベクトル誤差の分散σの３倍値（３σ（９９．７％））を示している。曲線３０３は、曲線３０２の近似曲線を示している。
【０１９２】
図２９は、１次元方向の縮小倍率ｎに対するベクトル誤差を示しているが、ＳＡＤテーブルは２次元のため、図２９に示されるものの２乗の割合でテーブルサイズ（テーブル要素数）が削減されるのに対し、ベクトル誤差は、線形程度にしか増加しないことから、この実施形態による手法の有用性が分かる。
【０１９３】
また、ｎ＝６４（縮小率１／６４）倍の縮小倍率でも、ベクトル誤差は小さく、全く異なる動きベクトルを検出出力とするような破綻は見られないことから、実質、１／４０９６に、ＳＡＤテーブルのサイズを削減可能であると言える。
【０１９４】
また、前述したように、動画の手ぶれ補正においては、リアルタイム性とシステム遅延の削減が強く求められるのに対し、精度については、破綻した全く異なる動きベクトルが検出される場合を除き、ある程度のベクトル検出誤差に対して寛容である。したがって、破綻しないままＳＡＤテーブルのサイズを大きく削減することができる、この実施形態は有用性が高いと言える。
【０１９５】
なお、この実施形態の実際の手ぶれ補正システムでは、前述したように、参照フレーム１０２を複数の領域に分割し、それぞれの分割領域においてターゲット領域ＴＧｉとしてターゲットブロック１０３を設定し、それぞれに対してサーチ範囲１０５を設定して動きベクトル２０５（前述の図５（Ａ）の動きベクトルＭＶｉ）を検出するようにする。これは、フレーム内には動く被写体が含まれる可能性も高いため、例えば、図３０のように参照フレーム１０２の１フレーム内において１６個の動きベクトル２０５を検出し、過去のフレームにおけるそれらの動きベクトル２０５からの推移も加味しながら統計的に処理することで、１フレームについて１つのグローバルベクトル、即ち、フレームの手ぶれベクトルを確定するようにするためである。
【０１９６】
また、この実施形態では、前述もしたように、手ぶれ動きベクトルから光学ズーム分ベクトルを除去するために、１画面内に複数個のターゲットブロックを設定するものである。
【０１９７】
この場合、図３０に示すように、検出したい１６個の動きベクトル２０５の基準位置ＰＯ１〜ＰＯ16のそれぞれを中心とするサーチ範囲ＳＲ１，ＳＲ２，・・・，ＳＲ16を定め、各サーチ範囲において、ターゲットブロックの射影イメージブロックＩＢ１，ＩＢ２，・・・，ＩＢ16を想定する。
【０１９８】
そして、この射影イメージブロックＩＢ１，ＩＢ２，・・・，ＩＢ16と同じ大きさの参照ブロックを設定し、各サーチ範囲ＳＲ１，ＳＲ２，・・・，ＳＲ16内を、設定した参照ブロックを移動させて、上述と同様にして、縮小ＳＡＤテーブルを生成し、各サーチ範囲ＳＲ１，ＳＲ２，・・・，ＳＲ16における動きベクトル２０５を検出するようにする。
【０１９９】
そして、参照フレームにおいて取得した複数個のターゲットブロックについて得られた複数個の動きベクトルを用いて、過去のフレームにおけるそれらの動きベクトルからの推移も加味しながら統計的に処理することで、１フレームについて１つのグローバルベクトル、即ち、フレームの手ぶれベクトルを確定するようにする。
【０２００】
以上説明した実施形態の画像処理方法は、従来手法として説明した特許文献４に記載された画像を縮小変換したサイズで動きベクトルを検出する手法に比べて、次に挙げる２つの点において、大きく異なるメリットを有するものである。
【０２０１】
まず、第一に、この実施形態による手法は、特許文献４に記載された従来手法と異なり、画像を縮小変換するプロセスを全く必要としない。この実施形態による手法においては、参照ブロックについて算出したＳＡＤ値を、ＳＡＤテーブル（縮小ＳＡＤテーブル）に代入加算する際に、同時に縮小倍率に相当するアドレス変換を行なうからである。
【０２０２】
これにより、この実施形態による手法においては、特許文献４に記載された従来手法のような画像の縮小変換のためのロジックも、縮小した画像をメモリに格納する時間およびバンド幅の浪費も、縮小画像をメモリに貼る領域確保も必要ない、というメリットを有する。
【０２０３】
特許文献４に記載された従来手法のもう１つ重要な問題点として、前述も使用にしたように、画像を縮小変換する際のエイリアシング（折り返し歪み）や、低照度ノイズ除去のためのローパスフィルタの存在の問題がある。すなわち、画像縮小する際には、適切なローパスフィルタを通してからリサンプリングを行なわなければならず、さもないと、不要なエイリアシングが発生し、その縮小画像を用いた動きベクトルの精度が著しく損なわれるからである。
【０２０４】
縮小変換の際の理想的なローパスフィルタの特性としては、ｓｉｎｃ関数に類似した関数であることが、理論的に証明されている。ｓｉｎｃ関数自体は、ｓｉｎ（ｘπ）／（ｘπ）の形で表されるカットオフ周波数ｆ／2の無限タップのＦＩＲ（Ｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ）フィルタであるが、縮小倍率１／nのときの理想的なカットオフ周波数ｆ／（２ｎ）のローパスフィルタとしては、ｓｉｎ（ｘπ/ｎ）／（ｘπ/ｎ）と表される。しかし、これもｓｉｎｃ関数の一形態として良い。
【０２０５】
図３１〜図３３の上側には、それぞれ縮小倍率が１／２倍、１／４倍、１／８倍のときのｓｉｎｃ関数（ローパスフィルタの理想特性）の形状を示す。この図３１〜図３３から、縮小倍率が大きくなればなる程、関数がタップ軸方向に拡大して行くことが分かる。つまり、無限タップのｓｉｎｃ関数を主要な係数のみで近似する場合にも、ＦＩＲフィルタのタップ数を増加させなければならないと言える。
【０２０６】
また、一般的に、より低い帯域のカットオフ周波数を実現するフィルタは、フィルタ形状よりもタップ数が、その性能に対して支配的になって行くことが知られている。
【０２０７】
したがって、特許文献４に記載の従来手法の縮小画像を用いる動きベクトル演算手法の場合、画像の縮小倍率が大きくなればなる程、そのＳＡＤテーブル削減効果が大きいにも関わらず、画像生成する際の前処理用フィルタとしてのローパスフィルタは、縮小倍率が大きくなればなる程、コストが増加してしまう、という矛盾を併せ持つのである。
【０２０８】
一般に、高次タップのＦＩＲフィルタを実現する場合、演算ロジックのコストがタップ数の２乗に比例して増加するため、問題となるが、より大きい問題は、垂直フィルタ実現のためのラインメモリ数の増加である。近年のデジタルスチルカメラにおいては、画素数向上に伴うラインメモリのサイズ削減のため、いわゆる短冊処理を行なっているが、例え、１ライン当たりのサイズを削減したとしても、ラインメモリそのものの本数が増加することは、物理レイアウトエリアで換算されるトータルコストを著しく押し上げる。
【０２０９】
以上、述べたように、特許文献４に記載の従来手法の画像縮小によるアプローチは、特に垂直ローパスフィルタの実現において、大きな壁が立ちはだかっていることが分かる。それに対し、この発明の手法は、全く異なる形で簡潔にこの問題を解決している。
【０２１０】
図３１〜図３３の下側に、この実施の形態で用いる新規なブロックマッチング手法におけるローパスフィルタのイメージを示す。この実施の形態で用いる新規なブロックマッチング手法においては、画像縮小処理を伴っていないが、縮小ＳＡＤテーブルの生成演算過程におけるローパスフィルタのイメージを図示したものである。
【０２１１】
図３１〜図３３の下側に示されるように、このローパスフィルタの特性は、ｓｉｎｃ関数の主要係数部分を線形で近似した、シンプルなフィルタ特性ではあるものの、縮小倍率に連動してタップ数が増加していることが分かる。これは、先に述べた、カットオフ周波数が低くなる程、ローパスフィルタの性能はタップ数が支配的になる、という事実に好適である。つまり、実施形態の線形加重分散加算を行なう処理のような、この発明におけるＳＡＤ値の分散加算を行なう処理そのものが、倍率連動の高性能ローパスフィルタを、シンプルな回路で実現していることと等価なのである。
【０２１２】
このローパスフィルタに絡んで、他にもメリットがある。特許文献４記載の従来手法では、ローパスフィルタをかけた後、リサンプリングすることで画像を縮小するが、この時点で相当数の画像情報が失われる。つまり、ローパスフィルタの演算において、画像情報の輝度値の語長は大幅に丸められてメモリに格納され、殆どの画素情報の下位ビットは、縮小後の画像に影響を与えないのである。
【０２１３】
一方、この実施の形態で用いる新規なブロックマッチング手法においては、全ての画素の輝度値の全ビット情報を、遍く平等に使用してＳＡＤ値を演算し、その分散加算値を求めて縮小ＳＡＤテーブルに加算する。縮小ＳＡＤテーブルの各テーブル要素値の語長さえ増やせば、最終的なＳＡＤ値の出力まで、一切の丸め誤差を含まない形で演算可能である。縮小ＳＡＤテーブルの面積はフレームメモリに比較して小さいため、縮小ＳＡＤテーブルの語長拡張は大きな問題にならない。その結果として、縮小ＳＡＤテーブル並びに動きベクトル検出を、高精度に実現できるのである。
【０２１４】
＜動きベクトル検出部１５１における処理動作＞
＜第１の例＞
この動きベクトル検出部１５１における処理動作の第１の例の流れを、図３４および図３５のフローチャートを参照して、以下に説明する。
【０２１５】
先ず、前述の図８あるいは図３０に示したようなサーチ範囲１０５あるいはサーチ範囲ＳＲ１〜ＳＲ１６のそれぞれ内の１つの参照ブロックＩｉに対応する参照ベクトル（ｖｘ、ｖｙ）を指定する（ステップＳ１０１）。前述したように、（ｖｘ，ｖｙ）は、ターゲットブロックのフレーム上の位置（サーチ範囲の中心位置である）を基準位置（０，０）としたときに、指定された参照ベクトルにより示される位置を示し、ｖｘは指定された参照ベクトルによる、基準位置からの水平方向のずれ量成分であり、また、ｖｙは指定された参照ベクトルによる、基準位置からの垂直方向成分のずれ量成分である。そして、前述の従来例で述べたのと同様に、ずれ量ｖｘ、ｖｙは、画素を単位とした値とされている。
【０２１６】
ここで、サーチ範囲の中心位置を前記基準位置（０，０）とし、サーチ範囲を、水平方向には±Ｒｘ、垂直方向には±Ｒｙとしたとき、
−Ｒｘ≦ｖｘ≦＋Ｒｘ、−Ｒｙ≦ｖｙ≦＋Ｒｙ
とされるものである。
【０２１７】
次に、ターゲットブロックＩｏ内の１つの画素の座標（ｘ，ｙ）を指定する（ステップＳ１０２）。次に、ターゲットブロックＩｏ内の指定された１つの座標（ｘ，ｙ）の画素値Ｉｏ（ｘ，ｙ）と、参照ブロックＩｉ内の対応する画素位置の画素値Ｉｉ（ｘ＋ｖｘ，ｙ＋ｖｙ）との差分絶対値αを、前述した（式１）に示したようにして算出する（ステップＳ１０３）。  
そして、算出した差分絶対値αを、当該参照ブロックＩｉの参照ベクトル（ｖｘ，ｖｙ）が指し示すアドレス（テーブル要素）の、それまでのＳＡＤ値に加算し、その加算であるＳＡＤ値を、当該アドレスに書き戻すようにする（ステップＳ１０４）。すなわち、参照ベクトル（ｖｘ，ｖｙ）に対応するＳＡＤ値を、ＳＡＤ（ｖｘ，ｖｙ）と表したとき、これを、前述した（式２）、すなわち、
ＳＡＤ（ｖｘ，ｖｙ）＝Σα＝Σ｜Ｉｏ（ｘ，ｙ）−Ｉｉ（ｘ＋ｖｘ，ｙ＋ｖｙ）｜
・・・（式２）
として算出し、当該参照ベクトル（ｖｘ，ｖｙ）が指し示すアドレスに書き込むようにする。
【０２１８】
次に、ターゲットブロックＩｏ内の全ての座標（ｘ，ｙ）の画素について、上記のステップＳ１０２〜ステップＳ１０４の演算を行なったか否かを判別し（ステップＳ１０５）、ターゲットブロックＩｏ内の全ての座標（ｘ，ｙ）の画素については、未だ、その演算は終了していないと判別したときには、ステップＳ１０２に戻り、ターゲットブロックＩｏ内の次の座標（ｘ，ｙ）の画素位置を指定し、このステップＳ１０２以降の処理を繰り返す。
【０２１９】
以上のステップＳ１０１〜ステップＳ１０５までの処理は、図１０に示したフローチャートのステップＳ１〜ステップＳ５と全く同様である。
【０２２０】
この実施形態では、ステップＳ１０５で、ターゲットブロックＩｏ内の全ての座標（ｘ，ｙ）の画素について、上記の演算を行なったと判別したときには、縮小倍率を１／ｎとして、参照ベクトル（ｖｘ，ｖｙ）を１／ｎに縮小した参照縮小ベクトル（ｖｘ／ｎ，ｖｙ／ｎ）を算出する（ステップＳ１０６）。
【０２２１】
次いで、参照縮小ベクトル（ｖｘ／ｎ，ｖｙ／ｎ）の近傍の複数の参照ベクトル、この例では、上述したように４個の近傍参照ベクトルを検知する（ステップＳ１０７）。そして、検知した４個の近傍参照ベクトルのそれぞれに対応するテーブル要素として分散加算すべき値を、前述したように、参照縮小ベクトルと近傍参照ベクトルとがそれぞれ示す位置の関係に基いて、ステップＳ１０４で求めたＳＡＤ値から、線形加重分散値として求める（ステップＳ１０８）。そして、求めた４個の線形加重分散値を、近傍参照ベクトルのそれぞれに対応するＳＡＤテーブル要素値に加算する（ステップＳ１０９）。
【０２２２】
このステップＳ１０９が終了すると、注目中の参照ブロックについてのＳＡＤ値の算出が終了したと判別して、サーチ範囲内の全ての参照ブロック、すなわち、全ての参照ベクトル（ｖｘ，ｖｙ）についての上記のステップＳ１０１からステップＳ１０９までの演算処理を完了したか否か判別する（図３５のステップＳ１１１）。
【０２２３】
ステップＳ１１１で、未だ、上記の演算処理を完了していない参照ベクトル（ｖｘ，ｖｙ）があると判別すると、ステップＳ１０１に戻り、上記の演算処理を完了していない次の参照ベクトル（ｖｘ，ｖｙ）を設定して、このステップＳ１０１以降の処理を繰り返す。
【０２２４】
そして、ステップＳ１１１で、上記の演算処理を完了していない参照ベクトル（ｖｘ，ｖｙ）はサーチ範囲内になくなったと判別すると、縮小ＳＡＤテーブルが完成したとして、当該完成した縮小ＳＡＤテーブルにおいて、最小値となっているＳＡＤ値を検出する（ステップＳ１１２）。
【０２２５】
次に、当該最小値となっているテーブル要素アドレス（ｍｘ，ｍｙ）のＳＡＤ値（最小値）と、その近傍の複数個、この例では、上述したように１５個の近傍テーブル要素のＳＡＤ値を用いて２次曲面を生成し（ステップＳ１１３）、その２次曲面の最小値のＳＡＤ値が対応する小数精度の位置を示す最小値ベクトル（ｐｘ，ｐｙ）を算出する（ステップＳ１１４）。この最小値ベクトル（ｐｘ，ｐｙ）は、小数精度の最小テーブル要素アドレスに対応している。
【０２２６】
そして、算出した小数精度の位置を示す最小値ベクトル（ｐｘ，ｐｙ）をｎ倍することにより、求めるべく動きベクトル（ｐｘ×ｎ，ｐｙ×ｎ）を算出する（ステップＳ１１５）。
【０２２７】
以上で、１つのターゲットブロックに対する、この実施形態におけるブロックマッチングによる動きベクトルの検出処理は、終了となる。図３０に示したような、１フレームについて分割した領域において、複数個の動きベクトルを検出する場合には、サーチ範囲および縮小倍率１／ｎを再設定して、上述の図３４および図３５に示した処理を、各分割領域のターゲットブロックについて繰り返すものである。
【０２２８】
なお、小数精度の位置を示す最小値ベクトル（ｐｘ，ｐｙ）を算出する方法としては、前述した水平方向および垂直方向の３次曲線を用いる方法を用いても良いことは言うまでもない。
【０２２９】
＜第２の例＞
上述の第１の例においては、１つの参照ブロック（参照ベクトル）について、そのＳＡＤ値を求めた後、そのＳＡＤ値から、参照縮小ベクトルの近傍の複数参照ベクトルについての分散加算値を求め、分散加算処理を行なうようにした。
【０２３０】
これに対して、この第２の例においては、参照ブロック内の各画素の、ターゲットブロックの画素との差分を検出したときに、その差分値から、参照縮小ベクトルの近傍の複数参照ベクトルについての分散加算値（ＳＡＤ値ではなく差分値）を求め、求めた差分値を分散加算処理するようにする。この第２の例によれば、１つの参照ブロック内のすべての画素についての差分演算を終了したときには、縮小ＳＡＤテーブルが生成されることになる。
【０２３１】
図３６および図３７は、この第２の例による動きベクトル検出処理のフローチャートを示すものである。
【０２３２】
図３６のステップＳ１２１〜ステップＳ１２３までの処理は、図３４のステップＳ１０１〜ステップＳ１０３までの処理と全く同様であるので、ここでは、その詳細な説明は省略する。
【０２３３】
この第２の例においては、ステップＳ１２３で、座標（ｘ，ｙ）の画素についての参照ブロックとターゲットブロック間での差分値αが算出すると、次には、縮小倍率を１／ｎとして、参照ベクトル（ｖｘ，ｖｙ）を１／ｎに縮小した参照縮小ベクトル（ｖｘ／ｎ，ｖｙ／ｎ）を算出する（ステップＳ１２４）。
【０２３４】
次に、参照縮小ベクトル（ｖｘ／ｎ，ｖｙ／ｎ）の近傍の複数の参照ベクトル、この例では、上述したように４個の近傍参照ベクトルを検知する（ステップＳ１２５）。そして、検知した４個の近傍参照ベクトルのそれぞれに対応するテーブル要素として分散加算すべき差分値を、前述したように、ステップＳ１２３で求めた差分値αから、参照縮小ベクトルと近傍参照ベクトルとがそれぞれ示す位置の関係に基いて、線形加重分散値（差分値）として求める（ステップＳ１２６）。
【０２３５】
そして、求めた４個の線形加重分散値を、近傍参照ベクトルのそれぞれに対応するテーブル要素値に加算する（ステップＳ１２７）。
【０２３６】
このステップＳ１２７が終了したら、ターゲットブロックＩｏ内の全ての座標（ｘ，ｙ）の画素について、上記のステップＳ１２２〜ステップＳ１２７の演算を行なったか否かを判別し（ステップＳ１２８）、ターゲットブロックＩｏ内の全ての座標（ｘ，ｙ）の画素については、未だ、その演算は終了していないと判別したときには、ステップＳ１２２に戻り、ターゲットブロックＩｏ内の次の座標（ｘ，ｙ）の画素位置を指定し、このステップＳ１２２以降の処理を繰り返す。
【０２３７】
ステップＳ１２８で、ターゲットブロックＩｏ内の全ての座標（ｘ，ｙ）の画素について、上記の演算を行なったと判別したときには、注目中の参照ブロックについてのＳＡＤ値の算出が終了したと判別して、サーチ範囲内の全ての参照ブロック、すなわち、全ての参照ベクトル（ｖｘ，ｖｙ）についての上記のステップＳ１２１からステップＳ１２８までの演算処理を完了したか否か判別する（図３７のステップＳ１３１）。
【０２３８】
ステップＳ１３１で、未だ、上記の演算処理を完了していない参照ベクトル（ｖｘ，ｖｙ）があると判別すると、ステップＳ１２１に戻り、上記の演算処理を完了していない次の参照ベクトル（ｖｘ，ｖｙ）を設定して、このステップＳ１２１以降の処理を繰り返す。
【０２３９】
そして、ステップＳ１２１で、上記の演算処理を完了していない参照ベクトル（ｖｘ，ｖｙ）はサーチ範囲内になくなったと判別すると、縮小ＳＡＤテーブルが完成したとして、当該完成した縮小ＳＡＤテーブルにおいて、最小値となっているＳＡＤ値を検出する（ステップＳ１３２）。
【０２４０】
次に、当該最小値となっているテーブル要素アドレス（ｍｘ，ｍｙ）のＳＡＤ値（最小値）と、その近傍の複数個、この例では、上述したように１５個の近傍テーブル要素のＳＡＤ値を用いて２次曲面を生成し（ステップＳ１３３）、その２次曲面の最小値のＳＡＤ値が対応する小数精度の位置を示す最小値ベクトル（ｐｘ，ｐｙ）を算出する（ステップＳ１３４）。この最小値ベクトル（ｐｘ，ｐｙ）は、小数精度の最小テーブル要素アドレスに対応している。
【０２４１】
そして、算出した小数精度の位置を示す最小値ベクトル（ｐｘ，ｐｙ）をｎ倍することにより、求めるべく動きベクトル（ｐｘ×ｎ，ｐｙ×ｎ）を算出する（ステップＳ１３５）。
【０２４２】
以上で、１つのターゲットブロックに対する、この第２の例におけるブロックマッチングによる動きベクトルの検出処理は、終了となる。図３０に示したような、１フレームについて分割した領域において、複数個の動きベクトルを検出する場合には、サーチ範囲および縮小倍率１／ｎを再設定して、上述の図３６および図３７に示した処理を、各分割領域について繰り返すものである。
【０２４３】
なお、この第２の例においても、小数精度の位置を示す最小値ベクトル（ｐｘ，ｐｙ）を算出する方法としては、前述した水平方向および垂直方向の３次曲線を用いる方法を用いても良いことは言うまでもない。
【０２４４】
＜第３の例＞
図２９に示したように、この実施形態による動きベクトルの検出手法を用いた場合には、参照ベクトルの縮小倍率が１／６４の場合でも、全く異なる動きベクトルを出力するような破綻は見られないことから、実質的に１／４０９６に、ＳＡＤテーブルを削減可能である。
【０２４５】
つまり、１／４０９６に削減した縮小ＳＡＤテーブルを用意しておき、例えば１回目の縮小倍率１／ｎａ＝１／６４で１回目の動きベクトルを検出する。次に、１回目で検出したその動きベクトルを中心にしてサーチ範囲を狭め、２回目の検出を、１回目の縮小倍率１／ｎａよりも小さい２回目の縮小倍率１／ｎｂ、例えば１／ｎｂ＝１／８で行なうようにすればよい。すなわち、１回目と２回目とで縮小倍率を変えて、１回目のベクトル誤差範囲内に収まるように、２回目の縮小倍率を設定すれば、かなりの高精度で、動きベクトル検出が可能である。
【０２４６】
この第３の例の場合における動きベクトル検出処理を、図３８〜図４１のフローチャートを参照しながら説明する。
【０２４７】
この図３８〜図４０に示す第３の例は、基本的な動き検出処理として上述した第１の例を用いている。したがって、図３８のステップＳ１４１〜ステップＳ１４９の処理ステップおよび図３９のステップＳ１５１〜ステップＳ１５５までの処理ステップは、図３４のステップＳ１０１〜ステップＳ１０９の処理ステップおよび図３５のステップＳ１１１〜ステップＳ１１５までの処理ステップと全く同様である。
【０２４８】
この第３の例においては、図３９のステップＳ１５５で動きベクトルを算出したら、そこで処理を終了するのではなく、当該ステップＳ１５５で算出した動きベクトルは、１回目の動きベクトルとして、次のステップＳ１５６において、この１回目で算出した動きベクトルに基づき、同じ参照フレーム内で、サーチ範囲を絞り、また、参照ベクトルの縮小倍率を、１回目の縮小倍率１／ｎａよりも小さい縮小倍率１／ｎｂに変更する。
【０２４９】
すなわち、１回目の処理で、動きベクトルが算出されると、その算出された動きベクトルから、参照フレームと元フレームとの間で、相関のあるブロック範囲がおおよそ検出できる。そこで、その相関のあるブロック範囲を中心とした、絞ったサーチ範囲を設定することができる。そして、１回目よりも縮小倍率を小さくすることで、より誤差の少ない状態で、２回目の動きベクトルの算出が可能になると期待できる。
【０２５０】
こうして、ステップＳ１５６で、絞ったサーチ範囲を設定し、新たな縮小倍率を設定したら、１回目と全く同様にして、２回目の動きベクトルの検出処理を、ステップＳ１５７〜ステップＳ１５８、図４０のステップＳ１６１〜ステップＳ１６８、さらに、図４１のステップＳ１７１〜ステップＳ１７４により実行する。これらのステップの処理は、図３４のステップＳ１０１〜ステップＳ１０９の処理ステップおよび図３５のステップＳ１１１〜ステップＳ１１５までの処理ステップと全く同様である。
【０２５１】
こうして、最終的に、ステップＳ１７４において、２回目の動きベクトルとして、目的とする動きベクトルが得られる。
【０２５２】
以上の例は、動きベクトルの検出方法として、前述した第１の例を用い、それを２段階、繰り返した場合であるが、サーチ範囲をさらに絞り、かつ、必要に応じて縮小倍率を変更しながら、２段階以上、繰り返すようにしても、勿論良い。
【０２５３】
また、動きベクトルの検出方法としては、前述した第１の例の代わりに、前述した第２の例を用いることができることは言うまでもない。また、小数精度の位置を示す最小値ベクトル（ｐｘ，ｐｙ）を算出する方法としては、前述した水平方向および垂直方向の３次曲線を用いる方法を用いても良いことは前述の例と同様である。
【０２５４】
［ズーム操作を撮像時の全体の処理の流れ］
次に、この実施形態の撮像装置において、撮像時にズームスイッチ７を通じてズーム操作がなされたときの処理の流れを、図４２のフローチャートを参照して説明する。この図４２の処理は、ユーザが動画の撮像時にズームスイッチ７を操作したときにスタートから開始される。
【０２５５】
撮像時にズームスイッチ７がユーザにより操作されると、そのズームスイッチ７の操作入力をＣＰＵ１が受け付ける（ステップＳ１８１）。そして、ＣＰＵ１は、受け付けたズーム操作入力に基づいて、ズーム機構部８のズームモータ（ズームアクチュエータ）を制御するズーム制御信号ＣＴＬを生成し、ズーム機構部８に供給する（ステップＳ１８２）。
【０２５６】
そして、ＣＰＵ１は、撮像画像のフレーム単位でズームポジションを更新して保存する（ステップＳ１８３）。次に、ＣＰＵ１は、更新したフレームについて、図５（Ａ）に示したように、各ターゲット領域ＴＧｉについての動きベクトルＭＶｉを、動きベクトル検出処理部１５１から取得する（ステップＳ１８４）。
【０２５７】
次に、ズーム機構部８におけるズーム制御処理の遅延に基づく撮像画像上でのズームの動き遅延（画像遅延）分を加味して、過去のズームポジションからのズーム速度の変化、時間変移などの変動率を用いて、各ターゲット領域ＴＧｉにおける光学ズームによる画像の動きベクトル成分（光学ズーム分ベクトル）ＺＶｉを算出する（ステップＳ１８５）。このステップＳ１８５は、前述した図１の光学ズーム分ベクトル算出部１５２での処理に相当する。
【０２５８】
次に、ステップＳ１８４で取得した動きベクトルＭＶｉと、光学ズーム分ベクトルＺＶｉとの差分を演算して、差分のベクトルＶｅｃｉを求める（ステップＳ１８６）。このステップＳ１８６は、前述した図１の光学ズーム分減算部１５３での処理に相当する。
【０２５９】
次に、ステップＳ１８６で求めた差分のベクトルＶｅｃｉから、グローバル手ぶれベクトルＧＶｅｃを求める（ステップＳ１８７）。このステップＳ１８７は、図１のグローバル手ぶれベクトル算出部１５５の処理に相当する。
【０２６０】
次に、図２の解像度変換部１６は、手ぶれ動きベクトル検出部１５からのグローバル手ぶれベクトルＧＶｅｃを受け取り、当該受け取ったグローバル手ぶれベクトルにしたがって、画像メモリ部４のフレームメモリ４２の、手ぶれに応じてずれたアドレス位置から画像データを切り出すようにする（ステップＳ１８８）。
【０２６１】
［この発明による撮像画像の歪み補正装置の第２の実施形態］
上述した撮像画像の歪み補正装置の第１の実施形態が適用された撮像装置における手ぶれ動きベクトル検出部１５の動きベクトル検出処理部１５１においては、図２に示したように、画像メモリ部４は、２枚の画像、つまり元フレームの画像と、参照フレームの画像とが、両方共、フレームメモリ４１，４２に格納されていることを前提にしていた。このため、動きベクトルの検出タイミングは、１フレーム分遅延されることとなる。
【０２６２】
これに対して、この第２の実施形態では、撮像素子１１からの垂れ流し画像データを参照フレームとする構成として、ラスタースキャンのストリームデータに対して、リアルタイムでＳＡＤ値を演算することができるようにしている。第２の実施形態は、第１の実施形態とは手ぶれ動きベクトル検出部１５および画像メモリ部４の構成が異なるのみで、その他の構成は、第１の実施形態と全く同様である。
【０２６３】
なお、手ぶれ動きベクトル検出部１５の構成も、基本的に図１の構成を有することは第２の実施形態においても同様であり、ただし、動きベクトル検出処理部１５１における動きベクトルの検出処理動作が第１の実施形態とは異なるものである。
【０２６４】
図４３に、この第２の実施形態の場合における撮像装置の構成例のブロック図を示す。この図４３から分かるように、撮像信号処理系１０の構成ブロックおよびその他の構成ブロックは、図１に示した第１の実施形態と全く同様であるが、この第２の実施形態においては、図４３に示すように、画像メモリ部４は１個のフレームメモリ４３からなる。
【０２６５】
この第２の実施形態では、元フレームがフレームメモリ４３に格納されており、参照フレームは、データ変換部１４からストリームで手ぶれ動きベクトル検出部１５に入力されるものとされる。手ぶれ動きベクトル検出部１５は、第１の実施形態では、２個のフレームメモリ４１，４２に格納された２枚の画像データを用いて、参照ブロックについてのＳＡＤ値を求める処理をするようにした。これに対して、この第２の実施形態では、図３３に示すように、データ変換部１４からのストリーム画像データを参照フレームの画像データとすると共に、フレームメモリ４３に格納されている画像データを元フレームの画像データとして、参照ブロックについてのＳＡＤ値を求めるようにする。ＳＡＤ値は、例えば輝度信号成分Ｙを用いて求めるのは前述の第１の実施形態と同様である。輝度信号成分のみでなく、色差信号成分をも含めて、ＳＡＤ値を求めてももちろんよい。
【０２６６】
このように、この第２の実施形態の手ぶれ動きベクトル検出部１５では、データ変換部１４からのストリーム画像データを参照フレームの画像データとする。このため、ある入力画素に対して、この画素を要素とする参照ブロックが、参照フレーム上に同時に複数存在することになる。図４４は、そのことを説明するための図である。
【０２６７】
すなわち、参照フレーム１０２上のサーチ範囲１０５における入力画素Ｄｉｎは、例えば、参照ベクトル１０７１が対応する参照ブロック１０６１の左側に位置する画素であると共に、参照ベクトル１０７２が対応する参照ブロック１０６２の右上に位置する画素となっていることが、この図４４から分かる。
【０２６８】
したがって、入力画素Ｄｉｎが参照ブロック１０６１に属するとした場合には、ターゲットブロック１０３の画素Ｄ１を読み出して、その差分を算出する必要がある。また、入力画素Ｄｉｎが参照ブロック１０６２に属するとした場合には、ターゲットブロック１０３の画素Ｄ２を読み出して、その差分を算出する必要がある。
【０２６９】
図４４および後述の図４５では簡単のため、２つの参照ブロックのみを図示しているが、実際上は、入力画素Ｄｉｎを、その参照ブロック内の画素とする参照ブロックは多数となる。
【０２７０】
この第２の実施形態の場合のＳＡＤ演算は、入力画素Ｄｉｎの輝度値Yと、各々の参照ブロック内の入力画素Ｄｉｎの位置に対応した、ターゲットブロック内の画素の輝度値Ｙとの差分絶対値を算出し、その算出した差分絶対値を、それぞれの参照ブロックに対応した参照ベクトルに従って、ＳＡＤテーブルに加算してゆくようにして行なう。
【０２７１】
例えば、入力画素Ｄｉｎが参照ブロック１０６１に属するとした場合における、ターゲットブロック１０３の画素Ｄ１と入力画素Ｄｉｎとの差分絶対値は、図４５に示すように、ＳＡＤテーブル１０８の参照ベクトル１０７１が対応するＳＡＤテーブル要素１０９２のＳＡＤ値に加算して書き込むようにする。また、入力画素Ｄｉｎが参照ブロック１０６２に属するとした場合における、ターゲットブロック１０３の画素Ｄ２と入力画素Ｄｉｎとの差分絶対値は、図３５に示すように、ＳＡＤテーブル１０８の参照ベクトル１０７２が対応するＳＡＤテーブル要素１０９２のＳＡＤ値に加算して書き込むようにする。
【０２７２】
したがって、サーチ範囲内の全ての領域の入力画素が入力されて処理が終了したときには、ＳＡＤテーブルが完成することになる。つまり、リアルタイムでＳＡＤテーブルが作成されるものである。
【０２７３】
データ変換部１４からのデジタル撮像信号の最初の１フレームは、フレームメモリ４３に格納されるのみで、動きベクトル検出部１５ではＳＡＤ値を求める等の演算処理は、行われない。
【０２７４】
そして、最初の１フレームがフレームメモリ４１に格納されると、次の、フレームのデジタル撮像信号からは、動きベクトル検出部１５は、参照ブロックについてのＳＡＤ値の演算を開始する。この場合、動きベクトル検出部１５は、図４４および図４５を用いて説明したように、データ変換部１４からの画像データと、当該画像データと比較すべき画像が含まれると考えられるすべての参照ブロックの画像データを、システムバス２を介してフレームメモリ４３から読み出して、それぞれについてのＳＡＤ値を求め、求めたＳＡＤ値を、それぞれの参照ブロックに対応するＳＡＤテーブルアドレスのＳＡＤ値に加算するようにする。
【０２７５】
そして、この第２の実施形態においても、動きベクトル検出処理部１５１は、例えば図３０に示したような１フレームにおける複数個のサーチ範囲のそれぞれにおけるＳＡＤテーブルを作成して、そのＳＡＤテーブルにおけるＳＡＤ値の最小値を求めて、各サーチ範囲についての動きベクトル（サーチ範囲毎動きベクトル）をそれぞれ求める。
【０２７６】
そして、動きベクトル検出部１５は、１フレームにおける複数個のサーチ範囲のすべてのサーチ範囲毎動きベクトルから、過去の動きベクトルに対する推移関係をも考慮して、１フレームについての動きベクトルであるグローバル動きベクトルを検出する。そして、動きベクトル検出部１５は、その検出結果であるグローバル動きベクトルを、その後段の解像度変換部１６に制御信号として伝達する。
【０２７７】
解像度変換部１６は、動きベクトル検出部１５から受け取ったグローバル動きベクトルにしたがって、フレームメモリ４３に格納されている遅延フレームの画像データを切り出しながら、必要な解像度および画像サイズに変換する処理をする。このフレームメモリ４３からのグローバル動きベクトルにしたがった切り出しにより、変換後の画像は、手ぶれが除去された画像となる。
【０２７８】
図４５の説明は、従来手法に、リアルタイムＳＡＤ算出処理を適用した場合である。この第２の実施形態においては、図４５において、ＳＡＤテーブル１０８の参照ベクトル１０７１または１０７２が対応するＳＡＤテーブル要素１０９１または１０９２のＳＡＤ値として、算出した差分絶対値のそれぞれを、加算して書き込むのではなく、前述した第１の実施形態のように、参照ベクトル１０７１，１０７２を縮小倍率１／ｎで縮小した参照縮小ベクトルを算出し、その参照縮小ベクトルの近傍の複数の参照ベクトルに、前記算出した差分絶対値から、それぞれを分散加算するための分散加算値を求め、求めた分散加算値を、前記近傍の複数の参照ベクトルに対応するＳＡＤ値に加算するようにするものである。
【０２７９】
ＳＡＤテーブル（縮小ＳＡＤテーブル）が完成した後の正確な動きベクトルを検出するための処理は、この第２の実施形態においても、前述した第１の実施形態で述べた手法と全く同様にして、２次曲面や、水平方向および垂直方向の３次曲線を用いた手法を用いることができる。
【０２８０】
［第２の実施形態における動きベクトル検出処理部１５１の処理動作例］
動きベクトル検出処理部１５１における動きベクトルの検出処理動作の例の流れを、図４６および図４７のフローチャートを参照して、以下に説明する。なお、この図４６および図４７のフローチャートの処理は、説明の便宜上、１フレームの撮像画像データについての処理として示している。
【０２８１】
先ず、手ぶれ動きベクトル検出部１５では、入力画像のフレーム（参照フレーム）の任意の位置（ｘ，ｙ）の画素データＤｉｎ（ｘ，ｙ）を受け取る（ステップＳ２０１）。次に、当該画素の位置（ｘ，ｙ）を含む複数の参照ブロックの一つに対応する参照ベクトル（ｖｘ，ｖｙ）を設定する（ステップＳ２０２）。
【０２８２】
次に、設定された参照ベクトル（ｖｘ，ｖｙ）の参照ブロックＩｉの当該画素値Ｉｉ（ｘ，ｙ）と、これに対応するターゲットブロックＩｏ内の画素値Ｉｏ（ｘ−ｖｘ，ｙ−ｖｙ）との差分の絶対値αを算出する（ステップＳ２０３）。すなわち、差分絶対値αは、
α＝｜Ｉｏ（ｘ−ｖｘ，ｙ−ｖｙ）−Ｉｉ（ｘ，ｙ）｜    ・・・（式３）
として算出される。
【０２８３】
次に、縮小倍率を１／ｎとして、参照ベクトル（ｖｘ，ｖｙ）を１／ｎに縮小した参照縮小ベクトル（ｖｘ／ｎ，ｖｙ／ｎ）を算出する（ステップＳ２０４）。
【０２８４】
次いで、参照縮小ベクトル（ｖｘ／ｎ，ｖｙ／ｎ）の近傍の複数の参照ベクトル、この例では、上述したように４個の近傍参照ベクトルを検知する（ステップＳ２０５）。そして、検知した４個の近傍参照ベクトルのそれぞれに対応するテーブル要素として分散加算すべき値（差分絶対値）を、前述したように、参照縮小ベクトルと近傍参照ベクトルとがそれぞれ示す位置の関係に基いて、ステップＳ２０３で求めた差分絶対値αから、線形加重分散値として求める（ステップＳ２０６）。そして、求めた４個の線形加重分散値を、近傍参照ベクトルのそれぞれに対応するＳＡＤテーブル要素値に加算する（ステップＳ２０７）。
【０２８５】
次に、入力画素Ｄｉｎ（ｘ，ｙ）を含む参照ブロックの全てについての上記ステップＳ２０２〜ステップＳ２０７の演算を行なったか否か判別し（ステップＳ２０８）、当該入力画素Ｄｉｎ（ｘ，ｙ）を含む他の参照ブロックがあると判別したときには、ステップＳ２０２に戻り、当該入力画素Ｄｉｎを含む他の参照ブロック（ｖｘ，ｖｙ）を設定し、このステップＳ２０２〜ステップＳ２０７の処理を繰り返す。
【０２８６】
また、ステップＳ２０８で、入力画素Ｄｉｎ（ｘ，ｙ）を含む参照ブロックの全てについての上記ステップＳ２０２〜ステップＳ２０７の演算を行なったと判別したときには、サーチ範囲内の全ての入力画素Ｄｉｎについて、上記の演算ステップの処理を終了したか否か判別し（図４７のステップＳ２１１）、終了していないと判別したときには、ステップＳ２０１に戻り、サーチ範囲内の次の入力画素Ｄｉｎを取り込み、このステップＳ２０１以降の処理を繰り返す。
【０２８７】
そして、ステップＳ２１１で、サーチ範囲内の全ての入力画素Ｄｉｎについて、上記の演算ステップの処理を終了したと判別すると、縮小ＳＡＤテーブルが完成したとして、当該完成した縮小ＳＡＤテーブルにおいて、最小値となっているＳＡＤ値を検出する（ステップＳ２１２）。
【０２８８】
次に、当該最小値となっているテーブル要素アドレス（ｍｘ，ｍｙ）のＳＡＤ値（最小値）と、その近傍の複数個、この例では、上述したように１５個の近傍テーブル要素のＳＡＤ値を用いて２次曲面を生成し（ステップＳ２１３）、その２次曲面の最小値のＳＡＤ値が対応する小数精度の位置を示す最小値ベクトル（ｐｘ，ｐｙ）を算出する（ステップＳ２１４）。この最小値ベクトル（ｐｘ，ｐｙ）は、小数精度の最小テーブル要素アドレスに対応している。
【０２８９】
そして、算出した小数精度の位置を示す最小値ベクトル（ｐｘ，ｐｙ）をｎ倍することにより、求めるべく動きベクトル（ｐｘ×ｎ，ｐｙ×ｎ）を算出する（ステップＳ２１５）。
【０２９０】
なお、この例においても、小数精度の位置を示す最小値ベクトル（ｐｘ，ｐｙ）を算出する方法としては、前述した水平方向および垂直方向の３次曲線を用いる方法を用いても良いことは前述の例と同様である。
【０２９１】
また、前述の第１の実施形態の第３の例と同様にして、この第２の実施形態においても、サーチ範囲を絞りながら、かつ、必要に応じて縮小倍率を変更しながら、２段階以上、縮小ＳＡＤテーブルを用いた動きベクトル検出処理を繰り返すようにしても、勿論良い。
【０２９２】
この第２の実施形態のメリットは、フレームメモリを、第１の実施形態に比べて１枚分削減できることと、フレームメモリに入力画像を格納する時間を短縮できることである。メモリ削減の効果は言うまでもないが、処理時間の短縮も、近年、重要視されて来ている。特に動画を扱う場合、そのままシステム遅延の短縮に繋がるため、システム遅延が原因で生じる、実際の被写体とパネル表示画像の間に生じる違和感をなるべく無くすことは、ユーザへの訴求効果が高い。
【０２９３】
［その他の実施形態および変形例］
なお、手ぶれ動きベクトル検出部１５は、上述の例に示したようなハードウエアにより構成することできるし、また、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）を用いて構成することもできる。さらには、ＣＰＵ１によりソフトウエア処理とすることもできる。また、同様に、補正解像度変換部１６も、ハードウエアにより構成することできるし、また、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）を用いて構成することもできる。さらには、ＣＰＵ１によりソフトウエア処理とすることもできる。
【０２９４】
また、上述の第１および第２の実施形態の説明では、動きベクトル検出処理部１５１における参照ベクトルの縮小倍率は水平方向と垂直方向とで同一としたが、水平方向と、垂直方向とで、参照ベクトルの縮小倍率を異ならせるようにしても良い。
【０２９５】
また、上述の実施形態においては、参照ブロックおよびターゲットブロック内の全ての画素についてＳＡＤ値を求めるようにしてもよいが、上述の実施形態のように、例えばｋ個（ｋは自然数）おきの画素のみを用いてＳＡＤ値を求めるようにするとよい。
【０２９６】
また、第２の実施形態として説明したリアルタイム処理の動きベクトル検出処理部１５１では、演算コストと処理時間削減を目的として、ターゲットブロック内の代表点のみを参照ブロック内でサーチする、ＳＡＤ演算がしばしば行われているが、この発明においても、元フレームを格納するフレームメモリには、フレーム画像内におけるそれぞれのブロックの代表点のみを格納することにより、大幅なメモリ削減が図れる。また、フレームメモリとは別に、小規模な代表点メモリをローカルで持ち、グローバルメモリ（ＤＲＡＭ）の帯域削減を図っても良い。
【０２９７】
また、上述の第１、第２の実施形態では、画素の差分値およびＳＡＤ値は、画素の輝度値Ｙのみを用いて演算するものとしたが、動きベクトル検出のために、輝度値Ｙだけでなく、色差成分Ｃｂ／Ｃｒを用いてもよい。また、データ変換部１４で輝度値Ｙおよび色差成分Ｃｂ／Ｃｒに変換される前のＲＡＷデータを対象として、動きベクトル検出処理を行ってもよい。
【０２９８】
なお、上述の説明では、ＳＡＤ演算処理は、参照ベクトルを縮小してＳＡＤ演算処理を行う新規な方法を用いる場合について説明したが、図８〜図１０を用いて説明した従来のＳＡＤ演算処理を用いることができることは言うまでもない。
【０２９９】
また、上述の実施形態では、１フレームに設定するターゲット領域の数は、水平×垂直＝４×４＝１６個としたが、これに限られるものではないことはもちろんである。
【０３００】
また、上述の実施形態の説明は、撮像装置を操作するユーザにより生起される手ぶれによる画像歪みを補正する場合であったが、ユーザにより生起される手ぶれのみではなく、撮影時に、撮像素子に対して、その撮像画像の水平方向および／または垂直方向の位置的変化を生じるように加わった振動などの偏倚力に起因して生じる画像歪みをも補正することができることは言うまでもない。
【０３０１】
また、上述の実施形態は、Ｘ−Ｙアドレス型の固体撮像素子としてＣＭＯＳイメージャを用いた場合であるが、撮像素子としてはＣＭＯＳイメージャに限定されるものでないことは勿論である。
【０３０２】
また、この発明は、撮像装置（カメラ）にのみ適用されるものではなく、例えば携帯電話端末、情報携帯端末などに撮像素子が取付けられて、画像を撮影する場合にも適用できるものである。さらに、ユーザが手で持って撮影を行なう装置にのみに適用されるものではなく、パーソナルコンピュータやテレビ電話装置などの固定的に設置される装置に対して外力が加わって振動等が生じる場合、また、自動車などに撮像素子が取付けられて、画像を撮影する場合にも適用可能である。
【図面の簡単な説明】
【０３０３】
【図１】この発明による撮像画像の歪み補正方法の第１の実施形態が適用された撮像装置の手ぶれ動きベクトル検出部の構成例を示すブロック図である。
【図２】この発明による撮像画像の歪み補正方法の第１の実施形態が適用された撮像装置の構成例を示すブロック図である。
【図３】撮像装置における光学ズーム制御を説明するための図である。
【図４】この発明による撮像画像の歪み補正方法の実施形態の説明のために用いる図である。
【図５】この発明による撮像画像の歪み補正方法の実施形態の説明のために用いる図である。
【図６】この発明による撮像画像の歪み補正方法の実施形態の説明のために用いる図である。
【図７】この発明による撮像画像の歪み補正方法の実施形態の説明のために用いる図である。
【図８】ブロックマッチングにより動きベクトルを検出する処理を説明するための図である。
【図９】ブロックマッチングにより動きベクトルを検出する処理を説明するための図である。
【図１０】ブロックマッチングにより動きベクトルを検出する処理動作を説明するためのフローチャートを示す図である。
【図１１】この発明の実施形態における動きベクトルを検出する処理の概要を説明するための図である。
【図１２】この発明の実施形態における動きベクトルを検出する処理の概要を説明するための図である。
【図１３】この発明の実施形態における動きベクトルを検出する処理の概要を説明するための図である。
【図１４】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図１５】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図１６】この発明の実施形態における動きベクトルを検出する処理の概要を説明するための図である。
【図１７】この発明の実施形態における動きベクトルを検出する処理の概要を説明するための図である。
【図１８】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図１９】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図２０】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図２１】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図２２】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図２３】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図２４】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図２５】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図２６】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図２７】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図２８】この発明の実施形態における動きベクトルを検出する方法において、正確な動きベクトルを検出するための処理の例を説明するための図である。
【図２９】この発明の実施形態における動きベクトルを検出する方法の処理性能を説明するための図である。
【図３０】この発明の実施形態における動きベクトルを検出する方法の実施形態の概要を説明するための図である。
【図３１】この発明の実施形態における動きベクトルを検出する方法の特徴を、従来の手法と比較して説明するために用いる図である。
【図３２】この発明の実施形態における動きベクトルを検出する方法の特徴を、従来の手法と比較して説明するために用いる図である。
【図３３】この発明の実施形態における動きベクトルを検出する方法の特徴を、従来の手法と比較して説明するために用いる図である。
【図３４】この発明による撮像装置の第１の実施形態における動きベクトル検出処理の第１の例を説明するためのフローチャートの一部を示す図である。
【図３５】この発明による撮像装置の第１の実施形態における動きベクトル検出処理の第１の例を説明するためのフローチャートの一部を示す図である。
【図３６】この発明による撮像装置の第１の実施形態における動きベクトル検出処理の第２の例を説明するためのフローチャートの一部を示す図である。
【図３７】この発明による撮像装置の第１の実施形態における動きベクトル検出処理の第２の例を説明するためのフローチャートの一部を示す図である。
【図３８】この発明による撮像装置の第１の実施形態における動きベクトル検出処理の第３の例を説明するためのフローチャートの一部を示す図である。
【図３９】この発明による撮像装置の第１の実施形態における動きベクトル検出処理の第３の例を説明するためのフローチャートの一部を示す図である。
【図４０】この発明による撮像装置の第１の実施形態における動きベクトル検出処理の第３の例を説明するためのフローチャートの一部を示す図である。
【図４１】この発明による撮像装置の第１の実施形態における動きベクトル検出処理の第３の例を説明するためのフローチャートの一部を示す図である。
【図４２】この発明による撮像装置の第１の実施形態における全体の処理動作の説明するためのフローチャートの一部を示す図である。
【図４３】この発明による撮像画像の歪み補正方法の第２の実施形態が適用された撮像装置の構成例を示すブロック図である。
【図４４】撮像装置の第２の実施形態における動きベクトル検出処理を説明するための図である。
【図４５】撮像装置の第２の実施形態における動きベクトル検出処理を説明するための図である。
【図４６】撮像装置の第２の実施形態における動きベクトル検出処理の例を説明するためのフローチャートの一部を示す図である。
【図４７】撮像装置の第２の実施形態における動きベクトル検出処理の例を説明するためのフローチャートの一部を示す図である。
【図４８】撮像画像における手ぶれを説明するための図である。
【図４９】光学ズームがなされたときの撮像画像の動きを説明するための図である。
【図５０】光学ズームがなされたときに、手ぶれが生じたときの撮像画像の動きの例を説明するための図である。
【符号の説明】
【０３０４】
１０１…元フレーム、１０２…参照フレーム、１０３…ターゲットブロック、１０５…サーチ範囲、１０６…参照ブロック、１０７…参照ベクトル、１５…手ぶれ動きベクトル検出部、１６…歪み補正解像度変換部、１９…画像ぼけ補正処理部、４１〜４３…フレームメモリ、１５１…動きベクトル検出処理部、１５２…光学ズーム分ベクトル算出部、１５３…光学ズーム分ベクトル減算部、ＴＢＬｓ…縮小ＳＡＤテーブル、ＴＢＬｏ…従来のＳＡＤテーブル、ＲＶ…参照ベクトル、ＣＶ…参照縮小ベクトル、ＮＶ１〜ＮＶ４…近傍参照ベクトル
【図１】
0004655957.tif 000002
【図２】
0004655957.tif 000003
【図３】
0004655957.tif 000004
【図４】
0004655957.tif 000005
【図５】
0004655957.tif 000006
【図６】
0004655957.tif 000007
【図７】
0004655957.tif 000008
【図８】
0004655957.tif 000009
【図９】
0004655957.tif 000010
【図１０】
0004655957.tif 000011
【図１１】
0004655957.tif 000012
【図１２】
0004655957.tif 000013
【図１３】
0004655957.tif 000014
【図１４】
0004655957.tif 000015
【図１５】
0004655957.tif 000016
【図１６】
0004655957.tif 000017
【図１７】
0004655957.tif 000018
【図１８】
0004655957.tif 000019
【図１９】
0004655957.tif 000020
【図２０】
0004655957.tif 000021
【図２１】
0004655957.tif 000022
【図２２】
0004655957.tif 000023
【図２３】
0004655957.tif 000024
【図２４】
0004655957.tif 000025
【図２５】
0004655957.tif 000026
【図２６】
0004655957.tif 000027
【図２７】
0004655957.tif 000028
【図２８】
0004655957.tif 000029
【図２９】
0004655957.tif 000030
【図３０】
0004655957.tif 000031
【図３１】
0004655957.tif 000032
【図３２】
0004655957.tif 000033
【図３３】
0004655957.tif 000034
【図３４】
0004655957.tif 000035
【図３５】
0004655957.tif 000036
【図３６】
0004655957.tif 000037
【図３７】
0004655957.tif 000038
【図３８】
0004655957.tif 000039
【図３９】
0004655957.tif 000040
【図４０】
0004655957.tif 000041
【図４１】
0004655957.tif 000042
【図４２】
0004655957.tif 000043
【図４３】
0004655957.tif 000044
【図４４】
0004655957.tif 000045
【図４５】
0004655957.tif 000046
【図４６】
0004655957.tif 000047
【図４７】
0004655957.tif 000048
【図４８】
0004655957.tif 000049
【図４９】
0004655957.tif 000050
【図５０】
0004655957.tif 000051