以下、本発明の実施の形態につき、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。
<<第1実施形態>>
まず、本発明の第1実施形態について説明する。図1は、本発明の第1実施形態に係る撮像装置1の全体ブロック図である。図1の撮像装置1は、静止画を撮影及び記録可能なデジタルスチルカメラ、又は、静止画及び動画を撮影及び記録可能なデジタルビデオカメラである。
撮像装置1は、撮像部11と、AFE(Analog Front End)12と、主制御部13と、内部メモリ14と、表示部15と、記録媒体16と、操作部17と、露光制御部18と、手ぶれ検出/補正部19と、を備えている。操作部17には、シャッタボタン17aが備えられている。
撮像部11は、光学系と、絞りと、CCD(Charge Coupled Devices)やCMOS(Complementary Metal Oxide Semiconductor)イメージセンサなどから成る撮像素子と、光学系や絞りを制御するためのドライバ(全て不図示)と、を有している。ドライバは、主制御部13からのAF/AE制御信号に基づいて、光学系のズーム倍率や焦点距離、及び、絞りの開度を制御する。撮像素子は、光学系及び絞りを介して入射した被写体を表す光学像を光電変換し、該光電変換によって得られた電気信号をAFE12に出力する。
AFE12は、撮像部11(撮像素子)から出力されるアナログ信号を増幅し、増幅されたアナログ信号をデジタル信号に変換する。AFE12は、このデジタル信号を、順次、主制御部13に出力する。
主制御部13は、CPU(Central Processing Unit)、ROM(Read Only Memory)及びRAM(Random Access Memory)等を備え、映像信号処理部としても機能する。主制御部13は、AFE12の出力信号に基づいて、撮像部11によって撮影された画像(以下、「撮影画像」ともいう)を表す映像信号を生成する。また、主制御部13は、表示部15の表示内容を制御する表示制御手段としての機能をも備え、表示に必要な制御を表示部15に対して行う。
内部メモリ14は、SDRAM(Synchronous Dynamic Random Access Memory)等にて形成され、撮像装置1内で生成された各種データを一時的に記憶する。表示部15は、液晶ディスプレイパネル等から成る表示装置であり、主制御部13の制御の下、直前のフレームにて撮影された画像や記録媒体16に記録されている画像などを表示する。記録媒体16は、SD(Secure Digital)メモリカード等の不揮発性メモリであり、主制御部13による制御の下、撮影画像などを記憶する。
操作部17は、外部からの操作を受け付ける。操作部17に対する操作内容は、主制御部13に伝達される。シャッタボタン17aは、静止画の撮影及び記録を指示するためのボタンである。
露光制御部18は、撮像部11の撮像素子の露光量が最適化されるように、撮像素子の各画素の露光時間を制御する。また、主制御部13から露光制御部18に対して露光時間制御信号が与えられている場合、露光制御部18は、その露光時間制御信号に従って露光時間を制御する。
撮像装置1の動作モードには、静止画または動画の撮影及び記録が可能な撮影モードと、記録媒体16に記録された静止画または動画を表示部15に再生表示する再生モードと、が含まれる。操作部17に対する操作に応じて、各モード間の遷移は実施される。
撮影モードにおいて、撮像部11は、所定のフレーム周期(例えば、1/60秒)にて順次撮影を行う。主制御部13は、各フレームにて撮像部11の出力からスルー表示用画像を生成し、順次得られるスルー表示用画像を表示部15に順次更新表示させる。
撮影モードにおいて、シャッタボタン17aが押下された際、主制御部13は、1枚の撮影画像を表す画像データを記録媒体16及び内部メモリ14に格納する(即ち、記憶させる)。この撮影画像は、手ぶれに起因するぶれを含みうる画像であり、後に、操作部17等を介して与えられた補正指示に従って或いは自動的に手ぶれ検出/補正部19によって補正される。このため、以下、シャッタボタン17aの押下に伴う上記1枚の撮影画像を、特に「補正対象画像」と呼ぶ。また、補正対象画像に含まれるぶれが手ぶれ検出/補正部19によって検出されるため、補正対象画像を「検出対象画像」と言い換えることもできる。
手ぶれ検出/補正部19は、角速度センサ等の手ぶれ検出センサを用いることなく、撮像部11の出力信号から得られる画像データに基づいて補正対象画像に含まれるぶれを検出し、その検出結果に従って補正対象画像を補正することにより、ぶれを除去或いは低減した補正画像を生成する。
以下、手ぶれ検出/補正部19の機能を詳細に説明する実施例として、第1〜第5実施例を説明する。或る実施例に記載した事項は、矛盾なき限り、他の実施例にも適用可能である。尚、第1〜第4実施例における記述(及び後述の第2実施形態における記述)において、画像などが記憶される「メモリ」とは、内部メモリ14又は手ぶれ検出/補正部19(第2実施形態では、手ぶれ検出/補正部20)内に設けられた図示されないメモリを意味するものとする。
[第1実施例]
まず、第1実施例について説明する。図2及び図3を参照する。図2は、第1実施例に係る手ぶれ検出及び手ぶれ補正の動作の流れを表すフローチャートである。図3は、この動作の流れの一部を表す概念図である。この動作の流れを、図2のフローチャートに沿って説明する。
撮影モードにおいて、シャッタボタン17aが押下されると通常露光撮影を行い、これによって生成された補正対象画像をメモリ上に記憶する(ステップS1及びS2)。第1実施例における該補正対象画像を、以下、補正対象画像A1と呼ぶ。
次に、ステップS3において、補正対象画像A1を得る際の露光時間T1と閾値TTHとを比較し、露光時間T1が閾値TTHより小さい場合、補正対象画像に手ぶれに由来するぶれは含まれていない(或いは極めて軽微である)とみなして、手ぶれ補正を行うことなく図2の処理を終了する。閾値TTHとしては、例えば、手ぶれ限界露光時間を用いる。手ぶれ限界露光時間は、手ぶれが無視できると判断される限界露光時間であり、焦点距離fDの逆数から算出される。
露光時間T1が閾値TTHより大きい場合、ステップS4に移行して、通常露光撮影に続けて短時間露光撮影を行い、この短時間露光撮影によって得られる撮影画像を参照画像としてメモリ上に記憶する。第1実施例における該参照画像を、以下、参照画像A2と呼ぶ。補正対象画像A1と参照画像A2は連続撮影によって得られる(即ち、隣接するフレームにて得られる)ことになるが、参照画像A2を得る際の露光時間が露光時間T1よりも短くなるように、主制御部13は、図1の露光制御部18を制御する。例えば、参照画像A2の露光時間は、T1/4、とされる。また、補正対象画像A1と参照画像A2の画像サイズは等しい。
次に、ステップS5において、補正対象画像A1の中から特徴的な小領域を抽出し、この抽出された小領域内の画像を小画像A1aとしてメモリ上に記憶する。特徴的な小領域とは、抽出元画像の中でエッジ成分が比較的多い(換言すれば、コントラストが比較的強い)矩形領域のことを指し、例えば、ハリス(Harris)のコーナ検出器を用いて128×128画素の小領域を特徴的な小領域として抽出する。このように、特徴的な小領域は、その小領域内の画像のエッジ成分の大きさ(またはコントラスト量)に基づいて選定される。
次に、ステップS6において、補正対象画像A1から抽出された小領域と同一座標の小領域を参照画像A2から抽出し、参照画像A2から抽出された小領域内の画像を小画像A2aとしてメモリ上に記憶する。補正対象画像A1から抽出される小領域の中心座標(補正対象画像A1における中心座標)と参照画像A2から抽出される小領域の中心座標(参照画像A2における中心座標)は等しく、また、補正対象画像A1と参照画像A2の画像サイズは等しいため、両小領域の画像サイズも等しくされる。
参照画像A2の露光時間は比較的短いので、小画像A2aの信号対雑音比(以下、S/N比という)は比較的低い。そこで、ステップS7にて、小画像A2aに対してノイズ除去処理を行う。ノイズ除去後の小画像A2aを、小画像A2bとする。ノイズ除去は、線形フィルタ(加重平均フィルタ等)や非線形フィルタ(メディアンフィルタ等)を用いて小画像A2aをフィルタリングすることにより行われる。
小画像A2bは低輝度であるため、ステップS8において、小画像A2bの輝度レベルを増加させる。即ち例えば、小画像A2bの輝度レベルが小画像A1aの輝度レベルと等しくなるように(小画像A2bの平均輝度と小画像A1aの平均輝度が等しくなるように)、小画像A2bの各画素の輝度値に一定値を乗じるという輝度正規化処理を行う。このようにして輝度レベルを増加させた後の小画像A2bを、小画像A2cとする。
上述のようにして得られた小画像A1aを劣化画像として且つ小画像A2cを初期復元画像として取り扱った上で(ステップS9)、ステップS10にて、フーリエ反復法を実施し、画像劣化関数を求める。
フーリエ反復法を実施する際、初期の復元画像(復元画像の初期値)を与えてやる必要があるが、この初期の復元画像を初期復元画像と呼ぶ。
画像劣化関数として点広がり関数(Point Spread Function;以下、PSFと呼ぶ)を求める。理想的な点像が撮像装置1のぶれによって画像上で描く軌跡にあわせて重み付けがなされたオペレータ或るいは空間フィルタは、PSFと呼ばれ、手ぶれの数学モデルとして一般的に使用される。手ぶれは画像全体に対して一様な劣化を与えるため、小領域A1aに対して求めたPSFは、補正対象画像A1の全体に対するPSFとして利用することができる。
フーリエ反復法は、劣化を含む劣化画像から、劣化を除去或いは低減した復元画像を得る手法である(上記非特許文献1参照)。このフーリエ反復法を、図4及び図5を参照して詳細に説明する。図4は、図2のステップS10の処理の詳細フローチャートである。図5は、フーリエ反復法を実施する部位のブロック図である。
まず、ステップS101において、復元画像をf’とし、この復元画像f’に初期復元画像をセットする。即ち、初期の復元画像f’として上記の初期復元画像(本実施例において小画像A2c)を用いるようにする。次に、ステップS102において、劣化画像(本実施例において小画像A1a)をgとする。そして、劣化画像gをフーリエ変換したものをGとしてメモリ上に記憶しておく(ステップS103)。例えば、初期復元画像及び劣化画像の画像サイズが128×128画素の場合、f’及びgは、128×128の行列サイズを有する行列として表現できる。
次に、ステップS110において、復元画像f’をフーリエ変換したF’を求め、更にステップS111において、下記式(1)によりHを算出する。Hは、PSFをフーリエ変換したものに相当する。式(1)において、F’*は、F’の共役複素行列であり、αは、定数である。
次に、ステップS112において、Hを逆フーリエ変換することにより、PSFを得る。ここで得られるPSFをhとする。次に、ステップS113において、PSF hを下記式(2a)の拘束条件で修正した後、更に式(2b)の拘束条件にて修正する。
PSF hは、2次元の行列として表現されるため、この行列の各要素をh(x,y)で表す。PSFの各要素は、本来、0以上且つ1以下の値をとるはずである。従って、ステップS113において、PSFの各要素が0以上且つ1以下であるかを判断し、0以上且つ1以下となっている要素の値はそのままにする一方、1より大きな要素がある場合はその要素の値を1に修正し、且つ、0より小さい要素がある場合はその要素の値を0に修正する。これが、式(2a)の拘束条件による修正である。そして、この修正後のPSFの各要素の総和が1となるように、PSFを正規化する。この正規化が、式(2b)の拘束条件による修正である。
式(2a)及び(2b)の拘束条件によって修正されたPSFを、h'とする。
次に、ステップS114において、PSF h’をフーリエ変換したH’を求め、更にステップS115において、下記式(3)によりFを算出する。Fは、復元画像fをフーリエ変換したものに相当する。式(3)において、H’*は、H’の共役複素行列であり、βは、定数である。
次に、ステップS116において、Fを逆フーリエ変換することにより、復元画像を取得する。ここで得られる復元画像をfとする。次に、ステップS117において、復元画像fを下記式(4)の拘束条件で修正し、修正された復元画像を、新たにf’とする。
復元画像fは、2次元の行列として表現されるため、この行列の各要素をf(x,y)で表す。今、劣化画像及び復元画像の各画素の画素値が、0から255までのデジタル値にて表されるものとする。そうすると、復元画像fを表す行列の各要素(即ち、各画素値)は、本来、0以上且つ255以下の値をとるはずである。従って、ステップS117において、復元画像fを表す行列の各要素が0以上且つ255以下であるかを判断し、0以上且つ255以下となっている要素の値はそのままにする一方、255より大きな要素がある場合はその要素の値を255に修正し、且つ、0より小さい要素がある場合はその要素の値を0に修正する。これが、式(4)の拘束条件による修正である。
次に、ステップS118において、収束条件を満たすか否かを判断することによって、反復処理の収束判定を行う。
例えば、最新のF'と1つ前に得られたF'との差分の絶対値を収束判定の指標として用いる。この指標が所定の閾値以下の場合、収束条件が満たされると判断する一方、そうでない場合、収束条件は満たされないと判断する。
収束条件が満たされる場合、最新のH'を逆フーリエ変換したものを最終的なPSFとする。即ち、この最新のH'を逆フーリエ変換したものが、図2のステップS10で求められるべきPSFとなる。収束条件が満たされない場合、ステップS110に戻り、ステップS110〜S118の各処理を繰り返す。ステップS110〜S118の各処理の繰り返しにおいて、f'、F'、H、h、h'、H'、F及びf(図5参照)は、順次、最新のものに更新されていく。
収束判定の指標として、他の指標を用いることも可能である。例えば、最新のH'と1つ前に得られたH'との差分の絶対値を収束判定の指標として用いて、上記の収束条件の成立/不成立を判断してもよい。また例えば、上記式(2a)及び(2b)を用いたステップS113における修正量、或いは、式(4)を用いたステップS117における修正量を収束判定の指標として用いて、上記の収束条件の成立/不成立を判断してもよい。反復処理が収束に向かえば、それらの修正量が小さくなるからである。
また、ステップS110〜S118から成るループ処理の繰り返し回数が所定回数に達した場合、収束不可と判断して、最終的なPSFを算出することなく処理を終了するようにしてもよい。この場合、補正対象画像の補正は行われない。
図2の各ステップの説明に戻る。ステップS10にて、PSFが算出された後、ステップS11に移行する。ステップS11では、ステップS10で求められたPSFの逆行列の各要素を画像復元フィルタの各フィルタ係数として求める。この画像復元フィルタは、劣化画像から復元画像を得るためのフィルタである。実際には、上記式(3)の右辺の一部に相当する下記式(5)にて表される行列の各要素が、画像復元フィルタの各フィルタ係数に相当するため、ステップS10におけるフーリエ反復法の計算途中結果をそのまま利用可能である。但し、式(5)におけるH’*及びH’は、ステップS118の収束条件の成立直前に得られたH’*及びH’(即ち、最終的に得られたH’*及びH’)である。
ステップS11にて画像復元フィルタの各フィルタ係数が求められた後、ステップS12に移行し、この画像復元フィルタを用いて補正対象画像A1をフィルタリングすることにより、補正対象画像A1に含まれるぶれを除去或いは低減したフィルタリング画像を生成する。フィルタリング画像には、フィルタリングに伴うリンギングが含まれうるため、これをステップS13にて除去することにより、最終的な補正画像を生成する。
[第2実施例]
次に、第2実施例について説明する。
上述したように、撮影モードにおいて、撮像部11は、所定のフレーム周期(例えば、1/60秒)にて順次撮影を行い、主制御部13は、各フレームにて撮像部11の出力からスルー表示用画像を生成して、順次得られるスルー表示用画像を表示部15に順次更新表示させる。
スルー表示用画像は、動画用の画像であり、その画像サイズは、静止画としての補正対象画像のそれよりも小さい。補正対象画像は、撮像部11の撮像素子の有効撮像領域内における全画素の画素信号から生成される一方、スルー表示用画像は、該有効撮像領域の各画素の画素信号を間引きつつ生成される。撮影画像を、有効撮像領域内における全画素の画素信号から生成される画像と考えた場合、補正対象画像は、シャッタボタン17aの押下に従って通常露光撮影及び記録される撮影画像そのものであり、スルー表示用画像は、各フレームの撮影画像の間引き画像に相当する。
第2実施例では、補正対象画像が撮影されるフレームの直前或いは直後のフレームの撮影画像に基づくスルー表示用画像を参照画像として利用する。以下、補正対象画像が撮影されるフレームの直前のフレームのスルー表示用画像を利用する場合を例示する。
図6及び図7を参照する。図6は、第2実施例に係る手ぶれ検出及び手ぶれ補正の動作の流れを表すフローチャートである。図7は、この動作の流れの一部を表す概念図である。この動作の流れを、図6のフローチャートに沿って説明する。
撮影モードにおいて、上述の如く、各フレームにてスルー表示用画像を生成し、順次、それをメモリ上に更新記憶すると共に表示部15に更新表示する(ステップS20)。そして、シャッタボタン17aが押下されると通常露光撮影を行い、これによって生成された補正対象画像を記憶する(ステップS21及びS22)。第2実施例における該補正対象画像を、以下、補正対象画像B1と呼ぶ。この時点でメモリ上に記憶されているスルー表示用画像は、補正対象画像B1が撮影されるフレームの直前フレームの撮影によって得られるスルー表示用画像であり、これを、以下、参照画像B3と呼ぶ。
次に、ステップS23において、補正対象画像B1を得る際の露光時間T1と閾値TTHとを比較する。露光時間T1が上記閾値TTH(例えば、焦点距離fDの逆数)より小さい場合、補正対象画像に手ぶれに由来するぶれは含まれていない(或いは極めて軽微である)とみなして、手ぶれ補正を行うことなく図6の処理を終了する。
露光時間T1が閾値TTHより大きい場合、ステップS24に移行して、露光時間T1と参照画像B3を得る際の露光時間T3とを比較する。T1≦T3の場合、参照画像B3の方が手ぶれが大きいとみなし、手ぶれ補正を行わずに図6の処理を終了する。T1>T3の場合、ステップS25に移行し、ハリスのコーナ検出器などを用いて参照画像B3の中から特徴的な小領域を抽出し、この抽出された小領域内の画像を小画像B3aとしてメモリ上に記憶する。特徴的な小領域の意義及び抽出手法は、第1実施例で述べたものと同様である。
次に、ステップS26において、小画像B3aの座標に対応して、補正対象画像B1の中から小領域を抽出する。そして、補正対象画像B1から抽出したその小領域内の画像を補正対象画像B1と参照画像B3の画像サイズ比に応じて縮小した画像を、小画像B1aとしてメモリ上に記憶する。つまり、小画像B1aを生成する際、小画像B1aとB3aの画像サイズが等しくなるように、画像サイズの正規化処理を行う。
仮に補正対象画像B1と参照画像B3の画像サイズが等しくなるように参照画像B3を拡大したならば、補正対象画像B1から抽出される小領域の中心座標(補正対象画像B1における中心座標)と参照画像B3から抽出される小領域の中心座標(参照画像B3における中心座標)は一致する。但し、補正対象画像B1と参照画像B3の画像サイズは実際には異なるため、両小領域の画像サイズは、補正対象画像B1と参照画像B3の画像サイズ比に応じて異なる。従って、補正対象画像B1から抽出される小領域の画像サイズに対する参照画像B3から抽出される小領域の画像サイズの比を、補正対象画像B1の画像サイズに対する参照画像B3の画像サイズの比と一致させる。そして、最終的に小画像B1aとB3aの画像サイズが等しくなうように、補正対象画像B1から抽出される小領域内の画像を縮小することにより小画像B1aを得る。
次に、ステップS27において、小画像B1a及びB3aに対してエッジ抽出処理を施し、小画像B1b及びB3bを得る。例えば、小画像B1aの各画素に対して任意のエッジ検出オペレータを適用することにより小画像B1aのエッジ抽出画像を生成し、このエッジ抽出画像を小画像B1bとする。小画像B3bについても同様である。
この後、ステップS28において、小画像B1bとB3bに対して輝度正規化処理を行う。つまり、小画像B1bとB3bの輝度レベルが等しくなるように(小画像B1bの平均輝度と小画像B3bの平均輝度が等しくなるように)、小画像B1b及び/又はB3bの各画素の輝度値に一定値を乗じる。この輝度正規化処理後の小画像B1b及びB3bを、小画像B1c及びB3cとする。
参照画像B3としてのスルー表示用画像は動画用の画像であるため、例えば、それが動画に適した色合いを持つように動画用の画像処理を介して得られる。一方、補正対象画像B1は、シャッタボタン17aの押下に伴って撮影された静止画であるため、それは静止画用の画像処理を介して得られる。両画像処理間の相違に起因して、被写体が同一であっても小画像B1aとB3a間で色合いなどが異なる。この相違は、エッジ抽出処理によって除去されるため、ステップS27にてエッジ抽出処理を行う。更に、補正対象画像B1と参照画像B3の輝度差はエッジ抽出処理によって概ね除去されるため、エッジ抽出処理によっても輝度差の影響が抑制される(即ち、ぶれ検出精度が向上する)が、完全に除去されるわけではないため、その後、ステップS28にて輝度正規化処理を行うようにしている。
上述のようにして得られた小画像B1cを劣化画像として且つ小画像B3cを初期復元画像として取り扱った上で(ステップS29)、ステップS10に移行し、ステップS10、S11、S12及びS13の各処理が順次実行される。
ステップS10〜S13の各処理内容は、第1実施例におけるそれと同様である。但し、ステップS10及びS11を介して得られる画像復元フィルタの各フィルタ係数(及びステップS10を介して得られるPSF)は、動画の画像サイズに適合したものであるため、それが静止画の画像サイズに適合するように縦横拡大処理を行う。
例えば、スルー表示用画像と補正対象画像との画像サイズ比が3:5であって且つステップS10及びS11を介して得られる画像復元フィルタのサイズが3×3である場合において、図8の符号101に示されるような各フィルタ係数が算出されたとき、縦横拡大処理によって図8の符号102に示されるような5×5サイズの画像復元フィルタの各フィルタ係数を生成する。そして、最終的に、5×5サイズの画像復元フィルタの各フィルタ係数を、ステップS11にて得られる各フィルタ係数とする。尚、図8の符号102に対応する例では、縦横拡大処理によって補間されたフィルタ係数を0としているが、線形補間などによって、補間されるべきフィルタ係数を算出するようにしても良い。
ステップS11にて画像復元フィルタの各フィルタ係数が求められた後、ステップS12に移行し、この画像復元フィルタを用いて補正対象画像B1をフィルタリングすることにより、補正対象画像B1に含まれるぶれを除去或いは低減したフィルタリング画像を生成する。フィルタリング画像には、フィルタリングに伴うリンギングが含まれうるため、これをステップS13にて除去することにより、最終的な補正画像を生成する。
[第3実施例]
次に、第3実施例について説明する。図9及び図10を参照する。図9は、第3実施例に係る手ぶれ検出及び手ぶれ補正の動作の流れを表すフローチャートである。図10は、この動作の流れの一部を表す概念図である。この動作の流れを、図9のフローチャートに沿って説明する。
撮影モードにおいて、各フレームにてスルー表示用画像を生成し、順次、それをメモリ上に更新記憶すると共に表示部15に更新表示する(ステップS30)。そして、シャッタボタン17aが押下されると通常露光撮影を行い、これによって生成された補正対象画像を記憶する(ステップS31及びS32)。第3実施例における該補正対象画像を、以下、補正対象画像C1と呼ぶ。この時点でメモリ上に記憶されているスルー表示用画像は、補正対象画像C1が撮影されるフレームの直前フレームの撮影によって得られるスルー表示用画像であり、これを、以下、参照画像C3と呼ぶ。
次に、ステップS33において、補正対象画像C1を得る際の露光時間T1と閾値TTHとを比較する。露光時間T1が上記閾値TTH(例えば、焦点距離fDの逆数)より小さい場合、補正対象画像に手ぶれに由来するぶれは含まれていない(或いは極めて軽微である)とみなして、手ぶれ補正を行うことなく図9の処理を終了する。
露光時間T1が閾値TTHより大きい場合、露光時間T1と参照画像C3を得る際の露光時間T3とを比較し、T1≦T3の場合、参照画像C3の方が手ぶれが大きいとみなして、以下、第1実施例と同様の手ぶれ検出及び手ぶれ補正を実行する(即ち、図2のステップS4〜S13と同様の処理を行うようにする)。一方、T1>T3の場合、ステップS34に移行して、通常露光撮影に続けて短時間露光撮影を行い、この短時間露光撮影によって得られる撮影画像を参照画像C2としてメモリ上に記憶する。図9において、T1とT3の比較に関する処理内容の記載を省略しており、以下、T1>T3である場合について説明する。
補正対象画像C1と参照画像C2は連続撮影によって得られる(即ち、隣接するフレームにて得られる)ことになるが、参照画像C2を得る際の露光時間が露光時間T1よりも短くなるように、主制御部13は、図1の露光制御部18を制御する。例えば、参照画像C2の露光時間は、T3/4とされる。また、補正対象画像C1と参照画像C2の画像サイズは等しい。
ステップS34の後、ステップS35に移行し、ハリスのコーナ検出器などを用いて参照画像C3の中から特徴的な小領域を抽出し、この抽出された小領域内の画像を小画像C3aとしてメモリ上に記憶する。特徴的な小領域の意義及び抽出手法は、第1実施例で述べたものと同様である。
次に、ステップS36において、小画像C3aの座標に対応して、補正対象画像C1の中から小領域を抽出する。そして、補正対象画像C1から抽出した小領域内の画像を補正対象画像C1と参照画像C3の画像サイズ比に応じて縮小した画像を、小画像C1aとしてメモリ上に記憶する。つまり、小画像C1aを生成する際、小画像C1aとC3aの画像サイズが等しくなるように、画像サイズの正規化処理を行う。同様に、小画像C3aの座標に対応して、参照画像C2の中から小領域を抽出する。そして、参照画像C2から抽出した小領域内の画像を参照画像C2と参照画像C3の画像サイズ比に応じて縮小した画像を、小画像C2aとしてメモリ上に記憶する。補正対象画像C1(または参照画像C2)から小画像C1a(または小画像C2a)を得る手法は、第2実施例にて説明した補正対象画像B1から小画像B1aを得る手法(図6のステップS26)と同様である。
次に、ステップS37において、小画像C3aを基準として、小画像C2aに対して輝度正規化処理を行う。つまり、小画像C3aとC2aの輝度レベルが等しくなるように(小画像C3aの平均輝度と小画像C2aの平均輝度が等しくなるように)、小画像C2aの各画素の輝度値に一定値を乗じる。この輝度正規化処理後の小画像C2aを、小画像C2bとする。
ステップS37の処理の後、ステップS38に移行する。ステップS38では、まず、小画像C3aと小画像C2bとの差分画像を生成する。小画像C3aとC2bとの間において差異がある部分についてのみ、差分画像の画素値は0以外の値をとる。そして、差分画像の各画素の画素値を重み付け係数と捉えて、小画像C3aとC2bを加重加算することにより、小画像C4aを生成する。
差分画像の各画素の画素値をID(p,q)で表し、小画像C3aの各画素の画素値をI3(p,q)で表し、小画像C2bの各画素の画素値をI2(p,q)で表し、小画像C4aの各画素の画素値をI4(p,q)で表すとすると、I4(p,q)は、下記式(6)によって表される。ここで、kは、定数であり、p及びqは、差分画像又は各小画像における、水平座標及び垂直座標を表す。
後述の説明からも明らかとなるが、小画像C4aは、補正対象画像C1のぶれに対応するPSFを算出するための画像として利用される。良好なPSFを得るためには、小画像C4aの中に、エッジ部分を適切に保存しておく必要がある。また、当然、小画像C4aのS/N比が高ければ高いほど良好なPSFを得ることができる。一般的に複数の画像を加算すればS/N比が向上するため、小画像C3aとC2bを加算することによって小画像C4aを生成する訳であるが、この加算によってエッジ部分がぼけてしまうと良好なPSFが得られない。
そこで、上述の如く、差分画像の画素値に応じた加重加算によって小画像C4aを生成するようにする。この加重加算の意義を、図11を参照して補足説明する。小画像C3aの露光時間は小画像C2bの露光時間よりも長いため、図11(a)に示す如く、同一のエッジ体を撮影した時における前者のぶれは後者のぶれよりも通常大きくなる。従って、両小画像を単純加算すると、図11(a)に示す如くエッジ部がぼやけてしまうが、図11(b)に示す如く、両小画像間の差分画像の画素値に応じて両小画像を加重加算すれば、エッジ部は比較的良好に保存される。小画像C3aのぶれが大きいことに起因して生じた相違部分110(エッジ部の劣化が異なる部分)では、ID(p,q)が大きくなって小画像C2bの重みが大きくなり、小画像C4aに小画像3aの大きなエッジ部劣化が反映されにくくなるからである。逆に、非相違部分111では、露光時間が比較的長い小画像3aの重みが大きくなるようにしているため、S/N比の向上効果(ノイズ低減効果)も得られる。
次に、ステップS39において、小画像C1aを基準として、小画像C4aに対して輝度正規化処理を行う。つまり、小画像C1aとC4aの輝度レベルが等しくなるように(小画像C1aの平均輝度と小画像C4aの平均輝度が等しくなるように)、小画像C4aの各画素の輝度値に一定値を乗じる。この輝度正規化処理後の小画像C4aを、小画像C4bとする。
上述のようにして得られた小画像C1aを劣化画像として且つ小画像C4bを初期復元画像として取り扱った上で(ステップS40)、ステップS10に移行し、ステップS10、S11、S12及びS13の各処理が順次実行される。
ステップS10〜S13の各処理内容は、第1実施例におけるそれと同様である。但し、ステップS10及びS11を介して得られる画像復元フィルタの各フィルタ係数(及びステップS10を介して得られるPSF)は、動画の画像サイズに適合したものであるため、それが静止画の画像サイズに適合するように縦横拡大処理を行う。この縦横拡大処理は、第2実施例で説明したものと同様である。
ステップS11にて画像復元フィルタの各フィルタ係数が求められた後、ステップS12に移行し、この画像復元フィルタを用いて補正対象画像C1をフィルタリングすることにより、補正対象画像C1に含まれるぶれを除去或いは低減したフィルタリング画像を生成する。フィルタリング画像には、フィルタリングに伴うリンギングが含まれうるため、これをステップS13にて除去することにより、最終的な補正画像を生成する。
[第4実施例]
次に、第4実施例について説明する。図12及び図13を参照する。図12は、第4実施例に係る手ぶれ検出及び手ぶれ補正の動作の流れを表すフローチャートである。図13は、この動作の流れの一部を表す概念図である。この動作の流れを、図12のフローチャートに沿って説明する。
第4実施例では、まず、ステップS50〜S56の各処理が実施される。ステップS50〜S56の各処理内容は、第3実施例におけるステップS30〜S36(図9参照)のそれらと同様であるため重複する説明を割愛する。但し、第3実施例における補正画像対象C1並びに参照画像C2及びC3は、第4実施例において、補正対象画像D1並びに参照画像D2及びD3に読み替えられる。また例えば、参照画像D2の露光時間は、T1/4とされる。
ステップS50〜S56を経て、補正対象画像D1並びに参照画像D2及びD3に基づく小画像D1a、D2a及びD3aが得られ、その後、ステップS57に移行する。
ステップS57では、小画像D2a及びD3aの内、何れか一方の小画像を小画像D4aとして選択する。選択は、様々な指標に基づいて行うことができる。
例えば、小画像D2aのエッジ強度と小画像D3aのエッジ強度を比較し、エッジ強度がより大きい小画像を小画像D4aとして選択する。小画像D4aは、フーリエ反復法の初期復元画像の基とされるが、エッジ強度が大きい画像ほどエッジ部に劣化が少なく、初期復元画像として好ましいと考えられるからである。例えば、小画像D2aの各画素に対して所定のエッジ検出オペレータを適用することにより小画像D2aのエッジ抽出画像を生成し、このエッジ抽出画像の画素値の総和を小画像D2aのエッジ強度とする。同様にして、小画像D3aのエッジ強度も算出される。
また例えば、参照画像D2の露光時間と参照画像D3の露光時間を比較し、より短い露光時間に対応する小画像を小画像D4aとして選択するようにしてもよい。露光時間が短い画像ほどエッジ部に劣化が少なく、初期復元画像として好ましいと考えられるからである。また例えば、図1の操作部17等を介して予め設定された選択情報(外部情報)に基づいて、小画像D2a及びD3aから小画像D4aを選択するようにしてもよい。また、上記のエッジ強度、露光時間及び選択情報を組み合せた指標値に基づいて、この選択を行うことも可能である。
次に、ステップS58において、小画像D1aを基準として、小画像D4aに対して輝度正規化処理を行う。つまり、小画像D1aとD4aの輝度レベルが等しくなるように(小画像D1aの平均輝度と小画像D4aの平均輝度が等しくなるように)、小画像D4aの各画素の輝度値に一定値を乗じる。この輝度正規化処理後の小画像D4aを、小画像D4bとする。
上述のようにして得られた小画像D1aを劣化画像として且つ小画像D4bを初期復元画像として取り扱った上で(ステップS59)、ステップS10に移行し、ステップS10、S11、S12及びS13の各処理が順次実行される。
ステップS10〜S13の各処理内容は、第1実施例におけるそれと同様である。但し、ステップS10及びS11を介して得られる画像復元フィルタの各フィルタ係数(及びステップS10を介して得られるPSF)は、動画の画像サイズに適合したものであるため、それが静止画の画像サイズに適合するように縦横拡大処理を行う。この縦横拡大処理は、第2実施例で説明したものと同様である。
ステップS11にて画像復元フィルタの各フィルタ係数が求められた後、ステップS12に移行し、この画像復元フィルタを用いて補正対象画像D1をフィルタリングすることにより、補正対象画像D1に含まれるぶれを除去或いは低減したフィルタリング画像を生成する。フィルタリング画像には、フィルタリングに伴うリンギングが含まれうるため、これをステップS13にて除去することにより、最終的な補正画像を生成する。
[第5実施例]
次に、第5実施例について説明する。第5実施例では、第1〜第4実施例で述べた手ぶれ検出及び手ぶれ補正を実現する構成について説明する。図14は、この構成を表すブロック図である。本実施例において述べられる補正対象画像は、第1〜第4実施例における補正対象画像(A1、B1、C1又はD2)であり、本実施例において述べられる参照画像は、第1〜第4実施例における参照画像(A2、B3、C2及びC3、又は、D2及びD3)である。
図14におけるメモリ31は、図1の内部メモリ14にて実現される、或いは、手ぶれ検出/補正部19内に設けられる。図14における、劣化画像/初期復元画像設定部32、フーリエ反復処理部33、フィルタリング部34及びリンギング除去部35は、図1の手ぶれ検出/補正部19に設けられる。
メモリ31は、補正対象画像及び参照画像を記憶する。劣化画像/初期復元画像設定部32は、メモリ31の記録内容に基づき、第1〜第4実施例に述べた手法にて劣化画像及び初期復元画像を設定し、これらをフーリエ反復処理部33に与える。例えば第1実施例を適用する場合、図2のステップS1〜S8の各処理を介して得られた小画像A1a及びA2cをそれぞれ劣化画像及び初期復元画像としてフーリエ反復処理部33に与える。
尚、劣化画像/初期復元画像設定部32に設けられた小画像抽出部36は、劣化画像及び初期設定画像の基となる各小画像(図3のA1a、A2a、図10のC1a、C2a、C3aなど)を補正対象画像及び参照画像から抽出する。
フーリエ反復処理部33は、与えられた劣化画像及び初期復元画像に基づいて、図4等を参照して説明したフーリエ反復法を実施する。画像復元フィルタ自体はフィルタリング部34に実装されており、フーリエ反復処理部33は、図2等のステップS10及びS11の各処理を実行することにより、その画像復元フィルタの各フィルタ係数を算出する。
フィルタリング部34は、算出された各フィルタ係数を有する画像復元フィルタを補正対象画像の各画素に適用して補正対象画像をフィルタリングすることにより、フィルタリング画像を生成する。画像復元フィルタのサイズは補正対象画像の画像サイズよりも小さいが、手ぶれは画像全体に一様な劣化を与えると考えられるため、この画像復元フィルタを補正対象画像の全体に対して適用することによって、補正対象画像の全体のぶれが除去される。
リンギング除去部35は、生成されたフィルタリング画像と補正対象画像とを加重平均することにより、最終的な補正画像を生成する。例えば、加重平均は、画素ごとに行われ、画素ごとの加重平均の比率は、補正対象画像の各画素のエッジ強度に応じて定められる。
生成された最終的な補正画像は、補正対象画像に含まれるぶれが除去或いは低減され且つフィルタリングに伴うリンギングが除去或いは低減された画像となる。但し、フィルタリング部34にて生成されるフィルタリング画像もぶれが除去或いは低減された画像であるため、フィルタリング画像も補正画像の1つである、と解釈することが可能である。
尚、上記リンギングを除去する手法は公知であるため、詳細な説明を割愛する。その手法として、例えば特開2006−129236号公報に記載の手法を用いればよい。
通常露光撮影よりも短い露光時間の撮影によって参照画像は、低輝度であるものの含まれる手ぶれ量が少ないため、それのエッジ成分は、手ぶれのない画像のエッジ成分に近い。従って、上述の如く、この参照画像から得られる画像をフーリエ反復法における初期復元画像(復元画像の初期値)とする。
フーリエ反復法によるループ処理の繰り返しによって、復元画像(f')は、手ぶれが極力除去された画像に徐々に近づいていくが、初期復元画像自体が既に手ぶれのない画像に近いため、従来の如くランダム画像や劣化画像を初期復元画像とするよりも収束が早くなる(最短では、1回のループ処理で収束する)。この結果、手ぶれ情報(PSF又は画像復元フィルタのフィルタ係数)作成用の処理時間及び手ぶれ補正用の処理時間が短縮される。また、初期復元画像が収束すべき画像からかけ離れていると局所解(真に収束すべき画像とは異なる画像)に収束する確率が高くなるが、上述のように初期復元画像を設定することにより、局所解に収束する確率が低くなる(即ち、手ぶれ補正に失敗する確率が低くなる)。
また、手ぶれは画像全体に一様な劣化を与えると考えられるため、各画像から小領域を抽出して各小領域の画像データから手ぶれ情報(PSF又は画像復元フィルタのフィルタ係数)を作成し、それを画像全体に適用する。これにより、必要な演算量が低減され、手ぶれ情報作成用の処理時間及び手ぶれ補正用の処理時間が短縮される。勿論、必要回路の規模縮小化やそれに伴うコストダウン効果も見込める。
この際、各実施例で述べたように、エッジ成分を多く含む特徴的な小領域を自動的に抽出するようにする。PSFの算出元画像におけるエッジ成分の増大は、雑音成分に対する信号成分の割合の増大を意味するため、特徴的な小領域の抽出によって雑音の影響が小さくなり、手ぶれ情報をより正確に検出することができるようになる。
また、第2実施例では参照画像取得用の専用の撮影を必要とせず、第1、第3及び第4実施例でも参照画像取得用の専用の撮影(短時間露光撮影)は1回分であるため、撮影時の負荷増大は殆どない。また、言うまでもないが、角速度センサ等を用いることなく手ぶれ検出及び手ぶれ補正を行うため、撮像装置1の低コスト化が図られる。
尚、PSFを求めるための処理例として、フーリエ反復法に基づく図4の処理を上述したが、これに対する補足説明及び変形例を付言する(図5も参照)。図4の処理では、空間領域上における劣化画像g及び復元画像f’がフーリエ変換によって周波数領域上に変換されることで、周波数領域上の劣化画像gを表す関数G及び周波数領域上の復元画像f’を表す関数F’が求められる(尚、周波数領域とは、勿論、二次元の周波数領域である)。求められた関数G及びF’から周波数領域上のPSFを表す関数Hが求められ、この関数Hは逆フーリエ変換によって空間領域上の関数、即ち、PSF hに変換される。このPSF hは、所定の拘束条件を用いて修正され、修正後のPSF h'が求められる。このPSFを修正する処理を、以下「第1の修正処理」と呼ぶ。
PSF h'はフーリエ変換によって再度、周波数領域上に変換されて関数H’が求められ、関数H’と関数Gから周波数領域上の復元画像を表す関数Fが求められる。この関数Fを逆フーリエ変換することによって空間領域上の復元画像fが得られ、この復元画像fが所定の拘束条件を用いて修正されて、修正後の復元画像f’が求められる。この復元画像を修正する処理を、以下「第2の修正処理」と呼ぶ。
上述の例では、この後、図4のステップS118にて収束条件が満たされるまで、修正後の復元画像f’を用いて上述の処理が反復されると述べた。また、反復処理が収束に向かえば修正量が小さくなるという特性を考慮し、この収束条件の成立/不成立を、第1の修正処理に対応するステップS113での修正量、又は、第2の修正処理に対応するステップS117での修正量に基づいて判断しても良いとも述べた。この判断を修正量に基づいて行う場合、基準修正量を予め設定しておき、ステップS113での修正量又はステップS117での修正量と基準修正量とを比較して、前者が後者よりも小さい場合に収束条件が成立すると判断することになるが、基準修正量を十分に大きく設定しておけば、ステップS110〜S117の処理は反復実行されない。つまり、この場合、第1の修正処理を1回だけ行って得たPSF h'が、図2等のステップS10で導出されるべき最終的なPSFとなる。このように、図4の処理を用いたとしても、第1及び第2の修正処理が繰り返し実行されるとは限らない。
第1及び第2の修正処理の繰り返し実行回数の増大は、最終的に求まるPSFの精度向上に寄与するが、本実施形態では初期復元画像自体が既に手ぶれのない画像に近いため、第1の修正処理を1回だけ行って得たPSF h’の精度も、実用上、問題ない程度に高い。これを考慮すれば、ステップS118の判定処理自体を省略することも可能である。この場合、1回だけステップS113の処理を実行することで求まるPSF h’が図2等のステップS10で導出されるべき最終的なPSFとなり、1回だけステップS114の処理を実行することで求まる関数H’から、図2等のステップS11で導出されるべき画像復元フィルタの各フィルタ係数が求まる。故に、ステップS118の処理を省略する場合は、ステップS115〜S117の処理も割愛される。
第1実施形態に対する変形例または注釈事項として、以下に、注釈1〜注釈6を記す。各注釈に記載した内容は、矛盾なき限り、任意に組み合せることが可能である。
[注釈1]
第1、第3又は第4実施例において(図3、図10又は図13参照)、参照画像A2、C2又はD2は補正対象画像を得るための通常露光撮影の直後の短時間露光撮影によって得られると説明したが、それらを、その通常露光撮影の直前の短時間露光撮影によって得るようにしても構わない。この場合、第3又は第4実施例における参照画像C3又はD3を、補正対象画像を撮影するフレームの直後のフレームにおけるスルー表示用画像とすればよい。
[注釈2]
各実施例では、各小画像からフーリエ反復法に対する劣化画像及び初期復元画像を生成する過程において、各小画像に対して、ノイズ除去処理、輝度正規化処理、エッジ抽出処理及び画像サイズ正規化処理(図3、図7、図10及び図13参照)の内の何れか1以上の処理を適用している。各実施例で述べたこれらの処理の適用方法は、あくまで例であり、様々に変更可能である。極端には、各実施例における劣化画像及び初期復元画像の生成過程において、各小領域に対して上記の4つの処理の全てを施すことも可能である(但し、第1実施例においては、画像サイズ正規化処理は無意味である)。
[注釈3]
補正対象画像または参照画像からエッジ成分を比較的多く含む特徴的な小領域を抽出する手法として、様々な手法が採用可能である。例えば、オートフォーカス制御において算出されるAF評価値を流用して、この抽出を行ってもよい。このオートフォーカス制御は、TTL(Through The Lends)方式のコントラスト検出法を用いる。
撮像装置1にはAF評価部(不図示)が設けられており、AF評価部は、各撮影画像(又は各スルー表示用画像)を複数の分割領域に分割して、分割領域内の画像のコントラスト量に応じたAF評価値を分割領域ごとに算出する。図1の主制御部13は、上記複数の分割領域の内の何れかの分割領域についてのAF評価値を参照して、このAF評価値が最大値(或いは極大値)をとるように山登り制御によって撮像部11のフォーカスレンズの位置を制御することにより、被写体の光学像を撮像素子の撮像面上に結像させる。
このようなオートフォーカス制御が実行される場合において、補正対象画像または参照画像から特徴的な小領域を抽出する際、その抽出元画像の各分割領域についてのAF評価値を参照するようにする。例えば、抽出元画像の各分割領域についてのAF評価値の内、最大のAF評価値を特定し、その最大のAF評価値に対応する分割領域(又は該分割領域を基準とした領域)を特徴的な小領域として抽出するようにする。AF評価値は、分割領域内の画像のコントラスト量(或いはエッジ成分)の増大に伴って増大するため、これによっても、エッジ成分を比較的多く含む小領域を特徴的な小領域として抽出することが可能である。
[注釈4]
上述した説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。
[注釈5]
また、図1の撮像装置1は、ハードウェア、或いは、ハードウェアとソフトウェアの組み合わせによって実現可能である。特に、図14に示される各部位(但し、メモリ31を除く)の機能は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせによって実現可能であり、また、それらの各機能を撮像装置1の外部装置(コンピュータ等)にて実現することも可能である。
ソフトウェアを用いて撮像装置1を構成する場合、ソフトウェアにて実現される部位についてのブロック図は、その部位の機能ブロック図を表すことになる。図14の各部位(但し、メモリ31を除く)にて実現される機能の全部または一部を、プログラムとして記述し、該プログラムをプログラム実行装置(例えばコンピュータ)上で実行することによって、その機能の全部または一部を実現するようにしてもよい。
[注釈6]
図14において、劣化画像/初期復元画像設定部32とフーリエ反復処理部33はぶれ検出装置を形成し、ぶれ補正装置は、フィルタリング部34及びリンギング除去部35を含んで構成される。但し、このぶれ補正装置から、リンギング除去部35を省略することも可能である。また、このぶれ補正装置内に、上記ぶれ検出装置が含まれていると考えることもできる。また、上記ぶれ検出装置はメモリ31(保持手段)を含みうる。尚、図1においては、手ぶれ検出/補正部19が、ぶれ検出装置として機能すると共にぶれ補正装置としても機能する。
フーリエ反復処理部33、又は、劣化画像/初期復元画像設定部32とフーリエ反復処理部33は、手ぶれ情報(PSF又は画像復元フィルタのフィルタ係数)を作成する手段として機能する。
<<第2実施形態>>
次に、本発明の第2実施形態について説明する。第2実施形態は、第1実施形態の変形例に相当し、第1実施形態の記載事項は、矛盾なき限り、第2実施形態にも適用される。図17は、第2実施形態に係る撮像装置1aの全体ブロック図である。撮像装置1aは、符号11〜18及び20にて参照される各部位によって形成される。即ち、図1の撮像装置1における手ぶれ検出/補正部19を手ぶれ検出/補正部20に置き換えることで撮像装置1aは形成され、その他の点において両撮像装置は同様であるので、同様の部分の重複する説明を割愛する。
撮像装置1aでは、撮影モードにおいてシャッタボタン17aが押下されると通常露光撮影を行い、これによって得られた撮影画像を補正対象画像E1としてメモリ上に記憶する。補正対象画像E1を得る際の露光時間(露光時間の長さ)をT1にて表す。また、補正対象画像E1を得る通常露光撮影の直前又は直後に短時間露光撮影を行い、この短時間露光撮影によって得られる撮影画像を参照画像E2としてメモリ上に記憶する。補正対象画像E1と参照画像E2は連続撮影によって得られる(即ち、隣接するフレームにて得られる)ことになるが、参照画像E2を得る際の露光時間が露光時間T1よりも短くなるように、主制御部13は、露光制御部18を介して撮像部11を制御する。例えば、参照画像E2の露光時間は、T1/4、とされる。また、補正対象画像E1と参照画像E2の画像サイズは等しいものとする。
尚、露光時間T1と第1実施形態で述べた閾値TTH(手ぶれ限界露光時間)を比較し、前者が後者より小さい場合、補正対象画像E1に手ぶれに由来するぶれは含まれていない(或いは極めて軽微である)とみなして、手ぶれ補正を行わないようにしてもよい。また、その場合は、参照画像E2を得るための短時間露光撮影を不実行とするとよい。
補正対象画像E1と参照画像E2が得られた後、参照画像E2から特徴的な小領域を抽出する一方で、参照画像E2から抽出された小領域に対応する小領域を補正対象画像E1から抽出する。抽出される小領域を、例えば、128×128画素の小領域とする。特徴的な小領域の意義及び抽出手法は第1実施形態で述べた通りである。本実施形態では、参照画像E2から複数の特徴的な小領域を抽出するものとする。このため、補正対象画像E1からもそれと同数の小領域が抽出される。今、図18に示す如く、参照画像E2から8つの小領域が抽出されたものとし、その8つの小領域内の画像(斜線領域内画像)を小画像GR1〜GR8と呼ぶ。一方で、小画像GR1〜GR8に対応して補正対象画像E1から抽出された8つの小領域内の画像(斜線領域内画像)を小画像GL1〜GL8と呼ぶ。
iを1以上8以下の整数であるとした場合、小画像GRiと小画像GLiの画像サイズは等しい。補正対象画像E1と参照画像E2との間の位置ずれを無視できる場合は、参照画像E2から抽出される小画像GRiの中心座標(参照画像E2内における中心座標)と、その小画像GRiに対応して補正対象画像E1から抽出される小画像GLiの中心座標(補正対象画像E1内における中心座標)とが等しくなるように小領域の抽出を行う。その位置ずれを無視できない場合は、テンプレートマッチング法などを利用して対応小領域の探索を行うようにしても良い(尚、これは、第1実施形態にも当てはまる)。即ち例えば、小画像GRiをテンプレートとし、周知のテンプレートマッチング法を用いて、そのテンプレートとの類似度が最も高い小領域を補正対象画像E1内から探索し、探索された小領域内の画像を小画像GLiとする。
図19に、小画像GL1及びGR1の拡大図を示す。図19では、輝度の高い部分を白く、輝度の低い部分を黒く表している。また、水平方向及び垂直方向に輝度変化が急峻なエッジが小画像GL1内及び小画像GR1内に存在していた場合を想定する。更に、小画像GL1を含む補正対象画像E1の露光期間内に水平方向の手ぶれが撮像装置1aに作用していた場合を想定する。このため、短時間露光撮影に基づく小画像GR1内ではエッジがぼけていないが、通常露光撮影に基づく小画像GL1内ではエッジが水平方向にぼけている。
このような小画像GR1に対して、任意のエッジ検出オペレータを用いたエッジ抽出処理を施すことにより、図20に示すようなエッジ抽出画像ER1を生成する。図20のエッジ抽出画像ER1において、エッジ強度の強い部分を白く、エッジ強度の弱い部分を黒く表している。小画像GR1内の直線状のエッジに沿った部分がエッジ強度の強い部分として、エッジ抽出画像ER1内に現れる。このエッジ抽出画像ER1に公知のハフ変換を適用することによりエッジに沿った直線を抽出する。抽出された直線を小画像GR1に重畳したものを、図20の右方に示す。今の例では、小画像GR1に対して、垂直方向に沿って伸びる直線HR11と水平方向に沿って伸びる直線HR12が抽出される。
この後、直線HR11及びHR12に対応する直線HL11及びHL12を小画像GL1から抽出する。図21に、抽出された直線HL11及びHL12を小画像GL1に重畳して示す。図21には、直線HR11及びHR12を重畳した小画像GR1も示されている。対応する直線の方向は互いに等しい。即ち、直線HL11と直線HR11の伸びる方向は等しく、直線HL12と直線HR12の伸びる方向は等しい。
各直線を抽出した後、各直線の直交方向における、小画像内の輝度値の分布を求める。この分布は、抽出された各小画像に対して求められる。小画像GL1及びGR1に関しては、直線HL11と直線HR11は画像の垂直方向に平行であり、且つ、直線HL12と直線HR12は画像の水平方向に平行である。従って、直線HL11と直線HR11に着目した場合、画像の水平方向における輝度値の分布が求められ、直線HL12と直線HR12に着目した場合、画像の垂直方向における輝度値の分布が求められる。
輝度値の分布の求め方を図22及び図23を参照して、具体的に説明する。図22において、小画像GL1内に示された各実線矢印は直線HL11に直交する方向に輝度値が走査される様子を示している。直線HL11の直交方向は水平方向であるため、小画像GL1の左端の或る点を起点として左から右に向かって走査しつつ小画像GL1内の各画素の輝度値を取得していくことにより、直線HL11の直交方向における輝度値の分布を求める。但し、直線HL11に対応するエッジが存在する部分を横切るように走査を行うものとする。即ち、輝度値の勾配が急峻な部分に対して輝度値の分布を求めるようにする。従って、図22の破線矢印に沿っては、走査は行われない(後述する図23でも同様)。1つのライン(今の場合、水平ライン)のみに着目して求めた分布ではノイズ成分の影響が大きいので、小画像GL1内の複数のラインに対して同様の分布を求め、求めた複数の分布の平均を、直線HL11に対して最終的に求めるべき分布201とする。
同様にして、直線HR11に対しても分布を求める。図22において、小画像GR1内に示された各実線矢印は直線HR11に直交する方向に輝度値が走査される様子を示している。直線HR11の直交方向は水平方向であるため、小画像GR1の左端の或る点を起点として左から右に向かって走査しつつ小画像GR1内の各画素の輝度値を取得していくことにより、直線HR11の直交方向における輝度値の分布を求める。但し、直線HR11に対応するエッジが存在する部分を横切るように走査を行うものとする。即ち、輝度値の勾配が急峻な部分に対して輝度値の分布を求めるようにする。従って、図22の破線矢印に沿っては、走査は行われない(後述する図23でも同様)。1つのライン(今の場合、水平ライン)のみに着目して求めた分布ではノイズ成分の影響が大きいので、小画像GR1内の複数のラインに対して同様の分布を求め、求めた複数の分布の平均を、直線HR11に対して最終的に求めるべき分布202とする。
図22の分布201及び202を示す各グラフにおいて、横軸は画素の水平位置を表し、縦軸は輝度値を表している。分布201及び202から分かるように、画像の垂直方向に伸びるエッジ部分を境に輝度値は急激に変化しているが、通常露光撮影に対応する分布201では、露光期間中の手ぶれに由来して、その輝度値の変化が比較的緩やかとなっている。直線HL11に対応する小画像GL1内のエッジ部分において、輝度値が変化し始めてから変化し終わるまでの水平方向の画素数をWL11で表し、直線HR11に対応する小画像GR1内のエッジ部分において、輝度値が変化し始めてから変化し終わるまでの水平方向の画素数をWR11で表す。また、このようにして求められたWL11やWR11を、エッジ幅と呼ぶ。この例では、「WL11>WR11」となっており、参照画像E2に含まれるぶれを無視した場合、エッジ幅の差「WL11−WR11」は、補正対象画像E1の露光期間中に生じた水平方向の手ぶれ量を画素を単位として表した値と考えることができる。
上述のエッジ幅を求める処理を、小画像GL1及びGR1から抽出された各直線に対して実行する。今の例の場合、小画像GL1及びGR1から抽出された直線HL12及びHR12に対しても、上述のエッジ幅を求める。
図23において、小画像GL1内に示された各実線矢印は直線HL12に直交する方向に輝度値が走査される様子を示している。直線HL12に対応するエッジが存在する部分を横切るように垂直方向に走査しつつ小画像GL1内の各画素の輝度値を取得していくことにより、直線HL12の直交方向における輝度値の分布を求める。走査を複数のライン(今の場合、垂直ライン)に対して行い、得られた複数の分布の平均を、直線HL12に対して最終的に求めるべき分布211とする。図23において、小画像GR1内に示された各実線矢印は直線HR12に直交する方向に輝度値が走査される様子を示している。直線HR12に対応するエッジが存在する部分を横切るように垂直方向に走査しつつ小画像GR1内の各画素の輝度値を取得していくことにより、直線HR12の直交方向における輝度値の分布を求める。走査を複数のライン(今の場合、垂直ライン)に対して行い、得られた複数の分布の平均を、直線HR12に対して最終的に求めるべき分布212とする。
そして、分布211及び212に基づいてエッジ幅WL12及びWR12を求める。エッジ幅WL12は、直線HL12に対応する小画像GL1内のエッジ部分において輝度値が変化し始めてから変化し終わるまでの垂直方向の画素数を表し、エッジ幅WR12は、直線HR12に対応する小画像GR1内のエッジ部分において輝度値が変化し始めてから変化し終わるまでの垂直方向の画素数を表す。この例では、「WL12≒WR12」となっている。これは、補正対象画像E1の露光期間中に垂直方向の手ぶれが殆ど発生しなかったことに対応している。
小画像GL1及びGR1に着目してエッジ幅の算出法を説明したが、他の小画像GL2〜GL8及びGR2〜GR8に対しても上述と同様にしてエッジ幅及びエッジ幅の差を求める。小画像の番号を表す変数をiとし、直線の番号を表す変数をjとする(i及びjは整数)。そうすると、小画像GLi及びGRiから直線HLij及びHRijが抽出された後、直線HLij及びHRijに対するエッジ幅WLij及びWRijが求められる。その後、エッジ幅の差を表すDijが、式「Dij=WLij−WRij」に従って算出される。仮に、小画像GL1〜GL8の夫々から2本ずつ直線が抽出されたならば、計16個のエッジ幅の差Dijが求められる(ここで、iは1以上8以下の整数、jは1又は2)。
本実施形態では、求められた複数の差Dijの最大値に対応する直線ペアを手ぶれ検出用直線ペアとして特定し、その手ぶれ検出直線ペアに対応するエッジ幅の差及び直線方向から補正対象画像E1の全体に対するPSFを求める。
例えば、求められた複数の差Dijの内、図22に対応する差D11(=WL11−WR11)が最大であった場合を考える。この場合、直線HL11及びHR11が手ぶれ検出用直線ペアとして特定され、直線HL11及びHR11に対応する差D11が最大差を表す変数DMAXに代入される。そして、直線HL11の直交方向に画像を平滑化するための平滑化関数を作成する。この平滑化関数は、図24に示すような、直線HL11の直交方向におけるタップ数(フィルタサイズ)がDMAXの空間フィルタ220で表される。この空間フィルタ220では、直線HL11の直交方向に沿った要素に対してのみ0以外の一定のフィルタ係数が与えられ、その他の要素には0のフィルタ係数が与えられる。図24の空間フィルタは、5×5のフィルタサイズを有し、垂直方向の真ん中の行の各要素に対してのみ1のフィルタ係数が与えられており、他の要素のフィルタ係数は0となっている。尚、実際には、全フィルタ係数の総和が1となるように正規化が行われる。
そして、手ぶれ検出/補正部20は、この平滑化関数を補正対象画像E1の全体にとってのPSFとして取り扱うことにより、補正対象画像E1のぶれを補正する。上記のPSFは、補正対象画像E1の露光期間中に撮像装置1aに作用した手ぶれの方向及び速度が一定であるという仮定の下で、良好に機能する。この仮定が正しく、上記の平滑化関数が正確に補正対象画像E1のPSFを表しているならば、ぶれのない理想画像に空間フィルタ220を用いた空間フィルタリングを施すことで補正対象画像E1と同等の画像が得られることになる。
図25は、上述の処理動作を含む、手ぶれ検出の動作の流れを表すフローチャートである。図25に示すステップS151〜S155の各処理は、手ぶれ検出/補正部20によって実行される。
補正対象画像E1及び参照画像E2を取得した後、ステップS151において、参照画像E2から複数の特徴的な小領域を抽出し、各小領域内の画像を小画像GRiとしてメモリ上に記憶する。続くステップS152において、各小画像GRiに対応する小領域を補正対象画像E1から抽出し、補正対象画像E1から抽出した小領域内の画像を小画像GLiとしてメモリ上に記憶する。この時点で、例えば、図18に示す如く小画像GL1〜GL8と小画像GR1〜GR8が生成される。
ステップS152の処理の後、ステップS153に移行する。ステップS153では、変数iに対するループ処理が繰り返し実行され、そのループ処理に変数jに対するループ処理が内在している。ステップS153では、小画像GRiのエッジ抽出画像ERiが生成され、そのエッジ抽出画像ERiから1又は複数の直線HRijが抽出され、更に、直線HRijに対応する直線HLijが小画像GLiから抽出される。そして、互いに対応する直線HLij及びHRijに着目し、それらのエッジ幅WLij及びWRijを算出して、その差Dij(=WLij−WRij)を求める。ステップS153では、変数iがとりうる値の夫々に対して且つ変数jがとりうる値の夫々に対して同様の処理を行う。この結果、ステップS153からステップS154に移行する時点では、iとjの全ての組み合わせに対する差Dijが算出されている。例えば、ステップS151にて8個の小領域が抽出されることによって小画像GR1〜GR8が生成され且つ小画像GR1〜GR8の夫々から2本ずつ直線が抽出されたならば、計16個のエッジ幅の差Dijが求められる(ここで、iは1以上8以下の整数、jは1又は2)。
ステップS154では、ステップS153で求められた全てのエッジ幅の差Dijの内の最大値DMAXを特定し、その最大値DMAXに対応する直線ペアを手ぶれ検出用直線ペアとして特定する。更に、ステップS155において、その手ぶれ検出用直線ペアと最大値DMAXから、平滑化関数として表されるPSFを算出する。例えば、求められた全ての差Dijの内、図22に対応する差D11(=WL11−WR11)が最大値DMAXであった場合は、直線HL11及びHR11が手ぶれ検出用直線ペアとして特定されて、図24の空間フィルタ220によって表されるPSFが算出される。
PSFが算出された後の手ぶれ補正動作は、第1実施形態で述べたものと同様である。即ち、手ぶれ検出/補正部20は、ステップS155で求めたPSFの逆行列の各要素を画像復元フィルタの各フィルタ係数として求め、この各フィルタ係数を有する画像復元フィルタを用いて補正対象画像E1の全体をフィルタリングする。そして、このフィルタリング後の画像、又は、それにリンギング除去処理を施した画像を、最終的な補正画像とする。この補正画像は、補正対象画像E1に含まれるぶれが除去或いは低減された画像となる。
本実施形態では、補正対象画像E1の露光期間中に撮像装置1aに作用した手ぶれの方向及び速度が一定であるという仮定の下で画像劣化関数としてのPSF(換言すれば、畳み込み劣化関数)を求めているため、その仮定が当てはまらないような手ぶれに対しては、補正効果は低くなる。しかしながら、少ない処理量にて簡便にPSFを求めることができるため、実用的である。
また、本実施形態に上述の第2実施例(図7参照)を適用し、補正対象画像E1を得るための通常露光撮影の直前又は直後に取得されたスルー表示用画像から参照画像E2を生成することも可能である(但し、そのスルー表示用画像の露光時間が、補正対象画像E1の露光時間よりも短い必要がある)。そのスルー表示用画像の画像サイズが補正対象画像E1のそれよりも小さい場合は、両者の画像サイズを同じとするための画像拡大処理をスルー表示用画像に施して、参照画像E2を生成すればよい。逆に、通常露光撮影によって得られた画像に画像縮小処理を施すことで、画像サイズの同一化を図ってもよい。
また、本実施形態に上述の第4実施例(図13参照)を適用し、補正対象画像E1を得るための通常露光撮影の直前及び直後に取得された2つの参照画像の内の、何れか一方の参照画像から参照画像E2を生成するようにしても良い。その2つの参照画像の内の一方は、スルー表示用画像でありうる。勿論、その2つの参照画像の各露光時間は、補正対象画像E1の露光時間よりも短いものとする。
尚、第1実施形態に対して上述した注釈3〜注釈5の記載内容を、第2実施形態に適用することも可能である。図17の手ぶれ検出/補正部20は、ぶれ検出装置として機能すると共にぶれ補正装置としても機能する。手ぶれ検出/補正部20に、補正対象画像の全体に対するPSFを作成するぶれ情報作成手段や補正対象画像や参照画像の一部画像としての小画像を抽出する抽出手段が内在している。
<<第3実施形態>>
次に、本発明の第3実施形態について説明する。短時間露光撮影によって得られた画像(以下「短露光画像」ともいう)に含まれるぶれは通常露光撮影によって得られた画像(以下「通常露光画像」ともいう)のそれよりも小さく、故に、上述してきた手ぶれ補正方法は非常に有益ではある。しかし、短露光画像への手ぶれの影響が全く無いわけではなく、短時間露光撮影の露光期間中の手ぶれや被写体ぶれ(被写体の実空間上における動き)により、短露光画像に無視できない程度のぶれが含まれることもある。そこで、第3実施形態では、複数回の短時間露光撮影によって複数の短露光画像を取得し、その複数の短露光画像から、通常露光画像の手ぶれ補正に用いる参照画像を生成するようにする。
図26は、第3実施形態に係る撮像装置1bの全体ブロック図である。撮像装置1bは、符号11〜18及び21にて参照される各部位を備える。符号11〜18にて参照される各部位は、図1のそれらと同じものであり、同一の部分に対する重複する説明を省略する。図1の撮像装置1における手ぶれ検出/補正部19を手ぶれ補正部21に置換すれば撮像装置1bが得られる。
撮影モードにおいてシャッタボタン17aが押下された際、通常露光撮影が行われ、主制御部13は、この撮影によって得られた1枚の撮影画像を表す画像データを記録媒体16及び内部メモリ14に格納する(即ち、記憶させる)。この撮影画像は、手ぶれに起因するぶれを含みうる画像であり、後に、操作部17等を介して与えられた補正指示に従って或いは自動的に手ぶれ補正部21によって補正される。このため、第1実施形態と同様、通常露光撮影によって得られた上記1枚の撮影画像を、特に「補正対象画像」と呼ぶ。手ぶれ補正部21は、角速度センサ等の手ぶれ検出センサを用いることなく、撮像部11の出力信号から得られる画像データに基づいて補正対象画像に含まれるぶれを補正する。
以下、手ぶれ補正部21の機能を詳細に説明する実施例として、第6〜第11実施例を説明する。或る実施例に記載した事項は、矛盾なき限り、他の実施例にも適用可能である。尚、以下の記述において、単に「メモリ」といった場合、それは、内部メモリ14又は手ぶれ補正部21内に設けられた図示されないメモリを意味するものとする。
[第6実施例]
まず、第6実施例について説明する。第6実施例では、複数の短露光画像の中から、例えば、最も含まれるぶれが少ないと推定される1枚の短露光画像を選択する。そして、その選択した短露光画像を参照画像として且つ通常露光撮影によって得られた画像を補正対象画像として取り扱って、補正対象画像と参照画像に基づき補正対象画像の手ぶれ補正を行う。図27は、撮像装置1bによる、この手ぶれ補正の動作の流れを表すフローチャートである。このフローチャートに沿って、撮像装置1bの動作について説明する。
撮影モードにおいて、シャッタボタン17aが押下されると通常露光撮影を行い、これによって生成された通常露光画像を補正対象画像Lwとしてメモリ上に記憶する(ステップS201及びS202)。次に、ステップS203において、補正対象画像Lwを得る際の露光時間T1と閾値TTHとを比較し、露光時間T1が閾値TTHより小さい場合、補正対象画像Lwに手ぶれに由来するぶれは含まれていない(或いは極めて軽微である)とみなして、手ぶれ補正を行うことなく図27の処理を終了する。閾値TTHとしては、例えば、焦点距離fDの逆数から算出される手ぶれ限界露光時間を用いる。
露光時間T1が閾値TTHより大きい場合、主制御部13の制御の下、通常露光撮影に続けて短時間露光撮影がN回連続して実行され短露光画像Cw1〜CwNが取得される。手ぶれ補正部21は、ステップS206〜S209の処理を実行することによって、短露光画像Cw1〜CwNに対する評価値K1〜KNを算出し、評価値K1〜KNに基づいて短露光画像Cw1〜CwNの中から1枚の短露光画像を参照画像として選択する。ここで、Nは、2以上の整数であり例えば4である。補正対象画像Lwと短露光画像Cw1〜CwNは連続撮影によって得られることになるが、各短露光画像を得る際の露光時間が露光時間T1よりも短くなるように、主制御部13は、露光制御部18を制御する。例えば、各短露光画像の露光時間は、T1/4、とされる。また、補正対象画像Lwと各短露光画像の画像サイズは等しい。
各ステップの処理内容を、より具体的に説明する。露光時間T1が閾値TTHより大きい場合、ステップS203からステップS204に移行する。ステップS204では、変数iが導入され且つ変数iに初期値1が代入される。その後、ステップS205に移行し、短時間露光撮影が1回実行され、これによって得られた短露光画像を短露光画像Cwiとしてメモリ上に記憶する。このメモリは、短露光画像の画像データを1枚分記憶可能な短露光画像用メモリである。従って、例えば、i=1の時には短露光画像Cw1が短露光画像用メモリ上に記憶され、i=2の時には短露光画像Cw2が短露光画像用メモリ上に上書き記憶される。
ステップS205に続くステップS206において、手ぶれ補正部21は、短露光画像Cwiに対する評価値Kiを算出する。原則として、評価値Kiは、短露光画像Cwiに含まれるぶれの大きさ(以下、「ぶれ量」ともいう)に応じた値をとり、短露光画像Cwiのぶれ量が小さければ小さいほど評価値Kiは大きくなる(例外を含めた、評価値Kiの算出法は第9実施例にて詳説される)。
その後、ステップS207に移行し、ステップS206にて算出された最新の評価値Kiと今まで算出された評価値(即ち、K1〜Ki-1)の最大値を表す変数KMAXを比較し、前者が後者よりも大きい場合或いは変数iが1である場合は、ステップS208にて短露光画像Cwiを参照画像Rwとしてメモリ上に記憶すると共にステップS209にて評価値Kiを変数KMAXに代入してからステップS210に移行する。一方、「i≠1」且つ「Ki≦KMAX」が成立する場合は、ステップS207からステップS210に直接移行する。ステップS210では、変数iがNの値と合致するかが判断され、「i=N」である場合にはステップS210からステップS212に移行する一方、「i≠N」である場合にはステップS210からステップS211に移行して変数iに1を加えてからステップS205に戻り、ステップS205以降の上述の各処理が繰り返し実行される。
この結果、ステップS205及びS206の各処理はN回実行され、ステップS212に至る時点では、短露光画像Cw1〜CwNに対する評価値K1〜KNが全て算出されて、評価値K1〜KNの内の最大値が変数KMAXに代入されていると共に該最大値に対応する短露光画像が参照画像Rwとしてメモリ上に記憶されている。例えば、評価値K1〜KNの内、評価値KN-1が最大であるのであれば、短露光画像CwN-1が参照画像Rwとしてメモリ上に記憶された状態でステップS212に至る。尚、参照画像Rwが記憶されるメモリは、参照画像Rwの画像データを1枚分記憶可能な参照画像用メモリであり、新たな画像データを参照画像用メモリ上に記憶する必要がある場合は、古い画像データが記憶されたメモリ領域に対して新たな画像データが上書き記憶される。
ステップS212おいて、手ぶれ補正部21は、参照画像用メモリ上に記憶された参照画像RwとステップS202にて得られた補正対象画像Lwに基づいて補正対象画像Lwに対する手ぶれ補正を実施し、補正対象画像Lwにおけるぶれが低減された補正画像Qwを生成する(補正方法は第10実施例にて後述)。この補正画像Qwは、記録媒体16に記録されると共に表示部15で表示される。
上述の如く参照画像Rwを生成することにより、例えば、複数の短時間露光撮影中の一部の期間において大きな手ぶれや被写体ぶれが生じたとしても、手ぶれの影響の小さな短露光画像が参照画像Rwとして選択されるため、精度よく手ぶれ補正を実行することが可能となる。一般に、手ぶれによって画像の高域周波数成分が減衰することになるが、手ぶれの影響が最も少ない短露光画像を参照画像として利用するようにすれば、より高域の周波数成分に対してまで手ぶれ補正を行うことができる。また、ステップS205〜S211のように処理して短露光画像及び参照画像を上書き記憶することにより、短露光画像用メモリ及び参照画像用メモリの夫々の必要メモリ容量を1枚の画像分に抑えることができる。
[第7実施例]
次に、第7実施例について説明する。第7実施例では、複数の短露光画像の中から、例えば、ぶれ量が比較的少ないと推定される2以上の短露光画像を選択し、選択した短露光画像を合成することによって1枚の参照画像を生成する。そして、その生成した参照画像と通常露光撮影によって得られた補正対象画像に基づき補正対象画像の手ぶれ補正を行う。図28は、撮像装置1bによる、この手ぶれ補正の動作の流れを表すフローチャートである。このフローチャートに沿って、撮像装置1bの動作について説明する。
撮影モードにおいて、シャッタボタン17aが押下されると通常露光撮影を行い、これによって生成された通常露光画像を補正対象画像Lwとしてメモリ上に記憶する(ステップS221及びS222)。次に、ステップS223において、補正対象画像Lwを得る際の露光時間T1と上記の閾値TTHとを比較し、露光時間T1が閾値TTHより小さい場合、補正対象画像Lwに手ぶれに由来するぶれは含まれていない(或いは極めて軽微である)とみなして、手ぶれ補正を行うことなく図28の処理を終了する。
露光時間T1が閾値TTHより大きい場合、主制御部13の制御の下、通常露光撮影に続けて短時間露光撮影がN回連続して実行され短露光画像Cw1〜CwNが取得される。手ぶれ補正部21は、ステップS226及びS227の処理を実行することによって、短露光画像Cw1〜CwNに対する評価値K1〜KNを算出し、評価値K1〜KNに基づいて短露光画像Cw1〜CwNの中からM枚の短露光画像を選択する。ここで、Mは、2以上の整数であり、不等式「N>M」が成立する。従って、第7実施例では、Nは3以上の整数とされる。例えば、N=4とする。補正対象画像Lwと短露光画像Cw1〜CwNは連続撮影によって得られることになるが、各短露光画像を得る際の露光時間が露光時間T1よりも短くなるように、主制御部13は、露光制御部18を制御する。例えば、各短露光画像の露光時間は、T1/4、とされる。また、補正対象画像Lwと各短露光画像の画像サイズは等しい。
各ステップの処理内容を、より具体的に説明する。露光時間T1が閾値TTHより大きい場合、ステップS223からステップS224に移行する。ステップS224では、変数iが導入され且つ変数iに初期値1が代入される。その後、ステップS225に移行し、短時間露光撮影が1回実行され、これによって得られた短露光画像を短露光画像Cwiとしてメモリ上に記憶する。このメモリは、短露光画像の画像データを1枚分記憶可能な短露光画像用メモリである。従って、例えば、i=1の時には短露光画像Cw1が短露光画像用メモリ上に記憶され、i=2の時には短露光画像Cw2が短露光画像用メモリ上に上書き記憶される。
ステップS225に続くステップS226において、手ぶれ補正部21は、短露光画像Cwiに対する評価値Kiを算出する(算出法は第9実施例にて詳説)。この評価値Kiは、図27のステップS206にて算出されるそれと同じものである。
その後、ステップS227に移行し、今まで算出された評価値K1〜Kiを大きい方から順番に並べ、1番目〜M番目に大きな評価値に対応するM枚の短露光画像をi枚の短露光画像Cw1〜Cwiの中から選択し、選択したM枚の短露光画像を被合成画像Dw1〜DwMとしてメモリ上に記録する。例えば、i=3且つM=2であって且つ不等式「K1<K2<K3」が成立する場合は、3枚の短露光画像Cw1〜Cw3から2枚の短露光画像Cw2及びCw3が選択され、その短露光画像Cw2及びCw3が被合成画像Dw1及びDw2としてメモリ上に記録される。勿論、変数iが小さく不等式「i<M」が成立する段階では取得された短露光画像の総枚数がM枚に満たないので、その場合は、短露光画像Cw1〜Cwiがそのまま被合成画像Dw1〜Dwiとしてメモリ上に記録される。尚、被合成画像が記憶されるメモリは、被合成画像の画像データをM枚分記憶可能な被合成画像用メモリであり、M枚分の画像データを記憶している状態で新たな画像データを記憶する必要がある場合には、不要な古い画像データが記録されていたメモリ領域に対してその新たな画像データが上書き記録される。
ステップS227の処理の後のステップS228では、変数iがNの値と合致するかが判断され、「i=N」である場合にはステップS228からステップS230に移行する一方、「i≠N」である場合にはステップS228からステップS229に移行して変数iに1を加えてからステップS225に戻り、ステップS225以降の上述の各処理が繰り返し実行される。この結果、ステップS225〜S227の各処理はN回実行され、ステップS230に至る時点では、短露光画像Cw1〜CwNに対する評価値K1〜KNが全て算出されて、評価値K1〜KNの内の1番目〜M番目に大きな評価値に対応するM枚の短露光画像が被合成画像Dw1〜DwMとして被合成画像用メモリ上に記憶されている。
ステップS230において、手ぶれ補正部21は、被合成画像Dw1〜DwMを位置合わせしてから合成することにより1枚の参照画像Rwを生成する。例えば、被合成画像Dw1を基準画像とし且つ被合成画像Dw2〜DwMの夫々を非基準画像と捉えて、基準画像に各非基準画像を位置合わせして合成する。尚、「位置合わせ」と後述の「位置ずれ補正」の意義は同じである。
1枚の基準画像と1枚の非基準画像を位置合わせして合成する処理を説明する。例えば、ハリスのコーナ検出器を用いて基準画像から特徴的な小領域(例えば、32×32画素の小領域)を抽出する。特徴的な小領域は、抽出元画像の中でエッジ成分が比較的多い(換言すれば、コントラストが比較的強い)矩形領域のことを指し、例えば、特徴的な絵柄を含む領域である。特徴的な絵柄とは、例えば、物体の角部のような2方向以上に輝度変化を有し、その輝度変化に基づき画像処理によって該絵柄の位置(画像上の位置)を容易に検出できるような絵柄を意味する。そして、基準画像から抽出した該小領域内の画像をテンプレートとし、テンプレートマッチング法を用いて、そのテンプレートとの類似度が最も高い小領域を非基準画像内から探索する。そして、探索された小領域の位置(非基準画像上の位置)と基準画像から抽出した小領域の位置(基準画像上の位置)とのずれ量を位置ずれ量Δdとして算出する。位置ずれ量Δdは、水平成分及び垂直成分を含む二次元量であり、所謂動きベクトルとして表現される。非基準画像は、基準画像を基準として位置ずれ量Δdに相当する分だけ位置ずれが生じた画像とみなすことができる。そこで、この位置ずれ量Δdが打ち消されるように非基準画像に座標変換(アフィン変換など)を施すことによって非基準画像を位置ずれ補正する。例えば、この座標変換を行うための幾何変換パラメータを求め、基準画像が定義される座標上に非基準画像を座標変換することによって位置ずれ補正を行う。位置ずれ補正前の非基準画像内の座標(x+Δdx,y+Δdy)に位置する画素は、位置ずれ補正によって座標(x,y)に位置する画素に変換される。Δdx及びΔdyは、夫々、Δdの水平成分及び垂直成分である。そして、基準画像と位置ずれ補正後の非基準画像を合成する。合成によって得られた画像内の座標(x,y)に位置する画素の画素信号は、座標(x,y)に位置する基準画像内の画素の画素信号と、座標(x,y)に位置する位置ずれ補正後の非基準画像内の画素の画素信号と、を加算した信号に相当する。
上述のような位置合わせ及び合成処理を各非基準画像に対して実行する。これにより、被合成画像Dw1と位置ずれ補正後の被合成画像Dw2〜DwMを合成した画像が得られ、この得られた画像は参照画像Rwとしてメモリ上に記憶される。尚、基準画像から特徴的な小領域を複数個抽出し、テンプレートマッチング法を用いてその複数の小領域に対応する複数の小領域を非基準画像から探索し、基準画像内における抽出された複数の小領域の位置と非基準画像内における探索された複数の小領域の位置から上記の幾何変換パラメータを求めて上記の位置ずれ補正を行うようにしても良い。
ステップS230にて参照画像Rwが生成された後、ステップS231おいて、手ぶれ補正部21は、生成された参照画像RwとステップS222にて得られた補正対象画像Lwに基づいて補正対象画像Lwに対する手ぶれ補正を実施し、補正対象画像Lwにおけるぶれが低減された補正画像Qwを生成する(補正方法は第10実施例にて後述)。この補正画像Qwは、記録媒体16に記録されると共に表示部15で表示される。
上述の如く参照画像Rwを生成することにより、例えば、複数の短時間露光撮影中の一部の期間において大きな手ぶれや被写体ぶれが生じたとしても、その期間に得られた短露光画像は評価値比較演算により被合成画像とならないため、高精度に手ぶれ補正を実行することが可能となる。また、参照画像RwはM枚の短露光画像を位置合わせ及び合成することによって生成されるため、参照画像Rwのぶれ量は1枚の短露光画像のそれと同等でありながら、画素値加算合成によって参照画像RwのS/N比(信号対雑音比)は1枚の短露光画像のそれよりも高くなる。故に、より高精度の手ぶれ補正が実現される。また、ステップS225〜S229のように処理して短露光画像及び被合成画像を上書き記憶することにより、短露光画像用メモリの必要メモリ容量を1枚の画像分に、被合成画像用メモリの必要メモリ容量をM枚の画像分に抑えることができる。
[第8実施例]
次に、第8実施例について説明する。第8実施例は、第6実施例による参照画像生成方式(以下、1枚選択方式ともいう)と第7実施例による参照画像生成方式(以下、複数枚合成方式ともいう)を切替実行することにより手ぶれ補正を行う。この切替制御は、短露光画像のS/N比を推定することによって行われる。図29は、撮像装置1bによる、この手ぶれ補正の動作の流れを表すフローチャートである。このフローチャートに沿って、撮像装置1bの動作について説明する。また、図30も参照される。図30には、撮像装置1bに設けられた測光回路22及びLUT(ルックアップテーブル)23が示されている。
撮影モードにおいて、シャッタボタン17aが押下されると、主制御部13は、測光回路22から明るさ情報を取得して、その明るさ情報から撮像部11の撮像素子に対する最適露光時間を算出する(ステップS241及びS242)。測光回路22は、測光センサ(不図示)又は撮像素子の出力信号を用いて被写体の明るさ(換言すれば、撮像部11への入射光量)を測定する。明るさ情報は、その測定結果を表す情報である。次に、ステップS243において、主制御部13は、最適露光時間と予め設定されたプログラム線図から実際の露光時間(以下、実露光時間という)を決定する。LUT23には、プログラム線図を表すテーブルデータが予め格納されており、LUT23に明るさ情報を入力すると、該テーブルデータに従って、実露光時間、絞り値及びAFE12の増幅度がLUT23から出力される。主制御部13は、LUT23の出力から実露光時間を決定する。更に、LUT23から出力される絞り値及びAFE12の増幅度によって、通常露光撮影及び短時間露光撮影時における絞り値(撮像部11の絞りの開度)及びAFE12の増幅度が規定される。
続くステップS244では、ステップS243にて決定された実露光時間にて通常露光撮影を行い、これによって生成された通常露光画像を補正対象画像Lwとしてメモリ上に記憶する。但し、実露光時間が最適露光時間よりも短い場合は、実露光時間と最適露光時間の比に応じた露光不足分を補うように通常露光画像の各画素値に一定値を乗じて得られる画素値増幅画像を補正対象画像Lwしてメモリ上に記憶するようにする。この際、必要であれば、画素値増幅画像に対してノイズ除去処理を行い、ノイズ除去後の画素値増幅画像を補正対象画像Lwしてメモリ上に記憶するようにしてもよい。ノイズ除去は、線形フィルタ(加重平均フィルタ等)や非線形フィルタ(メディアンフィルタ等)を用いて画素値増幅画像をフィルタリングすることにより行われる。
その後、ステップS245において、補正対象画像Lwを得る際の実露光時間と上記の閾値TTHを比較し、実露光時間が閾値TTHより小さい場合、補正対象画像Lwに手ぶれに由来するぶれは含まれていない(或いは極めて軽微である)とみなして、手ぶれ補正を行うことなく図29の処理を終了する。
実露光時間が閾値TTHより大きい場合、ステップS246において、主制御部13は、最適露光時間に基づく短露光時間Toptを算出する。続くステップS247において、主制御部13は、実露光時間に基づく短露光時間Trealを算出する。短露光時間とは短時間露光撮影における露光時間を指す。例えば、短露光時間Toptを最適露光時間の1/4とし且つ短露光時間Trealを実露光時間の1/4とする。その後、ステップS248において、主制御部13は、不等式「Treal<Topt×kro」が成立するか否かを判断する。係数kroは、不等式「0<kro<1」を満たす予め定められた係数であり、例えば、kro=0.8である。
そして、不等式「Treal<Topt×kro」が成立しない場合は、短露光時間Trealにて取得されるべき短露光画像のS/N比は比較的高いと推測されるため、ステップS249に移行し、手ぶれ補正部21は、比較的簡素な処理にて手ぶれ補正を行うことができる1枚選択方式を採用して参照画像Rwを生成する。即ち、ステップS249にて、図27のステップS205〜S211の各処理を行って参照画像Rwを生成する。
一方、不等式「Treal<Topt×kro」が成立する場合は、短露光時間Trealにて取得されるべき短露光画像のS/N比は比較的低いと推測されるため、ステップS250に移行し、手ぶれ補正部21は、ノイズの影響を低減することのできる複数枚合成方式を用いて参照画像Rwを生成する。即ち、ステップS250にて、図28のステップS225〜230の各処理を行って参照画像Rwを生成する。尚、ステップS249においても、ステップS250においても、短時間露光撮影時における実際の露光時間はTrealとされる。
ステップS249又はステップS250にて参照画像Rwが生成された後、ステップS251において、手ぶれ補正部21は、その参照画像RwとステップS244にて取得された補正対象画像Lwから補正画像Qwを生成する(補正方法は第10実施例にて後述)。この補正画像Qwは、記録媒体16に記録されると共に表示部15で表示される。
暗所撮影時では手ぶれや被写体ぶれに起因する画像のぶれを抑制するために、測光回路22の測定結果から単純に計算した最適露光時間よりも短い露光時間で通常露光撮影を行い、その撮影によって得られた画像の各画素値に一定値を乗じる処理を施してから(即ち、感度を向上させてから)画像データを記録することが多い。このような場合は、不等式「Treal<Topt×kro」が成立しやすくなり、一方で、取得される短露光画像のS/N比が随分低くなる。そこで、このような場合は、ノイズの影響を抑制することのできる複数枚合成方式を用いて参照画像Rwを生成するようにする。他方、撮像装置1bの周辺照度が比較的大きいことに起因して不等式「Treal<Topt×kro」が成立せず、短露光画像のS/N比が比較的高いと推測される場合は、比較的簡素な処理にて手ぶれ補正を行うことができる1枚選択方式を採用して参照画像Rwを生成する。このように、短露光画像のS/N比に応じて参照画像Rwの生成方法を切り替えることにより、手ぶれ補正精度を維持しつつ計算コストを極力低く抑えることができる。計算コストとは、計算による負荷を意味し、計算コストの増大は処理時間及び消費電力を増大させる。尚、短露光画像にノイズ除去処理を施し、ノイズ除去処理後の短露光画像から参照画像Rwを生成することも可能であるが、この場合においても、上述の切替制御は有効に機能する。
[第9実施例]
次に、第9実施例について説明する。第9実施例では、第6〜第8実施例の処理にて利用される評価値Kiの算出法について説明する。評価値Kiは、短露光画像のエッジ強度に基づく第1評価値Kai、短露光画像のコントラストに基づく第2評価値Kbi、補正対象画像Lwに対する短露光画像の回転量に基づく第3評価値Kci、及び、短時間露光撮影と通常露光撮影との撮影時間差に基づく第4評価値Kdiの内の何れか1以上の評価値から決定される。まず、第1評価値Kai〜第4評価値Kdiの算出方法について個別に説明する。
(1)第1評価値Kaiの算出方法
第1評価値としての評価値Kaiの算出方法を図31及び図32を参照して説明する。図31は、評価値Kaiの算出動作の流れを表すフローチャートである。図32は、この動作に利用される画像などの関係を示す図である。評価値Kaiに基づいて評価値Kiを算出する場合は、図27のステップS206及び図28のステップS226において、図31のステップS301〜S305が実行される。
まず、ステップS301において、変数iが1であるか否かを判別し、i=1である場合はステップS302に移行する一方、i≠1である場合はステップS303に移行する。ステップS302では、短露光画像Cwiの中央又は中央付近に位置する小領域を抽出し、この小領域内の画像を小画像Csiとする。抽出される小領域を、例えば、128×128画素の小領域とする。i=1である場合にのみステップS302に至るのであるから、ステップS302では、1番目の短露光画像Cw1から小画像Cs1が抽出されることになる。
ステップS302の処理の後、ステップS304に移行する。ステップS304では、小画像Csiに対してエッジ抽出処理を施し、小画像Esiを得る。例えば、小画像Csiの各画素に対して任意のエッジ検出オペレータを適用することにより小画像Csiのエッジ抽出画像を生成し、このエッジ抽出画像を小画像Esiとする。その後、ステップS305において、小画像Esiの画素値の総和を算出し、その総和を評価値Kaiとする。
i≠1である場合にステップS301から移行するステップS303では、短露光画像Cw1から抽出された小領域に対応する小領域を短露光画像Cwi(≠Cw1)から抽出し、短露光画像Cwiから抽出された小領域内の画像を小画像Csiとする。対応小領域の探索は、テンプレートマッチング法などを利用した画像処理によって行う。即ち例えば、短露光画像Cw1から抽出された小画像Cs1をテンプレートとし、周知のテンプレートマッチング法を用いて、そのテンプレートとの類似度が最も高い小領域を短露光画像Cwi内から探索し、探索された小領域内の画像を小画像Csiとする。ステップS303にて小画像Csiが抽出された後は、その小画像Csiに対してステップS304及びS305の各処理が実施される。上述の処理内容から明らかなように、評価値Kaiは小画像Csiのエッジ強度の増大に伴って増加する。
同じ構図の画像であれば、露光期間中に生じた手ぶれが小さいほどエッジは鮮明となり、画像中のエッジ強度は高くなる。また、手ぶれは画像全体に対して一様な劣化を与えるため、短露光画像Cwiの全体におけるエッジ強度は、小画像Csiにおけるエッジ強度に応じたものとなる。従って、上記の評価値Kaiが大きいほど、それに対応する小画像Csi及び短露光画像Cwiのぶれ量は小さいと推定できる。参照画像の生成のために利用される短露光画像のぶれ量は小さければ小さいほど望ましいという観点から、評価値Kaiを利用すると有益である。例えば、評価値Kaiそのものを、図27のステップS206及び図28のステップS226にて求められるべき評価値Kiとすることも可能である。
尚、一般に、1枚の画像から該画像のぶれ量を求めるためには、特開平11−27574号公報に記載されているように、画像をフーリエ変換して周波数領域上の変換画像を生成し、手ぶれにより減衰する周波数の間隔を計測するなど、計算コストの大きな処理が必要である。これに対し、エッジ強度とぶれ量の関係を利用してエッジ強度からぶれ量を推定するようにすれば、フーリエ変換などを利用する従来手法と比べて、ぶれ量を推定するための計算コストを小さくすることができる。また、画像全体でなく、抽出された小画像に着目して評価値を算出することにより、計算コストの更なる低減効果が得られる。加えて、テンプレートマッチングなどを用い対応小領域間で評価値を比較するようにしているため、複数の短時間露光撮影中に構図の変化があったとしても、その変化による影響は軽微である。
(2)第2評価値Kbiの算出方法
第2評価値としての評価値Kbiの算出方法を図33を参照して説明する。図33は、評価値Kbiの算出動作の流れを表すフローチャートである。評価値Kbiに基づいて評価値Kiを算出する場合は、図27のステップS206及び図28のステップS226において、図33のステップS311〜S315が実行される。
図33におけるステップS311〜S313の各処理内容は、夫々、図31におけるステップS301〜S303の各処理内容と同じであるため、それらの重複する説明を割愛する。但し、ステップS312又はS313の処理の後、ステップS314に移行するものとする。
ステップS314では、小画像Csiの各画素の輝度信号を抽出する。勿論、例えば、i=1の時は、小画像Cs1の各画素の輝度信号が抽出され、i=2の時は、小画像Cs2の各画素の輝度信号が抽出される。そして、ステップS315において、小画像Csiの輝度値(即ち、輝度信号の値)のヒストグラムを生成し、そのヒストグラムの分散を算出して該分散を評価値Kbiとする。
同じ構図の画像であれば、露光期間中に生じた手ぶれが大きいほど隣接画素間の輝度が平滑化され、中間階調の画素の割合が増加して輝度値のヒストグラムにおける分布が中間階調に集中化する。上記の平滑化の程度が大きいほどヒストグラムにおける分散が小さくなって評価値Kbiが小さくなるため、評価値Kbiが大きいほど、それに対応する小画像Csi及び短露光画像Cwiのぶれ量は小さいと推定できる。参照画像の生成のために利用される短露光画像のぶれ量は小さければ小さいほど望ましいという観点から、評価値Kbiを利用すると有益である。例えば、評価値Kbiそのものを、図27のステップS206及び図28のステップS226にて求められるべき評価値Kiとすることも可能である。
短露光画像の例として、図34(a)に短露光画像261を示すと共に図34(b)に短露光画像262を示す。短露光画像261は鮮明な画像である一方、短露光画像262の露光期間中に大きな手ぶれが生じたことにより、短露光画像262には大きなぶれが含まれている。また、図35(a)及び(b)に、夫々、短露光画像261及び262に対してステップS315にて生成されたヒストグラムを示す。短露光画像261のヒストグラムとの対比おいて(図35(a)参照)、短露光画像262のヒストグラム(図35(b)参照)では中間階調への分布の集中化が見られる。この集中化によって、分散(及び標準偏差)は小さくなる。
或る着目画像に関して、ヒストグラムにおける分散が小さいことは該着目画像のコントラストが低いことに対応し、ヒストグラムにおける分散が大きいことは該着目画像のコントラストが高いことに対応している。従って、上述の方法では、ヒストグラムにおける分散を算出することによって着目画像のコントラストを推定し、その推定したコントラストによって着目画像のぶれ量を推定していることになる。そして、コントラストの推定値が評価値Kbiとして導出される。
本評価値算出方法では、コントラストとぶれ量の関係を利用してコントラストからぶれ量を推定することとしている。このため、フーリエ変換などを利用する従来手法と比べて、ぶれ量を推定するための計算コストを小さくすることができる。また、画像全体でなく、抽出された小画像に着目して評価値を算出することにより、計算コストの更なる低減効果が得られる。加えて、テンプレートマッチングなどを用い対応小領域間で評価値を比較するようにしているため、複数の短時間露光撮影中に構図の変化があったとしても、その変化による影響は軽微である。
(3)第3評価値Kciの算出方法
第3評価値としての評価値Kciの算出方法を説明する。評価値Kciは、補正対象画像Lwに対する短露光画像Cwiの回転角から算出される。図36を参照して、より具体的に算出方法を説明する。
まず、補正対象画像Lwの中から特徴的な小領域(例えば、32×32画素の小領域)を複数個抽出する。特徴的な小領域の意義及び抽出手法は第7実施例で述べた通りである(後述の他の実施例においても同様)。図36に示す如く、補正対象画像Lwから2つの小領域281及び282が抽出されたとする。小領域281及び282の中心点を、夫々、符号291及び292によって参照する。図36に示す例では、中心点291及び292を結ぶ線分の方向が補正対象画像Lwの水平方向と合致している。
次に、補正対象画像Lwから抽出された2つの小領域281及び282に対応する2つの小領域を、短露光画像Cwiから抽出する。対応小領域の探索は、テンプレートマッチング法などを利用した上述の手法を用いて行えば良い。図36には、短露光画像Cw1から抽出された2つの小領域281a及び282a、並びに、短露光画像Cw2から抽出された2つの小領域281b及び282bが示されている。小領域281a及び281bが小領域281に対応し、小領域282a及び282bが小領域282に対応している。また、小領域281a、282a、281b及び282bの中心点を、夫々、符号291a、292a、291b及び292bによって参照する。
短露光画像Cw1に対応する評価値Kc1を算出する場合は、中心点291及び292を結ぶ線分に対する、中心点291a及び292aを結ぶ線分の回転角(即ち、傾き)θ1を求める。同様に、短露光画像Cw2に対応する評価値Kc2を算出する場合、中心点291及び292を結ぶ線分に対する、中心点291b及び292bを結ぶ線分の回転角(即ち、傾き)θ2を求める。他の短露光画像Cw3〜短露光画像CwNについての回転角θ3〜θNも同様に求め、回転角θiの逆数を評価値Kciとして求める。
補正対象画像としての通常露光画像と参照画像生成用の短露光画像の撮影時間(撮影時刻)は異なるため、両者の撮影間で構図のずれが発生しうる。高精度な手ぶれ補正を行うためには、このずれに由来する補正対象画像と参照画像との間の位置ずれを打ち消すための位置合わせが必要となる。この位置合わせは座標変換(アフィン変換など)によって実現されるが、この位置合わせに画像回転処理が含まれると回路規模及び計算コストが増大してしまう。そこで、参照画像生成用の短露光画像についての回転角がなるだけ小さくなるように、評価値Kciを利用すると有益である。例えば、評価値Kciそのものを、図27のステップS206及び図28のステップS226にて求められるべき評価値Kiとすることも可能である。そのようにすれば、補正対象画像Lwに対する回転角が小さな短露光画像を優先的に用いて参照画像Rwが生成されるため、平行移動による位置合わせだけで比較的良好な手ぶれ補正効果を得ることができ、回路規模の低減にも寄与する。
尚、後述のフーリエ反復法を利用して手ぶれ補正を行う場合、補正対象画像Lw及び参照画像Rwをフーリエ変換することによって得られた周波数領域上の画像間で線形演算がなされる(第10実施例にて詳説)。この場合において、補正対象画像Lwと参照画像Rwとの間に回転方向のずれがあると、フーリエ変換の特性上、手ぶれ検出及び手ぶれ補正精度が顕著に低下する。このため、フーリエ反復法を利用して手ぶれ補正を行う場合においては、評価値Kciを利用して参照画像Rwを選択することにより、手ぶれ検出及び手ぶれ補正精度が大幅に向上する。
(4)第4評価値Kdiの算出方法
第4評価値としての評価値Kdiの算出方法を説明する。評価値Kdiは、補正対象画像Lwと短露光画像Cwiとの撮影時間差の逆数とされる。補正対象画像Lwと短露光画像Cwiとの撮影時間差は、補正対象画像Lwの撮影時における露光時間の中間時点と短露光画像Cwiの撮影時における露光期間の中間時点との時間差とする。補正対象画像Lwの撮影後に、短露光画像Cw1、Cw2、・・・、CwNをこの順番で撮影する場合は、当然の如く、Kd1>Kd2>・・・>KdNが成立することになる。
補正対象画像Lwと短露光画像Cwiとの撮影時間差が大きいほど、その間に被写体が動く確率が高くなると共に照度などの撮影条件が変化する確率も高くなる。被写体の動きや撮影条件の変化は、手ぶれ検出及び手ぶれ補正精度を低下させる方向に作用する。そこで、大きな評価値Kdiに対応する短露光画像を優先的に用いて参照画像Rwが生成されるように評価値Kdiを利用するとよい。そうすれば、被写体の動きや撮影条件の変化の影響が軽減されて、より高精度な手ぶれ検出及び手ぶれ補正を行うことが可能となる。
(5)最終的な評価値Kiの算出方法
図27のステップS206及び図28のステップS226にて求められるべき評価値Kiは、評価値Kai、Kbi、Kci及びKdiの内の何れか1以上の評価値から決定される。例えば、評価値Kiを下記式(A−1)によって算出する。ここで、ka、kb、kc及びkdは、ゼロ又は正の値を有する所定の重み付け係数である。評価値Kai、Kbi、Kci及びKdiの内の2つ又は3つのみを用いて評価値Kiを算出する場合は、必要な重み付け係数をゼロとすればよい。例えば、補正対象画像Lwと短露光画像Cwiとの撮影時間差を考慮しない場合は、「kd=0」とした上で評価値Kiを算出すれば良い。
Ki=ka×Kai+kb×Kbi+kc×Kci+kd×Kdi ・・・(A−1)
尚、補正対象画像Lwとの撮影時間差がなるだけ短い短露光画像から参照画像Rwを生成した方が良いのは上述したとおりであるが、評価値Kiの算出にあたり、評価値Kdiは補助的に用いるべきである。即ち、重み付け係数ka、kb及びkcの全てをゼロとするべきではない。
[第10実施例]
次に、第10実施例を説明する。第10実施例では、補正対象画像Lwと参照画像Rwに基づく、補正対象画像Lwの補正方法を説明する。この補正を行うための処理は、図27のステップS212、図28のステップS231及び図29のステップS251にて実行される。補正対象画像Lwの補正方法として、以下に、第1〜第3の補正方法を例示する。第1、第2、第3の補正方法は、夫々、画像復元方式、画像合成方式、画像鮮鋭化方式による補正方法である。
(1)第1の補正方法
図37を参照して、第1の補正方法について説明する。図37は、第1の補正方法に基づく補正処理の流れを表すフローチャートである。第1の補正方法を採用する場合、図27のステップS212、図28のステップS231及び図29のステップS251の処理は、夫々、図37のステップS401〜S409の各処理から形成される。
まず、ステップS401において、補正対象画像Lwの中から特徴的な小領域(例えば、128×128画素の小領域)を抽出し、この抽出された小領域内の画像を小画像Lsとしてメモリ上に記憶する。
次に、ステップS402において、補正対象画像Lwから抽出された小領域と同一座標の小領域を参照画像Rwから抽出し、参照画像Rwから抽出された小領域内の画像を小画像Rsとしてメモリ上に記憶する。補正対象画像Lwから抽出される小領域の中心座標(補正対象画像Lwにおける中心座標)と参照画像Rwから抽出される小領域の中心座標(参照画像Rwにおける中心座標)は等しく、また、補正対象画像Lwと参照画像Rwの画像サイズは等しいため、両小領域の画像サイズも等しくされる。
参照画像Rwの露光時間は比較的短いので、小画像RsのS/N比は比較的低い。そこで、ステップS403にて、小画像Rsに対してノイズ除去処理を行う。ノイズ除去後の小画像Rsを、小画像Rsaとする。ノイズ除去は、線形フィルタ(加重平均フィルタ等)や非線形フィルタ(メディアンフィルタ等)を用いて小画像Rsaをフィルタリングすることにより行われる。小画像Rsaは低輝度であるため、ステップS404において、小画像Rsaの輝度レベルを増加させる。即ち例えば、小画像Rsaの輝度レベルが小画像Lsの輝度レベルと等しくなるように(小画像Rsaの平均輝度と小画像Lsの平均輝度が等しくなるように)、小画像Rsaの各画素の輝度値に一定値を乗じるという輝度正規化処理を行う。このようにして輝度レベルを増加させた後の小画像Rsaを、小画像Rsbとする。
上述のようにして得られた小画像Lsを劣化画像として且つ小画像Rsbを初期復元画像として取り扱った上で(ステップS405)、ステップS406にてフーリエ反復法を実施することにより画像劣化関数としてのPSFを求める。フーリエ反復法に基づくPSFの算出法は、第1実施形態で述べたそれと同じものである。即ち、ステップS406において、図4のステップS101〜S103及びS110〜S118から成る処理を実行することにより、小画像Lsに対するPSFを求める。手ぶれは画像全体に対して一様な劣化を与えるため、小領域Lsに対して求めたPSFは、補正対象画像Lwの全体に対するPSFとして利用することができる。尚、第1実施形態でも述べたように、ステップS118の処理を削除し、1回の修正処理で最終的なPSFを求めることも可能である。
ステップS407では、ステップS406で求められたPSFの逆行列の各要素を画像復元フィルタの各フィルタ係数として求める。この画像復元フィルタは、劣化画像から復元画像を得るためのフィルタである。実際には、第1実施形態で述べたように、ステップS406におけるフーリエ反復法の計算途中結果をそのまま利用することによって画像復元フィルタの各フィルタ係数を求めることができる。
ステップS407にて画像復元フィルタの各フィルタ係数が求められた後、ステップS408に移行し、この画像復元フィルタを用いて補正対象画像Lwをフィルタリング(空間フィルタリング)する。即ち、求められた各フィルタ係数を有する画像復元フィルタを補正対象画像Lwの各画素に適用して補正対象画像Lwをフィルタリングする。これにより、補正対象画像Lwに含まれるぶれを除去或いは低減したフィルタリング画像が生成される。画像復元フィルタのサイズは補正対象画像Lwの画像サイズよりも小さいが、手ぶれは画像全体に一様な劣化を与えると考えられるため、この画像復元フィルタを補正対象画像Lwの全体に対して適用することによって、補正対象画像Lwの全体のぶれが除去される。
フィルタリング画像には、フィルタリングに伴うリンギングが含まれうる。このため、ステップS409において、これを除去するためのリンギング除去処理をフィルタリング画像に施すことにより最終的な補正画像Qwを生成する。リンギングを除去する手法は公知であるため、詳細な説明を割愛する。その手法として、例えば特開2006−129236号公報に記載の手法を用いればよい。
補正画像Qwは、補正対象画像Lwに含まれるぶれが除去或いは低減され且つフィルタリングに伴うリンギングが除去或いは低減された画像となる。但し、フィルタリング画像もぶれが除去或いは低減された画像であるため、フィルタリング画像を補正画像Qwとして捉えることも可能である。
参照画像Rwに含まれるぶれ量は少ないため、それのエッジ成分は、手ぶれのない理想画像のエッジ成分に近い。従って、上述の如く、この参照画像Rwから得られる画像をフーリエ反復法における初期復元画像とする。これにより、第1実施形態でも述べたような様々な効果が得られる(手ぶれ情報(PSF又は画像復元フィルタのフィルタ係数)の算出処理時間の短縮効果など)。
(2)第2の補正方法
次に、図38及び図39を参照して、第2の補正方法について説明する。図38は、第2の補正方法に基づく補正処理の流れを表すフローチャートである。図39は、この補正処理の流れを表す概念図である。第2の補正方法を採用する場合、図27のステップS212、図28のステップS231及び図29のステップS251の処理は、夫々、図38のステップS421〜S425の各処理から形成される。
図26の撮像部11の撮影によって得られる画像は、輝度に関する情報と色に関する情報を含むカラー画像となっている。従って、補正対象画像Lwを形成する各画素の画素信号は、画素の輝度を表す輝度信号と、画素の色を表す色信号から形成される。今、各画素の画素信号がYUV形式で表現されているものとする。この場合、色信号は2つの色差信号U及びVから形成されることなる。そして、補正対象画像Lwを形成する各画素の画素信号は、画素の輝度を表す輝度信号Yと、画素の色を表す2つの色差信号U及びVと、から形成される。
そうすると、補正対象画像Lwは、図39に示す如く、画素信号として輝度信号Yのみを含む画像LwYと、画素信号として色差信号Uのみを含む画像LwUと、画素信号として色差信号Vのみを含む画像LwVと、に分解することができる。同様に、参照画像Rwも、画素信号として輝度信号Yのみを含む画像RwYと、画素信号として色差信号Uのみを含む画像RwUと、画素信号として色差信号Vのみを含む画像RwVと、に分解できる(図39では、画像RwYのみ図示)。
図38のステップS421では、まず、補正対象画像Lwの輝度信号及び色差信号を抽出することにより、画像LwY、LwU及びLwVを生成する。続くステップS422では、参照画像Rwの輝度信号を抽出することにより、画像RwYを生成する。
画像RwYは低輝度であるため、ステップS423おいて、画像RwYの輝度レベルを増加させる。即ち例えば、画像RwYの輝度レベルが画像LwYの輝度レベルと等しくなるように(画像RwYの平均輝度と画像LwYの平均輝度が等しくなるように)、画像RwYの各画素の輝度値に一定値を乗じるという輝度正規化処理を行う。更に、この輝度正規化処理後の画像RwYに対して、メディアンフィルタ等を用いたノイズ除去処理を施す。輝度正規化処理及びノイズ除去処理後の画像RwYは画像RwY’としてメモリ上に記憶される。
その後、ステップS424において、画像LwYの画素信号と画像RwY’の画素信号を比較することにより、画像LwYを画像RwY’との間の位置ずれ量ΔDを算出する。位置ずれ量ΔDは、水平成分及び垂直成分を含む二次元量であり、所謂動きベクトルとして表現される。位置ずれ量ΔDの算出を、周知の代表点マッチング法やテンプレートマッチング法を用いて行うことができる。例えば、画像LwYから抽出した小領域内の画像をテンプレートとし、テンプレートマッチング法を用いて、そのテンプレートとの類似度が最も高い小領域を画像RwY’内から探索する。そして、探索された小領域の位置(画像RwY’上の位置)と画像LwYから抽出した小領域の位置(画像LwY上の位置)とのずれ量を位置ずれ量ΔDとして算出する。尚、画像LwYから抽出されるべき小領域を、上述したような、特徴的な小領域とすることが望ましい。
画像LwYを基準として考え、位置ずれ量ΔDが、画像LwYに対する画像RwY’の位置ずれ量であるとする。画像RwY’は、画像LwYを基準として位置ずれ量ΔDに相当する分だけ位置ずれが生じた画像とみなすことができる。そこで、ステップS425では、この位置ずれ量ΔDが打ち消されるように画像RwY’に座標変換(アフィン変換など)を施すことによって画像RwY’を位置ずれ補正する。位置ずれ補正前の画像RwY’内の座標(x+ΔDx,y+ΔDy)に位置する画素は、位置ずれ補正によって座標(x,y)に位置する画素に変換される。ΔDx及びΔDyは、夫々、ΔDの水平成分及び垂直成分である。
ステップS425では、更に、画像LwU及びLwVと位置ずれ補正後の画像RwY’が合成され、この合成によって得られた画像が補正画像Qwとして出力される。補正画像Qw内の座標(x,y)に位置する画素の画素信号は、座標(x,y)に位置する画像LwU内の画素の画素信号と、座標(x,y)に位置する画像LwV内の画素の画素信号と、座標(x,y)に位置する位置ずれ補正後の画像RwY’内の画素の画素信号と、から形成される。
カラー画像において、見た目のぶれは主に輝度のぶれによって引き起こされ、輝度のエッジ成分がぶれのない理想画像のそれに近ければ、観察者はぶれが少ないと感じる。従って、本補正方法では、ぶれ量の比較的少ない参照画像Rwの輝度信号を補正対象画像Lwの色信号に合成することによって擬似的な手ぶれ補正効果を得る。この方法によれば、エッジ近傍で色ずれが生じることとなるが、見た目においてぶれの少ない画像を低い計算コストで生成することができる。
(3)第3の補正方法
次に、図40及び図41を参照して、第3の補正方法について説明する。図40は、第3の補正方法に基づく補正処理の流れを表すフローチャートである。図41は、この補正処理の流れを表す概念図である。第3の補正方法を採用する場合、図27のステップS212、図28のステップS231及び図29のステップS251の処理は、夫々、図40のステップS441〜S447の各処理から形成される。
まず、ステップS441において、補正対象画像Lwから特徴的な小領域を抽出することによって小画像Lsを生成し、ステップS442において、参照画像Rwから小画像Lsに対応する小領域を抽出することによって小画像Rsを生成する。このステップS441及びS442の処理は、図37のステップS401及びS402の処理と同じである。続いてステップS443おいて、小画像Rsに対してメディアンフィルタ等を用いたノイズ除去処理を施し、更に、ノイズ除去処理後の小画像Rsの輝度レベルを増加させる。即ち例えば、小画像Rsの輝度レベルが小画像Lsの輝度レベルと等しくなるように(小画像Rsの平均輝度と小画像Lsの平均輝度が等しくなるように)、小画像Rsの各画素の輝度値に一定値を乗じるという輝度正規化処理を行う。ノイズ除去処理及び輝度正規化処理後の小画像Rsは小画像Rs’としてメモリ上に記憶される。
次に、ステップS444において、互いに異なる8種類の平滑化フィルタを用いて小画像Rs’をフィルタリングすることにより、平滑化度合いの異なる8つの平滑化小画像RsG1、RsG2、・・・、RsG8を生成する。今、8つの平滑化フィルタとして互いに異なる8つのガウシアンフィルタを用いるものとし、各ガウシアンフィルタによって表されるガウス分布の分散をσ2で表す。
一次元の画像に着目し、その一次元の画像における画素の位置をxで表した場合、平均が0且つ分散がσ2のガウス分布は下記式(B−1)によって表されることが一般的に知られている(図42参照)。このガウス分布をガウシアンフィルタに適用すると、ガウシアンフィルタの各フィルタ係数はhg(x)で表される。つまり、ガウシアンフィルタを位置0の画素に適用する時、位置xにおけるフィルタ係数はhg(x)で表される。換言すれば、ガウシアンフィルタによるフィルタリング後の位置0の画素値に対する、フィルタリング前の位置xの画素値の寄与率はhg(x)で表される。
この考え方を二次元に拡張し、二次元の画像における画素の位置を(x,y)で表した場合、二次元ガウス分布は、下記式(B−2)によって表される。尚、x及びyは、それぞれ、水平方向の位置及び垂直方向の位置を表している。この二次元ガウス分布をガウシアンフィルタに適用すると、ガウシアンフィルタの各フィルタ係数はhg(x,y)で表され、ガウシアンフィルタを位置(0,0)の画素に適用する時、位置(x,y)におけるフィルタ係数はhg(x,y)で表される。つまり、ガウシアンフィルタによるフィルタリング後の位置(0,0)の画素値に対する、フィルタリング前の位置(x,y)の画素値の寄与率はhg(x,y)で表される。
ステップS444では、8つのガウシアンフィルタとして、σ=1,3,5,7,9,11,13,15のガウシアンフィルタを用いることとする。続くステップS445では、小画像Lsと平滑化小画像RsG1〜RsG8の夫々との間で画像マッチングを行い、平滑化小画像RsG1〜RsG8の内、最もマッチング誤差が小さくなる平滑化小画像(即ち、小画像Lsとの相関性が最も高い平滑化小画像)を特定する。
平滑化小画像RsG1に着目し、小画像Lsと平滑化小画像RsG1を対比した時のマッチング誤差(マッチング残差)の算出法を簡単に説明する。小画像Lsと平滑化小画像RsG1の画像サイズは同じであり、それらの水平方向の画素数及び垂直方向の画素数を夫々MN及びNNとする(MN及びNNは、2以上の整数)。小画像Ls内の位置(x,y)における画素の画素値をVLs(x,y)にて表し、平滑化小画像RsG1内の位置(x,y)における画素の画素値をVRs(x,y)にて表す。(但し、x及びyは、0≦x≦MN−1且つ0≦y≦NN−1、を満たす整数)。そうすると、対比画像間におけるSAD(Sum of Absolute Difference)を表すRSADは下記式(B−3)に従って算出され、対比画像間におけるSSD(Sum of Square Difference)を表すRSSDは下記式(B−4)に従って算出される。
このRSAD又はRSSDを、小画像Lsと平滑化小画像RsG1との間におけるマッチング誤差とする。同様にして、小画像Lsと平滑化小画像RsG2〜RsG8の夫々との間におけるマッチング誤差も求め、最もマッチング誤差が小さくなる平滑化小画像を特定する。今、σ=5に対応する平滑化小画像RsG3が特定されたとする。ステップS445では、平滑化小画像RsG3に対応するσをσ’とする。即ち、σ’の値は5となる。
続くステップS446では、このσ’によって表されるガウスぼけを補正対象画像Lwの劣化の状態を表す画像劣化関数として取り扱うことにより、補正対象画像Lwの劣化除去を図る。
具体的には、ステップS446では、σ’に基づいて補正対象画像Lwの全体にアンシャープマスクフィルタを適用することにより、補正対象画像Lwのぶれを除去する。アンシャープマスクフィルタの適用前の画像を入力画像IINPUTとし、アンシャープマスクフィルタの適用後の画像を出力画像IOUTPUTとして、アンシャープマスクフィルタの処理内容を説明する。まず、アンシャープフィルタとしてσ’のガウシアンフィルタ(即ち、σ=5のガウシアンフィルタ)を採用し、このσ’のガウシアンフィルタを用いて入力画像IINPUTをフィルタリングすることにより、ぼかし画像IBLURを生成する。次に、入力画像IINPUTの各画素値からぼかし画像IBLURの各画素値を差し引くことにより、入力画像IINPUTとぼかし画像IBLURとの間の差分画像IDELTAを生成する。最後に、入力画像IINPUTの各画素値に差分画像IDELTAの各画素値を加算することによって得られた画像を、出力画像IOUTPUTとする。入力画像IINPUTと出力画像IOUTPUTとの関係式を式(B−5)に示す。式(B−5)において、(IINPUT・Gauss)は、σ’のガウシアンフィルタを用いて入力画像IINPUTをフィルタリングした結果を表している。
IOUTPUT =IINPUT+IDELTA
=IINPUT+(IINPUT−IBLUR)
=IINPUT+(IINPUT−(IINPUT・Gauss) ・・・(B−5)
ステップS446では、補正対象画像Lwを入力画像IINPUTとして取り扱うことにより、出力画像IOUTPUTとしてのフィルタリング画像を得る。そして、ステップS447において、このフィルタリング画像のリンギングを除去して補正画像Qwを生成する(ステップS447の処理は、図37のステップS409の処理と同じである)。
アンシャープマスクフィルタを用いることにより、入力画像(IINPUT)のエッジが強調され、画像鮮鋭化効果が得られる。但し、ぼかし画像(IBLUR)生成時におけるぼかし度合いが入力画像に含まれる実際のぼけ量と大きく異なると、適切なぼけ補正効果が得られない。例えば、ぼかし画像生成時におけるぼかし度合いが実際のぼけ量よりも大きいと、出力画像(IOUTPUT)は、極端に鮮鋭化された不自然な画像となる。一方、ぼかし画像生成時におけるぼかし度合いが実際のぼけ量よりも小さいと、鮮鋭化効果が弱すぎる。本補正方法では、アンシャープフィルタとしてσにてぼかし度合いが規定されるガウシアンフィルタを用い、そのガウシアンフィルタのσとして画像劣化関数に対応するσ’を用いる。このため、最適な鮮鋭化効果が得られ、ぼけが良好に除去された補正画像が得られる。即ち、見た目においてぶれの少ない画像を低い計算コストで生成することができる。
図43に、入力画像IINPUTとしての手ぶれ画像300と共に、最適なσのガウシアンフィルタを用いた場合に得られる画像(即ち、本来の補正画像)302と、小さすぎるσのガウシアンフィルタを用いた場合に得られる画像301と、大きすぎるσのガウシアンフィルタを用いた場合に得られる画像303と、を示す。σが小さすぎると鮮鋭化効果が弱く、σが大きすぎると極端に鮮鋭化された不自然な画像が生成されることが分かる。
[第11実施例]
第9実施例において、参照画像生成用の短露光画像を選択するために用いられる第1〜第4評価値Kai、Kbi、Kci及びKdiの算出方法について説明した。この中で、短露光画像Cwiから小画像Csiを抽出し、小画像Csiのエッジ強度又はコントラストに基づいて短露光画像Cwiの全体に対するぶれ量を推定し、これによって評価値Kai及びKbiを算出することを述べた(図31及び図33参照)。この際、小画像Csiを短露光画像Cwiの中央付近から抽出する例を挙げたが、小画像Csiが短露光画像Cwiの中央付近から抽出される必要性は必ずしもない。例えば、以下のようにするとよい。尚、説明の具体化のため、N=5の場合、即ち、5枚の短露光画像Cw1〜Cw5が取得される場合を考える。
まず、ブロックマッチング法などを利用して、時間的に連続して撮影された2つの短露光画像Cwi-1と短露光画像Cwiの間におけるオプティカルフローを求める。図44は、求められたオプティカルフローの例を示している。オプティカルフローは、対比画像間における動きベクトルの束である。次に、求められたオプティカルフローに基づいて、一連の短露光画像Cw1〜Cw5中における、小画像抽出用領域を検出する。小画像抽出用領域は、各短露光画像内に定義される。そして、短露光画像Cwiの小画像抽出用領域内から小画像Csiを抽出するようにする。
例えば、5枚の短露光画像の撮影中において、撮像装置1が略固定され且つ撮影領域の中央付近に位置する人物が実空間上で動いている場合、その人物に対応する位置において有意な動きベクトルが検出される一方、短露光画像の大部分を占める周辺部において、そのような動きベクトルは検出されない。有意な動きベクトルとは、所定の大きさ以上の大きさを有する動きベクトルであり、単純には大きさがゼロではない動きベクトルを意味する。図44は、このような場合におけるオプティカルフローを表している。この場合、有意な動きベクトルが検出されない領域は、実空間上で静止した被写体が描写される静被写体領域であり、この静被写体領域を小画像抽出用領域として検出する。図44の短露光画像Cw1〜Cw5中における破線で囲まれた領域内部が、検出された小画像抽出用領域に対応している。
また例えば、5枚の短露光画像の撮影中において、撮影領域の中央付近に位置する人物が実空間上で右方向に動いており且つ撮像装置1の筐体(不図示)がその人物に追従するように右方向に振られている場合、図45に示す如く、その人物に対応する位置において有意な動きベクトルは検出されず、一方、短露光画像の大部分を占める周辺部(背景部分)において有意な動きベクトルが検出される。しかも、検出される、この有意な動きベクトルの大きさ及び向きは均一である。この場合、この有意な動きベクトルが検出される領域、即ち、画像中の支配的な動き領域を小画像抽出用領域として検出する(結果的に、図44に示す場合と同様の小画像抽出用領域が検出される)。
また例えば、5枚の短露光画像の撮影中に全被写体及び撮像装置1が実空間上で静止している場合は、短露光画像の全体領域において有意な動きベクトルは検出されない。この場合は、各短露光画像の全体領域が静被写体領域であり、この静被写体領域を小画像抽出用領域として検出する。また例えば、5枚の短露光画像の撮影中において、全被写体が実空間上で静止しているものの撮像装置1の筐体が右方向に振られている場合或いは撮像装置1が実空間上で静止しているものの全被写体が均一に左方向に移動している場合は、図46に示す如く、短露光画像の全体に渡って、大きさ及び向きが均一な、有意な動きベクトルが検出される。この場合は、短露光画像の全体領域が支配的な動き領域であると判断され、その支配的な動き領域を小画像抽出用領域として検出する。
このように、オプティカルフローを形成する複数の動きベクトルを統計処理することにより小画像抽出用領域を特定することができる。
或いは、実空間上で動く動被写体(人物など)を検出し、その動被写体が位置していない領域を小画像抽出用領域として検出するようにしてもよい。画像処理による、公知の動被写体の追尾技術を用いれば、短露光画像の画像データを含む撮像部11の出力から動被写体を検出して追尾することが可能である。
撮影領域内で不規則に動く動被写体が描画されている領域より小画像Csiを抽出し、その小画像Csiに基づいて評価値(Kai又はKbi)を算出するようにすると、該評価値が動被写体の動きの影響を受け、小画像Csi及び短露光画像Cwiに対するぶれ量の推定精度が劣化する。結果、ぶれ量の小さな短露光画像の選択に失敗し、適切な参照画像Rwを生成できなくなる可能性が高まる。しかしながら、上記の如く、小画像抽出用領域(静被写体領域又は支配的な動き領域)を検出して小画像抽出用領域から小画像Csiを抽出するようにすれば、短露光画像Cwi中に不規則に動く動被写体が含まれていたとしても、ぶれ量の少ない短露光画像を正確に選択して適切な参照画像Rwを生成できるようになる。
また、短露光画像Cwiの回転角に基づく評価値Kciを算出する際にも(図36参照)補正対象対象Lwから小領域が抽出されるが、評価値Kciが動被写体の動きの影響を受けるのを回避すべく、この小領域も小画像抽出用領域から抽出するようにするとよい。この場合、補正対象画像Lwと5枚の短露光画像Cw1〜Cw5から成る一連の連続撮影画像群に対して、上述したようにオプティカルフローを求め、そのオプティカルフローを形成する複数の動きベクトルを統計処理することにより小画像抽出用領域を補正対象画像Lw内に設定すればよい。
第3実施形態に対する変形例または注釈事項として、以下に、注釈7及び注釈8を記す。各注釈に記載した内容は、矛盾なき限り、任意に組み合せることが可能である。尚、第1実施形態に対して上述した注釈2〜注釈5の記載内容を、第3実施形態に対して適用することも可能である。
[注釈7]
第6、第7又は第8実施例における上述の動作では、補正対象画像Lwを得るための通常露光撮影の直後にN回の短時間露光撮影を行うようにしているが、このN回の短時間露光撮影を通常露光撮影の直前に行うことも可能である。また、Na回の短時間露光撮影を通常露光撮影の直前に行い且つNb回の短時間露光撮影を通常露光撮影の直後に行って、合計N回の短時間露光撮影を行うようにしてもよい(但し、N=Na+Nb)。
[注釈8]
例えば、以下のように考えることができる。補正対象画像としての1枚の通常露光画像とN枚の短露光画像を取得する画像取得手段と、第6、第7又は第8実施例に記載した方法にてN枚の短露光画像から参照画像を生成する参照画像生成手段(第2画像生成手段)と、図27のステップS212、図28のステップS231又は図29のステップS251の処理を実行して補正画像を生成する補正処理手段と、を有するぶれ補正装置が図26の撮像装置1bに内在している。このぶれ補正装置は、主として、手ぶれ補正部21にて形成される、或いは、手ぶれ補正部21及び主制御部13にて形成される。特に第8実施例の動作を実現する場合においては、参照画像生成手段(第2画像生成手段)は、図29のステップS249の処理を実行する選択処理手段と、図29のステップS250の処理を実行する合成処理手段と、図29のステップS248の分岐処理を行うことでステップS249とS250の何れか一方のみを実行させる切替制御手段と、を有する。