以下、本発明による自動追尾装置について、図面を参照して説明する。
[第1の実施の形態]
図1は、本発明の第1の実施の形態による自動追尾装置を模式的に示すブロック図である。本実施の形態による自動追尾装置は、図1に示すように、パン、チルト及びズームの制御が可能なカメラ1と、処理部2と、分配器3と、表示・記録制御部4と、液晶パネル等の表示部5と、記録部6とを備えている。
カメラ1は、カメラ本体1aと、カメラ本体1aに装着され処理部2からのズームを制御する制御信号に応じて倍率を設定するズームレンズ1bと、カメラ本体1bが搭載され処理部2からのパン及びチルトを制御する制御信号に応じてカメラ本体1aのパン及びチルトを設定する回転台1cとを有している。
分配器3は、カメラ1からの画像信号を、処理部2と表示・記録制御部4とに分配して供給する。画像処理部2は、分配器3を介して供給されたカメラからの画像信号に基づいて、カメラ1により撮像された画像を処理して、カメラ1が侵入者又は侵入物体等の追尾対象10(後述する図2参照)を自動追尾して撮像するように、カメラ1のパン、チルト及びズームを制御する。表示・記録制御部4は、分配器3を介して供給されたカメラからの画像信号が示す画像を、表示部5に表示させたり記録部6に記録させたりする。監視者は、表示部5に表示された画像を監視することができる。なお、監視者が画像を監視しないような場合は、分配器3を設けずに、カメラ1からの画像信号を処理部2に直接入力させてもよい。
図2は、カメラ1による追尾対象10の追尾の様子の例を模式的に示す図である。図2では、侵入者等の追尾対象10を追尾して、カメラ1の視野が変化している様子を示している。なお、実際には、追尾対象10の移動に伴い、回転台1bのパン及びチルトが変化することでカメラ1の視野の向きが変化するとともにズームレンズ1bが作動することでカメラ1の視野が拡大・縮小するが、図2では、カメラ1の各部の図示は省略しカメラ1の視野のみを模式的に示している。
次に、本実施の形態による自動追尾装置の処理部2の動作の一例について、図3乃至図11を参照して説明する。図3は、処理部2の動作の一例を示す概略フローチャートである。図4は、図3中の追尾対象検知処理(ステップS2)を詳細に示すフローチャートである。図5は、図3中のモード選択処理(ステップS4)を詳細に示すフローチャートである。図6及び図7は、図3中の追跡処理の本処理(ステップS5)を詳細に示すフローチャートである。図8乃至図11は、図3中のカメラ制御処理(ステップ7)を詳細に示すフローチャートである。
図3に示すように、処理部2は、動作を開始すると、まず、カメラ1をプリセット状態にする(ステップS1)。すなわち、処理部2は、カメラ1のパン、チルト及びズームを予め定められたパン、チルト及びズームにする。
次に、処理部2は、プリセットされた状態、つまり、カメラ1のパン、チルト、ズームが固定の状態で、追尾対象を検知(動体検知)する追尾対象検知処理を行う(ステップS2)。この検知は、一般的に用いられている手法(図4中のS101〜S112)を適用する他に、レーザーレーダなどの他のセンシングデバイスによって行ってもよいし、画面上に表示された人物を監視者が指定手段としてのマウス等のポインティングデバイスによって指定することによって行ってもよい。
ここで、図4を参照して、追尾対象検知処理(ステップS2)の一例について説明する。なお、図3中の追尾対象検知処理(ステップS2)は、図4に示す例に限定されるものではない。
追尾対象検知処理(ステップS2)を開始すると、図4に示すように、処理部2は、まず、カメラ1が撮像した2枚の連続する画像をサンプリングし(ステップS101,S102)、それらの画像の差分画像(フレーム間差分画像)を生成する(ステップS103)。
次いで、処理部2は、ステップS103で生成した差分画像を2値化する(ステップS104)。この2値化に用いる閾値は、固定閾値でもよいし、判別分析法に代表されるような可変閾値でもよい。
引き続いて、処理部2は、ステップS104で2値化された画像をラベリングする(ステップS105)。そして、処理部2は、ラベリングされたものがあるか否かを判定し(ステップS106)、ラベリングされたものがなければステップS112へ移行する一方、ラベリングされたものがあれば、ステップS107へ移行する。
ステップS107において、処理部2は、ラベリングされたもの全てについてそれぞれ特徴量を取得する(ステップS107,S108)。ここでいう特徴量は、例えば面積や円形度など、追尾対象10を正確に検出するために必要なものである。
その後、処理部2は、ステップS107で取得した全てのラベルの特徴量から、追尾対象10の候補となるものが存在するか否かを判定する(ステップS109)。存在しなければステップS112へ移行する一方、存在すればステップS110へ移行する。
ステップS110において、処理部2は、追尾対象10の候補のうちから追尾対象10を決定する。このとき、追尾対象10の候補が1つであればそれを追尾対象10として決定し、追尾対象10の候補が複数存在すれば、所定の判断基準によって1つに絞り込んで、それを追尾対象10として決定する。
ステップS111の後に、処理部2は、追尾対象10が検知されたか否かを示す追尾対象検知フラグを1(1は、追尾対象10が検知されたこと示す。)にセットし(ステップS111)、追尾対象検知処理(ステップS2)を終了して、図3中のステップS3へ移行する。
ステップS112において、処理部2は、追尾対象検知フラグを0(0は、追尾対象10が検知されなかったこと示す。)にセットする。その後、追尾対象検知処理(ステップS2)を終了して、図3中のステップS3へ移行する。
再び図3を参照すると、ステップS3において、処理部2は、ステップS2で追尾対象10が検知されたか否かを判定する。この判定は、前記追尾対象検知フラグが1であるか0であるかによって行う。追尾対象10が検知された場合(追尾対象検知フラグが1の場合)は、ステップS4へ移行する一方、追尾対象10が検知されなかった場合(追尾対象検知フラグが0の場合)は、ステップS2へ戻り、追尾対象検知処理(ステップS2)を繰り返す。
ステップS4において、処理部2は、カメラ1により撮像された画像に基づいて追尾対象を追跡する追跡処理の予備処理として、モード選択処理を行う。このモード選択処理(ステップS4)において、処理部2は、カメラ1により撮像された画像に基づいて、追尾対象の追跡開始当初に(本実施の形態では、追尾対象検知処理(ステップS2)で追尾対象10が検知された直後に)、当該追尾対象10に応じた領域(本実施の形態では、外接矩形領域)である追尾対象領域の全体の領域から得た特徴量(本実施の形態では、ヒストグラム)であるシングルパート特徴量(本実施の形態では、シングルパートヒストグラム)を用いて追跡処理を行うシングルパートモードとするかそれとも前記追尾対象領域の分割された各領域(本実施の形態では、上下2分割された2つの領域)からそれぞれ得た特徴量(本実施の形態では、ヒストグラム)であるマルチパート特徴量(本実施の形態では、マルチパートヒストグラム)を用いて追跡処理を行うマルチパートモードとするかを選択する。
ここで、図5を参照して、モード選択処理(ステップS4)の一例について説明する。なお、図3中のモード選択処理(ステップS4)は、図5に示す例に限定されるものではない。本実施の形態では、特徴量として扱うヒストグラムは、CIE1976L*u*v*色空間におけるヒストグラムを扱う。もっとも、本発明では、特徴量は、他の種々の色空間のヒストグラムでもよいし、必ずしもヒストグラムに限定されるものではない。
モード選択処理(ステップS4)を開始すると、図5に示すように、処理部2は、まず、図3中の追尾対象検知処理(ステップS2)(特に、図4中のステップS110)で検知された追尾対象10に応じた領域である追尾対象領域(本実施の形態では、外接矩形領域)を上下に2分割する(ステップS201)。もっっとも、本発明では分割のパターンは必ずしもこれに限定されるものではなく、左右2分割など任意の分割方法を採用してもよい。また、その分割数も2分割に限定されるものではない。この点については後述する。
次に、処理部2は、ステップS201で分割された各分割領域に番号を割り当てるため、分割領域番号を意味するカウント値iを1にセットする(ステップS202)。
次いで、処理部2は、図4中のステップS102でサンプリングされた画像におけるi番目の分割領域について、CIE1976L*u*v*色空間における階級数mLの明度指数ヒストグラム(1次元ヒストグラム)を生成する(ステップS203)。
引き続いて、処理部2は、ステップS203で生成された明度指数ヒストグラムを、全ての階級の度数の合計が0.5となるように正規化する(ステップS204)。すなわち、ステップS203で生成された明度指数ヒストグラムの各階級の度数をそれぞれ、全ての階級の度数の合計で割った後に更に1/2にする。
その後、処理部2は、図4中のステップS102でサンプリングされた画像におけるi番目の分割領域について、CIE1976L*u*v*色空間における階級数mu×mvの知覚色度指数ヒストグラム(2次元ヒストグラム)を生成する(ステップS205)。
次に、処理部2は、ステップS205で生成された知覚色度指数ヒストグラムを、全ての階級の度数の合計が0.5となるように正規化する(ステップS206)。すなわち、ステップS205で生成された知覚色度指数ヒストグラムの各階級の度数をそれぞれ、全ての階級の度数の合計で割った後に更に1/2にする。
次いで、処理部2は、下記の数1に従って、ステップS204で正規化された明度指数ヒストグラム及びステップS206で正規化された知覚色度指数ヒストグラム結合して、1次元化したヒストグラムpiを生成する(ステップS207)。
その後、処理部2は、現在の分割領域番号iが2であるか否かを判定することで、全ての分割領域(本実施の形態では、2つの分割領域)について、ヒストグラムpiの生成が終了したか否かを判定する(ステップS208)。終了していなければ、処理部2はiを2にセットし(ステップS209)、ステップS203へ戻る。一方、終了していれば、ステップS210へ移行する。
ステップS210において、処理部2は、下記の数2に従って、ステップS207で2つの分割領域についてそれぞれ生成されたヒストグラムp1,p2同士の間のBhattacharyya距離dを算出する。
このBhattacharyya距離dは、ヒストグラムp1,p2同士の類似度を示す指標となり、その類似度が高いほど距離dの値は小さくなる一方、その類似度が低いほど距離dの値は大きくなる。なお、本発明では、ヒストグラムp1,p2同士の類似度を示す指標は、必ずしもBhattacharyya距離dに限定されるものではない。
次に、処理部2は、ステップS210で算出されたBhattacharyya距離dが予め設定した閾値Tより大きいか否かを判定することで、ヒストグラムp1,p2同士の類似度が所定以下に低いか所定以上に高いかを判定する(ステップS211)。処理部2は、閾値Tより大きければ(ヒストグラムp1,p2同士の類似度が所定以下に低ければ)、モードフラグを0(0は、マルチパートモードを選択したことを示す)にセットする(ステップS212)一方、閾値Tより小さければ(ヒストグラムp1,p2同士の類似度が所定以上に高ければ)、モードフラグを1(1は、シングルパートモードを選択したことを示す)にセットする(ステップS213)。ステップS212の後及びステップS213の後、モード選択処理(ステップS4)を終了して、図3中のステップS5へ移行する。
再び図3を参照すると、ステップS5において、処理部2は、モード選択処理(ステップS4)で選択されたモードで、カメラ1により撮像された画像に基づいて追尾対象を追跡する追跡処理の本処理を行う。本実施の形態では、追跡処理の本処理(ステップS5)において、処理部2は、カメラ1により撮像された画像に基づいて、追尾対象領域の位置及び大きさをパラメータとした複数のパーティクルによるパーティクルフィルタにより、追跡結果として追尾対象領域の位置及び大きさを推定する。前記パーティクルフィルタは、前記各パーティクルに関して、過去の追尾対象領域の特徴量(シングルパートモード時にはシングルパート特徴量としてのシングルパートヒストグラム、マルチパートモード時にはマルチパート特徴量としてのマルチパートヒストグラム)に基づく参照特徴量(本実施の形態では参照ヒストグラム)に対して当該パーティクルの特徴量(シングルパートモード時にはシングルパート特徴量としてのシングルパートヒストグラム、マルチパートモード時にはマルチパート特徴量としてのマルチパートヒストグラム)が相違する度合いを示す相違度d(n)によって算出した尤度πt (n)を用いる。
ここで、図6及び図7を参照して、追跡処理の本処理(ステップS5)の一例について説明する。なお、図3中の追跡処理の本処理(ステップS5)は、図6及び図7に示す例に限定されるものではない。
追跡処理の本処理(ステップS5)を開始すると、図6に示すように、処理部2は、まず、1枚の画像をサンプリングする(ステップS300)。
次に、処理部2は、図12に示すように、画像内の予め設定した所定の幅で所定の高さを有する領域Rを追尾対象10の探索範囲として、領域R内に、追尾対象領域(本実施の形態では、矩形)の位置(例えば、重心)及び大きさ(例えば、縦又は横寸法)をパラメータとしたN個のサンプル(パーティクル)PS1〜PS5,…,PSn,…,PSNをばら撒く(ステップS301)。各サンプルの位置は、領域R内であれば任意であり、当初はランダムにばら撒かれる。各サンプルの縦横比は、元の追尾対象領域(図4中のステップS110で検知された追尾対象10に応じた領域である追尾対象領域(本実施の形態では、外接矩形領域))と縦横比が同じとされる。各サンプルの大きさは任意であり、当初はランダムに設定される。なお、図3中の追尾対象検知処理(ステップS2)後の最初に行われる本処理(ステップS5)におけるステップS301の処理では、サンプルをN個ばら撒くが、2回目以降の本処理(ステップS5)におけるステップS301の処理では、N個から前回の本処理(ステップS5)で残ったサンプルの数を引いた不足分を追加してばら撒く。
なお、図12は、追尾対象10の探索範囲をなす領域Rとサンプルの分布状態の例を、模式的に示す図である。なお、図12において、ハッチングを付した矩形領域ESは、後述するステップS316により推定された追尾対象領域の例を示している。
次に、処理部2は、N個のサンプルに番号を割り当てるため、サンプル番号を意味するカウント値nを1にセットする(ステップS302)。
次いで、処理部2は、図3中のモード選択処理(ステップS4)で最新に設定されたモードフラグが0であるか否かを判定することで、現在選択されているモードがマルチパートモードであるかシングルパートモードであるかを判定する(ステップS303)。マルチパートモードが選択されていれば(モードフラグが0であれば)、処理部2は、n番目のサンプルの領域を、図5中のステップS201と同様に分割(本実施の形態では、上下に2分割)した(ステップS304)後に、ステップS305へ移行する。一方、シングルパートモードが選択されていれば(モードフラグが1であれば)、ステップS304を経ることなくステップS305へ移行する。
ステップS305において、処理部2は、領域番号を意味するカウント値iを1にセットする。マルチパートモード時にはサンプルの領域は2分割されているのでiは1,2となるが、シングルパートモード時にはサンプルの領域は分割されないのでiは1にしかならない。
次に、処理部2は、ステップS300で最新にサンプリングされた画像におけるn番目のサンプルのi番目の領域について、ステップS203〜S207と同様の処理を行うことで、CIE1976L*u*v*色空間における明度指数ヒストグラム及び知覚色度指数ヒストグラムをそれぞれ正規化したものを結合して1次元化して得たヒストグラムqi(数1で示すヒストグラムpiに相当するサンプルのi番目の領域のヒストグラム)を生成する。
次いで、処理部2は、下記の数3に従って、参照領域のヒストグラムpiとサンプルの領域のヒストグラムqiとの間の、Bhattacharyya距離di (n)を算出する(ステップS307)。ここで、参照領域のヒストグラムpiは、参照ヒストグラムpiあるいは参照データと呼ぶ場合があり、図3中の追尾対象検知処理(ステップS2)後の最初に行われる本処理(ステップS5)におけるステップS307の処理では、図5中のS207で生成されたヒストグラムpiであるが、2回目以降の本処理(ステップS5)におけるステップS307の処理では、前回の本処理(ステップS5)におけるステップS317で更新されたヒストグラムpt(ただし、当該i番目の領域に関するもの)である。
引き続いて、処理部2は、ステップS303と同様に、現在選択されているモードがマルチパートモードであるかシングルパートモードであるかを判定する(ステップS308)。マルチパートモードが選択されていれば(モードフラグが0であれば)ステップS309へ移行し、シングルパートモードが選択されていれば(モードフラグが1であれば)ステップS312へ移行する。
ステップS309において、処理部2は、現在の領域番号iが2であるか否かを判定することで、全ての領域(本実施の形態では、2つの分割領域)について、Bhattacharyya距離di (n)の算出が終了したか否かを判定する。終了していなければ、処理部2はiを2にセットし(ステップS310)、ステップS306へ戻る。一方、終了していれば、ステップS311へ移行する。
ステップS311において、処理部2は、下記の数4に従って、n番目のサンプルの相違度d(n)を、ステップS307で順次算出された各分割領域のBhattacharyya距離di (n)の平均値として算出し、ステップS313へ移行する。
一方、シングルパートモード時には、ステップS312において、処理部2は、ステップS307で求めたBhattacharyya距離di (n)を、そのままn番目のサンプルの相違度d(n)とし、ステップS313へ移行する。
ステップS313において、処理部2は、下記数5に従って、ステップS311又はS312で得られた相違度d(n)によって尤度πt (n)を算出する。ここで、尤度はガウス分布に従うものと仮定している。
数5において、Nはパーティクルの個数(サンプル数)である。また、数5において、σ2は通常はガウス分布の分散となるが、ここでの計算においては予め設定しておいた値とする。
その後、処理部2は、現在のサンプル番号nがNであるか否かを判定することで、全てのサンプルについて、尤度πt (n)の算出が終了したか否かを判定する(ステップS314)。終了していなければ、処理部2はサンプル番号nを1だけインクリメントし(ステップS315)、ステップS303へ戻る。一方、終了していれば、ステップS316へ移行する。
ステップS316において、処理部2は、ステップS313で算出した尤度πt (n)と各サンプルの位置(重心位置)及び大きさから、下記の数6に従って、状態の推定結果である追尾対象領域の位置及び大きさの推定結果(すなわち、追跡結果)として、重み付け平均値E[St]を求める。重み付け平均値E[St]で表される追尾対象領域の位置及び大きさが、追跡結果となる追尾対象領域の位置及び大きさである。
その後、処理部2は、ステップS316で得た推定結果に基づいて、下記数7に従って、参照データを更新する(ステップS317)。数7において、ヒストグラムpt−1は、時刻t−1の推定された追尾対象領域に関するヒストグラムを示し、ステップS300で最新にサンプリングされた画像における、ステップS315(数6)で推定結果として得られた追尾対象領域について、ステップS203〜S207と同様の処理を行うことで、CIE1976L*u*v*色空間における明度指数ヒストグラム及び知覚色度指数ヒストグラムをそれぞれ正規化したものを結合して1次元化して得たヒストグラムである。また、数7において、qt−1は時刻t−1の推定前の追尾対象領域に関するヒストグラムを示す。
次に、処理部2は、ステップS313で算出された全てのサンプルの尤度πt (n)を、その値の大きい順にソートする(ステップS318)。
次いで、処理部2は、ステップS318で尤度の値をソートした結果として得た尤度の最大値が、予め設定した閾値Vよりも大きいか否かを判定する(ステップS319)。閾値Vよりも大きければ、追跡が成功したものと判断して、追跡結果フラグを1に設定し(S320)、ステップS322へ移行する。一方、閾値Vよりも小さければ、追跡が失敗したものと判断して、追跡結果フラグを0に設定し(S321)、ステップS322へ移行する。
処理部2は、各サンプルについて、ステップS322〜S324の処理を繰り返し、全てのサンプルについてステップS322〜S324の処理が終了すると(ステップS325でYES)、ステップS326へ移行する。ステップS322において、処理部2は、当該サンプルの尤度πt (n)が予め設定していた閾値Πよりも大きいか否かを判定する。閾値Πよりも大きければS323へ移行し、小さければS324に移行する。ステップS323において、処理部2は、当該サンプルは、パーティクルフィルタの公知の手法に従って、次回における(すなわち、次のフレームにおける)サンプルを構成するため分裂を行う。ステップS324において、処理部2は、当該サンプルを次回における(すなわち、次のフレームにおける)サンプルを構成しないために消滅させる。
ステップS326において、処理部2は、各サンプルについてステップS323の分裂又はステップS324の消滅を行った結果、残ったサンプルがN個以下であるか否かを判定する。N個以下であれば、追跡処理の本処理(ステップS5)を終了して、図3中のステップS6へ移行する。一方、N個よりも多い場合は、処理部2は、尤度πt (n)が小さいものから順に分裂したものを含めて消滅させる(ステップS327)。その結果、残ったサンプルはN個またはN−1個となる。ステップS327の後、追跡処理の本処理(ステップS5)を終了して、図3中のステップS6へ移行する。
再び図3を参照すると、ステップS6において、処理部2は、現在の追跡結果フラグが1であるか否かを判定することで、ステップS5の本処理による追跡が成功したか否かを判定する。追跡が成功であれば(追跡結果フラグが1であれば)、ステップS7へ移行する。一方、追跡が失敗であれば(追跡結果フラグが0であれば)、ステップS8へ移行する。ステップS8において、処理部2は、追追跡の失敗の状態が一定時間継続しているか否かを判定する。一定時間継続していない場合は、追跡処理の本処理(ステップS5)に戻に戻り、その処理を繰り返す。一定時間継続している場合は、追跡処理が成功する見込みがないものとみなして、ステップS1(プリセット状態)に戻る。
ステップS6において追跡が成功である(追跡結果フラグが1である)と判定されると、処理部2は、追跡処理の本処理(ステップS5)で得た追跡結果、すなわち、図6中のステップS316で推定された追尾対象領域の位置及び大きさに応じて、カメラ1が追尾対象を追尾するように、カメラ1のパン、チルト及びズームを制御するカメラ制御処理を行う。このカメラ制御処理において、処理部2は、前記追跡結果に基づいて現在から所定時間経過後(nfフレーム後)の追尾対象領域の位置及び大きさを予測し、その予測結果に応じて、カメラ1に対する現在のパン、チルト及びズームの制御状態を修正してカメラ1のパン、チルト及びズームを制御する。ここで、本実施の形態では、追尾対象領域の位置及び大きさを予測は、カルマンフィルタにより行う。
ここで、図8乃至図11を参照して、カメラ制御処理(ステップS7)の一例について説明する。なお、図3中のカメラ制御処理(ステップS7)は、図8乃至図11に示す例に限定されるものではない。
カメラ制御処理(ステップS7)を開始すると、図8に示すように、処理部2は、まず、処理部2は、カメラ制御処理において用いる情報として、追跡処理の結果(図6中のステップS316で得た重み付け平均値E[St]、すなわち、ステップS316で推定された追尾対象領域の位置及び大きさ)を取得する(ステップS501)。なお、この追跡結果は処理部2がそもそも有しているので、本来はその取得動作は不要であるが、ここでは理解を容易にするため、このステップS501を挿入している。
次に、処理部2は、現在のカメラ1のパン、チルト、ズームのそれぞれの制御状態を示す情報として、パン制御フラグ、チルト制御フラグ、ズーム制御フラグを取得する(ステップS502)。本実施の形態では、カメラ1は、パン、チルト、ズームのそれぞれについて、処理部2から制御指令受けてからその制御動作を行ってその制御動作が完了すると制御完了信号を処理部2に返すようになっている。処理部2は、カメラ1にパン制御指令を与えるときにパン制御フラグを1にセットし、カメラ1からパン制御完了信号を受けたときに割り込み処理でパン制御フラグを0にリセットする。また、処理部2は、カメラ1にチルト制御指令を与えるときにチルト制御フラグを1にセットし、カメラ1からチルト制御完了信号を受けたときに割り込み処理でチルト制御フラグを0にリセットする。さらに、処理部2は、カメラ1にズーム制御指令を与えるときにズーム制御フラグを1にセットし、カメラ1からズーム制御完了信号を受けたときに割り込み処理でズーム制御フラグを0にリセットする。このように、パン、チルト、ズームのそれぞれの制御フラグは、1であれば対応する動作が制御中であることを示し、0であれば対応する動作が停止中であることを示す。以上の説明からわかるように、パン制御フラグ、チルト制御フラグ、ズーム制御フラグは処理部2がそもそも有しているので、本来はその取得動作は不要であるが、ここでは理解を容易にするため、このステップS502を挿入している。
次に、処理部2は、全ての制御フラグ(パン制御フラグ、チルト制御フラグ、ズーム制御フラグ)が0であるか否かを判定し(ステップS503)、全ての制御フラグが0であればステップS519へ移行し、いずれか1つ以上の制御フラグが1であればステップS504へ移行する。
ステップS504において、処理部2は、ステップS501で取得した追跡結果(特に、追尾対象領域の位置)が、前のフレームで取得した追跡結果(特に、追尾対象領域の位置)に比較して、画像中央から遠ざかっているかどうかを判定する。遠ざかっている場合はステップS506へ移行し、近づいている場合はステップS505へ移行する。
画像中央から遠ざかっている場合は、前のフレームからの制御が適していないと判断し、処理部2は、ステップS506においてパン、チルト、ズームいずれの制御フラグも0にリセットし、さらに、カメラ制御を停止させる(ステップS507)。
ステップS505において、処理部2は、ステップS501で取得した追跡結果に基づいて、それまでの追尾対象の進行方向や大きさの変化の方向(だんだん拡大していくのか、だんだん縮小していくのか)が変わってしまったかどうかを判定する。進行方向及び大きさの変化共に変化がなければステップS508へ移行し、いずれかが変化している場合はステップS506へ移行する。
ステップS508において、処理部2は、ズーム制御フラグが1であるか否かを判定することで、現在、ズーム制御の途中であるか否かを判定する。ズーム制御中であればステップS509へ移行し、ズーム制御中でなければステップS511に移行する。
ステップS509において、処理部2は、ステップS501で取得した追跡結果が、既に予め設定しておいた目標とする大きさの範囲に達しているかどうかを判定する。達している場合はS510へ移行し、達していない場合はステップS511へ移行する。
ステップS510において、処理部2は、ズームの制御フラグを0にする。これは、予め設定しておいた目標とする大きさの範囲に達しているため、その時点でズーム制御をストップさせることが好ましいためである。
ステップS511において、処理部2は、パン制御フラグが1であるか否かを判定することで、現在、パン制御の途中であるか否かを判定する。パン制御中であればステップS512へ移行し、パン制御中でなければステップS514へ移行する。
ステップS512において、処理部2は、ステップS501で取得した追跡結果が、既に予め設定しておいた目標とする水平方向の位置の範囲に達しているか否かを判定する。達している場合はステップS513へ移行し、達していない場合はS514へ移行する。
ステップS513において、処理部2は、パンの制御フラグを0にする。これは、予め設定しておいた目標とする水平方向の位置の範囲に達しているため、その時点でパン制御をストップさせることが好ましいためである。
ステップS514において、チルト制御フラグが1であるか否かを判定することで、現在、チルト制御の途中であるか否かを判定する。チルト制御中であればステップS515へ移行し、チルト制御中でなければS517へ移行する。
ステップS515において、処理部2は、S501で取得した追跡結果が、既に予め設定しておいた目標とする垂直方向の位置の範囲に達しているか否かを判定する。達している場合はS516へ移行し、達していない場合はS517へ移行する。
ステップS516において、処理部2は、チルトの制御フラグを0にする。これは、予め設定しておいた目標とする垂直方向の位置の範囲に達しているため、その時点でチルト制御をストップさせることが好ましいためである。
ステップS517において、処理部2は、パン制御フラグ、チルト制御フラグ、ズーム制御フラグのいずれかに変更があったか否かを判定する。ステップS510、S513、S516のいずれかを行った場合はS518へ移行し、いずれも行わなかった場合はそのまま制御を続行させるためS519へ移行する。
ステップS518において、処理部2は、制御を変更する。これは、ステップS518に到達するということは、その前の予測によるカメラ1のパン、チルト、ズームの制御と実際の追尾対象の動きに違いが生じていることを示すことになるためである。
ステップS519において、処理部2は、カメラ1から、現在のカメラ1の姿勢(パン、チルト、ズームの位置)を取得する。
次に、処理部2は、ステップS501で取得した追跡結果と、その前の追跡処理の結果から、nfフレーム後の追尾対象領域の位置と大きさを予測する(ステップS520)。nfフレーム後とは、例えば、NTSCの信号の場合、(nf/30)秒後に相当する。
ここでは、nfフレーム後の追尾対象領域の位置と大きさを予測するため、カルマンフィルタを用いる。
ここでは、追尾対象の位置及び大きさの変化が等速であり、かつその変化が滑らかであると仮定して、カルマンフィルタを構成する。カルマンフィルタでは、追尾対象の状態の変化が設定したモデルに厳密に当てはまらないとしても、誤差項があるので近似的に適用できる場合が多い。
時刻kの状態変数ベクトルxkを下記の数8のように定義する。
ここで、xkと上にドットを付したxkは画像における対象矩形の中心の水平座標と速度、ykと上にドットを付したykは垂直座標と速度、skと上にドットを付したskは大きさ(矩形の横幅と縦幅の積)とその変化を表す。
この状態ベクトルとカメラ1の制御、誤差を考慮したシステム方程式は、下記の数9で定義される。
数9において、Aは下記の数10に示す定数行列である。
入力画像の横幅をWsrc、縦幅をHsrc、時刻kにおける水平画角をθk、垂直画角をφk、カメラのパン角速度を上にドットを付したPk、チルト角速度を上のドットを付したTkとすると、各時刻でパン・チルト制御による画素の水平・垂直方向の変化量は下記の数11及び数12でそれぞれで表される。
なお、ズーム操作による画角の変化をλとすると、λは下記の数13で表すことができる。
以上の要素から、制御ベクトルukは下記の数14で与えられる。ukはカメラ制御による画像の変動を表す制御ベクトルである。
wkはシステム誤差であり、下記の数15で示すように、共分散行列Qkかつ平均0の正規白色過程に従う。
ここでは、先に述べた追跡処理から得た、追尾対象を囲む矩形の位置と大きさを観測値とし、時刻kの観測ベクトルを下記の数16のように定義する。
観測方程式は、下記の数17で表される。
ここでHは下記の数18に示す定数行列である。また、数19で示すように、観測誤差vkは共分散行列Rkかつ平均0の正規白色過程に従う。
カルマンフィルタでは、現在時刻の観測量と1期前の状態量を用いて、現在時刻の推定量を推定する。システムの現在時刻kの状態は下記の数20で示す2つの変数で表される。なお、本明細書において、記号の上に付した符号^は、推定値を意味している。
カルマンフィルタは、時間ステップをひとつ進めるために予測と更新の二つの手続きを行う。予測の手続きでは、前の時刻の推定状態から、現在時刻の推定状態を計算する。更新では、今の時刻の観測を用い、推定値を補正することで、より正確な状態を推定する。
予測に関し、現在時刻の推定値は下記の数21で表され、現在時刻の誤差の共分散行列は下記の数22で表される。
更新に関し、カルマンフィルタは、更新後の誤差の推定値を最小にするカルマンゲインを下記の数23〜数27により計算し、状態を更新していく。
以上の計算により、誤差を考慮した現在時刻の状態量を推定することができる。
ここで、カルマンフィルタの初期条件の設定について説明する。追跡開始の際の追尾対象矩形の中心座標を(x0,y0)、大きさをs0とすると、状態の初期値は下記の数28のようになる。ここで、速度は0としている。
初期条件に誤差があるなら、誤差の共分散行列を下記の数29のように与える。
フィルタの特性はシステム誤差と観測誤差の分散比であり、この分散比が大きいほどフィルタ処理後の推定値は元の観測値に忠実となるが誤差に敏感となり、小さいほど平滑化されるがデータに対する追従性が落ちる。本実施の形態では、対象人物の移動方向の変化、立ち止まりなどに迅速に対応できるが、追跡結果に含まれる誤差には影響を受けにくい程度の分散比を経験的に用いる。
以上、図9中のステップS520の処理で用いるカルマンフィルタについて説明した。
ステップS520の後に、処理部2は、ステップS520の予測によって得られたnfフレーム後の追尾対象の大きさと目標とすべき追尾対象の大きさsiから、nfフレーム後の水平画角または垂直画角を算出する(ステップS521)。ただし、下記の数30は水平画角を算出するものである。
次に、処理部2は、ステップS521で算出された水平画角がズームの限界に達しているか否かを判定する(ステップS522)。ズームの限界に達している場合はステップS549へ移行する。ただし、ズームアウトで限界に達している場合はステップS523へ移行する。ズームイン、ズームアウトのいずれも限界に達していない場合はステップS523へ移行する。
ステップS523において、処理部2は、S521で得られた結果から現在の水平画角と比較し、ズームの制御量は所定値より小さいか否かを判定する。小さければS524へ移行し、大きければS526へ移行する。
ステップS524において、処理部2は、ズーム制御速度を0にセットする。引き続いて、処理部2は、ズーム制御フラグを0にセットし(ステップS525)、ステップS530へ移行する。これらにより、ズームの制御を行わない。このように、ズームの制御量が小さい場合は、ズームの制御を行わない。ズームの制御量が小さい場合、ズームの制御を行うと、細かい動きをすることになるので、表示部5を監視する監視者に不快感を与える可能性があるためである。
ステップS526において、ズームの制御速度Zspeedを下記の数31により算出する。ここで、frはフレームレート(NTSCの場合はfr=30)を示す。また、Zptは水平画角が時刻tのときのズームポジションである。
その後、処理部2は、ステップS526で算出されたズームの制御速度Zspeedと現在制御中の速度との間の差が所定値より大きいか否かを判定する(ステップS527)。差が大きければステップS528へ移行し、差が小さければステップS529へ移行する。ここでも、差が一定値以上大きくなければズームの制御速度の変更を行わないのは、表示部5を目視監視する監視者にとってズームの制御速度が頻繁に変化することは不快感につながる可能性があるので、これを回避するためである。また、追尾対象は画像中の真ん中近くにあればよく、画像中心と全くずれがない状態を維持することが目的ではない。
ステップS528において、処理部2は、ステップS526で算出されたズームの制御速度の値に変更する。その後、ステップS529へ移行する。
ステップS529において、処理部2は、ズーム制御フラグを1に設定する。その後、ステップS530へ移行する。
ステップS530において、処理部2は、ステップS520の予測で得られた結果から、パンの制御量は所定値より小さいか否かを判定する。小さければステップS531へ移行し、大きければステップS533へ移行する。
ステップS531において、処理部2は、パンの制御速度を0にセットする。引き続いて、処理部2は、パン制御フラグを0にセットし(ステップS532)、ステップS538へ移行する。これらにより、パンの制御を行わない。このように、パンの制御量が小さい場合は、パンの制御を行わない。パンの制御量が小さい場合、パンの制御を行うと、細かい動きをすることになるので、表示部5を監視する監視者に不快感を与える可能性があるためである。
ステップS533において、処理部2は、パンの制御速度Pspeedを下記の数32により算出する。ここでWsrcは入力画像の横幅である。
その後、処理部2は、ステップS533で算出されたパンの制御速度Pspeedでパンを制御した仮定した場合において、nfフレーム分時間が経過したとき(nf/fr秒後)のパンの位置を計算し、その値がパンの限界に達するか又はパンの限界を超えた値となるか否かを判定する(ステップS534)。その値がパンの限界に達するか又はパンの限界を超えた値となる場合は、ステップS549へ移行し、そうではない場合はステップS535へ移行する。
ステップS535において、処理部2は、ステップS533で算出されたパンの制御速度Pspeedと現在制御中の速度との差が所定値より大きいか否かを判定する。差が大きければステップS536へ移行し、差が小さければステップS537へ移行する。
ステップS536において、処理部2は、ステップS536で算出されたパンの制御速度の値に変更する。その後ステップS537へ移行する。
ステップS537において、処理部2は、パン制御フラグを1に設定する。その後、ステップS538へ移行する。
ステップS538において、処理部2は、ステップS520の予測で得られた結果から、チルトの制御量は所定値より小さいかどうかを判定する。小さければステップS539へ移行し、大きければステップS541へ移行する。
ステップS539において、処理部2は、チルトの制御速度を0にセットする。引き続いて、処理部2は、チルト制御フラグを0にセットし(ステップS540)、ステップS546へ移行する。これらにより、チルトの制御を行わない。このように、チルトの制御量が小さい場合は、チルトの制御を行わない。チルトの制御量が小さい場合、チルトの制御を行うと、細かい動きをすることになるため表示部5を監視する監視者に不快感を与える可能性があるためである。
ステップS541において、処理部2は、チルトの制御速度Tspeedを下記の数33により算出する。ここでHsrcは入力画像の高さ(縦方向の長さ)である。
その後、処理部2は、S541で算出されたチルトの制御速度Tspeedでチルトを制御したと仮定した場合において、nfフレーム分時間が経過したとき(nf/fr秒後)のチルトの位置を計算し、その値がチルトの限界に達するか又はチルトの限界を超えた値となる否かを判定する(ステップS542)。その値がチルトの限界に達するか又はチルトの限界を超えた値となる場合は、ステップS549へ移行し、そうではない場合はステップS543へ移行する。
ステップS543において、処理部2は、ステップS541で算出されたチルトの制御速度Tspeedと現在制御中の速度との差が所定値より大きいか否かを判定する。差が大きければS544へ移行し、差が小さければS545へ移行する。
ステップS544において、処理部2は、ステップS541で算出されたチルトの制御速度の値に変更する。その後ステップS545へ移行する。
ステップS545において、処理部2は、チルト制御フラグを1に設定する。その後、ステップS546へ移行する。
ステップS546において、処理部2は、全ての制御フラグ(パン制御フラグ、チルト制御フラグ、ズーム制御フラグ)が0であるか否かを判定する。全ての制御フラグが0であれば、制御しないことになるため、ステップS547を経ることなくステップS548へ移行する。いずれか1つ以上の制御フラグが1であれば、ステップS547へ移行する。
ステップS547において、処理部2は、1になっている制御フラグ及びこれに対応する制御速度に応じた制御を行うようにカメラ1に制御指令を与える。その制御は、その速度に応じてnf/fr秒間行うが、このループを出てステップS548へ移行するのは制御が完了するのを待たないでよい。なお、本実施の形態では、制御フラグ自体によって制御指令がカメラ1に与えられるわけではなく、ステップS547のような動作によって制御フラグ及び制御速度に応じた制御指令がカメラ1に与えられるようになっている。
ステップS548において、処理部2は、追尾限界フラグを0(0は、パン、チルト、ズームのいずれもが限界に達する可能性がないことを示す)にする。これは、パン、チルト、ズームのいずれもが限界に達する可能性がない場合に、ステップS548に到達するためである。ステップS548の後、カメラ制御処理(ステップS7)を終了して、図3中のステップS9へ移行する。
ステップS549において、処理部2は、追尾限界フラグを1(1は、パン、チルト、ズームのいずれかが限界に達する可能性があることを示す)にする。これは、パン、チルト、ズームの少なくともひとつが限界に達する可能性がある場合に、ステップS549に到達するためである。ステップS549の後、ステップS550において、処理部2は、カメラ1の姿勢制御中であれば、その制御を停止する。ステップS550の後、カメラ制御処理(ステップS7)を終了して、図3中のステップS9へ移行する。
再び図3を参照すると、ステップS9において、処理部2は、追尾限界フラグが1であるか否かを判定する。追尾限界フラグが1であれば、追尾対象の追尾の継続が困難であると判断し、ステップS1(プリセット状態)に戻る。追尾限界フラグが0であれば、追尾対象の追尾の継続が可能であるので、ステップS5へ戻って、追尾対象の追尾を継続する。
本実施の形態によれば、カメラ1により撮像された画像に基づいてシングルパートモードとマルチパートモードのいずれかが選択され、選択されたモードで追跡処理が行われるので、常にシングルパートモードを行う場合に比べて、より多くの情報に基づいて追跡処理が行われるので、例えば人物同士の区別や人物と背景の区別が困難な追尾対象に対してもより精度良く追跡処理を行うことができ、ひいては、追尾対象をより精度良く追尾して撮像することができる。
本発明者は、本実施の形態による自動追尾装置を試作した。また、第1の比較例に係る自動追尾装置として、本実施の形態による自動追尾装置を常にシングルパートモードのみを行うように改変した自動追尾装置を試作した。さらに、第2の比較例に係る自動追尾装置として、本実施の形態による自動追尾装置を常にマルチパートヒストグラムのみを行うように改変した自動追尾装置を試作した。そして、これらの自動追尾装置で同一の映像について追尾対象の追跡が成功したフレーム数を得た。そして、その映像の種類を種々に変更した。その結果、第1の比較例と第2の比較例とでは、映像の種類によって、第1の比較例の方が第2の比較例よりも追尾対象の追跡が成功したフレーム数が多くなったり、第2の比較例の方が第1の比較例よりも追尾対象の追跡が成功したフレーム数が多くなったりした。これに対し、本実施の形態による自動追尾装置に相当する試作装置で追跡が成功したフレーム数は、いずれの種類の映像についても、第1の比較例と第2の比較例のうち追跡が成功したフレーム数が多い方の比較例で追跡が成功したフレーム数と、ほぼ同数であった。したがって、本実施の形態による自動追尾装置に相当する試作装置では、前記第1及び第2の比較例のいずれよりも、より精度良く追尾対象を追尾することができることが確認された。
また、本実施の形態では、特徴量としてヒストグラムが採用されているので、追尾対象の大きさや形状の変化に強くなり、カメラ1の制御による画像変動に影響を受け難くなる。
さらに、本実施の形態によれば、パーティクルフィルタにより追跡結果として追尾対象領域の位置及び大きさを推定するので、複数の解の候補(複数のパーティクル)を持つので追跡失敗から回復する可能性が高くなり、オクルージョンや複雑な背景などに対して強く、より精度良く追跡処理を行うことができ、ひいては、追尾対象をより精度良く追尾して撮像することができる。さらにまた、本実施の形態によれば、追尾対象領域の位置及び大きさをパラメータとしたパーティクル(サンプル)が用いられているので、追尾対象の大きさも同時に決定することが可能となり、パン、チルト、ズームが制御された画像であっても安定した追尾が可能となる。
また、本実施の形態によれば、カメラ制御処理において予測制御が導入されているので、例えば、カメラ1が制御指令に対して応答してその指令状態になるまでの動作時間が画像処理時間に比べて長い場合であっても、追尾対象の急な動きの変化などにも対応することができ、追尾対象をより精度良く追尾して撮像することができる。なお、カメラのパン、チルト、ズームの制御速度があまりに速過ぎると、追尾対象を監視者が目で追う際に、カメラのパン、チルト、ズームの変化があまりに急激になってしまい、監視者に不快感を与えてしまい監視に適さなくなってしまうが、カメラ1として制御速度が比較的遅いものを使用することができるので、カメラ1のパン、チルト、ズームの変化をスムーズにして監視により適した追尾を実現することができる。
さらに、本実施の形態によれば、このような予測にカルマンフィルタが用いられているので、追尾対象領域の位置及び大きさを精度良く予測することができ、ひいては、追尾対象をより精度良く追尾して撮像することができる。
なお、本実施の形態では、CIE1976L*u*v*色空間における明度指数ヒストグラム及び知覚色度指数ヒストグラムをそれぞれ正規化したものを結合して1次元化して得たヒストグラムが、特徴量として常に用いられている。しかしながら、本発明では、例えば、特徴量として、環境や時間帯(昼間と夜間など)等に応じて、明度指数ヒストグラムのみ(このとき、知覚色度指数ヒストグラムの階級数が減る分、明度指数ヒストグラムの階級数を増加させてもよい。)と、明度指数ヒストグラム(1次元)と知覚色度指数ヒストグラム(2次元)の組み合わせとを、自動的に選択的に使用するようにしてもよい。
ところで、本実施の形態では、追尾対象領域を上下に2分割していたが、前述したように、その分割数等も2分割に限定されるものではない。例えば、必要に応じて、更に2分割するなどしても構わない。例えば、図13に示すような分割の仕方を予め与えておく。まずは、領域p0を領域p11,p12に分割し、これらの領域p11,p12についてBhattacharyya距離を算出する。この分割が適当であると判断された場合、p11はp21とp22に、p12はp31とp32に分割をし、同様にBhattacharyya距離を算出する。p21とp22はこれ以上分割しないと予め決まっている場合は、ここで止めればよい。p32を更に分割してp41,p42に分割できたとしても、p31はBhattacharyya距離の値からこれ以上分割できないと判断されれば、p32だけを分割しても良い。このようにして、予め決めておいた分割方法でその都度分割方法を変えても良い。なお、図13は、領域の分割パターンの例を模式的に示す図である。
本実施の形態では、前述したように、シングルパートモードと分割数を2としたマルチパートヒストグラムとを選択して用いていたが、例えば先に示した図13の場合は、前述したフローチャートの一部(特に、図6中の一部)が図14のようになり、相違度計算は以下の通りとなる。
参照領域p0を構成する領域は、図13からp21,p22,p31,p41,p42の5つの領域で構成されていることになる。各領域のBhattacharyya距離をd1 (n),d2 (n),・・・,d5 (n)とすると、下記数34に示す通りとなる。
相違度d(n)は、数34に示す5つのBhattacharyya距離から、下記数35で与えられる。
[第2の実施の形態]
図15乃至図17は、本発明の第2の実施の形態による自動追尾装置の処理部2が行う図3中の追跡処理の本処理(ステップS5)を詳細に示すフローチャートである。
本実施の形態が前記第1の実施の形態と異なる所は、処理部2が、図3中の追跡処理の本処理(ステップS5)として、図6及び図7に示す処理を行う代わりに、図15乃至図17に示す処理を行う点のみである。
図6及び図7に示す処理では、領域の縦横比は一定であるものの、位置と大きさを任意としてパーティクル(サンプル)をばら撒いている。この場合、位置をkパターン、各位置に対して大きさをjパターンとした場合、パーティクルの数はk×jとなる。もし、計算機の処理能力などの関係上、図6及び図7のようなフローチャートが必ずしも適切でない場合は、図15乃至図17のフローチャートのように、位置をkパターンのパーティクルで推定し、その後に大きさjパターンのパーティクルで推定するという処理でも、図3中の追跡処理の本処理(ステップS5)の実現は可能である。このとき、パーティクルの数は合計k+jとなり、計算量を低減して処理時間を短縮することができる。
本実施の形態のように2段階に分けて追尾対象領域の位置及び大きさを推定する方式は、処理時間が早くなるメリットはあるが、前記第1の実施の形態に比べると、追跡処理の精度が低下する可能性がある。よって、本実施の形態は、追尾対象の動きがそれほど早くなく、画面上での追尾対象の移動量が少ないと想定される場合に特に有効である。移動量が大きいと、大きさの変化も大きくなる可能性があるため、図15乃至図17のような2段階に分けた処理は適していない。
以下、図15乃至図17に示す処理について説明する。
追跡処理の本処理(ステップS5)を開始すると、図15に示すように、処理部2は、まず、1枚の画像をサンプリングする(ステップS400)。
次に、処理部2は、画像内の予め設定した所定の幅で所定の高さを有する領域Rを追尾対象10の探索範囲として、領域R内に、追尾対象領域(本実施の形態では、矩形)の位置(例えば、重心)をパラメータとしたNp個のサンプル(パーティクル)をばら撒く(ステップS401)。各サンプルの位置は、領域R内であれば任意であり、当初はランダムにばら撒かれる。各サンプルの大きさは参照領域と同じ大きさとする。ここで、参照領域は、図3中の追尾対象検知処理(ステップS2)後の最初に行われる本処理(ステップS5)におけるステップS307の処理では、図4中のステップS110で検知された追尾対象10に応じた領域である追尾対象領域(本実施の形態では、外接矩形領域)である。また、2回目以降の本処理(ステップS5)におけるステップS401の処理では、参照領域は、前回の本処理(ステップS5)におけるステップS442で推定された追尾対象領域である。なお、図3中の追尾対象検知処理(ステップS2)後の最初に行われる本処理(ステップS5)におけるステップS401の処理では、サンプルをNp個ばら撒くが、2回目以降の本処理(ステップS5)におけるステップS401の処理では、Np個から前回の本処理(ステップS5)で残ったサンプルの数を引いた不足分を追加してばら撒く。
次に、処理部2は、Np個のサンプルに番号を割り当てるため、サンプル番号を意味するカウント値kを1にセットする(ステップS402)。
次いで、処理部2は、図3中のモード選択処理(ステップS4)で最新に設定されたモードフラグが0であるか否かを判定することで、現在選択されているモードがマルチパートモードであるかシングルパートモードであるかを判定する(ステップS403)。マルチパートモードが選択されていれば(モードフラグが0であれば)、処理部2は、k番目のサンプルの領域を、図5中のステップS201と同様に分割(本実施の形態では、上下に2分割)した(ステップS404)後に、ステップS405へ移行する。一方、シングルパートモードが選択されていれば(モードフラグが1であれば)、ステップS404を経ることなくステップS405へ移行する。
ステップS405において、処理部2は、領域番号を意味するカウント値iを1にセットする。マルチパートモード時にはサンプルの領域は2分割されているのでiは1,2となるが、シングルパートモード時にはサンプルの領域は分割されないのでiは1にしかならない。
次に、処理部2は、ステップS400で最新にサンプリングされた画像におけるk番目のサンプルのi番目の領域について、ステップS203〜S207と同様の処理を行うことで、CIE1976L*u*v*色空間における明度指数ヒストグラム及び知覚色度指数ヒストグラムをそれぞれ正規化したものを結合して1次元化して得たヒストグラムqpi(数1で示すヒストグラムpiに相当するサンプルのi番目の領域のヒストグラム)を生成する(ステップS406)。
次いで、処理部2は、下記の数36に従って、参照領域のヒストグラムpiとサンプルの領域のヒストグラムqpiとの間の、Bhattacharyya距離dpi (k)を算出する(ステップS407)。ここで、参照領域のヒストグラムpiは、参照ヒストグラムpiあるいは参照データと呼ぶ場合があり、図3中の追尾対象検知処理(ステップS2)後の最初に行われる本処理(ステップS5)におけるステップS407の処理では、図5中のS207で生成されたヒストグラムpiであるが、2回目以降の本処理(ステップS5)におけるステップS407の処理では、前回の本処理(ステップS5)におけるステップS443で更新されたヒストグラムpt(ただし、当該i番目の領域に関するもの)である。
引き続いて、処理部2は、ステップS403と同様に、現在選択されているモードがマルチパートモードであるかシングルパートモードであるかを判定する(ステップS408)。マルチパートモードが選択されていれば(モードフラグが0であれば)ステップS409へ移行し、シングルパートモードが選択されていれば(モードフラグが1であれば)ステップS412へ移行する。
ステップS409において、処理部2は、現在の領域番号iが2であるか否かを判定することで、全ての領域(本実施の形態では、2つの分割領域)について、Bhattacharyya距離dpi (k)の算出が終了したか否かを判定する。終了していなければ、処理部2はiを2にセットし(ステップS410)、ステップS406へ戻る。一方、終了していれば、ステップS411へ移行する。
ステップS411において、処理部2は、下記の数37に従って、k番目のサンプルの相違度dp (k)を、ステップS407で順次算出された各分割領域のBhattacharyya距離dpi (k)の平均値として算出し、ステップS413へ移行する。
一方、シングルパートモード時には、ステップS412において、処理部2は、ステップS407で求めたBhattacharyya距離dpi (k)を、そのままk番目のサンプルの相違度dp (k)とし、ステップS413へ移行する。
ステップS413において、処理部2は、下記数38に従って、ステップS411又はS412で得られた相違度dp (k)によって尤度πpt (k)を算出する。ここで、尤度はガウス分布に従うものと仮定している。
数38において、Npはパーティクルの個数(サンプル数)である。また、数38において、σ2は通常はガウス分布の分散となるが、ここでの計算においては予め設定しておいた値とする。
その後、処理部2は、現在のサンプル番号kがNpであるか否かを判定することで、全てのサンプルについて、尤度πpt (k)の算出が終了したか否かを判定する(ステップS414)。終了していなければ、処理部2はサンプル番号kを1だけインクリメントし(ステップS415)、ステップS403へ戻る。一方、終了していれば、ステップS416へ移行する。
ステップS416において、処理部2は、ステップS413で算出した尤度πpt (k)と各サンプルの位置(重心位置)から、下記の数39に従って、状態の推定結果である追尾対象領域の位置の推定結果(すなわち、追跡結果の一部)として、重み付け平均値Ep[St]を求める。重み付け平均値Ep[St]で表される追尾対象領域の位置が、追跡結果の一部となる追尾対象領域の位置である。
次に、処理部2は、ステップS413で算出された全てのサンプルの尤度πpt (k)を、その値の大きい順にソートする(ステップS417)。
次いで、処理部2は、ステップS417で尤度の値をソートした結果として得た尤度の最大値が、予め設定した閾値Vpよりも大きいか否かを判定する(ステップS418)。閾値Vpよりも大きければ、ここまでの追跡が成功したものと判断して、追跡結果フラグを1に設定し(ステップS419)、ステップS421へ移行する。一方、閾値Vpよりも小さければ、追跡が失敗したものと判断して、追跡結果フラグを0に設定し(ステップS420)、ステップS421へ移行する。
処理部2は、各サンプルについて、ステップS421〜S423の処理を繰り返し、全てのサンプルについてステップS421〜S423の処理が終了すると(ステップS424でYES)、ステップS425へ移行する。ステップS421において、処理部2は、当該サンプルの尤度πpt (k)が予め設定していた閾値Πpよりも大きいか否かを判定する。閾値Πpよりも大きければS422へ移行し、小さければS423に移行する。ステップS422において、処理部2は、当該サンプルは、パーティクルフィルタの公知の手法に従って、次回における(すなわち、次のフレームにおける)サンプルを構成するため分裂を行う。ステップS423において、処理部2は、当該サンプルを次回における(すなわち、次のフレームにおける)サンプルを構成しないために消滅させる。
ステップS425において、処理部2は、各サンプルについてステップS422の分裂又はステップS423の消滅を行った結果、残ったサンプルがNp個以下であるか否かを判定する。Np個以下であれば、ステップS427へ移行する。一方、Np個よりも多い場合は、処理部2は、尤度πpt (k)が小さいものから順に分裂したものを含めて消滅させる(ステップS426)。その結果、残ったサンプルはNp個またはNp−1個となる。ステップS426の後、ステップS427へ移行する。
ステップS427において、処理部2は、画像内の予め設定した所定の幅で所定の高さを有する領域Rを追尾対象10の探索範囲として、領域R内に、追尾対象領域(本実施の形態では、矩形)の大きさをパラメータとしたNs個のサンプル(パーティクル)を新たにばら撒く。各サンプルの位置は、ステップS416で推定した位置とする。各サンプルの大きさは任意であり、当初はランダムにばら撒かれる。各サンプルの縦横比は、元の追尾対象領域(図4中のステップS110で検知された追尾対象10に応じた領域である追尾対象領域(本実施の形態では、外接矩形領域))と縦横比が同じとされる。。なお、図3中の追尾対象検知処理(ステップS2)後の最初に行われる本処理(ステップS5)におけるステップS427の処理では、サンプルをNs個ばら撒くが、2回目以降の本処理(ステップS5)におけるステップS427の処理では、Ns個から前回の本処理(ステップS5)で残ったサンプルの数を引いた不足分を追加してばら撒く。
次に、処理部2は、Ns個のサンプルに番号を割り当てるため、サンプル番号を意味するカウント値jを1にセットする(ステップS428)。
次いで、処理部2は、図3中のモード選択処理(ステップS4)で最新に設定されたモードフラグが0であるか否かを判定することで、現在選択されているモードがマルチパートモードであるかシングルパートモードであるかを判定する(ステップS429)。マルチパートモードが選択されていれば(モードフラグが0であれば)、処理部2は、j番目のサンプルの領域を、図5中のステップS201と同様に分割(本実施の形態では、上下に2分割)した(ステップS430)後に、ステップS431へ移行する。一方、シングルパートモードが選択されていれば(モードフラグが1であれば)、ステップS430を経ることなくステップS431へ移行する。
ステップS431において、処理部2は、領域番号を意味するカウント値iを1にセットする。マルチパートモード時にはサンプルの領域は2分割されているのでiは1,2となるが、シングルパートモード時にはサンプルの領域は分割されないのでiは1にしかならない。
次に、処理部2は、ステップS400で最新にサンプリングされた画像におけるj番目のサンプルのi番目の領域について、ステップS203〜S207と同様の処理を行うことで、CIE1976L*u*v*色空間における明度指数ヒストグラム及び知覚色度指数ヒストグラムをそれぞれ正規化したものを結合して1次元化して得たヒストグラムqsi(数1で示すヒストグラムpiに相当するサンプルのi番目の領域のヒストグラム)を生成する(ステップS432)。
次いで、処理部2は、下記の数40に従って、参照領域のヒストグラムpiとサンプルの領域のヒストグラムqsiとの間の、Bhattacharyya距離dsi (j)を算出する(ステップS433)。ここで、参照領域のヒストグラムpiは、参照ヒストグラムpiあるいは参照データと呼ぶ場合があり、図3中の追尾対象検知処理(ステップS2)後の最初に行われる本処理(ステップS5)におけるステップS433の処理では、図5中のS207で生成されたヒストグラムpiであるが、2回目以降の本処理(ステップS5)におけるステップS433の処理では、前回の本処理(ステップS5)におけるステップS443で更新されたヒストグラムpt(ただし、当該i番目の領域に関するもの)である。
引き続いて、処理部2は、ステップS429と同様に、現在選択されているモードがマルチパートモードであるかシングルパートモードであるかを判定する(ステップS434)。マルチパートモードが選択されていれば(モードフラグが0であれば)ステップS435へ移行し、シングルパートモードが選択されていれば(モードフラグが1であれば)ステップS438へ移行する。
ステップS435において、処理部2は、現在の領域番号iが2であるか否かを判定することで、全ての領域(本実施の形態では、2つの分割領域)について、Bhattacharyya距離dsi (j)の算出が終了したか否かを判定する。終了していなければ、処理部2はiを2にセットし(ステップS436)、ステップS432へ戻る。一方、終了していれば、ステップS437へ移行する。
ステップS437において、処理部2は、下記の数41に従って、j番目のサンプルの相違度ds (j)を、ステップS433で順次算出された各分割領域のBhattacharyya距離dsi (j)の平均値として算出し、ステップS439へ移行する。
一方、シングルパートモード時には、ステップS438において、処理部2は、ステップS433で求めたBhattacharyya距離dsi (j)を、そのままj番目のサンプルの相違度ds (j)とし、ステップS439へ移行する。
ステップS439において、処理部2は、下記数42に従って、ステップS437又はS438で得られた相違度ds (j)を観測値として用いて、尤度πst (j)を算出する。ここで、尤度はガウス分布に従うものと仮定している。
数42において、Nsはパーティクルの個数(サンプル数)である。また、数41において、σ2は通常はガウス分布の分散となるが、ここでの計算においては予め設定しておいた値とする。
その後、処理部2は、現在のサンプル番号jがNsであるか否かを判定することで、全てのサンプルについて、尤度πst (j)の算出が終了したか否かを判定する(ステップS440)。終了していなければ、処理部2はサンプル番号jを1だけインクリメントし(ステップS441)、ステップS429へ戻る。一方、終了していれば、ステップS442へ移行する。
ステップS442において、処理部2は、ステップS439で算出した尤度πst (j)と各サンプルの大きさから、下記の数43に従って、状態の推定結果である追尾対象領域の大きさの推定結果(すなわち、追跡結果の他の一部)として、重み付け平均値Es[St]を求める。重み付け平均値Es[St]で表される追尾対象領域の大きさが、追跡結果の他の一部となる追尾対象領域の大きさである。
その後、処理部2は、ステップS442で得た推定結果に基づいて、下記数44に従って、参照データを更新する(ステップS443)。数44において、ヒストグラムpt−1は、時刻t−1の推定された追尾対象領域に関するヒストグラムを示し、ステップS400で最新にサンプリングされた画像における、ステップS442で推定結果として得られた追尾対象領域について、ステップS203〜S207と同様の処理を行うことで、CIE1976L*u*v*色空間における明度指数ヒストグラム及び知覚色度指数ヒストグラムをそれぞれ正規化したものを結合して1次元化して得たヒストグラムである。また、数44において、qt−1は時刻t−1の推定前の追尾対象領域に関するヒストグラムを示す。
次に、処理部2は、ステップS439で算出された全てのサンプルの尤度πst (j)を、その値の大きい順にソートする(ステップS444)。
次いで、処理部2は、ステップS444で尤度の値をソートした結果として得た尤度の最大値が、予め設定した閾値Vsよりも大きいか否かを判定する(ステップS445)。閾値Vpよりも大きければ、ステップS447へ移行する。一方、閾値Vsよりも小さければ、追跡が失敗したものと判断して、追跡結果フラグを0に設定し(ステップS446)、ステップS447へ移行する。
処理部2は、各サンプルについて、ステップS447〜S449の処理を繰り返し、全てのサンプルについてステップS427〜S429の処理が終了すると(ステップS450でYES)、ステップS451へ移行する。ステップS447において、処理部2は、当該サンプルの尤度πst (j)が予め設定していた閾値Πsよりも大きいか否かを判定する。閾値Πsよりも大きければS448へ移行し、小さければS449に移行する。ステップS448において、処理部2は、当該サンプルは、パーティクルフィルタの公知の手法に従って、次回における(すなわち、次のフレームにおける)サンプルを構成するため分裂を行う。ステップS449において、処理部2は、当該サンプルを次回における(すなわち、次のフレームにおける)サンプルを構成しないために消滅させる。
ステップS451において、処理部2は、各サンプルについてステップS448の分裂又はステップS449の消滅を行った結果、残ったサンプルがNs個以下であるか否かを判定する。Ns個以下であれば、追跡処理の本処理(ステップS5)を終了して、図3中のステップS6へ移行する。一方、Ns個よりも多い場合は、処理部2は、尤度πst (j)が小さいものから順に分裂したものを含めて消滅させる(ステップS452)。その結果、残ったサンプルはNs個またはNs−1個となる。ステップS452の後、追跡処理の本処理(ステップS5)を終了して、図3中のステップS6へ移行する。
本実施の形態によっても前記第1の実施の形態と同様の利点が得られるが、前述したように、本実施の形態によれば、前記第1の実施の形態と比べれば追跡処理の精度が低下するものの、前記第1の実施の形態と比べて計算量を低減して処理時間を短縮することができるという利点が得られる。
以上、本発明の各実施の形態及びその変形例について説明したが、本発明はこれらに限定されるものではない。