(57)【要約】【課題】カメラ内部パラメータやカメラ間の相対位置姿勢が変化した場合に、仮想現実空間の表示が観察者へ悪影響を及ぼすことを未然に防ぐことを可能とする。【解決手段】  主撮像装置と副撮像装置により現実空間を撮影して得られた画像に仮想画像を合成して立体視のための画像を提供する情報処理装置は、主撮像装置の位置姿勢を計測し、保持部により保持されている装置間位置姿勢情報と計測された主撮像装置の位置姿勢とに基づいて副撮像装置の位置姿勢を算出し、計測された主撮像装置の位置姿勢と算出された副撮像装置の位置姿勢と保持されている主撮像装置及び副撮像装置の内部パラメータとを用いて、主、副撮像装置のそれぞれから得られた画像に仮想画像を合成する。情報処理装置は、主、副撮像装置により撮像された画像に基づいて、保持されている装置間位置姿勢情報や内部パラメータの情報の正当性を判断し、不当と判断した場合には保持されている情報を校正する。【選択図】    図５
2010271950.tif 000002
【特許請求の範囲】
【請求項１】
第１の撮像装置と第２の撮像装置により現実空間を撮影して得られた画像に仮想画像を合成して立体視のための画像を提供する情報処理装置であって、
前記第１の撮像装置の位置姿勢を計測する計測手段と、
前記第１の撮像装置と前記第２の撮像装置との間の位置姿勢の関係を示す、保持手段に保持されている装置間位置姿勢情報と、前記計測手段により計測された前記第１の撮像装置の位置姿勢とに基づいて、前記第２の撮像装置の位置姿勢を算出する算出手段と、
前記計測手段で計測された前記第１の撮像装置の位置姿勢と、前記算出手段で算出された前記第２の撮像装置の位置姿勢と、前記保持手段に保持されている前記第１及び第２の撮像装置の内部パラメータとを用いて、前記第１及び第２の撮像装置のそれぞれから得られた画像に仮想画像を合成する合成手段と、
前記第１または第２の撮像装置により撮像された画像に基づいて、前記保持手段に保持されている前記装置間位置姿勢情報、前記第１の撮像装置の内部パラメータ及び前記第２の撮像装置の内部パラメータの少なくともいずれかの情報の正当性を判断する判断手段と、
前記判断手段により前記情報が正当でないと判断された場合に、前記保持手段に保持されている前記情報を校正する校正手段とを備えることを特徴とする情報処理装置。
【請求項２】
前記判断手段により前記情報が正当でないと判断された場合に、その旨をユーザに通知する通知手段を更に備えることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記校正手段は、複数の校正処理を実行可能であり、
前記判断手段により正当でないと判断された前記情報が前記装置間位置姿勢情報であるか前記内部パラメータであるかによって、実行すべき校正処理を前記複数の校正処理から選択することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記判断手段は、
前記第１及び第２の撮像装置により得られたそれぞれの画像から、前記第１及び第２の撮像装置のそれぞれの内部パラメータを計測する内部パラメータ計測手段を備え、
前記内部パラメータ計測手段で計測された内部パラメータと前記保持手段に保持されている内部パラメータとの差が所定値を超える場合に、その内部パラメータは正当でないと判断することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記判断手段は、
前記第２の撮像装置により得られた画像から検出した所定のマーカの画像に基づいて前記第２の撮像装置の位置姿勢を算出する手段を備え、
前記計測手段により計測された前記第１の撮像装置の位置姿勢と前記第２の撮像装置の前記算出された位置姿勢とから装置間位置姿勢情報を算出し、当該算出した装置間位置姿勢情報と前記保持手段に保持されている装置間位置姿勢情報との差が所定値を超えた場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記判断手段は、
前記第２の撮像装置により得られた画像から検出した所定のマーカの画像に基づいて前記第２の撮像装置の位置姿勢を算出する手段と、
前記第２の撮像装置の前記算出された位置姿勢を用いて前記所定のマーカの画像を前記第２の撮像装置により得られた画像に投影する投影手段とを備え、
前記投影手段により投影された所定のマーカの画像と前記第２の撮像装置により得られた画像における前記所定のマーカの実写画像とのずれが所定値を超えた場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記判断手段は、
前記第１の撮像装置と前記第２の撮像装置により得られた画像のそれぞれからエッジを検出する検出手段を備え、
前記検出手段で検出されたエッジのうちの、前記第１の撮像装置と前記第２の撮像装置により得られた画像の間で対応するエッジが平行でない場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記判断手段は、
前記第１の撮像装置と前記第２の撮像装置により得られたそれぞれの画像から検出した所定のマーカの画像に基づいて、前記第１の撮像装置と前記第２の撮像装置のそれぞれの位置姿勢を算出する手段を備え、
前記計測手段により計測された前記第１の撮像装置の位置姿勢と前記第１の撮像装置の前記算出された位置姿勢とのずれが所定値を超えた場合、もしくは、前記算出手段により算出された前記第２の撮像装置の位置姿勢と前記第２の撮像装置の前記算出された位置姿勢とのずれが所定値を超えた場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項１に記載の情報処理装置。
【請求項９】
前記判断手段は、
前記第１の撮像装置と前記第２の撮像装置により得られたそれぞれの画像から検出した所定のマーカの画像に基づいて、前記第１の撮像装置と前記第２の撮像装置のそれぞれの位置姿勢を算出する手段と、
前記第１の撮像装置と前記第２の撮像装置のそれぞれの前記算出された位置姿勢を用いて、前記第１の撮像装置と前記第２の撮像装置により得られたそれぞれの画像に前記所定のマーカの画像を投影する投影手段とを備え、
前記第１の撮像装置と前記第２の撮像装置により得られた画像の少なくともいずれかにおいて、前記投影手段により投影された所定のマーカの画像と前記所定のマーカの実写画像とのずれが所定値を超えた場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
前記校正手段は、前記第１及び第２の撮像装置の内部パラメータを校正した後に前記装置間位置姿勢情報を校正することを特徴とする請求項１に記載の情報処理装置。
【請求項１１】
前記校正手段は、
前記装置間位置姿勢情報を校正し、
前記第２の撮像装置により撮像された画像を用いて前記校正された装置間位置姿勢情報を検証し、
検証の結果、前記校正された装置間位置姿勢情報が正当であればこれを採用し、
正当でなければ前記第１の撮像装置と前記第２の撮像装置のそれぞれの内部パラメータを校正し、
内部パラメータを校正した後に再度、前記装置間位置姿勢情報を校正することを特徴とする請求項１に記載の情報処理装置。
【請求項１２】
前記校正手段は、
前記保持手段に保持された情報を校正し、
前記校正の結果を検証し、
前記校正の結果が正当であれば前記校正の結果で前記保持手段の情報を更新し、前記校正の結果が正当でなければその旨を通知することを特徴とする請求項１に記載の情報処理装置。
【請求項１３】
前記校正手段は、前記判断手段において前記保持手段に保持されている情報が正当でないと判断された場合であって、前記投影手段により投影された所定のマーカの像と前記所定のマーカの実写画像とのずれが所定範囲内である場合に、前記保持手段に保持されている前記情報の校正処理を実行することを特徴とする請求項９に記載の情報処理装置。
【請求項１４】
第１の撮像装置と第２の撮像装置により現実空間を撮影して得られた画像に仮想画像を合成して立体視のための画像を提供する情報処理装置によるキャリブレーション処理方法であって、
計測手段が、前記第１の撮像装置の位置姿勢を計測する計測工程と、
算出手段が、前記第１の撮像装置と前記第２の撮像装置との間の位置姿勢の関係を示す、保持手段に保持されている装置間位置姿勢情報と、前記計測工程により計測された前記第１の撮像装置の位置姿勢とに基づいて、前記第２の撮像装置の位置姿勢を算出する算出工程と、
合成手段が、前記計測工程で計測された前記第１の撮像装置の位置姿勢と、前記算出工程で算出された前記第２の撮像装置の位置姿勢と、前記保持手段に保持されている前記第１及び第２の撮像装置の内部パラメータとを用いて、前記第１及び第２の撮像装置のそれぞれから得られた画像に仮想画像を合成する合成工程と、
判断手段が、前記第１または第２の撮像装置により撮像された画像に基づいて、前記保持手段に保持されている前記装置間位置姿勢情報、前記第１の撮像装置の内部パラメータ及び前記第２の撮像装置の内部パラメータの少なくともいずれかの情報の正当性を判断する判断工程と、
校正手段が、前記判断工程により前記情報が正当でないと判断された場合に、前記保持手段に保持されている前記情報を校正する校正工程とを備えることを特徴とするキャリブレーション処理方法。
【請求項１５】
請求項１４に記載されたキャリブレーション処理方法の各工程を、コンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カメラ内部パラメータやカメラ間の相対位置姿勢のキャリブレーションに関する。
【背景技術】
【０００２】
従来より、仮想現実感（バーチャルリアリティ：ＶＲ）システムが知られている。このＶＲシステムでは、コンピュータにより作り出された三次元コンピュータグラフィックス（Computer Graphic：ＣＧ）映像をユーザに提示することにより、仮想空間をあたかも現実空間であるかのようにユーザに感じさせる。また近年では、現実空間の映像に三次元ＣＧを合成することにより、現実空間にはない情報をユーザに提示する技術が開発されており、このような技術は、複合現実感（MixedReality：ＭＲ）システムと呼ばれている。このＭＲシステムは、現実空間と切り離された状況のみにおいて体験することが可能であった仮想空間と、現実空間との共存を目的とし、仮想空間を増強する技術として注目されている。
【０００３】
上記のような仮想空間と現実空間とを共存させるためのシステム（ＶＲシステム／ＭＲシステム）を実現する代表的な装置として、ヘッドマウントディスプレイ（ＨＭＤ）がある。ＶＲ／ＭＲシステムにおいては、ＨＭＤに仮想空間や現実空間を表示することにより、ＨＭＤを装着したユーザに対して仮想空間および複合現実空間を提示することができる（特許文献１参照）。この種の装置では、ステレオビデオシースルーＨＭＤ（以下、単にＨＭＤと呼称する）が用いられる。ＨＭＤは、眼鏡又はゴーグルに似た外観形状を有し、その内部には、例えばＬＣＤで構成されている右眼用表示デバイスと、左眼用表示デバイスが配置されている。また、ステレオビデオ映像をＨＭＤに装着したビデオカメラにより取得する場合には、例えばユーザ（装着者）の左右の視点位置の近傍位置に、それぞれ左眼用ステレオビデオカメラと右眼用ステレオビデオカメラとが設けられる。
【０００４】
高品質な複合現実感を提供するためには、現実空間と仮想空間との位置合わせが高精度に行われる必要がある。上述のようなＨＭＤを利用したシステムの場合には、右眼用ステレオビデオカメラと左眼用ステレオビデオカメラの両方の現実空間での位置姿勢をそれぞれ求め、それぞれの位置姿勢に基づいて三次元ＣＧを描画し、現実空間の画像との合成が行われる。各カメラの位置姿勢は、各カメラに磁気や光学式センサなどを取り付け、これらのセンサの値から求めてもよい。しかし、センサの誤差などにより両カメラ間の相対位置姿勢が一定とならない場合が考えられ、これによって、装着者に不快感を与えてしまう危険性がある。これを回避する方法として、両カメラ間の相対位置姿勢を予め求めておいたものを利用する方法が有効である。この方法では、右眼用ステレオビデオカメラと左眼用ステレオカメラのどちらか一方を主カメラ、もう一方を副カメラと設定する。そして、主カメラだけにセンサを取り付けて位置姿勢を算出し、このセンサを利用して算出された位置姿勢と予め求めておいた両カメラ間の相対位置姿勢を用いて、副カメラの位置姿勢が算出される。
【０００５】
また、ＨＭＤを利用したシステムに限らず、正確な位置合わせを行うためにも、カメラの内部パラメータを考慮することが必要である。ここでいう内部パラメータは、例えば、焦点距離、主点位置及びレンズ歪である。内部パラメータの算出に関しては、キャリブレーションパターンを用いた方法（特許文献２参照）や、動画像から求める方法（特許文献３参照）などが知られている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−１５９０１９号公報
【特許文献２】特開２００５−０１７２８６号公報
【特許文献３】特開２０００−２６８１７９号公報
【非特許文献】
【０００７】
【非特許文献１】小竹, 内山, 山本：マーカ配置に関する先駆的知識を利用したマーカキャリブレーション方法,日本バーチャルリアリティ学会論文誌,vol.10, No.3, pp.401-410, 2005.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上述した両カメラ間の位置姿勢やカメラ内部パラメータは、各ＨＭＤ固有のものである。そのため、ＨＭＤを使用するたびに必ずしも毎回求める必要はない。特に、日常的に使用する場合には、一度求めておいたのを再利用したほうが、効率がよい。しかし、不注意などからＨＭＤを落下させてしまった場合や、そのほかの外的要因によって、カメラ内部パラメータや両カメラ間の相対位置姿勢が変化してしまう場合がある。このような場合には、もちろんこれらを求め直す必要がある。しかし、装着者のＨＭＤあるいはＭＲに対する知識や経験のレベルによっては、この変化に気付かずに使用を続行してしまうことが考えられる。もし、この状態でＨＭＤを装着して作業を続行した場合、正常な立体視ができないことで、装着者の身体に悪影響を及ぼしかねない。
【０００９】
本発明は、上記したような課題に鑑みてなされたものであり、カメラ内部パラメータやカメラ間の相対位置姿勢が変化した場合に、仮想現実空間の表示が観察者へ悪影響を及ぼすことを未然に防ぐことを可能とすることを目的とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成するための本発明の一態様による情報処理装置は以下の構成を備える。すなわち、
第１の撮像装置と第２の撮像装置により現実空間を撮影して得られた画像に仮想画像を合成して立体視のための画像を提供する情報処理装置であって、
前記第１の撮像装置の位置姿勢を計測する計測手段と、
前記第１の撮像装置と前記第２の撮像装置との間の位置姿勢の関係を示す、保持手段に保持されている装置間位置姿勢情報と、前記計測手段により計測された前記第１の撮像装置の位置姿勢とに基づいて、前記第２の撮像装置の位置姿勢を算出する算出手段と、
前記計測手段で計測された前記第１の撮像装置の位置姿勢と、前記算出手段で算出された前記第２の撮像装置の位置姿勢と、前記保持手段に保持されている前記第１及び第２の撮像装置の内部パラメータとを用いて、前記第１及び第２の撮像装置のそれぞれから得られた画像に仮想画像を合成する合成手段と、
前記第１または第２の撮像装置により撮像された画像に基づいて、前記保持手段に保持されている前記装置間位置姿勢情報、前記第１の撮像装置の内部パラメータ及び前記第２の撮像装置の内部パラメータの少なくともいずれかの情報の正当性を判断する判断手段とを備える。
【発明の効果】
【００１１】
本発明によれば、カメラ内部パラメータやカメラ間の相対位置姿勢が変化した場合に、仮想現実空間の表示が観察者へ悪影響を及ぼすことを未然に防ぐことが可能となる。
【図面の簡単な説明】
【００１２】
【図１】ステレオビデオシースルーＨＭＤによるシステムの説明図。
【図２】第１〜第３実施形態の主情報処理装置のブロック図。
【図３】第１〜第３実施形態の副情報処理装置のブロック図。
【図４】人為的マーカの一例を示す図。
【図５】第１実施形態のシステムによる処理を説明するフローチャート。
【図６】第１実施形態のキャリブレーション処理を示すフローチャート。
【図７】警告の表示例を示す図。
【図８】第２実施形態のシステムによる処理を説明するフローチャート。
【図９】第２実施形態のキャリブレーション処理を示すフローチャート。
【図１０】第３実施形態のシステムによる処理を説明するフローチャート。
【図１１】第４、第５実施形態の主情報処理装置のブロック図。
【図１２】第４、第５実施形態の副情報処理装置のブロック図。
【図１３】第４実施形態のシステムによる処理を説明するフローチャート。
【図１４】第４実施形態における合成画像の一例を示す図。
【図１５】第４実施形態のキャリブレーション処理を示すフローチャート。
【図１６】第４実施形態の合成画像の一例を示す図。
【図１７】第５実施形態のシステムによる処理を説明するフローチャート。
【発明を実施するための形態】
【００１３】
［第１実施形態］
図１の（ａ）は、ユーザがステレオビデオシースルーＨＭＤ１００（以下、単にＨＭＤ１００と呼称する）を装着した状態を模式的に示す図である。ＨＭＤ１００は、眼鏡又はゴーグルに似た外観形状を有し、その内部には、例えばＬＣＤで構成されている右眼用の表示部１０２Ｒと、左眼用の表示部１０２Ｌが配置されている。また、ＨＭＤ１００には、ステレオビデオ映像を取得するために、ユーザ（装着者）の左眼視点位置の近傍に左眼用ビデオカメラである第１の撮像装置としての主撮像装置１０１Ｌが設けられている。同様に、ＨＭＤ１００の左右眼視点位置の近傍には右眼用ビデオカメラである第２の撮像装置としての副撮像装置１０１Ｒが設けられている。主撮像装置１０１Ｌ，副撮像装置１０１Ｒは、例えば、ＣＣＤカメラなどで構成され、現実世界を撮影する。位置姿勢センサ１０３は、主撮像装置１０１Ｌの位置姿勢を検出するものであり、例えば、ジャイロセンサ、磁器センサなどで構成される。また、本実施形態のシステムは、主撮像装置１０１Ｌ、表示部１０２Ｌ及び位置姿勢センサ１０３と接続された情報処理装置２０１と、副撮像装置１０１Ｒ及び表示部１０２Ｒと接続された情報処理装置３０１とを有する。なお、以下では左側の撮像装置を主撮像装置、右側の撮像装置を副撮像装置とするが、主・副の関係はこの限りでないことは言うまでも無い。
【００１４】
図２、図３は、それぞれ情報処理装置２０１と情報処理装置３０１の機能構成を示すブロック図である。説明のため、以下では主撮像装置１０１Ｌに接続された情報処理装置２０１を主情報処理装置２０１と呼び、副撮像装置１０１Ｒに接続された情報処理装置３０１を副情報処理装置３０１と呼ぶことにする。
【００１５】
主情報処理装置２０１において、受信部２０３は、外部からの情報を受信する。ここでは、副情報処理装置３０１から、誤差検出状況などを受信する。受信された誤差検出状況は、誤差処理部２１０へ送られる。画像取り込み部２０４は、主撮像装置１０１Ｌが撮影した画像を取り込む。指標検出部２０５は、画像取り込み部２０４が取り込んだ画像中から指標を検出する。ここでいう指標とは、例えば、色や形あるいはＩＤや大きさなどの情報を定義した人為的マーカや、現実世界に存在する自然特徴などである。図４に、指標として利用可能な人為的マーカの一例を示す。図４に示されたマーカは、内部が４×４の小正方形でもって構成されていて、各小正方形は白か黒の何れかで塗りつぶされている。塗りつぶされた色によってビット値「０」若しくはビット値「１」を表しており、この組み合わせによって固有のＩＤ及び人為的マーカの物理的な大きさが定義される。検出した指標の情報は、位置姿勢計測部２０６に送られる。位置姿勢計測部２０６は、指標検出部２０５で検出された指標と主撮像装置１０１Ｌとの相対位置姿勢の算出や、情報蓄積部２０８に保持されている指標定義情報、または位置姿勢センサ１０３の値から主撮像装置１０１Ｌの位置姿勢を算出する。
【００１６】
内部パラメータ計測部２０７は、主撮像装置１０１Ｌの内部パラメータの計測を行う。計測結果は、情報蓄積部２０８または誤差検出部２０９に送られる。情報蓄積部２０８は、現実空間中の指標の位置姿勢を定義した指標定義情報、主撮像装置１０１Ｌの内部パラメータを保持している。指標定義情報、内部パラメータは、予め求めておく必要がある。指標定義情報の求め方として、指標を撮影した画像から、指標同士の相対位置姿勢をキャリブレーションする方法が提案されている（非特許文献１）。また、ここでいう内部パラメータとは、例えば、撮像装置の焦点距離、主点位置及び歪を意味している。このような内部パラメータは、指標が含まれる複数の撮影画像を使用し、既知の方法（エポピーラ方程式を導入するなど）を用いて算出される。誤差検出部２０９は、内部パラメータ計測部２０７で計測された実際の内部パラメータと情報蓄積部２０８に蓄積されていて適用中の内部パラメータとのずれを検出し、誤差発生を検出する。誤差検出部２０９の検出結果は、誤差処理部２１０及び送信部２１１へ送られる。
【００１７】
誤差処理部２１０は、誤差検出部２０９から送られてきたずれの情報や受信部２０３で受信した副情報処理装置３０１の誤差検出状況に基づいて校正処理（キャリブレーション処理ともいう）を決定し、実行する。送信部２１１は、外部へ情報を送信する。ここでは、位置姿勢計測部２０６で算出された主撮像装置１０１Ｌの位置姿勢、誤差検出部２０９における誤差検出状況などが副情報処理装置３０１へ送信される。仮想画像生成部２１２は、位置姿勢計測部２０６で計測された主撮像装置１０１Ｌの位置姿勢を視点として仮想画像（ＣＧ）を生成する。画像合成部２１３は、画像取り込み部２０４で取り込んだ画像と仮想画像生成部２１２で生成した仮想画像を合成して合成画像を作成し、表示部１０２Ｌに送信する。表示部１０２Ｌは、合成画像を表示する。
【００１８】
次に、図３により副情報処理装置３０１について説明する。
副撮像装置１０１Ｒは、主撮像装置１０１Ｌと同様に、現実世界を撮影する。受信部３０２は、外部からの情報を受信する。ここでは、主情報処理装置２０１の送信部２１１から送信された、主撮像装置１０１Ｌの位置姿勢や誤差検出部２０９による誤差検出状況などが受信される。位置姿勢や誤差検出状況は、位置姿勢計測部３０５に送られる。画像取り込み部３０３は、副撮像装置１０１Ｒが撮影した画像を取り込む。指標検出部３０４は、画像取り込み部３０３が取り込んだ画像中から指標（例えば図４に示したような人為マーカ）を検出する。検出した指標の情報は、位置姿勢計測部３０５に送られる。位置姿勢計測部３０５は、既に情報蓄積部３０７に蓄積されている撮像装置間の位置姿勢（装置間位置姿勢情報）と受信部３０２で受信した主撮像装置１０１Ｌの位置姿勢とから、副撮像装置１０１Ｒの位置姿勢を算出する。また、位置姿勢計測部３０５は、必要に応じて、指標検出部３０４で検出された指標と副撮像装置１０１Ｒとの相対位置姿勢を算出し、これと受信部３０２で受信した主撮像装置１０１Ｌの位置姿勢から撮像装置間の位置姿勢の算出も行う。これらの算出結果は、情報蓄積部３０７、誤差検出部３０８、仮想画像生成部３１１のいずれかに送られる。
【００１９】
内部パラメータ計測部３０６は、副撮像装置１０１Ｒの内部パラメータの計測を行う。計測結果は、情報蓄積部３０７または誤差検出部３０８へ送られる。情報蓄積部３０７は、指標の現実空間中での位置姿勢を定義した指標定義情報や、内部パラメータ及び撮像装置間の位置姿勢（装置間位置姿勢情報）を蓄積している。なお、定義情報は、情報蓄積部２０８において上述したのと同様な方法で、予め作成しておく必要がある。誤差検出部３０８は、内部パラメータ計測部３０６または位置姿勢計測部３０５から送られてきた内部パラメータまたは撮像装置間位置姿勢と、情報蓄積部３０７で保持されている適用中の内部パラメータまたは撮像装置間位置姿勢の値とのずれを算出する。そして、誤差検出部３０８は、そのずれから誤差が発生したか否かを判断する。誤差検出部３０８の判定結果は誤差処理部３０９、送信部３１０へ送られる。
【００２０】
誤差処理部３０９は、誤差検出部３０８から送られてきたずれの情報や受信部３０２で受信した主情報処理装置２０１の誤差検出状況から実行すべきキャリブレーション処理等を決定し、実行する。送信部３１０は、外部へ情報を送信する。ここでは、主情報処理装置２０１へ誤差発生状況などを送信する。仮想画像生成部３１１は、位置姿勢計測部３０５で計測された副撮像装置１０１Ｒの位置姿勢を視点として仮想画像（ＣＧ）を生成する。画像合成部３１２は、画像取り込み部３０３で取り込んだ画像と仮想画像生成部３１１で生成した仮想画像を合成して合成画像を作成し、表示部１０２Ｒに送信する。表示部１０２Ｒは、合成画像を表示する。
【００２１】
なお、図２、図３では主撮像装置１０１Ｌ及び副撮像装置１０１Ｒがそれぞれ主情報処理装置２０１、副情報処理装置３０１といった別々の情報処理装置に接続されているが、これに限られるものではない。例えば、主撮像装置１０１Ｌ及び副撮像装置１０１Ｒが同一の情報処理装置に接続されていても良い。同一の情報処理装置に接続する構成の場合、この情報処理装置は、主情報処理装置２０１及び副情報処理装置３０１の両方の機能を備えることになる。また、位置姿勢や誤差検出状況などは、送受信するのではなく、情報蓄積部を使用して共有しても良い。また、主撮像装置１０１Ｌと副撮像装置１０１Ｒの区別は、デバイス名などの識別情報を利用して識別してもよいし、接続端子によって識別してもよい。
【００２２】
図１の（ｂ）は、上述した情報処理装置２０１、３０１に適用可能なコンピュータのハードウェア構成例を示すブロック図である。図１の（ｂ）において、ＣＰＵ１２１は、ＲＡＭ１２２やＲＯＭ１２３に格納されているプログラムやデータを用いて本コンピュータ全体の制御を行うと共に、本コンピュータが行う後述の各処理を実行する。ＲＡＭ１２２は、外部記憶装置１２６からロードされたプログラムやデータを一時的に記憶するためのエリアを有する。また、ＲＡＭ１２２は、Ｉ／Ｆ（インターフェース）１２７を介して外部（本実施形態の場合には撮像装置）から取得したデータ（本実施形態の場合には撮像装置の位置姿勢や誤差検出状況）や指標に関する情報を一時的に記憶するためのエリアを有する。更にＲＡＭ１２２は、ＣＰＵ１２１が各種の処理を実行する際に用いるワークエリアを有する。このように、ＲＡＭ１２２は、各種の用途に応じて適宜エリアを提供することができる。ＲＯＭ１２３は、本コンピュータの設定データやブートプログラムなどを格納する。
【００２３】
操作部１２４は、キーボードやマウスなどにより構成されており、本コンピュータの操作者が操作することで、各種の指示をＣＰＵ１２１に対して入力することができる。表示部１２５は、ＣＲＴや液晶画面等により構成されており、ＣＰＵ１２１による処理結果を画像や文字などでもって表示することができる。本実施形態では、表示部１２５は、図２、図３における表示部１０２Ｌ、１０２Ｒで代用してもよい。
【００２４】
外部記憶装置１２６は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。ここにはＯＳ（オペレーティングシステム）や、ＲＡＭ１２２が保持する各種の情報（データ）、本コンピュータが行う後述の各処理をＣＰＵ１２１に実行させるためのプログラムやデータが保存されている。プログラムには、立体視を実現するためのコンピュータプログラムが含まれる。立体視を実現するためのコンピュータプログラムとは、例えば、
・撮像装置１０１Ｌ及び副撮像装置１０１Ｒの位置姿勢を算出するためのプログラム、
・内部パラメータや撮像装置間パラメータを算出するためのプログラム、
・誤差検出や誤差検出後の処理を実行するプログラム、
・プログラムによって算出された値を用いてＣＧを描画するプログラムである。
これらのコンピュータプログラムやデータはＣＰＵ１２１による制御に従って、コンピュータ読み取り可能な記憶媒体から適宜ＲＡＭ１２２にロードされる。そしてＣＰＵ１２１はこのロードされたプログラムやデータを用いて処理を実行する。主撮像装置１０１Ｌ及び副撮像装置１０１Ｒが同一の情報処理装置に接続している場合には、位置姿勢情報や誤差検出状況などの情報がこの外部記憶装置１２６を介して共有される。以上のように、後述する各動作は、ＣＤ−ＲＯＭ，ＤＶＤ，フラッシュメモリ等のコンピュータ読み取り可能な記憶媒体に格納されたプログラムをＣＰＵ１２１が実行することにより実行されるものである。
【００２５】
Ｉ／Ｆ１２７は、本実施形態の場合には、撮像装置を本情報処理装置に接続するためのインターフェースや、外部とのネットワーク接続するためのインターフェースとして機能するものである。例えば、撮像装置（１０１Ｌ，１０１Ｒ）が撮像した画像は、このＩ／Ｆ１２７を介して本コンピュータのＲＡＭ１２２や外部記憶装置１２６に入力される。また、主撮像装置１０１Ｌ及び副撮像装置１０１Ｒが別々の情報処理装置（２０１，３０１）に接続されている場合には、位置姿勢情報や誤差検出状況などの情報がこのＩ／Ｆ１２７を介して送受信される。また、表示部１０２Ｌ，１０２Ｒを駆動するための信号も、このＩ／Ｆ１２７を介して送信される。１２８は上述の各部を繋ぐバスである。
【００２６】
なお、本実施形態に係る情報処理装置２０１、３０１に適用可能なコンピュータのハードウェア構成については同図に示した構成に限定するものではなく、情報処理装置２０１、３０１が行う後述の各処理を実行可能な構成であれば良い。
【００２７】
以上のような構成を備えた本実施形態のシステムによる、撮像装置の内部パラメータや撮像装置間の相対位置姿勢が変化した場合に、観察者への悪影響を防ぐための処理を、図５のフローチャートを用いて説明する。なお、図５において、縦の点線よりも左側のフローチャートは主情報処理装置２０１の処理フローを示しており、右側のフローチャートは副情報処理装置３０１の処理フローを示している。以下に説明する処理は、情報蓄積部２０８，３０７において保持されている情報（内部パラメータや装置間位置姿勢情報）の正当性を判断し、正当でないと判定された場合にキャリブレーション処理を実行するものである。以下に説明する処理は、装置の起動時に実行されるものとする。もちろん、製造時にもしくはユーザにより設定された時間間隔で繰り返し実行されるようにしてもよい。
【００２８】
まず、主情報処理装置２０１の処理を説明する。ステップ５０１において、内部パラメータ計測部２０７は、主撮像装置１０１Ｌが撮影した画像を用いて内部パラメータを計測する。ステップ５０２において、誤差検出部２０９は、ステップ５０１で計測した内部パラメータの値（実際の値）と、情報蓄積部２０８に蓄積されている現在適用中の内部パラメータの値とを比較する。そして、例えば、両内部パラメータの差を算出し、その差が所定値を越える場合に、両者にずれがあると判定する。ステップ５０３において、ステップ５０２での比較の結果、内部パラメータの値にずれがなかった場合には、処理はステップ５０４に進む。
【００２９】
ステップ５０４おいて、誤差検出部２０９は、誤差が発生していない旨のメッセージを送信部２１１を介して副情報処理装置３０１に送信する。ステップ５０５において、位置姿勢計測部２０６は、主撮像装置１０１Ｌの位置姿勢を計測する。位置姿勢の計測方法としては、指標検出部２０５で検出した指標の画像上での位置と指標に付加された指標自身の大きさから、当該指標と主撮像装置１０１Ｌの相対位置姿勢を算出することが挙げられる。ステップ５０６において、位置姿勢計測部２０６は、ステップ５０５で計測した当該指標と主撮像装置１０１Ｌの相対位置姿勢を、送信部２１１を介して副情報処理装置３０１へ送信する。
【００３０】
一方、ステップ５０２での比較の結果、ずれが検出された場合には、処理はステップ５０３からステップ５０７に進む。ステップ５０７において、誤差検出部２０９は、主撮像装置１０１Ｌの内部パラメータに誤差が発生した旨を、送信部２１１を介して副情報処理装置３０１へ送信する。ステップ５０８において、誤差処理部２１０は、実行すべき誤差発生時の処理を決定し、ステップ５０９においてその処理を実行する。
【００３１】
次に、副情報処理装置３０１の処理を説明する。
ステップ５１０において、内部パラメータ計測部３０６は、副撮像装置１０１Ｒの内部パラメータを計測する。ステップ５１１において、誤差検出部３０８は、ステップ５１０で計測した内部パラメータの値（実際の値）と情報格納部３０７に蓄積されている適用中の内部パラメータの値とのずれを算出する。算出した結果は、誤差処理部３０９に送られる。
【００３２】
主情報処理装置２０１から、内部パラメータに誤差が発生していない旨のメッセージが受信された場合は、その旨が誤差処理部３０９に通知される（ステップ５１２）。また、主情報処理装置２０１から主撮像装置１０１Ｌの位置姿勢を受信した場合（ステップ５１３）は、位置姿勢計測部３０５が主撮像装置１０１Ｌと副撮像装置１０１Ｒの相対位置姿勢である撮像装置間位置姿勢を計測する（ステップ５１４）。撮像装置間位置姿勢の計測方法は、次のとおりである。すなわち、位置姿勢計測部３０５は、指標検出部３０４で検出した指標の画像上での位置と当該指標自身の大きさを画像から読み取り、これらの情報から当該指標と副撮像装置１０１Ｒとの相対位置姿勢を算出する。そして、位置姿勢計測部３０５は、この算出結果とステップ５１３において受信した主撮像装置１０１Ｌの位置姿勢から、撮像装置間位置姿勢を算出する。そして、誤差検出部３０８は、ステップ５１４で計測した撮像装置間位置姿勢の値（実際の値）と情報蓄積部３０７に蓄積されている現在適用中の撮像装置間位置姿勢の値とを比較する。比較においては、例えば、ステップ５１４で計測した撮像装置間位置姿勢の値と情報蓄積部３０７に蓄積されている撮像装置間位置姿勢の値との差が所定値を越えたか否かによりずれの有無が検出される。誤差検出部３０８は、この比較の結果、つまり、撮像装置間位置姿勢にずれがあるか否かの結果を誤差処理部３０９へ送る。また、受信部２０３は、主情報処理装置２０１から内部パラメータに誤差が発生した旨のメッセージを受信すると、これを誤差処理部３０９へ通知する（ステップ５１６）。
【００３３】
ステップ５１７において、誤差処理部３０９は、ステップ５１１、ステップ５１２、ステップ５１５、ステップ５１６にて得られた誤差発生有無の情報から、誤差発生時の処理を実行するか否かを判定する。誤差発生時の処理を実行すると判定された場合、誤差処理部３０９は、ステップ５１８において、実行する処理を決定する。実行する処理については後述する。ステップ５１９において、ステップ５１８で決定された処理を誤差処理部２１０が実行する。例えば、主撮像装置１０１Ｌにおいて内部パラメータのずれが検出された場合は、ステップ５０８，５１８において、内部パラメータと装置間位置姿勢情報を校正する処理（例えば図６の（ａ））の実行が決定される。また、副撮像装置１０１Ｒの内部パラメータのみにずれが検出された場合は、ステップ５１８で副撮像装置１０１Ｒの内部パラメータと装置間位置姿勢情報を校正する処理の実行が決定される。また、装置間位置姿勢情報のずれのみが検出された場合には、ステップ５１８で装置間位置姿勢情報の校正処理のみを行うように決定される（例えば図６の（ｂ））。
【００３４】
図６の（ａ）に示すフローチャートを用いて、主情報処理装置２０１（ステップ５０９）及び副撮像装置３０１（ステップ５１９）にて実行される処理を説明する。図６の（ａ）は、主撮像装置１０１Ｌの内部パラメータにずれを検出した場合に（ステップ５０３でＹＥＳ）、主情報処理装置２０１及び副情報処理装置３０１で実行される処理である。また、
・ステップ５０３で主撮像装置１０１Ｌの内部パラメータについてずれが検出されず、
・ステップ５１１または５１５で、副撮像装置１０１Ｒの内部パラメータあるいは撮像装置間位置姿勢にずれが検出された場合、には副情報処理装置３０１のみに図６の（ａ）に示す処理が実行される。
【００３５】
ステップ６０１において、誤差処理部２１０，３０９は、内部パラメータ計測部２０７、３０６に、内部パラメータを計測させる。ステップ５０１，５１０における内部パラメータの計測結果をそのまま用いてもよい。次に、ステップ６０２において、誤差処理部２１０，３０９は、情報蓄積部２０８，３０７に蓄積されている現在適用中の内部パラメータをステップ６０１で取得された値に置き換え、適用する。誤差処理部２１０による処理はここまでであり、以下のステップ６０３，６０４の処理は誤差処理部３０９のみが行う。
【００３６】
ステップ６０３において、誤差処理部３０９は、位置姿勢計測部３０５に、撮像装置間位置姿勢を計測させる。ステップ５１４での計測結果をそのまま用いても良い。撮像装置間位置姿勢の計測方法は、ステップ５１４で上述したとおりである。次に、ステップ６０４において、誤差処理部３０９は、情報蓄積部３０７に蓄積されている現在適用中の撮像装置間位置姿勢をステップ５０３で取得された値に置き換え、適用する。
【００３７】
また、ステップ５０２，５１１における内部パラメータの比較でずれは検出されず、撮像装置間位置姿勢にのみずれを検出した場合には（ステップ５１５）、誤差処理部３０９が図６の（ｂ）で示した処理を実行するようにしてもよい。すなわち、ステップ６２１において、誤差処理部３０９は位置姿勢計測部３０５に、撮像装置間位置姿勢の計測を行わせる。ステップ５１４の計測結果を用いてもよい。そして、ステップ６２２において、誤差処理部３０９は、情報蓄積部３０７に蓄積されている現在適用中の撮像装置間位置姿勢をステップ６２１で取得された値に置き換え、適用する。
【００３８】
そのほか、ステップ５０９，５１９において、誤差処理部２１０，３０９は、図７に示すような警告を表示するようにしてもよい。警告の表示は、図６の（ａ），（ｂ）で説明した処理の前あるいは後のいずれで実施されてもよい。或いは、ブザーや音声などにより警告をユーザに通知するようにしてもよい。また、図６の（ａ），（ｂ）の処理を実施せず、警告を表示した後に立体視を実現するためのプログラムの一部あるいは全てを強制的に終了するようにしてもよい。これらのいずれの処理を実行させるかを、ユーザが予め誤差発生時の処理として設定しておくようにしてもよい。
【００３９】
［第２実施形態］
図８のフローチャートを用いて、本発明の第２実施形態を説明する。第２実施形態では、装置間位置姿勢情報にずれが発生したことの検出により、キャリブレーション処理の実行を決定する。図８において、フローチャートの縦の点線よりも左側は主情報処理装置２０１の処理フローを示しており、右側は副撮像装置３０１の処理フローを示している。なお、システム構成、主情報処理装置２０１及び吹く情報処理装置３０１の構成については第１実施形態（図１〜図３）と同様の構成を採用できるので、ここでは説明を省略する。
【００４０】
ステップ８０１において、位置姿勢計測部２０６は、主撮像装置１０１Ｌの位置姿勢を計測する。計測方法は、次のとおりである。まず、位置姿勢計測部２０６は、指標検出部２０５で検出した指標の画像上での位置と指標に付加された指標自身の大きさから、当該指標と主撮像装置１０１Ｌとの相対位置姿勢を算出する。そして、位置姿勢計測部２０６は、この相対位置姿勢と、蓄積部２０８に蓄積されている指標定義情報から主撮像装置１０１Ｌの位置姿勢を算出する。
【００４１】
ステップ８０２において、位置姿勢計測部２０６は、ステップ８０１で計測した結果を送信部２１１を介して副情報処理装置３０１へ送信する。ステップ８０３において、副情報処理装置３０１の受信部３０２がこれを受信する。ステップ８０４において、位置姿勢計測部３０５は副撮像装置１０１Ｒの位置姿勢を計測する。ここで、副撮像装置１０１Ｒの位置姿勢は、ステップ８０３で主情報処理装置２０１から受信した主撮像装置１０１Ｌの位置姿勢と、情報蓄積部３０７に蓄積されている撮像装置間位置姿勢から算出される。ステップ８０５において、仮想画像生成部３１１は、副撮像装置１０１Ｒの位置姿勢から指標検出部３０４で検出した指標を投影面に投影し、投影面上での指標位置（投影指標位置）を算出する。ステップ８０６において、誤差検出部３０８は、ステップ８０５で算出した指標投影位置と副撮像装置３０１が撮影した実写画像上の指標の位置の値を比較する。なお、撮像画像上の指標の実写画像の位置は指標検出部３０４により検出される。
【００４２】
誤差検出部３０８は、ステップ８０６での指標位置比較の結果、指標投影位置と実写画像上の指標の位置にずれがなかった場合には、誤差が発生していない旨のメッセージを送信部３１０を介して主情報処理装置２０１に送信する（ステップ８０７，８０８）。そして、副情報処理装置３０１側でのパラメータ修正に関わる処理は終了となる。他方、ステップ８０６での指標位置比較の結果、投影指標位置と実写画像の指標位置にずれがあった場合には、誤差検出部３０８は誤差が発生した旨のメッセージを送信部３１０を介して主情報処理装置２０１に送信する（ステップ８０７，８０９）。ステップ８１０において、誤差処理部３０９は、副情報処理装置３０１での誤差発生時の処理を決定し、ステップ８１１において決定された処理を実行する。実行される処理については図９のフローチャートにより後述する。
【００４３】
主情報処理装置２０１の受信部２０３が、副情報処理装置３０１から誤差が発生していない旨のメッセージを受信した場合には（ステップ８１２）、そのまま主情報処理装置２０１でのパラメータ修正に関わる処理が終了となる。主情報処理装置２０１の受信部２０３が、副情報処理装置３０１から誤差が発生した旨のメッセージを受信した場合には、処理はステップ８１３からステップ８１４に進む。ステップ８１４において、誤差処理部２１０は、主情報処理装置２０１での誤差発生時の処理を決定し、ステップ８１５において処理を実行する。
【００４４】
次に、図９のフローチャートを用いて、誤差発生時に実行されるキャリブレーション処理を説明する。フローチャートの縦の点線よりも左側は主情報処理装置２０１の処理フロー（ステップ８１５）を示しており、右側は副情報処理装置３０１の処理フロー（ステップ８１１）を示している。第２実施形態のキャリブレーション処理では、装置間位置姿勢情報が校正され、内部パラメータの校正は必要に応じて（校正後の装置間位置姿勢情報の検証結果に応じて）実行される。
【００４５】
ステップ９０１において、副情報処理装置３０１の誤差処理部３０９は、位置姿勢計測部３０５に撮像装置間位置姿勢を計測させる。撮像装置間位置姿勢の計測方法については、上述したとおりである。ステップ９０２において、誤差処理部３０９は、ステップ９０１での計測結果を検証する。検証方法としては、例えば、図８のフローチャートで説明したのと同様の方法を用いることができる。すなわち、誤差処理部３０９は、誤差検出部３０８に、ステップ９０１で得られた撮像間位置姿勢を用いて取得される投影指標の位置と実写中の指標の位置とを比較させる。そして、誤差処理部３０９はその比較の結果からずれが発生したか否かを判断し、ステップ９０１で計測した撮像装置間位置姿勢の値が正しいか否かを検証する。
【００４６】
検証の結果、正しいと判断された場合には、誤差処理部３０９は、蓄積部３０７に蓄積されている現在適用中の撮像装置間位置姿勢をステップ９０１で計測された値に置き換え、適用する（ステップ９０３，９０４）。そして、ステップ８１１における誤差発生時の処理を終了する。他方、検証の結果、正しくないと判断された場合には、誤差処理部３０９は撮像装置間位置姿勢が正しくない旨のメッセージを主情報処理装置２０１へ送信する（ステップ９０３，９０５）。そして、ステップ９０６において、誤差処理部３０９は、内部パラメータ計測部３０６に副撮像装置３０１の内部パラメータを計測させ、計測された内部パラメータで情報蓄積部３０７を更新する。
【００４７】
一方、主情報処理装置２０１の誤差処理部２１０は、ステップ９０７において、副情報処理装置３０１から撮像装置間位置姿勢が正しくない旨のメッセージを受信すると、ステップ９０８〜９１０の処理を実行する。ステップ９０８において、誤差処理部２１０は、内部パラメータ計測部２０７に主撮像装置１０１Ｌの内部パラメータを計測させ、計測された内部パラメータで情報蓄積部２０８を更新する。ステップ９０９において、誤差処理部２１０は、位置姿勢計測部２０６に、主撮像装置１０１Ｌの位置姿勢を計測させる。そして、ステップ９１０において、誤差処理部２１０は、ステップ９０９で計測された位置姿勢を副情報処理装置３０１に、送信部３１０を介して送信する。
【００４８】
副情報処理装置３０１の誤差処理部３０９は、受信部３０２が主情報処理装置２０１から主撮像装置１０１Ｌの位置姿勢を受信すると、処理をステップ１１０１に戻し、撮像装置間位置姿勢の計測を実施する（ステップ９１１）。その後、上述したステップ９０１〜処理が再度、繰り返される。
【００４９】
なお、誤差発生時に実行される処理は、図６の（ａ），（ｂ）に示した処理であってもよい。そのほか、第１実施形態と同様に、図７に示すような警告を表示してもよい。また、警告の表示は、図６の（ａ）、（ｂ）図９で説明した処理の前あるいは後に実施されてもよい。また、図６の（ａ）,（ｂ）や図９の処理を実施せず、警告を表示した後に立体視を実現するためのプログラムの一部あるいは全てを強制的に終了してもよい。
【００５０】
［第３実施形態］
第３実施形態では、装置間位置姿勢情報や内部パラメータの正当性を、各撮像装置から得られた画像に含まれるエッジを利用して判断する。以下、図１０のフローチャートを用いて、第３実施形態について説明する。フローチャートの縦の点線よりも左側は主情報処理装置２０１の処理フローを示しており、右側は副撮像装置３０１の処理フローを示している。
【００５１】
ステップ１００１及び１００２において、主情報処理装置２０１の誤差検出部２０９及び副情報処理装置３０１の誤差検出部３０８は、主撮像装置１０１Ｌ及び副撮像装置１０１Ｒが撮影したそれぞれの画像から、エッジを抽出する。なお、エッジは、画像中の濃度が急激に変わる点などとする。ステップ１００３において、副情報処理装置３０１の誤差検出部３０８は抽出したエッジ情報を主情報処理装置２０１へ送信する。
【００５２】
ステップ１００４において、主情報処理装置２０１の誤差検出部２０９は副情報処理装置３０１からエッジ情報を受信し、自身が抽出したエッジとの対応付けを行う。ステップ１００５において、誤差検出部２０９は、ステップ１００４で対応付けしたそれぞれのエッジが互いに平行か否かを検証する。それぞれのエッジが平行であると判断された場合には、誤差検出部２０９は誤差が発生していない旨のメッセージを副情報処理装置３０１へ送信し、処理を終える（ステップ１００６，１００７）。他方、平行でないと判断された場合には、誤差検出部２０９は、誤差が発生している旨のメッセージを副情報処理装置３０１へ送信し、処理をステップ１００９へ進める（ステップ１００６，１００８）。ステップ１００９において、誤差処理部２１０は誤差発生時のキャリブレーション処理を決定し、ステップ１０１０において、処理を実行する。
【００５３】
副情報処理装置３０１の誤差検出部３０８が、誤差が発生していない旨のメッセージを主情報処理装置２０１から受信した場合には、副情報処理装置３０１での処理は終了となる（ステップ１０１１）。誤差検出部３０８が、誤差が発生している旨のメッセージを受信した場合には、処理をステップ１０１３に進める（ステップ１０１２）。ステップ１０１３において、誤差処理部３０９は、誤差発生時の処理を決定し、ステップ１０１４において、処理を実行する。なお、誤差発生時に実行する処理は、第１、第２実施形態により上述したとおりである。また、第３実施形態では、主情報処理装置２０１においてエッジが平行か否かを判断するようにしたが、副情報処理装置３０１においてエッジが平行か否かを判断するようにしてもよい。
【００５４】
［第４実施形態］
図１１、図１２は、第４実施形態による情報処理装置の構成を示すブロック図である。図１１は、主撮像装置１０１Ｌに接続された主情報処理装置２０１の構成を、図１２は副撮像装置１０１Ｒに接続された副情報処理装置３０１の構成を示す。第４実施形態では、通信の方向が主情報処理装置２０１から副情報処理装置３０１のみとなっている。
【００５５】
情報蓄積部１１０８では、現実空間中の指標の位置姿勢を定義した指標定義情報を保持している。この定義情報は、予め作成しておく必要がある。作成方法としては、例えば、指標の位置姿勢を手作業で計測して作成しても良いし、あるいは、指標を含んだ画像をカメラで撮影し、撮影画像から三次元復元を行って作成しても良い。位置姿勢算出部１１０６は、位置姿勢センサ１０３から取得した位置姿勢情報から主撮像装置１０１Ｌの位置姿勢を算出する。あるいは、指標検出部２０５で検出された指標と情報蓄積部１１０８に保持されている指標定義情報から位置姿勢を算出する。あるいは、これらを併用して位置姿勢を算出する。送信部２１１は、位置姿勢算出部１１０６で算出された主撮像装置１０１Ｌの位置姿勢を副情報処理装置３０１の受信部３０２に送信する。
【００５６】
投影指標位置算出部１１０７は、指標検出部２０５で検出された指標を、位置姿勢算出部１１０６で算出された主撮像装置１０１Ｌの位置姿勢と情報蓄積部１１０８に保持されている指標定義情報とに基づいて撮影画像上に投影し、画像上での位置を算出する。誤差検出／処理部１１０９は、撮影画像中の指標と投影指標の画像上の位置の誤差を検出し、（所定量を超える）誤差が検出された場合には、事前にユーザによって設定された処理を実行する。本例では、“キャリブレーションの自動実行”、“警告を表示して強制的に終了”、“警告の表示のみ”のいずれかに設定されるものとする（詳細は後述する）。投影指標描画部１１１２は、投影指標位置算出部１１０７で算出した撮影画像上の位置に投影指標を描画する。画像合成部１１１３は、画像取り込み部２０４で取り込んだ画像と投影指標描画部１１１２で描画した投影指標とを合成した合成画像を作成し、表示部１０２Ｌに送信する。表示部１０２Ｌは、合成画像を表示する。
【００５７】
次に、図１２により第４実施形態の副情報処理装置３０１について説明する。
受信部３０２は、本実施形態では、送信部２１１から送信された主撮像装置１０１Ｌの位置姿勢を受信し、位置姿勢算出部１２０５に送信する。情報蓄積部１２０７は、指標の現実空間中での位置姿勢を定義した指標定義情報や、主撮像装置１０１Ｌと副撮像装置１０１Ｒの位置姿勢関係を保持している。この定義情報は、上述したのと同様な方法で、予め作成しておく必要がある。位置姿勢算出部１２０５は、受信部３０２で受信した主撮像装置１０１Ｌの位置姿勢と、情報蓄積部１２０７に保持されている主撮像装置１０１Ｌと副撮像装置１０１Ｒとの位置姿勢関係を用いて、副撮像装置１０１Ｒの位置姿勢を算出する。
【００５８】
投影指標位置算出部１２０６は、位置姿勢算出部１２０５で算出された副撮像装置１０１Ｒの位置姿勢と情報蓄積部１２０７に保持されている指標定義情報とに基づき、指標検出部３０４で検出された指標を撮影画像上に投影し、画像上での位置を算出する。誤差検出／処理部１２０８は、撮影画像中の指標と投影指標の画像上の位置の誤差を検出する。投影指標描画部１２１１は、投影指標位置算出部１２０６で算出した撮影画像上の位置に投影指標を描画する。画像合成部１２１２は、画像取り込み部３０３で取り込んだ画像と投影指標描画部１２１１で描画した投影指標を合成した合成画像を作成し、表示部１０２Ｒに送信する。表示部１０２Ｒは、合成画像を表示する。
【００５９】
なお、図１１、図１２では主撮像装置１０１Ｌ及び副撮像装置１０１Ｒがそれぞれ主情報処理装置２０１、副情報処理装置３０１といった別々の情報処理装置に接続されているが、これに限られるものではない。例えば、主撮像装置１０１Ｌ及び副撮像装置１０１Ｒが同一の情報処理装置に接続されていても良いことは第１実施形態で説明したとおりである。また、上述の主情報処理装置２０１、副情報処理装置３０１に適用可能なコンピュータのハードウェア構成は、図１の（ｂ）により説明したとおりである。
【００６０】
次に、図１３のフローチャートを用いて、第４実施形態の処理を説明する。まず、主情報処理装置２０１における動作を説明する。ステップ１３０１において、誤差検出／処理部１１０９は、位置姿勢計測部２０６で算出された主撮像装置１０１Ｌの位置姿勢と実際の位置姿勢との間に誤差が発生したときに実行する処理を設定する。実行する処理は、“キャリブレーションの自動実行”、“警告を表示して強制的に終了”、“警告の表示のみ”のいずれかである。なお、誤差検出／処理部１１０９は設定された処理を副情報処理装置３０１へ送信部２１１を介して送信する。これは、主情報処理装置２０１と副情報処理装置３０１において誤差発生時の処理を一致させるためである。ステップ１３０２において、画像取り込み部２０４は、主撮像装置１０１Ｌを用いて現実空間を撮影することにより得られた画像を取り込む。ステップ１３０３において、指標検出部２０５は画像取り込み部２０４によって取り込まれた画像から指標を検出し、位置姿勢算出部１１０６は指標検出部２０５が検出した指標の画像における位置等に基づいて主撮像装置１０１Ｌの位置を算出する。位置姿勢算出部１１０６は、算出した位置姿勢を送信部２１１を介して副情報処理装置３０１に送信する。
【００６１】
ステップ１３０４において、投影指標位置算出部１１０７は、指標検出部２０５で検出された指標を、位置姿勢算出部１１０６で算出された主撮像装置１０１Ｌの位置姿勢と情報蓄積部１１０８に保持されている指標定義情報とに基づいて撮影画像上に投影する。そして、この投影指標の画像上での位置を算出する。投影指標描画部１１１２は、算出された投影指標の位置と当該指標の定義情報を用いて指標を描画する。そして、画像合成部１１１３は、投影指標描画部１１１２によって描画された投影指標の画像を撮像画像に合成し、表示部１０２Ｌに表示する。
【００６２】
ステップ１３０５において、誤差検出／処理部１１０９は、撮像画像中の指標の位置と投影指標の位置が一致しているか否かを判断する。図１４は画像合成部１１１３が、投影指標描画部１１１２により描画された投影指標の画像を撮像画像に合成して得られた合成画像の一例を示す図である。破線が投影指標、それ以外の部分が撮影画像である。図１４の（ａ）では、撮影画像中の指標の位置と投影指標の位置が一致しており、誤差が検出されないことを表している。一方、図１４の（ｂ）では、撮影画像中の指標の位置と投影指標の位置が一致していない。これは、位置姿勢算出部１１０６において算出した主撮像装置１０１Ｌの位置姿勢が実際の位置姿勢と一致していないことを表している。ステップ１３０５において、誤差検出／処理部１１０９は、撮影画像中の指標の位置と投影指標の位置が一致しているか否かを判断し、一致していると判断した場合には、処理をステップ１３０３に戻す。一方、ステップ１３０５において、撮影画像中の指標の位置と投影指標の位置が一致していないと判断された場合には、処理はステップ１３０６に進む。なお、撮影画像中の指標位置と投影指標の位置が一致するか否かは、指標検出部２０５が撮影画像から検出した指標の実写画像の位置と、投影指標位置算出部１１０７が算出した投影指標の位置との差が所定範囲内にあるかどうかで判断できる。
【００６３】
ステップ１３０６において、誤差検出／処理部１１０９は、ステップ１３０１で設定された誤差発生時の処理が、“キャリブレーションの自動実行”であるか否かを判定する。“キャリブレーションの自動実行”に設定されていた場合、誤差検出／処理部１１０９は、ステップ１３０７において、誤差検出／処理部１１０９はキャリブレーションを実行する。キャリブレーションの詳細については後述する。ステップ１３０８において、誤差検出／処理部１１０９は、ステップ１３０７で実行したキャリブレーションの結果を検証する。検証方法の一例としては、キャリブレーション結果を一時的に適用して、誤差検出までの処理（ステップ１３０２〜ステップ１３０４）を実施して、誤差が検出されないか否かを試すことが挙げられる。
【００６４】
ステップ１３０９において、検証の結果からキャリブレーションが有効であると判断された場合には、ステップ１３１０において、誤差検出／処理部１１０９はキャリブレーション結果を適用し、処理をステップ１３０２に戻す。一方、ステップ１３０９において、キャリブレーションが有効でないと判断された場合には、処理はステップ１３１１へ進む。
【００６５】
ステップ１３１１において、誤差検出部／処理部１１０９は、誤差発生時の処理として“警告を表示して強制的に終了”が設定されているか否かを判定する。“警告を表示して強制的に終了”が設定されている場合、誤差検出部／処理部１１０９は、ステップ１３１２において、図７に示したような警告を表示部１０２Ｌに表示させ、本処理を終了する。一方、ステップ６１２において、“警告を表示して強制的に終了”が設定されていないと判断された場合、つまり“警告のみを表示”であった場合には、処理はステップ１３１３に進む。ステップ１３１３において、誤差検出部／処理部１１０９は、図７に示すような警告を表示部１０２Ｌに表示させ、位置姿勢の算出を続行する。なお、ステップ１３０９のＮＯ分岐によってステップ１３１１に到達した場合には、ステップ１３１３に処理が進み、図７に示すような警告が表示部１０２Ｌに表示され、位置姿勢の算出は続行されることになる。
【００６６】
以上、図１３のフローチャートを用いて主情報処理装置２０１の処理を説明したが、副情報処理装置３０１の処理も同様である。すなわち、図１２において図１１と名称が一致する各部が、副撮像装置１０１Ｒに関して上述した処理を実行することになる。但し、ステップ１３０１において誤差検出／処理部１２０８は、主情報処理装置２０１より送信された処理を、誤差発生時の処理として設定する。また、ステップ１３０３において、位置姿勢算出部１２０５は、受信部３０２が受信した主撮像装置１０１Ｌの位置姿勢と、情報蓄積部１２０７にて保持されている主撮像装置と副撮像装置の位置姿勢関係とに基づいて副撮像装置１０１Ｒの位置姿勢を算出する。さらに、ステップ１３０４では、算出された副撮像装置１０１Ｒの位置姿勢と、情報蓄積部１２０７に保持されている指標定義情報とに基づいて撮影画像上に投影し、その画像上での位置を算出する。
【００６７】
次に、図６の（ａ）に示したフローチャートを流用することにより、第４実施形態のキャリブレーション（ステップ１３０７）のフローについて説明する。
【００６８】
ステップ６０１において、誤差検出／処理部１１０９，１２０８は、撮像装置（１０１Ｌ，１０１Ｒ）の内部パラメータを計算する。ここでいう内部パラメータとは、撮像装置の焦点距離、主点位置及び歪を意味している。このような内部パラメータは、指標が含まれる複数の撮影画像を使用し、既知の方法（エポピーラ方程式を導入するなど）を用いて算出される。そして、ステップ６０２において、誤差検出／処理部１１０９，１２０８は、算出された内部パラメータを適用する。誤差検出／処理部１１０９の処理はここまでである。
【００６９】
ステップ６０３において、誤差検出／処理部１２０８は、主撮像装置１０１Ｌと副撮像装置１０１Ｒとの撮像装置間位置姿勢を算出する。この撮像装置間位置姿勢は、
・副撮像装置１０１Ｒにより複数の撮影画像を取得するとともに、これらの撮影と同時点の主撮像装置１０１Ｌの位置姿勢を主情報処理装置２０１から取得し、
・主撮像装置１０１Ｌの位置姿勢を元に、副撮像装置１０１Ｒによる撮影画像中の指標と投影指標が一致するように計算を行う、ことにより算出される。
【００７０】
次に、図１５のフローチャートを用いて、キャリブレーション処理の別パターンを説明する。
ステップ１５０１において、誤差検出／処理部１２０８は、主撮像装置１０１Ｌと副撮像装置１０１Ｒとの間の位置姿勢関係（装置間位置姿勢）を計算する。位置姿勢関係の算出方法については、ステップ５１４（図５）等により上述したとおりである。次に、ステップ１５０２において、誤差検出／処理部１２０８は、主撮像装置１０１Ｌと副撮像装置１０１Ｒの位置姿勢関係の計算結果を検証する。検証方法としては、ステップ１３０８で説明したように、計算結果を一次的に適用し、誤差検出までの処理（ステップ１３０２〜ステップ１３０４）を実施して、誤差が検出されないか否かを試す方法が挙げられる。ステップ１５０３において、ステップ１５０１で算出された位置姿勢関係が有効であると判断された場合には、ステップ１５０４において、誤差検出／処理部１２０８はその計算結果を適用して、キャリブレーションを終了する。一方、ステップ１５０３において有効でないと判断された場合には、ステップ１５０５において、誤差検出／処理部１２０８は、内部パラメータがキャリブレーション済みかどうかを確認する。キャリブレーションが済んでいない場合、誤差検出／処理部１２０８は、ステップ１５０６において内部パラメータを計算し、ステップ１５０７において、内部パラメータ計算済みである旨を記録し、処理をステップ１５０１に戻す。一方、ステップ１５０５において、内部パラメータが計算済みであると確認された場合には、そのまま当該キャリブレーション処理を終了する。
【００７１】
図１６は、画像合成部１１１３及び画像合成部１２１２で作成した合成画像の一例を示す図である。図１６の（ａ）では、画像合成部１１１３及び画像合成部１２１２で作成した合成画像の両方共が、撮像画像中の指標と投影指標が一致していない場合を示している。この場合、カメラ内部パラメータが実際の値と異なっていることが考えられるため、図６の（ａ）に示したキャリブレーション処理が適している。また、図１６の（ｂ）は、画像合成部１２１２（副情報処理装置３０１）のみにおいて、撮像画像中の指標と投影指標が一致していない場合を示している。この場合、カメラ内部パラメータは正しく主撮像装置１０１Ｌと副撮像装置１０１Ｒの位置姿勢関係のみが実際の値と異なっていることが考えられるため、図１５に示したキャリブレーション処理が適している。よって、誤差検出／処理部１１０９，１２０８は、そのようにキャリブレーション処理を選択し、実行する。
【００７２】
［第５実施形態］
次に、第５実施形態のキャリブレーションに係わる処理を、図１７のフローチャートを用いて説明する。
【００７３】
ステップ１７０１において、誤差検出／処理部１１０９は、投影指標と撮影画像中の指標の誤差の許容範囲を設定する。許容範囲の指定方法としては、誤差を画素数で指定しても良いし、表示部１０２Ｌの総画素数に対する誤差の画素数の比で指定しても良い。これらの指定は、ユーザが不図示のユーザインターフェースを介して行うものとする。ステップ１７０２において、位置姿勢算出部１１０６は、主撮像装置１０１Ｌの位置を算出し、算出した位置姿勢を送信部２１１を介して副情報処理装置に３０１に送信する。この処理はステップ１３０３と同様である。
【００７４】
次に、ステップ１７０３において、投影指標位置算出部１１０７は、ステップ１７０２で取得した位置姿勢と、指標検出部２０５が検出した指標の指標定義情報（情報蓄積部１１０８に保持されている）とに基づいて、当該指標の投影位置を算出する。そして、投影指標描画部１１１２が、算出された位置と、指標定義情報とに基づいて投影指標を描画する。ステップ１４０５において、画像合成部１１１３は、投影指標と撮影画像を合成し、合成画像を作成する。
【００７５】
ステップ１４０６において、誤差検出／処理部１１０９は、合成画像から撮像画像中の指標と投影指標が一致しているか否かを判断する。すなわち、投影指標の投影位置と、指標検出部２０５により検出された撮影画像中における指標の位置とが一致するかどうかを判断する。投影指標と撮影画像中の指標が一致していると判断された場合には、処理をステップ１７０２に戻し、投影指標と撮影画像中の指標が一致していないと判断された場合には、処理をステップ１７０６に進める。ステップ１７０６において、誤差検出／処理部１１０９は、投影指標と撮影画像中の指標の誤差を算出し、算出した誤差がステップ１７０１で設定された許容範囲内か否かを判断する。許容範囲内と判断された場合には、処理はステップ１７０７に進む。許容範囲外と判断された場合には、処理はステップ１７１１に進み、図７に示したような警告を表示して処理を終了する。
【００７６】
ステップ１７０７において、誤差検出／処理部１１０９は、キャリブレーションを自動実行する。キャリブレーションの処理は、上述したとおりである。ステップ１７０８において、誤差検出／処理部１１０９は、キャリブレーション結果を検証する。検証方法についても上述したとおりである。検証の結果、キャリブレーション結果が有効であると判断された場合には、処理はステップ１７０９からステップ１７１０に進み、誤差検出／処理部１１０９は当該キャリブレーション結果を適用する。そして、処理はステップ１４０２に戻り、位置算出が続行される。一方、キャリブレーション結果が有効でないと判断された場合には、処理はステップ１７０９からステップ１７１１に進み、図７に示す如き警告を表示して、本処理を終了する。
【図１】
2010271950.tif 000003
【図２】
2010271950.tif 000004
【図３】
2010271950.tif 000005
【図４】
2010271950.tif 000006
【図５】
2010271950.tif 000007
【図６】
2010271950.tif 000008
【図７】
2010271950.tif 000009
【図８】
2010271950.tif 000010
【図９】
2010271950.tif 000011
【図１０】
2010271950.tif 000012
【図１１】
2010271950.tif 000013
【図１２】
2010271950.tif 000014
【図１３】
2010271950.tif 000015
【図１５】
2010271950.tif 000016
【図１７】
2010271950.tif 000017
【図１４】
2010271950.tif 000018
【図１６】
2010271950.tif 000019