以下、本発明の実施の形態(以下実施形態という)について、図面に基づいて説明する。本実施形態は、監視対象空間を俯瞰する複数のカメラを互いに撮像領域が重なるように配置したカメラシステムに本発明に係るカメラ姿勢算出装置を適用したものであり、カメラの外部パラメータをキャリブレーションする。本実施形態においては外部パラメータのうち主にカメラの姿勢のキャリブレーションが行われる。
本カメラシステムとして複数台のカメラが撮像する画像を用いて人物等の移動物体を追跡する移動物体追跡装置を例に以下、説明する。説明を簡単にするためにカメラシステムが2台のカメラからなる例で説明する。なお、カメラシステムが3台以上のカメラからなる場合には、それらの2台ずつを以下に述べる実施形態と同様にしてキャリブレーションすればよい。
図1は、実施形態に係る移動物体追跡装置1のブロック構成図である。移動物体追跡装置1は、カメラ2、制御部3、記憶部4、入力部5及び出力部6を含んで構成される。カメラ2、記憶部4、入力部5及び出力部6は制御部3に接続される。カメラのキャリブレーション作業時には各カメラ2にマーカー7が吊り下げられる。
カメラ2は監視カメラであり、監視空間を臨むように設置され、監視空間を所定の時間間隔で撮影する。撮影された監視空間の監視画像は順次、制御部3へ出力される。専ら床面又は地表面等の基準面に沿って移動する人の位置、移動を把握するため、カメラ2は基本的に人を俯瞰撮影可能な高さに設置される。ここでは説明のため、カメラ2は同一高の床上にあるものとし、床は傾いていないものとする。例えば、本実施形態では移動物体追跡装置1は屋内監視に用いられ、カメラ2は天井に設置される。また、カメラ2のレンズには等距離射影の魚眼レンズを使用する。
制御部3は、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、MCU(Micro Control Unit)等の演算装置を用いて構成され、記憶部4からプログラムを読み出して実行し、通常動作時には移動物体追跡処理を行う移動物体追跡部3Aとして機能するが、カメラシステムの設置時等にはキャリブレーションを行うキャリブレーション部3Bとして機能する。
移動物体追跡部3Aは、異なる位置に配置された複数のカメラ2で共通領域を撮影する。そして、各カメラ2による移動物体の追跡結果を統合してそれにより得られる3次元的な位置に基づいて当該移動物体を追跡する。移動物体追跡部3Aは座標変換部33を備え、3次元的な位置の追跡をカメラ2に共通する世界座標系にて行う。
キャリブレーション部3Bは、視線方向算出部30、姿勢算出部31及び変換行列算出部32として機能する。これら各部30〜32の機能については後述する。
記憶部4は、ROM(Read Only Memory)、RAM(Random Access Memory)、ハードディスク等の記憶装置である。記憶部4は、制御部3で使用されるプログラムやデータを記憶する。これに記憶されるデータには、設定情報40、マーカー座標41及び変換行列42などがある。記憶部4は制御部3からの要求に応じてこれらデータの参照・更新を行う。
設定情報40は、本発明を用いたキャリブレーション前にあらかじめ実測しておく情報である。設定情報40には、カメラの床面からの高さである地上高h、カメラのレンズの焦点距離f、カメラのマーカー間の距離dが含まれる。地上高hとマーカー間の距離dは、カメラ2の設置時に例えば、メジャーで実測する。
マーカー座標41は、カメラ2で撮像した画像上における自己マーカー座標及び相手マーカー座標である。自己マーカー座標とは、画像を撮影したカメラ2自身の鉛直下に配置されたマーカーの座標であり、相手マーカー座標とは、画像を撮影したカメラ2とは別のカメラ2の下に配置されるマーカーの座標である。ここで、マーカー座標41はカメラ2の撮像面の2次元座標系xyで表され、画像上のレンズ中心位置を原点とした座標で表される。
変換行列42は、カメラ2間やカメラ2と世界座標系との間での座標変換に必要な一連の情報である。ここでは、後述する行列K,H,Rなどが変換行列42として記憶部4に格納される。変換行列42はキャリブレーション部3Bにより生成されて書き込まれ、移動物体追跡部3Aにより読み出されて利用される。
入力部5はキーボード、マウス、タッチパネルディスプレイ等のユーザーインターフェース装置であり、ユーザーにより操作され移動物体追跡部3Aに対する各種設定を入力するために用いられる。また、入力部5は移動物体追跡装置1の設置時やメンテナンス時における管理者等の制御部3に対する設定入力にも用いられる。特に、入力部5はカメラ外部パラメータの校正作業において、設置した各カメラ2から垂らしたマーカー7の当該カメラ2の画像上での位置を指定するマーカー座標設定部として用いられ、指定されたマーカー7の画像上での位置はマーカー座標41として記憶部4に格納される。
出力部6はカメラ2が撮影した画像を表示する表示手段や、異常発生をユーザに知らせる音声・警告音等を出力する音響出力手段を含む。
マーカー7はキャリブレーション時に各カメラ2に取り付けられ、それが取り付けられたカメラ2の鉛直下の位置を画像上にて指し示す目印である。カメラ2は床面FLがXY平面であるローカル座標系のZ軸上に配置される。カメラ2のレンズ部21に設置される固定具から垂らされる糸71の先端にマーカー7が取り付けられる。カメラ2の鉛直下の位置の目印とする目的から、基本的には糸71はカメラ2のレンズ中心から垂れ下がるようにレンズ部21に固定されるが、レンズ部21での糸71の取付位置の変動幅はマーカー7までの距離に比べると小さいので、取付位置のレンズ中心からの或る程度のずれは許容され得る。
なお、カメラ2の鉛直下の位置の目印とする上記目的から、マーカー7はそれ自身や糸71に当たる風などで揺らぎにくく、かつその位置を精度よく見定めやすいように、その材料密度や形状が選択される。例えば、マーカー7は、カメラ2を天井等にて所定の姿勢に支持する取付金具等の耐荷重を超えない範囲で重く、かつ画像上での大きさが目的とするキャリブレーションの精度に応じて小さくなるような密度の材料で、球形等に作られる。なお、マーカー7の形状は球形に限られないが、重心や下端等のマーカー7を代表する位置が鉛直上方から見ても任意の角度で斜め上方から見てもカメラ2の画像上にて特定しやすい形状が好適である。
マーカー7の床面FLからの高さは基本的には各カメラ2に共通に設定され、本実施形態では当該高さを床面FLに設定する。この場合、マーカー7は床面FLのすぐ上に非接触で吊り下げられる。また、このように吊り下げたマーカー7の位置での床面FLに○印や×印を描くなどして目印を残し、これをマーカーとしてキャリブレーションを行うこともできる。また、軽い糸71と錘となるマーカー7とに代えて、鎖のような或る程度の密度が一様分布し可撓性を有する部材を吊り下げ、その先端をマーカーとしたりそれが床面FLに達する位置に目印を付したりしてもよい。
続いて、キャリブレーション部3Bの各部の機能を説明しつつ、本発明におけるカメラ2の外部パラメータのキャリブレーションについて説明する。
図2は、一対のカメラ2a,2bとマーカー7a,7bの位置関係及び各カメラの姿勢の一例を示す3次元空間の模式的な斜視図である。カメラ2aとカメラ2bとは床面からの高さhに互いに水平距離dだけ離れて設置されている。カメラ2aのレンズ中心には糸71aの上端が固定設置され、糸71aの下端にマーカー7aが取り付けられる。マーカー7aからレンズ中心までの高さをhaとする。これによりマーカー7aは、カメラ2aの鉛直下に配置され、カメラ2aの鉛直軸を規定する。同様に、下端にマーカー7bが取り付けられた糸71bの上端がカメラ2bのレンズ中心に固定設置されることで、マーカー7bがカメラ2bの鉛直下に配置され、マーカー7bによりカメラ2bの鉛直軸が規定される。マーカー7bからレンズ中心までの高さをhbとする。なお、ここでは、マーカー7a,7bは同一高の床面位置にあり、ha=hb=hであるとする。なお、レンズ中心と光学中心(焦点位置)との間の距離はhやdに比して十分に小さいため、レンズ中心を光学中心とみなしてキャリブレーションを行なう。
上記配置の特徴は、キャリブレーションに必要なマーカーが各カメラの鉛直下の僅かな空間しか占有しないこと、各カメラから自己の鉛直下のマーカーへの視線方向が世界座標系の鉛直方向であること、一方のカメラから他方のカメラの鉛直下のマーカーへの視線方向の水平成分が両カメラ間に共通する基準方位として利用できることである。
カメラ2a,2bそれぞれの視野内にはマーカー7a,7bの両方が含まれている。例えばカメラ2a,2bの視野角を180度とすると、鉛直軸に対するカメラ2aの光軸の鉛直回転角θa及び鉛直軸に対するカメラ2bの光軸の鉛直回転角θbがともに90度以内となるよう設置される。
図3は、図2の設置状況に対応して3次元空間に設定された座標軸及びパラメータを示した図である。カメラ2a側には、カメラ2aの光学中心oaを原点とする右手系のカメラ座標系xayazaが設定されている。za軸はカメラ2aの光軸に対応する。世界座標系XYZは、光学中心oaからhaだけ離れた鉛直下すなわちマーカー7aの位置を原点Oとする左手系の座標系として設定される。Z軸は鉛直上方に向けて設定され、XY平面は水平面となる。
鉛直軸Zに対して光軸zaがなす鉛直回転角θa、及びマーカー7aとマーカー7bを結ぶ直線を基準にした鉛直軸Z回りの水平回転角φaはカメラ2aの姿勢を表す角度である。鉛直回転角θaは光学中心oaを通る水平面に対するxaya平面の傾きを表していることになる。その回転軸taは水平面とxaya平面とが交わる直線となり、当該直線はカメラ2aの光学中心oaを通る。カメラ座標系のxa軸を回転軸ta回りに鉛直回転角θaだけ回転させて、回転結果を鉛直下方にhaだけ平行移動すると世界座標系のX軸に一致する。ya軸とY軸の間にもxa軸とX軸の間と同様の関係がある。
同様に、カメラ2b側には、その光学中心obを原点とする右手系のカメラ座標系xbybzbが設定されている。zb軸はカメラ2bの光軸に対応する。そして、マーカー7bの位置を原点Obとするカメラ2bのローカル座標系XbYbZbが設定される。
鉛直軸Zbに対して光軸zbがなす鉛直回転角θb、及びマーカー7bとマーカー7aを結ぶ直線を基準にした鉛直軸Zb回りの水平回転角φbはカメラ2bの姿勢を表す角度である。鉛直回転角θbの回転軸tbはカメラ2bの光学中心obを通る水平面とxbyb平面とが交わる直線となる。カメラ座標系のxb軸を回転軸tb回りに鉛直回転角θbだけ回転させて、回転結果を鉛直下方にhbだけ平行移動するとローカル座標系のXb軸に一致する。yb軸とYb軸の間にもxb軸とXb軸の間と同様の関係がある。
また、カメラ2aからマーカー7aへの視線方向をベクトルna、カメラ2bからマーカー7bへの視線方向をベクトルnbで表す。各カメラから自己の鉛直下のマーカーへの視線方向na,nbは世界座標系における鉛直方向に対応する。
カメラ2aからマーカー7bへの視線方向をベクトルea、カメラ2bからマーカー7aへの視線方向をベクトルebで表す。一対のカメラのそれぞれから相互の鉛直下のマーカーへの視線方向ea,ebは同一鉛直面をなし、それらの水平成分は同一直線上にある。
鉛直回転角θaとその回転軸である水平軸(水平回転軸)taが定まれば、これらと高さhaとを用いることで、世界座標系XYZとカメラ2aのカメラ座標系xayazaとの間で座標変換が可能となる。同様に、鉛直回転角θbと水平回転軸tbと高さhbにより、カメラ2bのローカル座標系XbYbZbとカメラ2bのカメラ座標系xbybzbとの間で座標変換が可能となる。
また水平回転角φaとφbが定まれば、これらとカメラ間距離dを用いて世界座標系XYZとローカル座標系XbYbZbとの間で座標変換が可能となる。
図4は、図2の配置に対応したカメラ2a,2bの画像の一例を示す模式図であり、図4(a)はマーカー7a,7bを撮影したカメラ2aの画像22a、図4(b)はマーカー7a,7bを撮影したカメラ2bの画像22bである。レンズが魚眼レンズであるので、撮像面の中心に位置する円形の画像22a,22bが得られる。カメラ2aの画像22aには、その位置座標Pa(pxa,pya)に自己マーカー7aの像23aが写り、その位置座標Qa(qxa,qya)に相手マーカー7bの像24aが写る。また、カメラ2bの画像22bには、その位置座標Pb(pxb,pyb)に自己マーカー7bの像23bが写り、その位置座標Qb(qxb,qyb)に相手マーカー7aの像24bが写る。
視線方向算出部30は、記憶部4からマーカー座標41を読み出して、各カメラが撮像した画像における各マーカーの座標を用いて当該カメラから当該マーカーへの視線方向を算出し、各視線方向及びその算出元のカメラとマーカーの別とともに姿勢算出部31に出力する。具体的には、視線方向算出部30は、各カメラから各マーカーへの視線方向として、当該視線方向が当該カメラの光軸となす見込み角、及び当該視線方向の当該カメラの光軸回りの方位角、の2つの角度を算出する。
レンズが等距離射影のカメラの場合、光学中心から対象物の像の位置座標までの距離S、対象物への見込み角θ及び焦点距離fの間にはS=f・θの関係が成り立つ。視線方向算出部30は、この関係を利用して、各カメラ2から各マーカー7への見込み角を当該マーカーの位置座標と当該カメラの焦点距離から算出する。すなわち、カメラ2aから自己マーカー7aへの見込み角θa、カメラ2bから自己マーカー7bへの見込み角θb、カメラ2aから相手マーカー7bへの見込み角αa、カメラ2bから相手マーカー7aへの見込み角αbは式(1)から算出される。
また、視線方向算出部30は、各カメラ2から各マーカー7への方位角の正弦と余弦を当該マーカーの位置座標から算出する。すなわち、カメラ2aから自己マーカー7aへの方位角ψa、カメラ2bから自己マーカー7bへの方位角ψb、カメラ2aから相手マーカー7bへの方位角βa、カメラ2bから相手マーカー7aへの方位角βbそれぞれの正弦と余弦は式(2)から算出される。
なお、自己マーカーの位置座標が画像上の原点に一致する場合、視線方向算出部30は式(1)と式(2)を適用せずに、当該自己マーカーへの見込み角を0と算出し、方位角は算出しない。
なお、ここでは等距離射影のレンズを想定しているが、他の特性のレンズを備えたカメラ2であってもレンズ中心からの距離Sと角度θとの関係がわかれば本発明のキャリブレーションを適用することができる。例えば、透視投影のレンズの場合には、当該特性はS=ftanθとなる。
姿勢算出部31は、視線方向算出部30から入力される視線方向を基にして世界座標系における各カメラ2の姿勢を算出し、算出した姿勢を変換行列算出部32に出力する。
姿勢算出部31は、鉛直回転量算出部310及び水平回転量算出部311を備える。鉛直回転量算出部310は、各カメラ2から自己マーカーへの視線方向を用いて世界座標における当該カメラの鉛直回転量を算出する。水平回転量算出部311は、各カメラ2から相手マーカーへの視線方向を用いて世界座標における当該カメラの水平回転量を算出する。
図5を参照して、鉛直回転量算出部310の処理を説明する。図5は、カメラ2aを例に鉛直回転量の算出に係るパラメーターを図示したものである。図5には、カメラ2aの視線方向として算出された自己マーカー7aへの見込み角θa及び方位角ψaと、カメラ2aの視線方向の単位ベクトルnaと、カメラ2aの光軸za、撮像面xaya及び撮像面の原点oaと、原点oaを通る水平面と、カメラ2aの世界座標系XYZと、回転軸taとの関係が表されている。
各カメラ2の鉛直回転量は、水平面に対する当該カメラの撮像面の傾きの量であり、回転の大きさを表す鉛直回転角と回転の方位を規定する水平回転軸の2つのパラメーターからなる。
各カメラ2の自己マーカーへの視線方向は鉛直方向であることから、鉛直回転角は当該カメラから自己マーカーへの見込み角θに一致し、水平回転軸tは視線方向を表すベクトルn(視線ベクトル)と光軸方向zを表すベクトル(光軸ベクトル)の外積を単位ベクトルに正規化して求めることができる。
まず、鉛直回転量算出部310は、視線方向算出部30から入力された各カメラの自己マーカーへの見込み角を当該カメラの鉛直回転角として算出する。すなわちカメラ2a、カメラ2bの鉛直回転角はそれぞれθa,θbと算出される。
次に、鉛直回転量算出部310は、視線方向算出部30から入力された各カメラの自己マーカーへの見込み角θ及び方位角ψから水平回転軸tを算出する。ここで、図5に示した幾何学関係から自己マーカーへの視線ベクトルnのx,y,z成分nx,ny,nzはそれぞれ見込み角θ及び方位角ψを用いてnx=sinθcosψ,ny=sinθsinψ,nz=cosθと変換することができる。また、各カメラの視線ベクトル(nx,ny,nz)と光軸ベクトルの単位ベクトルu≡(0,0,1)との外積u×nは(−ny,nx,0)である。よって、鉛直回転量算出部310は、カメラ2aの水平回転軸taを式(3)により算出し、カメラ2bの水平回転軸tbを式(4)により算出する。
ただし、θa=0の場合、鉛直回転量算出部310は式(3)を用いずにtaを0ベクトルと算出し、θb=0の場合、鉛直回転量算出部310は式(4)を用いずにtbを0ベクトルと算出する。
なお、ここで算出される鉛直回転量においてはカメラ座標系のxy平面を水平面に回転させる回転方向が正の回転方向となっている。
ローカル座標系での回転行列Rを定義するためには水平回転軸tはローカル座標系で定義されている必要がある。この点、上述の(−ny,nx,0)を正規化したベクトルtはカメラ座標系で定義しているが、回転軸上に存在するので座標系の回転によって当該ベクトルtの成分表示は変わらない。よって、(−ny,nx,0)を正規化した式(3)、式(4)で表すベクトルtは世界座標系又はカメラ座標系で定義された回転軸ベクトルとして扱うことができる。
図6を参照して、水平回転量算出部311の処理を説明する。図6は、カメラ2aを例に水平回転量の算出に係るパラメーターを図示したものである。ベクトルeaは、上述した見込み角αa及び方位角βaにより定まるカメラ2aから相手マーカー7bへの視線方向の単位ベクトルである。ベクトルe1aは視線ベクトルeaを光学中心oaを通る水平面に正射影したものであり、ベクトルe2aは、ベクトルe1a
を鉛直下方にhaだけ平行移動させたものである。ベクトルe2bはカメラ2b側で同様にしてカメラ2bから相手マーカー7aへの視線方向の単位ベクトルを正射影及び平行移動させたものである。
ベクトルe2aはカメラ2aからカメラ2bへの方位を表し、ベクトルe2aとX軸とがなす角φaは当該方位を基準としたカメラ2aの水平回転角となる。同様にベクトルe2bとXb軸とがなす角φbはカメラ2bからカメラ2aへの方位を基準としたカメラ2bの水平回転角となる。マーカー7を各カメラの鉛直下に配置したことにより、ベクトルe2aとベクトルe2bは同一直線上に存在するため水平回転角φaとφbは同一直線からの角度として求まる。そのため、水平回転角φaとφbの関係から世界座標系XYZとローカル座標系XbYbZbの間の回転が表される。
まず、水平回転量算出部311は、視線方向算出部30から入力された各カメラの相手マーカーへの見込み角α及び方位角βで表される視線ベクトルeのxyz成分を算出し、視線ベクトルeを逆回転させてベクトルe1を算出する。
図6に示した幾何学関係から相手マーカーへの視線ベクトルeのx,y,z成分ex,ey,ezはそれぞれ見込み角α及び方位角βを用いてex=sinαcosβ,ey=sinαsinβ,ez=cosαと算出することができる。ただし、α=0の場合、水平回転量算出部311はex=0,ey=0,ez=1と算出する。
また、図6に示したベクトルe1は、xyz座標系で表された視線ベクトルeを世界座標系のベクトルに変換するため、行列Kを掛け、これに対して鉛直回転量算出部310が算出した鉛直回転量だけ逆回転させ、光学中心oaを通る水平面に正射影することで算出できる。そして、水平回転軸ta=(txa,tya,tza)回りに鉛直回転角θaだけ回転させる回転行列Raは式(5)で与えることができ、水平回転軸tb=(txb,tyb,tzb)回りに鉛直回転角θbだけ回転させる回転行列Rbは式(6)で与えることができる。
ちなみに、ローカル座標系は左手系であるので、式(5),式(6)は右手系の回転行列とはθの符号を逆にしたものとなる。
水平回転量算出部311は、式(5)により回転行列Ra、式(6)により回転行列Rbを算出し、さらにこれらの逆行列Ra −1,Rb −1を算出し、式(7)及び式(8)によってベクトルe1a,e1bを算出する。
次に、水平回転量算出部311は、ベクトルe1a ,e1bを単位ベクトルに正規化したベクトルがそれぞれX軸、Xb軸の余弦となっていることに着目して、式(9)及び式(10)により、直線OObとX軸がなす角φa、直線OObとXb軸がなす角φbを算出する。
なお、φの算出にはZ成分が不要であるため、ここではe2の算出は省略してe1のXY成分でφを算出している。
変換行列算出部32は、姿勢算出部31から入力される各カメラ2の姿勢、及び記憶部4に記憶されている各カメラ2の位置の情報から各座標系間の座標変換を行なうための変換行列42を算出して記憶部4に記憶させる。
変換行列算出部32は、世界座標系(X,Y,Z)tから基準カメラ2aのカメラ座標系(xa,ya,za)tへの座標変換式を式(11)に従い算出し、記憶部4に記憶させる。ただしRaは式(5)のRaである。
念のため式(11)を補足説明する。式(11)の第1式右辺において、((Xa,Ya,Za)t−Ha)はローカル座標系の原点をカメラ座標系の原点に平行移動させる操作に当たり、移動後の原点を中心として回転行列Raで回転操作を行う。Raによる回転でカメラ座標系のxaya平面がローカル座標系のXaYa平面に一致する。また、xaya平面を水平にしたカメラ座標系のz軸とローカル座標系のZ軸とは向きが逆であるので、Z座標の符号を反転する行列Kを作用させ、それらを一致させる座標変換を行う。
また、変換行列算出部32は、世界座標系(X,Y,Z)tからカメラ2bのローカル座標系(Xb,Yb,Zb)tへの座標変換式を算出し、記憶部4に記憶させる。世界座標系におけるカメラ2bのローカル座標系の原点、すなわち世界座標系におけるマーカー7bの座標は、カメラ間距離dと方位角φaを用いて(d・cosφa,d・sinφa,0)と表せることから、当該座標変換式は式(12)によって算出できる。
また、変換行列算出部32は、同様にして、カメラ2bのローカル座標系(Xb,Yb,Zb)tから世界座標系(X,Y,Z)tへの座標変換式を式(13)に従い算出し、記憶部4に記憶させる。
また、変換行列算出部32は、カメラ2bのローカル座標系(Xb,Yb,Zb)tからカメラ2bのカメラ座標系(xb,yb,zb)tへの座標変換式を式(14)に従い算出し、記憶部4に記憶させる。ただしRbは式(6)のRbである。
次に本実施形態におけるマーカー7及びキャリブレーション部3Bを用いたキャリブレーションの方法について改めて整理して説明する。移動物体追跡装置1はカメラの設置時等にキャリブレーションを行い、その結果を利用して複数台のカメラ2の画像を用いた移動物体追跡を行う。具体的には、移動物体追跡の事前処理としてキャリブレーションが行われ、キャリブレーション結果に基づき、例えば、カメラ画像間の座標変換処理が行われ、移動物体の追跡処理が行われる。
[キャリブレーション]
図7はキャリブレーションの概略のフロー図である。キャリブレーションでは、カメラ2毎に世界座標系における位置・姿勢の算出と変換行列42の算出を行う。
キャリブレーション部3Bは、まず、入力部5を介した設定情報40の入力を受け付ける(S50)。管理者は入力部5からカメラ2aと2bの間の距離d、基準カメラ2aの指定、カメラ2aからマーカー7aまでの距離ha、カメラ2bからマーカー7bまでの距離hb、カメラ2aの焦点距離fa、カメラ2bの焦点距離fb等を設定情報として入力し、キャリブレーション部3Bは入力された設定情報40を記憶部4に記憶させる。
設定情報40の入力が終わると、各カメラ2によるマーカー7の撮像が行なわれる(S51)。キャリブレーション部3Bは、各カメラ2により撮像された各画像を入力部5のモニタに順次表示してマーカー座標41の入力を受け付ける(S52)。管理者は入力部5のマウスを操作するなどして表示画像中の自己マーカー座標及び相手マーカー座標を入力し、キャリブレーション部3Bは入力されたマーカー座標41を撮像したカメラ2の識別子及び自己マーカー/相手マーカーを区別する識別子と関連付けて記憶部4に記憶させる。カメラ2aの画像に対しては自己マーカー座標Paと相手マーカー座標Qaが、カメラ2bの画像に対しては自己マーカー座標Pbと相手マーカー座標Qbがそれぞれ入力される。
マーカー座標41の入力が終わると、キャリブレーション部3Bは視線方向算出部30によりマーカー座標41それぞれに対する視線方向を算出する(S53)。視線方向算出部30は、自己マーカー座標Paに式(1)及び式(2)を適用してカメラ2aからマーカー7aへの視線方向として見込み角θa、方位角の正弦sinψa、方位角の余弦cosψaを算出し、同様に自己マーカー座標Pbに基づきカメラ2bからマーカー7bへの視線方向としてθb,sinψb、cosψbを算出する。但し、視線方向算出部30は、各自己マーカー座標が画像中心oと一致するかの確認を行い、一致する自己マーカー座標についてはθを0と算出し、sinψとcosψの算出を省略する。
また視線方向算出部30は、相手マーカー座標Qaに式(1)及び式(2)を適用してカメラ2aからマーカー7bへの視線方向として見込み角αa、方位角の正弦sinβa、方位角の余弦cosβaを算出し、同様に相手マーカー座標Qbに基づきカメラ2bからマーカー7aへの視線方向としてαb,sinβb、cosβbを算出する。但し、視線方向算出部30は、各相手マーカー座標が画像中心oと一致するかの確認を行い、一致する相手マーカー座標についてはαを0と算出し、sinβとcosβの算出を省略する。
視線方向の算出が終わると、キャリブレーション部3Bは姿勢算出部31により各カメラ2の姿勢を算出する。姿勢算出部31の鉛直回転量算出部310は、まず、各カメラ2の自己マーカーへの視線方向から当該カメラの鉛直回転量の算出を行なう(S54)。すなわち、鉛直回転量算出部310は、θa,θbをそれぞれカメラ2a,2bの鉛直回転角とし、θaとsinψaとcosψaを式(3)に適用して水平回転軸taを算出し、θbとsinψbとcosψbを式(4)に適用して水平回転軸tbを算出する。但し、θaが0の場合は水平回転軸taを(0,0,0)と算出し、θbが0の場合は水平回転軸tbを(0,0,0)と算出する。
次に、姿勢算出部31は、水平回転量算出部311により水平回転量の算出を行なう(S55)。すなわち、まず水平回転量算出部311は、θaとtaを式(5)に適用して回転行列Raを算出し、θbとtbを式(6)に適用して回転行列Rbを算出し、さらにこれらの逆行列Ra −1,Rb −1を算出する。続いて水平回転量算出部311は、Ra −1とαa,sinβa,cosβaを式(7)に適用してベクトルe1aを算出し、Rb −1とαb,sinβb,cosβbを式(8)に適用してベクトルe1bを算出する。そして水平回転量算出部311は、ベクトルe1aを式(9)に適用してカメラ2aの水平回転角φaを算出するとともに、ベクトルe1bを式(10)に適用してカメラ2bの水平回転角φbを算出する。
こうして、カメラ2aの姿勢として鉛直回転量(鉛直回転角θa及び水平回転軸ta)と水平回転角φaが算出され、カメラ2bの姿勢として鉛直回転量(鉛直回転角θb及び水平回転軸tb)と水平回転角φbが算出される。
次に、キャリブレーション部3Bの変換行列算出部32は、設定情報40及び各カメラの姿勢を用いて変換行列42を算出して記憶部4に記憶させる(S56)。すなわち、変換行列算出部32は、カメラ2aの鉛直回転量パラメーターθa及びtaとマーカーへの距離haを式(11)に適用して世界座標系からカメラ2aのカメラ座標系への座標変換式を算出し、カメラ2aの水平回転角φaとカメラ間距離dを式(12)に適用して世界座標系からカメラ2bのローカル座標系への座標変換式を算出し、カメラ2bの水平回転角φbとカメラ間距離dを式(13)に適用してカメラ2bのローカル座標系から世界座標系への座標変換式を算出し、カメラ2bの鉛直回転量パラメーターθb及びtbとマーカーへの距離hbを式(14)に適用してカメラ2bのローカル座標系からカメラ2bのカメラ座標系への座標変換式を算出する。
以上によりカメラ2aとカメラ2bのキャリブレーションが終了する。
[座標変換処理]
キャリブレーション完了後、その結果である変換行列42を利用して座標変換処理を行うことができる。座標変換処理は移動物体追跡部3Aの座標変換部33により行われる。図8は座標変換処理の一例の概略のフロー図である。座標変換処理としてここでは、世界座標系をカメラ2a,2bそれぞれのカメラ座標系へ変換する例を説明する。
このような変換の必要性は、例えば、追跡処理の過程でカメラ2aの画像にて検出された移動物体の像とカメラ2bの画像にて検出された移動物体の像が同一移動物体によるものか同定するために生じる。同定のために移動物体追跡部3Aは世界座標系に同定対象の移動物体の存在が予測される位置に移動物体の3次元形状を模した立体モデルを仮想配置して当該立体モデル内部に複数のサンプリング点を設定し、各サンプリング点を変換対象として順次、座標変換部33に入力する。
世界座標系における座標(X,Y,Z)が変換対象として入力されると(S70)、座標変換部33は、記憶部4から変換行列42を読み出し、当該座標(X,Y,Z)に式(11)により算出された変換式を適用して基準カメラ2aのカメラ座標系に変換し、これを画像平面に投影した対応座標を出力する(S71)。また、座標変換部33は、当該座標(X,Y,Z)に式(12)により算出された変換式を適用してカメラ2bのローカル座標系に変換して対応座標(Xb,Yb,Zb)を求め(S72)、さらに対応座標(Xb,Yb,Zb)に式(14)により算出された変換式を適用してカメラ2bのカメラ座標系に変換し、これを画像平面に投影した対応座標を出力する(S73)。
移動物体追跡部3Aは座標変換部33から出力された各サンプリング点の対応座標が対応する各カメラの画像にて検出された移動物体の像の内部にどの程度含まれるかによって移動物体の像の同定を行う。
上述の実施形態では、移動物体追跡装置1の制御部3でキャリブレーション部3Bを実現する構成を示したが、キャリブレーション部3Bの機能は移動物体追跡装置1から分離した装置により実現することもできる。この場合、移動物体追跡装置1のカメラシステムの設置時に作業者が当該装置を制御部3に接続する等して、カメラ2の画像に基づいてキャリブレーションを実施する。
上述の説明では、マーカー座標41は例えば、キャリブレーションを行う作業者等がマーカー7を設置した状態でのカメラ2の画像上にてマーカーの像の位置を入力部5から入力するが、制御部3にて画像認識でマーカーの像を認識しその位置を特定して記憶部4に格納する構成とすることもできる。例えば、2台のカメラそれぞれのマーカー7の色を変えることで、各カメラ2の画像にて自己のマーカー7と相手のマーカー7とを識別することが可能である。
以上説明したように本発明によれば、カメラの鉛直下に吊り下げたマーカーのみでキャリブレーションが可能であることにより、狭いスペースでのキャリブレーションが可能になる。