以下、本発明の実施の形態につき、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。
従来技術に対して述べた内容に対応するための、本発明の特徴的技術は、主として第2及び第3実施形態にて述べられるが、まず、説明の便宜上、第2及び第3実施形態に利用される技術内容を、第1実施形態の中で説明する。
<<第1実施形態>>
本発明の第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に格納する(即ち、記憶させる)。この撮影画像は、手ぶれに起因するぶれを含みうる画像であり、後に、操作部17等を介して与えられた補正指示に従って或いは自動的に手ぶれ検出/補正部19によって補正される。このため、以下、シャッタボタン17aの押下に伴う上記1枚の撮影画像を、特に「補正対象画像」と呼ぶ。尚、本明細書において、画像を取得、保存、格納又は記録するという表現は、その画像の画像データを取得、保存、格納又は記録するということと同義である。
手ぶれ検出/補正部19は、手ぶれ検出及び手ぶれ補正を行う。即ち、補正対象画像に含まれるぶれを検出し、その検出結果に従って補正対象画像を補正することにより、ぶれを除去或るいは低減した補正画像を生成する。尚、本明細書において、ぶれ又は劣化に関する「除去」とは、完全なる除去のみを意味するものではなく、ぶれ又は劣化の一部が除去されることをも含む概念である。従って、例えば、「ぶれを除去する」という表現を「ぶれを除去或いは低減する」と読み替えてもよい。
次に、手ぶれ検出及び手ぶれ補正の処理を詳細に説明する。手ぶれ検出及び手ぶれ補正の処理の例として、以下に第1〜第4処理例を説明する。或る処理例に記載した事項は、矛盾なき限り、他の処理例にも適用可能である。尚、第1〜第4処理例における記述において、画像などが記憶される「メモリ」とは、内部メモリ14又は手ぶれ検出/補正部19内に設けられた図示されないメモリを意味するものとする。
[第1処理例]
まず、第1処理例について説明する。図2及び図3を参照する。図2は、第1処理例に係る手ぶれ検出及び手ぶれ補正の動作の流れを表すフローチャートである。図3は、この動作の流れの一部を表す概念図である。この動作の流れを、図2のフローチャートに沿って説明する。
撮影モードにおいて、シャッタボタン17aが押下されると通常露光撮影を行い、これによって生成された補正対象画像をメモリ上に記憶する(ステップS1及びS2)。第1処理例における該補正対象画像を、以下、補正対象画像A1と呼ぶ。
次に、ステップS3において、補正対象画像A1を得る際の露光時間T1と閾値TTHとを比較し、露光時間T1が閾値TTHより小さい場合、補正対象画像に手ぶれに由来するぶれは含まれていない(或いは極めて軽微である)とみなして、手ぶれ補正を行うことなく図2の処理を終了する。閾値TTHとしては、例えば、手ぶれ限界露光時間を用いる。手ぶれ限界露光時間は、手ぶれが無視できると判断される限界露光時間であり、焦点距離fの逆数から算出される。
露光時間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(例えば、焦点距離fの逆数)より小さい場合、補正対象画像に手ぶれに由来するぶれは含まれていない(或いは極めて軽微である)とみなして、手ぶれ補正を行うことなく図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は、シャッタボタン17bの押下に伴って撮影された静止画であるため、それは静止画用の画像処理を介して得られる。両画像処理間の相違に起因して、被写体が同一であっても小画像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(例えば、焦点距離fの逆数)より小さい場合、補正対象画像に手ぶれに由来するぶれは含まれていない(或いは極めて軽微である)とみなして、手ぶれ補正を行うことなく図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にて除去することにより、最終的な補正画像を生成する。
[各処理例に対する考察]
以下に、第1〜第4処理例を利用することの意義や変形例について記述する。
通常露光撮影よりも短い露光時間の撮影によって参照画像は、低輝度であるものの含まれる手ぶれ量が少ないため、それのエッジ成分は、手ぶれのない画像のエッジ成分に近い。従って、上述の如く、この参照画像から得られる画像をフーリエ反復法における初期復元画像(復元画像の初期値)とする。
フーリエ反復法によるループ処理の繰り返しによって、復元画像(f')は、手ぶれが極力除去された画像に徐々に近づいていくが、初期復元画像自体が既に手ぶれのない画像に近いため、従来の如くランダム画像や劣化画像を初期復元画像とするよりも収束が早くなる(最短では、1回のループ処理で収束する)。この結果、手ぶれ情報(PSF又は画像復元フィルタのフィルタ係数)作成用の処理時間及び手ぶれ補正用の処理時間が短縮される。また、初期復元画像が収束すべき画像からかけ離れていると局所解(真に収束すべき画像とは異なる画像)に収束する確率が高くなるが、上述のように初期復元画像を設定することにより、局所解に収束する確率が低くなる(即ち、手ぶれ補正に失敗する確率が低くなる)。
また、手ぶれは画像全体に一様な劣化を与えると考えられるため、各画像から小領域を抽出して各小領域の画像データから手ぶれ情報(PSF又は画像復元フィルタのフィルタ係数)を作成し、それを画像全体に適用する。これにより、必要な演算量が低減され、手ぶれ情報作成用の処理時間及び手ぶれ補正用の処理時間が短縮される。勿論、必要回路の規模縮小化やそれに伴うコストダウン効果も見込める。
この際、各処理例で述べたように、エッジ成分を多く含む特徴的な小領域を自動的に抽出するようにする。PSFの算出元画像におけるエッジ成分の増大は、雑音成分に対する信号成分の割合の増大を意味するため、特徴的な小領域の抽出によって雑音の影響が小さくなり、手ぶれ情報をより正確に検出することができるようになる。
また、第2処理例では参照画像取得用の専用の撮影を必要とせず、第1、第3及び第4処理例でも参照画像取得用の専用の撮影(短時間露光撮影)は1回分であるため、撮影時の負荷増大は殆どない。また、言うまでもないが、角速度センサ等を用いることなく手ぶれ検出及び手ぶれ補正を行うため、撮像装置1の低コスト化が図られる。
また、第1、第3又は第4処理例において(図3、図10又は図13参照)、参照画像A2、C2又はD2は補正対象画像を得るための通常露光撮影の直後の短時間露光撮影によって得られると説明したが、それらを、その通常露光撮影の直前の短時間露光撮影によって得るようにしても構わない。この場合、第3又は第4処理例における参照画像C3又はD3を、補正対象画像を撮影するフレームの直後のフレームにおけるスルー表示用画像とすればよい。
また、各処理例では、各小画像からフーリエ反復法に対する劣化画像及び初期復元画像を生成する過程において、各小画像に対して、ノイズ除去処理、輝度正規化処理、エッジ抽出処理及び画像サイズ正規化処理(図3、図7、図10及び図13参照)の内の何れか1以上の処理を適用している。各処理例で述べたこれらの処理の適用方法は、あくまで例であり、様々に変更可能である。極端には、各処理例における劣化画像及び初期復元画像の生成過程において、各小領域に対して上記の4つの処理の全てを施すことも可能である(但し、第1処理例においては、画像サイズ正規化処理は無意味である)。
また、補正対象画像または参照画像からエッジ成分を比較的多く含む特徴的な小領域を抽出する手法として、様々な手法が採用可能である。例えば、オートフォーカス制御において算出されるAF評価値を流用して、この抽出を行ってもよい。このオートフォーカス制御は、TTL(Through The Lends)方式のコントラスト検出法を用いる。
撮像装置1にはAF評価部(不図示)が設けられており、AF評価部は、各撮影画像(又は各スルー表示用画像)を複数の分割領域に分割して、分割領域内の画像のコントラスト量に応じたAF評価値を分割領域ごとに算出する。図1の主制御部13は、上記複数の分割領域の内の何れかの分割領域についてのAF評価値を参照して、このAF評価値が最大値(或いは極大値)をとるように山登り制御によって撮像部11のフォーカスレンズの位置を制御することにより、被写体の光学像を撮像素子の撮像面上に結像させる。
このようなオートフォーカス制御が実行される場合において、補正対象画像または参照画像から特徴的な小領域を抽出する際、その抽出元画像の各分割領域についてのAF評価値を参照するようにする。例えば、抽出元画像の各分割領域についてのAF評価値の内、最大のAF評価値を特定し、その最大のAF評価値に対応する分割領域(又は該分割領域を基準とした領域)を特徴的な小領域として抽出するようにする。AF評価値は、分割領域内の画像のコントラスト量(或いはエッジ成分)の増大に伴って増大するため、これによっても、エッジ成分を比較的多く含む小領域を特徴的な小領域として抽出することが可能である。
<<第2実施形態>>
次に、本発明の第2実施形態に係る撮像装置を説明する。第2実施形態に係る撮像装置の全体ブロック図は、図1に示すそれと同じであるため、第2実施形態に係る撮像装置も符号1によって参照することとする。第2実施形態に係る撮像装置1も、符号11〜19にて参照される各部位を備え(図1参照)、それらの各部位の基本的な動作は第1実施形態におけるそれと同様である。第2実施形態は、第1実施形態にて述べた技術内容を利用した実施形態であり、第1実施形態の記載内容は第2実施形態にも適用される。
図14は、撮像装置1に含まれる、撮影に関与する部位の構成を表すブロック図であり、図15は、撮像装置1に含まれる、再生に関与する部位の構成を表すブロック図である。図16は、撮影に関与する部位の動作手順を表すフローチャートであり、図17は、再生に関与する部位の動作手順を表すフローチャートである。
例えば、図14の画像取得部31は図1の主制御部13に備えられ、図14の小画像切出部32及び記録制御部33は図1の手ぶれ検出/補正部19に備えられる。また例えば、図15の読出制御部41、復元関数生成部42及び復元処理部43は、図1の手ぶれ検出/補正部19に備えられる。図14及び図15において、符号FL1は、補正対象画像が記録されるべき画像ファイルである。画像ファイルFL1は、記録媒体16に保存される。
図18に、画像ファイルFL1を含む、記録媒体16に保存されるべき画像ファイルの構成を示す。画像ファイルはヘッダ領域と本体領域から形成され、同一の画像ファイル内に定義されたヘッダ領域と本体領域は互いに関連付けられている。従って、同一の画像ファイル内に格納された、ヘッダ領域及び本体領域の各データは互いに関連付けられている。
図14及び図16を参照して、撮影時の動作を概略的に説明する。撮影モードにおいてシャッタボタン17aが押下された時、画像取得部31は、その押下後の露光によって得られた1枚の撮影画像を補正対象画像として取得すると共に、その補正対象画像の撮影前又は撮影後に得られた撮影画像を参照画像として取得する。この参照画像の撮影時における露光時間は、第1実施形態で述べたように、補正対象画像のそれよりも短い。
小領域切出部32は、参照画像の一部である小画像を参照画像から切り出す。記録制御部33は、切り出された小画像の画像データ及び小画像の切り出し位置を表す切り出し位置データを画像ファイルFL1のヘッダ領域に記録する。一方で、補正対象画像の画像データは、画像ファイルFL1の本体領域に記録される。
補正対象画像は、シャッタボタン17aの押下に伴って画像ファイルFL1に記録されるべき「主画像」とも呼べ、画像ファイルFL1のヘッダ領域に記録される小画像は、補正対象画像のぶれによる劣化を補正するための「副画像」とも呼べる。
図15及び図17を参照して、再生時の動作を概略的に説明する。再生モードにおいて、画像ファイルFL1内に記録された画像の再生を指示する操作が図1の操作部17に対して施されると、その操作内容は図1の主制御部13に伝達され、画像ファイルFL1に記録された補正対象画像の画像データが主制御部13を介して図15の復元処理部43及び復元関数生成部42に送られる。一方において、この時、読出制御部41は、画像ファイルFL1のヘッダ領域に記録されている小画像の画像データと切り出し位置データを読み出して、読み出したデータを復元関数生成部42に送る。
その後、復元関数生成部42は、読み出された小画像(副画像)と、切り出し位置データに基づいて補正対象画像(主画像)から切り出された小画像と、を用いて復元関数を生成する。より具体的には、両小画像に基づいて第1実施形態で述べたフーリエ反復法を実行することにより、補正対象画像のぶれによる劣化の状態を推定し(即ち、PSFを求め)、その劣化を補正するための復元関数を生成する。この復元関数は画像復元フィルタによって表され、復元処理部43は、この画像復元フィルタを用いて補正対象画像をフィルタリングすることにより、補正画像を生成する。実際には、復元関数生成部42が画像復元フィルタの各フィルタ係数を算出して復元処理部43に送る。復元処理部43には、画像に二次元空間フィルタを適用する部位が設けられており、受けとった各フィルタ係数を二次元空間フィルタに当てはめることにより画像復元フィルタが形成される。
尚、補正対象画像及び参照画像から切り出される小画像の各画素値は、第1実施形態の記述内容からも明らかなように、画素の輝度を表す情報を含む。即ち例えば、それらの小画像は、輝度画像(輝度によって量子化された濃淡画像)である。
以下、図14及び図15に示す各部位の動作を、第1実施形態にて述べた第1〜第4処理例に対応させて説明する。以下に、第1〜第4処理例に対応する第1〜第4動作例を個別に説明する。或る動作例に記載した事項は、矛盾なき限り、他の動作例にも適用可能である。
[第1動作例]
まず、第1動作例について説明する。第1動作例では、第1実施形態の第1処理例を実施する場合における、図14及び図15に示す各部位の動作を説明する。第1処理例に対応する図2及び図3も再び参照する。
第1動作例において、図14の画像取得部31は、補正対象画像A1及び参照画像A2を取得する(図3参照)。第1動作例において、小画像切出部32によって切り出される小画像は、図3の小画像A2aである。例えば、小画像切出部32は、図2のステップS5及びS6の処理を行うことにより小画像A2aを切り出す(抽出する)。この場合、小画像A1aが抽出されてから小画像A2aが抽出されることになるが、小画像A1aを抽出することなく小画像A2aだけを抽出するようにしてもよい。つまり、ハリスのコーナ検出器などを用いて参照画像A2の中から特徴的な小領域を抽出し、この抽出された小領域内の画像を小画像A2aとして参照画像A2から切り出しても良い。
第1動作例において、画像ファイルFL1のヘッダ領域に記録される画像データは、小画像A2aの画像データである。画像ファイルFL1のヘッダ領域に記録される切り出し位置データによって、再生時に、補正対象画像A1から切り出される小画像A1aの座標位置は定まる。例えば、この切り出し位置データは、小画像A2aの左上隅及び右下隅に位置する画素201及び202の、参照画像A2上の座標値を表す(図19参照)。
復元関数生成部42は、読出制御部41を介して与えられた切り出し位置データに基づいて、補正対象画像A1から小領域を抽出して小画像A1aを生成する。また、復元関数生成部42は、ステップS7及びS8の処理を介して画像ファイルFL1のヘッダ領域内に記録された小画像A2aから小画像A2cを生成し(図2及び図3参照)、小画像A1a及びA2cを用いてステップS9〜S11の処理を実行することにより、劣化関数としてのPSFの算出を介して復元関数(即ち、画像復元フィルタの各フィルタ係数)を求める。
補正対象画像は、ぶれのない理想画像に対して劣化関数を作用させることによって得られた画像と仮定される。一方で、復元関数は、画像に劣化関数を作用させる変換の逆の変換を行う関数である。従って、補正対象画像に復元関数を作用させれば、補正対象画像からぶれが除去される。
復元処理部43は、求められた復元関数を用いて、ステップS12及びS13の処理を実行することにより、補正対象画像A1からフィルタリング画像の生成を介して補正画像を生成する。
例えば、画像復元フィルタのフィルタサイズが5×5である場合、フィルタリング画像を形成する画素の画素値と、補正対象画像を形成する画素の画素値との関係は、下記式(7)によって表される。ここで、IF(i,j)は、フィルタリング画像の座標位置(i,j)の画素の画素値を表し、IO(i+u,j+v)は、補正対象画像の座標位置(i+u,j+v)の画素の画素値を表し、w(u,v)は、画像復元フィルタの座標位置(u,v)のフィルタ係数を表す。
補正画像は、フィルタリング画像と補正対象画像を加重平均することによって得られる。この加重平均によって、フィルタリングによって生じたリンギングが除去される。例えば、この加重平均は、画素ごとに行われ、画素ごとの加重平均の比率は、補正対象画像の各画素のエッジ強度に応じて定められる。この加重平均よるリンギング除去手法は、公知であるため、詳細な説明を割愛する(例えば、特開2006−129236号公報参照)。尚、加重平均よるリンギング除去処理を省略することも可能であり、この場合は、フィルタリング画像を最終的に求められるべき補正画像と捉えればよい(これは、後述の第2〜第4動作例にも当てはまる)。フィルタリング画像も、ぶれが除去された画像であることに相違はない。
尚、上述の例では、撮影時において図3の小画像A2aを画像ファイルFL1に記録するようにしているが、小画像A2aの代わりに、小画像A2b又はA2cを記録するようにしてもよい。この場合、図20に示す如く、小画像切出部32と記録制御部33との間に画像処理部34を設ければよい。そして例えば、画像処理部34が、小画像切出部32が抽出した小画像A2aに対して、ステップS7のノイズ除去処理などの第1処理例で述べた必要な処理を行うことにより、小画像A2b又はA2cを生成する。記録制御部33は、画像処理部34によって生成された小画像A2b又はA2cを画像ファイルFL1のヘッダ領域に記録すれば良い。この場合、図15の復元関数生成部42においてステップS7及びS8の処理の一部又は全部を行う必要がなくなる。
[第2動作例]
次に、第2動作例について説明する。第2動作例では、第1実施形態の第2処理例を実施する場合における、図14及び図15に示す各部位の動作を説明する。第2処理例に対応する図6及び図7も再び参照する。
第2動作例において、図14の画像取得部31は、補正対象画像B1及び参照画像B3を取得する(図7参照)。第2動作例において、小画像切出部32によって切り出される小画像は、図7の小画像B3aである。小画像切出部32は、図6のステップS25の処理を行うことにより小画像B3aを抽出する。
第2動作例において、画像ファイルFL1のヘッダ領域に記録される画像データは、小画像B3aの画像データである。画像ファイルFL1のヘッダ領域に記録される切り出し位置データによって、再生時に、補正対象画像B1から切り出される小画像B1aの座標位置は定まる。例えば、この切り出し位置データは、小画像B3aの左上隅及び右下隅に位置する画素の、参照画像B3上の座標値を表す。
復元関数生成部42は、読出制御部41を介して与えられた切り出し位置データに基づいてステップS26の処理を実行することにより、補正対象画像B1から小画像B1aを生成する。また、復元関数生成部42は、ステップS27及びS28の処理を介して、小画像B1aから小画像B1cを生成すると共に画像ファイルFL1のヘッダ領域内に記録された小画像B3aから小画像B3cを生成する(図6及び図7参照)。続いて、小画像B1c及びB3cを用いてステップS29並びにS10及びS11の処理を実行することにより、劣化関数としてのPSFの算出を介して復元関数(即ち、画像復元フィルタの各フィルタ係数)を求める。
その後、復元処理部43は、ステップS12及びS13の処理を実行することにより、補正対象画像B1からフィルタリング画像の生成を介して補正画像を生成する。
尚、上述の例では、撮影時において図7の小画像B3aを画像ファイルFL1に記録するようにしているが、小画像B3aの代わりに、小画像B3b又はB3cを記録するようにしてもよい。この場合、図20に示す如く、小画像切出部32と記録制御部33との間に画像処理部34を設ければよい。そして例えば、画像処理部34が、小画像切出部32が抽出した小画像B3aに対して、ステップS27のエッジ抽出処理などの第2処理例で述べた必要な処理を行うことにより、小画像B3b又はB3cを生成する。記録制御部33は、画像処理部34によって生成された小画像B3b又はB3cを画像ファイルFL1のヘッダ領域に記録すれば良い。この場合、図15の復元関数生成部42においてステップS27及びS28の処理の一部又は全部を行う必要がなくなる。
[第3動作例]
次に、第3動作例について説明する。第3動作例では、第1実施形態の第3処理例を実施する場合における、図14及び図15に示す各部位の動作を説明する。第3処理例に対応する図9及び図10も再び参照する。
第3動作例において、図14の画像取得部31は、補正対象画像C1並びに参照画像C2及びC3を取得する(図10参照)。第3動作例において、小画像切出部32によって切り出される小画像は、図10の小画像C2a及びC3aである。小画像切出部32は、図6のステップS35及びS36の処理を行うことにより小画像C2a及びC3aを抽出する。
第3動作例において、画像ファイルFL1のヘッダ領域に記録される画像データは、例えば、図10の小画像C4a又はC4bの画像データである。この場合、図20に示す如く、小画像切出部32と記録制御部33との間に画像処理部34を設けて、画像処理部34に図9のステップS37及びS38の処理又はステップS37〜S39の処理を行わせればよい。画像ファイルFL1のヘッダ領域に記録される切り出し位置データによって、再生時に、補正対象画像C1から切り出される小画像C1aの座標位置は定まる。例えば、この切り出し位置データは、小画像C3aの左上隅及び右下隅に位置する画素の、参照画像C3上の座標値を表す。
復元関数生成部42は、読出制御部41を介して与えられた切り出し位置データに基づいて、補正対象画像C1から小領域を抽出して小画像C1aを生成する。また、復元関数生成部42は、画像ファイルFL1のヘッダ領域内に記録された小画像の画像データに基づいて小画像C4bを得る。この際、必要に応じてステップS39の処理を実行する。続いて、小画像C1a及びC4bを用いてステップS40並びにS10及びS11の処理を実行することにより、劣化関数としてのPSFの算出を介して復元関数(即ち、画像復元フィルタの各フィルタ係数)を求める。
その後、復元処理部43は、ステップS12及びS13の処理を実行することにより、補正対象画像C1からフィルタリング画像の生成を介して補正画像を生成する。
尚、上述の例では、撮影時において図10の小画像C4a又はC4bを画像ファイルFL1に記録するようにしているが、それの代わりに、2つの小画像C2a及びC3aを画像ファイルFL1のヘッダ領域に記録するようにしてもよい。この場合、図20の画像処理部34を省略する一方で、小画像C2a及びC3aから小画像C4bを生成する機能を図15の復元関数生成部42に担わせればよい。
[第4動作例]
次に、第4動作例について説明する。第4動作例では、第1実施形態の第4処理例を実施する場合における、図14及び図15に示す各部位の動作を説明する。第4処理例に対応する図12及び図13も再び参照する。
第4動作例において、図14の画像取得部31は、補正対象画像D1並びに参照画像D2及びD3を取得する(図13参照)。第4動作例において、小画像切出部32によって切り出される小画像は、図13の小画像D2a及びD3aである。小画像切出部32は、図6のステップS55及びS56の処理を行うことにより小画像D2a及びD3aを抽出する。
第4動作例において、画像ファイルFL1のヘッダ領域に記録される画像データは、例えば、図13の小画像D4a又はD4bの画像データである。この場合、図20に示す如く、小画像切出部32と記録制御部33との間に画像処理部34を設けて、画像処理部34に図12のステップS57の処理又はステップS57及びS58の処理を行わせればよい。画像ファイルFL1のヘッダ領域に記録される切り出し位置データによって、再生時に、補正対象画像D1から切り出される小画像D1aの座標位置は定まる。例えば、この切り出し位置データは、小画像D3aの左上隅及び右下隅に位置する画素の、参照画像D3上の座標値を表す。
復元関数生成部42は、読出制御部41を介して与えられた切り出し位置データに基づいて、補正対象画像D1から小領域を抽出して小画像D1aを生成する。また、復元関数生成部42は、画像ファイルFL1のヘッダ領域内に記録された小画像の画像データに基づいて小画像D4bを得る。この際、必要に応じてステップS58の処理を実行する。続いて、小画像D1a及びD4bを用いてステップS59並びにS10及びS11の処理を実行することにより、劣化関数としてのPSFの算出を介して復元関数(即ち、画像復元フィルタの各フィルタ係数)を求める。
その後、復元処理部43は、ステップS12及びS13の処理を実行することにより、補正対象画像D1からフィルタリング画像の生成を介して補正画像を生成する。
尚、上述の例では、撮影時において図13の小画像D4a又はD4bを画像ファイルFL1に記録するようにしているが、それの代わりに、2つの小画像D2a及びD3aを画像ファイルFL1のヘッダ領域に記録するようにしてもよい。この場合、図20の画像処理部34を省略する一方で、小画像D2a及びD3aから小画像D4bを生成する機能を図15の復元関数生成部42に担わせればよい。
本実施形態の如く、参照画像から切り出した小画像を補正対象画像と共に画像ファイルに記録しておくようにすれば、再生時に、補正対象画像のぶれを補正することができる。また、小画像の画像データ量は小さいため、従来の如く2枚の撮影画像を単純に記録しておく場合と比べて、必要な記録容量が削減される。
<<第3実施形態>>
第2実施形態では、1枚の参照画像から1つの小画像を切り出して1枚の補正対象画像に対して1つの復元関数を生成し、1つの復元関数を補正対象画像の全体に対して作用させることにより補正対象画像の劣化を補正しているが、1枚の参照画像から複数の小画像を切り出すようにしても良い。1枚の参照画像から複数の小画像を切り出す実施形態として、第3実施形態を説明する。第3実施形態は、第2実施形態を変形した実施形態に相当する。このため、第2実施形態との相違点に着目した説明を以下に記述する。尚、第3実施形態は、第1及び第2実施形態にて述べた技術内容を利用した実施形態であり、矛盾無き限り、第1及び第2実施形態の記載内容を第3実施形態に適用することも可能である。
説明の具体化のため、図14の画像取得部31が、図3の補正対象画像A1及び参照画像A2を取得した場合を想定する。図14の小画像切出部32は、参照画像A2の全体領域をn個に分割する(nは2以上の整数)。今、n=9とし、参照画像A2の全体領域を縦方向に3分割且つ横方向に3分割することにより、参照画像A2の全体領域を、図21に示す如く9個の部分領域で分割する。図21において、破線は分割の境界を示している。そして、ハリスのコーナ検出器などを用いることによって、部分領域ごとに特徴的な小領域を抽出し、各小領域内の画像を小画像として参照画像A2から切り出す。記録制御部33は、切り出された合計9個の小画像の画像データ及び各小画像の切り出し位置を表す切り出し位置データを画像ファイルFL1のヘッダ領域に記録する。一方で、補正対象画像A1の画像データは、画像ファイルFL1のヘッダ領域に記録される。
再生モードにおいて、画像ファイルFL1内に記録された画像の再生を指示する操作が図1の操作部17に対して施されると、その操作内容は図1の主制御部13に伝達され、画像ファイルFL1に記録された補正対象画像の画像データが主制御部13を介して図15の復元処理部43及び復元関数生成部42に送られる。一方において、この時、読出制御部41は、画像ファイルFL1のヘッダ領域に記録されている各小画像の画像データと各切り出し位置データを読み出して、読み出したデータを復元関数生成部42に送る。
参照画像A2の全体領域を9つの部分領域に分割するのと同じようにして、復元関数生成部42は、補正対象画像A1の全体領域を9つの部分領域に分割する(図21参照)。そして、復元関数生成部42は、各切り出し位置データに基づいて補正対象画像から部分領域ごとに小画像を切り出し、部分領域ごとに補正対象画像A1内の小画像と参照画像A2内の小画像を用いてフーリエ反復法を実行することにより、各部分領域に対して個別に復元関数を生成する。各復元関数は画像復元フィルタによって表され、復元処理部43は、補正対象画像A1内の各部分領域の画像に対して対応する画像復元フィルタを用いたフィルタリング処理を実行することにより、フィルタリング画像を生成し、更にリンギング除去処理を介して補正画像を生成する。
撮像装置1に作用する手ぶれの方向が上下方向及び/又は左右方向のみである場合、手ぶれは画像全体に一様な劣化を与えると考えられるが、回転方向の手ぶれが加わると、劣化関数(PSF)が補正対象画像内の異なる位置間で異なってくる。結果、作用させるべき復元関数も補正対象画像内の異なる位置間で異なってくる。このような場合に、複数の小画像を切り出して記録しておく手法は有益である。
また例えば、撮影領域内に被写体距離の近い人物と被写体距離の遠い山が混在する場合、人物が描画されている領域に対して最適な復元関数と山が描画されている領域に対して最適な復元関数は異なる(両者間で劣化関数が異なるため)。このような混在が起きている場合にも、複数の小画像を切り出して記録しておく手法は有益である。例えば、測距センサ(不図示)又はTTL(Through The Lens)方式の測距を用いて撮影領域に収まる各被写体の被写体距離を算出し、図22に示す如く、参照画像A2の全体領域を、被写体距離の比較的小さい被写体が描画されている第1の部分領域と被写体距離の比較的大きい被写体が描画されている第2の部分領域に分割する(この場合、n=2である)。この後の動作内容は、nの値が異なるだけで、上述したものと同じである。ここで、被写体距離とは、被写体と撮像装置1との間の実空間上の距離を意味する。
尚、第1処理例及び第1動作例に対応する補正対象画像A1及び参照画像A2を取得した場合の動作を例示したが、第2処理例及び第2動作例、第3処理例及び第3動作例、又は、第4処理例及び第4動作例に対しても、本実施形態で述べた手法は適用可能である。
<<変形等>>
上述した説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。上述の実施形態の変形例または注釈事項として、以下に、注釈1〜注釈3を記す。各注釈に記載した内容は、矛盾なき限り、任意に組み合わせることが可能である。
[注釈1]
図15の読出制御部41、復元関数生成部42及び復元処理部43を、撮像装置1以外の他の装置(例えば、パーソナルコンピュータ)に設けることも可能である。
[注釈2]
図1の撮像装置1は、ハードウェア、或いは、ハードウェアとソフトウェアの組み合わせによって実現可能である。特に、図14、図15及び図20に示される各部位(但し、記録媒体16を除く)の機能は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせによって実現可能であり、また、それらの各機能を撮像装置1の外部装置(コンピュータ等)にて実現することも可能である。
ソフトウェアを用いて撮像装置1を構成する場合、ソフトウェアにて実現される部位についてのブロック図は、その部位の機能ブロック図を表すことになる。図14、図15及び図20に示される各部位(但し、記録媒体16を除く)にて実現される機能の全部または一部を、プログラムとして記述し、該プログラムをプログラム実行装置(例えばコンピュータ)上で実行することによって、その機能の全部または一部を実現するようにしてもよい。
[注釈3]
例えば、以下のように考えることができる。図14又は図20の画像取得部31、小画像切出部32及び記録制御部33は、画像記録装置を形成する。この画像記録装置には、図20の画像処理部34が含まれうる。図15の読出制御部41、復元関数生成部42及び復元処理部43は、画像補正装置を形成する。