以下に、本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は、図示された構成に限定されるものではない。
また、以下の実施例におけるコマンドは、例えば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(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を挿入するか否かを判定するために用いられる輝度閾値を示す。また、輝度閾値103は、撮像光学系2の光路からIRCF4を抜去するか否かを判定するために用いられる輝度閾値を示す。
なお、本実施例では、自動挿脱コマンドに記述される輝度閾値は、所定の範囲の値に正規化されている。具体的には、この輝度閾値は、−1.0から+1.0までの値に制限されている。よって、図4に示すように、輝度閾値102及び輝度閾値103の指定可能な範囲は、−1.0から+1.0までの範囲になる。
例えば、図4に示すように、被写体の輝度値が低下することによりこの輝度値が輝度閾値103を下回ると、CPU26は、計時回路22に遅延時間を設定するとともに、計時回路22に計時の開始を指示する。これにより、計時回路22は、計時を開始する。
図4では、点Aにおいて被写体の輝度値が輝度閾値103を下回っている。この下回ったときの時刻は、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を適宜参照しながら説明する。ここで、図7は、図7のGetOptionsResponse送信処理で送信されるGetOptionsResponseの一例を示す図である。
ステップS601では、CPU26は、GetOptionsレスポンスを生成し、生成したGetOptionsのレスポンスをEEPROM28に記憶させる。
ステップS602では、CPU26は、ステップS601でEEPROM28に記憶させたGetOptionsレスポンスのIrCutFilterModesフィールドの値に、ON、OFF、及びAUTOに設定する。
これにより、図7に示すように、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に示すように、GetOptionsレスポンスにおける<IrCutFilterAutoAdjustmentOptions>タグには、3つの<Img20:Mode>が対応付けられる。更に、この3つの<Img20:Mode>タグのそれぞれは、Common、ToOn、ToOffが対応付けられる。
なお、値が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に示すように、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に送信させる。
続いて、図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で読み出したコマンドにおいて、値がToOnのBoundaryTypeフィールド及び値がToOffのBoundaryTypeフィールドが記述されているか否かを判定する。
そして、CPU26は、値がToOnのBoundaryTypeフィールド及び値がToOffのBoundaryTypeフィールドが記述されていると判定した場合には、ステップS903に処理を進める。一方、CPU26は、値がToOnのBoundaryTypeフィールド及び値がToOffのBoundaryTypeフィールドが記述されていないと判定した場合には、ステップS908に処理を進める。
なお、CPU26は、ステップS901で読み出したコマンドにおいて、値がCommonのBoundaryTypeフィールドが記述されていると判定した場合に、ステップS908に処理を進めても良い。
また、本実施例におけるCPU26は、撮像光学系2の光路にIRCF4を挿入する場合及びこの光路からIRCF4を抜去する場合のそれぞれについて、輝度値が共通で記述されているのか、それとも別々に記述されているのかを判定する記述判定部に相当する。
ステップS903では、CPU26は、ステップS901で読み出したコマンドにおいて、値がToOnのBoundarTypeフィールドに対応するBoundaryOffsetフィールドの値を読み出す。図8(b)に示すコマンドの場合、CPU26は、値がToOnのBoundarTypeフィールドに対応するBoundaryOffsetフィールドの値として、0.16を読み出す。
ステップS904では、CPU26は、ステップS901で読み出したコマンドにおいて、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値を読み出す。図8(b)に示すコマンドの場合、CPU26は、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetの値として、0.25を読み出す。
ステップS905では、CPU26は、ステップS903で読み出した値とステップS904で読み出した値とを比較する。
ステップS906では、CPU26は、ステップS905における比較の結果、ステップS903で読み出した値がステップS904で読み出した値よりも大きいと判定した場合には、輝度閾値をEEPROM28に記憶させる。
より詳細には、CPU26は、ステップS903で読み出した値に対応する輝度閾値を、撮像光学系2の光路にIRCF4を挿入するか否かの判定に用いられる輝度閾値として、EEPROM28に記憶させる。
さらに、CPU26は、ステップS904で読み出した値に対応する輝度閾値を、撮像光学系2の光路からIRCF4を抜去するか否かの判定に用いられる輝度閾値として、EEPROM28に記憶させる。このように記憶させた後、CPU26は、ステップS908に処理を進める。
一方、CPU26は、ステップS905における比較の結果、ステップS903で読み出した値がステップS904で読み出した値よりも小さいと判定した場合には、ステップS907に処理を進める。
なお、本実施例において、I/F14で受信されたSetImagingSettingsコマンドは、CPU26がステップS904の判定を行うために必要な情報であることは、言うまでもない。
ステップS907では、CPU26は、ステップS903で読み出した値に対応する輝度値を、撮像光学系2の光路にIRCF4を挿入するか否かの判定に用いられる輝度閾値として、EEPROM28に記憶させる。
さらに、CPU26は、ステップS903で読み出した値から0.1を引いた値に対応する輝度値を、撮像光学系2の光路からIRCF4を抜去するか否かの判定に用いられる輝度閾値として、EEPROM28に記憶させる。
つまり、本実施例では、CPU26は、ステップS903で、一方の値(ステップS903で読み出した値)に基づき、他方の値(撮像光学系2の光路からIRCF4を抜去するか否かの判定に用いられる輝度閾値)を変えることになる。
ステップS908では、CPU26は、I/F14に指示し、SetImagingSettingsのレスポンスをクライアント装置2000に送信させる。
続いて、図10は、撮像光学系2の光路にIRCF4を挿入するか否かを撮像装置1000に自動で制御させる処理であるオートデイナイト処理を説明するためのフローチャートである。なお、この処理は、CPU26により実行される。
ステップS1001では、CPU26は、撮像光学系2の光路にIRCF4を挿入するか否かの判定に用いられる輝度閾値をEEPROM28から読み出す。そして、CPU26は、読み出した輝度閾値を、撮像光学系2の光路にIRCF4を挿入するか否かの判定に用いられる輝度閾値として、判定回路20に設定する。
ステップS1002では、CPU26は、撮像光学系2の光路にIRCF4を挿入するか否かの判定に用いられる遅延時間をEEPROM28から読み出す。そして、CPU26は、読み出した遅延時間を、撮像光学系2の光路にIRCF4を挿入するか否かの判定に用いられる遅延時間として、計時回路22に設定する。なお、この遅延時間は、図10では「応答性時間閾値」として示している。
ステップS1003では、CPU26は、判定回路20に指示し、撮像装置1000の被写体の現在の輝度値を輝度測定回路18から取得させる。
ステップS1004では、CPU26は、判定回路20に指示し、ステップS1001にて設定された輝度閾値とステップS1003で取得させた輝度値とを比較させる。なお、図10におけるステップ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から受けたか否かを判定する。なお、図10におけるステップS1010では、この遅延時間を「応答性時間経過」として示している。
そして、CPU26は、ステップS1007で計時を開始してからステップS1002で設定された遅延時間が経過した旨の通知を計時回路22から受けたと判定した場合には、ステップS1011に処理を進める。
一方、CPU26は、CPU26は、ステップS1007で計時を開始してからステップS1002で設定された遅延時間が経過した旨の通知を計時回路22から受けていないと判定した場合には、ステップS1011に処理を進める。
ステップS1011では、CPU26は、IRCF駆動回路24に指示し、撮像光学系2の光路にIRCF4を挿入させる。これにより、撮像装置1000は、可視光撮像を行うことになる。
以上のように、本実施例では、次のような場合を想定している。即ち、値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値が、値がToOffのBoundaryTypeフィールドのBoundaryOffsetフィールドの値よりも小さい場合である。
このような場合でも、本実施例における撮像装置1000は、このBoundaryOffsetフィールドの値を、値がToOnのBoundaryTypeフィールドのBoundaryOffsetフィールドの値よりも小さくすることができる。
この結果、被写体の輝度が低いにも関わらず、撮像光学系2の光路にIRCF4が挿入されてしまい、撮像画像の被写体が黒つぶれしてしまうことを防止することができる。なおかつ、被写体の輝度が高いにも関わらず、撮像光学系2の光路からIRCF4が抜き去られてしまい、撮像画像の被写体が白飛びしてしまうことを防止することができる。
又、値がToOffのBoundaryTypeフィールドのBoundaryOffsetフィールドの値を、値がToOnのBoundaryTypeフィールドのBoundaryOffsetフィールドの値より小さくすることは、Onvifで有効である。
なぜならば、ONVIFは、撮像光学系2の光路にIRCF4を挿入する場合及びこの光路から抜去する場合のそれぞれのBoundaryOffsetフィールドの値の範囲を、同一範囲(−1.0から+1.0)に制限している。
このため、撮像光学系2の光路からIRCF4を抜去する場合のBoundaryOffsetフィールドの値が、この光路にIRCF4を挿入する場合のBoundaryOffsetフィールドの値よりも大きくすることは、ONVIF規格では正しい。
したがって、ONVIF規格に準拠したクライアント装置からこのような2つのBoundaryOffsetフィールドが記述されたSetImagingSettingsコマンドが送信されることは、頻繁に起こり得るからである。
なお、本実施例におけるCPU26は、ステップS907にて、ステップS903で読み出された値から0.1を引いた値を、撮像光学系2の光路からIRCF4を抜去するか否かの判定に用いられる輝度値として、EEPROM28に記憶させた。しかしながら、これに限られるものではない。
例えば、CPU26は、ステップS907にて、ステップS904で読み出された値に0.1を加えた値を、撮像光学系2の光路にIRCF4を挿入するか否かの判定に用いられる輝度値として、EEPROM28に記憶させても良い。さらに、CPU26は、ステップS907にて、ステップS904で読み出された値を、撮像光学系2の光路からIRCF4を抜去するか否かの判定に用いられる輝度値として、EEPROM28に記憶させても良い。
また、ステップS907にて、ステップS903で読み出された値から差し引かれる値(ステップS904で読み出された値に加えられる値)を「0.1」としているが、これに限られるものではない。
例えば、CPU26は、ユーザにより操作されるクライアント装置2000から任意の値をI/F14経由で受信し、受信した値を、ステップS903で読み出された値から差し引かれる値(ステップS904で読み出された値に加えられる値)に設定しても良い。
また、本実施例では、図10を用い、撮像光学系2の光路にIRCF4を挿入するか否か撮像装置1000に自動で制御させる処理を説明した。ここで、この光路からIRCF4を抜去するか否かを撮像装置1000に自動で制御させる処理についても、以下に説明する。
ステップS1001では、CPU26は、撮像光学系2の光路からIRCF4を抜去するか否かの判定に用いられる輝度閾値をEEPROM28から読み出す。そして、CPU26は、読み出した輝度閾値を、撮像光学系2の光路からIRCF4を抜去するか否かの判定に用いられる輝度閾値として、判定回路20に設定する。
ステップS1002では、CPU26は、撮像光学系2の光路からIRCF4を抜去するか否かの判定に用いられる遅延時間をEEPROM28から読み出す。そして、CPU26は、読み出した遅延時間を、撮像光学系2の光路からIRCF4を抜去するか否かの判定に用いられる遅延時間として、計時回路22に設定する。
ステップS1003及びS1004は、上述のステップS1003及びS1004と同様であるので、その説明を省略する。
ステップS1005では、CPU26は、ステップS1004の比較の結果、ステップS1003で取得させた輝度値がステップS1001にて設定された輝度閾値以下であるか否かを判定する。
そして、CPU26は、ステップS1003で取得させた輝度値がステップS1001にて設定された輝度閾値以下であると判定した場合には、ステップS1007に処理を進める。一方、CPU26は、ステップS1003で取得させた輝度値がステップS1001にて設定された輝度閾値以下ではないと判定した場合には、ステップS1004に処理を戻す。
ステップS1006乃至S1010は、上述のステップS1006乃至S1010と同様であるので、その説明を省略する。
ステップS1011では、CPU26は、IRCF駆動回路24に指示し、撮像光学系2の光路からIRCF4を抜去させる。これにより、撮像装置1000は、赤外線撮像を行うことになる。
(実施例2)
続いて、図11を用い、本発明の実施例2について説明する。なお、上述の実施例と同一の構成要素については同一の符号を付し、その説明を省略することがある。
ここで、上述の実施例1では、次のような場合を想定した。即ち、値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値が、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値よりも低い場合である。
そして、上述の実施例1では、このような場合でも、このBoundaryOffsetフィールドの値を、値がToOnのBoundaryTypeフィールドのBoundaryOffsetフィールドの値よりも小さくすることができる。
これに対し、実施例2における撮像装置1000は、このような場合に、それぞれのBoundaryOffsetフィールドの値が正しく設定されていないことを示す情報を、クライアント装置2000に送信する。
これにより、クライアント装置2000を操作するユーザは、それぞれのBoundaryOffsetフィールドの値が正しく設定されていないことに気付くことができる。これから、このような点を考慮した実施例2を説明する。
続いて、図11は、本実施例に係る撮像装置1000における、SetImagingSettings受信処理を説明するためのフローチャートである。
なお、この処理は、CPU26により実行される。そして、CPU26は、クライアント装置2000からI/F14を介してSetImagingSettingsのコマンドを受信した場合に、この処理の実行を開始する。また、I/F14により受信されたSetImagingSettingsのコマンドは、EEPROM28に記憶されるものとする。
ステップS1101乃至S1106は、ステップS901乃至S906と同様であるのでその説明を省略する。
ステップS1107では、CPU26は、I/F14に指示し、I/F14で受信されたSetImagingSettingsのコマンドが異常であることを示すSetImagingSettingsのレスポンスを、クライアント装置2000に送信させる。
なお、本実施例におけるI/F14は、I/F14で受信されたSetImagingSettingsコマンドが異常であることを示す情報を送信する送信部に相当する。
ステップS1108では、CPU26は、I/F14に指示し、I/F14で受信されたSetImagingSettingsのコマンドが正常であることを示すSetImagingSettingsのレスポンスを、クライアント装置2000に送信させる。
以上のように、本実施例では、次のような場合を想定している。即ち、値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値が、値がToOffのBoundaryTypeフィールドに対応するBounaryOffsetフィールドの値よりも小さい場合である。
このような場合でも、本実施例における撮像装置1000は、それぞれのBoundaryOffsetフィールドの値が正しく設定されていないことを示す情報を、クライアント装置2000に通知することができる。これにより、クライアント装置2000を操作するユーザは、それぞれのBounaryOffsetフィールドの値が正しく設定されていないことに気付くことができる。
この結果、被写体の輝度が低いにも関わらず、撮像光学系2の光路にIRCF4が挿入されてしまうこと、及び、被写体の輝度が高いにも関わらず、撮像光学系2の光路からIRCF4が抜去されてしまうことを防止することができる。
(実施例3)
続いて、図12乃至14を用い、本発明の実施例3について説明する。なお、上述の実施例と同一の構成要素については同一の符号を付し、その説明を省略することがある。
ここで、上述の実施例2では、次のような場合を想定した。即ち、値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値が、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値よりも低い場合である。
そして、上述の実施例2における撮像装置1000は、このような場合に、それぞれのBoundaryOffsetフィールドの値が正しく設定されていないことを示す情報を、クライアント装置2000に送信する。
これに対し、実施例3におけるクライアント装置2000は、このような場合に、クライアント装置2000によってそれぞれのBoundaryOffsetフィールドの値が設定される際に、この値が正しく設定されていないことをユーザに通知する。
これにより、クライアント装置2000を操作するユーザは、それぞれのBoundaryOffsetフィールドの値が正しく設定されていないSetImagingSettingsコマンドの送信前に、この正しく設定されていないことに気付くことができる。これから、このような点を考慮した実施例3を説明する。
続いて、図12は、本実施例に係るクライアント装置2000における、IrCutFilterAutoAdjustment設定画面の一例を示す図である。なお、この画面は、表示部422に表示される。
図12(a)及び(b)におけるIRCFタイプ選択ペイン301は、Common選択チェックボックス303、ToOn選択チェックボックス305、ToOff選択チェックボックス307、及びBoundaryOffset設定数値ボックス309を含む。
また、IRCFタイプ選択ペイン301は、遅延時間設定数値ボックス311を含む。そして、IRCF設定ペイン315には、第一輝度閾値設定スケール317、第二輝度閾値設定スケール319、第一遅延時間設定スケール321、及び第二遅延時間設定スケール323が設けられている。さらに、図12に示す設定画面には、設定ボタン325及びキャンセルボタン327が設けられている。
ここで、IRCF設定ペイン315において、縦軸は、輝度値を示し、横軸は、遅延時間を示す。特に、IRCF設定ペイン315において、横軸上(Time軸上)は、輝度値0(零)を示し、上方の限界(上端)は、正規化された輝度値1.0を示す。また、下方の限界(下端)は、正規化された輝度値−1.0を示す。そして、IRCF設定ペイン315において、左の限界(左端)は、遅延時間0(零)を示すようになっている。
続いて、図12(a)は、撮像光学系2の光路にIRCF4を挿入する場合及び撮像光学系2の光路からIRCF4を抜去する場合のそれぞれについて輝度閾値や遅延時間を共通で設定する際における、設定画面の一例である。
即ち、図12(a)の画面は、値がCommonのBoundaryTypeフィールドが記述されたSetImagingSettingsコマンドを撮像装置1000に送信する場合に使用される設定画面である。
図12(a)におけるCommon選択チェックボックス303は、ユーザにより選択されている。これにより、撮像光学系2の光路にIRCF4を挿入する場合及びこの光路からIRCF4を抜去する場合のそれぞれについて共通の輝度閾値や遅延時間が撮像装置1000により使用されることになる。
このため、第二輝度閾値設定スケール319及び第二遅延時間設定スケール323は、グレーアウトされている。つまり、第二輝度閾値設定スケール319及び第二遅延時間設定スケール323は、操作不可能な状態となっている。
ユーザは、第一輝度閾値設定スケール317を上下にスライドさせることにより、ユーザの所望のBoundaryOffsetの値を設定する。そして、ユーザにより第一輝度閾値設定スケール317が操作されると、BoundaryOffset設定数値ボックス309におけるCommon相当部の値がこの操作に連動して変化する。
一方、ユーザは、BoundaryOffset設定数値ボックス309におけるCommon相当部に値を直接入力することもできる。そして、ユーザによりこのCommon相当部に値が入力されると、第一輝度閾値設定スケール317は、入力された値に応じて上下に移動する。
このように、ユーザは、BoundaryOffsetの値を第一輝度閾値設定スケール317の位置により、大まかに把握することができる。更に、この位置とBoundaryOffset設定数値ボックス309におけるCommon相当部の値とは、連動するので、ユーザは、このCommon相当部により、BounarOffsetの値を正確に把握することができる。
なお、第一輝度閾値設定スケール317がTime軸上に配置された状態で、設定ボタン325が押下されると、クライアント装置2000は、BoundaryOffsetフィールドが省略されたSetImagingSettingsコマンドを送信する。
同様に、BoundaryOffset設定数値ボックス309のCommon相当部に0(零)が入力された状態で、設定ボタン325が押下されても、クライアント装置2000は、この省略されたSetImagingSettingsコマンドを送信する。
なお、本実施例では、ユーザは、第一輝度閾値設定スケール317をTime軸上に配置することや、このCommon相当部に0を入力することで、BoundaryOffsetフィールドの省略を指示することができるが、これに限られるものではない。
例えば、SetImagingSettingsコマンドにおけるBoundaryOffsetフィールドの省略を指示するためのGUIコンポーネントを、別途、表示部422に表示させるように構成しても良い。
具体的には、このようなGUIコンポーネントとしてBoundaryOffsetフィールド省略用チェックボックスを図12の画面に配置する。そして、ユーザによりこのチェックボックスが選択された場合に、SetImagingSettingsコマンドのBoundaryOffsetフィールドが省略されるように構成しても良い。
また、ユーザは、第一遅延時間設定スケール321を左右にスライドさせることにより、ユーザの所望するResponseTimeの値を設定する。そして、ユーザにより第一遅延時間設定スケール321が操作されると、遅延時間設定数値ボックス311におけるCommon相当部の時間表示がこの操作に連動して変化する。
一方、ユーザは、遅延時間設定数値ボックス311におけるCommon相当部に時間を直接入力することもできる。そして、ユーザによりこのCommon相当部に時間が入力されると、第一遅延時間設定スケール321は、入力された時間に応じて左右に移動する。
なお、第一遅延時間設定スケール321がIRCF設定ペイン315の左端に配置された状態で、設定ボタン325が押下された場合を想定する。このような場合、クライアント装置2000は、ResponseTimeフィールドが省略されたSetImagingSettingsコマンドを送信する。
同様に、遅延時間設定数値ボックス311におけるCommon相当部の全ての数値ボックスに0(零)が入力された状態で、設定ボタン325が押下された場合を想定する。このような場合も、クライアント装置2000は、ResponseTimeフィールドが省略されたSetImagingSettingsコマンドを想定する。
なお、本実施例では、第一遅延時間設定スケール321をIRCF設定ペイン315の左端に配置することや、遅延時間設定数値ボックス311のCommon相当部に0を入力することで、ResponseTimeフィールドの省略を指示することができる。しかしながら、これに限られるものではない。
例えば、SetImagingSettingsコマンドにおけるResponseTimeフィールドの省略を指示するためのGUIコンポーネントを、別途、表示部422に表示させるように構成しても良い。
具体的には、このようなGUIコンポーネントとしてResponseTimeフィールド省略用チェックボックスを図12の画面に配置する。そして、ユーザによりこのチェックボックスが選択された場合に、SetImagingSettingsコマンドのResponeTimeフィールドが省略されるように構成しても良い。
続いて、図12(b)は、撮像光学系2の光路にIRCF4を挿入する場合及び撮像光学系2の光路からIRCF4を抜去する場合のそれぞれについて輝度閾値や遅延時間を別々に設定する際における、設定画面の一例である。
即ち、図12(b)の画面は、それぞれ値がToOn及びToOffの2つのBoundaryTypeフィールドが記述されたSetImagingSettingsコマンドを撮像装置1000に送信する場合に使用される設定画面である。
図12(b)におけるToOn選択チェックボックス305及びToOff選択チェックボックス307のそれぞれは、ユーザにより選択されている。これにより、撮像光学系2の光路にIRCF4を挿入する場合及びこの光路からIRCF4を抜去する場合のそれぞれについて輝度閾値や遅延時間を別々に設定することになる。
このため、ユーザによりToOn選択チェックボックス305が選択されているので、第一輝度閾値設定スケール317、及び第一遅延時間設定スケール321のそれぞれが有効(操作可能な状態)となっている。また、ユーザによりToOff選択チェックボックス307が選択されているので、第二輝度閾値設定スケール319、及び第二遅延時間設定スケール323のそれぞれが有効(操作可能な状態)となっている。
ここで、第一輝度閾値設定スケール317により設定される輝度閾値と第一遅延時間設定スケール321により設定される遅延時間とは、撮像光学系2の光路にIRCF4を挿入するか否かを判定するために用いられることになる。
また、第二輝度閾値設定スケール319で設定される輝度閾値と第二遅延時間設定スケール323で設定される遅延時間とは、撮像光学系2の光路からIRCF4を抜去するか否かを判定するために用いられることになる。
なお、図12(b)の画面では、ユーザによりToOn選択チェックボックス305のみが選択されている場合には、第一輝度閾値設定スケール317及び第一遅延時間設定スケール321が操作可能な状態となる。
そして、この場合、第二輝度閾値設定スケール319及び第二遅延時間設定スケール323は、グレーアウトされる。つまり、第二輝度閾値設定スケール319及び第二遅延時間設定スケール323は、操作不可能な状態となる。
一方、図12の画面では、ユーザによりToOff選択チェックボックス307のみが選択されている場合には、第二輝度閾値設定スケール319及び第二遅延時間設定スケール323が操作可能な状態となる。
そして、この場合、第二輝度閾値設定スケール319及び第二遅延時間設定スケール323は、グレーアウトされる。つまり、第二輝度閾値設定スケール319及び第二遅延時間設定スケール323は、操作不可能な状態となる。
なお、本実施例における図12の画面では、Common選択チェックボックス303、ToOn選択チェックボックス305、及びToOff選択チェックボックス307の全てを同時に選択することはできない。
例えば、ユーザによりCommon選択チェックボックス303が選択されている場合には、ToOn選択チェックボックス305及びToOff選択チェックボックス307は、操作不可能な状態となる。
また、ToOn選択チェックボックス305及びToOff選択チェックボックス307のいずれか一方又は両方がユーザにより選択されている場合には、Common選択チェックボックス303は、操作不可能な状態となる。
また、本実施例におけるクライアント装置2000は、図12の設定画面を表示部422に表示させる前に、GetImagingSettingsコマンドを撮像装置1000に送信しても良い。そして、クライアント装置2000は、撮像装置1000から送信されるGetImaginsSettingsレスポンスに応じ、表示部422に表示された図12の設定画面を更新しても良い。
ここで、このレスポンスは、IrCutFilterAutoAdjustmentフィールドを含む。このフィールドは、撮像装置1000の現在の、BoundaryTypeフィールドの値、BoundaryOffsetフィールドの値、及びResponseTimeフィールドの値が記述されている。
例えば、クライアント装置2000は、撮像装置1000から受信したGetImagingSettingsレスポンスのBoundaryTypeフィールドの値がCommonのみである場合には、Common選択チェックボックス303を選択状態にする。
さらに、クライアント装置2000は、この場合に、このレスポンスに含まれるBoundaryOffsetフィールドの値を、BoundaryOffset設定数値ボックス309におけるCommon相当部に表示させる。
なおかつ、クライアント装置2000は、この場合に、このレスポンスに含まれるResponseTimeフィールドの値を、遅延時間設定数値ボックス311におけるCommon相当部に表示させる。
又、クライアント装置2000は、撮像装置1000から受信したGetImagingSettingsレスポンスのBoundaryTypeフィールドの値がToOn及びToOffのみである場合に、ToOn選択チェックボックス305を選択状態にする。更に、クライアント装置2000は、この場合には、ToOff選択チェックボックス307を選択状態にする。
また、クライアント装置2000は、この場合に、このレスポンスにおける値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値を、図12の画面に表示させる。より詳細には、クライアント装置2000は、この値を、BoundaryOffset設定数値ボックス309のToOn相当部に表示させる。
つぎに、クライアント装置2000は、この場合に、このレスポンスにおける値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値を、図12の画面に表示させる。より詳細には、クライアント装置2000は、この値を、BoundaryOffset設定数値ボックス309のToOff相当部に表示させる。
そして、クライアント装置2000は、この場合に、このレスポンスにおける値がToOnのBoundaryTypeフィールドに対応するResponseTimeフィールドの値を、遅延時間設定数値ボックス311のToOn相当部に表示させる。
さらに、クライアント装置2000は、この場合に、このレスポンスにおける値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値を、遅延時間設定数値ボックス311のToOff相当部に表示させる。
なお、クライアント装置2000は、ユーザによりキャンセルボタン327が押下されると、図12の画面の表示を終了する。
また、本実施例におけるクライアント装置2000は、図12の設定画面を表示部422に表示させる前に、GetOptionsコマンドを撮像装置1000に送信しても良い。そして、クライアント装置2000は、撮像装置1000から送信されるGetOptionsレスポンスに応じ、表示部422に表示された図12の設定画面を更新しても良い。
ここで、このレスポンスは、IrCutFilterAutoAdjustmetOptionsフィールドを含む。このフィールドは、撮像装置1000が受け付けることができるBoundaryTypeフィールドの値などが記述されている。
例えば、クライアント装置2000は、撮像装置1000から受信したGetOptinsレスポンスのModeフィールドの値がCommonのみである場合には、図12(a)に示すように、Common選択チェックボックス303を選択状態にする。
また、クライアント装置2000は、撮像装置1000から受信したGetOptionsレスポンスのModeフィールドの値がToOn及びToOffのみである場合には、図12(b)に示すように、ToOn選択チェックボックス305を選択状態にする。更に、この場合に、クライアント装置2000は、ToOff選択チェックボックス307を選択状態にする。
ここで、図12(b)の設定画面において、BoundaryOffset設定数値ボックス309のToOn相当部の値は、0.16に設定されている。一方、この設定画面において、BoundaryOffset設定数値ボックス309のToOff相当部の値は、0.25に設定されている。
これでは、被写体の輝度が低い場合に、撮像光学系2の光路にIRCF4を挿入し、被写体の輝度が高い場合に、撮像光学系2の光路からIRCF4を抜去することになりかねず、正しいBoundaryOffsetの設定とは言い難い。
このため、クライアント装置2000は、ユーザにより設定ボタン325が押下さると、BoundaryOffsetの設定エラーである旨を、ポップアップダイアログ等を表示することにより、ユーザに知らせる。
続いて、図13及び14は、本実施例に係るクライアント装置2000における、SetImagingSettings送信処理を説明するためのフローチャートである。
なお、この処理は、CPU426により実行される。そして、CPU426は、設定ボタン325が押下されたか否かを判定し、設定ボタン325が押下されたと判定した場合には、本処理を開始し、設定ボタン325が押下されていないと判定した場合には、本処理を開始しない。
ステップS1201では、CPU426は、SetImagingSettingsコマンドを生成し、生成したSetImagingSettingsコマンドをメモリ428に記憶させる。この記憶させたSetImagingSettingsコマンドにおけるIrCutFilterフィールドの値は、AUTOである。
これにより、図8(a)又は図8(b)に示すように、この記憶させたSetImagingSettingsコマンドの<IrCutFilter>タグには、AUTOが対応付けられている。
ステップS1202では、CPU426は、Common選択チェックボックス303が選択されているのか、それともToOn選択チェックボックス305及びToOff選択チェックボックス307が選択されているのか、を判定する。
そして、CPU426は、Common選択チェックボックス303が選択されていると判定した場合には、ステップS1203に処理を進める。一方、CPU426は、ToOn選択チェックボックス305及びToOff選択チェックボックス307が選択されていると判定した場合には、ステップS1301に処理を進める。
ステップS1203では、CPU426は、ステップS1201で記憶させたコマンドに、値がCommonのBoundaryTypeフィールドを追加する。
これにより、図8(a)に示すように、この記憶させたコマンドには、<IrCutFilterAutoAdjustment>タグが記述される。さらに、このコマンドには、<BoundaryType>タグが、この<IrCutFilterAutoAdjustment>タグに対応付けられ且つ記述される。
その上、このコマンドには、Commonが、この<BoundaryType>タグに対応付けられ且つ記述される。
ステップS1204では、CPU426は、BoundaryOffset設定数値ボックス309におけるCommon相当部に値が設定されているか否かを判定する。そして、CPU426は、BoundaryOffset設定数値ボックス309におけるCommon相当部に値が設定されていると判定した場合には、ステップS1205に処理を進める。
一方、CPU426は、BoundaryOffset設定数値ボックス309におけるCommon相当部に値が設定されていないと判定した場合には、ステップS1206に処理を進める。
ステップS1205では、CPU426は、ステップS1201で記憶させたコマンドに、BoundaryOffsetフィールドを追加する。このBoundaryOffsetフィールドの値は、BoundaryOffset設定数値ボックス309におけるCommon相当部に設定されている値である。
これで、図8(a)に示すように、この記憶させたコマンドには、<BoundaryOffset>タグが、このコマンドの<IrCutFilterAutoAdjustment>タグに対応付けられ、且つ記述される。さらに、このコマンドには、0.52がこの<BoundaryOffset>タグに対応付けられ且つ記述される。
ステップS1206では、CPU426は、遅延時間設定数値ボックス311におけるCommon相当部に値が設定されているか否かを判定する。そして、CPU426は、遅延時間設定数値ボックス311におけるCommon相当部に値が設定されていると判定した場合には、ステップS1207に処理を進める。
一方、CPU426は、遅延時間設定数値ボックス311におけるCommon相当部に値が設定されていないと判定した場合には、ステップS1208に処理を進める。
ステップS1207では、CPU426は、ステップS1201で記憶させたコマンドに、ResponseTimeフィールドを追加する。このResponseTimeフィールドの値は、遅延時間設定数値ボックス311におけるCommon相当部に設定されている値である。
これで、例えば、図8(a)に示すように、この記憶させたコマンドには、<ResponseTime>タグが、このコマンドの<IrCutFilterAutoAdjustment>タグに対応付けられ、且つ記述される。さらに、このコマンドには、PT1M15Sがこの<ResponseTime>タグに対応付けられ、且つ記述される。
ステップS1208では、CPU426は、I/F414に指示し、ステップS120
1で記憶させたコマンドを撮像装置1000に送信させる。
続いて、図14におけるステップS1301では、CPU426は、BoundaryOffset設定数値ボックス309におけるToOn相当部に値が設定されているか否かを判定する。
そして、CPU426は、BoundaryOffset設定数値ボックス309におけるToOn相当部に値が設定されていると判定した場合には、この設定されている値を取得し、ステップS1302に処理を進める。一方、CPU426は、BoundaryOffset設定数値ボックス309におけるToOn相当部に値が設定されていないと判定した場合には、図13及び図14に示す処理を終了する。
ステップS1302では、CPU426は、BoundaryOffset設定数値ボックス309におけるToOff相当部に値が設定されているか否かを判定する。
そして、CPU426は、BoundaryOffset設定数値ボックス309におけるToOff相当部に値が設定されていると判定した場合には、この設定されている値を取得し、ステップS1303に処理を進める。一方、CPU426はBoundaryOffset設定数値ボックス309におけるToOff相当部に値が設定されていないと判定した場合には、図13及び図14に示す処理を終了する。
ステップS1303では、CPU426は、ステップS1301で取得された値がステップS1302で取得された値よりも大きいか否かを判定する。
そして、CPU426は、ステップS1301で取得された値がステップS1302で取得された値よりも大きいと判定した場合には、ステップS1304に処理を進める。一方、CPU426は、ステップS1301で取得された値がステップS1302で取得された値よりも大きくないと判定した場合には、ステップS1313に処理を進める。
なお、ステップS1303におけるCPU426は、ステップS1301で取得された値がステップS1302で取得された値よりも大きいか否かを判定する輝度値判定部に相当する。
ステップS1304では、CPU426は、ステップS1201で記憶させたコマンドに、値がToOnのBoundaryTypeフィールド、及び値がToOffのBoundaryTypeフィールドを追加する。
これにより、図8(b)に示すように、この記憶させたコマンドには、2つの<IrCutFilterAutoAdjustment>タグが記述される。さらに、このコマンドには、<BoundaryType>タグが、この2つの<IrCutFilterAutoAdjustment>タグのうち1つ目の<IrCutFilterAutoAdjustment>タグに対応付けられ、且つ記述される。
その上、このコマンドには、ToOnが、この<BoundaryType>タグに対応付けられ、且つ記述される。
また、このコマンドには、<BoundaryType>タグが、この2つの<IrCutFilterAutoAdjustment>タグのうち2つ目の<IrCutFilterAutoAdjustment>タグに対応付けられ、且つ記述される。そして、このコマンドには、ToOffが、この<BoundaryType>タグに対応付けられ、且つ記述される。
ステップS1305では、CPU426は、BoundaryOffset設定数値ボックス309におけるToOn相当部に値が設定されているか否かを判定する。そして、CPU426は、BoundaryOffset設定数値ボックス309におけるToOn相当部に値が設定されていると判定した場合には、ステップS1306に処理を進める。
一方、CPU426は、BoundaryOffset設定数値ボックス309におけるToOn相当部に値が設定されていないと判定した場合には、ステップS1307に処理を進める。
ステップS1306では、CPU426は、ステップS1201で記憶させたコマンドに、BoundaryOffsetフィールドを追加する。また、このBoundaryOffsetフィールドの値は、BoundaryOffset設定数値ボックス309におけるToOn相当部に設定された値である。さらに、このBoundaryOffsetフィールドは、値がToOnのBoundarTypeフィールドに対応付けられる。
これにより、図8(b)に示すように、この記憶させたコマンドに、値が0.16の<BoundaryOffset>タグが、2つの<IrCutFilterAutoAdjustment>タグのうち1つ目のタグに対応付けられ、且つ記述される。
ステップS1307では、CPU426は、BoundaryOffset設定数値ボックス309におけるToOff相当部に値が設定されているか否かを判定する。
そして、CPU426は、BoundaryOffset設定数値ボックス309におけるToOff相当部に値が設定されていると判定した場合には、ステップS1308に処理を進める。一方、CPU426は、BoundaryOffset設定数値ボックス309におけるToOff相当部に値が設定されていないと判定した場合には、ステップS1309に処理を進める。
ステップS1308では、CPU426は、ステップS1201で記憶させたコマンドに、BoundaryOffsetフィールドを追加する。また、このBoundaryOffsetフィールドの値は、BoundaryOffset設定数値ボックス309におけるToOff相当部に設定された値である。
さらに、このBoundaryOffsetフィールドは、値がToOffのBoundarTypeフィールドに対応付けられる。
これにより、例えば、この記憶させたコマンドに、値が−0.76の<BoundaryOffset>タグが、2つの<IrCutFilterAutoAdjustment>タグのうち2つ目のタグに対応付けられ、且つ記述される。
ステップS1309では、CPU426は、遅延時間設定数値ボックス311におけるToOn相当部に値が設定されているか否かを判定する。そして、CPU426は、遅延時間設定数値ボックス311におけるToOn相当部に値が設定されていると判定した場合には、ステップS1310に処理を進める。
一方、CPU426は、遅延時間設定数値ボックス311におけるToOn相当部に値が設定されていないと判定した場合には、ステップS1311に処理を進める。
ステップS1310では、CPU426は、ステップS1201で記憶させたコマンドに、ResponseTimeフィールドを追加する。また、このResponseTimeフィールドの値は、遅延時間設定数値ボックス311におけるToOn相当部に設定された値である。さらに、このResponseTimeフィールドは、値がToOnのBoundarTypeフィールドに対応付けられる。
これにより、例えば、図8(b)に示すように、この記憶させたコマンドに、値がPT1M30Sの<ResponseTime>タグが、2つの<IrCutFilterAutoAdjustment>タグのうち1つ目のタグに対応付けられ、且つ記述される。
ステップS1311では、CPU426は、遅延時間設定数値ボックス311におけるToOff相当部に値が設定されているか否かを判定する。そして、CPU426は、遅延時間設定数値ボックス311におけるToOff相当部に値が設定されていると判定した場合には、ステップS1312に処理を進める。
一方、CPU426は、遅延時間設定数値ボックス311におけるToOff相当部に値が設定されていないと判定した場合には、ステップS1208に処理を進める。
ステップS1312では、CPU426は、ステップS1201で記憶させたコマンドに、ResponseTimeフィールドを追加する。また、このResponseTimeフィールドの値は、遅延時間設定数値ボックス311におけるToOff相当部に設定された値である。さらに、このResponseTimeフィールドは、値がToOffのBoundarTypeフィールドに対応付けられる。
これにより、例えば、図8(b)に示すように、この記憶させたコマンドに、値がPT1M10Sの<ResponseTime>タグが、2つの<IrCutFilterAutoAdjustment>タグのうち2つ目のタグに対応付けられ、且つ記述される。
ステップS1313では、CPU426は、表示部422に指示し、エラーを示すメッセージ等の情報を表示させる。この情報は、例えば、次のようなことを示す。即ち、値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値が、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値よりも低いことである。
ここで、本実施例におけるCPU426は、エラーを示す情報を表示部422に表示させる表示制御部に相当する。
以上のように、本実施例では、次のような場合を想定した。即ち、値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値が、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値よりも低い場合である。
そして、本実施例におけるクライアント装置2000は、このような場合に、クライアント装置2000によってそれぞれのBoundaryOffsetフィールドの値が設定される際に、この値が正しく設定されていないことをユーザに通知することができる。
これにより、クライアント装置2000を操作するユーザは、それぞれのBoundaryOffsetフィールドの値が正しく設定されていないSetImagingSettingsコマンドの送信前に、この正しく設定されていないことに気付くことができる。
この結果、被写体の輝度が低いにも関わらず、撮像光学系2の光路にIRCF4が挿入されてしまうこと、及び、被写体の輝度が高いにも関わらず、撮像光学系2の光路からIRCF4が抜去されてしまうことを未然に防止することができる。
なお、本実施例におけるIrCutFilterAutoAdjustment設定画面は、SetImagingSettingsコマンドに記述されるBoundaryOffsetフィールド等の値を入力させるためのユーザーインターフェース部に相当する。
(実施例4)
続いて、図15及び16を用い、本発明の実施例4について説明する。なお、上述の実施例と同一の構成要素については同一の符号を付し、その説明を省略することがある。
ここで、上述の実施例3では、次のような場合を想定した。即ち、値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値が、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値よりも低い場合である。
そして、上述の実施例3におけるクライアント装置2000は、このような場合に、クライアント装置2000によってそれぞれのBoundaryOffsetフィールドの値が設定される際に、この値が正しく設定されていないことをユーザに通知する。
これに対し、実施例4における撮像装置1000は、このような場合に、それぞれのBoundaryOffsetフィールドの値を、EEPROM28に記憶された変換テーブルを用いることにより変換する。
これにより、撮像光学系2の光路にIRCF4を挿入するか否かの判定に用いられる輝度閾値を、撮像光学系2の光路からIRCF4を抜去するか否かの判定に用いられる輝度閾値よりも大きくすることができる。これから、このような点を考慮した実施例4を説明する。
続いて、図15は、本実施例に係る、SetImaginsSettinsコマンドにおけるBoundaryOffsetフィールドの値と、被写体の輝度値とが対応付けられたテーブルである。
図15(a)は、SetImagingSettingsコマンドにおける値がToOnのBounaryTypeフィールドに対応付けられたBoundaryOffsetフィールドの値と、被写体の輝度値とが対応付けられたテーブル1401を示す。
又、図15(b)は、SetImagingSettignsコマンドにおける値がToOffのBounaryTypeフィールドに対応付けられたBoundaryOffsetフィールドの値と、被写体の輝度値とが対応付けられたテーブル1402を示す。
なお、これらのテーブルは、EEPROM28に記憶されるものとする。また、テーブル1401及び1402における被写体の輝度値は、輝度測定回路18から取得される輝度値である。
ToOn用のテーブル1401では、BoundaryOffsetの値「−1(−1.0)」には、被写体の輝度値「50」が対応付けられている。ここで、ToOn用のテーブル1401では、BoundaryOffsetの値が大きくなるに連れて、この値に対応付けられる被写体の輝度値も大きくなる。
そして、ToOn用のテーブル1401では、BoundaryOffsetの値「+1(+1.0)」には、被写体の輝度値「100」が対応付けられている。
又、ToOff用のテーブル1402では、BoundaryOffsetの値「−1(−1.0)」には、被写体の輝度値「20」が対応付けられている。ここで、テーブル1402では、BoundaryOffsetの値が大きくなるに連れて、この値に対応付けられる被写体の輝度値も大きくなる。
そして、ToOff用のテーブル1402では、BoundaryOffsetの値「+1(+1.0)」には、被写体の輝度値「40」が対応付けられている。
このように、テーブル1401における被写体の輝度値の範囲(第1の範囲)の下限値は、テーブル1402における被写体の輝度値の範囲(第2の範囲)の上限値よりも大きい。
続いて、図16は、本実施例に係る撮像装置1000における、SetImagingSettings受信処理を説明するためのフローチャートである。
なお、この処理は、CPU26により実行される。そして、CPU26は、クライアント装置2000からI/F14を介してSetImagingSettingsのコマンドを受信した場合に、この処理の実行を開始する。また、I/F14により受信されたSetImagingSettingsのコマンドは、EEPROM28に記憶されるものとする。
ステップS1501乃至S1503は、ステップS901乃至903と同様であるので、その説明を省略する。
ステップS1504では、CPU26は、ステップS1503で読み出されたBoundaryOffsetの値に対応付けられた被写体の輝度値を、EEPROM28に記憶されたテーブル1401から読み出す。そして、CPU26は、読み出した輝度値を、撮像光学系2の光路にIRCF4を挿入するか否かを判定するために用いられる輝度閾値として、判定回路20に設定する。
なお、本実施例におけるCPU26は、I/F14で受信されたSetImagingSettingsコマンドに記述されたBoundaryOffsetの値を変換する変換部に相当する。
ステップS1505は、ステップS904と同様であるので、その説明を省略する。
ステップS1506では、CPU26は、ステップS1505で読み出されたBoundaryOffsetの値に対応付けられた被写体の輝度値を、EEPROM28に記憶されたテーブル1402から読み出す。そして、CPU26は、読み出した輝度値を、撮像光学系2の光路からIRCF4を抜去するか否かを判定するために用いられる輝度閾値として、判定回路20に設定する。
ステップS1507は、ステップS1108と同様であるので、その説明を省略する。
以上のように、本実施例の撮像装置1000は、テーブル1401に基づき、値がToOnのBoundaryTypeに対応するBoundaryOffsetの値を、撮像光学系2の光路にIRCF4を挿入するか否かを判定するための輝度閾値に変換する。
更に、撮像装置1000は、テーブル1402に基づき、値がToOffのBoundaryTypeに対応するBoundaryOffsetの値を、撮像光学系2の光路からIRCF4を抜去するか否かを判定するための輝度閾値に変換する。
ここで、テーブル1401における被写体の輝度値の最低値(「50」)は、テーブル1402における被写体の輝度の最高値(「40」)よりも大きい。
これにより、次のような場合でも、撮像光学系2の光路にIRCF4を挿入するか否かを判定するための輝度閾値が、この光路からIRCF4を抜去するか否かを判定するための輝度閾値よりも小さくなってしまうことを防止することができる。
即ち、値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値が、値がToOffのBoundaryTypeフィールドに対応するBounaryOffsetフィールドの値よりも小さい場合である。
この結果、クライアント装置2000によってそれぞれのBoundaryOffsetフィールドの値がどのように設定されたとしても、被写体の輝度が低いにも関わらず、撮像光学系2の光路にIRCF4が挿入されてしまうことを防止することができる。更に、被写体の輝度が高いにも関わらず、撮像光学系2の光路からIRCF4が抜去されてしまうことを防止することができる。
なお、本実施例では、テーブル1401における被写体の輝度値の最低値は、テーブル1402における被写体の輝度値の最高値よりも大きくなるようにした。ここで、上述のような防止効果は小さくなってしまうが、次のような構成も考えられる。
即ち、テーブル1402における被写体の輝度値の最高値を、テーブル1401における被写体の輝度値の指定値よりも僅かに大きくさせ、テーブル1401の被写体の輝度値の範囲とテーブル1402の被写体の輝度値の範囲とを一部重複させる構成である。
(実施例5)
続いて、図17を用いて、本発明の実施例5について説明する。なお、上述の実施例と同一の構成要素については同一の符号を付し、その説明を省略することがある。
ここで、上述の実施例4における撮像装置1000は、EEPROM28に記憶されたテーブルに基づき、それぞれのBoundaryOffsetフィールドの値を、判定回路20で用いられる輝度閾値に変換する。
これにより、次のような場合でも、撮像光学系2の光路にIRCF4を挿入するか否かを判定するための輝度閾値が、この光路からIRCF4を抜去するか否かを判定するための輝度閾値よりも小さくなってしまうことを防止することができる。
即ち、値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値が、値がToOffのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値よりも低い場合である。
これに対し、実施例5における撮像装置1000は、このような場合に、それぞれのBoundaryOffsetフィールドの値を交換し、交換した値で判定回路20に輝度閾値を設定する。
これにより、EEPROM28にテーブルを記憶させず、撮像光学系2の光路にIRCF4を挿入するか否かを判定するための輝度閾値が、この光路からIRCF4を抜去するか否かを判定するための輝度閾値よりも小さくなってしまうことを防止することができる。
続いて、図17は、本実施例に係る撮像装置1000における、SetImagingSettings受信処理を説明するためのフローチャートである。
ステップS1601乃至S1606は、ステップS901乃至S906と同様であるので、その説明を省略する。
ステップS1607では、CPU26は、ステップS1603で読み出された値に対応する輝度閾値を、撮像光学系2の光路からIRCF4を抜去するか否かを判定するための輝度閾値として、EEPROM28に記憶させる。
ステップS1608では、CPU26は、ステップS1604で読み出された値に対応する輝度閾値を、撮像光学系2の光路にIRCF4を挿入するか否かを判定するための輝度閾値として、EEPROM28に記憶させる。
以上のように、本実施例では、次のような場合を想定している。即ち、値がToOnのBoundaryTypeフィールドに対応するBoundaryOffsetフィールドの値が、値がToOffのBoundaryTypeフィールドに対応するBounaryOffsetフィールドの値よりも小さい場合である。
そして、本実施例における撮像装置1000は、このような場合に、それぞれのBoundaryOffetフィールドの値を交換し、交換した値に基づき、判定回路20に輝度閾値を設定する。
これにより、EEPROM28にテーブルを記憶させず、撮像光学系2の光路にIRCF4を挿入するか否かを判定するための輝度閾値が、この光路からIRCF4を抜去するか否かを判定するための輝度閾値よりも小さくなってしまうことを防止することができる。
なお、上述の実施例では、撮像光学系2の光路に挿脱される光学フィルタとして、IRCF4を用いたが、これに限られるものではない。例えば、このような光学フィルタとして、IRCF4の代わりに、撮像素子から出力される撮像画像の発色に影響を与えることなく、被写体からの光の光量を少なくするためのNDフィルタを用いても良い。
また、上述の実施例における、BoundaryOffsetフィールドは、例えば、赤外線遮断フィルタの有効(On)/無効(Off)の切り換えのための境界露光レベルを調整するためのパラメータであると言える。ここで、この有効とは、撮像光学系2の光路にIRCF4が挿入された状態であることを意味する。また、この無効とは、撮像光学系2の光路からIRCF4が抜去された状態であることを意味する。
そして、このBoundaryOffsetフィールドの値は、例えば、−1.0から+1.0に正規化された値であり、単位はない。さらに、BoundaryOffsetフィールドの値は、0が初期値であり、且つ、−1.0が最も暗く、+1.0が最も明るい。
また、上述の実施例におけるSetImagingSettingsコマンドには、値CommonのBoundaryTypeフィールドを記述することができる。ここで、このコマンドには、値がToOnのBoundaryTypeフィールド、及び値がToOffのBoundaryTypeフィールドが記述されていないものとする。
一方、上述の実施例におけるSetImagingsSettingsコマンドには、値がToOnのBoundaryTypeフィールド及び値がToOffのBoundaryTypeフィールドを記述することができる。ここで、このコマンドには、値がCommonのBoundaryTypeフィールドが記述されていないものとする。
したがって、SetImagingSettingsコマンドには、撮像光学系2の光路にIRCF4を挿入する場合及びこの光路からIRCF4を抜去する場合のそれぞれについて、BoundaryOffsetフィールドが別々に記述されることができる。さらに、このSetImagingSettingsコマンドには、このそれぞれについて、BoundaryOffsetフィールドが共通に記述されることができる。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウエア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に提供し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
以上、本発明の好ましい実施例について説明したが、本発明はこれらの実施例に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。