(57)【要約】  画像処理装置（１００）は、カメラに撮影された複数の撮影画像からキーフレームを判定し、第１のキーフレームに存在する特徴点の位置に基づいて、カメラから基準距離離れた平面上にマップ点を配置した初期の３次元マップを生成する。画像処理装置（１００）は、３次元マップのマップ点を撮影画像に投影した点と、撮影画像の特徴点との関係を基にして、前記カメラの位置姿勢を推定する。画像処理装置（１００）は、カメラの位置姿勢を基にして、３次元マップのマップ点の位置を微調整する。画像処理装置（１００）は、第１のキーフレームの特徴点と、第１のキーフレームより後の第２のキーフレームの特徴点とを基にして、３次元マップのマップ点の位置を更新する。
2017022033.tif 000002
【特許請求の範囲】
【請求項１】
カメラに撮影された複数の撮影画像からキーフレームを判定するキーフレーム判定部と、
前記キーフレーム判定部によって判定された第１のキーフレームに存在する特徴点の位置に基づいて、前記カメラから基準距離離れた平面上にマップ点を配置した初期の３次元マップを生成する初期３次元マップ生成部と、
前記３次元マップのマップ点を撮影画像に投影した点と、前記撮影画像の特徴点との関係を基にして、前記カメラの位置姿勢を推定する位置姿勢推定部と、
前記カメラの位置姿勢を基にして、前記３次元マップのマップ点の位置を微調整する調整部と、
前記第１のキーフレームの特徴点と、前記第１のキーフレームより後の第２のキーフレームの特徴点とを基にして、前記３次元マップのマップ点の位置を更新する３次元マップ更新部と、
を有することを特徴とする画像処理装置。
【請求項２】
前記３次元マップは、マップ点と、該マップ点が前記第１のキーフレームに基づき生成された第１マップ点であるか、第１のキーフレームおよび第２のキーフレームに基づき生成された第２マップ点であるかを示す種別情報とを対応付けて保持することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記３次元マップ更新部は、前記３次元マップのマップ点のうち、種別情報が第１マップ点となるマップ点の位置を、前記第１のキーフレームおよび前記第２のキーフレームに基づいて再計算して更新し、再計算したマップ点の種別情報を、第２マップ点に更新することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記調整部は、前記位置姿勢推定部が前記カメラの位置推定に成功した場合に、前記３次元マップのマップ点のうち、種別情報が第１マップ点となるマップ点の位置を微調整することを特徴とする請求項２または３に記載の画像処理装置。
【請求項５】
前記調整部は、前記第１のキーフレームの特徴点とマップ点とを結ぶ直線から得られるエピポーラの拘束条件に基づいて、前記マップ点の位置を微調整する範囲を特定することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記調整部は、前記３次元マップのマップ点のうち、前記マップ点と世界座標系の原点との距離が閾値以上となるマップ点に対して、前記マップ点の位置を微調整することを特徴とする請求項４に記載の画像処理装置。
【請求項７】
前記３次元マップ更新部は、前記第２のキーフレームの特徴点のうち、前記第１のキーフレームの特徴点と対応しない特徴点を特定し、特定した特徴点の位置に基づいて、前記カメラから基準距離離れた平面上にマップ点を配置することで、種別情報が第１マップ点となる特徴点を、前記３次元マップに追加することを特徴とする請求項２に記載の画像処理装置。
【請求項８】
前記位置姿勢推定部は、前記３次元マップに、前記種別情報が第１マップ点となるマップ点が存在する場合に、世界座標系の原点と、マップ点との距離に応じた重み付けを行って、前記カメラの位置姿勢を推定することを特徴とする請求項２に記載の画像処理装置。
【請求項９】
前記位置姿勢推定部は、前記３次元マップのマップ点のうち、前記種別情報が第１マップ点となるマップ点よりも、第２マップ点となるマップ点を優先して選択し、選択したマップ点を基にして、前記カメラの位置姿勢を推定することを特徴とする請求項２に記載の画像処理装置。
【請求項１０】
前記初期３次元マップ生成部は、前記第１のキーフレームから所定の形状を有するマーカを検出し、前記マーカの形状を基にして、初期の３次元マップを生成することを特徴とする請求項１〜９のいずれか１つに記載の画像処理装置。
【請求項１１】
コンピュータが実行する画像処理方法であって、
カメラに撮影された複数の撮影画像からキーフレームを判定し、
判定した第１のキーフレームに存在する特徴点の位置に基づいて、前記カメラから基準距離離れた平面上にマップ点を配置した初期の３次元マップを生成し、
前記３次元マップのマップ点を撮影画像に投影した点と、前記撮影画像の特徴点との関係を基にして、前記カメラの位置姿勢を推定し、
前記カメラの位置姿勢を基にして、前記３次元マップのマップ点の位置を微調整し、
前記第１のキーフレームの特徴点と、前記第１のキーフレームより後の第２のキーフレームの特徴点とを基にして、前記３次元マップのマップ点の位置を更新する
処理を実行することを特徴とする画像処理方法。
【請求項１２】
コンピュータに、
カメラに撮影された複数の撮影画像からキーフレームを判定し、
判定した第１のキーフレームに存在する特徴点の位置に基づいて、前記カメラから基準距離離れた平面上にマップ点を配置した初期の３次元マップを生成し、
前記３次元マップのマップ点を撮影画像に投影した点と、前記撮影画像の特徴点との関係を基にして、前記カメラの位置姿勢を推定し、
前記カメラの位置姿勢を基にして、前記３次元マップのマップ点の位置を微調整し、
前記第１のキーフレームの特徴点と、前記第１のキーフレームより後の第２のキーフレームの特徴点とを基にして、前記３次元マップのマップ点の位置を更新する
処理を実行させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置等に関する。
【背景技術】
【０００２】
ＰＣ（Personal  Computer）および携帯端末等に取り付けられたカメラの撮影画像を基にして、撮影画像に対するカメラの位置姿勢を求める技術がある。また、カメラの位置姿勢を用いて、ＰＣおよび携帯端末等の画面に表示された撮影画像にコンピュータグラフィックス（ＣＧ）等の付加情報を重畳表示させ、ユーザの作業支援を実現するＡＲ（Augmented  Reality）技術がある。【０００３】
図１４は、ＡＲ技術の一例を示す図である。図１４に示すように、例えば、利用者が携帯端末１０に内蔵されたカメラを用いて、マーカ１１および点検対象１２を撮影すると、携帯端末１０の表示画面１０ａに、マーカ１１に対するオブジェクト情報１３が表示される。【０００４】
カメラの位置姿勢を求める方法として、例えば、撮影画像に含まれる特徴点を用いてカメラの位置姿勢を算出する従来技術１がある。従来技術１は、着目点の近くで濃淡変動が大きく、濃淡変動によって着目点の画像上の位置が一意に規定されることを基準にして特徴点を検出する。従来技術１は、予め生成しておいた特徴点の３次元座標の集合を用いる。以下では適宜、予め生成しておいた特徴点の３次元座標をマップ点と表記し、マップ点の集合を３次元マップと表記する。従来技術１は、現在の撮影画像中に存在する特徴点と撮影画像上の投影したマップ点を対応付けることにより、カメラの位置姿勢を算出する。【０００５】
図１５は、カメラの位置姿勢を求める従来技術１を説明するための図である。図１５に示す例では、マップ点Ｓ１〜Ｓ６が存在するものとする。あるマップ点Ｓｉは、世界座標系で、式（１）によって示される。撮影画像２０上には、特徴点ｘ１〜ｘ６が存在するものとする。ある特徴点ｘｉは、カメラ座標系で、式（２）によって示される。撮影画像２０上に投影したマップ点を、投影点ｘ１’〜ｘ６’とする。ある投影点ｘｉ’は、カメラ座標系で、式（３）によって示される。【０００６】
Ｓｉ＝（ｘ，ｙ，ｚ）・・・（１）【０００７】
ｘｉ＝（ｕ，ｖ）・・・（２）【０００８】
ｘｉ’＝（ｕ’，ｖ’）・・・（３）【０００９】
例えば、従来技術１では、式（４）によって算出される二乗和Ｅが最小となるようなカメラ位置姿勢行列ＲＴを算出することで、カメラの位置姿勢を求める。一連の撮影画像毎に、カメラの位置姿勢を推定していくことを「トラッキング」と呼ぶ。【００１０】
【数１】
2017022033.tif 000003
【００１１】
続いて、３次元マップを生成する従来技術１について説明する。図１６は、３次元マップを生成する従来技術１を説明するための図である。例えば、従来技術１では、ステレオ撮影の原理を用いる。従来技術１は、撮影位置を変えた２枚の撮影画像中の特徴点で同じものを対応付けしていく。従来技術１は、対応付けした複数の対応点の各撮影画像中の位置関係から対応点をマップ点とした３次元マップを生成する。【００１２】
図１６に示す例では、復元されるマップ点をＳｉとし、初期のカメラの撮影位置Ｃａおよびマップ点Ｓｉを結ぶ線分と、１枚目の撮影画像２０ａとが交差する点を、特徴点ｘａｉとする。２番目のカメラの撮影位置Ｃｂおよびマップ点Ｓｉを結ぶ線分と、２枚目の撮影画像２０ｂとが交差する点を、特徴点ｘｂｉとする。そうすると対応点は、特徴点ｘａｉおよび特徴点ｘｂｉとなる。【００１３】
３次元マップの３次元座標の原点には、１枚目の撮影画像のカメラ位置・撮影方向を用いることが一般的である。図１７は、カメラの撮影方向の定義の一例を示す図である。図１７に示すように、例えば、カメラ５０の位置（Ｔｘ、Ｔｙ、Ｔｚ）、撮影方向（Ｒｘ、Ｒｙ、Ｒｚ）を基準にして、３次元マップの３次元座標の原点を定義する。【００１４】
従来技術１の応用として、トラッキングと３次元マップの生成を平行して行う従来技術２がある。従来技術２はＳＬＡＭ（Simultaneous  Localization  and  Mapping）と呼ばれる。【００１５】
従来技術２では、撮影位置を変えた２枚のキーフレームから３次元マップを生成する処理を行った後に、トラッキングを行う。従来技術２は、トラッキングの間に、適切な位置姿勢にカメラが移動したと判定した場合に、その時の撮影画像と、それまでに３次元マップの生成に使用したキーフレームのうち１枚をペアとする。従来技術２は、ペアとした撮影画像とキーフレームとのペアについて、ステレオ撮影の原理で、３次元マップへのマップ点の追加を行う。これにより、最初に撮影した３次元マップの生成範囲からカメラの撮影範囲が離れていった場合にでもトラッキングを継続することが可能となり、広い範囲でのカメラの位置姿勢の推定を行うことが可能となる。【００１６】
ここで、ステレオ撮影・計測による３次元マップの生成では、以下の条件１、２を示す２枚の撮影画像を取得する。【００１７】
２枚の撮影画像の撮影画像の位置が異なり、十分な距離だけ離れている。・・・（条件１）
２枚の撮影画像の撮影範囲で重複する範囲が広い。・・・（条件２）【００１８】
例えば、条件１、２を満たす撮影画像を取得するためには、ユーザは、トラッキングを始める前に、カメラを平行移動させるような操作を行うことになる。この操作は、カメラでの通常の撮影の際には行うことの少ない動作であり、ユーザの使い勝手を低下させてしまう。また、この操作にはそれ相応の時間を要し、ユーザの作業効率を低下させる。【００１９】
上記の問題を解消する技術として従来技術３が存在する。従来技術３では、一枚の撮影画像の中の特徴点が、３次元空間中の「無限遠」の距離にあるものと仮定した無限遠マップを用意し、この無限遠マップを使用してトラッキングを行う。無限遠マップは、マップ点が半径無限遠の円筒面上に配置されていると仮定したマップである。【００２０】
従来技術３は、ステレオ撮影による３次元マップが生成されるまで、無限遠マップを利用してトラッキングを行う。従来技術３は、トラッキング中にステレオ撮影に適した撮影画像が２枚取得されたタイミングで、３次元マップを生成し、撮影範囲に合わせて、無限遠マップと３次元マップとを適宜切り替えつつ、トラッキングを継続する。
【先行技術文献】
【特許文献】
【００２１】
【特許文献１】国際公開第２０１４／１７９３４９号
【非特許文献】
【００２２】
【非特許文献１】University  of  Oulu,  NVIDLA,  etc."DT-SLAM:Deferred  Triangulation  for  Robust  SLAM"  2014  Second  International  Conference  on  3D  Vision
【発明の概要】
【発明が解決しようとする課題】
【００２３】
しかしながら、上述した従来技術では、カメラの位置姿勢の推定精度が低下するという問題がある。【００２４】
例えば、従来技術３では、撮影範囲に合わせて、無限遠マップと３次元マップとを切り替えてカメラの位置姿勢を行うため、切り替え時にマップ点の位置ずれが生じ、カメラの位置姿勢の推定精度が低下してしまう。【００２５】
１つの側面では、カメラの位置姿勢の推定精度が低下することを抑止できる画像処理装置、画像処理方法および画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２６】
第１の案では、画像処理装置は、キーフレーム判定部、初期３次元マップ生成部、位置姿勢推定部、調整部、３次元マップ更新部を有する。キーフレーム判定部は、カメラに撮影された複数の撮影画像からキーフレームを判定する。初期３次元マップ生成部は、キーフレーム判定部によって判定された第１のキーフレームに存在する特徴点の位置に基づいて、カメラから基準距離離れた平面上にマップ点を配置した初期の３次元マップを生成する。位置姿勢推定部は、３次元マップのマップ点を撮影画像に投影した点と、撮影画像の特徴点との関係を基にして、カメラの位置姿勢を推定する。調整部は、カメラの位置姿勢を基にして、３次元マップのマップ点の位置を微調整する。３次元マップ更新部は、第１のキーフレームの特徴点と、第１のキーフレームより後の第２のキーフレームの特徴点とを基にして、３次元マップのマップ点の位置を更新する。
【発明の効果】
【００２７】
カメラの位置姿勢の推定精度が低下することを抑止できる。
【図面の簡単な説明】
【００２８】
【図１】図１は、本実施例１に係る画像処理装置の構成を示す機能ブロック図である。
【図２】図２は、キーフレーム情報のデータ構造の一例を示す図である。
【図３】図３は、３次元マップ情報のデータ構造の一例を示す図である。
【図４】図４は、本実施例１に係る初期３次元マップ生成部の処理を説明するための図である。
【図５】図５は、本実施例１に係る画像処理装置の処理手順を示すフローチャートである。
【図６】図６は、マーカの一例を示す図（１）である。
【図７】図７は、マーカの一例を示す図（２）である。
【図８】図８は、調整部のその他の処理（１）を説明するための図である。
【図９】図９は、調整部のその他の処理（２）を説明するための図である。
【図１０】図１０は、３次元マップ更新部のその他の処理を説明するための図（１）である。
【図１１】図１１は、３次元マップ更新部のその他の処理を説明するための図（２）である。
【図１２】図１２は、位置姿勢推定部のその他の処理の処理手順を示すフローチャートである。
【図１３】図１３は、画像処理プログラムを実行するコンピュータの一例を示す図である。
【図１４】図１４は、ＡＲ技術の一例を示す図である。
【図１５】図１５は、カメラの位置姿勢を求める従来技術１を説明するための図である。
【図１６】図１６は、３次元マップを生成する従来技術１を説明するための図である。
【図１７】図１７は、カメラの撮影方向の定義の一例を示す図である。
【発明を実施するための形態】
【００２９】
以下に、本願の開示する画像処理装置、画像処理方法および画像処理プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
【実施例１】
【００３０】
図１は、本実施例１に係る画像処理装置の構成を示す機能ブロック図である。図１に示すように、この画像処理装置１００は、カメラ５０に接続される。また、画像処理装置１００は、記憶部１１０と、画像取得部１２０と、を有する。【００３１】
記憶部１１０は、キーフレーム情報１１０ａと、３次元マップ情報１１０ｂと、位置姿勢情報１１０ｃとを有する。記憶部１１０は、例えば、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリ（Flash  Memory）などの半導体メモリ素子などの記憶装置に対応する。【００３２】
キーフレーム情報１１０ａは、キーフレームを撮影した時点のカメラ５０の位置姿勢の情報と、キーフレームに含まれる特徴点の情報を有する。図２は、キーフレーム情報のデータ構造の一例を示す図である。図２に示すように、キーフレーム情報１１０ａは、キーフレーム番号毎に、並進行列と、回転行列と、特徴点の情報とを有する。キーフレーム番号は、キーフレームを一意に識別する情報である。図２に示す例では、キーフレーム番号「１」に対応する並進行列、回転行列、特徴点の情報を示す。【００３３】
並進行列は、カメラ５０の位置を示す行列であり、例えば、（Ｔｘ、Ｔｙ、Ｔｚ）によって示される。回転行列は、カメラ５０の位置を示す行列であり、例えば、（ｒ０、ｒ１、ｒ２、ｒ３、ｒ４、ｒ５、ｒ６、ｒ７、ｒ８）によって示される。【００３４】
特徴点の情報には、特徴点番号と、２次元座標と、マップ点インデックスと、マップ点３次元座標とを有する。特徴点番号は、キーフレームに含まれる特徴点を一意に識別する情報である。２次元座標は、キーフレーム上の特徴点の２次元座標である。マップ点インデックスは、特徴点に対応するマップ点を一意に識別する情報である。マップ点３次元座標は、世界座標系のマップ点の３次元座標である。【００３５】
例えば、特徴点番号「１」の特徴点は、マップ点インデックス「１」のマップ点に対応付けられる。また、特徴点番号「１」の特徴点の２次元座標は「ｕ１，ｖ１」であり、マップ点インデックス「１」のマップ点の３次元座標は「ｘ１，ｙ１，ｚ１」である。【００３６】
３次元マップ情報１１０ｂは、マップ点に関する情報を保持する。図３は、３次元マップ情報のデータ構造の一例を示す図である。図３に示すように、この３次元マップ情報１１０ｂは、マップ点インデックス、３次元座標、種別、キーフレーム番号、特徴量、画像パターンテンプレート、エピポーラ拘束方向ベクトル、距離を対応付ける。【００３７】
マップ点インデックスは、マップ点を一意に識別する情報である。３次元座標は、世界座標系のマップ点の３次元座標である。種別は、「未３次元化」または「３次元座標確定」のいずれかとなる。「未３次元化」は、該当するマップ点の３次元座標が、単一のキーフレームの特徴点の位置から推定され、（ｘ、ｙ、ｚ）のうち、ｚの値が０となる３次元座標（２次元座標）であることを示す。「３次元座標確定」は、該当するマップ点の３次元座標が、２つのキーフレームによりステレオ撮影の原理に基づき求められた３次元座標であることを示す。【００３８】
キーフレーム番号は、マップ点に対応する特徴点を有するキーフレームのキーフレーム番号である。特徴量は、マップ点に対応する撮影画像（キーフレーム）上の特徴点の周辺の画素値を所定の順番で並べたものである。画像パターンテンプレートは、マップ点に対応する撮影画像（キーフレーム）上の特徴点を含む所定範囲の画像である。【００３９】
エピポーラ拘束方向ベクトルは、カメラの位置とマップ点の真値とを結んだベクトルに対応する。エピポーラ拘束方向ベクトルの詳細は後述する。距離は、世界座標系の原点と、マップ点との距離を示す。【００４０】
位置姿勢情報１１０ｃは、現在のカメラ５０の位置姿勢の情報である。例えば、位置姿勢情報は、世界座標系の原点に対する並進行列Ｔおよび回転行列Ｒに対応する。位置姿勢情報１１０ｃは、後述する位置姿勢推定部１５０により更新される。【００４１】
図１の説明に戻る。画像取得部１２０は、カメラ５０から撮影画像の情報を取得する処理部である。画像取得部１２０は、撮影画像の情報を、特徴点検出部１３０に出力する。【００４２】
特徴点検出部１３０は、撮影画像から特徴点を検出する処理部である。特徴点検出部１３０は、着目点の近傍での濃淡変動が大きく、濃淡変動によって着目点の画像上の位置が一意に規定されることを基準として、特徴点を検出する。特徴点は、対象物の角に対応する場合が多い。【００４３】
特徴点検出部１３０は、特徴点の情報を、マッチング部１４０に出力する。特徴点の情報は、例えば、特徴点番号と、特徴点の２次元座標と、特徴点周辺の画素の情報を対応付けた情報となる。【００４４】
マッチング部１４０は、撮影画像の特徴点と、３次元マップ情報のマップ点を撮影画像上の投影した投影点とをマッチングする処理部である。撮影画像の特徴点、マップ点、投影点の関係は、図１５で説明したものとなる。マッチング部１４０は、特徴点と投影点とを比較し、撮影画像上の距離が近くかつ、画像的な特徴が類似している特徴点と投影点とのペアに基づき、特徴点−マップ点ペア情報を生成する。【００４５】
図１５において、例えば、特徴点ｘ１と、投影点ｘ１’との距離が近く、画像的な特徴が類似しているとすると、マッチング部１４０は、特徴点ｘ１と、マップ点Ｓ１とをペアとする、特徴点−マップ点ペア情報を生成する。マッチング部１４０は、特徴点−マップ点ペア情報と、特徴点の撮影画像上の位置情報とを、位置姿勢推定部１５０に出力する。【００４６】
ここで、カメラ５０の位置姿勢は、世界座標系の原点に対する並進成分Ｔと、回転成分Ｒとで表すことができる。例えば、並進成分Ｔは式（５）によって定義され、回転成分Ｒは、式（６）によって定義される。【００４７】
並進成分Ｔ＝（Ｔｘ，Ｔｙ，Ｔｚ）・・・（５）
【数２】
2017022033.tif 000004
【００４８】
世界座標系のマップ点Ｓｉ（Ｘｉ、Ｙｉ、Ｚｉ）を、撮影画像上に投影した投影点ｘｉ’（ｕｉ，ｖｉ）との関係は、式（７）によって定義される。式（７）において、ｓはスケールパラメータであり、Ｍは、３×３の透視変換行列である。マッチング部１４０は、式（７）に基づいて、マップ点に対応する投影点の位置を算出する。マッチング部１４０は、並進成分Ｔ、回転成分Ｒを、位置姿勢情報１１０ｃから取得する。【００４９】
【数３】
2017022033.tif 000005
【００５０】
位置姿勢推定部１５０は、特徴点−マップ点ペア情報と、特徴点の撮影画像上の位置情報と、３次元マップ情報１１０ｂとを基にして、カメラ５０の位置姿勢を推定する処理部である。位置姿勢推定部１５０は、推定したカメラ５０の位置姿勢の情報によって、位置姿勢情報１１０ｃを更新する。【００５１】
位置姿勢推定部１５０は、式（４）で説明したように、ペアとなった特徴点ｘｉと、マップ点の投影点ｘｉ’との差分の和が最小となるようなカメラの並進成分Ｔ、回転成分Ｒを探索し、カメラの位置姿勢を算出する。位置姿勢推定部１５０は、特徴点ｘｉの位置を、特徴点の撮影画像上の位置情報を基に特定する。位置姿勢推定部１５０は、探索過程において、投影点ｘｉ’の位置を、並進成分Ｔ、回転成分Ｒの位置を変更しつつ、上記の式（７）によって算出する。【００５２】
キーフレーム判定部１６０は、撮影画像が、３次元マップの生成に使用する条件を満たしているキーフレームであるか否かを判定する処理部である。キーフレーム判定部１６０は、後述する第１キーフレーム適正判定処理または第２キーフレーム適正判定処理を実行する。キーフレーム判定部１６０は、判定結果を位置姿勢推定部１５０、初期３次元マップ生成部１７０に出力する。【００５３】
なお、キーフレーム判定部１６０は、撮影画像がキーフレームであると判定した場合には、キーフレームに関する情報を、キーフレーム情報１１０ａに登録する。キーフレーム情報１１０ａは、図２で説明した情報を含む。キーフレーム判定部１６０は、キーフレームに含まれる特徴点番号、２次元座標、マップ点インデックス、マップ点３次元座標の情報は、マッチング部１４０から取得する。キーフレーム判定部１６０は、キーフレームを撮影したカメラ５０の位置姿勢の情報を、位置姿勢推定部１５０から取得する。【００５４】
第１キーフレーム判定処理について説明する。キーフレーム判定部１６０は、位置姿勢推定部１５０がカメラ５０の位置姿勢を推定する前の段階において、第１キーフレーム判定処理を行う。キーフレーム判定部１６０は、画像取得部１２０から、撮影画像を取得し、一つ前の撮影画像と現在の撮影画像を比較して、カメラ５０の動きが少ないか否かを判定する。キーフレーム判定部１６０は、カメラ５０の動きが少ない場合に、現在の撮影画像が、キーフレームであると判定する。【００５５】
キーフレーム判定部１６０は、オプティカルフローによる移動追跡や、パターンマッチングによる位置合わせなどを実行して、カメラ５０の動きが小さいか否かを判定する。例えば、キーフレーム判定部１６０は、一つ前の撮影画像に存在する対象物の位置と、現在の撮影画像に存在する対象物の位置との差が閾値未満である場合に、カメラ５０の動きが少ないと判定する。【００５６】
第２キーフレーム判定処理について説明する。キーフレーム判定部１６０は、位置姿勢推定部１５０がカメラ５０の位置姿勢を推定した後の段階において、第２キーフレーム判定処理を行う。キーフレーム判定部１６０は、ある時刻ｔｎにおける撮影画像を撮影したカメラ５０の位置姿勢の情報（Ｔｔ，Ｒｔ）を、位置姿勢推定部１５０から取得し、前回のキーフレームを撮影したカメラ５０の位置姿勢の情報（Ｔｋｆ，Ｒｋｆ）を、キーフレーム情報１００ａから取得する。また、キーフレーム判定部１６０は、ある時点ｔにおける撮影画像の特徴点ｘｔ、マップ点Ｓｔの情報を取得し、前回のキーフレームの特徴点ｘｋｆ、３次元マップＳｋｆの情報を取得する。【００５７】
キーフレーム判定部１６０は、位置姿勢の情報（Ｔｔ，Ｒｔ）、（Ｔｋｆ，Ｒｋｆ）、特徴点ｘｔ、マップ点Ｓｔ、特徴点ｘｋｆ、３次元マップＳｋｆの情報を基にして、前回のキーフレームと、今回の撮影画像との組が、ステレオ撮影・計測の条件を満たすか否かを判定する。例えば、キーフレーム判定部１６０は、キーフレームと撮影画像との組が、上記の条件１，２を満たす場合に、ステレオ撮影・計測の条件を満たすと判定し、今回の撮影画像が、キーフレームであると判定する。【００５８】
初期３次元マップ生成部１７０は、初期の３次元マップ情報１１０ｂを生成する処理部である。例えば、初期３次元マップ生成部１７０は、単一のキーフレームに存在する特徴点の位置に基づいて、カメラから基準距離離れた平面上にマップ点を配置することで、初期の３次元マップ情報１１０ｂを生成する。【００５９】
図４は、初期３次元マップ生成部の処理を説明するための図である。図４は、世界座標のｙ軸方向から見た模式図である。初期３次元マップ生成部１７０は、撮影画像の中心を原点にし、撮影画像の水平方向をｘ軸、垂直方向をｙ軸、原点からカメラの撮影方向５０ｂをｚ軸とする世界座標系を規定する。図４に示す例では、カメラ５０の撮影方向５０ｂと、ｘ軸との交点が世界座標系の原点となる。【００６０】
原点からカメラ５０までのｚ軸の距離を、予め定めておいた基準距離Ｌ０に固定する。世界座標系におけるカメラ５０の並進成分Ｔを（０，０，Ｌ０）とし、回転成分Ｒを単位行列とする。【００６１】
図４では一例として、カメラ５０の撮影面５０ａ上に、特徴点ｘ１〜ｘ７が検出されたものとする。初期３次元マップ生成部１７０は、カメラ５０と特徴点ｘｉとを通る直線を定義し、定義した直線とＺ軸に垂直なＸＹ平面６０との交点に、マップ点が存在すると仮定して、マップ点の位置を特定する。例えば、初期３次元マップ生成部１７０は、カメラ５０と特徴点ｘｉとを通る直線と、ＸＹ平面６０との交点にマップ点Ｓ１が存在すると仮定する。【００６２】
初期３次元マップ生成部１７０は、上記処理を実行することで、特徴点ｘ１〜ｘ７に対応するマップ点Ｓ１〜Ｓ７を特定する。初期３次元マップ生成部１７０が特定した各マップ点のｚ座標の値は全て０となる。初期３次元マップ生成部１７０は、特徴点の情報と、マップ点の情報とを、３次元マップ情報１１０ｂに登録する。すなわち、初期３次元マップ生成部１７０は、マップ点インデックス、３次元座標、種別、キーフレーム番号、特徴量、画像パターンテンプレート、エピポーラ拘束ベクトル、距離の情報を、３次元マップ情報１１０ｂに登録する。初期３次元マップ生成部１７０が特定したマップ点に対応する種別は全て「未３次元化」となる。また、キーフレーム番号は、特徴点ｘ１〜ｘ７を抽出したキーフレームに対応するキーフレーム番号となる。【００６３】
調整部１８０は、カメラ５０の位置姿勢情報１１０ｃを基にして、種別が「未３次元化」となるマップ点の位置を微調整する処理部である。調整部１８０は、撮影画像の特徴点に対応する各マップ点に対して、個別に処理を実行する。【００６４】
例えば、調整部１８０は、式（７）およびカメラの位置姿勢（Ｔｔ，Ｒｔ）に基づいて、マップ点Ｓｉ（Ｘｉ，Ｙｉ，Ｚｉ）を、撮影画像中に投影した投影点ｘｉ’の２次元座標（ｕｉ，ｖｉ）を求める。調整部１８０は、投影点ｘｉ’と、撮影画像中の特徴点ｘｉとのマッチングを行い、マッチングした投影点ｘｉ’と特徴点ｘｉとの誤差Ｅｉが小さくなるように、マップ点Ｓｉの３次元座標を最小二乗法等の手法を用いて調整する。誤差Ｅｉは、式（８）によって定義される。調整部１８０は、調整した結果を、３次元マップ情報１１０ｂの３次元座標に反映させる。【００６５】
Ｅｉ＝（ｘｉ−ｕｉ）２＋（ｙｉ−ｖｉ）２・・・（８）【００６６】
ところで、調整部１８０は、種別が「未３次元化」となるマップ点の数が所定以上となる場合には、各マップ点について誤差Ｅｉを算出し、算出した誤差Ｅｉが閾値以上となるマップ点に対して、３次元座標の調整を行っても良い。【００６７】
３次元マップ更新部１９０は、複数のキーフレームを基にして、３次元マップ情報１１０ｂに登録されていないマップ点の３次元座標をステレオ計測により算出し、算出した結果を、３次元マップ情報１１０ｂに登録する処理部である。【００６８】
更に、３次元マップ更新部１９０は、複数のキーフレームを基にしたステレオ計測により、種別が「未３次元化」となるマップ点の３次元座標を再計算する。３次元マップ更新部１９０は、再計算した３次元座標によって、３次元マップ情報１１０ｂを更新し、該当する種別を「未３次元化」から「３次元座標確定」に更新する。【００６９】
例えば、３次元マップ更新部１９０は、撮影画像中の特徴点とマップ点との対応付けを行いつつ、キーフレーム情報１１０ａにも、種別が「未３次元化」となるマップ点を生成した時の当該キーフレーム中の特徴点とマップ点との対応付けの情報を保存しておく。３次元マップ更新部１９０は、種別が「未３次元化」のマップ点に対応付けられたキーフレームと撮影画像の特徴点との特徴点ペアとしてステレオ計測することで、「未３次元化」のマップ点の３次元座標を再計算する。【００７０】
次に、本実施例１に係る画像処理装置１００の処理手順について説明する。図５は、本実施例１に係る画像処理装置の処理手順を示すフローチャートである。図５に示すように、画像処理装置１００の画像取得部１２０は、撮影画像を取得する（ステップＳ１０１）。画像処理装置１００のキーフレーム判定部１６０は、撮影画像がキーフレームとして適正である否かのキーフレーム適正判定を実行する（ステップＳ１０２）。【００７１】
キーフレーム判定部１６０は、撮影画像がキーフレームとして適正でないと判定した場合には（ステップＳ１０３，Ｎｏ）、ステップＳ１０１に移行する。一方、キーフレーム判定部１６０により、撮影画像がキーフレームとして適正であると判定された場合には（ステップＳ１０３，Ｙｅｓ）、ステップＳ１０４に移行する。【００７２】
画像処理装置１００の初期３次元マップ生成部１７０は、単一のキーフレームを用いて、初期の３次元マップ情報１１０ｂを生成する（ステップＳ１０４）。画像取得部１２０は、撮影画像を取得する（ステップＳ１０５）。画像処理装置１００の位置姿勢推定部１５０は、カメラ５０の位置姿勢を推定する（ステップＳ１０６）。【００７３】
位置姿勢推定部１５０による位置姿勢の推定が成功しない場合には（ステップＳ１０７，Ｎｏ）、ステップＳ１０５に移行する。一方、位置姿勢推定部１５０による位置姿勢の推定が成功した場合には（ステップＳ１０７，Ｙｅｓ）、ステップＳ１０８に移行する。【００７４】
画像処理装置１００の調整部１８０は、３次元マップ情報１１０ｂに含まれる種別「未３次元化」となるマップ点の３次元座標を微調整する（ステップＳ１０８）。キーフレーム判定部１６０は、撮影画像がキーフレームとして適正であるか否かのキーフレーム適正判定を実行する（ステップＳ１０９）。【００７５】
キーフレーム判定部１６０は、撮影画像がキーフレームとして適正でないと判定した場合には（ステップＳ１１０，Ｎｏ）、ステップＳ１１３に移行する。一方、キーフレーム判定部１６０は、撮影画像がキーフレームとして適正であると判定した場合には（ステップＳ１１０，Ｙｅｓ）、ステップＳ１１１に移行する。【００７６】
画像処理装置１００の３次元マップ更新部１９０は、２つのキーフレームを用いて、マップ点の３次元座標を特定し、３次元マップ情報１１０ｂにデータを追加する（ステップＳ１１１）。３次元マップ更新部１９０は、種別が「未３次元化」となるマップ点について、３次元座標を再計算し、３次元マップ情報１１０ｂを更新する（ステップＳ１１２）。【００７７】
画像処理装置１００は、カメラの位置姿勢情報１１０ｃに基づいてコンテンツ表示を行う（ステップＳ１１３）。画像処理装置１００は、処理を継続するか否かを判定する（ステップＳ１１４）。画像処理装置１００は、処理を継続する場合には（ステップＳ１１４，Ｙｅｓ）、ステップＳ１０５に移行する。画像処理装置１００は、処理を継続しない場合には（ステップＳ１１４，Ｎｏ）、処理を終了する。【００７８】
次に、本実施例１に係る画像処理装置１００の効果について説明する。画像処理装置１００は、マップ点が平面上に存在すると仮定した３次元マップ情報１１０ｂに基づくトラッキングを実行する過程において、３次元マップ情報１１０ｂのマップ点の３次元座標を微調整しておく。そして、画像処理装置１００は、２枚の適正なキーフレームを取得した場合に、ステレオ計測の原理に基づき、仮決めしたマップ点の３次元座標を再計算し、３次元マップ情報１１０ｂを更新する。このため、画像処理装置１００によれば、カメラ５０の位置姿勢の推定精度が低下することを抑止できる。【００７９】
例えば、画像処理装置１００は、２枚の適正なキーフレームを取得する前に、マップ点の３次元座標が真値に近づくように、マップ点の３次元座標を微調整しておき、２枚の適正なキーフレームを取得できた時点で、マップ点の適正な３次元位置を確定させ、マップ点の３次元座標を切り変える。このため、マップ点の３次元座標を切り替える場合に、３次元座標の位置ずれが少なくなり、カメラ５０の位置姿勢の推定精度が低下することを抑止できる。【００８０】
画像処理装置１００によれば、１枚のキーフレームから初期の３次元マップ情報１１０ｂを生成し、トラッキングを開始する。このため、トラッキングを始める前に、ユーザがカメラ５０の位置を平行移動させる動作を行わなくても、カメラの位置姿勢を推定でき、より使い勝手のよいＡＲ技術の実現が可能となる。【００８１】
画像処理装置１００によれば、はじめにマップ点の３次元座標の仮決めを行い、トラッキングを実行する過程において、マップ点の３次元座標の微調整、再計算を実行する。このため、３次元マップ情報１１０ｂの３次元座標の精度を向上させることができ、スムーズかつ適切に、トラッキングを継続することができる。【００８２】
画像処理装置１００によれば、１種類の３次元マップを３次元マップ情報１１０ｂで一元管理する。このため、従来と同等のカメラの位置姿勢推定の計算法によってトラッキングを実行することができ、処理や管理が簡単なＡＲ技術の実現が可能となる。
【実施例２】
【００８３】
実施例１に示した画像処理装置１００の処理は一例である。本実施例２では、画像処理装置１００が実行するその他の処理について説明する。【００８４】
初期３次元マップ生成部１７０のその他の処理について説明する。ＡＲ技術では、コンテンツの表示位置が撮影対象の特定の位置に決まっている場合が多いが、実施例１の方法では、撮影画像毎に限定位置が変わってしまい、コンテンツの表示位置を固定することができないという問題が発生する。【００８５】
このため、画像処理装置１００は、予め空間内の設置位置、物理サイズが決まっており、かつ撮影時に検出される特徴点の位置や特徴量が決まっている特定のパターンを持ったマーカを位置基準として設置し、利用する。【００８６】
図６は、マーカの一例を示す図（１）である。図６に示すように、マーカ１５は、４隅に基準点１５ａ，１５ｂ，１５ｃ，１５ｄを有する。また、座標系の原点１６と、カメラ５０の３次元座標の原点とが一致している。マーカ１５は、その形状と物理サイズが既知であり、画像処理装置１００は、基準点１５ａ〜１５ｄを特徴点として検出し、原点１６を世界座標系の原点とする。【００８７】
例えば、初期３次元マップ生成部１７０は、マーカ１５を含む撮影画像を取得し、取得した撮影画像を基にして、初期の３次元マップ情報１１０ｂを生成しても良い。初期３次元マップ生成部１７０は、撮影画像に含まれるマーカ１５の基準点１５ａ〜１５ｄを特徴点として検出する。初期３次元マップ生成部１７０は、検出した特徴点に対応するマーカ点の３次元座標を、実際のマーカ１５の原点１６と基準点１５ａ〜１５ｄとの位置関係を手がかりとして特定する。初期３次元マップ生成部１７０は、特徴点の情報およびマップ点の情報を、３次元マップ情報１１０ｂに登録する。このように、マーカ１５を用いて、初期の３次元マップ情報１１０ｂを生成することで、マップ点の３次元座標を初期の段階でより正確に設定することができる。【００８８】
ところで、マーカは、図６に限定されるものではなく、マーカの基準点の相互の配置と物理距離が既知であれば、図７に示すようなロゴマークであっても良い。図７は、マーカの一例を示す図（２）である。図７において、マーカに相当するロゴマーク１７は基準点１７ａ〜１７ｄを有する。また、ロゴマーク１７の原点は、原点１８となり、カメラ５０の３次元座標の原点と一致している。【００８９】
続いて、調整部１８０のその他の処理（１）について説明する。カメラ５０によるステレオ計測では、撮影画像中の特徴点のエピポーラ拘束の条件を用いて、調整先のマップ点の存在範囲を限定することができる。【００９０】
図８は、調整部のその他の処理（１）を説明するための図である。ここでは、特徴点ｘａ１、ｘｂ１に対応するマップ点を微調整する場合について説明する。図８において、位置Ｃａは、キーフレーム２０ｃを撮影した時点のカメラ５０の位置を示し、位置Ｃｂは、撮影画像２０ｄを撮影した時点のカメラの位置を示す。Ｓｉは、微調整前のマップ点の位置を示し、Ｓｉｒｅｆは微調整後のマップ点の位置を示し、Ｓｔは、マップ点の真値（実際の位置）を示す。【００９１】
特徴点ｘａ１は、位置Ｃａと真値Ｓｔとを結んだ直線と、キーフレーム２０ｃとの交点に位置する。特徴点ｘｂ１は、位置Ｃｂと真値Ｓｔとを結んだ直線と、撮影画像２０ｄとの交点に位置する。特徴点ｘａ１と特徴点ｘｂ１とは対応点となる。位置Ｃａと位置Ｃｂとを結ぶ直線において、キーフレーム２０ｃと直線との交点を交点ｘａ２とし、撮影画像２０ｄと直線との交点を交点ｘｂ２とする。【００９２】
世界座標系において、位置Ｃａから真値Ｓｔに向かう方向ベクトルをＮｋｆ＝（ｎｘ，ｎｙ，ｎｚ）と定義する。調整部１８０が調整対象とする、マップ点Ｓｉの真値Ｓｔは、方向ベクトルＮｋｆを通る直線２１ａ上のいずれかの位置に存在していると推定できる。【００９３】
ここで、直線２１ａを、微調整時の撮影画像２０ｄから見ると、３次元直線２１として表される。この３次元直線２１を、エピポーラ直線２１と定義する。マップ点の真値は、直線２１ａ上にあるため、撮影画像２０ｄ中にマッチングする特徴点もエピポーラ直線２１ｂ上になる。【００９４】
調整部１８０は、種別「未３次元化」のマップ点Ｓｉの３次元座標の微調整範囲を、エピポーラ線のもととなる、方向ベクトルＮｋｆの直線２１ａ上に限定する。この条件下において、調整部１８０は、微調整後のＳｉｒｅｆは、式（９）、式（１０）に示すように、ΔＰだけの式で表すことができる。【００９５】
【数４】
2017022033.tif 000006
【数５】
2017022033.tif 000007
【００９６】
ΔＰは、微調整によるマップ点の３次元座標の移動距離となる。調整部１８０は、この関係を用いて表現したＥｉが小さくなるように、マップ点Ｓｉの３次元座標を最小二乗法等の手法を用いて調整し、Ｓｉｒｅｆを求める。【００９７】
なお、微調整時において、キーフレーム２０ｃと撮影画像２０ｄとのカメラ５０の位置姿勢の関係は、本来のステレオ計測を行う条件には適合しておらず、上記の調整の結果、誤差が大きくなることが考えられる。このため、調整部１８０は、ΔＰの範囲を予め定めた範囲ΔＰｍａｘｔｈに限定して、微調整後のマップ点の３次元座標が、大きく変化しないようにしても良い。【００９８】
上記のように、撮影画像中の特徴点のエピポーラ拘束の条件を用いて、調整先のマップ点の存在範囲を限定することで、種別「未３次元化」のマップ点の３次元座標をより適切な位置に微調整することができる。【００９９】
調整部１８０のその他の処理（２）について説明する。種別「未３次元化」のマップ点の微調整は、原理的には全ての種別「未３次元化」のマップ点に適用できる、しかし、本来、世界座標系の原点または原点近傍に位置するマップ点に対しては誤差が少ないため、微調整を実行しなくても良い。なお、原点または原点付近に存在するマップ点に対して微調整を行うと、キーフレームと撮影画像を撮影した時点のカメラ５０の位置姿勢によっては、マップ点の位置を間違った方向に微調整してしまう場合がある。世界座標系の原点がずれてしまった場合には、カメラ５０の位置姿勢の推定精度も低下してしまう場合がある。【０１００】
調整部１８０のその他の処理（２）について説明する。図９は、調整部のその他の処理（２）を説明するための図である。図９において原点Ｏから所定距離ＤＩＳＴｔｈ以下の領域を近傍領域Ａと表記する。図９に示す例では、マップ点Ｓ１〜Ｓ８のうち、マップ点Ｓ４，Ｓ５が、近傍領域Ａに含まれる。また、マップ点Ｓ１〜Ｓ８の種別を「未３次元化」とする。このため、調整部１８０は、マップ点Ｓ１〜Ｓ３、Ｓ６〜Ｓ８に対して３次元座標の微調整を実行し、マップ点Ｓ４，Ｓ５については、３次元座標の微調整をスキップする。【０１０１】
例えば、調整部１８０は、式（１１）に基づいて、近傍領域Ａに含まれないマップ点を特定し、特定したマップ点に対して微調整を実行する。式（１１）において、ＤＩＳＴｉは、マップ点Ｓｉと、原点との距離を示すものである。ＤＩＳＴｉが、ＤＩＳＴｔｈよりも大きい場合には、該当するマップ点Ｓｉは、微調整の対象となる。【０１０２】
【数６】
2017022033.tif 000008
【０１０３】
上記のように、近傍領域Ａに含まれるマップ点に対して、微調整を行うことで、例えば、世界座標系の原点の位置が移動することが無くなり、より高精度なトラッキングを行うことが可能となる。【０１０４】
続いて、３次元マップ更新部１９０のその他の処理について説明する。３次元マップ更新部１９０は、種別「未３次元化」のマップ点の３次元座標を再計算する処理を実行し、マップ点の３次元座標の種別を「３次元座標確定」に更新していた。３次元マップ更新部１９０は、上記処理に加えて、種別が「未３次元化」となるマップ点を３次元マップ情報１１０ｂに追加する処理を行っても良い。【０１０５】
３次元マップ更新部１９０がマップ点の３次元座標を更新する場合に、撮影画像中の特徴点で、マップ点やキーフレームの特徴点とマッチングできなかったものは、これまでのトラッキング中には撮影されていない新たな空間範囲に存在している特徴点である可能性が高い。これらの特徴点をマップ点として保存するには、更にマップ点のない空間範囲をトラッキングしていく必要があるが、この場合にカメラ５０の撮影範囲に含まれるマップ点の個数が少なくなってしまうため、カメラの位置姿勢の推定精度が低下し、場合によってはトラッキングに失敗してしまう。【０１０６】
そこで、３次元マップ更新部１９０は、マップ点やキーフレームの特徴点とマッチングできなかった撮影画像の中の特徴点を、「未３次元化」マップ点として３次元マップ情報１１０ｂに登録する。３次元マップ更新部１９０は、特徴点が平面上に分布していると仮定して３次元座標を規定する。【０１０７】
図１０は、３次元マップ更新部のその他の処理を説明するための図（１）である。図１０において、例えば、マップ点Ｓ１〜Ｓ６は、種別が「３次元座標確定」となるマップ点とする。また、特徴点ｘ１〜ｘ６に対応するマップ点Ｓ７〜Ｓ８に対応するが、特徴点ｘ７，ｘ８のマップ点が存在しないものとする。【０１０８】
３次元マップ更新部１９０は、マップ点Ｓ１〜Ｓ６について、重心位置Ｇを算出する。３次元マップ更新部１９０は、重心位置Ｇを通り、撮影方向５０ｂ（カメラ５０の光軸）と垂直に交わる平面３０ａを定義する。【０１０９】
３次元マップ更新部１９０は、カメラ５０の位置と特徴点ｘ７とを通る直線を特定し、特定した直線と平面３０ａとの交点位置を、特徴点ｘ７のマップ点Ｓ７の３次元座標として特定する。また、３次元マップ更新部１９０は、カメラ５０の位置と特徴点ｘ８とを通る直線を特定し、特定した直線と平面３０ａとの交点位置を、特徴点ｘ８のマップ点Ｓ８の３次元座標として特定する。なお、マップ点Ｓ７，Ｓ８の種別は「未３次元化」となる。３次元マップ更新部１９０は、マップ点Ｓ７，Ｓ８の情報を、３次元マップ情報１１０ｂに追加登録する。【０１１０】
なお、３次元マップ更新部１９０は、平面３０ａを、図１０に示すように設定していたが、図１１に示すように、平面を設定して良い。図１１は、３次元マップ更新部のその他の処理を説明するための図（２）である。図１１において、例えば、マップ点Ｓ１〜Ｓ６は、種別が「３次元座標確定」となるマップ点とする。また、特徴点ｘ１〜ｘ６に対応するマップ点Ｓ７〜Ｓ８に対応するが、特徴点ｘ７，ｘ８のマップ点が存在しないものとする。【０１１１】
３次元マップ更新部１９０は、マップ点Ｓ７〜Ｓ８の近似平面３０ｂを設定する。３次元マップ更新部１９０は、カメラ５０の位置と特徴点ｘ７とを通る直線を特定し、特定した直線と平面３０ｂとの交点位置を、特徴点ｘ７のマップ点Ｓ７の３次元座標として特定する。また、３次元マップ更新部１９０は、カメラ５０の位置と特徴点ｘ８とを通る直線を特定し、特定した直線と平面３０ｂとの交点位置を、特徴点ｘ８のマップ点Ｓ８の３次元座標として特定する。なお、マップ点Ｓ７，Ｓ８の種別は「未３次元化」となる。３次元マップ更新部１９０は、マップ点Ｓ７，Ｓ８の情報を、３次元マップ情報１１０ｂに追加登録する。【０１１２】
３次元マップ更新部１９０は、上記処理を実行することで、種別「未３次元化」のマップ点を追加していくので、カメラ５０の撮影範囲に含まれるマップ点の個数が少なくなることを抑止し、カメラの位置姿勢の推定精度を向上させることができる。【０１１３】
位置姿勢推定部１５０のその他の処理（１）について説明する。例えば、３次元マップ情報１１０ｂにおいて、種別が「未３次元化」、「３次元座標確定」が混在しており、特に「未３次元化」のマップ点が多い場合、位置姿勢推定部１５０により推定されるカメラ５０の位置姿勢の誤差が大きくなる場合がある。カメラ５０の位置姿勢には、並進成分、回転成分があるが、ＡＲ技術としてのコンテンツの表示に際しては、並進成分の誤差の影響が、回転成分の誤差の影響よりも大きくなる。また、世界座標の原点付近での誤差が大きいと、影響がより目立つ。一方、上記のように、「未３次元化」のマップ点のうち、世界座標系の原点に近いものは、原点の決め方の効果で誤差は小さくなる。【０１１４】
位置姿勢推定部１５０は、マップ点Ｓｉ＝（Ｘｉ，Ｙｉ，Ｚｉ）と世界座標系の原点との距離ＤＩＳＴｉに応じて、評価値の重みＷｉを変え、式（１２）に基づいて、Ｅを算出する。位置姿勢推定部１５０は、Ｅの値が小さくなるように、カメラの位置姿勢を算出する。例えば、式（１２）において、重みＷｉは、ＤＩＳＴｉの値が、ＤＩＳＴｔｈの値以上である場合に、「Ｗｉ＝１」となる。一方、重みＷｉは、ＤＩＳＴｉの値が、ＤＩＳＴｔｈの値未満である場合に、「Ｗｉ＝２」となる。【０１１５】
【数７】
2017022033.tif 000009
【０１１６】
上記の処理を実行することで、カメラの位置姿勢の推定結果のうち並進成分の誤差が小さくなり、より高精度なトラッキングを行うことが可能となる。【０１１７】
位置姿勢推定部１５０のその他の処理（２）について説明する。位置姿勢推定部１５０は、「３次元座標確定」のマップ点を優先して使用し、「３次元座標確定」のマップ点の数が不足する場合にのみ「未３次元化」のマップ点で補うことで、カメラの位置姿勢を推定する。【０１１８】
図１２は、位置姿勢推定部のその他の処理の処理手順を示すフローチャートである。図１２に示すように、位置姿勢推定部１５０は、撮影画像内のマップ点を選別し（ステップＳ２０１）、撮影画像内のマップ点の投影点を算出する（ステップＳ２０２）。【０１１９】
位置姿勢推定部１５０は、マップ点のうち種別が「３次元確定」となるマップ点を抽出する（ステップＳ２０３）。位置姿勢推定部１５０は、マップ点の種別が「３次元確定」となるマップ点の個数を特定する（ステップＳ２０４）。【０１２０】
位置姿勢推定部１５０は、マップ点の個数が所定数以上である場合には（ステップＳ２０５，Ｙｅｓ）、ステップＳ２０７に移行する。位置姿勢推定部１５０は、マップ点の個数が所定数未満である場合には（ステップＳ２０５，Ｎｏ）、種別が「未３次元化」となるマップ点を追加する（ステップＳ２０６）。位置姿勢推定部１５０は、カメラ５０の位置姿勢を算出する（ステップＳ２０７）。【０１２１】
上記のように、マップ点の種別に「未３次元化」／「３次元座標確定」が混在している場合であっても、「３次元座標確定」のマップ点を優先して使用し、カメラの位置姿勢を推定するため、位置姿勢の推定精度を向上させることができる。【０１２２】
次に、上記実施例に示した画像処理装置１００と同様の機能を実現する画像処理プログラムを実行するコンピュータの一例について説明する。図１３は、画像処理プログラムを実行するコンピュータの一例を示す図である。【０１２３】
図１３に示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、ユーザからのデータの入力を受け付ける入力装置２０２と、ディスプレイ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る読み取り装置２０４と、ネットワークを介して他のコンピュータとの間でデータの授受を行うインターフェース装置２０５と、カメラ２０６とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０７と、ハードディスク装置２０８とを有する。そして、各装置２０１〜２０８は、バス２０９に接続される。【０１２４】
ハードディスク装置２０８は、キーフレーム判定プログラム２０８ａ、位置姿勢推定プログラム２０８ｂ、調整プログラム２０８ｃ、３次元マップ更新プログラム２０８ｄを有する。ＣＰＵ２０１は、キーフレーム判定プログラム２０８ａ、位置姿勢推定プログラム２０８ｂ、調整プログラム２０８ｃ、３次元マップ更新プログラム２０８ｄを読み出してＲＭ２０７に展開する。【０１２５】
キーフレーム判定プログラム２０８ａは、キーフレーム判定プロセス２０７ａとして機能する。位置姿勢推定プログラム２０８ｂは、位置姿勢推定プロセス２０７ｂとして機能する。調整プログラム２０８ｃは、調整プロセス２０７ｃとして機能する。３次元マップ更新プログラム２０８ｄは、３次元マップ更新プロセス２０７ｄとして機能する。【０１２６】
キーフレーム判定プロセス２０７ａの処理は、キーフレーム判定部１６０の処理に対応する。位置姿勢推定プロセス２０７ｂの処理は、位置姿勢推定部１６０の処理に対応する。調整プロセス２０７ｃの処理は、調整部１８０の処理に対応する。３次元マップ更新プロセス２０７ｄは、３次元マップ更新部１９０の処理に対応する。【０１２７】
なお、キーフレーム判定プログラム２０８ａ、位置姿勢推定プログラム２０８ｂ、調整プログラム２０８ｃ、３次元マップ更新プログラム２０８ｄについては、必ずしも最初からハードディスク装置２０８に記憶させておかなくても良い。例えば、コンピュータ２００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ２００が各プログラム２０７ａ〜２０８ｄを読み出して実行するようにしてもよい。
【符号の説明】
【０１２８】
５０    カメラ
１００    画像処理装置
１１０    記憶部
１１０ａ  キーフレーム情報
１１０ｂ  ３次元マップ情報
１１０ｃ  位置姿勢情報
１２０    画像取得部
１３０    特徴点検出部
１４０    マッチング部
１５０    位置姿勢推定部
１６０    キーフレーム判定部
１７０    初期３次元マップ生成部
１８０    調整部
１９０    ３次元マップ更新部
【図１】
2017022033.tif 000010
【図２】
2017022033.tif 000011
【図３】
2017022033.tif 000012
【図４】
2017022033.tif 000013
【図５】
2017022033.tif 000014
【図６】
2017022033.tif 000015
【図７】
2017022033.tif 000016
【図８】
2017022033.tif 000017
【図９】
2017022033.tif 000018
【図１０】
2017022033.tif 000019
【図１１】
2017022033.tif 000020
【図１２】
2017022033.tif 000021
【図１３】
2017022033.tif 000022
【図１４】
2017022033.tif 000023
【図１５】
2017022033.tif 000024
【図１６】
2017022033.tif 000025
【図１７】
2017022033.tif 000026
【国際調査報告】
2017022033.tif 000027
2017022033.tif 000028