(57)【特許請求の範囲】
【請求項１】
カメラによって撮像された複数の撮像画像から第１の選択画像を選択し、前記第１の選択画像の後に前記カメラによって撮像された複数の後続画像の中から、前記第１の選択画像におけるマーカの位置を示す第１のマーカ位置情報を基に算出された前記第１の選択画像の撮像位置と前記複数の後続画像のそれぞれにおける前記マーカの位置を示す第２のマーカ位置情報を基に算出された前記複数の後続画像のそれぞれの撮像位置との間の撮像位置間距離と、前記第１の選択画像から抽出された特徴点と前記複数の後続画像のそれぞれから抽出された特徴点との間で対応する対応特徴点の数とに基づいて、第２の選択画像を選択する画像選択部と、
複数の前記対応特徴点の３次元座標を、当該各対応特徴点の前記第１の選択画像および前記第２の選択画像のそれぞれにおける２次元座標に基づいて算出する座標算出部と、
を有し、
前記画像選択部は、前記第１の選択画像に基づく前記第１のマーカ位置情報と前記複数の後続画像のそれぞれに基づく前記第２のマーカ位置情報とに基づいて、前記第１の選択画像の撮像から前記複数の後続画像のそれぞれの撮像までに前記カメラの位置が変化せず、かつ前記カメラが撮像方向を軸として回転する動作が行われたかを評価する評価値を算出し、前記評価値が所定のしきい値より大きい場合には、前記複数の後続画像のうち当該評価値に対応する後続画像を前記第２の選択画像として選択しないと判定するとともに、撮像位置を移動させるようにユーザに通知する通知情報を出力する、
３次元座標算出装置。
【請求項２】
前記画像選択部は、前記複数の後続画像のうちの一の後続画像を前記第２の選択画像として選択するかを判定する際、前記一の後続画像に基づく前記第２のマーカ位置情報と前記第１の選択画像に基づく前記第１のマーカ位置情報とに基づいて前記一の後続画像の撮像位置と前記マーカとの間のカメラ−マーカ間距離を算出し、前記カメラ−マーカ間距離に基づいて距離しきい値を算出し、前記一の後続画像について算出された前記撮像位置間距離と前記距離しきい値との比較結果に基づいて、前記一の後続画像を前記第２の選択画像として選択するかを判定する、請求項１記載の３次元座標算出装置。
【請求項３】
前記画像選択部は、前記複数の撮像画像のうちの第１の撮像画像の撮像位置から、前記複数の撮像画像のうちの第２の撮像画像の撮像位置までの移動量に基づいて、前記第２の撮像画像を前記第１の選択画像として選択するかを判定する、請求項１または２記載の３次元座標算出装置。
【請求項４】
前記画像選択部は、前記複数の撮像画像のうちの一の撮像画像における前記マーカの位置と、前記一の撮像画像の中心とのズレ量に基づいて、前記一の撮像画像を前記第１の選択画像として選択するかを判定する、請求項１または２記載の３次元座標算出装置。
【請求項５】
前記画像選択部は、前記複数の撮像画像のうちの一の撮像画像における前記マーカの面積に基づいて、前記一の撮像画像を前記第１の選択画像として選択するかを判定する、請求項１または２記載の３次元座標算出装置。
【請求項６】
カメラによって撮像された複数の撮像画像から第１の選択画像を選択し、
前記第１の選択画像の後に前記カメラによって撮像された複数の後続画像の中から、前記第１の選択画像におけるマーカの位置を示す第１のマーカ位置情報を基に算出された前記第１の選択画像の撮像位置と前記複数の後続画像のそれぞれにおける前記マーカの位置を示す第２のマーカ位置情報を基に算出された前記複数の後続画像のそれぞれの撮像位置との間の撮像位置間距離と、前記第１の選択画像から抽出された特徴点と前記複数の後続画像のそれぞれから抽出された特徴点との間で対応する対応特徴点の数とに基づいて、第２の選択画像を選択し、
複数の前記対応特徴点の３次元座標を、当該各対応特徴点の前記第１の選択画像および前記第２の選択画像のそれぞれにおける２次元座標に基づいて算出する、
処理を含み、
前記第２の選択画像の選択では、前記第１の選択画像に基づく前記第１のマーカ位置情報と前記複数の後続画像のそれぞれに基づく前記第２のマーカ位置情報とに基づいて、前記第１の選択画像の撮像から前記複数の後続画像のそれぞれの撮像までに前記カメラの位置が変化せず、かつ前記カメラが撮像方向を軸として回転する動作が行われたかを評価する評価値を算出し、前記評価値が所定のしきい値より大きい場合には、前記複数の後続画像のうち当該評価値に対応する後続画像を前記第２の選択画像として選択しないと判定するとともに、撮像位置を移動させるようにユーザに通知する通知情報を出力する、
３次元座標算出方法。
【請求項７】
コンピュータに、
カメラによって撮像された複数の撮像画像から第１の選択画像を選択し、
前記第１の選択画像の後に前記カメラによって撮像された複数の後続画像の中から、前記第１の選択画像におけるマーカの位置を示す第１のマーカ位置情報を基に算出された前記第１の選択画像の撮像位置と前記複数の後続画像のそれぞれにおける前記マーカの位置を示す第２のマーカ位置情報を基に算出された前記複数の後続画像のそれぞれの撮像位置との間の撮像位置間距離と、前記第１の選択画像から抽出された特徴点と前記複数の後続画像のそれぞれから抽出された特徴点との間で対応する対応特徴点の数とに基づいて、第２の選択画像を選択し、
複数の前記対応特徴点の３次元座標を、当該各対応特徴点の前記第１の選択画像および前記第２の選択画像のそれぞれにおける２次元座標に基づいて算出する、
処理を実行させ、
前記第２の選択画像の選択では、前記第１の選択画像に基づく前記第１のマーカ位置情報と前記複数の後続画像のそれぞれに基づく前記第２のマーカ位置情報とに基づいて、前記第１の選択画像の撮像から前記複数の後続画像のそれぞれの撮像までに前記カメラの位置が変化せず、かつ前記カメラが撮像方向を軸として回転する動作が行われたかを評価する評価値を算出し、前記評価値が所定のしきい値より大きい場合には、前記複数の後続画像のうち当該評価値に対応する後続画像を前記第２の選択画像として選択しないと判定するとともに、撮像位置を移動させるようにユーザに通知する通知情報を出力する、
３次元座標算出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、３次元座標算出装置、３次元座標算出方法および３次元座標算出プログラムに関する。
【背景技術】
【０００２】
現実空間を撮像した画像上の所定位置に仮想的な画像を重畳して表示する拡張現実感（Augmented Reality，ＡＲ）技術が知られている。このＡＲ技術は、例えば、工場などの作業空間において、作業内容や作業対象箇所などを示す作業支援情報を撮像画像上に重畳表示することによって作業者の作業を支援する、といった用途で普及しつつある。
【０００３】
ＡＲ技術では、撮像画像上の適切な位置に仮想的な画像を重畳するために、実空間でのカメラの位置および姿勢を正確に把握できる必要がある。その方法の一例として、仮想的な画像の表示対象とする対象物上の特徴点についての３次元座標をあらかじめ計測して特徴点マップに登録しておき、撮像画像から抽出された特徴点と特徴点マップに登録された特徴点とを対応付けることにより、カメラの位置および姿勢を推定する方法がある。
【０００４】
また、特徴点マップに登録する３次元座標を算出する方法の例としては、任意の２視点から対象物が写る２つの画像を撮像し、各画像から特徴点を抽出し、画像間で対応する特徴点の３次元座標を各画像における特徴点の座標に基づいて三角測量の原理によって算出する方法がある。
【０００５】
また、ＡＲに関連する技術としては次のようなものがある。例えば、選択画像に含まれる３次元位置の推定された特徴点数、および、選択画像に含まれる対応特徴点の推定３次元位置と画像フレームの特徴点位置とを結ぶ光線同士の交差角に基づいて、選択画像が適切かを判定する技術が提案されている。また、例えば、第１の画像および第２の画像における画像特徴の位置と各画像を撮像したカメラの姿勢とに基づいて３次元空間におけるマーカの再構成位置を判定し、再構成位置と３次元空間におけるマーカの所定の位置に基づく再構成誤差が所定の基準を満たす場合に、キー画像として少なくとも一方の画像を選択する技術が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−２３７８４８号公報
【特許文献２】特開２０１３−１２７７８３号公報
【非特許文献】
【０００７】
【非特許文献１】G. Klein、他１名、「Parallel Tracking and Mapping for Small AR Workspace」、Mixed and Augmented Reality, 2007. ISMAR 2007. 6th IEEE and ACM International Symposium on、２００７年１１月、ｐｐ．２２５−２３４
【非特許文献２】山田健人、他３名、「２画像からの３次元復元の最新アルゴリズム」、情報処理学会研究報告、vol. 2009-CVIM-168-15、２００９年、ｐ．１−８
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特徴点マップに登録する特徴点の３次元座標は、その算出に用いられる２画像の撮像位置や撮像方向によっては、算出精度が低くなる場合がある。２画像の適切な撮像位置や撮像方向の条件は、三角測量の原理から決定される。しかし、特徴点マップを登録しようとするユーザは三角測量の原理に詳しくない場合が多いため、２画像を適切な位置や方向で撮像することが難しいという問題がある。撮像位置や撮像方向が不適切な２画像を用いて作成された低品質な特徴点マップを用いて画像の重畳表示が行われると、画像の表示位置の精度が低くなってしまう。
【０００９】
１つの側面では、本発明は、特徴点の３次元座標を高精度に算出可能な３次元座標算出装置、３次元座標算出方法および３次元座標算出プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
１つの案では、３次元座標算出装置が提供される。この３次元座標算出装置は、画像選択部および座標算出部を有する。画像選択部は、カメラによって撮像された複数の撮像画像から第１の選択画像を選択し、第１の選択画像の後にカメラによって撮像された複数の後続画像の中から、第１の選択画像におけるマーカの位置を示す第１のマーカ位置情報を基に算出された第１の選択画像の撮像位置と複数の後続画像のそれぞれにおけるマーカの位置を示す第２のマーカ位置情報を基に算出された複数の後続画像のそれぞれの撮像位置との間の撮像位置間距離と、第１の選択画像から抽出された特徴点と複数の後続画像のそれぞれから抽出された特徴点との間で対応する対応特徴点の数とに基づいて、第２の選択画像を選択する。座標算出部は、複数の対応特徴点の３次元座標を、各対応特徴点の第１の選択画像および第２の選択画像のそれぞれにおける２次元座標に基づいて算出する。
【００１１】
また、１つの案では、上記の３次元座標算出装置と同様の処理が実行される３次元座標算出方法が提供される。
さらに、１つの案では、上記の３次元座標算出装置と同様の処理をコンピュータに実行させる３次元座標算出プログラムが提供される。
【発明の効果】
【００１２】
１つの側面では、特徴点の３次元座標を高精度に算出できる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施の形態に係る３次元座標算出装置の構成例および処理例を示す図である。
【図２】第２の実施の形態に係る端末装置のハードウェア構成例を示す図である。
【図３】特徴点マップに登録される特徴点の３次元座標について示す図である。
【図４】端末装置が備える処理機能の構成例を示すブロック図である。
【図５】マーカの例を示す図である。
【図６】位置姿勢情報テーブルの例を示す図である。
【図７】特徴点情報テーブルの例を示す図である。
【図８】処理例１の手順を示すフローチャートである。
【図９】処理例１における第２カメラ位置判定処理の手順を示すフローチャートである。
【図１０】処理例２における第２カメラ位置判定処理の手順を示すフローチャートである。
【図１１】処理例３における第２カメラ位置判定処理の手順を示すフローチャートである。
【図１２】パンニングが行われた場合のマーカとカメラとの位置関係を示す図である。
【図１３】処理例４の手順を示すフローチャートである。
【図１４】処理例５の手順を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について図面を参照して説明する。
〔第１の実施の形態〕
図１は、第１の実施の形態に係る３次元座標算出装置の構成例および処理例を示す図である。図１に示す３次元座標算出装置は、複数の特徴点の３次元座標を算出するための装置である。３次元座標算出装置１によって算出された複数の特徴点の３次元座標は、例えば、特徴点マップ１１に登録される。特徴点マップ１１は、対象物２１の所定位置に仮想的な画像を重畳表示する際に参照される。
【００１５】
このような特徴点マップ１１を用いた重畳表示処理は、マーカを利用しないマーカレス方式で行われる。一方、本実施の形態では、対象物２１の表面やその近傍にマーカ２２を配置する。そして、３次元座標算出装置１は、カメラ２によってマーカ２２が撮像された撮像画像を用いて特徴点マップ１１を作成する。特徴点マップ１１の作成にマーカ２２を用いることで、各撮像画像の撮像位置や撮像方向を画像処理によって特定できる。３次元座標算出装置１は、特定された撮像位置や撮像方向を用いることで、特徴点の３次元座標を算出するための適切な２画像を自動的に選択する。
【００１６】
３次元座標算出装置１は、画像選択部１２および座標算出部１３を備える。画像選択部１２および座標算出部１３の処理は、例えば、３次元座標算出装置１が備えるプロセッサが所定のプログラムを実行することで実現される。なお、画像選択部１２および座標算出部１３は、３次元座標算出装置１に接続されたカメラ２によって撮像された撮像画像を用いて以下のような処理を行うが、他の例として、複数の撮像画像を他の装置から取得して以下のような処理を行ってもよい。また、カメラ２は、３次元座標算出装置１と一体に搭載されていてもよい。
【００１７】
画像選択部１２は、カメラ２によって撮像された複数の撮像画像から第１の選択画像を選択する。図１の例では、撮像画像３１が第１の選択画像として選択されたとする。
また、画像選択部１２は、第１の選択画像の後にカメラ２によって撮像された複数の後続画像の中から、次のような処理によって第２の選択画像を選択する。画像選択部１２は、第１の選択画像におけるマーカ２２の位置情報に基づいて、第１の選択画像の撮像位置を算出する。また、画像選択部１２は、各後続画像におけるマーカ２２の位置情報に基づいて、各後続画像の撮像位置を算出する。そして、画像選択部１２は、第１の選択画像の撮像位置と各後続画像の撮像位置との間の撮像位置間距離を、第１の選択画像と後続画像の組み合わせごとに算出する。さらに、画像選択部１２は、第１の選択画像から抽出された特徴点と、各後続画像から抽出された特徴点との間で対応する対応特徴点の数を、第１の選択画像と後続画像の組み合わせごとに算出する。
【００１８】
画像選択部１２は、撮像位置間距離と対応特徴点の数とに基づいて、複数の後続画像の中から第２の選択画像を選択する。図１の例では、撮像画像３１の後に撮像された撮像画像３２〜３４の中から、撮像画像３４が第２の選択画像として選択されたとする。
【００１９】
特徴点の３次元座標を精度よく算出するためには、その算出に用いられる２つの画像がある程度離れた位置から撮像されることが望ましい。画像選択部１２は、第２の選択画像の判定に撮像位置間距離を用いることで、第１の選択画像の撮像位置からある程度離れた位置から撮像された後続画像を、第２の選択画像として選択できる。
【００２０】
ただし、上記の条件だけで第２の選択画像が選択された場合、各選択画像に写る被写体の領域の間で重複する領域が小さいことがあり得る。その場合、選択画像間における対応特徴点の数が少なくなり、特徴点の３次元座標を算出できない可能性がある。そこで、画像選択部１２は、撮像位置間距離に加えて対応特徴点の数を用いて第２の選択画像を判定することで、特徴点の３次元座標を精度よく算出可能な適切な第２の選択画像を選択できる可能性が高まる。その結果、得られた特徴点マップ１１を用いて仮想的な画像の重畳表示が行われた場合の重畳位置精度を向上させることができる。
【００２１】
〔第２の実施の形態〕
次に、図１の３次元座標算出装置１の機能と、特徴点マップを用いた画像重畳表示機能とを備える端末装置の例について説明する。
【００２２】
図２は、第２の実施の形態に係る端末装置のハードウェア構成例を示す図である。第２の実施の形態に係る端末装置１００は、図２に示すような携帯型のコンピュータとして実現される。
【００２３】
図２に示す端末装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えば、ＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。また、プロセッサ１０１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００２４】
プロセッサ１０１には、バス１０９を介して、ＲＡＭ（Random Access Memory）１０２と複数の周辺機器が接続されている。
ＲＡＭ１０２は、端末装置１００の主記憶装置として使用される。ＲＡＭ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）プログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。
【００２５】
バス１０９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）１０３、表示装置１０４、入力装置１０５、読み取り装置１０６、無線通信インタフェース１０７およびカメラ１０８がある。
【００２６】
ＨＤＤ１０３は、端末装置１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤ（Solid State Drive）などの他の種類の不揮発性記憶装置を使用することもできる。
【００２７】
表示装置１０４は、プロセッサ１０１からの命令に従って、画像をその画面に表示する。表示装置１０４としては、液晶ディスプレイや、有機ＥＬ（ElectroLuminescence）ディスプレイなどがある。
【００２８】
入力装置１０５は、ユーザによる入力操作に応じた信号をプロセッサ１０１に送信する。入力装置１０５としては、例えば、表示装置１０４の表示面に配置されるタッチパネルや、タッチパッド、マウス、トラックボール、操作キーなどがある。
【００２９】
読み取り装置１０６には、可搬型記録媒体１０６ａが脱着される。読み取り装置１０６は、可搬型記録媒体１０６ａに記録されたデータを読み取ってプロセッサ１０１に送信する。可搬型記録媒体１０６ａとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【００３０】
無線通信インタフェース１０７は、無線通信により他の装置との間でデータの送受信を行う。
カメラ１０８は、撮像素子によって得られた画像信号をデジタル化して、プロセッサ１０１に送信する。
【００３１】
以上のようなハードウェア構成によって、端末装置１００の処理機能を実現することができる。
ところで、上記の端末装置１００は、カメラ１０８によって撮像された画像を表示装置１０４に表示させるとともに、その撮像画像上に仮想的な画像を重畳表示させる機能を備える。本実施の形態では、仮想的な画像の例として、作業者による作業を支援するための作業支援情報を撮像画像上に重畳表示させるものとする。
【００３２】
この場合、作業者は、作業の対象とする作業対象物が存在する作業空間において、端末装置１００を携帯する。作業対象物には、作業の段階ごとに所定位置にマーカが貼付されている。マーカの内部に表示されたパターンは、作業段階ごとに異なっている。
【００３３】
端末装置１００においては表示装置１０４の表示面に対する裏面側にカメラ１０８が取り付けられているものとすると、作業者は、端末装置１００を作業対象物にかざして、作業対象の領域をカメラ１０８によって撮像する。すると、端末装置１００は、撮像された画像からマーカを認識し、そのマーカの内部パターンの認識結果から作業段階を特定する。端末装置１００は、特定した作業段階に対応付けられた作業支援情報を撮像画像上の適切な位置に重畳して表示させる。
【００３４】
この作業支援情報のような仮想的な画像を所定の位置の重畳表示させる方法としては、大別して、現実空間上の既知の位置に配置された既知の形状のマーカを使用する“マーカベース方式”と、このようなマーカを使用しない“マーカレス方式”とに大別される。端末装置１００では、少なくとも、マーカレス方式による画像の重畳表示が可能になっている。
【００３５】
マーカレス方式では、対象物やその近傍に存在する複数の特徴点それぞれの３次元座標があらかじめ登録された特徴点マップが用いられる。端末装置１００は、撮像画像から特定された複数の特徴点を特徴点マップに登録された特徴点に対応付けることで、対象物に対するカメラ１０８の位置および姿勢を推定する。端末装置１００は、その推定結果に応じた撮像画像上の適切な位置に仮想的な画像を重畳表示させる。
【００３６】
さらに、端末装置１００は、カメラ１０８による撮像画像に基づいて特徴点マップを作成する機能も備える。特徴点マップの作成のためには、撮像画像の中から２つの画像を選択する必要がある。
【００３７】
図３は、特徴点マップに登録される特徴点の３次元座標について示す図である。特徴点マップを作成する際、作業者は、まず、第１カメラ位置２０１において、対象物が写るように第１画像２１１を撮像する。その後、作業者は、場所を移動し、第２カメラ位置２０２において、対象物が写るように第２画像２１２を撮像する。
【００３８】
第１画像２１１と第２画像２１２とからは、対応する特徴点が複数抽出される。特徴点マップには、抽出された対応する特徴点のそれぞれについての３次元空間における座標が登録される。例えば、第１画像２１１と第２画像２１２のそれぞれから、対応する特徴点として特徴点２２１，２２２が抽出されたものとする。特徴点２２１，２２２は、対象物上の特徴点２３０が第１画像２１１および第２画像２１２にそれぞれ投影されたものである。特徴点マップには、特徴点２３０の３次元座標が登録される。ここで、第１画像２１１と第２画像２１２のそれぞれから所定個数以上の対応する特徴点が抽出された場合、第１画像２１１および第２画像２１２における特徴点の座標を用いて、三角測量の原理により各特徴点の３次元座標を復元することができる。
【００３９】
ここで、第１カメラ位置２０１と第２カメラ位置２０２をそれぞれどのような位置に設定するかにより、特徴点マップの品質が変化する。例えば、第１カメラ位置２０１と第２カメラ位置２０２の少なくとも一方が適切な位置に設定されなかった場合、特徴点マップに登録される各特徴点の３次元座標の位置関係に歪みが生じる。低品質な特徴点マップが利用された場合、作業支援情報の重畳表示位置の精度が低下する。
【００４０】
端末装置１００を使用する作業者は、必ずしも三角測量の原理に詳しい訳ではないので、第１カメラ位置２０１と第２カメラ位置２０２をどのように設定したらよいかを判定できない。このため、作業者によって第１カメラ位置２０１と第２カメラ位置２０２とが判定された場合、特徴点マップの品質が低下する可能性がある。そこで、端末装置１００は、下記で説明するように、特徴点マップの作成のために適切な第１カメラ位置２０１と第２カメラ位置２０２を自動的に判定するための機能を備えている。
【００４１】
図４は、端末装置が備える処理機能の構成例を示すブロック図である。端末装置１００は、マップ作成部１１０、重畳表示制御部１２０および記憶部１３０を備える。マップ作成部１１０および重畳表示制御部１２０の処理は、例えば、プロセッサ１０１が所定のプログラムを実行することで実現される。記憶部１３０は、例えば、ＲＡＭ１０２またはＨＤＤ１０３の記憶領域として実現される。
【００４２】
記憶部１３０には、少なくとも、特徴点マップ１３１および重畳画像情報１３２が記憶される。特徴点マップ１３１は、作業段階ごとに用意される。特徴点マップ１３１には、作業段階に対応する作業対象物およびその周囲における複数の特徴点の３次元座標が登録されている。重畳画像情報１３２には、各作業段階において撮像画像上に重畳表示させる作業支援情報が登録されている。
【００４３】
重畳表示制御部１２０は、特徴点マップ１３１を参照しながら、カメラ１０８による撮像画像上に所定の作業支援情報を重畳表示させる。より具体的には、前述のように、重畳表示制御部１２０は、撮像された画像からマーカを認識し、そのマーカの内部パターンの認識結果から作業段階を特定する。重畳表示制御部１２０は、特定した作業段階に対応付けられた作業支援情報を重畳画像情報１３２から読み出し、読み出した作業支援情報を撮像画像上の適切な位置に重畳して表示させる。
【００４４】
なお、重畳表示制御部１２０は、マーカレス方式だけでなく、マーカベース方式による作業支援情報の重畳表示処理を実行可能であってもよい。この場合、例えば、重畳表示制御部１２０は、撮像画像からマーカが認識できている間はマーカベース方式での重畳表示処理を行い、マーカが認識できなくなったとき、マーカレス方式での重畳表示処理に切り替えて実行してもよい。
【００４５】
マップ作成部１１０は、カメラ１０８から順次取得される撮像画像から、特徴点マップの作成のために使用する１枚目の画像（第１画像）と２枚目の画像（第２画像）とを選択する。マップ作成部１１０は、選択した第１画像と第２画像に基づいて特徴点マップ１３１を作成し、記憶部１３０に登録する。なお、マップ作成部１１０は、第１画像および第２画像の選択の際、作業対象物に配置されたマーカの認識結果を利用する。このマーカは、作業段階を識別するためのマーカと共通であってもよい。
【００４６】
マップ作成部１１０は、画像取得部１１１、位置姿勢推定部１１２、特徴点抽出部１１３、カメラ位置判定部１１４および３次元復元部１１５を備える。
画像取得部１１１は、カメラ１０８によって撮像された撮像画像を取得して、位置姿勢推定部１１２および特徴点抽出部１１３に供給する。
【００４７】
位置姿勢推定部１１２は、画像取得部１１１から入力される撮像画像からマーカを認識し、マーカの認識結果に基づいてカメラ１０８による撮像位置および撮像姿勢を示す情報を算出する。以下、カメラ１０８による撮像位置および撮像姿勢を示す情報を“撮像位置姿勢情報”と記載する場合がある。
【００４８】
特徴点抽出部１１３は、画像取得部１１１から入力される撮像画像から特徴点を抽出する。また、特徴点抽出部１１３は、第１画像が選択された後、第１画像から抽出された複数の特徴点を、その後に入力される撮像画像から追跡する。
【００４９】
カメラ位置判定部１１４は、位置姿勢推定部１１２および特徴点抽出部１１３による処理結果に基づいて、カメラ１０８が第１画像および第２画像をそれぞれ取得するための適切な位置にあるかを判定する。以下、第１画像を取得するためのカメラ１０８の適切な位置を“第１カメラ位置”と記載し、第２画像を取得するためのカメラ１０８の適切な位置を“第２カメラ位置”と記載する場合がある。なお、後述するように、カメラ１０８が第１カメラ位置にあることについては、ユーザの入力操作があったタイミングや任意のタイミングなど、位置姿勢推定部１１２および特徴点抽出部１１３による処理結果に基づかずに決定される場合もある。
【００５０】
３次元復元部１１５は、カメラ１０８が第１カメラ位置にあるときに取得された第１画像と、カメラ１０８が第２カメラ位置にあるときに取得された第２画像とに基づいて、特徴点マップ１３１を作成する。また、３次元復元部１１５は、すでに作成された特徴点マップ１３１に、新たに算出された特徴点の３次元座標の情報を追加したり、新たに算出された特徴点の３次元座標の情報によって既存の特徴点マップ１３１の一部を更新することもできる。
【００５１】
次に、マップ作成部１１０の処理のうち、後述するマップ作成部１１０の処理例１〜５で共通する処理について説明する。
（１）撮像位置姿勢情報の算出処理
まず、位置姿勢推定部１１２による撮像位置姿勢情報の算出処理の例について説明する。作業支援情報の重畳対象となる対象物の表面、またはその近傍には、形状が既知のマーカがあらかじめ配置される。位置姿勢推定部１１２は、画像取得部１１１から入力される撮像画像からマーカを認識し、マーカの認識結果に基づいて撮像位置姿勢情報を算出する。
【００５２】
図５は、マーカの例を示す図である。マーカ２５０は、矩形の外枠２５１を有するとともに、外枠２５１の内側に内部パターン２５２を含む。内部パターン２５２は、作業段階ごとに異なるパターンとなっており、内部パターン２５２によって作業段階を識別可能になっている。
【００５３】
位置姿勢推定部１１２は、撮像画像に含まれるマーカ２５０の外枠２５１の４つの頂点についての、撮像画像における座標を、例えば次のような手順で検出する。まず、位置姿勢推定部１１２は、撮像画像の各画素を所定のしきい値と比較することで、撮像画像を２値化画像に変換する。次に、位置姿勢推定部１１２は、２値化画像にラベリングを行うことで、マーカ２５０の輪郭を検出する。次に、位置姿勢推定部１１２は、検出された輪郭から、４つの頂点を有する四角形を抽出し、画像における４つの頂点を検出する。なお、位置姿勢推定部１１２は、抽出された四角形の内部のパターンをあらかじめ用意されたテンプレートパターンとマッチングすることで、検出されたマーカが所望のマーカであることを認識する。
【００５４】
次に、位置姿勢推定部１１２は、マーカ２５０の４つの頂点の座標に基づいて、マーカ２５０に対する撮像位置および撮像姿勢を示す撮像位置姿勢情報を算出する。撮像位置姿勢情報は、回転移動成分の情報と平行移動成分の情報とを含む。前者の情報として、回転行列Ｒが算出され、後者の情報として、並進ベクトルＴが算出される。
【００５５】
ここで、マーカ座標系を、行列［Ｘm  Ｙm  Ｚm  １］Tと定義する。なお、右上に付した“Ｔ”は転置行列を示す。マーカ座標系とは、マーカ２５０の中心を原点とし、マーカ２５０の面をＸ−Ｙ平面とした３次元座標系である。また、カメラ座標系を、行列［Ｘc  Ｙc  Ｚc  １］Tと定義する。カメラ座標系とは、カメラ１０８の焦点を原点とし、撮像方向の中心をＺ軸とする３次元座標系である。さらに、画像座標系を、行列［ｘc  ｙc  １］Tと定義する。画像座標系とは、撮像画像の左上を原点とする２次元座標系である。
【００５６】
回転行列Ｒと並進ベクトルＴは、マーカ座標系とカメラ座標系との間の座標変換を示す次の式（１）によって定義される。回転行列Ｒは３行３列の行列として表され、並進ベクトルＴは３行１列の行列として表される。
【００５７】
【数１】
0006435750.tif 000002
【００５８】
また、カメラ座標系から画像座標系への射影変換は、次の式（２）のように定義される。また、式（２）における行列Ｐは、式（３）のように表される。
【００５９】
【数２】
0006435750.tif 000003
【００６０】
式（２）のｈはスカラーとする。また、行列Ｐは、カメラキャリブレーションから求められる焦点距離および画角から計算される内部パラメータを示す。行列Ｐは、例えば、既知の大きさのマーカを既知の距離に設置した状態でマーカを撮像して得られる撮像画像から、あらかじめ求められる。
【００６１】
回転行列Ｒは、例えば、次のような手順で算出される。位置姿勢推定部１１２は、撮像画像におけるマーカ２５０の４つの頂点の座標から、マーカ２５０の４つの辺のうちの対向する辺ｌ1，ｌ2を示す式を求める。位置姿勢推定部１１２は、辺ｌ1，ｌ2を示す式と上記の式（２），式（３）とを用いて、辺ｌ1とカメラの焦点とを通る面Ｓ1を表す式と、辺ｌ2とカメラの焦点とを通る面Ｓ2を表す式とを算出する。
【００６２】
位置姿勢推定部１１２は、面Ｓ1，Ｓ2のそれぞれの法線ベクトルｎ1，ｎ2の外積を計算することで、辺ｌ1，ｌ2を含む平面の方向ベクトル（単位ベクトル）Ｖ1を算出する。また、位置姿勢推定部１１２は、マーカ２５０の４つの辺のうちの他の辺ｌ3，ｌ4についても上記と同様の計算を行うことで、辺ｌ3，ｌ4を含む平面の方向ベクトル（単位ベクトル）Ｖ2を算出する。さらに、位置姿勢推定部１１２は、方向ベクトルＶ1，Ｖ2を含む平面に対して直交する方向ベクトル（単位ベクトル）Ｖ3を算出する。上記の回転行列Ｒは、Ｒ＝［Ｖ1  Ｖ2  Ｖ3］として求められる。
【００６３】
また、並進ベクトルＴは、例えば、次のような手順で算出される。上記手順で得られた回転行列Ｒと、撮像画像上のマーカ２５０の４つの頂点の座標とを上記の式（１），式（２）に代入することで、並進ベクトルＴ［ｔ1  ｔ2  ｔ3］Tにおけるｔ1，ｔ2，ｔ3に関する連立方程式が得られる。位置姿勢推定部１１２は、この連立方程式を最小二乗法によって解くことで、並進ベクトルＴ［ｔ1  ｔ2  ｔ3］Tを算出する。
【００６４】
なお、本実施の形態では、位置姿勢推定部１１２は、上記手順で求めた回転行列Ｒを、３次元の回転ベクトルｒに変換する。変換方法としては、例えば、Ｒｏｄｒｉｇｕｅｓの公式と呼ばれる次の式（４）が用いられる。回転ベクトルｒ［ｒ1  ｒ2  ｒ3］の方向が回転軸の方向を示し、回転ベクトルｒ［ｒ1  ｒ2  ｒ3］の大きさが回転軸周りの回転量θを示す。
【００６５】
【数３】
0006435750.tif 000004
【００６６】
図６は、位置姿勢情報テーブルの例を示す図である。図６に示す位置姿勢情報テーブル１３３は、位置姿勢推定部１１２によって記憶部１３０に記録される。位置姿勢情報テーブル１３３には、画像取得部１１１から位置姿勢推定部１１２に入力される撮像画像ごとにレコードが作成される。各レコードには、時刻、位置姿勢情報、マーカ座標情報および選択フラグが登録される。
【００６７】
時刻は、撮像画像の撮像時刻を示す。なお、時刻の代わりに、撮像画像を識別可能な他の情報が登録されてもよい。位置姿勢情報は、前述した手順で位置姿勢推定部１１２によって算出された並進ベクトルＴ［ｔ1  ｔ2  ｔ3］Tと回転ベクトルｒ［ｒ1  ｒ2  ｒ3］の情報を示す。位置姿勢情報は、（ｔ1，ｔ2，ｔ3，ｒ1，ｒ2，ｒ3）という形式で登録される。マーカ座標情報は、撮像画像上のマーカ２５０の４つの頂点の座標を示す。選択フラグは、撮像画像が第１画像として選択されたか否かを示すフラグ情報である。選択フラグには、第１画像として選択された場合、“Ｔｒｕｅ”が登録され、第１画像として選択されなかった場合、“Ｆａｌｓｅ”が登録される。
【００６８】
（２）特徴点の抽出処理
次に、特徴点抽出部１１３による特徴点の抽出処理および追跡処理の例について説明する。
【００６９】
特徴点抽出部１１３は、画像取得部１１１から入力される撮像画像から、例えばＦＡＳＴ（Features from Accelerated Segment Test）特徴抽出法により特徴点を複数抽出する。なお、特徴点の抽出法としてはこの方法に限らず、例えば、Ｈａｒｒｉｓ特徴抽出法や、“Good Features To Track”と呼ばれる方法など、コーナーを特徴点とする方法を用いてもよく、あるいは、ＳＩＦＴ（Scale-Invariant Feature Transform）やＳＵＲＦ（Speeded Up Robust Features）に代表される局所特徴量を抽出する方法を用いてもよい。
【００７０】
また、特徴点抽出部１１３は、第１画像が選択された後、第１画像から抽出された特徴点が、その後に入力される撮像画像のどの位置に移動しているかを追跡する。特徴点抽出部１１３は、例えば、ＬＫ（Lucas-Kanade）オプティカルフローを用いた特徴点追跡を行う。ＬＫオプティカルフローでは、一方の画像の小領域に類似する領域と、他方の画像におけるこの小領域と同じ領域の周囲から探索するものであり、その際に、画像間で移動する画素の画素値が一定であるという拘束条件を用いて計算を行う。
【００７１】
図７は、特徴点情報テーブルの例を示す図である。図７に示す特徴点情報テーブル１３４は、特徴点抽出部１１３によって記憶部１３０に記録される。
特徴点情報テーブル１３４には、第１画像から抽出された特徴点ごとにレコードが作成される。各レコードには、特徴点を識別する特徴点番号、特徴点の第１画像内の座標、特徴点の後続画像内の座標、および追跡フラグが登録される。後続画像とは、第１画像が選択された後に画像取得部１１１から特徴点抽出部１１３に入力される撮像画像である。
【００７２】
特徴点抽出部１１３は、第１画像が選択され、その第１画像から特徴点が抽出されると、抽出された各特徴点に対応するレコードを特徴点情報テーブル１３４に作成するとともに、各レコードに特徴点番号と第１画像内の座標を登録する。その後、特徴点抽出部１１３は、後続画像が入力されて特徴点の追跡が行われるたびに、各レコードにおける後続画像内の座標と追跡フラグとを更新する。第１画像内の特徴点に対応する特徴点が後続画像からも抽出された場合、特徴点抽出部１１３は、該当レコードの後続画像内の座標の欄に抽出された特徴点の座標を登録するとともに、対応する追跡フラグを“Ｔｒｕｅ”にする。一方、第１画像内の特徴点に対応する特徴点が後続画像から抽出されなかった場合、特徴点抽出部１１３は、該当レコードの後続画像内の座標の欄を空欄にするとともに、対応する追跡フラグを“Ｆａｌｓｅ”にする。
【００７３】
（３）特徴点マップの作成処理
次に、３次元復元部１１５による特徴点マップの作成処理の例について説明する。特徴点マップの作成処理は、２つのカメラ間の基礎行列Ｆの算出、各カメラ間の透視投影行列Ｐprの算出、各対応特徴点についての３次元座標の算出および登録、という３段階の処理を含む。
【００７４】
まず、３次元復元部１１５は、次のような手順で基礎行列Ｆを算出する。３次元空間上のある点を、異なる位置にあるカメラから撮像した２つの撮像画像に投影したときの各撮像画像上の座標を、それぞれ（ｕ，ｖ），（ｕ’，ｖ’）とする。座標（ｕ，ｖ）と座標（ｕ’，ｖ’）は、次の式（５）を満たす。式（５）は、エピポーラ拘束と呼ばれる条件を示す。
【００７５】
【数４】
0006435750.tif 000005
【００７６】
式（５）において、ｆ11〜ｆ13，ｆ21〜ｆ23，ｆ31〜ｆ33という９つの成分を含む３行３列の行列が、上記の基礎行列Ｆである。基礎行列Ｆの成分は９個であるが、基礎行列Ｆには定数倍の不定性が存在するため、実質的な未知数は８個となる。そのため、画像間で最低８個の対応特徴点が得られれば、基礎行列Ｆを決定することができる。３次元復元部１１５は、第１画像と後続画像とから抽出された８個の対応特徴点の各画像における座標から、例えば８点アルゴリズムと呼ばれる方法により、基礎行列Ｆを算出する。
【００７７】
次に、３次元復元部１１５は、次のような手順で透視投影行列Ｐprを算出する。ここで、行列Ａをカメラの内部パラメータとする。この内部パラメータは、あらかじめ求めることができる。３次元復元部１１５は、算出された基礎行列Ｆと行列Ａとを用いて、次の式（６）によってカメラ間の基本行列Ｅを算出する。
Ｅ＝ＡＦTＡ      ・・・（６）
次に、３次元復元部１１５は、算出された基本行列Ｅを、次の式（７）を用いて特異値分解する。
Ｅ＝ＵΣＶT      ・・・（７）
３次元復元部１１５は、得られた行列Ｕを用いて、次の式（８−１），式（８−２）から相対回転行列Ｒrを算出する。なお、相対回転行列Ｒrは、Ｒr1とＲr2の２種類得られる。
【００７８】
【数５】
0006435750.tif 000006
【００７９】
次に、ｔを行列Ｕの３行目の成分とすると、３次元復元部１１５は、透視投影行列Ｐprを次の式（９−１）〜式（９−４）によって４種類算出する。なお、行列（Ｒx｜ｔ）は、３行３列の行列Ｒxと行列ｔとを結合した３行４列の行列を意味する。
Ｐpr1＝Ａ（Ｒr1｜ｔ）      ・・・（９−１）
Ｐpr2＝Ａ（Ｒr1｜−ｔ）      ・・・（９−２）
Ｐpr3＝Ａ（Ｒr2｜ｔ）      ・・・（９−３）
Ｐpr4＝Ａ（Ｒr2｜−ｔ）      ・・・（９−４）
次に、３次元復元部１１５は、次のような手順で対応特徴点の３次元座標を算出する。上記の透視投影行列Ｐprの成分をｐ11〜ｐ14，ｐ21〜ｐ24，ｐ31〜ｐ34と表すと、３次元復元部１１５は、次の式（１０）で表される３次元座標（Ｘ，Ｙ，Ｚ）に関する連立方程式の最小二乗解を、透視投影行列Ｐpr1〜Ｐpr4のそれぞれについて解く。
【００８０】
【数６】
0006435750.tif 000007
【００８１】
３次元復元部１１５は、復元済みの点がともにカメラの前方にあるという条件を用い、上記で得られた４種類の解から最適な１つの解を計算する。３次元復元部１１５は、このような計算をすべての対応特徴点について繰り返し、各対応特徴点の３次元座標を算出する。なお、このような手順で得られた３次元座標は、第１画像の撮像位置を基準とした３次元空間（カメラ座標系の空間）の座標であり、第１画像の撮像位置が原点となる。
【００８２】
３次元復元部１１５は、第１画像と第２画像との間の各対応特徴点の３次元座標を上記手順で算出し、特徴点マップ１３１に登録する。
次に、マップ作成部１１０の処理例について説明する。
【００８３】
＜処理例１＞
図８は、処理例１の手順を示すフローチャートである。図８の処理においては、ステップＳ１１〜Ｓ１４からステップＳ１５〜Ｓ１８に続く処理が、第１画像に関する処理に対応し、その後に実行されるステップＳ１１〜Ｓ１４，Ｓ１９〜Ｓ２２の処理が、第２画像を選択するための処理に対応する。
【００８４】
［ステップＳ１１］画像取得部１１１は、カメラ１０８から撮像画像を取得し、位置姿勢推定部１１２および特徴点抽出部１１３に供給する。
［ステップＳ１２］位置姿勢推定部１１２は、画像取得部１１１から入力された撮像画像からマーカ２５０を検出し、撮像画像におけるマーカの４つの頂点の座標を算出する。位置姿勢推定部１１２は、位置姿勢情報テーブル１３３に当該撮像画像に対応するレコードを作成し、時刻の項目に現在の時刻を登録するとともに、マーカ座標情報の項目に、算出された４つの頂点の座標を登録する。
【００８５】
なお、図示しないが、ステップＳ１２で撮像画像からマーカが検出されなかった場合には、ステップＳ１１に戻り、次の撮像画像を用いた処理が実行される。
［ステップＳ１３］位置姿勢推定部１１２は、ステップＳ１２で算出した４つの頂点の座標に基づいて、当該撮像画像の撮像位置および撮像姿勢を示す位置姿勢情報を算出する。位置姿勢情報の算出方法については、上記の（１）項において説明した通りである。位置姿勢推定部１１２は、位置姿勢情報テーブル１３３にステップＳ１２で作成したレコードにおける位置姿勢情報の項目に、算出した位置姿勢情報を登録する。
【００８６】
［ステップＳ１４］カメラ位置判定部１１４は、カメラ位置決定数が“０”であるか、“１”であるかを判定する。カメラ位置決定数とは、特徴点マップ１３１の作成に用いる画像の撮像位置が決定された数を示す変数であり、記憶部１３０に記憶される。また、カメラ位置決定数は、図８の処理の開始時に“０”にリセットされる。
【００８７】
カメラ位置決定数が“０”である場合には、第１画像と第２画像の両方とも選択されていない。この場合、ステップＳ１５の処理が実行される。一方、カメラ位置決定数が“１”である場合、第１画像のみ決定済みである。この場合、ステップＳ１９の処理が実行される。
【００８８】
［ステップＳ１５］カメラ位置判定部１１４は、第１画像選択のためのユーザによる入力操作が行われたかを判定する。入力操作が行われた場合、ステップＳ１６の処理が実行される。一方、入力操作が行われなかった場合、カメラ位置判定部１１４は、ステップＳ１２で位置姿勢情報テーブル１３３に登録したレコードの選択フラグの項目に“Ｆａｌｓｅ”を登録する。そして、ステップＳ１１の処理が再度実行される。
【００８９】
［ステップＳ１６］カメラ位置判定部１１４は、ステップＳ１１で画像取得部１１１が取得した撮像画像を、第１画像として記憶部１３０に保存する。また、カメラ位置判定部１１４は、ステップＳ１２で位置姿勢情報テーブル１３３に登録したレコードの選択フラグの項目に“Ｔｒｕｅ”を登録する。
【００９０】
［ステップＳ１７］特徴点抽出部１１３は、保存された第１画像から特徴点を複数抽出する。特徴点の抽出方法については、上記の（２）項において説明した通りである。特徴点抽出部１１３は、抽出された特徴点それぞれに対応するレコードを特徴点情報テーブル１３４に作成し、各レコードに特徴点番号を割り振る。特徴点抽出部１１３は、各レコードにおける第１画像内の座標の項目に、対応する特徴点の座標を登録する。
【００９１】
［ステップＳ１８］カメラ位置判定部１１４は、カメラ位置決定数を“１”インクリメントする。この後、ステップＳ１１の処理が再度実行される。
以上の処理において、ステップＳ１４でカメラ位置決定数が“０”であり、ステップＳ１５でユーザ入力ありと判定された場合に、第１画像が選択される。また、第１画像に対応する位置姿勢情報が位置姿勢情報テーブル１３３の先頭レコードに登録されるとともに、第１画像内の特徴点の座標が特徴点情報テーブル１３４に登録される。
【００９２】
なお、図８の処理では、第１画像選択のためのユーザによる入力操作が行われたとき、その時点で取得されていた撮像画像が第１画像として選択される。しかし、第１画像の選択方法としては、入力操作を必要としない次のような方法がとられてもよい。例えば、カメラ位置判定部１１４は、撮像画像から所定のマーカが検出された場合に、その撮像画像を第１画像として選択してもよい。
【００９３】
次に、ステップＳ１４でカメラ位置決定数が“１”であった場合、以下の処理が実行される。なお、ステップＳ１４でカメラ位置決定数が“１”である場合、位置姿勢情報テーブル１３３には複数の撮像画像についての位置姿勢情報が登録された状態となっている。
【００９４】
［ステップＳ１９］特徴点抽出部１１３は、特徴点情報テーブル１３４に登録された各特徴点を、画像取得部１１１から入力された撮像画像から追跡する。特徴点の追跡方法については、上記の（２）項において説明した通りである。
【００９５】
特徴点抽出部１１３は、特徴点情報テーブル１３４に登録された特徴点に対応する特徴点を撮像画像から抽出できた場合には、特徴点情報テーブル１３４における該当レコードの後続画像内の座標の項目に、撮像画像上の特徴点の座標を登録する。これとともに、特徴点抽出部１１３は、同じレコードの追跡フラグの項目に“Ｔｒｕｅ”を登録する。
【００９６】
一方、特徴点抽出部１１３は、特徴点情報テーブル１３４に登録された特徴点に対応する特徴点を撮像画像から抽出できなかった場合には、特徴点情報テーブル１３４における該当レコードの後続画像内の画像の項目を空欄のままにする（または“ＮＵＬＬ”を登録する）。これとともに、特徴点抽出部１１３は、同じレコードの追跡フラグの項目に“Ｆａｌｓｅ”を登録する。
【００９７】
［ステップＳ２０］カメラ位置判定部１１４は、入力された撮像画像の撮像位置が前述した第２カメラ位置として適切かを判定するための信頼度ｓを算出する。後述するように、信頼度ｓは、第１画像の撮像時から撮像位置が十分移動したかを示す移動充足度と、十分な数の特徴点が追跡できているかを示す追跡成功度とに基づいて算出される。
【００９８】
［ステップＳ２１］カメラ位置判定部１１４は、算出された信頼度ｓが所定の条件を満たすかを判定する。条件を満たす場合、ステップＳ２２の処理が実行される。一方、条件を満たさない場合、カメラ位置判定部１１４は、特徴点情報テーブル１３４の後続画像内の座標および追跡フラグの各項目に登録された情報をすべて消去する。その後、ステップＳ１１の処理が実行される。
【００９９】
［ステップＳ２２］カメラ位置判定部１１４は、入力された撮像画像を、第２画像として記憶部１３０に保存する。
［ステップＳ２３］３次元復元部１１５は、特徴点情報テーブル１３４において追跡フラグが“Ｔｒｕｅ”であるレコードを少なくとも８つ選択する。３次元復元部１１５は、選択した各レコードに対応する特徴点についての第１画像での座標と第２画像での座標から、各特徴点の３次元座標を算出する。特徴点の３次元座標の算出方法については、上記の（３）項で説明した通りである。
【０１００】
３次元復元部１１５は、算出した各特徴点の３次元座標を特徴点マップ１３１に登録する。これにより、特徴点マップ１３１が作成される。
ここで、ステップＳ２０，Ｓ２１での第２カメラ位置の判定処理の詳細について説明する。
【０１０１】
図９は、処理例１における第２カメラ位置判定処理の手順を示すフローチャートである。図９において、ステップＳ１０１、Ｓ１０２の処理が図８のステップＳ２０の処理に対応し、ステップＳ１０３の処理が図８のステップＳ２１の処理に対応する。
【０１０２】
［ステップＳ１０１］カメラ位置判定部１１４は、次の式（１１）によりカメラ間距離ｄを算出する。
【０１０３】
【数７】
0006435750.tif 000008
【０１０４】
式（１１）において、ｔf＝（ｔf1，ｔf2，ｔf3）は、第１画像から求められた位置姿勢情報の平行移動成分である。（ｔf1，ｔf2，ｔf3）は、位置姿勢情報テーブル１３３のレコードのうち、選択フラグが“Ｔｒｕｅ”であるレコードに登録された位置姿勢情報のうちの（ｔ1，ｔ2，ｔ3）に対応する。また、ｔs＝（ｔs1，ｔs2，ｔs3）は、入力された撮像画像から求められた位置姿勢情報の平行移動成分であり、位置姿勢情報テーブル１３３の最後尾レコードに登録された位置姿勢情報のうちの（ｔ1，ｔ2，ｔ3）に対応する。
【０１０５】
式（１１）は、第１画像から算出された並進ベクトルと入力された撮像画像から算出された並進ベクトルとの間のユークリッド距離を求めるものである。換言すると、式（１１）により、各画像の撮像位置間の３次元空間における距離が求められる。
【０１０６】
［ステップＳ１０２］カメラ位置判定部１１４は、次の式（１２）により信頼度ｓを算出する。
【０１０７】
【数８】
0006435750.tif 000009
【０１０８】
式（１２）において、ｍｉｎ（ｘ，ｙ）は、ｘ，ｙのうち小さい方の値を出力する演算を示す。Ｄは、基準カメラ間距離であり、理想的なカメラ間距離があらかじめ設定される。Ｎiは、第１画像から抽出された特徴点の個数であり、特徴点情報テーブル１３４のレコード数に対応する。Ｎcは、入力された撮像画像から抽出された、第１画像内の特徴点に対応する対応特徴点の個数であり、特徴点情報テーブル１３４において追跡フラグが“Ｔｒｕｅ”であるレコード数に対応する。すなわち、Ｎcは、入力された撮像画像において追跡に成功した対応特徴点の個数である。
【０１０９】
式（１２）の右辺のうち、第１項は移動充足度を示し、第２項は追跡成功度を示す。
［ステップＳ１０３］カメラ位置判定部１１４は、信頼度ｓが所定のしきい値σ1より大きいかを判定する。信頼度ｓがしきい値σ1より大きい場合、入力された撮像画像の撮像位置は第２カメラ位置として適切であると判定され、図８のステップＳ２２の処理が実行される。一方、信頼度ｓがしきい値σ1以下である場合、入力された撮像画像の撮像位置は第２カメラ位置として適切ではないと判定される。この場合、カメラ位置判定部１１４は、特徴点情報テーブル１３４の後続画像内の座標および追跡フラグの各項目に登録された情報をすべて消去する。その後、ステップＳ１１の処理が実行される。
【０１１０】
ここで、上記の式（１２）における移動充足度の値は、理想的なカメラ間距離に対する現在のカメラ間距離の割合を示す。仮に、Ｎc＝Ｎiであったとすると、ステップＳ１０３の判定では、現在のカメラ間距離が基準カメラ間距離Ｄに基づく所定距離以上離れている場合に、現在の撮像位置が第２カメラ位置として適切であると判定される。
【０１１１】
一般的に、特徴点マップ１３１を作成するための２画像の撮像位置が近づき過ぎていると、特徴点の３次元座標の算出精度が低下する。上記のような移動充足度に基づく判定が行われることで、第１画像の撮像位置から所定距離以上確実に離れた撮像位置で撮像された画像が、第２画像として選択される。これにより、特徴点の３次元座標の算出精度を高め、作成される特徴点マップ１３１の品質を向上させることができる。なお、基準カメラ間距離Ｄの値の例としては１００ｍｍを適用することができ、しきい値σ1の値の例としては０．９を適用することができる。
【０１１２】
また、特徴点の３次元座標の算出精度を悪化させ得るカメラの移動動作として、パンニングと呼ばれる動作がある。パンニングは、カメラの移動動作に回転成分が多く含まれる場合の動作である。第１画像の選択時から第２画像の選択時までにパンニングが行われた場合、撮像される画像における被写体の変位が大きくなったとしても、カメラの３次元位置の変化が小さい場合があり、その場合には特徴点の３次元座標の算出精度が低下する。画像の選択の仕方に詳しくないユーザが入力操作によって第２画像を選択する場合、ユーザは、撮像された画像における被写体の動きが観察されたときに、パンニングが行われたにもかかわらず第２画像を選択してしまう可能性がある。上記のように移動充足度に基づいて第２画像が選択されることで、このようなケースの発生可能性を低減できる。
【０１１３】
一方、特徴点マップ１３１の作成に適したカメラの移動動作としては、カメラの位置が対象物を中心として周回するような“ピボット”と呼ばれる動作がある。ピボットが行われた場合には、カメラの３次元座標の変位量が比較的大きくなる。上記のように移動充足度に基づいて第２画像が選択された場合には、ピボットが行われたときに第２画像が選択されやすくなる。
【０１１４】
次に、上記の式（１２）における追跡成功度の値は、第１画像から抽出された特徴点のうち、入力された撮像画像で追跡できた対応特徴点の数の割合を示す。選択された２画像間の対応特徴点の数が多いほど、各対応特徴点の３次元座標を精度よく算出できる。このため、追跡成功度が高いほど、第２画像としての信頼度が高いと判定することで、対応特徴点の３次元座標の算出精度を高めることができる。
【０１１５】
ここで、追跡成功度を用いずに、移動充足度のみを用いた場合（すなわち、式（１２）の右辺の第２項を含めない場合）でも、特徴点の３次元座標の算出精度を高める効果は得られる。ただし、移動充足度のみ用いた場合には、例えば、第１画像に写る被写体領域とその後の撮像画像に写る被写体領域との重複領域が小さく、ごく狭い被写体領域からしか対応特徴点が得られないケースが発生し得る。これに対して、式（１２）のように移動充足度だけでなく追跡成功度も用いることで、このようなケースの発生可能性を低減することができる。
【０１１６】
なお、追跡成功度を用いて判定する代わりに、第１画像から抽出された特徴点のうち、入力された撮像画像で追跡できた対応特徴点の数が所定のしきい値より大きいかを判定する方法を用いることもできる。この場合、しきい値としては８以上の値が用いられる。ただし、追跡成功度を用いた場合の方が、上記のように第１画像に写る被写体領域と第２画像に写る被写体領域との重複領域が大きくなるように第２画像を選択することができる。
【０１１７】
＜処理例２＞
上記の処理例１では、基準カメラ間距離Ｄとして固定値が用いられていた。これに対して、処理例２では、基準カメラ間距離Ｄを、マーカ２５０と撮像位置との間の距離に応じて動的に変更可能にする。以下、処理例２について、処理例１と異なる部分についてのみ説明する。
【０１１８】
図１０は、処理例２における第２カメラ位置判定処理の手順を示すフローチャートである。図１０の処理は、図９の処理におけるステップＳ１０１とステップＳ１０２との間にステップＳ１１１を追加したものである。なお、ステップＳ１１１は、ステップＳ１０１の前に追加されてもよい。
【０１１９】
［ステップＳ１１１］カメラ位置判定部１１４は、次の式（１３）により基準カメラ間距離Ｄを算出する。
【０１２０】
【数９】
0006435750.tif 000010
【０１２１】
式（１３）において、Ｚは、カメラ・マーカ間距離であり、入力された撮像画像から求められた並進ベクトルＴの距離として算出される。ｄｒは、画素移動量の最適値であり、あらかじめ設定される。ｆは、カメラの焦点距離であり、あらかじめ設定される。Ｄiniは、基準カメラ間距離の初期値であり、例えば、処理例１における基準カメラ間距離Ｄの設定値と同じ値が設定される。
【０１２２】
図１０のステップＳ１０２では、ステップＳ１１１で算出された基準カメラ間距離Ｄを用いて信頼度ｓが計算される。
ここで、処理例１のように基準カメラ間距離Ｄが固定値である場合、カメラと対象物との距離が近づいた際に第１画像と現画像との間で重複して撮像される領域が小さくなり、その結果、対応特徴点の個数が減少する可能性がある。これに対して、処理例２では、カメラ・マーカ間距離Ｚがある程度短くなった場合に、基準カメラ間距離Ｄが短くなり、処置例１の場合より撮像位置の移動量が短い場合でも第２画像が選択される。その結果、カメラと対象物との距離が近づき過ぎる前に第２画像が選択され、対応特徴点数の減少を抑制できる。
【０１２３】
＜処理例３＞
第１画像が選択された後に前述したパンニングが行われた場合には、カメラ間距離ｄが０に近い値をとるため、時間が経過しても第２画像が選択されないという現象が発生し得る。そこで、処理例３では、パンニングに近いカメラの動きを検知して、ユーザにその旨を通知し、カメラ位置を大きく移動させるように促すことができるようにする。以下、処理例３について、処理例１と異なる部分についてのみ説明する。
【０１２４】
図１１は、処理例３における第２カメラ位置判定処理の手順を示すフローチャートである。図１１の処理は、図９の処理にステップＳ１２１〜Ｓ１２４を追加したものである。なお、図１０の処理にステップＳ１２１〜Ｓ１２４を追加することも可能である。
【０１２５】
［ステップＳ１２１］カメラ位置判定部１１４は、マーカ間の相対距離Ｍdと、マーカ間の相対角度Ｍaを算出する。
［ステップＳ１２２］カメラ位置判定部１１４は、算出された相対角度Ｍaを用いて、相対角度の理論値αを算出する。
【０１２６】
［ステップＳ１２３］カメラ位置判定部１１４は、マーカ間の相対角度Ｍaとその理論値αとの差分がしきい値σ2未満かを判定する。差分がしきい値σ2の場合、パンニングが行われていないと判定されて、ステップＳ１０１の処理が実行される。一方、差分がしきい値σ2以上の場合、パンニングに近い動きが行われたと判定されて、ステップＳ１２４の処理が実行される。
【０１２７】
［ステップＳ１２４］カメラ位置判定部１１４は、ユーザに対する通知情報を出力する。通知情報には、例えば、カメラの動かし方が適切でないこと、カメラの位置を移動させるように促すような内容などが含まれる。このような通知情報は、例えば、表示装置１０４に表示されるか、または、音声情報として出力される。この後、図８のステップＳ１１の処理に戻る。
【０１２８】
以下、図１１の処理における計算方法の詳細について説明する。
図１２は、パンニングが行われた場合のマーカとカメラとの位置関係を示す図である。図１２では、カメラ１０８の位置が全く変化せず、カメラ１０８が撮像方向を軸として回転するという完全なパンニング動作が行われた場合を想定する。
【０１２９】
位置２５０ａ，２５０ｂは、それぞれ第１画像および現画像の撮像時におけるカメラ１０８を中心としたマーカ２５０の相対位置を示す。すなわち、第１画像の撮像後にカメラ１０８の撮像方向が図１２中の右回り方向に回転した場合、カメラ１０８に対するマーカ２５０の相対位置は位置２５０ａから位置２５０ｂに変化する。マーカ間の相対距離Ｍdは、カメラ座標系における位置２５０ａと位置２５０ｂとの距離を示す。マーカ間の相対角度Ｍaは、カメラ１０８の位置から位置２５０ａへの直線と、カメラ１０８の位置から位置２０５ｂへの直線との角度を示す。
【０１３０】
カメラ位置判定部１１４は、第１画像から算出された位置姿勢情報と、入力された撮像画像から算出された位置姿勢情報とを用いて、相対距離Ｍdおよび相対角度Ｍaを算出する。ここで、位置姿勢推定部１１２によって算出される位置姿勢情報（ｔ1，ｔ2，ｔ3，ｒ1，ｒ2，ｒ3）は、マーカ座標系における位置および姿勢を示す。このため、図１２のような相対距離Ｍdおよび相対角度Ｍaを算出するためには、算出された位置姿勢情報（ｔ1，ｔ2，ｔ3，ｒ1，ｒ2，ｒ3）をカメラ座標系の値に変換する必要がある。
【０１３１】
下記の式（１４）は、マーカ座標系における回転ベクトルｒを回転行列Ｒ’に変換するための式である。この、式（１４）による変換は“ロドリゲス変換”と呼ばれる。また、式（１５）は、マーカ座標系における位置姿勢情報（ｔ1，ｔ2，ｔ3，ｒ1，ｒ2，ｒ3）を４行４列の姿勢行列Ｐpsに変換するための式である。
【０１３２】
【数１０】
0006435750.tif 000011
【０１３３】
カメラ１０８の位置を基準としたマーカ２５０の位置姿勢情報は、姿勢行列Ｐpsの逆行列にロドリゲス変換を施すことで得られる。ここで、第１画像の撮像位置を基準としたマーカ２５０の位置姿勢情報を（ｒmf，ｔmf）とし、入力された撮像画像（現画像）の撮像位置を基準としたマーカ２５０の位置姿勢情報を（ｒms，ｔms）とする。カメラ位置判定部１１４は、第１画像から得られた位置姿勢情報と、入力された撮像画像から得られた位置姿勢情報とを基に、次の式（１６−１），（１６−２）によって相対距離Ｍdおよび相対角度Ｍaを算出する。
Ｍd＝｜ｔms−ｔmf｜      ・・・（１６−１）
Ｍd＝｜ｒms−ｒmf｜      ・・・（１６−２）
また、カメラ位置判定部１１４は、カメラ１０８の位置が全く変化せず、カメラ１０８の撮像方向のみが回転した場合の相対角度の理論値αを、次の式（１７）によって算出する。
【０１３４】
【数１１】
0006435750.tif 000012
【０１３５】
上記のステップＳ１２３において、カメラ位置判定部１１４は、マーカ間の相対角度Ｍaとその理論値αとの差分がしきい値σ2未満の場合には、パンニングが行われていないと判定して、第２画像選択のための処理を継続する。一方、カメラ位置判定部１１４は、差分がしきい値σ2以上の場合には、パンニングに近い動きが行われたと判定し、ユーザに対して撮像位置を移動するように促す。このような処理により、第２画像が選択されるまでの時間を短縮できる。
【０１３６】
＜処理例４＞
処理例４では、第２画像だけでなく、第１画像についてもユーザに入力操作させずに自動的に選択可能にする。以下、処理例４について、処理例１〜３と異なる部分についてのみ説明する。
【０１３７】
図１３は、処理例４の手順を示すフローチャートである。図１３の処理は、図８におけるステップＳ１５〜Ｓ１７をステップＳ１３１〜Ｓ１３５に置き換えたものである。
［ステップＳ１３１］カメラ位置判定部１１４は、画像取得部１１１から入力された画像が第１画像として適するかを判定するための判定指標を算出する。
【０１３８】
［ステップＳ１３２］カメラ位置判定部１１４は、算出された判定指標が所定の条件を満たすかを判定する。判定指標が条件を満たす場合、ステップＳ１３３の処理が実行される。一方、判定指標が条件を満たさない場合、カメラ位置判定部１１４は、ステップＳ１２で位置姿勢情報テーブル１３３に登録したレコードの選択フラグの項目に“Ｆａｌｓｅ”を登録する。そして、ステップＳ１１の処理が再度実行される。
【０１３９】
ここで、ステップＳ１３で算出される判定指標の例としては、次の判定指標Ｉ１〜Ｉ３を適用可能である。
（判定指標Ｉ１：位置姿勢差分の平均値）
判定指標Ｉ１は、過去の時刻の撮像画像の撮像位置から現在の時刻の撮像画像の撮像位置との移動量に基づいて、カメラ１０８の動きが静止状態に近いかを示す指標である。カメラ１０８が一定以上の速度で移動していると、算出される位置姿勢情報の誤差が大きくなる可能性がある。判定指標Ｉ１を用いることにより、カメラ１０８がほぼ静止状態にあると判定された場合に、入力された撮像画像が第１画像として適すると判定することができる。
【０１４０】
判定指標Ｉ１は、現時刻の撮像画像の撮像位置と、過去の時刻の撮像画像の撮像位置との距離についての、過去の一定期間における平均値として算出される。現時刻の撮像画像の撮像位置と、過去の時刻の撮像画像の撮像位置との距離は、各撮像画像に基づく並進ベクトルＴの間のベクトル間距離（ユークリッド距離）として求められる。判定指標Ｉ１が所定のしきい値σ11以下である場合、カメラ１０８はほぼ静止状態にあると判定される。
【０１４１】
（判定指標Ｉ２：マーカのズレ量）
判定指標Ｉ２は、入力された撮像画像におけるマーカ２５０の位置が、撮像画像の中心からどれだけずれているかを示す指標である。撮像画像の周縁部付近にマーカ２５０が写っている場合、カメラ１０８の位置が動いていて、その後にマーカ２５０がフレームアウトしてしまう可能性が高くなり、第２画像を選択できる確率が低くなってしまう。また、周縁部付近にマーカ２５０が写っている撮像画像を第１画像として選択すると、その後に選択された第２画像との間で重複して写っている領域が小さくなる可能性も高まる。判定指標Ｉ２を用いることで、マーカ２５０の位置が撮像画像の中心に近い場合に、その撮像画像が第１画像に適すると判定することができる。
【０１４２】
カメラ位置判定部１１４は、撮像画像におけるマーカ２５０の４頂点の座標から、撮像画像におけるマーカ２５０の重心の座標を算出する。そして、算出された重心の座標と、撮像画像の中心画素の座標との距離を、判定指標Ｉ２として算出する。判定指標Ｉ２が所定のしきい値σ12以下である場合、マーカ２５０は撮像画像の中心に近い位置に写っていると判定される。
【０１４３】
（判定指標Ｉ３：マーカ面積）
判定指標Ｉ３は、入力された撮像画像に写っているマーカ２５０の面積を示す。撮像画像に写るマーカ２５０の面積が大き過ぎる場合、算出される位置姿勢情報の誤差が大きくなる可能性がある。また、マーカ２５０以外の領域から特徴点を抽出しにくくもなる。一方、撮像画像に写るマーカ２５０の面積が小さ過ぎる場合にも、算出される位置姿勢情報の誤差が大きくなる可能性がある。判定指標Ｉ３を用いることで、撮像画像上のマーカ２５０の面積が一定のレンジに含まれる場合に、その撮像画像が第１画像に適すると判定することができる。
【０１４４】
判定指標Ｉ３は、撮像画像におけるマーカ２５０の４頂点の座標から算出される。判定指標Ｉ３が所定のしきい値σ13以上で、所定のしきい値σ14以下である場合（ただし、σ13＜σ14）、マーカ２５０の面積が適切であると判定される。
【０１４５】
ステップＳ１３１では、上記の判定指標Ｉ１〜Ｉ３のうちの１つのみが算出されてもよいし、２つ以上が算出されてもよい。２つ以上が算出される場合、ステップＳ１３２では、２つの判定指標に基づく判定結果がともに、撮像画像が第１画像に適することを示す場合に、条件を満たすと判定され、ステップＳ１３３に処理が進められる。例えば、判定指標Ｉ１〜Ｉ３がすべて用いられる場合、判定指標Ｉ１がしきい値σ11以下であり、判定指標Ｉ２がしきい値σ12以下であり、判定指標Ｉ３がしきい値σ13以上、しきい値σ14以下であるとき、条件を満たすと判定される。
【０１４６】
［ステップＳ１３３］カメラ位置判定部１１４は、入力された撮像画像から特徴点を複数抽出する。特徴点の抽出方法については、上記の（２）項において説明した通りである。
【０１４７】
［ステップＳ１３４］カメラ位置判定部１１４は、抽出された特徴点の数が所定のしきい値σ14以上であるかを判定する。前述のように、対応特徴点が８個以上存在しないと対応特徴点の３次元座標を算出できないことから、しきい値σ14は８以上に設定される。特徴点の数がしきい値σ14以上の場合、ステップＳ１３５の処理が実行される。一方、特徴点の数がしきい値σ14未満の場合、カメラ位置判定部１１４は、ステップＳ１２で位置姿勢情報テーブル１３３に登録したレコードの選択フラグの項目に“Ｆａｌｓｅ”を登録する。そして、ステップＳ１１の処理が再度実行される。
【０１４８】
［ステップＳ１３５］カメラ位置判定部１１４は、入力された撮像画像を、第１画像として記憶部１３０に保存する。また、カメラ位置判定部１１４は、ステップＳ１２で位置姿勢情報テーブル１３３に登録したレコードの選択フラグの項目に“Ｔｒｕｅ”を登録する。さらに、カメラ位置判定部１１４は、ステップＳ１３３で抽出された特徴点それぞれに対応するレコードを特徴点情報テーブル１３４に作成し、各レコードに特徴点番号を割り振る。カメラ位置判定部１１４は、各レコードにおける第１画像内の座標の項目に、対応する特徴点の座標を登録する。その後、ステップＳ１８の処理が実行される。
【０１４９】
＜処理例５＞
処理例５では、すでに作成済みの特徴点マップ１３１に対して、新たに算出された特徴点の３次元座標を登録可能にする。以下、処理例５について、処理例１〜４と異なる部分についてのみ説明する。
【０１５０】
図１４は、処理例５の手順を示すフローチャートである。図１３の処理は、図８におけるステップＳ２３をステップＳ１４１，Ｓ１４２に置き換えたものである。なお、図８の代わりに、図１３におけるステップＳ２３をステップＳ１４１，Ｓ１４２に置き換えることも可能である。
【０１５１】
［ステップＳ１４１］３次元復元部１１５は、図８のステップＳ２３と同様の手順で、特徴点情報テーブル１３４において追跡フラグが“Ｔｒｕｅ”であるレコードにそれぞれ対応する特徴点の３次元座標を算出する。
【０１５２】
［ステップＳ１４２］ステップＳ１４１で算出された特徴点の３次元座標は、直近に選択された第１画像の撮像位置を基準とした座標値となっている。一方、作成済みの特徴点マップ１３１に登録された３次元座標は、直近に選択されたものとは異なる第１画像の撮像位置を基準とした座標値となっている。すなわち、ステップＳ１４１で算出された特徴点の３次元座標と、作成済みの特徴点マップ１３１に登録された３次元座標は、異なる座標系における座標値である。このため、ステップＳ１４１で算出された特徴点の３次元座標を作成済みの特徴点マップ１３１に登録するためには、ステップＳ１４１で算出された座標値を座標変換する必要がある。
【０１５３】
作成済みの特徴点マップ１３１に対応する第１画像に基づく位置姿勢情報を（ｔb，ｒb）とし、直近に選択された第１画像に基づく位置姿勢情報を（ｔc，ｒc）とする。前述の式（１４），（１５）を用いて、位置姿勢情報（ｔb，ｒb）および位置姿勢情報（ｔc，ｒc）のそれぞれについての４行４列の姿勢行列Ｐb，Ｐcが得られる。また、直近に選択された第１画像の撮像位置から見た、作成済みの特徴点マップ１３１に対応する第１画像の撮像位置の相対姿勢行列Ｐrは、次の式（１８）によって得られる。
Ｐr＝Ｐc-1Ｐb      ・・・（１８）
ステップＳ１４１で算出された特徴点の３次元座標をＸnとし、その座標変換後の３次元座標をＸn’とすると、３次元復元部１１５は、次の式（１９）によって座標変換後の３次元座標Ｘn’を算出する。
Ｘn’＝ＰrＸn      ・・・（１９）
３次元復元部１１５は、このようにして変換された３次元座標を特徴点マップ１３１に登録する。これにより、特徴点マップ１３１内の３次元座標と新たに算出された３次元座標との整合をとることができる。
【０１５４】
なお、上記の各実施の形態に示した装置（３次元座標算出装置１および端末装置１００）の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１５５】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１５６】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
【符号の説明】
【０１５７】
１  ３次元座標算出装置
２  カメラ
１１  特徴点マップ
１２  画像選択部
１３  座標算出部
２１  対象物
２２  マーカ
３１〜３４  撮像画像
【図１】
0006435750.tif 000013
【図２】
0006435750.tif 000014
【図３】
0006435750.tif 000015
【図４】
0006435750.tif 000016
【図５】
0006435750.tif 000017
【図６】
0006435750.tif 000018
【図７】
0006435750.tif 000019
【図８】
0006435750.tif 000020
【図９】
0006435750.tif 000021
【図１０】
0006435750.tif 000022
【図１１】
0006435750.tif 000023
【図１２】
0006435750.tif 000024
【図１３】
0006435750.tif 000025
【図１４】
0006435750.tif 000026