情報処理装置及びキャリブレーション処理方法
【課題】カメラ内部パラメータやカメラ間の相対位置姿勢が変化した場合に、仮想現実空間の表示が観察者へ悪影響を及ぼすことを未然に防ぐことを可能とする。
【解決手段】
主撮像装置と副撮像装置により現実空間を撮影して得られた画像に仮想画像を合成して立体視のための画像を提供する情報処理装置は、主撮像装置の位置姿勢を計測し、保持部により保持されている装置間位置姿勢情報と計測された主撮像装置の位置姿勢とに基づいて副撮像装置の位置姿勢を算出し、計測された主撮像装置の位置姿勢と算出された副撮像装置の位置姿勢と保持されている主撮像装置及び副撮像装置の内部パラメータとを用いて、主、副撮像装置のそれぞれから得られた画像に仮想画像を合成する。情報処理装置は、主、副撮像装置により撮像された画像に基づいて、保持されている装置間位置姿勢情報や内部パラメータの情報の正当性を判断し、不当と判断した場合には保持されている情報を校正する。
【解決手段】
主撮像装置と副撮像装置により現実空間を撮影して得られた画像に仮想画像を合成して立体視のための画像を提供する情報処理装置は、主撮像装置の位置姿勢を計測し、保持部により保持されている装置間位置姿勢情報と計測された主撮像装置の位置姿勢とに基づいて副撮像装置の位置姿勢を算出し、計測された主撮像装置の位置姿勢と算出された副撮像装置の位置姿勢と保持されている主撮像装置及び副撮像装置の内部パラメータとを用いて、主、副撮像装置のそれぞれから得られた画像に仮想画像を合成する。情報処理装置は、主、副撮像装置により撮像された画像に基づいて、保持されている装置間位置姿勢情報や内部パラメータの情報の正当性を判断し、不当と判断した場合には保持されている情報を校正する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、カメラ内部パラメータやカメラ間の相対位置姿勢のキャリブレーションに関する。
【背景技術】
【0002】
従来より、仮想現実感(バーチャルリアリティ:VR)システムが知られている。このVRシステムでは、コンピュータにより作り出された三次元コンピュータグラフィックス(Computer Graphic:CG)映像をユーザに提示することにより、仮想空間をあたかも現実空間であるかのようにユーザに感じさせる。また近年では、現実空間の映像に三次元CGを合成することにより、現実空間にはない情報をユーザに提示する技術が開発されており、このような技術は、複合現実感(MixedReality:MR)システムと呼ばれている。このMRシステムは、現実空間と切り離された状況のみにおいて体験することが可能であった仮想空間と、現実空間との共存を目的とし、仮想空間を増強する技術として注目されている。
【0003】
上記のような仮想空間と現実空間とを共存させるためのシステム(VRシステム/MRシステム)を実現する代表的な装置として、ヘッドマウントディスプレイ(HMD)がある。VR/MRシステムにおいては、HMDに仮想空間や現実空間を表示することにより、HMDを装着したユーザに対して仮想空間および複合現実空間を提示することができる(特許文献1参照)。この種の装置では、ステレオビデオシースルーHMD(以下、単にHMDと呼称する)が用いられる。HMDは、眼鏡又はゴーグルに似た外観形状を有し、その内部には、例えばLCDで構成されている右眼用表示デバイスと、左眼用表示デバイスが配置されている。また、ステレオビデオ映像をHMDに装着したビデオカメラにより取得する場合には、例えばユーザ(装着者)の左右の視点位置の近傍位置に、それぞれ左眼用ステレオビデオカメラと右眼用ステレオビデオカメラとが設けられる。
【0004】
高品質な複合現実感を提供するためには、現実空間と仮想空間との位置合わせが高精度に行われる必要がある。上述のようなHMDを利用したシステムの場合には、右眼用ステレオビデオカメラと左眼用ステレオビデオカメラの両方の現実空間での位置姿勢をそれぞれ求め、それぞれの位置姿勢に基づいて三次元CGを描画し、現実空間の画像との合成が行われる。各カメラの位置姿勢は、各カメラに磁気や光学式センサなどを取り付け、これらのセンサの値から求めてもよい。しかし、センサの誤差などにより両カメラ間の相対位置姿勢が一定とならない場合が考えられ、これによって、装着者に不快感を与えてしまう危険性がある。これを回避する方法として、両カメラ間の相対位置姿勢を予め求めておいたものを利用する方法が有効である。この方法では、右眼用ステレオビデオカメラと左眼用ステレオカメラのどちらか一方を主カメラ、もう一方を副カメラと設定する。そして、主カメラだけにセンサを取り付けて位置姿勢を算出し、このセンサを利用して算出された位置姿勢と予め求めておいた両カメラ間の相対位置姿勢を用いて、副カメラの位置姿勢が算出される。
【0005】
また、HMDを利用したシステムに限らず、正確な位置合わせを行うためにも、カメラの内部パラメータを考慮することが必要である。ここでいう内部パラメータは、例えば、焦点距離、主点位置及びレンズ歪である。内部パラメータの算出に関しては、キャリブレーションパターンを用いた方法(特許文献2参照)や、動画像から求める方法(特許文献3参照)などが知られている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2002−159019号公報
【特許文献2】特開2005−017286号公報
【特許文献3】特開2000−268179号公報
【非特許文献】
【0007】
【非特許文献1】小竹, 内山, 山本:マーカ配置に関する先駆的知識を利用したマーカキャリブレーション方法,日本バーチャルリアリティ学会論文誌,vol.10, No.3, pp.401-410, 2005.
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述した両カメラ間の位置姿勢やカメラ内部パラメータは、各HMD固有のものである。そのため、HMDを使用するたびに必ずしも毎回求める必要はない。特に、日常的に使用する場合には、一度求めておいたのを再利用したほうが、効率がよい。しかし、不注意などからHMDを落下させてしまった場合や、そのほかの外的要因によって、カメラ内部パラメータや両カメラ間の相対位置姿勢が変化してしまう場合がある。このような場合には、もちろんこれらを求め直す必要がある。しかし、装着者のHMDあるいはMRに対する知識や経験のレベルによっては、この変化に気付かずに使用を続行してしまうことが考えられる。もし、この状態でHMDを装着して作業を続行した場合、正常な立体視ができないことで、装着者の身体に悪影響を及ぼしかねない。
【0009】
本発明は、上記したような課題に鑑みてなされたものであり、カメラ内部パラメータやカメラ間の相対位置姿勢が変化した場合に、仮想現実空間の表示が観察者へ悪影響を及ぼすことを未然に防ぐことを可能とすることを目的とする。
【課題を解決するための手段】
【0010】
上記の目的を達成するための本発明の一態様による情報処理装置は以下の構成を備える。すなわち、
第1の撮像装置と第2の撮像装置により現実空間を撮影して得られた画像に仮想画像を合成して立体視のための画像を提供する情報処理装置であって、
前記第1の撮像装置の位置姿勢を計測する計測手段と、
前記第1の撮像装置と前記第2の撮像装置との間の位置姿勢の関係を示す、保持手段に保持されている装置間位置姿勢情報と、前記計測手段により計測された前記第1の撮像装置の位置姿勢とに基づいて、前記第2の撮像装置の位置姿勢を算出する算出手段と、
前記計測手段で計測された前記第1の撮像装置の位置姿勢と、前記算出手段で算出された前記第2の撮像装置の位置姿勢と、前記保持手段に保持されている前記第1及び第2の撮像装置の内部パラメータとを用いて、前記第1及び第2の撮像装置のそれぞれから得られた画像に仮想画像を合成する合成手段と、
前記第1または第2の撮像装置により撮像された画像に基づいて、前記保持手段に保持されている前記装置間位置姿勢情報、前記第1の撮像装置の内部パラメータ及び前記第2の撮像装置の内部パラメータの少なくともいずれかの情報の正当性を判断する判断手段とを備える。
【発明の効果】
【0011】
本発明によれば、カメラ内部パラメータやカメラ間の相対位置姿勢が変化した場合に、仮想現実空間の表示が観察者へ悪影響を及ぼすことを未然に防ぐことが可能となる。
【図面の簡単な説明】
【0012】
【図1】ステレオビデオシースルーHMDによるシステムの説明図。
【図2】第1〜第3実施形態の主情報処理装置のブロック図。
【図3】第1〜第3実施形態の副情報処理装置のブロック図。
【図4】人為的マーカの一例を示す図。
【図5】第1実施形態のシステムによる処理を説明するフローチャート。
【図6】第1実施形態のキャリブレーション処理を示すフローチャート。
【図7】警告の表示例を示す図。
【図8】第2実施形態のシステムによる処理を説明するフローチャート。
【図9】第2実施形態のキャリブレーション処理を示すフローチャート。
【図10】第3実施形態のシステムによる処理を説明するフローチャート。
【図11】第4、第5実施形態の主情報処理装置のブロック図。
【図12】第4、第5実施形態の副情報処理装置のブロック図。
【図13】第4実施形態のシステムによる処理を説明するフローチャート。
【図14】第4実施形態における合成画像の一例を示す図。
【図15】第4実施形態のキャリブレーション処理を示すフローチャート。
【図16】第4実施形態の合成画像の一例を示す図。
【図17】第5実施形態のシステムによる処理を説明するフローチャート。
【発明を実施するための形態】
【0013】
[第1実施形態]
図1の(a)は、ユーザがステレオビデオシースルーHMD100(以下、単にHMD100と呼称する)を装着した状態を模式的に示す図である。HMD100は、眼鏡又はゴーグルに似た外観形状を有し、その内部には、例えばLCDで構成されている右眼用の表示部102Rと、左眼用の表示部102Lが配置されている。また、HMD100には、ステレオビデオ映像を取得するために、ユーザ(装着者)の左眼視点位置の近傍に左眼用ビデオカメラである第1の撮像装置としての主撮像装置101Lが設けられている。同様に、HMD100の左右眼視点位置の近傍には右眼用ビデオカメラである第2の撮像装置としての副撮像装置101Rが設けられている。主撮像装置101L,副撮像装置101Rは、例えば、CCDカメラなどで構成され、現実世界を撮影する。位置姿勢センサ103は、主撮像装置101Lの位置姿勢を検出するものであり、例えば、ジャイロセンサ、磁器センサなどで構成される。また、本実施形態のシステムは、主撮像装置101L、表示部102L及び位置姿勢センサ103と接続された情報処理装置201と、副撮像装置101R及び表示部102Rと接続された情報処理装置301とを有する。なお、以下では左側の撮像装置を主撮像装置、右側の撮像装置を副撮像装置とするが、主・副の関係はこの限りでないことは言うまでも無い。
【0014】
図2、図3は、それぞれ情報処理装置201と情報処理装置301の機能構成を示すブロック図である。説明のため、以下では主撮像装置101Lに接続された情報処理装置201を主情報処理装置201と呼び、副撮像装置101Rに接続された情報処理装置301を副情報処理装置301と呼ぶことにする。
【0015】
主情報処理装置201において、受信部203は、外部からの情報を受信する。ここでは、副情報処理装置301から、誤差検出状況などを受信する。受信された誤差検出状況は、誤差処理部210へ送られる。画像取り込み部204は、主撮像装置101Lが撮影した画像を取り込む。指標検出部205は、画像取り込み部204が取り込んだ画像中から指標を検出する。ここでいう指標とは、例えば、色や形あるいはIDや大きさなどの情報を定義した人為的マーカや、現実世界に存在する自然特徴などである。図4に、指標として利用可能な人為的マーカの一例を示す。図4に示されたマーカは、内部が4×4の小正方形でもって構成されていて、各小正方形は白か黒の何れかで塗りつぶされている。塗りつぶされた色によってビット値「0」若しくはビット値「1」を表しており、この組み合わせによって固有のID及び人為的マーカの物理的な大きさが定義される。検出した指標の情報は、位置姿勢計測部206に送られる。位置姿勢計測部206は、指標検出部205で検出された指標と主撮像装置101Lとの相対位置姿勢の算出や、情報蓄積部208に保持されている指標定義情報、または位置姿勢センサ103の値から主撮像装置101Lの位置姿勢を算出する。
【0016】
内部パラメータ計測部207は、主撮像装置101Lの内部パラメータの計測を行う。計測結果は、情報蓄積部208または誤差検出部209に送られる。情報蓄積部208は、現実空間中の指標の位置姿勢を定義した指標定義情報、主撮像装置101Lの内部パラメータを保持している。指標定義情報、内部パラメータは、予め求めておく必要がある。指標定義情報の求め方として、指標を撮影した画像から、指標同士の相対位置姿勢をキャリブレーションする方法が提案されている(非特許文献1)。また、ここでいう内部パラメータとは、例えば、撮像装置の焦点距離、主点位置及び歪を意味している。このような内部パラメータは、指標が含まれる複数の撮影画像を使用し、既知の方法(エポピーラ方程式を導入するなど)を用いて算出される。誤差検出部209は、内部パラメータ計測部207で計測された実際の内部パラメータと情報蓄積部208に蓄積されていて適用中の内部パラメータとのずれを検出し、誤差発生を検出する。誤差検出部209の検出結果は、誤差処理部210及び送信部211へ送られる。
【0017】
誤差処理部210は、誤差検出部209から送られてきたずれの情報や受信部203で受信した副情報処理装置301の誤差検出状況に基づいて校正処理(キャリブレーション処理ともいう)を決定し、実行する。送信部211は、外部へ情報を送信する。ここでは、位置姿勢計測部206で算出された主撮像装置101Lの位置姿勢、誤差検出部209における誤差検出状況などが副情報処理装置301へ送信される。仮想画像生成部212は、位置姿勢計測部206で計測された主撮像装置101Lの位置姿勢を視点として仮想画像(CG)を生成する。画像合成部213は、画像取り込み部204で取り込んだ画像と仮想画像生成部212で生成した仮想画像を合成して合成画像を作成し、表示部102Lに送信する。表示部102Lは、合成画像を表示する。
【0018】
次に、図3により副情報処理装置301について説明する。
副撮像装置101Rは、主撮像装置101Lと同様に、現実世界を撮影する。受信部302は、外部からの情報を受信する。ここでは、主情報処理装置201の送信部211から送信された、主撮像装置101Lの位置姿勢や誤差検出部209による誤差検出状況などが受信される。位置姿勢や誤差検出状況は、位置姿勢計測部305に送られる。画像取り込み部303は、副撮像装置101Rが撮影した画像を取り込む。指標検出部304は、画像取り込み部303が取り込んだ画像中から指標(例えば図4に示したような人為マーカ)を検出する。検出した指標の情報は、位置姿勢計測部305に送られる。位置姿勢計測部305は、既に情報蓄積部307に蓄積されている撮像装置間の位置姿勢(装置間位置姿勢情報)と受信部302で受信した主撮像装置101Lの位置姿勢とから、副撮像装置101Rの位置姿勢を算出する。また、位置姿勢計測部305は、必要に応じて、指標検出部304で検出された指標と副撮像装置101Rとの相対位置姿勢を算出し、これと受信部302で受信した主撮像装置101Lの位置姿勢から撮像装置間の位置姿勢の算出も行う。これらの算出結果は、情報蓄積部307、誤差検出部308、仮想画像生成部311のいずれかに送られる。
【0019】
内部パラメータ計測部306は、副撮像装置101Rの内部パラメータの計測を行う。計測結果は、情報蓄積部307または誤差検出部308へ送られる。情報蓄積部307は、指標の現実空間中での位置姿勢を定義した指標定義情報や、内部パラメータ及び撮像装置間の位置姿勢(装置間位置姿勢情報)を蓄積している。なお、定義情報は、情報蓄積部208において上述したのと同様な方法で、予め作成しておく必要がある。誤差検出部308は、内部パラメータ計測部306または位置姿勢計測部305から送られてきた内部パラメータまたは撮像装置間位置姿勢と、情報蓄積部307で保持されている適用中の内部パラメータまたは撮像装置間位置姿勢の値とのずれを算出する。そして、誤差検出部308は、そのずれから誤差が発生したか否かを判断する。誤差検出部308の判定結果は誤差処理部309、送信部310へ送られる。
【0020】
誤差処理部309は、誤差検出部308から送られてきたずれの情報や受信部302で受信した主情報処理装置201の誤差検出状況から実行すべきキャリブレーション処理等を決定し、実行する。送信部310は、外部へ情報を送信する。ここでは、主情報処理装置201へ誤差発生状況などを送信する。仮想画像生成部311は、位置姿勢計測部305で計測された副撮像装置101Rの位置姿勢を視点として仮想画像(CG)を生成する。画像合成部312は、画像取り込み部303で取り込んだ画像と仮想画像生成部311で生成した仮想画像を合成して合成画像を作成し、表示部102Rに送信する。表示部102Rは、合成画像を表示する。
【0021】
なお、図2、図3では主撮像装置101L及び副撮像装置101Rがそれぞれ主情報処理装置201、副情報処理装置301といった別々の情報処理装置に接続されているが、これに限られるものではない。例えば、主撮像装置101L及び副撮像装置101Rが同一の情報処理装置に接続されていても良い。同一の情報処理装置に接続する構成の場合、この情報処理装置は、主情報処理装置201及び副情報処理装置301の両方の機能を備えることになる。また、位置姿勢や誤差検出状況などは、送受信するのではなく、情報蓄積部を使用して共有しても良い。また、主撮像装置101Lと副撮像装置101Rの区別は、デバイス名などの識別情報を利用して識別してもよいし、接続端子によって識別してもよい。
【0022】
図1の(b)は、上述した情報処理装置201、301に適用可能なコンピュータのハードウェア構成例を示すブロック図である。図1の(b)において、CPU121は、RAM122やROM123に格納されているプログラムやデータを用いて本コンピュータ全体の制御を行うと共に、本コンピュータが行う後述の各処理を実行する。RAM122は、外部記憶装置126からロードされたプログラムやデータを一時的に記憶するためのエリアを有する。また、RAM122は、I/F(インターフェース)127を介して外部(本実施形態の場合には撮像装置)から取得したデータ(本実施形態の場合には撮像装置の位置姿勢や誤差検出状況)や指標に関する情報を一時的に記憶するためのエリアを有する。更にRAM122は、CPU121が各種の処理を実行する際に用いるワークエリアを有する。このように、RAM122は、各種の用途に応じて適宜エリアを提供することができる。ROM123は、本コンピュータの設定データやブートプログラムなどを格納する。
【0023】
操作部124は、キーボードやマウスなどにより構成されており、本コンピュータの操作者が操作することで、各種の指示をCPU121に対して入力することができる。表示部125は、CRTや液晶画面等により構成されており、CPU121による処理結果を画像や文字などでもって表示することができる。本実施形態では、表示部125は、図2、図3における表示部102L、102Rで代用してもよい。
【0024】
外部記憶装置126は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。ここにはOS(オペレーティングシステム)や、RAM122が保持する各種の情報(データ)、本コンピュータが行う後述の各処理をCPU121に実行させるためのプログラムやデータが保存されている。プログラムには、立体視を実現するためのコンピュータプログラムが含まれる。立体視を実現するためのコンピュータプログラムとは、例えば、
・撮像装置101L及び副撮像装置101Rの位置姿勢を算出するためのプログラム、
・内部パラメータや撮像装置間パラメータを算出するためのプログラム、
・誤差検出や誤差検出後の処理を実行するプログラム、
・プログラムによって算出された値を用いてCGを描画するプログラムである。
これらのコンピュータプログラムやデータはCPU121による制御に従って、コンピュータ読み取り可能な記憶媒体から適宜RAM122にロードされる。そしてCPU121はこのロードされたプログラムやデータを用いて処理を実行する。主撮像装置101L及び副撮像装置101Rが同一の情報処理装置に接続している場合には、位置姿勢情報や誤差検出状況などの情報がこの外部記憶装置126を介して共有される。以上のように、後述する各動作は、CD−ROM,DVD,フラッシュメモリ等のコンピュータ読み取り可能な記憶媒体に格納されたプログラムをCPU121が実行することにより実行されるものである。
【0025】
I/F127は、本実施形態の場合には、撮像装置を本情報処理装置に接続するためのインターフェースや、外部とのネットワーク接続するためのインターフェースとして機能するものである。例えば、撮像装置(101L,101R)が撮像した画像は、このI/F127を介して本コンピュータのRAM122や外部記憶装置126に入力される。また、主撮像装置101L及び副撮像装置101Rが別々の情報処理装置(201,301)に接続されている場合には、位置姿勢情報や誤差検出状況などの情報がこのI/F127を介して送受信される。また、表示部102L,102Rを駆動するための信号も、このI/F127を介して送信される。128は上述の各部を繋ぐバスである。
【0026】
なお、本実施形態に係る情報処理装置201、301に適用可能なコンピュータのハードウェア構成については同図に示した構成に限定するものではなく、情報処理装置201、301が行う後述の各処理を実行可能な構成であれば良い。
【0027】
以上のような構成を備えた本実施形態のシステムによる、撮像装置の内部パラメータや撮像装置間の相対位置姿勢が変化した場合に、観察者への悪影響を防ぐための処理を、図5のフローチャートを用いて説明する。なお、図5において、縦の点線よりも左側のフローチャートは主情報処理装置201の処理フローを示しており、右側のフローチャートは副情報処理装置301の処理フローを示している。以下に説明する処理は、情報蓄積部208,307において保持されている情報(内部パラメータや装置間位置姿勢情報)の正当性を判断し、正当でないと判定された場合にキャリブレーション処理を実行するものである。以下に説明する処理は、装置の起動時に実行されるものとする。もちろん、製造時にもしくはユーザにより設定された時間間隔で繰り返し実行されるようにしてもよい。
【0028】
まず、主情報処理装置201の処理を説明する。ステップ501において、内部パラメータ計測部207は、主撮像装置101Lが撮影した画像を用いて内部パラメータを計測する。ステップ502において、誤差検出部209は、ステップ501で計測した内部パラメータの値(実際の値)と、情報蓄積部208に蓄積されている現在適用中の内部パラメータの値とを比較する。そして、例えば、両内部パラメータの差を算出し、その差が所定値を越える場合に、両者にずれがあると判定する。ステップ503において、ステップ502での比較の結果、内部パラメータの値にずれがなかった場合には、処理はステップ504に進む。
【0029】
ステップ504おいて、誤差検出部209は、誤差が発生していない旨のメッセージを送信部211を介して副情報処理装置301に送信する。ステップ505において、位置姿勢計測部206は、主撮像装置101Lの位置姿勢を計測する。位置姿勢の計測方法としては、指標検出部205で検出した指標の画像上での位置と指標に付加された指標自身の大きさから、当該指標と主撮像装置101Lの相対位置姿勢を算出することが挙げられる。ステップ506において、位置姿勢計測部206は、ステップ505で計測した当該指標と主撮像装置101Lの相対位置姿勢を、送信部211を介して副情報処理装置301へ送信する。
【0030】
一方、ステップ502での比較の結果、ずれが検出された場合には、処理はステップ503からステップ507に進む。ステップ507において、誤差検出部209は、主撮像装置101Lの内部パラメータに誤差が発生した旨を、送信部211を介して副情報処理装置301へ送信する。ステップ508において、誤差処理部210は、実行すべき誤差発生時の処理を決定し、ステップ509においてその処理を実行する。
【0031】
次に、副情報処理装置301の処理を説明する。
ステップ510において、内部パラメータ計測部306は、副撮像装置101Rの内部パラメータを計測する。ステップ511において、誤差検出部308は、ステップ510で計測した内部パラメータの値(実際の値)と情報格納部307に蓄積されている適用中の内部パラメータの値とのずれを算出する。算出した結果は、誤差処理部309に送られる。
【0032】
主情報処理装置201から、内部パラメータに誤差が発生していない旨のメッセージが受信された場合は、その旨が誤差処理部309に通知される(ステップ512)。また、主情報処理装置201から主撮像装置101Lの位置姿勢を受信した場合(ステップ513)は、位置姿勢計測部305が主撮像装置101Lと副撮像装置101Rの相対位置姿勢である撮像装置間位置姿勢を計測する(ステップ514)。撮像装置間位置姿勢の計測方法は、次のとおりである。すなわち、位置姿勢計測部305は、指標検出部304で検出した指標の画像上での位置と当該指標自身の大きさを画像から読み取り、これらの情報から当該指標と副撮像装置101Rとの相対位置姿勢を算出する。そして、位置姿勢計測部305は、この算出結果とステップ513において受信した主撮像装置101Lの位置姿勢から、撮像装置間位置姿勢を算出する。そして、誤差検出部308は、ステップ514で計測した撮像装置間位置姿勢の値(実際の値)と情報蓄積部307に蓄積されている現在適用中の撮像装置間位置姿勢の値とを比較する。比較においては、例えば、ステップ514で計測した撮像装置間位置姿勢の値と情報蓄積部307に蓄積されている撮像装置間位置姿勢の値との差が所定値を越えたか否かによりずれの有無が検出される。誤差検出部308は、この比較の結果、つまり、撮像装置間位置姿勢にずれがあるか否かの結果を誤差処理部309へ送る。また、受信部203は、主情報処理装置201から内部パラメータに誤差が発生した旨のメッセージを受信すると、これを誤差処理部309へ通知する(ステップ516)。
【0033】
ステップ517において、誤差処理部309は、ステップ511、ステップ512、ステップ515、ステップ516にて得られた誤差発生有無の情報から、誤差発生時の処理を実行するか否かを判定する。誤差発生時の処理を実行すると判定された場合、誤差処理部309は、ステップ518において、実行する処理を決定する。実行する処理については後述する。ステップ519において、ステップ518で決定された処理を誤差処理部210が実行する。例えば、主撮像装置101Lにおいて内部パラメータのずれが検出された場合は、ステップ508,518において、内部パラメータと装置間位置姿勢情報を校正する処理(例えば図6の(a))の実行が決定される。また、副撮像装置101Rの内部パラメータのみにずれが検出された場合は、ステップ518で副撮像装置101Rの内部パラメータと装置間位置姿勢情報を校正する処理の実行が決定される。また、装置間位置姿勢情報のずれのみが検出された場合には、ステップ518で装置間位置姿勢情報の校正処理のみを行うように決定される(例えば図6の(b))。
【0034】
図6の(a)に示すフローチャートを用いて、主情報処理装置201(ステップ509)及び副撮像装置301(ステップ519)にて実行される処理を説明する。図6の(a)は、主撮像装置101Lの内部パラメータにずれを検出した場合に(ステップ503でYES)、主情報処理装置201及び副情報処理装置301で実行される処理である。また、
・ステップ503で主撮像装置101Lの内部パラメータについてずれが検出されず、
・ステップ511または515で、副撮像装置101Rの内部パラメータあるいは撮像装置間位置姿勢にずれが検出された場合、には副情報処理装置301のみに図6の(a)に示す処理が実行される。
【0035】
ステップ601において、誤差処理部210,309は、内部パラメータ計測部207、306に、内部パラメータを計測させる。ステップ501,510における内部パラメータの計測結果をそのまま用いてもよい。次に、ステップ602において、誤差処理部210,309は、情報蓄積部208,307に蓄積されている現在適用中の内部パラメータをステップ601で取得された値に置き換え、適用する。誤差処理部210による処理はここまでであり、以下のステップ603,604の処理は誤差処理部309のみが行う。
【0036】
ステップ603において、誤差処理部309は、位置姿勢計測部305に、撮像装置間位置姿勢を計測させる。ステップ514での計測結果をそのまま用いても良い。撮像装置間位置姿勢の計測方法は、ステップ514で上述したとおりである。次に、ステップ604において、誤差処理部309は、情報蓄積部307に蓄積されている現在適用中の撮像装置間位置姿勢をステップ503で取得された値に置き換え、適用する。
【0037】
また、ステップ502,511における内部パラメータの比較でずれは検出されず、撮像装置間位置姿勢にのみずれを検出した場合には(ステップ515)、誤差処理部309が図6の(b)で示した処理を実行するようにしてもよい。すなわち、ステップ621において、誤差処理部309は位置姿勢計測部305に、撮像装置間位置姿勢の計測を行わせる。ステップ514の計測結果を用いてもよい。そして、ステップ622において、誤差処理部309は、情報蓄積部307に蓄積されている現在適用中の撮像装置間位置姿勢をステップ621で取得された値に置き換え、適用する。
【0038】
そのほか、ステップ509,519において、誤差処理部210,309は、図7に示すような警告を表示するようにしてもよい。警告の表示は、図6の(a),(b)で説明した処理の前あるいは後のいずれで実施されてもよい。或いは、ブザーや音声などにより警告をユーザに通知するようにしてもよい。また、図6の(a),(b)の処理を実施せず、警告を表示した後に立体視を実現するためのプログラムの一部あるいは全てを強制的に終了するようにしてもよい。これらのいずれの処理を実行させるかを、ユーザが予め誤差発生時の処理として設定しておくようにしてもよい。
【0039】
[第2実施形態]
図8のフローチャートを用いて、本発明の第2実施形態を説明する。第2実施形態では、装置間位置姿勢情報にずれが発生したことの検出により、キャリブレーション処理の実行を決定する。図8において、フローチャートの縦の点線よりも左側は主情報処理装置201の処理フローを示しており、右側は副撮像装置301の処理フローを示している。なお、システム構成、主情報処理装置201及び吹く情報処理装置301の構成については第1実施形態(図1〜図3)と同様の構成を採用できるので、ここでは説明を省略する。
【0040】
ステップ801において、位置姿勢計測部206は、主撮像装置101Lの位置姿勢を計測する。計測方法は、次のとおりである。まず、位置姿勢計測部206は、指標検出部205で検出した指標の画像上での位置と指標に付加された指標自身の大きさから、当該指標と主撮像装置101Lとの相対位置姿勢を算出する。そして、位置姿勢計測部206は、この相対位置姿勢と、蓄積部208に蓄積されている指標定義情報から主撮像装置101Lの位置姿勢を算出する。
【0041】
ステップ802において、位置姿勢計測部206は、ステップ801で計測した結果を送信部211を介して副情報処理装置301へ送信する。ステップ803において、副情報処理装置301の受信部302がこれを受信する。ステップ804において、位置姿勢計測部305は副撮像装置101Rの位置姿勢を計測する。ここで、副撮像装置101Rの位置姿勢は、ステップ803で主情報処理装置201から受信した主撮像装置101Lの位置姿勢と、情報蓄積部307に蓄積されている撮像装置間位置姿勢から算出される。ステップ805において、仮想画像生成部311は、副撮像装置101Rの位置姿勢から指標検出部304で検出した指標を投影面に投影し、投影面上での指標位置(投影指標位置)を算出する。ステップ806において、誤差検出部308は、ステップ805で算出した指標投影位置と副撮像装置301が撮影した実写画像上の指標の位置の値を比較する。なお、撮像画像上の指標の実写画像の位置は指標検出部304により検出される。
【0042】
誤差検出部308は、ステップ806での指標位置比較の結果、指標投影位置と実写画像上の指標の位置にずれがなかった場合には、誤差が発生していない旨のメッセージを送信部310を介して主情報処理装置201に送信する(ステップ807,808)。そして、副情報処理装置301側でのパラメータ修正に関わる処理は終了となる。他方、ステップ806での指標位置比較の結果、投影指標位置と実写画像の指標位置にずれがあった場合には、誤差検出部308は誤差が発生した旨のメッセージを送信部310を介して主情報処理装置201に送信する(ステップ807,809)。ステップ810において、誤差処理部309は、副情報処理装置301での誤差発生時の処理を決定し、ステップ811において決定された処理を実行する。実行される処理については図9のフローチャートにより後述する。
【0043】
主情報処理装置201の受信部203が、副情報処理装置301から誤差が発生していない旨のメッセージを受信した場合には(ステップ812)、そのまま主情報処理装置201でのパラメータ修正に関わる処理が終了となる。主情報処理装置201の受信部203が、副情報処理装置301から誤差が発生した旨のメッセージを受信した場合には、処理はステップ813からステップ814に進む。ステップ814において、誤差処理部210は、主情報処理装置201での誤差発生時の処理を決定し、ステップ815において処理を実行する。
【0044】
次に、図9のフローチャートを用いて、誤差発生時に実行されるキャリブレーション処理を説明する。フローチャートの縦の点線よりも左側は主情報処理装置201の処理フロー(ステップ815)を示しており、右側は副情報処理装置301の処理フロー(ステップ811)を示している。第2実施形態のキャリブレーション処理では、装置間位置姿勢情報が校正され、内部パラメータの校正は必要に応じて(校正後の装置間位置姿勢情報の検証結果に応じて)実行される。
【0045】
ステップ901において、副情報処理装置301の誤差処理部309は、位置姿勢計測部305に撮像装置間位置姿勢を計測させる。撮像装置間位置姿勢の計測方法については、上述したとおりである。ステップ902において、誤差処理部309は、ステップ901での計測結果を検証する。検証方法としては、例えば、図8のフローチャートで説明したのと同様の方法を用いることができる。すなわち、誤差処理部309は、誤差検出部308に、ステップ901で得られた撮像間位置姿勢を用いて取得される投影指標の位置と実写中の指標の位置とを比較させる。そして、誤差処理部309はその比較の結果からずれが発生したか否かを判断し、ステップ901で計測した撮像装置間位置姿勢の値が正しいか否かを検証する。
【0046】
検証の結果、正しいと判断された場合には、誤差処理部309は、蓄積部307に蓄積されている現在適用中の撮像装置間位置姿勢をステップ901で計測された値に置き換え、適用する(ステップ903,904)。そして、ステップ811における誤差発生時の処理を終了する。他方、検証の結果、正しくないと判断された場合には、誤差処理部309は撮像装置間位置姿勢が正しくない旨のメッセージを主情報処理装置201へ送信する(ステップ903,905)。そして、ステップ906において、誤差処理部309は、内部パラメータ計測部306に副撮像装置301の内部パラメータを計測させ、計測された内部パラメータで情報蓄積部307を更新する。
【0047】
一方、主情報処理装置201の誤差処理部210は、ステップ907において、副情報処理装置301から撮像装置間位置姿勢が正しくない旨のメッセージを受信すると、ステップ908〜910の処理を実行する。ステップ908において、誤差処理部210は、内部パラメータ計測部207に主撮像装置101Lの内部パラメータを計測させ、計測された内部パラメータで情報蓄積部208を更新する。ステップ909において、誤差処理部210は、位置姿勢計測部206に、主撮像装置101Lの位置姿勢を計測させる。そして、ステップ910において、誤差処理部210は、ステップ909で計測された位置姿勢を副情報処理装置301に、送信部310を介して送信する。
【0048】
副情報処理装置301の誤差処理部309は、受信部302が主情報処理装置201から主撮像装置101Lの位置姿勢を受信すると、処理をステップ1101に戻し、撮像装置間位置姿勢の計測を実施する(ステップ911)。その後、上述したステップ901〜処理が再度、繰り返される。
【0049】
なお、誤差発生時に実行される処理は、図6の(a),(b)に示した処理であってもよい。そのほか、第1実施形態と同様に、図7に示すような警告を表示してもよい。また、警告の表示は、図6の(a)、(b)図9で説明した処理の前あるいは後に実施されてもよい。また、図6の(a),(b)や図9の処理を実施せず、警告を表示した後に立体視を実現するためのプログラムの一部あるいは全てを強制的に終了してもよい。
【0050】
[第3実施形態]
第3実施形態では、装置間位置姿勢情報や内部パラメータの正当性を、各撮像装置から得られた画像に含まれるエッジを利用して判断する。以下、図10のフローチャートを用いて、第3実施形態について説明する。フローチャートの縦の点線よりも左側は主情報処理装置201の処理フローを示しており、右側は副撮像装置301の処理フローを示している。
【0051】
ステップ1001及び1002において、主情報処理装置201の誤差検出部209及び副情報処理装置301の誤差検出部308は、主撮像装置101L及び副撮像装置101Rが撮影したそれぞれの画像から、エッジを抽出する。なお、エッジは、画像中の濃度が急激に変わる点などとする。ステップ1003において、副情報処理装置301の誤差検出部308は抽出したエッジ情報を主情報処理装置201へ送信する。
【0052】
ステップ1004において、主情報処理装置201の誤差検出部209は副情報処理装置301からエッジ情報を受信し、自身が抽出したエッジとの対応付けを行う。ステップ1005において、誤差検出部209は、ステップ1004で対応付けしたそれぞれのエッジが互いに平行か否かを検証する。それぞれのエッジが平行であると判断された場合には、誤差検出部209は誤差が発生していない旨のメッセージを副情報処理装置301へ送信し、処理を終える(ステップ1006,1007)。他方、平行でないと判断された場合には、誤差検出部209は、誤差が発生している旨のメッセージを副情報処理装置301へ送信し、処理をステップ1009へ進める(ステップ1006,1008)。ステップ1009において、誤差処理部210は誤差発生時のキャリブレーション処理を決定し、ステップ1010において、処理を実行する。
【0053】
副情報処理装置301の誤差検出部308が、誤差が発生していない旨のメッセージを主情報処理装置201から受信した場合には、副情報処理装置301での処理は終了となる(ステップ1011)。誤差検出部308が、誤差が発生している旨のメッセージを受信した場合には、処理をステップ1013に進める(ステップ1012)。ステップ1013において、誤差処理部309は、誤差発生時の処理を決定し、ステップ1014において、処理を実行する。なお、誤差発生時に実行する処理は、第1、第2実施形態により上述したとおりである。また、第3実施形態では、主情報処理装置201においてエッジが平行か否かを判断するようにしたが、副情報処理装置301においてエッジが平行か否かを判断するようにしてもよい。
【0054】
[第4実施形態]
図11、図12は、第4実施形態による情報処理装置の構成を示すブロック図である。図11は、主撮像装置101Lに接続された主情報処理装置201の構成を、図12は副撮像装置101Rに接続された副情報処理装置301の構成を示す。第4実施形態では、通信の方向が主情報処理装置201から副情報処理装置301のみとなっている。
【0055】
情報蓄積部1108では、現実空間中の指標の位置姿勢を定義した指標定義情報を保持している。この定義情報は、予め作成しておく必要がある。作成方法としては、例えば、指標の位置姿勢を手作業で計測して作成しても良いし、あるいは、指標を含んだ画像をカメラで撮影し、撮影画像から三次元復元を行って作成しても良い。位置姿勢算出部1106は、位置姿勢センサ103から取得した位置姿勢情報から主撮像装置101Lの位置姿勢を算出する。あるいは、指標検出部205で検出された指標と情報蓄積部1108に保持されている指標定義情報から位置姿勢を算出する。あるいは、これらを併用して位置姿勢を算出する。送信部211は、位置姿勢算出部1106で算出された主撮像装置101Lの位置姿勢を副情報処理装置301の受信部302に送信する。
【0056】
投影指標位置算出部1107は、指標検出部205で検出された指標を、位置姿勢算出部1106で算出された主撮像装置101Lの位置姿勢と情報蓄積部1108に保持されている指標定義情報とに基づいて撮影画像上に投影し、画像上での位置を算出する。誤差検出/処理部1109は、撮影画像中の指標と投影指標の画像上の位置の誤差を検出し、(所定量を超える)誤差が検出された場合には、事前にユーザによって設定された処理を実行する。本例では、“キャリブレーションの自動実行”、“警告を表示して強制的に終了”、“警告の表示のみ”のいずれかに設定されるものとする(詳細は後述する)。投影指標描画部1112は、投影指標位置算出部1107で算出した撮影画像上の位置に投影指標を描画する。画像合成部1113は、画像取り込み部204で取り込んだ画像と投影指標描画部1112で描画した投影指標とを合成した合成画像を作成し、表示部102Lに送信する。表示部102Lは、合成画像を表示する。
【0057】
次に、図12により第4実施形態の副情報処理装置301について説明する。
受信部302は、本実施形態では、送信部211から送信された主撮像装置101Lの位置姿勢を受信し、位置姿勢算出部1205に送信する。情報蓄積部1207は、指標の現実空間中での位置姿勢を定義した指標定義情報や、主撮像装置101Lと副撮像装置101Rの位置姿勢関係を保持している。この定義情報は、上述したのと同様な方法で、予め作成しておく必要がある。位置姿勢算出部1205は、受信部302で受信した主撮像装置101Lの位置姿勢と、情報蓄積部1207に保持されている主撮像装置101Lと副撮像装置101Rとの位置姿勢関係を用いて、副撮像装置101Rの位置姿勢を算出する。
【0058】
投影指標位置算出部1206は、位置姿勢算出部1205で算出された副撮像装置101Rの位置姿勢と情報蓄積部1207に保持されている指標定義情報とに基づき、指標検出部304で検出された指標を撮影画像上に投影し、画像上での位置を算出する。誤差検出/処理部1208は、撮影画像中の指標と投影指標の画像上の位置の誤差を検出する。投影指標描画部1211は、投影指標位置算出部1206で算出した撮影画像上の位置に投影指標を描画する。画像合成部1212は、画像取り込み部303で取り込んだ画像と投影指標描画部1211で描画した投影指標を合成した合成画像を作成し、表示部102Rに送信する。表示部102Rは、合成画像を表示する。
【0059】
なお、図11、図12では主撮像装置101L及び副撮像装置101Rがそれぞれ主情報処理装置201、副情報処理装置301といった別々の情報処理装置に接続されているが、これに限られるものではない。例えば、主撮像装置101L及び副撮像装置101Rが同一の情報処理装置に接続されていても良いことは第1実施形態で説明したとおりである。また、上述の主情報処理装置201、副情報処理装置301に適用可能なコンピュータのハードウェア構成は、図1の(b)により説明したとおりである。
【0060】
次に、図13のフローチャートを用いて、第4実施形態の処理を説明する。まず、主情報処理装置201における動作を説明する。ステップ1301において、誤差検出/処理部1109は、位置姿勢計測部206で算出された主撮像装置101Lの位置姿勢と実際の位置姿勢との間に誤差が発生したときに実行する処理を設定する。実行する処理は、“キャリブレーションの自動実行”、“警告を表示して強制的に終了”、“警告の表示のみ”のいずれかである。なお、誤差検出/処理部1109は設定された処理を副情報処理装置301へ送信部211を介して送信する。これは、主情報処理装置201と副情報処理装置301において誤差発生時の処理を一致させるためである。ステップ1302において、画像取り込み部204は、主撮像装置101Lを用いて現実空間を撮影することにより得られた画像を取り込む。ステップ1303において、指標検出部205は画像取り込み部204によって取り込まれた画像から指標を検出し、位置姿勢算出部1106は指標検出部205が検出した指標の画像における位置等に基づいて主撮像装置101Lの位置を算出する。位置姿勢算出部1106は、算出した位置姿勢を送信部211を介して副情報処理装置301に送信する。
【0061】
ステップ1304において、投影指標位置算出部1107は、指標検出部205で検出された指標を、位置姿勢算出部1106で算出された主撮像装置101Lの位置姿勢と情報蓄積部1108に保持されている指標定義情報とに基づいて撮影画像上に投影する。そして、この投影指標の画像上での位置を算出する。投影指標描画部1112は、算出された投影指標の位置と当該指標の定義情報を用いて指標を描画する。そして、画像合成部1113は、投影指標描画部1112によって描画された投影指標の画像を撮像画像に合成し、表示部102Lに表示する。
【0062】
ステップ1305において、誤差検出/処理部1109は、撮像画像中の指標の位置と投影指標の位置が一致しているか否かを判断する。図14は画像合成部1113が、投影指標描画部1112により描画された投影指標の画像を撮像画像に合成して得られた合成画像の一例を示す図である。破線が投影指標、それ以外の部分が撮影画像である。図14の(a)では、撮影画像中の指標の位置と投影指標の位置が一致しており、誤差が検出されないことを表している。一方、図14の(b)では、撮影画像中の指標の位置と投影指標の位置が一致していない。これは、位置姿勢算出部1106において算出した主撮像装置101Lの位置姿勢が実際の位置姿勢と一致していないことを表している。ステップ1305において、誤差検出/処理部1109は、撮影画像中の指標の位置と投影指標の位置が一致しているか否かを判断し、一致していると判断した場合には、処理をステップ1303に戻す。一方、ステップ1305において、撮影画像中の指標の位置と投影指標の位置が一致していないと判断された場合には、処理はステップ1306に進む。なお、撮影画像中の指標位置と投影指標の位置が一致するか否かは、指標検出部205が撮影画像から検出した指標の実写画像の位置と、投影指標位置算出部1107が算出した投影指標の位置との差が所定範囲内にあるかどうかで判断できる。
【0063】
ステップ1306において、誤差検出/処理部1109は、ステップ1301で設定された誤差発生時の処理が、“キャリブレーションの自動実行”であるか否かを判定する。“キャリブレーションの自動実行”に設定されていた場合、誤差検出/処理部1109は、ステップ1307において、誤差検出/処理部1109はキャリブレーションを実行する。キャリブレーションの詳細については後述する。ステップ1308において、誤差検出/処理部1109は、ステップ1307で実行したキャリブレーションの結果を検証する。検証方法の一例としては、キャリブレーション結果を一時的に適用して、誤差検出までの処理(ステップ1302〜ステップ1304)を実施して、誤差が検出されないか否かを試すことが挙げられる。
【0064】
ステップ1309において、検証の結果からキャリブレーションが有効であると判断された場合には、ステップ1310において、誤差検出/処理部1109はキャリブレーション結果を適用し、処理をステップ1302に戻す。一方、ステップ1309において、キャリブレーションが有効でないと判断された場合には、処理はステップ1311へ進む。
【0065】
ステップ1311において、誤差検出部/処理部1109は、誤差発生時の処理として“警告を表示して強制的に終了”が設定されているか否かを判定する。“警告を表示して強制的に終了”が設定されている場合、誤差検出部/処理部1109は、ステップ1312において、図7に示したような警告を表示部102Lに表示させ、本処理を終了する。一方、ステップ612において、“警告を表示して強制的に終了”が設定されていないと判断された場合、つまり“警告のみを表示”であった場合には、処理はステップ1313に進む。ステップ1313において、誤差検出部/処理部1109は、図7に示すような警告を表示部102Lに表示させ、位置姿勢の算出を続行する。なお、ステップ1309のNO分岐によってステップ1311に到達した場合には、ステップ1313に処理が進み、図7に示すような警告が表示部102Lに表示され、位置姿勢の算出は続行されることになる。
【0066】
以上、図13のフローチャートを用いて主情報処理装置201の処理を説明したが、副情報処理装置301の処理も同様である。すなわち、図12において図11と名称が一致する各部が、副撮像装置101Rに関して上述した処理を実行することになる。但し、ステップ1301において誤差検出/処理部1208は、主情報処理装置201より送信された処理を、誤差発生時の処理として設定する。また、ステップ1303において、位置姿勢算出部1205は、受信部302が受信した主撮像装置101Lの位置姿勢と、情報蓄積部1207にて保持されている主撮像装置と副撮像装置の位置姿勢関係とに基づいて副撮像装置101Rの位置姿勢を算出する。さらに、ステップ1304では、算出された副撮像装置101Rの位置姿勢と、情報蓄積部1207に保持されている指標定義情報とに基づいて撮影画像上に投影し、その画像上での位置を算出する。
【0067】
次に、図6の(a)に示したフローチャートを流用することにより、第4実施形態のキャリブレーション(ステップ1307)のフローについて説明する。
【0068】
ステップ601において、誤差検出/処理部1109,1208は、撮像装置(101L,101R)の内部パラメータを計算する。ここでいう内部パラメータとは、撮像装置の焦点距離、主点位置及び歪を意味している。このような内部パラメータは、指標が含まれる複数の撮影画像を使用し、既知の方法(エポピーラ方程式を導入するなど)を用いて算出される。そして、ステップ602において、誤差検出/処理部1109,1208は、算出された内部パラメータを適用する。誤差検出/処理部1109の処理はここまでである。
【0069】
ステップ603において、誤差検出/処理部1208は、主撮像装置101Lと副撮像装置101Rとの撮像装置間位置姿勢を算出する。この撮像装置間位置姿勢は、
・副撮像装置101Rにより複数の撮影画像を取得するとともに、これらの撮影と同時点の主撮像装置101Lの位置姿勢を主情報処理装置201から取得し、
・主撮像装置101Lの位置姿勢を元に、副撮像装置101Rによる撮影画像中の指標と投影指標が一致するように計算を行う、ことにより算出される。
【0070】
次に、図15のフローチャートを用いて、キャリブレーション処理の別パターンを説明する。
ステップ1501において、誤差検出/処理部1208は、主撮像装置101Lと副撮像装置101Rとの間の位置姿勢関係(装置間位置姿勢)を計算する。位置姿勢関係の算出方法については、ステップ514(図5)等により上述したとおりである。次に、ステップ1502において、誤差検出/処理部1208は、主撮像装置101Lと副撮像装置101Rの位置姿勢関係の計算結果を検証する。検証方法としては、ステップ1308で説明したように、計算結果を一次的に適用し、誤差検出までの処理(ステップ1302〜ステップ1304)を実施して、誤差が検出されないか否かを試す方法が挙げられる。ステップ1503において、ステップ1501で算出された位置姿勢関係が有効であると判断された場合には、ステップ1504において、誤差検出/処理部1208はその計算結果を適用して、キャリブレーションを終了する。一方、ステップ1503において有効でないと判断された場合には、ステップ1505において、誤差検出/処理部1208は、内部パラメータがキャリブレーション済みかどうかを確認する。キャリブレーションが済んでいない場合、誤差検出/処理部1208は、ステップ1506において内部パラメータを計算し、ステップ1507において、内部パラメータ計算済みである旨を記録し、処理をステップ1501に戻す。一方、ステップ1505において、内部パラメータが計算済みであると確認された場合には、そのまま当該キャリブレーション処理を終了する。
【0071】
図16は、画像合成部1113及び画像合成部1212で作成した合成画像の一例を示す図である。図16の(a)では、画像合成部1113及び画像合成部1212で作成した合成画像の両方共が、撮像画像中の指標と投影指標が一致していない場合を示している。この場合、カメラ内部パラメータが実際の値と異なっていることが考えられるため、図6の(a)に示したキャリブレーション処理が適している。また、図16の(b)は、画像合成部1212(副情報処理装置301)のみにおいて、撮像画像中の指標と投影指標が一致していない場合を示している。この場合、カメラ内部パラメータは正しく主撮像装置101Lと副撮像装置101Rの位置姿勢関係のみが実際の値と異なっていることが考えられるため、図15に示したキャリブレーション処理が適している。よって、誤差検出/処理部1109,1208は、そのようにキャリブレーション処理を選択し、実行する。
【0072】
[第5実施形態]
次に、第5実施形態のキャリブレーションに係わる処理を、図17のフローチャートを用いて説明する。
【0073】
ステップ1701において、誤差検出/処理部1109は、投影指標と撮影画像中の指標の誤差の許容範囲を設定する。許容範囲の指定方法としては、誤差を画素数で指定しても良いし、表示部102Lの総画素数に対する誤差の画素数の比で指定しても良い。これらの指定は、ユーザが不図示のユーザインターフェースを介して行うものとする。ステップ1702において、位置姿勢算出部1106は、主撮像装置101Lの位置を算出し、算出した位置姿勢を送信部211を介して副情報処理装置に301に送信する。この処理はステップ1303と同様である。
【0074】
次に、ステップ1703において、投影指標位置算出部1107は、ステップ1702で取得した位置姿勢と、指標検出部205が検出した指標の指標定義情報(情報蓄積部1108に保持されている)とに基づいて、当該指標の投影位置を算出する。そして、投影指標描画部1112が、算出された位置と、指標定義情報とに基づいて投影指標を描画する。ステップ1405において、画像合成部1113は、投影指標と撮影画像を合成し、合成画像を作成する。
【0075】
ステップ1406において、誤差検出/処理部1109は、合成画像から撮像画像中の指標と投影指標が一致しているか否かを判断する。すなわち、投影指標の投影位置と、指標検出部205により検出された撮影画像中における指標の位置とが一致するかどうかを判断する。投影指標と撮影画像中の指標が一致していると判断された場合には、処理をステップ1702に戻し、投影指標と撮影画像中の指標が一致していないと判断された場合には、処理をステップ1706に進める。ステップ1706において、誤差検出/処理部1109は、投影指標と撮影画像中の指標の誤差を算出し、算出した誤差がステップ1701で設定された許容範囲内か否かを判断する。許容範囲内と判断された場合には、処理はステップ1707に進む。許容範囲外と判断された場合には、処理はステップ1711に進み、図7に示したような警告を表示して処理を終了する。
【0076】
ステップ1707において、誤差検出/処理部1109は、キャリブレーションを自動実行する。キャリブレーションの処理は、上述したとおりである。ステップ1708において、誤差検出/処理部1109は、キャリブレーション結果を検証する。検証方法についても上述したとおりである。検証の結果、キャリブレーション結果が有効であると判断された場合には、処理はステップ1709からステップ1710に進み、誤差検出/処理部1109は当該キャリブレーション結果を適用する。そして、処理はステップ1402に戻り、位置算出が続行される。一方、キャリブレーション結果が有効でないと判断された場合には、処理はステップ1709からステップ1711に進み、図7に示す如き警告を表示して、本処理を終了する。
【技術分野】
【0001】
本発明は、カメラ内部パラメータやカメラ間の相対位置姿勢のキャリブレーションに関する。
【背景技術】
【0002】
従来より、仮想現実感(バーチャルリアリティ:VR)システムが知られている。このVRシステムでは、コンピュータにより作り出された三次元コンピュータグラフィックス(Computer Graphic:CG)映像をユーザに提示することにより、仮想空間をあたかも現実空間であるかのようにユーザに感じさせる。また近年では、現実空間の映像に三次元CGを合成することにより、現実空間にはない情報をユーザに提示する技術が開発されており、このような技術は、複合現実感(MixedReality:MR)システムと呼ばれている。このMRシステムは、現実空間と切り離された状況のみにおいて体験することが可能であった仮想空間と、現実空間との共存を目的とし、仮想空間を増強する技術として注目されている。
【0003】
上記のような仮想空間と現実空間とを共存させるためのシステム(VRシステム/MRシステム)を実現する代表的な装置として、ヘッドマウントディスプレイ(HMD)がある。VR/MRシステムにおいては、HMDに仮想空間や現実空間を表示することにより、HMDを装着したユーザに対して仮想空間および複合現実空間を提示することができる(特許文献1参照)。この種の装置では、ステレオビデオシースルーHMD(以下、単にHMDと呼称する)が用いられる。HMDは、眼鏡又はゴーグルに似た外観形状を有し、その内部には、例えばLCDで構成されている右眼用表示デバイスと、左眼用表示デバイスが配置されている。また、ステレオビデオ映像をHMDに装着したビデオカメラにより取得する場合には、例えばユーザ(装着者)の左右の視点位置の近傍位置に、それぞれ左眼用ステレオビデオカメラと右眼用ステレオビデオカメラとが設けられる。
【0004】
高品質な複合現実感を提供するためには、現実空間と仮想空間との位置合わせが高精度に行われる必要がある。上述のようなHMDを利用したシステムの場合には、右眼用ステレオビデオカメラと左眼用ステレオビデオカメラの両方の現実空間での位置姿勢をそれぞれ求め、それぞれの位置姿勢に基づいて三次元CGを描画し、現実空間の画像との合成が行われる。各カメラの位置姿勢は、各カメラに磁気や光学式センサなどを取り付け、これらのセンサの値から求めてもよい。しかし、センサの誤差などにより両カメラ間の相対位置姿勢が一定とならない場合が考えられ、これによって、装着者に不快感を与えてしまう危険性がある。これを回避する方法として、両カメラ間の相対位置姿勢を予め求めておいたものを利用する方法が有効である。この方法では、右眼用ステレオビデオカメラと左眼用ステレオカメラのどちらか一方を主カメラ、もう一方を副カメラと設定する。そして、主カメラだけにセンサを取り付けて位置姿勢を算出し、このセンサを利用して算出された位置姿勢と予め求めておいた両カメラ間の相対位置姿勢を用いて、副カメラの位置姿勢が算出される。
【0005】
また、HMDを利用したシステムに限らず、正確な位置合わせを行うためにも、カメラの内部パラメータを考慮することが必要である。ここでいう内部パラメータは、例えば、焦点距離、主点位置及びレンズ歪である。内部パラメータの算出に関しては、キャリブレーションパターンを用いた方法(特許文献2参照)や、動画像から求める方法(特許文献3参照)などが知られている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2002−159019号公報
【特許文献2】特開2005−017286号公報
【特許文献3】特開2000−268179号公報
【非特許文献】
【0007】
【非特許文献1】小竹, 内山, 山本:マーカ配置に関する先駆的知識を利用したマーカキャリブレーション方法,日本バーチャルリアリティ学会論文誌,vol.10, No.3, pp.401-410, 2005.
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述した両カメラ間の位置姿勢やカメラ内部パラメータは、各HMD固有のものである。そのため、HMDを使用するたびに必ずしも毎回求める必要はない。特に、日常的に使用する場合には、一度求めておいたのを再利用したほうが、効率がよい。しかし、不注意などからHMDを落下させてしまった場合や、そのほかの外的要因によって、カメラ内部パラメータや両カメラ間の相対位置姿勢が変化してしまう場合がある。このような場合には、もちろんこれらを求め直す必要がある。しかし、装着者のHMDあるいはMRに対する知識や経験のレベルによっては、この変化に気付かずに使用を続行してしまうことが考えられる。もし、この状態でHMDを装着して作業を続行した場合、正常な立体視ができないことで、装着者の身体に悪影響を及ぼしかねない。
【0009】
本発明は、上記したような課題に鑑みてなされたものであり、カメラ内部パラメータやカメラ間の相対位置姿勢が変化した場合に、仮想現実空間の表示が観察者へ悪影響を及ぼすことを未然に防ぐことを可能とすることを目的とする。
【課題を解決するための手段】
【0010】
上記の目的を達成するための本発明の一態様による情報処理装置は以下の構成を備える。すなわち、
第1の撮像装置と第2の撮像装置により現実空間を撮影して得られた画像に仮想画像を合成して立体視のための画像を提供する情報処理装置であって、
前記第1の撮像装置の位置姿勢を計測する計測手段と、
前記第1の撮像装置と前記第2の撮像装置との間の位置姿勢の関係を示す、保持手段に保持されている装置間位置姿勢情報と、前記計測手段により計測された前記第1の撮像装置の位置姿勢とに基づいて、前記第2の撮像装置の位置姿勢を算出する算出手段と、
前記計測手段で計測された前記第1の撮像装置の位置姿勢と、前記算出手段で算出された前記第2の撮像装置の位置姿勢と、前記保持手段に保持されている前記第1及び第2の撮像装置の内部パラメータとを用いて、前記第1及び第2の撮像装置のそれぞれから得られた画像に仮想画像を合成する合成手段と、
前記第1または第2の撮像装置により撮像された画像に基づいて、前記保持手段に保持されている前記装置間位置姿勢情報、前記第1の撮像装置の内部パラメータ及び前記第2の撮像装置の内部パラメータの少なくともいずれかの情報の正当性を判断する判断手段とを備える。
【発明の効果】
【0011】
本発明によれば、カメラ内部パラメータやカメラ間の相対位置姿勢が変化した場合に、仮想現実空間の表示が観察者へ悪影響を及ぼすことを未然に防ぐことが可能となる。
【図面の簡単な説明】
【0012】
【図1】ステレオビデオシースルーHMDによるシステムの説明図。
【図2】第1〜第3実施形態の主情報処理装置のブロック図。
【図3】第1〜第3実施形態の副情報処理装置のブロック図。
【図4】人為的マーカの一例を示す図。
【図5】第1実施形態のシステムによる処理を説明するフローチャート。
【図6】第1実施形態のキャリブレーション処理を示すフローチャート。
【図7】警告の表示例を示す図。
【図8】第2実施形態のシステムによる処理を説明するフローチャート。
【図9】第2実施形態のキャリブレーション処理を示すフローチャート。
【図10】第3実施形態のシステムによる処理を説明するフローチャート。
【図11】第4、第5実施形態の主情報処理装置のブロック図。
【図12】第4、第5実施形態の副情報処理装置のブロック図。
【図13】第4実施形態のシステムによる処理を説明するフローチャート。
【図14】第4実施形態における合成画像の一例を示す図。
【図15】第4実施形態のキャリブレーション処理を示すフローチャート。
【図16】第4実施形態の合成画像の一例を示す図。
【図17】第5実施形態のシステムによる処理を説明するフローチャート。
【発明を実施するための形態】
【0013】
[第1実施形態]
図1の(a)は、ユーザがステレオビデオシースルーHMD100(以下、単にHMD100と呼称する)を装着した状態を模式的に示す図である。HMD100は、眼鏡又はゴーグルに似た外観形状を有し、その内部には、例えばLCDで構成されている右眼用の表示部102Rと、左眼用の表示部102Lが配置されている。また、HMD100には、ステレオビデオ映像を取得するために、ユーザ(装着者)の左眼視点位置の近傍に左眼用ビデオカメラである第1の撮像装置としての主撮像装置101Lが設けられている。同様に、HMD100の左右眼視点位置の近傍には右眼用ビデオカメラである第2の撮像装置としての副撮像装置101Rが設けられている。主撮像装置101L,副撮像装置101Rは、例えば、CCDカメラなどで構成され、現実世界を撮影する。位置姿勢センサ103は、主撮像装置101Lの位置姿勢を検出するものであり、例えば、ジャイロセンサ、磁器センサなどで構成される。また、本実施形態のシステムは、主撮像装置101L、表示部102L及び位置姿勢センサ103と接続された情報処理装置201と、副撮像装置101R及び表示部102Rと接続された情報処理装置301とを有する。なお、以下では左側の撮像装置を主撮像装置、右側の撮像装置を副撮像装置とするが、主・副の関係はこの限りでないことは言うまでも無い。
【0014】
図2、図3は、それぞれ情報処理装置201と情報処理装置301の機能構成を示すブロック図である。説明のため、以下では主撮像装置101Lに接続された情報処理装置201を主情報処理装置201と呼び、副撮像装置101Rに接続された情報処理装置301を副情報処理装置301と呼ぶことにする。
【0015】
主情報処理装置201において、受信部203は、外部からの情報を受信する。ここでは、副情報処理装置301から、誤差検出状況などを受信する。受信された誤差検出状況は、誤差処理部210へ送られる。画像取り込み部204は、主撮像装置101Lが撮影した画像を取り込む。指標検出部205は、画像取り込み部204が取り込んだ画像中から指標を検出する。ここでいう指標とは、例えば、色や形あるいはIDや大きさなどの情報を定義した人為的マーカや、現実世界に存在する自然特徴などである。図4に、指標として利用可能な人為的マーカの一例を示す。図4に示されたマーカは、内部が4×4の小正方形でもって構成されていて、各小正方形は白か黒の何れかで塗りつぶされている。塗りつぶされた色によってビット値「0」若しくはビット値「1」を表しており、この組み合わせによって固有のID及び人為的マーカの物理的な大きさが定義される。検出した指標の情報は、位置姿勢計測部206に送られる。位置姿勢計測部206は、指標検出部205で検出された指標と主撮像装置101Lとの相対位置姿勢の算出や、情報蓄積部208に保持されている指標定義情報、または位置姿勢センサ103の値から主撮像装置101Lの位置姿勢を算出する。
【0016】
内部パラメータ計測部207は、主撮像装置101Lの内部パラメータの計測を行う。計測結果は、情報蓄積部208または誤差検出部209に送られる。情報蓄積部208は、現実空間中の指標の位置姿勢を定義した指標定義情報、主撮像装置101Lの内部パラメータを保持している。指標定義情報、内部パラメータは、予め求めておく必要がある。指標定義情報の求め方として、指標を撮影した画像から、指標同士の相対位置姿勢をキャリブレーションする方法が提案されている(非特許文献1)。また、ここでいう内部パラメータとは、例えば、撮像装置の焦点距離、主点位置及び歪を意味している。このような内部パラメータは、指標が含まれる複数の撮影画像を使用し、既知の方法(エポピーラ方程式を導入するなど)を用いて算出される。誤差検出部209は、内部パラメータ計測部207で計測された実際の内部パラメータと情報蓄積部208に蓄積されていて適用中の内部パラメータとのずれを検出し、誤差発生を検出する。誤差検出部209の検出結果は、誤差処理部210及び送信部211へ送られる。
【0017】
誤差処理部210は、誤差検出部209から送られてきたずれの情報や受信部203で受信した副情報処理装置301の誤差検出状況に基づいて校正処理(キャリブレーション処理ともいう)を決定し、実行する。送信部211は、外部へ情報を送信する。ここでは、位置姿勢計測部206で算出された主撮像装置101Lの位置姿勢、誤差検出部209における誤差検出状況などが副情報処理装置301へ送信される。仮想画像生成部212は、位置姿勢計測部206で計測された主撮像装置101Lの位置姿勢を視点として仮想画像(CG)を生成する。画像合成部213は、画像取り込み部204で取り込んだ画像と仮想画像生成部212で生成した仮想画像を合成して合成画像を作成し、表示部102Lに送信する。表示部102Lは、合成画像を表示する。
【0018】
次に、図3により副情報処理装置301について説明する。
副撮像装置101Rは、主撮像装置101Lと同様に、現実世界を撮影する。受信部302は、外部からの情報を受信する。ここでは、主情報処理装置201の送信部211から送信された、主撮像装置101Lの位置姿勢や誤差検出部209による誤差検出状況などが受信される。位置姿勢や誤差検出状況は、位置姿勢計測部305に送られる。画像取り込み部303は、副撮像装置101Rが撮影した画像を取り込む。指標検出部304は、画像取り込み部303が取り込んだ画像中から指標(例えば図4に示したような人為マーカ)を検出する。検出した指標の情報は、位置姿勢計測部305に送られる。位置姿勢計測部305は、既に情報蓄積部307に蓄積されている撮像装置間の位置姿勢(装置間位置姿勢情報)と受信部302で受信した主撮像装置101Lの位置姿勢とから、副撮像装置101Rの位置姿勢を算出する。また、位置姿勢計測部305は、必要に応じて、指標検出部304で検出された指標と副撮像装置101Rとの相対位置姿勢を算出し、これと受信部302で受信した主撮像装置101Lの位置姿勢から撮像装置間の位置姿勢の算出も行う。これらの算出結果は、情報蓄積部307、誤差検出部308、仮想画像生成部311のいずれかに送られる。
【0019】
内部パラメータ計測部306は、副撮像装置101Rの内部パラメータの計測を行う。計測結果は、情報蓄積部307または誤差検出部308へ送られる。情報蓄積部307は、指標の現実空間中での位置姿勢を定義した指標定義情報や、内部パラメータ及び撮像装置間の位置姿勢(装置間位置姿勢情報)を蓄積している。なお、定義情報は、情報蓄積部208において上述したのと同様な方法で、予め作成しておく必要がある。誤差検出部308は、内部パラメータ計測部306または位置姿勢計測部305から送られてきた内部パラメータまたは撮像装置間位置姿勢と、情報蓄積部307で保持されている適用中の内部パラメータまたは撮像装置間位置姿勢の値とのずれを算出する。そして、誤差検出部308は、そのずれから誤差が発生したか否かを判断する。誤差検出部308の判定結果は誤差処理部309、送信部310へ送られる。
【0020】
誤差処理部309は、誤差検出部308から送られてきたずれの情報や受信部302で受信した主情報処理装置201の誤差検出状況から実行すべきキャリブレーション処理等を決定し、実行する。送信部310は、外部へ情報を送信する。ここでは、主情報処理装置201へ誤差発生状況などを送信する。仮想画像生成部311は、位置姿勢計測部305で計測された副撮像装置101Rの位置姿勢を視点として仮想画像(CG)を生成する。画像合成部312は、画像取り込み部303で取り込んだ画像と仮想画像生成部311で生成した仮想画像を合成して合成画像を作成し、表示部102Rに送信する。表示部102Rは、合成画像を表示する。
【0021】
なお、図2、図3では主撮像装置101L及び副撮像装置101Rがそれぞれ主情報処理装置201、副情報処理装置301といった別々の情報処理装置に接続されているが、これに限られるものではない。例えば、主撮像装置101L及び副撮像装置101Rが同一の情報処理装置に接続されていても良い。同一の情報処理装置に接続する構成の場合、この情報処理装置は、主情報処理装置201及び副情報処理装置301の両方の機能を備えることになる。また、位置姿勢や誤差検出状況などは、送受信するのではなく、情報蓄積部を使用して共有しても良い。また、主撮像装置101Lと副撮像装置101Rの区別は、デバイス名などの識別情報を利用して識別してもよいし、接続端子によって識別してもよい。
【0022】
図1の(b)は、上述した情報処理装置201、301に適用可能なコンピュータのハードウェア構成例を示すブロック図である。図1の(b)において、CPU121は、RAM122やROM123に格納されているプログラムやデータを用いて本コンピュータ全体の制御を行うと共に、本コンピュータが行う後述の各処理を実行する。RAM122は、外部記憶装置126からロードされたプログラムやデータを一時的に記憶するためのエリアを有する。また、RAM122は、I/F(インターフェース)127を介して外部(本実施形態の場合には撮像装置)から取得したデータ(本実施形態の場合には撮像装置の位置姿勢や誤差検出状況)や指標に関する情報を一時的に記憶するためのエリアを有する。更にRAM122は、CPU121が各種の処理を実行する際に用いるワークエリアを有する。このように、RAM122は、各種の用途に応じて適宜エリアを提供することができる。ROM123は、本コンピュータの設定データやブートプログラムなどを格納する。
【0023】
操作部124は、キーボードやマウスなどにより構成されており、本コンピュータの操作者が操作することで、各種の指示をCPU121に対して入力することができる。表示部125は、CRTや液晶画面等により構成されており、CPU121による処理結果を画像や文字などでもって表示することができる。本実施形態では、表示部125は、図2、図3における表示部102L、102Rで代用してもよい。
【0024】
外部記憶装置126は、ハードディスクドライブ装置に代表される大容量情報記憶装置である。ここにはOS(オペレーティングシステム)や、RAM122が保持する各種の情報(データ)、本コンピュータが行う後述の各処理をCPU121に実行させるためのプログラムやデータが保存されている。プログラムには、立体視を実現するためのコンピュータプログラムが含まれる。立体視を実現するためのコンピュータプログラムとは、例えば、
・撮像装置101L及び副撮像装置101Rの位置姿勢を算出するためのプログラム、
・内部パラメータや撮像装置間パラメータを算出するためのプログラム、
・誤差検出や誤差検出後の処理を実行するプログラム、
・プログラムによって算出された値を用いてCGを描画するプログラムである。
これらのコンピュータプログラムやデータはCPU121による制御に従って、コンピュータ読み取り可能な記憶媒体から適宜RAM122にロードされる。そしてCPU121はこのロードされたプログラムやデータを用いて処理を実行する。主撮像装置101L及び副撮像装置101Rが同一の情報処理装置に接続している場合には、位置姿勢情報や誤差検出状況などの情報がこの外部記憶装置126を介して共有される。以上のように、後述する各動作は、CD−ROM,DVD,フラッシュメモリ等のコンピュータ読み取り可能な記憶媒体に格納されたプログラムをCPU121が実行することにより実行されるものである。
【0025】
I/F127は、本実施形態の場合には、撮像装置を本情報処理装置に接続するためのインターフェースや、外部とのネットワーク接続するためのインターフェースとして機能するものである。例えば、撮像装置(101L,101R)が撮像した画像は、このI/F127を介して本コンピュータのRAM122や外部記憶装置126に入力される。また、主撮像装置101L及び副撮像装置101Rが別々の情報処理装置(201,301)に接続されている場合には、位置姿勢情報や誤差検出状況などの情報がこのI/F127を介して送受信される。また、表示部102L,102Rを駆動するための信号も、このI/F127を介して送信される。128は上述の各部を繋ぐバスである。
【0026】
なお、本実施形態に係る情報処理装置201、301に適用可能なコンピュータのハードウェア構成については同図に示した構成に限定するものではなく、情報処理装置201、301が行う後述の各処理を実行可能な構成であれば良い。
【0027】
以上のような構成を備えた本実施形態のシステムによる、撮像装置の内部パラメータや撮像装置間の相対位置姿勢が変化した場合に、観察者への悪影響を防ぐための処理を、図5のフローチャートを用いて説明する。なお、図5において、縦の点線よりも左側のフローチャートは主情報処理装置201の処理フローを示しており、右側のフローチャートは副情報処理装置301の処理フローを示している。以下に説明する処理は、情報蓄積部208,307において保持されている情報(内部パラメータや装置間位置姿勢情報)の正当性を判断し、正当でないと判定された場合にキャリブレーション処理を実行するものである。以下に説明する処理は、装置の起動時に実行されるものとする。もちろん、製造時にもしくはユーザにより設定された時間間隔で繰り返し実行されるようにしてもよい。
【0028】
まず、主情報処理装置201の処理を説明する。ステップ501において、内部パラメータ計測部207は、主撮像装置101Lが撮影した画像を用いて内部パラメータを計測する。ステップ502において、誤差検出部209は、ステップ501で計測した内部パラメータの値(実際の値)と、情報蓄積部208に蓄積されている現在適用中の内部パラメータの値とを比較する。そして、例えば、両内部パラメータの差を算出し、その差が所定値を越える場合に、両者にずれがあると判定する。ステップ503において、ステップ502での比較の結果、内部パラメータの値にずれがなかった場合には、処理はステップ504に進む。
【0029】
ステップ504おいて、誤差検出部209は、誤差が発生していない旨のメッセージを送信部211を介して副情報処理装置301に送信する。ステップ505において、位置姿勢計測部206は、主撮像装置101Lの位置姿勢を計測する。位置姿勢の計測方法としては、指標検出部205で検出した指標の画像上での位置と指標に付加された指標自身の大きさから、当該指標と主撮像装置101Lの相対位置姿勢を算出することが挙げられる。ステップ506において、位置姿勢計測部206は、ステップ505で計測した当該指標と主撮像装置101Lの相対位置姿勢を、送信部211を介して副情報処理装置301へ送信する。
【0030】
一方、ステップ502での比較の結果、ずれが検出された場合には、処理はステップ503からステップ507に進む。ステップ507において、誤差検出部209は、主撮像装置101Lの内部パラメータに誤差が発生した旨を、送信部211を介して副情報処理装置301へ送信する。ステップ508において、誤差処理部210は、実行すべき誤差発生時の処理を決定し、ステップ509においてその処理を実行する。
【0031】
次に、副情報処理装置301の処理を説明する。
ステップ510において、内部パラメータ計測部306は、副撮像装置101Rの内部パラメータを計測する。ステップ511において、誤差検出部308は、ステップ510で計測した内部パラメータの値(実際の値)と情報格納部307に蓄積されている適用中の内部パラメータの値とのずれを算出する。算出した結果は、誤差処理部309に送られる。
【0032】
主情報処理装置201から、内部パラメータに誤差が発生していない旨のメッセージが受信された場合は、その旨が誤差処理部309に通知される(ステップ512)。また、主情報処理装置201から主撮像装置101Lの位置姿勢を受信した場合(ステップ513)は、位置姿勢計測部305が主撮像装置101Lと副撮像装置101Rの相対位置姿勢である撮像装置間位置姿勢を計測する(ステップ514)。撮像装置間位置姿勢の計測方法は、次のとおりである。すなわち、位置姿勢計測部305は、指標検出部304で検出した指標の画像上での位置と当該指標自身の大きさを画像から読み取り、これらの情報から当該指標と副撮像装置101Rとの相対位置姿勢を算出する。そして、位置姿勢計測部305は、この算出結果とステップ513において受信した主撮像装置101Lの位置姿勢から、撮像装置間位置姿勢を算出する。そして、誤差検出部308は、ステップ514で計測した撮像装置間位置姿勢の値(実際の値)と情報蓄積部307に蓄積されている現在適用中の撮像装置間位置姿勢の値とを比較する。比較においては、例えば、ステップ514で計測した撮像装置間位置姿勢の値と情報蓄積部307に蓄積されている撮像装置間位置姿勢の値との差が所定値を越えたか否かによりずれの有無が検出される。誤差検出部308は、この比較の結果、つまり、撮像装置間位置姿勢にずれがあるか否かの結果を誤差処理部309へ送る。また、受信部203は、主情報処理装置201から内部パラメータに誤差が発生した旨のメッセージを受信すると、これを誤差処理部309へ通知する(ステップ516)。
【0033】
ステップ517において、誤差処理部309は、ステップ511、ステップ512、ステップ515、ステップ516にて得られた誤差発生有無の情報から、誤差発生時の処理を実行するか否かを判定する。誤差発生時の処理を実行すると判定された場合、誤差処理部309は、ステップ518において、実行する処理を決定する。実行する処理については後述する。ステップ519において、ステップ518で決定された処理を誤差処理部210が実行する。例えば、主撮像装置101Lにおいて内部パラメータのずれが検出された場合は、ステップ508,518において、内部パラメータと装置間位置姿勢情報を校正する処理(例えば図6の(a))の実行が決定される。また、副撮像装置101Rの内部パラメータのみにずれが検出された場合は、ステップ518で副撮像装置101Rの内部パラメータと装置間位置姿勢情報を校正する処理の実行が決定される。また、装置間位置姿勢情報のずれのみが検出された場合には、ステップ518で装置間位置姿勢情報の校正処理のみを行うように決定される(例えば図6の(b))。
【0034】
図6の(a)に示すフローチャートを用いて、主情報処理装置201(ステップ509)及び副撮像装置301(ステップ519)にて実行される処理を説明する。図6の(a)は、主撮像装置101Lの内部パラメータにずれを検出した場合に(ステップ503でYES)、主情報処理装置201及び副情報処理装置301で実行される処理である。また、
・ステップ503で主撮像装置101Lの内部パラメータについてずれが検出されず、
・ステップ511または515で、副撮像装置101Rの内部パラメータあるいは撮像装置間位置姿勢にずれが検出された場合、には副情報処理装置301のみに図6の(a)に示す処理が実行される。
【0035】
ステップ601において、誤差処理部210,309は、内部パラメータ計測部207、306に、内部パラメータを計測させる。ステップ501,510における内部パラメータの計測結果をそのまま用いてもよい。次に、ステップ602において、誤差処理部210,309は、情報蓄積部208,307に蓄積されている現在適用中の内部パラメータをステップ601で取得された値に置き換え、適用する。誤差処理部210による処理はここまでであり、以下のステップ603,604の処理は誤差処理部309のみが行う。
【0036】
ステップ603において、誤差処理部309は、位置姿勢計測部305に、撮像装置間位置姿勢を計測させる。ステップ514での計測結果をそのまま用いても良い。撮像装置間位置姿勢の計測方法は、ステップ514で上述したとおりである。次に、ステップ604において、誤差処理部309は、情報蓄積部307に蓄積されている現在適用中の撮像装置間位置姿勢をステップ503で取得された値に置き換え、適用する。
【0037】
また、ステップ502,511における内部パラメータの比較でずれは検出されず、撮像装置間位置姿勢にのみずれを検出した場合には(ステップ515)、誤差処理部309が図6の(b)で示した処理を実行するようにしてもよい。すなわち、ステップ621において、誤差処理部309は位置姿勢計測部305に、撮像装置間位置姿勢の計測を行わせる。ステップ514の計測結果を用いてもよい。そして、ステップ622において、誤差処理部309は、情報蓄積部307に蓄積されている現在適用中の撮像装置間位置姿勢をステップ621で取得された値に置き換え、適用する。
【0038】
そのほか、ステップ509,519において、誤差処理部210,309は、図7に示すような警告を表示するようにしてもよい。警告の表示は、図6の(a),(b)で説明した処理の前あるいは後のいずれで実施されてもよい。或いは、ブザーや音声などにより警告をユーザに通知するようにしてもよい。また、図6の(a),(b)の処理を実施せず、警告を表示した後に立体視を実現するためのプログラムの一部あるいは全てを強制的に終了するようにしてもよい。これらのいずれの処理を実行させるかを、ユーザが予め誤差発生時の処理として設定しておくようにしてもよい。
【0039】
[第2実施形態]
図8のフローチャートを用いて、本発明の第2実施形態を説明する。第2実施形態では、装置間位置姿勢情報にずれが発生したことの検出により、キャリブレーション処理の実行を決定する。図8において、フローチャートの縦の点線よりも左側は主情報処理装置201の処理フローを示しており、右側は副撮像装置301の処理フローを示している。なお、システム構成、主情報処理装置201及び吹く情報処理装置301の構成については第1実施形態(図1〜図3)と同様の構成を採用できるので、ここでは説明を省略する。
【0040】
ステップ801において、位置姿勢計測部206は、主撮像装置101Lの位置姿勢を計測する。計測方法は、次のとおりである。まず、位置姿勢計測部206は、指標検出部205で検出した指標の画像上での位置と指標に付加された指標自身の大きさから、当該指標と主撮像装置101Lとの相対位置姿勢を算出する。そして、位置姿勢計測部206は、この相対位置姿勢と、蓄積部208に蓄積されている指標定義情報から主撮像装置101Lの位置姿勢を算出する。
【0041】
ステップ802において、位置姿勢計測部206は、ステップ801で計測した結果を送信部211を介して副情報処理装置301へ送信する。ステップ803において、副情報処理装置301の受信部302がこれを受信する。ステップ804において、位置姿勢計測部305は副撮像装置101Rの位置姿勢を計測する。ここで、副撮像装置101Rの位置姿勢は、ステップ803で主情報処理装置201から受信した主撮像装置101Lの位置姿勢と、情報蓄積部307に蓄積されている撮像装置間位置姿勢から算出される。ステップ805において、仮想画像生成部311は、副撮像装置101Rの位置姿勢から指標検出部304で検出した指標を投影面に投影し、投影面上での指標位置(投影指標位置)を算出する。ステップ806において、誤差検出部308は、ステップ805で算出した指標投影位置と副撮像装置301が撮影した実写画像上の指標の位置の値を比較する。なお、撮像画像上の指標の実写画像の位置は指標検出部304により検出される。
【0042】
誤差検出部308は、ステップ806での指標位置比較の結果、指標投影位置と実写画像上の指標の位置にずれがなかった場合には、誤差が発生していない旨のメッセージを送信部310を介して主情報処理装置201に送信する(ステップ807,808)。そして、副情報処理装置301側でのパラメータ修正に関わる処理は終了となる。他方、ステップ806での指標位置比較の結果、投影指標位置と実写画像の指標位置にずれがあった場合には、誤差検出部308は誤差が発生した旨のメッセージを送信部310を介して主情報処理装置201に送信する(ステップ807,809)。ステップ810において、誤差処理部309は、副情報処理装置301での誤差発生時の処理を決定し、ステップ811において決定された処理を実行する。実行される処理については図9のフローチャートにより後述する。
【0043】
主情報処理装置201の受信部203が、副情報処理装置301から誤差が発生していない旨のメッセージを受信した場合には(ステップ812)、そのまま主情報処理装置201でのパラメータ修正に関わる処理が終了となる。主情報処理装置201の受信部203が、副情報処理装置301から誤差が発生した旨のメッセージを受信した場合には、処理はステップ813からステップ814に進む。ステップ814において、誤差処理部210は、主情報処理装置201での誤差発生時の処理を決定し、ステップ815において処理を実行する。
【0044】
次に、図9のフローチャートを用いて、誤差発生時に実行されるキャリブレーション処理を説明する。フローチャートの縦の点線よりも左側は主情報処理装置201の処理フロー(ステップ815)を示しており、右側は副情報処理装置301の処理フロー(ステップ811)を示している。第2実施形態のキャリブレーション処理では、装置間位置姿勢情報が校正され、内部パラメータの校正は必要に応じて(校正後の装置間位置姿勢情報の検証結果に応じて)実行される。
【0045】
ステップ901において、副情報処理装置301の誤差処理部309は、位置姿勢計測部305に撮像装置間位置姿勢を計測させる。撮像装置間位置姿勢の計測方法については、上述したとおりである。ステップ902において、誤差処理部309は、ステップ901での計測結果を検証する。検証方法としては、例えば、図8のフローチャートで説明したのと同様の方法を用いることができる。すなわち、誤差処理部309は、誤差検出部308に、ステップ901で得られた撮像間位置姿勢を用いて取得される投影指標の位置と実写中の指標の位置とを比較させる。そして、誤差処理部309はその比較の結果からずれが発生したか否かを判断し、ステップ901で計測した撮像装置間位置姿勢の値が正しいか否かを検証する。
【0046】
検証の結果、正しいと判断された場合には、誤差処理部309は、蓄積部307に蓄積されている現在適用中の撮像装置間位置姿勢をステップ901で計測された値に置き換え、適用する(ステップ903,904)。そして、ステップ811における誤差発生時の処理を終了する。他方、検証の結果、正しくないと判断された場合には、誤差処理部309は撮像装置間位置姿勢が正しくない旨のメッセージを主情報処理装置201へ送信する(ステップ903,905)。そして、ステップ906において、誤差処理部309は、内部パラメータ計測部306に副撮像装置301の内部パラメータを計測させ、計測された内部パラメータで情報蓄積部307を更新する。
【0047】
一方、主情報処理装置201の誤差処理部210は、ステップ907において、副情報処理装置301から撮像装置間位置姿勢が正しくない旨のメッセージを受信すると、ステップ908〜910の処理を実行する。ステップ908において、誤差処理部210は、内部パラメータ計測部207に主撮像装置101Lの内部パラメータを計測させ、計測された内部パラメータで情報蓄積部208を更新する。ステップ909において、誤差処理部210は、位置姿勢計測部206に、主撮像装置101Lの位置姿勢を計測させる。そして、ステップ910において、誤差処理部210は、ステップ909で計測された位置姿勢を副情報処理装置301に、送信部310を介して送信する。
【0048】
副情報処理装置301の誤差処理部309は、受信部302が主情報処理装置201から主撮像装置101Lの位置姿勢を受信すると、処理をステップ1101に戻し、撮像装置間位置姿勢の計測を実施する(ステップ911)。その後、上述したステップ901〜処理が再度、繰り返される。
【0049】
なお、誤差発生時に実行される処理は、図6の(a),(b)に示した処理であってもよい。そのほか、第1実施形態と同様に、図7に示すような警告を表示してもよい。また、警告の表示は、図6の(a)、(b)図9で説明した処理の前あるいは後に実施されてもよい。また、図6の(a),(b)や図9の処理を実施せず、警告を表示した後に立体視を実現するためのプログラムの一部あるいは全てを強制的に終了してもよい。
【0050】
[第3実施形態]
第3実施形態では、装置間位置姿勢情報や内部パラメータの正当性を、各撮像装置から得られた画像に含まれるエッジを利用して判断する。以下、図10のフローチャートを用いて、第3実施形態について説明する。フローチャートの縦の点線よりも左側は主情報処理装置201の処理フローを示しており、右側は副撮像装置301の処理フローを示している。
【0051】
ステップ1001及び1002において、主情報処理装置201の誤差検出部209及び副情報処理装置301の誤差検出部308は、主撮像装置101L及び副撮像装置101Rが撮影したそれぞれの画像から、エッジを抽出する。なお、エッジは、画像中の濃度が急激に変わる点などとする。ステップ1003において、副情報処理装置301の誤差検出部308は抽出したエッジ情報を主情報処理装置201へ送信する。
【0052】
ステップ1004において、主情報処理装置201の誤差検出部209は副情報処理装置301からエッジ情報を受信し、自身が抽出したエッジとの対応付けを行う。ステップ1005において、誤差検出部209は、ステップ1004で対応付けしたそれぞれのエッジが互いに平行か否かを検証する。それぞれのエッジが平行であると判断された場合には、誤差検出部209は誤差が発生していない旨のメッセージを副情報処理装置301へ送信し、処理を終える(ステップ1006,1007)。他方、平行でないと判断された場合には、誤差検出部209は、誤差が発生している旨のメッセージを副情報処理装置301へ送信し、処理をステップ1009へ進める(ステップ1006,1008)。ステップ1009において、誤差処理部210は誤差発生時のキャリブレーション処理を決定し、ステップ1010において、処理を実行する。
【0053】
副情報処理装置301の誤差検出部308が、誤差が発生していない旨のメッセージを主情報処理装置201から受信した場合には、副情報処理装置301での処理は終了となる(ステップ1011)。誤差検出部308が、誤差が発生している旨のメッセージを受信した場合には、処理をステップ1013に進める(ステップ1012)。ステップ1013において、誤差処理部309は、誤差発生時の処理を決定し、ステップ1014において、処理を実行する。なお、誤差発生時に実行する処理は、第1、第2実施形態により上述したとおりである。また、第3実施形態では、主情報処理装置201においてエッジが平行か否かを判断するようにしたが、副情報処理装置301においてエッジが平行か否かを判断するようにしてもよい。
【0054】
[第4実施形態]
図11、図12は、第4実施形態による情報処理装置の構成を示すブロック図である。図11は、主撮像装置101Lに接続された主情報処理装置201の構成を、図12は副撮像装置101Rに接続された副情報処理装置301の構成を示す。第4実施形態では、通信の方向が主情報処理装置201から副情報処理装置301のみとなっている。
【0055】
情報蓄積部1108では、現実空間中の指標の位置姿勢を定義した指標定義情報を保持している。この定義情報は、予め作成しておく必要がある。作成方法としては、例えば、指標の位置姿勢を手作業で計測して作成しても良いし、あるいは、指標を含んだ画像をカメラで撮影し、撮影画像から三次元復元を行って作成しても良い。位置姿勢算出部1106は、位置姿勢センサ103から取得した位置姿勢情報から主撮像装置101Lの位置姿勢を算出する。あるいは、指標検出部205で検出された指標と情報蓄積部1108に保持されている指標定義情報から位置姿勢を算出する。あるいは、これらを併用して位置姿勢を算出する。送信部211は、位置姿勢算出部1106で算出された主撮像装置101Lの位置姿勢を副情報処理装置301の受信部302に送信する。
【0056】
投影指標位置算出部1107は、指標検出部205で検出された指標を、位置姿勢算出部1106で算出された主撮像装置101Lの位置姿勢と情報蓄積部1108に保持されている指標定義情報とに基づいて撮影画像上に投影し、画像上での位置を算出する。誤差検出/処理部1109は、撮影画像中の指標と投影指標の画像上の位置の誤差を検出し、(所定量を超える)誤差が検出された場合には、事前にユーザによって設定された処理を実行する。本例では、“キャリブレーションの自動実行”、“警告を表示して強制的に終了”、“警告の表示のみ”のいずれかに設定されるものとする(詳細は後述する)。投影指標描画部1112は、投影指標位置算出部1107で算出した撮影画像上の位置に投影指標を描画する。画像合成部1113は、画像取り込み部204で取り込んだ画像と投影指標描画部1112で描画した投影指標とを合成した合成画像を作成し、表示部102Lに送信する。表示部102Lは、合成画像を表示する。
【0057】
次に、図12により第4実施形態の副情報処理装置301について説明する。
受信部302は、本実施形態では、送信部211から送信された主撮像装置101Lの位置姿勢を受信し、位置姿勢算出部1205に送信する。情報蓄積部1207は、指標の現実空間中での位置姿勢を定義した指標定義情報や、主撮像装置101Lと副撮像装置101Rの位置姿勢関係を保持している。この定義情報は、上述したのと同様な方法で、予め作成しておく必要がある。位置姿勢算出部1205は、受信部302で受信した主撮像装置101Lの位置姿勢と、情報蓄積部1207に保持されている主撮像装置101Lと副撮像装置101Rとの位置姿勢関係を用いて、副撮像装置101Rの位置姿勢を算出する。
【0058】
投影指標位置算出部1206は、位置姿勢算出部1205で算出された副撮像装置101Rの位置姿勢と情報蓄積部1207に保持されている指標定義情報とに基づき、指標検出部304で検出された指標を撮影画像上に投影し、画像上での位置を算出する。誤差検出/処理部1208は、撮影画像中の指標と投影指標の画像上の位置の誤差を検出する。投影指標描画部1211は、投影指標位置算出部1206で算出した撮影画像上の位置に投影指標を描画する。画像合成部1212は、画像取り込み部303で取り込んだ画像と投影指標描画部1211で描画した投影指標を合成した合成画像を作成し、表示部102Rに送信する。表示部102Rは、合成画像を表示する。
【0059】
なお、図11、図12では主撮像装置101L及び副撮像装置101Rがそれぞれ主情報処理装置201、副情報処理装置301といった別々の情報処理装置に接続されているが、これに限られるものではない。例えば、主撮像装置101L及び副撮像装置101Rが同一の情報処理装置に接続されていても良いことは第1実施形態で説明したとおりである。また、上述の主情報処理装置201、副情報処理装置301に適用可能なコンピュータのハードウェア構成は、図1の(b)により説明したとおりである。
【0060】
次に、図13のフローチャートを用いて、第4実施形態の処理を説明する。まず、主情報処理装置201における動作を説明する。ステップ1301において、誤差検出/処理部1109は、位置姿勢計測部206で算出された主撮像装置101Lの位置姿勢と実際の位置姿勢との間に誤差が発生したときに実行する処理を設定する。実行する処理は、“キャリブレーションの自動実行”、“警告を表示して強制的に終了”、“警告の表示のみ”のいずれかである。なお、誤差検出/処理部1109は設定された処理を副情報処理装置301へ送信部211を介して送信する。これは、主情報処理装置201と副情報処理装置301において誤差発生時の処理を一致させるためである。ステップ1302において、画像取り込み部204は、主撮像装置101Lを用いて現実空間を撮影することにより得られた画像を取り込む。ステップ1303において、指標検出部205は画像取り込み部204によって取り込まれた画像から指標を検出し、位置姿勢算出部1106は指標検出部205が検出した指標の画像における位置等に基づいて主撮像装置101Lの位置を算出する。位置姿勢算出部1106は、算出した位置姿勢を送信部211を介して副情報処理装置301に送信する。
【0061】
ステップ1304において、投影指標位置算出部1107は、指標検出部205で検出された指標を、位置姿勢算出部1106で算出された主撮像装置101Lの位置姿勢と情報蓄積部1108に保持されている指標定義情報とに基づいて撮影画像上に投影する。そして、この投影指標の画像上での位置を算出する。投影指標描画部1112は、算出された投影指標の位置と当該指標の定義情報を用いて指標を描画する。そして、画像合成部1113は、投影指標描画部1112によって描画された投影指標の画像を撮像画像に合成し、表示部102Lに表示する。
【0062】
ステップ1305において、誤差検出/処理部1109は、撮像画像中の指標の位置と投影指標の位置が一致しているか否かを判断する。図14は画像合成部1113が、投影指標描画部1112により描画された投影指標の画像を撮像画像に合成して得られた合成画像の一例を示す図である。破線が投影指標、それ以外の部分が撮影画像である。図14の(a)では、撮影画像中の指標の位置と投影指標の位置が一致しており、誤差が検出されないことを表している。一方、図14の(b)では、撮影画像中の指標の位置と投影指標の位置が一致していない。これは、位置姿勢算出部1106において算出した主撮像装置101Lの位置姿勢が実際の位置姿勢と一致していないことを表している。ステップ1305において、誤差検出/処理部1109は、撮影画像中の指標の位置と投影指標の位置が一致しているか否かを判断し、一致していると判断した場合には、処理をステップ1303に戻す。一方、ステップ1305において、撮影画像中の指標の位置と投影指標の位置が一致していないと判断された場合には、処理はステップ1306に進む。なお、撮影画像中の指標位置と投影指標の位置が一致するか否かは、指標検出部205が撮影画像から検出した指標の実写画像の位置と、投影指標位置算出部1107が算出した投影指標の位置との差が所定範囲内にあるかどうかで判断できる。
【0063】
ステップ1306において、誤差検出/処理部1109は、ステップ1301で設定された誤差発生時の処理が、“キャリブレーションの自動実行”であるか否かを判定する。“キャリブレーションの自動実行”に設定されていた場合、誤差検出/処理部1109は、ステップ1307において、誤差検出/処理部1109はキャリブレーションを実行する。キャリブレーションの詳細については後述する。ステップ1308において、誤差検出/処理部1109は、ステップ1307で実行したキャリブレーションの結果を検証する。検証方法の一例としては、キャリブレーション結果を一時的に適用して、誤差検出までの処理(ステップ1302〜ステップ1304)を実施して、誤差が検出されないか否かを試すことが挙げられる。
【0064】
ステップ1309において、検証の結果からキャリブレーションが有効であると判断された場合には、ステップ1310において、誤差検出/処理部1109はキャリブレーション結果を適用し、処理をステップ1302に戻す。一方、ステップ1309において、キャリブレーションが有効でないと判断された場合には、処理はステップ1311へ進む。
【0065】
ステップ1311において、誤差検出部/処理部1109は、誤差発生時の処理として“警告を表示して強制的に終了”が設定されているか否かを判定する。“警告を表示して強制的に終了”が設定されている場合、誤差検出部/処理部1109は、ステップ1312において、図7に示したような警告を表示部102Lに表示させ、本処理を終了する。一方、ステップ612において、“警告を表示して強制的に終了”が設定されていないと判断された場合、つまり“警告のみを表示”であった場合には、処理はステップ1313に進む。ステップ1313において、誤差検出部/処理部1109は、図7に示すような警告を表示部102Lに表示させ、位置姿勢の算出を続行する。なお、ステップ1309のNO分岐によってステップ1311に到達した場合には、ステップ1313に処理が進み、図7に示すような警告が表示部102Lに表示され、位置姿勢の算出は続行されることになる。
【0066】
以上、図13のフローチャートを用いて主情報処理装置201の処理を説明したが、副情報処理装置301の処理も同様である。すなわち、図12において図11と名称が一致する各部が、副撮像装置101Rに関して上述した処理を実行することになる。但し、ステップ1301において誤差検出/処理部1208は、主情報処理装置201より送信された処理を、誤差発生時の処理として設定する。また、ステップ1303において、位置姿勢算出部1205は、受信部302が受信した主撮像装置101Lの位置姿勢と、情報蓄積部1207にて保持されている主撮像装置と副撮像装置の位置姿勢関係とに基づいて副撮像装置101Rの位置姿勢を算出する。さらに、ステップ1304では、算出された副撮像装置101Rの位置姿勢と、情報蓄積部1207に保持されている指標定義情報とに基づいて撮影画像上に投影し、その画像上での位置を算出する。
【0067】
次に、図6の(a)に示したフローチャートを流用することにより、第4実施形態のキャリブレーション(ステップ1307)のフローについて説明する。
【0068】
ステップ601において、誤差検出/処理部1109,1208は、撮像装置(101L,101R)の内部パラメータを計算する。ここでいう内部パラメータとは、撮像装置の焦点距離、主点位置及び歪を意味している。このような内部パラメータは、指標が含まれる複数の撮影画像を使用し、既知の方法(エポピーラ方程式を導入するなど)を用いて算出される。そして、ステップ602において、誤差検出/処理部1109,1208は、算出された内部パラメータを適用する。誤差検出/処理部1109の処理はここまでである。
【0069】
ステップ603において、誤差検出/処理部1208は、主撮像装置101Lと副撮像装置101Rとの撮像装置間位置姿勢を算出する。この撮像装置間位置姿勢は、
・副撮像装置101Rにより複数の撮影画像を取得するとともに、これらの撮影と同時点の主撮像装置101Lの位置姿勢を主情報処理装置201から取得し、
・主撮像装置101Lの位置姿勢を元に、副撮像装置101Rによる撮影画像中の指標と投影指標が一致するように計算を行う、ことにより算出される。
【0070】
次に、図15のフローチャートを用いて、キャリブレーション処理の別パターンを説明する。
ステップ1501において、誤差検出/処理部1208は、主撮像装置101Lと副撮像装置101Rとの間の位置姿勢関係(装置間位置姿勢)を計算する。位置姿勢関係の算出方法については、ステップ514(図5)等により上述したとおりである。次に、ステップ1502において、誤差検出/処理部1208は、主撮像装置101Lと副撮像装置101Rの位置姿勢関係の計算結果を検証する。検証方法としては、ステップ1308で説明したように、計算結果を一次的に適用し、誤差検出までの処理(ステップ1302〜ステップ1304)を実施して、誤差が検出されないか否かを試す方法が挙げられる。ステップ1503において、ステップ1501で算出された位置姿勢関係が有効であると判断された場合には、ステップ1504において、誤差検出/処理部1208はその計算結果を適用して、キャリブレーションを終了する。一方、ステップ1503において有効でないと判断された場合には、ステップ1505において、誤差検出/処理部1208は、内部パラメータがキャリブレーション済みかどうかを確認する。キャリブレーションが済んでいない場合、誤差検出/処理部1208は、ステップ1506において内部パラメータを計算し、ステップ1507において、内部パラメータ計算済みである旨を記録し、処理をステップ1501に戻す。一方、ステップ1505において、内部パラメータが計算済みであると確認された場合には、そのまま当該キャリブレーション処理を終了する。
【0071】
図16は、画像合成部1113及び画像合成部1212で作成した合成画像の一例を示す図である。図16の(a)では、画像合成部1113及び画像合成部1212で作成した合成画像の両方共が、撮像画像中の指標と投影指標が一致していない場合を示している。この場合、カメラ内部パラメータが実際の値と異なっていることが考えられるため、図6の(a)に示したキャリブレーション処理が適している。また、図16の(b)は、画像合成部1212(副情報処理装置301)のみにおいて、撮像画像中の指標と投影指標が一致していない場合を示している。この場合、カメラ内部パラメータは正しく主撮像装置101Lと副撮像装置101Rの位置姿勢関係のみが実際の値と異なっていることが考えられるため、図15に示したキャリブレーション処理が適している。よって、誤差検出/処理部1109,1208は、そのようにキャリブレーション処理を選択し、実行する。
【0072】
[第5実施形態]
次に、第5実施形態のキャリブレーションに係わる処理を、図17のフローチャートを用いて説明する。
【0073】
ステップ1701において、誤差検出/処理部1109は、投影指標と撮影画像中の指標の誤差の許容範囲を設定する。許容範囲の指定方法としては、誤差を画素数で指定しても良いし、表示部102Lの総画素数に対する誤差の画素数の比で指定しても良い。これらの指定は、ユーザが不図示のユーザインターフェースを介して行うものとする。ステップ1702において、位置姿勢算出部1106は、主撮像装置101Lの位置を算出し、算出した位置姿勢を送信部211を介して副情報処理装置に301に送信する。この処理はステップ1303と同様である。
【0074】
次に、ステップ1703において、投影指標位置算出部1107は、ステップ1702で取得した位置姿勢と、指標検出部205が検出した指標の指標定義情報(情報蓄積部1108に保持されている)とに基づいて、当該指標の投影位置を算出する。そして、投影指標描画部1112が、算出された位置と、指標定義情報とに基づいて投影指標を描画する。ステップ1405において、画像合成部1113は、投影指標と撮影画像を合成し、合成画像を作成する。
【0075】
ステップ1406において、誤差検出/処理部1109は、合成画像から撮像画像中の指標と投影指標が一致しているか否かを判断する。すなわち、投影指標の投影位置と、指標検出部205により検出された撮影画像中における指標の位置とが一致するかどうかを判断する。投影指標と撮影画像中の指標が一致していると判断された場合には、処理をステップ1702に戻し、投影指標と撮影画像中の指標が一致していないと判断された場合には、処理をステップ1706に進める。ステップ1706において、誤差検出/処理部1109は、投影指標と撮影画像中の指標の誤差を算出し、算出した誤差がステップ1701で設定された許容範囲内か否かを判断する。許容範囲内と判断された場合には、処理はステップ1707に進む。許容範囲外と判断された場合には、処理はステップ1711に進み、図7に示したような警告を表示して処理を終了する。
【0076】
ステップ1707において、誤差検出/処理部1109は、キャリブレーションを自動実行する。キャリブレーションの処理は、上述したとおりである。ステップ1708において、誤差検出/処理部1109は、キャリブレーション結果を検証する。検証方法についても上述したとおりである。検証の結果、キャリブレーション結果が有効であると判断された場合には、処理はステップ1709からステップ1710に進み、誤差検出/処理部1109は当該キャリブレーション結果を適用する。そして、処理はステップ1402に戻り、位置算出が続行される。一方、キャリブレーション結果が有効でないと判断された場合には、処理はステップ1709からステップ1711に進み、図7に示す如き警告を表示して、本処理を終了する。
【特許請求の範囲】
【請求項1】
第1の撮像装置と第2の撮像装置により現実空間を撮影して得られた画像に仮想画像を合成して立体視のための画像を提供する情報処理装置であって、
前記第1の撮像装置の位置姿勢を計測する計測手段と、
前記第1の撮像装置と前記第2の撮像装置との間の位置姿勢の関係を示す、保持手段に保持されている装置間位置姿勢情報と、前記計測手段により計測された前記第1の撮像装置の位置姿勢とに基づいて、前記第2の撮像装置の位置姿勢を算出する算出手段と、
前記計測手段で計測された前記第1の撮像装置の位置姿勢と、前記算出手段で算出された前記第2の撮像装置の位置姿勢と、前記保持手段に保持されている前記第1及び第2の撮像装置の内部パラメータとを用いて、前記第1及び第2の撮像装置のそれぞれから得られた画像に仮想画像を合成する合成手段と、
前記第1または第2の撮像装置により撮像された画像に基づいて、前記保持手段に保持されている前記装置間位置姿勢情報、前記第1の撮像装置の内部パラメータ及び前記第2の撮像装置の内部パラメータの少なくともいずれかの情報の正当性を判断する判断手段と、
前記判断手段により前記情報が正当でないと判断された場合に、前記保持手段に保持されている前記情報を校正する校正手段とを備えることを特徴とする情報処理装置。
【請求項2】
前記判断手段により前記情報が正当でないと判断された場合に、その旨をユーザに通知する通知手段を更に備えることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記校正手段は、複数の校正処理を実行可能であり、
前記判断手段により正当でないと判断された前記情報が前記装置間位置姿勢情報であるか前記内部パラメータであるかによって、実行すべき校正処理を前記複数の校正処理から選択することを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記判断手段は、
前記第1及び第2の撮像装置により得られたそれぞれの画像から、前記第1及び第2の撮像装置のそれぞれの内部パラメータを計測する内部パラメータ計測手段を備え、
前記内部パラメータ計測手段で計測された内部パラメータと前記保持手段に保持されている内部パラメータとの差が所定値を超える場合に、その内部パラメータは正当でないと判断することを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記判断手段は、
前記第2の撮像装置により得られた画像から検出した所定のマーカの画像に基づいて前記第2の撮像装置の位置姿勢を算出する手段を備え、
前記計測手段により計測された前記第1の撮像装置の位置姿勢と前記第2の撮像装置の前記算出された位置姿勢とから装置間位置姿勢情報を算出し、当該算出した装置間位置姿勢情報と前記保持手段に保持されている装置間位置姿勢情報との差が所定値を超えた場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項1に記載の情報処理装置。
【請求項6】
前記判断手段は、
前記第2の撮像装置により得られた画像から検出した所定のマーカの画像に基づいて前記第2の撮像装置の位置姿勢を算出する手段と、
前記第2の撮像装置の前記算出された位置姿勢を用いて前記所定のマーカの画像を前記第2の撮像装置により得られた画像に投影する投影手段とを備え、
前記投影手段により投影された所定のマーカの画像と前記第2の撮像装置により得られた画像における前記所定のマーカの実写画像とのずれが所定値を超えた場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項1に記載の情報処理装置。
【請求項7】
前記判断手段は、
前記第1の撮像装置と前記第2の撮像装置により得られた画像のそれぞれからエッジを検出する検出手段を備え、
前記検出手段で検出されたエッジのうちの、前記第1の撮像装置と前記第2の撮像装置により得られた画像の間で対応するエッジが平行でない場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項1に記載の情報処理装置。
【請求項8】
前記判断手段は、
前記第1の撮像装置と前記第2の撮像装置により得られたそれぞれの画像から検出した所定のマーカの画像に基づいて、前記第1の撮像装置と前記第2の撮像装置のそれぞれの位置姿勢を算出する手段を備え、
前記計測手段により計測された前記第1の撮像装置の位置姿勢と前記第1の撮像装置の前記算出された位置姿勢とのずれが所定値を超えた場合、もしくは、前記算出手段により算出された前記第2の撮像装置の位置姿勢と前記第2の撮像装置の前記算出された位置姿勢とのずれが所定値を超えた場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項1に記載の情報処理装置。
【請求項9】
前記判断手段は、
前記第1の撮像装置と前記第2の撮像装置により得られたそれぞれの画像から検出した所定のマーカの画像に基づいて、前記第1の撮像装置と前記第2の撮像装置のそれぞれの位置姿勢を算出する手段と、
前記第1の撮像装置と前記第2の撮像装置のそれぞれの前記算出された位置姿勢を用いて、前記第1の撮像装置と前記第2の撮像装置により得られたそれぞれの画像に前記所定のマーカの画像を投影する投影手段とを備え、
前記第1の撮像装置と前記第2の撮像装置により得られた画像の少なくともいずれかにおいて、前記投影手段により投影された所定のマーカの画像と前記所定のマーカの実写画像とのずれが所定値を超えた場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項1に記載の情報処理装置。
【請求項10】
前記校正手段は、前記第1及び第2の撮像装置の内部パラメータを校正した後に前記装置間位置姿勢情報を校正することを特徴とする請求項1に記載の情報処理装置。
【請求項11】
前記校正手段は、
前記装置間位置姿勢情報を校正し、
前記第2の撮像装置により撮像された画像を用いて前記校正された装置間位置姿勢情報を検証し、
検証の結果、前記校正された装置間位置姿勢情報が正当であればこれを採用し、
正当でなければ前記第1の撮像装置と前記第2の撮像装置のそれぞれの内部パラメータを校正し、
内部パラメータを校正した後に再度、前記装置間位置姿勢情報を校正することを特徴とする請求項1に記載の情報処理装置。
【請求項12】
前記校正手段は、
前記保持手段に保持された情報を校正し、
前記校正の結果を検証し、
前記校正の結果が正当であれば前記校正の結果で前記保持手段の情報を更新し、前記校正の結果が正当でなければその旨を通知することを特徴とする請求項1に記載の情報処理装置。
【請求項13】
前記校正手段は、前記判断手段において前記保持手段に保持されている情報が正当でないと判断された場合であって、前記投影手段により投影された所定のマーカの像と前記所定のマーカの実写画像とのずれが所定範囲内である場合に、前記保持手段に保持されている前記情報の校正処理を実行することを特徴とする請求項9に記載の情報処理装置。
【請求項14】
第1の撮像装置と第2の撮像装置により現実空間を撮影して得られた画像に仮想画像を合成して立体視のための画像を提供する情報処理装置によるキャリブレーション処理方法であって、
計測手段が、前記第1の撮像装置の位置姿勢を計測する計測工程と、
算出手段が、前記第1の撮像装置と前記第2の撮像装置との間の位置姿勢の関係を示す、保持手段に保持されている装置間位置姿勢情報と、前記計測工程により計測された前記第1の撮像装置の位置姿勢とに基づいて、前記第2の撮像装置の位置姿勢を算出する算出工程と、
合成手段が、前記計測工程で計測された前記第1の撮像装置の位置姿勢と、前記算出工程で算出された前記第2の撮像装置の位置姿勢と、前記保持手段に保持されている前記第1及び第2の撮像装置の内部パラメータとを用いて、前記第1及び第2の撮像装置のそれぞれから得られた画像に仮想画像を合成する合成工程と、
判断手段が、前記第1または第2の撮像装置により撮像された画像に基づいて、前記保持手段に保持されている前記装置間位置姿勢情報、前記第1の撮像装置の内部パラメータ及び前記第2の撮像装置の内部パラメータの少なくともいずれかの情報の正当性を判断する判断工程と、
校正手段が、前記判断工程により前記情報が正当でないと判断された場合に、前記保持手段に保持されている前記情報を校正する校正工程とを備えることを特徴とするキャリブレーション処理方法。
【請求項15】
請求項14に記載されたキャリブレーション処理方法の各工程を、コンピュータに実行させるためのコンピュータプログラム。
【請求項1】
第1の撮像装置と第2の撮像装置により現実空間を撮影して得られた画像に仮想画像を合成して立体視のための画像を提供する情報処理装置であって、
前記第1の撮像装置の位置姿勢を計測する計測手段と、
前記第1の撮像装置と前記第2の撮像装置との間の位置姿勢の関係を示す、保持手段に保持されている装置間位置姿勢情報と、前記計測手段により計測された前記第1の撮像装置の位置姿勢とに基づいて、前記第2の撮像装置の位置姿勢を算出する算出手段と、
前記計測手段で計測された前記第1の撮像装置の位置姿勢と、前記算出手段で算出された前記第2の撮像装置の位置姿勢と、前記保持手段に保持されている前記第1及び第2の撮像装置の内部パラメータとを用いて、前記第1及び第2の撮像装置のそれぞれから得られた画像に仮想画像を合成する合成手段と、
前記第1または第2の撮像装置により撮像された画像に基づいて、前記保持手段に保持されている前記装置間位置姿勢情報、前記第1の撮像装置の内部パラメータ及び前記第2の撮像装置の内部パラメータの少なくともいずれかの情報の正当性を判断する判断手段と、
前記判断手段により前記情報が正当でないと判断された場合に、前記保持手段に保持されている前記情報を校正する校正手段とを備えることを特徴とする情報処理装置。
【請求項2】
前記判断手段により前記情報が正当でないと判断された場合に、その旨をユーザに通知する通知手段を更に備えることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記校正手段は、複数の校正処理を実行可能であり、
前記判断手段により正当でないと判断された前記情報が前記装置間位置姿勢情報であるか前記内部パラメータであるかによって、実行すべき校正処理を前記複数の校正処理から選択することを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記判断手段は、
前記第1及び第2の撮像装置により得られたそれぞれの画像から、前記第1及び第2の撮像装置のそれぞれの内部パラメータを計測する内部パラメータ計測手段を備え、
前記内部パラメータ計測手段で計測された内部パラメータと前記保持手段に保持されている内部パラメータとの差が所定値を超える場合に、その内部パラメータは正当でないと判断することを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記判断手段は、
前記第2の撮像装置により得られた画像から検出した所定のマーカの画像に基づいて前記第2の撮像装置の位置姿勢を算出する手段を備え、
前記計測手段により計測された前記第1の撮像装置の位置姿勢と前記第2の撮像装置の前記算出された位置姿勢とから装置間位置姿勢情報を算出し、当該算出した装置間位置姿勢情報と前記保持手段に保持されている装置間位置姿勢情報との差が所定値を超えた場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項1に記載の情報処理装置。
【請求項6】
前記判断手段は、
前記第2の撮像装置により得られた画像から検出した所定のマーカの画像に基づいて前記第2の撮像装置の位置姿勢を算出する手段と、
前記第2の撮像装置の前記算出された位置姿勢を用いて前記所定のマーカの画像を前記第2の撮像装置により得られた画像に投影する投影手段とを備え、
前記投影手段により投影された所定のマーカの画像と前記第2の撮像装置により得られた画像における前記所定のマーカの実写画像とのずれが所定値を超えた場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項1に記載の情報処理装置。
【請求項7】
前記判断手段は、
前記第1の撮像装置と前記第2の撮像装置により得られた画像のそれぞれからエッジを検出する検出手段を備え、
前記検出手段で検出されたエッジのうちの、前記第1の撮像装置と前記第2の撮像装置により得られた画像の間で対応するエッジが平行でない場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項1に記載の情報処理装置。
【請求項8】
前記判断手段は、
前記第1の撮像装置と前記第2の撮像装置により得られたそれぞれの画像から検出した所定のマーカの画像に基づいて、前記第1の撮像装置と前記第2の撮像装置のそれぞれの位置姿勢を算出する手段を備え、
前記計測手段により計測された前記第1の撮像装置の位置姿勢と前記第1の撮像装置の前記算出された位置姿勢とのずれが所定値を超えた場合、もしくは、前記算出手段により算出された前記第2の撮像装置の位置姿勢と前記第2の撮像装置の前記算出された位置姿勢とのずれが所定値を超えた場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項1に記載の情報処理装置。
【請求項9】
前記判断手段は、
前記第1の撮像装置と前記第2の撮像装置により得られたそれぞれの画像から検出した所定のマーカの画像に基づいて、前記第1の撮像装置と前記第2の撮像装置のそれぞれの位置姿勢を算出する手段と、
前記第1の撮像装置と前記第2の撮像装置のそれぞれの前記算出された位置姿勢を用いて、前記第1の撮像装置と前記第2の撮像装置により得られたそれぞれの画像に前記所定のマーカの画像を投影する投影手段とを備え、
前記第1の撮像装置と前記第2の撮像装置により得られた画像の少なくともいずれかにおいて、前記投影手段により投影された所定のマーカの画像と前記所定のマーカの実写画像とのずれが所定値を超えた場合に、前記保持手段に保持されている前記情報が正当でないと判断することを特徴とする請求項1に記載の情報処理装置。
【請求項10】
前記校正手段は、前記第1及び第2の撮像装置の内部パラメータを校正した後に前記装置間位置姿勢情報を校正することを特徴とする請求項1に記載の情報処理装置。
【請求項11】
前記校正手段は、
前記装置間位置姿勢情報を校正し、
前記第2の撮像装置により撮像された画像を用いて前記校正された装置間位置姿勢情報を検証し、
検証の結果、前記校正された装置間位置姿勢情報が正当であればこれを採用し、
正当でなければ前記第1の撮像装置と前記第2の撮像装置のそれぞれの内部パラメータを校正し、
内部パラメータを校正した後に再度、前記装置間位置姿勢情報を校正することを特徴とする請求項1に記載の情報処理装置。
【請求項12】
前記校正手段は、
前記保持手段に保持された情報を校正し、
前記校正の結果を検証し、
前記校正の結果が正当であれば前記校正の結果で前記保持手段の情報を更新し、前記校正の結果が正当でなければその旨を通知することを特徴とする請求項1に記載の情報処理装置。
【請求項13】
前記校正手段は、前記判断手段において前記保持手段に保持されている情報が正当でないと判断された場合であって、前記投影手段により投影された所定のマーカの像と前記所定のマーカの実写画像とのずれが所定範囲内である場合に、前記保持手段に保持されている前記情報の校正処理を実行することを特徴とする請求項9に記載の情報処理装置。
【請求項14】
第1の撮像装置と第2の撮像装置により現実空間を撮影して得られた画像に仮想画像を合成して立体視のための画像を提供する情報処理装置によるキャリブレーション処理方法であって、
計測手段が、前記第1の撮像装置の位置姿勢を計測する計測工程と、
算出手段が、前記第1の撮像装置と前記第2の撮像装置との間の位置姿勢の関係を示す、保持手段に保持されている装置間位置姿勢情報と、前記計測工程により計測された前記第1の撮像装置の位置姿勢とに基づいて、前記第2の撮像装置の位置姿勢を算出する算出工程と、
合成手段が、前記計測工程で計測された前記第1の撮像装置の位置姿勢と、前記算出工程で算出された前記第2の撮像装置の位置姿勢と、前記保持手段に保持されている前記第1及び第2の撮像装置の内部パラメータとを用いて、前記第1及び第2の撮像装置のそれぞれから得られた画像に仮想画像を合成する合成工程と、
判断手段が、前記第1または第2の撮像装置により撮像された画像に基づいて、前記保持手段に保持されている前記装置間位置姿勢情報、前記第1の撮像装置の内部パラメータ及び前記第2の撮像装置の内部パラメータの少なくともいずれかの情報の正当性を判断する判断工程と、
校正手段が、前記判断工程により前記情報が正当でないと判断された場合に、前記保持手段に保持されている前記情報を校正する校正工程とを備えることを特徴とするキャリブレーション処理方法。
【請求項15】
請求項14に記載されたキャリブレーション処理方法の各工程を、コンピュータに実行させるためのコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図15】
【図17】
【図14】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図15】
【図17】
【図14】
【図16】
【公開番号】特開2010−271950(P2010−271950A)
【公開日】平成22年12月2日(2010.12.2)
【国際特許分類】
【出願番号】特願2009−123533(P2009−123533)
【出願日】平成21年5月21日(2009.5.21)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成22年12月2日(2010.12.2)
【国際特許分類】
【出願日】平成21年5月21日(2009.5.21)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]