以下、この発明の実施形態について図を参照して説明するが、この発明は以下の実施の形態に限定されない。また、以下で説明する実施形態は発明の最も好ましい形態を示すものであり、発明の範囲を限定するものではない。
図1は、本発明の実施形態である撮像装置1の構成を示すブロック図である。図1に示すように、撮像装置1はレンズユニット100により結像された被写体像を撮像素子109で撮像するいわゆるデジタルスチルカメラである。レンズユニット100は、固定レンズ101、変倍レンズ102、絞り103、固定レンズ104及びフォーカスレンズ105が物体側(被写体側)から順に配置されて構成される撮像光学系を収容している。
位置エンコーダ108は、変倍レンズ102、絞り103(絞り羽根)及びフォーカスレンズ105の位置を検出する。変倍レンズ102は、ズームモータ106により光軸方向に駆動され、フォーカスレンズ105はフォーカスモータ107により光軸方向に駆動される。これらズームモータ106及びフォーカスモータ107は、それぞれズーム駆動回路120及びフォーカス駆動回路121からの駆動信号を受けて動作する。すなわち、レンズユニット100における撮像光学系は、フォーカス駆動回路121がCPU110の制御の下で動作することでフォーカスレンズ105を駆動させて合焦させる自動合焦機能を備えている。
撮像素子109は、CCD(Charge Coupled Device)センサ、CMOS(Complementary Metal Oxide Semiconductor)イメージセンサ等である。撮像素子109は、撮像光学系に入射した光によって形成された、撮像範囲内の被写体像光を光電変換し、画像信号を取得する。撮像信号処理回路119は、撮像素子109で光電変換されて出力された信号に対して、増幅処理、ガンマ補正処理、ホワイトバランス処理等の各種信号処理を施し、所定の映像フォーマットの映像信号に変換する。撮像信号処理回路119で変換された映像信号は、CPU110の制御の下、モニタディスプレイ114から表示出力されたり、半導体メモリ、光ディスク、ハードディスク等の画像記録用メディア116に記録されたりする。
CPU110(Central Processing Unit)は、撮像装置1の各種動作や機能を中央制御する。操作スイッチ群115には、電源スイッチ、撮像動作や撮像した画像の再生動作を開始又は停止させるスイッチが設けられている。また、操作スイッチ群115には、撮像装置1の動作モードを選択するためのスイッチ、撮像光学系のズーム状態を変化させるためのズームスイッチ等も設けられている。これらのスイッチが操作されると、CPU110は、フラッシュメモリ113に格納されたプログラムの一部をRAM112(Random Access Memory)の作業領域にロードする。CPU110は、このRAM112にロードされたプログラムに従って各部を動作を制御する。
顔検出処理回路111は、撮像信号処理回路119から出力される映像信号からの画像処理と顔検出処理を行い、その画像内において人物の顔がどの位置にあるか、その大きさはどれ程かなどの顔検出(被写体検出)を行う。顔検出処理回路111における画像処理と顔検出処理には、もとの映像信号から画像のサイズを小さくして演算するためのリサイズ処理や、顔の輪郭検出処理、顔であることの信頼度判定処理等が含まれる。顔検出処理回路111におけるこれらの処理は、詳細は後述するが、映像信号が顔検出処理回路111に入力されてから検出結果が出るまでに数十ms〜数百msの時間がかかるものとなっている。すなわち、顔検出処理回路111は、撮像素子109により逐次撮像された撮像画像から間欠的に人物の顔を検出する。
なお、人物の顔検出方法は、公知の技術を適用可能であり、本発明とは直接関係しないため、詳細な説明は省略する。なお、公知の顔検出技術としては、ニューラルネットワークなどを利用した学習に基づく手法、テンプレートマッチングを用いて目、鼻、口等の形状に特徴のある部位を画像から探し出し、類似度が高ければ顔とみなす手法などがある。また、他にも、肌の色や目の形といった画像特徴量を検出し、統計的解析を用いた手法等、多数提案されている。一般的には、これらの手法を複数組み合わせ、顔検出の精度を向上させている。具体的な例としては、特開2002−251380号公報に記載されるようなウエーブレット変換と画像特徴量を利用して顔検出する方法などが挙げられる。
ラインセンサ131は、撮像素子109の撮像画像を用いたコントラストAFとは別の外測AFに用いるセンサであり、複数の受光素子が一列に並べられて構成されている。ラインセンサ131には、被写体からの光が撮像光学系とは別に設けられた外測AF用の結像レンズ130を通って、すなわち撮像光学系を通らずに到達する。
位相差センサとしてのラインセンサ131は、例えば図2(a)に示すように、結像レンズ130の光軸上を中心として200個の受光素子が並べられて構成されている。なお、図2(a)の例では、説明の便宜上、光軸上の中心の受光エリアCと、その左右に配置された受光エリアL1、L2、R1、R2とに分けて示されている。各受光エリアはそれぞれ40個の受光素子で構成されている。
また、図2(a)では、撮像装置の画角がテレ端である場合のラインセンサ131の受光範囲を点線で例示している。同図に示すように、画角がテレ端では、ラインセンサ131の受光エリアCのみが用いられる。また、撮像装置の画角がワイド端では、図2(b)に示すように、ラインセンサ131の受光エリアCだけでなく全ての受光エリアが用いられる。すなわち、ラインセンサ131において測距に用いられる受光エリアは撮像装置の画角に応じたものとなる。もちろん、撮像装置1のレンズ焦点距離設計の仕様によってはこの関係に限定されるものではない。
撮像装置1には、このように200個の受光素子により構成されたラインセンサ131が左右に2つ設けられている。撮像装置1では、これら2つのラインセンサ131において対応する受光エリアに形成された2つの被写体像のずれ量(位相差)を検出することで、被写体までの距離を測定する。したがって、ラインセンサ131から出力される信号は、被写体(又は物体)までの距離に応じた信号である。
図3は、外測AF用のラインセンサ131を2つ用いた位相差による測距原理の概要を示す概念図である。図3に示すように、第1の結像レンズ130a、第2の結像レンズ130bは図1に示した結像レンズ130に、第1のラインセンサ131a、第2のラインセンサ131bは図1に示したラインセンサ131にそれぞれ相当する。第1のラインセンサ131a、第2のラインセンサ131bは、基線長LBだけ互いに離れて設置されている。被写体201からの光のうち、第1の結像レンズ130aを通った光は第1のラインセンサ131a上に結像し、第2の結像レンズ130bを通った光は第2のラインセンサ131b上に結像する。
ここで、第1のラインセンサ131a、第2のラインセンサ131bからの出力信号(像信号)の例を図4に示す。図4は、横軸にラインセンサにおける画素位置、縦軸に像信号の出力値を示したグラフである。第1のラインセンサ131a、第2のラインセンサ131bは基線長LBだけ離れて設置されているため、図4に示すように、それらの像信号は互いに画素数Xだけずれた信号であり位相差が生じている。そこで、2つの像信号の相関を画素をずらしながら演算し、相関が最大になる画素ずらし量を求めることで画素数X(位相差)が演算できる。この画素数Xと、基線長LBと、第1の結像レンズ130a、第2の結像レンズ130bの焦点距離fとにより、三角測量の原理で被写体201までの距離Lが次の式(1)で求められる。
L=B・f/X …(1)
このようにして、式(1)により求められた距離Lに基づいて、CPU110は、被写体201に対して合焦を得るためのフォーカスレンズの位置(位置エンコーダ108により検出された現在のフォーカス位置からの駆動量)を算出する。この算出には、計算式を用いた演算だけでなく、予めフラッシュメモリ113に記憶された距離Lに対する合焦位置のデータを読み出すことも含まれる。CPU110は、フォーカス駆動回路121を介してフォーカスレンズ105を、被写体201に合焦するフォーカスレンズの位置(外測AFによる合焦位置)に駆動する。以上が外測AFによるフォーカス駆動制御である。したがって、外測AFにおける焦点評価値は位相差を示す画素数Xである。
次に、撮像素子109で撮像した画像を用いたコントラストAFについて説明する。撮像信号処理回路119は、撮像素子109の出力から得られた映像信号からバンドパスフィルタを用いて高周波成分を抽出し、AF評価値信号(焦点評価値)を生成する。この撮像信号処理回路119で生成されたAF評価値信号は、CPU110に出力される。
このAF評価値信号は、撮像素子109からの出力信号に基づいて生成される映像信号の鮮鋭度(コントラスト状態)を表すものである。鮮鋭度は撮像光学系の焦点状態によって変化するので、結果的にAF評価値信号は撮像光学系の焦点状態を表す信号となる。CPU110は、フォーカス駆動回路121を介してフォーカスレンズ105を駆動して、AF評価値信号の変化をモニタし、そのAF評価値信号が最大となるフォーカスレンズの位置を検出することで、合焦を得る。
図5は、コントラストAFの原理を説明するためのグラフであり、フォーカスレンズの位置とAF評価値との関係を示している。図5において、横軸はフォーカスレンズの位置を、縦軸はAF評価値信号の値を示している。図5に示すように、特定の距離の被写体を撮像してフォーカスレンズ105の合焦位置を至近から無限遠まで駆動させた場合、AF評価値信号の値は合焦点で極大となる。
したがって、CPU110は、AF評価値信号の値が極大となる合焦点をフォーカスレンズ105を駆動して求める。以上がコントラストAFによるフォーカスレンズの駆動制御である。
本実施形態における撮像装置1は、コントラストAFによるAF評価値が非常に低く、現在のフォーカスレンズの位置では合焦していないと判断される時に、外測AFによる合焦を行うように外測AFとコントラストAFとを切り替えている。具体的には、図6に示すように、フォーカスレンズの位置が合焦点から大きくずれている状態から合焦点の近傍までは外測AFを用い、高速にフォーカスレンズ105を駆動する。また、合焦点近傍では、高精度の合焦状態を得るためにコントラストAFを用いてフォーカスレンズ105を駆動する。このように、コントラストAFと外測AFとを切り替えて用いることで、フォーカスレンズの位置がどの位置にあったとしても、高速且つ高精度な合焦を行うことが可能となる。
図7は、コントラストAFと外測AFとを切り替える動作のフローチャートである。図7に示すフローチャートは、CPU110で行われるAF制御のうちの一つのモードであり、顔検出結果とは無関係に行われる。以下では、このAF制御のうちの一つのモードであり、コントラストAFと外測AFとを切り替えるモードをハイブリッドAFと呼ぶ。
図7に示すように、CPU110は、S301において、撮像装置1の電源スイッチの投入等をトリガとして、AF処理(ハイブリッドAF)を開始する。本フローチャートに示すAF処理は、例えば1フィールド画像を生成するための撮像素子109からの映像信号の読み出し周期にて繰り返し実行される。なお、以下では、このAF処理が繰り返し実行される周期をV周期と呼ぶ。
次いで、CPU110は、S302において、前述したコントラストAFでのフォーカスレンズの駆動制御を行う。このコントラストAFでの駆動制御には、AF評価値をモニタしつつフォーカスレンズ105を駆動させて合焦を得る動作が含まれる。また、コントラストAFでの駆動制御には、合焦が得られている状態において、フォーカスレンズの再駆動の必要性の有無を判断するために、AF評価値の低下があったか否かを判断する等、合焦状態を維持するための処理も含まれる。
次いで、CPU110は、S303において、2つのラインセンサ131からの出力を用いた位相差により、被写体との距離を検出する。次いで、CPU110は、S304において、S303で検出した被写体との距離に基づいて外測合焦位置(外測AFによるフォーカスレンズの位置)を算出する。
CPU110は、S305において、変倍レンズ102の位置(つまりは、撮像光学系の焦点距離)に応じて、次のS306で用いられる閾値としての所定移動量thを設定する。ここにいう所定移動量thとは、コントラストAF又は外測AFの切り替えを判断するための、位置エンコーダ108により検出された現在のフォーカスレンズ105の位置と外測合焦位置との差に関する閾値である。なお、所定移動量thは、テレ側ではワイド側よりも大きく設定する。
次いで、CPU110は、S306において、現在のフォーカスレンズの位置と外測合焦位置との差を、S305で設定した所定移動量thと比較する。S306において、現在のフォーカスレンズの位置と外測合焦位置との差が所定移動量thよりも大きければ、CPU110は処理をS307へ進め、外測AFによって外測合焦位置にフォーカスレンズ105を移動させる。つまり、現在のフォーカス位置と外測合焦位置との差が大きいということは、そのフォーカスレンズの位置が合焦点より大きくずれているということである。よって、外測AFでの駆動制御が行われる。そして、S302のコントラストAF処理に戻る。
なお、S306において、現在のフォーカスレンズの位置と外測合焦位置との差が所定移動量thよりも小さければ、CPU110は、そのままS302のコントラストAF処理に戻る。つまり、現在のフォーカスレンズの位置と外測合焦位置との差が小さいということは、そのフォーカスレンズの位置が合焦点近傍であるということである。よって、コントラストAFでの駆動制御が行われる。
このように、ハイブリッドAFでは、コントラストAF制御が繰り返し行われるAF処理中において、現在のフォーカスレンズの位置と外測合焦位置とが所定移動量thよりも大きく離れ、おおボケ状態の時に外測AFによる駆動制御を行う。このようなハイブリッドAFにより、フォーカスレンズが頻繁にかつ不連続的に移動することを回避できるとともに、外測AFの良好な応答性と高速動作という特長を生かすことができる。さらに、その後はコントラストAF処理によって高精度な合焦状態を得ることができる。
なお、本実施形態において撮像装置1は、さらに、撮像素子109での撮像画像から人物の顔を検出する顔検出処理回路111を備えており、撮像素子109での撮像画像に対して次のような処理を行うことで顔検出結果を導く。
すなわち、顔検出処理回路111は、撮像素子109からの画像読み出し後、画像を記録画像よりも小さい画像サイズにリサイズして、パターンマッチングによる顔検出を行い易くするための前処理を行う。次に、顔検出処理回路111は、顔の輪郭や目の間隔などをもとにパターンマッチングを行い、画像中の顔検出結果として、顔の位置、顔の大きさ、目の間隔、顔である可能性の高さを示す評価値を算出する。
また、顔検出処理回路111は、1枚の画像中に顔が検出された場合には、その後も相関性が高い顔が時間的に連続して検出されたか否かを評価する。これらの演算や評価の結果、顔検出処理回路111は誤検出を減らした顔検出結果を得る。
上述したように、撮像装置1では、撮像素子109から映像信号を読み出した後に様様な処理を行って顔検出結果を得ているため、実際に撮像されてから顔検出結果を得るまで遅延が発生することになる。この遅延時間は主にシステムスペックに依存する。本実施形態では、この遅延時間をV周期の5倍、すなわち5V程度の時間とする。
撮像装置1は、顔検出結果によって人物の顔が検出されたときに、顔に優先的にフォーカスを合わせる顔優先モードを2種類備えており、ユーザが好みに応じて操作スイッチ群115を操作することで切り替え可能となっている。第1の顔優先AFモードは、顔検出された場合に顔の枠内でコントラストAFを使うことで顔にフォーカスを合わせるモードである。以下では、この第1の顔優先AFモードについて詳細に説明する。
図8は、第1の顔優先AFモード時における動作であり、AFモードの切り替え方を示したフローチャートである。具体的には、第1の顔優先AFモード時には、外測AFモード、コントラストAFモード、顔検出された枠を用いた顔枠コントラストAFモードが切り替えて用いられている。
コントラストAFモードは、上述したとおりの通常のコントラストAFモードでの駆動である。顔枠コントラストAFモードは、撮像素子109の出力のうち、特に顔が検出された枠内の撮像画像からAF評価値を生成し、そのAF評価値によりAF動作させることで顔付近への合焦を正確に行うモードである。
第1の顔優先AFモードでは、顔が検出されるまでは、撮像素子109の撮像領域のうち所定の領域を撮像光学系の焦点調節を行うための焦点検出領域として、外測AFモード、コントラストAFモードで焦点調節を行う。そして、顔が検出された際には、検出された顔に焦点検出領域(枠)を設定して、顔枠コントラストAFモードで焦点調節を行う。
図8に示すように、S401で第1の顔優先AFモードが開始されると、CPU110は、S402において、撮像素子109の出力に応じて撮像画像に顔が検出されたか否かを判定する。この判定で顔が検出された場合、CPU110は、S406に処理を移行し、顔枠コントラストAFモードでのAF処理を行う。また、顔が検出されない場合、CPU110は、S403に処理を移行し、コントラストAFモードでのAF処理を行う。
S403に次いで、CPU110は、S404において、撮像画像が合焦状態から大きくはずれたおおボケ状態であるか否かを判定する。ここでおおボケ状態であると判定された場合、CPU110は、S405において、外測AFモードでのAF処理を行う。なお、おおボケ状態の判定とは、図7を参照して前述したS306と同様の処理や、S403のコントラストAFモード処理におけるAF評価値が予め設定されている閾値を下回るか否かを判定することである。
上述したように、第1の顔優先AFモードは、撮像画像において顔が検出された時には外測AFを用いず、顔へのAFはコントラストAFで行う方式にあたる。一方、第2の顔優先AFモードは、顔が検出されたときでも外測AFを用いる方式にあたる。
以下では、第2の顔優先AFモードについて詳細に説明する。先ず、図9、図10を参照して顔枠と撮像装置の画角、外測AFセンサの測距枠(検出領域)について説明する。図9に示すように、図中のAは撮像装置の画角を点線枠で示したものである。また、Bは、人物の顔を検出した時の枠であり、被写体の位置や撮像装置の向きなどにより様々な位置及び大きさで検出される。また、Cは、外測AFセンサの測距枠にあたり、この範囲の被写体光を用いて外測AFによる測距が行われることを示す。この測距枠は、図2を参照して示したとおり、ズーム位置に応じて撮像装置の画角に対する大きさが変化するものである。なお、ズーム位置に応じて枠の大きさがどの程度変化するかは単純な比例計算によって求めることが可能である。
図10(a)〜図10(d)は、図9と同様な表示態様で、顔の検出位置や大きさが異なる4パターンのそれぞれの様子を示したものである。図10(a)は、顔検出位置が外測AFセンサの検出領域である測距枠C内にある場合を示した図である。このように、測距枠C(焦点検出領域)内に顔検出による顔検出枠Bがある状態の時には、顔検出枠Bの顔にAFするにあたり、外測AFセンサの測距結果を用いることが可能である。
図10(b)は、顔検出位置が外測AFセンサの測距枠Cから外れた画角A内の上側にあり、顔に対する距離がわかるというよりも、図示しない(顔の下方にあるはずの)胴体への距離が外測AFにより推定される状態である。よって、このような位置関係にある場合も、外測AFセンサの測距結果に基づいて顔AFを行うことが可能な状態といえる。
しかしながら、図10(c)に示すように、外測AFの測距枠Cから外れた画角A内の上側であっても、顔検出枠Bの大きさが小さい場合は、胴体が測距枠Cにある可能性が著しく減ることになるため、外測AFセンサの測距結果は信頼できない。よって、本実施形態では、顔の大きさは五頭身程度が一般的ということを踏まえて、顔検出枠Bの一辺の長さをLFとしたときの顔検出枠Bの下端から測距枠Cの下端までの長さKが、4LF以上の時には外測AFセンサの測距結果を用いないものとする。
また、図10(d)は、顔検出位置が外測AFセンサの測距枠Cから外れた画角A内の下側にあり、外測AFによる測距結果を用いて顔AFを行うことが難しい状態である。よって、このような位置関係にある場合は、外測AFによる測距結果を用いないものとする。すなわち、顔検出枠BでのAFを外測AFセンサの測距結果を用いて行うか否かは、顔検出枠Bのサイズ及びその顔検出枠Bと測距枠Cとの位置関係に応じて判定する。
次に、図11のフローチャートを参照して、第2の顔優先AFモードの動作を説明する。図11に示すように、S501で第2の顔優先AFモードが開始されると、CPU110は、S502において、外測AFセンサによる測距情報と、コントラストAFによるAF評価値とにより現在の合焦距離(合焦となるフォーカスレンズの位置)を算出する。この合焦距離をV周期ごとに保持するため、CPU110は、S503においてV周期に到達したか否かを判定し、V周期のタイミングを待つ。
V周期のタイミングとなった場合、CPU110は、S504において、現在のフォーカス位置から逆算した合焦距離(合焦情報)をメモリに記憶する。なお、本実施形態では、撮像画像から顔検出にかかる5V周期分の合焦距離を記憶するため、5つのメモリ空間に逆算した合焦距離を順次スタックしていく。すなわち、時刻Tnの時の合焦距離の値をLnとすれば、5つのメモリ空間上にはそれぞれLn〜Ln+5の値が保持されることとなる。なお、測距はV周期とは非同期で行われるが、保持される合焦距離値はV周期のタイミングと同期して5V周期分記憶されることになる。
次いで、CPU110は、S505において、前回のV周期のタイミングで顔が検出されたか否かを判定する。前回のV周期のタイミングでも顔が検出された状態であれば、CPU110は処理をS520に移行する。また、前回のV周期のタイミングで顔が検出されていない状態であれば、CPU110は、処理をS506に移行する。
S520において、CPU110は、今回のV周期のタイミングで顔が検出されたか否かを判定する。今回のV周期のタイミングで顔が検出されていない状態であれば、CPU110は、S522に処理を進め、ハイブリッドAFでのAF処理を行う。なお、ハイブリッドAFでのAF処理については、図7を参照して説明したフローのとおりである。
また、S520において今回のV周期のタイミングでも顔が検出された状態であれば、CPU110はS521に処理を進め、従来どおりに顔枠を用いた顔枠コントラストAFモードでのAF処理を行う。すなわち、S521では、顔枠のAF評価値に基づいたフォーカス動作が行われることとなる。S521又はS522の後、CPU110は、S502へ処理を戻す。
S506では、CPU110は、今回のV周期タイミングで新しく顔が検出されたか否かを判定する。S506において新しく顔が検出されていない状態であれば、CPU110は、S507に処理を進め、通常のハイブリッドAFでのAF処理を行った後、S502に処理を戻す。
また、S506において新しく顔が検出された状態であれば、CPU110は、S510へ処理を進める。S510では、CPU110は、前回に顔が検出されてその後に顔が検出できなくなってから、今回顔が検出されるまでの時間差TFを算出する。すなわち、S510において、CPU110は、今回顔が検出された時刻と、直近に顔が検出された時刻との時間差を検出(時間間隔検出)する。
次いで、CPU110は、S511において、S510で算出された時間差TFが予め設定された時間以内であるか否かを判定する。具体的には、S511では、時間差TFがS504でスタックされている5V周期以内であるか否かを判定する。そして、前回顔検出された時との時間差TFが5V周期以内であり、その時の合焦距離がスタックされている場合は、CPU110はS516へ処理を進める。また、CPU110は、時間差TFが5V周期以上であれば、S512へ処理を進める。
すなわち、所定時間内に顔が検出されている状態であれば、やや不連続ではあるがほぼ連続的に顔が検出されているものとされる。概ね連続的に顔検出がされていれば、十分に顔へのフォーカス追従ができているといえる。この時には、S516へ処理を進め、CPU110は、顔枠のみを利用したコントラストAFでのAF処理を行う。
逆に、S511において、所定時間を超えた間隔で顔検出されたという状態であれば、撮像装置の電源を入れてから初めて顔が検出された時や、撮像中に突発的に顔が検出された状態であるといえる。この時は、画角に大きな変更が加わったり、突然人物が現れたときなど被写体への距離が大きく変わる可能性が高い状態であると考えられる。よって、このような時には、S512に移行する。
S512では、CPU110は、検出された顔検出枠の位置が画角のうちの所定範囲内であるか否かを判定する。この判定は、顔検出枠の位置及びその大きさと、外測AFセンサの測距枠との位置関係によって、顔がある位置(と想定される位置)が外測AFによる測距結果を用いて検出できるか否かを判断するものである。
顔検出枠の位置が所定範囲内であり外測AFによる測距結果を用いて顔がある位置を検出できる場合、CPU110は、S507に処理を進めハイブリッドAFでのAF処理を行う。また、顔検出枠の位置が所定範囲外であり外測AFによる測距結果を用いて顔がある位置を検出できない場合、CPU110は、S513へ処理を進める。
具体的には、図10(a)〜図10(d)を参照して説明したとおりであり、例えば、図10(a)のように外測AFセンサの測距枠Cの中に顔検出枠Bがある場合には外測AFセンサで顔の距離が検出できると判断する。また、図10(b)のように、顔の大きさは五頭身程度が一般的ということを踏まえて、胴体への距離が外測AFにより推定される状態である場合にも外測AFセンサで顔の距離が検出できると判断する。逆に、図10(c)のように、顔検出枠Bの大きさが小さく、胴体が測距枠Cにある可能性が著しく減る場合には外測AFセンサで顔の距離が検出できないと判断する。また、図10(d)のように、顔検出枠Bの位置が測距枠Cから外れた画角A内の下側にあるような場合にも外測AFセンサで顔の距離が検出できないと判断する。
顔検出枠の位置が上述した所定範囲内であり外測AFによる測距結果を用いて顔がある位置を検出できる場合、CPU110は、S507に処理を進めハイブリッドAFでのAF処理を行う。また、顔検出枠の位置が所定範囲外であり外測AFによる測距結果を用いて顔がある位置を検出できない場合、CPU110は、S513へ処理を進める。
S513では、CPU110は、顔が検出された時刻から5V前まで遡ったタイミングで、S504においてメモリに記憶されている合焦距離値をロードする。次いで、CPU110は、S514において、ロードした5V前の合焦距離値と現在の合焦距離値とを比較して、予め設定された所定値以上の差があるか否かを判定する。すなわち、CPU110は、現在のフォーカスレンズの位置と、メモリに記憶されている合焦距離値(合焦情報)に基づいたフォーカスレンズの位置との差が、予め設定された値以上離れているか否かを判定する。
S514において所定値以上の差がある場合、CPU110は、S515に処理を進め、ロードされた5V前の合焦距離に合焦するようにフォーカスレンズを駆動する。すなわち、CPU110は、顔に応じて設定された合焦領域による焦点調節に先立って、5V前の顔検出が行われた撮像画像の撮像時点におけるフォーカスレンズの位置へフォーカスレンズを移動させる。
また、S514において所定値未満であり、現在の合焦距離と5V前の合焦距離がほぼ同じ場合、CPU110は、S507に処理を進め、通常のハイブリッドAFでのAF処理を行う。なお、S514で比較する所定値とは、被写体(顔)距離に応じて変化する被写界深度(または焦点深度)を係数にもつ値であり、検出された顔がボケてしまうか否かを限度とするレベルに予め設定されている。
次に、上述したフローにより撮像装置1で撮像した時、どのようなフォーカス動作が行われるかを、図12及び図13の模式図を参照して説明する。図12は、顔検出した顔検出枠が外測AFセンサの測距範囲外であった場合の動作を模式的に示した図である。図12において、横軸は時間の経過を示している。また、縦軸は、画角内における撮像被写体についてはその距離を、顔検出については顔検出結果を示す信号のオン/オフを、フォーカス位置についてはフォーカスレンズの合焦位置を、外測測距については測距結果の位置を示している。
図12の撮像被写体に示すように、時刻0〜t1までの間は画角内において被写体(物1)がX1の距離にあらわれている。次いで、撮像装置1を少しパンニングするなどして、時刻t1において、撮像装置1の画角内には距離X2の人物の顔が現れている。この人物の顔は画角内における外測AFの測距範囲外に現れているものとする。また、この顔は時刻t3において画角内から消えており、それと入れ替わりに距離X1の別の被写体(物2)が現れている。
このような撮像被写体に対して、撮像装置1の顔検出では、時刻t1に現れた顔に対して顔検出処理による遅延が生じるため、時刻t1から5V周期後の時刻t2において初めて検出されることとなる。その後は、顔が画角内にある期間は常に顔検出がONとなり、顔が画角内からなくなった時刻t3から5V周期後の時刻t4において顔検出がOFFとなる。
この時、外測AFセンサによる測距値(位置)は、時刻t1までは被写体(物1)に対する距離X1を示している。また、外測AFセンサによる測距値は、時刻t1〜t3までは、顔が外測AFセンサの測距範囲外であるため、顔の距離X2ではなく、無限遠側の距離X3を示している。次いで、時刻t3以降は被写体(物2)に対する距離X3を示している。
このような状態においてのフォーカス動作は、図11に示すフローに基づいて次のようなものになる。すなわち、時刻t1までの間は被写体(物1)に合焦しており、フォーカスレンズの位置も距離X1の合焦位置にある。撮像装置1の画角内に顔が現れる時刻t1においては、被写体(物1)が画角内から消えたこともあるが、近距離である距離X1での合焦ではコントラストが低くおおボケ状態となる。この時は、外測AFセンサによる距離X3との差が大きくなるので、通常のハイブリッドAF動作として、外測AFセンサで捉えた値である距離X3に合わせるようにフォーカスレンズの位置が移動する。
その後は、時刻t1〜t2の間でも通常のハイブリッドAF動作が行われており、ほぼ距離X3で合焦している状態が続くことになる。次に、時刻t2において顔が検出されると、図11に示すフローのS510〜S512での判定が行われ、結果としてS513が実行されることとなる。すなわち、5V周期前の合焦距離である図12に示したQの値がロードされ、現在の合焦位置であるSの値と比較される。そして、図11に示すフローのS514において、そのQの値とSの値との差であるWが所定以上の大きさであると判定される。つまり、フォーカスレンズの位置がQの位置で顔が検出できる程度には合焦しており、Sの位置にフォーカスレンズの位置が移動してしまうことで、顔がボケてしまう虞があると判断される。
よって、S515により、5V周期前のQの位置にフォーカスレンズの位置が戻ることとなる。その後、時刻t2〜t3は顔検出されたままであるので、顔枠コントラストAF動作が行われ、徐々に顔のある距離X2へ合焦が進むことになる。時刻t3〜t4は、顔検出処理により遅延が生じるため顔枠はあるが、顔自体が画角内に存在しない状態である。したがって、顔が存在しない顔枠に対してコントラストAFが行われることとなる。この場合は、どこへ合焦が進むのか明示できないが、本実施形態では被写体(物2)がある距離X1へ合焦が徐々に進む状態となる。
次いで、時刻t4では、顔検出結果により顔枠が無くなり、この直後からハイブリッドAF動作が行われることとなる。ここでは、現在の合焦距離である図12に示したRの位置(距離X1)と、外測AFセンサによる距離X1とに差がないため、距離X1で合焦が続くことになる。
図13は、顔検出した顔検出枠が外測AFセンサの測距範囲内であった場合の動作を模式的に示した図である。なお、図13において、横軸や縦軸の表記は図12と同様である。
図13に示すように、時刻t1〜t3で画角内に入ってきた撮像被写体である人物の顔は時刻t2で顔検出されて、その顔検出枠が外測AFセンサ内であったと判定される。なお、時刻t1の直後では、顔が外測AFセンサの測距範囲内に入っているため、その測距値が顔の距離X2と同値である。したがって、時刻t1の直後では、外測AFセンサの測距値に応じて顔がある距離X2にフォーカス位置が移動する。よって、このままハイブリッドAF動作が続くことで、時刻t2で顔検出される前であっても顔に対するフォーカスが行われることとなる。
次いで、時刻t2で顔検出された後に時刻t3で顔が画角内から外れると、従来のハイブリッドAF動作に従って外測AFセンサの測距値によるAF動作が行われ、被写体(物2)が検出された距離X2へフォーカス位置が移動する。
以上のように本実施形態によれば、撮像装置1は、ラインセンサ131(外測AFセンサ)を用いて常に被写体距離を測距しつつ、顔の検出結果がでるまでの5V周期分の合焦位置をメモリに記憶している。そして、撮像装置1は、図11のフローに従って第2の顔優先AFモードでのフォーカス動作を行う。具体的には、顔優先AF時であっても前回顔検出した時刻から今回顔検出した時刻までの経過時間が長い場合には顔枠コントラストAFを行わずに不適切な顔へのAF動作を回避している。また、画角内の顔検出枠の位置と大きさに応じて、外測AFセンサによる測距が可能な場合はその測距値を使用することで、すばやく顔へのフォーカスが可能となる。また、5V周期分の合焦位置をメモリに記憶しており、とくに顔の検出結果後の顔検出枠におけるコントラストAFで被写体距離を測定するのではなく、事前の合焦距離を用いることで、すばやく顔へのフォーカスが可能となる。
なお、以上説明した本実施形態は本発明の一例に過ぎない。とくに顔検出に要する時間を本実施形態では5V周期分としたが、これら時間設定などのパラメータは、システムにより異なるものである。したがって、システムにあわせたパラメータにすることで本発明を実施することは可能である。
また、人物の顔を検出した場合の顔優先AFについて説明してきたが、優先してフォーカスをあわせたい場合に検出可能なさまざまな被写体(例えば、犬・猫などの動物、特定の文字など)に検出対象を置き換えられてもかまわない。その他、外部入力手段から撮像画面内の位置を入力したり、ファインダーを見ている撮影者の視線を検出して撮像画面内の位置を決定しても構わない。さらに外測AFセンサを用いた測距を説明したが、位相差検出を行うための焦点検出用素子の対が複数、分散して配置された撮像素子109により測距を行っても良い。また、2像を比較して位相差により焦点を検出する他の方法においても、検出対象の検出結果がでるまでのタイムラグ分の合焦距離をメモリに記憶する構成にすれば、上述と同様な効果が得られることはいうまでもない。
(他の実施形態)
上述の実施形態は、システム或は装置のコンピュータ(或いはCPU、MPU等)によりソフトウェア的に実現することも可能である。従って、上述の実施形態をコンピュータで実現するために、該コンピュータに供給されるコンピュータプログラム自体も本発明を実現するものである。つまり、上述の実施形態の機能を実現するためのコンピュータプログラム自体も本発明の一つである。
なお、上述の実施形態を実現するためのコンピュータプログラムは、コンピュータで読み取り可能であれば、どのような形態であってもよい。例えば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等で構成することができるが、これらに限るものではない。上述の実施形態を実現するためのコンピュータプログラムは、記憶媒体又は有線/無線通信によりコンピュータに供給される。プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記憶媒体、MO、CD、DVD等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
有線/無線通信を用いたコンピュータプログラムの供給方法としては、コンピュータネットワーク上のサーバを利用する方法がある。この場合、本発明を形成するコンピュータプログラムとなりうるデータファイル(プログラムファイル)をサーバに記憶しておく。プログラムファイルとしては、実行形式のものであっても、ソースコードであっても良い。そして、このサーバにアクセスしたクライアントコンピュータに、プログラムファイルをダウンロードすることによって供給する。この場合、プログラムファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに分散して配置することも可能である。つまり、上述の実施形態を実現するためのプログラムファイルをクライアントコンピュータに提供するサーバ装置も本発明の一つである。
また、上述の実施形態を実現するためのコンピュータプログラムを暗号化して格納した記憶媒体を配布し、所定の条件を満たしたユーザに、暗号化を解く鍵情報を供給し、ユーザの有するコンピュータへのインストールを許可してもよい。鍵情報は、例えばインターネットを介してホームページからダウンロードさせることによって供給することができる。また、上述の実施形態を実現するためのコンピュータプログラムは、すでにコンピュータ上で稼働するOSの機能を利用するものであってもよい。さらに、上述の実施形態を実現するためのコンピュータプログラムは、その一部をコンピュータに装着される拡張ボード等のファームウェアで構成してもよいし、拡張ボード等が備えるCPUで実行するようにしてもよい。