以下、この発明のいくつかの実施形態について図面を参照して説明する。図1は、この発明の一実施形態の概略的な構成を示す。モニタ2およびマウス8が接続されているコンピュータ1は、遠隔地に接続されてたパンチルタカメラ3の駆動を制御する。すなわち、コンピュータ1によって、撮像装置のコントローラが構成される。
パンチルタカメラ3は、パンチルタ部とカメラ部が一体的に構成されたものを意味する。この図1では、一例としてパンチルタカメラ3は、4に示すような環境にある実際の景色に設置される。この環境の実際の景色4に設置されたパンチルタカメラ3によって撮影された画面(以下、撮影画面と称する)を5に示す。この撮影画面5は実際に撮影されている画面であって、ズームレンズを望遠側に操作すると画角が小さくなり、ワイド側に操作すると画角が大きくなる。
パンチルタカメラ3によって取り込まれる撮影画面5の映像は、ビデオケーブルなどを経て、コンピュータ1に供給される。コンピュータ1に供給された映像データがデコードされ、モニタ2に表示される。モニタ2では、供給された撮影画面5がモニタ2の画面上の操作領域6Aに表示され、またパンチルタカメラ3から映像を連結したパノラマ画像がパノラマ画像表示領域6Bに表示される。操作領域6A、または、パノラマ表示領域6Bは、マウス8の位置に矢印形のカーソル7が描画されている。操作領域6Aの映像又はパノラマ画像表示領域6Bのパノラマ画像中の任意の一点または任意の領域をマウス8で指示することによって、パンチルタカメラ3を操作するようになされる。また、パノラマ操作領域6Bでは、パンチルタの現在の位置と画角を表す画枠6Cと、パンチルタリミッタ表示6Dとがパノラマ画像に重ねて表示される。このパンチルタリミッタ表示6Dは、パンチルタカメラの可動範囲を示す。さらに、パノラマ画像の作成を指示するパノラマ生成ボタン6Eが必要に応じてモニタ2上に表示される。
図2に示すように、モニタ2の画面上には、操作領域6Aとパノラマ領域6Bが表示される。マウス8を操作することによって、カーソルが移動し、操作領域6Aまたはパノラマ操作領域6Bの任意の一点または、任意の領域から生成される任意の一点を指示することができる。指示された任意の一点が操作領域6Aの中央になるように、パンチルタを駆動させ、撮像画面5が移動する。すなわち予め表示させたい結果を入力し、その入力に応じて選択された被写体が、操作領域6Aの中央になるように表示される。
図3は、この発明の一実施形態の全システムのブロック図である。このシステムは、カメラ部11、パンチルタ部12、TVモニタ13、コンピュータ1、マウス8等のポインティングデバイス14、モニタ2から構成される。また、上述したパンチルタカメラ3は、カメラ部11とパンチルタ部12からなり、一例としてカメラ部11がパンチルタ部12の上に設置される。カメラ部11は、レンズブロック部15、ズームレンズ16、ズーム部17、ズームレンズ16用のモータ18、固体撮像素子19、信号分離/自動利得調整回路(SH/AGC)20、A/D変換器21、信号処理回路22から構成され、全体としてビデオカメラを示す。
パンチルタ部12は、モードコントローラ23、カメラコントローラ24、パンチルタコントローラ25、パン用のモータ26、チルト用のモータ27、パンチルタ28から構成される。コンピュータ1は、制御部31、ビデオキャプチャーボードからなるビデオキャプチャー部29、記憶部30から構成される。
被写体から到達する撮像光は、レンズブロック部15のレンズ群、絞りを通って固体撮像素子19に結像される。固体撮像素子19の一例として、CCD(Charge Coupled Device )がある。結像された撮像光は、視野映像を映像信号に変換した後、信号分離/自動利得調整回路20に供給される。信号分離/自動利得調整回路20では、映像出力信号がサンプルホールドされるとともに、オートアイリス(AE)の制御信号によって所定のゲインを持つように利得制御される。それによって、得られる映像出力信号は、A/D変換器21を介して、信号処理回路22へ供給される。信号処理回路22では、入力された信号が輝度(Y)、色(C)、ビデオ信号といった各信号に変換され、映像信号としてTVモニタ13を介してコンピュータ1のビデオキャプチャー部29へ供給される。
また、カメラ部11のレンズブロック部15は、ズームレンズ16を駆動することによって撮像する画角を変化させることが可能とされている。そのレンズブロック部15は、パンチルタ部12のカメラコントローラ24の駆動命令により、例えばステッピングモータからなるモータ18を回転させ、ズームレンズ16を駆動させる。このカメラコントローラ24は、カメラ部11のレンズ制御(例えば、フォーカス、ズーム等)、露出制御(例えば、絞り、ゲイン、電子シャッタースピード等)、白バランス制御、画質制御等を通常行うコントローラであるとともに、モードコントローラ23とのインタフェースも行っている。ズームレンズ16の制御に関連するインタフェース制御として、モードコントローラ23より送られてくるズームレンズ16の駆動命令に対して、ズームレンズ16が命令された位置に駆動されるように制御信号をモータドライバに出力するとともに、現在のズームレンズ16の位置情報が常時モードコントローラ23に通信される。
また、カメラ部11は、パン、チルトといった2軸の回転方向の自由度を持つ装置であるパンチルタ部12の上に設置される。そのパンチルタ部12は、パンチルタコントローラ25の駆動命令により、パン用のモータ26およびチルト用のモータ27を回転させ、パンチルタ28の雲台が各々駆動される。これらモータ26および27の、一例としてステッピングモータがある。このパンチルタコントローラ25は、モードコントローラ23より送られてくるパン、チルト各々の方向の駆動命令に対して、パン、チルト各々の雲台が、命令された位置に駆動されるように制御信号をモータドライバに出力するとともに、現在のパンチルタ28のパン、チルト各々の雲台の位置情報が常時モードコントローラ23に通信される。
モードコントローラ23は、カメラ部11、パンチルタ部12の内部状態、およびパンチルタカメラ3の外部からのインタフェース情報に従い、後述するようにシステム全体を制御する。モードコントローラ23は、例えばコンピュータ1とRS−232Cにより接続され、コンピュータ1からの駆動命令に対し、パンチルタ28、レンズブロック部15のズームレンズ16を駆動するようにパンチルタコントローラ25、カメラコントローラ24に命令を振り分けるとともに、パンチルタコントローラ25、カメラコントローラ24より送られてくる現在の位置情報をコンピュータ1に送信する。
この一実施形態では、パンチルタカメラ3の映出する映像を選択するためにコンピュータ1を使用している。そして、モニタ2の画面上の操作領域6Aおよびパノラマ操作領域6Bに表示されるグラフィック表示と、ポインティングデバイス14(マウス8)の指示位置、クリック等の操作とから得られる情報を処理することでモードコントローラ23への通信データを決定している。また、カメラ部11の映像をモニタ2に表示するため、ビデオキャプチャー部29が使用される。このビデオキャプチャー部29は、カメラ部11より入力されてくる映像信号を任意の品質でモニタ2に表示することが可能であるとともに、キャプチャー信号により任意の画像フォーマット(例えば、ビットマップ形式、JPEG形式の静止画、JPEG形式の動画等)に、任意の品質でキャプチャーし、コンピュータ1の記録部30(例えば、ハードディスク)上にストレージすることができる。
図4を用いて、パノラマ操作領域6B上に表示されるパノラマ画像を作成する処理の一例を説明する。但し、この発明では、他の処理によってパノラマ画像を作成するようにしても良い。パノラマ画像の生成は、パノラマ生成ボタン6Eを操作することで開始される。
まず、パンチルタカメラ3が設定されている周囲の環境を球面とする。これを仮想球面と称する。この図4では、仮想球面上の隣合う2枚の画像を連結して1枚のパノラマ画像を作成する。まず、パノラマ画像を作成するためには、図4Aに示すように、中心に位置するパンチルタカメラ3は、仮想球面上の隣合う2枚の画像を撮影する。パンチルタカメラ3は、レンズの光軸に直交する平面を撮像する。図4Dは、仮想球面上の隣合う2つの画像をパンチルタカメラ3によって撮像することにより、光軸に直交する平面にこの2つの画像が写像された状態を示す。隣合う2つの画像を単純に連結した場合、つなぎ目の重複や、歪みが生じる部分がある。
このつなぎ目の重複や、歪みをなくすために、図4Bに示すように、仮想球面に隣合う2つの画像をそれぞれ写像する。図4Eは、光軸に直交する平面である2つの撮像画像を仮想球面に写像した状態を示す。このように、光軸に直交する平面、すなわち撮像画像を仮想球面へ写像し、写像した画像を連結し、重複画像、不要画像の削除を行う画像の連結処理が行われる。そして、仮想球面に写像された像を緯度、経度で正規化することによって、図4Cおよび図4Dに示すように、パノラマ画像を生成することができる。
次に、パノラマ画像を作成する一方法を説明する。この一方法では、図5に示すように、10枚の画像を連結して1枚のパノラマ画像とする。まず、図5Aに示すように仮想球面の中心に配置されたパンチルタカメラ3(図示しない)から10枚の画像が撮影される。このとき、図に示すように画像領域毎に丸で示す位置にパンチルタカメラ3のレンズの光軸を合わせることによって、パンチルタカメラ3は1〜10の各画像を取得することができる。パンチルタカメラ3によって撮像された画像は、図5Bに示すように、レンズの光軸に直交する平面上の画像である。取得された画像は、それぞれ仮想球面上に展開された後、図5Cに示すように、緯度、経度で正規化される。仮想球面上に展開された10枚の画像は、連結処理の際につなぎ目に抜けがないように、お互いの画像が重複するような位置で画像の取得が行われる。そして、重複画像、不要画像の削除がなされた後、10枚の画像が連結され、図5Dに示すように、パノラマ画像が生成される。
次に、パノラマ画像を作成する他の方法を図6を参照して説明する。この他の方法では、緯度、経度で正規化されるパノラマ画像の画素、すなわち各座標(s,t)には、パンチルタカメラ3で取得した画像のどの画素が割り当てられるかが算出される。図5の方法のように、パンチルタカメラ3で取得した画像の画素をパノラマ画像の画素に対応させた場合、対応する画素のないパノラマ画像の画素が生じることがあり、パノラマ画像の全ての画素に取得した画像の画素を対応させるためである。このように、座標毎に算出された画素によってパノラマ画像が実現される。その処理の手順として、まずパノラマ画像の座標(s,t)(図6A)に対応する仮想球面上の角度座標(α,β)(図6B)を式(1)を用いて算出する。
(α,β)=(a(s),b(t)) (1)
この式(1)の詳細は後述する図7において説明する。
この座標(s,t)および画像を取得したパンチルタ28の角度座標(θ,φ)と、撮像装置のワイド端を1倍とした撮像倍率γとを用いて、図6Cに示すように、取得した画像上の座標データ(ξ,η)を式(2)を用いて算出する。
(ξ,η)=(f(α,β,θ,φ,γ),g(α,β,θ,φ,γ)) (2)
この式(2)の詳細は後述する図8において説明する。
以上の式を用いて、パノラマ画像の各画素と、取得した画像とを対応付けることで連結画像、すなわちパノラマ画像を生成している。
ここで、上述したパノラマ画像の座標(s,t)を仮想球面上の角度座標(α,β)に変換する方法を図7を用いて説明する。まず、図7Aに示す、PragMin は、パンチルタ28のホームポジション(例えばパンチルタの駆動可能範囲の中心)を0(rag)とした時の左端の角度データであり、PragMax は、パンチルタ28のホームポジションを0(rag)とした時の右端の角度データである。また、Ny2 は、パノラマ操作領域6Bの水平方向の座標であり、−Ny2 /2は、パノラマ操作領域6Bの左端の座標データであり、Ny2
/2は、パノラマ操作領域6Bの右端の座標データである。
そして、座標データsからパン角度αを求めるために、
(PragMax−α):(PragMax−PragMin)= (Ny2 /2−s):Ny2
となり、これよりパン角度αは、
α=PragMax −(PragMax−PragMin)× (Ny2 /2−s)/Ny2
となる。
また、図7Bに示す、TragMin は、パンチルタ28のホームポジションを0(rag)とした時の上端の角度データであり、TragMax は、パンチルタ28のホームポジションを0(rag)とした時の下端の角度データである。また、Nz2 は、パノラマ操作領域6Bの垂直方向の座標であり、−Nz2 /2は、パノラマ操作領域6Bの上端の座標データであり、Nz2 /2は、パノラマ操作領域6Bの下端の座標データである。
そして、座標データtからチルト角度βを求めるために、
(TragMax−β):(TragMax−TragMin)= (Nz2 /2−t):Nz2
となり、これよりチルト角度βは、
β=TragMax −(TragMax−TragMin)× (Nz2 /2−t)/Nz2
となる。
図8を参照して平面球面変換の処理を説明する。図8Aに示すように、ホームポジション(緯度、経度の原点)を向いたカメラ映像上の点(ξ,η)の空間上の座標は、次のように表せる。
このとき、
k1 =tan(λ/2γ)/(Ny/2)
k2 =tan(μ/2γ)/(Nz/2)
となり、(Ny,Nz)は、ポインティングデバイス14(マウス8)の駆動範囲(y方向,z方向)であり、(λ,μ)はワイド端での水平、垂直画角であり、γはワイド端を1倍とする現在のズーム相対倍率(倍率情報)である。
また、図8Bに示すように、一般的に3次元の回転行列は、次式のように示すことが知られている。
ホームポジションから角度情報(θ,φ)だけパン、チルトしたカメラ画像上の一点(ξ,η)と、ホームポジションから(α,β)の一点が同じ方向にあることから、次の関係が成り立つ。
Rz (θ)Ry (φ)p=lRz (α)Ry (β)ex
これをpについて解くと、
ここで、
とおくと、次のようにξ,ηが求められる。
l=1/a
ξ=−lb/k1 =−b/k1a
η=lc/k2 =c/k2a
以上の式よりホームポジションから(α,β)の角度にある座標データより、撮像座標に映し出される(ξ,η)を求めることができる。
ξ=(-sin(α−θ)cosβ)/(k1 (cos( α−θ)cosφ cosβ+ sinφ sinβ))
η=(-cos(α−θ)sinφ cosβ+ cosφ sinβ)/(k2 (cos( α−θ)cosφ cosβ+ sinφ sinβ))
このようにして、パノラマ画像の座標(s,t)に対応する仮想球面上の角度座標(α,β)からパンチルタカメラ3で取得した画像上の座標データ(ξ,η)を求めることによって、パノラマ画像を生成することができる。
逆に以下の式より撮像座標に映し出される(ξ,η)より、(α,β)の角度にある座標データを求めることもできる。
まず、l=|p|であるから、
a=1/√(1+k1 2 ξ2 +k2 2 η2 )
b=−k1 ξ/√(1+k1 2 ξ2 +k2 2 η2 )
c=k2 η/√(1+k1 2 ξ2 +k2 2 η2 )
となる。ただし、√( )は、( )内の計算結果に対して平方根の処理を行うものである。
また、式(3)より、
a=cos(α−θ)cosφ cosβ+ sinφ sinβ
b=sin(α−θ)cosβ
c=−cos(α−θ)sinφ cosβ+ cosφ sinβ
となる。
以上の式より
a sinφ+c sinθ= sinβ
tan(α−θ) =b/(a cosφ−c sinθ)
であるから、
β=sin -1(sinφ/ √(1+k1 2 ξ2 +k2 2 η2 )+ sinθk2 η/ √(1+k1 2 ξ2 +k2 2 η2 )
α=tan -1(−k1 ξ/( cosφ−k2 η sinθ))+θ
となる。
よって、
(α,β)=(f(ξ,η,θ,φ,γ),g(ξ,η,θ,φ,γ)) (4)
が求めることができる。
また、誤差を多少許容するのであれば、以下のように(α,β)を求めることができる。
α=θ+(λ/γ)×(ξ/Ny)
β=φ+(μ/γ)×(η/Nz)
つまり、式(4)は、
(α,β)=(f(ξ,θ,γ),g(η,φ,γ)) (5)
となり、簡略化することができる。
上述した式(4)および式(5)に示されるパンチルタ28の角度情報(α,β)を操作領域6Aの位置座標(ξ,η)から算出する処理を図9を用いて説明する。まず、操作領域6A中の任意の一点を直接指定する方法の一例を説明する。図9Aに示すように操作領域6Aの中心を(0,0)とした相対座標とし、その操作領域6A上のマウス8の位置座標(ξ,η)が獲得される。
次に、操作領域6A中の任意の領域から生成される任意の一点を指定する他の方法の一例を説明する。まず、図9Aに示すように、任意の領域の始点(m1,n1)が指定された後、任意の領域の終点(m2,n2)が指定され、それら2点より生成される四角形の中心座標として、
(ξ,η)=((m1,n1)+(m2,n2))/2 (6)
により、任意の一点(ξ,η)が獲得される。
この図9Aは、操作領域6A上のマウス8(ポインティングデバイス14)の座標であり、操作領域6A内のマウス8の可動範囲(y方向、z方向)を(Ny1 ,Nz1 )とする。この任意の一点(マウス8)の位置座標(ξ,η)と、パンチルタ28が向いている角度情報(θ,φ)と、ズームレンズ16のワイド端を1倍とする現在のズーム相対倍率とする倍率情報(γ)とを用いて、式(4)または式(5)からパンチルタ28の角度座標(α,β)が求められる。
図9Bに示す角度座標(α,β)は、パンチルタ28のホームポジションを緯度、経度の原点としたとき、ポインティングデバイスで指定された場所を撮像画面の中心に映し出すためのものである。
この図9において、求められる座標は、モニタ2の画面の絶対座標でも良く、操作領域6Aの中心を(0,0)とした相対座標でも良い。この座標は、パン方向の座標をξ、m1、m2、θ、αで示し、チルト方向の座標をη、n1、n2、φ、βで示す。
このように、マウス8が操作領域6Aにある場合、受信データで得られた現在のパンチルタ28の角度情報(θ,φ)、ズームの倍率情報(γ)、マウス8で指定された領域のマウス8の位置情報(ξ,η)を用いて、指定された操作領域6A上の被写体が、操作領域6Aの中心に来るようなパンチルタ28の角度情報(α,β)を式(4)または式(5)を用いて算出する。こうして得られた、パンチルタ28の角度座標(α,β)を図11に従って、パンチルタ28の内部位置情報(PNew,TNew)に変換し、パンチルタ28の絶対位置駆動命令と共に送信バッファに格納する。また、後述するように、同時にデータ送信要求フラグ(FlagSo)をセットし、タイマイベントでデータが送信されるようにする。
この発明のパノラマ画像が表示されるパノラマ操作領域6Bのマウス8の位置座標(ξ,η)を角度座標(α,β)へ変換する処理を図10を用いて説明する。パノラマ操作領域6B中の任意の一点を直接指定する方法は、上述した操作領域6A中の任意の一点を直接指定する方法と同様の方法で、図10Aに示すように、マウス8の位置座標(ξ,η)を得ることができる。
次に、パノラマ操作領域6B中の任意の領域から生成される任意の一点を指定する他の方法の一例を説明する。まず、図10Aに示すように、任意の領域の始点(m1,n1)が指定された後、任意の領域の終点(m2,n2)が指定され、式(6)により、任意の一点(ξ,η)が獲得される。
この図10Aは、パノラマ操作領域6B上のマウス8(ポインティングデバイス14)の座標であり、パノラマ操作領域6B内のマウス8の可動範囲(y方向、z方向)を(Ny2 ,Nz2)とする。この可動範囲は、パノラマ操作領域6B内に点線で示すパンチルタリミッタ表示6Dによって制限される。このパンチルタリミッタ表示6Dは、パンチルタカメラ3のレンズの光軸の可動範囲を示す。すなわち、パンチルタリミッタ表示6Dを超えて指示することはできない。この任意の一点の位置座標(ξ,η)と、パンチルタ28が向いている角度情報(θ,φ)と、ズームレンズ16のワイド端を1倍とする現在のズーム相対倍率とする倍率情報(γ)とを用いて、式(7)、式(8)および式(9)からパノラマ操作領域6Bの位置座標(x,y)、画角情報(s,t)およびパンチルタ28の角度座標(α,β)が求められる。
(x,y)=(f0 (θ),g0 (φ)) (7)
(s,t)=(f1 (γ),g1 (γ)) (8)
(α,β)=(f(ξ),g(η)) (9)
図10Bに示す位置座標(x,y)は、パンチルタ28のホームポジションを緯度、経度の原点としたとき、現在のパンチルタ28の向きであり、画角情報(s,t)は、現在操作領域6Aに表示されている画角である。この図10Bは、パノラマ操作領域6B上のズーム、パンチルタの状態を表示したものである。
図10Cに示す角度座標(α,β)は、パンチルタ28のホームポジションを緯度、経度の原点としたとき、ポインティングデバイスで指定された場所を撮像画面の中心に映し出すためのものである。(PragMax ,TragMax)〜(PragMin ,TragMin)は、パンチルタの駆動可能範囲、すなわちパンチルタリミッタ表示6Dで示す範囲である。この図10Cは、パンチルタ可動範囲上の駆動目標値を表したものである。
この図10において、求められる座標は、モニタ2の画面の絶対座標でも良く、パノラマ操作領域6Bの中心を(0,0)とした相対座標でも良い。この座標は、パン方向の座標をξ、m1、m2、x、s、αで示し、チルト方向の座標をη、n1、n2、y、t、βで示す。
このように、マウス8がパノラマ操作領域6Bにある場合、マウス8で指定された領域のマウス8の位置情報(ξ,η)を用いて、指定された操作領域6A上の被写体が、操作領域6Aの中心に来るようなパンチルタ28の角度情報(α,β)を式(9)を用いて算出する。こうして得られた、パンチルタ28の角度座標(α,β)を図11に従って、パンチルタ28の内部位置情報(PNew,TNew)に変換し、パンチルタ28の絶対位置駆動命令と共に送信バッファに格納する。また、後述するように、同時にデータ送信要求フラグ(FlagSo)をセットし、タイマイベントでデータが送信されるようにする。
ここで、上述したパンチルタ28内部の位置情報(p,t)を角度情報(θ,φ)に変換する方法並びに角度座標(α,β)をパンチルタ28内部の位置情報(PNew,TNew)に変換する方法を図11を用いて説明する。まず、図11Aに示す、PragMin は、パンチルタ28のホームポジションを0(rag)とした時の左端の角度データであり、PragMax は、パンチルタ28のホームポジションを0(rag)とした時の右端の角度データである。また、PdatMin は、パンチルタコントローラ25の左端の内部カウントデータであり、PdatMax は、パンチルタコントローラ25の右端の内部カウントデータである。
そして、パンデータpからパン角度θを求めるために、
(PragMax−θ):(PragMax−PragMin)=(PdatMax−p):(PdatMax−PdatMin)
となり、これよりパン角度θは、
θ=PragMax −(PragMax−PragMin)×(PdatMax−p)/(PdatMax−PdatMin)
となる。
またこれより、パンデータpは、
p=PdatMax −(PragMax−θ)×(PdatMax−PdatMin)/(PragMax−PragMin)
となる。
また、パン角度αからパンデータPNewを求めるために、
(PragMax−α):(PragMax−PragMin)=(PdatMax−p-new):(PdatMax−PdatMin)
となり、これよりパンデータPNewは、
PNew=PragMax −(PragMax−α)×(PdatMax−PdatMin)/(PragMax−PragMin)
となる。
また、図11Bに示す、TragMin は、パンチルタ28のホームポジションを0(rag)とした時の上端の角度データであり、TragMax は、パンチルタ28のホームポジションを0(rag)とした時の下端の角度データである。また、TdatMin は、パンチルタコントローラ25の上端の内部カウントデータであり、TdatMax は、パンチルタコントローラ25の下端の内部カウントデータである。
そして、チルトデータtからチルト角度φを求めるために、
(TragMax−φ):(TragMax−TragMin)=(TdatMax−t):(TdatMax−TdatMin)
となり、これよりチルト角度φは、
φ=TragMax −(TragMax−TragMin)×(TdatMax−t)/(TdatMax−TdatMin)
となる。
またこれより、チルトデータtは、
t=TdatMax −(TragMax−φ)×(TdatMax−TdatMin)/(TragMax−TragMin)
となる。
また、チルト角度βからチルトデータTNewを求めるために、
(TragMax−β):(TragMax−TragMin)=(TdatMax−t-new):(TdatMax−TdatMin)
となり、これよりチルトデータTNewは、
TNew=TragMax −(TragMax−β)×(TdatMax−TdatMin)/(TragMax−TragMin)
となる。
次に、上述したパノラマ操作領域6B内の位置座標(ξ,η)をパンチルタ28の角度座標(α,β)へ変換する方法並びにパンチルタ28の角度情報(θ,φ)をパノラマ操作領域6B内の位置座標(x,y)へ変換する方法を図12を用いて説明する。まず、図12Aに示す、PragMin は、パンチルタ28のホームポジションを0(rag)とした時の左端の角度データであり、PragMax は、パンチルタ28のホームポジションを0(rag)とした時の右端の角度データである。また、Ny2 は、パノラマ操作領域6Bの水平方向の座標であり、−Ny2 /2は、パノラマ操作領域6Bの左端の座標データであり、Ny2 /2は、パノラマ操作領域6Bの右端の座標データである。
そして、座標データξからパン角度αを求めるために、
(PragMax−α):(PragMax−PragMin)= (Ny2 /2−ξ):Ny2
となり、これよりパン角度αは、
α=PragMax −(PragMax−PragMin)× (Ny2 /2−ξ)/Ny2
となる。
また、パン角度θから座標データxを求めるために、
(PragMax−θ):(PragMax−PragMin)= (Ny2 /2−x):Ny2
となり、これより座標データxは、
x=Ny2 /2−(PragMax−θ)×Ny2 /(PragMax−PragMin)
となる。
また、図12Bに示す、TragMin は、パンチルタ28のホームポジションを0(rag)とした時の上端の角度データであり、TragMax は、パンチルタ28のホームポジションを0(rag)とした時の下端の角度データである。また、Nz2 は、パノラマ操作領域6Bの垂直方向の座標であり、−Nz2 /2は、パノラマ操作領域6Bの上端の座標データであり、Nz2 /2は、パノラマ操作領域6Bの下端の座標データである。
そして、座標データηからチルト角度βを求めるために、
(TragMax−β):(TragMax−TragMin)= (Nz2 /2−η):Nz2
となり、これよりチルト角度βは、
β=TragMax −(TragMax−TragMin)× (Nz2 /2−η)/Nz2
となる。
また、チルト角度φから座標データyを求めるために、
(TragMax−φ):(TragMax−TragMin)= (Nz2 /2−y):Nz2
となり、これより座標データyは、
y=Nz2 /2−(TragMax−θ)×Nz2 /(TragMax−TragMin)
となる。
パンチルタ28が切り出している画角情報(ψ,ω)からパノラマ操作領域6B内の画枠6Cの画角情報(s,t)へ変換する方法を図13を用いて説明する。まず、図13Aには、現在のパンチルタ28の画角情報(ψ,ω)を示す。この画角情報(ψ,ω)は、
(ψ,ω)=1/γ×(ψ0,ω0)
によって求められる。このとき、(ψ0,ω0)はワイド端での水平画角と垂直画角を示し、γはワイド端を1倍としたときのレンズ倍率を示す。
図13Bに示すように、PragMin は、パンチルタ28のホームポジションを0(rag)とした時の左端の角度データであり、PragMax は、パンチルタ28のホームポジションを0(rag)とした時の右端の角度データである。また、Ny2 は、パノラマ操作領域6Bの水平方向の座標であり、−Ny2 /2は、パノラマ操作領域6Bの左端の座標データであり、Ny2 /2は、パノラマ操作領域6Bの右端の座標データである。
そして、水平画角ψから水平画角sを求めるために、
ψ:(PragMax−PragMin)=s:Ny2
となり、これより水平画角sは、
s=ψ×Ny2 /(PragMax−PragMin)
となる。
また、図13Cに示す、TragMin は、パンチルタ28のホームポジションを0(rag)とした時の下端の角度データであり、TragMax は、パンチルタ28のホームポジションを0(rag)とした時の上端の角度データである。また、Nz2 は、パノラマ操作領域6Bの垂直方向の座標であり、−Nz2 /2は、パノラマ操作領域6Bの下端の座標データであり、Nz2 /2は、パノラマ操作領域6Bの上端の座標データである。
そして、垂直画角ωから垂直画角tを求めるために、
ω:(TragMax−TragMin)=t:Nz2
となり、これより垂直画角tは、
t=ω×Nz2 /(TragMax−TragMin)
となる。
これらより、図13Dに示す画角情報(s,t)がパノラマ操作領域6B内に画枠6Cとして、表示される。
次に、上述したズームレンズ16の位置情報(z)を倍率情報(γ)に変換する方法を図14を用いて説明する。この図14は、縦軸にレンズ倍率情報を表し、横軸にズームレンズの内部情報を表す。取得したズームレンズ16の位置情報(z)は、図14に示す変換グラフに照らし合わし、コンピュータ1上で倍率情報(γ)に変換される。一例として、ROMテーブルまたは数式によって、位置情報(z)が倍率情報(γ)に変換される。
次に、コンピュータ1内の制御アルゴリズムの一例を図15を用いて説明する。まず、ステップS1では、プログラムがスタートすると、図2に示すように、モニタ2上に操作領域6A、パノラマ操作領域6B、カーソル7、さらにパンチルタリミッタ表示6Dに示すパンチルタリミッタが設定される初期化が行われる。パンチルタリミッタの範囲は、固定値でも良いし、その範囲を変更したいときに自由に変更することができるようにしても良い。そして、ステップS2では、コンピュータ1とモードコントローラ23とが所定の周期で通信を行うために、タイマが設定される。これらの初期設定動作が完了すると、ステップS3の各種発生するイベント待ち状態に制御が移り、発生したイベントに対応してステップS3から制御が移る。発生するイベントは、先に設定したタイマイベント(ステップS4)、マウスボタンダウンイベント(ステップS5)、マウスボタンアップイベント(ステップS6)、マウス移動イベント(ステップS7)がある。
タイマイベントのアルゴリズムの詳細について、図16のフローチャートを用いて説明する。この一例のタイマイベントは、周期的にコンピュータ1とモードコントローラ23との通信を行うために発生するイベントである。このタイマイベントは、一例として50msec間隔で発生する。タイマイベントが発生すると、ステップS11では、通信ポートの設定が完了しているか否かが判断される。通信ポートの設定が完了している(済)と判断されると、ステップS12へ制御が移り、通信ポートの設定が完了していない(未)と判断されると、ステップS18へ制御が移る。ここでは、通信ポートの設定が完了していない初回のみ、ステップS18に制御が移り、通信ポートの開設処理が行われる。具体的には、ステップS18において、コンピュータ1上のRS−232Cポートの開設が行われる。そして、ステップS16へ制御が移る。
それ以降のタイマイベントでは、受信データの確認、解析処理、パンチルタ28の駆動命令など送信バッファにたまっているデータの送信処理、またはパンチルタ28、ズームレンズ16の状態確認要求のための通信データの送信処理が行われる。このアルゴリズムでは、ステップS11からステップS12へ制御が移り、ステップS12では、受信バッファのデータの有無が確認され、受信データが存在する場合、ステップS13に制御が移り、受信データが存在しない場合、ステップS14に制御が移る。ステップS13では、受信バッファに存在する受信データが解析され、モードコントローラ23に要求したパンチルタ28の位置情報(p,t)や、ズームレンズ16の位置情報(z)が取得される。これらのデータが上述した図11、図14の方式に従い、パンチルタ28の角度情報(θ,φ)、ズームレンズ16の倍率情報(γ)に変換される。
次に、ステップS14では、データの送信要求の有無が確認される。データの送信要求が存在する(FlagSo==True)場合、ステップS19に制御が移り、ステップS19では、送信バッファに格納されているデータの送信処理がなされた後、送信要求フラグ(FlagSo)がリセット(False)される。そして、ステップS16へ制御が移る。この送信バッファにたまったデータの一例として、マウス8で設定されたパンチルタ28の駆動命令のデータなどがある。そして、送信要求がない(FlagSo==False)場合、ステップS15へ制御が移る。ステップS15では、パンチルタ28およびズームレンズ16の位置要求命令がコンピュータ1からモードコントローラ23に送信される。
ステップS16では、パンチルタ28の前回得た位置情報と今回得た位置情報とを比較し、位置情報(p,t)に変化があるか否かが判断される。パンチルタ28の位置情報(p,t)が変化した場合、ステップS20へ制御が移り、変化しなかった場合、ステップS17へ制御が移る。ステップS17では、ズームレンズ16の前回得た位置情報と今回得た位置情報とを比較し、位置情報(z)に変化があるか否かが判断される。ズームレンズ16の位置情報(z)が変化した場合、ステップS20へ制御が移り、変化しなかった場合、このフローチャートは終了する。
ステップS20では、パンチルタ28の位置情報(p,t)および/またはズームレンズの位置情報(z)が変化したときに、パノラマ操作領域6Bに表示する画枠6Cが再描写される。このとき、パンチルタ28の位置情報(p,t)は、上述したように角度情報(θ,φ)へ変換され、ズームレンズ16の位置情報(z)も上述したように倍率情報(γ)へ変換される。それぞれ変換された角度情報(θ,φ)と倍率情報(γ)とを用いて、式(7)からパンチルタ28の位置座標(x,y)および式(8)から操作領域6Aに表示されている画角である画角情報(s,t)を算出する。そして、算出された位置座標(x,y)および画角情報(s,t)に応じてパノラマ操作領域6Bに画枠6Cが描写される。
ステップS16では、パンチルタ28の前回と今回の位置情報(p,t)を比較するようにしているが、パンチルタ28の前回と今回の角度情報(θ,φ)を比較するようにしても良い。またこのとき、ステップS20では、今回の過度情報(θ,φ)をそのまま式(7)に用いて位置座標(x,y)を算出する。同様に、ステップS17では、ズームレンズ16の前回と今回の位置情報(z)のを比較するようにしているが、ズームレンズ16の前回と今回の倍率情報(γ)を比較するようにしても良い。またこのとき、ステップS20では、今回の倍率情報(γ)をそのまま式(8)に用いて画角情報(s,t)を算出する。
次に、マウス移動イベントのアルゴリズムについて図17のフローチャートを用いて説明する。このイベントは、モニタ2上をマウス8が移動すると発生するイベントである。この発明では、パンチルタ28の駆動位置を選択するために使用する。このイベントが発生すると、図2に示す操作領域6A、パノラマ操作領域6Bまたはそれらの領域以外の部分のいずれにマウス8が存在するかを確認するために、ステップS21では、操作領域6Aにマウス8が存在するか否かが確認される。マウス8が操作領域6Aに存在するのが確認されると、ステップS22へ制御が移り、操作領域6Aに存在しないのが確認されると、ステップS24へ制御が移る。ステップS22では、操作領域フラグ(Flag-rin)がセット(True)されると共に、パノラマ操作領域フラグ(Flag-pin)がクリア(False)される。
ステップS24では、操作領域6Aにはマウス8が存在しないため、操作領域フラグ(Flag-rin)がクリア(False)される。そして、ステップS25では、パノラマ操作領域6Bにマウス8が存在するか否かが確認される。マウス8がパノラマ操作領域6Bに存在するのが確認されると、ステップS26へ制御が移り、パノラマ操作領域6Bに存在しないのが確認されると、ステップS27へ制御が移る。ステップS26では、パノラマ操作領域フラグ(Flag-pin)がセット(True)される。ステップS27では、パノラマ操作領域6Bにはマウス8が存在しないため、パノラマ操作領域フラグ(Flag-pin)がクリア(False)される。
そして、操作領域6Aまたはパノラマ操作領域6Bにマウス8が存在する場合、ステップS23において、マウス8が存在する操作領域の中心を(0,0)とした相対座標としてマウス8の位置座標(ξ,η)が取得される。
このフローチャートでは、もし操作領域6Aにマウス8が存在する場合、操作領域フラグ(Flag-rin)をセット(True)し、操作領域6Aにマウス8が存在しない場合、操作領域フラグ(Flag-rin)をクリア(False)する。また、パノラマ操作領域6Bにマウス8が存在する場合、パノラマ操作領域フラグ(Flag-pin)をセット(True)し、パノラマ操作領域6Aにマウス8が存在しない場合、パノラマ操作領域フラグ(Flag-pin)をクリア(False)する。そして、操作領域6Aまたはパノラマ操作領域6Bにマウス8が存在する場合、そのときのマウス8の位置座標を、各操作領域の中心を(0,0)とした相対座標として(ξ,η)に設定する。
次に、マウスボタンダウンイベントとボタンアップイベントについて説明する。上述したような操作領域6Aまたはパノラマ操作領域6Bの任意の一点を直接指定する方法は、図18に示すマウスボタンダウンイベントのアルゴリズムのみを使用し、任意の領域を指定し、その任意の領域から生成される任意の一点を指定する他の方法は、図19に示すマウスボタンダウンイベントと、図20に示すマウスボタンアップイベントとを使用する。
まず、図18のフローチャートを用いて操作領域の任意の一点をを直接指定する方法であるボタンダウンイベントのアルゴリズムを説明する。このイベントは、マウス8の左ボタンが押された時に発生するイベントである。この発明では、このイベントを、パンチルタ28を駆動するためのトリガ情報として使用する。このイベントが発生すると、ステップS31において、操作領域フラグ(FlagRin)がセット(True)されているか否かにより、操作領域6Aにマウス8が存在するか否かが確認される。操作領域フラグがセットされている(FlagRin ==True)場合、操作領域6Aにマウス8が存在するため、ステップS32へ制御が移り、操作領域フラグがクリアされている(FlagRin ==False)場合、操作領域6A外にマウス8が存在するため、ステップS34へ制御が移る。
マウス8が操作領域6Aに存在する場合、ステップS32において、受信データによって得られた現在のパンチルタ28の角度情報(θ,φ)、ズームレンズ16の倍率情報(γ)、マウス8で指定された操作領域6Aのマウス8の位置座標(ξ,η)を用いて、指定された操作領域上の被写体が、画面の中心にくるようなパンチルタ28の角度情報(α,β)が式(4)または式(5)を用いて算出される。
そして、ステップS33では、こうして得られたパンチルタ28の角度情報(α,β)を上述した図11に従い、パンチルタ28の角度情報(α,β)が内部の位置情報(PNew,TNew)に変換される。変換された位置情報(PNew,TNew)は、パンチルタ28の絶対位置駆動命令と共に送信バッファに格納される。また、同時に、データ送信要求フラグ(FlagSo)をセット(True)し、タイマイベントの処理によってデータが送信されるようにする。
操作領域6A外にマウス8が存在することが確認された後、ステップS34では、パノラマ操作領域6Bにマウス8が存在するか否かが、パノラマ操作領域フラグ(FlagPin)がセット(True)されているか否かにより確認される。パノラマ操作領域フラグがセットされている(FlagPin ==True)場合、パノラマ操作領域6Bにマウス8が存在するため、ステップS35へ制御が移り、パノラマ操作領域フラグがクリアされている(FlagPin ==False)場合、このフローチャートは終了する。
このフローチャートでは、操作領域フラグ(FlagRin)およびパノラマ操作領域フラグ(FlagPin)の各フラグを確認することによって、マウス8が操作領域6Aまたはパノラマ操作領域6Bに存在するか否かが確認される。また、いずれの操作領域にもマウス8が存在しない場合、このイベントは、無効となる。
マウス8がパノラマ操作領域6Bに存在する場合、ステップS35において、マウス8で指定されたパノラマ操作領域6Bのマウス8の位置情報(ξ,η)を用いて、指定された操作領域上の被写体が、画面の中心に来るようなパンチルタ28の角度情報(α,β)が式(9)を用いて算出される。そして、ステップS33へ制御が移る。
次に、パノラマ操作領域6Bの任意の領域から生成される任意の一点を指定する他の方法であるボタンダウンイベントのアルゴリズムを図19を用い、ボタンアップイベントのアルゴリズムを図20を用いて説明する。
まず、ボタンダウンイベントのアルゴリズムを図19のフローチャートを用いて説明する。このイベントは、マウス8の左ボタンが押された時に発生するイベントである。この発明では、このイベントを、指定する任意の領域の始点を決定するイベントとして使用する。このイベントが発生すると、ステップS41において、操作領域フラグ(FlagRin)がセット(True)されているか否かにより、操作領域6Aにマウス8が存在するか否かが確認される。操作領域フラグがセットされている(FlagRin ==True)場合、操作領域6Aにマウス8が存在するため、ステップS42へ制御が移り、操作領域フラグがクリアされている(FlagRin ==False)場合、操作領域6A外にマウス8が存在するため、ステップS44へ制御が移る。
マウス8が操作領域6Aに存在する場合、ステップS42において、操作領域の始点取得フラグ(FlagRstart)がセット(True)される。そして、ステップS43において、マウス8の左ボタンが押されたときの位置座標(m1,n1)を任意の領域の始点として記憶する。
操作領域6A外にマウス8が存在することが確認された後、ステップS44では、パノラマ操作領域フラグ(FlagPin)がセット(True)されているか否かにより、パノラマ操作領域6Bにマウス8が存在するか否かが確認される。パノラマ操作領域フラグがセットされている(FlagPin ==True)場合、パノラマ操作領域6Bにマウス8が存在するため、ステップS45へ制御が移り、パノラマ操作領域フラグがクリアされている(FlagPin ==False)場合、このフローチャートは終了する。
このフローチャートでは、操作領域フラグ(FlagRin)およびパノラマ操作領域フラグ(FlagPin)の各フラグを確認することによって、マウス8が操作領域6Aまたはパノラマ操作領域6Bに存在するか否かが確認される。また、いずれの操作領域にもマウス8が存在しない場合、そのイベントは無効となる。
マウス8がパノラマ操作領域6Bに存在する場合、ステップS45において、パノラマ操作領域の始点取得フラグ(FlagPstart)がセットされる。そして、ステップS43へ制御が移る。
次に、ボタンアップイベントのアルゴリズムを図20のフローチャートを用いて説明する。このイベントは、マウスの左ボタンが離された時に発生するイベントである。この発明では、このイベントを指定する任意の領域の終点を決定するイベントとして使用する。
このイベントが発生すると、まずステップS51において、操作領域フラグ(FlagRin)がセット(True)されているか否かにより、操作領域6Aにマウス8が存在するか否かが確認される。操作領域フラグがセットされている(FlagRin ==True)場合、操作領域6Aにマウス8が存在するため、ステップS52へ制御が移り、操作領域フラグがクリアさている(FlagRin ==False)場合、操作領域6A外にマウス8が存在するため、ステップS57へ制御が移る。そして、ステップS52では、操作領域6Aの始点取得フラグ(FlagRstart)がセットされているか否かにより、操作領域6A内で左ボタンが押されたか否かが確認される。始点取得フラグがセットされている(FlagRstart==True)場合、操作領域6A内でマウス8が押されたため、ステップS53へ制御が移り、始点取得フラグがクリアされている(FlagRstart==False)場合、操作領域6A内でマウス8の左ボタンが押されなかったため、ステップS57へ制御が移る。
すなわち、ステップS51およびS52では、操作領域フラグ(FlagRin)および操作領域6Aの始点取得フラグ(FlagRstart)の各フラグを確認する。そして、操作領域フラグ(FlagRin)および始点取得フラグ(FlagRstart)が共にセット(True)されていれば操作領域6Aで駆動命令が発生したと識別する。また、それ以外の場合、後述するステップS57およびS58において、パノラマ操作領域フラグ(FlagPin)およびパノラマ操作領域6Bの始点取得フラグ(FlagPstart)の各フラグを確認する。
操作領域6Aで指令有り、すなわち操作領域フラグ(FlagRin)および始点取得フラグ(FlagRstart)が共にセット(True)されていると認識された場合、ステップS53において、マウス8の左ボタンが離されたことによって指定された操作領域6Aの位置座標(m2,n2)を任意の領域の終点として記憶する。そして、先に記憶した任意の領域の始点の位置座標(m1,n1)と、今回求めた任意の領域の終点の位置座標(m2,n2)の2点より生成される四角形の領域の中心座標として、式(6)からマウス8の位置情報(ξ,η)が任意の一点として算出される。
そして、ステップS54では、受信データで得られた現在のパンチルタ28の角度情報(θ,φ)、ズームレンズ16の倍率情報(γ)、マウス8で指定された操作領域のマウス8の位置情報(ξ,η)を用いて、指定された操作領域上の被写体が、画面の中心に来るようなパンチルタ28の角度情報(α,β)を式(4)または式(5)を用いて算出される。
ステップS55では、このパンチルタ28の角度情報(α,β)が上述した図11に従い、パンチルタ28内部の位置情報(PNew, TNew)に変換され、パンチルタ28の絶対位置駆動命令と共に送信バッファに格納される。また、同時に、データ送信要求フラグ(FlagSo)がセット(True)され、タイマイベントの処理によってデータが送信されるようにする。
ステップS56では、それぞれの操作領域でのマウスボタンアップイベントを確認した後、最後に操作領域6Aの始点取得フラグ(FlagRstart)およびパノラマ操作領域6Bの始点取得フラグ(FlagPstart)がクリア(False)される。そして、このイベントは終了する。
ステップS57では、パノラマ操作領域フラグ(FlagPin)がセット(True)されているか否かにより、パノラマ操作領域6Bにマウス8が存在するか否かが確認される。パノラマ操作領域フラグがセットされている(FlagPin ==True)場合、パノラマ操作領域6Bにマウス8が存在するため、ステップS58へ制御が移り、操作領域フラグがセットされていない(FlagPin ==False)場合、パノラマ操作領域6B外にマウス8が存在するため、ステップS56へ制御が移る。そして、ステップS58では、パノラマ操作領域6Bの始点取得フラグ(FlagPstart)がセット(True)されているか否かにより、パノラマ操作領域6B内でマウス8の左ボタンが押されたか否かが確認される。始点取得フラグがセットされている(FlagPstart==True)場合、パノラマ操作領域6B内でマウス8の左ボタンが押されたため、ステップS59へ制御が移り、始点取得フラグがセットされていない(FlagPstart==False)場合、パノラマ操作領域6B内でマウス8の左ボタンが押されなかったため、ステップS56へ制御が移る。
すなわち、ステップS57およびS58では、パノラマ操作領域フラグ(FlagPin)およびパノラマ操作領域6Bの始点取得フラグ(FlagPstart)が共にセット(True)されていればパノラマ操作領域6Bで駆動命令が発生したと識別する。また、上述したステップS51、S52、S58およびS58の条件に当てはまらない場合、このイベントは無効となる。
パノラマ操作領域6Bで指令有り、すなわちパノラマ操作領域フラグ(FlagPin)および始点取得フラグ(Flag-pstart)が共にセット(True)されていると認識された場合、ステップS59において、マウス8の左ボタンが離されることによって指定されたパノラマ操作領域6Bの位置座標(m2,n2)を任意の領域の終点として記憶する。そして、先に記憶した任意の領域の始点の位置座標(m1,n1)と、今回求めた任意の領域の終点の位置座標(m2,n2)の2点より生成される四角形の領域の中心座標として、式(6)からマウス8の位置情報(ξ,η)が任意の一点として算出される。
そして、ステップS60では、マウス8で指定されたパノラマ操作領域6Bのマウス8の位置情報(ξ,η)を用いて、指定されたパノラマ操作領域上の被写体が、画面の中心に来るようなパンチルタ28の角度情報(α,β)を式(9)を用いて算出される。そして、ステップS55へ制御が移る。
上述した一実施形態では、すべての制御を1台のコンピュータを用いて行うようになされている。この発明の他の実施形態は、図21に示すように、サーバ用コンピュータ、クライアント用コンピュータ間で役割を分担して、ネットワーク回線のように通信容量に制限のある形態でもパンチルタカメラを制御するようにしたものである。モニタ2およびマウス8が接続されているコンピュータ1は、伝送路およびサーバ9を介して遠隔地に設置されたパンチルタカメラ3の駆動を制御する。すなわち、コンピュータ1によって、撮像装置コントローラが構成される。伝送路としては、通信回線(無線、有線)、ネットワークなどの既存の種々のものが使用可能である。サーバ9に対してコンピュータ1は、クライアントの関係にあり、サーバ9に対して複数のコンピュータ1の接続が可能である。
パンチルタカメラ3およびサーバ9は、4に示すような環境にある実際の景色に設置される。この環境の実際の景色4に設置されたパンチルタカメラ3によって撮影された画面を5に示す。この撮影画面5は、実際に撮影している画面であって、ズームレンズを望遠側に操作すると画角が小さくなり、ワイド側に操作すると画角が大きくなる。
パンチルタカメラ3によって取り込まれる撮影画面5の映像は、サーバ9を経由することによって映像データに変換される。この映像データが伝送路を介してコンピュータ1に供給される。コンピュータ1に供給された映像データがデコードされ、モニタ2に表示される。モニタ2では、供給された撮影画面5がモニタ2の画面上の操作領域6Aに表示され、またパンチルタカメラ3からの映像を連結したパノラマ画像がパノラマ操作領域6Bに表示される。上述した一実施形態と同様に、マウス8(カーソル7)によって、パノラマ操作領域6B(または操作領域6A)の任意の一点または任意の領域から生成される一点を指示する。指示された任意の一点の被写体が操作領域6の中央になるように、サーバ9および伝送路を介してパンチルタカメラ3を駆動させ、その結果、撮影画面が移動する。すなわち、選択された被写体が操作領域6Aの中央になるように、パンチルタカメラ3がサーバ9を介して制御される。
図22は、この発明の他の実施形態の全システムのブロック図である。但し、カメラ部11およびパンチルタ部の構成、機能は、上述した一実施形態と同様であるので、図22では、その詳細な構成が省略されている。サーバ9は、制御部131、ビデオキャプチャーボードからなるビデオキャプチャー部129、記憶部130から構成される。コンピュータ1は、伝送路132とネットワークで接続されており、図3に示す一実施形態と同様に制御部31等から構成される。なお、各コンピュータ内の詳細なアルゴリズムについても、前記一実施形態と内容が重複するため、その説明を省略する。
被写体から到達する撮像光は、一実施形態と同様、カメラ部11で信号処理され、輝度(Y)、色(C)、ビデオ信号といった各信号に変換され、映像信号としてTVモニタ13およびサーバ9のビデオキャプチャー部129へ供給される。また、一実施形態のとおり、パンチルタ部12がモードコントローラ、カメラコントローラ、パンチルタコントローラを有し、これらのコントローラがカメラ部11、パンチルタ部28を制御している。モードコントローラ23は、カメラ部11、パンチルタ部12の内部状態、および、外部からの命令に従い、システム全体を一実施形態と同様に制御する。
モードコントローラ23は、通信路(具体的には、RS232Cを用いている)によりサーバ9と接続され、サーバ9から直接送られてくる命令、または、コンピュータ1から、サーバ9経由で送られてくる命令に対し、パンチルタ、レンズブロック部のズームレンズを駆動するように、パンチルタコントローラ、カメラコントローラに対して、受け取った命令を振り分ける。また、モードコントローラ23は、パンチルタカメラの内部状態をサーバ9を経由して外部に送出するため、パンチルタコントローラ、カメラコントローラから情報を常に取得している。
サーバ9は、パンチルタ部12のモードコントローラ23より、パンチルタカメラの内部状態(たとえば、パンチルタ、ズームレンズの現在の位置情報等)を周期的に取得するようになっている。また、カメラ部11の映像を伝送路132に送出するために、ビデオキャプチャー部129を使用しており、カメラ部11より入力されてくる映像信号を任意の品質で、伝送路132に送出しやすいデジタル画像データ(本実施例ではJPEG形式の静止画またはビットマップ形式の静止画)に変換している。また、同形式のデジタル画像を、記録部130(例えば、ハードディスク)上にストレージすることができる。
サーバ9に対し、コンピュータ1より接続要求がなされると、サーバ9は、コンピュータ1に接続されているモニタ2に表示するための、GUI(グラフィカルインターフェース)パネル情報(パネルの配置、パネル上でマウス操作されたときの、コンピュータ1での動作プログラム等があり、本実施例では、HTML、JAVA(登録商標)のプログラムを使用している。)を送出する。また、周期的にパンチルタカメラが撮像した画像データ、パンチルタカメラの状態などを伝送路を介してコンピュータ1に送出する。
他の実施形態では、伝送路132にインターネットを使用し、伝送路132上を、HTTPプロトコルを用いてやり取りがなされている。また、コンピュータ1では、インターネット用のフラウザを用いて、サーバ9より送られてくるGUIパネル情報、画像情報、パンチルタカメラ状態などを、モニタ2に表示する。モニタ2の画面上に表示されるGUIパネルには、操作領域6Aおよびパノラマ操作領域6B、パノラマ画像生成ボタン6E、ズームの操作ボタン、ポインティングデバイス14(マウス8)のカーソル等が表示される。そして、操作領域6Aには、サーバより送られてくる画像データがデコード表示され、画像データの更新と共に映像が書き換えられる。また、パノラマ操作領域6Bには、パンチルタカメラの動作範囲および現在のパンチルタの位置、ズームの画角などが一実施形態と同様な手法で表示される。そして、コンピュータ1は、サーバ9より送られてきた、GUIパネルが操作されたときの動作プログラムが実行される。
他の実施形態の上記動作プログラムは、パンチルタカメラへの駆動命令および、サーバ上での動作命令を、マウスのクリック動作で発生させる。パノラマ生成ボタン6E上で、マウスがクリックされると、コンピュータ1は、サーバ9に対し、パノラマ画面生成指示を行う。サーバ9が、この命令を取得すると、一実施形態と同様な手法で、パンチルタ、ズームレンズを所定の位置に駆動し、各々の場所で画像を取得するとともに、取得した10枚の画像を、仮想球面上に写像し、仮想球面の緯度経度で正規化することで連結を行う。この時の連結されたパノラマ画像は、すべての画像の連結処理が終了した後、サーバ内でJPEG方式の画像に変換し、コンピュータ1に対して、伝送路132を介し送出する。
コンピュータ1では、送られてきたパノラマ画像が、モニタ2のパノラマ操作領域6Bに重ね合わすように表示され、現在パンチルタカメラが設定されている環境を一目で表示することが可能になる。そして、パノラマ操作領域6B上で、マウスがクリックされた場合、クリックされたときのマウスの位置情報を元に、パノラマ画像上のマウスクリックされた位置が、操作領域6A(映像)の中心に来るように駆動されるように、命令(絶対位置駆動命令)をサーバ9に発信する。サーバ9がこの命令を取得すると、命令を中継して、パンチルタカメラに発信し、パンチルタが所望の位置に駆動される。このように、パノラマ画像上でパンチルタの駆動目標を設定するため、ネットワークでの駆動命令、映像のディレー等を意識せずにパンチルタを容易に操作することが可能になる。
上述したこの発明の実施形態では、パノラマ画像は、パンチルタカメラ3からコンピュータ1へ画像が供給される度にコンピュータ1内で連結し、連結されるたびに画像をパノラマ操作領域6Bに表示しているが、全ての画像が連結された後にパノラマ操作領域6Bに表示するようにしても良い。
この発明の実施形態では、コンピュータ1に接続されているモニタ2の画面上に操作領域6Aおよびパノラマ操作領域6Bを表示しているが、モニタ2とは異なる別のディスプレイに操作領域6Aおよび/またはパノラマ操作領域6Bを表示しても良い。
この発明の実施形態では、操作領域6Aおよびパノラマ操作領域6Bの両方の操作領域をマウスで操作することによって、パンチルタカメラ3を自由に駆動することができるようになされているが、操作領域6Aまたはパノラマ操作領域6Bの何れか一方の操作領域のみをマウスで操作することができるようにしても良い。
この発明の実施形態では、モニタ2上に操作領域6Aおよびパノラマ操作領域6Bを表示しているが、パノラマ操作領域6Bのみを表示するようにしても良い。
この発明の実施形態では、モニタ2上に操作領域6Aおよびパノラマ操作領域6Bを表示し、その操作領域をマウスで操作することによって、パンチルタカメラ3を自由に駆動することができるようになされているが、モニタ2上に単なる表示としてパノラマ画像を表示し、パンチルタカメラ3を自由に駆動させるために、例えば8方向キーなどの操作部を用いても良い。
この発明の実施形態では、パンチルタカメラ3によって撮影可能な範囲をパンチルタカメラ3の可動できる最大範囲としても良いし、リミッタによって撮影可能な範囲を制限しても良い。また、そのリミッタにより撮影範囲を制限する機能は、パンチルタカメラ3に持っても良いし、コンピュータ1に持っても良い。
この発明の実施形態では、任意の領域から生成される任意の一点をその領域の中心としたが、それに限らず任意の領域の外心、内心、重心または垂心を任意の一点としても良い。
この発明の実施形態では、パノラマ操作領域6Bに表示されているパノラマ画像は、パンチルタカメラ3が配置されている環境であればどのようなパノラマ画像でも良く、例えば動画、間欠的静止画、静止画のいずれでも良い。
この発明の他の実施形態では、説明を容易とするために、遠隔地に設置されたサーバ9とパンチルタカメラ3に対して1つのコンピュータ1としたが、サーバ9とパンチルタカメラ3は、世界中に配置され、例えばインターネットを介して複数のコンピュータから1つのパンチルタカメラ3を制御するようにしても良い。