以下、本発明の実施の形態につき、図面を参照して具体的に説明する。参照される各図において、同一の部分には同一の符号を付し、同一の部分に関する重複する説明を原則として省略する。
<<第1実施形態>>
まず、本発明の第1実施形態について説明する。図1は、本発明の第1実施形態に係る撮像装置1の全体ブロック図である。撮像装置1は、静止画像を撮影及び記録可能なデジタルスチルカメラ、又は、静止画像及び動画像を撮影及び記録可能なデジタルビデオカメラである。
撮像装置1は、撮像部11と、AFE(Analog Front End)12と、主制御部13と、内部メモリ14と、表示部15と、記録媒体16と、操作部17と、を備えている。操作部17には、シャッタボタン17aが備えられている。
図2に、撮像部11の内部構成図を示す。撮像部11は、光学系35と、絞り32と、CCD(Charge Coupled Devices)やCMOS(Complementary Metal Oxide Semiconductor)イメージセンサなどから成る撮像素子33と、光学系35や絞り32を駆動制御するためのドライバ34と、を有している。光学系35は、ズームレンズ30及びフォーカスレンズ31を含む複数枚のレンズから形成される。ズームレンズ30及びフォーカスレンズ31は光軸方向に移動可能である。ドライバ34は、主制御部13からの駆動制御信号に基づいてズームレンズ30及びフォーカスレンズ31の各位置並びに絞り32の開度を駆動制御することにより、撮像部11の焦点距離(画角)及び焦点位置並びに撮像素子33への入射光量を制御する。
撮像素子33は、光学系35及び絞り32を介して入射した被写体を表す光学像を光電変換し、該光電変換によって得られた電気信号をAFE12に出力する。より具体的には、撮像素子33は、マトリクス状に二次元配列された複数の受光画素を備え、各撮影において、各受光画素は露光時間に応じた電荷量の信号電荷を蓄える。蓄えた信号電荷の電荷量に比例した大きさを有する各受光画素からのアナログ信号は、撮像装置1内で生成される駆動パルスに従って順次AFE12に出力される。以下の説明における「露光」とは、撮像素子33の露光を意味するものとする。
AFE12は、撮像部11(撮像素子33)から出力されるアナログ信号を増幅し、増幅されたアナログ信号をデジタル信号に変換する。AFE12は、このデジタル信号を、順次、主制御部13に出力する。
主制御部13は、CPU(Central Processing Unit)、ROM(Read Only Memory)及びRAM(Random Access Memory)等を備え、映像信号処理部として機能する。主制御部13は、AFE12の出力信号に基づいて、撮像部11によって撮影された画像(以下、「撮影画像」ともいう)を表す映像信号を生成する。また、主制御部13は、表示部15の表示内容を制御する表示制御手段としての機能をも備え、表示に必要な制御を表示部15に対して行う。また、主制御部13は、撮像素子33の露光時間を制御するための露光時間制御信号を撮像部11に出力する。
内部メモリ14は、SDRAM(Synchronous Dynamic Random Access Memory)等にて形成され、撮像装置1内で生成された各種データを一時的に記憶する。表示部15は、液晶ディスプレイパネル等から成る表示装置であり、主制御部13の制御の下、撮影された画像や記録媒体16に記録されている画像などを表示する。記録媒体16は、SD(Secure Digital)メモリカード等の不揮発性メモリであり、主制御部13による制御の下、撮影画像などを記憶する。
操作部17は、外部からの操作を受け付ける。操作部17に対する操作内容は、主制御部13に伝達される。シャッタボタン17aは、静止画像の撮影及び記録を指示するためのボタンである。シャッタボタン17aを押下することによって静止画像の撮影及び記録が指示される。
撮像装置1の動作モードには、静止画像または動画像の撮影及び記録が可能な撮影モードと、記録媒体16に記録された静止画像または動画像を表示部15に再生表示する再生モードと、が含まれる。操作部17に対する操作に応じて、各モード間の遷移は実施される。
撮影画像は、手ぶれに起因するぶれを含みうる。主制御部13にはぶれ補正処理を実行するぶれ補正部(ぶれ補正装置)が内在されており、画像処理によって静止画像のぶれを補正する機能を備える。以下、ぶれ補正部によってぶれが補正されるべき静止画像としての撮影画像を、特に「補正対象画像」と呼び、そのぶれの補正後の画像を「ぶれ補正画像」と呼ぶ。
撮影モードにおいてシャッタボタン17aを押下することによって、補正対象画像を撮影するための露光が行われて補正対象画像を表す信号が撮像素子33から出力される。補正対象画像を含む1枚又は複数枚の撮影画像の露光が行われる期間を実撮影期間と呼ぶ。撮影モードにおいて、撮像部11は所定のフレーム周期(例えば、1/30秒)にて順次撮影を行っており、実撮影期間以外の期間(以下、プレビュー期間という)中の撮影によって得られる各撮影画像をプレビュー画像と呼ぶ。次々と得られるプレビュー画像は、順次、表示部15上で更新表示される。
図3に、撮影モードにおける、プレビュー期間と実撮影期間との時間的関係を示す。プレビュー期間中における周期的な撮影によってプレビュー画像列を取得している状態において、シャッタボタン17aが押下されるとプレビュー期間から実撮影期間に移行し、その期間中に補正対象画像の露光が実施される。補正対象画像の露光を含む必要な露光が完了すると、実撮影期間から再度プレビュー期間に戻る。以後、シャッタボタン17aが押下される度に、上述と同様にして、プレビュー期間から実撮影期間への遷移と実撮影期間からプレビュー期間への遷移が生じる。
図4に、撮像装置1の一部ブロック図を示す。主制御部13は、補正対象画像の露光期間中に撮像装置1に作用した手ぶれ量を推定するための手ぶれ量推定部51と、撮像素子33の露光時間に対する制御を含む撮影制御を行う撮影制御部52と、記録媒体16に記録されるべきデータを生成して該データを記録媒体16に記録させる記録制御部53と、記録媒体16の記録データを受け取って補正対象画像に対するぶれ補正処理を実行する補正処理部54と、を備える。
尚、本明細書では、画像を表すデータを画像データと呼び、或る画像の画像データに対して何らかの処理(記録、保存、読み出し等)を行うことを説明する文章において、記述の簡略化上、画像データの記述を省略することがある。例えば、静止画像の画像データの記録という表現と、静止画像の記録という表現は同義である。また、本明細書では、記号を記述することによって、その記号に対応する画像等の呼び名を簡略化することがある。例えば、通常露光画像GLと画像GLは同じものを指す。また、本明細書において、画像列とは、時系列で並ぶ複数の画像の集まりを指す。
以下、撮像装置1の動作(特にぶれ補正処理の動作)を詳細に説明する実施例として、第1〜第7実施例を説明する。或る実施例に記載した事項は、矛盾なき限り、他の実施例にも適用可能である。
[第1実施例]
まず、第2実施例以降に示される処理の基本動作を実現する実施例として、第1実施例を説明する。第1実施例にて説明される事項は、第2実施例以降の説明において適宜参照される。図5は、第1実施例に係る、撮像装置1の撮影動作及び補正動作の流れを表すフローチャートである。尚、第1実施例において、図4の手ぶれ量推定部51は機能しない。
撮影モードにおいて実行されるステップS1〜S5の各処理内容を説明する。撮影モードにおいてシャッタボタン17aが押下されると、ステップS1において、主制御部13は、光学系35内のレンズの位置及び既知情報等に基づいて撮像部11の焦点距離fDを表すデータを取得すると共に、被写体の明るさを測定する測光回路(不図示)から得られた明るさ情報に基づいて撮像素子33の露光量が適正となる露光時間TEPを算出する。露光時間とは、或る静止画像を撮影するための露光期間の長さである。
この後、ステップS2において、撮像装置1は、通常露光撮影と短露光撮影を連続的に実行することにより通常露光画像及び短露光画像を取得する。短露光撮影は、通常露光撮影の露光時間よりも短い露光時間にて行われる撮影である。通常露光撮影の露光時間としてTEPが用いられ、短露光撮影の露光時間として例えばTEP/4が用いられる。撮影制御部52が、露光時間TEPに基づいて通常露光撮影及び短露光撮影用の露光時間制御信号を生成して撮像素子33に与えることにより通常露光撮影及び短露光撮影が実行される。また、通常露光撮影と短露光撮影の実行時における撮像部11の焦点距離はfDである。
通常露光画像は、通常露光撮影によって得られた静止画像としての撮影画像を意味し、短露光画像は、短露光撮影によって得られた静止画像としての撮影画像を意味する。ステップS2の通常露光撮影及び短露光撮影は実撮影期間中に行われ(図3参照)、短露光撮影は、通常露光画像の撮影直前又は直後に実行される。ここで得られた通常露光画像及び短露光画像をそれぞれ記号GL及びGSで表す。通常露光画像GL及び短露光画像GSの各画像データは図4の記録制御部53に与えられる。通常露光画像GLと短露光画像GSの画像サイズ(即ち、水平方向及び垂直方向の画素数)は等しいものとする。
ステップS2の後、ステップS3において、記録制御部53は、短露光画像GSの中から特徴的な小領域を抽出する。この抽出された小領域内の画像を小画像GSAで表す。例えば、ハリス(Harris)のコーナ検出器を用いて128×128画素の小領域を特徴的な小領域として抽出する。特徴的な小領域は、抽出元画像の中でエッジ成分が比較的多い(換言すれば、コントラストが比較的強い)領域のことを指し、例えば、特徴的な絵柄を含む領域である。特徴的な絵柄とは、例えば、物体の角部のような2方向以上に輝度変化を有し、その輝度変化に基づき画像処理によって該絵柄の位置(画像上の位置)を容易に検出できるような絵柄を意味する。
その後、ステップS4において、記録制御部53は、通常露光画像GL及び小画像GSAの画像データをJPEG(Joint Photographic Experts Group)の圧縮方式に従って圧縮する。以下、この圧縮をJPEG圧縮という。このJPEG圧縮によって画像サイズの変化は生じないものとする。通常露光画像GL及び小画像GSAに、この圧縮を施して得た画像をそれぞれ記号JL及びJSAにて表す。画像GLとJLは圧縮の有無が異なるだけであるので、以下、画像JLも通常露光画像と呼ぶこともある。同様に、画像JSAも、小画像又は短露光画像内の小画像などと呼ぶことがある。
そして、ステップS5において、記録制御部53は、画像データを記録するための画像ファイルを記録媒体16内に作成し、その画像ファイルの本体領域に通常露光画像JLの画像データを記録する一方で、その画像ファイルのヘッダ領域に短露光画像内の小画像JSAの画像データを記録する。尚、この際、記録制御部53は、小画像JSAの位置を表す位置データ、焦点距離fDを表すデータ及び露光時間TEPを表すデータもヘッダ領域に記録する。位置データは、小画像GSAの中心画素の、短露光画像GS上における座標値を表す。画像JSAの画像データは、ぶれ補正処理の実行時において通常露光画像JLのぶれを補正するために用いられる補正用情報であり、この補正用情報に上記位置データも含まれる。
例えば、画像ファイルは、Exif(Exchangeable image file format)のファイルフォーマットに準拠するように作成される。図6に、1つの画像ファイルの構造を示す。画像ファイルは、本体領域とヘッダ領域から形成されている。Exifのファイルフォーマットに準拠する場合、ヘッダ領域はExifタグ又はExif領域とも呼ばれる。尚、以下の説明おいて、特に記述なき限り、画像ファイルとは、記録媒体16内に記録された画像ファイルを指す。
上述の撮影動作の後において、撮像装置1に補正指示が与えられると(或いは所定条件が満たされると)補正動作が実行される。第1実施例において、補正動作はステップS6〜S9の各処理から成る。補正指示は、例えば、ユーザによる操作部17への所定操作によって撮像装置1に与えられる。但し、補正指示の有無に関係なく、補正動作を実行することも可能である。補正動作は再生モードにおいて実行される。但し、補正動作を撮影モードにて行うことも可能である。
ステップS6〜S9の各処理について説明する。撮像装置1に補正指示が与えられると、ステップS6において、補正処理部54は、記録媒体16から通常露光画像JLの画像データ及び短露光画像から抽出された小画像JSAの画像データを読み出すと共に、小画像JSAの位置データも記録媒体16から読み出す。補正処理部54は、通常露光画像JLを補正対象画像として取り扱う。
続くステップS7において、補正処理部54は、通常露光画像JL及び小画像JSAの各画像データに基づき、通常露光画像JLに含まれるぶれの状態を表す手ぶれ情報を算出する。手ぶれ情報は、例えば、通常露光画像JLの劣化の状態を表す画像劣化関数であり、画像劣化関数として点広がり関数(Point Spread Function;以下、PSFと呼ぶ)が求められる。また、ここで得られる手ぶれ情報を記号PLにて表す。
そしてステップS8において、補正処理部54は、ステップS7にて求められた手ぶれ情報PLに基づいて、通常露光画像JLに含まれるぶれを除去するための画像復元処理を通常露光画像JLに対して施し、これによって補正対象画像である通常露光画像JLからぶれ補正画像を生成する。通常露光画像JL及び小画像JSAの各画像データに基づく手ぶれ情報の算出方法例、並びに、その手ぶれ情報を利用した画像復元処理の方法例については、後述する(第7実施例参照)。
その後、ステップS9において、主制御部13は、ステップS8にて生成されたぶれ補正画像の画像データを記録するための画像ファイルを新たに生成して、その画像ファイルを記録媒体16に記録する。或いは、画像ファイルを新たに生成することなく、通常露光画像JLの画像データが上書きされるように、通常露光画像JLの画像データを記録していた画像ファイルの本体領域にぶれ補正画像の画像データを記録してもよい。また、ぶれ補正画像は、表示部15に表示される。
通常露光画像よりも短露光画像の方がぶれは通常小さく、短露光画像のエッジ状態を目標に通常露光画像を補正すれば、通常露光画像のぶれは低減される。このため、上述の如く、シャッタボタン17aの押下に応じて通常露光画像と短露光画像を撮影する。この際、ステップS5において、短露光画像GSの全体画像をJPEG圧縮して得た画像の全画像データを、補正用情報として、小画像JSAの画像データの代わりに画像ファイルのヘッダ領域に記録することも可能ではある。この場合、ぶれ補正処理時において、記録された短露光画像の全体画像から小画像JSAと同等の小画像をステップS3の処理を利用して抽出し、抽出した小画像を小画像JSAとして取り扱ってステップS7の処理を実行することで手ぶれ情報PLを作成することができる。但し、そのようにすると、補正用情報を記録することによる、画像ファイルのサイズ増大量がかなり大きくなる。そこで、上述の如く、短露光画像の一部画像に相当する小画像(即ち、JSA)の画像データを補正用情報として画像ファイルに記録する。これにより、画像ファイルのサイズの増大が抑制される。
しかしながら、小画像(即ち、JSA)の画像データも十分に小さいとは言えない。補正用情報のサイズ増大は、所定の記録容量を有する記録媒体16の記録可能画像枚数を減少させる。故に、画像ファイルのサイズ増大を更に抑制するための機能を設けておくことが望ましい。その機能をも実現する実施例を第2実施例以降に説明する。
尚、通常露光画像及び短露光画像の各画像データに基づく手ぶれ情報の作成を撮影時に実行する、といったことも考えられる。この場合、小画像の画像データを含む補正用情報を記録媒体16に記録する必要はなく、例えば、作成された手ぶれ情報を画像ファイルのヘッダ領域に記録しておけばよい。手ぶれ情報のデータサイズは小画像(即ち、JSA)のデータサイズよりも小さいため、撮影時に手ぶれ情報を作成する方法は、画像ファイルのサイズ増大抑制効果が大きい。
しかし、通常露光画像及び短露光画像の各画像データに基づいて手ぶれ情報を正確に算出するためには大きな処理時間が必要であり、仮に撮影時に手ぶれ情報の作成を行うようにすると、その作成処理の一部又は全部が完了するまでの比較的長い時間の間、次の静止画像撮影を実行することができなくなる。ぶれ検出及びぶれ補正のために、撮像装置の重要性能である連続撮影の性能を低下させることは望ましくない。故に、撮像装置1は、手ぶれ情報の算出を比較的長時間の処理が許されやすい期間(例えば、画像の再生時)に実行する。
[第2実施例]
第2実施例について説明する。図7は、第2実施例に係る、撮像装置1の撮影動作の流れを表すフローチャートである。第2実施例において実行される、図7に示すステップS1〜S5の各処理は、第1実施例で説明したそれらと同じであるため(図5参照)、第2実施例の説明ではステップS1〜S5の各処理内容の説明を簡略化する。
撮影モードにおいてシャッタボタン17aが押下されると、ステップS1にて焦点距離fDを表すデータが取得されると共に露光時間TEPが算出され、その後、ステップS11に移行する。第1実施例で述べたように、焦点距離fD及び露光時間TEPは、補正対象画像となるべき通常露光画像GLの撮影時における焦点距離及び露光時間である。
ステップS11において、図4の手ぶれ量推定部51は、通常露光画像の露光期間中における撮像装置1の動きの大きさを推定する。撮像装置1の動き(即ち、実空間上における、撮像装置1の筐体の動き)は主として手ぶれによって引き起こされるが、撮像装置1の筐体が手で把持されておらず三脚などで固定されている場合でも地面の振動などに由来して撮像装置1は動きうる。撮像装置1が三脚で固定されている場合における撮像装置1の動きは手ぶれに由来するものではないが、撮像装置1が手ぶれに由来して動くことを主として想定し、通常露光画像の露光期間中における撮像装置1の動きの大きさを手ぶれ量と呼ぶ。従って、手ぶれ量推定部51は、手ぶれ量を推定する。手ぶれ量は一次元量であり、通常露光画像の露光期間中における撮像装置1の動きの大きさ(例えば、その露光期間中における、撮像装置1のヨー方向の回転量)が大きい程、手ぶれ量は増大するものとする。ステップS11で推定された手ぶれ量をSLで表す。手ぶれ量SLは、図4の記録制御部53に与えられる。
手ぶれ量は、概ね、焦点距離と露光時間に比例する。そこで、手ぶれ量推定部51は、ステップS1にて取得された焦点距離fD及び露光時間TEPを用い、下記式(A−1)に従って手ぶれ量SLを推定する。ここで、kESTは変換係数である。変換係数kESTの値を可変とすることも可能であるが、第1実施例では、変換係数kESTの値は予め設定された固定値(例えば、0.7)であるとする。
SL=kEST×TEP×fD ・・・(A−1)
手ぶれ量SLが求められた後、ステップS12及びS13において、記録制御部53は、その手ぶれ量SLと、所定の閾値TH1〜TH3との大小関係を判断する。ここで、0<TH1<TH2<TH3である(図8参照)。まず、ステップS12において、第1不等式「SL<TH1」又は第2不等式「SL>TH3」が成立するかを判断し、前者の不等式が成立する場合は、補正対象画像となるべき通常露光画像のぶれ量が無視できる程度に小さくぶれ補正が不要であると判断してステップS17に移行し、後者の不等式が成立する場合は、そのぶれ量が大きすぎてぶれ補正が困難であると判断し、この場合もステップS17に移行する。
ステップS17に移行した場合、実撮影期間において通常露光撮影のみを実行し、これによって得た通常露光画像GLをステップS18にてJPEG圧縮して画像JLを生成し、この画像JLの画像データをステップS19にて画像ファイルに記録して該画像ファイルを記録媒体16に保存する。つまり、ステップS17に移行した場合は、補正用情報は記録媒体16に記録されない。
ステップS12において、第1及び第2不等式の双方が不成立の場合、ステップS13に移行して、第3不等式「SL<TH2」が成立するか否かを判断する。この第3不等式が成立しない場合は、補正対象画像となるべき通常露光画像のぶれ量がある程度大きいため、通常露光画像と短露光画像に基づく画像復元処理を行うべきであると判断し、ステップS13からステップS2に移行してステップS2〜S5の各処理を実行する。つまり、通常露光撮影と短露光撮影によって通常露光画像GL及び短露光画像GSを取得し(ステップS2)、小領域抽出処理及びJPEG圧縮(ステップS3及びS4)を介して得た通常露光画像JL及び短露光画像内の小画像JSAを画像ファイルに記録し、その画像ファイルを記録媒体16に保存する(ステップS5)。
一方、ステップS13において、第3不等式が成立する場合は、補正対象画像となるべき通常露光画像のぶれ量は軽微である。このような場合は、正確な手ぶれ情報を用いた画像復元処理ではなく、他の画像処理によってもぶれを補正することが可能である。例えば、通常露光画像にエッジ強調処理を行うことによっても、通常露光画像と短露光画像に基づく画像復元処理を行う場合と比べて視覚的に殆ど差がないぶれ補正画像を生成することが可能である。そこで、ステップS13において第3不等式「SL<TH2」が成立する場合は、ステップS13からステップS14に移行し、ステップS14、S15及びS16の処理を実行する。
即ち、ステップS14において、撮像装置1は実撮影期間中に通常露光撮影のみを実行する。続くステップS15において 記録制御部53は、ステップS14の通常露光撮影によって得られた通常露光画像GLの画像データをJPEG圧縮して画像JLを生成する。その後、ステップS16において、記録制御部53は、画像ファイルを記録媒体16内に作成し、その画像ファイルの本体領域に通常露光画像JLの画像データを記録する一方で、その画像ファイルのヘッダ領域にエッジ強調フラグを記録する。エッジ強調フラグは、ぶれ補正処理の実行時において参照される補正用情報であり、そのデータサイズは高々数バイトである。
ステップS13にて成される分岐判断から理解されるように、エッジ強調処理を行って得られるべきぶれ補正画像と、通常露光画像と短露光画像に基づく画像復元処理を行って得られるべきぶれ補正画像とを対比した場合において、両画像間に視覚的な差がある程度生じるような場合にステップS13からステップS2に移行するように且つ視覚的な差が殆ど生じないような場合にステップS13からステップS14に移行するように、閾値TH2を実験を介して設定しておくとよい。
ステップS5、S16又はS19の記録処理を終えると、1枚の通常露光画像を得るための動作を終了する。再度、シャッタボタン17aが押下されると、上述したステップS1以降の動作が実行される。尚、ステップS5、S16及びS19において、画像JLの画像データが記録されるべき画像ファイルのヘッダ領域には、焦点距離fD及び露光時間TEPを表すデータも記録される。
次に、補正動作について説明する。図9は、第2実施例に係る、撮像装置1の補正動作の流れを表すフローチャートである。第2実施例において実行される、図9に示すステップS7〜S9の各処理は、第1実施例で説明したそれらと同じであるため(図5参照)、第2実施例の説明ではステップS7〜S9の各処理内容の説明を簡略化する。
図7に示す撮影動作の後、撮像装置1に補正指示が与えられると(或いは所定条件が満たされると)、ステップS21以降の補正動作が実行される。ステップS21において、補正処理部54は、記録媒体16から通常露光画像JLの画像データを読み出す。補正処理部54は、通常露光画像JLを補正対象画像として取り扱う。
次に、ステップS22において、補正処理部54は、通常露光画像JLが記録されている画像ファイルのヘッダ領域に短露光画像に基づく画像データ、即ち小画像JSAの画像データが存在しているか否かを確認する。そして、小画像JSAの画像データが存在している場合は、ステップS22からステップS23に移行し、該小画像JSAの画像データを記録媒体16内の画像ファイルから読み出して、その後ステップS7〜S9の処理を実行する。即ち、ステップS21及びS23にて読み出した画像JL及びJSAの画像データに基づいて画像JLの手ぶれ情報PLを算出し(ステップS7)、手ぶれ情報PLに基づく画像復元処理を補正対象画像である画像JLに施すことによってぶれ補正画像を生成して(ステップS8)、それを画像ファイルに記録する(ステップS9)。
一方、通常露光画像JLが記録されている画像ファイルのヘッダ領域に小画像JSAの画像データが存在していない場合は、ステップS22からステップS24に移行し、補正処理部54は、そのヘッダ領域内にエッジ強調フラグが存在しているか否かを確認する。エッジ強調フラグが存在していない場合は、通常露光画像JLに対するぶれ補正処理を実行することなく図9に示す補正動作を終了する一方、エッジ強調フラグが存在している場合はステップS24からステップS25に移行して、ステップS25及びS26の各処理を実行する。
ステップS25において、補正処理部54は、補正対象画像である通常露光画像JLに、通常露光画像JL内のエッジを強調するためのエッジ強調処理を施し、エッジ強調処理後の通常露光画像JLをぶれ補正画像として生成する。
例えば、所定のフィルタサイズを有する予め設定された鮮鋭化フィルタを用いて通常露光画像JLの全体を空間フィルタリングすることにより、エッジ強調処理後の通常露光画像JLを生成する。或いは、アンシャープマスクフィルタを用いたフィルタリングによってステップS25のエッジ強調処理を実現しても良い。アンシャープマスクフィルタを用いたフィルタリングは、アンシャープマスキングとも呼ばれる。アンシャープマスキングでは、入力画像(今の例おいて、通常露光画像JL)を平滑化して平滑化画像を生成した後、その平滑化画像と入力画像との差分画像を生成する。そして、その差分画像の各画素値と入力画像の各画素値を足し合わせるように差分画像と入力画像を合成することで出力画像(今の例において、ぶれ補正画像)を生成する。
ステップS25に続くステップS26における処理はステップS9のそれと同じである。但し、ステップS26において記録されるべきぶれ補正画像は、ステップS25にて生成されたぶれ補正画像である。
上述の如く、通常露光画像にエッジ強調処理を行うことによっても、通常露光画像と短露光画像に基づく画像復元処理を行う場合と比べて視覚的に殆ど差がないぶれ補正画像を生成することができると判断される場合には、補正用情報を簡略化して、通常露光画像(補正対象画像)のぶれを補正する方法を示す情報(本実施例において、エッジ強調フラグ)を補正用情報として記録媒体16に記録しておく。これにより、ぶれ補正処理の視覚的な効果を殆ど減少させることなく、第1実施例と比べて補正用情報のデータサイズを大幅に低減することができる。
また、手ぶれ量を、通常露光画像の撮影前に得られる撮影条件(具体的にはfD及びTEP)を用いた極めて簡素な演算によって推定しているため、撮像装置の重要性能である連続撮影の性能を低下させることもない。
尚、上述の例におけるステップS25では、固定的に設定された鮮鋭化フィルタを用いることなどによって一定のエッジ強調処理を通常露光画像JLに施すようにしているが、このエッジ強調処理におけるエッジ強調度合いを手ぶれ量SLに応じて変更するようにしてもよい。この場合は、例えば、図7のステップS16において、通常露光画像JLが記録されるべき画像ファイルのヘッダ領域にエッジ強調フラグと共に手ぶれ量SLを表すデータを記録しておくようにする。そして、図9のステップS25におけるエッジ強調処理のエッジ強調度合いを、その記録された手ぶれ量SLを表すデータに応じて変更するとよい。
また、通常露光画像と短露光画像に基づく画像復元処理を行うことを想定した場合において、手ぶれ量が比較的小さいときは、その小さな手ぶれを良好に検出するべく、手ぶれ情報としてのPSFを精度良く求める必要がある。一方において、手ぶれ量が比較的大きいときは、通常露光画像にかなりのぼけが含まれることとなるため、PSFの算出精度はそれ程高くなくても実用上問題は少ない。これを考慮し、図7のステップS4の、小画像GSAに対するJPEG圧縮の圧縮率を、手ぶれ量SLが増加するに従って増加させるようにしてもよい。これにより、補正用情報のデータサイズを更に低減することができる。
具体的には例えば、ステップS4において不等式「TH1≦SL<TH4」が満たされるか否かを判断し、それが満たされる場合は、画像GSAから画像JSAを生成する際におけるJPEG圧縮の圧縮率を第1圧縮率とする一方、それが満たされない場合は、その圧縮率を、第1圧縮率よりも大きな第2圧縮率とする。ここで、TH4は「TH1<TH4<TH2」を満たす所定の閾値である(図8参照)。この例では、圧縮率を2段階に可変設定しているが、圧縮率を3段階以上に可変設定してもよい。
[第3実施例]
第3実施例について説明する。手ぶれ量が小さいとき、PSFの形状は点に近づくため、PSFは方向性のないガウスぼけ(即ち、ガウシアンフィルタを用いた平滑化によるぼけ)を表す画像劣化関数に近似できる。実際、手ぶれ量が小さいときには、ガウスぼけによる近似PSFを用いた画像復元処理によっても、通常露光画像と短露光画像に基づく画像復元処理を行う場合と比べて視覚的に殆ど差がないぶれ補正画像を生成することができる。そこで、第3実施例では、推定された手ぶれ量SLが閾値TH1以上であって且つ閾値TH2未満である時、エッジ強調処理の代わりに、ガウスぼけによる近似PSFを用いた画像復元処理をぶれ補正処理として用いる。
第3実施例は、第2実施例に示した動作の一部を変形した実施例に相当し、第3実施例の説明文において特に記述しない内容は第2実施例にて示したものと同じである。以下、第2実施例との相違点を説明する。図7及び図9を参照する。
図7に示す撮影動作時において、不等式「TH1≦SL<TH2」が成立することによってステップS13からステップS14に移行し、ステップS15を介してステップS16に至った場合、ステップS16において、記録制御部53は、画像ファイルを記録媒体16内に作成し、その画像ファイルの本体領域に通常露光画像JLの画像データを記録する一方で、その画像ファイルのヘッダ領域にガウス近似フラグとステップS11で推定された手ぶれ量SLを記録する。ガウス近似フラグ及び手ぶれ量SLは、ぶれ補正処理の実行時において参照される補正用情報であり、そのデータサイズは高々数バイトである。
その後、図9に示す補正動作時において、ステップS22からステップS24に至った場合、補正処理部54は、通常露光画像JLが記録されている画像ファイルのヘッダ領域にガウス近似フラグが存在しているか否かを確認する。ガウス近似フラグが存在していない場合は、通常露光画像JLに対するぶれ補正処理を実行することなく図9に示す補正動作を終了する一方、ガウス近似フラグが存在している場合はステップS24からステップS25に移行して、ガウスぼけによる近似PSFを用いた画像復元処理を通常露光画像JLに対して行ってぶれ補正画像を生成し、生成したぶれ補正画像を記録媒体16に記録する。
実空間上で静止している点を「実静止点」と呼ぶ。手ぶれ量SLは、理想的な点像(即ち、実静止点の像)が、補正対象画像としての通常露光画像の露光期間中に撮像素子33の撮像面上で移動する軌跡の大きさの推定量を表しており、その推定量は、通常露光画像の隣接画素間隔を単位として求められる。第3実施例に係るステップS25では、補正処理部54が、通常露光画像JLが記録されている画像ファイルのヘッダ領域から手ぶれ量SLを読み出し、読み出した手ぶれ量SLに応じたタップ数を有するガウシアンフィルタをガウスぼけによる近似PSFとして採用する。例えば、手ぶれ量SLの大きさが通常露光画像の3画素分である場合は、3×3のフィルタサイズを有するガウシアンフィルタをガウスぼけによる近似PSFとして採用し、手ぶれ量SLの大きさが通常露光画像の5画素分である場合は、5×5のフィルタサイズを有するガウシアンフィルタをガウスぼけによる近似PSFとして採用する。尚、ガウシアンフィルタにおける分散は、予め定めておけばよい。
その後、補正処理部54は、近似PSFの逆関数(一般逆行列)に相当する画像復元関数を求める。画像復元関数は、単一の画像復元フィルタとして表現され、近似PSFを表す行列の一般逆行列の各要素が該画像復元フィルタの各フィルタ係数とされる。補正処理部54は、この画像復元フィルタを用いた空間フィルタリングを補正対象画像(即ち、通常露光画像JL)の全体に対して施すことで、補正対象画像に含まれるぶれが低減されたぶれ補正画像を生成する。
ステップS13にて成される分岐判断から理解されるように、ガウスぼけによる近似PSFを用いた画像復元処理を行って得られるべきぶれ補正画像と、通常露光画像と短露光画像に基づく画像復元処理を行って得られるべきぶれ補正画像とを対比した場合において、両画像間に視覚的な差がある程度生じるような場合にステップS13からステップS2に移行するように且つ視覚的な差が殆ど生じないような場合にステップS13からステップS14に移行するように、閾値TH2を実験を介して設定しておくとよい。
そして、上述の如く、ガウスぼけによる近似PSFを用いた画像復元処理を行うことによっても、通常露光画像と短露光画像に基づく画像復元処理を行う場合と比べて視覚的に殆ど差がないぶれ補正画像を生成することができると判断される場合には、補正用情報を簡略化して、通常露光画像(補正対象画像)のぶれを補正する方法を示す情報(本実施例において、ガウス近似フラグ)を補正用情報として記録媒体16に記録しておく。これにより、ぶれ補正処理の視覚的な効果を殆ど減少させることなく、第1実施例と比べて補正用情報のデータサイズを大幅に低減することができる。
[第4実施例]
第4実施例について説明する。図10は、第4実施例に係る、撮像装置1の撮影動作の流れを表すフローチャートである。第4実施例において実行される、図10に示すステップS1〜S5、S12、S13、S15、S16、S18及びS19の各処理は、第2実施例におけるそれらと同じであるため(図7参照)、第4実施例の説明では、それらの各処理内容の説明を簡略化する。また、第4実施例に係る撮像装置1の補正動作は、第2実施例におけるそれと同じである。
第4実施例における手ぶれ量SLの推定方法は、第2実施例におけるそれと異なる。この相違点に着目し、図10を参照して撮像装置1の撮影動作を説明する。
撮影モードにおいてシャッタボタン17aが押下されると、ステップS1にて焦点距離fDを表すデータが取得されると共に露光時間TEPが算出される。その後、ステップS2に移行し、撮像装置1は、通常露光撮影と短露光撮影を連続的に実行することにより通常露光画像GL及び短露光画像GSを取得する。通常露光画像GL及び短露光画像GSが取得された後、ステップS30に移行する。ステップS30において、手ぶれ量推定部51は、通常露光画像GL及び短露光画像GSの画像データに基づいて手ぶれ量SLを推定する。
図11に、ステップS30の処理の詳細フローチャートを示す。ステップS30では、図4の手ぶれ量推定部51がステップS31〜S35の処理を順次実行する。まず、手ぶれ量推定部51は、通常露光画像GLの中央に位置する小領域を抽出して該小領域内の画像を小画像GLBとし、且つ、短露光画像GSの中央に位置する小領域を抽出して該小領域内の画像を小画像GSBとする。小画像GLB及びGSBは、例えば、128×128の画像サイズを有する。尚、ここでは演算の簡素化を目的として通常露光画像GL及び短露光画像GSの夫々から中央小領域を抽出するようにしているが、ハリスのコーナ検出器等を用いて、それらから特徴的な小領域を抽出するようにしてもよい。
次にステップS32において、小画像GLBを基準にして小画像GSBの輝度レベルを増加させる。即ち、小画像GSBの輝度レベルが小画像GLBの輝度レベルと等しくなるように(小画像GSBの平均輝度と小画像GLBの平均輝度が等しくなるように)、小画像GSBの各画素の輝度値に一定値を乗じるという輝度正規化処理を行う。この輝度正規化処理後の小画像GSBを小画像GSB’と呼ぶ。
続くステップS33において、小画像GLB及びGSB’の夫々に対してエッジ抽出処理を施すことで、小画像GLBのエッジ抽出画像ELB及び小画像GSB’のエッジ抽出画像ESB’を得る。例えば、小画像GLBの各画素に対して任意のエッジ検出フィルタ(ラプラシアンフィルタ等)を適用すれば、エッジ検出フィルタの出力値からエッジ抽出画像ELBが得られる。小画像GSB’についても同様である。
その後、ステップS34において、エッジ抽出画像ELBの画素値の総和VL及びエッジ抽出画像ESB’の画素値の総和VSを算出し、ステップS35において、下記式(A−2)に従って、図10のステップS30にて推定されるべき手ぶれ量SLを算出する。変換係数kESTは、第2実施例の説明文で述べたものと同じものである。
SL=kEST×(VS/VL) ・・・(A−2)
周知の如く、エッジ抽出画像における各画素値は、エッジ抽出元画像(今の例において、小画像GLB又はGSB’)における対応部位のエッジ強度を表している。短露光画像におけるエッジが十分に鮮明であると考えた場合、短露光画像のエッジ強度に応じた値VSと通常露光画像のエッジ強度に応じた値VLとの比から、通常露光画像の手ぶれ量SLを推定可能である。
ステップS30にて手ぶれ量SLが推定された後、ステップS12及びS13にて、記録制御部53は、その手ぶれ量SLと所定の閾値TH1〜TH3との大小関係を判断する。そして、不等式「SL<TH1」又は「SL>TH3」が成立する場合は、ステップS18及びS19の処理を行って撮影動作を終了する。また、不等式「TH1≦SL<TH2」が成立する場合はステップS15及びS16の処理を行って撮影動作を終了する。また、不等式「TH2≦SL≦TH3」が成立する場合はステップS3〜S5の処理を行って撮影動作を終了する。
図7に対応する第2実施例では、手ぶれ量SLが推定された後において、不等式「SL<TH1」又は不等式「SL>TH3」が成立する場合はステップS17〜S19の処理を行い、不等式「TH1≦SL<TH2」が成立する場合はステップS14〜S16の処理を行い、不等式「TH2≦SL≦TH3」が成立する場合はステップS2〜S5の処理を行っていたが、第4実施例では、手ぶれ量SLの推定前に通常露光画像GL及び短露光画像GSが取得されているため、手ぶれ量SLの推定後においてステップS17、S14及びS2の処理を実行する必要はない。
本実施例によっても、ぶれ補正処理の視覚的な効果を殆ど減少させることなく、第1実施例と比べて補正用情報のデータサイズを大幅に低減することができる。また、手ぶれ量を、通常露光画像及び短露光画像の画像データに基づく簡素な演算によって推定しているため、この推定を行ったことによる、連続撮影性能の低下はない(或いは軽微である)。
尚、本実施例に示す内容と第3実施例に示す内容を組み合わせることも可能である。
[第5実施例]
第5実施例を説明する。第2〜第4実施例では手ぶれ量SLを推定するための変換係数kESTを固定値としている。しかし、実際の手ぶれ量は、撮像装置1を把持するユーザが異なれば若干異なる。そこで、焦点距離及び露光時間に基づく推定方法と比べて、より推定精度が高いと思われる推定方法を用いて手ぶれ量を別途推定し、その別途推定した手ぶれ量を用いて変換係数kESTを更新(換言すれば、補正)することが望ましい。
この変換係数kESTの更新方法を、第2実施例に示す動作に当てはめて説明する。勿論、第5実施例で述べる変換係数kESTの更新方法を、第3又は第4実施例に適用することも可能である。
図4の手ぶれ量推定部51は、手ぶれ量SLと異なる手ぶれ量SL2を、通常露光画像と短露光画像に基づく手ぶれ情報PLから別途推定する。手ぶれ情報PLはPSFである。手ぶれ情報PLとしてのPSFを表す行列において、0以外の値を有する要素を繋ぎ合わせた線は、理想的な点像(即ち、実静止点の像)が通常露光画像の露光期間中に撮像素子33の撮像面上で移動する軌跡を表している。図12に示される、符号200が付された曲線は、その軌跡を通常露光画像上に表現したものである。図13に、その軌跡200に対応する、行列表現されたPSFを示す。図13のPSFにおいて、斜線で満たされた部位は0以外の値を有する行列要素を表している。
手ぶれ量推定部51は、この軌跡200から手ぶれ量SL2を推定する。具体的には、軌跡200の始点201と終点202との間の距離を手ぶれ量SL2として求める。この距離は、通常露光画像上における距離である。
補正対象画像としての通常露光画像はシャッタボタン17aの押下の度に得られ、シャッタボタン17aを複数回押下することによって、図14に示す如く、時系列で並ぶ、・・・(p−2)番目、(p−1)番目、p番目の通常露光画像が得られる(pは3以上の整数)。手ぶれ量推定部51は、(p−1)番目以前の通常露光画像に対して求められた手ぶれ量SL2を用いて変換係数kESTを更新し、その更新後の変換係数kESTを用いて、p番目の通常露光画像に対する手ぶれ量SLを推定する。
典型的な例として、変換係数kESTの更新処理を補正動作時において実行する例を説明する。この場合、図9のステップS7にて(p−1)番目の通常露光画像に対する手ぶれ情報PLが求められた後、手ぶれ量推定部51は、(p−1)番目の通常露光画像に対する手ぶれ情報PLから求めた手ぶれ量SL2と(p−1)番目の通常露光画像の撮影時における露光時間TEP及び焦点距離fDとに基づき、下記式(A−3)に従って更新用係数ktmpを算出する。
ktmp=SL2/(TEP×fD) ・・・(A−3)
そして、下記式(A−4)に従って変換係数を更新し、更新後の変換係数をp番目の通常露光画像の手ぶれ量SLを推定する際における変換係数として用いる。式(A−4)において、kESTは更新前の変換係数、即ち(p−1)番目の通常露光画像の手ぶれ量SLを推定する際における変換係数kESTであり、kEST’は更新後の変換係数、即ちp番目の通常露光画像の手ぶれ量SLを推定する際における変換係数kESTである。また、kOは所定の減衰係数である(但し、0<kO<1)。
kEST’=kO×kEST+(1−kO)×ktmp ・・・(A−4)
このように、変換係数kESTを更新していくことにより、使用を重ねるたびに変換係数の値は特定ユーザの手ぶれに適した値へと徐々に更新されていくことになる。
尚、変換係数kESTの値の更新が収束したと判断される場合には、以後、その更新を行わないようにしてもよい。例えば、式(A−4)を用いて更新前の変換係数kESTから更新後の変換係数kEST’を求めた後、両者の差分を求め、その差分が基準差分よりも小さい場合に、変換係数kESTの値の更新が収束したと判断する。
また、変換係数kESTの更新処理を第2実施例に示す動作に単純に当てはめた場合、図7のステップS11からステップS12及びS13を介してステップS2に移行しなければ、短露光画像の撮影が行われないため変換係数kESTを更新することができず、また、短露光画像の撮影が行われていたとしても、ぶれ補正画像を生成するための補正動作が実行されなければ変換係数kESTは更新されないことになる。
これを考慮し、撮影モードにおいてシャッタボタン17aが押下されたならばステップS11において推定された手ぶれ量SLに関わらず、通常露光画像GLと短露光画像GSの撮影を行ってそれらの画像データを一時的に内部メモリ14(又は記録媒体16)に記録しておくようにしてもよい。そして、撮像装置1における処理の負荷が軽い時に、一時的に記録された画像GL及びGSの画像データから手ぶれ量SL2を求めて、式(A−3)及び(A−4)に従って変換係数を更新するようにしてもよい。尚、変換係数を更新するための演算処理の途中で撮像装置1の駆動を停止させるための操作がなされた場合や、他のタスクでメモリが必要となる場合は、その演算処理を直ちに中止し、その演算処理で使用していたメモリを開放する。
また、撮影動作時に自動的にぶれ補正処理を実行するモード(以下、第1モードという)と、画像再生時にぶれ補正処理を実行するモード(以下、第2モードという)とを切替実行可能なように撮像装置1を形成しておき、第1モードでの動作時に得られる手ぶれ量SL2を用いて変換係数kESTを更新し、その更新後の変換係数kESTを第2モードで利用するようにしてもよい。尚、図7及び図9に示す動作は、第2モードにおける動作の典型例である。
即ち、第1モードでの動作時では、シャッタボタン17aの押下に伴って常に通常露光画像と短露光画像が連続撮影されて、通常露光画像及び短露光画像に基づいて自動的に手ぶれ情報PLが算出される。その後、手ぶれ情報PLに基づく画像復元処理によってぶれ補正画像が生成される一方で、手ぶれ情報PLに基づいて手ぶれ量SL2が毎回求められる。手ぶれ量推定部51は、この毎回求められる手ぶれ量SL2とシャッタボタン17aの押下の度に算出される露光時間TEP及び焦点距離fDを用いて、上記式(A−3)及び(A−4)に従い変換係数kESTを更新してゆく。そして、この更新後、第2モードでの動作が実行されるとき、第1モードにて更新された変換係数kESTを用いて、手ぶれ量SLを推定するようにする。
[第6実施例]
第6実施例について説明する。撮像装置1の筐体を手で把持する場合を主として想定して第1〜第5実施例を説明したが、三脚等を用いて撮像装置1の筐体を地面に対して固定していても、地面の振動により、撮像装置1に小さな動きが生じることがある。この動きの大きさは、実撮影期間前のプレビュー期間に取得されるプレビュー画像列から推定可能である。第6実施例では、このプレビュー画像列を用いて手ぶれ量SLを推定する。
この推定方法を、より具体的に説明する。今、図15に示す如く、或る着目した実撮影期間の直前のプレビュー期間において、プレビュー画像PI1、PI2、PI3、・・・、PIq-1及びPIqが順次撮影され、プレビュー画像PIqの撮影直後に着目した実撮影期間へ移行した場合を想定する(qは3以上の整数)。
図4の手ぶれ量推定部51は、そのプレビュー期間中に取得されたプレビュー画像列に着目し、そのプレビュー画像列を形成する隣接フレームのプレビュー画像を対比することにより、隣接フレームのプレビュー画像間におけるオプティカルフローを求める。隣接フレームのプレビュー画像とは、時間的に隣接して撮影された2枚のプレビュー画像を指し、一方のプレビュー画像における露光期間の中間時刻と他方のそれとの時間差は、フレーム周期(例えば、1/30秒)の時間長さと合致する。
オプティカルフローは、代表点マッチング法、ブロックマッチング法又は勾配法を用いて、対比されるプレビュー画像の画像データに基づいて求められ、両画像間の物体の動きを表す複数の動きベクトルから形成される。手ぶれ量推定部51は、2枚のプレビュー画像に対して求めた複数の動きベクトルの平均ベクトルを求め、その平均ベクトルの大きさが所定時間継続して一定値以下となっている時、撮像装置1の筐体が三脚等で固定されていると判断する。
今、上記の所定時間がプレビュー画像PI1〜PIqの撮影期間に相当する場合を考える。この場合、手ぶれ量推定部51は、プレビュー画像PI1とPI2との間における複数の動きベクトルの平均ベクトルm[1:2]、プレビュー画像PI2とPI3との間における複数の動きベクトルの平均ベクトルm[2:3]、・・・、プレビュー画像PIq-1とPIqとの間における複数の動きベクトルの平均ベクトルm[q-1:q]を求める。そして、それらの平均ベクトルm[1:2]〜m[q-1:q]の大きさを所定の一定値と比較し、平均ベクトルm[1:2]〜m[q-1:q]の大きさが全て該一定値以下となっている場合に、撮像装置1の筐体が三脚等で固定されていると判断し、そうでない場合、撮像装置1の筐体は手で把持されていると判断する。
撮像装置1の筐体が手で把持されていると判断した場合は、第2〜第5実施例で述べた方法にて通常露光画像GLに対する手ぶれ量SLを推定するが、撮像装置1の筐体が三脚等で固定されていると判断した場合は、下記式(A−5)に従って、通常露光画像GLに対する手ぶれ量SLを推定する。ここで、FRはプレビュー期間中におけるフレームレート(フレーム周期の逆数)であり、|mAVE|は合計(q−1)個の平均ベクトルm[1:2]〜m[q-1:q]を平均化したベクトルの大きさである。TEPは、上述したように通常露光画像GLの露光期間の長さである。
SL=FR×|mAVE|×TEP ・・・(A−5)
手ぶれ量SLを推定動作以外の撮影動作及び補正動作は、第2〜第5実施例の何れかにて説明したそれらと同じである。プレビュー画像列を用いて推定された手ぶれ量SLは、例えば、図7のステップS11にて推定されるべき手ぶれ量SLとして用いられる。
本実施例の如く、通常露光画像に対する手ぶれ量を、通常露光画像の撮影前に得られるプレビュー画像列から推定するようにすれば、それを撮影条件(fD及びTEP)を用いて推定する場合と同様、手ぶれ量の推定を行ったことによる、連続撮影性能の低下は完全に或いは略回避される。
[第7実施例]
第7実施例を説明する。第7実施例では、通常露光画像JL及び小画像JSAの画像データに基づく手ぶれ情報PLの算出方法例、並びに、その手ぶれ情報PLを利用した画像復元処理の方法例を説明する。第7実施例に記載した内容は、第1〜第6実施例に適用される(具体的には、図5又は図9に示されるステップS7及びS8の処理に用いられる)。尚、第7実施例の記述において、単に「メモリ」といった場合、それは内部メモリ14を意味するものとする。
図16は、第7実施例に係るぶれ補正処理の流れを表すフローチャートである。図4の補正処理部54は、記録媒体16から読み出した通常露光画像JL及び小画像JSAの画像データ並びに小画像JSAの位置を表す位置データに基づいて、ステップS71〜S77の処理を順次実行することによりぶれ補正画像を生成する。
上述したように、小画像JSAは、短露光画像GSから抽出された特徴的な小領域内の画像である(より正確には、その画像をJPEG圧縮した画像である;図7のステップS3及びS4を参照)。まず、ステップS71では、短露光画像GSから抽出された特徴的な小領域に対応する小領域を補正対象画像としての通常露光画像JLから抽出し、通常露光画像JLから抽出された小領域内の画像を小画像JLAとしてメモリ上に記憶する。小画像JSAが128×128画素の画像サイズを有する場合、小画像JLAも128×128画素の画像サイズを有する。
通常露光画像と短露光画像との間の位置ずれを無視する場合は、通常露光画像から抽出される小画像JLAの中心座標(通常露光画像内における中心座標)と、短露光画像から抽出される小画像JSAの中心座標(短露光画像内における中心座標)とが等しくなるように、小画像JSAの位置データに基づいて小領域の抽出を行う。その位置ずれを無視できない場合は、テンプレートマッチング法などを利用して対応小領域の探索を行うようにしても良い。即ち例えば、小画像JSAをテンプレートとし、周知のテンプレートマッチング法を用いて、そのテンプレートとの類似度が最も高い小領域を通常露光画像JL内から探索し、探索された小領域内の画像を小画像JLAとする。この探索の探索範囲は、小画像JSAの位置データに基づいて設定される。
短露光画像の露光時間は比較的短いため、小画像JSAの信号対雑音比は比較的低いと共に小画像JSAの輝度は比較的低い。そこで、ステップS72において、小画像JSAに対してメディアンフィルタ等を用いたノイズ除去処理を施し、更に、ノイズ除去処理後の小画像JSAの輝度レベルを増加させる。即ち例えば、小画像JSAの輝度レベルが小画像JLAの輝度レベルと等しくなるように(小画像JSAの平均輝度と小画像JLAの平均輝度が等しくなるように)、小画像JSAの各画素の輝度値に一定値を乗じるという輝度正規化処理を行う。ノイズ除去処理及び輝度正規化処理後の小画像JSAは小画像JSA’としてメモリ上に記憶される。
上述のようにして得られた小画像JLAを劣化画像として且つ小画像JSA’を初期復元画像として取り扱った上で(ステップS73)、ステップS74にてフーリエ反復法を実施することにより、小画像JLAのぶれによる劣化の状態を表す画像劣化関数を求める。ここで求められる画像劣化関数は、ステップS7(図9等参照)にて算出されるべき手ぶれ情報PLである。
画像劣化関数としてPSFを求める。手ぶれは画像全体に対して一様な劣化を与えるため、小画像JLAに対して求めたPSFは、通常露光画像JLの全体に対するPSFとして利用することができる。
フーリエ反復法は、劣化を含む劣化画像から、劣化を除去或いは低減した復元画像を得る手法である(上記非特許文献1参照)。フーリエ反復法を実施する際、初期の復元画像(復元画像の初期値)を与えてやる必要があるが、この初期の復元画像を初期復元画像と呼ぶ。このフーリエ反復法を、図17及び図18を参照して詳細に説明する。図17は、図16のステップS74の処理の詳細フローチャートである。図18は、図4の補正処理部54に内在する、フーリエ反復法を実施する部位のブロック図である。
まず、ステップS101において、復元画像をf’とし、この復元画像f’に初期復元画像をセットする。即ち、初期の復元画像f’として小画像JSA’を用いるようにする。次に、ステップS102において、劣化画像(即ち、小画像JLA)をgとする。そして、劣化画像gをフーリエ変換したものをGとしてメモリ上に記憶しておく(ステップS103)。例えば、初期復元画像及び劣化画像の画像サイズが128×128画素の場合、f’及びgは、128×128の行列サイズを有する行列として表現できる。
次に、ステップS110において、復元画像f’をフーリエ変換したF’を求め、更にステップS111において、下記式(B−1)によりHを算出する。Hは、PSFをフーリエ変換したものに相当する。式(B−1)において、F’*は、F’の共役複素行列であり、αは、定数である。
次に、ステップS112において、Hを逆フーリエ変換することにより、PSFを得る。ここで得られるPSFをhとする。次に、ステップS113において、PSF hを下記式(B−2a)の拘束条件で修正した後、更に式(B−2b)の拘束条件にて修正する。
PSF hは、2次元の行列として表現されるため、この行列の各要素をh(x,y)で表す。PSFの各要素は、本来、0以上且つ1以下の値をとるはずである。従って、ステップS113において、PSFの各要素が0以上且つ1以下であるかを判断し、0以上且つ1以下となっている要素の値はそのままにする一方、1より大きな要素がある場合はその要素の値を1に修正し、且つ、0より小さい要素がある場合はその要素の値を0に修正する。これが、式(B−2a)の拘束条件による修正である。そして、この修正後のPSFの各要素の総和が1となるように、PSFを正規化する。この正規化が、式(B−2b)の拘束条件による修正である。
式(B−2a)及び(B−2b)の拘束条件によって修正されたPSFを、h'とする。
次に、ステップS114において、PSF h’をフーリエ変換したH’を求め、更にステップS115において、下記式(B−3)によりFを算出する。Fは、復元画像fをフーリエ変換したものに相当する。式(B−3)において、H’*は、H’の共役複素行列であり、βは、定数である。
次に、ステップS116において、Fを逆フーリエ変換することにより、復元画像を取得する。ここで得られる復元画像をfとする。次に、ステップS117において、復元画像fを下記式(B−4)の拘束条件で修正し、修正された復元画像を、新たにf’とする。
復元画像fは、2次元の行列として表現されるため、この行列の各要素をf(x,y)で表す。今、劣化画像及び復元画像の各画素の画素値が、0から255までのデジタル値にて表されるものとする。そうすると、復元画像fを表す行列の各要素(即ち、各画素値)は、本来、0以上且つ255以下の値をとるはずである。従って、ステップS117において、復元画像fを表す行列の各要素が0以上且つ255以下であるかを判断し、0以上且つ255以下となっている要素の値はそのままにする一方、255より大きな要素がある場合はその要素の値を255に修正し、且つ、0より小さい要素がある場合はその要素の値を0に修正する。これが、式(B−4)の拘束条件による修正である。
次に、ステップS118において、収束条件を満たすか否かを判断することによって、反復処理の収束判定を行う。
例えば、最新のF'と1つ前に得られたF'との差分の絶対値を収束判定の指標として用いる。この指標が所定の閾値以下の場合、収束条件が満たされると判断する一方、そうでない場合、収束条件は満たされないと判断する。
収束条件が満たされる場合、最新のH'を逆フーリエ変換したものを最終的なPSFとする。即ち、この最新のH'を逆フーリエ変換したものが、図16のステップS74で求められるべきPSFとなる。収束条件が満たされない場合、ステップS110に戻り、ステップS110〜S118の各処理を繰り返す。ステップS110〜S118の各処理の繰り返しにおいて、f'、F'、H、h、h'、H'、F及びf(図18参照)は、順次、最新のものに更新されていく。
収束判定の指標として、他の指標を用いることも可能である。例えば、最新のH'と1つ前に得られたH'との差分の絶対値を収束判定の指標として用いて、上記の収束条件の成立/不成立を判断してもよい。また例えば、上記式(B−2a)及び(B−2b)を用いたステップS113における修正量、或いは、式(B−4)を用いたステップS117における修正量を収束判定の指標として用いて、上記の収束条件の成立/不成立を判断してもよい。反復処理が収束に向かえば、それらの修正量が小さくなるからである。
また、ステップS110〜S118から成るループ処理の繰り返し回数が所定回数に達した場合、収束不可と判断して、最終的なPSFを算出することなく処理を終了するようにしてもよい。この場合、補正対象画像である通常露光画像JLの補正は行われない。
図16の各ステップの説明に戻る。ステップS74にて、PSFが算出された後、ステップS75に移行する。ステップS75では、ステップS74で求められたPSFの逆行列の各要素を画像復元フィルタの各フィルタ係数として求める。この画像復元フィルタは、劣化画像から復元画像を得るためのフィルタである。実際には、上記式(B−3)の右辺の一部に相当する下記式(B−5)にて表される行列の各要素が、画像復元フィルタの各フィルタ係数に相当するため、ステップS74におけるフーリエ反復法の計算途中結果をそのまま利用可能である。但し、式(B−5)におけるH’*及びH’は、ステップS118の収束条件の成立直前に得られたH’*及びH’(即ち、最終的に得られたH’*及びH’)である。
ステップS75にて画像復元フィルタの各フィルタ係数が求められた後、ステップS76に移行し、この画像復元フィルタを用いて、補正対象画像としての通常露光画像JLの全体をフィルタリング(空間フィルタリング)する。即ち、求められた各フィルタ係数を有する画像復元フィルタを通常露光画像JLの各画素に適用して通常露光画像JLをフィルタリングする。これにより、通常露光画像JLに含まれるぶれを低減したフィルタリング画像が生成される。画像復元フィルタのサイズは通常露光画像JLの画像サイズよりも小さいが、手ぶれは画像全体に一様な劣化を与えると考えられるため、この画像復元フィルタを通常露光画像JLの全体に対して適用することによって、通常露光画像JLの全体のぶれが低減される。
フィルタリング画像には、フィルタリングに伴うリンギングが含まれうる。このため、ステップS77において、これを除去するためのリンギング除去処理をフィルタリング画像に施すことにより最終的なぶれ補正画像を生成する。リンギングを除去する手法は公知であるため、詳細な説明を割愛する。その手法として、例えば特開2006−129236号公報に記載の手法を用いればよい。
ぶれ補正画像は、補正対象画像に含まれるぶれが低減され且つフィルタリングに伴うリンギングが低減された画像となる。但し、フィルタリング画像もぶれが低減された画像であるため、フィルタリング画像をぶれ補正画像として捉えることも可能である。
短露光画像に含まれるぶれ量は少ないため、それのエッジ成分は、手ぶれのない理想画像のエッジ成分に近い。従って、上述の如く、この短露光画像から得られる画像をフーリエ反復法における初期復元画像とする。
フーリエ反復法によるループ処理の繰り返しによって、復元画像(f')は、手ぶれが極力除去された画像に徐々に近づいていくが、初期復元画像自体が既に手ぶれのない画像に近いため、従来の如くランダム画像や劣化画像を初期復元画像とするよりも収束が早くなる(最短では、1回のループ処理で収束する)。この結果、ぶれ補正処理に必要な手ぶれ情報作成用の処理時間が短縮される。また、初期復元画像が収束すべき画像からかけ離れていると局所解(真に収束すべき画像とは異なる画像)に収束する確率が高くなるが、上述のように初期復元画像を設定することにより、局所解に収束する確率が低くなる(即ち、手ぶれ補正に失敗する確率が低くなる)。
また、手ぶれは画像全体に一様な劣化を与えると考えられるため、各画像から小領域を抽出して各小領域の画像データから手ぶれ情報を作成し、それを画像全体に適用する。これにより、必要な演算量が低減され、手ぶれ情報作成用の処理時間及び手ぶれ補正用の処理時間が短縮される。勿論、必要回路の規模縮小化やそれに伴うコストダウン効果も見込める。
この際、上述の如く、エッジ成分を多く含む特徴的な小領域から手ぶれ情報を作成するようにする。PSFの算出元画像におけるエッジ成分の増大は、雑音成分に対する信号成分の割合の増大を意味するため、特徴的な小領域の抽出によって雑音の影響が小さくなり、PSFをより正確に検出することができるようになる。
尚、図17の処理では、空間領域上における劣化画像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の修正処理」と呼ぶ。
上述の例では、この後、図17のステップS118にて収束条件が満たされるまで、修正後の復元画像f’を用いて上述の処理が反復されると述べた。また、反復処理が収束に向かえば修正量が小さくなるという特性を考慮し、この収束条件の成立/不成立を、第1の修正処理に対応するステップS113での修正量、又は、第2の修正処理に対応するステップS117での修正量に基づいて判断しても良いとも述べた。この判断を修正量に基づいて行う場合、基準修正量を予め設定しておき、ステップS113での修正量又はステップS117での修正量と基準修正量とを比較して、前者が後者よりも小さい場合に収束条件が成立すると判断することになるが、基準修正量を十分に大きく設定しておけば、ステップS110〜S117の処理は反復実行されない。つまり、この場合、第1の修正処理を1回だけ行って得たPSF h'が、図16のステップS74で導出されるべき最終的なPSFとなる。このように、図17の処理を用いたとしても、第1及び第2の修正処理が繰り返し実行されるとは限らない。
第1及び第2の修正処理の繰り返し実行回数の増大は、最終的に求まるPSFの精度向上に寄与するが、本例では初期復元画像自体が既に手ぶれのない画像に近いため、第1の修正処理を1回だけ行って得たPSF h’の精度も、実用上、問題ない程度に高い。これを考慮すれば、ステップS118の判定処理自体を省略することも可能である。この場合、1回だけステップS113の処理を実行することで求まるPSF h’が図16のステップS74で導出されるべき最終的なPSFとなり、1回だけステップS114の処理を実行することで求まる関数H’から、図16のステップS75で導出されるべき画像復元フィルタの各フィルタ係数が求まる。故に、ステップS118の処理を省略する場合は、ステップS115〜S117の処理も割愛される。
<<第2実施形態>>
次に、本発明の第2実施形態について説明する。図19は、本発明の第2実施形態に係る撮像装置1aの全体ブロック図である。撮像装置1aは、静止画像を撮影及び記録可能なデジタルスチルカメラ、又は、静止画像及び動画像を撮影及び記録可能なデジタルビデオカメラである。
撮像装置1aは、撮像部11、AFE(Analog Front End)12、内部メモリ14、表示部15、記録媒体16及び操作部17を備えており、それらは、図1の撮像装置1におけるそれらと同じものである。撮像装置1aは、更に、主制御部13a及びセンサ部18を備えている。主制御部13aは、図1の主制御部13が有する機能と同等の機能を備えている。撮像装置1aは、センサ部18から与えられる角速度データに基づいてぶれ補正処理を実行する点において、撮像装置1と相違しているが、その他の点において、両撮像装置の構成及び機能は共通している。故に、両撮像装置間の共通点に対する説明を割愛し、両撮像装置間の相違点に特に着目して、第2実施形態の説明を行う。
第1実施形態に記載した事項は、矛盾なき限り第2実施形態に適用されるが、この適用の際、同一名称によって参照される部位間の符号の相違は無視される(例えば、主制御部13と主制御部13aとの間における、符号の相違(13と13aの相違)は適宜無視される)。
図20に、撮像装置1aの外観斜視図を示す。図20における一点鎖線300は、撮像部11の光軸を表している。今、光軸は水平面に平行であるとする。
センサ部18は、2つの角速度センサ18Y及び18Pを有し、撮像装置1aに作用する所謂手ぶれを検出する。角速度センサ18Yは、一定のサンプリング間隔にて周期的に撮像装置1aのヨー方向(水平方向)の角速度を計測して各サンプリング期間における撮像装置1aのヨー方向の角速度を表す信号を出力する。同様に、角速度センサ18Pは、上記サンプリング間隔にて周期的に撮像装置1aのピッチ方向(垂直方向)の角速度を計測して各サンプリング期間における撮像装置1aのピッチ方向の角速度を表す信号を出力する。
ヨー方向とピッチ方向は、互いに直交し、且つ、光軸にも直交する。撮像装置1aにヨー方向のぶれを与えれば、撮像装置1aの光軸は水平面に平行な面上で回転し、撮像装置1aにピッチ方向のぶれを与えれば、撮像装置1aの光軸は鉛直面に平行な面上で回転する。ヨー方向の手ぶれによって撮像素子33の撮像面上に結像する像は撮像面上で左右方向(撮像面の水平方向)に移動し、ピッチ方向の手ぶれによって撮像素子33の撮像面上に結像する像は撮像面上で上下方向(撮像面の垂直方向)に移動する。各角速度センサの出力信号から生成される角速度データは、主制御部13aに伝達される。角速度データは、撮像装置1aの動き(即ち、撮像装置1aのヨー方向及びピッチ方向の動き)を表す情報である。
撮影画像は、手ぶれに起因するぶれを含みうる。主制御部13aにはぶれ補正処理を実行するぶれ補正部(ぶれ補正装置)が内在されており、画像処理によって静止画像のぶれを補正する機能を備える。第1実施形態と同様、ぶれ補正部によってぶれが補正されるべき静止画像としての撮影画像を、特に「補正対象画像」と呼び、そのぶれの補正後の画像を「ぶれ補正画像」と呼ぶ。
図21に、撮像装置1aの一部ブロック図を示す。主制御部13aは、補正対象画像の露光期間中における撮像装置1aの動きに由来する補正対象画像のぶれが予め規定された類型的なぶれに属するか否かを角速度データに基づいて判断する類型判定部61と、撮像素子33の露光時間に対する制御を含む撮影制御を行う撮影制御部62と、類型判定部61の判断結果に基づいて記録媒体16に記録されるべきデータを生成して該データを記録媒体16に記録させる記録制御部63と、記録媒体16の記録データを受け取って補正対象画像に対するぶれ補正処理を実行する補正処理部64と、を備える。尚、類型判定部61は、記録制御部63に内在している。センサ部18からの角速度データは、記録制御部63及びそれに内在する類型判定部61に与えられる。
図22は、第2実施形態に係る、撮像装置1aの撮影動作の流れを表すフローチャートである。このフローチャートを参照して、撮像装置1aの撮影動作を説明する。図22に示すステップS201〜S211の各処理は撮影モードにおいて実行される。
撮影モードにおいてシャッタボタン17aが押下されると、ステップS201において、主制御部13aは、光学系35内のレンズの位置及び既知情報等に基づいて撮像部11の焦点距離fDを表すデータを取得すると共に、被写体の明るさを測定する測光回路(不図示)から得られた明るさ情報に基づいて撮像素子33の露光量が適正となる露光時間TEPを算出する。
この後、ステップS202において、撮像装置1aは、通常露光撮影を実行することにより通常露光画像GLを取得する。通常露光撮影の露光時間としてTEPが用いられる。撮影制御部62が、露光時間TEPに基づいて通常露光撮影用の露光時間制御信号を生成して撮像素子33に与えることよりにより通常露光撮影が実行される。また、通常露光撮影の実行時における撮像部11の焦点距離はfDである。通常露光画像GLの画像データは記録制御部63に与えられる。
他方、ステップS203において、記録制御部63は、通常露光画像GLの露光期間中における角速度データを取得する。今、図23に示す如く、通常露光画像GLの露光期間の開始時刻及び終了時刻が夫々t0及びtnであり、時刻t0を起点として角速度センサ18P及び18Yのサンプリング間隔が経過する毎に時刻t1、t2、・・・、tn-1及びtnが順次訪れるものとする(nは2以上の整数であって例えば33)。時刻t0と時刻t1との間の期間、時刻t1と時刻t2との間の期間、・・・、時刻tn-1と時刻tnとの間の期間の夫々が、サンプリング期間である。サンプリング期間の長さは、例えば、1/1000秒である。
センサ部18は、サンプリング期間毎に1つの角速度データを出力する。或る1つの着目したサンプリング期間に対する角速度データは、その着目したサンプリング期間における、撮像装置1aのヨー方向及びピッチ方向の角速度を表す。通常露光画像GLの露光期間中における全角速度データ(即ち、n個の角速度データ)を、角速度データ群DALLと呼ぶ。
角速度データ群DALLは類型判定部61に与えられる。類型判定部61は、焦点距離fD並びに通常露光画像GLの水平及び垂直方向の画素数などに基づいて、角速度データ群DALLを形成する角速度データの夫々を、通常露光画像GL上の動きベクトルに変換する。この変換方法は周知であるため詳細な説明を割愛する(例えば、特開2006−129236号参照)。時刻ti-1−ti間のサンプリング期間における角速度データを変換することによって得られる動きベクトルをmiにて表す(ここで、iは1以上n以下の整数)。類型判定部61は、通常露光画像GLに対してn個の動きベクトルm1〜mnを算出する(図23参照)。
例えば、時刻ti-1において撮像部11の撮像面の中心に実静止点(実空間上で静止している点)の像が結像しており且つ時刻ti-1−ti間においてヨー方向又はピッチ方向に撮像装置1aが回転した場合、時刻ti-1−ti間において該実静止点の像は撮像面上において該中心から移動する。この移動の方向及び大きさを、通常露光画像GL上におけるベクトルとして表現したものが動きベクトルmiである。
また、動きベクトルm1〜miを合成して得られる合成ベクトルを積分ベクトルSiという。類型判定部61は、変数iを1以上n以下の整数の夫々とした場合における積分ベクトルSi(即ち、積分ベクトルS1〜Sn)を求める。S1は、動きベクトルm1そのものであるが、便宜上、S1も積分ベクトルと呼ぶ。図24に示す如く、例えば、積分ベクトルS2は、動きベクトルm1及びm2を順次繋ぎ合わせて生成される、動きベクトルm1及びm2の合成ベクトルであり、積分ベクトルS3は、動きベクトルm1〜m3を順次繋ぎ合わせて生成される、動きベクトルm1〜m3の合成ベクトルである。
また、便宜上、図25に示すような、互いに直交するx軸及びy軸を座標軸とする二次元の座標面XYを定義し、その座標面XY上に通常露光画像GLが投影されるものとする。x軸及びy軸方向は夫々通常露光画像GLの水平及び垂直方向に合致するものとする。動きベクトルm1〜mn及び積分ベクトルS1〜Snは全て座標面XY上のベクトルであり、動きベクトルm1の始点及び積分ベクトルS1〜Snの全ての始点は座標面XY上の原点に配置されるものとする。
類型判定部61によって、角速度データ群DALLから動きベクトルm1〜mn及び積分ベクトルS1〜Snが求められた後、図22のステップS203からステップS204に移行する。
ステップS204において、類型判定部61は、ぶれ軌跡の形状を数式化できるか否かを判定する。ぶれ軌跡とは、通常露光画像GLの露光期間中における撮像装置1aの動きによって生じた、通常露光画像GLのぶれの軌跡を意味する。積分ベクトルS1〜Snの終点を順次結んでいった時に得られる軌跡がぶれ軌跡に相当する(図24も参照)。
数式化できるか否かの判定は、ぶれ軌跡の形状が、点、直線又は二次曲線の形状に近似できるか否かを判定することによって行われる。数式化できると判定された場合は、ステップS204からステップS205に移行し、類型判定部61にて形状数式データDF(以下、数式データDFと略記することがある)が生成される。図26に、その判定方法を含む、ステップS204及びS205の処理内容を表す。
具体的には、ステップS204において、積分ベクトルSnの大きさと所定の閾値THAとを比較し、前者が後者よりも小さい場合に、ぶれ軌跡の形状を点の形状に近似できると判定し、前者が後者以上である場合、その近似ができないと判定する。
ぶれ軌跡の形状を点の形状に近似できると判定した場合は、ぶれ軌跡の近似式を「x2+y2<r2」とみなし、その近似式におけるrの値と点フラグとを含むデータを数式データDFとして生成する。ぶれ軌跡の近似式におけるx及びyは、ぶれ軌跡の、座標面XYにおけるx軸成分及びy軸成分を表している。rの値は、予め設定されている。或いは、積分ベクトルSnの大きさをrの値に代入するようにしてもよい。
また、ステップS204において、積分ベクトルS1〜Snの終点(合計n個の終点)から成る点群に対する近似直線を最小二乗法によって求める。図27に、積分ベクトルSn-3、Sn-2、Sn-1及びSnの終点としての点311、312、313及び314と、求められた近似直線320を示す。或る積分ベクトルの終点(例えば、点311)と近似直線320との距離は、その終点に対する近似直線の誤差を表している。類型判定部61は、近似直線の誤差を積分ベクトルS1〜Snの夫々に対して求めて、積分ベクトルS1〜Snに対する誤差の総和をnで割った値を評価値EV1として求める。そして、評価値EV1と所定の閾値THBとを比較し、前者が後者よりも小さい場合に、ぶれ軌跡の形状を直線の形状に近似できると判定し、前者が後者以上である場合、その近似ができないと判定する。
ぶれ軌跡の形状を直線の形状に近似できると判定した場合は、ぶれ軌跡の近似式を「y=ax+b」とみなし、その近似式におけるa及びbの値と直線フラグとを含むデータを数式データDFとして生成する。a及びbは、夫々、近似直線320の傾き及びy切片である。
また、ステップS204において、積分ベクトルS1〜Snの終点(合計n個の終点)から成る点群に対する近似二次曲線を最小二乗法によって求める。或る積分ベクトルの終点と近似二次曲線との距離は、その終点に対する近似二次曲線の誤差を表している。類型判定部61は、近似二次曲線の誤差を積分ベクトルS1〜Snの夫々に対して求めて、積分ベクトルS1〜Snに対する誤差の総和をnで割った値を評価値EV2として求める。そして、評価値EV2と所定の閾値THCとを比較し、前者が後者よりも小さい場合に、ぶれ軌跡の形状を二次曲線の形状に近似できると判定し、前者が後者以上である場合、その近似ができないと判定する。
ぶれ軌跡の形状を二次曲線の形状に近似できると判定した場合は、ぶれ軌跡の近似式を「y=ax2+bx+c」とみなし、その近似式におけるa、b及びcの値と二次曲線フラグとを含むデータを数式データDFとして生成する。a、b及びcの値は、近似二次曲線から求まる。
ステップS204において、ぶれ軌跡の形状が、点、直線又は二次曲線の形状に近似できると判定された場合、ステップS205にて数式データDFが生成された後、ステップS206に移行し、ぶれ軌跡の形状が点、直線及び二次曲線の形状の何れにも近似できないと判定された場合、ステップS204からステップS210に移行する。
尚、ステップS206に移行した場合、原則としてステップS206の判定処理が実行されるが、ぶれ軌跡の形状が点の形状に近似できると判定された場合は、例外的にステップS206及びS207の処理を行うことなく、ステップS208に移行する。
ステップS206において、類型判定部61は、ぶれ速度の変化状態を数式化できるか否かを判定する。ぶれ速度とは、ぶれ軌跡を描く速度を意味する。数式化できるか否かの判定は、ぶれ速度の変化状態が、等速又は等加速に近似できるか否かを判定することによって行われる。ここにおける等加速とは、負の加速(即ち、等減速)をも含む概念である。数式化できると判定された場合は、ステップS206からステップS207に移行し、類型判定部61にて速度変化数式データDS(以下、数式データDSと略記することがある)が生成される。図28に、その判定方法を含む、ステップS206及びS207の処理内容を表す。
具体的には、ステップS206において、動きベクトルm1〜mnのノルムの分散(即ち、動きベクトルm1〜mnの大きさの分散)と所定の閾値THDを比較し、前者が後者よりも小さい場合に、ぶれ軌跡を描く過程においてぶれ速度の変化がない、即ちぶれ速度の変化状態を等速に近似できると判定し、前者が後者以上である場合、その近似ができないと判定する。
ぶれ速度の変化状態を等速に近似できると判定した場合は、ぶれ速度V(t)を表す近似関数を「V(t)=VCONST」とみなし、その近似関数におけるVCONSTの値と等速フラグとを含むデータを数式データDSとして生成する。VCONSTの値は、動きベクトルm1〜mnの大きさの平均値とされる。また、この近似関数における、tは1つのサンプリング期間が経過する毎に1増加する変数である。
また、図29に示す如く、変数i及び動きベクトルmiの大きさを夫々横軸及び縦軸にとった二次元座標面を想定し、その二次元座標面上に動きベクトルm1〜mnの大きさをプロットしていく。そして、プロットされた合計n個の点から成る点群に対する近似直線を最小二乗法によって求める。図29において、点331〜334は動きベクトルm1〜m4の大きさに対してプロットされた点であり、破線直線340は求められた近似直線を示している。
プロットされた或る点(例えば、点331)と近似直線340との距離は、その点に対する近似直線の誤差を表している。類型判定部61は、近似直線の誤差を、動きベクトルm1〜mnに対してプロットされた各点に対して求めて、各点に対する誤差の総和をnで割った値を評価値EV3として求める。そして、評価値EV3と所定の閾値THEとを比較し、前者が後者よりも小さい場合に、ぶれ軌跡を描く過程においてぶれ速度が一定割合で変化している、即ちぶれ速度の変化状態を等加速に近似できると判定し、前者が後者以上である場合、その近似ができないと判定する。
ぶれ速度の変化状態を等加速に近似できると判定した場合は、ぶれ速度V(t)を表す近似関数を「V(t)=V0+dt」とみなし、その近似関数におけるV0及びdの値と等加速フラグとを含むデータを数式データDSとして生成する。この近似関数におけるV0は動きベクトルm1の大きさであり、dは近似直線340の傾きであり、tは1つのサンプリング期間が経過する毎に1増加する変数である。
ステップS206において、ぶれ速度の変化状態を等速又は等加速に近似できると判定した場合、ステップS207にて数式データDSが生成された後、ステップS208に移行し、ぶれ速度の変化状態を等速及び等加速の何れにも近似できないと判定した場合、ステップS206からステップS210に移行する。
ステップS208に移行した場合、記録制御部63によってステップS208及びS209の処理が実行され、その後、撮影動作が終了する。ステップS208及び209では、通常露光画像GLをJPEG圧縮して画像JLを生成すると共に画像ファイルを記録媒体16内に作成し、その画像ファイルの本体領域に通常露光画像JLの画像データを記録する一方で、その画像ファイルのヘッダ領域に数式データDF及びDSを手ぶれデータ(補正用情報)として記録する。また、この際、記録制御部63は、焦点距離fD及び露光時間TEPを表すデータもヘッダ領域に記録する。尚、ぶれ軌跡の形状が点の形状に近似できると判定された場合は、上述の如くステップS207の処理は実行されないため、数式データDSの記録は行われない。
ステップS210に移行した場合、記録制御部63によってステップS210及びS211の処理が実行され、その後、撮影動作が終了する。ステップS210及び211では、通常露光画像GLをJPEG圧縮して画像JLを生成すると共に画像ファイルを記録媒体16内に作成し、その画像ファイルの本体領域に通常露光画像JLの画像データを記録する一方で、その画像ファイルのヘッダ領域に角速度データ群DALLを手ぶれデータ(補正用情報)として記録する。また、この際、記録制御部63は、焦点距離fD及び露光時間TEPを表すデータもヘッダ領域に記録する。
次に、図30を参照して撮像装置1aの補正動作を説明する。図30は、この補正動作の流れを表すフローチャートである。上述の撮影動作の後において、撮像装置1aに補正指示が与えられると(或いは所定条件が満たされると)補正動作が実行される。補正動作はステップS221〜S224の各処理から成る。補正指示は、例えば、ユーザによる操作部17への所定操作によって撮像装置1aに与えられる。但し、補正指示の有無に関係なく、補正動作を実行することも可能である。補正動作は再生モードにおいて実行される。但し、補正動作を撮影モードにて行うことも可能である。
撮像装置1aに補正指示が与えられると、ステップS221において、図21の補正処理部64は、記録媒体16内の画像ファイルから通常露光画像JLの画像データを読み出すと共に通常露光画像JLが記録された画像ファイルのヘッダ領域から手ぶれデータを読み出す。補正処理部64は、通常露光画像JLを補正対象画像として取り扱う。
ここで読み出される手ぶれデータは、上記のヘッダ領域に角速度データ群DALLが記録されておれば、その角速度データ群DALLであり、上記のヘッダ領域に数式データDF及びDSが記録されておれば、その数式データDF及びDSである。
続くステップS222において、補正処理部64は、読み出した手ぶれデータに基づいて通常露光画像JLのぶれの状態を表すPSFを求める。
読み出した手ぶれデータが角速度データ群DALLである場合、公知の方法(例えば、特開2006−129236号公報や特開2006−279807号公報に記載の方法)によって、角速度データ群DALLから通常露光画像JLのPSFを求めることが可能である。即ち、角速度データ群DALLから動きベクトルm1〜mnを求め、動きベクトルm1〜mnの向き及び大きさに応じてフィルタ係数の重み付けがなされた空間フィルタをPSFとして求める。
読み出した手ぶれデータが数式データDF及びDSである場合、補正処理部64は、角速度データ群DALLに基づいて求められるPSFに類似したPSFを数式データDF及びDSを用いて算出する。
図31を参照して、数式データDF及びDSからPSFを算出する方法を説明する。図31の上段には、撮影動作時において生成された角速度データ群DALLの例が示されている。今、この角速度データ群DALLから数式データDF及びDSが生成されて記録媒体16に記録され、且つ、形状数式データDFが直線フラグ並びにa及びbの値を含むと共に速度変化数式データDSが等速フラグ及びVCONSTの値を含んでいる場合を考える。この場合、補正処理部64は、ぶれ軌跡が近次式「y=ax+b」で表され且つぶれ速度V(t)が近似関数「V(t)=VCONST」で表されるとみなし、数式データDF及びDSから撮影動作に生成された角速度データ群を推定する。ここで推定された角速度データ群を、推定角速度データ群DALL_Eと呼ぶ。図31の下段には、推定角速度データ群DALL_Eが示されている。
例えば、a=4/3、b=0及びVCONST=5である場合は、全サンプリング期間における動きベクトルの大きさが5であって且つ全サンプリング期間における動きベクトルの水平成分(x軸成分)と垂直成分(y軸成分)の比が3:4となるように、推定角速度データ群DALL_Eを求める。
その後、角速度データ群DALLにて定まる動きベクトルm1〜mnを推定角速度データ群DALL_Eに基づいて推定し、推定した動きベクトルからPSFを求める。推定角速度データ群DALL_Eに基づくPSFの算出方法は、角速度データ群DALLに基づくPSFの算出方法と同じである。推定角速度データ群DALL_Eを求めなくとも数式データDF及びDSから動きベクトルm1〜mnを直接推定することができるため、実際には、数式データDF及びDSからPSFを求めるに当たり、推定角速度データ群DALL_Eを求める必要はない。
尚、形状数式データDFに点フラグ及びrの値が含まれる場合は、rの値に応じたタップ数を有するガウシアンフィルタをPSFとして求める。例えば、rの値が通常露光画像の3画素分である場合は、3×3のフィルタサイズを有するガウシアンフィルタをPSFとして求める。ガウシアンフィルタにおける分散は、予め定めておけばよい。
その後、ステップS223において、補正処理部64は、ステップS222にて求められたPSFの逆関数(一般逆行列)に相当する画像復元関数を求める。画像復元関数は、単一の画像復元フィルタとして表現され、PSFを表す行列の一般逆行列の各要素が該画像復元フィルタの各フィルタ係数とされる。補正処理部64は、この画像復元フィルタを用いた空間フィルタリングを補正対象画像(即ち、通常露光画像JL)の全体に対して施すことで、補正対象画像に含まれるぶれが低減されたぶれ補正画像を生成する。補正対象画像に画像復元フィルタを用いた空間フィルタリングを施して得た画像に対し、更にリンギング除去処理を施すことによって、最終的なぶれ補正画像を得るようにしてもよい。
続くステップS224において、主制御部13aは、ステップS223にて生成されたぶれ補正画像の画像データを記録するための画像ファイルを新たに生成して、その画像ファイルを記録媒体16に記憶する。或いは、画像ファイルを新たに生成することなく、通常露光画像JLの画像データが上書きされるように、通常露光画像JLの画像データを記録していた画像ファイルの本体領域にぶれ補正画像の画像データを記録してもよい。また、ぶれ補正画像は、表示部15に表示される。
手ぶれを単純な運動(例えば等速直線運動)に近似できる場合、正確な角速度データを用いた画像復元処理によって得られるぶれ補正画像と、数式近似を利用した画像復元処理によって得られるぶれ補正画像との間で視覚的な差は殆どない(換言すれば、その差が殆ど生じないように、図22のステップS204及びS206の判定条件を定めておく)。これを考慮し、本実施形態では、補正対象画像のぶれが予め規定された類型的なぶれ(直線的且つ等速的なぶれや、二次曲線的且つ等加速的なぶれなど)に属するか否かをステップS204及びS206の判定処理によって判断し、それが類型的なぶれに属する場合は、実際の角速度データの代わりに、類型的なぶれの軌跡形状及び該軌跡を描く速度状態を表す数式データを補正用情報として記録するようにする。これにより、実際の角速度データを記録する場合と比べて、補正用情報のデータサイズを小さくすることができる。
尚、上述の例では、ヨー方向とピッチ方向の角速度を合わせた動きベクトルm1〜mnに基づいて、角速度データ群DALLと数式データの何れを記録するかの切替判断を行っているが、この判断を、ヨー方向の角速度とピッチ方向の角速度に対して個別に行ってもよい。
例えば、図32に示す如く、通常露光画像GLの露光期間中の全サンプリング期間におけるヨー方向の角速度が一定或いは略一定であって且つ通常露光画像GLの露光期間中においてピッチ方向の角速度が一定或いは略一定の割合で増加している場合、類型判定部61は、ヨー方向の角速度VX(t)を表す近似関数を「VX(t)=VXCONST」且つピッチ方向の角速度VY(t)を表す近似関数を「VY(t)=VY0+dYt」とみなし、それらの近似関数におけるVXCONST、VY0及びdYの値と、ヨー方向の角速度が等速であることを示すヨー方向等速フラグと、ピッチ方向の角速度の変化状態が等加速であることを示すピッチ方向等加速フラグと、を含むデータを数式データとして生成する。この数式データは、通常露光画像の画像データが記録されるべき画像ファイルのヘッダ領域に記録された後、補正動作時において補正処理部64によって該画像ファイルから読み出されて、その数式データから通常露光画像GLの露光期間中における角速度データ群DALLが推定される。
尚、VXCONSTの値は、通常露光画像GLの露光期間中におけるヨー方向の角速度の平均値であり、VY0の値は、通常露光画像GLの露光期間中における1番目のサンプリング期間のピッチ方向の角速度であり、dYの値は、通常露光画像GLの露光期間中におけるピッチ方向の角速度の平均的な増加率である。また、近似関数におけるtは、1つのサンプリング期間が経過する毎に1増加する変数である。
<<変形等>>
上述した説明文中に示した具体的な数値は、単なる例示であって、当然の如く、それらを様々な数値に変更することができる。上述の実施形態の変形例または注釈事項として、以下に、注釈1〜注釈4を記す。各注釈に記載した内容は、矛盾なき限り、任意に組み合わせることが可能である。
[注釈1]
第2実施形態において、センサ部18を、角速度を検出する角速度センサにて構成する例を上述したが(図19参照)、撮像装置1aの動きを表す、角速度以外の物理量を検出するセンサにて、センサ部18を構成しても良い。例えば、撮像装置1aの加速度を検出する加速度センサ又は撮像装置1aの角加速度を検出する角加速度センサにてセンサ部18を形成するようにしてもよい。撮像装置1aの加速度又は角加速度を表す、加速度センサ又は角加速度センサの出力信号に基づいて補正対象画像のPSFを求めることも可能である。
[注釈2]
撮像装置(1又は1a)は、ハードウェア、或いは、ハードウェアとソフトウェアの組み合わせによって実現可能である。特に、主制御部(13又は13a)内で実行される処理の全部又は一部は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせによって実現可能である。ソフトウェアを用いて撮像装置(1又は1a)を構成する場合、ソフトウェアにて実現される部位についてのブロック図は、その部位の機能ブロック図を表すことになる。
また、主制御部(13又は13a)内で実行される演算処理の全部または一部を、プログラムとして記述し、該プログラムをプログラム実行装置(例えばコンピュータ)上で実行することによって、その演算処理の全部または一部を実現するようにしてもよい。
[注釈3]
上述の各実施形態では、撮像装置(1又は1a)内にぶれ補正処理を実行する補正処理部(54又は64)を設け、撮像装置(1又は1a)内でぶれ補正処理を実行しているが(図4又は図21参照)、撮像装置(1又は1a)と異なる外部機器(不図示)にて、そのぶれ補正処理を実行するようにしてもよい。この場合、その外部機器に、上述の補正処理部54又は64と同等の補正処理部を設けておき、その外部機器に記録媒体16の記録データを供給することによって補正対象画像からぶれ補正画像を生成すればよい。
[注釈4]
例えば、以下のように考えることができる。第1実施形態において、主制御部13に内在するぶれ検出部(ぶれ検出装置)は、図4の手ぶれ量推定部(装置動き検出手段)51及び記録制御部53を含み、更に撮影制御部52を含みうる。そのぶれ検出部に補正処理部54を加えた部位は、ぶれ補正部(ぶれ補正装置)として機能する。第2実施形態において、主制御部13aに内在するぶれ検出部(ぶれ検出装置)は、図21の記録制御部63を含み、更に撮影制御部62を含みうる。そのぶれ検出部に補正処理部64を加えた部位は、ぶれ補正部(ぶれ補正装置)として機能する。