以下、本発明の好ましい実施形態に係る焦点調節装置としてカメラに適用した例について説明する。このカメラは、デジタルカメラであって、撮像素子を有し、この撮像素子によって被写体像を画像データに変換し、この変換された画像データに基づいて、被写体像を本体の背面に配置した表示部にライブビュー表示する。ユーザはライブビュー表示を観察することによって、構図やシャッタタイミングを決定する。レリーズ操作時には、画像データが記録媒体に記録される。記録媒体に記録された画像データは、再生モードを選択すると、表示部に再生表示することができる。また、この焦点検出装置は、撮像素子の撮像面のフォーカスを変化させるスキャン動作を実行しながら撮像信号に基づいてコントラストを示す評価値を算出して焦点検出を行う。
静止画用のコントラストAFでは、AFターゲットエリアから被写体が外れること(以下、「被写体外れ」ともいう)による見失いを防ぐため、低コントラスト状態となり方向判断が確定しない場合には、スキャン駆動範囲を制限することで、被写体外れのリカバリで復帰しやすくしている。このようなスキャン駆動範囲の制限は、被写体外れによる見失いの防止には有効だが、至近側で被写体が急速に後退する場合には追従しきれなくなってしまう。そこで、本実施形態においては、カメラの動きと合焦履歴情報に応じて、スキャン駆動範囲の制限を継続する時間を変化させるようにしている。
具体的には、以下のように行う。被写体外れが発生するシーンとしては、被写体を追いかけてパン動作をしている場合が多い。この場合には、スキャン駆動範囲の制限は有効なので、パン動作を検出した場合には、スキャン駆動範囲を制限する継続時間を長くする。一方、至近側で急速後退が発生するターザンロープやブランコのシーンでは、パン動作は少なく被写体はずれも発生しにくい。そこで、スキャン駆動範囲の制限は有効ではないので、パン動作ではない、またはパン動作が小さいことを検出した場合には、スキャン駆動範囲を制限する継続時間を短くする。
図1は、本発明の一実施形態に係わるカメラの主として電気的構成を示すブロック図である。本実施形態に係わるカメラは、大別すると、レンズユニット10とカメラボディ20を有している。なお、本実施形態に係るカメラは、レンズユニット10をカメラボディ20に装着する所謂レンズ交換式カメラであるが、レンズユニット10およびカメラボディ20を一体に構成するようにしてもよい。この場合、レンズ側CPU104とカメラ側CPU107を一体にしてもよい。
レンズユニット10は、撮影レンズ100、絞り101、及びこれらを駆動するためのレンズ/絞り駆動モータ102、モータドライブ回路103、レンズ側CPU104を有している。また、カメラボディ20は、撮像素子105、撮像制御・信号処理回路106、カメラ側CPU107、AF(Auto Focus)評価値算出回路108、角速度検出回路109、AE(Auto Exposure)評価値算出回路110、画像処理回路111、表示装置112、記録装置113、操作部114、およびメモリ115を有している。
撮影レンズ100は被写体像を形成するための複数の光学レンズを有する。複数の光学レンズは、フォーカスレンズを含み、単焦点レンズ又はズームレンズである。絞り101は、撮影レンズ100の射出瞳近傍であって、撮影レンズ100の光軸上に配置され、入射光量や焦点深度を調整する。カメラ側CPU107、レンズ側CPU104、モータドライブ回路103、及びモータ102によって、絞り101と撮影レンズ100内のフォーカスレンズが制御され、焦点調整および絞り調節が実現される。なお、レンズ側CPU104はカメラ側CPU107から受信した制御コマンドを解釈し、撮影レンズ100、絞り101を制御する。
撮像素子105は撮影レンズ100の光軸上に配置され、撮影レンズ100によって形成された被写体像を画像データに変換する。すなわち、撮像素子105はフォトダイオードを含む画素が二次元マトリクス状に配置されており、受光量に応じた電荷を蓄積する。撮像素子105の出力に接続された撮像制御・信号処理回路106によって撮像素子105の電荷蓄積制御や画像信号の読出し制御等が行なわれる。撮像素子105は、撮影光学系を通過する被写体光を光電変換し、撮像信号を出力する撮像素子として機能する。
撮像制御・信号処理回路106は、撮像素子105から読み出した画像信号の増幅処理やAD変換等を行い、画像データを出力する。撮像素子105から読み出され、撮像制御・信号処理回路106によって処理された画像データは、カメラ側CPU107、AF評価値算出回路108、AE評価値算出回路110、画像処理回路111に出力される。
カメラ側CPU107は、CPU(Central Processing Unit)、および周辺回路を有するプロセッサである。カメラ側CPU107は、メモリ115に記憶されているプログラムに従って、カメラボディ20内の各部を制御する。また、カメラ側CPU107は、レンズユニット10内のレンズ側CPU104と通信し、レンズ側CPU104を通じて、レンズユニット10内の各部を制御する。また、カメラ側CPU107は、レンズ側CPU104から、レンズユニット10の種々の調整値、フォーカスレンズや絞りの状態情報を受信する。
また、カメラ側CPU107(プロセッサ)は、焦点検出装置の位置変化に基づいてスキャン動作のフォーカス移動範囲を制限する継続時間を設定する継続時間設定部として機能する(図4のS45、S47参照)。また、継続時間設定部は、位置変化が大きいほど継続時間を長くする(図4のS43Yes→S45参照)。本実施形態においては、ユーザが被写体をAFターゲット内に位置させるために追いかけてパニング(パン動作)しているような場合には、スキャン駆動範囲の制限時間を長くしている(図9(b)の被写体外れ区間、制限時間Tlim参照)。ユーザがパン動作によりカメラの向きを変更し、被写体をAFターゲット内に再度捉えた場合には、被写体距離が、被写体がAFターゲットから外れて見失う前と略同じ可能性が高いことから、スキャン駆動範囲を制限している。一方、例えば、ターザンロープで遊ぶ子供を被写体として正面から撮影するような場合には、AFターゲットから被写体が外れにくいことから、ユーザがカメラの向きを変更する量は小さく、このため、スキャン駆動範囲の制限を行う時間を短くしている(図10(b)のTlim参照)。
また、カメラ側CPU107(プロセッサ)は、継続時間に基づいてスキャン動作のフォーカス移動範囲を制限して焦点検出を行う制御部として機能する(例えば、図3AのS27参照)。制御部は、スキャン動作を繰り返し実行し合焦を検出した場合に合焦時刻と合焦位置を取得し、前回合焦時刻から現在時刻までの経過時間が継続時間未満の場合に前回合焦位置からのフォーカス移動範囲を所定量に制限する(例えば、図4のS49、S51No、S53、S55参照)。制御部は、前回合焦時刻から現在時刻までの経過時間が継続時間以上の場合に前回合焦位置からのフォーカス移動範囲の制限を解除する(例えば、図4のS51Yes→S59参照)。
AF評価値算出回路108は、フィルタ回路を有し、撮像素子105から出力された画像データの高周波成分をフィルタ回路によって抽出し、AF評価値を算出する。AF評価値は、AFターゲットに対応する画像データについて算出される。算出されたAF評価値はカメラ側CPU107に出力される。AF評価値算出回路108は、撮像素子の出力する撮像信号に基づいてコントラストを示す評価値を算出する評価値算出部として機能する。
角速度検出回路109は、ジャイロ等の角速度センサと、この角速度センサの出力信号を処理する処理回路を有する。角速度検出回路109は、カメラを把持するユーザの手ブレや、パン撮影を行うための被写体を追いかける動き等、カメラに加えられた角速度を検出する。角速度検出回路109は、カメラ側CPU107に検出結果を出力する。角速度に基づいて、カメラの移動量を算出することができる(図5参照)。
角速度検出回路109は、焦点検出装置の位置変化を検出する位置変化検出部として機能する。位置変化検出部は、角速度検出部(角速度検出センサ)を有し、角速度に基づき位置変化を検出する(例えば、図5参照)。なお、位置変化検出部としては、角速度を検出する以外にも、加速度や角加速度等、焦点検出装置の物理的な位置変化を検出できるものであればよい。
AE評価値算出回路110は、輝度値算出回路を有し、ライブビュー画像データを取得時の測光領域の輝度値を補正して焦点調整用の画像データ取得時の輝度値を算出し、またライブビュー表示時及び焦点調整時の露出が適正になるような露出時間(Tv)や絞り値(Av)を算出する。輝度値Yは、一旦、メモリ115等の記憶部に記憶しておいてカメラ側CPU107が取得してもよく、AE評価値算出回路110によって算出された値を、カメラ側CPU107が直接取得してもよい。
AFターゲット内やその周辺部の輝度値を用いて、カメラの移動量を算出するようにしてもよい(図7参照)。例えば、徒競争している人物を横から撮影している場合に、カメラの画面内のAFターゲットからその人物が外れると、人物から背景にAFターゲット内で取得される画像が変化し、これに伴いAFターゲット内の輝度値が変化する。また、撮影画面周面部でも同様に背景に対応する画像の輝度値が変化する。従って、AE評価値(輝度値)の変化に基づいてカメラの位置変化を検出することができる。AE評価値算出回路110は、焦点検出装置の位置変化を検出する位置変化検出部として機能する。位置変化検出部は、撮像素子の出力に基づく輝度変化によって位置変化を検出する(例えば、図7参照)。
画像処理回路111は、撮像素子105から読み出された画像データの同時化処理、階調変換処理、ホワイトバランス調整、エッジ処理等の各種画像処理を行なう。画像処理が施された画像データは、記録装置113内に設けられ、カメラボディ20に着脱自在の記録媒体に記録される。
画像処理回路111内には、動きベクトル算出回路111aが配置されている。動きベクトル算出回路111aは、撮像素子105から読み出された複数の画像データを用いて、被写体の動きベクトルを算出する。動きベクトルは、画像内における被写体の動きの方向と大きさを示す。動きベクトル算出回路111aは、カメラ側CPU107に動きベクトルを出力する。AFターゲット内や撮影画面の周辺部の動きベクトルに基づいて、カメラの移動量を算出するようにしてもよい(例えば、図6参照)。動きベクトル算出回路111aは、焦点検出装置の位置変化を検出する位置変化検出部として機能する。位置変化検出部は、撮像素子の出力に基づく動きベクトルによって位置変化を検出する(例えば、図6参照)。
表示装置112は、カメラボディ20の背面に配置された表示パネル、および/または接眼部を通じてモニタを観察可能な電子ビューファインダを有する。この表示パネルや電子ビューファインダには、ライブビュー画像、記録済み画像の再生画像、およびメニュー画面等が表示される。
記録装置113は、電気的に書き換え可能な記憶媒体を有する。記憶媒体は、カメラ本体に装填可能であってもよく、またカメラ本体に固定しておいてもよい。この記録媒体に、画像処理が施された画像記録が記録される。また、記録装置113は、記録済みの画像データの読み出しを行う。
操作部114は、ユーザがカメラに指示を入力するためのインターフェースであり、レリーズ釦、パワースイッチ、タッチパネル等の操作部材を有する。レリーズ釦は、ユーザが半押し操作をするとオンとなる1stレリーズスイッチと、ユーザが全押し操作をするとオンとなる2ndレリーズスイッチを有する。操作部114は、操作部材の操作状態を検出し、検出結果をカメラ側CPU107に出力する。ユーザが、操作部114を操作すると、この操作状態に基づいて、カメラ側CPU107は、AF評価値算出回路108、角速度検出回路109、AE評価値算出回路110、画像処理回路111、メモリ115等を制御し、焦点調整、露出制御、画像処理等を行う。例えば、1stレリーズスイッチがオンとなると、測光や測距を開始し、また2ndレリーズスイッチがオンとなると、本露光を開始する(図2のS3、S5参照)。また、ユーザは操作部114を操作することによって、各種モード、例えば、C-AF(コンティニュアスAF)モードや連写モード等の設定を行うことができる。
メモリ115は、電気的書き換え可能な不揮発性メモリであり、カメラ側CPU107において使用されるプログラムを記憶する。また、メモリ115は、カメラにおいて使用する各種調整値等も記憶する。
次に、図2ないし図7に示すフローチャートを用いて、本実施形態におけるC-AF制御(焦点調節動作)について説明する。このフローは、メモリ114に記憶されたプログラムに基づいてカメラ側CPU107が図1に示す各部・各回路を制御することによって実行する。なお、このフローにおいては、連写撮影モード、およびC-AF(コンティニュアスAF)モードが設定されている場合の動作を示している。
ユーザがレリーズ釦を半押しすると、図2に示す1stレリーズ押下げのフローが開始し、まず、コントラストC-AF制御を実行する(S1)。コントラストAFは、フォーカスレンズを移動させながら、1フレーム分の画像データが出力される毎に、AF評価値算出回路108が画像のコントラストに相当するAF評価値を算出し、このAF評価値がピークとなるフォーカスレンズの位置を、合焦位置とするAF制御である。また、コントラストC-AF制御は、フォーカスレンズが合焦位置に達しても、繰り返しコントラストAF制御を行い、被写体が移動する場合であっても、フォーカスレンズが常に合焦位置にあるように制御する。また、ステップS1においては、撮像素子105によって取得した画像データに基づいて、表示装置112にライブビュー表示を行う。このように、コントラストC-AF制御は、連続的に被写体にピント合わせを行い、そのため、ピントが合った状態で被写体がライブビュー表示される。このコントラストC-AF制御の詳しい動作については、図3Aおよび図3Bを用いて後述する。
ステップS1において、コントラストC-AF制御を行うと、次に、2ndレリーズが押下げられたか否かを判定する(S3)。ユーザは、構図を決め、本撮影を行うと判断した場合には、操作部114内のレリーズ釦を全押しする。レリーズ釦が全押しされると2ndレリーズスイッチオン信号が、カメラ側CPU107に出力される。このステップでは、2ndレリーズスイッチの状態に基づいて、2ndレリーズが押下げられたか否かを判定する。この判定の結果、2ndレリーズが押下げられていなかった場合には、ステップS1に戻り、コントラストC-AF制御が実行される。
一方、ステップS3における判定の結果、2ndレリーズが押下げられた場合には、本露光処理を実行する(S5)。ここでは、絞り101が設定絞り値に絞り込まれ、メカシャッタが一旦閉じた後に、設定シャッタ時間の間、開放状態となり、その後閉じる。このシャッタ時間の間、撮像素子105上に形成された被写体像を光電変換し、撮像素子105は画像データを出力する。画像処理回路111は、画像データの画像処理を行い、記録装置113は画像処理が施された画像データを記録する。なお、カメラ20がメカシャッタを備えていない場合には、電子シャッタによって露光時間を制御する。
ステップS5における本露光処理が終了すると、次に、2ndレリーズが開放か否かを判定する(S7)。本露光が終了した際に、ユーザが撮影を終了する場合には、レリーズ釦の全押し状態を解除する。この場合には、2ndレリーズスイッチがオフとなる。さらにユーザが半押し状態も解除すれば1stレリーズスイッチがオフとなり、すなわち、2ndレリーズが開放となる。
ステップS7における判定の結果、2ndレリーズが開放されておらず、1stレリーズスイッチがオンのままであれば、ステップS1に戻り、コントラストC-AF制御が続行され、被写体に追随してピント合わせを行い、ライブビュー表示がなされる。また、2ndレリーズが押下げされれば、本露光処理が実行される。また、ステップS7の判定の際に2ndレリーズスイッチがオンであれば、C-AF制御で連写が実行される。一方、ステップS7における判定の結果、2ndレリーズが開放されていた場合には、このフローを終了する。
次に、図3Aおよび図3Bに示すフローチャートを用いて、ステップS1におけるコントラストC-AF制御の詳しい動作を説明する。図3AのコントラストC-AF制御のフローが開始すると、まず、スキャン速度を算出する(S11)。コントラストC-AFでは、フォーカスレンズを所定量だけ移動させ(図8および図9参照)、そのとき、1フレーム分の画像データが出力される毎に、AF評価値算出回路108がAF評価値を算出する。このステップでは、カメラ側CPU207が、フォーカスレンズを移動させる際のスキャン速度を算出する。このスキャン速度は、撮像素子の垂直同期信号の1周期あたりのスキャン駆動量がFδの所定倍の量となるような値とする。なお、Fは絞り101の絞り値であり、δは許容錯乱円径である。
スキャン速度を算出すると、次に、フォーカスレンズを初期位置に駆動する(S13)。ここでは、カメラ側CPU107が、フォーカスレンズの現在位置に対し、フォーカスレンズ位置を、Fδの第2の所定倍の量だけずらした初期位置を算出し、レンズ側CPU104を通じて、フォーカスレンズを初期位置に駆動する。
フォーカスレンズを初期位置に駆動すると、次に、スキャン駆動を開始する(S15)。ここでは、カメラ側CPU107が、レンズ側CPU104を通じて、フォーカスレンズを初期位置(S13参照)から被写体推定位置に向けて、算出したスキャン速度(S11参照)でスキャン駆動を開始させる。被写体推定位置は、後述するように移動する被写体に対する動体予測による予測位置である。動体予測の結果がまだ生成されていない場合は、初期位置から所定量だけ離れた位置とする。
スキャン駆動を開始すると、次に、AF評価値を取得する(S17)。ここでは、AF評価値算出回路108が、撮像素子105からの画像データを用いて、AF評価値を算出し、カメラ側CPU107に出力する。カメラCPU107は、取得したAF評価値に、フォーカスレンズ位置、時刻情報を関連付け、AF評価値履歴データとして、画像データのフレーム毎にメモリ115に保存・保持する。
続いて、合焦検出を行う(S19)。ここでは、カメラ側CPU107が、AF評価値履歴データを用いて、AF評価値の最大値からの下落割合が所定値以上の場合、合焦位置を検出したと判断し、この条件を満たさない場合には、合焦位置を未検出と判断する。そして、AF評価値履歴データのフレーム毎のAF評価値、フォーカスレンズ位置、時刻の情報に、合焦位置を検出したか未検出かの情報を対応させ追加してメモリ115に記憶する。
続いて、合焦検出か否かの判定を行う(S21)。ここでは、カメラ側CPU107が、ステップS19における検出結果に基づいて、合焦位置を検出したか否かを判定する。
ステップS21における判定の結果、合焦位置を検出しなかったと判定された場合には、スキャン駆動リミット判定を行う(S25)。ここでは、カメラ側CPU107が、スキャン駆動を行っている時に、スキャン駆動範囲を制限するか否かの判定を行う。すなわち、前回合焦位置の検出時から現在までの位置差分と時刻差分を求め、この時刻差分がスキャン駆動リミット継続時間以内であり、かつ位置差分が駆動リミット距離以上の場合、スキャン駆動リミットを発動する。このとき、駆動リミット継続時間の長さは、角速度検出回路109によって検出された角速度の大小に応じて決定される。このスキャン駆動リミット判定の詳しい動作については、図4を用いて後述する。
スキャン駆動リミット判定を行うと、次に、駆動リミットであるか否かを判定する(S27)。ここでは、ステップ25において、駆動リミットが発動されたか(図4のS57参照)、それとも駆動リミットが未発動であったか(図4のS59参照)に基づいて、カメラ側CPU107が判定する。
ステップS27における判定の結果、駆動リミットが未発動の場合には、次のAF評価値の取得を待つ(S29)。ここでは、AF評価値算出回路108が、撮像素子105からの次のフレームについて、AF評価値を算出できる状態になるまで待機する。次のAF評価値を取得できる状態になると、前述のステップS17に進む。このように、スキャン動作中に合焦位置が検出できず(S21No)、駆動リミットが未発動(S27No)の場合には、合焦位置を検出できるまで(S21Yes)、ステップS29、S17、S19、S21No、S25、S27Noの処理ループを繰り返し実行することとなる。一方、ステップS27における駆動リミットか否かの判定の結果、駆動リミットが発動された場合には、リターンに移行する。
ステップS21に戻り、ステップS19における判定の結果、合焦を検出した場合には、次に、詳細な合焦位置を演算する(S23)。ここでは、カメラ側CPU107は、AF評価値が最大値のフレーム、その前後フレームの計3点のAF評価値とフォーカスレンズ位置を用いて、2次関数近似によってAF評価値ピーク位置を算出する。また、合焦時刻も線形補間によって算出する。AF評価値ピーク位置に対応するフォーカスレンズ位置が、合焦位置である。
ステップS23において合焦位置を演算すると、次に、合焦履歴を更新する(S31)。ここでは、ステップS23において、合焦位置が算出された場合に、算出された合焦位置と時刻情報を合焦毎に履歴データとして保存・保持する。この履歴データは、メモリ115に記録される。
合焦履歴を更新すると、次に、動体予測演算を実行する(S33)。ここでは、カメラ側CPU107は、合焦履歴を参照し、過去複数回の合焦位置およびその時刻を用いて、最小二乗近似を用いて本露光時刻(図2のS5参照)における合焦位置を予測する。
動体予測演算を行うと、次に、2ndレリーズスイッチがオンか否かを判定する(S34)。この判定の結果、2ndレリーズスイッチがオンの場合(S34Yes)は、合焦位置へフォーカスレンズを駆動する(S35)。ここでは、カメラ側CPU107は、ステップS33における動体予測演算によって算出された合焦位置に、レンズ側CPU104を通じて、フォーカスレンズを駆動させる。フォーカスレンズを合焦位置に駆動すると、または2ndレリーズスイッチがオフの場合(S34No)、コントラストC-AF制御のフローを終了し、元のフローに戻る。
次に、図4に示すフローチャートを用いて、ステップS25(図3A参照)におけるスキャン駆動リミット判定の詳しい動作を説明する。被写体外れ等によって、被写体がAFターゲットから外れてしまった場合には、C-AFによってスキャン動作を継続しても、被写体にピント合わせ続けるのが困難となってしまう。一方、被写体がカメラの正面にあり、急速に後退する場合には、被写体外れが発生しにくく、C-AFによってスキャン動作を継続することにより被写体に追従させピント合わせを続けることが可能である。そこで、本実施形態においては、パン操作時のようなカメラの移動の移動量に基づいて、スキャン駆動範囲の制限を継続する時間を変化させている。この図4のスキャン駆動リミット判定においては、スキャン駆動リミットを発動するか否かを設定する。
図4のスキャン駆動リミット判定のフローが開始すると、まず、X,Y移動量を判定する(S41)。ここでは、角速度検出回路109によって検出されたカメラ本体の動き量に基づいて、X(水平)方向やY(垂直)方向の移動の量であるX,Y移動量が大きいか小さいかを判定する。このX,Y移動量判定の詳しい動作については、図5を用いて後述する。なお、X,Y移動量判定は、角速度検出回路109によってカメラの物理的な移動量を検出する以外にも、画像データに基づいて動きベクトルを算出し、この動きベクトルに基づいて判定してもよく(図6参照)、また被写体の輝度値に基づいて判定してもよい(図7参照)。
ステップS41において、X,Y移動量判定を行うと、次に、X,Y移動量が大であるか否かを判定する(S43)。X,Y移動量判定では、X,Y移動量が大か小かが判定されているので(図5のS73、S75参照)、このステップでは、カメラ側CPU107は、この判定結果に基づいて判定する。
ステップS43における判定の結果、X,Y移動量が大であった場合には、駆動リミット継続時間に長時間値を設定する(S45)。X,Y移動量が大である場合は、ユーザが被写体をAFターゲット内に捉えようと追いかけてカメラ本体をパン動作している場合が想定される。このような場合には、被写体外れが発生しやすく、スキャン駆動範囲を制限することが有効であることから、カメラ側CPU107は、スキャン駆動範囲を制限する時間、すなわち駆動リミット継続時間を比較的長時間に設定している。
一方、X,Y移動量が小であった場合には、駆動リミット継続時間に短時間値を設定する(S47)。X,Y移動量が小である場合は、ユーザがカメラをしっかりと保持して被写体を狙っている場合の他、例えば、至近側で被写体が急速後退するターザンロープやブランコのシーンを撮影している等、パン動作が小さくなるような状況の被写体を狙っていることが想定される。このような場合には、被写体外れが発生しないのでスキャン駆動範囲を制限することはさほど有効ではないことから、カメラ側CPU107は、駆動リミット継続時間を比較的短時間に設定している。なお、駆動リミット継続時間の短時間値としては、0であっても勿論かまわない。
ステップS45またはS47において、駆動リミット継続時間値を設定すると、次に、時刻差分を、スキャン動作中の現在時刻と前回合焦時刻の差から算出する(S49)。前回合焦時刻は、前回のスキャン動作中に合焦位置を検出した時刻であり、メモリ115に記憶されている。ここでは、カメラ側CPU107が、「時刻差分=現在時刻-前回合焦時刻」を演算する。C-AF制御では、AF評価値のピークを検出できれば、この合焦位置を検出した時刻が記録されている(図3AのS19参照)。このステップS49では、合焦位置が検出された直近の時刻と現在時刻の差分を算出し、すなわち、直近の合焦位置が検出された時刻からの経過時間を算出する。
ステップS49において、時刻差分を演算すると、次に、時刻差分が駆動リミット継続時間以上であるか否かを判定する(S51)。ここでは、カメラ側CPU107は、ステップS49において算出した時刻差分が、ステップS45またはS47において設定した駆動リミット継続時間以上であるか否かを判定する。
ステップS51における判定の結果、時刻差分が継続時間未満であった場合には、次に、位置差分を、前回合焦位置と現在位置の差分の絶対値から算出する(S53)。ここでは、カメラ側CPU107が、「位置差分=|前回合焦位置-現在位置|」を演算する。前回合焦位置は、直近のスキャン動作で検出された合焦位置(フォーカスレンズ位置)であり、現在位置はスキャン動作中の現在のフォーカスレンズ位置である。本実施形態においては、前回合焦時刻から現在時刻までの経過時間が駆動リミット継続時間未満の場合には、前回合焦位置からのスキャン駆動範囲がリミット距離に制限される。このステップでは、スキャン駆動範囲を制限するか否かを判定するために、前回合焦を検出した位置から、現在のフォーカスレンズの位置がどの位離れているかを算出している。
ステップS53において、位置差分を算出すると、次に、位置差分がリミット距離以上か否かを判定する(S55)。ここでは、カメラCPU107が、ステップS53において算出した位置差分が、リミット距離以上か否かを判定する。ユーザがパン動作によってAFターゲットに被写体を捉えようと追いかけている場合には、AFターゲットから被写体が外れても、被写体は略同じ位の距離にあることが多い。そこで、リミット距離は、上述の状況等を勘案して適宜設定すればよい。例えば、5~9フレーム分のスキャン駆動距離(スキャン速度×フレーム数)をリミット距離とする。
ステップS55における判定の結果、位置差分がリミット距離以上であった場合には、駆動リミットに発動を設定する(S57)。駆動リミットに発動を設定すると、フォーカスレンズの位置は直近の合焦位置からリミット距離の位置に制限され、動作中のスキャン駆動を停止する(図9(b)の被写体外れ区間、制限時間Tlim参照)。
ステップS55における判定の結果、位置差分がリミット距離未満の場合、またはステップS51における判定の結果、時刻差分が駆動リミット継続時間以上の場合には、駆動リミットに非発動を設定する(S59)。駆動リミットに非発動を設定すると、図3AのステップS27における判定の結果、ステップS29に進み、AF評価値の取得を待ち、合焦検出(S19、S21参照)を実行する。駆動リミットが非発動の場合は、AF評価値取得、合焦検出を繰り返し、合焦検出(S19)により合焦位置を検出した場合には(S21Yes)、合焦位置を演算し(S23参照)、動体予測演算を行い(S33参照)、2ndレリーズが全押しの場合はフォーカスレンズを合焦位置に駆動する(S35参照)。
ステップS57において駆動リミットに発動を設定すると、またはステップS59において駆動リミットに非発動を設定すると、スキャン駆動リミット判定のフローを終了し、元のフローに戻る。
このように、スキャン駆動リミット判定のフローにおいては、履歴データとして記録しているフレーム毎に得られる角速度情報に基づいて、X,Y移動量を判定する(S41、および後述する図5のS61、S64参照)。一定期間内の角速度に基づくX,Y移動量が閾値以上(大きくパン・チルトをしている)の場合は駆動リミット継続時間を長くする(S45参照)。一定期間内の角速度が閾値より小さい(大きくパン・チルトをしていない)場合は駆動リミット継続時間を短くしておく(S47参照)。前回合焦時刻から現在時刻までの経過時間が駆動リミット継続時間未満の場合は(S51No)、かつ、前回合焦位置から現在位置までの位置差分が駆動リミット距離以上の場合は、前回合焦位置からリミット距離に駆動が制限される(S55Yes、S57参照)。また、前回合焦位置から現在時刻までの経過時間が駆動リミット継続時間以上の場合は、駆動リミットを解除してスキャン駆動により被写体を追ってAF動作を行えるようにしている(S51Yes、S59参照)。
なお、図4ではX,Y移動量を大か小の2値に分類しているが(S41、43)、より多くの分類を設けてもよい。その分類に応じて、駆動リミット継続時間を長時間値と短時間値の間に複数の時間値を設けてもよい。また、図4では、継続時間(S51)、リミット距離(S55)を各1個としているが、複数の継続時間、リミット距離を設けておき、撮影レンズの焦点距離、絞り値等の撮影条件や撮影パラメータ等に応じて選択して切換えてもよい。
次に、図5に示すフローチャートを用いて、ステップS41(図4参照)におけるX,Y移動量判定の詳しい動作を説明する。X,Y移動量判定のフローが開始すると、まず、角速度を取得する(S61)。ここでは、角速度検出回路109が、1フレーム分、露光する間に、カメラ本体の動きに応じた角速度を検出し、検出結果をカメラ側CPU107に出力する。
続いて、履歴データに角速度を追加する(S64)。メモリ115には、合焦位置や合焦時刻等を示す履歴データが記録されている(図3BのS31参照)。このステップでは、カメラ側CPU107が、ステップS61において取得した角速度と、その時刻(フレームに対応する)を記録する。なお、この履歴データは、合焦位置等を記録する履歴データと別の履歴データであってもよい。
続いて、所定フレーム数以内の角速度平均値を算出する(S67)。ここでは、カメラ側CPU107が、ステップS64において記録した、所定フレーム数に対応する角速度を履歴データから読み出し、この読み出した角速度の平均値を算出する。ユーザがパン撮影を行う場合には、その動きの変化率が一定でない場合もあることから、所定フレーム数に対応する角速度の平均値を算出している。
次に、角速度の平均値が閾値以上か否かを判定する(S71)。ここでは、カメラ側CPU107が、ステップS67において算出した角速度の平均値が閾値以上か否かを判定する。ユーザがパン撮影を行っている場合には、角速度検出回路109によって検出された角速度の平均値が大きくなる。この判定に使用する閾値は、パン撮影を行っているか否かを判定できる程度の値であればよい。上記閾値は、例えば、2~4度/秒と設定される。一方、ターザンロープで遊ぶ子供を撮影する場合等においては、ユーザはカメラをほぼ同じ方向に向けているので、角速度の平均値は上記閾値より大きくならない。
ステップS71における判定の結果、角速度の平均値が閾値以上であった場合には、X,Y移動量として大が設定される(S73)。X,Y移動量として大が設定されると、スキャン駆動リミット判定のフロー(図4参照)において、駆動リミット継続時間として長時間値が設定される(図4のS45参照)。
一方、ステップS71における判定の結果、角速度の平均値が閾値未満であった場合には、X,Y移動量として小が設定される(S75)。X,Y移動量として小が設定されると、スキャン駆動リミット判定のフロー(図4参照)において、駆動リミット継続時間として短時間値が設定される(図4のS47参照)。
ステップS73またはS75において、X,Y移動量の設定を行うと、X,Y移動量判定のフローを終了し、元のフローに戻る。
次に、図6に示すフローチャートを用いて、ステップS41(図4参照)におけるX,Y移動量判定の変形例についての詳しい動作を説明する。図5に示すフローにおいては、カメラの動きについてジャイロ等を有する角速度検出回路109によって検出していた。これに対して、図6に示すフローにおいては、撮像素子105によって取得した画像データを用いて、動きベクトルを算出し、この動きベクトルに基づいて、カメラの動きを検出するようにしている。
図6に示すX,Y移動量判定のフローが開始すると、まず、画面周辺の動きベクトルを取得する(S62)。ここでは、画像処理回路111内の動きベクトル算出回路111aが、撮像素子105によって取得された画像データに基づいて、画面周辺の動きベクトルを算出する。
続いて、履歴データに動きベクトルを追加する(S65)。このステップでは、カメラ側CPU107が、ステップS62において取得した動きベクトルと、その時刻(フレームに対応する)を記録する。
続いて、所定フレーム数以内の動きベクトルの絶対値の平均値を算出する(S68)。ここでは、カメラ側CPU107が、ステップS65において記録した、所定フレーム数に対応する動きベクトルを履歴データから読み出し、この読み出した動きベクトルの平均値を算出する。ユーザがパン撮影を行う場合には、その動きの変化率が一定でない場合もあることから、所定フレーム数に対応する動きベクトルの絶対値の平均値を算出している。
次に、動きベクトルの絶対値の平均値が閾値以上か否かを判定する(S71)。ここでは、カメラ側CPU107が、ステップS67において算出した動きベクトルの絶対値の平均値が閾値以上か否かを判定する。ユーザがパン撮影を行っている場合には、動きベクトル算出回路111aによって算出された動きベクトルの絶対値の平均値が大きくなる。この判定に使用する閾値は、図5の場合と同様、パン撮影を行っているか否かを判定できる程度の値であればよい。上記閾値は、たとえば、角速度2~4度/秒に相当する動きベクトルの絶対値に設定する。
ステップS71における判定の結果、動きベクトルの平均値が閾値以上であった場合には、X,Y移動量として大が設定される(S73)。X,Y移動量として大が設定されると、スキャン駆動リミット判定のフロー(図4参照)において、駆動リミット継続時間として長時間値が設定される(図4のS45参照)。
一方、ステップS71における判定の結果、動きベクトルの平均値が閾値未満であった場合には、X,Y移動量として小が設定される(S75)。X,Y移動量として小が設定されると、スキャン駆動リミット判定のフロー(図4参照)において、駆動リミット継続時間として短時間値が設定される(図4のS47参照)。
ステップS73またはS75において、X,Y移動量の設定を行うと、X,Y移動量判定のフローを終了し、元のフローに戻る。
次に、図7に示すフローチャートを用いて、ステップS41(図4参照)におけるX,Y移動量判定の第2の変形例についての詳しい動作を説明する。図5に示すフローにおいては、カメラの動きについてジャイロ等を有する角速度検出回路109によって検出し、また、図6に示すフローにおいては、撮像素子105によって取得した画像データを用いて、動きベクトル算出回路111aが動きベクトルを算出し、この動きベクトルに基づいて、カメラの動きを検出するようにしている。これに対して、図7に示すフローにおいては、AE評価値算出回路108によって検出された被写体輝度値を用いて、カメラの動きを検出するようにしている。
図7に示すX,Y移動量判定のフローが開始すると、まず、画面周辺の輝度値を取得する(S63)。ここでは、AE評価値算出回路110が、撮像素子105によって取得された画像データに基づいて、画面周辺の被写体輝度値を算出する。
続いて、履歴データに輝度値を追加する(S66)。このステップでは、カメラ側CPU107が、ステップS63において取得した輝度値と、その時刻(フレームに対応する)を記録する。
続いて、所定フレーム数以内における輝度値変化率の最大値を算出する(S69)。ここでは、カメラ側CPU107が、ステップS66において記録した、所定フレーム数内における輝度値の変化率を算出し、この輝度値の変化率の中で最大の変化率となった輝度値を算出する。ユーザがパン撮影を行う場合には、その動きの変化率が一定でない場合もあることから、所定フレーム数の中で一番変化が大きかったときの変化率を算出している。すなわち、カメラを大きく動かすと、輝度値の変化率も大きくなることから、輝度値の変化率の中で一番大きい値を検出する。
次に、輝度変化率の最大値が閾値以上か否かを判定する(S72)。ここでは、カメラ側CPU107が、ステップS69において算出した輝度変化率の最大となったときの輝度値が閾値以上か否かを判定する。ユーザがパン撮影を行っている場合には、AE評価値算出回路110によって算出された輝度は大きく変化する。一方、ターザンロープで遊ぶ子供を撮影している場合には、輝度の変化は大きくない。この判定に使用する閾値は、図5の場合と同様、パン撮影を行っているか否かを判定できる程度の値であればよい。例えば、上記閾値を30~50%と設定する。
ステップS72における判定の結果、輝度変化率の最大値が閾値以上であった場合には、X,Y移動量として大が設定される(S73)。X,Y移動量として大が設定されると、スキャン駆動リミット判定のフロー(図4参照)において、駆動リミット継続時間として長時間値が設定される(図4のS45参照)。
一方、ステップS72における判定の結果、輝度変化率の最大値が閾値未満であった場合には、X,Y移動量として小が設定される(S75)。X,Y移動量として小が設定されると、スキャン駆動リミット判定のフロー(図4参照)において、駆動リミット継続時間として短時間値が設定される(図4のS47参照)。
ステップS73またはS75において、X,Y移動量の設定を行うと、X,Y移動量判定のフローを終了し、元のフローに戻る。なお、図5~図7においては、閾値(S71、72)をそれぞれ1種類としているが、複数の閾値を設けてもよい。複数の閾値を用いて分類し、分類に対応するX,Y移動量の大と小の間に複数の中間的な値を設け、選択してもよい。また、図5~図7の閾値について、それぞれ予め複数の閾値を記憶しておき、撮影レンズの焦点距離、絞り値等の撮影条件や撮影パラメータ等に応じて選択して切換えてもよい。また、図5~図7の手法を個別に採用するのではなく、複数種類を組合せてX,Y移動量を判定してもよい。
次に、図8ないし図10を用いて、本実施形態におけるC-AF制御について説明する。本実施形態においては、所定の条件に応じてスキャン駆動範囲を制限する時間である駆動リミット継続時間を設定している(図3AのS27Yes、図4参照)。スキャン駆動範囲を制限したいシーンは、被写体がAFターゲットから外れてしまうようなシーン(被写体外れ)の場合である。例えば、被写体がAFターゲットから外れてしまい、AFターゲット内は背景のみとなる場合(背景抜けともいう)である。一方、子供がターザンロープで遊んでいるシーンを、正面から撮影している場合に、子供が近づいた後に急速に後退している場合(急速後退ともいう)には、被写体はAFターゲットから外れることはなく、AFターゲット内にある。この場合はスキャン駆動範囲を制限する必要性は小さい。
上述の背景抜けと急速後退のシーンについて、図8を用いて詳述する。図8(a)は、背景抜けのシーンの場合を示す。ユーザはカメラ20aを子供に向けて撮影している。子供はユーザの前を横切って移動しており、子供は時刻T1においては、30aに示す位置にあり、時刻T2になると、30bに示す位置にある。このため、ユーザは、子供をAFターゲット内に捉えようとカメラ20aを30aの方向からパン動作させ、時刻T2では、カメラ20aは、30bの方向に向けている。時刻T1においてカメラ20aのピントが合っている場合に、その後カメラ20aのAFターゲットから子供がはずれて背景が入ると、AFターゲット内で取得された画像のコントラスト値は低下してしまうこととなる。
図8(b)は、急速後退のシーンの場合を示す。ユーザはカメラ20aを、ターザンロープで遊んでいる子供に向けている。時刻T3において、子供は位置31aにあり、カメラ20aに近づいてきて、時刻T4において子供は位置31bにある。このように、時刻T3から時刻T4において子供は、急速にカメラ20aに接近し、時刻T4を過ぎると子供は、急速にカメラ20aから離れるように後退していく。時刻T4までに子供がカメラ20aに急速接近し、その後、子供が急速に後退すると、AFターゲット内に子供を捉えているもののAFターゲット内で取得される画像のコントラスト値は低下することとなる。
スキャン駆動範囲を制限したい場合は、図8(a)に示すような、被写体がAFターゲットから外れてしまったシーンである。しかしながら、コントラストAFでは、AF評価値(コントラスト値)に基づいてこの状況を判別することができない。つまり、背景抜けも急速後退もAF評価値の低下に関して同じように見える。ただ、ユーザの利用シーンから、被写体外れが発生するのは、ユーザが被写体をAFターゲットとして捉えようと追いかけているとき、すなわち、パン撮影やチルト撮影を行っている場合が多い(図8(a)参照)。一方で、被写体の急速後退が発生するターザンロープやブランコのシーンを正面から撮影する場合では、被写体がAFターゲットから外れにくく、パンやチルトさせることは少ない(図8(b)参照)。
本実施形態では、上述の点に着目し、カメラ本体の位置変化に応じて、スキャン駆動範囲を制限する期間を変化させている。さらに、図8(a)に示すように、カメラの位置変化が大きい場合には、スキャン駆動範囲を制限する期間を長くすることによって、ユーザが被写体外れから再度被写体をAFターゲットに捉え直すために要する時間だけ、スキャン駆動範囲を制限して待つことができるようにする。そして、ユーザが再度被写体をAFターゲットに捉えた後に、スキャン駆動範囲の制限を解除して被写体の移動に追従してAFできるようにする。一方、図8(b)に示すように、カメラの位置変化が小さい場合には、スキャン駆動範囲を制限する期間を短くする(極端な場合には、期間を0にする)ことによって、AFターゲットに捉えている被写体が急速に後退しても即座に追従してAFできるようにしている。
次に、図9を用いて、背景抜けの場合におけるC-AF制御について説明する。図9は、前述した図8(a)の場合と同じであり、例えば徒競争している子供等を横から撮影し、被写体外れが生じる場合を示している。図9のグラフにおいて、横軸は時間の流れを、また縦軸はフォーカスレンズの位置を示す。また、横軸の時間において、全区間に亘って、パン操作がなされ、カメラ本体に加えられた角速度が大である。さらに、実線Subは、被写体の位置を示している(グラフ上では、フォーカスレンズの位置に置き換えている)。
図9(a)は、本実施形態におけるスキャン駆動範囲の制限を行わない例を示す。この例では、時刻t1から時刻t4の少し前までは、合焦位置Fin1~Fin3が確定しているが、時刻t4~時刻t6aまでは被写体外れ区間であり、大ボケ状態となり、合焦位置を見出すことができない。被写体外れ区間は、ユーザが移動している子供(被写体Sub)をAFターゲット内に捉えようとパン動作を行う間に、子供(被写体Sub)がAFターゲットから外れている時間を示している。被写体外れ区間としては、一般的なシーンに対する様々なユーザの個人差を含めて、1秒程度が見込まれる。時刻t6になるとスキャンSc6を行って、合焦位置Fin6を見出しているが、これは背景に対する合焦位置を検出しているだけであって、被写体Subに対する合焦位置を検出していない。
図9(a)において、時刻t6aにおいて被写体外れ区間が終了すると、つまり、ユーザが再度AFターゲット内に子供(被写体Sub)を捉えた場合に、フォーカスレンズをスキャンしながら、被写体Subの合焦位置を検出しようとする。しかし、1回のスキャン駆動に対応するフレーム数を、例えば15フレーム程度と設定していることにより、時刻t6aのフォーカスレンズ位置から遠く離れた合焦位置の被写体Subに対して合焦できるのは、時刻t10からのスキャンSc10の結果得られた合焦位置Fin10からである。このように、図9(a)に示す例では、徒競争を横から撮影している場合に、突然、被写体を見失う(被写体外れ)と、被写体以外(背景)にピントが合ってしまい、再び、ユーザが被写体をAFターゲット内に捉えても、その被写体にピントが合うまでに相当の時間がかかってしまう。
図9(b)は、本実施形態におけるスキャン駆動範囲の制限を行い、かつスキャン駆動範囲を制限する制限時間(駆動リミット継続時間)Tlimを設けた場合の例を示す。この例では、時刻t1から時刻t4の少し前までは、各スキャン駆動動作により合焦位置Fin1~Fin3が検出されて確定している。時刻t4~時刻t7aまでは、図9(a)の場合と同様に被写体外れ区間であり、ユーザが移動している子供(被写体Sub)をAFターゲット内に捉えようとパン動作を行う間に、子供(被写体Sub)がAFターゲットから外れて大ボケ状態となる。カメラをパン動作させているので、スキャン駆動範囲は上限Dulimと下限Ddlimに制限される。この間、すなわち制限時間(駆動リミット継続時間)Tlimの間、スキャン駆動範囲は制限され、背景に対応する合焦位置までスキャン駆動を行なうことがないようにしている。
図4のスキャン駆動リミット判定との対応を説明する。パン操作がなされているのでX,Y移動量は大と判定され(S43Yes)、駆動リミット継続時間が長時間値に設定される(S45)。そして、駆動リミット継続時間Tlim内では(S49、S51Yes)、スキャン駆動範囲は、上限Dulimと下限Ddlimの間に制限され(図4のS53、S55Yes参照)、駆動リミットが発動され(図4のS57、図3AのS27参照)、スキャン駆動範囲が前回合焦位置からリミット距離内に制限される。すなわち、駆動リミット継続時間Tlim内では、フォーカスレンズは制限されたスキャン駆動範囲内でのみ移動可能である。このため、図9(a)の場合と異なり、背景の合焦位置を検出するようなスキャン駆動を行うことがなく、スキャン駆動範囲を制限し被写体Subの位置近傍にフォーカスレンズを位置させた状態となっている。
時刻t7aになると、被写体外れ区間が終わり、つまり、再び、AFターゲット内に被写体を捉える状態となる。この状態になり、時刻t7bにて制限時間(駆動リミット継続時間Tlim)が経過すると、制限が解除されたスキャン駆動範囲を使用したスキャン動作により、被写体にピントを合わせることが可能となり、合焦位置Fin8,Fin9,・・・と、被写体の合焦位置を検出し追従することができる。
このように、図9(b)に示す例では、徒競争のシーンを撮影している場合に、AFターゲットから被写体が外れた場合(被写体外れ)には、ユーザは被写体をAFターゲット内に捕捉しようとして、カメラをパン動作させる。このカメラの動きを検出すると、スキャン駆動範囲を制限するようにしているので、被写体を見失う前の被写体の合焦位置の近傍にフォーカスレンズを位置させておくことができる。ユーザが再度被写体をAFターゲット内に捕捉し、被写体外れ区間と推定される時間より長い制限時間(駆動リミット継続時間Tlim)が経過すると、スキャン駆動範囲の制限を解除して、迅速に被写体にピントを合わせることができる。駆動リミット継続時間Tlimの長時間値は、例えば、1.1~1.5秒と設定される。この長時間値は、撮影条件、撮影パラメータに応じて変化させてもよい。
次に、図10を用いて、急速後退が起きるシーンの場合におけるC-AF制御について説明する。図10は、前述した図8(b)の場合と同じであり、ターザンロープやブランコで遊んでいる子供等(被写体)を正面から撮影し、被写体が近づいた後に急速に後退する場合を示している。図10のグラフにおいて、横軸は時間の流れを、また縦軸はフォーカスレンズの位置を示す。また、横軸の時間において、全区間に亘って、パン操作はなく、カメラ本体に加えられた角速度が小である。さらに、実線Subは、被写体の位置を示している(グラフ上では、フォーカスレンズの位置に置き換えている)。
図10(a)は、本実施形態における特徴的な処理であり、スキャン駆動範囲を制限し、かつ、検出したパン操作に基づきスキャン駆動範囲を制限する制限時間Tlimを設ける、ということを行わない例を示す。この例は、被写体外れによる図9(a)に示す問題を回避するために、スキャン駆動範囲を制限しスキャン駆動範囲を制限する制限時間を長時間値に固定して設定している。そのため、被写体の急速後退に追従できなくなっている。時刻t14~t16では、被写体が急速に接近し、時刻t16~t19では被写体が急速に後退している。時刻t16までは、スキャン駆動範囲の上限Dulimおよび下限Ddlimの間でスキャン駆動させ、被写体の合焦位置を検出している(検出合焦位置Fin11~Fin16参照)。
時刻t16において被写体が最接近した後、被写体は急速に後退していくが、検出合焦位置Fin11~Fin16の情報に基づく動体予測演算により、時刻t17の合焦位置はFin16よりも至近側と予測され、これに対応するスキャン駆動範囲を設定しスキャン駆動を行う(Sc17)。しかし、被写体Subは急速後退しているので、上記スキャン駆動Sc17で合焦位置を検出することができない。時刻t21になると、スキャン駆動範囲の制限時間(長時間値)が経過し、スキャン駆動範囲の制限が解除される。しかし、時刻t21における被写体Subの位置は、時刻t20のスキャン駆動範囲(Dulim~Ddlim)から遠くになってしまい、被写体Subに対して、合焦するまでに相当の時間がかかってしまう。
図10(b)は、本実施形態における特徴的な処理である、スキャン駆動範囲を制限し、かつ、検出したパン操作に基づきスキャン駆動範囲を制限する制限時間(駆動リミット継続時間)Tlimを設ける、ということを行った例を示す。この例では、パン操作がないか又は小さいことから、スキャン駆動範囲の制限を行う期間を短くし短時間値としている(図4のS43No、S47)。時刻t11~t16までは、図10(a)と同じく、被写体Subの近づく動きに追随して、合焦位置Fin11~Fin16を検出している。
時刻t16において、検出合焦位置Fin11~Fin16の情報に基づく動体予測演算により、t17の合焦位置はFin16よりも至近側と予測され、これに対応するスキャン駆動範囲を設定しスキャン駆動を行う(Sc17)。しかし、時刻t16以後は、被写体Subは急速後退しているので上記スキャン駆動Sc17で合焦位置を検出することができない。そして、合焦位置が検出できないので(図3AのS21No)、スキャン駆動リミット判定(図3AのS25)により駆動リミットが発動され(図4のS49、S51No、S53、S55Yes、S57)、スキャン駆動はDlimの上限Dulimで制限される(図3AのS27Yes)。
時刻t17以後は、スキャン駆動範囲の制限が適用され、前回検出合焦時刻t16付近から短期間(この短期間には0も含む短時間値:図4のS47参照)だけTlimと設定される。Tlimの経過を検出してスキャン駆動範囲の制限を解除(駆動リミットを非発動)し(図4のS49、S51Yes、S59参照)、被写体Subの位置を検出するようにしている。すなわち、スキャン駆動範囲は、前回検出合焦位置Fin16を中心にフォーカス移動範囲(リミット距離Dlim)に制限されているが、制限期間Tlimは短期間(短時間値)であることから、スキャン駆動範囲の制限を解除し迅速に被写体を追従することができる。図10(b)に示す例では、制限期間(駆動リミット継続時間)Tlimは短期間(短時間値)であり、この期間が経過した後、時刻t19で、スキャン駆動SC19により合焦位置Fin17を検出することができる。駆動リミット継続時間Tlimの短時間値は、たとえば0から0.2秒と設定される。この短時間値は、撮影条件、撮影パラメータ等に応じて変化させてもよい。
このように、図10(b)に示す例では、ターザンロープやブランコで遊んでいる子供等を被写体として撮影しているシーンで、被写体はカメラの正面にあり、カメラからの距離が急速に変化する場合には、被写体はAFターゲット内に捕捉されたままであることから、カメラを大きく動かすことはない。このカメラの動きが小さいことを検出すると、スキャン駆動範囲を制限する期間を短期間(0を含む短時間値)にしているので、短時間値の経過後にスキャン駆動範囲の制限を解除し、被写体が急速に後退する場合であっても、迅速に焦点検出を再開し、ピントを合わせることができる。
以上説明したように、本発明の一実施形態や変形例における焦点検出装置は、撮影光学系を通過する被写体光を光電変換して撮像信号を出力する撮像素子(例えば、図1の撮像素子105参照)を有し、撮像素子の撮像面のフォーカスを変化させるスキャン動作を実行しながら撮像信号に基づいてコントラストを示す評価値を算出して焦点検出を行う(例えば、図3AのS15~S23参照)。この焦点検出装置における焦点検出方法として、焦点検出装置の位置変化を検出し(例えば、図3AのS25、図4のS41参照)、この位置変化に基づいてスキャン動作のフォーカス移動範囲を制限する継続時間を設定し(例えば、図3AのS25、図4のS45、S47)、継続時間に基づいてスキャン動作のフォーカス移動範囲を制限して焦点検出を行っている(例えば、図4のS51、S57、S59、図3AのS27参照)。このため、本実施形態においては、被写体が急速に後退する場合であっても、AFが追従することができる。すなわち、スキャン動作のフォーカス移動範囲を制限する場合であっても、焦点検出装置の位置変化に基づいて、制限する時間を変化させているので、被写体の状態に関わらず(被写体が急速に後退する場合であっても)、AFが追従することができる。
また、本発明の一実施形態や変形例においては、焦点検出装置の位置変化が大きいほどスキャン動作のフォーカス移動範囲を制限する継続時間を長くしている(例えば、図4のS43~S47参照)。ユーザが焦点検出装置の位置を大きく移動させている場合には、ユーザが被写体を捉えるまでの時間がかかり、一方、焦点検出装置の位置を大きく移動させていない場合には、そのままでも被写体を捉えている。このように、焦点検出装置の位置変化に応じてフォーカス移動範囲の制限時間を変えるこのよって、被写体の状態に関わらず、AFが追従することができる。
また、本発明の一実施形態や変形例においては、前回合焦時刻から現在時刻までの経過時間が継続時間未満の場合に前回合焦位置からのフォーカス移動範囲を所定量に制限している(例えば、図4のS49~S57参照)。すなわち、フォーカスレンズが合焦してから所定時間(継続時間)の間は、フォーカスレンズの移動範囲を所定量(リミット距離)に制限している。このため、所定時間(継続時間)の間に、フォーカスレンズが大きく移動することはなく、所定時間経過後に、被写体がAFターゲット内あれば(または戻ってくれば)、迅速にピントが合った状態となる。
なお、本発明の一実施形態や変形例においては、位置変化検出部として、角速度検出回路109や動きベクトル算出回路111a等の回路を設けていた。しかし、位置変化検出部としては、角速度検出、動きベクトル検出、輝度値検出のいずれか1つによって行うことができればよいので、使用しない検出を省略してしてもよい。また、本発明の一実施形態や変形例においては、位置変化検出部として、角速度検出、動きベクトル検出、輝度値検出のいずれか1つによって行っていたが、これらを組み合わせて位置変化を検出してもよい。従って、焦点検出装置の位置変化を検出する、角速度検出回路、動きベクトル算出回路、輝度値算出回路の少なくとも1つを有すればよい。
また、本発明の一実施形態や変形例においては、カメラ側CPU107とは別に、AF評価値算出回路108、角速度検出部109、AE評価値算出回路110、画像処理回路110等を設けていた。しかし、これに限らず、これらの回路の全部または一部をカメラ側CPU107の周辺回路に取り込んでもよい。また、これらのハードウエア回路に代えて、CPUとプログラムによってソフトウエア的に構成してもよく、ヴェリログ(Verilog)によって記述されたプログラム言語に基づいて生成されたゲート回路等のハードウエア構成でもよく、またDSP(Digital Signal Processor)を利用して構成してもよい。これらは適宜組み合わせてもよいことは勿論である。また、CPUに限らず、コントローラとしての機能を果たす素子であればよい。
また、カメラ側CPU107内のCPUは、コントローラとしての機能を果たす素子であればよい。上述した各回路の処理は、ハードウエアとして構成された1つ以上のプロセッサが行うようにしてもよい。例えば、各部は、それぞれが電子回路として構成されたプロセッサであっても構わないし、FPGA(Field Programmable Gate Array)等の集積回路で構成されたプロセッサにおける各回路部であってもよい。または、1つ以上のCPUで構成されるプロセッサが、記録媒体に記録されたコンピュータプログラムを読み込んで実行することによって、各部としての機能を実行するようにしても構わない。
また、本実施形態においては、撮影のための機器として、デジタルカメラを用いて説明したが、カメラとしては、デジタル一眼レフカメラでもミラーレスカメラでもコンパクトデジタルカメラでもよく、ビデオカメラ、ムービーカメラのような動画用のカメラでもよく、さらに、携帯電話、スマートフォン、携帯情報端末、パーソナルコンピュータ(PC)、タブレット型コンピュータ、ゲーム機器等に内蔵されるカメラ、医療用カメラ(例えば、医療用内視鏡)、顕微鏡等の科学機器用のカメラ、工業用内視鏡、自動車搭載用カメラ、監視用カメラでも構わない。いずれにしても、コントラストAFによってピント合わせを行う機器であれば、本発明を適用することができる。
また、本明細書において説明した技術のうち、主にフローチャートで説明した制御に関しては、プログラムで設定可能であることが多く、記録媒体や記録部に収められる場合もある。この記録媒体、記録部への記録の仕方は、製品出荷時に記録してもよく、配布された記録媒体を利用してもよく、インターネットを通じてダウンロードしたものでもよい。
また、本発明の一実施形態においては、フローチャートを用いて、本実施形態における動作を説明したが、処理手順は、順番を変えてもよく、また、いずれかのステップを省略してもよく、ステップを追加してもよく、さらに各ステップ内における具体的な処理内容を変更してもよい。
また、特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず」、「次に」等の順番を表現する言葉を用いて説明したとしても、特に説明していない箇所では、この順で実施することが必須であることを意味するものではない。
本発明は、上記実施形態にそのまま限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせによって、種々の発明を形成できる。例えば、実施形態に示される全構成要素の幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。