(57)【特許請求の範囲】
【請求項１】
第１のマップに定義された特徴点の３次元座標を示すマップ点の位置を基にして、仮想オブジェクトの位置を特定する特定部と、
前記第１のマップから、前記第１のマップと異なる第２のマップに切り替わった場合に、前記第２のマップに定義された複数のマップ点の位置とカメラの視線とを基にして、前記仮想オブジェクトの位置を補正する補正部と、
前記仮想オブジェクトの位置に基づいて、前記仮想オブジェクトを前記カメラの撮影面に重畳表示する表示部と
を有することを特徴とするオーサリング装置。
【請求項２】
前記補正部は、前記第２のマップに定義された複数のマップ点のうち、前記仮想オブジェクトに対応付けられたマップ点の位置周辺のマップ点に基づく近似平面と、前記視線との第１交点を算出し、前記仮想オブジェクトの位置を前記第１交点の位置に補正することを特徴とする請求項１に記載のオーサリング装置。
【請求項３】
前記補正部は、前記近似平面の法線と前記視線との角度が垂直に近い角度である場合には、前記近似平面の重心を通り、前記近似平面に垂直な平面と、前記視線との第２交点を算出し、前記仮想オブジェクトの位置を前記第２交点の位置に補正することを特徴とする請求項２に記載のオーサリング装置。
【請求項４】
前記補正部は、前記仮想オブジェクトの位置近辺における前記第１のマップのマップ点の位置と、前記仮想オブジェクトの位置近辺における前記第２のマップのマップ点の位置との誤差に基づいて、前記仮想オブジェクトの位置を補正するか否かを判定することを特徴とする請求項１〜３のいずれか一つに記載のオーサリング装置。
【請求項５】
前記補正部は、前記仮想オブジェクトの位置近辺における前記第１のマップのマップ点の密集度を基にして、前記仮想オブジェクトの位置を補正するか否かを判定することを特徴とする請求項１〜４のいずれか一つに記載のオーサリング装置。
【請求項６】
前記カメラに撮影された撮影画像からキーフレームを判定する判定部と、第１のキーフレームと、前記第１のキーフレームに続く第２のキーフレームとを基にして、前記第２のマップを生成するマップ補正部とを更に有することを特徴とする請求項１〜５のいずれか一つに記載のオーサリング装置。
【請求項７】
前記カメラに撮影された撮影画像からキーフレームを判定する判定部と、複数のキーフレームを基にして、バンドル調整により前記第２のマップを生成するマップ補正部とを更に有することを特徴とする請求項１〜５のいずれか一つに記載のオーサリング装置。
【請求項８】
前記カメラに撮影された撮影画像からキーフレームを判定する判定部と、第１のキーフレームと、前記第１のキーフレームに続く、キーフレーム以外のフレームとを基にして、前記第１のマップのマップ点の位置を微調整することで、前記第２のマップを生成するマップ補正部とを有することを特徴とする請求項１〜５のいずれか一つに記載のオーサリング装置。
【請求項９】
コンピュータが実行するオーサリング方法であって、
第１のマップに定義された特徴点の３次元座標を示すマップ点の位置を基にして、仮想オブジェクトの位置を特定し、
前記第１のマップから、前記第１のマップと異なる第２のマップに切り替わった場合に、前記第２のマップに定義された複数のマップ点の位置とカメラの視線とを基にして、前記仮想オブジェクトの位置を補正し、
前記仮想オブジェクトの位置に基づいて、前記仮想オブジェクトを前記カメラの撮影面に重畳表示する
処理を実行することを特徴とするオーサリング方法。
【請求項１０】
コンピュータに、
第１のマップに定義された特徴点の３次元座標を示すマップ点の位置を基にして、仮想オブジェクトの位置を特定し、
前記第１のマップから、前記第１のマップと異なる第２のマップに切り替わった場合に、前記第２のマップに定義された複数のマップ点の位置とカメラの視線とを基にして、前記仮想オブジェクトの位置を補正し、
前記仮想オブジェクトの位置に基づいて、前記仮想オブジェクトを前記カメラの撮影面に重畳表示する
処理を実行させることを特徴とするオーサリングプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オーサリング装置等に関する。
【背景技術】
【０００２】
遠隔地のオペレータが、現場の作業者等を支援することを目的として、ＡＲ（Augmented  Reality）技術が用いられる。ＡＲ技術は、作業員が用いる端末の画面に、カメラの画像と、オペレータによって選択された仮想オブジェクトとを重畳表示するものである。例えば、カメラの画像に注意対象となる物体が映し出された場合に、オペレータは、注意対象となる物体に、注目を促す仮想オブジェクトを配置して重畳表示させ、作業員は、かかる仮想オブジェクトを参照することで、注意すべき物体を判別することができる。以下において、仮想オブジェクトを重畳表示する従来技術の一例として、従来技術１、２について説明する。
【０００３】
従来技術１には、対象物の形状を特定し、利用者に対象物が指定されると、指定された対象物の形状に合わせて、仮想オブジェクトを配置する技術が開示されている。また、従来技術２には、利用者がタッチした画面の位置に仮想オブジェクトを配置し、仮想オブジェクトの３次元座標が、視線上に存在すると仮定する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−００８６８７号公報
【特許文献２】特開２００９−１１０３０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、カメラの位置が移動した場合に、仮想オブジェクトの表示位置に発生するズレを抑止することができないという問題がある。
【０００６】
図２２は、従来技術の問題点を説明するための図である。図２２において、画像１０ａは、カメラにより撮影された画像であり、画像１０ｂは、画像１０ａが撮影された後に、画像１０ａを撮影したカメラの位置とは異なる位置において撮影された画像である。
【０００７】
例えば、オペレータ等が、画像１０ａの対象物１１の端を指定すると、対象物１１と仮想オブジェクト１２との対応付けがなされ、仮想オブジェクト１２が指定された位置に重畳表示される。しかし、カメラ位置が移動し、画像１０ｂが表示されると、オペレータの意図した位置とは異なる位置に、仮想オブジェクト１２がずれた状態で、重畳表示されてしまう。
【０００８】
１つの側面では、本発明は、仮想オブジェクトの表示位置に発生するズレを抑止することができるオーサリング装置、オーサリング方法およびオーサリングプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
第１の案では、オーサリング装置は、特定部と、補正部と、表示部とを有する。特定部は、第１のマップに定義された特徴点の３次元座標を示すマップ点の位置を基にして、仮想オブジェクトの位置を特定する。補正部は、第１のマップから、第１のマップと異なる第２のマップに切り替わった場合に、第２のマップに定義された複数のマップ点の位置とカメラの視線とを基にして、仮想オブジェクトの位置を補正する。表示部は、仮想オブジェクトの位置に基づいて、仮想オブジェクトをカメラの撮影面に重畳表示する。
【発明の効果】
【００１０】
仮想オブジェクトの表示位置に発生するズレを抑止することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施例１に係るオーサリング装置の構成を示す機能ブロック図である。
【図２】図２は、キーフレーム情報のデータ構造の一例を示す図である。
【図３】図３は、カメラの座標系の定義を説明するための図である。
【図４】図４は、マップ情報のデータ構造の一例を示す図である。
【図５】図５は、マッチング処理を説明するための図である。
【図６】図６は、初期のマップ情報を生成する処理を説明するための図である。
【図７】図７は、マップ補正部の処理を説明するための図である。
【図８】図８は、本実施例１に係る補正部の処理を説明するための図である。
【図９】図９は、仮想オブジェクト情報のデータ構造の一例を示す図である。
【図１０】図１０は、本実施例１に係るオーサリング装置の処理手順を示すフローチャートである。
【図１１】図１１は、本実施例２に係るオーサリング装置の構成を示す図である。
【図１２】図１２は、近似平面を特定する処理の処理手順を示すフローチャートである。
【図１３】図１３は、近似平面の一例を示す図である。
【図１４】図１４は、本実施例２に係る補正部が仮想オブジェクトの３次元座標を算出する処理の一例を示す図である。
【図１５】図１５は、本実施例３に係るオーサリング装置の構成を示す図である。
【図１６】図１６は、近似平面の法線と視線とのなす角度が直角に近い場合の仮想オブジェクトの誤差範囲を説明するための図である。
【図１７】図１７は、本実施例３に係る補正部の処理を説明するための図である。
【図１８】図１８は、本実施例３に係る補正部の処理手順を示すフローチャートである。
【図１９】図１９は、本実施例４に係るオーサリング装置の構成を示す図である。
【図２０】図２０は、本実施例４に係るオーサリング装置の処理手順を示すフローチャートである。
【図２１】図２１は、オーサリング装置のハードウェア構成の一例を示す図である。
【図２２】図２２は、従来技術の問題点を説明するための図である。
【発明を実施するための形態】
【００１２】
以下に、本願の開示するオーサリング装置、オーサリング方法およびオーサリングプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００１３】
図１は、本実施例１に係るオーサリング装置の構成を示す機能ブロック図である。図１に示すように、オーサリング装置１００は、カメラ５０に接続される。オーサリング装置１００は、インタフェース部１１０と、記憶部１２０と、制御部１３０とを有する。
【００１４】
カメラ５０は、撮影範囲の画像を撮影し、撮影した画像のデータを、オーサリング装置１００に出力する装置である。以下の説明では、カメラ５０が撮影した画像のデータを、画像データと表記する。例えば、画像を撮影する度に、画像データをオーサリング装置１００に出力する。また、カメラ５０は、ネットワーク等を介して、図示しないオペレータの端末装置に画像データを送信する。
【００１５】
インタフェース部１１０は、カメラ５０に接続される。インタフェース部１１０は、カメラ５０から画像データを取得する度に、取得した画像データを、制御部１３０に出力する。図示を省略するが、インタフェース部１１０は、入力装置、表示装置に接続されている。また、インタフェース部１１０は、ネットワークを介して、オペレータの端末装置とデータ通信を実行しても良い。
【００１６】
記憶部１２０は、キーフレーム情報１２１と、マップ情報１２２と、位置姿勢情報１２３と、仮想オブジェクト情報１２４とを有する。記憶部１２０は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子、またはハードディスク、光ディスクなどの記憶装置に対応する。
【００１７】
キーフレーム情報１２１は、キーフレームを撮影した時点のカメラ５０の位置姿勢の情報と、キーフレームに含まれる特徴点の情報を有する。ここで、キーフレームは、カメラ５０に撮影された所定の条件を満たす画像データである。
【００１８】
図２は、キーフレーム情報のデータ構造の一例を示す図である。図２に示すように、このキーフレーム情報１２１は、キーフレーム番号と、カメラ位置姿勢と、カメラ画像と、特徴点群と、マップ点ＩＤとを有する。キーフレーム番号は、キーフレームを一意に識別する番号である。カメラ位置姿勢は、カメラ５０の位置姿勢を示す情報である。
【００１９】
図３は、カメラの座標系の定義を説明するための図である。カメラ５０の光軸方向をＺ軸、Ｚ軸に垂直な方向をＸ軸、Ｙ軸とし、座標系の原点を０とする。カメラの位置姿勢は、座標系の原点０からの並進成分Ｔ（Ｔｘ、Ｔｙ、Ｔｚ）と、回転成分Ｒ（Ｒｘ、Ｒｙ、Ｒｚ）の６次元からなる。図２に示すカメラ位置姿勢の値は、それぞれ、Ｔｘ、Ｔｙ、Ｔｚ、Ｒｘ、Ｒｙ、Ｒｚに対応する。
【００２０】
図２の説明に戻る。カメラ画像は、キーフレームと判定された画像データである。特徴点群は、キーフレームに含まれる各特徴点の座標を示す。マップ点ＩＤ（Identification）は、特徴点群の各特徴点に対応するマップ点を一意に識別する情報である。マップ点は、特徴点の３次元座標に対応するものであり、後述するマップ情報１２２によって定義される。例えば、マップ点は、図３に示したＳ１〜Ｓ６に対応する。なお、マップ点は、Ｓ１〜Ｓ６に限定されるものではない。
【００２１】
マップ情報１２２は、マップ点に関する情報を保持する。図４は、マップ情報のデータ構造の一例を示す図である。図４に示すように、このマップ情報１２２は、マップ点ＩＤと、Ｘ軸の座標、Ｙ軸の座標、Ｚ軸の座標と、特徴量とを対応付ける。マップ点ＩＤは、マップ点を一意に識別する情報である。Ｘ軸の座標、Ｙ軸の座標、Ｚ軸の座標は、マップ点の３次元座標に対応する。特徴量は、マップ点に対応するキーフレーム上の特徴点の周辺の画素値を所定の順番で並べたものである。
【００２２】
図１の説明に戻る。位置姿勢情報１２３は、例えば、現在のカメラ５０の位置姿勢の情報を示す。カメラ５０の位置姿勢は、並進成分Ｔ（Ｔｘ、Ｔｙ、Ｔｚ）と、回転成分Ｒ（Ｒｘ、Ｒｙ、Ｒｚ）の６次元からなる。なお、位置姿勢情報１２３は、時刻と、係る時刻におけるカメラ５０の位置姿勢とを対応付けた情報でも良い。
【００２３】
仮想オブジェクト情報１２４は、オペレータによって配置される仮想オブジェクトの３次元座標の情報を保持するものである。また、仮想オブジェクト情報１２４には、仮想オブジェクトに対応する画像の情報を有していても良い。仮想オブジェクト情報１２４のデータ構造の説明は後述する。
【００２４】
制御部１３０は、位置姿勢推定部１３１と、キーフレーム判定部１３２と、マップ生成部１３３と、マップ補正部１３４と、特定部１３５と、補正部１３６と、表示部１３７とを有する。制御部１３０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）や、ＦＰＧＡ（Field  Programmable  Gate  Array）などの集積装置に対応する。また、制御部１３０は、例えば、ＣＰＵやＭＰＵ（Micro  Processing  Unit）等の電子回路に対応する。
【００２５】
位置姿勢推定部１３１は、カメラ５０の位置姿勢を推定する処理部である。位置姿勢推定部１３１は、推定した位置姿勢の情報を、位置姿勢情報１２３に登録する。例えば、位置姿勢推定部１３１は、下記に説明する特徴点検出処理、マッチング処理、位置姿勢推定処理を順に実行する。
【００２６】
位置姿勢推定部１３１が実行する特徴点検出処理の一例について説明する。位置姿勢推定部１３１は、着目点の近傍での濃淡変動が大きく、濃淡変動によって着目点の画像上の位置が一意に規定されることを基準として、画像データから特徴点を検出する。特徴点は、対象物の角に対応する場合が多い。
【００２７】
位置姿勢推定部１３１が実行するマッチング処理の一例について説明する。位置姿勢推定部１３１は、画像データの特徴点と、マップ情報１２２のマップ点を画像データに投影した投影点とをマッチングする処理部である。
【００２８】
図５は、マッチング処理を説明するための図である。図５に示すように、マップ点Ｓ１〜Ｓ６が存在するものとする。あるマップ点Ｓｉは、世界座標系で、式（１）によって示される。画像データ２０上には、特徴点ｘ１〜ｘ６が存在するものとする。ある特徴点ｘｉは、カメラ座標系で、式（２）によって示される。画像データ２０上に投影したマップ点を、投影点ｘ１’〜ｘ６’とする。ある投影点ｘｉ’は、カメラ座標系で、式（３）によって示される。
【００２９】
Ｓｉ＝（ｘ，ｙ，ｚ）・・・（１）
【００３０】
ｘｉ＝（ｕ，ｖ）・・・（２）
【００３１】
ｘｉ’＝（ｕ’，ｖ’）・・・（３）
【００３２】
図５において、例えば、特徴点ｘ１と、投影点ｘ１’との距離が近く、画像的な特徴が類似しているとすると、位置姿勢推定部１３１は、特徴点ｘ１と、マップ点Ｓ１とをペアとする、特徴点−マップ点ペア情報を生成する。位置姿勢推定部１３１は、他の特徴点、他の投影点についても上記処理を繰り返し実行することで、特徴点と、マップ点とのペアを判定し、特徴点−マップ点ペア情報に追加していく。
【００３３】
位置姿勢推定部１３１が実行する位置姿勢推定処理の一例について説明する。位置姿勢推定部１３１は、式（４）に基づいて、ペアとなった特徴点ｘｉと、マップ点の投影点ｘｉ’との差分の和Ｅが最小となるようなカメラ５０の並進成分Ｔ、回転成分Ｒを探索し、カメラ５０の位置姿勢を算出する。上記のように、カメラ５０の並進成分ＴはＴ（Ｔｘ、Ｔｙ、Ｔｚ）となり、カメラ５０の回転成分ＲはＲ（Ｒｘ、Ｒｙ、Ｒｚ）となる。
【００３４】
【数１】
0006701930.tif 000002
【００３５】
キーフレーム判定部１３２は、カメラ５０によって撮影された画像データが、マップ情報１２２の生成に使用する条件を満たしているキーフレームであるか否かを判定する処理部である。キーフレーム判定部１３２は、後述する第１キーフレーム判定処理または第２キーフレーム判定処理を実行する。キーフレーム判定部１３２は、判定部の一例である。
【００３６】
第１キーフレーム判定処理について説明する。キーフレーム判定部１３２は、位置姿勢推定部１３１がカメラ５０の位置姿勢を推定する前の段階において、第１キーフレーム判定処理を行う。キーフレーム判定部１３２は、インタフェース部１１０から、画像データを取得し、一つ前の画像データと現在の画像データを比較して、カメラ５０の動きが少ないか否かを判定する。キーフレーム判定部１３２は、カメラ５０の動きが少ない場合に、現在の画像データが、キーフレームであると判定する。
【００３７】
キーフレーム判定部１３２は、オプティカルフローによる移動追跡や、パターンマッチングによる位置合わせなどを実行して、カメラ５０の動きが小さいか否かを判定する。例えば、キーフレーム判定部１３２は、一つ前の画像データに存在する対象物の位置と、現在の画像データに存在する対象物の位置との差が閾値未満である場合に、カメラ５０の動きが少ないと判定する。
【００３８】
第２キーフレーム判定処理について説明する。キーフレーム判定部１３２は、位置姿勢推定部１３１がカメラ５０の位置姿勢を推定した後の段階において、第２キーフレーム判定処理を行う。キーフレーム判定部１３２は、ある時刻ｔｎにおける画像データを撮影したカメラ５０の位置の情報Ｔｔを、位置姿勢情報１２３から取得する。また、キーフレーム判定部１３２は、前回のキーフレームを撮影したカメラ５０の位置姿勢の情報Ｔｋｆを、キーフレーム情報１２１から取得する。
【００３９】
キーフレーム判定部１３２は、位置の情報Ｔｔと、位置姿勢の情報Ｔｋｆとを比較し、位置の情報Ｔｔと、位置姿勢の情報Ｔｋｆとの距離が閾値以上である場合に、時刻ｔｎにおける画像データを、キーフレームとして判定する。キーフレーム判定部１３２は、キーフレームの情報を、キーフレーム情報１２１に登録する。
【００４０】
マップ生成部１３３は、初期のマップ情報１２２を生成する処理部である。例えば、マップ生成部１３３は、単一のキーフレームに存在する特徴点の位置に基づいて、カメラ５０から基準距離離れた平面上にマップ点を配置することで、初期のマップ情報１２２を生成する。
【００４１】
図６は、初期のマップ情報を生成する処理を説明するための図である。図６は、世界座標のＹ軸方向から見た模式図である。マップ生成部１３３は、画像データの中心を原点にし、画像データの水平方向をＸ軸、垂直方向をＹ軸、原点からカメラ５０の撮影方向５０ｂをＺ軸とする世界座標系を規定する。図６に示す例では、カメラ５０の撮影方向５０ｂと、Ｘ軸との交点が世界座標系の原点となる。
【００４２】
原点からカメラ５０までのｚ軸の距離を、予め定めておいた基準距離Ｌ０に固定する。世界座標系におけるカメラ５０の並進成分Ｔを（０，０，Ｌ０）とし、回転成分Ｒを単位行列とする。
【００４３】
図６では一例として、カメラ５０の撮影面５０ａ上に、特徴点ｘ１〜ｘ７が検出されたものとする。マップ生成部１３３は、カメラ５０と特徴点ｘｉとを通る直線を定義し、定義した直線とＺ軸に垂直なＸＹ平面６０との交点に、マップ点が存在すると仮定して、マップ点の位置を特定する。例えば、マップ生成部１３３は、カメラ５０と特徴点ｘｉとを通る直線と、ＸＹ平面６０との交点にマップ点Ｓ１が存在すると仮定する。
【００４４】
マップ生成部１３３は、上記処理を実行することで、特徴点ｘ１〜ｘ７に対応するマップ点Ｓ１〜Ｓ７を特定する。マップ生成部１３３が特定した各マップ点のＺ座標の値は全て０となる。マップ生成部１３３は、各マップ点にマップ点ＩＤを付与し、マップ点ＩＤ、Ｘ軸の座標、Ｙ軸の座標、Ｚ軸の座標と、特徴量とを対応付けて、マップ情報１２２に登録する。各マップ点のＺ座標の値が全て０となるマップ情報１２２を適宜、平面マップと表記する。
【００４５】
また、マップ生成部１３３は、マップ情報１２２のマップ点と、キーフレームとの関係に基づいて、マップ点ＩＤの情報を、キーフレーム情報１２１に登録する。
【００４６】
マップ補正部１３４は、カメラ５０の位置姿勢が既知の２視点を得ることで、各マップ点の正しい３次元座標を計算することで、マップ情報１２２を補正する処理部である。マップ補正部１３４がマップ情報１２２を補正することで、初期に生成された平面マップが立体マップとなる。
【００４７】
図７は、マップ補正部の処理を説明するための図である。説明の便宜上、並進成分Ｔ０（０，０，Ｌ０）、回転成分Ｒ０（単位行列）となるカメラ５０の位置をＣａとする。カメラ５０が移動し、並進成分Ｔｔ（Ｔｘｔ，Ｔｙｔ，Ｔｚｔ）、回転成分Ｒｔとなるカメラ５０の位置をＣｂと表記する。上述したように、マップ生成部１３３によって、並進成分Ｔ０（０，０，Ｌ０）、回転成分Ｒ０（単位行列）の位置姿勢のカメラ５０で撮影されたキーフレームに基づき、マップ点Ｓ１〜Ｓ７が特定され、平面マップが生成される。
【００４８】
ここで、並進成分Ｔｔ（Ｔｘｔ，Ｔｙｔ，Ｔｚｔ）、回転成分Ｒｔの位置姿勢のカメラ５０で撮影された撮影面（キーフレーム）５０ｂ上に、特徴点ｘ１〜ｘ７が検出されたものとする。マップ補正部１３４は、撮影位置を変えた２枚の画像データ中の特徴点で同じものを対応付ける。例えば、マップ補正部１３４は、撮影面５０ａの特徴点ｘ１〜ｘ７と、撮影面５０ｂの特徴点ｘ１〜ｘ７とをそれぞれ対応付ける。
【００４９】
マップ補正部１３４は、特徴点の対応付けを行った後に、ステレオ撮影の原理に基づいて、マップ点の正しい３次元座標を算出することで、各マップ点の位置を補正する。図７に示す例では、マップ点Ｓ１〜Ｓ７の３次元座標は、それぞれＳ１’〜Ｓ７’に補正される。マップ補正部１３４は、補正後のマップ点の３次元座標によって、マップ情報１２２を更新する。マップ補正部１３４によってマップ点の３次元座標が補正されることで、平面マップは、立体マップとなる。
【００５０】
マップ補正部１３４は、上述したキーフレーム判定部１３２により、２回目以降、画像データがキーフレームと判定される度に、上記の処理を繰り返し実行することで、マップ情報１２２のマップ点の３次元座標（Ｘ軸の座標、Ｙ軸の座標、Ｚ軸の座標）を更新する。
【００５１】
なお、マップ補正部１３４が、マップ点の３次元座標を算出する処理は、上記の処理に限定されず、どのような周知技術によって、マップ点の３次元座標を算出しても良い。例えば、マップ補正部１３４は、文献（R.I.Hartley  et  al.,Triangulation,Computer  Vision  and  Image  Understanding,  Vol.68,No.2,pp.146-157,1997.）に基づいて、マップ点の３次元座標を算出しても良い。
【００５２】
特定部１３５は、オペレータ等によって、画像データ上の仮想オブジェクトの２次元座標（ｕＯ、ｖＯ）が指定された場合に、仮想オブジェクトの初期の３次元座標を特定する処理部である。特定部１３５は、特定した仮想オブジェクトの３次元座標の情報を、仮想オブジェクト情報１２４として登録する。
【００５３】
なお、オペレータが操作する端末装置は、ネットワーク等を介してカメラ５０から画像データを受信して、表示装置に表示する。オペレータは、端末装置に表示される画像データを参照して、仮想オブジェクトを配置する２次元座標を、端末装置に入力する。特定部１３５は、かかる端末装置から、仮想オブジェクトの２次元座標を受信する。
【００５４】
特定部１３５が、仮想オブジェクトの初期の３次元座標を特定する処理の一例について説明する。特定部１３５は、マップ情報１２２に基づいて、マップ点を画像データ上に投影することで、各マップ点の投影点の座標（ｕ’，ｖ’）を算出する。特定部１３５は、仮想オブジェクトの２次元座標（ｕＯ、ｖＯ）と、各投影点の座標（ｕ’，ｖ’）とを比較し、２次元座標（ｕＯ、ｖＯ）との距離が最小となる投影点を特定する。
【００５５】
特定部１３５は、特定した投影点に対応するマップ点の３次元座標を、仮想オブジェクトの初期の３次元座標として特定する。例えば、仮想オブジェクトの２次元座標（ｕＯ、ｖＯ）と、各投影点の座標（ｕ’，ｖ’）とを比較し、２次元座標（ｕＯ、ｖＯ）との距離が最小となる投影点が、マップ点Ｓ１を画像データ上に投影した投影点であるとする。この場合には、特定部１３５は、仮想オブジェクトの３次元座標を、マップ点Ｓ１の３次元座標として特定する。
【００５６】
補正部１３６は、マップ情報１２２が、平面マップから立体マップに切り替わった場合に、仮想オブジェクトの３次元座標を補正する処理部である。図８は、本実施例１に係る補正部の処理を説明するための図である。図８に示す例では、カメラ５０の位置と、仮想オブジェクト５ａの位置とを結んだ線を、視線６とする。仮想オブジェクト５ａは、平面マップに含まれるマップ点Ｓ３に対応付けられているものとする。
【００５７】
補正部１３６は、マップ情報１２２が、平面マップから立体マップに切り替わった場合に、立体マップに含まれる各マップ点Ｓ１’〜Ｓ８’の重心ＳＧを計算する。補正部１３６は、重心ＳＧから視線６に下した垂線５ｃの足Ａの３次元座標を、仮想オブジェクト５ａの補正後の３次元座標として算出する。補正部１３６は、算出した仮想オブジェクト５ａの３次元座標（足Ａの３次元座標）によって、仮想オブジェクト情報１２４を更新する。
【００５８】
図９は、仮想オブジェクト情報のデータ構造の一例を示す図である。図９に示すように、仮想オブジェクト情報１２４は、オブジェクト番号と、ＣＧ画像と、補正前座標と、補正後座標とを対応付ける。オブジェクト番号は、仮想オブジェクトを一意に識別する情報である。ＣＧ（Computer  Graphics）画像は、仮想オブジェクトの画像の情報である。補正前座標は、特定部１３５によって、特定される仮想オブジェクトの初期の３次元座標である。補正後座標は、補正部１３６によって補正された補正後の仮想オブジェクトの３次元座標である。
【００５９】
表示部１３７は、仮想オブジェクト情報１２４および位置姿勢情報１２３に基づいて、仮想オブジェクトの３次元座標を、画像データ上の２次元座標に変換し、変換した２次元座標に仮想オブジェクトを画像データ上に配置することで重畳画像データを生成する。表示部１３７は、重畳画像データをディスプレイ等の表示装置に表示させる。
【００６０】
表示部１３７は、補正後座標が登録されている場合には、補正後座標に基づいて、２次元座標を算出する。表示部１３７は、補正後座標が登録されていない場合には、補正前画像に基づいて、２次元座標を算出する。
【００６１】
続いて、本実施例１に係るオーサリング装置１００の処理手順の一例について説明する。図１０は、本実施例１に係るオーサリング装置の処理手順を示すフローチャートである。図１０に示すように、オーサリング装置１００は、カメラ５０から画像データを取得する（ステップＳ１０１）。
【００６２】
オーサリング装置１００は、マップ情報１２２を生成済みであるか否かを判定する（ステップＳ１０２）。オーサリング装置１００は、マップ情報を生成済みでない場合には（ステップＳ１０２，Ｎｏ）、オーサリング装置１００のキーフレーム判定部１３２は、第１キーフレーム判定処理を実行する（ステップＳ１０３）。
【００６３】
キーフレーム判定部１３２は、画像データが第１キーフレームとして適正か否かを判定する（ステップＳ１０４）。キーフレーム判定部１３２は、画像データが第１キーフレームとして適正でない場合には（ステップＳ１０４，Ｎｏ）、ステップＳ１０１に移行する。一方、キーフレーム判定部１３２は、画像データが第１キーフレームとして適正である場合には（ステップＳ１０４，Ｙｅｓ）、ステップＳ１０５に移行する。
【００６４】
オーサリング装置１００のマップ生成部１３３は、マップ情報１２２を生成する（ステップＳ１０５）。オーサリング装置１００の特定部１３５が、仮想オブジェクトの座標を特定し、表示部１３７が仮想オブジェクトを配置し（ステップＳ１０６）、仮想オブジェクトを表示する（ステップＳ１０７）。
【００６５】
オーサリング装置１００は、処理を継続する場合には（ステップＳ１０８，Ｙｅｓ）、ステップＳ１０１に移行する。一方、オーサリング装置１００は、処理を継続しない場合には（ステップＳ１０８，Ｎｏ）、処理を終了する。
【００６６】
図１０のステップＳ１０２の説明に戻る。オーサリング装置１００は、マップ情報１２２を生成済みの場合には（ステップＳ１０２，Ｙｅｓ）、ステップＳ１０９に移行する。オーサリング装置１００の位置姿勢推定部１３１は、カメラ５０の位置姿勢を推定する（ステップＳ１０９）。
【００６７】
位置姿勢推定部１３１は、位置姿勢の推定に成功していない場合には（ステップＳ１１０，Ｎｏ）、ステップＳ１０１に移行する。位置姿勢推定部１３１は、位置姿勢の推定に成功した場合には（ステップＳ１１０，Ｙｅｓ）、ステップＳ１１１に移行する。
【００６８】
オーサリング装置１００のキーフレーム判定部１３２は、第２キーフレーム判定処理を実行する（ステップＳ１１１）。キーフレーム判定部１３２は、画像データが第２キーフレームとして適正でない場合には（ステップＳ１１２，Ｎｏ）、ステップＳ１０７に移行する。一方、キーフレーム判定部１３２は、画像データが第２キーフレームとして適正である場合には（ステップＳ１１２，Ｙｅｓ）、ステップＳ１１３に移行する。
【００６９】
オーサリング装置１００のマップ補正部１３４は、マップ情報１２２を補正する（ステップＳ１１３）。オーサリング装置１００の補正部１３６は、仮想オブジェクトの座標を補正し（ステップＳ１１４）、ステップＳ１０７に移行する。
【００７０】
次に、本実施例１に係るオーサリング装置１００の効果について説明する。オーサリング装置１００は、マップ情報１２２のマップが平面マップから立体マップに切り替わった場合に、立体マップを基にして、仮想オブジェクトの座標を補正する。例えば、オーサリング装置１００の補正部１３６は、立体マップに含まれる各マップ点Ｓ１’〜Ｓ８’の重心ＳＧを計算し、重心ＳＧから視線６に下した垂線５ｃの足Ａの３次元座標を、仮想オブジェクトの補正後の３次元座標として算出する。
【００７１】
例えば、カメラ５０が移動することにより、立体マップが生成されると、平面マップから立体マップに切り替わる。この切り替わりにあわせて、補正部１３６により、仮想オブジェクトの３次元座標に発生する位置ずれが適切な位置に補正されるので、仮想オブジェクトの表示位置のずれを抑止することができる。
【実施例２】
【００７２】
図１１は、本実施例２に係るオーサリング装置の構成を示す図である。図１１に示すように、このオーサリング装置２００は、カメラ５０に接続される。オーサリング装置２００は、インタフェース部１１０と、記憶部１２０と、制御部２１０とを有する。
【００７３】
カメラ５０に関する説明は、実施例１で説明したカメラ５０に関する説明と同様である。また、インタフェース部１１０、記憶部１２０に関する説明は、実施例１で説明したインタフェース部１１０、記憶部１２０に関する説明と同様である。
【００７４】
制御部２１０は、位置姿勢推定部１３１と、キーフレーム判定部１３２と、マップ生成部１３３と、マップ補正部１３４と、特定部１３５と、補正部２１１と、表示部１３７とを有する。制御部２１０は、例えば、ＡＳＩＣや、ＦＰＧＡなどの集積装置に対応する。また、制御部２１０は、例えば、ＣＰＵやＭＰＵ等の電子回路に対応する。
【００７５】
制御部２１０に含まれる各処理部のうち、位置姿勢推定部１３１、キーフレーム判定部１３２、マップ生成部１３３、マップ補正部１３４、特定部１３５、表示部１３７に関する説明は、実施例１で説明したものと同様である。
【００７６】
補正部２１１は、マップ情報１２２が、平面マップから立体マップに切り替わった場合
に、立体マップに含まれる各マップ点Ｓ１’〜Ｓ８’の近似平面を算出し、近似平面と、視線との交点座標を、仮想オブジェクトの３次元座標として算出する。補正部２１１は、算出した仮想オブジェクトの３次元座標によって、仮想オブジェクト情報１２４を更新する。以下において、補正部２１１が近似平面を特定する処理と、仮想オブジェクトの３次元座標を算出する処理について説明する。
【００７７】
図１２は、近似平面を特定する処理の処理手順を示すフローチャートである。図１２に示すように、補正部２１１は、仮想オブジェクトの配置位置から画像データ上で近傍にあるマップ点をＮ１個抽出する（ステップＳ１０）。補正部２１１は、Ｎ１個からランダムに選んだ３点からなる平面と、残りのマップ点との距離の和を算出する（ステップＳ１１）。
【００７８】
補正部２１１は、Ｉ回繰り返したか否かを判定する（ステップＳ１２）。補正部２１１は、Ｉ回繰り返していない場合には（ステップＳ１２，Ｎｏ）、ステップＳ１１に移行する。補正部２１１は、Ｉ回繰り返した場合には（ステップＳ１２，Ｙｅｓ）、距離和が最小となる平面の３点を使って平面を構成する（ステップＳ１３）。
【００７９】
補正部２１１は、平面との距離＜Ｔｈとなるマップ点を抽出する（ステップＳ１４）。ステップＳ１４で抽出したマップ点をInlier点と表記し、Inlier点以外のマップ点をOutlier点と表記する。補正部２１１は、Inlier点を主成分分析して平面近似することで、近似平面を特定する（ステップＳ１５）。
【００８０】
図１３は、近似平面の一例を示す図である。図１３において、網掛けのマップ点は、Outlier点である。網掛けでないマップ点は、Inlier点である。近似平面３０は、補正部２１１が主成分分析することで得られる平面である。例えば、補正部２１１は、主成分分析により、第１成分、第２成分をベクトルとして算出し、第１成分および第２成分によって得られる平面で、近傍マップ点の重心を通る平面を近似平面３０とする。
【００８１】
続いて、補正部２１１が仮想オブジェクトの３次元座標を算出する処理の一例について説明する。図１４は、本実施例２に係る補正部が仮想オブジェクトの３次元座標を算出する処理の一例を示す図である。図１４において、近似平面３０は、図１２の処理により求められる近似平面である。重心３０ａは、近似平面の重心である。視線６は、カメラ５０の３次元座標と、補正前の仮想オブジェクトの３次元座標とを結んだ線である。
【００８２】
補正部２１１は、近似平面３０と、視線６との交点３１を、仮想オブジェクトの補正後の３次元座標として算出する。なお、マップ点の周囲の構造によっては、仮想オブジェクトの配置位置にずれが生じる場合がある。例えば、誤差範囲は範囲３０ｂとなる。
【００８３】
次に、本実施例２に係るオーサリング装置２００の効果について説明する。オーサリング装置２００は、マップ情報１２２のマップが平面マップから立体マップに切り替わった場合に、立体マップを基にして、仮想オブジェクトの座標を補正する。例えば、オーサリング装置２００の補正部２１１は、立体マップに含まれる各マップ点Ｓ１’〜Ｓ８’の近似平面を算出し、近似平面と、視線との交点座標を、仮想オブジェクトの３次元座標として算出する。
【００８４】
例えば、カメラ５０が移動することにより、立体マップが生成されると、平面マップから立体マップに切り替わる。この切り替わりにあわせて、補正部２１１により、仮想オブジェクトの３次元座標に発生する位置ずれが適切な位置に補正されるので、仮想オブジェクトの表示位置のずれを抑止することができる。
【実施例３】
【００８５】
図１５は、本実施例３に係るオーサリング装置の構成を示す図である。図１５に示すように、このオーサリング装置３００は、カメラ５０に接続される。オーサリング装置３００は、インタフェース部１１０と、記憶部１２０と、制御部３１０とを有する。
【００８６】
カメラ５０に関する説明は、実施例１で説明したカメラ５０に関する説明と同様である。また、インタフェース部１１０、記憶部１２０に関する説明は、実施例１で説明したインタフェース部１１０、記憶部１２０に関する説明と同様である。
【００８７】
制御部３１０は、位置姿勢推定部１３１と、キーフレーム判定部１３２と、マップ生成部１３３と、マップ補正部１３４と、特定部１３５と、補正部２１１と、表示部１３７とを有する。制御部３１０は、例えば、ＡＳＩＣや、ＦＰＧＡなどの集積装置に対応する。また、制御部３１０は、例えば、ＣＰＵやＭＰＵ等の電子回路に対応する。
【００８８】
制御部３１０に含まれる各処理部のうち、位置姿勢推定部１３１、キーフレーム判定部１３２、マップ生成部１３３、マップ補正部１３４、特定部１３５、表示部１３７に関する説明は、実施例１で説明したものと同様である。
【００８９】
補正部３１１は、マップ情報１２２が、平面マップから立体マップに切り替わった場合に、立体マップに含まれる各マップ点Ｓ１’〜Ｓ８’の近似平面を算出する。ここで、補正部３１１は、近似平面の法線と視線とのなす角度が、直角に近いか否かに応じて、仮想オブジェクトの３次元座標を算出する処理を切り替える。補正部３１１は、例えば、近似平面の法線および視線のなす角度と、８０°との差分の絶対値が所定の角度未満である場合に、近似平面の法線と視線とのなす角度が、直角に近いと判定する。
【００９０】
近似平面の法線と視線とのなす角度が、直角に近くない場合の補正部３１１の処理について説明する。この場合には、補正部３１１は、実施例２で説明した補正部２１１と同様の処理を実行することで、仮想オブジェクトの３次元座標を算出する。すなわち、補正部３１１は、近似平面と、視線との交点座標を、仮想オブジェクトの３次元座標として算出する。
【００９１】
続いて、近似平面の法線と視線とのなす角度が、直角に近い場合の補正部３１１の処理について説明する。まず、近似平面の法線と視線とのなす角度が、直角に近い場合の仮想オブジェクトの誤差範囲について説明する。図１６は、近似平面の法線と視線とのなす角度が直角に近い場合の仮想オブジェクトの誤差範囲を説明するための図である。図１６に示すように、近似平面３０の法線と視線６とのなす角度が、直角に近いと、誤差範囲３０ｄが図１４で説明した誤差範囲３０ｂと比較して拡大する。このため、仮に、視線６と近似平面３０との交点３６を、仮想オブジェクトの３次元座標として特定すると、適切な３次元座標との間に乖離が発生する場合がある。補正部３１１は、仮想オブジェクトの３次元座標を適切に求めるべく、下記の処理を行う。
【００９２】
図１７は、本実施例３に係る補正部の処理を説明するための図である。補正部３１１は、近似平面３０の重心３０ａを通り近似平面３０に垂直な垂直平面３５を特定する。補正部３１１は、特定した垂直平面３５と、視線６との交点３７を、仮想オブジェクトの３次元座標として特定する。
【００９３】
次に、本実施例３に係る補正部３１１の処理手順の一例について説明する。図１８は、本実施例３に係る補正部の処理手順を示すフローチャートである。図１８に示すように、補正部３１１は、仮想オブジェクトの配置位置から画像データ上で近傍にあるマップ点をＮ１個抽出する（ステップＳ２０）。補正部３１１は、Ｎ１個からランダムに選んだ３点からなる平面と、残りのマップ点との距離の和を算出する（ステップＳ２１）。
【００９４】
補正部３１１は、Ｉ回繰り返したか否かを判定する（ステップＳ２２）。補正部３１１は、Ｉ回繰り返していない場合には（ステップＳ２２，Ｎｏ）、ステップＳ２１に移行する。補正部３１１は、Ｉ回繰り返した場合には（ステップＳ２２，Ｙｅｓ）、距離和が最小となる平面の３点を使って平面を構成する（ステップＳ２３）。
【００９５】
補正部３１１は、平面との距離＜Ｔｈとなるマップ点を抽出する（ステップＳ２４）。ステップＳ２４で抽出したマップ点をInlier点と表記し、Inlier点以外のマップ点をOutlier点と表記する。補正部３１１は、Inlier点を主成分分析して平面近似することで、近似平面を特定する（ステップＳ２５）。
【００９６】
補正部３１１は、近似平面の法線と視線とのなす角が直角に近いか否かを判定する（ステップＳ２６）。補正部３１１は、近似平面の法線と視線とのなす角が直角に近くない場合には（ステップＳ２６，Ｎｏ）、ステップＳ２７に移行する。ステップＳ２７において、補正部３１１は、近似平面と視線との交点を補正後の仮想オブジェクトの３次元座標に設定する（ステップＳ２７）。
【００９７】
一方、補正部３１１は、近似平面の法線と視線とのなす角が直角に近い場合には（ステップＳ２６，Ｙｅｓ）、ステップＳ２８に移行する。ステップＳ２８において、補正部３１１は、垂直平面と視線との交点を補正後の仮想オブジェクトの３次元座標に設定する（ステップＳ２８）。
【００９８】
次に、本実施例３に係るオーサリング装置３００の効果について説明する。オーサリング装置３００は、マップ情報１２２のマップが平面マップから立体マップに切り替わった場合に、立体マップを基にして、仮想オブジェクトの座標を補正する。例えば、補正部３１１は、立体マップに含まれる各マップ点Ｓ１’〜Ｓ８’の近似平面を算出し、近似平面の法線と視線とのなす角度が、直角に近くない場合には、近似平面と、視線との交点座標を、仮想オブジェクトの３次元座標として算出する。一方、補正部３１１は、近似平面の法線と視線とのなす角度が、直角に近い場合には、図１７で説明したように、垂直平面３５と、視線６との交点３７を、仮想オブジェクトの３次元座標として特定する。
【００９９】
上記処理を行うことで、垂直平面３５を用いた場合の誤差範囲は誤差範囲３０ｃとなり、図１６で説明した誤差範囲３０ｄと比較して、誤差範囲が小さくなるため、仮想オブジェクトの３次元座標を正確に算出できる。
【実施例４】
【０１００】
図１９は、本実施例４に係るオーサリング装置の構成を示す図である。図１９に示すように、このオーサリング装置４００は、カメラ５０に接続される。オーサリング装置４００は、インタフェース部１１０と、記憶部１２０と、制御部４１０とを有する。
【０１０１】
カメラ５０に関する説明は、実施例１で説明したカメラ５０に関する説明と同様である。また、インタフェース部１１０、記憶部１２０に関する説明は、実施例１で説明したインタフェース部１１０、記憶部１２０に関する説明と同様である。
【０１０２】
制御部４１０は、位置姿勢推定部１３１と、キーフレーム判定部１３２と、マップ生成部１３３と、マップ補正部１３４と、特定部１３５と、補正部４１１と、表示部１３７とを有する。制御部４１０は、例えば、ＡＳＩＣや、ＦＰＧＡなどの集積装置に対応する。また、制御部４１０は、例えば、ＣＰＵやＭＰＵ等の電子回路に対応する。
【０１０３】
制御部４１０に含まれる各処理部のうち、位置姿勢推定部１３１、キーフレーム判定部１３２、マップ生成部１３３、マップ補正部１３４、特定部１３５、表示部１３７に関する説明は、実施例１で説明したものと同様である。
【０１０４】
補正部４１１は、仮想オブジェクトの３次元座標の補正に先だって、仮想オブジェクトの３次元座標の補正を行うか否かを判定する。例えば、補正部４１１は、下記に説明する第１の判定基準または第２の判定基準を満たす場合に、仮想オブジェクトの３次元座標の補正を行わないと判定する。
【０１０５】
第１の判定基準は、マップ情報１２２のマップ点の３次元座標の補正量が小さいという基準である。例えば、補正部４１１は、補正前のマップ情報１２２のマップ点の重心を示す補正前重心を算出する。補正部４１１は、補正後のマップ情報１２２のマップ点の重心を示す補正後重心を算出する。補正部４１１は、補正前重心と補正後重心との距離が第１閾値未満である場合に、第１の判定基準を満たすと判定する。
【０１０６】
例えば、補正部４１１は、第１閾値を、「ｄ×０．１」により算出する。ｄは、連続するキーフレーム間でカメラ５０が移動した距離に対応する値である。
【０１０７】
第２の判定基準は、仮想オブジェクトの３次元座標のマップ点の密集度が小さいという基準である。例えば、補正部４１１は、マップ情報１２２を参照し、仮想オブジェクトの３次元座標を包含する直方体の体積と、この直方体に含まれるマップ点の数を計数する。補正部４１１は、直方体に含まれるマップ点の数を、直方体の体積を除算した値が第２閾値未満である場合に、第２の判定基準を満たすと判定する。
【０１０８】
例えば、補正部４１１は、第２閾値を、「１０００／ｄ＾３」により算出する。ｄは、連続するキーフレーム間でカメラ５０が移動した距離に対応する値である。
【０１０９】
補正部４１１は、仮想オブジェクトの３次元座標の補正を行うと判定した場合には、実施例１〜３で説明した補正部１３６、２１１、３１１と同様にして、仮想オブジェクトの３次元座標を算出する。
【０１１０】
次に、本実施例４に係るオーサリング装置４００の処理手順について説明する。図２０は、本実施例４に係るオーサリング装置の処理手順を示すフローチャートである。図２０に示すように、オーサリング装置４００は、カメラ５０から画像データを取得する（ステップＳ２０１）。
【０１１１】
オーサリング装置４００は、マップ情報を生成済みであるか否かを判定する（ステップＳ２０２）。オーサリング装置４００は、マップ情報を生成済みでない場合には（ステップＳ２０２，Ｎｏ）、オーサリング装置４００のキーフレーム判定部１３２は、第１キーフレーム判定処理を実行する（ステップＳ２０３）。
【０１１２】
キーフレーム判定部１３２は、画像データが第１キーフレームとして適正か否かを判定する（ステップＳ２０４）。キーフレーム判定部１３２は、画像データが第１キーフレームとして適正でない場合には（ステップＳ２０４，Ｎｏ）、ステップＳ２０１に移行する。一方、キーフレーム判定部１３２は、画像データが第１キーフレームとして適正である場合には（ステップＳ２０４，Ｙｅｓ）、ステップＳ２０５に移行する。
【０１１３】
オーサリング装置４００のマップ生成部１３３は、マップ情報１２２を生成する（ステップＳ２０５）。オーサリング装置４００の特定部１３５が、仮想オブジェクトの座標を特定し、表示部１３７が仮想オブジェクトを配置し（ステップＳ２０６）、仮想オブジェクトを表示する（ステップＳ２０７）。
【０１１４】
オーサリング装置４００は、処理を継続する場合には（ステップＳ２０８，Ｙｅｓ）、ステップＳ２０１に移行する。一方、オーサリング装置４００は、処理を継続しない場合には（ステップＳ２０８，Ｎｏ）、処理を終了する。
【０１１５】
図２０のステップＳ２０２の説明に戻る。オーサリング装置４００は、マップ情報１２２を生成済みの場合には（ステップＳ２０２，Ｙｅｓ）、ステップＳ２０９に移行する。オーサリング装置４００の位置姿勢推定部１３１は、カメラ５０の位置姿勢を推定する（ステップＳ２０９）。
【０１１６】
位置姿勢推定部１３１は、位置姿勢の推定に成功していない場合には（ステップＳ２１０，Ｎｏ）、ステップＳ２０１に移行する。位置姿勢推定部１３１は、位置姿勢の推定に成功した場合には（ステップＳ２１０，Ｙｅｓ）、ステップＳ２１１に移行する。
【０１１７】
オーサリング装置４００のキーフレーム判定部１３２は、第２キーフレーム判定処理を実行する（ステップＳ２１１）。キーフレーム判定部１３２は、画像データが第２キーフレームとして適正でない場合には（ステップＳ２１２，Ｎｏ）、ステップＳ２０７に移行する。一方、キーフレーム判定部１３２は、画像データが第２キーフレームとして適正である場合には（ステップＳ２１２，Ｙｅｓ）、ステップＳ２１３に移行する。
【０１１８】
オーサリング装置４００のマップ補正部１３４は、マップ情報１２２を補正する（ステップＳ２１３）。オーサリング装置４００の補正部４１１は、仮想オブジェクト補正を実施するか否かを判定する（ステップＳ２１４）。補正部４１１は、仮想オブジェクト補正を実施すると判定した場合には（ステップＳ２１４，Ｙｅｓ）、仮想オブジェクトの座標を補正し（ステップＳ２１５）、ステップＳ２０７に移行する。一方、補正部４１１は、仮想オブジェクト補正を実施しないと判定した場合には（ステップＳ２１４，Ｎｏ）、ステップＳ２０７に移行する。
【０１１９】
次に、本実施例４に係るオーサリング装置４００の効果について説明する。オーサリング装置４００は、マップ情報１２２が補正された場合に、第１の判断基準または第２の判断基準を満たすか否かを判定する。オーサリング装置４００は、第１の判断基準または第２の判断基準を満たさない場合に限り、仮想オブジェクトの３次元座標を補正する。ここで、第１の判断基準を満たす場合には、マップ点の移動量が微量であるため、仮想オブジェクトの表示ズレも微量であると言える。第２の判断基準を満たす場合には、マップ点の数が少なく、仮想オブジェクトの位置が多少ずれても、仮想オブジェクトがどの対象物を示しているのか容易に判断可能である。このため、第１、２の判断基準を満たさない場合に、仮想オブジェクトの３次元座標を補正することにより、係る補正の処理負荷を軽減することができる。
【０１２０】
ところで、上記の実施例１〜４では、マップ補正部１３４は、後述するバンドル調整によって、マップ情報１２２を補正しても良いし、リアルタイム補正により、マップ情報１２２を補正しても良い。また、上記の実施例１〜４に示した補正部１３６，２１１，３１１は、バンドル調整またはリアルタイム補正により、マップ情報１２２が補正されたタイミングで、仮想オブジェクトの３次元座標を補正しても良い。
【０１２１】
例えば、補正部１３６は、バンドル調整またはリアルタイム補正されたマップ情報１２２の各マップ点Ｓ１’〜Ｓ８’の重心ＳＧを計算する。補正部１３６は、重心ＳＧから視線６に下した垂線５ｃの足Ａの３次元座標を、仮想オブジェクト５ａの補正後の３次元座標として算出する。
【０１２２】
補正部２１１は、バンドル調整またはリアルタイム補正されたマップ情報１２２の各マップ点Ｓ１’〜Ｓ８’の近似平面を算出し、近似平面と、視線との交点座標を、仮想オブジェクトの３次元座標として算出する。
【０１２３】
補正部３１１は、バンドル調整またはリアルタイム補正されたマップ情報１２２の各マップ点Ｓ１’〜Ｓ８’の近似平面を算出する。近似平面の法線と視線とのなす角度が、直角に近くない場合には、補正部２１１と同様の処理を実行する。近似平面の法線と視線とのなす角度が、直角に近い場合には、近似平面の重心を通り近似平面に垂直な垂直平面を特定する。補正部３１１は、特定した垂直平面と、視線との交点を、仮想オブジェクトの３次元座標として特定する。
【０１２４】
続いて、マップ補正部１３４が実行するバンドル調整の一例について説明する。マップ補正部１３４は、キーフレーム情報１２１を参照し、５つ以上のキーフレームがキーフレーム情報１２１に登録されている場合に、バンドル調整を行う。
【０１２５】
バンドル調整は、マップ点、画像データ中の特徴点、複数のキーフレームの位置姿勢を用いて、再投影誤差が最小となるように、マップ点の３次元座標およびキーフレームの位置姿勢を微調整する処理である。例えば、バンドル調整の処理内容は、文献（B.Triggs  et  al.,“Bundle  Adjustment  A  Modern  Synthesis”,Vision  Algorithms:Theory  and  Practice,LNCS,Springer  Verlag,2000）等に記載されている。
【０１２６】
マップ補正部１３４が実行するリアルタイム補正の一例について説明する。マップ補正部１３４は、カメラ５０の位置姿勢を用いて、マップ点を画像データ上に投影した投影点（ｘｉ，ｙｉ）の座標を求める。マップ補正部１３４は、投影点（ｘｉ，ｙｉ）と、画像データ中の特徴点（ｕｉ，ｖｉ）とのマッチングを行う。マップ補正部１３４は、マッチングした投影点と特徴点との誤差Ｅｉが小さくなるように、マップ点の３次元座標を、最小二乗法等を用いて調整する。誤差Ｅｉは、例えば、式（５）によって定義される。
【０１２７】
Ｅｉ＝（ｘｉ−ｕｉ）２＋（ｙｉ−ｖｉ）２・・・（５）
【０１２８】
次に、上記実施例に示したオーサリング装置１００，２００，３００，４００のハードウェア構成の一例について説明する。図２１は、オーサリング装置のハードウェア構成の一例を示す図である。
【０１２９】
図２１に示すように、コンピュータ５００は、各種演算処理を実行するＣＰＵ５０１と、利用者からのデータの入力を受け付ける入力装置５０２と、ディスプレイ５０３を有する。また、コンピュータ５００は、記憶媒体からプログラム等を読取る読み取り装置５０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインタフェース装置５０５とを有する。また、コンピュータ５００は、各種情報を一時記憶するＲＡＭ５０６と、ハードディスク装置５０７を有する。そして、各装置５０１〜５０７は、バス５０８に接続される。
【０１３０】
ハードディスク装置５０７は、特定プログラム５０７ａ、補正プログラム５０７ｂ、表示プログラム５０７ｃを有する。ＣＰＵ５０１は、各プログラム５０７ａ〜５０７ｃを読み出してＲＡＭ５０６に展開する。特定プログラム５０７ａは、特定プロセス５０６ａとして機能する。補正プログラム５０７ｂは、補正プロセス５０６ｂとして機能する。表示プログラム５０７ｃは、表示プロセス５０６ｃとして機能する。
【０１３１】
例えば、特定プロセス５０６ａの処理は、特定部１３５の処理に対応する。補正プロセス５０６ｂの処理は、補正部１３６、２１１，３１１，４１１の処理に対応する。表示プロセス５０６ｃの処理は、表示部１３７の処理に対応する。
【０１３２】
なお、各プログラム５０７ａ〜５０７ｃについては、必ずしも最初からハードディスク装置５０７に記憶させておかなくても良い。例えば、コンピュータ５００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ１７０がこれらから各プログラム５０７ａ〜５０７ｃを読み出して実行するようにしてもよい。
【０１３３】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１３４】
（付記１）第１のマップに定義された特徴点の３次元座標を示すマップ点の位置を基にして、仮想オブジェクトの位置を特定する特定部と、
前記第１のマップから、前記第１のマップと異なる第２のマップに切り替わった場合に、前記第２のマップに定義された複数のマップ点の位置とカメラの視線とを基にして、前記仮想オブジェクトの位置を補正する補正部と、
前記仮想オブジェクトの位置に基づいて、前記仮想オブジェクトを前記カメラの撮影面に重畳表示する表示部と
を有することを特徴とするオーサリング装置。
【０１３５】
（付記２）前記補正部は、前記第２のマップに定義された複数のマップ点のうち、前記仮想オブジェクトに対応付けられたマップ点の位置周辺のマップ点に基づく近似平面と、前記視線との第１交点を算出し、前記仮想オブジェクトの位置を前記第１交点の位置に補正することを特徴とする付記１に記載のオーサリング装置。
【０１３６】
（付記３）前記補正部は、前記近似平面の法線と前記視線との角度が垂直に近い角度である場合には、前記近似平面の重心を通り、前記近似平面に垂直な平面と、前記視線との第２交点を算出し、前記仮想オブジェクトの位置を前記第２交点の位置に補正することを特徴とする付記２に記載のオーサリング装置。
【０１３７】
（付記４）前記補正部は、前記仮想オブジェクトの位置近辺における前記第１のマップのマップ点の位置と、前記仮想オブジェクトの位置近辺における前記第２のマップのマップ点の位置との誤差に基づいて、前記仮想オブジェクトの位置を補正するか否かを判定することを特徴とする付記１〜３のいずれか一つに記載のオーサリング装置。
【０１３８】
（付記５）前記補正部は、前記仮想オブジェクトの位置近辺における前記第１のマップのマップ点の密集度を基にして、前記仮想オブジェクトの位置を補正するか否かを判定することを特徴とする付記１〜４のいずれか一つに記載のオーサリング装置。
【０１３９】
（付記６）前記カメラに撮影された撮影画像からキーフレームを判定する判定部と、第１のキーフレームと、前記第１のキーフレームに続く第２のキーフレームとを基にして、前記第２のマップを生成するマップ補正部とを更に有することを特徴とする付記１〜５のいずれか一つに記載のオーサリング装置。
【０１４０】
（付記７）前記カメラに撮影された撮影画像からキーフレームを判定する判定部と、複数のキーフレームを基にして、バンドル調整により前記第２のマップを生成するマップ補正部とを更に有することを特徴とする付記１〜５のいずれか一つに記載のオーサリング装置。
【０１４１】
（付記８）前記カメラに撮影された撮影画像からキーフレームを判定する判定部と、第１のキーフレームと、前記第１のキーフレームに続く、キーフレーム以外のフレームとを基にして、前記第１のマップのマップ点の位置を微調整することで、前記第２のマップを生成するマップ補正部とを更に有することを特徴とする付記１〜５のいずれか一つに記載のオーサリング装置。
【０１４２】
（付記９）コンピュータが実行するオーサリング方法であって、
第１のマップに定義された特徴点の３次元座標を示すマップ点の位置を基にして、仮想オブジェクトの位置を特定し、
前記第１のマップから、前記第１のマップと異なる第２のマップに切り替わった場合に、前記第２のマップに定義された複数のマップ点の位置とカメラの視線とを基にして、前記仮想オブジェクトの位置を補正し、
前記仮想オブジェクトの位置に基づいて、前記仮想オブジェクトを前記カメラの撮影面に重畳表示する
処理を実行することを特徴とするオーサリング方法。
【０１４３】
（付記１０）前記補正する処理は、前記第２のマップに定義された複数のマップ点のうち、前記仮想オブジェクトに対応付けられたマップ点の位置周辺のマップ点に基づく近似平面と、前記視線との第１交点を算出し、前記仮想オブジェクトの位置を前記第１交点の位置に補正することを特徴とする付記９に記載のオーサリング方法。
【０１４４】
（付記１１）前記補正する処理は、前記近似平面の法線と前記視線との角度が垂直に近い角度である場合には、前記近似平面の重心を通り、前記近似平面に垂直な平面と、前記視線との第２交点を算出し、前記仮想オブジェクトの位置を前記第２交点の位置に補正することを特徴とする付記１０に記載のオーサリング方法。
【０１４５】
（付記１２）前記仮想オブジェクトの位置近辺における前記第１のマップのマップ点の位置と、前記仮想オブジェクトの位置近辺における前記第２のマップのマップ点の位置との誤差に基づいて、前記仮想オブジェクトの位置を補正するか否かを判定する処理を更に実行することを特徴とする付記９〜１１のいずれか一つに記載のオーサリング方法。
【０１４６】
（付記１３）前記補正するか否かを判定する処理は、前記仮想オブジェクトの位置近辺における前記第１のマップのマップ点の密集度を基にして、前記仮想オブジェクトの位置を補正するか否かを判定することを特徴とする付記９〜１２のいずれか一つに記載のオーサリング方法。
【０１４７】
（付記１４）前記カメラに撮影された撮影画像からキーフレームを判定し、第１のキーフレームと、前記第１のキーフレームに続く第２のキーフレームとを基にして、前記第２のマップを生成する処理を更に実行することを特徴とする付記９〜１３のいずれか一つに記載のオーサリング方法。
【０１４８】
（付記１５）前記カメラに撮影された撮影画像からキーフレームを判定し、複数のキーフレームを基にして、バンドル調整により前記第２のマップを生成する処理を更に実行することを特徴とする付記９〜１３のいずれか一つに記載のオーサリング方法。
【０１４９】
（付記１６）前記カメラに撮影された撮影画像からキーフレームを判定し、第１のキーフレームと、前記第１のキーフレームに続く、キーフレーム以外のフレームとを基にして、前記第１のマップのマップ点の位置を微調整することで、前記第２のマップを生成する処理を更に実行することを特徴とする付記９〜１３のいずれか一つに記載のオーサリング方法。
【０１５０】
（付記１７）コンピュータに、
第１のマップに定義された特徴点の３次元座標を示すマップ点の位置を基にして、仮想オブジェクトの位置を特定し、
前記第１のマップから、前記第１のマップと異なる第２のマップに切り替わった場合に、前記第２のマップに定義された複数のマップ点の位置とカメラの視線とを基にして、前記仮想オブジェクトの位置を補正し、
前記仮想オブジェクトの位置に基づいて、前記仮想オブジェクトを前記カメラの撮影面に重畳表示する
処理を実行させることを特徴とするオーサリングプログラム。
【０１５１】
（付記１８）前記補正する処理は、前記第２のマップに定義された複数のマップ点のうち、前記仮想オブジェクトに対応付けられたマップ点の位置周辺のマップ点に基づく近似平面と、前記視線との第１交点を算出し、前記仮想オブジェクトの位置を前記第１交点の位置に補正することを特徴とする付記１７に記載のオーサリングプログラム。
【０１５２】
（付記１９）前記補正する処理は、前記近似平面の法線と前記視線との角度が垂直に近い角度である場合には、前記近似平面の重心を通り、前記近似平面に垂直な平面と、前記視線との第２交点を算出し、前記仮想オブジェクトの位置を前記第２交点の位置に補正することを特徴とする付記１８に記載のオーサリングプログラム。
【０１５３】
（付記２０）前記仮想オブジェクトの位置近辺における前記第１のマップのマップ点の位置と、前記仮想オブジェクトの位置近辺における前記第２のマップのマップ点の位置との誤差に基づいて、前記仮想オブジェクトの位置を補正するか否かを判定する処理を更に実行することを特徴とする付記１７〜１９のいずれか一つに記載のオーサリングプログラム。
【０１５４】
（付記２１）前記補正するか否かを判定する処理は、前記仮想オブジェクトの位置近辺における前記第１のマップのマップ点の密集度を基にして、前記仮想オブジェクトの位置を補正するか否かを判定することを特徴とする付記１７〜２０のいずれか一つに記載のオーサリングプログラム。
【０１５５】
（付記２２）前記カメラに撮影された撮影画像からキーフレームを判定し、第１のキーフレームと、前記第１のキーフレームに続く第２のキーフレームとを基にして、前記第２のマップを生成する処理を更に実行することを特徴とする付記１７〜２１のいずれか一つに記載のオーサリングプログラム。
【０１５６】
（付記２３）前記カメラに撮影された撮影画像からキーフレームを判定し、複数のキーフレームを基にして、バンドル調整により前記第２のマップを生成する処理を更に実行することを特徴とする付記１７〜２１のいずれか一つに記載のオーサリングプログラム。
【０１５７】
（付記２４）前記カメラに撮影された撮影画像からキーフレームを判定し、第１のキーフレームと、前記第１のキーフレームに続く、キーフレーム以外のフレームとを基にして、前記第１のマップのマップ点の位置を微調整することで、前記第２のマップを生成する処理を更に実行することを特徴とする付記１７〜２１のいずれか一つに記載のオーサリングプログラム。
【符号の説明】
【０１５８】
５０  カメラ
１００，２００，３００，４００  オーサリング装置
１１０  インタフェース部
１２０  記憶部
１２１  キーフレーム情報
１２２  マップ情報
１２３  位置姿勢情報
１２４  仮想オブジェクト情報
１３０  制御部
１３１  位置姿勢推定部
１３２  キーフレーム判定部
１３３  マップ生成部
１３４  マップ補正部
１３５  特定部
１３６、２１１，３１１，４１１  補正部
１３７  表示部
【図１】
0006701930.tif 000003
【図２】
0006701930.tif 000004
【図３】
0006701930.tif 000005
【図４】
0006701930.tif 000006
【図５】
0006701930.tif 000007
【図６】
0006701930.tif 000008
【図７】
0006701930.tif 000009
【図８】
0006701930.tif 000010
【図９】
0006701930.tif 000011
【図１０】
0006701930.tif 000012
【図１１】
0006701930.tif 000013
【図１２】
0006701930.tif 000014
【図１３】
0006701930.tif 000015
【図１４】
0006701930.tif 000016
【図１５】
0006701930.tif 000017
【図１６】
0006701930.tif 000018
【図１７】
0006701930.tif 000019
【図１８】
0006701930.tif 000020
【図１９】
0006701930.tif 000021
【図２０】
0006701930.tif 000022
【図２１】
0006701930.tif 000023
【図２２】
0006701930.tif 000024