以下、図面に基づいて本発明の実施の形態を説明する。図1は、本実施形態の全体概要を示す説明図である。図1に示す構成は、本発明の理解および実施に必要な程度で本実施形態の概要を示しており、本発明の範囲は図示の構成に限定されない。図1から一部の構成を除いた構成も本発明の範囲に含まれる。
カメラトラッキング装置1は、カメラで撮影した現実空間の画像(実際の画像)と3次元モデル空間とを位置合わせし、追従させるコンピュータシステムである。カメラトラッキング装置1は、例えば、撮像部F11、キーフレーム生成部F12、キーフレーム記憶部F13、キーフレーム選択部F14、重畳表示部F15、判定部F16、AR処理部F17を備える。
撮像部F11は、後述のカメラ14,15(図2,図3参照)を用いて、現実空間の実際の画像を撮影し、画像データとして出力する機能である。
キーフレーム生成部F12は、対象とする物体について後述のキーフレームデータD4(図7参照)を生成し、保存する機能である。対象物体とは、カメラトラッキング処理の対象となる物体、AR処理の対象となる物体である。キーフレーム生成部F12は、撮像部F11の撮影画像から3次元空間モデルを復元してキーフレームデータを生成することもできるし、3次元CADなどの3次元モデルデータを用いてキーフレームデータを生成することもできる。キーフレーム画像は「基準画像」に該当する。
キーフレーム記憶部F13は、キーフレーム生成部F12で生成されたキーフレームデータをメモリ15,34または補助記憶装置17,37へ保存する機能である。キーフレーム記憶部F13は「記憶部」に該当する。
キーフレーム選択部F14は、キーフレーム記憶部F13に格納された複数のキーフレーム画像の中から、撮像部F11の撮影画像に類似する所定のキーフレーム画像を選択する機能である。キーフレーム選択部F14は「基準画像選択部」に該当し、キーフレーム選択部F14の選択するキーフレーム画像は「所定の基準画像」に該当する。
キーフレーム選択部F14は、以下に述べる複数の方法のうち少なくともいずれか一方または両方を用いて、所定のキーフレーム画像を選択する。第1の方法は、第1選択部F141を用いる。第1選択部F141は、キーフレーム記憶部F13に格納されたキーフレーム画像の中から、撮像部F11の撮影画像に類似する所定のキーフレーム画像を一つ選択する。第2の方法は、第2選択部F142を用いる。第2選択部F142は、キーフレーム記憶部F13に格納されたキーフレーム画像の中から、撮像部F11の撮影画像に類似するキーフレーム画像の候補を複数選択してユーザへ提示し、ユーザの指定したキーフレーム画像を所定のキーフレーム画像として選択する。
キーフレーム選択部F14は、第1選択部F141または第2選択部F142のいずれか一つを用いて所定のキーフレーム画像を選択することもできるし、所定の条件に基づいて第1選択部F141と第2選択部F142を切り替えて使用することもできる。
重畳表示部F15は、キーフレーム選択部F14で選択された所定のキーフレーム画像と撮像部F11の撮影画像とを重ねて表示する機能である。さらに、重畳表示部F15は、撮影画像と所定のキーフレーム画像とが一致するように、位置や姿勢を調整する複数のモードを備える。
第1調整モードF151は、実際のカメラ14,24の位置や姿勢を変化させることで所定のキーフレーム画像に一致させるモードである。第1調整モードF151では、撮像部F11から撮影画像を読み込むたびに、所定のキーフレーム画像と撮影画像とを重畳表示する。したがって、例えばユーザは、カメラ14,24の位置や姿勢を変えながら撮影を続けることで、所定のキーフレーム画像と一致させることができる。第2の調整モードF152では、所定のキーフレーム画像の位置や姿勢を操作することで、撮影画像に一致させるモードである。第2の調整モードF152では、位置合わせ用の特徴点を指定するなどして、所定のキーフレーム画像の位置や姿勢を対話的に操作する。
判定部F16は、重畳表示部F15により重畳表示された撮影画像と所定のキーフレーム画像とが一致しているか否かを判定する機能である。ここで、撮影画像と所定のキーフレーム画像とが一致するとは、両方の画像の相違が所定の誤差の範囲内に収まることを意味する。判定部F16は、撮影画像と所定のキーフレーム画像とが一致すると判定すると、カメラ14,24の位置と姿勢の推定が完了したと判断し、「カメラトラッキング処理部」としてのAR処理部F17へ実行を指示する。
これにより、AR処理部F17は、カメラの位置や姿勢の変化に追従しながら、撮影画像に対してテキストやコンピュータグラフィックスなどのAR情報を重ね合わせる。カメラ14,24の位置と姿勢の推定処理が完了した場合、つまりロスト状態ではなく、カメラで撮影した画像を3次元モデル空間内で正確にトラッキングできた場合、撮影画像に重ねられていた所定のキーフレーム画像は表示部13,23から消去される。位置と姿勢の調整が完了した後は、キーフレーム画像を重畳表示する必要はなく、作業時の視認性が低下するためである。
なお、AR処理部F17は、カメラトラッキング装置1の内部に設けてもよいし、外部に設けてもよい。
図1の下側には、実際の画像である撮影画像Grと所定のキーフレーム画像Gvとを重ね合わせることで、重畳表示画像Gsを得る様子が示されている。実際の撮影画像Grには、装置などのオブジェクトOBJ1が映っている。所定のキーフレーム画像Gvには、実際のオブジェクトOBJ1に対応する3次元空間モデルでのオブジェクトOBJ2が映っている。撮影画像Grと所定のキーフレーム画像Gvとを重ね合わせたときに、両方の画像が一致しているならば、カメラトラッキング処理を開始し、AR画像を表示部13,23(図2,図3参照)に表示させることができる。3次元空間モデルが現実空間(撮影対象の実際の空間)に追従している限り、AR処理を行うことができる。
このように構成される本実施形態によれば、AR対象の物体についての複数のキーフレーム画像を予め用意し、それら複数のキーフレーム画像の中からカメラで撮影した撮影画像に類似する所定のキーフレーム画像を選択し、撮影画像と所定のキーフレーム画像が一致するか判定する。したがって本実施形態によれば、キーフレーム画像の中から撮影画像に類似する所定のキーフレーム画像を抽出して、撮影画像との一致を判定するだけで、カメラトラッキングのロストから短時間かつ効率的に回復することができ、AR処理の使い勝手を向上できる。また、本実施形態によれば、カメラトラッキング処理の初期化時においても、速やかに対象物との位置合わせを完了して、カメラトラッキング処理を開始することができる。
図2〜図11を用いて第1実施例を説明する。まず最初に、カメラトラッキング装置1のハードウェア構成について説明する。
図2のハードウェア構成図に示すように、カメラトラッキング装置1は、単一のコンピュータシステムとして構成することができる。カメラトラッキング装置1は、例えば、マイクロプロセッサ(以下、CPU:Central Processing Unit)11、入力部12、表示部13、カメラ14、メモリ15、通信部16、補助記憶装置17を備える。
CPU11は、カメラトラッキング装置1の動作を制御する。CPU11は、補助記憶装置17に記憶された所定のコンピュータプログラムP11〜P13をメモリ15に読み込んで実行することで、カメラトラッキング装置1の各機能を実現する。なお、コンピュータプログラムの一部または全部は、メモリ15に格納されていてもよい。
入力部12は、ユーザがカメラトラッキング装置1へ指示や情報を入力するための装置である。入力部12は、例えば、手動スイッチ、操作ボタン、操作コントローラ、タッチパネル、動作検出スイッチ、音声認識装置などのように構成される。表示部13は、カメラトラッキング装置1からユーザへ情報を提供する装置であり、ディスプレイ装置として構成される。
カメラ14は、例えばCCD(Charge Coupled Device)カメラ、CMOS(Complementary MOS)カメラのようなカラーデジタルカメラとして構成されており、撮影した画像をデジタルデータとして出力する。カメラ14は、投射したレーザー光が対象物から戻ってくるまでの時間、あるいはパターンの照射やステレオカメラの原理などに基づいて、対象物までの距離を測定する機能を備えることができる。
メモリ15は、例えば、ROM(Read Only Memory)やRAM(Random Access Memory)を含む記憶装置である。メモリ15の記憶内容は、図6で後述する。
通信部16は、外部装置と無線通信あるいは有線通信するための装置である。通信部16は、例えば、インターネットやLAN(Local Area Network)などの通信ネットワークに接続し、テキストメッセージ、コンピュータプログラム、イメージファイルなどを送受信する。通信部16は、近距離無線通信機能を備えてもよい。この場合、入力部12または表示部13の少なくともいずれか一方をコンピュータ本体とは別に構成し、近距離無線通信でコンピュータ本体と接続することができる。
補助記憶装置17は、例えばハードディスク、フラッシュメモリデバイスのような比較的大容量の不揮発性記憶装置である。補助記憶装置17は、着脱可能な記録媒体を備えてもよい。補助記憶装置17には、カメラ14で撮影した画像や重畳表示された画面などを作業記録として保存することができる。なお、補助記憶装置17は、コンピュータプログラムを記憶してもよい。例えば、キーフレーム生成部P11、カメラトラッキング処理部P12、AR処理部P13を実現するコンピュータプログラムを補助記憶装置17へ格納してもよい。
図3のハードウェア構成図に示すように、カメラトラッキング装置1Aは、クライアント・サーバ型のコンピュータシステムとして構成することもできる。
カメラトラッキング装置1Aは、現場端末2とサーバ3とから構成されており、現場端末2はサーバ3と通信ネットワークCNを介して通信可能に接続されている。クライアント・サーバ型のカメラトラッキング装置1Aでは、現場端末2で撮影した画像をサーバ3で処理し、その処理結果を現場端末2へ送信して表示させる。
現場端末2は、例えば、CPU21、入力部22、表示部23、カメラ24、メモリ25、通信部26、補助記憶装置27を備えることができる。
サーバ3は、例えば、CPU31、入力部32、表示部33、メモリ35、通信部36、補助記憶装置37を備えることができる。現場端末2もサーバ3も、入力部、表示部、カメラ、メモリ、通信部、補助記憶装置については、図2の構成と基本的に同様であるため、その説明を省略する。
相違点を述べると、上述の通り、クライアント・サーバ型のカメラトラッキング装置1Aでは、現場端末2とサーバ3とで役割を分担するため、それぞれの役割に応じたコンピュータプログラムを保持する。
例えば、現場端末2は、撮影画像と所定のキーフレーム画像とを表示部23に重畳表示する画像処理部P21、サーバ3との間でデータを送受信するデータ送受信部P22を実現するためのコンピュータプログラムを有する。
例えば、サーバ3は、キーフレーム画像を事前に生成して登録するためのキーフレーム生成部P31、カメラトラッキング処理部P32、AR処理部P33を実現するためのコンピュータプログラムを備える。
図4は、HMD型のカメラトラッキング装置1Bを示す説明図である。このカメラトラッキング装置1Bは、図2で述べたように現場に持ち運び可能な単一のコンピュータシステムとして構成してもよいし、図3で述べたようにクライアント・サーバ型システムで使用する現場端末2として構成してもよい。
HMD型カメラトラッキング装置1Bは、例えば、ユーザ4の頭部にカメラ14,24と表示部13,23を着脱可能に装着し、タブレットや携帯端末として構成されるコンピュータ本体(CPU11,21、メモリ15,25、入力部12,22などを含む)とカメラおよび表示部とを無線または有線で接続してもよい。
ユーザは、入力部12,22を操作することで、表示部13,23にAR情報を表示させ、AR情報を見ながら作業等を行う。カメラ14,24から得られたカラーの撮影画像や奥行き情報は、カメラトラッキング処理部P12,P32により処理される。これにより、カメラトラッキング装置1Bは、ユーザ頭部に装着されたカメラ14,24の位置と姿勢を推定する。
そして、カメラトラッキング装置1Bは、推定した情報に基づいて、カメラ14,24から入力される画像(実際の撮影画像)に対応するキーフレーム画像をCG(Computer Graphics)データとして、カメラ14,24からの入力画像に重畳し、表示部13,23に表示する。入力画像と対応するキーフレーム画像(所定のキーフレーム画像)とが一致すると、カメラ14,24の位置と姿勢の調整が完了し、カメラトラッキングを開始するための準備が整う。カメラトラッキング装置1Bは、AR情報とカメラ14,24で撮影している画像とが重なるようにして表示部13,23に表示する。ユーザは、AR情報を参照しながら作業を行う。
ところでユーザ4の作業中にカメラ14,24の位置や姿勢を推定できなくなると(ロスト時)、カメラトラッキング装置1Bは、キーフレーム画像との照合により位置や姿勢を推定し、ロストから回復する。
図5は、タブレット型のカメラトラッキング装置1Cを示す。いわゆるタブレット型コンピュータとして構成されるカメラトラッキング装置1Cは、その背面にカメラ14,24が設けられており、表示部13,23と入力部12,22とはタブレット表面に設けられている。
最初にユーザが、タブレット型のカメラトラッキング装置1CをAR対象物へ向けて操作すると、図4のHMD型カメラトラッキング装置1Bで述べたと同様の初期設定が行われる。すなわちカメラトラッキング装置1Cは、カメラ14,24で撮影された画像に対し、その画像に対応するキーフレーム画像を重畳表示する。両方の画像が一致すると、カメラトラッキング処理の初期化が完了する。そして、カメラ14,24で撮影している画像に対してAR情報が重ねられて、表示部13,23に表示される。
図6は、メモリ15に記憶されたデータを示す。以下では、単一のコンピュータシステムからカメラトラッキング装置1を構成する場合を例に挙げて説明する。
メモリ15は、例えば、入力画像Gr、カメラの位置と姿勢の推定データD1、入力画像の画像特徴量D2、3次元モデルD3、キーフレーム画像Gv、重畳画像Gs、キーフレームデータD4を記憶する。
入力画像Grとは、カメラ14で実際に撮影された画像データである。カメラトラッキング装置1へ入力される画像データであるため、入力画像Grと呼ぶ。入力画像Grは、RGB画像データの場合でもよいし、さらに奥行き情報を含むRGB−D画像データであってもよい。
カメラの位置と姿勢の推定データD1は、カメラ14の位置および姿勢の推定値を示すデータである。カメラトラッキング処理とは、カメラ14の位置および姿勢の推定値を高精度に求める処理のことである。
入力画像の画像特徴量D2は、入力画像Grから求めた画像特徴量のデータである。画像特徴量の詳細については後述する。
3次元モデルD3は、3次元再構成によって生成される、トラッキング対象の3次元モデルのデータである。3次元モデルは、3次元再構成で求める場合には点群で表現される場合が多いが、ポリゴンやボリュームデータで3次元モデルを表現してもよい。3次元モデルD3は3次元再構成によって生成されるだけでなく、3次元CADデータから生成することも可能である。
キーフレーム画像Gvは、カメラトラッキング処理で使用するキーフレーム画像のデータであり、後述のように、入力画像GrとキーフレームデータD4とから求める。
重畳画像Gsは、入力画像Grにキーフレーム画像Gvを重畳表示した画像のデータである。
キーフレームデータD4は、入力画像Grに対応するカメラの位置および姿勢のデータの組が格納されている。キーフレームデータD4の詳細な例は、図7で後述する。
図7を用いて、キーフレームデータD4の詳細を説明する。キーフレームデータD4は、N個のキーフレーム(キーフレーム1、キーフレーム2、…、キーフレームN)を有するデータベースである。
各キーフレームは、入力画像Grから得られる画像データD41と、その入力画像Grを撮影したときのカメラ14の位置および姿勢を示すデータD42と、その入力画像Grの画像特徴量と、を備える。画像データD41は、実際の画像である入力画像Grから生成されるキーフレーム画像Gvのデータである。
カメラの位置および姿勢を示すデータD42は、世界座標系におけるカメラ14の位置(X,Y,Z)と方向とから構成される。カメラ14の方向の記述方法には様々な方法が存在するが、例えばX軸、Y軸、Z軸周りの回転角度(θx, θy, θz)でカメラ14の方向を記述することができる。
図8を用いて、本実施例のカメラトラッキング装置1の利用シーンを説明する。図8の最上部には、カメラ14の入力画像Grの例が示されている。ここでは、図8の最上部に示すような室内のシーンをカメラトラッキングしているものとする。そして、図8の入力画像Grに対してカメラトラッキングが失敗(ロスト)し、カメラトラッキングの復帰処理を実行する場合を説明する。
カメラ14は室内の装置OBJ1を撮影しており、入力画像Grには装置OBJ1が含まれている。この装置OBJ1を活用して、カメラトラッキングの復帰および初期化を行うことを考える。
本実施例では、カメラ14で撮影した画像Grとカメラ14の位置および姿勢とを対応付けた複数のキーフレームを予め記憶するキーフレームデータD4を備えている。このキーフレームデータD4に含まれている複数枚のキーフレーム画像と、現在のカメラ14からの入力画像Grとを比較し、カメラ14の入力画像Grと類似したキーフレーム画像を求める。この処理の詳細は後述する。入力画像Grに類似するとして求められたキーフレーム画像Gvの例を図8の最下部に示す。
カメラトラッキング装置1は、キーフレーム画像Gvに対応したカメラ14の位置および姿勢を初期値として、カメラ14の位置および姿勢を推定する。この推定処理が成功した場合はロストからの復帰は成功であるため、カメラトラッキングを継続し、対象物にAR情報を重ねるなどのAR処理を実行する。以下、カメラの位置と姿勢のことを、「位置姿勢」と呼ぶ場合がある。
上述のキーフレーム画像Gvに対応したカメラ14の位置姿勢を初期値としたロストからの復帰が失敗した場合、カメラ14の現在の位置姿勢とカメラ14の位置姿勢の推定値とが十分に類似していないことが考えられる。
このため、カメラ14の現在の位置姿勢と、カメラ14の位置姿勢の推定値とを近づける必要がある。カメラ14の現在の位置姿勢と、カメラ14の位置姿勢の推定値とを近づける方法として、以下の2つの方法がある。
第1の方法は、カメラ14の現在の位置姿勢をカメラ14の位置姿勢の推定値(キーフレームでのカメラの位置姿勢の推定値)に近づける方法である。第2の方法は、カメラ14の現在の位置姿勢に、カメラ14の位置姿勢の推定値を近づける方法である。
すなわち、第1の方法では、実際の画像である入力画像Grがキーフレーム画像Gvに近づくようにする。第2の方法では、キーフレーム画像Gvが入力画像Grに近づくようにする。第1実施例では、第1の方法を用いる。後述の第2実施例では、第1の方法に加えて、第2の方法も用いる場合を説明する。なお、第2の方法のみを用いる場合も、本発明の範囲に含まれる。
ユーザがカメラ14の位置姿勢を更新する第1の方法の場合には、重畳画像Gsにおいて、キーフレーム画像Gv中の装置OBJ2は固定であり、入力画像Gr中の装置OBJ1がカメラ14の現在の位置姿勢に対応して変更される。
図8の中央部に位置する重畳画像Gsに示すように、入力画像Grに重畳するキーフレーム画像Gvは、入力画像Grに類似している。このため、ユーザは容易に、キーフレーム画像Gvと入力画像Grとがより類似するように、カメラ14の位置姿勢を変化させることができる。
カメラ14の移動は、図4に示すHMDを用いたシステム構成の場合、ユーザ自体の移動に対応する。図5に示すタブレット端末を用いたシステム構成の場合、タブレットの移動がカメラの移動に対応する。
カメラ14の位置姿勢が更新されると、カメラトラッキング装置1は、キーフレーム画像Gvに対応したカメラ14の位置姿勢を初期値として、カメラ14の位置姿勢の推定処理を行う。この推定処理が成功した場合はロストからの復帰は成功であり、カメラトラッキングを継続し、AR処理を実行する。なお、一定時間ロストからの復帰が成功しない場合、AR処理は終了するものとする。
図9は、HMDを用いたカメラトラッキング装置1(ARシステム)の場合に、ユーザ4がその位置や姿勢を動かすことで、実際のトラッキング対象装置OBJ1と3次元モデルの装置OBJ2とを一致させる様子を示す。
ユーザが4(1)から4(2)または4(3)のいずれかに移動すると、HMDに組み込まれたカメラ14の位置や姿勢も変化する。これにより、実際のトラッキング対象装置OBJ1と3次元モデルの装置OBJ2との重なり方もGs(1)〜Gs(3)のように変化する。重畳画像Gs(3)に示すように、実際のトラッキング対象装置OBJ1と3次元モデルの装置OBJ2とのずれが所定範囲内に収まると、カメラ14の位置姿勢が一致したものと推定される。
次に、図8で述べた本実施例の利用シーンを実現するための方法を説明する。本実施例は、オフラインでの前処理と、リアルタイムのカメラトラッキング処理(およびAR処理の実行)との2つから構成される。
前処理では、事前にトラッキング対象の3次元モデルD3を復元し、キーフレームデータD4を構築する。リアルタイムのカメラトラッキング処理では、3次元モデルD3とキーフレームデータD4とを用いて、カメラ14の位置姿勢をリアルタイムで推定し、推定した位置姿勢D1を用いて、カメラ14の入力画像GrにさまざまなAR情報(例えばCG映像)を重畳する。
図10は、オフラインの前処理としての、キーフレームデータD4を生成して保存する処理を示すフローチャートである。
カメラトラッキング装置1は、トラッキング対象を複数枚撮影する(S10)。この撮影に使用するカメラは、ARシステムで使用するカメラ14であってもよいし、別のカメラシステムでもよい。
カメラトラッキング装置1は、ステップS10で取得した複数の画像から、公知のSfM処理(Structure from Motion)処理(非特許文献1)によって、各画像でのカメラの位置姿勢を推定する(S11)。さらに、カメラトラッキング装置1は、SfM処理および3次元復元処理(非特許文献3)によって、トラッキング対象の3次元モデルD3を復元する(S12)。
上述の例では、画像特徴点を用いた3次元復元(SfM)を想定して説明したが、これに代えて、非特許文献2に記載のように、RGB−Dデータを用いて密な点群として3次元形状を復元してもよい。
カメラトラッキング装置1は、入力された複数の画像から特徴的な画像を選択し、キーフレームデータD4の画像データD41として登録する。このために、カメラトラッキング装置1は、各入力画像に対して画像特徴量を算出する。
ここで、画像特徴量とは、各画像を少ないデータで記述したものであり、2つの画像の特徴量の距離が近い場合にはその2つの画像が類似しているようなデータである。画像特徴量には様々なものが存在するが、非特許文献4のrandomized fernsや非特許文献5のbag of keypointsなどが利用できる。画像特徴量は多次元ベクトルで表現され、ベクトル間の距離を求めることで画像間の非類似度を求めることが可能である。
カメラトラッキング装置1は、各画像について画像特徴量およびカメラの位置姿勢を求めると、これらを用いてキーフレーム画像を選択し、キーフレームデータD4を生成する(S14)。すなわち、カメラトラッキング装置1は、画像特徴量およびカメラの位置姿勢が類似している画像をキーフレームから除外する。これにより、キーフレームデータD4が構築される。
図11のフローチャートを用いて、リアルタイムのカメラトラッキング処理およびAR処理の実行方法を説明する。
カメラトラッキング装置1は、カメラ14から画像Grを取り込む(S20)。カメラトラッキング装置1は、入力されたカメラ画像Grと、3次元モデルD3と、1フレーム前のカメラの位置姿勢データとを用いて、カメラ14の位置姿勢を推定する処理(カメラトラッキング)を実行する(S21)。
カメラトラッキングに非特許文献1の方法を用いてもよい。その場合、入力画像Grから特徴点を抽出し、3次元モデルD3の画像特徴点とのマッチングを行うことでカメラ14の位置姿勢を推定する。この過程で、1フレーム前のカメラ14の位置姿勢データを用いる。また、非特許文献2の方法を用いる場合、入力画像Grの奥行きと3次元モデル3Dから得られた奥行きとを適合させることで、カメラ14の位置姿勢を推定する。
カメラトラッキング装置1は、カメラ14の位置姿勢の推定に成功したか判定する(S22)。カメラトラッキング装置1は、3次元モデルD3と推定されたカメラの位置姿勢D1とから生成される2次元画像と入力画像Grとの類似度が閾値以上の場合に、カメラ14の位置姿勢の推定が成功と判断し(S22:YES)、閾値以下の場合に推定は失敗と判断する(S22:No)。
カメラトラッキング装置1は、カメラトラッキングに成功すると、カメラの位置姿勢の推定値D1を用いて、AR処理部P12による処理を実行させる(S23)。AR処理では、入力画像Grに対してCG映像や文字などを重畳表示する。カメラトラッキング装置1は、AR処理が終了するか判定し(S24)、終了と判定すると(S24:YES)、AR処理部P12の動作を停止させる。AR処理が終了しない場合(S24:NO)、ステップS20へ戻る。
カメラトラッキング装置1は、カメラトラッキングに失敗したと判定した場合(S22:NO)、予め登録されているキーフレーム画像Gvの中から、入力画像Grに類似した所定のキーフレーム画像Gvを1つ選択する(S25)。
ステップS25の処理は、以下のように実行する。まずカメラトラッキング装置1は、入力画像Grから画像特徴量D2を求め、この画像特徴量D2とキーフレームデータD4に保存されている各キーフレーム画像Gvとの距離を求める。カメラトラッキング装置1は、この距離が最小のキーフレーム画像Gvを求める。
カメラトラッキング装置1は、入力画像Grに類似するキーフレーム画像Gvを選出できたか判定する(S26)。カメラトラッキング装置1は、ステップS25で抽出したキーフレーム画像GvとステップS20で取得した入力画像Grとの距離が閾値以下である場合、適切なキーフレーム画像Gvが選出されたと判断し(S26:YES)、ステップS30へ進む。
カメラトラッキング装置1は、抽出したキーフレーム画像Gvと入力画像Grとの距離が閾値以上である場合(S26:NO)、入力画像Grに類似するキーフレーム画像Gvの選出に失敗したと判断する(S26:NO)。カメラトラッキング装置1は、次の画像がカメラ14から入力されるのを待って(S27)、ステップS25へ戻る。
カメラトラッキング装置1は、入力画像Grに類似するキーフレーム画像Gvの選出に成功すると、そのキーフレーム画像Gvと入力画像Grとを重畳表示した画像Gsを表示部13に表示させる(S30)。重畳画像Gsの一例は図8に示した通りである。
ユーザは、図9で述べたように、重畳画像Gsを見ながら、カメラ14を移動させることで、カメラ14の位置姿勢と3次元モデル空間におけるカメラ(仮想カメラ)の位置姿勢の推定値とを近づける。このために、カメラトラッキング装置1は、カメラ14から最新の画像を取得する(S31)。カメラ画像入力はリアルタイムで更新される。
カメラ画像入力が更新されると(S31)、カメラトラッキング装置1は、カメラ14の位置姿勢を推定する処理を実行する(S33)。ステップS33は、ステップS21と同様の処理である。
次にカメラトラッキング装置1は、カメラ14の位置姿勢の推定に成功したか判定する(S34)。このステップS34は、ステップS22と同様の処理である。カメラトラッキング装置1は、カメラ14の位置姿勢の推定に成功した場合(S34:YES)、カメラトラッキングに成功したと判定し、ステップS20へ戻る。これにより、カメラトラッキングはロストから復帰し、ステップS21,S22を経てステップS23へ進み、AR処理が実行される。
これに対し、カメラ14の位置姿勢の推定に失敗した場合(S34:NO)、カメラトラッキング装置1は、ステップS30に戻って重畳画像Gsを表示する。そして、カメラトラッキング装置1は、再びカメラ14から最新画像を取込み(S31)、カメラ14の位置姿勢を推定し直し(S33)、その推定に成功したか判定する(S34)。
なお、図示は省略するが、カメラ14の位置姿勢を推定する処理(S33)が予め定められた一定時間内に成功しない場合、カメラトラッキング装置1は、カメラトラッキング処理に失敗したと判定し、本処理を終了する。
このように構成される本実施例によれば、カメラトラッキングの初期化時やロスト時に、カメラ14の入力画像Grに類似するキーフレーム画像Gvを自動的に抽出して重畳表示し、両方の画像が一致するときにカメラの位置姿勢の推定に成功したと判定する。したがって、本実施例では、事前に登録された複数のキーフレーム画像の中から入力画像Grに類似するキーフレーム画像Gvを選択するだけで、カメラの位置姿勢の推定を効率よく速やかに行うことができ、ARシステム(カメラトラッキング装置1)の使い勝手が向上する。
図12,図13を用いて第2実施例を説明する。本実施例を含む以下の各実施例は、第1実施例の変形例に相当するため、第1実施例との相違を中心に説明する。本実施例では、実際のカメラ14の位置姿勢と、カメラの位置姿勢の推定値(3次元モデル空間での仮想カメラの位置姿勢)とを近づける方法として、キーフレーム画像Gvの位置や向きを変化させる方法(上述の第2の方法)も使用する。
ユーザがカメラの位置姿勢の推定値を更新する第2の方法の場合には、重畳画像Gsの入力画像Grを固定し、キーフレーム画像Gvを対話的に更新することで、カメラの位置姿勢を推定する。キーフレーム画像Gvは、トラッキング対象をカメラの位置姿勢で撮影した画像である。トラッキング対象の3次元モデルを用いることで、カメラの位置姿勢を変更した場合の画像を生成することができる。
本実施例では、ユーザは、キーフレーム画像Gvに対応するカメラの位置姿勢から、マウスやタッチパネル等を用いて操作することにより重畳画像Gsを更新し、CG画像Gvと入力画像Grとを類似させる。
なお、実際のカメラの位置姿勢の更新(第1の方法)、カメラの位置姿勢の推定値の更新(第2の方法)の2つを別々に実行してもよいし、同時に実行してもよい。
図12は、固定された入力画像Grに対して、キーフレーム画像Gvをユーザが動かして一致させる例を示す。図8の最上部に示すように、ユーザは、入力画像Gr上の特徴的な点M11〜M14をマウスポインタ等で指定する。ここでは、ユーザは、実際の装置OBJ1の四隅を特徴点M11〜M14として指定したものとする。特徴点M11〜M14は「第1特徴点」に該当する。
図8の最下部に示すように、ユーザは、入力画像Gr上の特徴点M11〜M14に対応させるべく、キーフレーム画像Gv上の特徴点M21〜M24を指定する。ここでは、ユーザは、3次元モデル空間内の装置OBJ2の四隅を特徴点M21〜M24として指定したものとする。特徴点M21〜M24は「第2特徴点」に該当する。
カメラトラッキング装置1は、ユーザによって特徴点M11〜M14,M21〜M24が指定されると、重畳画像Gsにおいて、対応する特徴点同士が重なり合うように、キーフレーム画像Gvの位置や姿勢を自動的に変化させる。図8の中央部に示す重畳画像Gsは、キーフレーム画像Gvを入力画像Grに重ねた瞬間を示しており、両画像Gv,Grは未だ一致していない。
このように、ユーザが入力画像Grおよびキーフレーム画像Gvの両方において特徴的な点を指定することで、キーフレーム画像Gvの位置や姿勢を入力画像Grへ自動的に一致させることができる。特徴点のペアは少なくとも3つあればよい。
自動的にキーフレーム画像Gvの位置や姿勢を変化させる方法に限らず、ユーザがマウス等でキーフレーム画像Gvの位置や姿勢を手動で変化させることもできる。
図13は、本実施例によるカメラトラッキング処理およびAR処理の実行方法を示すフローチャートである。本フローチャートは、図11で述べたステップS20〜S27,S30,S31,S33,S34を全て含んでいる。さらに本実施例のフローチャートは、ステップS31とステップS33との間で、新規なステップS32を実行する。
カメラトラッキング装置1は、カメラ14の入力画像Grとキーフレーム画像Gvとを重畳した画像Gsを表示する(S30)。ユーザは、重畳画像Gsを見ながら、カメラ14を移動させたり姿勢を変えたりすることができる(S31)。
さらに、ユーザは、重畳されているキーフレーム画像Gvをマウス等を用いて対話的に操作し、キーフレーム画像Gvを移動させたり回転させたりして、カメラの位置姿勢の推定値を更新させる(S32)。入力画像Grとキーフレーム画像Gvとは、リアルタイムで更新される。
入力画像Grが更新されるか、あるいはカメラ位置姿勢の推定値D1が更新されるかのいずれかの場合、カメラ位置姿勢を推定する処理が実行される(S33)。カメラトラッキング装置1は、カメラ位置姿勢の推定が成功した場合(S34:YES)、カメラトラッキングが成功し、ロストからの復帰は成功と判定し、ステップS20へ移る。
カメラ位置姿勢の推定に失敗した場合(S34:NO)、カメラトラッキング装置1は、ステップS30へ戻る。
このように構成される本実施例も第1実施例と同様の作用効果を奏する。さらに本実施例によれば、ユーザは、入力画像Grをキーフレーム画像Gvに一致させるか(S31)、あるいは、キーフレーム画像をGvを入力画像Grに一致させるか(G32)、のいずれか一つまたは両方の方法を選択することができる。したがって、ユーザは、状況やトラッキング対象の形状などに応じて、適切な方法を採用することができる。この結果、本実施例は、第1実施例に比べて使い勝手がさらに向上する。
図14,図15を用いて第3実施例を説明する。本実施例では、入力画像Grに類似するキーフレーム画像Gvの候補(キーフレーム画像候補)を複数個ユーザへ提示し、ユーザにキーフレーム画像Gvを選択させる。これにより、本実施例では、ロストからの回復の成功率をさらに高める。
図14の上側に示すように、カメラトラッキング装置1は、入力画像Grに類似するキーフレーム画像候補を複数(ここでは4個)選択して、ユーザへ提示する。図14の例では、カメラトラッキング装置1は、4個のキーフレーム画像候補Gvc1〜Gvc4を表示部13に表示させる。
図14の下側に示すように、ユーザは、キーフレーム画像候補を提示されると、例えば周囲を見回し、現実のトラッキング対象に最も類似するキーフレーム画像候補を一つ選択する。ここでは、キーフレーム画像候補Gvc1が選択されたものとする。図14では、選択されたことが明確にわかるように、強調表示5を付している。ユーザは、入力部12を用いて、複数提示されたキーフレーム画像候補の中から任意のキーフレーム画像候補を一つ選択することができる。
図15のフローチャートを用いて、第3実施例によるリアルタイムのカメラトラッキング処理およびAR処理の実行方法を説明する。図15のフローチャートは、図11で述べたフローチャートと共通のステップS20〜S27,S30,S31,S33,S34を全て含んでいる。
また、本実施例では、新規なステップS28,S29を備える。さらに、図11のステップS25に代わる本実施例のステップS25Aでは、複数のキーフレーム画像候補を選出する。また、図11のステップS26に代わる本実施例のステップS26Aでは、適切なキーフレーム画像候補が選出されたか判定する。
カメラトラッキング装置1は、カメラの位置姿勢の推定に失敗すると(S22:NO)、入力画像Grに類似するキーフレーム画像の候補をm個選択する(S25A)。ステップS25Aの処理は、例えば以下のように実行する。カメラトラッキング装置1は、入力画像Grから画像特徴量D2を求める。続いて、カメラトラッキング装置1は、画像特徴量D2とキーフレームデータD4に保存されている各キーフレームの画像特徴量D43との距離を求める。そして、カメラトラッキング装置1は、その距離が小さいキーフレームに含まれている画像データD41をキーフレーム画像候補としてm個抽出する。
カメラトラッキング装置1は、所定数mの適切なキーフレーム画像候補を選出できたか判定する(S26A)。適切なキーフレーム画像候補とは、入力画像Grに類似する画像である。
カメラトラッキング装置は、上位m個のキーフレームが持つ画像データD41(キーフレーム画像候補)の画像特徴量D43と入力画像Grの画像特徴量D2との距離が所定の閾値以下である場合、適切なキーフレーム画像候補が選出されたと判定する(S26:YES)。
これに対し、カメラトラッキング装置1は、画像特徴量D43と画像特徴量D2との距離が所定の閾値以上である場合、キーフレーム画像候補の選出に失敗したと判定する(S26A:NO)。選出失敗の場合は、新たな画像がカメラ14から入力されるのを待って(S27)、キーフレーム画像候補を再び選出する(S25A)。
カメラトラッキング装置1は、m個のキーフレーム画像候補の選出に成功すると(S26A:YES)、キーフレーム画像候補を表示部13に提示する(S28)。表示部13は、図14で述べたように、m個のキーフレーム画像候補を表示する。ユーザは、周囲を見回し、トラッキング対象に最も類似すると考えるキーフレーム画像候補を一つ選択して、キーフレーム画像とする(S29)。
このように構成される本実施例も第1実施例と同様の作用効果を奏する。
さらに本実施例では、カメラトラッキング装置1が自動的に抽出した複数のキーフレーム画像候補をユーザへ提示することで、ユーザがトラッキング対象に最も類似するキーフレーム画像を手動で選択するため、カメラトラッキングのロストから回復する可能性を第1実施例よりも高めることができる。
なお、上述のステップS25Aでは、入力画像Grの画像特徴量D2とキーフレームデータD4の特徴量D43との間の距離に基づいて、入力画像Grに類似したキーフレーム画像候補を複数選出する場合を述べたが、本実施例はこの方法に限定されない。
例えば、他の一つの方法として、カメラトラッキングがロストする直前のカメラ14の位置姿勢を用いる方法がある。この方法では、カメラの位置姿勢を推定するステップS21において、カメラ位置姿勢の推定精度を評価する。そして、カメラの位置姿勢の推定値と推定精度のログを記録しておく。これにより、カメラトラッキングがロストした場合(S22:NO)、そのログを用いて、ロスト直前でありかつ、推定精度が所定の閾値以上であるカメラの位置姿勢の推定値を求める。
なお、ステップS25Aでは、画像特徴量を用いた距離だけでなく、カメラの位置姿勢間の距離も加算することで、キーフレーム画像候補を選択してもよい。さらに、カメラトラッキングのロスト時だけでなく、カメラトラッキングの開始時(初期化時)においても、複数のキーフレーム画像候補をユーザに提示して選択させてもよい。
なお,ステップS25A,ステップS26Aではm個のキーフレーム画像候補の選出に成功することを判定の条件としていたが、1個以上のキーフレーム画像候補の選出に成功することを判定の条件とすることも可能である。この場合には,ユーザに提示するキーフレーム画像候補の数は選出されたキーフレーム画像となり,所定数m個が提示されるわけではない。
図16を用いて第4実施例を説明する。本実施例では、入力画像Grに類似するキーフレーム画像(所定のキーフレーム画像)Gvを選択する方法を複数用意し、状況に応じて切り替える。すなわち、本実施例では、最初はカメラトラッキング装置1により自動的に一つのキーフレーム画像を選択するが(S25)、自動的に選択したキーフレーム画像ではカメラトラッキングを開始できない場合に、キーフレーム画像候補を複数個ユーザへ提示し、その中からキーフレーム画像をユーザに選択させる(S35〜S37)。
図16のフローチャートを用いて、第4実施例によるリアルタイムのカメラトラッキング処理およびAR処理の実行方法を説明する。図16のフローチャートは、図11で述べたフローチャートと共通のステップS20〜S27,S30,S31,S33,S34を全て含んでいる。さらに、図16のフローチャートは、新規なステップS35〜S36を備えている。
最初は、第1実施例と同様に、カメラトラッキング装置1が入力画像Grに類似するキーフレーム画像を自動的に一つ選択して(S25,S26)、カメラの位置姿勢を推定する(S30,S31,S33)。
しかし、自動的に選択されたキーフレーム画像ではカメラの位置姿勢の推定に成功しない場合(S34:NO)、カメラトラッキング装置1は、第3実施例で述べた選択方法に切り替える。
カメラトラッキング装置1は、入力画像Grに類似するキーフレーム画像候補を所定数だけ抽出し(S35)、表示部13を介してユーザへ提示する(S36)。ユーザは、入力部12を使用して、提示された各キーフレーム画像候補の中からトラッキング対象に最も似ていると考えるキーフレーム画像候補を一つ選択する(S37)。カメラトラッキング装置1は、ユーザの選択したキーフレーム画像候補をキーフレーム画像として使用し、カメラの位置姿勢を推定する(S33)。
このように構成される本実施例も第1実施例と同様の作用効果を奏する。さらに本実施例では、最初はカメラトラッキング装置1がキーフレーム画像を自動的に選択してカメラの位置姿勢を推定し、カメラの位置姿勢の推定に失敗した場合には、キーフレーム画像候補を複数抽出してユーザへ提示し、ユーザにキーフレーム画像を選択させる。したがって、自動的なキーフレーム画像選択と手動によるキーフレーム画像選択とを状況に応じて切り替えることができ、ユーザの使い勝手がさらに向上する。
本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。上記実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることもできる。また、ある実施形態の構成に他の実施形態の構成を加えることもできる。また、各実施形態の構成の一部について、他の構成を追加・削除・置換することもできる。
上記各構成、機能、処理部、処理手段等は、それらの一部や全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、SSD(Solid State Drive)等の記録装置、ICカード、SDカード、DVD等の記録媒体に格納することができる。
なお、キーフレーム画像の選択方法としては、ロスト直前のカメラの位置姿勢に最も近いキーフレーム画像を選択する方法や、ジャイロセンサやコンパスなどのセンサからカメラ14の位置姿勢を推定し、その推定した位置姿勢に最も近いキーフレーム画像を選択する方法などが考えられる。これらの方法を採用するカメラトラッキング装置も、本発明の範囲に含まれる。