以下に、本発明の好ましい実施の形態を、添付の図面に基づいて説明する。
(第1実施形態)
以下、図1〜図6を参照して、本発明に係る撮像装置の第1実施形態について説明する。図1は、本発明の第1実施形態に係る撮像システムの概略を例示的に説明するブロック図である。また、図2は、本発明の第1実施形態に係る撮像システムの詳細を説明するブロック図である。以下、図1、2を参照して本発明に係る撮像装置の第1実施形態であるカメラ本体100、撮影レンズ200、外部ストロボ300を含めた撮像システムについて説明する。
なお、図1、2に示す機能ブロックの1つ以上は、ASICやプログラマブルロジックアレイ(PLA)などのハードウェアによって実現されてもよいし、CPUやMPU等のプログラマブルプロセッサがソフトウェアを実行することによって実現されてもよい。また、ソフトウェアとハードウェアの組み合わせによって実現されてもよい。したがって、以下の説明において、異なる機能ブロックが動作主体として記載されている場合であっても、同じハードウェアが主体として実現されうる。
デジタルカメラのカメラ本体100は本実施形態に係る撮像装置である。撮像素子101は赤外カットフィルタやローパスフィルタ等を含むCCD、CMOS等の電荷蓄積型の固体撮像素子であり、撮影レンズ200によって導かれた被写体の光束に対応する光学像が結像する。この撮像素子101を用いて被写体を撮像することで取得された画像を、後述するディスプレイユニット103に逐次表示することで所謂ライブビュー機能が実現される。なお、撮像素子101で得られた画像は、後述するフリッカーの検出、記録用の撮影画像としても用いられる。
シャッター102は、レンズ群201から導かれた光束の光路上において撮像素子101の前方に配置される遮光部材である。シャッター102は、羽根部材を備え、この羽根部材の展開状態で、被写体からの光束を遮ることができ、羽根部材の折り畳み状態で撮像素子101に結像する被写体からの光束に対応する光学像を撮像素子101に結像させることが出来る。なお、カメラ本体100では、シャッター102の走行速度に応じて撮像素子101へ入射する光量を調節することが可能である。そして、シャッター102の走行速度と撮像素子101の露光時間とに基づく露出条件であるシャッター速度を変更することで、画像信号の明るさを調整することができる。なお、シャッター102の動作と同様の構成を、撮像素子101における蓄積制御で行う所謂電子シャッターを採用する構成でもよい。
ディスプレイユニット(以下、単にディスプレイと称す)103は、TFT型LCD(薄膜トランジスタ駆動型液晶表示器)などで構成された表示手段である。ディスプレイ103には、被写体を撮像する際の露出などの撮影パラメータに関する情報や、撮像素子101を用いて取得された画像に基づく表示用の画像を表示可能であって、この表示用の画像を逐次表示するライブビュー(表示)が可能である。なお、ディスプレイ103は、ユーザによるタッチ操作が可能な操作手段を兼ねた、所謂タッチパネルであって、本実施形態では静電容量式のタッチパネルとして機能する。なお、タッチ操作を可能とするディスプレイ103の構成は静電容量を検出するものに限定されず、公知の方式であればどのようなものを採用してもよい。
システム制御部(CPU)104は、カメラ本体100およびカメラ本体100に装着されたカメラアクセサリの各部を統括的に制御する制御手段である。CPU104が実行する制御内容については、後述の種々の動作の説明にて詳細を説明する。
撮影レンズ200は、被写体の光学像に対応する光束をカメラ本体100の内部へと導く光学装置である。撮影レンズ200のレンズ群201には、フォーカシングレンズ、ズームレンズ、シフトレンズなどの種々レンズを備える光学系である。絞り202は、開口径を調整することで、カメラ本体100の内部に入射する光量を調節することが出来る光量調節部材である。
また、撮影レンズ200は、撮影レンズ用の制御手段であるレンズ制御部(LPU)203を備える。LPU203は、レンズ群201のレンズ位置や絞り202の開口径の制御に加え、カメラ本体100のCPU104との通信を制御する通信制御手段でもある。
絞り駆動部205は、撮影レンズ200の絞り202を駆動するための構成であって、LPU203により指示された絞り位置へ絞り202を駆動させ、絞り202の開口を絞り値に応じた開口量へと調整できる。レンズ駆動部204は、撮影レンズ200のレンズ群201を所定の位置へ駆動させる構成であって、LPU203により指示された位置へレンズ群201を駆動できる。
シャッター制御部105は、シャッター102の開閉状態を制御する構成であって、CPU104により指定された時間でシャッター102の走行を制御することで、被写体を撮像する際のシャッター速度を制御できる。信号処理部106は、撮像素子101より出力された画像信号に種々の処理を施す構成であって、デジタル画像データに対して所定の画像補間、縮小などのリサイズ処理や色変換処理、飽和画素や黒潰れ画素などの画素データ数の演算処理を行う。また、信号処理部106は、デジタル画像データに対して、ホワイトバランス(以下、単にWBと称す)演算処理を施すWB処理手段である。
記録部112は、撮像により得られた画像信号を記録する記録媒体であって、撮像素子101を用いて取得された画像信号を静止画データ、または動画データとして記録可能である。なお、記録部112は、カメラ本体100を中心とする撮像システムの動作に関わるデータやカメラ本体100を用いて取得した種々のデータを記録可能なメモリとしても利用される。本実施形態の記録部112は、不揮発性メモリとして使用可能なROM領域、および揮発性メモリとしてRAM領域をそれぞれ備えている。
撮影モード選択部109は、カメラ本体100で設定可能な撮影モードを選択する選択手段である。なお、本実施形態における撮影モードとは、露出に係る要素(露出制御値)の設定方法が異なるモードである。例えば、絞り値を優先的に設定する絞り値(Av)優先モードや、シャッター速度を優先的に設定するシャッター速度(Tv)優先モードなどを設定可能である。また、撮影モード選択部109は、CPU104と電気的に接続されており、CPU104は、撮影モード選択部109によって選択された撮影モードに応じてカメラ本体100の制御を行う。
撮像指示部110は、CPU104と電気的に接続されており、ユーザの手動操作により押し下げられることで信号が有効となり撮像準備および撮像の開始が指示され、それ以外の状態で信号が無効となる。なお、撮像指示部110は、2段階の押し下げ状態に遷移可能であって、CPU104は、撮像指示部110の半押し状態を撮像待機状態として認識して、カメラ本体100の各部に対して撮像準備動作を指示する。そして、CPU104は、撮像指示部110の全押し状態を撮像状態として認識して、撮像システムを構成する各部に対して撮像動作を指示する。すなわち、撮像指示部110は、ユーザによる手動操作により、撮像準備指示および撮像指示が可能な操作手段である。
撮像設定入力部111は、カメラ本体100における種々のモードの設定や機能の設定に用いることが可能な情報入力手段である。本実施形態では、撮像設定入力部111として、回転ダイヤル、十字キー、決定ボタン、リセットボタンなどを含むが、情報入力に用いる機構はこれに限定されるものではない。なお、撮像設定入力部111を用いて設定可能な代表的なモードおよび機能としては、測光モード、撮影モード、連続撮影機能、後述するフリッカーレス撮影機能、ライブビュー、発光撮影機能に係る種々の設定などがある。なお、撮像設定入力部111を操作することで、これらの機能に係るグラフィカルユーザインターフェース(GUI)や機能アイコンをディスプレイ103に表示される。
なお、測光モードとしては、撮像素子101の画角に対応した画面全体を評価するモードとして、測距点や輝度値に応じた補正を行う評価測光、画面の中心部分の重み付けを他の領域よりも大きくして測光を行う中央重点測光などがある。また、他の測光モードとしては、画面の一部のみに基づいて測光を行うスポット測光、スポットよりも広いが画面の所定領域のみに基づいて測光を行う部分測光などがある。
さらに、ライブビューの表示方式(モード)には、ライブビューの見栄えを考慮して構図確認が可能な通常モードと、被写体を本撮影して記録用の静止画像(記録画像)を得る際の露出をライブビューにおいてシミュレートするシミュレートモードがある。通常モードとシミュレートモードの差異の1つとしては、ユーザが手動入力した露出補正量を反映してライブビューを行うか否かという点がある。通常モードでは、露出補正量は反映しないが、シミュレートモードでは、ユーザの意図を優先して露出補正量をライブビューに反映する。
被写体輝度判定部107は、信号処理部106から出力された画像信号に基づいて、被写体の明るさ(輝度値)を判定(検出)する輝度検出手段である。具体的に、被写体輝度判定部107は、取得した画像信号に対応する一画面を複数のブロックに分割し、各ブロックの平均輝度値を算出する。そして、各ブロックの平均輝度値を積分して代表輝度値を取得する。以降の説明では、この代表輝度値を被写体の輝度値(測光値)とし、露出制御などの種々の処理および制御にこの輝度値を用いる。なお、輝度値の検出方法はこれに限定されるものではなく、輝度値の算出に係る種々の方法を採用可能である。CPU104は、被写体輝度判定部107により検出された輝度値と撮影モード選択部109により選択された撮影モードなどに基づき、種々の露出制御値(シャッター速度、絞り値、ISO感度など)の露出制御量を演算する。
焦点距離判定部108は、信号処理部106から出力された画像信号に基づいて、撮影レンズ200に含まれるフォーカスレンズのレンズ位置が合焦状態であるか否かを判定するための情報を演算する部位である。演算した情報に基づき現在のレンズ位置が非合焦状態であれば、CPU104は、LPU203を通して撮影レンズ200を制御する。なお、フォーカスレンズの位置は、合焦状態に依らず、ユーザの操作入力に応じてCPU104の制御によって調整可能である。
ストロボ制御部113は、CPU104による輝度値に基づく発光判定により、被写体への照明が必要であると判定された場合、または、ユーザの手動操作に基づいて、発光手段の発光制御を行う。なお、本実施形態における発光手段としては、カメラ本体100に内蔵された内蔵ストロボ114、または、不図示の接続部を介してカメラ本体100に着脱可能な外部ストロボ300が該当する。
外部ストロボ300は、カメラ本体100に着脱可能な外部発光装置であって、その内部に、外部ストロボ300の動作を制御するための外部ストロボ制御部(SPU)301を備える。SPU301は、外部ストロボ300の発光制御、および、カメラ本体100側との通信を制御する制御手段である。
(フリッカー検出・フリッカーレス撮影機能)
以下、カメラ本体100におけるライブビュー時のフリッカー検出動作について、図3を参照して説明する。図3は、本発明の第1実施形態に係るライブビュー時のフリッカー検出を実行する撮影処理に関するフローチャートである。なお、以降の説明は、フリッカーレス撮影機能が事前にオンされている状態で、カメラ本体100の電源スイッチ(不図示)がオンされたことに応じて、ライブビューが開始される場合を例に挙げて説明する。
カメラ本体100の電源スイッチがオンされると、ステップS101でCPU104は、撮像素子101を用いて画像を取得し、当該画像に基づいて測光動作を行う。この測光動作(初回測光)は、ライブビューやフリッカー検出に係る動作を開始する前に、被写体を撮像する際の露出条件(露光時間、絞り値、ISO感度)を適切にするための測光動作である。
次に、ステップS102でCPU104は、フリッカー検出動作を実行する。以下、本実施形態に係るフリッカー検出動作について図4を参照して説明する。図4は、本発明の第1実施形態に係るフリッカー検出用の画像信号に係る電荷の蓄積タイミングおよび読み出しタイミングを示す図であり、600fps、約1,667ms周期で蓄積・読み出しを連続して12回行う。
この600fpsは、予め想定されるフリッカーの光量変化周期(100Hzと120Hz)の最小公倍数と等しい値となっている。また、600fpsで12回蓄積を行うことで、全体として20msの期間で蓄積を行うことになり、商用電源周波数が50Hz、60Hzのどちらであっても、フリッカー光源の光量変化が2周期含まれることになる。この12回の蓄積は全て同じ露出条件で実行され、その露出条件は先のステップS101の測光動作の結果に基づいて決定される。なお、600fpsの蓄積および読み出しは、撮像素子101の全画素を用いる構成ではなく、いわゆる画素加算読み出しや間引き読み出しをすることによってフレームレートを600fps(1,667ms周期)に調整する構成であってもよい。なお、600fps駆動時の露出を決める際に基準とする輝度値は、フリッカー検出動作に用いる撮像素子101の領域から出力された値を使うのが好ましい。
図4(a)は、商用電源50Hz時のフリッカー(フリッカー点灯周期が100Hz)が存在した場合の蓄積制御と画像信号の出力の推移を例示的に説明する図である。図4(a)に示したように、n回目の蓄積を「蓄積n」、蓄積nの読み出しを「読み出しn」、読み出しnの結果から得られる画像信号の出力(測光値)を「AE(n)」と記述する。本実施形態では一連のフリッカー検出動作に計12回の蓄積を行うので、AE(1)〜AE(12)の出力が得られることになる。また、各出力の取得時間に関しては、蓄積は有限の時間で行われるため、蓄積期間中の中央値で代表させる。
これらAE(1)〜AE(12)からフリッカーの光量変化周期(周波数)の判定で使用する評価値を算出する。フリッカーの光量変化周期判定に使用する評価値を、本実施形態では次の(1)式にて定義することとする。
SADとはSum of Absolute Differenceの略であり、パターンマッチングの分野などで使われる、類似度を表す指標である。mは、12回の蓄積を行ったうちのn回目の出力AE(n)に対し、何回先の出力との類似度を計算するか、を意味する数値であるから、SAD(m)とは、(1.667×m)ms経過後の出力との類似度を算出する式である。(1)式から分かるように、類似度が高いほど、SAD(m)の値は小さくなる。
例えば、100Hzフリッカー光源下では、フリッカーの光量変化周期は約10msであり、フリッカーの検出周期1.667msとの関係性は10÷1.667≒6である。したがって、図4(a)に示すように、蓄積のタイミングによらず、6回周期で同じ出力が得られ、AE(n)≒AE(n+6)の関係となる。この性質より、100Hzフリッカー光源下でSAD(6)を計算すると、SAD(6)≒0となる。更に、100Hzフリッカーの存在を検出するために、追加でSAD(3)を計算する。SAD(3)は、1.667×3=5ms経過後の出力との類似度を計算した値となる。100Hzフリッカー光源下では、5msずれたタイミングの測光値は逆相の関係となるため、SAD(3)はSAD(6)に対して非常に大きな値となる。つまり、SAD(3)が大きく、SAD(6)が小さくなる場合は、100Hzの光量変化周期に対応するフリッカーが発生し得る(存在し得る)と考えられる。
図4(b)は、商用電源60Hz時のフリッカー(フリッカー点灯周期が120Hz)が存在した場合の蓄積制御と画像信号の出力の推移を例示的に説明する図である。フリッカーの光量変化周期が100Hzのときと同様に、商用電源60Hz時のフリッカー(フリッカー点灯周期は120Hz)では、SAD(5)とSAD(3)を計算する。120Hzのフリッカー光源下では、フリッカーの光量変化周期は約8.333msであるため、AE(n)≒AE(n+5)となり、SAD(5)≒0となる。また、120Hzのフリッカーでは、逆相の関係になるのは4.16ms経過後であり、4.16ms経過後波形との類似度を判定するのが理想的である。しかし、4.16msはフレーム周期1.667msの整数倍ではないため、これに比較的近い値として5ms経過後波形との類似度を示すSAD(3)の値で代用する。すなわち、120Hzフリッカー光源下でも、SAD(3)は逆相に近い間隔での測光値変化の類似度を示すため、SAD(3)はSAD(5)に対して非常に大きな値となる。
以上よりSAD(6)、SAD(5)、SAD(3)を算出し、これらの評価値を用いて最終的なフリッカーの光量変化周期判定を実行する。図5は、本発明の第1実施形態に係るフリッカーの光量変化周期の判定方法を例示的に説明する図である。図5(a)は、光量変化周期が100Hzのフリッカーの判定に用いるデータ、図5(b)は、120Hzの光量変化周期のフリッカーの判定に用いるデータ、図5(c)は、フリッカーの発生有無および光量変化周期の検出に用いるデータを示している。
前述したように、100Hzフリッカー光源下では、SAD(3)はSAD(6)に対して非常に大きな値となる。よって、横軸にSAD(3)、縦軸にSAD(6)を持つ図5(a)に示すような平面を考えると、100Hzフリッカー光源下では、この平面の相対的に右下の領域にプロットが得られることになる。すなわち、図5(a)に示すような領域分割で100Hzフリッカーと判定する領域と、100Hzフリッカーではないと判定する領域を設定し、この領域に対するプロットの位置から、精度良く100Hzフリッカーを判定できる。
同様に横軸にSAD(3)、縦軸にSAD(5)を持つ図5(b)に示す平面の領域分割により、120Hzフリッカーであるかを判定することができる。なお、図5(a)、(b)に示した領域分割線はあくまで一例であり、当該分割線の傾きや屈曲点は、この限りではない。
以上説明した各光量変化周期に係るフリッカーの発生有無の判定結果を統合して、最終的なフリッカー検出を行う。本実施形態では、図5(c)に示す対応表を用いて、フリッカーの発生有無および光量変化周期の検出に係る、最終的なフリッカー検出が行われる。なお、フリッカーが存在していない場合(図5(c)で「DC」と示す)は、12回の蓄積による出力が時間的に大きく変化しない。したがって、各出力を比較しても、AE(1)≒AE(2)≒AE(3)≒・・・・・≒AE(12)となり、これにより各評価値SAD(6)≒SAD(5)≒SAD(3)≒0となる。この場合、図5(a)、(b)の両平面の原点付近にプロットが得られるため、100Hzフリッカーおよび120Hzフリッカーが存在しない(発生していない)と判定されるため、図5(c)の表の右下のボックスの「DC」に該当する。
また、図5(c)の表の左上のボックスは、100Hzのフリッカーが発生し、かつ、120Hzのフリッカーが発生している、と判定されている状態である。通常であればこのような判定結果が得られることはないが、例えば、被写体の移動やパンニング動作などにより、12回の蓄積中に被写体が変化する場合などは、この限りではない。この場合は、フリッカー検出結果がエラーであるため、フリッカーが存在していない(検出されていない)と判定する。以上が、ステップS102におけるフリッカー検出動作である。
図3に戻り、ステップS102の処理で100Hzフリッカーを検出した場合、ステップS103の処理に進む。ステップS103でCPU104は、フリッカーが検出されたことをユーザに報知するために、ディスプレイ103に「フリッカーを検出しました」という表示を行う。このフリッカーが検出されたことを報知するための表示は、ライブビュー画像に重畳して表示する構成であってもよいし、ライブビュー表示を一時的に停止して表示する構成であってもよい。
なお、ユーザへの報知方法はこれに限定されるものではなく、フリッカーが検出されたことを示すことができれば、どのような形態および形式を採用してもよい。例えば、フリッカーが検出されたことを示す機能アイコン等をディスプレイ103におけるGUI上に表示させる構成であってもよいし、表示の他にスピーカー(不図示)を用いた発音によりフリッカーが検出されたことを報知してもよい。また、フリッカーが検出されたことを示すだけでなく、検出されたフリッカーの光量変化周期を同時に報知する構成であってもよい。
次に、ステップS104でCPU104は、撮像素子101の蓄積時間を100Hzのフリッカーの光量変化周期(10ms)の整数倍数に設定し、ライブビューを行う。なお、CPU104は、ライブビュー中もライブビュー用の画像に基づいて周期的に被写体の測光動作を行い、この測光結果に基づいて露出制御を行う。
ライブビューを中断する要素としては、ユーザの要求によるフリッカー検出操作、電源オフ操作、被写体の撮影操作の3つがある。以下、これらの要素について順に説明する。
ステップS105でCPU104は、ユーザの要求によるフリッカー検出操作がされたか否かを判定する。フリッカー検出操作は、ディスプレイ103に表示されたフリッカー検出用のアイコンをユーザがタッチ操作することで実行される。ユーザの要求によりフリッカー検出操作が行われたと判定された場合はステップS102に戻り、フリッカー検出動作を繰り返す。この際、撮像素子101のライブビュー用の駆動からフリッカー検出用の駆動(600fps駆動)に切り替わり、この600fps駆動の露出条件は、直前のライブビュー画像に基づく測光結果から設定される。
なお、前述したように、フリッカー検出に用いる画像は、画素加算または間引き読み出し等を行うため、撮像素子101をライブビュー用からフリッカー検出用の駆動に切り替えると、一時的に解像度の低い画像が表示されてしまう虞がある。そこで、フリッカー検出用の600fps駆動により得られた画像はディスプレイ103で表示せず(ライブビューに用いず)、その間は、直前に得られたライブビュー用の画像を継続してディスプレイ103に表示する(この状態をフレームストップと称す)。
フリッカー検出用の600fps駆動は計12回の蓄積期間のみだけ行えばよく、仮に、フリッカー検出動作の完了迄含めても30ms程度の短い期間で終了する。したがって、ユーザの発意によるフリッカー検出操作を行ったとしても、該操作の後にライブビューが30ms程度フレームストップするだけで、ユーザに与える違和感を最小限に抑制しつつ、ユーザは容易にフリッカーの検出結果を知ることができる。
ステップS105の処理がNOであれば、次に、ステップS106でCPU104は、ユーザによる電源オフ操作がされたか否かを判定する。ステップS106の判定により電源オフ操作がされている場合はステップS122へ進み、ライブビューを中断して、カメラ本体100の電源をオフする。
ステップS106の判定がNOであれば、次に、ステップS107でCPU104は、ユーザによる撮影操作がされたか否かを判定する。ステップS107の判定により撮影操作がされている場合は、ライブビューを中断してステップS118以降の処理に進み、フリッカー検出およびフリッカーレス撮影を実行する。なお、本実施形態では、ステップS107の判定として、例えば、ユーザが撮像指示部110を操作して撮像指示がされたか否かを判定する構成であるが、これに限定されるものではない。例えば、ユーザが撮像指示部110を操作して撮像準備指示がされたか否かを判定する構成であってもよい。すなわち、ステップS107における撮影操作がされたか否かの判定は、撮像準備指示および撮像指示の何れか一方がユーザにより指示されたか否かを判定する処理と同義である。撮影操作に基づくフリッカー検出およびフリッカーレス撮影の詳細については、後述する。
次に、ステップS102の処理で120Hzフリッカーを検出した場合(ステップS108〜S112)の処理について説明する。120Hzフリッカーが検出された場合の処理は、前述した100Hzフリッカーが検出された場合の処理と基本的に同一である。すなわち、ステップS108〜S112の処理は、前述したステップS103〜S107の処理と略同一である。ただし、ステップS109におけるライブビュー用の画像を取得する際の撮像素子101の蓄積時間は、120Hzフリッカーの影響を低減するために、120Hzのフリッカーの光量変化周期(約8.33ms)の整数倍数に設定される。
次に、ステップS102の処理でフリッカーが検出されなかった場合(ステップS103〜S117)の処理について説明する。フリッカーが検出された場合の処理も、前述した100Hzフリッカーまたは120Hzフリッカーが検出された場合の処理と基本的に同一である。ただし、この場合、フリッカーが検出されていないため、ステップS113でCPU104は、ディスプレイ103に「フリッカーを検出しませんでした」と表示する。また、ステップS114の処理でCPU104は、フリッカーの光量変化周期に合わせて撮像素子101の蓄積時間を制御する必要がないため、測光結果に基づく最適な蓄積時間となるように露出制御を行う。
以上説明したように、ステップS103〜S117の処理では、ライブビュー中にユーザによるフリッカー検出操作が行われた場合、フリッカー検出動作が実行され、その検出結果に関するユーザへの報知が行われる。さらに、ライブビュー用の画像を取得するための露出制御として、フリッカーの検出結果に応じてライブビュー時の蓄積時間が制御され、ライブビューにおけるフリッカーの影響を効果的に低減することができる。
次に、ステップS118でCPU104は、被写体の本撮影の直前にフリッカー検出動作、および、フリッカーの光量変化のピークタイミングを演算する処理を実行する。ユーザの要求により撮影操作がされた(撮像指示がされた)ことに応じてフリッカーの検出動作を実行するのは以下の理由による。前述したように、本実施形態では、カメラ本体100の電源がオンされた直後(すなわちライブビューの開始直前)と、ユーザによるフリッカー検出操作(フリッカー検出指示)がされた場合にフリッカーの検出動作を行う。しかしながら、これらのタイミングのみフリッカーの検出動作を行う構成だと、適切にフリッカーの検出を行えずにフリッカーレス撮影機能が実行される場合が起こりうる。
例えば、カメラ本体100の電源がオンされた際に、撮影レンズ200にレンズキャップなどが装着されたままであると、ライブビュー開始前に正確なフリッカー検出はできない。そして、この状態で、ユーザによるフリッカー検出操作が一度もされることなく、被写体の本撮影(記録画像の取得動作)が指示された場合、フリッカー光源下であってもフリッカーが発生していない場合と同様の条件で撮影が行われてしまう。また、例えば、ユーザによるフリッカー検出操作が行われたとしても、当該フリッカー検出操作前後で撮影環境が変化した場合(例えば、屋内と屋外との間を移動するなど)は、フリッカーの検出結果と実際の撮影環境に差異が生じる虞がある。以上説明した何れの場合も、本撮影により得られる画像にフリッカーの影響が生じる、あるいは、フリッカー光源下でないにも関わらず、レリーズタイムラグ等が増加する虞がある。
そこで、本実施形態では、本撮影の直前にフリッカーの検出動作を行う。なお、ステップS118におけるフリッカーの検出動作は、前述したS102と同一であるので説明は省略する。また、ステップS118では、フリッカーの検出動作に合わせてフリッカーのピークタイミングの演算を行う。以下、当該演算の詳細について説明する。
図6は、本発明の実施形態に係るフリッカーのピークタイミングを算出する方法の一例を説明する図である。フリッカー検出用の出力AE(1)〜AE(12)の中で最大の出力を得た点をP2(t(m),AE(m))とし、その1つ前の測光結果の点をP1(t(m−1),AE(m−1))、1つ後の測光結果の点をP3(t(m+1),AE(m+1))とする。まず、AE(m−1)とAE(m+1)の出力のうち小さい方を取る点(図6ではP1)と点P2の2点を通る直線をL1=at+bとして求める。更にAE1とAE3の出力のうち大きい方を取る点(図6ではP3)を通り、傾き−aの直線をL2として求める。
求めたL1とL2の交点を計算すると、フリッカーピークタイミングt_peakを近似的に求めることができる。なお、ステップS118の処理におけるフリッカー検出結果が100Hzフリッカーであった場合は、フリッカーピークは、t_peak+m×10(単位:ms、mは任意の自然数)で示す10ms毎に生じることになる。
図2に戻り、ステップS119でCPU104は、ユーザによる撮影操作がされた後、種々の撮影準備が完了した状態で到達した最初のt_peak+m×10のタイミングで撮像素子101の本露光を行う。なお、本実施形態では、本撮影で取得される画像の上下方向に明るさのムラが生じないように、フリッカーのピークタイミングを基準に撮像素子101の露光期間を制御する。
同様に、ステップS118の処理で120Hzフリッカーが検出された場合は、フリッカーピークは、t_peak+m×8.33(単位:ms、mは任意の自然数)で示す約8.33ms毎に生じる。したがって、ステップS120でCPU104は、ステップS119と同様の方法で、フリッカーのピークタイミングt_peak+m×8.33に同期して本露光を行う。以上説明したステップS119およびステップS120の処理をフリッカーレス撮影機能と称す。フリッカーレス撮影機能の実行により記録画像を得られた後は、それぞれ、ライブビューを再開するために、ステップS104、S109の処理に戻る。なお、ステップS118の処理でフリッカーが検出されない(DCと判定された)場合は、露光期間のタイミングは調整せずに本露光を行い、ステップS114の処理に戻る。
ここで、前述した説明では、フリッカーの光量変化のピーク(光量が最大となる)タイミングを検出し、検出したピークタイミングを基準に撮像素子101の露光期間を制御する構成について言及したが、これに限定されるものではない。本実施形態に係るカメラ本体100におけるフリッカーレス撮影機能としては、フリッカーによる変化する被写体の光量が最小となるタイミング(ボトムタイミング)に合わせて本露光を行う構成であってもよい。
以上説明したように、本実施形態のカメラ本体100は、ユーザによるフリッカー検出操作が行われた際だけでなく、記録画像を得るための本撮影の直前にフリッカー検出動作を行う。そして、フリッカーが検出された場合は、検出されたフリッカーの光量変化の特徴点に合わせたフリッカーレス撮影機能を実行しつつ、撮影後のライブビューにおいてもフリッカーの影響を低減できる蓄積時間を適切に設定することができる。
なお、前述したステップS105、S110、S115におけるユーザのフリッカー検出操作は、フリッカーの検出を直接的に指示する操作であったが、例えば、ディスプレイ103の表示内容の切り替え操作(指示)に連動してなされる構成であってもよい。
(ライブビュー中のフリッカーレス撮影機能)
以下、本実施形態に係るライブビュー中にフリッカーレス撮影を行う場合の、各動作が実行されるタイミングについて具体的に説明する。なお、基本的な動作は前述した図3に図示するフローに従った処理に基づく。図7は、本発明の第1実施形態に係るライブビュー中のフリッカーレス撮影動作に関するタイミングチャートの一例である。なお、図7は、カメラ本体100の電源がオンされたことに応じてライブビューが開始される場合を想定している。また、図7に示す各動作は、CPU104の指示によりカメラ本体100およびカメラ本体100に接続された各機器が動作することで実行されるため、以下の説明では、各動作を実行する主体についての説明は省略する。
図7に図示するように、カメラ本体100の電源がオンされてカメラ本体100の各部が起動すると、タイミングT1でスキャン型の測光方法(スキャン測光)を実行する。なお、スキャン測光は、予め定められた複数の露出に合わせた複数の画像(信号)に基づいて測光を行うことで最適な露出を決定する方法である。具体的に、本実施形態では、撮像素子101を用いて予め決められた露出で得られた複数の画像を測光(輝度値を算出)し、それぞれの輝度値について予め決められた目標輝度値との差分値を求める。この差分値のうち、絶対値が一番小さい組合せに基づいて、ライブビュー用の画像取得時に用いる最適な露出(適正露出)を決定する。
その後、タイミングT2でフリッカー検出動作を実行する。その後、タイミングT3でディスプレイ103にてライブビューの表示を行う。この際、ライブビュー表示に用いる画像を取得する際の露出は、先に実行されたスキャン測光の結果とフリッカー検出結果に基づいて露出制御を行うことで、フリッカーの影響が低減されたライブビュー表示が行われる。
その後、ライブビュー中に撮像指示部110を操作したことによる撮像指示を検出したことに応じて、現在のライブビュー表示を中断して、タイミングT4で再びフリッカー検出動作を実行する。そして、その後、タイミングT5で、タイミングT4で実行されたフリッカー検出の結果に基づいて、タイミングT5でフリッカーレス撮影(本撮影)が行われる。なお、フリッカー検出動作、フリッカーレス撮影の方法は、前述した通りなので説明は省略するが、タイミングT4で実行されるフリッカー検出動作では、(フリッカーの発生有無に合わせて)フリッカーの光量変化周期及びピークタイミングが検出される。
ここで、タイミングT4におけるフリッカー検出動作は、カメラ本体100において予めフリッカーレス撮影機能がオンされている場合に実行される。したがって、予めフリッカーレス撮影機能がオフされている場合は、タイミングT4におけるフリッカー検出動作を省略して静止画を取得するための被写体撮像(本撮影)を行う。
本撮影が完了すると、タイミングT6で再びディスプレイ103におけるライブビュー表示を行う。なお、タイミングT6におけるライブビュー表示では、直前のフリッカー検出結果に基づいて露出制御を行うことで、フリッカーの影響が低減されたライブビュー表示が行われる。すなわち、本実施形態のカメラ本体100では、ライブビュー表示用の露出制御は直前に行われたフリッカー検出動作の結果に基づいて更新される。換言すると、本実施形態におけるカメラ本体100は、ライブビュー表示中は、新たにフリッカー検出動作が実行される毎に、フリッカーの影響を低減するようにライブビュー表示用の露出を決定する。
また、タイミングT7〜T8は、ライブビュー表示中に撮像設定入力部111が操作され各種の設定項目を表示するメニュー表示の表示指示がされた場合を例示している。この場合、ユーザによるメニュー表示の表示指示に応じてライブビュー表示を停止(中断)し、タイミングT7で、ユーザの操作に応じた任意のメニュー表示(設定画面)がディスプレイ103に表示される。そして、ユーザによってメニュー表示の停止が指示されたことに応じて、タイミングT8で再度ライブビュー表示を行う。
ここで、ライブビューのシミュレートモードにおけるフリッカー検出動作について説明する。前述したように、本実施形態に係るフリッカー検出動作では、フリッカーの発生有無、光量変化周期、そしてピークタイミングを検出するため、当該検出に用いる画像内に飽和領域や黒つぶれ領域があると、フリッカー検出動作の検出精度が低下する。
この飽和領域や黒つぶれ領域が発生しやすい状況としては、ユーザの手動操作によって露出条件が変更されている場合があり、この場合は、先に求めた適正露出に対して露出補正がされている状態と同義である。そこで、ライブビューのモードがシミュレートモードの場合は、露出制御の基準とする制御値(輝度値)にユーザが設定した露出補正を反映させることなくフリッカー検出動作を行う。換言すると、ライブビューがシミュレートモードであっても、ユーザが設定した露出に依らずフリッカー検出動作用の露出制御を行う。
なお、フリッカー検出動作に用いる輝度値の演算は、測光モードに応じて測光結果が変化することを抑制するために、予め設定されている測光モードに依らずに輝度値が算出される。本実施形態では、画像全体を平均して測光した平均輝度値を用いるが、フリッカー検出動作に用いる領域の出力に基づく平均輝度値を用いる構成であってもよい。
また、前述したように、飽和領域および黒つぶれ領域の発生を抑制するために、露出補正を反映せずにフリッカー検出動作を行うのがよい。しかしながら、フリッカー検出動作における、特にピータイミングを精度よく検出するには、飽和領域をできるだけ低減するのが好ましい。そこで、本実施形態に係るカメラ本体100としては、輝度に関わるヒストグラムなどを参照して飽和領域を検出し、飽和領域が検出された場合は、この飽和の影響を低減するようにフリッカー検出動作における露出を設定してもよい。
以上の構成をまとめると、ライブビュー表示用の露出制御に用いる輝度値は、予め設定された測光モードに従って取得される。この際、ライブビューのモードがシミュレートモードであれば、ユーザにより設定された露出条件に合わせてライブビュー用の露出制御を実行する(具体的には、露出補正に対応する分だけ、露出制御に用いる輝度値をシフトする)。これに対して、フリッカー検出動作においては、ライブビューのモードに依らず、また、予め設定されている測光モードにもよらずに所定の方法で輝度値を算出し、当該輝度値に基づいてフリッカー検出用の画像を取得する際の露出制御を行う。なお、フリッカー検出動作用の輝度値の算出時に、輝度のヒストグラムなどに基づいて飽和領域や黒潰れ領域を検出し、これらの領域が検出された場合は、飽和や黒潰れが低減されるように輝度値を補正する。
以下、図7に図示したタイミングチャートに基づく各処理に関するフローについて図8、9を参照して説明する。なお、図8、9に示すフローチャートにおいては、カメラ本体100において予めフリッカーレス撮影機能がオンされており、カメラ本体100の電源がオンされたことに応じてライブビューが開始される場合を想定している。図8は、本発明の第1実施形態に係るライブビュー表示中のフリッカー検出動作に係る各処理に関するフローチャートである。
ライブビュー開始指示(カメラ本体100の電源オン、その他ライブビュー開始を指示する操作)がされたことに応じてライブビュー表示処理が開始されると、ステップS201でCPU104は、スキャン測光を実行し適正露出となる露出条件を算出する。
次に、ステップS202でCPU104は、フリッカー検出動作を実行する。そして、ステップS203でCPU104は、ステップS202のフリッカー検出結果に基づく露出制御を実行して、フリッカーの影響を低減するような露出条件で、ディスプレイ103でのライブビュー表示を開始する。
次に、ステップS204でCPU104は、ユーザによって、ライブビューの停止(中断)が必要な操作(LV停止操作)がされたか否かを判定する。そして、LV停止操作がされていると判定された場合、ステップS205でCPU104は、現在実行されているライブビュー表示を停止(中断)させる。LV停止操作がされていないと判定された場合は、ステップS204の処理を繰り返す。
なお、LV停止操作としては、被写体の撮像指示、メニュー表示指示、画像の再生指示などがある。ここで、前述した、フリッカー検出操作もLV停止操作に含まれるが、フリッカー検出操作が指示された場合はライブビューをフレームストップされる。すなわち、本実施形態におけるLV停止操作としては、新たにライブビュー用の画像の取得およびディスプレイ103で表示中のライブビュー画像の更新の何れかを停止する操作が該当する。
以降の説明は、ステップS204で判定されたLV停止操作が被写体の撮像指示である場合を仮定して説明する。図9は、本発明の第1実施形態に係るライブビュー表示中の撮影処理に関するフローチャートである。ライブビュー表示が停止された後、ステップS301でCPU104は、フリッカー検出動作を実行して、フリッカーの発生有無と光量変化周期、そしてフリッカーのピークタイミングを検出する。
次に、ステップS302でCPU104は、ステップS301のフリッカー検出結果と先に得られた適正露出に関する情報に基づき、本撮影を実行して静止画像(記録画像)を取得する。なお、S301でフリッカーが検出されている場合は、フリッカーのピークタイミングに合わせて撮像(フリッカーレス撮影)するが、フリッカーが検出されてない場合は、フリッカーのピークタイミングに依らずに撮像する。
次に、ステップS303でCPU104は、ユーザによる撮像指示が継続されており連続撮影(連写)が指示されているかを判定する。そして、ステップS303で連写が指示されていると判定された場合はステップS301に戻り再びフリッカー検出を行う。ステップS303で連写が指示されていないと判定された場合は撮影処理を終了する。この場合は、図8のステップS203に戻りライブビュー表示を再開する。
なお、連写コマ間におけるフリッカー検出動作は、フリッカーの光量変化周期を検出することなく、ピークタイミングのみを検出する構成であれば、連写のコマ速(連続する本撮影の間隔)を短縮することができる。これは、連写中などの短い期間においてはフリッカーの光量変化周期が変化する確率が低いためである。対して、フリッカーのピークタイミングは、商用電源周波数の理論値からの微小なズレにより、光量のピークは徐々に変化するため、被写体を撮像するごとに検出するのが好ましい。フリッカーのピークタイミングの検出は、フリッカーの光量変化の1周期に相当する複数の画像に基づいて検出できるため、撮像素子101を600fpsで駆動し、計6回の電荷蓄積と読み出しを繰り返して当該複数の画像を得ればよい。なお、連写時のコマ速低下を抑制することを優先する場合は、連写における撮像ごとにフリッカー検出動作を行わない構成であってもよい。
なお、ステップS204で判定したLV停止操作がメニュー表示や画像の再生指示であれば、メニュー表示および画像再生の継続が指示されているか否かを判断する処理を設け、継続しない場合にステップS203の処理に戻ればよい。また、ステップS204で判定したLV停止操作がフリッカー検出操作であれば、ユーザによるフリッカー検出操作の指示が継続しているか否かを判定する処理を設け、継続してない場合にステップS203の処理に戻ればよい。何れの場合も、最新のフリッカー検出結果に基づいて、ライブビュー表示用の露出制御を実行する構成であればよい。
なお、本実施形態のカメラ本体100は、フリッカーレス撮影機能のオン・オフに依らずに、フリッカー検出動作を実行可能である。具体的に、本実施形態では、ライブビュー表示を開始する際のフリッカー検出動作(S102)については、フリッカーレス撮影機能がオフされていても実行される。これは、ライブビュー開始時にフリッカーの影響によりライブビュー表示の品位が低下することを抑制するためである。また、ユーザの要求によるフリッカー検出動作(S105、S110、S115)については、フリッカーレス撮影機能がオフされていても実行可能である。これは、フリッカーの有無を判断できない状態で撮影が行われることを低減するためであって、この構成により、撮影機能を変更することなく、ユーザが簡単にフリッカーの有無を判断できる。対して、本実施形態では、ユーザによる撮影操作に応じたフリッカー検出動作(S118)は、レリーズタイムラグなどの増加を抑制するため、フリッカーレス撮影機能がオフの場合は実行されない。
(第2実施形態)
以下、図10〜13を参照して、本発明の第2実施形態に係る撮像システムについて説明する。なお、カメラ本体100を中心とする撮像システムの基本的な構成については、前述した第1実施形態と略同一なので、説明は省略する。前述した第1実施形態に対して本実施形態は、フリッカー検出動作に係る露出制御方法が異なる。
図10は、本発明の第2実施形態に係る、フリッカーレス撮影機能がオンされている場合のフリッカーレス撮影処理について説明するフローチャートである。なお、図10は、ライブビュー表示中に本撮影を行う場合を想定した各種処理に関するフローチャートである。カメラ本体100の電源スイッチがオンされると、ステップS401でCPU104は、撮像素子101を用いて画像を取得し、当該画像に基づいて測光動作を行うことで測光値BvAveを算出する。
図11は、フリッカーが存在する場合に、フリッカーの光量変化周期に合わせて測光値(輝度値)を算出する方法を例示的に説明する図である。フリッカーの影響により画像に明るさのムラが生じることを抑制するため、ライブビュー画像を取得する際は、撮像素子101の蓄積時間をフリッカーの光量変化の1周期より長くする。この場合に得られる測光値は、図11に図示するように、フリッカーによる光量の変化が平均化された平均測光値BvAveとなる。
次に、ステップS402でCPU104は、ユーザから要求により、撮像指示されているか否かを判定する。撮像指示が検出されていない場合は、ステップS401の処理に戻し、撮像指示がされている場合はステップS403の処理に進む。
次に、ステップS403でCPU104は、前述した第1実施形態と同様の方法でフリッカー検出動作を実行し、フリッカーが検出された場合は、ステップS404でフリッカーの光量変化周期と撮像時の露光時間に応じて露出補正量Compを算出する。ここで、図12を参照して、フリッカーが検出された際に測光値を補正する必要性について説明する。図12は、フリッカーの光量変化周期と露光時間との関係性を説明する図である。
前述したように、フリッカーレス撮影時は、フリッカーのピークタイミングを基準として撮像素子101を用いた露光期間を設定する。ここで、露光時間が短い場合(すなわちシャッター速度が短い短秒撮影時)は、フリッカーのピークタイミング近傍の光量が平均化される。この場合、撮影時の露光時間に対応する輝度値BvStilは、平均測光値BvAveよりも露出がオーバーになるため、平均測光値BvAveに合わせて設定された露出条件で被写体を撮像しても、画像の明るさが不自然になってしまう。
本実施形態では、フリッカーレス撮影により得られる画像の明るさが不自然になることを抑制するため、撮像時の露光時間に合わせて測光値を露出補正量Compにより補正する。なお、露光時間が長秒になるほど、撮影時の露光時間に対応する輝度値と平均測光値BvAveとの差分が小さくなる。そのため、本実施形態では、露出補正量Compが可変であって、露光時間に応じて最適な値となるような構成を採用する。図13は、本発明の第2実施形態に係る露出補正量の算出方法を例示的に説明する図である。
ステップS405でCPU104は、ステップS401で取得した測光値BvAveに基づき、本撮影時の露出条件として、シャッター速度(露光時間)Tv、絞り値Av、ISO感度をそれぞれ算出する。そして、これらの露出条件を算出する際に用いる測光値Bvは、以下の式(2)に基づいて算出する。
Bv=BvAve+Comp(X)・・・(2)
なお、(X)は、図13に図示するデータに基づき、シャッター速度(露光時間)Tvの値に応じて決定される。次に、ステップS406でCPU104は、後の処理で参照するため、露出補正量Comp(X)を別名のLastCompとして記録部112の所定領域に記憶する。そして、ステップS407でCPU104は、ステップS404で算出された露出補正量に基づく露出条件に基づいて本撮影を行い、静止画(記録画像)を取得する。なお、フリッカーが検出されている場合は、フリッカーのピークタイミングに合わせて(同期して)被写体を撮像する(フリッカーレス撮影)。また、フリッカーが検出されていない場合は、フリッカーのピークタイミングによらず被写体を撮像する。
次に、ステップS408でCPU104は、ユーザからの撮像指示(撮影要求)が継続しているか否かを判定し、撮像指示が継続していると判定された場合はステップS409の処理に進む。撮像指示が継続していないと判定された場合は、一連の撮影処理を終了する。
次に、ステップS409でCPU104は、先の本撮影で得られた記録画像(静止画)に基づいて測光値を算出し、測光値Bv1として記憶する。そして、ステップS410でCPU104は、フリッカー検出動作を実行する。なお、ステップS410におけるフリッカー検出動作においては、第1実施形態で前述したように、ピークタイミングの検出だけ行う構成であってもよい。
ステップS410の処理でフリッカー検出された場合、ステップS411でCPU104は、露出補正量Compを算出する。なお、ステップS410の処理でフリッカー検出されていない場合はステップS412の処理に進む。
なお、ステップS411で算出する露出補正量Compは、平均された測光値BvAveに対する露出補正量なので、この露出補正量に基づいて、前述した式(2)と同様に、Bv=Bv1+Comp(X)として算出すると、二重に露出補正がされてしまう。具体的に、測光値Bv1としては、前回の本撮影時に平均測光値BvAveを露出補正量LastCompで補正した状態で得られた画像に基づいて算出されるため、二重に露出補正がされてしまう。
そこで、本実施形態では、前回の本撮影時の露出補正量LastCompの影響を取り除くために、ステップS412の処理において、以下の式(3)に基づき測光値Bvを算出する。
Bv=Bv1−LastComp+Comp(X)・・・(3)
この構成により、ライブビュー表示中のフリッカーレス撮影において連続撮影を実行する場合であっても、連続撮影の2回目以降の撮像時に、露出補正が二重にされることを防止することができる。
以降のステップS413〜S414の処理は、前述したステップS406〜S407の処理と同一なので説明は省略する。そして、ステップS408の処理で、撮像指示が継続している場合は、ステップS409〜S414の処理を繰り返す。なお、図10に図示するフローチャートにおいてフリッカーが検出されていない場合、露出補正量Compおよび前回の露出補正量LastCompは0として各処理を実行すればよい。
以上説明した構成を採用することで、本実施形態のカメラ本体100は、ライブビュー表示中にフリッカーレス撮影を実行する場合に、被写体を撮像することで得られた画像の明るさが不自然になることを、効果的に防止することができる。
(第3実施形態)
以下、図14〜16を参照して、本発明の第3実施形態に係る撮像システムについて説明する。なお、カメラ本体100を中心とする撮像システムの基本的な構成については、前述した第1実施形態と略同一なので、説明は省略する。前述した第1実施形態に対して本実施形態は、絞りの駆動方式が異なるレンズ毎のフリッカー検出動作が異なる。
まず、本実施形態における、レンズ毎の絞り制御である絶対絞り駆動、相対絞り駆動について、説明をする。絶対絞り駆動とは、ある目標の絞り値まで絞りを駆動する場合に、一度、絞りの開口量を開放にしてから、目標の絞り値に対応する開口量まで駆動するように制御することである。これは、絞りの停止精度について、絞りの駆動方向の切り替え時に生じる反転ガタなどの影響により、一度絞りを開放してから目標値まで駆動する方が、安定した絞り駆動の精度を維持することができるためである。
一方、相対絞り駆動とは、ある目標の絞り値まで絞りを駆動する場合に、一度、絞りを開放にする必要がなく、そのまま目標の絞り値に対応する開口量となるまで絞りを駆動するように制御することである。この相対絞り駆動においては、絞りの停止精度に関して、反転ガタを低減する補正データを撮影レンズが予め格納しており、この補正データに基づいて絞り駆動を補正することで、一度絞りを開放にすることなく、安定した絞り精度を維持することができる。なお、補正データの詳細については、公知の技術であればどのような方法で絞り駆動を補正するものであってもよい。
図14は、本発明の第3実施形態に係るライブビュー時のフリッカー検出を実行する撮影処理に関するフローチャートである。なお、図14に示す各処理のうち、前述した第1実施形態における図3に示す撮影処理と同一の処理については説明を省略する。
ステップS501〜S503の処理は、前述した第1実施形態におけるステップS101〜S102、およびステップS104またはS109またはS114の処理同一なので説明は省略する。なお、前述した第1実施形態と同様に、ステップS503の処理は、ステップS502のフリッカー検出処理の結果に基づいて、ライブビュー用の画像を取得する際の露光時間(または蓄積時間)が異なる。なお、ライブビュー表示中は、ライブビュー用の画像に基づいて所定の周期で測光動作が行われ、ライブビュー画像の露出条件が適宜制御される。
次に、ステップS504でCPU104は、ユーザにより(例えば、撮像指示部110などの)撮影操作がされたことにより、撮像指示がされたか否かを判定する。撮像指示がされていないと判定された場合はステップS503の処理に戻る。撮像指示がされていると判定された場合はステップS505の処理に進む。
次に、ステップS505でCPU104は、現在設定されている絞り値を優先したフリッカー検出用の露出制御を実行する。なお、ステップS505の処理は、ステップS503で得たライブビュー用の画像に基づく測光結果、または、後述するステップS519で得る記録画像(静止画)に基づく測光結果に基づき、現在の絞り優先の露出制御を実行される。具体的に、ステップS505では、現在の絞り202の状態(すなわち、現在の絞り値)を優先して、フリッカー検出動作を実行する際の露出条件を算出する。
なお、前述した第1実施形態で説明したように、フリッカー検出動作は、撮像素子101を駆動して、600fps、約1.667ms周期で蓄積・読み出しを連続して(例えば、12回)行う。そして、この連続する蓄積は、全て同じ露出条件で行う。例えば、現在の絞り値が極端に大きい値(すなわち小絞り)である場合、ISO感度を大きくしても、露光時間(蓄積時間)が1.667msでは適正な露出とならない場合がある。この場合、1.667msで蓄積してフリッカー検出には適さない暗い画像が取得されてしまう。あるいは、1.667msよりも長秒で露光して画像を取得しても、この画像から精度よくフリッカー検出を行うことができない。このような場合は、絞り値を変更しないと、フリッカー検出を行うことができないため、現在の絞りを固定した状態でフリッカー検出動作が可能な露出条件を設定することができない。したがって、このような場合は、現在の絞り値から絞り値の変更を伴う露出条件をフリッカー検出用の露出条件として算出する。
次に、ステップS506でCPU104は、ステップS505の演算結果に基づいて、絞り202の現在の絞り値を変更せずに、フリッカー検出動作が可能か否かを判定する。具体的に、ステップS506では、ステップS505の演算結果に基づいて、現在の絞り値を変えずにフリッカー検出動作を精度よく行うことができない場合は、現在絞り値ではフリッカー検出ができない、と判断する。ステップS506において、現在の絞り値でフリッカー検出ができると判断された場合はステップS510に進む。また、現在の絞り値でフリッカー検出ができないと判断された場合はステップS507に進む。
次に、ステップS507でCPU104は、LPU203と通信を行うことで取得した合焦位置やレンズ情報(例えばレンズIDなど)に基づいて、カメラ本体100に装着されている撮影レンズ200が、相対絞り駆動が可能なレンズであるか否かを判定する。撮影レンズ200が相対絞り駆動が可能なレンズと判定されれば、ステップS509の処理に進む。一方、相対絞り駆動が可能なレンズでない(すなわち、絶対絞り駆動を行うレンズ)と判断されれば、ステップS508の処理に進む。なお、撮影レンズにおける相対絞り駆動および絶対絞り駆動に関する詳細な説明は図15、16を参照して後述する。
次に、ステップS508でCPU104は、撮影レンズ200が絶対絞り駆動を行うレンズであるため、絞り202の開口を開放位置まで駆動して、ステップS509の処理に進む。そして、ステップS509でCPU104は、ステップS505で算出した絞り値を目標値として、当該目標値に対応した開口量となるように、絞り駆動部205を用いて絞り202を駆動する。
ステップS510の処理は、前述した第1実施形態におけるステップS118の処理と同一なので説明は省略する。そして、ステップS511でCPU104は、ステップS503で得られたライブビュー画像に基づく測光結果から、本撮影用の露出条件を演算する。次の、ステップS512〜S514の処理は、前述したステップS507〜S509の処理と略同一なので説明は省略する。なお、ステップS512〜S514の処理においては、目標とする絞り値が、ステップS511で演算した本撮影用の絞り値となる。
ステップS515の処理は、前述した第1実施形態におけるステップS119またはS120またはS121の処理と同一なので説明は省略する。なお、フリッカーが検出されている場合のみ、フリッカーのピークタイミングに同期させて本撮影(フリッカーレス撮影)を行い、フリッカーが検出されていなければ、フリッカーのピークタイミングには依らず本撮影を実行する。
次に、ステップS516でCPU104は、ステップS507やS512と同様に、撮影レンズが相対絞り駆動が可能なレンズであるか否かを判定する。これは、撮影レンズが絶対絞り駆動しかできないレンズである場合、次回以降の本撮影時に絞り202を開口位置に駆動する手間を省いてレリーズタイムラグを低減するため、本撮影後に絞り202を開放位置へと駆動させるためである。ステップS517の処理は、前述したステップS509、S513の処理と同一なので説明は省略する。
次に、ステップS518でCPU104は、ユーザによる撮像指示が継続しているか否かを判定する。すなわち、ステップS518では撮影終了か否かを判定する。ステップS518の処理で撮影終了と判定された場合は撮影処理を終了する。一方、ステップS518の処理で撮影終了ではないと判定された場合、ステップS519でCPU104は、ステップS515の本撮影で得られた記録画像(静止画)に基づいて測光処理を行い、ステップS505の処理に戻り以降の処理を繰り返す。
以上に説明した、撮影レンズ200が絶対絞り駆動レンズである場合の撮影処理、および、撮影レンズ200が絶対絞り駆動レンズである場合の撮影処理について、図15、図16に図示するタイミングチャートを参照して説明する。図15は、本発明の第3実施形態に係る絞りの駆動方式が異なるレンズごとのフリッカーレス撮影処理に関するタイミングチャートと絞り状態を例示的に説明した図である。図15(a)は、撮影レンズ200が絶対絞り駆動を行うレンズである場合、図15(b)が、撮影レンズ200が相対絞り駆動を行うレンズである場合の動作をそれぞれ示している。
図15(a)、(b)ともに、カメラ本体100の電源がオンされた時刻Ta0、時刻Tb0から本撮影用の露出演算が完了する時刻Ta1、時刻Tb1までは同様のタイミングで同様の処理を行う。
以下、撮影レンズ200が絶対絞り駆動を行うレンズである場合の動作について説明する。図15(a)では、本撮影用の露出演算が完了する時刻Ta1から、絞り202の開放位置に向けた駆動を開始し、時刻Ta2までに絞り202の目標値まで駆動を完了させる。そして、時刻Ta2〜時刻Ta3まで本撮影の蓄積(露光)を行い、時刻Ta3〜Ta4の間に、直前の蓄積に対応する画像信号の読み出しと並行して、再び絞り202を開放位置へと駆動する。これは、前述したように、次回の撮影のために絞り202を開放状態にする必要があるためである。
ユーザによる撮像指示が継続している場合、時刻Ta5で、絞り202が開放位置となる状態の絞り値(開放絞り値)を優先にしたフリッカー検出用の露出演算を行い、フリッカー検出を行う。なお、本実施形態では、開放絞り値でフリッカー検出動作が可能な場合を例示しているため、このタイミングでの絞り202の駆動動作は発生しない。本撮影用の露出演算が完了した時刻Ta6から、絞り202の駆動を開始し、絞り202の目標値への駆動が完了したら次の本撮影(静止画取得)を行う。以降、撮像指示が継続している間は、これらの動作を繰り返す。
次に、撮影レンズ200が相対絞り駆動を行うレンズである場合の動作について説明する。図15(b)では、本撮影用の露出演算が終わった時刻Tb1から、絞り202の開放位置への駆動をすることなく、時刻Tb2までに本撮影用の絞り値の目標値まで絞り202を駆動する。そして、時刻Tb2〜時刻Tb3まで本撮影の蓄積(露光)を行い、その後、絞り202を駆動することなく、そのままの絞り値で絞り202の駆動を中断する。これは、撮影レンズ200が相対絞り駆動できる場合は、次回の本撮影に合わせて絞り202を開放しておく必要がないためである。
ユーザによる撮像指示が継続している場合、時刻Tb5では、現在の絞り値を優先したフリッカー検出用の露出演算を行い、フリッカー検出を行う。なお、本実施形態では、現在の絞り値のまま継続してフリッカー検出動作が可能な場合を例示しているため、このタイミングで絞り202の駆動動作は発生しない。次に、再び本撮影用の露出演算が終わった時刻Tb6から、絞り202の駆動を開始し、次の本撮影(静止画取得)を行う。以降、撮像指示が継続している間は、これらの動作を繰り返す。
次に、図16は、本発明の第3実施形態に係る絞りの駆動方式が異なるレンズごとのフリッカー検出動作において絞りを駆動する場合のタイミングチャートと絞り状態を例示的に説明した図である。図16(a)は、撮影レンズ200が絶対絞り駆動を行うレンズである場合、図16(b)が、撮影レンズ200が相対絞り駆動を行うレンズである場合の動作をそれぞれ示している。
以下、撮影レンズ200が絶対絞り駆動を行うレンズである場合の動作について図16(a)を参照して説明する。なお、最初の本撮影までの動作は前述した図15(a)と同一なので説明は省略する。図16(a)に図示するように、本撮影を終えた時刻Tc0から開放絞り値を優先したフリッカー検出用の露出演算を行う。ここで、被写体に対して露出条件が明るすぎるため、開放絞り値ではフリッカー検出を行うことができない場合を想定する。
この場合、時刻Tc1から、絞り202を開放位置に向けて駆動し始め、フリッカー検出動作を開始する時刻Tc2までに絞り202の駆動を完了する。そして、時刻Tc2からフリッカー検出動作を行ったのち、時刻Tc3〜Tc4までの間に、再び絞り202を開放位置に向けて駆動する。前述したように、これは、次回の撮影のための絞り駆動動作である。次に、本撮影用の露出演算が完了した時刻Tc5から、絞り202の駆動を開始し、絞り202の駆動が完了したのち次の本撮影(静止画取得)を行う。以降、撮像指示が継続している間は、これらの動作を繰り返す。
以下、撮影レンズ200が相対絞り駆動を行うレンズである場合の動作について図16(b)を参照して説明する。なお、最初の本撮影までの動作は前述した図15(b)と同一なので説明は省略する。図16(b)に図示するように、本撮影を終えた時刻Td0から現在の絞り値を優先したフリッカー検出用の露出演算を行う。ここで、被写体に対して露出条件が暗すぎるため、現在絞り値ではフリッカー検出を行うことができない場合を想定する。
この場合、時刻Td1から絞り202の駆動を開始し、フリッカー検出動画が可能な絞り値となる時刻Td2まで絞り202を駆動する。時刻Td2でフリッカー検出動作を実行した後は絞り202を駆動せず、絞り値はそのままに絞り202の駆動を停止する。これは、相対絞り駆動が可能なため、次回の撮影のために絞り202を開放位置まで駆動する必要がないためである。そして、本撮影用の露出演算が完了した時刻Td5から、本撮影用の絞り値に合わせて絞り202の駆動を開始し、絞り202の駆動が完了したのち次の本撮影(静止画取得)を行う。以降、撮像指示が継続している間は、これらの動作を繰り返す。
以上説明したように、本実施形態のカメラ本体100および撮影レンズ200であれば、撮影レンズ200の種類に応じて、フリッカー検出およびフリッカーレス撮影動作にあわせた最適な絞り駆動が可能である。具体的に、何れのレンズ種類であっても、現在の絞り値でフリッカー検出動作が可能か否かを判定し、当該判定の結果に応じて絞りの駆動有無および撮影レンズの種類に応じた最適な絞り駆動を行うような制御を行う。この構成により、撮影レンズの種類に依らずに精度よくフリッカー検出動作を行うことができ、かつ、撮影レンズの種類に応じて高速にフリッカー検出動作およびフリッカーレス撮影を行うことができる。
(第4実施形態)
以下、図17〜19を参照して、本発明の第3実施形態に係る撮像システムについて説明する。なお、カメラ本体100を中心とする撮像システムの基本的な構成については、前述した第1実施形態と略同一なので、説明は省略する。本実施形態では、前述した第1実施形態におけるライブビュー表示中のフリッカー検出動作に加えて、内蔵ストロボ114又は外部ストロボ300を用いた発光撮影を行う場合について具体的に説明する。
図17は、本発明の第4実施形態に係る発光撮影時のフリッカー検知処理について例示的に説明するフローチャートである。なお、図17に示すフローは、ライブビュー表示中にフリッカーレス撮影を実行する場合を仮定し、ユーザによる撮像指示から本撮影の実行までの間に実行される撮影準備処理である。例えば、前述した第1実施形態においては、図3に図示するステップS118の処理に該当する。
まず、ステップS601でCPU104は、発光撮影時の設定として、複数の発光装置を用いた多灯発光モードであるか否かを判定する。なお、多灯発光モードは、本撮影時に複数の発光装置を用いて被写体を照明して発光撮影を行う発光モードである。この多灯発光モードが有効(オン)にされていると、本撮影の直前に、複数の発光装置を複数の発光グループに分けて予備発光を行い、本発光量を演算するための調光演算が実行される。ステップS601で、多灯発光モードでないと判定された場合はステップS602の処理に進み、多灯発光モードであると判定された場合はステップS605の処理に進む。
次に、ステップS602でCPU104は、フリッカー検出動作を実行し、特に、このタイミングでは、少なくともフリッカーのピークタイミングを検出する。フリッカー検出動作の方法については、前述した第1実施形態と同一なので、説明は省略する。
次に、ステップS603でCPU104は、本撮影用の絞り制御(撮影絞り制御)を実行する。ここでは、本撮影の直前にライブビュー表示用の絞り値から、本撮影用の絞り値となるように絞り202の開口径を調節する。具体的には、CPU104から撮影レンズ200のLPU203に対して絞り変更要求を送信し、LPU203の指示に応じて絞り駆動部205を制御して、絞り202の開口量(絞り位置)を変更する。
次に、ステップS604でCPU104は、発光装置を用いた予備発光を行い、当該予備発光の結果に基づいて本撮影時の発光量(本発光量)を演算(調光演算)する。ここで、ステップS604の処理における発光装置は、外部ストロボ300とする。ステップS604の処理では、本撮影の前にCPU104が、外部ストロボ300が有するSPU301に対して所定の発光量による予備発光指示を行う。そして、当該予備発行指示に応じた予備発光時に被写体を撮像して得られた画像に基づいて本発光量を算出する。以上説明したように、発光装置を多灯発光しない場合は、フリッカーのピークタイミングを検出した後に撮影絞り制御を行い、最後に予備発光を行う。
なお、予備発光を伴う本発光量の算出方法(調光演算)としては公知の方法であればどのような構成を採用してもよい。本実施形態では、発光装置を発光させない状態で得られた非発光画像と、発光装置を予備発光させた状態で得られた予備発光画像とを比較して被写体の反射光成分を算出し、予め格納されているデータと算出した反射光成分とを対応付けて本発光量を算出する。
また、本実施形態では、非発光画像と全ての予備発光画像を取得したタイミング(例えばステップS604、後述するステップS606、S612の後など)に調光演算を実行して本発光量を算出するが、これに限定されるものではない。例えば、本撮影までの間に調光演算が完了できるのであれば、予備発光完了直後に調光演算を実行する必要はなく、予備発光画像の取得と調光演算のタイミングとが、前述した構成以外のタイミングであっても構わない。
次に、ステップS601の処理で多灯発光であると判定された場合、ステップS605でCPU104は、顔領域の検知処理(顔検知)を行っているか否かを判定する。なお、顔検知は、ライブビュー表示用の画像に基づいて予め定められたパターンマッチングを適用し、当該画像に顏領域が含まれている否かを検出する。換言すると、顔検知を実行することにより、撮像対象の被写体が人物であるか人物以外であるかを判定できる。なお、顏検知においては、予めカメラ本体100に格納された顔領域を示すパターンとのマッチング度合を評価した評価値に基づいて、被写体が人物であるか否かを判定することができる。
ステップS605で顔検知が行われていないと判定された場合は、ステップS606の処理に進み、顏検知が行われていると判定された場合は、ステップS609の処理に進む。なお、ステップS606〜S612の処理は多灯発光モードの場合の処理に該当する。
ステップS606でCPU104は、多灯発光用に用いる発光装置の発光グループごとに予備発光を行い、本発光量を演算する。なお、多灯発光におけるマスターストロボに含まれる発光装置が外部ストロボ300である。そして、その他のスレーブストロボとなる複数の発光装置については、外部ストロボ300と略同一の構成を備えた発光装置であって、各発光装置は電波あるいは光による通信(同調)制御が可能である。多灯発光モードにおいては、発光グループごとに予備発光のタイミングを異ならせる。
以降のステップS607〜S608の処理は、前述したステップS602〜S603の処理と同一なので説明は省略する。以上説明したように、発光装置を多灯発光する場合であって顔検知を行わない場合は、多灯発光における本発光量を算出した後に、フリッカーのピークタイミングを検出し、最後に撮影絞り制御する。
次に、ステップS601の処理で多灯発光であると判定され、ステップS605の処理で顏検知が行われていると判定された場合、ステップS609でCPU104は、多灯発光における発光グループごとに予備発光を行い、本発光量を算出する。ただし、ステップS606とはことなり、カメラ本体100に直接装着されている外部ストロボ300が含まれるグループでの予備発光は行わない。これは、カメラ本体100に直接装着されている発光装置を用いて被写体を正面から照明する確率が最も高いと考え、正面発光を行う発光グループとそれ以外の発光グループとで予備発光のタイミングを異ならせるためである。なお、以降の説明では、正面発光を行う発光装置を含む発光グループをマスターストロボ(グループ)と称する。
ステップS610〜S611の処理は、前述したステップS602〜S603の処理と同一なので、説明は省略する。最後に、ステップS612でCPU104は、カメラ本体100に直接装着されている外部ストロボ300が含まれるグループでの予備発光を行い、本撮影時の本発光量の演算を行う。
ここで、図18を参照して、上述した図17に示すフローチャートに係る各動作のタイミングチャートについて説明する。図18は、本発明の第4実施形態に係る発光撮影時のフリッカー検知処理について例示的に説明するタイミングチャートである。なお、図18において、「VD」は、撮像素子101に与える垂直同期信号のタイミングを示しており、一度Lowレベルになってから次にLowレベルに立ち下がるまでが、ライブビューにおける1フレーム分の画像を取得するのに必要な周期である。なお、「絞り位置」は、絞り202の開口量を視覚的に示したものであって、図中の上側ほど開放に近い。また、「発光タイミング」は、例えば外部ストロボ300などの発光装置を用いた照明光の発光タイミングを示している。なお、撮像素子101を構成する画素の出力信号は、VDに同期して読み出され、読み出し完了後に積分値をリセットする制御を繰り返すことで、被写体の輝度値の変化を検出できる。
図18(a)は、多灯発光モードが無効(オフ)になっている(ステップS602でNOと判定した)場合の、フリッカー検出動作と絞り駆動、発光装置の発光動作に係る各種の制御タイミングを例示的に説明している。図18(a)に図示するような状況では、まず、フリッカー検出動作を行う。フリッカー検出動作の詳細は、前述した第1実施形態の通りなので、説明は省略するが、撮像素子101の600fpsでの駆動周期に合わせてVDが発せられ、計12回の出力の積分結果に基づいてフリッカー検出動作を実行する。
次に、ライブビュー表示(フリッカ検出)用の絞り値(f1.8)から、本撮影用の撮影絞り値(f5.6)へと撮影絞りを変更する制御を行が、この制御と同時に、調光用に、撮像素子101に対して駆動制御の切替えを行う。最後に予備発光を行いその積分結果から本発光量の演算(調光演算)を行う。以上の制御により、多灯発光の設定が無効(オフ)になっている場合(すなわち、発光装置を単体発光する場合)は、種々の制御動作の内、絞り駆動後の撮影直前に予備発光を行うため、人物の目つぶりなどを防止した画像を取得することができる。
次に、図18(b)は、多灯発光モードが有効(オン)、かつ顏検知が行われていない(ステップS605でNOと判定した)場合の、フリッカー検出動作と絞り駆動、発光装置の発光動作に係る各種の制御タイミングを例示的に説明している。
図18(b)に図示するような状況では、まず、多灯発光する複数の発光装置の各発光グループ(スレーブストロボEGr〜BGr+マスターストロボAGr)のそれぞれで予備発光を行い、その積分結果から本発光量の演算(調光演算)を行う。その後、撮像素子101の駆動制御をフリッカー検出用に切替え、フリッカー検出動作を実行する。フリッカー検出動作の完了後、絞り値をライブビュー表示(フリッカー検出)用の絞り値から本撮影用に切り替える。この構成であれば、フリッカー検出動作が本撮影の直前に実行されるため、フリッカー検出動作から本撮影の時間的な差によって生じるフリッカーのピークタイミングのずれの影響を抑制することができ、安定したフリッカーレス撮影が可能となる。
次に、図18(c)は、多灯発光モードが有効(オン)、かつ顏検知が行われている(ステップS605でYESと判定した)場合の、フリッカー検出動作と絞り駆動、発光装置の発光動作に係る各種の制御タイミングを例示的に説明している。
図18(c)に図示するような状況では、まず、多灯発光する複数の発光装置の各発光グループ(スレーブストロボEGr〜BGr)のそれぞれで予備発光を行い、その積分結果を取得する。なお、このタイミングでは、まだマスターストロボに該当する外部ストロボ300の予備発光は行わないため、本発光量の演算は完了していない。
次に、撮像素子101の駆動制御をフリッカー検出用に切替え、フリッカー検出動作を実行する。その後、撮影直前に、マスターストロボ(外部ストロボ300)の予備発光を行い、その積分結果と、先に実行されている他の発光グループに該当する発光装置を用いた予備発光の積分結果に基づいて、本発光量の演算(調光演算)を行う。なお、フリッカー検出動作の完了後は、絞り値をライブビュー表示(フリッカー検出)用の絞り値から本撮影用に切り替える。
この構成であれば、人物が検出されている場合は、マスターストロボに該当する発光装置の予備発光が本撮影の直前に行われるため、当該人物に向けた正面発光が本撮影の直前に行われることで人物の目つぶりなどを防止した画像を取得することができる。さらに、フリッカー検出動作も、マスターストロボに該当する発光装置の予備発光の直前に行われるため、検出からの時間経過により生じるフリッカーのピークタイミングのずれの影響を抑制することができ、安定したフリッカーレス撮影が可能となる。
なお、本実施形態では、カメラ本体100に直接装着されている外部ストロボ300を含む発光グループをマスターストロボとして、調光演算に係る予備発光のタイミングを制御したが、これに限定されるものではない。例えば、多灯発光を行う場合に、ユーザ自身がマスターストロボGrを指定する構成であってもよい。この場合、人物の正面に位置する発光装置を含む発光グループをマスターストロボ(Gr)とすればよい。
以下、図19を参照して、ライブビュー表示中に発光を伴うフリッカーレス撮影を実行する場合において、シャッター駆動方式の違いおよび動体の検知有無に応じた各動作について説明する。図19は、本発明の第4実施形態に係る発光撮影時のフリッカー検知処理においてシャッター駆動方式の違いと動体の検知結果を加味した処理について例示的に説明するフローチャートである。なお、図19におけるステップS701の処理は、前述したステップS601と同一、また、ステップS706〜S713の処理は、前述したステップS605〜S612と同一なので説明は省略する。
多灯発光の設定が無効(オフ)である(ステップS701でNOと判定した)場合、ステップS702でCPU104は、本撮影におけるシャッター駆動方式がメカ先幕を使用した方式(メカ先幕方式)であるか否かを判定する。本実施形態では、撮像素子101の蓄積時間制御におけるシャッター駆動方式としては2つに分類される。一方は、シャッター102が備える機械的な遮光羽根である先羽根群(先幕)および後羽根群(後幕)の走行タイミングを制御して、撮像素子101の蓄積時間を先幕と後幕の両方で調整する所謂メカ先幕方式である。他方は、シャッター102が備える後羽根群(後幕)と撮像素子101のリセットタイミングを制御することで、前述した先幕の働きに相当する動作を撮像素子101の電荷蓄積制御により実現する所謂電子先幕方式である。本実施形態においては、メカ先幕方式を採用した場合に生じるレリーズタイムラグの増加に起因して、フリッカー検知動作から本撮影までの差が大きくなることを抑制するために、シャッター駆動方式に応じて各動作の実行タイミングを異ならせている。
シャッター駆動方式がメカ先幕方式ではない(すなわち電子先幕方式である)場合は、ステップS703に進む。ステップS703〜S705の処理は、前述したステップS602〜S605の処理と略同一なので説明は省略する。一方、シャッター駆動方式がメカ先幕方式であると判定されて場合、ステップS714でCPU104は、撮像対象の被写体の動き量が所定量以上であるか(すなわち被写体が動体である)否かを検知する。なお、動体の検知は、撮像素子101により事前に取得されている(または、このタイミングで取得する)複数の画像に基づいて、CPU104により行われる。具体的に、複数の画像における動きベクトルを算出し、動きベクトルに基づく被写体の動き量が所定の閾値以上であれば、被写体が動体であるとCPU104が検知する。
動体が検知されなかった(ステップS714でNOと判定された)場合は、ステップS715〜S717において、外部ストロボ300の予備発光(および調光演算)、フリッカー検出動作、撮影絞り制御の順に各動作を実行する。なお、各動作の詳細は、前述した通りなので説明を省略する。
また、動体が検知された(ステップS714でYESと判定された)場合は、ステップS718〜S720において、フリッカー検出動作、撮影絞り制御、外部ストロボ300の予備発光(および調光演算)の順に各動作を実行する。なお、各動作の詳細は、前述した通りなので説明を省略する。
以上説明した構成を採用することで、本実施形態のカメラ本体100は、シャッター102の動作に伴うレリーズタイムラグがフリッカー検知動作に与える影響を抑制することができる。また、本実施形態のカメラ本体100は、被写体が動体である場合に、予備発光を本撮影の直前に行うことで、予備発光時と本発光を伴う本撮影時との時間的な差をできるだけ短くして、被写体の動きに起因する撮像の失敗を低減することができる。
なお、本実施形態では、外部ストロボ300およびこれに類する外部発光装置を用いた発光撮影時の制御について説明したが、前述した構成については、内蔵ストロボ114を用いた発光撮影時にも適用可能である。
(変形例1)
以下、前述した第2実施形態の変形例1について図20を参照して説明する。図20は、本発明の変形例1に係る、フリッカーレス撮影機能がオンされている場合のフリッカーレス撮影処理について説明するフローチャートである。なお、図10に対する図20の差異は、ステップS406およびS413の処理を削除し、ステップS409の代わりにステップS801の処理を行い、ステップS412の代わりにステップS802の処理を行う点である。なお、図20に示す各処理のうち、図10と同一の処理については、図10のフローと同一の番号を付し、説明を省略する。
図20に図示するように、本変形例において、ステップS801でCPU104は、前述したステップS401と同様に、ライブビュー表示用の画像から測光値BvAveを算出する。
また、ステップS802でCPU104は、前述したステップS405と同様に、ステップS801で取得した測光値BvAveに基づき、本撮影時の露出条件(Tv、Av、ISO感度)を算出する。
以上説明したように、本変形例では、連続撮影(連写)における2回目以降の撮像では、本撮影用の撮影パラメータ(露出条件)を算出する際の測光値をライブビュー表示用の画像から求める。この場合、本撮影により得られた記録画像(静止画)を用いて測光する場合のように、露出補正量が二重に加味される虞が無いため、1つ前の撮像時に用いた露出補正量を用いて、現在の撮像時の露出補正量を算出する必要はない。したがって、本変形例の構成を採用すれば、ライブビュー表示中にフリッカーレス撮影を実行する場合に、処理負荷の増加を抑制しつつ、画像の明るさが不自然になることを、効果的に防止することができる。
(変形例2)
以下、前述した第2実施形態の変形例2について図21を参照して説明する。図21は、本発明の変形例2に係る、フリッカーレス撮影機能がオンされている場合のフリッカーレス撮影処理について説明するフローチャートである。なお、図10に対する図21の差異は、ステップS901、ステップS902の処理を加える点である。なお、図21に示す各処理のうち、図10と同一の処理については、図10のフローと同一の番号を付し、説明を省略する。
第2実施形態と同様に、本変形例でも、露出補正量Comp(x)の値は、露光時間(シャッター速度)Tvに応じて変化する構成を採用している。ここで、撮影モードとして、シャッター速度(Tv)優先モードなど、Tvを固定(優先)できる設定においては、連続撮影における各本撮影時の露出補正量として、連続する撮像ごとに同じであったとしても得られる画像の品位に大きな影響はない。そこで、本変形例では、新たに、露出制御値のうちTv固定(Tv優先)となる撮影条件(例えば、Tv優先モード)が設定されているか否かに応じて、露出条件の算出方法を異ならせる。
図21に図示するように、本変形例において、ステップS901でCPU104は、現在の撮影条件が、Tvを優先して設定する撮影条件であるか否かを判断する。本実施形態では、現在の撮影モードが、ユーザの手動設定に応じてTvを固定値に設定可能な撮影モードであるか否か判定する。
ステップS901でNOと判定された場合は、前述したステップS412の処理を実行して、本撮影時の露出条件を算出する。ステップS901でYESと判定された場合、次の本撮影において、前回の本撮影時の露出補正量LastCompの影響を取り除く必要性は低いと判断し、CPU104は測光値Bv=Bv1とし、当該測光値に基づいて本撮影時の露出条件を算出する。
以上説明したように、本変形例では、本撮影時の露出条件のうちTvを優先した撮影条件が設定されている場合、連続撮影(連写)における2回目以降の撮像時においては、前回の本撮影時の露出補正量を考慮せず、次回の本撮影時の露出条件を算出する。この場合、Tvが優先して決定されるため、連続撮影により取得される画像間で画像の品位に与える影響は小さい。したがって、本変形例の構成を採用すれば、撮影条件によっては、前回の本撮影時の露出補正量に依らずに今回の本撮影時の露出条件(撮影パラメータ)を算出するため、処理負荷を低減することができる。
(変形例3)
以下、前述した第2実施形態の変形例3について図22を参照して説明する。図22は、本発明の変形例3に係る、フリッカーレス撮影機能がオンされている場合のフリッカーレス撮影処理について説明するフローチャートである。なお、図10に対する図22の差異は、ステップS411の処理を削除し、ステップS406の代わりにS1001、S410の代わりにS1002、S412の代わりにS1003、413の代わりにS1004の処理を行う点である。なお、図22に示す各処理のうち、図10と同一の処理については、図10のフローと同一の番号を付し、説明を省略する。
図22に図示するように、ステップS1001でCPU104は、ステップS405の処理で算出した露出条件のうちのシャッター速度(露光時間)Tv(x)を別名のLastTvとして記録部112の所定領域に記憶する。
ステップS1002でCPU104は、前述したステップS403と同一の方法でフリッカー検出動作を実行する。なお、ステップS1002では、フリッカー検出結果に応じた処理の分岐は無い。すなわち、本変形例では、ステップS1002において、フリッカーの検出有無に依らずに露出補正量は算出しない。
次に、ステップS1003でCPU104は、測光値Bv=Bv1とし、当該測光値に基づいて本撮影時の露出条件を算出する。ただし、ステップS1003で算出する露出条件のうち、シャッター速度Tvについては、前回の本撮影に合わせて算出したシャッター速度に該当するLastTvを設定する。そして、ステップS1004でCPU104は、今回の本撮影で設定されたシャッター速度Tvを別名のLastTvとして記録部112の所定領域に記憶する。
以上説明したように、本変形例では、連続撮影(連写)における2回目以降の撮像時においては、最初に設定されたシャッター速度Tvを固定して次回の本撮影時の露出条件を算出する。この場合、シャッター速度が変化することが無いため、連続撮影における2回目以降の撮影時に、前回の本撮影時の露出補正量に依らずに今回の本撮影時の露出条件(撮影パラメータ)を算出するため、処理負荷を低減することができる。
以上、本発明の好ましい実施形態および変形例について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。例えば、前述した実施形態および変形例では、露出条件としてシャッター速度、絞り値およびISO感度について説明したが、他の要素に係る露出制御値を露出条件に加える構成であってもよい。例えば、カメラ本体100または撮影レンズ200の内部において、撮像素子101に入射する光量を減光するNDフィルタなどの減光手段を設ける構成であれば、NDフィルタの濃度に係る露出制御値を鑑みて露出制御を行う構成であってもよい。
また、前述した実施形態および変形例では、CPU104や記録部112など、カメラ本体100を中心として撮像システムを構成する各部が互いに連携して動作することで、装置全体としての動作を制御する構成であったが、これに限定されるものではない。例えば、前述した各図に図示したフローに従った(コンピュータ)プログラムを予め記録部112の所定領域などに記憶しておく。そして、当該プログラムを、CPU104などが実行することで、撮像システム全体に係る動作を制御するような構成であってもよい。また、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。また、プログラムを供給するための記録媒体としては、例えば、ハードディスク、磁気テープ等の磁気記録媒体、光/光磁気記録媒体でもあってもよい。
また、前述した実施形態では、本発明を実施する撮像装置の一例としてカメラ本体100と撮影レンズ200とがそれぞれ個別の構成である、所謂レンズ交換式の撮像装置について説明したが、これに限定されるものではない。例えば、カメラ本体と撮影レンズとが一体的に形成された、所謂レンズ一体側の撮像装置を、本発明を実施する撮像装置としてもよい。
また、前述した実施形態では、本発明を実施する撮像装置の一例としてデジタルカメラを想定して説明したが、これに限定されるものではない。例えば、デジタルビデオカメラやスマートフォンなどの可搬デバイスやウェアラブル端末、セキュリティーカメラなど、デジタルカメラ以外の撮像装置を採用する構成であってもよい。
(その他の実施形態)
また本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現できる。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現できる。