(57)【特許請求の範囲】
【請求項１】
入力画像中の特定物体を検出する物体検出装置において、
入力画像から複数の階層画像を生成し、各階層画像毎に特定物体検出処理を行なう第１の物体検出処理を行なう手段、
特定の階層画像を生成し、その階層に対して特定物体検出処理を行なう第２の物体検出処理を行なう手段、
第１の物体検出処理によって、特定物体が検出されなかった場合には、次の入力画像に対しても、第１の物体検出処理を行なう手段、
第１の物体検出処理によって、いずれかの階層において特定物体が検出された場合には、次の入力画像に対しては、特定物体が検出された階層と同じ階層の階層画像に対して第２の物体検出処理を行なう手段、
第２の物体検出処理によって特定物体が検出された場合には、次の入力画像に対しても、特定物体が検出された階層と同じ階層の階層画像に対して第２の物体検出処理を行なう手段、ならびに
第２の物体検出処理によって、特定物体が検出されなかった場合には、次の入力画像に対しては、第１の物体検出処理を行なう手段、
を備えていることを特徴とする物体検出装置。
【請求項２】
入力画像中の特定物体を検出する物体検出装置において、
入力画像から複数の階層画像を生成し、各階層画像毎に特定物体検出処理を行なう第１の物体検出処理を行なう手段、
特定の階層画像を生成し、その階層に対して特定物体検出処理を行なう第２の物体検出処理を行なう手段、
第１の物体検出処理によって、特定物体が検出されなかった場合には、次の入力画像に対しても、第１の物体検出処理を行なう手段、
第１の物体検出処理によって、いずれかの階層において特定物体が検出された場合には、次の入力画像に対しては、特定物体が検出された階層と同じ階層の階層画像に対して第２の物体検出処理を行なう手段、
第２の物体検出処理によって特定物体が検出された場合には、次の入力画像に対しても、特定物体が検出された階層と同じ階層の階層画像に対して第２の物体検出処理を行なう手段、
第２の物体検出処理によって特定物体が検出されなかった場合には、次の入力画像に対して処理対象となる階層画像の階層を選択する階層番号選択処理を行うとともに、次の入力画像に対しては階層番号選択処理によって選択された階層の階層画像に対して第２の物体検出処理を行なう手段、ならびに
第２の物体検出処理において、特定物体が検出されない状態が所定回数連続した場合においては、次の入力画像に対しては、第１の物体検出処理を行なう手段、
を備えていることを特徴とする物体検出装置。
【請求項３】
階層番号選択処理は、最新に特定物体が検出された階層を基準階層として、基準階層を中心として交互にかつ階層が基準階層から離れていく方向に処理対象となる階層が変化するように、処理対象となる階層を決定するものであることを特徴とする請求項２に記載の物体検出装置。
【請求項４】
階層番号選択処理は、最新に特定物体が検出された階層を基準階層として、基準階層から最下位の階層または最上位の階層に向かう方向に、処理対象となる階層が変化するように、処理対象となる階層を決定するものであることを特徴とする請求項２に記載の物体検出装置。
【請求項５】
階層番号選択処理は、特定物体が検出された階層の履歴に基づいて、画像内の特定物体の大きさが変化する方向を予測し、予測した方向に処理対象となる階層が変化するように、処理対象となる階層を決定するものであることを特徴とする請求項２に記載の物体検出装置。
【請求項６】
第２の物体検出処理を行なうにあたっては、最新に検出された特定物体の位置に基づいて、処理対象となる階層画像に対して探索する領域を限定するための探索領域設定処理を行なう手段を備えていることを特徴とする請求項１乃至５に記載の物体検出装置。
【請求項７】
探索領域設定処理は、最新に検出された特定物体の位置を略中心とする所定範囲の領域に、探索領域を設定するものであることを特徴とする請求項６に記載の物体検出装置。
【請求項８】
探索領域設定処理は、最新に特定物体が検出された階層において、複数の特定物体が検出されている場合には、検出された各特定物体それぞれを略中心とする複数の所定範囲の領域を合成した領域を、探索領域として設定するものであることを特徴とする請求項６に記載の物体検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力画像から顔等の特定の物体を検出するために用いられる物体検出装置に関する。
【背景技術】
【０００２】
本出願人は、次のような物体検出装置を開発し、既に特許出願している（特願２００６−０５３３０４参照）。つまり、入力画像から複数の縮小画像を生成する。入力画像と縮小画像とから構成される複数の階層画像毎にエッジ特徴画像を生成する。各階層画像のエッジ特徴画像毎に、エッジ特徴画像内において、判定領域を走査しながら、判定領域内に特定物体が存在するか否かを判別する。
【０００３】
このような物体検出を動画像から取り込んだ入力画像に対して連続的に行なう場合、各入力画像毎に全ての階層画像を使用すると、検出精度は維持できるが処理時間が常に長くなるという問題がある。
【特許文献１】特開２０００−１３４６３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この発明は、動画像から取り込んだ入力画像に対して物体検出を連続的に行なう場合に、検出精度を維持しながら、処理時間の短縮化が図れる物体検出装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
請求項１に記載の発明は、入力画像中の特定物体を検出する物体検出装置において、入力画像から複数の階層画像を生成し、各階層画像毎に特定物体検出処理を行なう第１の物体検出処理を行なう手段、特定の階層画像を生成し、その階層に対して特定物体検出処理を行なう第２の物体検出処理を行なう手段、第１の物体検出処理によって、特定物体が検出されなかった場合には、次の入力画像に対しても、第１の物体検出処理を行なう手段、第１の物体検出処理によって、いずれかの階層において特定物体が検出された場合には、次の入力画像に対しては、特定物体が検出された階層と同じ階層の階層画像に対して第２の物体検出処理を行なう手段、第２の物体検出処理によって特定物体が検出された場合には、次の入力画像に対しても、特定物体が検出された階層と同じ階層の階層画像に対して第２の物体検出処理を行なう手段、ならびに第２の物体検出処理によって、特定物体が検出されなかった場合には、次の入力画像に対しては、第１の物体検出処理を行なう手段を備えていることを特徴とする。
【０００６】
請求項２に記載の発明は、入力画像中の特定物体を検出する物体検出装置において、入力画像から複数の階層画像を生成し、各階層画像毎に特定物体検出処理を行なう第１の物体検出処理を行なう手段、特定の階層画像を生成し、その階層に対して特定物体検出処理を行なう第２の物体検出処理を行なう手段、第１の物体検出処理によって、特定物体が検出されなかった場合には、次の入力画像に対しても、第１の物体検出処理を行なう手段、第１の物体検出処理によって、いずれかの階層において特定物体が検出された場合には、次の入力画像に対しては、特定物体が検出された階層と同じ階層の階層画像に対して第２の物体検出処理を行なう手段、第２の物体検出処理によって特定物体が検出された場合には、次の入力画像に対しても、特定物体が検出された階層と同じ階層の階層画像に対して第２の物体検出処理を行なう手段、第２の物体検出処理によって特定物体が検出されなかった場合には、次の入力画像に対して処理対象となる階層画像の階層を選択する階層番号選択処理を行うとともに、次の入力画像に対しては階層番号選択処理によって選択された階層の階層画像に対して第２の物体検出処理を行なう手段、ならびに第２の物体検出処理において、特定物体が検出されない状態が所定回数連続した場合においては、次の入力画像に対しては、第１の物体検出処理を行なう手段を備えていることを特徴とする。
【０００７】
請求項３に記載の発明は、請求項２に記載の発明において、階層番号選択処理は、最新に特定物体が検出された階層を基準階層として、基準階層を中心として交互にかつ階層が基準階層から離れていく方向に処理対象となる階層が変化するように、処理対象となる階層を決定するものであることを特徴とする。
【０００８】
請求項４に記載の発明は、請求項２に記載の発明において、階層番号選択処理は、最新に特定物体が検出された階層を基準階層として、基準階層から最下位の階層または最上位の階層に向かう方向に、処理対象となる階層が変化するように、処理対象となる階層を決定するものであることを特徴とする。
【０００９】
請求項５に記載の発明は、請求項２に記載の発明において、階層番号選択処理は、特定物体が検出された階層の履歴に基づいて、画像内の特定物体の大きさが変化する方向を予測し、予測した方向に処理対象となる階層が変化するように、処理対象となる階層を決定するものであることを特徴とする。
【００１０】
請求項６に記載の発明は、請求項１乃至５に記載の発明において、第２の物体検出処理を行なうにあたっては、最新に検出された特定物体の位置に基づいて、処理対象となる階層画像に対して探索する領域を限定するための探索領域設定処理を行なう手段を備えていることを特徴とする。
【００１１】
請求項７に記載の発明は、請求項６に記載の発明において、探索領域設定処理は、最新に検出された特定物体の位置を略中心とする所定範囲の領域に、探索領域を設定するものであることを特徴とする。
【００１２】
請求項８に記載の発明は、請求項６に記載の発明において、探索領域設定処理は、最新に特定物体が検出された階層において、複数の特定物体が検出されている場合には、検出された各特定物体それぞれを略中心とする複数の所定範囲の領域を合成した領域を、探索領域として設定するものであることを特徴とする。
【発明の効果】
【００１３】
この発明によれば、動画像から取り込んだ入力画像に対して物体検出を連続的に行なう場合に、検出精度を維持しながら、処理時間の短縮化が図れるようになる。
【発明を実施するための最良の形態】
【００１４】
本願発明の実施例を説明する前に、本出願人が既に開発した顔検出方法について説明する。
【００１５】
図１は、入力画像から生成される階層画像の例を示している。
【００１６】
この例では、縮小率Ｒを０．８に設定し、入力画像に対してＲ倍、Ｒ2 倍、Ｒ3 倍、Ｒ4 倍  、Ｒ5 倍の５枚の縮小画像を生成することにより、入力画像と５枚の縮小画像とからなる６枚の階層画像が生成されている。階層画像を特定するために、最下位の階層の画像から順に、１〜Ｎ（この例ではＮ＝６）までの階層番号が付けられているものとする。４１は判定領域を示している。この例では、判定領域は２４×２４の大きさに設定されている。判定領域の大きさは、入力画像および各縮小画像においても同じである。また、この例では、矢印で示すように、判定領域を左から右に水平方向に走査するといった動作を、上方から下方に向かって行なうようにしている。ただし、走査順はこれに限られるものではない。入力画像の他に、複数の縮小画像を生成しているのは、１種類の重みテーブルを用いて大きさが異なる顔を検出するためである。
【００１７】
図２は、顔検出処理方法を示している。
【００１８】
まず、入力画像を取得し（ステップＳ１）、階層番号（１〜Ｎ）を表す変数ｎを０に設定する（ステップＳ２）。次に、ｎを１だけインクリメントする（ステップＳ３）。そして、ｎ番目の階層画像を作成する（ステップＳ４）。次に、ｎ番目の階層画像に対して、４方向のエッジ特徴画像を生成し（ステップＳ５）、各エッジ特徴画像と後述する重みテーブルとを用いて顔検出処理を行なう（ステップＳ６）。そして、検出結果を出力する（ステップＳ７）。ｎ＝Ｎであるか否かを判別する（ステップＳ８）。ｎ＝Ｎでなければ、ステップＳ３に戻り、ステップＳ３〜Ｓ８の処理を行なう。そして、ステップＳ８でｎ＝Ｎであると判別されると、今回の処理を終了する。
【００１９】
図３は、図２のステップＳ５で行なわれる４方向のエッジ特徴画像の生成処理の手順を示している。
【００２０】
処理対象の階層画像を入力し（ステップＳ１１）、入力した階層画像に対し、例えば、図４（ａ）〜（ｄ）に示すような、水平方向、垂直方向、右斜上方向および左斜上方向の４方向それぞれに対応するPrewitt 型の微分フィルタを用いて、エッジ強調処理を行なうことにより、４方向の第１エッジ強調画像を生成する（ステップＳ１２）。次に、得られた４方向の第１エッジ強調画像の各対応する画素毎に、画素値が最大のものを残し、その他の画素値を０とすることにより、４方向の第２エッジ強調画像を生成する（ステップＳ１３）。生成された４方向の第２エッジ強調画像それぞれに対して平滑化処理を行なうことにより、４方向のエッジ特徴画像を生成する（ステップＳ１４）。そして、生成した４方向のエッジ特徴画像を出力する（ステップＳ１５）。
【００２１】
図５は、図２のステップＳ６の顔検出処理を説明するための図である。
【００２２】
ここでは、任意の下層画像に対して行なわれる顔検出処理について説明する。図５において、４１は入力画像内に設定された判定領域を示している。
【００２３】
図６は、入力画像内の判定領域に対応する４方向のエッジ特徴画像を示している。上述したように、判定領域４１の大きさは２４×２４であるが、説明の便宜上、図６においては判定領域４１の大きさを８×８の大きさとしている。図７は、判定領域４１の大きさを８×８の大きさとした場合の、重みテーブルの内容例を示している。
【００２４】
判定領域４１の大きさの各エッジ特徴画像の画素位置を、エッジ特徴画像の種類ｑ（エッジ番号：０〜３）と行番号ｙ（０〜７）と列番号ｘ（０〜７）で表すことにする。重みテーブルには、各エッジ特徴画像内の画素のうち、顔検出に用いられる特徴画素毎に、その画素における特徴量（画素値）に対応して顔らしさを表す重みｗが格納されている。
【００２５】
図７の例では、水平方向のエッジ特徴画像のエッジ番号を”０”、垂直方向のエッジ特徴画像のエッジ番号を”１”、右斜上方向のエッジ特徴画像のエッジ番号を”２”、左斜上方向水平エッジのエッジ特徴画像のエッジ番号を”３”に設定している。
【００２６】
このような重みテーブルは、例えば、Adaboostと呼ばれる公知の学習方法を利用して作成することができる（Yoav Freund, Robert E. Schapire,"A decision-theoretic generalization of on-line learning and an application to boosting", European Conference on Computational Learning Theory, September 20，1995．）。
【００２７】
なお、Adaboostは、適応的なブースティング学習方法の１つで、大量の教師サンプルをもとに、複数の弱識別器候補の中から識別に有効な弱識別器を複数個選択し、それらを重み付けして統合することによって高精度な識別器を実現する学習方法である。ここで、弱識別器とは、全くの偶然よりは識別能力は高いが、十分な精度を満たすほど高精度ではない識別器のことをいう。弱識別器の選択時には、既に選択した弱識別器がある場合、選択済の弱識別器によって誤認識してしまう教師サンプルに対して学習を重点化することによって、残りの弱識別器候補の中から最も効果の高い弱識別器を選択する。
【００２８】
顔検出処理は、画像内に設定された判定領域４１に対応する４方向のエッジ特徴画像と重みテーブルとを用いて行なわれる。
【００２９】
図８は、入力画像内に設定された判定領域に対して行なわれる顔検出処理手順を示している。
【００３０】
顔検出処理は、第１の判定ステップ（ステップＳ２１）から第６の判定ステップ（ステップＳ２６）までの判定ステップを備えている。各判定ステップは、判定に用いる特徴画素数Ｍに違いがある。第１の判定ステップ（ステップＳ２１）〜第６の判定ステップ（ステップＳ２６）では、それぞれ判定に用いる特徴画素数ＭはＭ１〜Ｍ６となっている。Ｍ１＜Ｍ２＜Ｍ３＜Ｍ４＜Ｍ５＜Ｍ６である。
【００３１】
ある判定ステップにおいて、顔が検出されなかった場合には、次の判定ステップには移行せず、当該判定領域には顔は存在しないと判定する。全ての判定ステップにおいて、顔が検出された場合にのみ、当該判定領域に顔が存在すると判定する。
【００３２】
図９は、図８の各判定ステップで実行される判定処理手順を示している。
【００３３】
以下、Ｎ個の特徴画素数を用いて判定を行なう場合について説明する。まず、判定領域を設定し（ステップＳ３１）、スコアを表す変数Ｓを０に設定するとともに、重みを取得した特徴画素の数を表す変数ｍを０に設定する（ステップＳ３２）。
【００３４】
そして、特徴画素Ｆ（ｍ）を選択する（ステップＳ３３）。Ｆ（ｍ）は、上述したように、エッジ番号ｑ、行番号ｙおよび列番号ｘで表される。なお、この例では、重みテーブルに重みが格納されている特徴画素のうち、顔検出に重要なものから順番に、Ｆ（０）、Ｆ（１）、Ｆ（２）、…として、特徴画素が選択されるようになっているものとする。
【００３５】
選択した特徴画素Ｆ（ｍ）に対応する画素値ｉ（ｍ）を、当該判定領域に対応するエッジ特徴画像から取得する（ステップＳ３４）。重みテーブルから、特徴画素Ｆ（ｍ）の画素値ｉ（ｍ）に対応する重みｗ（ｍ）を取得する（ステップＳ３５）。取得した重みｗ（ｍ）をスコアＳに加算する（ステップＳ３６）。
【００３６】
次に、ｍを１だけインクリメントする（ステップＳ３７）。そして、ｍ＝Ｍであるか否かを判別する（ステップＳ３８）。ｍ＝Ｍでなければ、ステップＳ３３に戻り、更新されたｍを用いて、ステップＳ３３〜Ｓ３８の処理を行なう。
【００３７】
Ｍ個の特徴画素に対して、ステップＳ３３〜Ｓ３６の処理が行なわれると、ステップＳ３８において、ｍ＝Ｍとなるため、ステップＳ３９に移行する。ステップＳ３９では、特徴画素数がＭ個である場合に予め定められた閾値ＴｈよりスコアＳが大きいか否かを判別する。Ｓ＞Ｔｈであれば、当該判定領域に顔が存在すると判定する（ステップＳ４０）。一方、Ｓ≦Ｔｈであれば、当該判定領域に顔が存在しないと判定する（ステップＳ４１）。
【実施例１】
【００３８】
本願発明を顔検出装置に適用した場合の実施例について説明する。
【００３９】
〔１〕顔検出装置の構成についての説明
【００４０】
図１０は、顔検出装置の構成を示している。
【００４１】
顔検出装置は、入力画像信号をデジタルデータに変換するＡＤ変換手段１１、ＡＤ変換手段１１によって得られた画像データを取込む画像取込み手段１２、画像取込み手段１２によって取り込まれた画像に基づいて階層画像を生成する階層画像生成手段１３、階層画像生成手段１３によって生成された階層画像に基づいて４方向のエッジ特徴画像を生成する４方向エッジ特徴画像生成手段１４、大量の教師サンプル（顔および非顔のサンプル画像）から求められた顔検出用の重みテーブルを記憶したメモリ１７、４方向エッジ特徴画像生成手段１４によって生成された４方向のエッジ特徴画像と重みテーブルとを用いて、入力画像に顔が存在するか否かを判定する顔判定手段１５、顔判定手段１５の検出結果を出力する検出結果出力手段１６および各部を制御する制御手段２０を備えている。
【００４２】
検出結果出力手段１６は、顔が検出された場合には、入力画像を基準として、検出された顔の大きさと位置とを出力する。検出結果出力手段１６の検出結果は制御手段２０に与えられる。
【００４３】
〔２〕顔検出装置による顔検出方法の考え方についての説明
【００４４】
この顔検出装置による顔検出方法の考え方について説明する。ここでは、入力画像に顔が存在する場合には、１種類の大きさの顔のみが存在するものとする。
【００４５】
まず、入力画像を取込み、取込んだ入力画像に対して、全階層検出モードによる顔検出処理を行う。全階層検出モードによる顔検出処理は、図２で示した従来例と同様な処理であり、図１で示されるような、予め定められた数の階層画像（この例では、６枚の階層画像）の全てに対して、顔検出処理を行う。全階層検出モードによる顔検出処理を行なった結果、いずれの階層画像においても顔が検出されなかった場合には、次の入力画像を取込み、取込んだ入力画像に対して全階層検出モードによる顔検出処理を行う。
【００４６】
全階層検出モードによる顔検出処理を行なった結果、いずれか１つの階層画像において顔が検出された場合には、次の入力画像を取込み、取り込んだ入力画像に対して単階層検出モードによる顔検出処理を行う。つまり、前回、顔が検出された階層画像に対応する１つの階層画像に対してのみ、顔検出処理を行う。
【００４７】
単階層検出モードによる顔検出処理を行なった結果、顔が検出された場合には、次の入力画像を取込み、取り込んだ入力画像に対して、再度、単階層検出モードによる顔検出処理を行う。この場合には、処理対象となる１つの階層画像の階層番号は変更されない。
【００４８】
単階層検出モードによる顔検出処理を行なった結果、いずれの階層画像においても顔が検出されなかった場合には、次の入力画像を取込み、取込んだ入力画像に対して、再度、単階層検出モードによる顔検出処理を行う。ただし、この場合には、処理対象となる１つの階層画像の階層番号を変更する。単階層検出モードによる顔検出処理において顔が検出されない状態が、予め定められた所定回数にわたって連続した場合には、次の取込み画像に対しては全階層検出モードによる顔検出処理を行う。
【００４９】
なお、単階層検出モードによる顔検出処理において顔が検出されなかった場合には、次に取り込んだ入力画像に対して、全階層検出モードによる顔検出処理を行うようにしてもよい。
【００５０】
この顔検出装置による顔検出方法では、取り込んだ全ての入力画像に対して従来例と同様な全階層検出モードによる顔検出処理を行なうのではなく、条件によっては取り込んだ入力画像に対して１つの階層画像に対してのみ顔検出処理を行なう単階層検出モードによる顔検出処理を行なうので、取り込んだ全ての入力画像に対して従来例と同様な全階層検出モードによる顔検出処理を行なう場合に比べて、処理時間の短縮化が図れる。
【００５１】
また、デジタルカメラから入力される表示用スルー画像のような動画像では、画像内の顔の大きさが変化することは少ないと考えられるので、単階層検出モードによる顔検出処理でも顔を検出できる可能性は高く、検出精度もさほど低下しないと考えられる。
【００５２】
また、ズーム操作によって画像内の顔の大きさが変化する場合もあるが、単階層検出モードによる顔検出処理で顔が検出できない場合には、次の取込み画像に対しては、処理対象となる１つの階層画像の階層を変更して単階層検出モードによる顔検出処理を行なうことにより、画像内の顔の大きさが変化する場合にも、単階層検出モードによる顔検出処理において顔を検出できる可能性が高く、検出精度もさほど低下しないと考えられる。
【００５３】
〔３〕顔検出装置によって行なわれる全体的な処理についての説明
【００５４】
図１１は、顔検出装置によって行なわれる全体的な処理手順を示している。図１１は、入力画像を取り込んでから、次の入力画像を取り込むまでに行なわれる処理の手順を示している。
【００５５】
上述したように、この顔検出装置では、単階層検出モードによる顔検出処理において顔が検出されない状態の連続回数が予め定められた所定回数（限界値）に達した場合には、次の取込み画像に対しては全階層検出モードによる顔検出処理を行う。ｋは、単階層検出モードによる顔検出処理において顔が検出されない状態の連続回数を記憶するための変数である。Ｋは、上記限界値を示す値である。なお、この実施例では、単階層検出モードによる顔検出処理において顔が検出されない状態の連続回数ｋが予め定められた所定回数Ｋに達していない場合においても、次回において全階層検出モードによる顔検出処理を行なう場合がある。
【００５６】
フラグＦａは、今回取り込んだ画像に対して、全階層検出モードによる顔検出処理を行なうか、単階層検出モードによる顔検出処理を行なうかを判定するための検出モード判定用フラグである。フラグＦａの初期値は０である。フラグＦｂは、単階層検出モードによる顔検出処理において顔が検出されない状態の連続回数ｋが予め定められた所定回数Ｋに達していない場合において、次回において全階層検出モードによる顔検出処理を行なうか単階層検出モードによる顔検出処理を行なうかを判定するためのフラグである。フラグＦｂの初期値は０である。
【００５７】
まず、入力画像を取り込む（ステップＳ１０１）。次に、Ｆａ＝１であるか否かを判別する（ステップＳ１０２）。Ｆａの初期値は０である。
【００５８】
Ｆａ＝０である場合には、全階層検出モードによる顔検出処理を実行する（ステップＳ１０３）。図１２は、全階層検出モードによる顔検出処理手順を示している。図１２のステップＳ２０１〜Ｓ２０７は、それぞれ図２のステップＳ２〜Ｓ８に対応している。全階層検出モードによる顔検出処理では、上記ステップＳ１０１で取り込まれた画像に基づいて、図２で説明した処理と同様な処理が行なわれる。つまり、階層番号ｎ＝１〜ｎ＝Ｎ（この例では、Ｎ＝６）の全ての階層画像に対して、顔検出処理が行なわれる。この場合には、各階層画像の全体の領域にわたって、判定領域を走査する。
【００５９】
上記ステップＳ１０３の全階層検出モードによる顔検出処理において、顔が検出されなかった場合には（ステップＳ１０４でＮＯ）、ステップＳ１０１に戻る。この場合には、入力画像が取り込まれ、取り込まれた画像に対して、全階層検出モードによる顔検出処理が実行される。
【００６０】
上記ステップＳ１０３の全階層検出モードによる顔検出処理において、１つの階層画像に対して顔が検出された場合には（ステップＳ１０４でＹＥＳ）、ｋ＝０とした後（ステップＳ１０５）、顔が検出された階層画像の階層番号ｐを取得する（ステップＳ１０６）。そして、次回において処理対象となる階層画像の階層番号ｎとしてｐを設定する（ステップＳ１０７）。したがって、次回においては、今回、顔が検出された階層画像と同じ階層の階層画像に対して、単階層検出モードによる顔検出処理が行なわれることになる。また、次回において探索する領域を設定する（ステップＳ１０８）。
【００６１】
次回において探索する領域を、ステップＳ１０７で設定された階層番号ｎに対応する階層画像の全体の領域としてもよいが、処理時間の短縮化を図るために、図１３に示すように、最新に検出された顔の位置を中心とする所定の領域４２に探索領域設定することが好ましい。次回においては、設定された探索領域内において、判定領域４１が走査されることになる。次回において探索する領域を設定すると、Ｆａ＝１とした後（ステップＳ１０９）、ステップＳ１０１に戻る。
【００６２】
上記ステップＳ１０２において、Ｆａ＝１と判別された場合には、単階層検出モードによる顔検出処理を実行する（ステップＳ１１０）。図１４は、単階層検出モードによる顔検出処理手順を示している。単階層検出モードによる顔検出処理では、前回においてステップＳ１０７で設定された階層番号ｎによって指定される階層画像に対してのみ顔検出処理が行なわれる。また、前回のステップＳ１０８で設定された探索領域内に対してのみ顔検出処理が行なわれる。つまり、まず、上記ステップＳ１０１で取り込まれた画像に基づいて、階層番号ｎに対応する階層画像を生成する（ステップＳ２１１）。そして、生成した階層画像に対して、４方向のエッジ特徴画像を生成し（ステップＳ２１２）、各エッジ特徴画像と重みテーブルとを用いて顔検出処理を行なう（ステップＳ２１３）。そして、検出結果を出力する（ステップＳ２１４）。
【００６３】
上記ステップＳ１１０の単階層検出モードによる顔検出処理において、顔が検出された場合には（ステップＳ１１１でＹＥＳ）、ｋ＝０とした後（ステップＳ１０５）、顔が検出された階層画像の階層番号ｐを取得する（ステップＳ１０６）。そして、次回において処理対象となる階層画像の階層番号ｎとしてｐを設定する（ステップＳ１０７）。したがって、次回においても、今回と同じ階層の１つの階層画像に対して、単階層検出モードによる顔検出処理が行なわれることになる。また、次回において探索する領域を設定する（ステップＳ１０８）。そして、Ｆａ＝１とした後（ステップＳ１０９）、ステップＳ１０１に戻る。
【００６４】
上記ステップＳ１１０の単階層検出モードによる顔検出処理において、顔が検出されなかった場合には（ステップＳ１１１でＮＯ）、ｋを１だけインクリメントする（ステップＳ１１２）。そして、ｋがＫに達したか否かを判別する（ステップＳ１１３）。ｋがＫに達してないと判別した場合には、次回において処理対象となる１つの階層画像を選択するための処理（階層番号選択処理）を実行する（ステップＳ１１４）。階層番号選択処理は、単階層検出モードによる顔検出処理において顔が検出されなかった場合に、次回の単階層検出モードによる顔検出処理において処理対象となる階層画像の階層番号ｎを決定するための処理である。この階層番号選択処理の詳細については後述する。
【００６５】
階層番号選択処理によって次回において処理対象となる階層画像の階層番号ｎが決定されると、Ｆｂ＝１か否かを判別する（ステップＳ１１５）。Ｆｂは、例えば、階層番号選択処理によって決定された階層番号ｎが、階層画像が存在しない階層番号（０，Ｎ＋１）である場合等に、階層番号選択処理においてセット（Ｆｂ＝１）される。
【００６６】
ステップＳ１１５において、Ｆｂ＝０と判別した場合には、次回において探索する領域を設定する（ステップＳ１０８）。そして、Ｆａ＝１とした後（ステップＳ１０９）、ステップＳ１０１に戻る。
【００６７】
上記ステップＳ１１５において、Ｆｂ＝１と判別した場合には、Ｆａ＝０、Ｆｂ＝０とした後（ステップＳ１１６）、ステップＳ１０１に戻る。上記ステップＳ１１３において、ｋ＝Ｋであると判別した場合にも、Ｆａ＝０、Ｆｂ＝０とした後（ステップＳ１１６）、ステップＳ１０１に戻る。
【００６８】
〔４〕階層番号選択処理についての説明
【００６９】
図１５は、階層番号選択処理（図１１のステップＳ１１４の処理）の詳細な手順を示している。
【００７０】
この階層番号選択処理の基本的な考え方について説明する。図１６の丸数字は、単階層検出モードによる顔検出処理において顔未検出状態が連続した場合に、処理対象となる階層画像がどのような順番で変化せしめられるかを示している。１回目の単階層検出モードでの処理対象の階層画像の階層番号ｎが”３”であるとすると、それ以降の単階層検出モードによる顔検出処理において処理対象となる階層画像の階層番号ｎは、”２”、”４”、”１”、”５”と変化する。
【００７１】
この階層番号選択処理では、まず、連続未検出回数ｋを取得する（ステップＳ２２１）。また、今回の単階層検出モードによる顔検出処理で処理対象とされた１つの階層画像の階層番号ｎを取得する（ステップＳ２２２）。
【００７２】
次に、次式（１）に基づいて、次回の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎを決定する（ステップＳ２２３）。
【００７３】
ｎ＝ｎ＋ｋ＊（−１）k       …（１）
【００７４】
そして、ｎが”０”または”Ｎ＋１”のいずれかに該当するかを判別する（ステップＳ２２４）。ｎが”０”または”Ｎ＋１”のいずれかに該当する場合には、Ｆｂ＝１とする（ステップＳ２２５）。そして、今回の階層番号選択処理を終了する。上記ステップＳ２２４において、ｎが”０”または”Ｎ＋１”のいずれにも該当しない場合には、今回の階層番号選択処理を終了する。
【００７５】
〔５〕階層番号選択処理の変形例についての説明
【００７６】
図１７は、階層番号選択処理の他の例を示している。
【００７７】
この階層番号選択処理の基本的な考え方について説明する。階層番号決定モードとして、画像内の顔が小さくなる方向に変化していると予測して階層番号ｎを決定する第１の階層番号決定モードと、画像内の顔が大きくなる方向に変化していると予測して階層番号ｎを決定する第２の階層番号決定モードとがあり、いずれか一方の階層番号決定モードが予めユーザによって選択されるようになっている。なお、カメラのズームの変化等に基づいて、階層番号決定モードが自動的に選択されるようにしてもよい。
【００７８】
図１８（ａ）の丸数字は、第１の階層番号決定モードが選択されている場合において、対象となる階層画像の選択順序を示している。１回目の単階層検出モードでの処理対象の階層画像の階層番号ｎが”３”であるとすると、それ以降の単階層検出モードでの処理対象の階層画像の階層番号ｎは、”４”、”５”、”６（＝Ｎ）”と変化した後、”２”、”１”と変化する。
【００７９】
ただし、１回目の単階層検出モードでの処理対象の階層画像の階層番号ｎが”６（＝Ｎ）”である場合には、それより、上位の階層画像が存在しないため、それ以降の単階層検出モードでの処理対象の階層画像の階層番号ｎは、”５”、”４”、”３”、”２”、”１”と変化する。
【００８０】
図１８（ｂ）の丸数字は、第２の階層番号決定モードが選択されている場合において、対象となる階層画像の選択順序を示している。１回目の単階層検出モードでの処理対象の階層画像の階層番号ｎが”３”であるとすると、それ以降の単階層検出モードでの処理対象の階層画像の階層番号ｎは、”２”、”１”と変化した後、”４”、”５”、”６（＝Ｎ）”と変化する。
【００８１】
ただし、１回目の単階層検出モードでの処理対象の階層画像の階層番号ｎが”１”である場合には、それより、下位の階層画像が存在しないため、それ以降の単階層検出モードでの処理対象の階層画像の階層番号ｎは、”２”、”３”、”４”、”５”、”６”と変化する。
【００８２】
この階層番号選択処理では、まず、変数ｄをｄｉに設定する（ステップＳ２４１）。ｄｉの初期設定値は、第１の階層番号決定モードが選択されている場合には”１”であり、第２の階層番号決定モードが選択されている場合には”−１”である。なお、ｄｉは、図１１のステップＳ１０５およびＳ１１６で、初期設定値に設定されるものとする。
【００８３】
次に、今回の単階層検出モードによる顔検出処理で処理対象とされた階層画像の階層番号ｎを取得する（ステップＳ２４２）。
【００８４】
次に、ｎが”１”または”Ｎ”のいずれかに該当するかを判別する（ステップＳ２４３）。つまり、今回の単階層検出モードによる顔検出処理において、最上位または最下位の階層画像に対して顔検出処理が行なわれたか否かを判別する。
【００８５】
ｎが”１”または”Ｎ”のいずれかに該当する場合には、今回の単階層検出モードによる顔検出処理において最上位または最下位の階層画像に対して顔検出処理が行なわれたと判別し、顔が検出されない一連の単階層検出モードによる顔検出処理において、最上位または最下位の階層画像に対して顔検出処理が行なわれた回数を記憶するための変数ｊを１だけインクリメントする（ステップＳ２４４）。そして、ステップＳ２４５に移行する。変数ｊの初期値は０であり、図１１のステップＳ１０５およびＳ１１６で、ｊは初期値（ｊ＝０）に設定されるものとする。
【００８６】
上記ステップＳ２４３において、ｎが”１”または”Ｎ”のいずれにも該当しない場合には、今回の単階層検出モードによる顔検出処理において、最上位または最下位の階層画像以外の階層画像に対して顔検出処理が行なわれたと判別し、ステップＳ２４５に移行する。
【００８７】
ステップＳ２４５では、ｎ＋ｄの値が”０”または”Ｎ＋１”のいずれかに該当するかを判別する。ｎ＋ｄの値が”０”または”Ｎ＋１”のいずれにも該当しない場合には、次式（２）に基づいて、次回の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎを決定する（ステップＳ２５０）。そして、今回の階層番号選択処理を終了する。
【００８８】
ｎ＝ｎ＋ｄ      …（２）
【００８９】
つまり、ｎ＋ｄの値を、次回の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎとして決定する。
【００９０】
上記ステップＳ２４５において、ｎ＋ｄの値が”０”または”Ｎ＋１”のいずれかに該当すると判別した場合には、ｊ＝２であるか否かを判別する（ステップＳ２４６）。つまり、顔が検出されない一連の単階層検出モードによる顔検出処理において、最上位または最下位の階層画像に対して顔検出処理が行なわれた回数が１回であるか、２回であるかを判別する。
【００９１】
ｊ＝２でなければ、今回の単階層検出モードによる顔検出処理において、最上位または最下位の階層画像に対して１回目の顔検出処理が行なわれたが、ｎ＋ｄの階層番号に対応する階層画像は存在しないと判断し、ｄｉの値を−ｄｉに設定した後、ｄの値をｄｉに設定する（ステップＳ２４７）。
【００９２】
次に、最新に顔検出に成功した階層画像の階層番号ｐを取得する（ステップＳ２４８）。そして、ｎ＝ｐとした後（ステップＳ２４９）、上記式（２）に基づいて、次回の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎを決定する（ステップＳ２５０）。そして、今回の階層番号選択処理を終了する。
【００９３】
例えば、第１の階層番号決定モードが選択されており、最新に顔が検出された階層画像の階層番号ｐが”３”である場合には、単階層検出モードによる顔検出処理での対象階層画像の階層番号は、顔が検出されない場合、”３”、”４”、”５”、”６（＝Ｎ）”と変化していく。そして、階層番号”６（＝Ｎ）”の階層画像に対して単階層検出モードによる顔検出処理が行なわれた結果、顔が検出されなかった場合には、最新に顔が検出された階層画像の階層番号ｐ（この例では３）より１つ下位の階層番号２が、次回の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎとして決定される。      
【００９４】
上記ステップＳ２４６において、ｊ＝２であると判別した場合には、今回の単階層検出モードによる顔検出処理において、最上位または最下位の階層画像に対して２回目の顔検出処理が行なわれたと判断し、Ｆｂ＝１とする（ステップＳ２５１）。そして、今回の階層番号選択処理を終了する。
【００９５】
〔６〕階層番号選択処理の他の変形例についての説明
【００９６】
図１９は、階層番号選択処理のさらに他の例を示している。
【００９７】
この階層番号選択処理の基本的な考え方について説明する。この階層番号選択処理では、単階層検出モードによる顔検出処理での顔未検出連続回数ｋが１でかつそれまでに顔検出に成功した回数が２回以上である場合には、今回の単階層検出モードによる顔検出処理で処理対象とされた階層画像の階層番号ｎと、顔検出に成功した階層画像の履歴とに基づいて、次回の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎを決定する。
単階層検出モードによる顔検出処理での顔未検出連続回数ｋが１でかつそれまでに顔検出に成功した回数が２未満である場合および単階層検出モードによる顔検出処理での顔未検出連続回数ｋが２以上の場合には、上述した図１５の階層番号選択処理または上述した図１７の階層番号選択処理と同様な処理により、次回の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎを決定する。
【００９８】
顔検出に成功した階層画像の履歴に基づいて、次回の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎを決定する方法について説明する。最新に顔検出に成功した階層画像の階層番号をｐt とし、その前において最新に顔検出に成功した階層画像の階層番号をｐt-1 とする。例えば、ｐt-1 が”４”で、ｐt が”３”である場合には、ズームで拡大中または顔がカメラに近づいてきている途中のように、画像内の顔が大きくなる方向に変化している状態であると予測し、階層番号ｎが小さくなる方向に階層番号ｎを決定する。一方、例えば、ｐt-1 が”３”でｐt が”４”である場合には、ズームで縮小中または顔がカメラから遠ざかっている途中のように、画像内の顔が小さくなる方向に変化している状態であると予測し、階層番号ｎが大きくなる方向に階層番号ｎを決定する。
【００９９】
例えば、ｐt-1 が”４”で、ｐt が”３”であり、今回の単階層検出モードによる顔検出処理で処理対象とされた階層画像の階層番号ｎが３である場合には、次回の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎは２と決定される。その次の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎは１と決定される。
【０１００】
また、例えば、ｐt-1 が”３”で、ｐt が”４”であり、今回の単階層検出モードによる顔検出処理で処理対象とされた階層画像の階層番号ｎが４である場合には、次回の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎは５と決定される。その次の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎは６と決定される。
【０１０１】
この階層番号選択処理では、まず、これまでに顔検出に成功した回数ｅが２未満であるか否かを判別する（ステップＳ２６１）。ｅ≧２であれば、ｋ＝１であるか否かを判別する（ステップＳ２６２）。ｋ＝１であれば、今回の単階層検出モードによる顔検出処理で処理対象とされた階層画像の階層番号ｎを取得する（ステップＳ２６３）。次に、最新に顔検出に成功した階層画像の階層番号ｐt と、その前において最新に顔検出に成功した階層画像の階層番号ｐt-1 とを取得する（ステップＳ２６４）。
【０１０２】
次に、次式（３）に基づいて、次回の単階層検出モードによる顔検出処理で処理対象とされる階層画像の階層番号ｎを決定する（ステップＳ２６５）。
【０１０３】
ｎ＝ｎ＋（ｐt −ｐt-1 ）      …（３）
【０１０４】
そして、ｎ≦０またはｎ≧Ｎ＋１に該当するかを判別する（ステップＳ２６６）。ｎ≦０またはｎ≧Ｎ＋１に該当する場合には、Ｆｂ＝１とする（ステップＳ２６７）。そして、今回の階層番号選択処理を終了する。上記ステップＳ２６６において、ｎ≦０でなくかつｎ≧Ｎ＋１でない場合には、今回の階層番号選択処理を終了する。
【０１０５】
上記ステップＳ２６２において、ｋ＝１ではないと判別した場合、つまり、ｋが２以上である場合には、ｋ＝１のときに、ステップＳ２６３以降の処理が１回行なわれていると判断し、ｋの値を本来の値（単階層検出モードによる顔検出処理での顔未検出連続回数を示す値）より１だけ少なくするための処理を行なう。つまり、ｋｉ＝１とした後（ステップＳ２６８）、ｋ＝ｋ−ｋｉの演算によりｋを算出する（ステップＳ２７０）。そして、図１５の階層番号選択処理または図１７の階層番号選択処理と同様な処理を行なう（ステップＳ２７１）。この後、ｋの値の本来のｋの値に戻す処理を行なう。つまり、ｋ＝ｋ＋ｋｉの演算によりｋを算出する（ステップＳ２７２）。そして、今回の階層番号選択処理を終了する。
【０１０６】
上記ステップＳ２６１において、これまでに顔検出に成功した回数ｅが２未満であると判別した場合には、ｋｉ＝０とした後（ステップＳ２６９）、ｋ＝ｋ−ｋｉの演算によりｋを算出する（ステップＳ２７０）。この場合は、ｋの値は本来のｋの値となる。そして、図１５の階層番号選択処理または図１７の階層番号選択処理と同様な処理を行なう（ステップＳ２７１）。この後、ｋの値の本来のｋの値に戻す処理を行なう。つまり、ｋ＝ｋ＋ｋｉの演算によりｋを算出する（ステップＳ２７２）。そして、今回の階層番号選択処理を終了する。
【０１０７】
〔７〕探索領域の設定処理についての説明
【０１０８】
１つの階層画像内に複数の顔が検出された場合における探索領域の設定処理（図１１のステップＳ１０８の処理）について説明する。
【０１０９】
探索領域の設定方法には、検出された顔毎に個別に設定する方法と、検出された顔毎に個別に設定した領域を合成する方法とがある。
【０１１０】
図２０を参照して、１つの階層画像内に顔が２つ検出された場合について説明する。図２０（ａ）は、検出された顔毎に探索領域を個別に設定した場合を示している。つまり、検出された顔Ｑ１，Ｑ２毎に、それを中心とする探索領域Ｒ１，Ｒ２を設定する。次回の単階層検出モードによる顔検出処理では、各探索領域Ｒ１，Ｒ２毎に判定領域４１を走査する。
【０１１１】
図２０（ｂ）は、検出された顔毎に個別に設定した領域を合成することにより、探索領域を設定した場合を示している。つまり、図２０（ａ）の領域Ｒ１，Ｒ２が合成された領域Ｓを探索領域として設定する。次回の単階層検出モードによる顔検出処理では、探索領域Ｓ内において判定領域４１を走査する。
【０１１２】
図２１を参照して、１つの階層画像内に顔が３つ検出された場合について説明する。図２１（ａ）は、検出された顔毎に探索領域を個別に設定した場合を示している。つまり、検出された顔Ｑ１，Ｑ２，Ｑ３毎に、それを中心とする探索領域Ｒ１，Ｒ２，Ｒ３を設定する。次回の単階層検出モードによる顔検出処理では、各探索領域Ｒ１，Ｒ２，Ｒ３毎に判定領域４１を走査する。
【０１１３】
図２１（ｂ）は、検出された顔毎に個別に設定した領域を合成することにより、探索領域を設定した場合を示している。つまり、図２１（ａ）の領域Ｒ１，Ｒ２，Ｒ３が合成された領域Ｓを探索領域として設定する。次回の単階層検出モードによる顔検出処理では、探索領域Ｓ内において判定領域４１を走査する。
【０１１４】
なお、図１４の単階層検出モードによる顔検出処理におけるステップＳ２１２においては、図１１のステップＳ１０８で設定された探索領域に対してのみ４方向エッジ特徴画像を生成するようにしてもよい。
【図面の簡単な説明】
【０１１５】
【図１】複数の階層画像を示す模式図である。
【図２】顔検出処理の手順を示すフローチャートである。
【図３】図２のステップＳ５で行なわれる４方向のエッジ特徴画像の生成処理の手順を示すフローチャートである。
【図４】水平方向エッジ、垂直方向エッジ、右斜上方向エッジおよび左斜上方向エッジの４方向それぞれに対応する微分フィルタの一例を示す模式図である。
【図５】図２のステップＳ６の顔検出処理を説明するための模式図である。
【図６】入力画像内の判定領域に対応する４方向のエッジ特徴画像を示す模式図である。
【図７】重みテーブルの内容例を示す模式図である。
【図８】階層画像内に設定された判定領域に対して行なわれる顔検出処理手順を示すフローチャートである。
【図９】図８の各判定ステップで実行される判定処理手順を示すフローチャートである。
【図１０】顔検出装置の構成を示すブロック図である。
【図１１】顔検出装置によって行なわれる全体的な処理手順を示すフローチャートである。
【図１２】全階層検出モードによる顔検出処理（図１１のステップＳ１０３の処理）の詳細な手順を示すフローチャートである。
【図１３】探索領域の設定方法を説明するための模式図である。
【図１４】単階層検出モードによる顔検出処理（図１１のステップＳ１１０の処理）の詳細な手順を示すフローチャートである。
【図１５】階層番号選択処理（図１１のステップＳ１１４の処理）の詳細な手順を示すフローチャートである。
【図１６】図１５の階層番号選択処理を説明するための模式図である。
【図１７】階層番号選択処理（図１１のステップＳ１１４の処理）の他の例を示すフローチャートである。
【図１８】図１７の階層番号選択処理を説明するための模式図である。
【図１９】階層番号選択処理（図１１のステップＳ１１４の処理）のさらに他の例を示すフローチャートである。
【図２０】１つの階層画像内に顔が２つ検出された場合において、探索領域を設定する方法を説明するための模式図である。
【図２１】１つの階層画像内に顔が３つ検出された場合において、探索領域を設定する方法を説明するための模式図である。
【符号の説明】
【０１１６】
１１  ＡＤ変換手段
１２  画像取込み手段
１３  階層画像生成手段
１４  ４方向エッジ特徴画像生成手段
１５  顔判定手段
１６  検出結果出力手段
１７  重みテーブルを記憶したメモリ
２０  制御手段
【図１】
0004498296.tif 000002
【図２】
0004498296.tif 000003
【図３】
0004498296.tif 000004
【図４】
0004498296.tif 000005
【図５】
0004498296.tif 000006
【図６】
0004498296.tif 000007
【図７】
0004498296.tif 000008
【図８】
0004498296.tif 000009
【図９】
0004498296.tif 000010
【図１０】
0004498296.tif 000011
【図１１】
0004498296.tif 000012
【図１２】
0004498296.tif 000013
【図１３】
0004498296.tif 000014
【図１４】
0004498296.tif 000015
【図１５】
0004498296.tif 000016
【図１６】
0004498296.tif 000017
【図１７】
0004498296.tif 000018
【図１８】
0004498296.tif 000019
【図１９】
0004498296.tif 000020
【図２０】
0004498296.tif 000021
【図２１】
0004498296.tif 000022