以下、本発明における撮像装置であるデジタルカメラ100について添付図面を参照して説明する。まず、図1を用いてデジタルカメラ100の構成について説明する。
デジタルカメラ100は、カメラ本体110及び撮影レンズ150を有する。撮影レンズ150は着脱自在にカメラ本体110と取り付けられる。
カメラ本体110は、CCDユニットから成る撮像部111、撮像部111に接続されるDSP112、DSP112から各種情報を受信して記憶する第1のメモリ113と、DSP112に接続される主検出顔判断部114と、主検出顔判断部114から各種情報を受信して記憶する第2のメモリ115と、主検出顔判断部114に接続される顔追尾部116と、顔追尾部116から受信した情報を表示するモニター117と、顔追尾部116から受信した信号に応じて撮影レンズ150に信号を送信するAF部118とを主に備える。DSP112、第1のメモリ113、主検出顔判断部114、及び第2のメモリ115が顔検出部を主に構成する。
デジタルカメラ100の動作を概略的に説明する。撮影レンズ150は撮像部111に被写体像を結像させ、撮像部111は被写体像を撮像して、例えば約24fpsの周期で静止画像を連続的に出力する。撮像部111が出力した時間順に静止画像を第nの静止画像、第n+1の静止画像(nは整数)と呼ぶ。DSP112は、第nの静止画像を受信して、第nの静止画像に含まれる顔を全て検出する。そして、検出した顔の1つ1つにIDを割り当て、検出した顔から主被写体である主検出顔を1つ決定するとともに、主検出顔の周囲にある顔を周辺顔として決定する。そして、周辺顔及び主検出顔のID、並びに周辺顔及び主検出顔の傾き、特徴、及び静止画像内の座標等の顔情報を第1のメモリ113が記憶する。静止画像を受信する都度、DSP112は顔の検出、ID割り当て、並びに主検出顔及び周辺顔の決定を繰り返し、第1のメモリ113はID及び顔情報を静止画像と関連付けながら記憶して蓄積することを繰り返す。DSP112は、第nの静止画像において検出した顔を、新たに受信した第n+1の静止画像において再度検出し、同じIDを割り当てる。つまり第n+1の静止画像では、第nの静止画像で検出した顔と同じ顔に、同じIDを割り当てる。これらの処理は、第1のメモリ113が記憶しているID及び顔情報に基づいて行われる。さらに、DSP112は、主検出顔にピントを併せるようにAF部118に指示を出し、かつ主検出顔に露出を合わせる。顔追尾部116は、静止画像内における周辺顔及び主検出顔の座標をDSP112から受信し、静止画像に含まれる周辺顔及び主検出顔に枠を表示した枠付き静止画像をモニター117に送信する。モニター117は、枠付き静止画像を表示する。これにより、ユーザは、モニター117に表示された枠付き静止画像を参照して、デジタルカメラ100がどの顔を主検出顔として認識しているかを知ることができる。
しかし、第nの静止画像で検出した顔と同じ顔に、第n+1の静止画像で同じIDを割り当てることができない場合がある。例えば、顔が閾値以上に傾いた場合、被写体の動きが大きい場合、さらに目の位置に基づいて顔を検出する構成では、被写体が目をつぶった場合、DSP112が別の顔と判断することがある。この場合DSP112は、第nの静止画像で検出した顔と違う顔であると判断して、第nの静止画像で検出した顔とは異なるIDを、第n+1の静止画像で検出した顔に割り当てる。これにより、DSP112は、同じ顔であるにもかかわらず、異なる顔として認識することになる。そのため、主検出顔を異なる顔として認識した場合、DSP112が主検出顔を検出できず、つまり主検出顔を見失って、AF部118は主検出顔にピントを合わせることができなくなり、顔追尾部116は主検出顔に枠を表示できなくなる。そこで主検出顔判断部114が、第nの静止画像における周辺顔と主検出顔の位置関係を利用して、第n+1の静止画像において主検出顔を検出する。主検出顔判断部114は、静止画像における周辺顔及び主検出顔のID及び顔情報を、静止画像ごとにDSP112から受信し、周辺顔及び主検出顔のID及び顔情報に基づいて第1から第3の主検出顔検出処理により主検出顔を検出する。
第1の主検出顔検出処理の概略について、図2及び3を用いて説明する。前述のように、第1の主検出顔検出処理は、DSP112が主検出顔を見失ったときに主検出顔判断部114が主検出顔を検出する処理である。
まず、第1の主検出顔検出処理を実行する前の状態について図2を用いて説明する。図2は、第nの静止画像20を示す。DSP112は、第nの静止画像20から9つの顔を検出し、左上から右下に向けて順に1から9までのIDを割り当てている。そして、9つの顔の真ん中に位置する顔を主検出顔として決定している。すなわち、図2ではID5が割り当てられた顔が主検出顔25である。次に、DSP112は、主検出顔25の周囲にある顔を周辺顔として決定する。つまり図2では、ID1−4、6−9が割り当てられた顔が周辺顔21−24、26−29である。
次に、DSP112が主検出顔25を見失ったときの状態について図3を用いて説明する。図3は、第n+1の静止画像30を示す。DSP112は第n+1の静止画像30において顔31−39を検出している。DSP112は、周辺顔31−34、36−39が周辺顔21−24、26−29と同じ顔であると判断して、第nの静止画像20における周辺顔21−24、26−29のIDと同じIDを周辺顔31−34、36−39にそれぞれ割り当てる。しかし、顔35が閾値以上に傾いているため、DSP112は、第nの静止画像20の主検出顔25が顔35と違う顔であると判断して、第nの静止画像20で割り当てたID5とは異なるID10を、顔35に割り当てる。そのため、DSP112は第n+1の静止画像30において主検出顔25を検出できず、主検出顔25を見失っている。そこで、周辺顔との位置関係を用いて主検出顔判断部114が主検出顔を検出する。
主検出顔判断部114による主検出顔の検出を概略的に説明すると、主検出顔判断部114は、第nの静止画像20において主検出顔25を囲む周辺顔22、24、26、28と同じIDを持つ周辺顔を第n+1の静止画像30において見つけ出す。そして、見つけ出した周辺顔に囲まれている顔を主検出顔として決定する。この処理を以下に詳細に説明する。
まず、主検出顔判断部114は、第nの静止画像20で主検出顔25を囲む周辺顔22、24、26、28と同じIDを持つ周辺顔32、34、36、38を第n+1の静止画像30で見つける。ここで主検出顔25を囲む周辺顔とは、主検出顔25の左にある周辺顔22、上にある周辺顔24、下にある周辺顔26、そして右にある周辺顔28である。次に、周辺顔32、34、36、38に囲まれた、すなわち周辺顔32の右、周辺顔34の下、周辺顔36の上、かつ周辺顔38の左にある顔35を主検出顔35として決定する。すなわち、図3においてID10が付けられた顔10を主検出顔35として検出する。そして、顔追尾部116及びAF部118に、主検出顔35のID及び顔情報を送信する。これにより、AF部118は主検出顔にピントを合わせることができ、顔追尾部116は主検出顔に枠を表示できる。
第2の主検出顔検出処理の概略について、図4及び5を用いて説明する。第2の主検出顔検出処理は、DSP112が主検出顔を見失ったときに主検出顔判断部114が主検出顔を検出する処理である。第1の主検出顔検出処理は、第nの静止画像40と第n+1の静止画像50で検出された顔は同じ数であるときに主検出顔を検出するのに対し、第2の主検出顔検出処理は、第nの静止画像40で検出された顔の数よりも第n+1の静止画像で検出された顔の数が多いときに主検出顔を検出する。
まず、第2の主検出顔検出処理を実行する前の状態について図4を用いて説明する。図4は、第nの静止画像40を示す。DSP112は、第nの静止画像40から6つの顔を検出し、左上から右下に向けて順に4から9までのIDを割り当てている。そして、6つの顔のうち、最も画像の中心に位置する顔を主検出顔として決定している。すなわち、図4ではID5が割り当てられた顔が主検出顔45である。次に、DSP112は、主検出顔45の周囲にある顔を周辺顔として決定する、つまり図4では、ID4、6−9が割り当てられた顔が周辺顔44、46−49である。
次に、DSP112が主検出顔45を見失ったときの状態について図5を用いて説明する。図5は、第n+1の静止画像50を示す。第n+1の静止画像50は、第nの静止画像40の次に撮像部111が撮像した画像である。DSP112は第n+1の静止画像50において顔51−59を検出している。DSP112は、周辺顔54、56−59が周辺顔44、46−49と同じ顔であると判断して、第nの静止画像40における周辺顔44、46−49のIDと同じIDを周辺顔54、56−59にそれぞれ割り当てる。しかし、顔55が閾値以上に傾いているため、DSP112は、第nの静止画像40の主検出顔45が顔55と違う顔であると判断して、第nの静止画像40で割り当てたID5とは異なるID10を、顔55に割り当てる。そのため、DSP112は第n+1の静止画像50において主検出顔45を検出できず、主検出顔45を見失っている。そこで、周辺顔との位置関係を用いて主検出顔判断部114が主検出顔45を検出する。
主検出顔判断部114による主検出顔45の検出を概略的に説明する。主検出顔判断部114は、まず、第nの静止画像40において主検出顔45を囲む周辺顔44、46、48と同じIDを持つ周辺顔を第n+1の静止画像50において見つけ出す。そして、見つけ出した周辺顔に囲まれている顔を主検出顔45として決定する。つまり、第2の主検出顔検出処理は、第n+1の静止画像50において新たに検知した顔を用いずに主検出顔45を検出する。以下に、この処理について詳細に説明する。
まず、主検出顔判断部114は、第nの静止画像40で主検出顔45を囲む周辺顔44、46、48と同じIDを持つ周辺顔54、56、58を第n+1の静止画像50で見つける。ここで主検出顔45を囲む周辺顔とは、主検出顔45の上にある周辺顔54、下にある周辺顔56、そして右にある周辺顔58である。次に、周辺顔54、56、58に囲まれた、すなわち周辺顔54の下、周辺顔56の上、かつ周辺顔58の左にある顔55を主検出顔55として決定する。すなわち、図5においてID10が付けられた顔55を主検出顔55として検出する。そして、顔追尾部116及びAF部118に、主検出顔55のID及び顔情報を送信する。これにより、AF部118は主検出顔45にピントを合わせることができ、顔追尾部116は主検出顔45に枠を表示できる。
次に、第3の主検出顔検出処理の概略について、図6及び7を用いて説明する。第3の主検出顔検出処理は、DSP112が主検出顔45を見失ったときに主検出顔判断部114が主検出顔45を検出する処理である。これまで説明した第1及び第2の主検出顔検出処理は、第nの静止画像20、40で検出された顔の数が第n+1の静止画像30、50のそれと同じ、あるいは多い場合に主検出顔45を検出するが、第3の主検出顔検出処理は、第nの静止画像60で検出された顔の数よりも第n+1の静止画像70で検出された顔の数が少ないときに主検出顔45を検出する。
まず、第3の主検出顔検出処理を実行する前の状態について図6を用いて説明する。図6は、第nの静止画像60を示す。DSP112は、第nの静止画像60から9つの顔を検出し、左上から右下に向けて順に1から9までのIDを割り当てている。そして、9つの顔のうち、最も画像の中心に位置する顔を主検出顔65として決定している。すなわち、図6ではID5が割り当てられた顔が主検出顔65である。次に、DSP112は、主検出顔65の周囲にある顔を周辺顔として決定する、つまり図6では、ID1−4、6−9が割り当てられた顔が周辺顔61−64、66−69である。
次に、DSP112が主検出顔45を見失ったときの状態について図7を用いて説明する。図7は、第n+1の静止画像70を示す。第n+1の静止画像70は、第nの静止画像60の次に撮像部111が撮像した画像である。DSP112は第n+1の静止画像70において顔71、73−79を検出している。DSP112は、周辺顔71、73、74、76−59は周辺顔61、63、64、66−69と同じ顔であると判断して、第nの静止画像60における周辺顔61、63、64、66−69のIDと同じIDを周辺顔71、73、74、76−59にそれぞれ割り当てる。一方、顔75が閾値以上に傾いているため、DSP112は、第nの静止画像60の主検出顔65が顔75と違う顔であると判断して、第nの静止画像60で割り当てたID5とは異なるID10を、顔75に割り当てる。そのため、DSP112は第n+1の静止画像70において主検出顔45を検出しておらず、主検出顔45を見失っている。そこで、周辺顔との位置関係を用いて主検出顔判断部114が主検出顔45を検出する。
主検出顔判断部114による主検出顔45の検出を概略的に説明する。主検出顔判断部114は、まず、第nの静止画像60において主検出顔65を囲む周辺顔62、64、66、68と同じIDを持つ周辺顔を第n+1の静止画像70において見つけ出す。そして、見つけ出した周辺顔74、76、78に囲まれている顔を主検出顔75として決定する。つまり、第3の主検出顔検出処理は、第n+1の静止画像70において検知されなかった周辺顔と主検出顔45との位置関係を把握し、この位置関係にある周辺顔を用いずに主検出顔45を検出する。以下に、この処理について詳細に説明する。以下に、この処理について詳細に説明する。
まず、主検出顔判断部114は、第nの静止画像60において主検出顔65を囲む周辺顔62、64、66、68と同じIDを持つ周辺顔74、76、78を第n+1の静止画像70で見つける。ここで主検出顔65を囲む周辺顔とは、主検出顔65の左にある周辺顔62、上にある周辺顔64、下にある周辺顔66、そして右にある周辺顔68である。次に、周辺顔74、76、78に囲まれた、すなわち周辺顔74の下、周辺顔76の上、かつ周辺顔78の左にある顔75を主検出顔75として決定する。すなわち、図7においてID10が付けられた顔75を主検出顔75として検出する。そして、顔追尾部116及びAF部118に、主検出顔75のID及び顔情報を送信する。これにより、AF部118は主検出顔45にピントを合わせることができ、顔追尾部116は主検出顔45に枠を表示できる。
次に、図8を用いて、顔検出処理について説明する。顔検出処理は、主検出顔を追尾する処理であって、デジタルカメラ100が主検出顔を追尾する撮影モードにあるとき主にDSP112及び主検出顔判断部114によって反復実行される処理である。以下に、第n+1の静止画像に対して実行される顔検出処理について説明する。第nの静止画像に対する顔検出処理は既に実行済みである。
まず、ステップS81において、後述する主検出顔決定処理を実行する。主検出顔決定処理は検出した顔の中から主検出顔を決定する処理であって、第n+1の静止画像から主検出顔を検出する。
次にステップS82では、第nの静止画像において検出された主検出顔のIDと、第n+1の静止画像において検出された主検出顔のIDとが、同じであるか否かを判断する。同じである場合、処理はステップS83に進み、同じでない場合、処理はステップS84に進む。
ステップS83では、主検出顔のIDが同じであるために顔追尾が成功したと判断し、主検出顔の上下左右にある周辺顔のIDと主検出顔のIDとを第2のメモリ115に保存する。そして処理を終了する。
ステップS84では、第n+1の静止画像において検出された顔の中に、第nの静止画像における主検出顔のIDと同じIDを持つ顔があるか否かを判断する。同じIDを持つ顔がある場合、処理はステップS85に進み、同じIDを持つ顔がない場合、処理はステップS86に進む。
ステップS85では、第nの静止画像における主検出顔のIDと同じIDを持つ顔を、第n+1の静止画像における主検出顔として決定する。そして、前述のステップS83に進む。
ステップS86では、後述する顔判定処理を実行する。顔判定処理は、DSP112が主検出顔を見失ったときに実行する処理であって、第n+1の静止画像から主検出顔を検出する。
ステップS87では、顔判定処理で主検出顔が検出できたか否かを判断する。主検出顔を検出できた場合、処理はステップS85に進み、検出した顔を主検出顔として決定する。主検出顔を検出できない場合、処理はステップS88に進む。
ステップS88では、顔追尾が失敗したと判断して、第nの静止画像において検出された主検出顔の上下左右にある周辺顔のIDと主検出顔のIDとを第2のメモリ115に保存する。そして処理を終了する。
次に、図9を用いて、主検出顔決定処理について説明する。主検出顔決定処理は、検出した顔の中から主検出顔を決定する処理であって、顔検出処理のステップS81において主に主検出顔判断部114により実行される。以下に、第n+1の静止画像に対して実行される主検出顔決定処理について説明する。第nの静止画像に対する主検出顔決定処理は既に実行済みである。
主検出顔決定処理は、前回検出した、つまり第nの静止画像で検出した主検出顔と、第n+1の静止画像に含まれる全ての顔とを比較して、前回検出した顔に最も近似する顔を主検出顔として決定する。顔の比較は、静止画像における顔の大きさ、位置、角度、目の位置を考慮して行われる。より詳細に説明すると、静止画像における顔の大きさ、位置、角度、目の位置に関して近似する度合いを評価し、近似する度合いに応じて評価値を算出する。そして、顔の大きさ、位置、角度、目の位置に関して算出された評価値を合計する。この合計値が最も高い顔を主検出顔として決定する。以下、主検出顔決定処理について詳細に説明する。
まず、ステップS91において、第n+1の静止画像に含まれる全ての顔についてステップS92からS100における処理を実行したか否かを判断する。全ての顔についてこれらの処理を実行した場合、処理は終了する。実行していない場合、処理を実行していない顔に対してステップS92からS100の処理を実行する。
ステップS92では、第n+1の静止画像に占める顔の大きさと第nの静止画像に占める主検出顔の大きさとの差が所定範囲内にあるかについて判断する。所定範囲内にある場合、処理はステップS93に進み、サイズ用評価値に所定の数を加える。所定範囲内にない場合、処理はステップS94に進む。
ステップS94では、第n+1の静止画像における顔の位置と第nの静止画像における主検出顔の位置との距離が所定範囲内にあるかについて判断する。所定範囲内にある場合、処理はステップS95に進み、距離用評価値に所定の数を加える。所定範囲内にない場合、処理はステップS96に進む。
ステップS96では、第n+1の静止画像における顔の傾きと第nの静止画像における主検出顔の傾きとの差が所定範囲内にあるかについて判断する。所定範囲内にある場合、処理はステップS97に進み、角度用評価値に所定の数を加える。所定範囲内にない場合、処理はステップS98に進む。
ステップS98では、第n+1の静止画像における顔の目の位置と第nの静止画像における主検出顔の目の位置との差が所定範囲内にあるかについて判断する。所定範囲内にある場合、処理はステップS99に進み、目用評価値に所定の数を加える。所定範囲内にない場合、処理はステップS100に進む。
ステップS100では、サイズ用評価値、距離用評価値、角度用評価値、及び目用評価値を合計して得られる合計評価値が、第n+1の静止画像において合計評価値を算出した顔の中で最も大きいか否かを判断する。最も大きい場合、処理はステップS101に進み、現在、合計評価値を算出した顔を主検出顔と決定して、現在、合計評価値を算出した顔のIDに主検出顔のIDを変更する。最も大きくない場合、処理はステップS91に戻る。
次に、図2、3、及び10を用いて、顔判定処理について説明する。顔判定処理は、第n+1の静止画像30において検出された顔の中に、第nの静止画像20における主検出顔45のIDと同じIDを持つ顔がない場合、すなわちDSP112が主検出顔45を見失ったときに実行される処理であって、第n+1の静止画像30から主検出顔45を検出する処理である。顔検出処理のステップS86において主に主検出顔判断部114により実行される。以下に、第n+1の静止画像30に対して実行される顔判定処理について説明する。第nの静止画像20において主検出顔45は既に決定済みである。
顔判定処理では、まず、第n+1の静止画像30に含まれる顔が、前回検出した、つまり第nの静止画像20で検出した顔と同じIDを持つかを判断する。そして、同じIDを持つ顔の数の増減に応じて、第1から第3の主検出顔検出処理を実行する。以下、主検出顔決定処理について詳細に説明する。なお、前述したように、図2は第nの静止画像20を示し、図3は第n+1の静止画像30を示す。
まず、ステップS1001において、第n+1の静止画像30に含まれる全ての顔についてステップS1002からS1009における処理を実行したか否かを判断する。全ての顔についてこれらの処理を実行している場合、処理はステップS1010に進む。実行していない場合、処理を実行していない顔に対してステップS1002からS1009の処理を実行する。
ステップS1002では、現在判定している顔のIDが、第nの静止画像20における主検出顔25の上にある周辺顔のIDと同じであるか否かを判断する。同じである場合、処理はステップS1003に進み、同じでない場合、処理はステップS1004に進む。すなわち図3における顔31が現在判定している顔であるとすると、顔31のID1が、第n+1の静止画像30における主検出顔25の上にある周辺顔24のID4と同じであるか否かを判断する。この場合、IDが異なるため、処理はステップS1004に進む。あるいは、図3における顔34が現在判定している顔であるとすると、顔34のID4は、第n+1の静止画像30における周辺顔24のID4と同じであるため、処理はステップS1003に進む。
ステップS1003では、現在判定している顔の垂直方向に対する座標を第2のメモリ115に記憶する。記憶した座標を上方向座標と呼ぶ。図3における顔34が現在判定している顔であるとすると、顔34の垂直方向の座標を第2のメモリ115に記憶する。そして、処理はステップS1001に戻る。
ステップS1004では、現在判定している顔のIDが、第nの静止画像20における主検出顔25の下にある周辺顔のIDと同じであるか否かを判断する。同じである場合、処理はステップS1005に進み、同じでない場合、処理はステップS1006に進む。すなわち図3における顔31が現在判定している顔であるとすると、顔31のID1が、第nの静止画像20における主検出顔25の下にある周辺顔26のID6と同じであるか否かを判断する。この場合、IDが異なるため、処理はステップS1006に進む。あるいは、図3における顔36が現在判定している顔であるとすると、顔36のID6は、第nの静止画像20における周辺顔26のID6と同じであるため、処理はステップS1005に進む。
ステップS1005では、現在判定している顔の垂直方向に対する座標を第2のメモリ115に記憶する。記憶した座標を下方向座標と呼ぶ。図3における顔36が現在判定している顔であるとすると、顔36の垂直方向の座標を第2のメモリ115に記憶する。そして、処理はステップS1001に戻る。
ステップS1006では、現在判定している顔のIDが、第nの静止画像20における主検出顔25の左にある周辺顔のIDと同じであるか否かを判断する。同じである場合、処理はステップS1007に進み、同じでない場合、処理はステップS1008に進む。すなわち図3における顔31が現在判定している顔であるとすると、顔31のID1が、第nの静止画像20における主検出顔25の左にある周辺顔22のID2と同じであるか否かを判断する。この場合、IDが異なるため、処理はステップS1008に進む。あるいは、図3における顔32が現在判定している顔であるとすると、顔32のID2は、第nの静止画像20における周辺顔22のID2と同じであるため、処理はステップS1007に進む。
ステップS1007では、現在判定している顔の水平方向に対する座標を第2のメモリ115に記憶する。記憶した座標を左方向座標と呼ぶ。図3における顔32が現在判定している顔であるとすると、顔32の水平方向の座標を第2のメモリ115に記憶する。そして、処理はステップS1001に戻る。
ステップS1008では、現在判定している顔のIDが、第nの静止画像20における主検出顔25の右にある周辺顔のIDと同じであるか否かを判断する。同じである場合、処理はステップS1009に進み、同じでない場合、処理はステップS1001に戻る。すなわち図3における顔31が現在判定している顔であるとすると、顔31のID1が、第nの静止画像20における主検出顔25の右にある周辺顔28のID8と同じであるか否かを判断する。この場合、IDが異なるため、処理はステップS1001に戻る。あるいは、図3における顔38が現在判定している顔であるとすると、顔38のID8は、第nの静止画像20における周辺顔28のID8と同じであるため、処理はステップS1009に進む。
ステップS1009では、現在判定している顔の水平方向に対する座標を第2のメモリ115に記憶する。記憶した座標を右方向座標と呼ぶ。図3における顔38が現在判定している顔であるとすると、顔38の水平方向の座標を第2のメモリ115に記憶する。そして、処理はステップS1001に戻る。
ステップS1001からS1009を繰り返すことにより、第n+1の静止画像30における周辺顔とその位置を検出することができる。
ステップS1010では、第nの静止画像20に含まれる周辺顔の状態と、第n+1の静止画像30に含まれる周辺顔の状態とを比較する。第nの静止画像20の主検出顔25の上下左右全てに周辺顔が存在し、かつそれらの周辺顔全てが、第n+1の静止画像30に存在するとき、処理はステップS1011に進む。このとき、第nの静止画像20に含まれる周辺顔の数と、第n+1の静止画像30に含まれる周辺顔の数とが同じである。ステップS1011では、第1の主検出顔検出処理を実行する。
ステップS1010において、第nの静止画像20の主検出顔25の上下左右のいずれかに周辺顔が存在しないとき、処理はステップS1012に進む。このとき、第nの静止画像20に含まれる周辺顔の数よりも、第n+1の静止画像30に含まれる周辺顔の数の方が多くなる。ステップS1012では、第2の主検出顔検出処理を実行する。
ステップS1010において、第nの静止画像20の主検出顔25の上下左右全てに周辺顔が存在し、かつそれらの周辺顔のうち1以上の周辺顔が第n+1の静止画像30に存在しないとき、処理はステップS1013に進む。このとき、第nの静止画像20に含まれる周辺顔の数よりも、第n+1の静止画像30に含まれる周辺顔の数の方が少ない。ステップS1013では、第3の主検出顔検出処理を実行する。
そして、ステップS1011、S1012、及びS1013を実行した後に、処理が終了する。
顔判定処理を実行することにより、静止画像から主検出顔を検出することができる。
次に、図2、3、11を用いて、第1の主検出顔検出処理について詳細に説明する。前述のように、第1の主検出顔検出処理は、DSP112が主検出顔を見失ったときに主検出顔判断部114が主検出顔を検出する処理であって、第nの静止画像20で検出された顔の数と第n+1の静止画像30で検出された顔の数とが同じ数であるときに主検出顔35を検出する処理である。
まず、ステップS1101において、第n+1の静止画像30に含まれる全ての顔についてステップS1102からS1105における処理を実行したか否かを判断する。全ての顔についてこれらの処理を実行している場合、処理はステップS1107に進む。実行していない場合、処理を実行していない顔に対してステップS1102からS1105の処理を実行する。
ステップS1102では、現在判定している顔の垂直方向における座標が、前回の静止画像、つまり第nの静止画像20において検出した上方向座標よりも下にあるか否かを判断する。下にある場合、処理はステップS1103に進み、下にない場合、処理はステップS1101に戻る。図3における顔31が現在判定している顔であるとすると、顔31の垂直方向における座標が、第nの静止画像20における周辺顔24の垂直方向における座標と略同じ垂直位置にあって下にないため、処理はステップS1101に戻る。あるいは、図3における顔35が現在判定している顔であるとすると、顔35は周辺顔24よりも下にあるため、処理はステップS1103に進む。
ステップS1103では、現在判定している顔の垂直方向における座標が、第nの静止画像20において検出した下方向座標よりも上にあるか否かを判断する。上にある場合、処理はステップS1104に進み、上にない場合、処理はステップS1101に戻る。図3における顔33が現在判定している顔であるとすると、顔33の垂直方向における座標が、第nの静止画像20における周辺顔26の垂直方向における座標と略同じ垂直位置にあって上にないため、処理はステップS1101に戻る。あるいは、図3における顔35が現在判定している顔であるとすると、顔35は周辺顔24よりも上にあるため、処理はステップS1104に進む。
ステップS1104では、現在判定している顔の水平方向における座標が、第nの静止画像20において検出した左方向座標よりも右にあるか否かを判断する。右にある場合、処理はステップS1105に進み、右にない場合、処理はステップS1101に戻る。図3における顔33が現在判定している顔であるとすると、顔33の水平方向における座標が、第nの静止画像20における周辺顔22の水平方向における座標と略同じ水平位置にあって右にないため、処理はステップS1101に戻る。あるいは、図3における顔35が現在判定している顔であるとすると、顔35は周辺顔24よりも右にあるため、処理はステップS1105に進む。
ステップS1105では、現在判定している顔の水平方向における座標が、第nの静止画像20において検出した右方向座標よりも左にあるか否かを判断する。左にある場合、処理はステップS1106に進み、左にない場合、処理はステップS1101に戻る。図3における顔39が現在判定している顔であるとすると、顔39の水平方向における座標が、第nの静止画像20における周辺顔28の水平方向における座標と略同じ水平位置にあって左にないため、処理はステップS1101に戻る。あるいは、図3における顔35が現在判定している顔であるとすると、顔35は周辺顔24よりも左にあるため、処理はステップS1106に進む。
ステップS1106では、主検出顔45を検出したというフラグを立てて処理を終了する。また、ステップS1107では、主検出顔45を検出できなかったというフラグを立てて処理を終了する。
第1の主検出顔検出処理を実行することにより、主検出顔を見失っても、既知の周辺顔を用いて主検出顔を検出することができる。
次に、図4、5、12を用いて、第2の主検出顔検出処理について詳細に説明する。前述のように、第2の主検出顔検出処理は、DSP112が主検出顔を見失ったときに主検出顔判断部114が主検出顔を検出する処理であって、第nの静止画像40で検出された顔の数よりも第n+1の静止画像50で検出された顔の数が多いときに主検出顔を検出する処理である。
まず、ステップS1201において、第n+1の静止画像50に含まれる全ての顔についてステップS1202からS1205における処理を実行したか否かを判断する。全ての顔についてこれらの処理を実行している場合、処理はステップS1207に進む。実行していない場合、処理を実行していない顔に対してステップS1202からS1205の処理を実行する。
ステップS1202では、現在判定している顔の垂直方向における座標が、前回の静止画像、つまり第nの静止画像40において検出した上方向座標よりも下にあるか、かつ第nの静止画像40において主検出顔45の上方向に顔を検出できなかったかを判断する。第2のメモリ115に第nの静止画像40における上方向座標が記憶されていない場合、第nの静止画像40において主検出顔45の上方向に顔を検出できなかったと判断する。上方向座標よりも下にあり、かつ上方向に顔を検出できなかった場合に、処理はステップS1203に進み、いずれか一方、あるいは双方に該当しない場合、処理はステップS1201に戻る。図5における顔51が現在判定している顔であるとすると、第nの静止画像40において主検出顔45の上方向に顔を検出できているが、顔51の垂直方向における座標が、第nの静止画像40における周辺顔44の上方向座標と略同じ垂直位置にあって下にないため、処理はステップS1201に戻る。あるいは、図5における顔55が現在判定している顔であるとすると、顔55は周辺顔44よりも下にあり、かつ第nの静止画像40において主検出顔45の上方向に周辺顔44を検出できているため、処理はステップS1203に進む。
ステップS1203では、現在判定している顔の垂直方向における座標が、第nの静止画像40において検出した下方向座標よりも上にあるか、かつ第nの静止画像40において主検出顔45の下方向に顔を検出できなかったかを判断する。第2のメモリ115に第nの静止画像40における下方向座標が記憶されていない場合、第nの静止画像40において主検出顔45の下方向に顔を検出できなかったと判断する。下方向座標よりも上にあり、かつ下方向に顔を検出できなかった場合に、処理はステップS1204に進み、いずれか一方、あるいは双方に該当しない場合、処理はステップS1201に戻る。図5における顔59が現在判定している顔であるとすると、第nの静止画像40において主検出顔45の下方向に顔を検出できているが、顔59の垂直方向における座標が、第nの静止画像40における周辺顔46の下方向座標よりも垂直方向上にないため、処理はステップS1201に戻る。あるいは、図5における顔55が現在判定している顔であるとすると、顔55は周辺顔46よりも上にあり、かつ第nの静止画像40において主検出顔45の下方向に周辺顔46を検出できているため、処理はステップS1204に進む。
ステップS1204では、現在判定している顔の水平方向における座標が、第nの静止画像40において検出した左方向座標よりも右にあるか、かつ第nの静止画像40において主検出顔45の左方向に顔を検出できなかったかを判断する。第2のメモリ115に第nの静止画像40における左方向座標が記憶されていない場合、第nの静止画像40において主検出顔45の左方向に顔を検出できなかったと判断する。左方向座標よりも右にあり、かつ左方向に顔を検出できなかった場合、処理はステップS1205に進み、いずれか一方、あるいは双方に該当しない場合、処理はステップS1201に戻る。図5における顔52が現在判定している顔であるとすると、第nの静止画像40において主検出顔45の左方向に周辺顔を検出できていないため、顔52の水平方向における座標が、第nの静止画像40における周辺顔の左方向座標よりも右にあるか判断せずに、処理はステップS1201に戻る。図5における顔55が現在判定している顔である場合であっても、第nの静止画像40において主検出顔45の左方向に周辺顔を検出できていないため、処理はステップS1201に戻る。
ステップS1205では、現在判定している顔の水平方向における座標が、第nの静止画像40において検出した右方向座標よりも左にあるか、かつ第nの静止画像40において主検出顔45の右方向に顔を検出できなかったかを判断する。第2のメモリ115に第nの静止画像40における右方向座標が記憶されていない場合、第nの静止画像40において主検出顔45の右方向に顔を検出できなかったと判断する。右方向座標よりも左にあり、かつ右方向に顔を検出できなかった場合、処理はステップS1206に進み、いずれか一方、あるいは双方に該当しない場合、処理はステップS1201に戻る。図5における顔59が現在判定している顔であるとすると、第nの静止画像40において主検出顔45の右方向に顔を検出できているが、顔59の水平方向における座標が、第nの静止画像40における周辺顔48の右方向座標よりも水平方向左にないため、処理はステップS1201に戻る。あるいは、図5における顔55が現在判定している顔であるとすると、顔55は周辺顔48よりも右にあり、かつ第nの静止画像40において主検出顔45の右方向に周辺顔48を検出できているため、処理はステップS1208に進む。
ステップS1206では、主検出顔55を検出したというフラグを立てて処理を終了する。また、ステップS1207では、主検出顔55を検出できなかったというフラグを立てて処理を終了する。
第nの静止画像40において検出した周辺顔よりも多くの周辺顔を第n+1の静止画像50において見つけた場合、新たに見つけた周辺顔と主検出顔45との位置関係は不明である。そこで第2の主検出顔検出処理では、第nの静止画像40と第n+1の静止画像50の双方において検出できた周辺顔を使用して主検出顔45を検出する。これにより、主検出顔を見失っても、既知の周辺顔を用いて主検出顔を検出することができる。
次に、図6、7、13を用いて、第3の主検出顔検出処理について詳細に説明する。前述のように、第3の主検出顔検出処理は、DSP112が主検出顔を見失ったときに主検出顔判断部114が主検出顔を検出する処理であって、第nの静止画像60で検出された顔の数よりも第n+1の静止画像70で検出された顔の数が少ないときに主検出顔を検出する。
まず、ステップS1301において、第n+1の静止画像70に含まれる全ての顔についてステップS1302からS1305における処理を実行したか否かを判断する。全ての顔についてこれらの処理を実行している場合、処理はステップS1307に進む。実行していない場合、処理を実行していない顔に対してステップS1302からS1305の処理を実行する。
ステップS1302では、現在判定している顔の垂直方向における座標が、前回の静止画像、つまり第nの静止画像60において検出した上方向座標よりも下にあるか、かつ現在判定中の静止画像40、つまり第n+1の静止画像70において主検出顔45の上方向に顔を検出できなかったかを判断する。第2のメモリ115に第n+1の静止画像70における上方向座標が記憶されていない場合、第n+1の静止画像70において主検出顔45の上方向に顔を検出できなかったと判断する。上方向座標よりも下にあり、かつ上方向に顔を検出できなかった場合に、処理はステップS1303に進み、いずれか一方、あるいは双方に該当しない場合、処理はステップS1301に戻る。図7における顔71が現在判定している顔であるとすると、顔71の垂直方向における座標が、第nの静止画像60における周辺顔64の上方向座標と略同じ垂直位置にあって下になく、かつ第nの静止画像60において主検出顔45の上方向に顔を検出できているため、処理はステップS1301に戻る。あるいは、図7における顔75が現在判定している顔であるとすると、顔75は周辺顔64よりも下にあり、かつ第nの静止画像60において主検出顔65の上方向に周辺顔64を検出できているため、処理はステップS1303に進む。
ステップS1303では、現在判定している顔の垂直方向における座標が、第nの静止画像60において検出した下方向座標よりも上にあるか、かつ第n+1の静止画像70において主検出顔75の下方向に顔を検出できなかったかを判断する。第2のメモリ115に第n+1の静止画像70における下方向座標が記憶されていない場合、第n+1の静止画像70において主検出顔45の下方向に顔を検出できなかったと判断する。下方向座標よりも上にあり、かつ下方向に顔を検出できなかった場合に、処理はステップS1304に進み、いずれか一方、あるいは双方に該当しない場合、処理はステップS1301に戻る。図7における顔79が現在判定している顔であるとすると、第n+1の静止画像70において主検出顔75の下方向に顔を検出できているが、顔79の垂直方向における座標が、第nの静止画像60における周辺顔66の下方向座標よりも垂直方向上にないため、処理はステップS1301に戻る。あるいは、図7における顔75が現在判定している顔であるとすると、顔75は周辺顔66よりも上にあり、かつ第n+1の静止画像70において主検出顔75の下方向に周辺顔76を検出できているため、処理はステップS1304に進む。
ステップS1304では、現在判定している顔の水平方向における座標が、第nの静止画像60において検出した左方向座標よりも右にあるか、かつ第n+1の静止画像70において主検出顔75の左方向に顔を検出できなかったかを判断する。第2のメモリ115に第n+1の静止画像70における左方向座標が記憶されていない場合、第n+1の静止画像70において主検出顔75の左方向に顔を検出できなかったと判断する。左方向座標よりも右にあり、かつ左方向に顔を検出できなかった場合、処理はステップS1305に進み、いずれか一方、あるいは双方に該当しない場合、処理はステップS1301に戻る。図7における顔71が現在判定している顔であるとすると、第n+1の静止画像70において主検出顔75の左方向に周辺顔を検出できていないため、顔71の水平方向における座標が、第nの静止画像60における周辺顔62の左方向座標よりも右にあるか判断せずに、処理はステップS1301に戻る。図7における顔75が現在判定している顔である場合であっても、第n+1の静止画像70において主検出顔75の左方向に周辺顔を検出できていないため、処理はステップS1201に戻る。
ステップS1305では、現在判定している顔の水平方向における座標が、第nの静止画像60において検出した右方向座標よりも左にあるか、かつ第n+1の静止画像70において主検出顔75の右方向に顔を検出できなかったかを判断する。第2のメモリ115に第n+1の静止画像70における右方向座標が記憶されていない場合、第n+1の静止画像70において主検出顔75の右方向に顔を検出できなかったと判断する。右方向座標よりも左にあり、かつ右方向に顔を検出できなかった場合、処理はステップS1306に進み、いずれか一方、あるいは双方に該当しない場合、処理はステップS1301に戻る。図7における顔79が現在判定している顔であるとすると、第n+1の静止画像70において主検出顔75の右方向に顔を検出できているが、顔79の水平方向における座標が、第nの静止画像60における周辺顔68の右方向座標よりも水平方向左にないため、処理はステップS1301に戻る。あるいは、図7における顔75が現在判定している顔であるとすると、顔75は周辺顔68よりも右にあり、かつ第n+1の静止画像70において主検出顔75の右方向に周辺顔78を検出できているため、処理はステップS1308に進む。
ステップS1306では、主検出顔75を検出したというフラグを立てて処理を終了する。また、ステップS1307では、主検出顔75を検出できなかったというフラグを立てて処理を終了する。
第nの静止画像60において検出した周辺顔と同じ顔を第n+1の静止画像70において見つけられない場合、その周辺顔を用いて第n+1の静止画像70において主検出顔75を検出することができない。そこで第3の主検出顔検出処理では、第nの静止画像60と第n+1の静止画像70の双方において検出できた周辺顔を使用して主検出顔75を検出する。これにより、主検出顔を見失っても、既知の周辺顔を用いて主検出顔を検出することができる。
以上のように、本実施形態によれば、第nの静止画像と第n+1の静止画像において検出された顔の数が変化しても、主検出顔を検出することができる。
なお、サイズ用評価値、距離用評価値、角度用評価値、及び目用評価値に加える数は、所定の数でなく、前回の主検出顔との差に応じて変化する値であっても良い。前回の主検出顔との差が小さいほど、すなわち前回の主検出顔と近似するほど値を大きくする。
なお、顔を検出する構成として説明したが、他の任意の被写体を検出する構成であっても良い。
なお本実施形態では、主検出顔の上下左右の顔を用いて、次の静止画像の主検出顔を検出したが、主検出顔の斜め右上、斜め右下、斜め左下、及び斜め右下の顔を用いて検出しても良い。