(57)【特許請求の範囲】
【請求項１】
記憶手段と、
入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出する検出手段と、
を有し、
前記検出手段は、新たに検出した検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納する画像処理装置。
【請求項２】
前記記憶手段は、予め定められた数の格納領域を有し、
前記検出手段は、入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、解像度が最も高い画像から順に前記ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出すると共に、検出結果を前記格納領域に順に格納し、前記記憶手段の格納領域に空きが無くなった場合には、前記検出結果を格納した格納領域の順に前記検出した検出結果を書き込む請求項１記載の画像処理装置。
【請求項３】
前記記憶手段の格納領域に格納された検出結果を統合する統合処理手段を更に有する請求項１又は２記載の画像処理装置。
【請求項４】
記憶手段と、
入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出する検出手段と、
前記検出手段で新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出された検出結果を前記格納領域に格納し、前記記憶手段の格納領域に格納された検出結果を統合する統合処理手段と、
を有する画像処理装置。
【請求項５】
記憶手段と、
入力画像に対して、複数のウィンドウサイズによる検出処理を適用して画像中にある被写体を検出する検出手段と、
を有し、
前記検出手段は、新たに検出した検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像よりウィンドウサイズが小さい画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納する画像処理装置。
【請求項６】
前記記憶手段は、予め定められた数の格納領域を有し、
前記検出手段は、入力画像に対して、順次、ウィンドウサイズを拡大して検出処理を適用して画像中にある被写体を検出すると共に、検出結果を前記格納領域に順に格納し、前記記憶手段の格納領域に空きが無くなった場合には、前記検出結果を格納した格納領域の順に前記検出した検出結果を書き込む請求項５記載の画像処理装置。
【請求項７】
前記記憶手段の格納領域に格納された検出結果を統合する統合処理手段を更に有する請求項５又は６記載の画像処理装置。
【請求項８】
記憶手段を有する画像処理装置が実行する画像処理方法であって、
入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出するステップと、
前記ステップで新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納するステップと、
を含む画像処理方法。
【請求項９】
記憶手段を有する画像処理装置が実行する画像処理方法であって、
入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出するステップと、
前記ステップで新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出された検出結果を前記格納領域に格納するステップと、
前記記憶手段の格納領域に格納された検出結果を統合するステップと、
を含む画像処理方法。
【請求項１０】
記憶手段を有する画像処理装置が実行する画像処理方法であって、
入力画像に対して、複数のウィンドウサイズによる検出処理を適用して画像中にある被写体を検出するステップと、
前記ステップで新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像よりウィンドウサイズが小さい画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納するステップと、
を含む画像処理方法。
【請求項１１】
記憶手段を有するコンピュータに、
入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出するステップと、
前記ステップで新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納するステップと、
を実行させるためのプログラム。
【請求項１２】
記憶手段を有するコンピュータに、
入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出するステップと、
前記ステップで新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出された検出結果を前記格納領域に格納するステップと、
前記記憶手段の格納領域に格納された検出結果を統合するステップと、
を実行させるためのプログラム。
【請求項１３】
記憶手段を有するコンピュータに、
入力画像に対して、複数のウィンドウサイズによる検出処理を適用して画像中にある被写体を検出するステップと、
前記ステップで新たに検出された検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像よりウィンドウサイズが小さい画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納するステップと、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
画像から特定の被写体パターンを自動的に検出する画像処理方法は非常に有用であり、例えば人間の顔の判定に利用することができる。このような方法は、通信会議、マン・マシン・インタフェース、セキュリティ、人間の顔を追跡するためのモニタ・システム、画像圧縮等の多くの分野で使用することができる。このような画像中から顔を検出する技術としては、非特許文献１に各種方式が挙げられている。特に、実行速度と検出率の高さとから、非特許文献２に掲載されるＶｉｏｌａらのＢｏｏｓｔｉｎｇベースの手法は、顔検出研究において広く使用されている。
ＶｉｏｌａらのＢｏｏｓｔｉｎｇベースの手法は、概略同等である小さな判別処理（弱判別器）を直列状に連結し、判別処理の途中で非顔領域であると分かった時点で、後続する判別処理を打ち切ることで高速化を行っている。
【０００３】
弱判別器が参照する画像領域を含むような部分画像であるウィンドウ画像のサイズは、ある想定した大きさの検出対象物に対して決められている。しかしながら、実際の画像中の検出対象物の大きさは連続的に変わり得る（例えば被写体との距離を変えてデジタルカメラで撮像すれば検出対象物の大きさは連続的に変わる）。したがって、実際の判別器はある程度検出対象物の大きさ変動に対してある程度耐性があるように設計される（学習される）のが好ましい。
しかしながら、大きさ変動に対して耐性を持つよう設計するにしても、例えば極端に大きくて検出ウィンドウには検出対象物、例えば顔の一部しか含まれないようなものに対応する判別器を設計するのは非常に困難である。同様に検出対象物が検出ウィンドウに比べて極端に小さいものを同時に対応する判別器を設計するのも非常に困難である。
それに対しては、２つのアプローチが考えられる。１つは、ウィンドウサイズを拡大（それに応じて、弱判別器の参照領域等も拡大）する方法である。またもう１つは、ウィンドウサイズは固定して、入力画像に対して変倍（特に縮小）を施して、複数種作成した変倍（縮小）画像に対して同じサイズのウィンドウを設定して判別器を用いて検出する方法である。
上記手法の何れにせよ、ウィンドウの拡大、若しくは画像の縮小の変倍を連続的に行うのは困難なので、やはり判別器は大きさ変動に対してある程度の耐性を持つことが好ましい。
また、同様に位置の変動や形状の変化に関しても、ある程度許容性を持つことが好ましい。
【０００４】
しかしながら、判別器が大きさや位置の変動に対して許容性を持つということは、実際の１つの検出対象物の周辺に、複数の検出判定が発生する。これは、画像中の水平・垂直方向に位置がずれもあり得るし、先の（ウィンドウサイズの変倍若しくは画像の縮小による）大きさ方向のずれもあり得る。
そのため、これらの複数の検出結果を統合して１つの検出対象物に対する検出結果を１つにまとめる処理が必用となる。以後、この処理を「統合処理」と呼ぶ。
この統合処理は、水平・垂直方向の位置、大きさ方向を軸とした空間に分布する検出結果に対するクラスタリング処理に類する。或いは更に、検出結果の確からしさ（尤度）等の軸を加えた空間における処理とすることも考えられる。
統合処理が必用なことから、前述した判別器による検出結果は中間結果であると考えられるが、好ましくはこの中間結果を一旦格納してからそれに対して統合処理を実行するように構成する。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Ｍ．Ｈ．Ｙａｎｇ，  Ｄ．Ｊ．Ｋｒｉｅｇｍａｎ  ａｎｄ  Ｎ．Ａｈｕｊａ．  "Ｄｅｔｅｃｔｉｎｇ    Ｆａｃｅｓ  ｉｎ  Ｉｍａｇｅｓ：Ａ  Ｓｕｒｖｅｙ，"  ＩＥＥＥ  Ｔｒａｎｓ．  ｏｎ  ＰＡＭＩ，  ｖｏｌ．２４，  ｎｏ．１，  ｐｐ．３４−５８，  Ｊａｎｕａｒｙ，  ２００２．
【非特許文献２】Ｐ．Ｖｉｏｌａ  ａｎｄ  Ｍ．  Ｊｏｎｅｓ．  "Ｒｏｂｕｓｔ  Ｒｅａｌ−ｔｉｍｅ  Ｏｂｊｅｃｔ    Ｄｅｔｅｃｔｉｏｎ，"  ｉｎ  Ｐｒｏｃ．  ｏｆ  ＩＥＥＥ  Ｗｏｒｋｓｈｏｐ  ＳＣＴＶ，  Ｊｕｌｙ，  ２００１．
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、中間結果である判別器による検出結果を一旦格納する必要があるが、そのための記憶領域をどれくらい用意すべきなのかということがまず問題となる。
当たり前だが、検出処理の対象となる画像が実際に何件の検出結果を出すかということは、実際に検出処理を行う前には分からない。
理論的な上限値としては、その画像中に設定可能なウィンドウの数（Ｎ）があるが、実際に画像に対して検出処理を行った場合の検出結果数は、Ｎの１〜２％程度であるような場合が多い。したがって、理論的な上限数まで格納可能なように大きな記憶領域を用意しておくのは効率的でない。
これは、例えばこの判別処理をＰＣ上で動作するソフトウェアで実現する場合、比較的大容量のメモリを用意することも可能であるのであまり問題にならないと思われる。しかし一方、機器組み込み用のソフトウェアや或いはハードウェア上で実現する場合には、予め定めた（大きさ固定の）小サイズの記憶容量で実現することが望ましい。
しかしながら、予め定めた小サイズの記憶容量で処理を行うとすると、画像の内容によっては記憶領域不足が発生する可能性が残る。
その場合、全検出結果のうち、記憶容量から溢れた分については棄却せざるを得ないのだが、その場合どれをどのような処理で棄却すべきか、という課題がある。
【０００７】
本発明はこのような問題点に鑑みなされたもので、被写体の検出処理を大きさ固定の所定のサイズより小さいサイズの記憶容量で実現することを目的とする。
【課題を解決するための手段】
【０００８】
そこで、本発明の画像処理装置は、記憶手段と、入力画像及び前記入力画像から生成された複数の解像度の画像の各画像に対して、ウィンドウサイズを固定した検出処理を適用して画像中にある被写体を検出する検出手段と、を有し、前記検出手段は、新たに検出した検出結果を前記記憶手段の格納領域に格納するに際し、前記格納領域に空きがなかった場合には、前記検出結果を得た画像より解像度が高い画像の検出結果を前記格納領域から破棄し、前記新たに検出した検出結果を前記格納領域に格納する。
【発明の効果】
【０００９】
本発明によれば、被写体の検出処理を大きさ固定の所定のサイズより小さいサイズの記憶容量で実現することができる。
【図面の簡単な説明】
【００１０】
【図１】第一の実施形態の画像処理装置のハードウェア構成の一例を示す図（その１）である。
【図２】Ｂｏｏｓｔｉｎｇアルゴリズムを応用した顔検出処理のアルゴリズムの論理を説明する図である。
【図３】画像に対して検出ウィンドウを適用して検出を行う処理を説明する図である。
【図４】検出対象物である顔の大きさが異なる状態を説明する図である。
【図５】検出処理の処理順を説明する図である。
【図６】検出アルゴリズムが同一の被写体に関し複数の検出結果を返すことを説明する図である。
【図７】複数のマッチしたウィンドウを、画像の変倍率を考慮して対応させた状態を示す図である。
【図８】検出対象物（顔）が様々な大きさで写っている画像を表す図である。
【図９】各被写体に対する検出の中間結果の例を示す図である。
【図１０】図８の画像に対する処理を説明する図である。
【図１１】中間結果記憶部１０３の状態を表す図である。
【図１２】検出結果の一例を示す図である。
【図１３】第一の実施形態の中間結果格納領域を循環状に用いて中間結果を格納する処理を説明する流れ図（その１）である。
【図１４】第一の実施形態の画像処理装置のハードウェア構成の一例を示す図（その２）である。
【図１５】第一の実施形態の中間結果格納領域を循環状に用いて中間結果を格納する処理を説明する流れ図（その２）である。
【図１６】第一の実施形態の画像処理装置のハードウェア構成の一例を示す図（その３）である。
【図１７】第三の実施形態の画像処理装置のハードウェア構成の一例を示す図である。
【図１８】バッファ格納時の処理の流れを示す流れ図である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について図面に基づいて説明する。
【００１２】
＜第一の実施形態＞
図１は、第一の実施形態の画像処理装置のハードウェア構成の一例を示す図（その１）である。
画像記憶部１０１は、処理の対象となる画像データを保持する。画像記憶部１０１は、例えば、メモリで構成される。なお、画像記憶部１０１は、レジスタ、ディスク装置等で構成されても良い。
検出部１０２は、検出処理を行う。検出処理の一例は、後述する図２で説明を行う。また、検出部１０２は、検出結果を中間結果記憶部１０３に出力する。更に検出部１０２は、１画像の処理が終了したことを検出した場合、統合処理部１０４に統合処理の開始を指示する。
中間結果記憶部１０３は、検出部１０２の出力を格納する。中間結果記憶部１０３は、例えば、メモリで構成される。なお、中間結果記憶部１０３は、レジスタ、ディスク装置等で構成されても良い。
統合処理部１０４は、中間結果記憶部１０３に格納された中間結果を用いて統合処理を行い、その統合結果を結果記憶部１０５に出力する。統合処理部１０４は、検出部１０２の指示に応じ動作する。
結果記憶部１０５は、統合処理部１０４の出力を格納する。結果記憶部１０５は、例えば、メモリで構成される。なお、結果記憶部１０５は、レジスタ、ディスク装置等で構成されても良い。
画像変倍部１１０は、画像記憶部１０１にある画像に対して変倍処理（少なくとも縮小処理）を行い、変倍画像を出力する。図１に示されるように、検出部１０２は、変倍画像を読み込めるよう構成されている。また画像変倍部１１０は、画像記憶部１０１へ変倍画像を出力するよう構成されている。
この他にも様々な構成を追加することも可能であるが、本実施形態の主眼でないのでここでは省略する。
【００１３】
まず、検出部１０２における検出処理の処理について説明を行う。本実施形態では、検出対象物が人間の顔である場合の例について説明する。
検出処理に関するアルゴリズムの一例を、図２を用いて説明する。
以下ではＢｏｏｓｔｉｎｇアルゴリズムを応用した顔検出処理を検出処理の一例として説明する。図２は、Ｂｏｏｓｔｉｎｇアルゴリズムを応用した顔検出処理のアルゴリズムの論理を説明する図である。
部分画像２０１は、入力画像データの部分領域である。部分画像２０１は、入力画像データ上に設定される所定のウィンドウ内の画像であり、後述する弱判別器２１０〜２５０が参照する画像領域を含むような部分画像である。部分画像２０１を以下、ウィンドウ画像とも呼ぶ。
弱判別器２１０は、判別処理で、ウィンドウ画像２０１の一部若しくは全部の画素値を参照し、その画素値に対して予め定めておいた演算を行い、ウィンドウ画像２０１が検出対象であるオブジェクト（本例の場合、人間の顔領域）を含むか否かを演算結果により判定する。この予め定めておいたウィンドウ画像の参照位置や範囲、また演算に用いる係数等のパラメータは、実際の検出処理の前に機械学習により決定されている。
２１１〜２５０も弱判別器と呼ばれる演算処理であるが、好ましくは弱判別器２１０とはウィンドウ画像２０１の参照位置や範囲と演算に用いる係数等のパラメータが異なるよう構成する。また、弱判別器２１１〜２５０も好ましくは互いにウィンドウ画像２０１の参照位置や範囲と演算に用いる係数等のパラメータが異なるよう構成する。
言い換えれば、弱判別器２１０〜２５０は、ウィンドウ画像２０１の参照位置や範囲、また演算に用いる係数等のパラメータが異なるだけで、概略同じ処理であると言える。したがって、ウィンドウ画像２０１の参照位置や範囲、また演算に用いる係数等を処理のパラメータとして分離すれば、弱判別器２１０〜２５０は用いるパラメータが異なる、同じ処理であるとみなすことができる。
【００１４】
弱判別器２１０〜弱判別器２５０のＮ個の弱判別器は、それぞれ、内部の演算結果に応じてＰＡＳＳかＮＧの判定を行うので、この弱判別器処理を図２に示すように直列状に接続して判別処理を構成する。そして、０番目の弱判別器２１０から処理を行い、判定結果がＰＡＳＳであれば次の弱判別器２１１の判定処理を行う、というように処理を進める。そして、検出部１０２は、最終弱判別器である弱判別器２５０の判定結果もＰＡＳＳであったら、ウィンドウ画像２０１は検出対象のオブジェクト（顔）を含むと判定する。一方、検出部１０２は、途中でＮＧと判定された場合は以降の処理を打切り、ウィンドウ画像２０１は検出対象のオブジェクト（顔）を含まないと判定する。
このように、弱判別器２１０〜２５０のＮ個の弱判別器を組み合わせることにより、全体として強い判別器を構成する。
【００１５】
次に、全体の処理の流れについて説明する。
図３は、画像に対して検出ウィンドウを適用して検出を行う処理を説明する図である。６０１は、画像データ（以下、単に画像ともいう。）である。６１１は、検出ウィンドウである。この検出ウィンドウは図２におけるウィンドウ画像２０１と同じものである。
検出処理において、検出部１０２は、ウィンドウ６１１を画像６０１中で他のウィンドウと一部重複するように移動させながら、各位置において図２で例示した検出アルゴリズムを適用する。図３のウィンドウ６１２、６１３は、この移動したウィンドウの例であり、特にウィンドウ６１３は検出対象である顔の位置にあるウィンドウの例である。
ところで、図２で示した検出アルゴリズムは高い汎化性能を持つ必要がある。これは、処理実行時に検出対象となる画像、特に検出対象物や被写体を予め見ることはできないので、アルゴリズムにとっては未知の画像パターンに対して処理を行うことになるためである。したがって、検出アルゴリズムは検出ウィンドウに対してある程度大きさ、位置、形状が変動した検出対象物（顔）を検出できるよう設計する。
とはいえ、アルゴリズムが期待する対象物と大きさ、位置、形状が極端に異なるものについても検出可能なように設計するのは非常に困難である。
【００１６】
図４は、検出対象物である顔の大きさが異なる状態を説明する図である。
７１０は、画像である。７０１〜７０３は、異なる大きさで写った画像中の人物の被写体である。被写体７０１は、撮影位置から遠くにいるために小さく写っており、逆に被写体７０３は比較的近くにいて大きく写っている状態を表している。また、７１１〜７１３は、被写体７０１〜７０３のそれぞれの顔領域を概略囲む矩形であり、その大きさが異なっていることがわかる。
したがって、このように写り方等によって検出対象物の大きさがまちまちなものをそれぞれ検出する方法として、図５で説明するような方式を利用する。
【００１７】
図５は、検出処理の処理順を説明する図である。
画像７１０は、図４と同じ画像で、システムに入力された検出対象の画像である。検出部１０２は、これに対して検出処理８２０（図２で説明したアルゴリズム）を行う。そして、画像変倍部１１０は、この画像７１０に対して縮小処理を行って縮小画像８０１や８０２を出力する。検出部１０２は、これらを得て、これらの縮小画像に対しても同様に検出処理８２０を適用して検出を行う。
８１０〜８１２は、各画像における検出ウィンドウであり、これらは同じ大きさである。しかしながら、処理対象の画像解像度が異なるので、検出ウィンドウ８１０は、比較的小さく写った検出対象物（顔）とマッチする。逆に検出ウィンドウ８１２は、比較的大きく写った検出対象物（顔）とマッチする。また、検出ウィンドウ８１１は、その中間の大きさに写った検出対象物（顔）とマッチする。
言いかえれば、高解像度の画像７１０では小さく写った検出対象物（顔）が検出され、低解像度の画像８０２では大きく写った検出対象物（顔）が検出され、中間の解像度の画像８０１ではその中間の大きさに写った検出対象物（顔）が検出される。
なお、画像の縮小方法は公知の任意のもので良い。また、縮小の変倍率は予め定めておけば良い。なお、本実施形態では、画像変倍部１１０は、画像７１０から縮小画像８０１を生成し、縮小画像８０１から縮小画像８０２を生成するものとする。
このような方法を用いた場合でも、現実には画像の縮小はある程度離散的（例えば、縦横各１／２とか、或いは１／√２とか）にならざるを得ない。しかしながら先に述べたように検出アルゴリズムは高い汎化性能を持つので、各画像上の検出対象物（顔）が、検出アルゴリズムが元々期待している大きさと多少あわなくても検出することができる。
【００１８】
この一方で図６に示すようなことが発生する。図６は、検出アルゴリズムが同一の被写体に関し複数の検出結果を返すことを説明する図である。
７１０、８０１、８０２、８１１は、図５の同番号と同一のものである。図５の例では、縮小画像８０１で検出ウィンドウ８１１と被写体の顔とがマッチすると説明した。しかし実際にはアルゴリズムは汎化性能を持つため、解像度が異なる別の画像で検出（ウィンドウ９１１、９１３）したり、或いは、同じ解像度の画像において、多少ずれた位置で検出（ウィンドウ９１２）したりすることが発生し得る。
図７は、これら複数のマッチしたウィンドウを、画像の変倍率を考慮して対応させた状態を示す図である。ウィンドウ（領域）８１１、９１１〜９１３は、図６の同番号のウィンドウに対応する。
しかしながら実際の被写体は１つなので、領域８１１、９１１〜９１３を１つの領域にまとめる必用がある。この処理が統合処理部１０４における統合処理である。
【００１９】
統合処理は、図７の領域８１１、９１１〜９１３を１つの領域にまとめる処理である。統合処理部１０４は、例えば各領域８１１、９１１〜９１３の中心（重心）を算出し、それが閾値以下であれば同一被写体に対する領域であるとして合成する。閾値は予め定めておけば良い。また、統合処理部１０４は、例えば矩形の４頂点についてそれぞれ領域間で平均する等で合成する。
ここで述べた統合処理方式の例はあくまでも一例であって、図７の領域８１１、９１１〜９１３から１つの領域を生成するものであれば任意の方式で良い。
この統合処理のためには、検出部１０２は、１枚の画像に対する検出処理による検出結果（統合後の結果と区別するため、以下中間結果と呼ぶ）を一旦保存する。そして、統合処理部１０４は、その後に各検出結果間の関係（前述の例でいうと、各中間結果同士の中心間の距離）をしらべて判断する必要がある。そのため、中間結果を一旦保持しておかなければならない。
したがって、中間結果を格納する領域が必要になるのだが、この領域をどれくらい確保しておくか、ということが問題となる。
【００２０】
まず、検出を行った画像で何件の中間結果が検出されるかということは、実際に検出を行う前には分からない。
次に理論的な上限値を考えると、例えば、入力画像（図５の７１０）がＶＧＡ（６４０×４８０画素）程度であったと考える。ウィンドウは２０ｘ２０画素、それぞれ１画素ずらしで設定可能とし、縦横１／√２（画素数が１／２）で変倍するとするならば、概算すると
【数１】
0005743742.tif 000002
（無限級数の和より）
となる。実際には無限に縮小するわけではないのでこれより少なくなるが、およそ５０万以上のウィンドウ処理を行うことになる。
また仮に、入力画像がＱＶＧＡ（３２０×２４０画素）であった場合、同様に計算するとウィンドウ数は約１３万である。更に、処理を間引いて縦横１画素おきにウィンドウを設定するとしても、この１／４なので約３万、或いはもっと間引いて縦横３画素おきにウィンドウを設定するとしても、１／１６なので１万弱のウィンドウが設定可能である。
したがって理論上限の分のメモリを用意して処理を行うとした場合、例えば中間結果１件に必要な情報として１０ｂｙｔｅ必用であったと仮定すると、約１００００件の中間結果を格納するためには１０万ｂｙｔｅ≒１００ＫＢのメモリが必用となる。
【００２１】
ところが実際にこの検出処理を行った場合、画像（入力画像とその縮小画像全体）に対して約１００００点のウィンドウを設定して処理を行ったところ、多くの画像では中間結果の数は多くてもせいぜい１００〜２００程度であった。つまり、多くの画像では理論上限に対して１〜２パーセント程度しか使わないということになる。
１００ＫＢのメモリは、この検出処理を例えば公知のパーソナルコンピュータ等で実現する場合にはあまり問題にならないかもしれない。しかし例えば機器組み込みソフトウェアや回路内蔵のソフトウェアで実現する場合、１００ＫＢのメモリは組み込み機器内部のメモリ（Ｓ−ＲＡＭ）としては大容量であり、機器の価格にも影響する。その上、通常では１〜２パーセント程度しか使わないとなると理論上限分のメモリを用意するというのは大変冗長であることがわかる。
したがって、適切なサイズ（例えば実験では２００件分程度）のメモリによってこの処理を実現するのが好ましい。しかしながら、この場合画像の内容によってはメモリ不足が発生する可能性が残ることになる。
このメモリ不足の場合について説明する。
図８は、検出対象物（顔）が様々な大きさで写っている画像を表す図である。図８には、被写体４０１（小さく写った被写体）〜被写体４０５（大きく写った被写体）が写っている。これに対して、図９は、各被写体に対する検出の中間結果の例を５０１〜５０５で示す図である。実際には、先に説明した通り５０１〜５０５の中間結果に対し、位置や大きさについて異なる中間結果も検出される可能性があるが、図９では説明の単純のために省いている。
【００２２】
図１０は、図８の画像に対する処理を説明する図である。なお、図１０では、図８、図９及び図５と同じものについては、同じ番号を付与しているのでここでは説明を省略する。
検出部１０２は、まず入力画像１１０１に対して検出処理８２０を行い、例えば中間結果として５０１及び５０２を出力する。次に、検出部１０２は、縮小画像１１０２に対して検出処理８２０を行い中間結果として５０３を出力し、更に縮小画像１１０３に対して検出処理８２０を行い、中間結果５０４、５０５を出力する。
図１１は、中間結果記憶部１０３の状態を表す図である。
なお、説明の単純化のため本実施形態では、中間結果記憶部１０３は、３件分の中間結果格納領域１２０１〜１２０３を持つものとする。またここでは、それに対し図１０で説明したように、中間結果５０１〜５０５の５件の結果が出力される場合について説明する。
まず、入力画像１１０１に対して中間結果５０１及び５０２が出力されるので、それぞれ中間結果格納領域１２０１、１２０２に格納される（図１１（ａ））。続いて、縮小画像１１０２に対する検出結果５０３が出力されるので中間結果格納領域１２０３に格納され、中間結果記憶部１０３はバッファフルの状態になる（図１１（ｂ））。
このバッファフルの状態で、以後の中間結果５０４及び５０５が出力された場合、最も単純には、中間結果５０４及び５０５を中間結果記憶部１０３に保存しないで破棄することが考えられる。この場合の検出結果の例を図１２（ａ）に示す。
図１２（ａ）の結果を見ると、比較的大きく写っている中央の２人に対して検出に失敗しているように見える。経験的には、大きく写っている被写体の方がそうでない被写体よりも重要と考えられる。また見方をかえると、中央の２人に対する検出対象物（顔）の解像度は高く、検出は比較的容易に思われる。しかしながら、図１２（ａ）の結果では比較的大きく写っている検出対象物（顔）の検出に失敗しているように思われる。したがって、（経験的に）重要で検出が容易と思われる被写体に対して検出に失敗しているように見えてしまう。
【００２３】
そこで、本実施形態による処理方式では、以下のように処理を行う。
本実施形態による処理方式では、中間結果記憶部１０３の中間結果格納領域１２０１〜１２０３を循環状に用いて（既にデータが入っているかどうかにかかわらず）結果を書き込む。
図１１（ｃ）は、検出部１０２が、中間結果格納領域１２０３の次の格納領域として中間結果格納領域１２０１を用い、そこに中間結果５０４を保存し、更に同様に中間結果格納領域１２０２に検出結果５０５を保存した状態を表している。例えば、更にこの後検出結果があった場合には、検出部１０２は、続いて中間結果格納領域１２０３、１２０１の順に循環状（循環的）に格納する。
図１３は、第一の実施形態の中間結果格納領域１２０１〜１２０３を循環状に用いて中間結果を格納する処理を説明する流れ図（その１）である。
なお、図１３の流れ図にある変数ｉは、起動時や検出対象の入力画像が切り替わったときに、この流れ図の外の処理で０に初期化される。
まず、ステップＳ１３０１で、検出部１０２は、出力された検出結果（中間結果）を、ｉ番目のバッファに格納する。図１１の例でいえば、中間結果格納領域１２０１は０番目、中間結果格納領域１２０２は１番目、中間結果格納領域１２０３は２番目のバッファである。データの格納は、検出結果の矩形の座標や尤度を表す情報を含む。このとき、矩形の座標は該当する検出結果の矩形を入力画像１１０１の座標系に変換したものであっても良い。好ましくは検出した画像の座標系における座標とどの画像で検出したかとを表す情報（図１１の１２０１〜１２０３にある「画像」がこれを識別する情報）であるように構成する。後者の場合、統合処理部１０４が統合処理を行う際に入力画像１１０１の座標系に変換する。
【００２４】
続くステップＳ１３０２では、検出部１０２は、ｉを１増やす。
そして、Ｓ１３０３では、検出部１０２は、ｉとバッファサイズＮとを比較し、ｉがＮ以上である場合、処理をＳ１３０４へ進め、そうでない場合、処理を終了する。ステップＳ１３０４では、検出部１０２は、ｉの値を０にリセットしている。これはつまり、ｉ≧Ｎが成立するのは最終バッファに到達したときなので、この場合、ステップＳ１３０４でｉを０にセットすることで、中間結果記憶部１０３の中間結果格納領域１２０１〜１２０３を循環状に使用するようにしている。
本実施形態による方式で、図１１（ｃ）の状態になった場合の検出結果の例が図１２（ｂ）である。図１２（ｂ）では、右上の小さく写った人物２人に対する検出結果が失われている代わりに、比較的重要と思われる中央の２人物の検出結果が表示されている。したがって、図１２（ａ）の結果に比べ、図１２（ｂ）の結果の方が好ましいということが分かる。
以上説明したように、検出処理において、解像度の高い画像から順に処理することで、より小さな検出結果を先に検出するようにする。そして、中間結果を格納するバッファ領域を循環状に用いることにより、予め用意したバッファ領域を超える数の中間結果が出力された場合においても、大きな検出結果が優先され、良好な結果を得ることができる。
【００２５】
なお、図１においては画像記憶部１０１、中間結果記憶部１０３、結果記憶部１０５を別々に書いてあるが、これは格納するデータが異なるため分けてある。したがって、これらのうちの幾つかが同一の記憶部（例えば、メモリ、レジスタ、ディスク装置等）で構成されていても良い。特に、中間結果記憶部１０３と結果記憶部１０５とを同一の記憶部で構成するような変形例は、メモリを省くのに有効な場合がある。
更に、図１の構成には様々な変形例も考えられる。図１４は、第一の実施形態の画像処理装置のハードウェア構成の一例を示す図（その２）である。図１４では、検出部１０２の指示及び検出結果（中間結果）は一旦全て統合処理部１０４に渡し、統合処理部１０４が中間結果記憶部１０３に検出結果を格納するように構成されている。このような変形例も本実施形態の意図するところである。この場合、図１３で説明した処理は、統合処理部１０４が実行するにすれば良い。
また、図１の構成例と同様に図１３の構成において、中間結果記憶部１０３と結果記憶部１０５とを同一の記憶部としても良い。
また、或いは、検出部１０２と統合処理部１０４とがパイプライン状に動作するために、中間結果記憶部１０３を多重化するようにしても良い。このような構成とした場合、統合処理部１０４が１枚目の画像の検出結果（中間結果）に対して統合処理を行うのと並行して、検出部１０２が２枚目の画像に対する検出処理を実行することができる。
なお、図１３の流れ図による処理のかわりに、図１５の流れ図による処理を用いるのであっても良い。図１５は、第一の実施形態の中間結果格納領域１２０１〜１２０３を循環状に用いて中間結果を格納する処理を説明する流れ図（その２）である。図１５のＳ１３０１は図１３と同じ処理であるが、Ｓ１３０２以降の処理のかわりに、検出部１０２が、Ｓ１４０１の演算を行っている。なお、Ｓ１４０１の"ｍｏｄ"は剰余算を表す。更には、特にＮの値が２以上の２のべき乗である場合には、Ｓ１４０１の演算のかわりに検出部１０２は、
ｉ    ＝  （ｉ  ＋  １）  ＆  （Ｎ  ?  １）    （"＆"はビット積）
を用いて演算を行っても良い。"ｍｏｄ"を使う演算による方式は、例えば条件分岐によるパフォーマンス低下が剰余算の計算コストを超える場合には有効である。また、ビット積を用いる方式は"ｍｏｄ"演算よりも計算コストの低いビット積で実現できるので、特定条件（Ｎが２以上の２のべき乗）を満たす場合には有効である。
【００２６】
以上説明したように、本実施形態の画像処理装置は、画像を縮小しながら固定サイズのウィンドウ処理を用いて対象物を検出する検出処理において、中間結果を格納するバッファを循環状に用いる。このことにより中間結果の出力数がバッファの数を超えるような場合であっても良好な結果を得ることができる。
なお、本実施形態では図１に示したように各部をハードウェアとして実装した例を説明したが、図１６に示すように、ＣＰＵ１がメモリ２に記憶されたプログラムを実行することによって各部として機能させるソフトウェアで実現するようにしても良い。この場合、プログラムを格納する媒体（例えば、メモリ等）も本実施形態の意図するところの一実施形態である。なお、図１６の構成の場合、中間結果記憶部１０３や結果記憶部１０５、画像記憶部１０１はメモリ２に構成されるが、このことは本実施形態を制限するものではない。上述したように、各記憶部をそれぞれ異なる記憶媒体（例えば、メモリ、レジスタ、ディスク装置等）で構成しても良い。
【００２７】
＜第二の実施形態＞
本実施形態では第一の実施形態と異なる部分についてのみ説明を行う。
第一の実施形態の図１においては画像変倍部１１０を含む例を例示したが、これはあくまでも好適な一例である。本実施形態による画像処理装置では、高解像度→低解像度の順に検出部１０２に処理を行わせれば良く、例えば予め様々な解像度の変倍画像が画像記憶部１０１に用意できる場合は、画像変倍部１１０は必須ではない。
一例をあげると、公知のＪＰＥＧ２０００標準符号化方式等により符号化された画像データは、様々な解像度で復号することが可能である。したがって、高解像度画像から徐々に低解像度画像になるように順番に復号処理部（又は復号処理装置）で符号化された画像を画像記憶部１０１に格納しておき、検出部１０２が処理するような構成を取るのであっても良い。
【００２８】
＜第三の実施形態＞
本実施形態では第一の実施形態と異なる部分についてのみ説明を行う。
図１７は、第三の実施形態の画像処理装置のハードウェア構成の一例を示す図である。図１７については、図１と対比しながら説明する。なお、図１７において、図１と同一のものについては同番号を付与し説明を省略する。
図１７における画像記憶部１６０１〜１６０３は、図１における画像記憶部１０１と同じ構成のものである。但し画像記憶部１６０１〜１６０３は互いに異なる画像を保持している。これは例えば、図５の７１０、８０１、８０２を、それぞれ画像記憶部１６０１、１６０２、１６０３が保持する構成である。
なお、画像記憶部１６０１〜１６０３を異なるブロックで表現しているのは、概念として分離できるからであって、実体としては同一の記憶媒体（公知のメモリ、レジスタ、ディスク装置等）であっても良い。
また、検出部１６１１〜１６１３は、図１における検出部１０２と同一のものである。検出部１６１１〜１６１３は、それぞれ画像記憶部１６０１〜１６０３から画像を入力する点のみが異なる。
記録管理部１６２１は、検出部１６１１〜１６１３が出力する検出結果（中間結果）を中間結果記憶部１０３に記録する。
【００２９】
このときの記録管理部１６２１の処理の流れを、図１８を用いて説明する。図１８の流れ図は、この記録管理部１６２１が検出部１６１１〜１６１３の何れかから検出結果（中間結果）を受信した場合の処理である。
なお、図１８における変数Ｍは中間結果の受信数を表し、第一の実施形態図１３のｉと同様に起動時や検出対象の入力画像が切り替わったときに、この流れ図の外の処理で０に初期化される。
まず、ステップＳ１７０１で、記録管理部１６２１は、ＭとＮの比較を行う。Ｎは、図１３の流れ図におけるＮと同様、中間結果記憶部１０３の中のバッファ数を表す。
ステップＳ１７０１の判定が真になる場合はバッファフルが発生していない状態であり、記録管理部１６２１は、処理をステップＳ１７０２に進める。偽である場合は、記録管理部１６２１は、処理をステップＳ１７０３に進める。
ステップＳ１７０２では、記録管理部１６２１は、バッファのＭ番目に、今受信した中間結果を格納する。そして、ステップＳ１７１０で、記録管理部１６２１は、Ｍの値を１増やして処理を終了する。
一方、ステップＳ１７０１での判定が偽となった場合、記録管理部１６２１は、処理をＳ１７０３に進める。
ステップＳ１７０３は以下で使用する変数の初期化ステップで、記録管理部１６２１は、ｊを０に、ｋを１に初期化する。
【００３０】
ステップＳ１７０４は、後続するステップＳ１７０５〜Ｓ１７０７を含むループの終了判定である。ｋがＮ以上になった場合は、記録管理部１６２１は、このループを終了し、処理をＳ１７０８に進める。そうでない場合は、記録管理部１６２１は、処理をステップＳ１７０５のループ側へ進める。
ステップＳ１７０５では、記録管理部１６２１は、バッファｋ番目の結果の画像解像度とバッファｊ番目の結果の画像解像度とを比較する。結果の画像解像度は、例えば本実施形態の場合、検出部１６１１〜１６０３のどれから受信した中間結果であるかということで判定することができる。また、第一の実施形態の図１１で例示したように１２０１〜１２０３に格納されている。記録管理部１６２１は、１２０１〜１２０３に格納される情報に「画像」があればそれで識別可能であるし、或いは入力画像１１０１の座標系に変換された後の座標系であれば矩形の大きさを見れば判別できる。矩形が大きいほど解像度の低い画像での検出結果（中間結果）である。
ステップＳ１７０５の判定が真であった場合、記録管理部１６２１は、処理をステップＳ１７０６に進める。ステップＳ１７０６では、記録管理部１６２１は、ｊにｋを代入する。一方、偽であった場合、記録管理部１６２１は、ステップＳ１７０６の処理を飛ばして処理をステップＳ１７０７に進める。
ステップＳ１７０７では、記録管理部１６２１は、ｋの値を１つ増やし、ステップＳ１７０４に処理を戻す。
ステップＳ１７０４〜Ｓ１７０７のループ処理は、受信済の中間結果で最も高解像度の画像に対する検出結果を探し、そのバッファ上での位置を表す数値をｊに設定する処理である。
【００３１】
ステップＳ１７０４の判定が偽となり、Ｓ１７０４〜Ｓ１７０７のループが終了した場合、記録管理部１６２１は、処理をＳ１７０８に進める。
ステップＳ１７０８では、記録管理部１６２１は、先のループで探した（最も高い）画像解像度と今受信した中間結果の画像解像度とを比較する。バッファにある（最も高い）画像解像度よりも受信した中間結果の画像解像度が低い場合には、記録管理部１６２１は、処理をステップＳ１７０９に進める。Ｓ１７０９では、記録管理部１６２１は、検出した格納済の中間結果を受信した検出結果で上書きして処理をＳ１７１０に進める。そうでない場合は、記録管理部１６２１は、処理をＳ１７１０に進める。後者の場合、受信した中間結果を破棄することになる。
したがって、記録管理部１６２１は、中間結果記憶部１０３がバッファフルでない場合は空いている領域に受信した中間結果を記録する。逆にバッファフル状態であった場合、記録管理部１６２１は、格納済の検出結果から最も高い解像度の画像に対する中間結果を探す。そして、記録管理部１６２１は、探した中間結果と受信した中間結果との検出画像の解像度を比較し、より低解像度の画像の結果を残す。
図１８の流れ図はこのための処理の一例であって、同様の挙動をする処理による変形は本実施形態の意図するところである。
【００３２】
なお、本実施形態では画像記憶部１６０１、１６０２、１６０３がそれぞれ図５の７１０、８０１、８０２を保持し、それを検出部１６１１、１６１２、１６１３が７１０、８０１、８０２に対する検出処理を行うとして説明した。しかし、実際には画像の解像度の違いから検出部１６１１〜１６１３の処理負荷が不均一になる可能性も高い。その場合、例えば、画像７１０、８０１、８０２を適当に分割して画像記憶部１６０１、１６０２、１６０３に配置し、それぞれについて検出部１６１１、１６２、１６１３が検出を行うように構成しても良い。
また、検出部１６１１〜１６１３が出力する中間結果の検出対象となった画像の識別情報（或いは解像度に関する情報）を記録管理部１６２１に与えるように構成しても良い。
好ましくは、画像の分割及び配置を制御する制御部（図１７において不図示）を設け、その制御部から画像の識別情報を記録管理部１６２１に送信するように構成しても良い。
また、第一の実施形態に対して、例えば図１４で示すような変形も可能であると説明したが、本実施形態でも同様の変形が可能である。この場合、複数の検出部の出力を一旦、統合処理部１０４が受信し、記録管理部１６２１は統合処理部１０４の出力を受けて中間結果記憶部に出力を行うよう構成するよう構成しても良い。或いは、記録管理部１６２１の機能を統合処理部１０４が実行するように構成しても良い。
以上、本実施形態においては、検出部が出力する中間結果の順序関係が第一の実施形態と異なるような場合の例を説明した。
本実施形態による方式は、第一の実施形態に比べ検出部を複数設ける等して処理の並列化、或いは分散化がし易いという利得がある。
【００３３】
＜第四の実施形態＞
本実施形態では、第一、第四の実施形態と異なる部分のみ説明を行う。
第一、第三の実施形態では入力画像の変倍を行う例について説明を行ったが、本実施形態ではウィンドウサイズを変倍する場合の検出処理（つまり、ウィンドウサイズを変化させた検出処理）における方式について説明を行う。
本実施形態の画像処理装置は、検出処理においてはウィンドウ画像の一部若しくは全部を参照し、それに対して予め定められた係数を用いて判定処理を行う。そこで、このウィンドウサイズ、ウィンドウ内の参照位置、範囲を順次、２倍、３倍・・とすれば、入力画像を１／２、１／３・・・としていった場合と同様の効果を得ることができる。
この場合、本実施形態の画像処理装置は、第一、第三の実施形態で用いた検出対象の画像解像度情報（若しくはその識別情報）の代わりに、このウィンドウの倍率またはサイズなどを用いれば良い。
第一、第三の実施形態では、画像処理装置は、検出対象画像の解像度が高い物を破棄し、より解像度が低い物を残すように構成していたが、これは図４や或いは図５で説明したように、より大きな検出対象のものを残すように構成したものである。したがって、本実施形態の画像処理装置は、ウィンドウ拡大率が小さいものを破棄し、より拡大率が大きい物を残すようにする。
また、そのため、本実施形態の画像処理装置は、図１１（ａ）〜（ｃ）で例示した中間結果の格納には、「画像」の情報のかわりにこの倍率（若しくはそれを識別可能な情報）を記録する。
本実施形態の画像処理装置は、予め定められた最小ウィンドウサイズで入力画像の全領域に対して検出処理を行った後にウィンドウサイズを拡大して改めて入力画像の全領域に対して検出を行う。そして、更に、本実施形態の画像処理装置は、ウィンドウサイズを拡大して検出処理を行うことを繰り返す。このように本実施形態の画像処理装置を構成した場合、第一の実施形態の図１３若しくは第二の実施形態の図１５で説明したような処理で実現することもできる。
以上説明したように、本実施形態によっても、中間結果の出力数がバッファの数を超えるような場合であっても良好な結果を得ることができる。
【００３４】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００３５】
以上、上述した各実施形態によれば、被写体の検出処理を大きさ固定の所定のサイズより小さいサイズの記憶容量で実現することができる。
【００３６】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００３７】
１０３  中間結果記憶部
１０４  統合処理部
【図１】
0005743742.tif 000003
【図２】
0005743742.tif 000004
【図３】
0005743742.tif 000005
【図４】
0005743742.tif 000006
【図５】
0005743742.tif 000007
【図６】
0005743742.tif 000008
【図７】
0005743742.tif 000009
【図８】
0005743742.tif 000010
【図９】
0005743742.tif 000011
【図１０】
0005743742.tif 000012
【図１１】
0005743742.tif 000013
【図１２】
0005743742.tif 000014
【図１３】
0005743742.tif 000015
【図１４】
0005743742.tif 000016
【図１５】
0005743742.tif 000017
【図１６】
0005743742.tif 000018
【図１７】
0005743742.tif 000019
【図１８】
0005743742.tif 000020