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