以下、本発明の実施の形態について図を参照して説明する。
図1は、本発明を監視カメラシステムに適用した場合の構成例を表している。
撮像部21は、例えば、CCD(Charge Coupled Device)ビデオカメラ等よりなり、撮像した画像を画像ディスプレイ25に表示させる。追尾対象検出部22は、撮像部21より入力された画像から追尾対象を検出し、検出結果をオブジェクト追尾部23に出力する。
オブジェクト追尾部23は、撮像部21より供給された画像中の、追尾対象検出部22により指定された追尾点を追尾するように動作する。またオブジェクト追尾部23は、追尾結果を追尾位置補正部24に出力するとともに、追尾結果に基づいて、移動したオブジェクトを撮像できるようにカメラ駆動部26を制御する。追尾位置補正部24は、指示入力部29を介してユーザから追尾位置の補正が指示された場合、オブジェクト追尾部23からの追尾結果にユーザからの補正値を反映し、その補正結果を画像ディスプレイ25に出力するとともに、オブジェクト追尾部23に補正結果を供給する。これにより、オブジェクト追尾部23は、補正された追尾点を次のフレームから追尾するように動作することができる。カメラ駆動部26は、オブジェクト追尾部23からの制御に基づいて、撮像部21が追尾点を中心とする画像を撮影するように撮像部21を駆動する。
制御部27は、例えば、マイクロコンピュータなどにより構成され、各部を制御する。また制御部27には、半導体メモリ、磁気ディスク、光ディスク、または光磁気ディスクなどにより構成されるリムーバブルメディア28が必要に応じて接続され、プログラム、その他各種のデータが必要に応じて供給される。指示入力部29は、各種のボタン、スイッチ、あるいは赤外線や電波を用いたリモートコントローラなどにより構成され、ユーザからの指示に対応する信号を制御部27に出力する。
次に、図2のフローチャートを参照して、図1に示した監視カメラシステムが実行する監視処理について説明する。この処理は、監視システム1の電源がオンされているとき、撮像部21により監視する領域が撮像され、その撮像して得られた画像が追尾対象検出部22およびオブジェクト追尾部23を介して画像ディスプレイ25に出力されて開始される。
ステップS1において、追尾対象検出部22は、撮像部21から入力された画像から追尾対象を検出する処理を実行する。例えば、入力画像に動く物体が存在する場合、追尾対象検出部22は、その動く物体を追尾対象として検出するとともに、追尾対象の中から、最も輝度の高い点あるいは追尾対象の中心の点などを追尾点として検出し、検出結果をオブジェクト追尾部23に出力する。なお、追尾対象は、ユーザが指示入力部29を介して所定の位置を指定して設定することももちろん可能である。
ステップS2において、オブジェクト追尾部23は、ステップS1の処理で検出された追尾点を追尾する追尾処理を実行する。追尾処理の詳細については、図5を参照して後述するが、この処理により、撮像部21により撮像された画像の中の追尾対象となるオブジェクト(例えば、人、動物など)の中の追尾点(例えば、目、頭の中心)が追尾され、追尾結果が制御部27に出力されるとともに、追尾位置を表す位置情報が追尾位置補正部24に出力される。
ステップS3において、制御部27は、ステップS2の処理による追尾結果に基づいて、画像ディスプレイ25に、撮像部21により撮像された画像に追尾位置を表すマークなどを重畳して表示させる。
ステップS4において、オブジェクト追尾部23は、ステップS2の処理による追尾結果に基づいて、オブジェクトの移動を検出し、移動したオブジェクトを撮像できるようにカメラを駆動させるカメラ駆動信号を生成し、カメラ駆動部26に出力する。ステップS5において、カメラ駆動部26は、オブジェクト追尾部23からのカメラ駆動信号に基づいて撮像部21を駆動する。これにより撮像部21は、追尾点が画面から外れてしまうことがないようにカメラをパンまたはチルトする。
ステップS6において、制御部27は、指示入力部29を介したユーザからの指示に基づいて監視処理を終了するか否かを判定し、ユーザから終了が指示されていない場合には、ステップS1に戻り、それ以降の処理を繰り返し実行する。そして、ステップS6において、ユーザから監視処理の終了が指示されたと判定された場合、制御部27は監視処理を終了する。
図3A乃至図3Cは、このとき画像ディスプレイ25に表示される画像の例を、時系列に示した図である。図3Aは、撮像部21により、追尾対象となるオブジェクト41が撮像された画像の例であり、この例では、図中左方向に走って移動する人が、オブジェクト41として撮像されている。図3Bでは、オブジェクト41が、図3Aの位置から図中左に移動しており、図3Cでは、オブジェクト41が、図3Bの位置からさらに左に移動している。
追尾対象検出部22は、図2のステップS1で、オブジェクト41を検出し、このオブジェクト41である人の目を、追尾点41Aとしてオブジェクト追尾部23に出力する。ステップS2ではオブジェクト追尾部23により追尾処理が行われる。
次に、図1のオブジェクト追尾部23の詳細な構成例と、その動作について説明する。
図4は、オブジェクト追尾部23の機能的構成例を示すブロック図である。図4に示されるように、オブジェクト追尾部23は、テンプレートマッチング部51、動き推定部52、シーンチェンジ検出部53、背景動き推定部54、領域推定関連処理部55、乗り換え候補保持部56、追尾点決定部57、テンプレート保持部58、および制御部59により構成されている。
テンプレートマッチング部51は、入力画像と、テンプレート保持部58に保持されているテンプレート画像のマッチング処理を行う。動き推定部52は、入力画像の動きを推定し、推定の結果得られた動きベクトルと、その動きベクトルの確度を、シーンチェンジ検出部53、背景動き推定部54、領域推定関連処理部55、および追尾点決定部57に出力する。シーンチェンジ検出部53は、動き推定部52より供給された動きベクトルとその動きベクトルの確度に基づいて、シーンチェンジを検出する。
背景動き推定部54は、動き推定部52より供給された動きベクトルとその動きベクトルの確度に基づいて背景動きを推定する処理を実行し、推定結果を領域推定関連処理部55に供給する。領域推定関連処理部55は、動き推定部52より供給された動きベクトルとその動きベクトルの確度、背景動き推定部54より供給された背景動き、並びに追尾点決定部57より供給された追尾点情報に基づいて、領域推定処理を行う。また領域推定関連処理部55は、入力された情報に基づいて乗り換え候補を生成し、乗り換え候補保持部56へ供給し、保持させる。さらに領域推定関連処理部55は、入力画像に基づいてテンプレートを作成し、テンプレート保持部58に供給し、保持させる。
追尾点決定部57は、動き推定部52より供給された動きベクトルとその動きベクトルの確度、および乗り換え候補保持部56より供給された乗り換え候補に基づいて、追尾点を決定し、決定された追尾点に関する情報を領域推定関連処理部55に出力する。
制御部59は、追尾対象検出部22から出力された追尾点の情報に基づいて、テンプレートマッチング部51乃至テンプレート保持部58の各部を制御して、検出された追尾対象を追尾させるとともに、画像ディスプレイ25に表示される画面の中に、追尾点が表示されるようにカメラ駆動部26に制御信号を出力し、撮像部21の駆動を制御する。これにより、追尾点が画面の外に出ないように制御される。また制御部59は、追尾点の画面上での位置の情報などの追尾結果を、追尾位置補正部24および制御部27などに出力する。
次に、オブジェクト追尾部23の動作について説明する。
図5は、図2のステップS2におけるオブジェクト追尾部23が実行する追尾処理の詳細を説明するフローチャートである。
図5に示されるように、オブジェクト追尾部23は、基本的に通常処理と例外処理を実行する。すなわち、ステップS11で通常処理が行われる。この通常処理の詳細は、図9のフローチャートを参照して後述するが、この処理により追尾対象検出部22により検出された追尾点を追尾する処理が実行される。
ステップS11の通常処理において追尾点の追尾ができなくなったとき、ステップS12において、例外処理が実行される。この例外処理の詳細は、図12のフローチャートを参照して後述するが、この例外処理により、追尾点が画像から見えなくなったとき、テンプレートマッチングにより通常処理への復帰処理が実行される。例外処理によって追尾処理を継続することができなくなった、すなわち、通常処理へ復帰することができなくなったと判定された場合には処理が終了されるが、テンプレートマッチングによる復帰処理の結果、通常処理への復帰が可能と判定された場合には、処理は再びステップS11に戻る。このようにして、ステップS11の通常処理とステップS12の例外処理が、各フレーム毎に順次繰り返し実行される。
本実施の形態においては、この通常処理と例外処理により、図6乃至図8に示されるように、追尾対象が回転したり、オクルージョンが発生したり、シーンチェンジが発生する等、追尾点が一時的に見えなくなった場合においても、追尾が可能となる。
図6の例では、フレームn−1において、追尾対象としての人の顔74が表示されており、この人の顔74は、右目72と左目73を有している。ユーザが、このうちの、例えば右目72(正確には、その中の1つの画素)を追尾点71として指定したとする。図6の例においては、次のフレームnにおいて、追尾対象としての人が図中左方向に移動しており、さらに次のフレームn+1においては、人の顔74が時計方向に回動している。その結果、今まで見えていた右目72が表示されなくなり、追尾ができなくなる。そこで、上述した図5のステップS11の通常処理においては、右目72と同一の対象物としての顔74上の左目73が新たな追尾点として選択され、追尾点が左目73に乗り換えられる。これにより追尾が可能となる。
図7の例では、フレームn−1において、追尾対象としての人の顔74の図中左側からボール81が移動してきており、次のフレームnにおいて、ボール81がちょうど顔74を覆う状態となっている。この状態においては、追尾点71として指定されていた右目72を含む顔74が表示されていない。このようなオクルージョンが起きると、対象物としての顔74が表示されていないので、追尾点71に代えて追尾する乗り換え点もなくなり、以後、追尾点を追尾することが困難になる。そこで本実施の形態においては、追尾点71としての右目72を含むフレームn−1(実際には時間的にもっと前のフレーム)の画像がテンプレートとして予め保存され、ボール81がさらに右側に移動し、フレームn+1において、追尾点71として指定された右目72が再び現れると、上述した図5のステップS12の例外処理により、追尾点71としての右目72が再び表示されたことがテンプレートに基づいて確認され、右目72が再び追尾点71として追尾されることになる。
図8の例では、フレームn−1において、追尾対象としての人の顔74が表示されているが、次のフレームnにおいて、自動車91が人の顔74を含む全体を覆い隠している。すなわち、この場合、シーンチェンジが起きたことになる。そこで本実施の形態においては、このようにシーンチェンジが起きて追尾点71が画像から存在しなくなっても、自動車91が移動して、フレームn+1において再び右目72が表示されると、上述した図5のステップS12の例外処理により、追尾点71としての右目72が再び出現したことがテンプレートに基づいて確認され、この右目72を再び追尾点71として追尾することが可能となる。
次に、図9のフローチャートを参照して、図5のステップS11の通常処理の詳細について説明する。
ステップS21において、追尾点決定部57は、通常処理の初期化処理を実行する。その詳細は、図10のフローチャートを参照して後述するが、この処理によりユーザから追尾するように指定された追尾点を基準とする領域推定範囲が設定される。この領域推定範囲は、ユーザにより指定された追尾点と同一の対象物(例えば、追尾点が人の目である場合、目と同様の動きをする剛体としての人の顔、または人の体など)に属する点の範囲を推定する際に参照する範囲である。乗り換え点は、この領域推定範囲の中の点から選択される。
ステップS22において、制御部59は、次のフレームの画像の入力を待機するように各部を制御する。ステップS23において、動き推定部52は、追尾点の動きを推定する。すなわち、ユーザにより指定された追尾点を含むフレーム(ここでは前フレームという)より時間的に後のフレーム(ここでは後フレームという)をステップS22の処理で取り込むことで、結局連続する2フレームの画像が得られたことになるので、ステップS23において、前フレームの追尾点に対応する後フレームの追尾点の位置を推定することで、追尾点の動きが推定される。
なお、時間的に前または後とは、入力の順番や処理の順番をいう。通常、撮像の順番に各フレームの画像が入力されるので、その場合、より時間的に前に撮像されたフレームが前フレームとなるが、時間的に後に撮像されたフレームが先に処理される場合には、時間的に後に撮像されたフレームが前フレームとなる。
ステップS24において、動き推定部52は、ステップS23の処理の結果、追尾点が推定可能であったか否かを判定する。追尾点が推定可能であったか否かは、例えば、動き推定部52が生成、出力する動きベクトル(後述)の確度の値を、予め設定されている閾値と比較することで判定される。具体的には、動きベクトルの確度が閾値以上であれば推定が可能であり、閾値より小さければ推定が不可能であると判定される。すなわち、ここにおける可能性は比較的厳格に判定され、実際には推定が不可能ではなくても確度が低い場合には、不可能と判定される。これにより、より確実な追尾処理が可能となる。
なお、ステップS24では、追尾点での動き推定結果と追尾点の近傍の点での動き推定結果が、多数を占める動きと一致する場合には推定可能、一致しない場合には推定不可能と判定するようにすることも可能である。
ステップS24において、追尾点の動きが推定可能であると判定された場合、つまり、追尾点が同一対象物上の対応する点上に正しく設定されている確率が比較的高い場合、ステップS25に進む。より具体的には、図6の例において右目72が追尾点71として指定された場合、右目72が正しく追尾されている確率が比較的高い場合には追尾点の動きが推定可能であると判定される。
ステップS25において、追尾点決定部57は、ステップS23の処理で得られた推定動き(いわゆる動きベクトル)の分だけ追尾点をシフトする。これにより、前フレームの追尾点の追尾後の後フレームにおける追尾の位置が決定されることになる。
ステップS25の処理の後、ステップS26において、領域推定関連処理が実行される。この領域推定関連処理の詳細は、本出願人が先に提案している特開2005−303983号公報に開示されている。この処理により、ステップS21の通常処理の初期化処理で指定された領域推定範囲が更新される。また対象物体が回転するなどして、追尾点が表示されない状態になった場合に、追尾点を乗り換えるべき点としての乗り換え点としての候補(乗り換え候補)が、まだ追尾が可能な状態において予め抽出され、乗り換え候補保持部56で保持される。さらに乗り換え候補への乗り換えもできなくなった場合、追尾は一旦中断されるが、追尾点が再び出現することで再び追尾が可能になったことを確認するためのテンプレートが予め作成され、テンプレート保持部58で保持される。
ステップS26の領域推定関連処理が終了した後、処理は再びステップS22に戻り、それ以降の処理が繰り返し実行される。
このように、ユーザから指定された追尾点の動きが推定可能である限り、ステップS22乃至ステップS26の処理がフレーム毎に繰り返し実行され、追尾が行われることになる。
これに対して、ステップS24において、追尾点の動きが推定不可能であると判定された場合、すなわち、上述したように、例えば動きベクトルの確度が閾値以下であるような場合には、処理はステップS27に進む。
ステップS27において、追尾点決定部57は、ステップS26の領域推定関連処理で生成された乗り換え候補が乗り換え候補保持部56に保持されているので、その中から、元の追尾点に最も近い乗り換え候補を1つ選択する。追尾点決定部57は、ステップS28で乗り換え候補が選択できたか否かを判定し、乗り換え候補が選択できた場合には、ステップS29に進み、追尾点をステップS27の処理で選択した乗り換え候補に乗り換える(変更する)。これにより、乗り換え候補の点が新たな追尾点として設定される。
ステップS29の処理の後、処理はステップS23に戻り、乗り換え候補の中から選ばれた追尾点の動きを推定する処理が実行される。そして、ステップS24において新たに設定された追尾点の動きが推定可能であるか否かが再び判定され、推定可能であれば、ステップS25において追尾点を推定動き分だけシフトする処理が行われ、ステップS26において領域推定関連処理が実行される。その後、処理は再びステップS22に戻り、それ以降の処理が繰り返し実行される。
ステップS24において、新たに設定された追尾点も推定不可能であると判定された場合には、再びステップS27に進み、乗り換え候補の中から、元の追尾点に次に最も近い乗り換え候補が選択され、ステップS29において、その乗り換え候補が新たな追尾点として設定される。その新たな追尾点について、再びステップS23以降の処理が繰り返される。
乗り換え候補保持部56で保持されているすべての乗り換え候補を新たな追尾点としても、追尾点の動きを推定することができなかった場合には、ステップS28において、乗り換え候補が選択できなかったと判定され、この通常処理は終了される。そして、図5のステップS12の例外処理に処理が進むことになる。
次に、図10のフローチャートを参照して、図9のステップS21の通常処理の初期化処理の詳細について説明する。
ステップS41において、制御部59は、今の処理は例外処理からの復帰の処理であるか否かを判定する。すなわち、図5のステップS12の例外処理を終了した後、再びステップS11の通常処理に戻ってきたのか否かが判定される。最初のフレームの処理においては、まだステップS12の例外処理は実行されていないので、例外処理からの復帰ではないと判定され、処理はステップS42に進む。
ステップS42において、追尾点決定部57は、追尾点を追尾点指示の位置に設定する処理を実行する。すなわち、入力画像の中で、例えば、最も輝度の高い点が追尾点として設定される。
なお、追尾点は、ユーザによる指定など、他の方法により設定されるようにしてもよい。ユーザによる指定とは、例えば、ユーザが指示入力部29を操作することで、制御部59に対して、入力画像の中の所定の点を追尾点として指定することにより行われることである。追尾点決定部57は、設定した追尾点の情報を領域推定関連処理部55に供給する。
ステップS43において、領域推定関連処理部55は、ステップS42の処理で設定された追尾点の位置情報に基づき、領域推定範囲を設定する。この領域推定範囲は、追尾点と同じ剛体上の点を推定する際の参照範囲であり、予め追尾点と同じ剛体部分が領域推定範囲の大部分を占めるように、より具体的には、追尾点と同じ剛体部分に推定領域範囲の位置や大きさが追随するように設定することで、領域推定範囲の中で最も多数を占める動きを示す部分を追尾点と同じ剛体部分であると推定できるようにするためのものである。ステップS43では、初期値として、例えば、追尾点を中心とする予め設定された一定の範囲が領域推定範囲とされる。その後、処理は図9のステップS22に進むことになる。
一方、ステップS41において、現在の処理が、図5のステップS12の例外処理からの復帰の処理であると判定された場合、ステップS44に進む。ステップS44において、追尾点決定部57は、図12のフローチャートを参照して後述する例外処理によるテンプレートにマッチした位置に基づき追尾点と領域推定範囲を設定する。例えば、テンプレート上の追尾点とマッチした現フレーム上の点が追尾点とされ、その点から予め設定されている一定の範囲が領域推定範囲とされる。その後、処理は図9のステップS22に進む。
以上の処理を、図11を参照して説明すると次のようになる。
図10のステップS42において、例えば、図11に示されるように、フレームn−1の人の右目72が追尾点71として指定されると、ステップS43において、追尾点71を含む所定の領域が領域推定範囲101として指定される。図9のステップS24において、領域推定範囲101の範囲内のサンプル点が次のフレームにおいて推定可能であるか否かが判定される。図11の例の場合、フレームnの次のフレームn+1においては、領域推定範囲101のうち、右目72を含む図中左側半分の領域102がボール81で隠されているため、フレームnの追尾点71の動きを、次のフレームn+1において推定することができない。そこで、このような場合においては、時間的に前のフレームn−1で乗り換え候補として予め用意されていた領域指定範囲101内(右目72を含む剛体としての顔74内)の点の中から1つの点(例えば、顔74に含まれる左目73(正確には、その中の1つの画素))が選択され、その点がフレームn+1における、新たな追尾点とされる。
次に、図12のフローチャートを参照して、図5のステップS11の通常処理に続いて行われる、ステップS12の例外処理の詳細について説明する。この処理は、上述したように、図9のステップS24において追尾点の動きを推定することが不可能と判定され、さらにステップS28において追尾点を乗り換える乗り換え候補が選択できなかったと判定された場合に実行されることになる。
ステップS51において、制御部59は、例外処理の初期化処理を実行する。ここで、図13のフローチャートを参照して、例外処理の初期化処理の詳細について説明する。
ステップS61において、制御部59は、追尾点の動きを推定することが不可能で、かつ、追尾点を乗り換える乗り換え候補が選択できなかった際にシーンチェンジが起きていたか否かを判定する。シーンチェンジ検出部53は、動き推定部52の推定結果に基づいてシーンチェンジがあったか否かを常に監視しており、制御部59は、そのシーンチェンジ検出部53の検出結果に基づいて、ステップS61の判定処理を実行する。シーンチェンジ検出部53の具体的処理については、図24と図25を参照して後述する。
シーンチェンジが起きている場合、制御部59は、追尾ができなくなった理由がシーンチェンジが発生したことによるものと推定して、ステップS62においてモードをシーンチェンジに設定する。これに対して、ステップS61においてシーンチェンジが発生していないと判定された場合には、制御部59は、ステップS63においてモードをその他のモードに設定する。
ステップS62またはステップS63の処理の後、ステップS64においてテンプレートマッチング部51は、時間的に最も古いテンプレートを選択する処理を実行する。具体的には、図14に示されるように、例えばフレームnからフレームn+1に移行するとき、例外処理が実行されるものとすると、フレームn−m+1からフレームnに関して生成され、テンプレート保持部58に保持されているm個のフレームのテンプレートの中から、時間的に最も古いテンプレートであるフレームn−m+1に関して生成されたテンプレートが選択される。
このように例外処理への移行直前のテンプレート(図14の例の場合フレームnに関して生成されたテンプレート)を用いずに、時間的に少し前のテンプレートを選択するのは、次のような理由からである。つまり、追尾対象のオクルージョンなどで例外処理への移行が発生した場合には、移行の直前には追尾対象が既にかなり隠れており、その時点のテンプレートでは、追尾対象を充分に大きく捉えることができない可能性が高いからである。従って、このように時間的に若干前のフレームにおけるテンプレートを選択することで、確実な追尾が可能となる。
図13の説明に戻る。ステップS65において、テンプレートマッチング部51は、テンプレート探索範囲を設定する処理を実行する。テンプレート探索範囲は、例えば、例外処理に移行する直前の追尾点の位置がテンプレート探索範囲の中心となるように設定される。
すなわち、図15に示されるように、フレームnにおいて被写体の顔74の右目72が追尾点71として指定されている場合において、図中左方向からボール81が飛んできて、フレームn+1において追尾点71を含む顔74が隠れ、フレームn+2において、再び追尾点71が現れる場合を想定する。この場合において、テンプレート範囲111に含まれる追尾点71を中心とする領域がテンプレート探索範囲112として設定される。
ステップS66において、テンプレートマッチング部51は、例外処理への移行後の経過フレーム数およびシーンチェンジ数を0にリセットする。このフレーム数とシーンチェンジ数は、後述する図12のステップS55における継続判定処理(図16のステップS71,S73,S75,S77)において使用される。
以上のようにして、例外処理の初期化処理が終了した後、図12のステップS52において、制御部59は次のフレームの画像の入力を待機する処理を実行する。ステップS53において、テンプレートマッチング部51は、テンプレート探索範囲内においてテンプレートマッチング処理を行う。
ステップS54においてテンプレートマッチング部51は、通常処理への復帰が可能であるか否かを判定する。すなわち、テンプレートマッチング処理により、数フレーム前のテンプレート(図15のテンプレート範囲111内の画素)と、テンプレート探索範囲内のマッチング対象の画素の差分の絶対値和が演算される。
より詳細には、テンプレート範囲111内の所定のブロックと、テンプレート探索範囲内の所定のブロックにおけるそれぞれの画素の差分の絶対値和が演算される。ブロックの位置がテンプレート範囲111内で順次移動され、各ブロックの差分の絶対値和が加算され、そのテンプレートの位置における値とされる。そして、テンプレートをテンプレート探索範囲内で順次移動させた場合における差分の絶対値和が最も小さくなる位置とその値が検索される。ステップS54において、検索された最小の差分の絶対値和が、予め設定されている所定の閾値と比較される。差分の絶対値和が閾値以下である場合には、テンプレートに含まれている追尾点を含む画像が再び出現したことになるので、通常処理への復帰が可能であると判定され、処理は図5のステップS11の通常処理に戻る。
そして、上述したように、図10のステップS41において、例外処理からの復帰であると判定され、ステップS44において、差分絶対値和が最小となる位置をテンプレートのマッチした位置として、このマッチした位置とテンプレートに対応して保持してあったテンプレート位置と追尾点領域推定範囲の位置関係から、追尾点と領域推定範囲の設定が行われる。
図12のステップS54における通常処理への復帰が可能であるか否かの判定は、最小の差分絶対値和をテンプレートのアクティビティで除算して得られる値を閾値と比較することで行うようにしてもよい。この場合におけるアクティビティは、後述する図17のアクティビティ算出部122により、図18のステップS93において算出された値を用いることができる。
あるいはまた、今回の最小の差分絶対値和を1フレーム前における最小の差分絶対値和で除算することで得られた値を所定の閾値と比較することで、通常処理への復帰が可能であるか否かを判定するようにしてもよい。この場合、アクティビティの計算が不要となる。すなわち、ステップS54では、テンプレートとテンプレート探索範囲の相関が演算され、相関値と閾値の比較に基づいて判定が行われる。
ステップS54において、通常処理への復帰が可能ではないと判定された場合、ステップS55に進み、継続判定処理が実行される。継続判定処理の詳細は、図16のフローチャートを参照して後述するが、この処理により、例外処理が継続可能であるか否かの判定が行われる。
ステップS56において、制御部59は、ステップS55の継続判定処理による例外処理での追尾点の追尾が継続可能であるか否かの継続判定結果に基づいて(後述する図16のステップS76,S78で設定されたフラグに基づいて)判定する。例外処理での追尾点の追尾処理が継続可能であると判定された場合、処理はステップS52に戻り、それ以降の処理が繰り返し実行される。すなわち、追尾点が再び出現するまで待機する処理が繰り返し実行される。
これに対して、ステップS56において、例外処理での追尾点の追尾処理が継続可能ではないと判定された場合(後述する図16のステップS75の処理で追尾点が消失した後の経過フレーム数が閾値THfr以上と判定されるか、または、ステップS77の処理でシーンチェンジ数が閾値THsc以上と判定された場合)、もはや例外処理は不可能であるとして、追尾処理は終了される。なお、追尾処理を終了するのではなく、保持しておいた追尾点を用いて再度通常処理に戻るようにすることも考えられる。この場合の処理については、図36のフローチャートを参照して後述する。
次に、図16のフローチャートを参照して、図12のステップS55における継続判定処理の詳細について説明する。
ステップS71において、制御部59は、変数としての経過フレーム数に1を加算する処理を実行する。経過フレーム数は、図12のステップS51の例外処理の初期化処理(図13のステップS66)において、予め0にリセットされている。
次にステップS72において、制御部59は、シーンチェンジがあるか否かを判定する。シーンチェンジがあるか否かは、シーンチェンジ検出部53が、常にその検出処理を実行しており、その検出結果に基づいて判定が可能である。シーンチェンジがあると判定された場合にはステップS73に進み、制御部59は、変数としてのシーンチェンジ数に1を加算する。このシーンチェンジ数も、図13のステップS66の初期化処理において0にリセットされている。通常処理から例外処理への移行時にシーンチェンジが発生していないと判定された場合には、ステップS73の処理はスキップされる。
次に、ステップS74において、制御部59は、現在設定されているモードがシーンチェンジであるか否かを判定する。このモードは、図13のステップS62またはS63において設定されたものである。現在設定されているモードがシーンチェンジであると判定された場合にはステップS77に進み、制御部59は、シーンチェンジ数が予め設定されている閾値THscより小さいか否かを判定する。制御部59は、ステップS77において、シーンチェンジ数が閾値THscより小さいと判定した場合にはステップS76に進み、継続可のフラグを設定し、シーンチェンジ数が閾値THsc以上であると判定した場合にはステップS78に進み、継続不可のフラグを設定する。
一方、ステップS74において、モードがシーンチェンジではないと判定された場合(モードがその他であると判定された場合)、ステップS75に進み、制御部59は、経過フレーム数が閾値THfrより小さいか否かを判定する。この経過フレーム数も、図13の例外処理の初期化処理のステップS66において、予め0にリセットされている。制御部59は、ステップS75において、経過フレーム数が閾値THfrより小さいと判定された場合にはステップS76に進み、継続可のフラグを設定し、経過フレーム数が閾値THfr以上であると判定された場合にはステップS78に進み、継続不可のフラグを設定する。
このように、テンプレートマッチング処理時におけるシーンチェンジ数が閾値THsc以上になるか、または経過フレーム数が閾値THfr以上になった場合には、それ以上の例外処理は不可能とされる。
なお、モードがその他である場合には、シーンチェンジ数が0であるという条件も加えて、継続が可能であるか否かを判定するようにしてもよい。
以上においては、画像のフレームを処理単位とし、すべてのフレームを用いることを前提としたが、フィールド単位で処理したり、すべてのフレームまたはフィールドを利用するのではなく、所定の間隔で間引いて抽出されたフレームまたはフィールドを用いるようにすることも可能である。
次に、図17を参照して、図4の動き推定部52の構成例について説明する。図17に示されるように、評価値算出部121、アクティビティ算出部122、および動きベクトル検出部123には、入力画像が供給されている。
評価値算出部121は、動きベクトルにより対応付けられる両対象の一致度に関する評価値を算出し、正規化処理部125に供給する。アクティビティ算出部122は、入力画像のアクティビティを算出し、閾値判定部124と正規化処理部125に供給する。動きベクトル検出部123は、入力画像から動きベクトルを検出し、評価値算出部121と統合処理部126に供給する。
閾値判定部124は、アクティビティ算出部122より供給されたアクティビティを所定の閾値と比較し、その判定結果を統合処理部126に供給する。正規化処理部125は、評価値算出部121より供給された評価値を、アクティビティ算出部122より供給されたアクティビティに基づいて正規化し、得られた値を統合処理部126に供給する。
統合処理部126は、正規化処理部125から供給された正規化情報と、閾値判定部124より供給された判定結果に基づいて、動きベクトルの確度を演算し、得られた確度を動きベクトル検出部123より供給された動きベクトルとともに出力する。
次に、図18のフローチャートを参照して、動き推定部52が実行する動き推定処理について説明する。動きベクトルは、点に対するものとして求められているが、その確度は、動きベクトルにより対応付けられる2つの点の近傍の、例えば点を中心とする、小ブロックの画像データを用いて計算される。
ステップS91において、動きベクトル検出部123は、入力画像から動きベクトルを検出する。この検出には、例えばブロックマッチング方式や勾配法が用いられる。検出された動きベクトルは、評価値算出部121と統合処理部126に供給される。
ステップS92において、評価値算出部121は、ステップS91の処理で検出された動きベクトルにより対応付けられる両対象の一致度に関する評価値を算出する。具体的には、例えば、動きベクトルで対応付けられる2つの点を中心とする2つのブロックの画素値の差分絶対値和が算出される。すなわち、ステップS91の処理で動きベクトル検出部123により検出された動きベクトルV(vx,vy)と、それに基づく時間的に前のフレームの画像Fi上の点P(Xp,Yp)、並びに時間的に後のフレームの画像Fj上の点Q(Xq,Yq)の関係は次式(1)で表される。
評価値算出部121は点Pを中心とするブロックと、点Qを中心とするブロックについて、次式(2)に基づいて評価値Eval(P,Q,i,j)を演算する。
各ブロックは、1辺が2L+1画素の正方形とされている。上記式(2)における総和ΣΣは、xが−LからLについて、yが−LからLについて、対応する画素同士で行われる。従って、例えば、L=2である場合、9個の差分が得られ、その絶対値の総和が演算される。評価値は、その値が0に近づくほど、2つのブロックがよく一致していることを表している。
評価値算出部121は、算出した評価値を正規化処理部125に供給する。
ステップS93において、アクティビティ算出部122は、入力画像からアクティビティを算出する。アクティビティは、画像の複雑さを表す特徴量であり、図19に示されるように、各画素毎に注目画素Y(x,y)と、それに隣接する8画素Y(x+i,y+j)との差分絶対値和の平均値が、注目画素位置のアクティビティActivity(x,y)として次式(3)に基づいて演算される。
図19の例の場合、3×3画素のうち、中央に位置する注目画素Y(x,y)の値は110であり、それに隣接する8個の画素の値は、それぞれ80,70,75,100,100,100,80,80であるから、アクティビティActivity(x,y)は次式で表される。
Activity(x,y) ={|80−110|+|70−110|+|75−110|+|100−110|+|100−110|+|100−110|+|80−110|+|80−110|}/8 =24.375となる。
同様の処理が、そのフレームのすべての画素について実行される。
ブロック単位で動きベクトル確度を算出するため、次式(4)で表されるブロック内の全画素のアクティビティの総和が、そのブロックのアクティビティ(ブロックアクティビティ)Blockactivity(i,j)と定義される。
なお、アクティビティとしては、この他、分散値、ダイナミックレンジなどとすることも可能である。
ステップS94において、閾値判定部124は、ステップS93の処理で算出されたブロックアクティビティを予め設定されている所定の閾値と比較する。そして、入力されたブロックアクティビティが閾値より大きいか否かを表すフラグを統合処理部126に出力する。
具体的には、実験の結果、ブロックアクティビティと評価値は、動きベクトルをパラメータとして、図20に示される関係を有する。図20において、横軸はブロックアクティビティBlockactivity(i,j)を表し、縦軸は評価値Evalを表している。
動きが正しく検出されている場合(正しい動きベクトルが与えられている場合)、そのブロックアクティビティと評価値の値は、曲線131より図中下側の領域R1に分布する。これに対して誤った動き(不正解の動きベクトル)が与えられた場合、そのブロックアクティビティと評価値の値は、曲線132より、図中左側の領域R2に分布する。なお、曲線132より上側の領域R2以外の領域と曲線131より下側の領域R1以外の領域には殆ど分布がない。曲線131と曲線132は、点Pにおいて交差しており、この点Pにおけるブロックアクティビティの値が閾値THaとされる。閾値THaは、ブロックアクティビティの値がそれより小さい場合には、対応する動きベクトルが正しくない可能性があることを意味する(この点については後に詳述する)。閾値判定部124は、アクティビティ算出部122より入力されたブロックアクティビティの値が、この閾値THaより大きいか否かを表すフラグを統合処理部126に出力する。
ステップS95において、正規化処理部125は、ステップS92の処理で算出された評価値を、ステップS93の処理で算出されたアクティビティに基づいて正規化する。具体的には、正規化処理部125は、次式(5)に従って動きベクトル確度VCを演算する。
但し、動きベクトル確度VCの値が0未満となる場合にはその値を0に置き換える。動きベクトル確度VCのうち、評価値をブロックアクティビティで割り算して得られた値は、その値によって規定される図20のグラフ上の位置が、原点Oと点Pを結ぶ傾きが1の直線133より、図中下側の領域内であるのか、図中上側の領域内であるのかを表す。すなわち、直線133の傾きは1であり、評価値をブロックアクティビティで割り算して得られた値が1より大きければ、その値に対応する点は、直線133の上側の領域に分布する点であることを意味する。そしてこの値を1から減算して得られる動きベクトル確度VCは、その値が小さい程、対応する点が領域R2に分布する可能性が高いことを意味する。
これに対して、評価値をブロックアクティビティで割り算して得られた値が1より小さければ、その値に対応する点は、直線133の図中下側の領域に分布することを意味する。そして、そのときの動きベクトル確度VCは、その値が大きい程(0に近い程)、対応する点が領域R1に分布することを意味する。正規化処理部125は、このようにして演算して得られた動きベクトル確度VCを統合処理部126に出力する。
ステップS96において、統合処理部126は、統合処理を実行する。この統合処理の詳細は、図21のフローチャートに示されている。
ステップS101において、統合処理部126は、ブロックアクティビティが閾値THa 以下か否かを判定する。この判定は、閾値判定部124より供給されたフラグに基づいて行われる。統合処理部126は、ブロックアクティビティが閾値THa以下であると判定した場合、ステップS102において、正規化処理部125が算出した動きベクトル確度VCの値を0に設定する。ステップS101において、アクティビティの値が閾値THaより大きいと判定された場合には、ステップS102の処理はスキップされ、正規化処理部125で生成された動きベクトル確度VCの値が、そのまま動きベクトルとともに出力される。
これは、正規化処理部125において演算された動きベクトルの確度VCの値が正であったとしても、ブロックアクティビティの値が閾値THaより小さい場合には、正しい動きベクトルが得られていない可能性があるからである。すなわち、図20に示されるように、原点Oと点Pの間においては、曲線132が、曲線131より図中下側に(直線133より下側に)突出することになる。ブロックアクティビティの値が閾値Thaより小さい区間であって、曲線131と曲線132において囲まれる領域R3においては、評価値をブロックアクティビティで割り算して得られる値は、領域R1とR2の両方に分布し、正しい動きベクトルが得られていない可能性が高い。
そこで、このような分布状態である場合には、動きベクトルの確度は低いものとして処理するようにする。このため、ステップS102において、動きベクトル確度VCは、その値が正であったとしても、閾値Thaより小さい場合には、0に設定される。このようにすることで、動きベクトル確度VCの値が正である場合には、正しい動きベクトルが得られている場合であることを確実に表すことが可能となる。しかも、動きベクトル確度VCの値が大きい程、正しい動きベクトルが得られている確率が高くなる(分布が領域R1に含まれる確率が高くなる)。
このことは、一般的に、輝度変化が少ない領域(アクティビティが小さい領域)では信頼性が高い動きベクトルを検出することが困難であるとの経験上の法則とも一致する。
次に、図22を参照して、図4の背景動き推定部54の構成例について説明する。図22に示されるように、背景動き推定部54は、頻度分布算出部141と背景動き決定部142により構成されている。
頻度分布算出部141は、動きベクトルの頻度分布を算出する。ただし、この頻度には、図4の動き推定部52より供給される動きベクトル確度VC を用いることで、確からしい動きに重みが与えられるように、重み付けが行われる。背景動き決定部142は、頻度分布算出部141により算出された頻度分布に基づいて、頻度が最大となる動きを背景動きとして決定する処理を行い、図4の領域推定関連処理部55へ出力する。
図23のフローチャートを参照して、背景動き推定部54が実行する背景動き推定処理について説明する。
ステップS111において、頻度分布算出部141は、動き頻度分布を算出する。具体的には、頻度分布算出部141は、背景動きの候補としての動きベクトルのx座標とy座標がそれぞれ基準点から±16画素分の範囲で表されるとすると、1089個(=16×2+1)×(16×2+1))の箱、すなわち動きベクトルがとり得る値に対応する座標分の箱を用意し、動きベクトルが発生した場合、その動きベクトルに対応する座標に1を加算する。このようにすることで、動きベクトルの頻度分布を算出することができる。
ただし、1個の動きベクトルが発生した場合、1を加算していくと、確度が低い動きベクトルの発生頻度が多い場合、その確実性が低い動きベクトルが背景動きとして決定されてしまう恐れがある。そこで、頻度分布算出部141は、動きベクトルが発生した場合、その動きベクトルに対応する箱(座標)に、値1を加算するのではなく、値1に動きベクトル確度VC を乗算した値(=動きベクトル確度VC の値)を加算する。動きベクトル確度VC の値は、0から1の間の値として正規化されており、その値が1に近いほど確度が高い値である。従って、このようにして得られた頻度分布は、動きベクトルをその確度に基づいて重み付けした頻度分布となる。これにより、確度の低い動きが背景動きとして決定される恐れが少なくなる。
次に、ステップS112において、頻度分布算出部141は、動き頻度分布を算出する処理を全ブロックについて終了したか否かを判定する。まだ処理していないブロックが存在すると判定された場合、ステップS111に戻り、次のブロックについて動き頻度分布が算出される。
以上のようにして、全画面に対して動き頻度分布算出処理が行われ、ステップS112において、全ブロックの処理が終了したと判定された場合、ステップS113に進み、背景動き決定部142は、頻度分布の最大値を検索する処理を実行する。すなわち、背景動き決定部142は、頻度分布算出部141により算出された頻度の中から最大の頻度のものを選択し、その頻度に対応する動きベクトルを背景動きの動きベクトルとして決定する。この背景動きの動きベクトルは、図4の領域推定関連処理部55に供給され、全画面動きと背景動きが一致するか否かの判定処理に用いられる。
次に、図24を参照して、図4のシーンチェンジ検出部53の構成例について説明する。図24に示されるように、シーンチェンジ検出部53は、動きベクトル確度平均算出部151と閾値判定部152により構成されている。
動きベクトル確度平均算出部151は、図4の動き推定部52より供給された動きベクトル確度VC の全画面の平均値を算出し、閾値判定部152に出力する。閾値判定部152は、動きベクトル確度平均算出部151より供給された平均値を、予め定められている閾値と比較し、その比較結果に基づいて、シーンチェンジであるか否かを判定し、判定結果を図4の制御部59に出力する。
図25のフローチャートを参照して、シーンチェンジ検出部53が実行するシーンチェンジ検出処理について説明する。
ステップS121において、動きベクトル確度平均算出部151は、ベクトル確度の総和を算出する。具体的には、動きベクトル確度平均算出部151は、動き推定部52の統合処理部126より出力された各ブロック毎に算出された動きベクトル確度VCの値を加算する処理を実行する。
ステップS122において、動きベクトル確度平均算出部151は、ベクトル確度VCの総和を算出する処理が全ブロックについて終了したか否かを判定し、まだ終了していない場合には、ステップS121の処理を繰り返す。この処理を繰り返すことで、1画面分の各ブロックの動きベクトル確度VCの総和が算出される。
ステップS122において、1画面全部についての動きベクトル確度VCの総和の算出処理が終了したと判定された場合、ステップS123に進み、動きベクトル確度平均算出部151は、ベクトル確度VCの平均値を算出する処理を実行する。具体的には、ステップS121の処理で算出された1画面分のベクトル確度VCの総和を、足し込まれたブロック数で除算して得られた値が平均値として算出される。
ステップS124において、閾値判定部152は、ステップS123の処理で動きベクトル確度平均算出部151により算出された動きベクトル確度VCの平均値を、予め設定されている閾値と比較し、閾値より小さいか否かを判定する。一般的に、動画中の時刻が異なる2フレーム間でシーンチェンジが発生すると、対応する画像が存在しないため、動きベクトルを算出しても、その動きベクトルは確からしくないことになる。そこで、閾値判定部152は、ベクトル確度VCの平均値が閾値より小さいと判定した場合にはステップS125に進み、シーンチェンジフラグをオンし、閾値以上であると判定した場合にはステップS126に進み、シーンチェンジフラグをオフにする。シーンチェンジフラグのオンは、シーンチェンジがあったことを表し、シーンチェンジフラグのオフは、シーンチェンジが無いことを表す。
このシーンチェンジフラグは、制御部59へ供給され、図13のステップS61におけるシーンチェンジの有無の判定、並びに図16のステップS72のシーンチェンジの有無の判定に利用される。
以上のように、図1のオブジェクト追尾部23を構成することにより、追尾すべきオブジェクト41(図3)が回転したり、オクルージョンが発生したり、あるいはシーンチェンジにより、オブジェクト41の追尾点41Aが一時的に表示されなくなるような場合でも、画像の中で移動するオブジェクト41の追尾点41Aを正確に追尾することができる。
また、このようにして追尾されるオブジェクト41の追尾点41Aの位置情報が、図1のオブジェクト追尾部23による追尾結果として追尾位置補正部24に出力される。すなわち、ユーザは、オブジェクト追尾部23により追尾処理が行われたにもかかわらず所望の追尾結果が得られない場合、指示入力部29を介して追尾位置の補正を指示することにより、その指示を受けた追尾位置補正部24は、オブジェクト追尾部23から供給された追尾結果としての位置情報を補正することができる。
次に、図1の追尾位置補正部24の詳細な構成例と、その動作について説明する。
図26は、追尾位置補正部24の機能的構成例を示すブロック図である。図26に示されるように、追尾位置補正部24は、補正値算出部161、補正値反映部162、および微調整部163により構成されている。
補正値算出部161は、指示入力部29を介してユーザより追尾位置の補正が指示された場合、その補正値を算出する。例えば、指示入力部29が上、下、右、左方向を指示することが可能な十字方向ボタンで構成されており、それらのボタンの1回の押下に応じて所定の補正量が予め設定されている場合、ボタンの押下回数に応じてユーザの補正値Δuが算出される。また例えば、指示入力部29が所定方向を指示することが可能なレバーで構成されており、レバーの傾斜角度に応じて所定の補正量が予め設定されている場合、レバーの倒し具合に応じてユーザの補正値Δuが算出される。
補正値反映部162は、オブジェクト追尾部23から供給された追尾結果としての位置情報に、補正値算出部161から供給されたユーザの補正値Δuを反映する。
ここでは、ブロックマッチング方式などで算出された追尾対象としての追尾点に、ユーザの補正値Δuを反映する例について説明する。
図27に示されるように、ブロックマッチング方式によれば、現フレームt=tと次のフレームt=t+1との間の差分ベクトルΔxが算出される。上述したようにしてオブジェクト追尾部23により通常の追尾処理が行われる場合には、次式(6)に基づいて、次のフレームt=t+1の追尾点x(t+1)が算出される。x(t)は現フレームt=tの追尾点である。
例えば、算出された差分ベクトルΔxを考慮せず、ユーザの補正値Δuのみを反映させる第1の方法の場合、次式(7)に基づいて、次のフレームt=t+1の追尾点x(t+1)が算出される。
図28は、第1の方法によりユーザの補正値を反映させる例を示している。図28に示されるように、位置x(t)から位置x(t+2)の間に行われたユーザによる補正が終了した後、補正後の追尾点はx(t+3)の位置とされる。このように、ユーザによる補正値Δuは、画像の座標系に対する相対的な位置として追尾点に反映される。
また例えば、算出された差分ベクトルΔxを用いた追尾点と、ユーザの補正値Δuによる追尾点とを別々に保持し、ユーザによる補正が終了した時点でブロックマッチング処理に反映させる第2の方法の場合、次式(8)に基づいて、補正開始時の追尾点u(t)が算出される。
また次式(9)に基づいて、補正中の追尾点が算出される。
さらに次式(10)に基づいて、補正終了時の追尾点x(t+1)が算出される。
この場合、補正中に出力される追尾点はx'とされるが、オブジェクト追尾部23の内部におけるブロックマッチング処理ではxを用いることがポイントである。
図29は、第2の方法によりユーザの補正値を反映させる例を示している。図29に示されるように、位置x(t)から位置x(t+2)の間に行われたユーザによる補正が終了した後、補正後の追尾点はx(t+3)+u(t+3)の位置とされ、この位置が改めてx(t+3)となる。このように、ユーザによる補正値Δuは、追尾対象に対する相対的な位置として反映される。
なお、指示入力部29に補正量変更ボタンを設けることにより、例えば、ユーザが、補正量変更ボタンを押下しつつ十字方向ボタンやレバーを操作することで、予め設定された補正量を大きく変更することができる。これにより、まず補正量変更ボタンを押下しつつ十字方向ボタンやレバーを操作して大雑把に追尾位置を補正し、その後、補正量変更ボタンを離して十字方向ボタンやレバーを操作して細部の追尾位置を補正することで、短時間で所望の追尾点に補正することが可能である。これは、画像サイズが大きい場合に特に有効である。
図26の説明に戻る。微調整部163は、補正値反映部162で第1の方法または第2の方法によりユーザの補正値Δuが反映された追尾点をさらに微調整する。
ここでは、追尾対象としてのオブジェクトの重心位置に追尾点を微調整する例について説明する。
例えば、図30に示されるように、位置x(t)から位置x'(t+1)へ、上述した第1の方法を用いてユーザによる補正がなされた場合、補正後の位置x'(t+1)が属しているオブジェクトの範囲201が算出され、そのオブジェクトの重心x(t+1)へ追尾点が微調整される。以後、微調整された追尾点x(t+1)の位置から追尾処理が継続される。
ここで、色という画素値(色情報)に基づいて追尾点が属するオブジェクトの範囲を求め、その重心を算出する方法について説明する。
(1)まず、位置x'(t+1)のRGB色(r',g',b')を算出する。なお、表色系はRGBでなくてもよい。
(2)RGB色が算出された位置x'(t+1)の周辺画素について、位置x'(t+1)の色に近い色を持つ画素を同じオブジェクトに属していると判断する。例えば、次式(11)で表されるΔcが所定の値より小さい画素が位置x'(t+1)と同じオブジェクトに属していると判断される。r、g、bは各周辺画素の色である。
(3)位置x'(t+1)と同じオブジェクトに属している画素の位置から、次式(12)に基づいて、オブジェクトの重心x(t+1)を算出する。Xiは、同じオブジェクトに属している各画素の位置であり、nは、同じオブジェクトに属している画素の総数である。
以上のようにして、色情報を用いる方法で追尾点が属するオブジェクトの範囲を求め、その重心位置を算出することにより、追尾点を、追尾点が属するオブジェクトの重心位置に微調整することが可能である。
なお、このように色情報を用いる方法に限らず、例えば、動きベクトルや輝度値などをもとにしてオブジェクトの範囲を求め、その重心位置を算出するようにしてもよい。例えば、動きベクトルを用いる場合、位置x'(t+1)の動きベクトルと同じまたは似ているベクトルを持つものを同じオブジェクトに属していると判断し、次のようにしてオブジェクトの範囲を求め、その重心を算出することができる。
(1)動きベクトル検出
図31に示されるように、追尾点211を中心とした領域212内で、サンプリング間隔(sx,sy)毎に動きベクトルを検出する。領域212の大きさは、サンプル数m,nとして、sx・m×sy・nとなる。動きベクトルの検出には、例えばブロックマッチング方式や勾配法が用いられる。
(2)動きベクトルの頻度分布算出
例えば、処理範囲内の動きの候補を−16<=vx<=16、−16<=vy<=16の整数値(vxは水平動き、vyは垂直動き)で表すとすると、33(=16×2+1)画素×33画素=1089個の箱、すなわち動きベクトルがとり得る値に対応する座標分の箱を用意し、あるサンプル点で(vx,vy)=(2,2)のとき、(2,2)の箱に1を加算する。この処理を処理範囲内の全サンプル点に対して行うことで、動きベクトルの頻度分布を算出することができる。
(3)追尾対象のサンプル点抽出
図32に示されるように、領域212内で多数を占める動き(図32の例においては、左斜め下方向の動き)と類似する動きを示すサンプル点を追尾対象上の点として抽出する。
(4)サンプル点の重心算出
領域212内において追尾対象上のサンプル点であるか否かを表すフラグをflag(i,j)(1<=i<=m,1<=j <=n)として設定する。(3)で追尾対象上のサンプル点として抽出された場合、1に設定され、(3)で追尾対象上のサンプル点として抽出されていない場合、0に設定される。そして、サンプル点の重心G(x,y)は、次式(13)に基づいて、サンプル点P(x,y)として算出される。
以上のようにして、動きベクトルを用いる方法で追尾点が属するオブジェクトの範囲を求め、その重心位置を算出することも可能である。ユーザによる補正に加え、微調整された先の追尾点は、外乱に対してロバスト性の高い、つまり追尾処理しやすいことを特徴としている。
上述したような追尾補正処理について、図33のフローチャートを参照して説明する。
ステップS131において、ユーザにより指示入力部29が用いられ、追尾対象の位置が指定され追尾開始が指示されたか否かを判定し、追尾開始が指示されるまで待機する。そして、ステップS131において、追尾対象の位置が指定され追尾開始が指示されたと判定された場合、ステップS132に進む。
ステップS132において、制御部59は、次のフレームの画像の入力を待機するように各部を制御する。ステップS133において、追尾点決定部57は、次のフレームにおける対象位置を算出する。例えば、図27に示したように、ブロックマッチング方式によれば、現フレームと次のフレームとの間の差分ベクトルΔxが算出され、上記式(6)に基づいて、次のフレームの対象位置である追尾点が算出される。
ステップS134において、制御部27は、指示入力部29を介してユーザにより位置補正が指示されたか否かを判定し、位置補正が指示されていないと判定した場合、ステップS135に進む。ステップS135において、追尾点決定部57は、ステップS133の処理で算出した対象位置をそのまま次のフレームの対象位置とする。
一方、ステップS134において、ユーザにより位置補正が指示されたと判定された場合、ステップS136に進み、制御部59は、追尾点決定部57からの追尾結果を追尾位置補正部24に出力する。追尾位置補正部24は、入力された追尾結果にユーザによる補正値を反映したものを次のフレームの対象位置とする。
具体的には、補正算出部161により、ユーザからの指示入力部29の操作量(例えば、ボタンの押下回数やレバーの倒し具合)に応じた補正値が算出される。そして、補正値反映部162により、図28を参照して説明した第1の方法、あるいは、図29を参照して説明した第2の方法で、追尾結果にユーザの補正値が反映される。さらに、微調整部163により、追尾対象としてのオブジェクトの重心位置に追尾点が微調整される。
ステップS137において、制御部27は、ステップS135またはS136の処理による追尾結果に基づいて、画像ディスプレイ25に、撮像部21により撮像された画像に追尾位置を表すマークなどを重畳して表示させる。
図34Aは、撮像部21により撮像された入力画像の例を示し、図34Bは、その入力画像の追尾処理が行われた場合の出力画像の例を示している。図34Aには、撮像部21により撮像された追尾対象となるオブジェクト221が示されている。図34Bには、オブジェクト221の追尾処理が行われ、オブジェクト221の追尾点上にマーク221Aが重畳表示されている。
また図35Aに示されるように、オブジェクト221の追尾点を中心とした入力画像を切り取り、それを図35Bに示されるように拡大したズーム画像を画像ディスプレイ25に表示させるようにしてもよい。
図33の説明に戻る。ステップS138において、ユーザにより追尾終了が指示されたか否かを判定し、まだ追尾終了が指示されていないと判定した場合、ステップS132に戻り、上述した処理を繰り返す。そして、ステップS138において、追尾終了が指示されたと判定された場合、この追尾位置補正処理は終了される。
このように、追尾処理において、ユーザによる補正に加え、追尾対象の重心位置に微調整されるようにしたので、外乱に対してロバスト性が高くなる。
次に、図36のフローチャートを参照して、図5のステップS11の通常処理に続いて行われる、ステップS12の例外処理の他の例について説明する。この処理は、基本的に、図12の処理と同様の処理であり、図9のステップS24において追尾点の動きを推定することが不可能と判定され、さらにステップS28において追尾点を乗り換える乗り換え候補が選択できなかったと判定された場合に実行される。
ステップS151乃至S155の処理は、上述した図12のステップS51乃至S55の処理と同様であるため、その説明は簡略する。すなわち、ステップS151において、例外処理の初期化処理が実行され、ステップS152において、次のフレームの画像の入力が待機され、ステップS153において、テンプレート探索範囲内においてテンプレートマッチング処理が行われ、ステップS154において、通常処理への復帰が可能であるか否かが判定され、通常処理への復帰が可能であると判定された場合、図5のステップS11の通常処理に戻され、通常処理への復帰が可能ではないと判定された場合、ステップS155において、継続判定処理が実行される。
そして、ステップS156において、制御部59は、ステップS155の継続判定処理による例外処理での追尾点の追尾が継続可能であるか否かの継続判定結果に基づいて(図16のステップS76,78で設定されたフラグに基づいて)判定する。追尾点の追尾処理が継続可能であると判定された場合、処理はステップS52に戻り、それ以降の処理が繰り返し実行される。すなわち、追尾点が再び出現するまで待機する処理が繰り返し実行される。
これに対して、ステップS156において、例外処理での追尾点の追尾処理が継続可能ではないと判定された場合(図16のステップS75の処理で追尾点が消失した後の経過フレーム数が閾値THfr以上と判定されるか、または、ステップS77の処理でシーンチェンジ数が閾値THsc以上と判定された場合)、ステップS157に進み、制御部59は、追尾点決定部57を制御し、保持しておいた追尾点を設定させる。その後、処理は図5のステップS11の通常処理に戻る。
このように、例外処理での追尾点の追尾が不可能になった場合には、保持しておいた追尾点を用いて再度通常処理に戻ることができるようにしたので、追尾処理を継続的に行うことが可能となる。
以上においては、追尾処理によって所望の結果が得られていないと判断された場合、ユーザによる補正指示に基づいて、リアルタイムにユーザ補正が反映されるため、継続的に追尾処理を行うことができる。これにより、追尾点の指定や修正時の負荷が軽減し、より好適な追尾結果を得ることが可能となる。
また以上においては、監視カメラシステムに適用した場合の例について説明したが、これに限らず、例えば、テレビジョン受像機など各種の画像処理装置に適応することが可能である。
さらに以上においては、画像の処理単位をフレームとしたが、フィールドを処理単位とすることももちろん可能である。
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを格納するプログラム記録媒体は、図1に示すように、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク、もしくは半導体メモリなどよりなるパッケージメディアであるリムーバブルメディア28、または、プログラムが一時的もしくは永続的に格納されるハードディスクなどにより構成される。プログラム記録媒体へのプログラムの格納は、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
なお、本明細書において、プログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
1 監視カメラシステム, 21 撮像部, 22 追尾対象検出部, 23 オブジェクト追尾部, 51 テンプレートマッチング部, 52 動き推定部, 53 シーンチェンジ検出部, 54 背景動き推定部, 55 領域推定関連処理部, 56 乗り換え候補保持部, 57 追尾点決定部, 58 テンプレート保持部, 161 補正値算出部, 162 補正値反映部, 163 微調整部