<第1の実施の形態>
図1は、第1の実施の形態に係る人物追跡装置1の全体構造の概略図である。人物追跡装置1は、主として、CPU10と、メモリ11と、メモリ制御部12と、人物トラッキング部13と、動画入力部14と、処理制御部15と、顔検出部16と、顔特徴データベース(DB)17と、人物マッチング部18と、トラッキング結果出力部19とで構成される。
CPU10は、人物追跡装置1の全体の動作を統括制御する制御手段として機能するとともに、各種の演算処理を行う演算手段として機能する。
メモリ11は、CPU10が実行するプログラム及び制御に必要な各種データが格納されたROMと、プログラムの展開領域及びCPU10の演算作業用領域として利用されるとともに、画像の一時記憶領域として利用されるSDRAMとを含んでいる。メモリ11に記憶された情報は、メモリ制御部12を介して入出力される。
人物トラッキング部13は、顔検出部16等で検出された顔のリストを人物トラッキング結果として生成し、このリストに基づいて直前のフレームの顔との同一性判断を行い、同一の顔と判断された顔に同一の顔IDをつけることにより、顔同士のリンクをつける。人物トラッキング部13が行う処理については、後に詳述する。
動画入力部14は、デジタルカメラ、PC、携帯機器等の外部機器や記憶媒体に記憶されている動画を図示しないインターフェースを介して取得し、処理制御部15へ入力する。動画は、ビデオカメラから逐次的に入力されるものでもよいし、外部機器に保存されたファイルを取得するものでもよい。
処理制御部15は、入力された動画を1枚ずつのフレームに分離し、各フレームの画像を顔検出部16又は人物マッチング部18に入力する。処理制御部15は、1枚ずつのフレームに分離した各フレームの画像をメモリ11に出力する。
また、処理制御部15は、各フレームについて、顔検出部16で顔検出処理を行うか、人物マッチング部18で処理を行うかを決定する。これは、顔検出部16の処理は大きな演算量を消費するため、全てのフレームに対して顔検出部16で処理を行うとすると処理が間に合わない等の問題を生じるためである。そこで、処理制御部15は、顔検出部16と人物マッチング部18とに処理を振り分け、このような問題が発生しないようにする。
顔検出部16は、入力されたフレームから人の顔の形状に相当する顔候補領域を抽出し、その領域内の特徴量及び顔特徴DB17に予め記憶された特徴量を比較することにより画像内の顔領域を抽出する方法を用いて顔検出フルサーチ処理を行う。顔検出フルサーチ処理とは、入力されたフレームの「どの位置に」、「どの大きさの」、「どの向きの」、「どの傾きの」顔がいくつ存在するかをすべて探索して、検出する処理である。
図2に顔検出部16の処理の概略を示す。図2(a)に示すように予め設定した顔領域を検出するための最も大きな対象領域を、画面内で少しずつ移動させながら顔画像テンプレート(正面の顔のみでなく、様々な顔の向き(図3(a)参照)、顔の傾き(図3(b)参照)のテンプレートを用意する)との相関を調べる。そして、相関スコアが閾値を超えると、そのときの対象領域を顔領域として認定する。続いて、図2(b)に示すように対象領域を少し小さくし、再度顔画像テンプレートとの相関を調べる。これを検出したい最小の検出領域まで繰り返す。
人物マッチング部18は、直近のフレームに対して顔検出部16や人物マッチング部18が既に抽出した顔領域又は顔領域及びその近傍の画像をテンプレートとし、そのテンプレートを用いてテンプレートマッチングを行うことにより、処理対象の画像からテンプレートと最も一致する可能性の高い座標を求め、その座標を当該画像の顔領域として抽出する。人物マッチング部18による顔検出は、0.001秒程度であり、顔検出部16が行う顔検出(0.1秒程度)に比べて処理時間を非常に短くすることができる。
図4に人物マッチング部の処理の概略を示す。顔検出部16等により図4(a)の枠で示すような顔領域が検出された場合には、図4(a)の枠内の画像をテンプレートとする。図4(a)に示す画像の次のフレームの画像である図4(b)については、図4(a)の枠を含む所定の領域に設定した検出範囲(図4(b)斜線部参照)に対して、図4(a)の枠内の画像をテンプレートとしたテンプレートマッチングを行う。なお、テンプレートマッチングについては既に公知の技術であるため、詳細な説明を省略する。
トラッキング結果出力部19は、顔検出部16、人物マッチング部18等で検出された人物の顔領域を囲む枠(以下、顔検出枠という)を各フレームの画像に合成し、表示装置等の外部機器等へ出力する。これにより、人物トラッキング部13によりトラッキングされた人物が顔検出枠で囲まれた動画が表示装置等で生成される。
このようにして構成された人物追跡装置1の作用について説明する。図5は、人物追跡装置1の処理の流れを示すフローチャートである。
動画入力部14は、入力された動画を処理制御部15に入力し、処理制御部15は、動画を1枚ずつのフレームに分離し、処理を行うフレームを決定する(ステップS10)。処理制御部15は、最初のフレームから順番に処理を開始する。
処理制御部15は、ステップS10で処理を行うとされたフレームの画像について、顔検出部16で顔検出処理を行うかどうかを判断する(ステップS11)。ステップS11の処理の詳細について、図6のタイミングチャートを用いて説明する。
顔検出部16は、2つのフレームに対して同時に顔検出処理が可能である。すなわち、顔検出部16は、コアA、Bの2つのコアを備えている。
最初のフレーム、すなわちフレーム番号1のフレーム(以下、フレーム1という。フレーム2以下も同様)の処理を開始する場合には、コアA、コアBのいずれのコアも処理を行っていない。そのため、処理制御部15は、フレーム1をコアAに振り分ける。
コアBは空いているため、処理制御部15は、フレーム2をコアBに振り分けることも可能である。しかしながら、処理の均一化のため、処理制御部15は、顔検出部16で顔領域を検出するのに要する推定時間(0.1秒程度)の約半分経過時のフレームの画像をコアBに振り分ける。図6に示す例では、処理制御部15は、フレーム4をコアBに振り分け、フレーム2、3を人物マッチング部18に振り分ける。
コアAでフレーム1の処理が終わるのがフレーム7とフレーム8の間であるため、フレーム7が入力される時点ではコアA,コアB共に顔検出処理を行っており、空きがない。したがって、処理制御部15は、フレーム5、6、7を人物マッチング部18に振り分け、フレーム8をコアAに振り分ける。
コアBでフレーム4の処理が終わるのがフレーム9とフレーム10の間であるため、処理制御部15は、フレーム10をコアBに振り分け、フレーム9を人物マッチング部18に振り分ける。
処理制御部15は、フレーム11以降についても同様にして、コアA、コアB、人物マッチング部18のいずれかに振り分ける。
このようにして処理制御部15によりコアA又はコアBに振り分けられた場合(ステップS11でYES)には、CPU10は、当該フレームの画像を顔検出部16に入力し、顔検出部16は、当該フレームの画像に対して顔検出フルサーチ処理を行うことにより顔領域を検出する(ステップS12)。
顔検出部16は、検出結果(顔の座標x、y、顔の大きさ、顔の向き(左右、上下)、顔の傾き等)から検出された顔が本当に顔であるかを示す指標(顔の確信度)を算出し、検出結果及び顔の確信度を人物トラッキング部13へ入力する。
人物トラッキング部13は、顔検出部16から出力された検出結果をリスト化する。人物トラッキング部13は、顔検出部16から入力された顔の確信度が所定の閾値(例えば60%)より大きい場合には、検出されたものが顔であると判断し、検出フラグの欄に「1」を立てる。そして、人物トラッキング部13は、検出フラグの欄に「1」となった顔に対して、顔検出部16から入力された検出結果に基づいて、当該フレームから検出された顔領域が、当該フレームの検出処理の前に顔検出部16により顔検出フルサーチ処理が行われたフレームから検出された顔領域と同一であるか否か(顔の同一性)を判断する(ステップS13)。
人物トラッキング部13が顔の同一性を判断する方法(ステップS13)について具体的に説明する。図7は、複数のフレームの検出結果をリスト化した人物トラッキング結果を示す図である。人物トラッキング部13は、図7に示すように、検出された顔のID、顔の中心座標x、顔の中心座標y、顔の大きさ、顔の向き(左右、上下)、顔の傾き、顔の確信度、リンク確信度及び検出フラグからなる顔検出結果を内部的に保持している。ここで、顔の中心座標x、y、顔の大きさ、顔の向き(左右、上下)、顔の傾き及び顔の確信度は、顔検出部16から出力されたものである。
人物トラッキング部13は、最初のフレームであるフレーム1については、検出された全ての顔に対して任意に顔IDを振る。フレーム1の次に顔検出部16により顔が検出されたフレームは、図6よりフレーム4である。人物トラッキング部13は、フレーム1から検出された顔の中心座標x、顔の中心座標y、顔の大きさ、顔の向き(左右、上下)、顔の傾きと、フレーム4から検出された顔の中心座標x、顔の中心座標y、顔の大きさ、顔の向き(左右、上下)、顔の傾きとが類似しているかどうかを示す値(リンク確信度)を算出し、所定の閾値よりもリンク確信度が大きければ同一の顔と判断する。もし、一つの顔に対して、リンク確信度が閾値より大きい顔が複数ある場合には、リンク確信度がより高い顔を同一の顔と判定する。
このような方法により、当該フレームから検出された顔領域が、当該フレームの検出処理の前に顔検出部16により既に検出された顔領域と同一の顔と判定されなかった場合(ステップS13でNO)には、直近のフレームには存在しない顔が新たに見つかった場合であるため、人物トラッキング部13は、新たに見つかった顔の検出結果に新たな顔IDを振る(ステップS15)。
当該フレームから検出された顔領域が、当該フレームの検出処理の前に顔検出部16により顔検出フルサーチ処理が行われたフレームから検出された顔領域と同一の顔と判定された場合(ステップS13でYES)には、人物トラッキング部13は、その顔の検出結果に、既に検出された顔に振られた顔IDと同じ顔IDを振る(ステップS16)。これにより、同じ顔にリンクをつけ、同じ顔の検出結果を関連付けることができる。
例えば、フレーム4について検出処理をした場合には、図7のフレーム4に示すように、人物トラッキング部13は、顔ID「1」及び「2」については、フレーム1で検出された顔と同一の顔と判断された顔が存在するため、検出された顔に顔ID「1」及び「2」を振り、フレーム1で検出された顔のどの顔とも同一と判断されなかった顔については、新たな顔ID「5」を振る。
処理制御部15により人物マッチング部18に振り分けられた場合(ステップS11でNO)には、CPU10は、当該フレームの画像を人物マッチング部18に入力し、人物マッチング部18は、当該フレームの直近のフレームであって、顔検出部16により顔検出フルサーチ処理が行われたフレームから検出された顔領域及びその近傍の画像をテンプレートとしてテンプレートマッチングを行い、類似画像を検索することにより顔領域を検出する(ステップS14)。
類似画像の検索は、認識しようとする対象の画像をテンプレートとしてもち、対象画像の各部分との類似度を計算することにより行われる。類似度の計算には、一般的な方法である相互相関法等を用いることができる。なお、類似画像の検索は、入力された画像全体に対して行なってもよいし、当該フレームの直近のフレームで顔領域が検出された領域近傍に対して行っても良い。
人物マッチング部18は、検出された類似画像の検出結果(顔の座標x、y、顔の大きさ、顔の向き(左右、上下)、顔の傾き等)から検出された顔が本当に顔であるかを示す指標(顔の確信度)を算出し、検出結果及び顔の確信度を人物トラッキング部13へ入力する。
人物トラッキング部13は、人物マッチング部18から出力された検出結果をリスト化する。人物トラッキング部13は、検出結果に、その顔の検出に用いたテンプレートの基となる顔の顔IDを振る(ステップS16)。なお、人物マッチング部18により顔検出を行う場合には、直近のフレームで検出された顔領域との同一性は検証されているため、直近のフレームには存在しない顔が新たに見つかることは無い。
それと共に、人物トラッキング部13は、人物マッチング部18から入力された顔の確信度が所定の閾値(例えば60%)より大きい場合には、検出されたものが顔であると判断し、検出フラグの欄に「1」を立てる。また、人物トラッキング部13は、人物マッチング部18から入力された顔の確信度が所定の閾値(例えば60%)以下の場合には、検出フラグの欄に「0」を立てる。
例えば、フレーム2について検出処理をした場合には、図7のフレーム2に示すように、顔ID「1」の顔領域に基づいたテンプレートにより検出された類似画像の検出結果には、顔ID「1」を振り、顔ID「2」の顔領域に基づいたテンプレートにより検出された類似画像の検出結果には、顔ID「2」を振り、顔ID「4」の顔領域に基づいたテンプレートにより検出された類似画像の検出結果には、顔ID「4」を振る。それと共に、人物トラッキング部13は、顔確信度が60%より大きい顔ID「1」、「4」の検出結果には検出フラグに「1」を立て、顔確信度が60%以下である顔ID「2」の検出結果には検出フラグに「0」を立てる。なお、フレーム2では、顔ID「3」の顔領域に基づいたテンプレートを用いた場合には類似画像が検出されていないため、フレーム2の検出結果に顔ID「3」は存在しない。
これにより、1フレーム分の人物トラッキング結果が生成される(図7の各フレーム分の結果参照)。この当該フレームの人物トラッキング結果は、人物トラッキング部13からトラッキング結果出力部19へ出力される(ステップS17)。
処理制御部15は、全てのフレームの画像に対して処理が終わったかどうかを判断する(ステップS18)。全てのフレームの画像に対して処理が終了していない場合(ステップS18でNO)には、処理を行う画像を決定するステップ(ステップS10)へ戻り、次のフレームの画像の処理を開始する。全てのフレームの画像に対して処理が終了した場合(ステップS18でYES)には、処理を終了する。これにより、図7に示すように、動画を構成する全ての画像についての人物トラッキング結果が生成される。
次に、ステップS17でトラッキング結果出力部19に出力された人物トラッキング結果を、表示装置等に出力する方法について説明する。
トラッキング結果出力部19は、メモリ11から画像を取得する。そして、取得したフレームの人物トラッキング結果を参照し、検出フラグに「1」が立てられた顔(検出された顔)を囲む顔検出枠と、その顔の顔IDとを取得した画像に合成する。顔検出枠の位置、大きさは、人物トラッキング結果の顔中心座標x、y及び顔の大きさに基づいて決定する。
また、トラッキング結果出力部19は、顔検出枠に隣接して、顔IDを示す数字を合成する。これにより、図8に示すように、人物トラッキング部13によりトラッキングされた人物が顔検出枠で囲まれた画像(以下、出力画像という)が生成される。
トラッキング結果出力部19は、このようにして生成された出力画像を、その基となる画像が入力された順番と同じ順番で表示装置等の外部機器等へ出力する。出力画像を出力するタイミングについて、図6を用いて説明する。
メインメモリ11には、入力された映像に対して、どれだけの時間だけ遅れて出力画像を出力するかを示す時間(図6の「Allowable Delay」参照)があらかじめ記憶されている。この「Allowable Delay」の時間は、顔検出部16が顔検出処理に要する時間より長い時間に設定されている。
CPU10は、タイマーを内蔵しており、処理制御部15からフレームが出力されてから「Allowable Delay」の時間が経過した否かを測定する。トラッキング結果出力部19は、フレーム1(顔検出部16が最初に処理するフレーム)の画像が処理制御部15から出力されてから「Allowable Delay」の時間が経過した時に、フレーム1の出力画像を出力する。
フレーム2、3は人物マッチング部18での処理であり、フレーム4(顔検出部16が2番目に処理するフレーム)の顔検出部16での処理より早く終了するため、トラッキング結果出力部19は、フレーム2、3の画像の画像が処理制御部15から出力されてから「Allowable Delay」の時間が経過した時に、フレーム2、3の出力画像を出力する。
トラッキング結果出力部19は、顔検出部16でフレーム4の画像が処理制御部15から出力されてから「Allowable Delay」の時間が経過した時に、フレーム4の出力画像を出力する。
フレーム5、6、7は人物マッチング部18での処理であり、フレーム8(顔検出部16が3番目に処理するフレーム)の顔検出部16での処理より早く終了するため、トラッキング結果出力部19は、フレーム5、6、7の画像が処理制御部15から出力されてから「Allowable Delay」の時間が経過した時に、フレーム5、6、7の出力画像を出力する。
トラッキング結果出力部19は、顔検出部16でフレーム8の画像が処理制御部15から出力されてから「Allowable Delay」の時間が経過した時に、フレーム8の出力画像を出力する。
フレーム9は人物マッチング部18での処理であり、フレーム10(顔検出部16が4番目に処理するフレーム)の顔検出部16での処理より早く終了するため、トラッキング結果出力部19は、フレーム9の画像が処理制御部15から出力されてから「Allowable Delay」の時間が経過した時に、フレーム9の出力画像を出力する。
しかしながら、フレーム10の画像が処理制御部15から出力されてから「Allowable Delay」の時間が経過した時点で、顔検出部16によるフレーム10の処理が終わっていない。したがって、トラッキング結果出力部19は、顔検出部16によるフレーム10の処理が終わるまで、フレーム10の直前のフレーム(フレーム9)の出力画像を連続して出力する。
トラッキング結果出力部19は、フレーム10の出力画像が生成され次第、フレーム10の出力画像を出力する。次は、人物マッチング部18により処理を行うフレーム11、12、13を出力する順番であるが、フレーム10の処理が間に合わなかったため、トラッキング結果出力部19がフレーム9の出力画像を2回連続して出力している。したがって、フレームの総数を合わせるため、トラッキング結果出力部19は、フレーム11の出力画像は出力せず、フレーム12、13の出力画像のみを出力する。
フレーム14以降についても、同様に出力する。これにより、トラッキングされた人物が顔検出枠で囲まれた動画が表示装置等に表示される。
本実施の形態によれば、所定のフレームに対して顔検出技術を用いて顔検出を行っている間に、顔検出技術より処理時間の短いテンプレートマッチング技術を用いて他のフレームの処理を行うため、顔検出処理を行うフレームを最小限とすることができる。そのため、演算量を抑え、処理時間を短くし、人物を効率的に追跡することができる。したがって、1秒当たりのフレーム数の多い高速な動画等であっても、確実に人物追跡処理をすることができる。
また、本実施の形態によれば、顔検出技術にパターンマッチング技術を組み合わせるため、顔の一部が隠蔽されたり、顔が横〜後方を向いたりした場合など顔検出技術では顔の検出が不可能な場合であっても人物追跡処理を行うことができる。
なお、本実施の形態では、パターンマッチングによる顔検出処理を、人物マッチング部18という顔検出部16とは別の手段で行ったが、人物マッチング部18という別の手段を用いず、顔検出部16のコアA又はコアBの処理能力に余裕のあるコアで割り込み処理をするようにしてもよい。本実施の形態では、顔検出処理による顔検出処理に比べ、パターンマッチングによる顔検出が非常に短い時間で終わるために、このような割り込み処理が可能である。
また、本実施の形態では、顔検出部16のコア2つともが処理を行っている場合には人物マッチング部18で処理を行う(顔検出に一定の演算パワーを振り向け、顔検出用の演算パワーに空きがあるときのみ顔検出を行う)ようにしたが、最初のフレームのみ顔検出処理を行い、その後のフレームはテンプレートマッチング処理を行えば人物追跡は可能である。ただし、顔検出及び人物追跡の精度を考慮し、一定時間おきに顔検出部16で処理を行うようにするのが望ましい。
また、本実施の形態では、顔の検出結果として、顔の座標x、y、顔の大きさ、顔の向き(左右、上下)、顔の傾き、顔の確信度を求めたが、これらの具体的な項目は、採用する顔検出方法などによって増減するものであり、この形態に限られない。
また、本実施の形態では、トラッキング結果出力部19は、トラッキングされた人物が顔検出枠で囲まれた画像データを表示装置等に出力したが、トラッキング結果出力部19の出力形態はこれに限らない。例えば、画像ではなく、画像が記憶されたファイルとして出力しても良い。また、トラッキングされた人物が顔検出枠で囲まれた画像データではなく、トラッキングされた人物に隣接して矢印等の目印が表示された画像データとして出力しても良い。
<第2の実施の形態>
本発明の第1の実施の形態は、処理制御部15が各フレームの画像を顔検出部16又は人物マッチング部18に入力し、画像が人物マッチング部18に入力された場合にはパターンマッチングにより顔検出部16で顔検出フルサーチ処理を行うより短い時間で顔を検出したが、顔検出部16で顔検出フルサーチ処理を行うより短い時間で顔を検出する方法は、パターンマッチングに限定されない。
第2の実施の形態は、検出対象等を限定した顔検出処理を行うことにより、顔検出フルサーチ処理を行うより短い時間で顔を検出する方法を用いる形態である。以下、第2の実施の形態に係る人物追跡装置2について説明する。なお、第1の実施の形態と同一の部分については、同一の符号を付し、説明を省略する。
図9は、人物追跡装置2の全体構造の概略図である。図9に示すように、人物追跡装置2は、主として、CPU10と、メモリ11と、メモリ制御部12と、人物トラッキング部13と、動画入力部14と、処理制御部15と、顔検出部16と、顔特徴データベース(DB)17と、人物マッチング部20と、トラッキング結果出力部19とで構成される。
処理制御部15は、入力された動画を1枚ずつのフレームに分離し、各フレームの画像を顔検出部16又は人物マッチング部20に入力する。また、処理制御部15は、各フレームについて、顔検出部16で顔検出処理を行うか、人物マッチング部20で処理を行うかを決定する。
人物マッチング部20は、顔検出部16と同様に、入力されたフレームから人の顔の形状に相当する顔候補領域を抽出し、その領域内の特徴量及び顔特徴DB17に予め記憶された特徴量を比較することにより画像内の顔領域を抽出する方法を用いて顔検出処理を行うが、顔検出部16での検出結果に基づいて顔検出処理を行う領域、顔の大きさ、顔の向き、顔の傾きを限定して顔検出処理を行うものである。
図10に人物マッチング部の処理の概略を示す。顔検出部16等により図10(a)の枠で示すような顔領域が検出された場合には、図10(a)に示す画像の次のフレームである図10(b)については、図10(a)で検出された顔領域を含む所定の領域(図10(b)斜線部参照)を顔検出を行う領域とし、この領域内のみに対して顔検出処理を行う。また、顔検出処理を行うに際し、図10(a)で検出された大きさの顔、向きの顔、傾きの顔に限定して顔検出処理を行う。そのため、人物マッチング部20による顔検出は、0.001秒程度であり、顔検出部16が行う顔検出(0.1秒程度)に比べて処理時間を非常に短くすることができる。当該処理には、例えば、特開2008−9849に記載の方法を応用して用いることができる。
このようにして構成された人物追跡装置2の作用について説明する。図11は、人物追跡装置2の処理の流れを示すフローチャートである。
動画入力部14は、入力された動画を処理制御部15に入力し、処理制御部15は、動画を1枚ずつのフレームに分離し、処理を行うフレームを決定する(ステップS10)。処理制御部15は、最初のフレームから順番に処理を開始する。処理制御部15は、ステップS10で処理を行うとされたフレームの画像について、顔検出部16で顔検出処理を行うかどうかを判断する(ステップS11)。
処理制御部15により顔検出部16に振り分けられた場合(ステップS11でYES)には、CPU10は、当該フレームの画像を顔検出部16に入力し、顔検出部16は、当該フレームの画像に対して顔検出フルサーチ処理を行うことにより顔領域を検出する(ステップS12)。
処理制御部15により人物マッチング部20に振り分けられた場合(ステップS11でNO)には、CPU10は、当該フレームの画像を人物マッチング部20に入力し、人物マッチング部20は、当該フレームの直近のフレームで検出された顔領域の近傍の領域に対し、検出された顔領域の大きさ、向き、傾きに限定して顔検出処理を行う(ステップS19)。
顔検出部16及び人物マッチング部20は、検出結果(顔の座標x、y、顔の大きさ、顔の向き(左右、上下)、顔の傾き等)から検出された顔が本当に顔であるかを示す指標(顔の確信度)を算出し、検出結果及び顔の確信度を人物トラッキング部13へ入力する。
人物トラッキング部13は、顔検出部16及び人物マッチング部20から出力された検出結果をリスト化する。人物トラッキング部13は、顔検出部16又は人物マッチング部20から入力された顔の確信度が所定の閾値(例えば60%)より大きい場合には、検出されたものが顔であると判断し、検出フラグの欄に「1」を立てる。そして、人物トラッキング部13は、検出フラグの欄に「1」となった顔に対して、顔検出部16又は人物マッチング部20から入力された検出結果に基づいて、当該フレームから検出された顔領域が、当該フレームの検出処理の前に顔検出部16又は人物マッチング部20により顔検出フルサーチ処理が行われたフレームから検出された顔領域と同一であるか否か(顔の同一性)を判断する(ステップS13)。
当該フレームから検出された顔領域が、当該フレームの検出処理の前に顔検出部16又は人物マッチング部20により既に検出された顔領域と同一の顔と判定されなかった場合(ステップS13でNO)には、直近のフレームには存在しない顔が新たに見つかった場合であるため、人物トラッキング部13は、新たに見つかった顔の検出結果に新たな顔IDを振る(ステップS15)。
当該フレームから検出された顔領域が、当該フレームの検出処理の前に顔検出部16により顔検出フルサーチ処理が行われたフレームから検出された顔領域と同一の顔と判定された場合(ステップS13でYES)には、人物トラッキング部13は、その顔の検出結果に、既に検出された顔に振られた顔IDと同じ顔IDを振る(ステップS16)。
これにより、1フレーム分の人物トラッキング結果が生成される(図7の各フレーム分の結果参照)。人物トラッキング部13は、このようにして生成した当該フレームの人物トラッキング結果をトラッキング結果出力部19へ出力する(ステップS17)。
処理制御部15は、全てのフレームの画像に対して処理が終わったかどうかを判断する(ステップS18)。全てのフレームの画像に対して処理が終了していない場合(ステップS18でNO)には、処理を行う画像を決定するステップ(ステップS10)へ戻り、次のフレームの画像の処理を開始する。全てのフレームの画像に対して処理が終了した場合(ステップS18でYES)には、処理を終了する。これにより、図7に示すように、動画を構成する全ての画像についての人物トラッキング結果が生成される。
トラッキング結果出力部19は、第1の実施の形態と同様に、ステップS17でトラッキング結果出力部19に出力された人物トラッキング結果に基づいて出力画像を生成し、表示装置等に出力する。
本実施の形態によれば、顔検出を行う領域、顔の大きさ、向き、傾き等を限定した顔検出を行うため、通常の顔検出処理に比べて演算量を少なく、処理時間を短くしつつ、検出ミスを減らすことができる。
なお、本実施の形態では、顔検出を行う領域、顔の大きさ、向き、傾きの全てを限定した顔検出を行ったが、顔検出を行う領域のみ限定する、検出対象の顔の大きさのみ限定するなど、顔検出を行う領域、顔の大きさ、向き、傾きのうちの少なくとも1つを限定するようにすれば良い。
<第3の実施の形態>
本発明の第1の実施の形態又は第2の実施の形態では、人物の顔が他の物体等により遮蔽されたり、画面外に一時的にフレームアウトしたりした場合に追跡が途切れてしまう可能性がある。追跡が途切れた場合には、実際には同じ人物であったとしても、異なる人物であるとして認識されてしまうという問題がある。
第3の実施の形態は、人物の顔が他の物体等により遮蔽されたり、画面外に一時的にフレームアウトしたりした場合においても、顔の情報を一定期間だけ内部的に保持し、人物の追跡を行う形態である。以下、第3の実施の形態に係る人物追跡装置3について説明する。なお、第1の実施の形態と同一の部分については、同一の符号を付し、説明を省略する。
人物追跡装置3は、第1の実施の形態と同様に、主として、CPU10と、メモリ11と、メモリ制御部12と、人物トラッキング部13と、動画入力部14と、処理制御部15と、顔検出部16と、顔特徴データベース(DB)17と、人物マッチング部18と、トラッキング結果出力部19とで構成される。
このようにして構成された人物追跡装置3の作用について説明する。図12は、人物追跡装置3の処理の流れを示すフローチャートである。
動画入力部14は、入力された動画を処理制御部15に入力し、処理制御部15は、動画を1枚ずつのフレームに分離し、処理を行うフレームを決定する(ステップS10)。処理制御部15は、最初のフレームから順番に処理を開始する。
処理制御部15は、ステップS10で処理を行うとされたフレームの画像について、顔検出部16で顔検出処理を行うかどうかを判断する(ステップS20)。本実施の形態では、1フレームおきに、例えば奇数番号のフレームについては、顔検出部16に振り分けることとする。
顔検出部16に振り分けられたフレーム、すなわち奇数番号のフレーム(ステップS20でYES)については、CPU10は、当該フレームの画像を顔検出部16に入力し、顔検出部16は、当該フレームの画像に対して顔検出フルサーチ処理を行うことにより顔領域を検出する(ステップS12)。
顔検出部16は、検出結果(顔の座標x、y、顔の大きさ、顔の向き(左右、上下)、顔の傾き等)から検出された顔が本当に顔であるかを示す指標(顔の確信度)を算出し、検出結果及び顔の確信度を人物トラッキング部13へ入力する。
人物トラッキング部13は、人物マッチング部18から出力された検出結果をリスト化する。人物トラッキング部13は、顔検出部16から入力された顔の確信度が所定の閾値(例えば60%)より大きい場合には、検出されたものが顔であると判断し、検出フラグの欄に顔が検出されたことを示すフラグ「1」を立てる。そして、人物トラッキング部13は、検出フラグの欄に「1」となった顔に対して、顔検出部16から入力された検出結果に基づいて、当該フレームから検出された顔領域が、当該フレームの検出処理の前に顔検出部16により顔検出フルサーチ処理が行われたフレームから検出された顔領域と同一であるか否か(顔の同一性)を判断する(ステップS13)。
このような方法により、当該フレームから検出された顔領域が、当該フレームの検出処理の前に顔検出部16により既に検出された顔領域と同一の顔と判定されなかった場合(ステップS13でNO)には、直近のフレームには存在しない顔が新たに見つかった場合であるため、人物トラッキング部13は、新たに見つかった顔の検出結果に新たな顔IDを振る(ステップS15)。
当該フレームから検出された顔領域が、当該フレームの検出処理の前に顔検出部16により顔検出フルサーチ処理が行われたフレームから検出された顔領域と同一の顔と判定された場合(ステップS13でYES)には、人物トラッキング部13は、その顔の検出結果に、既に検出された顔に振られた顔IDと同じ顔IDを振る(ステップS16)。
図13は、本実施の形態において人物トラッキング部が生成する人物トラッキング結果の途中経過である。例えば、フレーム3について検出処理をした場合には、図13のフレーム3に示すように、ステップS13において4つの顔が検出されている。人物トラッキング部13は、この検出された4つの顔のうち顔ID「1」、「2」及び「4」については、フレーム1で検出された顔と同一の顔と判断し、検出された顔に顔ID「1」、「2」及び「4」を振り、フレーム1で検出された顔のどの顔とも同一と判断されなかった顔については、新たな顔ID「5」を振る。
処理制御部15により人物マッチング部18に振り分けられた場合(ステップS11でNO)には、CPU10は、当該フレームの画像を人物マッチング部18に入力し、人物マッチング部18は、当該フレームの直近のフレームであって、顔検出部16により顔検出フルサーチ処理が行われたフレームから検出された顔領域及びその近傍の画像をテンプレートとしてテンプレートマッチングを行い、類似画像を検索することにより顔領域を検出する(ステップS14)。
人物マッチング部18は、検出された類似画像の検出結果(顔の座標x、y、顔の大きさ、顔の向き(左右、上下)、顔の傾き等)から検出された顔が本当に顔であるかを示す指標(顔の確信度)を算出し、検出結果及び顔の確信度を人物トラッキング部13へ入力する。
人物トラッキング部13は、人物マッチング部18から出力された検出結果をリスト化する。人物トラッキング部13は、検出結果に、その顔の検出に用いたテンプレートの基となる顔の顔IDを振る(ステップS16)。なお、人物マッチング部18により顔検出を行う場合には、直近のフレームで検出された顔領域との同一性は検証されているため、直近のフレームには存在しない顔が新たに見つかることは無い。
それと共に、人物トラッキング部13は、人物マッチング部18から入力された顔の確信度が所定の閾値(例えば60%)より大きい場合には、検出されたものが顔であると判断し、検出フラグの欄に人物マッチング部18で顔が検出されたため顔を追跡中であることを示すフラグ「1」を立てる。また、人物トラッキング部13は、人物マッチング部18から入力された顔の確信度が所定の閾値(例えば60%)以下の場合には、検出フラグの欄に未検出であることを示すフラグ「0」を立てる。
例えば、フレーム2について検出処理をした場合には、図13のフレーム2に示すように、顔ID「1」の顔領域に基づいたテンプレートにより検出された類似画像の検出結果には、顔ID「1」を振り、顔ID「4」の顔領域に基づいたテンプレートにより検出された類似画像の検出結果には、顔ID「4」を振る。それと共に、人物トラッキング部13は、顔確信度が60%より大きい顔ID「1」、「4」の検出結果には検出フラグに「1」を立てる。なお、フレーム2においては、顔ID「2」、「3」の顔領域に基づいたテンプレートに基づいた類似画像は検出されていないため、図13には顔ID「2」、「3」の結果は含まれていない。
人物トラッキング部13は、ステップS12の顔検出部16の検出結果又はステップS14の人物マッチング部18の検出結果において、既に検出が完了しているフレームで検出されているが、当該フレームで検出されていない顔が存在するか否かを判断する(ステップS21)。
例えば、フレーム2について検出処理をした場合には、図13のフレーム2に示すように、ステップS14で顔ID「2」、「3」の顔が検出されていない。よって、人物トラッキング部13は、顔ID「2」、「3」を、既に検出が完了しているフレームで検出されているが、当該フレームで検出されていない顔であると判断する。また、フレーム3について検出処理をした場合には、図13のフレーム3に示すように、ステップS12で顔ID「3」の顔が検出されていないため、人物トラッキング部13は、顔ID「3」を、既に検出が完了しているフレームで検出されているが、当該フレームで検出されていない顔であると判断する。
既に検出が完了しているフレームで検出されているが、当該フレームで検出されていない顔が存在しないと判断した場合(ステップS21でNO)には、人物トラッキング部13は、ステップS15又はS16の結果を当該フレームの人物トラッキング結果とし、トラッキング結果出力部19へ出力する(ステップS17)。
既に検出が完了しているフレームで検出されているが、当該フレームで検出されていない顔が存在すると判断した場合(ステップS21でYES)には、人物トラッキング部13は、検出されていない顔が所定時間(例えば、3フレームの期間)以上継続して検出されていないかどうかを判断する(ステップS22)。
その顔が検出されなくなってから所定時間経過していない場合(ステップS22でNO)には、人物トラッキング部13は、見つからなかった顔IDの顔についての直近のフレームでの検出結果(顔の中心座標x、顔の中心座標y、顔の大きさ、顔の向き(左右、上下)、顔の傾き、顔の確信度等)を当該フレームのデータに追加し、検出フラグに未検出を示すフラグ「0」を立てる(ステップS23)。これにより、当該フレームで検出されなかった顔を含めて、次フレームで顔の同一性を判断することができる。
所定時間以上継続して検出されていない場合(ステップS22でYES)には、その顔が再び検出される可能性は低いため、所定期間経過後にもその顔の情報を内部的に保持しておくのは無駄である。したがって、人物トラッキング部13は、その顔IDの情報を人物トラッキング結果から削除し、内部的にも顔の追跡を取りやめる(ステップS24)。
図14は、図13に示す人物トラッキング結果の途中経過に、ステップS21〜S24の処理が施されたものである。
フレーム2について検出処理をした場合には、ステップS14で顔ID「2」、「3」の顔が検出されていないため、図13のフレーム2に示すように、図13には顔ID「2」、「3」の結果は含まれていない。しかしながら、顔ID「2」、「3」の顔は、フレーム1で検出されているため、検出されなくなってから3フレームの期間は経過していない(ステップS22でNO)。そのため、人物トラッキング部13は、顔ID「2」、「3」のフレーム1での検出結果(顔の中心座標x、顔の中心座標y、顔の大きさ、顔の向き(左右、上下)、顔の傾き、顔の確信度等)をフレーム2のデータに追加し、検出フラグに未検出を示すフラグ「0」を立てる。
フレーム3について検出処理をした場合には、フレーム1で検出された顔ID「3」の顔が検出されていない。顔ID「3」の顔はフレーム1で検出されているため、検出されなくなってから3フレームの期間は経過していない(ステップS22でNO)。そのため、人物トラッキング部13は、顔ID「3」のフレーム2での検出結果(顔の中心座標x、顔の中心座標y、顔の大きさ、顔の向き(左右、上下)、顔の傾き、顔の確信度)をフレーム3に追加し、検出フラグに「0」を立てる。なお、顔ID「3」は、フレーム2で検出されていないため、フレーム3に追加される結果は、フレーム1での検出結果となる。
フレーム3について検出処理をした場合には、顔ID「2」、「3」の顔が検出されていない。顔ID「2」の顔はフレーム3で検出されているし、顔ID「3」の顔はフレーム1で検出されているため、検出されなくなってから3フレームの期間は経過していない(ステップS22でNO)。そのため、人物トラッキング部13は、顔ID「2」、「3」のフレーム3での検出結果(顔の中心座標x、顔の中心座標y、顔の大きさ、顔の向き(左右、上下)、顔の傾き、顔の確信度)をフレーム4に追加し、検出フラグに「0」を立てる。なお、顔ID「3」は、フレーム2、3で検出されていないため、フレーム4に追加される結果は、フレーム1での検出結果となる。
フレーム5について検出処理をした場合には、顔ID「3」、「4」の顔が検出されていない。顔ID「4」の顔はフレーム4で検出されているため、検出されなくなってから3フレームの期間は経過していない(ステップS22でNO)。そのため、人物トラッキング部13は、顔ID「4」のフレーム4での検出結果(顔の中心座標x、顔の中心座標y、顔の大きさ、顔の向き(左右、上下)、顔の傾き、顔の確信度)をフレーム5に追加し、検出フラグに「0」を立てる。
それに対し、顔ID「3」の顔が最後に検出されたのはフレーム1であり、フレーム2〜4で検出されていない。すなわち、顔ID「3」の顔は継続して3フレームの期間検出されていない(ステップS22でYES)。そのため、人物トラッキング部13は、顔ID「3」の検出結果をフレーム5の結果に追加しない。
これにより、1フレーム分の当該フレームの人物トラッキング結果が生成される(図14の各フレーム分の結果参照)。このように、顔が検出されなくてもその顔の情報を内部的に保持することで、顔が障害物に隠蔽される等により一時的に検出されなかった顔がその後のフレームで検出された場合に、同じ顔IDを振ることができ、正確なトラッキングが可能となる。例えば、ステップS12、S14の検出処理においては、顔が障害物に隠蔽される可能性等により直近のフレームで検出された顔に対応する顔が検出されないことも考えられる。そのため、顔が検出されなかったからといって顔の追跡をいきなり切断してしまうのは合理的でなく、顔が検出されない場合においても、その顔の情報を所定期間は内部的に保持しておくこととした。
人物トラッキング部13は、この人物トラッキング結果をトラッキング結果出力部19へ出力する(ステップS17)。
処理制御部15は、全てのフレームの画像に対して処理が終わったかどうかを判断する(ステップS18)。全てのフレームの画像に対して処理が終了していない場合(ステップS18でNO)には、処理を行う画像を決定するステップ(ステップS10)へ戻り、次のフレームの画像の処理を開始する。全てのフレームの画像に対して処理が終了した場合(ステップS18でYES)には、処理を終了する。これにより、図14に示すように、動画を形成する全ての画像の動画についての人物トレッキング結果が生成される。
本実施の形態によれば、顔の情報を所定期間内部的に保持するため、一時的に検出されなかった顔がその後のフレームで検出された場合に、同じ顔IDを振ることができ、正確なトラッキングが可能となる。
なお、本実施の形態のステップS14においては、テンプレートマッチングを行い、類似画像を検索することにより顔領域を検出したが、複数のフレームから検出された顔中心座標より顔の移動方向を求め、顔が検出されるであろう領域を予測し、その領域に対してテンプレートマッチングを行うようにしてもよい。これにより、柱の裏を通過する、他の人物が前を横切るなどにより一時的に検出されなかった顔を効率的に再度検出することができる。
<第4の実施の形態>
第4の実施の形態は、第3の実施の形態と同様、人物の顔が他の物体等により遮蔽されたり、画面外に一時的にフレームアウトしたりした場合においても、顔の情報を一定期間だけ内部的に保持し、人物の追跡を行う形態である。
以下、第4の実施の形態に係る人物追跡装置4について説明する。なお、第2の実施の形態又は第3の実施の形態と同一の部分については、同一の符号を付し、説明を省略する。
人物追跡装置4は、第2の実施の形態と同様に、主として、CPU10と、メモリ11と、メモリ制御部12と、人物トラッキング部13と、動画入力部14と、処理制御部15と、顔検出部16と、顔特徴データベース(DB)17と、人物マッチング部20と、トラッキング結果出力部19とで構成される。
このようにして構成された人物追跡装置4の作用について説明する。図15は、人物追跡装置4の処理の流れを示すフローチャートである。
動画入力部14は、入力された動画を処理制御部15に入力し、処理制御部15は、動画を1枚ずつのフレームに分離し、処理を行うフレームを決定する(ステップS10)。処理制御部15は、最初のフレームから順番に処理を開始する。
処理制御部15は、ステップS10で処理を行うとされたフレームの画像について、顔検出部16で顔検出処理を行うかどうかを判断する(ステップS20)。本実施の形態では、1フレームおきに、例えば奇数番号のフレームについては、顔検出部16に振り分けることとする。
顔検出部16に振り分けられたフレーム、すなわち奇数番号のフレーム(ステップS20でYES)については、CPU10は、当該フレームの画像を顔検出部16に入力し、顔検出部16は、当該フレームの画像に対して顔検出フルサーチ処理を行うことにより顔領域を検出する(ステップS12)。
処理制御部15により人物マッチング部20に振り分けられた場合(ステップS11でNO)には、CPU10は、当該フレームの画像を人物マッチング部20に入力し、人物マッチング部20は、当該フレームの直近のフレームで検出された顔領域の近傍の領域に対し、検出された顔領域の大きさ、向き、傾きに限定して顔検出処理を行う(ステップS19)。
顔検出部16及び人物マッチング部20は、検出結果(顔の座標x、y、顔の大きさ、顔の向き(左右、上下)、顔の傾き等)から検出された顔が本当に顔であるかを示す指標(顔の確信度)を算出し、検出結果及び顔の確信度を人物トラッキング部13へ入力する。
人物トラッキング部13は、顔検出部16又は人物マッチング部20から出力された検出結果をリスト化する。人物トラッキング部13は、顔検出部16又は人物マッチング部20から入力された顔の確信度が所定の閾値(例えば60%)より大きい場合には、検出されたものが顔であると判断し、検出フラグの欄に顔が検出されたことを示すフラグ「1」を立てる。
そして、人物トラッキング部13は、検出フラグの欄に「1」となった顔に対して、顔検出部16又は人物マッチング部20から入力された検出結果に基づいて、当該フレームから検出された顔領域が、当該フレームの検出処理の前に顔検出部16又は人物マッチング部20により顔検出フルサーチ処理が行われたフレームから検出された顔領域と同一であるか否か(顔の同一性)を判断する(ステップS13)。
当該フレームから検出された顔領域が、当該フレームの検出処理の前に顔検出部16又は人物マッチング部20により既に検出された顔領域と同一の顔と判定されなかった場合(ステップS13でNO)には、直近のフレームには存在しない顔が新たに見つかった場合であるため、人物トラッキング部13は、新たに見つかった顔の検出結果に新たな顔IDを振る(ステップS15)。
当該フレームから検出された顔領域が、当該フレームの検出処理の前に顔検出部16により顔検出フルサーチ処理が行われたフレームから検出された顔領域と同一の顔と判定された場合(ステップS13でYES)には、人物トラッキング部13は、その顔の検出結果に、既に検出された顔に振られた顔IDと同じ顔IDを振る(ステップS16)。
図16は、本実施の形態の人物トラッキング結果の途中経過である。ステップS19においては、第3の実施の形態のステップS14と異なり、新たな顔が検出されうる。例えば、図16のフレーム2においては、フレーム1で検出されていない新たな顔が検出されている。したがって、新たな顔には新たな顔ID「5」を振る。人物トラッキング部13は、ステップS12の顔検出部16の検出結果又はステップS14の人物マッチング部18の検出結果において、既に検出が完了しているフレームで検出されているが、当該フレームで検出されていない顔が存在するか否かを判断する(ステップS21)。
既に検出が完了しているフレームで検出されているが、当該フレームで検出されていない顔が存在しないと判断した場合(ステップS21でNO)には、人物トラッキング部13は、ステップS15又はS16の結果を当該フレームの人物トラッキング結果とし、トラッキング結果出力部19へ出力する(ステップS17)。
既に検出が完了しているフレームで検出されているが、当該フレームで検出されていない顔が存在すると判断した場合(ステップS21でYES)には、人物トラッキング部13は、検出されていない顔が所定時間(例えば、3フレームの期間)以上継続して検出されていないかどうかを判断する(ステップS22)。
その顔が検出されなくなってから所定時間経過していない場合(ステップS22でNO)には、人物トラッキング部13は、見つからなかった顔IDの顔についての直近のフレームでの検出結果(顔の中心座標x、顔の中心座標y、顔の大きさ、顔の向き(左右、上下)、顔の傾き、顔の確信度等)を当該フレームのデータに追加し、検出フラグに未検出を示すフラグ「0」を立てる(ステップS23)。これにより、当該フレームで検出されなかった顔を含めて、次フレームで顔の同一性を判断することができる。
所定時間以上継続して検出されていない場合(ステップS22でYES)には、その顔が再び検出される可能性が低いため、所定期間経過後にもその顔の情報を内部的に保持しておくのは無駄である。したがって、人物トラッキング部13は、その顔IDの情報を人物トラッキング結果から削除し、内部的にも顔の追跡を取りやめる(ステップS24)。
これにより、図16の各フレーム分に示すように、1フレーム分の人物トラッキング結果が生成される。このように、顔が検出されなくてもその顔の情報を内部的に保持することで、顔が障害物に隠蔽される等により一時的に検出されなかった顔がその後のフレームで検出された場合に、同じ顔IDを振ることができ、正確なトラッキングが可能となる。例えば、ステップS12、S14の検出処理においては、顔が障害物に隠蔽される可能性等により直近のフレームで検出された顔に対応する顔が検出されないことも考えられる。そのため、顔が検出されなかったからといって顔の追跡をいきなり切断してしまうのは合理的でなく、顔が検出されない場合においても、その顔の情報を所定期間は内部的に保持しておくこととした。
人物トラッキング部13は、この人物トラッキング結果をトラッキング結果出力部19へ出力する(ステップS17)。
処理制御部15は、全てのフレームの画像に対して処理が終わったかどうかを判断する(ステップS18)。全てのフレームの画像に対して処理が終了していない場合(ステップS18でNO)には、処理を行う画像を決定するステップ(ステップS10)へ戻り、次のフレームの画像の処理を開始する。全てのフレームの画像に対して処理が終了した場合(ステップS18でYES)には、処理を終了する。
本実施の形態では、顔の情報を所定期間内部的に保持するため、一時的に検出されなかった顔がその後のフレームで検出された場合に、同じ顔IDを振ることができ、正確なトラッキングが可能となる。
なお、本実施の形態のステップS19においては、当該フレームの直近のフレームで検出された顔領域の近傍の領域に対し、検出された顔領域の大きさ、向き、傾きに限定して顔検出処理を行うが、複数のフレームから検出された顔中心座標より顔の移動方向を求め、顔が検出されるであろう領域を予測し、その領域に対して顔検出処理を行うようにしてもよい。また、検出された顔領域の大きさ、向き、傾き等の変化を把握し、次に検出されるであろう大きさ、向き、傾き等を予測し、その予測結果に限定して顔検出処理を行なうようにしてもよい。
また、検出された顔の欠けている特徴点等より顔の前後の位置関係を考慮し、後ろ側の顔については、ステップS22の「所定時間」を長くし、より長い期間検出結果を保持するようにしても良い。
これにより、顔の移動方向や顔の前後の位置関係等を考慮して顔検出処理が可能となり、柱の裏を通過する、他の人物が前を横切るなどにより一時的に検出されなかった顔を効率的に再度検出することができる。
本発明は、一定時間間隔で、必ず一定フレーム数の処理をリアルタイムに行い、リアルタイムに人物追跡結果を出力することができるため、例えば、ビデオカメラから入力された映像に対してリアルタイムに人物を追跡し、同一人物には、同じ色の矢印などを入力された映像にオーバーラップさせて表示させる装置やアプリケーションとして提供することができる。
また、本発明は、PC、携帯機器、動画再生装置などの装置に限らず、デジタルカメラ、ビデオカメラ、監視カメラ等の撮像装置にも適用可能である。撮像装置に適用する場合には、動画に限らず、ライブビュー画像にも本発明は適用可能である。