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