本発明の実施の形態における物体検出装置1は、図1に示すように、画像取得部2、信号処理部3、記憶部4及び出力部5を含んで構成される。物体検出装置1は、所定の監視空間を撮像した画像を取得し、画像内に撮像された人や物等の検出対象物を検出する。画像取得部2、信号処理部3、記憶部4及び出力部5は互いに情報伝達可能に接続される。
なお、本実施の形態では、画像内に写った人を検出対象物とする例について説明する。ただし、これに限定されるものではなく、流通下に置かれる商品等の物品、通行する車等を検出する場合等にも適用することができる。
画像取得部2は、CCD素子やC−MOS素子等の撮像素子、光学系部品、アナログ/デジタル変換器等を含んで構成されるカメラを含む。また、画像取得部2は、インターネットのネットワークを介して画像を取得するものであってもよい。画像取得部2は、撮像した画像を入力画像200として信号処理部3へ送信する。画像を取得する間隔は一定の時間間隔でなくてもよい。また、画像取得部2は、固定した場所に設置されていてもよいし、移動可能に設置されていてもよい。
画像は、例えば、幅320ピクセル、高さ240ピクセル、各ピクセルがR(赤)、G(緑)、B(青)をそれぞれ256階調で表現したカラー画像である。
信号処理部3は、CPU、DSP、MCU、IC等の演算回路を含んで構成される。信号処理部3は、画像取得部2、記憶部4および出力部5と情報伝達可能に接続される。信号処理部3は、検出窓領域選択手段30、走査手段31、識別器32、人物判定手段33、人物重なり候補領域選定手段34、オクルージョン判定手段35等の各手段での処理を記述したプログラムを記憶部4から読み出して実行することによりコンピュータを各手段として機能させる。
図2を参照し、信号処理部3は、入力画像200から検出対象物を検出する。説明の都合上、入力画像200の左上を原点X=0,Y=0とし、横方向にX軸、縦方向にY軸とし、X軸は右方向、Y軸は下方向に正に増加するものとする。入力画像200には、領域203,204の位置に検出対象物(人)が写っており、矩形201,202は検出窓領域を示している。
物体検出装置1は、検出窓領域を少しずつずらしながら走査し、検出窓領域に人が写っている否かを判定する。矢印は、検出窓領域をずらす際の左上の座標を示すものであり、検出窓領域は入力画像200全体を漏れなく探索するように走査する。領域203,204付近にある矩形は、検出処理の結果、人であると判定された検出窓領域(人候補領域)を示す。人が写っている画像領域付近では、人であると判定される検出窓領域が複数抽出される場合があるが、検出窓領域を纏める処理を行うことで最終的な検出窓領域(図2中の太線:人領域)を得る。
検出窓領域選択手段30は、検出窓領域の幅と高さを決定する。画像内に様々な大きさで写る人に対応するため検出窓領域の幅と高さを変更しながら、検出窓領域を走査して画像内に人が写っているか否かを判定する。なお、検出窓領域の幅と高さは、検出対象物の画像上での大きさを考慮して、予め記憶部4に1または複数を記憶している。ただし、予め幅と高さを記憶していなくとも、所定の規則に従って決定してもよい。
走査手段31は、検出窓領域をずらす間隔(走査間隔)を決定し、決定した走査間隔に基づいて検出窓領域をずらす。
識別器32は、検出窓領域内の画像がどれだけ人に似ているか、類似度を計算する。識別器32は、多数の「人」の画像データ、「人以外」の画像データを用いて予め学習させる。
類似度は、図3に示す処理手順で計算される。図3のカスケード型識別器320は、図1の識別器32の具体例である。
まず、入力画像200から切り出された検出窓領域内の画像310が、カスケード型識別器320に入力される。カスケード型識別器320は、強識別器321,322,323のような複数の強識別器が直列に並んだ識別器である(ここではN個の強識別器が直列に並んでいる例を示す)。個々の強識別器は、ヒストグラム・オブ・オリエンティッド・グラディエント(HOG:Histograms of Oriented Gradients)特徴を用いてアダブースト(AdaBoost)で予め学習させる。すなわち、検出対象物である人の様々な画像と人が写っていない画像を大量に用意し、各画像に対して検出対象物の画像であるか否か正解付けを行っておき、これらのデータを用いて両者が識別できるようにアダブーストで学習させる。類似度を計算するときは、各強識別器は、入力された画像からHOG特徴を計算し、アダブーストで選択された特徴量より類似度を計算する。
強識別器321〜323はあらかじめ計算する順序が決まっており、最初に計算する強識別器321が1、次に計算する強識別器322が2・・・Nのように各強識別器には計算する順番と同じ番号を割り当てる。
各強識別器321〜323は、検出窓領域として切り出された画像を入力とし、類似度を計算する。最先の強識別器321以外の強識別器322,323等は、前段で計算された類似度が閾値より大きい場合のみ(図中Tの矢印)、類似度を計算する。前段で計算された類似度が閾値以下の場合(図中Fの矢印)、強識別器322,323等は類似度の計算を行わない。閾値は、例えば0に設定し、0より大きければ人に似ており、0以下であれば人に似ていないと判定する。以下、類似度を算出した強識別器の個数、すなわち、最後に類似度を算出した強識別器の番号を判定段数という。類似度と判定段数は、検出窓領域の大きさ(幅、高さ)と中心座標と共に、記憶部4に判定情報履歴40として記憶される。
再び図1を参照し、本発明の第1抽出手段の一態様である人物判定手段33は、記憶部4に記憶されている判定情報履歴40を用いて、画像中のどこに人が写っているかを決定する。例えば、判定情報履歴40に含まれるデータの中で、判定段数が最後の強識別器の番号と同じでありかつ類似度が閾値以上(例えば、閾値は0に設定される)の検出窓領域を人候補領域として抽出する。人候補領域がない場合は、入力画像中に人領域はないということで終了する。
人候補領域があった場合、人候補領域を纏める処理を行う。例えば、検出窓領域の大きさと中心座標を用いて、一定以上(例えば、検出窓領域の面積の半分以上)の領域が重なっている人候補領域を纏める。纏めた人候補領域の中で類似度が一番高い検出窓領域を人領域(図2の太線領域)として選択する。纏めた領域毎に選択された検出窓領域を人領域とし、選択された検出窓領域の情報を人物重なり候補領域選定手段34に対して出力する。また、この人領域の検出窓領域の情報および画像を出力部5に対して出力する。人候補領域を纏める処理の他の例では、まず類似度が最も大きい人候補領域を選択し、その人候補領域の中心座標から一定の範囲内(例えば幅10ピクセル以内、高さ10ピクセル以内)の領域に他の人候補領域が存在するか否かを調べる。他の人候補領域が存在する場合は、当該他の人候補領域を候補から除外する。この処理を類似度が高い順にすべての人候補領域に対して行った時点で残っている人候補領域を人領域とし、この人領域の情報を人物重なり候補領域選定手段34に対して出力する。
人物重なり候補領域選定手段34は、人物判定手段33が抽出した人領域の周辺の入力画像中の領域を、オクルージョンが発生している可能性がある領域(人物重なり候補領域)として選定する。
図4を参照し、人物重なり候補領域の選定処理を説明する。図4の入力画像200には、人物401,403,405,407が写っている。人物401および人物405は、その全身が写っていることから、人物判定手段33により、各人物401,405を含む各領域402,408が人領域として抽出されたとする。人物重なり候補領域選定手段34は、例えば、人領域402の周辺の人物重なり候補領域として、人領域402を含む矩形404を選定する。ここで、人領域402の左上座標(x1,y1)、幅W1、高さH1とし、矩形404の左下座標(x1−W1/2,y1+H1)、右上座標(x1+3×W1/2,y1−H1)である。さらに、人領域408の周辺の人物重なり候補領域として、例えば人領域408を含む矩形406を選定する。ここで、人領域408の左上座標(x2,y2)、幅W2、高さH2とし、矩形406の左下座標(x2−W2/2,y2+H2)、右上座標(x2+3×W2/2,y2−H2)である。このように選定された人物重なり候補領域404,406に対し、次に説明するオクルージョン判定手段35において、人物判定手段33よりも人領域を検出しやすい条件で人領域の判定が再び行われる。
図1の説明に戻り、本発明の第2抽出手段の一態様であるオクルージョン判定手段35は、人物重なり候補領域について、人物判定手段33よりも人領域を検出しやすい条件で人領域の判定を行う。例えば、オクルージョン判定手段35は、記憶部4の判定情報履歴40から、人物重なり候補領域との間に重複部分を有する検出窓領域のデータを読み出し、読み出したデータの中で、判定段数が閾値以上であり、かつ類似度が閾値以上の検出窓領域を人候補領域とする。このとき、判定段数の閾値および類似度の閾値として、人物判定手段33で用いられる各閾値よりも小さい値を用いる。このことから、オクルージョン判定手段35における人領域の検出の条件は、人物判定手段33における人領域の検出の条件よりも人領域を検出しやすい条件であると言える。人候補領域がない場合は、入力された人物重なり候補領域中にオクルージョンの発生している人領域はないということで終了する。
オクルージョン判定手段35で用いられる判定段数の閾値および類似度の閾値は、検出窓領域と人物判定手段33で検出された人領域との重複部分の検出窓領域に対する割合に応じて異なる値にしてもよい。例えば、重複部分の面積を計算し、検出窓領域の面積に対する重複部分の面積の割合が大きいほど、各閾値をより小さくし(条件を緩める)、重複部分の面積の割合が小さいほど、各閾値をより大きく設定する(条件を厳しくする)。例えば、人物判定手段33における判定段数の閾値が13、類似度の閾値が0である場合に、重複部分の面積の割合が1/5以下なら、判定段数の閾値を12、類似度の閾値を−1.0とし、重複部分の面積の割合が1/5〜2/5の間なら、判定段数の閾値を11、類似度の閾値を−1.2とし、割合が2/5以上なら判定段数の閾値を10、類似度の閾値を−1.5とすることが考えられる。
オクルージョン判定手段35で人候補領域が検出された場合、検出窓領域の中心座標が近いものを纏める処理を行う。この処理の手順は、人物判定手段33に関して既に説明した人候補領域を纏める処理と同様であってよい。纏めた人候補領域の中で、人物判定手段33で判定された人領域との重複部分が一定範囲以内である人候補領域を、オクルージョンの発生している人領域とする。この人領域の検出窓領域の情報および画像を出力部5に対して出力する。
記憶部4は、ROM、RAM等のメモリ装置等で構成され、信号処理部3と接続される。記憶部4は、各種プログラム及び各種データを記憶することができ、信号処理部3からの要求に応じてこれらの情報を読み書きする。記憶部4は、信号処理部3の各手段の処理の手順を記述したプログラムを記憶する。記憶部4は、判定情報履歴40として、人候補領域である検出窓領域の大きさ(幅、高さ)と中心座標、判定段数、および類似度を互いに関連づけて記憶する。
出力部5は、報知音を出力する音響出力手段や入力画像を表示する表示手段を含んで構成することができる。例えば、人物判定手段33やオクルージョン判定手段35で人領域が検出された場合に、スピーカー、ブザー等の音響出力手段で警報を鳴らしたり、ディスプレイ等の外部表示装置に入力画像を表示したりする。また、出力部5は、コンピュータをネットワークや電話回線に接続するためのインターフェースを含んでもよい。この場合、出力部5は、電話回線やインターネット等の情報伝達手段を介して、センタ装置(図示しない)に入力画像や人領域の情報を送出する。なお、センタ装置は、画像内の検出対象物を監視するセンタ等に設置されるホストコンピュータである。
以下、物体検出装置1の動作の例を説明する。
図5は、物体検出装置1の処理手順の例を示すフローチャートである。
ステップS10では、画像取得部2において画像を取得し、取得された画像が信号処理部3に入力される。画像の取得タイミングは決まった時間間隔とする。
ステップS20では、入力画像の各領域に人がいる可能性を計算する処理、すなわち、人物識別処理が行なわれる。人物識別処理の詳細について図6を用いて説明する。
ステップS210で、検出窓領域の大きさ(幅と高さ)を決定する。検出窓領域の大きさを予め設定した複数の大きさに順次変更しつつ、各大きさの検出窓領域で画像全体を走査する。また、本実施の形態では検出窓領域は矩形としたので大きさとして幅と高さのみを決定すればよいが、検出窓領域は任意の形状であってよく、その場合には形状と大きさを決定する。この処理は検出窓領域選択手段30にて行われる。
ステップS220からステップS230の処理は、ステップS210で設定した検出窓領域の大きさで画像全体を走査し終わるまで繰り返す。
ステップS220において、検出窓領域の位置を決定する。この処理は走査手段31で行われ、図7のフローチャートを用いて説明する。なお、ここでは検出窓領域の左上の座標を開始点と呼び、決定すべき検出窓領域の開始点を(SX,SY)、前回の検出窓領域の開始点を(BX,BY)とする。
ステップS2201において、検出窓領域の大きさが変更されたかどうかの判定を行う。検出窓領域の大きさが変更された直後の場合には、ステップS2205において検出窓領域の開始点(SX,SY)を(0,0)に設定してステップS230に移行する。検出窓領域の大きさ変更後、初めての判定処理ではない場合にはステップS2202へ移行する。
ステップS2202では、前回の検出窓領域の開始点(BX,BY)を読み出す。ステップS2203では、ステップS2202で読み出した前回の検出窓領域の開始点(BX,BY)から、画像の右端まで調査したか否かを判定する。前回の検出窓領域で画像の右端まで走査が終了した場合、すなわち検出窓領域の右端BX+W(ただし、Wは検出窓領域の幅)が画像の右端に一致した場合には、ステップS2206において検出窓領域の開始点を(SX,SY)=(0,BY+q)と設定し、ステップS230に移行する。ただし、qは予め定めた定数とする。例えば、入力画像が幅320ピクセル、高さ240ピクセルの場合にはq=4ピクセルに設定する。右端まで走査していない場合にはステップS2204に移行する。
ステップS2204において、X方向に検出窓領域をpピクセルずらし、Y方向にはずらさないように検出窓領域の開始点(SX,SY)を決定する。すなわち、検出窓領域の開始点(SX,SY)=(BX+p,BY)とする。ただし、pは予め定めた定数とする。例えば、入力画像が幅320ピクセル、高さ240ピクセルの場合にはp=4ピクセルに設定する。その後、処理は図6のステップS230に移行する。
ステップS230では、ステップS220で設定された検出窓領域内の画像がどれだけ人に似ているかを示す類似度を計算する。これは、図3に示すカスケード型識別器320の処理である。識別処理の手順について図8のフローチャートを用いて説明する。
ステップS2301では、現在の検出窓領域からHOG特徴量を計算する。ただし、この処理はステップS10(図5)とステップS210(図6)との間で、入力画像の各ピクセルのエッジの強度と角度を計算し、エッジの角度ごとのインテグラル画像を作成しておくことで高速に計算することが可能になる。
ステップS2302では、N個の強識別器321,322,・・・のすべてを調査し終わったか否かの判定を行う。すべての強識別器を調査し終わった場合はステップS2306に移行し、終わっていない場合にはステップS2303に移行し、次の強識別器での調査を行う。ステップS2303では、検出窓領域内の画像が人に似ているか否かを判定するための類似度を計算する。
ステップS2304では、ステップS2303において計算した類似度を判定した強識別器の番号と共に一時的な記憶領域に記憶する。
ステップS2305では、ステップS2303において計算した類似度が閾値(通常、閾値は0に設定される)より大きいか否かを判定する。閾値より大きい場合はステップS2302に移行し、閾値以下の場合はステップS2306に移行する。
ステップS2306では、現在の検出窓領域の大きさ(幅と高さ)および中心座標と、現時点で一時的に記憶されている類似度および強識別器の番号(すなわち判定段数)と、を互いに関連づけて判定情報履歴40として記憶部4に記憶させる。これは、後述の人物判定処理(ステップS30)およびオクルージョン判定処理(ステップS50)等で用いられる。
ステップS2306の後、次の検出窓領域に対しステップS220,S230(図6)の処理を行う。
再び図6を参照し、ステップS240では、すべての大きさの検出窓領域について検出処理が終了したか否かを判定する。すべての大きさの検出窓領域について調査が終わった場合はステップS30(図5)に移行し、終わっていない場合はステップS210に処理を戻す。
再び図5を参照し、ステップS30では、ステップS20で求めて判定情報履歴40として記憶部4に記憶されている各検出窓領域の大きさ(幅、高さ)、中心座標、類似度、および判定段数から最終的に人が写っている位置を決定する。この処理は人物判定手段33で行われ、図9のフローチャートを用いて説明する。
ステップS301〜ステップS302の処理は、ステップS20で求めて判定情報履歴40として記憶されているすべての検出窓領域について行われる。判定情報履歴40は、上述のとおり、各検出窓領域のデータとして、検出窓領域の大きさ、中心座標、類似度、および判定段数を含む。
ステップS301では、検出窓領域を人候補領域とする条件を検出窓領域のデータが満たすか否かを判定する。本例では、「判定段数が最後の強識別器の番号Nであり、かつ、類似度が閾値より大きい」との条件を満たすか否かを判定する。「判定段数がNである」とは、当該検出窓領域について最後の強識別器で類似度が計算されたことを意味する。例えば、N=13に設定される。また、類似度の閾値は、通常は0に設定される。
ステップS301の条件を満たす場合はステップS302に移行し、条件を満たさない場合は未処理の検出窓領域についてステップS301の判定を行う。ステップS302では、ステップS301で条件を満たした検出窓領域を人候補領域に追加する。
判定情報履歴40に記憶された情報に対してステップS301〜ステップS302を繰り返すことで求めた人候補領域は、図2に示すように、人が写っている近くに複数抽出される場合がある。ステップS303〜ステップS305では、複数の人候補領域から人領域を最終的に選択する。
ステップS303では、人候補領域として抽出された検出窓領域の大きさと中心座標を用いて、一定以上(例えば、検出窓領域の面積の半分以上)の領域が重なっている人候補領域をグループとして纏める。ステップS304では、ステップS303で作成されたグループ毎に人候補領域の中で類似度が一番高い検出窓領域を人領域として選択する。ステップS305では、ステップS304で選択された検出窓領域を人領域とし、ステップS40(図5)に移行する。
再び図5を参照し、ステップS30で決定した各人領域に対し、ステップS40〜ステップS50の処理が行われる(ステップS35でYES)。ステップS30で決定された人領域が存在しない場合は(ステップS35でNO)、その旨を出力し(ステップS60)、処理を終了する。ステップS35でNOの場合、出力処理は省略してもよい。
ステップS40では、ステップS30で決定した各人領域に基づいて、オクルージョンが発生している可能性がある領域(人物重なり候補領域)を選定する。例えば、人領域の開始点を基準に予め定められた大きさの範囲の領域を人物重なり候補領域とする。この処理は人物重なり候補領域選定手段34で行われる。この処理の具体例は、図4を参照して既に説明したとおりである。
ステップS50では、ステップS40で選定した人物重なり候補領域に対して人物判定処理を行うことで、オクルージョンが発生している人の有無を判定する。この処理は、オクルージョン判定手段35によって、人物判定手段33の人物判定処理(ステップS30)よりも検出窓領域を人候補領域と判定しやすい条件を用いて行われる。この処理は、例えば図10に示すフローチャートに従って行われる。
図10を参照し、判定情報履歴40に含まれるデータのうち、中心座標が人物重なり候補領域に含まれるすべての検出窓領域について、ステップS501〜ステップS503の処理が行われる。
ステップS501では、現在の処理対象の検出窓領域と、現在の処理対象の人物重なり候補領域中のステップS30で判定された人領域と、の重複部分の検出窓領域に対する割合を求める。例えば、現在の検出窓領域の大きさおよび中心座標と、人領域である検出窓領域の大きさおよび中心座標と、を用いて重複部分の面積を求め、求めた面積の現在の検出窓領域の面積に対する割合を求めればよい。
ステップS502では、検出窓領域を人候補領域とする条件を現在の検出窓領域のデータが満たすか否かを判定する。この条件は、人物判定処理(ステップS30)のステップS301で用いられる人候補領域の判定条件よりも緩やかな条件、つまり、人候補領域と判定しやすい条件に予め設定される。また、この条件は、検出窓領域と人領域との間の重複部分の検出窓領域に対する割合を用いて定義され、この条件の評価にはステップS501で求めた割合が用いられる。本例では、ステップS502の条件は、「判定段数が閾値θ1より大きく、かつ、類似度が閾値θ2より大きい」に設定される。ただし、閾値θ1,θ2は、人物判定手段33がステップS301で用いる判定段数および類似度の各閾値よりも小さい値に設定される。よって、本例では、判定段数の閾値θ1は、カスケード型識別器320における最後の強識別器の番号Nよりも小さい値に設定され、類似度の閾値θ2は、0よりも小さい値に設定される。閾値θ1,θ2は、さらに、検出窓領域と人領域との間の重複部分の検出窓領域に対する割合が大きい程、人候補領域を検出しやすい値(ここでは、より小さい値)を用いるように設定される。閾値θ1,θ2の具体例として、人物判定手段33によるステップS301の判定における判定段数の閾値がN=13であり、類似度の閾値が0である場合、ステップS501で求めた重複部分の割合が1/5以下なら閾値θ1=12,θ2=−1.0、割合が1/5〜2/5なら閾値θ1=11,θ2=−1.2、割合が2/5以上なら閾値θ1=10,θ2=−1.5としてもよい。
ステップS502の条件を満たす場合はステップS503に移行し、条件を満たさない場合はステップS501に戻り、未処理の検出窓領域についてステップS501以降の処理を行う。ステップS503では、ステップS502で条件を満たした検出窓領域を人候補領域に追加する。
ステップS501〜ステップS503の処理では、上述のようにステップS502で人候補領域の判定条件として人物判定処理(ステップS30)よりも緩やかな条件を用いるため、人物判定処理で検出された人領域の人物と重なり合って一部が隠れている人物を含む検出窓領域も人候補領域として検出され得る。また、ステップS501〜ステップS503の処理は、入力画像の全体ではなく、人物判定処理で検出済みの人領域の周辺で選定された人物重なり候補領域に限定して行われることから、例えば入力画像の全体に対して緩やかな判定条件を用いて検出を行う技術と比較して、誤検出の可能性を低減できる。
ステップS40で設定した人物重なり領域に中心座標がある検出窓領域に対してステップS501〜ステップS503を繰り返すことで求めた人候補領域は、人が写っている近くに複数抽出される場合がある。ステップS504〜ステップS508では、複数の人候補領域から人領域を最終的に決定する。
ステップS504では、人候補領域として抽出された検出窓領域の大きさと中心座標を用いて、一定以上(例えば、検出窓領域の面積の半分以上)の領域が重なっている人候補領域をグループとして纏める。ステップS505では、ステップS504で作成されたグループ毎に人候補領域の中で類似度が一番高い検出窓領域を選択する。
ステップS505で各グループについて選択された検出窓領域のそれぞれについて、ステップS506〜ステップS508の処理を行う。
ステップS506では、ステップS505で選択された検出窓領域と現在の人物重なり候補領域中のステップS30で判定された人領域との重複部分の当該検出窓領域に対する割合を計算する。
ステップS507では、ステップS506で求めた割合が下限値Lより大きく、かつ上限値Uより小さいか否かを判定する。下限値Lおよび上限値Uは、予め設定して記憶部4に記憶させておけばよい。下限値Lは、例えば0.05に設定され、上限値Uは、例えば0.5に設定される。ステップS507の条件を満たす場合、選択された検出窓領域を、オクルージョンが発生している人の領域であると判定し、ステップS508で当該検出窓領域を人領域とする。ステップS507の条件を満たさない場合、オクルージョンが発生している人の領域でないと判定し、未処理のグループについて選択された検出窓領域に対しステップS506以降の処理を行う。
ステップS507の判定条件は、選択された検出窓領域がオクルージョンの発生している人の領域であるか否かを判定する条件であると言える。各グループについて選択された検出窓領域が、ステップS30で検出済みの人領域との間に下限値L以下の割合の重複部分を有する場合、当該検出窓領域もまた、ステップS30で人領域として検出済みである可能性が高い。また、選択された検出窓領域が、ステップS30で検出済みの人領域との間に上限値U以上の割合の重複部分を有する場合、当該検出窓領域の人は、当該人領域の人と同一人物である可能性が高い。以上より、ステップS507では、重複部分の割合が下限値L〜上限値Uの範囲外の値である検出窓領域について、オクルージョンの発生している人領域でないと判定する。
ステップS505で選択された各グループの検出窓領域に対するステップS506〜S508の処理が終了すると、処理は図5のステップS60に移行する。
再び図5を参照し、ステップS60では、ステップS50で人領域と判定された検出窓領域が1以上存在する場合に、判定情報履歴40中の当該検出窓領域の情報を当該検出窓領域の画像と共に異常信号としてセンタ装置へ送出する。この処理は出力部5で行われる。
以下、本発明の実施の形態の変形例を説明する。
変形例では、上述した実施の形態の処理において、入力画像に変化があった領域を特定する背景差分処理や、入力画像中の人物の頭部の候補を検出する頭部候補検出処理をさらに行ってもよい。例えば、画像取得部2が固定カメラなどであり、検出対象物が写っていない場合の画像が固定されている場合、検出対象物が写っていないときの背景画像に対して変化のあった領域を背景差分処理により特定し、特定した領域に対してのみ、上述の人物判定処理などを行ってもよい。また例えば、頭部候補検出処理によって検出した人物の頭部の候補を基準として、人物重なり候補領域を選定するようにしてもよい。
背景差分処理および頭部候補検出処理を行う場合の物体検出装置1の構成例を図11に示す。図11において、図1の物体検出装置1と同様の構成要素には図1と同様の符号を付し、その詳細な説明を省略する。
図11の物体検出装置1は、信号処理部3において、図1と同様の各手段に加えて、背景差分抽出手段36および頭部候補検出手段37を備える。また、図11の物体検出装置1の記憶部4には、判定情報履歴40に加えて、背景画像42が記憶される。背景画像42は、例えばシステムの起動直後など、検出対象物が存在しないときに画像取得部2により取得された画像である。
背景差分抽出手段36は、入力画像200から、背景画像42との間の差分(背景差分)を抽出する。抽出した差分の領域の情報は、走査手段31、識別器32、および頭部候補検出手段37に対して出力される。背景差分抽出手段36は、例えば、システムの起動直後など、通行者が存在しないときに画像取得部2が取得した画像を背景画像42として記憶部4に記憶させておく。画像取得部2から新たな画像を受け取ると、受け取った画像と背景画像42との差分処理により背景画像42に存在しない像を背景差分として抽出する。
走査手段31は、背景差分の領域の少なくとも一部を検出窓領域が含むように検出窓領域の走査間隔を決定して検出窓領域をずらす。これにより、識別器32は、背景差分の領域の少なくとも一部を含む検出窓領域のみに対して識別処理を行うことになる。
頭部候補検出手段37は、背景差分の領域内で人体頭部の画像特徴である円形状を有する頭部領域を検出し、検出された頭部領域の情報を人物重なり候補領域選定手段34に出力する。頭部候補検出手段37は、例えば、入力画像からエッジ画像を生成し、エッジ画像において背景差分の領域に対応する部分から円を検出し、検出された円を頭部領域とする。円の検出はハフ変換により行えばよい。円の検出においては、検出漏れを防ぐため、事前の実験に基づき円の検出感度を高めに設定しておいてよい。この場合、検出される頭部領域には真の頭部以外にも丸みを帯びた部分が含まれることがある。なお、ハフ変換によらず、円パターンを用いたパターンマッチングによって円を検出してもよい。
図11の人物重なり候補領域選定手段34は、人物判定手段33で人がいると判定された人領域の情報に加えて、頭部候補検出手段37が検出した頭部領域の情報を用いて人物重なり候補領域を選定する。例えば、人物判定手段33が抽出した人領域の周辺に存在する頭部領域を特定し、特定した頭部領域の周辺の領域を人物重なり候補領域として選定する。
図12を参照し、図11の人物重なり候補領域選定手段34による人物重なり候補領域の選定の具体例を説明する。図12は、図4と同様の人物401,403,405,407が写っている入力画像200を表す。また、図12の入力画像200中に示す円は、頭部候補検出手段37が検出した頭部領域である。図12において太線の矩形402,408で示される領域は、それぞれ、図4と同様、人物判定手段33により抽出された人物401,405を含む人領域である。人物重なり候補領域選定手段34は、人領域402の周辺領域として矩形404を設定し、この矩形404の領域内に存在する頭部候補であって人領域402の外にある頭部候補を特定する。特定した頭部候補の周辺の領域409,410,411を人物重なり候補領域として選定する。同様に人領域408については、その周辺領域として矩形406を設定し、この矩形406の領域内に存在する頭部候補であって人領域408の外にある頭部候補を特定する。特定した頭部候補の周辺の領域412,413を人物重なり候補領域として選定する。特定した各頭部候補の周辺の領域の大きさは、例えば、関連する人領域の大きさと等しい大きさにしておく。あるいは、予め設定された大きさにしてもよい。以上のように頭部候補を用いて選定された人物重なり候補領域409,410,411,412,413に対し、オクルージョン判定手段35による処理が行われる。
図13は、図11に示す物体検出装置1の処理手順の例を示すフローチャートである。図13において、図5と同様の処理ステップには図5と同様の符号を付し、その詳細な説明を省略する。
図13を参照し、ステップS10の画像取得処理の後、背景差分抽出処理(ステップS13)および頭部候補検出処理(ステップS16)を行ってから、ステップS20の人物識別処理を行う。
ステップS13では、入力画像と背景画像42との差分処理により、背景画像42に存在しない像を抽出する。また、抽出した像を含む背景差分画像を2値化することで、入力画像のうち、背景画像42に存在しない画像を含む領域である背景差分領域を特定する。この処理は背景差分抽出手段36で行われる。
ステップS16では、背景差分領域から頭部候補を検出する。例えば、入力画像における背景差分領域内の輝度画像に対してSobel等のフィルタ処理を行うことでエッジ画像を生成する。このエッジ画像に対して、円を検出するハフ変換を行い、頭部候補を検出する。ここでは、真の頭部以外にも、肩など、丸みを帯びた部分が頭部候補として検出され得る。
ステップS20の人物識別処理では、すべての検出窓領域について識別器32による識別処理(図6のステップS230)を行う代わりに、背景差分領域の少なくとも一部を含む検出窓領域についてのみ識別処理を行えばよい。このため、例えば、検出窓領域の位置設定処理(ステップS220,図7)において、ステップS2204、ステップS2206、またはステップS2205の後、開始点(SX,SY)の検出窓領域が背景差分領域の少なくとも一部を含むか否かを判定し、含む場合にのみステップS230に進むようにすればよい。開始点(SX,SY)の検出窓領域が背景差分領域を含まない場合には、ステップS2203,S2204,S2206の処理により、さらに次の開始点を求めるようにする。
図13のステップS30は、図5および図9を参照して説明した人物判定処理と同様に行えばよい。ステップS30で人領域が決定された場合(ステップS35でYES)、図13では、図5のステップS40の代わりに、ステップS401〜S403の処理によって人物重なり候補領域を選定する。ステップS401〜S403は、人物重なり候補領域選定手段34で行われる。なお、ステップS30で人領域が検出されなければ(ステップS35でNO)、その旨を出力し(ステップS60)、処理を終了する。ステップS35でNOの場合、出力処理は省略してもよい。
ステップS30で抽出された人領域のそれぞれに対して、ステップS401〜S403およびステップS50の処理が行われる。
ステップS401では、各人領域の開始点の座標を基準に予め定められた大きさの範囲の領域を選定する。図12に示す領域404,406は、ステップS401で選定される領域の例である。
ステップS402では、ステップS401で選定した領域の範囲内にある頭部候補であって人領域の外にある頭部候補を選定する。例えば、ステップS16で検出された頭部候補の中心座標がステップS401で選定した領域内であって人領域の外にあれば、その頭部候補を選定すればよい。
ステップS402で選定された頭部候補のそれぞれに対して、ステップS403およびステップS50の処理が行われる。
ステップS403では、ステップS402で選定された頭部候補を含む領域を人物重なり候補領域として抽出する。本例では、当該頭部候補に対応するステップS401で選定された領域内の人領域と等しい大きさの領域を人物重なり候補領域として抽出する。例えば、図12に示す人物重なり候補領域409,410,411は、それぞれ、領域404内の人領域402と等しい大きさを有する。また、図12に示す人物重なり候補領域412,413は、それぞれ、領域406内の人領域408と等しい大きさを有する。
ステップS50では、ステップS403で抽出された人物重なり候補領域に対して、図5および図10を参照して説明したのと同様のオクルージョン判定処理を行う。
ステップS60は、図5のステップS60の出力処理と同様である。
なお、さらに他の変形例では、背景差分抽出処理および頭部候補検出処理のいずれか一方のみを行ってもよい。背景差分抽出処理だけを行う場合、物体検出装置1の処理手順は、図5のフローチャートにおいて、ステップS10とステップS20との間に背景差分抽出処理(図13のステップS13)を追加した手順となる。そして、ステップS20の人物識別処理において、上述のように背景差分抽出処理の結果を用いればよい。また、頭部候補検出処理だけを行う場合、物体検出装置1の処理手順は、図12のフローチャートにおいてステップS13を省略した手順となる。本変形例の場合、ステップS16の頭部候補検出処理において、背景差分領域を処理対象とする代わりに、入力画像の全体を処理対象とすればよい。また、ステップS20は、背景差分領域の情報を用いずに、図5〜図8を参照して説明した例と同様に行えばよい。
上述の実施の形態および変形例では、検出窓領域と人物判定手段33で検出された人領域との重複部分をマスクせずにそのまま処理に用いるため、オクルージョン判定手段35でも判定情報履歴40を用いているが、重複部分をマスクさせて、識別器で類似度を再計算させてもよい。例えば、類似度計算をする際に重複部分の特徴量をゼロにさせることで、重複部分のマスクを実現することができる。また、強識別器を構成する弱識別器の中で重複部分を処理する弱識別器の出力をゼロにし、すなわち、弱識別器の判定を行わないことで、重複部分のマスクを実現することができる。
また、上述の実施の形態および変形例では、入力画像中の検出対象物の検出において、カスケード型識別器320を用いるが、他の手法を用いて検出を行ってもよい。例えば、パターン認識、分類器、ニューラル・ネットワークなどの手法を用いることができる。いずれの手法を用いる場合も、人物判定手段33よりもオクルージョン判定手段35の方が検出対象物を検出しやすいように各手段の判定条件を設定しておけば、上述の実施の形態と同様の処理を実現できる。
上述の実施の形態では、物体検出装置1の各部の機能を1つのコンピュータで実現する態様を説明したがこれに限定されるものではない。物体検出装置1の各部の機能は一般的なコンピュータをプログラムにより制御することによって実現できるものであり、これらの装置の各機能を適宜組み合わせて1つのコンピュータで処理させてもよいし、各機能をネットワーク等で接続された複数のコンピュータで分散処理させてもよい。