以下に、本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は、図示された構成に限定されるものではない。
また、以下の実施例におけるコマンドは、例えばOpen Network Video Interface Forum(以下ONVIFと称することがある)規格に基づいて定められているものとする。そして、ONVIF規格では、例えば、XML Schema Definition言語(以下、XSDと称することがある)を用いることにより、このコマンドの定義を行う。
以下に、図1を参照して本実施例に係るネットワーク構成について説明する。より詳細には、図1は、本実施例に係る監視システムのシステム構成の一例を示す図である。
本実施例における監視システムにおいて、撮像装置1000とクライアント装置2000とは、IPネットワーク網1500を介して(ネットワーク経由で)相互に通信可能な状態で接続される。これにより、撮像装置1000は、撮像画像をIPネットワーク網1500経由でクライアント装置2000に配信することができる。
なお、本実施例における撮像装置1000は、動画像を撮像する監視カメラであり、より詳細には、監視に用いられるネットワークカメラであるものとする。また、本実施例におけるクライアント装置2000は、PC等の外部装置の一例である。又、本実施例における監視システムは、撮像システムに相当する。
また、IPネットワーク網1500は、例えばEthernet(登録商標)等の通信規格を満足する複数のルータ、スイッチ、ケーブル等から構成されるものとする。しかしながら、本実施例においては、撮像装置1000とクライアント装置2000との間の通信を行うことができるものであれば、その通信規格、規模、構成を問わない。
例えば、IPネットワーク網1500は、インターネットや有線LAN(Local Area Network)、無線LAN(Wireless LAN)、WAN(Wide Area Network)等により構成されていても良い。なお、本実施例における撮像装置1000は、例えば、PoE(Power Over Ethernet(登録商標))に対応していても良く、LANケーブルを介して電力を供給されても良い。
クライアント装置2000は、撮像装置1000に対し、各種コマンドを送信する。これらのコマンドは、例えば、撮像装置1000の撮像方向及び画角を変更させるためのコマンド、撮像パラメータを変更するためのコマンド、撮像画像のストリーミングを開始させるためのコマンド等である。
一方、撮像装置1000は、これらのコマンドに対するレスポンスや撮像画像のストリームをクライアント装置2000に送信する。また、撮像装置1000は、クライアント装置2000から受信した画角を変更するためのコマンドに応じて画角を変更する。
続いて、図2は、本実施例に係る撮像装置1000のハードウェア構成の一例を示す図である。図2における撮像光学系2は、撮像装置1000により撮像される被写体の像を赤外光遮断フィルタ4(Infrared Cut Filter;以下、IRCFと称することがある)を介して撮像素子6に結像する。
赤外光を遮断するIRCF4は、IRCF駆動回路24からの駆動信号に基づき、不図示の駆動機構により、撮像光学系2と撮像素子6との間の光路に対して挿脱される。この撮像素子6は、CCDやCMOS等から構成される。そして、撮像素子6は、撮像光学系2により結像された被写体の像を撮像する。さらに、撮像素子6は、撮像した被写体の像を光電変換することにより、撮像画像を出力する。
なお、本実施例における撮像素子6は、撮像光学系2により結像された被写体の像を撮像する撮像部に相当する。
映像信号処理回路8は、後述する中央演算処理回路(以下、CPUと称することがある)26の指示に従って、撮像素子6から出力された撮像画像の輝度信号のみ、又は、撮像素子6から出力された撮像画像の輝度信号及び色差信号を、符号化回路10に出力する。また、映像信号処理回路8は、CPU26の指示に従って、撮像素子6から出力された撮像画像の輝度信号を輝度測定回路18に出力する。
符号化回路10は、映像信号処理回路8から輝度信号だけが出力された場合には、この出力された輝度信号を圧縮符号化し、圧縮符号化した輝度信号を撮像画像としてバッファ12に出力する。一方、符号化回路10は、映像信号処理回路8から輝度信号及び色差信号が出力された場合には、この出力された輝度信号及び色差信号を圧縮符号化し、圧縮符号化した輝度信号及び色差信号を撮像画像としてバッファ12に出力する。
バッファ12は、符号化回路10から出力された撮像画像をバッファする。そして、バッファ12は、バッファした撮像画像を通信回路(以下、I/Fと称することがある)14に出力する。このI/F14は、バッファ12から出力された撮像画像をパケット化し、パケット化した撮像画像を通信端子16経由でクライアント装置2000に送信する。ここで、通信端子16は、LANケーブルが接続されるLAN端子等で構成される。
なお、I/F14は、IRCF4の挿脱に関するコマンドを外部のクライアント装置2000から受信する受信部に相当する。
輝度測定回路18は、映像信号処理回路8から出力される輝度信号に基づき、撮像装置1000の現在の被写体の輝度値を測定する。そして、輝度測定回路18は、測定した輝度値を判定回路20に出力する。判定回路20は、輝度測定回路18から出力された被写体の輝度値と、CPU26から設定された被写体の輝度の閾値とを比較し、この比較の結果をCPU26に出力する。
計時回路22は、CPU26から遅延時間を設定される。また、計時回路22は、CPU26からの計時の開始の指示に従い、この指示を受けてから経過した時間を計時する。そして、計時回路22は、この設定された遅延時間が経過した場合、遅延時間が経過したことを示す信号をCPU26に出力する。
IRCF駆動回路24は、CPU26の指示を受け、撮像光学系2の光路からIRCF4を抜去する。また、IRCF駆動回路24は、CPU26の指示を受け、撮像光学系2の光路にIRCF4を挿入する。なお、本実施例におけるIRCF駆動回路24は、撮像光学系2の光路に対してIRCF4を挿脱する挿脱部に相当する。
CPU26は、撮像装置1000の各構成要素を統括的に制御する。また、CPU26は、データを電気的に消去可能な不揮発性メモリ(Electrically Erasable Programmable Read Only Memory;以下、EEPROMと称することがある)28に記憶されたプログラムを実行する。又は、CPU26は、ハードウェアを用いて制御を行うこととしても良い。
CPU26は、撮像光学系2の光路に対するIRCF4の挿入を指示するための挿入指示コマンドがI/F14で受信された場合、I/F14で適切なパケット処理が施された挿入指示コマンドが入力される。次に、CPU26は、入力された挿入指示コマンドを解析する。そして、CPU26は、この解析の結果に基づいてIRCF駆動回路24に指示し、撮像光学系2の光路にIRCF4を挿入させる。
ここで、本実施例では、撮像光学系2の光路にIRCF4が挿入された状態で、撮像装置1000が被写体を撮像することを、可視光撮像(通常の撮像)と称する。つまり、可視光撮像では、撮像装置1000は、被写体からの光をIRCF4経由で撮像素子6に入射させた状態で、この被写体を撮像することになる。
なお、撮像装置1000により可視光撮像が行われる場合には、CPU26は、撮像素子6から出力される撮像画像の色再現性を重視し、映像信号処理回路8に指示し、輝度信号及び色差信号を符号化回路10に出力させる。この結果、I/F14は、カラー撮像画像を配信する。よって、本実施例では、撮像装置1000により可視光撮像が行われている場合を、撮像装置1000の撮像モードがカラーモードであると称することがある。
また、CPU26は、撮像光学系2の光路からのIRCF4の抜去を指示するための抜去指示コマンドがI/F14で受信された場合、I/F14で適切なパケット処理が施された抜去指示コマンドが入力される。次に、CPU26は、入力された抜去指示コマンドを解析する。そして、CPU26は、この解析の結果に基づいてIRCF駆動回路24に指示し、撮像光学系2の光路からIRCF4を抜去させる。
ここで、本実施例では、撮像光学系2の光路からIRCF4が抜去された状態で、撮像装置1000が被写体を撮像することを、赤外光撮像と称する。つまり、赤外光撮像では、撮像装置1000は、被写体からの光を、IRCF4を介することなく、撮像素子6に入射させた状態で、この被写体を撮像することになる。
なお、撮像装置1000により赤外光撮像が行われる場合には、CPU26は、撮像素子6から出力される撮像画像のカラーバランスが崩れるため、映像信号処理回路8に指示し、輝度信号だけを符号化回路10に出力させる。この結果、I/F14は、白黒撮像画像が配信する。よって、本実施例では、撮像装置1000により赤外光撮像が行われている場合を、撮像装置1000の撮像モードが白黒モードであると称することがある。
そして、CPU26は、撮像光学系2の光路に対するIRCF4の挿脱を撮像装置1000に自動で制御させるための自動挿脱コマンドがI/F14で受信された場合、I/F14で適切なパケット処理が施された自動挿脱コマンドが入力される。次に、CPU26は、入力された自動挿脱コマンドを解析する。
ここで、自動挿脱コマンドは、IRCF4の挿脱に関する調整パラメータを記述可能である。なお、この調整パラメータは、省略することもできる。また、この調整パラメータとは、例えば、輝度値を示すパラメータである。CPU26は、I/F14から入力された自動挿脱コマンドに輝度値を示すパラメータが記述されていた場合には、この記述されていたパラメータに対応する輝度閾値を判定回路20に設定する。
一方、CPU26は、I/F14から入力された自動挿脱コマンドに輝度値を示すパラメータが記述されていない場合には、EEPROM28に予め記憶されていた輝度閾値をEEPROM28から読み出し、読み出した輝度閾値を判定回路20に設定する。
例えば、CPU26は、判定回路20により現在の被写体の輝度がCPU26から設定された輝度閾値を上回っていると判定された場合には、IRCF駆動回路24に指示し、撮像光学系2の光路にIRCF4を挿入させる。
一方、CPU26は、判定回路20により現在の被写体の輝度がCPU26から設定された輝度閾値を上回っていないと判定された場合には、IRCF駆動回路24に指示し、撮像光学系2の光路からIRCF4を抜去させる。
さらに、このIRCF4の挿脱に関する調整パラメータは、例えば、遅延時間を示すパラメータである。CPU26は、I/F14から入力された自動挿脱コマンドに遅延時間を示すパラメータが記述されていた場合には、この記述されていたパラメータに対応する遅延時間を計時回路22に設定する。
一方、CPU26は、I/F14から入力された自動挿脱コマンドに遅延時間を示すパラメータが記述されていない場合には、EEPROM28に予め記憶されていた遅延時間をEEPROM28から読み出し、読み出した遅延時間を計時回路22に設定する。
例えば、CPU26は、判定回路20により現在の被写体の輝度がCPU26から設定された輝度閾値を上回っていると判定された場合には、計時回路22に指示し、計時を開始させる。そして、CPU26は、遅延時間が経過したことを示す信号を計時回路22から入力された場合には、IRCF駆動回路24に指示し、撮像光学系2の光路にIRCF4を挿入させる。
或いは、CPU26は、判定回路20により現在の被写体の輝度がCPU26から設定された輝度閾値を上回っていないと判定された場合には、計時回路22に指示し、計時を開始させる。そして、CPU26は、遅延時間が経過したことを示す信号を計時回路22から入力された場合には、IRCF駆動回路24に指示し、撮像光学系2の光路からIRCF4を抜去させる。
なお、CPU26は、I/F14から入力された自動挿脱コマンドに遅延時間を示すパラメータが記述されていない場合には、「0」を示す遅延時間を計時回路22に設定しても良く、又は、遅延時間を計時回路22に設定しなくても良い。これにより、CPU26は、判定回路20の判定結果に応じて即座に、IRCF駆動回路24に指示し、IRCF4を挿脱させることができる。
なお、本実施例における自動挿脱コマンドは、被写体の輝度に関する輝度値が記述可能な調整コマンドに相当する。
続いて、図3は、本実施例に係る、クライアント装置2000のハードウェア構成の一例を示す図である。なお、本実施例におけるクライアント装置2000は、IPネットワーク網1500に接続されるコンピュータ装置として構成されており、典型的には、パーソナルコンピュータ(以下、PCと称することがある)などの汎用コンピュータである。
図3におけるCPU426は、クライアント装置2000の各構成要素を統括的に制御する。また、CPU426は、後述のメモリ428に記憶されたプログラムを実行する。又は、CPU426は、ハードウェアを用いて制御を行うこととしてもよい。そして、メモリ428は、CPU426が実行するプログラム格納領域、プログラム実行中のワーク領域、データの格納領域として使用される。
デジタルインターフェース部(以下、I/Fと称することがある)414は、CPU426の指示を受け、撮像装置1000にコマンド等を通信端子416経由で送信する。又、I/F414は、撮像装置1000から、コマンドのレスポンスやストリーミング配信された撮像画像等を通信端子416経由で受信する。なお、通信端子416は、LANケーブルが接続されるLAN端子等で構成される。
入力部408は、例えば、ボタン、十字キ―、タッチパネル、マウスなどで構成される。この入力部408は、ユーザからの指示の入力を受け付ける。例えば、入力部408は、ユーザからの指示として、撮像装置1000に対する各種のコマンドの送信指示の入力を受け付けることができる。
また、入力部408は、ユーザから撮像装置1000に対する命令送信指示が入力されると、CPU426にこの入力があった旨を通知する。そして、CPU426は、入力部408に入力された指示に応じて、撮像装置1000に対する命令を生成する。次に、CPU426は、デジタルインターフェース部(以下、I/Fと称することがある)414に指示し、生成した命令を撮像装置1000に送信させる。
さらに、入力部408は、CPU426がメモリ428に記憶されたプログラムを実行することにより生成されるユーザへの問い合わせメッセージ等に対するユーザの応答の入力を受け付けることができる。
ここで、CPU426は、I/F414から出力された撮像画像を復号し且つ伸長する。そして、CPU426は、この復号し且つ伸長された撮像画像を表示部422に出力する。これにより、表示部422は、CPU426から出力された撮像画像に対応する画像を表示する。
なお、表示部422は、制御部2001が記憶部2002に記憶されたプログラムを実行することにより生成されるユーザへの問い合わせメッセージ等を表示させることができる。また、本実施例における表示部422としては、液晶表示装置、プラズマ・ディスプレイ表示装置、ブラウン管などの陰極線管(以下CRTと称することがある)表示装置などを用いることができる。
以上、撮像装置1000及びクライアント装置2000のそれぞれの内部構成について説明したが、図2及び図3に示す処理ブロックは、本発明における撮像装置及び外部装置の好適な実施例を説明したものであり、この限りではない。音声入力部や音声出力部を備えるなど、本発明の要旨の範囲内で、種々の変形及び変更が可能である。
続いて、図4は、本実施例に係る撮像装置1000における、輝度閾値と遅延時間パラメータとが設定された場合の動作を説明するためのものである。図4におけるグラフ101は、撮像装置1000の被写体の輝度の時間的変化を示す。このグラフ101は、日暮れの時間帯では、時間が経過するに連れて被写体の輝度が低下していき、また日の出の時間帯では、時間が経過していくに連れて被写体の輝度が上昇していくことを示している。
輝度閾値102は、撮像光学系2の光路にIRCF4を挿入するか抜去するかを判定するために用いられる輝度閾値を示す。
なお、本実施例では、自動挿脱コマンドに記述される輝度閾値は、所定の範囲の値に正規化されている。具体的には、この輝度閾値は、−1.0から+1.0までの値に制限されている。よって、図4に示すように、輝度閾値102の指定可能な範囲は、−1.0から+1.0までの範囲になる。
例えば、図4に示すように、被写体の輝度値が低下することによりこの輝度値が輝度閾値102を下回ると、CPU26は、計時回路22に遅延時間を設定するとともに、計時回路22に計時の開始を指示する。これにより、計時回路22は、計時を開始する。
図4では、点Aにおいて被写体の輝度値が輝度閾値102を下回っている。この下回ったときの時刻は、t1である。CPU26は、この下回ったときに計時回路22に遅延時間を設定しており、設定した遅延時間が経過するまでは、撮像光学系2の光路にIRCF4を挿入させたまま、この光路からIRCF4を抜去させない。
このようなCPU26の動作により、グラフ101が輝度閾値103を頻繁に交差しても、撮像装置1000の可視光撮像と赤外光撮像とが頻繁に切り替わってしまうことを防止することができる。また、このような動作により、被写体の輝度値が輝度閾値103を安定的に下回る確率を上げることができる。このような動作は、蛍光灯などの照明のフリッカの影響がある場合にも有効である。
そして、CPU26は、計時回路22に設定された遅延時間が経過することにより時刻がt2になると、IRCF駆動回路24に指示し、撮像光学系2の光路からIRCF4を抜去させる。これにより、撮像装置1000は、赤外光撮像を行う。このとき(時刻t2)の被写体の輝度値は、点Bである。
これまでに述べたように、本実施例では、ユーザは、クライアント装置2000を操作することにより、IRCF4の挿脱に関する調整パラメータが記述された自動挿脱コマンドを撮像装置1000に送信させることができる。ここで、この調整パラメータは、被写体の輝度を示すパラメータや遅延時間を示すパラメータを含む。
これにより、この自動挿脱コマンドを受信した撮像装置1000は、被写体の輝度値が輝度閾値の付近である場合でも、撮像光学系2の光路に対するIRCF4の挿脱が頻繁に行われてしまうことを防止することができる。また、この撮像装置1000は、照明のフリッカなどにより、被写体の輝度が頻繁に変化する場合でも、撮像光学系2の光路に対するIRCF4の挿脱が頻繁に行われてしまうことを防止することができる。
続いて、図5は、本実施例に係る撮像装置1000とクライアント装置2000との間における、IRCF4の挿脱に関する調整パラメータを設定するための、典型的なコマンドのシーケンスを説明するためのシーケンス図である。なお、図5では、ITU−T Recommendation Z.120規格で定義される、いわゆるメッセージ・シークエンス・チャートを用いてこのコマンドのトランザクションを記述している。
なお、本実施例におけるトランザクションとは、クライアント装置2000から撮像装置1000へ送信されるコマンドと、それに対して撮像装置1000がクライアント装置2000へ返送するレスポンスのペアのことを指している。また、図5において、撮像装置1000とクライアント装置2000とは、IPネットワーク網1500を介して接続されているものとする。
次に、GetServicesのトランザクションにより、クライアント装置2000は、撮像装置1000がサポート(提供)しているWebサービスの種類と各Webサービスを利用するためのアドレスURIを取得することができる。
具体的には、クライアント装置2000は、GetServicesのコマンドを撮像装置1000に送信する。このコマンドにより、クライアント装置2000は、撮像装置1000が自動挿脱コマンド等を実行することができるか否かを判定するため、撮像装置1000がImagingServiceをサポートしているか否かを示す情報を取得することができる。
一方、このコマンドを受信した撮像装置1000は、このコマンドのレスポンスを返送する。本実施例において、このレスポンスは、撮像装置1000がImagingServiceをサポートしていることを示す。なお、ImagingServiceとは、IRCF4の挿脱に関する設定などを行うためのサービスである。
次に、GetVideoSourcesのトランザクションにより、クライアント装置2000は、撮像装置1000が保持するVideoSourceのリストを取得する。
ここで、VideoSourceとは、撮像装置1000が備える1つの撮像素子6の性能を示すパラメータの集合体である。例えば、VideoSourceは、VideoSourceのIDであるVideoSourceTokenと、撮像素子6が出力することができる撮像画像の解像度を示すResolutionと、を含む。
クライアント装置2000は、GetVideoSourcesのコマンドを撮像装置1000に送信する。このコマンドにより、クライアント装置2000は、IRCF4の挿脱に関する設定を行うことができるVideoSourceを示すVideoSourceTokenを取得することができる。
そして、GetVideoSourcesコマンドを受信した撮像装置1000は、このコマンドのレスポンスをクライアント装置2000に返送する。本実施例において、このレスポンスは、撮像素子6に対応するVideoSourceを示すVideoSourceTokenを含む。
次に、GetOptionsのトランザクションにより、クライアント装置2000は、挿入コマンド、抜去コマンド、及び自動挿脱コマンドのうち、撮像装置1000が実行することできるコマンドを示す情報を、撮像装置1000から取得することができる。また、このトランザクションにより、クライアント装置2000は、自動挿脱コマンドに記述可能な調整パラメータを示す情報を取得することができる。
クライアント装置2000は、GetOptionsのコマンドを撮像装置1000(より詳細には、撮像装置1000のImagingServiceを利用するためのアドレスURI)に送信する。このコマンドは、撮像装置1000から受信したGetVideoSourceのレスポンスに含まれるVideoSourceTokenを含む。
一方、このコマンドを受信した撮像装置1000は、このコマンドのレスポンスをクライアント装置2000に返信する。本実施例では、このレスポンスは、IRCutFilterOptionsを含む。
このIRCutFilterOptionsには、挿入コマンド、抜去コマンド、及び自動挿脱コマンドのうち、撮像装置1000が実行することができるコマンドを示す情報が記述されている。更に、このIRCutFilterOptionsには、自動挿脱コマンドに記述可能な調整パラメータのうち、撮像装置1000が実行(設定)することができる調整パラメータを示す情報が記述されている。
次に、GetImagingSettingsのトランザクションにより、クライアント装置2000は、撮像光学系2の光路に対するIRCF4の挿脱の状態を示す情報を、撮像装置1000から取得することができる。
クライアント装置2000は、GetImagingSettingsのコマンドを、撮像装置1000のImagingServiceを利用するためのアドレスURIに送信する。このコマンドは、撮像装置1000から受信したGetVideoSourceのレスポンスに含まれるVideoSourceTokenを含む。
一方、このコマンドを受信した撮像装置1000は、このコマンドのレスポンスを返信する。本実施例では、このレスポンスは、IRCutFilter Settingsを含む。
このIRCutFilter Settingsには、撮像光学系2の光路にIRCF4が現在挿入されているのか、それともこの光路からIRCF4が現在抜去されているのかを示す情報が記述されている。本実施例では、このIRCutFilterSettingsには、撮像光学系2の光路にIRCF4が現在挿入されていることを示す情報が記述されている。
次に、SetImagingSettingsのトランザクションにより、クライアント装置2000は、撮像光学系2の光路に対するIRCF4の挿脱を撮像装置1000に自動で制御させる。
クライアント装置2000は、SetImagingSettingsのコマンドを、撮像装置1000のImagingSerivesを利用するためのアドレスURIに送信する。このコマンドは、撮像装置1000から受信したGetVideoSourceのレスポンスに含まれるVideoSourceTokenを含む。
更に、このコマンドには、撮像光学系2の光路に対するIRCF4の挿脱を撮像装置1000に自動で制御させることを示す情報(値が「AUTO」のIrCutFilterフィールド)が記述されている。その上、このコマンドには、調整パラメータ(IrCutFilterAutoAdjustmentフィールド)が記述されている。
なお、IrCutFilterフィールドやIrCutFilterAutoAdjustmentフィールドについては、後述する。
一方、このコマンドを受信した撮像装置1000は、SetImagingSettingsのレスポンスをクライアント装置2000に返信する。このレスポンスの引数は、省略されている。ここで、引数が省略されたこのレスポンスは、撮像装置1000によるこのコマンドの実行が成功したことを示す。
これにより、撮像装置1000は、撮像光学系2の光路にIRCF4挿入するのか、それとも撮像光学系2の光路からIRCF4を抜去するのかを自動で判定する。
続いて、図6は、本実施例に係る撮像装置1000における、GetOptionsResponse送信処理を説明するためのフローチャートである。なお、この処理は、CPU26により実行される。そして、CPU26は、クライアント装置2000からI/F14を介してGetOptionsのコマンドを受信した場合に、この処理の実行を開始する。
以下、図6に示すフローチャートを、図7(a)を適宜参照しながら説明する。ここで、図7(a)は、図6のGetOptionsResponse送信処理で送信されるGetOptionsResponseの一例を示す図である。
ステップS601では、CPU26は、GetOptionsレスポンスを生成し、生成したGetOptionsのレスポンスをEEPROM28に記憶させる。
ステップS602では、CPU26は、ステップS601でEEPROM28に記憶させたGetOptionsレスポンスのIrCutFilterModesフィールドの値に、ON、OFF、及びAUTOに設定する。
これにより、図7(a)に示すように、GetOptionsレスポンスにおける<ImagingOptions20>タグには、3つの<img20:IrCutFilterModes>タグが対応付けられる。更に、この3つの<Img20:IrCutFilterModes>タグのそれぞれは、ON、OFF、AUTOが対応付けられる。
なお、値がONのIrCutFilterModesフィールドは、撮像装置1000が挿入指示コマンドを受け付け可能であることを示す。また、値がOFFのIrCutFilterModesフィールドは、撮像装置1000が抜去指示コマンドを受け付け可能であることを示す。更に、値がAUTOのIrCutFilterModesフィールドは、撮像装置1000が自動挿脱コマンドを受け付け可能であることを示す。
ステップS603では、CPU26は、ステップS601でEEPROM28に記憶させたGetOptionsレスポンスのModeフィールドの値に、Common、ToOn、及びToOffを設定できる。
これにより、図7(a)に示すように、GetOptionsレスポンスにおける<IrCutFilterAutoAdjustmentOptions>タグには、3つの<Img20:Mode>が対応付けられる。更に、この3つの<Img20:Mode>タグのそれぞれは、Common、ToOn、ToOffが対応付けられる。ここで、図7(b)では本実施例における撮像装置1000に設定できる項目がCommonのみの場合を示している。
なお、値がToOnのModeフィールドは、撮像装置1000が、撮像光学系2の光路にIRCF4を挿入するか否かの判定に調整パラメータを用いることができることを示す。また、値がToOffのModeフィールドは、撮像装置1000が、撮像光学系2の光路からIRCF4を抜去するか否かの判定に調整パラメータを用いることができることを示す。
更に、値がCommonのModeフィールドは、撮像装置1000が、撮像光学系2の光路にIRCF4を挿入するか否かの判定、及びこの光路からIRCF4を抜去するか否かの判定のそれぞれについて、共通で調整パラメータを用いることができることを示す。
例えば、値がCommonのModeフィールドが記述され、値がToOnのModeフィールド及び値がToOffのModeフィールドが記述されていないGetOptionsレスポンスは、次のようなことを示す。
つまり、撮像光学系2の光路にIRCF4を挿入する場合及び撮像光学系2の光路からIRCF4を抜去する場合のそれぞれについて、撮像装置1000により用いられる調整パラメータを共通で設定することができることである。
また、例えば、値がCommonのModeフィールドが記述されておらず、値がToOnのModeフィールド及び値がToOffのModeフィールドが記述されたGetOptionsレスポンスは、次のようなことを示す。
つまり、撮像光学系2の光路にIRCF4を挿入する場合及び撮像光学系2の光路からIRCF4を抜去する場合のそれぞれについて、撮像装置1000により用いられる調整パラメータを別々に設定することができることである。
ステップS604では、CPU26は、ステップS601でEEPROM28に記憶させたGetOptionsレスポンスのBoundaryOffsetフィールドの値に、trueを設定する。更に、CPU26は、ステップS601でEEPROM28に記憶させたGetOptionsレスポンスのMinフィールドの値に、PT0Sを設定し、このレスポンスのMaxフィールドの値にPT30Mを設定する。
これにより、図7(a)に示すように、GetOptionsレスポンスにおける<IrCutFilterAutoAdjustmentOptions>タグには、<img20:BoundaryOffset>タグが対応付けられる。更に、この<IrCutFilterAutoAdjustmentOptions>タグには、<img20:ResponseTime>タグが対応付けられる。
そして、この<img20:BoundaryOffset>タグには、trueが対応付けられる。また、この<img20:ResponseTime>タグには、<img20:Min>タグ及び<img20:Max>タグが対応付けられる。ここで、この<img20:Min>タグには、PT0Sが対応付けられる。また、この<img20:Max>タグには、PT30Mが対応付けられる。
なお、値がtrueのBoundaryOffsetフィールドは、撮像装置1000にBoundaryOffsetを設定することができることを示す。また、<img20:Min>タグは、ResponseTimeフィールドに設定することができる時間の最小値(最短時間)を示す。そして、<img20:Max>タグは、ResponseTimeフィールドに設定することができる時間の最大値(最長時間)を示す。
つまり、<img20:Min>及び<img20:Max>は、ResponseTimeフィールドに設定することができる時間の範囲を示す。
ステップS605では、CPU26は、I/F14に指示し、ステップS601でEEPROM28に記憶させたGetOptionsレスポンスをクライアント装置2000に送信させる。以上が図6の説明になる。以降は本実施形として図7(b)のようにIrCutFilterAutoAdjustmentOptionがCommonのみ設定できる撮像装置を例に説明していく。
続いて、図8は、SetImagingSettingsコマンドの構成の一例を示す図である。図8(a)に示すSetImagingSettingsでは、IrCutFilterフィールドの値にAUTOが設定されている。より詳細には、このSetImagingSettingsのコマンドにおいて、<IrCutFilter>タグには、AUTOが対応づけられている。
これにより、図8(a)に示すSetImagingSettingsのコマンドは、撮像光学系2の光路に対するIRCF4の挿脱を撮像装置1000に自動で制御させるための自動挿脱コマンドに相当することになる。
また、図8(a)に示すSetImagingSettingsのコマンドでは、BoundaryTypeフィールドの値にCommonが設定されている。
より詳細には、このSetImagingSettingsのコマンドにおいて、<IrCutFilterAutoAdjustment>タグには、<BoundaryType>タグが対応付けられている。さらに、この<BoundaryType>タグには、Commonの値が対応付けられている。
そして、図8(a)に示すSetImagingSettingsのコマンドでは、BoundaryOffsetフィールドの値に0.52が設定されている。
より詳細には、このSetImagingSettingsのコマンドにおいて、<IrCutFilterAutoAdjustment>タグには、<BoundaryOffset>タグが対応付けられている。さらに、この<BoundaryOffset>タグには、0.52が対応付けられている。
さらに、図8(a)に示すSetImagingSettingsのコマンドでは、ResponseTimeフィールドの値にPT1M15Sが設定されている。
より詳細には、このSetImagingSettingsのコマンドにおいて、<IrCutFilterAutoAdjustment>タグには、<ResponsTime>タグが対応付けられている。この<ResponsTime>タグには、PT1M15Sが対応付けられている。
これにより、図8(a)に示すSetImagingSettingsコマンドは、次のようなことを撮像装置1000に指示するためのコマンドと言える。即ち、撮像光学系2の光路にIRCF4を挿入する場合及びこの光路からIRCF4を抜去する場合のそれぞれについて、BounaryOffsetフィールドの値及びResponseTimeフィールドの値を撮像装置1000に共通で用いさせることである。
続いて、図8(b)に示すSetImagingSettingsでは、IrCutFilterフィールドの値にAUTOが設定されている。より詳細には、このSetImagingSettingsのコマンドにおいて、<IrCutFilter>タグには、AUTOが対応付けられている。
また、図8(b)に示すSetImagingSettingのコマンドには、2つのIrCutFilterAutoAdjustmentフィールドが記述されている。ここで、1つ目のIrCutFilterAutoAdjustmentフィールドにおけるBoundaryTypeフィールドの値は、ToOnに設定されている。
より詳細には、このSetImagingSettingsのコマンドにおいて、1つ目の<IrCutFilterAutoAdjustment>タグには、<BoundaryType>タグが対応付けられている。そして、この<BoundaryType>タグには、ToOnが対応付けられている。
そして、図8(b)に示すSetImagingSettingsのコマンドにおいて、1つ目のIrCutFilterAutoAdjustmentフィールドにおけるBoundaryOffsetフィールドの値は、0.16に設定されている。
より詳細には、このSetImagingSettingsのコマンドにおいて、1つ目の<IrCutFilterAutoAdjustment>タグには、<BoundaryOffset>タグが対応付けられている。そして、この<BoundaryOffset>タグには、0.25が対応付けられている。
さらに、図8(b)に示すSetImagingSettingsのコマンドにおいて、1つ目のIrCutFilterAutoAdjustmentフィールドにおけるResponseTimeの値は、PT1M30Sに設定されている。
次に、図8(b)に示すSetImagingSettingsのコマンドにおいて、2つ目のIrCutFilterAutoAdjustmentフィールドにおけるBoundaryTypeフィールドの値は、ToOffに設定されている。
より詳細には、このSetImagingSettingsのコマンドにおいて、2つ目の<IrCutFilterAutoAdjustment>タグには、<BoundaryType>タグが対応付けられている。そして、この<BoundaryType>タグには、ToOffが対応付けられている。
また、図8(b)に示すSetImagingSettingsのコマンドにおいて、2つ目のIrCutFilterAutoAdjustmentフィールドにおけるBoundaryOffsetフィールドの値は、0.25に設定されている。
より詳細には、このSetImagingSettingsのコマンドにおいて、2つ目の<IrCutFilterAutoAdjustment>タグには、<BoundaryOffset>タグが対応付けられている。そして、この<BoundaryOffset>タグには、0.25が対応付けられている。
そして、図8(b)に示すSetImagingSettingsのコマンドにおいて、2つ目のIrCutFilterAutoAdjustmentフィールドにおけるResponseTimeフィールドの値は、PT1M10Sに設定されている。
より詳細には、このSetImagingSettingsのコマンドにおいて、2つ目の<IrCutFilterAutoAdjustment>タグには、<ResponseTime>タグが対応付けられている。そして、この<ResponseTime >タグには、PT1M10Sが対応付けられている。
これにより、図8(b)に示すSetImagingSettingsコマンドは、次のようなことを撮像装置1000に指示するためのコマンドと言える。即ち、撮像光学系2の光路にIRCF4を挿入する場合及びこの光路からIRCF4を抜去する場合のそれぞれについて、BounaryOffsetフィールドの値及びResponseTimeフィールドの値を撮像装置1000に別々に用いさせることである。
このように、図8(b)に示すSetImagingSettingsのコマンドでは、値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値は、0.16である。そして、図8(b)に示すSetImagingSettingsのコマンドでは、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値は、0.25である。
つまり、値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値は、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値よりも小さい。
続いて、図9は、本実施例に係る撮像装置1000における、SetImagingSettings受信処理を説明するためのフローチャートである。
なお、この処理は、CPU26により実行される。そして、CPU26は、クライアント装置2000からI/F14を介してSetImagingSettingsのコマンドを受信した場合に、この処理の実行を開始する。また、I/F14により受信されたSetImagingSettingsのコマンドは、EEPROM28に記憶されるものとする。
ステップS901では、CPU26は、SetImagingSettingsのコマンドをEEPROM28から読み出す。
ステップS902では、CPU26は、ステップS901で読み出したコマンドにおいて、値がCommonのBoundaryTypeフィールドに記述されているか否かを判定する。
そして、CPU26は、値がCommonのBoundaryTypeフィールド及に記述されていると判定した場合には、ステップS903に処理を進める。一方、CPU26は、値がCommonのBoundaryTypeフィールドに記述されていないと判定した場合には、ステップS907に処理を進める。
なお、CPU26は、ステップS901で読み出したコマンドにおいて、値がToOn又はToOffのBoundaryTypeフィールドに記述されていると判定した場合に、ステップS907に処理を進めても良い。
また、本実施例におけるCPU26は、撮像光学系2の光路にIRCF4を挿入する場合及びこの光路からIRCF4を抜去する場合の輝度値が記述されているのかを判定する記述判定部に相当する。
ステップS903では、CPU26は、ステップS901で読み出したコマンドにおいて、値がCommonのBoundarTypeフィールドに対応するBoundaryOffsetフィールドの値を読み出す。図8(a)に示すコマンドの場合、CPU26は、値がCommonのBoundarTypeフィールドに対応するBoundaryOffsetフィールドの値として、0.52を読み出す。
ステップS904では、CPU26は、ステップS901で読み出したコマンドにおいて、値がCommonのBoundaryTypeフィールドに対応するResponseTimeフィールドの値を読み出す。図8(a)に示すコマンドの場合、CPU26は、値がCommonのBoundaryTypeフィールドに対応するResponseTimeの値として、1M15Sを読み出す。
ステップS905では、CPU26は、ステップS903で読み出した値を撮像装置1000に設定できるBoundaryOffset値に変換する。撮像装置1000に設定できるBoundaryOffset値とは、あらかじめ決められた撮像装置1000で設定可能な値を指す。例として図10(a)に本実施例における撮像装置1000に設定可能な値を示す。図10(a)では撮像装置1000に対して設定できるBoundaryOffset値が、―1.0、−0.5、0、0.5、1の5種類である事を示している。ここで図8(a)ではBoundaryOffset値に0.52を設定しようとしている。このように図10(a)の設定可能なBoundaryOffset値には存在しない値を設定しようとした時はリクエストのBoundaryOffset値を変換する。変換する方法としては、例えば図10(b)のように予め決められたテーブルに沿って値を変換する方法がある。
ステップS906では、CPU26は、ステップS904で読み出した値を撮像装置1000に設定できるResponseTime値に変換する。撮像装置1000に設定できるResponseTime値とは、あらかじめ決められた撮像装置1000で設定可能な値を指す。例として図11(a)に本実施例における撮像装置1000に設定可能な値を示す。図11(a)では撮像装置1000に対して設定できるResponseTime値が、1S、10S、30S、1M、3Mの5種類である事を示している。ここで図8(a)ではResponseTime値に1M15Sを設定しようとしている。このように図11(a)の設定可能なResponseTime値には存在しない値を設定しようとした時はリクエストのResponseTime値を変換する。変換する方法としては、例えば図11(b)のように予め決められたテーブルに沿って値を変換する方法がある。
ステップS908では、CPU26は、I/F14に指示し、SetImagingSettingsのレスポンスをクライアント装置2000に送信させる。本実施例では以上の手順によって撮像装置1000に対してクライアント装置2000からの設定が反映される。
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施携帯に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
上述した実施例の各機能ブロック又は幾つかの機能ブロックは、必ずしも個別のハードウェアである必要はない。例えばいくつかの機能ブロックの機能は、1つのハードウェアにより実行されても良い。また、いくつかのハードウェアの連係動作により1つの機能ブロックの機能または複数の機能ブロックの機能が実行されても良い。
上述の実施例は、システム或は装置のコンピュータ(或いはCPU、MPU等)によりソフトウエア的に実現することも可能である。従って、上述の実施例をコンピュータで実現するために、該コンピュータに供給されるコンピュータプログラム自体も本発明を実現するものである。つまり、上述の実施例の機能を実現するためのコンピュータプログラム自体も本発明の一つである。
なお、上述の実施形態を実現するためのコンピュータプログラムは、コンピュータで読み取り可能であれば、どのような形態であってもよい。例えば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等で構成することができるが、これらに限るものではない。上述の実施例を実現するためのコンピュータプログラムは、記憶媒体又は有線/無線通信によりコンピュータに供給される。プログラムを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、磁気テープ等の磁気記憶媒体、MO、CD、DVD等の光/光磁気記憶媒体、不揮発性の半導体メモリなどがある。
有線/無線通信を用いたコンピュータプログラムの供給方法としては、コンピュータネットワーク上のサーバを利用する方法がある。この場合、本発明を形成するコンピュータプログラムとなりうるプログラムファイルをサーバに格納しておく。プログラムファイルとしては、実行形式のものであっても、ソースコードであっても良い。そして、このサーバにアクセスしたクライアントコンピュータに、プログラムファイルをダウンロードすることによって供給する。この場合、プログラムファイルを複数のセグメントファイルに分割し、セグメントファイルを異なるサーバに分散して配置することも可能である。つまり、上述の実施例を実現するためのプログラムファイルをクライアントコンピュータに提供するサーバ装置も本発明を実施する手段たりうる。
また、上述の実施例を実現するためのコンピュータプログラムを暗号化して格納した記憶媒体を配布し、所定の条件を満たしたユーザに、暗号化を解く鍵情報を供給し、ユーザの有するコンピュータへのインストールを許可してもよい。鍵情報は、例えばインターネットを介してホームページからダウンロードさせることによって供給することができる。上述の実施例を実現するためのコンピュータプログラムは、コンピュータ上で稼働するOSの機能を利用するものであってもよい。さらに、上述の実施例を実現するためのコンピュータプログラムは、その一部をコンピュータに装着される拡張ボード等のファームウェアで構成してもよいし、拡張ボード等が備えるCPUで実行するようにしてもよい。