説明

情報処理装置、および情報処理方法、並びにコンピュータ・プログラム

【課題】カメラの取得画像に基づいて撮影画像に含まれる特徴点の3次元位置を効率的に算出する構成を実現する。
【解決手段】カメラの取得画像に基づく特徴点の3次元位置取得構成において、カメラ撮影画像の画像フレーム中、複数の先行画像フレームのみを利用した対応特徴点解析による特徴点の3次元位置情報を初期情報として取得する処理と、この初期情報を初期画像フレームに対する状態情報として設定して、後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報を取得する構成としたので、例えばフレームマッチングなどを伴う特徴点抽出処理は、先行画像フレームに対してのみ実行すればよく、効率的な特徴点の3次元位置情報の取得および3次元画像データの生成が実現される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、カメラによる撮影画像に基づく3次元マップ(3D map)の生成に適用する特徴点の3次元位置を算出する処理を行う情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【0002】
カメラの撮影画像を解析して撮影画像に含まれるオブジェクトの3次元位置を求める処理が様々な分野で利用されている。例えばカメラを備えたロボットなどのエージェント(移動体)が、カメラの撮影画像を解析して移動環境を観測し、観測状況に応じてエージェント周囲の環境を把握しながら移動を行う処理や、撮影画像に基づいて周囲環境の地図(環境地図)を作成する環境マップ構築処理に利用される。非特許文献1には、特徴点位置の追跡を全フレームで行い、全フレームのデータが得られた後、バッチ処理により特徴点の位置とカメラ位置を算出する方法を開示している。
【0003】
3次元マップ(3D map)の生成処理シーケンスの一例について図1を参照して説明する。まず、ステップS11においてカメラによって画像を撮影する。例えばカメラを保持したユーザやロボットなどが移動しながら周りの画像を連続的に撮影する。
【0004】
ステップS12において取得画像の解析によって、画像に含まれる特徴点の位置情報などが含まれる疎な3次元情報を構築する。この処理においては、SLAM(simultaneous localization and mapping)やSFM(Structure from Motion)などの処理が適用される。SLAMは、カメラから入力する画像内の特徴点の位置と、カメラの位置姿勢を併せて検出する処理である。SFMは、例えば複数の異なる位置から撮影した画像を利用して画像内に含まれる特徴点(Landmark)の対応を解析する処理などである。
【0005】
さらに、ステップS13では、ステップS12において求めたカメラの軌跡情報や画像内の特徴点情報などを利用して詳細な3次元情報である密な3次元情報である3次元マップを生成する。
【0006】
ステップS12のSFMやSLAM処理において画像内の特徴点の解析を正確に実行することが、最終的な3次元情報の精度を高めることになる。このステップS12では、画像フレームに含まれる特徴点情報とカメラ軌跡情報を取得する処理が行われる。この詳細処理例を図2に示す。
【0007】
まず、ステップS21においてカメラから複数の撮影画像を入力し、フレーム間の一致する特徴点を利用して、カメラの位置を算出するフレームマッチング処理を行う。入力画像は、例えば移動するカメラが撮影した動画像の複数の画像フレーム、すなわち異なる位置から撮影した複数の画像であり、同一のオブジェクトが複数フレームに撮影されている。ステップS21では、複数の画像フレームから対応する特徴点を検出し、これらの情報を利用してカメラの位置を計算する。
【0008】
ステップS22では、フレームスティッチ処理(Frame Stitch)を実行する。この処理は、ステップS21で検出した情報を利用して各画像の特徴点(Landmark)の3次元位置を推定して、複数の画像データ内の複数の特徴点位置に基づいて画像フレームを接合して各特徴点の3次元位置を反映したデータを生成する処理である。
【0009】
ステップS23では、バンドル調整処理(Bundle Adjustment)を実行する。このバンドル調整処理は、異なる位置から撮影した複数の画像に含まれる対応する特徴点の3次元位置を1つの位置に収束させる処理である。各撮影画像のカメラ位置情報と、各カメラ位置において撮影された画像に含まれる対応する特徴点の情報を利用して、特徴点の最も確からしい3次元位置を算出する処理である。この処理のためには、基本的には、2つ以上の異なる位置から撮影した画像フレームが必要となる。
【0010】
例えば、図3に示すように、3つの異なる位置からの撮影画像11〜13を利用し、その撮影画像中から検出した特徴点21〜23を利用して、特徴点の3次元位置を求める。複数の画像に含まれる特徴点中、対応する特徴点の位置は図3に示す特徴点21のように、各画像の撮影ポイントから特徴点21を結ぶ線(Bundle)が1つの特徴点21位置において交わるはずである。
【0011】
しかし、カメラの位置や特徴点の画像内の位置情報などは必ずしも正確に算出されず様々な要因による誤差が含まれる。従って、このような誤差を取り除く必要がある。具体的には1つの対応する特徴点の3次元位置とカメラ位置とを結ぶ線が、その1つの特徴点において交わるように補正する。すなわち算出済みのカメラ位置や特徴点位置を修正する処理が必要となる。この処理がバンドル調整処理(Bundle Adjustment)として実行され、この調整処理によって修正された特徴点位置情報やカメラ位置情報を利用してより精度の高い3次元情報を生成することが可能となる。
【0012】
しかしながら、このような従来型の処理では、十分な数の対応特徴点が得られないと、ステップS21のフレームマッチング処理が不可能となり、カメラ位置の算出が困難になる場合がある。フレームマッチを省略することはできず、フレームマッチに失敗した場合は、処理のやり直しが必要となる。またカメラは必ず移動していることが必要であり、また、カメラがあるオブジェクトの回りを周回しているような場合、特徴点の対応付けエラーが発生して本来1つのオブジェクトが複数あるものとして認識されてしまうといったエラーが発生しやすいという問題があった。
【非特許文献1】"Shape and motion from image streams under orthography: a factorization method",C.Tomasi and T.Kanade,International Journal of Computer Vision, Volume 9, Number 2, pp.137−154,(1992).
【発明の開示】
【発明が解決しようとする課題】
【0013】
本発明は、カメラによる撮影画像に基づく3次元マップ(3D map)の生成に適用する特徴点の3次元位置を算出する構成において、一部の撮影画像のみを利用したフレームマッチング処理を行うのみで、その後の処理ではフレームマッチング処理を実行することなく効率的な特徴点の3次元位置情報生成を可能とする情報処理装置、および情報処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明の第1の側面は、
画像に含まれる特徴点の3次元位置を算出する情報処理装置であり、
カメラ撮影画像の画像フレーム中、複数の先行画像フレームを入力し、各画像フレームの対応特徴点解析により、特徴点の3次元位置情報を取得する初期情報生成部と、
前記初期情報生成部が先行画像フレームから取得した特徴点位置情報を初期画像フレームに対する状態情報として設定し、後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報を取得する特徴点位置情報生成部と、
を有することを特徴とする情報処理装置にある。
【0015】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置は、さらに、前記特徴点位置情報生成部の生成した特徴点位置情報を入力して特徴点の3次元位置情報の修正処理を実行するバンドル調整処理部を有することを特徴とする。
【0016】
さらに、本発明の情報処理装置の一実施態様において、前記初期情報生成部は、複数の異なる位置から撮影した画像を利用して各画像フレームに含まれる特徴点の対応を解析するSFM(Structure from Motion)処理を実行する構成であることを特徴とする。
【0017】
さらに、本発明の情報処理装置の一実施態様において、前記初期情報生成部は、前記先行画像フレームの解析により、画像フレームを撮影したカメラの位置姿勢情報を算出する構成であり、前記特徴点位置情報生成部は、前記初期情報生成部が前記先行画像フレームから算出した特徴点位置情報とカメラ位置姿勢情報を、初期画像フレームに対応する状態情報として設定し、前記後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報と後続フレームを撮影したカメラ位置姿勢情報を取得することを特徴とする。
【0018】
さらに、本発明の情報処理装置の一実施態様において、前記特徴点位置情報生成部は、特徴点位置情報とカメラ位置姿勢情報を含む多次元正規分布データを状態情報として設定して拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報と後続フレームを撮影したカメラ位置姿勢情報を取得することを特徴とする。
【0019】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置は、さらに、前記初期情報生成部と前記特徴点位置情報生成部とによって抽出されなかった特徴点を追加特徴点として抽出して抽出した追加特徴点の3次元位置を算出する処理を実行する特徴点抽出部を有し、前記バンドル調整処理部は、前記特徴点位置情報生成部の生成した特徴点位置情報と前記特徴点抽出部が抽出した追加特徴点の特徴点位置情報を入力して特徴点の3次元位置情報の修正処理を実行する構成であることを特徴とする。
【0020】
さらに、本発明の情報処理装置の一実施態様において、前記特徴点抽出部は、画像フレームから抽出した特徴点と、前記初期情報生成部と前記特徴点位置情報生成部とによって抽出された特徴点との重複判定を実行し、重複しない新規特徴点のみを追加特徴点として選択する処理を実行することを特徴とする。
【0021】
前記情報処理装置は、さらに、前記特徴点位置情報生成部の生成した特徴点位置情報を利用した3次元画像データを生成する3Dマップ生成部を有することを特徴とする。
【0022】
さらに、本発明の第2の側面は、
情報処理装置において、画像に含まれる特徴点の3次元位置を算出する情報処理方法であり、
初期情報生成部が、カメラ撮影画像の画像フレーム中、複数の先行画像フレームを入力し、各画像フレームの対応特徴点解析により、特徴点の3次元位置情報を取得する初期情報生成ステップと、
特徴点位置情報生成部が、前記初期情報生成部が先行画像フレームから取得した特徴点位置情報を初期画像フレームに対する状態情報として設定し、後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報を取得する特徴点位置情報生成ステップと、
を有することを特徴とする情報処理方法にある。
【0023】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法は、さらに、バンドル調整処理部が、前記特徴点位置情報生成ステップにおいて生成した特徴点位置情報を入力して特徴点の3次元位置情報の修正処理を実行するバンドル調整処理ステップを有することを特徴とする。
【0024】
さらに、本発明の情報処理方法の一実施態様において、前記初期情報生成ステップは、複数の異なる位置から撮影した画像を利用して各画像フレームに含まれる特徴点の対応を解析するSFM(Structure from Motion)処理を実行するステップであることを特徴とする。
【0025】
さらに、本発明の情報処理方法の一実施態様において、前記初期情報生成ステップは、前記先行画像フレームの解析により、画像フレームを撮影したカメラの位置姿勢情報を算出するステップであり、前記特徴点位置情報生成ステップは、前記初期情報生成部が前記先行画像フレームから算出した特徴点位置情報とカメラ位置姿勢情報を、初期画像フレームに対応する状態情報として設定し、前記後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報と後続フレームを撮影したカメラ位置姿勢情報を取得するステップであることを特徴とする。
【0026】
さらに、本発明の情報処理方法の一実施態様において、前記特徴点位置情報生成ステップは、特徴点位置情報とカメラ位置姿勢情報を含む多次元正規分布データを状態情報として設定して拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報と後続フレームを撮影したカメラ位置姿勢情報を取得することを特徴とする。
【0027】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法は、さらに、特徴点抽出部が、前記初期情報生成部と前記特徴点位置情報生成部とによって抽出されなかった特徴点を追加特徴点として抽出して抽出した追加特徴点の3次元位置を算出する処理を実行する特徴点抽出ステップを有し、前記バンドル調整処理ステップは、前記特徴点位置情報生成部の生成した特徴点位置情報と前記特徴点抽出部が抽出した追加特徴点の特徴点位置情報を入力して特徴点の3次元位置情報の修正処理を実行することを特徴とする。
【0028】
さらに、本発明の情報処理方法の一実施態様において、前記特徴点抽出ステップは、画像フレームから抽出した特徴点と、前記初期情報生成部と前記特徴点位置情報生成部とによって抽出された特徴点との重複判定を実行し、重複しない新規特徴点のみを追加特徴点として選択する処理を実行することを特徴とする。
【0029】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理方法は、さらに、3Dマップ生成部が、前記特徴点位置情報生成部の生成した特徴点位置情報を利用した3次元画像データを生成する3Dマップ生成ステップを有することを特徴とする。
【0030】
さらに、本発明の第3の側面は、
情報処理装置において、画像に含まれる特徴点の3次元位置を算出させるコンピュータ・プログラムであり、
初期情報生成部に、カメラ撮影画像の画像フレーム中、複数の先行画像フレームを入力し、各画像フレームの対応特徴点解析により、特徴点の3次元位置情報を取得させる初期情報生成ステップと、
特徴点位置情報生成部に、前記初期情報生成部が先行画像フレームから取得した特徴点位置情報を初期画像フレームに対する状態情報として設定し、後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報を取得させる特徴点位置情報生成ステップと、
を有することを特徴とするコンピュータ・プログラムにある。
【0031】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【0032】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【0033】
本発明の一実施例の構成によれば、カメラの取得した画像に基づく特徴点の3次元位置取得構成において、カメラ撮影画像の画像フレーム中、複数の先行画像フレームのみを利用した対応特徴点解析による特徴点の3次元位置情報を初期情報として取得する処理と、この初期情報を初期画像フレームに対する状態情報として設定して、後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報を取得する構成としたので、例えばフレームマッチングなどを伴う特徴点抽出処理は、先行画像フレームに対してのみ実行すればよく、効率的な特徴点の3次元位置情報の取得および3次元画像データの生成が実現される。
【発明を実施するための最良の形態】
【0034】
以下、図面を参照しながら本発明の実施形態に係る情報処理装置、および情報処理方法、並びにコンピュータ・プログラムの詳細について説明する。
【0035】
本発明の概要について、図4を参照して説明する。本発明の情報処理装置120は、例えば移動するユーザ101の保持するカメラ102の撮影画像、例えば動画像を構成する画像を入力し、その入力画像の解析を実行して撮影画像に含まれる様々なオブジェクトからなる3次元画像情報103を生成する。
【0036】
情報処理装置120は、先に図1を参照して説明した処理と同様、取得画像の解析によって、画像に含まれる特徴点の位置情報などが含まれる疎な3次元マップ131を、SLAM(simultaneous localization and mapping)やSFM(Structure from Motion)などの処理を適用して生成し、さらに、カメラの軌跡情報や画像内の特徴点情報などを利用して詳細な3次元情報である密な3次元マップ132を生成する。
【0037】
先に説明したように、SLAMは、カメラから入力する画像内の特徴点の位置と、カメラの位置姿勢を併せて検出する処理である。SFMは、例えば複数の異なる位置から撮影した画像を利用して画像内に含まれる特徴点(Landmark)の対応を解析する処理などである。
【0038】
疎な3次元マップ131は特徴点の3次元位置情報を持つ。この情報の生成処理シーケンスの従来例については、図2のフローチャートを参照して説明したが、本発明の情報処理装置120は、図2に示すフローと異なった処理により特徴点の3次元位置の取得を行う。
【0039】
本発明の一実施例の特徴点の3次元位置およびカメラの位置姿勢情報の取得シーケンスについて、図5に示すフローチャートを参照して説明する。
【0040】
特徴点の3次元位置情報およびカメラの位置姿勢情報の取得処理は、以下の処理シーケンスで実行する。
ステップS101:初期情報取得処理(SFM)
ステップS102:拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)
ステップS103:バンドル調整処理(Bundle Adjustment)
【0041】
本発明の一実施例の特徴点の3次元位置情報およびカメラの位置姿勢情報の取得処理の基本的流れは、このように、
「初期情報取得処理(SFM)」
→「拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)」
→「バンドル調整処理(Bundle Adjustment)」
このような処理シーケンスである。
【0042】
ステップS101の初期情報取得処理(SFM)は、例えば複数の異なる位置から撮影した画像を利用して画像内に含まれる特徴点(Landmark)の対応を解析するSFM(Structure from Motion)処理によって行われるが、この処理は、例えばカメラから入力する最初の数フレームの入力画像のみを適用して実行する。この処理によって得られた情報をステップS102において実行する拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)のイニシャライズ情報として利用する。
【0043】
EKF SLAMに適用するイニシャライズ情報が得られた後は、その後の入力画像に対しては、SFMを実行することなく、EKF SLAMを実行して、特徴点位置情報と各画像を撮影したカメラの位置姿勢情報を取得する。
【0044】
具体的な処理例について図6を参照して説明する。図6(a)に示すカメラによって取得される画像フレームに含まれる被写体の特徴点の位置情報とカメラの軌跡を求めるとする。なお、図6(a)には、カメラによって取得される画像フレームを一定間隔で示している。
【0045】
本発明の情報処理装置は、特徴点の3次元位置情報の解析対象とする画像フレームのすべてではなく、最初からの数フレームのみ(図6に示すフレームT1までの入力フレーム)を、図5に示すステップS101の初期情報取得処理(SFM)の処理対象フレームとする。この複数の先行画像フレームを対象とした初期情報取得処理(SFM)によって、3次元マップとカメラフレームの軌跡情報が、次のステップS102において実行する「EKF SLAM」の初期化情報(Initialize Data)として利用される。
【0046】
フレームT1までの複数の先行画像フレームによって得られた3次元マップとカメラフレームの軌跡情報が初期情報となり、この初期情報を用いて「EKF SLAM」の初期化を行い、「EKF SLAM」の処理を行う。すなわち、先行画像フレームから取得した特徴点位置情報を初期画像フレームに対する状態情報として設定し、後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報を取得する。
【0047】
図7に示すフローチャートは、図5に示すフローの詳細シーケンスを示すフローチャートである。
図5に示すステップS101[初期情報取得処理(SFM)]は図7のステップS204の処理、
図5に示すステップS102[拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)]は図7のステップS207の処理、
図5に示すステップS103[バンドル調整処理(Bundle Adjustment)]は、図7のステップS209の処理、
にそれぞれ対応する。
【0048】
図7のフローチャートに従って本発明の処理シーケンスについて説明する。まず、ステップS201において、フラグ設定を行う。このフラグは、初期情報取得処理(SFM)が完了しているか否かを示す状態フラグであり、初期情報取得処理(SFM)が未完了の場合は[0]、完了した場合は[1]に設定される。
【0049】
まず、初期的には、ステップS201において、状態フラグが[0]に設定され、ステップS202において画像を入力する。例えば図4に示すカメラ102の撮影した動画像を構成する1枚の画像フレームである。
【0050】
次に、ステップS203において状態フラグの値を確認し、フラグ=1でない場合は、初期情報取得処理(SFM)が未完了であるので、ステップS204に進む。ステップS204では、初期情報取得処理(SFM)を実行する。この処理は、複数の異なる位置から撮影した画像を利用して画像内に含まれる特徴点(Landmark)の対応を解析するSFM(Structure from Motion)処理である。従来から知られるSFM処理と同様、フレームマッチングによる特徴点の対応付け処理、バンドル調整処理によって、特徴点3次元位置と、特徴点を含む画像フレームの位置姿勢情報(カメラの位置姿勢情報)を算出する。
【0051】
このステップS204での初期情報取得処理(SFM)は、予め設定したフレーム数に対してのみ実行される。ステップS204での初期情報取得処理(SFM)の入力情報と出力情報は以下の通りである。
入力:予め設定したフレーム数の画像データ、
出力:入力画像フレームの位置姿勢と特徴点位置情報
なお、入力画像フレームの位置姿勢はカメラの位置姿勢に対応する情報であり、カメラ位置姿勢情報と同一または1対1に対応する情報である。
ステップS204での初期情報取得処理(SFM)において生成した出力情報[入力画像フレームの位置姿勢と特徴点位置情報]は、ステップS207における拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)に利用される。なお、ステップS204での初期情報取得処理(SFM)において生成した出力情報[入力画像フレームの位置姿勢と特徴点位置情報]は、処理対象画像フレームとともに、記憶部152に格納する。
【0052】
ステップS204での初期情報取得処理(SFM)の後、ステップS205では、予め設定されたフレーム数に達してSFMが完了したか否かを判定し、完了していない場合は、ステップS202に戻り、次の画像を入力してステップS204の初期情報取得処理(SFM)を継続する。
【0053】
ステップS205において、予め設定されたフレーム数に達して初期情報取得処理(SFM)が完了したと判定されると、ステップS206に進み、状態フラグを[1]、すなわち、初期情報取得処理(SFM)の完了を示す値に設定してステップS202に戻り、次の画像を入力する。
【0054】
次に、ステップS203において、状態フラグの値が[1]であることが確認され、ステップS207に進む。ステップS207では、図5のフローにおけるステップS102の処理、すなわち、拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)を実行する。
【0055】
拡張カルマンフィルタ(EKF)を適用した処理では、例えば先行する画像フレームなどから取得したカメラや特徴点の位置などの情報を状態変数として保持し、後続するフレームから対応する特徴点を観測した場合、観測情報に基づいて状態変数としてのカメラや特徴点の位置などの情報を更新してカメラの軌跡や、特徴点の3次元位置を求めるものである。なお、状態変数は、複数の状態値からなる多次元正規分布データとして保持される。すなわち、各変数の状態の確率を正規分布として示した多次元正規分布データとして保持される。
【0056】
この拡張カルマンフィルタ(EKF)を適用した処理を開始するためには、カメラや特徴点の位置を示す状態変数を初期値として予め保持していることが必要である。本発明の処理では、この初期値となるデータを図7のステップS204の初期情報取得処理(SFM)(図5に示すステップS101の処理)によって取得する。
【0057】
拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)において利用する状態変数について図8を参照して説明する。図8には、
(a)カメラによる撮影処理例、
(b)状態変数、
(c)状態変数の更新処理、
これらを示している。
【0058】
状態変数[x]は、例えば図8(b)に示すように、カメラの位置、姿勢、速度、各速度、さらに、カメラの撮影画像から検出される複数の特徴点の位置情報P1〜Pnによって構成される。このように複数の状態値からなる多次元正規分布データとして構成される。なお、ここに示す状態変数の例は一例であり、さらにその他の詳細情報を含めてもよいし、これらの一部のみからなるデータ構成としてもよい。
【0059】
状態変数は、新たな入力画像に基づいて逐次更新される。図8(c)に示すように、状態変数は新たな処理フレームから検出される特徴点情報に基づいて、以下のように、更新情報[xt+1]が生成される。
t+1←f(x,a,s)+u
ただし、
:モーションモデル、
:観測モデル、
u:ノイズ
である。
本実施例では、モーションモデルは「等速運動モデル」、観測モデルは「ピンホールカメラモデル」に従って処理する。
【0060】
ステップS207の拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)の開始に際して、データ変換処理部A151が、ステップS204の初期情報取得処理(SFM)において得られた情報を変換してEKF SLAMに適用するための状態変数を生成する。先に説明したように、ステップS204での初期情報取得処理(SFM)の入力情報と出力情報は以下の通りである。
入力:予め設定したフレーム数の画像データ、
出力:入力画像フレームの位置姿勢と特徴点位置情報
【0061】
データ変換処理部A151は、初期情報取得処理(SFM)の出力情報[入力画像フレームの位置姿勢と特徴点位置情報]を入力して、ステップS207の拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)において利用するためのデータ、すなわち、EKF SLAMにおいて適用する初期フレームの状態(=状態変数)を生成する。
【0062】
データ変換処理部A151の入力値と出力値は以下の通りである。
入力値:ステップS204の初期情報取得処理(SFM)において得られた入力画像フレームの位置姿勢(カメラ位置姿勢)と特徴点位置情報、
出力値:EKF SLAMにおいて適用する初期フレームの状態(=状態変数)
【0063】
データ変換処理部A151は、例えば、EKF SLAMで用いる初期フレームに対応するカメラ位置姿勢と特徴点位置を初期フレームの状態(多次元正規分布)の平均として設定する。なお、図8に示す変数のようにカメラ速度・角速度が必要な場合は、例えばSFMの結果として取得される過去の画像フレームに対応して算出されたカメラ位置姿勢と、カメラが等速度で運動するという仮説を用いて、カメラの速度・加速度を予測し、初期フレームの状態の平均に反映させる設定とする。
【0064】
なお、状態変数は、前述したように多次元正規分布データであるが、この状態変数の共分散行列の設定態様としては様々な方法がある。共分散行列を直接求めることは、様々な誤差要因があるため困難であり、一般的には経験則で決める。本実施例では、ユーザが予め設定した値を用いた。例えば、共分散値は0として、カメラに関する自己共分散値は0、特徴点位置に関する自己共分散値はユーザが設定した経験的な値σを用いる。
【0065】
このように、データ変換部A151は、ステップS204の初期情報取得処理(SFM)において処理を行った予め設定された0〜Tフレームの画像フレームの位置姿勢(カメラ位置姿勢)と特徴点位置情報を利用して、EKF SLAMで用いる初期フレームに対応する状態変数を算出し、ステップS207では、この状態変数を利用して、拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)を行い、後続する画像フレームの入力に応じた状態変数の更新処理を行う。
【0066】
ステップS207の拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)の入力情報と出力情報は以下の通りである。
入力:特徴点と初期フレームの状態、すなわち、カメラ位置姿勢情報と特徴点位置情報の多次元正規分布データからなる状態変数(図8参照)、
出力:各画像フレームに対応する状態変数と、特徴点トラッキングデータ、
なお、特徴点トラッキングデータは、各画像フレームに対応する状態変数に含まれる特徴点位置情報によって算出できる。
このステップS207の拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)において生成した出力情報[各画像フレームに対応する状態変数と、特徴点トラッキングデータ]は、処理対象画像フレームとともに、記憶部152に格納され、ステップS209におけるバンドル調整処理(Bundle Adjustment)に利用される。
【0067】
ステップS207では、各処理画像フレームに対応する状態変数(例えば図8(b)に示す状態変数x(多次元正規分布))と、特徴点トラッキングデータを取得し、各フレームに対応付けて図7に示すように記憶部152に記録する。すなわち、記憶部152には、ステップS207における拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)において処理された画像フレームに対応する状態変数(多次元正規分布)と特徴点トラッキングデータが記録される。
【0068】
ステップS208では、未処理の入力画像があるかを判定し、ある場合は、ステップS202に戻り、次の画像を入力して、ステップS207の拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)を継続して実行する。
【0069】
ステップS208において、未処理の入力画像がないと判定されると、ステップS209に進み、バンドル調整処理(Bundle Adjustment)を実行する。
【0070】
このステップS209のバンドル調整処理(Bundle Adjustment)は、ステップS207の拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)において生成された出力情報[各画像フレームに対応する状態変数(多次元正規分布)と、特徴点トラッキングデータ]を利用して実行する。
【0071】
図7に示すデータ変換部B153は、ステップS207の拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)において生成され記憶部152に記憶された情報を利用して、ステップS209のバンドル調整処理(Bundle Adjustment)で利用するデータへの変換処理を行う。
【0072】
データ変換部B153の入出力は以下のとおりである。
入力:各画像フレームに対応する状態変数(多次元正規分布)と、特徴点トラッキングデータ(記憶部152の格納データ)
出力:各画像フレームに対応するカメラ位置姿勢と特徴点位置
【0073】
データ変換部B153は、記憶部152の格納データである各画像フレームに対応する状態変数(多次元正規分布)を用いて、各画像フレームのカメラ位置姿勢情報を求め、特徴点位置は、最新フレームの状態(多次元正規分布)から求める。なお、状態変数は、前述したように各変数の状態の確率を正規分布として示した多次元正規分布データであり、正規分布データの平均に対応する値が、一番確率が高いので、カメラ位置姿勢や特徴点位置は、状態変数の各正規分布データの平均値を採用する。なお、特徴点トラッキングデータは記憶部152に記憶されたデータを利用する。
【0074】
ステップS209のバンドル調整処理(Bundle Adjustment)は、データ変換部B153の生成したデータ、すなわち、各画像フレームに対応するカメラ位置姿勢と特徴点位置を入力して処理を行う。
ステップS209のバンドル調整処理(Bundle Adjustment)の入出力データは以下の通りである。
入力:各画像フレームのカメラ位置姿勢と特徴点位置、および特徴点トラッキングデータ
出力:各画像フレームのカメラ位置姿勢と特徴点位置
【0075】
バンドル調整処理は、先に、図3を参照して説明したように異なる位置から撮影した複数の画像に含まれる対応する特徴点の3次元位置を1つの位置に収束させる処理によって、各画像フレームのカメラ位置姿勢と特徴点位置を求める処理である。すなわち、対応する特徴点の位置は図3に示す特徴点21のように、各画像の撮影ポイントから特徴点21を結ぶ線(Bundle)が1つの特徴点21位置において交わるはずであるが、カメラの位置や特徴点の画像内の位置情報などは必ずしも正確に算出されず様々な要因による誤差が含まれる。従って、このような誤差を取り除く必要がある。具体的には1つの対応する特徴点の3次元位置とカメラ位置とを結ぶ線が、その1つの特徴点において交わるように算出済みのカメラ位置や特徴点位置を修正する。この処理をバンドル調整処理(Bundle Adjustment)として実行する。
【0076】
この修正処理によって得られたカメラ姿勢位置情報と、特徴点位置情報を最終的な出力として、3次元マップを生成する。この処理によって、精度の高い3次元マップの生成が可能となる。
【0077】
[特徴点の追加を実行する処理例]
図7のフローチャートを参照して説明した処理では、ステップSS207の拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)の結果で得られる特徴点の情報のみを用いて、ステップS209におけるバンドル調整処理(Bundle Adjustment)を行う構成としていた。
【0078】
このような処理を実行しても得られた特徴点の3次元位置情報を用いて3次元マップを生成することが可能ではあるが、処理対象とするカメラフレーム数に対して特徴点数が相対的に少ない場合、生成される3次元マップの結果が悪くなる場合がある。より精度の高い3次元マップを生成するためには利用可能な特徴点の数が多いほうが有利である。すなわち、バンドル調整処理(Bundle Adjustment)を行う前に特徴点の追加が可能であれば、追加を行い追加した特徴点の情報も併せて利用して、バンドル調整処理(Bundle Adjustment)を行って多くの特徴点の3次元位置情報を出力する構成とすることが好ましい。以下では、この特徴点追加処理を実行する処理例について説明する。
【0079】
本実施例の処理シーケンスは、図9に示すフローチャートに従った処理となる。図9に示す処理フローは、先に説明した図7に示すステップS209の処理の前にステップS300の特徴点追加処理を追加した点である。その他の処理は、図7に示すフローと同様である。
【0080】
ステップS300の特徴点追加処理は、ステップS207における拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)の完了後に実行する。
【0081】
この時点で、記憶部には、ステップS207におけるEKF SLAM処理によって生成された各画像フレームに対応する状態変数と、特徴点トラッキングデータが格納され、ステップS300の特徴点追加処理では、この記憶部の格納データと、処理済みの画像フレームデータを入力して特徴点の追加処理を行う。
【0082】
ステップS300の特徴点追加処理の入出力データは以下の通りである。
入力:データ変換部153の出力[各画像フレームのカメラ位置姿勢と特徴点位置、および特徴点トラッキングデータ]と処理済みの全画像フレームデータ
出力:特徴点の三次元位置と、各画像内での特徴点位置、
である。
【0083】
ステップS209におけるバンドル調整処理(Bundle Adjustment)では、ステップS207におけるEKF SLAM処理において抽出済みの特徴点情報に、ステップS300の特徴点追加処理において追加された特徴点情報の双方を用いてバンドル調整処理(Bundle Adjustment)が行われることになる。すなわち、先に説明した図7に示すフローより多くの特徴点の3次元位置情報の出力が可能となる。
【0084】
ステップS300の特徴点追加処理の詳細シーケンスを図10のフローチャートを参照して説明する。ステップS301では、処理対象画像フレームを1枚ずつ順次入力する。なお処理対象とする画像フレームは、ステップS204の初期情報取得処理(SFM)と、ステップS207のEKF−SLAM処理の処理対象となった画像である。ステップS302以下の処理は、処理対象画像フレームの各々について順次実行する。
【0085】
ステップS302では、処理対象の画像フレームからの特徴点抽出処理を実行する。特徴点抽出処理は、既存の処理方法が適用可能であり、例えば、ハリスコーナーディテクター(Harris Corner Detector)を用いた特徴点抽出処理を適用する。
【0086】
ハリスコーナーディテクター(Harris Corner Detector)を用いた特徴点抽出処理について図11を参照して説明する。情報処理装置のデータ処理部は、特徴点抽出に際して図11に示すようにカメラによって撮影された取得イメージ170から複数のハリスコーナーイメージ180〜182と、ラプラシアンイメージ190〜192を生成する。
【0087】
ハリスコーナーイメージは、取得イメージに対してハリスコーナーディテクター(Harris Corner Detector)を適用して生成されるイメージデータである。これらのハリスコーナーイメージ180〜182から、例えば周囲8画素に比較して値の高い画素ポイント(maxima point)185を検出点として抽出する。さらに、取得イメージ170に対して、LoG(Laplacian of Gaussian)フィルタを適用して複数レベル(解像度)のラプラシアンイメージ190〜192を生成する。LoG(Laplacian of Gaussian)フィルタは、画像の輪郭強調のために用いられる2次微分フィルタの一種であり、人間の視覚系で網膜からの情報が外側膝状体で中継されるまでに行われている処理の近似モデルとして用いられるものである。
【0088】
特徴点抽出処理は、LoGフィルタ出力画像であるラプラシアンイメージ190〜192の所定のレベル範囲内の解像度変化によって位置の変化がないかハリスコーナーイメージ180〜182から得られた検出点の位置に対応する箇所に対して調べ、変化がない点を特徴点とする。これにより、画像の拡大縮小操作に対してロバストな特徴点間のマッチングが実現できる。なお、これらの特徴点抽出処理の詳細については、例えば、特開2004−326693号公報(特願2003−124225)に記載されている。
【0089】
次に、ステップS303において、重複特徴点を除去する。すなわち、ステップS302において抽出された特徴点から、ステップS204の初期情報取得処理(SFM)と、ステップS207のEKF−SLAM処理の処理において抽出された特徴点と重複する特徴点を除去する。ステップS204の初期情報取得処理(SFM)と、ステップS207のEKF−SLAM処理の処理において抽出された特徴点情報は、記憶部152に格納されており、この取得済みの特徴点と、ステップS302において取得した特徴点とを比較して重複していない特徴点のみを記憶部152に追加登録する。
【0090】
具体的には、処理画像フレームに対して、記憶部152に登録されている特徴点の画像フレーム中の位置を下式(数式1)によって計算する。
【0091】
【数1】

【0092】
上記式の意味について、図12、図13を参照して説明する。上記式は、カメラの撮影画像210に含まれるオブジェクト211の点(m)のカメラ像平面の画素位置212、すなわち、カメラ座標系によって表現されている位置と、世界座標系におけるオブジェクト200の3次元位置(M)201との対応関係を示す式である。
【0093】
カメラ像平面の画素位置212はカメラ座標系によって表現されている。カメラ座標系は、カメラの焦点を原点Cとして、像平面がXc,Ycの二次元平面、奥行きをZcとした座標系であり、カメラの動きによって原点Cは移動する。
【0094】
一方、オブジェクト200の3次元位置(M)201は、カメラの動きによって移動しない原点Oを有するXYZ三軸からなる世界座標系によって示される。この異なる座標系でのオブジェクトの位置の対応関係を示す式が上述のピンホールカメラモデルとして定義される。
【0095】
この式に含まれるλ,A,Cw,Rwは、図13に示すように、
λ:正規化パラメータ
A:カメラ内部パラメータ、
Cw:カメラ位置、
Rw:カメラ回転行列、
を意味している。
【0096】
カメラ内部パラメータAには、以下の値が含まれる。
f:焦点距離
θ:画像軸の直交性(理想値は90°)
ku:縦軸のスケール(3次元位置のスケールから二次元画像のスケールへの変換)
kv:横軸のスケール(3次元位置のスケールから二次元画像のスケールへの変換)
(u0,v0):画像中心位置
【0097】
もし、ステップS302の特徴点抽出処理で抽出した特徴点が、記憶部152に登録されている特徴点の画像内の位置に近ければ、重複特徴点として削除する。近いかどうかの判断は、予め設定した閾値と比較して閾値より小さい差であれば削除する。具体的には、例えば、以下の式(数式2)、(数式3)を用いて判定を行う。
【数2】

【数3】

【0098】
上記(数式2)と(数式3)のdistとXzを用いて、
「Xzが正で且つ、distがある閾値以上」
の点を重複特徴点であると判断する。但し、mdatabaseは、記憶部152に登録された特徴点であり、前述の式(数式1)の左辺値と同じである。また、mharris_cornerは、ステップS302の特徴点抽出と処理で抽出された点に対応する。また、式(数式3)の左辺の各成分は、前述の式(数式1)と同一である。なお、式(数式3)は、カメラの背面にある特徴点を無視した設定としている。
【0099】
次に、ステップS304において、第1の特徴点トラッキング処理、すなわち、「特徴点トラッキング#1(特徴点位置未知)」を実行する。この処理は、一般的なテンプレートウィンドウマッチングによる特徴点のオプティカルフロー検出処理である。なお、テンプレートウィンドウマッチングによる特徴点のオプティカルフロー検出処理の詳細は、例えば[ディジタル画像処理編集委員会、「ディジタル画像処理」、財団法人 画像情報教育振興協会 (2004)pp.243]に記載されている。
【0100】
処理対象としている画像フレームからステップS302の特徴点抽出処理において新たに抽出された特徴点を選択し、フレームの特徴点周辺をウィンドウとして切り出してテンプレート画像を取得する。ウィンドウサイズはユーザが設定する(例えば360x240の画像に対して21x21のテンプレート)。次に、未来方向のフレームに対してテンプレートマッチングを行い、対応点を求める。探索領域は、直前のフレームでの対応点周辺に設定して探索を実行する。
【0101】
マッチングしているか否かの指標として利用するマッチングスコアは、例えば正規化相関値を用いる。なお、正規化相関値については、上記文献[ディジタル画像処理編集委員会、「ディジタル画像処理」、財団法人 画像情報教育振興協会(2004)pp.204]に記載されている。この処理において、マッチングスコアが小さければ(相関値が小さければ)探索を止める。求めた対応点が求めるトラッキング結果となる。このようにして、処理対象の画像フレームからステップS302の特点抽出処理において新たに抽出された特徴点の追跡(トラッキング)処理を実行する。
【0102】
次に、ステップS305において、特徴点三次元位置推定処理を実行する。この処理は、各画像フレームのカメラ位置と上述の処理によって得られる特徴点トラッキング結果を用いて特徴点の三次元位置を求める処理である。
【0103】
先に説明した式(数式1)、すなわち、ピンホールカメラモデルの式を用いて、特徴点の位置M求める。但し、カメラ位置はc、カメラ姿勢(回転行列)はR、カメラ内部パラメータはA、特徴点の画像内の位置はmである。次に、式(数式1)を変形し、特徴点の位置Mに関する以下の式(数式4)を作成する。
【数4】

【0104】
上記式(数式4)にあるそれぞれの変数は、前述した式(数式1)と同じである。また、dはカメラ位置cと特徴点Mとの距離を表す。また、下付き文字iはフレーム番号を表す。また、小文字で書かれているベクトルxは、下式(数式5)によって定義される。
【数5】

【0105】
なお、上記式(数式4)は正値にのみ成り立つので、図9に示すデータ変換部B153から得られる計測値に対しては、以下の式(数式6)が成り立つ。
【数6】

【0106】
ただし、
記号[^]は計測値を意味し、
[ε]は計測誤差により発生する左辺・右辺同士の誤差、
また、[x^]は、以下の式(数式7)によって定義される値である。
【数7】

【0107】
入力フレームは1フレーム分ではなく、ステップS304の処理、すなわち、「特徴点トラッキング#1(特徴点位置未知)」でトラッキングしたnフレーム分(1フレーム分=カメラ位置姿勢c、Rと特徴点の画像内の位置m)とするので、複数フレームに対応するために上記式(数式6)を拡張し、以下の式(数式8)を得る。
【数8】

【0108】
ただし、Mは下式によって定義される。
【数9】

【0109】
上記式(数式8)をnフレーム分用意し、1つの式にまとめたのが以下に示す式(数式10)である。
【数10】

【0110】
なお、上記式(数式10)の各行列・ベクトルは、以下の式(数式11)
【数11】

として定義する。
【0111】
上記式(数式11)の左辺のεのノルム(ベクトルの長さ)が最小(誤差最小)になるようなベクトルXを計算すれば、所望のベクトルY(特徴点の三次元位置Mと、各フレームデータのカメラ位置と特徴点との間の距離di)が求まる。εのノルムの二乗の式は、以下の式(数式12)になる。
【数12】

【0112】
上記式(数式12)のベクトルYを変数、他を全て定数とみなしたとき、上記式(数式12)はベクトルYに関する二次関数なので、左辺が最小になるYは、上記式(数式12)のベクトルYに関する偏微分式である以下の式(数式13)、すなわち、
【数13】

【0113】
上記式(数式13)の偏微分値が0となるYである。そのベクトルYは、以下の式(数式14)である。
【数14】

【0114】
上記式(数式14)で求めたベクトル、すなわち、
【数15】

【0115】
上記式によって定義されるベクトル[Y]から、特徴点位置[M]、すなわち、
【数16】

上記特徴点位置[M]を抽出し、結果とする。
【0116】
次のステップS306では第2の特徴点トラッキング処理、すなわち、「特徴点トラッキング#2(特徴点位置既知)」を実行する。先に説明した一般的なテンプレートウィンドウマッチングによる特徴点のオプティカルフロー検出方法に、特徴点位置情報を用いてよりロバストにトラッキングをする。
【0117】
画像フレームの特徴点周辺を切り出し、予め設定したウィンドウサイズのテンプレート、例えば360x240の画像に対して21x21のテンプレート画像を取得する。ここまでは、先のステップS304の第1のトラッキング処理と同一の処理である。ステップS306では、未来方向のフレームに対してテンプレートマッチングを行い、対応点を求める。この際の探索中心を、ステップS305における特徴点三次元位置推定処理で求めた特徴点位置、すなわち、
【数17】

【0118】
上記特徴点位置Mを用いて計算する。計算は、先に説明した式(数式1)を用いる。この計算により探索中心を決定して、その探索中心に中心を設定したウィンドウ内の検索を行う。
【0119】
マッチングの有無の判定指標であるマッチングスコアは、先に説明したステップS304の「特徴点トラッキング#1」と同様正規化相関値を用いることができる。もし、マッチングスコアが小さければ(相関値が小さければ)、そのフレームには特徴点がないと判定する。画像フレームデータに対して未来方向全フレームに対して処理を行い、特徴点のトラッキングを実行し、各画像フレームにおける対応特徴点を検出する。この処理によれば、カメラフレームから一旦外れた特徴点も、再度カメラフレームに入ったときに再度追跡することが可能となる。
【0120】
ステップS306の処理によって各画像フレームにおいて検出された対応特徴点情報の三次元位置をステップS307において算出し、算出した核特徴点の三次元位置情報を各フレームに対応付けて記憶部152に追加特徴点情報として記録する。
【0121】
ステップS308において、処理対象フレームにおける全特徴点の処理が完了したか否かを判定し、未処理特徴点がある場合は、ステップS304からの処理を未処理の特徴点について実行する。ステップS308において、処理対象フレームにおける全特徴点の処理が完了したと判定した場合は、ステップS309に進み、画像フレーム全ての処理が完了したか否かを判定し、未処理画像フレームがある場合は、ステップS301からの処理を未処理の画像フレームについて実行する。ステップS309において、全画像フレームの処理が完了したと判定した場合は処理を終了する。
【0122】
このようにして、図9に示すステップS300の特徴点追加処理が実行され、ステップS204における初期情報取得処理(SFM)、ステップS207における拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)において抽出されなかった特徴点が記憶部152に追加登録されることになる。
【0123】
ステップS209におけるバンドル調整処理(Bundle Adjustment)では、ステップS207におけるEKF SLAM処理において抽出済みの特徴点情報に、ステップS300の特徴点追加処理において追加された特徴点情報の双方を用いてバンドル調整処理(Bundle Adjustment)が行われることになる。すなわち、先に説明した図7に示すフローより多くの特徴点の3次元位置情報の出力が可能となる。
【0124】
より精度の高い3次元マップを生成するためには利用可能な特徴点の数が多いほうが有利であり、本実施例によって追加した特徴点を利用した3次元マップはより精度の高いデータとなる。
【0125】
先に図7のフローを参照して説明した特徴点を追加していない状態でバンドル調整を行った場合」と、図9のフローを参照して説明した「特徴点を追加した後でバンドル調整を行った場合」の、それぞれの特徴点のデータ例を図14に示す。
【0126】
図14は、図14(a)に示すポスターを貼った壁面の撮影画像に基づいて、
(b1)特徴点追加処理なしの場合の特徴点情報とカメラ軌跡、
(b2)特徴点追加処理ありの場合の特徴点情報とカメラ軌跡、
これらのデータを示している。
(b2)に示すように、特徴点の数が増大し、このような多くの特徴点を利用することで、より詳細な3Dマップを生成することが可能となる。図15は、特徴点の追加処理を行って取得した特徴点の3次元位置情報を用いて生成した3Dマップの例を示している。
【0127】
図16に本発明の情報処理装置の構成例を示す。情報処理装置120は、先に図4を参照して説明したように例えば移動するユーザ101の保持するカメラ102の撮影画像、例えば動画像を構成する画像を入力し、その入力画像の解析を実行して撮影画像に含まれるオブジェクトについての3次元画像情報103を生成する。
【0128】
情報処理装置120は、図16に示すように、画像入力部501、初期情報生成部(SFM)502、データ変換部A503、特徴点位置情報生成部(EKF−SLAM)504、データ変換部B505、バンドル調整処理部506、記憶部507、3Dマップ生成部508、特徴点抽出部511を有する。
【0129】
画像入力部501は、図4を参照して説明したように例えば移動するユーザ101の保持するカメラ102の撮影画像を入力して、初期情報取得部502、特徴点位置情報取得部504に出力する。なお、画像入力部501から入力する画像フレームは、直接、あるいは他の処理部を介して記憶部507に記憶される。
【0130】
画像入力部501の入力画像中、予め設定された所定の初期フレームは、初期情報取得部(SFM)502に出力され、その後は、特徴点位置情報取得部504に出力される。
【0131】
初期情報生成部(SFM)502は、図7、図9のフローチャートにおけるステップS204の処理を実行する。すなわち、複数の異なる位置から撮影した画像を利用して画像内に含まれる特徴点(Landmark)の対応を解析するSFM(Structure from Motion)処理を実行する。従来から知られるSFM処理と同様、フレームマッチングによる特徴点の対応付け処理、バンドル調整処理によって、特徴点3次元位置と、特徴点を含む画像フレームの位置姿勢情報(カメラの位置姿勢情報)を算出する。初期情報生成部(SFM)502の入力情報と出力情報は以下の通りである。
入力:予め設定したフレーム数の画像データ、
出力:入力画像フレームの位置姿勢と特徴点位置情報
この出力情報は、データ変換部A503に出力されるとともに、記憶部507に処理画像フレームに対応付けられて格納される。
【0132】
データ変換部A503は、初期情報生成部(SFM)502の初期情報取得処理(SFM)において得られた入力画像フレームの位置姿勢(カメラ位置姿勢)と特徴点位置情報を入力して、
出力値:EKF SLAMにおいて適用する初期フレームの状態(=状態変数)
を生成する。なお、状態変数は、先に図8(b)を参照して説明したように、カメラの位置、姿勢、速度、各速度、さらに、カメラの撮影画像から検出される複数の特徴点の位置情報P1〜Pnによって構成される。
データ変換部A503の生成した初期フレームの状態情報(=状態変数)は、特徴点位置情報生成部(EKF SLAM)504に入力される。
【0133】
特徴点位置情報生成部(EKF SLAM)504は、図7、図9のフローチャートにおけるステップS207の処理を実行する。すなわち、拡張カルマンフィルタを適用したカメラ位置姿勢及び特徴点3次元位置情報取得処理(EKF SLAM)を実行する。
【0134】
前述したように拡張カルマンフィルタ(EKF)を適用した処理では、例えば先に図8(b)を参照して説明したように、カメラの位置、姿勢、速度、各速度、さらに、カメラの撮影画像から検出される複数の特徴点の位置情報P1〜Pnによって構成される状態変数を、逐次更新して、各処理画像フレームに対応する状態変数を求める。この拡張カルマンフィルタ(EKF)を適用した処理を開始するためには、カメラや特徴点の位置を示す状態変数を初期値として予め保持していることが必要であり、この初期値となるデータを、データ変換部A503から受領して処理を開始する。
【0135】
特徴点位置情報生成部(EKF SLAM)504における入力情報と出力情報は以下の通りである。
入力:特徴点と初期フレームの状態、すなわち、カメラ位置姿勢情報と特徴点位置情報の多次元正規分布データからなる状態変数(図8参照)、
出力:各画像フレームに対応する状態変数と、特徴点トラッキングデータ、
なお、特徴点トラッキングデータは、各画像フレームに対応する状態変数に含まれる特徴点位置情報によって算出できる。
この特徴点位置情報生成部(EKF SLAM)504の処理(EKF SLAM)において生成した出力情報[各画像フレームに対応する状態変数と、特徴点トラッキングデータ]は、処理対象画像フレームとともに、記憶部507に格納される。
【0136】
データ変換部B505は、記憶部507に格納された特徴点位置情報生成部(EKF SLAM)504の生成データを取り出して、バンドル調整処理部(Bundle Adjustment)506で利用するデータへの変換処理を行う。データ変換部B505の入出力データは以下のとおりである。
入力:各画像フレームに対応する状態変数(多次元正規分布)と、特徴点トラッキングデータ(記憶部507の格納データ)
出力:各画像フレームに対応するカメラ位置姿勢と特徴点位置
【0137】
データ変換部B505は、記憶部507の格納データである各画像フレームに対応する状態変数(多次元正規分布)を用いて、各画像フレームのカメラ位置姿勢情報を求め、特徴点位置は、最新フレームの状態(多次元正規分布)から求める。なお、状態変数は、前述したように各変数の状態の確率を正規分布として示した多次元正規分布データであり、正規分布データの平均に対応する値が、一番確率が高いので、カメラ位置姿勢や特徴点位置は、状態変数の各正規分布データの平均値を採用する。
【0138】
データ変換部B505の生成データは、バンドル調整処理部(Bundle Adjustment)506に提供され、バンドル調整処理部(Bundle Adjustment)506は、この入力情報を利用してバンドル調整処理を行う。
バンドル調整処理部(Bundle Adjustment)506の入出力データは以下の通りである。
入力:各画像フレームのカメラ位置姿勢と特徴点位置、および特徴点トラッキングデータ
出力:各画像フレームのカメラ位置姿勢と特徴点位置
【0139】
バンドル調整処理は、先に、図3を参照して説明したように異なる位置から撮影した複数の画像に含まれる対応する特徴点の3次元位置を1つの位置に収束させる処理によって、各画像フレームのカメラ位置姿勢と特徴点位置を求める処理である。この処理によって得られたカメラ姿勢位置情報と、特徴点位置情報が記憶部507に格納され、さらに3Dマップ生成部508に提供される。3Dマップ生成部508は、これらの特徴点情報とカメラ軌跡情報を利用して3Dマップの生成を行う。例えば図15に示すような3Dマップが生成される。
【0140】
特徴点抽出部511は、図9、図10を参照して説明した特徴点追加処理を実行する場合の構成であり、図10に示すフローに従った処理を実行して、初期情報生成部(SFM)502、および特徴点位置情報生成部(EKF−SLAM)504において抽出されなかった特徴点を検出し、その3次元位置情報と各画像フレーム内の位置情報を算出しては記憶部507に追加登録する。
【0141】
この処理が実行された場合、バンドル調整処理部(Bundle Adjustment)506は、初期情報生成部(SFM)502、および特徴点位置情報生成部(EKF−SLAM)504において抽出された特徴点と、さらに、特徴点抽出部511において新たに抽出された特徴点の双方を用いてバンドル調整処理(Bundle Adjustment)を実行し、より多くの特徴点の3次元位置情報を出力する。先に図14を参照して説明した通りである。この処理によって、より精度の高い3次元マップの生成が実現される。
【0142】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。
【0143】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(Local Area Network)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【0144】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【0145】
以上、説明したように、本発明の一実施例の構成によれば、カメラの取得した画像に基づく特徴点の3次元位置取得構成において、カメラ撮影画像の画像フレーム中、複数の先行画像フレームのみを利用した対応特徴点解析による特徴点の3次元位置情報を初期情報として取得する処理と、この初期情報を初期画像フレームに対する状態情報として設定して、後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報を取得する構成としたので、例えばフレームマッチングなどを伴う特徴点抽出処理は、先行画像フレームに対してのみ実行すればよく、効率的な特徴点の3次元位置情報の取得および3次元画像データの生成が実現される。
【図面の簡単な説明】
【0146】
【図1】3次元マップ(3D map)の生成処理シーケンスの一例について説明するフローチャートを示す図である。
【図2】画像フレームに含まれる特徴点情報とカメラ軌跡情報を取得する処理シーケンスの一例について説明するフローチャートを示す図である。
【図3】バンドル調整処理(Bundle Adjustment)の一例について説明する図である。
【図4】本発明の処理の概要について説明する図である。
【図5】本発明の一実施例に従った処理のシーケンスについて説明するフローチャートを示す図である。
【図6】本発明の一実施例に従った処理の具体的なシーケンスについて説明する図である。
【図7】本発明の一実施例に従った処理の詳細シーケンスについて説明するフローチャートを示す図である。
【図8】拡張カルマンフィルタ(EKF)を適用した処理において適用する状態変数について説明する図である。
【図9】本発明の一実施例に従った処理の詳細シーケンスについて説明するフローチャートを示す図である。
【図10】本発明の一実施例に従った特徴点抽出処理の詳細シーケンスについて説明するフローチャートを示す図である。
【図11】ハリスコーナーディテクター(Harris Corner Detector)を用いた特徴点抽出処理について説明する図である。
【図12】ピンホールカメラモデル、すなわちカメラ座標系によって表現されている位置と、世界座標系におけるオブジェクトの3次元位置との対応関係を示す式の意味について説明する図である。
【図13】ピンホールカメラモデル、すなわちカメラ座標系によって表現されている位置と、世界座標系におけるオブジェクトの3次元位置との対応関係を示す式の意味について説明する図である。
【図14】特徴点追加処理を行わない場合と行った場合の処理例について説明する図である。
【図15】特徴点追加処理を行った場合の処理例について説明する図である。
【図16】本発明の一実施例に係る情報処理装置の構成例について説明する図である。
【符号の説明】
【0147】
11〜13 撮影画像
21〜23 特徴点
101 ユーザ
102 カメラ
103 3次元画像情報
120 情報処理装置
131 疎な3次元マップ
132 密な3次元マップ
170 取得イメージ
180〜182 ハリスコーナーイメージ
190〜192 ラプラシアンイメージ
501 画像入力部
502 初期情報生成部(SFM)
503 データ変換部A
504 特徴点位置情報生成部(EKF−SLAM)
505 データ変換部B
506 バンドル調整処理部
507 記憶部
508 3Dマップ生成部
511 特徴点抽出部

【特許請求の範囲】
【請求項1】
画像に含まれる特徴点の3次元位置を算出する情報処理装置であり、
カメラ撮影画像の画像フレーム中、複数の先行画像フレームを入力し、各画像フレームの対応特徴点解析により、特徴点の3次元位置情報を取得する初期情報生成部と、
前記初期情報生成部が先行画像フレームから取得した特徴点位置情報を初期画像フレームに対する状態情報として設定し、後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報を取得する特徴点位置情報生成部と、
を有することを特徴とする情報処理装置。
【請求項2】
前記情報処理装置は、さらに、
前記特徴点位置情報生成部の生成した特徴点位置情報を入力して特徴点の3次元位置情報の修正処理を実行するバンドル調整処理部を有することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記初期情報生成部は、
複数の異なる位置から撮影した画像を利用して各画像フレームに含まれる特徴点の対応を解析するSFM(Structure from Motion)処理を実行する構成であることを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記初期情報生成部は、
前記先行画像フレームの解析により、画像フレームを撮影したカメラの位置姿勢情報を算出する構成であり、
前記特徴点位置情報生成部は、
前記初期情報生成部が前記先行画像フレームから算出した特徴点位置情報とカメラ位置姿勢情報を、初期画像フレームに対応する状態情報として設定し、前記後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報と後続フレームを撮影したカメラ位置姿勢情報を取得することを特徴とする請求項1に記載の情報処理装置。
【請求項5】
前記特徴点位置情報生成部は、
特徴点位置情報とカメラ位置姿勢情報を含む多次元正規分布データを状態情報として設定して拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報と後続フレームを撮影したカメラ位置姿勢情報を取得することを特徴とする請求項4に記載の情報処理装置。
【請求項6】
前記情報処理装置は、さらに、
前記初期情報生成部と前記特徴点位置情報生成部とによって抽出されなかった特徴点を追加特徴点として抽出して抽出した追加特徴点の3次元位置を算出する処理を実行する特徴点抽出部を有し、
前記バンドル調整処理部は、
前記特徴点位置情報生成部の生成した特徴点位置情報と前記特徴点抽出部が抽出した追加特徴点の特徴点位置情報を入力して特徴点の3次元位置情報の修正処理を実行する構成であることを特徴とする請求項2に記載の情報処理装置。
【請求項7】
前記特徴点抽出部は、
画像フレームから抽出した特徴点と、前記初期情報生成部と前記特徴点位置情報生成部とによって抽出された特徴点との重複判定を実行し、重複しない新規特徴点のみを追加特徴点として選択する処理を実行することを特徴とする請求項6に記載の情報処理装置。
【請求項8】
前記情報処理装置は、さらに、
前記特徴点位置情報生成部の生成した特徴点位置情報を利用した3次元画像データを生成する3Dマップ生成部を有することを特徴とする請求項1に記載の情報処理装置。
【請求項9】
情報処理装置において、画像に含まれる特徴点の3次元位置を算出する情報処理方法であり、
初期情報生成部が、カメラ撮影画像の画像フレーム中、複数の先行画像フレームを入力し、各画像フレームの対応特徴点解析により、特徴点の3次元位置情報を取得する初期情報生成ステップと、
特徴点位置情報生成部が、前記初期情報生成部が先行画像フレームから取得した特徴点位置情報を初期画像フレームに対する状態情報として設定し、後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報を取得する特徴点位置情報生成ステップと、
を有することを特徴とする情報処理方法。
【請求項10】
前記情報処理方法は、さらに、
バンドル調整処理部が、前記特徴点位置情報生成ステップにおいて生成した特徴点位置情報を入力して特徴点の3次元位置情報の修正処理を実行するバンドル調整処理ステップを有することを特徴とする請求項9に記載の情報処理方法。
【請求項11】
前記初期情報生成ステップは、
複数の異なる位置から撮影した画像を利用して各画像フレームに含まれる特徴点の対応を解析するSFM(Structure from Motion)処理を実行するステップであることを特徴とする請求項9に記載の情報処理方法。
【請求項12】
前記初期情報生成ステップは、
前記先行画像フレームの解析により、画像フレームを撮影したカメラの位置姿勢情報を算出するステップであり、
前記特徴点位置情報生成ステップは、
前記初期情報生成部が前記先行画像フレームから算出した特徴点位置情報とカメラ位置姿勢情報を、初期画像フレームに対応する状態情報として設定し、前記後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報と後続フレームを撮影したカメラ位置姿勢情報を取得するステップであることを特徴とする請求項9に記載の情報処理方法。
【請求項13】
前記特徴点位置情報生成ステップは、
特徴点位置情報とカメラ位置姿勢情報を含む多次元正規分布データを状態情報として設定して拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報と後続フレームを撮影したカメラ位置姿勢情報を取得することを特徴とする請求項12に記載の情報処理方法。
【請求項14】
前記情報処理方法は、さらに、
特徴点抽出部が、前記初期情報生成部と前記特徴点位置情報生成部とによって抽出されなかった特徴点を追加特徴点として抽出して抽出した追加特徴点の3次元位置を算出する処理を実行する特徴点抽出ステップを有し、
前記バンドル調整処理ステップは、
前記特徴点位置情報生成部の生成した特徴点位置情報と前記特徴点抽出部が抽出した追加特徴点の特徴点位置情報を入力して特徴点の3次元位置情報の修正処理を実行することを特徴とする請求項10に記載の情報処理方法。
【請求項15】
前記特徴点抽出ステップは、
画像フレームから抽出した特徴点と、前記初期情報生成部と前記特徴点位置情報生成部とによって抽出された特徴点との重複判定を実行し、重複しない新規特徴点のみを追加特徴点として選択する処理を実行することを特徴とする請求項14に記載の情報処理方法。
【請求項16】
前記情報処理方法は、さらに、
3Dマップ生成部が、前記特徴点位置情報生成部の生成した特徴点位置情報を利用した3次元画像データを生成する3Dマップ生成ステップを有することを特徴とする請求項9に記載の情報処理方法。
【請求項17】
情報処理装置において、画像に含まれる特徴点の3次元位置を算出させるコンピュータ・プログラムであり、
初期情報生成部に、カメラ撮影画像の画像フレーム中、複数の先行画像フレームを入力し、各画像フレームの対応特徴点解析により、特徴点の3次元位置情報を取得させる初期情報生成ステップと、
特徴点位置情報生成部に、前記初期情報生成部が先行画像フレームから取得した特徴点位置情報を初期画像フレームに対する状態情報として設定し、後続画像フレームに対する拡張カルマンフィルタ(EKF)を適用した処理により、後続フレーム中の特徴点の3次元位置情報を取得させる特徴点位置情報生成ステップと、
を有することを特徴とするコンピュータ・プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図5】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図12】
image rotate

【図13】
image rotate

【図16】
image rotate

【図4】
image rotate

【図6】
image rotate

【図11】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2009−237845(P2009−237845A)
【公開日】平成21年10月15日(2009.10.15)
【国際特許分類】
【出願番号】特願2008−82448(P2008−82448)
【出願日】平成20年3月27日(2008.3.27)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】