以下、実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
[実施形態]
<人物追跡システム全体のシステム構成>
はじめに、一実施形態に係る人物追跡装置を含む人物追跡システム全体のシステム構成について説明する。図1は、人物追跡システム全体のシステム構成の一例を示す図である。
図1に示すように、人物追跡システム100は、撮像装置110と、動画像データ格納装置120と、人物追跡装置130と、解析装置140とを有する。人物追跡システム100に含まれる各装置は、ネットワーク150を介して相互に接続されている。
撮像装置110は、いわゆる監視カメラであり、店舗や道路等に設置される。撮像装置110は、所定期間、連続的に撮像を行い、撮像した動画像データを、ネットワーク150を介して動画像データ格納装置120に送信する。
動画像データ格納装置120は、撮像装置110より送信された動画像データを格納する。動画像データ格納装置120により格納された動画像データは、人物追跡装置130からの要求に応じて、人物追跡装置130に送信される。
人物追跡装置130には、人物追跡プログラム及び追跡対象情報出力プログラムがインストールされている。人物追跡装置130は、当該プログラムを実行することで、人物追跡部131及び追跡対象情報出力部132として機能する。
人物追跡部131は、動画像データ格納装置120より動画像データを読み出し、動画像データの各フレームにおいて人物を検出し、検出した人物と一致する人物(同一人物)を、次のフレームでも検出することで、人物追跡を行う。人物追跡部131は、各フレームにおいて検出した人物に関する情報を、追跡対象情報として、追跡対象情報格納部133に格納する。
追跡対象情報出力部132は、解析装置140からの要求に応じて、追跡対象情報格納部133に格納した追跡対象情報を解析装置140に送信する。
解析装置140は、撮像装置110の撮像範囲に含まれる各構造物の配置等を加味して、追跡対象情報に基づいて、人物の移動経路等を解析する。これにより、解析装置140のユーザは、例えば、解析結果に応じたマーケティング戦略を立案することができる。
<人物追跡システムの設置例>
次に、人物追跡システム100の各装置(撮像装置110、動画像データ格納装置120、人物追跡装置130、解析装置140)の設置例について説明する。図2は、人物追跡システムの各装置の設置例を示す図である。
図2の例は、人物追跡システム100を、店舗を対象に設置した場合を示している。図2に示すように、撮像装置110は、店舗の売り場200の天井付近に設置される。また、動画像データ格納装置120及び解析装置140は、従業員の控室210に設置される。更に、人物追跡装置130は、各店舗の動画像データを処理し、各店舗の解析装置140に追跡対象情報を送信する処理センタ等に設定される。
撮像装置110により撮像された動画像データは、動画像データ格納装置120に一旦格納され、人物追跡装置130により処理されることで、追跡対象情報が生成される。解析装置140は、人物追跡装置130より追跡対象情報を読み出して、売り場200における各人物の移動経路等を解析し、解析結果を表示する。表示画面220は、解析装置140に表示された解析結果の一例を示している。表示画面220に示すように、解析装置140によれば、追跡対象情報を解析することで、売り場200にいる各人物が、売り場200の入口から入ってきてから現在に至るまでのそれぞれの移動経路を、曲線で表示することができる。
<動画像データ及び追跡対象情報>
次に、人物追跡装置130にて処理される動画像データ及び人物追跡装置130に格納される追跡対象情報について説明する。図3は、動画像データの一例及び追跡対象情報の一例を示す図である。
このうち、図3(a)は、動画像データの一例を示す図である。人物追跡装置130にて処理される動画像データには、複数のフレームが含まれており、人物追跡装置130は、フレーム単位で動画像データを処理する。図3(a)において、画像データ300は、人物追跡装置130が処理する1フレーム分の画像データを示している。図3(a)に示すように、各フレームの画像データは、横方向をx軸、縦方向をy軸としている。なお、図3(a)の例は、処理対象の画像データ300において、人物301が検出され、人物領域302が算出された様子を示している。
図3(b)は、追跡対象情報の一例を示す図である。追跡対象情報310には、処理対象の画像データにおいて検出された人物に関する情報が記録される。追跡対象情報310に記録される情報の項目には、“人物ID”、“時刻[フレーム]”、“人物領域”、“移動量(x,y)”、“重なり領域”、“重なりフラグ”、“重なり関係”、“追跡フラグ”が含まれる。
“人物ID”には、処理対象の画像データにおいて、新たな人物が検出された場合に、当該人物を識別する識別子が記録される。
“時刻[フレーム]”には、人物IDにより識別される人物が含まれる画像データのフレーム番号が記録される。
“人物領域”には、“x座標[画素]”、“y座標[画素]”、“幅[画素]”、“高さ[画素]”が含まれる。“x座標[画素]”には、人物IDにより識別される人物が含まれる人物領域の左上頂点のx座標(例えば、図3(a)の人物領域302の場合には、左上頂点311のx座標)が記録される。“y座標[画素]”には、人物IDにより識別される人物が含まれる人物領域の左上頂点のy座標(例えば、図3(a)の人物領域302の場合には、左上頂点311のy座標)が記録される。“幅[画素]”には、人物IDにより識別される人物が含まれる人物領域のx方向の長さ(例えば、図3(a)の人物領域302の場合には符号312で示した長さ)が記録される。“高さ[画素]”には、人物IDにより識別される人物が含まれる人物領域のy方向の長さ(例えば、図3(a)の人物領域302の場合には符号313で示した長さ)が記録される。
“移動量(x,y)”には、処理対象の画像データのフレーム番号の1つ前のフレーム番号の画像データと比較した場合の、人物の移動量が記録される。“移動量(x、y)”には、1つ前のフレーム番号の画像データにおいて検出された人物が、処理対象の画像データにおいても検出できた場合に(つまり、当該人物を追跡できた場合に)、当該人物の移動量が記録される。
“重なり領域”には、“x座標[画素]”、“y座標[画素]”、“幅[画素]”、“高さ[画素]”が含まれる。“x座標[画素]”には、画像データにおいて2つの人物領域が重なっていた場合に、重なり部分の領域(重なり領域)の左上頂点のx座標が記録される。“y座標[画素]”には、重なり領域の左上頂点のy座標が記録される。“幅[画素]”には、重なり領域のx方向の長さが記録される。“高さ[画素]”には、重なり領域のy方向の長さが記録される。
“重なりフラグ”には、人物IDにより識別される人物の人物領域が、手前にいる他の人物の人物領域と重なっていた場合に「1」が記録され、手前にいる他の人物の人物領域と重なっていない場合に「0」が記録される。
“重なり関係”には、人物IDにより識別される人物の人物領域が、手前にいる他の人物の人物領域と重なっていた場合に(重なり関係にある場合に)、手前にいる他の人物の人物IDが記録される。
“追跡フラグ”には、重なりフラグに「0」が記録された場合であって、人物IDにより識別される人物と同一人物が、処理対象の画像データのフレーム番号の1つ後のフレーム番号の画像データにおいて検出された場合に、「1」が記録される。
<人物追跡装置のハードウェア構成>
次に、人物追跡装置130のハードウェア構成について説明する。図4は、人物追跡装置のハードウェア構成の一例を示す図である。図4に示すように、人物追跡装置130は、CPU(Central Processing Unit)401、ROM(Read Only Memory)402、RAM(Random Access Memory)403を有する。CPU401、ROM402、RAM403は、いわゆるコンピュータを形成する。
また、人物追跡装置130は、補助記憶装置404、表示装置405、操作装置406、I/F(Interface)装置407、ドライブ装置408を有する。なお、人物追跡装置130の各部は、バス409を介して相互に接続されている。
CPU401は、補助記憶装置404にインストールされている各種プログラム(例えば、人物追跡プログラム、追跡対象情報出力プログラム等)を実行するデバイスである。ROM402は、不揮発性メモリである。ROM402は、補助記憶装置404にインストールされている各種プログラムをCPU401が実行するために必要な各種プログラム、データ等を格納する、主記憶デバイスとして機能する。具体的には、ROM402はBIOS(Basic Input/Output System)やEFI(Extensible Firmware Interface)等のブートプログラム等を格納する。
RAM403は、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)等の揮発性メモリである。RAM403は、補助記憶装置404にインストールされている各種プログラムがCPU401によって実行される際に展開される作業領域を提供する、主記憶デバイスとして機能する。
補助記憶装置404は、各種プログラムや、各種プログラムが実行されることで生成される情報(例えば、追跡対象情報310等)、ならびに各種プログラムが実行される際に用いられる情報(例えば、後述する類似度マップ等)を格納する補助記憶デバイスである。追跡対象情報格納部133は、補助記憶装置404において実現される。
表示装置405は、人物追跡装置130の内部状態等を表示する表示デバイスである。操作装置406は、人物追跡装置130の管理者が人物追跡装置130に対して各種指示を入力するための入力デバイスである。
I/F装置407は、ネットワーク150に接続し、動画像データ格納装置120、解析装置140と通信を行うための通信デバイスである。
ドライブ装置408は記録媒体410をセットするためのデバイスである。ここでいう記録媒体410には、CD−ROM、フレキシブルディスク、光磁気ディスク等のように情報を光学的、電気的あるいは磁気的に記録する媒体が含まれる。また、記録媒体410には、ROM、フラッシュメモリ等のように情報を電気的に記録する半導体メモリ等が含まれていてもよい。
なお、補助記憶装置404に格納される各種プログラムは、例えば、配布された記録媒体410がドライブ装置408にセットされ、該記録媒体410に記録された各種プログラムがドライブ装置408により読み出されることでインストールされる。
<人物追跡装置の機能構成>
次に、人物追跡装置130の人物追跡部131の機能構成について説明する。図5は、人物追跡装置の機能構成の一例を示す図である。
図5に示すように、人物追跡装置130の人物追跡部131は、人物検出部501、重なり判定部502、重なり除去部503、存在範囲決定部504、移動量算出部505、特徴領域算出部506、探索部507を有する。
人物検出部501は検出部の一例であり、処理対象の画像データにおいて新たに人物が登場した場合に、当該人物を検出し、検出した人物の人物領域を算出する。
重なり判定部502は判定部の一例であり、処理対象の画像データについて、人物検出部501により新たに検出された人物、あるいは、既に検出され、追跡されている人物について、人物領域の重なりの有無を判定する。処理対象の画像データには、人物領域が他の人物の人物領域と重なっている人物(奥側の人物)と、重なっていない人物(手前側の人物)とが含まれる。そこで、重なり判定部502は、人物領域が重なっている人物(奥側の人物)と、重なっていない人物(手前側の人物)とを判定する。
このうち、手前側の人物については、次の処理対象の画像データにおいても、当該人物と同一人物を容易に検出できる(つまり、容易に人物追跡することができる)。一方、奥側の人物については、次の処理対象の画像データにおいて、当該人物と同一人物を検出することが困難である(つまり、人物追跡が困難である)。
そこで、人物追跡部131では、人物追跡が困難な奥側の人物について、まず、重なり除去部503が、処理対象の画像データにおいて、人物領域の重なり領域を除去する。これにより、奥側の人物が存在する範囲を識別することが可能となる。
続いて、人物追跡部131では、決定部の一例である存在範囲決定部504が、奥側の人物が存在する範囲の画像を用いて、奥側の人物を追跡(次の処理対象の画像データにおいて奥側の人物と同一人物の有無を判定)するうえで有効な範囲を決定する。存在範囲決定部504は、類似度マップを生成することで、当該範囲を決定する。類似度マップとは、処理対象の画像データの各位置において、奥側の人物が存在する範囲の画像との類似度を算出し、各位置での類似度を濃淡画像として表現したマップである。類似度マップにおいて濃度の高い範囲は、奥側の人物の特徴が顕著に表れている範囲であり、奥側の人物を追跡するうえで有効な範囲である。
一方、移動量算出部505は、重なり判定部502により重なっていないと判定された人物(手前側の人物)について、次の処理対象の画像データより、当該人物と同一人物を検出し、検出した人物の人物領域を算出する。また、移動量算出部505は、処理対象の画像データから次の処理対象の画像データまでの間の、手前側の人物の移動量を算出する。
特徴領域算出部506は算出部の一例であり、処理対象の画像データの1つ前の処理対象の画像データからの移動量と、処理対象の画像データから次の処理対象の画像データまでの間の移動量とを比較することで、手前側の人物の移動量の変化を算出する。このように、手前側の人物の移動量の変化を算出することで、処理対象の画像データにおいて算出した奥側の人物の重なり領域が、次の処理対象の画像データにおいてどのように変化するのかを推定することができる。
そこで、特徴領域算出部506は、手前側の人物の移動量の変化に基づいて、変化後の重なり領域を推定し、次の処理対象の画像データにおいて、奥側の人物が存在する範囲を推定する。
更に、特徴領域算出部506は、推定した範囲に応じた処理対象の画像データの領域を、奥側の人物を探索する際に用いる特徴領域として算出する。
探索部507は、移動量算出部505により算出された移動量(処理対象の画像データから次の処理対象の画像データまでの間の移動量)に応じて、存在範囲決定部504により生成された類似度マップを移動させる。また、探索部507は、次の処理対象の画像データにおける類似度マップの位置を識別し、識別した位置の類似度マップ(移動後の類似度マップ)に基づく領域を探索領域として設定する。
更に、探索部507は、当該探索領域について探索を行うことで、次の処理対象の画像データにおいて、奥側の人物と同一人物が存在するか否かを判定する。具体的には、探索部507は、特徴領域算出部506にて算出された特徴領域の画像を用いた、当該探索領域を探索する。探索部507は、探索領域の画像が、特徴領域算出部506にて算出された特徴領域の画像と類似していれば、探索領域に奥側の人物と同一人物が存在すると判定する。
このように、人物追跡部131では、人物追跡が容易な人物(手前側の人物)の追跡結果を利用して、人物追跡が困難な人物を探索する際に用いる特徴領域を算出するとともに、探索領域を設定する。これにより、人物追跡部131によれば、頭部領域等を特徴領域とする場合と比較して、より多くの画像特徴量に基づき探索を行うことが可能となる。また、人物追跡部131によれば、手前側の人物との重なり具合によらず所定の範囲を探索領域として探索した場合と比較して、より有効な探索領域(存在する可能性が高い探索領域)を探索することが可能となる。
この結果、人物追跡部131によれば、画像上で人物同士が重なっている場合であっても、同一人物を精度よく検出することが可能となる。
<人物追跡処理の流れ>
図6は、人物追跡処理のフローチャートである。以下、図6に示すフローチャートを用いて、人物追跡部131の各部による人物追跡処理の流れについて説明する。なお、人物追跡部131の各部が、図6に示す人物追跡処理を実行するにあたり、人物追跡部131は、動画像データ格納装置120より、予め動画像データを取得しているものとする。
ステップS601において、人物検出部501は、人物追跡部131が取得した動画像データをフレーム単位で読み出す。
ステップS602において、人物検出部501は、読み出したフレーム単位の画像データに対して人物検出処理を実行することで、処理対象の画像データに新たに含まれる人物を検出し、追跡対象情報310に記録する。
ステップS603において、重なり判定部502は、ステップS602において検出した人物を含む各人物について、重なり判定処理を実行することで、人物領域の重なりの有無を判定し、判定結果を追跡対象情報310に記録する。
ステップS604において、重なり除去部503は、ステップS603において重なりがあると判定された人物領域について、重なり除去処理を実行することで、重なり領域を除去する。
ステップS605において、存在範囲決定部504は、ステップS604において重なり領域が除去された場合に、存在範囲決定処理を実行することで、重なりがあると判定された人物の存在範囲を識別する。また、存在範囲決定部504は、存在範囲決定処理を行うことで、識別した存在範囲に基づいて類似度マップを生成し、重なりがあると判定された人物を追跡するのに有効な範囲を決定する。
ステップS606において、移動量算出部505は、移動量算出処理を実行することで、ステップS603において重なりがないと判定された人物と同一人物を、次の処理対象の画像データより検出する。また、移動量算出部505は、移動量算出処理を行うことで、次の処理対象の画像データより検出した人物の人物領域に基づいて移動量を算出し、追跡対象情報310に記録する。
ステップS607において、特徴領域算出部506は、特徴領域算出処理の要否を判定する。ステップS603において重なり判定部502が人物領域の重なりがあると判定した人物であって、特徴領域算出処理を実行していない人物がいる場合、特徴領域算出部506は、特徴領域算出処理が必要と判定する。この場合、特徴領域算出部506は、ステップS608に進み、当該重なりがあると判定した人物についての処理を行う。
具体的には、ステップS608において、特徴領域算出部506は、特徴領域算出処理を実行することで、ステップS606において算出された移動量に基づき、重なりがないと判定された人物の移動量の変化を算出する。更に、特徴領域算出部506は、算出した移動量の変化に基づいて、特徴領域を算出する。
ステップS609において、探索部507は、探索処理を実行する。具体的には、探索部507は、ステップS605において生成された類似度マップと、ステップS606において算出された移動量とに基づいて、次の処理対象の画像データにおける探索領域を設定する。また、探索部507は、設定した探索領域において、ステップS608において算出した特徴領域の画像を用いて探索を行う。これにより、探索部507は、処理対象の画像データにおいて重なりがあると判定された人物と同一人物が、次の処理対象の画像データにおいて存在するか否かを判定する。また、探索部507は、探索結果を追跡対象情報310に記録する。なお、ステップS608及びステップS609の処理は、人物領域の重なりがあると判定された人物全てに対して実行する。
人物領域の重なりがあると判定された人物全てに対して、ステップS608及びステップS609の処理が実行されると、特徴領域算出部506は、ステップS607において、特徴領域算出処理が不要と判定し、ステップS610に進む。
ステップS610において、人物検出部501は、次のフレームの画像データについて、同様の処理を続行するか否かを判定する。ステップS610において、処理を続行すると判定した場合には、ステップS601に戻る。一方、ステップS610において、処理を続行しないと判定した場合には、人物追跡処理を終了する。
<人物追跡部の各部による処理の詳細>
続いて、人物追跡部131の各部による各処理(ステップS602〜S606、S608〜S609)の詳細について説明する。
(1)人物検出部による人物検出処理の詳細
はじめに、人物検出部501による人物検出処理(ステップS602)の詳細について説明する。図7は、人物検出部により実行される人物検出処理のフローチャートである。
処理対象の画像データが読み込まれると、図7に示す人物検出処理が実行される。ステップS701において、人物検出部501は、処理対象の画像データのフレーム番号よりも1つ前のフレーム番号の画像データとの差分を算出する。これにより、人物検出部501は、背景差分画像データを算出する。
ステップS702において、人物検出部501は、背景差分画像データより人物領域である可能性のある領域(人物領域候補)を識別し、処理対象の画像データより、当該識別した人物領域候補の各画素の画素値を抽出する。また、人物検出部501は、抽出した画素値に基づいてHOG(Histograms of Oriented Gradients)特徴量を算出する。
ステップS703において、人物検出部501は、算出したHOG特徴量を、予め生成した識別器に入力することで、識別した人物領域候補が、人物領域であるか否かを判定する。
ステップS704において、人物検出部501は、識別した人物領域候補が人物領域であると判定した場合に、当該領域の左上頂点のx座標、y座標、及び当該領域の幅、高さを算出する。また、人物検出部501は、算出したx座標、y座標、幅、高さを、処理対象の画像データにおける新たな人物の人物領域として、追跡対象情報310に記録する。
図8は、人物検出部により実行される人物検出処理を模式的に示した図である。図8において、画像データ801は、処理対象の画像データ811のフレーム番号の1つ前のフレーム番号の画像データである。
人物検出部501は、画像データ811と画像データ801との差分を算出することで、背景画像データ802を算出し、人物領域候補803を検出する。
更に、人物検出部501は、人物領域候補803の各画素の画素値を、画像データ811より抽出し、HOG特徴量を算出する。また、人物検出部501は、算出したHOG特徴量を予め生成した識別器820に入力することで、人物領域候補803が人物領域であるか否かを判定する。図8の例は、判定の結果、人物領域であると判定され、x座標=x812、y座標=y812、幅=W812、高さ=H812の人物領域812が算出された様子を示している。
(2)重なり判定部による重なり判定処理の詳細
次に、重なり判定部502による重なり判定処理(ステップS603)の詳細について説明する。図9は、重なり判定部により実行される重なり判定処理のフローチャートである。なお、図9に示す重なり判定処理を開始するにあたり、処理対象の画像データに含まれる各人物についての人物領域は、既に算出されているものとする。
ステップS901において、重なり判定部502は、処理対象の画像データに含まれる各人物のうち、重なり判定処理の判定対象の人物の“人物領域”を、追跡対象情報310から読み出す。
ステップS902において、重なり判定部502は、処理対象の画像データに含まれる他の人物の“人物領域”を、追跡対象情報310から読み出す。
ステップS903において、重なり判定部502は、判定対象の人物について、人物領域の重なりがあるか否かを判定する。ステップS903において、人物領域の重なりがあると判定した場合には(ステップS903においてYesの場合には)、ステップS904に進む。
ステップS904において、重なり判定部502は、判定対象の人物の“人物領域”の方が、他の人物の“人物領域”よりもy座標が小さいか否かを判定する。y座標が小さいと判定した場合、重なり判定部502は、追跡対象情報310において、判定対象の人物の人物領域に対応付けられた“重なりフラグ”を「1」にする。
ステップS905において、重なり判定部502は、他の人物(判定対象の人物の人物領域よりもy座標が大きい人物領域の人物)の人物IDを識別する。また、重なり判定部502は、追跡対象情報310において、判定対象の人物の“人物ID”に対応する“重なり関係”に、当該識別した人物IDを記録する。その後、重なり判定部502は、ステップS907に進む。
一方、ステップS903において、人物領域の重なりがないと判定した場合には(ステップS903においてNoの場合には)、ステップS906に進む。ステップS906において、重なり判定部502は、追跡対象情報310において、判定対象の人物の“人物領域”に対応付けられた“重なりフラグ”を「0」にする。その後、重なり判定部502は、ステップS907に進む。
ステップS907において、重なり判定部502は、処理対象の画像データに含まれる全ての人物の人物領域について、処理を行ったか否かを判定する。ステップS907において、処理を行っていない人物の人物領域があると判定した場合には(ステップS907においてYesの場合には)、ステップS901に戻る。
一方、全ての人物の人物領域について、処理を行ったと判定した場合には(ステップS907においてNoの場合には)、重なり判定処理を終了する。
図10は、重なり判定部により実行される重なり判定処理を模式的に示した図である。このうち、図10(a)は処理対象の画像データ1000を示しており、図10(b)は、処理対象の画像データ1000を処理した際の追跡対象情報310を示している。
処理対象の画像データ1000は、フレーム番号が「239」の画像データである。また、画像データ1000に含まれる人物1010には、“人物ID”として「3」が付され、人物1020には、“人物ID”として「2」が付されているものとする。なお、説明の簡略化のため、画像データ1000において、“人物ID”として「1」が付された人物については省略している。
人物1020が重なり判定処理の判定対象の人物であったとすると、重なり判定部502は、人物1020の人物領域1021と、他の人物1010の人物領域1011とを追跡対象情報310から読み込む。また、重なり判定部502は、人物領域1021と人物領域1011との間に重なりがあるか否かを判定する。
具体的には、重なり判定部502は、以下の条件が成立する場合に、重なりがあると判定する。
・x1s<x2s<x1eまたはx1s<x2e<x1eのいずれかを満たしており、かつ、y1s<y2e<y1eを満たしている。
または、
・x2s<x1s<x2eまたはx2s<x1e<x2eのいずれかを満たしており、かつ、y2s<y1s<y2eを満たしている。
ただし、x1s、x1e、y1s、y1eは、それぞれ、人物領域1011のx座標の最小値、最大値、y座標の最小値、最大値を示している。また、x2s、x2e、y2s、y2eは、それぞれ、人物領域1021のx座標の最小値、最大値、y座標の最小値、最大値を示している。
図10(a)の場合、重なり判定部502は、人物領域1011が人物領域1021と重なっていると判定する。このため、重なり判定部502は、追跡対象情報310において処理対象の画像データ(フレーム番号=「239」)に対応付けて判定結果を記録する。具体的には、重なり判定部502は、y座標の値が小さい人物領域1021の人物ID=「2」に対応する“重なりフラグ”を「1」にする(図10(b)参照)。また、重なり判定部502は、y座標の値が大きい人物領域1011の人物ID=「3」を、判定対象の人物1020の人物ID=「2」に対応する“重なり関係”に記録する(図10(b)参照)。
なお、人物1010が重なり判定処理の判定対象の人物であった場合には、重なり判定部502は、他の人物1020と重なっていないと判定する。このため、重なり判定部502は、追跡対象情報310において処理対象の画像データ(フレーム番号=「239」)に対応付けて判定結果を記録する。具体的には、重なり判定部502は、人物1010の人物ID=「3」に対応する“重なりフラグ”を「0」にする(図10(b)参照)。
(3)重なり除去部による重なり除去処理の詳細
次に、重なり除去部503による重なり除去処理(ステップS604)の詳細について説明する。図11は、重なり除去部により実行される重なり除去処理のフローチャートである。
ステップS1101において、重なり除去部503は、処理対象の画像データに含まれる処理対象の人物の“重なりフラグ”を、追跡対象情報格納部133の追跡対象情報310から読み出す。
ステップS1102において、重なり除去部503は、“重なりフラグ”が「1」であるか否かを判定する。ステップS1102において、“重なりフラグ”が「1」であると判定した場合には(ステップS1102においてYesの場合には)、ステップS1103に進む。
ステップS1103において、重なり除去部503は、処理対象の人物の“重なり関係”を、追跡対象情報格納部133の追跡対象情報310から読み出す。
ステップS1104において、重なり除去部503は、読み出した“重なり関係”に対応する人物の“人物領域”を、追跡対象情報格納部133の追跡対象情報310から読み出す。
ステップS1105において、重なり除去部503は、処理対象の人物の“人物領域”を、追跡対象情報格納部133の追跡対象情報310から読み出す。また、重なり除去部503は、ステップS1104において読み出した“人物領域”との間で重なり領域を算出し、追跡対象情報310に記録した後、ステップS1106に進む。
これにより、重なり除去部503は、処理対象の人物の“人物領域”から、“重なり領域”を除去した範囲を、処理対象の人物が存在する範囲として識別することができる。
一方、ステップS1102において、“重なりフラグ”が「1」でないと判定した場合には(ステップS1102においてNoの場合には)、直接、ステップS1106に進む。
ステップS1106において、重なり除去部503は、処理対象の画像データに含まれる全ての人物の人物領域について、処理を行ったか否かを判定する。ステップS1106において、処理を行っていない人物の人物領域があると判定した場合には(ステップS1106においてYesの場合には)、ステップS1101に戻る。
一方、ステップS1106において、全ての人物の人物領域について処理を行ったと判定した場合には(ステップS1106においてNoの場合には)、重なり除去処理を終了する。
図12は、重なり除去部により実行される重なり除去処理を模式的に示した図である。このうち、図12(a)は処理対象の画像データ1000を示しており、図12(b)は、算出された重なり領域1210を示している。また、図12(c)は、画像データ1000について、重なり除去処理を実行した際の追跡対象情報310を示している。
処理対象の画像データ1000は、フレーム番号が「239」の画像データである。画像データ1000に含まれる人物1010には、“人物ID”として「3」が付され、人物1020には、“人物ID”として「2」が付されているものとする。なお、説明の簡略化のため、画像データ1000において、“人物ID”が「1」の人物については省略している。
人物1020が処理対象の人物であったとすると、重なり除去部503は、人物1020(人物ID=「2」)の“重なりフラグ”として、追跡対象情報310から「1」を読み出し、更に、“重なり関係”として、「3」を読み出す。
また、重なり除去部503は、追跡対象情報310から、“人物ID”が「3」の“人物領域”(x座標、y座標、幅、高さ)を読み出し、処理対象の人物1020の“人物領域”(x座標、y座標、幅、高さ)との間で、重なり領域1210を算出する。例えば、重なり除去部503は、下式に基づいて重なり領域1210のx座標、y座標を算出する。
ただし、max(x1
s,x2
s)は、x座標のうち大きい方の値を選択することを表す。図12(c)の場合、x1
s=40、x2
s=45であるため、max(x1
s,x2
s)=45となる。
また、min(x1e,x2e)は、x座標のうち小さい方の値を選択すること表す。図12(c)の場合、x1e=50、x2e=54であるため、min(x1e,x2e)=50となる。
同様に、max(y1s,y2s)は、y座標のうち大きい方の値を選択することを表す。図12(c)の場合、y1s=46、y2s=35であるため、max(y1s,y2s)=46となる。
また、min(y1e,y2e)は、y座標のうち小さい方の値を選択すること表す。図12(c)の場合、y1e=78、y2e=65であるため、min(y1e,y2e)=65となる。
図12(c)の例は、重なり除去部503が、重なり領域1210のx座標、y座標、幅、高さとして、
・x座標=max(x1s,x2s)=45、
・y座標=max(y1s,y2s)=46、
・幅=min(x1e,x2e)−max(x1s,x2s)=5、
・高さ=min(y1e,y2e)−max(y1s,y2s)=19、
を算出し、追跡対象情報310の“重なり領域”に、それぞれ「45」、「46」、「5」、「19」を記録したことを示している。
(4)存在範囲決定部による存在範囲決定処理の詳細
次に、存在範囲決定部504による存在範囲決定処理(ステップS605)の詳細について説明する。図13は、存在範囲決定部により実行される存在範囲決定処理のフローチャートである。
ステップS1301において、存在範囲決定部504は、処理対象の画像データに含まれる人物の“人物領域”であって、“重なりフラグ”が「1」の人物(つまり、奥側の人物)の“人物領域”及び“重なり領域”を、追跡対象情報310から読み出す。
ステップS1302において、存在範囲決定部504は、読み出した“人物領域”と“重なり領域”とに基づいて、奥側の人物が存在する範囲を識別する。
ステップS1303において、存在範囲決定部504は、識別した存在範囲の画像を用いて、奥側の人物の範囲及びその周辺の範囲を走査し、各位置での画像の類似度を算出する。
ステップS1304において、存在範囲決定部504は、ステップS1303において算出した各位置での画像の類似度に基づいて濃淡画像を生成することで、類似度マップを生成する。これにより、奥側の人物を追跡するのに有効な範囲が決定される。存在範囲決定部504は、生成した類似度マップを保存する。
ステップS1305において、存在範囲決定部504は、“重なりフラグ”が「1」の全ての人物の人物領域について、処理を行ったか否かを判定する。ステップS1305において、処理を行っていない人物の人物領域があると判定した場合には(ステップS1305においてYesの場合には)、ステップS1301に戻る。
一方、ステップS1305において、“重なりフラグ”が「1」の全ての人物の人物領域について処理を行ったと判定した場合には(ステップS1305においてNoの場合には)、存在範囲決定処理を終了する。
図14は、存在範囲決定部により実行される存在範囲決定処理を模式的に示した図である。図14(a)において、存在範囲決定部504は、人物1020の人物領域から重なり領域を除去することで得られる、人物1020が存在する範囲を識別する。また、存在範囲決定部504は、人物1020の存在範囲1401の画像を抽出する。更に、存在範囲決定部504は、抽出した存在範囲1401の画像を用いて、人物1020の範囲及びその周辺の範囲を走査し、各位置での画像の類似度を算出する。なお、存在範囲決定部504は、例えば、下式に基づいて類似度を算出する。
ただし、Tは、存在範囲1401の画像(各画素の画素値)を表し、Iは、処理対象の画像データ(ただし、人物1020の範囲及びその周辺の範囲の画像データ)の各位置(x,y)での画像(各画素の画素値)を表す。また、hは、存在範囲1401の高さを表し、wは、存在範囲1401の幅を表す。
図14(b)は、各位置での類似度の算出結果を、濃淡画像1411として示した様子を示している。濃淡画像1411において濃度の高い領域は、類似度が高いことを示しており、人物1020の特徴が顕著に表れている領域である。一方、濃度が低い領域は、類似度が低いことを示しており、人物1020の特徴があまり表れていない領域である。したがって、次の処理対象の画像データにおいて、人物1020と同一人物を探索する場合には、濃淡画像1411において、濃度の高い領域を用いることが有効であるといえる。
存在範囲決定部504は、類似度を算出することで得た濃淡画像1411を、類似度マップとして保存する。
(5)移動量算出部による移動量算出処理の詳細
次に、移動量算出部505による移動量算出処理(ステップS606)の詳細について説明する。図15は、移動量算出部により実行される移動量算出処理のフローチャートである。
ステップS1501において、移動量算出部505は、処理対象の画像データについて、処理対象の人物の“重なりフラグ”を、追跡対象情報格納部133の追跡対象情報310から読み出す。
ステップS1502において、移動量算出部505は、読み出した“重なりフラグ”が「1」であるか否かを判定する。ステップS1502において、“重なりフラグ”が「1」でないと判定した場合には(ステップS1502においてNoの場合には)、処理対象の人物が手前側の人物であると判定し、ステップS1505に進む。
一方、ステップS1502において、“重なりフラグ”が「1」であると判定した場合には(ステップS1502においてYesの場合には)、処理対象の人物が奥側の人物であると判定し、ステップS1503に進む。
処理対象の人物が奥側の人物であった場合、ステップS1503において、移動量算出部505は、処理対象の人物の“重なり関係”を、追跡対象情報格納部133の追跡対象情報310から読み出す。
ステップS1504において、移動量算出部505は、読み出した“重なり関係”に対応する人物の、次の処理対象の画像データにおける“追跡フラグ”が「1」であるか否かを判定する。
ステップS1504において、“追跡フラグ”が「1」であると判定した場合には(ステップS1504においてYesの場合には)、ステップS1511に進む。
一方、ステップS1504において、“追跡フラグ”が「1」でないと判定した場合には(ステップS1504においてNoの場合には)、ステップS1505に進む。
ステップS1505において、移動量算出部505は、処理対象の人物の人物領域または処理対象の人物の“重なり関係”に対応する人物の人物領域の画像を用いて、次の処理対象の画像データを走査し、類似度を算出する。
ステップS1506において、移動量算出部505は、算出した類似度が所定の閾値以上であるか否かを判定する。ステップS1506において、所定の閾値以上であると判定した場合には(ステップS1506においてYesの場合には)、ステップS1507に進む。
ステップS1507において、移動量算出部505は、処理対象の人物または処理対象の人物の“重なり関係”に対応する人物と、次の処理対象の画像データ内で、類似度が最も高い位置の人物領域の人物とを、同一人物として関連付ける。
ステップS1508において、移動量算出部505は、処理対象の人物または処理対象の人物の“重なり関係”に対応する人物の、次の処理対象の画像データにおける“追跡フラグ”を「1」にする。
ステップS1509において、移動量算出部505は、同一人物として関連付けた人物の人物領域の移動量(処理対象の画像データから次の処理対象の画像データまでの間の移動量)を算出する。また、移動量算出部505は、算出した移動量を、追跡対象情報310において、処理対象の人物または処理対象の人物の“重なり関係”に対応する人物に対応付けて記録する。このとき、移動量算出部505は、算出した移動量を、次の処理対象の画像データのフレーム番号に対応付けて記録する。
一方、ステップS1506において、所定の閾値以上でないと判定した場合には(ステップS1506においてNoの場合には)、ステップS1510に進む。
ステップS1510において、移動量算出部505は、処理対象の人物または処理対象の人物の“重なり関係”に対応する人物の、次の処理対象の画像データにおける“追跡フラグ”を「0」にする。
ステップS1511において、移動量算出部505は、処理対象の画像データに含まれる全ての人物について、処理を行ったか否かを判定する。ステップS1511において、処理を行っていない人物がいると判定した場合には(ステップS1511においてYesの場合には)、ステップS1501に戻る。
一方、ステップS1511において、全ての人物について処理を行ったと判定した場合には(ステップS1511においてNoの場合には)、移動量算出処理を終了する。
図16は、移動量算出部により実行される移動量算出処理を模式的に示した図である。図16(a)の画像データ1610は、処理対象の画像データ(フレーム番号=「239」)であり、図16(b)の画像データ1620は、次の処理対象の画像データ(フレーム番号=「240」)である。
また、処理対象の画像データ1610において、人物領域1611は、“人物ID”が「3」の人物の人物領域であり、人物領域1612は、“人物ID”が「1」の人物の人物領域である。更に、人物1613は、“人物ID”が「2」の人物である。
ここで、処理対象の画像データ1610において、移動量算出部505が、人物領域1611の人物(人物ID=「3」)について移動量算出処理を行ったとする。人物領域1611の人物(人物ID=「3」)の場合、“重なりフラグ”が「0」であるため、移動量算出部505は、人物領域1611を用いて、次の処理対象の画像データ1620を走査し、各位置での画像の類似度を算出する。移動量算出部505は、次の処理対象の画像データ1620を走査するにあたり、例えば、以下のような類似度を用いる。
ただし、Tは、画像データ1610の人物領域1611の画像(各画素の画素値)を表し、Iは、次の処理対象の画像データ1620の各位置(x,y)での画像(各画素の画素値)を表す。また、hは、画像データ1610の人物領域1611の高さを表し、wは人物領域1611の幅を表す。
図16(b)は、人物領域1611を用いて次の処理対象の画像データ1620(フレーム番号=「240」)を走査した結果、領域1621の位置において、最も高い類似度が得られたことを示している。移動量算出部505は、領域1621に含まれる人物が、処理対象の画像データ1610(フレーム番号=「239」)において検出された人物(人物ID=「3」)と同一人物であると判定する。
そして、移動量算出部505は、“人物ID”が「3」で、“フレーム番号”が「240」の“人物領域”に、領域1621のx座標、y座標、幅、高さを記録する(図16(d)参照)。また、移動量算出部505は、“人物ID”が「3」で、“フレーム番号”が「240」の“追跡フラグ”に「1」を記録する(図16(d)参照)。更に、移動量算出部505は、“人物ID”が「3」で、“フレーム番号”が「240」の“移動量”に、領域1621と人物領域1611との位置の差分(x方向の差分、y方向の差分)を記録する(図16(d)参照)。なお、“人物ID”が「3」の人物の“移動量”は、図16(c)の矢印1631により表すことができる。
続いて、処理対象の画像データ1610において、移動量算出部505が、人物領域1612の人物(“人物ID”が「1」)について移動量算出処理を行ったとする。移動量算出部505では、人物領域1612の人物の場合も、人物領域1611の人物の場合と同様の処理を行う。
すなわち、人物領域1612の人物(“人物ID”が「1」)の場合も、“重なりフラグ”が「0」であるため、移動量算出部505は、人物領域1612を用いて、次の処理対象の画像データ1620を走査し、各位置での画像の類似度を算出する。
図16(b)は、人物領域1612を用いて次の処理対象の画像データ1620(“フレーム番号”が「240」)を走査することで、領域1622の位置において、最も高い類似度が得られたことを示している。移動量算出部505は、領域1622に含まれる人物が、処理対象の画像データ1610(“フレーム番号”が「239」)において検出された人物(“人物ID”が「1」)と同一人物であると判定する。
そして、移動量算出部505は、“人物ID”が「1」で、“フレーム番号”が「240」の“人物領域”に、領域1622のx座標、y座標、幅、高さを記録する(図16(d)参照)。また、移動量算出部505は、“人物ID”が「1」で、“フレーム番号”が「240」の“追跡フラグ”に「1」を記録する(図16(d)参照)。更に、移動量算出部505は、“人物ID”が「1」で、“フレーム番号”が「240」の“移動量”に、領域1622と人物領域1612との位置の差分(x方向の差分、y方向の差分)を記録する(図16(d)参照)。なお、“人物ID”が「1」の人物の“移動量”は、図16(c)の矢印1632により表すことができる。
続いて、処理対象の画像データ1610において、移動量算出部505が、人物1613について移動量算出処理を行ったとする。人物1613(“人物ID”が「2」)の場合、“重なりフラグ”が「1」であるため、移動量算出部505は、“重なり関係”を読み出す。
ここで、人物1613(“人物ID”が「2」)の“重なり関係”は「3」であり、次の処理対象の画像データ1620(“フレーム番号”が「240」)において“人物ID”が「3」の“追跡フラグ”は、既に「1」になっている。
このため、移動量算出部505は、処理対象の人物1613の“重なり関係”に対応する人物(“人物ID”が「3」の人物)については、次の処理対象の画像データ1620において、人物領域に基づく走査を行わない。
また、移動量算出部505は、処理対象の人物1613についても、次の処理対象の画像データ1620において、人物領域に基づく走査を行わない(人物1613については、代わりに、特徴領域算出処理及び探索処理を行う)。
(6)特徴領域算出部による特徴領域算出処理の詳細
次に、特徴領域算出部506による特徴領域算出処理(ステップS608)の詳細について説明する。図17は、特徴領域算出部により実行される特徴領域算出処理のフローチャートである。
ステップS1701において、特徴領域算出部506は、処理対象の画像データにおいて、処理対象の人物の“重なりフラグ”及び“追跡フラグ”を、追跡対象情報格納部133の追跡対象情報310から読み出す。
ステップS1702において、特徴領域算出部506は、読み出した“重なりフラグ”が「1」で、かつ“追跡フラグ”が「0」であるかを判定する。ステップS1702において、読み出した“重なりフラグ”が「1」でないと判定した場合、または、“追跡フラグ”が「0」でないと判定した場合には(ステップS1702においてNoの場合には)、ステップS1708に進む。
一方、ステップS1702において、読み出した“重なりフラグ”が「1」で、かつ“追跡フラグ”が「0」であると判定した場合には(ステップS1702においてYesの場合には)、ステップS1703に進む。
ステップS1703において、特徴領域算出部506は、処理対象の人物の“重なり関係”を、追跡対象情報格納部133の追跡対象情報310から読み出す。
ステップS1704において、特徴領域算出部506は、読み出した“重なり関係”に対応する人物の“移動量”を、追跡対象情報格納部133の追跡対象情報310から読み出す。このとき、特徴領域算出部506は、処理対象の画像データのフレーム番号に対応付けて記録されている“移動量”及び次の処理対象の画像データのフレーム番号に対応付けて記録されている“移動量”を読み出す。
ステップS1705において、特徴領域算出部506は、処理対象の人物の“重なり関係”に対応する人物の移動量の変化を算出する。具体的には、特徴領域算出部506は、ステップS1704において読み出した2つの移動量の差分を算出することで、移動量の変化を算出する。
ステップS1706において、特徴領域算出部506は、移動量の変化に基づいて、次の処理対象の画像データにおける、重なり領域の変化を推定する。また、特徴領域算出部506は、推定した変化後の重なり領域に基づいて、次の処理対象の画像データにおける、処理対象の人物の存在範囲を推定する。
ステップS1707において、特徴領域算出部506は、推定した範囲に応じた処理対象の画像データの領域を、奥側の人物を探索する際に用いる特徴領域として算出する。
ステップS1708において、特徴領域算出部506は、処理対象の画像データに含まれる全ての人物について、処理を行ったか否かを判定する。ステップS1708において、処理を行っていない人物がいると判定した場合には(ステップS1708においてYesの場合には)、ステップS1701に戻る。
一方、ステップS1708において、全ての人物について処理を行ったと判定した場合には(ステップS1708においてNoの場合には)、特徴領域算出処理を終了する。
図18は、特徴領域算出部により実行される特徴領域算出処理を模式的に示した第1の図である。図18(a)は、処理対象の人物1802(奥側の人物)と重なり関係にある人物1801(手前側の人物)のy方向の移動量の変化に伴う、人物1802と人物1801との間のy方向の位置関係の変化を示している。図18(b)は、人物1802と人物1801との間のy方向の位置関係の変化に伴う、重なり領域1805の変化を示している。
特徴領域算出部506は、手前側の人物1801のy方向の移動量の変化に基づいて、処理対象の画像データにおける、奥側の人物1802の重なり領域の変化を推定する。これにより、特徴領域算出部506は、重なりがあると判定された人物1802の、次の処理対象の画像データにおける存在範囲を推定する。また、特徴領域算出部506は、推定した範囲に応じた処理対象の画像データの領域を、奥側の人物を探索する際に用いる特徴領域として算出する。
処理対象の画像データにおいて、人物1801と人物1802とが、図18(a)の符号1800に示す位置関係にあったとする。また、そのときの人物1802の人物1801に対する重なり領域が、重なり領域1805に示す大きさであったとする。
このような場合、次の処理対象の画像データにおいて、人物1801と人物1802とのy方向の位置関係は符号1820、1830、1840に示す位置関係のいずれかに変化することが考えられる。
符号1820に示す位置関係は、処理対象の画像データにおいて算出された、人物1801のy方向の移動量(Δyt)が、次の処理対象の画像データにおいて算出された、人物1801のy方向の移動量(Δyt+1)よりも少ない場合の位置関係を示している。
なお、Δytは、処理対象の画像データにおいて算出された、人物1801のy方向の移動量を表す。具体的には、Δytは、処理対象の画像データにおける人物1801の人物領域のy座標と、処理対象の画像データの1つ前の画像データにおける人物1801の人物領域のy座標との差分により算出される。
また、Δyt+1は、次の処理対象の画像データにおいて算出された、人物1801のy方向の移動量を表す。具体的には、Δyt+1は、次の処理対象の画像データにおける人物1801の人物領域のy座標と、処理対象の画像データにおける人物1801の人物領域のy座標との差分により算出される。
Δyt+1の方がΔytより少ない場合、人物1802における重なり領域1825は、重なり領域1805と比較してy方向に小さくなる。
なお、重なり領域1825のy座標の最小値をoy’sとすると、oy’s=oys−(Δyt−Δyt+1)と表すことができる(ただし、oysは、重なり領域1805のy座標の最小値を表す)。
符号1830に示す位置関係は、処理対象の画像データにおいて算出された、人物1801のy方向の移動量(Δyt)が、次の処理対象の画像データにおいて算出された、人物1801のy方向の移動量(Δyt+1)と同じ場合の位置関係を示している。Δyt+1がΔytと同じ場合、人物1802における重なり領域1835は、重なり領域1805と等しくなる。つまり、oy’s=oysとなる。
符号1840に示す位置関係は、処理対象の画像データにおいて算出された、人物1801のy方向の移動量(Δyt)が、次の処理対象の画像データにおいて算出された、人物1801のy方向の移動量(Δyt+1)よりも多い場合の位置関係を示している。Δyt+1の方がΔytよりも多い場合、人物1802における重なり領域1845は、重なり領域1805と比較してy方向に大きくなる。
なお、重なり領域1845のy座標の最小値をoy’sとすると、oy’s=oys−(Δyt−Δyt+1)と表すことができる。
このように、特徴領域算出部506は、手前側の人物のy方向の移動量の変化に基づいて、次の処理対象の画像データにおける奥側の人物のy方向の重なり領域の変化を推定する。これにより、特徴領域算出部506は、次の処理対象の画像データにおける、奥側の人物の存在範囲(y方向)を推定することができる。また、特徴領域算出部506は、推定した存在範囲(y方向)に対応する、処理対象の画像データにおける領域を、特徴領域として算出することができる。
図19は、特徴領域算出部により実行される特徴領域算出処理を模式的に示した第2の図である。図19(a)は、処理対象の人物1902(奥側の人物)と重なり関係にある人物1901(手前側の人物)のx方向の移動量の変化に伴う、人物1902と人物1902との間のx方向の位置関係の変化を示している。ただし、図19(a)は、pxft≧pxbtの場合の位置関係の変化を示している。なお、pxftとは、処理対象の画像データにおける人物1901の人物領域のx座標を表し、pxbtとは、処理対象の画像データにおける人物1902の人物領域のx座標を表す。
図19(b)は、人物1902と人物1901との間のx方向の位置関係の変化に伴う、重なり領域の変化であって、pxft≧pxbtの場合の重なり領域の変化を示している。
処理対象の画像データにおいて、人物1901と人物1902とが、図19(a)の符号1900に示す位置関係にあったとする。また、そのときの人物1902の人物1901に対する重なり領域が、重なり領域1905に示す大きさであったとする。
このような場合、次の処理対象の画像データにおいて、人物1901と人物1902との位置関係は符号1920、1930、1940に示す位置関係のいずれかに変化することが考えられる。
符号1920に示す位置関係は、処理対象の画像データにおいて算出された、人物1901のx方向の移動量(Δxt)が、次の処理対象の画像データにおいて算出された、人物1901のx方向の移動量(Δxt+1)よりも多い場合の位置関係を示している。
人物1901のx方向の移動量(Δxt)は、処理対象の画像データにおける人物1901の人物領域のx座標と、処理対象の画像データの1つ前の画像データにおける人物1901の人物領域のx座標との差分により算出される。
また、人物1901のx方向の移動量(Δxt+1)は、次の処理対象の画像データにおける人物1901の人物領域のx座標と、処理対象の画像データにおける人物1901の人物領域のx座標との差分により算出される。
Δxt+1の方がΔxtよりも多い場合、人物1902における重なり領域1925は、重なり領域1905と比較してx方向に小さくなる。
なお、重なり領域1925のx座標の最小値をox’sとすると、ox’s=oxs−(Δxt−Δxt+1)と表すことができる(ただし、oxsは、重なり領域1905のx座標の最小値を表す)。
符号1930に示す位置関係は、処理対象の画像データにおいて算出された、人物1901のx方向の移動量(Δxt)が、次の処理対象の画像データにおいて算出された、人物1902のx方向の移動量(Δxt+1)と同じ場合の位置関係を示している。Δxt+1がΔxtと同じ場合、人物1902における重なり領域1935は、重なり領域1905と等しくなる。つまり、ox’s=oxsとなる。
符号1940に示す位置関係は、処理対象の画像データにおいて算出された、人物1901のx方向の移動量(Δxt)が、次の処理対象の画像データにおいて算出された、人物1902のx方向の移動量(Δxt+1)よりも少ない場合の位置関係を示している。Δxt+1がΔxtよりも少ない場合、人物1902における重なり領域1945は、重なり領域1905と比較してx方向に大きくなる。
なお、重なり領域1945のx座標の最小値をox’sとすると、ox’s=oxs−(Δxt−Δxt+1)と表すことができる。
同様に、図19(c)は、処理対象の人物1902と重なり関係にある人物1901のx方向の移動量の変化に伴う、人物1902と人物1901との間のx方向の位置関係の変化であって、pxft<pxbtの場合の位置関係の変化を示している。図19(d)は、人物1902と人物1901との間のx方向の位置関係の変化に伴う、重なり領域の変化であって、pxft<pxbtの場合の重なり領域の変化を示している。
処理対象の画像データにおいて、人物1901と人物1902とが、図19(c)の符号1950に示す位置関係にあったとする。また、そのときの人物1902の人物1901に対する重なり領域は、重なり領域1955に示す大きさであったとする。
このような場合、次の処理対象の画像データにおいて、人物1901と人物1902との位置関係は符号1970、1980、1990に示す位置関係のいずれかに変化することが考えられる。
符号1970に示す位置関係は、処理対象の画像データにおいて算出された、人物1901のx方向の移動量(Δxt)が、次の処理対象の画像データにおいて算出された、人物1901のx方向の移動量(Δxt+1)よりも少ない場合の位置関係を示している。
人物1901のx方向の移動量(Δxt)は、処理対象の画像データにおける人物1901の人物領域のx座標と、処理対象の画像データの1つ前の画像データにおける人物1901の人物領域のx座標との差分により算出される。
また、人物1901のx方向の移動量(Δxt+1)は、次の処理対象の画像データにおける人物1901の人物領域のx座標と、処理対象の画像データにおける人物1901の人物領域のx座標との差分により算出される。
Δxt+1の方がΔxtよりも少ない場合、人物1902における重なり領域1975は、重なり領域1955と比較してx方向に小さくなる。
なお、重なり領域1975のx座標の最大値をox’eとすると、ox’e=oxe−(Δxt−Δxt+1)と表すことができる(ただし、oxeは、重なり領域1955のx座標の最大値を表す)。
符号1980に示す位置関係は、処理対象の画像データにおいて算出された、人物1901のx方向の移動量(Δxt)が、次の処理対象の画像データにおいて算出された、人物1902のx方向の移動量(Δxt+1)と同じ場合の位置関係を示している。Δxt+1がΔxtと同じ場合、人物1902における重なり領域1985は、重なり領域1955と等しくなる。つまり、ox’e=oxeとなる。
符号1990に示す位置関係は、処理対象の画像データにおいて算出された、人物1901のx方向の移動量(Δxt)が、次の処理対象の画像データにおいて算出された、人物1902のx方向の移動量(Δxt+1)よりも多い場合の位置関係を示している。Δxt+1がΔxtよりも多い場合、人物1902における重なり領域1985は、重なり領域1955と比較してx方向に大きくなる。
なお、重なり領域1995のx座標の最大値をox’eとすると、ox’e=oxe−(Δxt−Δxt+1)と表すことができる。
このように、特徴領域算出部506は、手前側の人物のx方向の移動量の変化に基づいて、次の処理対象の画像データにおける奥側の人物のx方向の重なり領域の変化を推定する。これにより、特徴領域算出部506は、次の処理対象の画像データにおける、奥側の人物の存在範囲(x方向)を推定することができる。また、特徴領域算出部506は、推定した存在範囲(x方向)に応じた処理対象の画像データの領域を、特徴領域として算出することができる。
(7)探索部による探索処理の詳細
次に、探索部507による探索処理(ステップS609)の詳細について説明する。図20は、探索部により実行される探索処理のフローチャートである。
ステップS2001において、探索部507は、処理対象の画像データにおいて、処理対象の人物の“重なりフラグ”及び“追跡フラグ”を、追跡対象情報310から読み出す。
ステップS2002において、探索部507は、読み出した“重なりフラグ”が「1」で、かつ“追跡フラグ”が「0」であるかを判定する。ステップS2002において、読み出した“重なりフラグ”が「1」でないと判定した場合、または、“追跡フラグ”が「0」でないと判定した場合には(ステップS2002においてNoの場合には)、ステップS2008に進む。
一方、ステップS2002において、読み出した“重なりフラグ”が「1」で、かつ“追跡フラグ”が「0」であると判定した場合には(ステップS2002においてYesの場合には)、ステップS2003に進む。
ステップS2003において、探索部507は、存在範囲決定部504により保存された、処理対象の画像データにおける、処理対象の人物についての類似度マップを読み出す。
ステップS2004において、探索部507は、処理対象の人物の“重なり関係”を、追跡対象情報310から読み出し、読み出した“重なり関係”に対応する人物の“人物領域”を、追跡対象情報310から読み出す。
ステップS2005において、探索部507は、読み出した“重なり関係”に対応する人物の、次の処理対象の画像データにおける“移動量”を、追跡対象情報310から読み出す。
ステップS2006において、探索部507は、ステップS2003において読み出した類似度マップを、ステップS2005において読み出した移動量に基づいて移動させ、次の処理対象の画像データにおいて探索領域を設定する。
ステップS2007において、探索部507は、処理対象の人物について、特徴領域算出部506により算出された特徴領域の画像を用いて、設定した探索領域を探索し、処理対象の人物と同一人物の有無を判定する。また、探索部507は、探索の結果、処理対象の人物と同一人物を検出した場合には、検出した人物の人物領域を、次の処理対象の画像データにおける人物領域として、追跡対象情報310に記録する。更に、探索部507は、追跡対象情報310において、次の処理対象の画像データにおける“人物領域”に対応する“追跡フラグ”に、「1」を記録する。
ステップS2008において、探索部507は、処理対象の画像データに含まれる全ての人物について、処理を行ったか否かを判定する。ステップS2008において、処理を行っていない人物がいると判定した場合には(ステップS2008においてYesの場合には)、ステップS2001に戻る。
一方、ステップS2008において、全ての人物について処理を行ったと判定した場合には(ステップS2008においてNoの場合には)、探索処理を終了する。
図21は、探索部により実行される探索処理を模式的に示した図である。図21において、類似度マップ2110は、探索部507により読み出された、処理対象の画像データ2100における、処理対象の人物2101(奥側の人物)の類似度マップを示している。また、画像データ2120は、次の処理対象の画像データにおける人物2121(手前側の人物)の移動量を示している。
画像データ2130は、探索部507が、次の処理対象の画像データにおいて、手前側の人物2121の移動量に応じた位置に、類似度マップ2110を移動させた様子を示したものである。
また、画像データ2140は、探索部507が、移動後の類似度マップに基づいて、次の処理対象の画像データにおいて探索領域2142を設定した様子を示している。
なお、探索部507は、以下の条件を満たす領域(x、y)を、探索領域2142として設定する。
ただし、s
xmin、s
xmax、s
ymin、s
ymaxは、処理対象の画像データ2100における類似度マップのx座標の最小値、最大値、y座標の最小値、最大値をそれぞれを表している。また、Δx、Δyは、次の処理対象の画像データにおける、手前側の人物2121の移動量を表している。また、sim[x,y]は、座標(x,y)における類似度を表し、thは閾値を表している。更に、pyは、次の処理対象の画像データにおける、手前側の人物2121の人物領域のy座標を表している。
これにより、処理対象の人物2101について、次の処理対象の画像データ2140において、移動後の類似度マップ2110に応じた探索領域2142を設定することができる。なお、探索部507により探索領域2142が設定されると、人物検出部501は、設定された探索領域2142に対して、特徴領域の画像を用いて探索を行い、処理対象の人物2101と同一人物の有無を判定する。画像データ2140において、人物2141は、設定された探索領域2142において、人物2101と同一人物と判定された人物を示している。
図22は、探索処理後の追跡対象情報の一例を示す図である。図22に示すように、探索処理が行われることで、追跡対象情報310のフレーム番号=「240」の“人物領域”には、人物2141(“人物ID”が「2」)の人物領域(x座標、y座標、幅、高さ)が記録される。
以上の説明から明らかなように、人物追跡装置130は、複数の画像において人物を検出し、それぞれの画像において、手前側の人物と奥側の人物との間に重なりが発生しているか否かを判定する。また、人物追跡装置130は、重なりが発生している場合に、奥側の人物の人物領域のうち、重なりがない領域(存在範囲)の画像に基づいて類似度マップを生成し、奥側の人物を追跡するのに有効な範囲を決定する。また、人物追跡装置130は、手前側の人物を追跡することで得た追跡結果に基づいて、重なりがない領域(存在範囲)の変化を算出し、変化後の範囲を特徴領域として算出する。また、人物追跡装置130は、手前側の人物の追跡結果に基づいて、奥側の人物を追跡するのに有効な範囲(類似度マップ)を移動させることで、奥側の人物を追跡するための探索領域を設定する。更に、人物追跡装置130は、設定した探索領域を、特徴領域の画像を用いて探索することで、奥側の人物の有無を判定する。
このように、人物追跡装置130では、重なりが発生している場合でも、手前側の人物の追跡結果を用いて、適切な探索領域を設定するとともに適切な特徴領域を算出し、該算出した特徴領域の画像を用いて人物の探索を行う。
これにより、人物追跡装置130によれば、重なりが発生している場合でも、精度よく同一人物を検出することができる。つまり、人物追跡装置130によれば、人物追跡において、高い追跡精度を得ることができる。
[他の実施形態]
上記実施形態では、撮像装置110において撮像された動画像データを動画像データ格納装置120に格納するものとして説明したが、撮像装置110において撮像された動画像データは、人物追跡装置130に格納してもよい。
また、上記実施形態では、人物追跡装置130が追跡対象情報を解析装置140に送信し、解析装置140において追跡対象情報を解析するものとして説明したが、追跡対象情報は、人物追跡装置130において解析してもよい。
また、上記実施形態では、奥側の人物の特徴領域の画像を用いて探索領域を探索する場合の類似度の算出方法について特に言及しなかったが、例えば、類似度マップを生成する際の類似度の算出方法と同様の算出方法を用いるものとする。
また、上記実施形態では、類似度マップを生成するにあたり、存在範囲の画像(各画素の画素値)を用いる場合について説明したが、存在範囲の画像に基づいて算出される画像特徴量を用いてもよい。同様に、上記実施形態では、手前側の人物と同一人物を検索するにあたり、手前側の人物の人物領域の画像(各画素の画素値)を用いる場合について説明したが、手前側の人物の人物領域の画像に基づいて算出される画像特徴量を用いてもよい。
また、上記実施形態では、追跡する対象物を人物として説明したが、追跡する対象物は人物に限定されず、人物以外(例えば、車両等)であってもよい。つまり、上記実施形態で説明した、人物追跡装置、人物追跡プログラム、人物追跡システムは、それぞれ、対象物追跡装置、対象物追跡プログラム、対象物追跡システムの一例である。
なお、開示の技術では、以下に記載する付記のような形態が考えられる。
(付記1)
第1の画像と前記第1の画像とは異なる時刻に撮像された第2の画像のそれぞれから対象物を検出し、
前記第1の画像において手前に位置する第1の対象物と奥側に位置する第2の対象物との間で重なりが発生しているか否かを判定し、
重なりが発生している場合に、重なり領域を除去した領域の画像に基づいて、前記第2の対象物の有無の判定に用いる範囲を決定し、
前記第1の対象物の追跡結果に基づいて前記範囲を移動させることで、前記第2の画像における前記第2の対象物を追跡するための探索領域を設定し、前記第2の画像についての前記探索領域を探索することで、前記第2の対象物の有無を判定する、
処理をコンピュータに実行させるための対象物追跡プログラム。
(付記2)
前記第1の対象物を追跡することで得た追跡結果に基づいて、前記重なり領域を除去した領域が変化した場合の変化後の領域を算出し、
前記第2の画像についての前記探索領域を、前記変化後の領域の画像を用いて探索することで、前記第2の対象物の有無を判定することを特徴とする付記1に記載の対象物追跡プログラム。
(付記3)
前記第2の対象物の範囲及び前記第2の対象物の周辺の範囲を走査し、各位置で、前記重なり領域を除去した領域の画像との類似度を算出することで、前記第2の対象物の有無の判定に用いる範囲を決定することを特徴とする付記2に記載の対象物追跡プログラム。
(付記4)
前記第1の対象物を追跡することで得た追跡結果に基づいて、前記第1の対象物の移動量の変化を算出し、
算出した前記第1の対象物の移動量の変化に応じた前記重なり領域の変化から、前記重なり領域を除去した領域の変化を推定し、前記変化後の領域を算出することを特徴とする付記3に記載の対象物追跡プログラム。
(付記5)
コンピュータが、
第1の画像と前記第1の画像とは異なる時刻に撮像された第2の画像のそれぞれから対象物を検出し、
前記第1の画像において手前に位置する第1の対象物と奥側に位置する第2の対象物との間で重なりが発生しているか否かを判定し、
重なりが発生している場合に、重なり領域を除去した領域の画像に基づいて、前記第2の対象物の有無の判定に用いる範囲を決定し、
前記第1の対象物の追跡結果に基づいて前記範囲を移動させることで、前記第2の画像における前記第2の対象物を追跡するための探索領域を設定し、前記第2の画像についての前記探索領域を探索することで、前記第2の対象物の有無を判定する、
処理を実行することを特徴とする対象物追跡方法。
(付記6)
第1の画像と前記第1の画像とは異なる時刻に撮像された第2の画像のそれぞれから対象物を検出する検出部と、
前記第1の画像において手前に位置する第1の対象物と奥側に位置する第2の対象物との間で重なりが発生しているか否かを判定する判定部と、
重なりが発生している場合に、重なり領域を除去した領域の画像に基づいて、前記第2の対象物の有無の判定に用いる範囲を決定する決定部と、
前記第1の対象物の追跡結果に基づいて前記範囲を移動させることで、前記第2の画像における前記第2の対象物を追跡するための探索領域を設定し、前記第2の画像についての前記探索領域を探索することで、前記第2の対象物の有無を判定する探索部と
を有することを特徴とする対象物追跡装置。
なお、上記実施形態に挙げた構成等に、その他の要素との組み合わせ等、ここで示した構成に本発明が限定されるものではない。これらの点に関しては、本発明の趣旨を逸脱しない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。