図1は本発明の実施例1に係わる電子カメラの回路構成を示すブロック図である。図1において、101はズーム機構を含む撮影レンズ、102は光量を制御する絞り及びシャッターである。103はAE処理部、104は後述する撮像素子上に焦点を合わせるためのフォーカスレンズである。105はAF処理部、106はストロボ、107はEF処理部である。108は被写体からの反射光を電気信号に変換する受光手段又は光電変換手段としての撮像素子である。109は撮像素子108の出力ノイズを除去するCDS回路やA/D変換前に行う非線形増幅回路を含むA/D変換部である。
110は画像処理部、111はWB(ホワイトバランス)処理部、112はフォーマット変換部、113は高速な内蔵メモリ(例えばランダムアクセスメモリなど、以下、DRAM)である。114はメモリカードなどの記録媒体とそのインターフェースからなる画像記録部である。115は撮影シーケンスなどシステムを制御するシステム制御部、116は画像表示用メモリ(以下、VRAMという)である。117は画像表示の他、操作補助のための表示やカメラ状態の表示の他、撮影時には撮影画面とAF(オートフォーカス)領域を表示する操作表示部、118はカメラを外部から操作するための操作部である。
119はプログラム、風景、人物、スポーツなどの撮影モードを設定する撮影モードスイッチ(SW)、120は1枚撮影、連続撮影(連写)、セルフタイマー撮影などのドライブモード設定を行うドライブモードスイッチである。121は常に被写体にピントを合わせ続けるContinuousAFモードと、撮影前のスキャンのみでピントを合わせるSingleAFモードを選択するAFモードスイッチである。122はシステムに電源を投入するためのメインスイッチ、123はAFやAE等の撮影スタンバイ動作(撮影準備動作)を行うためのスイッチ(以下、SW1)、124はスイッチSW1の操作後、撮影を行う撮影スイッチ(以下、SW2)である。
上記DRAM113は一時的な画像記憶手段としての高速バッファとして、あるいは画像の圧縮伸張における作業用メモリなどに使用される。操作部118は、例えば、撮像装置の撮影機能や画像再生時の設定などの各種設定を行うメニュースイッチ、撮影レンズのズーム動作を指示するズームレバー、撮影モードと再生モードの動作モード切換スイッチなどを含む。
以下、本発明の実施例1の動作について、図2を参照しながら詳述する。図2は本発明の実施例1に係わる電子カメラの一連の動作を示すフローチャートである。
まずステップS201では、メインスイッチ122の状態を検出し、ONであればステップS202へ進む。ここで、メインスイッチ122の機能はシステムに電源を投入することである。次のステップS202では、記録媒体である画像記録部114の残容量を調べ、残容量が0であればステップS203へ進み、そうでなければステップS204へ進む。ステップS203では、画像記録部114の残容量が0であることを警告してステップS201に戻る。警告は操作表示部117に表示するか又は図示しない音声出力部から警告音を出すか、又はその両方を行ってもよい。
ステップS204へ進むと、AFモードがContinuousAFモードであるかSingleAFモードであるかを調べ、ContinuousAFモードであればステップS205へ進み、SingleAFモードであればステップS206へ進む。ステップS205では、後述する図3のフローチャートに従ってContinuousAFを行う。
次のステップS206では、スイッチSW1の状態を調べ、ONであればステップS208へ進み、そうでなければステップS207へ進む。スイッチSW1の機能は、AFやAEなどの撮影スタンバイ動作を行うことである。スイッチSW1がOFFであるとしてステップS207へ進むと、ここではメインスイッチ122の状態を調べ、ONであればステップS204へ、そうでなければステップS201へ、それぞれ戻る。
スイッチSW1がONであるとしてステップS208へ進むと、AE処理部103で画像処理部110の出力からAE処理を行う。そして、次のステップS209にて、後述する図4のフローチャートに従ってAF動作を行う。続くステップS210では、スイッチSW2の状態を調べ、ONであればステップS212へ進み、そうでなければステップS211へ進む。スイッチSW2の機能は、スイッチSW1の操作後撮影を行うことである。スイッチSW2がOFFであるとしてステップS211へ進むと、スイッチSW1の状態を調べ、ONでなければステップS204へ戻り、ONであればステップS210へ戻って、スイッチSW2がONされるかスイッチSW1がOFFされるまで、フォーカスをロックする。
スイッチSW2がONであるとしてステップS212へ進むと、後述する図11のフローチャートに従って撮影動作を行う。次のステップS213では、画像記録部114の残容量を調べ、残容量が0であれば警告を行う上記のステップS203へ戻り、そうでなければステップS214へ進む。ステップS214へ進む。ドライブモードスイッチ120により連写モードに設定されているか、または撮影モードスイッチ119により連写モードがデフォルト設定となる撮影モードに設定されているかを調べる。この結果、連写モードであればステップS216へ進み、そうでなければステップS215へ進む。
連写モードではないとしてステップS215へ進むと、スイッチSW2の状態を調べ、ONであればこの間は撮影画像を操作表示部117に表示し、スイッチSW2がOFFするとステップS211へ進む。また、連写モードであるとしてステップS216へ進むと、ここではスイッチSW2の状態を調べ、ONでなければ上記ステップ215の場合と同様にステップS211へ進む。スイッチSW2がONであれば連写撮影のためにステップS209へ進み、後述する図4のフローチャートに従って連写時のAF動作へと進む。
次に、図2のステップS205におけるContinuousAFのサブルーチンについて、図3のフローチャートを参照しながら説明する。
まずステップS301では、焦点評価値を取得する。次のステップS302では、ピーク検出フラグがTRUE(真)であるかどうかを調べ、TRUEであればステップS317へ進み、FALSE(偽)であればステップS303へ進む。ステップS303へ進むと、フォーカスレンズ104の現在位置を取得する。そして、次のステップS304にて、焦点評価値の取得及びフォーカスレンズ104の現在位置の取得をカウントするための取得カウンタに1を加える。この取得カウンタは、初期化動作(不図示)において予め0に設定されているものとする。
次のステップS305では、取得カウンタの値が1かどうかを調べ、取得カウンタの値が1ならばステップS307へ進み、取得カウンタの値が1でなければ(1より大きければ)ステップS306へ進む。ステップS306では、「今回の焦点評価値」が「前回の焦点評価値」よりも大きいかどうかを調べる。「今回の焦点評価値」が「前回の焦点評価値」よりも大きければステップS307へ進み、そうでなければステップS313へ進む。ステップS307へ進むと、今回の焦点評価値を焦点評価値の最大値としてシステム制御部115に内蔵される図示しない演算メモリに記憶する。そして、次のステップS308にて、フォーカスレンズ104の現在の位置を焦点評価値のピーク位置としてシステム制御部115に内蔵される上記演算メモリに記憶する。続くステップS309では、今回の焦点評価値を前回の焦点評価値としてシステム制御部115に内蔵される上記演算メモリに記憶する。
次のステップS310では、フォーカスレンズ104の現在位置がAF範囲の端にあるかどうかを調べる。フォーカスレンズ104の現在位置が端にあればステップS311へ進み、そうでなければステップS312へ進む。ステップS311では、フォーカスレンズ104の移動方向を反転する。そして、次のステップS312にて、フォーカスレンズ104を所定量移動し、図2のフローチャートへリターンする。
上記ステップS306にて「今回の焦点評価値」が「前回の焦点評価値」よりも大きくないとしてステップS313へ進むと、「焦点評価値の最大値−今回の焦点評価値」が所定量より大きいかどうかを調べる。「焦点評価値の最大値−今回の焦点評価値」が所定量より大きければステップS314へ進み、そうでなければステップS309へ進む。ここで「焦点評価値の最大値−今回の焦点評価値」が所定量より大きい、即ち最大値から所定量を越えて減少していれば、その最大値をピントのピーク位置での値とみなす。そして、ステップS314にて、フォーカスレンズ104をステップS308で記憶した焦点評価値が最大値となったピーク位置へ移動させる。続くステップS315では、ピーク検出フラグをTRUEとし、次のステップS316にて、取得カウンタを0とし、図2のフローチャートへリターンする。
上記ステップS302にてピーク検出フラグがTRUEであるとしてステップS317へ進むと、今回の焦点評価値が焦点評価値の最大値に対して所定割合以上変動したかどうかを調べる。そして、所定割合以上の大きな変動をしていればステップS319へ進み、小さな変動であればステップS318へ進む。ステップS318では、フォーカスレンズ104の位置をそのまま保持する。一方、ステップS319では、焦点評価値が最大となるフォーカスレンズ位置を再び求め直すためにピーク検出フラグをFALSEとし、焦点評価値の最大値およびピーク位置をリセットし、図2のフローチャートへリターンする。
以上のようにして、ContinuousAF動作では常に合焦状態となるようにフォーカスレンズ104を駆動する。
次に、図2のステップS209のAF動作のサブルーチンについて、図4及び図5を参照しながら説明する。なお、図5はスキャン範囲設定についての説明図である。
まずステップS401では、ドライブモードスイッチ120により連写モードに設定されているか、または撮影モードスイッチ119により連写モードがデフォルト設定となる撮影モードに設定されているかを調べ、連写モードであればステップS412へ進み、そうでなければステップS402へ進む。
連写モードではないとしてステップS402へ進むと、AFモードスイッチ121によりAFモード設定がContinuousAFモードであるかSingleAFモードであるかを調べ、ContinuousAFモードであればステップS403へ進み、SingleAFモードであればステップS405へ進む。ステップS403では、上記の図3のフローチャートにおけるピーク検出フラグがTRUEであるかどうかを調べ、TRUEであればステップS404へ進み、FALSEであればステップS405へ進む。
ステップS404では、ContinuousAF動作により焦点評価値がピークを示す合焦位置付近にフォーカスレンズ104が位置するため、合焦精度を向上させることを主な目的として現在のフォーカスレンズ位置を中心とした狭いスキャン範囲を設定する。ここで、スキャン範囲は、後述する図7のフローチャートによる合焦判定に必要なスキャンデータ数を満たすと同時に、スキャン時間が不必要に長くならないように設定する。一方、ステップS405へ進んだ場合は、設定されたモードにおけるAF可能範囲全域をスキャン範囲に設定する。
次のステップS406では、後述する図6のフローチャートに従ってステップS404もしくはステップS405で設定されたスキャン範囲のスキャンを行う。そして、次のステップS407にて、ステップS406で記憶したスキャンデータにより後述する図7のフローチャートにしたがって合焦判定を行う。続くステップS408では、ステップS407における合焦判定の結果が○(後述のように焦点調節が可能であることを意味する)であればステップS409へ進み、×であればステップS410へ進む。
合焦判定の結果が×であるとしてステップS410へ進むと、設定されたモードにおけるAF可能範囲全域のスキャンが済んでいるかを調べ、全域スキャン済みであればステップS411へ進み、定点と呼ばれるあらかじめ設定された位置へフォーカスレンズ104を移動する。また、全域スキャン未完了であればステップS405へ戻って同様の動作を繰り返す。合焦判定の結果が○であるとしてステップS408からステップS409へ進んだ場合は、ステップS406または後述のステップS418のスキャンにおいて計算したピーク位置へフォーカスレンズ104を移動する。
上記ステップS401にて連写モードであるとしてステップS412へ進むと、連写撮影の1枚目であるかどうか調べ、連写1枚目であればステップS403へ進み、連写1枚目でなければステップS413へ進む。連写1枚目は、合焦位置履歴情報による被写体予測が不可能であるためにContinuousAFと同じ動作となるが、これはステップS404において狭いスキャン範囲が設定され、レリーズタイムラグが短くなることを期待している。従って、連写モード時にはContinuousAFモードをデフォルト設定とすると良い。
連写1枚目でないとしてステップS413へ進むと、連写撮影の2枚目であるかどうか調べ、連写2枚目であればステップS414へ進み、連写2枚目でなければステップS415へ進む。
連写2枚目であるとしてステップS414へ進むと、連写1枚目撮影時のフォーカスレンズ位置をスキャン範囲中心として設定する。スキャン範囲幅は連写の時間間隔を延ばさないことを優先して設定すると、バッファ用途のDRAM113に余裕がある状態における連写撮影間隔内にAF動作が終了するスキャン範囲幅設定を、最大スキャン範囲幅設定となる。このステップS414では、被写体移動に関する情報が全く無いため、前記最大スキャン範囲幅を設定する。具体的には、後述する図7のフローチャートによる合焦判定が可能なスキャンデータ数を得る時間と、スキャン開始位置への移動時間およびスキャン終了後合焦位置への移動時間と、各種演算時間の合計時間が、連写間隔時間よりも短くなるように設定する。
連写2枚目でないとしてステップS415へ進むと、今度は連写撮影の3枚目であるかどうかを調べ、連写3枚目であればステップS416へ進む。そして、このステップS416では、合焦位置履歴情報として連写1枚目と2枚目の2つの合焦位置情報(FP1、FP2)があるので、式(1)の1次近似により被写体予測を行ってスキャン中心位置ObjP3を求める。
ObjP3=FP2+(FP2−FP1)×FpAdj3 ・・・(1)
ここで、パラメータFpAdj(n)は、被写体予測結果と直前の合焦位置の重み付け設定のパラメータであり、0〜1の値をとる。図5のフォーカスレンズ位置ではFpAdj(n)=1としている。
連写3枚目でない場合はステップS415からステップS417へ進む。合焦位置履歴情報として少なくとも直前3枚の合焦位置情報(FP1、FP2、FP3)があるので、式(2)の2次近似により被写体予測を行ってスキャン中心位置ObjP4を求める(図5参照)。
ObjP4=(FP1−3・FP2+3・FP3)×FpAdj4+FP3
×(1−FpAdj4)
=(FP1−3・FP2+2・FP3)×FpAdj4+FP3 ・・・(2)
次のステップS418では、後述する図6のフローチャートに従ってスキャンを行い、上記したステップS409以降の処理へ進む。
連写2枚目以降においては、後述する図7のフローチャートによる合焦判定結果が×となるような場合でも、定点へフォーカスレンズ104を駆動して撮影するよりも、前回の合焦位置付近に設定されたスキャン範囲におけるピーク位置で撮影した方がボケない可能性が高いため、合焦判定処理は行わない。と同時に、合焦表示も行わない。ここで、上記スキャン範囲は、後述の合焦判定に必要なスキャンポイント数を満たすように、またスキャンに要する時間が不必要に長くならないように設定される。
次に、図4のステップS406もしくはステップS418におけるスキャンのサブルーチンについて、図6のフローチャートにより説明する。
まずステップS601では、フォーカスレンズ104をスキャン開始位置に移動する。スキャン開始位置は設定されたスキャン範囲の一端に設定される。次のステップS602では、撮影画面内に設定されるAF領域の焦点評価値とフォーカスレンズ104の位置をシステム制御部115に内蔵される図示しない演算メモリに記憶する。続くステップS603では、フォーカスレンズ位置がスキャン終了位置にあるかどうかを調べ、スキャン終了位置であればステップS605へ進み、そうでなければステップS604へ進む。上記スキャン終了位置は、設定されたスキャン範囲の他端に設定される。
ステップS604へ進んだ場合は、フォーカスレンズ104を駆動して所定の方向へ所定量動かす。また、ステップS605へ進んだ場合は、ステップS602で記憶した焦点評価値とそのレンズ位置から、焦点評価値のピーク位置を計算する。
次に、図4のステップS407における合焦判定のサブルーチンについて、図7〜図10を参照しながら説明する。
焦点評価値は遠近競合などの特殊な場合を除けば、横軸にフォーカスレンズ位置、縦軸に焦点評価値をとると、その形は図10に示すような山状になる。そこで、焦点評価値が山状になっているか否かを、焦点評価値の最大値と最小値の差、一定値(SlopeThr)以上の傾きで傾斜している部分の長さ、傾斜している部分の勾配から判定することにより、合焦判定を行うことができる。合焦判定における判定結果は、以下に示すように○×で出力される。
○:焦点評価値のピーク位置から、被写体の焦点調節が可能である。
×:被写体のコントラストが不十分、もしくはスキャンした距離範囲外の距離に被写体が位置する。
ここで、図10に示すように、山の頂上(A点)から傾斜が続いていると認められる点をD点、E点とし、D点とE点の幅を山の幅L、A点とD点の焦点評価値の差SL1とA点とE点の焦点評価値の差SL2の和(SL1+SL2)をSLとする。
まずステップS701では、焦点評価値の最大値maxと最小値min、及び最大値を与えるスキャンポイントioを求める。次のステップS702では、焦点評価値の山の幅を表す変数L、山の勾配を表す変数SLをともに零に初期化する。続くステップS703では、最大値を与えるスキャンポイントioがスキャンを行った所定範囲における遠側端の位置か否かを調べる。遠側端位置でないならばステップS704へ進み、無限遠方向への単調減少を調べる。遠側端位置であったならば、この処理をスキップしてステップS705に進む。
ここで、上記ステップS704における無限遠方向への単調減少を調べる処理について、図8のフローチャートを用いて説明する。
まずステップS801では、カウンタ変数iをioに初期化する。次のステップS802では、スキャンポイントiにおける焦点評価値の値d[i]と、iより1スキャンポイント分無限遠よりのスキャンポイントi−1における焦点評価値の値d[i−1]の差を一定値SlopeThrと比較する。d[i]−d[i−1]>=SlopeThrでなければ、無限遠方向への単調減少は生じていないと判定し、無限遠方向への単調減少をチェックする処理を終了して、ステップS802から図7のステップS705へ進む。
一方、d[i]−d[i−1]>=SlopeThrであれば、無限遠方向への単調減少が生じていると判定し、ステップS803に進む。ここでは、焦点評価値が一定値以上の傾きで傾斜している部分の長さ(山の幅)を表す変数L、単調減少区間における減少量を表す変数SLを以下の式に従い更新する。
L =L+1
SL=SL+(d[i]−d[i−1])
そして、無限遠方向への単調減少をチェックする処理を継続する場合はステップS804へ進み、i=i−1として、検出をする点を1スキャンポイント無限遠側に移す。次のステップS805では、カウンタiがスキャンを行った所定範囲における遠側端位置の値(=0)になったかどうかをチェックする。カウンタiの値が0、すなわち単調減少を検出する開始点がスキャンを行った所定範囲における遠側端位置に達したならば、無限遠方向への単調減少をチェックする処理を終了して、図7のステップS705へ進む。
以上のようにしてi=ioから無限遠方向への単調減少をチェックする。
図7に戻り、ステップS705では、最大値を与えるスキャンポイントioがスキャンを行った所定範囲における至近端の位置か否かを調べ、至近端位置でないならばステップS706へ進み、至近端方向への単調減少を調べる。至近端位置であったならば、この処理をスキップしてステップS707に進む。
ここで、上記ステップS706における至近端方向への単調減少を調べる処理について、図9のフローチャートを用いて説明する。
まずステップS901では、カウンタ変数iをioに初期化する。次のステップS902では、スキャンポイントiにおける焦点評価値の値d[i]と、iより1スキャンポイント分至近端よりのスキャンポイントi+1における焦点評価値の値d[i+1]の差を所定値SlopeThrと比較する。d[i]−d[i+1]>=SlopeThrでなければ、至近端方向への単調減少は生じていないと判定し、至近端方向への単調減少をチェックする処理を終了して、図7のステップS707へ進む。
一方、d[i]−d[i+1]>=SlopeThrであれば、至近端方向への単調減少が生じていると判定し、ステップS903に進む。ここでは、焦点評価値が一定値以上の傾きで傾斜している部分の長さ(山の幅)を表す変数L、単調減少区間における減少量を表す変数SLを以下の式に従い更新する。
L =L+1
SL=SL+(d[i]−d[i+1])
そして、至近端方向への単調減少をチェックする処理を継続する場合はステップS904へ進み、i=i+1として、検出をする点を1スキャンポイント至近端側に移す。次のステップS905では、カウンタiがスキャンを行った所定範囲における至近端位置の値(=N)になったかどうかをチェックする。カウンタiの値がN、すなわち単調減少を検出する開始点がスキャンを行った所定範囲における至近端位置に達したならば、至近端方向への単調減少をチェックする処理を終了して、図7のステップS707へ進む。
以上のようにしてi=ioから至近端方向への単調減少をチェックする。
無限遠方向および至近端方向への単調減少をチェックする処理が終了したならば、以下のように、得られた焦点評価値が山状になっているか否か、諸係数をそれぞれのしきい値と比較し、○×の判定を行う。
つまり、図7のステップS707では、焦点評価値の最大値を与えるスキャンポイントioがスキャンを行った所定範囲における至近端であり、かつ至近端スキャンポイントnにおける焦点評価値の値d[n]と、nより1スキャンポイント分無限遠よりのスキャンポイントn−1における焦点評価値の値d[n−1]の差が、一定値SlopeThr以上であればステップS711へ進み、そうでなければステップS708へ進む。ステップS708では、焦点評価値の最大値を与えるスキャンポイントioがスキャンを行った所定範囲における遠側端であり、かつ遠側端スキャンポイント0における焦点評価値の値d[0]と、0より1スキャンポイント分至近端よりのスキャンポイント1における焦点評価値の値d[1]の差が、一定値SlopeThr以上であればステップS711へ進み、そうでなければステップS709へ進む。
ステップS709では、一定値以上の傾きで傾斜している部分の長さLが所定値Lo以上であり、かつ傾斜している部分の傾斜の平均値SL/Lが所定値SLo/Lo以上であり、かつ焦点評価値の最大値と最小値の差が所定値以上であれば、ステップS710へ進み、そうでなければステップS711へ進む。ステップS710では、得られた焦点評価値が山状となっていて、被写体の焦点調節が可能であるため判定結果を○としている。また、ステップS711では、得られた焦点評価値が山状となっておらず、被写体の焦点調節が不可能であるため判定結果を×としている。
以上のようにして、図4のフローチャートにおけるステップS407の合焦判定を行う。
次に、図11のフローチャートを参照しながら図2のフローチャートにおけるステップS212の撮影動作のサブルーチンを説明する。
まず、ステップS1101では、被写体輝度を測定する。次のステップS1102では、ステップS1101で測定した被写体輝度に応じて撮像素子108への露光を行う。撮像素子面上に結像された像は光電変換されてアナログ信号となり、次のステップS1103にて、A/D変換部109へと送られ、撮像素子108の出力ノイズ除去や非線形処理などの前処理の後にデジタル信号に変換される。続くステップS1104では、A/D変換部109からの出力信号をWB処理部111によりホワイトバランス調整し、画像処理部110で適正な出力画像信号とする。そして、ステップS1105にて、出力画像信号をフォーマット変換部112でJPEGフォーマット等への画像フォーマット変換を行い、DRAM113に一時的に記憶する。次のステップS1106では、DRAM113内のデータを画像記録部114にてカメラ内のメモリ、またはカメラに装着されたメモリカードなどの外部記憶媒体へと転送し、記憶する。
以上の実施例1によれば、連写モード時には、前回以前の連続撮影時のフォーカスレンズ104の位置に基づいて今回撮影時の被写体距離を予測している。そして、該予測した被写体距離を中心とした前後の狭い範囲でフォーカスレンズ104のスキャン動作を行う。そして、該スキャン動作により得られる焦点評価値が最大になるように前記フォーカスレンズの位置を調節して、今回の連続撮影を行わせるようにしている。よって、連写撮影時においても、動く被写体にピントを合わせつづけることが可能となる。換言すれば、それまでの合焦位置の履歴に基づき被写体移動予測を行い、スキャン範囲の中心とスキャン範囲幅を設定することにより、動く被写体への追従性を向上させた電子カメラとすることができる。
上記実施例1では、等時間間隔で連写撮影を行った場合の動体予測AFについて記述した。しかし、等時間間隔で連写撮影を行っている途中でストロボの充電が必要になり、充電が完了するのを待つことで、次の撮影までの時間が長くなってしまう場合は、動体予測の精度が悪くなってしまう。
そこで、本発明の実施例2では、等時間間隔で連写撮影を行っている途中で次の撮影までの時間が長くなってしまう場合であり、かつ、ストロボの充電完了待ちのように次の撮影までの間にAFが可能なときの動体予測AFについて説明する。以下、図面を参照しながら本発明の実施例2について説明する。なお、電子カメラの回路構成は図1と同様であるものとする。
図12は本発明の実施例2に係わる電子カメラの一連の動作を示すフローチャートである。
まず、ステップS1201では、メインスイッチ122の状態を検出し、ONであればステップS1202へ進む。ここでメインスイッチ122の機能はシステムに電源を投入することである。ステップS1202では、画像記録部114の残容量を調べ、残容量が0であればステップS1203へ進み、そうでなければステップS1204へ進む。ステップS1203では、画像記録部114の残容量が0であることを警告してステップS1201に戻る。警告は操作表示部117に表示するか又は図示しない音声出力部から警告音を出すか、又はその両方を行ってもよい。
画像記録部114の残容量があるとしてステップS1204へ進むと、AFモードがContinuousAFモードであるかSingleAFモードであるかを調べる。ContinuousAFモードであればステップS1205へ進み、SingleAFモードであればステップS1206へ進む。ステップS1205では、図3のフローチャートに従ってContinuousAFを行う。
次のステップS1206では、スイッチSW1の状態を調べ、ONであればステップS1208へ進み、そうでなければステップS1207へ進む。ここで、スイッチSW1の機能は、AFやAEなどの撮影スタンバイ動作を行うことである。ステップS1207では、メインスイッチ122の状態を調べ、ONであればステップS1204へ、そうでなければステップS1201へ、それぞれ戻る。
ステップS1208へ進むと、AE処理部103により画像処理部110の出力からAE処理を行う。そして、次のステップS1209にて、連写中のAFスキャンの回数を示すAFN=1と設定する。続くステップS1210では、後述する図13のフローチャートに従ってAF動作を行う。ステップS1211は、スイッチSW2の状態を調べ、ONであればステップS1214へ進み、そうでなければステップS1212へ進む。ここで、スイッチSW2の機能は上記スイッチSW1の操作後撮影を行うことである。
ステップS1212では、スイッチSW1の状態を調べ、ONでなければステップS1204へ戻り、ONであればステップS1213でAFN=2と設定してからステップS1211へ戻る。そして、スイッチSW2がONされるか、スイッチSW1がOFFされるまでフォーカスをロックする。
スイッチSW2がONであるとしてステップS1214へ進むと、図11のフローチャートに従って撮影動作を行う。次のステップS1215では、画像記録部114の残容量を調べ、残容量が0であればステップS1203へ進み、そうでなければステップS1216へ進む。ステップS1216では、ドライブモードスイッチ120により連写モードに設定されているか、または撮影モードスイッチ119により連写モードがデフォルト設定となる撮影モードに設定されているかを調べる。そして、連写モードであればステップS1218へ進み、そうでなければステップS1217へ進む。
ステップS1217へ進むと、スイッチSW2がONの間は撮影画像を操作表示部117に表示し、スイッチSW2がOFFであればステップS1212へ進む。また、ステップS1218へ進むと、スイッチSW2がONでなければステップS1212へ進み、ONであれば連写撮影のためステップS1210へ進み、後述する図13のフローチャートに従って連写時のAF動作へと進む。
以下、図12のステップS1210におけるAF動作のサブルーチンについて、図13のフローチャートに従って説明する。
まずステップS1301では、ストロボが充電中であるかどうかを示すStFlg=FALSEと設定する。そして、次のステップS1302にて、ドライブモードスイッチ120により連写モードに設定されているか、または撮影モードスイッチ119により連写モードがデフォルト設定となる撮影モードに設定されているかを調べる。その結果、連写モードであればステップS1315へ進み、そうでなければステップS1303へ進む。
ステップS1303へ進むと、AFモードスイッチ121によりAFモード設定がContinuousAFモードであるかSingleAFモードであるかを調べ、ContinuousAFモードであればステップS1304へ進み、SingleAFモードであればステップS1306へ進む。ステップS1304では、図3のフローチャートにおけるピーク検出フラグがTRUEであるかどうかを調べ、TRUEであればステップS1305へ進み、FALSEであればステップS1306へ進む。
ステップS1305へ進むと、ContinuousAF動作により焦点評価値がピークを示す合焦位置付近にフォーカスレンズ104が位置するため、合焦精度を向上させることを主な目的として現在のフォーカスレンズ位置を中心とした狭いスキャン範囲を設定する。ここで、スキャン範囲は、図7のフローチャートによる合焦判定に必要なスキャンデータ数を満たすと同時に、スキャン時間が不必要に長くならないように設定する。一方、ステップS1306へ進んだ場合は、設定されたモードにおけるAF可能範囲全域をスキャン範囲に設定する。
次のステップS1307では、図6のフローチャートに従って、ステップS1305もしくはステップS1306で設定されたスキャン範囲のスキャンを行う。次のステップS1308では、ステップS1307で記憶したスキャンデータにより図7のフローチャートにしたがって合焦判定を行う。続くステップS1309では、ステップS1308における合焦判定の結果が○であればステップS1310へ進み、AFN=AFN+1とした後、ステップS1311へ進む。ステップS1311では、ステップS1307または後述のステップS1324のスキャンにおいて計算したピーク位置へフォーカスレンズ104を移動する。その後は後述のステップS1325へ進む。
また、合焦判定の結果が×であればステップS1309からステップS1312へ進む。そして、ここでは設定されたモードにおけるAF可能範囲全域のスキャンが済んでいるかを調べ、全域スキャン済みであればステップS1313へ進み、ここでAFN=AFN+1とする。その後はステップS1314へ進み、定点と呼ばれるあらかじめ設定された位置へフォーカスレンズ104を移動し、図12のフローチャートへリターンする。また、全域スキャン未完了であればステップS1312からステップS1307へ進む。
上記ステップS1302にて連写モードであった場合は上記のようにステップS1315へ進む。そして、連写中のAF回数を示すAFNが1であるかどうか調べ、AFN=1であればステップS1304へ進み、AFN=1でなければステップS1316へ進む。連写1枚目は、合焦位置履歴情報による被写体予測が不可能であるためにContinuousAFと同じ動作となるが、これはステップS1305において狭いスキャン範囲が設定され、レリーズタイムラグが短くなることを期待している。従って、連写モード時にはContinuousAFモードをデフォルト設定とすると良い。
ステップS1316へ進むと、AFN=2であるかどうか調べ、AFN=2であればステップS1317へ進み、AFN=2でなければステップS1318へ進む。ステップS1317では、連写1枚目撮影フォーカスレンズ位置をスキャン範囲中心として設定する。スキャン範囲幅は連写間隔時間を延ばさないことを優先して設定すると、バッファ用途のDRAM113に余裕がある状態における連写撮影間隔内にAF動作が終了するスキャン範囲幅設定が、最大スキャン範囲幅設定となる。このステップS1317では、被写体移動に関する情報が全く無いため、前記最大スキャン範囲幅を設定する。具体的には、図7のフローチャートによる合焦判定が可能なスキャンデータ数を得る時間と、スキャン開始位置への移動時間およびスキャン終了後合焦位置への移動時間と、各種演算時間の合計時間が連写間隔時間よりも短くなるように設定する。
AFN=2でないとしてステップS1318へ進むと、次回撮影時にストロボ106を発光させるだけの電力が充電されているかどうかを調べる。充電完了待ちであればステップS1319でStFlg=TRUEと設定して、ステップS1321へ進む。充電されていればステップS1320でStFlg=FALSEと設定して、ステップS1321へ進む。ステップS1321では、AFN=3であるかどうか調べ、AFN=3であればステップS1322へ進み、AFN=3でなければステップS1323へ進む。
AFN=3であるとしてステップS1322へ進むと、合焦位置履歴情報として連写1枚目、2枚目の2つの合焦位置情報(FP1,FP2)があるので、式(3)の1次近似により被写体予測を行ってスキャン中心位置ObjP3を求める。
ObjP3=FP2+(FP2−FP1)×FpAdj3 ・・・(3)
ここで、パラメータFpAdj(n)は、被写体予測結果と直前の合焦位置の重み付け設定のパラメータであり、0〜1の値をとる。図5のフォーカスレンズ位置ではFpAdj(n)=1としている。
また、ステップS1323へ進むと、合焦位置履歴情報として少なくとも直前3枚の合焦位置情報(FP1,FP2,FP3)があるので、式(4)の2次近似により被写体予測を行ってスキャン中心位置ObjP4を求める。
ObjP4=(FP1−3・FP2+3・FP3)×FpAdj4+FP3
×(1−FpAdj4)
=(FP1−3・FP2+2・FP3)×FpAdj4+FP3 ・・・(4)
そして、次のステップS1324では、図6のフローチャートに従ってスキャンを行い、ステップS1310へ進んでAFN=AFN+1とした後、ステップS1311へと進む。
連写2枚目以降においては、図7のフローチャートによる合焦判定結果が×となるような場合でも、定点へフォーカスレンズ104を駆動して撮影するよりも、前回の合焦位置付近に設定されたスキャン範囲におけるピーク位置で撮影した方がボケない可能性が高いため、合焦判定処理は行わない。と同時に、合焦表示も行わない。ここで、前記スキャン範囲は、後述の合焦判定に必要なスキャンポイント数を満たすように、またスキャンに要する時間が不必要に長くならないように設定される。
上記ステップS1310,S1311を介してステップS1325へ進むと、StFlg=TRUEであるかどうかを調べ、StFlg=TRUEであればステップS1318へ進み、StFlg=TRUEでなければAF動作のサブルーチンを終了する。
StFlg=TRUEとなっているときのステップS1322、ステップS1323でのスキャン幅には、最後にStFlg=FALSEとなっていたときのスキャン幅を設定する。
以上の実施例2によれば、等時間間隔で連写している途中でストロボ充電完了待ちによって撮影ができずに次の撮影までの時間間隔が長くなってしまう場合でも、等時間間隔でAFスキャンを行い続けることで、次の撮影において動体に追従させることができ、動体予測を続けることが可能となる。
上記実施例2では、等時間間隔で連写撮影を行っている途中で、次の撮影までの時間が長くなってしまう場合において、次の撮影までの間にAFが可能な場合の例について述べた。しかし、次の撮影までの間にAFが不可能な場合(例えばバッファメモリがフルになった場合)には、上記実施例2を用いても動体予測を続けることができない。
そこで、本発明の実施例3では、等時間間隔で連写撮影を行っている途中で、次の撮影までの時間が長くなってしまう場合において、次の撮影の直前までAFが不可能な場合の例について説明する。本実施例3では、上記実施例2における図12におけるステップS1210の「AF動作」及びステップS1214の「撮影」においてのみ実施例2と異なる。
以下、図12のステップS1210におけるAF動作におけるサブルーチンについて、図14及び図15を参照しながら説明する。
図14は、本発明の実施例3に係わる電子カメラのAF動作を示すフローチャートであり、図15は撮影動作を示すフローチャートである。
まずステップS1401では、ドライブモードスイッチ120により連写モードに設定されているか、または撮影モードスイッチ119により連写モードがデフォルト設定となる撮影モードに設定されているかを調べる。そして、連写モードであればステップS1412へ進み、そうでなければステップS1402へ進む。
ステップS1402へ進むと、AFモードスイッチ121によりAFモード設定がContinuousAFモードであるかSingleAFモードであるかを調べる。その結果、ContinuousAFモードであればステップS1403へ進み、SingleAFモードであればステップS1405へ進む。ステップS1403では、図3のフローチャートにおけるピーク検出フラグがTRUEであるかどうかを調べ、TRUEであればステップS1404へ進み、FALSEであればステップS1405へ進む。
ステップS1404へ進むと、ContinuousAF動作により焦点評価値がピークを示す合焦位置付近にフォーカスレンズが位置するため、合焦精度を向上させることを主な目的として現在のフォーカスレンズ位置を中心とした狭いスキャン範囲を設定する。ここで、スキャン範囲は、図7のフローチャートによる合焦判定に必要なスキャンデータ数を満たすと同時に、スキャン時間が不必要に長くならないように設定する。一方、ステップS1405へ進んだ場合は、設定されたモードにおけるAF可能範囲全域をスキャン範囲に設定する。
次のステップS1406では、図6のフローチャートに従って、ステップS1405もしくはステップS1406で設定されたスキャン範囲のスキャンを行う。そして、次のステップS1407では、ステップS1406で記憶したスキャンデータにより図7のフローチャートにしたがって合焦判定を行う。続くステップS1408では、ステップS1407における合焦判定の結果が○であればステップS1409へ進み、×であればステップS1410へ進む。ステップS1410では、設定されたモードにおけるAF可能範囲全域のスキャンが済んでいるかを調べ、全域スキャン済みであればステップS1406へ進み、全域スキャン未完了であればステップS1411へ進む。ステップS1411では、定点と呼ばれるあらかじめ設定された位置へフォーカスレンズ104を移動する。また、ステップS1409へ進むと、ステップS1406または後述のステップS1421のスキャンにおいて計算したピーク位置へフォーカスレンズ104を移動する。そして、後述のステップS1422へ進む。
上記ステップS1401にて連写モードであるとしてステップS1412へ進むと、連写中のAF回数を示すAFN=1であるかどうか調べ、AFN=1であればステップS1403へ進み、AFN=1でなければステップS1413へ進む。連写1枚目は、合焦位置履歴情報による被写体予測が不可能であるためにContinuousAFと同じ動作となるが、これはステップS1404において狭いスキャン範囲が設定され、レリーズタイムラグが短くなることを期待している。従って、連写モード時にはContinuousAFモードをデフォルト設定とすると良い。
ステップS1413では、AFN=2であるかどうか調べ、AFN=2であればステップS1416へ進み、AFN=2でなければステップS1415へ進む。このステップS1416では、連写1枚目撮影フォーカスレンズ位置をスキャン範囲中心として設定する。スキャン範囲幅は連写間隔時間を延ばさないことを優先して設定すると、バッファ用途のDRAM113に余裕がある状態における連写撮影間隔内にAF動作が終了するスキャン範囲幅設定が、最大スキャン範囲幅設定となる。ステップS1416では被写体移動に関する情報が全く無いため、前記最大スキャン範囲幅を設定する。具体的には、図7のフローチャートによる合焦判定が可能なスキャンデータ数を得る時間と、スキャン開始位置への移動時間およびスキャン終了後合焦位置への移動時間と、各種演算時間の合計時間が連写間隔時間よりも短くなるように設定する。
また、ステップS1415へ進むと、後述する図15の撮影動作のサブルーチン内でDRAMがフルになったかどうか(BfFlg=TRUEになっているかどうか)を調べ、BfFlg=TRUEであればステップS1420へ進み、BfFlg=TRUEでなければ、ステップS1417へ進む。ステップS1417では、AFN=3であるかどうか調べ、AFN=3であればステップS1418へ進み、AFN=3でなければステップS1419へ進む。
ステップS1418では、合焦位置履歴情報として連写1枚目、2枚目の2つの合焦位置情報(FP1、FP2)があるので、式(5)の1次近似により被写体予測を行ってスキャン中心位置ObjP3を求める。
ObjP3=FP2+(FP2−FP1)×FpAdj3 ・・・(5)
ここで、パラメータFpAdj(n)は、被写体予測結果と直前の合焦位置の重み付け設定のパラメータであり、0〜1の値をとる。図5のフォーカスレンズ位置ではFpAdj(n)=1としている。
また、ステップS1419では、合焦位置履歴情報として少なくとも直前3枚の合焦位置情報(FP1、FP2、FP3)があるので、式(6)の2次近似により被写体予測を行ってスキャン中心位置ObjP4を求める。
ObjP4=(FP1−3・FP2+3・FP3)×FpAdj4+FP3
×(1−FpAdj4)
=(FP1−3・FP2+2・FP3)×FpAdj4+FP3 ・・・(6)
また、ステップS1420では、DRAMがフル(空きがない状態)になったことにより、合焦位置履歴情報の直前2枚の時間間隔よりも直前1枚から今回の撮影までの時間間隔が長くなっているため、直前2枚の合焦位置情報を近似式に使うことができない。よって、直前の撮影フォーカスレンズ位置をスキャン範囲中心として設定する。また、動体予測ができないので、このときのスキャン範囲は、ステップS1418、ステップS1419におけるスキャン範囲のα倍(α>1)に広げて、動体に追従させるようにする。
ステップS1421へ進むと、図6のフローチャートに従ってスキャンを行い、ステップS1409へと進み、ピーク位置にフォーカスレンズ104を移動させる。連写2枚目以降においては、図7のフローチャートによる合焦判定結果が×となるような場合でも、定点へフォーカスレンズ104を駆動して撮影するよりも、前回の合焦位置付近に設定されたスキャン範囲におけるピーク位置で撮影した方がボケない可能性が高いため、合焦判定処理は行わない。と同時に、合焦表示も行わない。
ステップS1409を介してステップS1422へ進むと、BfFlg=TRUEであるかどうかを調べ、BfFlg=TRUEであればステップS1423へ進み、BfFlg=TRUEでなければAF動作のサブルーチンを終了する。ステップS1423へ進むと、BfFlg=FALSE、AFN=2と設定してAF動作のサブルーチンを終了する。
次に、図12のステップS1214における撮影動作のサブルーチンについて、図15のフローチャートを参照しながら説明する。
まず、ステップS1501では、DRAM113がフルになっているかどうかを示すBfFlgをFALSEと設定する。次のステップS1502では、被写体輝度を測定する。続くステップS1503では、ステップS1502で測定した被写体輝度に応じて撮像素子108への露光を行う。撮像素子面上に結像された像は光電変換されてアナログ信号となり、ステップS1504にてA/D変換部109へと送られ、撮像素子108の出力ノイズ除去や非線形処理などの前処理の後にデジタル信号に変換される。
ステップS1505では、A/D変換部109からの出力信号をWB処理部111によりホワイトバランス調整し、画像処理部110で適正な出力画像信号とする。次のステップS1506では、出力画像信号をフォーマット変換部112でJPEGフォーマット等への画像フォーマット変換を行い、DRAM113に一時的に記憶する。続くステップS1507では、DRAM113がフルになっているかどうかを調べ、フルになっていればステップS1509へ進み、余裕があれば、撮影動作のサブルーチンを終了する。ステップS1509では、BfFlg=TRUEと設定する。そして、次のステップS1510にて、DRAM113内のデータを画像記録部114にてカメラ内のメモリ、またはカメラに装着されたメモリカードなどの外部記憶媒体へと転送し、記憶する。
以上の実施例3によれば、等時間間隔で連写している途中でDRAM113がフルになることによって撮影ができずに次の撮影までの時間間隔が長くなってしまい、さらに次の撮影の直前までの間にAFが不可能になることがある。このような場合には、フォーカスレンズ104のスキャン範囲を広げ、動体被写体に追従させるようにしている。よって、このような場合でも次の撮影において動体に追従させることができ、動体予測を続けることが可能となる。