以下、添付図面に従って、本発明の実施形態について、詳細に説明する。
図1は、本発明を適用したデジタルカメラ100の正面図である。
カメラボディ80(デジタルカメラ100の本体)の正面には、レンズ鏡胴81が配置されている。レンズ鏡胴81には、撮影レンズ24が内蔵されている。レンズ鏡胴81は、沈胴機構で構成されており、カメラボディ80に沈胴した状態から繰り出し可能である。また、カメラボディ80には、非撮影時に撮影レンズ24の前面を覆って撮影レンズ24を外界から遮ることで撮影レンズ24を保護するレンズカバー82が設けられている。レンズカバー82は、開閉自在な機構で構成されており、開状態で撮影レンズ24の前面を覆い、閉状態で撮影レンズ24の前面を外界に露出する。レンズ鏡胴81の沈胴機構およびレンズカバーの開閉機構は、周知の機構であり、説明を省略する。
また、カメラボディ80の正面には、フラッシュ60、AF補助光ランプ66、セルフタイマランプ68等が配置されている。フラッシュ60は、被写界に撮影用の光を照射する。例えば、キセノン管で構成される。LEDで構成してもよい。AF補助光ランプ66は後述のAFのために発光するランプであり、セルフタイマランプ68はセルフタイマ撮影を報知するためのランプである。
カメラボディ80の上面には、中央部分にレリーズスイッチ84が配置されたモードダイヤル83(モード切替スイッチ)と、電源スイッチ85とが配置されている。レリーズスイッチ84は、二段ストローク式のハードウェアスイッチで構成されており、いわゆる「半押し」と「全押し」とが可能である。半押しにより撮影準備指示を入力し、全押しにより撮影指示を入力する。レリーズスイッチ84を半押しすると、撮影準備処理、すなわち、AE(Automatic Exposure:自動露出)、AF(Auto Focus:自動合焦)、AWB(Automatic White Balance:自動ホワイトバランス)等、撮影前に行うべき処理を行う。レリーズスイッチ84を全押しすると、撮影処理、すなわち、被写体の本撮像および撮像画像の記録を行う。モードダイヤル83は、デジタルカメラ100のモードを切り替えるスイッチである。
図2は、図1に示したデジタルカメラ100の背面図である。なお、図1に示した構成要素には同じ符号を付してあり、説明を省略する。
デジタルカメラ100の背面には、モニタ50、十字キー86、メニュー/OKキー87、ズームスイッチ88が配置されている。
モニタ50は、公知の表示デバイスを用いて構成することができるが、携帯機器用としては、一般に、LCD(液晶表示デバイス)、有機EL(エレクトロルミネッセンス)表示デバイスなど、薄型の表示デバイスが用いられる。
十字キー86は、上、下、左、右に操作することで、各種設定の指示入力が可能である。例えば、明るさ調整、セルフタイマ設定、マクロ撮影、フラッシュ発光等の指示を入力する。
メニュー/OKキー87は、メニュー画面を表示して設定情報の入力を受け付けるメニュー機能の呼び出しに用いられる。また、メニュー/OKキー87は、メニュー画面上に表示した選択内容の確定や、処理の実行指示の入力に用いられる。
ズームスイッチ88は、撮影レンズ24のズーム操作に用いられる。望遠を示す「T」(テレ)側を押すと、押し続けている間、レンズ鏡胴81がカメラボディ80の外側に繰り出して焦点距離が望遠側に設定される。広角を示す「W」(ワイド)側を押すと、押し続けている間、レンズ鏡胴81がカメラボディ80の内側に引き込んで焦点距離が広角側に設定される。
図3は、第1実施形態におけるデジタルカメラ100の内部構成例を示すブロック図である。なお、図1および図2に示した要素には同じ符号を付してあり、説明を省略する。
図3において、デジタルカメラ100は、画像を電子的に記録するカメラであり、CPU(中央処理装置)10、操作部12、ROM14、SDRAM16、VRAM18、EEPROM20、バス22、撮影レンズ24、撮像素子30、タイミングジェネレータ32、アナログ信号処理部34、A/D変換器36、画像入力コントローラ38、画像信号処理部40、圧縮/伸張処理部42、メディアインタフェース44、メモリカード46、モニタドライバ48、モニタ50、AE検出部52、AF検出部54、手振れ補正部56、フラッシュドライバ58、フラッシュ60、電源制御部62、バッテリ64等を備えて構成されている。
CPU10は、デジタルカメラ100の全体の動作を制御する制御手段として機能し、操作部12からの入力に基づきプログラムに従ってデジタルカメラ100の各部を制御する。また、CPU10は、デジタルカメラ100の制御に必要な各種制御値を算出するための演算処理手段として機能し、プログラムに従って各種演算処理を実行する。デジタルカメラ100の各部は、バス22を介してCPU10と接続されている。
本実施形態のCPU10は、AE制御、AF制御、ダイナミックレンジ判定、撮像制御、動きベクトル検出、被写体判定、画像合成、記録制御等の機能を有する。これらの各種機能については、後に詳説する。
操作部12は、図1および図2に示した、モードダイヤル83、レリーズスイッチ84、電源スイッチ85、十字キー86、メニュー/OKキー87、ズームスイッチ88等のハードウェアスイッチを含んで構成され、これらハードウェアスイッチの操作に応じた信号をCPU10に出力する。デジタルカメラ100は、被写体の本撮像および画像の記録を行う撮影モードに加えて、記録した画像を再生する再生モードを備えており、この撮影モードと再生モードとの切り替えが、モードダイヤル83等によって行われる。なお、各種の詳細なモードの切り替えを行うため、モードダイヤル83以外のモード切り替え用スイッチを設けてもよい。また、メニューによりモード切り替え可能である。
ROM14には、このCPU10が実行するプログラム及び制御に必要な各種データ等が格納されている。SDRAM16は、CPU10の作業用領域として利用されるとともに、画像データの一時記憶領域として利用される。VRAM18は、表示用の画像データ専用の一時記憶領域として利用される。また、EEPROM20には、ユーザ固有の各種設定情報等が格納される。
撮影レンズ24は、ズームを行うズームレンズ24zと、焦点合わせを行うフォーカスレンズ24fと、光量調節を行うアイリス24iを含んで構成される。本例の撮影レンズ24は、沈胴式であり、電源スイッチ85によりデジタルカメラ100の電源をオンすると、カメラボディから繰り出される。
ズームレンズ24zは、ズームモータ26zにより駆動されて、光軸上を移動する。これにより、撮像素子30の受光面上に結像される被写体像が光学的に変倍される。CPU10は、ズームモータドライバ28zを介してズームモータ26zの駆動を制御することにより、ズームレンズ24zの移動を制御し、光学的なズーム切り替えを行う。
フォーカスレンズ24fは、フォーカスモータ26fにより駆動されて、光軸上を前後移動する。これにより、焦点合わせが行われる。CPU10は、フォーカスモータドライバ28fを介してフォーカスモータ26fの駆動を制御することにより、フォーカスレンズ24fの移動を制御し、焦点合わせを行う。
アイリス24iは、例えば、アイリス絞りで構成され、アイリスモータ26iにより駆動されて、その開口量(絞り値)が変化する。CPU10は、アイリスモータドライバ28iを介してアイリスモータ26iの駆動を制御することにより、アイリス24iの開口量を制御し、撮像素子30の受光面に入射する被写体光の光量を制御する。
撮像素子30は、例えば、CCD(Charge Coupled Device)イメージセンサである。CCDの代わりに他の方式のイメージセンサ(例えばCMOS(Complementary Metal Oxide Semiconductor)イメージセンサ)を用いることも可能である。
撮像素子30の受光面には、例えばR(赤)、G(緑)、B(青)の3原色の色フィルタが取り付けられた多数の受光素子(以下「画素」ともいう)が配置されている。各画素は、例えばフォトダイオードによって構成されている。なお、3原色以外(例えば補色系)の組み合わせの色フィルタを用いることも可能である。
撮影レンズ24を透過した被写体光は、撮像素子30の受光面に結像される。撮像素子30は、タイミングジェネレータ(TG)32により駆動されて動作する。すなわち、タイミングジェネレータ32から与えられる駆動パルスによって、各画素に蓄積された信号電荷を読み出し、RGBの画像信号として出力する。CPU10は、このタイミングジェネレータ32の駆動を制御することにより、撮像素子30の露光タイミング、露光時間(電荷蓄積時間、シャッター速度)、画像信号の読み出しを制御する。
アナログ信号処理部34は、撮像素子30から出力されたアナログの画像信号に対して相関二重サンプリング処理を行い、増幅して出力する。
A/D変換器36は、アナログ信号処理部34から出力されたアナログの画像信号をデジタルの画像信号に変換して出力する。
画像入力コントローラ38は、所定容量のラインバッファを内蔵しており、CPU10の制御の下、A/D変換器36から出力された1コマ分の画像信号を取り込んで、SDRAM16に格納する。
画像信号処理部40は、CPU10による制御の下、SDRAM16に格納された画像信号を取り込み、所要の信号処理を施して、輝度信号(Y)と色差信号(Cr,Cb)とからなる画像信号(Y/C信号)を生成して、VRAM18に書き込む。
圧縮/伸張処理部42は、CPU10による制御の下、画像信号(Y/C信号)を取り込み、所定の圧縮処理を施して、圧縮画像データ(例えば、JPEG)を生成する。また、CPU10による制御の下、圧縮画像データを取り込み、所定の伸張処理を施して、非圧縮の画像信号(Y/C信号)を生成する。
メディアインタフェース44は、CPU10による制御の下、メモリカード46にデータを読み/書きする。例えば、CPU10からの記録指示に応じて、撮影により得られた画像データをメモリカード46に記録する。また、CPU10からの読み出し指示に応じて、メモリカード46から該当する画像データを読み出す。メモリカード46は、撮影装置本体に設けられたカードスロットに着脱自在に装填される。
モニタ50は、再生モード時には記録済み画像の再生表示部として使用されるほか、撮影モード時には撮像素子30で生成されて画像入力コントローラ38によりSDRAM16に取り込んだ画像を、時系列に連続したスルー画像として表示する。
モニタドライバ48は、CPU10による制御の下、モニタ50の表示を制御する。本例では、画像信号(Y/C信号)をVRAM18から取り込み、表示用の信号形式に変換して、モニタ50に出力する。
AE検出部52は、CPU10による制御の下、SDRAM16に格納されたR、G、Bの画像信号を取り込み、AE制御に必要な、撮像画像の明るさを示すAE評価値(測光値)を算出し、CPU10に対し出力する。
AF検出部54は、CPU10による制御の下、SDRAM16に格納されたR、G、Bの画像信号を取り込み、AF制御に必要な、撮像画像のコントラストを示すAF評価値(コントラスト値)を算出し、CPU10に対し出力する。本例のAF検出部54は、G信号の高周波成分のみを通過させるハイパスフィルタ、絶対値化処理部、操作部12により設定された所定のフォーカスエリア内の信号を切り出すフォーカスエリア抽出部、及び、そのフォーカスエリア内の絶対値データを積算する積算部を含み、積算部で積算されたフォーカスエリア内の絶対値データをAF評価値としてCPU10に出力する。
手ぶれ補正部56は、CPU10からの指示に従い、手ぶれ補正を行う。
フラッシュドライバ58は、CPU10による制御の下、フラッシュ60を駆動する。すなわち、CPU10から指示された発光タイミング、発光量でフラッシュ60を発光させる。
電源制御部62は、CPU10からの指示に従い、装置本体に装填されたバッテリ64からデジタルカメラ100の各部への電源の供給を制御する。
なお、図3にて符号24〜36のデバイス(撮影レンズ24、撮像素子30、アナログ信号処理部34およびA/D変換器36を含む)により、撮像部23が構成される。
図4は、撮像素子30の構成例を模式的に示す平面図である。
撮像素子30の受光面には、赤、緑、青の色フィルタがそれぞれ取り付けられた多数の画素(受光素子)が配置されている。図4にて、大文字のR、G、Bが付された画素のグループを以下「A面画素群」といい、小文字のr、g、bが付された画素のグループを以下「B面画素群」という。A面画素群、B面画素群とも、赤、緑、青の3原色のフィルタがそれぞれ取り付けられた画素を含んでいる。これにより、A面画素群だけ又はB面画素群だけで、フルカラー画像を生成することが可能である。
本例の撮像素子30は、ハニカム配列と呼ばれる画素配列を有しており、A面画素群(R、G、B画素群)が行方向および列方向に格子状に配置され、このA面画素群に対し、B面画素群(r、g、b画素群)が行方向及び列方向に画素ピッチの半分(1/2画素ピッチ)ずらして格子状に配置されている。つまり、A面画素群の格子間にB面画素群を配置したハニカム配列となっている。
また、赤(R、r)、緑(G、g)、青(B、b)の同色の画素が斜め方向に2つ隣り合う。これらの隣接した二つの画素を一画素とみなして信号処理することで、ダイナミックレンジを拡大することが可能である。
本例にて、同一色のA面画素とB面画素(例えばR画素とr画素)は、同一の形状および同一の飽和電荷量を有する。また、A面画素およびB面画素には、それぞれ独立した電荷転送路(80A、80B)と読出電極(82A、82B)が設けられており、A面画素に蓄積された電荷とB面画素に蓄積された電荷は、それぞれ独立に読み出し及び転送を行うことが可能である。
撮像素子30のA面画素群およびB面画素群は、画素群ごとに異なる露光時間にて一回露光で撮像することが可能である。例えば、A面画素群とB面画素群とで同時に露光を開始し、B面画素群の露光終了後にA面画素群の露光を終了することが可能である。これにより、A面画素群の長時間露光によるA面画像と、B面画素群の短時間露光によるB面画像が得られる。このような撮像素子30の駆動については、例えば特開2007−235656号公報に記載の方法を用いればよく、ここでは詳細な説明を省略する。もっとも、本発明は、A面画素群とB面画素群とで同時に露光を開始する場合には特に限定されない。例えば、露光開始時間を異ならせる態様や、露光開始時間と露光終了時間の両方を異ならせる態様でも、露光期間を重複させ且つ露光時間を異ならせることができる。
また、撮像素子30のA面画素群とB面画素群とをひとつの高解像度画素群として用い、A面画素群とB面画素群とで同じ露光時間で撮像することにより、画素群別画像(A面画像、B面画像)よりも高解像度を有する高解像度画像を得ることも可能である。
なお、画素の形状は、図4に示す四角形状に限定されるものではない。例えば、六角形状や八角形状の画素であってもよい。
また、本発明にて、画素配列はハニカム配列に特に限定されるものではない。例えば、多数の画素を行方向および列方向に一定間隔で正方格子形状に配列した正方格子配列とし、行方向および列方向のそれぞれにてA面画素とB面画素とを1つ置きに配置してもよい。
図5は、第1実施形態におけるCPU10の要部機能ブロック図である。
AE制御部102は、AE検出部52により算出されたAE評価値に基づいて、自動露出(AE)制御を行う。
AF制御部104は、AF検出部54により算出されたAF評価値に基づいて、自動合焦(AF)制御を行う。
ダイナミックレンジ判定部106は、撮像部23から出力される撮像画像のダイナミックレンジが適正な範囲内であるか否かを判定する。具体的には、ダイナミックレンジを閾値と比較し、ダイナミックレンジが閾値未満であれば、ダイナミックレンジは適正範囲内であり、拡大は不要であると判定する。つまり、基準の撮像条件で本撮像した場合に飽和は生じないと推定する。ダイナミックレンジが閾値以上であれば、ダイナミックレンジは適正範囲外であり、拡大が必要であると判定する。この場合、基準の撮像条件で本撮像した場合に飽和する可能性がある。ここで、本撮像は、レリーズスイッチ84により撮影指示が入力された後に、記録する画像を得るために行う撮像である。
撮像制御部108は、タイミングジェネレータ32を用いて撮像素子30を制御する。撮像により得られた撮像画像は、SDRAM16に格納される。
本例では、撮像素子30のA面画素群とB面画素群とで画素群ごとに異なる露光時間で一回露光(一回撮像)にて撮像する画素群別撮像(第1の撮像)と、A面画素群およびB面画素群をひとつの高解像度の画素群として同じ露光時間を設定し、且つ、一回ごとに異なる露光時間で連続して複数回露光(複数回撮像)にて撮像する高解像度連写(第2の撮像)とを、連続して行う。この場合、少なくとも三回露光(三回撮像)する。画素群別撮像および高解像度連写の順はいずれが先でもよい。
動きベクトル検出部110は、被写体を連続して撮像して得られた複数枚の画像から、被写体の動きベクトルを検出する。また、本実施形態の動きベクトル検出部110は、被写体の動きベクトルとともに、カメラボディ80の動きベクトルを、複数枚の画像から検出する。
被写体判定部112は、被写体の動きベクトルに基づいて、連写中の被写体が静止状態であるか動状態であるかを判定する。以下では、静止状態である被写体を「静止体」、動状態である被写体を「動体」ということもある。
画像合成部114は、被写体判定部112により連写中の被写体が動状態であると判定された場合には、A面画素群とB面画素群とで異なる露光時間にて一回露光(一回撮像)して得られたA面画像とB面画像とを合成する。また、画像合成部114は、被写体判定部112により連写中の被写体が静止状態であると判定された場合には、A面画素群およびB面画素群をひとつの高解像度画素群として扱い、一回ごとに異なる露光時間で連続して複数回露光(複数回撮像)して得られた複数枚の高解像度画像を合成する。
つまり、画像合成部114は、図6(A)に示すオーバー露出の入出力特性201で撮像された画像(長時間露光画像)と、図6(B)に示すアンダー露出の入出力特性202で撮像された画像(短時間露光画像)とを加算する。オーバー露出では、入射光量が小さい低輝度領域にてダイナミックレンジが大きく、入射光量が大きい高輝度領域にて飽和する。アンダー露出では、高輝度領域でも飽和しない。なお、長時間露光画像と短時間露光画像とを単純加算すると、図6(C)に符号203で示す入出力特性で撮像されたと同じ画像となり、入出力特性が滑らかでなく、また、飽和点Sを超えてしまうため、γテーブルを用いた重み付け加算により、図6(C)に符号204で示す入出力特性で撮像されたと同じ画像を生成する。
画像合成部114の画像合成により生成された画像を、以下では「合成画像」または「広ダイナミックレンジ画像」という。
また、本実施形態の画像合成部114は、動きベクトル検出部110にて検出されたカメラボディ80の動きベクトルを用いて、複数枚の連写画像を合成する。
記録制御部120は、広ダイナミックレンジ画像を、メディアインタフェース44を介してメモリカード46に記録する。
本例の記録制御部120は、画像合成部114により生成された合成画像を、メモリカード46に記録する。
システム制御部122は、CPU10内の各部およびCPU10外の各部を統括して制御する。
図7は、第1実施形態における撮像処理例の流れを示すフローチャートである。本処理は図3のCPU10によりプログラムに従って実行される。
レリーズスイッチ84が半押しされると、ステップS1にて、AE制御部102により、AE処理を行う。AE処理では、AE検出部52にて算出されたAE評価値に基づいて、撮像画像の輝度(明るさ)を求め、基準の露光時間および絞り値を決定する。例えば、プログラム線図を利用して決定する。
ステップS2にて、AF制御部104により、AF処理を行う。AF処理では、フォーカスモータドライバ28fによりフォーカスレンズ24fを至近距離に合焦した至近レンズ位置から無限遠に合焦した無限遠レンズ位置まで小刻みに移動させながら、AF検出部54により撮像画像のコントラストを示すAF評価値を算出し、フォーカスレンズ24fをコントラストがピークとなるレンズ位置を合焦レンズ位置(主要被写体に合焦するフォーカスレンズ24fの位置)と決定する焦点検出処理を行う。そして、決定した合焦レンズ位置にフォーカスレンズ24fを移動させる。
なお、本例では、AE処理およびAF処理をレリーズスイッチ84の全押し前に行うが、AE処理およびAF処理のうち少なくとも一方をレリーズスイッチ84の全押し後に行ってもよい。
ステップS3にて、ダイナミックレンジ判定部106により、撮像部23から出力された撮像画像のダイナミックレンジを閾値(例えば6EV)と比較して、ダイナミックレンジが適正な範囲内であるか否かを判定する。ダイナミックレンジが閾値以上であればステップS4に進み、閾値未満であればステップS9に進む。
本例では、ステップS1にて算出されたAE評価値(測光値)に基づいて、本撮像前の撮像画像における明暗差(輝度差)をダイナミックレンジとして算出する。例えば、撮像画像を複数の領域に分割し、AE検出部52により、各分割領域ごとに輝度の積算値を算出し、全部の領域における積算値の最大値と最小値を求め、適正露出値(適正EV値)に換算し、最大値と最小値との差をダイナミックレンジとして算出する。
なお、ダイナミックレンジ判定をレリーズスイッチ84半押し後の撮像画像に基づいて行う場合を例に説明したが、レリーズスイッチ84が半押しされる前に撮像されたスルー画像に基づいて行ってもよい。
レリーズスイッチ84が全押しされると、ステップS4にて、撮像制御部108により撮像部23を制御して、図8(A)に示すように、まず、A面画素群の露光時間t1をB面画素群の露光時間t2よりも長くして一回露光し、画素群ごとに蓄積電荷を読み取る(第1回目の撮像)。次に、A面画素群およびB面画素群をひとつの高解像度画素群として用い、異なる露光時間(t2<t1)で二回露光し、一回ごとに全画素群から蓄積電荷を読み取る(第2回目および第3回目の撮像)。第1回目の撮像(画素群別撮像)により、ダイナミックレンジが異なる通常解像度Rnの画素群別画像が2枚得られ、第2回目および第3回目の撮像(高解像度連写)により、ダイナミックレンジが異なる高解像度Rh(=Rn×2)の高解像度画像が2枚得られる。
ステップS5にて、動きベクトル検出部110により、被写体の動きベクトルおよびカメラボディ80の動きベクトルを検出する。
動きベクトルは、撮像条件(露光時間、絞り値など)が異なる画像間でも検出可能であるが、動きベクトルの検出精度を高めるためには、同じ撮像条件で被写体を撮像して得られた複数枚の画像間で検出することが、好ましい。例えば、第1回目の撮像にて得られたA面画像と、第3回目の撮像にて得られた高解像度画像に含まれるA面画像とから、動きベクトルを検出する。B面画像を用いてもよい。
動きベクトルは、公知技術を用いて検出すればよい。例えば、主要被写体が人と特定されている場合、各連写画像にて顔部分を検出し、複数枚の連写画像間で顔部分の動きベクトルを検出し、これを被写体の動きベクトルとする態様がある。ここで、顔部分の周囲(または撮像画像の周辺部分)を背景と推定して、背景の動きベクトルを検出し、これをカメラボディ80の動きベクトル(すなわち手ぶれ量)と推定してもよい。
また、主要被写体が人等に特定されず任意である場合でも、被写体およびカメラボディ80の動きベクトルを検出可能である。例えば、撮像画像の各分割領域毎に、複数枚の連写画像間で動きベクトルを検出し、分割領域間で動きベクトル間の相関関係を求め、その相関関係に基づいて、各分割領域の動きベクトルが被写体の動き及びカメラボディ80の動きのうち何れを示すか、または、加算されているかを判定することで、被写体の動きベクトル及びカメラボディ80の動きベクトルを抽出することが可能である。
これら以外の方法を用いて被写体の動きベクトルおよびカメラボディ80の動きベクトルを検出してもよいことは、勿論である。
ステップS6にて、被写体判定部112により、被写体の動きベクトルに基づいて、連写中における被写体が、静止体(すなわち静止状態)であるか動体(すなわち動状態)であるかを判定する。
動体であると判定された場合、ステップS7にて、画像合成部114により、A面画像とB面画像とを合成することで、ダイナミックレンジを拡大した合成画像を生成する。
例えば、図6(A)に示すオーバー露出の入出力特性201で撮像されたA面画像、すなわち低輝度領域にて飽和せず高輝度部にて飽和した画素群別画像と、図6(B)に示すアンダー露出の入出力特性202で撮像されたB面画像、すなわち高輝度部でも飽和しない画素群別画像とを取得し、これらの画素群別画像を加算する。つまり、A面画像の画素値とB面画像の画素値とを加算することで、低輝度領域から高輝度領域にわたってダイナミックレンジが広い広ダイナミックレンジ画像を生成する。なお、A面画像とB面画像とを単純加算すると、図6(C)に符号203で示す入出力特性にて撮像された場合と同じ画像が生成されるが、実際には、γテーブルを用いて図6(C)に符号204で示す入出力特性にて撮像された場合と同じ画像を生成する。つまり、γテーブルを用いた重み付け加算を行う。これにより、良好な入出力特性の広ダイナミックレンジ画像が得られる。
静止体であると判定された場合、ステップS8にて、画像合成部114により、第2回目および第3回目の撮像により得られた2枚の高解像度画像を合成することで、広ダイナミックレンジ画像を生成する。つまり、図6(A)に示す第1の入出力特性201で撮像されたオーバー露出の高解像度画像と、図6(B)に示す第2の入出力特性202で撮像されたアンダー露出の高解像度画像とを加算する。なお、2枚の高解像度画像を単純加算すると、図6(C)に符号203で示す入出力特性にて撮像された場合と同じ合成画像が生成されることになるが、実際には、γテーブルを用いて図6(C)に符号204で示す入出力特性にて撮像された場合と同じ合成画像を生成する。これにより、良好な入出力特性の広ダイナミックレンジ画像が得られる。
なお、静止体であっても、カメラボディ80が動いた場合には、複数枚の連写画像を合成すると、いわゆる手ぶれが加算的に大きくなる。そこで、高解像度画像の画像合成の際、カメラボディ80の動きベクトルを用いて、手ぶれ成分を加えないように画像を合成する。具体的には、一枚の高解像度画像に対し他の高解像度画像を画像処理により相対的にシフトした後、合成する。ここで、高解像度画像の相対的シフトは、カメラボディ80の動きベクトルの逆ベクトルに相当する。
画像合成により得られた広ダイナミックレンジ画像は、ステップS10にて画像信号処理部40により所定の画像処理が施され、ステップS11にて圧縮/伸張処理部42により圧縮され、ステップS12にて記録制御部120によりメモリカード46に記録される。
ステップS3にて、ダイナミックレンジが閾値未満であると判定された場合には、レリーズスイッチ84が全押しされると、ステップS9にて、ステップS1で算出した基準の露光時間および絞り値で一回撮像することで1枚の高解像度の記録用画像を取得する。ステップS10の画像処理、ステップS11の圧縮処理、および、ステップS12の記録処理は、前述の連写の場合と同様である。
なお、3回撮像(3回露光)する場合を例に説明したが、このような場合に本発明は限定されない。以下のように2回撮像(2回露光)して画像合成を行ってもよい。
2回撮像の場合、図7のステップS4にて、撮像制御部108は、撮像素子30のA面画素群とB面画素群とで画素群ごとに異なる露光時間で連続して複数回撮像する。ここで、一回撮像するごとに、各画素群から蓄積電荷を読み取るとともに、画素群間で露光時間を互いに入れ替える。例えば、図8(B)に示すように、第1回目の撮像では、第1の露光時間t1でA面画素群により露光すると同時に、第1の露光時間t1よりも短い第2の露光時間t2でB面画素群により露光し、全画素群から蓄積電荷を読み取る。第2回目の撮像では、露光時間を入れ替えて、第2の露光時間t2でA面画素群により露光すると同時に、第1の露光時間t1でB面画素群により露光し、全画素群から蓄積電荷を読み取る。
また、2回撮像の場合、図7のステップS6にて被写体判定部112により被写体が動状態であると判定された場合、図7のステップS7にて、画像合成部114は、一回の撮像(例えば第1回目の撮像)で得られたA面画像とB面画像とを合成することにより第1の広ダイナミックレンジ画像を生成する。被写体が静止状態であると判定された場合、図7のステップS8にて、画像合成部114は、複数回の撮像で得られた複数枚の画素群別画像を同一の画素群ごとに合成するとともに画素群間で組み合わせることにより高解像度の広ダイナミックレンジ画像を生成する。つまり、第1回目の撮像にて得られた露光時間t1のA面画像と第2回目の撮像にて得られた露光時間t2のA面画像とを加算することにより広ダイナミックレンジのA面画像を生成し、第1回目の撮像にて得られた露光時間t2のB面画像と第2回目の撮像にて得られた露光時間t1のB面画像とを加算することにより広ダイナミックレンジのB面画像を生成し、更に広ダイナミックレンジのA面画像およびB面画像を組み合わせることで高解像度の広ダイナミックレンジ画像を生成する。
図9は、第2実施形態におけるデジタルカメラ100の一例を示す全体構成図である。なお、図3に示した要素には同じ符号を付してあり、既に説明した内容については、その説明を省略する。
図9において、角速度センサ70は、カメラボディ80の動きを検出することで、撮像部23の動きベクトル(すなわち手ぶれ量)を検出する。
図10は、第2実施形態におけるCPU10の要部機能ブロック図である。なお、図3に示した要素には同じ符号を付してあり、既に説明した内容については、その説明を省略する。
本実施形態の動きベクトル検出部110は、撮像素子30により得られた複数枚の撮像画像と、角速度センサ70により検出されたカメラボディ80の動きとに基づいて、被写体の動きベクトルを検出する。また、本実施形態の画像合成部114は、角速度センサ70の検出結果を用いて、複数枚の連写画像を合成する。
図11は、第2実施形態における撮像処理例の流れを示すフローチャートである。本処理は図9のCPU10によりプログラムに従って実行される。
ステップS21〜S24は、図7に示した第1実施形態におけるS1〜S4と同様である。
ステップS25にて、本実施形態では、動きベクトル検出部110により、複数枚の撮像画像と角速度センサ70の検出結果とに基づいて、被写体の動きベクトルを検出する。本実施形態では、角速度センサ70によりカメラボディ80の動き(すなわち手ぶれ量)が検出される。よって、複数枚の撮像画像間での動きベクトルから、角速度センサ70により検出されたカメラボディ80の動きベクトルを減算した結果が、被写体の動きベクトルに相当する。
ステップS26にて、被写体判定部112により、被写体の動きベクトルに基づいて、被写体が静止状態であるか動状態であるかを判定する。
ステップS28にて、本実施形態では、角速度センサ70の検出結果を用いて、複数枚の連写画像を合成する。
前述の第1実施形態では、動きベクトル検出部110により検出されたカメラボディ80の動きベクトルを用いて、手ぶれ成分を加えないように画像合成を行ったが、本実施形態では、角速度センサ70により検出されたカメラボディ80の動きベクトルを用いることで、確実に手ぶれの加算を排除することが可能である。具体的には、一枚の撮像画像に対し、他の撮像画像を画像処理により相対的にシフトした後、合成する。ここで撮像画像の相対的シフトのベクトルは、角速度センサ70により検出されたカメラボディ80の動きベクトルの逆ベクトルに相当する。
ステップS27およびS29〜S32は、図7に示した第1実施形態におけるS7およびS9〜S12と同様である。
以上説明した第1実施形態および第2実施形態にて、連写回数は特に限定されない。枚数を増やすことにより、動きベクトルの検出精度の向上や、広ダイナミックレンジ画像の精度向上を図ってもよいことは、言うまでもない。
また、画像合成をCPU10の演算により行う場合を例に説明したが、このような場合に特に限定されない。ハードウェア回路により、画像合成やゲインアップを行ってもよいことは、言うまでもない。
また、高解像度画像の撮像条件の切り替えとして、露光時間を切り替える場合を例に説明したが、このような場合に本発明は特に限定されない。例えば、絞り値を切り替えることで、ダイナミックレンジが異なる複数枚の連写画像を取得してもよい。また、フラッシュ60として発光量可変の光源を用い、被写体に対する照度を切り替えることで、ダイナミックレンジが異なる複数枚の連写画像を取得してもよい。また、撮影レンズ24にフィルタを設け、撮影レンズ24の光透過率を切り替えてもよい。また、アナログ信号処理部34におけるゲインを切り替えることで、いわゆる感度を切り替えてもよい。
また、第1実施形態にて、画像解析により電子的にカメラボディ80の動きを検出する場合を例に説明し、第2実施形態にて、角速度センサ70によりカメラボディ80の動きを検出する場合を例に説明したが、画像解析とセンサとを併用してカメラボディ80の動きを精度よく検出してもよいことは、勿論である。
また、第2実施形態にて、カメラボディ80の動きを検出するセンサとして、角速度センサ(ジャイロセンサ)を用いた場合を例に説明したが、角速度センサには特に限定されない。カメラボディ80の動き量を検出可能なセンサであればよい。
また、手ぶれ補正部56の詳細な説明を省略したが、公知の技術を用いて手ぶれ補正を行うことができる。手ぶれ補正は、ハードウェアおよびソフトウェアのいずれで行ってもよい。例えば、手ぶれ量に応じて撮像素子30や撮影レンズ24を移動させる公知のハードウェアを用いることにより、手ぶれ補正を行うことができる。ハードウェア回路を用い、画像信号に対して手ぶれ補正を行ってもよい。また、被写体ぶれ補正についての説明を省略したが、公知の技術を用いて被写体ぶれ補正を行ってよいことは、言うまでもない。これらのぶれ補正の際に、動きベクトル検出部110により検出した動きベクトル、および、角速度センサ70の検出結果のうち、少なくともいずれかを用いることができる。
また、本明細書では、デジタルカメラを例に説明したが、本発明は、デジタルカメラには特に限定されず、カメラ付き携帯電話等、撮像機能を備えたあらゆる撮像装置に適用可能である。
なお、本発明は、本明細書において説明した例や図面に図示された例には限定されず、本発明の要旨を逸脱しない範囲において、各種の設計変更や改良を行ってよいのはもちろんである。