以下に添付図面を参照して、入力装置および入力装置の入力方法、ならびに、出力装置および出力装置の出力方法の実施形態を詳細に説明する。
(第1の実施形態)
第1の実施形態では、全天球を撮像可能な撮像装置を用いて撮像された診断対象の全天球画像に対して、当該全天球画像上で位置を指定してアノテーションを入力する。入力されたアノテーションは、当該位置と関連付けられて保存される。
診断対象の撮像に全天球画像を用いることで、少ない撮像回数で診断対象を漏れ無く撮像できる。また、アノテーションの入力を、全天球画像上で位置を指定して行うため、アノテーションを入力した対象を直感的に把握可能であり、入力漏れを抑制可能である。さらに、入力したアノテーションを全天球画像の位置と関連付けて保存するため、アノテーションに基づく報告書の作成作業において、アノテーションと、アノテーションを入力した対象との対応関係の把握が容易となり、報告書の作成処理に係る負担を低減可能である。またそれにより、報告書作成における人為的ミスの発生を抑制できる。
なお、全天球画像は、撮像位置に対して、直交する2平面(例えば水平面および垂直面)それぞれにおいて360°の画角、すなわち、撮像位置に対して4πステラジアンの画角で撮像された画像である。また、アノテーションは、診断対象を観察および診断した結果に基づく情報である。アノテーションは、診断対象の種別毎に予め定められた1以上の項目と、任意のコメントと、を含むことができる。アノテーションは、さらに、画像を含むことができる。
[第1の実施形態に適用可能な撮像装置]
図1は、第1の実施形態に適用可能な撮像装置の一例の外観を概略的に示す図である。図1において、撮像装置1aは、略直方体の筐体10aの第1の面に撮像レンズ20aが設けられ、第1の面に対向する第2の面の、撮像レンズ20aに対応する位置に撮像レンズ20bが設けられる。筐体10a内には、各撮像レンズ20aおよび20bにそれぞれ対応して撮像素子が設けられる。
各撮像レンズ20aおよび20bに入射した光は、筐体10aに設けられる、それぞれ撮像レンズ20aおよび20bを含む結像光学系を介して、それぞれ対応する撮像素子に照射される。撮像素子は、例えばCCD(Charge Coupled Device)であって、照射された光を電荷に変換する受光素子である。撮像素子は、これに限らず、CMOS(Complementary Metal Oxide Semiconductor)イメージセンサであってもよい。
詳細は後述するが、各撮像素子を駆動する各駆動部は、トリガ信号に応じて、各撮像素子に対してシャッタ制御を行うと共に、各撮像素子から光が変換された電荷を読み出す。各駆動部は、各撮像素子から読み出した電荷をそれぞれ電気信号に変換し、この電気信号をディジタルデータとしての撮像画像に変換して出力する。各駆動部から出力された各撮像画像は、例えばメモリに記憶される。
また、以下では、撮像レンズ20aおよび撮像レンズ20bの組と、当該撮像レンズの組に対応する各結像光学系および各撮像素子とを含めた構成を、撮像体21として説明を行う。この、例えば、トリガ信号に応じて撮像レンズ20aおよび20bに入射された光に基づく撮像画像を出力する動作を、便宜上、撮像体21による撮像、などと記述する。また、撮像レンズ20aおよび20bを区別する必要がある場合には、例えば、撮像レンズ20aによる撮像、などと記述する。
シャッタボタン30は、操作に応じて、撮像体21による撮像を指示するためのボタンである。シャッタボタン30が操作されると、撮像体21において、各撮像レンズ20aおよび20bによる撮像が同期して行われる。
図1に示されるように、撮像装置1aの筐体10aは、撮像体21が配置される撮像部領域2aと、シャッタボタン30が配置される操作部領域3aと、を含んで構成される。操作部領域3aは、ユーザが撮像装置1aを保持するためのグリップ部31を含む。グリップ部31は、ユーザによる保持および操作が容易なように、その表面がより滑り難く形成される。また、撮像装置1aの底部、すなわちグリップ部31の底部には、当該撮像装置1aを三脚などに固定するための固定部32が設けられる。
次に、撮像体21の構造について、より具体的に説明する。図2は、第1の実施形態に適用可能な撮像体21の一例の構造を示す図である。図2において、撮像体21は、それぞれ撮像レンズ20aおよび20bを含む結像光学系201aおよび201bと、CCDまたはCMOSセンサによる撮像素子200aおよび200bとを含み構成される。各結像光学系201aおよび201bは、例えば6群7枚の魚眼レンズとして構成されている。この魚眼レンズは、180°(=360度/n、nは光学系数=2)以上、好ましくは180°より大きい全画角を有し、好適には、185°以上の画角を有し、より好適には、190°以上の画角を有する。
各結像光学系201aおよび201bは、それぞれ、光路を90°変更するプリズム202aおよび202bを含む。各結像光学系201aおよび201bにそれぞれ含まれる6群7枚の魚眼レンズは、プリズム202aおよび202bより入射側のグループと、出射側(撮像素子200aおよび200b側)のグループとに分けることができる。例えば、結像光学系201aにおいて、撮像レンズ20aに入射された光は、プリズム202aより入射側のグループに属する各レンズを介してプリズム202aに入射される。プリズム202aに入射された光は、光路を90°変換されて、プリズム202aより出射側のグループに属する各レンズ、開口絞り、フィルタを介して撮像素子200aに照射される。
2つの結像光学系201aおよび201bの光学素子(レンズ、プリズム202aおよび202b、フィルタおよび開口絞り)は、撮像素子200aおよび200bに対して位置関係が定められる。より具体的には、結像光学系201aおよび201bの光学素子の光軸が、対応する撮像素子200aおよび200bの受光領域の中心部に直交して位置するように、かつ、受光領域が、対応する魚眼レンズの結像面となるように、位置決めが行われる。また、撮像体21では、結像光学系201aおよび201bは、同一仕様のものであり、それぞれの光軸が合致するようにして、互いに逆向きに組み合わせられる。
図3は、実施形態に係る撮像装置1aの外観を概略的に示す3面図である。図3(a)、図3(b)および図3(c)は、それぞれ撮像装置1aの上面図、前面図および側面図の例である。図3(c)に示されるように、撮像レンズ20aと、当該撮像レンズ20aの背面側の、当該撮像レンズ20aと対応する位置に配置される撮像レンズ20bと、により撮像体21が構成される。
図3(a)および図3(c)において、角度αは、撮像レンズ20aおよび20bの画角(撮像範囲)の例を示している。上述したように、撮像体21に含まれる各撮像レンズ20aおよび20bは、それぞれ180°より大きな角度αを画角として撮像を行う。そのため、筐体10aは、各撮像レンズ20aおよび20bにより撮像された各撮像画像に対する筐体10aの写り込みを避けるために、図3(a)、図3(b)および図3(c)に面231、232、233および234として示されるように、第1の面および第2の面の、各撮像レンズ20aおよび20bの中心線Cに対する両側が、各撮像レンズ20aおよび20bの画角に応じて面取りされる。
なお、中心線Cは、撮像装置1aにより撮像された各半球画像の頂点(極)の方向が鉛直方向に平行になるように撮像装置1aの姿勢を設定した場合の、各撮像レンズ20aおよび20bの中心を鉛直に貫く線である。
撮像体21は、撮像レンズ20aおよび20bの組み合わせにより、撮像体21の中心部を中心とした全天球を撮像範囲とする。すなわち、上述したように、撮像レンズ20aおよび20bは、それぞれ画角が180°以上、好ましくは180°より大きく、より好適には185°以上とされている。したがって、これら撮像レンズ20aおよび20bの組み合わせにより、例えば第1の面と直交する面の撮像範囲と、第1の面と平行な面の撮像範囲をそれぞれ360°とすることができ、これらの組み合わせにより、全天球の撮像範囲が実現される。
[第1の実施形態に係る撮像装置の信号処理に関する構成]
図4は、第1の実施形態に係る撮像装置1aの一例の構成を示すブロック図である。なお、図4において、上述した図1および図2と対応する部分には同一の符号を付して、詳細な説明を省略する。
図4において、撮像装置1aは、撮像系の構成として、撮像素子200aおよび200bと、駆動部210aおよび210bと、を含む撮像体21と、信号処理部211aおよび211bと、含む。また、撮像装置1aは、撮像制御および信号処理系の構成として、それぞれバス2010に接続される、CPU(Central Processing Unit)2000と、ROM(Read Only Memory)2001と、メモリコントローラ2002と、RAM(Random Access Memory)2003と、トリガI/F2004と、SW(スイッチ)回路2005と、データI/F2006と、通信I/F2007と、加速度センサ2008と、を含む。さらに、撮像装置1aは、これら各部に電源を供給するためのバッテリ2020を含む。
先ず、撮像系の構成について説明する。撮像系の構成において、撮像素子200aおよび駆動部210aは、それぞれ撮像レンズ20aに対応する構成である。同様に、撮像素子200bおよび駆動部210bは、それぞれ撮像レンズ20bに対応する構成である。これら撮像素子200aおよび駆動部210a、ならびに、撮像素子200bおよび駆動部210bが、それぞれ撮像体21に含まれる。
撮像体21において、駆動部210aは、撮像素子200aを駆動し、トリガI/F2004から供給されるトリガ信号に応じて、撮像素子200aから電荷を読み出す。駆動部210aは、1回のトリガ信号に応じて、撮像素子200aから読み出した電荷に基づき1フレームの撮像画像を出力する。駆動部210aは、撮像素子200aから読み出した電荷を電気信号に変換して出力する。駆動部210aから出力された信号は、信号処理部211aに供給される。信号処理部211aは、駆動部210aから供給された信号に対してノイズ除去、ゲイン調整など所定の信号処理を施し、アナログ方式の信号をディジタル方式の信号に変換し、ディジタルデータである撮像画像として出力する。この撮像画像は、全天球のうち撮像レンズ20aの画角に対応する半球分の領域が撮像された半球画像(魚眼画像)である。
なお、撮像体21において、撮像素子200bおよび駆動部210bについては、上述の撮像素子200aおよび駆動部210aと同等の機能を有するため、ここでの説明を省略する。また、信号処理部211bについても、上述した信号処理部211aと同等の機能を有するため、ここでの説明を省略する。
信号処理部211aおよび211bから出力された各半球画像は、メモリコントローラ2002を介してRAM2003に記憶される。
次に、撮像制御および信号処理系の構成について説明する。CPU2000は、例えばROM2001に予め記憶されるプログラムに従い、RAM2003の一部の記憶領域をワークメモリとして用いて動作して、この撮像装置1aの全体の動作を制御する。メモリコントローラ2002は、CPU2000の指示に従い、RAM2003に対するデータの記憶および読み出しを制御する。
SW回路2005は、シャッタボタン30に対する操作を検知して、検知結果をCPU2000に渡す。CPU2000は、SW回路2005からシャッタボタン30に対する操作を検知した旨の検知結果を受け取ると、トリガ信号を出力する。トリガ信号は、トリガI/F2004を介して出力され、分岐して、各駆動部210aおよび210bにそれぞれ供給される。
データI/F2006は、外部機器との間でデータ通信を行うためのインタフェースである。データI/F2006としては、例えばUSB(Universal Serial Bus)やBluetooth(登録商標)を適用することができる。通信I/F2007は、ネットワークと接続され、ネットワークに対する通信を制御する。通信I/F2007に接続されるネットワークは、有線および無線の何れでもよいし、有線および無線の両方に接続可能であってもよい。
なお、上述では、CPU2000は、SW回路2005による検知結果に応じてトリガ信号を出力するように説明したが、これはこの例に限定されない。例えば、CPU2000は、データI/F2006や通信I/F2007を介して供給された信号に応じて、トリガ信号を出力してもよい。さらに、トリガI/F2004がSW回路2005の検知結果に応じてトリガ信号を発生させて、各駆動部210aおよび210bに供給してもよい。
加速度センサ2008は、3軸の加速度成分を検出し、検出結果をCPU2000に渡す。CPU2000は、加速度センサ2008の検出結果に基づき鉛直方向を検出し、撮像装置1aの鉛直方向に対する傾きを求める。CPU2000は、撮像体21において各撮像レンズ20aおよび20bにより撮像されRAM2003に記憶される各半球画像に対して、撮像装置1aの傾きを示す傾き情報を付加する。
バッテリ2020は、例えばリチウムイオン二次電池といった二次電池であって、撮像装置1a内部の電力供給が必要な各部に電力を供給する電力供給部である。なお、バッテリ2020は、二次電池に対する充放電の制御を行う充放電制御回路を含む。
図5は、実施形態に係る撮像装置1aにおける、バッテリ2020および回路部2030の配置の例を示す図である。このように、バッテリ2020および回路部2030は、筐体10aの内部に設けられる。また、バッテリ2020および回路部2030のうち少なくともバッテリ2020は、接着剤やネジなどの固定手段により筐体10a内部に固定される。なお、図5は、上述した図3(b)に対応するもので、撮像装置1aを、前面から見た例を示している。回路部2030は、例えば上述した撮像制御および信号処理系の各要素を含み、例えば1または複数の回路基板上に構成される。
なお、ここでは、バッテリ2020および回路部2030が当該位置に配置されるように説明したが、これはこの例に限定されず、例えば回路部2030が十分小型であれば、当該位置には、少なくともバッテリ2020のみが配置されていればよい。
このような構成において、トリガI/F2004から、シャッタボタン30に対する操作に応じてトリガ信号が出力される。トリガ信号は、各駆動部210aおよび210bに同タイミングで供給される。各駆動部210aおよび210bは、供給されたトリガ信号に同期して、各撮像素子200aおよび200bから電荷を読み出す。
各駆動部210aおよび210bは、各撮像素子200aおよび200bから読み出した電荷を電気信号に変換し、各信号処理部211aおよび211bにそれぞれ供給する。各信号処理部211aおよび211bは、各駆動部210aおよび210bから供給された各信号に対して上述した所定の処理を施して、これら各信号を、それぞれ半球画像に変換して出力する。各半球画像は、メモリコントローラ2002を介してRAM2003に記憶される。
RAM2003に記憶された各半球画像は、データI/F2006、または、通信I/F2007により、外部の情報処理装置に送られる。
[第1の実施形態に係る画像処理の概略]
次に、第1の実施形態に係る、半球画像に対する画像処理について説明する。図6は、第1の実施形態に適用可能な、アノテーションを入力する入力装置としての情報処理装置の一例の構成を示すブロック図である。図6において、情報処理装置100aは、それぞれバス1030により接続された、CPU1000と、ROM1001と、RAM1002と、グラフィックI/F1003と、ストレージ1004と、データI/F1005と、通信I/F1006と、入力デバイス1011と、を含み、さらに、グラフィックI/F1003に接続される表示デバイス1010と、を含む。
ストレージ1004は、例えばフラッシュメモリといった不揮発性メモリであって、CPU1000が動作するためのプログラムや、各種データが記憶される。ストレージ1004にハードディスクドライブを適用してもよい。CPU1000は、ROM1001およびストレージ1004に記憶されるプログラムに従い、RAM1002をワークメモリとして用いて動作して、この情報処理装置100aの全体の動作を制御する。
グラフィックI/F1003は、CPU1000がプログラムに従い生成した表示制御信号に基づき、表示デバイス1010が表示可能な表示信号を生成し、生成した表示信号を表示デバイス1010に送る。表示デバイス1010は、例えばLCD(Liquid Crystal Display)と、LCDを駆動する駆動回路とを含み、グラフィックI/F1003から送られた表示信号に応じた画面を表示する。
入力デバイス1011は、ユーザ操作に応じた信号を出力し、ユーザ入力を受け付ける。この例では、情報処理装置100aがタブレット型パーソナルコンピュータであって、表示デバイス1010と入力デバイス1011とが一体的に形成されたタッチパネル1020として構成される。入力デバイス1011は、表示デバイス1010の表示が透過されると共に、接触位置に応じた位置情報を出力する。情報処理装置100aは、タブレット型パーソナルコンピュータに限定されず、例えばデスクトップ型パーソナルコンピュータであってもよい。
データI/F1005は、外部機器との間でデータ通信を行うためのインタフェースである。データI/F1005としては、例えばUSBやBluetooth(登録商標)を適用することができる。通信I/F1006は、ネットワークと無線通信により接続され、ネットワークに対する通信を制御する。通信I/F1006は、有線通信によりネットワークと接続してもよい。ここでは、撮像装置1aと情報処理装置100aとが、データI/F1005を介して有線にて接続されるものとする。
図7は、第1の実施形態に係る情報処理装置100aの機能を説明するための一例の機能ブロック図である。図7において、情報処理装置100aは、画像取得部110と、画像処理部111と、付帯情報生成部112と、UI(User Interface)部113と、通信部114と、出力部115と、を含む。
これら画像取得部110、画像処理部111、付帯情報生成部112、UI部113、通信部114および出力部115は、CPU1000上で第1の実施形態に係る入力プログラムが動作することで実現される。これに限らず、画像取得部110、画像処理部111、付帯情報生成部112、UI部113、通信部114および出力部115の一部または全部を、互いに協働して動作するハードウェア回路により構成してもよい。
UI部113は、入力デバイス1022に対するユーザ操作に応じたユーザ入力を受け付け、受け付けたユーザ入力に応じた処理を実行する受付手段である。UI部113は、ユーザ入力に応じて受け付けた情報を、RAM1002やストレージ1004に記憶することができる。また、UI部113は、表示デバイス1010に表示させるための画面を生成する表示手段でもある。通信部114は、データI/F1005および通信I/F1006による通信を制御する。
画像取得部110は、データI/F1005を介して、撮像装置1aから撮像レンズ20aおよび20bにより撮像された各半球画像と、各半球画像に付加された傾き情報と、を取得する。画像処理部111は、画像取得部110により取得された各半球画像を繋いで1の全天球画像を生成する画像変換処理を実行する。付帯情報生成部112は、UI部113に受け付けられたユーザ入力に応じて、画像処理部111により生成された全天球画像に対して指定された位置における付帯情報(アノテーション)を生成する。出力部115は、付帯情報生成部112により生成されたアノテーションに基づき、所定の形式で報告書を作成して出力する。
情報処理装置100aにおける第1の実施形態に係る各機能を実現するための入力プログラムは、インストール可能な形式または実行可能な形式のファイルでCD(Compact Disk)、フレキシブルディスク(FD)、DVD(Digital Versatile Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供される。これに限らず、当該入力プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、当該ネットワークを介してダウンロードさせることにより提供してもよい。また、当該入力プログラムをインターネットなどのネットワークを経由して提供または配布するように構成してもよい。
当該入力プログラムは、画像取得部110、画像処理部111、付帯情報生成部112、UI部113、通信部114および出力部115を含むモジュール構成となっている。実際のハードウェアとしては、CPU1000がストレージ1004などの記憶媒体から当該入力プログラムを読み出して実行することにより、上述した各部がRAM1002などの主記憶装置上にロードされ、画像取得部110、画像処理部111、付帯情報生成部112、UI部113、通信部114および出力部115が主記憶装置上に生成されるようになっている。
[第1の実施形態に適用可能な画像変換]
次に、第1の実施形態に適用可能な画像変換処理について、図8~図12を用いて説明する。以下に説明する画像変換処理は、例えば、情報処理装置100aにおける画像処理部111により実行される処理となる。
図8は、第1の実施形態に適用可能な撮像レンズ20aおよび20bがどのように3次元入射光を2次元に射影するかを説明するための図である。なお、以下では、特に記載の無い限り、撮像レンズ20aおよび20bを、撮像レンズ20aで代表させて説明を行う。
図8(a)において、撮像レンズ20aは、魚眼レンズ24(結像光学系201a)と、撮像素子200aと、を含む。撮像素子200aの受光面に垂直の軸を、光軸とする。また、図6(a)の例では、入射角φは、魚眼レンズ24の縁に接する平面と光軸との交点を頂点とした場合の、光軸に対する角度として表される。
180°を超える画角を持つ魚眼レンズ24で撮像された魚眼画像(半球画像)は、撮像位置から、半球分のシーンの画像となる。ただし、図8(a)および図8(b)に示されるように、射影関数f(φ)で関係が決められる、入射角度φに対応する像高hで半球画像22が生成される。なお、図8(b)において、撮像素子200aの撮像面において、魚眼レンズ24からの光が照射されない領域を無効領域として黒で塗りつぶして示している。射影関数f(φ)は、魚眼レンズ24の性質によって異なる。例えば、像高h、焦点距離f、入射方向と光軸の成す角(入射角)をφとして、下記の式(1)で表される等距離射影方式と呼ばれる射影方式を持つ魚眼レンズ24があり、今回はそれを用いるものとする。
図9は、第1の実施形態に係る撮像装置1aの傾きについて説明するための図である。図9において、鉛直方向は、グローバル座標系のxyz3次元方向の直交座標におけるz軸に一致する。この方向と、図3(b)に示した撮像装置1aの中心線Cとが平行になる場合が、カメラが傾いてない状態である。これらが平行になっていない場合、撮像装置1aは、傾いた状態となる。
撮像装置1aは、撮像レンズ20aおよび20bにより撮像された各半球画像と、当該撮像時に加速度センサ2008から出力された出力値と、を関連付けて例えばRAM2003に記憶する。情報処理装置100aは、撮像装置1aから、RAM2003に記憶される各半球画像および加速度センサ2008の出力値を取得する。
情報処理装置100aにおいて、画像処理部111は、重力ベクトルからの傾き角度(以下、傾き角α)と、xy平面での傾斜角度β(以下、傾き角β)と、を、撮像装置1aから取得した加速度センサ2008の出力値を用いて、下記の式(2)および式(3)により求める。ここで、値Axは、加速度センサ2008の出力値におけるカメラ座標系のx0軸方向成分の値、値Ayは、加速度センサ2008の出力値におけるカメラ座標系のy0軸方向成分の値、値Azは、加速度センサ2008の出力値におけるカメラ座標系のz0軸方向成分の値をそれぞれ示す。画像処理部111は、トリガ信号に応じて加速度センサ2008の各軸方向成分の値から傾き角α、βを求める。画像処理部111、求めた傾き角α、βを、撮像装置1aから取得した各半球画像に関連付けて、例えばストレージ1004に記憶する。
画像処理部111は、撮像装置1aから取得した各半球画像と、当該各半球画像に関連付けられた傾き角α、βと、に基づき、全天球画像を生成する。
図10は、第1の実施形態に適用可能な全天球画像のフォーマットについて説明する図である。図10(a)は、全天球画像を平面で表した場合のフォーマットの例、図10(b)は、全天球画像を球面で表した場合のフォーマットの例、をそれぞれ示す。全天球画像のフォーマットは、平面で表した場合、図10(a)に示すように、水平角度が0°から360°、垂直角度が0°から180°の角度座標(φ,θ)に対応する画素値を有する画像である。角度座標(φ,θ)は、図10(b)に示す球面上の座標点の各点と対応付けられており、地球儀上における緯度経度座標のようなものとなっている。
魚眼レンズで撮影された画像の平面座標値と、全天球画像の球面座標値との関係は、図8で説明したような射影関数f(h=f(θ))を用いることによって対応付けることができる。これにより、魚眼レンズで撮影された部分画像(半球画像)2枚を変換して結合(合成)することによって、図10(a)に示すような、平面による全天球画像を作成することができる。
第1の実施形態では、半球画像の各画素位置と、図10(a)に示した平面による全天球画像における各画素位置と、を対応付ける変換テーブルを予め作成し、例えば情報処理装置100aのストレージ1004に記憶しておく。表1は、この変換テーブルの例を示す。図11は、第1の実施形態に適用可能な、変換テーブルによる半球画像の各画素位置と、全天球画像の各画素位置との対応付を説明するための図である。
変換テーブルは、表1に示すように、変換後画像の座標値である(θ,φ)[pix:ピクセル]と、それに対応する変換前画像の座標値(x,y)[pix]とのデータセットを、変換後画像の全ての座標値に対して有する。表1に示した変換テーブルに従って、撮像された半球画像(変換前画像)から変換後画像を生成することができる。具体的には、図11に示すように、表1の変換テーブルに示される、変換前座標と変換後座標との対応関係から、変換後画像の各画素を、座標値(θ,φ)[pix]に対応する変換前画像の座標値(x,y)[pix]の画素値を参照することによって生成することができる。
表1に示した変換テーブルは、撮像装置1aの中心線Cの方向が鉛直方向と平行であるとして、歪み補正を反映したものである。この変換テーブルに、傾き角α、βに応じた修正処理を施すことにより、撮像装置1aの中心線Cと鉛直方向とを平行にさせる補正(鉛直補正と呼ぶ)を行うことができる。
図12は、第1の実施形態に適用可能な鉛直補正を説明するための図である。図12(a)は、カメラ座標系、図12(b)は、グローバル座標系をそれぞれ示している。図12(b)において、グローバル座標系の3次元直交座標を(x1,y1,z1)、球面座標を(θ1,φ1)と表記する。また、図12(a)において、カメラ座標系の3次元直交座標を(x0,y0,z0)、球面座標を(θ0,φ0)と表記する。
画像処理部111は、鉛直補正演算により、下記の式(4)~式(9)を用いて、球面座標(θ1、φ1)から球面座標(θ0、φ0)への変換を行う。先ず、傾きを補正するためには、3次元直交座標を用いて回転変換する必要があるため、画像処理部111は、式(4)式~(6)式を用いて、球面座標(θ1,φ1)から3次元直交座標(x1、y1、z1)への変換を行う。
次に、画像処理部111は、傾き角(α、β)を用いて、式(7)に示す回転座標変換を行い、グローバル座標系(x1,y1,z1)を、カメラ座標系(x0,y0,z0)に変換する。換言すれば、式(6)は、傾き角(α、β)の定義を与える。
これは、グローバル座標系を、先ずz軸を軸にα回転させ、次にx軸を軸にβ回転させるとカメラ座標系になることを意味する。最後に、画像処理部111は、式(8)および式(9)を用いて、カメラ座標系の3次元直交座標(x0,y0,z0)を球面座標(θ0,φ0)に戻す変換を行う。
なお、上述では、鉛直補正演算を実行することにより座標変換を行うように説明したが、これはこの例に限定されない。例えば、傾き角(α、β)に応じた複数の変換テーブルを予め作成して記憶しておいてもよい。これにより、鉛直補正演算の処理を省略でき、処理の高速化を図ることができる。
[第1の実施形態に係る入力処理の概要]
次に、第1の実施形態に係るアノテーションの入力処理について、より具体的に説明する。図13は、第1の実施形態に適用可能な情報処理システムの構成の例を概略的に示す図である。図13(a)において、情報処理システムは、撮像装置1aと、撮像装置1aと有線または無線通信により接続される情報処理装置100aと、情報処理装置100aとネットワーク5を介して接続されるサーバ6と、を含む。
撮像装置1aにおいて各撮像レンズ20aおよび20bにより撮像された各半球画像は、情報処理装置100aに送信される。情報処理装置100aは、撮像装置1aから送信された各半球画像を、上述したようにして全天球画像に変換する。また、情報処理装置100aは、ユーザ入力に応じて、変換された全天球画像に対してアノテーションを付加する。情報処理装置100aは、例えば、全天球画像とアノテーションとを、ネットワーク5を介してサーバ6に送信する。サーバ6は、情報処理装置100aから送信された全天球画像とアノテーションとを保存、管理する。
また、情報処理装置100aは、サーバ6から全天球画像およびアノテーションを取得し、取得した全天球画像およびアノテーションに基づき報告書データを作成する。これに限らず、情報処理装置100aは、当該情報処理装置100aが記憶する全天球画像およびアノテーションに基づき報告書データを作成することもできる。情報処理装置100aは、作成した報告書データをサーバ6に送信する。
なお、図13(a)およびの例では、サーバ6が単一のコンピュータにより構成されるように示しているが、これはこの例に限定されない。すなわち、サーバ6は、その機能を複数台のコンピュータにより分散させて実現するように構成してもよい。また、サーバ6は、ネットワーク5上におけるクラウドシステムとして構成してもよい。
さらに、図13(b)に示されるように、撮像装置1aおよび情報処理装置100aをそれぞれネットワーク5に接続する構成も考えられる。この場合、撮像装置1aにて撮像された各半球画像は、ネットワーク5を介してサーバ6に送信される。サーバ6は、各半球画像に対して上述したようにして変換処理を施し、当該各半球画像を全天球画像に変換し、保存する。情報処理装置100aは、サーバ6に保存される全天球画像に対してアノテーションを付加する。
これに限らず、第1の実施形態では、情報処理装置100aをサーバ6と接続させずに、情報処理装置100aにおいてローカルで処理を行ってもよい。
図14は、第1の実施形態に係る撮像装置1aを用いた撮像例を説明するための図である。例えば、診断対象である建造物4の内部にて、撮像装置1aを用いて全天球を撮像する。建造物4内の複数の位置で撮像を行ってもよい。全天球の撮像範囲を1度の撮像操作にて撮像できるため、建造物4内部の天井を含め、撮像漏れを抑制することができる。また、図14では、撮像装置1aを用い、建造物4の内部にて撮像を行っているが、これはこの例に限定されず、撮像装置1aを用いて建造物4の外面を撮像することもできる。この場合、例えば建造物4の全周を移動しながら複数回の撮像を行うことで、建造物4の外面(例えば壁面)を漏れ無く撮像できる。
図15-1~図15-3を用いて、第1の実施形態に係る情報処理システムにおけるアノテーション入力処理について、概略的に説明する。第1の実施形態に係る情報処理システムでは、全天球画像に対するアノテーション入力を補助するための幾つかの機能を提供する。ここでは、提供される補助機能のうち、撮像位置を自動推定する機能と、複数の全天球画像間での視点の移動を実現する3Dパノラマ自動ツアー機能と、アノテーションの入力および確認機能について、概略的に説明する。
図15-1は、第1の実施形態に係る、撮像位置の自動推定機能を説明するための図である。図15-1において、表示デバイス1010に表示される画面500に、例えば診断対象の建造物4の内部を全天球で撮像した各半球画像に基づく全天球画像の所定領域の画像5010が表示される。また、画面500に、予め取得した、当該建造物4の見取り図画像5011が表示される。
ここで、図15-1の例では、見取り図画像5011に対し、撮像を行った撮像位置を示すピンマーカ50401、50402、50403、…が表示されている。
例えば、撮像装置1aを用いて、診断対象を、撮像位置を移動させながら複数回撮像し、撮像レンズ20aおよび20bによる半球画像の組を複数組、取得する。情報処理装置100aにおいて、画像処理部111は、複数の半球画像の組それぞれに基づき複数の全天球画像を生成し、生成した各全天球画像間で既知の方法によりマッチング処理を行う。画像処理部111は、マッチング処理の結果と、各全天球画像の変換前の各半球画像とに基づき、各全天球画像の相対的な撮像位置を推定する。推定した各撮像位置の相対的な位置関係を維持しつつ、各撮像位置の組を回転、拡大縮小して見取り図画像5011と対応付けることで、建造物4における各撮像位置を推定できる。
また、情報処理装置100aにおいて、UI部113は、画面500に対してユーザ操作に応じて位置を任意に移動可能なカーソル5041を表示させる。UI部113は、各ピンマーカ50401、50402、50403、…のうち、カーソル5041で指定されたピンマーカに対応する全天球画像に基づく画像5010を、画面500に表示させる。
このように、複数の全天球画像を撮像した撮像位置を自動推定することで、ユーザは、複数の全天球画像の関係を容易に把握することが可能となり、作業効率を向上させることができる。
なお、UI部113は、画像5010上でユーザが指定した位置に、タグを表示させることができる。図15-1の例では、画像5010に対して、タグ5030aおよび5030bが表示されている。詳細は後述するが、タグ5030aおよび5030bは、アノテーションを入力した対象の位置を示し、当該画像5010を含む全天球画像の座標に関連付けられる。
図15-2は、第1の実施形態に係る、3Dパノラマ自動ツアー機能を説明するための図である。例えば、図15-2(a)を参照し、見取り図画像5011におけるピンマーカ504010が指定され、ピンマーカ504010の位置に対応する画像5010a(図15-2(b)参照)が画面500に表示されているものとする。UI部133は、この状態で、例えばカーソル541により左斜め前への移動(図中に矢印で示す)が指示されると、ピンマーカへの指定を、ピンマーカ504010から、当該ピンマーカ504010の右斜め前の直近に表示されるピンマーカ504011に移動させ、当該ピンマーカ504011に対応する全天球画像に基づく画像5010bを画面500に表示させる。同様に、UI部113は、ピンマーカへの指定が、ピンマーカ504010から、当該ピンマーカ504010の右斜め前の直近に表示されるピンマーカ504012に移動(図中に矢印で示す)されると、当該ピンマーカ504012に対応する全天球画像に基づく画像5010cを画面500に表示させる。
このように、画面500内で移動を指定することで、例えばピンマーカ50401、50402、50403、…といったように、指定されるピンマーカが移動の方向に隣接するピンマーカに移動し、それに伴い、画面500に表示される画像5010が切り替わる。これにより、ユーザは、恰も自身が診断対象を順次観察しているかの如く操作することができ、診断作業の効率化を図ることが可能である。
図15-3は、第1の実施形態に係る、アノテーションの入力および確認機能を説明するための図である。UI部113は、画面500において、画像5010の所望の位置をカーソル5041を用いて指定することで、その位置を示すタグ5030aが画像5010に重畳されて表示される。また、画面500に対して、画像5010と共に、タグ5030aの位置に応じたアノテーションを入力するためのアノテーション入力画面600が表示される。すなわち、アノテーション入力画面600は、診断対象に関する診断情報を入力するための診断情報入力画面である。なお、図15-3では、説明のためアノテーション入力画面600が強調して示されている。
詳細は後述するが、このアノテーション入力画面600は、予め設定された項目に対する入力や、任意のコメントの入力を行うことができる。また、アノテーション入力画面600は、既に入力された情報を編集することもできる。さらに、アノテーション入力画面600は、画像5010においてタグ5030aが示す位置を含めて指定された範囲の画像や、外部から取得した画像をアノテーションとして入力することもできる。
このように、全天球画像に対して位置を指定し、指定した位置に対してアノテーションを入力するため、アノテーションと画像との対応付が容易となり、作業効率を向上させることができる。
[第1の実施形態に係る入力処理の詳細]
次に、第1の実施形態に係るアノテーション入力処理について、より詳細に説明する。図16は、第1の実施形態に係るアノテーション入力処理を示す一例のフローチャートである。
なお、図16のフローチャートによる処理に先立って、情報処理装置100aは、撮像装置1aにおいて撮像レンズ20aおよび20bにより診断対象が撮像された各半球画像と加速度センサ2008の出力値とを取得し、各半球画像に基づく全天球画像を生成し、例えばストレージ1004に記憶しているものとする。また、以下では、煩雑さを避けるため、1枚の全天球画像を想定して説明を行う。
ステップS100で、情報処理装置100aにおいて、画像取得部110は、ストレージ1004に記憶される全天球画像を取得する。次のステップS101で、UI部113は、ステップS100で画像取得部110に取得された全天球画像から、予め定められた所定領域の画像を切り取って、画面500に表示させる。
図17は、第1の実施形態に適用可能な、UI部113による画像切り取り処理を説明するための図である。なお、この図17は、上述した図10(a)と対応するものである。UI部113は、2枚の半球画像から生成した全天球画像510の一部の領域511の画像を切り取り、画面500に画像5010として表示させる。ステップS101では、初期値として予め定められた領域511の画像を切り取る。ここで、UI部113は、例えば、全天球画像510の角度座標(φ,θ)を、画面500に対する表示に適した座標(x,y)に置き換えて、画像5010を表示する。
次のステップS102で、UI部113は、ユーザ操作に応じて、領域511を全天球画像510内で移動させる。また、UI部113は、ユーザ操作に応じて、領域511の全天球画像510に対する大きさを変更することができる。
図18は、第1の実施形態に係る、UI部113により表示デバイス1010に表示される画面500の例を示す図である。この例では、UI部113は、画面500の全面に対して、図17で示した領域511の画像5010を表示させている。画面500には、さらに、ボタン5020、5021、5022および5023と、メニューボタン5050および5051と、が表示される。
ボタン5020は、全天球画像510を読み込むためのボタンである。ボタン5021は、当該画面500において設定される、後述するアノテーションデータを保存するためのボタンである。ボタン5021の操作に応じて、現在の画面500そのものをさらに保存してもよい。ボタン5022は、スケールを変更するためのボタンであって、操作に応じて画面500内の画像5010の拡大および縮小を指示する指示画面が表示される。ボタン523は、画面500に対して、後述するアノテーション入力画面600を表示させるためのボタンである。
メニューボタン5050は、画面500の表示モードを切り替えるためのメニューを表示させるためのボタンである。メニューボタン5051は、画像5010に対する視点を切り換えるためのボタンである。
また、画面500において、領域5024は、図15-1を用いて説明した、撮像位置を自動推定する機能を用いて推定された各撮像位置が、ピンマーカ50411、50412、…を用いて相対位置により表示される。
ここで、情報処理装置100aは、図19に例示されるような、診断対象を含む見取り図画像5011を予め取得し、例えばストレージ1004に保存する。UI部113は、この見取り図画像5011を、画面500に表示させることができる。例えば、UI部113は、見取り図画像5011を、画面500における領域5024に重畳させて表示させる。また、UI部113は、画面500に表示した見取り図画像5011に対して、撮像位置を示す各ピンマーカ50411、50412、…を表示させることができる。ユーザは、所定の入力操作により、見取り図画像5011上で、各ピンマーカ50411、50412、…の位置を、各ピンマーカ50411、50412、…の相対的な位置関係を維持しつつ実際に撮像を行った位置に合わせるように調整できる。
次のステップS103で、UI部113は、ボタン5023に対する操作を待機し、ボタン5023が操作されると、画面500に対してアノテーション入力画面600を表示させる。そして、アノテーション入力画面600に対する所定の操作に応じて、画像5010上の位置を指定する。
図20は、第1の実施形態に係る、アノテーション入力画面600が画面500に表示された例を示す図である。なお、図20において、上述した図19と共通する部分には同一の符号を付して、詳細な説明を省略する。図20において、ステップS103で指定された位置に、マーカ602が重畳して表示される。また、図20において、アノテーション入力画面600が画像5010に重畳して表示される。UI部113は、指定された位置を示す位置情報を、アノテーションを識別する識別情報(アノテーションIDと呼ぶ)と関連付けて、例えばRAM1002に記憶する。ここで、位置情報は、例えば、画像5010が含まれる全天球画像510における座標が用いられる。
なお、アノテーション入力画面600は、画像5010と同一の画面500に表示されていればよく、画像5010に対して重畳して表示する例に限定されない。例えば、アノテーション入力画面600と画像5010とを画面500内の別領域に表示してもよいし、アノテーション入力画面600を画像5010とは別のウィンドウに表示させてもよい。また、アノテーション入力画面600は、画面500での表示位置をユーザ操作に応じて変更できる。
図20において、アノテーション入力画面600は、アノテーション入力画面600における機能を切り換えるためのタブ601a、601bおよび601cが設けられる。タブ601aは、アノテーションの編集を行うためのタブである。タブ601bは、詳細画像を挿入するためのタブであって、操作に応じて、例えば情報処理装置100aのOS(Operating System)により提供されるファイル選択画面が表示され、所望の画像を選択可能とされている。タブ601cは、切り取り領域選択のためのタブであって、操作に応じて、画面500の表示が画像5010に対して領域指定を行うための表示に切り替わる。
図20に示されるアノテーション入力画面600において、ボタン6011は、画像5010に対してタグを追加するためのボタンである。UI部113は、ボタン6011が操作され、例えばカーソル5041により画像5010に対する位置指定操作がなされると、指定された位置に対して、マーカ602を表示させる。
次のステップS104で、UI部113は、アノテーション入力画面600における各タブ601a~601c、および、画面500におけるボタン5021に対する操作を待機し、何れかに対する操作がなされた場合に、対応する処理を実行する。
UI部113は、ボタン5023の操作に応じてアノテーション入力画面600が表示された場合(初期画面)、あるいは、タブ601aが指定された場合、アノテーション入力を行うと判定して処理をステップS110に移行する。次のステップS111で、UI部113は、図20に示したように、アノテーションの入力を行うためのアノテーション入力領域6010を含むアノテーション入力画面600を表示する。
図20の例では、アノテーション入力領域6010は、入力領域6010a~6010dを含む。この例では、入力領域6010aは、予め定められた項目をプルダウンメニューにより選択するための入力領域となっており、予め定められた「設備種類」の項目から、当該項目に含まれる各種類を選択可能となっている。入力領域6010bは、テキスト情報を入力するための入力領域となっている。この入力領域6010bは、例えば製品型番などの、文字数がある程度決まっているテキスト情報が入力される。
入力領域6010cは、予め定められた項目が列挙され、適当な項目のチェックボックスに対してチェックマークを入力するための入力領域である。入力領域6010cは、複数の項目を指定することができる。また、入力領域6010cは、例えば入力領域6010aにおいて選択された内容に応じた項目が表示される。この例では、入力領域6010cに対して、入力領域6010aの「設備種類」において選択された「誘導灯」に応じた項目が表示されている。
入力領域6010dは、例えば備考を入力するための入力領域であって、自由な形式でテキスト情報の入力が可能とされている。文字数制限は、無制限、若しくは、ある程度の長さの文章を入力可能とされている。UI部113は、アノテーション入力領域6010に入力された内容を、ステップS103で指定された位置を示す位置情報と関連付けてRAM1002に記憶する。
なお、ステップS111のアノテーション入力画面600の表示中であっても、画面500上に配置される各ボタン5020~5023、各タブ601a~601c、ならびに、各メニューボタン5050および5051の操作が可能である。また、全天球画像510から画像5010を切り取る領域511の、全天球画像510内での位置変更操作も、可能である。
さらに、ステップS111のアノテーション入力画面600の表示中において、画像5010上の次の位置を指定する操作も、可能である。UI部113は、ステップS150で、画像5010上の次の位置が指定されたか否かを判定する。UI部113は、次の位置が指定されたと判定した場合(ステップS150、「Yes」)、処理をステップS102に戻す。
一方、UI部113は、次の位置が指定されていないと判定した場合(ステップS150、「No」)、処理をステップS104に戻す。この場合、ステップS150による判定直前の状態が維持される。
UI部113は、ステップS104においてタブ601bが指定された場合、詳細画像挿入を行うと判定して、処理をステップS120に移行する。次のステップS121で、UI部113は、画面500に対して画像ファイル選択画面を表示させる。UI部113は、例えば、画像ファイル選択画面として、情報処理装置100aに搭載されるOS(Operating System)により標準機能として提供されるファイル選択画面を用いることができる。このとき、例えばファイル拡張子などに基づきファイル名をフィルタリングして、対応する画像ファイルのファイル名のみが表示されるようにすると好ましい。
次のステップS122で、UI部113は、画像ファイル選択画面において選択された画像ファイルを読み込む。次のステップS123で、UI部113は、ステップS122で読み込んだ画像ファイルの画像を、アノテーション入力画面600内の所定領域に表示させる。UI部113は、読み込んだ画像ファイルの、パスを含むファイル名を、ステップS103で指定された位置を示す位置情報に関連付けて、例えばRAM1002に記憶する。ステップS123の処理の後、処理が上述したステップS150に移行される。
UI部113は、ステップS104においてタブ601cが指定された場合、画像5010に対して切取り領域選択を行うと判定して、処理をステップS130に移行する。次のステップS131で、UI部113は、アノテーション入力画面600の表示を、診断対象の画像を含む診断領域としての切り取り領域を指定するための領域指定画面の表示に切り換える。図21は、第1の実施形態に適用可能な、領域指定画面に切り換えられたアノテーション入力画面600の例を示す図である。
図21において、領域指定画面に切り替えられたアノテーション入力画面600は、切り取り画像表示領域6020と、チェックボックス6021と、選択ボタン6022と、を含む。切り取り画像表示領域6020は、画像5010に対して指定された領域から切り取られた切り取り画像が表示される。切り取り画像表示領域6020は、画像5010に対して領域が指定されていない初期状態では、例えば空白表示とする。これに限らず、画像5010から、ステップS103で指定された位置に対して予め設定された領域の画像を切り取って切り取り画像表示領域6020に表示させてもよい。
チェックボックス6021は、切り取り画像表示領域6020に対して、アイコンとしてのマーカ画像を表示させるためのボタンである。選択ボタン6022は、画像5010に対する切り取り領域の指定を開始するためのボタンである。
図22は、第1の実施形態に係る、選択ボタン6022に対する操作に応じて切り取り領域を指定するための画面500の表示の例を示す図である。図22に示されるように、UI部113は、選択ボタン6022に対する操作に応じて、切り取り領域を示す枠603を画面500に表示させると共に、アノテーション入力画面600の表示を画面500から消去する。枠603は、例えば、ステップS103で指定された位置に対して予め設定された領域に対応して表示される。
UI部113は、ユーザ操作に応じて、枠603の大きさ、形状および位置を変更できる。形状は、例えば矩形に限られるが、長辺および短辺の長さの比を変えることができる。UI部113は、枠603の大きさ、形状および位置の変更時に、変更された枠603がステップS103で指定された位置を含まない場合、その旨を示す警告画面を表示できる。
図16のフローチャートの説明に戻り、UI部113は、ステップS132で、領域の指定が完了したか否かを判定する。例えば、表示デバイス1010および入力デバイス1011がタッチパネル1020として構成され、枠603による領域の指定を、ユーザの手指などをタッチパネル1020に接触させた状態で当該手指を移動するドラッグ操作などにより行う場合、当該手指がタッチパネル1020から離れたことで、ドラッグ操作が終了し枠603による領域指定が完了したと判定できる。
UI部113は、領域指定が完了していないと判定した場合(ステップS132、「No」)、処理をステップS132に戻す。一方、UI部113は、領域指定が完了したと判定した場合(ステップS132、「Yes」)、処理をステップS133に移行させる。
ステップS133で、UI部113は、画像5010から、枠603により指定された領域の画像を、切り取り画像として取得する。このとき、UI部113は、枠603の例えば各頂点の、画像5010が含まれる全天球画像510における座標を取得し、取得した各座標を、ステップS103で指定された位置を示す位置情報に関連付けて、例えばRAM1002に記憶する。
次のステップS134で、UI部113は、ステップS133で取得した切り取り画像を、アノテーション入力画面600内の切り取り画像表示領域6020に表示させる。また、UI部113は、ステップS133で取得した切り取り画像を所定の名称のファイル名のファイルに格納し、切り取り画像ファイルを作成する。UI部113は、切り取り画像ファイルを例えばRAM1002に記憶する。
次のステップS135で、UI部113は、切り取り画像表示領域6020に表示された切り取り画像に対してアイコンを表示させるか否かを判定する。UI部113は、アノテーション入力画面600のチェックボックス6021がチェックされていれば、アイコンを表示すると判定し(ステップS135、「Yes」)、処理をステップS136に移行させる。
ステップS136で、UI部113は、図23に例示されるように、切り取り画像表示領域6020に表示された切り取り画像の、ステップS103で指定された位置に対応する位置に、マーカ602’を表示させる。この例では、マーカ602’が画像5010上に表示されたマーカ602と同等の形状とされているが、これはこの例に限定されず、マーカ602’とマーカ602は、異なる形状でもよい。
ステップS136の処理の後、処理が上述したステップS150に移行される。また、ステップS135においてアイコンを表示させないと判定した場合(ステップS135、「No」)も、処理がステップS150に移行される。
UI部113は、ステップS104において例えばボタン5021が操作された場合、アノテーション入力画面600の入力内容を保存すると判定して、処理をステップS140に移行させる。ステップS140で、UI部113は、付帯情報生成部112に対して、アノテーション入力画面600において入力された各データを保存するように指示する。
次のステップS141で、付帯情報生成部112は、UI部113の指示に従い、上述した各処理(例えばステップS103、ステップS111、ステップS123、ステップS133、ステップS134など)においてUI部113によりRAM1002に記憶されたデータに基づきアノテーションデータを作成する。アノテーションデータは、ステップS103で指定された位置毎に作成される。付帯情報生成部112は、作成したアノテーションデータを、例えば情報処理装置100aのストレージ1004に保存する。これに限らず、付帯情報生成部112は、作成したアノテーションデータを、ネットワーク5を介してサーバ6に送信し、サーバ6に保存させてもよい。
表2~表7は、第1の実施形態に係るアノテーションデータの構成の例を示す。
表2は、アノテーションデータの全体の構成を示す。アノテーションデータは、形状データと、属性データと、画像領域データと、アノテーションデータIDと、を含む。これら形状データ、属性データおよび画像領域データの構成例を、表3、表4および表5にそれぞれ示す。
表3は、形状データの例を示す。形状データは、図16のステップS103においてユーザにより指定された位置により形成される形状を示し、「プリミティブ種別」、「頂点数」および「頂点座標のリスト」の各項目を含む。
表6は、項目「プリミティブ種別」に定義される値の例を示す。この例では、項目「プリミティブ種別」は、値「点」、「線」および「多角形」が定義される。項目「プリミティブ種別」の値が「点」である場合、項目「頂点数」の値が「1」とされる。項目「プリミティブ種別」の値が「線」である場合、項目「頂点数」の値が「2以上」とされる。また、項目「プリミティブ種別」の値が「多角形」である場合、項目「頂点数」の値が「3以上」とされる。項目「頂点座標リスト」は、項目「頂点数」に示される各頂点を、(φ,θ)座標系により定義する。ここで、項目「頂点座標のリスト」に列挙される座標を先頭から順番に繋ぐ直線で囲まれた閉領域が、プリミティブ種別で定義される「多角形」の範囲となる。
上述した例では、図16のステップS103において1点が指定されるものとしているため、項目「プリミティブ種別」が値「点」とされ、頂点数が「1」とされる。また、項目「頂点座標のリスト」は、指定された1点の座標のみが記述される。
表4は、属性データの例を示す。属性データは、「作成者」、「作成日時」、「場所」、「対象」、「ソース画像」、「調査日時」、「対応方法」、「属性情報リスト」および「タグ」の各項目を含む。
項目「作成者」の値は、例えば情報処理装置100a、あるいは、情報処理装置100aの第1の実施形態に係る機能を実現するための入力プログラムに対するログイン情報から取得される。項目「作成日時」の値は、情報処理装置100aが有するクロックに基づくシステム時刻から取得される。項目「場所」の値は、見取り図画像5011が取得できる場合は、当該見取り図画像5011上の撮像位置から取得される。見取り図画像5011が取得できない場合、項目「場所」の値は、ユーザ入力から取得される。
項目「対象」の値は、ユーザ入力から取得される。項目「ソース画像」の値は、アノテーション入力画面600によりアノテーションを作成時に参照していた画像名(ファイル名)が用いられる。例えば、項目「ソース画像」の値として、上述した切り取り画像表示領域6020に表示される切り取り画像ファイルのファイル名が用いられる。項目「調査日時」の値は、項目「ソース画像」に記述される画像ファイルのタイムスタンプから取得される。項目「対応方法」の値は、ユーザ入力から取得される。
項目「属性情報リスト」の値は、表7に例示する属性情報がリストとして記述される。表7において、属性情報は、「種別」、「名称」および「属性値リスト」の各項目を含む。項目「種別」の値は、設備、変状などの診断対象の種別であって、例えば、図20に示すアノテーション入力画面600における、設備種類を入力する入力領域6010aの値が用いられる。項目「名称」の値は、診断対象の具体的な名称であって、例えば、図20に示すアノテーション入力画面600における、製品型番を入力する入力領域6010bの値が用いられる。また項目「属性値リスト」の値は、例えば、図20に示すアノテーション入力画面600における入力領域6010cの、各チェックボックスに対応する名称を属性名とし、チェックボックスの値を属性値とし、これら属性名および属性値の組のリストを取得する。項目「属性値リスト」に含まれる各属性名は、項目「種別」の値に応じて異なるものとなる。
表4の説明に戻り、項目「タグ」の値は、ユーザ入力から取得される。例えば、項目「タグ」の値として、アノテーション入力画面600における入力領域6010dに入力された値(例えば備考)が用いられる。
表5は、画像領域データの例を示す。画像領域データは、例えば図16のステップS132において指定された切り取り画像の、左上、左下、右上および右下各頂点の座標を、全天球画像510における角度座標(φ,θ)により示す。
図16の説明に戻り、付帯情報生成部112は、ステップS141による上述のアノテーションデータの保存が完了すると、処理をステップS142に移行させる。ここで、付帯情報生成部112は、アノテーションデータに対して、アノテーション入力時に取得されている各全天球画像510を示す情報(例えばパスを含むファイル名)を関連付ける。図15-1を例にとって説明すると、付帯情報生成部112は、各ピンマーカ50401、50402、50403、…に対応する各全天球画像510、510、…を示す情報が、アノテーションデータに対して関連付けられる。
ステップS142で、UI部113は、当該入力プログラムによるアノテーション入力処理の終了が指示されたか否かを判定する。例えば、UI部113は、ステップS141の保存処理の後、アノテーション入力処理の終了または継続を指示するための終了指示画面を表示させる。UI部113は、アノテーション入力処理の終了が指示されたと判定した場合(ステップS142、「Yes」)、この図16のフローチャートによる一連の処理を終了させる。一方、UI部113は、アノテーション入力処理の継続が指示されたと判定した場合(ステップS142、「No」)、処理を上述したステップS150に移行させる。
[第1の実施形態に係る出力処理]
次に、第1の実施形態に係る出力処理について説明する。情報処理装置100aにおいて、出力部115は、上述したようにして作成したアノテーションデータに基づき、診断対象の診断結果を集約した報告書データを作成する。
一例として、情報処理装置100aにおいて、UI部113は、例えば画面500におけるボタン5020の操作に応じて、各アノテーションデータと、当該各アノテーションデータに関連付けられる各全天球画像510、510、…と、を読み込む。UI部113は、読み込んだ各全天球画像510、510、…のうち1の全天球画像510の所定の領域511を切り取って、画像5010として画面500に表示させる。このとき、UI部113は、各アノテーションデータの形状データにおける項目「頂点座標のリスト」の値に応じた画像5010上の位置に、例えば各アノテーションデータに対応するタグを表示させる。
図24は、第1の実施形態に係る、報告書データ作成に係る画面500の表示の例を示す図である。図24において、画面500に対して、例えば、各アノテーションデータの属性データに含まれる項目「タグ」に従いタグ5030cおよび5030dが表示される。また、これらタグ5030cおよび5030dに対応して、当該項目「タグ」に入力された値(例えば備考)がコメント604aおよび604bとして表示される。出力部115は、これらタグ5030cおよび5030dに対する指定に応じて、指定されたタグに対応するアノテーションデータに基づき報告書データを作成する。
これに限らず、出力部115は、例えば各アノテーションデータの属性データの各項目に対して、ユーザにより指定された条件により絞り込み検索を行い、検索の結果として得られた各アノテーションデータに基づき報告書データを作成することもできる。
図25は、第1の実施形態に適用可能な報告書データの例を示す図である。この例では、報告書データは、「点検実施日」および「点検実施者名」の各項目と、「室名」、「対象」、「現場写真」、「内容」、「対応要否」および「備考」の各項目と、を含むレコードを、アノテーションデータ毎に含む。
報告書データのレコードにおいて、「点検実施日」および「点検実施者名」の各項目は、例えば、上述の表4を参照し、アノテーションデータの属性データにおける項目「作成日時」および「作成者」からそれぞれ取得できる。報告書データにおける項目「対象」は、表4および表7を参照し、アノテーションデータの属性データにおける項目「属性情報リスト」の項目「名称」などから取得できる。また、報告書データにおける「室名」、「内容」および「対応要否」の各項目は、アノテーションデータの属性データにおける項目「場所」、「タグ」および「対応方法」からそれぞれ取得できる。さらに、報告書データにおける項目「現状写真」は、例えば、表4を参照し、アノテーションデータの属性データにおける項目「ソース画像」に記述される画像名に基づき取得した画像が埋め込まれる。
なお、報告書データにおいて、項目「備考」は、例えば、当該報告書データの作成時におけるユーザ入力に応じて取得できる。
また、図25の報告書データは、一例であり、レコードに含まれる各項目は、上述の例に限定されない。また、レコードに含まれる各項目は、ユーザ入力に応じて変更、設定が可能である。
出力部115は、このようにして作成された報告書データを、所定のデータ形式で以て出力する。例えば、出力部115は、報告書データを、市販の文書作成アプリケーションプログラムや、テーブル作成用アプリケーションプログラム、プレゼンテーション資料作成用アプリケーションプログラムなどのデータ形式に従って出力できる。また、PDF(Portable Document Format)といった、印刷および表示に特化したデータ形式に従い出力することもできる。
なお、出力部115は、図25に示す報告書データは、出力の目的に限られない。例えば、項目「現場写真」に埋め込まれる画像に、当該画像に対応する撮像位置から開始されるパノラマ自動ツアー機能(図15-2参照)を呼び出すリンク情報を関連付けることができる。UI部113は、図25に示す報告書データを表す画像を画面500に表示させる。UI部113は、ユーザ操作により項目「現場写真」に表示される画像が指定されると、当該画像に関連付けられるリンク情報に従い、画面500の表示を例えば図15-2(a)に示される表示に切り替える。
また、これに限らず、当該項目「現場写真」に埋め込まれる画像に、特定のWebサイトへのリンク情報を関連付けることも考えられる。
また、報告書データにおいて、項目「現状写真」の代わりに時系列画像を埋め込む項目(項目「時系列写真」とする)を設けることもできる。なお、時系列画像、例えばある位置および撮像範囲においてそれぞれ異なる時間に撮像した複数の画像を撮像時間順に並べた画像は、予め撮像して、例えば情報処理装置100aに、当該位置を示す位置情報に関連付けて保存しておく。出力部115は、報告書データによる画面を表示する際に、項目「時系列写真」に対して、複数の画像を含む時系列画像を表示させる。これにより、例えば工事など作業の進捗を容易に把握することが可能となる。また、異なる時間に撮像された画像を比較することで、経年変化などを容易に確認できる。
上述した図24の例では、画面500上に表示された各タグ5030cおよび5030dを指定することで、報告書データの作成に用いるアノテーションデータを指定するように説明したが、これはこの例に限定されない。例えば、サムネイル画像、コメントおよび属性情報などをアノテーションデータ毎に含むリストを作成、表示することも考えられる。サムネイル画像は、切り取り画像を縮小して用いることができる。
さらに、報告書データに対して、報告書作成者(点検者)以外の者によるコメントを関連付けることもできる。これにより、例えば点検者の報告書データに対して設計者が返答し、さらにその返答に点検者がコメントを返答する、といったスレッド機能を実現できる。
[第1の実施形態の変形例]
次に、第1の実施形態の変形例について説明する。上述の第1の実施形態では、図20~図23などを用いて説明したように、図16のステップS103において、位置を点で指定していた。これはこの例に限定されず、例えば表3および表6の項目「プリミティブ種別」にて説明したように、位置は、線や多角形によっても指定できる。
以下、図16のステップS103において、線により位置の指定を行う例について説明する。図26は、第1の実施形態の変形例に適用可能な、壁面にひび610が観察される例を示す図である。なお、図26および後述する図27~図29において、上述した図20~図23に対応する部分には同一の符号を付して、詳細な説明を省略する。
図26において、画面500に表示される画像5010において、線状の形状を有するひび610が観察される。ユーザは、図16のステップS103において、例えば、タッチパネル1020に対して画像5010上のひび610の画像をなぞる(ドラッグ操作)ことで指定する。ひび610を表す位置情報は、例えば、順次隣接する点の位置が閾値よりも小さい複数の点の位置情報の集合となる。
図27は、上述した図20と対応し、第1の実施形態の変形例に係る、指定されたひび610に対するアノテーションを入力するためのアノテーション入力画面600の例を示す図である。図27において、アノテーション入力画面600は、アノテーションを入力するためのアノテーション入力領域6010’を含む。この例では、アノテーション入力領域6010’は、入力領域6010dおよび6010eを含む。
入力領域6010eは、ひび610などの変状状態に関する情報を入力するための領域であって、「箇所」、「変状種類」、「幅」および「長さ」、ならびに、「状況」の各入力項目を含む。これらのうち、項目「変状種類」および「状況」は、それぞれ、予め定められた項目をプルダウンメニューにより選択するための入力領域となっている。また、項目「箇所」と、項目「幅」および「長さ」と、は、ユーザにより名称や値が入力される。項目「幅」および「長さ」は、固定的な項目ではなく、項目「変状種類」において選択される内容に応じた項目とすることができる。
図27に示されるアノテーション入力画面600において、ボタン6012は、変状種類を追加するためのボタンである。UI部113は、ボタン6012に対する操作に応じて、例えば上述した項目「変状種類」、項目「幅」および「長さ」、並びに、項目「状況」の組を、アノテーション入力画面600に対して追加して表示させる。
この線状に指定された位置に対する切り取り領域の指定は、第1の実施形態において図21および図22を用いて説明した方法と同様にして実行可能である。図28は、第1の実施形態の変形例に適用可能な、領域指定画面に切り換えられたアノテーション入力画面600の例を示す図である。この例では、切り取り画像表示領域6020に対して、画像5010上のひび610に対応するひび610’が表示されている。他は、上述した図21と何ら変わるところが無い。
また、図29は、第1の実施形態の変形例に係る、選択ボタン6022に対する操作に応じて切り取り領域を指定するための画面500の表示の例を示す図である。この場合においても、ひび610を含むように枠603が指定される。UI部113は、ひび610の一部または全部が枠603に含まれない場合、その旨を示す警告画面を表示できる。
また、同様にして、三角形以上の多角形(凹多角形を含む)についても、位置および切り取り領域の指定が可能である。
[第2の実施形態]
次に、第2の実施形態について説明する。上述した第1の実施形態では、2次元の座標情報を有する全天球画像510に基づき、アノテーションデータを作成していた。これに対して、第2の実施形態では、アノテーションデータの作成に際し、3次元の座標情報を有する3次元画像をさらに用いる。
[第2の実施形態に係る撮像装置]
図30は、第2の実施形態に係る撮像装置を概略的に示す図である。なお、図30において、上述した図1と共通する部分には同一の符号を付して、詳細な説明を省略する。図30において、撮像装置1bは、略直方体の筐体10bの第1の面に、複数(この例では5個)の撮像レンズ20a1、20a2、20a3、20a4および20a5と、シャッタボタン30とが設けられる。筐体10b内には、各撮像レンズ20a1、20a2、…、20a5にそれぞれ対応して撮像素子が設けられる。
また、筐体10bの、第1の面の背面側の第2の面に、複数の撮像レンズ20b1、20b2、20b3、20b4および20b5が設けられる。これら撮像レンズ20b1、20b2、…、20b4および20b5も、上述の各撮像レンズ20a1、20a2、…、20a5と同様に、筐体10b内にそれぞれ対応した撮像素子が設けられる。
各撮像レンズ20a1、20a2、…、20a5と、撮像レンズ20b1、20b2、…、20b5とにおいて、筐体10bの底面からの高さが一致する撮像レンズの組により、それぞれ、撮像体211、212、213、214および215が構成される。
なお、各撮像レンズ20a1、20a2、…、20a5、ならびに、撮像レンズ20b1、20b2、…、20b5は、第1の実施形態にて説明した撮像レンズ20aおよび20bと同一の構成を適用できるので、ここでの詳細な説明を省略する。また、各撮像体211、212、213、214および215は、上述した撮像体21に対応する。
第2の実施形態では、各撮像レンズ20a1、20a2、…、20a5は、それぞれ隣接する撮像レンズとの間の距離を距離dとして等間隔に配置される。また、撮像レンズ20a1および20b1、撮像レンズ20a2および20b2、撮像レンズ20a3および20b3、撮像レンズ20a4および20b4、撮像レンズ20a5および20b5は、それぞれ、筐体10bの例えば底面からの高さが一致するように、筐体10bに配置される。
さらに、各撮像体211、212、213、214および215のうち最下部に配される撮像体215の各撮像レンズ20a5および50b5は、それぞれ、底面から高さhの位置に配される。また、例えば各撮像レンズ20a1~20a5は、最下部の撮像レンズ20a5を起点として、各撮像レンズ20a4、20a3、20a2および20a1が、距離dずつ間隔を開けて、筐体10aの底面側から上面側に向けて、筐体10aの長辺方向の中心線にレンズ中心を整列させて配置される。
シャッタボタン30は、操作に応じて、各撮像レンズ20a1、20a2、…、20a5と、各撮像レンズ20b1、20b2、…、20b5とによる撮像を指示するためのボタンである。シャッタボタン30が操作されると、各撮像レンズ20a1、20a2、…、20a5、および、各撮像レンズ20b1、20b2、…、20b5による撮像が同期して行われる。
図30に示されるように、撮像装置1bの筐体10bは、各撮像体211~215が配置される撮像部領域2bと、シャッタボタン30が配置される操作部領域3bと、を含んで構成される。操作部領域3bは、ユーザが撮像装置1bを保持するためのグリップ部31が設けられ、グリップ部31の底面には、当該撮像装置1bを三脚などに固定するための固定部32が設けられる。
なお、ここでは、撮像装置1bが5つの撮像体211~215を備えるように説明したが、これはこの例に限定されない。すなわち、撮像装置1bは、複数の撮像体21を備えていればよく、6以上の撮像体21を備えていてもよいし、2以上4以下の撮像体21を備えていてもよい。
図31は、第2の実施形態に適用可能な各撮像体211、212、…、215により撮像可能な撮像範囲の例を示す図である。各撮像体211、212、…、215は、同様の撮像範囲を有する。図31では、撮像体211、212、…、215による各撮像範囲を、撮像体211の撮像範囲で代表して示している。
なお、以下では、図31に示されるように、例えば撮像レンズ20a1、20a2、…、20a5が整列する方向にZ軸を定義し、撮像レンズ20a1および20b1の光軸の方向にX軸を定義する。また、Z軸に直角に交わる平面に含まれ、且つ、X軸に直角に交わる方向にY軸を定義する。
撮像体211は、撮像レンズ20a1および20b1の組み合わせにより、撮像体211の中心部を中心とした全天球を撮像範囲とする。すなわち、上述したように、撮像レンズ20a1および20b1は、それぞれ画角が180°以上、好ましくは180°より大きく、より好適には185°以上とされている。したがって、これら撮像レンズ20a1および20b1の組み合わせにより、XY平面上の撮像範囲AおよびXZ平面上の撮像範囲Bをそれぞれ360°とすることができ、これらの組み合わせにより、全天球の撮像範囲が実現される。
また、撮像体211、212、…、215は、それぞれZ軸方向に距離dの間隔を開けて配置されている。したがって、各撮像体211、212、…、215により全天球を撮像範囲として撮像された各半球画像の組は、Z軸方向に距離dずつ視点の異なる画像となる。
このとき、実施形態では、各撮像レンズ20a1~20a5、および、各撮像レンズ20b1~20b5における撮像が、シャッタボタン30の操作に応じて同期して行われる。そのため、第2の実施形態に係る撮像装置1bを用いることで、筐体10bの第1の面および第2の面それぞれについて、Z軸方向に距離dずつ視点が異なり、且つ、同一のタイミングで撮像された5組の半球画像の組を取得することができる。
この、Z軸方向に距離dずつ視点が異なり、且つ、同一のタイミングで撮像された5組の半球画像の組それぞれから生成された5枚の全天球画像は、Z軸方向に伸びる同一のエピポーラ線に並ぶ画像となる。
[第2の実施形態に係る画像処理の概略]
次に、第2の実施形態に係る画像処理について説明する。図32は、第2の実施形態に係る、アノテーションを入力する入力装置としての情報処理装置100bの機能を説明するための一例の機能ブロック図である。なお、情報処理装置100bのハードウェアとしての構成は、図6を用いて説明した、情報処理装置100aの構成をそのまま適用できるので、ここでの詳細な説明を省略する。また、図32において、上述した図7と共通する部分には同一の符号を付して、詳細な説明を省略する。
図32において、情報処理装置100bは、上述した情報処理装置100aと同様に、画像取得部110と、画像処理部111と、付帯情報生成部112と、UI部113と、通信部114と、出力部115と、を含む。さらに、情報処理装置100bは、3D情報生成部120を含む。
これらのうち、画像取得部110は、撮像装置1bの各撮像レンズ20a1~20a5、および、各撮像レンズ20b1~20b5により撮像された各半球画像を取得する。画像処理部111は、画像取得部110により取得した各半球画像から、図8~図12、および、式(1)~式(9)を用いて説明した処理により、各撮像体211~215に対応する、Z軸方向に距離dずつ視点が異なる5枚の全天球画像を生成する。
なお、第2の実施形態に係る撮像装置1bは、各撮像レンズ20a1~20a5の中心を結ぶ中心線が鉛直方向と平行になるように設置され撮像が行われることが前提とされるため、各半球画像の傾き補正処理は省略できる。これに限らず、撮像装置1bに上述したような加速度センサ2008を設け、加速度センサ2008の検出結果に基づき鉛直方向を検出し、撮像装置1bの鉛直方向に対する傾きを求めて傾き補正を行ってもよい。
UI部113は、各撮像体211~215に対応する5枚の全天球画像のうち1枚の全天球画像、例えば撮像体211により撮像された半球画像の組から生成した全天球画像により、上述した図18、図20~図23、図26~図29を用いて説明した各画面500を表示させる。付帯情報生成部112によるアノテーションデータの生成も、この撮像体211により撮像された半球画像の組から生成した全天球画像に基づき行われる。
3D情報生成部120は、画像処理部111で生成された、Z軸方向に距離dずつ視点が異なる5枚の全天球画像を用いて3次元情報を生成する。
[第2の実施形態に適用可能な3次元情報生成処理]
次に、3D情報生成部120により実行される、第2の実施形態に適用可能な3次元情報生成処理について説明する。
図33は、第2の実施形態に適用可能な、撮像装置1bにおいて、異なる5つの視点で撮像され、各撮像体211、212、…、215毎に合成された画像の例を示す図である。図33(a)は、被写体60の例を示し、図33(b)、図33(c)、図33(d)、図33(e)および図33(f)は、同一の被写体60を、それぞれ異なる5つの視点で撮像した撮像画像が合成された全天球画像3001、3002、3003、3004および3005の例を示す。図33(b)~図33(f)に例示されるように、各全天球画像3001~3005は、被写体60の画像が、各撮像体211~215間の距離dに応じて、少しずつずれて含まれる。
なお、図33では、撮像装置1bが、撮像装置1bの第1の面(前面)側に存在する被写体60を撮像するように示しているが、これは説明のためであって、実際には、撮像装置1bは、撮像装置1bを取り囲んで存在する被写体60を撮像できる。この場合、全天球画像3001~3005は、例えば正距円筒図法による画像であって、それぞれ、左右の辺が同一の位置を表し、上辺および下辺がそれぞれ1点を表すものとなる。すなわち、図33に示す全天球画像3001~3005は、説明のために、正距円筒図法による画像を変換して部分的に切り取ったものを示している。
なお、全天球画像3001~3005の投影方法は、正距円筒図法に限定されない。例えば、全天球画像3001~3005は、Z軸方向の画角を大きく取る必要が無い場合には、シリンドリカル投影を用いた画像であってもよい。
図34は、第2の実施形態に適用可能な3次元復元モデルの作成処理を示す一例のフローチャートである。このフローチャートの各処理は、情報処理装置100bにより実行される。また、撮像装置1bでは、既に、各撮像体211~215により撮像された10枚の半球画像が内蔵されるメモリに記憶されているものとする。
ステップS10で、画像取得部110は、撮像装置1bから、各撮像体211~215により撮像された各半球画像を取得する。画像処理部111は、取得した各半球画像を撮像体211~215毎に合成し、図33に示したような、複数の視点から撮像された5枚の全天球画像3001~3005を作成する。
次のステップS11で、3D情報生成部120は、ステップS10で作成した全天球画像3001~3005から1つを基準全天球画像(全天球画像3001とする)として選択する。3D情報生成部120は、選択した基準全天球画像に対する、他の全天球画像3002~3005の視差を、画像の全画素について計算する。
ここで、第2の実施形態に適用可能な視差の計算手法の原理について説明する。撮像素子200aなどの画像センサにより撮像された撮像画像を用いた視差計算を行う上での基本的な原理は、三角測量を利用した方法である。図35を用いて、三角測量について説明する。図35において、カメラ400aおよび400bは、それぞれレンズ401aおよび401bと、撮像素子402aおよび402bと、を含む。三角測量を用いて、カメラ400aおよび400bを結ぶ線から対象403までの距離Dを、各撮像素子402aおよび402bにより撮像された撮像画像内の撮像位置情報から算出する。
図35において、値fは、各レンズ401aおよび401bの焦点距離を示す。また、レンズ401aおよび401bの光軸中心を結ぶ線の長さを基線長Bとする。図30の例では、撮像体211~215それぞれの間の距離dが基線長Bに相当する。対象403の、撮像素子402aおよび402b上での各撮像位置i1およびi2の差が視差qとなる。三角形の相似関係により、D:f=B:qが成り立つので、式(10)により距離Dを算出することができる。
式(10)において、焦点距離fおよび基線長Bが既知であるので、視差qを算出することが処理の課題となる。視差qは、撮像位置i1と撮像位置i2との差分であるので、各撮像素子402aおよび402bで撮像された各撮像画像における撮像位置の対応関係を検出することが、視差算出の根本課題となる。一般的には、この、複数の画像間での対応位置を求めるマッチング処理は、エピポーラ拘束に基づき、エピポーラ線上の各視差を探索していくことにより実現される。
視差の探索処理は、様々な計算方法を用いて実現可能である。例えば、式(11)に示される、相互相関係数(NCC:Normalized Cross-Correlation)を用いたブロックマッチング処理を適用することができる。これに限らず、SGM(Semi Global Matching)による密度の高い視差計算処理を適用することもできる。視差の計算に何れの方法を用いるかは、最終的に生成される3次元復元モデルの用途に応じて適宜、選択することができる。なお、式(11)において、値pは画素位置、値qは視差をそれぞれ表す。
これらのコスト関数に基づいて、エピポーラ線上の各画素の対応関係を算出していき、最も類似していると考えられる算出結果を選択することになる。NCCすなわち式(11)においては、数値C(p,q)NCCが最大値のコストを持つ画素位置を、対応点と見做すことができる。また、SGMにおいては、最小値のコストを持つ画素位置が、対応点と見做される。
一例として、式(11)のNCCを用いて視差を算出する場合について、概略的に説明する。ブロックマッチング法は、参照画像内の任意の参照画素を中心としてM画素×N画素のブロックとして切り出される領域の画素値と、対象画像内の任意の対象画素を中心としてM画素×N画素のブロックとして切り出される領域の画素値と、を取得する。取得した画素値に基づき、参照画素を含む領域と、対象画素を含む領域との類似度を計算する。探索対象の画像内でM画素×N画素のブロックを移動させながら類似度を比較し、最も類似度が高くなる位置のブロックにおける対象画素を、参照画素に対応する対応画素とする。
式(11)において、値I(i,j)は、参照画像における画素ブロック内の画素の画素値を表し、値T(i,j)は、対象画像における画素ブロック内の画素値を表す。参照画像におけるM画素×N画素の画素ブロックに対応する、対象画像における画素ブロックを画素単位で移動させながら、式(11)の計算を実行し、数値C(p,q)NCCが最大値となる画素位置を探索する。
第2の実施形態に係る撮像装置1bを用いた場合においても、基本的には、上述の三角測量の原理を用いて視差を算出する。ここで、当該撮像装置1bは、5つの撮像体211~215を含み、1度に5枚の全天球画像3001~3005を撮像可能とされている。すなわち、第2の実施形態に係る撮像装置1bは、3以上の撮像画像を同時に撮像できる。そのため、第2の実施形態には、上述の三角測量の原理を拡張して適用させる。
例えば、式(12)に示されるように、基線長Bずつ離れたカメラ毎のコストの視差qの総和をコストとして、各カメラによる各撮像画像における対応点を検出することができる。
一例として、第1、第2および第3のカメラが、エピポーラ線上に第1のカメラ、第2のカメラ、第3のカメラ、の順に並べられているものとする。この場合に、第1のカメラおよび第2のカメラの組、第1のカメラおよび第3のカメラの組、ならびに、第2のカメラおよび第3のカメラの組それぞれにおいて、上述したNCCやSGMなどによりコスト計算を行う。対象までの最終的な距離Dは、これら各カメラの組のそれぞれにより算出されたコストの総和計算を行い、その総和によるコストの最小値を求めることで算出できる。
なお、ここで説明したマッチング処理は、図15-1を用いて説明した、撮像位置の自動推定機能のおけるマッチング処理にも適用可能なものである。
これに限らず、実施形態における視差の計算手法として、EPI(Epipolar Plane Image)を用いたステレオ画像計測方法を適用することができる。例えば、撮像装置1bにおいて各撮像体211~215により撮像された撮像画像に基づく全天球画像3001~3005を、等速度運動するカメラにより撮像された同画像と見做して、EPIを作成することができる。EPIを用いることで、各全天球画像3001~3005間の対応点の探索を、例えば上述した三角測量を用いた方法と比較して、容易に実行できる。
一例として、撮像装置1bにおいて、例えば撮像体211を基準として、撮像体211と各撮像体212~215との間の各距離d1-2、d1-3、d1-4およびd1-5を算出する。算出結果に基づき、全天球画像3001~3005の横、縦軸(x,y)と、距離D(=0,距離d1-2,…,d1-5)と、の3次元からなる空間画像を作成する。この空間画像のy-D平面での断面像をEPIとして作成する。
上述のように作成したEPIにおいては、元の各全天球画像3001~3005内に存在する物体上の点は、単一の直線として表現される。この直線の傾きは、撮像装置1bから当該物体上の点までの距離に応じて変化する。したがって、EPIに含まれる直線を検出することで、各全天球画像3001~3005間における対応点を決定することが可能である。また、直線の傾きにより、当該直線に対応する物体の撮像装置1bからの距離を算出できる。
図36および図37を用いて、EPIの原理について説明する。図36(a)は、それぞれ円筒画像である複数の画像4201、4202、…のセットを示している。図36(b)は、この画像4201、4202、…のセットから、平面421により切り出したEPI422を概略的に示している。図36(a)の例では、奥行方向に、各画像4201、4202、…の撮影位置軸を取り、画像4201、4202、…のセットを重ねて、図36(a)に示されるように、3次元データ化する。この3次元データ化した画像4201、4202、…のセットを、奥行方向に平行な平面421で切り出したものが、図36(b)に示されるEPI422となる。
換言すれば、EPI422は、各画像4201、4202、…からX座標が同一のラインを取り出し、取り出した各ラインを、それぞれが含まれる各画像4201、4202、…をX座標として並べて配置した画像である。
図37は、第2の実施形態に適用可能な、EPIの原理を示す図である。図37(a)は、上述した図36(b)を模式化して示している。図37(a)において、横軸uは、各画像4201、4202、…を重畳した奥行方向であって、視差を表し、縦軸vは、各画像4201、4202、…の縦軸に対応する。EPI422は、撮像画像を基線長Bの方向に重畳した画像を意味する。
この基線長Bの変化は、図37(b)における距離ΔXで表される。なお、図37(b)において、位置C1およびC2は、例えば図8におけるレンズ401aおよび401bの光学中心にそれぞれ対応する。また、位置u1およびu2は、それぞれ位置C1およびC2を基準とした位置であって、図8における撮像位置i1およびi2にそれぞれ対応する。
このように基線長B方向に各画像4201、4202、…を並べていくと、各画像4201、4202、…の対応点の位置は、EPI422上で、傾きmを持つ直線、あるいは、曲線として表される。この傾きmが、すなわち距離Dを算出する際に用いる視差qとなる。傾きmは、距離Dが近いほど小さく、距離Dが遠いほど大きくなる。この距離Dに応じて異なる傾きmを持つ直線または曲線を、特徴点軌跡と呼ぶ。
傾きmは、下記の式(13)で表される。式(13)において、値Δuは、図37(b)における、それぞれ撮像点である位置u1と位置u2との差分であり、式(14)にて算出できる。傾きmから、式(15)により距離Dが計算される。ここで、式(13)~式(15)において、値vは、カメラの移動速度、値fは、カメラのフレームレートを示している。すなわち、式(13)~式(15)は、カメラを等速度vで移動させながら、フレームレートfで各全周囲画像を撮像した場合の計算式となる。
なお、EPIを構成する画像として全周囲画像を用いた場合は、傾きmが曲線に基づく値となる。図38および図39を用いて説明する。図38において、球4111、4112、4113が、それぞれ撮像体21の構造を有し、直線上に配置されたカメラ#0、カメラ#refおよびカメラ#(n-1)により撮像された全天球画像を示している。カメラ#0とカメラ#refとの間隔(基線長)は距離d2、カメラ#refとカメラ#(n-1)との間隔は距離d1とされている。以下、球4111、4112、4113を、それぞれ全天球画像4111、4112、4113と呼ぶ。
対象点Pの全天球画像4111上の撮像位置は、各カメラ#0、#refおよび#(n-1)が配置される直線に対して角度φn-1を有する位置となる。同様に、対象点Pの各全天球画像4112および4113上の撮像位置は、当該直線に対してそれぞれ角度φrefおよびφ0の角度を有する位置となる。
図39は、これらの角度φ0、φrefおよびφn-1を縦軸にプロットし、各カメラ#0、#refおよび#(n-1)の位置を横軸にプロットしたものである。図39から分かるように、各全天球画像4111、4112および4113における撮像位置と、各カメラ#0、#refおよび#(n-1)の位置として示される特徴点軌跡は、直線にはならず、各点を結ぶ直線4121および4122に基づき近似した曲線413となる。
全天球画像3001~3005を利用して全周囲の視差qを計算する場合には、上述のように全天球画像3001~3005から直接的に曲線413上の対応点を探索する方法を用いてもよいし、全天球画像3001~3005をピンホールなどの投影系に変換し、変換した各画像に基づき対応点を探索する方法を用いてもよい。
図38の例では、全天球画像4111、4112、4113のうち全天球画像4112を参照画像(ref)とし、全天球画像4111を(n-1)番目の対象画像、全天球画像4113を0番目の対象画像としている。参照画像である全天球画像4112をベースに、各全天球画像4111および4113との対応点は、視差qn-1およびq0で表される。この視差qn-1およびq0は、上述の式(11)を例として、様々な既知の手法を利用して求めることができる。
3次元復元モデルの作成にEPIを利用することで、大量の全周囲画像を統一的に処理することが可能となる。また傾きmを利用することで、点としての対応のみではない計算になるため、処理がロバストになる。
図34のフローチャートの説明に戻り、3D情報生成部120は、ステップS11での視差計算の後、処理をステップS12に移行する。ステップS12で、3D情報生成部120は、ステップS11で算出した視差を示す視差情報に対して、補正処理を施す。視差情報に対する補正処理としては、Manhattan-world仮説に基づく補正や、線分補正などを適用することができる。次のステップS13で、3D情報生成部120は、ステップS12で補正処理された視差情報を、3次元点群情報に変換する。次のステップS14で、3D情報生成部120は、ステップS13で視差情報が変換された3次元点群情報に対して、必要に応じてスムージング処理、メッシュ化処理などを施す。このステップS14までの処理により、各全天球画像3001~3005に基づく3次元復元モデルが生成される。
なお、上述したステップS11~ステップS14の処理は、オープンソースにて配布されるSfM(Structure-from-Motion)ソフトウェア、MVS(Multi-View Stereo)ソフトウェアなどを用いて実行可能である。情報処理装置100b上で動作される入力プログラムは、例えば、これらSfMソフトウェア、MVSソフトウェアなどを含む。
ここで、図31を用いて説明したように、第2の実施形態に係る撮像装置1bは、各撮像体211~215をZ軸上に配置している。そのため、撮像装置1bから各被写体までの距離は、図40に平面40として示される、各撮像レンズ20a1~20a5が整列する方向と直交する平面40上において放射方向に優先的に算出されることになる。ここでいう優先とは、画角に対する3次元復元モデルの生成能力を示す。
すなわち、平面40上の各方向(図40の放射方向)については、各撮像体211~215による画角が、360°の全周を含むことができ、全周について距離の算出を行うことが可能である。一方、Z軸方向については、各撮像体211~215による画角(撮像範囲)の重複部分が大きくなる。そのため、Z軸方向では、画角の180°近辺で、各撮像体211~215により撮像された撮像画像に基づく全天球画像3001~3005において視差が少なくなる。したがって、Z軸を含む平面の方向には、360°全周にわたる距離算出が困難となる。
ここで、図41に例示されるように、大きな建物50、50、…などを含む大きな空間を3次元復元モデル作成の対象として考える。なお、図41において、X軸、Y軸およびZ軸は、図31で示したX軸、Y軸およびZ軸と一致している。この場合、全画角(360°)でのモデル化は、X-Y軸で表される平面40の方向になる。そのため、この平面40に対して直交するZ軸方向に、複数の撮像体211~215を整列させて配置させることが好ましい。
[第2の実施形態に係る撮像装置の信号処理に関する構成]
次に、第2の実施形態に係る撮像装置1bの信号処理に関する構成について説明する。図42は、実施形態に係る撮像装置1bの一例の構成を示すブロック図である。なお、図42において、上述した図30と対応する部分には同一の符号を付して、詳細な説明を省略する。
図42において、撮像装置1bは、撮像素子200a1、200a2、…、200a5、および、撮像素子200b1、200b2、…200b5と、駆動部210a1、210a2、…、210a5、および、駆動部210b1、210b2、…、210b5と、バッファメモリ211a1、211a2、…、211a5、および、バッファメモリ211b1、211b2、…、211b5と、を含む。
これらのうち、撮像素子200a1、200a2、…、200a5と、駆動部210a1、210a2、…、210a5と、バッファメモリ211a1、211a2、…、211a5と、は、それぞれ撮像レンズ20a1、20a2、…、20a5に対応する構成であって、それぞれ撮像体211、212、…、215に含まれる。なお、図42では、煩雑さを避けるため、撮像体211~215のうち、撮像体211のみを示している。
同様に、撮像素子200b1、200b2、…、200b5と、駆動部210b1、210b2、…、210b5と、バッファメモリ211b1、211b2、…、211b5と、は、それぞれ撮像レンズ20b1、20b2、…、20b5に対応する構成であって、それぞれ撮像体211、212、…、215に含まれる。
撮像装置1bは、さらに、制御部220、メモリ221およびスイッチ(SW)222を含む。スイッチ222は、図30に示したシャッタボタン30に対応する。例えば、スイッチ222が閉状態で、シャッタボタン30が操作された状態に対応する。
撮像体211について説明する。撮像体211は、撮像素子200a1、駆動部210a1およびバッファメモリ211a1と、撮像素子200b1、駆動部210b1およびバッファメモリ211b1と、を含む。
駆動部210a1および撮像素子200a1、ならびに、駆動部210b1および撮像素子200b1は、図4を用いて説明した駆動部210aおよび撮像素子200a、ならびに、駆動部210bおよび撮像素子200bと同等であるので、ここでの詳細な説明を省略する。
バッファメモリ211a1は、少なくとも1フレーム分の撮像画像を記憶可能なメモリである。駆動部210a1から出力された撮像画像は、このバッファメモリ211a1に一時的に記憶される。
なお、他の撮像体212~215については、機能は撮像体211と同等であるため、ここでの説明を省略する。
制御部220は、撮像装置1bの全体の動作を制御する。制御部220は、スイッチ222の開状態から閉状態への遷移を検知すると、トリガ信号を出力する。トリガ信号は、各駆動部210a1、210a2、…、210a5、および、各駆動部210b1、210b2、…、210b5に同時に供給される。
メモリ221は、トリガ信号の出力に応じた制御部220の制御に従い、各バッファメモリ211a1、211a2、…、211a5、および、各バッファメモリ211b1、211b2、…、211b5から各撮像画像を読み出し、読み出した各撮像画像を記憶する。メモリ221に記憶された各撮像画像は、撮像装置1bと接続される情報処理装置100bにより読み出すことができる。
バッテリ2020は、例えばリチウムイオン二次電池といった二次電池であって、撮像装置1b内部の電力供給が必要な各部に電力を供給する電力供給部である。なお、バッテリ2020は、二次電池に対する充放電の制御を行う充放電制御回路を含む。
図43は、第2の実施形態に係る撮像装置1bにおける制御部220およびメモリ221の一例の構成を示すブロック図である。なお、図43において、上述した図4と共通する部分には同一の符号を付して、詳細な説明を省略する。
図43において、制御部220は、CPU2000と、ROM2001と、トリガI/F2004と、スイッチ(SW)回路2005と、データI/F2006と、通信I/F2007と、を含み、これら各部がバス2010に通信可能に接続される。また、メモリ221は、RAM2003と、メモリコントローラ2002とを含み、バス2010に対して、メモリコントローラ2002がさらに接続される。これらCPU2000、ROM2001、メモリコントローラ2002、RAM2003、トリガI/F2004、スイッチ回路2005、データI/F2006、通信I/F2007およびバス2010それぞれに対し、バッテリ2020からの電力が供給される。
メモリコントローラ2002は、CPU2000の指示に従い、RAM2003に対するデータの記憶および読み出しを制御する。また、メモリコントローラ2002は、CPU2000の指示に従い、各バッファメモリ211a1、211a2、…、211a5、および、各バッファメモリ211b1、211b2、…、211b5からの撮像画像(半球画像)の読み出しも制御する。
スイッチ回路2005は、スイッチ222の閉状態および開状態の間の遷移を検知して、検知結果をCPU2000に渡す。CPU2000は、スイッチ回路2005からスイッチ222が開状態から閉状態に遷移した旨の検知結果を受け取ると、トリガ信号を出力する。トリガ信号は、トリガI/F2004を介して出力され、分岐して、各駆動部210a1、210a2、…、210a5、および、各駆動部210b1、210b2、…、210b5にそれぞれ供給される。
なお、CPU2000は、スイッチ回路2005による検知結果に応じてトリガ信号を出力するように説明したが、これはこの例に限定されない。例えば、CPU2000は、データI/F2006や通信I/F2007を介して供給された信号に応じて、トリガ信号を出力してもよい。さらに、トリガI/F2004がスイッチ回路2005の検知結果に応じてトリガ信号を発生させて、各駆動部210a1、210a2、…、210a5、および、各駆動部210b1、210b2、…、210b5に供給してもよい。
このような構成において、制御部220は、スイッチ222の開状態から閉状態への遷移を検知すると、トリガ信号を生成、出力する。トリガ信号は、各駆動部210a1、210a2、…、210a5、および、各駆動部210b1、210b2、…、210b5に同タイミングで供給される。各駆動部210a1、210a2、…、210a5、および、各駆動部210b1、210b2、…、210b5は、供給されたトリガ信号に同期して、各撮像素子200a1、200a2、…、200a5、および、各撮像素子200b1、200b2、…、200b5から電荷を読み出す。
各駆動部210a1、210a2、…、210a5、および、各駆動部210b1、210b2、…、210b5は、各撮像素子200a1、200a2、…、200a5、および、各撮像素子200b1、200b2、…、200b5から読み出した電荷をそれぞれ撮像画像に変換し、変換された各撮像画像を各バッファメモリ211a1、211a2、…、211a5、および、各バッファメモリ211b1、211b2、…、211b5に記憶する。
制御部220は、トリガ信号の出力後の所定タイミングで、メモリ221に対して、各バッファメモリ211a1、211a2、…、211a5、および、各バッファメモリ211b1、211b2、…、211b5からの撮像画像の読み出しを指示する。メモリ221において、メモリコントローラ2002は、この指示に応じて、各バッファメモリ211a1、211a2、…、211a5、および、各バッファメモリ211b1、211b2、…、211b5から各撮像画像を読み出し、読み出した各撮像画像をRAM2003の所定領域に記憶する。
情報処理装置100bが例えばデータI/F2006を介して撮像装置1bに接続される場合、情報処理装置100bは、データI/F2006を介して、RAM2003に記憶される各撮像画像(半球画像)の読み出しを要求する。CPU2000は、この要求に応じて、メモリコントローラ2002に対してRAM2003からの各撮像画像の読み出しを指示する。メモリコントローラ2002は、この指示に応じてRAM2003から各撮像画像を読み出して、読み出した各撮像画像を、データI/F2006を介して情報処理装置100bに送信する。情報処理装置100bは、撮像装置1bから送信された各撮像画像に基づき、図34のフローチャートによる処理を実行する。
図43は、第2の実施形態に係る撮像装置1bにおける制御部220およびメモリ221の一例の構成を示す。なお、図43において、上述した図4と共通する部分には同一の符号を付して、詳細な説明を省略する。
図43において、制御部220は、CPU2000と、ROM2001と、トリガI/F2004と、スイッチ(SW)回路2005と、データI/F2006と、通信I/F2007と、を含み、これら各部がバス2010に通信可能に接続される。また、メモリ221は、RAM2003と、メモリコントローラ2002とを含み、バス2010に対して、メモリコントローラ2002がさらに接続される。これらCPU2000、ROM2001、メモリコントローラ2002、RAM2003、トリガI/F2004、スイッチ回路2005、データI/F2006、通信I/F2007およびバス2010それぞれに対し、バッテリ2020からの電力が供給される。
メモリコントローラ2002は、CPU2000の指示に従い、RAM2003に対するデータの記憶および読み出しを制御する。また、メモリコントローラ2002は、CPU2000の指示に従い、各バッファメモリ211a1、211a2、…、211a5、および、各バッファメモリ211b1、211b2、…、211b5からの撮像画像(半球画像)の読み出しも制御する。
スイッチ回路2005は、スイッチ222の閉状態および開状態の間の遷移を検知して、検知結果をCPU2000に渡す。CPU2000は、スイッチ回路2005からスイッチ222が開状態から閉状態に遷移した旨の検知結果を受け取ると、トリガ信号を出力する。トリガ信号は、トリガI/F2004を介して出力され、分岐して、各駆動部210a1、210a2、…、210a5、および、各駆動部210b1、210b2、…、210b5にそれぞれ供給される。
なお、CPU2000は、スイッチ回路2005による検知結果に応じてトリガ信号を出力するように説明したが、これはこの例に限定されない。例えば、CPU2000は、データI/F2006や通信I/F2007を介して供給された信号に応じて、トリガ信号を出力してもよい。さらに、トリガI/F2004がスイッチ回路2005の検知結果に応じてトリガ信号を発生させて、各駆動部210a1、210a2、…、210a5、および、各駆動部210b1、210b2、…、210b5に供給してもよい。
このような構成において、制御部220は、スイッチ222の開状態から閉状態への遷移を検知すると、トリガ信号を生成、出力する。トリガ信号は、各駆動部210a1、210a2、…、210a5、および、各駆動部210b1、210b2、…、210b5に同タイミングで供給される。各駆動部210a1、210a2、…、210a5、および、各駆動部210b1、210b2、…、210b5は、供給されたトリガ信号に同期して、各撮像素子200a1、200a2、…、200a5、および、各撮像素子200b1、200b2、…、200b5から電荷を読み出す。
各駆動部210a1、210a2、…、210a5、および、各駆動部210b1、210b2、…、210b5は、各撮像素子200a1、200a2、…、200a5、および、各撮像素子200b1、200b2、…、200b5から読み出した電荷をそれぞれ撮像画像に変換し、変換された各撮像画像を各バッファメモリ211a1、211a2、…、211a5、および、各バッファメモリ211b1、211b2、…、211b5に記憶する。
制御部220は、トリガ信号の出力後の所定タイミングで、メモリ221に対して、各バッファメモリ211a1、211a2、…、211a5、および、各バッファメモリ211b1、211b2、…、211b5からの撮像画像の読み出しを指示する。メモリ221において、メモリコントローラ2002は、この指示に応じて、各バッファメモリ211a1、211a2、…、211a5、および、各バッファメモリ211b1、211b2、…、211b5から各撮像画像を読み出し、読み出した各撮像画像をRAM2003の所定領域に記憶する。
情報処理装置100bが例えばデータI/F2006を介して撮像装置1bに接続される場合、情報処理装置100bは、データI/F2006を介して、RAM2003に記憶される各撮像画像(半球画像)の読み出しを要求する。CPU2000は、この要求に応じて、メモリコントローラ2002に対してRAM2003からの各撮像画像の読み出しを指示する。メモリコントローラ2002は、この指示に応じてRAM2003から各撮像画像を読み出して、読み出した各撮像画像を、データI/F2006を介して情報処理装置100bに送信する。情報処理装置100bは、撮像装置1bから送信された各撮像画像に基づき、図34のフローチャートによる処理を実行する。
なお、第2の実施形態に係る撮像装置1bにおいても、図5を用いて説明した第1の実施形態に係る撮像装置1aと同様に、バッテリ2020および回路部2030は、筐体10bの内部に設けられる。また、バッテリ2020および回路部2030のうち少なくともバッテリ2020は、接着剤やネジなどの固定手段により筐体10b内部に固定される。回路部2030は、少なくとも、上述した制御部220およびメモリ221の各要素を含む。制御部220およびメモリ221は、例えば1または複数の回路基板上に構成される。撮像装置1bは、バッテリ2020および回路部2030が、各撮像レンズ20a1、20a2、…、20a5が整列して配置される列の延長上に配置される。
なお、ここでは、バッテリ2020および回路部2030が当該位置に配置されるように説明したが、これはこの例に限定されず、例えば回路部2030が十分小型であれば、当該位置には、少なくともバッテリ2020のみが配置されていればよい。
このようにバッテリ2020および回路部2030を配置することで、撮像装置1bの各撮像レンズ20a1、20a2、…、20a5(および各撮像レンズ20b1、20b2、…、20b5)が配置される面(前面および背面)の横幅を細くすることができる。これにより、撮像装置1bの筐体10bの一部が各撮像体211、212、…、215により撮像された各撮像画像に含まれることが抑制され、より高精度に視差を算出することが可能となる。また、同様の理由で、撮像装置1bの筐体10bの横幅は、可能な限り細くすることが好ましい。これは、第1の実施形態に係る撮像装置1aについても、同様である。
[第2の実施形態に係るアノテーション入力方法]
次に、第2の実施形態に係るアノテーション入力方法について説明する。上述したように、情報処理装置100bにおいてUI部113は、撮像装置1bの5つの撮像体211~215のうち1の撮像体(例えば撮像体211)により撮像された各半球画像に基づく全天球画像を用いて、アノテーションを入力するための画面を表示する。すなわち、UI部113は、当該全天球画像の一部の領域の画像を切り取り、切り取った画像を、例えば図20に示す画像5010として画面500に表示させる。
このとき、UI部113は、3D情報生成部120から、図34のフローチャートに従い生成された3次元点群情報を取得する。UI部113は、例えばメニューボタン5050に対する操作に応じて、画面500の表示を、画像5010と、3次元点群情報とで切り換えることができる。UI部113は、3次元点群情報に含まれる各点を、例えば距離に応じて色分けして表示する。
また、第2の実施形態においても、アノテーション入力処理は、上述した図16のフローチャートに従って行われる。ここで、図16のフローチャートにおけるステップS103の位置指定は、3次元点群情報に基づく3次元座標により行われる。
図44は、第2の実施形態に係る位置指定を説明するための図である。図44(a)に示されるように、互いに直交するX軸、Y軸およびZ軸で表される3次元空間に対し、立体構造を持つオブジェクト7001、7002および7003が配置され、これを撮像装置1bにて撮像した場合について考える。撮像装置1bの撮像により取得される各全天球画像に基づき生成される3次元点群情報は、例えば撮像位置からの、各オブジェクト7001~7003の、撮像位置に向けた表面の各点における3次元情報を含む。
図44(b)は、図44(a)の状態を撮像装置1bの撮像体211にて撮像した全天球画像から一部を切り取った画像5010の例を示す。UI部13は、この図44(b)に示す画像5010を画面500に表示させる。ユーザは、この図44(b)に示す画像5010に対して、例えばマーカ602aおよび602bに示されるように、オブジェクト7001および7002上の点に対して位置指定を行ったものとする。
ここで、第2の実施形態では、各オブジェクト7001~7003を含む、撮像装置1bにより撮像された空間の3次元点群情報を取得できる。そのため、位置指定は、図44(a)にマーカ602a’および602b’として示されるように、各オブジェクト7001および7002の3次元座標により示される位置に対して行われる。
また、位置指定を3次元点群情報に基づく3次元座標により行うことで、例えば、上述の第1の実施形態の変形例で説明したような、位置を線あるいは多角形により指定する場合において、線の長さ、あるいは、多角形の面積を算出することが可能である。
図45は、第2の実施形態に係る、位置指定を線により行った例を示す図である。図45は、図44(a)と同様に、互いに直交するX軸、Y軸およびZ軸で表される3次元空間に対し、立体構造を持つオブジェクト7004および7005が配置されている。また、円柱形のオブジェクト7004には、円柱の柱面に、柱面を周回する方向にひび610aが観察される。直方体(四角柱)のオブジェクト7005には、辺を跨いでひび610bが観察される。
このように、奥行きを持つひび610aおよび610bは、2次元の撮像画像から長さを算出することが困難である。例えば、上述した図26の画像5010に含まれるひび610は、ひび610が存在する壁面が画像5010の面に対して平行である場合に限り、長さを計測できる。第2の実施形態では、これらオブジェクト7004および7005の3次元点群情報を取得するため、これら奥行きを持つひび610aおよび610bの長さを容易に算出可能である。これは、多角形の面積や周囲長などの算出についても同様である。
なお、上述の各実施形態は、本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変形による実施が可能である。