(57)【特許請求の範囲】
【請求項１】
複数の部分画像の１つを指定し、該指定された部分画像に検出の対象が含まれるか否かを判別する判別処理のための複数の弱判別処理の１つを指定して、該指定された弱判別処理の実行を指示する指示手段と、
前記指示手段の前記指示に従って、前記指定された部分画像について前記指定された弱判別処理を行う演算手段と、
前記演算手段による前記指定された弱判別処理の結果に基づいて、前記指定された部分画像に対する判別処理が終了したか否かを判定する判定手段と、を備え、
前記指示手段は、前記複数の部分画像に対する所定の順序に従って、前記判定手段により前記判別処理が終了したと判定された部分画像以外の部分画像を順次循環的に指定し、前記複数の弱判別処理のうち該指定された部分画像に対して未実行の弱判別処理の１つを指定して、該指定された弱判別処理の実行を順次指示し、
前記演算手段は、前記指示手段による順次指示において指定された部分画像に対して指定された弱判別処理を順次実行することを特徴とする画像処理装置。
【請求項２】
前記演算手段は、前記指示手段により指定された部分画像に対して先に指定された弱判別処理の結果に基づく前記判定手段による判定が未完了であっても、該判定の結果を待たずに、当該部分画像に対して新たに指定された弱判別処理を実行することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記指示手段は、前記複数の弱判別処理に対する所定の順序に従って、前記複数の弱判別処理のうち該指定された部分画像に対して次の未実行の弱判別処理を指定することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記判定手段は、前記演算手段による前記指定された弱判別処理により特定パターンが含まれないと判別された場合、前記指定された部分画像に対する判別処理が終了したと判定することを特徴とする請求項１乃至３のいずれか１項に記載の画像処理装置。
【請求項５】
前記判定手段は、前記指定された部分画像に対して前記複数の弱判別処理の全てにより特定パターンが含まれると判別された場合、前記指定された部分画像に対する判別処理が終了したと判定することを特徴とする請求項１乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
画像処理装置で実行される画像処理方法であって、
前記画像処理装置の指示手段が、複数の部分画像の１つを指定し、該指定された部分画像に検出の対象が含まれるか否かを判別する判別処理のための複数の弱判別処理の１つを指定して、該指定された弱判別処理の実行を指示する指示工程と、
前記画像処理装置の演算手段が、前記指示工程の前記指示に従って、前記指定された部分画像について前記指定された弱判別処理を行う演算工程と、
前記画像処理装置の判定手段が、前記演算工程による前記指定された弱判別処理の結果に基づいて、前記指定された部分画像に対する判別処理が終了したか否かを判定する判定工程と、を有し、
前記指示工程は、前記複数の部分画像に対する所定の順序に従って、前記判定工程により前記判別処理が終了したと判定された部分画像以外の部分画像を順次循環的に指定し、前記複数の弱判別処理のうち該指定された部分画像に対して未実行の弱判別処理の１つを指定して、該指定された弱判別処理の実行を順次指示し、
前記演算工程は、前記指示工程による順次指示において指定された部分画像に対して指定された弱判別処理を順次実行することを特徴とする画像処理方法。
【請求項７】
コンピュータを、請求項１乃至５のいずれか１項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像データの処理方法およびプログラムに関する。特に、画像中に写っている特定の被写体を検出する技術に関する。
【背景技術】
【０００２】
画像から特定の被写体パターンを自動的に検出する画像処理方法は有用であり、例えば、人間の顔の判定に利用することができる。このような方法は、通信会議、マン・マシン・インタフェース、セキュリティ、人間の顔を追跡するためのモニタ・システム、画像圧縮等の多くの分野で使用することができる。このような画像中から顔を検出する技術としては、非特許文献１に各種方式が挙げられている。
【０００３】
特に、実行速度と検出率の高さとから、非特許文献２に掲載されるViolaらのAdaBoostベースの手法は、顔検出研究において広く使用されている。AdaBoostベースの手法は、それぞれ異なる単純な判別処理のフィルタを直列状に連結し、判別処理の途中で非顔領域であるとわかった時点で、後続の判別処理を打ち切ることで、判別処理の高速化を行っている。この判別処理をさらに高速化するために、判別処理の並列化やパイプライン化が考えられるが、画像データなどの内容に応じて処理の打ち切りが発生するため、判別処理のスケジュールが困難であるという課題がある。特に、判別処理をハードウェアで実現する場合には、制限されたリソースをより高い効率で活用して判別処理を実現することが求められるので、さらにこのスケジュールの困難さが大きな課題となっている。
【０００４】
課題についてより具体的に説明するために、以下ではBoostingアルゴリズムを応用した顔検出処理を例として説明を行う。図２は、Boostingアルゴリズムを応用した顔検出処理のアルゴリズムを説明する図である。図２において、２０１は入力された画像データを構成する部分画像であるウィンドウ画像である。ウィンドウ画像２０１は、後述する弱判別器２１０〜２５０が参照する画像領域含む。
【０００５】
弱判別器２１０は、ウィンドウ画像２０１の一部もしくは全部の画素値を参照し、その画素値に対して予め定められた演算処理を行い、ウィンドウ画像２０１が、検出対象オブジェクト（例えば、人間の顔領域）を含むか否かを判定する。この予め定めておいた演算に用いる係数等のパラメータは、実際の検出処理の前に機械学習により決定されている。
【０００６】
弱判別器２１１〜２５０も弱判別器２１０と同様の演算処理が可能であるが、好ましくは弱判別器２１０が参照するウィンドウ画像２０１の参照位置および参照範囲、弱判別器２１０の演算に用いる係数等のパラメータがそれぞれ異なるよう構成する。弱判別器２１０〜２５０はウィンドウ画像２０１の参照位置や範囲、また演算に用いる係数等のパラメータが異なるだけで、弱判別器２１０の処理と概略同じ処理を実行することが可能である。図２において、Ｎ個の弱判別器（弱判別器２１０〜弱判別器２５０）は直列状に接続されている。弱判別器２１０〜弱判別器２５０のそれぞれは、演算結果に応じてＰＡＳＳかＮＧの判定を行う。そして、０番目の弱判別器２１０から処理を行い、判定結果がＰＡＳＳであれば次の弱判別器２１１が判定処理を行う、というように順次処理を進める。そうして、最終弱判別器である弱判別器２５０の判定結果もＰＡＳＳであったら、ウィンドウ画像２０１は検出対象のオブジェクト（顔）を含むと判定する。一方で、Ｎ個の弱判別器のいずれかの弱判別器における判定処理でＮＧと判定された場合は、以降の処理は打切られ、ウィンドウ画像２０１には検出の対象オブジェクト（顔）が含まれないと判定する。
【０００７】
図３は、各弱判別器の出力がＰＡＳＳ/ＮＧの２値ではなく、各弱判別器の出力がＯＫ(部分画像は検出対象オブジェクト（顔）を含む)/ＰＡＳＳ/ＮＧの３通りの出力をする場合の例である。図３において、図２と同じものについては同じ参照番号を付して説明を省略する。弱判別器３１０〜３５０が図２の弱判別器２１０〜２５０と異なるのは、先に述べたように出力が３値である点である。Ｎ個の弱判別器３１０〜３５０のいずれかの弱判別器における判定処理で、 部分画像が検出対象オブジェクト（顔）を含むことが判定された場合（判定結果「ＯＫ」）、後続の判定処理を行う必要がないため、判定処理は打ち切りとなる。この点において、図２で説明した弱判別器と相違する。Ｎ個の弱判別器３１０〜３５０におけるその他の処理は、図２で説明した弱判別器と同様である。
【０００８】
顔検出処理は、与えられた画像の一部分に対して、弱判別器における判定処理を繰り返し行うことで実現される。この時、直列状に並んだ弱判別器列の序盤でなるべく多くの判定結果を確定（ＯＫもしくはＮＧ）できるように構成すれば、全体として弱判別器の処理回数の期待値を小さく抑えることができる。また、全体として弱判別器の演算量の削減や処理速度の向上が期待できる。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】M.H.Yang, D.J.Kriegman and N.Ahuja. “Detecting   Faces in Images:A Survey,” IEEE Trans. on PAMI, vol.24, no.1, pp.34-58, January, 2002.
【非特許文献２】P.Viola and M. Jones. “Robust Real-time Object    Detection,” in Proc. of IEEE Workshop SCTV, July, 2001.
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、アルゴリズム的な観点では上記のようにして平均演算量を削減できる一方、これをさらに高速化するためにパイプライン処理化する場合、各ウィンドウに対する処理量が不均一なため、処理のスケジュールが難しいという課題がある。
【課題を解決するための手段】
【００１１】
本発明は、入力画像データに対し、複数の弱判別器を直列に接続して構成される判別処理を効率良く行うことを可能にする技術を提供する。
【００１２】
本発明の一つの側面にかかる画像処理装置は、複数の部分画像の１つを指定し、該指定された部分画像に検出の対象が含まれるか否かを判別する判別処理のための複数の弱判別処理の１つを指定して、該指定された弱判別処理の実行を指示する指示手段と、
前記指示手段の前記指示に従って、前記指定された部分画像について前記指定された弱判別処理を行う演算手段と、
前記演算手段による前記指定された弱判別処理の結果に基づいて、前記指定された部分画像に対する判別処理が終了したか否かを判定する判定手段と、を備え、
前記指示手段は、前記複数の部分画像に対する所定の順序に従って、前記判定手段により前記判別処理が終了したと判定された部分画像以外の部分画像を順次循環的に指定し、前記複数の弱判別処理のうち該指定された部分画像に対して未実行の弱判別処理の１つを指定して、該指定された弱判別処理の実行を順次指示し、
前記演算手段は、前記指示手段による順次指示において指定された部分画像に対して指定された弱判別処理を順次実行することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、複数の部分画像に対する判別処理を効率的に行うことが可能になる。
【図面の簡単な説明】
【００１４】
【図１】実施形態にかかる画像処理装置の構成例を示す図。
【図２】Boostingアルゴリズムを応用した検出処理の例を説明する図。
【図３】Boostingアルゴリズムを応用した検出処理の例を説明する図。
【図４】分岐構造を持つ、Boostingアルゴリズムを応用した検出処理の例を説明する図。
【図５】指示部の処理の流れを説明する図。
【図６】指示部の処理における初期化処理の流れを説明する図。
【図７】指示部の処理における指示部状態更新処理の流れを説明する図。
【図８】指示部の処理におけるジョブ投入処理の流れを説明する図。
【図９】指示部の処理におけるメモリ態更新処理の流れを説明する図。
【図１０】判定部の処理の流れを説明する図。
【図１１】ウィンドウ画像の例を示す図。
【図１２】弱判別器の処理を例示する図。
【図１３】弱判別器の処理を例示する図。
【図１４】弱判別器の処理を例示する図。
【図１５】弱判別器の処理を例示する図。
【図１６】指示部、演算部、パラメータ供給部、メモリおよび判定部の間の動作の流れを示す図。
【図１７】判定部の処理における判定部状態更新処理の流れを説明する図。
【図１８】ウィンドウ画像に対する判別処理の実行順を例示する図。
【発明を実施するための形態】
【００１５】
（第１実施形態）
本発明の実施形態を、図面を参照して詳細に説明する。図１は、実施形態にかかる画像処理方法を実現する画像処理装置の概略構成を示す図である。図１において、指示部１０１は、部分画像のそれぞれに対する画像処理のスケジュール管理を行う。指示部１０１は、外部からの制御入力(画像処理の開始指示)を受け取り、画像処理が開始される。指示部１０１は、メモリ１０２との間でデータの入出力が可能である。また、指示部１０１は、演算部１０３へのデータ出力が可能であり、判定部１０４からのデータ入力が可能なように構成されている。
【００１６】
メモリ１０２は、例えば、図２におけるウィンドウ画像２０１を複数保持することが可能である。メモリ１０２は、外部に対して画像データの要求を送信し、また、画像データを取得し、取得した画像データを保持することができる。さらに、メモリ１０２は、指示部１０１からの指示を受信して、応答が返せるように構成されている。また、メモリ１０２は、演算部１０３からの画像データの要求受信と、演算部１０３へ要求された画像データの出力が可能なように構成されている。メモリ１０２は検出対象の画像データの全てを同時に格納できる記憶容量を有するものであってもよいが、検出対象の画像データの全体を保持するための記憶容量は必ずしも必要ない。メモリ１０２は、複数のウィンドウ画像を保持できればよく、例えば、検出対象の画像データをバンド状もしくはブロック状に分割した部分画像を格納できるような記憶容量を有すればよい。また、メモリ１０２は、指示部１０１からの指示に応じて、メモリ１０２に保持している画像データの一部もしくは全部を入れ替えることが可能なように構成されている。その場合、メモリ１０２は、指示部１０１からの指示に応じて、外部に対して画像データの要求を送信し、画像データの受信（取得）が完了した時点で指示部１０１に対して返答するように構成されている。
【００１７】
演算部１０３は、少なくとも1つの弱判別器の処理を実行可能なように構成されている。また、演算部１０３は、メモリ１０２に画像データの要求を送信し、メモリ１０２から送信された画像データ（複数の部分画像データ）を参照できるように構成されている。パラメータ供給部１０５は、弱判別器が判別処理に用いるパラメータを保持しており、演算部１０３からの要求に応じて、パラメータを送信できるように構成されている。演算部１０３は、パラメータの要求をパラメータ供給部１０５に送信し、パラメータ供給部１０５から送信されたパラメータを参照できるように構成されている。判定部１０４は、演算部１０３の出力を受信して判定を行い、判定結果を出力する。この際、判定結果は指示部１０１にも送信される。
【００１８】
メモリ１０２が保持する複数のウィンドウ画像を図１１の参照により例示的に説明する。メモリ領域１１１０は、演算部１０３がメモリ１０２から参照可能な領域を表しており、メモリ領域１１１０の内部にある最も小さな矩形領域１１１１は各画素データを表している。１１０１〜１１０５はメモリ領域１１１０に設定された複数のウィンドウ画像を表しており、例えば、ウィンドウ画像１１０１はメモリ領域１１１０の位置（０、０）から幅１０画素、高さ１０画素の領域にある。また、同様にウィンドウ画像１１０２はメモリ領域１１１０の位置（０、２）から幅、高さともに１０画素の領域にある。ウィンドウ画像１１０３はメモリ領域１１１０の位置（０、４）から幅、高さともに１０画素の領域にある。ウィンドウ画像１１０４はメモリ領域１１１０の位置（０、６）から幅、高さともに１０画素の領域にある。そして、ウィンドウ画像１１０５はメモリ領域１１１０の位置（０、８）から幅、高さともに１０画素の領域である。ウィンドウ画像１１０１〜１１０５は、図２におけるウィンドウ画像２０１に対応するが、それぞれ原画像の位置が異なるウィンドウ画像である。
【００１９】
図１６は、図1で説明した、指示部１０１、演算部１０３、パラメータ供給部１０５、メモリ１０２、および判定部１０４の処理の流れを説明するシーケンス図である。対象オブジェクトの検出処理は、例えば、図２で説明したように、1つのウィンドウ画像に対してＮ個の弱判別器を順次適用して、Ｎ個全ての弱判別器を通過(ＰＡＳＳと判定された)場合、ウィンドウ画像は対象オブジェクトを含むと判定する。あるいは、いずれかの弱判別器でＮＧと判定された場合、その時点で後続する弱判別器の処理を取りやめ、ウィンドウ領域が対象オブジェクトを含まないと判定する。Ｎ個の弱判別器のそれぞれは異なるパラメータを処理に使用するが、処理の内容は同一である。メモリは同時に複数のウィンドウ画像を保持している。
【００２０】
指示部１０１は、外部から画像処理の開始の指示を受信すると（Ｓ１６０１）、メモリ１０２に対して画像更新要求を送信する。メモリ１０２は、指示部１０１から画像更新要求を受信すると、外部に対して画像データを要求し、画像データの要求に対して外部から送信された画像データを蓄積する。複数のウィンドウ画像を構成するのに十分なデータ量を蓄積した時点で指示部１０１に応答（ＯＫ）を返す。
【００２１】
指示部１０１は演算部１０３に対して判別処理の実行を指示する（ジョブ指示）。指示部１０１は演算部１０３に対し、判別処理の対象となるウィンドウ画像や弱判別器に対して、識別情報（ＩＤ）を付与する。1つのウィンドウ画像に対する1つの弱判別器の処理を、以下、判別ジョブ、もしくは単にジョブと呼ぶことにする。判別ジョブの指示は、ウィンドウ画像の識別情報（ＩＤ）と弱判別器の識別情報（ＩＤ）との対を演算部１０３に対して送信することで行う。指示部１０１はステップＳ１６０２、Ｓ１６０３、Ｓ１６０４において、次に処理すべき判別ジョブを決定し、演算部１０３に判別ジョブの指示を送信する。ステップＳ１６０２〜Ｓ１６０４の判別ジョブの生成については後述する。
【００２２】
演算部１０３は、指示部１０１からの指示を受け取り、パラメータ供給部１０５にパラメータの要求を送信する。パラメータには、後続の演算処理ステップＳ１６１１で用いる係数、判別処理の継続（ＰＡＳＳ）または打ち切り（終了：ＮＧ）の判定を行うための閾値や、また、ウィンドウ画像内の参照領域の位置や大きさに関する情報などが含まれる。演算部１０３は、パラメータ供給部１０５から送信されたパラメータを受信すると、そのパラメータに従いメモリ１０２に対して演算処理に必要な画像データを参照するための画像データの要求を送信する。演算部１０３はメモリ１０２から送信された画像データを受信して、受信した画像データと、先に受信したパラメータとを用いて、予め定められた演算を行い(Ｓ１６１１)、その演算結果(ＰＡＳＳ/ＮＧ)を判定部１０４に送信する。
【００２３】
ステップＳ１６１２とステップＳ１６１３は、ステップＳ１６１１と異なる判別ジョブに対する演算処理である。
【００２４】
ステップＳ１６１２、Ｓ１６１３における判別ジョブはウィンドウ画像の識別情報（ＩＤ）と弱判別器の識別情報（ＩＤ）との少なくとも一方が異なる。それに応じてパラメータ要求や画像データの要求がそれぞれ行われるが、処理の内容はステップＳ１６１１と同じである。
【００２５】
判定部１０４は、ステップＳ１６１１の演算結果を演算部１０３から受け取って、判定処理（Ｓ１６２１）を行い、その結果を指示部１０１に送信する。判定処理については後述する。尚、ステップＳ１６２２とステップＳ１６２３は、判定対象の判別ジョブが異なるだけで同じ処理であり、判定処理が完了すると、ステップＳ１６２１と同様に判別結果は指示部１０１に送信される。
【００２６】
指示部１０１の判別ジョブの指示もしくは演算部１０３の演算結果の送信と、判定部１０４の判定結果の送信はタイミングがずれているようになっているが、それは表記上の都合で、実際は概略同じタイミングであってよい。例えば、ステップＳ１６０４のジョブ生成の結果についての判別ジョブ指示と、ステップＳ１６２１の判定処理の結果である判定結果の送信とは、ほぼ同時に発生し得る。
【００２７】
図１６では、ステップＳ１６２１の判定処理で、判定結果が確定した場合を例示的に示している。指示部１０１は、ステップＳ１６２１における判定結果を判定部１０４から受信する。ウィンドウ画像に対象物（特定パターン）が含まれることを示す結果が判定結果に含まれている場合、ウィンドウ画像に対する検出処理が終了したことを検出する（Ｓ１６０５）。以後、指示部１０１は判別ジョブの生成を停止する。
【００２８】
しかしながら、図1に示した各部の全ての処理が終わるのは、ステップＳ１６２３の判定処理による判定結果送信を受け取った後のステップＳ１６０６である。ステップＳ１６０６において、全体の処理が終了したか否かを判定するために、指示部１０１がジョブ生成により演算部１０３に対して指示したジョブの数と、判定部１０４が指示部１０１に送信した判定結果の数とをそれぞれ計数しておく。そして、ステップＳ１６０５によるウィンドウ画像の処理終了検出の後に、指示部１０１は、計数された両者の数が一致するタイミングで、全体の処理が終了したことを判定する。
【００２９】
ステップＳ１６２２およびＳ１６２３の判定処理が、ステップＳ１６２１で判別結果が確定済みであるウィンドウ画像と同一のウィンドウ画像に対する判別ジョブである場合、判定部１０４はそのウィンドウ画像の判別処理が終了済みであると判定する。判定部１０４は、識別情報（ＩＤ）の比較により、同一のウィンドウ画像であるか否かについての判定を行うことが可能である。指示部１０１においても、ステップＳ１６０５において、ウィンドウ画像に対する検出処理が終了したことを検出しており、ウィンドウ画像の判別処理が終了していることは既知である。このような場合、重複した演算処理の負荷を軽減するために、ステップＳ１６２２およびＳ１６２３の判定処理を省略して、ダミーのデータを指示部１０１に返すこともできる。
【００３０】
このような場合、例えば、演算処理Ｓ１６１２およびＳ１６１３の演算処理の結果は正確なものである必要はない。従って、ステップＳ１６２１の判定処理で全てのウィンドウ画像に対する判定処理が確定した後であれば、指示部１０１はメモリ１０２に対して画像データの入れ替えを指示しても良い。メモリ１０２は、画像データの入れ替え中でもメモリ１０２に対する演算部１０３の画像データ要求に対して応答を返すように構成することが可能である。そうすれば、演算部１０３は演算を進めることができる一方、判定部１０４における重複した判定処理の演算負荷を軽減することができる。
【００３１】
（指示部１０１の処理）
図５は、指示部１０１の処理の流れを示す流れ図である。メモリ１０２が保持するウィンドウ画像はW個(W＞0)あり、０〜(W-１)までの識別情報を与えて区別するものとする。例えば、図１１の例において、ウィンドウ画像１１０１〜１１０５に対して順番にウィンドウ画像の識別情報（ＩＤ）＝０〜４の識別情報（ＩＤ）を付与する。
【００３２】
また、先頭に配列された弱判別器から順番に弱判別器の識別情報（ＩＤ）＝０〜（Ｎ−１）の識別情報（ＩＤ）を付与し、弱判別器の識別情報（ＩＤ）の順に判別処理が順次実行される。まず、ステップＳ５０１で初期化処理を行う。初期化処理の詳細を図６の参照により説明する。
【００３３】
まず、ステップＳ６０１で、次に処理すべきウィンドウ画像の識別情報（ＩＤ）を保持するcurrentをW-1で初期化する。W-1に設定するのは、後述する判別ジョブ投入処理においてウィンドウ画像の識別情報（ＩＤ）0番から処理を開始するためにW-1としているが、値を明確に初期化すれば良く、他のウィンドウ画像の識別情報（ＩＤ）で初期化してもよい。また、最初の処理であることを表す、init_flagを1にセットする。
【００３４】
ステップＳ６０２では、ステップＳ６０３〜S６０４の処理回数を数えるカウンタiを0に初期化する。ステップＳ６０３では、ループ処理の終了判定を行う。S６０４の処理をN回処理したかどうかを判定し、まだ処理が終了していなければ（Ｓ６０３−Ｙｅｓ）、ステップＳ６０４の処理を繰り返し、終了した場合（Ｓ６０３−Ｎｏ）、処理は終了する。
【００３５】
ステップＳ６０４では、配列win_status[i]の値を0で初期化して、カウンタiの値をカウントアップして、処理をステップＳ６０３に戻す。
【００３６】
本実施形態では、各ウィンドウ画像の状態を管理する変数として、win_statusを用いる。win_statusはW個の配列を有し、次に処理すべき弱判別器ＩＤの値を保持する。また、この値が負の値である場合は、そのウィンドウに対する判別処理が終了していることを表すものとする。初期化処理の段階で、次に処理すべき弱判別器の識別情報（ＩＤ）として0が設定される。
【００３７】
図６で説明した初期化処理（Ｓ５０１、図６）が終了すると、処理は図５のステップＳ５０２に進められる。ステップＳ５０２では、メモリ１０２に対してメモリ更新処理を行う。メモリ更新処理の詳細を図９の参照により説明する。ステップＳ９０1において、指示部１０１は、メモリ１０２に対して、画像の更新要求を送信する。そして、メモリ１０２は、指示部１０１から画像更新要求を受信すると、外部に対して画像データを要求し、画像データの要求に対して外部から送信された画像データを蓄積する。そして、ステップＳ９０２において、複数のウィンドウ画像を構成するのに十分なデータ量を蓄積した時点で、メモリ１０２は、指示部１０１に応答（ＯＫ）を返す。
【００３８】
メモリ更新処理（Ｓ５０２、図９）が終了すると、図５のステップＳ５０３に処理は進められる。ステップＳ５０３では、判定部１０４からの出力の有無を確認する。判定部１０４からの出力があれば（Ｓ５０３−Ｙｅｓ）、処理はステップＳ５０４に進められる。ステップＳ５０４では、判定部１０４の出力（判定結果）を読み込み、ステップＳ５０５では、判定部１０４の出力（判定結果）に応じて指示部１０１の状態を更新する。指示部状態更新処理の詳細を図７の参照により説明する。
【００３９】
まず、判定部１０４の出力（判定結果）には、判定したウィンドウ画像の識別情報（ＩＤ）と、その判定結果とが含まれるものとする。ステップＳ７０１において、指示部１０１は、出力（判定結果）から、ウィンドウ画像の識別情報（ＩＤ）と判定結果とを読み込む。ここで、判定結果としては、最低限、処理を継続する(ＰＡＳＳ)か、処理を終了するかがわかればよい。例えば、判定部１０４の返す判定結果として、「0」を処理継続、「１」を処理終了とする。処理終了は、例えば、図２の場合、ジョブの判定結果がＮＧの場合や、最後の弱判別器２５０をＰＡＳＳした場合が該当する。さらには、図３の場合、途中の弱判別器でＯＫの判定がされた場合も処理終了に該当し得る。また、図１６のステップＳ１６２２やＳ１６２３のように、既に判定処理が終了したウィンドウ画像に対するジョブの結果なども、処理終了に該当し得る。
【００４０】
これらの判定結果については、より詳細に信号に意味を割り当ててもよいが、最低限、そのウィンドウ画像の継続処理か、処理終了かを判定できればよい。
【００４１】
続く、ステップＳ７０２では、判定部１０４の出力するウィンドウ画像の識別子が（win_ＩＤ）で表されるウィンドウ画像に対して、処理を継続する指示かどうかを判定する。判定結果（result）=0であれば処理継続と判定され(S７０２−Ｙｅｓ)、処理は終了する。ステップＳ７０２の判定で、判定結果（result）=１であれば、処理終了と判定され（Ｓ７０２−Ｎｏ）、処理はステップＳ７０３に進められる。
【００４２】
ステップＳ７０３はウィンドウ画像を無効化する処理で、先に述べたように、win_status  [win_ＩＤ]を無効にするために、判定結果の値として-1を設定し、処理を終了する。
【００４３】
説明を図５のステップＳ５０３に戻す。ステップＳ５０３の判定で、判定部１０４からの出力が無ければ（Ｓ５０３−Ｎｏ）、処理はステップＳ５０６に進められる。ステップＳ５０６では、演算部１０３に判別ジョブを投入する空きがあるかどうかを判定する。空きがなければ（Ｓ５０６−Ｎｏ）、処理はＳ５０８に進められる。一方、演算部１０３に判別ジョブを投入する空きがあれば、処理はステップＳ５０７のジョブ投入処理に進められる。ジョブ投入処理の詳細を図８の参照により説明する。
【００４４】
まず、ステップＳ８０１で、指示部１０１は、currentの値を更新する。また、指示部１０１は、ステップＳ８０２〜Ｓ８０４の処理を制御するカウンタcntを0に初期化する。ステップＳ８０２では、ループ処理を抜けるか否かの判断を行う。cnt≧Ｗとなった場合（Ｓ８０２−Ｎｏ）、処理は終了する。このステップＳ８０２の判定でＮｏとなるのは、次に判別ジョブとして投入すべきウィンドウ画像がなかった場合が該当し得る。
【００４５】
ステップＳ８０２の判定で、cnt＜Ｗの場合（Ｓ８０２−Ｙｅｓ）、処理はステップＳ８０３に進められる。ステップＳ８０３では、currentのウィンドウ画像が有効か否かが判定される。win_status[current]＜０という状態は、currentのウィンドウ画像の処理が終了していること、すなわちウィンドウ画像は無効である判定する（Ｓ８０３−Ｙｅｓ）。ウィンドウが無効な場合（Ｓ８０３−Ｙｅｓ）、処理はステップＳ８０４に進められる。ステップＳ８０４では、currentの値とcntの値が更新され、処理はステップＳ８０２に戻され、同様の処理が繰り返される。ステップＳ８０３の判定で、有効なウィンドウが見つかった場合（Ｓ８０３−Ｎｏ）、処理はステップＳ８０５に進められる。
【００４６】
ステップＳ８０５では、指示部１０１は、演算部１０３に対して、ウィンドウ画像のＩＤとしてcurrentを、弱判別器のＩＤとしてwin_status[current]を、判別ジョブとして送信する。指示部１０１は、判別ジョブとあわせて、フラグinit_flagを送信する。本処理がウィンドウ画像に対して初めての判別ジョブの送信である場合には、初期化処理（図６のS６０１）でinit_flag ＝1が設定されているので、init_flag ＝1を送信する。
【００４７】
ステップＳ８０６では、win_status[current]に「１」を加算して、win_status[current]を更新するとともに、init_flagを「０」にセットする。以上の処理によりジョブ投入処理が終了する。指示部状態更新処理（Ｓ５０５、図７）、またはジョブ投入処理（Ｓ５０７、図８）が終了すると、処理は図５のステップＳ５０８に進められる。ステップＳ５０８では、有効なウィンドウ画像があるかどうかを判定する。ここでは、win_statusの全ての要素が負の値であれば有効なウィンドウ画像が無いと判定される（Ｓ５０８−Ｙｅｓ）。一方、ステップＳ５０８の判定で、有効なウィンドウ画像が有ると判定される場合（Ｓ５０８−Ｎｏ）、処理がステップＳ５０３に進められ、以下同様の処理が繰り返される。
【００４８】
ステップＳ５０８の判定処理で有効なウィンドウ画像が無いと判定される場合（Ｓ５０８−Ｙｅｓ）、処理はステップＳ５０９に進められ、処理を終了するか否かが判定される。これは、例えば、外部からの制御入力において、何回ウィンドウ画像の入れ替えをして判定処理を行ったら終了かという情報を受け取っておき、図５のステップＳ５０１〜Ｓ５０９の処理を何回行ったかを数えておけばよい。この比較に基づいてステップＳ５０９の真偽を決定してもよいし、あるいは、ステップＳ５０９の判定において、外部から、継続すべきか終了すべきかの指示を受け取り、それに基づいて終了判定を行うことも可能である。ステップＳ５０９の判定で、処理を終了しない場合（Ｓ５０９-Ｎｏ）、処理はステップＳ５０1に戻され、同様の処理が繰り返される。
【００４９】
ステップＳ５１０は、図１６におけるステップＳ１６２２およびステップＳ１６２３に対応する処理で、判定部１０４からの応答を待つ処理である。
【００５０】
（判定部１０４の処理）
判定部１０４の処理を図１０の参照により説明する。ステップＳ１００１では、判定部１０４は、演算部１０３からの入力待ちの状態で待機する。ステップＳ１００２では、演算部１０３よりウィンドウ画像のＩＤとしてwin_ＩＤ、弱判別器のＩＤとしてclf_ＩＤ、また演算値としてｖａｌ、また、初期化フラグとしてinit_flagを受け取る。ウィンドウ画像のＩＤと弱判別器のＩＤとinit_flagは、指示部１０１が図８のＳ８０５で演算部１０３に送信したものと同じものである。
【００５１】
続くステップＳ１００３では、init_flagの値で処理を分岐させる。init_flagが１であれば（Ｓ１００３−Ｙｅｓ）、ステップＳ１００４の初期化処理を行い、そうでない場合は（Ｓ１００３−Ｎｏ）、ステップＳ１００４をスキップして、処理はステップＳ１００５に進められる。
【００５２】
ステップＳ１００４の初期化処理では、各ウィンドウ画像の判定済みか否かを管理する変数の初期化を行う。例えば、判定状態を示す情報win_status2[win_ＩＤ]（配列：要素数W個）を設け、要素の値が0であればそのウィンドウ画像の処理は判定済(状態が確定)を表し、そうでなければウィンドウ画像の処理は判定が終了していないとする。この場合、それらの各要素について非0値 (ウィンドウは有効) 、例えば1を設定すれば良い。また、ステップＳ１００８で用いるsend_flagフラグの値（結果を送信したかどうか判別するのに用いる）を0に初期化する。さらに、各ウィンドウ画像の検出結果を示す情報win_detect[]配列（要素数W個）を設け、各要素に0を設定する。win_detect[]配列は、各ウィンドウの検出結果を記憶し、０は検出なし、１は検出ありを表すものとする。
【００５３】
ステップＳ１００５では判定部１０４の内部状態を更新する。これは演算部１０３の出力する結果に基づき、win_status2[win_ＩＤ]の値を更新する。例えば、図２の例の場合、演算部１０３の演算結果がＮＧであるか、あるいは最後の弱判別器(N-1) (図２の２５０)をＰＡＳＳして状態が確定すれば、win_status2[win_ＩＤ]の値を0にする。ステップＳ１００５の詳細を図１７の参照により説明する。
【００５４】
まず、ステップＳ１７０１で、指定されたウィンドウ画像が判定未終了かそれとも終了しているかを判定する。これは、演算部１０３から受け取ったwin_ＩＤに基づき、それに対応するwin_status2[]配列の要素、すなわちwin_status2[win_ＩＤ]を参照し、その値と0を比較して判定すれば良い。win_status2[win_ＩＤ]が非０であればウィンドウは判定が済んでいない状態であるので（Ｓ１７０１−Ｙｅｓ）、処理はステップＳ１７０２に進められる。win_status2[win_ＩＤ]＝０の場合（Ｓ１７０１−Ｎｏ）、図１７の処理は終了する。
【００５５】
続くステップＳ１７０２では、判定部１０４は演算部１０３から入力された演算値がＰＡＳＳを表すかどうかを判定する。演算値に対してその弱判別器に応じた閾値を使って判定し、閾値未満であればＮＧ、そうでなければＰＡＳＳとする。各弱判別器によって閾値が変わる場合には、その閾値はパラメータ供給部１０５から閾値の供給を受ければよい。図１において、パラメータ供給部１０５は判定部１０４と直接には接続していないが、例えば、演算部１０３を介して閾値の供給を受けることが可能である。あるいは、図１に示していないが、パラメータ供給部１０５と判定部１０４との間を接続し、その接続を介して閾値の供給を受けるように変形してもよい。閾値との大小関係とＮＧ/ＰＡＳＳの対応は一例であって、例えば、逆に閾値未満であればＰＡＳＳ、そうでなければＮＧとするような演算であってもよい。
【００５６】
ステップＳ１７０２の判定結果が真であれば、処理はステップＳ１７０３に進められ、そうでない場合、処理はステップＳ１７０５に進められる。ステップＳ１７０３の判定は処理中の弱判別器が最終弱判別器(図２における２５０)か否かの判定である。これは演算部１０３から弱判別器のＩＤとして受け取ったclf_ＩＤを元にＮ-１と比較すれば良い。ステップＳ１７０３―Ｙｅｓの場合、判定の対象となる弱判別器は最終判別器ではないので、処理は終了する。一方、ステップＳ１７０３―Ｎｏの場合、処理中の弱判別器は最終弱判別器なので、ＰＡＳＳであった場合に、検出対象物である顔を「検出した」として処理をする。ステップＳ１７０４では、最終弱判別器をＰＡＳＳして、判定状態は確定する。判定状態を示す情報win_status2[win_ＩＤ]の値を０に設定する。また、「検出した」ことを記憶するため、検出結果を示す情報win_detect[win_ＩＤ]の値を１に設定し、処理は終了する。各ウィンドウ画像の検出結果として、例えば、０は検出なし、１は検出ありを表すものとする。
【００５７】
ステップＳ１７０５は、Ｓ１７０２の判定で、弱判別器の判定結果がＮＧとなった場合、部分画像には対象物（特定パターン）は含まれない判定が確定するので、判定状態を示す情報win_status2[win_ＩＤ]の値を０に設定して処理は終了する。ステップＳ１００５の処理（図１７）が終了すると処理は、図１０のステップＳ１００６に進められ、判定部状態更新処理の結果が指示部１０１に通知される。
【００５８】
ステップＳ１００７では、有効なウィンドウ画像があるかどうかをwin_status2[]配列を参照し、有効なウィンドウ画像がない場合（Ｓ１００７−Ｎ０）、処理はステップＳ１００８に進められ、そうでなければ処理はＳ１００１に戻る。ステップＳ１００８では、結果を送信したかどうか判別するのに用いるフラグsend_flagの値を調べて処理を分岐する。フラグsend_flagの値が１であれば（Ｓ１００８−Ｙｅｓ）、処理はステップＳ１００９に進められ、そうでなければ処理はステップＳ１００１に戻される（Ｓ１００８−Ｎｏ）。
【００５９】
ステップＳ１００９では、判定結果の出力処理を実行する。これはwin_detect[]配列の各要素の値に基づき、各ウィンドウ画像の領域検出の有無を出力する。出力は任意の形式で良い。
【００６０】
ステップＳ１０１０では、send_flagの値を0に設定する。これは、図１６で説明した通り、ウィンドウ画像の検出が全て終了した後も、演算部１０３からはジョブの演算結果が入力される可能性があるためである。この処理は、図１０のフローチャートにおいてステップＳ１００８へのパスを複数回通る可能性があるので、その最初の一回のみにステップＳ１００９の処理を実行するようにするためのものである。ステップＳ１０１０を実行した後は、ステップＳ１００８の判定は偽（Ｓ１００８−Ｎｏ）になりステップＳ１００９は実行されない。また、init_flagとして1が与えられるとステップＳ１００４の初期化処理によってsend_flagが1に設定され、Ｓ１００８の判定が再度、真になるようになる。
【００６１】
演算部１０３の処理は、公知の検出処理における弱判別処理であれば任意のもので良い。概略としては次のように構成する。まず、メモリ１０２内に設定された複数のウィンドウ画像のうち、指示部１０１から判別ジョブとして指定されたウィンドウ画像のＩＤに基づきウィンドウ画像を特定する。
【００６２】
続いて、そのウィンドウ画像の内部の一部もしくは全部の画素値を参照するとともに、判別ジョブの弱判別器のＩＤに基づき、パラメータ供給部１０５から対応するパラメータの供給を受け、画素値とパラメータを用いた演算を行う。そして、その演算値を判別ジョブの情報とともに判定部１０４に出力するよう構成する。
【００６３】
メモリ１０２は指示部１０１の指示に応じて、外部から画像データを取得し、保持する。メモリ１０２は、例えば、図１１のように複数のウィンドウ画像を保持することが可能である。メモリ１０２内に複数のウィンドウ画像が同時に存在していればよく、必ずしも図１１のようにウィンドウが他のウィンドウと重複している必要はない。
【００６４】
パラメータ供給部１０５は演算部１０３の要求に応じて、判別処理用のパラメータを提供する。パラメータ供給部１０５が全ての判別処理用のパラメータを保持するよう構成するか、あるいは外部に大容量のメモリを設け、パラメータ供給部１０５はその大容量メモリに対するキャッシュのように動作するように構成してもよい。パラメータ供給部１０５をキャッシュのように動作するように構成する場合、好ましくは、指示部１０１からの出力を、パラメータ供給部１０５が直接受け取るように構成する。さらに、指示部１０１は処理の進行を予測して、事前にパラメータ供給部１０５に必用とされる判別処理用のパラメータをプリフェッチするよう構成することも可能である。指示部１０１が処理の進行を予測するとは、例えば、図２乃至図４のような処理に対し、例えば、演算部１０３に対して指示を行う弱判別器よりＮ個(Ｎ≧０)先の弱判別器で用いる判別パラメータのプリフェッチをパラメータ供給部１０５に指示するようにする。Nは予め定めておけば良いし、なんらかの方法により弱判別器処理の進行を予測して動的に決定するように構成しても良い。
【００６５】
（弱判別器の処理）
次に、弱判別器の処理について、図１２乃至図１５を参照して説明する。弱判別器の処理方式は、図２、３に示した、直線状に接続した弱判別器の判別処理に適用可能であるが、この例に限定されず、図４に示した分岐構造を有する判別処理に対しても適用可能である。直線状に接続した弱判別器（例えば、弱判別器（１、０）・・・（１、Ｐ−１）、または、弱判別器（２、０）・・・（２、Ｑ−１）、または、弱判別器（３、０）・・・（３、Ｒ−１））の判別処理に適用可能である。また、その分岐先の弱判別器の処理を、仮想的に別検出ウィンドウ画像に対する処理のように扱えば、分岐が多段であっても適用可能であることは自明である。
【００６６】
説明の簡単のため、検出対象のウィンドウ画像が対象物（特定パターン）を含むか含まないかが確定したことを、検出対象のウィンドウ画像に対する処理が終了したとも言うこととする。図１２乃至図１５では判別ジョブが、指示部１０１、演算部１０３および判定部１０４で処理される際のタイムチャートを示している。図１２乃至図１５において横軸は時間軸である。図１２では時刻ｔ０〜t１５、図１３乃至図１５においてはｔ０〜t18の時刻の間にそれぞれ１５個、１８個のタイムスロットがあり、各タイムスロットで各部が1つの判別ジョブを処理するものとする。タイムスロットに配置された四角は判別ジョブをあらわし、Ｗｘはウィンドウ画像のＩＤがｘであること、Syは弱判別器のＩＤがｙであることを示している。また、説明の簡単のため、ウィンドウ画像のグループ中には最大でＩＤが０から２（０≦ｘ≦３）の３ウィンドウ画像あることとする。また、弱判別器はＩＤが０から５（0≦ｙ≦５）の６個あり、弱判別器Ｓ５をＰＡＳＳした場合、対象物（特定パターン）有りと検出するものとする。また、ウィンドウ画像のＩＤ ＝Ｗｘ、弱判別器のＩＤ＝ Ｓｙの判別ジョブを、Ｗｘ/Ｓｙとも表記する。
【００６７】
図１２乃至図１５では、最初のウィンドウ画像のグループに対して実線の四角で表された判別ジョブの処理を行う。そして全てのウィンドウ画像に対する処理が終了したことを検出した時に、指示部１０１のｔ１３の時点でメモリの入れ替えを行い、次のウィンドウ画像のグループとして破線の四角で表された判別ジョブを行うものとする。ただし、図１３は1つのウィンドウ画像のグループに関するタイムチャートで、２つ目のウィンドウ画像のグループ、すなわち、図１２に示すような破線のウィンドウ画像のグループの判別ジョブは書かれていない。また、網掛けで表された四角は、実際にはその判別ジョブに対応する弱判別器より前の弱判別器で処理が終了した判別ジョブであることを示している。図１２乃至図１５では、方式１〜方式３の3つの方式による処理の違いを図示している。方式1〜方式３はそれぞれ以下のように動作する。
【００６８】
（方式１）
ある検出対象のウィンドウ画像に対する処理が終了するまで投機的に判別ジョブを指示する。判別処理が終了したことを検知した時点で、そのウィンドウ画像に対する判別処理の指示を止め、次のウィンドウ画像の判別ジョブを指示する。
【００６９】
（方式２）
各ウィンドウ画像に対する同一の弱判別器に対する判別ジョブを指示し、その判別結果を待つ。判別結果を受け取り、そのウィンドウ画像の処理が終了していなかったら、次の弱判別器に対する判別ジョブを指示する。
【００７０】
（方式３）
本発明の実施形態による画像データの処理はこの方式によるものである。判別ジョブの指示の時点で判別処理が終了していないウィンドウ画像を巡回しながら次に行うべき判別器に対する判別ジョブを指示する。
【００７１】
図１２では、最初のウィンドウ画像のグループ中にＷ０〜Ｗ２の３つのウィンドウ画像が存在し、次の表１のような判定結果である場合の例を示している。
【００７２】
【表１】
0005974148.tif 000002
【００７３】
表１のケースを方式１で処理すると、表２のようになる。表２は方式1による処理について、時刻と、指示部および判定部の処理と、をまとめたものである。表２において、セルが網掛けになっている部分は、その判別ジョブに対応する弱判別器より前の弱判別器で処理が終了した判別ジョブである。また、空白のセルは判別ジョブを処理していない状態を示している。
【００７４】
【表２】
0005974148.tif 000003
【００７５】
表２の例の場合、方式1による方式でウィンドウ画像のグループの処理終了を検知するのは、時刻ｔ１３のタイミングである。
【００７６】
表１のケースを方式２で処理すると、表３のようになる。表３は方式２による処理について、時刻と、指示部および判定部の処理と、をまとめたものである。表３の表記は表２の表記と同様である。
【００７７】
【表３】
0005974148.tif 000004
【００７８】
表３の例の場合、方式２による方式でウィンドウ画像のグループの処理終了を検知するのは、時刻ｔ１２のタイミングになる。
【００７９】
次に、図１２の方式３について説明する。本方式においては、ウィンドウ画像を処理する順序を規定する。指示部１０１は外部からの制御入力により、複数のウィンドウ画像について、判別処理の実行順を設定することが可能である。設定された実行順は、判別ジョブに含まれ、指示部１０１から演算部１０３に送信される。演算部１０３は、判別ジョブに含まれる実行順に従い、複数のウィンドウ画像（部分画像）の判別処理を行う。図１８（ａ）、（ｂ）、（ｃ）は、ウィンドウ画像に対する判別処理の実行順を例示する図であり、図１２の例にあわせて、３つのウィンドウ画像（Ｗ０〜Ｗ２）の例を示している。図１８のウィンドウ画像１８０１〜１８０３が、図１２のウィンドウ画像Ｗ０〜Ｗ２に対応するものとする。図１８（ａ）、（ｂ）、（ｃ）において、実線の矩形は処理済みでないウィンドウ画像を示しており、破線の矩形は処理済みのウィンドウ画像を示している。尚、ウィンドウ画像の数は、３つの例に限定されるものではなく、４つ以上の場合でも循環の順序を規定できるのは明らかである。
【００８０】
図１８（ａ）は、全てのウィンドウ画像が処理済みでない状態を例示している。例えば、判別処理を行う弱判別器を弱判別器Ｓｉとする。この弱判別器Ｓｉで最初に処理されるウィンドウ画像をウィンドウ画像Ｗ０（１８０１）とする。ウィンドウ画像Ｗ０（１８０１）の次に処理の対象となるのはウィンドウ画像Ｗ１（１８０２）である。ウィンドウ画像Ｗ１（１８０２）の次に処理の対象となるのはウィンドウ画像Ｗ２（１８０３）である。ウィンドウ画像Ｗ０（１８０１）〜Ｗ２（１８０３）が弱判別器Ｓｉの判別処理で処理済みとならない場合、ウィンドウ画像Ｗ０（１８０１）〜Ｗ２（１８０３）は、次の弱判別器Ｓｉ+1で処理される。次の弱判別器Ｓｉ+1で処理される処理の対象となるのは、順番が循環してウィンドウ画像Ｗ２（１８０３）の次の順番にあたるウィンドウ画像Ｗ０（１８０１）から順番に、ウィンドウ画像Ｗ０（１８０１）、Ｗ１（１８０２）、Ｗ２（１８０３）が処理される。図１８（ｂ）は、ウィンドウ画像Ｗ１（１８０２）が処理済となった状態を例示しており、処理済となったウィンドウ画像Ｗ１（１８０２）は、次の判別処理の対象から除外される。指示部１０１は、複数のウィンドウ画像（部分画像）のうち判別処理の打ち切り（終了）と判定されたウィンドウ画像（部分画像）が少なくとも１つ含まれている場合、ウィンドウ画像（例えば、Ｗ１）を除いた新たな実行順（Ｗ０→Ｗ２）を設定する。この場合、ウィンドウ画像Ｗ０（１８０１）の次に処理の対象となるのは、ウィンドウ画像Ｗ２（１８０３）である。図１８（ｃ）は、処理済でないウィンドウ画像が1つになった状態を例示している。例えば、判別処理を行う弱判別器Ｓｉとして、ウィンドウ画像Ｗ０（１８０１）が弱判別器Ｓｉの判別処理により処理済みとならなければ、次の弱判別器Ｓｉ+1での判別処理の対象もウィンドウ画像Ｗ０（１８０１）である。
【００８１】
表１のケースを方式３で処理すると、表４のようになる。表４は方式３による処理について、時刻と、指示部および判定部の処理と、をまとめたものである。表４の表記は表２の表記と同様である。
【００８２】
【表４】
0005974148.tif 000005
【００８３】
時刻t４で判別器Ｓ１による判別ジョブを指示したウィンドウ画像Ｗ１の次に処理の対象となるのはウィンドウ画像Ｗ２である。時刻t４におけるＷ２/Ｓ０の判定結果（ＮＧ）により、ウィンドウ画像Ｗ２に対する判別処理が終了していることは、指示部１０１において、時刻ｔ５の時点で既知になっている。この場合、指示部１０１は、更に、次のウィンドウ画像Ｗ０を探し、ウィンドウ画像Ｗ０が処理済でないのでＷ０/Ｓ２の判別ジョブを再度指示する（ｔ５）。
【００８４】
同様に時刻ｔ８では、時刻ｔ７で弱判別器Ｓ３による判別ジョブを再度指示したウィンドウ画像Ｗ０の次に処理の対象となるのはウィンドウ画像Ｗ１である。時刻ｔ６におけるＷ１/Ｓ１の判定結果（ＮＧ）により、ウィンドウ画像Ｗ１に対する判別処理は終了している。時刻ｔ７、ｔ８では判別処理が終了していないウィンドウ画像に対する判別処理が順次出力される（ＷＯ/Ｓ３、ＷＯ/Ｓ４）。この間、ウィンドウ画像Ｗ１、Ｗ２は判別対象から除外される。時刻ｔ９のタイミングにおいて、判定部１０４はＷＯ/Ｓ３の判定結果（ＮＧ）を確定し、時刻ｔ１０のタイミングにおいて、指示部１０１は、ウィンドウ画像のグループの処理終了を検知する。以上のように、図１２の例の場合、本発明の実施形態にかかる方式３が最も早くウィンドウ画像のグループを処理することができる。
【００８５】
図１３は別の例として、表５のように、ウィンドウ画像Ｗ０〜Ｗ２の全てにおいて、検出対象物（特定パターン）が含まれると判定される場合の例を示している。
【００８６】
【表５】
0005974148.tif 000006
【００８７】
図１３の場合、３つの方法ともウィンドウ画像のグループの処理が終了したことを時刻ｔ１８のタイミングで、指示部１０１が検知しており、この例に関しては３つの方式で処理速度に差はない。
【００８８】
図１４は、更に別の例として、表６のように、ウィンドウ画像Ｗ０〜Ｗ２の全てが最初の弱判別器Ｓ０でＮＧと判定された場合の例を示している。
【００８９】
【表６】
0005974148.tif 000007
【００９０】
表６のケースを方式１で処理すると、表７のようになる。表７は方式1による処理について、時刻と、指示部および判定部の処理と、をまとめたものである。表７の表記は表２の表記と同様である。
【００９１】
【表７】
0005974148.tif 000008
【００９２】
表７に示すように、方式１では、ウィンドウ画像Ｗ０〜Ｗ２のグループの処理終了を指示部１０１が検知するのは、時刻ｔ９のタイミングである。
【００９３】
表１のケースを方式２で処理すると、表８のようになる。表８は方式２による処理について、時刻と、指示部および判定部の処理と、をまとめたものである。表８の表記は表２の表記と同様である。
【００９４】
【表８】
0005974148.tif 000009
【００９５】
表８に示すように、方式２では、ウィンドウ画像Ｗ０〜Ｗ２のグループの処理終了を指示部１０１が検知するのは、時刻ｔ５のタイミングである。
【００９６】
表１のケースを方式３で処理すると、表９のようになる。表９は方式３による処理について、時刻と、指示部および判定部の処理と、をまとめたものである。表９の表記は表２の表記と同様である。
【００９７】
【表９】
0005974148.tif 000010
【００９８】
表９に示すように、方式３では、ウィンドウ画像Ｗ０〜Ｗ２のグループの処理終了を指示部１０１が検知するのは、時刻ｔ５のタイミングである。方式３は、方式２と同じ時刻ｔ５のタイミングで、ウィンドウ画像のグループの処理を終了することができる。また方式３は、方式１に比べて速くウィンドウ画像のグループを処理することができる。
【００９９】
図１５は、更に別の例として、表１０のように、ウィンドウ画像Ｗ０〜Ｗ２のうち、ウィンドウ画像Ｗ０とＷ１が最初の弱判別器Ｓ０でＮＧと判定され、処理終了していないウィンドウが１つだけという場合の例を示している。
【０１００】
【表１０】
0005974148.tif 000011
【０１０１】
表１０のケースを方式１で処理すると、表１１のようになる。表１１は方式1による処理について、時刻と、指示部および判定部の処理と、をまとめたものである。表１１の表記は表２の表記と同様である。
【０１０２】
【表１１】
0005974148.tif 000012
【０１０３】
表１１に示すように、方式１では、ウィンドウ画像Ｗ０〜Ｗ２のグループの処理終了を指示部１０１が検知するのは、時刻ｔ１０のタイミングである。
【０１０４】
表１０のケースを方式２で処理すると、表１２のようになる。表１２は方式２による処理について、時刻と、指示部および判定部の処理と、をまとめたものである。表１２の表記は表２の表記と同様である。
【０１０５】
【表１２】
0005974148.tif 000013
【０１０６】
表１２に示すように、方式２では、ウィンドウ画像Ｗ０〜Ｗ２のグループの処理終了を指示部１０１が検知するのは、時刻ｔ８のタイミングである。
【０１０７】
表１０のケースを方式３で処理すると、表１３のようになる。表１３は方式３による処理について、時刻と、指示部および判定部の処理と、をまとめたものである。表１３の表記は表２の表記と同様である。
【０１０８】
【表１３】
0005974148.tif 000014
【０１０９】
表１３に示すように、方式３では、ウィンドウ画像Ｗ０〜Ｗ２のグループの処理終了を指示部１０１が検知するのは、時刻ｔ７のタイミングである。方式３は、方式１、２に比べて速くウィンドウ画像のグループを処理することができる。
【０１１０】
図１２乃至図１５に示す例において、方式３は、他の方式１、２に比べて同等もしくは高速にウィンドウ画像のグループを処理することができる。
【０１１１】
本実施形態ではメモリ１０２が保持するのは静止画の画像データであるとして説明を行ったが、動画像データであっても良い。複数フレームをメモリ１０２に格納し、それらを参照して処理を行うことも可能である。また、メモリ１０２は単一のメモリにより構成されるものに限定されず、複数のメモリで構成してもよい。例えば、３つのメモリで構成し、それぞれに注目しているフレームと、その前後のフレームを格納するように構成することも可能である。その場合、演算部１０３が複数のメモリのそれぞれに対して判別処理を実行する際に、各メモリのウィンドウ画像と判別処理で参照すべきパラメータとを対応付けるための対応付け情報が、パラメータ供給部１０５に付与されている。パラメータ供給部１０５がパラメータを演算部１０３に供給する際に、対応付け情報もあわせて演算部１０３に供給される。演算部１０３はこの対応付け情報を参照して、各メモリとの対応付けを判断し、ウィンドウ画像の判別処理で参照すべきパラメータを特定する。
【０１１２】
実施形態として、静止画像を空間軸による２次元データ、動画像をさらに時間軸を加えた３次元データの例を説明した。この他、更に多次元のデータ、あるいは、音声などの１次元データ(音声の場合、時間軸を入れ２次元とする場合もある)にも本発明を適用することは可能である。また、本実施形態では、特定オブジェクトを検出するとして説明したが、一般的な多次元データである場合、これは多次元データの特定パターンを検出することに相当する。
【０１１３】
また、本実施形態ではメモリ１０２が保持するものは画像データそのものであったが、例えば、前処理として特徴量（例えばエッジ量、フレーム間差分など）を抽出し、それをメモリ部に保持するようにしてもよい。なお特徴量を１種類に限る必要性はなく、例えば、１つの画像から複数の特徴量を抽出し、それを用いて判定処理を行うことも可能である。この場合、動画像データの場合のように、パラメータ保持部が保持するパラメータにはどの特徴量を参照するのかという情報を付与し、それに基づいて演算部１０３が参照すべきデータを特定するように構成する。更には、本実施形態ではメモリ１０２が通常の画像データを保持するものとして説明したが、積分画像（Integral Image）の形式で保持することも可能である。
【０１１４】
以上説明したように、本実施形態によれば、入力画像データに対し、複数の弱判別器を直列に接続して構成される判別処理を効率良く行うことができる。
【０１１５】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０１１６】
１０１：指示部、１０２：メモリ、１０３：演算部、１０４：判定部、１０５：パラメータ供給部
【図１】
0005974148.tif 000015
【図２】
0005974148.tif 000016
【図３】
0005974148.tif 000017
【図４】
0005974148.tif 000018
【図５】
0005974148.tif 000019
【図６】
0005974148.tif 000020
【図７】
0005974148.tif 000021
【図８】
0005974148.tif 000022
【図９】
0005974148.tif 000023
【図１０】
0005974148.tif 000024
【図１１】
0005974148.tif 000025
【図１２】
0005974148.tif 000026
【図１３】
0005974148.tif 000027
【図１４】
0005974148.tif 000028
【図１５】
0005974148.tif 000029
【図１６】
0005974148.tif 000030
【図１７】
0005974148.tif 000031
【図１８】
0005974148.tif 000032