(57)【要約】【課題】画像の中の顔領域を高速に検出することができ、かつ、精度良く、正面顔か否かを判別できる画像処理装置を提供する。【解決手段】１段目識別器７３ａで、対象画像を走査して探索矩形領域毎の画像が顔向きが所定の角度範囲の顔画像であるか否かを識別し、２段目識別器７３ｂを用いて、１段目識別器７３ａで顔画像が検出された画像位置及びその４近傍位置の探索矩形領域の画像を対象として正面顔画像であるか否かを識別する。【選択図】図５
2010277242.tif 000002
【特許請求の範囲】
【請求項１】
顔向きが所定の角度範囲の顔画像を教師画像とする学習で得られた学習情報に基づき、入力画像から抽出した特徴量を評価することにより、当該入力画像が前記顔向きが所定の角度範囲の顔画像であるか否かを識別する第１の識別器と、
前記所定の角度範囲より狭い角度範囲で顔向きを規定した正面顔画像を教師画像とする学習で得られた学習情報に基づき、入力画像から抽出した特徴量を評価することにより、当該入力画像が前記正面顔画像であるか否かを識別する第２の識別器とを備えた画像処理装置において、
前記第１の識別器は、対象画像を走査して探索領域毎の画像が前記顔向きが所定の角度範囲の顔画像であるか否かを識別し、
前記第２の識別器は、前記第１の識別器によって前記顔画像が検出された画像位置及びその近傍位置の探索領域が含まれる領域を対象として前記正面顔画像であるか否かを識別することを特徴とする画像処理装置。
【請求項２】
第２の識別器が、第１の識別器によって顔画像が検出された画像位置及びその近傍位置の探索領域の画像を識別した結果から、正面顔らしさの度合を示す評価値が最も高い探索領域の画像の位置を、正面顔画像の検出位置とすることを特徴とする請求項１記載の画像処理装置。
【請求項３】
第２の識別器が、第１の識別器によって顔画像が検出された画像位置及びその近傍位置の探索領域の画像を識別した結果から、正面顔らしさの度合を示す評価値が所定の閾値を超えた探索領域の画像の位置の平均位置を、正面顔画像の検出位置とすることを特徴とする請求項１記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、カメラ等で撮影された画像の中から、顔の領域を検出する画像処理装置に関するものである。
【背景技術】
【０００２】
カメラ等を用いた監視システムにおいて、連続して監視箇所を撮影したカメラ画像の中から、不審者などの目的とする人物の映った画像を検索する処理の効率化が求められている。例えば、特許文献１が開示する画像処理方法では、撮影された人物の顔画像のうち、顔が判別し易い正面の顔をベストショット画像として選択し保存することにより、人物の映った画像の検索処理の効率化を図っている。
【０００３】
また、特許文献２に開示される画像処理方法では、複数の顔向きを判別する識別器群を順次用いて、入力画像から顔画像を検出する。ここで、識別器により算出される指標値が所定の閾値以上の顔画像があった場合、当該指標値が示す顔の向きに限定して、以降の指標値の算出を行う。このような手法を用いることにより、顔画像の検索に要する処理時間を短縮化している。
【０００４】
さらに、特許文献３に記載の装置は、入力画像をルートノードとし、このルートノードから枝分かれする分岐ノードを組み合わせ、各分岐ノードにおいて前記入力画像を複数の弱判別器に入力し、各弱判別器の出力を分割するサブ対象物空間毎に集計して、移行先を決定する木構造検出器を用いて、様々な向きの顔画像を検出している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３５０６９５８号公報（第８頁第４〜第５行）
【特許文献２】特開２００７−１９３４０４号公報（第１４頁第３〜第３１行）
【特許文献３】特開２００７−１０９２２９号公報（第８頁第４４行〜第９頁第４３行）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の方法では、顔を検出した後に、目や鼻の位置を別途検出して顔の向きを判別するため、画像処理に時間がかかるという課題があった。
【０００７】
また、特許文献２に記載の方法においても、初めは様々な方向の顔向きを検出する必要があるために処理時間がかかる。さらに、一旦、顔向きを限定してしまった後はそれ以外の顔向きの画像を検索できないという課題があった。
【０００８】
さらに、特許文献３では、木構造検出器による効率的な顔向きの判別が行えるために、高速に処理できるが、ルートノードでは顔画像を検出できても、最終的に顔向きを絞り込んだ顔画像の検出精度が十分に得られないという課題があった。
【０００９】
これは、木構造検出器が、個々の識別器を用いて、順次顔向きを絞り込んでゆく構成であるため、枝の末端に行くに従い、順次、顔向きに対する基準が厳しくなる構成となっていることに起因している。
【００１０】
以下にその理由を説明する。
通常、顔か顔でないかの判断は、特許文献２に記載されるように、入力画像に対して、検出対象領域、つまり検出ウィンドウを移動させながら判別を行っていくが、移動させるステップ幅を細かくすると高速性が失われてしまうため、検出する顔のサイズに合わせて離散的に検出位置を移動する手法がとられる。
【００１１】
本願発明の発明者が種々の画像に対する検討を行った結果、特定の、例えば正面向きの顔に特化して顔検出を行おうとした場合、入力画面内で、移動しながら検出を行う際に、ルートノードより厳しい判定基準を用いる正面顔向きの識別器では、より細かいステップで検出を行わないと、十分な検出率が得られないことがわかった。
つまり、判定基準の緩いルートノード用の識別器で顔候補として得られた位置は、より厳しい条件で判別する正面向きの識別器での最適な検出位置と必ずしも一致しない。これは、離散的に検出位置を移動させることによる高速化と相反する性質である。
【００１２】
この発明は、上記のような課題を解決するためになされたもので、画像の中の顔領域を高速に検出することができ、かつ、精度良く、正面顔か否かを判別できる画像処理装置を得ることを目的とする。
【課題を解決するための手段】
【００１３】
この発明に係る画像処理装置は、顔向きが所定の角度範囲の顔画像を教師画像とする学習で得られた学習情報に基づき、入力画像から抽出した特徴量を評価することにより、当該入力画像が顔向きが所定の角度範囲の顔画像であるか否かを識別する第１の識別器と、所定の角度範囲より狭い角度範囲で顔向きを規定した正面顔画像を教師画像とする学習で得られた学習情報に基づき、入力画像から抽出した特徴量を評価することにより、当該入力画像が正面顔画像であるか否かを識別する第２の識別器とを備えた画像処理装置において、第１の識別器が、対象画像を走査して探索領域毎の画像が顔向きが所定の角度範囲の顔画像であるか否かを識別し、第２の識別器が、第１の識別器によって顔画像が検出された画像位置及びその近傍位置の探索領域が含まれる領域を対象として正面顔画像であるか否かを識別するものである。
【発明の効果】
【００１４】
この発明によれば、第１の識別器が、対象画像を走査して探索領域毎の画像が顔向きが所定の角度範囲の顔画像であるか否かを識別し、第２の識別器が、第１の識別器によって顔画像が検出された画像位置及びその近傍の位置の探索領域の画像を対象として正面顔の顔画像であるか否かを識別する。
このように構成することで、第１の識別器によって顔画像が検出された位置及びその近傍位置で第２の識別器による識別が行われるので、精度良く、正面顔か否かの識別を行うことができるという効果がある。また、第２の識別器のみで識別を行う場合と比較して高速な処理が可能である。
【図面の簡単な説明】
【００１５】
【図１】この発明の画像処理装置による画像走査を説明するための図である。
【図２】この発明の実施の形態１による画像処理装置のハードウェア構成を示す図である。
【図３】実施の形態１による画像処理装置の機能ブロックを示す図である。
【図４】２段目結果保持メモリの記憶内容を示す図である。
【図５】実施の形態１の画像処理装置による顔検出処理の流れを示すフローチャートである。
【図６】２段目識別器による検出処理の流れを示すフローチャートである。
【図７】実施の形態２の２段目識別器による検出処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１６】
実施の形態１．
先ず、画像中から顔を検出する方法について説明する。
顔の検出方法としては、ニューラルネットを用いるものやサポートベクターマシンを用いるもの等があるが、この発明では、参考文献１に記載されるような、予め学習によって顔か非顔かを判別できる識別器を用いる。参考文献１に記載の方法では、図１に示すように、基準となる探索矩形のサイズが、例えば縦横２４ピクセルのフィルタセット２を入力画像１の左上から右下へジグザグなスキャン方向３で走査して各々の位置で顔か非顔かを判別する。ここで、１つの位置から次の位置への移動ステップ幅は２ピクセルである。
（参考文献１）特開２００４−２５２９４０号公報
【００１７】
しかし、図１に示す処理では顔のサイズの変化に対応できない。このため、参考文献１に記載の方法では、基準となる探索矩形のサイズを拡大した複数のフィルタセットを、画面内で順次走査させる。探索矩形サイズを拡大したフィルタセット２を適用する場合は、その拡大率に合わせて移動のステップ幅も広くする。
なお、基準となる探索矩形サイズを縦横２４ピクセルに固定しておき、入力画像をいわゆるイメージピラミッド構造（入力画像を階層的に細分化した複数の画像で表した構造）として、入力画像側を拡大又は縮小した複数の画像で検出を行うことでも、顔サイズの変化に対応することができる。
【００１８】
この発明の実施の形態１では、１段目識別器として、顔向きが概ね上下左右それぞれ３０度の向きまでの角度範囲の顔検出が可能な識別器を用い、２段目識別器としては、顔向きが概ね上下左右それぞれ１０度程度までの角度範囲の顔画像を用いて学習を行った識別器を使用する。
また、１段目識別器は、顔か非顔かを判別できるよう、顔画像と非顔画像の両方の教師データを与えて学習を行う。２段目識別器は、１段目識別器で顔か非顔かを判別することを前提として、顔向きの角度範囲を前述の範囲に狭めた顔画像を正面顔データ（正解データ）とし、この顔画像より顔向きの角度が大きな顔画像を非正面データとして用いて学習を行う。この学習に用いる画像も縦横２４ピクセルとする。
このようにすることにより、顔か非顔かの判別を含める場合と比較して、２段目識別器で使用するレクタングルフィルタの数を低減でき、高速な処理が可能となる。
【００１９】
図２は、この発明の実施の形態１による画像処理装置のハードウェア構成を示す図である。図２において、実施の形態１による画像処理装置は、カメラ４と表示装置９を備えたコンピュータであり、カメラ４で撮影された画像が画像バッファ５に蓄積される。なお、画像バッファ５は、ＲＡＭ８の記憶領域上に構築しても構わない。ＣＰＵ６が、ＲＯＭ７に格納された実行プログラム７１を実行することにより、演算・比較器７２、識別器７３（１段目識別器７３ａ及び２段目識別器７３ｂ）は、ハードウェアとソフトウェアが協働した具体的手段として具現化される。
【００２０】
また、ＣＰＵ６が、起動時にＲＯＭ７から識別器７３（１段目識別器７３ａ及び２段目識別器７３ｂ）の学習情報を読み込み、このうちフィルタセット８２（１段目フィルタセット８２ａ及び２段目フィルタセット８２ｂ）を規定するデータをＲＡＭ８に展開する。識別器７３は、ＲＡＭ８に展開されたデータを参照して、画像バッファ５に蓄積された画像の画面全体を走査し、このとき探索矩形に対応する画像データを順次取り出して検出処理を行う。演算・比較器７２は、識別器７３が検出した画像の特徴量に対し、所定の演算処理を行い、顔の検出結果や顔らしさの度合を演算結果として求め、これを表示部９に表示する。
【００２１】
実施の形態１では、２段目識別器７３ｂの検出実行時に、画像中の同じ位置で複数回の検出が行われる無駄を省くため、フィルタセット８２の探索矩形のサイズで、画像バッファ５に蓄積された１枚の画像を処理（１画面の検出処理）する度に、２段目の検出結果、つまり検出位置と２段目識別器７３ｂによる顔の検出結果や顔らしさの度合を示す評価値を格納する２段目結果保持メモリ８１を、ＲＡＭ８の記憶領域上に確保している。また、演算・比較器７２による判定結果を用いて最終的に得られる顔検出の結果は、ＲＡＭ８の記憶領域８３に確保する。
【００２２】
フィルタセット８２（１段目フィルタセット８２ａ及び２段目フィルタセット８２ｂ）を規定するデータは、予め、入力画像のサイズに合わせて、最小の探索矩形サイズ（例えば、縦横２４ピクセル）から最大の探索矩形サイズ（例えば、画像バッファ５に蓄積されている１画面分の画像の幅若しくは高さと同じサイズ）まで、複数の拡大率で、探索矩形のサイズを拡大したフィルタ及びこれらフィルタの検出位置が規定されるデータである。
【００２３】
このフィルタセット８２を規定するデータは、識別器７３の学習の結果として得られ、１段目フィルタセット８２ａの探索矩形サイズとその検出位置及び顔判定のための判定閾値が１段目識別器７３ａの学習情報として記憶され、２段目フィルタセット８２ｂの探索矩形サイズとその検出位置及び顔判定のための判定閾値が２段目識別器７３ｂの学習情報として記憶される。なお、上述したように、１段目識別器７３ａの１段目フィルタセット８２ａでは、概ね上下左右それぞれ３０度の顔向きまで顔検出が可能であり、２段目識別器７３ｂの２段目フィルタセット８２ｂは、顔向きが概ね上下左右それぞれ１０度程度までの顔検出が可能である。
【００２４】
このようにフィルタセット８２を規定するデータを予め準備しておくことで、画像を入れ替える度に、探索矩形サイズを拡大したフィルタの検出位置を計算する必要がなく、高速な処理が可能になる。なお、上記では、実行プログラム７１のプログラムモジュールとして、演算・比較器７２の機能を実現する場合を説明したが、専用のハードウェアで実現しても構わない。
【００２５】
図３は、実施の形態１による画像処理装置の機能ブロックを示す図である。図３に示すように、フィルタセット８２は、全部でＮ（Ｎ＝１，２，３，・・・，Ｎ）個のフィルタから構成される。これらフィルタは、図３のように、白色矩形と黒色矩形を組み合わせた２値の矩形フィルタ（レクタングルフィルタ）である。このようにレクタングルフィルタには、探索矩形内で、白色矩形と黒色矩形の大きさや位置を変化させた様々なものが存在する。このレクタングルフィルタを用いて一つの仮説を形成し、これを多数組み合わせることで、概ね上下左右それぞれ３０度の向きまでの顔を検出する１段目識別器７３ａ及び概ね上下左右それぞれ１０度程度までの顔を検出する２段目識別器７３ｂが構築される。
【００２６】
顔判定の手順としては、画像バッファ５に蓄積された画像画面から探索矩形に対応する画像を取り出し、これを入力画像１として取り込む。この入力画像１に対し、識別器７３の学習情報に基づき、フィルタセット８２のＮ個のフィルタを順に適用していき、演算・比較器７２が、フィルタセット８２の探索矩形内における白色矩形領域と黒色矩形領域のそれぞれに対する、入力画像１の輝度値の和を求める。
【００２７】
次に、演算・比較器７２は、白色矩形領域の輝度値の和と黒色矩形領域の輝度値の和との差分（レクタングルフィルタ値）を算出し、この差分に対して、学習情報として得られた判定閾値である、受け入れ閾値及び拒否閾値を用いた閾値判定を行う。この差分が、受け入れ閾値と拒否閾値とを境界とする範囲内の値であれば、フィルタセット８２における次のフィルタを適用し、この差分が拒否閾値より低ければ、顔でないと判定し、受け入れ閾値よりも高ければ、顔であると判定して、判定結果１０をＲＡＭ８に格納する。
【００２８】
入力画像１に対し、フィルタセット８２の探索矩形サイズを拡大しながら適用することで、様々な大きさの顔を検出することができる。なお、１段目フィルタセット８２ａと２段目フィルタセット８２ｂでは、１段目識別器７３ａ及び２段目識別器７３ｂの学習情報が異なるため、１段目識別器７３ａ及び２段目識別器７３ｂの検出処理は同じ手順で処理が行われるが、フィルタセット８２の内容及び判定閾値は異なる値（１段目フィルタセット８２ａ及び２段目フィルタセット８２ｂ）となる。
【００２９】
図２に示した２段目結果保持メモリ８１では、基準となるフィルタセット８２の探索矩形サイズを変更する度に、１画面走査単位で、メモリ内容のクリア又は上記の検出位置と評価値の再確保が実行される。また、２段目結果保持メモリ８１には、走査の基本となるフィルタセット８２の探索矩形（例えば、縦横２４ピクセル）で走査する際に、この探索矩形内の左上のピクセル位置を基準位置として、１画面分の画像（入力画像１）の各探索矩形毎に、図４に示す情報を格納する。
【００３０】
図４は、２段目結果保持メモリの記憶内容を示す図である。図４に示す走査済みフラグは、その位置（走査するフィルタセット８２の探索矩形の左上位置）で、過去に２段目識別器７３ｂによる顔検出を実施したか否かを示すフラグであり、実施していれば“１”、未実施であれば“０”が設定される。
【００３１】
検出有無の項目には、２段目識別器７３ｂでの上記検出結果として得られた顔の有無を示す値が設定される。また、検出座標の項目には、入力画像内で顔が検出された探索矩形の位置が設定される。これら項目には初期値及び顔が検出されなかった場合に“０”を設定する。
【００３２】
なお、各探索矩形の左上位置及び走査中のフィルタセット８２の探索矩形サイズは既知であるため、検出座標項目の情報は保存しなくても構わないが、この実施の形態１では、別途、検出座標だけを走査して、近い座標の結果を１つにする際に使用できるよう、検出座標の値を保存している。
最後の項目は、２段目識別器７３ｂの評価値が設定される。評価値としては、１段目識別器７３ａと同様の手法を用い、０．０〜１．０の値が保存される。１段目識別器７３ａの評価値の計算方法については後述する。
【００３３】
次に動作について説明する。
図５は、実施の形態１の画像処理装置による顔検出処理の流れを示すフローチャートである。図１と同様に、入力画像１の左上の位置を開始位置として、１段目識別器７３ａを用いた検出処理を行う（ステップＳＴ１）。例えば、画像バッファ５の画像の１画面から取り出した探索矩形に対応する画像データを取り出して、１段目識別器７３ａの学習情報に基づき、１段目フィルタセット８２ａを適用し、当該画像の特徴量としてフィルタの白色矩形領域と黒色矩形領域とのそれぞれに対する輝度値を検出する。
【００３４】
次に、演算・比較器７２が、１段目フィルタセット８２ａのフィルタの白色矩形領域と黒色矩形領域とのそれぞれに対する入力画像１の輝度値の和を算出する。この後、演算・比較器７２は、白色矩形領域の輝度値の和と黒色矩形領域の輝度値の和の差分を算出し、この差分について、受け入れ閾値と拒否閾値を用いた閾値判定を行う。
【００３５】
ここで、算出した差分が、受け入れ閾値と拒否閾値を境界とする範囲内の値であれば、１段目フィルタセット８２ａにおける次のフィルタを適用して、上記の処理を繰り返す。また、演算・比較器７２は、算出した差分が拒否閾値より低ければ顔でないと判定し、受け入れ閾値よりも高ければ顔であると判定して、この結果をＲＡＭ８に格納する。
【００３６】
演算・比較器７２は、１段目フィルタセット８２ａにおけるフィルタの総数ＮＶ２と、最後に閾値判定が行われたフィルタまでのフィルタの数ＮＶ１を求め、１段目識別器７３ａの評価値Ｖ１を、下記式（１）から算出する（ステップＳＴ２）。これにより、評価値Ｖ１として０から１までの値が得られる。
Ｖ１＝ＮＶ１／ＮＶ２      ・・・（１）
【００３７】
次に、演算・比較器７２は、ステップＳＴ１及びステップＳＴ２までの処理結果から、１段目識別器７３ａによって、探索矩形内の画像から顔が検出されたか否かを判定する（ステップＳＴ３）。ここで、顔が検出された場合（ステップＳＴ３；ＹＥＳ）、演算・比較器７２は、ステップＳＴ４の処理に移行して、１段目識別器７３ａによって顔が検出された探索矩形内の画像に対して、２段目識別器７３ｂによる検出処理を行う。
【００３８】
ここで、図６を用いてステップＳＴ４における２段目識別器７３ｂの検出処理を詳細に説明する。図６は、２段目識別器による検出処理の流れを示すフローチャートである。
先ず、演算・比較器７２が、２段目結果保持メモリ８１に格納されている図４に示した情報の走査済みフラグを参照し、現在位置で２段目識別器７３ｂの検出処理が実行済みであるか否かを判定する（ステップＳＴ１ａ）。２段目識別器７３ｂの検出処理が実行済みである場合（ステップＳＴ１ａ；ＹＥＳ）、演算・比較器７２は、２段目結果保持メモリ８１から、その位置における２段目識別器７３ｂによる以前の検出処理結果を読み出して（ステップＳＴ４ａ）、ステップＳＴ５ａの処理に移行する。
【００３９】
一方、２段目識別器７３ｂの検出処理が実行済みでなければ（ステップＳＴ１ａ；ＮＯ）、演算・比較器７２は、１段目識別器７３ａで顔検出された探索矩形領域に対し、２段目識別器７３ｂの学習情報に基づき、２段目フィルタセット８２ｂを順に適用して、特徴量を検出し、この特徴量を用いて上記と同様な演算・比較処理を実行することで、１段目識別器７３ａで検出された探索矩形内の画像から、概ね上下左右それぞれ１０度程度までの正面顔の画像を検出する（ステップＳＴ２ａ）。
【００４０】
この後、演算・比較器７２は、当該探索矩形領域内の左上位置の走査済みフラグを１にして、２段目の検出処理が実行済みであることを設定するとともに、当該２段目の検出処理結果を２段目結果保持メモリ８１に格納する（ステップＳＴ３ａ）。
【００４１】
続いて、演算・比較器７２は、現在位置の４近傍、つまり当該探索矩形領域の左上位置の上下左右それぞれの方向に１ピクセル移動した位置について走査済みフラグを参照し、２段目識別器７３ｂによる検出処理が実行済みであるか否かを判定する（ステップＳＴ５ａ）。
【００４２】
ここで、検出処理を実行していなければ（ステップＳＴ５ａ；ＮＯ）、演算・比較器７２は、ステップＳＴ３ａで２段目結果保持メモリ８１に格納した検出処理結果又はステップＳＴ４ａで２段目結果保持メモリ８１から読み出した以前の結果を用いて、４近傍位置を基準位置（左上位置）とする各探索矩形領域に対し、２段目識別器７３ｂによる顔検出を実行する（ステップＳＴ６ａ）。この後、演算・比較器７２は、上述の４つの探索矩形領域内の左上位置の走査済みフラグを１にして、２段目の検出処理が実行済みであることを設定するとともに、当該２段目の検出処理結果を２段目結果保持メモリ８１に格納する（ステップＳＴ７ａ）。
【００４３】
なお、上述の説明では、４近傍位置の現在位置との距離を１ピクセルとしたが、３ピクセルにしてもよい。また、走査するフィルタセット８２の探索矩形サイズに合わせて、４近傍位置の現在位置との距離を変化させてもよい。さらに４近傍の代わりに右上、左上、右下、左下を加えた８近傍の情報を用いるようにしてもよい。
【００４４】
一方、４近傍位置のいずれかで２段目識別器７３ｂの検出処理が実行済みである場合（ステップＳＴ５ａ；ＹＥＳ）、演算・比較器７２は、２段目結果保持メモリ８１から、２段目識別器７３ｂによる以前の検出処理結果を読み出し（ステップＳＴ９ａ）、この以前の結果を用い、検出処理が実行されていない４近傍位置を基準位置とする探索矩形領域に対し、２段目識別器７３ｂによる顔検出を実行する（ステップＳＴ１０ａ）。
【００４５】
この後、演算・比較器７２は、ステップＳＴ１０ａで検出処理を施した探索矩形領域内の左上位置の走査済みフラグを１にして、２段目の検出処理が実行済みであることを設定するとともに、この２段目の検出処理結果を２段目結果保持メモリ８１に格納する（ステップＳＴ１１ａ）。
【００４６】
次に、演算・比較器７２は、ステップＳＴ３ａ、ステップＳＴ７ａ、ステップＳＴ９ａ及びステップＳＴ１１ａで、２段目結果保持メモリ８１から読み出し又は格納された検出処理結果を用いて、評価値Ｖ２として、下記式（２）から、中心プラス４近傍で、２段目結果保持メモリ８１に格納された、評価値（以後ＤＮ４）の最大値を求め、この評価値ＤＮ４の最大値が得られた位置を検出位置として、Ｖ２の値とともに２段目結果保持メモリ８１に格納する（ステップＳＴ８ａ）。ＤＮ４の最大値は、正面顔がある場合で“１”となり、正面顔らしさに応じて０を超える１未満の値をとり、正面顔がない場合には“０”となる。この処理が完了すると、図５に示すステップＳＴ５の処理に移行する。
Ｖ２＝ＤＮ４の最大値      ・・・（２）
【００４７】
図５の説明に戻ると、演算・比較器７２は、上述の２段目の検出処理を施した探索矩形領域の左上位置に対応する図４に示す情報の評価値項目を参照して、この探索矩形領域で正面顔が検出されたか否かを判定する（ステップＳＴ５）。ここで、評価値項目に“０”が設定されている場合、すなわち評価値Ｖ２が０であった場合は「正面顔なし」、この場合以外では、「正面顔あり」と判定される。
【００４８】
「正面顔あり」と判定すると（ステップＳＴ５；ＹＥＳ）、演算・比較器７２は、１段目識別器７３ａの評価値Ｖ１と２段目識別器７３ｂの評価値Ｖ２を用いて、検出された顔の評価値Ｖ３を算出する（ステップＳＴ６）。また、「正面顔なし」の場合（ステップＳＴ５；ＮＯ）は、演算・比較器７２が、１段目識別器７３ａの評価値Ｖ１を用いて、検出された顔の評価値Ｖ３を算出する（ステップＳＴ７）。
【００４９】
上述のベストショットの選択で、人物の正面顔を優先して選ぶ場合であれば、ステップＳＴ６においては、評価値Ｖ１を用いず、下記式（３）に従って評価値Ｖ３を算出する。また、ステップＳＴ７においては、下記式（４）に従って評価値Ｖ３を算出する。
Ｖ３＝１００×（１＋Ｖ２）      ・・・（３）
Ｖ３＝１００×Ｖ１      ・・・（４）
【００５０】
これにより、正面顔が検出された場合は、評価値Ｖ３として、１００から２００の値が得られ、顔が検出されたが、正面顔が検出されなかった場合は、０から１００の値が得られる。結果的に、正面顔が検出された場合は、検出されなかった場合より必ずＶ３の値が高くなるため、正面顔が検出されなかった場合よりも正面顔が検出された場合の方が高い評価値となり、かつ、正面顔が検出された場合においても評価値Ｖ２により評価値Ｖ３の大小が決定される。従って、評価値Ｖ３を調べることで、正面顔を優先して選択することが可能になる。
【００５１】
上記式（２）の評価式を用いることで、正面顔が検出された場合には、評価値Ｖ２から正面顔らしさの度合を得ることができる。さらに、上記式（３）又は上記式（４）を併用して評価値Ｖ３を求め、この評価値Ｖ３が取り得る値である１００から２００までの数値範囲に閾値を設定することで、使用者が必要とする正面顔らしさを超えたベストショット顔画像のみを選択して保存することが可能になる。
【００５２】
Ｖ１は、「比較的広い顔向きを許容した場合の顔らしさ度」、つまり顔か非顔かという指標値、Ｖ２は「正面顔に限定した場合の顔らしさ度」、つまり正面顔らしい度合を示すと考えることができるが、正面か否かに拘わらず、単純に顔らしさの度合を示す評価値が得たい場合には、ステップＳＴ６において、下記式（５）を用いて評価値Ｖ１，Ｖ２の単純平均から評価値Ｖ３を算出する。ステップＳＴ７では、上述の場合と同様に上記式（４）から評価値Ｖ３を求める。なお、ステップＳＴ６において、評価値Ｖ１の比重を重くしたい場合は、下記式（６）から評価値Ｖ３を求めてもよい。また、ステップＳＴ６において、下記式（５）の代わりに、ｍ，ｎを０から１までの値とした重み係数（ｍ＋ｎ＝１）として、下記式（７）に示す加重平均で評価値Ｖ３を算出してもよい。
Ｖ３＝１００×（Ｖ１＋Ｖ２）      ・・・（５）
Ｖ３＝Ｖ１×Ｖ２      ・・・（６）
Ｖ３＝（ｍ×Ｖ１＋ｎ×Ｖ２）／（ｍ＋ｎ）      ・・・（７）
【００５３】
上記式（５）から上記式（７）までの評価式を用いることで、１段目識別器７３ａと、２段目識別器７３ｂとを総合した評価値Ｖ３を、顔らしさを示す度合として利用できる。これにより、正面顔らしさの判定を行うとともに、正面顔の検出器である２段目識別器７３ｂが単独では判定できない、顔か非顔かという評価を含めた判定を正面顔らしさの判定と同時に行うことができる。
【００５４】
上述までの処理が完了すると、演算・比較器７２は、現在の検出対象領域についての顔検出結果をＲＡＭ８の記憶領域８３及び２段目結果保持メモリ８１に保存する（ステップＳＴ８）。
【００５５】
ステップＳＴ３で１段目識別器７３ａで顔が検出されなかった場合（ステップＳＴ３；ＮＯ）若しくはステップＳＴ８の処理が完了すると、演算・比較器７２は、ＲＡＭ８に保持される処理結果から、画像の１画面全体を走査完了したか否かを判定する（ステップＳＴ９）。ここで、画面全体の走査が完了していれば（ステップＳＴ９；ＹＥＳ）、処理を終了する。
【００５６】
一方、画面全体の走査が完了していない場合（ステップＳＴ９；ＮＯ）、演算・比較器７２は、画面中の次の位置へ移動、つまり１段目フィルタセット８２ａの探索矩形サイズを考慮した所定の移動ステップ幅で移動した位置に移動して、ステップＳＴ１からの処理を繰り返す。
【００５７】
また、１段目識別器７３ａにおいて、上記式（１）で評価を行う際、１段目フィルタセット８２ａのフィルタ総数ＮＶ２を入力とし、０から１までの値ＮＶ２Ｃを出力する変換関数ｆ（ＮＶ２）を予め設定しておき、Ｖ１＝ｆ（ＮＶ２）で評価値Ｖ１を算出するようにしてもよい。これは、フィルタ総数ＮＶ２に対して重み付けを行うことに相当し、前段（１段目）の検出結果を重視したい場合は、ｆ（ＮＶ２）として０から１に至るまでに上に凸なカーブを形成する関数を選択することにより対応可能である。このように、関数ｆ（ＮＶ２）は、目的に応じて適宜変更可能である。
【００５８】
さらに、上述の説明では、図１で示したように、基準となる識別器のフィルタセットのサイズで画面を走査する場合を示したが、顔の大きさの変化に対応するため、図５のフロー中にフィルタセット８２のフィルタサイズを変更するステップを加え、フィルタサイズを変更しながら繰り返し処理をするようにしてもよい。
【００５９】
以上のように、この実施の形態１によれば、１段目識別器７３ａで、対象画像を走査して探索矩形領域毎の画像が顔向きが所定の角度範囲の顔画像であるか否かを識別し、２段目識別器７３ｂを用いて、１段目識別器７３ａによって顔画像が検出された画像位置及びその４近傍位置の探索矩形領域の画像を対象として正面顔画像であるか否かを識別する。このように構成することで、１段目識別器７３ａで顔画像が検出された画像位置及びその４近傍位置で２段目識別器７３ｂによる識別を行うので、精度良く、正面顔か否かの識別を行うことができる。また、２段目識別器７３ｂのみで識別を行う場合と比較して高速な処理が可能である。
【００６０】
なお、上記実施の形態１では、１段目識別器７３ａと２段目識別器７３ｂを別々のものとして扱ったが、これら２つを形式的に１つの識別器として構成しても構わない。
【００６１】
また、上記実施の形態１では、１段目識別器７３ａの後に、２段目として正面顔検出用の２段目識別器７３ｂを用いたが、１段目は正面以外の顔向きを判別する識別器であればよく、２段目を正面顔検出用の識別器として、３段目以降に異なる顔向きを判別する識別器を加えた構成とすることも可能である。
【００６２】
さらに、この実施の形態１によれば、１段目識別器７３ａと画面内の同じ位置で２段目識別器７３ｂが顔検出できなかった場合であっても、４近傍で２段目識別器７３ｂによる検出処理を行うことにより、検出の機会が増加し、正確に取りこぼしなく、正面顔の検出ができる。このため、より精度良く正面顔の検出ができるという効果が得られる。
【００６３】
また、４近傍で評価値が最大である、最も正面らしい顔が見つかった位置を２段目識別器７３ｂの正面顔の検出位置とすることで、正確に、正面顔の位置を得ることができる。
【００６４】
実施の形態２．
この実施の形態２は、上記実施の形態１と構成及び動作の基本的内容は同様であるが、２段目識別器による処理の一部が上記実施の形態１と異なる。そこで、画像処理装置の構成については図１を適宜参照する。
【００６５】
次に動作について説明する。
図７は、この発明の実施の形態２による画像処理装置の２段目識別器の検出処理の流れを示すフローチャートである。図７において、ステップＳＴ１ａからステップＳＴ７ａまでの処理、ステップＳＴ９ａからステップＳＴ１１ａまでの処理は、上記実施の形態１で図６を用いて説明した内容と同様であるので説明を省略する。
【００６６】
実施の形態２では、演算・比較器７２が、ステップＳＴ３ａ、ステップＳＴ７ａ、ステップＳＴ９ａ及びステップＳＴ１１ａで、２段目結果保持メモリ８１から読み出し又は格納された２段目識別器７３ｂの評価値を用いて、下記式（８）に示す関係に従い、中心プラス４近傍の計５点での２段目識別器７３ｂの評価値ＤＮ４の平均を評価値Ｖ２として求める。
Ｖ２＝ＤＮ４の平均値      ・・・（８）
【００６７】
上記式（８）で求めた評価値Ｖ２に対して閾値判定（ステップＳＴ８ａ−１）を行うことで、正面顔の有無を判定し、探索矩形の位置として４近傍で正面顔の検出ができた探索矩形位置の平均を正面顔が検出された位置とする。このようにすることで、機会の均等化を行い、安定して正面顔が検出され得る検出位置を求めることができる。
【００６８】
また、上記式（９）で求めた評価値Ｖ２による閾値判定を行う際、評価値Ｖ２の値が低い場合の結果が含まれることによる誤差の拡大を防ぐため、演算・比較器７２が、ステップＳＴ３ａ、ステップＳＴ７ａ、ステップＳＴ９ａ及びステップＳＴ１１ａで、２段目結果保持メモリ８１から読み出し又は格納された２段目識別器７３ｂの評価値を用い、中心プラス４近傍での５点での評価値Ｖ２の各々に対して、ステップＳＴ８ａ−１で閾値判定を行っておき、ステップＳＴ８ａ−２で閾値以上の結果のみを用いて評価値Ｖ２を計算する。この場合、検出結果の位置は、閾値以上となった評価値を与える探索矩形位置（左上位置）の平均とするように構成してもよい。閾値判定を行わない場合は、ステップＳＴ８ａ−２で、閾値以上の結果の代わりに、２段目識別器７３ｂで顔検出できた全ての結果を用いる。
【００６９】
以上のように、この実施の形態２によれば、２段目識別器７３ｂを用いて、１段目識別器７３ａで顔画像が検出された画像位置及びその４近傍位置の探索矩形領域の画像を識別した結果から、正面顔らしさの度合を示す評価値が所定の閾値を超えた探索矩形領域の画像の位置の平均位置を、正面顔の画像の検出位置とする。このようにすることで、機会の均等化を行い、安定して正面顔が検出され得る検出位置を求めることができる。
【符号の説明】
【００７０】
１  入力画像、２，８２  フィルタセット、３  スキャン方向、４  カメラ、５  画像バッファ、６  ＣＰＵ、７  ＲＯＭ、８  ＲＡＭ、９  表示部、１０  判定結果、７１  実行プログラム、７２  演算・比較器、７３  識別器（第１の識別器、第２の識別器）、７３ａ  １段目識別器（第１の識別器）、７３ｂ  ２段目識別器（第２の識別器）、８１  ２段目結果保持メモリ、８２ａ  １段目フィルタセット、８２ｂ  ２段目フィルタセット、８３  最終検出結果の記憶領域。
【図１】
2010277242.tif 000003
【図２】
2010277242.tif 000004
【図３】
2010277242.tif 000005
【図４】
2010277242.tif 000006
【図５】
2010277242.tif 000007
【図６】
2010277242.tif 000008
【図７】
2010277242.tif 000009