以下、本発明の実施の形態について図面を参照しつつ詳細に説明する。
図1は、本発明の実施の形態に係る撮像装置(デジタルカメラ)の構成を示すブロック図である。図1において、デジタルカメラ100は、電源110、カード入出力部119及びカードスロット120を備えている。電源110は、デジタルカメラ100内の各回路に電源を供給する。カードスロット120は、着脱可能な記録媒体としてのメモリカード121を差し込む場所であり、メモリカード121はカードスロット120に差し込まれた状態で、カード入出力部119と電気的に接続する。なお、記録媒体として、メモリカードの他、ハードディスク、光ディスク、光磁気ディスク、磁気ディスク、その他の固体メモリを使用してもよい。
また、デジタルカメラ100は、デジタルカメラ100全体を制御するCPU109、フォーカシングレンズ101、ズーミングレンズ102及び絞り103を備えている。フォーカシングレンズ101は光軸方向の進退により焦点調節を行う。ズーミングレンズ102は光軸方向の進退により焦点距離の変更を行う。また、絞り103は撮像素子への光量を調節する。フォーカシングレンズ101、ズーミングレンズ102及び絞り103は、撮像光学系を構成し、CPU109によって制御される。
また、デジタルカメラ100は、撮像素子104、前処理回路105、A/Dコンバータ106、像信号処理装置107及びフレームメモリ108を備えている。撮像素子104、前処理回路105、A/Dコンバータ106、像信号処理装置107及びフレームメモリ108は、撮像光学系で形成された被写体の光学像をデジタル画像信号又は画像データに変換する光電変換系を構成する。
撮像素子104は、CCD撮像素子又はCMOS撮像素子等で構成される光電変換手段である。撮像素子104は、光学部材101〜103からなる撮像光学系で形成された被写体像を光電変換し、画像信号を出力する。撮像素子104は、電子シャッター機能を有しており露光時間を調整することができる。なお、撮像素子104は、電子シャッター機能の代わりに機械式のシャッターを有し、露光時間を調整する構成であっても良い。前処理回路105は、CDS(相関二重サンプリング)回路及びAGC(オートゲインコントロール)回路等を含み、撮像素子104の出力画像信号のノイズを除去し、ゲインを制御する。
A/Dコンバータ106は、前処理回路105から出力されるアナログ画像信号をデジタル画像信号に変換する。像信号処理装置107は、デジタル画像信号にシェーディング補正等のカメラで周知の画像信号処理を施す。像信号処理装置107は、いわば、撮像素子104の特性に起因する画像濃度の非線形性、及び光源に起因する画像色の偏りを補正する。フレームメモリ108は、撮像素子104〜像信号処理装置107により生成される画像信号を一時記憶するバッファメモリとして機能する。フレームメモリ108に格納されている画像データは、補正処理等が施されているが、撮像素子104の各画素に蓄積された電化エネルギーをそのままデジタルデータ化したものと考えることができる。
CPU109は、撮像素子104の画像信号読み出しを制御するクロック信号を送出し、撮像素子104〜フレームメモリ108の動作タイミングを制御する。
CPU109は、電源110、不揮発性メモリ111、現像処理部112、RAMメモリ113、表示制御装置114、メインスイッチ116、第1レリーズスイッチ(SW1)117、第2レリーズスイッチ118と接続されている。また、CPU109は、操作ボタン140〜142、カード入出力部119、顔検知部200、人体検知部201、移動量算出部202、オートフォーカス評価値算出部203と接続されている。
不揮発性メモリ111は、EEPROM等で構成されており、電源110がオフにされても、記録されたデータを失わない。不揮発性メモリ111には、電源110がオンされた時にカメラに設定する初期カメラ設定値が記録されている。
現像処理部112は、CPU109が読み出したフレームメモリ108上のRAWデータに対し、現像パラメータ設定に基づいて画像処理を実行する。画像処理が施されたそれぞれの画像データは、RAMメモリ113に格納される。現像パラメータとは、デジタル画像データの画質に関するパラメータのことで、デジタル画像データのホワイトバランス、色補間、色補正、γ変換、エッジ強調、解像度に関するパラメータはすべて現像パラメータに相当する。
RAMメモリ113は、現像処理結果の画像データの他、CPU109が各種処理を行なう際のデータを一時的に記憶する。表示制御装置114は、液晶表示素子からなるTFT115の駆動及び制御を行い、RAMメモリ113に表示用の画像フォーマットで配置された画像データを表示装置へ出力する。ここで表示用の画像フォーマットを配置するRAMメモリ113をVRAMと呼ぶ。
顔検知部200は、画像データから特定の画像として人間の顔を検知し、顔の輪郭、顔の部位としての目、鼻、口の特徴を検出し、顔の位置、サイズ、角度(画像奥行き方向と画像平面方向)、信頼度を出力する。複数の顔があれば、複数の顔の位置、サイズ、信頼度を出力する。顔位置は入力する画像データの、例えば、左上を原点の座標とする。ここで、顔検知部200には、出力される顔のサイズを制限する設定を行うことができる。設定したサイズよりも小さな顔は出力されない。
図2は、顔認識における顔の角度を規定した図である。図2(a)に示すように、画像奥行き方向の角度は、左90度300、左45度301、正面302、右45度303、右90度304として検出される。顔検知部200には、出力される画像奥行き方向の角度を制限する設定を行うことができる。例えば、正面302のみを設定すると、正面302以外の結果は出力されない。また、画像平面方向の角度は、図2(b)に示すように、0度310、90度311、180度312、270度313として検出される。顔検知部200には、出力される平面方向の角度を制限する設定を行うことができる。例えば、0度310のみを設定すると、0度310以外の結果は出力されない。
顔検知部200が出力する信頼度は、例えば0〜255で出力され、信頼度が高いほど顔である可能性が高い。ここで、顔検知部200には、出力される信頼度を制限する設定を行うことができる。例えば、信頼度を128で設定すると128よりも低い信頼度の顔は出力されない。
人体検知部201は、画像データから人型(頭から肩までのシルエット)を認識し、顔の位置、サイズ、信頼度を出力する。人体検知部201が出力する信頼度は、例えば0〜255で出力され、信頼度が高いほど人体である可能性が高い。ここで、顔検知部200と同様、人体検知部201も顔のサイズ、信頼度について出力結果を制限する設定を行うことができる。
移動量算出部202は、第1の画像データと第2の画像データと第1の画像データに対する指定領域(座標とサイズで指定する)を入力すると、第1の画像データの指定領域が、第2の画像データのどの領域へ移動したかの移動量を算出する。移動量算出部202を適用することによって、主被写体と判断した領域を追尾することができる。
AF評価値算出部203は、画像データと評価値を取得する位置を指定することによって、オートフォーカスの評価値を算出する。CPU109は、AFの評価値に基づきフォーカシングレンズ101を駆動させることでオートフォーカス動作を行うことができる。オートフォーカス動作については、コントラスト方式、位相差方式などがあるがここでは、方式を特に限定しない。
ユーザがメインスイッチ116をオンにすると、CPU109は、所定のプログラムを実行する。また、ユーザがメインスイッチ116をオフにすると、CPU109は、所定のプログラムを実行し、カメラをスタンバイモードにする。第1レリーズスイッチ(SW1)117は、レリーズボタンの第1ストローク(半押し状態)でオンになり、第2レリーズスイッチ118は、レリーズボタンの第2ストローク(全押し状態)でオンとなる。オートフォーカス動作は第1レリーズスイッチ(SW1)117をオンにすることで動作を開始する。また、撮像動作は第2レリーズスイッチ118をオンすることで動作を開始する。
CPU109は、また、左選択ボタン140、右選択ボタン141、設定ボタン142の押下を検知すると、デジタルカメラ100の動作状態に応じて制御を行なう。メニューからライブビューを選択すると、定期的、例えば1秒に30回、撮像素子104からRAWデータを取り込み、現像処理してVRAMへ配信することで、リアルタイムに撮像素子104から取り込んだ画像を表示する。また、メニューからライブビュー中の被写体表示モードを切り替えることができる。被写体表示モードには、事前表示モードと事後表示モードがあり、ユーザが、モードを切り替えることでライブビュー中のオートフォーカス動作位置の表示タイミングや位置を決定する方法を切り替えることができる。事前表示モードは、ユーザのオートフォーカス開始指示前(第1レリーズスイッチ117オン前)にオートフォーカス対象領域をTFT115に表示するモードである。また、事後表示モードは、オートフォーカス開始指示後にオートフォーカスを行う位置をカメラが決定するモードである。
事前表示モードでは、例えば、顔検知部200、人体検知部201、移動量算出部202を使って検知した結果を統合して得られた顔の位置をオートフォーカス位置として表示する。複数の顔を検知した場合には、その中から1つをカメラが選択し表示する。ユーザは、主となる被写体を現在表示されているオートフォーカス位置にある顔とは別の顔に変更したい場合は、左選択ボタン140もしくは右選択ボタン141を押すことで別の顔に切り替えることができる。
以下、図1の撮像装置(デジタルカメラ)を適用したライブビュー中のオートフォーカス処理について説明する。
図3は、図1の撮像装置(デジタルカメラ)を適用したオートフォーカス処理の手順を示すフローチャートである。このオートフォーカス処理は、デジタルカメラ100のCPU109が、図示省略したROMに記憶されたプログラムに従って実行する。本処理は、ライブビューが開始されると同時に実行されるライブビュー中のオートフォーカス処理である。
図3において、オートフォーカス処理が開始されると、CPU109は、被写体表示モードが事前表示モードであるか否かを判定する(ステップS401)。ステップS401の判定の結果、事前表示モードが設定されている(ステップS401で「YES」)場合、CPU109は、後述する図4A及び図4Bの顔位置決定処理で決定された顔位置があるか否かを判定する(ステップS402)。顔位置としては、顔位置決定処理で決定された顔位置があればRAMメモリ113に記憶されているので、これが使われる。ステップS402の判定の結果、決定された顔位置がある(ステップS402で「YES」)場合、CPU109は、顔位置をTFT115へ表示させるためVRAM113への書き込み処理を行い、顔位置に顔枠を表示する(ステップS403)。このとき、顔位置は、例えば白枠で表示される。
顔位置を白枠表示した後、CPU109は、第1レリーズスイッチ(SW1)117がオンであるか否かを判定する(ステップS404)。ステップS404の判定の結果、第1レリーズスイッチ(SW1)117がオン(ステップS404で「YES」)の場合、CPU109は、白枠表示した顔位置をオートフォーカスの評価値を取得する位置として設定する(ステップS405)。
オートフォーカスの評価値を取得する位置を設定した後、CPU109は、オートフォーカスの評価値に基づいてオートフォーカス動作を実行する(ステップS406)。次いで、CPU109は、オートフォーカス動作の結果が合焦と判断される場合は、評価値を取得したフォーカス位置を、例えば緑枠で表示する(ステップS407)。このとき、合焦と判断できない場合は何もしないが、例えば、同じフォーカス位置で10回以上合焦と判断できない場合は、そのフォーカス位置を赤枠で表示する。
フォーカス位置を緑枠で表示した後、CPU109は、第1レリーズスイッチ117(SW1)がオフであるか否かを判定し、オフでなければオフになるまで待機する(ステップS408)。一方、ステップS408の判定の結果、第1レリーズスイッチ(SW1)117がオフ(ステップS408で「YES」)であれば、CPU109は、処理をステップS401へ戻す。
一方、ステップS402の判定の結果、それ以前に決定された顔位置がない(ステップS402で「NO」)場合、CPU109は、第1レリーズスイッチ(SW1)117がオンであるか否か判定する(ステップS409)。ステップS409の判定の結果、第1レリーズスイッチ117(SW1)がオンである(ステップS409で「YES」)場合、CPU109は、処理をステップS410に進める。すなわち、CPU109は、測距操作を行い、最も近い距離にある物体(被写体)の中心をオートフォーカスの評価値を取得する位置として設定し(ステップS410)、その後、処理をステップS406へ進める。また、ステップS409の判定の結果、第1レリーズスイッチ(SW1)117がオフである(ステップS409で「NO」)場合、CPU109は、処理をステップS401へ戻す。
また、ステップS404の判定の結果、第1レリーズスイッチ(SW1)117がオフ(ステップS404で「NO」)の場合、ステップS409の判定の結果が「NO」の場合と同様に、CPU109は、処理をステップS401へ戻す。
一方、ステップS401の判定の結果、事前表示モードでない(ステップS401で「NO」)場合、すなわち、被写体表示モードとして事後表示モードが設定されている場合、CPU109は、処理をステップS411へ進める。すなわち、CPU109は、第1レリーズスイッチ(SW1)117がオンであるか否かを判定する(ステップS411)。ステップS411の判定の結果、第1レリーズスイッチ(SW1)117がオンの(ステップS411で「YES」)場合、CPU109は、以前に顔位置決定処理で決定された顔位置があるか否かを判定する(ステップS412)。
そして、ステップS412の判定の結果、決定された顔位置がある(ステップS412で「YES」)場合、CPU109は、処理をステップS413に進める。すなわち、CPU109は、顔位置決定処理で決定された顔位置をオートフォーカスの評価値を取得する位置として設定し、その後、処理をステップS406へ進める。
一方、ステップS412の判定の結果、以前に決定された顔位置がない(ステップS412で「NO」)場合、CPU109は、処理をステップS414に進める。すなわち、CPU109は、測距操作を行い、最も近い距離にある物体(被写体)の中心をオートフォーカスの評価値を取得する位置として設定し、その後、処理をテップS406へ進める。なお、ステップS411の判定の結果、第1レリーズスイッチ117(SW1)がオンでない場合、CPU109は、処理をステップS401に戻す。
図3の処理によれば、以前に決定された顔位置がある場合、事前表示モードでは、顔位置に顔枠を表示した後、事後表示モードではそのまま、SW1がオンか否かを判定し、オンなら、以前に決定された顔位置をオートフォーカスの評価値取得位置として決定する。一方、以前に決定された顔位置がない場合は、いずれのモードでも、今回の顔位置検出処理において、最も近い距離にある被写体の中心をオートフォーカスの評価値取得位置として設定する。これによって、事前の操作及びライブビュー画面を参照しつつ、ユーザが主被写体としたい被写体位置をオートフォーカスの評価値を取得する位置として設定し易くなり、利便性が向上する。
次に、図3のオートフォーカス処理におけるステップS402の判定の対象となる顔位置を決定するための顔位置決定処理について説明する。
図4A及び図4Bは、顔位置決定処理の手順を示すフローチャートである。この顔位置決定処理は、デジタルカメラ100のCPU109が、図示省略したROMに記憶されたプログラムに従って実行する。
本顔位置決定処理は、上述のオートフォーカス処理と同様、ライブビューの開始に伴って開始され、画像が取得される毎に実行される。顔検知と人体検知については、処理時に取得された画像を用いて処理が行われ、移動量算出処理については、処理時に取得された画像とそれ以前の前回の処理時における画像を用いて処理が行われる。
図4A及び図4Bにおいて、顔位置決定処理が開始されると、CPU109は、先ず、被写体表示モードが事前表示モードであるか否かを判定する(ステップS101)。ステップS101の判定の結果、事前表示モードが設定されている(ステップS101で「YES」)場合、CPU109は、顔検知部200と人体検知部201に、最小検知サイズとして事前表示モード用の設定値を設定する(ステップS102)。最小検知サイズの設定値は画像表示モードごとに特有の設定値である。すなわち、事前表示モード用の最小検知サイズの設定値は、後述する事後表示モード用の最小検知サイズの設定値と同様、予め、デジタルカメラ100の図示省略したROMに記憶されており、その設定値が使用される。なお、以下の処理で設定される事前表示モード用の奥行き方向の顔角度の設定値、事前表示モード用の平面方向の顔角度の設定値、及び事前表示モード用の顔の信頼度の設定値も事前表示モードに特有の設定値であり、図示省略したROMに予め記憶されている。
顔検知部200と人体検知部201に対し、最小検知サイズを設定した後、CPU109は、顔検知部200に、奥行き方向の顔角度として事前表示モード用の設定値を設定する(ステップS103)。
奥行き方向の顔角度を設定した後、CPU109は、顔検知部200に、平面方向の顔角度として事前表示モード用の設定値を設定する(ステップS104)。次いで、CPU109は、顔検知部200と人体検知部201に、信頼度として事前表示モード用の顔の信頼度の設定値を設定する(ステップS105)。
次いで、CPU109は、顔検知部200に今回の画像を設定して顔の検知を開始し(ステップS106)、また、人体検知部201に今回の画像を設定して人体検知を開始する(ステップS107)。人体検知を開始した後、CPU109は、前回決定した顔位置があるか否かを判定する(ステップS108)。ステップS108の判定の結果、前回決定した顔位置がある(ステップS108で「YES」)場合、CPU109は、移動量算出部202に、前回決定した顔位置を、移動量を算出する基準位置として設定する(ステップS109)。次いで、CPU109は、前回の画像と今回の画像を設定して前回の顔位置に対する今回の顔位置の移動量の算出を開始する(ステップS110)。
次いで、CPU109は、移動量の算出が完了したか否かを判定し、算出が完了するまで待機する(ステップS111)。そして、移動量の算出が完了した(ステップS111で「YES」)後、CPU109は、顔検知及び人体検知が完了したか否かを判定し、完了するまで待機する(ステップS112)。ステップS112の判定の結果、顔検知及び人体検知が完了した(ステップS112で「YES」)場合、CPU109は、ユーザから顔変更の指示があったか否かを判定する(ステップS113)。そして、ステップS113の判定の結果、ユーザから顔変更の指示があった(ステップS113で「YES」)場合、CPU109は、処理をステップS114に進める。すなわち、CPU109は、ステップS110〜S111で取得した移動量算出結果と前回の顔位置検知結果を無効にし、顔検知結果と人体検知結果から前回の顔位置に相当する結果を削除する(ステップS114)。
ここで、前回の顔位置に相当する結果とは、検出画像の横サイズの6分の1以内で最も前回の顔位置に近い顔の検出結果であり、前回決定された顔位置を参照する今回の顔位置決定処理において、顔位置として決定されるべき顔の検出結果である。即ち、前回の顔の検出画像サイズが、例えば縦480画素×横640画素の時、該検出画像の中心から横サイズ640画素の1/6つまり106画素以内の距離にある今回検出された顔位置の中心の中で前回の顔位置の中心に最も近い中心に対応する顔に相当する。なお、縦方向についても同様に、480画素の1/6つまり80画素以内の距離にある今回検出された顔位置の中心の中で、前回の顔位置の中心に最も近い中心に対応する顔が今回の顔位置に相当する結果になる。従って、縦横どちらかの条件を満たせばよい。
次いで、CPU109は、顔位置を決定する(ステップS115)。すなわち、CPU109は、前回の顔位置結果があれば、検出画像サイズの6分の1以内で前回の顔位置結果に最も近い位置の顔もしくは人体検知の結果があれば、その顔位置もしくはその人体検知位置を今回の顔位置として決定する。一方、検出画像サイズの6分の1以内で前回の顔位置結果に最も近い位置の顔もしくは人体検知の結果がなければ、移動量算出の結果を顔位置検知結果とする。また、CPU109は、顔検知部200、人体検知部201が共に顔又は人体を検知できず、さらに、移動量算出部202も移動量が算出できなかった場合、顔位置検知結果として適合する顔なしと決定する。また、CPU109は、前回の顔位置検知結果がなければ、今回検知した顔位置のうち、最も信頼度の高い顔検知結果を顔位置に決定し、今回検知した顔検知結果がない場合は顔位置検知結果なしとする。そして、CPU109は、検知結果をRAMメモリ113に記憶させた後、処理をステップS101に戻す。
なお、ステップS108の判定の結果、前回決定した顔位置がない(ステップS108で「NO」)場合、CPU109は、処理をステップS112へ進める。また、ステップS113の判定の結果、ユーザからの顔切換えの指示がなかった場合(ステップS113で「NO」)、CPU109は、処理をステップS115へ進める。
一方、ステップS101の判定の結果、被写体表示モードの設定が事前表示モードでない(ステップS101で「NO」)場合、すなわち、事後表示モードである場合、CPU109は、処理をステップS116へ進める。すなわち、CPU109は、顔検知部200に、最小検知サイズとして事後表示モード用の設定値を設定する(ステップS116)。顔検知部200に設定する事後表示モード用の最小検知サイズの設定値は、予め、デジタルカメラ100の図示省略したROMに記憶されている事後表示モードに特有の設定値であり、その設定値が使用される。このとき、事後表示モード用の最小検知サイズは、事前表示モード用の最小検知サイズよりも大きく設定されている。なお、以下の処理で設定される事後表示モード用の奥行き方向の顔角度の設定値、事後表示モード用の平面方向の顔角度の設定値、及び事後表示モード用の顔の信頼度の設定値も事後表示モードに特有の設定値であり、図示省略したROMに予め記憶されている。
顔検知部200に対し、最小検知サイズを設定した後、CPU109は、顔検知部200に、奥行き方向の顔角度として事後表示モード用の設定値を設定する(ステップS117)。このとき、事後表示モード用の奥行き方向の顔角度範囲は、事前表示モード用の奥行き方向の顔角度範囲よりも狭く規定されている。
奥行き方向の顔角度を設定した後、CPU109は、顔検知部200に、平面方向の顔角度として事後表示モード用の設定値を設定する(ステップS118)。このとき、事後表示モード用の平面方向の顔角度範囲は、事前表示モード用の平面方向の顔角度範囲よりも狭く規定されている。次いで、CPU109は、顔検知部200に、信頼度として事後表示モード用の顔の信頼度の設定値を設定する(ステップS119)。このとき、事後表示モード用の信頼度の設定値は、事前表示モード用の信頼度の設定値よりも高く規定されている。
次いで、CPU109は、顔検知部200に今回の画像を設定して顔の検知を開始する(ステップS120)。顔検知を開始した後、CPU109は、顔検知が完了したか否かを判定し、完了するまで待機する(ステップS121)。ステップS121の判定の結果、顔検知が完了した(ステップS121で「YES」)場合、CPU109は、今回検知した顔位置のうち、最も信頼度の高い顔検知結果を顔位置に決定し、顔検知結果がない場合は顔位置結果なしとする(ステップS122)。そして、CPU109は、検知結果をRAMメモリ113に記憶させた後、処理をステップS101に戻す。
本顔位置決定処理において、顔位置を決定するための判定基準の設定値は、予め、被写体表示モードに従ってデジタルカメラ100の図示省略したROMに記憶されており、この設定値が使用される。このとき、顔検知と人体検知における事後表示モードの最小検知サイズは、事前表示モード用の最小検知サイズよりも大きくなるように規定されている。また、事後表示モード用の顔検知の奥行き方向及び画像面方向の顔角度範囲が、それぞれ事前表示モード用の顔角度範囲よりも狭くなるように規定されている。具体的には、事前表示モードの奥行き方向の顔角度が、左90度300、左45度301、正面302、右45度303、右90度304のすべてである場合、事後表示モードでは、例えば、左45度301、正面302、右45度303のみが規定されている。一方、事前表示モードの平面方向の顔角度が、0度310、90度311、180度312、270度313のすべてである場合、事後表示モードでは、例えば0度310のみが規定されている。また、事後表示モード用の信頼度を、事前表示モード用の信頼度と比べて高く規定し、事後表示モードでは事前表示モードに比べてより信頼度の高い結果のみが検出されるように設定されている。
図4A及び図4Bの処理によれば、事後表示モードである場合の顔位置を決定するための判定基準設定を、事前表示モードにおける顔位置を決定するための判定基準設定よりも厳しくする。これによって、ユーザによるフォーカス対象の変更が困難な事後表示モードにおいて、ユーザが意図する被写体である顔がフォーカス対象として設定され易くなる。
一方、ユーザによるフォーカス対象の変更が可能な事前表示モードにおいては、比較的顔である可能性が低い場合であっても顔位置をフォーカス位置として利用する。この場合、ユーザが意図しない顔位置がフォーカス対象に決定される可能性はあるが、かかる場合、ユーザは顔位置の設定を変更することができる。これによって、ユーザ所望の被写体を、フォーカス対象の被写体として設定し易くなり、しかもライブビュー中のオートフォーカス処理を迅速に行うことができるようになる。
本実施の形態において、被写体表示モードは、図示省略した被写体表示モード設定部を用いて予めユーザによって、デジタルカメラ100に設定される。
また、本実施の形態において、移動量算出部202の算出結果は、事前表示モードにおいては顔を検知する際の判定基準として採用されるが、事後表示モードにおいては顔を検知する際の判定基準として採用されていない。事後表示モードにおいては、事前表示モードに比べて判定基準がより厳しく設定されるので、前回決定された顔位置のデータを参照しないことによるものである。
また、本実施形態では、顔検知部200、人体検知部201、および、移動量算出部202の全てを用いて顔を検知する例をあげて説明を行ったが、これに限られるものではない。事後表示モードにおいて、事前表示モードに比べて判定基準を厳しく設定するのであれば、顔検知部200、人体検知部201、および、移動量算出部202の一部のみを用いるようにしてもよい。また、オートフォーカスを行う対象として顔を検知する例をあげて行ったが、事前表示モードに比べて判定基準を厳しく設定するのであれば、顔以外の被写体を検知する構成であってもよい。
以下、第2の実施の形態について説明する。
本実施の形態では、オートフォーカス処理は、第1の実施の形態における図3の処理と同様に実行され、第1の実施の形態とは顔位置決定処理のみが異なる。
図5A及び図5Bは、第2の実施の形態における顔位置決定処理の手順を示すフローチャートである。この顔位置決定処理は、デジタルカメラ100のCPU109が、図示省略したROMに記憶されたプログラムに従って実行する。
本実施の形態において、オートフォーカス処理については、上記実施の形態と同様であるので、説明を省略する。本顔位置決定処理は、上記実施の形態と同様、ライブビューが開始されると開始され、ライブビュー中に画像が取得される毎に実行される。
図5A及び図5Bにおいて、顔位置決定処理が開始されると、CPU109は、先ず、顔検知部200と人体検知部201に対し、最小検知サイズを設定する(ステップS501)。このとき、最小検知サイズとして、より小さい顔サイズまで検知対象とする事前表示モード用の設定値が設定される。最小検知サイズの設定値は、被写体表示モードによって異なる表示モード特有の設定値であり、事前表示モードの最小検知サイズの設定値は、予め、デジタルカメラ100のROMに記憶されているので、この設定値が適用される。また、以下の処理で設定される事前表示モード用の奥行き方向の顔角度の設定値、事前表示モード用の平面方向の顔角度の設定値、及び事前表示モード用の顔の信頼度の設定値も事前表示モードに特有の設定値であり、図示省略したROMに予め記憶されている。なお、事後表示モードにおける各設定値も予め、図示省略したROMに記憶されている。
顔検知部200と人体検知部201に対し、最小検知サイズを設定した後、CPU109は、顔検知部200に対し、奥行き方向の顔角度を設定する(ステップS502)。このとき、奥行き方向の顔角度としては、事後表示モードと比較して検出角度範囲がより広い事前表示モード用の角度範囲が設定される。
奥行き方向の顔角度を設定した後、CPU109は、顔検知部200に対し、平面方向の顔角度を設定する(ステップS503)。このとき、平面方向の顔角度としては、事後表示モードと比較して検出角度範囲がより広い事前表示モード用の角度が設定される。次いで、CPU109は、顔検知部200に対して信頼度の設定を行う(ステップS504)。このとき、信頼度は、事後表示モードと比較してより信頼度が低い事前表示モード用の信頼度の設定値が設定される。
信頼度を設定した後、CPU109は、顔検知部200に今回の画像を設定し、顔の検知を開始する(ステップS505)。次いで、CPU109は、人体検知部201に今回の画像を設定し、人体検知を開始する(ステップS506)。人体検知を開始した後、CPU109は、前回決定した顔位置があるか否かを判定する(ステップS507)。ステップS507の判定の結果、前回決定した顔位置がある(ステップS507で「YES」)場合、CPU109は、移動量算出部202に対し、前回決定した顔位置が移動量を算出する基準位置となるように設定する(ステップS508)。次いで、CPU109は、前回の画像と今回の画像を設定して移動量の算出を開始する(ステップS509)。
次いで、CPU109は、移動量の算出が完了したか否かを判定し、算出が完了するまで待機する(ステップS510)。そして、移動量の算出が完了した(ステップS510で「YES」)後、CPU109は、顔検知と人体検知が完了したか否かを判定し、完了するまで待機する(ステップS511)。ステップS511の判定の結果、顔検知と人体検知が完了した(ステップS511で「YES」)後、CPU109は、ユーザから顔変更の指示があったか否かを判定する(ステップS512)。そして、ステップS512の判定の結果、ユーザから顔変更の指示があった(ステップS512で「YES」)場合、CPU109は、処理をステップS513に進める。すなわち、CPU109は、ステップ509〜S510で取得した移動量算出結果と前回の顔位置検知結果を無効にし、顔検出結果と人体検出結果から前回の顔位置に相当する結果を除外する(ステップS513)。ここで、前回の顔位置に相当する結果とは、検出画像の横サイズの6分の1以内の最も前回の顔位置に近い顔とする。
次いで、CPU109は、被写体表示モードとして事前表示モードが設定されているか否か判定する(ステップS514)。ステップS514の判定の結果、事前表示モードが設定されている(ステップS514で「YES」)場合、CPU109は、顔位置を決定する(ステップS515)。すなわち、CPU109は、前回の顔位置結果があれば、検出画像サイズの6分の1以内で前回の顔位置結果に最も近い位置の顔もしくは人体検知の結果があれば、その顔位置又は人体検知位置を今回の顔位置として決定する。一方、検出画像サイズの6分の1以内で前回の顔位置結果に最も近い位置の顔もしくは人体検知の結果がなければ、移動量算出の結果を顔位置検知結果とする。また、CPU109は、顔検知部200、人体検知部201が共に検知できず、さらに、移動量算出部202も移動量が算出できなかった場合、顔位置検知結果として適合する顔なしと決定する。また、CPU109は、前回の顔位置検知結果がなければ、今回検知した顔位置のうち最も信頼度の高い顔検知結果を顔位置として決定し、今回検知した顔検知結果がない場合は顔位置検知結果なしとする。そして、CPU109は、検知結果を、RAMメモリ113に記憶させた後、処理をステップS101に戻す。
なお、ステップS507の判定の結果、前回決定した顔位置がない(ステップS507で「NO」)場合、CPU109は、処理をステップS511へ進める。また、ステップS512の判定の結果、ユーザからの顔切換えの指示がなかった場合(ステップS512で「NO」)、CPU109は、処理をステップS514へ進める。
一方、ステップS514の判定の結果、被写体表示モードが事前表示モードでなく、事後表示モードである(ステップS514で「NO」)場合、CPU109は、処理をステップS516へ進める。すなわち、CPU109は、顔検知部200の検知結果から事後表示モードでは顔として認められないサイズと、顔として認められない信頼度の顔を検知結果から削除する(ステップS516)。ここで、本処理においては、上述の第1の実施の形態と同様、事後表示モードよりも事前表示モードの顔検知の方が小さい顔を検知対象としている。また、信頼度についても、事後表示モードより事前表示モードの方が信頼度の低い顔までも検知対象としている。従って、これらの検知結果を判定対象から除外してより精度の高い検知を行う。
次いで、CPU109は、最も信頼度の高い顔検知結果を顔位置として決定し、顔検知結果がない場合は顔位置なしとする(ステップS517)。そして、CPU109は、決定した顔位置をRAMメモリ113に記憶させた後、処理をステップS501に戻す。
図5A及び図5Bの処理によれば、顔検知部200、人体検知部201、移動量算出部202へ設定する判定基準として、より検出範囲の広い事前表示モード用の判定基準を共通で設定する。そして、事後表示モードの場合のみ、検出後に検出範囲外の結果を除外する処理を追加している。これによって、被写体表示モードの相違によって判定基準をパラメータ毎に変更させる制御が不要となる。従って、上記第1の実施の形態よりも設計の複雑度、操作の煩雑度を低減することができ、しかも、同等の効果を得ることができる。
以上、本発明の好ましい実施の形態について説明したが、本発明はこれらの実施の形態に限定されず、その趣旨の範囲内で種々の変形及び変更が可能である。