以下に、本発明の好ましい実施例を、添付の図面に基づいて詳細に説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は、図示された構成に限定されるものではない。
(実施例1)
以下に、図1を参照して本実施例に係るネットワーク構成について説明する。
図1(a)は、本実施例に係る監視カメラの一例を示す図である。図1における監視カメラ1000は、レンズを含む筐体1101、及びアーム機構1102を備える。アーム機構1102は、監視カメラ1000を天井等の設置場所から吊り下げる。又、アーム機構1102は、筐体1101をパン方向及びチルト方向に回転させることにより監視カメラ1000の撮像方向を変更可能であり、且つこの撮像方向を固定することができる。
なお、本実施例における監視カメラ1000は、動画像を撮像する撮像装置であり、より詳細には、監視に用いられるネットワークカメラであるものとする。又、アーム機構1102には、筐体1101をパン方向に回転させるためのステッピングモータと、筐体1101をチルト方向に回転させるためのステッピングモータと、が設けられているものとする。
続いて、図1(b)は、本実施例に係る監視システムのシステム構成の一例を示す図である。本実施例における監視システムにおいて、監視カメラ1000とクライアント装置2000とは、IPネットワーク網1500を介して(ネットワーク経由で)相互に通信可能な状態で接続される。
なお、本実施例におけるクライアント装置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は、これらのコマンドに対するレスポンスや画像ストリーミングをクライアント装置2000に送信する。
続いて、図2は、本実施例に係る監視カメラ1000のハードウェア構成の一例を示す図である。図2において、レンズ1001は、被写体の像を撮像部1002に結像する。撮像部1002は、レンズ1001により結像された被写体の像を撮像することにより、撮像画像を生成する。そして、撮像部1002は、生成した撮像画像を画像処理部1003に出力する。
画像処理部1003は、後述の制御部1008の指示に従い、撮像部1002から出力された撮像画像に画像処理を施す。そして、画像処理部1003は、画像処理を施した撮像画像を圧縮符号化部1004に出力する。圧縮符号化部1004は、制御部1008の指示に従い、画像処理部1003から出力された撮像画像を圧縮符号化する。
通信部1005は、圧縮符号化部1004で圧縮符号化された撮像画像を、IPネットワーク網1500経由でクライアント装置2000に配信する。そして、通信部1005は、クライアント装置2000から送信されたOSD設定コマンドを、IPネットワーク網1500を介して受信する。更に、通信部1005は、クライアント装置2000から送信された符号化設定コマンドを、IPネットワーク網1500を介して受信する。
又、通信部1005は、撮像画像に対する設定コマンド(以下、画像設定コマンドと称することがある)を受信する。この画像設定コマンドは、例えば、画像サイズの設定コマンド、被写体像に対するホワイトバランス及びゲイン等の露出制御に関する設定コマンド等を含む。なお、本実施例における通信部1005は、クライアント装置2000から画像を受信する受信部に相当する。
レンズ制御部1006は、被写体の像に応じて絞りを変化させ、フォーカス位置を調整させることでピント合わせを実行させ、赤外線遮断フィルターの挿脱等を行わせるように、レンズ1001を制御する。又、OSD生成部1007は、制御部1008の指示に従い、OSD画像を生成する。そして、OSD生成部1007は、生成したOSD画像を圧縮符号化部1004に出力する。
ここで、圧縮符号化部1004は、画像処理部1003が出力した撮像画像に、OSD生成部1007が出力したOSD画像を合成する。例えば、圧縮符号化部1004は、画像処理部1003が出力した撮像画像に対し、OSD生成部1007が出力したOSD画像を重畳する。次に、圧縮符号化部1004は、合成した撮像画像を圧縮符号化する。そして、圧縮符号化部1004は、圧縮符号化した撮像画像を通信部1005に出力する。
なお、本実施例における圧縮符号化部1004は、撮像部1002から出力された撮像画像にOSD画像を重畳する重畳部に相当する。又、本実施例におけるOSD画像は、重畳情報に相当する。
制御部1008は、監視カメラ1000の全体の制御を行う。制御部1008は、例えばCPU(Central Processing Unit)により構成され、後述の記憶部1009に記憶されたプログラムを実行する。又は、制御部1008は、ハードウェアを用いて制御を行うこととしても良い。
制御部1008は、通信部1005により受信された画像設定コマンドを解析する。次に、制御部1008は、解析した画像設定コマンドに基づき、画像設定情報を生成する。そして、制御部1008は、生成した画像設定情報を画像処理部1003に出力し、この出力と同時に、生成した画像設定情報を記憶部1009に記憶させる。
なお、画像処理部1003は、制御部1008から出力された画像設定情報に従い、撮像部1002から出力された撮像画像に画像処理を施し、画像処理を施した撮像画像を圧縮符号化部1004に出力する。
制御部1008は、通信部1005により受信されたOSD設定コマンドを解析する。次に、制御部1008は、解析したOSD設定コマンドに基づき、OSD設定情報を生成する。そして、制御部1008は、生成したOSD設定情報をOSD生成部1007に出力し、この出力と同時に、生成したOSD設定情報を記憶部1009に記憶させる。
なお、OSD生成部1007は、制御部1008が出力したOSD設定情報に従い、OSD画像を生成する。又、このOSD設定情報は、このOSD画像の色、及び重畳位置情報等を含む。ここで、重畳位置情報は、画像処理部1003から出力された撮像画像にOSD画像を重畳する位置を示す情報である。
制御部1008は、通信部1005により受信された符号化設定コマンドを解析する。次に、制御部1008は、解析した符号化設定コマンドに基づき、符号化設定情報を生成する。そして、制御部1008は、生成した符号化設定情報を記憶部1009に記憶させた後、生成した符号化設定情報を圧縮符号化部1004に出力する。
なお、制御部1008から出力された符号化設定情報は、例えば、データの符号化方式画像サイズ(或いは画像の解像度)等に関する指定情報を含む。
圧縮符号化部1004は、画像処理部1003から出力された撮像画像を、制御部1008が出力した符号化設定情報で指定された画像サイズ若しくは画像の解像度に変換する。又は、圧縮符号化部1004は、画像処理部1003から出力された撮像画像とOSD生成部1007から出力されたOSD画像とが合成された画像を、制御部1008が出力した符号化設定情報で指定された画像サイズ若しくは画像の解像度に変換する。
そして、圧縮符号化部1004は、変換した撮像画像を、制御部1008が出力した符号化設定情報で指定された符号化方式で圧縮符号化する。なお、本実施例では、この指定された符号化形式には、例えば、JPEG、MPEG、H.264、及びH.265等が含まれるものとする。
上記のごとく動作することにより、本実施例における監視カメラ1000は、同一被写体の画像を、画像サイズがそれぞれ異なる複数の画像に変換することができる。次に、監視カメラ1000は、変換した複数の画像を、符号化方式がそれぞれ異なる複数の画像に圧縮符号化することができる。そして、監視カメラ1000は、圧縮符号化された画像のそれぞれを、ほぼ同時に、ストリーミング配信することができる。
なお、ストリーミング配信される画像は、通信部1005を介して外部に出力される。
続いて、図17は、本実施例に係るクライアント装置2000のハードウェア構成の一例を示す図である。本実施例におけるクライアント装置2000は、IPネットワーク網1500に接続されるコンピュータ装置として構成される。
制御部2005は、クライアント装置2000の全体の制御を行う。制御部2005は、例えば、CPUにより構成され、後述の記憶部2006に記憶されたプログラムを実行する。又、制御部2005は、ハードウェアを用いて制御を行うこととしてもよい。そして、記憶部2006は、制御部2005が実行するプログラム格納領域、プログラム実行中のワーク領域、データの格納領域として使用される。
通信部2004は、制御部2005の指示を受け、監視カメラ1000にコマンド等を送信する。又、通信部2004は、制御部2005の指示を受け、監視カメラ1000から、コマンドのレスポンスやストリーミング配信された画像等を受信する。
入力部2001は、ユーザからの指示の入力を受け付ける。例えば、入力部2001は、ユーザからの指示として、監視カメラ1000に対する各種のコマンドの送信指示の入力を受け付けることができる。又、入力部2001は、制御部2005が記憶部2006に記憶されたプログラムを実行することにより生成されるユーザへの問い合わせメッセージ等に対するユーザの応答の入力を受け付けることができる。
復号伸長部2003は、通信部2004から出力された画像を復号し且つ伸長する。そして、復号伸長部2003は、この復号し且つ伸長された画像を表示部2002に出力する。表示部2002は、復号伸長部2003から出力された画像を表示する。又、表示部2002は、制御部2005が記憶部2006に記憶されたプログラムを実行することにより生成されるユーザへの問い合わせメッセージ等を表示させることができる。
続いて、図3は、本実施例に係る、撮像部1002から出力された撮像画像とOSD生成部1007から出力されたOSD画像とを合成するための処理の一例を示すフローチャートである。なお、図3で示した処理は、制御部1008により実行されるものとする。
ステップS3001では、制御部1008は、クライアント装置2000から送信されたOSD設定コマンドを、通信部1005を介して受信する。制御部1008は、OSD設定コマンドを解析し、OSD設定情報を生成する。
ステップS3002では、制御部1008は、ステップS3001で生成されたOSD設定情報をOSD生成部1007に出力する。又、制御部1008は、この出力と同時に、画像処理部1003に設定されている画像設定情報をOSD生成部1007に出力する。なお、画像設定情報は、画像サイズに関する情報等を含む。
ステップS3003では、制御部1008は、OSD生成部1007に指示し、OSD画像用のビットマップデータを準備させる。なお、このビットマップデータは、OSD生成部1007の内部に設けられたメモリに保持されるものとする。
例えば、OSD画像がテキストである場合には、制御部1008は、OSD生成部1007に指示し、異なるサイズのフォントデータを記憶部1009から読み出させ、撮像画像の画像サイズに合わせた複数のビットマップデータを準備させる。これは、撮像画像の画像サイズに依存することなく、撮像画像に対して均一の比率でOSD画像が撮像画像に重畳表示されるようにするためである。
ステップS3004では、制御部1008は、OSD生成部1007に指示し、OSD画像をビットマップデータとして生成させる。このOSD画像は、ステップS3001で生成されたOSD設定情報で指定された色などに応じたものである。
ステップS3005では、制御部1008は、OSD生成部1007に指示し、圧縮符号化部1004に対してOSD設定情報を出力させる。
ここで、OSD設定情報は、画像処理部1003から出力された撮像画像に対するビットマップデータの合成位置を定めるための情報を含む。又、この合成位置は、ステップS3001で受信されたOSD設定情報で指定されたOSD画像の重畳位置情報とステップS3004で生成されたビットマップデータとに基づき、求められる。
又、圧縮符号化部1004は、画像処理部1003から出力された撮像画像に、OSD生成部1007から出力されたOSD画像を合成する。この合成の際、圧縮符号化部1004は、このOSD画像及びOSD生成部1007から出力されたOSD設定情報を、撮像画像の画像サイズ又は撮像画像の解像度に対して反映する。
そして、圧縮符号化部1004は、合成された撮像画像を、制御部1008が出力した符号化設定情報で指定された符号化方式に従って圧縮符号化する。このような処理により、OSD画像が合成された撮像画像が、通信部1005を介してクライアント装置2000にストリーミング配信される。
なお、この通信部1005は、圧縮符号化部1004によりOSD画像が合成された撮像画像を、IPネットワーク網1500を介して配信する配信部の一例である。
又、OSD設定情報で指定されたOSD画像が、例えば、時刻のように毎秒更新されるものを含む場合、OSD生成部1007は、この更新の都度、新たなOSD画像及びOSD設定情報を、圧縮符号化部1004に反映する。
続いて、図4は、OSD画像に含まれるテキストに用いられるフォントデータの一例を示す図である。(換言すれば、図4は、OSD画像として重畳されるビットマップデータの構成の一例を示す図である。)このフォントデータは、記憶部1009に記憶される。
図4におけるデータエリア5001は、OSD画像に含まれる文字であるFontを表し、英数字および記号といった文字を表す。又、データエリア5002は、OSD画像に含まれる文字の背景であるBackgroundを表す。より詳細には、データエリア5002は、OSD画像に含まれる文字であるFont5001を囲む矩形によって形成される背景である。
なお、本実施例におけるデータエリア5001の色は、OSD画像に含まれる文字の前景色の一例である。
データエリア5003は、OSD画像に含まれる文字の輪郭であるOutlineを表す。より詳細には、データエリア5003は、OSD画像に含まれる文字であるFont5001を縁取る輪郭であり、Font5001とBackground5002との境界を表す。
なお、本実施例におけるクライアント装置2000は、図4で示したビットマップデータにおけるFont5001、Background5002、及びOutline5003の夫々に対し、色及び透明度を指定することができる。又、Font5001、Background5002、及びOutline5003のそれぞれの設定値は、上述したOSD設定情報によって設定される。
又、Font5001、Background5002、及びOutline5003には、別々の色(又は透明度)を設定することもでき、且つ共通の色(又は透明度)を設定することもできる。更に、Font5001、Background5002、及びOutline5003のそれぞれの色(又は透明度)の指定が省略された場合には、それぞれの色(又は透明度)のデフォルト設定が使用される。
又、本実施例では、ストリーミング配信される画像中に複数のOSD画像が表示されている場合に、OSD設定の各ビットマップに対するFont5001、Background5002、Outline5003の色や透明度は、共通で適用されるものとする。しかしながら、このような構成に限られるものではない。例えば、各位置におけるOSD設定で個別の設定を指定することができるように構成しても良い。
続いて、図5は、監視カメラ1000とクライアント装置2000との間における、ストリーミング配信される画像のパラメータの設定開始から画像がストリーミング配信されるまでの、典型的なコマンドシーケンスを説明するためのシーケンス図である。
なお、本実施例におけるトランザクションとは、クライアント装置2000から監視カメラ1000へ送信されるコマンドと、それに対して監視カメラ1000がクライアント装置2000へ返送するレスポンスのペアのことを指している。
図5における6000は、機器探索のトランザクションである。クライアント装置2000は、ネットワーク上に接続されている監視カメラを探索するための所定の探索条件を含むProbeコマンドをマルチキャストで送信する。Probeコマンドを受信した監視カメラのうち、探索条件に合致するものは、ProbeMatchコマンドを、Probeコマンドの送信元であるクライアント装置2000に返送し、探索が完了する。
6001は、GetProfilesトランザクションである。このトランザクションは、配信プロファイルに相当するMediaProfileを取得するためのトランザクションである。クライアント装置2000は、GetProfilesコマンドを監視カメラ1000に送信する。
そして、GetProfilesコマンドを受信した監視カメラ1000は、MediaProfileのリストをクライアント装置2000に送信する。これにより、クライアント装置2000は、MediaProfileを識別するための配信プロファイルIDとともに、監視カメラ1000で現在使用可能なMediaProfileのリストを取得する。
6002は、GetVideoSourcesトランザクションである。このトランザクションは、画像処理部1003の機能を取得するためのトランザクションである。クライアント装置2000は、GetVideoSourcesコマンドを監視カメラ1000に送信する。そして、GetVideoSourcesコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返送する。
このトランザクションにより、クライアント装置2000は、監視カメラ1000の保持する画像処理機能の設定情報を取得する。
6003は、GetVideoSourceConfigurationsトランザクションである。このトランザクションは、監視カメラ1000から画像処理設定のリストを取得するためのトランザクションである。クライアント装置2000は、GetVideoSourcesコマンドを監視カメラ1000に送信する。
そして、GetVideoSourcesコマンドを受信した監視カメラ1000は、監視カメラ1000が保持する画像処理設定のIDを含むリストをクライアント装置2000に返送する。なお、このリストは、制御部1008により生成される画像設定情報の一例である。
6004は、GetVideoEncorderConfigurationsトランザクションである。このトランザクションは、圧縮符号化部1004の機能を取得するためのトランザクションである。クライアント装置2000は、GetVideoEncorderConfigurationsコマンドを監視カメラ1000に送信する。又、このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。
このトランザクションにより、クライアント装置2000は、監視カメラ1000の圧縮符号化部1004が提供する機能に関する情報を取得する。この情報は、制御部1008により生成される符号化設定情報の一例である。
6005は、GetVideoEncorderConfigurationOptionsトランザクションである。このトランザクションは、圧縮符号化部1004に対する設定のリストを取得するためのトランザクションである。クライアント装置2000は、GetVideoEncorderConfigurationOptionsコマンドを監視カメラ1000に送信する。
このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。このトランザクションにより、クライアント装置2000は、記憶部1009に記憶されている圧縮符号化設定のIDを含むリストを監視カメラ1000から取得する。
6006は、CreateProfileのトランザクションである。このトランザクションは、配信プロファイルの作成を要求するためのトランザクションである。クライアント装置2000は、CreateProfileコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。
このトランザクションにより、クライアント装置2000は、配信プロファイルを監視カメラ1000内に新たに作成し、作成した配信プロファイルのIDを得ることができる。又、監視カメラ1000は、この新たに作成された配信プロファイルを記憶する。
6007は、AddVideoSourceConfigurationのトランザクションである。このトランザクションは、画像処理設定の追加を要求するためのトランザクションである。クライアント装置2000は、AddVideoSourceConfigurationのコマンドを監視カメラ1000に送信する。
このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返送する。このトランザクションにより、クライアント装置2000は、6006で取得した配信プロファイルIDと、6003で取得した画像処理設定のIDを指定する。監視カメラ1000は、指定された配信プロファイルに指定された画像処理設定を関連付けて記憶する。
なお、6007のコマンドは、上述の画像設定コマンドの一例である。
6008は、AddVideoEncorderConfigurationのトランザクションである。このトランザクションは、圧縮符号化設定の追加を要求するためのトランザクションである。クライアント装置2000は、AddVideoEncorderConfigurationのコマンドを監視カメラ1000に送信する。監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返送する。
このトランザクションにより、クライアント装置2000は、6006で取得した配信プロファイルIDと、6004で取得した圧縮符号化設定のIDを指定し、配信プロファイルに圧縮符号化設定を関連付ける。監視カメラ1000は、指定された配信プロファイルに指定された圧縮符号化設定を関連付けて記憶する。
6009は、SetVideoEncorderConfigurationのトランザクションである。このトランザクションは、圧縮符号化設定を変更するためのトランザクションである。クライアント装置2000は、SetVideoEncorderConfigurationのコマンドを監視カメラ1000に送信する。
このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。このトランザクションにより、クライアント装置2000は、6004で取得した圧縮符号化設定の内容を、6005で取得した選択肢に基づいて変更する。例えば、圧縮符号化方式や切出しサイズを変更する。監視カメラ1000は、変更された圧縮符号化設定の内容を記憶する。
なお、6008のコマンド、及び6009のコマンドは、上述の符号化設定コマンドの一例である。
6010は、GetStreamUriのトランザクションである。このトランザクションは、配信アドレスの取得を要求するためのトランザクションである。このトランザクションにて、クライアント装置2000は、6006で取得した配信プロファイルIDを指定し、指定した配信プロファイルの設定に基づいて配信される映像を取得するための配信アドレスを取得する。
監視カメラ1000は、指定されたプロファイルIDに関連付けられている画像処理設定、及び圧縮符号化設定の内容に対応する画像が配信されるための配信アドレスを、クライアント装置2000に返送する。
6011は、DESCRIBEのトランザクションである。このトランザクションは、配信情報の取得を要求するためのトランザクションである。クライアント装置2000は、DESCRIBEのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返送する。
このトランザクションにおいて、クライアント装置2000は、6010で取得した配信アドレスを指定し、監視カメラ1000の配信情報に関する詳細データを取得する。
6012は、SETUPのトランザクションである。このトランザクションは、配信設定を要求するためのトランザクションである。クライアント装置2000は、SETUPのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返送する。
このトランザクションにおいて、クライアント装置2000は、6011で取得した配信情報に関する詳細データに基づき、監視カメラ1000に対してストリーミングの準備を行わせる。このコマンドを実行することにより、クライアント装置2000と監視カメラ1000との間で、セッション番号を含むストリームの伝送方法が共有される。
6013は、PLAYのトランザクションである。このトランザクションは、配信を開始させるためのトランザクションである。クライアント装置2000は、PLAYのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返送する。
クライアント装置2000は、PLAYのコマンドを監視カメラ1000に送信する際、6012で取得したセッション番号を用いることで、監視カメラ1000に指定した配信プロファイルの設定に基づく画像のストリームを開始させることができる。
6014は、監視カメラ1000からクライアント装置2000に配信されるストリームである。6013で開始を要求されたストリームを6012において共有された伝送方法によって配信する。
6015は、TEARDOWNのトランザクションである。このトランザクションは、配信を停止させるためのトランザクションである。クライアント装置2000は、TEARDOWNのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。
このトランザクションにおいてクライアント装置2000は、6012にて取得したセッション番号を指定して、配信中のストリーミングを停止させる。
続いて、図6は、監視カメラ1000とクライアント装置2000との間における、画像重畳処理の設定などのための典型的なコマンドシーケンスを示している。
図6における6050は、GetServicesのトランザクションである。このトランザクションは、監視カメラ1000の機能の取得を要求するためのトランザクションである。クライアント装置2000は、GetServicesコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。
このトランザクションにおいて、クライアント装置2000は、監視カメラ1000が持つ機能のリストを取得する。クライアント装置2000は、画像処理機能及び圧縮符号化機能に対応しているかを確認する。
6051は、GetServiceCapabilitiesのトランザクションである。このトランザクションは、画像重畳処理に対応する機能の取得を要求するためのトランザクションである。クライアント装置2000は、GetServiceCapabilitiesのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスを返送する。
このトランザクションにおいてクライアント装置2000は、監視カメラ1000が画像重畳処理に対応しているかどうかを確認する。例えば、制御部2005は、監視カメラ1000が画像重畳処理をすることができるか否かを示す重畳可否情報を、監視カメラ1000から通信部2004を介して受信する。
6052は、GetVideoSourceConfigurationsのトランザクションである。このトランザクションは、画像処理設定のリストを取得するためのトランザクションである。クライアント装置2000は、GetVideoSourceConfigurationsのコマンドを監視カメラ1000に送信する。
このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返信する。このトランザクションにより、クライアント装置2000は、監視カメラ1000の保持する画像処理設定のIDを含むリストを監視カメラ1000から取得する。なお、このリストは、制御部1008により生成される画像設定情報の一例である。
6053は、GetOSDsコマンドのトランザクションである。このトランザクションは、画像重畳設定リストの取得を要求するためのトランザクションである。クライアント装置2000は、GetOSDsのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返送する。
このトランザクションにおいて、クライアント装置2000は、6052で取得した画像処理設定IDを指定する。これにより、クライアント装置2000は、監視カメラ1000が保持している画像処理設定に関連付けられた画像重畳設定のIDであるOSDTokenを含む全ての画像重畳設定のリストを取得する。
6054は、GetOSDOptionsのトランザクションである。このトランザクションは、画像重畳設定のオプションを取得するためのトランザクションである。クライアント装置2000は、GetOSDOptionsのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返送する。
このトランザクションにおいて、クライアント装置2000は、6052で取得した画像処理設定IDを指定する。これにより、クライアント装置2000は、監視カメラ1000が保持している画像処理設定に関連付けられた画像重畳設定の各パラメータに対する、設定可能な選択肢や設定値の範囲を取得する。
6055は、CreateOSDのトランザクションである。このトランザクションは、画像重畳の設定を作成するためのトランザクションである。クライアント装置2000は、CreateOSDのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返送する。
このトランザクションにより、クライアント装置2000は、6054で取得した選択肢に基づいて新しい画像重畳設定を監視カメラ1000内に作成することができる。監視カメラ1000は、クライアント装置2000から指定された画像重畳設定に応じて画像重畳設定IDであるOSDTokenを返す。
6056は、GetOSDのトランザクションである。このトランザクションは、画像重畳設定の取得を要求するためのトランザクションである。クライアント装置2000は、GetOSDのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返送する。
このトランザクションにおいて、クライアント装置2000は、6055で取得した画像重畳設定IDであるOSDTokenを用いて画像重畳設定を取得する。なお、6053のレスポンス、及び6056のレスポンスは、制御部1008により生成されるOSD設定情報の一例である。
6057は、SetOSDのトランザクションである。このトランザクションは、画像重畳設定を変更するためのトランザクションである。クライアント装置2000は、SetOSDのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返送する。
このトランザクションにおいて、クライアント装置2000は、画像重畳設定IDであるOSDTokenを指定する。これにより、クライアント装置2000は、6056で取得した画像重畳設定や、6055で新たに作成した画像重畳設定の内容を、6054で取得した選択肢に基づいて変更することができる。例えば、重畳位置や、重畳テキストの内容を変更する。
なお、6057のレスポンスには、OSDTokenが含まれていない。又、6055のコマンド、及び6057のコマンドは、上述のOSD設定コマンドの一例である。
6058は、DeleteOSDのトランザクションである。このトランザクションは、画像重畳設定を削除するためのトランザクションである。クライアント装置2000は、DeleteOSDのコマンドを監視カメラ1000に送信する。このコマンドを受信した監視カメラ1000は、このコマンドのレスポンスをクライアント装置2000に返送する。
このトランザクションにより、クライアント装置2000は、6053や6056で取得した画像重畳設定や、6055で新たに作成した画像重畳設定を、監視カメラ1000から削除する。監視カメラ1000は、指定された画像重畳設定IDのOSDTokenを持つ画像重畳設定を削除する。
続いて、図7は、本実施例に係るデータ型であるOSDConfigurationの構成を説明するための図である。なお、図7に示すデータ型は、例えば、XML Schema Definition言語(以下XSDと称することがある)を用いて定義されるものとする。
図7(a)は、OSDConfiguration型の定義例を示す図である。図7(a)に示すように、OSDConfiguration型は、XMLのcomplexType宣言により、複雑型として定義される。また、当該のOSDConfiguration型は、complexContent要素、及び、extension要素とそのbase属性によって、DeviceEntity型を拡張した拡張型であることが示される。
なお、当該OSDConfiguration型は、sequence要素により、その順番が定義通りに出現するデータ拡張が行われていることが示される。
図7(b)は、OSDRefernece型の定義例を示す図である。OSDReference型のデータにおいては、simpleContent要素、及び、extension要素とそのbase属性によって、ReferenceToken型を拡張した拡張型であることが示される。
図7(c)は、OSDType型の定義例を示す図である。OSDType型の定義例においては、simpleType要素によりXMLの単純型であるとともに、restriction要素とそのbase属性により、当該型がstring型の値制限型であることが示される。図7(c)の例では、OSDType型は、その値としてTextまたはImageもしくはExtendedであることが示されている。
図7(d)は、OSDPosConfiguration型の定義例を示す図である。当該OSDPosConfiguration型の定義例においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
図7(e)は、OSDTextConfiguration型の定義例を示す図である。当該OSDTextConfiguration型の定義例においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
図7(f)は、OSDImgConfiguration型を示す図である。当該のOSDImgConfiguration型の定義例においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
図7(g)は、OSDConfigurationExtension型の定義例を示す図である。当該OSDConfigurationExtension型の定義例においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
続いて、図8及び図9は、本実施例に係るデータ型であるOSDConfigurationOptions型の構成を説明するための図である。なお、図8及び図9に示すデータ型は、図7と同様、XSDを用いて定義されるものとする。
図8(a)は、OSDConfigurationOptions型の定義例を示す図である。OSDConfigurationOptions型においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
上記OSDConfigurationOptions型において、最初のフィールドは、int型のMaximumNumberOfOSDsである。次のフィールドは、OSDType型のTypeである。次のフィールドは、string型のPositionOptionである。次のフィールドは、OSDTextOptions型のTextOptionである。
更に、次のフィールドは、OSDImageOptions型のImageOptionである。最後のフィールドは、OSDConfigurationOptionsExtension型のExtensionである。
上記、Type、および、PositionOptionの各フィールドは、maxOccurs=“unbounded”指定子により、当該OSDConfigurationOptions型内部に複数個存在可能なことが示される。また、TextOption、ImageOption、及びExtensionはminOccurs=“0”指定子により、省略可能であることが示される。
図8(b)は、OSDTextOptions型の定義例を示す図である。当該のOSDTextOptions型においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
OSDTextOptions型において、最初のフィールドはstring型のTypeフィールドである。次のフィールドは、IntRange型のFontSizeRange型である。次のフィールドは、string型のDateFormatフィールドである。次のフィールドは、同じくstring型のTimeFormatフィールドである。次のフィールドは、OSDColorOptions型のFontColorフィールドである。
又、次のフィールドは、おなじくOSDColorOptions型のBackgroundColorフィールドである。最後のフィールドは、OSDTextOptionsExtension型のExtensionフィールドである。
上記、Typeフィールド、DateFormatフィールド、および、TimeFormatフィールドは、maxOccurs=“unbounded”指定子により、当該OSDTextOptions型内部に複数個存在可能なことが示される。
又、FontSizeRangeフィールド、DateFormatフィールド、TimeFormatフィールド、及びFontColorフィールドは、minOccurs=“0”指定子により、省略可能であることが示される。同様に、BackgroundColorフィールド、および、Extensionフィールドは、minOccurs=“0”指定子により、省略可能であることが示される。
図8(c)は、OSDImgOptions型の定義例を示す図である。当該のOSDImgOptions型においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
OSDImgOptions型において、最初のフィールドは、anyURI型のImagePathフィールドである。次のフィールドはOSDImgOptionsExtension型のExtensionフィールドである。当該ImagePathフィールドは、maxOccurs=“unbounded”指定子により、当該OSDImgOptions型内部に複数個存在可能なことが示される。
なお、Extensionフィールドは、minOccurs=“0”指定子により、省略可能であることが示される。
図8(d)は、OSDConfigurationOptionsExtension型の定義例を示す図である。当該のOSDConfigurationOptionsExtension型においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
図7(e)は、IntRange型の定義例を示す図である。当該のIntRange型においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
なお、このIntRange型において、最初のフィールドは、int型のMinフィールドであり、最後のフィールドは、int型のMaxフィールドである。
図9(a)は、OSDColorOptions型の定義例を示す図である。当該のOSDColorOptions型においては、complexType要素によって、当該型が複雑型として定義されることが示される。又、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
なお、Colorフィールド、Transparentフィールド、Extensionフィールドは、minOccurs=“0”指定子により、省略可能であることが示される。
図9(b)は、OSDTextOptionsExtension型の定義例を示す図である。当該OSDTextOptionsExtension型においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
図9(c)は、ColorOptions型の定義例を示す図である。当該のColorOptions型においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。また、sequence要素内部のchoice要素によって、当該choice要素内の一つが選択されることが示される。
具体的には、当該ColorOptions型においては、後述するColorListフィールド、または、ColorSpaceRangeフィールドから一つが選択される。上記したように、ColorOptions型における、選択肢の一つはColor型のColorListフィールドである。また、もう一つの選択肢は、ColorSpaceRange型のColorSpaceRangeフィールドである。
なお、上記ColorListフィールド、及び、ColorSpaceRangeフィールドは、maxOccurs=“unbounded”指定子により、それぞれ複数個存在できることが示される。
図9(d)は、Color型の定義例を示す図である。当該のColor型では、attribute要素により、float型の属性X、Y、および、Zを記述することができる構成となっている。また、上記属性X、Y、および、Zは、use=“required”指定により、当該Color型において必須の構成であることが示される。
また、当該のColor型では、attribute要素により、anyURI型の属性Colorspaceを記述可能な構成となっている。
図9(e)は、ColorSpaceRange型の定義例を示す図である。当該ColorSpaceRange型においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
ColorspaceRange型の最初のフィールドは、Xフィールドであり、次のフィールドはYフィールドであり、三番目のフィールドはZフィールドである。上記Xフィールド、Yフィールド、及び、Zフィールドは、FloatRange型のデータである。ColorspaceRange型の最後のフィールドは、anyURI型のColorspaceフィールドである。
図9(f)は、FloatRange型の定義例を示す図である。FloatRange型の定義においては、complexType要素によって、当該型が複雑型として定義されることが示される。また、sequence要素により、その順番が定義通りに出現するデータ型であることが示される。
FloatRange型において、最初のフィールドは、float型のMinフィールドであり、最後のフィールドは、float型のMaxフィールドである。本実施例においては、クライアント装置2000は、上記OSDConfigurationOptions型のデータを用いて、本実施例の撮像装置に設定可能なOSDの情報を、当該撮像装置から取得する。なお、このデータは、6054のレスポンスの一例である。
また、本実施例における監視カメラ1000は、上記OSDConfigurationOptions型のデータを、当該監視カメラ1000におけるOSDに関する能力情報を送信するために用いる。なお、このデータは、6054のレスポンスの一例である。
続いて、図10は、本実施例に係る、監視カメラ1000が受信したSetOSDコマンドに基づき、OSD画像を生成するための処理の一例を示すフローチャートである。なお、本処理は、制御部1008により実行されるものとする。又、本処理は、監視カメラ1000がSetOSDコマンドを受信した場合に、制御部1008により開始されるものとする。
なお、SetOSDコマンドは、上述したように、画像重畳設定を変更するためのコマンドである。
ステップS8001では、制御部1008は、通信部1005で受信されたSetOSDのコマンドにFontColorの指定があるか否かを判定する。例えば、制御部1008は、FontColorフィールドに対応付けられたColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されている場合には、FontColorの指定があると判定する。
一方、制御部1008は、FontColorフィールドに対応付けられたColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されていない場合には、FontColorの指定がないと判定する。
そして、制御部1008は、通信部1005で受信されたSetOSDのコマンドにFontColorの指定があると判定した場合には、ステップS8002に処理を進める。一方、制御部1008は、通信部1005で受信されたSetOSDのコマンドにFontColorの指定がないと判定した場合には、ステップS8003に処理を進める。
ステップS8002では、制御部1008は、ステップS8001にて判定されたFontColorフィールドに対応付けられたColorフィールドに対応する色を、OSD画像に含まれる文字の色に設定する。
ステップS8003では、制御部1008は、FontColorフィールドのデフォルト色として決められている黒を、OSD画像に含まれる文字の色に設定する。
ステップS8004では、制御部1008は、通信部1005で受信されたSetOSDのコマンドにBackgroundColorの指定があるか否かを判定する。例えば、制御部1008は、BackgroundColorフィールドに対応付けられたColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されている場合には、BackgroundColorの指定があると判定する。
一方、制御部1008は、BackgroundColorフィールドに対応付けられたColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されていない場合には、BackgroundColorの指定がないと判定する。
そして、制御部1008は、通信部1005で受信されたSetOSDのコマンドにBackgroundColorの指定があると判定した場合には、ステップS8005に処理を進める。一方、制御部1008は、通信部1005で受信されたSetOSDのコマンドにBackgroundColorの指定がないと判定した場合には、ステップS8006に処理を進める。
ステップS8005では、制御部1008は、ステップS8004にて判定されたBackgroundColorフィールドに対応付けられたColorフィールドに対応する色を、OSD画像に含まれる文字の輪郭の色(輪郭色)に設定する。
なお、本実施例におけるFontColor及びBackgroundColorは、OSD画像に含まれる文字に関する色を示す色情報の一例である。
ステップS8006では、制御部1008は、BackgroundColorフィールドのデフォルト色として決められている白を、OSD画像に含まれる文字の輪郭色に設定する。
ステップS8007では、制御部1008は、OSD生成部1007に指示し、OSD画像を生成させる。
このOSD画像の文字の色は、ステップS8001に続いてステップS8002が実行された場合には、ステップS8001にて判定されたFontColorフィールドに対応付けられたColorフィールドに対応する色である。一方、このOSD画像の文字の色は、ステップS8001に続いてステップS8003が実行された場合には、ステップS8003で設定された黒である。
このOSD画像の輪郭色は、ステップS8004に続いてステップS8005が実行された場合には、ステップS8004にて判定されたBackgroundColorフィールドに対応付けられたColorフィールドに対応する色である。一方、このOSD画像の輪郭色は、ステップS8004に続いてステップS8006の処理が実行された場合には、ステップS8006で設定された白である。
続いて、図11は、本実施例において、画像処理部1003から出力された撮像画像とOSD生成部1007から出力されたOSD画像とが合成された画像(ストリーミング画像)の一例を説明するための図である。なお、このOSD画像は、図10で示したフローチャートの処理に従って生成されたものである。
まず、図11(a)は、通信部1005で受信されたSetOSDのコマンドに基づき、OSD画像が合成された画像の一例である。ここで、このSetOSDのコマンドは、後述の図12で示すSetOSDのコマンドである。
ここで、図11(a)における9001は、OSD画像である。又、9002は、被写体像である。そして、9003は、被写体像の中の屋根の部分を示している。
図11(b)は、OSD画像9001の詳細図である。図11における9010は、OSD画像に含まれる文字部である。この文字部9010の色は、FontColorフィールドのデフォルト色として決められている黒である。
又、9011は、非OSD画像部である。非重畳画像部9011には、被写体像の中の屋根の部分9003が表示される。9012は、OSD画像に含まれる文字の輪郭部である。この輪郭部9012の色は、BackgroundColorのデフォルト色として決められている白である。
続いて、図12は、画像重畳設定を変更するためのSetOSDRequestの一例を示した図である。なお、図12に示したReuestは、6057のコマンドの一例である。
図12において、OSD画像の画像重畳設定を識別するためのIDであるOSDTokenの値は、“osd−1”である。このOSDTokenに対応付けられているVideoSourceConfigurationTokenは、画像処理設定を識別するためのIDである。このIDの値は、“0”である。
又、このOSDTokenには、OSDType型のTypeが対応付けられている。このTypeの値は、“Text”である。これは、OSD画像が文字列であることを示す。更に、このOSDTokenには、OSD画像の重畳位置を示すためのPositionが対応付けられている。このPositionに対応付けられたTypeの値は、“UpperLeft”である。これは、OSD画像の重畳位置が左上であることを示す。
更に、このOSDTokenには、OSD画像における文字列の設定情報を示すためのTextStringが対応付けられている。このTextStringには、OSD画像の表示種類を示すためのTypeが対応付けられており、このTypeの値は、“Date”である。これは、OSD画像が日付に相当する文字列であることを表す。
なお、図12で示したSetOSDRequestでは、日付の表示形式が省略されている。この日付の表示形式が省略された場合には、OSD画像に含まれる日付は、yyyy/MM/ddの形式(即ち、年、月、日の順にスラッシュで区切られた形式)で、表示される。
又、図12で示したSetOSDRequestでは、FontColorのフィールドが省略されている。これにより、図12で示したSetOSDRequestに基づいて生成されたOSD画像に含まれる文字の色は、FontColorフィールドのデフォルト色として決められている黒となる。
又、図12で示したSetOSDRequestでは、BackgroundColorのフィールドが省略されている。これにより、図12で示したSetOSDRequestに基づいて生成されたOSD画像に含まれる文字の輪郭の色は、BackgroundColorのデフォルト色として決められている白となる。
以上、本実施例における監視カメラ1000は、SetOSDのコマンドで指定されたBackgroundColorに応じ、OSD画像に含まれる文字の輪郭の色を自動で設定することができる。
これにより、従来、OSD画像に含まれる文字の輪郭の色を指定するためのコマンド(インターフェース)が存在していなかったが、このコマンドを設けることなく、OSD画像に含まれる文字の輪郭の色を自動で設定することが可能となる。この結果、OSD画像に含まれる文字とこの文字の背景画像との差を明瞭にさせることができるので、OSD画像の視認性を向上することができる。
なお、本実施例におけるステップS8001では、次のような場合に、FontColorの指定があると判定するよう、制御部1008を構成した。即ち、FontColorフィールドに対応付けられたColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されている場合である。
その上、本実施例におけるステップS8001では、次のような場合に、FontColorの指定がないと判定するよう、制御部1008を構成した。即ち、FontColorフィールドに対応付けられたColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されていない場合である。しかしながら、このような構成に限られるものではない。
例えば、ステップS8001にて、FontColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されている場合には、FontColorの指定があると判定するよう、制御部1008を構成しても良い。
その上、ステップS8001にて、FontColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されていない場合には、FontColorの指定がないと判定するよう、制御部1008を構成しても良い。
又、本実施例におけるステップS8004では、次のような場合に、BackgroundColorの指定があると判定するよう、制御部1008を構成した。即ち、BackgroundColorフィールドに対応付けられたColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されている場合である。
その上、本実施例におけるステップS8004では、次のような場合に、BackgroundColorの指定がないと判定するよう、制御部1008を構成した。即ち、BackgroundColorフィールドに対応付けられたColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されていない場合である。しかしながら、このような構成に限られるものではない。
例えば、ステップS8004にて、BackgroundColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されている場合には、BackgroundColorの指定があると判定するよう、制御部1008を構成しても良い。
その上、ステップS8004にて、BackgroundColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されていない場合には、BackgroundColorの指定がないと判定するよう、制御部1008を構成しても良い。
又、図11(a)で示したOSD画像を生成するためのSetOSDのコマンドは、図12のような、FontColorフィールド及びBackgroundColorフィールドが省略されたSetOSDのコマンドに限られるものではない。
例えば、黒に対応するColorフィールドが対応付けられたFontColorフィールドが記述されたSetOSDコマンドでも良い。更に、白に対応するColorフィールドが対応付けられたBackgroundColorフィールドが記述されたSetOSDコマンドでも良い。
(実施例2)
続いて、図13を用いて、本発明の実施例2における監視カメラ1000について説明する。なお、上述の実施例と同一の構成要素には同一の符号を付し、その説明を省略することがある。
ここで、上述の実施例1では、SetOSDのコマンドで指定されたBackgroundColorに応じ、OSD画像に含まれる文字の輪郭の色を自動で設定することができる監視カメラ1000について述べた。これに対し、実施例2では、SetOSDのコマンドでBackgroundColorが省略されていても、OSD画像に含まれる文字の輪郭の色を自動で設定することができる監視カメラ1000について述べる。
これにより、クライアント装置2000がOSD画像を設定する際、クライアント装置2000が必要な設定のみを実施した場合においても、監視カメラ1000が動的に有効なOSD画像を提供することができる。この結果、上述の実施例1と同等の効果を得ることができる。以上のような点を考慮した実施例2を以下に説明する。
続いて、図13は、本実施例に係る、監視カメラ1000が受信したSetOSDコマンドに基づき、OSD画像を生成するための処理の一例を示すフローチャートである。なお、本処理は、制御部1008により実行されるものとする。又、本処理は、監視カメラ1000がSetOSDコマンドを受信した場合に、制御部1008により開始されるものとする。
図13におけるステップS8101乃至S8103は、上述のステップS8001乃至S8103と同様であるので、その説明を省略する。
ステップS8104では、制御部1008は、OSD画像に含まれる文字の色に応じ、この文字の輪郭色を設定する。
具体的には、まず、制御部1008は、OSD画像に含まれる文字の色が白であるか否かを判定する。次に、制御部1008は、OSD画像に含まれる文字の色が白であると判定した場合には、OSD画像に含まれる文字の輪郭色を黒に設定する。一方、制御部1008は、OSD画像に含まれる文字の色が白ではないと判定した場合には、OSD画像に含まれる文字の輪郭色を、この輪郭色のデフォルト色として決められている白に設定する。
なお、本実施例では、OSD画像の文字の輪郭色のデフォルトは、白一色で固定されているが、これに限られるものではない。例えば、OSD生成部1007がOSD画像の表示可能色を段階的に変更することができる場合には、OSD画像の文字の色からこの文字の輪郭色までの縁を段階的に変更するよう、制御部1008を構成しても良い。これにより、OSD画像に含まれる文字をより滑らかに表示することができる。
ステップS8105では、上述のステップS8004と同様であるので、その説明を省略する。
ステップS8106では、制御部1008は、ステップS8005にて判定されたBackgroundColorフィールドに対応付けられたColorフィールドに対応する色を、OSD画像に含まれる文字の背景の色に設定する。
ステップS8107では、制御部1008は、OSD画像に含まれる文字の背景を、BackgroundColorのデフォルトとして決められている透明にする。具体的には、制御部1008は、画像処理部1003から出力された撮像画像に、OSD画像に含まれる文字の背景を重畳しない。
ステップS8108では、制御部1008は、OSD生成部1007に指示し、OSD画像を生成させる。
このOSD画像の文字の色は、ステップS8101に続いてステップS8102が実行された場合には、ステップS8101にて判定されたFontColorフィールドに対応付けられたColorフィールドに対応する色である。一方、このOSD画像の文字の色は、ステップS8101に続いてステップS8103が実行された場合には、ステップS8103で設定された黒である。
又、このOSD画像の文字の輪郭色は、ステップS8104にて設定された輪郭色である。
そして、このOSD画像の背景の色は、ステップS8105に続いてステップS8106が実行された場合には、ステップS8105にて判定されたBackgroundColorフィールドに対応付けられたColorフィールドに対応する色である。一方、このOSD画像の背景は、ステップS8105に続いてステップS8107が実行された場合には、透明である。
以上、本実施例における監視カメラ1000は、SetOSDコマンドにてFontColorを指定することで、OSD画像に含まれる文字の色を設定することができ、この設定された文字の色に応じて適切に、この文字の輪郭色を動的に設定することができる。
これにより、従来、OSD画像に含まれる文字の輪郭の色を指定するためのコマンド(インターフェース)が存在していなかったが、このコマンドを設けることなく、OSD画像に含まれる文字の輪郭の色を自動で設定することが可能となる。この結果、OSD画像に含まれる文字とこの文字の背景画像との差を明瞭にさせることができるので、OSD画像の視認性を向上することができる。
なお、本実施例では、ステップS8104にて、OSD画像に含まれる文字の色が白であると判定した場合には、OSD画像に含まれる文字の輪郭色を黒に設定するよう、制御部1008を構成したが、これに限られるものではない。
例えば、ステップS8104にて、OSD画像に含まれる文字の色が白に近い同系色であるか否かを判定するよう、制御部1008を構成しても良い。更に、ステップS8104で、OSD画像に含まれる文字の色が白に近い同系色であると判定した場合には、OSD画像に含まれる文字の輪郭色を、この文字の色が白に近い同系色であった場合により鮮明に見える黒に設定するよう、制御部1008を構成しても良い。
一方、ステップS8104にて、OSD画像に含まれる文字の色が白に近い同系色でないと判定した場合には、OSD画像に含まれる文字の輪郭色を白に設定するよう、制御部1008を構成しても良い。
又、例えば、ステップS8104にて、OSD画像に含まれる文字の色を判定し、判定した色に対する色相の補色をOSD画像に含まれる文字の輪郭色に設定するよう、制御部1008を構成しても良い。
これにより、OSD画像に含まれる文字の色に応じて適切に、OSD画像の文字をより鮮明に見せることができる。
(実施例3)
続いて、図14を用いて、本発明の実施例3における監視カメラ1000について説明する。なお、上述の実施例と同一の構成要素には同一の符号を付し、その説明を省略することがある。
ここで、上述の実施例2では、OSD画像の設定値(文字の色)に応じ、クライアント装置2000にストリーミング配信されるOSD画像に含まれる文字の輪郭色を動的に変更する監視カメラ1000について述べた。
これに対し、実施例3では、SetOSDのコマンドで指定されたFontColor及びBackgroundColorの両方に応じ、OSD画像に含まれる文字の輪郭色を自動で設定することができる監視カメラ1000について述べる。
これにより、クライアント装置2000が(SetOSDコマンドにてFontColor又はBackgroundColorの指定を省略する等)必要な設定のみを実施しない場合でも、監視カメラ1000は、動的に有効なOSD画像を提供することができる。この結果、上述の実施例1及び実施例2と同等の効果を得ることができる。以上のような点を考慮した実施例3を以下に説明する。
続いて、図14は、本実施例に係る、監視カメラ1000が受信したSetOSDコマンドに基づき、OSD画像を生成するための処理の一例を示すフローチャートである。なお、本処理は、制御部1008により実行されるものとする。又、本処理は、監視カメラ1000がSetOSDコマンドを受信した場合に、制御部1008により開始されるものとする。
図14におけるステップS8201乃至S8203は、上述のステップS8001乃至S8003と同様であるので、その説明を省略する。
ステップS8204乃至S8206は、上述のステップS8105乃至S8107と同様であるので、その説明を省略する。
ステップS8207では、制御部1008は、OSD画像に含まれる文字の色が黒であるか否かを判定する。そして、制御部1008は、OSD画像に含まれる文字の色が黒であると判定した場合には、ステップS8208に処理を進める。一方、制御部1008は、OSD画像に含まれる文字の色が黒ではないと判定した場合には、ステップS8209に処理を進める。
なお、本実施例における黒は、所定色の一例である。又、本実施例における制御部1008は、ステップS8207にて、OSD画像に含まれる文字の色が所定色と一致するか否かを判定する所定色判定部としての役割を果たす。
ステップS8208では、制御部1008は、OSD画像に含まれる文字の輪郭色を白に設定する。
ステップS8209では、制御部1008は、OSD画像に含まれる文字の背景が透明であるか否かを判定する。そして、制御部1008は、OSD画像に含まれる文字の背景が透明であると判定した場合には、ステップS8210に処理を進める。一方、制御部1008は、OSD画像に含まれる文字の背景が透明ではないと判定した場合には、ステップS8211に処理を進める。
ステップS8210では、制御部1008は、OSD画像に含まれる文字の輪郭色を、この文字の色に対する色相の補色に設定する。
ステップS8211では、制御部1008は、OSD画像に含まれる文字の輪郭色を、この文字の背景の色に対する色相の補色に設定する。
ステップS8212では、制御部1008は、制御部1008は、OSD生成部1007に指示し、OSD画像を生成させる。
このOSD画像の文字の色は、ステップS8201に続いてステップS8202が実行された場合には、ステップS8201にて判定されたFontColorフィールドに対応付けられたColorフィールドに対応する色である。一方、このOSD画像の文字の色は、ステップS8201に続いてステップS8203が実行された場合には、ステップS8203で設定された黒である。
又、このOSD画像の文字の輪郭色は、ステップS8207に続いてステップS8208が実行された場合には、ステップS8208にて設定された白である。そして、このOSD画像の文字の輪郭色は、ステップS8209に続いてステップS8210が実行された場合には、ステップS8210にて設定された色である。
更に、このOSD画像の文字の輪郭色は、ステップS82209に続いてステップS8211が実行された場合には、ステップS8211にて設定された色である。
そして、このOSD画像の文字の背景の色は、ステップS8204に続いてステップS8205が実行された場合には、ステップS8204にて判定されたBackgroundColorフィールドに対応付けられたColorフィールドに対応する色である。一方、このOSD画像の文字の背景は、ステップS8204に続いてステップS8206が実行された場合には、透明である。
以上、本実施例における監視カメラ1000は、OSD画像に含まれる文字の色及びこの文字の背景の色に応じて適切に、この文字の輪郭色を動的に設定することができる。
これにより、従来、OSD画像に含まれる文字の輪郭の色を指定するためのコマンド(インターフェース)が存在していなかったが、このコマンドを設けることなく、OSD画像に含まれる文字の輪郭の色を自動で設定することが可能となる。この結果、OSD画像に含まれる文字とこの文字の背景画像との差を明瞭にさせることができるので、OSD画像の視認性を向上することができる。
(実施例4)
続いて、図15及び図16を用いて、本発明の実施例4における監視カメラ1000について説明する。なお、上述の実施例と同一の構成要素には同一の符号を付し、その説明を省略することがある。
ここで、上述の実施例3では、SetOSDのコマンドで指定されたFontColor及びBackgroundColorの両方に応じ、OSD画像に含まれる文字の輪郭色を動的に変更する監視カメラ1000について述べた。
これに対し、実施例4では、FontColor及びBackgroundColorだけではなく、OutlineColorも指定することができるよう、SetOSDのコマンドを構成する。そして、SetOSDのコマンドで指定されたOutlineColorに応じ、クライアント装置2000にストリーミング配信されるOSD画像に含まれる文字の輪郭色を動的に変更するよう、監視カメラ1000を構成しても良い。
これにより、クライアント装置2000がSetOSDのコマンドにてOutlineColorを指定することにより、監視カメラ1000は、動的に有効なOSD画像を提供することができる。以上のような点を考慮した実施例4を以下に説明する。
続いて、図15は、本実施例に係る、OSDConfigurationOptions型のExtensionフィールドに、独自のデータ構造であるOutlineColor型のデータ構造を定義した図である。なお、このデータ構造は、6054のレスポンスの一例である。
このOutlineColor型のデータ構造は、OSDConfigurationOptions型のExtensionフィールドに定義されているので、この定義されているXML内は、独自拡張となる。そして、このExtensionフィールドにおいて、このOutline型のデータ構造の名称は、OutlineColorである。
又、このOutlineColorのプレフィックスは、aaである。これは、このデータ構造に対応するnamespaceを、独自のURI(Unifomr Resource identifier)で表わすためである。
そして、このOutlineColorフィールドの子要素は、FontColorフィールド及びBackgroundColorフィールドと同様に、OSDColorOptions型を用いて定義されている。
このOutlineColorフィールドの設定値としては、Colorフィールド及びTransparentフィールドがある。具体的には、このOutlineColorフィールドには、Colorフィールドが対応付けられて記述されている。そして、このColorフィールドには、複数のColorListフィールドが対応付けられて記述されている。
なお、これら複数のColorListフィールドは、Colorフィールドに指定可能な範囲を示す。
又、このOutlineColorフィールドには、Transparentフィールドが対応付けられて記述されている。そして、このTransparentフィールドには、Maxフィールド及びMinフィールドのそれぞれが対応付けられて記述されている。ここで、Minフィールドの値は、0である。又、Maxフィールドの値は、1である。
なお、これらMinフィールド及びMaxフィールドは、Transparentフィールドに指定可能な範囲を示す。図15の場合は、Transparentフィールドの値が0である場合には、OSD画像が非透明であることを示し、Transparentフィールドの値が1である場合には、OSD画像が完全に透明であることを示す。
クライアント装置2000は、GetOSDOptionsコマンド(6054のコマンド)により画像重畳設定オプションを監視カメラ1000から取得することで、図15で示したOutlineColorの設定値の範囲を取得する。
そして、クライアント装置2000は、この取得により、FontColorによるOSD画像の文字の色の設定及びBackgroundColorによるこの文字の背景色の設定に加え、OutlineColorによるこの文字の輪郭色の設定が可能となる。
続いて、図16は、本実施例に係る、OutlineColorを含むSetOSDコマンドに基づき、OSD画像を生成するための処理の一例を示すフローチャートである。なお、本処理は、制御部1008により実行されるものとする。又、本処理は、監視カメラ1000がSetOSDコマンドを受信した場合に、制御部1008により開始されるものとする。
ステップS8301乃至S8303は、上述のステップS8001乃至S8003と同様であるので、その説明を省略する。
ステップS8304乃至S8306は、上述のステップS8105乃至S8107と同様であるので、その説明を省略する。
ステップS8307では、制御部1008は、通信部1005で受信されたSetOSDのコマンドにOutlineColorの指定があるか否かを判定する。例えば、制御部1008は、OutlineColorフィールドに対応付けられたColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されている場合には、OutlineColorの指定があると判定する。
一方、制御部1008は、OutlineColorフィールドに対応付けられたColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されていない場合には、OutlineColorの指定がないと判定する。
そして、制御部1008は、通信部1005で受信されたSetOSDのコマンドにOutlineColorフィールドの指定があると判定した場合には、ステップS8308に処理を進める。一方、制御部1008は、通信部1005で受信されたSetOSDのコマンドにOutlineColorフィールドの指定がないと判定した場合には、ステップS8309に処理を進める。
なお、本実施例における制御部1008は、通信部1005で受信されたSetOSDのコマンドに応じ、次のような判定を行う色情報判定部としての役割を果たす。即ち、このSetOSDコマンドにて、FontColor及びBackgroundColorが指定されているのか、それともFontColor及びBackgroundColorに加えてOutlineColorが指定されているのか、の判定である。
ステップS8308では、制御部1008は、ステップS8307にて判定されたOutlineColorフィールドに対応付けられたColorフィールドに対応する色を、OSD画像に含まれる文字の輪郭色に設定する。
ステップS8309では、制御部1008は、OutlineColorフィールドのデフォルト色として決められている白を、OSD画像に含まれる文字の輪郭色に設定する。
ステップS8310では、制御部1008は、OSD生成部1007に指示し、OSD画像を生成させる。
このOSD画像の文字の色は、ステップS8301に続いてステップS8302が実行された場合には、ステップS8301にて判定されたFontColorフィールドに対応付けられたColorフィールドに対応する色である。一方、このOSD画像の文字の色は、ステップS8301に続いてステップS8303が実行された場合には、ステップS8303で設定された黒である。
又、このOSD画像の文字の輪郭色は、ステップS8307に続いてステップS8308が実行された場合には、ステップS8308にて設定された色である。そして、このOSD画像の文字の輪郭色は、ステップS8307に続いてステップS8309が実行された場合には、ステップS8309にて設定された色である。
そして、このOSD画像の文字の背景の色は、ステップS8304に続いてステップS8305が実行された場合には、ステップS8204にて判定されたBackgroundColorフィールドに対応付けられたColorフィールドに対応する色である。一方、このOSD画像の文字の背景は、ステップS8304に続いてステップS8306が実行された場合には、透明である。
以上、本実施例における監視カメラ1000は、SetOSDコマンドにてOutlineColorが指定されることで、OSD画像に含まれる文字の輪郭色を設定することができる。これにより、OSD画像に含まれる文字とこの文字の背景画像との差を明瞭にさせることができ、この結果、OSD画像の視認性を向上することができる。
なお、本実施例におけるステップS8307では、次のような場合に、OutlineColorの指定があると判定するよう、制御部1008を構成した。即ち、OutlineColorフィールドに対応付けられたColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されている場合である。
その上、本実施例におけるステップS8307では、次のような場合に、OutlineColorの指定がないと判定するよう、制御部1008を構成した。即ち、OutlineColorフィールドに対応付けられたColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されていない場合である。しかしながら、このような構成に限られるものではない。
例えば、ステップS8307にて、OutlineColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されている場合には、OutlineColorの指定があると判定するよう、制御部1008を構成しても良い。
その上、ステップS8307にて、OutlineColorフィールドが通信部1005で受信されたSetOSDのコマンドに記述されていない場合には、OutlineColorの指定がないと判定するよう、制御部1008を構成しても良い。
又、上述の実施例では、OSD画像の透明度に相当するTransparentの設定は、割愛されているが、このTransparentの設定が行われていても、OSD画像の各色の設定が行われることで、上述の実施例の目的は達成される。
又、本実施例では、通信部1005でSetOSDコマンドが受信された場合に、図16で示すフローチャートを開始するよう、制御部1008を構成したが、これに限られるものではない。
例えば、通信部1005でSetOSDコマンドが受信された場合に、この受信されたSetOSDコマンドにてOutlineColorが指定されているか否かを判定するよう、制御部1008を構成しても良い。
更に、この受信されたSetOSDコマンドにてOutlineColorが指定されていると判定した場合には、図16で示すフローチャートを実行するよう、制御部1008を構成しても良い。なおかつ、この受信されたSetOSDコマンドにてOutlineColorが指定されていないと判定した場合には、図14で示すフローチャートを実行するよう、制御部1008を構成しても良い。
(その他の実施例)
又、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステムあるいは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読みだして実行する処理である。
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。