(57)【特許請求の範囲】
【請求項１】
撮像した複数の画像を入力する画像データ入力手段と、
前記入力された画像をもとに当該画像の特定範囲の縮小画像を作成する検出用画像生成手段と、
前記縮小画像を用いて作成された所定の解像度レベルまでの多重解像度画像データを夫々基準画像か又は比較画像かを識別可能に保存する多重解像度画像データ保存手段と、
少なくとも最低解像度Ｌの基準画像と比較画像に対して、基準画像と比較画像との間の移動量を引数とするエネルギー関数を定義し、基準画像の所定範囲に対してマッチング処理を実行して前記エネルギー関数をもとに基準画像と比較画像間の動きデータを平行移動量として算出する２次元全範囲マッチング処理部と、前記２次元全範囲マッチング処理部で算出した動きデータを用いて、さらに解像度レベルの高い画像データに対してブロックマッチング処理によって基準画像と比較画像間の動きデータとしてアフィンパラメータを算出する解像度別動きデータ算出部とを有する動きデータ演算手段と、を具備する画像処理装置であって、
前記２次元マッチング処理部は、局所領域のサイズを決定する定数に基づいて、あるピクセルの周囲の平均明度に対する相対的な明度である局所明度を演算して生成された局所明度画像によって、基準画像と比較画像間の動きデータを算出することを特徴とする画像処理装置。
【請求項２】
前記動きデータ演算手段によって算出された動きデータを用いて入力画像の基準画像に対して、比較画像の各ブロック間のずれ度合いをもとに２次元座標のＸ方向またはＹ方向のずれ量を演算し、ブロック間のずれ量が所定の閾値以下になるように基準画像をブロック分割して各ブロックの２次元の移動量を演算して、該移動量に基づいてブロックごとに重ね合せや合成処理を実行する画像合成手段を備えたことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記検出用画像生成手段、前記多重解像度画像データ保存手段、および前記動きデータ演算手段を有し、基準撮影フレームからの動きデータを演算する動きデータ検出部と、当該動きデータと基準フレーム変換データとをもとに一次フレーム変換データを演算するフレーム変換データ結合部と、当該一次フレーム変換データを予め定められた収束定数に基づいて、補正フレームが撮影フレームのちょうど中心を表示するような変換となる標準フレーム変換データに近づけることによって二次フレーム変換データを演算するフレーム変換データ標準化部と、この二次フレーム変換データをもとに該フレームが撮影フレームの枠内に有るか否かを判定し枠内になければ、枠内に納まるように前記二次フレーム変換データを補正するフレーム変換データ適正化部と、このフレーム変換データ適正化部によって算出されたフレーム変換データを用いて基準撮影フレームと基準フレーム変換データを更新する更新部とを有するフレーム変換データ生成手段と、
フレーム変換データ適正化部で補正されたフレーム変換データを用いて、補正フレームを生成するフレーム補正手段と、
を備えたことを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記フレーム変換データ適正化部は、補正フレーム矩形の４つの角の各座標点が、フレーム変換データによる変換によって撮影フレーム矩形内に位置するか否かを判定し、いずれかの座標点が撮影フレーム矩形外に位置する場合は、前記補正フレーム矩形が撮影フレーム矩形内に納まる最適なフレーム変換データを演算して、当該補正フレームを合成することを特徴とする請求項３記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、静止画や動画を品質よく撮影することのできる技術に係り、特にカメラで撮影した画像をコンピュータ処理によって、手ぶれ画像から鮮明な画像を生成したり、被写体を的確に捉えて手ぶれによる画面の揺れを防止して目的の被写体に追従して動画撮影をすることのできる画像処理装置を提供することを目的とする。
【背景技術】
【０００２】
従来、動画フレーム間の動きベクトルを計算して、この動きベクトルと基準画像によって、動画データを作成することによって、膨大な動画データのデータ量の削減が行われている。
【０００３】
一方、カメラ等の撮像装置で撮影した複数の静止画間の動きベクトルを計算して、手ぶれの補正をする技術が開示されている。（たとえば、特許文献１を参照）。
【０００４】
より正確に動画を再現したり、撮影時の手ぶれを補正するためには、動きベクトルの信頼度を上げる必要がある。この動きベクトルの信頼度を上げるための技術として、特許文献４ないし６では、動きベクトル間の相関の高いものを信頼度が高いとして処理している。
【０００５】
また、動きベクトルの正確性を維持しつつ、より計算量を削減するための技術として、画像の特徴点を把握し、その特徴点についての動きベクトルを計算したり、各特徴点を結んで多角形を構成して、比較すべき画像間の特徴点の移動によりその多角形がどのように変形したかを認識して他の点の移動位置を推定するというものがある。（たとえば、特許文献２，３を参照）。
【０００６】
また、画像の回転など動き検出の自由度を増やして、精度の高い補正処理を効率的に行うために動きデータとしてアフィンパラメータを用いた技術が提案されている。（たとえば、特許文献７参照）。
【特許文献１】特開２００３−７８８０７号公報
【特許文献２】特開平１１−５０６５７６号公報
【特許文献３】特開平１０−３４１４４５号公報
【特許文献４】特開平９−７３５４０号公報
【特許文献５】特開平６−３１１５０２号公報
【特許文献６】特開平６−１５３１４６号公報
【特許文献７】特開平９−９８４２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、動きベクトルやアフィンパラメータ等の動きデータを生成する機能を専用のハードウェアでなく、演算機能を有する計算機で実現しようとした場合、いかに計算機の負荷を軽減しつつ、精度の高い動きデータを算定するかということが問題となる。
【０００８】
本発明は、上述のかかる事情に鑑み、データ量が少なく、計算機に負荷をかけないよう比較的単純な処理によって精度の高い動きデータの算定が可能であり、その技術を用いて写真撮影時の手ぶれを補正して、品質の良い写真を作成したり、動画撮影時に被写体を的確に捉えることのできる画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明に係わる画像処理装置は、撮像した複数の画像を入力する画像データ入力手段と、前記入力された画像をもとに当該画像の特定範囲の縮小画像を作成する検出用画像生成手段と、前記縮小画像を用いて作成された所定の解像度レベルまでの多重解像度画像データを夫々基準画像か又は比較画像かを識別可能に保存する多重解像度画像データ保存手段と、前記多重解像度画像データのうち、基準画像について画像のコーナまたはエッジをもとに一または二以上の特徴点座標を抽出する画像特徴点群抽出手段と、前記多重解像度画像データを用いて、基準画像と比較画像間の動きデータを算出する動きデータ演算手段と、を具備し、前記動きデータ演算手段は、最低解像度Ｌから特定解像度Ｍ（Ｍ≦Ｌ）までの基準画像と比較画像に対して、基準画像上の座標と比較画像上の座標とを引数とする第一のエネルギー関数を定義し、基準画像の所定範囲の全画像座標に対してマッチング処理を実行して前記第一のエネルギー関数をもとに動きデータを算出する２次元全範囲マッチング処理部と、特定解像度Ｍよりも解像度レベルの高い画像データに対しては、入力された動きデータを初期値として、前記特徴点群抽出手段で抽出された基準画像上の特徴点座標を引数として、第ニのエネルギー関数に基づいてブロックマッチング処理を実行し、このブロックマッチングのエネルギーまたは特徴点の強さをもとに定められた信頼度と、基準画像の特徴点間の動きデータまたは当該動きデータによる座標をもとに定められた相関度とを用いて基準画像と比較画像間の動きデータを算出する解像度別動きデータ算出部と、を備え、前記２次元全範囲マッチング処理部で算出された解像度Ｍの画像データに対する動きデータを前記解像度別動きデータ算出部へ入力する動きデータの初期値情報として使用し、解像度Ｍよりもさらに解像度の高い解像度Ｍ−１の画像データに対する動きデータを計算し、当該動きデータを前記解像度別動きデータ算出部へ入力する動きデータの初期値情報として使用して、さらに解像度の高い画像データに対する動きデータを算出するという処理を所定回数または所定条件成立まで繰り返すことによって動きデータを算出することを特徴とする。
【００１０】
本発明では、基準画像と比較画像の多重解像度画像を作成し、解像度の低い画像に対しては、まず全範囲マッチングを行って、画像間の２次元のずれを検出し、解像度の比較的高い画像に対しては、ブロックマッチングによって、特徴点ごとのずれを検出する。また、最低解像度から順に高解像度に対して、前段階で求めた動きデータを初期値として用いて、その動きデータをより高解像度の画像によって補正することによって、精度の高いものにしていく。
【００１１】
なお、上記の検出用画像生成手段において、「特定範囲」は、予め定められた一定の範囲のみならず、条件によって動的に変化する場合も含まれる。また、上記の画像処理装置は、動きデータの検出を主機能としているため、たとえば、動きデータ検出装置など他の名称に置き換えることも可能であり、本発明は装置名称に限定されず、上記の特徴を有する装置全てを含む趣旨である。
【００１２】
好ましくは、解像度別動きデータ算出部によって算出される動きデータは、アフィンパラメータを用いると良い。少なくとも最終出力をアフィンパラメータで求めることによって、多自由度の動き検出が可能となる。
【００１３】
また、本発明では、低解像度の画像データに対して２次元（Ｘ軸、Ｙ軸）方向の動きを全範囲マッチングにより検出し、一定の解像度以上の画像データに対してはブロックマッチングを使用し、さらに動きデータとしてアフィンパラメータを用いるので、最低解像度でのマッチングミスの可能性を低減し、回転などのずれ成分を含むような動きも効率よく計算することができる。
【００１４】
また、本発明に係わる画像処理装置は、前記動きデータ演算手段によって算出した動きデータを用いて入力画像の基準画像に対して、比較画像の各ブロック間のずれ度合いをもとに２次元座標のＸ方向またはＹ方向のずれ量を演算し、ブロック間のずれ量が所定の閾値以下になるように基準画像をブロック分割して各ブロックの２次元の移動量を演算して、該移動量に基づいてブロックごとに重ね合せや合成処理を実行する画像合成手段を備えたことを特徴とする。
【００１５】
たとえば、回転によるブレをＸ軸、Ｙ方向のずれとして近似し、画像を合成する際にブロックの大きさを判定して、所定値以下のずれになるようにブロック分割して重ね合わせ処理を行うようにする。
【００１６】
また、本発明に係わる画像処理装置では、前記画像合成手段は、基準画像内において予め指定された矩形の４つの角の各座標点が、動きデータによる変換によって比較画像内に位置するか否かを判定し、いずれかの座標点が比較画像外に位置する場合、または、比較画像座標系における各ブロック間のずれ量が所定値以上となる場合は、前記比較画像の重ね合せを行わないことを特徴とする。
【００１７】
より好ましくは、前記画像合成手段は、各ブロックにおける基準画像と比較画像間、または合成画像と比較画像間の差分、たとえばブロック内のピクセルごとの輝度および／または色の違いを演算し、当該差分に基づいて、各ブロックの基準画像への重ね合せの比率を変えるようにする。この差分は、輝度および／または色の違いの二乗和あるいは絶対値でもよい。これらの重み付き平均画像を作成するようにすれば、たとえば、動く物体を薄くして、静止している物体のみを鮮明にすることができる。
【００１８】
また、本発明に係わる画像処理装置は、撮像した複数の画像を入力する画像データ入力手段と、前記入力された画像をもとに当該画像の特定範囲の縮小画像を作成する検出用画像生成手段と、前記検出用画像生成手段で作成された画像を所定の解像度レベルまでの多重解像度データを演算する多重解像度生成手段と、基準撮影フレームと入力画像をもとに基準撮影フレームからの動きデータを演算する動きデータ検出部と、当該動きデータと基準フレーム変換データとをもとに一次フレーム変換データを演算するフレーム変換データ結合部と、当該一次フレーム変換データを標準化してニ次フレーム変換データを演算するフレーム変換データ標準化部と、この二次フレーム変換データをもとに該フレームが撮影フレームの枠内に有るか否かを判定し枠内になければ、枠内に納まるように前記二次フレーム変換データを補正するフレーム変換データ適正化部と、このフレーム変換データ適正化部によって算出されたフレーム変換データを用いて基準撮影フレームと基準フレーム変換データを更新する更新部とを有するフレーム変換データ生成手段と、を備えたことを特徴とする。
【００１９】
本発明では、動画撮影時の基準フレームをリアルタイムに更新することができ、また、この基準フレームに対して手ブレを補正した鮮明な画像を生成することができる。
【００２０】
また、本発明に係わる画像処理装置は、補正フレーム矩形の４つの角の各座標点が、フレーム変換データによる変換によって撮影フレーム矩形内に位置するか否かを判定し、いずれかの座標点が撮影フレーム矩形外に位置する場合は、前記補正フレーム矩形が撮影フレーム矩形内に納まる最適なフレーム変換データを演算して、当該補正フレームを合成するフレーム合成手段を備えたことを特徴とする。
【００２１】
これにより、適正なフレーム変換データのみを出力することができる。なお、最適なフレーム変換データの演算のしかたとして、たとえば、矩形面積が最大になるようにする等がある。
【発明の効果】
【００２２】
本発明によれば、最低解像度レベルの画像データによって、最初に全範囲マッチングによって２次元の動きデータを計算し、順次、解像度の高い画像データを用いることによって多自由度の動きデータを計算するので、最低解像度レベルでのマッチングミスを防止して、精度の良い動きデータを効率よく算出することができる。また、ずれ量の少ないブロックに分割して、動きを補償した画像を合成することに鮮明な画像を生成することが出来る。これによって、写真撮影時の手ぶれを補正して、品質の良い写真を作成したり、動画撮影時に被写体を的確に捉えることが可能となる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施形態を説明する。
<第１の実施形態>
図１は、本実施形態に係わる動きデータ検出装置１０のブロック図である。この装置１０は、複数の画像を入力して、その画像間の動きデータを演算するものである。
【００２４】
ここで、動きデータ検出装置１０は、入力した画像データをもとに動きベクトルやアフィンパラメータなどの動きデータを計算する演算処理部１３、入力した画像データや動きデータを保存する記憶部１５を備えている。
【００２５】
また、演算処理部１３は、カメラなどの撮像装置あるいは通信ネットワークや記憶媒体など外部から画像データを入力して記憶部１５に保存する画像データ入力手段（機能）３１、入力された各画像データをもとに動きデータを検出するための元となる画像（検出用画像）を作成する検出用画像生成手段（機能）３２、フィルタ処理を施して複数の解像度レベルの画像データを作成する多重解像度画像生成手段（機能）３３、画像の一または二以上の特徴点を抽出する画像特徴点群抽出手段（機能）３４、多重解像度画像データや画像特徴点データを用いて動きデータを計算する動きデータ演算手段（機能）３５、算出した動きデータを出力する動きデータ出力手段（機能）３６を有している。なお、各手段３１から３６は、ＣＰＵの機能として処理実行されるものである。また、各手段は、分割して設ける必要は無く、それぞれ機能を兼ねるようにしてもよい。たとえば、動きデータ演算手段３５は動きデータ出力手段３６の機能を兼ねて実現することも可能である。
【００２６】
ここで、記憶部１５で保存される各データの説明をする。
画像データは、幅w, 高さh としたときw×h 個の格子を持ち、各格子に画素値（例えばRGB, YCbCr）の値を持つデータである。
【００２７】
また、画像特徴点群データは、画像データの特徴点データの集合であり、各画像特徴点はその座標値(x,y) や、その特徴点の強さを表す特徴量などから構成される。
【００２８】
なお、画像の動きデータとしては、通常アフィンパラメータや動きベクトルを用いる。なお、動きベクトルとして、複数の動きベクトル点、動きベクトル線、動きベクトル領域から構成される動きベクトルメッシュデータを用いるようにしても良い。
【００２９】
次に上記の装置１０を動作させることによって動きデータを計算する方法（動きデータ演算方法）の説明を行う。
（画像データ入力処理）
まず、外部から入力された画像データは、画像データ入力手段３１によって、入力画像データ保存手段５０に保存される。
【００３０】
（検出用画像生成処理）
次に、検出用画像生成手段３２が起動され、入力画像から動きデータを検出するための元となる画像（検出用画像）が作成される。
【００３１】
検出用画像生成手段３２は起動されると、入力画像を縮小したサムネイル画像を作成し、さらに画像の端から所定の割合（たとえば、左右、上下１０％ずつ）カットした切り抜き画像を生成し、必要ならばアスペクト比の補正を行う。また、この補正した画像から輝度画像を生成し、検出用画像データ保存手段５２に保存する。
【００３２】
（多重解像度画像生成処理）
次に、この検出用画像は、多重解像度画像生成手段３３によって、フィルタ処理されて低解像度の画像が作成され多重解像度画像データ保存手段５３に格納される。
【００３３】
多重解像度画像生成手段３３は起動されると検出用画像に対して、エッジ画像の生成処理等を行い、解像度レベル０の画像を作成し、さらに、各解像度レベル０の画像に対してぼかしフィルタや平均値フィルタなどを適用して解像度の低い画像データを作成し、これら作成した多重解像度画像データを多重解像度画像データ保存手段５３に格納する。なお、多重解像度画像は、ぼかしフィルタ等を使用する代わりに、一定の比率で縮小することによって解像度を段階的に低くするようにしても良い。図２は、多重解像度画像生成手段３３によって作成された多重解像度画像の例である。解像度レベルの数字が大きくなるにしたがって（図２（ａ）から（ｄ）の方向）、解像度が低くなっている。
【００３４】
（画像特徴点群抽出処理）
次に画像特徴点群抽出手段３４を起動して、エッジやコーナの強さによって画像特徴点を抽出する。なお、画像特徴点がある位置に生成されると、その近傍に別の画像特徴点は生成されないようにすると良い。これは画像中のある位置の動きデータは、その近傍の動きデータとほぼ同じ値を持つことが予想され、また画像全体の動きを検出するためには、全体にまんべんなく画像特徴点を分布させるのが良いからである。
【００３５】
（動きデータ演算処理）
動きデータ演算手段３５は、多重解像度画像データ保存手段５３に保存されている基準画像と比較画像を用いて、次の手順に従って動きデータを計算する。
【００３６】
<ステップＳ１>多重解像度マッチングの再粗解像度（最低解像度）においては全範囲マッチングを行い、2枚の画像間の平行移動量(dx, dy)を求める。再粗解像度をせいぜい数十ピクセル×数十ピクセル程度にすれば、全範囲マッチングを用いてもそれほど計算コストがかからず、また平行移動量(dx, dy)のみ求めればよいのは、手ブレ補正においては平行移動量が全体の動きの中で支配的であるからである。
【００３７】
図３は、全範囲マッチの処理ブロック図である。
まず局所明度画像生成モジュールが、以下の式で画像の局所的な明るさを算出する。
【数１】
0004620607.tif 000002
【００３８】
ここで、I(x, y) は入力画像の座標 (x, y) における明るさ、I'(x, y) は出力局所明度画像の座標 (x, y)における明るさ、s は局所領域のサイズを決める定数である。この式で与えられる局所明度は、あるピクセルの周囲の平均明度に対する相対的な明度となる(図４参照)。
実際の入力画像IとI'の例を図５に示す。ここで、図５（ａ）は、入力画像Iの例であり、図５（ｂ）は画像I'の例である。
この処理により、手ブレで光のあたり具合が変化したり、品質の悪い撮像レンズ等によって生じる画像周囲部の暗さを補正することができる。
【００３９】
次に、最適移動量計算モジュールで画像I1 から画像I2  への移動量  (dx, dy) を求める。まずI1からI2  へ (dx, dy) 移動したときの移動エネルギー E(dx, dy) を以下のように定義する。
【数２】
0004620607.tif 000003
【００４０】
ここでWは画像の幅、Hは画像の高さを表すものとする。E(dx, dy) は  (dx, dy)  ずらしたときの画像I1とI2の共通部分（図６の斜線部分）における、ピクセル値の差分の絶対値を平均したものになる。ここで、E(dx, dy)はピクセル値の差分の二乗和を平均したものなどにしてもよい。
【００４１】
E(dx, dy) が小さければ小さいほど画像同士が似ているということであり、最適移動量計算モジュールはその値が最小となるような(dx, dy) を出力する。
以上の処理によって、動きデータとして画像Ｉ１から画像Ｉ2への移動量（ｄｘ、ｄｙ）を求める。
【００４２】
<ステップＳ２>次に、この動きデータを解像度Ｌ−１の画像の動きデータの初期値とし、ブロックマッチング処理を実行する。
【００４３】
なお、解像度Ｌ−１以上は、動きデータとして、最小二乗法によってアフィンパラメータを求めるようにする。
【００４４】
この場合の式は以下の如くである。
【数３】
0004620607.tif 000004
ここで、
【数４】
0004620607.tif 000005
【数５】
0004620607.tif 000006
【数６】
0004620607.tif 000007
【００４５】
上記の処理によって求めたアフィンパラメータを、次の解像度における動きデータの初期値として用いる。
【００４６】
<ステップＳ３>次に最終解像度（通常は解像度レベル０）か否かを判断して、最終解像度でなければ、Ｌ＝Ｌ−１として、すなわち、解像度レベルが一つ上の解像度の画像データについてステップＳ２以降の処理を繰り返す。最終解像度になれば、その動きデータを動きデータ保存手段５５に保存する。
【００４７】
なお、上記のステップＳ１の処理において、全範囲マッチング処理は最低解像度Ｌについてのみ行う場合について説明したが、最低解像度Ｌからそれよりも解像度レベルの高い特定解像度Ｍ（Ｍ≦Ｌ）まで全範囲マッチング処理を行い、それよりも解像度レベルの高い解像度Ｍ−１からステップＳ２以降のブロックマッチング処理を行うようにしても良い。
【００４８】
（動きデータ出力処理）
動きデータ出力手段３６は、動きデータ演算手段３５によって演算され動きデータファイル５５に保存されている動きデータを外部の記憶装置や通信ネットワークあるいは他のプログラムモジュールへ出力する。
【００４９】
なお、上述の動きデータ検出装置１０は、画像データを記憶媒体やネットワークを介して取り込んでスタンドアロンで動作させることもできるが、カメラなどの種々の機器に取り込んでリアルタイムで画像処理をさせることもできる。たとえば、本装置をカメラに組み込んで手ぶれ補正装置付きカメラを実現することができる。
【００５０】
本実施形態の形態によれば、基準画像と比較画像の多重解像度画像を作成し、解像度の低い画像に対しては、まず全範囲マッチングを行って、画像間の２次元のずれを検出し、解像度の比較的高い画像に対しては、アフィンパラメータを用いてブロックマッチング処理によって、多自由度のずれを検出する。また、最低解像度から順に高解像度に対して、前段階で求めた動きデータを初期値として用いて、その動きデータをより高解像度の画像によって補正することによって、精度の高いものにしていくので、解像度の低い場合のマッチングミスを防止して、精度の高い動きデータを効率よく演算することができ、デジタルカメラなどの撮影時の手ブレの補正を高速に行うことができる。
【００５１】
<第２の実施形態>
図７は、本実施の形態に係わる画像処理装置１のブロック図である。ここで、画像処理装置１は、動きデータ検出装置１０、この装置１０で作成された動きデータと複数の入力画像データを用いて画像を合成する画像合成手段３７、および、作成された合成画像を出力する合成画像出力手段３８を有している。各手段３７、３８は、ＣＰＵの機能として処理実行されるものである。
【００５２】
次に本実施形態の画像処理装置１の動作を説明する。なお、動きデータ検出装置１０の動作については第１の実施形態と同様であるので説明を割愛する。
（画像合成処理）
一枚の画像を変形する処理や、複数枚の画像を変形して重ね合わせる処理を行うときには、図８のように、変形後の画像の位置へ変形前の画像の位置からピクセルの色を取得する処理が必要になる。その際に、（７）式のような座標変換式を使って、変形前の画像を斜めに走査するなどの処理が必要になり、３次元グラフィックスエンジンのようなハードウェアでなく、カメラモジュールなどに積まれている矩形領域のＤＭＡアクセスに特化したハードウェアでは処理できないという問題がある。
【数７】
0004620607.tif 000008
【００５３】
なお、（７）式はアフィン変換によって変形する場合の例である。右辺の(x,y)は変形後の画像（基準画像）のピクセルの位置、左辺の（X,Y）が変形前の画像（重ね合わせる画像）のピクセルの位置を表している。
本実施形態では、図９のように細かいブロックに分けブロック単位で転送処理を実行する。これにより、上記のようなハードウェアでも処理できるようになる。
【００５４】
以下、画像合成手段３７によるこのブロック転送処理について説明する。
変形前の画像におけるブロックの位置を求めるには、変形後の画像（基準画像）のブロック開始位置(xs,ys)、及び、終了位置(xe,ye)からブロックの中心の位置(xc,yc)を求め（（８）式）、それに対して、（７）式のような座標変換式を適用し（（９）式）、変形前の画像のブロック開始位置(Xs,Ys)、及び、終了位置(Xe,Ye)を計算する（（１０）式）。
【数８】
0004620607.tif 000009
【数９】
0004620607.tif 000010
【数１０】
0004620607.tif 000011
【００５５】
この方法は図１０の右図のようにレンズ歪み補正などにも適用できる。レンズ歪み情報をメッシュ動きベクトルデータとして持ち、そのメッシュ動きベクトルデータを使用してブロックの中心位置の動きベクトル(uc,vc)を求め、（９）式の代わりに以下の式を使用する。
【数１１】
0004620607.tif 000012
【００５６】
ただし、この方法で処理を行うと合成後の画像の画質が悪くなってしまうという問題がある。画質の悪化で最も問題なのは、図１１の左の画像（図１１（ａ））のようにブロックの継ぎ目でずれが生じ、ブロック間の断層が見えてしまう現象である。これはブロックサイズを小さくしてもそれほど軽減されない。図１１の左の画像はブロックサイズ１２８ピクセル四方、図１１の中央の画像（図１１（ｂ））はブロックサイズ１６ピクセル四方で、４枚を重ね合わせた場合である。
【００５７】
このような現象は、図１２のように重ね合わせる画像ごとにブロックの境目の位置を変えることで緩和することができる。（４枚の画像を境目の位置を変えながら合成したものが図１１の右の画像（図１１（ｃ））である。ブロックサイズは１２８ピクセル四方）重ね合わせる画像が少ない場合や、一枚の画像を変形する場合は、同じ画像を境目の位置を変えながら数度重ね合わせることにより、同じように現象を緩和することができる。
【００５８】
変形の度合いによってはブロックのサイズをそれほど小さくする必要はなく、逆に変形が激しいために処理しきれない場合も出てくる場合もある。そのような場合は、アダプティブにブロックのサイズを変更することによって、画質の悪化を防ぐとともに、より効率よく処理することができるようになる。図１０の左図（図１０（ａ））のように全てのブロックのサイズを一律に変更することもでき、また、図１０の右図（図１０（ｂ））のように変形の激しい部分だけブロックのサイズを小さくすることもできる。
【００５９】
例えば、アフィン変換のパラメータによってブロックサイズを決定する式は以下のようになる。
【数１２】
0004620607.tif 000013
【００６０】
ここで、sはあらかじめ設定する値で、0より大きい1近辺の値を選択する。処理能力が高い場合はsを小さく設定できるが、ある程度小さくすると、それより小さくしてもあまり効果はなくなる。ハードウェアの制限によって2ピクセル、あるいは、4ピクセル単位でしか動かせない場合、sを小さくしてもそれほど効果はないので、sを大きく（例えば2など）設定した方が処理速度の面で有利になる。
【００６１】
（補正失敗判定処理［はみ出し］）
複数枚の画像を合成して一枚の画像を作る際、重ね合わせが行われなかった部分だけS/N比が悪くなるという問題がある。こういったことを防ぐためには、切り抜いてS/N比を保つ必要があるが、その切り抜く矩形内ではS/N比が変わらないこと、すなわち、重なっている画像の枚数が同じであることを保証する必要がある。あらかじめ切り抜く矩形が指定されている場合は、切り抜く矩形からはみ出てしまうような画像は補正失敗と判定し、重ね合わせないようにする。このときの判定方法は後述する第３の実施形態の動画手ぶれ補正と同じものを使用する。
【００６２】
（補正失敗判定処理［回転］）
また、重ね合わせを上記ブロック合成処理で行う場合で回転などの度合いが激しいときは、合成画像が汚くなる、あるいは、アダプティブに処理する場合はブロックのサイズが小さくなりすぎて十分な速度が出せない場合がある。その場合は（１２）式で求められる最適なブロックサイズがある一定の値min_blocksizeより上であれば成功、下であれば失敗、という方法で失敗判定を行う。
blocksize > min_blocksize      ・・・  （１３）
【００６３】
本実施形態によれば、合成画像を小ブロックに分割して、それぞれ転送開始位置、終了位置を設定して転送するので、回転などのずれ成分を有する場合でも、画像データ合成時のメモリ転送においてＤＭＡなどのハードウェアの効率的な利用を可能とし、高速に鮮明な合成画像を生成することができる。また、複数の画像を重ね合せて合成画像を作成する場合、転送ブロックの分割位置を少し（１〜数ピクセル程度）ずらすことによって、ブロックの境界を目立たなくすることができる。また、変形（ずれ）の大きさによってブロックのサイズを変更することによって、画像のゆがみを補正することができる。
【００６４】
また、ブロック内の輝度および／または色の違いの大きさによって、各ブロックの合成の割合を変えるようにしても良い。たとえば、違いが大きい場合は、合成の割合を小さくすることによって、動いている物体を目立たなくすることができる。逆に、違いが大きいほど合成の割合を大きくすることによって、動いている物体を鮮明にすることも可能である。
【００６５】
<第３の実施形態>
次の第３の実施形態として、本発明を動画に適用する場合について説明する。
（多自由度動画手ブレ補正の概要）
従来の一般的な電子式動画手ブレ補正では、撮影フレームが基準フレームに対してどの程度ずれているかを検出し、検出された移動量だけ平行移動した補正フレームを出力することで手ブレ補正を実現している。例えば図１３(a)のように人物を撮影するときに補正フレームを点線のように設定したとする。次に手ブレによって撮影フレームが図１３(b)のようにズレたとすると、それに連動させて補正フレームを点線のように平行移動させて出力する。どの程度ずれたかはジャイロセンサや画像処理で検出する。
【００６６】
しかしながらこうした平行移動のみの手ブレ補正技術では回転や拡大縮小方向にズレが生じた場合には図１３(c)のように不自然な状態になる。そこでそうした平行移動以外の動きも検出し、図１３(d)のように補正することでより自然な手ブレ補正を行うことを考える。
【００６７】
（多自由度動画手ブレ補正のフレーム変換データの定義）
補正フレームから撮影フレームへのフレーム変換データCを以下のように定義する。
【数１３】
0004620607.tif 000014
【００６８】
ここで (x, y, 1)t は補正フレームの座標位置、(X, Y, 1)t は撮影フレームの座標位置とする(図１４)。この変換データMによって、回転・拡大縮小・平行移動・せん断といった6自由度(c11〜c23)の動きに対応できる。なお回転・拡大縮小・平行移動のみに対応する場合は、変換データMを以下のように定義してもよい。この場合は4自由度(c11, c12, c13, c23)となる。なお、自由度を次元ないし軸という場合もある。
【数１４】
0004620607.tif 000015
【００６９】
（多自由度動画手ブレ補正の処理）
動画手ブレ補正の処理ブロックは図１５のようになる。
まずフレーム変換データ生成部４１が撮影フレームFinを受け取り、変換データMを出力する。このフレーム変換データ生成部４１の詳細は後述する。次にフレーム補正部４２が撮影フレームFinとフレーム変換データCから補正フレームFoutを出力する。上記のようにフレーム変換データCを3×3行列とするとフレーム補正部４２は一般的なアフィン変換を用いて画像を変換する処理となる。このフレーム変換データ生成部４１とフレーム補正部４２は、画像処理装置１の演算処理部１３によって実行される機能である。
【００７０】
（フレーム変換データ生成部）
次に、フレーム変換データ生成部４１の処理について説明する。
フレーム変換データ生成部内部の処理ブロックは図１６のようになる。
【００７１】
フレーム変換データ生成部４１はその内部データとして、基準撮影フレームFbaseと基準フレーム変換データCbaseを保持する。基準撮影フレームFbaseは新たな撮影データが入力されたときに動き検出の基準となるフレームである。Fbaseはフレームデータ(画像データ)を全て保持する必要はなく、動き検出に必要となるデータのみ保持しても良い。基準フレーム変換データCbaseは補正フレームからFbaseへのフレーム変換データであり、出力フレーム変換データC と同様3×3行列等で保持する。
【００７２】
なお初期状態においてはFbaseには何も設定せず(もしくは初期状態であるという情報を保持させる)、Cbaseには以下の式で与えられる標準フレーム変換データCoを設定する。
【数１５】
0004620607.tif 000016
【００７３】
ここでW, H  は撮影フレームの幅と高さ、w, h  は補正フレームの幅と高さを表し、このように設定した標準フレーム変換データCoは、補正フレームが撮影フレームのちょうど中心を表示するような変換となる(図１７)。
【００７４】
なお初期状態のときに最初の撮影フレームが入力されると、そまずはそのフレームがFbaseがとして設定される。
【００７５】
フレーム変換データ生成部４１に新たな撮影フレームFinが入力されると、まず動きデータ検出部１６がそれを基準撮影フレームFbaseと比較し、FbaseからFinへの動きデータMを出力する。Mもフレーム変換データCと同様3×3行列等で出力するものとする。動きデータ検出部１６は、図１の点線で囲んだ各手段によって実現される機能であり、撮影フレーム（画像データ）が入力となり、動きデータ（フレーム変換データ）が出力となる。
【００７６】
次にフレーム変換データ結合部１７が検出された動きデータMと基準フレーム変換データCbase を結合し、1次フレーム変換データC1を以下の式で出力する。
【００７７】
C1 = M ・Cbase          ・・・  （１７）
これは図１８のように補正フレームから撮影フレームへのフレーム変換データを表す。
【００７８】
1次フレーム変換データC1はフレーム変換データ標準化部１８によって2次フレーム変換データC２に変換される。この変換によってC２はC1よりも標準フレーム変換データCoに近いものになるようにする。これは標準フレーム変換データCoの状態が最も安定的に手ブレによる画像のゆれを捕捉できる状態だからである。例えば図１９(a)のようなフレーム変換データでは、補正フレームを左側へはほとんど動かすことはできないが、図１９(b)のように補正フレームが撮影フレームの中心(フレーム変換データがCoの状態)にあれば上下左右いずれにもある程度動かすことができる。
この処理の際にC1がC0から離れていれば離れているほど強くC0に近づけるようにすれば収束が速くなると同時に、撮影者がパニングなどによって注視点がずれたとき、より自然に画面が推移するようになる。例えばC1およびC2をそれぞれ
【数１６】
0004620607.tif 000017
としたとき、C2の各値を以下のように求める。
【数１７】
0004620607.tif 000018
【００７９】
ここでr は収束定数で1以下の値を取り、値が大きいほど標準フレーム変換データC0への収束速度が速くなる。
【００８０】
2次フレーム変換データC2はその後フレーム変換データ適正化部１９に送られ最終的なフレーム変換データC に変換される。フレーム変換データ適正化部１９はまず、C2が適正なフレーム変換データかどうかをチェックする。適正なフレーム変換データとはC2による補正フレーム座標系が全て撮影フレーム座標系に含まれるものを表す。例えば図２０(a)のようなフレーム変換データは適正ではなく、図２０(b)のようなフレーム変換データは適正である。
【００８１】
これは具体的には補正フレーム矩形の4スミの点(0, 0), (w, 0), (0, h), (w, h)がフレーム変換データC2による変換で、撮影フレーム矩形(0, 0)〜(W, H)に収まっていれば良い。つまり条件
【数１８】
0004620607.tif 000019
を全て満たせば適正であり、そうでなければ適正でないと判断する。適正であると判断された場合にはフレーム変換データ適正化部１９はそのままC2を出力フレーム変換データC として出力する。
【００８２】
一方、適正でないと判断された場合には以下の式を満たす最小のs(0以上の値)を求め、そのsの値を用いてフレーム変換データCを出力する。
【数１９】
0004620607.tif 000020
最後に撮影フレーム  Fin およびフレーム変換データ C から基準フレーム/フレーム変換データ更新部２０により、基準フレーム Fbase および基準フレーム変換データ  Cbase  の更新を
【００８３】
Cbase = C                ・・・  （２２）
【００８４】
Fbase = Fin              ・・・  （２３）
となるよう行う。ここでこの更新は以下の基準のいずれかを満たすとき、またはその組み合わせを用いて行うものとする。
基準(1)  Fbase と Fin の差がある閾値以上に異なる場合
基準(2)  C と Coの差がある閾値以上に異なる場合
基準(3)  一定周期(例えば15撮影フレーム)ごと
ここで毎フレームごとにFbase とCbase の切り替えを行わないのは、C が Coに近い値の場合、毎フレーム更新を行っていると動き検出の誤差が原因で、手ブレが生じていないのに微妙に補正フレームが動いたり振動するのを防ぐためである。
【００８５】
基準(1)はシーンの切り替え時を表し、シーンの切り替えが起こってときに基準撮影フレームを更新しないと動き検出が正常に動作しないためこのような基準を設けている。
【００８６】
基準(2)についてはCが Coとある程度以上離れていると、動き検出が難しくなるためこのような基準を設けている。
【００８７】
本実施形態によれば、第１の実施形態で説明した動きデータ演算手段３５を用いて、フレーム変換データを生成するので、精度の良い補正フレームをリアルタイムに作成することができる。
【００８８】
なお、動画の場合は特に基準撮影フレームの切替を高速に行う必要があるが、図２１に示すように、動きデータ検出部１６に基準画像設定手段３９を設けると良い。この基準画像設定手段３９は、最初の入力画像に対しては、基準画像フラグを設定する。このフラグが設定されている画像については、各手段は、基準画像として扱い、フラグ設定されていない画像は比較画像として扱う。そして、基準フレーム／フレーム変換データ更新部２０から基準フレームの更新指令が出力されたときは、基準画像設定手段３９は、そのときの比較画像データに対して、基準画像フラグを設定する。基準画像フラグの設定された画像データであってブロックマッチング対象の画像については、画像特徴点群抽出手段３４によって特徴点座標等のデータが検出され画像特徴点群データ保存手段５４に格納され、以降の処理において、基準画像として扱われる。このように入力画像をもとに予め多重解像度化された画像データに対して基準画像情報をフィードバックして設定することによって、必要な画像（基準画像）のみについて特徴点群データを抽出でき、それ以外の画像（比較画像）との動きデータの演算をリアルタイムに実行することができる。
【００８９】
本発明は、上述の実施形態に限定されること無く種々変形して実施することができる。
また、実施形態において説明した方法や手順は、動きデータを演算する方法や計算機に動きデータ演算処理を実行させるためのプログラムとして保護され得ることは言うまでもない。
【図面の簡単な説明】
【００９０】
【図１】本発明の第１の実施形態による動きデータ検出装置のブロック図である。
【図２】図１の多重解像度画像生成手段の処理によって作成される多重解像度画像データの説明図である。
【図３】図１の動きデータ演算手段で実行される全範囲マッチングの処理ブロック図である。
【図４】図３の局所明度画像生成モジュールの処理内容の説明図である
【図５】図３の入力画像Iと画像I'の違いを示すための図であり、図３（ａ）は、入力画像I、図３（ｂ）は、局所明度画像生成モジュールの出力画像I'の図である。
【図６】図３の最適移動量計算モジュールの処理内容の説明図である。
【図７】本発明の第２の実施形態による画像処理装置のブロック図である。
【図８】図７の画像合成手段で実行される重ね合せ処理の説明図である。
【図９】図７の画像合成手段のブロック転送処理の説明図である。
【図１０】図７の画像合成手段をレンズ歪補正へ適用する際のブロック分割の説明図である。
【図１１】画像合成時のブロックの継ぎ目で生じるずれの説明図である。
【図１２】図７の画像合成手段において、ブロックの境目の位置をずらしながら画像を重ね合せる処理の説明図である。
【図１３】本発明の第３の実施形態による動画の手ブレ補正の概要の説明図である。
【図１４】本発明の第３の実施形態による補正フレームと撮影フレームの座標位置の説明図である。
【図１５】本発明の第３の実施形態による動画手ブレ補正の処理ブロック図である。
【図１６】図１５のフレーム変換データ生成部の内部の処理ブロック図である。
【図１７】図１５のフレーム変換データ生成部の標準フレーム変換データの説明図である。
【図１８】図１６のフレーム変換データ結合部によって補正フレームから撮影フレームへフレーム変換される際の説明図である。
【図１９】図１６のフレーム変換データ標準化部の動作の説明図である。
【図２０】図１６のフレーム変換データ適正化部の動作の説明図である。
【図２１】図１の動きデータ検出部の他の実施例によるブロック図である。
【符号の説明】
【００９１】
１  画像処理装置
１０  動きデータ検出装置
１３  演算処理部
１５  記憶部
１６  動きデータ検出部
１７  フレーム変換データ結合部
１８  フレーム変換データ標準化部
１９  フレーム変換データ適正化部
２０  基準フレーム／フレーム変換データ更新部
３１  画像データ入力部
３２  検出用画像生成手段
３３  多重解像度画像生成手段
３４  画像特徴点群抽出手段
３５  動きデータ演算手段
３６  動きデータ出力手段
３７  画像合成手段
３８  合成画像出力手段
４１  フレーム変換データ生成部
４２  フレーム補正部
４５  局所明度画像生成モジュール
４６  最適移動量計算モジュール
５１  入力画像データ保存手段
５２  検出用画像データ保存手段
５３  多重解像度画像データ保存手段
５４  画像特徴点群データ保存手段
５５  動きデータ保存手段
５６  合成画像データ保存手段
【図１】
0004620607.tif 000021
【図３】
0004620607.tif 000022
【図４】
0004620607.tif 000023
【図７】
0004620607.tif 000024
【図８】
0004620607.tif 000025
【図９】
0004620607.tif 000026
【図１０】
0004620607.tif 000027
【図１２】
0004620607.tif 000028
【図１３】
0004620607.tif 000029
【図１４】
0004620607.tif 000030
【図１５】
0004620607.tif 000031
【図１７】
0004620607.tif 000032
【図１８】
0004620607.tif 000033
【図１９】
0004620607.tif 000034
【図２０】
0004620607.tif 000035
【図２１】
0004620607.tif 000036
【図２】
0004620607.tif 000037
【図５】
0004620607.tif 000038
【図６】
0004620607.tif 000039
【図１１】
0004620607.tif 000040
【図１６】
0004620607.tif 000041