(57)【特許請求の範囲】
【請求項１】
カメラによって撮影された画像データを基にして、前記カメラが並進移動したか否かおよび前記カメラが前記カメラの光軸方向の周りを回転したか否かを判定し、前記カメラが並進移動しておらず、かつ、前記カメラが光軸周りを回転していない場合には、撮影時の画像データと、前記カメラの位置姿勢に関連付けられた画像データとを基にして、前記カメラの位置姿勢を推定する第１位置姿勢推定を実行すると判定し、前記カメラが並進移動している場合、または、前記カメラが光軸周りを回転している場合には、撮影時の画像データの特徴点とマップ点との対応関係から前記カメラの位置姿勢を推定する第２位置姿勢推定を実行すると判定する判定部
を有することを特徴とするカメラ姿勢推定装置。
【請求項２】
前記第１位置姿勢推定は、image-to-image手法によって前記カメラの位置姿勢を推定し、前記第２位置姿勢推定は、image-to-map手法によって前記カメラの位置姿勢を推定することを特徴とする請求項１に記載のカメラ姿勢推定装置。
【請求項３】
前記判定部は、前記カメラによって撮影された画像データから所定の形状を有するマーカを検出した場合には、前記マーカを基にして前記カメラの位置姿勢を推定する第３位置姿勢推定を実行すると判定することを特徴とする請求項１に記載のカメラ姿勢推定装置。
【請求項４】
前記撮影時の画像データの特徴点と前記カメラの位置姿勢に関連付けられたマップ点との対応関係から前記カメラの位置姿勢を推定する推定部と、前記推定部によって推定された前記カメラの位置姿勢の品質を判定する品質判定部とを更に有し、前記判定部は、前記品質が閾値未満である場合に、前記第１位置姿勢推定を実行するのか、前記第２位置姿勢推定を実行するのかを判定することを特徴とする請求項１に記載のカメラ姿勢推定装置。
【請求項５】
コンピュータが実行するカメラ姿勢推定方法であって、
カメラによって撮影された画像データを基にして、前記カメラが並進移動したか否かおよび前記カメラが前記カメラの光軸方向の周りを回転したか否かを判定し、
前記カメラが並進移動しておらず、かつ、前記カメラが光軸周りを回転していない場合には、撮影時の画像データと、前記カメラの位置姿勢に関連付けられた画像データとを基にして、前記カメラの位置姿勢を推定する第１位置姿勢推定を実行すると判定し、
前記カメラが並進移動している場合、または、前記カメラが光軸周りを回転している場合には、撮影時の画像データの特徴点とマップ点との対応関係から前記カメラの位置姿勢を推定する第２位置姿勢推定を実行すると判定する
処理を実行することを特徴とするカメラ姿勢推定方法。
【請求項６】
コンピュータに、
カメラによって撮影された画像データを基にして、前記カメラが並進移動したか否かおよび前記カメラが前記カメラの光軸方向の周りを回転したか否かを判定し、
前記カメラが並進移動しておらず、かつ、前記カメラが光軸周りを回転していない場合には、撮影時の画像データと、前記カメラの位置姿勢に関連付けられた画像データとを基にして、前記カメラの位置姿勢を推定する第１位置姿勢推定を実行すると判定し、
前記カメラが並進移動している場合、または、前記カメラが光軸周りを回転している場合には、撮影時の画像データの特徴点とマップ点との対応関係から前記カメラの位置姿勢を推定する第２位置姿勢推定を実行すると判定する
処理を実行させることを特徴とするカメラ姿勢推定プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カメラ姿勢推定装置等に関する。
【背景技術】
【０００２】
ＰＣ（Personal  Computer）・携帯端末等に装着されるカメラの位置姿勢を求める方法が開示されている。また、求めたカメラの位置姿勢を用いて、ＰＣ・携帯端末の画面に表示された撮影画像に付加情報を重畳表示させ、ユーザの作業支援を実現するための技術も開示されている。
【０００３】
画面から時々刻々のカメラ位置姿勢を推定する従来技術として、例えば、画像内に含まれる特徴点を利用するものがある。特徴点を用いる従来技術では、予め対象物に関する３次元座標のマップを作成しておき、現在の画像中に存在する特徴点とマップの点群とを毎時間対応付けることにより、カメラの位置姿勢を推定する。
【０００４】
図１３は、カメラの位置姿勢を求める従来技術を説明するための図である。図１３に示す例では、マップ点Ｓ１〜Ｓ６が存在するものとする。あるマップ点Ｓｉは、世界座標系で、式（１）によって示される。画像２０上には、特徴点ｘ１〜ｘ６が存在するものとする。ある特徴点ｘｉは、カメラ座標系で、式（２）によって示される。撮影画像２０上に投影したマップ点を、投影点ｘ１’〜ｘ６’とする。ある投影点ｘｉ’は、カメラ座標系で、式（３）によって示される。
【０００５】
Ｓｉ＝（ｘ，ｙ，ｚ）・・・（１）
【０００６】
ｘｉ＝（ｕ，ｖ）・・・（２）
【０００７】
ｘｉ’＝（ｕ’，ｖ’）・・・（３）
【０００８】
例えば、従来技術では、式（４）によって算出される二乗和Ｅが最小となるようなカメラ位置姿勢行列Ｍを算出することで、カメラの位置姿勢を求める。
【０００９】
【数１】
0006464934.tif 000002
【００１０】
ここで、ユーザが作業中の場合、カメラの位置姿勢が頻繁に変化するため、カメラの位置姿勢の推定が一時的にロストする状態となる場合がある。例えば、ユーザが携帯端末を下に下ろした場合には携帯端末に装着されているカメラも下を向く。カメラの撮影画像には、対象物に含まれる特徴点が検出されなくなるため、一時的にカメラの位置姿勢を検出することができなくなる。
【００１１】
カメラの位置姿勢を検出していない状態から、再びカメラを対象物に向けたとき、カメラの位置姿勢を推定する処理を再開する処理を復帰処理とよび、複数の従来技術が存在する。例えば、復帰処理には、image-to-image手法を用いる技術と、image-to-map手法を用いる技術とがある。
【００１２】
image-to-image手法について説明する。image-to-image手法は、復帰処理において、キーフレームを用いる。キーフレームは、カメラの位置姿勢値とその時のカメラの撮影画像とを対応付けた情報である。予め取得した３次元マップを用いて、ユーザはカメラの位置姿勢の推定中にキーフレームを蓄積しておく。image-to-image手法は、カメラの位置姿勢をロストした場合には、現在のカメラの撮影画像と最類似のキーフレームを探索し、探索したキーフレームと現在のカメラとの間の相対的な位置姿勢を推定し、現在のカメラの位置姿勢を求める。image-to-image手法は、上記のように、２画像から復帰処理を行うものである。
【００１３】
image-to-image手法の利点について説明する。image-to-image手法は、高速な復帰処理が可能である。
【００１４】
image-to-image手法の欠点について説明する。image-to-image手法は、復帰処理の確実性を向上させるために、あらかじめ分布させるキーフレーム数を増加させ、分布の偏りを少なくする必要がある。ユーザの作業支援を想定した場合、image-to-image手法に詳しくないユーザが、高度なキーフレームの蓄積を行うため、非効率である。
【００１５】
image-to-image手法は、最類似のキーフレームと現在のカメラの位置関係によっては、復帰できない。２画像から相対姿勢を求めるimage-to-image手法では、カメラ間の相対的な回転運動のみしか推定できず、並進運動を推定できない。
【００１６】
image-to-map手法について説明する。image-to-map手法では、復帰処理に特徴点ごとの局所特徴量を用いる。image-to-map手法では、現在のカメラの撮影画像内の特徴点とマップ点とを、局所特徴量のマッチングによって対応付ける。image-to-map手法では、３点以上の特徴点−マップ点の対応ペアを見つけることができれば、PnP（Perspective  N-Point）アルゴリズムによって現在のカメラの位置姿勢を推定することができる。image-to-map手法は、上記のように、撮影画像の特徴点とマップ点とを対応付けて復帰処理を行うものである。
【００１７】
image-to-map手法の利点について説明する。image-to-map手法は、image-to-image手法と比較して少ないキーフレーム数で位置姿勢を推定することができる。
【００１８】
image-to-map手法の欠点について説明する。image-to-map手法は、復帰処理にかかる処理コストがimage-to-image手法と比較して大きい。例えば、image-to-map手法では、全てのキーフレームに対して局所特徴量の抽出およびマッチングを行うため、処理コストが大きくなる。
【００１９】
image-to-map手法は、現在のカメラの位置関係によっては、復帰できない。例えば、アフィン不変でない特徴量は、カメラの向きが対象物に対して斜め方向でないと、特徴量のマッチングに失敗する。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開２０１１−１３０１８０号公報
【発明の概要】
【発明が解決しようとする課題】
【００２１】
しかしながら、上述した従来技術では、カメラの位置姿勢を正確に推定することができないという問題がある。
【００２２】
上記のように、image-to-image手法およびimage-to-map手法は一長一短であり、カメラの位置姿勢によっては、カメラの位置姿勢を推定することが難しい。このため、多様なカメラの位置姿勢に対応して、カメラの位置姿勢を推定することが求められる。
【００２３】
１つの側面では、本発明は、カメラの位置姿勢を推定することができるカメラ姿勢推定装置、カメラ姿勢推定方法およびカメラ姿勢推定プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２４】
第１の案では、カメラ姿勢推定装置は、判定部を有する。判定部は、カメラによって撮影された画像データを基にして、カメラが並進移動したか否かおよびカメラがカメラの光軸方向の周りを回転したか否かを判定する。判定部は、カメラが並進移動しておらず、かつ、カメラが光軸周りを回転していない場合には、撮影時の画像データと、カメラの位置姿勢に関連付けられた画像データとを基にして、カメラの位置姿勢を推定する第１位置姿勢推定を実行すると判定する。判定部は、カメラが並進移動している場合に、または、カメラが光軸周りを回転している場合には、撮影時の画像データの特徴点とマップ点との対応関係からカメラの位置姿勢を推定する第２位置姿勢推定を実行すると判定する。
【発明の効果】
【００２５】
カメラの位置姿勢を正確に推定することができる。
【図面の簡単な説明】
【００２６】
【図１】図１は、発明者が考案したimage-to-image手法とimage-to-map手法との切り替えに関するアイデアを説明するための図である。
【図２】図２は、３次元マップのデータ構造の一例を示す図である。
【図３】図３は、キーフレームテーブルのデータ構造の一例を示す図である。
【図４】図４は、本実施例にかかるカメラ姿勢推定装置の構成を示す機能ブロック図である。
【図５】図５は、マッチング結果の一例を示す図である。
【図６】図６は、本実施例１にかかるカメラ姿勢推定装置の処理手順を示すフローチャートである。
【図７】図７は、本実施例２にかかるカメラ姿勢推定装置の構成を示す図である。
【図８】図８は、本実施例２で対象とするマーカの一例を示す図である。
【図９】図９は、本実施例２にかかるカメラ姿勢推定装置の処理手順を示すフローチャートである。
【図１０】図１０は、その他の実施例にかかるカメラ姿勢推定装置の処理手順を示すフローチャートである。
【図１１】図１１は、DLT法に基づく初期位置推定の課題を説明するための図である。
【図１２】図１２は、カメラ姿勢推定プログラムを実行するコンピュータの一例を示す図である。
【図１３】図１３は、カメラの位置姿勢を求める従来技術を説明するための図である。
【発明を実施するための形態】
【００２７】
以下に、本願の開示するカメラ姿勢推定装置、カメラ姿勢推定方法およびカメラ姿勢推定プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００２８】
図１は、発明者が考案したimage-to-image手法とimage-to-map手法との切り替えに関するアイデアを説明するための図である。図１において、「マル」は、該当する手法でカメラの位置姿勢を推定可能であることを示し、「バツ」は、該当する手法でカメラの位置姿勢を推定することができないことを示す。「三角」は、条件つきで、該当する手法でカメラの位置姿勢を推定することができることを示す。
【００２９】
例えば、image-to-image手法は、過去のキーフレームと現在のカメラ位置との相対的な回転運動のみを推定するため、並進運動に未対応である。
【００３０】
一方、その場回転のみを含む場合には、カメラの光軸周りの回転と光軸に垂直な軸周りの回転で、対応関係に差がある。光軸周りについては、image-to-image手法でも少しの回転であれば対応が可能であるが、image-to-image手法よりもimage-to-map手法の方が望ましい。
【００３１】
光軸に垂直な軸周りに関して、image-to-image手法は対応可能である。しかし、光軸に垂直な軸周りに関して、image-to-map手法は、特徴量がアフィン不変でない限り、微少な回転しか対応することができない。
【００３２】
並進と回転とが融合した動きに関しては、並進移動を含むためimage-to-image手法は未対応であり、image-to-map手法は、特徴量がアフィン不変でない限り、微少な回転しか対応できない。
【００３３】
図１を用いて説明した内容に鑑み、本実施例１にかかるカメラ姿勢推定装置は、カメラが並進移動を含むか否かを判定し、並進移動を含む場合にはimage-to-map手法を選択して、復帰処理を行う。カメラ姿勢推定装置は、並進移動を含まない場合には、その場回転が主としてどの方向周りに回っているかを判定し、光軸周りであれば、image-to-map手法によって復帰処理を行い、それ以外であれば、image-to-image手法によって復帰処理を行う。これによって、カメラ姿勢推定装置によれば、移動前のカメラの位置と、移動後のカメラの位置との関係がどのような位置関係であっても、カメラの位置姿勢を推定可能とし、適切な復帰処理を実行することができる。
【００３４】
ここで、本実施例１にかかるカメラ姿勢推定装置は、３次元マップおよびキーフレームテーブルを予め作成しておき、カメラの位置姿勢を推定する場合に利用する。以下において、３次元マップを作成する方法と、キーフレームテーブルを作成する方法について順に説明する。
【００３５】
３次元マップを生成する処理について説明する。カメラ姿勢推定装置は、カメラの位置姿勢を推定する前に、ＡＲ（Augmented  Reality）機能を使用する対象機器周辺の自然特徴点の３次元座標を測定しておく。作成方法は、以下の通りである。以下の説明では、３次元空間の自然特徴点を適宜、マップ点と表記する。また、画像上のマップ点を、特徴点と表記する。
【００３６】
カメラ姿勢推定装置は、カメラを用いて異なる視点から２つの画像を撮影する。カメラ姿勢推定装置は、２つの画像からマップ点に対応する特徴点を抽出し、２画像間で同一の特徴点のマッチングを行う。例えば、特徴点は、着目点の近傍での濃淡変動が大きく、濃淡変動によって着目点の画像上の位置が一意に規定されることを基準として検出される。
【００３７】
特徴点の抽出、マッチングには、SIFT、SURF、ORB等の処理を利用する。例えば、SIFTの処理は、非特許文献「D.  G.  Lowe,  Distinctive  Image  Features  from  Scale-Invariant  Keypoints,  International  Journal  of  Computer  Vision,  Vol.60,  No.2,  pp.91-110  (2004)」に記載された処理を行っても良い。
【００３８】
カメラ姿勢推定装置は、マッチング済みの特徴点ペアを用いて、２画像間で８点アルゴリズムに基づき基礎行列を算出する。カメラ姿勢推定装置は、基礎行列および特徴点の三角測量を用いて、マップ点の３次元座標を取得することで、３次元マップを生成する。
【００３９】
例えば、カメラ姿勢推定装置は、８点アルゴリズムの処理として、非特許文献「R.I.Hartley,  In  defense  of  the  eight-point  algorithm,  IEEE  Transactions  on  Pattern  Analysis  and  Machine  Intelligence,  Vol.19,  No.6,  pp.580-593  (1997)」に記載されている処理を用いても良い。カメラ姿勢推定装置は、三角測量の処理として、非特許文献「R.I.Hartley  et  al.,  Triangulation,  Computer  Vision  and  Image  Understanding,  Vol.68,  No.2,  pp.146-157  (1997)」に記載された処理を実行しても良い。
【００４０】
図２は、３次元マップのデータ構造の一例を示す図である。図２に示すように、３次元マップは、番号と、Ｘ、Ｙ、Ｚと、特徴量とを対応付ける。図２において、番号は、マップ点を一意に特定する番号である。図２に示す例では、３次元マップに６８個のマップ点が含まれる。Ｘ、Ｙ、Ｚは、マップ点の３次元座標を示す。特徴量は、マップ点に対応する画像上の特徴点の特徴量である。例えば、特徴量は、特徴点周辺の画素値であってもよい。世界座標の原点は、上記の処理方法を用いると、１番目のカメラ視点がそのまま世界座標の原点となる。
【００４１】
次に、キーフレームテーブルを作成する処理について説明する。カメラ姿勢推定装置は、３次元マップに加えて、事前に取得された３次元マップを用いて、カメラの位置姿勢を後述の方法で算出する。カメラ姿勢推定装置は、カメラ姿勢推定が安定している間にカメラに撮影された撮影画像と、かかる撮影画像を撮影した時点のカメラの位置姿勢とを対応付けた情報を、キーフレームとしてキーフレームテーブルに保存する。カメラ姿勢推定装置は、下記の条件１〜条件３を全て満たしている場合に、キーフレームとして追加する。
【００４２】
最後にキーフレームを追加した時刻から一定時間が過ぎている・・・（条件１）
カメラの位置姿勢の推定値が高品質である・・・（条件２）
最近傍のキーフレーム間のユークリッド距離がある閾値以上である・・・（条件３）
【００４３】
条件１における一定時間は、例えば６６０ｍｓである。条件２において、推定値が高品質であるか否かを判定する処理は、後述する。条件３の閾値は、例えば、予め作成した３次元マップの２つのカメラの間の距離と同一の値となる。
【００４４】
図３は、キーフレームテーブルのデータ構造の一例を示す図である。図３に示すように、このキーフレームテーブルは、番号と、位置姿勢と、撮影画像とを対応付ける。図３において、番号は、キーフレームを一意に識別する番号である。位置姿勢は、カメラの位置姿勢を示すものである。撮影画像は、カメラによって撮影された画像データである。図３に示す例では、キーフレームテーブルに２５個のキーフレームが含まれる。
【００４５】
例えば、カメラの位置姿勢は６次元（ｒ１，ｒ２，ｒ３，ｔ１，ｔ２，ｔ３）で表される。このうち、（ｒ１，ｒ２，ｒ３）は世界座標におけるカメラの姿勢を示す。（ｔ１，ｔ２，ｔ３）は、世界座標におけるカメラの位置を示す。
【００４６】
次に、本実施例１にかかるカメラ姿勢推定装置の構成について説明する。図４は、本実施例にかかるカメラ姿勢推定装置の構成を示す機能ブロック図である。図４に示すように、カメラ姿勢推定装置１００は、カメラ５０に接続される。カメラ姿勢推定装置１００は、画像取得部１１０と、特徴点抽出部１２０と、カメラ姿勢推定部１３０と、品質判定部１４０とを有する。また、カメラ姿勢推定装置１００は、前処理部１５０と、判定部１６０と、第１復帰処理部１７０と、第２復帰処理部１８０とを有する。
【００４７】
カメラ５０は、ＰＣ、携帯端末に装着された単眼ＲＧＢ（Red  Green  Blue）カメラである。カメラ５０は、任意の視点の画像を撮影し、撮影画像を画像取得部１１０に出力する。
【００４８】
画像取得部１１０は、カメラ５０に接続され、カメラ５０から撮影画像を取得する処理部である。画像取得部１１０は、撮影画像を特徴点抽出部１２０に出力する。
【００４９】
特徴点抽出部１２０は、撮影画像から特徴点を抽出する処理部である。例えば、特徴点抽出部１２０は、SIFT、SURF、ORB等の処理を実行することで、特徴点を抽出する。特徴点抽出部１２０は、特徴点の情報を、カメラ姿勢推定部１３０に出力する。特徴点の情報は、例えば、撮影画像から抽出した各特徴点の２次元座標、特徴量が含まれる。
【００５０】
カメラ姿勢推定部１３０は、特徴点抽出部１２０から取得した特徴点の情報と、図２に示した３次元マップとを基にして、特徴点とマップ点とのマッチングを行い、マッチング結果を基にして、カメラ５０の位置姿勢を推定する処理部である。
【００５１】
カメラ姿勢推定部１３０が、マップ点と特徴点とをマッチングする処理の一例について説明する。カメラ姿勢推定部１３０は、前回推定したカメラ５０の位置姿勢を用いて、特徴点が、３次元マップのどのマップ点に対応するのかを判定する。カメラ姿勢推定部１３０は、直前の時刻において、マップ点が撮影画像上に投影される座標を、式（５）により求める。以下の説明において、撮影画像上に投影されたマップ点を適宜、投影点と表記する。
【００５２】
【数２】
0006464934.tif 000003
【００５３】
式（５）において、Ａは、３行３列の行列であり、カメラ５０の内部パラメータに対応する。利用者は、非特許文献「Z.Zhang,  A  flexible  new  technique  for  camera  calibration,  IEEE  Transactions  on  Pattern  Analysis  and  Machine  Intelligence,  Vol.22,  No.11,  pp.1330-1334  (2000)」に基づいて、事前にカメラ５０のキャリブレーションを行っておく。
【００５４】
式（５）において、（Ｒ｜ｔ）は、前回推定したカメラ５０の位置姿勢を、式（６）に示すロドリゲス変換の公式を用いて３行３列の回転行列Ｒと並進ベクトルｔに変換した値を融合した３行４列の行列である。（ｕ，ｖ）は、マップ点を撮影画像上に投影した場合の投影点の２次元座標である。（Ｘ，Ｙ，Ｚ）は、各マップ点の３次元座標である。
【００５５】
【数３】
0006464934.tif 000004
【００５６】
式（６）において、Ｉは単位行列を示す。θは、式（７）によって定義される。ｒは、式（８）によって定義される。
【００５７】
【数４】
0006464934.tif 000005
【００５８】
【数５】
0006464934.tif 000006
【００５９】
カメラ姿勢推定部１３０は、各投影点に対してある閾値の範囲内に存在する現時刻の撮影画像の特徴点との距離をそれぞれ計算する。カメラ姿勢推定部１３０は、距離が最小となる投影点と特徴点とを特定し、特定した投影点に対応するマップ点と、特徴点とをペアとする。カメラ姿勢推定部１３０は、全ての投影点について上記処理を繰り返し実行し、投影点に対応するマップ点と、現時刻の撮影画像の特徴点とのマッチングを行う。閾値を例えば、２０pixelとする。
【００６０】
カメラ姿勢推定部１３０は、マッチングを行った後に、カメラ５０の位置姿勢を推定する処理を実行する。カメラ姿勢推定部１３０は、３点以上の特徴点とマップ点とのペアが存在する場合、PnPアルゴリズムを用いてカメラの位置姿勢を推定する。例えば、カメラ姿勢推定部１３０は、非特許文献「V.Lepetit  et  al.,  EPnP:  An  Accurate  O(n)  Solution  to  the  PnP  Problem,  International  Journal  of  Computer  Vision,  Vol.81,  Issue  2,  pp.155-166  (2008)」に記載されたPnPアルゴリムを用いて、位置姿勢を推定しても良い。
【００６１】
また、カメラ姿勢推定部１３０は、式（４）を用いて、カメラ５０の位置姿勢を推定しても良い。カメラ姿勢推定部１３０は、式（４）によって示される二乗和Ｅが最小となるようなカメラの位置姿勢行列Ｍを算出することで、カメラの位置姿勢を求める。カメラ姿勢推定部１３０は、カメラ５０の位置姿勢の情報と、マッチングしたペアの数の情報とを品質判定部１４０に出力する。
【００６２】
品質判定部１４０は、カメラ姿勢推定部１３０によって推定されたカメラ５０の位置姿勢の品質を判定する処理部である。例えば、品質判定部１４０は、３次元マップに含まれるマップ点の総数に対するマッチングしたペアの数の割合を算出する。品質判定部１４０は、算出した割合が所定の割合以上である場合には、カメラ５０の位置姿勢の推定値が高品質であると判定する。一方、品質判定部１４０は、算出した割合が所定の割合未満である場合には、カメラ５０の位置姿勢の推定値が低品質であると判定する。例えば、所定の割合を３割とする。
【００６３】
品質判定部１４０は、カメラ５０の位置姿勢の推定値が高品質であると判定した場合には、現時刻のカメラ５０の位置姿勢を、カメラ姿勢推定部１３０によって推定された位置姿勢であると確定し、所定の記憶部に記憶する。
【００６４】
品質判定部１４０は、カメラ５０の位置姿勢の推定値が低品質であると判定した場合には、前処理部１５０に対して、復帰処理要求を出力する。
【００６５】
前処理部１５０は、品質判定部１４０から復帰処理要求を取得した場合に、現時刻の撮影画像と、図３に示したキーフレームテーブルとを比較して、基準キーフレームを探索する処理部である。前処理部１５０は、基準キーフレームの情報を、判定部１６０に出力する。
【００６６】
前処理部１５０は、現時刻の撮影画像と、キーフレームテーブルとを比較して、現時刻の撮影画像に最も類似する撮影画像を含むキーフレームを、基準キーフレームとして特定する。前処理部１５０は、基準キーフレームの情報を、第１復帰処理部１７０、判定部１６０に出力する。
【００６７】
ここで、前処理部１５０が現時刻の撮影画像と最も類似した撮影画像を有するキーフレームを探索する処理の一例について説明する。前処理部１５０は、現在の撮影画像と各キーフレームの撮影画像を所定のサイズに縮小し、ガウシアンフィルタによりぼかした状態で、各画素についてSSD（Sum  of  Squared  Distance）を計算し、最もSSDの値が小さいキーフレームを基準キーフレームとして特定する。
【００６８】
判定部１６０はimage-to-image手法によって復帰処理を行うのか、Image-to-map手法によって復帰処理を行うのかを判定する処理部である。判定部１６０は、Image-to-image手法によって復帰処理を行うと判定した場合には、第１復帰処理部１７０に対して復帰処理要求を行う。判定部１６０は、image-to-map手法によって復帰処理を行うと判定した場合には、第２復帰処理部１８０に対して復帰処理要求を行う。下記において、判定部１６０の処理について具体的に説明する。
【００６９】
判定部１６０は、まず、基準キーフレームのカメラ５０の位置と現在のカメラ５０の位置との位置関係に並進成分が含まれるか否かを判定する。判定部１６０は、位置関係に並進成分が含まれている場合には、image-to-map手法で復帰処理を行うと判定する。
【００７０】
判定部１６０は、位置関係に並進成分が含まれていない場合には、カメラ５０の光軸周りの回転が含まれるか否かを判定する。判定部１６０は、光軸周りの回転が含まれている場合には、image-to-map手法で復帰処理を行うと判定する。判定部１６０は、位置関係に並進成分が含まれておらず、かつ、光軸周りの回転が含まれていない場合には、image-to-image手法で復帰処理を行うと判定する。
【００７１】
ここで、位置関係に並進成分が含まれるか否かを判定する処理の一例について説明する。判定部１６０は、GRIC（Geometric  Robust  Information  Criteria）と呼ばれる指標を用いて、位置関係に並進成分が含まれるか否かを判定する。GRICに関する処理は、非特許文献「P.H.S.Torr  et  al.,  The  Problem  of  Degeneracy  in  Structure  and  Motion  Recovery  from  Uncalibrated  Image  Sequences,  International  Journal  of  Computer  Vision,  Vol.32,  No.1,  pp.27-44  (1999)」に記載されている。
【００７２】
GRICは、情報量基準の一種であり、幾何モデルの適合度を評価するための指標である。GRICを算出する具体的な算出式は、式（９）によって示される。式（９）において、Ｉは対応点数を示す。ｅｉは対応点ｉについて、求めたモデルに基づき計算された理想的な座標との誤差を示す。σは誤差の標準偏差を示す。ρ（ｅ２ｉ）は、式（１０）によって示される。式（９）に示されるλ１、λ２、式（１０）に示されるλ３は、式（１１）によって示される。lnは、自然対数を示すものである。
【００７３】
【数６】
0006464934.tif 000007
【００７４】
【数７】
0006464934.tif 000008
【００７５】
【数８】
0006464934.tif 000009
【００７６】
ここで、基準キーフレームの撮影画像と現在の撮影画像との２つの画像間の関係性は、カメラの位置関係により、基礎行列Ｆ、射影変換行列Ｈで説明可能である。例えば、その場回転のみの運動の場合、射影変換行列Ｈであり、並進を含む運動の場合、基礎行列Ｆである。
【００７７】
基礎行列Ｆのモデルでは、式（９）、（１０）のｍ、ｋ、ｒの値が、式（１２）に示すものとなる。射影変換行列Ｈのモデルでは、ｍ、ｋ、ｒの値が、式（１３）に示すものとなる。
【００７８】
（m,k,r）=（3,7,4）・・・（１２）
【００７９】
（m,k,r）=（2,8,4）・・・（１３）
【００８０】
判定部１６０は、現在の撮影画像と基準キーフレームの撮影画像同士で射影変換行列に基づくGRICスコアと基礎行列に基づくGRICスコアを比較することで、並進成分を含むか否かを判定する。射影変換行列に基づくGRICスコアを適宜、GRIC_Hと表記する。基礎行列に基づくGRICスコアを適宜、GRIC_Fと表記する。判定部１６０の具体的な判定処理は以下の通りである。
【００８１】
判定部１６０は、現在の撮影画像および基準キーフレームの撮影画像において、特徴点と特徴量とを算出し、対応点を計算する。判定部１６０が現在の撮影画像および基準キーフレームの撮影画像から特徴点を抽出する処理は、特徴点抽出部１２０が特徴点を抽出する処理と同様である。
【００８２】
判定部１６０が現在の撮影画像の特徴点と、基準キーフレームの撮影画像の特徴点とをマッチングして対応点を計算する処理は、カメラ姿勢推定部１３０に対応する処理を行う。例えば、判定部１６０は、現在の撮影画像の第１の特徴点と、基準キーフレームの撮影画像の第２の特徴点とについて、ベクトル間距離をそれぞれ計算し、ベクトル間距離が最小となる第１の特徴点と第２の特徴点との組を、対応点として特定する。
【００８３】
判定部１６０は、対応点を計算した後に、対応点を用いて、基礎行列Ｆと射影変換行列Ｈとを算出する。例えば、判定部１６０は、基礎行列Ｆを、上述した８点アルゴリズムに基づき算出する。判定部１６０は、射影変換行列Ｈを、DLT法やRANSAC法を用いて算出する。RANSAC法は、例えば、非特許文献「R.Hartley  et  al.,  Multiple  View  Geometry  in  Computer  Vision,  Cambridge  University  Press,  Cambridge,  U.K.(2000)」に記載された技術を用いればよい。
【００８４】
判定部１６０は、基礎行列Ｆによって、第１の特徴点を、基準キーフレームの撮影画像上に射影し、射影した点と、第２の特徴点との誤差を、GRIC_Fを求める場合のｅの値として特定する。判定部１６０は、各対応点について、それぞれｅの値を算出する。判定部１６０は、求めた各ｅの値と、式（９）〜式（１１）、式（１２）に基づいて、GRIC_Fの値を算出する。
【００８５】
判定部１６０は、射影変換行列Ｈによって、第１の特徴点を、基準キーフレームの撮影画像上に射影し、射影した点と、第２の特徴点との誤差を、GRIC_Hを求める場合のｅの値として特定する。判定部１６０は、各対応点について、それぞれｅの値を算出する。判定部１６０は、求めた各ｅの値と、式（９）〜式（１１）、式（１３）に基づいて、GRIC_Hの値を算出する。
【００８６】
判定部１６０は、GRIC_Fの値と、GRIC_Hの値とを比較する。判定部１６０は、GRIC_Hの値が、GRIC_Fの値よりも大きい場合に、並進成分を含むと判定する。並進成分を含むとは、前回のカメラ５０の位置に対して、現在のカメラ５０は、並進移動したことを意味する。判定部１６０は、GRIC_Hの値が、GRIC_Fの値よりも大きくない場合に、並進成分を含まないと判定する。
【００８７】
続いて、カメラ５０の光軸周りの回転が含まれるか否かを判定する。例えば、判定部１６０は、回転行列から各軸に関する回転角度を求め、光軸に垂直な２つの軸周りの回転角度が規定の閾値を超えていない場合に、カメラ５０の回転が、光軸周りの回転のみであると判定する。判定部１６０の具体的な判定処理は以下の通りである。
【００８８】
判定部１６０は、基準キーフレームの撮影画像と、現在の撮影画像との間で仮想点を２点用意し、仮想点について、射影変換行列Ｈを算出する。判定部１６０は、DLT法やRANSAC法などを用いて、射影変換行列Ｈを算出する。例えば、現在の撮影画像上の仮想点を第１の仮想点とし、基準キーフレームの撮影画像上の仮想点を第２の仮想点とする。
【００８９】
判定部１６０は、第１の仮想点を射影変換行列Ｈによって射影した基準キーフレームの撮影画像上の仮想点が、第２の仮想点に近づくように、ガウスニュートン法を用いて、カメラの回転行列Ｒ’を推定する。回転行列Ｒ’は、３行３列の行列である。
【００９０】
判定部１６０は、光軸に垂直な軸周りの角度Ａｘを式（１４）に基づき算出し、角度Ａｙを式（１５）に基づき算出する。
【００９１】
【数９】
0006464934.tif 000010
【００９２】
【数１０】
0006464934.tif 000011
【００９３】
判定部１６０は、ＡｘおよびＡｙが共に所定の閾値未満である場合に、光軸周りの回転が含まれていないと判定する。判定部１６０は、ＡｘまたはＡｙのうち何れか一方が、所定の閾値以上である場合に、光軸周りの回転が含まれると判定する。
【００９４】
第１復帰処理部１７０は、判定部１６０から復帰処理要求を受け付けた場合に、image-to-image手法に基づき、カメラ５０の位置姿勢を推定する処理部である。第１復帰処理部１７０は、基準キーフレームの撮影画像と、現在の撮影画像との対応関係から、現在のカメラ５０の位置姿勢を推定する。
【００９５】
例えば、第１復帰処理部１７０は、式（６）と式（１６）、式（１７）を用いて、基準キーフレームに含まれるカメラの位置姿勢を、ロドリゲス変換により、４行４列の姿勢行列Ｐｋに変換する。
【００９６】
【数１１】
0006464934.tif 000012
【００９７】
【数１２】
0006464934.tif 000013
【００９８】
第１復帰処理部１７０は、カメラの回転行列Ｒ’を用いて、式（１８）により、現在のカメラの位置姿勢行列Ｐｎを算出する。また、第１復帰処理部１７０は、式（１９）に示すロドリゲス変換により、現在のカメラ５０の姿勢ベクトルを算出しても良い。
【００９９】
【数１３】
0006464934.tif 000014
【０１００】
【数１４】
0006464934.tif 000015
【０１０１】
第２復帰処理部１８０は、判定部１６０から復帰処理要求を受け付けた場合に、image-to-map手法に基づき、カメラ５０の位置姿勢を推定する処理部である。第２復帰処理部１８０は、現在の撮影画像の特徴点と、３次元マップとを基にして、カメラ５０の位置姿勢を推定する。
【０１０２】
例えば、第２復帰処理部１８０は、現在の撮影画像の特徴点と、マップ点とのマッチングを行う。第２復帰処理部１８０は、判定部１６０によってマッチングされた結果を流用しても良いし、判定部１５０と同様の処理を実行しても良い。
【０１０３】
図５は、マッチング結果の一例を示す図である。図５に示す番号、Ｘ、Ｙ、Ｚ、特徴量に関する説明は、図２で説明した内容と同様である。ｘ、ｙは、マップ点とペアとなる特徴点の２次元座標を示す。第２復帰処理部１８０は、図５に示すマップ点と、特徴点とのペアを用い、PnPアルゴリズムによって、カメラの位置姿勢を推定する。
【０１０４】
次に、本実施例１にかかるカメラ姿勢推定装置１００の処理手順について説明する。図６は、本実施例１にかかるカメラ姿勢推定装置の処理手順を示すフローチャートである。図６に示すように、カメラ姿勢推定装置１００の画像取得部１１０は、カメラ５０から撮影画像を取得する（ステップＳ１０１）。
【０１０５】
カメラ姿勢推定装置１００の特徴点抽出部１２０は、撮影画像から特徴点を抽出する（ステップＳ１０２）。カメラ姿勢推定装置１００のカメラ姿勢推定部１３０は、マップ点と特徴点とをマッチングし（ステップＳ１０３）、カメラの位置姿勢を推定する（ステップＳ１０４）。
【０１０６】
カメラ姿勢推定装置１００の品質判定部１４０は、カメラの位置姿勢の推定値の品質を判定する（ステップＳ１０５）。品質判定部１４０は、推定値が高品質である場合には（ステップＳ１０６，Ｙｅｓ）、処理を終了する。例えば、カメラ姿勢推定装置１００は、ステップＳ１０６において、推定値が高品質であると判定した場合には、カメラ姿勢推定部１３０が推定したカメラ５０の位置姿勢を、現在のカメラの位置姿勢として確定する。
【０１０７】
一方、品質判定部１４０が、推定値が高品質でないと判定した場合には（ステップＳ１０６，Ｎｏ）、ステップＳ１０７に移行する。カメラ姿勢推定装置１００の前処理部１５０は、基準キーフレームを探索する（ステップＳ１０７）。
【０１０８】
カメラ姿勢推定装置１００の判定部１６０は、並進成分を含むか否かを判定する（ステップＳ１０８）。判定部１６０が、並進成分を含むと判定した場合には（ステップＳ１０８，Ｙｅｓ）、ステップＳ１０９に移行する。カメラ姿勢推定装置１００の第２復帰処理部１８０は、image-to-map手法により、カメラ５０の位置姿勢を推定する（ステップＳ１０９）。
【０１０９】
一方、判定部１６０は、並進成分を含まないと判定した場合には（ステップＳ１０８，Ｎｏ）、光軸方向回転を含むか否かを判定する（ステップＳ１１０）。判定部１６０が、光軸方向回転を含むと判定した場合には（ステップＳ１１０，Ｙｅｓ）、ステップＳ１０９に移行する。
【０１１０】
判定部１６０が、光軸方向回転を含まないと判定した場合には（ステップＳ１１０，Ｎｏ）、ステップＳ１１１に移行する。カメラ姿勢推定装置１００の第１復帰処理部１７０は、image-to-image手法により、カメラ５０の位置姿勢を推定する（ステップＳ１１１）。
【０１１１】
次に、本実施例１にかかるカメラ姿勢推定装置１００の効果について説明する。カメラ姿勢推定装置１００は、カメラが並進移動を含むか否かを判定し、並進移動を含む場合にはimage-to-map手法を選択して、復帰処理を行う。カメラ姿勢推定装置１００は、並進移動を含まない場合には、その場回転が主としてどの方向周りに回っているかを判定し、光軸周りであれば、image-to-map手法によって復帰処理を行い、それ以外であれば、image-to-image手法によって復帰処理を行う。これによって、カメラ姿勢推定装置１００によれば、移動前のカメラの位置と、移動後のカメラの位置との関係がどのような位置関係であっても、カメラの位置姿勢を正確に推定可能とし、適切な復帰処理を実行することができる。
【実施例２】
【０１１２】
本実施例２では、所定の形状を有するマーカに基づく復帰処理に関する実施例について説明する。本実施例２にかかるカメラ姿勢推定装置は、カメラの撮影画像から、マーカを検出した場合に、検出したマーカを用いて、カメラの位置姿勢を推定する。マーカは、他の対象物と比較して誤認識することが少ないため、image-to-image手法やimage-to-map手法と比較して、カメラ５０の位置姿勢の推定精度を向上させることができる。
【０１１３】
図７は、本実施例２にかかるカメラ姿勢推定装置の構成を示す図である。図７に示すように、このカメラ姿勢推定装置２００は、カメラ５０に接続される。カメラ姿勢推定装置２００は、画像取得部２１０と、マーカ検出部２１５と、特徴点抽出部２２０と、カメラ姿勢推定部２３０と、品質判定部２４０とを有する。また、カメラ姿勢推定装置２００は、前処理部２５０と、判定部２６０と、第１復帰処理部２７０と、第２復帰処理部２８０と、第３復帰処理部２９０とを有する。
【０１１４】
画像取得部２１０は、カメラ５０に接続され、カメラ５０から撮影画像を取得する処理部である。画像取得部２１０は、撮影画像を特徴点抽出部２２０およびマーカ検出部２１５に出力する。
【０１１５】
マーカ検出部２１５は、撮影画像からマーカを検出する処理部である。マーカ検出部２１５は、撮影画像からマーカを検出した場合には、マーカを検出した旨の情報を、判定部２６０に出力する。また、マーカ検出部２１５は、マーカを含む撮影画像を、第３復帰処理部２９０に出力する。
【０１１６】
図８は、本実施例２で対象とするマーカの一例を示す図である。図８に示すように、マーカ６０は矩形状であり、矩形の内側にはマーカ６０のＩＤを特定するためのパターンが印刷されている。例えば、マーカ検出部２１５は、非特許文献「H.Kato  et  al.,  Marker  Tracking  and  HMD  Calibration  for  a  Video-based  Augmented  Reality  Conferencing  System  (IWAR),  pp.85-94,  1999.」に記載された技術を用いても良い。
【０１１７】
マーカ検出部２１５は、下記の処理を行うことで、マーカ６０の４隅６０ａ，６０ｂ，６０ｃ，６０ｄの画像上での座標を検出する。マーカ検出部２１５は、撮影画像を白黒に二値化する。マーカ検出部２１５は、二値化した撮影画像に対してラベリングを実行し、輪郭を抽出する。マーカ検出部２１５は、輪郭から４隅を持つ四角形を抽出する。マーカ検出部２１５は、抽出した四角形と、所定のパターンのテンプレートマッチングを行い、所定のパターンと一致する四角形を、マーカとして検出する。
【０１１８】
特徴点抽出部２２０、カメラ姿勢推定部２３０、品質判定部２４０、前処理部２５０に関する説明は、図４に示した特徴点抽出部１２０、カメラ姿勢推定部１３０、品質判定部１４０、前処理部１５０に関する説明と同様である。第１復帰処理部２７０、第２復帰処理部２８０に関する説明は、図４に示した第１復帰処理部１７０、第２復帰処理部１８０に関する説明と同様である。
【０１１９】
判定部２６０は、image-to-image手法によって復帰処理を行うのか、image-to-map手法によって復帰処理を行うのか、マーカを用いて復帰処理を行うのかを判定する処理部である。判定部２６０は、マーカ検出部２１５から、マーカを検出した旨の情報を受け付けた場合に、第３復帰処理部２９０に対して、復帰処理要求を行う。判定部２６０に関するその他の処理は、図４に示した判定部１６０に関する処理と同様である。
【０１２０】
第３復帰処理部２９０は、判定部２６０から復帰処理要求を受け付けた場合に、マーカを用いてカメラ５０の位置姿勢を推定する処理部である。例えば、第３復帰処理部２９０は、マーカに基づいてカメラ５０の位置姿勢を推定する如何なる従来技術を利用してもよい。以下において、第３復帰処理部２９０の処理の一例について説明する。例えば、第３復帰処理部２９０は、回転行列Ｒの推定、平行移動成分の推定、回転移動成分のベクトル化を順に行うことで、カメラ５０の位置姿勢を推定する。
【０１２１】
３行３列の回転行列Ｒを推定する処理について説明する。第３復帰処理部２９０は、マーカ検出部２１５と同様の処理を実行して、撮影画像に含まれるマーカの４隅を検出する。第３復帰処理部２９０は、マーカの４隅から、マーカが含まれる方向ベクトルＶ１、Ｖ２を算出する。第３復帰処理部２９０は、Ｖ１、Ｖ２に直交する単位ベクトルＶ３を算出する。回転行列Ｒは式（２０）によって表すことができる。
【０１２２】
R=[V1,V2,V3]・・・（２０）
【０１２３】
３行１列の平行移動成分を推定する処理について説明する。第３復帰処理部２９０は、回転行列Ｒを、式（２１）、式（２２）に代入することで、Ｗ１、Ｗ２、Ｗ３に関する連立方程式を得る。第３復帰処理部２９０は、連立方程式を最小二乗法により解くことで、３行１列の平行移動成分［W1,W2,W3］を得る。例えば、第３復帰処理部２９０は、上記のH.Katoの非特許文献に記載された技術を用いて、平行移動成分を得る。
【０１２４】
【数１５】
0006464934.tif 000016
【０１２５】
【数１６】
0006464934.tif 000017
【０１２６】
回転移動成分のベクトル化について説明する。第３復帰処理部２９０は、３行３列の回転行列Ｒを、式（６）を基にして、３次元のベクトルｒに変換する。第３復帰処理部２９０は、上記の平行移動成分［W1,W2,W3］と、ベクトルｒを、カメラ５０の位置姿勢として推定する。
【０１２７】
次に、本実施例２にかかるカメラ姿勢推定装置２００の処理手順について説明する。図９は、本実施例２にかかるカメラ姿勢推定装置の処理手順を示すフローチャートである。図９に示すように、カメラ姿勢推定装置２００の画像取得部２１０は、カメラ５０から撮影画像を取得する（ステップＳ２０１）。
【０１２８】
カメラ姿勢推定装置２００の特徴点抽出部２２０は、撮影画像から特徴点を抽出する（ステップＳ２０２）。カメラ姿勢推定装置２００のカメラ姿勢推定部２３０は、マップ点と特徴点とをマッチングし（ステップＳ２０３）、カメラの位置姿勢を推定する（ステップＳ２０４）。
【０１２９】
カメラ姿勢推定装置２００の品質判定部２４０は、カメラの位置姿勢の推定値の品質を判定する（ステップＳ２０５）。品質判定部２４０は、推定値が高品質である場合には（ステップＳ２０６，Ｙｅｓ）、処理を終了する。例えば、カメラ姿勢推定装置２００は、ステップＳ２０６において、推定値が高品質であると判定した場合には、カメラ姿勢推定部２３０が推定したカメラ５０の位置姿勢を、現在のカメラの位置姿勢として確定する。
【０１３０】
一方、品質判定部２４０が、推定値が高品質でないと判定した場合には（ステップＳ２０６，Ｎｏ）、ステップＳ２０７に移行する。カメラ姿勢推定装置２００のマーカ検出部２１５は、マーカが存在する場合には（ステップＳ２０７，Ｙｅｓ）、ステップＳ２０８に移行し、マーカが存在しない場合には（ステップＳ２０７，Ｎｏ）、ステップＳ２０９に移行する。カメラ姿勢推定装置２００の前処理部２５０は、基準キーフレームを探索する（ステップＳ２０９）。
【０１３１】
ステップＳ２０８において、カメラ姿勢推定装置２００は、マーカの検出結果に基づき、カメラの位置姿勢を推定する（ステップＳ２０８）。
【０１３２】
カメラ姿勢推定装置２００の判定部２６０は、並進成分を含むか否かを判定する（ステップＳ２１０）。判定部２６０が、並進成分を含むと判定した場合には（ステップＳ２１０，Ｙｅｓ）、ステップＳ２１２に移行する。カメラ姿勢推定装置２００の第２復帰処理部２８０は、image-to-map手法により、カメラ５０の位置姿勢を推定する（ステップＳ２１２）。
【０１３３】
一方、判定部２６０は、並進成分を含まないと判定した場合には（ステップＳ２１０，Ｎｏ）、光軸方向回転を含むか否かを判定する（ステップＳ２１１）。判定部２６０が、光軸方向回転を含むと判定した場合には（ステップＳ２１１，Ｙｅｓ）、ステップＳ２１２に移行する。
【０１３４】
判定部２６０が、光軸方向回転を含まないと判定した場合には（ステップＳ２１１，Ｎｏ）、ステップＳ２１３に移行する。カメラ姿勢推定装置２００の第１復帰処理部２７０は、image-to-image手法により、カメラ５０の位置姿勢を推定する（ステップＳ２１３）。
【０１３５】
次に、本実施例２にかかるカメラ姿勢推定装置２００の効果について説明する。カメラ姿勢推定装置２００は、カメラの撮影画像から、マーカを検出した場合に、検出したマーカを用いて、カメラの位置姿勢を推定する。マーカは、他の対象物と比較して誤認識することが少ないため、image-to-image手法やimage-to-map手法と比較して、カメラ５０の位置姿勢の推定精度を向上させることができる。
【０１３６】
次に、その他の実施例について説明する。実施例１、２では品質判定部１４０，２４０により姿勢推定の品質を判断し、復帰処理の実行を判断していた。しかし、推定値が閾値以下でもカメラ姿勢推定自体には成功している場合も存在する。もしそのような場合に復帰処理に入り、誤った復帰結果を適用してしまうと、その状態でロストが発生する場合がある。例えば、特徴点に誤対応が発生していると、復帰処理の推定結果に誤差が生じる。そのため、カメラ姿勢推定装置１００，２００は、復帰処理で特定した位置姿勢の妥当性を更に判定しても良い。
【０１３７】
ここでは、図４に示したカメラ姿勢推定装置１００を用いて、その他の実施例について説明する。品質判定部１４０は、あらかじめ前の時刻の復帰結果のカメラ５０の位置姿勢と、復帰処理を行わなかった場合のカメラ５０の位置姿勢とを保持しておく。そして、品質判定部１４０は、双方を適用してマッチングおよびカメラの位置姿勢の推定を行い、品質判定を行う。品質判定部１４０は、位置姿勢の推定値が高かった方のマッチングおよびカメラ５０の位置姿勢の推定結果を用いて、以後の処理を行う。
【０１３８】
図１０は、その他の実施例にかかるカメラ姿勢推定装置の処理手順を示すフローチャートである。なお、図１０に示す処理を実行する前に、図６で説明した処理が少なくとも１回実行されているものとする。図１０に示すように、カメラ姿勢推定装置１００の画像取得部１１０は、カメラ５０から撮影画像を取得する（ステップＳ３０１）。
【０１３９】
カメラ姿勢推定装置１００の特徴点抽出部１２０は、撮影画像から特徴点を抽出する（ステップＳ３０２）。カメラ姿勢推定装置１００のカメラ姿勢推定部１３０は、復帰処理を行わない前回のカメラの位置姿勢を用いて、マッチングを行い、カメラの位置姿勢を推定し、推定値の品質を判定する（ステップＳ３０３）。
【０１４０】
カメラ姿勢推定装置１００のカメラ姿勢推定部１３０は、復帰処理を行った前回のカメラの位置姿勢を用いて、マッチングを行い、カメラの位置姿勢を推定し、推定値の品質を判定する（ステップＳ３０４）。カメラ姿勢推定装置１００の品質判定部１４０は、品質が高い方の結果を保存する（ステップＳ３０５）。
【０１４１】
品質判定部１４０は、推定値が高品質である場合には（ステップＳ３０６，Ｙｅｓ）、処理を終了する。例えば、カメラ姿勢推定装置１００は、ステップＳ３０６において、推定値が高品質であると判定した場合には、ステップＳ３０５で保存したカメラ５０の位置姿勢を、現在のカメラの位置姿勢として確定する。
【０１４２】
一方、品質判定部１４０が、推定値が高品質でないと判定した場合には（ステップＳ３０６，Ｎｏ）、ステップＳ３０７に移行する。カメラ姿勢推定装置１００の前処理部１５０は、基準キーフレームを探索する（ステップＳ３０７）。
【０１４３】
カメラ姿勢推定装置１００の判定部１６０は、並進成分を含むか否かを判定する（ステップＳ３０８）。判定部１６０が、並進成分を含むと判定した場合には（ステップＳ３０８，Ｙｅｓ）、ステップＳ３０９に移行する。カメラ姿勢推定装置１００の第２復帰処理部１８０は、image-to-map手法により、カメラ５０の位置姿勢を推定する（ステップＳ３０９）。
【０１４４】
一方、判定部１６０は、並進成分を含まないと判定した場合には（ステップＳ３０８，Ｎｏ）、光軸方向回転を含むか否かを判定する（ステップＳ３１０）。判定部１６０が、光軸方向回転を含むと判定した場合には（ステップＳ３１０，Ｙｅｓ）、ステップＳ３０９に移行する。
【０１４５】
判定部１６０が、光軸方向回転を含まないと判定した場合には（ステップＳ３１０，Ｎｏ）、ステップＳ３１１に移行する。カメラ姿勢推定装置１００の第１復帰処理部１７０は、image-to-image手法により、カメラ５０の位置姿勢を推定する（ステップＳ３１１）。
【０１４６】
図１０に示したように、カメラ姿勢推定装置１００は、復帰処理を行った場合のカメラ５０の位置姿勢と、復帰処理を行っていない場合のカメラ５０の位置姿勢とを評価し、評価のよい方を採用して、処理を継続する。このため、復帰処理の推定結果に誤差が生じた場合でも、カメラの位置姿勢の推定精度を向上させることができる。
【０１４７】
次に、実施例１、２で説明したimage-to-map手法のその他の実施例について説明する。例えば、第２復帰処理部１８０が利用するPnPアルゴリズムでは、一般的に、カメラ姿勢の初期推定値をDLT法に基づき大まかに算出し、その後Levenberg-Marquardt法などの反復法により最終的な姿勢値を決定する。
【０１４８】
しかし、実施例１を適用すると、特徴点マッチングの誤対応発生状況によってはDLT法に基づく初期位置推定が理想的な値からかい離した結果となる。図１１は、DLT法に基づく初期位置推定の課題を説明するための図である。図１１左の図は問題発生時の状況であり、３次元マップとキーフレーム、そしてカメラ位置推定結果を表している。本来ではキーフレームに近い位置にカメラ姿勢推定結果が得られるべきところ、マップの裏側に位置推定結果が得られている。
【０１４９】
そのため、第２復帰処理部１８０は、PnPアルゴリズムでのカメラ姿勢の初期値を、基準キーフレームのカメラ姿勢値とする。その改良を加えた結果が図１１右の図である。第２復帰処理部１８０が、かかる初期値を利用することで、キーフレームと近い位置に推定結果を得ることができ、位置姿勢の推定精度を向上させることができる。
【０１５０】
次に、上記実施例に示したカメラ姿勢推定装置１００，２００と同様の機能を実現するカメラ姿勢推定プログラムを実行するコンピュータの一例について説明する。図１２は、カメラ姿勢推定プログラムを実行するコンピュータの一例を示す図である。
【０１５１】
図１２に示すように、コンピュータ３００は、各種演算処理を実行するＣＰＵ３０１と、ユーザからのデータの入力を受け付ける入力装置３０２と、ディスプレイ３０３とを有する。また、コンピュータ３００は、記憶媒体からプログラム等を読み取る読み取り装置３０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置３０５と、カメラ３０６とを有する。また、コンピュータ３００は、各種情報を一時記憶するＲＡＭ３０７と、ハードディスク装置３０８とを有する。そして、各装置３０１〜３０８は、バス３０９に接続される。
【０１５２】
ハードディスク装置３０８は、判定プログラム３０８ａを有する。ＣＰＵ３０１は、判定プログラム３０８ａを読み出してＲＡＭ３０７に展開する。判定プログラム３０８ａは、判定プロセス３０７ａとして機能する。判定プロセス３０７ａの処理は、判定部１６０、２６０の処理に対応する。
【０１５３】
なお、判定プログラム２０８ａについては、必ずしも最初からハードディスク装置３０８に記憶させておかなくても良い。例えば、コンピュータ３００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ３００が判定プログラム３０８ａを読み出して実行するようにしてもよい。
【０１５４】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１５５】
（付記１）カメラによって撮影された画像データを基にして、前記カメラが並進移動したか否かおよび前記カメラが前記カメラの光軸方向の周りを回転したか否かを判定し、前記カメラが並進移動しておらず、かつ、前記カメラが光軸周りを回転していない場合には、撮影時の画像データと、前記カメラの位置姿勢に関連付けられた画像データとを基にして、前記カメラの位置姿勢を推定する第１位置姿勢推定を実行すると判定し、前記カメラが並進移動している場合、または、前記カメラが光軸周りを回転している場合には、撮影時の画像データの特徴点とマップ点との対応関係から前記カメラの位置姿勢を推定する第２位置姿勢推定を実行すると判定する判定部
を有することを特徴とするカメラ姿勢推定装置。
【０１５６】
（付記２）前記第１位置姿勢推定は、image-to-image手法によって前記カメラの位置姿勢を推定し、前記第２位置姿勢推定は、image-to-map手法によって前記カメラの位置姿勢を推定することを特徴とする付記１に記載のカメラ姿勢推定装置。
【０１５７】
（付記３）前記判定部は、前記カメラによって撮影された画像データから所定の形状を有するマーカを検出した場合には、前記マーカを基にして前記カメラの位置姿勢を推定する第３位置姿勢推定を実行すると判定することを特徴とする付記１に記載のカメラ姿勢推定装置。
【０１５８】
（付記４）前記撮影時の画像データの特徴点と前記カメラの位置姿勢に関連付けられたマップ点との対応関係から前記カメラの位置姿勢を推定する推定部と、前記推定部によって推定された前記カメラの位置姿勢の品質を判定する品質判定部とを更に有し、前記判定部は、前記品質が閾値未満である場合に、前記第１位置姿勢推定を実行するのか、前記第２位置姿勢推定を実行するのかを判定することを特徴とする付記１に記載のカメラ姿勢推定装置。
【０１５９】
（付記５）コンピュータが実行するカメラ姿勢推定方法であって、
カメラによって撮影された画像データを基にして、前記カメラが並進移動したか否かおよび前記カメラが前記カメラの光軸方向の周りを回転したか否かを判定し、
前記カメラが並進移動しておらず、かつ、前記カメラが光軸周りを回転していない場合には、撮影時の画像データと、前記カメラの位置姿勢に関連付けられた画像データとを基にして、前記カメラの位置姿勢を推定する第１位置姿勢推定を実行すると判定し、
前記カメラが並進移動している場合、または、前記カメラが光軸周りを回転している場合には、撮影時の画像データの特徴点とマップ点との対応関係から前記カメラの位置姿勢を推定する第２位置姿勢推定を実行すると判定する
処理を実行することを特徴とするカメラ姿勢推定方法。
【０１６０】
（付記６）前記第１位置姿勢推定は、image-to-image手法によって前記カメラの位置姿勢を推定し、前記第２位置姿勢推定は、image-to-map手法によって前記カメラの位置姿勢を推定することを特徴とする付記５に記載のカメラ姿勢推定方法。
【０１６１】
（付記７）前記判定する処理は、前記カメラによって撮影された画像データから所定の形状を有するマーカを検出した場合には、前記マーカを基にして前記カメラの位置姿勢を推定する第３位置姿勢推定を実行すると判定することを特徴とする付記５に記載のカメラ姿勢推定方法。
【０１６２】
（付記８）前記撮影時の画像データの特徴点と前記カメラの位置姿勢に関連付けられたマップ点との対応関係から前記カメラの位置姿勢を推定し、推定した前記カメラの位置姿勢の品質を判定する処理を更に実行し、前記判定する処理は、前記品質が閾値未満である場合に、前記第１位置姿勢推定を実行するのか、前記第２位置姿勢推定を実行するのかを判定することを特徴とする付記５に記載のカメラ姿勢推定方法。
【０１６３】
（付記９）コンピュータに、
カメラによって撮影された画像データを基にして、前記カメラが並進移動したか否かおよび前記カメラが前記カメラの光軸方向の周りを回転したか否かを判定し、
前記カメラが並進移動しておらず、かつ、前記カメラが光軸周りを回転していない場合には、撮影時の画像データと、前記カメラの位置姿勢に関連付けられた画像データとを基にして、前記カメラの位置姿勢を推定する第１位置姿勢推定を実行すると判定し、
前記カメラが並進移動している場合、または、前記カメラが光軸周りを回転している場合には、撮影時の画像データの特徴点とマップ点との対応関係から前記カメラの位置姿勢を推定する第２位置姿勢推定を実行すると判定する
処理を実行させることを特徴とするカメラ姿勢推定プログラム。
【０１６４】
（付記１０）前記第１位置姿勢推定は、image-to-image手法によって前記カメラの位置姿勢を推定し、前記第２位置姿勢推定は、image-to-map手法によって前記カメラの位置姿勢を推定することを特徴とする付記９に記載のカメラ姿勢推定プログラム。
【０１６５】
（付記１１）前記判定する処理は、前記カメラによって撮影された画像データから所定の形状を有するマーカを検出した場合には、前記マーカを基にして前記カメラの位置姿勢を推定する第３位置姿勢推定を実行すると判定することを特徴とする付記９に記載のカメラ姿勢推定プログラム。
【０１６６】
（付記１２）前記撮影時の画像データの特徴点と前記カメラの位置姿勢に関連付けられたマップ点との対応関係から前記カメラの位置姿勢を推定し、推定した前記カメラの位置姿勢の品質を判定する処理を更にコンピュータに実行させ、前記判定する処理は、前記品質が閾値未満である場合に、前記第１位置姿勢推定を実行するのか、前記第２位置姿勢推定を実行するのかを判定することを特徴とする付記９に記載のカメラ姿勢推定プログラム。
【符号の説明】
【０１６７】
５０    カメラ
１００    カメラ姿勢推定装置
１６０，２６０    判定部
【図１】
0006464934.tif 000018
【図２】
0006464934.tif 000019
【図３】
0006464934.tif 000020
【図４】
0006464934.tif 000021
【図５】
0006464934.tif 000022
【図６】
0006464934.tif 000023
【図７】
0006464934.tif 000024
【図８】
0006464934.tif 000025
【図９】
0006464934.tif 000026
【図１０】
0006464934.tif 000027
【図１１】
0006464934.tif 000028
【図１２】
0006464934.tif 000029
【図１３】
0006464934.tif 000030