(57)【特許請求の範囲】
【請求項１】
１つのフレームを構成し、かつ、行方向および列方向に配列された複数の画素の複数の輝度に基づいて１つの行および１つの列のいずれか一方に含まれる各画素の輝度の累積値を前記行方向または前記列方向に演算する累積処理を全ての行または全ての列に対して並行して実行する累積モジュールと、
特徴を画素の明暗の差によって表したＨａａｒ特徴を前記行方向または前記列方向に所望の画素数分ずつ移動させながら走査して前記Ｈａａｒ特徴の明暗差に一致する明暗差を有する画素領域の個数の累積値である個数累積値を前記Ｈａａｒ特徴を複数のＨａａｒ特徴に変えながら演算する特徴検出処理を並列して実行する特徴検出モジュールと、
前記特徴検出処理が実行されたときに同じ画素領域に対して演算された複数の前記個数累積値をしきい値と比較し、前記しきい値以上の個数累積値が検出されたとき、前記特徴を検出したと判定し、前記しきい値よりも小さい個数累積値が検出されたとき、前記特徴が検出されなかったと判定する判定処理を並列して実行する特徴判定モジュールとを備え、
前記累積処理は、１つの行の左端の画素を第０番目の画素とした場合、前記第０番目の画素の輝度から第ｇ（ｇは正の整数）番目の画素における輝度までを加算した値を前記第ｇ番目の画素の累積値とする処理であり、
前記特徴検出モジュールは、前記Ｈａａｒ特徴を前記行方向に走査する場合、前記特徴検出処理を複数の行について並列して実行し、前記Ｈａａｒ特徴を前記列方向に走査する場合、前記特徴検出処理を複数の列について並列して実行し、
前記複数のＨａａｒ特徴は、
白領域と黒領域とによって構成された１つのパターンからなる単一Ｈａａｒ特徴と、
各々が白領域と黒領域とによって構成された複数のパターンからなる混合Ｈａａｒ特徴とを含む、特徴検出装置。
【請求項２】
前記特徴検出モジュールは、
前記複数のＨａａｒ特徴のサイズを算出するサイズ算出モジュールと、
前記サイズ算出モジュールによって算出されたサイズを有する前記複数のＨａａｒ特徴を用いて前記特徴検出処理を並列して実行する一致処理モジュールとを含み、
前記サイズ算出モジュールは、前記一致処理モジュールが前記複数のＨａａｒ特徴の１つのサイズに対して前記特徴検出処理を並列して実行するとともに前記特徴判定モジュールが前記複数のＨａａｒ特徴の１つのサイズに対して前記判定処理を並列して実行するごとに前記複数のＨａａｒ特徴のサイズを大きくする、請求項１に記載の特徴検出装置。
【請求項３】
前記１つのフレームのサイズを縮小する画像縮小モジュールを更に備え、
前記サイズ算出モジュールは、各Ｈａａr特徴を含む走査ウィンドウのサイズを算出し、
前記画像縮小モジュールは、前記走査ウィンドウのサイズが前記１つのフレームの前記行方向のサイズまたは前記１つのフレームの前記列方向のサイズよりも大きくなるごとに前記１つのフレームのサイズを縮小する、請求項２に記載の特徴検出装置。
【請求項４】
前記混合Ｈａａｒ特徴の複数のパターンは、前記行方向および前記列方向の幅が相互に同じであり、かつ、前記行方向の両端の位置が相互に同じである、請求項１に記載の特徴検出装置。
【請求項５】
前記累積モジュールは、メモリと演算器とを含み、かつ、前記演算器が前記メモリから同じクロックでデータを読み出して演算する演算装置によって前記累積処理を実行し、
前記特徴検出モジュールは、前記演算装置によって前記個数累積値を演算する、請求項１に記載の特徴検出装置。
【請求項６】
特徴検出をコンピュータに実行させるためのプログラムであって、
累積モジュールが、１つのフレームを構成し、かつ、行方向および列方向に配列された複数の画素の複数の輝度に基づいて１つの行および１つの列のいずれか一方に含まれる各画素の輝度の累積値を前記行方向または前記列方向に演算する累積処理を全ての行または全ての列に対して並行して実行する第１のステップと、
特徴検出モジュールが、特徴を画素の明暗の差によって表したＨａａｒ特徴を前記行方向または前記列方向に所望の画素数分ずつ移動させながら走査して前記Ｈａａｒ特徴の明暗差に一致する明暗差を有する画素領域の個数の累積値である個数累積値を前記Ｈａａｒ特徴を複数のＨａａｒ特徴に変えながら演算する特徴検出処理を並列して実行する第２のステップと、
特徴判定モジュールが、前記特徴検出処理が実行されたときに同じ画素領域に対して演算された複数の前記個数累積値をしきい値と比較し、前記しきい値以上の個数累積値が検出されたとき、前記特徴を検出したと判定し、前記しきい値よりも小さい個数累積値が検出されたとき、前記特徴が検出されなかったと判定する判定処理を並列して実行する第３のステップとをコンピュータに実行させ、
前記累積処理は、１つの行の左端の画素を第０番目の画素とした場合、前記第０番目の画素の輝度から第ｇ（ｇは正の整数）番目の画素における輝度までを加算した値を前記第ｇ番目の画素の累積値とする処理であり、
前記特徴検出処理は、前記Ｈａａｒ特徴が前記行方向に走査される場合、複数の行について並列して実行され、前記Ｈａａｒ特徴が前記列方向に走査される場合、複数の列について並列して実行され、
前記複数のＨａａｒ特徴は、
白領域と黒領域とによって構成された１つのパターンからなる単一Ｈａａｒ特徴と、
各々が白領域と黒領域とによって構成された複数のパターンからなる混合Ｈａａｒ特徴とを含む、コンピュータに実行させるためのプログラム。
【請求項７】
前記第２のステップは、
サイズ算出モジュールが、前記複数のＨａａｒ特徴のサイズを算出する第１のサブステップと、
一致処理モジュールが、前記サイズ算出モジュールによって算出されたサイズを有する前記複数のＨａａｒ特徴を用いて前記特徴検出処理を並列して実行する第２のサブステップとを含み、
前記サイズ算出モジュールは、前記第１のサブステップにおいて、前記一致処理モジュールが前記複数のＨａａｒ特徴の１つのサイズに対して前記特徴検出処理を並列して実行するとともに前記特徴判定モジュールが前記複数のＨａａｒ特徴の１つのサイズに対して前記判定処理を並列して実行するごとに前記複数のＨａａｒ特徴のサイズを大きくする、請求項６に記載のコンピュータに実行させるためのプログラム。
【請求項８】
画像縮小モジュールが、前記１つのフレームのサイズを縮小する第４のステップを更にコンピュータに実行させ、
前記サイズ算出モジュールは、前記第１のサブステップにおいて、各Ｈａａr特徴を含む走査ウィンドウのサイズを算出し、
前記画像縮小モジュールは、前記第４のステップにおいて、前記走査ウィンドウのサイズが前記１つのフレームの前記行方向のサイズまたは前記１つのフレームの前記列方向のサイズよりも大きくなるごとに前記１つのフレームのサイズを縮小する、請求項７に記載のコンピュータに実行させるためのプログラム。
【請求項９】
前記混合Ｈａａｒ特徴の複数のパターンは、前記行方向および前記列方向の幅が相互に同じであり、かつ、前記行方向の両端の位置が相互に同じである、請求項８に記載のコンピュータに実行させるためのプログラム。
【請求項１０】
請求項６から請求項９のいずれか１項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、特徴検出装置、特徴検出をコンピュータに実行させるためのプログラム、およびそのプログラムを記録したコンピュータ読み取り可能な記録媒体に関するものである。
【背景技術】
【０００２】
近年、画像などから意味のある特徴を抽出する技術が盛んに研究されている。そして、この技術は、ロボットビジョン、侵入者の監視、および入出管理等のセキュリティシステム、携帯電話、プリンタ、デジタルカメラ等のデジタル家電機器等、多岐にわたる分野で応用されている。
【０００３】
特徴抽出アルゴリズムには、サポートベクターマシン（非特許文献１）またはブースティング（非特許文献２，３）を用いたものが知られている。この特徴抽出アルゴリズムは、高い動作周波数のプロセッサまたはＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）において、ビデオレート（３０ｆｐｓ）での処理が可能なレベルに達してきている。
【０００４】
特に、Ｖｉｏｌａ等によって開発された顔検出器は、高い識別性能と高速な処理を両立した手法である（非特許文献２，３）。これは、人間の顔の特徴を画素の明暗差で表したＨａａr特徴を用いた高速演算可能な顔検出器を用いることと、少数の弱識別器をＡｄａＢｏｏｓｔアルゴリズムで組み合わせることにより、高い識別率と高速な処理が実現可能であることを示している。この手法は、物体における、ある画素領域間の明暗差を捉える弱識別器で構成されているため、絶対的な明度値に依存せず、照明条件の変動やノイズの影響を小さくできるという利点がある。また、このような検出処理に有効な明暗特徴は、様々な物体に適用できるため、様々な物体の検出に幅広く用いることができる。実際に、犬の顔および車の検出と言った人の顔以外のオブジェクトに対しての検出を行った例も存在する（非特許文献４，５）。
【０００５】
また、Ｈａａｒ特徴を用いて１つのフレームに含まれる顔を並列して検出する並列顔検出処理手法が知られている（非特許文献７〜９）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】E. Osuna, R. Freund, and F. Girosi, “Training support vector machines: An application to face detection,” In Proc. Of Conf. Computer Vision and Pattern Recognition, pp. 130-136, 1997.
【非特許文献２】P. Viola and M. Jones, “Robust real-time object detection,” In IEEE ICCV Workshop on Statistical and Computational Theories of Vision, July 2001.
【非特許文献３】P. Viola and M. Jones, “Rapid object detection using a boosted cascade of simple feature,” In Proc. Of the IEEE Conf. on Computer Vision and Pattern Recognition, pp. 905-910, 2001.
【非特許文献４】賀谷晃太，“２クラス判別学習による類似特徴を有した異種物体認識システムの研究”  修士論文，広島大学，２００７．
【非特許文献５】谷川昌司，日高章理，佐野夏樹，西田健次，栗田多喜夫，“矩形特徴による弱識別器のブースティングによる対象検出手法の汎化性能向上のための工夫と車載カメラの映像中の車の検出への応用，”ＩＳＳ０５，  ２００５．
【非特許文献６】Open source Computer Vision Library http://opencv.jp
【非特許文献７】熊木  武志，田上  正治，今井  雄太，小出  哲士，マタウシュ ハンス  ユルゲン，“超並列SIMD型演算プロセッサMX-1を用いた並列顔検出処理手法 (1)”，2008年電子情報通信学会ソサイエティ大会，C-12-30，(2008.9)．
【非特許文献８】今井  雄太，熊木  武志，田上  正治，小出  哲士，マタウシュ ハンス  ユルゲン，“超並列SIMD型演算プロセッサMX-1による並列顔検出処理手法 (2)”，2008年電子情報通信学会ソサイエティ大会，C-12-31，(2008.9)．
【非特許文献９】Y. Imai, T. Kumaki, T. Koide, H. J. Mattausch, “High-Speed Face Detectionin Images with Massive-Parallel Bit-Serial SIMD Processor Using Haar-LikeFeatures,” Extended Abstracts of the 2009 International Conference on Solid State Devices and Materials (SSDM2009),pp.464-465,(2009.10).
【発明の概要】
【発明が解決しようとする課題】
【０００７】
従来のプロセッサは、積分画像（Integral  Image）ii(x, y)を用いてＨａａｒ特徴を計算する。このIntegral  Image ii(x, y)は、画像の原点から座標（x, y）までの輝度値の和を計算したものである。そして、入力画像i(x, y)から求められるIntegral  Image ii(x, y)は、次式によって表される。
【０００８】
【数１】
0005390363.tif 000002
【０００９】
そして、図１４のＤ領域の輝度値を求めたい場合、Ｄ領域の輝度値は、図１４に示す４点のIntegral Image Ｐ１〜Ｐ４を用いて次式によって表される。
【００１０】
【数２】
0005390363.tif 000003
【００１１】
しかし、並列プロセッサにおいてIntegral  Imageを用いて各領域の輝度値の和を求めると、並列プロセッサは、Integral  Imageを座標（ｘ，ｙ）から求めるため、非常に多くの計算を行う必要があり、各領域の輝度値の和を迅速に求めることが困難であるという問題がある。したがって、顔検出を迅速に行うことが困難である。
【００１２】
そこで、この発明は、かかる問題を解決するためになされたものであり、その目的は、特徴を迅速に検出可能な特徴検出装置を提供することである。
【００１３】
また、この発明の別の目的は、特徴の迅速な検出をコンピュータに実行させるためのプログラムを提供することである。
【００１４】
さらに、この発明の別の目的は、特徴の迅速な検出をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体を提供することである。
【課題を解決するための手段】
【００１５】
この発明によれば、特徴検出装置は、累積モジュールと、特徴検出モジュールと、特徴判定モジュールとを備える。累積モジュールは、１つのフレームを構成し、かつ、行方向および列方向に配列された複数の画素の複数の輝度に基づいて１つの行および１つの列のいずれか一方に含まれる各画素の輝度の累積値を行方向または列方向に演算する累積処理を全ての行または全ての列に対して並行して実行する。特徴検出モジュールは、特徴を画素の明暗の差によって表したＨａａｒ特徴を行方向または列方向に所望の画素数分ずつ移動させながら走査してＨａａｒ特徴の明暗差に一致する明暗差を有する画素領域の個数の累積値である個数累積値をＨａａｒ特徴を複数のＨａａｒ特徴に変えながら演算する特徴検出処理を並列して実行する。特徴判定モジュールは、特徴検出処理が実行されたときに同じ画素領域に対して演算された複数の個数累積値をしきい値と比較し、しきい値以上の個数累積値が検出されたとき、特徴を検出したと判定し、しきい値よりも小さい個数累積値が検出されたとき、特徴が検出されなかったと判定する判定処理を並列して実行する。累積処理は、１つの行の左端の画素を第０番目の画素とした場合、第０番目の画素の輝度から第ｇ（ｇは正の整数）番目の画素における輝度までを加算した値を第ｈ番目の画素の累積値とする処理である。複数の走査は、列方向または行方向の相互に異なる複数の位置におけるＨａａｒ特徴の走査からなる。複数のＨａａｒ特徴は、白領域と黒領域とによって構成された１つのパターンからなる単一Ｈａａｒ特徴と、各々が白領域と黒領域とによって構成された複数のパターンからなる混合Ｈａａｒ特徴とを含む。
【００１６】
好ましくは、特徴検出モジュールは、サイズ算出モジュールと、一致処理モジュールとを含む。サイズ算出モジュールは、複数のＨａａｒ特徴のサイズを算出する。一致処理モジュールは、サイズ算出モジュールによって算出されたサイズを有する複数のＨａａｒ特徴を用いて特徴検出処理を並列して実行する。そして、サイズ算出モジュールは、一致処理モジュールが複数のＨａａｒ特徴の１つのサイズに対して特徴検出処理を並列して実行するとともに特徴判定モジュールが複数のＨａａｒ特徴の１つのサイズに対して判定処理を並列して実行するごとに複数のＨａａｒ特徴のサイズを大きくする。
【００１７】
好ましくは、特徴検出装置は、画像縮小モジュールを更に備える。画像縮小モジュールは、１つのフレームのサイズを縮小する。サイズ算出モジュールは、各Ｈａａr特徴を含む走査ウィンドウのサイズを算出する。画像縮小モジュールは、走査ウィンドウのサイズが１つのフレームの行方向のサイズまたは１つのフレームの列方向のサイズよりも大きくなるごとに１つのフレームのサイズを縮小する。
【００１８】
好ましくは、混合Ｈａａｒ特徴の複数のパターンは、行方向および列方向の幅が相互に同じであり、かつ、行方向の両端の位置が相互に同じである。
【００１９】
好ましくは、累積モジュールは、メモリと演算器とを含み、かつ、演算器がメモリから同じクロックでデータを読み出して演算する演算装置によって累積処理を実行する。特徴検出モジュールは、演算装置によって個数累積値を演算する。
【００２０】
また、この発明によれば、プログラムは、特徴検出をコンピュータに実行させるためのプログラムであって、累積モジュールが、１つのフレームを構成し、かつ、行方向および列方向に配列された複数の画素の複数の輝度に基づいて１つの行および１つの列のいずれか一方に含まれる各画素の輝度の累積値を行方向または列方向に演算する累積処理を全ての行または全ての列に対して並行して実行する第１のステップと、特徴検出モジュールが、特徴を画素の明暗の差によって表したＨａａｒ特徴を行方向または列方向に所望の画素数分ずつ移動させながら走査してＨａａｒ特徴の明暗差に一致する明暗差を有する画素領域の個数の累積値である個数累積値をＨａａｒ特徴を複数のＨａａｒ特徴に変えながら演算する特徴検出処理を並列して実行する第２のステップと、特徴判定モジュールが、特徴検出処理が実行されたときに同じ画素領域に対して演算された複数の個数累積値をしきい値と比較し、しきい値以上の個数累積値が検出されたとき、特徴を検出したと判定し、しきい値よりも小さい個数累積値が検出されたとき、特徴が検出されなかったと判定する判定処理を並列して実行する第３のステップとをコンピュータに実行させる。累積処理は、１つの行の左端の画素を第０番目の画素とした場合、第０番目の画素の輝度から第ｇ（ｇは正の整数）番目の画素における輝度までを加算した値を第ｈ番目の画素の累積値とする処理である。複数の走査は、列方向または行方向の相互に異なる複数の位置におけるＨａａｒ特徴の走査からなる。複数のＨａａｒ特徴は、白領域と黒領域とによって構成された１つのパターンからなる単一Ｈａａｒ特徴と、各々が白領域と黒領域とによって構成された複数のパターンからなる混合Ｈａａｒ特徴とを含む。
【００２１】
好ましくは、第２のステップは、サイズ算出モジュールが、複数のＨａａｒ特徴のサイズを算出する第１のサブステップと、一致処理モジュールが、サイズ算出モジュールによって算出されたサイズを有する複数のＨａａｒ特徴を用いて特徴検出処理を並列して実行する第２のサブステップとを含む。サイズ算出モジュールは、第１のサブステップにおいて、一致処理モジュールが複数のＨａａｒ特徴の１つのサイズに対して特徴検出処理を並列して実行するとともに特徴判定モジュールが複数のＨａａｒ特徴の１つのサイズに対して判定処理を並列して実行するごとに複数のＨａａｒ特徴のサイズを大きくする。
【００２２】
好ましくは、プログラムは、画像縮小モジュールが、１つのフレームのサイズを縮小する第４のステップを更にコンピュータに実行させ、サイズ算出モジュールは、第１のサブステップにおいて、各Ｈａａr特徴を含む走査ウィンドウのサイズを算出し、画像縮小モジュールは、第４のステップにおいて、走査ウィンドウのサイズが１つのフレームの行方向のサイズまたは１つのフレームの列方向のサイズよりも大きくなるごとに１つのフレームのサイズを縮小する。
【００２３】
好ましくは、混合Ｈａａｒ特徴の複数のパターンは、行方向および列方向の幅が相互に同じであり、かつ、行方向の両端の位置が相互に同じである。
【００２４】
さらに、この発明によれば、記録媒体は、請求項６から請求項９のいずれか１項に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【発明の効果】
【００２５】
この発明においては、入力画像の各画素の輝度を累積する累積処理は、入力画像の行方向または列方向へ並行して実行される。また、Ｈａａｒ特徴の形状に基づく画素領域の明暗差の演算、Ｈａａｒ特徴の形状に基づく画素領域の明暗差とＨａａｒ特徴の明暗差との一致の検証および一致の検証の結果を示す累積値に基づく特徴検出が入力画像の行方向または列方向へ並行して実行される。
【００２６】
したがって、この発明によれば、特徴を迅速に検出できる。
【図面の簡単な説明】
【００２７】
【図１】この発明の実施の形態による特徴検出装置の機能ブロック図である。
【図２】入力画像の概念図である。
【図３】画素の輝度の累積値を計算する方法を説明するための図である。
【図４】この発明の実施の形態におけるＨａａｒ特徴の概念図である。
【図５】スキャンウィンドウの走査方法を説明するための図である。
【図６】画素とＨａａｒ特徴との一致を検出する方法を説明するための図である。
【図７】画素とＨａａｒ特徴との一致を検出する他の方法を説明するための図である。
【図８】画素とＨａａｒ特徴との一致を検出するさらに他の方法を説明するための図である。
【図９】画素とＨａａｒ特徴との一致を検出するさらに他の方法を説明するための図である。
【図１０】画素とＨａａｒ特徴との一致を検出するさらに他の方法を説明するための図である。
【図１１】図１に示す特徴検出装置の動作を説明するためのフローチャートである。
【図１２】図１に示す特徴検出装置のハード構成を示す構成図である。
【図１３】図１２に示すＳＩＭＤアクセラレータの構成図である。
【図１４】従来の積分画像（Integral  Image）を説明するための図である。
【発明を実施するための最良の形態】
【００２８】
本発明の実施の形態について図面を参照しながら詳細に説明する。なお、図中同一または相当部分には同一符号を付してその説明は繰返さない。
【００２９】
図１は、この発明の実施の形態による特徴検出装置の機能ブロック図である。図１を参照して、この発明の実施の形態による特徴検出装置１０は、画像縮小モジュール１と、累積モジュール２と、サイズ算出モジュール３と、一致処理モジュール４と、強識別器モジュール５とを含む。
【００３０】
画像縮小モジュール１は、各フレームからなる入力画像を受ける。各フレームは、行方向および列方向に配列された複数の画素からなる。複数の画素の各々は、画素の輝度からなる。画像縮小モジュール１は、入力画像を受けると、その受けた入力画像を後述する方法によって縮小する。そして、画像縮小モジュール１は、その縮小した入力画像を累積モジュール２へ出力する。
【００３１】
また、画像縮小モジュール１は、画像を縮小するための信号ＧＳＤをサイズ算出モジュール３から受けると、その受けた信号ＧＳＤに応じて入力画像を後述する方法によって縮小する。そして、画像縮小モジュール１は、その縮小した入力画像を累積モジュール２へ出力する。
【００３２】
累積モジュール２は、画像縮小モジュール１から入力画像を受ける。そして、累積モジュール２は、その受けた入力画像の複数の画素の複数の輝度に基づいて、後述する方法によって、各画素の輝度の累積値を演算する。そうすると、累積モジュール２は、各画素が輝度の累積値からなる入力画像をサイズ算出モジュール３へ出力する。
【００３３】
サイズ算出モジュール３は、各画素が輝度の累積値からなる入力画像を累積モジュール２から受ける。そして、サイズ算出モジュール３は、後述する方法によって、スキャンウィンドウのサイズを算出する。ここで、スキャンウィンドウとは、人間の顔の特徴を明暗差で表したＨａａｒ特徴を含み、各フレームからＨａａｒ特徴に一致する特徴を検出するために用いられるものである。
【００３４】
その後、サイズ算出モジュール３は、その演算したスキャンウィンドウのサイズが入力画像の行方向の幅または列方向の幅以下であるか否かを判定する。そして、サイズ算出モジュール３は、スキャンウィンドウのサイズが入力画像の行方向の幅または列方向の幅以下であると判定したとき、その算出したスキャンウィンドウのサイズと、入力画像とを一致処理モジュール４へ出力する。
【００３５】
一方、サイズ算出モジュール３は、スキャンウィンドウのサイズが入力画像の行方向の幅または列方向の幅よりも大きいと判定したとき、信号ＧＳＤを生成し、その生成した信号ＧＳＤを画像縮小モジュール１へ出力する。
【００３６】
一致処理モジュール４は、スキャンウィンドウのサイズと入力画像とをサイズ算出モジュール３から受ける。そして、一致処理モジュール４は、Ｈａａr特徴、スキャンウィンドウのサイズおよび入力画像に基づいて、後述する方法によって、Ｈａａｒ特徴の明暗差に一致する明暗差を有する画素領域の個数の累積値である個数累積値を検出する。そうすると、一致処理モジュール４は、その検出した個数累積値を強識別器モジュール５へ出力する。
【００３７】
強識別器モジュール５は、一致処理モジュール４から個数累積値を受ける。そして、強識別器モジュール５は、その受けた個数累積値に基づいて、後述する方法によって、人間の顔を検出する。
【００３８】
図２は、入力画像の概念図である。図２を参照して、入力画像は、４個の頂点Ｏ，Ａ,Ｂ，Ｃを有する。そして、頂点Ｏは、（０，０）のｘ−ｙ座標からなり、頂点Ａは、（０，Ｙｍａｘ）のｘ−ｙ座標からなり、頂点Ｂは、（Ｘｍａｘ，Ｙｍａｘ）のｘ−ｙ座標からなり、頂点Ｃは、（Ｘｍａｘ，０）のｘ−ｙ座標からなる。
【００３９】
図１に示す画像縮小モジュール１は、画像縮小率ｓ（ｓは、ｓ＞１を満たす実数）を予め保持している。そして、画像縮小モジュール１は、次式によって、入力画像の画像サイズPicture sizeを縮小する。
【００４０】
【数３】
0005390363.tif 000004
【００４１】
なお、式（３）において、ｉは、０，１，２，３，・・・である。
【００４２】
画像縮小モジュール１は、ｉ＝０であるとき、式（３）に従って、自律的に入力画像を縮小する。また、画像縮小モジュール１は、ｉが１以上であるとき、サイズ算出モジュール３からの信号ＧＳＤに応じて、式（３）に従って入力画像を縮小する。この場合、画像縮小モジュール１は、ｉが画像縮小回数Ｉｍａｘに達するまで、式（３）に従って入力画像を縮小する。この画像縮小回数Ｉｍａｘは、予め決定されている画像の縮小回数の最大数である。
【００４３】
そして、画像縮小モジュール１は、式（３）によって入力画像を１回縮小するごとに、その縮小した入力画像を累積モジュール２へ出力する。
【００４４】
図３は、画素の輝度の累積値を計算する方法を説明するための図である。図３を参照して、入力画像の複数の画素の各々は、画素の輝度からなる（（ａ）参照）。
【００４５】
０列目の各画素の累積値は、０列目の各画素の輝度からなる。１列目の各画素の累積値は、０列目の各画素の輝度と、１列目の各画素の輝度との和からなる。２列目の各画素の累積値は、０列目の各画素の輝度と、１列目の各画素の輝度と、２列目の各画素の輝度との和からなる。そして、一般的に、ｇ（ｇは正の整数）列目の画素の累積値は、０列目の各画素の輝度からｇ列目の各画素の輝度までの和からなる（図３の（ｂ）参照）。
【００４６】
図１に示す累積モジュール２は、図３に示す計算方法に従って、各行の各画素の累積値を演算する累積処理を実行する。そして、累積モジュール２は、列方向に配置された複数の行に対して累積処理を並行して実行する。
【００４７】
累積モジュール２は、各行の画素の累積値を演算すると、各画素が累積値からなる入力画像をサイズ算出モジュール３へ出力する。
【００４８】
このように、累積モジュール２は、複数の行に対して、画素の輝度の累積処理を並行して実行する。したがって、入力画像を構成する複数の画素の累積値を迅速に演算できる。
【００４９】
サイズ算出モジュール３は、スキャンウィンドウの初期サイズｗと、スキャンウィンドウの拡大率ｅ（ｅは、１よりも大きい実数）とを予め保持している。初期サイズｗは、たとえば、２０ピクセル×２０ピクセルからなる。
【００５０】
サイズ算出モジュール３は、初期サイズｗ、拡大率ｅおよび拡大回数ｊ（ｊは正の整数）を次式に代入してスキャンウィンドウのサイズScan window sizeを算出する。ここで、拡大回数ｊは、スキャンウィンドウを拡大する回数である。
【００５１】
【数４】
0005390363.tif 000005
【００５２】
そして、サイズ算出モジュール３は、ｗｅｊ≦Ｘｍａｘであるか、またはｗｅｊ≦Ｙｍａｘであるかを判定する。
【００５３】
サイズ算出モジュール３は、ｗｅｊ≦Ｘｍａｘである、またはｗｅｊ≦Ｙｍａｘであるとき、その算出したスキャンウィンドウのサイズScan window sizeと、各画素が累積値からなる入力画像とを一致処理モジュール４へ出力する。
【００５４】
一方、サイズ算出モジュール３は、ｗｅｊがＸｍａｘおよびＹｍａｘのいずれか一方よりも大きいとき、信号ＧＳＤを生成し、その生成した信号ＧＳＤを画像縮小モジュール１へ出力する。
【００５５】
図４は、この発明の実施の形態におけるＨａａｒ特徴の概念図である。図４を参照して、この発明の実施の形態におけるＨａａｒ特徴は、パターン０〜パターン１４によって示される１５個のＨａａr特徴ＣＨ０〜ＣＨ１４からなる。そして、１５個のＨａａr特徴ＣＨ０〜ＣＨ１４の各々は、黒領域と白領域とからなる。
【００５６】
なお、図４においては、パターン０〜パターン１４の四角形の枠は、スキャンウィンドウを表す。
【００５７】
パターン０〜パターン６は、白領域と黒領域とによって構成された１個のパターンからなるＨａａr特徴ＣＨ０〜ＣＨ６がスキャンウィンドウ内の所望の位置に配置される。そして、Ｈａａr特徴ＣＨ０〜ＣＨ６は、ＯｐｅｎＣＶで用いられているＨａａｒ特徴である（非特許文献６）。
【００５８】
パターン７〜パターン１４は、各々が白領域と黒領域とによって構成された複数のパターンからなるＨａａr特徴ＣＨ７〜ＣＨ１４がスキャンウィンドウ内の所望の位置に配置される。そして、パターン７〜パターン１４によって示されるＨａａr特徴ＣＨ７〜ＣＨ１４は、この発明によって新たに考案されたパターンであり、並列処理に適したものである。なお、パターン７〜パターン１４によって示されるＨａａｒ特徴ＣＨ７〜ＣＨ１４の各々は、「混合Ｈａａｒ特徴」を構成する。
【００５９】
複数のパターンからなるＨａａｒ特徴をスキャンウィンドウ内に配置する場合の条件は、次のとおりである。
【００６０】
Ｃｎｄ１）複数のパターンの横幅（＝行方向の幅）が同じサイズであり、かつ、複数のパターンの左端および右端（横方向（＝行方向）の両端）の位置が同じである。
【００６１】
Ｃｎｄ２）複数のパターンの縦幅（＝列方向の幅）が同じサイズである。
【００６２】
水平方向（＝行方向）に画素の輝度を累積加算する方式の場合、矩形領域の輝度値の総和をＨａａr特徴の右端の累積値から左端の累積値を減算することによって実現している。そのため、複数のパターンの間で、パターンの右端と左端とが揃っていれば、並列に同時に演算可能である。したがって、複数のパターンからなるＨａａｒ特徴をスキャンウィンドウ内に配置する場合、条件Ｃｎｄ１が必要となる。
【００６３】
また、複数のパターンの縦幅が同じである場合、垂直方向（列方向）に加算を行う回数が同一であるため、並列に処理が可能である。したがって、複数のパターンからなるＨａａｒ特徴をスキャンウィンドウ内に配置する場合、条件Ｃｎｄ２が必要である。
【００６４】
パターン０〜パターン１４は、人間の顔の特徴に基づいて予め決定されたものである。そして、一致処理モジュール４は、パターン０〜パターン１４を予め保持している。
【００６５】
図５は、スキャンウィンドウの走査方法を説明するための図である。なお、図５においては、図４の（ａ）に示すパターン０からなるＨａａｒ特徴を配置したスキャンウィンドウＳＷ１を例としてスキャンウィンドウの走査方法について説明する。
【００６６】
図５を参照して、スキャンウィンドウＳＷ１は、スキャンウィンドウＳＷ１の左端が入力画像の０列目に一致するように配置される。そして、スキャンウィンドウＳＷ１は、入力画像の行方向へ所望の画素数ｍ（ｍは正の整数）分ずつ移動させられて１つの行を走査する。図５においては、ｍ＝４である。したがって、スキャンウィンドウＳＷ１は、入力画像の行方向へ４画素数分ずつ移動させられて行方向への１つの走査を行う。すなわち、スキャンウィンドウＳＷ１は、最初、位置ＰＳ１に配置され、その後、スキャンウィンドウＳＷ１は、位置ＰＳ２,ＰＳ３，・・・，ＰＳｋ（ｋは１以上の整数）へ順次移動させられて行方向への１つの走査を行う。
【００６７】
位置ＰＳ２は、スキャンウィンドウＳＷ１に含まれるＨａａr特徴の左端が位置ＰＳ１よりも行方向へ４画素数分だけ移動した位置であり、位置ＰＳ３は、スキャンウィンドウＳＷ１に含まれるＨａａr特徴の左端が位置ＰＳ２よりも行方向へ４画素数分だけ移動した位置であり、以下、同様にして、位置ＰＳｋは、スキャンウィンドウＳＷ１に含まれるＨａａr特徴の左端が位置ＰＳｋ−１よりも行方向へ４画素数分だけ移動した位置である。
【００６８】
スキャンウィンドウＳＷ２〜ＳＷｐ（ｐは１以上の正の整数）の各々は、スキャンウィンドウＳＷ１と同じ構成（すなわち、同じＨａaｒ特徴を同じ位置に含む）からなる。
【００６９】
そして、スキャンウィンドウＳＷ２は、スキャンウィンドウＳＷ１よりも１行だけ列方向にずらされた位置において、スキャンウィンドウＳＷ１と同じように位置ＰＳ１〜ＰＳｋに順次移動させられて行方向への１つの走査を行う。
【００７０】
スキャンウィンドウＳＷ３は、スキャンウィンドウＳＷ２よりも１行だけ列方向にずらされた位置において、スキャンウィンドウＳＷ１と同じように位置ＰＳ１〜ＰＳｋに順次移動させられて行方向への１つの走査を行う。
【００７１】
以下、同様にして、スキャンウィンドウＳＷｐは、スキャンウィンドウＳＷｐ−１よりも１行だけ列方向にずらされた位置において、スキャンウィンドウＳＷ１と同じように位置ＰＳ１〜ＰＳｋに順次移動させられて行方向への１つの走査を行う。
【００７２】
そして、ｐ個のスキャンウィンドウＳＷ１〜ＳＷｐの行方向への走査は、並列して行われる。
【００７３】
なお、図５においては、ｐ個のスキャンウィンドウＳＷ１〜ＳＷｐは、行方向へずらされて図示されているが、これは、ｐ個のスキャンウィンドウＳＷ１〜ＳＷｐを見易くするためであり、実際には、ｐ個のスキャンウィンドウＳＷ１〜ＳＷｐは、最初、位置ＰＳ１に配置され、その後、位置ＰＳ２〜ＰＳｋへ順次移動させられて行方向への走査を行う。
【００７４】
図６は、画素とＨａａｒ特徴との一致を検出する方法を説明するための図である。図６を参照して、スキャンウィンドウＳＷ１が図５に示す位置ＰＳ１に位置するとき、スキャンウィンドウＳＷ１内に配置されたＨａａｒ特徴ＣＨ０（図４の（ａ）参照）は、第１列〜第６列と、第１行〜第６行とによって規定される画素領域に位置する。
【００７５】
Ｈａａｒ特徴ＣＨ０のうちの黒領域（図６においては、斜線領域）は、第１列〜第６列と、第１行〜第３行とによって規定される画素領域に位置し、Ｈａａｒ特徴ＣＨ０のうちの白領域は、第１列〜第６列と、第４行〜第６行とによって規定される画素領域に位置する。
【００７６】
黒領域が位置する画素領域の行方向における輝度値の総和は、第１行〜第３行の範囲において、第６列目の累積値から第０列目の累積値を減算した値になり、白領域が位置する画素領域の行方向における輝度値の総和は、第４行〜第６行の範囲において、第６列目の累積値から第０列目の累積値を減算した値になる。
【００７７】
その結果、黒領域が位置する画素領域の行方向における輝度値の総和は、第１行において、“０００４”になり、第２行において、“０００４”になり、第３行において、“０００３”になる。
【００７８】
また、白領域が位置する画素領域の行方向における輝度値の総和は、第４行において、“０５Ａ０”になり、第５行において、“０５６Ｃ”になり、第６行において、“０５９Ｃ”になる。
【００７９】
そして、黒領域が位置する画素領域の輝度値の総和は、列方向に配置された“０００４”，“０００４”，“０００３”の総和になり、白領域が位置する画素領域の輝度値の総和は、列方向に配置された“０５Ａ０”，“０５６Ｃ”，“０５９Ｃ”の総和になる。
【００８０】
また、Ｈａａｒ特徴ＣＨ０が配置された画素領域の明暗差は、黒領域が位置する画素領域の輝度値の総和から白領域が位置する画素領域の輝度値の総和を減算したものになる。
【００８１】
したがって、Ｈａａｒ特徴ＣＨ０が配置された画素領域の明暗差は、黒領域が位置する画素領域の第１行〜第３行における輝度値の総和“０００４”，“０００４”，“０００３”を累積加算し、その累積加算の結果から白領域が位置する画素領域の第４行〜第６行における輝度値の総和“０５Ａ０”，“０５６Ｃ”，“０５９Ｃ”を累積減算することによって求められる。すなわち、Ｈａａｒ特徴ＣＨ０が配置された画素領域の明暗差は、“０００４”，“０００４”，“０００３”を列方向に累積加算し、その累積加算の結果から“０５Ａ０”，“０５６Ｃ”，“０５９Ｃ”を列方向に累積減算することによって求められる。
【００８２】
その後、最終的に演算された明暗差がＨａａr特徴ＣＨ０の明暗差と一致するか否かが判定される。そして、最終的に演算された明暗差がＨａａr特徴ＣＨ０の明暗差に一致する場合、値αｌ（ｌは、０〜１４）が累積値ｑｋに加算され、最終的に演算された明暗差がＨａａr特徴ＣＨ０の明暗差に一致しない場合、値βｌが累積値ｑｋに加算される。そうすると、累積値ｑｋが位置ＰＳ１に対応付けられて記憶される。ここで、値αｌは、画素領域の明暗差がＨａａｒ特徴の明暗差に一致することを示し、例えば、１である。また、値βｌは、画素領域の明暗差がＨａａｒ特徴の明暗差に一致しないことを示し、例えば、０である。
【００８３】
なお、図４に示すパターン７、パターン８、パターン１１、およびパターン１２のＨａａr特徴ＣＨ７，ＣＨ８，ＣＨ１１，ＣＨ１２が用いられた場合も、Ｈａａｒ特徴ＣＨ７，ＣＨ８，ＣＨ１１，ＣＨ１２が配置された画素領域の明暗差は、図６に示す方法によって演算される。
【００８４】
図７は、画素とＨａａｒ特徴との一致を検出する他の方法を説明するための図である。図７を参照して、スキャンウィンドウＳＷ１が図５に示す位置ＰＳ１に位置するとき、スキャンウィンドウＳＷ１内に配置されたＨａａｒ特徴ＣＨ１（図４の（ｂ）参照）は、第１列〜第６列と、第１行〜第６行とによって規定される画素領域に位置する。
【００８５】
Ｈａａｒ特徴ＣＨ１のうちの黒領域（図７においては、斜線領域）は、第１列および第２列と、第１行〜第６行とによって規定される画素領域と、第５列および第６列と、第１行〜第６行とによって規定される画素領域とに位置し、Ｈａａｒ特徴ＣＨ１のうちの白領域は、第３列および第４列と、第１行〜第６行とによって規定される画素領域に位置する。
【００８６】
ここで、第０列、第２列、第４列および第６列における累積値をそれぞれＰ０，Ｐ２，Ｐ４，Ｐ６とすると、左側の黒領域が位置する画素領域の行方向における輝度値の総和は、第１行〜第６行の範囲において（Ｐ２−Ｐ０）を演算した値になり、白領域が位置する画素領域の行方向における輝度値の総和は、第１行〜第６行の範囲において、（Ｐ４−Ｐ２）を演算した値になり、右側の黒領域が位置する画素領域の行方向における輝度値の総和は、第１行〜第６行の範囲において（Ｐ６−Ｐ４）を演算した値になる。
【００８７】
また、Ｈａａｒ特徴ＣＨ１が配置された画素領域の明暗差は、黒領域が位置する画素領域の輝度値の総和から白領域が位置する画素領域の輝度値の総和を減算したものになる。
【００８８】
したがって、Ｈａａｒ特徴ＣＨ１が配置された画素領域の明暗差は、第１行〜第６行の各行において（Ｐ２−Ｐ０）−２×（Ｐ４−Ｐ２）＋（Ｐ６−Ｐ４）を演算し、その演算結果を列方向に累積加算した値になる。
【００８９】
その後、最終的に演算された明暗差がＨａａr特徴ＣＨ１の明暗差と一致するか否かが判定される。そして、最終的に演算された明暗差がＨａａr特徴ＣＨ１の明暗差に一致する場合、値αｌが累積値ｑｋに加算され、最終的に演算された明暗差がＨａａr特徴ＣＨ１の明暗差に一致しない場合、値βｌが累積値ｑｋに加算される。そうすると、累積値ｑｋが位置ＰＳ１に対応付けられて記憶される。
【００９０】
なお、図４に示すパターン２、パターン１３およびパターン１４のＨａａr特徴ＣＨ２，ＣＨ１３，ＣＨ１４が用いられた場合も、Ｈａａｒ特徴ＣＨ２，ＣＨ１３，ＣＨ１４が配置された画素領域の明暗差は、図７に示す方法によって演算される。
【００９１】
また、Ｈａａｒ特徴ＣＨ１，ＣＨ２，ＣＨ１３，ＣＨ１４の白領域と黒領域とを入れ換えたＨａａｒ特徴が用いられる場合も、Ｈａａｒ特徴が配置された画素領域の明暗差は、図７に示す方法によって演算される。
【００９２】
図８は、画素とＨａａｒ特徴との一致を検出するさらに他の方法を説明するための図である。図８を参照して、スキャンウィンドウＳＷ１が図５に示す位置ＰＳ１に位置するとき、スキャンウィンドウＳＷ１内に配置されたＨａａｒ特徴ＣＨ３（図４の（ｄ）参照）は、第１列〜第６列と、第１行〜第６行とによって規定される画素領域に位置する。
【００９３】
Ｈａａｒ特徴ＣＨ３のうちの黒領域（図８においては、斜線領域）は、第４列〜第６列と、第１行〜第６行とによって規定される画素領域に位置し、Ｈａａｒ特徴ＣＨ３のうちの白領域は、第１列〜第３列と、第１行〜第６行とによって規定される画素領域に位置する。
【００９４】
ここで、第０列、第３列、および第６列における累積値をそれぞれＰ０，Ｐ３，Ｐ６とすると、白領域が位置する画素領域の行方向における輝度値の総和は、第１行〜第６行の範囲において、（Ｐ３−Ｐ０）を演算した値になり、黒領域が位置する画素領域の行方向における輝度値の総和は、第１行〜第６行の範囲において（Ｐ６−Ｐ３）を演算した値になる。
【００９５】
また、Ｈａａｒ特徴ＣＨ３が配置された画素領域の明暗差は、黒領域が位置する画素領域の輝度値の総和から白領域が位置する画素領域の輝度値の総和を減算したものになる。
【００９６】
したがって、Ｈａａｒ特徴ＣＨ３が配置された画素領域の明暗差は、第１行〜第６行の各行において（Ｐ６−Ｐ３）−（Ｐ３−Ｐ０）を演算し、その演算結果を列方向に累積加算した値になる。
【００９７】
その後、最終的に演算された明暗差がＨａａr特徴ＣＨ３の明暗差と一致するか否かが判定される。そして、最終的に演算された明暗差がＨａａr特徴ＣＨ３の明暗差に一致する場合、値αｌが累積値ｑｋに加算され、最終的に演算された明暗差がＨａａr特徴ＣＨ３の明暗差に一致しない場合、値βｌが累積値ｑｋに加算される。そうすると、累積値ｑｋが位置ＰＳ１に対応付けられて記憶される。
【００９８】
なお、図４に示すパターン９のＨａａr特徴ＣＨ９が用いられた場合も、Ｈａａｒ特徴ＣＨ９が配置された画素領域の明暗差は、図８に示す方法によって演算される。
【００９９】
図９は、画素とＨａａｒ特徴との一致を検出するさらに他の方法を説明するための図である。図９を参照して、スキャンウィンドウＳＷ１が図５に示す位置ＰＳ１に位置するとき、スキャンウィンドウＳＷ１内に配置されたＨａａｒ特徴ＣＨ６（図４の（ｇ）参照）は、第１列〜第６列と、第１行〜第６行とによって規定される画素領域に位置する。
【０１００】
Ｈａａｒ特徴ＣＨ６のうちの黒領域（図９においては、斜線領域）は、第１列〜第３列と、第１行〜第６行とによって規定される画素領域に位置し、Ｈａａｒ特徴ＣＨ６のうちの白領域は、第４列〜第６列と、第１行〜第６行とによって規定される画素領域に位置する。
【０１０１】
ここで、第０列、第３列、および第６列における累積値をそれぞれＰ０，Ｐ３，Ｐ６とすると、黒領域が位置する画素領域の行方向における輝度値の総和は、第１行〜第６行の範囲において（Ｐ３−Ｐ０）を演算した値になり、白領域が位置する画素領域の行方向における輝度値の総和は、第１行〜第６行の範囲において、（Ｐ６−Ｐ３）を演算した値になる。
【０１０２】
また、Ｈａａｒ特徴ＣＨ６が配置された画素領域の明暗差は、黒領域が位置する画素領域の輝度値の総和から白領域が位置する画素領域の輝度値の総和を減算したものになる。
【０１０３】
したがって、Ｈａａｒ特徴ＣＨ６が配置された画素領域の明暗差は、第１行〜第６行の各行において（Ｐ３−Ｐ０）−（Ｐ６−Ｐ３）を演算し、その演算結果を列方向に累積加算した値になる。
【０１０４】
その後、最終的に演算された明暗差がＨａａr特徴ＣＨ６の明暗差と一致するか否かが判定される。そして、最終的に演算された明暗差がＨａａr特徴ＣＨ６の明暗差に一致する場合、値αｌが累積値ｑｋに加算され、最終的に演算された明暗差がＨａａr特徴ＣＨ６の明暗差に一致しない場合、値βｌが累積値ｑｋに加算される。そうすると、累積値ｑｋが位置ＰＳ１に対応付けられて記憶される。
【０１０５】
なお、図４に示すパターン１０のＨａａr特徴ＣＨ１０が用いられた場合も、Ｈａａｒ特徴ＣＨ１０が配置された画素領域の明暗差は、図９に示す方法によって演算される。
【０１０６】
図１０は、画素とＨａａｒ特徴との一致を検出するさらに他の方法を説明するための図である。図１０を参照して、スキャンウィンドウＳＷ１が図５に示す位置ＰＳ１に位置するとき、スキャンウィンドウＳＷ１内に配置されたＨａａｒ特徴ＣＨ４（図４の（ｅ）参照）は、第１列〜第６列と、第１行〜第６行とによって規定される画素領域に位置する。
【０１０７】
Ｈａａｒ特徴ＣＨ４のうちの黒領域（図１０においては、斜線領域）は、第１列〜第３列と、第４行〜第６行とによって規定される画素領域と、第４列〜第６列と、第１行〜第３行とによって規定される画素領域とに位置し、Ｈａａｒ特徴ＣＨ４のうちの白領域は、第１列〜第３列と、第１行〜第３行とによって規定される画素領域と、第４列〜第６列と、第４行〜第６行とによって規定される画素領域に位置する。
【０１０８】
ここで、第０列、第３列、および第６列における累積値をそれぞれＰ０，Ｐ３，Ｐ６とすると、黒領域が位置する画素領域の行方向における輝度値の総和は、第１行〜第３行の範囲において（Ｐ６−Ｐ３）を演算した値になり、第４行〜第６行の範囲において（Ｐ３−Ｐ０）を演算した値になる。また、白領域が位置する画素領域の行方向における輝度値の総和は、第１行〜第３行の範囲において、（Ｐ３−Ｐ０）を演算した値になり、第４行〜第６行の範囲において、（Ｐ６−Ｐ３）を演算した値になる。
【０１０９】
また、Ｈａａｒ特徴ＣＨ４が配置された画素領域の明暗差は、黒領域が位置する画素領域の輝度値の総和から白領域が位置する画素領域の輝度値の総和を減算したものになる。
【０１１０】
したがって、Ｈａａｒ特徴ＣＨ４が配置された画素領域の明暗差は、各行において（Ｐ６−Ｐ３）−（Ｐ３−Ｐ０）を演算し、第１行〜第３行の範囲において、演算結果（Ｐ６−Ｐ３）−（Ｐ３−Ｐ０）を列方向に累積加算し、第４行〜第６行の範囲において演算結果（Ｐ６−Ｐ３）−（Ｐ３−Ｐ０）を列方向に累積減算した値になる。
【０１１１】
その後、最終的に演算された明暗差がＨａａr特徴ＣＨ４の明暗差と一致するか否かが判定される。そして、最終的に演算された明暗差がＨａａr特徴ＣＨ４の明暗差に一致する場合、値αｌが累積値ｑｋに加算され、最終的に演算された明暗差がＨａａr特徴ＣＨ４の明暗差に一致しない場合、値βｌが累積値ｑｋに加算される。そうすると、累積値ｑｋが位置ＰＳ１に対応付けられて記憶される。
【０１１２】
なお、図４に示すパターン５のＨａａr特徴ＣＨ５が用いられた場合も、Ｈａａｒ特徴ＣＨ５が配置された画素領域の明暗差は、図１０に示す方法によって演算される。
【０１１３】
図４に示すパターン０〜パターン１４のＨａａｒ特徴ＣＨ０〜ＣＨ１４が配置された画素領域の明暗差は、上述した方法によって演算される。
【０１１４】
一致処理モジュール４は、図５に示す方法によって、列方向に配置されたｐ個のスキャンウィンドウＳＷ１〜ＳＷｐ（各々がＨａａｒ特徴ＣＨ０を含む）を位置ＰＳ１〜ＰＳｋに順次移動させながら行方向に並行して走査し、スキャンウィンドウＳＷ１〜ＳＷｐが各位置ＰＳ１〜ＰＳｋに配置されたときの画素領域の明暗差を上述した方法によって演算し、その演算した画素領域の明暗差がＨａａｒ特徴ＣＨ０の明暗差と一致するか否かを示す累積値ｑｋを演算し、その演算した累積値ｑｋを位置ＰＳ１〜ＰＳｋに対応付けて記憶する。
【０１１５】
その後、一致処理モジュール４は、図５に示す方法によって、列方向に配置されたｐ個のスキャンウィンドウＳＷ１〜ＳＷｐ（各々がＨａａｒ特徴ＣＨ１を含む）を位置ＰＳ１〜ＰＳｋに順次移動させながら行方向に並行して走査し、スキャンウィンドウＳＷ１〜ＳＷｐが各位置ＰＳ１〜ＰＳｋに配置されたときの画素領域の明暗差を上述した方法によって演算し、その演算した画素領域の明暗差がＨａａｒ特徴ＣＨ１の明暗差と一致するか否かを示す累積値ｑｋを演算し、その演算した累積値ｑｋを位置ＰＳ１〜ＰＳｋに対応付けて記憶する。
【０１１６】
以下、同様にして、一致処理モジュール４は、図５に示す方法によって、列方向に配置されたｐ個のスキャンウィンドウＳＷ１〜ＳＷｐ（各々がＨａａｒ特徴ＣＨ１４を含む）を位置ＰＳ１〜ＰＳｋに順次移動させながら行方向に並行して走査し、スキャンウィンドウＳＷ１〜ＳＷｐが各位置ＰＳ１〜ＰＳｋに配置されたときの画素領域の明暗差を上述した方法によって演算し、その演算した画素領域の明暗差がＨａａｒ特徴ＣＨ１４の明暗差と一致するか否かを示す累積値ｑｋを演算し、その演算した累積値ｑｋを位置ＰＳ１〜ＰＳｋに対応付けて記憶する。
【０１１７】
このように、一致処理モジュール４は、図４に示す１５個のＨａａｒ特徴ＣＨ０〜ＣＨ１４の全てを用いて行方向に並行して入力画像を走査し、Ｈａａｒ特徴ＣＨ０〜ＣＨ１４が配置された画素領域の明暗差とＨａａｒ特徴ＣＨ０〜ＣＨ１４の明暗差との一致を検出する。
【０１１８】
一致処理モジュール４は、１５個のＨａａｒ特徴ＣＨ０〜ＣＨ１４を含む１５個のスキャンウィンドウのサイズが入力画像の行方向のサイズＸｍａｘよりも大きくなるまで、または入力画像の列方向のサイズＹｍａｘよりも大きくなるまで、上述した動作を繰返し実行する。すなわち、一致処理モジュール４は、Ｈａａｒ特徴ＣＨ０〜ＣＨ１４を大きくしながらＨａａｒ特徴ＣＨ０〜ＣＨ１４の明暗差に一致する画素領域の明暗差を検出する動作を繰返し実行する。
【０１１９】
強識別器モジュール５は、位置ＰＳ１〜ＰＳｋに対応付けられた累積値ｑ１〜ｑｋを一致処理モジュール４から受ける。また、強識別器モジュール５は、顔を検出するためのしきい値Ｔを予め保持している。そして、強識別器モジュール５は、累積値ｑ１〜ｑｋをしきい値Ｔと比較し、しきい値Ｔ以上の累積値ｑｎ（ｎ＝１〜ｋ）が検出されると、顔が検出されたと判定し、しきい値Ｔよりも小さい累積値ｑｎ（ｎ＝１〜ｋ）が検出されると、顔が検出されなかったと判定する。
【０１２０】
累積モジュール２、サイズ算出モジュール３、一致処理モジュール４および強識別器モジュール５は、入力画像の縮小回数が画像縮小回数Ｉｍａｘに達するまで、入力画像のサイズを縮小しながら、上述した動作を繰返し実行する。
【０１２１】
図１１は、図１に示す特徴検出装置１０の動作を説明するためのフローチャートである。図１１を参照して、一連の動作が開始されると、ｈ＝０、ｉ＝０、ｊ＝０、ｋ＝０、ｌ＝０およびｎ＝０が設定される（ステップＳ１）。
【０１２２】
そして、画像縮小モジュール１は、式（３）に従って入力画像のサイズを縮小する（ステップＳ２）。その後、画像縮小モジュール１は、画像の縮小回数ｉがＩｍａｘ以下であるか否かを判定する（ステップＳ３）。
【０１２３】
ステップＳ３において、画像の縮小回数ｉがＩｍａｘ以下であると判定されたとき、累積モジュール２は、１つの行に含まれる各画素の輝度を行方向に累積加算する累積処理を入力画像の全ての行に対して並行して行なう（ステップＳ４）。
【０１２４】
より具体的には、累積モジュール２は、次式に従って各画素の輝度の累積値Ｐｈを演算する（ステップＳ４１）。
【０１２５】
【数５】
0005390363.tif 000006
【０１２６】
なお、式（５）において、ｈは、１つの行において画素の輝度を累積する最後の列を表し、ｔは、０〜ｈであり、ｘｈは、１つの行に含まれる各画素の輝度である。
【０１２７】
ステップＳ４１の後、累積モジュール２は、ｈがＸｍａｘ以下であるか否かを判定する（ステップＳ４２）。
【０１２８】
ステップＳ４２において、ｈがＸｍａｘ以下であると判定されたとき、累積モジュール２は、ｈ＝ｈ＋１を設定する（ステップＳ４３）。そして、一連の動作は、ステップＳ４１に戻る。
【０１２９】
そうすると、ステップＳ４２において、ｈがＸｍａｘよりも大きいと判定されるまで、上述したステップＳ４１〜ステップＳ４３が繰返し実行される。
【０１３０】
そして、ステップＳ４２において、ｈがＸｍａｘよりも大きいと判定されると、累積モジュール２は、ｈ＝０を設定する（ステップＳ４４）。
【０１３１】
ｈは、最初、“０”に設定されているため、累積モジュール２は、ステップＳ４１において、１つの行の０列目から０列目までの画素の輝度ｘ０を加算する。つまり、累積モジュール２は、ステップＳ４１が１回目に実行される場合、１つの行の０列目の画素の輝度ｘ０を累積値Ｐｈとして演算する。
【０１３２】
その後、累積モジュール２は、ステップＳ４１を２回目に実行する場合、１つの行の０列目から１列目までの画素の輝度ｘ０，ｘ１を加算して累積値Ｐ１を演算する。
【０１３３】
更に、累積モジュール２は、ステップＳ４１を３回目に実行する場合、１つの行の０列目から２列目までの画素の輝度ｘ０，ｘ１，ｘ２を加算して累積値Ｐ２を演算する。
【０１３４】
以下、同様にして、累積モジュール２は、ステップＳ４１をＸｍａｘ＋１回目に実行する場合、１つの行の０列目からＸｍａｘ列目までの画素の輝度ｘ０，ｘ１，・・・，ｘＸｍａｘを加算して累積値ＰＸｍａｘを演算する。
【０１３５】
したがって、累積モジュール２は、ステップＳ４１〜ステップＳ４３からなるループを１つの行に含まれる画素数分（Ｘｍａｘ個）だけ繰返し実行することによって、１つの行に含まれる各画素の輝度の累積値を演算する。
【０１３６】
そして、累積モジュール２は、全ての行について、１つの行に含まれる各画素の輝度の累積値を演算する累積処理を並行して行なう。
【０１３７】
累積モジュール２による輝度の累積処理が終了すると、顔判定が実行される（ステップＳ５）。
【０１３８】
より具体的には、サイズ算出モジュール３は、式（４）に従って、スキャンウィンドウのサイズを算出する（ステップＳ５１）。そして、サイズ算出モジュール３は、ｗｅｊがＸｍａｘまたはＹｍａｘ以下であるか否かを判定する（ステップＳ５２）。
【０１３９】
ステップＳ５２において、ｗｅｊがＸｍａｘまたはＹｍａｘ以下でないと判定されたとき、サイズ算出モジュール３は、ｊ＝０を設定し、かつ、信号ＧＳＤを生成して画像縮小モジュール１へ出力し、画像縮小モジュール１は、信号ＧＳＤに応じてｉ＝ｉ＋１を設定する（ステップＳ５３）。その後、一連の動作は、ステップＳ２へ移行する。
【０１４０】
一方、ステップＳ５２において、ｗｅｊがＸｍａｘまたはＹｍａｘ以下であると判定されたとき、サイズ算出モジュール３は、ｊ＝ｊ＋１を設定し（ステップＳ５４）、各画素が累積値からなる入力画像と、スキャンウィンドウのサイズとを一致処理モジュール４へ出力する。
【０１４１】
一致処理モジュール４は、各画素が累積値からなる入力画像と、スキャンウィンドウのサイズとをサイズ算出モジュール３から受ける。そして、一致処理モジュール４は、その受けたスキャンウィンドウのサイズを有し、かつ、ｌ＝０のＨａａｒ特徴ＣＨ０を含むスキャンウィンドウＳＷ１を生成し、その生成したスキャンウィンドウＳＷ１をポインタｍｋへ移動させる（ステップＳ５５）。
【０１４２】
その後、一致処理モジュール４は、その移動させた位置において、スキャンウィンドウＳＷ１内の画像に対し、Ｈａａｒ特徴ＣＨ０の形状に基づく明暗差を上述した方法によって算出する（ステップＳ５６）。
【０１４３】
引き続いて、一致処理モジュール４は、スキャンウィンドウＳＷ１内のＨａａｒ特徴の個数が２以上であるか否かを判定する（ステップＳ５７）。
【０１４４】
ステップＳ５７において、スキャンウィンドウＳＷ１内のＨａａｒ特徴の個数が２以上であると判定されたとき、一致処理モジュール４は、スキャンウィンドウＳＷ１内に配置された２以上のＨａａｒ特徴を用いて上述した方法によって演算された複数の明暗差を加算する（ステップＳ５８）。
【０１４５】
そして、ステップＳ５７において、スキャンウィンドウＳＷ１内のＨａａｒ特徴の個数が２以上でないと判定されたとき、またはステップＳ５８の後、一致処理モジュール４は、画素領域の明暗差がＨａａｒ特徴の明暗差に一致することを検証する。すなわち、一致処理モジュール４は、画素領域の明暗差に基づいて、Ｈａａｒ特徴との一致を検証する（ステップＳ５９）。
【０１４６】
その後、一致処理モジュール４は、画素領域の明暗差がＨａａｒ特徴の明暗差に一致する場合、ｒｌ＝αｌを用いて累積値ｑｋ＝ｑｋ＋ｒｌを演算し、画素領域の明暗差がＨａａｒ特徴の明暗差に一致しない場合、ｒｌ＝βｌを用いて累積値ｑｋ＝ｑｋ＋ｒｌを演算する（ステップＳ６０）。そして、一致処理モジュール４は、ポイントｍｋ（すなわち、位置ＰＳｋ）に対応付けて累積値ｑｋを記憶する。
【０１４７】
その後、一致処理モジュール４は、ｍｋ＋ｗｅｊがＸｍａｘ以下であるか否かを判定する（ステップＳ６１）。すなわち、一致処理モジュール４は、スキャンウィンドウＳＷ１が入力画像の行方向において入力画像内に位置するか否かを判定する。
【０１４８】
ステップＳ６１において、ｍｋ＋ｗｅｊがＸｍａｘ以下であると判定されたとき、すなわち、スキャンウィンドウＳＷ１が入力画像の行方向において入力画像内に位置すると判定されたとき、一致処理モジュール４は、ｋ＝ｋ＋１を設定する（ステップＳ６２）。
【０１４９】
そして、一連の動作は、ステップＳ５５へ移行する。
【０１５０】
その後、一致処理モジュール４は、ステップＳ６１において、ｍｋ＋ｗｅｊがＸｍａｘよりも大きいと判定されるまで、すなわち、スキャンウィンドウＳＷ１の右端が入力画像の行方向において入力画像の右端を越えたと判定されるまで、上述したステップＳ５５〜ステップＳ６２を繰返し実行する。
【０１５１】
ｋは、最初、“０”に設定されているため（ステップＳ１参照）、一致処理モジュール４は、ステップＳ５５を１回目に実行する場合、スキャンウィンドウＳＷ１を０列目の画素へ移動させる。そして、一致処理モジュール４は、スキャンウィンドウＳＷ１内に配置されたＨａａｒ特徴ＣＨ０の形状に基づく明暗差を演算し（ステップＳ５７参照）、累積値ｑｋを演算する。
【０１５２】
また、一致処理モジュール４は、ステップＳ５５を２回目に実行する場合、スキャンウィンドウＳＷ１をｍ列目の画素へ移動させる。そして、一致処理モジュール４は、スキャンウィンドウＳＷ１内に配置されたＨａａｒ特徴ＣＨ０の形状に基づく明暗差を演算し（ステップＳ５７参照）、累積値ｑｋを演算する。
【０１５３】
さらに、一致処理モジュール４は、ステップＳ５５を３回目に実行する場合、スキャンウィンドウＳＷ１を２ｍ列目の画素へ移動させる。そして、一致処理モジュール４は、スキャンウィンドウＳＷ１内に配置されたＨａａｒ特徴ＣＨ０の形状に基づく明暗差を演算し（ステップＳ５７参照）、累積値ｑｋを演算する。
【０１５４】
そして、一致処理モジュール４は、スキャンウィンドウＳＷ１の右端が入力画像の右端を越えるまで、スキャンウィンドウＳＷ１の各位置においてＨａａｒ特徴ＣＨ０の形状に基づく明暗差を演算し（ステップＳ５７参照）、累積値ｑｋを演算する。
【０１５５】
つまり、一致処理モジュール４は、行方向における１つの走査が終了するまで、各位置ｍｋ（＝ＰＳ１〜ＰＳｋ）においてＨａａｒ特徴ＣＨ０の形状に基づく明暗差を演算し（ステップＳ５７参照）、累積値ｑｋを演算する。
【０１５６】
その後、ステップＳ６１において、ｍｋ＋ｗｅｊがＸｍａｘよりも大きいと判定されると、一致処理モジュール４は、ｌがＬｍａｘ以下であるか否かをさらに判定する（ステップＳ６３）。すなわち、一致処理モジュール４は、予め決定した顔検出用のＨａａｒ特徴の全てを用いたか否かを判定する。
【０１５７】
ステップＳ６３において、ｌがＬｍａｘ以下であると判定されたとき、すなわち、全てのＨａａｒ特徴を用いていないと判定されたとき、一致処理モジュール４は、ｌ＝ｌ＋１およびｋ＝０を設定する（ステップＳ６４）。そして、一連の動作は、ステップＳ５５へ移行する。
【０１５８】
その後、ステップＳ６３において、ｌがＬｍａｘよりも大きいと判定されるまで、すなわち、全てのＨａａｒ特徴を用いたと判定されるまで、一致処理モジュール４は、ステップＳ５５〜ステップＳ６４を繰返し実行する。
【０１５９】
そして、ステップＳ６３において、ｌがＬｍａｘよりも大きいと判定されると、すなわち、全てのＨａａｒ特徴を用いたと判定されると、一致処理モジュール４は、ｌ＝０を設定する（ステップＳ６５）。
【０１６０】
その後、一致処理モジュール４は、各位置ｍｋ（＝ＰＳ１〜ＰＳｋ）に対応付けられた累積値ｑｋを強識別器モジュール５へ出力する。
【０１６１】
強識別器モジュール５は、各位置ｍｋ（＝ＰＳ１〜ＰＳｋ）に対応付けられた累積値ｑｋを一致処理モジュール４から受ける。そして、強識別器モジュール５は、累積値ｑｎ（ｎ＝１〜ｋ）をしきい値Ｔと比較し、累積値ｑｎがしきい値Ｔ以上であるとき、人間の顔を検出したと判定し、累積値ｑｎがしきい値Ｔよりも小さいとき、人間の顔を検出しなかったと判定する（ステップＳ６６）。
【０１６２】
その後、強識別器モジュール５は、ｎがｋ以下であるか否かを判定する（ステップＳ６７）。ステップＳ６７において、ｎがｋ以下であると判定されたとき、強識別器モジュール５は、ｎ＝ｎ＋１を設定する（ステップＳ６８）。そして、一連の動作は、ステップＳ６６へ移行する。
【０１６３】
その後、強識別器モジュール５は、ステップＳ６７において、ｎがｋよりも大きいと判定するまで、ステップＳ６６〜ステップＳ６８を繰返し実行する。すなわち、強識別器モジュール５は、スキャンウィンドウＳＷ１の行方向への１回の走査の結果、演算されたｋ個の累積値ｑ１〜ｑｋの全てについて、顔が検出されたか否かを判定するまで、ステップＳ６６〜ステップＳ６８を繰返し実行する。
【０１６４】
そして、強識別器モジュール５は、ステップＳ６７において、ｎがｋよりも大きいと判定すると、ｋ＝０およびｎ＝０を設定する（ステップＳ６９）。その後、一連の動作は、ステップＳ５１へ移行する。
【０１６５】
そして、ステップＳ５２において、スキャンウィンドウのサイズｗｅｊがＸｍａｘまたはＹｍａｘよりも大きいと判定されるまで、ステップＳ５１，Ｓ５２の“ＹＥＳ”，ステップＳ５５〜ステップＳ６９が繰返し実行される。すなわち、スキャンウィンドウのサイズｗｅｊを大きくしながら、Ｈａａｒ特徴パターンの全てを用いたＨａａｒ特徴の形状に基づく明暗差の演算、Ｈａａｒ特徴の明暗差と画素領域の明暗差との一致の検証、および顔検出の判定が実行される。
【０１６６】
ステップＳ５は、入力画像の列方向に配置されたｐ個のスキャンウィンドウＳＷ１〜ＳＷｐの行方向への走査に対して並行して実行される。
【０１６７】
そして、各ステップＳ５のステップＳ５２において、スキャンウィンドウのサイズｗｅｊがＸｍａｘまたはＹｍａｘよりも大きいと判定されると、画像縮小モジュール１は、ステップＳ２において、画像サイズを縮小し、累積モジュール２は、ステップＳ４において、その縮小された画像サイズを有する入力画像の各画素の累積値を演算し、サイズ算出モジュール３は、ステップＳ５１において、その縮小された画像サイズを有する入力画像に対してスキャンウィンドウのサイズを算出し、一致処理モジュール４は、その縮小された画像サイズを有する入力画像の各画素の累積値に基づいて、Ｈａａｒ特徴の形状に基づく画素領域の明暗差の演算、Ｈａａｒ特徴の明暗差と画素領域の明暗差との一致の検証、および顔検出の判定を実行する。
【０１６８】
この場合、ステップＳ５１〜ステップＳ６９からなるループにおいて、縮小された入力画像に基づいて、スキャンウィンドウのサイズを大きくしながら、Ｈａａｒ特徴ＣＨ０〜ＣＨ１４の全てに対して、Ｈａａｒ特徴の形状に基づく画素領域の明暗差の演算、Ｈａａｒ特徴の明暗差と画素領域の明暗差との一致の検証、および顔検出の判定が実行される。
【０１６９】
したがって、迅速に顔を検出できる。
【０１７０】
そして、ステップＳ３において、ｉがＩｍａｘ以下であると判定されると、ｉ＝０が設定され（ステップＳ６）、一連の動作が終了する。
【０１７１】
なお、Ｈａａｒ特徴ＣＨ０〜ＣＨ１４を用いた顔検出においては、Ｈａａｒ特徴ＣＨ０〜ＣＨ１４は、任意の順番で用いられる。
【０１７２】
このように、特徴検出装置１０は、入力画像の各画素の輝度の累積演算を全ての行について並行して行ない（ステップＳ４参照）、複数のスキャンウィンドウＳＷ１〜ＳＷｐを用いた行方向への走査を並行して行ない、Ｈａａｒ特徴の形状に基づく画素領域の明暗差の演算、Ｈａａｒ特徴の明暗差と画素領域の明暗差との一致の検証、および顔検出の判定を複数のスキャンウィンドウＳＷ１〜ＳＷｐの行方向への走査に対して並行して行なう（ステップＳ５参照）。
【０１７３】
したがって、Ｈａａｒ特徴を用いた顔検出を迅速に行なうことができる。
【０１７４】
特に、図４に示すパターン７〜パターン１４のＨａａｒ特徴ＣＨ７〜ＣＨ１４のいずれかが用いられる場合、１つのスキャンウィンドウＳＷの行方向への走査によって、パターン０〜パターン６のＨａａｒ特徴ＣＨ０〜ＣＨ６を含む１つのスキャンウィンドウＳＷの行方向への走査を２回実行した効果が得られる。したがって、顔を迅速に検出することができる。
【０１７５】
なお、サイズ算出モジュール３がステップＳ５１においてスキャンウィンドウＳＷのサイズを大きくすると、スキャンウィンドウＳＷに含まれるＨａａｒ特徴（Ｈａａｒ特徴ＣＨ０〜ＣＨ１４のいずれか）も大きくなるので、サイズ算出モジュール３がステップＳ５１においてスキャンウィンドウＳＷのサイズを大きくすることは、Ｈａａｒ特徴（Ｈａａｒ特徴ＣＨ０〜ＣＨ１４のいずれか）のサイズを大きくすることに相当する。
【０１７６】
また、図４に示すパターン７〜パターン１４のＨａａｒ特徴ＣＨ７〜ＣＨ１４のいずれかが用いられる場合、一致処理モジュール４は、ステップＳ５８において、Ｈａａｒ特徴ＣＨ７〜ＣＨ１４の各々に含まれる複数の形状（＝パターン）に基づく画素領域の明暗差を相互に加算する。
【０１７７】
図１２は、図１に示す特徴検出装置１０のハード構成を示す構成図である。図１２を参照して、特徴検出装置１００は、メインメモリ１１０と、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）１２０と、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１３０と、ＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）アクセラレータ１４０と、バスＢＳとを備える。
【０１７８】
メインメモリ１１０、ＤＭＡＣ１２０、ＣＰＵ１３０およびＳＩＭＤアクセラレータ１４０は、バスＢＳを介して相互に接続される。
【０１７９】
メインメモリ１１０は、カメラによって撮影された画像データと、Ｈａａｒ特徴ＣＨ０〜ＣＨ１４と、スキャンウィンドウの初期サイズと、スキャンウィンドウの行方向への移動量ｍとを格納する。また、メインメモリ１１０は、図１１に示すフローチャートからなるプログラムを格納する。
【０１８０】
ＤＭＡＣ１２０は、ＣＰＵ１３０を介さないで、メインメモリ１１０に格納された画像データを１つのフレームずつバスＢＳを介して読み出し、その読み出した画像データをＳＩＭＤアクセラレータへ出力するコントローラとなっている。
【０１８１】
ＣＰＵ１３０は、この発明の実施の形態による顔検出を実行する場合、メインメモリ１１０からプログラムを読み出し、その読み出したプログラムを実行してＤＭＡＣ１２０およびＳＩＭＤアクセラレータ１４０を制御する。また、ＣＰＵ１３０は、バスＢＳを介して各画素が輝度からなる画像データをメインメモリ１０から受け、その受けた画像データをＳＩＭＤアクセラレータ１４０へ出力する。さらに、ＣＰＵ１３０は、バスＢＳを介してＨａａｒ特徴ＣＨ０〜ＣＨ１４、スキャンウィンドウの初期サイズ、およびスキャンウィンドウの行方向への移動量ｍをメインメモリ１１０から読み出し、その読み出したＨａａｒ特徴ＣＨ０〜ＣＨ１４、スキャンウィンドウの初期サイズ、およびスキャンウィンドウの行方向への移動量ｍをＳＩＭＤアクセラレータ１４０へ出力する。
【０１８２】
ＳＩＭＤアクセラレータ１４０は、ＣＰＵ１３０からの制御に応じて、ＣＰＵ１３０から画像データ、Ｈａａｒ特徴ＣＨ０〜ＣＨ１４、スキャンウィンドウの初期サイズ、およびスキャンウィンドウの行方向への移動量ｍを受け、その受けた画像データ、Ｈａａｒ特徴ＣＨ０〜ＣＨ１４、スキャンウィンドウの初期サイズ、およびスキャンウィンドウの行方向への移動量ｍに基づいて、図１１に示すフローチャートに従って各画像データ中の人間の顔を検出する。そして、ＳＩＭＤアクセラレータ１４０は、その検出した顔をＣＰＵ１３０へ出力する。
【０１８３】
図１３は、図１２に示すＳＩＭＤアクセラレータ１４０の構成図である。図１３を参照して、ＳＩＭＤアクセラレータ１４０は、コントローラ１４０１と、演算領域１４０２，１４０５，１４０７と、データ蓄積領域１４０３と、演算器（ＰＥ：Ｐｒｏｃｅｓｓｉｎｇ  Ｅｌｅｍｅｎｔ）１４０４と、結果領域１４０６と、システム領域１４０８とを含む。
【０１８４】
コントローラ１４０１は、登録部１４１０〜１４１４を含む。そして、コントローラ１４０１は、ＣＰＵ１３０から画像データ、Ｈａａｒ特徴ＣＨ０〜ＣＨ１４、スキャンウィンドウの初期サイズ、およびスキャンウィンドウの行方向への移動量ｍを受ける。そして、コントローラ１４０１は、画像データをデータ蓄積領域１４０３に格納し、Ｈａａｒ特徴ＣＨ０〜ＣＨ１４を登録部１４１０に格納し、スキャンウィンドウの初期サイズを登録部１４１１に格納し、スキャンウィンドウの行方向への移動量ｍを登録部１４１２に格納する。
【０１８５】
また、コントローラ１４０１は、図１１に示すステップＳ５１に従ってスキャンウィンドウのサイズを算出する。
【０１８６】
さらに、コントローラ１４０１は、図１１に示すＳ５２に従って、ｗｅｊがＸｍａｘまたはＹｍａｘ以下であるか否かを判定し、ｗｅｊがＸｍａｘまたはＹｍａｘよりも大きいと判定したとき、信号ＧＳＤを生成する。
【０１８７】
さらに、コントローラ１４０１は、学習によって予め作製されたＨａａｒ特徴を含むスキャンウィンドウのサイズを、その算出したスキャンウィンドウのサイズに設定する。そして、コントローラ１４０１は、そのサイズを設定したスキャンウィンドウＳＷおよびスキャンウィンドウＳＷの行方向への移動量ｍを演算器１４０４へ出力する。
【０１８８】
さらに、コントローラ１４０１は、図１１に示すステップＳ６３において、ｌがＬｍａｘ以下であると判定するごとに、別のＨａａｒ特徴を含むスキャンウィンドウＳＷを作成して演算器１４０４へ出力する。
【０１８９】
さらに、コントローラ１４０１は、登録部１４１３に予め格納されたしきい値Ｔを読み出し、累積値ｑｎを結果領域１４０６から読み出す。そして、コントローラ１４０１は、図１１に示すステップＳ６６〜ステップＳ６８に従って、演算領域１４０７を用いて、各累積値ｑｎをしきい値Ｔと比較して人間の顔を検出する。そして、コントローラ１４０１は、その検出結果をＣＰＵ１３０を介してメインメモリ１１０へ出力する。
【０１９０】
演算器１４０４は、図１１に示すステップＳ４に従って、データ蓄積領域１４０３に格納された画像データの各画素の輝度の累積加算を演算領域１４０２を用いて全ての行について並行して行ない、その累積値をデータ蓄積領域１４０３に格納する。
【０１９１】
また、演算器１４０４は、コントローラ１４０１からスキャンウィンドウＳＷおよびスキャンウィンドウＳＷの行方向への移動量ｍを受ける。そして、演算器１４０４は、その受けたスキャンウィンドウＳＷおよびスキャンウィンドウＳＷの行方向への移動量ｍに基づいて、図１１に示すステップＳ５５〜ステップＳ６２を実行する。この場合、演算器１４０４は、Ｈａａｒ特徴の形状に基づく画素領域の明暗差の演算を演算領域１４０５を用いて複数のスキャンウィンドウの行方向への走査に対して並行して行なう。また、演算器１４０４は、Ｈａａｒ特徴の明暗差と、Ｈａａｒ特徴の形状に基づく画素領域の明暗差との一致を検証し、その検証結果を示す累積値ｑｋを結果領域１４０６を用いて演算する。
【０１９２】
演算領域１４０２，１４０５，１４０７は、各種の演算に用いられる領域である。また、システム領域１４０８は、システムの使用領域である。
【０１９３】
演算器１４０４は、ステップＳ４に従って各画素の輝度の累積値を演算する場合、１つの行において隣接する２つの列に属する２つの画素の２つの輝度を１クロックで２ビットずつデータ蓄積領域１４０３から読み出して加算する。
【０１９４】
また、演算器１４０４は、ステップＳ５６に従って、Ｈａａｒ特徴の形状に基づく画素領域の明暗差を演算する場合、行方向（水平方向）の累積値の減算を列方向に配置された複数のスキャンウィンドウＳＷ内に含まれる複数のＨａａｒ特徴の形状に基づく複数の画素領域に対して並行して行ない、その演算結果を列方向（垂直方向）に加減算してＨａａｒ特徴の形状に基づく画素領域の明暗差を演算する。
【０１９５】
このように、ＳＩＭＤアクセラレータ１４０は、並列処理に適した演算器である。
【０１９６】
ＳＩＭＤアクセラレータ１４０の演算器１４０４は、図１に示す累積モジュール２および一致処理モジュール４を構成し、ＳＩＭＤアクセラレータ１４０のコントローラ１４０１は、図１に示すサイズ算出モジュール３および強識別器モジュール５を構成する。
【０１９７】
なお、上記においては、特徴検出装置１０について説明したが、この発明によれば、これに限らず、特徴検出装置１０は、画像データ中の人間の顔以外の何からの特徴を上述した方法によって検出するものであればよい。この場合、Ｈａａｒ特徴は、特徴を画素の明暗の差によって表したものとして定義される。
【０１９８】
また、上記においては、複数のスキャンウィンドウＳＷ１〜ＳＷｐを１行ずつ列方向にずらせて配置し、複数のスキャンウィンドウＳＷ１〜ＳＷｐを行方向に並行して走査すると説明したが、この発明の実施の形態においては、これに限らず、複数のスキャンウィンドウＳＷ１〜ＳＷｐを任意の行数ずつ列方向にずらせて配置し、複数のスキャンウィンドウＳＷ１〜ＳＷｐを行方向に並行して走査してもよい。
【０１９９】
特に、複数の形状からなるＨａａｒ特徴ＣＨ７〜ＣＨ１４が用いられる場合、複数のパターンの一方が既に走査した行を重複して行方向に走査しないように複数のスキャンウィンドウＳＷ１〜ＳＷｐを列方向にずらせて配置し、複数のスキャンウィンドウＳＷ１〜ＳＷｐを行方向に並行して走査する。これによって、１回の行方向への走査に用いる複数のスキャンウィンドウＳＷ１〜ＳＷｐの個数を最小限にでき、Ｈａａｒ特徴の形状に基づく画素領域の明暗差の演算、Ｈａａｒ特徴の形状に基づく画素領域の明暗差とＨａａｒ特徴の明暗差との一致の検証処理、その一致結果を示す累積値ｑｋの演算、および累積値ｑｋおよびしきい値Ｔに基づく顔検出処理を少なくでき、顔の検出を更に迅速に行なうことができる。
【０２００】
さらに、上記においては、特徴検出装置１０は、入力画像のサイズを縮小しながら人間の顔を検出すると説明したが、この発明の実施の形態においては、これに限らず、特徴検出装置１０は、入力画像のサイズを一定に保持したまま入力画像から人間の顔を検出してもよい。この場合、特徴検出装置１０は、図１１に示すステップＳ４，Ｓ５に従って人間の顔を検出する。ステップＳ４，Ｓ５が入力画像の行方向に対して並行して実行されれば、人間の顔を迅速に検出できるからである。
【０２０１】
さらに、この発明の実施の形態においては、特徴検出装置１０は、スキャンウィンドウのサイズを一定にして人間の顔を検出してもよい。ステップＳ４、およびステップＳ５のステップＳ５５〜ステップＳ６９が行方向に並行して実行されれば、人間の顔を迅速に検出できるからである。
【０２０２】
さらに、この発明の実施の形態においては、各画素の輝度の累積加算、Ｈａａｒ特徴の形状に基づく画素領域の明暗差の演算、およびＨａａｒ特徴の形状に基づく画素領域の明暗差とＨａａｒ特徴の明暗差との一致の検証は、列方向に並行して行なわれてもよい。すなわち、この発明の実施の形態による特徴検出装置は、各画素の輝度の累積加算、Ｈａａｒ特徴の形状に基づく画素領域の明暗差の演算、およびＨａａｒ特徴の形状に基づく画素領域の明暗差とＨａａｒ特徴の明暗差との一致の検証を入力画像の行方向および列方向のいずれか一方の方向に対して並行して行なうものであればよい。
【０２０３】
Ｈａａｒ特徴の形状に基づく画素領域の明暗差とＨａａｒ特徴の明暗差との一致の検証が列方向に並行して行なわれる場合、複数のパターンからなるＨａａｒ特徴は、上述した条件Ｃｎｄ１，Ｃｎｄ２を満たす。
【０２０４】
さらに、この発明の実施の形態においては、パターン７〜パターン１４によって示されるＨａａｒ特徴ＣＨ７〜ＣＨ１４に限らず、並列処理に適したＨａａｒ特徴であれば、どのような形状のＨａａｒ特徴が用いられてもよい。
【０２０５】
さらに、この発明の実施の形態においては、図１１に示すステップＳ４において実行される各画素の輝度の累積加算の処理は、「累積処理」を構成する。
【０２０６】
さらに、この発明の実施の形態においては、図１１に示すステップＳ６０において演算される累積値ｑｋは、「個数累積値」を構成する。
【０２０７】
さらに、この発明の実施の形態においては、図１１に示すフローチャートは、この発明の実施の形態による顔の検出をコンピュータに実行させるためのプログラムを構成する。そして、プログラムを記録したメインメモリ１１０は、プログラムを記録したコンピュータ（ＣＰＵ）読み取り可能な記録媒体を構成する。
【０２０８】
さらに、この発明の実施の形態においては、サイズ算出モジュール３および一致処理モジュール４は、「特徴検出モジュール」を構成し、強識別器モジュール５は、「特徴判定モジュール」を構成する。
【０２０９】
さらに、この発明の実施の形態においては、Ｈａａｒ特徴ＣＨ０〜ＣＨ６の各々は、「単一Ｈａａｒ特徴」を構成し、Ｈａａｒ特徴ＣＨ７〜ＣＨ１４の各々は、「混合Ｈａａｒ特徴」を構成する。
【０２１０】
図１２の点線で囲った部分は、実施の形態における特徴検出装置の特徴的な構成部を集積回路化した場合の一例を示す。ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔｅ）２００は、集積回路の一例であり、点線で囲まれている範囲に含まれる構成部の機能を実現する。
【０２１１】
集積回路は、集積度の違いや集積されている機能の違いにより、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔｅ）、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
【０２１２】
また、集積回路は、ＬＳＩに限るものではなく、専用回路または汎用プロセッサによって実現されてもよい。ＬＳＩを作製後にプログラムを格納することが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ回路の回路セルの接続や設定を再構成することが可能なリコンフィギュラブル・プロセッサが利用されてもよい。
【０２１３】
さらには、半導体技術の進歩または派生する別技術によりＬＳＩに置き換わる集積回路化の技術（バイオ技術、有機化学技術等）が登場すれば、当然、その技術を用いて上述した機能の集積化が行なわれてよい。
【０２１４】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した実施の形態の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【産業上の利用可能性】
【０２１５】
この発明は、特徴を迅速に検出可能な特徴検出装置に適用される。また、この発明は、特徴の迅速な検出をコンピュータに実行させるためのプログラムに適用される。さらに、この発明は、特徴の迅速な検出をコンピュータに実行させるためのプログラムを記録したコンピュータ読み取り可能なプログラムに適用される。さらに、この発明は、実施の形態における特徴検出装置の特徴的な構成部の機能を集積化したＬＳＩ、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩ、ＦＰＧＡ、ＬＳＩに置き換わる集積回路化技術によって集積化された集積回路に適用される。
【符号の説明】
【０２１６】
１  画像縮小モジュール、２  累積モジュール、３  サイズ算出モジュール、４  一致処理モジュール、５  強識別器モジュール、１０，１００  特徴検出装置、１１０  メインメモリ、１２０  ＤＭＡＣ、１３０  ＣＰＵ、１４０  ＳＩＭＤアクセラレータ、１４０１  コントローラ、１４０２，１４０５，１４０７  演算領域、１４０３  データ蓄積領域、１４０４  演算器、１４０６  結果領域、１４０８  システム領域。
【図１】
0005390363.tif 000007
【図２】
0005390363.tif 000008
【図３】
0005390363.tif 000009
【図４】
0005390363.tif 000010
【図５】
0005390363.tif 000011
【図６】
0005390363.tif 000012
【図７】
0005390363.tif 000013
【図８】
0005390363.tif 000014
【図９】
0005390363.tif 000015
【図１０】
0005390363.tif 000016
【図１１】
0005390363.tif 000017
【図１２】
0005390363.tif 000018
【図１３】
0005390363.tif 000019
【図１４】
0005390363.tif 000020