(57)【特許請求の範囲】
【請求項１】
少なくとも２次元の位置座標を要素として含むベクトルであるベクトルデータを複数記憶する記憶手段と、
前記ベクトルデータを、ベクトルデータ同士のベクトル間の距離に基づいて統合し、複数の一次統合ベクトルデータとする一次統合手段と、
前記一次統合手段により統合された一次統合ベクトルデータを、一次統合ベクトルデータが密集する方へ移動させる移動手段と、
移動させた前記一次統合ベクトルデータを、一次統合ベクトルデータ同士のベクトル間の距離に基づいて更に統合し、二次統合ベクトルデータとする二次統合手段と、
を備えることを特徴とするデータ統合装置。
【請求項２】
前記一次統合手段は、統合対象であるベクトルデータに対して、第１の所定距離内に存在するベクトルデータが第１の所定数以上の場合、前記統合対象のベクトルデータと前記第１の所定距離内に存在するベクトルデータを１つの一次統合ベクトルデータとして統合し、
前記第１の所定距離内に存在するベクトルデータが前記第１の所定数未満の場合、統合対象であるベクトルデータをそのまま一次統合ベクトルデータとする
ことを特徴とする請求項１に記載のデータ統合装置。
【請求項３】
前記二次統合手段は、統合対象である一次統合ベクトルデータに対して、第２の所定距離内に他の一次統合ベクトルデータが存在する場合、前記統合対象の一次統合ベクトルデータと前記第２の所定距離内に存在する他の一次統合ベクトルデータを統合して二次統合ベクトルデータとし、
前記第２の所定距離内に他の一次統合ベクトルデータが存在しない場合、統合対象である一次統合ベクトルデータをそのまま二次統合ベクトルデータとする
ことを特徴とする請求項１または請求項２に記載のデータ統合装置。
【請求項４】
前記二次統合手段は、前記二次統合ベクトルデータのうち、統合されたデータ数を第２の所定数以上含む二次統合ベクトルデータを、統合結果とする
ことを特徴とする請求項３に記載のデータ統合装置。
【請求項５】
前記移動手段は、移動対象である一次統合ベクトルデータを、当該一次統合ベクトルデータから所定距離内に存在する他の一次統合ベクトルデータが密集する方へ移動させる
ことを特徴とする請求項１から請求項４のいずれかに記載のデータ統合装置。
【請求項６】
前記ベクトルデータは、画像に対して所定の検出対象を検出する検出処理を施して得られる検出データであり、少なくとも検出された検出対象の画像における２次元の位置座標を含む
ことを特徴とする請求項１から請求項５のいずれかに記載のデータ統合装置。
【請求項７】
前記検出処理は、前記画像に対して、検出対象を探索するための探索窓を走査させながら検出対象を検出する
ことを特徴とする請求項６に記載のデータ統合装置。
【請求項８】
前記検出処理は、前記画像に対して、検出対象を探索するための探索窓を異なるサイズで走査させながら検出対象を検出する
ことを特徴とする請求項６または請求項７に記載のデータ統合装置。
【請求項９】
前記ベクトルデータは、更に、前記検出処理により検出対象が検出された際の前記探索窓のサイズをベクトルの要素として含む
ことを特徴とする請求項８に記載のデータ統合装置。
【請求項１０】
少なくとも２次元の位置座標を要素として含むベクトルであるベクトルデータを複数記憶する記憶手段を備えるコンピュータによるデータ統合方法であって、
前記ベクトルデータを、ベクトルデータ同士のベクトル間の距離に基づいて統合し、複数の一次統合ベクトルデータとする一次統合ステップと、
統合された一次統合ベクトルデータを、一次統合ベクトルデータが密集する方へ移動させる移動ステップと、
移動させた前記一次統合ベクトルデータを、一次統合ベクトルデータ同士のベクトル間の距離に基づいて更に統合し、二次統合ベクトルデータとする二次統合ステップと、
を含むことを特徴とするデータ統合方法。
【請求項１１】
コンピュータを請求項１に記載のデータ統合装置として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを統合する技術に関し、特に、演算量が膨大にならないように効率的にデータを統合することが可能な、データ統合技術に関する。
【背景技術】
【０００２】
例えば、画像に対して探索窓を走査させながら検出対象（顔画像など）を検出すると、通常、多数の検出候補（検出データ）が得られる（特許文献１など）。このため、データ統合処理によって多数の検出データを統合して最終的な結果を得る必要がある。例えば、従来、ミーンシフト（移動処理）、ニアレストネイバー（統合処理）の二段処理によってこのデータ統合処理が実現されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１１０４８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のデータ統合処理は、大量の検出データが検出されると演算量が膨大となる。特に、検出精度の向上を目的に画像に対して探索窓の走査を密に行うと、検出データが大量に検出されるため、現実的な時間でデータ統合処理を完了させることが困難となる。このような背景から、多数の検出データが得られた場合であっても、演算量が膨大にならないようなデータ統合処理の実現が望まれている。
【０００５】
本発明は、前述した問題点に鑑みてなされたものであり、その目的とすることは、演算量が膨大にならないように効率的にデータを統合することが可能な、データ統合装置等を提供することである。
【課題を解決するための手段】
【０００６】
前述した目的を達成するために第１の発明は、少なくとも２次元の位置座標を要素として含むベクトルであるベクトルデータを複数記憶する記憶手段と、前記ベクトルデータを、ベクトルデータ同士のベクトル間の距離に基づいて統合し、複数の一次統合ベクトルデータとする一次統合手段と、前記一次統合手段により統合された一次統合ベクトルデータを、一次統合ベクトルデータが密集する方へ移動させる移動手段と、移動させた前記一次統合ベクトルデータを、一次統合ベクトルデータ同士のベクトル間の距離に基づいて更に統合し、二次統合ベクトルデータとする二次統合手段と、を備えることを特徴とするデータ統合装置である。
【０００７】
第１の発明によれば、一次統合手段によって複数のベクトルデータをベクトルデータ同士のベクトル間の距離に基づいて一次統合ベクトルデータとして統合し、移動手段によって統合した一次統合ベクトルデータを一次統合ベクトルデータが密集する方へ移動させ、二次統合手段によって移動させた一次統合ベクトルデータを一次統合ベクトルデータ同士のベクトル間の距離に基づいて二次統合データとして統合する。従来のデータ統合処理では、ベクトルデータをベクトルデータ同士が密集する方へ移動させて（移動処理）、移動させたベクトルデータをベクトルデータ同士のベクトル間の距離に基づいて統合していた（統合処理）。このため、大量のデータが存在すると、演算量が膨大になる問題があった。この点、第１の発明によれば、一次統合手段によって、ベクトルデータをベクトルデータ同士のベクトル間の距離に基づいて統合（一次統合）して情報量を落としたうえで、その後の移動処理および統合処理（二次統合処理）を実行するため、高速なデータ統合を実現することが可能となる。すなわち、第１の発明によれば、演算量が膨大にならないように効率的にデータを統合することが可能なデータ統合装置が提供される。
【０００８】
また第１の発明において、前記一次統合手段は、統合対象であるベクトルデータに対して、第１の所定距離内に存在するベクトルデータが第１の所定数以上の場合、前記統合対象のベクトルデータと前記第１の所定距離内に存在するベクトルデータを１つの一次統合ベクトルデータとして統合し、前記第１の所定距離内に存在するベクトルデータが前記第１の所定数未満の場合、統合対象であるベクトルデータをそのまま一次統合ベクトルデータとすることが望ましい。これにより、一次統合処理が好適に実行される。
【０００９】
また第１の発明において、前記二次統合手段は、統合対象である一次統合ベクトルデータに対して、第２の所定距離内に他の一次統合ベクトルデータが存在する場合、前記統合対象の一次統合ベクトルデータと前記第２の所定距離内に存在する他の一次統合ベクトルデータを統合して二次統合ベクトルデータとし、前記第２の所定距離内に他の一次統合ベクトルデータが存在しない場合、統合対象である一次統合ベクトルデータをそのまま二次統合ベクトルデータとすることが望ましい。これにより、二次統合処理が好適に実行される。
【００１０】
また第１の発明において、前記二次統合手段は、前記二次統合ベクトルデータのうち、統合されたデータ数を第２の所定数以上含む二次統合ベクトルデータを、統合結果とすることが望ましい。これにより、二次統合ベクトルデータの中から好適な統合結果を得ることができる。
【００１１】
また第１の発明において、前記移動手段は、移動対象である一次統合ベクトルデータを、当該一次統合ベクトルデータから所定距離内に存在する他の一次統合ベクトルデータが密集する方へ移動させることが望ましい。これにより、移動処理が好適に実行される。
【００１２】
また第１の発明において、前記ベクトルデータは、例えば、画像に対して所定の検出対象を検出する検出処理を施して得られる検出データであり、少なくとも検出された検出対象の画像における２次元の位置座標を含む。これにより画像中に含まれる検出対象を検出した検出データに対して、高速なデータ統合を行うことが可能となる。
また、前記検出処理は、前記画像に対して、検出対象を探索するための探索窓を走査させながら検出対象を検出してもよい。これにより、データ統合の高速化とともに検出対象の検出精度の向上が実現される。
【００１３】
さらに、前記検出処理は、前記画像に対して、検出対象を探索するための探索窓を異なるサイズで走査させながら検出対象を検出してもよい。この場合、前記ベクトルデータは、更に、前記検出処理により検出対象が検出された際の前記探索窓のサイズをベクトルの要素として含むことが望ましい。これにより、検出対象の位置情報に加えサイズ情報に基づいてデータ統合が行われる。
【００１４】
第２の発明は、少なくとも２次元の位置座標を要素として含むベクトルであるベクトルデータを複数記憶する記憶手段を備えるコンピュータによるデータ統合方法であって、前記ベクトルデータを、ベクトルデータ同士のベクトル間の距離に基づいて統合し、複数の一次統合ベクトルデータとする一次統合ステップと、統合された一次統合ベクトルデータを、一次統合ベクトルデータが密集する方へ移動させる移動ステップと、移動させた前記一次統合ベクトルデータを、一次統合ベクトルデータ同士のベクトル間の距離に基づいて更に統合し、二次統合ベクトルデータとする二次統合ステップと、を含むことを特徴とするデータ統合方法が提供される。
【００１５】
第３の発明は、コンピュータを請求項１に記載のデータ統合装置として機能させることを特徴とするプログラムである。第３の発明により、コンピュータを第１の発明のデータ統合装置として機能させることが可能となる。
【発明の効果】
【００１６】
本発明によれば、演算量が膨大にならないように効率的にデータを統合することが可能な、データ統合装置等が提供される。
【図面の簡単な説明】
【００１７】
【図１】検出装置１（データ統合装置）のハードウェア構成を示す図
【図２】検出器２を模式的に表した図
【図３】検出装置１の動作を示すフローチャート
【図４】入力画像Ｉｍの例を示す図
【図５】検出処理を模式的に表した図
【図６】検出処理の流れを示すフローチャート
【図７】検出処理により検出された入力画像Ｉｍ上の検出データ３を示す図
【図８】検出処理により検出された検出データ３のデータ内容を示す図
【図９】本発明のデータ統合処理の流れを示すフローチャート
【図１０】一次統合処理の流れを示すフローチャート
【図１１】一次統合処理を模式的に表した図
【図１２】一次統合処理により一次統合された一次統合データ５のデータ内容を示す図
【図１３】移動処理の流れを示すフローチャート
【図１４】移動処理を模式的に表した図
【図１５】二次統合処理の流れを示すフローチャート
【図１６】二次統合処理を模式的に表した図
【図１７】二次統合処理により二次統合された二次統合データ７のデータ内容を示す図
【図１８】入力画像Ｉｍに対して検出処理、統合処理を施して得られた最終的な検出結果の例を示す図
【図１９】従来のデータ統合処理の流れを示すフローチャート
【図２０】移動処理（従来）の流れを示すフローチャート
【図２１】統合処理（従来）の流れを示すフローチャート
【図２２】移動処理（従来）を模式的に表した図
【図２３】統合処理（従来）を模式的に表した図
【発明を実施するための形態】
【００１８】
以下図面に基づいて、本発明の実施形態を詳細に説明する。本発明は、後述する画像中における所定の検出対象（顔画像など）を所定の検出処理（顔検出処理など）により検出し、得られた検出データを統合するためのデータ統合処理に好適に適用することが可能であるが、これに限定されるわけではない。本発明は、前述の課題を有するものであれば、前記したデータ統合処理に適用する場合と同様の効果を奏する。
【００１９】
＜検出装置１のハードウェア構成＞
図１は、本発明のデータ統合装置を含む検出装置１のハードウェア構成を示す図である。図に示すように、検出装置１は、主に、制御部１１、記憶部１２、メディア入出力部１３、通信制御部１４、入力部１５、表示部１６、周辺機器Ｉ／Ｆ部１７等が、バス１８を介して接続される。
【００２０】
制御部１１は、ＣＰＵ（Central Processing
Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等によって構成される。ＣＰＵは、記憶部１２、ＲＯＭ、記録媒体等に格納されるプログラムをＲＡＭ上のワークメモリ領域に呼び出して実行し、バス１８を介して接続された各装置を駆動制御し、検出装置１が行う後述する処理を実現する。ＲＯＭは、不揮発性メモリであり、検出装置１のブートプログラムやＢＩＯＳ等のプログラム、データ等を恒久的に保持している。ＲＡＭは、揮発性メモリであり、記憶部１２、ＲＯＭ、記録媒体等からロードしたプログラム、データ等を一時的に保持するとともに、制御部１１が各種処理を行う為に使用するワークエリアを備える。
【００２１】
記憶部１２は、ＨＤＤ（Hard Disk Drive）等であり、制御部１１が実行するプログラム、プログラム実行に必要なデータ、ＯＳ（Operating System）等が格納される。プログラムに関しては、ＯＳに相当する制御プログラムや、後述する処理を検出装置１に実行させるためのプログラムが格納されている。これらの各プログラムコードは、制御部１１により必要に応じて読み出されてＲＡＭに移され、ＣＰＵに読み出されて各種の手段として実行される。
【００２２】
メディア入出力部１３（ドライブ装置）は、データの入出力を行い、例えば、ＣＤドライブ（−ＲＯＭ、−Ｒ、−ＲＷ等）、ＤＶＤドライブ（−ＲＯＭ、−Ｒ、−ＲＷ等）等のメディア入出力装置を有する。通信制御部１４は、通信制御装置、通信ポート等を有し、検出装置１とネットワーク間の通信を媒介する通信インタフェースであり、ネットワークを介して、他のコンピュータ間との通信制御を行う。ネットワークは、有線、無線を問わない。
【００２３】
入力部１５は、データの入力を行い、例えば、キーボード、マウス等のポインティングデバイス、テンキー等の入力装置を有する。入力部１５を介して、検出装置１に対して、操作指示、動作指示、データ入力等を行うことができる。
また、入力部１５は、ＣＣＤやＣＭＯＳセンサ等のカメラを備えてもよい。これにより、カメラにより撮像した画像を、入力画像Ｉｍとすることもできる。
【００２４】
表示部１６は、液晶パネル等のディスプレイ装置、ディスプレイ装置と連携して検出装置１のビデオ機能を実現するための論理回路等（ビデオアダプタ等）を有する。尚、入力部１５及び表示部１６は、タッチパネルディスプレイのように、一体となっていても良い。
【００２５】
周辺機器Ｉ／Ｆ（Interface）部１７は、検出装置１と周辺機器とのデータ送受信を行うためのポートやアンテナ等であり、検出装置１は周辺機器Ｉ／Ｆ部１７を介して周辺機器とのデータの送受信を行う。周辺機器との接続形態は、有線（例えば、ＵＳＢ（Universal Serial Bus）等）、無線（例えば、Bluetooth（登録商標）等）を問わない。バス１８は、各装置間の制御信号、データ信号等の授受を媒介する経路である。
【００２６】
検出装置１の記憶部１２には、検出対象画像（例えば顔画像）と非検出対象画像（背景画像）を分類することで検出対象を検出する「検出器２」が格納されている。検出装置１の制御部１１は、所定スケール（サイズ）の探索窓３０（例えば８ピクセル×８ピクセルのような検出領域）を画像中で走査させながら探索窓３０で切り出した画像をこの検出器２に入力し、検出処理を行う。
【００２７】
図２は、検出器２を模式的に表した図である。検出器２は、図に示すように、例えば順序付けられた複数の強識別器（強識別器２−１、２−２、・・・、２−Ｎ）を連結して構成したカスケード型分類器である。このカスケード型分類器は、例えばＨａａｒ−Ｌｉｋｅ特徴量を用いた機械学習（例えばＡｄａＢｏｏｓｔ）によって予め構築されている。各強識別器は、検出対象画像と非検出対象画像（背景画像）を分類する１クラス分類器として機能し、検出器２の最上段の強識別器２−１から順に分類処理を実行していく。そして、いずれかの強識別器で非検出対象と分類（「背景分類」）された場合、それ以降の強識別器による分類処理が破棄される。途中で背景分類されることなく、最下段の強識別器で検出対象画像に分類されると、制御部１１は、検出対象（物体）を検出したものと判断する。
【００２８】
＜検出装置１の動作＞
次に、図３〜図２１を参照して、検出装置１の具体的な動作について説明する。
【００２９】
図３は、検出装置１の全体動作を示すフローチャートである。図に示すように、まず、検出装置１の制御部１１は、検出対象（顔画像）を含む入力画像Ｉｍを画像入力し（ステップＳ１）、入力画像Ｉｍに対して検出処理を実行する（ステップＳ２）。
図４は、入力画像Ｉｍの例を示す図である。図の例では、入力画像Ｉｍ中に２つの検出対象（顔画像）が存在する。
【００３０】
図５は、ステップＳ１における検出処理を模式的に表した図である。図５（ａ）に示すように、入力画像Ｉｍに対して、所定スケール（サイズ）の探索窓３０を走査させながら、各走査位置で検出処理を実行する。具体的には、所定の走査領域２０（入力画像Ｉｍ内で任意に設定される探索範囲）の左上端から、Ｘ軸（画像水平方向）の正方向に所定の移動幅で探索窓３０の走査を開始し、各走査位置で検出処理を実行する。探索窓３０が走査領域２０の右端に達すると、探索窓３０をＹ軸（画像垂直方向）の正方向に所定量移動（シフト）させ、今度は、右端から、Ｘ軸の負方向に所定の移動幅で探索窓３０を走査させながら、各走査位置で検出処理を実行する。
【００３１】
このように、探索窓３０のＸ軸方向の正方向又は負方向の走査とＹ軸方向の移動（シフト）を繰り返すことにより、走査領域２０の全領域に亘って検出対象（顔画像）の探索が行われる。走査領域２０の全領域に亘って走査が終了したら、図５（ｂ）に示すように、探索窓３０のサイズを指定スケーリング値で拡大し、再度、所定の走査領域２０の左上端から、前述したように、探索窓３０を走査し、各走査位置で検出処理を実行していく。このように、探索窓３０のサイズ（スケール）を変更しながら走査することで、画像内の任意のサイズの検出対象（顔画像）を検出する。
【００３２】
そして、探索窓３０のサイズ（スケール）が所定値以上になると（例えば、探索窓３０が矩形の場合、矩形サイズの長辺が走査領域２０の短辺より大きくなるまで）、検出処理を終了する。
【００３３】
なお、図５（ａ）の走査順序はあくまで一例であり、図１の例以外にも種々の走査順序を選択できる。例えば、探索窓３０が走査領域２０の右端に達すると、再度、走査領域２０の左端から走査を開始するようにしてもよい。この場合、探索窓３０のＸ軸の正方向への走査（走査領域２０の左端から右端への走査）と、Ｙ軸方向への移動（シフト）を繰り返すことにより、走査領域２０の全領域に亘って検出対象（顔画像）の探索が行われる。
【００３４】
図６は、検出処理の流れを示すフローチャートである。まず、制御部１１は、所定スケール（サイズ）の探索窓３０を入力画像Ｉｍ中の走査領域２０の初期位置に設定する（ステップＳ１１）。例えば、走査領域２０の左上端に探索窓３０を設定する。そして、制御部１１は、探索窓３０で切り出した画像を、検出器２へ入力し（ステップＳ１２）、検出処理（カスケード分類処理）を実行する（ステップＳ１３）。制御部１１は、検出処理により検出対象（顔画像）が検出された場合には、その検出データ３を出力し記憶部１２に保持する。検出データ３とは、少なくとも入力画像Ｉｍ中の検出対象の位置情報を含むデータであり、本実施形態では、検出対象を検出した際の探索窓３０の入力画像Ｉｍ中の位置（Ｘ座標、Ｙ座標）およびスケール（サイズ）を含む。
【００３５】
探索窓３０が走査領域２０の右端又は左端に未だ到達していない場合には（ステップＳ１４；Ｎｏ）、制御部１１は、探索窓３０をＸ軸方向に所定量移動させ（ステップＳ１５）、ステップＳ１２に戻る。
【００３６】
制御部１１は、探索窓３０により切り出した画像に対する検出処理（カスケード分類処理）の実行と、探索窓３０のＸ軸方向への移動（走査）とを、探索窓３０が走査領域２０の右端又は左端に到達するまで（ステップＳ１４；Ｙｅｓ）、繰り返し行う。
【００３７】
そして、探索窓３０が走査領域２０の右端又は左端まで到達すると（ステップＳ１４；Ｙｅｓ）、制御部１１は、更に探索窓３０が走査領域２０の全領域を走査したか否かを判断する（ステップＳ１６）。未走査領域が存在する場合には（ステップＳ１６；Ｎｏ）、制御部１１は、探索窓３０をＹ軸方向に所定量移動させ、ステップＳ１２に戻り、再びＸ軸方向への探索窓３０の走査（ステップＳ１２〜Ｓ１５）を実行する。この際、図５（ａ）に示すように、探索窓３０のＸ軸の走査方向は正負逆転する。
【００３８】
一方、探索窓３０が走査領域２０の全領域を走査した場合（ステップＳ１６；Ｙｅｓ）、入力画像Ｉｍに対する検出処理を終了する。なお、図６の処理（ステップＳ１１〜ステップＳ１６）は、前述したように、探索窓３０のスケール（サイズ）を拡大させながら、繰り返し実行する。
【００３９】
図７は、検出処理により検出された入力画像Ｉｍ上の検出データ３を示す図である。図に示すように、通常、１つの検出対象（顔画像）に対して複数の検出データ３が検出される。
図８は、検出処理により検出された検出データ３のデータ内容を示す図である。図に示すように、各検出データ３は、データＩＤ（３−１，３−２，３−３，…）と紐づいて、各検出データ３の「Ｘ座標」（１２０，１３０，２００，…）、「Ｙ座標」（１４０，１５０，７４０，…）、および「スケール」（６４，６４，１００，…）を保持する。スケールとは、検出対象の検出時の探索窓３０のスケール（サイズ）に基づき決定される。本実施形態では探索窓３０のＸ方向（横方向）とＹ方向（縦方向）のサイズを同一（探索窓３０を正方形）としているため、スケールは１つの値で指定されているが、探索窓３０のＸ方向（横方向）とＹ方向（縦方向）のサイズは異なってもよい。この場合、検出データ３のスケールは、Ｘ方向（横方向）のサイズとＹ方向（縦方向）のサイズで指定される２次元ベクトルで表される。なお、本実施形態とは異なり探索窓３０のスケールを一定とした場合には、検出データ３にスケールの情報を含めなくても良い。
【００４０】
次に、本発明の要旨であるデータ統合処理について説明する。データ統合処理によって、検出処理により検出された検出データ３が統合され、各検出対象（各顔画像）を一意に特定することが可能となる。
【００４１】
＜従来のデータ統合処理＞
まず、本発明のデータ統合処理を説明する前に、図１９〜図２３を参照して、従来のデータ統合処理について説明する。
図１９は、従来のデータ統合処理の流れを示すフローチャートである。図に示すように従来のデータ統合処理は、移動処理（ステップＳ１０１）、および統合処理（ステップＳ１０２）の２つの処理から構成される。移動処理は、統合処理の前処理であり、検出データ３を検出データ３同士が密集する方へ移動させる（検出データ３の密度が大きい方へ移動させる）。
以下、各処理について順に説明する。
【００４２】
図２０は、移動処理の流れを示すフローチャートである。まず、検出装置１の制御部１１は、移動済みでない検出データ３を一つ選択する（ステップＳ２０１）。
【００４３】
次に、制御部１１は、選択した検出データ３の移動量（移動ベクトル）を算出し（ステップＳ２０２）、算出した移動量（移動ベクトル）に基づいて、検出データ３を移動させる（ステップＳ２０３）。具体的には、数式１に示すように、選択した検出データ３から所定距離ＤＴｈ内（検出データ３を中心とした半径ＤＴｈ内）に存在する他の検出データ３に距離に応じた重みを付けて、移動量（移動ベクトル）を算出する。
【００４４】
【数１】
0006733188.tif 000002
【００４５】
制御部１１は、ステップＳ２０２、Ｓ２０３の処理を、移動量（移動ベクトル）｜ｍ（ｒ）｜が規定値以下になるまで（ステップＳ２０４；Ｙｅｓ）、繰り返し実行する。
移動量｜ｍ（ｒ）｜が規定値以下になると、制御部１１は、選択した検出データ３の移動処理を終了する。続いて、制御部１１は、全ての検出データ３に対して移動処理が施されたか否かを判断し、未だ移動処理が施されていない検出データ３があれば（ステップＳ２０５；Ｎｏ）、移動済みでない検出データ３を再度選択し、当該検出データ３に対して移動処理（ステップＳ２０２〜ステップＳ２０４）を実行する。
一方、全ての検出データ３に対して移動処理が施されると（ステップＳ２０５；Ｙｅｓ）、処理を終了する。
【００４６】
図２２は、移動処理を模式的に表した図である。図に示すように、各検出データ３は、ベクトル空間上において検出データ３が密集する方へ移動される。
なお上記説明した移動処理は、ミーンシフト（Ｍｅａｎ  Ｓｈｉｆｔ）として知られている。
【００４７】
図２１は、統合処理の流れを示すフローチャートである。まず、検出装置１の制御部１１は、統合されていない検出データ３を選択する（ステップＳ３０１）。
【００４８】
次に、制御部１１は、選択した検出データ３から所定距離ＤＴｈ内（検出データ３を中心とした半径ＤＴｈ内）に他の検出データ３が存在するか否かを判定する（ステップＳ３０２）。具体的には、検出データ３同士の距離（例えばユークリッド距離）が所定距離ＤＴｈ内か否かを判定する。所定距離ＤＴｈ内に他の検出データ３が存在する場合（ステップＳ３０２；Ｙｅｓ）、制御部１１は、選択した検出データ３と所定距離ＤＴｈ内に存在する他の検出データ３を統合して統合データ４とする。一方、所定距離ＤＴｈ内に他の検出データが存在しない場合（ステップＳ３０２；Ｎｏ）、制御部１１は、選択した検出データ３をそのまま統合データ４とする（ステップＳ３０４）。
統合データ４は、数式２に示すように、選択した検出データ３と所定距離ＤＴｈ内に存在する他の検出データ３の平均値として算出される。
【００４９】
【数２】
0006733188.tif 000003
【００５０】
上式において、ｎは所定距離ＤＴｈ内に存在する検出データ３の数である。
【００５１】
以上の統合処理は、未統合の検出データ３が存在しなくなるまで（ステップＳ３０５；Ｎｏ）、繰り返し実行される。
【００５２】
そして、制御部１１は、統合データ４のうち、検出データ数を所定数ＮＴｈ以上含む統合データ４を最終的な統合結果として出力し、検出データ数が所定数ＮＴｈ未満である統合データ４は破棄する（ステップＳ３０６）。
【００５３】
図２３は、統合処理を模式的に表した図である。図２３（ａ）の例では、検出データ３が、統合処理によって３つの統合データ４（４−１，４−２，４−３）に統合される。統合データ４−１は６個の検出データ３を統合したデータであり、統合データ４−２は１２個の検出データ３を統合したデータであり、統合データ４−３は３個の検出データ３を統合したデータである。
図２３（ｂ）の例では、ＮＴｈ＝５としているため、５個以上の検出データ３を含む統合データ４−１，４−２が最終的な統合結果として出力され、統合データ４−３は破棄される。
なお以上説明した統合処理は、ニアレストネイバー（Ｎｅａｒｅｓｔ  Ｎｅｉｇｈｂｏｒ）として知られている。
【００５４】
ここで、従来のデータ統合処理では、大量の検出データ３が検出されてしまうと演算量が膨大になるデメリットがある。特に、検出対象（顔画像）の検出精度を向上させるために、検出処理において探索窓３０の移動量を小さくし、画像中を密に走査することが行われる。このような場合、検出データ３が大量に検出されるため演算量が重くなる。特に、移動処理は繰り返し処理（反復処理）であるため計算負荷が大きい。従って、大量の検出データ３それぞれに計算負荷の大きい移動処理をそのまま適用したのでは、現実的な時間で処理を完了させることが困難となる。本発明に係るデータ統合処理は、検出データ３が大量に検出された場合であっても演算量が膨大にならないようなデータ統合処理を実現するものである。
以降、本発明のデータ統合処理について詳細に説明する。
【００５５】
＜本発明のデータ統合処理＞
図９は、本発明のデータ統合処理の流れを示すフローチャートである。図に示すように統合処理は、一次統合処理（ステップＳ２１）、移動処理（ステップＳ２２）、二次統合処理（ステップＳ２３）の各処理から構成される。特に、移動処理の前段に統合処理（一次統合処理）を更に設けた点に特徴がある。これにより、後段の移動処理および二次統合処理の計算負荷を大幅に削減することができ、データ統合処理の高速化が実現される。各処理について順に説明する。
【００５６】
（一次統合処理）
まず、図１０、１１を参照して一次統合処理について説明する。図１０は一次統合処理の流れを示すフローチャートであり、図１１は一次統合処理を模式的に表した図である。まず、検出装置１の制御部１１は、一次統合されていない検出データ３を一つ選択する（ステップＳ３１）。
【００５７】
次に、制御部１１は、選択した検出データ３から所定距離ＤＴｈ１内（検出データ３を中心とした半径ＤＴｈ１内）に存在する検出データ３が所定数ＮＴｈ１以上か否かを判定する（ステップＳ３２）。
【００５８】
所定数ＮＴｈ１以上の場合（ステップＳ３２；Ｙｅｓ）、制御部１１は、選択した検出データ３と所定距離ＤＴｈ１内に存在する他の検出データ３を統合して一次統合データ５とする（ステップＳ３３）。
例えば図１１において、検出データ３−１から所定距離ＤＴｈ１内に存在する検出データ３の数は「６」であり、所定数ＮＴｈ１は「５」である。すなわち、検出データ３−１から所定距離ＤＴｈ１内に存在する検出データ３が所定数ＮＴｈ１以上であるので、所定距離ＤＴｈ１内に存在する検出データ３を統合して一次統合データ５−１とする。
このとき、一次統合データ５は、所定距離ＤＴｈ１内に存在する検出データ３の平均値として算出される。
【００５９】
一方、所定数ＮＴｈ１未満の場合（ステップＳ３２；Ｎｏ）、制御部１１は、選択した検出データ３をそのまま一次統合データ５とする（ステップＳ３４）。
例えば図１１において、検出データ３−４から所定距離ＤＴｈ１内に存在する検出データ３の数は「３」であり、所定数ＮＴｈ１（＝５）未満であるので、選択した検出データ３−４をそのまま（所定距離ＤＴｈ１内に存在する他の検出データ３と統合せずに）一次統合データ５−４とする。
【００６０】
また、ステップＳ３３またはステップＳ３４の一次統合データ５から所定距離ＤＴｈ１内（一次統合データ５を中心とした半径ＤＴｈ１内）に他の一次統合データ５が存在する場合（ステップＳ３５；Ｙｅｓ）、一次統合データ５を当該他の一次統合データと併せて統合する（ステップＳ３６）。
【００６１】
以上の一次統合処理は、一次統合されていない検出データ３が存在しなくなるまで（ステップＳ３７；Ｎｏ）、繰り返し実行される。
ステップＳ３３において一次統合された一次統合データ５は数式３のように表すことができる。
【００６２】
【数３】
0006733188.tif 000004
【００６３】
上式において、ｎは所定距離ＤＴｈ１内に存在する検出データ３の数、ｍは所定距離ＤＴｈ１内に存在する一次統合データ５の数、ｌｊは一次統合データ５に含まれる（一次統合データ５に統合された）検出データ３の数（以下、「包含検出データ数」と呼ぶ場合がある）を示す。
なお、ステップＳ３４における一次統合データ５（他の検出データ３と統合されていない一次統合データ）は、検出データ３と同一（ｒｄ＝ｒ）となる。
【００６４】
図１２は、一次統合処理により一次統合された一次統合データ５のデータ内容を示す図である。図に示すように、各一次統合データ５は、データＩＤ（５−１，５−２，５−３，…）と紐づいて、各一次統合データ５に含まれる検出データ３のＸ座標の平均値（「Ｘ座標（平均）」）（１００，５００，９００，…）、検出データ３のＹ座標の平均値（「Ｙ座標（平均）」）（１３０，６００，１３００，…）、検出データ３のスケールの平均値（「スケール（平均）」）（８０，９０，７０，…）、および「包含検出データ数」（６，５，７，…）を保持する。
【００６５】
（移動処理）
次に図１３、１４を参照して移動処理について説明する。図１３は移動処理の流れを示すフローチャートであり、図１４は移動処理を模式的に表した図である。まず、検出装置１の制御部１１は、移動済みでない一次統合データ５を一つ選択する（ステップＳ４１）。
【００６６】
次に、制御部１１は、選択した一次統合データ５の移動量（移動ベクトル）を算出し（ステップＳ４２）、算出した移動量（移動ベクトル）に基づいて、一次統合データ５を移動させる（ステップＳ４３）。具体的には、数式４に示すように、選択した一次統合データ５から所定距離ＤＴｈ１内（一次統合データ５を中心とした半径ＤＴｈ１内）に存在する他の一次統合データ５に距離に応じた重みを付けて、移動量（移動ベクトル）を算出する。
【００６７】
【数４】
0006733188.tif 000005
【００６８】
上式において、ｎは所定距離ＤＴｈ１内に存在する一次統合データ５のうち図１０のステップＳ３４において一次統合された検出データ３の数、ｍは所定距離ＤＴｈ１内に存在する一次統合データ５のうち図１０のステップＳ３３において一次統合されたデータ数、ｌｊは当該一次統合された一次統合データ５に含まれる（一次統合データ５に統合された）検出データ３の数を示す。
【００６９】
制御部１１は、ステップＳ４２、Ｓ４３の処理を、移動量（移動ベクトル）｜ｍ（ｒ）｜が規定値以下になるまで（ステップＳ４４；Ｙｅｓ）、繰り返し実行する。
移動量｜ｍ（ｒ）｜が規定値以下になると、制御部１１は、選択した一次統合データ５の移動処理を終了する。続いて、制御部１１は、全ての一次統合データ５に対して移動処理が施されたか否かを判断し、未だ移動処理が施されていない一次統合データ５があれば（ステップＳ４５；Ｎｏ）、移動済みでない一次統合データ５を再度選択し、当該一次統合データ５に対して移動処理（ステップＳ４２〜ステップＳ４４）を実行する。
一方、全ての一次統合データ５に対して移動処理が施されると（ステップＳ４５；Ｙｅｓ）、処理を終了する。
【００７０】
図１４に示すように、移動処理によって各一次統合データ５は、一次統合データ５が密集する方へ移動する。
【００７１】
（二次統合処理）
次に図１５、１６を参照して二次統合処理について説明する。図１５は二次統合処理の流れを示すフローチャートであり、図１６は二次統合処理を模式的に表した図である。まず、検出装置１の制御部１１は、二次統合されていない一次統合データ５を選択する（ステップＳ５１）。
【００７２】
次に、制御部１１は、選択した一次統合データ５から所定距離ＤＴｈ２内（一次統合データ５を中心とした半径ＤＴｈ２内）に他の一次統合データ５が存在するか否かを判定する（ステップＳ５２）。具体的には、一次統合データ５同士の距離（例えばユークリッド距離）が所定距離ＤＴｈ２内か否かを判定する。所定距離ＤＴｈ２内に他の一次統合データ５が存在する場合（ステップＳ５２；Ｙｅｓ）、制御部１１は、選択した一次統合データ５と所定距離ＤＴｈ２内に存在する他の一次統合データ５を統合して二次統合データ７とする（ステップＳ５３）。
例えば図１６（ａ）の例では、一次統合データ５−４から所定距離ＤＴｈ２内に他の一次統合データ５―５、５−６が存在するため、一次統合データ５−４、５−５、５−６を統合して二次統合データ７−４とする。
【００７３】
一方、所定距離ＤＴｈ２内に他の一次統合データ５が存在しない場合（ステップＳ５２；Ｎｏ）、制御部１１は、選択した一次統合データ５をそのまま二次統合データ７とする（ステップＳ５４）。
例えば図１６（ａ）の例では、一次統合データ５−１から所定距離ＤＴｈ２内に他の一次統合データ５が存在しないため、一次統合データ５−１はそのまま二次統合データ７−１となる。
以上の二次統合処理は、二次統合されていない一次統合データ５が存在しなくなるまで（ステップＳ５５；Ｎｏ）、繰り返し実行される。
【００７４】
図１７は、二次統合処理により二次統合された二次統合データ７のデータ内容を示す図である。図に示すように、各二次統合データ７は、データＩＤ（７−１，７−２，７−３，…）と紐づいて、各二次統合データ７に含まれる一次統合データ５のＸ座標の平均値（「Ｘ座標（平均）」）（１２０，５３０，３０５，…）、一次統合データ５のＹ座標の平均値（「Ｙ座標（平均）」）（１５０，６４０，３０５，…）、一次統合データ５のスケールの平均値（「スケール（平均）」）（８０，８５，６４，…）、および「包含検出データ数」（６，１２，３，…）を保持する。なお、包含検出データ数は、二次統合処理により統合された一次統合データ５に含まれる検出データ数の総和となる。
【００７５】
そして、制御部１１は、二次統合データ７のうち、包含検出データ数が所定数ＮＴｈ２以上である二次統合データ７を最終的な統合結果とし、包含検出データ数が所定数ＮＴｈ２未満である二次統合データ７を破棄する（ステップＳ３６）。
例えば、図１７を参照すると、二次統合データ７−１、７−２、７−３の包含検出データ数は、それぞれ６、１２、３である。この場合、包含検出データ数が所定数ＮＴｈ２（＝５）以上である二次統合データ７−１、７−２を最終的な統合結果とし、包含検出データ数が所定数ＮＴｈ２未満である二次統合データ７−３を破棄する（図１６（ｂ）参照）。
【００７６】
図３の全体動作を示すフローチャートに戻る。制御部１１は、最終的な検出結果（統合結果）を入力画像Ｉｍ上に出力する（ステップＳ４）。
図１８は、図４の入力画像Ｉｍに対して検出処理（ステップＳ２）、データ統合処理（ステップＳ３）を施して得られた最終的な検出結果（統合結果）の例を示す。図に示すように、入力画像Ｉｍ中の２つの検出対象（顔画像）が二次統合データ７によって一意に特定される。
【００７７】
以上、本発明のデータ統合処理について詳細に説明した。本発明のデータ統合処理によれば、一次統合処理によって多数の検出データ３を一次統合データ５として統合し（ステップＳ２１）、移動処理によって統合した一次統合データ５を一次統合データ５が密集する方へ移動させ（ステップＳ２２）、二次統合処理によって移動させた一次統合データ５を二次統合データ７として統合する（ステップＳ２３）。従来のデータ統合処理（図１９〜図２３参照）では、検出データ３を検出データ同士が密集する方へ移動させ（移動処理）、移動させた検出データ３を統合データ４として統合していた（統合処理）。しかしながら、大量の検出データ３が存在すると、演算量が膨大になる問題があった。特に、移動処理は繰り返し処理（反復処理）であるため計算負荷が大きい。従って、大量の検出データ３それぞれに計算負荷の大きい移動処理をそのまま適用したのでは、現実的な時間で処理を完了させることが困難となる。この点、本発明のデータ統合処理によれば、一次統合処理によって、大量の検出データ３を統合（一次統合）して情報量を落としたうえで、後段の移動処理および統合処理（二次統合処理）を実行するため、高速なデータ統合を実現することが可能となる。またこれにより、検出精度向上のために探索窓３０を密に走査した場合であっても、現実的な時間で処理を完了させることができる。
【００７８】
以上、添付図面を参照しながら、本発明の好適な実施形態について説明したが、本発明はかかる例に限定されない。当業者であれば、本願で開示した技術的思想の範疇内において、各種の変更例又は修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【００７９】
１…………  検出装置
２…………  検出器
３…………  検出データ
５…………  一次統合データ
７…………  二次統合データ
２０………  走査領域
３０………  探索窓
【図１】
0006733188.tif 000006
【図２】
0006733188.tif 000007
【図３】
0006733188.tif 000008
【図４】
0006733188.tif 000009
【図５】
0006733188.tif 000010
【図６】
0006733188.tif 000011
【図７】
0006733188.tif 000012
【図８】
0006733188.tif 000013
【図９】
0006733188.tif 000014
【図１０】
0006733188.tif 000015
【図１１】
0006733188.tif 000016
【図１２】
0006733188.tif 000017
【図１３】
0006733188.tif 000018
【図１４】
0006733188.tif 000019
【図１５】
0006733188.tif 000020
【図１６】
0006733188.tif 000021
【図１７】
0006733188.tif 000022
【図１８】
0006733188.tif 000023
【図１９】
0006733188.tif 000024
【図２０】
0006733188.tif 000025
【図２１】
0006733188.tif 000026
【図２２】
0006733188.tif 000027
【図２３】
0006733188.tif 000028