(57)【要約】      （修正有）【課題】図面上にカメラを配置する際に、意図した方向を向くようにして、カメラ配置の手間を軽減する情報処理装置を提供する。【解決手段】図面上でカメラのレイアウト決定を支援する際に、図面に配置するカメラと１つ以上のオブジェクトの其々について位置の指定を受け付け、位置を指定されたカメラについて、カメラ−オブジェクト関連テーブルによる距離に基づいてオブジェクトの優先度を算出して、オブジェクトに対応づけられた優先度に基づいてカメラの向きを決定する。【選択図】図１１
2018196016.tif 000002
【特許請求の範囲】
【請求項１】
図面上でカメラのレイアウト決定を支援する情報処理装置であって、
表示部に図面を表示させる表示制御手段と、
前記図面に配置するカメラと１つ以上のオブジェクトの其々について、位置の指定を受け付ける受け付け手段と、
前記受け付け手段によって位置を指定されたカメラについて、前記オブジェクトに対応づけられた優先度に基づいてカメラの向きを決定する決定手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記受け付け手段で、前記オブジェクトの大きさの指定を受け付けることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記決定手段は、オブジェクトに関連付けた重みと、前記カメラと前記オブジェクトの距離から、カメラの向きを決定することを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記決定手段は、前記カメラと前記オブジェクトとの間に他のオブジェクトがある場合に、当該他のオブジェクトに遮られているオブジェクトの情報を、カメラ向きの決定に用いないことを特徴とする請求項１乃至３のいずれか一項に記載の情報処理装置。
【請求項５】
図面上でカメラのレイアウト決定を支援する情報処理方法であって、
表示部に図面を表示させる表示制御工程と、
前記図面に配置するカメラと１つ以上のオブジェクトの其々について、位置の指定を受け付ける受け付け工程と、
前記受け付け工程において位置を指定されたカメラについて、前記オブジェクトに対応づけられた優先度に基づいてカメラの向きを決定する決定工程と、
を有することを特徴とする情報処理方法。
【請求項６】
前記受け付け工程で、前記オブジェクトの大きさの指定を受け付けることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記決定工程は、オブジェクトに関連付けた重みと、前記カメラと前記オブジェクトの距離から、カメラの向きを決定することを特徴とする請求項５または６に記載の情報処理方法。
【請求項８】
前記決定工程は、前記カメラと前記オブジェクトとの間に他のオブジェクトがある場合に、当該他のオブジェクトに遮られているオブジェクトの情報を、カメラ向きの決定に用いないことを特徴とする請求項５乃至７のいずれか一項に記載の情報処理方法。
【請求項９】
コンピュータを
図面上でカメラのレイアウト決定を支援する情報処理装置であって、
表示部に図面を表示させる表示制御手段と、
前記図面に配置するカメラと１つ以上のオブジェクトの其々について、位置の指定を受け付ける受け付け手段と、
前記受け付け手段によって位置を指定されたカメラについて、前記オブジェクトに対応づけられた優先度に基づいてカメラの向きを決定する決定手段として機能させるためのコンピュータが読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、監視カメラを設置する前に、図面上で監視カメラの配置をシミュレーションする情報処理装置であり、特にカメラの向きの制御に関するものである。
【背景技術】
【０００２】
建築図面を利用して監視カメラの配置をシミュレーションする技術において、図面上の各監視カメラが撮影可能な範囲を表示することで、図面に配置されている監視カメラのカバーする範囲を視認し易くする技術がある。
【０００３】
また、特許文献１では、カメラごとに撮影可能な範囲を定義した上で、ユーザが任意の撮影点を指定すると、指定した撮影点を撮影できるカメラの撮影可能範囲を表示し、撮影点を撮影するために適切なカメラをユーザが容易に選択できる技術を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−１９５６２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、ユーザが指示した１つの撮影点について適切なカメラを確認することはできたが、複数の撮影点を総合的に考慮してカメラ配置を決定することができなかった。
【課題を解決するための手段】
【０００６】
上述した課題を解決するために、本発明に係わる情報処理装置は、図面上でカメラのレイアウト決定を支援する情報処理装置であって、表示部に図面を表示させる表示制御手段と、前記図面に配置するカメラと１つ以上のオブジェクトの其々について、位置の指定を受け付ける受け付け手段と、前記受け付け手段によって位置を指定されたカメラについて、前記オブジェクトに対応づけられた優先度に基づいてカメラの向きを決定する決定手段と、を有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、カメラの周囲のオブジェクトに基づいてカメラ向きを簡単に設定し、カメラレイアウトの手間を軽減することができるようになる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置のハードウェア構成の概略を表す図である。
【図２】機能構成を示すブロック図である。
【図３】処理を示すフローチャートである。
【図４】ユーザインターフェースの概略図である。
【図５】オブジェクト種別テーブルを示す図である。
【図６】配置オブジェクトテーブルを示す図である。
【図７】カメラ−オブジェクト関連テーブルを示す図である。
【図８】カメラ機種テーブルを示す図である。
【図９】配置カメラテーブルを示す図である。
【図１０】フロアマップ情報テーブルを示す図である。
【図１１】カメラ向きを決定する処理を示すフローチャートである。
【図１２】オブジェクト配置例を示す図である。
【図１３】オブジェクト配置例を示す図である。
【図１４】オブジェクト配置例を示す図である。
【図１５】後からオブジェクトを配置する例を示す図である。
【図１６】後からオブジェクトを配置する処理を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための形態の一例としての監視カメラのレイアウト決定を支援する情報処理装置を、図面を参照して詳細に説明する。
【００１０】
＜＜実施例１＞＞
＜情報処理装置の構成＞
図１は、監視カメラのレイアウト決定を支援するための情報処理装置の概略構成を示す図である。
【００１１】
図１において、ＣＰＵ１０１は、中央処理装置である。ＲＯＭ１０２は読み出し専用メモリであり、ランダムアクセスメモリＲＡＭ１０３とともに、バス１０４を介してＣＰＵ１０１に接続されている。ＣＰＵ１０１は、ＲＯＭ１０２またはＲＡＭ１０３に格納されたプログラムを直接実行することができる。
【００１２】
バス１０４には、入力インターフェース１０５、ＨＤＤインターフェース１０７、ビデオインターフェース１０９、出力インターフェース１１１も接続されている。キーボードやマウス、スキャナ、カメラなどの入力デバイス１０６は、入力インターフェース１０５を経由することで、ＣＰＵ１０１に情報を入力することが可能である。
【００１３】
ハードディスクデバイスや光ディスクデバイス、ソリッドステートドライブ（ＳＳＤ）などの二次記憶装置１０８は、ＨＤＤインターフェース１０７を経由することでＣＰＵ１０１から読み書き可能である。二次記憶装置１０８上に格納されたデータは不図示のダイレクトメモリアクセスコントローラ（ＤＭＡＣ）などを用いて、ＲＡＭ１０３上に展開することができ、同様に、ＲＡＭ１０３上に展開されているデータを、二次記憶装置１０８に保存することも可能である。ＣＰＵ１０１は、二次記憶装置１０８からＲＡＭ１０３上に展開されたデータをプログラムコードとみなし、実行することも可能である。
【００１４】
モニタ１１０上には、ＣＰＵ１０１にビデオインターフェース１０９を操作させることで、任意の文字や画像をＣＰＵ１０１から表示制御させることが可能である。プリンタやプロッタといった出力デバイス１１２は、出力インターフェース１１１を経由することでＣＰＵ１０１から情報を送付することが可能である。入力デバイス１０６の場合と同様に、ＣＰＵ１０１は、出力インターフェース１１１を経由することで、出力デバイス１１２のデバイス情報や機能情報を読み取ることも可能である。また、入力デバイス１０６や出力デバイス１１２は、ネットワーク上の別の情報処理装置と共有されていてもよい。ＧＰＵ１１３は、画像処理用のプロセッサ部であり、画像処理の様に単純で膨大なデータを処理する場合は、ＣＰＵ１０１よりも高速に動作することができる。
【００１５】
＜全体概要＞
図２は、カメラの向きを適切な向きに設定するため、図１で示した構成を備える情報処理装置２０１で動作するレイアウト支援プログラムによって実現される機能構成の概略を示すブロック図である。
【００１６】
制御部２０２はプログラム全体の制御を行い、入力部２０３〜カメラ向き算出部２０５や後の後述の各種テーブルの初期化や処理の指示を行う。なお、レイアウト支援プログラムは、図面を読み込んだり、スケールを設定したり、レイアウトデータを読み込んだり、保存したり、カメラや壁などの各種オブジェクトを配置した状態で図面を印刷したりする機能（不図示）も持つ。そして、制御部２０２はこれらの各機能構成に対しての指示も行えるように構成されている。
【００１７】
入力部２０３は制御部２０２からの指示を受けて、マウスなどの入力デバイス１０６からの入力を受け付け、図面上の入力内容をＲＡＭ１０３に保存する。例えば、オブジェクトを図面上に配置するときにＲＡＭ１０３に保存する内容として、後述するウィンドウ座標系におけるオブジェクトの位置を示す座標がある。
【００１８】
配置部２０４は制御部２０２からの指示を受けて、図面上に配置するオブジェクトの位置、大きさ、向き（配置方向）を決定してモニタ１１０に表示する。カメラ向き算出部２０５は配置部２０４からの指示を受け、後述する各種テーブルの情報（距離や優先度、手前フラグ等）を更新するとともに、これらのテーブルで管理する情報に基づいて、カメラの向き（配置方向）を算出する。
【００１９】
＜データ形式＞
ＲＡＭ１０３は、図面上に配置する各種オブジェクトの位置やサイズといった情報を３次元データとして保持している。なお、２次元データで保持していても本発明は実現可能である。
【００２０】
ここで、３次元データと２次元データの変換手法について説明する。例えばＯｐｅｎ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ（以下ＯｐｅｎＧＬ）で使われている方法がある。ＯｐｅｎＧＬでは、３次元データを２次元データに変換する際に、各種座標系を経て変換される。ＯｐｅｎＧＬを利用する場合は、まず、各種オブジェクトの大きさや形などの情報をローカル座標系でＲＭＡ１０３が保持し、図面上に配置する際に、ＧＰＵ１１３がワールド座標系に変換してＲＡＭ１０３に保持する。その後、ワールド座標系において、モニタ１１０に表示するための視点を設定し、その視点を原点とする新たな座標系である視点座標系にＧＰＵ１１３が変換する。その後、投影変換により視点座標系においてモニタ１１０に表示したい範囲をＣＰＵ１１３が切り出して正規化デバイス座標系に変換し、最後にビューポート変換を行いウィンドウ座標系で２次元のデバイスピクセルに変換する。ワールド座標系において図面や各種オブジェクトを配置するが、ワールド座標系の１単位がリアルな世界で何メートルかを表すスケールＳ（メートル／ワールド座標系１単位）を用いることで、リアルな世界の大きさに変換することができる。これらの変換は主に行列変換を用いるが、２次元から３次元の変換は逆順に逆行列を適用することで逆変換することができる。逆変換によって、例えば、リアルな世界の位置（メートル単位）が、ワールド座標系における位置（ワールド座標系）に変換される。この時、変換後の３次元データのうち、１次元だけを固定する必要がある。例えば、Ｚ軸上で正の位置に、原点を向く視点を設定した場合、Ｚ軸方向を高さ方向としてＺ値を０で固定すると、ＸＹ平面上に変換できる。なお、ここではメートルを単位としたが、フィートなど別の単位を用いても構わない。また、上述の変換処理はＧＰＵ１１３が行うように説明しているが、変換処理の一部または全部をＣＰＵ１０１が行うようにしてもよい。ここで説明した、各種変換や逆変換はよく知られているため、以下において詳細な説明は省略する。
【００２１】
＜レイアウト支援プログラムのユーザインターフェース＞
図４は、図１の構成を有する情報処理装置で動作するレイアウト支援プログラムのユーザインターフェースの一部を示したものであり、モニタ１１０に表示されるも内容の一例を示す。
【００２２】
図４において、カメラ追加ボタン４０１、机追加ボタン４０２、壁追加ボタン４０３、レジ追加ボタン４０４、入り口追加ボタン４０５、人追加ボタン４０６などはフロアマップ表示部４１０に其々の描画オブジェクトを追加するためのボタンである。図示しないが、車など、その他のオブジェクトも追加することができるようにしてもよい。これらの、各種追加ボタンはトグルボタンになっており、各ボタンを押した後にフロアマップ表示部４１０上の任意の位置をマウスでクリック等して指定することで、クリックした位置に各オブジェクトを配置することができる。
【００２３】
図面４１１はフロアマップ表示部４１０内に読み込んだ図面である。図面４１１は、図面読み込みボタン４１５を押下することで、情報処理装置のファイルシステムを参照し、読み込む候補のフォルダやファイル一覧を表示させ、表示された内容からユーザが選択することで読み込むことができるが、詳細な説明は省略する。机４２２やレジ４２４、カメラ４２１はフロアマップ表示部４１０にユーザが配置したオブジェクトである。フロアマップ表示部４１０に配置済みオブジェクトをマウスで選択し、ドラッグ＆ドロップで再配置したり、形や大きさを変えたりすることもできる。
【００２４】
また、フロアマップ表示部４１０には、スケールＳが関連付けられている。スケールＳは読み込んだ図面ごとにユーザが指定できる。例えば、ワールド座標系に配置した図面上にスケール線がある場合、フロアマップ４１０上で、スケール線の両端をユーザが指定し、上述の逆変換を行うことでワールド座標系における長さを算出できる。そして、指定したスケール線の長さが何メートルかをユーザが指定することで、「指定したメートル／ワールド座標系での長さ」の割り算を行い、スケールＳを算出することができる（不図示）。このように、スケールＳを用いることで、図面４１１に対して、適切な大きさで机４２２などを表示することが可能となる。原点４１２は図面４１１の左下の角に位置し、原点４１２から右にＸ軸４１３が伸び、原点４１２から上にＹ軸４１４が伸びている。ＸＹ軸の単位はメートルであり、図面上のオブジェクト位置をＸＹ座標値で表すことができる。なお、ここではメートルを単位としたが、フィートなど別の単位を用いても構わない。また、説明の簡便のために、原点の位置はフロアマップ４１０内に読み込んだ図面の左下としたが、フロアマップ表示部４１０上の任意の位置を原点としても構わない。
【００２５】
＜フロアマップ情報テーブル＞
図１０は、フロアマップ情報テーブル１０００の概略を示す。フロアマップ情報テーブル１０００はレイアウト支援プログラム２０１の起動時に作成され、フロアマップ表示部４１０の表示内容に関する情報を含み、ＲＡＭ１０３に保存されている。
【００２６】
スケール情報１００１は、図４で説明したフロアマップ４１０に関連付けられるスケールＳの内容を示しており図の例ではワールド座標系に変換すると１ｍに対応することを示している。図面パス１００２は、図４の説明した図面４１１のパス（情報処理装置における格納場所を示すアドレス）を保存する。このパスは図面読み込みボタン４１５を押下した際にユーザが指定したファイルに基づいて入力部２０３が格納する。ピクセル密度１００３は、後述する最大距離９０３を算出する際に使用する情報である。例えば、１６ｃｍの幅の顔の識別に４０ピクセルが必要だとすると、４０／１６＝２．５（ピクセル／ｃｍ）以上のピクセル密度があればよいと考えることができる。
【００２７】
本実施例では、ピクセル密度をフロアマップ情報テーブル１０００に関連付けているが、配置するレジや人などのオブジェクトごとに設定したり、他のテーブルと関連付けたりしてもよい。
【００２８】
＜カメラ配置処理フロー＞
以下、図３のフローチャートを用いて、レイアウト支援プログラム２０１における、図面上にカメラを配置する処理の流れの概略を説明する。以下、簡便のため、高さ方向を表すＺ軸について、Ｚ＝０の平面上に図面を配置したものとし、Ｚ軸正方向から原点（Ｘ，Ｙ，Ｚ）＝（０，０，０）を見た平面図（上面図）を例に説明する。
【００２９】
ステップＳ３０１において、入力部２０３はユーザがマウスなどの入力デバイス１０６でカメラ追加ボタン４０１をクリックする等のカメラオブジェクトの指定を受け付ける。そして、入力部２０３は押下中の追加ボタンを特定できる情報（例えば後述するオブジェクト種別ＩＤ５０１と機種ＩＤ７０１などのユニークな値）をＲＡＭ１０３に保存する。
【００３０】
ステップＳ３０２において、入力部２０３はユーザがマウスなどの入力デバイス１０６でフロアマップ表示部４１０上をクリックする等の位置指定を受け付けて、指定された位置をウィンドウ座標系についてピクセル値でＲＡＭ１０３に保存する。次に、配置部２０４は、先に述べた２次元から３次元への逆変換により、ピクセル値に基づいてワールド座標系におけるオブジェクト配置位置を算出し、ＲＡＭ１０３に保存する。
【００３１】
ステップＳ３０３において、カメラ向き算出部２０５は、配置するカメラ周囲の各種オブジェクトの情報などを元に、配置するカメラの最適な向きを算出する。算出処理の詳細は図１１を用いて後述する。
【００３２】
以上のステップＳ３０１〜Ｓ３０３の処理によって、図面上に配置済みの各種オブジェクトの情報を元に、配置するカメラの向きを最適な方向に向けて配置することができる。
【００３３】
＜オブジェクト種別テーブル＞
図５は、オブジェクト種別テーブル５００の概略を示しており、本テーブルはカメラや机といったオブジェクトごとの情報をエントリとして管理するテーブルで、二次記憶装置１０８に予め保存される。また、レイアウト支援プログラム２０１起動時にあらかじめＲＡＭ１０３に展開されている。
【００３４】
オブジェクト種別ＩＤ５０１は、オブジェクトの種別（後述のオブジェクト種別５０２）ごとにふられるユニークな識別子である。オブジェクト種別５０２は、カメラや机といった、オブジェクトの種類を示す情報である。重み５０３は、オブジェクト種別ごとに設定され、カメラの向きを決める際に参照される、重みである。重み５０３は、簡単に説明すると、数値が大きいほど、そのオブジェクトの方を向き、逆に小さいほど、そのオブジェクトを向かない、性質を持つ数値である。もちろん、ユーザが入力デバイス１０６を操作し、各設定値を変更したり、新しいレコードや設定を追加したりしてもよい。
【００３５】
なお、図示しないが、オブジェクトの３次元データに含まれる各頂点を示すデータ（頂点データ）や、オブジェクトのテクスチャなどの情報もオブジェクト種別テーブル５００に含まれる。
【００３６】
＜配置オブジェクトテーブル＞
図６は、配置オブジェクトテーブル６００の概略を示しており、本テーブルはフロアマップ表示部４１０に配置した、各種オブジェクトに関する情報を管理するテーブルで、ＲＡＭ１０３に保存される。追加ボタン４０１が押下されると、配置オブジェクトテーブル６００に新規レコードが作成され、入力部２０３がユーザの操作に応じて情報を格納する。なお、ここで図示しない操作により追加処理がキャンセルされると、作成されたレコードは削除されて元に戻る。
【００３７】
オブジェクトＩＤ６０１は、フロアマップ表示部４１０に配置済みのオブジェクト（以下、単に配置済みオブジェクトと称す）を一意に特定できるユニークな識別子であり、レコード生成時にエントリ（行）が追加される。オブジェクト種別ＩＤ６０２は、配置済みオブジェクトがどのオブジェクトの種類であるかを示す情報であり、ユーザが押下したオブジェクト追加ボタンに応じて、入力部２０３がオブジェクト種別テーブル５００を参照して格納する。座標６０３は、入力部２０３によって設定される情報であり、配置済みオブジェクトの３次元のワールド座標系における位置を示す。なお、リアルな世界の座標に変換したい場合は、フロアマップ表示部４１０に関連付けられているスケールＳを用いて算出できる。
【００３８】
座標６０３は、例えばカメラ追加ボタン４０１を押下した後にフロアマップ表示部４１０上をマウスでクリックして、位置が決まった時に入力部２０３が保存する。大きさ６０４は、ワールド座標系における配置済みオブジェクトの大きさであり、向き６０５は、配置済みオブジェクトの向きを示す情報ある。例えば、オブジェクト種別がカメラの場合は、次の２つの角度で向きを表す。１つ目は、原点を中心としてＸＹ平面上に円の周方向の角度（Ｘ軸方向を０度、Ｙ軸方向を９０度とする）である。２つ目は、ＸＹ平面からＺ軸についてマイナス方向に傾いた角度、いわゆる俯角である。カメラ以外のオブジェクトについても同様である。なお、どのオブジェクトも、俯角の代わりに、Ｚ軸方向をプラス方向に向いた角度としてもよい。また、クォータニオンを用いて向きを表してもよい。また、ＸＹＺ空間の単位ベクトルで向きを表してもよい。
【００３９】
＜カメラ−オブジェクト関連テーブル＞
図７は、カメラ−オブジェクト関連テーブル７００である。本テーブルは、フロアマップ表示部４１０に配置済みのカメラオブジェクト（以降、配置済みカメラオブジェクトと称す）に対する、カメラ以外の配置済みオブジェクトとの関係についての情報を格納するテーブルで、ＲＡＭ１０３に保存される。図６の配置オブジェクトテーブル６００と同様に、カメラ−オブジェクト関連テーブル７００も、追加ボタン４０１を押した時点で、レコードが作成され、追加処理がキャンセルされるとレコードは削除される。
【００４０】
オブジェクト７０１は、オブジェクトＩＤ６０１と同じＩＤである。距離７０２には、配置済みのカメラオブジェクトと各配置済みオブジェクトとの距離を保存する。優先度７０３は、配置済みオブジェクトのオブジェクト種別ごとに決められた重み５０３と、距離７０２とから、算出される数値である。手前フラグ７０４は、該当するカメラから見て、各配置済みオブジェクトの手前に遮る別のオブジェクトがあれば、ｆａｌｓｅが設定され、遮るオブジェクトがなければｔｒｕｅが設定される、手前フラグである。手前フラグ７０４は、該当するカメラから見ることができる配置済みオブジェクトだけがｔｒｕｅになる。例えば、カメラ向き算出部２０５がワールド座標系における、該当するカメラの座標６０３から、各配置済みオブジェクトの座標６０３を結ぶ線分を考える。次に、この線分と、他の配置済みオブジェクトの頂点データで構成するポリゴンとの交点が見つかれば、遮るオブジェクトがあると判定でき、カメラ向き算出部２０５が手前フラグ７０４にｆａｌｓｅを設定する。なお、各配置済みオブジェクトの座標６０３ではなくて、各配置済みオブジェクトの各頂点や頂点で構成するポリゴンとカメラの座標６０３との線分を考えても、本発明は実現可能である。
【００４１】
考慮フラグ７０５は、後述するステップＳ１１０５とステップＳ１１０６において、処理対象か否かを管理するために、後述するステップＳ１１０４で設定される、フラグである。向き７０６は、カメラ向き算出部２０５が取得したもので、配置済みオブジェクトの座標６０３から、配置するカメラの座標６０３を向く単位ベクトルで表される。なお、ここで、配置済みオブジェクトの座標６０３からの単位ベクトルとしたが、配置済みオブジェクトを構成するポリゴンの任意の点から、配置するカメラの座標６０３を向く単位ベクトルとしてもよい。
【００４２】
＜カメラ機種テーブル＞
図８は、カメラ機種テーブル８００であり、カメラ機種に関する情報を格納するテーブルで、二次記憶装置１０８に予め保存される。レイアウト支援プログラム２０１起動時にＲＡＭ１０３に展開される。
【００４３】
機種ＩＤ８０１は、カメラの機種を一意に特定できるユニークな識別子である。カメラ追加ボタン４０１に関連付けられており、押下したカメラ追加ボタン４０１ごとに、機種ＩＤ８０１が対応付けられている。機種名８０２は、カメラの機種名を示し、最低撮影距離８０３は、カメラがこの距離より被写体に近づくとフォーカスが合わなくなるという距離を示す情報である。画角最小値８０４は、カメラで設定可能な最小の画角を表し、画角最大値８０５は、カメラで設定可能な最大の画角を表し、映像サイズ８０６は、カメラで選択可能な映像サイズのリストを示している。
【００４４】
＜配置カメラテーブル＞
図９は、配置カメラテーブル９００であり、配置しようとするカメラに関する情報を格納するテーブルで、ＲＡＭ１０３に保存される。図６の配置オブジェクトテーブル６００と同様に、配置カメラテーブル９００も、追加ボタン４０１を押した時点で、レコードが作成され、追加処理がキャンセルされたらレコードは削除される。
【００４５】
オブジェクトＩＤ９０１は、オブジェクトＩＤ６０１と同じものであり、機種ＩＤ９０２は、機種ＩＤ８０１と同じＩＤである。最大距離９０３は、カメラ向き算出部２０５がカメラ向きを算出する際に、使用する配置済みオブジェクトとの距離の最大値を示す。画角９０４は、配置した時に設定する画角である。
【００４６】
例では、画角最大値８０５が設定されているが、別の値でも構わない。選択映像サイズ９０５は、カメラを実際に配置した時に設定する映像サイズである。この例では、映像サイズ８０６に示される最大のサイズが設定されているが、他の値が選択されていても構わない。例では、最大距離９０３は、４．２１ｍとなっており、算出方法は次のとおりである。
【００４７】
画角９０４が１２２．１°で、選択映像サイズ９０５が１２８０ｘ９６０の場合に、ピクセル密度１００３が２．５（ピクセル／ｃｍ）以上を要求する場合、許容できる最大距離９０３をＸメートルとすると、Ｘ×ｔａｎ（６２．６／２）＝（１２８０／２）／（２．５×１００）という計算式が成り立ち、この式から最大距離Ｘ＝４．２１メートルという数値を得ることができる。なお、簡便のため最大距離９０３として無限大（もしくは、最大距離９０３を最大値）を設定しても構わない。
【００４８】
＜カメラ向きを決定する処理について＞
図１１は、ステップＳ３０３における、配置するカメラの最適な向きを算出する処理の詳細を表すフローチャートである。
【００４９】
ステップＳ１１０１において、カメラ向き算出部２０５は、配置するカメラと各配置済みオブジェクトとの間に他のオブジェクトがあれば、図７のカメラ−オブジェクト関連テーブル７００の手前フラグ７０４にｆａｌｓｅを設定する。なければｔｒｕｅを設定する。ステップＳ１１０２において、カメラ向き算出部２０５は、配置済みオブジェクトごとに、配置するカメラとの距離を算出する。カメラと配置済みオブジェクトの位置は、図６の配置オブジェクトテーブルの座標６０３から取得できる。この２点から３次元距離を算出して、スケールＳをかけることで距離を算出できる。算出した距離は、図７のカメラ−オブジェクト関連テーブルの距離７０２に保存する。
【００５０】
ステップＳ１１０３において、カメラ向き算出部２０５は、図５のオブジェクト種別テーブルの重み５０３を取得してＲＡＭ１０３に格納する。格納した重み５０３と、図７のカメラ−オブジェクト関連テーブルの距離７０２とから、オブジェクトの優先度を算出して、図７のカメラ−オブジェクト関連テーブルの優先度７０３に保存する。優先度７０３の算出方法は図１２を用いて後述する。
【００５１】
ステップＳ１１０４において、カメラ向き算出部２０５は、配置するカメラからの距離７０２が、最低撮影距離８０３から最大距離９０３の範囲内にあり、かつ、優先度７０３が正数で、手前フラグ７０４がｔｒｕｅの配置済みオブジェクトがあるかを判定する。該当する配置済みオブジェクトがあれば、該当するオブジェクトの考慮フラグ７０５にｔｒｕｅを設定し、その他のオブジェクトの考慮フラグ７０５にｆａｌｓｅを設定して、ステップＳ１１０５へと進む。該当するオブジェクトがなければ、優先度７０３が負数で、かつ手前フラグ７０４がｔｒｕｅの配置済みオブジェクトの考慮フラグ７０５をｔｒｕｅに設定し、その他のオブジェクトの考慮フラグ７０５にｆａｌｓｅを設定して、ステップＳ１１０６へと進む。なお、ここで、最低撮影距離８０３から最大距離９０３の範囲内の距離に配置済みオブジェクトがあるか判定したが、別の方法で範囲を定めても本発明は実現可能である。
【００５２】
ステップＳ１１０５において、カメラ向き算出部２０５は、考慮フラグ７０５がｔｒｕｅの配置済みオブジェクトの中で、優先度７０３が最大値のオブジェクトの座標６０３を取得する。次に、配置するカメラから、該当する配置済みオブジェクトへ向くベクトルを算出し、オブジェクト向き６０５に設定して、カメラを該当する配置済みオブジェクトに向ける。
【００５３】
ステップＳ１１０６において、カメラ向き算出部２０５は、考慮フラグ７０５がｔｒｕｅの配置済みオブジェクトの、距離７０２、優先度７０３、向き７０６から、向きを算出し、オブジェクト向き６０５に設定して、カメラを該当する配置済みオブジェクトに向ける。オブジェクト向き６０５の算出方法については、図１３を用いて後述する。
【００５４】
＜オブジェクト配置例＞
図１２〜１４は、オブジェクトを配置する例である。ここで、説明を簡略化するために、ＸＹ平面だけ考える。なお、Ｚ方向を考慮しても本発明は実現可能である。また、配置するカメラは、図９の配置カメラテーブルに示した値が設定されているものとする。また、図１２〜１４の符号について、図４の説明で記載した内容と同一のものについては同じ符号を付すとともにその符号の示す内容の説明は省略する。なお、図面４１１は読み込んでいるものとするが、図が煩雑になるため図１２〜１５の中には示していない。
【００５５】
図１２は、壁１２０１、１２０２が配置されているフロアマップ４１０上に、カメラ１２０３を配置する例である。ステップＳ１１０２により、各種テーブルを参照し、カメラ１２０３から、壁１２０１への距離７０２を１．０ｍ、壁１２０２への距離７０２を、２．０ｍと算出されたとする。ステップＳ１１０３において、カメラ向き算出部２０５が（優先度７０３＝重み５０３／距離７０２）という計算式によって優先度７０３を算出する。
【００５６】
図５のオブジェクト種別テーブルより、重み５０３を取得する。例えば、壁オブジェクトの重み５０３は−３とする。壁１２０１の優先度７０３は、具体的には、（−３）／１．０  ＝  −３と算出される。同様に、壁１２０２の優先度７０３は、優先度７０３の−３を距離７０２の２ｍで割って、−１．５と算出される。ステップＳ１１０４により、カメラ−オブジェクト関連テーブルで、考慮フラグ７０５がｔｒｕｅのオブジェクトは、負数のものしかないため、ステップＳ１１０６に進み、下記のようにオブジェクト向きを算出する。
【００５７】
壁１２０１から見た、カメラ１２０３の向き７０６は、ＸＹ平面で考えると（１，０）で表される。壁１２０２から見た、カメラ１２０３の向き７０６は、（０，−１）である。このとき、各オブジェクトの向き７０６に、正規化された優先度７０３をかけて、和を取ると、オブジェクト向き６０５となる。
【００５８】
以下、具体的な数値を当てはめて例示する。壁１２０１の優先度７０３は−３であり、壁１２０２の優先度は−１．５なので、それぞれを正規化すると、
ＡＢＳ（−３／４．５）＝０．６６・・
ＡＢＳ（−１．５／４．５）＝０．３３・・
になる。そして、オブジェクト向き６０５は、
オブジェクト向き６０５＝０．６７×（１，０）＋０．３３×（０，−１）＝（０．６７，−０．３３）＝−２６．５７°
となる。
【００５９】
図１３は、壁１３０１、および入り口１３０２が配置されているフロアマップ４１０上に、カメラ１３０３を配置する例である。ステップＳ１１０２により、カメラ１３０３から、壁１３０１への距離７０２を２ｍ、入り口１３０２への距離７０２を４ｍと算出される。ステップＳ１１０３により、オブジェクト種別テーブルより重みを取得して、壁１３０１と入り口１３０２の優先度を算出すると、それぞれ、（−３）／２＝−１．５、（８）／４＝２となる。ステップＳ１１０４により、考慮フラグ７０５がｔｒｕｅの正数のオブジェクトがあるため、ステップＳ１１０５に進む。ステップＳ１１０５により、カメラ１３０３は、優先度が最大値で範囲内にある、入り口１３０２を向く。
【００６０】
図１４は、壁１４０１、レジ１４０２、１４０４が配置されているフロアマップ４０１上に、カメラ１４０３を配置する例である。ステップＳ１１０１により、レジ１４０４は、壁１４０１があるため、カメラ１４０３からは見えないため、レジ１４０４の手前フラグ７０４はｆａｌｓｅが設定される。ステップＳ１１０２により、カメラ１４０３から、壁１４０１への距離７０２を１ｍ、レジ１４０２への距離７０２を４ｍと算出される。なお、先に手前フラグを算出してｆａｌｓｅであることがわかっているので、レジ１４０４への距離７０２は算出しない。ステップＳ１１０３により、オブジェクト種別テーブルより重みを取得して、壁１４０１とレジ１４０２の優先度を算出すると、それぞれ、（−３）／１＝−３、（１０）／４＝５となる。ステップＳ１１０４により、考慮フラグ７０５がｔｒｕｅの正数のオブジェクトがあるため、ステップＳ１１０５に進む。ステップＳ１１０５により、カメラ１４０３は、優先度が最大値で範囲内にある、レジ１４０２を向く。
【００６１】
＜後からオブジェクトを配置する例＞
図１５は、カメラ１５０２〜１５０４が配置されているフロアマップ４１０上に、レジ１５０１を配置する例である。図１６を用いて説明する。ステップＳ１６０１において、ステップＳ１１０１と同様に、カメラ１５０２〜１５０４と、レジ１５０１の間に他のオブジェクトがないかを算出する。そして、図７で説明した、カメラ−オブジェクト関連テーブルのカメラとオブジェクトが逆の関係になった、同様なテーブル（図示せず）に手前フラグを格納する。以下、オブジェクト−カメラ関連テーブルと呼ぶ。また、オブジェクト−カメラ関連テーブルには、７０１〜７０６と同じ項目があるものとする。
【００６２】
ステップＳ１６０２において、ステップＳ１１０２と同様に、各オブジェクト間の距離を算出し、オブジェクト−カメラ関連テーブルの距離７０２に格納する。ステップＳ１６０３において、オブジェクト−カメラ関連テーブルから、手前フラグ７０４がｔｒｕｅで、もっとも距離７０２が短いカメラを探索し、該当するカメラをレジ１５０１に向ける。
【００６３】
オブジェクトを配置する前に、上記動作をするか否かをあらかじめ設定してもよいし、オブジェクト配置中に、例えば、Ｓｈｉｆｔキーを押下しながら実施すると、上記動作をするようにしてもよい。
【００６４】
＜その他の実施例＞
追加ボタン４０１を押した後に、フロアマップ表示部４１０上をクリックしてオブジェクトを配置した直後の処理を記載してきたが、配置前にフロアマップ表示部４１０上のマウスカーソルの位置をもとにして処理しても構わない。例えば、フロアマップ上でマウスカーソルを動かすと、リアルタイムに配置しようとするカメラの向きを確認できる。また、図示しないが、カメラからの映像をシミュレーションして表示する場合に、リアルタイムにシミュレーション映像を確認できるため、より配置が適切か確認しやすくなる。
【００６５】
また、配置済みのカメラを移動する時にも、本発明は適用可能である。例えば、一旦配置したカメラをマウスで選択してドラッグを開始した時点で、リアルタイムにカメラの向きを適切な方向に向けることができる。
【００６６】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2018196016.tif 000003
【図２】
2018196016.tif 000004
【図３】
2018196016.tif 000005
【図４】
2018196016.tif 000006
【図５】
2018196016.tif 000007
【図６】
2018196016.tif 000008
【図７】
2018196016.tif 000009
【図８】
2018196016.tif 000010
【図９】
2018196016.tif 000011
【図１０】
2018196016.tif 000012
【図１１】
2018196016.tif 000013
【図１２】
2018196016.tif 000014
【図１３】
2018196016.tif 000015
【図１４】
2018196016.tif 000016
【図１５】
2018196016.tif 000017
【図１６】
2018196016.tif 000018