(57)【要約】表示装置に表示される画像を生成する画像生成装置であって、プログラムを実行するプロセッサと、前記プログラムを格納するメモリとを備え、前記プロセッサは、現実空間に存在する物体の三次元モデルを仮想三次元空間に配置し、所定の撮影位置を包含する筒型の少なくとも一つの仮想スクリーンを前記仮想三次元空間に配置し、及び、前記撮影位置から撮影された全周囲画像を前記少なくとも一つの仮想スクリーンにマッピングする演算処理を実行し、前記三次元モデル及び前記少なくとも一つの仮想スクリーンが配置された前記仮想三次元空間を俯瞰して表示するための画像データを生成する。
2017017790.tif 000002
【特許請求の範囲】
【請求項１】
表示装置に表示される画像を生成する画像生成装置であって、
プログラムを実行するプロセッサと、
前記プログラムを格納するメモリとを備え、
前記プロセッサは、
現実空間に存在する物体の三次元モデルを仮想三次元空間に配置し、所定の撮影位置を包含する筒型の少なくとも一つの仮想スクリーンを前記仮想三次元空間に配置し、及び、前記撮影位置から撮影された全周囲画像を前記少なくとも一つの仮想スクリーンにマッピングする演算処理を実行し、
前記三次元モデル及び前記少なくとも一つの仮想スクリーンが配置された前記仮想三次元空間を俯瞰して表示するための画像データを生成する画像生成装置。
【請求項２】
請求項１に記載の画像生成装置であって、
前記少なくとも一つの仮想スクリーンは円筒の形状であることを特徴とする画像生成装置。
【請求項３】
請求項２に記載の画像生成装置であって、
前記仮想三次元空間には複数の仮想スクリーンが配置されており、
前記プロセッサは、
複数の前記複数の仮想スクリーンの各々が重ならないように前記円筒の半径を計算し、
前記計算された半径の円筒形状の仮想スクリーンを前記仮想三次元空間に配置する画像生成装置。
【請求項４】
請求項１に記載の画像生成装置であって、
前記プロセッサは、
前記撮影位置の近傍の前記仮想三次元空間内に少なくとも一つのマーカを表示するための画像データを生成し、
前記マーカの操作を検出した場合、前記少なくとも一つの仮想スクリーンの形状又は前記少なくとも一つの仮想スクリーンにマッピングされる全周囲画像を変化させる演算処理を実行する画像生成装置。
【請求項５】
請求項４に記載の画像生成装置であって、
前記少なくとも一つのマーカは、異なる撮影位置の全周囲画像に変更するために操作されるマーカ、前記仮想三次元空間の視点距離を変更するために操作されるマーカ、前記少なくとも一つの仮想スクリーンの大きさを変更するために操作されるマーカ、前記少なくとも一つの仮想スクリーンの形状を変更するために操作されるマーカ、及び、前記全周囲画像を最新の画像に更新するために操作されるマーカの、少なくとも一つである画像生成装置。
【請求項６】
請求項１に記載の画像生成装置であって、
前記プロセッサは、
前記全周囲画像を撮影するカメラに移動命令及び撮影命令を送信し、
前記移動命令による移動後の場所で撮影された全周囲画像を取得する画像生成装置。
【請求項７】
請求項１に記載の画像生成装置であって、
前記全周囲画像を格納するデータベースに接続されており、
前記プロセッサは、
ユーザによって指定された時刻に撮影された全周囲画像を前記データベースから取得し、
前記取得した全周囲画像を前記少なくとも一つの仮想スクリーンにマッピングする画像生成装置。
【請求項８】
請求項１に記載の画像生成装置であって、
前記プロセッサは、
前記仮想三次元空間内の位置の選択を検出した場合、前記選択された位置を包含する仮想スクリーンを生成し、
前記生成された仮想スクリーンに全周囲画像をマッピングし、
前記生成された仮想スクリーンを前記仮想三次元空間に配置する画像生成装置。
【請求項９】
請求項１に記載の画像生成装置であって、
前記プロセッサは、前記現実空間に存在する物体の三次元モデルを前記少なくとも一つの仮想スクリーン上で当該物体が表示される位置にマッピングする画像生成装置。
【請求項１０】
請求項９に記載の画像生成装置であって、
前記プロセッサは、前記仮想三次元空間に配置された三次元モデルと、前記少なくとも一つの仮想スクリーン上にマッピングされた三次元モデルとを関連付ける表示を前記仮想三次元空間に配置する画像生成装置。
【請求項１１】
画像生成システムであって、
表示装置に表示される画像を生成する画像生成装置と、
現実空間において全周囲画像を撮影するカメラとを有し
前記画像生成装置は、プログラムを実行するプロセッサと、前記プログラムを格納するメモリと、前記カメラが撮影した全周囲画像を取得するインターフェースとを有し、
前記画像生成装置は、
前記カメラが撮影した全周囲画像を取得し、
現実空間に存在する物体の三次元モデルを仮想三次元空間に配置し、所定の撮影位置を包含する筒型の少なくとも一つの仮想スクリーンを前記仮想三次元空間に配置し、及び、前記撮影位置から撮影された全周囲画像を前記少なくとも一つの仮想スクリーンにマッピングする演算処理を実行し、
前記三次元モデル及び前記少なくとも一つの仮想スクリーンが配置された前記仮想三次元空間を俯瞰して表示するための画像データを生成する画像生成システム。
【請求項１２】
請求項１１に記載の画像生成システムであって、
前記画像生成装置は、前記カメラに移動命令及び撮影命令を送信し、
前記カメラは、前記移動命令によって指定された場所に移動し、前記移動後の場所で全周囲画像を撮影し、
前記画像生成装置は、前記撮影された全周囲画像を取得する画像生成システム。
【請求項１３】
請求項１１に記載の画像生成システムであって、
前記画像生成装置は、
前記カメラの移動を指示するためのマーカを前記仮想三次元空間内に表示するための画像データを生成し、
前記マーカの選択を検出した場合、前記カメラに移動命令及び撮影命令を送信する画像生成システム。
【請求項１４】
画像生成装置によって画像を生成する画像生成方法であって、
前記画像生成装置は、プログラムを実行するプロセッサと、前記プログラムを格納するメモリとを有し、
前記画像生成方法は、
前記プロセッサが、
現実空間に存在する物体の三次元モデルを仮想三次元空間に配置し、所定の撮影位置を包含する筒型の少なくとも一つの仮想スクリーンを前記仮想三次元空間に配置し、及び、前記撮影位置から撮影された全周囲画像を前記少なくとも一つの仮想スクリーンにマッピングする演算処理を実行し、
前記プロセッサが、前記三次元モデル及び前記少なくとも一つの仮想スクリーンが配置された前記仮想三次元空間を俯瞰して表示するための画像データを生成する画像生成方法。
【請求項１５】
請求項１４に記載の画像生成方法であって、
前記プロセッサは、前記仮想三次元空間内の位置の選択を検出した場合、前記選択された位置を包含する仮想スクリーンを生成し、
前記プロセッサは、前記生成された仮想スクリーンに全周囲画像をマッピングし、
前記プロセッサは、前記生成された仮想スクリーンを前記仮想三次元空間に配置する画像生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像生成装置に関する。
【背景技術】
【０００２】
この技術分野の背景技術として、特表２０１０−５３１００７号公報（特許文献１）及び特開２００７−２２６５８０号公報（特許文献２）がある。【０００３】
特表２０１０−５３１００７号公報は、一システムが、パノラマのイメージを閲覧するために用いられ得る。該システムは、第１のパノラマのイメージの少なくとも一部を受け取るパノラマビューアであって、該パノラマビューアは、ビューポートを与え、該ビューポートは、該第１のパノラマのイメージの一部を表示する、パノラマビューアを含む。該ビューポートは、該パノラマのイメージと共に描画される３次元の覆いを含む。該パノラマビューアは、該パノラマのイメージと共に該３次元の覆いが描画される場合、該ビューポート内の該パノラマのイメージの向きにおける変更と一致するように、３次元の空間において該３次元の覆いの向きを変更する。ことが開示される。【０００４】
また、特開２００７−２２６５８０号公報は、２以上の背景オブジェクト画像と、その背景オブジェクト画像の位置を示す情報である背景位置情報とが対応付けられて記憶される画像記憶部、ユーザの位置及びユーザの視線方向を示す位置情報を受け付ける位置情報受付部、位置情報の示すユーザの位置に対応する背景オブジェクト画像を選択する画像選択部、３次元円筒の内面にマッピングされた、画像選択部が選択した背景オブジェクト画像から、位置情報を用いて出力画像を生成するレンダリング部、出力画像を出力する出力部を備える画像出力装置を開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２０１０−５３１００７号公報
【特許文献２】特開２００７−２２６５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
一つ又は複数のカメラによって全周囲を撮影する技術がある。しかし、全周囲の方向を撮影した画像はひずみが大きく違和感を与えるため、その提示方法は、通常のカメラの画像を表示するときのように自明ではない。多くの場合には、特許文献１のように全周囲画像の一部分を切り出した画像が用いられる。このような表示では、特に複数の位置で全周囲画像を撮影している場合、それぞれの画像に映っている物体の位置関係の把握は著しく困難となる。一方、複数の画像から完全な三次元モデルを再構築するためには、大量の画像や奥行き情報が必要であり、完成した画像にも十分な再現精度が得られないことが多い。そのため、各物体の三次元的な位置と、全周囲画像によって得られる視覚情報の対応付けを自然に与え、俯瞰的に状況を理解させる実用的な表示手段の確立が課題であった。【０００７】
前述した特表２０１０−５３１００７号公報に開示されたシステムでは、地図位置に関連付けて、撮影された全周囲画像の一部を表示するが、地図と写真とは別ウィンドウに表示され、地図で示されている位置と写真における視点位置との関係が分かりにくい。また、複数の地点で撮影された全周囲画像を併せて表示すると、画像と地図や、画像間の関係の直感的な把握が難しくなる。【０００８】
また、特開２００７−２２６５８０号公報に開示された装置では、円筒状の仮想スクリーンにパノラマ画像をマッピングして表示し、仮想空間の背景画像として使用する。しかし、一度に一枚のパノラマ画像だけを表示するものであり、複数のパノラマ画像を表示することは考慮されていない。
【課題を解決するための手段】
【０００９】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、表示装置に表示される画像を生成する画像生成装置であって、プログラムを実行するプロセッサと、前記プログラムを格納するメモリとを備え、前記プロセッサは、現実空間に存在する物体の三次元モデルを仮想三次元空間に配置し、所定の撮影位置を包含する筒型の少なくとも一つの仮想スクリーンを前記仮想三次元空間に配置し、及び、前記撮影位置から撮影された全周囲画像を前記少なくとも一つの仮想スクリーンにマッピングする演算処理を実行し、前記三次元モデル及び前記少なくとも一つの仮想スクリーンが配置された前記仮想三次元空間を俯瞰して表示するための画像データを生成する。
【発明の効果】
【００１０】
本発明の一形態によれば、全周囲画像を仮想三次元空間に分かりやすく配置することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１１】
【図１】現実の作業が行われている空間を示す図である。
【図２】第１実施例の計算機システムによって表現される仮想空間を示す図である。
【図３】第１実施例の仮想空間のモデルを表示する計算機システムの構成を示すブロック図である。
【図４】第１実施例の画像生成装置のハードウェア構成を示すブロック図である。
【図５Ａ】第１実施例のカメラの斜視図である。
【図５Ｂ】第１実施例のカメラの側面図である。
【図６】半球面を撮影した画像フォーマットの例を示す。
【図７Ａ】第１実施例において、円筒形状の仮想スクリーンの内側に全周囲カメラが撮影した画像を描画する例を示す図である。
【図７Ｂ】第１実施例において、側面の一部が平面となった筒形状の仮想スクリーンの内側に全周囲カメラが撮影した画像を描画する例を示す図である。
【図７Ｃ】第１実施例において、現実空間を上から見た図であり、作業者と設備の存在位置の例を示す。
【図７Ｄ】第１実施例において、仮想スクリーン上の画像の投影位置を示す図である。
【図８】第１実施例の撮影ルーチンのフローチャートである。
【図９】第１実施例の機器情報収集のフローチャートである。
【図１０】第１実施例の情報表示ルーチンのフローチャートである。
【図１１】第１実施例の初期化処理のフローチャートである。
【図１２】第１実施例の画像管理情報の例を示す図である。
【図１３Ａ】第１実施例のカメラ配置情報の構造例を示す図である。
【図１３Ｂ】第１実施例の機器情報の構造例を示す図である。
【図１４Ａ】第２実施例の全周囲画像を撮影するカメラの配置と、仮想スクリーンの配置を示す図である。
【図１４Ｂ】第２実施例の全周囲画像を撮影するカメラの配置と、仮想スクリーンの配置を示す図である。
【図１５Ａ】第２実施例において、カメラ位置を母点としたボロノイ図である。
【図１５Ｂ】第２実施例において、カメラ位置を母点としたボロノイ図である。
【図１６】第２実施例のカメラ選択処理のフローチャートである。
【図１７】第２実施例のカメラ配置情報の構造例を示す図である。
【図１８】第３実施例の仮想スクリーンに表示されるユーザインタラクションの例を示す図である。
【図１９】第４実施例のカメラの側面図である。
【図２０Ａ】第４実施例の作業空間を示す図である。
【図２０Ｂ】第４実施例の計算機システムによって表現される仮想空間を示す図である。
【図２１】第４実施例のカメラが移動可能な経路を格納するデータ構造を示す図である。
【図２２】第４実施例のカメラの移動及び撮影の処理のフローチャートである。
【図２３Ａ】第５実施例の仮想スクリーンへの三次元モデルの表示を示す図である。
【図２３Ｂ】第５実施例の仮想スクリーンへの三次元モデルの表示を示す図である。
【図２４】第５実施例の情報表示ルーチンのフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を用いて実施例を説明する。
【００１３】
なお、以下に説明する実施例は特許請求の範囲に係る発明を限定するものではなく、実施例の中で説明されている要素の組み合わせの全てが発明の解決手段に必須であるとは限らない。また、以下の説明では、「ｘｘｘテーブル」、「ｘｘｘリスト」、「ｘｘｘＤＢ」、「ｘｘｘキュー」等の表現で各種の情報を説明することがあるが、各種情報はテーブル、リスト、ＤＢ、キュー、等以外のデータ構造で表現されていてもよい。そのため、データ構造に依存しないことを示すため、「ｘｘｘのテーブル」、「ｘｘｘリスト」、「ｘｘｘＤＢ」、「ｘｘｘキュー」等を「ｘｘｘ情報」と称することがある。
【００１４】
さらに、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」という表現を用いるが、これらについてはお互いに置換が可能である。
【００１５】
さらに、後述する本発明の実施例は、汎用コンピュータ上で稼動するソフトウェアで実装してもよいし、専用ハードウェア又はソフトウェアとハードウェアの組み合わせで実装してもよい。
【００１６】
さらに、以下の説明では「プログラム」を主語として処理を説明することがあるが、プログラムはプロセッサ（例えば、ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）によって実行されることによって、定められた処理を記憶資源（例えば、メモリ）、通信Ｉ／Ｆ、ポートを用いて処理を実行するため、プロセッサを主語として説明してもよい。
【００１７】
プログラムを主語として説明された処理は、プロセッサを有する計算機（例えば、計算ホスト、ストレージ装置）が行う処理としてもよい。また、以下の説明では、「コントローラ」の表現で、プロセッサ又はプロセッサが行う処理の一部又は全部を行うハードウェア回路を指してもよい。プログラムは、プログラムソース（例えば、プログラム配布サーバや、計算機が読み取り可能な記憶メディア）から各計算機にインストールされてもよい。この場合、プログラム配布サーバはＣＰＵと記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムを記憶している。そして、配布プログラムをＣＰＵが実行することで、プログラム配布サーバのＣＰＵは配布対象のプログラムを他の計算機に配布する。
【００１８】
なお、管理サーバは入出力デバイスを有する。入出力デバイスの例としてはディスプレイとキーボードとポインタデバイスであるが、これ以外のデバイスであってもよい。また、入出力デバイスの代わりにシリアルインタフェースやイーサーネットインタフェースを入出力デバイスとし、当該インタフェースにディスプレイ又はキーボード又はポインタデバイスを有する表示用計算機を接続し、表示用情報を表示用計算機に送信したり、入力用情報を表示用計算機から受信することで、表示用計算機で表示を行ったり、入力を受け付けることで入出力デバイスでの入力及び表示を代替してもよい。
【００１９】
＜実施例１＞
本発明の第１実施例のシステムは、現実空間１００（図１）の状況を仮想空間２００（図２）上に可視化する。図１は、現実の作業が行われている空間１００を示す図である。
【００２０】
現実空間１００は、表現されるべき現実空間を示している。この空間１００内には、後述する３６０度方向を撮影可能なカメラ１１１〜１１２が設置されている。カメラ１１１〜１１２は、作業空間１００を構成する部屋の天井に設置されるが、床面や、所定の高さ位置（例えば１メートル）に設置されるものでもよい。
【００２１】
また、この空間１００内にはドア１２１が存在する。ドア１２１は、作業空間１００を構成する部屋へ出入りするためのドアでも、エレベータのドアでもよい。
【００２２】
さらに、この空間１００内には固定的に設置された設備１３１〜１３３が存在する。後述するように、設備１３１〜１３３は、設備１３１〜１３３の状態を電子的に収集可能な機能を有する電子機器を含む。例えば、設備１３１〜１３３が倉庫に設けられた棚である場合、作業者は自分のＩＤを入力して物品を取り出す作業を行う。例えば、設備１３１〜１３３は、倉庫に設けられた棚であり、棚に収容された物品の数や重量や増減数を収集して、出力する。また、設備１３１〜１３３は、モータなどの工場設備であり、その稼働回数、回転数、印加電圧、電流、温度を収集して、出力する。また、設備１３１〜１３３は、データセンタに設置されたコンピュータであり、リソース使用量を収集して、出力する。
【００２３】
また、当該空間１００内には作業者１４１、１４２が存在する。
【００２４】
図２は、第１実施例の計算機システムによって表現される仮想空間２００を示す図である。
【００２５】
図２に示す仮想空間２００は、現実空間１００の状況を視覚的に示すための３Ｄモデルとして構成され、現実の空間に配置されている様々な物体に対応づけられた三次元モデルと、当該三次元モデルが配置される三次元点（ｘ，ｙ，ｚ）によって構成される。
【００２６】
仮想空間２００を構成する三次元物体モデルについて説明する。図２において、現実空間１００の固定設備に対応する三次元モデルが仮想空間２００内に配置されている。具体的には、ドア１２１に対応する位置に三次元モデル２２１と、設備１３１〜１３３に対応する位置に三次元モデル２３１〜２３３とがそれぞれ表示される。
【００２７】
また、設備１３１〜１３３に対応する三次元モデル２３１〜２３３に関連付けて、当該設備の状態を表す数値や文字列２５１〜２５３がそれぞれ表示される。設備１３１〜１３３の状態を表す数値は、例えば、機器の温度、稼働頻度、リソース残量などである。
【００２８】
仮想空間２００には、カメラ１１１〜１１２の撮影点２１１〜２１２が表示され、撮影点２１１〜２１２を中心として仮想スクリーン２７１〜２７２が表示される。仮想スクリーン２７１上には、カメラ１１１に写った作業者１４１の像２４１が表示される。また、仮想スクリーン２７２上には、カメラ１１２に写った作業者１４１、１４２の像２４１、２４２がそれぞれ表示される。さらに、仮想スクリーン２７２上には、カメラ１１２に写った設備１３１の像２３６が表示される。
【００２９】
図３は、第１実施例の仮想空間のモデルを表示する計算機システムの構成を示すブロック図である。
【００３０】
仮想空間２００の情報は、ネットワーク３０１に接続した画像生成装置３０２によって画像化され、出力装置３０３に出力される。出力装置３０３は、表示装置やプリンタである。画像生成装置３０２は、中央計算部と、メモリ部と、外部とのインタフェース機器とによって構成される汎用的な計算機である。
【００３１】
ネットワーク３０１には、データベース３０４、３０５、３０６が接続される。データベース３０４、３０５、３０６は、ネットワーク３０１に接続された装置からアクセス可能なストレージ領域である。データベース３０４は、撮影点２１１〜２１２のカメラが撮影した画像を格納する。データベース３０５は、カメラが撮影した画像の画像管理情報を格納する。データベース３０６、設備１３１〜１３３の状態を格納する。
【００３２】
図４は、第１実施例の画像生成装置３０２のハードウェア構成を示すブロック図である。
【００３３】
画像生成装置３０２は、主記憶装置４０４に格納されたプログラムに従って動作する演算処理装置（ＣＰＵ）４０１と、演算処理装置４０１が実行するプログラムを格納する主記憶装置４０４と、入力デバイス３０８からの信号を受信する入力インタフェース４０３と、動作に必要なデータを保存する補助記憶装置４０５と、ネットワークとの通信を制御するネットワークインタフェース４０２と、出力装置３０３から出力する画像を生成する画像処理部４０６を有する。
【００３４】
主記憶装置４０４は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などを格納する。ＲＡＭは、ＤＲＡＭ（Dynamic Random Access Memory）のような高速かつ揮発性の記憶素子であり、補助記憶装置４０５に格納されたプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【００３５】
補助記憶装置４０５は、例えば、磁気記憶装置（ＨＤＤ）、フラッシュメモリ（ＳＳＤ）等の大容量かつ不揮発性の記憶装置で構成され、演算処理装置４０１が実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置４０５から読み出されて、主記憶装置４０４にロードされて、演算処理装置４０１によって実行される。
【００３６】
画像処理部４０６が実行する画像生成処理は、予め登録された三角形メッシュなどの集合による三次元モデルを用いて、ある視点位置から見たときの二次元画像をシミュレーションで計算するレンダリング処理を実行する。本発明の特徴は、このような一般的なレンダリング処理を用いて、複数のカメラ１１１〜１１２によって撮影された３６０度画像を組み合わせて俯瞰的な表示を実現することにある。
【００３７】
演算処理装置４０１が実行するプログラムは、リムーバブルメディア（ＣＤ−ＲＯＭ、フラッシュメモリなど）又はネットワークを介して画像生成装置３０２に提供され、非一時的記憶媒体である補助記憶装置４０５に格納される。このため、画像生成装置３０２は、リムーバブルメディアからデータを読み込むインタフェースを有するとよい。
【００３８】
画像生成装置３０２は、物理的に一つの計算機上で、又は、論理的又は物理的な複数の計算機上で構成される計算機システムであり、前述したプログラムが、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。また、画像生成装置３０２と他の装置が一つの物理的又は論理的計算機に収容されてもよい。演算処理装置４０１が提供する機能の一部は、他の論理回路（例えば、ＦＰＧＡ）で実装されてもよい。
【００３９】
作業空間１００に設置されるカメラ１１１〜１１２は、例えば、魚眼レンズを用いて天井から下面（横方向３６０度、縦方向１８０度の半球面）を撮影するネットワークカメラや、複数の広角カメラの画像を組み合わせて上下３６０度（全球面）を撮影するネットワークカメラでよい。
【００４０】
図５Ａは、第１実施例のカメラ１１１〜１１２を下方から見た斜視図であり、図５Ｂは、第１実施例のカメラ１１１〜１１２の側面図である。カメラ１１１〜１１２には、図５Ａ、図５Ｂに示すような全周囲型のカメラ５０１を用いることができる。
【００４１】
カメラ５０１は、天井に設置され、床側の下半球面（横方向３６０度）を撮影して、その画像をデータベース３０４に保存し、画像管理情報をデータベース３０５に保存する。カメラ５０１は、魚眼撮影レンズとＣＣＤ素子５１０と、キャリブレーションパターンを保存したメモリ５１１と、カメラ画像を保存するメモリ部５１２と、ネットワーク接続部５１３と、これらを制御する演算制御部５１４とから構成される。カメラ５０１は、ネットワークを経由して送信された静止画像撮影の命令や、動画撮影の開始命令及び終了命令によって、その動作を制御することができる。このような個別のネットワークカメラ自体は既存技術の組み合わせによって実現可能である。
【００４２】
カメラ５０１では、所定のテストパターンを用いて、あらかじめカメラの内部パラメータをキャリブレーションして、カメラが撮像した画像上の点と画像フォーマット上の点とを対応付けるための対応テーブルがメモリ５１１に保存されている。
【００４３】
図６は、半球面を撮影した画像フォーマットの例を示す。
【００４４】
撮影時の横方向の角度値θ、縦方向の角度値φに対して、画像サイズが横ＰＸ、縦ＰＹの画像内の点（ｐｘ，ｐｙ）への対応関係は式（１）で表される。
【００４５】
【数１】
2017017790.tif 000003
【００４６】
また、本発明で用いるカメラ１１１〜１１２は、図５に示す天井に設置される半球面を撮影する全周囲型のカメラ５０１や、図４に示すフォーマットの画像に限定されるものではなく、異なる方向の複数の広角画像を撮影した画像をつなぎ合わせて全球面画像を撮影するカメラや、角度と画素色が一意に対応付けられた別の画像フォーマットを用いて実現してもよい。
【００４７】
第１実施例では、筒型の仮想スクリーンに全周囲カメラが撮影した画像を表示する。筒型の仮想スクリーンは、様々な形状を採用しうるが、例えば、図２に示す円筒形状２７１、２７２である。
【００４８】
以下の説明では、カメラ１１１の撮影位置に対応する仮想空間上の点２１１を、撮影点（ｘｃ，ｙｃ，ｚｃ）と称する。仮想スクリーンは、この撮影点（ｘｃ，ｙｃ，ｚｃ）を取り囲むように配置される。
【００４９】
図７Ａは、第１実施例において、仮想スクリーン２７２を円筒形状に構成し、仮想スクリーン２７２の内側に全周囲カメラが撮影した画像を描画する例を示す図である。描画される画像は円筒の内側面にマッピングし、円筒の外側面と上面には描画しない。なお、円筒の底面に画像を描画してもよい。
【００５０】
第１実施例では、この円筒型の幾何形状を６４角形の筒形状で近似して三角形メッシュによって表し、各三角形メッシュ内で画像を線形補間して、画像の歪みが少なくなるように描画する。
【００５１】
円筒面は、式（２）及び式（３）で表される点（ｘ，ｙ，ｚ）の集合で表される。
【００５２】
【数２】
2017017790.tif 000004
【数３】
2017017790.tif 000005
式（２）、式（３）において、ｈは円筒の高さ、ｒは円筒の半径である。
【００５３】
このとき、以下の手法で、円筒上の点７０１と撮影画像の点とを対応付けてマッピングする。（ｘｃ，ｙｃ，ｚｃ）から、円筒面上の点７０１（ｘ，ｙ，ｚ）への相対的な位置ズレ量を（ｘ０，ｙ０，ｚ０）で表す。
【００５４】
【数４】
2017017790.tif 000006
式（４）において、円筒の半径ｒと、３６０度カメラの画像方向（θ，φ）を以下のように対応させる。なお、撮影点を中心とした縦方向の角度をφ、横方向の角度をθと定める。
【００５５】
【数５】
2017017790.tif 000007
【数６】
2017017790.tif 000008
【００５６】
前述したような対応関係に基づいて、テクスチャマッピング処理を行うことによって、撮影点２１２のカメラ１１２が撮影した画像が投影された筒型の仮想スクリーンを作成することができる。
【００５７】
図７Ａに示す円筒形状の仮想スクリーンは、全周の画像が等しく表示されるので、人や設備の存在位置が分からない場合に有効である。
【００５８】
なお、仮想スクリーンに床面７５０を含めて、画像の一部を床面７５０に投影してもよい。前述した方法では三次元上の撮影点からの相対的な角度（φ、θ）のみが必要条件であるため、撮影点２１２から角度（φ、θ）の方向に延伸した線と床面７５０との交点７０２に画像を投影すればよい。全周囲画像のうち床面７５０に投影される範囲は、仮想スクリーンの大きさによって定まる。例えば、図６のφ＜３０°の範囲が円筒の底面（床面７５０）に投影されるように、仮想スクリーンの大きさを設定してもよい。
【００５９】
また、仮想スクリーンを床面７５０のみで構成して、画像の全部を床面７５０に投影してもよい。この場合も、撮影点２１２から角度（φ、θ）の方向に延伸した線と床面７５０との交点７０２に画像を投影すればよい。床面７５０に投影される画像は広範囲に広がることから、床面７５０に所定の半径の円を規定して、その範囲に画像を投影するとよい。
【００６０】
さらに、仮想スクリーンは円筒以外で、底面が多角形の筒型でもよい。
【００６１】
図７Ｂは、第１実施例において、仮想スクリーン２７３を円柱の側面の一部が平面２７３Ａとなった筒形状に構成し、仮想スクリーン２７３の内側に全周囲カメラが撮影した画像を描画する例を示す図である。描画される画像は円筒の内側面にマッピングし、円筒の外側面と上面には描画しない。円筒の底面には画像を描画してもよい。
【００６２】
図７Ｂに示す仮想スクリーン２７３も、図７Ａに示す仮想スクリーン２７２と同様に、筒型の幾何形状を６４角形の筒形状で近似して三角形メッシュによって表し、各三角形メッシュ内で画像を線形補間して、画像の歪みが少なくなるように描画する。そして、図７Ａに示す仮想スクリーン２７２と同様の対応関係に基づいて、テクスチャマッピング処理を行うことによって、撮影点２１２のカメラ１１２が撮影した画像が投影された筒型の仮想スクリーンを作成することができる。
【００６３】
例えば、作業者１４３及び設備１３４が、図７Ｃに示す位置に存在する場合、平面部分２７３Ａが人や設備の存在場所に位置するように、仮想スクリーン２７３を配置する。すると、撮影点２１２から角度（φ、θ）の方向に延伸した線と平面部分２７３Ａとの交点７１１にマッピングされるように画像が投影される。このため、作業者１４３の像７３１が仮想スクリーン２７３の平面部分２７３Ａに描画され、設備１３４の像７３２が仮想スクリーン２７３の平面部分２７３Ａに描画される。
【００６４】
図７Ｂに示す側面の一部が平面２７３Ａとなった筒形状の仮想スクリーンは、側面の平面部分２７３Ａに人や設備が存在する場合に有効である。すなわち、人や設備が存在する位置に平面２７３Ａを配置すると有効である。例えば、現実空間１００に存在する設備と当該設備の操作者の位置に仮想スクリーンの面を構成するとよい。これは、仮想スクリーンの平面部分では、その位置に存在する物（人や設備）の正しい大きさが分かり、床面７５０の位置に表示される（床面７５０から浮いた位置に表示されることがない）ためである。
【００６５】
図７Ｄを用いて、仮想スクリーン上の画像の投影位置を説明する。例えば、作業者１４４が仮想スクリーン２７４の面から遠い位置に存在する場合、作業者１４４の像７４１はスクリーン上に小さく表示される。一方、作業者１４５が仮想スクリーン２７４の面から近い位置に存在する場合、作業者１４５の像７４２は、周辺の３Ｄモデルとほぼ同じ縮尺で表示される。
【００６６】
このため、仮想スクリーンに表示すべき人や設備の位置があらかじめ分かっている場合、表示対象の位置を通るように仮想スクリーンの面を設定することによって、当該表示対象の像を適切な大きさで見ることができる。
【００６７】
図７Ｂでは、側面の１箇所が平面となった筒形状の仮想スクリーンを示したが、仮想スクリーンの側面の２箇所以上が平面となってもよい。さらに、仮想スクリーンの側面の全てが複数の平面によって構成されてもよい。
【００６８】
以下、図８〜図１２に従って、第１実施例のシステムの動作を説明する。本システムの動作は、カメラによる撮影ルーチン（図８）、設備情報収集ルーチン（図９）、情報表示ルーチン（図１０）の三つから構成される。図８と図９のルーチンは所定のタイミングで繰り返し実行される処理である。
【００６９】
図８に示す撮影ルーチンでは、カメラ１１１〜１１２が所定のタイミングで繰り返し（例えば、定期的に）、画像を撮影する。
【００７０】
まず、カメラ１１１〜１１２は、所定のタイミング（例えば、所定の時間間隔）で撮影トリガを判定する（ステップ８０２）。撮影トリガは、タイマが計測した所定時間のタイムアップや、外部から入力される撮影命令などである。例えば、ユーザが現時点の画像を見たい場合、図１８に示すマーカ１８０５を操作することによって、画像生成装置３０２は指定されたカメラ１１１〜１１２に撮影命令を送信する。
【００７１】
そして、撮影トリガであると判定された場合、画像を撮影し、撮影された画像を内部メモリに保存する（ステップ８０３）。そして、キャリブレーション用のテーブルを用いて、撮影された画像を、所定のフォーマット（例えば、図６に示すフォーマット）変換し（ステップ８０４）、変換された画像をエンコードして圧縮し（ステップ８０５）。そして、エンコードされた画像を、データベース３０４に保存する（ステップ８０６）。また、撮影したカメラのＩＤ番号と撮影時刻などの画像管理情報をデータベース３０５に登録する（ステップ８０７）。
【００７２】
図１２は、第１実施例の画像管理情報の例を示す図である。
【００７３】
第１実施例の画像管理情報は、カメラを一意に識別するための識別情報１２０１と、画像が撮影された日付及び時刻１２０２と、データベース３０４に保存されるファイル名１２０３とを含む。
【００７４】
図９に示す機器情報収集ルーチンでは、設備１３１〜１３３が所定のタイミングで繰り返し（例えば、定期的に）、各設備の状態を出力する。
【００７５】
まず、設備１３１〜１３３は、所定のタイミング（例えば、所定の時間間隔）で読み取りトリガを判定する（ステップ９０２）。読み取りトリガは、タイマが計測した所定時間のタイムアップや、外部から入力される読取命令などである。例えば、ユーザが現時点の設備の状態を知りたい場合、画像生成装置３０２は指定された設備１３１〜１３３に読取命令を送信する。
【００７６】
そして、読み取りトリガであると判定された場合、設備１３１〜１３３の状態を取得し（ステップ９０３）、取得した値を、ネットワークを介してデータベース３０６に格納する（ステップ９０４）。データベース３０６に格納される状態は、設備の種類や構成によって様々に定義できる。例えば、棚に収容された物品の数や重量や増減数、設備の稼働回数、一定時間毎の使用人数、電池の残容量、設備の温度などである。
【００７７】
図１０は、第１実施例の情報表示ルーチンのフローチャートである。図１０に示す情報表示ルーチンでは、撮影されたカメラ画像及び機器の状態を３Ｄマップに投影し、画像を作成する。
【００７８】
まず、画像生成装置３０２は、補助記憶装置４０５にあらかじめ保存された３Ｄ画像の制御用プログラムと情報を読み込む初期化処理を実行する（ステップ１００１）。
【００７９】
初期化処理の詳細を図１１に示す。まず、画像生成装置３０２はネットワーク３０１を介してデータベース３０５にアクセスし、カメラ配置情報を取得する（ステップ１１０１）。カメラ配置情報の構造例を図１３Ａに示す。カメラ配置情報は、各カメラ１１１〜１１２を一意に識別するための識別情報１３０１と、カメラ１１１〜１１２が設置された位置の情報１３０２と、カメラ１１１〜１１２が撮影した画像が投影される仮想スクリーンの形状の初期値１３０３と、画像が投影される仮想スクリーンの大きさ１３０４及び高さ１３０５と、カメラ１１１〜１１２にアクセスするためのアドレス１３０６とを含む。カメラ１１１〜１１２がｗｅｂサーバ機能を有する場合、アドレス１３０６には、アクセスするためのＵＲＬを記載するとよい。
【００８０】
図１１に戻って説明を続ける。画像生成装置３０２は、ネットワーク３０１を介してデータベース３０６にアクセスし、設備配置情報を取得する（ステップ１１０２）。カメラ配置情報の構造例を図１３Ｂに示す。設備配置情報は、各設備１３１〜１３３を一意に識別するための識別情報１３１１と、設備１３１〜１３３が設置された位置の情報１３１２と、設備１３１〜１３３の形状１３１３と、設備１３１〜１３３にアクセスするためのアドレス１３１４とを含む。設備１３１〜１３３に付随する電子機器がｗｅｂサーバ機能を有する場合、アドレス１３１４には、アクセスするためのＵＲＬを記載するとよい。
【００８１】
図１０に戻って説明を続ける。初期化処理（ステップ１００１）を終えた後、画像定期的更新処理を行う。画像定期的更新処理では、入力デバイス３０８に入力されたデータを受け取り（ステップ１００２）、受け取ったデータに従って仮想空間を観察する視点位置を修正し、始点情報を作成する（ステップ１００３）。具体的に、ステップ１００３では、仮想空間上の三次元モデルを観察する視点の位置及び向きを定め、仮想空間上の三次元点ｐ３を二次元画面上の点ｐ２に投影する４×４次元の変換行列を設定する。第１実施例では、視点の位置及び角度を中心とした三次元座標系に変換するＶｉｅｗ行列Ｖと、三次元座標系を二次元座標系に変換するＰｒｏｊｅｃｔｉｏｎ行列Ｐとを定めることによって、式（７）のように三次元点を変換する。但し、Ｐ及びＶは、それぞれ４×４の変換行列であり、ｐ３は三次元上の点を三次座標表現で表す４次元ベクトルであり、ｐ２は二次元画像上の位置を三次座標表現で表す４次元ベクトルである。このような行列による三次元点の変換処理は、ＯｐｅｎＧＬなどの既存技術において広く用いられている方法を利用できる。
【００８２】
【数７】
2017017790.tif 000009
【００８３】
次に、画像表示用の二次元画像領域を主記憶装置４０４に確保し、確保した二次元画像領域を初期化する（ステップ１００４）。二次元画像領域に格納される二次元画像は、ピクセルと称される二次元配列によって構成され、各ピクセルは色情報（例えば、ＲＧＢの３色）を持つ。
【００８４】
そして、各機器から出力された情報を取得する（ステップ１００５）。具体的には、各設備１３１〜１３３に関連付けられた文字列（例えば、数値）をデータベース３０６から読み込む。
【００８５】
そして、読み込んだ情報に基づいて、対応する物体の色を変更して、三次元モデル２３１〜２３３を描画する（ステップ１００６）。例えば、読み込んだ数値があらかじめ定められた閾値１より大きかったら赤色、閾値２より小さかったら緑色、閾値１から閾値２の間であれば黄色で三次元モデルを描画する。第１実施例では三次元モデルは直方体で表され、直方体は三角形の集合のデータ構造として主記憶装置４０４の二次元画像領域に保存される。このデータ構造は、三角形の頂点データと、各面を構成する三つの頂点を結ぶ順序データとによって構成される。三角形の各頂点は、式（７）を用いて二次元画像上の点に変換され、頂点を結んだ三角形が三次元モデルの色として定められた色で塗られる。
【００８６】
この際、この色情報に、特定の光源条件によって陰影をつけたり、既に描かれた背景とブレンドして描画する半透明処理を適用してもよい。このような陰影をつけたり半透明化する方法は、ＯｐｅｎＧＬなどの既存技術によって広く用いられている方法を利用できる。また、各三次元モデル２３１〜２３３の近傍の位置に、データベース３０６から読み込んだ文字列２５１〜２５３を描画する。以下、この描画された文字列をテキストキャプションと称する。
【００８７】
そして、カメラ１１１〜１１２が撮影した画像を取得する（ステップ１００７）。例えば、データベース３０５を検索し、各カメラ１１１〜１１２が撮影した画像を検索し、撮影時刻１２０２が最も新しい画像のファイル名１２０３を取得する。次いで、取得したファイル名の画像をデータベース３０４から読み込んで主記憶装置４０４に展開し、テクスチャ画像として参照できるようにする。
【００８８】
次に、三次元モデルを仮想スクリーンに描画する（ステップ１００８）。第１実施例では、図７に示すように、仮想スクリーンは、床面７５０の平面形状と円筒形状７００とで表される。この床面７５０と円筒形状７００は、三角形の集合のデータ構造として主記憶装置４０４の二次元画像領域に保存される。このデータ構造は、三角形の頂点データと、各面を構成する三つの頂点を結ぶ順序データと、各頂点とテクスチャ画像の対応関係を示すテクスチャマッピングデータとによって構成される。三角形の各頂点は、式（７）を用いて二次元画像上の点に変換され、頂点を結んだ三角形が前記指定されたテクスチャによって塗られる。
【００８９】
第１実施例において、テクスチャの色情報を参照して三角形メッシュの領域を塗りつぶす処理は、スキャンライン法のラスタライズ処理として一般的に用いられている方法を利用できる。すなわち、三角形の各頂点が二次元画像上に変換された３点を結んだ三角形の内側に存在するピクセルを選択し、選択されたピクセルのテクスチャ座標を、３点のテクスチャ座標の線形補間によって求める。この補間されたテクスチャ座標位置の色を当該ピクセルの色に設定する。全ての三角形についてこの処理を繰り返す。
【００９０】
この際、この色情報に、特定の光源条件によって陰影をつけたり、既に描かれた背景とブレンドして描画する半透明処理を適用してもよい。このような陰影をつけたり半透明化する方法は、ＯｐｅｎＧＬなどの既存技術によって広く用いられている方法を利用できる。
【００９１】
また、この三角形の描画において、三角形の向きから表面と裏面を分けて表示の可否や異なる透明度で描画してもよい。第１実施例では、円筒の内側には画像を描画し、円筒の外側には画像を描画しない。
【００９２】
また、第１実施例におけるテクスチャ画像のフォーマット（図６参照）では、画像が非線形に変換されている。このため、線形補間処理によってテクスチャ座標の計算精度を向上するため、通常のレンダリングに用いる三角形分割より細かく分解した三次元モデルを保持するとよい。
【００９３】
そして、ステップ１００６で描画された画像と、ステップ１００８で描画された画像とを出力装置３０３に出力する（ステップ１００９）。ステップ１００２〜１００９を繰り返すことによって、利用者は三次元マップ上に配置された複数の全周囲画像を俯瞰して確認することができる。
【００９４】
以上に説明したように、本発明の第１実施例によると、画像生成装置３０２は、現実空間１００に存在する物体の三次元モデルを仮想三次元空間２００に配置し、所定の撮影位置から撮影された全周囲画像を、前記撮影位置を包含する筒型の仮想スクリーンにマッピングし、及び、仮想スクリーンを前記仮想三次元空間に配置し、三次元モデル及び仮想スクリーンが配置された仮想三次元空間を俯瞰して表示するための画像データを生成するので、全周囲画像を仮想三次元空間に分かりやすく配置することができる。
【００９５】
また、仮想スクリーンは円筒形状なので、歪みが少なく全周囲画像を仮想スクリーンにマッピングすることができる。
【００９６】
＜実施例２＞
第２実施例として、円筒形状の仮想スクリーンを配置するための計算方法を説明する。なお、第２実施例では、第１実施例と異なる構成及び処理のみを説明し、同じ構成及び処理の説明は省略する。
【００９７】
図１４Ａ、図１４Ｂは、全周囲画像を撮影するカメラの配置と、仮想スクリーンの配置を示す図である。
【００９８】
図１４Ａに示すように、仮想スクリーンが過密に配置されていると（ステップ１４０１）、互いに円筒が重複して見づらい表示形態となる。しかし、図１４Ｂに示すように、一部のカメラを非表示状態にすると、仮想スクリーンが間引かれて配置される（ステップ１４０２）。このように、第２実施例では、あらかじめ登録されたカメラ位置の集合から、この仮想スクリーンに表現するために適正な数のカメラを選択し、仮想スクリーンの円筒半径を自動的に計算するための方法を説明する。
【００９９】
第２実施例のハードウェア構成は、第１実施例（図１、図３）と同じである。第２実施例と第１実施例との差異は、カメラの位置をカメラからデータベース３０５に登録する処理（図１６）の追加と、データベース３０５から画像生成装置３０２に送るカメラの配置情報を動的に生成する処理である。第２実施例では、各カメラ５０１は自己の位置を認識する機能と、データベース３０５にアクセスするためのネットワーク接続部５１３を有する。自己の位置を認識する機能は、ＧＰＳを利用したり、ＷｉＦｉのアクセスポイントやビーコンからの信号を利用する既存の方法を利用できる。なお、カメラ５０１の位置を手動で入力する方法でもよい。
【０１００】
第２実施例では現実空間１００に全周囲カメラを設置した際に、それぞれのカメラで初期設定を行う。この初期設定において、カメラはＧＰＳを用いて自己の位置情報を取得し、ネットワーク３０１を経由してデータベース３０５にアクセスし、位置情報と、カメラの固有ＩＤと、ネットワークからアクセスするためのアドレスとをデータベース３０５に格納する。
【０１０１】
画像生成装置３０２は、初期化処理（ステップ１００１）において、カメラの設定をデータベース３０５から読み込む。第１実施例において、全周囲画像を表現する円筒の位置と大きさのデータは利用者が手動で作成し、補助記憶装置４０５にあらかじめ登録されている。第２実施例では、図１６示すフローチャートに示す処理によって、データベース３０５に登録されたカメラ５０１から画像が表示されるカメラを選択し、仮想スクリーンとして表示する円筒の半径の大きさを調整する。以下、処理を詳細に説明する。
【０１０２】
まず、各カメラの位置情報をデータベース３０５から取得し（ステップ１６０１）、図１７に示すデータ構造１７００を作成する（ステップ１６０２）。
【０１０３】
データ構造１７００は、カメラを位置に識別するための識別情報１７０１と、カメラの位置１７０２と、カメラの位置をボロノイ点としたボロノイ領域の情報１７０３とが含まれる。ボロノイ領域は、頂点の配列として記述され、この頂点を結ぶ領域に含まれる点からは、当該カメラが最も近いカメラとなるように定義される領域である。また、データ構造１７００は、カメラを初期状態の表示に使用するかを示すフラグ１７０４を含む。すなわち、当該カメラを初期状態の表示に使用する場合、フラグ１７０４にＴｒｕｅが設定される。一方、当該カメラを初期状態の表示に使用しない場合、フラグ１７０４にＦａｌｓｅが設定される。フラグ１７０４の初期状態はＴｒｕｅである。
【０１０４】
データ構造１７００を作成する際、半径１７０５にはあらかじめ初期値として定められた値Ｒ１を格納する。次に、作成されたデータ構造１７００を参照し、フラグ１７０４がＴｒｕｅである点をボロノイ点としたボロノイ図を作成する（ステップ１６０３）。そして、各カメラのボロノイ領域に対して、ボロノイ境界上でボロノイ点に最も近い点までの距離を算出し、その値を半径１７０５に格納する（ステップ１６０４）。
【０１０５】
次に、不要なカメラを削除する。各カメラ点のうち、半径１７０５がもっとも小さいものを選択する（ステップ１６０５）。この半径値が定数としてあらかじめ保存された閾値Ｒ１より小さい場合（ステップ１６０６でＹＥＳ）、当該カメラを非表示にするカメラとするため、フラグ１７０４をＦａｌｓｅに設定する（ステップ１６０７）。そして、フラグ１７０４がＴｒｕｅであるカメラについてボロノイ図を再作成して、ステップ１６０３〜１６０６を繰り返す。すべてのカメラの半径が初期値Ｒ１より大きくなった場合（ステップ１６０６でＮＯ）、ステップ１６０８に進む。
【０１０６】
次に、フラグ１７０４をＦａｌｓｅに設定された非表示のカメラについて、親カメラを設定する（ステップ１６０８）。非表示のカメラの設置位置を含むボロノイ領域を形成するカメラの識別情報を親カメラ１７０６に格納する。また、親カメラに選択されたカメラのデータの子カメラ１７０７に当該カメラの識別情報を格納する。
【０１０７】
なお、フラグ１７０４を用いず、非表示にするカメラの半径１７０５を０に設定してもよい。
【０１０８】
以上に説明した処理によって得られたカメラ群を用いると、図１５Ａに示すように仮想スクリーン同士が重複することなく、図１５Ｂに示すようにボロノイ領域が一定以上の大きさとなるようにカメラを配置することができる。そして、半径１７０５に格納された値を仮想スクリーンの半径値として使用することによって、仮想スクリーン同士の重複を避けることができる。
【０１０９】
また、半径１７０５に格納された値に１．０未満の定数を乗じた値を仮想スクリーンの半径値として使用することによって、仮想スクリーンの間に隙間が空き、仮想スクリーンをより見やすく表示することができる。
【０１１０】
また、半径の上限値をＲ２に設定し、Ｒ２と半径１７０５の値との小さい方を仮想スクリーンの半径値として使用することによって、仮想スクリーンの大きさのばらつきを減少でき、仮想スクリーンをより見やすく表示することができる。
【０１１１】
以上に説明したように、本発明の第２実施例によると、画像生成装置３０２は、仮想スクリーン同士が重ならないような半径の円筒形状の仮想スクリーンを仮想三次元空間に配置するので、仮想スクリーンにマッピングされた全周囲画像が重ならず、見やすく表示することができる。
【０１１２】
＜実施例３＞
第３実施例では、カメラの撮影位置に配置された三次元マーカを用いたユーザインタラクションについて説明する。第３実施例のシステムは、三次元モデルを描画する視点位置の変更、全周囲画像を投影する仮想スクリーンの変形、および全周囲画像の選択が可能である。なお、第３実施例では、前述した各実施例と異なる構成及び処理のみを説明し、同じ構成及び処理の説明は省略する。
【０１１３】
第３実施例のハードウェア構成は、第１実施例（図１、図３）と同じである。画像生成装置３０２への入力デバイス３０８として、マウスなどの一般的なポインティングデバイスを用いる。一般に、マウスでは、画像内の位置を指定するクリックやドラッグなどの操作を感知して、アプリケーションが登録したコールバックサブルーチンを実行する手段をオペレーティングシステムが提供している。このコールバックを実現する手段は既知の方法を利用できる。第３実施例の以下の記述では、マウスによるドラッグの検出からコールバック関数を呼び出すまでの処理は公知の方法を利用する。
【０１１４】
第３実施例において、仮想空間２００を観察する仮想視点の位置と角度を設定する手順を説明する。第３実施例では、視野の中心（被写体の位置）となる三次元座標Ｕ１と視点（カメラ）の位置となる三次元座標Ｕ２によって定義する、ターゲットカメラと称される方法を用いる。Ｕ２を中心とする平行移動行列Ｔと、Ｕ１からＵ２の方向をカメラの視線方向（Ｚ軸）として設定する回転行列Ｒとを定義する。Ｖｉｅｗ行列Ｖは、行列の積Ｖ＝ＲＴによって定義される。このような視点位置の設定方法はターゲットカメラとして一般に用いられている方法である。以下の説明では、Ｕ１を注目点と称し、Ｕ２を仮想視点と称する。また、Ｕ２とＵ１との距離｜Ｕ２−Ｕ１｜をターゲットカメラ距離ｄと称する。角度Ｒ、ターゲットカメラ距離ｄ、注目点Ｕ１を入力として、視点位置Ｕ２を定義してＶｉｅｗ行列Ｖを作成する計算処理は、一般に利用されている方法を採用することができる。
【０１１５】
各仮想スクリーンの内部またはその近傍に、三次元マーカを配置する。図１８は、第３実施例において、円筒形状の仮想スクリーン２７２に表示されるユーザインタラクションの例を示す図である。
【０１１６】
仮想スクリーン２７２のカメラ撮影位置にマーカ１８０１を配置し、その周辺にマーカ１８０２〜１８０５を配置する。また、第２実施例の操作によって非表示に設定された子カメラ１７０７を選択し、当該子カメラの設置場所１７０２に、マーカ１８１０〜１８１２を配置する。
【０１１７】
入力デバイス（マウス）３０８によって、マーカ１８０２〜１８０５を操作した場合、以下に述べるイベント関数が実行される。
【０１１８】
＜選択による視点中心の移動＞
マーカ１８０１の操作が検出された場合、注目点Ｕ１の位置を、該当する仮想スクリーン２７２の撮影位置に一致させる。この操作によって、仮想スクリーン２７２が画像の中心となる。このカメラ視点の移動は、画像を連続的に変化させたアニメーションによって表示するとよい。
【０１１９】
＜視点距離の変化＞
マーカ１８０２を始点としたドラッグ操作が検出された場合、ターゲットカメラ距離ｄを変化させる。例えば、上方向にＡピクセル分のドラッグ操作が検出された場合、ターゲットカメラ距離ｄのカメラの移動を、画像を連続的に変化させたアニメーションによって表示するとよい。ターゲットカメラ距離ｄが０に近い条件においては、スクリーンの画角とカメラ画角とがほぼ等しくなるため、全周囲画像の一部を切り出した画像と同等の画像となる。
【０１２０】
＜スクリーンの大きさ調整＞
マーカ１８０３を始点としたドラッグ操作が検出された場合、該当する仮想スクリーンの半径を変化させる。例えば、上方向にＡピクセル分のドラッグ操作が検出された場合、仮想スクリーン２７２の表示半径ｒを、ｒ×（１００＋Ａ）／１００に変化させる。
【０１２１】
＜スクリーン形状の変化＞
マーカ１８０４の操作が検出された場合、仮想スクリーン２７２を四角柱に変化させる。なお、マーカ１８０４の操作後に、変化後の仮想スクリーンの形状を選択するサブ画面を表示してもよい。
【０１２２】
＜リアルタイム画像の取得＞
マーカ１８０５の操作が検出された場合、画像生成装置３０２は撮影命令を指定されたカメラ１１１〜１１２に送信する。カメラ１１１〜１１２は、撮影命令を受信すると、画像を撮影し、所定の処理の後、データベース３０４に画像を保存する。画像生成装置３０２は撮影命令を指定されたデータベース３０４に保存された画像を取得することによって、最新の画像を仮想スクリーン２７２に表示することができる。
【０１２３】
なお、マーカ１８０５の操作が検出された場合、カメラ１１１〜１１２に対する撮影命令の他に、設備１３１〜１３３に対する読取命令を送信してもよい。
【０１２４】
＜全周囲画像の変更＞
また、第２実施例の操作によって非表示に設定された子カメラの設置場所に、マーカ１８１０〜１８０３を配置してもよい。これらのマーカの操作が検出された場合、当該選択された子カメラの位置を中心として仮想スクリーン２７２を表示し、当該選択された子カメラが撮影した全周囲画像を仮想スクリーン２７２に描画する。
【０１２５】
第３実施例では、マーカの操作によるコールバック機能によって、仮想スクリーンに描画される画像を変えることができる。
【０１２６】
以上に説明したように、本発明の第３実施例によると、画像生成装置３０２は、撮影位置の近傍の前記仮想三次元空間内に少なくとも一つのマーカを表示するための画像データを生成し、マーカの操作を検出した場合、仮想スクリーンの形状又は仮想スクリーンにマッピングされる全周囲画像を変化させるので、ユーザの操作に従って、ユーザが見たい画像を表示することができる。
【０１２７】
また、第３実施例によると、マーカは、異なる撮影位置の全周囲画像に変更するために操作されるマーカ１８０１であるので、異なる位置から見た全周囲画像を表示することができる。また、マーカは、前記仮想三次元空間の視点距離を変更するために操作されるマーカ１８０２であるので、異なる位置から見た、異なる大きさで全周囲画像を表示することができる。マーカは、前記仮想スクリーンの大きさを変更するために操作されるマーカ１８０３であるので、異なる大きさで全周囲画像を表示することができる。マーカは、前記仮想スクリーンの形状を変更するために操作されるマーカ１８０４であるので、異なる位置の注視するための全周囲画像を表示することができる。マーカは、前記全周囲画像を最新の画像に更新するために操作されるマーカ１８０５であるので、最新の画像を表示することができる。
【０１２８】
＜実施例４＞
第４実施例では、視聴者が三次元マップ上の表示マーカにインタラクションすることによって、現実空間１００に存在する全周囲画像の撮影機器を操作する方法について説明する。なお、第４実施例では、前述した各実施例と異なる構成及び処理のみを説明し、同じ構成及び処理の説明は省略する。
【０１２９】
第４実施例の基本ハードウェア構成は、カメラ１１２を除いて、第１実施例（図１、図３）と同じである。ただし、第４実施例において、カメラ１１２の代わりに物理的移動機能を有するカメラ２００１を用いる。図１９は、第４実施例で用いるカメラ２００１の構成を示す図である。
【０１３０】
カメラ２００１は、図５Ａ、図５Ｂで示したカメラの構成に加えて、車輪１９１１と動力伝達機構１９１２とモータ１９１３とを有しており、モータ１９１３に駆動して車輪１９１１を回転させることによってレール１９２０に沿って移動する機能を有する。また演算制御部５１４は、モータ制御部１９１４を介して電圧又は電流を制御することによってモータ１９１３を駆動することができる。
【０１３１】
図２０Ａは、第４実施例の作業空間１００を示す図である。カメラ２００１の移動可能な範囲は、レール１９２０に依存する。
【０１３２】
図２１は、カメラが移動可能な経路を格納するデータ構造２１００を示す図である。
【０１３３】
データ構造２１００は、カメラを一意に識別するための識別情報２１０１と、カメラの位置（移動先）２１０２と、所定の起点から当該位置に移動するためのモータ１９１３の駆動量２１０３とを含む。データ構造２１００の各データは、識別情報２１０１で識別されるカメラ２００１が設置されるレール１９２０の通過点に対応する。データ構造２１００は、データベース３０５に登録しておき、カメラＩＤ２１０１の値を指定することによって取得できるとよい。
【０１３４】
カメラ２００１は、ネットワーク３０１を介して、移動命令や撮影命令を受信し動作する機能を有する。カメラ２００１は固有ＩＰアドレスを有しており、所定のポートにメッセージを受け取ると、モータ１９１３を所定量だけ駆動して、メッセージ送信元に応答メッセージを返信する。カメラ２００１は移動可能なカメラの一例であり、レールに沿って移動せず、床面を自走するカメラでもよい。また、このようなカメラの移動機構は、既存の技術の組み合わせにより実施可能である。
【０１３５】
初期化処理（ステップ１００１）において、画像生成装置３０２は、カメラ２００１の現在の場所の情報、及び移動可能な経路の情報２１００も取得する。そして、図２０Ｂに示すように、この情報を用いて、カメラ２００１が移動可能な軌跡２０２０を画面上に描画する（ステップ１００６）。
【０１３６】
図２０Ｂに、第２実施例のシステムによって表現される仮想空間２００の表示例を示す。カメラ２００１が移動可能な経路上の点を示すマーカ２０２１〜２０２９をユーザがマウスの操作によって指定した場合、カメラの移動と撮影を命じるメッセージをカメラ２００１に送信する。カメラ２００１は、指示された場所に移動し、周囲の画像を撮影して、データベース３０５に格納する。
【０１３７】
なお、カメラ２００１が動きながら、全周囲画像を撮影してもよい。この場合、全周囲画像を撮影した位置にマーカを表示するとよい。
【０１３８】
図２２は、カメラ２００１の移動及び撮影の処理のフローチャートである。
【０１３９】
画像生成装置３０２が通過点（マーカ）の選択を感知すると（ステップ２２０１）、選択されたマーカが表す通過点のデータをデータ構造２１００から読み込み（ステップ２２０２）、データ構造２１００から取得した駆動量２１０３をカメラ２００１に送信し、カメラの移動を命令する（ステップ２２０３）。
【０１４０】
カメラ２００１は、移動命令を受信すると、モータを駆動し（ステップ２２１１）、選択されたマーカの位置に移動した後、周囲の画像を撮影し、撮影した画像をデータベース３０５に格納する（ステップ２２１２）。撮影後の画像の圧縮とデータベースへの登録は、第１実施例１のステップ８０２〜８０７と同じである。撮影作業の終了後に、撮影終了メッセージを画像生成装置３０２に送信する（ステップ２２１３）。
【０１４１】
画像生成装置３０２は、撮影終了メッセージを受信すると（ステップ２２０４）、データベース３０５から画像を読み込み、新たな撮影位置に仮想スクリーンを動かし、画像を表示する（ステップ２２０５）。
【０１４２】
なお、第４実施例において、データベース３０５に格納される画像管理情報に、カメラの位置と撮影時刻を含める。そして、ユーザがマーカを選択すると、選択されたマーカの位置（又は最も近い位置）で撮影された最新の画像をデータベース３０５から検索し、検索された画像をデータベース３０４から取得して、取得した画像を仮想スクリーンに表示してもよい。このとき、選択したマーカの位置を中心とする仮想スクリーンを新たに表示してもよい。さらに、選択したマーカの位置に視点を移動してもよい。
【０１４３】
さらに、ユーザが入力した時刻（又は最も近い時刻）に撮影された画像をデータベース３０５から検索し、検索された画像をデータベース３０４から取得して、取得した画像を、撮影位置に対応する仮想スクリーンに表示してもよい。このとき、撮影位置に対応する仮想スクリーンを新たに表示してもよい。さらに、撮影位置に対応する仮想スクリーンの中心に視点を移動してもよい。
【０１４４】
以上に説明したように、本発明の第４実施例によると、画像生成装置３０２は、カメラ２００１に移動命令及び撮影命令を送信し、カメラ２００１は、移動命令によって指定された場所に移動し、移動後の場所で全周囲画像を撮影し、画像生成装置３０２は、撮影された全周囲画像を取得するので、ユーザが見たい位置の現在の画像を表示することができる。
【０１４５】
また、画像生成装置３０２は、ユーザによって指定された時刻に撮影された全周囲画像をデータベース３０４から取得し、取得した全周囲画像を仮想スクリーンにマッピングするので、ユーザが見たい時刻の画像を表示することができる。
【０１４６】
また、画像生成装置３０２は、仮想三次元空間内の位置の選択を検出した場合、選択された位置を包含する仮想スクリーンを生成し、生成された仮想スクリーンに全周囲画像をマッピングし、生成された仮想スクリーンを前記仮想三次元空間に配置するので、ユーザが見たい位置の現在の画像を表示することができる。
【０１４７】
また、画像生成装置３０２は、カメラ２００１の移動を指示するためのマーカ２０２１〜２０２９を仮想三次元空間内に表示するための画像データを生成し、マーカ２０２１〜２０２９の選択を検出した場合、カメラ２００１に移動命令及び撮影命令を送信するので、ユーザの意思に従ってカメラを移動することができる。
【０１４８】
＜実施例５＞
第５実施例では、仮想空間２００に表示された三次元モデルと、仮想空間２００内の仮想スクリーン上に表示された画像とを関連付けて表示する方法について説明する。なお、第５実施例では、前述した各実施例と異なる構成及び処理のみを説明し、同じ構成及び処理の説明は省略する。
【０１４９】
第１実施例においては、現実空間１００内に存在する設備１３１〜１３３の状態を、仮想空間２００内に描画された三次元モデルの色やテキストキャプションによって表示した。しかし、第１実施例の方法では、仮想空間２００内に描かれた三次元モデル２３１〜２３３の位置と、仮想スクリーン上に描かれた全周囲画像の像の位置とは、通常は異なっており、撮影位置と仮想スクリーンに描画される画像の撮影位置とが等しい場合に、一致する。このため、第５実施例では、図２３Ａに示すように、仮想スクリーン２７２内で当該設備の像が描画される位置に、仮想空間２００内の特定の三次元モデル２３１と同じ三次元モデル２３０１を描画することによって、全周囲画像と三次元マップとの対応関係を直観的に分かりやすく表すことができる。
【０１５０】
第５実施例のハードウェア構成は、第１実施例（図１、図３）と同じである。
【０１５１】
図２４は、第５実施例の情報表示ルーチンのフローチャートである。
【０１５２】
第５実施例では、三次元モデルと機器情報を描画する処理（ステップ２４０６）が、第１実施例と異なる。ステップ２４０６では、設備の三次元モデルを、第１実施例と同様に仮想空間２００内に描画し（ステップ２４１２）、仮想スクリーン２７２内にも描画する（ステップ２４１５）。
【０１５３】
具体的には、まず、画像生成装置３０２は、仮想空間２００内に含まれる設備のうち、処理されていない設備の有無を判定する（ステップ２４１１）。そして、未処理の設備を一つ選択し、選択された設備の三次元モデルを仮想空間２００内に描画する（ステップ２４１２）。
【０１５４】
そして、選択された設備が、撮影位置に最も近い仮想スクリーンに表示すべき設備であるかを判定する（ステップ２４１３）。例えば、当該仮想スクリーン上に表示される当該設備の大きさが所定値以上であるかを判定するとよい。
【０１５５】
そして、当該仮想スクリーン上に表示すべき設備であると判定された場合、データベース３０５にアクセスし、カメラ配置情報（図１３Ａ）を取得し、処理すべき仮想スクリーンの情報を抽出する（ステップ２４１４）。視点から前方（視線方向）で、視点に最も近い仮想スクリーンを処理すべき仮想スクリーンとして選択する。第３実施例にて説明したユーザインタフェースと併用する場合、マーカ１８０１を操作して指定された仮想スクリーンを選択するとよい。
【０１５６】
そして、当該設備の三次元モデルを当該仮想スクリーン上に描画する（ステップ２４１５）。
【０１５７】
その後、仮想空間２００内に描画された三次元モデルと仮想スクリ―ン上に描画された三次元モデルとを対応付けるために、二つの三次元モデルを結ぶ直線２３２０を描画する（ステップ２４１６）。具体的には、三次元モデル２３１の各頂点座標ｐと、三次元モデル２３０１の頂点座標ｐ’を結ぶ線分を描画する。二つの三次元モデルを結ぶ線分によって、仮想空間２００内の物体と仮想スクリーン２７２に表示された物体とを、俯瞰状態でも容易に関係付けることができる。
【０１５８】
この二つの三次元モデルを結ぶ線分は、二つの三次元モデルの全部又は一部の頂点同士を結ぶとよい。また、二つの三次元モデルを結ぶ線分は、オプショナルであり、表示しなくてもよい。また、二つの三次元モデルを結ぶ線分は、全ての設備について表示しなくても、画面が煩雑にならない程度の数だけ表示すればよい。さらに、二つの三次元モデルを結ぶ線分は、通常は描画せず、ユーザが設備を選択した（例えば、三次元モデルにマウスオンした）場合に描画してもよい。
【０１５９】
図２３Ｂに、設備の三次元モデルを当該仮想スクリーン上に描画する例を示す。ステップ２４１５において、三次元モデル２３１を仮想スクリーン２７２の内部に描画する場合、三次元モデル２３１のデータ構造は、第１実施例と同様に、三角形の頂点データと、各面を構成する三つの頂点を結ぶ順序データとによって構成される。また、仮想スクリーンの撮影位置をｃ＝（ｘｃ，ｙｃ，ｚｃ）で表し、円筒の半径はＲで表される。
【０１６０】
そして、仮想スクリーン２７２を構成する円筒の中心の撮影点２１２からの距離がｒ１〜ｒ２の領域２３２０を、円筒面内側の筒付近の領域２３３０に変換する。領域２３３０は円筒中心からの距離がｒ１’〜ｒ２’の領域を定義すると、式（８）及び式（９）を用いて点ｐ＝［ｘ，ｙ，ｚ］の座標を変換できる。
【０１６１】
【数８】
2017017790.tif 000010
【数９】
2017017790.tif 000011
式（８）、式（９）において、ｐｃは、撮影点に相当する座標［ｘｃ，ｙｃ，ｚｃ］を原点として点ｐ＝［ｘ，ｙ，ｚ］を変換した場合の相対座標であり、式（９）によって、撮影点からの距離｜ｐｃ｜を変換することができる。式（８）及び式（９）を用いて、三次元モデル２３１の各頂点ｐを変換した点ｐ’を頂点とした三次元モデル２３０１を描画する。
【０１６２】
仮想スクリーン２７２上の三次元モデル２３０１は、円筒形状の内側面の狭い領域２３３０に描画される。この領域を撮影点２１２から観察すると、全周囲画像の像２３６と、三次元モデル２３０１は重なって見える。すなわち、仮想スクリーン２７２にマッピングされた全周囲画像として撮影された物体と、当該物体の三次元モデルとが重畳して表示される。また、領域２３３０が十分に小さい場合、撮影点２１２以外の場所から見た場合にも、三次元モデルは重畳して見える。
【０１６３】
以上に説明したように、本発明の第５実施例によると、画像生成装置３０２は、現実空間１００に存在する物体の三次元モデルを仮想スクリーン上で当該物体が表示される位置にマッピングするので、全周囲画像の像２３６と三次元モデル２３０１とが仮想スクリーン上で重畳して表示されるため、俯瞰状態のまま複数の全周囲画像を把握できる。
【０１６４】
また、画像生成装置３０２は、仮想三次元空間２００に配置された三次元モデルと、仮想スクリーン上にマッピングされた三次元モデルとを関連付ける線分を表示するので、仮想空間２００内の物体と仮想スクリーン２７２に表示された物体とを、俯瞰状態でも容易に関係付けることができる。
【０１６５】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【０１６６】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【０１６７】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【０１６８】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【図１】
2017017790.tif 000012
【図２】
2017017790.tif 000013
【図３】
2017017790.tif 000014
【図４】
2017017790.tif 000015
【図５Ａ】
2017017790.tif 000016
【図５Ｂ】
2017017790.tif 000017
【図６】
2017017790.tif 000018
【図７Ａ】
2017017790.tif 000019
【図７Ｂ】
2017017790.tif 000020
【図７Ｃ】
2017017790.tif 000021
【図７Ｄ】
2017017790.tif 000022
【図８】
2017017790.tif 000023
【図９】
2017017790.tif 000024
【図１０】
2017017790.tif 000025
【図１１】
2017017790.tif 000026
【図１２】
2017017790.tif 000027
【図１３Ａ】
2017017790.tif 000028
【図１３Ｂ】
2017017790.tif 000029
【図１４Ａ】
2017017790.tif 000030
【図１４Ｂ】
2017017790.tif 000031
【図１５Ａ】
2017017790.tif 000032
【図１５Ｂ】
2017017790.tif 000033
【図１６】
2017017790.tif 000034
【図１７】
2017017790.tif 000035
【図１８】
2017017790.tif 000036
【図１９】
2017017790.tif 000037
【図２０Ａ】
2017017790.tif 000038
【図２０Ｂ】
2017017790.tif 000039
【図２１】
2017017790.tif 000040
【図２２】
2017017790.tif 000041
【図２３Ａ】
2017017790.tif 000042
【図２３Ｂ】
2017017790.tif 000043
【図２４】
2017017790.tif 000044
【国際調査報告】
2017017790.tif 000045
2017017790.tif 000046
2017017790.tif 000047
2017017790.tif 000048
2017017790.tif 000049
2017017790.tif 000050