(57)【要約】【課題】見た目の特徴が乏しい画像であっても、位置合わせを容易に行うことが可能な情報処理装置、位置合わせ方法、及びプログラムを提供すること。【解決手段】情報処理装置の加速度データを出力する慣性センサと、前記加速度データから世界座標系における第１の重力方向を推定する重力方向推定部と、カメラ座標系におけるモデルの位置と姿勢を、カメラ座標系に対する前記第１の重力方向に応じて変化させ、カメラ座標系における前記モデルの位置と姿勢をモデル座標系における前記モデルの位置と姿勢へそれぞれ変換し、モデル座標系における前記モデルの位置と姿勢を世界座標系における前記モデルの位置と姿勢へそれぞれ変換する第１の変換行列を算出するモデル位置推定部と、カメラ座標系における前記モデルの位置と姿勢を画像座標系における前記モデルの位置に変換し、入力画像と前記モデルとを画像座標系に描画するモデル描画部と、前記モデル描画部の描画結果に従って、前記入力画像と前記モデルとを表示する表示部とを備える情報処理装置。【選択図】図１
2020042575.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置の加速度データを出力する慣性センサと、
前記加速度データから世界座標系における第１の重力方向を推定する重力方向推定部と、
カメラ座標系におけるモデルの位置と姿勢を、カメラ座標系に対する前記第１の重力方向に応じて変化させ、カメラ座標系における前記モデルの位置と姿勢をモデル座標系における前記モデルの位置と姿勢へそれぞれ変換し、モデル座標系における前記モデルの位置と姿勢を世界座標系における前記モデルの位置と姿勢へそれぞれ変換する第１の変換行列を算出するモデル位置推定部と、
カメラ座標系における前記モデルの位置と姿勢を画像座標系における前記モデルの位置に変換し、入力画像と前記モデルとを画像座標系に描画するモデル描画部と、
前記モデル描画部の描画結果に従って、前記入力画像と前記モデルとを表示する表示部と
を備えることを特徴とする情報処理装置。
【請求項２】
更に、前記モデルと前記入力画像に含まれる対象物体とが世界座標系で対応関係にあるときの前記第１の変換行列を前記モデル位置推定部から取得する物体位置認識部を備えることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記物体位置認識部は、前記モデルと前記対象物体とが世界座標系で一致したときの前記第１の変換行列を前記モデル位置推定部から取得することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記モデル位置推定部は、前記第１の重力方向を、カメラ座標系における第２の重力方向に変換して、カメラ座標系に対する前記第１の重力方向とし、
カメラ座標系における視点位置が前記第１の重力方向が変化する方向へ移動するとき、前記第２の重力方向は変化し、カメラ座標系における視点位置が前記第１の重力方向が変化しない方向に移動するとき、前記第２の重力方向は変化しないことを特徴とする請求項１記載の情報処理装置。
【請求項５】
情報処理装置の加速度データを出力し、
前記加速度データから世界座標系における第１の重力方向を推定し、
カメラ座標系におけるモデルの位置と姿勢を、カメラ座標系に対する前記第１の重力方向に応じて変化させ、カメラ座標系における前記モデルの位置と姿勢をモデル座標系における前記モデルの位置と姿勢へそれぞれ変換し、モデル座標系における前記モデルの位置と姿勢を世界座標系における前記モデルの位置と姿勢へそれぞれ変換する第１の変換行列を算出し、
カメラ座標系における前記モデルの位置と姿勢を画像座標系における前記モデルの位置に変換し、入力画像と前記モデルとを画像座標系に描画し、
描画結果に従って、前記入力画像と前記モデルとを表示する
ことを特徴とする位置合わせ方法。
【請求項６】
情報処理装置のコンピュータに実行させるプログラムであって、
前記情報処理装置の加速度データを出力し、
前記加速度データから世界座標系における第１の重力方向を推定し、
カメラ座標系におけるモデルの位置と姿勢を、カメラ座標系に対する前記第１の重力方向に応じて変化させ、カメラ座標系における前記モデルの位置と姿勢をモデル座標系における前記モデルの位置と姿勢へそれぞれ変換し、モデル座標系における前記モデルの位置と姿勢を世界座標系における前記モデルの位置と姿勢へそれぞれ変換する第１の変換行列を算出し、
カメラ座標系における前記モデルの位置と姿勢を画像座標系における前記モデルの位置に変換し、入力画像と前記モデルとを画像座標系に描画し、
描画結果に従って、前記入力画像と前記モデルとを表示する
処理を前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、位置合わせ方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、ＡＲ（Augmented Reality）技術が注目されつつある。ＡＲは、例えば、人が知覚する現実環境をコンピュータにより拡張する技術、およびコンピュータにより拡張された現実環境そのものを指す用語として用いられる。ＡＲでは、例えば、現実世界をベースとして、仮想物体を現実世界に映し出して、現実世界の一部を拡張した映像を映し出すことができる。ＡＲは、例えば、仮想空間がベースとなり、現実世界が入り込まないＶＲ（Virtual Reality：仮想現実）と対比されて用いられる場合がある。
【０００３】
ＡＲ技術では、仮想物体を、カメラの動きに従って、現実世界に重畳して３次元的に変化させている。例えば、ＡＲ技術を適用する情報処理装置では、各画像フレームにおいて、現実世界に重畳させる仮想物体の位置を、カメラの位置（又は方向）と姿勢（又は回転）に応じて決定する。仮想物体の位置を、カメラの位置と姿勢に応じて画像座標系へと投影したときに、現実世界の座標系から画像座標系へ、座標系を変換する情報を求めることを、例えば、「位置合わせ」と称する場合がある。
【０００４】
位置合わせの手法として、例えば、マーカーベースの位置合わせ手法がある。マーカーベースの位置合わせ手法は、例えば、２値（例えば、白と黒）の矩形のマーカーを予め用意しておき、情報処理装置において、マーカーを撮像し、撮像したマーカーの画像からマーカーの直線を検出するなどして、位置合わせを行う手法である。マーカーベースの位置合わせ手法は、例えば、既知のマーカーが用いられるため、情報処理装置では、画像から直線などを容易に検出し、位置合わせも容易に行うことが可能である。
【０００５】
しかし、マーカーベースの位置合わせ手法は、マーカーを別途用意することになる。そのため、マーカーベースの位置合わせ手法は、マーカーを用いない他の手法と比較して、設置コストが高くなる場合がある。
【０００６】
そこで、位置合わせ手法に関しては、マーカーレスによる位置合わせ手法の技術がある。例えば、様々な姿勢による物体を観測して学習データを得て、メモリなどに保存し、カメラで撮影した単一視点のＲＧＢ（Red, Green, Blue）画像から、３次元６Ｄ（Degree of freedom）の被写体の位置と姿勢を学習ベースで推定する技術がある。
【０００７】
また、仮想座標系内に固定されている仮想カメラからの仮想画像を、実空間中のオブジェクトの実ビデオ画像と実質的に一致する位置までカメラを移動させて、仮想座標系の仮想モデルの位置を、実座標系のオブジェクトの位置にマッピングする技術がある。
【０００８】
この技術によれば、オブジェクトの仮想画像の、オブジェクトの実際の位置へのコレジストレーションのための改善されたシステムおよび方法を提供できる、とされる。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】Wadim Kehl et al., “SSD-6D: Making RGB-Based 3D Detection and 6D Pose Estimation Great Again”, ICCV(IEEE (The Institute of Electrical and Electronics Engineers, Inc.) International Conference on Computer Vision), 2017
【特許文献】
【００１０】
【特許文献１】特表２００９−５０１６０９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかし、単一視点のＲＧＢ画像から学習ベースで被写体の位置と姿勢と推定する技術は、見た目の特徴が乏しい画像が被写体の場合、その物体の位置と姿勢を推定することが困難な場合がある。「見た目の特徴が乏しい画像」とは、例えば、コントラストの強いコーナ点やエッジ点の数が閾値よりも少ない、或いは、コントラストの強い表面の模様の数が閾値よりも少ない画像などの場合である。このような物体の画像は、画像処理で抽出可能な特徴数が閾値よりも少ない傾向にある。かかる技術では、メモリに保存した学習データに基づいて、被写体の位置と姿勢を推定しており、特徴数が閾値よりも少ない場合、ＲＧＢ画像に対応する学習データをメモリから読み出しても、読み出した学習データの精度が低くなる場合がある。従って、かかる技術では、「見た目の特徴が乏しい画像」に対して、推定した被写体の位置と姿勢の精度が低くなる場合がある。
【００１２】
また、固定された仮想カメラからの仮想画像を実ビデオ画像と実質的に一致させる技術は、例えば、仮想画像が固定されて表示されるため、実ビデオ画像と実質的に一致させるために、ユーザが、ある決められた１つの位置及び姿勢にカメラを移動させるようにしている。従って、かかる技術では、位置合わせの際に、カメラの移動が制限され、ユーザにとって、位置合わせが容易に行うことができない場合がある。
【００１３】
そこで、見た目の特徴が乏しい画像であっても、位置合わせを容易に行うことが可能な情報処理装置、位置合わせ方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【００１４】
一開示は、情報処理装置の加速度データを出力する慣性センサと、前記加速度データから世界座標系における第１の重力方向を推定する重力方向推定部と、カメラ座標系におけるモデルの位置と姿勢を、カメラ座標系に対する前記第１の重力方向に応じて変化させ、カメラ座標系における前記モデルの位置と姿勢をモデル座標系における前記モデルの位置と姿勢へそれぞれ変換し、モデル座標系における前記モデルの位置と姿勢を世界座標系における前記モデルの位置と姿勢へそれぞれ変換する第１の変換行列を算出するモデル位置推定部と、カメラ座標系における前記モデルの位置と姿勢を画像座標系における前記モデルの位置に変換し、入力画像と前記モデルとを画像座標系に描画するモデル描画部と、前記モデル描画部の描画結果に従って、前記入力画像と前記モデルとを表示する表示部とを備える情報処理装置。
【発明の効果】
【００１５】
一開示によれば、見た目の特徴が乏しい画像であっても、位置合わせを容易に行うことが可能である。
【図面の簡単な説明】
【００１６】
【図１】図１は情報処理装置の構成例を表す図である。
【図２】図２は座標系の例を示す図である。
【図３】図３はカメラの視点位置と重力ベクトルｇｃとの関係例を表す図である。
【図４】図４は動作例を表すフローチャートである。
【図５】図５は初期化処理の例を表すフローチャートである。
【図６】図６は世界座標系と仮想カメラ座標系との関係例を表す図である。
【図７】図７（Ａ）と図７（Ｂ）は各座標系の関係例を表す図である。
【図８】図８は３Ｄモデルの計算処理の例を表すフローチャートである。
【図９】図９（Ａ）と図９（Ｂ）は初期化処理の例を表す図である。
【図１０】図１０（Ａ）はカメラの視点位置と２点Ｐ１，ｃ，Ｐ２，ｃの関係例、図１０（Ｂ）はカメラ視点位置が移動した場合の２点Ｐ１，ｃ，Ｐ２，ｃの関係例を夫々表す図である。
【図１１】図１１（Ａ）と図１１（Ｂ）は対象物体と３Ｄモデルの表示例を表す図である。
【図１２】図１２はカメラの視点位置と２点Ｐ１，ｃ，Ｐ２，ｃの関係例を表す図である。
【図１３】図１３（Ａ）と図１３（Ｂ）は各座標系の関係例を表す図である。
【図１４】図１４（Ａ）と図１４（Ｂ）は対象物体と３Ｄモデルの表示例を表す図である。
【図１５】図１５（Ａ）と図１５（Ｂ）は対象物体と３Ｄモデルの表示例を表す図である。
【図１６】図１６（Ａ）と図１６（Ｂ）は対象物体と３Ｄモデルの表示例を表す図である。
【図１７】図１７は情報処理装置のハードウェア構成例を表す図である。
【図１８】図１８は情報処理システムの構成例を表す図である。
【発明を実施するための形態】
【００１７】
以下、本発明を実施するための形態について説明する。なお、以下の実施例は開示の技術を限定するものではない。そして、各実施の形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【００１８】
［第１の実施の形態］
＜情報処理装置の構成例＞
図１は情報処理装置１００の構成例を表す図である。
【００１９】
情報処理装置１００は、例えば、スマートフォン、ゲーム装置、設備の点検及び管理装置、ナビゲーション装置などである。
【００２０】
第１の実施の形態における情報処理装置１００は、ＡＲ技術を用いて、現実世界にモデル画像（又仮想モデル、或いは３Ｄ（3-Dimension）モデル。以下、「３Ｄモデル」と称する場合がある。）を表示させる。情報処理装置１００は、３Ｄモデルを用いて位置合わせを行う。この際、情報処理装置１００は、見た目の特徴が乏しい物体を対象物体とする場合でも、様々なカメラ視点から、３Ｄモデルを用いて対象物体に対する位置合わせが可能となる。
【００２１】
本第１の実施の形態において、「位置合わせ」とは、例えば、２つの座標系を結びつける情報を算出することである。本第１の実施の形態における「位置合わせ」は、例えば、モデル座標系を世界座標系へ変換する行列Ｔｗｍを算出することである。「位置合わせ」を、例えば、レジストレーションと称する場合もある。座標系を含め、詳細は後述する。
【００２２】
位置合わせ後の３Ｄモデルは、例えば、図１４（Ｂ）や図１６（Ｂ）に示すように、対象物体に合致した状態で表示部１０９に表示される。そのため、ユーザは、表示部１０９に表示された３Ｄモデルと対象物体との位置関係により、対象物体が変化したことを確認するなどして、設備の点検や管理を行うことが可能となる。或いは、情報処理装置１００では、位置合わせ後において、表示部１０９に３次元のナビゲーション画像を表示させたり、ゲームの３次元のキャラクタを表示させたりすることが可能となる。
【００２３】
図１に示すように、情報処理装置１００は、撮像部１０１、慣性センサ１０２、記憶部１０３、自己位置推定部１０４、重力方向推定部１０５、初期化処理部１０６、モデル位置推定部１０７、モデル描画部１０８、表示部１０９、認識開始判定部１１０、及び物体位置認識部１１１を備える。
【００２４】
撮像部１０１は、対象物体を含む画像を撮像し、撮像した画像を入力画像とし、入力画像の画像データを出力する。撮像部１０１は、画像データを記憶部１０３に記憶する。画像データは、例えば、ＲＧＢ（Red Green Blue）の各プレーンを持つＲＧＢ画像データである。
【００２５】
慣性センサ１０２は、情報処理装置１００の加速度を測定し、測定した加速度を加速度データとして出力する。慣性センサ１０２は、加速度データを記憶部１０３に記憶する。慣性センサ１０２は、例えば、加速度センサやジャイロセンサなどであってもよい。
【００２６】
記憶部１０３は、例えば、メモリであって、ＲＧＢ画像データ、加速度データ、さらに、３Ｄモデルデータと各種設定値を記憶する。３Ｄモデルデータは、例えば、世界座標系における３Ｄモデルの位置を表す位置情報とその位置におけるＲＧＢデータとが含まれる。また、各種設定値は、例えば、仮想カメラ座標系における３Ｄモデルの任意の２点Ｐ１，ｍ，Ｐ２，ｍなどが含まれる。なお、世界座標系や仮想カメラ座標系などの座標系については後述する。
【００２７】
自己位置推定部１０４は、記憶部１０３から読み出したＲＧＢ画像データに基づいて、世界座標系における実カメラ（例えば、撮像部１０１）の位置と姿勢を推定する。例えば、自己位置推定部１０４は、ＳＬＡＭ（Simultaneous Localization and Mapping）を用いて、複数画像フレームのＲＧＢ画像データから、実カメラの位置と姿勢を表すカメラパラメータを算出する。また、自己位置推定部１０４は、例えば、カメラパラメータを含む行列を算出する。カメラパラメータを含む行列は、例えば、世界座標系から実カメラ座標系への変換行列Ｔｃｗになり得る。詳細は動作例で説明する。自己位置推定部１０４は、変換行列Ｔｃｗなどをモデル描画部１０８とモデル位置推定部１０７へ出力する。
【００２８】
重力方向推定部１０５は、記憶部１０３から読み出した加速度データに基づいて、世界座標系における重力方向を推定する。例えば、重力方向推定部１０５は、内部メモリに記憶された式を利用して、加速度データから重力方向を推定する。詳細は動作例で説明する。重力方向推定部１０５は、推定した重力方向をモデル位置推定部１０７へ出力する。
【００２９】
初期化処理部１０６は、記憶部１０３から読み出した３Ｄモデルデータと各種設定値とを利用して、仮想カメラ座標系を設定する。各種設定値としては、例えば、３Ｄモデル上の任意の２点Ｐ１，ｍ，Ｐ２，ｍと、２点Ｐ１，ｍ，Ｐ２，ｍ間のユークリッド距離Ｌ、２点Ｐ１，ｍ，Ｐ２，ｍとを含む平面の法線ベクトルｎｃ、及び鉛直下方向ベクトルｇｍがある。そして、初期化処理部１０６は、仮想カメラ座標系における単位視線ベクトルｒ１，ｒ２を算出する。初期化処理部１０６は、算出した単位視線ベクトルｒ１，ｒ２と仮想カメラ座標系における各種数値とをモデル位置推定部１０７へ出力する。詳細は動作例で説明する。
【００３０】
モデル位置推定部１０７は、記憶部１０３から読み出した３Ｄモデルデータ、重力方向、単位視線ベクトルｒ１，ｒ２、世界座標系から実カメラ座標系への変換行列Ｔｃｗなどを用いて、モデル座標系における３Ｄモデルの位置と姿勢を推定する。具体的には、例えば、モデル位置推定部１０７は、モデル座標系における３Ｄモデルの位置と姿勢を世界座標系における３Ｄモデルの位置と姿勢へそれぞれ変換する変換行列Ｔｗｍを算出する。また、モデル位置推定部１０７は、例えば、世界座標系の３Ｄモデルの位置及び姿勢をカメラ座標系の３Ｄモデルの位置及び姿勢へ変換したり、モデル座標系における３Ｄモデルの位置及び姿勢へ変換したりする処理を行う。詳細は動作例で説明する。モデル位置推定部１０７は、カメラ座標系の３Ｄモデルの位置及び姿勢などをモデル描画部１０８へ出力し、モデル座標系における３Ｄモデルの位置及び姿勢と変換行列Ｔｗｍなどを、物体位置認識部１１１へ出力する。
【００３１】
なお、３Ｄモデルの位置及び姿勢の他の座標系への変換は、例えば、変換行列により行われる。他の座標系の位置及び姿勢へと変換するための数値が変換行列の各成分に含まれる。以下では、例えば、１つの変換行列により、ある座標系の３Ｄモデルの位置及び姿勢を、他の座標系の３Ｄモデルの位置及び姿勢へ変換することができるとして説明する。また、変換行列により、３Ｄモデルの位置及び姿勢がある座標系から他の座標系へ変換されるが、このことを、例えば、ある座標系における３Ｄモデルデータが、他の座標系における３Ｄモデルデータへ変換される、として説明する場合がある。３Ｄモデルの位置及び姿勢を、例えば、３Ｄモデルデータと称する場合がある。
【００３２】
モデル描画部１０８は、入力画像に３Ｄモデルを描画する。具体的には、モデル描画部１０８は、以下の処理を行う。すなわち、モデル描画部１０８は、カメラ座標系の３Ｄモデルデータを、投影行列Ｔｐを用いて、画像座標系の３Ｄモデルデータへ変換する。モデル描画部１０８は、ＲＧＢ画像データと３Ｄモデルデータとを、画像座標系に描画する。この際、モデル描画部１０８は、画像座標系の３Ｄモデルの位置におけるＲＧＢ画像データを、３Ｄモデルの画像データへ変更する。モデル描画部１０８は、画像座標系におけるＲＧＢ画像データと３Ｄモデルの画像データとを表示部１０９と認識開始判定部１１０へ出力する。
【００３３】
表示部１０９は、モデル描画部１０８から出力されたＲＧＢ画像データと３Ｄモデルの画像データとに基づいて、入力画像と３Ｄモデルを表示する。表示部１０９に表示される３Ｄモデルの位置は、カメラ座標系における重力方向に応じて変化する。ユーザは、表示部１０９においてこのように変化する３Ｄモデルを見ながら、情報処理装置１００（又は撮像部１０１）を移動させ、入力画像に含まれる対象物体と３Ｄモデルとを一致させて、「位置合わせ」を行う。そのように一致したときにおいて、表示部１０９に表示される対象物体と３Ｄモデルの例が、例えば、図１４（Ｂ）や図１６（Ｂ）となる。
【００３４】
図１に戻り、認識開始判定部１１０は、例えば、ユーザが情報処理装置１００の操作ボタンを押圧したか否かにより、対象物体の位置合わせの開始判定を行う。認識開始判定部１１０は、ユーザにより、位置合わせの開始判定が行われたと判定したときは、その旨を物体位置認識部１１１へ通知する。
【００３５】
物体位置認識部１１１は、例えば、位置合わせの開始判定の行われた旨の通知を受け取ったとき、その通知を受け取ったときのモデル座標系から世界座標系への変換行列Ｔｗｍを、モデル位置推定部１０７から受け取る。そして、物体位置認識部１１１は、この変換行列Ｔｗｍを利用して、モデル画像系における３Ｄモデルデータを世界座標系の３Ｄモデルデータへ変換したり、世界座標系の３Ｄモデルデータをカメラ座標系の３Ｄモデルデータへ変換したりする。物体位置認識部１１１は、カメラ座標系の３Ｄモデルデータをモデル描画１０８へ出力する。モデル描画部１０８では、この３Ｄモデルデータに対して、投影行列Ｔｐを用いて画像座標系への３Ｄモデルデータへ変換し、画像座標系に３Ｄモデルデータを描画する。表示部１０９では、描画結果に従って、入力画像と３Ｄモデルとを表示する。
【００３６】
＜各座標系について＞
図２は各座標系の例を表す図である。本第１の実施の形態では、世界座標系（Ｘ，Ｙ，Ｚ）、仮想カメラ座標系（Ｘｖ，Ｙｖ，Ｚｖ）、実カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）、モデル座標系（Ｘｍ，Ｙｍ，Ｚｍ）、及び画像座標系（ｘ，ｙ）の５つの座標系がある。
【００３７】
世界座標系（Ｘ，Ｙ，Ｚ）の任意の位置に世界座標系の原点Ｏｗが存在する。対象物体は、世界座標系（Ｘ，Ｙ，Ｚ）において、固定された位置に位置してもよい。また、３Ｄモデルも世界座標系（Ｘ，Ｙ，Ｚ）において、ある特定の位置に位置している。
【００３８】
また、世界座標系における任意の位置に仮想カメラ座標系（Ｘｖ，Ｙｖ，Ｚｖ）の原点Ｏｖが存在し、原点Ｏｖを基準にして仮想カメラ座標系（Ｘｖ，Ｙｖ，Ｚｖ）がある。原点Ｏｖは、例えば、仮想カメラの視点位置となる。
【００３９】
実カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）についても、世界座標系の任意の位置にその原点Ｏｃが存在し、原点Ｏｃを中心に実カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）がある。原点Ｏｃは、例えば、実カメラの視点位置となる。以下では、原点Ｏｖ，Ｏｃを、仮想カメラと実カメラの視点位置とそれぞれ称する場合がある。
【００４０】
なお、仮想カメラ座標系（Ｘｖ，Ｙｖ，Ｚｖ）における３Ｄモデルの位置及び姿勢と、実カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における３Ｄモデルの位置及び姿勢は、視点位置がそれぞれ異なるため、異なるものとなる。また、実カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）の視点位置Ｏｃは、世界座標系（Ｘ，Ｙ，Ｚ）において移動可能である。
【００４１】
実カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）の原点Ｏｃと、３Ｄモデルの中心とを結ぶ線分上に、画像座標系（ｘ，ｙ）の原点ｏが存在する。画像座標系（ｘ，ｙ）は、世界座標系（Ｘ，Ｙ，Ｚ）において、実カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）と３Ｄモデルとの間に位置する。実カメラの視点位置Ｏｃと、画像座標系（ｘ，ｙ）の原点ｏとの間の距離は、例えば、焦点距離ｆと呼ばれ、世界座標系において一定の距離を維持する。
【００４２】
さらに、３Ｄモデル上のある特定の位置（図２の例では、図面上、右上の角）を原点Ｏｍとするモデル座標系（Ｘｍ，Ｙｍ，Ｚｍ）がある。
【００４３】
図２に示すように、対象物体には、世界座標系（Ｘ，Ｙ，Ｚ）における重力ベクトルｇｗが働く。図２では、Ｙ軸方向の負方向に重力ベクトルｇｗが働くため、−ｇｗとして表記している。重力ベクトルｇｗは、３Ｄモデルにも働く。
【００４４】
本第１の実施の形態では、実カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）において、重力ベクトルｇｃが存在する。
【００４５】
図３は、実カメラの視点位置Ｏｃと、実カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における重力ベクトルｇｃとの関係例を表す図である。図３に示すように、視点位置Ｏｃを、３Ｄモデルを見上げる方向に移動させると、重力ベクトル（−ｇｃ）は、視点位置Ｏｃの方向へ傾く。一方、図２において、視点位置Ｏｃを、３Ｄモデルに近づく方向へ移動させても、重力ベクトル（−ｇｃ）の方向はほとんど変わらない。
【００４６】
すなわち、実カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における重力ベクトルｇｃは、例えば、重力ベクトルｇｗの方向（重力方向）に対して同じ向きを維持したまま、実カメラの視点位置Ｏｃが世界座標系（Ｘ，Ｙ，Ｚ）を移動しても、その方向は変わらない。一方、重力ベクトルｇｗの方向（重力方向）に対して、実カメラの視点位置Ｏｃがその向きを変える方向に移動すると、重力ベクトルｇｃの方向は変化する。このように、重力ベクトルｇｃの方向は、実カメラの視点位置Ｏｃの移動により、変化する場合がある、という特徴を持つ。本第１の実施の形態では、このような視点位置Ｏｃの移動により、重力ベクトルｇｃのその方向が変化する場合、その変化に応じて、３Ｄモデルの実カメラ座標系の位置及び姿勢を変化させるようにしている。詳細は動作例で説明する。
【００４７】
なお、以下では、実カメラ座標系のことを、例えば、カメラ座標系と称する場合がある。
【００４８】
＜動作例＞
図４は情報処理装置１００の動作例を表すフローチャートである。
【００４９】
情報処理装置１００は、処理を開始すると（Ｓ１０）、初期化処理を行う（Ｓ１１）。
【００５０】
図５は初期化処理の動作例を表すフローチャートである。初期化処理は、例えば、初期化処理部１０６で処理が行われ、仮想カメラ座標系における単位視線ベクトルｒ１，ｒ２が算出される。
【００５１】
初期化処理部１０６は、初期化処理を開始すると（Ｓ１１０）、仮想カメラ座標系における３Ｄモデルの任意の２点Ｐ１，ｖ，Ｐ２，ｖ（Ｐ１，ｖ≠Ｐ２，ｖ）を決定する（Ｓ１１１）。
【００５２】
図６は、世界座標系（Ｘ，Ｙ，Ｚ）と仮想カメラ座標系（Ｘｖ，Ｙｖ，Ｚｖ）との関係例を表す図である。図６に示すように、任意の２点Ｐ１，ｖ，Ｐ２，ｖは、仮想カメラ座標系（Ｘｖ，Ｙｖ，Ｚｖ）における３Ｄモデル上の任意の２点を表している。例えば、初期化処理部１０６は、記憶部１０３に記憶された、２点Ｐ１，ｖ，Ｐ２，ｖの位置座標を、記憶部１０３から読み出すことで、任意の２点Ｐ１，ｖ，Ｐ２，ｖを決定してもよい。
【００５３】
図５に戻り、また、初期化処理部１０６は、２点Ｐ１，ｖ，Ｐ２，ｖ間のユークリッド距離Ｌを決定する（Ｓ１１１）。例えば、初期化処理部１０６は、２点Ｐ１，ｖ，Ｐ２，ｖの位置座標に基づいて、その距離を計算することで、Ｌを計算してもよいし、記憶部１０３に記憶されたＬを読み出すことで決定してもよい。
【００５４】
さらに、初期化処理部１０６は、２点Ｐ１，ｖ，Ｐ２，ｖを含む適当な平面の法線ベクトルｎｖを決定する（Ｓ１１１）。図６に示すように、法線ベクトルｎｖは、３Ｄモデルのある面に対する法線ベクトルでもよい。例えば、初期化処理部１０６は、点Ｐ１，ｖ，Ｐ２，ｖの位置座標に基づいて、法線ベクトルｎｖを計算してもよいし、記憶部１０３から法線ベクトルｎｖの情報を読み出すことで、法線ベクトルｎｖを決定してもよい。
【００５５】
図５に戻り、さらに、初期化処理部１０６は、仮想カメラ座標系（Ｘｖ，Ｙｖ，Ｚｖ）における鉛直下向きベクトルｇｖを決定する（Ｓ１１１）。鉛直下向きベクトルｇｖは、例えば、図６に示すように、仮想カメラ座標系（Ｘｖ，Ｙｖ，Ｚｖ）における重力ベクトルとなり得る。例えば、初期化処理部１０６は、記憶部１０３から鉛直下向きベクトルｇｖの情報を読み出すことで、決定してもよい。この仮想カメラ座標系（Ｘｖ，Ｙｖ，Ｚｖ）における鉛直下向きベクトルｇｖも、重力ベクトルｇｃと同様に、例えば、図３に示すように、仮想カメラの視点位置Ｏｖに応じて、変化する場合がある。
【００５６】
図５に戻り、次に、初期化処理部１０６は、ある位置及び姿勢から２点Ｐ１，ｖ，Ｐ２，ｖを観測する仮想カメラを定義する（Ｓ１１２）。例えば、初期化処理部１０６は、図６に示すように、世界座標系（Ｘ，Ｙ，Ｚ）の任意の位置Ｏｖを、記憶部１０３から読み出して、仮想カメラの視点位置に設定することで、仮想カメラを定義する。
【００５７】
図５に戻り、次に、初期化処理部１０６は、仮想カメラ座標系（Ｘｖ，Ｙｖ，Ｚｖ）における単位視線ベクトルｒ１，ｒ２（ｒ１≠ｒ２）を計算する（Ｓ１１３）。例えば、初期化処理部１０６は、仮想カメラの視点位置Ｏｖの位置座標（０，０，０）と、仮想モデル座標系の２点Ｐ１，ｖ，Ｐ２，ｖの位置座標とを結ぶ線分の長さが「１」となる２点の位置座標を計算し、その位置座標をそれぞれ単位視線ベクトルｒ１，ｒ２の成分としてもよい。
【００５８】
そして、初期化処理部１０６は、初期化処理を終了する（Ｓ１１４）。初期化処理部１０６は、計算した単位視線ベクトルｒ１，ｒ２と、決定した法線ベクトルｎｖ、及び鉛直下向きベクトルｇｖをモデル位置推定部１０７へ出力する。
【００５９】
図４に戻り、次に、情報処理装置１００は、ＲＧＢ画像データと加速度データとを取得する（Ｓ１２）。例えば、撮像部１０１は、撮像した入力画像のＲＧＢ画像データを記憶部１０３に記憶し、慣性センサ１０２は、入力画像を撮像したときに測定した加速度データを記憶部１０３に記憶する。
【００６０】
なお、情報処理装置１００は、Ｓ１２からＳ１７までの処理を、撮像部１０１で撮像した画像の画像フレーム毎に行う。従って、情報処理装置１００は、画像フレーム毎に、ＲＧＢ画像データを取得したり、画像フレーム毎に、慣性センサ１０２から加速度データを取得したりする。
【００６１】
次に、情報処理装置１００は、カメラの位置及び姿勢を推定する（Ｓ１３）。例えば、自己位置推定部１０４は、ＳＬＡＭを利用して、カメラパラメータを取得し、実カメラの位置及び姿勢を推定することで、取得したカメラパラメータを含む変換行列Ｔｃｗを計算する。
【００６２】
ここで、ＳＬＡＭについて説明する。ＳＬＡＭとは、例えば、同一のカメラで撮像された複数の画像（２次元）に基づいて、画像の特徴点を抽出して追跡することで、カメラ周囲の３次元構造の認識と、カメラの位置及び姿勢の算出とを同時に行う技術である。
【００６３】
ＳＬＡＭ処理として、自己位置推定部１０４では、例えば、以下の処理を行う。
【００６４】
すなわち、最初に、自己位置推定部１０４は、記憶部１０３からＲＧＢ画像データを読み出し、ＲＧＢ画像データにより示された複数の画像（又は画像フレーム）から、特徴点を抽出する。例えば、自己位置推定部１０４は、ＳＩＦＴ（Scale Invariant Feature Transform）やＳＵＲＦ（Speeded Up Robust Feature）などの公知の手法を用いて、各画像について、特徴点を抽出する。
【００６５】
次に、自己位置推定部１０４は、各画像で抽出した特徴点の各画像におけるマッチングを行う。この際、自己位置推定部１０４は、特徴点抽出で用いた公知の手法で、マッチングを行ってもよい。
【００６６】
そして、自己位置推定部１０４は、マッチング結果に基づいて、特徴点の３次元座標を算出し、算出した３次元座標から各画像に対応したカメラパラメータを算出する。カメラパラメータとしては、例えば、カメラの位置座標と座標軸の回転角を含む。自己位置推定部１０４は、このカメラパラメータを含む変換行列Ｔｃｗを算出する。この変換行列Ｔｃｗは、例えば、カメラの位置座標（又は位置）と座標軸の回転角（又は姿勢）を含むため、世界座標系（Ｘ，Ｙ，Ｚ）における任意の位置及び姿勢を、カメラの視点位置を原点としたカメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における位置及び姿勢に変換する変換行列となり得る。
【００６７】
図７（Ａ）は、各座標系の関係例を表す図である。自己位置推定部１０４は、ＳＬＡＭを用いて、カメラの位置及び姿勢を算出することで、世界座標系（Ｘ，Ｙ，Ｚ）から実カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）への変換行列Ｔｃｗを算出している。
【００６８】
以上、ＳＬＡＭの処理の例について説明した。ＳＬＡＭには、例えば、ＥＫＦ（Extended Kalman Filter）を用いたＥＫＦベースのＳＬＡＭや、パーティクルフィルタを利用したＳＬＡＭなどがある。本第１の実施の形態では、例えば、どのような手法のＳＬＡＭを用いてもよい。
【００６９】
図４に戻り、次に、情報処理装置１００は、重力方向を計算する（Ｓ１４）。例えば、重力方向推定部１０５は、以下の処理を行う。
【００７０】
すなわち、重力方向推定部１０５は、記憶部１０３から読み出した、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）の各軸方向の加速度データ（Ａｘ，Ａｙ，Ａｚ）から、以下の式を用いて、各軸方向に対する傾き（θ，ψ，φ）を計算する。
【００７１】
【数１】
2020042575.tif 000003
【００７２】
【数２】
2020042575.tif 000004
【００７３】
【数３】
2020042575.tif 000005
【００７４】
そして、重力方向推定部１０５は、傾き（θ，ψ，φ）に基づいて、重力方向を推定する。例えば、重力方向推定部１０５は、傾きが、（０，−１，０）のときは、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）の−Ｙｃ軸方向に重力方向があると推定し、傾きが、（１，０，０）のときは、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）のＸｃ軸方向に重力方向があると推定する。重力方向推定部１０５は、推定した重力方向が、世界座標系（Ｘ，Ｙ，Ｚ）の重力方向であるとして、世界座標系（Ｘ，Ｙ，Ｚ）における重力ベクトルｇｗの方向（又は重力方向）を得る。
【００７５】
例えば、重力方向推定部１０５は、内部メモリに式（１）から式（３）を記憶し、本処理の際に読み出して、記憶部１０３から読み出した加速度データを式（１）から式（３）に代入することで、傾きを算出する。そして、重力方向推定部１０５は、その傾きに基づいて、重力ベクトルｇｗの方向を推定する。
【００７６】
以上が重力方向の計算方法である。
【００７７】
次に、情報処理装置１００は、３Ｄモデルの位置と姿勢の計算処理（以下、「３Ｄモデルの計算処理」と称する場合がある。）を行う（Ｓ１５）。
【００７８】
図８は、３Ｄモデルの計算処理の動作例を表すフローチャートである。
【００７９】
モデル位置推定部１０７は、３Ｄモデルの計算処理を開始すると（Ｓ１５０）、カメラ座標系における重力ベクトルｇｃの方向と、仮想モデル座標系における鉛直下向きベクトルｇｖの方向とが一致するように法線ｎｍを回転させる（Ｓ１５１）。
【００８０】
図９（Ａ）と図９（Ｂ）は、Ｓ１５１の処理を説明するための図である。本処理では、仮想カメラ座標系（Ｘｖ，Ｙｖ，Ｚｖ）における法線ベクトルｎｖを回転させて、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における法線ベクトルｎｃを算出する。その際に、モデル位置推定部１０７は、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）の重力ベクトルｇｃと、仮想カメラ座標系の鉛直下向きベクトルｇｖとを用いて計算する。モデル位置推定部１０７は、例えば、以下の計算を行う。
【００８１】
すなわち、モデル位置推定部１０７は、回転軸をｖ、回転軸ｖを中心にして法線ベクトルｎｖを法線ベクトルｎｃへ回転させる回転角度をθとすると、
【数４】
2020042575.tif 000006
【数５】
2020042575.tif 000007
により、回転軸ｖと法線ベクトルｎｃとを計算する。
【００８２】
次に、モデル位置推定部１０７は、回転軸ｖのまわりに角度θだけ回転させる回転行列Ｒを、以下の式を用いて算出する。
【００８３】
【数６】
2020042575.tif 000008
【００８４】
そして、モデル位置推定部１０７は、回転行列Ｒを用いて、以下の式を利用して、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における法線ベクトルｎｃを計算する。
【００８５】
【数７】
2020042575.tif 000009
【００８６】
なお、モデル位置推定部１０７は、例えば、カメラ位置推定処理（図４のＳ１３）で得た変換行列Ｔｃｗと、重力方向計算処理（Ｓ１４）で得た重力ベクトルｇｗを用いて、以下の式により、重力ベクトルｇｃを計算する。
【００８７】
【数８】
2020042575.tif 000010
【００８８】
例えば、モデル位置推定部１０７は、内部メモリに式（４）から式（８）を記憶し、本処理の際に内部メモリから式（４）から式（８）を読み出して、鉛直下向きベクトルｇｖや重力ベクトルｇｃなどを、式（４）から式（８）に代入するなどして、法線ベクトルｎｃを計算する。
【００８９】
図８に戻り、次に、モデル位置推定部１０７は、固定視線のスケールｔ１，ｔ２を計算する（Ｓ１５２）。
【００９０】
図１０（Ａ）は、スケールｔ１，ｔ２の例を表す図である。スケールｔ１，ｔ２は、例えば、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）の視点位置Ｏｃから、初期化処理で得た単位視線ベクトルｒ１，ｒ２を延長し、２点間の距離がＬとなっている３Ｄモデル上の２点Ｐ１，ｃ，Ｐ２，ｃへ延ばしたときの、単位視線ベクトルｒ１，ｒ２に対するスケールを表す。
【００９１】
モデル位置推定部１０７は、例えば、以下の式を利用して、スケールｔ１，ｔ２を計算する。
【００９２】
【数９】
2020042575.tif 000011
【００９３】
【数１０】
2020042575.tif 000012
【００９４】
ただし、αは、以下の式となる。
【００９５】
【数１１】
2020042575.tif 000013
【００９６】
例えば、モデル位置推定部１０７は、内部メモリに式（９）から式（１１）を記憶し、処理の際に内部メモリから読み出して、Ｓ１５１で得た法線ベクトルｎｃなどを式（９）から式（１１）に代入することで、スケールｔ１，ｔ２を得る。
【００９７】
図８に戻り、次に、モデル位置推定部１０７は、カメラ座標系における３Ｄモデルの２点Ｐ１，ｃ，Ｐ２，ｃを、以下の式を用いて計算する（Ｓ１５３）。
【００９８】
Ｐ１，ｃ＝ｔ１ｒ１，Ｐ２，ｃ＝ｔ２ｒ２  ・・・（１２）
例えば、モデル位置推定部１０７は、内部メモリに式（１２）を記憶し、処理の際に内部メモリから読み出して、Ｓ１５２で計算したスケールｔ１，ｔ２を式（１２）に代入することで、２点Ｐ１，ｃ，Ｐ２，ｃを得る。
【００９９】
ここで、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における任意の２点Ｐ１，ｃ，Ｐ２，ｃと、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における視点位置Ｏｃとの関係について説明する。
【０１００】
図１０（Ｂ）は、その関係例を表す図である。上述したように、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における重力ベクトルｇｃは、カメラの視点位置Ｏｃが重力ベクトルｇｗの方向（重力方向）に対して向きを変える場合、その方向が変化する。
【０１０１】
例えば、図１０（Ｂ）に示すように、カメラの視点位置がＯｃからＯ’ｃへ移動した場合を考える。丁度、視点位置Ｏｃが、３Ｄモデルに対して、世界座標系（Ｘ，Ｙ，Ｚ）のＹ軸方向へ（３Ｄモデルの上空方向へ）、移動した場合である。
【０１０２】
この場合、図３の場合と同様に、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における重力ベクトルｇｃは、重力ベクトルｇｗの方向に対して向きを変えているため、その方向が変化する。従って、カメラの視点位置がＯｃにあるときの重力ベクトルｇｃと、カメラの視点位置がＯ’ｃにあるときの重力ベクトルｇｃとは異なるものとなる。この相違により、式（４）と式（５）に示すように、カメラの視点位置がＯｃにあるときの回転軸ｖと回転角度θと、カメラの視点位置がＯ’ｃにあるときの回転軸ｖと回転角度θとが異なるものとなる。カメラの視点位置の相違により、回転軸ｖと回転角度θとが異なると、式（６）に示す回転行列Ｒも異なるものとなり、結果として、法線ベクトルｎｃも異なるものとなる。スケールｔ１，ｔ２は、式（９）から式（１１）に示すように、法線ベクトルｎｃが含まれるため、上述したカメラの視点位置の相違により、スケールｔ１，ｔ２も異なるものとなる。このスケールｔ１，ｔ２の相違により、図１０（Ｂ）に示すように、カメラの視点位置がＯｃからＯ’ｃへ移動すると、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における２点Ｐ１，ｃ，Ｐ２，ｃは、２点Ｐ’１，ｃ，Ｐ’２，ｃへそれぞれ移動する。従って、例えば、視点位置Ｏ’ｃからは、視点位置Ｏｃの場合と比較して、３Ｄモデルの上面が大きく見える状態となる。
【０１０３】
図１１（Ａ）と図１１（Ｂ）は、カメラの視点位置をＯｃからＯ’ｃへ変えたときの、３Ｄモデルの表示例を表す図である。図１１（Ｂ）は、図１１（Ａ）と比較して、３Ｄモデルの上面部分が大きく表示されているのがわかる。
【０１０４】
このように、本第１の実施の形態では、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における３Ｄモデルの位置と姿勢（例えば、例えば、２点Ｐ１，ｃ，Ｐ２，ｃ）を、カメラ座標系からの重力方向（例えば、重力ベクトルｇｃ）に応じて変化させるようにしている。このような関係により、情報処理装置１００は、図１１（Ａ）や図１１（Ｂ）に示すように、３Ｄモデルの位置と姿勢がカメラの視点位置Ｏｃの位置と姿勢に応じて変化する。
【０１０５】
図８に戻り、次に、モデル位置推定部１０７は、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）の重力ベクトルｇｃと、法線ベクトルｎｃ、及びモデル幅Ｗに基づいて、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）からモデル座標系（Ｘｍ，Ｙｍ，Ｚｍ）へ、座標系を変換する変換行列Ｔｍｃを計算する（Ｓ１５４）。変換行列Ｔｍｃの全体の座標系における位置付けは、例えば、図７（Ｂ）に示すものとなる。なお、モデル幅Ｗは、例えば、図１２に示すように、カメラ座標系における点Ｐ１，ｃから、モデル座標系の原点Ｏｍまでの距離を表し、モデル座標系のＸｍ軸方向における３Ｄモデルの長さを表す。
【０１０６】
例えば、モデル位置推定部１０７は、変換行列Ｔｍｃの全成分に、重力ベクトルｇｃと、法線ベクトルｎｃ、及びモデル幅Ｗの全部又は一部を含む行列を計算してもよい。或いは、モデル位置推定部１０７は、例えば、変換行列Ｔｍｃの一部の成分が数値とし、他の成分に、重力ベクトルｇｃと、法線ベクトルｎｃ、及びモデル幅Ｗの全部又は一部を含む行列を計算してもよい。或いは、モデル位置推定部１０７は、例えば、内部メモリに、変換行列Ｔｍｃを記憶しておき、重力ベクトルｇｃと、法線ベクトルｎｃ、及びモデル幅Ｗを、変換行列Ｔｍｃの各成分の全部又は一部に代入することで、変換行列Ｔｍｃを得るようにしてもよい。
【０１０７】
なお、モデル幅Ｗは、例えば、記憶部１０３やモデル位置推定部１０７の内部メモリに記憶しておき、モデル位置推定部１０７から記憶部１０３や内部メモリから読み出して、変換行列Ｔｍｃを計算するようにしてもよい。
【０１０８】
図８に戻り、次に、モデル位置推定部１０７は、世界座標系におけるカメラの位置と、３Ｄモデル上の２点Ｐ１，ｃ，Ｐ２，ｃに基づいて、モデル座標系（Ｘｍ，Ｙｍ，Ｚｍ）から世界座標系（Ｘ，Ｙ，Ｚ）へ、座標系を変換する変換行列Ｔｗｍを計算する（Ｓ１５５）。
【０１０９】
図１２は、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）とモデル座標系（Ｘｍ，Ｙｍ，Ｚｍ）の関係例を表す図である。本処理では、３Ｄモデル上の２点Ｐ１，ｃ，Ｐ２，ｃを、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）の点から、モデル座標系（Ｘｍ，Ｙｍ，Ｚｍ）への点へ変換する変換行列Ｔｗｍを計算する。丁度、カメラの視点位置Ｏｃから、３Ｄモデルの視点位置Ｏｍへ、視点位置を変えたときに、３Ｄモデル上の２点を、モデル座標系の２点Ｐ１，ｍ，Ｐ２，ｍへ変換する場合の変換行列Ｔｗｍを計算している。
【０１１０】
図７（Ｂ）に示すように、Ｓ１５４の処理により、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）からモデル座標系（Ｘｍ，Ｙｍ，Ｚｍ）への変換行列Ｔｗｍを計算した。また、自己位置推定処理（図４のＳ１３）により、世界座標系（Ｘ，Ｙ，Ｚ）からカメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）への変換行列Ｔｃｗを計算した。本処理においては、この関係を利用して、モデル座標系（Ｘｍ，Ｙｍ，Ｚｍ）から世界座標系（Ｘ，Ｙ，Ｚ）への変換行列Ｔｗｍを計算する。
【０１１１】
すなわち、モデル位置推定部１０７は、以下の式を利用して、変換行列Ｔｗｍを計算する。
【０１１２】
【数１２】
2020042575.tif 000014
【０１１３】
例えば、モデル位置推定部１０７は、内部メモリから式（１３）を読み出して、Ｓ１３で計算した変換行列Ｔｃｗと、Ｓ１５４で計算した変換行列Ｔｍｃとを、式（１３）に代入することで、変換行列Ｔｗｍを得る。
【０１１４】
図８に戻り、モデル位置推定部１０７は、Ｓ１５５の処理を終了すると、３Ｄモデルの計算処理を終了する（Ｓ１５６）。
【０１１５】
以上、３Ｄモデル計算処理（図４のＳ１５）について説明した。
【０１１６】
なお、モデル位置推定部１０７は、自己位置推定部１０４から受け取った変換行列Ｔｃｗを用いて、記憶部１０３から読み出した世界座標系（Ｘ，Ｙ，Ｚ）における３Ｄモデルデータを、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における３Ｄモデルデータへ変換する。モデル位置推定部１０７は、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における３Ｄモデルデータを、モデル描画部１０８へ出力する。
【０１１７】
また、モデル位置推定部１０７は、Ｓ１５４において算出した変換行列Ｔｍｃを利用して、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における３Ｄモデルデータを、モデル座標系（Ｘｍ，Ｙｍ，Ｚｍ）における３Ｄモデルデータへ変換する。モデル位置推定部１０７は、モデル座標系（Ｘｍ，Ｙｍ，Ｚｍ）における３Ｄモデルデータと、Ｓ１５５で算出した変換行列Ｔｗｍとを、物体位置認識部１１１へ出力する。
【０１１８】
図４に戻り、次に、情報処理装置１００は、カメラ映像に３Ｄモデルを描画する（Ｓ１６）。例えば、モデル描画部１０８は、以下の処理を行う。
【０１１９】
すなわち、モデル描画部１０８は、モデル位置推定部１０７から受け取った、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における３Ｄモデルデータに対して、図１３（Ａ）に示すように、投影行列Ｔｐを用いて、画像座標系（ｘ，ｙ）の３Ｄモデルデータへ変換する。そして、モデル描画部１０８は、記憶部１０３から読み出したＲＧＢデータ（又はカメラ映像）と、変換後の３Ｄモデルデータとを、画像座標系（ｘ，ｙ）に描画する。この際、モデル描画部１０８は、画像座標系（ｘ，ｙ）における３Ｄモデルの位置における入力画像のＲＧＢ画像データを、３Ｄモデルの画像データに変更することで、３Ｄモデルを描画する。モデル描画部１０８は、描画結果を表示部１０９と認識開始判定部１１０へ出力する。表示部１０９は、描画結果に従って、カメラ映像に３Ｄモデルが写っている画像を表示する。
【０１２０】
例えば、図１１（Ａ）や図１１（Ｂ）、及び図１４（Ａ）は、表示部１０９に表示されるカメラ映像と３Ｄモデルの例を表す。カメラ映像には対象物体（図１１（Ａ）の例は、ティッシュ箱）が含まれており、ユーザが、３Ｄモデルを対象物体に一致させるように、撮像部１０１（又は情報処理装置１００）を移動させることで、「位置合わせ」が行われる。
【０１２１】
図４に戻り、次に、情報処理装置１００は、ユーザの決定操作が行われたか否かを判定する（Ｓ１７）。決定操作とは、例えば、ユーザが表示部１０９に写っている映像において、対象物体と３Ｄモデルとが一致したと判断したときに、情報処理装置１００の操作ボタンなどを押す操作のことである。例えば、図１４（Ｂ）は、表示部１０９に表示された３Ｄモデルの例であるが、３Ｄモデルと対象物体とが一致したとユーザが判断すると、所定の操作ボタンをユーザが押圧する。認識開始判定部１１０は、操作ボタンを押圧したことを示す信号を操作ボタンから受信したとき、決定操作が行われたと判定し（Ｓ１７でＹｅｓ）、その信号を受け取らかったとき、決定操作がおこなわれていないと判定する（Ｓ１７でＮｏ）。決定操作が行われなったとき、図４に示すように、情報処理装置１００は、Ｓ１２へ移行して、Ｓ１２からＳ１７までの処理を繰り返す。操作ボタンに代えて、例えば、表示部１０９に表示されたタッチパネルの操作により決定操作が行われてもよい。
【０１２２】
情報処理装置１００は、決定操作が行われたと判定したとき（Ｓ１７でＹｅｓ）、対象物体の位置及び姿勢を計算する（Ｓ１８）。具体的には、物体位置認識部１１１は、例えば、決定操作が行われたときにモデル位置推定部１０７から受け取った変換行列Ｔｗｍを取得することで、「位置合わせ」を行うことになる。決定操作が行われたときの変換行列Ｔｗｍは、例えば、世界座標系における対象物体の位置及び姿勢と、世界座標系における３Ｄモデルの位置及び姿勢とが、ある対応関係にあるとき（又はマッピングしたとき）である。対応関係としては、例えば、世界座標系において、対象物体と３Ｄモデルとが一致する関係がある。物体位置認識部１１１は、このような対応関係にあるときの、変換行列Ｔｗｍを、モデル位置推定部１０７から取得している、といえる。
【０１２３】
そして、物体位置認識部１１１は、図１３（Ｂ）に示すように、「位置合わせ」により取得した変換行列Ｔｗｍや、モデル位置推定部１０７から受け取った変換行列Ｔｃｗ、及び投影行列Ｔｐを用いて、座標変換を（１）から（３）の順で行う。
【０１２４】
具体的には、情報処理装置１００は、例えば、以下の処理を行う。すなわち、物体位置認識部１１１は、モデル位置推定部１０７から受け取った、モデル座標系（Ｘｍ，Ｙｍ，Ｚｍ）における３Ｄモデルデータを、決定操作のタイミングでモデル位置推定部１０７から受け取った変換行列Ｔｗｍを用いて、世界座標系（Ｘ，Ｙ，Ｚ）の３Ｄモデルデータへ変換する（図１３（Ｂ）の（１））。さらに、物体位置認識部１１１は、自己位置推定部１０４から受け取った変換行列Ｔｃｗを用いて、世界座標系（Ｘ，Ｙ，Ｚ）の３Ｄモデルデータを、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）の３Ｄモデルデータへ変換する（図１３（Ｂ）の（２））。物体位置認識部１１１は、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における３Ｄモデルデータをモデル描画部１０８へ出力する。モデル描画部１０８では、投影行列Ｔｐを用いて、物体位置認識部１１１から受け取った、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における３Ｄモデルデータを、画像座標系（ｘ，ｙ）の３Ｄモデルデータへ変換する（図１３（Ｂ）の（３））。そして、モデル描画部１０８は、変換後の３Ｄモデルデータと、記憶部１０３から読み出したＲＧＢ画像データとを、画像座標系（ｘ，ｙ）に描画する。
【０１２５】
なお、モデル描画部１０８は、投影行列Ｔｐを用いることで、ｘ＝−ｆＸｃ／Ｚｃ、ｙ＝−ｆＹｃ／Ｚｃにより、カメラ座標系の点（Ｘｃ，Ｙｃ，Ｚｃ）を、画像座標系の点（ｘ，ｙ）へ変換する。モデル描画部１０８は、例えば、内部メモリに投影行列Ｔｐを記憶しておき、処理の際に読み出して、カメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）における３Ｄモデルデータに適用することで、画像座標系（ｘ，ｙ）における３Ｄモデルデータを得る。
【０１２６】
図１３（Ｂ）に示すように、座標変換が（１）から（３）の順で行われ、物体位置認識部１１１では、世界座標系（Ｘ，Ｙ，Ｚ）における３Ｄモデルデータを生成した。その後の座標変換により、情報処理装置１００では、この３Ｄモデルデータを、世界座標系（Ｘ，Ｙ，Ｚ）からカメラ座標系（Ｘｃ，Ｙｃ，Ｚｃ）を介して、画像座標系（ｘ，ｙ）へと変換した。このように、「位置合わせ」後、３Ｄモデルデータは、世界座標系（Ｘ，Ｙ，Ｚ）を介して３Ｄモデルデータを画像座標系（ｘ，ｙ）へと変換されている。そのため、３Ｄモデルデータは、「位置合わせ」後、世界座標系（Ｘ，Ｙ，Ｚ）と対応して表示部１０９に表示される。例えば、図１４（Ｂ）において「位置合わせ」が行われた後は、対象物体である「ティッシュ箱」と、３Ｄモデルデータとが一致した状態で、表示部１０９に表示される。カメラの位置及び姿勢を変化させても、３Ｄモデルは対象物体と一致した状態で表示される。
【０１２７】
図１５（Ａ）から図１６（Ｂ）は、異なる形状の３Ｄモデルの例を表す。また、対象物体も、「サーバ装置」の例を表している。図１５（Ａ）から図１６（Ｂ）に示すように、３Ｄモデルは、重力ベクトルｇｃに応じて、その位置と姿勢が変化している。
【０１２８】
このように、本第１の実施の形態における３Ｄモデルは、重力ベクトルｇｃに応じて、その位置と姿勢が変化する。そのため、３Ｄモデルが表示部１０９において固定となっている場合と比較して、ユーザがカメラを移動させる自由度が増し、カメラの位置と姿勢に応じて、「位置合わせ」を容易に行うことができる。
【０１２９】
また、本情報処理装置１００における「位置合わせ」に際して、３Ｄモデルの画像データの特徴点を検出したり、対象物体の特徴点を検出したりする処理は、Ｓ１４からＳ１８までの処理では行われない。従って、図１１（Ａ）などに示す「ティッシュ箱」や、図１５（Ａ）などに示す「サーバ装置」など、「見た目の特徴が乏しい」対象物体の画像であっても、重力ベクトルｇｃに応じて変化する３Ｄモデルを用いているため、精度の良い「位置合わせ」を行うことが可能となる。
【０１３０】
［その他の実施の形態］
図１７は、情報処理装置１００のハードウェア構成例を表す図である。
【０１３１】
情報処理装置１００は、さらに、カメラ１２０、メモリ１２１、ＣＰＵ（Central Processing Unit）１２２、ＲＯＭ（Read Only Memory）１２３、及びＲＡＭ（Random Access Memory）１２４を備える。
【０１３２】
メモリ１２１は、例えば、第１の実施の形態における記憶部１０３に対応する。
【０１３３】
また、ＣＰＵ１２２は、ＲＯＭ１２３に記憶されたプログラムを読み出してＲＡＭ１２４にロードし、ロードしたプログラムを実行する。これにより、ＣＰＵ１２２は、自己位置推定部１０４、重力方向推定部１０５、初期化処理部１０６、モデル位置推定部１０７、モデル描画部１０８、表示部１０９、認識開始判定部１１０、及び物体位置認識部１１１の機能を実現する。ＣＰＵ１２２は、例えば、自己位置推定部１０４、重力方向推定部１０５、初期化処理部１０６、モデル位置推定部１０７、モデル描画部１０８、表示部１０９、認識開始判定部１１０、及び物体位置認識部１１１に対応する。
【０１３４】
なお、ＣＰＵ１２２に代えて、ＭＰＵ（Micro Processing Unit）やＤＳＰ（Digital Signal Processor）、ＦＰＧＡ（Field Programmable Gate Array）などのプロセッサやコントローラなどが用いられてもよい。
【０１３５】
図１８は、情報処理装置１００の他の構成例を表す図である。図１８に示す例は、情報処理装置１００の外部に撮像装置１３０があり、撮像装置１３０において、対象物体を含む画像を撮像する例を示す。撮像装置１３０は、例えば、カメラなどであり、撮像部１０１と慣性センサ１０２を含む。撮像装置１３０は、移動可能であり、ユーザにより様々な場所に移動することができる。撮像装置１３０で撮像されたＲＧＢデータや、計測された加速度データは、有線や無線で情報処理装置１００へ送信することができる。図１８に示すように、情報処理システム１０には、情報処理装置１００と撮像装置１３０が含まれる。
【０１３６】
以上まとめると、付記のようになる。
【０１３７】
（付記１）
情報処理装置の加速度データを出力する慣性センサと、
前記加速度データから世界座標系における第１の重力方向を推定する重力方向推定部と、
カメラ座標系におけるモデルの位置と姿勢を、カメラ座標系に対する前記第１の重力方向に応じて変化させ、カメラ座標系における前記モデルの位置と姿勢をモデル座標系における前記モデルの位置と姿勢へそれぞれ変換し、モデル座標系における前記モデルの位置と姿勢を世界座標系における前記モデルの位置と姿勢へそれぞれ変換する第１の変換行列を算出するモデル位置推定部と、
カメラ座標系における前記モデルの位置と姿勢を画像座標系における前記モデルの位置に変換し、入力画像と前記モデルとを画像座標系に描画するモデル描画部と、
前記モデル描画部の描画結果に従って、前記入力画像と前記モデルとを表示する表示部と
を備えることを特徴とする情報処理装置。
【０１３８】
（付記２）
更に、前記モデルと前記入力画像に含まれる対象物体とが世界座標系で対応関係にあるときの前記第１の変換行列を前記モデル位置推定部から取得する物体位置認識部を備えることを特徴とする付記１記載の情報処理装置。
【０１３９】
（付記３）
前記物体位置認識部は、前記モデルと前記対象物体とが世界座標系で一致したときの前記第１の変換行列を前記モデル位置推定部から取得することを特徴とする付記２記載の情報処理装置。
【０１４０】
（付記４）
前記物体位置認識部は、ユーザの決定操作を示す信号を受信したとき、前記第１の変換行列を前記モデル位置推定部から取得することを特徴とする付記２記載の情報処理装置。
【０１４１】
（付記５）
前記物体位置認識部は、前記第１の変換行列を利用して、モデル座標系における前記モデルの位置と姿勢を、世界座標系を介してカメラ座標系における前記モデルの位置と姿勢へそれぞれ変換し、
前記モデル描画部は、前記物体位置認識部でカメラ座標系に変換された前記モデルの位置と姿勢に基づいて、前記モデルと入力画像を画像座標系に描画する
ことを特徴とする付記２記載の情報処理装置。
【０１４２】
（付記６）
前記モデル位置推定部は、前記第１の重力方向を、カメラ座標系における第２の重力方向に変換して、カメラ座標系に対する前記第１の重力方向とし、
カメラ座標系における視点位置が前記第１の重力方向が変化する方向へ移動するとき、前記第２の重力方向は変化し、カメラ座標系における視点位置が前記第１の重力方向が変化しない方向に移動するとき、前記第２の重力方向は変化しないことを特徴とする付記１記載の情報処理装置。
【０１４３】
（付記７）
更に、前記入力画像の画像データに基づいて、世界座標系における撮像部又は撮像装置の位置と姿勢を推定し、推定した位置と姿勢に基づいて、世界座標系からカメラ座標系へ変換する第２の変換行列を算出する自己位置推定部を備え、
前記モデル位置推定部は、前記第２の変換行列を用いて、前記第１の重力方向を前記第２の重力方向へ変換することを特徴とする付記６記載の情報処理装置。
【０１４４】
（付記８）
更に、前記モデル上の任意の２点と、前記２点間のユークリッド距離、前記２点を含む平面における第１の法線ベクトル、及び鉛直下方向ベクトルに基づいて、仮想モデル座標系を設定し、仮想モデル座標系における仮想カメラの視点位置から前記２点への単位視線ベクトルを算出する初期化処理部を備えることを特徴とする付記１記載の情報処理装置。
【０１４５】
（付記９）
更に、前記入力画像の画像データに基づいて、世界座標系における撮像部又は撮像装置の位置と姿勢を推定し、世界座標系からカメラ座標系へ変換する第２の変換行列を算出する自己位置推定部を備え、
前記モデル位置設定部は、前記第２の変換行列を用いて、前記第１の重力方向を前記第２の重力方向へ変換し、前記第２の重力方向と前記単位視線ベクトルとに基づいて、カメラ座標系における前記モデルの位置と姿勢をモデル座標系における前記モデルの位置と姿勢へそれぞれ変換する第３の変換行列を算出し、前記第３の変換行列を用いて、カメラ座標系における前記モデルの位置と姿勢をモデル座標系における前記モデルの位置と姿勢へそれぞれ変換することを特徴とする付記８記載の情報処理装置。
【０１４６】
（付記１０）
前記モデル位置推定部は、前記第１の重力方向を有する重力ベクトルと前記鉛直下方向ベクトルとに基づいて、前記第１の法線ベクトルを、カメラ座標系における第２の法線ベクトルへ変換し、前記第２の法線ベクトルと前記単位視線ベクトルとに基づいて、カメラ座標系における前記モデルの２点を算出し、カメラ座標系における前記モデルの２点と、前記第２の法線ベクトル、及びモデル座標系のＸ軸方向における前記モデルの長さとに基づいて、前記第３の変換行列を算出することを特徴とする付記９記載の情報処理装置。
【０１４７】
（付記１１）
前記モデル位置推定部は、前記第２の変換行列をＴｃｗ、前記第３の変換行列をＴｍｃとすると、内部メモリから読み出した以下の式（１４）を用いて、前記第１の変換行列Ｔｗｍを算出することを特徴とする付記１０記載の情報処理装置。
【数１３】
2020042575.tif 000015
【０１４８】
（付記１２）
情報処理装置の加速度データを出力し、
前記加速度データから世界座標系における第１の重力方向を推定し、
カメラ座標系におけるモデルの位置と姿勢を、カメラ座標系に対する前記第１の重力方向に応じて変化させ、カメラ座標系における前記モデルの位置と姿勢をモデル座標系における前記モデルの位置と姿勢へそれぞれ変換し、モデル座標系における前記モデルの位置と姿勢を世界座標系における前記モデルの位置と姿勢へそれぞれ変換する第１の変換行列を算出し、
カメラ座標系における前記モデルの位置と姿勢を画像座標系における前記モデルの位置に変換し、入力画像と前記モデルとを画像座標系に描画し、
描画結果に従って、前記入力画像と前記モデルとを表示する
ことを特徴とする位置合わせ方法。
【０１４９】
（付記１３）
情報処理装置のコンピュータに実行させるプログラムであって、
前記情報処理装置の加速度データを出力し、
前記加速度データから世界座標系における第１の重力方向を推定し、
カメラ座標系におけるモデルの位置と姿勢を、カメラ座標系に対する前記第１の重力方向に応じて変化させ、カメラ座標系における前記モデルの位置と姿勢をモデル座標系における前記モデルの位置と姿勢へそれぞれ変換し、モデル座標系における前記モデルの位置と姿勢を世界座標系における前記モデルの位置と姿勢へそれぞれ変換する第１の変換行列を算出し、
カメラ座標系における前記モデルの位置と姿勢を画像座標系における前記モデルの位置に変換し、入力画像と前記モデルとを画像座標系に描画し、
描画結果に従って、前記入力画像と前記モデルとを表示する
処理を前記コンピュータに実行させるプログラム。
【符号の説明】
【０１５０】
１０：情報処理システム                １００：情報処理装置
１０１：撮像部                        １０２：慣性センサ
１０３：記憶部                        １０４：自己位置推定部
１０５：重力方向推定部                １０６：初期化処理部
１０７：モデル位置推定部              １０８：モデル描画部
１０９：表示部                        １１０：認識開始判定部
１１１：物体位置認識部                １２０：カメラ
１２２：ＣＰＵ                        １３０：撮像装置
【図１】
2020042575.tif 000016
【図２】
2020042575.tif 000017
【図３】
2020042575.tif 000018
【図４】
2020042575.tif 000019
【図５】
2020042575.tif 000020
【図６】
2020042575.tif 000021
【図７】
2020042575.tif 000022
【図８】
2020042575.tif 000023
【図９】
2020042575.tif 000024
【図１０】
2020042575.tif 000025
【図１１】
2020042575.tif 000026
【図１２】
2020042575.tif 000027
【図１３】
2020042575.tif 000028
【図１４】
2020042575.tif 000029
【図１５】
2020042575.tif 000030
【図１６】
2020042575.tif 000031
【図１７】
2020042575.tif 000032
【図１８】
2020042575.tif 000033