(57)【特許請求の範囲】
【請求項１】
球体を撮影したカメラ画像と、当該球体の半径情報とを利用して、当該球体に対するカメラ位置を推定するカメラ位置推定部と、
前記カメラ位置推定部によって推定された当該球体に対するカメラ位置と、当該球体の特徴点とその３次元座標とで構成される参照情報とを利用して、当該球体に対するカメラ方向を推定するカメラ方向推定部と
を備え、
前記カメラ位置推定部は、
前記カメラ位置の推定過程において、前記カメラ画像から当該球体の輪郭線を含むエッジを抽出し、前記エッジから３点をサンプリングし、前記３点と、楕円パラメータに関する２つの制約条件とを用いて前記カメラ画像内の楕円パラメータを推定する
ことを特徴とするカメラ姿勢推定装置。
【請求項２】
球体を撮影したカメラ画像と、当該球体の半径情報とを利用して、当該球体に対するカメラ位置を推定するカメラ位置推定部と、
前記カメラ位置推定部によって推定された当該球体に対するカメラ位置と、当該球体の特徴点とその３次元座標とで構成される参照情報とを利用して、当該球体に対するカメラ方向を推定するカメラ方向推定部と
を備え、
前記カメラ方向推定部は、
前記カメラ画像から特徴点を抽出し、前記カメラ画像内の特徴点と前記参照情報内の特徴点とを照合して対応関係にある特徴点の組を取得し、前記カメラ画像内の特徴点のうち前記参照情報内の特徴点と対応関係にある特徴点の２次元座標を逆投影して得られる３次元座標と、前記参照情報内の特徴点の３次元座標のうち前記カメラ画像内の特徴点と対応関係にある特徴点の３次元座標の組を生成し、前記カメラ方向を推定する
ことを特徴とするカメラ姿勢推定装置。
【請求項３】
前記カメラ方向推定部は、
前記カメラ方向の推定過程において、球体の方程式を利用した逆投影処理によって、前記カメラ画像内の当該球体の特徴点の２次元座標に対応する当該球体の３次元座標を取得する
ことを特徴とする請求項２に記載のカメラ姿勢推定装置。
【請求項４】
前記カメラ方向推定部は、
２組の３次元座標の組をサンプリングして照合し、球体に対するカメラ方向を推定する
ことを特徴とする請求項２又は請求項３に記載のカメラ姿勢推定装置。
【請求項５】
前記カメラ位置推定部は、
反復アルゴリズムを使用してエッジの３次元座標の再投影誤差関数が最小になるカメラ位置を算出し、
前記カメラ方向推定部は、
反復アルゴリズムを使用して特徴点の３次元座標の再投影誤差関数が最小になるカメラ方向を算出する
ことを特徴とする請求項１乃至請求項４の何れか１項に記載のカメラ姿勢推定装置。
【請求項６】
前記カメラ位置推定部は、
球体部分を含む立体対象物の当該球体部分に対するカメラ位置を推定し、
前記カメラ方向推定部は、
前記カメラ位置推定部によって推定された当該球体部分に対するカメラ位置と、当該球体部分の特徴点とその３次元座標とで構成される参照情報とを利用して、当該球体部分に対するカメラ方向を推定する
ことを特徴とする請求項１乃至請求項５の何れか１項に記載のカメラ姿勢推定装置。
【請求項７】
カメラ姿勢を推定するカメラ姿勢推定装置のコンピュータに、
球体を撮影したカメラ画像と、当該球体の半径情報とを利用して、当該球体に対するカメラ位置を推定するカメラ位置推定ステップと、
前記カメラ位置推定ステップによって推定された当該球体に対するカメラ位置と、当該球体の特徴点とその３次元座標とで構成される参照情報とを利用して、当該球体に対するカメラ方向を推定するカメラ方向推定ステップとを実行させ、
前記カメラ位置推定ステップは、
前記カメラ画像から当該球体の輪郭線を含むエッジを抽出し、前記エッジから３点をサンプリングし、前記３点と、楕円パラメータに関する２つの制約条件とを用いて前記カメラ画像内の楕円パラメータを推定するステップを含む
ことを特徴とするプログラム。
【請求項８】
カメラ姿勢を推定するカメラ姿勢推定装置のコンピュータに、
球体を撮影したカメラ画像と、当該球体の半径情報とを利用して、当該球体に対するカメラ位置を推定するカメラ位置推定ステップと、
前記カメラ位置推定ステップによって推定された当該球体に対するカメラ位置と、当該球体の特徴点とその３次元座標とで構成される参照情報とを利用して、当該球体に対するカメラ方向を推定するカメラ方向推定ステップとを実行させ、
前記カメラ方向推定ステップは、
前記カメラ画像から特徴点を抽出し、前記カメラ画像内の特徴点と前記参照情報内の特徴点とを照合して対応関係にある特徴点の組を取得し、前記カメラ画像内の特徴点のうち前記参照情報内の特徴点と対応関係にある特徴点の２次元座標を逆投影して得られる３次元座標と、前記参照情報内の特徴点の３次元座標のうち前記カメラ画像内の特徴点と対応関係にある特徴点の３次元座標の組を生成し、前記カメラ方向を推定する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、カメラ姿勢推定装置、プログラムに関する。
【背景技術】
【０００２】
近年、現実空間の映像をコンピュータで処理して更なる情報を付加するＡＲ（拡張現実感）技術が、種々の電子機器（例えば、ＷＥＢカメラが接続されたＰＣ、カメラ付き携帯電話端末）上において、実現されるようになっている。
ＡＲ技術においては、カメラ画像内の立体対象物に対するカメラ姿勢（カメラの外部パラメータであるカメラ位置及びカメラ方向（回転））を推定する必要がある。カメラ姿勢の推定に、球体を立体対象物として用いる技術が開示されている（例えば、特許文献１、２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１０−５１９６２９号公報
【特許文献２】特開２０１１−１１８７２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一般に、カメラ姿勢の推定技術において、推定精度の向上、及び、推定時の計算コストの低減は、課題になっている。特に、ＡＲ技術に用いる場合には、所望の位置に迅速に仮想的な映像を表示させるために、推定精度の向上、及び、推定時の計算コストの低減は、非常に重要である。この点、特許文献１、２の技術は、立体対象物である球体の位置（カメラ位置に相当）と球体の方向（カメラ方向に相当）とを、独立に計算する手法を用いる技術であるため、例えば、球体の位置と球体の方向とを同時に計算する手法に比べ、推定時の計算コストは低減する。
しかしながら、特許文献１、２の技術は、光源や特別な模様の球体を用いた技術であるため、光源や特別な模様を用いない一般的な球体を対象立体物とした場合には、推定精度に問題が生じる。即ち、特許文献１、２の技術は、ＡＲ技術に適用する場合、推定精度において、また、一般的な球体を前提としていないため適用範囲において、問題がある。
【０００５】
本発明は、上述の課題を鑑みてなされたものであり、カメラ姿勢の推定精度を向上させるとともに、推定時の計算コストを低減させる技術を提供する。具体的には、一般的な球体を利用したＡＲ技術に適用し得るカメラ姿勢の推定技術を提供する。
【課題を解決するための手段】
【０００６】
上記問題を解決するために、球体を撮影したカメラ画像と、当該球体の半径情報とを利用して、当該球体に対するカメラ位置を推定するカメラ位置推定部と、前記カメラ位置推定部によって推定された当該球体に対するカメラ位置と、当該球体の特徴点とその３次元座標とで構成される参照情報とを利用して、当該球体に対するカメラ方向を推定するカメラ方向推定部とを備えることを特徴とする。
【０００７】
上記カメラ姿勢推定装置において、前記カメラ位置推定部は、撮影された球体の前記カメラ画像内の輪郭形状に基づいて前記カメラ位置を推定するようにしてもよい。
【０００８】
上記カメラ姿勢推定装置において、前記カメラ位置推定部は、前記カメラ位置の推定過程において、前記カメラ画像内の楕円パラメータを推定するようにしてもよい。
【０００９】
上記カメラ姿勢推定装置において、前記カメラ位置推定部は、楕円パラメータに関する２つの制約条件を用いて楕円パラメータを推定するようにしてもよい。
【００１０】
上記カメラ姿勢推定装置において、前記カメラ位置推定部は、前記カメラ画像から当該球体の輪郭線を含むエッジを抽出し、前記エッジから３点をサンプリングし、前記３点と前記２つの制約条件とを用いて前記楕円パラメータをロバスト推定するようにしてもよい。
【００１１】
上記カメラ姿勢推定装置において、前記カメラ方向推定部は、前記カメラ画像から特徴点を抽出し、前記カメラ画像内の特徴点と前記参照情報内の特徴点とを照合して対応関係にある特徴点の組を取得し、前記カメラ画像内の特徴点のうち前記参照情報内の特徴点と対応関係にある特徴点の２次元座標を逆投影して得られる３次元座標と、前記参照情報内の特徴点の３次元座標のうち前記カメラ画像内の特徴点と対応関係にある特徴点の３次元座標の組を生成し、前記カメラ方向を推定するようにしてもよい。
【００１２】
上記カメラ姿勢推定装置において、前記カメラ方向推定部は、前記カメラ方向の推定過程において、球体の方程式を利用した逆投影処理によって、前記カメラ画像内の当該球体の特徴点の２次元座標に対応する当該球体の３次元座標を取得するようにしてもよい。
【００１３】
上記カメラ姿勢推定装置において、前記カメラ方向推定部は、２組の３次元座標の組をサンプリングして照合し、球体に対するカメラ方向をロバスト推定するようにしてもよい。
【００１４】
上記カメラ姿勢推定装置において、前記カメラ位置推定部は、反復アルゴリズムを使用してエッジの３次元座標の再投影誤差関数が最小になるカメラ位置を算出し、前記カメラ方向推定部は、反復アルゴリズムを使用して特徴点の３次元座標の再投影誤差関数が最小になるカメラ方向を算出するようにしてもよい。
【００１５】
上記カメラ姿勢推定装置において、前記カメラ位置推定部は、球体部分を含む立体対象物の当該球体部分に対するカメラ位置を推定し、前記カメラ方向推定部は、前記カメラ位置推定部によって推定された当該球体部分に対するカメラ位置と、当該球体の特徴点とその３次元座標とで構成される参照情報とを利用して、当該球体部分に対するカメラ方向を推定するようにしてもよい。
【００１６】
上記問題を解決するために、本発明の他の態様であるプログラムは、カメラ姿勢を推定するカメラ姿勢推定装置のコンピュータに、球体を撮影したカメラ画像と、当該球体の半径情報とを利用して、当該球体に対するカメラ位置を推定するカメラ位置推定ステップと、前記カメラ位置推定ステップによって推定された当該球体に対するカメラ位置と、当該球体の特徴点とその３次元座標とで構成される参照情報とを利用して、当該球体に対するカメラ方向を推定するカメラ方向推定ステップとを実行させることを特徴とする。
【発明の効果】
【００１７】
本発明によれば、カメラ姿勢の推定精度を向上させるとともに、推定時の計算コストを低減させることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態であるカメラ姿勢推定装置２０を含むＡＲシステム１の概念図である。
【図２】カメラ姿勢推定装置２０の機能ブロック図の一例である。
【図３】ピンホールカメラモデルによる球の投影の幾何を表した模式図である。
【図４】ピンホールカメラモデルによる球の投影の幾何を表した模式図である。
【図５】ピンホールカメラモデルによる球状立体物の射影の幾何を表した模式図である。
【図６】カメラ方向推定部３００の処理を説明するための模式図である
【発明を実施するための形態】
【００１９】
以下、本発明の実施形態について図面を参照して詳細に説明する。図１は、本発明の実施形態であるカメラ姿勢推定装置２０を含むＡＲシステム１の概念図である。ＡＲシステム１は、図１に示すように、撮像装置１０、カメラ姿勢推定装置２０、表示装置３０、付加情報データベース９０から構成される。
【００２０】
撮像装置１０は、撮像画像（カメラ画像、又は、２次元画像とも称する）を取得する装置である。撮像装置１０の一例は、図１に示すように、ＷＥＢカメラである。但し、撮像装置１０は、ＷＥＢカメラの如く独立した装置でなく、例えば、カメラ付き携帯電話端末に搭載されているカメラモジュールのように、他の装置と一体化、若しくは、他の装置の一部を構成するものであってもよい。撮像装置１０、立体対象物を撮像したカメラ画像（立体対象物が写っているカメラ画像）を連続的に取得する。撮像装置１０は、カメラ姿勢推定装置２０及び表示装置３０にカメラ画像を出力する。
【００２１】
ＡＲシステム１において使用する立体対象物は、球体形状を有する立体対象物（一部又は全部が球体である立体対象物。例えば様々な種類のボールや地球儀）である。図１に示す例では、球状の地球儀を用いているが、その他の球体形状を有する立体物を用いても、同様のＡＲシステムが構築可能である。
【００２２】
カメラ姿勢推定装置２０は、撮像装置１０から出力されたカメラ画像を取得する。カメラ画像を取得したカメラ姿勢推定装置２０は、立体対象物に対するカメラの相対的な姿勢、即ち、カメラ姿勢を推定する（詳細は後述）。一般に、カメラ姿勢は、カメラの外部パラメータと呼ばれ、行列の形で表される。外部パラメータ（カメラ姿勢）には、３次元空間内のカメラの位置（カメラ位置）、カメラの方向（カメラ方向）の情報が含まれる。画面内の物体の見え方は、カメラの外部パラメータと、カメラの内部パラメータと、その他光学的歪みのパラメータとによって決定される。カメラの内部パラメータには、カメラ固有の焦点距離、主軸の位置の情報が含まれる。本実施形態では内部パラメータや歪みパラメータは予めカメラキャリブレーション等によって取得され、歪みは取り除かれていることとする。
【００２３】
カメラ姿勢（外部パラメータ）を推定したカメラ姿勢推定装置２０は、表示装置３０にカメラ姿勢を出力する。なお、ＡＲシステム１において、複数の立体対象物を用いる場合には、カメラ姿勢推定装置２０は、カメラ姿勢とともに、カメラ姿勢の推定する際に利用した立体対象物を識別する情報を表示装置３０に出力する。
【００２４】
付加情報データベース９０は、表示装置３０に出力する立体対象物に関する付加情報を記憶する記憶装置である。ＰＣのＨＤＤ、携帯端末のメモリモジュールなどが付加情報データベース９０に該当する。
付加情報の一例は、表示装置３０の表示画面上において立体対象物に重畳して表示させるＣＧ、他の画像、文字情報である。カメラ姿勢推定装置２０によってカメラ姿勢が推定された場合、付加情報データベース９０から当該カメラ姿勢に応じた付加情報が読み出され、表示装置３０に出力され、表示装置３０の表示画面上において、立体対象物に重畳して表示される。
【００２５】
付加情報は、表示部３０からの要求に応じて表示装置３０に出力されてもよいし、カメラ姿勢推定装置２０からの制御（出力指示）に応じて表示装置３０に出力されてもよい。
【００２６】
重畳表示の応用例は、立体対象物の種類に応じて異なるが、図１に示すように、立体対象物として地球儀を用いる場合には、カメラ画像内の地球儀に対し、気象情報（例えば、天気図、温度分布）の重畳表示、地理的情報（例えば、高度を視覚できる表示態様による地表の情報、各種資源の埋蔵位置／埋蔵量に関する情報、過去の大陸形状／予想される未来の大陸形状）の重畳表示、社会的情報（例えば、現在の国名、国境、及び、国境、国名の更新情報、何らかの勢力分布／構成割合を示す情報）の重畳表示といった応用例が想定される。更に、ジェスチャー認識技術を更に用いて、指差した位置（指示位置）に応じた情報（例えば、指示位置を領土／領海とする国名、国旗、国境線）を重畳表示するといった応用例も考えられる。
【００２７】
表示装置３０は、撮像装置１０が連続的に取得したカメラ画像をユーザに掲示する装置である。表示装置３０の一例は、図１に示すようなモニタである。但し、表示装置３０は、図１に示したモニタの如く独立した装置でなく、例えば、カメラ付き携帯電話端末における表示部（表示制御部及びディスプレイ）のように、他の装置と一体化、若しくは、他の装置の一部を構成するものであってもよい。また、表示装置３０は、ヘッドマウントディスプレイ（ＨＭＤ）のような形態であってもよい。
【００２８】
表示装置３０としてモニタ（ディスプレイ）を用いる場合には、カメラ画像に、付加情報データベース９０から入力された付加情報を、カメラ姿勢推定装置２０から入力されたカメラ姿勢によって補正された位置に重畳表示する。また、表示部がシースルー形の表示装置３０（例えば、シースルー型のＨＭＤ）を用いる場合には、カメラ画像を表示せず、視界に付加情報のみを表示してもよい。
【００２９】
なお、カメラ付き携帯電話端末に搭載されているカメラモジュール及び表示部が、ＡＲシステム１の撮像装置１０及び表示装置３０と成り得る旨を説明したが、例えば、携帯端末（ノートＰＣ、携帯電話端末、携帯型ゲーム機）上で、ＡＲシステム１全体を構成してもよい。
【００３０】
（カメラ姿勢推定装置２０の構成）
図２は、カメラ姿勢推定装置２０の機能ブロック図の一例である。カメラ姿勢推定装置２０は、図２に示すように、カメラ位置推定部２００、及び、カメラ方向推定部３００を備える。カメラ姿勢推定装置２０は、対象物である球体が写っている（可能性がある）カメラ画像と、当該球体の半径の情報（半径情報ｒ）と、当該球体の参照情報の３点を用いてカメラ姿勢を推定する。
【００３１】
参照情報とは、対象物（具体的には、球体）の特徴点（画像内の２次元座標とその周囲の局所的な画素情報を表す特徴量とを含む）とその３次元座標（特徴点の２次元座標を３次元座標で表したもの）であって、予め取得し、参照情報データベース（非図示）に登録しておいたものである。なお、カメラ姿勢推定装置２０（例えば、カメラ方向推定部３００）が、参照情報データベースを有していてもよいし、カメラ姿勢推定装置２０が参照可能な外部の装置が参照情報データベースを有していてもよい。
【００３２】
カメラ姿勢推定装置２０は、カメラ画像をカメラ位置推定部２００とカメラ方向推定部３００の両方に入力する。また、カメラ姿勢推定装置２０は、当該球体の半径情報ｒをカメラ位置推定部２００に入力する。また、カメラ姿勢推定装置２０は、当該球体の参照情報をカメラ方向推定部３００に入力する。カメラ姿勢推定装置２０は最終的にカメラ位置推定部２００が推定したカメラ位置と、カメラ方向推定部３００が推定したカメラ方向を合わせて、カメラ姿勢として出力する。
【００３３】
（カメラ位置推定部２００）
カメラ位置推定部２００は、撮像装置１０から入力されたカメラ画像と球状対象物に対するカメラ位置（撮像装置１０の位置）を当該球状対象物のカメラ画像内の輪郭形状を利用して推定する。
【００３４】
まず、カメラ位置推定部２００は、入力されたカメラ画像から例えば、エッジ検出器（例えばCannyエッジ検出器）を用いてカメラ画像内のエッジ情報を取得する。カメラ位置推定部２００は、立体対象物が単色である場合等や背景との輝度差が大きい場合には、輝度情報や色差情報を用いて適当な閾値で二値化処理を行い、その輪郭をエッジ情報としてもよい。次いで、カメラ位置推定部２００は、エッジ情報を元にカメラ位置のパラメータを推定する。カメラ位置推定部２００は、一般にカメラ位置のパラメータ（球に対するカメラの３次元座標値）を用いることで球の投影後の輪郭が特定できることを利用して、エッジ情報内の球の輪郭部分と、投影後の球の輪郭が一致するようなカメラ位置のパラメータを推定する。
【００３５】
なお、カメラ位置推定部２００が推定するカメラ位置は、最終的にカメラ姿勢推定装置２０が表示装置１０に出力するカメラ姿勢（外部パラメータ）の一部を構成する。また、カメラ位置推定部２００が推定したカメラ位置は、同じくカメラ姿勢推定装置２０の一部を構成するカメラ方向推定部３００のカメラ方向推定処理に利用される。
【００３６】
（カメラ位置推定部２００／楕円検出）
カメラ位置推定部２００は、カメラ位置のパラメータを推定する際に、カメラ画像内の楕円パラメータを推定し、楕円パラメータからカメラ位置パラメータを算出してもよい。この場合カメラ位置推定部２００は、エッジ情報を元にカメラ画像内の球の輪郭である楕円パラメータを推定する（詳細は後述）。次いで、カメラ位置推定部２００は、推定した楕円パラメータと、球とピンホールカメラモデルの幾何情報とを利用して、カメラ位置として、球に対するカメラの３次元座標値を算出する（詳細は後述）。
【００３７】
（カメラ位置推定部２００／楕円検出／楕円パラメータの推定）
図３、４は、ピンホールカメラモデルによる球の投影の幾何を表した模式図である。
図３に示すように、球の中心Ｏがカメラの光軸上に存在する場合、球の輪郭はカメラ画像内で正確な円となるが、カメラの光軸からずれた場合には、球の輪郭はカメラ画像内では楕円となる。以下、図４に示すように、楕円のパラメータの５つの要素である、長軸の長さ（長径）をａ、短軸の長さ（短径）をｂ、長軸と短軸の交点の座標を（ｘ０、ｙ０）、カメラ画像のｘ軸とカメラ画像の中心及び（ｘ０、ｙ０）を通る直線とがなす角度をθとする。
【００３８】
球を撮像したカメラ画像の場合、楕円のパラメータには、下記式（１）（２）の制約条件が存在する。
【００３９】
【数１】
0005801209.tif 000002
【００４０】
一般にエッジ情報には球体の輪郭以外のエッジも多く含まれているため、輪郭以外のエッジ（アウトライア）を除外するRANSACやLMedSに代表されるロバスト推定手法を用いるとよい。
【００４１】
カメラ位置推定部２００は、カメラ画像内のエッジ（カメラ画像内のエッジ情報を構成する個々の画素）から３点をサンプリングし、サンプリングした３点と、上述の制約条件とを用いて楕円パラメータをロバスト推定する。即ち、楕円検出は、一般に、エッジ情報から５点をサンプルして楕円パラメータを推定するが、カメラ位置推定部２００は、上記式（１）（２）を用いることで３点をサンプルして楕円パラメータを推定することができる。上記式（１）（２）の制約条件を用いることによって、サンプル点に輪郭以外のエッジが含まれる確率が大幅に低下するため、カメラ位置推定部２００の計算負荷は、大幅に削減する。
【００４２】
また、カメラ位置推定部２００は、カメラ画像内のエッジから５点をサンプリングし、サンプリングした５点を用いて楕円パラメータをロバスト推定し、ロバスト推定によって得られる複数の楕円パラメータの候補の中から制約条件に最も合致する一の楕円パラメータを選択するようにしてもよい。即ち、カメラ位置推定部２００は、エッジ情報から５点をサンプルして楕円パラメータをロバスト推定することを繰り返し、楕円パラメータの候補を複数取得し、複数の候補の中から上記式（１）（２）の制約条件を最も満たしている楕円パラメータを採用するようにしてもよい。例えば、カメラ位置推定部２００は、下記式（３）のコストが最小となる楕円パラメータを採用する。なお、下記式（３）のｅは、上記式（２）に示した値である。
【００４３】
【数２】
0005801209.tif 000003
【００４４】
カメラ位置推定部２００は、上述の如く、３点又は５点のサンプリングによって下記（４）に示す楕円パラメータＰｅを推定する。
【００４５】
【数３】
0005801209.tif 000004
【００４６】
また、カメラ位置推定部２００は、ロバスト推定によって特定された球の輪郭（楕円）であるエッジのみを用いて、最小二乗アルゴリズムによって楕円パラメータＰｅの精度を向上させてもよい。
【００４７】
（カメラ位置推定部２００／円検出）
また、カメラ位置推定部２００は、カメラ画像中の球の輪郭である楕円の形状が多くの場合円に近いため、Hough円変換に代表される円検出アルゴリズムを用いて楕円パラメータＰｅを推定してもよい（この場合の楕円パラメータＰｅの要素は、ａ＝ｂ、θは不定である）。円の方が楕円よりパラメータＰｅが少ない（５→３）ため、高速に楕円パラメータＰｅを推定することが可能である。
【００４８】
（カメラ位置推定部２００／カメラ位置算出）
カメラ位置推定部２００は、楕円パラメータＰｅを元にカメラ位置を算出する。カメラ位置ｔ＝［ｔ１，ｔ２，ｔ３］は、球の中心Ｏを原点とした際のカメラの焦点Ｃの３次元座標である。カメラ位置推定部２００は、球体とピンホールカメラモデルの幾何を利用して、楕円パラメータから焦点Ｃの３次元座標を算出する。
【００４９】
本実施形態における、焦点Ｃの３次元座標の算出手法を詳細に記述する。カメラ位置推定部２００は、球の中心座標Ｏと焦点Ｃとの距離ｄを下記式（５）から算出する。また、カメラ位置推定部２００は、カメラ画像内の球の中心座標（ｘ１，ｙ１）を下記式（６）と角度θから算出する。
【００５０】
【数４】
0005801209.tif 000005
【００５１】
そして、カメラ位置推定部２００は、上記式（５）によって得られた距離ｄと、上記式（６）によって得られたカメラ画像内の球の中心座標（ｘ１、ｙ１）と、下記式（７）とから、焦点Ｃを算出する。
【００５２】
【数５】
0005801209.tif 000006
【００５３】
カメラ位置推定部２００は、上述の如く算出した、球体に対するカメラ位置（即ち、焦点Ｃ）を最終的なカメラ位置パラメータとする。なお、カメラ位置の算出手法は、上述の算出方法に限定されない。カメラ位置推定部２００は、球体とピンホールカメラモデルの幾何を利用した他の算出手法を用いて、カメラ位置を算出してもよい。カメラ位置推定部２００が他の算出手法を用いてカメラ位置を算出する場合であっても、楕円パラメータが、上記式（１）（２）の２つの制約条件を満たしていれば、カメラの焦点Ｃの３次元座標は一意に求まるため、何れの算出手法であっても本質的な差異はない。
【００５４】
（カメラ位置推定部／最適化）
カメラ位置推定部２００は、予めカメラ位置パラメータの大まかな値（初期値）が与えられた場合に、エッジ情報内の球の輪郭部分と、投影後の球の輪郭が一致するようにカメラ位置パラメータを調整することでカメラ位置パラメータの精度を改善してもよい。この場合、まずカメラ位置推定部２００は、球体に対するカメラの焦点Ｃ（即ち、カメラ位置）と球体の半径から輪郭となる球体の表面上の点列（球体の輪郭点列。下記（８）として示される）を特定する（輪郭自体は楕円であるため、一定間隔でサンプリングすれば点列を特定できる）。次にカメラ位置推定部２００は、点列をカメラ画像上に投影し、最近傍のエッジ情報内の点（下記（９）として示される）と対応を取り、二乗誤差和を計算する。
【００５５】
【数６】
0005801209.tif 000007
【００５６】
最後に、カメラ位置推定部２００は、二乗誤差和が最小になるようにカメラ位置パラメータを調整する。具体的には、カメラ位置推定部２００は、下記式（１０）の再投影誤差関数を最小とするようなカメラ位置パラメータをニュートン法等の反復アルゴリズムを用いて計算する。
【００５７】
【数７】
0005801209.tif 000008
【００５８】
なお、カメラ位置パラメータが変わると球体の輪郭点列も変わるため、上記最適化アルゴリズムは反復的に行う必要がある。これによって与えられた初期値の精度が悪い場合でも、最適なカメラ位置パラメータを取得することが可能になるため、例えばカメラ方向推定部３００が初期値を前記円検出で推定し、最適化を実行することによって、楕円検出を行わずに高精度なカメラ位置パラメータを推定することが可能になる。
【００５９】
（カメラ方向推定部３００）
カメラ方向推定部３００は、入力されたカメラ画像と参照情報、カメラ位置推定部２００が推定するカメラ位置パラメータを用いてカメラ方向パラメータを推定する。
【００６０】
カメラ方向推定部３００は、まず、入力されたカメラ画像から特徴点（より詳細には、特徴点の２次元座標とそれに対応する特徴量の情報）を抽出する。例えば、Harrisコーナー検出器又はHessianキーポイント検出器等の特徴点検出器を用いて特徴点の２次元座標を取得する。特徴点検出器は、２次元座標を特定できるものであればあらゆる種類のものが使用可能である。また、エッジ情報を取得してそのエッジ情報をサンプリングし、特徴点の２次元座標として取り扱ってもよい。また、カメラ方向推定部３００は、各特徴点固有の特徴量として、例えば、ＳＩＦＴ特徴量、ＳＵＲＦ特徴量、ＢＲＩＥＦ特徴量等の局所特徴量を用いる。
【００６１】
カメラ方向推定部３００は、次に、カメラ画像から抽出された特徴点を、入力された参照情報内の特徴点と比較して、一致する特徴点の組み合わせを取得する。つまり、カメラ方向推定部３００は、対象物の参照情報をカメラ画像から取得した特徴点と照合し、一致する特徴点の組み合わせを取得する（詳細は後述）。
【００６２】
次いで、カメラ方向推定部３００は、一致した組み合せの特徴点の２次元座標を、球とピンホールカメラモデルの幾何情報を利用して３次元座標に変換し、３次元座標の組み合わせから球の回転、即ち、カメラ方向を推定する。つまり、カメラ方向推定部３００は、球体に対するカメラ方向の推定過程において、球体の方程式を利用した逆投影処理によって、カメラ画像内の当該球体の特徴点の２次元座標に対応する球体の３次元座標を取得する（詳細は後述）。
【００６３】
なお、カメラ方向推定部３００が推定するカメラ方向は、カメラ位置推定部２００が推定したカメラ位置とともに、最終的にカメラ姿勢推定装置２０が表示装置１０に出力するカメラ姿勢（外部パラメータ）を構成する。最終的にカメラ姿勢推定装置２０は、カメラ位置推定部２００が推定した球体に対するカメラ位置とカメラ方向推定部３００が推定した球体に対するカメラ方向とを、球体に対するカメラ姿勢として表示装置１０に出力する。
【００６４】
（カメラ方向推定部３００／逆投影）
カメラ方向推定部３００は、カメラ画像から抽出した特徴点の２次元座標を、球とピンホールカメラモデルの幾何情報と、カメラ位置を利用して、球体の３次元座標に変換する逆投影処理を行う。
【００６５】
一般に、逆投影処理は３次元ポリゴンモデルを利用して行われるが、本実施形態では立体対象物である球の方程式を利用した逆投影処理を行う。なお、以下、立体対象物の方程式を「数式モデル」とも称する。図５は、ピンホールカメラモデルによる球状立体物の射影の幾何を表した模式図である。
【００６６】
中心Ｏを原点とすると、球の方程式（球の数式モデル）は、下記式（１１）によって表され、焦点を通る直線の方程式は、例えば、下記式（１２）によって表される。但し、下記式（１１）において、ｐは球上の点、ｒは球の半径である。また、下記式（１２）において、ｑは直線上の点、Ｃは焦点（カメラ位置）、ｖは直線の方向ベクトルである。
【００６７】
【数８】
0005801209.tif 000009
【００６８】
カメラ画像内の球の特徴点（２次元座標）に対応する球体の３次元座標は、上記式（１１）の方程式によって示される球と、上記式（１２）の方程式によって示される直線の交点であるため、カメラ方向推定部３００は、上記式（１１）（１２）から、直線の方向ベクトルｖを求め、ｐ＝ｑとして、上記交点の座標を計算することで、カメラ画像内の特徴点に対応する３次元座標を取得する。即ち、カメラ方向推定部３００は、特徴点の２次元座標を、球とピンホールカメラモデルの幾何情報である上記式（１１）（１２）を利用して、球体の３次元座標に変換する。
【００６９】
なお、上記式（１１）の半径ｒは、予め実測するなどして取得しておいてもよい。また、上記式（１２）の焦点Ｃ（カメラ位置）は、例えば、カメラ位置推定部２００を使用して推定してもよいし、手作業で位置合わせを行うことでも取得しておいてもよい。カメラ方向推定部３００がカメラ位置推定部２００の推定したカメラ位置パラメータを使用してカメラ画像から抽出した特徴点を逆投影する場合、焦点Ｃはカメラ位置パラメータを使用することになる。
【００７０】
カメラ方向推定部３００は、上記式（１１）（１２）から複数の交点が得られた場合には、複数の交点の中から、最も焦点に近い一の３次元座標を選択する。これにより、カメラ画像内の特徴点と３次元座標とを正しく対応付けることができる。
【００７１】
また、カメラ方向推定部３００は、上記式（１１）（１２）から交点を得られなかった場合には、特徴点が３次元立体物にないことを意味するため、参照情報を参照情報データベースから削除してもよい。
【００７２】
また、カメラ方向推定部３００は、交点の座標計算の式が２次方程式であるため、判別式を用いて特徴点が３次元立体物上の点であるかどうかの判定を行ってもよい。
【００７３】
以上が数式モデルを利用した逆投影処理であり、カメラ方向推定部３００は、これによって特徴点の２次元座標を球体の３次元座標に変換する。
【００７４】
カメラ方向推定部３００は、カメラ画像から抽出した特徴点と、入力された特徴点（参照情報）とを比較し、照合処理を行う。照合処理は、特徴量の記述方法によって異なるが、本実施形態ではSIFTやSURF特徴量を用いるため、カメラ方向推定部３００は、特徴ベクトルの距離が最も近い組み合わせを取得する。ここで、特徴ベクトルの距離に一定の閾値を設けることや、２番目に近い特徴ベクトルとの距離を考慮に入れるなどすることで照合精度を高めることが望ましい。特徴量が量子化、あるいはBRIEF特徴量などを用いるなどしてバイナリコードである場合は特徴ベクトルの距離（Ｌ２ノルム）ではなくハミング距離で比較するため、処理負荷を軽減することが可能である。
【００７５】
カメラ方向推定部３００は、特徴点のマッチを取得した後、カメラ画像の特徴点については対応する２次元座標を取得し、入力された特徴点（参照情報）については対応する３次元座標（参照情報）を取得する。つまり、カメラ方向推定部３００は、カメラ画像内の特徴点のうち参照情報内の特徴点と対応関係にある特徴点の２次元座標と、参照情報内の特徴点の３次元座標のうちカメラ画像内の特徴点と対応関係にある特徴点の３次元座標を取得する。
【００７６】
一般に２次元座標と３次元座標のマッチから、その関係を説明するカメラ姿勢（カメラの外部パラメータ）を推定する手法が検討されている。３次元座標と２次元座標の関係は一般的に、下記式（１３）によって表される。但し、下記式（１３）において、［ｕ，ｖ］Tは２次元ピクセル座標値である。［Ｘ，Ｙ，Ｚ］Tは、３次元座標値である。［・］Tは［・］の転置行列である。Ａは、カメラの内部パラメータである。内部パラメータＡは、予めカメラキャリブレーションによって求めておく。Ｗは、カメラの外部パラメータ（カメラ姿勢）である。
【００７７】
【数９】
0005801209.tif 000010
【００７８】
なお、カメラ姿勢Ｗは、下記式（１４）の回転行列Ｒと、下記式（１５）の並進ベクトルｔによって表される。即ち、カメラ姿勢Ｗは、下記式（１６）のように表される。
【００７９】
【数１０】
0005801209.tif 000011
【００８０】
上記により、３次元座標［Ｘ，Ｙ，Ｚ，１］Tと２次元座標［ｕ，ｖ，１］Tとのマッチと、内部パラメータＡを用いて、カメラ姿勢Ｗを推定することができる。
【００８１】
しかしながら、上記方式の場合、カメラ位置パラメータとカメラ方向パラメータの両方を同時に求めるために負荷が高い他、目標物が球体の場合に位置の誤差が生じやすく、特にモデルを重畳した際に輪郭がずれやすい。これは球体の輪郭付近の表面はカメラの光軸に対して勾配が大きいため、カメラ画像の投影像の歪みが大きく特徴点の対応が取りづらいことに起因する。また、最低でも４組の対応点を取得する必要がある。
ここで本発明におけるカメラ方向推定部３００は、カメラ位置推定部２００が推定したカメラ位置の情報を利用して、カメラ画像内の２次元座標も３次元座標に逆投影を行う。つまり、２次元座標−３次元座標間のマッチを３次元座標−３次元座標間のマッチとしている。換言すれば、カメラ方向推定部３００は、カメラ画像内の特徴点のうち参照情報内の特徴点と対応関係にある特徴点の２次元座標を逆投影して得られる３次元座標と、参照情報内の特徴点の３次元座標のうちカメラ画像内の特徴点と対応関係にある特徴点の３次元座標の組を生成し、カメラ方向を推定するようにしている。
３次元座標−３次元座標間のマッチとしたため、下記アルゴリズムによって２組の３次元座標の対応から球体の幾何情報を利用して球体の回転行列を高速に算出することができる。
【００８２】
（カメラ方向推定部３００／カメラ方向算出アルゴリズム）
カメラ方向推定部３００は、取得した３次元座標のマッチを元に球体の回転行列、つまりカメラ方向を算出する。
【００８３】
３次元座標のマッチには一般に誤りが含まれているため、RANSACやLMedSに代表されるロバスト推定法を用いて、誤ったマッチを除外する。
具体的には、カメラ方向算出部３２０は、２組の３次元座標の対応から球体の幾何情報を利用して球体の回転行列を算出することを繰り返し、より多くの対応点の関係性に一致する正確な回転行列を探索する。本実施形態における球体の回転行列の算出手法を詳細に記述する。
【００８４】
図６は、カメラ方向推定部３００の処理を説明するための模式図である。図６に示すように、２組の対応する３次元座標の組を夫々［ｐ１，ｐ１’］、［ｐ２，ｐ２’］とし、各組の３次元座標を結ぶベクトルをｎ１，ｎ２とする。回転軸Ｌは、ｎ１とｎ２の外積とで表される。回転角θ１は、ｐ１からＬへの法線ベクトルｈ１、ｐ１’からＬへの法線ベクトルｈ１’のなす角で表され、ｈ１とｈ１’の内積で計算できる。回転角θ２は、ｐ２からＬへの法線ベクトルｈ２、ｐ２’からＬへの法線ベクトルｈ２’のなす角で表され、ｈ２とｈ２’の内積で計算できる。
【００８５】
なお、θ１とθ２は３次元座標の組［ｐ１，ｐ１’，ｐ２，ｐ２’］が正しい対応関係にあれば一致する（θ１＝θ２＝θ）。そこで、カメラ方向推定部３００は、θ１とθ２が一致しなかった場合、即ち、ある３次元座標の組が正しい対応関係にない場合、その３次元座標の組については後段の計算を行わず、次の３次元座標の組の計算に移ってもよい。これにより、計算量を削減することができる。
【００８６】
また、回転角θ１の向きを表す回転方向ｒdirは、ｈ１とｈ１’の外積である。また、回転角θ２の向きを表す回転方向ｒdirは、ｈ２とｈ２’の外積でもあり、３次元座標の組［ｐ１，ｐ１’，ｐ２，ｐ２’］が正しい対応関係にあれば一致する。そこで、カメラ方向推定部３００は、ｈ１とｈ１’の外積とｈ２とｈ２’の外積が一致しなかった場合、即ち、ある３次元座標の組が正しい対応関係にない場合、その３次元座標の組については後段の計算を行わず、次の３次元座標の組の計算に移ってもよい。これにより、計算量を削減することができる。
【００８７】
カメラ方向推定部３００は、上述の如く、算出した回転方向ｒdirと回転角θとからｒ＝ｒdir×θとして、回転ベクトルｒ（カメラ方向パラメータ）の推定値とする。カメラ方向推定部３００は、最終的にRodorigues変換によって回転ベクトルｒを回転行列Ｒに変換することで、２組の３次元座標の対応から回転行列Ｒを算出する。つまり、カメラ方向推定部３００は、２組の３次元座標の組をサンプリングして照合し、球体に対するカメラ方向をロバスト推定する。
【００８８】
従来方式である、カメラ座標Ｗを構成する回転行列Ｒと並進ベクトルｔを同時に求める方式の場合、４組の対応点を必要とするが、本実施形態によるカメラ方向推定部３００では、カメラ方向（回転行列Ｒ）のみ推定すればよいため、上述の如く２組の対応点から回転行列Ｒを算出できる。そのため、高速にロバスト推定を行うことが可能になる。また、特許文献１、２に記載のカメラ方向の算出手法と比較して、特徴点の厳密な座標値を利用しているため、高精度なカメラ方向推定精度を得ることが可能になる。
【００８９】
（カメラ方向推定部３００／最適化）
カメラ方向推定部３００は、予めカメラ位置パラメータの推定値とカメラ方向パラメータの大まかな値（初期値）が与えられた場合に、３次元座標と２次元座標とのマッチが一致するようにカメラ方向パラメータを調整することでカメラ方向パラメータの精度を改善してもよい。カメラ方向推定部３００は、３次元座標点のカメラ画像への投影点と対応する２次元座標点の距離の二乗誤差和が最小になるようにカメラ方向パラメータを調整する。具体的には、カメラ方向推定部３００は、下記式（１７）に示す再投影誤差関数を最小とするようなカメラ方向パラメータをニュートン法等の反復アルゴリズムを用いて計算する。これによって与えられたカメラ方向パラメータの初期値の精度が悪い場合でも、最適なカメラ方向パラメータを取得することが可能になる。
【００９０】
【数１１】
0005801209.tif 000012
【００９１】
カメラ姿勢推定装置２０は最終的にカメラ位置推定部２００が推定したカメラ位置（並進ベクトルｔ）と、カメラ方向推定部３００が推定したカメラ方向（回転行列Ｒ）を合わせて、カメラ姿勢（カメラの外部パラメータ［Ｒ｜ｔ］）として出力する。
【００９２】
以上、カメラ姿勢推定装置２０によれば、カメラ姿勢の推定精度を向上させるとともに、推定時の計算コストを低減させることができる。
【００９３】
なお、カメラ姿勢推定装置２０は、カメラ位置推定部２００とカメラ方向推定部３００の後段に、更に最適化処理部（非図示）を備え、外部パラメータ［Ｒ｜ｔ］を、最適化処理の初期値として、Gauss-Newton法やLevenberg-Marquardt法等の反復アルゴリズムを使用してカメラ姿勢の再投影誤差関数を最小化するカメラの外部パラメータを最終出力としてもよい。
【００９４】
一方カメラ位置推定部２００とカメラ方向推定部３００のそれぞれで最適化処理を行った場合、カメラ位置パラメータとカメラ方向パラメータは独立に最適化されることになる。エッジ情報はカメラ位置の推定に適しており、特徴点情報はカメラ方向の推定に適しているため、より高精度なカメラ姿勢が得られる。このようにカメラ姿勢推定装置２０は、カメラ位置推定部２００とカメラ方向推定部３００のそれぞれにおいて独立に最適化処理を行うことも望ましい。
【００９５】
また、上記実施形態では、立体対象物が完全な球体である場合について説明しているが、一部球体を含む立体対象物とし、球体部分のみに本発明の手法を適用してもよい。即ち、上記実施形態では、カメラ姿勢推定装置２０は、立体対象物として球体を利用してカメラ姿勢を推定する例を説明したが、カメラ姿勢推定装置２０は、一部に球体部分を含む立体対象物を利用してカメラ姿勢を推定してもよい。例えば、一部に球体部分を含む立体対象物が剛体の場合、球体部分から得られたカメラ姿勢の推定結果から直接、カメラ姿勢を推定できる場合もある他、球体部分以外の他の部分のカメラ姿勢の推定に球体部分から得られたカメラ姿勢を利用できるため、カメラ姿勢の推定精度の向上に寄与する。
【００９６】
具体的には、カメラ位置推定部２００は、球体部分を含む立体対象物の当該球体部分に対するカメラ位置を推定し、カメラ方向推定部３００は、カメラ画像から抽出された球体部分の特徴点と、カメラ位置推定部２００によって推定された当該球体部分に対するカメラ位置とを利用して、当該球体部分に対するカメラ方向を推定するようにしてもよい。
【００９７】
なお、本発明の一実施形態によるカメラ姿勢推定装置２０の各処理を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、当該記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより、本発明の一実施形態によるカメラ姿勢推定装置２０に係る処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものであってもよい。また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、フラッシュメモリ等の書き込み可能な不揮発性メモリ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
【００９８】
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（例えばＤＲＡＭ（Dynamic Random Access Memory））のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００９９】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【０１００】
１…ＡＲシステム  １０…撮像装置  ２０…カメラ姿勢推定装置  ３０…表示装置  ９０…付加情報データベース  ２００…カメラ位置推定部  ３００…カメラ方向推定部
【図１】
0005801209.tif 000013
【図２】
0005801209.tif 000014
【図３】
0005801209.tif 000015
【図４】
0005801209.tif 000016
【図５】
0005801209.tif 000017
【図６】
0005801209.tif 000018