(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0024】
以下、本発明に係る被写体追尾装置および電子カメラ並びに被写体追尾プログラムの実施形態について、図面を用いて詳しく説明する。尚、以下の実施形態では、本発明に係る被写体追尾プログラムにより動作する被写体追尾装置の機能を含む電子カメラの例として説明するが、撮影済みの画像を入力して被写体追尾処理を行うパソコンのプログラムであってもよいし、監視カメラなどで利用される単体の被写体追尾装置であっても構わない。
【0025】
[電子カメラ101の構成および基本動作]
先ず、本実施形態に係る電子カメラ101の構成および基本動作について説明する。
図1は電子カメラ101の構成を示すブロック図で、電子カメラ101は、光学系102と、撮像部103と、制御部104と、表示部105と、記憶部106と、操作部107とで構成される。ここで、制御部104には、本発明に係る被写体追尾プログラムが搭載されている。また、本発明に係る被写体追尾装置は、被写体追尾処理を行う制御部104と、ユーザーが追尾被写体を設定する操作を行う操作部107とを少なくとも有する装置に対応する。そして、単体の被写体追尾装置の場合は撮像部103で撮影される画像や記憶部106に記憶された画像を制御部104(画像入力部の機能を含む)に入力し、表示部105に表示される画像上で設定された特定被写体を追尾する。尚、単体の被写体追尾装置の場合は、表示部105を内蔵してもよいし、外部に接続できるようにしてもよい。
【0026】
図1において、光学系102は、ズームレンズやフォーカスレンズなどの複数枚のレンズおよびレンズ駆動部や絞りなどで構成され、制御部104からの指令に応じて、ズームレンズやフォーカスレンズ或いは絞りなどが撮影条件に応じて制御される。
【0027】
撮像部103は、固体撮像素子、AD変換器、画像バッファなどを有する。そして、光学系102から入射される被写体光を固体撮像素子で光電変換し、光電変換された電気信号はAD変換器でデジタルデータに変換され、画像バッファに取り込まれる。
【0028】
制御部104は、内部に記憶されたプログラムに従って動作するCPUで構成され、電子カメラ101全体の動作を制御する。例えば、制御部104は、操作部107の撮影モード選択ダイヤルやレリーズボタンの操作に応じて、電子カメラ101の撮影モードを設定したり、レリーズボタン押下時には光学系102のフォーカス制御や絞り制御などを行って、撮像部103で画像(静止画像や動画像)を撮影する。
【0029】
また、制御部104は、撮像部103の画像バッファに取り込まれた画像に対して、色補間処理、ホワイトバランス処理、ガンマ補正処理などの画像処理を行った後、JPEGやMPEGなどの画像圧縮処理を施して記憶部106に記憶する。尚、動画像の場合は、フレーム毎に画像バッファに取り込まれて制御部104で画像処理が行われる。また、撮影中の画像は、プレビュー画像として表示部105に表示され、ユーザーは表示部105の画面で撮影構図や被写体、或いはフォーカス状態などを確認することができる。さらに、制御部104は操作部107から入力する操作情報に応じて電子カメラ101全体の動作を制御する。
【0030】
ここで、本実施形態に係る電子カメラ101では、制御部104は、撮像部103で撮影される動画像の中で設定された特定被写体の位置を追尾する処理を行う。そして、制御部104は、特定被写体の位置を示すマーカーを表示部105の画面に表示する。また、特定被写体の位置をオートフォーカス位置として設定することもでき、特定被写体が移動した場合でも常に特定被写体にフォーカスが合うように、制御部104は特定被写体の位置を追尾して、光学系102のフォーカスレンズの位置を制御することができる。
【0031】
表示部105は、液晶モニタなどで構成され、制御部104によって撮像部103で撮影される画像や記憶部106に記憶された撮影済みの画像、或いは電子カメラ101の操作に必要な設定メニューの画面などが表示される。特に本実施形態に係る電子カメラ101では、設定された追尾対象となる被写体位置を示すマーカーなどを表示する。
【0032】
記憶部106は、例えばフラッシュメモリなどの不揮発性の半導体メモリ、ハードディスク、メモリカードなどで構成される。そして、撮影画像、電子カメラ101の撮影モードや露出情報およびフォーカス情報などのパラメータが記憶され、制御部104はこれらのパラメータを参照して電子カメラ101の動作を制御する。特に本実施形態に係る電子カメラ101の場合は、追尾対象となる被写体のテンプレート画像や追尾処理に必要なパラメータなどが記憶される。尚、これらのパラメータは、操作部107を介して行われるユーザー操作に応じて適宜更新される。
【0033】
操作部107は、電源ボタン、レリーズボタン、撮影モード選択ダイヤル、カーソルボタン、決定ボタンなどで構成される。ユーザーは、これらの操作部材を操作して電子カメラ101を使用する。尚、これらの操作部材の操作情報は制御部104に出力される。
【0034】
以上が電子カメラ101の構成および基本動作である。
【0035】
[制御部104の処理]
次に、制御部104の処理について詳しく説明する。制御部104は、
図1の点線で示したように、撮影処理部151と、表示処理部152と、記憶処理部153と、操作処理部154と、追尾処理部155とで構成される。ここで、撮影処理部151、表示処理部152、記憶処理部153、操作処理部154は、一般的なカメラ機能を実現するための処理を行う。さらに、本実施形態に係る電子カメラ101は、特定被写体の位置を追尾するための追尾処理部155を有する。
【0036】
撮影処理部151は、光学系102や撮像部103を制御して露出制御やフォーカス制御を行う。例えば予め設定されたフォーカス位置のデフォーカス量を算出して光学系102のフォーカスレンズの位置を可変する。
【0037】
表示処理部152は、表示部105に画像や設定メニュー、或いは追尾対象となる被写体位置を選択するためのカーソルや追尾中の被写体位置を示すマーカーなどグラフィックを表示する処理を行う。
【0038】
記憶処理部153は、記憶部106に対して、撮影画像や電子カメラ101の動作に必要なパラメータの書き込みや読み出しを行う。特に本実施形態に係る電子カメラ101では、追尾対象となる被写体のテンプレート画像や追尾処理に必要なパラメータなどの書き込みや読み出しを行う。
【0039】
操作処理部154は、操作部107の操作部材から入力する操作情報を他の処理に引き渡す。特に本実施形態に係る電子カメラ101では、ユーザーは操作部107のカーソルボタンを操作し、表示部105の画面上に表示されたカーソルを動かして追尾対象となる被写体位置を選択する。そして、ユーザーが操作部107の決定ボタンを押下すると、操作処理部154は、カーソル位置の座標を追尾処理部155に引き渡す。
【0040】
追尾処理部155は、
図2に示すように、追尾対象となる特定被写体が含まれる動画像を撮像部103(撮影済みの画像の場合は記憶部106)からフレーム単位で入力する画像入力処理部161と、操作処理部154から引き渡された位置情報に基づいて追尾対象となる特定被写体の初期位置を設定する被写体設定処理部162と、特定被写体を追尾するためのテンプレート画像を作成するテンプレート作成処理部163と、テンプレート画像によるテンプレートマッチングにより入力画像の中の特定被写体の位置を追尾する被写体追尾処理部164とを基本的に有する。特に本実施形態では、テンプレート作成処理部163は、特定被写体を追尾するためのテンプレート画像として、リサイズ以外の更新が行われない初期テンプレート画像と、予め設定された条件に応じて画像の更新が行われるラベリングテンプレート画像とを作成する。尚、最初の1フレーム目に作成するラベリングテンプレート画像は、初期テンプレート画像と同じであり、2フレーム以降では予め設定された条件に応じてラベリングテンプレート画像が更新される。
【0041】
そして、被写体追尾処理部164は、初期テンプレート画像およびラベリングテンプレート画像と画像入力処理部161が入力する画像との相対的なサイズ調整を行って、画像入力処理部161が入力する画像の中の特定被写体の位置を追尾する。例えば、特定被写体の大きさが予め設定した閾値よりも大きい場合、入力する画像を縮小して初期テンプレート画像とラベリングテンプレート画像によるテンプレートマッチングを行い、類似度が最大となる特定被写体の位置を検出する。
【0042】
また、テンプレート作成処理部163は、ラベリングテンプレート画像を更新するか否かの判定を行うために、信頼度判定処理部165(第一信頼度判定部に対応)と、類似度判定処理部166(第二信頼度判定部に対応)とを有する。信頼度判定処理部165は、リサイズ後の初期テンプレート画像およびラベリングテンプレート画像を用いてテンプレートマッチングを行った画像でラベリングを行い、ラベリング結果の信頼性が高いか否かを判定する。また、類似度判定処理部166は、信頼度判定処理部165の判定結果の信頼性が低い場合に、被写体追尾処理部164が特定した新たな被写体位置での類似度が予め設定した閾値より高いか否かを判定する。そして、テンプレート作成処理部163は、信頼度判定処理部165が判定した信頼度が予め設定した閾値より低い場合、且つ、類似度判定処理部166が判定した類似度が予め設定した閾値より高い場合にラベリングテンプレート画像を更新する。
【0043】
ここで、テンプレート作成処理部163のラベリングテンプレート画像の更新処理の原理について
図3を用いて説明する。尚、以下の処理は、テンプレート作成処理部163、信頼度判定処理部165、類似度判定処理部166によって実行される。
【0044】
(ステップS1)リサイズ後の初期テンプレート画像とラベリングテンプレート画像とを用いて入力画像とテンプレートマッチングを行う。
【0045】
(ステップS2)テンプレートマッチングを行った画像でラベリングを行う。
【0046】
(ステップS3)ラベリング結果の信頼性を判定し、信頼度が高い場合はステップS4に進み、信頼度が低い場合はステップS6に進む。
【0047】
(ステップS4)ラベリング結果より、ラベリングテンプレート画像を更新する。
【0048】
(ステップS5)ラベリングテンプレート画像と同じサイズに初期テンプレート画像をリサイズする。
【0049】
(ステップS6)テンプレートマッチング結果の類似度が高いか否かを判定し、類似度が高い場合はステップS107に進み、類似度が低い場合はステップS8に進む。
【0050】
(ステップS7)合成テンプレート画像を作成し、ラベリングテンプレート画像として更新する。
【0051】
そして、ステップS8で次のフレームを読み込んで、同様の処理を繰り返す。
【0052】
このように、テンプレート作成処理部163は、信頼度判定処理部165の判定結果の信頼性が高い場合、ラベリング結果によりラベリングテンプレート画像を更新する。また、テンプレート作成処理部163は、信頼度判定処理部165の判定結果の信頼性が低くても、類似度判定処理部166の判定結果の類似度が高い場合は、合成テンプレート画像を作成し、これをラベリングテンプレート画像として更新する。尚、テンプレート作成処理部163は、信頼度判定処理部165の判定結果の信頼性が低く、類似度判定処理部166の判定結果の類似度も低い場合は、ラベリングテンプレート画像を更新せず、次のフレームの画像を読み込んで同様の処理を行う。
【0053】
以上のように、本実施形態に係る電子カメラ101は構成され、制御部104に搭載された被写体追尾プログラムによって、被写体追尾装置の機能を実現し、撮影中の画像の中の特定被写体の位置を追尾することができる。特に本実施形態に係る電子カメラ101は、特定被写体の大きさが変化する場合でもリサイズした初期テンプレート画像および予め設定された条件に応じて画像の更新が行われるラベリングテンプレート画像を用いてテンプレートマッチングを行ってそれぞれの類似度マップを作成し、類似度が最大となるマッチング位置を特定被写体位置として検出するので、精度よく特定被写体位置を追尾することができる。例えば
図4は、時間的に連続して入力される入力画像中の特定被写体171の位置を追尾する場合の画像例を示している。
図4において、紙面下方向に時間が経過する様子を示し、特定被写体171のサイズは次第に大きくなっている。このため、フレームaの特定被写体171で作成したテンプレート画像をそのまま使用する従来の方法では、フレームbの画像中の特定被写体171をテンプレートマッチングによって検出しようとしてもサイズが異なるので、検出精度が悪くなったり検出が難しくなる。フレームcでは更に特定被写体171のサイズが大きくなっているので、特定被写体171の検出が難しくなる。
【0054】
これに対して、本実施形態に係る電子カメラ101では、
図4に示すように、入力する画像に含まれる特定被写体171の大きさが変化した場合でも初期テンプレート画像のサイズをリサイズすることにより、高い追尾精度を維持できるようになっている。
図4の例では、フレームaでは例えば8×8画素のテンプレート画像でテンプレートマッチングを行い、フレームb、フレームcと進むに連れて特定被写体171のサイズが大きくなるので、例えばフレームcでは24×24画素のテンプレート画像でテンプレートマッチングを行う。
【0055】
尚、以下の実施形態では、テンプレートサイズの最大を24×24画素とし、入力する画像に含まれる特定被写体のサイズが24×24画素より大きい場合は、テンプレートサイズに応じて入力画像のサイズを調整する例について説明するが、テンプレートサイズを24×24画素よりも大きくしてもよい。
【0056】
また、ラベリングテンプレート画像については、特定被写体の信頼性が高い場合、或いは信頼性が低くても類似度が高い場合に、ラベリングテンプレート画像を更新することにより、精度の高いラベリングテンプレート画像が得られるので、被写体追尾を確実に行うことができる。
【0057】
以下、本実施形態に係る電子カメラ101の追尾処理について
図5、
図8、
図9、
図10および
図12の各フローチャートを用いて詳しく説明する。
図5また、本実施形態の説明では、説明が分かり易いように、
図6(a)に示した画像例を用い、風景の中を走る車を特定被写体171として追尾する。
【0058】
(ステップS10)撮影部103から撮影画像(時間的に連続するフレームの画像)を入力する。ここで、入力される画像を対象画像とする。対象画像のサイズは、例えば320×240とする。
【0059】
また、対象画像がRGB表色系(R成分、G成分、B成分)で表されている場合、次の式(1)から式(3)、または、式(4)から式(6)を用いてYCbCr色空間における輝度成分(Y成分)からなる輝度画像と色差成分(Cb成分、Cr成分)とからなる色差画像とに変換する。尚、撮影部103で撮影される画像データがYCbCrで表されている場合には、この変換処理は不要である。
【0060】
ここで、本実施形態における各式の説明において、演算子「・」は係数やパラメータなどを掛ける場合に見易いように便宜的に使用し、演算子「×」と同様に乗算を意味する。
Y = 0.2990・R + 0.5870・G + 0.1140・B … (1)
Cb = - 0.1687・R - 0.3313・G + 0.5000・B + 128 … (2)
Cr = 0.5000・R - 0.4187・G - 0.0813・B + 128 … (3)
Y = 0.25・R + 0.50・G + 0.25・B … (4)
Cb = - 0.25・R - 0.50・G + 0.75・B + 128 … (5)
Cr = 0.75・R - 0.50・G - 0.25・B + 128 … (6)
(ステップS20)無駄な処理やノイズを防ぐための制限値としてSmallLimitを設定する。本実施形態では、例えばSmallLimit = 0.0001としている。
【0061】
(ステップS30)ユーザーが操作部材を操作して入力した位置の座標(xu,yu)を被写体位置座標として設定する。或いは、焦点調節処理におけるオートフォーカス点の中心座標を被写体位置として設定する。
図6(b)の画像例では、x座標およびy座標の位置を示す点線で示したクロスカーソルを操作部107のカーソルボタンを操作して動かし、追尾したい特定被写体171にクロス点を合わせて操作部107の決定ボタンを押下することにより、特定被写体の初期位置が設定される。
【0062】
(ステップS40)ステップS30で設定した被写体位置座標(xu,yu)を中心とした予め設定した領域(例えば3×3画素の領域)を対象として、Y、Cb、Cr各々の平均値を算出する。ここでは、Y、Cb、Crの平均値をそれぞれaveY、aveCb、aveCrとする。
【0063】
(ステップS50)対象画像の標準偏差σ、即ち、Y成分標準偏差sigY、Cb成分の標準偏差sigCb、Cr成分の標準偏差sigCrをそれぞれ算出する。本実施の形態では、標準偏差σの算出には、対象画像の平均値ではなく、ステップS40で算出した3×3領域の平均値(aveY、aveCb、aveCr)を使用する。
【0064】
(ステップS60)対象画像の輝度画像(Y画像)と色差画像(Cb画像とCb画像)の各画素の値から、ステップS40で算出したY、Cb、Cr各々の平均値を減算し、絶対値をとった差分画像を作成する。差分画像(DiffY、DiffCb、DiffCr)は、次式(7)から式(9)の各式により表される
DiffY = abs(Y - aveY) … (7)
DiffCb = abs(Cb - aveCb) … (8)
DiffCr = abs(Cr - aveCr) … (9)
尚、式(7)から式(9)において、absは絶対値を求める関数である。また、絶対値の代わりに差分値の二乗を求めてもよい。
【0065】
(ステップS70)ステップS30で設定した被写体位置座標(xu,yu)を中心とした所定の大きさ、例えば30×30の矩形からの距離に応じて距離重み付け係数Distを算出する。そして、次式(10)から式(12)に示すように、ステップS60で作成したY、Cb、Crの各差分画像の各画素の値に距離重み付け係数Distを掛ける演算を行って、距離重みつき差分画像DistY、DistCb、DistCrを作成する。この距離重み付け係数Distは、例えば距離が遠いほど小さな値を取る係数である。この処理により、被写体位置座標から距離が離れる程、二値化の際に画素値が0になり易いので、特定被写体の背景の影響を少なくすることができる。
DistY = DiffY × Dist … (10)
DistCb = DiffCb × Dist … (11)
DistCr = DiffCr × Dist … (12)
(ステップS80)ステップS70で作成した距離重み付き差分画像の各成分(DistY、DistCb、DistCr)を以下に示す方法で2値化し、Y、Cb、Crの2値画像を作成する。具体的には、Y成分の距離重み付き差分画像の各成分DistYについては、次式(13)より2値化を行って2値画像を作成する。
if (DistY < α × sigY) {
DistY = 1
}
else {
DistY = 0
} … (13)
Cb成分の距離重み付き差分画像の各成分DistCbについては、次式(14)、(15)により2値化を行って2値画像を作成する。
【0066】
if (DistCb < α× sigCb) {
DistCb = 1
}
else {
DistCb = 0
} … (14)
但し、118 < aveCb < 138 かつ sigCb < abs(aveCb - 128) + 3 のとき、
if (DistCb < α × sigCb × [{abs(aveCb - 128) + 3} / sigCb]
1/2 × [10 / {abs(aveCb - 128) + 0.1}]
1/2) {
DistCb = 1
}
else {
DistCb = 0
} … (15)
Cr成分の距離重み付き差分画像の各成分DistCrについては、次式(16)、(17)により2値化を行って2値画像を作成する。
【0067】
if (DistCr < α× sigCr) {
DistCr = 1
}
else {
DistCr = 0
} … (16)
但し、118 < aveCr < 138 かつ sigCr < abs(aveCr - 128) + 3 のとき、
if (DistCr < α × sigCr × [{abs(aveCr - 128) + 3} / sigCr]
1/2 × [10 / {abs(aveCr - 128) + 0.1}]
1/2) {
DistCr = 1
}
else {
DistCr = 0
} … (17)
尚、上記式(13)から式(17)において、係数αは例えば0.6とする。また、Cb成分とCr成分の2値画像作成にあたり、Cb・Crの平均値が128付近、かつ、標準偏差が小さい場合、被写体は無彩色である事が多いので、通常の処理では上手く被写体を二値化できない場合がある。そこで、本実施形態では、式(15)と(17)を用いて、Cb・Crの平均値と標準偏差に応じた重み係数を二値画像算出式に乗じることにより、二値化できるようにしている。
【0068】
(ステップS90)
図6(d)の画像例では、
図6(a)の対象画像3aに基づいて作成した
図6(c)のY画像、Cb画像、Cr画像の各画像から二値画像3bから3dをそれぞれ作成し、二値画像3bから3dのアンド∩(論理積)をとって合成し、アンド画像3eを作成する。
【0069】
(ステップS100)ステップS30で設定した被写体位置座標を中心として、ステップS90で作成したアンド画像3eから予め設定された所定範囲(例えば180×120の大きさの領域)をクロップする。例えば
図6(e)のアンド画像3eに対してクロップしたクロップ画像は
図7(f)し示すような画像になる。このクロップ処理によって得られたクロップ画像3fを対象として後の処理を行うことにより、処理範囲が小さくなるので、後の処理を高速化することができる。
【0070】
(ステップS110)ステップS100で作成したクロップ画像3fに対して8方向のラベリング処理を行う。尚、4方向のラベリング処理を行っても良い。
【0071】
(ステップS120)ステップS110のラベリング処理で作成されたラベリング画像3g内から白画素の塊をマスクとして抽出し、抽出した各マスクの面積を算出する。ラベリング処理は、左右上下斜めに隣接する白画素を同じ領域番号に振り分ける処理で、領域番号毎に複数のマスクが生成される。例えば
図7(g)に示すようなラベリング画像3gではマスクAからマスクEまでの5つのマスクが生成されており、各マスクの面積を算出する。尚、面積の算出は、例えばマスク内の白画素の数などにより求めることができる。
【0072】
(ステップS130)ステップS120で算出したマスクの面積に基づいて、主要被写体である可能性が低いマスクを除外するための足切りを行う。具体的には、次式(18)に示すように、各マスク面積Smをアンド画像3eの画面面積Saで割った値が、あらかじめ設定された下限値SmallLimitより大きいマスクのみを残し、その他を以降の処理対象から除外する。例えば
図7(g)に示したラベリング画像3gではマスク面積Smが小さいマスクCからマスクEまでの3つのマスクは除外される。
【0073】
ここで、SmallLimitは、ステップS20で設定されたものが用いられる。これにより、主要被写体である可能性が低い面積が小さいマスクを以降の処理対象から除外して、処理の高速化を図ることができる。
SmallLimit < マスク面積Sm/画面面積Sa … (18)
尚、ステップS130の次のステップS140は、
図5のフローチャートの(A)と同じ符号の
図8のフローチャートの(A)に続く。
【0074】
(ステップS140)この処理の結果、マスクが1つでも残ればステップS150へ進む。マスクの数が0となった場合は、追尾不能と判断するか、或いは、S30へ戻って被写体位置座標を入力し直す。
【0075】
(ステップS150)次式(19)により、マスクの慣性モーメントIM22を算出する。
IM22 = ΣΣ{(x - xu)
2 + (y - yu)
2} … (19)
尚、式(19)において、(x, y)はマスク内の各画素の座標であり、(xu, yu)はステップS30でユーザーが設定した被写体位置の座標である。
【0076】
(ステップS160)ステップS120で算出したマスク面積とステップS150で算出した慣性モーメントIM22に基づいて、次式(20)により各マスクの評価値Hを算出する。
評価値H = (マスク面積Sm)
β / IM22 … (20)
尚、式(20)においては、係数βの値は1より大きな値が好ましく、例えば 1.5 とする。
【0077】
(ステップS170)ステップS160で算出した評価値Hが最大のマスクが主要被写体を示す可能性が高いマスクとして特定し、特定したマスクの重心座標(xg, yg)とマスクを包絡する4端座標を保存する。例えば、
図7(g)のラベリング画像3gではマスクAが選択される。そして、
図7(h)に示すように、マスクAを包絡する4端座標(x1,y1)、(x1,y2)、(x2,y1)、(x2,y2)が記憶部106に記憶される。尚、
図7(h)は、マスクAの上下左右に接する直線で包絡する領域を説明するための図で、ラベリング画像3gのマスクAの輪郭線が分かり易いように誇張して描いてある。
【0078】
また、次式(21)より被写体の大きさを表すObjectSizeを算出する。
if (Rect > 240) {
Rect = 240
}
elseif (Rect < 9) {
Rect = 9
} … (21a)
ObjectSize = floor(Rect / 3) × 3 … (21b)
尚、式(21)において、Rectはマスクを包絡する矩形の短辺の長さ、floorは小数点以下の切り捨てを行う関数である。
【0079】
(ステップS180)次回のラベリングに用いるSmallLimitを算出して記憶部106に記憶する。SmallLimitは、例えば次式(22)により算出する。
SmallLimit = マスク面積Sm/画面面積Sa × 0.1 … (22)
但し、ステップS30で設定したSmallLimit = 0.0001をInitialSmallLimitとし、SmallLimi < InitialSmallLimit × 0.1の関係が成り立つ場合には、SmallLimi = InitialSmallLimitとする。
【0080】
(ステップS190)ObjectSizeが24よりも大きければステップS200へ、それ以外の場合はステップS250へ進む。尚、本実施形態では、24を閾値とするが、24以外の値でもよい。ここで、ObjectSizeを制限するのは、追尾処理を行うハードウェア上の制約(メモリ容量や処理速度など)がある場合に有効である。
[ObjectSize > 24 の場合]
(ステップS200)次式(23)により縮小倍率Shukuを算出し、テンプレート画像作成用に、ステップS10で読み込んだ対象画像を縮小倍率Shukuでリサイズする。例えば、リサイズにはバイリニア法を用いる。
Shuku = 24 / ObjectSize … (23)
尚、この縮小倍率は、2フレーム目以降も保存しておく。
【0081】
(ステップS210)S200でリサイズした画像サイズに合わせて、ステップS30で入力した被写体位置座標を変換する。例えば、変換前の被写体位置座標(xu, yu)が(100,120)で、縮小倍率Shukuが3/4である場合、変換後の被写体位置座標(resize_xu, resize_yu)は(75,90)となる。
【0082】
(ステップS220)ステップS210で変換した被写体位置座標(resize_xu, resize_yu)を中心として、24×24の初期テンプレート画像を作成する。尚、この初期テンプレート画像は、2フレーム目以降も保持しておき、リサイズ以外の更新は行われない。例えば
図7(i)に示すような初期テンプレート画像3iが作成される。
【0083】
(ステップS230)ステップS210で変換した被写体位置座標(resize_xu, resize_yu)を中心として、24×24のラベリングテンプレート画像を作成する。尚、初回のラベリングテンプレート画像は、例えば
図7(i)に示した初期テンプレート画像3iと同じになるが、初期テンプレート画像とは異なり、信頼度評価などの条件に応じて次フレーム以降で更新される。
【0084】
(ステップS240)ステップS210で変換した被写体位置座標(resize_xu, resize_yu)を中心として、テンプレートマッチング(TMと表記)の検索エリアを設定する。検索エリアの上端y座標(TM_Ystart)、下端y座標(TM_Yend)、左端x座標(TM_Xstart)、右端x座標(TM_Xend)は、次式(24)の各式により算出する。ここで、下記の7つの一連の式(24a)から式(24g)による計算を意味する場合はまとめて式(24)と表記し、特定の式を指す場合はアルファベットを付加して式(24a)、式(24b)のように区別して表記する。また、以降に記載する他の式についても同様に表記する。
Search = TM_ImageWidth ×Keisu … (24a)
Geta1 = Geta × Shuku … (24b)
SearchWidth = MinZansa × Search + Geta1 … (24c)
TM_Ystart = resize_yu- (SearchWidth + 1) - TempSize/2 … (24d)
TM_Yend = resize_yu+ SearchWidth + TempSize/2 … (24e)
TM_Xstart = resize_xu- (SearchWidth + 1) - TempSize/2 … (24f)
TM_Xend = resize_xu+ SearchWidth + TempSize/2 … (24g)
尚、式(24)において、TM_ImageWidthはテンプレートマッチング用画像の横幅、Geta=24、Shukuは縮小倍率、resize_yuはステップS210で座標変換した被写体位置y座標、resize_xuはステップS210で座標変換した被写体位置x座標、TempSize=24である。尚、1フレーム目ではテンプレートマッチングを行っていないため、暫定的にMinZansa = 0.1とする。また、本実施形態では、Keisu = 0.5とする。
【0085】
尚、ステップS240の次のステップS290は、
図8のフローチャートの(B)と同じ符号の
図9のフローチャートの(B)に続く。
[ObjectSize ≦ 24の場合の処理]
(ステップS250)縮小倍率Shuku = 1.0とする。尚、この縮小倍率は、2フレーム目以降も保存しておく。
【0086】
(ステップS260)ステップS30で設定した被写体位置座標を中心としたObjectSize × ObjectSizeの初期テンプレート画像を作成する。尚、この初期テンプレート画像は、2フレーム目以降も保存しておく。ここで、初期テンプレート画像は、先に説明した
図7(i)に示した初期テンプレート画像3iと同様にリサイズ以外は行われない。
【0087】
(ステップS270)ステップS30で設定した被写体位置座標を中心としたObjectSize × ObjectSizeのラベリングテンプレート画像を作成する。尚、ステップS230で説明したように、初回のラベリングテンプレート画像は初期テンプレート画像と同じになるが、信頼度評価などの条件に応じて次フレーム以降で更新される。
【0088】
(ステップS280)ステップS30で設定した被写体位置座標(xu,yu)を中心として、テンプレートマッチングの検索エリアを設定する。ここで、上端y座標(TM_Ystart)、下端y座標(TM_Yend)、左端x座標(TM_Xstart)、右端x座標(TM_Xend)は、次に示す一連の式(25)の各式により算出する。尚、式(25a)から(25h)までの8つの式をまとめて式(25)と称する。
Search = TM_ImageWidth ×Keisu … (25a)
Geta1 = Geta × Shuku … (25b)
SearchWidth = MinZansa × Search + Geta1 … (25c)
TempSize = ObjectSize … (25d)
TM_Ystart = yu- (SearchWidth + 1) - TempSize/2 … (25e)
TM_Yend = yu+ SearchWidth + TempSize/2 … (25f)
TM_Xstart = xu- (SearchWidth + 1) - TempSize/2 … (25g)
TM_Xend = xu + SearchWidth + TempSize/2 … (25h)
尚、式(25)において、TM_ImageWidthはテンプレートマッチング用画像の横幅、Geta=24、Shukuは縮小倍率(=1.0)、yuはステップS30で設定した被写体位置y座標、xuはステップS30で設定した被写体位置x座標、ObjectSizeはステップS170で算出した被写体の大きさ、TempSizeはテンプレートサイズである。尚、1フレーム目ではテンプレートマッチングを行っていないため、暫定的にMinZansa = 0.1とする。また、本実施形態では、Keisu = 0.5とする。このようにして、
図11(a)の画像例のように、検索エリアの上端y座標(TM_Ystart)、下端y座標(TM_Yend)、左端x座標(TM_Xstart)、右端x座標(TM_Xend)の探索エリアが設定される。
【0089】
尚、ステップS280の次のステップS290は、
図8のフローチャートの(B)と同じ符号の
図9のフローチャートの(B)に続く。
【0090】
ここまでの処理がObjectSize別の初期テンプレート画像とラベリングテンプレート画像の作成と、検索エリアの設定を行う処理である。そして、以下の処理で特定被写体の位置を特定する。
【0091】
(ステップS290)ステップS10と同様に対象画像の読み込み処理を行う。
【0092】
(ステップS300)テンプレートマッチング用にステップS290で読み込んだ対象画像を縮小倍率Shukuでリサイズしたリサイズ画像を作成する。例えば、リサイズにはバイリニア法を用いる。
【0093】
(ステップS310)リサイズした初期テンプレート画像とラベリングテンプレート画像を用いて、設定した検索エリアの類似度マップをY、Cb、Crそれぞれのプレーンで作成する。類似度マップ作成には、例えば、次式(26)から式(28)に示すように、入力画像の検索エリア内の画像(ターゲット画像)と各テンプレート画像の絶対差分和(SAD:Sum of Absolute Difference)を使用する。尚、ターゲット画像の値にはtg、各テンプレート画像の値にはtp、をそれぞれ付加してY_tg、Y_tpのように表記する。
SADY = Σ|Y_tg - Y_tp| … (26)
SADCb = Σ|Cb_tg - Cb_tp| … (27)
SADCr = Σ|Cr_tg - Cr_tp| … (28)
(ステップS320)対象画像が2フレーム目か否かを判定する。そして、対象画像が2フレーム目の場合にステップS340へ進み、対象画像が2フレーム目でない(3フレーム目以降)場合はステップS330へ進む。
【0094】
(ステップS330)ステップS310で作成したY、Cb、Crの類似度マップに、前フレームで特定したマッチング位置からの距離に応じて係数を乗算する。係数は、次式(29)により算出する。
Kyori(x, y) = Kyori_0 + K × (|x - Mx × Shuku | + |y - My × Shuku |) … (29)
尚、式(29)において、(x,y) は、テンプレートマッチング用画像の各画素の座標であり、Mxはリサイズ前の画像サイズに合わせて座標変換した前フレームのマッチング位置x座標、Myはリサイズ前の画像サイズに合わせて座標変換した前フレームのマッチング位置y座標、Shukuは縮小倍率である。また、本実施形態では、Kyori_0 = 1.0、K = 0.05とする。
【0095】
ここで、前フレームで特定したマッチング位置からの距離に応じた係数で重み付けすることにより、特定被写体周囲にある背景画像の影響を抑えることができる。
【0096】
(ステップS340)Y、Cb、Crの類似度マップを次式(30)の各式により統合する。
N = TempSize × TempSize × 255 … (30a)
SAD = 1 / N(GainY × SADY + GainCb × SADCb + GainCr × SADCb) … (30b)
尚、本実施形態では、GainY = 0.1、GainCb = 1.5、GainCr = 1.5としている。
また、統合した2つの類似度マップの中から類似度が最大(絶対差分和が最小)となる座標をマッチング位置として特定し、被写体位置座標を次式(31)の各式により算出する。
Objx = Mx + TempSize/2 … (31a)
Objy = My + TempSize/2 … (31b)
尚、式(31)において、Objx は被写体位置x座標、Objy は被写体位置y座標、Mxは特定したマッチング位置x座標、Myは特定したマッチング位置y座標、TempSizeはテンプレートサイズである。これは、被写体位置を示す座標(Mx,My)は、例えば
図7(h)の左上角の座標(x1,y1)に対応する座標なので中心位置の座標に変換するための処理である。
【0097】
(ステップS350)リサイズ前の画像サイズに合わせて、S340で算出したマッチング位置(Mx,My)と被写体位置座標(objx,objy)を変換し、(ObjectMx, ObjectMy)と(ObjectX, ObjectY)とする。これは、リサイズ前の元画像に対する被写体位置とするための処理である。
【0098】
(ステップS360)被写体エリアの上端y座標(Obj_Ystart)、下端y座標(Obj_Yend)、左端x座標(Obj_Xstart)、右端x座標(Obj_Xend)を、次式(32)の各式により算出し、被写体位置を位置を表示する。
Obj_Ystart = My / Shuku … (32a)
Obj_Yend = (My + TempSize - 1) / Shuku … (32b)
Obj_Xstart = Mx / Shuku … (32c)
Obj_Xend = (Mx + TempSize - 1) / Shuku … (32d)
尚、式(32)において、MxはステップS340で特定したマッチング位置x座標、MyはステップS340で特定したマッチング位置y座標、TempSizeはテンプレートサイズ、Shukuは縮小倍率である。このようにして、例えば
図11(b)に示すように、表示部105の画面に矩形4aのマーカーが表示される。尚、
図11(b)の例では矩形状のマーカーを表示したが、矩形状である必要はなく、円形状や矢印などのグラフィック、或いは色を変えたり点滅させるなどの方法で表示するようにしてもよい。
【0099】
(ステップS370)ステップS290で読み込んだ対象画像が最終フレームであれば処理を終了し、それ以外の場合はステップS380へ進む。
【0100】
尚、ステップS370の次のステップS380は、
図9のフローチャートの(C)と同じ符号の
図10のフローチャートの(C)に続く。
【0101】
(ステップS380)
図11(c)に示すように、ステップS360で作成した被写体位置を表示するマーカーの矩形4aを上下左右に数画素太らせ、太らせた矩形内の画素の画素値を1、それ以外の画素の画素値を0とした、二値の矩形マスク4bを作成する。本実施形態では、例えば矩形4aを上下左右に7画素太らせて矩形マスク4bとする。尚、マーカーの矩形4aは、特定被写体位置の新たな位置を中心として初期テンプレート画像またはラベリングテンプレート画像の何れかのリサイズ前のテンプレートサイズに対して予め設定した数画素分だけ太らせた矩形マスクである。
【0102】
(ステップS390)対象画像に対してステップS50と同様の処理を行い、標準偏差を算出する。
【0103】
(ステップS400)ステップS390で算出した標準偏差を用いて、ステップS60と同様の処理を行い、差分画像を作成する。
【0104】
(ステップS410)ステップS400で算出した差分画像をステップS80と同様の処理を行い、二値化する。但し、ここでは、差分画像には距離に応じた重み付け係数を掛けていないため、先に説明した式(13)から式(17)において、DistY = DiffY、DistCb = DiffCb、DistCr = DiffCrとする。
【0105】
(ステップS420)初期フレームで説明した
図6の例と同様に、対象画像3aに基づいて作成した二値画像のY、Cb、Crのアンドを取ったアンド画像3eを作成し、更に
図11(d)に示すように、アンド画像3eとステップS380で作成した矩形マスク4bのアンドを取った
図11(e)に示すようなアンド画像4cを作成する。これにより、Y、Cb、Crの二値画像だけでなく、矩形マスク4bでもアンドを取るので類似色の被写体や背景の影響を除去することができる。
【0106】
(ステップS430)ステップS110の処理と同様に、ステップS420で作成した合成画像4cに対して8方向のラベリング処理を行う。
【0107】
(ステップS440)ステップS120の処理と同様に、ステップS430のラベリング処理で作成されたラベリング画像内から白画素の塊をマスクとして抽出し、抽出したマスクの面積を算出する。
【0108】
(ステップS450)ステップS130の処理と同様に、ステップS440で抽出したマスクに対して足切り処理を行う。
【0109】
(ステップS460)この処理の結果、マスクが1つでも残ればステップS470へ、それ以外の場合はステップS680へ進む。
【0110】
尚、次のステップS680は、
図10のフローチャートの(E)と同じ符号の
図12のフローチャートの(E)に続く。
【0111】
(ステップS470)ステップS150と同様の処理を行い、慣性モーメントIM22を算出する。但し、式(19)において、ステップS30でユーザーが指定した座標(xu, yu)の代わりに、ステップS350で座標変換した被写体位置座標(ObjectX, ObjectY)を使用する。
【0112】
(ステップS480)ステップS160と同様の処理を行い、各マスクの評価値を算出する。
【0113】
尚、ステップS480の次のステップS490は、
図10のフローチャートの(F)と同じ符号の
図12のフローチャートの(F)に続く。
【0114】
(ステップS490)前回の評価値最大のマスク面積と、今回の評価値最大のマスク面積の変化が閾値以下か否かを判別する。これは
図3で説明したマスクの信頼度の判定処理に対応し、面積変化が小さい場合は信頼度が高く、面積変化が大きい場合は信頼度が低い。具体的には、次式(33)の各式の条件のいずれかを満たす場合はステップS650へ、それ以外の場合はステップS500へ進む。ここで、評価値最大マスク面積をSmax、前回ラベリング時の評価値最大マスク面積をSmax1とする。但し、前回の処理において該当するマスクが無かった場合は、以前の最大評価値のマスク面積をSmax1とする。
Smax / Smax1 > HenkaMax … (33a)
Smax / Smax1 < HenkaMin … (33b)
尚、式(33)において、例えば、HenkaMax = 5.5、HenkaMin = 0.2とする。
【0115】
(ステップS500)ステップS170と同様の処理を行う。
【0116】
(ステップS510)ステップS180と同様の処理を行う。
【0117】
(ステップS520)ステップS500で算出したObjectSizeが24より大きい場合は、ステップS530へ、それ以外の場合はステップS600へ進む。
[ObjectSize > 24 の場合]
(ステップS530)ステップS200と同様に、式(23)により縮小倍率Shukuを算出し、ステップS290で読み込んだ対象画像に対して、リサイズ処理を行う。
【0118】
(ステップS540)ステップS500で保存した重心座標(xg,yg)に対して、ステップS210と同様の座標変換処理を行い、(resize_xg,resize_yg)とする。
【0119】
(ステップS550)ステップS540で変換した重心座標(resize_xg,resize_yg)を中心として、サイズが24×24のラベリングテンプレート画像を作成する。尚、先に説明したように、24×24である必要はない。
【0120】
(ステップS560)保存しておいた1フレーム目に作成した初期テンプレート画像を、保存しておいた1フレーム目の縮小倍率の逆数で、リサイズを行う。
【0121】
(ステップS570)ステップS560でリサイズを行った初期テンプレート画像のサイズが24×24になるようにサイズ調整を行う。
【0122】
(ステップS580)ステップS350で変換した被写体位置座標(ObjectX, ObjectY)を、ステップS530で算出した縮小倍率で座標変換を行い、(ResizeObjectX, ResizeObjectY)とする。
【0123】
(ステップS590)
図11(a)と同様に、ステップS580で変換した被写体位置座標を中心として、テンプレートマッチングの検索エリアを設定する。検索エリアの上端y座標(TM_Ystart)、下端y座標(TM_Yend)、左端x座標(TM_Xstart)、右端x座標(TM_Xend)は、次式(34)の各式により算出する。
Search = TM_ImageWidth ×Keisu … (34a)
Geta1 = Geta × Shuku … (34b)
SearchWidth = MinZansa × Search + Geta1 … (34c)
TM_Ystart = ResizeObjectY - (SearchWidth +1) - TempSize/2 … (34d)
TM_Yend = ResizeObjectY + SearchWidth + TempSize/2 … (34e)
TM_Xstart = ResizeObjectX - (SearchWidth +1) - TempSize/2 … (34f)
TM_Xend = ResizeObjectX + SearchWidth + TempSize/2 … (34g)
尚、式(34)において、MinZansaはステップS340で特定した最小絶対差分和(最大類似度の逆数)、TM_ImageWidthはテンプレートマッチング用画像の横幅、Geta=24、ShukuはステップS530で算出した縮小倍率、ResizeObjectYはステップS580で変換した被写体位置y座標、ResizeObjectXはステップS580で変換した被写体位置x座標、TempSizeはテンプレートサイズである。また、本実施形態では、Keisu = 0.5とする。
【0124】
ここで、検索エリアの設定を行った後、
図12のフローチャートの(D)と同じ符号の
図9のフローチャートの(D)に続く。
[ObjectSize ≦ 24 の場合]
(ステップS600)ステップS250と同様に、縮小倍率Shuku = 1.0とし、ステップS290で読み込んだ対象画像を取得する。
【0125】
(ステップS610)ステップS270と同様に、ステップS500保存したマスクの重心座標(xg,yg)を中心としたObjectSize × ObjectSizeのラベリングテンプレート画像を作成する。
【0126】
(ステップS620)保存しておいた1フレーム目に作成した初期テンプレート画像を、保存しておいた1フレーム目の縮小倍率の逆数で、リサイズを行う。
【0127】
(ステップS630)ステップS620でリサイズを行った初期テンプレート画像のサイズがObjectSize × ObjectSizeになるようにサイズを調整する。
【0128】
(ステップS640)ステップS280と同様の処理を行い、
図11(a)と同様に、ステップS350で変換した被写体位置座標を中心として、テンプレートマッチングの検索エリアを設定する。検索エリアの上端y座標(TM_Ystart)、下端y座標(TM_Yend)、左端x座標(TM_Xstart)、右端x座標(TM_Xend)は、次式(35)の各式により算出する。
Search = TM_ImageWidth ×Keisu … (35a)
Geta1 = Geta × Shuku … (35b)
SearchWidth = MinZansa × Search + Geta1 … (35c)
TempSize = ObjectSize … (35d)
TM_Ystart = ObjectY - (SearchWidth +1) - TempSize/2 … (35e)
TM_Yend = ObjectY + SearchWidth + TempSize/2 … (35f)
TM_Xstart = ObjectX - (SearchWidth +1) - TempSize/2 … (35g)
TM_Xend = ObjectX + SearchWidth + TempSize/2 … (35h)
尚、式(34)において、MinZansaはステップS340で特定した最小絶対差分和(最大類似度の逆数)、TM_ImageWidthはテンプレートマッチング用画像の横幅、Geta=24、Shukuは縮小倍率(=1.0)、ObjectYはステップS350で変換した被写体位置y座標、ObjectXはステップS350で変換した被写体位置x座標、ObjectSizeはステップS500で算出した被写体の大きさ、TempSizeはテンプレートサイズである。また、本実施形態では、Keisu = 0.5とする。
【0129】
ここで、検索エリアの設定を行った後、
図12のフローチャートの(D)と同じ符号の
図9のフローチャートの(D)に続く。
【0130】
(ステップS650)ラベリングテンプレート画像が更新条件を満たすか否かを判断する。これは
図3で説明した類似度の判定処理に対応する。ステップS340で特定した最大類似度(最小絶対差分和)があらかじめ設定されている閾値より大きいとき、ラベリングテンプレート画像が更新条件を満たすと判断する。更新条件を満たす場合はステップS660へ、満たさない場合はステップS680へ進む。
【0131】
(ステップS660)ラベリングテンプレート画像を更新するための合成テンプレート画像の作成処理を行う。ここで、合成テンプレート画像の作成処理について、
図13のフローチャートを用いて説明する。
【0132】
(ステップS660-1)ステップS340で特定した最大類似度が算出されたのは、初期テンプレート画像による類似度マップであるか、ラベリングテンプレート画像による類似度マップであるかを判断する。ラベリングテンプレート画像による類似度マップであると判断された場合には、ステップS660-2へ、初期テンプレート画像による類似度マップであると判断された場合には、ステップS660-3へ進む。
[ラベリングテンプレート画像が最大類似度]
(ステップS660-2)第1の重み係数を乗じたマッチング領域内のターゲット画像の画素情報と、第2の重み係数を乗じた初期テンプレート画像の画素情報とを加算して新たな画像を作成する。この画像を合成テンプレート画像として更新して、
図12に示した処理に復帰する。
【0133】
ここで、ターゲット画像と初期テンプレート画像とは、いずれも追尾すべき被写体から切り出されたデータであるため、全く異なる情報量を有するものではない。よって、これら2つの画像を合成すれば、追尾対象の被写体に類似する画像が生成されることになる。このように合成した画像を新たな合成テンプレート画像として用いるメリットは、例えば、被写体の動きが激しい場合には、複数の被写体情報を含んだ合成テンプレート画像を用いることにより、多少の被写体変化でもロバストに追尾することが可能になる。
【0134】
尚、第1の重み係数と第2の重み係数は、その和が1になるように設定し、それぞれの重み係数の値は、例えば、第1の重み係数=0.6、第2の重み係数=0.4とする。すなわち、最大類似度が算出されたのがラベリングテンプレート画像である場合には、現在の被写体の形状は、初期テンプレート画像における被写体の形状から大きく変化している可能性が高いため、合成テンプレート画像の画素情報に乗じる第1の重み係数を大きく設定することによって、現在の被写体の形状を強く反映させた新たな合成テンプレート画像を生成することができる。また、この場合であっても、初期テンプレート画像の画素情報に、値を小さく設定した第2の重み係数を乗じて足し込むことにより、新たな合成テンプレート画像が初期テンプレート画像から大きく離れ過ぎないようにすることができる。
[初期テンプレート画像が最大類似度]
(ステップS660-3)第3の重み係数を乗じたマッチング領域内の画像の画素情報と、第4の重み係数を乗じた初期テンプレート画像の画素情報とを加算して新たな画像を作成する。この画像を合成テンプレート画像として、
図12に示した処理に復帰する。
【0135】
この場合、第3の重み係数と第4の重み係数は、その和が1になるように設定し、それぞれの重み係数の値は、例えば、第3の重み係数 = 0.4、第4の重み係数 = 0.6とする。すなわち、最大類似度が算出されたのが初期テンプレート画像による類似度マップである場合、現在の被写体の形状は、初期テンプレート画像における被写体の形状からそれほど変化していない可能性が高いため、初期テンプレート画像の画素情報に乗じる第4の重み係数を大きく設定することにより、新たに生成する合成テンプレート画像を初期テンプレート画像に近づくようにする。また、この場合であっても、合成テンプレート画像の画素情報に、値を小さく設定した第3の重み係数を乗じて足し込むことにより、時間経過に伴う被写体形状の変化の影響も加味した新たな合成テンプレート画像を生成することができる。
【0136】
(ステップS670)ステップS660で作成した合成テンプレート画像を新たなラベリングテンプレート画像として更新する。
【0137】
(ステップS680)ステップS340で算出した被写体位置座標を中心として、
図11(a)と同様に、テンプレートマッチングの検索エリアを設定する。検索エリアの上端y座標(TM_Ystart)、下端y座標(TM_Yend)、左端x座標(TM_Xstart)、右端x座標(TM_Xend)は、次式(36)の各式により算出する。
Search = TM_ImageWidth ×Keisu … (36a)
Geta1 = Geta × Shuku … (36b)
SearchWidth = MinZansa × Search + Geta1 … (36c)
TempSize = ObjectSize … (36d)
TM_Ystart = TMResizeObjectY - (SearchWidth +1) - TempSize/2 … (36e)
TM_Yend = TMResizeObjectY + SearchWidth + TempSize/2 … (36f)
TM_Xstart = TMResizeObjectX - (SearchWidth +1) - TempSize/2 … (36g)
TM_Xend = TMResizeObjectX + SearchWidth + TempSize/2 … (36h)
尚、式(36)において、MinZansaはステップS340で特定した最小絶対差分和(最大類似度の逆数)、TM_ImageWidthはテンプレートマッチング用画像の横幅、Geta=24、Shukuは縮小倍率、TMResizeObjectYはステップS340で特定した被写体位置y座標、TMResizeObjectXはステップS340で算出した被写体位置x座標、ObjectSizeは被写体の大きさ、TempSizeはテンプレートサイズである。また、本実施形態では、Keisu = 0.5とする。
【0138】
ここで、検索エリアの設定を行った後、
図12のフローチャートの(D)と同じ符号の
図9のフローチャートの(D)に続く。
【0139】
以降、ステップS370で最終フレームを検出するまで同様の処理を繰り返し、初期フレームで設定した特定被写体の位置を追尾する。
【0140】
このように、本実施形態に係る電子カメラ101における追尾処理では、メモリ容量や処理速度或いは専用ICなどハードウェアの制約によりテンプレートサイズの最大を24×24とし、それ以上大きいサイズの被写体に対しては、対象画像をリサイズすることにより、擬似的にテンプレートサイズを大きくするので、追尾対象の特定被写体のサイズが大きくなる場合でも精度良く追尾することができる。
【0141】
また、本実施形態では、フレーム毎にラベリング処理を行うので、被写体の動きが激しい場合でも高い追尾精度を維持することができる。
【0142】
また、ラベリング結果の信頼性判定処理を、前回のラベリング時に比べて被写体の大きさが著しく変化した場合(マスク面積の変化率が大きい場合)に信頼性が低いと判定するだけの簡易な処理で実現しているので処理負荷を軽減できる。さらに、被写体の大きさが著しく変化して信頼性が低いと判定されたがテンプレートマッチング結果の類似度が高い場合は、マッチング領域内のターゲット画像と初期テンプレート画像とを類似度に応じて重み付けして合成テンプレート画像を作成し、この合成テンプレート画像を新たなラベリングテンプレート画像として更新する。これにより、常に信頼性の高いラベリングテンプレート画像を得ることができ、精度良く被写体追尾を行うことができる。
【0143】
さらに、リサイズされた初期テンプレート画像とラベリングテンプレート画像の二枚のテンプレート画像を用いたテンプレートマッチングを行い、二つのマッチング結果から最も類似度が高い点を被写体位置として特定するので、位置検出精度を高くすることができる。
【0144】
また、1フレーム目の画像でアンドマスクラベリングを行って特定被写体の包絡矩形を抽出し、ユーザーが設定した位置を中心とした包絡矩形を初期テンプレート画像とする。また、2フレーム目以降の対象画像では、二値画像に更に矩形マスクを合成した画像から被写体の重心を中心とした包絡矩形を抽出する。そして、矩形領域の短辺のサイズに1フレーム目で作成された初期テンプレート画像をリサイズしてテンプレートマッチング用の初期テンプレート画像を作成し、被写体の重心を中心とした包絡矩形の短辺のサイズのラベリングテンプレート画像を作成する。これにより、追尾対象の被写体の大きさが変化する場合でも精度よく追尾することができる。
【0145】
特に、本実施形態では、抽出した被写体の信頼性が高いと判定された場合のみ、初期テンプレート画像をリサイズし、ラベリングテンプレート画像を更新する。但し、被写体の信頼性が低いと判定された場合でも、テンプレートマッチングの類似度が高い場合は、ターゲット画像と初期テンプレート画像とを用いて合成テンプレート画像を作成し、この合成テンプレート画像を新たなラベリングテンプレート画像として更新する。これにより、常に信頼性の高いラベリングテンプレート画像を得ることができ、精度良く被写体追尾を行うことができる。
【0146】
また、抽出した被写体の信頼性評価をマスク面積の変化率からのみ判断するので、被写体の位置情報などを判定基準として使用する必要がなく、処理を簡略化することができる。
【0147】
さらに、ラベリングテンプレート画像を更新する際に作成する合成テンプレート画像は、リサイズされた初期テンプレートを用いて演算された類似度、または、ラベリングテンプレートを用いて演算された類似度、のいずれの類似度が高いかを判定し、その判定結果に基づいて、リサイズされた初期テンプレート画像の画素情報に乗じる重み係数と、ターゲット画像の画素情報に乗じる重み係数とを変えて合成テンプレート画像を作成する。例えば、リサイズされた初期テンプレートを用いて演算された類似度の方が高い場合には、リサイズされた初期テンプレート画像の画素情報に乗じる重み係数をターゲット画像の画素情報に乗じる重み係数よりも大きく設定する。逆に、ラベリングテンプレート画像を用いて演算された類似度の方が高い場合には、ターゲット画像の画素情報に乗じる重み係数をリサイズされた初期テンプレート画像の画素情報に乗じる重み係数よりも大きく設定する。このようにして得られた合成テンプレート画像を新たなラベリングテンプレート画像として更新する。これにより、精度の高いラベリングテンプレート画像を作成することができる。
【0148】
以上、説明してきたように、本実施形態に係る電子カメラ101は、被写体追尾プログラムを搭載し、追尾対象の被写体の大きさが変化する場合や小被写体の場合でも精度よく追尾することができる。
【0149】
尚、上記の実施形態では、電子カメラ101を例に挙げて説明したが、追尾処理部155の処理を単独の被写体追尾装置やパソコンの被写体追尾プログラムで実現しても構わない。この場合は、例えば記憶部106として撮影済みの画像データが記憶されたハードディスクやメモリカードなどの記憶媒体をパソコンに装着して制御部104の追尾処理部155の各処理を実行し、表示部105の画面に追尾被写体の位置を表示することができる。或いは、カメラの位置を動かすことができる監視装置に本実施形態に係る電子カメラ101を適用する場合は、追尾対象の被写体の位置が常に画面中央になるようにカメラの位置を移動するようにしてもよい。
【0150】
以上、本発明に係る被写体追尾装置および電子カメラ並びに被写体追尾プログラムについて、各実施形態で例を挙げて説明してきたが、その精神またはその主要な特徴から逸脱することなく他の多様な形で実施することができる。そのため、上述した実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。本発明は、特許請求の範囲によって示されるものであって、本発明は明細書本文にはなんら拘束されない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内である。