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