本発明の実施の形態における物体検出装置1は、図1に示すように、画像取得部2、信号処理部3、記憶部4及び出力部5を含んで構成される。物体検出装置1は、所定の監視空間を撮像した監視画像を取得し、画像内に撮像された人や物等の検出対象物を検出する。画像取得部2、信号処理部3、記憶部4及び出力部5は互いに情報伝達可能に接続される。
なお、本実施の形態では、画像内に写った人を検出対象物とする例について説明する。ただし、これに限定されるものではなく、流通化に置かれる商品等の物品、通行する車等を検出する場合等にも適用することができる。
画像取得部2は、CCD素子やC−MOS素子等の撮像素子、光学系部品、アナログ/デジタル変換器等を含んで構成される所謂監視カメラを含む。また、画像取得部2は、インターネットのネットワークを介して画像を取得するものであってもよい。画像取得部2は、撮像した画像を信号処理部3へ送信する。画像を取得する間隔は一定の時間間隔でなくてもよい。
画像は、例えば、幅320ピクセル、高さ240ピクセル、各ピクセルがR(赤)、G(緑)、B(青)をそれぞれ256階調で表現したカラー画像である。
信号処理部3は、CPU、DSP、MCU、IC等の演算回路を含んで構成される。信号処理部3は、画像取得部2、記憶部4及び出力部5と情報伝達可能に接続される。信号処理部3は、検出窓領域選択手段30、検出窓制御手段32、固定識別器34、学習識別器36、識別器更新手段37、判定手段38等の各手段での処理を記述したプログラムを記憶部4から読み出して実行することによりコンピュータを各手段として機能させる。
図2を参照し、信号処理部3は、画像取得部2より得られた入力画像200から検出対象物を検出する。説明の都合上、画像200の左上を原点X=0,Y=0とし、横方向にX軸、縦方向にY軸とし、X軸は右方向、Y軸は下方向に正に増加するものとする。入力画像200には、領域203,204の位置に検出対象物(人)が写っており、矩形201,202は検出窓領域を示している。
物体検出装置1は、検出窓領域を少しずつずらしながら走査し、検出窓領域に人が写っている否かを判定する。矢印は、検出窓領域をずらす際の左上の座標を示すものであり、検出窓領域は画像200全体を漏れなく探索するように走査する。領域203,204にある矩形は、検出処理の結果、人であると判定された検出窓領域(人候補領域)を示す。人が写っている画像領域付近では、人であると判定される検出窓領域が複数出てくる場合があるが、検出窓領域をまとめる処理を行うことで最終的な検出窓領域(図2中の太線:人領域)を得る。また、領域205にある矩形は、検出対象物である人に似た洋服が掛かったハンガーが写された領域を示している。
検出窓領域選択手段30は、検出窓領域の幅と高さを決定する。画像内に様々な大きさで写る人に対応するため検出窓領域の幅と高さを変更しながら、検出窓領域を走査して画像内に人が写っているか否かを判定する。なお、検出窓領域の幅と高さは、検出対象物の画像上での大きさを考慮して、予め記憶部4に1又は複数を記憶している。ただし、予め幅と高さを記憶していなくとも、所定の規則に従って決定してもよい。
検出窓制御手段32は、検出窓領域をずらす間隔(走査間隔)を決定し、決定した走査間隔に基づいて検出窓領域をずらす。
固定識別器34は、検出窓領域内の画像がどれだけ人に似ているか、類似度を計算する。固定識別器34は、多数の「人」の画像データ、「人以外」の画像データを用いて予め学習させる。
類似度は、図3に示す処理手順で計算される。図1に記載している固定識別器34、学習識別器36、識別器更新手段37の具体例を図3ではカスケード型識別器320、学習識別器330及び識別器更新手段332としてそれぞれ示す。
まず、入力画像から切り出された検出窓領域内の画像が、カスケード型識別器320に入力される。カスケード型識別器320は、強識別器321,322,323のような複数の強識別器が直列に並んだ識別器である(ここではN個の強識別器が直列に並んでいる例を示す)。個々の強識別器は、ヒストグラム・オブ・オリエンティッド・グラディエント(HOG:Histograms of Oriented Gradients)特徴(Navneet Dalal and Bill Triggs, Histograms of Oriented Gradients for Human Detection, In Proceedings of IEEE Conference Computer Vision and Pattern Recognition 2005)を用いてアダブースト(AdaBoost)で予め学習させる。すなわち、検出対象物である人の様々な画像と人が写っていない画像を大量に用意し、各画像に対して検出対象物の画像であるか否か正解付けを行っておき、これらのデータを用いて両者が識別できるようにアダブーストで学習させる。類似度を計算するときは、各強識別器は、入力された画像からHOG特徴を計算し、アダブーストで選択された特徴量より類似度を計算する。
強識別器321〜323はあらかじめ計算する順序が決まっており、最初に計算する強識別器321が1、次に計算する強識別器322が2・・・Nのように各強識別器には計算する順番と同じ番号を割り当てる。
各強識別器321〜323は、検出窓領域として切り出された画像を入力とし、類似度を計算する。最先の強識別器321以外の強識別器322,323等は、前段で計算された類似度が閾値より大きい場合のみ(図中Tの矢印)、類似度を計算する。閾値以下の場合(図中Fの矢印)、識別器更新手段332にて学習識別器330の更新を行う。閾値は、例えば0に設定し、0より大きければ人に似ており、0以下であれば人に似ていないと判定する。以下、類似度を算出した強識別器の個数を判定段数という。
学習識別器330は、カスケード型識別器320の各強識別器の類似度を入力として、人か否かを判定する。
学習識別器330は、カスケード型識別器320で最後の強識別器において人と判定(図中Tの矢印)した場合のみ判定を行う。本実施の形態の例では、「最後の強識別器」とは、記憶部4に記憶された使用段数44の値が表す番号の強識別器である。カスケード型識別器320で「人」の可能性が高いときのみ、すなわち最終段の強識別器で求めた類似度が閾値より大きい場合(図中Tの矢印)に学習識別器330にて判定を行う。学習識別器330は、カスケード型識別器320において判定段数までの強識別器で得られた類似度Sn(nは1〜M:Mは判定段数(1≦M≦N))を入力とする。カスケード型識別器320の各強識別器で求めた類似度を並べてベクトル表現したものを類似度ベクトルS=(1番目の強識別器の類似度,2番目の強識別器の類似度,・・・,M番目の強識別器の類似度)=(S1,S2,・・・,SM)とする。
類似度ベクトルSが得られたときの「人」である確率P(人|S)、類似度Sが得られたときの「人以外」である確率P(人以外|S)を計算し、P(人|S)>P(人以外|S)なら「人」と判定し、そうでなければ「人以外」と判定する。
P(人|S)とP(人以外|S)の計算はベイズの定理より数式(1),(2)で求めることができる。
ここで、P(S|人)は、「人」の場合の類似度Sが得られる確率(尤度)、P(S|人以外)は「人以外」の場合の類似度Sが得られる確率(尤度)である。P(人)は「人」がどのくらいの確率で検出窓領域に含まれるかを表した事前確率、同様にP(人以外)は検出窓領域に「人以外」がどのくらいの確率で含まれているかを表した事前確率である。事前に検出窓領域に「人」、「人以外」が含まれる確率はわからないため、事前確率P(人)=P(人以外)=0.5と仮定する。P(人以外|S)=1−P(人|S)という関係があるので、P(人|S)を求めれば、P(人以外|S)は容易に求められる。以下では、P(人|S)を学習識別器330での類似度という。
各強識別器の類似度を要素とした確率変数ベクトルsを用意すると、「人」の類似度ベクトルsの分布P(s|人)と「人以外」の類似度ベクトルsの分布P(s|人以外)が求まればP(人|s)を計算できる。類似度ベクトルsは多次元データだが、各強識別器の類似度snは独立であると仮定すると、P(s|人)及びP(s|人以外)は数式(3),(4)で求められる。
ここで、P(sm|人)はm番目の強識別器の「人」の類似度の分布であり、P(sm|人以外)はm番目の強識別器の「人以外」の類似度の分布である。
本実施の形態では、全ビン(区切り)の類似度の分布の和が1になるようなヒストグラムで、「人」の類似度の分布及び「人以外」の類似度の分布を表現する。それぞれのヒストグラムは、記憶部4の類似度ヒストグラム42に格納される。ただし、類似度の分布はヒストグラムに限らず、正規分布や混合正規分布などで表現してもよい。
「人」の類似度ヒストグラム42は、予め用意した「人」を含む画像である学習用データを用いて各強識別器の類似度の分布を求めることによって構成する。本実施の形態では、「人」の類似度ヒストグラム42については逐次学習を行わないが更新してもよい。「人以外」の類似度ヒストグラム42は、監視カメラを設置した時の最初の数フレームの画像には人が含まれていないと仮定し、そのとき得られる各強識別器の類似度の分布を求めることによって構成する。その後、カスケード型識別器320又は学習識別器330において検出窓領域が「人以外」と判定されたときにカスケード型識別器320で求められた類似度を用いて「人以外」の類似度ヒストグラム42を逐次更新する。
カスケード型識別器320の強識別器の数がN=2の場合における類似度ヒストグラム42の例を図4に示す。類似度ヒストグラム401は、1番目の強識別器の類似度s1における「人」の類似度の分布402:P(s1|人)と「人以外」の類似度の分布403:P(s1|人以外)からなる。類似度ヒストグラム411は、2番目の強識別器の類似度s2における「人」の類似度の分布412:P(s2|人)と「人以外」の類似度の分布413:P(s2|人以外)からなる。4つの類似度ヒストグラム402,403,412,413は、全ビンの類似度の分布の合計が1になるようにそれぞれ正規化されている。
カスケード型識別器320のみで判定する場合、各強識別器で求められた類似度が予め定められた閾値(例えば、0に設定)より大きいと「人」と判定されるが、学習識別器330では得られた各強識別器の類似度と、過去の類似度ヒストグラム42から確率を計算し、適応的に判定できる。
例として、「人」、「人以外」の類似度の分布が図4に示す類似度ヒストグラム401,411で表される場合、1段目の強識別器の類似度がS1=1.0、2段目の強識別器の類似度がS2=1.0であったときについて説明する。1段目及び2段目の強識別器における閾値が0である場合、1段目及び2段目の強識別器のいずれにおいても類似度が閾値を超えているのでカスケード型識別器320では「人」と判定される。一方、学習識別器330では、類似度ベクトルS=(1.0,1.0)が得られたときの「人」である確率:P(人|S=(1.0,1.0))=P(S1=1.0|人)×P(S2=1.0|人)×P(人)/Aと、「人以外」である確率:P(人以外|S=(1.0,1.0))=1−P(人|S=(1.0,1.0))を算出する。ただし、A=P(S|人)×P(人)+P(S|人以外)×P(人以外)である。図4に示すヒストグラム401,411に基づくとP(人|S=(1.0,1.0))<P(人以外|S=(1.0,1.0))となるので、学習識別器330では「人以外」と判定される。
物体検出装置の設置環境の特性にあわせた類似度ヒストグラムを構築できれば、カスケード型識別器320からの類似度の算出結果に基づいて学習識別器330においてより確度の高い判定を行うことができる。
学習識別器330で判定後、学習識別器330を識別器更新手段332により更新する。また、類似度管理手段334において類似度及び検出窓領域の大きさ(幅及び高さ)と中心座標を関連付けて判定情報履歴40として記憶部4に記憶させる。
識別器更新手段332は、判定結果に応じて学習識別器330の類似度ヒストグラムを更新する。本実施の形態では、各強識別器で求められた類似度が閾値以下(図3中の矢印F)の場合に識別器更新手段332にて学習識別器330の更新を行う。また、カスケード型識別器320にて強識別器で求められた類似度が閾値を超えていても(図3中Tの矢印)、学習識別器330にて「人以外」と判定(図3中Fの矢印)された場合にも、学習識別器330の更新を行う。すなわち、「人以外」の類似度ヒストグラム42のみを更新の対象とし、「人」の類似度ヒストグラム42は更新しない。また、カスケード型識別器320の何段目の強識別器まで使用するかを表す使用段数について、カスケード型識別器320と学習識別器330の判定結果より更新する。更新後の使用段数は、使用段数44として記憶部4に記憶される。
識別器更新手段332は、一時刻前までに得られた類似度ヒストグラム42を現時刻に得られたデータで更新する。識別器更新手段332による更新処理には、例えば図5に示すように、αブレンディングが用いられる。図5は、学習識別器330のn番目の「人以外」の類似度ヒストグラム42を更新する処理を示しており、前時刻までの更新前の類似度ヒストグラム501及び現時刻で得られたデータによる更新された類似度ヒストグラム502を表している。
検出窓領域に人の画像が含まれているか否かを判定した際、カスケード型識別器320では「人」と判定され学習識別器330では「人以外」と判定されたとする。このときのn番目の強識別器の類似度が0.8のときのn番目の強識別器に対応する類似度ヒストグラム501の更新方法を示す。まず、更新前の類似度ヒストグラム501の各ビンを(1.0−α)倍する。その後、現時刻に得られた類似度0.8に相当するビンにα分の重みを足す(図5中、ビン503の斜線部分)。αは予め定められたパラメータである。αが大きいと過去の情報の影響がより早く小さくなり、αが小さいと過去の情報の影響をより長く受けるものとなる。初めて更新を行う際、すなわち類似度ヒストグラム501が空の状態の場合、得られたデータが該当するビンの値を1とする。ただし、このようにすると最初に得られたデータの影響が大きいため、更新回数が少ないうちはαを比較的大きな値に設定し、更新回数が多くなるにつれてだんだん小さな値に設定するなどしてもよい。
識別器更新手段332は、また、カスケード型識別器320と学習識別器330の判定結果によってカスケード型識別器320の使用段数を更新する。本実施の形態では、カスケード型識別器320の使用段数を以下の[例1]に示す方針に従って変更する。
[例1]
・カスケード型識別器320の判定結果と学習識別器330の判定結果とが異なる状態がある程度以上続いた場合に、使用段数44の値を1だけ増加させる。本例では、使用段数44の値を1だけ増加させているが、これに限るものではなく、増加をさせることが可能な段数であれば任意に決めてもよい。
・カスケード型識別器320において現在設定されている使用段数44の強識別器が、連続して使用されていない回数(すなわち、カスケード型識別器320の判定段数が連続して使用段数44未満である回数)を数えて、この回数が所定の閾値以上になった場合に、使用段数44の値を1だけ減少させる。ただし、使用段数44の設定値を減少させる数は、1に限らず任意に決定してもよい。
なお、使用段数44の初期値は、例えば、カメラを設置した直後の初期設定時に数フレーム分の入力画像を処理し、処理した際に使用した強識別器の最大段数を用いる。
ここで、図1に戻って、判定手段38は、判定情報履歴40として記憶されている検出窓領域の大きさ(幅、高さ)と中心座標、学習識別器330の類似度を用いて、最終的に画像内のどこに人が写っているかを決定する。判定情報履歴40に含まれるデータの中で、学習識別器330の類似度が閾値(例えば、0.8に設定)以上の検出窓領域を人候補領域として抽出する。人候補領域がない場合は入力画像中に人領域はないということで終了する。
人候補領域があった場合、検出窓領域の大きさと中心座標を用いて、一定以上(例えば、検出窓領域の面積の半分以上)の領域が重なっている人候補領域を纏める。纏めた人候補領域の中で学習識別器330の類似度が一番高い検出窓領域を人領域として選択する。纏めた領域毎に選択された検出窓領域を人領域とし、出力部5に選択された検出窓領域の情報を出力する。
記憶部4は、ROMやRAM等のメモリ装置で構成される。記憶部4は、信号処理部3からアクセス可能に接続される。記憶部4は、各種プログラム、各種データを記憶することができ、信号処理部3からの要求に応じてこれらの情報を読み書きする。記憶部4は、類似度管理手段334として機能し、判定情報履歴40として検出窓領域の大きさ(幅、高さ)と中心座標及び学習識別器330の類似度の3つの情報を関連付けて記憶する。また、カスケード型識別器320に含まれる強識別器毎に、各強識別器の番号に対応付けて「人」と「人以外」の類似度ヒストグラム42を記憶する。さらに、記憶部4は、カスケード型識別器320の現在の使用段数44を記憶する。かかる類似度ヒストグラム42が辞書データに相当する。
出力部5は、報知音を出力する音響出力手段や入力画像を表示する表示手段を含んで構成することができる。判定手段38で人領域が検出された場合、スピーカー、ブザー等の音響出力手段で警報を鳴らしたり、ディスプレイ等の外部表示装置に入力画像を表示したりする。また、出力部5は、コンピュータをネットワークや電話回線に接続するためのインターフェースを含んでもよい。この場合、出力部5は、電話回線やインターネット等の情報伝達手段を介して、センタ装置(図示しない)に入力画像や人領域の情報を送出する。なお、センタ装置は、画像内の検出対象物を監視するセンタ等に設置されるホストコンピュータである。
以下、物体検出装置1における処理について、図6のフローチャートを参照して説明する。
ステップS10では、画像取得部2において画像を取得し、信号処理部3に画像が送信される。画像の取得タイミングは決まった時間間隔とする。
ステップS20では、検出窓領域の大きさ(幅と高さ)を決定する。検出窓領域の大きさを予め設定した複数の大きさに順次変更しつつ、各大きさの検出窓領域で画像全体を走査する。また、本実施の形態では検出窓領域は矩形としたので大きさとして幅と高さのみを決定すればよいが、検出窓領域は任意の形状であってよく、その場合には形状と大きさを決定する。この処理は検出窓領域選択手段30にて行われる。
ステップS30からステップS50の処理は、ステップS20で設定した検出窓領域の大きさで画像全体を走査し終わるまで繰り返す。
ステップS30では、検出窓領域の位置を決定する。この処理は検出窓制御手段32で行う。この処理は、図7に示すフローチャートに沿って行われる。なお、検出窓領域の左上の座標を開始点と呼び、決定すべき検出窓領域の開始点を(SX,SY)、前回の検出窓領域の開始点を(BX,BY)とする。
図7を参照し、ステップS301では、検出窓領域の大きさが変更されたか否かの判定を行う。検出窓領域の大きさが変更された直後の場合は、ステップS305において検出窓領域の開始点(SX,SY)を(0,0)に設定してステップS40に移行する。検出窓領域の大きさ変更後、初めての処理でない場合にはステップS302へ移行する。
ステップS302では、前回の検出窓領域の開始点(BX,BY)を読み出す。ステップS303では、ステップS302で読み出した前回の検出窓領域の開始点(BX,BY)から画像の右端まで走査したか否かを判定する。前記の検出窓領域で画像の右端まで走査が終了した場合、すなわち検出窓領域の右端BX+W(但し、Wは検出窓領域の幅)が画像の右端に一致した場合にはステップS306において検出窓領域の開始点を(SX,SY)=(0,BY+q)と設定し、ステップS40へ移行する。ただし、qは予め定めた定数とする。例えば、入力画像が幅320ピクセル、高さ240ピクセルの場合にはq=4ピクセルに設定する。右端まで走査していない場合にはステップS304に移行する。
ステップS304では、X方向に検出窓領域をpピクセルずらし、Y方向にはずらさないように検出窓領域の開始点(SX,SY)を決定する。すなわち、検出窓領域の開始点(SX,SY)=(BX+p,BY)とする。ただし、pは予め定めた定数とする。例えば、入力画像が幅320ピクセル、高さ240ピクセルの場合にはp=4ピクセルに設定する。その後、ステップS40(図6)に移行する。
ステップS40では、ステップS30にて設定された検出窓領域内の画像がどれだけ人に似ているかを示す類似度を求める。これは、図3に示したカスケード型識別器320及び学習識別器330の識別処理である。識別処理について図8のフローチャートを用いて説明する。
ステップS401では、現在の検出窓領域からHOG特徴量を計算する。ただし、この処理はステップS10とステップS20との間で、入力画像の各ピクセルのエッジの強度と角度を計算し、エッジの角度毎のインテグラル画像を作成しておくことでより高速に計算することが可能になる。
ステップS402からステップS405がカスケード型識別器320の処理である。ステップS402では、使用段数44の値が表す段数分の強識別器を調査し終わったか否かの判定を行う。使用段数44の段数分の強識別器で調査し終わった場合はステップS406に移行し、終わっていない場合にはステップS403に移行し、次の強識別器での調査を行う。ステップS403では、検出窓領域内の画像が人に似ているか否かを判定するための類似度を計算する。
ステップS404では、ステップS403において計算した類似度を判定した強識別器の番号と共に一時的な記憶領域に記憶する。これはステップS407における学習識別器330での類似度計算やステップS50の更新処理にて用いられる。
ステップS405では、ステップS403において計算した類似度が予め設定した閾値より大きいか否かを判定する。閾値より大きい場合にはステップS402に移行し、閾値以下の場合には、後述する学習識別器330の類似度をステップS501の閾値以下として記憶させ、ステップS50に移行する。
ステップS406からS408が学習識別器330の処理である。ステップS406では、カスケード型識別器320の判定段数までの強識別器の類似度ヒストグラム42の中で、更新回数が基準値以上である「人以外」の類似度ヒストグラム42を抽出する。これは、更新回数が少ない類似度ヒストグラム42を使用すると、学習識別器330で算出される類似度の信頼性が低くなるためである。そこで、基準値以上更新されている類似度ヒストグラム42と、それに対応するステップS404で記憶された強識別器の類似度を用いて学習識別器330での類似度を算出する。
ステップS407では、学習識別器330にて類似度を計算する。類似度の計算は数式(1)のP(人|S)を用いる。ステップS408では、ステップS407で算出された類似度を検出窓領域の大きさ(幅と高さ)と中心座標とに関連付けて判定情報履歴40として記憶部4に記憶し、ステップS50へ移行する。
ステップS50では、類似度ヒストグラム42及び使用段数44の更新処理を行う。これは識別器更新手段37にてなされる。更新処理は、図9のフローチャートに沿って行われる。ステップS501からステップS502までが類似度ヒストグラム42の更新処理であり、ステップS504以降が使用段数44の更新処理である。なお、本実施の形態では、類似度ヒストグラム42の更新処理において、「人以外」の類似度ヒストグラム42を更新し、「人」の類似度ヒストグラム42は更新しない。
ステップS501では、ステップS407にて学習識別器330で算出された類似度が閾値より大きい場合は「人」である可能性が高いので類似度ヒストグラム42の更新処理は行わず、ステップS508へ移行する。
ステップS502では、カスケード型識別器320に含まれる各強識別器に対応する「人以外」の類似度ヒストグラム42を図8のステップS404にて設定した類似度にて更新する。したがって、今回の判定に使用した強識別器に対応する類似度ヒストグラム42のみが更新される。更新方法は、上述の識別器更新手段332の説明の通りである。更新処理後、ステップS504へ移行する。
ステップS504において、現在設定されている使用段数44に対応する強識別器が連続して未使用である回数(以下、「連続未使用回数」と呼ぶ)のチェックを行う。連続未使用回数が予め設定された閾値Tun回より大きい場合は、ステップS509において使用段数44の設定値を1だけ減少させる。閾値Tun以下の場合、ステップS505へ移行する。なお、本実施の形態では、現在設定されている使用段数44に対応する強識別器が未使用である連続回数に基づき「1」だけ使用段数44を減少させているが、現在設定されている使用段数44までの各段における強識別器個々の未使用回数が閾値Tun回より大きい強識別器の数だけ使用段数44の設定値を減少させてもよい。
ステップS505において、判定回数が閾値Tjc回より大きく、かつ不一致回数が閾値Terより大きく、かつ現在の使用段数44の値が予め記憶部4に記憶された強識別器の最大番号でない場合は、ステップS506において使用段数44の設定値を1だけ増加させる。ここで、判定回数は、使用段数44が更新されてからカスケード型識別器320で判定処理を行った回数を表す。また、不一致回数は、カスケード型識別器320の判定結果と学習識別器330の判定結果とが不一致である回数である。
不一致回数は、例えば、使用段数44が更新されてからカスケード型識別器320で行われた判定処理のうち、以下の[例2]に示す基準で「不一致」とされた回数であってよい。
[例2]
・カスケード型識別器320で「人以外」と判定
→ 一致(本実施の形態では、カスケード型識別器320で「人以外」と判定した場合、学習識別器330で判定は行わないが、この場合は一致したとする。)
・カスケード型識別器320で「人」と判定かつ学習識別器330で「人」と判定
→ 一致
・カスケード型識別器320で「人」と判定かつ学習識別器330で「人以外」と判定
→ 不一致
なお、連続未使用回数、判定回数、及び不一致回数の各値は、記憶部4に記憶され、識別器更新手段37は、記憶部4を参照して各値の読み出し及び変更(後述)を行う。ステップS505において条件が満たされない場合、ステップS508へ移行する。
ステップS507では、ステップS506またはステップS509において使用段数44の値が更新された後、判定回数、連続未使用回数及び不一致回数をそれぞれ0にセットする初期化を行い、ステップS60へ移行する。
ステップS508は、使用段数44の値の更新がない場合に行われる処理である。ステップS508では、判定回数を1増加させ、連続未使用回数については、判定段数と使用段数44とが一致すれば初期化(0にセット)し、そうでなければ1増加させる。また、今回のカスケード型識別器320と学習識別器330の判定結果が不一致であれば不一致回数を1増加させ、そうでなければ不一致回数の値を変更しない。ステップS508の後ステップS60へ移行する。
再び図6を参照し、ステップS60では、すべての大きさの検出窓領域について検出処理が終了したか否かを判定する。すべての大きさの検出窓領域について調査が終わった場合はステップS70に処理を移行させ、そうでない場合はステップS20に処理を戻す。
ステップS70では、ステップS50で求めた判定情報履歴40に記憶されている各検出窓領域の大きさ(幅と高さ)と中心座標及び学習識別器330の類似度から最終的に人が写っている位置を決定する。この処理は判定手段38でなされる。判定処理は、図10のフローチャートに沿って行われる。
ステップS701〜S702の処理はステップS50で求めた判定情報履歴40として記憶されているすべての検出窓領域について行う。ステップS701では、学習識別器330で求められた学習識別器330の類似度が閾値より大きいか否かを判定し、条件を満たす場合にはステップS702に移行し、そうでない場合には次の検出窓領域について判定を行う。ステップS702では、ステップS701で条件を満たした検出窓領域を人候補領域に追加する。
判定情報履歴40に記憶された情報に対してステップS701〜S702を繰り返すことで求められた人候補領域は、図2に示すように、人が写っている領域の近くに領域203,204のように複数抽出される場合がある。ステップS703〜S705では、複数の人候補領域から人領域を最終的に選択する。
ステップS703では、人候補領域として抽出された検出窓領域の大きさと中心座標を用いて、一定以上(例えば、検出窓領域の面積の半分以上)の領域が重なっている人候補領域をグループとして纏める。ステップS704では、ステップS703で作成されたグループ毎に人候補領域の中で学習識別器330の類似度が一番高い検出窓領域を人領域として選択する。ステップS705では、ステップS704で選択された検出窓領域を人領域とし、ステップS80に移行する。
ステップS80では、ステップS70において判定された人領域を基に、人領域が1つでもあれば、判定された人領域の検知窓情報を画像と共に異常信号として出力する。この処理は出力部5にてなされる。
監視カメラ設置時の初期設定の処理について以下に説明する。初期設定時には、監視カメラの撮像領域内に人がいないという仮定のもと、各強識別器に対応する「人以外」の類似度ヒストグラム42の登録及び使用段数44の初期値の登録を行う。初期設定処理は、監視カメラを設置してから予め定めた枚数の画像を処理して終了するものとする。
初期設定処理は、図6の検知処理時のフローチャートにおいてステップS70及びS80を除き、ステップS40及びステップS50を若干変更した処理となる。また、ステップS40及びS50の処理は、相違点のみを説明する。
ステップS40では、図8においてステップS401からS405までの処理を行い、ステップS402の判定結果がYESである場合はステップS406〜S408の処理を行わず、ステップS50へ移行する。なお、初期設定時には使用段数44が決まっていないため、ステップS402では、予め記憶部4に記憶された使用可能な強識別器の個数の最大値(すなわち、強識別器の最大番号)を使用段数として用いて判定処理を行う。
初期設定時の識別器更新処理(ステップS50)について、図11を用いて説明する。
ステップS551において、ステップS40において得られた判定段数までの強識別器の類似度を用いて、対応する強識別器の「人以外」の類似度ヒストグラム42を更新する。更新処理後、ステップS552へ移行する。
ステップS552では、今回の処理がカスケード型識別器320における初めての判定処理であるか否かのチェックを行い、初めての判定処理であれば、ステップS554において、今回の判定段数を使用段数44として記憶部4に記憶させる。初めての判定ではない場合はステップS553へ移行する。
ステップS553で、今回の判定段数が記憶部4に記憶された使用段数44の値より大きければ、ステップS554において今回の判定段数を使用段数44として記憶部4に記憶させる。今回の判定段数が記憶された使用段数44の値以下の場合、処理はステップS60に移行する。
ステップS552〜S554の処理により、初期設定時にカスケード型識別器320で使用された強識別器の段数の最大値が使用段数44の初期値として設定される。
以上で説明した実施の形態では、物体検出装置1において、カスケード型識別器320の判定結果と学習識別器330の判定結果とが不一致であった回数に基づいてカスケード型識別器320の使用段数44の値を増加させる。他の実施の形態では、物体検出装置1において、上述の学習識別器330以外の識別器を、カスケード型識別器320の他の第二の識別器として備えていてもよい。例えば、第二の識別器として、カスケード型識別器320及び学習識別器330と異なるアルゴリズムで画像中の検出対象物を検出する識別器を設け、カスケード型識別器320による識別処理(図8のステップS401〜S405)及び第二の識別器による検出対象物の検出処理を行う。そして、カスケード型識別器320の判定結果と第二の識別器の判定結果とが不一致であった回数に基づいて使用段数44の値を増加させるようにする。なお、この実施の形態においても、カスケード型識別器320における連続未使用回数が予め設定された閾値を超えた場合に使用段数44の値を減少させる処理は、学習識別器330を用いる上記の実施の形態と同様に行うことができる。
また、上述の実施の形態では、物体検出装置1の各部の機能を1つのコンピュータで実現する態様を説明したがこれに限定されるものではない。物体検出装置1の各部の機能は一般的なコンピュータをプログラムにより制御することによって実現できるものであり、これらの装置の各機能を適宜組み合わせて1つのコンピュータで処理させてもよいし、各機能をネットワーク等で接続された複数のコンピュータで分散処理させてもよい。