以下に、本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は、図示された構成に限定されるものではない。
また、以下の実施例における調整コマンド(以下コマンドと称することがある)は、例えばOpen Network Video Interface Forum(以下ONVIFと称することがある)規格に基づいて定められているものとする。そして、ONVIF規格では、例えば、XML Schema Definition言語(以下、XSDと称することがある)を用いることにより、このコマンドの定義を行う。
(実施例1)
以下に、図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を介して撮像素子6に結像する。
ここで、本実施例において光学フィルタ4は、赤外線を遮断する赤外遮断フィルタ(Infrared Cut Filter;以下、IRCFと称することがある)である。そして、光学フィルタ駆動回路24からの駆動信号に基づき、不図示の駆動機構(例えば電磁石を用いたプランジャなど)により、撮像光学系2と撮像素子6との間の光路に対して挿脱される。なお、ここで赤外線を遮断するとは赤外光を大幅に減衰するという意味であり、100%遮断するものでなくてもよい。
この撮像素子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は、光学フィルタ4の挿脱に関するコマンドを外部のクライアント装置2000から受信する受信部に相当する。
輝度測定回路18は、映像信号処理回路8から出力される輝度信号に基づき、撮像装置1000の現在の被写体の輝度値を測定する。そして、輝度測定回路18は、測定した輝度値を判定回路20に出力する。判定回路20は、輝度測定回路18から出力された被写体の輝度値と、CPU26から設定された被写体の輝度の閾値とを比較し、この比較の結果をCPU26に出力する。
計時回路22は、CPU26から遅延時間を設定される。また、計時回路22は、CPU26からの計時の開始の指示に従い、この指示を受けてから経過した時間を計時する。そして、計時回路22は、この設定された遅延時間が経過した場合、遅延時間が経過したことを示す信号をCPU26に出力する。
光学フィルタ駆動回路24は、CPU26の指示を受け、撮像光学系2の光路から光学フィルタ4を抜去する。また、光学フィルタ駆動回路24は、CPU26の指示を受け、撮像光学系2の光路に光学フィルタ4を挿入する。なお、本実施例における光学フィルタ駆動回路24は、撮像光学系2の光路に対して光学フィルタ4を挿脱する挿脱部に相当する。
CPU26は、撮像装置1000の各構成要素を統括的に制御する。また、CPU26は、データを電気的に消去可能な不揮発性メモリ(Electrically Erasable Programmable Read Only Memory;以下、EEPROMと称することがある)28に記憶されたプログラムを実行する。
なお、EEPROM28には撮像装置1000が動作するためのパラメータ、及びクライアント装置2000から受信したコマンド等を記憶させることができる。又は、CPU26は、ハードウェアを用いて制御を行うこととしても良い。なお、本実施例におけるCPU26は、光学フィルタ4を挿脱する光学フィルタ駆動回路24を制御する制御部に相当する。
また、本実施例においては、光学フィルタ4としてIRCFを用いたが、これに限られるものではない。例えば、光学フィルタ4として、入射光量を減光するNDフィルタや、透過光の行き先を変えるビームスプリッタや、特定の波長の光のみを透過するフィルタや、特定の偏光成分のみを透過する偏光フィルタ等の異なる光学フィルタを用いてもよい。
続いて、図3は、撮像光学系2の光路に対する光学フィルタ4の挿入または抜去を指示するための指示コマンドがI/F14で受信された場合において、CPU26が実行する処理を説明するためのフローチャートである。
ステップS301では、CPU26は、I/F14で適切なパケット処理が施された指示コマンドを受信したかどうかを判定する。そして、CPU26は指示コマンドを受信した場合に、ステップS302に処理を進め、受信していない場合にはステップS301に処理を戻す。
ステップS302では、CPU26は、入力された挿入指示コマンド(I/F14で受信されたコマンド)がどのようなコマンドであるかを解析する。
ステップS303では、CPU26は、ステップS302で解析された結果に基づいて挿入コマンドであるか否かを判定する。そして、CPU26は、挿入コマンドであると判定した場合に、ステップS304に処理を進める。一方、CPU26は、挿入コマンドでないと判定した場合に、ステップS305に処理を進める。
ステップS304では、CPU26は、光学フィルタ駆動回路24を制御し、撮像光学系2の光路に光学フィルタ4を挿入する。
ここで、本実施例では、撮像光学系2の光路に光学フィルタ4が挿入された状態で、撮像装置1000が被写体を撮像することを、可視光撮像(通常の撮像)と称する。つまり、可視光撮像では、撮像装置1000は、被写体からの光を光学フィルタ4経由で撮像素子6に入射させた状態で、この被写体を撮像することになる。
なお、撮像装置1000により可視光撮像が行われる場合には、CPU26は、撮像素子6から出力される撮像画像の色再現性を重視し、映像信号処理回路8に指示し、輝度信号及び色差信号を符号化回路10に出力させる。この結果、I/F14は、カラー撮像画像を配信する。よって、本実施例では、撮像装置1000により可視光撮像が行われている場合を、撮像装置1000の撮像モードがカラーモードであると称することがある。
ステップS305では、CPU26は、ステップS303で挿入コマンドでないと判定した場合に、ステップS302で解析された結果に基づいて抜去コマンドであるか否かを判定する。そして、CPU26は、抜去コマンドであると判定した場合に、ステップS306に処理を進める。一方、CPU26は、抜去コマンドでないと判定した場合に、ステップS307に処理を進める。
ステップS306では、CPU26は、光学フィルタ駆動回路24を制御し、撮像光学系2の光路に光学フィルタ4を抜去する。
ここで、本実施例では、撮像光学系2の光路から光学フィルタ4が抜去された状態で、撮像装置1000が被写体を撮像することを、赤外線撮像と称する。つまり、赤外線撮像では、撮像装置1000は、被写体からの光を、光学フィルタ4を介することなく、撮像素子6に入射させた状態で、この被写体を撮像することになる。
なお、撮像装置1000により赤外線撮像が行われる場合には、CPU26は、撮像素子6から出力される撮像画像のカラーバランスが崩れるため、映像信号処理回路8に指示し、輝度信号だけを符号化回路10に出力させる。この結果、I/F14は、白黒撮像画像を配信する。よって、本実施例では、撮像装置1000により赤外線撮像が行われている場合を、撮像装置1000の撮像モードが白黒モードであると称することがある。
ステップS307では、CPU26は、ステップS305で抜去コマンドでないと判定した場合に、ステップS302で解析された結果に基づいて自動挿脱コマンドに輝度閾値を示すパラメータが含まれるか否かを判定する。ここで、自動挿脱コマンドは光学フィルタ4の挿脱に関する調整値が記述され得る。
なお、この調整値は、省略することもできる。また、この調整値とは、例えば、輝度閾値を示すパラメータまたは、遅延時間を示すパラメータである。
そして、CPU26は、含まれると判定した場合に、ステップS308に処理を進め、コマンドに含まれたパラメータに対応する輝度閾値を判定回路20に設定する。
一方、CPU26は、含まれないと判定した場合に、ステップS309に処理を進め、EEPROM28に予め記憶されていたパラメータの中から輝度閾値を読み出し、判定回路20に設定する。
ステップS310では、CPU26は、ステップS302で解析された結果に基づいてコマンドに遅延時間を示すパラメータが含まれるか否かを判定する。そして、CPU26は、含むと判定した場合に、ステップS311に処理を進め、コマンドに含まれたパラメータに対応する遅延時間を計時回路22に設定する。
一方、CPU26は、含まれないと判定した場合に、ステップS312に処理を進め、EEPROM28に予め記憶されていたパラメータの中から遅延時間を読み出し、計時回路22に設定する。
そして、ステップS313で、CPU26は、光学フィルタ4が光路外に位置しているかどうかを判定する。そして、CPU26は、光路外にあると判定した場合にステップS314に処理を進める。一方、CPU26は、光路内にあると判定した場合に、ステップS315に処理を進める。
ステップS314では、CPU26は、ステップS313で光学フィルタ4が光路外にあると判定した場合に、判定回路20により現在の被写体の輝度がCPU26から設定された輝度閾値を上回っているか否かを判定する。そして、CPU26は、上回っていると判定した場合に、ステップS316に処理を進める。一方、CPU26は、上回っていないと判定した場合に、ステップS313に処理を戻す。
ステップS316では、CPU26は、計時回路22に指示し、計時を開始させ、ステップS318に処理を進める。
ステップS318では、CPU26は、遅延時間が経過したことを示す信号が計時回路22から入力される前に、判定回路20により現在の被写体の輝度がCPU26から設定された輝度閾値を上回っているか否かを判定する。CPU26は、上回っていると判定した場合に、ステップS320に処理を進める。一方、CPU26は、上回っていないと判定した場合に、ステップS313に処理を戻す。
ステップS320では、CPU26は、遅延時間が経過したことを示す信号を計時回路22から入力されるか否かを判定する。CPU26は、信号が入力された場合には、ステップS322に処理を進める。一方、CPU26は、経過していないと判定した場合に、ステップS313に処理を戻す。
そして、ステップS322では、光学フィルタ駆動回路24に指示し、撮像光学系2の光路に光学フィルタ4を挿入させる。
一方で、ステップS315では、CPU26は、ステップS313で光学フィルタ4が光路内にあると判定した場合に、判定回路20により現在の被写体の輝度がCPU26から設定された輝度閾値を下回っているか否かを判定する。そして、CPU26は、下回っていると判定した場合に、ステップS317に処理を進める。一方、CPU26は、下回っていないと判定した場合に、ステップS313に処理を戻す。
ステップS317では、CPU26は、計時回路22に指示し、計時を開始させ、ステップS319に処理を進める。
ステップS319では、CPU26は、遅延時間が経過したことを示す信号が計時回路22から入力される前に、判定回路20により現在の被写体の輝度がCPU26から設定された輝度閾値を下回っているか否かを判定する。CPU26は、下回っていると判定した場合に、ステップS321に処理を進める。一方、CPU26は、下回っていないと判定した場合に、ステップS313に処理を戻す。
ステップS321では、CPU26は、遅延時間が経過したことを示す信号を計時回路22から入力されるか否かを判定する。CPU26は、信号が入力された場合には、ステップS323に処理を進める。一方、CPU26は、経過していないと判定した場合に、ステップS313に処理を戻す。
そして、ステップS323では、光学フィルタ駆動回路24に指示し撮像光学系2の光路から光学フィルタ4を抜去させる。
続いて、図4は、本実施例に係る、クライアント装置2000のハードウェア構成の一例を示す図である。なお、本実施例におけるクライアント装置2000は、外部装置であって、IPネットワーク網1500に接続されるコンピュータ装置として構成されており、典型的には、パーソナルコンピュータ(以下、PCと称することがある)などの汎用コンピュータである。
図4におけるCPU426は、クライアント装置2000の各構成要素を統括的に制御する。また、CPU426は、後述のEEPROM428に記憶されたプログラムを実行する。又は、CPU426は、ハードウェアを用いて制御を行うこととしてもよい。そして、EEPROM428は、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がEEPROM428に記憶されたプログラムを実行することにより生成されるユーザへの問い合わせメッセージ等に対するユーザの応答の入力を受け付けることができる。
ここで、CPU426は、I/F414から出力された撮像画像を復号し且つ伸長する。そして、CPU426は、この復号し且つ伸長された撮像画像を表示部422に出力する。これにより、表示部422は、CPU426から出力された撮像画像に対応する画像を表示する。また、本実施例における表示部422としては、液晶表示装置、プラズマ・デスプレイ表示装置、ブラウン管などの陰極線管(以下CRTと称することがある)表示装置などを用いることができる。
以上、撮像装置1000及びクライアント装置2000のそれぞれの内部構成について説明したが、図2及び図4に示す処理ブロックは、本発明における撮像装置及び外部装置の好適な実施例を説明したものであり、この限りではない。音声入力部や音声出力部を備えるなど、本発明の要旨の範囲内で、種々の変形及び変更が可能である。また、光学フィルタ4として光学フィルタのみではなく、NDフィルタ等の異なる光学フィルタ種またはそれらの組み合わせを用いることも可能である。
続いて、図5は、本実施例に係る撮像装置1000における、輝度閾値と遅延時間パラメータとが設定された場合の動作を説明するためのものである。図5におけるグラフ101は、撮像装置1000の被写体の輝度の時間的変化を示す。このグラフ101は、日暮れの時間帯等のように、時間が経過するに連れて被写体の輝度が低下していくことを示している。
輝度閾値102は、撮像光学系2の光路に光学フィルタ4を挿入するか否かを判定するために用いられる輝度閾値を示す。また、輝度閾値103は、撮像光学系2の光路から光学フィルタ4を抜去するか否かを判定するために用いられる輝度閾値を示す。
なお、本実施例では、自動挿脱コマンドに記述される輝度閾値は、所定の範囲の値に正規化されている。具体的には、この輝度閾値は、−1.0から+1.0までの値に制限されている。よって、図5に示すように、輝度閾値102及び輝度閾値103の指定可能な範囲は、−1.0から+1.0までの範囲になる。
例えば、図5に示すように、被写体の輝度値が低下することによりこの輝度値が輝度閾値103を下回ると、CPU26は、計時回路22に遅延時間を設定するとともに、計時回路22に計時の開始を指示する。これにより、計時回路22は、計時を開始する。
図5では、点Aにおいて被写体の輝度値が輝度閾値103を下回っている。この下回ったときの時刻は、t1である。CPU26は、この下回ったときに計時回路22に遅延時間を設定しており、設定した遅延時間が経過するまでは、撮像光学系2の光路に光学フィルタ4を挿入させたまま、この光路から光学フィルタ4を抜去させない。
このようなCPU26の動作により、グラフ101が輝度閾値103を頻繁に交差しても、撮像装置1000の可視光撮像と赤外線撮像とが頻繁に切り替わってしまうことを防止することができる。また、このような動作により、被写体の輝度値が輝度閾値103を安定的に下回る確率を上げることができる。このような動作は、蛍光灯などの照明のフリッカ等の影響で、被写体輝度が短時間で上下する場合にも有効である。
そして、CPU26は、計時回路22に設定された遅延時間が経過することにより時刻がt2になると、光学フィルタ駆動回路24に指示し、撮像光学系2の光路から光学フィルタ4を抜去させる。これにより、撮像装置1000は、赤外線撮像を行う。このとき(時刻t2)の被写体の輝度値は、点Bである。
これまでに述べたように、本実施例では、ユーザは、クライアント装置2000を操作することにより、光学フィルタ4の挿脱に関する調整値が記述された自動挿脱コマンドを撮像装置1000に送信させることができる。ここで、この調整値は、被写体の輝度を示すパラメータや遅延時間を示すパラメータを含む。
これにより、この自動挿脱コマンドを受信した撮像装置1000は、被写体の輝度値が輝度閾値の付近である場合でも、撮像光学系2の光路に対する光学フィルタ4の挿脱が頻繁に行われてしまうことを防止することができる。また、この撮像装置1000は、照明のフリッカなどにより、被写体の輝度が頻繁に変化する場合でも、撮像光学系2の光路に対する光学フィルタ4の挿脱が頻繁に行われてしまうことを防止することができる。
続いて、図6は、本実施例に係る撮像装置1000とクライアント装置2000との間における、光学フィルタ4の挿脱に関する調整値を設定するための、典型的なコマンドのシーケンスを説明するためのシーケンス図である。なお、図6では、ITU−T Recommendation Z.120規格で定義される、いわゆるメッセージ・シークエンス・チャートを用いてこのコマンドのトランザクションを記述している。
なお、本実施例におけるトランザクションとは、クライアント装置2000から撮像装置1000へ送信されるコマンドと、それに対して撮像装置1000がクライアント装置2000へ返送するレスポンスのペアのことを指している。また、図6において、撮像装置1000とクライアント装置2000とは、IPネットワーク網1500を介して接続されているものとする。
まず、GetServicesのトランザクションにより、クライアント装置2000は、撮像装置1000がサポート(提供)しているWebサービスの種類と各Webサービスを利用するためのアドレスURIを取得することができる。
具体的には、クライアント装置2000は、GetServicesのコマンドを撮像装置1000に送信する。このコマンドを受信した撮像装置1000は、このコマンドのレスポンスを返送する。このレスポンスにより、クライアント装置2000は、撮像装置1000が、自動挿脱コマンド等を実行することができるか否か、つまりImaging_Serviceをサポートしているか否かを示す情報を取得することができる。本実施例において、このレスポンスは、撮像装置1000がImaging_Serviceをサポートしていることを示す。
次に、GetVideoSourcesのトランザクションにより、クライアント装置2000は、撮像装置1000が保持するVideoSourceのリストを取得する。ここで、VideoSourceとは、撮像装置1000が備える1つの撮像素子6の性能を示すパラメータの集合体である。
具体的には、VideoSourceは、VideoSourceのIDであるVideoSourceTokenや、出力することができる撮像画像の解像度を示すResolution等を含む。つまり、撮像装置1000が備える1つの撮像素子6の性能を示すパラメータの集合体である。クライアント装置2000は、GetVideoSourcesのコマンドを撮像装置1000に送信する。
このコマンドを受信した撮像装置1000は、コマンドのレスポンスを返送する。この返送コマンドにより、クライアント装置2000は、光学フィルタ4の挿脱に関する設定を行うことができるVideoSourceを示すVideoSourceTokenを取得することができる。本実施例において、このレスポンスは、撮像素子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の光路に対する光学フィルタ4の挿脱の状態を示す情報を、撮像装置1000から取得する。
クライアント装置2000は、GetImagingSettingsのコマンドを、撮像装置1000に送信する。このコマンドは、撮像装置1000から受信したGetVideoSourceのレスポンスに含まれるVideoSourceTokenを含む。このコマンドを受信した撮像装置1000は、このコマンドのレスポンスを返信する。本実施例では、このレスポンスは、IRCutFilter Settingsを含む。このIRCutFilter Settingsには、撮像光学系2の光路に光学フィルタ4が現在挿入されているのか、それともこの光路から光学フィルタ4が現在抜去されているのかを示す情報が記述されている。本実施例では、このIRCutFilterSettingsには、撮像光学系2の光路に光学フィルタ4が現在挿入されていることを示す情報が記述されている。
次に、SetImagingSettingsのトランザクションにより、クライアント装置2000は、撮像光学系2の光路に対する光学フィルタ4の挿脱を撮像装置1000に自動で制御させる。クライアント装置2000は、SetImagingSettingsのコマンドを、撮像装置1000のImagingSerivesを利用するためのアドレスURIに送信する。このコマンドは、撮像装置1000から受信したGetVideoSourceのレスポンスに含まれるVideoSourceTokenを含む。更に、このコマンドには、撮像光学系2の光路に対する光学フィルタ4の挿脱を撮像装置1000に自動で制御させることを示す情報(値が「AUTO」のIrCutFilterフィールド)が記述されている。その上、このコマンドには、調整値(IrCutFilterAutoAdjustmentフィールド)が記述されている。なお、IrCutFilterフィールドやIrCutFilterAutoAdjustmentフィールドについては、後述する。
一方、このコマンドを受信した撮像装置1000は、SetImagingSettingsのレスポンスをクライアント装置2000に返信する。このレスポンスの引数は、省略されている。ここで、引数が省略されたこのレスポンスは、撮像装置1000によるこのコマンドの実行が成功したことを示す。
これにより、撮像装置1000は、撮像光学系2の光路に光学フィルタ4挿入するのか、それとも撮像光学系2の光路から光学フィルタ4を抜去するのかを自動で判定する動作をおこなう。
続いて、図7は、本実施例に係る撮像装置1000における、GetOptionsResponse送信処理を説明するためのフローチャートである。なお、この処理は、CPU26により実行される。そして、CPU26は、クライアント装置2000からI/F14を介してGetOptionsのコマンドを受信した場合に、この処理の実行を開始する。
以下、図7に示すフローチャートを、図8を適宜参照しながら説明する。ここで、図8は、GetOptionsResponse送信処理で送信されるGetOptionsResponseの一例を示す図である。
ステップS601では、CPU26は、GetOptionsレスポンスを生成し、生成したGetOptionsのレスポンスをEEPROM28に記憶させる。
ステップS602では、CPU26は、ステップS601でEEPROM28に記憶させたGetOptionsレスポンスのIrCutFilterModesフィールドの値に、ON、OFF、及びAUTOに設定する。
これにより、図8に示すように、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フィールドの値に、ToOn、及びToOffを設定する。
これにより、図8に示すように、GetOptionsレスポンスにおける<IrCutFilterAutoAdjustmentOptions>タグには、3つの<Img20:Mode>が対応付けられる。更に、この3つの<Img20:Mode>タグのそれぞれは、ToOn、ToOffが対応付けられる。
なお、値がToOnのModeフィールドは、撮像装置1000が、撮像光学系2の光路に光学フィルタ4を挿入するか否かの判定に調整値を用いることができることを示す。また、値がToOffのModeフィールドは、撮像装置1000が、撮像光学系2の光路から光学フィルタ4を抜去するか否かの判定に調整値を用いることができることを示す。
例えば、値がToOnのModeフィールド及び値がToOffのModeフィールドが記述されたGetOptionsレスポンスは、次のようなことを示す。
つまり、撮像光学系2の光路に光学フィルタ4を挿入する場合及び撮像光学系2の光路から光学フィルタ4を抜去する場合のそれぞれについて、撮像装置1000により用いられる調整値を別々に設定することができることである。
ステップS604では、CPU26は、ステップS601でEEPROM28に記憶させたGetOptionsレスポンスのBoundaryOffsetフィールドの値に、trueを設定する。更に、CPU26は、ステップS601でEEPROM28に記憶させたGetOptionsレスポンスのMinフィールドの値に、PT0Sを設定し、このレスポンスのMaxフィールドの値にPT30Mを設定する。
これにより、図8に示すように、GetOptionsレスポンスにおける<IrCutFilterAutoAdjustmentOptions>タグには、<img20:BoundaryOffset>タグが対応付けられる。更に、この<IrCutFilterAutoAdjustmentOptions>タグには、<img20:ResponseTime>タグが対応付けられる。
そして、この<img20:BoundaryOffset>タグには、trueが対応付けられる。また、この<img20:ResponseTime>タグには、<img20:Min>タグ及び<img20:Max>タグが対応付けられる。ここで、この<img20:Min>タグには、PT0Sが対応付けられる。また、この<img20:Max>タグには、PT30M(30分)が対応付けられる。
なお、値がtrueのBoundaryOffsetフィールドは、撮像装置1000にBoundaryOffsetを設定することができることを示す。また、<img20:Min>タグは、ResponseTimeフィールドに設定することができる時間の最小値(最短時間)を示す。そして、<img20:Max>タグは、ResponseTimeフィールドに設定することができる時間の最大値(最長時間)を示す。
つまり、<img20:Min>及び<img20:Max>は、ResponseTimeフィールドに設定することができる時間の範囲を示す。
ステップS605では、CPU26は、I/F14に指示し、ステップS601でEEPROM28に記憶させたGetOptionsレスポンスをクライアント装置2000に送信させる。
続いて、図9は、SetImagingSettingsコマンドの構成の一例を示す図である。図9(a)に示すSetImagingSettingsでは、IrCutFilterフィールドの値にAUTOが設定されている。より詳細には、このSetImagingSettingsのコマンドにおいて、<IrCutFilter>タグには、AUTOが対応づけられている。
これにより、図9(a)に示すSetImagingSettingsのコマンドは、撮像光学系2の光路に対する光学フィルタ4の挿脱を撮像装置1000に自動で制御させるための自動挿脱コマンドに相当することになる。
また、図9(a)に示すSetImagingSettingsのコマンドでは、BoundaryTypeフィールドの値にToOnが設定されている。より詳細には、このSetImagingSettingsのコマンドにおいて、<IrCutFilterAutoAdjustment>タグには、<BoundaryType>タグが対応付けられている。さらに、この<BoundaryType>タグには、ToOnの値が対応付けられている。
そして、図9(a)に示すSetImagingSettingsのコマンドでは、BoundaryOffsetフィールドの値に0.25が設定されている。より詳細には、このSetImagingSettingsのコマンドにおいて、<IrCutFilterAutoAdjustment>タグには、<BoundaryOffset>タグが対応付けられている。さらに、この<BoundaryOffset>タグには、0.25が対応付けられている。
さらに、図9(a)に示すSetImagingSettingsのコマンドでは、ResponseTimeフィールドの値にPT1M30Sが設定されている。より詳細には、このSetImagingSettingsのコマンドにおいて、<IrCutFilterAutoAdjustment>タグには、<ResponsTime>タグが対応付けられている。この<ResponsTime>タグには、PT1M30Sが対応付けられている。ResponseTimeフィールドの値に設定された時間は、光学フィルタ4が挿脱される際の遅延時間に関する値に相当する。
これにより、図9(a)に示すSetImagingSettingsコマンドは、次のようなことを撮像装置1000に指示するためのコマンドと言える。即ち、撮像光学系2の光路に光学フィルタ4を挿入する場合について、BounaryOffsetフィールドの値及びResponseTimeフィールドの値を撮像装置1000に用いさせることである。
続いて、図9(b)に示すSetImagingSettingsでは、IrCutFilterフィールドの値にAUTOが設定されている。より詳細には、このSetImagingSettingsのコマンドにおいて、<IrCutFilter>タグには、AUTOが対応付けられている。
また、図9(b)に示すSetImagingSettingのコマンドでは、IrCutFilterAutoAdjustmentフィールドにおけるBoundaryTypeフィールドの値は、ToOnに設定されている。
より詳細には、このSetImagingSettingsのコマンドにおいて、<IrCutFilterAutoAdjustment>タグには、<BoundaryType>タグが対応付けられている。そして、この<BoundaryType>タグには、ToOffが対応付けられている。
そして、図9(b)に示すSetImagingSettingsのコマンドにおいて、IrCutFilterAutoAdjustmentフィールドにおけるBoundaryOffsetフィールドの値は、0.16に設定されている。
より詳細には、このSetImagingSettingsのコマンドにおいて、1つ目の<IrCutFilterAutoAdjustment>タグには、<BoundaryOffset>タグが対応付けられている。そして、この<BoundaryOffset>タグには、0.16が対応付けられている。
さらに、図9(b)に示すSetImagingSettingsのコマンドにおいて、IrCutFilterAutoAdjustmentフィールドにおけるResponseTimeの値は、PT1M10Sに設定されている。
これにより、図9(b)に示すSetImagingSettingsコマンドは、次のようなことを撮像装置1000に指示するためのコマンドと言える。即ち、撮像光学系2の光路から光学フィルタ4を抜去する場合について、BounaryOffsetフィールドの値及びResponseTimeフィールドの値を撮像装置1000に用いさせることである。
そして、図9(b)に示すSetImagingSettingsのコマンドでは、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値は、0.16である。
続いて、図10は、本実施例に係る撮像装置1000における、SetImagingSettings受信処理を説明するためのフローチャートである。
なお、この処理はCPU26により実行される。そして、CPU26は、クライアント装置2000からI/F14を介してSetImagingSettingsのコマンドを受信した場合に、この処理の実行を開始する。また、I/F14により受信されたSetImagingSettingsのコマンドは、EEPROM28に記憶されるものとする。
ステップS901では、CPU26は、SetImagingSettingsのコマンドをEEPROM28から読み出す。
ステップS902では、CPU26は、ステップS901で読み出したコマンドにおいて、ToOn又はToOffのBoundaryTypeフィールドの値が記述されているか否かを判定する。
そして、CPU26は、値がToOnのBoundaryTypeフィールドのみが記述されていると判定した場合はステップS903に処理を進める。値がToOffのBoundaryTypeフィールドのみが記述されていると判定した場合には、ステップS905に処理を進める。
一方、CPU26は、値がToOnのBoundaryTypeフィールド及び値がToOffのBoundaryTypeフィールドが記述されていると判定した場合には、ステップS907に処理を進める。値がToOnのBoundaryTypeフィールド及び値がToOffのBoundaryTypeフィールドが記述されていないと判定した場合には終了する。
また、本実施例におけるCPU26は、撮像光学系2の光路に光学フィルタ4を挿入する場合及び光学フィルタ4を抜去する場合のそれぞれについて、輝度閾値が共通で記述されているのか、それとも別々に記述されているのかを判定する判定部に相当する。
ステップS903では、CPU26は、ステップS901で読み出したコマンドにおいて、値がToOnのBoundarTypeフィールドに対応するBoundaryOffsetフィールドの値を読み出す。図9(a)に示すコマンドの場合、CPU26は、値がToOnのBoundarTypeフィールドに対応するBoundaryOffsetフィールドの値として、0.25を読み出す。
ステップS904では、CPU26は、ステップS903で読み出したToOnの値に対応するToOffの値をEEPROM28内の予め記憶されているテーブルから読みだす。なお、図11はこのテーブルの一例を示したものである。このテーブルにおいて、BoundaryOffset値と、ToOffの輝度閾値及びToOnの輝度閾値とが対応づけられている。
一方で、予め記憶されているテーブルから読み出すことを行わずに、ToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値をオフセットさせることによって、その値をToOffの輝度閾値としても良い。この時、ToOffの輝度閾値のオフセット量は一律の値(固定値)でも良いし、撮像装置1000の光学フィルタ4の挿入時と抜去時における輝度測定回路18から得られる被写体輝度の差分を輝度閾値に適用させた値を用いても良い。なお、オフセットさせるとは、値を加減算することである。
また、ToOffの値をEEPROM28内の予め記憶されているデフォルト値としてもよいし、ToOnと同じ値を用いてもよい。また、本SetImagingSettings受信前に受信したコマンドにおいてのToOffのBoundaryTypeフィールドの値を使用してもよい。
このように、本実施例におけるCPU26は、コマンドに光学フィルタ4を挿入する場合、又は光学フィルタ4を抜去する場合のうち一方の値のみが記述されていた場合に他方の値を自動で決定する機能を有する自動決定部に相当する。
ステップS905では、CPU26は、ステップS901で読み出したコマンドにおいて、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値を読み出す。図9(b)に示すコマンドの場合、CPU26は、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetの値として、0.16を読み出す。
ステップS906では、CPU26は、ステップS903で読み出したToOffの値に対応するToOnの値をEEPROM28内の予め記憶されているテーブルから読みだす。(テーブルの例は図11を参照)
一方で、予め記憶されているテーブルから読み出すことを行わずに、ToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値をオフセットさせることによって、その値をToOnの輝度閾値としても良い。この時、ToOnの輝度閾値のオフセット量は一律の値(固定値)でも良いし、撮像装置1000の光学フィルタ4の挿入時と抜去時における輝度測定回路18から得られる被写体輝度の差分を輝度閾値に適用させた値を用いても良い。
また、ToOnの値をEEPROM28内の予め記憶されているデフォルト値としてもよいし、ToOffと同じ値を用いてもよい。また、本SetImagingSettings受信前に受信したコマンドにおいてのToOffのBoundaryTypeフィールドの値を使用してもよい。
ステップS907では、CPU26は、輝度閾値をEEPROM28に記憶させる。
より詳細には、CPU26は、ステップS903で読み出した値に対応する輝度閾値を、撮像光学系2の光路に光学フィルタ4を挿入するか否かの判定に用いられる輝度閾値として、EEPROM28に記憶させる。
さらに、CPU26は、ステップS905で読み出した値に対応する輝度閾値を、撮像光学系2の光路から光学フィルタ4を抜去するか否かの判定に用いられる輝度閾値として、EEPROM28に記憶させる。このように記憶させた後、CPU26は、ステップS908に処理を進める。
なお、本実施例において、I/F14で受信されたSetImagingSettingsコマンドは、CPU26がステップS902の判定を行うために必要な情報であることは、言うまでもない。
ステップS908では、CPU26は、I/F14に指示し、SetImagingSettingsのレスポンスをクライアント装置2000に送信させる。
続いて、図12は、撮像光学系2の光路に光学フィルタ4を挿入するか否かを撮像装置1000に自動で制御させる処理であるオートデイナイト処理を説明するためのフローチャートである。なお、この処理は、CPU26により実行される。
ステップS1001では、CPU26は、撮像光学系2の光路に光学フィルタ4を挿入するか否かの判定に用いられる輝度閾値をEEPROM28から読み出す。そして、CPU26は、読み出した輝度閾値を、撮像光学系2の光路に光学フィルタ4を挿入するか否かの判定に用いられる輝度閾値として、判定回路20に設定する。
ステップS1002では、CPU26は、撮像光学系2の光路に光学フィルタ4を挿入するか否かの判定に用いられる遅延時間をEEPROM28から読み出す。そして、CPU26は、読み出した遅延時間を、撮像光学系2の光路に光学フィルタ4を挿入するか否かの判定に用いられる遅延時間として、計時回路22に設定する。なお、この遅延時間は、図12では「応答性時間閾値」として示している。
ステップS1003では、CPU26は、判定回路20に指示し、撮像装置1000の被写体の現在の輝度値を輝度測定回路18から取得させる。
ステップS1004では、CPU26は、判定回路20に指示し、ステップS1001にて設定された輝度閾値とステップS1003で取得させた輝度値とを比較させる。なお、図12におけるステップS1004では、ステップS1003で取得させた輝度値を「推定輝度値」として示している。
ステップS1005では、CPU26は、ステップS1004の比較の結果、ステップS1003で取得させた輝度値がステップS1001にて設定された輝度閾値以上であるか否かを判定する。
そして、CPU26は、ステップS1003で取得させた輝度値がステップS1001にて設定された輝度閾値以上であると判定した場合には、ステップS1007に処理を進める。一方、CPU26は、ステップS1003で取得させた輝度値がステップS1001にて設定された輝度閾値以上ではないと判定した場合には、ステップS1004に処理を戻す。
ステップS1006では、CPU26は、計時回路22に指示し、計時を停止させる。
ステップS1007では、CPU26は、計時回路22に指示し、計時を開始させる。
ステップS1008及びS1009は、ステップS1004及びS1005と同様であるので、その説明を省略する。
ステップS1010では、CPU26は、ステップS1007で計時を開始してからステップS1002で設定された遅延時間が経過した旨の通知を計時回路22から受けたか否かを判定する。なお、図12におけるステップS1010では、この遅延時間を「応答性時間経過」として示している。
そして、CPU26は、ステップS1007で計時を開始してからステップS1002で設定された遅延時間が経過した旨の通知を計時回路22から受けたと判定した場合には、ステップS1011に処理を進める。
一方、CPU26は、ステップS1007で計時を開始してからステップS1002で設定された遅延時間が経過した旨の通知を計時回路22から受けていないと判定した場合には、ステップS1008に処理を戻す。
ステップS1011では、CPU26は、光学フィルタ駆動回路24に指示し、撮像光学系2の光路に光学フィルタ4を挿入させる。これにより、撮像装置1000は、可視光撮像を行うことになる。
以上のように、本実施例では、次のような場合を想定している。即ち、ToOn又はToOffのうちどちらかのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値のみがコマンドに記述されている場合である。
このような場合でも、本実施例における撮像装置1000は、このBoundaryOffsetフィールドの値、およびToOnのBoundaryTypeフィールドのBoundaryOffsetフィールドの値を適切に決定することができる。
また、本実施例では、図12を用い、撮像光学系2の光路に光学フィルタ4を挿入するか否か撮像装置1000に自動で制御させる処理を説明した。ここで、この光路から光学フィルタ4を抜去するか否かを撮像装置1000に自動で制御させる処理についても、以下に説明する。
ステップS1001では、CPU26は、撮像光学系2の光路から光学フィルタ4を抜去するか否かの判定に用いられる輝度閾値をEEPROM28から読み出す。そして、CPU26は、読み出した輝度閾値を、撮像光学系2の光路から光学フィルタ4を抜去するか否かの判定に用いられる輝度閾値として、判定回路20に設定する。
ステップS1002では、CPU26は、撮像光学系2の光路から光学フィルタ4を抜去するか否かの判定に用いられる遅延時間をEEPROM28から読み出す。そして、CPU26は、読み出した遅延時間を、撮像光学系2の光路から光学フィルタ4を抜去するか否かの判定に用いられる遅延時間として、計時回路22に設定する。
ステップS1003及びS1004は、上述のステップS1003及びS1004と同様であるので、その説明を省略する。
ステップS1005では、CPU26は、ステップS1004の比較の結果、ステップS1003で取得させた輝度値がステップS1001にて設定された輝度閾値以下であるか否かを判定する。
そして、CPU26は、ステップS1003で取得させた輝度値がステップS1001にて設定された輝度閾値以下であると判定した場合には、ステップS1007に処理を進める。一方、CPU26は、ステップS1003で取得させた輝度値がステップS1001にて設定された輝度閾値以下ではないと判定した場合には、ステップS1004に処理を戻す。
ステップS1006乃至S1010は、上述のステップS1006乃至S1010と同様であるので、その説明を省略する。
ステップS1011では、CPU26は、光学フィルタ駆動回路24に指示し、撮像光学系2の光路から光学フィルタ4を抜去させる。これにより、撮像装置1000は、赤外線撮像を行うことになる。
以上、本実施例の撮像装置1000は、I/F14で受信されたSetImagingSettingsコマンドに光学フィルタ4を挿入する場合、又は光学フィルタ4を抜去する場合のうち一方の値のみが記述されていた場合に他方の値を自動で決定する。
ここで、SetImagingSettingsにはToOn及びToOffに関するBoundaryTypeフィールドの値を含む。しかし、ネットワーク経由で受信するコマンドに常に両方の値が記述されるとは限らない。したがって、一方のみの値が記述されることがある。このため、ユーザが意図したとおりに設定が行われない場合、撮像装置1000は他方の値を受け付けることができない場合が考えられる。
しかし、このような場合でも、撮像光学系の光路に光学フィルタが意図せずに挿入または抜去されたり、撮像画像が異常となったりすることなく、外部装置により行われた設定に基づき、撮像装置1000は適切に動作しなければならない。
そして、撮像装置1000はSetImagingSettingsコマンドに光学フィルタ4を挿入する場合、又は光学フィルタ4を抜去する場合のうち一方の値のみが記述されていた場合に他方の値を自動で決定する。
これにより、撮像装置1000は、一方の値しか設定されなくても適切に動作することができる。この結果として、光学フィルタの挿脱制御に関する設定を外部装置からネットワーク経由で行う際に、撮像装置の被写体の輝度や光学フィルタの挿脱に関する遅延時間等に関連する設定の自由度を高めることができる。
また、本実施例ではCPU26は、SetImagingSettingsコマンドに光学フィルタ4を挿入する場合、又は光学フィルタ4を抜去する場合のうち一方の値のみが記述されているかを判定する。そのため、受信したコマンドに応じてより適切なタイミングで自動決定動作をおこなうことができる。
また、本実施例では図10で、光学フィルタ4を挿入する場合又は光学フィルタ4を抜去する場合のうち一方の値のみが記述されているかと判定した場合に、ステップS904及びステップS906で一定時間経過するまで、他方の値を自動決定しないとしてもよい。
つまり、一定時間経過しても他方の値が記述されたSetImagingSettingsコマンドを受信しない場合に、本実施例における動作を行うようにしてもよい。
また、本実施例では図10で、光学フィルタ4を挿入する場合又は光学フィルタ4を抜去する場合のうち一方の値のみが記述されているかと判定した場合に、ステップS904及びステップS906で、他方の値の追加設定を促す旨を、クライアント装置2000に通知してもよい。
(実施例2)
続いて、図13乃至14を用い、本発明の実施例2について説明する。なお、上述の実施例と同一の構成要素については同一の符号を付し、その説明を省略することがある。
ここで、上述の実施例1では、ToOnまたはToOffのうちどちらかのBoundaryTypeフィールドに対応する値のみがコマンドに記述されている場合の撮像装置の動作が例示されていた。
図13は、本実施例に係るクライアント装置2000における、IrCutFilterAutoAdjustment設定画面の一例を示す図である。なお、この画面は、表示部422に表示される。
図13における光学フィルタタイプ選択ペイン301は、ToOn選択チェックボックス305、ToOff選択チェックボックス307、及びBoundaryOffset設定数値ボックス309を含む。
また、光学フィルタタイプ選択ペイン301は、遅延時間設定数値ボックス311を含む。そして、光学フィルタ設定ペイン315には、第一輝度閾値設定スケール317、第二輝度閾値設定スケール319、第一遅延時間設定スケール321、及び第二遅延時間設定スケール323が設けられている。さらに、図13に示す設定画面には、設定ボタン325及びキャンセルボタン327が設けられている。
ここで、光学フィルタ設定ペイン315において、縦軸は、輝度値を示し、横軸は、遅延時間を示す。特に、光学フィルタ設定ペイン315において、横軸上(Time軸上)は、輝度値0(零)を示し、上方の限界(上端)は、正規化された輝度値1.0を示す。また、下方の限界(下端)は、正規化された輝度値−1.0を示す。そして、光学フィルタ設定ペイン315において、左の限界(左端)は、遅延時間0(零)を示すようになっている。
そして、図13は、撮像光学系2の光路に光学フィルタ4を挿入する場合における、設定画面の一例である。即ち、図13の画面は、値がToOnのBoundaryTypeフィールドが記述されたSetImagingSettingsコマンドを撮像装置1000に送信する場合に使用される設定画面である。
図13におけるToOn選択チェックボックス305は、ユーザにより選択されている。このため、第二輝度閾値設定スケール319及び第二遅延時間設定スケール323は、グレーアウトされている。つまり、第二輝度閾値設定スケール319及び第二遅延時間設定スケール323は、操作不可能な状態となっている。
ユーザは、第一輝度閾値設定スケール317を上下にスライドさせることにより、ユーザの所望のBoundaryOffsetの値を設定する。そして、ユーザにより第一輝度閾値設定スケール317が操作されると、BoundaryOffset設定数値ボックス309におけるToOn相当部の値がこの操作に連動して変化する。
一方、ユーザは、BoundaryOffset設定数値ボックス309におけるToOn相当部に値を直接入力することもできる。そして、ユーザによりこのToOn相当部に値が入力されると、第一輝度閾値設定スケール317は、入力された値に応じて上下に移動する。
このように、ユーザは、BoundaryOffsetの値を第一輝度閾値設定スケール317の位置により、大まかに把握することができる。更に、この位置とBoundaryOffset設定数値ボックス309におけるToOn相当部の値とは、連動するので、ユーザは、このToOn相当部により、BounarOffsetの値を正確に把握することができる。
なお、第一輝度閾値設定スケール317がTime軸上に配置された状態で、設定ボタン325が押下されると、クライアント装置2000は、BoundaryOffsetフィールドが省略されたSetImagingSettingsコマンドを送信する。
同様に、BoundaryOffset設定数値ボックス309のToOn相当部に0(零)が入力された状態で、設定ボタン325が押下されても、クライアント装置2000は、この省略されたSetImagingSettingsコマンドを送信する。
例えば、SetImagingSettingsコマンドにおけるBoundaryOffsetフィールドの省略を指示するためのGUIコンポーネントを、別途、表示部422に表示させるように構成しても良い。
具体的には、このようなGUIコンポーネントとしてBoundaryOffsetフィールド省略用チェックボックスを図13の画面に配置する。そして、ユーザによりこのチェックボックスが選択された場合に、SetImagingSettingsコマンドのBoundaryOffsetフィールドが省略されるように構成しても良い。
また、ユーザは、第一遅延時間設定スケール321を左右にスライドさせることにより、ユーザの所望するResponseTimeの値を設定する。そして、ユーザにより第一遅延時間設定スケール321が操作されると、遅延時間設定数値ボックス311におけるToOn相当部の時間表示がこの操作に連動して変化する。
一方、ユーザは、遅延時間設定数値ボックス311におけるToOn相当部に時間を直接入力することもできる。そして、ユーザによりこのToOn相当部に時間が入力されると、第一遅延時間設定スケール321は、入力された時間に応じて左右に移動する。
なお、第一遅延時間設定スケール321が光学フィルタ設定ペイン315の左端に配置された状態で、設定ボタン325が押下された場合を想定する。このような場合、クライアント装置2000は、ResponseTimeフィールドが省略されたSetImagingSettingsコマンドを送信する。
同様に、遅延時間設定数値ボックス311におけるToOn相当部の全ての数値ボックスに0(零)が入力された状態で、設定ボタン325が押下された場合を想定する。このような場合も、クライアント装置2000は、ResponseTimeフィールドが省略されたSetImagingSettingsコマンドを想定する。
なお、本実施例では、第一遅延時間設定スケール321を光学フィルタ設定ペイン315の左端に配置することや、遅延時間設定数値ボックス311のToOn相当部に0を入力することで、ResponseTimeフィールドの省略を指示することができる。しかしながら、これに限られるものではない。
例えば、SetImagingSettingsコマンドにおけるResponseTimeフィールドの省略を指示するためのGUIコンポーネントを、別途、表示部422に表示させるように構成しても良い。
具体的には、このようなGUIコンポーネントとしてResponseTimeフィールド省略用チェックボックスを図13の画面に配置する。そして、ユーザによりこのチェックボックスが選択された場合に、SetImagingSettingsコマンドのResponeTimeフィールドが省略されるように構成しても良い。
また、本実施例におけるクライアント装置2000は、図13の設定画面を表示部422に表示させる前に、GetOptionsコマンドを撮像装置1000に送信しても良い。そして、クライアント装置2000は、撮像装置1000から送信されるGetOptionsレスポンスに応じ、表示部422に表示された図13の設定画面を更新しても良い。
ここで、このレスポンスは、IrCutFilterAutoAdjustmetOptionsフィールドを含む。このフィールドは、撮像装置1000が受け付けることができるBoundaryTypeフィールドの値などが記述されている。
また、本実施例においてはToOnに関する例を示したが、図13におけるToOff選択チェックボックス307を、ユーザにより選択された場合も。このため、第二輝度閾値設定スケール319及び第二遅延時間設定スケール323等を操作することで同様に動作させることができる。
続いて、図14は、本実施例に係るクライアント装置2000における、SetImagingSettings送信処理を説明するためのフローチャートである。
なお、この処理は、CPU426により実行される。そして、CPU426は、設定ボタン325が押下されたか否かを判定し、設定ボタン325が押下されたと判定した場合には、本処理を開始し、設定ボタン325が押下されていないと判定した場合には、本処理を開始しない。
ステップS1201では、CPU426は、SetImagingSettingsコマンドを生成し、生成したSetImagingSettingsコマンドをEEPROM428に記憶させる。この記憶させたSetImagingSettingsコマンドにおけるIrCutFilterフィールドの値は、AUTOである。
これにより、図9(a)又は図9(b)に示すように、この記憶させたSetImagingSettingsコマンドの<IrCutFilter>タグには、AUTOが対応付けられている。
ステップS1202では、CPU426は、ToOn選択チェックボックス305又はToOff選択チェックボックス307のいずれが選択されているのか、を判定する。
そして、CPU426は、ToOn選択チェックボックス305のみが選択されていると判定した場合には、ステップS1203に処理を進める。CPU426は、ToOff選択チェックボックス307のみが選択されていると判定した場合には、ステップS1209に処理を進める。そして、ToOn選択チェックボックス305及びToOff選択チェックボックス307の両方が選択されていると判定した場合には、ステップS1214に処理を進める。ステップS1203では、CPU426は、ステップS1201で記憶させたコマンドに、値がToOnのBoundaryTypeフィールドを追加する。
これにより、図9(a)に示すように、この記憶させたコマンドには、<IrCutFilterAutoAdjustment>タグが記述される。さらに、このコマンドには、<BoundaryType>タグが、この<IrCutFilterAutoAdjustment>タグに対応付けられ且つ記述される。
その上、このコマンドには、ToOnが、この<BoundaryType>タグに対応付けられ且つ記述される。
ステップS1204では、CPU426は、BoundaryOffset設定数値ボックス309におけるToOn相当部に値が設定されているか否かを判定する。そして、CPU426は、BoundaryOffset設定数値ボックス309におけるToOn相当部に値が設定されていると判定した場合には、ステップS1205に処理を進める。
一方、CPU426は、BoundaryOffset設定数値ボックス309におけるToOn相当部に値が設定されていないと判定した場合には、ステップS1206に処理を進める。
ステップS1205では、CPU426は、ステップS1201で記憶させたコマンドに、BoundaryOffsetフィールドを追加する。このBoundaryOffsetフィールドの値は、BoundaryOffset設定数値ボックス309におけるToOn相当部に設定されている値である。
これで、図9(a)に示すように、この記憶させたコマンドには、<BoundaryOffset>タグが、このコマンドの<IrCutFilterAutoAdjustment>タグに対応付けられ、且つ記述される。さらに、このコマンドには、0.25がこの<BoundaryOffset>タグに対応付けられ且つ記述される。
ステップS1206では、CPU426は、遅延時間設定数値ボックス311におけるToOn相当部に値が設定されているか否かを判定する。そして、CPU426は、遅延時間設定数値ボックス311におけるToOn相当部に値が設定されていると判定した場合には、ステップS1207に処理を進める。
一方、CPU426は、遅延時間設定数値ボックス311におけるToOn相当部に値が設定されていないと判定した場合には、ステップS1208に処理を進める。
ステップS1207では、CPU426は、ステップS1201で記憶させたコマンドに、ResponseTimeフィールドを追加する。このResponseTimeフィールドの値は、遅延時間設定数値ボックス311におけるToOn相当部に設定されている値である。
これで、例えば、図9(a)に示すように、この記憶させたコマンドには、<ResponseTime>タグが、このコマンドの<IrCutFilterAutoAdjustment>タグに対応付けられ、且つ記述される。さらに、このコマンドには、PT1M15Sがこの<ResponseTime>タグに対応付けられ、且つ記述される。
ステップS1208では、CPU426は、I/F414に指示し、ステップS1201で記憶させたコマンドを撮像装置1000に送信させる。
一方、ステップS1209では、CPU426は、ステップS1201で記憶させたコマンドに、値がToOffのBoundaryTypeフィールドを追加する。
これにより、図9(b)に示すように、この記憶させたコマンドには、<IrCutFilterAutoAdjustment>タグが記述される。さらに、このコマンドには、<BoundaryType>タグが、この<IrCutFilterAutoAdjustment>タグに対応付けられ且つ記述される。
その上、このコマンドには、ToOffが、この<BoundaryType>タグに対応付けられ且つ記述される。
ステップS1210では、CPU426は、BoundaryOffset設定数値ボックス309におけるToOff相当部に値が設定されているか否かを判定する。そして、CPU426は、BoundaryOffset設定数値ボックス309におけるToOff相当部に値が設定されていると判定した場合には、ステップS1211に処理を進める。
一方、CPU426は、BoundaryOffset設定数値ボックス309におけるToOff相当部に値が設定されていないと判定した場合には、ステップS1212に処理を進める。
ステップS1211では、CPU426は、ステップS1201で記憶させたコマンドに、BoundaryOffsetフィールドを追加する。このBoundaryOffsetフィールドの値は、BoundaryOffset設定数値ボックス309におけるToOff相当部に設定されている値である。
これで、図9(b)に示すように、この記憶させたコマンドには、<BoundaryOffset>タグが、このコマンドの<IrCutFilterAutoAdjustment>タグに対応付けられ、且つ記述される。さらに、このコマンドには、0.16がこの<BoundaryOffset>タグに対応付けられ且つ記述される。
ステップS1212では、CPU426は、遅延時間設定数値ボックス311におけるToOff相当部に値が設定されているか否かを判定する。そして、CPU426は、遅延時間設定数値ボックス311におけるToOff相当部に値が設定されていると判定した場合には、ステップS1213に処理を進める。
一方、CPU426は、遅延時間設定数値ボックス311におけるToOff相当部に値が設定されていないと判定した場合には、ステップS1208に処理を進める。
ステップS1213では、CPU426は、ステップS1201で記憶させたコマンドに、ResponseTimeフィールドを追加する。このResponseTimeフィールドの値は、遅延時間設定数値ボックス311におけるToOff相当部に設定されている値である。
これで、例えば、図9(b)に示すように、この記憶させたコマンドには、<ResponseTime>タグが、このコマンドの<IrCutFilterAutoAdjustment>タグに対応付けられ、且つ記述される。さらに、このコマンドには、PT1M10Sがこの<ResponseTime>タグに対応付けられ、且つ記述される。
ステップS1208では、CPU426は、I/F414に指示し、ステップS1201で記憶させたコマンドを撮像装置1000に送信させる。
また、ステップS1214では、CPU426は、ステップS1201で記憶させたコマンドに、値がToOn及びToOffのBoundaryTypeフィールドを追加する。その上、このコマンドには、ToOn及びToOffが、この<BoundaryType>タグに対応付けられ且つ記述される。
ステップS1215では、CPU426は、BoundaryOffset設定数値ボックス309におけるToOn及びToOff相当部に値が設定されているか否かを判定する。そして、CPU426は、BoundaryOffset設定数値ボックス309におけるToOn及びToOff相当部に値が設定されていると判定した場合には、ステップS1216に処理を進める。
一方、CPU426は、BoundaryOffset設定数値ボックス309におけるToOn及びToOff相当部に値が設定されていないと判定した場合には、ステップS1217に処理を進める。
ステップS1216では、CPU426は、ステップS1201で記憶させたコマンドに、BoundaryOffsetフィールドを追加する。このBoundaryOffsetフィールドの値は、BoundaryOffset設定数値ボックス309におけるToOn及びToOff相当部に設定されている値である。
ステップS1217では、CPU426は、遅延時間設定数値ボックス311におけるToOn及びToOff相当部に値が設定されているか否かを判定する。そして、CPU426は、遅延時間設定数値ボックス311におけるToOff相当部に値が設定されていると判定した場合には、ステップS1218に処理を進める。
一方、CPU426は、遅延時間設定数値ボックス311におけるToOn及びToOff相当部に値が設定されていないと判定した場合には、ステップS1208に処理を進める。
ステップS1218では、CPU426は、ステップS1201で記憶させたコマンドに、ResponseTimeフィールドを追加する。このResponseTimeフィールドの値は、遅延時間設定数値ボックス311におけるToOn及びToOff相当部に設定されている値である。
ステップS1208では、CPU426は、I/F414に指示し、ステップS1201で記憶させたコマンドを撮像装置1000に送信させる。
ここで、ステップS1215において、BoundaryOffset設定数値ボックス309にToOnまたはToOffに相当する値が設定されていなかったと判定した場合は、設定されていない各項目に関しては、各フィールドの追加は行わない。
また、ステップS1217において、遅延時間設定数値ボックス311にToOnまたはToOffに相当する値が設定されていなかったと判定した場合は、設定されていない各項目に関しては、各フィールドの追加は行わない。
続いて、図15乃至17を用い、GetImagingSettingsレスポンスをクライアント装置2000が受信した場合の表示処理について説明する。
図15は、クライアント装置2000における表示処理の一例を示すフローチャートである。
図16の各部の構成はそれぞれ図14と同じである。
図17は、撮像装置1000とクライアント装置2000との間における、設定内容を表示するための典型的なコマンドのシーケンス図である。
なお、撮像装置1000とクライアント装置2000の接続およびトランザクョンを含む構成に関しては実施例1の図6と同様である。
ここで、図15のフローチャートに沿って実施例2の表示処理の説明をする。
なお、この処理は、CPU426により実行される。そして、CPU426は、撮像装置1000からI/F414を介してGetImagingSettingsのコマンドを受信した場合に、この処理の実行を開始する。また、I/F414により受信されたGetImagingSettingsのコマンドは、EEPROM428に記憶されるものとする。
まず、ステップS1301では、CPU426は、クライアント装置2000が送信したGetImagingSettingsコマンドに対する撮像装置1000のGetImagingSettingsレスポンスを受信する。
ステップS1302では、CPU426は、IrCutFilterAutoAdjustment設定画面内のToOn選択チェックボックス305またはToOff選択チェックボックス307がユーザにより選択されているかどうかを判定する。
ToOnの選択チェックボックスのみが選択されている場合はステップS1303に進み、ToOffの選択チェックボックスのみが選択されている場合はステップS1307へ進む。ToOnの選択チェックボックス及びToOffの選択チェックボックスの両方が選択されている場合はステップS1311へ進む。
ステップS1303では、CPU426は、ToOnのBoundaryOffSetの値が設定されているかどうかを判定し、設定されている場合はステップS1304へ進み、設定されていない場合はステップS1305へ進む。
ステップS1304では、CPU426は、GetImagingSettingsレスポンスに記述されているToOnのBoundaryOffsetに対応するToOffのBoundaryOffsetを表示する。ここで値の表示は、図16(a)内のBoundaryOffset設定数値ボックス309におけるToOff相当部に行う。
この時、ToOffのBoundaryOffsetは、撮像装置1000で算出またはテーブルより取得したBoundaryOffsetに対応する輝度閾値をGetImagingSettingsレスポンスに記述しても良い。また、別のコマンドを用いてフィードバックしても良い。
ステップS1305では、CPU426は、ToOnのResponseTimeが設定されているかどうかを判定する。
そして、CPU426は、ToOnのResponseTimeが設定されていると判定した場合には、ステップS1306へ処理を進め、一方、設定されていないと判定した場合には、処理を終了する。
ステップS1306では、CPU426は、GetImagingSettingsレスポンスに記述されているToOnのResponseTimeに対応するToOffのResponseTimeを表示する。ここで値の表示は図16(a)内の遅延時間設定数値ボックス311におけるToOff相当部に表示する。
この時、ToOnのResponseTimeに対応するToOffのResponseTimeは、撮像装置1000で取得したResponseTimeをGetImagingSettingsレスポンスに記述しても良い。また、ToOnのResponseTimeと同じ値を用いても良い。
ステップS1307では、CPU426は、ToOffのBoundaryOffsetの値が設定されているかどうかを判定し、設定されている場合はステップS1308へ進み、設定されていない場合はステップS1309へ進む。
ステップS1308では、CPU426は、GetImagingSettingsレスポンスに記述されているToOffのBoundaryOffsetに対応するToOnのBoundaryOffsetを表示する。ここで値の表示は、図16(b)内のBoundaryOffset設定数値ボックス309におけるToOn相当部に表示する。
この時、ToOnのBoundaryOffsetは、撮像装置1000で算出またはテーブルより取得したBoundaryOffsetに対応する輝度閾値をGetImagingSettingsレスポンスに記述しても良い。また、別のコマンドを用いてフィードバックしても良い。
ステップS1309では、CPU426は、ToOffのResponseTimeが設定されているかどうかを判定する。
そして、CPU426は、ToOffのResponseTimeが設定されていると判定した場合には、ステップS1310へ処理を進め、一方、設定されていないと判定した場合には、処理を終了する。
ステップS1310では、CPU426は、GetImagingSettingsレスポンスに記述されているToOffのResponseTimeに対応するToOnのResponseTimeを表示する。ここでの表示は図16(b)内の遅延時間設定数値ボックス311におけるToOn相当部に表示する。
この時、ToOffのResponseTimeに対応するToOnのResponseTimeは、撮像装置1000で取得したResponseTimeをGetImagingSettingsレスポンスに記述しても良い。また、ToOffのResponseTimeと同じ値を用いても良い。
ステップS1311では、CPU426は、ToOn及びToOffのBoundaryOffsetの値が設定されているかどうかを判定し、設定されている場合はステップS1312へ進み、設定されていない場合はステップS1313へ進む。
ステップS1312では、CPU426は、GetImagingSettingsレスポンスに記述されているToOn及びToOffのBoundaryOffsetに対応するBoundaryOffsetを表示する。ここで値の表示はBoundaryOffset設定数値ボックス309に表示する。
ステップS1313では、CPU426は、ToOn及びToOffのResponseTimeが設定されているかどうかを判定する。
ToOn及びToOffのResponseTimeが設定されている場合はステップS1314へ進み、設定されていない場合は終了する。
ステップS1313では、CPU426は、GetImagingSettingsレスポンスに記述されているToOn及びToOffのResponseTimeに対応するResponseTimeを遅延時間設定数値ボックス311に表示する。
以上のように、本実施例では、次のような場合を想定した。即ち、ToOn又はToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値のみの値が設定されている場合である。この場合においても、図16に示したように、選択していないBoundaryTypeフィールドに対応する値をクライアント装置に表示することができる。そのため、クライアント装置では、撮像装置がどのような設定で動作しているかを知ることができる。
なお、本実施例におけるIrCutFilterAutoAdjustment設定画面は、SetImagingSettingsコマンドに記述されるBoundaryOffsetフィールド等の値を入力させるためのユーザーインターフェース部に相当する。
以上、本実施例のクライアント装置2000は、撮像装置側で自動決定した設定情報を外部装置はネットワーク経由で取得することができる。
ここで、クライアント装置2000が送信するコマンドの、SetImagingSettingsにはToOn及びToOffに関するBoundaryTypeフィールドの値を含む。しかし、ネットワーク経由で送信するコマンドに常に両方の値が記述されるとは限らない。
このような場合、本実施例における撮像装置1000はSetImagingSettingsコマンドに光学フィルタ4を挿入する場合、又は光学フィルタ4を抜去する場合のうち一方の値のみが記述されていた場合に他方の値を自動で決定する。そして、クライアント装置2000は、その自動決定した設定情報をネットワーク経由で受信することができる。
これにより、クライアント装置2000は、一方の値しか設定していなくても、撮像装置1000の設定情報を知ることができる。この結果として、光学フィルタの挿脱制御に関する設定を外部装置からネットワーク経由で行う際に、撮像装置の被写体の輝度や光学フィルタの挿脱に関する遅延時間等に関連する設定の自由度を高めることができる。
また、本実施例では光学フィルタ4を挿入する場合、又は光学フィルタ4を抜去する場合のうち一方の値のみが記述された場合に、クライアント装置2000は表示部422等に他の値の設定を促す警告を表示してもよい。
具体的な警告方法として、「他方を自動的に設定しますか?」あるは「他方も設定してください」というような表示を所定時間行ったり、他方の設定項目を所定時間点滅させたりしてもよい。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。