以下、添付図面を参照して本発明の好適な実施形態について詳細に説明する。
〔第1の実施形態〕
本実施形態に係る情報処理装置では、現実空間上に存在する指標の撮影画像を用いて、指標の配置情報を算出する。以下、本実施形態に係る情報処理装置について説明する。
図1は、本実施形態に係る指標の配置情報を算出する情報処理装置1000の概略構成を示している。情報処理装置1000はビデオカメラなどの撮影部100に接続されている。
画像取得部1010は、撮影部100から画像を取得する。撮影部100は、指標が配置されている空間または物体を撮影し、画像取得部1010を介して情報処理装置1000に動画像系列を逐次入力する。画像取得部1010は、例えばPCに設置されたビデオキャプチャカードである。なお、撮影部100からビデオカメラで得られるライブ画像をリアルタイムに入力するのではなく、不図示の記憶装置に記憶してある過去に撮影された画像系列を入力してもよい。
指標抽出部1020は、取得された画像中から指標を抽出する。
ここで本実施形態で用いる指標について説明する。
環境中または対象物体上には、図3(A)に示すような四角形形状の指標(以下、四角形指標と呼ぶ)が複数配置されているものとする。ここで、配置された指標をPk(k=1,,,Ko)で表す。但し、Koは配置された指標の数(図3(A)の例ではKo=3)である。図3(B)に示すように、四角形指標は、内部に識別子を表すパターンを持ち、一意に同定可能であるとする。また、また、四角形指標Pkは頂点pki(i=1,,,Nk)により構成される。但し、Nkは、指標Pkを構成する頂点の総数(本実施形態の場合は四角形指標であるのでNk=4)を表す。指標抽出部1020は、撮影画像に2値化処理を施した後にラベリング処理を行い、一定面積以上の領域の中から4つの直線によって形成されているものを指標候補として抽出する。さらに、候補領域の中に特定のパターンがあるか否かを判定することによって候補領域が指標領域であるかを判定し、内部のパターンを読み出すことによって指標の画像内の方向と識別子を取得することにより、取得された画像中から指標を抽出する。
なお、環境中または対象物体上に配置される指標Pkは、四角形指標に限るものではなく、撮影画像上において検出可能であって、かついずれの指標であるか識別可能である指標であれば、何れの形態であってもよい。例えば、図3(C)に示すように、それぞれが異なる色を有する円形状の指標のような点指標であってもよい。この場合には、画像上から各々の指標の色に対応する領域を検出し、その重心位置を指標の検出座標とする。また、それぞれが異なるテクスチャ特徴を有する空間に元来存在する特徴点(自然特徴点)を点指標としてもよい。この場合には、既知の情報として予め保持している各々の指標のテンプレート画像によるテンプレートマッチングを画像上に施すことにより、画像から指標の抽出する。これに限らず、空間中に固定された指標であってそれを撮影した画像から検出可能なものであればどのような指標であってもかまわない。
指標管理部1030は、指標抽出部1020において抽出された指標の、各々の四角形指標Pknの識別子knと各頂点pkniの画像座標uPkni、各指標の配置情報を指標情報として管理する。指標の配置情報は、四角形指標であれば基準座標系に対する指標の位置及び姿勢、点指標であれば基準座標系に対する指標の位置となる。基準座標系は、環境中や物体上の一点を原点として定義し、互いに直交する3軸を夫々X軸、Y軸、Z軸として定義する。また、本実施形態において、基準座標系での配置情報が既知の指標を基準指標と呼び、いずれかの画像中には、基準指標が含まれるように撮影する。
撮影部位置姿勢情報取得部1040は、画像を撮影した時点の撮影部の概略位置及び姿勢を取得する。
画像使用判定部1050は、画像取得部1010によって情報処理装置1000に入力された画像を指標の配置情報の算出に使用するか否かの判定を行う。
指標配置情報算出部1060は、画像使用判定部1050で使用すると判定された画像を用いて指標の配置情報を算出する。
次に、本実施形態における指標配置情報計測の処理の手順を図2に示すフローチャートを用いて説明する。
ステップS2010では、画像取得部1010を介して撮影装置100が現在撮影している画像を取得する。
ステップS2020では、指標抽出部1020において画像取得部1010から取得された画像上における指標が抽出し、抽出された各々の四角形指標Pknの識別子knと各頂点pkniの画像座標uPkni、を指標管理部1030に登録する。ここで、n(n=1,,,N)は画像上で検出された四角形指標夫々に対するインデックスであり、Nは検出された四角形指標の総数を表している。また、画像中で検出されたN個の四角形指標の頂点の総数をNTotalとする。例えば図3(A)の場合は、識別子が1、2、3である四角形形状の指標が撮影される場合を示しており、N=3である。そして、識別子k1=1、k2=2、k3=3とこれらに対応する画像座標uPk1i、uPk2i、uPk3i、(i=1、2、3、4)が指標管理部1030に登録される。この場合、NTotalは、12(=3×4)になる。
ステップS2030では、撮影部位置姿勢情報取得部1040において現在入力されている画像を撮影した際の撮影部の概略位置及び姿勢情報を取得する。本実施形態では、撮影部の概略位置及び姿勢を、基準座標系における配置情報が既知である指標の画像情報から公知の手法により求める。例えば、画像中で検出される指標が空間中で同一平面上にない場合にはDLT(Direct Linear Transformation)法によって、同一平面上にある場合には平面ホモグラフィーによる手法によって撮影部の位置及び姿勢を求める。このような複数の点の画像座標と三次元座標の対応から撮影部の位置と姿勢を求める方法は写真測量やコンピュータビジョンの分野で広く公知であるので、その詳細な説明は省略する。なお、撮影部の位置または姿勢の取得方法はこれに限られるものではなく、例えば、磁気式、超音波式、光学式などの6自由度位置姿勢センサを撮影部に装着してその出力値を撮影部の概略位置及び姿勢として用いてもよいし、非特許文献3に開示されている3自由度姿勢センサと指標を併用する手法から撮影部の概略位置及び姿勢を求めてもよい。あるいは、その他の何れかの公知技術を用いて撮影部の概略位置及び姿勢を求めてもよい。
ステップS2040では、画像取得部1010によって取得された画像を指標の配置情報の算出に使用するか否かを判定する。図4は、ステップS2040において、指標の配置情報算出に必要な画像かどうかの判定の手順を示すフローチャートである。
ステップS3010では、取得された画像中に基準指標かあるいは基準座標系における概略の配置情報を持つ指標が検出されているかを判定する。基準指標は、画像中で検出されたサイズが既知の四角形指標などの多角形指標や、同一直線上にない相対位置関係が既知の3点以上の点指標によって定義すればよい。基準指標以外の四角形指標の概略配置情報は、指標を撮影した時点での撮影部の概略位置及び姿勢及び画像上での各頂点の位置をもとに、平面ホモグラフィーを計算することで求めることができる。また、指標が点指標である場合には、撮影した時点での撮影部の概略位置及び姿勢が既知である2枚の撮影画像からステレオ法によって指標の概略位置を求めることができる。
基準指標あるいは概略配置情報を持つ指標が画像上で検出されない場合には、ステップS3050へ判定結果を出力し、ステップS3050でその画像を使用しないと判定される。
ステップS3020では、基準指標以外の計測対象である指標が検出されているかどうかを判定する。計測対象となる指標が検出されていない場合には、ステップS3050へ判定結果を出力し、ステップS3050でその画像を使用しないと判定される。
ステップS3030では、指標管理部1030で管理されている指標情報と撮影部位置姿勢取得部1040で取得された撮影部の位置及び姿勢を入力する。ステップS3040では、指標の配置情報計測に画像を使用するかどうかを判定するための評価量を算出する。ここで、評価量の算出方法について述べる。
図5は、取得した画像を計測に使用するかどうか判定するための評価量の求め方を説明する図である。
過去に計測に使用すると判定された画像のフレーム番号を1、2、・・・、m−1、とし、取得された画像を第mフレームとして使用するかどうかの判定を行う。現在取得された画像を撮影した時点での撮影部の位置をCm=[Cmx Cmy Cmz]tとする。また、第mフレームで取得された画像中で検出された指標群の各々の配置情報から求めた基準座標系における重心位置をGm=[Gmx Gmy Gmz]tとする。第m−1フレームを撮影した時点での撮影部の位置Cm−1と第m−1フレーム中で検出された指標群の重心位置Gm−1とを結ぶベクトルを
とし、現在取得された画像を撮影した時点での撮影部の位置Cmと重心位置Gm−1とを結ぶベクトルを
とする。
求めたθABを第1の評価量とする。
求めたαを第2の評価量とする。
ステップS3050では、求めた評価量をもとに取得された画像を使用するか否かの判定を行う。
まず、第1の評価量θABが
θAB>θTAB ・・・(1−4)
であるときには、第m−1フレームと現在取得されている画像との間に十分に大きな視差があるとして、取得された画像を第mフレームとして使用すると判定する。ここでθTABは、閾値である。評価量θABが閾値θTABより大きいということは、検出した指標群を第mフレームと第m−1フレームにおいて異なる視点から撮影していることを意味する。閾値θTABは、指標の三次元空間中での分布や配置する環境に応じて任意に変更してもよい。例えば、室内における場合など、撮影可能な範囲が制限されるため場合には、θTABを小さくする。しかし、閾値θTABを小さくすると、視差が小さくなるため計測結果の精度は低下する。計測結果の精度が低下するのを防ぐには、使用する画像の枚数を増やしたり高解像度のカメラを使用したりすればよい。
式(1−4)の条件が満たされない場合には第2の評価量αをもとに判定を行う。
第2の評価量αが、
α<αT1,またはαT2<α(但し、αT1,<αT2とする) ・・・(1−5)
であるとき取得された画像を第mフレームとして使用すると判定し、そうでない場合使用しないと判定する。ここでαT1、αT2、は閾値である。第2の評価量が上記の条件を満たすということは、検出した指標群に対する撮影距離が第mフレームと第m−1フレームとで異なっていることを意味する。
ステップS3060では、ステップS3050で判定された画像を使用するか否かの判定結果を出力する。
ステップS2050では、現在取得されている画像がステップS2040で使用すると判定され、かつ指標の配置情報計測に使用すると判定された画像枚数mが、
となったときは、ステップS2060に進む。一方、ステップS2040で使用されないと判定された場合は、再びステップS2010へ戻り、新たな画像を取得する。
ステップS2060では、使用すると判定された画像の情報を用いて指標の配置情報を算出する。
以下、ステップS2040において使用すると判定された画像を用いた、指標の配置情報の算出方法について述べる。
ここで、各画像を撮影したときの撮影装置の概略位置及び姿勢、計測対象である四角形指標の概略位置及び姿勢は前述した方法によって得られているものとする。指標の配置情報は、指標の画像上での検出位置と、撮影装置の位置及び姿勢と指標の配置情報から計算される画像上での位置との間の誤差が最小になるように、撮影装置及び指標の配置情報を同時に最適化することにより求める。
指標が画像上に投影される位置をu=[ux uy]t、撮影部の位置及び姿勢を表すベクトルをs、指標の配置情報を表すベクトルをaとすると、式(1−6)のように表される。
u=F(s,a)・・・(1−6)
Fは基準座標系からカメラ座標系への変換であるビューイング変換、および透視投影変換を含む関数である。基準座標系における撮影部の位置をt=[tx ty tz]t、撮影部の姿勢をω=[ωx ωy ωz]とすると撮影部の位置及び姿勢を表すベクトルs=[ tx ty tz ωx ωy ωz]tとなる。aは指標が位置情報しか持たなければ3次元ベクトルであり、位置及び姿勢の情報を持っていれば6次元ベクトルとなる。三次元空間における姿勢は3×3回転変換行列で表されるが、回転の自由度は3しかないので3次元ベクトルωで表すことができる。
ωは3自由度の姿勢表現方法であり、姿勢を回転軸ベクトル及び回転角で表現している。回転角をraとすると、raはωによって次式のように表される。
また、回転軸ベクトルをraxis=[rx ry rz]tとすると、raxisとωの関係は次式のように表される。
ω(回転角ra、回転軸ベクトルraxis)と3×3回転変換行列Rとの関係は次式のように表される。
画像上での指標の検出座標を
とする。
とおくと、△uは、sを補正するベクトル△s、aを補正するベクトル△aを用いて、一次近似により次式のように表すことができる。
ここで
はヤコビ行列(または画像ヤコビアン)と呼ばれる。ヤコビ行列の具体的な計算方法は非特許文献4において従来例があるためここでは省略する。
式(1−11)は、ある1つの画像における1つの点(四角形指標であれば1つの頂点)に関する関係式である。計測に使用すると判定された画像がm枚あり、指標の頂点がq個あるとすると、次式が得られる。
上式を簡略化して書くと次式のようになる。
使用すると選択された画像中において検出されたすべての指標の頂点が全部でn点あるとすると次式を得ることができる。
求めるべき未知パラメータ△tは最小二乗法によって次式のように求めることができる。
なお、+は擬似逆行列を表す。式(1−15)から△tを計算することは、補正値ベクトル△tについての未知数に対して冗長な連立1次方程式を解くことに等しい。そのため、擬似逆行列を計算するのではなく、掃き出し法、あるいはガウス・ジョルダン法、あるいは共役勾配法など、その他の連立一次方程式を解くための方法を用いて解いてもよい。取得した画像が多い場合や、検出した指標が多い場合には、前処理で不完全コレスキー分解を行う前処理付き共役勾配法などで高速に計算することができる。
得られた△tを用いて
を補正する。Σ△uが予め定めた閾値より小さいかどうか、あるいは、補正値△sが予め定めた閾値より小さいかどうかといった判断基準を用いて、計算が収束しているか否かの判定を行う。収束していない場合には、補正後の状態ベクトルsを初期値として用いて繰り返し計算を行う。計算が収束したと判定されると、指標の配置情報を出力する。
以上、説明したように、本実施形態では、画像中で検出された指標の概略配置情報と、撮影画像の撮影された時点での撮影部の概略位置及び姿勢情報から計算される評価値を用いて、撮影画像を計測に使用するか否かを自動的に判定する。これにより、指標の配置情報計測を高精度に行うために必要となる。様々な方向から撮影した多数の画像を経験やノウハウを必要とせず取得することが可能となる。
(変形例1−1)
第1の実施形態では、第m−1フレームを撮影した時点での撮影部の位置Cm−1と第m−1フレーム中で検出された指標群の重心位置Gm−1とを結ぶベクトルを
とし、取得された画像を撮影した時点での撮影部の位置Cmと重心位置Gm−1とを結ぶベクトルを
として第1の評価量を求めていた。しかし、重心位置Gm−1は単純な重心ではなく指標の検出結果に応じて重み付けされた重み付き重心位置をGm−1としてもよい。
重心位置を求めているのは計測対象指標までの距離を考慮するためである。ステレオ計測などの画像を用いた計測では、計測対象までの距離と撮影位置間の距離によってその計測精度が影響を受ける。しかしながら、例えば検出された指標のうち例外的に一つの指標だけが遠くまたは近くに存在する場合には、計測対象の代表位置が例外的な指標の影響を大きくうけてしまう。従って、例外的な指標を排除または重心計算における重みを下げることにより、その影響を軽減させる。
第m−1フレームで検出した各指標の概略位置と第m−1フレームを撮影した際の撮影部の概略撮影位置との距離li(i=1,2,・・・N)を求める。ここでのNは第m−1フレームで検出した指標の総数を表す。ここで、重心計算において、例外的な指標には小さな重みを与えて求めた重み付き重心位置をGm−1とする。重みの計算方法としては、例えば、ロバスト推定手法であるM推定でよく用いられるTukey functionを用いることができる。Tukey functionでは、距離li(i=1,2,・・・N)と距離liの標準偏差に基づいて得られた閾値cを用いて重みWiは、
として求まる。
第m−1フレームで検出した各指標の位置ti(i=1,2,・・・N)とすると、重み付き重心位置をGm−1は、
として求まる。
(変形例1−2)
第1の実施形態では、指標の配置情報または撮影部の位置及び姿勢を求めたが、撮影部の内部パラメータを計測対象として算出してもよい。
未知パラメータとなる撮像部の内部パラメータは、焦点距離f、画像中心の座標(u0、v0)、u及びv方向のスケール・ファクターku、kvおよびせん断係数ksによって次式のように表される。
Aはカメラ座標系xcの点を画像座標uへ変換する行列である。
計測に使用するか否かの判定は、第1の実施形態と同様の手法で判定することができる。前述の撮影部の内部パラメータを未知パラメータとし、指標の画像座標の実測値と、パラメータの推定値から算出した指標の画像座標の理論値との誤差を最小化するようなパラメータを非線形最適化により求めることができる。このとき撮影部の概略の内部パラメータは設計パラメータなどをもとに予め設定しておく。
(変形例1−3)
本実施形態では、第1の評価量θABを第m−1フレームを撮影した時点での撮影部の位置Cm−1と第m−1フレーム中で検出された指標群の重心位置Gm−1とを結ぶベクトル
と、取得された画像を撮影した時点での撮影部の位置Cmと重心位置Gm−1とを結ぶベクトル
から求めていた。
しかし、第m−1フレームと取得された画像のみから第1の評価量を求めなくてもよい。ここで、取得された画像中で検出された指標群の重心位置Gmと取得された画像を撮影した時点での撮影部の位置Cmとを結ぶベクトルを
とする。また、取得された画像中で検出される指標の識別子と同じ識別子を持つ指標を含む画像を、第1フレームから第m−1フレームの中から抜き出す。抜き出された画像の総数をQとする。取得された画像中で検出された指標群の重心位置Gmと第qフレーム(q=1、2、・・・Q)が撮影された時点での撮影部の位置Cqを結ぶベクトルを
として第1の評価量を求める。
第1の評価量θABqがすべてのqに対して
θABq>θTAB ・・・(1−20)
である場合には取得された画像を使用すると判定し、そうでない場合使用しないと判定する。ここでθTABは、閾値である。評価量θABqが閾値θTABより大きいということは、検出した指標群に対して第mフレームと第qフレームが異なる視点から撮影していることを意味する。閾値θTABは、指標の分布や配置する環境に応じて任意に変更してもよい。
このような評価量を用いて判定することで、すでに使用すると判定されている画像の全てと異なる視点から撮影された画像を自動的に選択することができる。
(変形例1−4)
本実施形態では、すでに使用すると判定された画像のうち、同一の位置及び姿勢の撮影装置から撮影された画像を排除または更新することはしていなかった。しかし、同一の位置及び姿勢の撮影装置からのは、指標の配置情報の計測精度を向上させる情報を持たないため必要ない。そのため、同一の位置及び姿勢で撮影された画像は、排除または更新するべきである。そこでほぼ同一の位置及び姿勢からの撮影を排除または更新する処理について以下で説明する。
現在取得された画像の撮影された時点での撮影部の位置Cmと取得された画像中で検出された指標群の各々の配置情報から求めた重心位置をGmとで作るベクトルを
とする。また、過去に使用すると判定された各画像の撮影された時点での撮影部の位置C1、C2、・・・、Cm−1と重心位置をGmとで作る各ベクトルを
とする。
と各ベクトル
のなす角θCD1、θCD2、・・・、θCDm−1を次式によって求める。
また、
と各ベクトル
の比βiを次式によって求める。
まず、i=1、2、・・・m−1においてθCDiが、
θTCD<θCDi・・・(1−23)
かつ、βiが、
のとき同一視点位置からの撮影と判定し、そのフレームを第jフレーム(j=1、2、・・・J)とする。Jは、同一視点位置からの撮影と判定された画像の総数を表す。ここでθTCD、βT1L、βT2Lは閾値である。
次に同一姿勢かどうかを判定する。まず、取得された画像の撮影部の視軸ベクトルtmと同一視点位置と判定された第jフレームの視軸ベクトルtjとの角度差θmjを次式によって求める。
角度差θmj(j=1、2、・・・J)を第3の評価量とする。
次に、視軸周りの回転角度差を求める。
視軸ベクトルと直交するベクトルvmをカメラ座標系でのy軸方向のベクトルty=[0 1 0]tとおき、撮影部の概略姿勢を表す3×3回転変換行列Rmを用いて基準座標系に変換する。
vm=Rm・ty ・・・(1−26)
同様に、同一視点位置と判定された第jフレームの視軸ベクトルと直交するベクトルvjをカメラ座標系でのy軸方向のベクトルty=[0 1 0]tとおき、基準座標系に変換する。
vj=Rj・ty ・・・(1−27)
vmとvjとの角度差、つまり視軸周りの回転角度差γmjは次式によって求まる。
視軸周りの回転角度差γmj(j=1、2、・・・J)を第4の評価量とする。
前述のように求めた第3及び第4の評価量に応じて同一姿勢で撮影された画像かどうか判定し、該画像を計測に使用するか否かを判定する。
第3の評価量θmjが
θmj<θmj(j=1、2、・・・J) ・・・(1−29)
であるとき、その取得された画像は同一視点位置かつ同一姿勢から第jフレームにおいてすでに撮影されていることを意味し、その画像は使用しない。
一方、第3の評価量が式(1−29)の条件を満たさない場合、第4の評価量に応じて画像を使用するかどうかの判定を行う。
第4の評価量γmjが、
γmj>γTmj ・・・(1−30)
であるとき、その取得された画像は同一視点位置かつ同一姿勢から撮影されているが、視軸周りに回転して撮影されているため、その画像は使用すると判定する。そうでない場合は使用しないと判定する。ここでγmjは閾値である。
また、前述の方法でほぼ同視点位置及び姿勢からの撮影のため使用しないと判定した画像であっても、画像中で検出した指標の数が多い場合には、取得した画像をすでに使用すると判定された画像と置き換えることで更新する。
(変形例1−5)
非特許文献4では、指標の先験的知識を利用して、指標に拘束条件をつけて非線形最適化を行っている。本実施形態では、画像を自動で取得しているので、未知の指標に対しては幾何拘束条件をつけて算出することはできない。しかし、あらかじめ指標が平面上にあることがわかっている場合など、幾何拘束条件が予めわかっている場合には、幾何拘束条件をつけて非線形最適化を行ってもよい。
また、未知の指標であっても、一度幾何拘束条件をつけずに非線形最適化を行ったあと、オペレータがマウスやキーボードなどの入力装置を介して、幾何拘束条件をつけて再度非線形最適化を行ってもよい。
(変形例1−6)
なお、指標の配置情報計測のために画像を使用するか否かの判定は、次に示す評価量を用いて行ってもよい。すでに未知パラメータの算出に使用すると判定されている画像のフレーム番号を1、2、・・・、m−1、とし、取得された画像を第mフレームとして使用するかどうかの判定を行う。
まず、第m−1フレームと取得された画像を比較する。検出された指標のうち画像上で閾値T%以上重なりを持つ画像を第mフレームの候補画像とする。
次に、第m−1フレームを撮影した時点での撮影部の位置Cm−1と第m−1フレーム中で検出された指標群の重心位置Gm−1とを結ぶベクトルを
とし、取得された候補画像を撮影した時点での撮影部の位置Cmと重心位置Gm−1とを結ぶベクトルを
とする。さらに撮影部の位置Cm−1とCmを結ぶベクトルを
とする。次の式を満たすとき、取得された画像を計測に使用すると判定する。
ここでDTHは閾値である。ステレオ計測などの画像を用いた計測では、計測対象までの距離と撮影位置間の距離によってその計測精度が影響を受ける。式(1−31)は、第m−1フレームと取得した画像の撮影された時点での撮影部の位置と指標の代表位置である重心位置までのそれぞれの距離
と
、撮影位置間の距離
を考慮している。つまり、指標の代表値までの距離が近ければ
は小さくなり、基線長が長ければ
が大きくなる。従って、式(1−31)を満たすとき、指標の配置情報計測のために必要な画像を判定することができる。
(変形例1−7)
第1の実施形態では、計測対象指標までの距離を考慮するために、各指標の3次元空間中における重心位置に基づいて評価量を求め、指標の配置情報計測に画像を使用するか否かの判定を行っていた。第m−1フレームを撮影した時点での撮影部の位置Cm−1と第m−1フレーム中で検出された指標群の重心位置Gm−1とを結ぶベクトルと、取得された画像を撮影した時点での撮影部の位置Cmと重心位置Gm−1とを結ぶベクトルに基づいて評価量を求めていた。しかし、指標の代表位置は各指標位置の重心位置によって求めるのではなく、撮影部が撮影する範囲の中心方向を表す視軸上で代表位置を求めてもよい。検出した各指標の3次元空間中における概略位置よりカメラ座標系における奥行きを求め、各指標の奥行きの平均値をzmeanとする。カメラ座標系における指標の代表位置をtam=(0,0,zmean)とする。撮影部のおおよその位置及び姿勢は撮影部位置姿勢情報取得部1040より得ることができるので、カメラ座標系における指標の代表位置tamを基準座標系の位置に座標変換する。そして座標変換後の代表位置をt’amとする。本実施形態で用いた代表位置である重心位置の変わりにt’amを用いてもよい。
(第2の実施形態)
第1の実施形態では、環境または物体に配置された指標の配置情報の計測のための画像利用判定を行い、該計測を行った。第2の実施形態では、姿勢センサのカメラ座標系における姿勢を算出するために使用する画像を自動で判定し、撮影部に装着した姿勢センサのカメラ座標系における姿勢を算出する。
本実施形態で用いられる姿勢センサは、3軸方向の角速度を検出するジャイロセンサと、3軸方向の加速度を検出する加速度センサによって主に構成されており、それらの計測値の組み合わせによって3自由度の姿勢を計測する。一般に、ジャイロセンサを用いた姿勢センサは、ジャイロセンサが出力する角速度の情報を積分することにより姿勢を得るため、ドリフト誤差が存在する。しかし、加速度センサを併用することにより、地球の重力方向を計測することができるため、傾斜角については高精度な計測値を得ることができる。一方、重力軸回りの回転である方位角に関しては、絶対的なリファレンスを得ることが出来ず、ドリフト誤差を補正することができないため、傾斜角に比べて精度が低い。
図7は、本実施形態に係る情報処理装置7000の概略構成を示している。情報処理装置7000には撮影部700が接続されており、指標が配置された空間の画像を情報処理装置7000に入力する。また、撮影部700には姿勢センサ705が装着されており、撮影部700が画像を撮影するのと同時刻での姿勢センサの計測値が情報処理装置7000に送られる。
画像取得部7010は、撮影部700から画像を取得する。
指標抽出部7020は、取得された画像中から指標を抽出する。指標管理部7030は、抽出された指標の、各々の正方形形状指標Pknの識別子knと各頂点pkniの画像座標uPkni、各指標の配置情報を指標情報として管理する。
撮影部位置姿勢情報取得部7040は、画像を撮影した時点の撮影部の概略位置及び姿勢を取得する。
画像使用判定部7050は、画像取得部7010を介して入力された画像を撮影部に装着した姿勢センサのカメラ座標系における姿勢の算出に画像を使用するかどうかの判定を行う。
センサ出力取得部7060は、画像を撮影するのと同時刻での姿勢センサの出力を取得する。
姿勢センサの位置姿勢算出部7070は、画像使用判定部7050において使用すると判定された画像を用いて撮影部に装着した姿勢センサのカメラ座標系における姿勢を算出する。
画像取得部7010、指標抽出部7020、指標管理部7030、撮影画像の位置姿勢情報取得部7040は第1の実施形態で述べた画像取得部1010、指標抽出部1020、指標管理部1030、撮影部の位置姿勢情報取得部1040、と同様であるのでここでは詳細な説明を省略する。
図8は第2の実施形態における姿勢センサの配置情報を算出する手順を示すフローチャートである。
ステップS8010からステップS8030までは、第1の実施形態におけるステップS2010からステップS2030までと同様であるため説明を省略する。
ステップS8040では、姿勢センサのカメラ座標系における姿勢の算出に、取得された画像を使用するかどうかの判定を行う。第1の実施形態と同様の判定処理によって、取得された画像を使用するかどうかの判定を行うことも可能であるが、ここでは、撮影部の姿勢をもとに判定する。以下、使用画像の判定方法の詳細を述べる。
図9は、ステップS8040において、姿勢センサのカメラ座標系における姿勢の算出に、取得された画像を使用するかどうかの判定の手順を示すフローチャートである。
ステップS9010は、第1の実施形態におけるステップS3010と同様なので説明を省略する。
ステップS9020は、指標管理部7030で管理されている指標情報と撮影部位置姿勢取得部7040で取得された撮影部の位置及び姿勢を入力する。
ステップS9030では、取得された画像を撮影部に装着した姿勢センサのカメラ座標系における姿勢の算出に画像を使用するかどうかを判定するための評価量を算出する。ここで、評価量の算出方法について述べる。
すでに使用すると判定された画像のフレーム番号を1、2、・・・、m−1、とし、取得された画像を第mフレームとして使用するかどうかの判定を行う。
まず、取得された画像を撮影した時点での撮影部の視軸ベクトルtmと、すでに使用すると判定された第jフレーム(j=1、2、・・・、m−1)を撮影した時点での視軸ベクトルtjとの角度差θmjを次式によって求める。
角度差θmj(j=1、2、・・・J)を第1の評価量とする。
次に、視軸周りの回転角度差を求める。まず、基準座標系における取得された画像を撮影した撮影部の視軸ベクトルtmを求める。カメラ座標系でのz軸にマイナス方向のベクトルtz=[0 0 −1]tとおき、撮影部の概略姿勢Rmから視軸ベクトルtmを次式のように求める。
tm=Rm・tz・・・ (2−2)
取得された画像を撮影した撮影部の視軸ベクトルtmと直交するベクトルvmをカメラ座標系でのy軸方向のベクトルty=[0 1 0]tとおき、撮影部の概略姿勢Rmから基準座標系におけるvmを求める。
vm=Rm・ty・・・ (2−3)
同様に、第jフレームの視軸ベクトルと直交するベクトルvjをカメラ座標系でのy軸方向のベクトルty=[0 1 0]tとおき、第jフレームを撮影した時点での撮影部の姿勢Rjをかけて次式のように求める。
vj=Rj・ty・・・ (2−4)
vmとvjとの角度差、つまり視軸周りの回転角度差γmjは次式によって求まる。
視軸周りの回転角度差γmj(j=1、2、・・・J)を第2の評価量とする。
ステップS9040では、求めた評価量をもとに取得された画像を使用するかどうかの判定を行う。第1の評価量θmjがすでに使用すると判定された画像(j=1、2、・・・J)すべてに対して、
θmj>θTmj(j=1、2、・・・J) ・・・(2−6)
であるとき、その取得された画像はまだ撮影されていない視点方向から撮影された画像であるとして、その画像を使用すると判定する。ここでθTmjは閾値である。式(2−6)が満たされない場合、取得された画像は同一姿勢で撮影されている可能性を表し、第2の評価量をもとに取得された画像を使用するかどうかの判定を行う。
第2の評価量γmJが、
γmj>γTmj ・・・(2−7)
であるとき、取得された画像は同一視点方向から撮影されているが、視軸周りに回転して撮影されていることを意味し、その画像を使用すると判定する。ここでγTmJは閾値である。式(2−7)が満たされない場合、取得された画像を姿勢センサの姿勢算出に使用しないと判定する。
ステップS9050では、ステップS9040で判定された、画像を使用するかどうかの判定結果を出力する。
ステップS8050は、ステップS8040で姿勢センサの姿勢算出に使用すると判定され、かつすでに使用すると判定された画像枚数mが、
のときは、ステップS8060へ進む。一方、ステップS8040で使用されないと判定された場合は、再びステップS8010へ戻る。
次に姿勢センサの姿勢算出を行うステップS8060の詳細について説明する。
ステップS8060では、画像使用判定部7050で使用すると判定された複数の視点位置で撮影した画像を用いて撮影部に装着した姿勢センサのカメラ座標系における姿勢ωCSを算出する。センサ出力値取得部7060でセンサ出力値を取得する。基準座標系上の指標の画像上での検出位置と、撮影部の位置、センサ計測値、方位方向のドリフト補正値、ωCSから計算される指標の画像上での計算位置との誤差が最小になるような、撮影部の位置、方位方向のドリフト補正値φτ、ωCSを非線形最適化により求める。
世界座標系におけるセンサの姿勢をセンサ出力値をRwsτ、方位方向(重力軸まわり)にφτ回転させる回転行列を△R(φτ)(方位ドリフト誤差補正値)、ωCSによって定まる3×3の回転行列R(ωSC)とすると、基準座標系をカメラ座標系に変換する式は、
となる。
姿勢センサのカメラ座標系における姿勢ωCSは3値ベクトルωCS=[ξ ψ ζ]Tとして扱う。姿勢センサのカメラ座標系における姿勢ωCSと、ある視点位置(これを識別子τで表す)での撮影部の位置tWCτ=[xtτ ytτ ztτ]Tと,その画像を撮影した際のセンサ計測値の「方位ドリフト誤差の補正値」φτが未知となる。以下では、これらの未知パラメータを3+4L次元の状態ベクトル
で記述する。ここでLは、異なる視点から撮影された画像の総数を表している。
状態ベクトルsに適当な初期値を与える。撮影部の位置tWCτの初期値に関しては、撮影部位置姿勢取得部7040より取得することができる。ωCSの初期値に関しては、公知の方法としてωCSを表すパラメータの値を対話的に増減し、各値の調整を試行錯誤的に行うという方法がある。具体的には、撮影部の位置の初期値と、ωCSと、センサ出力値より仮想物体を画像上に投影することができるので、仮想物体の投影座標と現実物体を正確に位置合わせするようにオペレータが何らかの入力手段を介して調整する。また、地磁気センサで大まかな方位を求めてもよい。また、ωCSの初期値を求める別の方法が特許文献2に開示されている。まず予め定めた姿勢に基づいた仮想物体を画像表示装置に表示する。次に表示された仮想物体と現実空間とが正しい位置関係になるように、オペレータが目視で確認しながら撮像装置の姿勢を調節する。最後に、その時点における姿勢センサの出力に従って基準座標系におけるセンサ座標系の姿勢とカメラ座標系における姿勢センサの姿勢を算出する。
また、φτiの初期値に関しては、ωCSの初期値を用いて、特許文献3に示された方法によって、求めた値を利用する。
第1の実施形態で示した指標管理部1030と同様の指標情報が指標管理部7030で管理されている。四角形指標Pkの各頂点pkiの画像座標と配置情報と識別子、及び状態ベクトルsから全ての指標の頂点に対して画像座標の理論値u=[ux,uy]Tを算出する。ここで、画像座標の理論値とは、基準座標系における撮影部の位置および姿勢と、基準座標系における指標の配置情報を基にして計算される指標の撮影画像中に見えるべき座標を指す。
基準座標系における撮影部の姿勢は、センサ座標系における姿勢を基準座標系における姿勢に変換する座標変換、センサ座標系におけるセンサ自身の姿勢(センサの姿勢計測値)、方位ドリフト誤差の補正値、センサの姿勢を撮影部の姿勢に変換する座標変換(ωSC)から式(2−8)のように算出できる。ある指標に対する理論値u=[ux,uy]Tの算出は、状態ベクトルsを用いて、次式のように表される。
u=F(s) ・・・(2−9)
Fは基準座標系からカメラ座標系への変換であるビューイング変換、および透視投影変換を含む関数である。
全ての指標の頂点に対して、指標の実際の画像座標v=[vx,vy]Tと、それに対応する画像座標の理論値u=[ux,uy]Tとの誤差△uを次式によって算出する。
△u=v−u ・・・(2−10)
△uを最小化するようにsを最適化する。△uは、sを補正するベクトル△sを用いて、テーラー展開によって一次近似を行うと次式のように表すことができる。
ここで、
とし、Jusは、式(2−10)のuを状態ベクトルsで変微分した偏微分係数を各要素に持つ2×(3+4L)のヤコビ行列である。
式(2−11)は、姿勢センサの姿勢算出に使用すると判定されたL枚の画像における1つの頂点に関する関係式である。
使用すると判定された画像中において検出されたすべての指標が全部でn点あるとすると次式を得ることができる。
求めるべき未知パラメータ△sを最小二乗法によって求めることができる。解き方については、第1の実施形態と同様であるので省略する。
ここで、△sは(3+4L)次元ベクトルであるので、1個以上の正方形指標を2枚の撮影画像上で検出すれば、△sを求めることができる。
算出した補正値△sを用いて、次式に従って状態ベクトルsを補正し、得られた値を新たなsとする。
s+△s→s ・・・(2−13)
Σ△uが予め定めた閾値より小さいかどうか、あるいは、補正値△sが予め定めた閾値より小さいかどうかといった判断基準を用いて、計算が収束しているか否かの判定を行う。収束していない場合には、補正後の状態ベクトルsを初期値として用いて繰り返し計算を行う。
計算が収束したと判定されると、得られた状態ベクトルsに含まれるωSCを出力する。また、最新の方位ドリフト誤差補正値を示すパラメータとして、φτを一緒に出力してもよい。
最後にステップS8070において校正処理を終了するか否かの判定が行われる。オペレータが、校正処理の終了を指示した場合には、処理を終了させ、校正処理の継続(再校正)を指示した場合には、再び画像を取得する。オペレータは、得られたωSCやφτを用いて画像上に描画した仮想物体と現実物体の位置合わせ結果が正しければ、校正処理を終了し、正しくなければ継続するように判定する。
以上の方法によって、撮影部に装着した姿勢センサの撮影部に対する姿勢を算出するのに適した画像を自動で取得し、利用者の知識やノウハウに依存することなく高精度に姿勢センサの配置情報の計測を行うことができる。
(第3の実施形態)
第1の実施形態では、計測対象として指標の配置情報または撮影部の位置及び姿勢を求めた。さらに第2の実施形態では、計測対象として3自由度姿勢センサのカメラ座標系における姿勢を求めた。本実施形態では、6自由度位置姿勢センサが規定するセンサ座標系の基準座標系に対する位置及び姿勢及び撮影部に装着した6自由度位置姿勢センサの撮影部に対する位置及び姿勢を未知パラメータとして求める。本実施形態では、第1及び第2の実施形態で述べた指標と同じ指標を用いる。
図10は、第3の実施形態における6自由度位置姿勢センサの配置情報を計測する方法を説明するフローチャートである。
ステップS210からステップS230までは、第1の実施形態におけるステップS2010からステップS2030までと同様であるため説明を省略する。
ステップS240では、未知パラメータの算出に取得された画像を使用するかどうかの判定を行う。判定方法は、第2の実施形態と同様の判定方法であるのでここでは説明を省略する。一方、第1の実施形態と同様の方法で未知パラメータの算出に画像を使用するか否かの判定をすることもできる。
ステップS260では、未知パラメータの算出を行う。
本実施形態では、基準座標系に対するセンサ座標系の位置及び姿勢を表すパラメータsWTと、カメラ座標系に対する6自由度センサのレシーバ座標系の位置及び姿勢を表すパラメータsLTが未知パラメータとなる。基準座標系におけるセンサ座標系の位置をtWT=[txWT tyWT tzWT]T、基準座標系に対するセンサ座標系の姿勢をωWT=[ωxWT ωyWT ωzWT]TとするとsWT=[txWT tyWT tzWT ωxWT ωyWT ωzWT]Tとなる。また、カメラ座標系における6自由度センサのレシーバ座標系の位置をtLT=[txLT tyLT tzLT]T、カメラ座標系に対する6自由度センサのレシーバ座標系の姿勢をωLT=[ωzLT ωyLT ωzLT]TとするとsLT=[txLT tyLT tzLT ωzLT ωyLT ωzLT]Tとなる。よって12個の未知パラメータを状態ベクトルsとして表すと、
となる。状態ベクトルsに適当な初期値を与える。例えば、ユーザが手動で計測したおおよその値を予め入力する。
第1の実施形態で示した指標と同様の四角形指標Pkの各頂点pkiの画像座標と配置情報と識別子、及び状態ベクトルsから全ての指標の頂点に対して画像座標の理論値u=[ux,uy]Tを算出する。ここで、ある三次元座標系Bに対する三次元の座標系Aの原点位置を表す三次元ベクトルをt、姿勢を表す3×3回転行列をRとすると、A上での位置がxA(三次元ベクトル)で表される点のB上での座標xB(三次元ベクトル)は、次式のように表される。
RとtをまとめてMと表すと、
となる。
図11は、基準座標系に配置された指標のカメラ座標系への変換を表す。基準座標系における6自由度位置姿勢センサのセンサ座標系の位置及び姿勢sWTをMWT、6自由度位置姿勢センサの出力値MTS、撮影部に装着したカメラ座標系における6自由度位置姿勢センサの位置及び姿勢sLTをMCS、基準座標系における指標の配置情報MWMとする。
基準座標系に配置された指標をカメラ座標系に変換する行列MCMは、
MCM=MCS・(MTS)−1・(MwT)−1・MwM ・・・(3−3)
と表される。
ある指標に対する理論値u=[ux,uy]Tの算出は、状態ベクトルsを用いて、次式のように表される。
u=F(s)・・・ (3−1)
Fは基準座標系からカメラ座標系への変換であるビューイング変換、および透視投影変換を含む関数である。
指標の実際の画像座標v=[vx,vy]Tと、それに対応する画像座標の理論値u=[ux,uy]Tとの誤差△uを最小化するパラメータを求めればよい。
△uは、sを補正するベクトル△sを用いて、テーラー展開によって一次近似を行うと次式のように表すことができる。
ここで、
は、ヤコビ行列である。具体的なヤコビ行列の計算方法は省略する。
ある1つの画像における1つの点に関するヤコビ行列をJus1とする。さらに、式(3−2)を未知パラメータ算出に使用すると判定された画像中で検出されたすべての指標の点が全部でn点あるとすると、
求めるべき未知パラメータ△sを最小二乗法によって求めることができる。解き方については、第1及び第2の実施形態と同様であるので省略する。
算出した補正値△sを用いて、次式に従って状態ベクトルsを補正し、得られた値を新たなsとする。
s+△s→s ・・・(2−14)
誤差ベクトル△uが予め定めた閾値より小さいかどうか、あるいは、補正値△sが予め定めた閾値より小さいかどうかといった判断基準を用いて、計算が収束しているか否かの判定を行う。収束していない場合には、補正後の状態ベクトルsを初期値として用いて繰り返し計算を行う。計算が収束したと判定されると、撮影部に装着した6自由度センサの基準座標系におけるセンサ座標系の座標変換(位置及び姿勢)及びカメラ座標系における6自由度センサのレシーバ座標系の座標変換(位置及び姿勢)を出力する。
ステップS270では、校正処理を終了するか否かの判定が行われる。オペレータが、校正処理の終了を指示した場合には、処理を終了させ、校正処理の継続(再校正)を指示した場合には、再び画像を取得する。オペレータは、得られた状態ベクトルsを用いて画像上に描画した仮想物体と現実物体の位置合わせ結果が正しければ、校正処理を終了し、正しくなければ継続するように判定する。
以上の処理によって、6自由度センサの基準座標系に対する6自由度位置姿勢センサが規定するセンサ座標系の位置及び姿勢及びカメラ座標系における6自由度センサのレシーバ座標系の位置及び姿勢を算出するために必要な画像を自動判定して算出することで、利用者の知識やノウハウに依存しない高精度な計測を行うことが可能である。
(変形例3−1)
なお、第1至乃第3の実施形態においては、最適化演算において非線形関数をテーラー展開し、1次近似で線形化してから補正値を求めることを、繰り返し補正することで最適解を求めるNewton−Raphson法を用いている。しかし、補正値の算出は必ずしもNewton−Raphson法によって行わなくてもよい。例えば公知の非線形方程式の反復解法であるLevenberg−Marquardt法を用いて求めてもよいし、最急降下法を用いても求めてもよい。他の何れの非線形最適化手法を適用しても本発明の本質が損なわれないことは言うまでもない。
また、統計的に外れ値の影響を軽減させつつ解を求めることで計算を安定化することができるM推定などのロバスト推定手法を用いてもよい。
(第4の実施形態)
第1至乃第3の実施形態では、指標を撮影した画像を用いて未知パラメータを算出するのに必要となる画像を自動で判定するための方法を述べた。
本実施形態では、撮影部を移動させる領域や経路をディスプレイを通してユーザに提示することで、より簡便に計測を行えるようにする。第1の実施形態では、指標の配置情報算出に入力画像を使用するか否かの判定を行った。それに対して、本実施形態では、指標の配置情報算出に使用可能と判定される撮影エリアまたは撮影位置及び姿勢を前もって計算し、ユーザに提示することで入力画像そのものをよりよいものにする。
図12は、本実施形態に係る情報処理装置300の概略構成を示している。
画像取得部310は、撮影部305から画像を取得する。
指標抽出部320は、取得された画像中から指標を抽出する。
指標管理部330は、抽出された指標の、各々の四角形指標Pknの識別子knと各頂点pkniの画像座標uPkni、各指標の配置情報を指標情報として管理する。
撮影部の位置姿勢情報取得部340は、画像を撮影した時点の撮影部の概略位置及び姿勢を取得する。
画像撮影領域算出部350は、良好な計測を行うために必要となる画像を撮影可能な領域を算出する。
画像撮影領域提示部360は、画像撮影領域算出部350で算出した領域を表示ディスプレイ365に提示する。
画像使用判定部370は、指標の配置情報算出に取得された画像を使用するか否かの判定を行う。
未知パラメータ算出部380は、指標の配置情報を未知パラメータとして算出する。
情報処理装置300には、撮影部305とディスプレイ365が接続されている。
画像取得部310、指標抽出部320、指標管理部330、撮影画像の位置姿勢情報取得部340、は第1の実施形態で述べた画像取得部1010、指標抽出部1020、指標管理部1030、撮影部の位置姿勢情報取得部1040、と同様であるのでここでは説明を省略する。
図13は第4の実施形態における処理の手順を示すフローチャートである。
ステップS410からステップS430までは、第1の実施形態におけるステップS2010からステップS2030までと同様であるため説明を省略する。
ステップS440では、画像撮影領域を算出する。画像撮影領域の算出方法について述べる。
図14は、画像撮影領域算出方法を説明する図である。すでに使用すると判定された画像のフレーム番号を1、2、・・・、m−1、とする。また、第m−1フレームを撮影した時点での撮影部の位置Cm−1と第m−1フレーム中で検出された指標群の重心位置Gm−1とを結ぶベクトルを
とする。重心位置Gm−1は計測対象指標の代表位置を表している仮定する。
次に
と閾値θTABだけ角をなし、重心位置Gm−1と結んでできるベクトルを
とし、
を回転軸として
を回転させてつくる無限遠に広がる領域Vを考える。領域Vの以外の領域を
で表す。撮影位置が領域
であれば、第m−1フレームと異なる視点から撮影していることを意味し、未知パラメータ算出に十分な視差を持つ画像を撮影できる領域であることを意味する。よって領域
における撮影を次に撮影すべき画像撮影領域とする。
次に、
と大きさの比α1とα2を持つベクトルをそれぞれ
として次式によって求める。
ここでα1<α2とする。
領域Vは無限遠に広がる領域であったが、領域を限定することも意味を持つ。なぜなら第m−1フレームで撮影した視点位置から計測対象の代表位置に近づいて撮影すれば、画像上で検出される指標の検出精度が向上するため、未知パラメータの計測精度も向上するからである。一方、第m−1フレームで撮影した視点位置から計測対象の代表位置に対して遠ざかれば、画像上における指標の検出精度は低下するが、撮影される領域が広がるため新たに指標を検出する可能性を持つ。そこで領域Vを次に示すように更新する。まず、
を回転軸として
を回転させてつくる領域をV1とし、
を回転軸として
を回転させてつくる領域をV2とする。V2‐V1を領域Vとして更新する。領域V以外の領域を
とし、領域
であれば次に撮影すべき画像撮影領域とする。以降、
を画像撮影領域とする。
ステップS450では、ステップS440にて算出した画像撮影領域をもとに画像撮影領域をユーザに提示する。
画像撮影領域をユーザに提示する提示方法について説明する。図15(A)は、画像撮影領域をユーザに提示する一例を説明する図である。
取得された画像を撮影した時点での撮影部の位置及び姿勢は、すでに撮影部位置姿勢取得部340で取得されているので、図15(A)のように撮影部を最も近い画像撮影領域
へ移動するように文字や矢印で提示する。
ユーザは、この仮想撮影可能エリアまたは仮想撮影部の撮影位置及び姿勢の提示を視覚的に認識することにより、現実空間のどこから撮影すべきかを確認する。
このように提示することで未知パラメータを算出するために十分な画像を取得できれば、第1の実施形態に示す方法で、未知パラメータを算出することができる。
(変形例4−1)
本実施形態では、良好な計測を行うために、次に撮影すべき画像撮影領域を算出し、移動を促す文字や矢印により、ディスプレイを通してユーザに提示した。しかし、提示するのは、移動を促す文字や矢印ではなくてもよい。図14に示すような画像撮影領域自身や、図15の(B)に示すような次に撮影すべき撮影部の位置及び姿勢や向きを、仮想的なCG(コンピュータグラフィック画像)を重畳描画して提示してもよい。提示方法は、次に撮影すべき位置や方向、またはまだ撮影可能なエリアを提示できれば、パターン画像であってもよいし、線分で表示した3次元CG画像でもよいし、文字でもよい。
本実施形態では、最も近い画像撮影領域
へ移動するように提示したが、第m−2フレームから第m−1フレームへの動きベクトルを計算し、動きベクトルの指す方向に近い画像撮影領域
へ移動するように提示してもよい。
(第5の実施形態)
第2の実施形態では、指標を撮影した画像を用いて未知パラメータを算出するのに必要となる画像を自動で判定するための方法を述べた。
本実施形態では、撮影部を移動させる領域や経路をディスプレイを通してユーザに提示することで、より簡便に計測を行えるようにする。第2の実施形態では、撮影部に装着した姿勢センサのカメラ座標系における姿勢の算出に画像を使用するかどうかの判定を行った。それに対して、本実施形態では、未知パラメータである撮影部に装着した姿勢センサのカメラ座標系における姿勢の算出に使用可能と判定される撮影エリアまたは撮影位置及び姿勢を前もって計算し、ユーザに提示することで入力画像そのものをよりよいものにする。
図16は、本実施形態に係る情報処理装置500の概略構成を示している。
画像取得部510は、撮影部505から画像を取得する。
指標抽出部520は、取得された画像中から指標を抽出する。
指標管理部530は、抽出された指標の、各々の四角形指標Pknの識別子knと各頂点pkniの画像座標uPkni、各指標の配置情報を指標情報として管理する。
撮影部の位置姿勢情報取得部540は、画像を撮影した時点の撮影部の概略位置及び姿勢を取得する。
画像撮影領域算出部550は、良好な計測を行うために必要となる画像を撮影可能な領域を算出する。
画像撮影領域提示部560は、画像撮影領域算出部550で算出した領域を表示ディスプレイ565に提示する。
画像使用判定部570は、未知パラメータ算出に取得された画像を使用するか否かの判定を行う。
未知パラメータ算出部580は、撮影部に装着した姿勢センサのカメラ座標系における姿勢を未知パラメータとして算出する。
情報処理装置500には、撮影部505とディスプレイ565が接続されている。
画像取得部510、指標抽出部520、指標管理部530、撮影画像の位置姿勢情報取得部540、は第2の実施形態で述べた画像取得部7010、指標抽出部7020、指標管理部7030、撮影部の位置姿勢情報取得部7040、と同様であるのでここでは説明を省略する。
図17は第4の実施形態における処理の手順を示すフローチャートである。
ステップS610からステップS630までは、第2の実施形態におけるステップS8010からステップS8030までと同様であるため説明を省略する。
ステップS640では、画像撮影領域を算出する。画像撮影領域の算出方法について述べる。
すでに使用すると判定された画像のフレーム番号を1、2、・・・、m−1、とする。まず、すでに使用すると判定された第jフレーム(j=1、2、・・・、m−1)を撮影した時点での視軸ベクトルをtjとする。次にtjの視点位置がある任意の座標系A’の原点A0を通るように並行移動したベクトルを
とする。次にある座標系A’の原点A0に関して
と角度差θTmjだけ角をなすベクトルを
とする。ここで角度差θTmjは閾値である。
を回転軸として
を回転させて領域Vjをつくり、領域Vj以外の領域を
で表す。座標系A’に撮影部の視軸ベクトルを並行移動した際に、領域
内であれば、第jフレームと異なる姿勢の視点から撮影していることを意味する。よって視軸ベクトルがj=1、2、・・・、m−1においてすべて領域
内に含まれる撮影領域を次に撮影すべき画像撮影領域とする。
しかし、視軸ベクトルが領域Vj内にあっても、視軸回りで回転すれば異なる姿勢からの撮影となるため画像撮影領域とすることができる。まずj=1、2、・・・、m−1の中で視軸ベクトルが領域Vj内にある画像をすべて選択する。選択された画像K枚の中で、第kフレーム(k=1、2、・・・K)の視軸ベクトルと直交するベクトルvkを、カメラ座標系でのy軸方向のベクトルty=[0 1 0]tとおき、第kフレームを撮影した時点での撮影部の姿勢Rkから次式のように求める。
VK=Rj・Ty ・・・(5−1)
次にvkと視軸ベクトル回りの角度差の閾値γTmk以上の視軸直交ベクトルvmを持つ姿勢であれば、視軸回りで回転しているので異なる姿勢からの撮影となり、次に撮影すべき画像撮影領域とすることができる。したがって、視軸ベクトルと直交するベクトルvkとの視軸ベクトル回りの角度差がγTmk以内の視軸ベクトルと直交するベクトルを持つ領域をWkとし、領域Wk以外の領域を
とする。視軸ベクトルが領域Vj内にあって、かつ視軸ベクトルに直交するベクトルvmが、領域
にあるときの撮影位置姿勢を次に撮影すべき画像撮影領域とする。
ステップS650では、ステップS640にて算出した画像撮影領域をもとに画像撮影領域をユーザに提示する。
画像撮影領域をユーザに提示する提示方法については、第4の実施形態と同様であるので説明は省略する。
ユーザは、この仮想撮影可能エリアまたは仮想撮影部の撮影位置及び姿勢の提示を視覚的に認識することにより、現実空間のどこから撮影すべきかを確認する。
このように提示することで未知パラメータを算出するために十分な画像を取得できれば、第2の実施形態に示す方法で、未知パラメータを算出することができる。
(変形例5−1)
本実施形態では、未知パラメータは撮影部に装着した姿勢センサの姿勢として、未知パラメータ算出のために必要となる画像の撮影領域の提示をおこなった。しかし、計測対象を6自由度センサとした場合にも同様の画像撮影領域の算出方法が利用でき、ユーザに画像撮影領域を提示することができる。そして第3の実施形態で示したように、撮影部に装着した6自由度センサのレシーバの位置姿勢、及び6自由度センサの基準座標系における位置及び姿勢を未知パラメータとして算出することができる。
(変形例5−2)
第1至乃第4の実施形態において、未知パラメータを算出するために必要な画像を自動で取得していた。しかし、オペレータが必要であると判断した場合には、例えばキーボードを押すなど何らかの入力装置を介して、手動により画像を取得してもよい。
(第6の実施形態)
本実施形態に係る情報処理装置は、ユーザが複合現実感を体験しつつ、第1至乃第5の実施形態に記載の未知パラメータを算出するために必要な画像をオンラインで取得し、得られた算出結果を反映するものである。また、本実施形態に係る情報処理装置は、ビデオシースルー(Video See−Through)型のヘッドマウントディスプレイ(HMD)を用いて、未知パラメータを算出するために必要となる画像の撮影領域をユーザへと提示する。
撮影部で取得した画像を撮影した時点での撮影部の概略位置及び姿勢が、第1至乃第5の実施形態に記載の撮影部位置姿勢取得部で取得される。得られた撮影部の概略位置及び姿勢と、撮影部の既知の内部パラメータにより、取得した画像に仮想物体を重畳描画することができる。
未知パラメータに撮影部の内部パラメータが含まれる場合には、撮影部の内部パラメータの概略値と、得られた撮影部の概略位置及び姿勢とを用いて仮想物体を重畳描画する。そして、未知パラメータ算出に使用すると判定された複数の画像を用いて、第1至乃第4の実施形態におけるその他の未知パラメータが算出されると、概略値であった未知パラメータが正しく求まるので、現実世界と仮想物体が正しく重畳される。
(変形例6−1)
本実施形態では、ビデオシースルー(Video See−Through)型のヘッドマウントディスプレイ(HMD)に未知パラメータを算出するために必要となる画像の撮影領域を提示した。しかし、ユーザに情報を提示するディスプレイはこれに限らない。例えば、CRTや液晶ディスプレイであってもよいし、光学シースルー(Optical See−Through)型のヘッドマウントディスプレイであってもよい。公知のいずれのディスプレイを用いても本発明の本質が損なわれないことはいうまでもない。
(変形例6−2)
なお、第1至乃第5における未知パラメータを算出するための計算と、一般的な複合現実感を体験する際の計算を分けて計算してもよい。前者は、第1至乃第5における未知パラメータを算出するために必要な画像をオンラインで判定し、未知パラメータを算出する計算である。後者は、ユーザが複合現実感を体験時にする際に一般的に計算される撮影部の位置及び姿勢の算出やCG(Computer Graphics)の描画などの計算である。
上記の計算を複数スレッドに分け、マルチコアと呼ばれる複数個のCPUコアをもつコンピュータを用いて計算することで、計算コストの比較的高い未知パラメータの算出を行いつつ、ユーザはリアルタイムで複合現実感を体験することができる。
(第7の実施形態)
第2の実施形態では、撮影部に装着した姿勢センサのカメラ座標系における姿勢を算出する目的において、指標の観測によって求めた撮影部の位置姿勢に基づいて姿勢の算出に使用する画像を自動で判定した。本実施形態では、姿勢センサのカメラ座標系における姿勢を算出するために使用する画像を、姿勢センサの出力値に基づいて自動で判定する。
図18は、本実施形態に係る情報処理装置10000の概略構成を示している。情報処理装置10000には撮影部11000が接続されており、指標が配置された空間の画像を情報処置装置10000に入力する。また、撮影部11000には姿勢センサ12000が装着されており、撮影部11000が画像を撮影するのと同時刻での姿勢センサの計測値が情報処理装置10000に送られる。
画像取得部10010は、撮影部11000から画像を取得する。
指標抽出部10020は、取得された画像中から指標を抽出する。指標管理部10030は、抽出された指標の、各々正方形状指標Pknの識別子knと各頂点pkniの画像座標uPkni、各指標の配置情報を指標情報として管理する。
センサ出力値取得部10040では、画像が撮影するのと同時刻でのセンサ出力値を取得する。
画像使用判定部10050は、画像取得部10010を介して入力された画像を、姿勢センサ12000のカメラ座標系における姿勢の算出に使用するかどうかの判定を行う。
姿勢センサの位置姿勢算出部10060は、画像使用判定部10050において使用すると判定された画像を用いて、姿勢センサ12000のカメラ座標系における姿勢を算出する。
画像取得部10010、指標抽出部10020、指標管理部10030、センサ出力取得部10040は、第2の実施形態で述べた画像取得部7010、指標抽出部7020、指標管理部7030、センサ出力値取得部7060、と同様であるのでここでは詳細な説明を省略する。
図19は本実施形態における姿勢センサ12000のカメラ座標系に対する配置情報を算出する手順を示すフローチャートである。
ステップS10110とステップS10120は、第2の実施形態におけるステップS8010とステップS8020と同様であるため説明を省略する。
ステップS10130では、センサ出力値取得部10040が、姿勢センサ12000からセンサ出力値を取得する。
ステップS10140では、画像使用判定部10050が、ステップS10130で入力したセンサ出力値をもとに、姿勢センサ12000のカメラ座標系における姿勢の算出に、取得された画像を使用するかどうかの判定を行う。以下、ステップS10140の処理の詳細を述べる。
図20は、ステップS10140において、姿勢センサ12000のカメラ座標系における姿勢の算出に、取得された画像を使用するかどうかの判定の手順を示すフローチャートである。
ステップS10210は、入力画像中で指標が検出されているかどうかを判定し、検出されていればS10220へ進み、検出されていなければS10240へ進む。
ステップS10220は、センサ出力値取得部10040で取得されたセンサ出力値を入力する。
ステップS10230では、姿勢センサ12000のカメラ座標系における姿勢の算出に、当該入力画像を使用するかどうかを判定するための評価量を算出する。
一般に、ジャイロセンサのみによって得られる角度情報は、ある時刻の姿勢に対する姿勢の相対的な変化である。ジャイロセンサによって構成される姿勢センサは、加速度センサによって地球の重力方向を計測することで、傾斜角(ピッチ角及びロール角)については重力方向を基準とした絶対角を得ることができる。一方、重力軸回りの回転である方位角に関しては、絶対的なリファレンスを得ることが出来ず、ドリフト誤差を補正することができないため、傾斜角に比べて精度が低いという性質を有している。そこで画像中の指標を用いて、方位角(ヨー角)のドリフト誤差補正値と撮影部に対する姿勢センサの姿勢とを併せて推定する。撮影した画像をその演算に使用するかどうかの判定は、姿勢センサの出力値がある閾値よりも変化したかどうか、つまり、十分に異なる姿勢で撮影されたかどうかによって行う。
十分に異なる姿勢かどうかを判定する評価量の算出方法について以下で述べる。
すでに使用すると判定された画像のフレーム番号を1、2、・・・、m−1、とし、取得された画像を第mフレームとする。
画像を撮影した時点でのセンサ計測値Rmと、すでに使用すると判定された第jフレーム(j=1,2,・・・、m−1)を撮影した時点でのセンサ計測値Rjとの角度差を求めることを考える。まず、この二つの姿勢の差異、すなわち、△R=Rm・Rj −1を求め、3×3の回転変換行列である△Rからオイラー角θへと変換する。角度差をx軸、y軸、z軸の各軸まわりの角度であるオイラー角θ=[αβγ]によって表すと、次のような関係になる。
さらに、姿勢センサの方位角方向のドリフトを考慮して、ドリフト成分を含んでいるであろう方位角βを除外し、傾斜角成分のみを抽出する。すなわち、θの方位角成分を0とした傾斜角成分のみのオイラー角表現θ‘=[α0γ]にを得て、得られたθ’を回転軸回転角表現に変換した際の回転角△φを求め、これを評価量とする。
ステップS10240では、求めた評価量をもとに取得された画像を使用するかどうかの判定を行う。すでに使用すると判定された画像(j=1、2、・・・J)すべてに対して、
△φmj>φthreshold ・・・(7−4)
であるとき、その取得された画像はまだ撮影されていない姿勢で撮影された画像であるとして、その画像を使用すると判定する。ここでφthresholdは閾値である。
ステップS10250では、ステップS10240で判定された判定結果を、姿勢センサの姿勢算出部10060へと出力する。
ステップS10150は、ステップS10140で姿勢センサの姿勢算出に使用すると判定され、かつすでに使用すると判定された画像枚数mが、
のときは、ステップS10160へ進む。一方、ステップS10140で使用されないと判定された場合は、再びステップS10110へ戻る。
ステップS10160は、画像使用判定部10050で使用すると判定された複数の視点位置で撮影した画像を用いて、姿勢センサの姿勢算出部10060が姿勢センサ12000のカメラ座標系における姿勢ωCSを算出する。撮影部の位置、センサ計測値、方位方向のドリフト補正値φτ、およびωCSから計算される指標の画像上での計算位置と、指標の画像上での検出位置との誤差が最小になるような、撮影部の位置、方位方向のドリフト補正値φτ、およびωCSを非線形最適化により求める。この導出工程は第2の実施形態で説明したS8060と同様であるので、ここでは説明を省略する。
最後にステップS10170において校正処理を終了するか否かの判定が行われる。オペレータが、校正処理の終了を指示した場合には、処理を終了させ、校正処理の継続(再校正)を指示した場合には、再び画像を取得する。オペレータは、得られたωSCやφτを用いて画像上に描画した仮想物体と現実物体の位置合わせ結果が正しければ、校正処理を終了し、正しくなければ継続するように判定する。
以上の方法によって、撮影部に装着した姿勢センサの撮影部に対する姿勢を算出するのに適した画像を自動で取得し、利用者の知識やノウハウに依存することなく高精度に姿勢センサの配置情報の計測を行うことができる。
(変形例7−1)
本実施形態では、画像を使用するかどうかの判定のための評価量を算出する際に方位角成分を除外し、傾斜角成分のみを用いて判定した。しかし、姿勢センサがドリフト誤差の影響を無視できるような比較的高精度な計測を行うことができるのであれば、方位角成分を除外せずに評価量を算出して、撮影部に装着した姿勢センサの配置情報を算出するための画像を判定してもよい。
また、撮影部に装着した姿勢センサの配置情報を算出する際に、方位角ドリフトを無視する場合の未知パラメータについて以下で説明する。
世界座標系における鉛直上方向(地球の重力の反対方向)を表すベクトルl=(l1,l2,l3)と,センサ座標系と世界座標系との間の方位方向の相違角(重力方向の軸(重力軸)周りの回転角)を表す方位補正角φWTとする。ここで、センサ座標系とはセンサ自身が定義する座標系であり、センサ出力値はセンサ座標系における姿勢を表している。このため、センサ座標系における計測対象物体の姿勢を世界座標系における姿勢に変換する座標変換を行う必要がある。この座標変換を方位補正角φWTによって行う方法を、本出願人は、特開2005−107248で提案している。
姿勢センサのカメラ座標系における姿勢ωCSは3値ベクトルωCS=[ξ ψ ζ]Tとして扱う。姿勢センサのカメラ座標系における姿勢ωCSと、方位補正角φWTと、ある視点位置(これを識別子τで表す)での撮影部の位置tWCτ=[xtτ ytτ ztτ]Tとが未知となる。これらの未知パラメータを4+3L次元の状態ベクトル
で記述する。ここでLは、異なる視点から撮影された画像の総数を表している。
上記で示した未知パラメータsを、第2の実施形態と同様の手法で求めることができる。
(他の実施形態)
本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体(または記録媒体)を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
本発明を上記記憶媒体に適用する場合、その記憶媒体には先に説明したフローチャートに対応するプログラムコードが格納されることになる。