(57)【要約】【課題】  画像の複雑な振れを補正する。【解決手段】  撮像手段によって撮影された複数の画像を入力し、コード化露光処理により前記複数の画像それぞれの振れを補正する(S11)。そして、振れを補正した複数の画像の間の相対移動量を算出し(S12)、相対移動量に基づき振れを補正した複数の画像の位置を補正し、位置を補正した複数の画像を合成する(S13)。【選択図】  図2
2011004190.tif 000002
【特許請求の範囲】
【請求項１】
撮像手段によって撮影された複数の画像を入力する入力手段と、
コード化露光処理により前記複数の画像それぞれの振れを補正する補正手段と、
前記振れを補正した複数の画像の間の相対移動量を算出する算出手段と、
前記相対移動量に基づき前記振れを補正した複数の画像の位置を補正し、前記位置を補正した複数の画像を合成する合成手段とを有することを特徴とする画像処理装置。
【請求項２】
さらに、撮影環境の情報を取得する取得手段と、
前記撮影環境の情報に基づき前記撮像手段の露光条件を制御する制御手段とを有することを特徴とする請求項1に記載された画像処理装置。
【請求項３】
前記制御手段は、前記撮影環境の情報に基づき、前記露光条件としてフラッタシャッタによる露光または通常露光を設定することを特徴とする請求項2に記載された画像処理装置。
【請求項４】
前記制御手段は、前記撮影環境の情報が光量不足を示す場合、前記露光条件としてフラッタシャッタによる露光を設定することを特徴とする請求項2に記載された画像処理装置。
【請求項５】
前記制御手段は、前記撮影環境の情報が光量充分を示す場合、前記露光条件として通常露光を設定することを特徴とする請求項2に記載された画像処理装置。
【請求項６】
前記制御手段は、前記撮影環境の情報が光量不足と光量充分の中間を示す場合、前記露光条件としてフラッタシャッタによる露光と通常露光を設定し、フラッタシャッタによる撮影と通常露光による撮影が混在する撮影を前記撮像手段に実行させることを特徴とする請求項2に記載された画像処理装置。
【請求項７】
撮像手段によって撮影された複数の画像を入力し、
コード化露光処理により前記複数の画像それぞれの振れを補正し、
前記振れを補正した複数の画像の間の相対移動量を算出し、
前記相対移動量に基づき前記振れを補正した複数の画像の位置を補正し、前記位置を補正した複数の画像を合成することを特徴とする画像処理方法。
【請求項８】
コンピュータ装置を制御して、請求項1から請求項6の何れか一項に記載された画像処理装置の各手段として機能させることを特徴とするプログラム。
【請求項９】
請求項8に記載されたプログラムが記録されたことを特徴とするコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮影データの振れ補正に関する。
【背景技術】
【０００２】
ディジタルカメラなどの撮像装置の高画素数化、高ズーム化に伴い、手振れなどによる撮影画像の振れが問題になり、手振れ補正機能付きの撮像装置が普及している。
【０００３】
手振れ補正機能は、手振れによる角速度を検出するジャイロセンサと、手振れを打ち消すようにレンズと撮像デバイスの相対位置を制御する駆動装置によって、光学的に手振れを補正する方式（以下、光学的手振れ補正方式）が一般的である。
【０００４】
また、手振れが影響しない程度の露光時間、つまり高速なシャッタ速度で複数の画像を連続撮影して、複数の画像の位置を合わせて合成することで、手振れの影響がない画像を生成する方式（以下、電子的手振れ補正方式）が提案されている（例えば特許文献1）。電子的手振れ補正方式は、ジャイロセンサを必要とせず、撮像装置を小型化し、製造コストを抑える利点を有する。
【０００５】
また、露光期間にシャッタをランダムに開閉し（以下、フラッタシャッタ）、シャッタ開閉を示す情報（以下、シャッタ開閉パターン）を用いるデコンボリューション演算により、振れを補正する技術が提案されている（例えば特許文献2）。コード化露光(coded exposure)と呼ばれる、この技術は、演算によって振れを補正するため、特許文献1の技術で必要になる複数の画像の位置合わせが不要になり、演算コストを抑える利点を有する。
【０００６】
しかし、特許文献1の技術は、複数の画像それぞれが振れを含まないことが前提であり、振れが発生した画像が存在する場合、複数の画像の位置を良好に合わせられない問題がある。例えば、夜景シーンの撮影は、撮影画像のノイズを抑えるために、所定時間以上の露光時間を必要とする。しかし、露光時間が長くなると各撮影画像に振れが含まれる可能性が高まり、複数の画像の位置を良好に合わせられない可能性が高くなる。
【０００７】
また、特許文献2の技術は、ある方向に発生する振れは補正可能であるが、人物の移動のような複雑な振れ（以下、被写体振れ）は補正することができない。言い換えれば、画像全体に対して均一な振れ（被写体の振れを含む）は補正可能であるが、被写体振れのように、局所的に振れが異なるような振れは補正することができない。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開2006-074693公報
【特許文献２】米国特許出願公開第2007/0258706号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、画像の複雑な振れを補正することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１１】
本発明にかかる画像処理は、撮像手段によって撮影された複数の画像を入力し、コード化露光処理により前記複数の画像それぞれの振れを補正し、前記振れを補正した複数の画像の間の相対移動量を算出し、前記相対移動量に基づき前記振れを補正した複数の画像の位置を補正し、前記位置を補正した複数の画像を合成することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、画像の複雑な振れを補正することができる。
【図面の簡単な説明】
【００１３】
【図１】実施例1の撮像装置の構成例を示すブロック図。
【図２】振れ補正の概要を説明する図。
【図３】修復処理を説明するフローチャート。
【図４】ゼロによる除算の発生を説明する図。
【図５】コード化露光を行った場合のh(t)とその周波数特性を示す図。
【図６】合成処理を説明するフローチャート。
【図７】適正領域の抽出を説明するフローチャート。
【図８】共通領域の検出を説明するフローチャート。
【図９】共通領域の検出の第二例を説明するフローチャート。
【図１０】相対移動量の算出を説明するフローチャート。
【図１１】アフィンパラメータの検出を説明する図。
【図１２】平坦なブロックを除外して有効ブロックを判定する方法を説明するフローチャート。
【図１３】有効動きベクトル判定の方法を説明するフローチャート。
【図１４】実施例2の撮像装置の構成例を示すブロック図、
【図１５】修復処理を説明するフローチャート。
【図１６】シャッタ開の延べ時間が等しい場合のフラッタシャッタの露光条件h(t)と通常露光の露光条件h(t)の違いを示す図、
【図１７】通常露光において露光時間を変化させた場合のPSF形状を示す図、
【図１８】被写体の撮影環境の光量が充分な場合の振れ補正の概要を説明する図、
【図１９】実施例2の撮像装置の別の構成例を示すブロック図、
【図２０】被写体の撮影環境の光量が中間的な場合の振れ補正の概要を説明する図、
【発明を実施するための形態】
【００１４】
以下、本発明にかかる実施例の画像処理を図面を参照して詳細に説明する。
【実施例１】
【００１５】
［装置の構成］
図1は実施例1の撮像装置の構成例を示すブロック図である。なお、撮像装置は、ディジタルスチルカメラ、ディジタルビデオカメラの何れでもよい。
【００１６】
撮像部101は、撮影レンズとCMOSセンサやCCDなどの撮像デバイスを有する。露光制御部102は、シャッタや絞りを制御する。振れ検出部103は、撮像装置の姿勢変化を検出する。現像部104は、アナログ-ディジタル変換(A/D)によって撮像デバイスから出力されるアナログ信号をディジタル信号の撮像データに変換し、撮像データから輝度信号や色信号を生成するデモザイキング処理などを行って、被写体の画像データを形成する。
【００１７】
画像処理部105は、詳細は後述するが、現像部104が出力する画像データを表示部115のモニタに表示したり、画像記録部114を介して記録媒体に格納する。
【００１８】
［振れ補正］
本実施例の振れ補正は二段階の処理によって構成される。つまり、演算によって撮影画像の振れを補正する処理（以下、修復処理）と、修復処理後の複数の画像の相対移動量を求め、画像合成する処理（以下、合成処理）によって振れ補正を実現する。
【００１９】
図2は振れ補正の概要を説明する図である。まず、フラッタシャッタにより撮影された一連の画像それぞれに対して修復処理を施す(S11)。次に、振れ補正を施した各画像間のずれ（以下、位置ずれ）を表す相対移動量を算出する(S12)。そして、相対移動量に基づき、振れ補正を施した各画像の位置ずれを補正して画像合成し、詳細な振れ補正を行う(S13)。
【００２０】
露光制御部102は、露出条件を制御して複数の画像を撮影する。これは、一般にブラケット撮影と呼ばれる撮影に類似する。通常のブラケット撮影は、適正露出条件を中心に露出条件を前後に振って複数の画像を撮影するが、本実施例は、複数の画像を合成して適正露出にするため、各画像の露出時間はブラケット撮影に比べて短い。
【００２１】
関数作成部107は、振れ検出部103から各画像の撮影期間における撮像装置の姿勢変化を入力し、露光条件取得部106から露光制御部102が設定した各画像のシャッタ開閉パターンを入力して、振れ補正に使用する関数を生成する。修復部108は、関数作成部107が生成する関数を用いて、現像部104から入力される複数の画像データそれぞれに順次振れ補正を施す。振れ補正が施された複数の画像データは、一旦、メモリ109に格納される。
【００２２】
修復部108によって振れ補正が施された複数の画像は、互いに位置ずれを伴う可能性がある。そこで、詳細は後述するが、位置ずれ補正部111によって複数の画像間の相対的な位置ずれを補正し、画像合成部113によって複数の画像から画素を選択して複数の画像を合成する。その際、領域抽出部110は、複数の画像間の位置ずれを検出する際の検出精度を上げるための前処理を行う。つまり、複数の画像の中から適正なレンジをもつ共通領域を求めて、位置ずれ検出の誤判定を防ぐ。
【００２３】
［修復処理］
図3は修復処理を説明するフローチャートである。修復部108は、現像部104から画像データを入力する(S201)。画素(x, y)に対する単位時間当りの入射光の強度をI(x, y)、撮像装置の姿勢変化の速度をν、露光時間をTとすると、時刻tに撮像装置にはI(x, y)をνTだけ移動した情報が入射する。従って、撮影される画像データIblur(x, y)は次式で表される。なお、説明を簡単にするため、縦方向（y方向）へ振れが発生した場合を説明する。
Iblur(x, y) = 1/T・∫t(x, y+νt)h(t)dt      …(1)
ここで、関数h(t)はシャッタの開閉を表し、シャッタ開は1、シャッタ閉は0、
積分範囲はt=0〜T。
【００２４】
次に、露光条件取得部106は、露光制御部102から露光条件を入力する(S202)。露光条件は、露光時間Tおよびシャッタ開閉パターンを示すh(t)を含む。続いて、関数作成部107は、振れ検出部103から撮像装置の姿勢変化を示す振れ情報を入力する(S203)。振れ情報は、x方向およびy方向へ撮像装置の移動速度を表すベクトルを含む。関数作成部107は、露光条件と振れ情報を入力し、詳細は後述するが、撮影画像の暈けを表す点像関数(point spread function: PSF)を生成し、振れ補正に使用する関数を生成する(S204)。
【００２５】
次に、修復部108は、関数作成部107が生成した関数を用いるデコンボリューションを画像データに施す(S205)。デコンボリューションのアルゴリズムは、既存の任意のアルゴリズムを用いればよい。例えば、周波数空間上での除算、Lucy-Richardsonのアルゴリズム、Wienerフィルタを用いたアルゴリズム、正則化フィルタを用いたアルゴリズムなどが挙げられる。本実施例では、詳細は後述するが、シャッタ開閉パターンを制御して、周波数空間上で除算を行うものとする。
【００２６】
次に、修復部108は、修復処理した画像データをメモリ109の所定領域に格納し(S206)、撮影された一連の画像データに対する修復処理が終了したか否かを判定する(S207)。そして、未了であれば処理をステップS201に戻して、次の画像データを入力し、上記の修復処理を繰り返す。
【００２７】
●関数の作成
関数作成部107は、振れ補正に使用するデコンボリューション関数を作成する。実空間でのコンボリューション演算は、空間周波数上で積の形式で記述することができる。画像データの撮影過程を表現する式(1)をフーリエ変換すると下式が得られる。
Iblur(u, v) = 1/(νT)・I(u, v)H(u)      …(2)
ここで、u, vは空間周波数変換。
【００２８】
次に、振れがない画像を示すI(u, v)について式(2)を変換すると下式が得られる。
I(u, v) = νT/H(u)・Iblur(u, v)      …(3)
【００２９】
式(3)において、Iblur(u, v)は画像データIblur(x, y)のフーリエ変換である。つまり、関数作成部107が生成すべき関数はνT/H(u)である。ここで、H(u)は露光条件に含まれるシャッタ開閉パターンh(t)のフーリエ変換であり、速度νと露光時間Tは、振れ検出部103と露光条件取得部106から得られる。
【００３０】
修復部108は、周波数空間において式(3)に示す演算を行うことで、振れを補正した画像データのフーリエ変換I(u, v)を得ることが可能である。しかし、シャッタ開閉パターンh(t)によっては、そのフーリエ変換H(u)がゼロの値をとることがあり、式(3)の演算においてゼロによる除算が発生する場合がある。
【００３１】
図4はゼロによる除算の発生を説明する図である。図4(a)は通常の露光条件である0≦t≦Tにおいてh(t)=1、それ以外はh(t)=0の場合（フラッタシャッタではなく、シャッタ開期間において連続的にシャッタが開）のh(t)を示す図である。図4(b)は図4(a)に示すh(t)のフーリエ変換（周波数特性）を示す図である。なお、図4(a)において、横軸は時間t、縦軸はシャッタの開閉を表す。図4(b)において、横軸は角度（ラジアン）、縦軸は周波数成分の絶対値（強度）を表す。
【００３２】
図4(b)に示すように、シャッタが連続開の場合、強度が周期的に0になる周波数が出現する。これは、その周波数に対応する情報の消失を表し、このような状態でデコンボリューションを行えば、情報が消失した周波数が存在することに対応する波形（文様）が現れる。そこで、情報の消失した周波数の発生を防ぐためにコード化露光処理を行う。言い換えれば、強度が0になる周波数の発生を防ぐために、露光期間において、開閉タイミングおよび開（または閉）の長さをランダムに制御して、フラッタシャッタを行う。
【００３３】
図5はコード化露光を行った場合のh(t)とその周波数特性を示す図である。図5(a)に示すようなコード化露光を行うと、図5(b)に示すように、情報が消失する周波数は存在しないので、式(3)のデコンボリューションによる修復処理が可能になる。
【００３４】
なお、上記では、縦振れを補正する例を説明したが、横方向の横振れ、縦振れと横振れが組み合わさった斜め方向への振れ（以下、まとめて「シフト振れ」）も補正可能である。また、画像データを極座標に変換して修復処理を行えば、例えば撮影レンズの光軸を中心とする撮像装置の回転による振れ（以下、回転振れ）を補正することもできる。
【００３５】
［合成処理］
図6は合成処理を説明するフローチャートである。領域抽出部110は、メモリ109から修復処理が施された複数の画像を入力し(S701)、各画像に対して適正領域を抽出する(S702)。さらに、画像間で共通する適正領域（以下、共通領域）を検出する(S703)。
【００３６】
次に、移動量算出部112は、共通領域の間の相対移動量を算出する(S704)。位置ずれ補正部111は、算出された相対移動量分の補正処理を各画像に施す(S705)。なお、例えば二つの画像がある場合、撮影順が遅い二つ目の画像を補正して、一つ目の画像に位置合わせしてもよいし、その逆でも構わない。
【００３７】
画像合成部113は、複数の画像の位置ずれ補正（位置合わせ）が終了すると、それら画像を合成処理する(S706)。なお、画像の合成処理は、加算演算によって行われる。
【００３８】
●適正領域の抽出
適正露出よりも露光量が少ない（露出アンダ）画像は、暗い部分に黒潰れと呼ぶ階調が再現されない領域が生じる場合がある。同様に、適正露出よりも露光量が多い（露出オーバ）画像は、明るい部分で白飛びと呼ぶ階調が再現されない領域が生じる場合がある。黒潰れ領域や白飛び領域は画像の特徴が失われるので、それら領域を相対移動量の算出対象にすれば、位置ずれを誤判定する可能性がある。そこで、黒潰れ領域や白飛び領域を除く領域から相対移動量の算出に適正な領域として適正領域を抽出する。
【００３９】
図7は適正領域の抽出(S702)を説明するフローチャートで、一つの画像分の処理を示している。領域抽出部110は、黒潰れ領域を除外するために、画像の注目画素の値Dと所定の閾値T1を比較して(S801)、D＜T1であれば黒潰れ領域に含まれる画素として、相対移動量の算出領域から除外する(S802)。続いて、領域抽出部110は、白飛び領域を除外するために、画像の注目画素の値Dと所定の閾値T2を比較して(S803)、D＞T2であれば白飛び領域に含まれる画素として、相対移動量の算出領域から除外する(S802)。
【００４０】
領域抽出部110は、ステップS801、S803の判定により除外されなかった注目画素、つまり、T1＜D＜T2の画素を適正領域に含まれる画素（以下、適正画素）として、その位置を記録する(S804)。そして、ステップS805の判定により、画像の全画素に上記の判定を行うまで、上記処理を繰り返す。
【００４１】
●共通領域の検出
図8は共通領域の検出(S703)を説明するフローチャートである。共通領域の検出は、複数の画像間で行う処理であるが、説明を簡単にするために、二つの画像間の処理を説明する。
【００４２】
領域抽出部110は、第一の画像の注目画素が適正画素か否かを判定し(S901)、適正画素ではない場合、当該画素位置を相対移動量の算出領域から除外する(S902)。続いて、領域抽出部110は、第二の画像の注目画素（第一の画像の注目画素と同位置）が適正画素か否かを判定し(S903)、適正画素ではない場合、当該画素位置を相対移動量の算出領域から除外する(S902)。
【００４３】
領域抽出部110は、ステップS901、S903の判定により除外されなかった画素位置、つまり、第一の画像と第二の画像の同一位置の画素の両方が適正画素である画素位置を共通領域に含まれる画素位置として記録する(S904)。そして、ステップS905の判定により、画像の全画素位置に上記の判定を行うまで、上記処理を繰り返す。
【００４４】
このようにして、一組の画像の共通領域を検出する。第三の画像に対して共通領域を検出する場合は、第一と第二の画像間の共通領域の検出結果と、第三の画像の間で図8に示す処理を行えばよい。言い換えれば、第Nの画像に対して共通領域を検出する場合は、第一から第N-1の画像間の共通領域の検出結果と、第Nの画像の間で図8に示す処理を行えばよい。
【００４５】
図9は共通領域の検出(S703)の第二例を説明するフローチャートである。この方法は、位置ずれの検出をブロック単位に行う場合に検出精度を向上させるためのもので、図8の方法で得られる共通領域よりも狭い共通領域を検出する。
【００４６】
領域抽出部110は、複数の画像それぞれを所定サイズ（M×N画素）のブロックに分割する(S101)。続いて、領域抽出部110は、複数の画像の注目ブロック（各ブロックは同位置）が相対移動量の算出領域から除外された画素（以下、除外画素）を含むか否かを判定する(S102)。何れかの画像の注目ブロックが除外画素を含む場合、当該ブロックを相対移動量の算出領域から除外する(S103)。
【００４７】
各画像の注目ブロックが除外画素を含まない場合、領域抽出部110は、ブロックの外側のサーチ範囲に除外画素があるか否かを判定し(S104)、サーチ範囲に除外画素があれば当該ブロックを相対移動量の算出領域から除外する(S103)。
【００４８】
領域抽出部110は、ステップS102、S103の判定により除外されなかったブロック、つまり、全画像において、除外画素を含まず、サーチ範囲にも除外画素がないブロックを共通領域に含まれるブロックとして記録する(S105)。そして、ステップS106の判定により、全ブロックに上記の判定を行うまで、上記処理を繰り返す。
【００４９】
［相対移動量の算出］
図10は相対移動量の算出(S704)を説明するフローチャートである。なお、ここでは、ブロックごとに動きベクトルを求め、そこから画像全体の動き量をアフィンパラメータとして求める方法を説明する。
【００５０】
移動量算出部112は、ブロックごとの動きベクトルを求める前処理として有効ブロックを判定する(S111)。詳細は後述するが、正しい動きベクトルが求まらない可能性があるブロックを除外する。続いて、移動量算出部112は、ブロックマッチングにより有効ブロックごとに動きベクトルを検出する(S112)。
【００５１】
ブロックマッチングは、マッチングの評価値として、画素間の差分二乗和または差分絶対値和を用いる。つまり、動きベクトルの計算対象のブロックを、参照画像のサーチ範囲で順次移動して、評価値を計算する。そして、サーチ範囲で計算したすべての評価値の中で最小の評価値が得られた、計算対象ブロックの移動位置に対応するブロックが、計算対象ブロックと最も相関が高いブロックであり、両ブロックを結ぶベクトルが動きベクトルである。サーチ範囲において、計算対象ブロックを一画素ずつ移動して評価値を計算する方法は「フルサーチ」と呼ばれる。また、サーチ範囲において、計算対象ブロックを数画素おきに移動して評価値を計算し、最小の評価値が得られた移動位置の近傍において、さらに細かく（例えば一画素ずつ）計算対象ブロックを移動して評価値を計算する方法は「ステップサーチ」と呼ばれる。ステップサーチは、高速に動きベクトルを検出することができる。
【００５２】
次に、移動量算出部112は、すべてのブロックの動きベクトルを検出したか否かを判定し(S113)、未了であれば処理をステップS111に戻す。すべてのブロックの動きベクトルを検出すると、移動量算出部112は、有効な動きベクトルを判定する(S113)。詳細は後述するが、検出した動きベクトルのうち検出結果が正しくないと判断される動きベクトルを除外する。そして、有効な動きベクトルから、アフィンパラメータを検出する(S115)。
【００５３】
図11はアフィンパラメータの検出を説明する図である。対象ブロックの中心座標が(x, y)で、動きベクトルの検出結果から参照画像における当該ブロックの中心座標が(x', y')だとすると、これらの関係は下式のように表すことができる。
┌  ┐ ┌     ┐┌ ┐
│x'│ │a b c││x│
│y'│=│d e f││y│      …(4)
│1 │ │0 0 1││1│
└  ┘ └     ┘└ ┘
【００５４】
式(4)において3×3の行列がアフィン行列である。行列の各要素がアフィンパラメータであり、係数a=1、b=0、d=0、e=1の場合は平行移動の変換になり、係数cが水平方向の移動量、係数fが垂直方向の移動量を示す。また、回転角θの回転移動は係数a=cosθ、b=-sinθ、d=sinθ、e=cosθで表すことができる。式(5)は、式(4)を一般化した表現である。
χ' = Α・χ      …(5)
ここで、χとχ'は1×3の行列、
Aは3×3の行列。
【００５５】
有効な動きベクトルがn個の場合、対象画像の座標値は下式のようにn×3の行列で表現することができる。
Χ = (χ1 χ2 … χn)      …(6)
【００５６】
同様に、移動後の座標値も下式のようにn×3の行列で表現することができる。
Χ' = (χ1' χ2' … χn')      …(7)
【００５７】
従ってi、n個の動きベクトルに対しては下式のような表現になる。
Χ' = Α・Χ      …(8)
【００５８】
つまり、式(8)におけるアフィン行列Αを求めれば、それが相対移動量に相当する。式(8)を変形すると、アフィン行列は下式のように表される。
Α = Χ'・ΧT      …(9)
ここで、Tは転置行列を表す。
【００５９】
このように、移動量が、アフィン変換のパラメータ（アフィン行列）で表現されるため、手振れなどのシフト振れ以外にも、回転振れや前後方向の振れ（以下、ズーム振れ）にも対応することができる。
【００６０】
●有効ブロックの判定
ブロックマッチングによりブロック間の相関を求める場合、ブロック内の画像に何らかの特徴量がある必要がある。ほとんど直流成分しか含まない平坦なブロックは、正しい動きベクトルを求めることができない。逆に、水平方向や垂直方向にエッジを含むと、マッチングが容易になる。図12は平坦なブロックを除外して有効ブロックを判定(S112)する方法を説明するフローチャートで、一つのブロックに関する判定を示している。
【００６１】
移動量算出部112は、ブロック内の水平ラインに対して、画素値の最大値と最小値の差分値を算出する(S121)。例えば、ブロックが50×50画素サイズだとすると、水平方向の50画素から最大値と最小値を抽出し、それら差分値を算出する。ステップS122の判定により、差分値の算出を水平ラインの数分（この例では50回）繰り返して、最大の差分値を抽出する(S123)。そして、所定の閾値Txと最大の差分値の比較し(S124)、最大差分値≦Txであれば、当該ブロックは、水平方向に特徴量をもたないブロックと見做して、無効ブロックとして記録する(S125)。
【００６２】
最大差分値＞Txの場合は水平方向に特徴量をもつブロックと見做して、垂直方向で同様の判定を行う。つまり、移動量算出部112は、ブロック内の垂直ラインに対して、最大値と最小値の差分値を算出し(S126)、ステップS127の判定により、差分値の算出を垂直ラインの数分（この例では50回）繰り返して、最大の差分値を抽出する(S128)。そして、所定の閾値Tyと最大の差分値の比較し(S129)、最大差分値≦Txであれば、当該ブロックは、垂直方向に特徴量をもたないブロックと見做して、無効ブロックとして記録する(S125)。
【００６３】
また、最大差分値＞Tyの場合は、垂直・水平方向に特徴量をもつブロックと見做して、有効ブロックとして記録する(S130)。つまり、水平・垂直の両方向に特徴をもつブロックならば、正確なブロックマッチングを期待することができ、有効ブロックにする。
【００６４】
●有効動きベクトルの判定
図13は有効動きベクトル判定(S114)の方法を説明するフローチャートである。移動量算出部112は、ブロックの動きベクトルを入力し(S131)、入力した動きベクトルの発生頻度を算出する(S132)。そして、ステップS133の判定により、検出した動きベクトルすべての発生頻度の算出が終わるまで、ステップS131とS132を繰り返す。
【００６５】
動きベクトルの発生頻度の算出が終了すると、移動量算出部112は、発生頻度が最大を示す動きベクトルを抽出する(S134)。そして、再び動きベクトルを入力し(S135)、入力した動きベクトルが発生頻度が最大の動きベクトルにほぼ一致するか、発生頻度が最大の動きベクトルに近い動きベクトルか否かを判定する(S136)。シフト振れのみの場合、各ブロックの動きベクトルは発生頻度が最大の動きベクトルにほぼ一致し、回転振れを伴う場合は発生頻度が最大の動きベクトルに近い動きベクトルが多数発生する。従って、発生頻度が最大の動きベクトルにほぼ一致、または、近い動きベクトルを有効な動きベクトルとして記録する(S1307)。逆に、発生頻度が最大の動きベクトルと充分に異なる動きベクトルは無効な動きベクトルとして記録する(S1308)。なお、有効か無効かの判定基準として、経験値に基づき、ベクトルの大きさの差や角度差を設定すればよい。
【００６６】
そして、移動量算出部112は、ステップS139の判定により、検出した動きベクトルすべてについて有効・無効を判断するまで、ステップS135からS138を繰り返す。
【００６７】
このように、デコンボリューション演算を用いる振れ補正と、複数画像の合成による振れ補正を併用して、手振れなどによる振れと被写体振れが組み合わさったような複雑な振れを補正することができる。
【実施例２】
【００６８】
以下、本発明にかかる実施例2の画像処理を説明する。なお、実施例2において、実施例1と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００６９】
実施例1では、予め決められた露光制御によって撮像装置のシャッタの開閉を制御する例を説明した。実施例2では、撮影環境に応じて撮像装置の露光条件を制御する例を説明する。
【００７０】
図14は実施例2の撮像装置の構成例を示すブロック図である。実施例2の撮像装置は、図1に示す実施例1の撮像装置の構成に、環境情報取得部121および露光条件制御部122を追加した構成を有する。
【００７１】
露光条件制御部122は、環境情報取得部121が取得した撮影環境の情報に応じて露光条件を決定し、決定した露光条件を露光制御部102と露光条件取得部106に通知する。つまり、撮影環境に応じて、撮像装置のシャッタの開閉が変化し、振れ補正の前半処理である修復処理が実施例1と異なる。従って、以下では、実施例2の修復処理について説明し、振れ補正の後半処理である合成処理の説明は省略する。
【００７２】
図15は修復処理を説明するフローチャートである。環境情報取得部121は、被写体の環境の光量など撮影環境の情報を取得する(S171)。露光条件制御部122は、環境情報取得部121が取得した撮影環境の情報に応じて露光条件を決定する(S172)。露光条件制御部122は、被写体の環境の光量が少ない場合は、図5(a)に示すようなフラッタシャッタ用のシャッタ開閉パターンを選択し、露光条件を制御する。一方、被写体の環境の光量が充分な場合は、図4(a)に示すようなシャッタ開期間において連続的にシャッタが開（以下、通常露光）を選択肢、露光条件を制御する。そして、露光条件制御部122は、決定した露光条件を露光制御部102と露光条件取得部106に通知し、撮像装置の露光を制御する(S173)。以降、図3に示す実施例1のステップS201以降と同様の処理が行われるので詳細説明を割愛する。
【００７３】
被写体の撮影環境の光量が少ない場合、撮像デバイスに入射する光量が少なく、撮像デバイスの暗電流を起因とするノイズが撮影画像に重畳される。このノイズを低減するには、露光時間を比較的長く設定することが望まれる。しかし、露光時間が長くなれば、撮影画像に振れが生じ易くなり、図5(a)に示すようなフラッタシャッタによる振れ補正が有効になる。一方、被写体の撮影環境の光量が充分な場合は、露光時間を短くしてもノイズの影響を受け難い。従って、図4(a)に例示すような通常露光を選択して、各画像の撮影に要する露光時間を短縮することができる。
【００７４】
図16はシャッタ開の延べ時間が等しい場合のフラッタシャッタの露光条件h(t)と通常露光の露光条件h(t)の違いを示す図である。通常露光は、一つの画像を撮影する際にシャッタ閉が発生しない。一方、フラッタシャッタによる露光は、シャッタの開閉を繰り返すため、その露光期間T1は通常露光による露光期間T2よりも長くなる。従って、相対的に短い時間で撮影が完了する通常露光は、振れが存在しても、その度合いは相対的に小さくなり、振れ補正は比較的容易である。
【００７５】
図17は通常露光において露光時間を変化させた場合のPSF形状を示す図である。図17(a)に比べて、露光時間を短くした図17(b)は、露光条件h(t)のPSFにゼロ点が生じ難くなり、周波数成分の欠落がない画像を得ることができる。ここで、デコンボリューションのアルゴリズムは上述したように任意の既存のアルゴリズムを用いればよい。
【００７６】
図18は被写体の撮影環境の光量が充分な場合の振れ補正の概要を説明する図である。まず、通常露光により撮影された一連の画像それぞれに対して修復処理を施す(S11)。次に、振れ補正を施した各画像間の位置ずれを表す相対移動量を算出する(S12)。そして、相対移動量に基づき、振れ補正を施した各画像の位置ずれを補正して画像合成し、詳細な振れ補正を行う(S13)。
【００７７】
図19は実施例2の撮像装置の別の構成例を示すブロック図である。上記では、撮影環境の情報に応じて露光条件を制御する例を説明したが、ユーザンタフェイスを介して、ユーザが露光条件を選択または制御してもよい。図19に示す構成は、環境情報取得部121の代わりにユーザインタフェイスを提供するUI部123を備える。
【００７８】
ユーザは、例えば、撮影環境の光量が充分、不足するなどの情報を入力する。あるいは、UI部123によって、ユーザがフラッタシャッタによる撮影、または、通常露光による撮影を選択するようにしてもよい。露光条件制御部122は、UI部123に入力された情報に応じて露光条件を設定し、設定た露光条件を露光制御部102と露光条件取得部106に通知して、撮像装置の露光を制御する。
【００７９】
このように、撮影環境の情報を取得またはユーザ指示を入力することで、撮影環境に適した露光条件に制御することが可能になり、撮影時間を短縮し、ノイズを抑制した、振れ補正画像を得ることができる。
【実施例３】
【００８０】
以下、本発明にかかる実施例3の画像処理を説明する。なお、実施例3において、実施例1、2と略同様の構成については、同一符号を付して、その詳細説明を省略する。
【００８１】
実施例2においては、複数の画像を撮影する際の露光条件として、撮影環境の情報またはユーザの指示に応じて、フラッタシャッタによる露光と通常露光の何れかを選択する例を説明した。しかし、フラッタシャッタによる露光と通常露光を混在させて複数の画像を撮影しても構わない。
【００８２】
露光条件制御部122は、環境情報取得部121が取得した撮影環境の情報、または、UI部123〜入力されるユーザ指示に応じて、シャッタを例えば三段階に制御することが可能である。例えば、撮影環境の光量Eと第一の閾値Th1および第二の閾値Th2（Th1＜Th2）を比較する。そして、E≦Th1（光量不足）の場合は、図2に示すように、各画像の撮影にフラッタシャッタを適用する。また、Th2＜E（光量充分）の場合は、図18に示すように、通常露光により各画像の撮影を適用する。そして、中間的な光量（Th1＜E≦Th2）の場合、後述するように、フラッタシャッタによる露光と通常露光を混在させて各画像の撮影を実行するように露光制御部102を制御する。
【００８３】
図20は被写体の撮影環境の光量が中間的な場合の振れ補正の概要を説明する図である。まず、フラッタシャッタによる露光と通常露光により交互に撮影された一連の画像それぞれに対して修復処理を施す(S11)。次に、振れ補正を施した各画像間の位置ずれを表す相対移動量を算出する(S12)。そして、相対移動量に基づき、振れ補正を施した各画像の位置ずれを補正して画像合成し、詳細な振れ補正を行う(S13)。
【００８４】
図20に示す振れ補正を行う場合、修復処理が完了した後の画像に対して相対移動量を算出する際に、フラッタシャッタによる露光によって撮影した画像（図20の例では、補正画像1、3、5）のみ相対移動量を算出してもよい。そして、通常露光によって撮影した画像（図20の例では、補正画像2、4）の相対移動量は、当該画像の前後で撮影されたフラッタシャッタによる露光によって撮影された補間画像の相対移動量から補間演算によって算出すればよい。例えば、図20の補正画像2の相対移動量は、補正画像1と3の相対移動量から補間演算する。勿論、補正画像2の相対移動量をフラッタシャッタによる露光によって撮影されたすべての補正画像（図20の例では、補正画像1、3、5）の相対移動量から補間演算してもよい。
【００８５】
［他の実施例］
本発明の目的は、次のようにしても達成される。上記実施例の機能または先に説明したフローチャートの処理や制御を実現するプログラムを記録した記録媒体をシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ（CPUやMPU）に前記プログラムを実行させる。この場合、記録媒体から読み出されたソフトウェア自体が上記実施例の機能を実現することになり、そのプログラムと、そのプログラムを記憶する、コンピュータが読み取り可能な記録媒体は本発明を構成する。
【図１】
2011004190.tif 000003
【図２】
2011004190.tif 000004
【図３】
2011004190.tif 000005
【図４】
2011004190.tif 000006
【図５】
2011004190.tif 000007
【図６】
2011004190.tif 000008
【図７】
2011004190.tif 000009
【図８】
2011004190.tif 000010
【図９】
2011004190.tif 000011
【図１０】
2011004190.tif 000012
【図１１】
2011004190.tif 000013
【図１２】
2011004190.tif 000014
【図１３】
2011004190.tif 000015
【図１４】
2011004190.tif 000016
【図１５】
2011004190.tif 000017
【図１６】
2011004190.tif 000018
【図１７】
2011004190.tif 000019
【図１８】
2011004190.tif 000020
【図１９】
2011004190.tif 000021
【図２０】
2011004190.tif 000022