1.第1の実施形態
1.1機能構成
図1は、この発明の一実施形態によるトラッキング装置の機能構成を示す図である。
追跡手段10は、移動体が撮像された動画データ2の各フレームから移動体を抽出し、移動体の動きをトラッキングする。判定枠設定手段4は、各フレームにおいて移動体を含む判定枠を設定する。この実施形態では、背景を取り除いた画像における一塊の画素(クラスター)を外包する矩形を、判定枠として設定するようにしている。
各移動体の判定枠が互いに重なっていなければ、移動体同士のオクルージョンは生じていないが、これが重なるとオクルージョンが生じている可能性がある。オクルージョン発生判断手段6は、現在のフレームの判定枠(現判定枠)が前のフレームの複数の判定枠(前判定枠)に重なっている場合であって、その複数の前判定枠のいずれもが、その所定割合以上、現判定枠に重なっている場合には、オクルージョンが発生したと判断する。
オクルージョン解除判断手段8は、オクルージョンが生じた後の現在のフレームの複数の判定枠(現判定枠)が、前のフレームの判定枠(前判定枠)に重なっている場合であって、その複数の現判定枠のいずれもが、その所定割合以上、前判定枠に重なっている場合には、オクルージョンが解除したと判断する。
上記のオクルージョンが生じている間は、追跡手段10は、各フレームから移動体を抽出できない。対応手段12は、オクルージョン解除を受けて、特徴点に基づいて、オクルージョン発生直前の移動体と、オクルージョン解除直後の移動体とを対応づける。したがって、オクルージョンが生じている間の移動体の詳細なトラッキングはできないが、オクルージョン前後で同一選手を判定し、オクルージョン前後の同一選手の位置を繋げた軌跡を得ることができる。
このようにして、全体としてのトラッキングの精度を高めることができる。
1.2ハードウエア構成
図2に、トラッキング装置のハードウエア構成を示す。CPU30には、メモリ32、ディスプレイ34、通信回路36、SSD38、DVD-ROMドライブ40、入出力インターフェイス42、マウス/キーボード44が接続されている。通信回路36は、インターネットに接続するための回路である。
SSD38には、オペレーティングシステム50、トラッキングプログラム52、動画データ54が記録される。トラッキングプログラム52は、オペレーティングシステム50と協働してその機能を発揮するものである。これらプログラムは、DVD-ROM56に記録されていたものを、DVD-ROMドライブ40を介して、SSD38にインストールしたものである。
SSD38には、解析対象である動画データ54も記録される。この動画データ54は、カメラ(図示せず)によって撮像されて可搬性記録媒体58に記録されたものを、入出力インターフェイス42を介して、SSD38に取り込んだものである。なお、インターネットなどを介して、カメラから直接取り込むようにしてもよい。
1.3トラッキング処理
1.3.1処理の概要とオクルージョン判定処理
図3~図5に、トラッキングプログラム52のフローチャートを示す。CPU30は、動画データ54(カラー画像または白黒画像を用いることができる)の開始フレームをSSD38から取得する。なお、ここでは、サッカーグラウンド全体を、固定カメラによって撮像した動画データ54を例として説明する。
CPU30は、動画データから背景を削除し、選手のみの画像とする(ステップS1)。図6aが撮像画像であり、図6bが背景を削除した画像である。動画データに対して、背景差分法にて背景を取り除くことができる。なお、背景画像は、選手のいない状態であらかじめ撮像しておいてもよいが、動画の全フレームを解析して背景画像を生成するようにしてもよい。
次に、CPU30は、選手のみとした動画データの開始フレームを取得する(ステップS2)。開始フレームは、必ずしも先頭フレームである必要はなく、個々の選手が判別しやすい適切なフレーム(オクルージョンのないフレーム)を開始フレームとすればよい。この実施形態では、操作者が動画データを再生し、ディスプレイ34にて確認しながら、開始フレームを選択するようにしている。
CPU30は、図6bの背景差分による選手の画像を2値化する。これにより、選手の部分は「黒」、背景は「白」の画像を得ることができる。CPU30は、この2値化した画像に基づいて、図7に示すように、当該開始フレームにおける選手(黒画像の塊)を囲うように判定枠を設定する(ステップS3)。この際、CPU30は、各判定枠にID(たとえば連番による番号)を付し、対応づけて記録する。このIDは、選手IDとして用いる。
この実施形態では、判定枠は、選手を外包するように設定される。すなわち、当該選手を示す画素のうち最も小さいX座標、Y座標による点Aと、最も大きいX座標、Y座標による点Bによって定義される矩形によって設定する。なお、所定の画素数をもたない塊については(画像ノイズ)、選手ではないものとして判定枠の設定は行わない。図7に示すように、この実施形態では選手の影も含めて判定枠が設定される。
この実施形態では、判定枠をCPU30によって自動設定するようにしているが、開始フレームにおける設定は操作者がマウス44を操作して設定するようにしてもよい。また、CPU30が自動設定した判定枠を、操作者が修正するようにしてもよい。
次に、CPU30は、開始フレームをディスプレイ34に表示する(二値化されていない画像)。図6bに、開始フレームの例を示す。操作者はディスプレイ34に表示された開始フレームの画像に対し、マウス44を操作して、各選手に対し長方形の人物枠を設定する(ステップS4)。図8に、競技中のすべての選手に対して人物枠60a、60b・・・を設定した状態を示す。この実施形態では、影を除いて人物枠を設定するようにしている。各人物枠は、先に設定した判定枠と対応付けられ、ID(選手ID)も対応づけて記録される。
操作者は、マウス44を操作して人物枠の大きさを変え、概ね、選手を外包するように設定する。なお、この実施形態では、人物枠の大きさは変えられるが、縦横比は固定(たとえば、縦2:横1)にしている。
次に、CPU30は、人物枠中の選手の画像について、画像としての特徴点を抽出する(ステップS4)。抽出した特徴点は座標によってその位置が特定される。さらに、当該特徴点の特徴量を算出する(ステップS4)。特徴点の特徴量は、当該特徴点の周囲の画素の値によって算出される。なお、特徴点の抽出と、特徴量の算出は、後に詳述する。
続いて、CPU30は、開始フレームを参照フレームとして、上記の判定枠、人物枠、特徴点などとともにSSD38に記録する(ステップS5)。
CPU30は、人物枠を設定してトラッキングを行う前に、まず、オクルージョンが発生していないかどうかを判断する(ステップS6~S18)。この処理については後述するとして、今、オクルージョンが生じていないものとして説明を進める。
CPU30は、ステップS23において、参照フレームの人物枠に含まれる特徴点と、対象フレーム中の特徴点を対応付け、対象フレームにおける人物枠を設定する(ステップS23)。この対応づけは、特徴点の特徴量に基づいて行う。既に、参照フレームにおける人物枠は設定されているので、対象フレームにおける人物枠を設定することで、選手の移動を追跡することができる。
上記の処理を参照フレーム中のすべての人物枠について行い(ステップS21、S25)、各選手の移動をトラッキングする。
以上のようにして、対象フレーム中に全ての選手の人物枠を設定すると、CPU30は、対象フレームを新たな参照フレームとする(ステップ26)。さらに、次のフレームを対象フレームとして(ステップS7)、上記の処理を繰り返す。このようにして、フレームごとに人物枠を設定し、選手の位置のトラッキングを行うことができる。
CPU30は、この処理を全てのフレームについて繰り返し、人物枠によって選手のトラッキングを行う。たとえば、各フレームの人物枠の所定座標(重心座標や底辺の中心座標など)の動きを、選手IDとともに順次記録し、各選手をトラッキングすることができる。
次に、オクルージョンが発生した場合の処理について説明する。CPU30は、ステップS21~S24の処理を行う前に、当該対象フレームにおいてオクルージョンが生じているかどうかを判断するようにしている(ステップS9~S18)。
CPU30は、対象フレームについて、ステップS3と同じようにして判定枠を設定する(ステップS8)。オクルージョンが生じると、図9に示すように、2人の選手が重なり、判定枠が2選手について一つとなる。したがって、CPU30は、参照フレームにおける複数の判定枠が、一つの判定枠になったことを検出してオクルージョンが発生したことを判定する。以下詳しく説明する。
CPU30は、対象フレームの判定枠と、参照フレームの判定枠を対比し、対象フレームの判定枠に、参照フレームの判定枠が複数重なっているかどうかを判断する(ステップS10)。
たとえば、図10Aに示すように、対象フレームの判定枠63が、参照フレームの判定枠61a、61bと重なる場合には、判定枠61a、61bの選手にオクルージョンが生じたと判断することができる。
ただし、図10Bに示すように、対象フレームの判定枠63が、参照フレームの判定枠61bの移動したものである場合にも、位置関係によっては、対象フレームの判定枠63に、参照フレームの判定枠61aが一部重なる可能性がある。これは、たまたま、前の位置に重なっただけであり、オクルージョンが生じているわけではない。
この実施形態では、上記を区別して、正しくオクルージョンを判断するために、参照フレームの判定枠がともに所定割合(たとえば60%)以上の面積で重なっている場合にのみ、オクルージョンが生じたと判断するようにしている(ステップS11)。
図10Aの場合であれば、参照フレームの判定枠61aの60%以上の面積において、対象フレームの判定枠63に重なっており、参照フレームの判定枠61bの60%以上の面積において、対象フレームの判定枠63に重なっている。したがって、CPU30は、オクルージョンが発生したと判断する。
一方、図10Bの場合であれば、参照フレームの判定枠61bの60%以上の面積において、対象フレームの判定枠63に重なっているものの、参照フレームの判定枠61aの60%未満の面積しか、対象フレームの判定枠63に重なっていない。したがって、CPU30は、オクルージョンは発生していないと判断する。
CPU30は、オクルージョンが発生していると判断すると、対象フレームの判定枠63に対応づけて、オクルージョンフラグを立てる(ステップS12)。さらに、参照フレームの判定枠61a、61bに含まれる選手IDを記録する(ステップS13)。判定枠は、(オクルージョンがなければ)人物枠と1対1に対応する。したがって、人物枠に対応づけられた選手IDを取得することで、上記処理を行うことができる。以上のようにして、オクルージョンが生じた判定枠63に対し、オクルージョンが生じた選手IDを対応づけて記録することができる。
以上の処理は、対象フレーム中の全ての判定枠に対して行われる(ステップS9)。
オクルージョンが生じた選手(人物)については、CPU30は、一時的にトラッキングを行わない(ステップS22)。すなわち、オクルージョンが生じている間、対象フレームに当該選手(人物)の人物枠の設定をしない。
CPU30は、上記のようにステップS10、S11において、判定枠に基づき、オクルージョンが生じたかどうかを判断している。さらに、CPU30は、一旦生じたオクルージョンが解除されたかどうかの判断も行っている。この実施形態では、オクルージョンが発生したことを検知すると、当該オクルージョンが解除したことを検知するまでのフレームにおいて、オクルージョンが継続しているものと判断するようにしている。
CPU30は、オクルージョンが生じている判定枠について、以下の処理を行う。対象フレームの判定枠と、参照フレームの判定枠を対比し、参照フレームの判定枠に、対象フレームの判定枠が複数重なっているかどうかを判断する(ステップS14)。
たとえば、図11Aに示すように、参照フレームの判定枠63が、対象フレームの判定枠65a、65bと重なる場合には、判定枠65a、65bの選手に生じていたオクルージョンが解除されたと判断することができる。
ただし、図11Bに示すように、参照フレームの判定枠63がオクルージョン状態のまま、対象フレームの判定枠65bに移動したものである場合にも、位置関係によっては、参照フレームの判定枠63に、対象フレームの他の判定枠65aが一部重なる可能性がある。これは、たまたま、重なっただけであり、オクルージョンが解除されたわけではない。
この実施形態では、上記を区別して、正しくオクルージョンを判断するために、参照フレームの判定枠がともに所定割合(たとえば60%)以上の面積で重なっている場合にのみ、オクルージョンが解除されたと判断するようにしている(ステップS15)。
図11Aの場合であれば、対象フレームの判定枠65aの60%以上の面積において、参照フレームの判定枠63に重なっており、対象フレームの判定枠65bの60%以上の面積において、参照フレームの判定枠63に重なっている。したがって、CPU30は、オクルージョンが解除したものと判断する。
一方、図11Bの場合であれば、対象フレームの判定枠65bの60%以上の面積において、参照フレームの判定枠63に重なっているものの、対象フレームの判定枠65aの60%未満の面積しか、参照フレームの判定枠63に重なっていない。したがって、CPU30は、オクルージョンは解除されていないと判断する。
CPU30は、オクルージョンが解除されたと判断すると、参照フレームの判定枠63に対応づけられていた、オクルージョンフラグを降ろす(ステップS16)。さらに、オクルージョンが生じているものとして記録されていた選手IDを削除する(ステップS17)。
以上の処理は、対象フレーム中の全ての判定枠(ただし、ステップS14、S15、S16、S17は、オクルージョンが生じている判定枠のみ)に対して行われる(ステップS9)。なお、オクルージョン解除が判定された選手については、オクルージョン直前のフレームの人物枠から、現在の対象フレームの人物枠へのトラッキングを行う(ステップS24)。この対応付けには、人物枠内の特徴点を用いる。
図12Bを用いて、この対応付けのための処理を説明する。選手Aと選手Bのトラッキングが行われており、選手Aの人物枠A1~A30、選手Bの人物枠B1~B30としてトラッキングされている。選手Aは、人物枠A1、A2・・・の順でトラッキングされており、人物枠A30の直後に選手Bとのオクルージョンが生じ、人物枠F1にてオクルージョンが解除されている。選手Bは、人物枠B1、B2・・・の順でトラッキングされており、人物枠B30の直後に選手Aとのオクルージョンが生じ、人物枠F2にてオクルージョンが解除されている。
オクルージョン解除の際には、人物枠F1、F2が認識されているが、いずれが選手A、選手Bに対応するかを決定する必要がある。たとえば、人物枠F1について、可能性のある選手(ステップS13にてIDを記録した選手)全員のオクルージョン直前から所定フレーム数前(たとえば30フレーム前)までの人物枠全てを対象として、最も類似する人物枠を選択する。
たとえば、人物枠F1に含まれる特徴点と、人物枠A1に含まれる特徴点とを対応づける。すなわち、人物枠F1の特徴点のそれぞれについて、その特徴量(後述する)に対し、所定値以下の相違度であって最も相違度の小さい人物枠A1の特徴点を対応づける。このようにして、人物枠F1の特徴点と人物枠A1の特徴点を対応づける(対応付けがなされない特徴点も存在する)。さらに、対応付けがなされた各特徴点の特徴量の相違度を平均する。この平均相違度を、人物枠F1と人物枠A1の相違度とする。なお、平均相違度だけでなく、対応付けられた特徴点の数も含めて考慮して相違度を算出するようにしてもよい。
人物枠F1に対し、以上の処理を他の人物枠F2~F30、B1~B30についても行い、それぞれの枠に対する相違度を算出する。CPU30は、人物枠F1に対して、最も小さい相違度を有する人物枠を選択する。たとえば、選択された人物枠が選手Aに対するものであれば(人物枠A1からA30のいずれかであれば)、人物枠F1を選手Aの人物枠であるとして選手IDを対応づける。これにより、対応付け可能な選手Aをリストから削除する。これによって、対応付け可能な選手は選手Bのみとなる。したがって、CPU30は、人物枠F2を選手Bの人物枠であるとして選手IDを対応づける。
なお、ステップS24において、オクルージョンが生じていない選手の場合には、参照フレームの人物枠と対応づける。
したがって、図12Aに示すように、選手Aと選手Bのトラッキングにおいて、オクルージョンが生じていた期間は、細かなトラッキングはなされない。オクルージョン発生の直前の位置と、オクルージョン解除の直後の位置とを結んでトラッキングがなされる。
以上のように、この実施形態では、人物枠によるトラッキング(ステップS21~S25)の前にオクルージョンの有無を判定するようにしている(ステップS8~S18)。
1.3.2トラッキング処理の詳細
次に、ステップS23のトラッキング処理の詳細について説明する。図13aに、ステップS23のトラッキング処理の機能構成を示す。
対象特徴点抽出手段114は、動画中の対象フレーム画像FTの探索枠内において、画像の特徴点(対象特徴点)を抽出する。この探索枠は、対象フレーム画像FTより前の参照フレーム画像の移動体の位置を示す移動体枠に基づいて設定されたものである(たとえば、移動体枠の2倍の大きさの枠とする)。
参照特徴点取得手段112は、既に移動体枠の設定と特徴点の抽出がなされた参照フレームFSについて、記録された特徴点(参照特徴点)を取得する。すなわち、記録されている移動体枠内の特徴点を取得する。
対応形成手段116は、各参照特徴点の周囲画素と、各対象特徴点の周囲画素の類似性を判断し、各参照特徴点と各対象特徴点とを対応づける。これにより、参照フレームの移動体の参照特徴点と、対象フレームの移動体の対象特徴点とが対応づけられる。
移動線算出手段118は、上記の対応する参照特徴点と対象特徴点を結ぶ移動線を算出する。なお、参照特徴点を開始点、対象特徴点を終了点とする。
移動線抽出手段122は、全規格移動線の開始点を同一点としたとき、終了点の位置が所定範囲から外れる移動線を除いて、終了点の位置が所定範囲内にある移動線を抽出する。移動量算出手段124は、これら移動線の平均線を算出し、当該平均線に基づいて、移動体の移動量を算出する。この実施形態では、移動線抽出手段122と移動量算出手段124によって、移動算出手段120が構成されている。
移動枠設定手段126は、当該算出した移動量に基づいて、参照フレームの移動体枠を移動させ、対象フレームの移動体枠を設定する。
以上の処理が終了すると、対象フレームを参照フレームとし、対象フレームの次のフレームをあたらな対象フレームとして、上記の処理を繰り返す。これにより、移動体枠の動きとして移動体をトラッキングすることができる。この実施形態では、参照フレームの移動体枠を移動させて、対象フレームの移動体枠を設定しているので、確実に移動体をとらえることができる。
図13bに、ステップS23のトラッキング処理の詳細フローチャートを示す。CPU30は、参照フレームの人物枠に基づいて、対象フレームに探索枠を設定する(ステップS31)。なお、参照フレームは1つ前のフレームであり既に人物枠が設定されているフレームである。対象フレームは、ステップS7にて取得した今回のフレームである。
図14に対象フレームの例を示す。CPU30は、この対象フレームにおいて選手を検出し、人物枠60を各選手に設定する(ステップS31~S38)。この実施形態では、1フレームの間に選手が移動できる範囲は限られているとの前提で、参照フレームの選手枠60の所定範囲内において、対象フレームから同一の選手を探し出してトラッキングするようにしている。
たとえば、図8の参照フレームの人物枠60bについての処理を以下に説明する。CPU30は、まずこの人物枠60bの中心点を変えずに(参照フレームと対象フレームは同じ座標位置にあるとする)、枠を所定倍(この実施形態では2倍)にして探索枠61bを生成する。生成した探索枠61bを、対象フレームに設定する。探索枠61bの設定された対象フレームを、図14に示す。
図14の対象フレームに示すように、図8の参照フレームから選手の位置は動いているが、探索枠61bが余裕を持って大きく形成されているので、選手がこの探索枠61bの中に収まっている。したがって、探索枠の大きさは、1フレームの間に選手が最大速度でいずれかの方向に移動した場合であっても、対象フレームにて選手が探索枠に入る程度の大きさであることが好ましい。
CPU30は、この探索枠61b内の特徴点の抽出と特徴量の算出を行う(ステップS32)。特徴点の抽出・特徴量の算出は、参照フレームについて既にステップS4において行われている。特徴点の抽出・特徴量の算出は以下のようにして行う。
CPU30は、探索枠中の選手の画像について、画像としての特徴点を抽出する。画像としての特徴点としては、コーナーやエッジなどである。この実施形態では、FAST手法によって特徴点を抽出するようにしている。FAST手法では、対象とする画素を中心とする円(半径、数画素程度)の円周上の画素(16画素程度)の輝度を取得する。円周上のすべて(所定個以上)の画素の輝度が、対象画素の輝度よりも明るければ(暗ければ)、当該対象画素を特徴点とする。輝度だけでなく、色情報を用いてもよい。
このような特徴点は、選手が移動したとしても特定可能であるから、選手のトラッキングに好ましいものである。図15に示すように、選手に対して多くの特徴点P1、P2・・・が抽出されることになる。
さらに、CPU30は、抽出した各特徴点について特徴量を算出する。特徴量は、各特徴点を特徴付けて区別するためのものであり、たとえば、特徴点の周囲の画像によって特徴付ける。選手が移動したとしても、特徴点の周囲の画像は変化しないので、複数の特徴点を区別することができる。
特徴点ごとに周囲の画像を記録し、当該周囲の画像に基づいて特徴点を区別するようにしてもよい。しかし、これでは処理が冗長であるので、この実施形態では、BRISK特徴量を用いている。
BRISK特徴量は、図16に示すように対象画素TPの周囲の複数の画素RPによって算出される。あらかじめ定めた2の画素FIRST、SECONDのペア(第1点と第2点)を512ペア作成する。1番目のペアPAIR1から順に、第1点FIRSTの輝度が、第2点SECONDよりも大きければ「1」そうでなければ「0」とする。各ペアについて「1」または「0」を算出する。このようにして、512ビット(所定ビット数とすることができる)の特徴量を得ることができる。
このような特徴量は、特徴点の周囲の画像の特徴を表しており、当該特徴量によって各特徴点を区別して特徴付けることができる。
なお、選手の姿勢の変化により、同じ特徴点であっても上記の特徴量が変化してしまうことになる。そこで、BRISK特徴量では、図16の画素RPの全体の濃度勾配の方向(たとえば、全体として右上15度の方向に濃度が上がっている)を算出し、この濃度勾配の方向が所定角度(たとえば0度)になるように画像を回転して、向きをそろえて上記の特徴量を算出するようにしている。
以上のようにして、探索枠内の各選手の各特徴点について特徴量(512ビットのBRISK特徴量)が算出される。
図17に、参照フレームにおける選手の特徴点P1~Pnと、対象フレームにおける選手の特徴点T1~Tnを、同一の座標上に重ねて示す。図から明らかなように、1フレームの間に、右上に選手が移動している。
次に、CPU30は、SSD38に記録されている参照フレームにおける特徴点(参照特徴点)P1~Pnを取得する(ステップS33)。さらに、参照フレームにおける特徴点(参照特徴点)P1~Pnのそれぞれに対応する対象フレームの特徴点(対象特徴点)T1~Tnを見いだす(ステップS34)。この対応付けには、各特徴点のBRISK特徴量を用い、所定のしきい値以下の相違度(たとえばハミング距離を用いる)を持ち、もっと近いBRISK特徴量を持つ参照特徴点と対象特徴点を対応づける。
なお、選手の姿態や位置によって(あるいは他の選手が一部入っているなど)、必ずしもすべての参照特徴点に合致する対象特徴点が見いだされるわけではない。たとえば、参照フレームにおいては撮像されていた特徴点が、姿態の変化により隠れてしまい対象フレームにおいては撮像されない場合などである。このような場合には、所定のしきい値以下の相違度を持つ対象特徴点がないものとして処理を行う。
続いてCPU30は、対応付けられた参照特徴点と対象特徴点について、参照特徴点を始点とし、対象特徴点を終点とする移動線Mを算出する(ステップS35)。図17においては、参照特徴点P1と対象特徴点T1を結ぶ移動線M1と、参照特徴点P2と対象特徴点T2を結ぶ移動線M2が示されている。
このようにして算出した移動線の平均値(中央値、最頻値などその他の代表する値を用いてもよい)を選手の移動量として把握することができる。したがって、参照フレームにおける人物枠60bを、この移動量によって移動し、人物枠61bを設定することができる。この処理を繰り返すことで、順次、選手の移動をトラッキングすることができる。
ただし、上記で算出した移動線の平均値によって移動量を把握すると、手の先など選手全体の動きとは異なる動きをする特徴点のために、移動量に誤差を生じる可能性がある。そこで、この実施形態では、次のようにして、移動量の誤差を低減するようにしている。
CPU30は、図18Aに示す各移動線M1~Mnの始点を、図18Bに示すように一点に合致させる。さらに、図18Cに示すように、この移動線M1~Mnの終点EP1~EPnの重心Gを算出し、当該重心Gから所定距離以上離れている終点EPk、EPm、EPqを持つ移動線(特異な移動線)を削除する(ステップS36)。重心Gから離れている終点は、選手全体の動きではなく姿態など局所的な動きを反映している可能性が高いからである。なお、ヒストグラム、統計的手法など他の手法によって特異な移動線を削除するようにしてもよい。
CPU30は、削除した移動線を除いて、残りの移動線(選択された移動線)を元の位置に戻す。この状態を図19Aに示す。続いて、図19Bに示すように、選択された移動線の平均(X軸方向平均移動距離とY軸方向平均移動距離)を算出し、X軸、Y軸方向の移動距離を算出する(ステップS37)。
次に、CPU30は、算出した移動距離に基づいて、図20に示すように、対象フレームにおける人物枠62bを設定する。人物枠62bの設定は以下のようにして行う。
図21に示すように、参照フレームの人物枠60bを上記算出した移動距離に基づいて移動させ、対象フレームの人物枠62bとする。次に、対象フレームの人物枠62bの底辺の中央点PGの、画面全体における座標位置を取得する。すなわち、図20の画面における、中央点PGのY座標位置を取得する。
さらに、取得したY座標位置に応じて人物枠62bの大きさ(中央点PGは動かさず、縦横比は維持したままとする)を変更する。これは、画面の上方向(カメラから遠い位置)になると、相対的に人物が小さく撮像されるからである。この実施形態では、Y座標に応じて人物枠の大きさを予め定めておき、これを用いるようにしている。
Y座標に応じた人物枠の大きさは、たとえば、図8の画面において、最も大きい人物枠60aおよびその底辺中央点PGのY座標と、最も小さい人物枠60nおよびその底辺中央点PGのY座標とに基づいて、Y座標に応じた人物枠の大きさを比例配分するように、予め算出式を記録しておくようにすればよい。
なお、上記のようにして最終的に決定された対象フレームの人物枠の画面上の座標(たとえば、左上の点の座標、右下の点の座標)が記録される。また、この人物枠の中に含まれる特徴点の座標、特徴量が、当該人物枠に対応づけて記録される。
以上のようにして、参照フレームの人物枠60bから対象フレームの人物枠62bへの移動として選手の動きをトラッキングすることができる。なお、CPU30は、選手IDを各人物枠に付すことで、各選手を特定することができる。選手IDは、開始フレームにおいて、操作者が入力して付してもよいし、CPU30が自動的に付すようにしてもよい。
1.4その他
(1)上記実施形態では、2人の選手についてオクルージョンが発生した場合について説明した。しかし、図22に示すように、3人以上の選手についてオクルージョンが発生した場合も同様である。
また、図23に示すように、オクルージョンが生じている選手の数が途中で変化した場合であっても、ステップS13、S17において、オクルージョンが生じている選手IDを管理しているので、適切にトラッキングを行うことができる。選手A、Bについては、オクルージョンが発生(表における「有」によって示されている)したフレームn+3の直前のフレームn+2の位置と、オクルージョンが解除(表における「有」から「無」への変化によって示されている)されたフレームn+7の位置によって、トラッキングを行っている。また、選手Cについては、オクルージョンが発生したフレームn+3の直前のフレームn+2の位置と、オクルージョンが解除されたフレームn+5の位置によって、トラッキングを行っている。
(2)上記実施形態では、サッカーフィールド内の選手を移動物としてトラッキングするようにしている。ラグビー、テニス、バスケットボールなどその他の選手の動きを移動物としてトラッキングするようにしてもよい。
また、選手ではなく、コーチや審判などの動きもトラッキングするようにしてもよい。すなわち、移動する人物全般のトラッキングを行うことができる。
さらに、人物ではなく、自動車、電車、飛行機など移動物をトラッキングするようにしてもよい。
(3)上記実施形態では、移動線を選択し、選択された移動線に基づいて移動方向、移動距離を算出するようにしている。しかし、移動線を選択せず、全ての移動線を用いて移動方向、移動距離を算出するようにしてもよい。
(4)上記実施形態では、1台のPCによってトラッキング装置を構成した。しかし、これをサーバ装置として構築してもよい。この場合には、端末装置から動画データをサーバ装置に送信し、トラッキングの結果(各選手の人物枠の移動)を端末装置に返信するようにすればよい。
また、端末装置において動画データの背景差分を求め、図5bのような動画データをサーバ装置に送信するようにしてもよい。
(5)上記実施形態では、X軸移動距離、Y軸移動距離によって移動量を決定している。しかし、移動方向と当該移動方向における移動距離によって移動量を決定するようにしてもよい。
(6)上記実施形態では、開始フレームの人物枠の設定を操作者が行うようにしている。しかし、これをYOLOなどのアルゴリズムによって、自動的に設定するようにしてもよい。また、自動的に設定された人物枠を、操作者が確認し修正するようにしてもよい。
(7)上記実施形態では、特徴点の抽出にFAST手法を用いているが、OpenCVなど他の特徴点抽出手法を用いてもよい。また、各選手にマーカーをつけてもらい、撮像されたマーカーを特徴点として認識するようにしてもよい。
(8)上記実施形態では、特徴量の算出にBRISK手法を用いているが、A-KAZE、SIFT、SURF、HOGなど他の特徴量算出手法を用いてもよい。
(9)上記実施形態では、全フレームの画像に基づいて背景画像を生成するようにしている。すなわち、選手以外の背景を表す画像は、全フレーム中のほとんどのフレームを占めている。したがって、画素ごとに、全フレーム中で最も多く出現するデータを当該画素のデータとすれば、背景画像を得ることができる。
しかし、背景画像も変化する可能性がある。たとえば、天候の変化や、太陽の位置による建物の影の変化などである。したがって、上記背景画像の抽出を全フレームに基づいて行うのではなく、所定時間(1時間ごとなど)間隔にて行うようにしてもよい。
また、深層学習済のモデル(たとえばCycleGANアルゴリズムなど)などによって、撮像した画像から建物や人物の影を削除した上で、背景差分によって人物のみの画像を得るようにしてもよい。
(10)上記実施形態では、人物枠を矩形としているが、その他の形状を用いてもよい。たとえば、移動物を内包する楕円形や、人物の外形を形取った形状としてもよい。
(11)上記実施形態では、参照フレームと対象フレームの特徴点の対応付けを行って、人物枠(移動体枠)を移動させて、トラッキングを行うようにしている。しかし、その他の方法にてトラッキングを行う場合であっても、オクルージョンに対する対応を行うことができる。たとえば、特徴点を用いずに、YOLO等によって移動体を特定し、参照フレームの移動体から最も近い、対象フレームの移動体を関連づけてトラッキングをするような場合であっても、適用することができる。
(12)上記実施形態では、探索枠が所定割合重なるか否かによって、オクルージョン発生と解除を判断している。しかし、オクルージョンが解除したことについては、これに加えて、あるいはこれに代えて、図11Aや図11Bに示す人物枠65a、65bが、オクルージョン発生直前の人物枠(たとえば図10Aの人物枠61a、61b)と対応するかどうかを判断するようにしてもよい。人物枠が対応するかどうかは、人物枠に含まれる特徴点が所定割合以上(たとえば8割以上)合致するかどうかによって判断することができる。図11Aや図11Bの人物枠65a、65bの双方に対応するオクルージョン発生直前の人物枠がない場合には、オクルージョンは解除していないと判断することができる。
(13)上記実施形態では、人物だけでなく影なども含めた枠を判定枠として用いている。しかし、人物だけを囲う枠(人物枠)を判定枠として用いるようにしてもよい。
(14)上記実施形態では、判定枠、人物枠を矩形としているが、その他の形状を用いてもよい。たとえば、移動物を内包する楕円形や、人物の外形を形取った形状としてもよい。
(15)上記変形例は、その本質に反しない限り、他の実施形態においても適用することができる。
2.第2の実施形態
2.1機能構成
図24に、第2の実施形態によるトラッキング装置における、ステップS23のトラッキング処理の機能構成を示す。対象特徴点抽出手段114は、動画中の対象フレーム画像FTの探索枠内において、画像の特徴点(対象特徴点)を抽出する。この探索枠は、対象フレーム画像FTより前の参照フレーム画像の移動体の位置を示す移動体枠に基づいて設定されたものである(たとえば、移動体枠の2倍の大きさの枠とする)。
参照特徴点取得手段112は、既に移動体枠の設定と特徴点の抽出がなされた参照フレームFSについて、記録された特徴点(参照特徴点)を取得する。すなわち、記録されている移動体枠内の特徴点を取得する。
対応形成手段116は、各参照特徴点の周囲画素と、各対象特徴点の周囲画素の類似性を判断し、各参照特徴点と各対象特徴点とを対応づける。これにより、参照フレームの移動体の参照特徴点と、対象フレームの移動体の対象特徴点とが対応づけられる。
移動線算出手段118は、上記の対応する参照特徴点と対象特徴点を結ぶ移動線を算出する。なお、参照特徴点を開始点、対象特徴点を終了点とする。
移動算出手段120は、前記移動線に基づいて、移動体の移動量(X軸方向移動量、Y軸方向移動量)を算出する。
候補移動枠設定手段125は、当該算出した移動量に基づいて、複数の候補移動体枠を生成する。たとえば、算出した移動量が、X軸方向移動量Xm、Y軸方向移動量Ymであれば、この位置を中心としてその周囲に位置をずらせて複数個の候補移動体枠を生成する。
移動枠選択手段127は、これら候補移動体枠のうち、対象フレームの特徴点を最も多く含むものを最終的な移動体枠として決定する。
以上の処理が終了すると、対象フレームを参照フレームとし、対象フレームの次のフレームを新たな対象フレームとして、上記の処理を繰り返す。これにより、移動体枠の動きとして移動体をトラッキングすることができる。
この実施形態では、参照フレームの移動体枠を移動させ、さらに特徴点によって補正を行って対象フレームの移動体枠を設定しているので、確実に移動体をとらえることができる。
2.2ハードウエア構成
ハードウエア構成は、第1の実施形態と同じである(図2参照)。
2.3トラッキング処理
図25に、トラッキング処理のフローチャートを示す。ステップS31~S37までは、第1の実施形態と同様である。第1の実施形態では、ステップS37にて算出したX軸移動量Xm、Y軸移動量Ymに基づいて、対象フレームの人物枠62bを設定している。
この実施形態では、ステップS37にて算出したX軸移動量Xm、Y軸移動量Ymに基づいて、図26のような候補人物枠621~629を設定する(ステップS40)。なお、図において破線で示す人物枠は、参照フレームにおける人物枠60bである。この人物枠60bに対して、Xm、Ym移動した候補人物枠621、2Xm、Ym移動した候補人物枠622、Xm、2Ym移動した候補人物枠623、0、Ym移動した候補人物枠624、・・・、0、0移動した(すなわち移動しない)候補人物枠629が設定されている。
CPU30は、これら候補人物枠621~629のうち、対象フレームの特徴点が最も多く含まれるものを人物枠として選択する(ステップS41)。選手の特徴点を最も多く含むものが、選手の位置を示す人物枠として適切だからである。
図26の場合であれば、候補人物枠623が最も多くの特徴点を含むので、これが人物枠として選択されることになる。
CPU30は、上記のようにして設定した人物枠の底辺の中央点PGの、画面全体における座標位置を取得する。すなわち、図21の画面における、中央点PGのY座標位置を取得する。さらに、取得したY座標位置に応じて人物枠の大きさ(縦横比は維持したままとする)を変更する。
以上のようにして、参照フレームの人物枠60bから対象フレームの人物枠62bへの移動として選手の動きをトラッキングすることができる。上記の処理を全ての人物枠について行い、各選手についての参照フレームの人物枠と対象フレームの人物枠を設定し、全ての選手のトラッキングを行う。
2.4その他
(1)上記実施形態では、サッカーフィールド内の選手を移動物としてトラッキングするようにしている。ラグビー、テニス、バスケットボールなどその他の選手の動きを移動物としてトラッキングするようにしてもよい。
また、選手ではなくく、コーチや審判などの動きもトラッキングするようにしてもよい。すなわち、移動する人物全般のトラッキングを行うことができる。
さらに、人物ではなく、自動車、電車、飛行機など移動物をトラッキングするようにしてもよい。
(2)上記実施形態では、移動線を選択し、選択された移動線に基づいて移動方向、移動距離を算出するようにしている。しかし、移動線を選択せず、全ての移動線を用いて移動方向、移動距離を算出するようにしてもよい。
(3)上記実施形態では、1台のPCによってトラッキング装置を構成した。しかし、これをサーバ装置として構築してもよい。この場合には、端末装置から動画データをサーバ装置に送信し、トラッキングの結果(各選手の人物枠の移動)を端末装置に返信するようにすればよい。
また、端末装置において動画データの背景差分を求め、図5bのような動画データをサーバ装置に送信するようにしてもよい。
(4)上記実施形態では、X軸移動距離、Y軸移動距離によって移動量を決定している。しかし、移動方向と当該移動方向における移動距離によって移動量を決定するようにしてもよい。
(5)上記実施形態では、開始フレームの人物枠の設定を操作者が行うようにしている。しかし、これをYOLOなどのアルゴリズムによって、自動的に設定するようにしてもよい。また、自動的に設定された人物枠を、操作者が確認し修正するようにしてもよい。
(6)上記実施形態では、特徴点の抽出にFAST手法を用いているが、OpenCVなど他の特徴点抽出手法を用いてもよい。また、各選手に物理的なマーカーをつけてもらい、撮像されたマーカーを特徴点として認識するようにしてもよい。
(7)上記実施形態では、特徴量の算出にBRISK手法を用いているが、A-KAZE、SIFT、SURF、HOGなど他の特徴量算出手法を用いてもよい。
(8)上記実施形態では、候補人物枠を9個生成しているが、より多い候補人物枠、より少ない候補人物枠を生成するようにしてもよい。また、数画素ずつずらすなど、より細かく候補人物枠を設定するようにしてもよい。
(9)上記実施形態では、全フレームの画像に基づいて背景画像を生成するようにしている。すなわち、選手以外の背景を表す画像は、全フレーム中のほとんどのフレームを占めている。したがって、画素ごとに、全フレーム中で最も多く出現するデータを当該画素のデータとすれば、背景画像を得ることができる。
しかし、背景画像も変化する可能性がある。たとえば、天候の変化や、太陽の位置による建物の影の変化などである。したがって、上記背景画像の抽出を全フレームに基づいて行うのではなく、所定時間(1時間ごとなど)間隔にて行うようにしてもよい。
(10)上記実施形態では、人物枠を矩形としているが、その他の形状を用いてもよい。たとえば、移動物を内包する楕円形や、人物の外形を形取った形状としてもよい。
(11)上記変形例は、その本質に反しない限り、他の実施形態においても適用することができる。