(57)【特許請求の範囲】
【請求項１】
複数の線分で表現可能な外観を有する現実物体、が配されている現実空間の画像を取得する手段と、
前記現実物体の外観を模した３次元仮想物体を構成する線分群を、当該仮想物体の形状を構成する線分群を最も低いレベルとして、それぞれにレベルが設定された複数のグループに分割し、グループ内に属するそれぞれの線分を仮想空間内で規定する為の規定データを、グループ毎に管理する管理手段と、
前記複数のグループから１つのグループを、最も低いレベルが設定されているグループから順に、最も高いレベルが設定されているグループまで、１つずつ選択する選択手段と、
前記選択手段が１つのグループを選択する毎に、当該選択されたグループに属する線分を規定するための規定データと、前記現実空間の画像と、を用いて、前記画像の視点の概略の位置姿勢を示す位置姿勢情報を更新する更新手段と、
前記更新手段により複数回更新された後の前記位置姿勢情報を、最終的な前記視点の位置姿勢を示す位置姿勢情報として出力する出力手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記更新手段は、
前記画像から検出したエッジと、前記選択手段が選択したグループに属する線分群を前記画像上に投影することで得られる線分群と、を用いて、前記画像の視点の概略の位置姿勢を示す位置姿勢情報を更新することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記更新手段は、
前記選択手段が１つのグループを選択する毎に、当該選択されたグループに属する線分を規定するための規定データと、前記現実空間の画像と、に加え、これまでに前記選択手段が選択した全てのグループに属する線分を規定するための規定データ、を用いて、前記画像の視点の概略の位置姿勢を示す位置姿勢情報を更新する
ことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
更に、
前記更新手段により更新された位置姿勢情報の精度が、予め定めた基準を満たしている場合には、前記選択手段、前記更新手段、の動作を中断させる手段を備え、
前記出力手段は、前記更新手段により更新された位置姿勢情報の精度が、予め定めた基準を満たしている場合に、当該位置姿勢情報を出力することを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
前記出力手段は、前記更新手段による更新前の位置姿勢情報と、前記更新手段による更新後の位置姿勢情報との差が閾値以上である場合には、前記更新前の位置姿勢情報を出力することを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
複数の線分で表現可能な外観を有する現実物体、が配されている現実空間の画像を取得する手段と、
前記現実物体の外観を模した３次元仮想物体を構成する線分群を、当該仮想物体の形状を構成する線分群を最も低いレベルとして、それぞれにレベルが設定された複数のグループに分割し、グループ内に属するそれぞれの線分を仮想空間内で規定する為の規定データを、グループ毎に管理する管理手段と、
ランダムに変更するための位置姿勢情報を、複数種類発生させる手段と、
それぞれの位置姿勢情報を、ランダムに変更する手段と、
前記複数のグループから１つのグループを、最も低いレベルが設定されているグループから順に、最も高いレベルが設定されているグループまで、１つずつ選択する選択手段と、
前記選択手段が１つのグループを選択する毎に、
前記選択されたグループに属する線分を規定するための規定データと、前記ランダムに変更された位置姿勢情報と、に基づいて、前記選択されたグループに属する線分群を前記画像上に投影する処理を、それぞれの位置姿勢情報について行う手段と、
前記画像から検出されるエッジと、それぞれの投影済みの線分と、の対応関係に基づいて、それぞれの位置姿勢情報に対する重み値を計算する手段と、
それぞれの位置姿勢情報と、それぞれの位置姿勢情報に対する重み値と、に基づいて、前記画像の視点の位置姿勢を求める計算手段と
を備えることを特徴とする画像処理装置。
【請求項７】
前記計算手段は、それぞれの位置姿勢情報に、対応する重み値でもって重み付けした結果の総和値を、前記画像の視点の位置姿勢として求めることを特徴とする請求項６に記載の画像処理装置。
【請求項８】
複数の線分で表現可能な外観を有する現実物体、が配されている現実空間の画像を取得する工程と、
前記現実物体の外観を模した３次元仮想物体を構成する線分群を、当該仮想物体の形状を構成する線分群を最も低いレベルとして、それぞれにレベルが設定された複数のグループに分割し、グループ内に属するそれぞれの線分を仮想空間内で規定する為の規定データを、グループ毎に管理する管理工程と、
前記複数のグループから１つのグループを、最も低いレベルが設定されているグループから順に、最も高いレベルが設定されているグループまで、１つずつ選択する選択工程と、
前記選択工程で１つのグループを選択する毎に、当該選択されたグループに属する線分を規定するための規定データと、前記現実空間の画像と、を用いて、前記画像の視点の概略の位置姿勢を示す位置姿勢情報を更新する更新工程と、
前記更新工程で複数回更新された後の前記位置姿勢情報を、最終的な前記視点の位置姿勢を示す位置姿勢情報として出力する出力工程と
を備えることを特徴とする画像処理方法。
【請求項９】
複数の線分で表現可能な外観を有する現実物体、が配されている現実空間の画像を取得する工程と、
前記現実物体の外観を模した３次元仮想物体を構成する線分群を、当該仮想物体の形状を構成する線分群を最も低いレベルとして、それぞれにレベルが設定された複数のグループに分割し、グループ内に属するそれぞれの線分を仮想空間内で規定する為の規定データを、グループ毎に管理する管理工程と、
ランダムに変更するための位置姿勢情報を、複数種類発生させる工程と、
それぞれの位置姿勢情報を、ランダムに変更する工程と、
前記複数のグループから１つのグループを、最も低いレベルが設定されているグループから順に、最も高いレベルが設定されているグループまで、１つずつ選択する選択工程と、
前記選択工程で１つのグループを選択する毎に、
前記選択されたグループに属する線分を規定するための規定データと、前記ランダムに変更された位置姿勢情報と、に基づいて、前記選択されたグループに属する線分群を前記画像上に投影する処理を、それぞれの位置姿勢情報について行う工程と、
前記画像から検出されるエッジと、それぞれの投影済みの線分と、の対応関係に基づいて、それぞれの位置姿勢情報に対する重み値を計算する工程と、
それぞれの位置姿勢情報と、それぞれの位置姿勢情報に対する重み値と、に基づいて、前記画像の視点の位置姿勢を求める計算工程と
を備えることを特徴とする画像処理方法。
【請求項１０】
コンピュータを、請求項１乃至７の何れか１項に記載の各手段として機能させるためのコンピュータプログラム。
【請求項１１】
請求項１０に記載のコンピュータプログラムを格納した、コンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を用いて、係る画像の視点の位置姿勢情報を求めるための技術に関するものである。
【背景技術】
【０００２】
近年、複合現実感（Mixed Reality）技術（以下、MR技術）と呼ばれる情報提示技術の研究が盛んである。MR技術の中でも、現実空間に仮想空間の情報を重ね合わせて表示する拡張現実感（Augmented Reality）技術（以下、AR技術）の研究が特に盛んである。AR技術に基づく情報提示装置としては、ビデオシースルー型のヘッドマウントディスプレイ（Head Mounted Display、以下HMD）が代表的である。ビデオシースルー型のHMDには、現実空間を撮影するカメラが内蔵されている。このカメラによって撮影された現実空間の画像上に、カメラの位置及び姿勢に応じてコンピュータグラフィクス（以下、CG）によって生成された仮想物体を重畳描画し、液晶パネルなどのHMDの表示デバイス上に表示する。AR技術によって、利用者は、あたかも仮想物体が現実空間中に実在するかのように感じることができる。
【０００３】
AR技術を実現する上で解決しなければならない大きな問題の一つとして、位置合わせの問題がある。仮想物体が現実空間に実在するように利用者が感じるためには、仮想物体と現実空間との間の幾何学的な整合性が取れている必要がある。即ち、仮想物体は現実空間中に存在するべき位置に存在しているように常に利用者から観察されなければならない。
【０００４】
ビデオシースルー型HMDを利用するARでは、HMDに内蔵されているカメラから画像が入力される毎に、画像撮影時のカメラの現実空間における位置及び姿勢を計測する。そしてこのカメラの位置及び姿勢と、焦点距離などのカメラの固有パラメータと、に基づいてCGを描画し、係るＣＧを現実空間の画像上に重畳するという処理が一般的に行われる。そのため、ビデオシースルー型HMDを利用するARの場合、位置合わせの問題は、HMDに内蔵したカメラの現実空間における位置及び姿勢を計測する問題となる。カメラの位置及び姿勢の計測は、例えば磁気センサや超音波センサ、光学式センサなどの6自由度のカメラの位置及び姿勢を計測する物理センサによって行うことが可能である。
【０００５】
ところで、ビデオシースルー型HMDを利用する場合には、ビデオシースルー型HMDに内蔵されているカメラからの画像情報を位置合わせのために利用することが可能である。画像情報を利用する位置合わせ方法は、物理センサを利用する方法に比べて手軽且つ低コストであるため、広く利用されている。画像情報を利用する位置合わせ手法では、現実空間中における3次元位置が既知の指標をカメラで撮影し、指標の撮影画像上での位置と3次元位置との対応をもとにカメラの位置及び姿勢を算出することが一般的に行われている。指標としては、現実空間中に人為的に配置したマーカを用いる場合と、現実空間中に元来存在するコーナー点やエッジなどの自然特徴を利用する場合とがある。実用上は、画像からの検出や識別がしやすい人工的なマーカが、計算負荷が小さく実時間処理に向いていることから、広く利用されている。
【０００６】
非特許文献１には、固有の2次元パターンを内部に有する正方形形状のマーカ（正方形マーカ）を指標として用いた位置合わせ方法が開示されている。この方法では、画像中から正方形マーカの領域を抽出し、内部の2次元パターンを用いて正方形マーカの識別を行う。さらに、カメラによって撮影された画像上における正方形マーカの各頂点の位置と、正方形マーカの各頂点のマーカ座標系における位置との対応をもとに、カメラの位置及び姿勢を算出している。
【０００７】
このような正方形マーカなどの人工的なマーカは手軽に利用できるため広く利用されているが、実際にはマーカを配置するのが物理的に不可能な場合や、美観を損ねるなどの理由のためにマーカを配置したくない場合には利用することができない。
【０００８】
近年の計算機能力の向上に伴い、自然特徴を利用した位置合わせ手法の研究が盛んに行われている。位置合わせに用いられる自然特徴として、コーナー点などの点特徴と、エッジなどの線特徴が主に用いられる。
【０００９】
非特許文献３には、Harris検出器により画像から点特徴を検出し、現実空間中で同一平面上に存在する点特徴を画像間で追跡することにより、カメラの位置及び姿勢を逐次的に推定する方法が開示されている。また、非特許文献２には、SIFT（Scale Invariant Feature Transform）と呼ばれる回転不変、スケール不変で識別性の高い点特徴を利用している。即ち、予め現実空間中のSIFT特徴の3次元位置のデータベースを作成しておき、カメラで撮影した画像から検出されるSIFT特徴とデータベース上のSIFT特徴とのマッチングをとることで点特徴を識別し、カメラの位置姿勢を算出する。
【００１０】
一般に点特徴は、特徴位置とその周辺画素の情報によって表現されるため、識別性が高いという利点がある。しかしながら、点特徴は、観察方向によって見えが大きく変わるため、検出精度が低く位置合わせの精度が悪い。また、特徴検出のための画像処理（例えば、テンプレートマッチングやSIFT特徴の検出）の計算負荷が大きいので、実時間処理のためには工夫が必要といった問題もある。
【００１１】
ここで、自然特徴を使った実時間処理可能な位置合わせ手法として、エッジを利用した位置合わせ（以下、エッジベース位置合わせ）の研究が多数行われている（例えば、非特許文献４、５、６を参照）。点特徴と違って、エッジはスケールや観察方向に対して不変であるため、エッジベース位置合わせは位置合わせ精度が高いという特徴がある。非特許文献４、５、６に示すエッジベース位置合わせ手法は、現実空間や現実物体の3次元モデルデータを持つことを前提としている。3次元モデルデータは線分の集合により記述される。エッジを利用した位置合わせでは、一般に次の（処理１）〜（処理３）によってなされる。
【００１２】
（処理１）  カメラの位置及び姿勢の予測値（例えば、前フレームでのカメラの位置及び姿勢）、及び予め校正済みのカメラの固有パラメータに基づいて、前述の3次元モデルデータ（線分モデル）を画像上に投影する。
【００１３】
（処理２）  投影された各線分毎に、画像上で一定間隔となるよう線分を分割する。そして、各分割点毎に、線分の法線方向にエッジ探索を行う。通常は、探索ライン上における輝度値の勾配が極大となる点がエッジとして検出される。
【００１４】
（処理３）  各分割点毎に検出されたエッジと、投影される線分との間の画像上での距離の総和が最小となるように、非線形最適化計算により繰り返しカメラの位置及び姿勢を補正する。
【００１５】
点特徴と違って、エッジは画像上での識別性が低い。エッジ探索時には、探索ライン上における輝度値の勾配が極大であるという情報しか利用しないため、しばしば誤ったエッジが検出される。非特許文献４、５では、誤検出されたエッジが最適化計算に悪影響を及ぼさないように、M推定と呼ばれる手法を用い、誤検出と思われるエッジのデータの重みを小さくして最適化計算を行っている。
【００１６】
また、非特許文献５では、投影された線分の法線方向にエッジ探索を行う際に、投影された線分と同じ方向を持つエッジが強く検出されるようなカーネルを使って画素値を畳み込むことで、方向の違うエッジが検出されることを防止している。さらに、畳み込み演算の演算結果も最適化計算における重みとして利用し、投影線分と方向が類似しているエッジのデータに大きな重みを与え、誤検出エッジの影響が小さくなるようにしている。
【００１７】
さらに、非特許文献６では、投影された線分の法線方向にエッジ探索を行う際に、一つのエッジを検出するのではなく、複数のエッジを検出して候補として保持する。最適化計算を行う際には、繰り返しの各ステップにおいて最も投影線分に近い候補エッジを利用することにより、誤検出の影響を軽減している。
【非特許文献１】加藤, M. Billinghurst, 浅野, 橘, “マーカー追跡に基づく拡張現実感システムとそのキャリブレーション”, 日本バーチャルリアリティ学会論文誌, vol.4, no.4, pp.607-617, 1999.
【非特許文献２】G. Simon, A. W. Fitzgibbon, and A. Zisserman, “Markerless tracking using planar structures in the scene,” Proc. The 1st IEEE／ACM International Symposium on Augmented Reality (ISAR2000), pp.120-128, 2000.
【非特許文献３】I. Skrypnyk and D. G. Lowe, "Scene modelling, recognition and tracking with invariant image features," Proc. The 3rd IEEE／ACM International Symposium on Mixed and Augmented Reality (ISMAR04), pp.110-119, 2004.
【非特許文献４】T. Drummond and R. Cipolla, "Real-time visual tracking of complex structures," IEEE Transactions on Pattern Analysis and Machine Intelligence, vol.24, no.7, pp.932-946, 2002.
【非特許文献５】A. I. Comport, E. Marchand, and F. Chaumette, "A real-time tracker for markerless augmented reality," Proc. The 2nd IEEE／ACM International Symposium on Mixed and Augmented Reality (ISMAR03), pp.36-45, 2003.
【非特許文献６】L. Vacchetti, V. Lepetit, and P. Fua, "Combining edge and texture information for real-time accurate 3D camera tracking," Proc. The 3rd IEEE／ACM International Symposium on Mixed and Augmented Reality (ISMAR04), pp.48-57, 2004.
【非特許文献７】H. Wuest, F. Vial, and D. Stricker, “Adaptive line tracking with multiple hypotheses for augmented reality,” Proc. The Fourth Int’l Symp. on Mixed and Augmented Reality (ISMAR05), pp.62-69, 2005.
【非特許文献８】K. Satoh, S. Uchiyama, H. Yamamoto, and H. Tamura, “Robust vision-based registration utilizing bird’s-eye view with user’s view,” Proc. The Second Int’l Symp. on Mixed and Augmented Reality (ISMAR03), pp.46-55, 2003.
【非特許文献９】M. Isard and A. Blake, “CONDENSATION - conditional density propagation for visual tracking,” International Journal of Computer Vision, vol.29, no.1, pp.5-28, 1998.
【非特許文献１０】M. Pupilli and A. Calway, “Real-time camera tracking using a particle filter,” Proc. The 16th British Machine Vision Conference 2005 (BMVC2005), pp.519-528, 2005.
【発明の開示】
【発明が解決しようとする課題】
【００１８】
従来のエッジベース位置合わせ手法では、エッジの誤検出の問題に対処する為に、Ｍ推定を利用し、線分分割点毎のデータに画像上でのエッジの検出位置と投影された線分との距離に応じた重みを与えて非線形最適化を行うことで、誤検出の影響を排除していた。
【００１９】
しかしながら、例えば現実空間中に繰り返しパターンを持つ物体（棚、窓など）が存在し、この物体の3次元モデルをエッジベース位置合わせに用いる場合で、繰り返しパターン部分が視野に占める割合が大きい場合には、上記方法は問題となる。なぜならば、そのような場合には、繰り返しパターンに合致する線分が多数を占めるため、繰り返しパターンに対応するエッジが誤検出されていても誤検出とは見なされない。そのため、前述のＭ推定を用いたとしても、得られるカメラの位置及び姿勢が局所最小解ではあるが最適解とはならないため、位置合わせの精度が低下してしまうという問題があった．
本発明は以上の問題に鑑みてなされたものであり、繰り返しパターンや類似した線分を有する物体に対する位置合わせの精度を向上させる為の技術を提供することを目的とする。
【課題を解決するための手段】
【００２０】
本発明の目的を達成するために、例えば、本発明の画像処理装置は以下の構成を備える。
【００２１】
即ち、複数の線分で表現可能な外観を有する現実物体、が配されている現実空間の画像を取得する手段と、
前記現実物体の外観を模した３次元仮想物体を構成する線分群を、当該仮想物体の形状を構成する線分群を最も低いレベルとして、それぞれにレベルが設定された複数のグループに分割し、グループ内に属するそれぞれの線分を仮想空間内で規定する為の規定データを、グループ毎に管理する管理手段と、
前記複数のグループから１つのグループを、最も低いレベルが設定されているグループから順に、最も高いレベルが設定されているグループまで、１つずつ選択する選択手段と、
前記選択手段が１つのグループを選択する毎に、当該選択されたグループに属する線分を規定するための規定データと、前記現実空間の画像と、を用いて、前記画像の視点の概略の位置姿勢を示す位置姿勢情報を更新する更新手段と、
前記更新手段により複数回更新された後の前記位置姿勢情報を、最終的な前記視点の位置姿勢を示す位置姿勢情報として出力する出力手段と
を備えることを特徴とする。
【発明の効果】
【００２８】
本発明の構成によれば、繰り返しパターンや類似した線分を有する物体に対する位置合わせの精度を向上させることができる。
【発明を実施するための最良の形態】
【００２９】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載の構成の具体的な実施例の１つである。
【００３０】
［第１の実施形態］
本実施形態では、現実空間の画像の視点の位置姿勢情報を、非線形最適化手法を用いて求めるためのシステムについて説明する。
【００３１】
図１は、本実施形態に係るシステムの機能構成例を示すブロック図である。図１に示す如く、本実施形態に係るシステムは、撮像装置１００と、位置姿勢計測装置（画像処理装置）１とで構成されている。また、図１に示す如く、位置姿勢計測装置１は、画像入力部１１０、モデルデータ記憶部１２０、位置姿勢算出部１３０、を有しており、上記撮像装置１００は、画像入力部１１０に接続されている。
【００３２】
本実施形態では、撮像装置１００が撮像する画像の視点の位置姿勢情報を求める（ＡＲの位置合わせ）ことを目的とする。
【００３３】
図２は、ユーザが本実施形態に係るシステムを使用している様子を示す図である。図２では、以下に説明する、「ＡＲの位置合わせ」に適用した場合を示している。
【００３４】
ユーザは、自身の頭部にビデオシースルー型のＨＭＤ３０を装着している。係るＨＭＤ３０には、ユーザの右眼、左眼のそれぞれに対して提供する現実空間の画像を撮像するための、撮像装置１００ｂ、１００ａがそれぞれ備わっている。本実施形態では、図１に示す撮像装置１００は、図２における撮像装置１００ａであるものとして説明する。
【００３５】
また、現実空間中には、複数の線分で表現可能な外観を有する現実物体（観察対象物体）１０が配されており、撮像装置１００は、係る現実物体１０を含む現実空間の画像を撮像する。
【００３６】
撮像装置１００が撮像した画像は、位置姿勢計測装置１内の画像入力部１１０に転送され、画像入力部１１０は、この転送された画像を後段の位置姿勢算出部１３０に送出する。モデルデータ記憶部１２０には、詳しくは後述するが、仮想物体に係る様々なデータが登録されている。従って、位置姿勢算出部１３０は、モデルデータ記憶部１２０に登録されているデータと、画像入力部１１０から受けた画像とを用いて、係る画像の視点の位置姿勢情報、即ち、撮像装置１００の位置姿勢情報を求める。ここで、係る位置姿勢情報は、現実物体１０に対する撮像装置１００の位置姿勢を示している。
【００３７】
そして位置姿勢計測装置１は、不図示の生成部によって、仮想物体２０を仮想空間中に配置し、配置した仮想物体２０を、位置姿勢算出部１３０が求めた位置姿勢情報が示す位置姿勢を有する視点から見た場合の画像を生成する。そして、位置姿勢計測装置１の不図示の出力部は、生成した仮想物体の画像を、撮像装置１００（図２では１００ａ、１００ｂ）が撮像した現実空間の画像上に合成した合成画像を生成し、生成した合成画像をＨＭＤ３０が有する表示装置に送出する。
【００３８】
なお、撮像装置１００によって撮像された画像だけでなく、撮像装置１００ｂによって撮像された画像も利用して位置姿勢計測を行っても良いが、本実施形態では撮像装置１００によって撮像された画像のみを用いるものとする。
【００３９】
以下、図１に示した、位置姿勢計測装置１を構成する各部についてより詳細に説明する。
【００４０】
画像入力部１１０は、撮像装置１００によって撮像された画像を撮像装置１００から受け、これを後段の位置姿勢算出部１３０に転送する。画像入力部１１０は、撮像装置１００の出力がNTSCなどのアナログ出力であればビデオキャプチャボードによって実現される。また、撮像装置１００の出力がIEEE1394などのデジタル出力であれば、例えばIEEE1394インタフェースボードによって実現される。なお、本実施形態では、画像入力部１１０は、撮像装置１００によって撮像された現実空間の画像を取得しているが、現実空間の画像の取得形態はこれに限定するものではない。例えば、予め記憶装置に記憶されている現実空間の画像を画像入力部１１０が取得するようにしても良い。
【００４１】
モデルデータ記憶部１２０は、様々な仮想物体（３次元仮想物体）に係るデータを保持している。係るデータには、現実物体１０の外観を模した仮想物体に係るデータも含まれている。
【００４２】
図３は、現実物体１０の外観を模した仮想物体に係るデータ（モデルデータ）の構成例を説明する図である。仮想物体は、頂点の情報、各頂点を結んで構成される面の情報、面を構成する線分（頂点間を結ぶ線分）の情報、によって定義される。換言すれば、仮想物体に係るデータは、これらの情報により構成されている。
【００４３】
図３で取り扱う仮想物体は直方体であるとしている。もちろん、周知の通り、以下の説明は、仮想物体が如何なる形状を有していても、実質的には同じである。
【００４４】
図３（ａ）の左側に示す如く、仮想物体は、頂点P1〜頂点P8の8点から構成される直方体である。また、直方体の座標系のX軸を頂点P1から頂点P4に向かう方向に取り、Y軸を頂点P5から頂点P1に向かう方向に取り、Z軸を頂点P1から頂点P2に向かう方向に取る。また、直方体の座標系における原点を頂点P5に取る。
【００４５】
また、図３（ａ）の中央、及び右側に示す如く、仮想物体は、面F1〜F6により構成されている。同様に、仮想物体は、線分L1〜L12により構成されている。さらに、仮想物体は、面F1上に線分L13、面F2上に線分L14を有しており、線分L13は頂点P9と頂点P10とで規定されており、線分L14は頂点P10と点P11とで規定されている。
【００４６】
図３（ｂ）は、直方体の仮想物体を構成する各頂点に係るデータが登録されたテーブル（頂点情報）の構成例を示している。図３（ｂ）に示す如く、テーブルには、頂点毎に、インデックス、３次元座標値（Ｘ、Ｙ、Ｚ）が登録されている。即ち、頂点Ｐ１〜Ｐ１１のそれぞれのインデックス（Ｐ１〜Ｐ１１）と、３次元座標値（Ｘ、Ｙ、Ｚ）が、頂点情報にテーブル形式で登録されている。
【００４７】
図３（ｃ）は、直方体の仮想物体を構成する各面に係るデータが登録されたテーブル（面情報）の構成例を示している。図３（ｃ）に示す如く、テーブルには、面毎に、面を構成する各頂点のインデックスが接続順に登録されている。例えば、面Ｆ２は、頂点Ｐ１、頂点Ｐ４、頂点Ｐ８、頂点Ｐ５、の順に接続することで形成される。
【００４８】
図３（ｄ）は、直方体の仮想物体を構成する各線分に係るデータが登録されたテーブル（線分情報）の構成例を示している。図３（ｄ）に示す如く、テーブルには、線分毎に、両端を構成する頂点のインデックスと、予め設定された構造規定レベルと、が登録されている。例えば、線分Ｌ２は、頂点Ｐ２と頂点Ｐ３とを結んだ線分であり、係る線分Ｌ２の構造規定レベルは「０」である。
【００４９】
ここで、構造規定レベルについて説明する。本実施形態では、構造規定レベルを「構造規定レベル０」、「構造規定レベル」の２段階とし、仮想物体の外形形状を規定する線分の構造規定レベルを０とし、それ以外の線分の構造規定レベルを１としている。線分L1〜L14のうち、線分L1〜L12が仮想物体の外形形状を規定する線分であるため、構造規定レベルが０となっている。また、それ以外の線分の構造規定レベルは１となっている。図２に示した現実物体１０の場合には、直方体である現実物体１０の各面を構成する線分の構造規定レベルを０とし、繰り返しパターンとして示されている面内の線分の構造規定レベルを１とする。
【００５０】
即ちモデルデータ記憶部１２０には、仮想物体を構成する線分群を複数のグループに分割した場合に、グループ内に属するそれぞれの線分を仮想空間内で規定する為の規定データ（線分の両端を構成する頂点の３次元座標値）がグループ毎に管理されている。ここでいうところの「グループ」とは、「構造規定レベルが０である線分の属するグループ」、「構造規定レベルが１である線分の属するグループ」である。
【００５１】
このように、モデルデータ記憶部１２０には、仮想物体毎に、以上説明した頂点情報、面情報、線分情報が登録されている。もちろん、仮想物体毎に登録される情報にはこれ以外のものも考えられ、例えば、テクスチャマップデータ等がある。
【００５２】
図１に戻って位置姿勢算出部１３０は、画像入力部１１０から入力される画像と、モデルデータ記憶部１２０に登録されているモデルデータと、に基づいて、現実物体１０を基準とした座標系（基準座標系）における撮像装置１００の位置姿勢情報を求める。
【００５３】
次に、位置姿勢計測装置１が、撮像装置１００の位置姿勢情報を求めるために行う処理について、同処理のフローチャートを示す図４を用いて以下説明する。
【００５４】
先ず、ステップＳ１０１０では、位置姿勢算出部１３０は、初期化処理を行う。係る初期化処理では、基準座標系における撮像装置１００の概略の位置姿勢を示す位置姿勢情報（初期値）の設定を行う。
【００５５】
本実施形態では、撮像装置１００の概略の位置姿勢を示す位置姿勢情報を逐次更新していくことで、撮像装置１００の位置姿勢情報を求めるので、位置姿勢情報の更新処理の前に、予め撮像装置１００の概略の位置姿勢情報を初期値として与える必要がある。そこで、例えば、予め決まった位置姿勢情報を初期値として設定すると共に、撮像装置１００をこの設定した位置姿勢情報が示す位置姿勢に配置しても良い。また、非特許文献１に示すように、画像内で検出するだけで認識可能な人工的な指標を配置し、この人工的な指標の各頂点の画像座標と各頂点の基準座標系における３次元位置との対応から、撮像装置の位置姿勢を求め、これを初期値としてもよい。さらに、磁気式や光学式、超音波式などの6自由度位置姿勢センサを撮像装置１００に装着し、このセンサから得られる位置姿勢情報を初期値としてもよい。人工的な指標と前述の6自由度位置姿勢センサや3自由度の姿勢センサ、3自由度の位置センサを併用して計測される撮像装置１００の位置姿勢情報を初期値としてもよい。
【００５６】
次に、ステップＳ１０２０では、画像入力部１１０は、撮像装置１００が撮像した現実空間の画像を取得する。
【００５７】
次に、ステップＳ１０３０では、位置姿勢算出部１３０は、構造規定レベルを示す変数ｉを０に初期化する。以降の各ステップにおける処理は、特に触れない限りは、位置姿勢算出部１３０が行うものとする。
【００５８】
次に、ステップＳ１０４０では、位置姿勢算出部１３０は、線分情報（図３（ｄ））を参照し、変数ｉが示す値以下の構造規定レベルに対応する線分を特定する。そして、特定した線分と、ステップＳ１０２０で取得した画像とを用いて、基準座標系における撮像装置１００の位置姿勢情報を求める。
【００５９】
ここで、ステップＳ１０４０における処理の詳細について、図５のフローチャートを用いて説明する。図５は、ステップＳ１０４０における処理の詳細を示すフローチャートである。なお、特に説明がない限り、図５に示した各ステップは、位置姿勢算出部１３０によって実行されるものである。
【００６０】
先ず、ステップＳ１１１０では、位置姿勢算出部１３０は、モデルデータ記憶部１２０に格納されている線分情報（図３（ｄ））を参照し、変数ｉが示す値以下の構造規定レベルに対応する線分（対象線分）を特定する。例えば、変数ｉの値が０である場合には、構造規定レベルが０以下の線分、即ち、線分Ｌ１〜Ｌ１２を対象線分として特定する。
【００６１】
そして、仮想物体を現実物体１０の位置姿勢で仮想空間中に配置した場合における対象線分の両端の頂点を、現在得ている撮像装置１００の位置姿勢情報を用いて、周知の投影面（ここでは現実空間の画像）上に投影する。そして、投影後の頂点間を結ぶ直線の方程式を求める。この直線の方程式は、線分の両端の頂点の３次元座標値を投影面上に投影した場合に得られるそれぞれの２次元座標値で特定される投影面上の２点間を結んだ直線の方程式として算出する。
【００６２】
即ち、本実施形態でいうところの「投影」とは、投影した線分を投影面上に描画することではなく、投影後の線分の両端の座標位置を求める等、何らかの処理を行うために仮想的に投影することを意味する。
【００６３】
ここで、本実施形態では、仮想空間と現実空間とは座標系を共有しているものとする。従って、仮想物体を現実物体１０の位置姿勢で配置すると、理想的には仮想物体は現実物体１０と全く重なっている状態で配置されることになる。
【００６４】
また、「現在得ている撮像装置１００の位置姿勢情報」とは、ステップＳ１１１０を最初に実行する場合には、初期値としての位置姿勢情報に該当する。また、２回目以降のステップＳ１１１０において変数ｉ＝０であれば、１フレーム前で算出された位置姿勢情報に該当し、変数ｉ≠０であれば、前回のステップＳ１０４０で算出された位置姿勢情報に該当する。
【００６５】
また、投影面に対して投影を行うためには、撮像装置１００の位置姿勢情報の他に、撮像装置１００の焦点距離や主点位置などのカメラの固有パラメータが既知である必要がある。本実施形態では、このような既知のパラメータは、位置姿勢計測装置１が有する不図示のメモリに予め記録されているものとする。
【００６６】
図６は、現実空間の画像上に投影された線分を説明する図である。図６（ａ）は、現実空間の画像そのものを示しており、現実物体１０が映っている。図６（ｂ）は、現実空間の画像上に、線分（太線で示している）を投影した場合に得られる画像を示す図である。投影時に用いた位置姿勢情報が示す位置姿勢と、実際の撮像装置１００の位置姿勢とに差がある場合には、図６（ｂ）に示す如く、現実物体１０を構成する各線分と、投影された各線分とには、ずれが生じる。図６（ｂ）において破線で示される線分は、投影された線分のうち、実際には隠れて見えない線分を表している。
【００６７】
次に、ステップＳ１１２０では、ステップＳ１０２０で取得した現実空間の画像に対してエッジ検出処理を行うか否かを判断する。本実施形態では、非線形最適化手法を用いて、撮像装置１００の位置姿勢情報を、繰り返し計算により最適化する。また、エッジ検出は計算コストが高い処理であるため、ここでは、繰り返し計算の１回目においてのみエッジ検出を行い、２回目以降はエッジ検出を行わないものとする。
【００６８】
ステップＳ１１２０において、エッジ検出を行う場合（本ステップにおける判断処理が１回目である場合）には、処理をステップＳ１１３０に進める。一方、エッジ検出を行わない場合（本ステップにおける判断処理が２回目以降である場合）には、処理をステップＳ１１４０に進める。
【００６９】
ステップＳ１１３０では、ステップＳ１０２０で取得した現実空間の画像に対してエッジ検出処理を行う。エッジ検出は以下のようにして行う。まず、ステップＳ１１１０において算出されたの直線の方程式を利用して、投影された線分を画像上で等間隔に分割するように分割点を設定する。図７は、各線分について画像上での分割点を示す図である。分割点の総数をＮとし、各分割点をDPj（j=1,2,...,N）で表す。分割点の総数Ｎは、画像上での分割点の間隔を変える事で制御できる。また、分割点の総数が一定になるように、画像上での分割点間の間隔を逐次変更してもよい。
【００７０】
ここで、ステップＳ１１３０における処理の詳細について、図８のフローチャートを用いて説明する。図８は、ステップＳ１１３０における処理の詳細を示すフローチャートである。
【００７１】
先ず、ステップＳ１２１０では、変数ｊを１に初期化する。
【００７２】
次に、ステップＳ１２２０では、分割点DPjが隠蔽されているか否かの判定を行う。具体的には、分割点DPjが、仮想物体の他の面に隠蔽されている場合、即ち、図７に示した破線上の分割点である場合、分割点DPjは可視ではない。分割点DPjが可視かどうかの判定は、例えば非特許文献７に示されるように、グラフィクスハードウェアを利用して仮想物体を描画した後、この分割点を描画し、グラフィクスハードウェアにデプスバッファが更新されたかどうかを確認することで行える。分割点DPjが隠蔽されている場合には処理をステップＳ１２４０に進める。一方、隠蔽されていない場合には、処理をステップＳ１２３０に進める。
【００７３】
ステップＳ１２３０では、分割点DPjに対応するエッジの検出を行う。図９は、本実施形態におけるエッジ検出方法を説明する図である。図９に示すように、各分割点において、投影された線分の法線方向に平行でかつ分割点を通過する線分（以下、探索ライン）上においてエッジを１次元探索する。エッジは、探索ライン上において濃度勾配が極値をとる位置に存在する。本実施形態では、探索ライン上でエッジが複数存在する場合には、最も分割点に近いエッジを対応点とし、その画像座標と分割点の３次元座標を保持する。なお、本実施形態では最も分割点に近いエッジを対応点としているが、これに限るものではなく、探索ライン上で濃度勾配の極値の絶対値が最も大きいエッジを対応点としてもよい。また、非特許文献６に示すように、１つではなく複数のエッジを候補として保持しても良い。
【００７４】
次に、ステップＳ１２４０では、変数ｊの値を１つインクリメントする。
【００７５】
次に、ステップＳ１２５０では、ｊ＞ｎか否か、即ち、全ての分割点DPjについて処理が終了しているか否かを判断する。係る判断の結果、ｊ＞Ｎ、即ち、全ての分割点DPjについて処理が終了している場合には、図５のステップＳ１１４０にリターンする。一方、ｊ≦Ｎ、即ち、全ての分割点DPjについて処理が終了していない場合には、処理をステップＳ１２２０に戻し、インクリメント後の変数ｊを用いて以降の各ステップにおける処理を行う。
【００７６】
図５に戻って、次に、ステップＳ１１４０では、撮像装置１００の位置姿勢情報を求める。ここで、分割点DPjのうち、隠蔽されておらず、ステップＳ１２３０において対応点を求めた分割点の総数をＮｃとする。撮像装置１００の位置姿勢情報は、非線形最適化計算により、撮像装置１００の概略の位置姿勢情報を繰り返し計算により補正（更新）することで算出する。図１０は、線分情報を利用して撮像装置１００の位置姿勢情報を算出する方法を説明する図である。図１０では画像の水平方向をｘ軸、垂直方向をｙ軸にとっている。ある分割点の画像座標を（ｕ０，ｖ０）、この分割点が所属する線分Ｌの画像上での傾きをｘ軸に対する傾きθで表す。線分Ｌの画像上での法線ベクトルは（ｓｉｎθ，−ｃｏｓθ）となる。さらに、この分割点の対応点の画像座標を（ｕ’，ｖ’）とする。
【００７７】
ここで、ｒ＝ｕ０×ｓｉｎθ−ｖ０×ｃｏｎθ（定数）とすると、線分Ｌの直線の方程式は、以下の式１に従ったものとなる。
【００７８】
【数１】
0005111210.tif 000002
【００７９】
次に、この対応点（ｕ’，ｖ’）を通り、線分Ｌに平行な直線Ｌ’（図１０において破線で示す）を考える。同様に、ｄ＝ｕ’×ｓｉｎθ−ｖ’×ｃｏｎθ（定数）とすると、線分Ｌ’の直線の方程式は、以下の式２に従ったものとなる。
【００８０】
【数２】
0005111210.tif 000003
【００８１】
この分割点の画像座標（ｕ，ｖ）は、撮像装置１００の位置姿勢情報により変化する。また、撮像装置１００の位置姿勢情報の自由度は６自由度である。ここで、撮像装置１００の位置姿勢情報を表すパラメータをｐで表す。ｐは６次元ベクトルであり、撮像装置１００の位置を表す３つの要素と、姿勢を表す３つの要素からなる。姿勢を表す３つの要素は、例えばオイラー角による表現や、方向が回転軸を表して大きさが回転角を表す３次元ベクトルなどによって表現される。分割点の画像座標（ｕ，ｖ）は、（ｕ０，ｖ０）の近傍で１次のテイラー展開によって以下の式３に示す如く、近似できる。
【００８２】
【数３】
0005111210.tif 000004
【００８３】
ｕ，ｖの偏微分∂ｕ／∂ｐｉ、∂ｖ／∂ｐｉの導出方法は、例えば非特許文献８に開示されているように、周知であるため、これについての説明は省略する。
【００８４】
次に、上記式３によって表される（ｕ，ｖ）が式２で表される直線上に存在するように、撮像装置１００の位置姿勢情報ｐの補正値Δｐを算出する。式３を式２に代入すると、以下の式４に示すような式が得られる。
【００８５】
【数４】
0005111210.tif 000005
【００８６】
式４を整理すると以下の式５のように表せる。
【００８７】
【数５】
0005111210.tif 000006
【００８８】
式５は、Ｎｃ個の分割点について成り立つため、以下の式６に示すようなΔｐに対する線形連立方程式が成り立つ。
【００８９】
【数６】
0005111210.tif 000007
【００９０】
ここで、式６を、以下の式７のように簡潔に表す。
【００９１】
【数７】
0005111210.tif 000008
【００９２】
式７をもとにＧａｕｓｓ−Ｎｅｗｔｏｎ法によって、行列Ｊの一般化逆行列（ＪＴ・Ｊ）−１を用いてΔｐが求められる。しかしながら、エッジの検出には誤検出が多いので、次に述べるようなロバスト推定手法を用いる。一般に、誤検出されたエッジに対応する分割点では、誤差（ｄ−ｒ）が大きくなる。そのため式６、式７で示す連立方程式に対する寄与度が大きくなり、その結果得られるΔｐの精度が低下する。そこで、誤差（ｄ−ｒ）が大きい分割点には小さな重みを与え、誤差（ｄ−ｒ）が小さい分割点には大きな重みを与える。重みは、例えば以下の式８に示すようなＴｕｋｅｙの関数により与える。
【００９３】
【数８】
0005111210.tif 000009
【００９４】
なお、重みを与える関数はＴｕｋｅｙの関数である必要はなく、例えば次式で示されるようなＨｕｂｅｒの関数など、誤差（ｄ−ｒ）が大きい分割点には小さな重みを与え、誤差（ｄ−ｒ）が小さい分割点には大きな重みを与える関数であれば良い。
【００９５】
【数９】
0005111210.tif 000010
【００９６】
分割点DPiに対応する重みをwiとする。ここで、以下の式１０に示す如く重み行列Ｗを定義する。
【００９７】
【数１０】
0005111210.tif 000011
【００９８】
重み行列Ｗは、対角成分以外はすべて０のＮｃ×Ｎｃ正方行列であり、対角成分には重みwiが入る。この重み行列Ｗを用いて、上記式７を以下の式１１のように変形する。
【００９９】
【数１１】
0005111210.tif 000012
【０１００】
そして、以下の式１２に示す如く、上記式１１を解くことにより、補正値Δｐを求める。
【０１０１】
【数１２】
0005111210.tif 000013
【０１０２】
以上の処理によって得られたΔｐを用いて、現在得られている撮像装置１００の位置姿勢情報を更新する。
【０１０３】
以上説明した各演算処理が、ステップＳ１１４０において行われる処理である。
【０１０４】
次に、ステップＳ１１５０では、撮像装置１００の位置姿勢情報の計算が収束しているか否かを判定する。係る判定処理は、例えば、ステップＳ１１４０において求めた補正値Δｐが十分に小さい閾値以下であるか否か、誤差（ｄ−ｒ）の総和が十分に小さい閾値以下であるか否か、誤差の総和の変化分が十分に小さい閾値以下であるか否か、等を判定すればよい。そして、このような判定処理の結果、撮像装置１００の位置姿勢情報の計算が収束していると判定した場合には、図４のステップＳ１０５０にリターンする。一方、撮像装置１００の位置姿勢情報の計算が収束していないと判定した場合には、処理をステップＳ１１１０に戻す。そして、ステップＳ１１４０で求めた撮像装置１００の位置姿勢情報を、撮像装置１００の概略の位置姿勢情報として用い、以降の各ステップにおける処理を繰り返す。そして、各線分を投影しなおす。そしてステップＳ１１１０において算出された直線Ｌ，Ｌ’の方程式をもとに、ステップＳ１１３０において∂ｕ／∂ｐｉ、∂ｖ／∂ｐｉを計算し直し、式１２を用いて再度、補正値Δｐを求め直す。
【０１０５】
なお、ここでは、非線形最適化手法として、Ｇａｕｓｓ−Ｎｅｗｔｏｎ法を用いた。しかしながら、非線形最適化手法はこれに限るものではなく、Ｎｅｗｔｏｎ−Ｒａｐｈｓｏｎ法、Ｌｅｖｅｒｎｂｅｒｇ−Ｍａｒｑｕａｄｔ法、最急降下法、共役勾配法などのその他の非線形最適化手法を用いてもよい。
【０１０６】
図４に戻って、次に、ステップＳ１０５０では、変数ｉ＝１であるか否か、即ち、全ての構造規定レベルについて処理を行ったか否かを判定する。本実施形態では構造規定レベルは２段階であるので、変数ｉ＝１であれば処理をステップＳ１０７０に進め、ｉ≠１であれば、処理をステップＳ１０６０に進める。ステップＳ１０６０では、変数ｉの値を１つインクリメントし、その後、ステップＳ１０４０に処理を進め、インクリメント後の変数ｉを用いて、以降の各ステップにおける処理を行う。即ち、インクリメント後の変数ｉが示す値以下の構造規定レベルに対応する線分と、ステップＳ１０２０で取得した画像とを用いて、基準座標系における撮像装置１００の位置姿勢情報を求める。
【０１０７】
以上の説明から、本実施形態に係る位置姿勢情報の算出処理は、換言すると、次のような処理である。即ち、仮想物体を構成する線分群を複数のグループに分割した場合に、複数のグループから１つのグループを、重複しないように１つずつ選択する。そして、１つのグループを選択する毎に、選択されたグループに属する規定データと、現実空間の画像と、を用いて、画像の視点の概略の位置姿勢を示す位置姿勢情報を更新する。
【０１０８】
このように、大局的な構造を規定する線分を使って撮像装置１００の概略の位置姿勢情報の算出を行った後、より局所的な構造を規定する線分を使ってより詳細な位置姿勢情報の算出を行う。これにより、繰り返しパターンや類似した線分に対応するエッジの誤検出を防止し、高精度な位置姿勢情報を算出することができる。
【０１０９】
次に、ステップＳ１０７０では、位置姿勢情報の算出処理を終了する旨の指示が外部から入力されたか否か、係る算出処理の終了条件が満たされたか否かを判定する。係る判定により、係る指示が入力されたり、係る終了条件が満たされた場合には、ステップＳ１０７０を介して、係る算出処理を終了する。なお、上記処理により複数回更新された位置姿勢情報は、最終的な位置姿勢情報として、例えば、モデルデータ記憶部１２０等に出力する。
【０１１０】
一方、係る指示は入力されていないし、係る終了条件も満たされていない場合には、ステップＳ１０７０を介してステップＳ１０２０に処理を戻し、次のフレームについて以降の各ステップにおける処理を行う。
【０１１１】
以上の説明により、本実施形態によれば、線分毎に設定される構造規定レベルを利用し、非線形最適化により撮像装置１００の位置姿勢情報を求めることで、位置姿勢情報が局所最小解となることを防止し、高精度な位置姿勢情報を算出することができる。
【０１１２】
［変形例１−１］
第１の実施形態では、仮想物体の外形を規定するような線分を用いて撮像装置１００の概略の位置姿勢情報を算出した後、より構造規定レベルが大きい線分を用いて係る位置姿勢情報の更新を行った。しかしながら、係る更新前と更新後とで位置姿勢情報に一定値以上の差が生じた場合、更新後の位置姿勢情報が局所最小解に陥ったと考えられる。そのため、最初の更新と次の更新とで位置姿勢情報に一定値以上（閾値以上）の差が生じた場合には、更新前の最初の更新による位置姿勢情報を、最終的な位置姿勢情報として採用してもよい。このようにして、局所最小解に陥いることを避けてもよい。
【０１１３】
［変形例１−２］
第１の実施形態では、構造規定レベルとしてレベル０とレベル１の２つを設けていた。換言すれば、仮想物体を構成する線分群を２つのグループに分割していた。しかしながら、構造規定レベルは２レベル以上設けてもよい。即ち、仮想物体を構成する線分群を３以上のグループに分割してもよい。例えば、構造規定レベルを０〜（ｎ−１）まで設けた場合、即ち、仮想物体を構成する線分群をｎ個のグループに分割した場合、図４のステップＳ１０５０では、変数ｉ＝（ｎ−１）であるか否かを判定する。
【０１１４】
［変形例１−３］
第１の実施形態では、変数ｉ＝１である場合、構造規定レベル０，構造規定レベル１のそれぞれに対応する線分を、基準座標系における撮像装置１００の位置姿勢情報を求める為に用いていた。しかしながら、変数ｉ＝１である場合、構造規定レベル１に対応する線分のみを、基準座標系における撮像装置１００の位置姿勢情報を求める為に用いるようにしても良い。
【０１１５】
これは、構造規定レベルを３以上設けた場合であっても同様で、変数ｉ＝ｍである場合には、構造規定レベルｍに対応する線分のみを、基準座標系における撮像装置１００の位置姿勢情報を求める為に用いるようにしても良い。
【０１１６】
［変形例１−４］
第１の実施形態では、構造規定レベル０に対応する線分を用いて更新した撮像装置１００の位置姿勢情報の精度が十分に高い場合であっても、係る精度に関係なく、次の構造規定レベル１に対応する線分を用いた位置姿勢情報の更新処理を行っていた。しかし、更新後の位置姿勢情報の精度が、予め定めた基準を満たした場合には、以降の更新処理（動作）を中断し、この時点で得られている位置姿勢情報を最終的な位置姿勢情報としても良い。
【０１１７】
例えば、式５の左辺（ｄ−ｒ）の二乗和の平均値が、十分に小さい閾値以下である場合（例えば、１画素以内）や、Ｔｕｋｅｙの関数によって算出される重みが０のデータが十分に小さい閾値以下である場合には、以降の更新処理を省略しても良い。
【０１１８】
［変形例１−５］
第１の実施形態では、直前のフレームにおいて求めた位置姿勢情報を、現フレームにおいて複数回更新することで、現フレームにおける位置姿勢情報を求めていた。しかしながら、現フレームの概略の位置姿勢情報を、他のセンサを用いて更新してもよい。例えば、前述の3自由度姿勢センサを用いて姿勢を更新してもよいし、傾斜角センサを用いて傾斜角を更新してもよい。また、角速度センサや加速度センサなどを用いて姿勢や位置を更新してもよい。また、位置センサを用いて位置を更新してもよい。さらには、複数のセンサを併用して、概略の位置姿勢情報を更新してもよい。
【０１１９】
［変形例１−６］
第１の実施形態では、計算負荷を考慮し、ステップＳ１１３０では、最初の１回のみしかエッジ検出を行っていない。しかしながら、より精度を追求したい場合や、計算時間に余裕がある場合などには、２回目以降もエッジ検出を行ってもよい。すなわち、繰り返し計算の２回目以降も、ステップＳ１１３０においてエッジ検出を行うことによって、各線分の分割点の画像上での対応点の座標（ｕ’，ｖ’）を更新し、式１２により補正値Δｐを求めてもよい。
【０１２０】
［第２の実施形態］
第１の実施形態では、非線形最適化手法に従って、撮像装置１００の位置姿勢情報を算出した。本実施形態では、非線形最適化手法の代わりに、確率的手法に従って、撮像装置１００の位置姿勢情報を求める。ここで、本実施形態で用いる確率的手法としては、非特許文献９、又は非特許文献１０に示すパーティクルフィルタ（またはコンデンセーションとも呼ばれる）を利用する。
【０１２１】
パーティクルフィルタでは、ある時刻ｔにおける撮像装置１００の位置姿勢情報を、Np個の状態（以下、パーティクル）（ｐ（ｉ，ｔ），ｗ（ｉ，ｔ））（i=1,・・・Np）の集合によって表現する。ここで、ｐ（ｉ，ｔ）は時刻ｔにおけるパーティクルｉの６自由度の位置姿勢情報を表す状態ベクトルであり、ｗ（ｉ，ｔ）は時刻ｔにおけるパーティクルｉに対する重み値である。重み値が大きいパーティクルは真の撮像装置１００の位置姿勢情報である確率が高く、重み値が小さいパーティクルはその確率が低い。
【０１２２】
次に、位置姿勢計測装置１が、撮像装置１００の位置姿勢情報を求めるために行う処理について、同処理のフローチャートを示す図１１を用いて以下説明する。なお、本実施形態で用いるシステムの構成については、第１の実施形態と同じ、即ち、図１に示した構成を有する。
【０１２３】
先ず、ステップＳ２０１０では、位置姿勢算出部１３０は、初期化処理を行う。係る初期化処理では、基準座標系における撮像装置１００の概略の位置姿勢を示す位置姿勢情報（初期値）の設定を、第１の実施形態と同様にして行う。ここで、初期値としての位置姿勢情報を表す６自由度の状態ベクトルをｐｉｎｉｔとする。次に、ｐｉｎｉｔを用いて、Ｎｐ個のパーティクルを発生させる。先ず、状態ベクトルの各成分ｊ（j=1,・・・6）ごとに、区間［−１，１］の一様分布に基づいて乱数ｚを発生させる。即ち、位置姿勢情報を複数種類発生させることになる。
【０１２４】
そして、ｐｉｎｉｔの成分ｊをｐｉｎｉｔｊ＝ｐｉｎｉｔｊ＋ｚ・ｖのようにランダムウォークにより拡散させる。ここで、ｖは各成分のあいまいさを表す定数である。また、初期化においては各パーティクルの重み値は均一（ｗｉｔ＝１／Np）であるとする。
【０１２５】
この処理をＮｐ回繰り返し、Ｎｐ個のパーティクル（ｐ（ｉ，０），ｗ（ｉ，０））（i=1,・・・Np）を発生させる。
【０１２６】
次に、ステップＳ２０２０では、画像入力部１１０は、撮像装置１００が撮像した現実空間の画像を取得する。
【０１２７】
次に、ステップＳ２０３０では、位置姿勢算出部１３０は、構造規定レベルを示す変数ｋを０に初期化する。以降の各ステップにおける処理は、特に触れない限りは、位置姿勢算出部１３０が行うものとする。
【０１２８】
次に、ステップＳ２０４０では、位置姿勢算出部１３０は、構造規定レベルｋに基づいて、撮像装置１００の位置姿勢情報、即ち、各パーティクルの状態を予測する。ここでは、次の処理をNp回繰り返してＮｐ個のパーティクル（ｐ（ｍ，ｔ，ｋ），ｗ（ｍ，ｔ，ｋ））（m=1,・・・Np）を発生させ、それまで保持していたパーティクルと入れ替える。
【０１２９】
（１）  各パーティクルの重み値及び一様分布から発生する乱数をもとに、パーティクルｉを選択する。非特許文献９では、各パーティクルごとに累積確率密度Ｃｉを計算することで、パーティクル選択を高速化している。すなわち、まずＣｉを次式のように計算する。
【０１３０】
【数１３】
0005111210.tif 000014
【０１３１】
パーティクルの選択は次のように行われる。区間［０，１］の一様分布から乱数ｚを発生させ、Ｃｉ≧ｚを満たす最小のｉを選択する。
【０１３２】
（２）  パーティクルｍの状態を予測する。具体的には、ステップＳ２０１０における初期化と同様に、選択されたパーティクルｉの状態ｐ（ｉ，ｔ−１）（ｋ＝０の場合）またはｐ（ｉ，ｔ，ｋ−１）（ｋ≠０の場合）をランダムウォークにより拡散させる。拡散は、ｐ（ｊ，ｔ，ｋ）ｊ＝ｐ（ｉ，ｔ−１）ｊ＋ｚ・ｖまたはｐ（ｊ，ｔ，ｋ）ｊ＝ｐｉｎｉｔｊ＋ｚ・ｖのように行う。ｖは、ｋが大きくなるにつれて小さい値になるようにする。それによって、ｋが小さい場合に得たパーティクルの周辺に、新たなパーティクルを発生させる。また、ｋ＝０の場合、フレーム間の動きモデルがわかっている場合には、そのモデルに基づいてｐ（ｉ，ｔ−１）を変化させ、変化した状態に対してランダムウォークを適用してもよい。加速度センサ、角速度センサなどのセンサが利用できる場合には、センサの計測値を利用してｐ（ｉ，ｔ−１）を変化させてもよい。ｋ≠０の場合には、フレーム間の移動の推定ではないので、動きモデルによる状態更新は行わない。
【０１３３】
これらの処理をNp回繰り返すことにより、新たなパーティクルの集合を得る。
【０１３４】
次に、ステップＳ２０５０では、各パーティクルが表す位置姿勢情報の尤度を求める。ステップＳ２０５０では、構造規定レベルｋ＝０の場合には構造規定レベルが０の線分のみを用い、ｋ＝１の場合には構造規定レベルが０の線分と１の線分を用いて尤度の計算を行う。
【０１３５】
尤度の算出はパーティクル毎に行う。パーティクルｉの尤度ＬＨ（ｉ）の算出は次のように行う。まず、各パーティクルが表す位置姿勢情報ｐ（ｉ，ｔ，ｋ）に基づいて、構造規定レベルがｋ以下の線分を画像上に投影する。次に、第１の実施形態におけるステップＳ１１３０と同じ方法でもって、線分の等分割点ごとの対応エッジを探索する。そして、対応エッジの画像座標（ｕ’，ｖ’）と、式１に示す投影された線分（投影済みの線分）との距離を求める。尤度ＬＨ（ｉ）は次式のように算出される。σはｋが小さい場合は大きくし、ｋが大きい場合は小さくする。
【０１３６】
【数１４】
0005111210.tif 000015
【０１３７】
もしくは、対応エッジと線分との距離に閾値Ｔｈを設定し、次式のように尤度を求めてもよい。
【０１３８】
【数１５】
0005111210.tif 000016
【０１３９】
ただし、以下のような条件がある。
【０１４０】
【数１６】
0005111210.tif 000017
【０１４１】
閾値Ｔｈは、ｋが小さい場合には大きくし、ｋが大きい場合には小さくする。尤度が大きいということは、一般に、パーティクルの表す位置姿勢情報が実際の撮像装置１００の位置姿勢情報に近いということを表している。σまたはＴｈをｋに応じて制御することにより、ｋが小さい場合には大局的に解を探索し、ｋが大きい場合には大局的な解の周辺で詳細に解を探索することになる。
【０１４２】
即ち、エッジと投影済みの線分との対応関係を用いて、尤度を求めている。
【０１４３】
次に、ステップＳ２０６０では、観測に基づいた各パーティクルの重み値ｗ（ｉ，ｔ，ｋ）を算出する。すべてのパーティクルの重み値の総和が１となるように、次式のように正規化して重みｗ（ｉ，ｔ，ｋ）を算出する。
【０１４４】
【数１７】
0005111210.tif 000018
【０１４５】
次に、ステップＳ２０７０では、変数ｋ＝１であるか否か、即ち、全ての構造規定レベルについて処理を行ったか否かを判定する。本実施形態では構造規定レベルは２段階であるので、変数ｋ＝１であれば、パーティクル（ｐ（ｉ，ｔ，ｋ），ｗ（ｉ，ｔ，ｋ））を（ｐ（ｉ，ｔ），ｗ（ｉ，ｔ））として処理をステップＳ２０８０に進め、ｋ≠１であれば処理をステップＳ２０９０に進める。
【０１４６】
ステップＳ２０９０では、変数ｋの値を１つインクリメントし、その後、ステップＳ２０４０に処理を進め、インクリメント後の変数ｋを用いて、以降の各ステップにおける処理を行う。
【０１４７】
次に、ステップＳ２０８０では、時刻ｔにおける撮像装置１００の位置姿勢情報を、パーティクルの集合（ｐ（ｉ，ｔ），ｗ（ｉ，ｔ））から推定する。撮像装置１００の位置姿勢情報の推定値Ｐｔ−は、例えば次の式のように、期待値として算出する。
【０１４８】
【数１８】
0005111210.tif 000019
【０１４９】
即ち、それぞれのパーティクルの位置姿勢情報に、対応する重み値を乗じた結果の総和値を、撮像装置１００の位置姿勢情報としている。
【０１５０】
また、推定値Ｐｔ−を期待値によって算出するのではなく、最大の重みｗ（ｉ，ｔ）を持つパーティクルｉの位置姿勢情報ｐ（ｉ，ｔ）によって決定してもよい。
【０１５１】
以上の説明により、本実施形態によれば、構造規定レベルとパーティクルフィルタを組み合わせることで、局所最小解に陥らない高精度な撮像装置１００の位置姿勢情報の算出を行うことができる。
【０１５２】
［変形例２−１］
第２の実施形態では、構造規定レベルとしてレベル０とレベル１の２つを設けていた。換言すれば、仮想物体を構成する線分群を２つのグループに分割していた。しかしながら、構造規定レベルは２レベル以上設けてもよい。即ち、仮想物体を構成する線分群を３以上のグループに分割してもよい。例えば、構造規定レベルを０〜（ｎ−１）まで設けた場合、即ち、仮想物体を構成する線分群をｎ個のグループに分割した場合、図１１のステップＳ２０７０では、変数ｋ＝ｎ−１であるか否かを判定する。
【０１５３】
［変形例２−２］
第２の実施形態では、変数ｋ＝１である場合、構造規定レベル０，構造規定レベル１のそれぞれに対応する線分を、尤度を求める為に用いていた。しかしながら、変数ｋ＝１である場合、構造規定レベル１に対応する線分のみを、尤度を求める為に用いるようにしても良い。
【０１５４】
これは、構造規定レベルをｎレベル分設けた場合であっても同様で、変数ｋ＝ｍである場合には、構造規定レベルｍに対応する線分のみを、尤度を求める為に用いるようにしても良い。
【０１５５】
［変形例２−３］
第２の実施形態では、ステップＳ２０５０において、パーティクルごとに画像上に線分を投影し、投影された線分の等分割点ごとにエッジ探索を行っていた。しかしながら、この処理は計算コストが高いため、あらかじめ画像全体に対してエッジ検出（例えば、Ｓｏｂｅｌフィルタ、Ｃａｎｎｙフィルタ）を行っておき、エッジ探索の際に探索ライン上の勾配を求める処理を省略してもよい。また、あらかじめ行うエッジ検出によりエッジの方向を保持しておき、探索ライン上でかつ投影された線分に類似した方向のエッジを対応エッジとしてもよい。
【０１５６】
［変形例２−４］
第２の実施形態では、パーティクルの位置姿勢情報及び重み値から算出される位置姿勢情報の期待値、もしくは重み値が最大となるパーティクルの位置姿勢情報を撮像装置１００の位置姿勢情報としていた。しかしながら、パーティクルフィルタによる結果を概略の位置姿勢情報として、第１の実施形態により撮像装置１００の位置姿勢情報を算出してもよい。
［変形例２−５］
第２の実施形態では、ステップＳ２０５０において、パーティクルごとに線分の分割点が隠蔽されているかどうかを判定していた。しかしながら、例えば直前の時刻の位置姿勢情報、または直前の構造規定レベルでの位置姿勢情報に基づいて線分の分割点が隠蔽されているかどうか判定し、この隠蔽情報をステップＳ２０５０において用いてもよい。これにより、計算負荷の高い隠蔽情報の計算が省略できる。
【０１５７】
［変形例２−６］
第２の実施形態では、最初に構造規定レベルが小さい線分を用いてパーティクルを更新した後、より構造規定レベルが大きい線分を用いてパーティクルを更新して高精度な撮像装置１００の位置姿勢情報の算出を行った。しかしながら、構造規定レベルが小さい線分を用いて更新されたパーティクルが表す撮像装置１００の位置姿勢情報の精度が十分高いと考えられる場合には、構造規定レベルが大きい線分を用いてパーティクルを更新する処理を省略してもよい。例えば、パーティクルの重み値のうち最大の重みが二番目に大きい重み値に対して十分大きい場合や、最大の重み値のパーティクルにおける対応エッジと線分の距離の平均二乗和がほぼ０である場合には、その時点で処理を打ち切ってもよい。
【０１５８】
［変形例１］
第２の実施形態では、撮像装置１００が撮像する画像から得られる情報を用いて撮像装置１００の位置姿勢情報の算出を行った。しかしながら、他のセンサを用いることにより、６自由度ある位置姿勢情報の未知数の数を減らしてもよい。例えば、３自由度姿勢センサを用いて姿勢を既知としてもよい。また、姿勢のうち傾斜角を計測する傾斜角センサや、３自由度姿勢センサであって傾斜角が高精度に計測できる姿勢センサを用いて、２自由度ある傾斜角を既知として、画像情報からは４自由度（撮像装置の位置及び方位角）を求めるようにしてもよい。また、複数の客観カメラにより３次元位置を計測する位置センサを用いて、姿勢のみを画像情報から求めるようにしてもよい。また、これらのセンサを複数併用して未知数を減らしてもよい。
【０１５９】
［第３の実施形態］
図１に示した位置姿勢計測装置１は、一般のＰＣ（パーソナルコンピュータ）を用いて実装することができる。
【０１６０】
図１２は、位置姿勢計測装置１に適用可能なコンピュータのハードウェア構成例を示すブロック図である。
【０１６１】
ＣＰＵ１２０１は、ＲＡＭ１２０２やＲＯＭ１２０３に格納されているプログラム（コンピュータプログラム）やデータを用いて、コンピュータ全体の制御を行うと共に、位置姿勢計測装置１が行うものとして上述した各処理を実行する。
【０１６２】
ＲＡＭ１２０２は、外部記憶装置１２０６からロードされたプログラムやデータ、Ｉ／Ｆ（インターフェース）１２０７を介して外部から受信したデータ、等を一時的に記憶するためのエリアを有する。更に、ＲＡＭ１２０２は、ＣＰＵ１２０１が各種の処理を実行する際に用いるワークエリアも有する。即ち、ＲＡＭ１２０２は各種のエリアを適宜提供することができる。
【０１６３】
ＲＯＭ１２０３には、コンピュータの設定データや、ブートプログラムなどが格納されている。
【０１６４】
操作部１２０４は、キーボードやマウスなどにより構成されており、コンピュータの操作者が操作することで、各種の指示をＣＰＵ１２０１に対して入力することができる。
【０１６５】
表示部１２０５は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１２０１による処理結果を、画像や文字などでもって表示することができる。
【０１６６】
外部記憶装置１２０６は、ハードディスクドライブ装置に代表される、大容量情報記憶装置である。外部記憶装置１２０６には、ＯＳ（オペレーティングシステム）や、位置姿勢計測装置１が行うものとして上述した各処理をＣＰＵ１２０１に実行させるためのプログラムやデータなどが保存されている。係るプログラムには、例えば、図１の位置姿勢算出部１３０に対応するプログラムが含まれている。また、係るデータには、図１のモデルデータ記憶部１２０が記憶しているものとして上述した各種のデータが含まれている。即ち、外部記憶装置１２０６は、図１のモデルデータ記憶部１２０としても機能する。
【０１６７】
外部記憶装置１２０６に保存されているプログラムやデータは、ＣＰＵ１２０１による制御に従って、適宜ＲＡＭ１２０２にロードされる。そして、ＣＰＵ１２０１はこのロードされたプログラムやデータを用いて処理を実行するので、コンピュータは位置姿勢計測装置１が行うものとして上述した各処理を実行することになる。
【０１６８】
Ｉ／Ｆ１２０７は、コンピュータに外部装置を接続するために設けられたもので、例えば、図１の画像入力部１１０として機能する。従ってこの場合には、撮像装置１００が撮像した現実空間の画像は、このＩ／Ｆ１２０７を介して外部記憶装置１２０６やＲＡＭ１２０２に送出される。
【０１６９】
１２０８は上述の各部を繋ぐバスである。
【０１７０】
なお、以上説明した各実施形態（変形例を含む）は、適宜組み合わせても良い。その際に処理やシステムの構成の変更については、当業者であれば容易に想到し得るであろう。
【０１７１】
［その他の実施形態］
また、本発明の目的は、以下のようにすることによって達成されることはいうまでもない。即ち、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体（または記憶媒体）を、システムあるいは装置に供給する。係る記憶媒体は言うまでもなく、コンピュータ読み取り可能な記憶媒体である。そして、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記録した記録媒体は本発明を構成することになる。
【０１７２】
また、コンピュータが読み出したプログラムコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行う。その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１７３】
さらに、記録媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０１７４】
本発明を上記記録媒体に適用する場合、その記録媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【図面の簡単な説明】
【０１７５】
【図１】本発明の第１の実施形態に係るシステムの機能構成例を示すブロック図である。
【図２】ユーザが本発明の第１の実施形態に係るシステムを使用している様子を示す図である。
【図３】現実物体１０の外観を模した仮想物体に係るデータ（モデルデータ）の構成例を説明する図である。
【図４】位置姿勢計測装置１が、撮像装置１００の位置姿勢情報を求めるために行う処理のフローチャートである。
【図５】ステップＳ１０４０における処理の詳細を示すフローチャートである。
【図６】現実空間の画像上に投影された線分を説明する図である。
【図７】各線分について画像上での分割点を示す図である。
【図８】ステップＳ１１３０における処理の詳細を示すフローチャートである。
【図９】本発明の第１の実施形態におけるエッジ検出方法を説明する図である。
【図１０】線分情報を利用して撮像装置１００の位置姿勢情報を算出する方法を説明する図である。
【図１１】位置姿勢計測装置１が、撮像装置１００の位置姿勢情報を求めるために行うのフローチャートである。
【図１２】位置姿勢計測装置１に適用可能なコンピュータのハードウェア構成例を示すブロック図である。
【図１】
0005111210.tif 000020
【図２】
0005111210.tif 000021
【図３】
0005111210.tif 000022
【図４】
0005111210.tif 000023
【図５】
0005111210.tif 000024
【図６】
0005111210.tif 000025
【図７】
0005111210.tif 000026
【図８】
0005111210.tif 000027
【図９】
0005111210.tif 000028
【図１０】
0005111210.tif 000029
【図１１】
0005111210.tif 000030
【図１２】
0005111210.tif 000031