以下、この発明の実施の形態を図面を参照しながら説明する。
[基本的構成]
図1を参照して、この実施例の電子カメラは、基本的に次のように構成される。撮像手段1は、シーンを表す画像を繰り返し出力する。第1探索手段2は、特定物体像を撮像手段1から出力された画像から探索する処理を第1モードに対応して実行する。第1検出手段3は、第1探索手段2によって探知された特定物体像のサイズを検出する。第1調整手段4は、第1探索手段2によって探知された特定物体像に注目して撮像条件を調整する。第2探索手段5は、第1探索手段2によって探知された特定物体像に相当する部分画像を撮像手段1から出力された画像から探索する処理を第1モードに代替する第2モードに対応して実行する。第2調整手段6は、第2探索手段5によって探知された部分画像のサイズおよび第1検出手段3によって検出されたサイズの相違と第1調整手段4の調整結果とに基づいて撮像条件を調整する。
一旦探知された画像に基づいて特定物体像が探索される。また、2回の探知時の各々の特定物体像のサイズの相違と最初の探知時の調整結果とに基づいて、撮像条件が調整される。このため、標準的なサイズに基づいた調整よりも撮像条件の調整精度を高めることができる。
[実施例]
図2を参照して、この実施例のディジタルカメラ10は、ドライバ18aおよび18bによってそれぞれ駆動されるフォーカスレンズ12および絞りユニット14を含む。これらの部材を経たシーンの光学像は、イメージセンサ16の撮像面に照射され、光電変換を施される。これによって、シーンを表す電荷が生成される。
電源が投入されると、CPU26は、キー入力装置28に設けられたモード変更ボタン28mdの状態(つまり現時点の動作モード)をメインタスクの下で判別する。判別の結果、人物登録モードまたは撮像モードに対応して人物登録タスクまたは撮像タスクがそれぞれ起動される。
人物登録モードが選択されると、CPU26は、初期設定位置であるパンフォーカス位置にフォーカスレンズ12を配置する。CPU26は次に、動画取り込み処理を実行するべく、人物登録タスクの下で露光動作および電荷読み出し動作の繰り返しをドライバ18cに命令する。ドライバ18cは、図示しないSG(Signal Generator)から周期的に発生する垂直同期信号Vsyncに応答して、撮像面を露光し、かつ撮像面で生成された電荷をラスタ走査態様で読み出す。イメージセンサ16からは、読み出された電荷に基づく生画像データが周期的に出力される。
前処理回路20は、イメージセンサ16から出力された生画像データにディジタルクランプ,画素欠陥補正,ゲイン制御などの処理を施す。これらの処理を施された生画像データは、メモリ制御回路30を通してSDRAM32の生画像エリア32a(図3参照)に書き込まれる。
後処理回路34は、生画像エリア32aに格納された生画像データをメモリ制御回路30を通して読み出し、読み出された生画像データに色分離処理,白バランス調整処理およびYUV変換処理を施す。後処理回路34はさらに、YUV形式に従う画像データに対して表示用のズーム処理と探索用のズーム処理とを並列的に実行する。この結果、YUV形式に従う表示画像データおよび探索画像データが個別に作成される。表示画像データは、メモリ制御回路30によってSDRAM32の表示画像エリア32b(図3参照)に書き込まれる。探索画像データは、メモリ制御回路30によってSDRAM32の探索画像エリア32c(図3参照)に書き込まれる。
LCDドライバ36は、表示画像エリア32bに格納された表示画像データをメモリ制御回路30を通して繰り返し読み出し、読み出された画像データに基づいてLCDモニタ38を駆動する。この結果、シーンを表すリアルタイム動画像(スルー画像)がLCDモニタ38に表示される。
図4を参照して、撮像面の中央には評価エリアEVAが割り当てられる。評価エリアEVAは水平方向および垂直方向の各々において16分割され、256個の分割エリアが評価エリアEVAを形成する。また、図2に示す前処理回路20は、上述した処理に加えて、生画像データを簡易的にRGBデータに変換する簡易RGB変換処理を実行する。
AE評価回路22は、前処理回路20によって生成されたRGBデータのうち評価エリアEVAに属するRGBデータを、垂直同期信号Vsyncが発生する毎に積分する。これによって、256個の積分値つまり256個のAE評価値が、垂直同期信号Vsyncに応答してAE評価回路22から出力される。
AF評価回路24は、前処理回路20によって生成されたRGBデータのうち評価エリアEVAに属するRGBデータの高周波成分を、垂直同期信号Vsyncが発生する毎に積分する。これによって、256個の積分値つまり256個のAF評価値が、垂直同期信号Vsyncに応答してAF評価回路24から出力される。
シャッタボタン28shが非操作状態のとき、CPU26は、AE評価回路22からの出力に基づく簡易AE処理を人物登録タスクの下で実行し、適正EV値を算出する。算出された適正EV値を定義する絞り量および露光時間はドライバ18bおよび18cにそれぞれ設定され、この結果、スルー画像の明るさが適度に調整される。
撮像タスクと並列して実行される登録用顔検出タスクの起動時に、CPU26は、フラグFLG_rfを“0”に初期設定する。
CPU26は次に、探索画像エリア32cに格納された探索画像データから人物の顔画像を探索するべく、垂直同期信号Vsyncが発生する毎に登録用顔検出処理を登録用顔検出タスクの下で実行する。このような登録用顔検出タスクのために、図5に示す複数の顔検出枠FD,FD,FD,…、図6に示す標準顔辞書DCsf、図7に示す標準人体辞書DCsb、図8に示す登録用顔検出レジスタRGSTrdt、図9に示す登録対象レジスタRGSTrg、および図10に示す登録顔辞書DCrgが準備される。標準顔辞書DCsfには人物の顔の標準的な特徴量が収められ、標準人体辞書DCsbには人体の標準的な特徴量が収められる。
なお、標準人体辞書DCsb,登録顔辞書DCrg,および複数の顔検出枠FD,FD,FD,…は、後述する撮像用顔検出タスクにおいても用いられる。また、標準顔辞書DCsf,標準人体辞書DCsb,および登録顔辞書DCrgはフラッシュメモリ44に保存される。
登録用顔検出処理ではまず、評価エリアEVAの全域が探索エリアとして設定される。また、顔検出枠FDのサイズの可変範囲を定義するべく、最大サイズSZmaxが“200”に設定され、最小サイズSZminが“20”に設定される。
顔検出枠FDは、探索エリアの開始位置(左上位置)から終了位置(右下位置)に向かって、ラスタ走査態様で既定量ずつ移動される(図11参照)。また、顔検出枠FDのサイズは、顔検出枠FDが終了位置に到達する毎に“SZmax”から“SZmin”まで“5”ずつ縮小される。
CPU26は、顔検出枠FDに属する画像データをメモリ制御回路30を通して探索画像エリア32cから読み出し、読み出された画像データの特徴量を算出する。算出された特徴量は、標準顔辞書DCsfの特徴量と照合される。照合度が基準値TH1を上回ると、顔画像が検出されたものとみなされ、現時点の顔検出枠FDの位置およびサイズが、顔情報として登録用顔検出レジスタRGSTrdtに格納される。
登録用顔検出処理の完了後に登録用顔検出レジスタRGSTrdtに顔情報が格納されていたとき、CPU26は、登録用顔検出レジスタRGSTrdtに格納された顔情報の中から登録すべき顔情報を決定する。登録用顔検出レジスタRGSTrdtに1つの顔情報が格納されている場合、CPU26は、格納された顔情報を登録対象顔情報とする。登録用顔検出レジスタRGSTrdtに複数の顔情報が格納されている場合、CPU26は、位置が撮像面中央に最も近い顔情報を登録対象顔情報とする。登録対象顔情報とされた顔情報の位置およびサイズは、登録対象レジスタRGSTrgに格納される。
また、CPU26は、人物の顔を発見したことを表明するべくフラグFLG_rfを“1”に設定する。
なお、登録用顔検出処理の完了後に登録用顔検出レジスタRGSTrdtに顔情報の登録がなかった場合、すなわち人物の顔が発見されなかった場合は、CPU26は、人物の顔が未発見であることを表明するべくフラグFLG_rfを“0”に設定する。
シャッタボタン28shが半押しされると、CPU26は人物登録タスクの下で、AE評価回路22から出力された256個のAE評価値に基づき、厳格AE処理を実行する。厳格AE処理によって算出された最適EV値を定義する絞り量および露光時間は、ドライバ18bおよび18cにそれぞれ設定される。この結果、スルー画像の明るさが厳格に調整される。
フラグFLG_rfが“1”を示すとき、人物登録タスクの下でCPU26は、登録対象顔情報が示す領域に注目した厳格AF処理を実行する。CPU26は、AF評価回路24から出力された256個のAF評価値のうち、登録対象レジスタRGSTrgに格納された位置およびサイズに対応するAF評価値を抽出する。CPU26は、抽出された一部のAF評価値に基づくAF処理を実行する。この結果、登録対象顔情報が示す領域に注目した合焦点にフォーカスレンズ12が配置され、スルー画像における登録対象の顔の鮮鋭度が向上する。
またフラグFLG_rfが“1”を示すとき、人物登録タスクの下でCPU26は、登録対象レジスタRGSTrgの内容を参照して、顔枠RFの表示をグラフィックジェネレータ46に要求する。グラフィックジェネレータ46は、顔枠RFを表すグラフィック情報をLCDドライバ38に向けて出力する。顔枠RFは、登録対象レジスタRGSTrgに格納された位置およびサイズに適合する態様でLCDモニタ38に表示される。
したがって、人物HB1の顔が撮像面に捉えられたとき、顔枠RF1は、人物HB1の顔画像を囲うように、図12に示す要領でLCDモニタ38に表示される。
シャッタボタン28shが全押しされると、CPU26は人物登録タスクの下で、登録対象顔情報に基づいて登録顔辞書DCrgに辞書を登録するべく、登録処理を実行する。
登録処理においては、まず、静止画取り込み処理が実行される。シャッタボタン28shが全押しされた時点の1フレームの画像データは、静止画取り込み処理によってSDRAM32の静止画像エリア32dに取り込まれる。また、表示画像エリア32bの更新が停止し、シャッタボタン28shが全押しされた時点の静止画像がLCDモニタ38に表示される。
表示画像データのうち登録対象レジスタRGSTrgに格納された位置およびサイズに対応する画像データは、サムネイル画像として登録顔辞書DCrgに登録され、画像データの特徴量が登録顔辞書DCrgに登録される。
CPU26は次に、登録対象顔情報の単位被写体距離当たりのサイズを表す基準顔サイズSfを算出する。基準顔サイズSfは以下の数1に示す式で求めることができる。
[数1]
Sf=Rf/Rd
Rf:登録対象レジスタRGSTrgに格納されたサイズ
Rd:現時点で設定された被写体距離
このようにして算出された顔サイズSfは、登録顔辞書DCrgに登録される。なお、登録対象顔情報が示す領域に注目した厳格AF処理が実行済みであるので、現時点で設定された被写体距離は、登録対象顔情報が示す人物およびフォーカスレンズ12の距離に相当する。
CPU26はまた、登録対象顔情報が示す領域を含む人体の画像を、標準人体辞書DCsbを用いて探索画像データから検出する。人体画像が検出された場合、CPU26は、検出された人体画像の単位被写体距離当たりのサイズを表す基準人体サイズSbを算出する。基準人体サイズSbは以下の数2に示す式で求めることができる。
[数2]
Sb=Rb/Rd
Rb:人体画像のサイズ
このようにして算出された基準人体サイズSbは、登録顔辞書DCrgに登録される。例えば、人物HB2の顔が撮像面に捉えられたとき、顔枠RF2は、人物HB2の顔画像を囲うように、図13に示す要領でLCDモニタ38に表示される。このとき、人物HB2の全身が撮像面に捉えられているので、人体検出枠BD1によって人物HB2の人体も検出される。この場合、基準顔サイズSfとともに、基準人体サイズSbが登録顔辞書DCrgに登録される。
CPU26は次に、入力画面を表示して登録対象の名前の入力を操作者に促す。入力された名前が登録顔辞書DCrgに登録され、登録処理が完了する。
なお、フラグFLG_rfが“0”を示すときにシャッタボタン28shが全押しされた場合、登録対象の顔が未発見であることを報知するべく、エラーメッセージをLCDモニタ38に表示する。
撮像モードが選択されると、CPU26は、初期設定位置であるパンフォーカス位置にフォーカスレンズ12を配置する。CPU26は次に、動画取り込み処理を実行する。この結果、シーンを表すスルー画像がLCDモニタ38に表示される。
シャッタボタン28shが非操作状態のとき、CPU26は簡易AE処理を撮像タスクの下で実行する。この結果、スルー画像の明るさが適度に調整される。
撮像タスクと並列して実行される撮像用顔検出タスクの起動時に、CPU26は、フラグFLG_fを“0”に初期設定する。
CPU26は次に、探索画像エリア32cに格納された探索画像データから人物の顔画像を探索するべく、垂直同期信号Vsyncが発生する毎に撮像用顔検出処理を撮像用顔検出タスクの下で実行する。このような撮像用顔検出タスクのために、図14に示す撮像用顔検出レジスタRGSTdt、および図15に示すAF対象レジスタRGSTafが準備される。
撮像用顔検出処理では、上述の登録用顔検出処理と同様に、評価エリアEVAの全域が探索エリアとして設定され、顔検出枠FDが、探索エリアの左上位置から右下位置に向かって移動し、右下位置に到達する毎にサイズが“SZmax”から“SZmin”まで“5”ずつ縮小される。
ただし撮像用顔検出処理では、登録用顔検出処理と異なり、顔検出枠FDに属する画像データの特徴量は、登録顔辞書DCrgに登録された各々の特徴量と照合される。照合度が基準値TH2を上回ると、顔画像が検出されたものとみなされ、現時点の顔検出枠FDの位置およびサイズならびに照合対象の辞書番号が、顔情報として撮像用顔検出レジスタRGSTdtに格納される。
撮像用顔検出処理の完了後に撮像用顔検出レジスタRGSTdtに顔情報が格納されていたとき、CPU26は、撮像用顔検出レジスタRGSTdtに格納された顔情報の中からAF処理の対象とすべき顔情報を決定する。撮像用顔検出レジスタRGSTdtに1つの顔情報が格納されている場合、CPU26は、格納された顔情報をAF対象顔情報とする。撮像用顔検出レジスタRGSTdtに複数の顔情報が格納されている場合、CPU26は、位置が撮像面中央に最も近い顔情報をAF対象顔情報とする。AF対象顔情報とされた顔情報の位置およびサイズならびに辞書番号は、AF対象レジスタRGSTafに登録される。
また、CPU26は、人物の顔を発見したことを表明するべくフラグFLG_fを“1”に設定する。
シャッタボタン28shが半押しされると、フラグFLG_fが“1”を示すとき、撮像タスクの下でCPU26は、人物対象AF処理を実行する。
人物対象AF処理においてはまず、AF対象顔情報が示す領域に注目した厳格AF処理が実行される。CPU26は、AF評価回路24から出力された256個のAF評価値のうち、AF対象レジスタRGSTafに格納された位置およびサイズに対応するAF評価値を抽出する。CPU26は、抽出された一部のAF評価値に基づくAF処理を実行する。この結果、AF対象顔情報が示す領域に注目した合焦点にフォーカスレンズ12が配置され、スルー画像または記録画像におけるAF対象顔情報が示す領域の鮮鋭度が向上する。また厳格AF処理の完了後の被写体距離がAF距離Daとして設定される。
このような厳格AF処理の結果、検出された顔画像に係る人物よりも至近側に、格子模様の金網等で構成される障害物が存在した場合、その障害物に合焦される可能性がある。図16に示す例によると、人物HB2よりも至近側に存在する柵FCに合焦された結果、スルー画像において、柵FCの画像の鮮鋭度が向上する一方、人物HB2の顔画像の鮮鋭度が低下する。そこで、この問題に対応する処理が以下の要領で実行される。
CPU26は、フォーカスレンズ12およびAF対象レジスタRGSTrgに格納された人物の顔の推定距離Dfを算出する。登録顔辞書DCrgのAF対象顔情報に対応した辞書番号に登録された基準顔サイズSfを用いて、推定距離Dfは以下の数3に示す式で求めることができる。
[数3]
Df=Af/Sf
Af:AF対象レジスタRGSTafに格納されたサイズ
CPU26は、このようにして算出された推定距離Dfから既定値αの範囲内にAF距離Daが含まれるか否かを判別する。
判別結果が否定的であった場合、CPU26は、厳格AF処理によって障害物に合焦されたものと判断し、推定距離Dfに基づいてフォーカスレンズ12の位置を調整すべき旨をドライバ18aに命令する。この結果、被写体距離と推定距離Dfとが一致するようにフォーカスレンズ12が配置される。判別結果が肯定的であった場合、厳格AF処理によって人物に合焦されたものと判断され、被写体距離の調整は行われない。
なお、登録顔辞書DCrgのAF対象顔情報に対応した辞書番号に基準人体サイズSbが登録されていた場合、推定距離Dbを算出し、推定距離Dfに代えて推定距離Dbを用いて被写体距離を調整する。人物の顔のサイズよりも顔を含む人体のサイズの方が大きいので、特に被写体距離が長くなる場合に調整精度が高くなるからである。
この場合、AF対象顔情報が示す領域を含む人体の画像を、標準人体辞書DCsbを用いて探索画像データから検出する。人体画像が検出された場合、CPU26は、フォーカスレンズ12およびAF対象レジスタRGSTrgに格納された人物の人体の推定距離Dbを算出する。基準人体サイズSbを用いて、推定距離Dbは以下の数4に示す式で求めることができる。
[数4]
Db=Ab/Sb
Ab:人体画像のサイズ
図17を参照して、図16に示す例のように厳格AF処理によって柵FCに合焦された場合、AF距離Daは柵FCおよびフォーカスレンズ12の距離に相当する。そこで、人物HB2およびフォーカスレンズ12の距離を示す推定距離DfまたはDbに被写体距離を一致させることによって、図18に示すように人物HB2に合焦させることができる。
またフラグFLG_fが“1”を示すとき、撮像タスクの下でCPU26は、AF対象レジスタRGSTafの内容を参照して、顔枠AFの表示をグラフィックジェネレータ46に要求する。グラフィックジェネレータ46は、顔枠AFを表すグラフィック情報をLCDドライバ38に向けて出力する。顔枠AFは、AF対象レジスタRGSTafに格納された位置およびサイズに適合する態様でLCDモニタ38に表示される。
したがって、人物HB2の顔に対して人物対象AF処理が実行されたとき、顔枠AF1は、人物HB2の顔画像を囲うように、図18に示す要領でLCDモニタ38に表示される。
フラグFLG_fが“0”を示すとき、撮像タスクの下でCPU26は、画面中央に注目した厳格AF処理を実行する。CPU26は、AF評価回路24から出力された256個のAF評価値のうち、画面中央に対応するAF評価値を抽出する。CPU26は、抽出された一部のAF評価値に基づくAF処理を実行する。この結果、スルー画像または記録画像における画面中央の鮮鋭度が向上する。
AF処理が完了すると、CPU26は、小さい絞り量に絞りユニット14を調整すべき旨をドライバ18bに命令する。この結果、被写界深度が浅いレベルに変更される。
CPU26はまた、AE評価回路22から出力された256個のAE評価値に基づき、撮像タスクの下で厳格AE処理を実行する。厳格AE処理によって算出された最適EV値を定義する絞り量および露光時間は、ドライバ18bおよび18cにそれぞれ設定される。この結果、スルー画像または記録画像の明るさが厳格に調整される。
シャッタボタン28shが全押しされると、CPU26は、撮像タスクの下で静止画取り込み処理と記録処理とを実行する。シャッタボタン28shが全押しされた時点の1フレームの生画像データは、静止画取り込み処理によってSDRAM32の静止画像エリア32dに取り込まれる。また、記録処理によって1つの静止画ファイルが記録媒体42に作成される。取り込まれた生画像データは、新規作成された静止画ファイルに記録処理によって記録される。
CPU26は、図19に示すメインタスク,図20〜21に示す人物登録タスク,図22に示す登録用顔検出タスク,図27〜28に示す撮像タスク,および図29に示す撮像用顔検出タスクを含む複数のタスクを並列的に実行する。なお、これらのタスクに対応する制御プログラムは、フラッシュメモリ44に記憶される。
図19を参照して、ステップS1では現時点の動作モードが人物登録モードであるか否かを判別し、判別結果がYESであればステップS3で人物登録タスクを起動する。判別結果がNOであれば、ステップS5で現時点の動作モードが撮像モードであるか否かを判別する。ステップS5の判別結果がYESであればステップS7で撮像タスクを起動し、ステップS5の判別結果がNOであればステップS9でその他の処理を実行する。
ステップS3,S7,またはS9の処理が完了すると、モード切り換え操作が行われたか否かをステップS11で繰り返し判別する。判別結果がNOからYESに更新されると、起動中のタスクをステップS13で停止し、その後にステップS1に戻る。
図20を参照して、ステップS21では登録用顔検出タスクを起動し、ステップS23では動画取り込み処理を開始する。この結果、シーンを表すスルー画像がLCDモニタ38に表示される。
ステップS25では、初期設定位置であるパンフォーカス位置にフォーカスレンズ12を配置する。ステップS27ではシャッタボタン28shが半押しされたか否かを判別し、判別結果がNOの間はステップS29で簡易AE処理を実行する。この結果、スルー画像の明るさが適度に調整される。判別結果がNOからYESに更新されると、ステップS31で厳格AE処理を実行する。この結果、スルー画像の明るさが厳格に調整される。
ステップS33ではフラグFLG_rfが“1”を示すか否かを判別し、判別結果がNOであればステップS39に進む一方、判別結果がYESであればステップS35およびS37の処理を経てステップS39に進む。
ステップS35では、登録対象顔情報が示す領域に注目した厳格AF処理を実行する。この結果、登録対象顔情報が示す領域に注目した合焦点にフォーカスレンズ12が配置され、スルー画像における登録対象の顔の鮮鋭度が向上する。ステップS37では、顔枠RFの表示をグラフィックジェネレータ46に要求する。この結果、顔枠RFは、登録対象レジスタRGSTrgに格納された位置およびサイズに適合する態様でLCDモニタ38に表示される。
ステップS39ではシャッタボタン28shが全押しされたか否かを判別し、判別結果がNOであればシャッタボタン28shの半押し状態が解除されたか否かをステップS41で判別する。ステップS41の判別結果がNOであればステップS39に戻る一方、ステップS41の判別結果がYESであればステップS49に進む。
ステップS39の判別結果がYESであれば、ステップS43でフラグFLG_rfが“1”を示すか否かを判別する。ステップS43の判別結果がYESであればステップS45の処理を経てステップS49に進み、ステップS43の判別結果がNOであればステップS47の処理を経てステップS49に進む。
ステップS45では、登録対象顔情報に基づいて登録顔辞書DCrgに辞書を登録するべく、登録処理を実行する。ステップS47では、登録対象の顔が未発見であることを報知するべく、エラーメッセージをLCDモニタ38に表示する。ステップS49では顔枠RFを非表示とし、その後にステップS25に戻る。
図22を参照して、ステップS51ではフラグFLG_rfに“0”を設定し、ステップS53では登録対象レジスタRGSTrgの格納内容を初期化するべくクリアする。ステップS55では、垂直同期信号Vsyncが発生したか否かを繰り返し判別し、判別結果がNOからYESに更新されると、ステップS57に進む。
ステップS57では、探索画像データから人物の顔画像を探索するべく、登録用顔検出処理を実行する。ステップS59では、ステップS57の処理によって登録用顔検出レジスタRGSTrdtに顔情報が格納されたか否かを判別し、判別結果がYESであればステップS63に進む一方、判別結果がNOであればステップS61に進む。ステップS61ではフラグFLG_rfに“0”を設定し、その後にステップS55に戻る。
ステップS63では、登録用顔検出レジスタRGSTrdtに複数の顔情報が格納されたか否かを判別し、判別結果がNOであればステップS67に進む一方、判別結果がYESであればステップS65の処理を経てステップS67に進む。
ステップS65では、登録用顔検出レジスタRGSTrdtに格納された位置が撮像面中央に最も近い顔情報を登録対象顔情報と決定し、ステップS67では、登録対象顔情報とされた顔情報の位置およびサイズを、登録対象レジスタRGSTrgに格納する。ステップS69ではフラグFLG_rfに“1”を設定し、その後にステップS55に戻る。
ステップS57の登録用顔検出処理は、図23〜24に示すサブルーチンに従って実行される。
図23を参照して、ステップS71では、登録用顔検出レジスタRGSTrdtを初期化すべく格納内容をクリアする。
ステップS73では評価エリアEVAの全域を探索エリアとして設定する。ステップS75では、顔検出枠FDのサイズの可変範囲を定義するべく、最大サイズSZmaxを“200”に設定し、最小サイズSZminを“20”に設定する。
ステップS77では顔検出枠FDのサイズを“SZmax”に設定し、ステップS79では顔検出枠FDを探索エリアの左上位置に配置する。ステップS81では、顔検出枠FDに属する一部の探索画像データを探索画像エリア32cから読み出し、読み出された探索画像データの特徴量を算出する。
ステップS83では、ステップS81で算出された特徴量と標準顔辞書DCsfに収められた辞書画像の特徴量とを照合する。照合の結果、閾値TH1を超える照合度が得られたか否かをステップS85で判別し、判別結果がNOであればステップS89に進む一方、判別結果がYESであればステップS87を経てステップS89に進む。
ステップS87では、現時点の顔検出枠FDの位置およびサイズを顔情報として登録用顔検出レジスタRGSTrdtに登録する。ステップS89では顔検出枠FDが探索エリアの右下位置に到達したか否かを判別し、判別結果がYESであればステップS93に進む一方、判別結果がNOであれば、ステップS91で顔検出枠FDを既定量だけラスタ方向に移動させ、その後にステップS81に戻る。
ステップS93では顔検出枠FDのサイズが“SZmin”以下であるか否かを判別し、判別結果がYESであれば上階層のルーチンに復帰する一方、判別結果がNOであればステップS95に進む。
ステップS95では顔検出枠FDのサイズを“5”だけ縮小させ、ステップS97では顔検出枠FDを探索エリアの左上位置に配置する。ステップS97の処理が完了すると、ステップS81に戻る。
ステップS45の登録処理は、図25〜26に示すサブルーチンに従って実行される。
図25を参照して、ステップS101では、静止画取り込み処理を実行する。この結果、シャッタボタン28shが全押しされた時点の1フレームの画像データは、静止画取り込み処理によってSDRAM32の静止画像エリア32dに取り込まれる。ステップS103では、表示画像エリア32bの更新を停止する。この結果、シャッタボタン28shが全押しされた時点の静止画像がLCDモニタ38に表示される。
表示画像データのうち登録対象レジスタRGSTrgに格納された位置およびサイズに対応する画像データは、ステップS105でサムネイル画像として登録顔辞書DCrgに登録され、画像データの特徴量がステップS107で登録顔辞書DCrgに登録される。
ステップS109では登録対象顔情報の単位被写体距離当たりのサイズを表す基準顔サイズSfを算出し、算出された基準顔サイズSfはステップS111で登録顔辞書DCrgに登録される。
ステップS113では、登録対象顔情報が示す領域を含む人体の画像を、標準人体辞書DCsbを用いて探索画像データから検出する。人体画像が検出されたか否かをステップS115で判別し、判別結果がNOであればステップS121に進む一方、判別結果がYESであればステップS117およびS119の処理を経てステップS121に進む。
ステップS117では、検出された人体画像の単位被写体距離当たりのサイズを表す基準人体サイズSbを算出し、算出された基準人体サイズSbはステップS119で登録顔辞書DCrgに登録される。
ステップS121では入力画面を表示して登録対象の名前の入力を操作者に促し、ステップS123では名前の入力が完了したか否かを繰り返し判別する。判別結果がNOからYESに更新されると、入力された名前をステップS125で登録顔辞書DCrgに登録する。
ステップS121で表示された名前入力画面をステップS127で非表示とし、ステップS103で表示された取り込み画像をステップS129で非表示とし、その後に上階層のルーチンに復帰する。
図27を参照して、ステップS131では撮像用顔検出タスクを起動し、ステップS133では動画取り込み処理を開始する。この結果、シーンを表すスルー画像がLCDモニタ38に表示される。
ステップS135では、初期設定位置であるパンフォーカス位置にフォーカスレンズ12を配置する。ステップ137ではシャッタボタン28shが半押しされたか否かを判別し、判別結果がNOの間はステップS139で簡易AE処理を実行する。この結果、スルー画像の明るさが適度に調整される。
判別結果がNOからYESに更新されると、ステップS141ではフラグFLG_fが“1”を示すか否かを判別し、判別結果がYESであればステップS143およびS145を経てステップS149に進む一方、判別結果がNOであればステップS147の処理を経てステップS149に進む。
ステップS143では人物対象AF処理を実行する。ステップS145では、顔枠AFの表示をグラフィックジェネレータ46に要求する。この結果、顔枠AFは、AF対象レジスタRGSTafに格納された位置およびサイズに適合する態様でLCDモニタ38に表示される。
ステップS147では、画面中央に注目した厳格AF処理を実行する。この結果、スルー画像または記録画像における画面中央の鮮鋭度が向上する。
ステップS149では、小さい絞り量に絞りユニット14を調整すべき旨をドライバ18bに命令する。この結果、被写界深度が浅いレベルに変更される。ステップS151では厳格AE処理を実行する。この結果、スルー画像または記録画像の明るさが厳格に調整される。
ステップS153ではシャッタボタン28shが全押しされたか否かを判別し、判別結果がNOであればシャッタボタン28shの半押し状態が解除されたか否かをステップS155で判別する。ステップS155の判別結果がNOであればステップS153に戻る一方、ステップS155の判別結果がYESであればステップS161に進む。
ステップS153の判別結果がYESであれば、ステップS157で静止画取り込み処理を実行し、ステップS159で記録処理を実行する。シャッタボタン28shが全押しされた時点の1フレームの生画像データは、静止画取り込み処理によってSDRAM32の静止画像エリア32dに取り込まれる。また、記録処理によって1つの静止画ファイルが記録媒体42に作成される。取り込まれた生画像データは、新規作成された静止画ファイルに記録処理によって記録される。ステップS161では顔枠AFを非表示とし、その後にステップS135に戻る。
図29を参照して、ステップS171ではフラグFLG_fに“0”を設定し、ステップS173ではAF対象レジスタRGSTafの格納内容を初期化するべくクリアする。ステップS175では、垂直同期信号Vsyncが発生したか否かを繰り返し判別し、判別結果がNOからYESに更新されると、ステップS177に進む。
ステップS177では、探索画像データから人物の顔画像を探索するべく、撮像用顔検出処理を実行する。ステップS179では、ステップS177の処理によって撮像用顔検出レジスタRGSTdtに顔情報が格納されたか否かを判別し、判別結果がYESであればステップS183に進む一方、判別結果がNOであればステップS181に進む。ステップS181ではフラグFLG_fに“0”を設定し、その後にステップS175に戻る。
ステップS183では、撮像用顔検出レジスタRGSTdtに複数の顔情報が格納されたか否かを判別し、判別結果がNOであればステップS187に進む一方、判別結果がYESであればステップS185の処理を経てステップS187に進む。
ステップS185では、撮像用顔検出レジスタRGSTdtに格納された位置が撮像面中央に最も近い顔情報をAF対象顔情報と決定し、ステップS187では、AF対象顔情報とされた顔情報の位置およびサイズを、AF対象レジスタRGSTafに格納する。ステップS189ではフラグFLG_fに“1”を設定し、その後にステップS175に戻る。
ステップS177の撮像用顔検出処理は、図30〜31に示すサブルーチンに従って実行される。
図30を参照して、ステップS191では、撮像用顔検出レジスタRGSTdtを初期化すべく格納内容をクリアする。
ステップS193では変数Nmaxを登録顔辞書DCrgの登録数に設定し、ステップS195では評価エリアEVAの全域を探索エリアとして設定する。ステップS197では、顔検出枠FDのサイズの可変範囲を定義するべく、最大サイズSZmaxを“200”に設定し、最小サイズSZminを“20”に設定する。
ステップS199では顔検出枠FDのサイズを“SZmax”に設定し、ステップS201では顔検出枠FDを探索エリアの左上位置に配置する。ステップS203では、顔検出枠FDに属する一部の探索画像データを探索画像エリア32cから読み出し、読み出された探索画像データの特徴量を算出する。
ステップS205では変数Nを“1”に設定し、ステップS207では、ステップS203で算出された特徴量と登録顔辞書DCrgのN番目に収められた辞書画像の特徴量とを照合する。照合の結果、閾値TH2を超える照合度が得られたか否かをステップS209で判別し、判別結果がNOであればステップS211に進む一方、判別結果がYESであればステップS215に進む。
ステップS211では変数Nをインクリメントし、ステップS213では変数NがNmaxを超えたか否かを判別する。判別結果がNOであればステップS207に戻る一方、判別結果がYESであればステップS217に進む。
ステップS215では、現時点の顔検出枠FDの位置およびサイズを顔情報として撮像用顔検出レジスタRGSTdtに登録する。ステップS217では顔検出枠FDが探索エリアの右下位置に到達したか否かを判別し、判別結果がYESであればステップS221に進む一方、判別結果がNOであれば、ステップS219で顔検出枠FDを既定量だけラスタ方向に移動させ、その後にステップS203に戻る。
ステップS221では顔検出枠FDのサイズが“SZmin”以下であるか否かを判別し、判別結果がYESであれば上階層のルーチンに復帰する一方、判別結果がNOであればステップS223に進む。
ステップS223では顔検出枠FDのサイズを“5”だけ縮小させ、ステップS225では顔検出枠FDを探索エリアの左上位置に配置する。ステップS225の処理が完了すると、ステップS203に戻る。
ステップS143の人物対象AF処理は、図32に示すサブルーチンに従って実行される。
図32を参照して、ステップS231では、AF対象顔情報が示す領域に注目した厳格AF処理を実行する。この結果、AF対象顔情報が示す領域に注目した合焦点にフォーカスレンズ12が配置され、スルー画像または記録画像におけるAF対象顔情報が示す領域の鮮鋭度が向上する。ステップS233では、厳格AF処理の完了後の被写体距離をAF距離Daに設定する。
ステップS235では、登録顔辞書DCrgのAF対象顔情報に対応した辞書番号に基準人体サイズSbが登録されているか否かを判別し、判別結果がNOであればステップS247に進む一方、判別結果がYESであればステップS237に進む。
ステップS237では、AF対象顔情報が示す領域を含む人体の画像を、標準人体辞書DCsbを用いて探索画像データから検出する。ステップS239では、ステップS237の検出処理によって人体画像が検出されたか否かを判別し、判別結果がNOであればステップS247に進む一方、判別結果がYESであればステップS241に進む。
ステップS241では、登録顔辞書DCrgのAF対象顔情報に対応した辞書番号に登録された基準人体サイズSbを用いて、フォーカスレンズ12およびAF対象レジスタRGSTrgに格納された人物の人体の推定距離Dbを算出する。
ステップS243では、ステップS241で算出された推定距離Dbから既定値αの範囲内にAF距離Daが含まれるか否かを判別する。判別結果がYESであれば厳格AF処理によって人物に合焦されたものと判断し、上階層のルーチンに復帰する一方、判別結果がNOであれば厳格AF処理によって障害物に合焦されたものと判断し、ステップS245に進む。
ステップS245では、推定距離Dbに基づいてフォーカスレンズ12の位置を調整すべき旨をドライバ18aに命令する。この結果、被写体距離と推定距離Dbとが一致するようにフォーカスレンズ12が配置される。
ステップS247では、登録顔辞書DCrgのAF対象顔情報に対応した辞書番号に登録された基準顔サイズSfを用いて、フォーカスレンズ12およびAF対象レジスタRGSTrgに格納された人物の顔の推定距離Dfを算出する。
ステップS249では、ステップS247で算出された推定距離Dfから既定値αの範囲内にAF距離Daが含まれるか否かを判別する。判別結果がYESであれば厳格AF処理によって人物に合焦されたものと判断し、上階層のルーチンに復帰する一方、判別結果がNOであれば厳格AF処理によって障害物に合焦されたものと判断し、ステップS251に進む。
ステップS251では、推定距離Dfに基づいてフォーカスレンズ12の位置を調整すべき旨をドライバ18aに命令する。この結果、被写体距離と推定距離Dfとが一致するようにフォーカスレンズ12が配置される。
ステップS245またはS251の処理が完了すると、上階層のルーチンに復帰する。
以上の説明から分かるように、イメージセンサ16は、シーンを表す画像を繰り返し出力する。CPU26は、顔画像をイメージセンサ16から出力された画像から探索する処理を人物登録モードに対応して実行する。CPU26はまた、探知された顔画像のサイズを検出し、探知された顔画像に注目して被写体距離を調整する。CPU26は、探知された顔画像に相当する部分画像をイメージセンサ16から出力された画像から探索する処理を人物登録モードに代替する撮像モードに対応して実行し、探知された部分画像のサイズおよび先に検出されたサイズの相違と先の調整結果とに基づいて被写体距離を調整する。
一旦探知された顔画像に基づいて顔画像が探索される。また、2回の探知時の各々の顔画像のサイズの相違と最初の探知時の調整結果とに基づいて、被写体距離が調整される。このため、標準的なサイズに基づいた調整よりも被写体距離の調整精度を高めることができる。
なお、この実施例では、シャッタボタン28shが半押しされたときに登録対象の位置およびサイズまたはAF対象の位置およびサイズを決定するようにしたが、例えば半押しが継続されている間は、追尾処理によってこれらの対象を更新するようにしてもよい。
また、この実施例では、マルチタスクOSおよびこれによって実行される複数のタスクに相当する制御プログラムは、フラッシュメモリ44に予め記憶される。しかし、外部サーバに接続するための通信I/F60を図33に示す要領でディジタルカメラ10に設け、一部の制御プログラムを内部制御プログラムとしてフラッシュメモリ44に当初から準備する一方、他の一部の制御プログラムを外部制御プログラムとして外部サーバから取得するようにしてもよい。この場合、上述の動作は、内部制御プログラムおよび外部制御プログラムの協働によって実現される。
また、この実施例では、CPU26によって実行される処理を、図19に示すメインタスク,図20〜21に示す人物登録タスク,図22に示す登録用顔検出タスク,図27〜28に示す撮像タスク,および図29に示す撮像用顔検出タスクを含む複数のタスクに区分するようにしている。しかし、これらのタスクをさらに複数の小タスクに区分してもよく、さらには区分された複数の小タスクの一部を他のタスクに統合するようにしてもよい。また、転送タスクを複数の小タスクに区分する場合、その全部または一部を外部サーバから取得するようにしてもよい。
また、この実施例では、ディジタルスチルカメラを用いて説明したが、本発明は、ディジタルビデオカメラ,携帯電話端末またはスマートフォンなどにも適用することができる。