上記考え方に基づき、本発明の装置及び方法の基本的な実施形態は、次の様な構成を有する。焦点調節装置は、焦点調節を行うためのフォーカスレンズ及びその駆動手段と、光電変換手段と、抽出手段と、制御手段とを有する。光電変換手段は、フォーカスレンズを用いて結像された被写体像を電気信号に変換するCCD、CMOSなどの撮像素子である。抽出手段は、光電変換手段の出力信号から被写体の輝度に関する特定周波数帯域の信号成分(典型的には高周波成分)を抽出する。制御手段は、装置全体の動作を制御する。
制御手段は、フォーカスレンズの合焦状態を検出する際の焦点検出領域を1つ又は複数設定することができる。また、制御手段は、フォーカスレンズを移動させると共に、光電変換手段の設定された焦点検出領域における抽出手段の出力信号をフォーカスレンズの位置と関連づけて取得するAFスキャン動作を行うことができる。また、制御手段は、前記取得した抽出手段の出力に基づいてフォーカスレンズをその駆動手段を介して制御して合焦動作を実施することができる。そして、制御手段は、撮影準備前にAFスキャン動作を行って合焦すべき被写体領域を特定する第1のAFスキャン動作を実施する。また、制御手段は、撮影準備時に前記AFスキャン動作を行い合焦動作を実施して、第1のAFスキャン動作と異なる第2のAFスキャン動作を実施する。また、制御手段は、第2のAFスキャン動作では、第1のAFスキャン動作とは焦点検出領域の設定の態様を異ならせる。
また、焦点調節方法は、上記の如き手段を有する撮像装置における焦点調節方法であって、次の第1の工程と第2の工程を含む。第1の工程では、撮影準備前に、フォーカスレンズを移動させると共に、設定手段などで設定された焦点検出領域における抽出手段の出力信号をフォーカスレンズの位置と関連づけて取得するAFスキャン動作を行う。そして、合焦すべき被写体領域を特定する第1のAFスキャン動作を実施する。第2の工程では、撮影準備時に、前記AFスキャン動作を行い合焦動作を実施して、前記第1のAFスキャン動作と異なる第2のAFスキャン動作を実施する。更に、第2のAFスキャン動作では、第1のAFスキャン動作とは焦点検出領域の設定の態様を異ならせる。
また、制御手段は、次のコンティニュアスAF動作を行うように構成することができる。コンティニュアスAF動作では、フォーカスレンズを所定量移動する前に抽出した抽出手段の出力信号とその移動の後に抽出した抽出手段の出力信号とから、フォーカスレンズを次に移動する時の移動方向を決定する。そして、前記移動方向にフォーカスレンズを移動し、前記移動動作を繰り返し行うことによりフォーカスレンズを抽出手段の出力信号のピーク位置に移動する。この場合、前記制御手段は、撮影準備前に、前記第1のAFスキャン動作で特定した合焦すべき被写体領域における抽出手段の出力信号に基づいて、コンティニュアスAF動作による合焦動作を行うように構成することができる。こうした構成は、後述の実施例における図21のステップS2102の説明の部分などに記載されている。
また、制御手段は、第1のAFスキャン動作で特定した合焦すべき被写体領域を含み設定した1つ又は複数の焦点検出領域において抽出した抽出手段の出力信号を演算した評価値に基づいて、コンティニュアスAF動作を行うように構成できる。こうした構成も、後述の実施例における図21のステップS2102の説明の部分などに記載されている。
以下、図面を参照しながら本発明の実施例を説明する。図1は、本発明の実施例を適用した焦点調節装置を備える撮像装置である電子カメラの構成を示すブロック図である。
図1において、101は、ズーム機構を含む撮影レンズである。102は、入射光量を制御する光量制御手段である絞り及びシャッターである。103は、光量制御手段の駆動手段を含むAE(Automatic Exposure)処理部である。104は、後述する撮像素子上に焦点を合わせるためのフォーカスレンズである。105は、フォーカスレンズ104の駆動手段を含むAF処理部である。106はストロボである。107はEF(フラッシュ調光)処理部である。
108は、被写体からの反射光を電気信号に変換する受光手段ないし光電変換手段としての撮像素子である。109は、撮像素子108の出力ノイズを除去するCDS(相関二重サンプリング処理)回路やA/D変換前に処理を行う非線形増幅回路を含むA/D変換部である。110は、光電変換手段の出力信号から被写体の輝度を算出する輝度算出手段と該輝度算出手段の出力から特定周波数帯域の信号成分を抽出する抽出手段とを含む画像処理部である。111はWB(ホワイトバランス)処理部である。112はフォーマット変換部である。
113は、高速な内蔵メモリ(例えばランダムアクセスメモリなど。DRAMとも記す) である。114は、メモリーカードなどの記録媒体とそのインターフェースからなる画像記録部である。115は、装置全体の動作を制御する制御手段として撮影シーケンスなどシステムを制御するシステム制御部(CPUとも記す)である。116は画像表示用メモリ(VRAMとも記す)
である。117は、画像表示、操作補助のための表示やカメラ状態の表示の他、撮影時には撮影画面と焦点検出領域を表示する操作表示部である。118は、カメラを外部から操作するための操作部である。119は、顔検出モードをON又はOFFに切り替える等の設定を行う撮影モードスイッチである。
120は、システムに電源を投入するためのメインスイッチである。121は、AFやAE等の撮影スタンバイ動作を行うための合焦位置確定指示手段である撮影スタンバイスイッチ(SW1とも記す)である。このSW1(121)が操作されることにより、フォーカスレンズ104の撮影のための合焦位置が確定される。この確定のための手順は後述する。122は、SW1の操作後、撮影を行う撮影スイッチ(SW2とも記す)である。
123は、前記画像処理部110で処理された画像信号を用いて顔検出を行い、検出した1つ又は複数の顔情報(位置・大きさ・信頼度)をCPU115に送る顔検出モジュールである。顔検出モジュール123は、画像信号に対して顔認識処理を施し、特定被写体情報(撮影画面内の人物の顔の大きさ、位置、顔の確からしさを示す信頼度)を検出し、その検出結果をCPU115に送信する。
上記顔認識処理は、例えば、画像データで表される各画素の階調色から、肌色領域を抽出し、予め用意した顔の輪郭プレートとのマッチング度で顔を検出する方法や、抽出された目、鼻、口等の顔の特徴点からパターン認識を行う方法等がある。ここで、この顔の検出方法としては、パターン認識を用いる方法以外に、ニューラルネットワーク等による学習を用いる方法、物理的な形状における特徴のある部位を画像領域から抽出する方法がある。また、検出した顔の肌の色や目の形等の画像特徴量を統計的に解析する方法等の多数の方法がある。更に、実用化が検討されている方法として、ウェーブレット変換と画像特徴量を利用する方法等がある。また、顔の大きさは、検出された顔の情報から顔領域(顔座標)におけるピクセル数をカウントし、このピクセル数により判別する。または、検出された顔の情報(目の位置情報)に基づいて目の間隔を算出し、予め求めておいた目の間隔と顔のサイズ(ピクセル数)との統計的関係を用いてテーブル化し、顔のサイズを判別してもよい。また、顔の四隅(所定位置)の座標値から顔領域におけるピクセル数をカウントすることにより、顔のサイズを判別してもよい。
124は、画面内の被写体及び背景が動いているかどうかを検出して動体情報を前記システム制御部115に送る動体検出部である。具体的には、前記画像処理部110で処理された画像信号のうち、時系列的に並んだ2枚の画像を比較し、その差分情報から被写体/背景の動体情報(動作量、位置、範囲)を検出する。125は、カメラ自体の角速度を検出してカメラ動き情報をCPU115に送る角速度センサ部である。この角速度センサ部を用いて、カメラが縦位置の状態で構えられているのか、横位置の状態で構えられているのかを検出することも可能である。
前記DRAM113は、一時的な画像記憶手段としての高速バッファとして、或いは画像の圧縮・伸張における作業用メモリなどに使用される。前記操作部118は、例えば次の様なものが含まれる。撮像装置の撮影機能や画像再生時の設定などの各種設定を行うメニュースイッチ、撮影レンズのズーム動作を指示するズームレバー、撮影モードと再生モードの動作モード切換えスイッチ、などである。
次に、図2のフローチャートを参照しながら本実施例に係る電子カメラの動作について説明する。まず、S201では、CPU115が、撮影準備を指示するSW1の状態(ON/OFF)を判定し、該状態がON(オン)状態ならばS212へ進み、OFF(オフ)状態の場合にはS202へ進む。S202では、後述する手順に従ってシーン安定判断を行う(図3参照)。S203では、S202において撮影シーンが安定したと判断したかどうかを調べ、安定したと判断していればS204へ進み、安定したと判断されていなければS201へ戻る。ここで、撮影シーンが安定した状態とは、撮影する被写体、カメラの状態が安定して維持され、撮影に適した状態になっていることである。
S204では、被写体輝度が所定値以下かどうかを調べ、被写体輝度が所定値以下であればS205へ進み、そうでなければS206へ進む。S205では、低照度時用のAF枠設定を行う。ここで、AF枠とは、画面内の焦点評価値を取得する領域のことである。また、焦点評価値とは、撮像素子108から読み出されたアナログ映像信号をA/D変換部109がデジタル信号に変換し、その出力から画像処理部110が輝度信号の高周波成分を抽出した値のことである。これは、フォーカスレンズ104の位置とAF枠位置と対応づけてCPU115に記憶しておく。焦点評価値を取得するとは、AF処理部105が、AF制御における判断のために、CPU115で記憶している焦点評価値を読み出すことである。低照度時は、露光時間が延びる為に、スキャンでのAF精度を確保することができない。この為、本実施例では、低照度時は、被写体領域特定や、顔検出時のスキャンは行わず、画面中央付近に所定の大きさのAF枠を1枠設定することとする。
S206では、顔検出モジュール123において顔検出されたかどうかを調べ、顔検出されていればS207へ進み、顔検出されていなければS208へ進む。S207では、後述する手順に従って顔検出時AFスキャンを行い(図4参照)、S209へ進む。S208では、後述する手順に従って被写体領域を特定するためのAFスキャンを行う(図8参照)。S209では、後述する手順に従ってコンティニュアスAFを行う(図21参照)。ここで、コンティニュアスAFを行わずに、単純に1回だけ特定された被写体領域について合焦動作を行ったり、単に被写体領域を特定するのみに止めたりして、次の第2のスキャン動作に引き継がせるということも可能である。
S210では、後述する手順に従ってシーン不安定判断を行う(図22参照)。S211では、S210において撮影シーンが不安定と判断されたかどうかを調べ、不安定となっていればS201へ進み、不安定となっていなければS209へ進む。ここで、撮影シーンが不安定とは、撮影する被写体の状態、カメラの状態が不安定となり、撮影に適した状態ではなくなることである。
撮影準備を指示するSW1の状態がON状態のときにS201から進むS212では、合焦度判定フラグをFALSEにする。S213では、後述する手順に従って撮影処理を行う(図23参照)。
また、上述した動作と並行して、常にCPU115からの制御信号に基づきAE処理部103により、絞り及びシャッター102を制御して操作表示部117に表示される画像の明るさが適正になる様にAE動作を行っている。
図3は、図2におけるS202のシーン安定判断を説明するフローチャートである。S301では、角速度センサ部125で検出したカメラ動作量が所定量以下となっているかどうかを調べ、所定量以下であればS302へ進み、そうでなければS304へ進む。ここではカメラ動作量が所定量以下になっていることを調べることにより、カメラの状態が安定しているかを判断する。
S302では、前回からの輝度変化量が所定量以下かどうかを調べ、所定量以下であればS303へ進み、そうでなければS304へ進む。ここでは、輝度変化量が所定値以下になっていることを調べることにより、撮影する被写体が変化していないことを判断する。S303では、撮影シーンが安定状態となったと判断して本処理を終了する。S304では、撮影シーンが安定状態ではないと判断して本処理を終了する。
図4は、図2におけるS207の顔検出時AFスキャンを説明するフローチャートである。S401では、顔検出モジュール123で検出した顔情報(位置・大きさ)に基づいてAF枠設定を行う。S402では、AF処理部105がフォーカスレンズ104をスキャン開始位置へと移動させる。ここで、スキャン開始位置は、例えば、検出した顔の大きさより推定した人物の距離に基づいて決定する。S403では、CPU115は、現在のフォーカスレンズ位置における焦点評価値をDRAM113へ記憶させる。S404では、フォーカスレンズ104の現在位置を取得してCPU115が該位置のデータをDRAM113へ記憶させる。
S405では、CPU115が、撮影準備を指示するSW1の状態(ON/OFF)を判定し、該状態がON(オン)状態なら本処理を終了して図2に示すS212へ進み、OFF(オフ)状態の場合にはS406へ進む。S406では、後述する手順に従ってシーン変化判定を行う(図5参照)。シーン変化判定とは、撮影するシーンが変わったかを、カメラの状態、被写体の状態から判定する処理である。
S407では、CPU115がフォーカスレンズ104の現在位置がスキャン終了位置と等しいかを調べ、両者が等しい場合にはS409へ進み、そうでなければS408へ進む。ここで、スキャン終了位置は、例えば、検出した顔の大きさより推定した人物の距離に基づいて決定する。S408では、AF処理部105がフォーカスレンズ104をスキャン終了方向へ向かって所定量だけ移動させた後、S403に戻る。S409では、後述する手順に従って合焦判定を行う(図6参照)。
S410では、S409における合焦判定で○判定となったかどうかを調べ、○判定となっていればS411へ進み、そうでなければS414へ進む。ここで○判定とは、被写体のコントラストが十分にあり、且つスキャンした距離範囲内に被写体が存在する場合のことである。
S411では、S403で取得した焦点評価値がピークとなる合焦位置を算出する。S412では、AF処理部105がフォーカスレンズ104を、S411で算出した合焦位置へと移動させる。S413では、ピーク検出フラグをTRUEにする。
S414では、○判定ではない、つまり被写体のコントラストが不十分、若しくはスキャンした距離範囲外に被写体が存在するので、AF処理部105がフォーカスレンズ104を、予めDRAM113に記憶している位置(定点)へと移動させる。ここで、定点は被写体の存在確率の高い距離に設定する。例えば、顔が検出されていれば、検出した顔の大きさより推定した人物の距離とする。
図5は、図4のS406、後述する図11のS1105、図14のS1405、図21のS2107におけるシーン変化判定を説明するフローチャートである。S501では、顔検出モジュール123で検出した顔検出状態が変化したかどうかを調べ、顔検出状態が変化していれば本判定処理を終了して図2に示すS201へ戻り、そうでなければS502へ進む。ここで、顔検出状態とは、顔検出されているかどうかである。つまり、前回のシーン変化判定時に顔検出されていて今回のシーン変化判定時に顔検出されていなければ、顔検出状態が変化したことになる。
S502では、角速度センサ部125で検出したカメラ動作量が所定量以上となっているかどうかを調べ、所定量以上であれば、本判定処理を終了して図2のS201へ戻り、そうでなければS503へ進む。
S503では、後述するコンティニュアスAF中であるかどうかを調べ、コンティニュアスAF動作中であればS504へ進む。S504では、被写体輝度差が所定値以下かを判断する。被写体輝度差とは、前回のシーン変化判定時に取得した被写体輝度値と、今回のシーン変化判定時に検出された被写体輝度値との差である。被写体輝度値の差が大きい場合は、シーンが変化したと判断する。被写体輝度差が、所定値以下であれば、本判定処理を終了し、所定値より大きい場合は、本判定処理を終了して図2のS201へ戻る。
コンティニュアスAF動作中でなければ、S505へ進む。S505では、露光時間が所定時間以上であるかどうかを調べ、露光時間が所定時間以上であれば、本判定処理を終了して図2のS201へ戻る。これは、露光時間が所定時間以上の場合、焦点評価値を取得する間隔が延びてしまう為、AFの精度を確保できなくなるからである。そうでなければS506へ進む。
S506では、絞り102の状態が変化したかどうかを調べ、状態が変化していればS507へ進み、そうでなければ本判定処理を終了する。なお、本実施例では、絞り制御を用いた場合について説明しているが、絞り制御の替わりにNDフィルタによって露出制御を行った場合は、NDフィルタの状態の変化を見てもよい。これは、絞り、若しくはNDフィルタの状態が変化した場合は、焦点評価値のピーク位置が変化する為である。
S507では、顔検出モジュール123で顔を検出しているかどうかを調べ、顔を検出していれば本判定処理を終了して図4のS402へ進み、そうでなければ本判定処理を終了して後述する図8のS809へ進む。
次に、図4のS409、後述する図12のS1201、図15のS1501における合焦判定のサブルーチンについて図6と図7を用いて説明する。
焦点評価値は、遠近競合などの場合を除けば、横軸にフォーカスレンズ位置、縦軸に焦点評価値をとると、その形は図7に示す様な山状になる。そこで、焦点評価値の、最大値と最小値の差、一定値(Slope Thr)以上の傾きで傾斜している部分の長さ、傾斜している部分の勾配から、山の形状を判断することにより、合焦判定を行うことができる。
合焦判定における判定結果は、以下に示す様に○判定、×判定で出力される。
○判定:被写体のコントラストが十分、且つスキャンした距離範囲内の距離に被写体が存在する。
×判定:被写体のコントラストが不十分、若しくはスキャンした距離範囲外の距離に被写体が位置する。
また、×判定のうち、至近側方向のスキャンした距離範囲外に被写体が位置する場合を△判定とする。
山の形状を判断する為の、一定値以上の傾きで傾斜している部分の長さL、傾斜している部分の勾配SL/Lを、図7を用いて説明する。山の頂上(A点)から傾斜が続いていると認められる点をD点、E点とし、D点とE点の幅を山の幅Lとする。傾斜が続いていると認める範囲は、A点から、所定量(Slope Thr)以上、焦点評価値が下がったスキャンポイントが続く範囲とする。スキャンポイントとは、連続的にフォーカスレンズを動かして、スキャン開始点からスキャン終了点まで移動する間に、焦点評価値を取得するポイントのことである。A点とD点の焦点評価値の差SL1とA点とE点の焦点評価値の差SL2の和SL1+SL2をSLとする。
図6のフローチャートにおいて、S601では、焦点評価値の最大値と最小値を求め、次にS602では焦点評価値が最大となるスキャンポイントを求め、S603へ進む。S603では、スキャンポイント、焦点評価値から、山の形状を判断する為のL、SLを求め、S604へ進む。
S604では、山の形状が至近側登り止まりかを判断する。至近側登り止まりだと判断するのは、次の2つの条件を満たす場合である。1つの条件は、焦点評価値が最大値となるスキャンポイントがスキャンを行った所定範囲における至近端であることである。もう1つの条件は、至近端のスキャンポイントでの焦点評価値と、至近端のスキャンポイントより1ポイント分無限遠よりのスキャンポイントでの焦点評価値との差が、所定値以上であることである。至近側登り止まりだと判断した場合は、S609へ進み、そうでなければS605へ進む。
S605では、山の形状が無限遠側登り止まりかを判断する。無限遠側登り止まりだと判断するのは、次の2つの条件を満たす場合である。1つの条件は、焦点評価値の最大値となるスキャンポイントがスキャンを行った所定範囲における無限遠端であることである。もう1つの条件は、無限遠端スキャンポイントにおける焦点評価値と、無限遠端スキャンポイントより1ポイント分至近端よりのスキャンポイントにおける焦点評価値との差が、所定値以上であることである。無限遠側登り止まりだと判断した場合は、S608へ進み、そうでなければS606へ進む。
S606では、一定値以上の傾きで傾斜している部分の長さLが所定値以上、且つ傾斜している部分の傾斜の平均値SL/Lが所定値以上、且つ焦点評価値の最大値(Max)と最小値(Min)の差が所定値以上であれば、S607へ進む。そうでなければ、S608へ進む。S607では、得られた焦点評価値が山状となっていて、被写体にコントラストがあり、焦点調節が可能である為、判定結果を○判定としている。S608では、得られた焦点評価値が山状となっておらず、被写体にコントラストがなく、焦点調節が不可能である為、判定結果を×判定としている。S609では、得られた焦点評価値が山状となってはいないが、至近側方向に登り続けている状態となっており、更に至近側に被写体ピークが存在している可能性がある為、判定結果を△判定としている。以上の様にして、合焦判定を行う。
図8は、図2におけるS208の被写体領域特定AFスキャンを説明するフローチャートである。ここでは、画面内の主被写体の領域を特定するためのAFスキャンを行う。
まず、S801では、電子ズームをしているかどうかを調べ、電子ズームをしていればS802へ進み、そうでなければS803へ進む。S802では、電子ズーム時用のAF枠設定を行う。ここで、電子ズームとは、画面中央領域を拡大して操作表示部117に表示することである。この時、撮像素子108上の狭い領域を拡大するため、操作表示部117に表示される画像は、電子ズームしない時に比べて少ない画素数から生成されたものとなる。従って、電子ズーム時に操作表示部117に表示される画像に対して、電子ズームをしない時と同じ割合になる様にAF枠を設定すると、電子ズームしない時に比べてAF枠内の画素数も少なくなり、焦点評価値のS/Nが低下する。そのため、電子ズーム時と電子ズームをしない時とで、AF枠設定の仕方を変える必要がある。本実施例では、電子ズーム時は、画面中央付近に所定の大きさのAF枠を1枠設定することとする。
S803では、画面内にN×N個のAF枠を設定手段で設定する。例えば、N=5、AF枠の大きさを縦横の長さ共に画面の10%(以下同様に縦横の長さに対しての割合を言う)とした場合、図9に示す様なAF枠設定となる。N又はAF枠の大きさは、画面内の主被写体の存在確率を考慮して設定してもよい。また、横方向と縦方向でAF枠数を異ならせてもよい。
S804では、後述する手順に従って前回参照判定を行う(図10参照)。S805では、S804において前回参照判定した結果、前回と撮影シーンがあまり変わらないと判定された場合はS806へ進み、そうでなければS809へ進む。S806では、後述する手順に従って前回参照AFスキャンを行う(図11参照)。S807では、S806の前回参照AFスキャンにおいて主被写体領域が特定できたかどうかを調べ、主被写体領域が特定できていればS808へ進み、そうでなければS809へ進む。
S808では、ピーク検出フラグをTRUEにする。S809では、後述する手順に従ってゾーンAFスキャンを行う(図14参照)。S810では、S809のゾーンAFスキャンにおいて主被写体領域が特定できたかどうかを調べ、主被写体領域が特定できていればS808へ進み、そうでなければS811へ進む。S811では、後述する手順に従って一様面判断を行う(図17参照)。S812では、S809のゾーンAFスキャンにおいて主被写体領域が特定できなかったので、画面内に予め設定してある所定領域にAF枠を設定する。ここで、所定領域は、例えば画面の中央領域に1枠設定するなど、主被写体が存在しそうな領域に設定する。S813では、後述する手順に従ってフォーカス駆動を行う(図20参照)。
図10は、上述の図8におけるS804の前回参照判定を説明するフローチャートである。ここでは、前回AFスキャンを行った撮影シーンに対して、今回、撮影シーンがあまり変化していないかどうかを判定する。
まず、S1001では、前回のAFスキャンにおいて主被写体領域を特定できていたかどうかを調べ、主被写体領域を特定できていればS1002へ進み、そうでなければS1006へ進む。S1002では、現在のフォーカスレンズ104の位置が所定位置より至近側にあるかどうかを調べ、至近側にあればS1003へ進み、そうでなければS1006へ進む。ここでは所定位置よりも至近側かどうかの判定を行ったが、所定位置より無限遠側かどうかの判定にしてもよい。
S1003では、前回AFスキャンを行った時間と今回の時間差が所定時間以内かどうかを調べ、所定時間以内であればS1004へ進み、そうでなければS1006へ進む。S1004では、前回のAFスキャン時のカメラの向きと同じかどうかを調べ、同じであればS1005へ進み、そうでなければS1006へ進む。ここで、カメラの向きとは例えばカメラの縦横位置のことであり、角速度センサ部125により検出する。S1005では、前回のAFスキャンでの撮影シーンとあまり変わらないと判定して本判定処理を終了する。S1006では、前回のAFスキャンと撮影シーンが大きく変わったと判定して本判定処理を終了する。
図11は、図8におけるS806の前回参照AFスキャンを説明するフローチャートである。まず、S1101では、現在のフォーカスレンズ104の位置を中心にスキャン範囲を第1の範囲に設定する。ここでは前回の撮影シーンとあまり変わらないと判断されているので、第1のスキャン範囲は狭い範囲とする。S1102では、フォーカスレンズ104をスキャン開始位置へと移動させる。S1103では、撮像素子108から読み出されたアナログ映像信号をA/D変換部109がデジタル信号に変換し、その出力から画像処理部110が輝度信号の高周波成分を抽出し、CPU115はこれを焦点評価値として記憶させる。S1104では、フォーカスレンズ104の現在位置を取得してCPU115が該位置のデータを記憶させる。
S1105では、CPU115が、撮影準備を指示するSW1の状態(ON/OFF)を判定し、該状態がON(オン)状態なら本処理を終了して図2のS212へ進み、OFF(オフ)状態の場合にはS1106へ進む。S1106では、前述した図5のシーン変化判定を行う。S1107では、CPU115がフォーカスレンズ104の現在位置がスキャン終了位置と等しいかを調べ、両者が等しい場合にはS1108へ進み、そうでなければS1109へ進む。S1108では、後述する主被写体領域判定を行う(図12参照)。S1109では、AF処理部105がフォーカスレンズ104をスキャン終了方向へ向かって所定量だけ移動させた後、S1103に戻る。
図12は、図11におけるS1108、後述する図14におけるS1411の主被写体領域判定を説明するフローチャートである。ここでは、画面内の主被写体領域が特定できたかどうかを判定する。図13は、図12における主被写体領域判定の例を説明する図である。この例では、AF枠サイズの大きさを画面の10%、N=5、スキャン範囲を0〜500、所定深度範囲を±10とする。なお、スキャン範囲及び所定深度範囲の数値はフォーカスレンズ104の位置を表す数値である。これは、図示しないフォーカスレンズ104の駆動用モータにステッピングモータを使用する場合のパルス数に相当し、値が大きい方が至近側とする。
まず、S1201では、設定した各AF枠全てにおいて、前述した図6の合焦判定を行う。例えば、各AF枠において図13(a)に示す様な合焦判定結果となるとする。S1202では、各AF枠における焦点評価値のピーク位置(以下PeakPosと記す)を算出して記憶しておく。例えば、各AF枠において図13(b)に示す様なピーク位置算出結果になるとする。S1203では、設定しているAF枠が1枠かどうかを調べ、設定しているAF枠が1枠であればS1214へ進み、そうでなければS1204へ進む。
S1204では、中央M×M枠の各AF枠のPeakPosを至近順にソートし、ソートされた数をSとする。以下の説明ではM=3とする。図13の太線で囲んだ縦3枠、横3枠の合計9枠がこれを示す。ここで、S1201の合焦判定で×判定のAF枠ではピーク位置が算出できないのでソートの対象としない。例えば、図13(b)の場合は、至近順に410、400、400、400、100、100、100、90とソートされ、ソート数S=8となる。
S1205では、S1202で算出したM×M枠内のピーク位置の至近順を示すカウンタPを1に設定する。S1206では、ソート順でP番目のPeakPosをPeakPosPとする。例えば、図13(b)の例はP=1の場合、PeakPosP=410となる。S1207では、中央のM×M個のAF枠中において○判定であって且つPeakPosPの枠に対して所定深度範囲内のAF枠の「かたまり」を検出し、「かたまり」を構成するAF枠の数と各AF枠の位置を記憶しておく。ここで、「かたまり」とは、例えば、条件を満たすAF枠が上下左右に隣接している状態のものである。また、「かたまり」が複数存在する場合には、「かたまり」を構成するAF枠の数や「かたまり」の位置に基づいて、複数の「かたまり」のうちの1つを選択してもよい。
S1208では、中央のN×N個のAF枠中において、中央のM×M個のAF枠中の枠を1枠以上含む様に、○判定であって且つPeakPosPに対して所定深度内の「かたまり」を検出する。そして、「かたまり」を構成するAF枠の数と各AF枠の位置を記憶しておく。例えば、図13(a)、(b)の様な判定結果に対して、図13(c)に灰色の枠で示す様な「かたまり」が検出される。
S1209では、S1207又はS1208で検出した「かたまり」が中央枠を含む「かたまり」であるかどうかを調べ、中央枠を含む「かたまり」であればS1215へ進み、そうでなければS1210へ進む。S1210では、S1207又はS1208で検出した「かたまり」が、M×M枠内に所定枠数以上含む「かたまり」であるかどうかを調べ、そうであればS1215へ進み、そうでなければS1211へ進む。S1211では、S1207又はS1208で検出した「かたまり」が、中央M×M枠のうちの枠を1枠は含み、N×N枠内のAF枠を所定数以上含む「かたまり」であるかどうかを調べ、そうであればS1215へ進む。そうでなければS1212へ進む。S1212では、カウンタPに1を加える。S1213では、カウンタPがソート数Sよりも大きいどうかを調べ、カウンタPがソート数Sよりも大きければS1217へ進み、そうでなければS1206に戻る。
S1214では、S1201での合焦判定結果が○判定かどうかを調べ、○判定であればS1215へ進み、そうでなければS1217へ進む。S1215では、主被写体領域が特定できたと判定する。S1216では、かたまりを構成する各AF枠を主被写体領域と判断して選択して本判定処理を終了する。ここで設定しているAF枠が1枠の場合はその1枠を選択する。S1217では、主被写体領域の特定ができなかったと判定して本判定処理を終了する。
次に、図14は、図8におけるS809のゾーンAFスキャンを説明するフローチャートである。ここでゾーンとは、レンズ移動範囲を複数の範囲に分割した際の1つ1つの範囲のことを指す。
まず、S1401では、フォーカスレンズ104をスキャン開始位置へと移動させる。ここで、スキャン開始位置は、例えば、無限遠端位置とする。S1402では、撮像素子108から読み出されたアナログ映像信号をA/D変換部109がデジタル信号に変換し、その出力から画像処理部110が輝度信号の高周波成分を抽出し、CPU115はこれを焦点評価値として記憶させる。S1403では、フォーカスレンズ104の現在位置を取得してCPU115が該位置のデータを記憶させる。
S1404では、CPU115が、撮影準備を指示するSW1の状態(ON/OFF)を判定し、該状態がON(オン)状態なら本処理を終了して図2のS212へ進み、OFF(オフ)状態の場合にはS1405へ進む。S1405では、前述した図5のシーン変化判定を行う。S1406では、フォーカスレンズ104が予め設定したゾーンの境界位置にあるかどうかを調べ、そうであればS1407へ進み、そうでなければS1409へ進む。S1407では、後述する手順に従ってゾーン更新判定を行う(図15参照)。ここでゾーン更新とは、或るゾーンをスキャンした後、引き続き隣接するゾーンをスキャンすることを指す。
S1408では、S1407で判定した結果、ゾーン更新すると判定されたかどうかを調べ、ゾーン更新すると判定されていればS1409へ進み、そうでなければS1411へ進む。S1409では、CPU115がフォーカスレンズ104の現在位置がスキャン終了位置と等しいかを調べ、両者が等しい場合にはS1411へ進み、そうでなければS1410へ進む。S1410では、フォーカスレンズ104をスキャン終了方向へ向かって所定量だけ移動させた後、S1402に戻る。S1411では、前述した図12の主被写体領域判定を行う。
図15は、図14におけるS1407のゾーン更新判定を説明するフローチャートである。ここでは、スキャン方向の先に主被写体が存在していそうかどうか、つまりAFスキャンを続けるかどうかを判定する。図16は、図15におけるゾーン更新判定の例を説明する図である。この例では、AF枠の大きさを画面の10%、N=5、M=3とする。
まず、S1501では、設定した各AF枠全てにおいて前述した図6の合焦判定を行う。例えば、各AF枠において図16(a)に示す様な合焦判定結果となるとする。S1502では、最終ゾーンまでスキャンをしたかどうかを調べ、最終ゾーンまでスキャンしていればS1512へ進み、そうでなければS1503へ進む。S1503では、○判定枠があるかどうかを調べ、○判定枠があればS1504へ進み、そうでなければS1511へ進む。
S1504では、中央枠が△判定かどうかを調べ、中央枠が△判定であればS1511へ進み、そうでなければS1505へ進む。S1505では、中央M×M枠の中で△判定枠が所定枠数以上の「かたまり」としてあるかどうかを調べ、あればS1511へ進み、そうでなければS1506へ進む。図16では、例として所定数を2とする。S1506では、中央M×M枠のうちの枠を1枠以上含む様にN×N枠のAF枠中に△判定枠が所定枠数以上の「かたまり」としてあるかどうかを調べ、そうあればS1511へ進み、そうでなければS1507へ進む。図16では、例として所定数を4とする。S1507では、中央M×M枠中に○判定枠が所定数以上の「かたまり」としてあるかどうかを調べ、そうであればS1512へ進み、そうでなければS1508へ進む。図16では、例として所定数を5とする。
S1508では、中央枠が×判定かどうかを調べ、中央枠が×判定であればS1511へ進み、そうでなければS1509へ進む。S1509では、中央M×M枠の中で△判定枠又は×判定枠が所定枠数以上の「かたまり」としてあればS1511へ進み、そうでなければS1510へ進む。図16では、例として所定数を2とする。S1510では、中央M×M枠のうちの枠を1枠以上含む様にN×N枠の全ての枠中に△判定枠又は×判定枠が所定数以上の「かたまり」としてあるかどうかを調べ、そうであればS1511へ進み、そうでなければS1512へ進む。図16では、例として所定数を4とする。S1511では、「ゾーン更新する」と判定して本判定処理を終了する。S1512では、「ゾーン更新しない」と判定して本判定処理を終了する。
例えばN=5、M=3としたとき、図16(b)に示している灰色の領域の「かたまり」となり、「ゾーン更新する」と判定される。
図17は、図8におけるS811の一様面判断を説明するフローチャートである。ここで「一様面である状態」とは画面内に輝度差がなく、コントラストがないため、AFを行っても焦点評価値ピークが充分に得られない状態のことである。「一様面である状態」において撮影シーンが安定するたびに図2のS208の被写体領域特定AFスキャンが繰り返されると、画面のピント変動が無駄に繰り返されるため、煩わしい。そのため、この一様面判断フローでは、「一様面である状態」を判定した場合には、「一様面である状態」を判定しなくなるまでフォーカスレンズ104を停止する動作を行う。
まず、S1701では、後述する手順に従って一様面判定を行う(図18参照)。S1702では、S1701で判定した結果、撮影シーンが一様面であると判定したかどうかを調べ、一様面と判定していればS1703へと進み、そうでなければ本判断処理を終了する。S1703では、AF処理部105がフォーカスレンズ104を所定位置へと移動させる。ここで所定位置とは、例えば無限遠を被写界深度の無限遠側に含む過焦点距離とする。
S1704では、CPU115が、撮影準備を指示するSW1の状態(ON/OFF)を判定し、該状態がON(オン)状態なら本処理を終了して図2のS212へ進み、OFF(オフ)状態の場合にはS1705へ進む。S1705では、後述する一様面判定を行う。S1706では、S1705で判定した結果、撮影シーンが一様面であると判定したかどうかを調べ、一様面と判定していればS1704に戻り、そうでなければ本判断処理を終了して図2のS201に戻る。
以上の様にして、「一様面である状態」でなくなるまでフォーカスレンズ104を停止することができる。
図18は、図17におけるS1701、S1705の一様面判定を説明するフローチャートである。ここでは、画面内の輝度情報及び焦点評価値に基づいて「一様面である状態」かどうかを判定する。図19は、図18の一様面判定について図で説明したものである。図19(a)の[1]部分は、「一様面である状態」を示しており、図19(a)の[2]部分は、「一様面でない状態」を示している。
まず、S1801では、設定しているAF枠が1枠かどうかを調べ、設定しているAF枠が1枠であればS1805へ進み、そうでなければS1802へ進む。S1802では、「画面中央M×M枠と、画面全体N×N枠中の4隅M×M枠それぞれとの輝度積分値の差分」を算出する。例えば、枠サイズ10%、N=5、M=3とすると、図19(a)の風景の中で[1]部分の領域を撮影シーンとした場合、画面中央M×M枠の輝度積分値は図19(b)のAに示す灰色の領域の輝度値を積分したものとなる。また、画面全体N×N枠中の4隅M×M枠それぞれの輝度積分値は図19(b)のB、C、D、Eに示すそれぞれの灰色の領域の輝度値を積分したものとなる。それぞれの輝度積分値を、A、B、C、D、Eとすると、A−B、A−C、A−D、A−Eの絶対値が、「画面中央M×M枠と、画面全体N×N枠中の4隅M×M枠それぞれの輝度積分値の差分」となる。
S1803では、S1802で算出した「画面中央M×M枠と、画面全体N×N枠中の4隅M×M枠それぞれの輝度積分値の差分」のうち所定値以上の輝度差分となるものがあるかどうかを調べ、そうであればS1807へ進む。そうでなければS1804へ進む。S1804では、中央M×M枠の各AF枠の焦点評価値を演算したものを新たな焦点評価値とする。演算の仕方は例えば加算する。S1805では、焦点評価値が所定値以上かどうかを調べ、所定値以上であればS1807へ進み、そうでなければS1806へ進む。S1806では、撮影シーンが「一様面である」と判定して本判定処理を終了する。S1807では、撮影シーンが「一様面ではない」と判定して本判定処理を終了する。
これにより、図19(a)の[1]部分の様な「一様面である状態」では、「一様面である」と判定することができ、図19(a)の[2]部分の様な「一様面ではない状態」では、「一様面ではない」と判定することができる。
図20は、図8におけるS813のフォーカス駆動を説明するフローチャートである。まず、S2001では、主被写体領域が特定できたかどうかを調べ、特定できていればS2002へ進み、そうでなければS2003へ進む。S2002では、選択したAF枠中の最至近位置にフォーカスを駆動して本処理を終了する。S2003では、中央M×M枠中に○判定があるかどうかを調べ、○判定があればS2004へ進み、そうでなければS2005へ進む。S2004では、中央M×M枠中の○判定のうち最至近位置にフォーカスを駆動して本処理を終了する。S2005では、予め記憶している位置(定点)へと移動させて本処理を終了する。ここで、定点は、例えば、被写体の存在確率の高い距離に設定する。
次に、図21は、図2におけるS209のコンティニュアスAFを説明するフローチャートである。まず、S2101では、合焦度判定フラグをTRUEにする。S2102では、設定した各AF枠で焦点評価値を取得する。こうしたAF枠は、前述の第1のAFスキャン動作で特定した合焦すべき被写体領域を含み設定した1つ又は複数の焦点検出領域とすることができる。
S2103では、設定しているAF枠が1枠かどうかを調べ、設定しているAF枠が1枠の場合はS2105へ進み、そうでない場合はS2104へ進む。S2104では、主被写体領域として選択したAF枠の焦点評価値を用いて演算した評価値をS2105以降に用いる焦点評価値として設定し直す。これにより、撮影シーンが変化して画面内の主被写体領域が変化しても、常に画面内の主被写体領域の焦点評価値を算出することができる。
S2105では、焦点評価値に基づいて合焦度を算出する。本実施例では、焦点評価値に基づいて、合焦度を高、中、低の3段階で決定することにする。S2106では、CPU115が、撮影準備を指示するSW1の状態(ON/OFF)を判定し、該状態がON(オン)状態ならば本処理を終了して図2のS213へ進み、OFF(オフ)状態の場合にはS2107へ進む。S2107では前述した図5のシーン変化判定を行う。
S2108では、ピーク検出フラグがTRUEであるかどうかを調べ、TRUEであればS2125へ進み、FALSEであればS2109へ進む。S2109では、フォーカスレンズ104の現在位置を取得する。S2110では、焦点評価値の取得及びフォーカスレンズ104の現在位置の取得をカウントするための取得カウンタに1を加える。この取得カウンタは、初期化動作(図示略)において予め0に設定されているものとする。S2111では、取得カウンタの値が1かどうかを調べ、取得カウンタの値が1ならばS2114へ進み、取得カウンタの値が1でなければS2112へ進む。
S2112では、「今回の焦点評価値」が「前回の焦点評価値」よりも大きいかどうかを調べ、そうであればS2113へ進み、そうでなければS2120へ進む。S2113では、増加カウンタに1を加える。S2114では、今回の焦点評価値を焦点評価値の最大値としてCPU115に内蔵される図示しない演算メモリに記憶する。S2115では、フォーカスレンズ104の現在の位置を焦点評価値のピーク位置としてCPU115に内蔵される図示しない演算メモリに記憶する。S2116では、今回の焦点評価値を前回の焦点評価値としてCPU115に内蔵される図示しない演算メモリに記憶する。S2117では、フォーカスレンズ104の現在位置が焦点検出範囲の端にあるかどうかを調べ、そうであればS2118へ進み、そうでなければS2119へ進む。S2118では、フォーカスレンズ104の移動方向を反転する。S2119では、フォーカスレンズ104を所定量移動する。
S2120では、「焦点評価値の最大値−今回の焦点評価値」が所定量より大きいかどうかを調べ、「焦点評価値の最大値−今回の焦点評価値」が所定量より大きければステップS2121へ進み、そうでなければステップS2116へ進む。ここで「焦点評価値の最大値−今回の焦点評価値」が所定量より大きいこと、即ち最大値から所定量減少していれば、その最大値をピントのピーク位置での値とみなす。S2121では、増加カウンタが0より大きいかどうかを調べ、0より大きければS2122へ進み、0より小さければS2116へ進む。S2122では、フォーカスレンズ104を前記S2115で記憶した焦点評価値が最大値となったピーク位置へ移動させる。S2123では、ピーク検出フラグをTRUEとする。S2124では、取得カウンタを0とする。
S2125では、今回の焦点評価値が焦点評価値の最大値に対して所定割合以上変動したかどうかを調べ、所定割合以上の大きな変動をしていればS2127へ進み、小さな変動であればS2126へ進む。S2126では、フォーカスレンズ104の位置をそのまま保持する。S2127では、焦点評価値が最大となるフォーカスレンズ位置を再び求め直すため、ピーク検出フラグをFALSEとし、焦点評価値の最大値及びピーク位置をリセットする。S2128では、増加カウンタをリセットする。
以上の様にして、コンティニュアスAF動作では常に主被写体が合焦状態となる様にフォーカスレンズを駆動する。
図22は、図2におけるS211のシーン不安定判断を説明するフローチャートである。まず、S2201では、角速度センサ部125で検出したカメラ動作量が所定量以上となっているかどうかを調べ、所定量以上であればS2205へ進み、そうでなければS2202へ進む。S2202では、前回からの輝度変化量が所定量以上かどうかを調べ、所定量以上であればS2205へ進み、そうでなければS2203へ進む。S2203では、顔検出モジュール123で検出した顔検出状態が変化したかどうかを調べ、顔検出状態が変化していればS2205へ進み、そうでなければS2204へ進む。ここで、顔検出状態とは、例えば、顔検出されているかどうかである。つまり、前回のシーン不安定判断で顔検出されていて今回のシーン不安定判断で顔検出されていなければ、顔検出状態が変化したことになる。S2204では、撮影シーンが変化していないと判断して本処理を終了する。S2205では、撮影シーンが変化したと判断して本処理を終了する。
次に、図23は、図2におけるS213の撮影処理を説明するフローチャートである。まず、S2301では、AE処理部103で本露光用のAE処理を行う。S2302では、後述する手順に従って本露光用のAFを行う(図24参照)。S2303では、CPU115は撮影スイッチSW2(122)の状態(ON/OFF)を判定し、該状態がONならばS2305へ進むが、OFF状態の場合にはS2304へ進む。S2304では、撮影準備を指示するSW1の状態(ON/OFF)を判定し、該状態がON(オン)状態ならS2303へ進み、OFF(オフ)状態の場合には本処理を終了する。S2305では、後述する手順に従って本露光処理を行い(図26参照)、本処理を終了する。
図24−1は、図23におけるS2302の本露光用AFを説明するフローチャートである。まず、S2401では、主被写体検出フラグがTRUEであるかどうかを調べ、TRUEであればS2402へ進み、そうでなければS2403へ進む。
S2402、S2403では、本露光用のAF枠設定を行う。ここでの枠数設定は、主被写体検出判定にて設定したN×Nと異ならせる。本実施例では、例えば、AF評価値の演算量を低減させる為、N>Lとなるような枠設定L×Lで設定する。更に、枠サイズとしてはS/N比を向上させるため、SizeN<SizeLとなるような枠サイズを設定する。
また、枠の設定は、前述の第1のAFスキャン動作における主被写体の検出結果に基づいて決定しても良い。主被写体が検出できていた場合は、S2402にて、AF評価値の演算量の低減、S/N比を向上させる為、N>L、SizeN<SizeLとなるAF枠設定(1)を設定する。主被写体が検出できていない場合は、主被写体検出用に設定した枠に対して、細かな被写体を撮影しており、背景抜けなどの現象が起こっている可能性がある。そこで、主被写体検出の分解能を上げる為、S2403にてN<L’、SizeN>SizeL’となるようなAF枠設定(2)を設定してもよい。枠数を増減する例を図24−2(a)、(b)、図24−3(c)、(d)、図24−4(e)、(f)に示す。
S2404では、S2105で算出した合焦度が「高」であるかどうかを調べ、合焦度が「高」であればS2405へ進み、そうでなければS2406へ進む。S2405では、現在のフォーカスレンズ104の位置を中心にスキャン範囲(1)の設定を行う。ここでは、コンティニュアスAF動作により主被写体にほぼピントが合っている状態、つまり焦点評価値がピークを示す合焦位置付近にフォーカスレンズが位置すると判断して、狭いスキャン範囲を設定する。S2406では、S2105で算出した合焦度が「中」であるかどうかを調べ、合焦度が「中」であればS2407へ進み、そうでなければS2408へ進む。S2407では、現在のフォーカスレンズ104の位置を中心にスキャン範囲(2)の設定を行う。ここでは、コンティニュアスAF動作により合焦位置付近にフォーカスレンズが位置しているが、合焦度が「高」状態ほどではないと判断して、スキャン範囲(1)設定より範囲を広げた狭い範囲とする。
S2408では、フォーカスレンズ104の現在位置がマクロ領域かどうかを調べ、マクロ領域であればS2409へ進み、そうでなければS2410へ進む。S2409では、予め記憶してあるマクロ領域であるスキャン範囲(3)を設定する。S2410では、予め記憶してあるレンズ移動範囲全域であるスキャン範囲(4)に設定する。S2411では、後述する手順に従って本露光用AFスキャンを行う(図25参照)。S2412では、後述する図25のS2506で算出したピーク位置にフォーカスレンズ104を移動させる。
図25は、図24におけるS2405の本露光用AFスキャンを説明するフローチャートである。まず、S2501では、フォーカスレンズ104をスキャン開始位置へと移動させる。ここでスキャン開始位置とは、図24のS2404又はS2406又はS2408又はS2409で設定したスキャン範囲の端位置とする。S2502では、撮像素子108から読み出されたアナログ映像信号をA/D変換部109がデジタル信号に変換し、その出力から画像処理部110が輝度信号の高周波成分を抽出し、CPU115はこれを焦点評価値として記憶させる。S2503では、フォーカスレンズ104の現在位置を取得してCPU115が該位置のデータを記憶させる。S2504では、CPU115がフォーカスレンズ104の現在位置がスキャン終了位置と等しいかを調べ、両者が等しい場合にはS2506へ進み、そうでなければS2505へ進む。S2505では、フォーカスレンズ104をスキャン終了方向へ向かって所定量だけ移動させた後、S2502に戻る。S2506では、S2502で記憶した焦点評価値とそのレンズ位置から、焦点評価値のピーク位置を計算する。焦点評価値のピーク位置を計算するにあたって、AF枠を複数枠設定した場合は、図12で説明した主被写体領域判定により決定した主被写体領域の最至近ピーク位置に基づいて計算してもよいし、別の判断の仕方をしてピーク位置計算を行ってもよい。
図26は、図23におけるS2305の本露光処理を説明するフローチャートである。まず、S2601における撮像素子108の露光後に、S2602では撮像素子108に蓄積されたデータを読み出す。S2603では、A/D変換部109で撮像素子108から読み出したアナログ信号をデジタル信号に変換する。S2604では、画像処理部110で、A/D変換部109から出力されるデジタル信号に対して各種画像処理を施す。S2605では、S2604で処理した画像をCPU115の制御下でJPEGなどのフォーマットにしたがって圧縮する。S2606では、S2605で圧縮したデータを画像記録部114に送り、記録させる様にCPU115が制御を行う。
以上に説明した本実施例によれば、第1のAFスキャン動作では、合焦すべき被写体を精度良く検出でき、第2のAFスキャン動作では、演算を簡易化することや、S/N比の向上により合焦精度を向上させることが可能となる。