(57)【要約】【課題】同じ顔について複数の向きが検出された場合にいずれの向きを正しい向きとするかを適切に決定することが困難であった。【解決手段】入力画像内の画像情報に基づいて所定方向を向く顔画像の有無を判定することにより所定方向を向く顔画像を検出する処理を、複数の顔の向きを対象として実行する検出部と、上記検出部によって複数の向きの顔画像が重複して検出された向き重複領域が生じた場合に、向き重複領域において検出された顔画像の向き毎の検出結果の信頼度を算出し、算出した各信頼度の比較結果に応じて、向き重複領域に存在する顔画像の向きを決定する決定部と、を備える画像処理装置とした。【選択図】図２
2011134045.tif 000002
【特許請求の範囲】
【請求項１】
入力画像内の画像情報に基づいて所定方向を向く顔画像の有無を判定することにより所定方向を向く顔画像を検出する処理を、複数の顔の向きを対象として実行する検出部と、
上記検出部によって複数の向きの顔画像が重複して検出された向き重複領域が生じた場合に、向き重複領域において検出された顔画像の向き毎の検出結果の信頼度を算出し、算出した各信頼度の比較結果に応じて、向き重複領域に存在する顔画像の向きを決定する決定部と、を備えることを特徴とする画像処理装置。
【請求項２】
上記検出部は、上記対象とする上記複数の顔の向き毎に、入力画像内に検出窓を設定して検出窓内の画像情報に基づいて対象の向きの顔画像の有無を判定する処理を検出窓を変更して複数回実行し、上記決定部は、上記向き重複領域において検出された顔画像の向き毎に、向き重複領域において顔画像が検出された回数に基づく信頼度を算出することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
上記検出部は、上記対象とする複数の顔の向きのうち一の顔の向きについて顔画像の有無を判定する処理を検出窓を変更して複数回実行する過程で、顔画像を検出できた回数が所定のしきい値を超えた領域については、以後、当該一の顔の向きおよび他の顔の向きにかかる顔画像の検出のために検出窓を設定する対象から除外することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
上記決定部は、上記向き重複領域において検出された顔画像の向き毎の向き重複領域における顔画像の検出回数を、顔画像の向きに対応する所定の補正係数でそれぞれ補正することにより、向き重複領域において検出された顔画像の向き毎の検出結果の信頼度を算出することを特徴とする請求項２または請求項３に記載の画像処理装置。
【請求項５】
上記決定部は、上記入力画像が静止画であるか動画であるかに応じて、顔画像の向きと上記補正係数との対応関係を変更することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
上記検出部は、略正面を向く顔画像と、正面向きに対して振りの有る顔画像とをそれぞれ検出可能であることを特徴とする請求項１〜請求項５のいずれかに記載の画像処理装置。
【請求項７】
上記検出部は、入力画像に対して傾いていない向きの顔画像と、入力画像に対して傾いた向きの顔画像とをそれぞれ検出可能であることを特徴とする請求項１〜請求項６のいずれかに記載の画像処理装置。
【請求項８】
上記決定部は、上記算出した各信頼度が等しい場合は、顔の向き間の所定の優先順位に基づいて向き重複領域に存在する顔画像の向きを決定することを特徴とする請求項１〜請求項７のいずれかに記載の画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像から顔を検出可能な画像処理装置に関する。
【背景技術】
【０００２】
画像内で人の顔を検出するものとして、複数のサンプル画像データに基づいて学習を行なった顔検出部により、画像中に設定した検出窓内の画像領域について顔領域であるか否か判定して検出する技術が知られている（特許文献１参照。）。
【０００３】
撮影された画像内においては、様々な向きの顔が存在し得る。例えば、画像には、正面あるいは略正面を向いた顔（正面顔）の他、横方向等にいくらか振れている顔（振り顔）や、画像に対して顔の上下方向が傾いた顔（傾き顔）等が写っている場合がある。このような状況において様々な方向を向いた顔を検出するには、主に二通りの手法が考えられる。一つ目の手法は、あらゆる向きの顔が検出可能となるように膨大なサンプル画像データに基づいて学習を行なった一つの顔検出器を用いて、画像内から顔（顔およびその向き）を検出する手法である。二つ目の手法は、正面顔検出のために専用に学習された顔検出器（正面顔検出器）や、振り顔検出のために専用に学習された検出器（振り顔検出器）等を用意し、画像に対して正面顔検出器や振り顔検出器を個別に適用する手法である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９‐３２０１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記一つ目の手法については、あらゆる向きの顔についてその向きを正確に検出可能な一つの顔検出器を生成することが困難であるため、検出精度の低さや、検出速度の遅さ等が問題となっていた。そこで、当該一つ目の手法の欠点を解消するために上記二つ目の手法を採用する。しかしながら、上記二つ目の手法においては、一つの顔について複数の検出結果が生じ得る点が問題であった。つまり、画像に写っているある人物の顔について、正面顔検出器を用いたときに顔が検出され（正面顔が検出され）且つ振り顔検出器を用いたときに顔が検出された（振り顔が検出された）場合等のように、複数の顔の向きが検出された場合、いずれの検出結果を採用すべきかといった問題があった。
【０００６】
本発明は上記課題を解決するためになされたものであり、同じ顔について複数の向きが検出された場合にいずれの向きを正しい向きとするかを適切に決定することができ、高精度かつ高速な顔検出に貢献する画像処理装置を提供する。
【課題を解決するための手段】
【０００７】
本発明の態様の一つは、画像処理装置であって、入力画像内の画像情報に基づいて所定方向を向く顔画像の有無を判定することにより所定方向を向く顔画像を検出する処理を、複数の顔の向きを対象として実行する検出部と、上記検出部によって複数の向きの顔画像が重複して検出された向き重複領域が生じた場合に、向き重複領域において検出された顔画像の向き毎の検出結果の信頼度を算出し、算出した各信頼度の比較結果に応じて、向き重複領域に存在する顔画像の向きを決定する決定部と、を備える構成としてある。
本発明によれば、向き重複領域において検出された顔画像の向き毎の検出結果の信頼度を算出し、各信頼度を比較し、信頼度が高い方の向きを向き重複領域に存在する顔画像の向きとして決定する。そのため、同じ顔について複数の向きが検出された場合にいずれの向きを正しい向きとするかを適切に決定することができる。またその結果、従来よりも高精度かつ高速に、顔の向きが決定される。
【０００８】
上記検出部は、上記対象とする上記複数の顔の向き毎に、入力画像内に検出窓を設定して検出窓内の画像情報に基づいて対象の向きの顔画像の有無を判定する処理を検出窓を変更して複数回実行し、上記決定部は、上記向き重複領域において検出された顔画像の向き毎に、向き重複領域において顔画像が検出された回数に基づく信頼度を算出するとしてもよい。当該構成によれば、向き重複領域において検出された顔画像の向き毎の検出結果の信頼度を、向き毎の検出回数という数値に基づいて適切に算出することができる。
なお上記決定部は、上記向き重複領域において検出された顔画像の向き毎の向き重複領域における顔画像の検出回数を、顔画像の向きに対応する所定の補正係数でそれぞれ補正することにより、向き重複領域において検出された顔画像の向き毎の検出結果の信頼度を算出するとしてもよい。当該構成によれば、上記向き毎の検出回数の単純な比較では向き毎の検出結果間の優位性を比較できない場合に、比較に用いてより適切な信頼度を算出することができる。
【０００９】
上記検出部は、上記対象とする複数の顔の向きのうち一の顔の向きについて顔画像の有無を判定する処理を検出窓を変更して複数回実行する過程で、顔画像を検出できた回数が所定のしきい値を超えた領域については、以後、当該一の顔の向きおよび他の顔の向きにかかる顔画像の検出のために検出窓を設定する対象から除外するとしてもよい。当該構成によれば、上記一の顔の向きにかかる顔画像が入力画像のある領域に間違いなく存在すると言える程度に複数回検出できたときに、その領域に関してはそれ以上の顔画像の検出処理を実行しないために、画像処理装置の処理負担を軽減することができる。
【００１０】
上記検出部は、略正面を向く顔画像と、正面向きに対して振りの有る顔画像とをそれぞれ検出可能であるとしてもよい。さらに上記検出部は、入力画像に対して傾いていない向きの顔画像と、入力画像に対して傾いた向きの顔画像とをそれぞれ検出可能であるとしてもよい。かかる構成によれば、一つの顔画像について、正面顔として検出し、かつ振り顔として検出した場合や、正面顔として検出し且つ傾き顔として検出した場合に、それぞれの向きの検出結果にかかる信頼度に応じて、適切に顔画像の向きを決定することができる。
【００１１】
上記決定部は、上記入力画像が静止画であるか動画であるかに応じて、顔画像の向きと上記補正係数との対応関係を変更するとしてもよい。当該構成によれば、例えば、入力画像が静止画であるときには、検出された顔画像について正面顔であると決定され易いようにしたり、入力画像が動画であるときには、検出された顔画像について振り顔であると決定され易いようにしたりすることができる。
【００１２】
上記決定部は、上記算出した各信頼度が等しい場合は、顔の向き間の所定の優先順位に基づいて向き重複領域に存在する顔画像の向きを決定するとしてもよい。当該構成によれば、上記算出した各信頼度が等しい場合であっても、向き重複領域に存在する顔画像の向きを最終的に適切に決定することができる。顔の向き間の優先順位は、例えば、入力画像が静止画か動画かによって異ならせてもよい。
【００１３】
本発明の技術的思想は、画像処理装置以外によっても実現可能である。例えば、上述した画像処理装置の各部が実行する処理工程を有する方法の発明や、上述した画像処理装置の各部が実行する機能を所定のハードウェア（画像処理装置が内蔵するコンピューター等）に実行させるプログラムの発明をも把握可能である。また、画像処理装置は、単一の装置であってもよいし、複数の装置からなるシステムであってもよい。
【図面の簡単な説明】
【００１４】
【図１】画像処理装置の一例の概略構成を示すブロック図である。
【図２】顔画像検出・決定処理を示すフローチャートである。
【図３】画像データの一例を示す図である。
【図４】正面顔検出処理の詳細を示すフローチャートである。
【図５】画像データにおける検出窓の設定を説明するための図である。
【図６】正面顔検出器の一例を示す図である。
【図７】検出窓内の画像に矩形フィルターを適用する様子を例示する図である。
【図８】正面顔検出処理の結果記録された検出成功窓を例示する図である。
【図９】振り顔検出処理の詳細を示すフローチャートである。
【図１０】振り顔検出処理の結果記録された検出成功窓を例示する図である。
【図１１】時計回り方向に回転した画像データに検出窓を設定する様子を例示する図である。
【図１２】反時計回り方向に回転した画像データに検出窓を設定する様子を例示する図である。
【図１３】各向きについての顔検出処理を経て記録された検出成功窓を例示する図である。
【図１４】二つの検出成功窓のいずれかを選択する処理を示すフローチャートである。
【図１５】顔画像検出・決定処理の結果、記録された検出成功窓を例示する図である。
【図１６】変形例にかかるシステムを簡易的に示すブロック図である、
【図１７】変形例にかかる顔画像検出・決定処理の一部を示すフローチャートである。
【図１８】変形例にかかる二つの検出成功窓のいずれかを選択する処理の一部を示すフローチャートである。
【発明を実施するための形態】
【００１５】
１．画像処理装置の概略構成
図１は、本実施形態にかかる画像処理装置の一例に該当するプリンター１０の構成を概略的に示している。プリンター１０は、記録メディア（例えば、メモリーカードＭＣ等）から取得した画像データに基づき画像を印刷する、いわゆるダイレクトプリントに対応したプリンターである。プリンター１０は、プリンター１０の各部を制御するＣＰＵ１１と、例えばＲＯＭやＲＡＭによって構成された内部メモリー１２と、ボタンやタッチパネルにより構成された操作部１４と、液晶ディスプレーにより構成された表示部１５と、プリンターエンジン１６と、カードインターフェイス（カードＩ／Ｆ）１７と、パーソナルコンピューター（ＰＣ）やサーバーやデジタルスチルカメラやスキャナー等の外部機器と接続するためのＩ／Ｆ部１３とを備えている。プリンター１０の各構成要素は、バスを介して互いに接続されている。
【００１６】
プリンターエンジン１６は、印刷データに基づき印刷を行う印刷機構である。カードＩ／Ｆ１７は、カードスロット１７２に挿入されたメモリーカードＭＣとの間でデータのやり取りを行うためのＩ／Ｆである。メモリーカードＭＣには画像データが格納されており、プリンター１０は、カードＩ／Ｆ１７を介してメモリーカードＭＣに格納された画像データを入力することができる。画像データ提供のための記録メディアとしてはメモリーカードＭＣ以外にも種々の媒体を用いることができる。むろんプリンター１０は、記録メディア以外にも、Ｉ／Ｆ部１３を介して接続した上記外部機器から画像データを入力することも可能である。プリンター１０は、Ｉ／Ｆ部１３を介して接続したＰＣやサーバー等から印刷データを入力することもできる。
【００１７】
内部メモリー１２には、顔画像検出部２０と、顔画像決定部３０と、表示処理部４０と、印刷処理部５０とが格納されている。顔画像検出部２０や、顔画像決定部３０は、所定のオペレーティングシステムの下で、後述する顔画像検出・決定処理を実行するためのコンピュータープログラムである。表示処理部４０は、表示部１５を制御して、表示部１５に処理メニューやメッセージを表示させるディスプレードライバーである。印刷処理部５０は、画像データから印刷データを生成し、プリンターエンジン１６を制御して、印刷データに基づく画像の印刷を実行するためのコンピュータープログラムである。ＣＰＵ１１は、内部メモリー１２から、これらのプログラムを読み出して実行することにより、これら各部の機能を実現する。
【００１８】
顔画像検出部２０は、プログラムモジュールとして、検出窓設定部２１と、正面顔検出部（正面顔検出器）２２と、振り顔検出部（振り顔検出器）２３と、画像回転部２４と、重複窓統合部２５とを含んでいる。これら各部の機能についても後述する。顔画像検出部２０は、入力画像内の画像情報に基づいて所定方向を向く顔画像の有無を判定することにより所定方向を向く顔画像を検出する処理を、複数の顔の向きを対象として実行する検出部に該当する。また、顔画像決定部３０は、検出部によって複数の向きの顔画像が重複して検出された向き重複領域が生じた場合に、向き重複領域において検出された顔画像の向き毎の検出結果の信頼度を算出し、算出した各信頼度の比較結果に応じて、向き重複領域に存在する顔画像の向きを決定する決定部に該当する。プリンター１０は、コンシューマー向けの印刷装置であってもよいし、ＤＰＥ向けの業務用印刷装置（いわゆるミニラボ機）であってもよい。また、プリンター１０は、印刷機能以外にも、コピー機能やスキャン機能など多種の機能を備えたいわゆる複合機であってもよい。
【００１９】
２．顔画像検出・決定処理
図２は、プリンター１０が実行する顔画像検出・決定処理をフローチャートにより示している。ステップＳ（以下、ステップの表記は省略。）１００では、顔画像検出部２０が、画像処理の対象となる画像（入力画像）を表した画像データＤを、メモリーカードＭＣ等、所定の記録メディアから取得する。ここで言う入力画像は静止画である。むろん、顔画像検出部２０は、プリンター１０がハードディスクドライブ（ＨＤＤ）を有していれば、当該ＨＤＤに保存されている画像データＤを取得可能であるし、上述したようにＩ／Ｆ部１３を介して接続した上記外部機器から画像データＤを取得可能である。画像データＤは、複数の画素からなるビットマップデータであり、例えば各画素は、ＲＧＢ各チャネルの階調（例えば、０〜２５５の２５６階調）の組み合わせで表現されている。
【００２０】
図３は、画像データＤの一例を示している。当該一例にかかる画像データＤには、人の顔Ｐ１，Ｐ２，Ｐ３が写っている。ここで、顔Ｐ１は、略正面を向いた正面顔であるが、顔の上下方向が画像データＤの上下方向に対して傾いている。顔Ｐ２は、傾きの無い正面顔である。顔Ｐ３は、傾きは無いが、顔全体が画像データＤにおける左側（画像に向かって左側）に振れている振り顔（横顔）である。
【００２１】
Ｓ２００では、顔画像検出部２０は、画像データＤを対象として正面顔検出処理を実行する。なお、上記入力したままの画像サイズの画像データＤを対象として、Ｓ２００以下の処理を実行する場合にはプリンター１０の処理負担が過大となることもある。そのため、顔画像検出部２０が画像データＤについて画素数を減らすなどして画像サイズを縮小し、この縮小後の画像データを対象としてＳ２００以下の処理がなされるとしてもよい。本実施形態では、縮小後の画像データについても便宜上、画像データＤと表現する。
【００２２】
図４は、Ｓ２００（正面顔検出処理）の詳細をフローチャートにより示している。
Ｓ２１０では、検出窓設定部２１が、画像データＤにおいて検出窓ＳＷを一つ設定する。検出窓設定部２１は一例として、以下のように検出窓ＳＷを設定する。
【００２３】
図５は、画像データＤにおいて検出窓ＳＷを設定する様子を示している。検出窓設定部２１は、一回目のＳ２１０では、画像内の先頭位置（例えば、画像の左上の角位置）に複数の画素を含む所定大きさの矩形状の検出窓ＳＷ（２点鎖線）を設定する。検出窓設定部２１は、二回目以降のＳ２１０の度に、それまで検出窓ＳＷを設定していた位置から検出窓ＳＷを画像の左右方向およびまたは上下方向に所定距離（所定画素数分）移動させ、移動先の位置において検出窓ＳＷを新たに一つ設定する。検出窓設定部２１は、検出窓ＳＷの大きさを維持した状態で画像データＤの最終位置（例えば、画像の右下の角位置）まで検出窓ＳＷを移動させながら繰り返し検出窓ＳＷを設定したら、先頭位置に戻って検出窓ＳＷを設定する。
【００２４】
検出窓設定部２１は、検出窓ＳＷを先頭位置に戻した場合には、それまでよりも矩形の大きさを縮小した検出窓ＳＷを設定する。その後、検出窓設定部２１は上記と同様に、検出窓ＳＷの大きさを維持した状態で画像データＤの最終位置まで検出窓ＳＷを移動させつつ、各位置において検出窓ＳＷ設定する。検出窓設定部２１は、検出窓ＳＷの大きさを予め決められた回数だけ段階的に縮小しながら、このような検出窓ＳＷの移動と設定を繰り返す（検出窓ＳＷの変更を繰り返す）。このようにＳ２１０において検出窓ＳＷが一つ設定される度に、Ｓ２２０以降の処理が行なわれる。
Ｓ２２０では、正面顔検出部２２が、直近のＳ２１０で設定された検出窓ＳＷ内の画像情報に基づいて正面顔の有無を判定する。
【００２５】
図６は、正面顔検出部２２が上記判定に用いる正面顔検出器２２ａを示す図である。正面顔検出器２２ａは、直列的に接続された複数（Ｎ個）の判定ステージＳｔ１〜ＳｔＮを備える。各判定ステージＳｔでは、一以上の矩形フィルターＦを検出窓ＳＷ内の画像に適用した結果に基づいて、正面顔が存在し得る旨を示す値「Ａｃｃｅｐｔ」または正面顔が存在しない旨を示す「Ｒｅｊｅｃｔ」のどちらかを判定結果として出力する。最初の判定ステージＳｔ１において「Ａｃｃｅｐｔ」が出力された場合にのみ、次の判定ステージＳｔ２による判定が行われる。判定ステージＳｔ２以降においても「Ａｃｃｅｐｔ」を出力した場合にのみ次の判定ステージＳｔに進み、最後の判定ステージＳｔＮで「Ａｃｃｅｐｔ」が出力された場合に、正面顔検出器２２ａは、検出窓ＳＷ内に正面顔が存在する（正面顔の検出成功）と判定する。一方、いずれかの判定ステージＳｔにおいて「Ｒｅｊｅｃｔ」を出力した時点で、正面顔検出器２２ａは、検出窓ＳＷ内に正面顔が存在しない（正面顔の検出不成功）と判定する。
【００２６】
図７は、判定ステージＳｔ１において検出窓ＳＷ内の画像に予め用意された矩形フィルターＦ１１を適用する様子を例示している。ここでは検出窓ＳＷ内の画像を画像データＷＤと示す。図７では、画像データＷＤに矩形フィルターＦ１１（矩形フィルターＦの一種）が重畳された様子を示している。画像データＷＤ、矩形フィルターＦ１１はともに正方形で同一サイズであるとする。矩形フィルターＦ１１内には、画像の特徴量を抽出するための領域Ａ１１ａ，Ａ１１ｂが設定されている。図７の例では、矩形フィルターＦ１１を重畳した画像データＷＤが仮に正面顔を含んでいれば当該顔の鼻が存在すると推定される範囲に領域Ａ１１ａが設定されており、かつ、矩形フィルターＦ１１を重畳した画像データＷＤが仮に正面顔を含んでいれば当該顔の左右の頬が存在すると推定される範囲に領域Ａ１１ｂが設定されている。正面顔検出器２２ａは、画像データＷＤに矩形フィルターＦ１１を重畳したときに、領域Ａ１１ａ内の画素の輝度の総和Ｙsum1を算出するとともに、領域Ａ１１ｂ内の画素の輝度の総和Ｙsum2を算出する。そして、これら両総和の差分Ｅ（絶対値）が所定のしきい値Ｔｈ１１以上であれば、正面顔らしさが高いとして、矩形フィルターＦ１１の適用結果（フィルター判定値）として値Ｕ１１を出力する。逆に、当該差分Ｅがしきい値Ｔｈ１１より小さい場合には、正面顔らしさが低いとして、フィルター判定値として値Ｖ１１を出力する。Ｕ１１＞Ｖ１１である。しきい値Ｔｈ１１、値Ｕ１１，Ｖ１１はいずれも、矩形フィルターＦ１１に対応して予め設定されている所定値である。
【００２７】
判定ステージＳｔ１においては、矩形フィルターＦ１１以外にも複数の予め用意された矩形フィルターＦを用いて、上記矩形フィルターＦ１１を適用したときと同様に、各矩形フィルターＦを画像データＷＤに適用することにより、各矩形フィルターＦによるフィルター判定値をそれぞれ取得する。各矩形フィルターＦ間においては、画像の特徴量を抽出するための領域（上記領域Ａ１１ａ，Ａ１１ｂに対応するもの）は互いに位置や大きさが異なり、また上記差分Ｅ等との比較に用いる上記しきい値や、上記出力するフィルター判定値も同じとは限らない。そして、判定ステージＳｔ１では、各矩形フィルターＦを適用した結果得られた各フィルター判定値の総和を計算し、フィルター判定値の総和が判定ステージＳｔ１に対して予め設定されている所定のしきい値以上であれば「Ａｃｃｅｐｔ」を出力し、フィルター判定値の総和が判定ステージＳｔ１に対して予め設定されているしきい値より小さければ「Ｒｅｊｅｃｔ」を出力する。以降の判定ステージＳｔ２〜ＳｔＮに進んだ場合も同様に、ステージ毎に用意された複数の矩形フィルターＦを用い、フィルター判定値の総和についてのしきい値判定を行うことで、「Ａｃｃｅｐｔ」又は「Ｒｅｊｅｃｔ」を出力する。むろん、使用する矩形フィルターＦの数や中身や、フィルター判定値の総和と比較するためのしきい値も、判定ステージ毎に異なるとしてもよい。つまり本実施形態の画像処理装置では、正面を向く顔画像や略正面を向く顔画像と、それ以外の顔画像と、からなる複数のサンプル画像データに基づいて学習することにより各矩形フィルターＦや各しきい値やフィルター判定値などを最適化した上記正面顔検出器２２ａが、予め用意されている。
【００２８】
Ｓ２３０では、正面顔検出部２２は、直近のＳ２２０における判定結果に応じて処理を分岐する。つまり、直近のＳ２２０で正面顔の検出成功となった場合にはＳ２４０に進み、一方、直近のＳ２２０で正面顔の検出不成功となった場合にはＳ２５０に進む。
Ｓ２４０では、正面顔検出部２２は、直近のＳ２１０で設定された検出窓ＳＷ（顔画像の検出に成功した検出窓ＳＷ）に関する情報を、内部メモリー１２の所定領域に記録する。ここで記録する情報とは、検出窓ＳＷの位置（例えば、画像データＤ内における検出窓ＳＷの中心座標）、検出窓ＳＷの矩形のサイズ、検出窓ＳＷ内に存在する（存在するはずの）顔画像の向きおよび矩形フィルターＦの回転角度、等である。以下では、顔画像の検出に成功した検出窓ＳＷを、検出成功窓ＳＳＷとも呼ぶ。
【００２９】
本願で「顔（顔画像）の向き」といった場合には、顔の「振り」および顔の「傾き」を含む意味である。顔の「振り」には、左右方向への振り（図３の顔Ｐ３参照）や上下方向への振りがあり、正面向き（振り無し）を基準として顔が上下左右のいずれかに振れている状況を言う。顔の「傾き」とは、顔の上下方向の、画像データＤの上下方向に対する傾き（図３の顔Ｐ１参照）または画像データＤの左右方向に対する傾きを言う。当該Ｓ２００（正面顔検出処理）においては、顔画像は傾きの無い正面顔として検出されるため、「顔画像の向き」としては、顔の振り無しかつ顔の傾き無し、という情報が記録される。
【００３０】
「矩形フィルターＦの回転角度」とは、Ｓ２２０で正面顔検出器２２ａが検出窓ＳＷの画像に矩形フィルターＦを重畳させる際に矩形フィルターＦを回転させた場合の回転角であり、０°（回転せず）、９０°、１８０°、２７０°のいずれかである。一回のＳ２２０の最中では矩形フィルターＦの回転角は共通となる。前述のＳ２２０についての説明では、矩形フィルターＦは回転させていないため、（Ｓ２３０を挟んで）直後のＳ２４０では、矩形フィルターＦの回転角度は「０°」として記録される。当該Ｓ２００（正面顔検出処理）では、一回設定された検出窓ＳＷに対してＳ２２０〜Ｓ２４０の処理を矩形フィルターＦの回転角の種類分（４回）繰り返す（Ｓ２５０参照）。つまり、二回目のＳ２２０では各矩形フィルターＦを上記０°を基準として９０°回転させた上で検出窓ＳＷに適用し、三回目のＳ２２０では各矩形フィルターＦを上記０°を基準として１８０°回転させた上で検出窓ＳＷに適用し、四回目のＳ２２０では各矩形フィルターＦを上記０°を基準として２７０°回転させた上で検出窓ＳＷに適用する。このようにすれば、検出窓ＳＷ内の顔の上方向が検出窓ＳＷの上下左右のどちらを指していても、検出窓ＳＷ内の顔を検出することができる。
【００３１】
Ｓ２６０では、検出窓設定部２１が、図５を用いて説明した検出窓ＳＷの設定方法の思想の下、検出窓ＳＷを移動させ更にその大きさを縮小したりして未だ検出窓ＳＷを設定する余地があれば、Ｓ２１０に戻り、新たに検出窓ＳＷを画像データＤ内に一つ設定する。一方、検出窓ＳＷの縮小を上記予め決められた回数分重ね、可能な検出窓ＳＷの設定を全て終えた場合には、Ｓ２７０に進む。
Ｓ２７０では、重複窓統合部２５が、これまでのＳ２１０〜Ｓ２６０の処理により画像データＤ上で得られた検出成功窓ＳＳＷが互いに重複する場合に、重複する検出成功窓ＳＳＷを統合する。重複窓統合部２５は、上記Ｓ２４０で内部メモリー１２に記録された情報（検出成功窓ＳＳＷの位置およびサイズ）を参照することにより、画像データＤ上で重複する検出成功窓ＳＳＷを特定し、統合する。
【００３２】
図８は、画像データＤを対象としてＳ２１０〜Ｓ２６０の処理を行なった場合に、正面顔の検出に成功したものとして記録された複数の検出成功窓ＳＳＷ（検出成功窓ＳＳＷ１〜ＳＳＷ７）を例示している。ただし図８では、画像データＤの一部範囲のみを示している。上述したように、検出窓ＳＷは画像データＤ上にて位置を数画素分ずらしながら、またサイズを変更しながら繰り返し設定される。そのため、図８に示すように、傾きの無い正面顔である顔Ｐ２近傍では位置やサイズが多少異なる複数の検出窓ＳＷによって正面顔検出が成功している。重複窓統合部２５は、複数の検出成功窓ＳＳＷの中からそれらの重なり度合いに応じて、統合すべき複数の検出成功窓ＳＳＷを特定する。例えば、重複窓統合部２５は、一つの検出成功窓ＳＳＷを注目窓とした場合、この注目窓内の所定パーセント（例えば７０パーセント程度）以上の面積と重なっている他の検出成功窓ＳＳＷがある場合に、当該注目窓と他の検出成功窓ＳＳＷとを統合すべきものとして特定する。
【００３３】
重複窓統合部２５は、画像データＤ上で得られた検出成功窓ＳＳＷ全てについて順番に上記のように注目窓とすることで、統合すべき検出成功窓ＳＳＷの集合を特定する。図８の例では、検出成功窓ＳＳＷ１〜ＳＳＷ６について、これらは多くの面積が重なり合っているため統合すべき集合として特定される。検出成功窓ＳＳＷ７は、検出成功窓ＳＳＷ１と一部重なっているが、重なっている面積が小さいため、上記統合すべき集合の中に入らない。検出成功窓ＳＳＷ７は、実際には傾きの無い正面顔が存在していないにもかかわらず検出成功窓ＳＳＷとして記録されてしまった（傾きの有る正面顔（顔Ｐ１）等を傾きの無い正面顔として検出した）ものである。言い換えると、画像データＤ上で検出成功窓ＳＳＷが多く重なっている領域ほど、実際にそのとき検出対象とした顔（ここでは傾きの無い正面顔）が存在している可能性が高い。
【００３４】
重複窓統合部２５は、上記統合すべきものとして特定した検出成功窓ＳＳＷの集合（検出成功窓ＳＳＷ１〜ＳＳＷ６）について、これらを統合して新たな検出成功窓ＳＳＷを生成する。例えば、当該集合を構成する各検出成功窓ＳＳＷ１〜ＳＳＷ６の位置およびサイズを平均化し、この平均化した位置およびサイズを有する矩形を、新たな検出成功窓ＳＳＷ８とする。図８では、この検出成功窓ＳＳＷ８を鎖線で例示している。重複窓統合部２５は、検出成功窓ＳＳＷ８に関する情報（位置、サイズ、顔画像の向きおよび矩形フィルターＦの回転角度）を内部メモリー１２に記録するとともに、検出成功窓ＳＳＷ８の統合元となった上記集合にかかる各検出成功窓ＳＳＷ１〜ＳＳＷ６に関する情報を、内部メモリー１２から消去する。検出成功窓ＳＳＷ８に関する情報のうち、顔画像の向きおよび矩形フィルターＦの回転角度は、統合元となった検出成功窓ＳＳＷ１〜ＳＳＷ６の顔画像の向き（顔の振り無しかつ顔の傾き無し）および矩形フィルターＦの回転角度（０°）と同じである。なお、統合元となった検出成功窓ＳＳＷ１〜ＳＳＷ６間においては、矩形フィルターＦの回転角度は共通であると考えて差し支えない。
【００３５】
Ｓ２８０では、顔画像検出部２０は、Ｓ２１０〜Ｓ２７０の処理の結果、現在、内部メモリー１２に記録されている検出窓ＳＷ（検出成功窓ＳＳＷ）に関する情報に、検出（成功）回数Ｖｆｅを追加する。ここでは、Ｓ２７０で統合の対象とされなかった検出成功窓ＳＳＷ（図８の例では、検出成功窓ＳＳＷ７）に対しては、検出回数Ｖｆｅ＝１という値がそれぞれ与えられる。一方、Ｓ２７０で統合により生成された検出成功窓ＳＳＷに対しては、統合元となった検出成功窓ＳＳＷの数に応じた検出回数Ｖｆｅが与えられる（検出成功窓ＳＳＷ１〜ＳＳＷ６を統合して生成された検出成功窓ＳＳＷ８については、検出回数Ｖｆｅ＝６となる）。検出回数Ｖｆｅを付与する処理は、必ずしもＳ２８０のタイミングで実行する必要はなく、Ｓ２４０およびＳ２７０のタイミングで行なうとしてもよい。Ｓ２１０〜Ｓ２６０の処理の結果、重複し合う検出成功窓ＳＳＷが無い場合は、Ｓ２７０は実行されず、またＳ２１０〜Ｓ２６０の処理の結果、検出成功窓ＳＳＷが一切無ければ、Ｓ２７０および上記検出回数の付与は実行されない（以下同様）。以上で、Ｓ２００（正面顔検出処理）が終了する。
【００３６】
Ｓ３００（図２）では、顔画像検出部２０は、画像データＤを対象として振り顔検出処理を実行する。
図９は、Ｓ３００（振り顔検出処理）の詳細をフローチャートにより示している。ここで言う振り顔検出処理は、検出対象となる顔画像が横方向（左右）の振り顔である点でＳ２００と異なるが、基本的な処理の流れはＳ２００の詳細（図４）と同様である。Ｓ３１０はＳ２１０同じである。Ｓ３２０では、振り顔検出部２３が、直近のＳ３１０で設定された検出窓ＳＷ内の画像情報に基づいて横方向の振り顔の有無を判定する。つまり本実施形態の画像処理装置では、上記正面顔検出器２２ａが予め用意されているのと同様に、横方向に振りの有る顔画像と、それ以外の顔画像と、からなる複数のサンプル画像データに基づいて学習することにより各矩形フィルターＦや各しきい値やフィルター判定値などを最適化した各判定ステージからなる振り顔検出器が、予め用意されている。そして、振り顔検出部２３は、振り顔検出器を用いることにより、検出窓ＳＷ内における横方向の振り顔の有り（振り顔の検出成功）／無し（振り顔の検出不成功）を判定する。
【００３７】
Ｓ３３０では、Ｓ２３０と同様に、振り顔検出部２３は直近のＳ３２０における判定結果に応じて処理を分岐し、振り顔の検出成功となった場合にはＳ３４０に進み、一方、振り顔の検出不成功となった場合にはＳ３５０に進む。Ｓ３４０では、Ｓ２４０と同様に、振り顔検出部２３は、直近のＳ３１０で設定された検出窓ＳＷ（顔画像の検出に成功した検出成功窓ＳＳＷ）に関する情報（位置、サイズ、顔画像の向きおよび矩形フィルターＦの回転角度）を内部メモリー１２の所定領域に記録する。当該Ｓ３００（振り顔検出処理）においては、顔画像は傾きの無い横方向の振り顔として検出されるため、「顔画像の向き」としては、顔の振り有り（横方向の振り）かつ顔の傾き無し、という情報を記録する。Ｓ３５０，Ｓ３６０は、Ｓ２５０，Ｓ２６０と同じである。Ｓ３７０では、Ｓ２７０と同様に、重複窓統合部２５が、これまでのＳ３１０〜Ｓ３６０の処理により画像データＤ上で得られた検出成功窓ＳＳＷが互いに重複する場合に、重複する検出成功窓ＳＳＷを統合する。
【００３８】
図１０は、画像データＤを対象としてＳ３１０〜Ｓ３６０の処理を行なった場合に、横方向の振り顔の検出に成功したものとして記録された複数の検出成功窓ＳＳＷ（検出成功窓ＳＳＷ９〜ＳＳＷ１６）を例示している。ただし図１０では、画像データＤの一部範囲のみを示している。図１０の例では、顔Ｐ１の位置に検出成功窓ＳＳＷ９が在り、顔Ｐ２の略半分を囲う位置に検出成功窓ＳＳＷ１０，ＳＳＷ１１が重複しており、顔Ｐ３の位置で検出成功窓ＳＳＷ１２〜ＳＳＷ１６が重複している。よって重複窓統合部２５は、検出成功窓ＳＳＷ１０，ＳＳＷ１１についてこれらを一つの新たな検出成功窓ＳＳＷ１７に統合し、検出成功窓ＳＳＷ１２〜ＳＳＷ１６についてこれらを一つの新たな検出成功窓ＳＳＷ１８に統合する。検出成功窓ＳＳＷ９〜ＳＳＷ１１は、実際には傾きの無い振り顔が存在していないにもかかわらず検出成功窓ＳＳＷとして記録されてしまった（傾きの有る正面顔（顔Ｐ１）や、傾きの無い正面顔（顔Ｐ２）の顔半分を、傾きの無い振り顔として検出した）ものである。
【００３９】
むろん当該Ｓ３７０においても、Ｓ２７０と同様に重複窓統合部２５は、統合により生成した検出成功窓ＳＳＷ１７，ＳＳＷ１８それぞれについて、情報（位置、サイズ、顔画像の向きおよび矩形フィルターＦの回転角度）を内部メモリー１２に記録する。また、検出成功窓ＳＳＷ１７の統合元となった検出成功窓ＳＳＷ１０，ＳＳＷ１１に関する情報および検出成功窓ＳＳＷ１８の統合元となった検出成功窓ＳＳＷ１２〜ＳＳＷ１６に関する情報は、内部メモリー１２から消去する。検出成功窓ＳＳＷ１７，１８に関する情報のうち、顔画像の向きおよび矩形フィルターＦの回転角度は、統合元となった検出成功窓ＳＳＷ１０，ＳＳＷ１１、検出成功窓ＳＳＷ１２〜ＳＳＷ１６の顔画像の向き（顔の振り有り（横方向の振り）かつ顔の傾き無し）および矩形フィルターＦの回転角度（０°）と同じである。
【００４０】
Ｓ３８０では、Ｓ２８０と同様に顔画像検出部２０は、Ｓ３１０〜Ｓ３７０の処理の結果、現在、内部メモリー１２に記録されている検出成功窓ＳＳＷに関する情報に、検出（成功）回数Ｖｐｅを追加する。ここでは、Ｓ３７０で統合の対象とされなかった検出成功窓ＳＳＷ（図１０の例では、検出成功窓ＳＳＷ９）に対しては、検出回数Ｖｐｅ＝１という値が与えられる。一方、Ｓ３７０で統合により生成された検出成功窓ＳＳＷ１７に対しては、統合元となった検出成功窓ＳＳＷ１０，ＳＳＷ１１の数に応じた検出回数Ｖｐｅ＝２が与えられ、同じく統合により生成された検出成功窓ＳＳＷ１８に対しては、統合元となった検出成功窓ＳＳＷ１２〜ＳＳＷ１６の数に応じた検出回数Ｖｐｅ＝５が与えられる。以上で、Ｓ３００（振り顔検出処理）が終了する。
【００４１】
Ｓ４００（図２）では、画像回転部２４が、画像データＤ全体を所定角度回転させる。
Ｓ５００では、顔画像検出部２０が、Ｓ４００で回転させられた後の画像データＤを対象として正面顔検出処理を実行する。Ｓ５００で実行する正面顔検出処理は、Ｓ２００の正面顔検出処理（図４参照）と同じである。ただし、画像データＤに設定される検出窓ＳＷの矩形は、画像データＤ自体が傾いているために、図１１に示すように画像データＤの縦辺および横辺のいずれとも平行とならない。図１１では、Ｓ４００において時計回り方向（＋側）に３０°回転させられた画像データＤ内に、検出窓ＳＷを設定する様子を示している。
【００４２】
Ｓ５００における正面顔検出処理では、正面顔の検出に成功したと判定された検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ２４０に相当する処理）、および、複数の検出成功窓ＳＳＷを統合した後の検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ２７０に相当する処理）、顔画像の向きについては、顔の振り無しかつ顔の傾き有り（傾き＝−３０°）、という情報を記録する。つまり、Ｓ４００で画像データＤを時計回り方向（＋側）に３０°回転させた上で、正面顔が有ると判定されたということは、当該顔は画像データＤ内で画像データＤの上下方向または左右方向に対して反時計回り方向（−側）に３０°程度傾いていると言えるため、顔の傾き有り（傾き＝−３０°）と記録する。また、Ｓ５００における正面顔検出処理では、Ｓ２１０〜Ｓ２７０に相当する処理の結果、内部メモリー１２に検出成功窓ＳＳＷに関する情報が記録されている場合は、かかる情報に検出（成功）回数Ｖｆｇを追加する（Ｓ２８０に相当する処理）。この場合も、統合の対象とされなかった検出成功窓ＳＳＷに対しては、検出回数Ｖｆｇ＝１が与えられ、統合により生成された検出成功窓ＳＳＷに対しては、統合元となった検出成功窓ＳＳＷの数に応じた検出回数Ｖｆｇが与えられる。図３に例示した画像データＤが処理対象である場合、反時計回り方向に約３０°傾いた正面顔は存在しないため、当該Ｓ５００で顔画像が検出される可能性は高くない。
【００４３】
Ｓ６００では、顔画像検出部２０が、Ｓ４００で回転させられた後の画像データＤを対象として振り顔検出処理を実行する。Ｓ６００で実行する振り顔検出処理は、Ｓ３００の振り顔検出処理（図９参照）と同じである。Ｓ６００における振り顔検出処理では、振り顔の検出に成功したと判定された検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ３４０に相当する処理）、および、複数の検出成功窓ＳＳＷを統合した後の検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ３７０に相当する処理）、顔画像の向きについては、顔の振り有り（横方向の振り）かつ顔の傾き有り（傾き＝−３０°）、という情報を記録する。また、Ｓ６００における振り顔検出処理では、Ｓ３１０〜Ｓ３７０に相当する処理の結果、内部メモリー１２に検出成功窓ＳＳＷに関する情報が記録されている場合は、かかる情報に検出（成功）回数Ｖｐｇを追加する（Ｓ３８０に相当する処理）。この場合も、統合の対象とされなかった検出成功窓ＳＳＷに対しては、検出回数Ｖｐｇ＝１が与えられ、統合により生成された検出成功窓ＳＳＷに対しては、統合元となった検出成功窓ＳＳＷの数に応じた検出回数Ｖｐｇが与えられる。図３に例示した画像データＤが処理対象である場合、反時計回り方向に約３０°傾いた振り顔は存在しないため、当該Ｓ６００で顔画像が検出される可能性は高くない。
【００４４】
Ｓ７００では、画像回転部２４が、画像データＤ全体を、Ｓ４００で回転させた方向とは逆方向に所定角度回転させる。Ｓ８００では、顔画像検出部２０が、Ｓ７００で回転させられた後の画像データＤを対象として正面顔検出処理を実行する。Ｓ８００で実行する正面顔検出処理は、Ｓ５００の正面顔検出処理と同じである。画像データＤに設定される検出窓ＳＷの矩形は、画像データＤ自体が傾いているために、図１２に示すように画像データＤの縦辺および横辺のいずれとも平行とならない。図１２では、Ｓ４００で回転させた画像データＤを、Ｓ７００において反時計回り方向（−側）に６０°回転させた上で、Ｓ８００で画像データＤ内に検出窓ＳＷを設定する様子を示している。
【００４５】
Ｓ８００における正面顔検出処理では、正面顔の検出に成功したと判定された検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ２４０に相当する処理）、および、複数の検出成功窓ＳＳＷを統合した後の検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ２７０に相当する処理）、顔画像の向きについては、顔の振り無しかつ顔の傾き有り（傾き＝＋３０°）、という情報を記録する。つまり、Ｓ７００で画像データＤを反時計回り方向（−側）に６０°回転させた上で、正面顔が有ると判定されたということは、当該顔は画像データＤ内で画像データＤの上下方向または左右方向に対して時計回り方向（＋側）に３０°程度傾いていると言えるため、顔の傾き有り（傾き＝＋３０°）、と記録する。Ｓ８００においても、Ｓ５００と同様に、検出成功窓ＳＳＷに関する情報として検出（成功）回数Ｖｆｇが追加され得る（Ｓ２８０に相当する処理）。図３に例示した画像データＤが処理対象である場合、時計回り方向に約３０°傾いた正面顔（顔Ｐ１）が存在するため、当該Ｓ８００では、顔Ｐ１を含む位置に検出成功窓ＳＳＷ（複数の検出成功窓ＳＳＷが統合された検出成功窓ＳＳＷ）が生じる可能性が高い。
【００４６】
Ｓ９００では、顔画像検出部２０が、Ｓ７００で回転させられた後の画像データＤを対象として振り顔検出処理を実行する。Ｓ９００で実行する振り顔検出処理は、Ｓ６００の振り顔検出処理と同じである。Ｓ９００における振り顔検出処理では、振り顔の検出に成功したと判定された検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ３４０に相当する処理）、および、複数の検出成功窓ＳＳＷを統合した後の検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ３７０に相当する処理）、顔画像の向きについては、顔の振り有り（横方向の振り）かつ顔の傾き有り（傾き＝＋３０°）、という情報を記録する。Ｓ９００においても、Ｓ６００と同様に、検出成功窓ＳＳＷに関する情報として検出（成功）回数Ｖｐｇが追加され得る（Ｓ３８０に相当する処理）。図３に例示した画像データＤが処理対象である場合、時計回り方向に約３０°傾いた振り顔は存在しないため、当該Ｓ９００で顔画像が検出される可能性は高くない。
【００４７】
図１３は、Ｓ１００〜Ｓ９００を経て内部メモリー１２に記録された検出成功窓ＳＳＷ（統合されずに残った検出成功窓ＳＳＷおよび、複数の検出成功窓ＳＳＷが統合されて生成された検出成功窓ＳＳＷ）を画像データＤ上に示している。図１３においては、検出成功窓ＳＳＷ７，ＳＳＷ８，ＳＳＷ９，ＳＳＷ１７，ＳＳＷ１８，ＳＳＷ１９，ＳＳＷ２０を例示している。検出成功窓ＳＳＷ７，ＳＳＷ８は、上述したようにＳ２００で記録されたものであり（図８参照）、検出成功窓ＳＳＷ９，ＳＳＷ１７，ＳＳＷ１８は、上述したようにＳ３００で記録されたものである（図１０参照）。また、検出成功窓ＳＳＷ１９は、Ｓ８００（傾き有りの正面顔検出）で記録されたものであり、例えば、検出回数Ｖｆｇ＝６である。また、検出成功窓ＳＳＷ２０は、Ｓ９００（傾き有りの振り顔検出）で記録されたものであり、例えば、検出回数Ｖｐｇ＝１である。図１３から判るように、顔Ｐ１上に検出成功窓ＳＳＷ７，ＳＳＷ９，ＳＳＷ１９が重なっており、顔Ｐ２上に検出成功窓ＳＳＷ８，ＳＳＷ１７が重なっており、顔Ｐ３上に検出成功窓ＳＳＷ１８，ＳＳＷ２０が重なっている。つまり、画像データＤにおいては、Ｓ１００〜Ｓ９００の処理を行なった結果、顔Ｐ１〜Ｐ３のいずれについても複数の顔の向きが検出されている。
【００４８】
Ｓ１０００では、顔画像決定部３０が、このようなＳ１００〜Ｓ９００を経て内部メモリー１２に記録された検出成功窓ＳＳＷの情報の中から、二つの検出成功窓ＳＳＷにかかる情報を比較対象として読み出す。
Ｓ１１００では、顔画像決定部３０は、直近のＳ１０００で比較対象とした二つの検出成功窓ＳＳＷにかかる各情報を参照して、これら二つの検出成功窓ＳＳＷが重複しているか否か判定する。当該判定においても、例えば、二つの検出成功窓ＳＳＷのうち一方を注目窓とし、注目窓内の所定パーセント以上の面積が他方の検出成功窓ＳＳＷと重複している場合に、当該二つの検出成功窓ＳＳＷが重複していると判定する。当該Ｓ１１００において、二つの検出成功窓ＳＳＷが重複していると判定されたときの当該二つの検出成功窓ＳＳＷで形成する領域は、特許請求の範囲に言う向き重複領域の一種に該当する。
【００４９】
顔画像決定部３０は、Ｓ１１００で二つの検出成功窓ＳＳＷが重複していると判定した場合にＳ１２００に進み、一方、二つの検出成功窓ＳＳＷが重複していないと判定した場合にＳ１４００に進む。Ｓ１２００では、顔画像決定部３０は、直近のＳ１１００で重複していると判定された二つの検出成功窓ＳＳＷにかかる各情報（検出回数）を参照して、これら重複している二つの検出成功窓ＳＳＷのうちいずれか一方を選択する。
【００５０】
図１４は、Ｓ１２００の詳細をフローチャートにより示している。Ｓ１２１０では、顔画像決定部３０は、そのとき比較対象としている二つの検出成功窓ＳＳＷそれぞれの、顔画像の向きの検出結果の信頼度を各々の検出回数に基づいて算出する。この場合、顔画像決定部３０は、検出回数＝信頼度としてもよい。例えば、互いに重複している検出成功窓ＳＳＷ８と検出成功窓ＳＳＷ１７と（図１３参照）を比較対象とした場合、検出成功窓ＳＳＷ８にかかる顔の向き（顔の振り無しかつ顔の傾き無し）の信頼度は、検出成功窓ＳＳＷ８についての検出回数Ｖｆｅ（＝６）となり、検出成功窓ＳＳＷ１７にかかる顔の向き（顔の振り有りかつ顔の傾き無し）の信頼度は、検出成功窓ＳＳＷ１７についての検出回数Ｖｐｅ（＝２）となる。
【００５１】
ただし本実施形態では、顔画像決定部３０は、検出成功窓ＳＳＷの検出回数を、顔画像の向きに対応する所定の補正係数でそれぞれ補正することにより、上記向き重複領域における、顔画像の向き毎の検出結果の信頼度を算出する。本実施形態では、正面顔（振り無し）にかかる補正係数をａとし、振り顔にかかる補正係数をｂとしており、補正係数ａ，ｂについては予め定められた値としている。従って、顔画像決定部３０は、上記検出成功窓ＳＳＷ８の顔の向き（顔の振り無しかつ顔の傾き無し）の信頼度は、検出成功窓ＳＳＷ８についての検出回数Ｖｆｅ×ａとし、検出成功窓ＳＳＷ１７の顔の向き（顔の振り有りかつ顔の傾き無し）の信頼度は、検出成功窓ＳＳＷ１７についての検出回数Ｖｐｅ×ｂとして算出する。
【００５２】
このように顔画像の向き毎に異なる補正係数ａ，ｂを予め用意するのは、向きが異なる顔にかかる検出成功窓ＳＳＷの検出回数における「１」が示す検出の確かさが、一致しないからである。つまり、正面顔検出部（正面顔検出器）２２による正面顔の検出精度と、振り顔検出部（振り顔検出器）２３による振り顔の検出精度は、必ずしも一致しない。特に、振り顔検出部２３は、検出対象である振り顔の多様性が高いために、その検出精度を高めることが正面顔検出部２２よりも困難である。そこで本実施形態では、上述したように正面顔にかかる検出成功窓ＳＳＷについての検出回数と、振り顔にかかる検出成功窓ＳＳＷについての検出回数とをそれぞれの顔の向きに対応する補正係数ａ，ｂでそれぞれ補正することで、上記検出精度の違いを補償し、補正後の両値を対比可能としている。ここでは基本的に、ａ＞ｂとしている。
【００５３】
Ｓ１２２０では、顔画像決定部３０は、上記比較対象としている二つの検出成功窓ＳＳＷ毎の信頼度を比較し、二つの信頼度間に差があるか否か判定する。信頼度間に差がある場合はＳ１２６０に進み、高い方の信頼度にかかる検出成功窓ＳＳＷを選択する。上記のように検出成功窓ＳＳＷ８にかかる信頼度と、検出成功窓ＳＳＷ１７にかかる信頼度とを比較した場合、検出回数が多くかつ正面顔である検出成功窓ＳＳＷ８にかかる信頼度の方が基本的には勝り、Ｓ１２６０では検出成功窓ＳＳＷ８が選択される。一方、Ｓ１２２０において二つの信頼度間に差が無いと判定した場合、顔画像決定部３０は、顔の向き間の所定の優先順位に基づいて、上記比較対象としている二つの検出成功枠ＳＳＷのうち一方を選択する。
【００５４】
この場合、顔画像決定部３０は、Ｓ１２３０において、正面顔と振り顔との比較であるか否か判定する。上述したように検出成功窓ＳＳＷ８と検出成功窓ＳＳＷ１７とを比較対象としている場合、これは正面顔にかかる検出成功窓ＳＳＷ８と振り顔にかかる検出成功窓ＳＳＷ１７との比較であるため、当該Ｓ１２３０で“Ｙｅｓ”の判定になる。この場合、顔画像決定部３０はＳ１２７０に進み、正面顔にかかる検出成功窓ＳＳＷを選択する。つまり、信頼度が等しい場合に、正面顔と振り顔との比較であれば正面顔を優先する（向き重複領域に正面顔が存在する、という判断を優先する）。一方、Ｓ１２３０において、正面顔と振り顔との比較に該当しないと判定した場合、顔画像決定部３０はＳ１２４０に進む。例えば、傾き無しの正面顔にかかる検出成功窓ＳＳＷ７と、傾き有りの正面顔にかかる検出成功窓ＳＳＷ１９と（図１３参照）の比較であれば、正面顔と振り顔との比較に該当しない。
【００５５】
Ｓ１２４０では、顔画像決定部３０は、傾き無しの顔画像と傾き有りの顔画像との比較であるか否か判定する。例えば、検出成功窓ＳＳＷ７と検出成功窓ＳＳＷ１９とを比較対象としている場合、これは傾き無しの顔画像にかかる検出成功窓ＳＳＷ７と傾き有りの顔画像にかかる検出成功窓ＳＳＷ１９との比較であるため、当該Ｓ１２４０で“Ｙｅｓ”の判定になる。この場合、顔画像決定部３０は、Ｓ１２８０に進み、傾き無しの顔画像にかかる検出成功窓ＳＳＷを選択する。つまり、信頼度が等しくかつ正面顔と振り顔との比較でない場合は、傾き無しの顔画像を優先する（向き重複領域に傾き無しの顔画像が存在する、という判断を優先する）。
【００５６】
一方、Ｓ１２４０において、傾き無しの顔画像と傾き有りの顔画像との比較に該当しないと判定した場合、顔画像決定部３０はＳ１２５０に進む。Ｓ１２５０に進んだということは、基本的には、そのとき比較対象としている二つの検出成功窓ＳＳＷは、信頼度が等しくかつ顔画像の向きが同じと考えられる。これは、本来一つの検出成功窓ＳＳＷに統合されるべきものが二つに分かれてしまっていると考えられるため、顔画像決定部３０は、そのとき比較対象としている二つの検出成功窓ＳＳＷを統合する。統合の手法は上述した通りである。そして、統合後の検出成功窓ＳＳＷにかかる情報を内部メモリー１２に記録する。Ｓ１２５０に進むケースは極めて稀と考えられる。
【００５７】
Ｓ１３００（図２）では、顔画像決定部３０は、Ｓ１２００で選択されなかった方の検出成功窓ＳＳＷにかかる情報を消去する。なお、Ｓ１２００において上記Ｓ１２５０の処理が実行された場合には、Ｓ１２５０で統合された検出成功窓ＳＳＷの統合元となった二つの検出成功窓ＳＳＷにかかる情報を消去する。この結果、直近のＳ１１００で重複していると判定された検出成功窓ＳＳＷ間の重複状態が解消される。つまりこれにより、Ｓ１１００で重複していると判定された二つの検出成功窓ＳＳＷのうち、Ｓ１２００で選択された方の検出成功窓ＳＳＷにかかる顔画像の向きが、当該二つの検出成功窓ＳＳＷが対応している領域に存在する顔画像の向きとして（他に重複している検出成功窓ＳＳＷが無ければ）決定される。
【００５８】
Ｓ１４００では、顔画像決定部３０は、そのとき内部メモリー１２に情報が記録されている検出成功窓ＳＳＷの中で、未だＳ１０００で比較対象としていない検出成功窓ＳＳＷの組み合わせが存在する場合、Ｓ１０００に戻り、この比較対象としていない組み合わせにかかる二つの検出成功窓ＳＳＷの情報を新たな比較対象として読み出す。一方、Ｓ１４００において顔画像決定部３０は、そのとき情報が記録されている検出成功窓ＳＳＷの全ての組み合わせについてＳ１０００で比較対象としたと判定した場合、顔画像検出・決定処理を終了させる。
【００５９】
図１５は、Ｓ１４００で検出成功窓ＳＳＷの全組み合わせについてＳ１０００で比較対象としたと判定された時点での、画像データＤにおける検出成功窓ＳＳＷを例示している。図１５（Ｓ１４００が終了した時点）と図１３（Ｓ９００が終了した時点）とを比較すると、顔Ｐ１上で重複していた検出成功窓ＳＳＷ７，ＳＳＷ９，ＳＳＷ１９のうち、検出成功窓ＳＳＷ７，ＳＳＷ９が消去され、顔Ｐ２上で重複していた検出成功窓ＳＳＷ８，ＳＳＷ１７のうち検出成功窓ＳＳＷ１７が消去され、顔Ｐ３上で重複していた検出成功窓ＳＳＷ１８，ＳＳＷ２０のうち検出成功窓ＳＳＷ２０が消去されたことが判る。言い換えると、顔画像決定部３０は、検出成功窓ＳＳＷ７，ＳＳＷ９，ＳＳＷ１９が重複していた領域には、検出成功窓ＳＳＷ１９に関する顔の向き（振り無しかつ傾き有り（傾き＝＋３０°））の顔画像が存在すると決定し、検出成功窓ＳＳＷ８，ＳＳＷ１７が重複していた領域には、検出成功窓ＳＳＷ８に関する顔の向き（振り無しかつ傾き無し）の顔画像が存在すると決定し、検出成功窓ＳＳＷ１８，ＳＳＷ２０が重複していた領域には、検出成功窓ＳＳＷ１８に関する顔の向き（振り有り（横方向の振り）かつ傾き無し）の顔画像が存在すると決定したことになる。
【００６０】
このように本実施形態によれば、プリンター１０は、画像データＤにおいて検出窓ＳＷの位置や大きさを変更しながら検出窓ＳＷを繰り返し設定し、検出窓ＳＷを設定する度に、検出窓ＳＷ内の画像情報に基づいて、ある向きについての顔画像の検出を試みる。そして、当該向きの顔画像の検出を繰り返したとき、検出に成功した検出成功窓ＳＳＷが複数重複する場合には、当該重複する複数の検出成功窓ＳＳＷを一つに統合するとともに、当該重複する領域での検出回数（統合元の検出成功窓ＳＳＷの数）を記録する。また、このような処理を検出対象の顔の向きを変更して複数の顔の向きについて行なう。その結果、異なる顔の向きにかかる検出成功窓ＳＳＷが重複する場合、つまり同じ顔について複数の向きが検出された場合は、重複する検出成功窓ＳＳＷ毎の顔の向きの信頼度を、当該重複する検出成功窓ＳＳＷ毎の検出回数に基づいて算出し、信頼度が高い方の検出成功窓ＳＳＷにかかる顔の向きを、当該重複する領域に存在する顔画像の向きに決定するとした。そのため、画像データ上で同じ顔について複数の向きが検出された場合に、当該顔について、その向き（顔の振りや顔の傾き）を高い精度で且つ従来よりも高速に決定することができる。そして、このように画像データ上で複数の向きが検出された顔について向きを正確に決定することで、顔の向きを情報として要する種々の処理、例えば、顔を対象とした変形処理や、人物の監視処理などを、正確に行なうことが可能となる。
【００６１】
３．変形例
本発明は上述した実施形態に限られるものではなく、その要旨を逸脱しない範囲において種々の態様で実施することが可能であり、以下のような各変形例も可能である。むろん、上記実施形態や各変形例を組み合わせた構成も、本発明の範囲となる。以下に説明しない事項に関しては、既に述べた事項が適用される。
【００６２】
変形例１：
顔画像検出部２０は、画像データＤ上において、検出対象とする複数の顔の向きのうち一の顔の向きについて顔画像の有無を判定する処理を検出窓ＳＷを変更して複数回実行する過程で、顔画像を検出できた回数が所定のしきい値を超えた領域については、以後、当該一の顔の向きおよび他の顔の向きにかかる顔画像の検出のために検出窓ＳＷを設定する対象から除外するとしてもよい。つまり、顔画像検出部２０は、ある向きの顔画像（例えば、傾き無しの正面顔）について検出窓ＳＷの繰り返しの設定による検出を行なう過程で、検出成功窓ＳＳＷの重複が発生した場合には、重複が発生する度に、当該重複が発生している領域における検出成功窓ＳＳＷの重複回数（つまり上記検出回数）をカウントする。このようなカウントは、傾き無しの正面顔検出（Ｓ２００）であれば、上記Ｓ２４０で行なう。
【００６３】
そして、検出成功窓ＳＳＷのある集団（互いに重複している検出成功窓ＳＳＷの集団）についてのカウント値が所定のしきい値を超えたタイミングで、顔画像検出部２０は、この検出成功窓ＳＳＷの集団について上述したように統合し、統合後の検出成功窓ＳＳＷに関する情報（検出回数含む）を内部メモリー１２に記録する。そして、この統合後の検出成功窓ＳＳＷに対応する画像データＤ内の領域については、以後、顔画像検出の対象から除外し、検出窓ＳＷの設定も行なわない。つまり、当該カウント値がしきい値を超えたことをもって、当該領域にそのとき検出対象としていた向きの顔が確実に存在するとし、当該領域についてはそれ以上の顔画像検出処理は行なわない。この結果、例えば、傾き無しの振り顔検出（Ｓ３００）の途中で、当該しきい値を超える数の傾き無しの振り顔についての検出成功窓ＳＳＷが重複する領域があった場合、その重複する検出成功窓ＳＳＷを統合した後の検出成功窓ＳＳＷにかかる領域については、他の向きについての顔画像の検出も含めて以降の顔画像検出を行なわなくてもよいため、プリンター１０の処理負担を大幅に低減することができる。
【００６４】
変形例２：
上記では画像処理装置がプリンター１０によって具現化される例を示したが、画像処理装置は、例えば、ＰＣや、サーバーや、デジタルスチルカメラや、スキャナー等、各種画像処理機器によって実現されてもよい。つまり、これら各種画像処理機器が、少なくとも上記顔画像検出部２０および顔画像決定部３０と同じ機能を備え、入力画像に対して上記顔画像検出・決定処理を実行する。
【００６５】
変形例３：
画像処理装置は、入力画像が静止画であるか動画であるかに応じて、顔画像の向きと上記補正係数ａ，ｂとの対応関係を変更するとしてもよい。図１６は、変形例にかかるシステムを簡易的に示している。変形例では、カメラ６０で撮影され生成された画像データが、カメラ６０と有線又は無線で通信可能に接続されたＰＣ７０に出力される。ＰＣ７０は、本実施形態にかかる画像処理装置の一例に該当し、所定のプログラムを実行することにより顔画像検出部２０および顔画像決定部３０の機能を実現する。カメラ６０は静止画と動画とのいずれも撮影可能である。かかる構成において、ＰＣ７０は、カメラ６０から入力した画像データについて、静止画であるか動画であるかを判定する。静止画であるか動画であるかは、例えば、画像データに付されているヘッダの情報や画像のファイル形式等を参照して判断する。ＰＣ７０は、静止画であると判定した場合には、静止画用に予め設定された補正係数ａ，ｂを採用し、動画であると判定した場合には、動画用に予め設定された補正係数ａ，ｂを採用する。静止画用の補正係数ａ，ｂには、ａ＞ｂの関係があり、動画用の補正係数ａ，ｂには、ａ＜ｂの関係がある。
【００６６】
具体的には、静止画としての画像データに対して上記のように顔画像検出・決定処理を実行する際には、正面顔（振り無し）にかかる検出成功窓ＳＳＷの検出回数については、静止画用に設定された補正係数ａで補正して信頼度を算出し、振り顔にかかる検出成功窓ＳＳＷの検出回数については、静止画用に設定された補正係数ｂで補正して信頼度を算出する。一方、動画としての画像データの各コマに対して上記のように顔画像検出・決定処理を実行する際には、正面顔にかかる検出成功窓ＳＳＷの検出回数については、動画用に設定された補正係数ａで補正して信頼度を算出し、振り顔にかかる検出成功窓ＳＳＷの検出回数については、動画用に設定された補正係数ｂで補正して信頼度を算出する。
【００６７】
当該構成によれば、入力画像が静止画であれば、画像内から検出された顔画像の向きが振り無し（正面向き）として決定されやすくなり、入力画像が動画であれば、画像内から検出された顔画像の向きが振り有りと決定されやすくなる。つまり、静止画については人物を正面から撮影することが多いため、上記のようにａ＞ｂとすることで、実体に即した顔画像の向き（正面向き）が決定され易くなる（正面顔を振り顔と決定してしまうことが避けられる）。一方、動画を撮影するビデオカメラにおいては、防犯カメラ等、通行人を横から撮影することが多い。そのため、上記のようにｂ＞ａとすることで、ビデオカメラで撮影した動画の実体に即した顔画像の向き（横向き）が決定され易くなる（振り顔を正面顔と決定してしまうことが避けられる）。また、入力画像が動画である場合には、Ｓ１２３０（図１４）において、正面顔と振り顔との比較であると判定したときには、Ｓ１２７０において、振り顔にかかる検出成功窓ＳＳＷを選択するとしてもよい。
【００６８】
変形例４：
上記では、振り顔検出部（振り顔検出器）２３は、横方向の振り顔を検出対象としていたが、これに加えて、上下方向の振り顔を検出するとしてもよい。上下方向の振り顔とは、上向き傾向にある振り顔（上振り顔）又はうつむき傾向にある振り顔（下振り顔）を意味する。つまり変形例では、画像処理装置において、上記正面顔検出器２２ａおよび（横方向の振り顔検出のための）振り顔検出器が予め用意されているのと同様に、上下方向に振りの有る顔画像と、それ以外の顔画像と、からなる複数のサンプル画像データに基づいて学習することにより各矩形フィルターＦや各しきい値やフィルター判定値などを最適化した各判定ステージからなる上下方向の振り顔検出のための振り顔検出器が、予め用意されている。そして、振り顔検出部２３は、上下方向の振り顔検出のための振り顔検出器を用いることにより、以下のＳ３５０，Ｓ６５０，Ｓ９５０を実行し、検出窓ＳＷ内の画像について上下方向の振り顔の有り（振り顔の検出成功）／無し（振り顔の検出不成功）を判定する。
【００６９】
Ｓ３５０，Ｓ６５０，Ｓ９５０は、例えば、図１７に示すように、上記図２のＳ１００〜Ｓ１０００間の所定タイミングに組み込まれて実行される。Ｓ３５０では、顔画像検出部２０が、画像データＤを対象として上下方向の振り顔検出処理を実行する。Ｓ３５０で実行する振り顔検出処理は、上下方向の振り顔検出のための振り顔検出器を用いる点が異なる以外は、Ｓ３００（図９参照）と基本的に同じである。Ｓ３５０における振り顔検出処理では、振り顔の検出に成功したと判定された検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ３４０に相当する処理）、および、複数の検出成功窓ＳＳＷを統合した後の検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ３７０に相当する処理）、顔画像の向きについては、顔の振り有り（上下方向の振り）かつ顔の傾き無し、という情報を記録する。
【００７０】
Ｓ６５０では、顔画像検出部２０が、Ｓ４００で回転させられた後の画像データＤを対象として上下方向の振り顔検出処理を実行する。Ｓ６５０で実行する振り顔検出処理は、Ｓ３５０の振り顔検出処理と同じである。ただしＳ６５０における振り顔検出処理では、振り顔の検出に成功したと判定された検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ３４０に相当する処理）、および、複数の検出成功窓ＳＳＷを統合した後の検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ３７０に相当する処理）、顔画像の向きについては、顔の振り有り（上下方向の振り）かつ顔の傾き有り（傾き＝−３０°）、という情報を記録する。Ｓ９５０では、顔画像検出部２０が、Ｓ７００で回転させられた後の画像データＤを対象として上下方向の振り顔検出処理を実行する。Ｓ９５０で実行する振り顔検出処理は、Ｓ６５０の振り顔検出処理と同じである。ただしＳ９５０における振り顔検出処理では、振り顔の検出に成功したと判定された検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ３４０に相当する処理）、および、複数の検出成功窓ＳＳＷを統合した後の検出成功窓ＳＳＷに関する情報を内部メモリー１２に記録する場合（Ｓ３７０に相当する処理）、顔画像の向きについては、顔の振り有り（上下方向の振り）かつ顔の傾き有り（傾き＝＋３０°）、という情報を記録する。
【００７１】
このように顔画像検出部２０が顔の振りに関し、振り無し（正面顔）、横方向の振り有り、上下方向の振り有り、それぞれについて検出窓ＳＷを介して検出可能である場合、顔画像決定部３０は、Ｓ１２１０（図１４）で信頼度を算出する場合に補正係数ａ，ｂ，ｃを用いる。ｂは横方向の振り顔にかかる検出成功窓ＳＳＷの検出回数を補正して信頼度を算出するための補正係数であり、ｃは上下方向の振り顔にかかる検出成功窓ＳＳＷの検出回数を補正して信頼度を算出するための補正係数である。基本的には、ｂ＝ｃの関係にあり、例えば、入力画像が静止画であればａ＞ｂ＝ｃ、入力画像が動画であれば、ａ＜ｂ＝ｃとする。このように顔画像検出部２０が顔の振りに関し、振り無し（正面顔）、横方向の振り有り、上下方向の振り有り、それぞれについて検出窓ＳＷを介して検出可能である場合、顔画像決定部３０は、以下のＳ１２４５，Ｓ１２９０を実行する。
【００７２】
Ｓ１２４５は、例えば図１８に示すように、上記図１４のＳ１２２０で比較対象となっている二つの検出成功窓ＳＳＷの信頼度間に差が無いと判定された後の所定タイミングに組み込まれて実行される。この例では、顔画像決定部３０は、Ｓ１２４０でＮｏと判定された後、Ｓ１２４５において、横方向の振り顔と上下方向の振り顔との比較であるか否か判定しＹｅｓであればＳ１２９０に進み、ＮｏであればＳ１２５０に進む。Ｓ１２９０では、予め定められた優先基準（ここでは、横方向の振り顔を優先するものとする。）に基づいて、横方向の振り顔にかかる検出成功窓ＳＳＷと上下方向の振り顔にかかる検出成功窓ＳＳＷとのうちいずれか一方を選択する。ただし、実際に画像データ上で横方向の振り顔にかかる検出成功窓ＳＳＷと上下方向の振り顔にかかる検出成功窓ＳＳＷとが重複することは殆ど無いと考えられる。
【００７３】
補正係数ａ，ｂ，ｃの大小関係は上述したものに限られない。例えば、入力画像が、想定される被写体を被写体の上方位置や下方位置から撮影するような位置に配設されているカメラ６０（例えばＡＴＭの防犯カメラ）によって撮影されるものである場合、補正係数ａ，ｂ，ｃのうち補正係数ｃをより大きな値に設定し、入力画像から検出される顔の向きが上下方向への振りに決定され易くしても良い。また、入力画像が、想定される被写体を被写体の横方向から撮影するような位置に配設されているカメラ６０（例えば通行人を撮影するカメラ）によって撮影されるものである場合、補正係数ａ，ｂ，ｃのうち補正係数ｂをより大きな値に設定し、入力画像から検出される顔の向きが横方向への振りに決定され易くしても良い。つまり、カメラ６０の撮影位置や角度に応じて、補正係数ａ，ｂ，ｃの設定を変更するとしてもよい。
【符号の説明】
【００７４】
１０…プリンター、１１…ＣＰＵ、１２…内部メモリー、１３…Ｉ／Ｆ部、１６…プリンターエンジン、１７…カードＩ／Ｆ、２０…顔画像検出部、２１…検出窓設定部、２２…正面顔検出部、２３…振り顔検出部、２４…画像回転部、２５…重複窓統合部、３０…顔画像決定部、４０…表示処理部、５０…印刷処理部、６０…カメラ、７０…ＰＣ、１７２…カードスロット
【図１】
2011134045.tif 000003
【図２】
2011134045.tif 000004
【図３】
2011134045.tif 000005
【図４】
2011134045.tif 000006
【図５】
2011134045.tif 000007
【図６】
2011134045.tif 000008
【図７】
2011134045.tif 000009
【図８】
2011134045.tif 000010
【図９】
2011134045.tif 000011
【図１０】
2011134045.tif 000012
【図１１】
2011134045.tif 000013
【図１２】
2011134045.tif 000014
【図１３】
2011134045.tif 000015
【図１４】
2011134045.tif 000016
【図１５】
2011134045.tif 000017
【図１６】
2011134045.tif 000018
【図１７】
2011134045.tif 000019
【図１８】
2011134045.tif 000020