●(第1実施形態)
以下、図面を参照しながら本発明の例示的な実施形態について説明する。なお、以下では、本発明を撮像装置の一例としてのレンズ交換式デジタルカメラに適用した実施形態について説明する。しかし、本発明は、画像信号に基づく自動焦点調節機能を有する電子機器に対して適用可能である。このような電子機器には、デジタルカメラ、携帯電話機、パーソナルコンピュータ(デスクトップ型、ノート型、タブレット型など)、プロジェクタ、ゲーム機、ロボット、家電製品、ドライブレコーダなどが含まれるが、これらに限定されない。
図1は、本発明の実施形態に係る画像処理装置の一例であるレンズ交換式のデジタル一眼レフカメラ(カメラシステム)の機能構成例を示すブロック図である。
カメラシステムは、カメラ本体100と、カメラ本体100に着脱可能に取り付けられるレンズユニット200とを有する。カメラ本体100とレンズユニット200は、それぞれが有するマウント部によって接続され、マウント部には電気的な接点群210が設けられる。接点群210はカメラ本体100とレンズユニット200との間で制御信号、状態信号、データ信号等を通信したり、カメラ本体100から撮影レンズに電源を供給したり、レンズユニット200の接続有無をカメラ本体100で検出したりすることを可能にする。なお、接点群210はカメラ本体100とレンズユニット200との間の通信を可能とするものであれば、電気信号以外の信号、例えば光信号を伝達するものであってよい。なお、便宜上、レンズユニット200が内蔵する撮影レンズ201を1枚のレンズのように図示しているが、実際は複数のレンズから構成される。
被写体からの光束が、撮影レンズ201および絞り202を介してクイックリターンミラー102に導かれる。クイックリターンミラー102は矢印方向に移動可能で、図示の状態(ダウン状態)において、レンズユニット200から入射する光束の一部が透過するよう、中央部がハーフミラーに形成されている。ハーフミラー部分を透過した光束は、クイックリターンミラー102の裏面に設けられたサブミラー103により、AFセンサユニット104に入射する方向に反射される。
AFセンサユニット104は結像面近傍に配置されたフィールドレンズ、反射ミラー、2次結像レンズ、絞り、およびラインセンサ等から構成されており、位相差方法の自動焦点検出(位相差AF)に用いる1対の像信号を生成する。焦点検出回路105はAFセンサユニット104で生成される1対の像信号を用い、デフォーカス量とデフォーカス方向を取得する。このデフォーカス量とデフォーカス方向に基づいてシステムコントローラ120がレンズユニット200のフォーカスレンズを駆動制御し、レンズユニット200の焦点調節を行う。
一方、レンズユニット200から入射した光束のうち、ダウン状態のクイックリターンミラー102で反射された光束は、ペンタプリズム101、接眼レンズ106を介して出射する。この出射光を撮影者が観察することで、撮影範囲を確認することができる。なお、接眼レンズ106の近傍には、被写体の輝度情報を得るための測光センサが設けられており、測光センサの出力は測光回路107を経てシステムコントローラ120へ供給される。システムコントローラ120は被写体の輝度情報を用いて、自動露出制御(AE)を行う。
撮影時にはクイックリターンミラー102が上方に移動し(アップ状態)、レンズユニット200から入射した光束は、機械シャッターであるフォーカルプレーンシャッター108、光学フィルタ109を介して撮像素子112に入射する。クイックリターンミラー102のアップ時、サブミラー103は折り畳まれる。
光学フィルタ109は赤外線カットフィルタと光学ローパスフィルタの両方の機能を有する。フォーカルプレーンシャッター108は先幕及び後幕を有し、システムコントローラ120の制御に従ってレンズユニット200からの光束を透過もしくは遮断させる。
システムコントローラ120はCPUやMPU等のプログラマブルプロセッサと、プログラム、設定値、GUIデータ等を保存する不揮発性メモリ(ROM)と、プログラムを展開したりワークエリアとして用いたりするための揮発性メモリ(RAM)を有する。システムコントローラ120はプログラムを実行してカメラ本体100、レンズユニット200の構成要素の動作を制御することにより、後述するフリッカー検出動作を含む、カメラシステム全体の機能を実現する。本明細書において、システムコントローラ120が主体として実行する動作は、プログラマブルプロセッサがRAMに読み込んだプログラムを実行することによって実現される。なお、システムコントローラ120がソフトウェア的に実現する動作の少なくとも一部を、ASICなどのハードウェア回路によって実現してもよい。
システムコントローラ120は、上述した接点群210を介してレンズユニット200内のレンズコントローラ207と通信可能に接続される。レンズコントローラ207は、システムコントローラ120からの制御によってレンズ制御回路204や絞り制御回路206の動作を制御したり、レンズユニット200の情報をシステムコントローラ120に送信したりする。レンズユニット200の情報には例えば、フォーカスレンズの位置、設定されている絞り値、撮影レンズ201の焦点距離などが含まれてよい。
また、レンズコントローラ207にはレンズユニット200の固有情報(例えば焦点距離、開放絞り、個体識別情報(レンズID))や、システムコントローラ120から受け取った情報を記憶する書き換え可能な不揮発性メモリが設けられている。
レンズ駆動機構203はレンズ制御回路204の制御に従って、撮影レンズ201に含まれるフォーカスレンズを光軸方向に駆動する。絞り駆動機構205は絞り制御回路206の制御に従って、絞り202を駆動する。
システムコントローラ120には、クイックリターンミラー102のアップ・ダウンの駆動およびフォーカルプレーンシャッター108のシャッターチャージを制御するシャッターチャージ・ミラー駆動機構110が接続されている。また、システムコントローラ120には、フォーカルプレーンシャッター108の先幕、後幕の走行を制御するためのシャッター制御回路111が接続されている。EEPROM122は、システムコントローラ120がカメラシステムを制御する上で調整が必要なパラメータ、カメラ本体100の個体識別情報(カメラID)、基準レンズで調整されたAF補正データやAE補正データなどが記憶される。
システムコントローラ120は、上述したAE制御で決定された絞り値(Av)とシャッタースピード(Tv)に従って、撮影時の露光制御を行う。具体的には、レンズコントローラ207を介して絞り202の開口の大きさを制御し、シャッター制御回路111を介してフォーカルプレーンシャッター108の動作を制御する。
フォーカルプレーンシャッター108の先幕、後幕はバネ駆動であり、動作前にバネチャージ動作を要する。シャッターチャージ・ミラー駆動機構110は、バネチャージ動作を制御するとともに、クイックリターンミラー102のアップ・ダウン動作も制御する。
画像データコントローラ115は、例えばDSP(デジタル信号プロセッサ)により構成され、撮像素子112の駆動および読み出し動作を制御する。また、画像データコントローラ115は、A/Dコンバータ113でデジタル化された画像データについて、システムコントローラ120の制御に基づいて補正したり加工したりする。画像データコントローラ115が実行する補正・加工には、例えば色補間やホワイトバランス調整などが含まれる。
なお、画像データコントローラ115は、画像データから例えば画像の分割領域ごとの輝度情報を取得し、システムコントローラ120に供給することができる。このように、システムコントローラ120は、ミラーアップ状態で測光センサの出力が得られない場合でも被写体の輝度情報を得ることができる。
タイミングパルス発生回路114は、撮像素子112の駆動に必要なパルス信号を出力する。A/Dコンバータ113は、タイミングパルス発生回路114からのタイミングパルスに従って、撮像素子112から出力される被写体像に対応したアナログ信号をデジタル信号に変換する。DRAM121は、例えば加工や所定のフォーマットへのデータ変換が行われる前の画像データ(デジタルデータ)を一時的に記憶しておくための記憶装置の一例である。
画像コーデック119は、DRAM121に記憶された画像データを、予め定められた形式(例えばJPEG形式)で符号化したり、符号化された画像データを復号するための回路である。符号化された画像データは、画像ファイルとして記録媒体400へ記録される。記録媒体400は、内蔵メモリまたは着脱可能な記憶媒体であり、メモリカードが代表的であるが、これに限定されない。また、無線通信などを用いて外部装置に記録されてもよい。
画像データコントローラ115は、DRAM121上の画像データを、D/Aコンバータ116によりアナログ信号に変換してエンコーダ回路117へ出力する。エンコーダ回路117はD/Aコンバータ116の出力を、一般的には液晶表示パネルである画像表示回路118の駆動に必要な映像信号(例えばNTSC信号)に変換する。
動作表示回路123は、カメラシステムの動作モードの情報や露出情報(シャッタースピード、絞り値等)などを、カメラ本体100の筐体表面に設けられた第1表示装置124や、接眼レンズ106を通じて見ることのできる第2表示装置125に表示させる。
システムコントローラ120には、ユーザがカメラ本体100に各種の指示や設定を行うための操作部を構成するボタンやスイッチが接続されている。これらボタンやスイッチとして、図1には以下のものが示されている。撮影モード選択ボタン130、メイン電子ダイヤル131、決定SW132、測距点選択ボタン133、AFモード選択ボタン134、測光モード選択ボタン135、レリーズSW1 136、レリーズSW2 137、ファインダーモード選択SW138。なお、これらは単なる例示である。
レリーズSW1 136、レリーズSW2 137はレリーズボタンの半押しおよび全押しでオンするスイッチである。レリーズSW1 136のオンは、撮影準備動作(AF,AEなど)の開始指示に相当する。また、レリーズSW2 137のオンは、記録のための撮影動作の開始指示に相当する。
ファインダーモード選択SW138は、画像表示回路118を電子ビューファインダーとして機能させるか否かを選択するスイッチである。画像表示回路118を電子ビューファインダーとして機能させる場合、システムコントローラ120は所定のフレームレートで画像信号を撮像素子112から読み出し、ライブビュー表示用の画像を生成して画像表示回路118に順次表示させる。連続的に撮影した画像を実質的にリアルタイムで表示することにより、画像表示回路118を電子ビューファインダーとして機能させることができる。一方、画像表示回路118を電子ビューファインダーとして機能させないばあい、ユーザは接眼レンズ106から撮影範囲を確認することができる(光学ファインダーモード)。
次に、本実施形態におけるフリッカー検出処理について説明する。なお、本明細書でフリッカーとは周期的な光量変化を意味し、フリッカーを有する(光量が周期的に変化する)光源をフリッカー光源と呼ぶ。また、フリッカー検出とは、光源のフリッカー有無および、フリッカー周波数(周期)および光量の(最大または最小)ピークの(例えば垂直同期信号を基準とした)タイミングの検出である。一般的な蛍光管の場合、フリッカー周波数は点灯に用いる電源の周波数の2倍となるため、100Hzまたは120Hzである。
本実施形態のカメラシステムは、第1方法と第2方法とを用いてフリッカー検出することができる。まず、第1方法について図2および図3を用いて説明する。第1方法によるフリッカー検出は所定周波数のフリッカー光源の影響を受けない画像と、フリッカー光源の影響を受ける画像とを用いる。ここでは代表例としてフリッカー周波数が100Hz(周期10ms)であるものとする。図2は、第1方法のフリッカー検出時の撮影動作およびフリッカー検出処理を模式的に示した図である。また、図3は、第1方法のフリッカー検出処理に関するフローチャートである。
S201でシステムコントローラ120は、画像データコントローラ115を制御し、第1蓄積時間で読み出しを行うように撮像素子112を駆動し、第1の画像の画像データを取得する。なお、第1の画像は少なくとも画像表示回路118を電子ビューファインダーとして機能させる際に表示するライブビュー画像の解像度を有する。システムコントローラ120は、環境光源にフリッカー光源が含まれていたとしても第1の画像がフリッカーの影響を受けないように、第1蓄積時間を想定されるフリッカーの周期もしくはその倍数に設定する。ここでは、100Hzのフリッカーが想定されており、システムコントローラ120は第1の蓄積時間として10msを設定したものとする。システムコントローラ120は取得した画像データを例えばDRAM121に保存する。
S202は必要に応じて実行する手順であり、システムコントローラ120はS201で取得した第1の画像に基づくライブビュー画像を画像表示回路118に表示させる。上述したように、第1の画像の解像度はライブビュー画像として利用可能な解像度を有するため、改めてライブビュー画像を取得する必要はない。なお、必要に応じて第1の画像をライブビュー画像に変換するための画像処理(例えばスケーリングや信号形式の変換)を実行してもよい。
S203でシステムコントローラ120は、画像データコントローラ115を制御し、第2蓄積時間で読み出しを行うように撮像素子112を駆動し、第2の画像の画像データを取得する。第2の画像は第1の画像と同じ解像度であってよい。システムコントローラ120は、環境光源にフリッカー光源が含まれていた場合、第2の画像がフリッカーの影響を受けるように、第2蓄積時間を想定されるフリッカーの周期よりも短く設定する。ここでは、システムコントローラ120は第2の蓄積時間として1msを設定したものとする。なお、第2の画像については、第2の画像に対応する蓄積電荷を撮像素子112から読み出す時間に応じて、画像に生じるフリッカーの影響が異なる。そこで、本実施形態では、第2の画像を用いて高精度にフリッカーを検出するために、フリッカーの光量変化の1周期以上の期間となるように、第2画像の読み出し時間を制御する。具体的に、本実施形態では、システムコントローラ120は、第2の画像に対応する撮像素子112の読み出し時間として16.7msを設定し、撮像素子112の駆動を制御する。そして、システムコントローラ120は取得した画像データを例えばDRAM121に保存する。
S204でシステムコントローラ120は、S201およびS203で取得した第1および第2の画像の比を算出する。具体的には、システムコントローラ120は、第1の画像と第2の画像との位置合わせを行ったのち、対応する領域間の対応する画素ごとに値の比を求める。したがって、比の算出によって第3の画像が得られる。
図2に示す例では、フリッカーの影響を受ける第2の画像Bの画素値を、フリッカーの影響を受けない第1の画像Aの画素値で除算している。この除算により、被写体の影響が取り除かれた第3の画像B’が得られ、フリッカーが存在すれば第3の画像B’に輝度変化が現れる。
なお、比を求める方法以外にも、第1の画像と第2の画像の露出時間が同等になるように一方の画像の画素値を調整した後、第2の画像から第1の画像を減じて第3の画像を求めてもよい。
また、第3の画像は、同じ第1の画像を用いて生成してもよい。例えば図2の例であれば、第3の画像を画像Cと画像Bとから1つ、画像Cと画像Dとから1つ生成してもよい。あるいは、第1の画像Aを取得した後に第2の画像B1とB2を2フレーム続けて取得し、第3の画像を第1の画像Aと第2の画像B1とから1つ、第1の画像Aと第2の画像B2とから1つ生成してもよい。
なお、第3の画像を求めることによってフリッカーの検出精度を高めることができるが、比を求めずに第2の画像からフリッカーを検出することもできる。
S205でシステムコントローラ120は、第3の画像B’の例えば各画素行の平均値を求めることにより、第3の画像B’の垂直方向の輝度変化を検出する。そして、システムコントローラ120は、例えば垂直同期信号を起点として輝度変化が最小となるタイミングを、輝度変化のピーク(極大および極小)タイミングとして検出することができる。なお、輝度変化量の符号がピーク前後で正から負に変化する場合には極大、負から正に変化する場合は極小と判定することができる。
S206でシステムコントローラ120は、S205を2回実行したか否かを判定し、実行したと判定されればS207へ処理を進め、実行したと判定されなければS201に処理を戻し、第1の画像Cおよび第2の画像D、第3の画像D’を取得する。
S207でシステムコントローラ120は、輝度変化の、隣接する極大位置(または極小位置)の間隔(時間差)から、フリッカー周期および/または周波数を求める。なお、S205で輝度変化の大きさが閾値以下の場合、システムコントローラ120はフリッカーが存在しないものと判定する。また、輝度変化が閾値を超えるが、ピークが検出できなかった場合、システムコントローラ120はフリッカーの検出に失敗したと判定する。
なお、ここではピークの間隔を検出するためにS205を2回実行する構成について記載したが、隣接する同種のピークが2つ以上検出できればS205の実行回数に制限はない。換言すれば、隣接する同種のピークが2つ以上検出されたか否かをS206で判定するようにしてもよい。また、フリッカー周期および/または周波数の検出精度を高めるため、複数回検出したフリッカー周期および/または周波数を平均する構成としてもよい。また、画像内に少なくとも2つ以上のフリッカーのピークが生じるように撮像素子112の読み出し時間を制御し、同画像内に基づいてフリッカー周期を検出する構成であってもよい。この場合、例えば、フリッカーの光量変化の2周期以上に設定して撮像素子112を駆動し、取得された画像内における互いに隣接したフリッカーのピークが2つ以上検出されたか否かをS206で判定すればよい。
このように、第1方法は、フリッカー検出に用いる画像をライブビュー画像として利用することが可能であるため、撮影スタンバイ時や動画記録中といった、画像表示回路118が電子ビューファインダーとして機能可能な状態でのフリッカー検出に有用である。
次に、フリッカー検出の第2方法について図4および図5を参照して説明する。図4は、第2方法のフリッカー検出時の撮影動作およびフリッカー検出処理を模式的に示した図である。また、図5は、第2方法のフリッカー検出処理に関するフローチャートである。
S301でシステムコントローラ120は、想定されるフリッカー周期よりも短い周期となるフレームレートで撮影画像を取得するように画像データコントローラ115を制御する。ここでは、予め想定されるフリッカー周波数(100Hzと120Hz)の最小公倍数である600fpsのフレームレートで12フレーム連続して読み出すものとする。従って、システムコントローラ120は、約1.667msの蓄積時間で駆動するように画像データコントローラ115を制御する。なお、600fpsは一例であり、より低い、もしくは高いフレームレートを採用してもよい。システムコントローラ120は取得した画像データを例えばDRAM121に保存する。
ここで、12フレーム連続して読み出すのは、総蓄積時間を12×1.667ms=約20msとすることで、商用電源の周波数にかかわらず、連続した2周期のフリッカーが含まれるようにするためである。これにより、ピークの間隔(ピークタイミングの時間差)からフリッカー周期および/または周波数を検出することができる。また、システムコントローラ120は画像データコントローラ115に対し、600fpsでの読み出しを実現するためにの間引き読み出しまたは加算読出の設定を行う。間引きの割合や加算すべき画素数は、撮像素子112の読み出しに要する時間に依存する。例えばシステムコントローラ120内のROMに、フレームレートに応じた間引きの割合や加算すべき画素数を予め記憶しておくことができる。
なお、第1方法および第2の方法それぞれで行うフリッカー検出用の画像読み出し動作をそれぞれ読み出しモードとして画像データコントローラ115に予め登録しておくこともできる。この場合、システムコントローラ120はフリッカー検出方法に応じた読み出しモードを画像データコントローラ115に設定するだけでよい。
S302でシステムコントローラ120は、取得した12フレーム分の画像それぞれについて代表輝度値を算出する。ここでは、全画素の輝度の積分値を代表輝度値とするが、全画素の輝度平均値など他の値であってもよい。
S303でシステムコントローラ120は、求めた代表輝度値の変化からフリッカーの有無および、周期および/または周波数を検出する。商用電源周波数が50Hzの場合、蓄積時間が1.667msであれば、フリッカーの一周期あたり6回の読み出しが行われる。そのため、第n+6フレーム(nは0以上の整数)はフリッカー光源の光量がほぼ等しい状態に対応するため、代表輝度値もほぼ等しい値となる。同様に、商用電源周波数が60Hzの場合には、第n+5フレーム(nは0以上の整数)はフリッカー光源の光量がほぼ等しい状態に対応するため、代表輝度値もほぼ等しい値となる。
システムコントローラ120は、連続して読み出した12フレーム分の代表輝度値について、
第1評価値=第nフレームの代表輝度値と第(n+6)フレームの代表輝度値の差分絶対値和(n=1〜6)
第2評価値=第nフレームの代表輝度値と第(n+5)フレームの代表輝度値の差分絶対値和(n=1〜5)
をそれぞれ求める。
そして、システムコントローラ120は、
第1評価値<閾値 かつ 第2評価値<閾値 であればフリッカーが存在しない
第1評価値<閾値 かつ 第2評価値≧閾値 であれば50Hzのフリッカーが存在
第1評価値≧閾値 かつ 第2評価値<閾値 であれば60Hzのフリッカーが存在
とそれぞれ判定する。ここで、閾値は予め実験的に定めておくことができる。
S304でシステムコントローラ120は、代表輝度値から輝度変化のピークを検出する。ピークの検出方法に特に制限はないが、フリッカーの一周期内で得られたフレームの代表輝度値のうち、最大値L(n)と、最大値が得られたフレームの前後のフレームで得られた代表輝度値L(n−1)、L(n+1)とから求めることができる。具体的には、L(n)と、L(n−1)とL(n+1)のうち値の小さい1つとを通る直線(傾きa)と、L(n−1)とL(n+1)のうち値の大きい1つを通り、傾き−aの直線との交点をピークとして求めることができる。また、この交点に対応する輝度はピーク光量に相当する。なお、ピークは代表輝度値の最小値に基づいて求めてもよい。
なお、第2方法ではフレーム内の全画素値を反映した代表輝度値を求めることにより、例えば図4の最下段に示すような、画像の一部だけがフリッカーの影響を受けているような場合であってもフリッカー周期および/または周波数を検出することができる。しかし、フリッカー検出用の画像をそれぞれ同様に複数の領域に分割し、領域ごとに上述したフリッカー検出処理を実行することで、一層精度よくフリッカー周期および/または周波数を検出することができる。一部の領域だけでフリッカーが検出された場合、システムコントローラ120は例えばフリッカーが検出された領域が一定方向に並んでいればそれらの領域で検出されたフリッカーが実際に存在すると判定してもよい。あるいは、システムコントローラ120は、検出されたフリッカーの周波数やピークタイミングのばらつきが予め定められた閾値未満であれば、検出されたフリッカーが実際に存在すると判定してもよい。
次に、図6を用いて、本実施形態のカメラシステムにおけるフリッカーレス撮影動作について説明する。図6はフリッカーの影響を抑制した画像を得るための、検出したフリッカーに応じた露光タイミング制御に関する模式図である。ここでは、システムコントローラ120が静止画の撮影開始指示(レリーズSW2 137のオン)を検出する前にフリッカー検出が完了しているものとする。
上述した第1方法または第2方法のフリッカー検出により、フリッカーのピークタイミングと周期が検出されているため、フリッカーのピークタイミングが既知である。図6では、ピークタイミングをフリッカー同期信号によって表している。システムコントローラ120は、静止画の撮影開始指示を検出すると、フリッカー周期の特定の区間で露光が行われるように露光開始のタイミングを制御する。具体的には、システムコントローラ120は、シャッタースピードが同じであれば、フリッカー周期内の同じ区間で露光が行われるように露光開始のタイミングを制御する。これにより、同じ光量で撮影が行われるため、フリッカーの影響を抑制することができる。
図6に示す例では、フリッカーピークタイミングが露光期間の中心に位置するように露光開始のタイミングを制御している。フリッカー光源の輝度が最大になるタイミングを含むように露光タイミングを決定することにより、AEで決定されたシャッタースピードが変化した場合でも、画像の明るさをほぼ一定に保つことができる。この際、システムコントローラ120は、AEによるシャッタースピードと、指示を与えてからフォーカルプレーンシャッター108が動作開始するまでのタイムラグを考慮したタイミングでフォーカルプレーンシャッター108の動作を制御する。これにより、撮影画像におけるフリッカーの影響を抑制することができる。なお、撮影開始指示の検出時点でフリッカーが検出できていない場合、撮影開始指示の検出後にフリッカー検出を実行してから露光を開始するようにしてもよい。
次に、図7のフローチャートを用いて、本実施形態におけるカメラシステムにおけるフリッカー検出動作について説明する。図7は、カメラシステムの電源投入後、静止画撮影が実行されるまでの動作に関するフローチャートである。
例えば電源スイッチの操作などによって電源が投入されると、S401でシステムコントローラ120は、電源電圧や記録媒体のチェックなどの起動処理を実行する。そして、起動処理において異常が検出されなければ、システムコントローラ120は、S402で、図3を用いて説明した第1方法によるフリッカー検出処理を撮影スタンバイ動作として実行する。
S403でシステムコントローラ120は、撮影開始指示を検出したか否かを判定し、検出したと判定されればS404へ処理を進め、検出したと判定されなければS402を繰り返し実行する。第1方法によるフリッカー検出処理では、第1の画像をライブビュー画像として利用して画像表示回路118に表示するため、画像表示回路118は電子ビューファインダーとして機能する。
なお、S402において、フリッカー検出が完了した後は、例えばシーン変化が検出されるまでは第1の画像の取得と画像表示回路118への表示(図3のS201およびS202)だけを実行してもよい。これは、同じ環境であれば基本的にフリッカーの特性は変化しないからである。また、第2の画像を取得しないことにより、ライブビュー画像のフレームレートを向上させることもできる。
また、撮影開始指示の前に撮影開始準備指示(レリーズSW1 136のオン)が検出された場合、システムコントローラ120は、AFやAEといった撮影開始準備処理を実行する。
S404でシステムコントローラ120は、撮影スタンバイ動作中に第1方法によってフリッカーが検出されたか否かを判定し、検出されたと判定されればS405へ、検出されたと判定されなければS407へ、処理を進める。第1方法によってフリッカーが検出されていない場合、実際にフリッカーが存在しない場合と、フリッカーの検出に失敗している場合とが考えられる。フリッカーの検出に失敗している場合とは、例えば画像の一部がフリッカーの影響を受けており、輝度変化の大きさからはフリッカーが存在していると判定されても、隣接する同種のピークタイミングが検出できない場合などがある。そのため、本実施形態では第1方法でフリッカーが検出されていない場合には第2方法でフリッカー検出を行うようにしている。
S407でシステムコントローラ120は、図5を用いて説明した第2方法によるフリッカー検出処理を実行する。
S408でシステムコントローラ120は、第2方法によってフリッカーが検出されたか否かを判定し、検出されたと判定されればS409へ、検出されたと判定されなければS406へ、処理を進める。
S405でシステムコントローラ120は、第1方法によるフリッカーの検出結果(ピークタイミングおよび、周期または周波数)と、例えばAE処理で決定されたシャッタースピードに基づいて、撮影開始タイミングを決定する。システムコントローラ120は、撮影開始タイミングを図6を用いて説明したようにして決定することができる。
S409でシステムコントローラ120は、第2方法によるフリッカーの検出結果(ピークタイミングおよび、周期または周波数)と、例えばAE処理で決定されたシャッタースピードに基づいて、撮影開始タイミングを決定する。システムコントローラ120は、撮影開始タイミングを図6を用いて説明したようにして決定することができる。
S406でシステムコントローラ120は、S405またはS409で決定した撮影開始タイミングに従って、撮影動作を実行する。第1方法、第2方法のいずれでもフリッカーが検出されなかった場合、システムコントローラ120は、直ちに撮影動作を開始する。
なお、図7では、撮影スタンバイ状態から静止画撮影を行う場合における動作について説明した。しかしながら、動画記録中における静止画撮影にも本実施形態を適用することができる。この場合、動画記録の開始前の撮影スタンバイ状態において第1方法によるフリッカー検出処理を実行し、動画記録中に静止画の撮影開始指示を検出した場合にS403以降の動作を実行するように構成すればよい。
以上説明したように、本実施形態によれば、撮影開始指示の検出前と検出後とで、異なる方法によるフリッカー検出を実行するようにした。特に、撮影開始指示の検出前にはフリッカー検出用の画像をライブビュー表示に用いることができる方法でフリッカー検出を行い、撮影開始指示の検出後には、撮影開始指示の検出前とは異なる方法でフリッカー検出を行うようにした。これにより、撮影開始指示の検出前にはライブビュー表示を行いながらフリッカー検出が可能になる。また、撮影開始指示の検出後は、例えば撮影開始指示の検出前のフリッカー検出方法では検出できないフリッカーを検出可能な方法など、様々な方法を用いることができるため、フリッカーの検出精度を高めることができる。
●(第2実施形態)
次に、本発明の第2実施形態について説明する。第1実施形態では第1方法でフリッカーが検出されなかった場合には必ず第2方法でフリッカー検出を行う構成であった。本実施形態では、第1方法でフリッカーが検出されなかった場合に、第2方法でフリッカー検出を行うか否かを判定する点で異なる。本実施形態においても第1実施形態とカメラシステムの構成は同じであってよい。
図8は、本実施形態のカメラシステムにおける、電源投入後、静止画撮影が実行されるまでの動作に関するフローチャートであり、第1実施形態と同じ動作に関しては図7と同じ参照数字を付して説明を省略する。
S404でシステムコントローラ120は、撮影スタンバイ動作中に第1方法によってフリッカーが検出されたか否かを判定し、検出されたと判定されればS405へ、検出されたと判定されなければS501へ、処理を進める。
S501でシステムコントローラ120は、例えば直近に実行した第1方法のフリッカー検出で得られた輝度変化の振幅(例えば最小輝度値と最大輝度値との差)が閾値以下か否かを判定する。輝度変化は例えば図2の画像B’と画像D’に相当する画像から得られたものの少なくとも一方であってよい。システムコントローラ120は、輝度変化の振幅が閾値以下と判定されればS406へ、閾値以下と判定されなければS502へ、処理を進める。ここで用いる閾値は、予め定めておくことができる。また、閾値はユーザが変更可能であってもよい。閾値は、第1方法のフリッカー検出処理において、フリッカーの有無を判定するための閾値と同じであっても、それより小さい値であってもよい。
S502でシステムコントローラ120は、第1方法でのフリッカー検出処理で得られた輝度変化におけるピークが所定数以上であるか否かを判定し、所定数以上と判定されればS407へ、所定数以上と判定されなければS406へ、処理を進める。
ここで用いる所定数は、蓄積および読み出しの周期とフリッカー周期とに応じて定まる値を有する。図9を用いて所定数について説明する。例えば、第1方法のフリッカー検出処理において、画像を60fps(周期16.7ms)で読み出す場合を考える。この場合、各フレームに含まれるフリッカーの輝度ピークの数は、フリッカー周波数が100Hzの場合は1または2個、120Hzの場合は2個となる。
しかし、例えばフリッカー周波数が120Hzを超える場合、各フレームに含まれる輝度ピークの数は2より大きくなる(図9の例では3または4個)。本実施形態において第2方法のフリッカー検出処理は、フリッカー周波数が100Hzまたは120Hzであることを想定しているため、他のフリッカー周波数については正しく判定することができない。例えば、フリッカーが発生しない環境下でフリッカー検出処理を行った場合、理想としては輝度変化がなくピークの数は0となる。しかし、撮像素子112から出力される信号のばらつきやノイズにより輝度変化が発生し、輝度変化のピークが多く検出される。この場合は、S406の処理に遷移し、第2方法のフリッカー検出処理を実行しないように制御する。このとき、S501の処理で輝度変化の振幅が閾値以下と判定し基本的にはS406へ遷移する。しかしながら、被写体中に高輝度な被写体が存在する場合は撮像素子112から出力される信号が蓄積時間に応じて飽和するので、第1の蓄積時間で取得した画像と第2の蓄積時間で取得した画像とで輝度差が生じ、S502の処理に遷移する。
つまり、第1方法でのフリッカー検出処理で得られた輝度変化のピーク数が、フリッカー周波数100Hzまたは120Hzの場合に想定されるピーク数より大きい所定数以上の場合、第2方法のフリッカー検出処理によっても正しく検出できない可能性が高い。そのため、第2方法のフリッカー検出処理は行わないようにする。
本実施形態によれば、第1実施形態と同様の効果が得られるほか、第2方法でのフリッカー検出を適応的に実行するようにしたので、不要なシャッタータイムラグを抑制することができるという効果が得られる。
以上、本発明を例示的な実施形態について説明してきたが、本発明は説明した特定の実施形態に限定されない。特許請求の範囲で規定される範囲に含まれる、種々の変形物および変更物もまた本発明に含まれる。
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。