実施の形態1
図1は本実施の形態を適用できる情報処理システムの構成例を示す。この情報処理システムは、ユーザが装着して表示画像を鑑賞するヘッドマウントディスプレイ(以下、「HMD」と呼ぶ)18、HMD18を含む空間を撮影する撮像装置12、撮影した画像に基づきHMD18の位置を特定する処理を含む情報処理を行う情報処理装置10を含む。
この例でHMD18は、Bluetooth(登録商標)など既知の無線通信技術により情報処理装置10と通信を確立する。また撮像装置12と情報処理装置10とは有線により通信を確立する。ただし接続方法をこれに限る主旨ではない。また情報処理装置10と撮像装置12、あるいは情報処理装置10とHMD18は、一体的に実現してもよい。またシステムにはさらに、ユーザが把持して操作する入力装置や、HMD18に表示する画像と同様の画像を表示する平板型ディスプレイなどを含めてもよい。
撮像装置12は、HMD18を装着したユーザなどの対象物を所定のフレームレートで撮影するカメラと、その出力信号にデモザイク処理など一般的な処理を施すことにより撮影画像の出力データを生成し、情報処理装置10に送出する機構とを含む。カメラはCCD(Charge Coupled Device)センサやCMOS(Complementary Metal Oxide Semiconductor)センサなど、一般的なデジタルカメラ、デジタルビデオカメラで利用されている可視光センサを備える。撮像装置12が備えるカメラは1つのみでもよいし、2つのカメラを既知の間隔で左右に配置したいわゆるステレオカメラでもよい。
ステレオカメラを導入した場合、3次元の実空間における対象物の位置を高精度に求めることができ、情報処理装置10による情報処理や画像表示をより多様化させることができる。ステレオカメラが左右の視点から撮影したステレオ画像を用いて、三角測量の原理により被写体のカメラからの距離を特定する手法は広く知られている。
情報処理装置10は、撮像装置12から送信されたデータを用いて必要な情報処理を行い、画像や音声などの出力データを生成する。本実施の形態において情報処理装置10は、撮像装置に写るマーカーの像に基づき、それを装着した対象物の位置や姿勢を特定する。例えばHMD18の外面に複数のマーカーを設け、撮影画像からその像を抽出して、3次元空間におけるそれぞれの位置情報を取得する。それらの情報を統合すれば、HMD18、ひいてはユーザの頭部の位置や姿勢を特定できる。この処理を撮影画像のフレームごとに繰り返せば、ユーザの視点位置や視線の動きを特定できるため、例えばそれに応じた視野で仮想世界の画像を描画し、HMD18に表示させることで仮想現実(VR:Virtual Reality)を実現できる。
ただしマーカーはHMD18に設けたものに限らず、ユーザが把持する入力装置に設けてもよいし、ユーザなどに直接装着してもよい。以後の説明ではHMD18にマーカーを設ける態様について説明するが、マーカーを他の物に装着させる場合、HMD18は必須ではない。いずれにしろマーカーを装着した物あるいは人などを対象物とし、マーカーの像を用いて当該対象物の位置情報を取得する限りにおいて、マーカーの形態や対象物の種類は限定されない。またマーカーを利用して特定した対象物の位置や姿勢の情報を用いて情報処理装置10が行う処理の内容も特に限定されず、ユーザが求める機能やアプリケーションの内容などによって適宜決定してよい。
HMD18は、ユーザが頭に装着することによりその眼前に位置する有機ELパネルなどの表示パネルに画像を表示する表示装置である。例えば左右の視点から見た視差画像を生成し、表示画面を2分割してなる左右の領域にそれぞれ表示させることにより、画像を立体視させてもよい。ただし本実施の形態をこれに限る主旨ではなく、表示画面全体に1つの画像を表示させてもよい。HMD18はさらに、ユーザの耳に対応する位置に音声を出力するスピーカーやイヤホンを内蔵していてもよい。
図2はHMD18の外観形状の例を示している。この例においてHMD18は、出力機構部102および装着機構部104で構成される。装着機構部104は、ユーザが被ることにより頭部を一周し装置の固定を実現する装着バンド106を含む。装着バンド106は各ユーザの頭囲に合わせて長さの調節が可能な素材または構造とする。例えばゴムなどの弾性体としてもよいし、バックルや歯車などを利用してもよい。
出力機構部102は、HMD18をユーザが装着した状態において左右の目を覆うような形状の筐体108を含み、内部には装着時に目に正対するように表示パネルを備える。そして筐体108の外面には、所定の色で発光するマーカー110a、110b、110c、110d、110eを設ける。マーカーの数、配置、形状は特に限定されないが、図示する例では、およそ矩形のマーカーを、出力機構部102の筐体前面の4隅および中央に設けている。
さらに装着バンド106後方の両側面にも、楕円形のマーカー110f、110gを設けている。このようにマーカーを配置することにより、撮像装置12に対しユーザが横を向いたり後ろを向いたりしても、撮影画像におけるマーカーの像の数や位置に基づきそれらの状況を特定できる。なおマーカー110d、110eは出力機構部102の下側、マーカー110f、110gは装着バンド106の外側にあり、図2の視点からは本来は見えないため、外周を点線で表している。マーカーは所定の色や形状を有し、撮影空間にある他の物からの識別が可能な形態であればよく、場合によっては発光していなくてもよい。
図3は、本実施の形態において情報処理装置10がマーカーの像から3元空間におけるHMD18の位置情報を得る基本的な処理手順を説明するための図である。撮像装置12をステレオカメラで構成した場合、左右のカメラが同じタイミングで被写空間を撮影することにより、左視点の画像80aと右視点の画像80bのデータが、情報処理装置10に所定のフレームレートで送信される。図ではわかりやすさのために、HMD18の出力機構部102の像のみを模式的に表している。
図示するように左視点の画像80aに対し、右視点の画像80bでは、HMD18の像が左寄りに表れる。情報処理装置10はまず、画像80a、80bのそれぞれから、輝度や色などに基づきマーカーの像を抽出する(S10a、S10b)。そして各マーカーの像の領域の重心を求める。図示する例では、左視点の画像80aの1つのマーカーの像を左側に拡大表示したように、重心84の位置を黒丸で示している。
次に左右の画像80a、80bにおける同じマーカーの重心位置の対応を、画像上の位置などから特定したうえ、その水平方向の位置ずれを視差として三角測量の原理を適用することにより、重心の撮像面からの距離を求める。当該距離に基づき画像上での重心位置を3次元空間に逆射影することにより、各マーカーの重心の3次元空間での位置座標が得られる(S12)。HMD18における各マーカーの配置は既知であることから、HMD18の所定の箇所、例えばユーザの眉間に相当するポイント88の3次元空間での位置は、各マーカーの重心との相対的な位置関係から導出できる。
撮像装置12を単眼のカメラとした場合も、マーカーの大きさや複数のマーカーの間隔等に基づき撮像面からの距離を求めれば、重心の3次元空間での位置を導出できる。なお本実施の形態ではマーカーの位置の代表値として重心の位置を用いているが、代表とする点は必ずしも重心でなくてよい。例えばマーカーの頂点、辺の中点などを用いて代表点を決定してもよい。
上記手法において導出される、目標とするポイント88(以後、「目標点」と呼ぶ)の位置情報は、撮像装置からのマーカーの見え方に影響されやすい。例えばHMD18の向きが変化すると、撮像装置12からは見えづらくなったり完全に見えなくなったりする。図示する例では、HMD18の下側に配置されたマーカー90a、90bは撮像面に対する傾斜によってその像が細くなっている。
この場合、マーカーの像を構成する少ない画素数から重心を求めることになり、撮像面に正対しているマーカーと比較し多くの誤差を含む傾向となる。ここでユーザがさらに下を向くなどしてHMD18の俯角が大きくなると、マーカー90a、90bは撮影画像に写らなくなる。するとポイント88の位置を、残りのマーカーの像の重心のみから算出する必要が生じ、これによっても誤差を生みやすくなる。またマーカー90a、90bが撮像装置12から見えなくなる瞬間を境に、目標点の位置を算出する根拠となる重心の数が変化するため、導出される位置情報が突然変化することがあり得る。
目標点の位置情報が不連続になると、それを用いて行う各種処理にも不連続性が生じる。例えば位置情報を用いて生成した画像をHMD18に表示させる場合、画像の仮想的な視点が実際の頭部の動きと異なる不連続な動きとなり、鑑賞者に不快感を与えることが考えられる。マーカーの数を増やすなどの対応により、位置情報の精度を安定させることも考えられるが、製造コストや消費電力の面で課題が生じる。
また撮像装置12を一般的なカラー画像を撮影するカメラとすると、各画素に対応するセンサが輝度値を取得する色と、マーカーからの光が及ぶ範囲、すなわちマーカーの本来の像との関係によっても、重心の位置に誤差が生じ得る。図4は、マーカーの本来の像と、撮像面のセンサ配列との関係に依存して、重心の位置に生じる誤差を説明するための図である。同図における9つの矩形は画像平面を表し、内部の格子で区切られた領域が画素を表している。
まず(a)の状態において、左端の「真値」で示された網掛けされた矩形領域を、本来のマーカーの像92aとする。このときの真の重心を黒点で示している。撮像装置12のセンサが一般的なベイヤ配列であるとすると、図中、中央の「ベイヤ配列との関係」に示すように、各センサは、赤(R)、緑(G)、青(B)のいずれかの輝度を取得する。このため本来のマーカーの像92aの領域内のセンサのうち、マーカーからの光を正しく検出できるセンサは限定される。例えばマーカーの光を青色とすると、図示する例では網掛けされた青(B)のセンサによって、マーカーからの光に近い輝度が検出されるが、その他のセンサでは著しく低い輝度値となる。
ベイヤ配列で検出されたいわゆるRAW画像は、その後のデモザイク処理により色ごとに補間され、各画素が三色の情報を有するカラー画像が生成される。このとき本来のマーカーの像92aの領域内の青色を検出するセンサと、一画素を挟んで当該領域外にある青色を検出するセンサの出力輝度値が補間される。結果としてカラー画像においては、図の右端の「デモザイク後画像」に示すように、網掛けされた本来の青色の輝度値を示す画素94aと、その周囲の、補間された輝度値を示す画素からなる領域96aが、マーカーの色に近い領域、すなわちマーカーの像となる。ただし画素94aの周囲の画素は、画素94aより輝度が低くなる。
このようなカラー画像を用いて画像処理を行い、青色の領域96aをマーカーの像として検出すると、白点で表す位置が重心として算出されるため、黒点で示した本来の重心より下側に0.5画素ずれることになる。(b)は、マーカーが(a)の状態から微小量変位した状態を示している。具体的には本来のマーカーの像92bが、右方向および下方向に0.5画素ずつ変位している。このときの像とセンサ配列の関係を見ると、本来のマーカーの像92bは、(a)と同じ青色のセンサとは別の青色のセンサにもかかっている。したがってこれらのセンサで、マーカーからの光に近い輝度を検出する。
これをデモザイク処理すると、本来の青色に近い輝度値を示す画素群94bと、その周囲の画素からなる領域96bがマーカーの像として表れる。この青色の領域96bをマーカーの像として検出すると、白点で表す位置が重心として算出されるため、黒点で示した本来の重心より右側に0.5画素ずれることになる。マーカーがさらに右方向および下方向に0.5画素ずつ変位した(c)の状態では、本来のマーカーの像92cの領域内に青色のセンサ2つが完全に入っている。
これをデモザイク処理すると、本来の青色に近い輝度値を示す画素群94cと、その周囲の画素からなる領域96cがマーカーの像として表れる。この青色の領域96cをマーカーの像として検出すると、白点で表す位置が重心として算出されるため、黒点で示した本来の重心より上側に0.5画素ずれることになる。マーカーの像は実際には、図示したものより大きいことが多いが、輪郭近傍に位置するセンサが検出する光の色によって、カラー画像上での像の輪郭が変化し重心がずれる原理は図示するのと同様である。
またマーカーが撮像装置12から離れたり撮像面に対する角度が大きくなったりするほど像が小さくなり、図示するような状態に近づく。例えばHMD18を装着したユーザ本人が気づかないような微小な揺れでも、図示するように算出される重心がずれると、その位置情報を用いて生成した表示画像が揺れ、ユーザに違和感を与えたり体調不良を生じさせたりすることが考えられる。
そこで本実施の形態では、マーカーと撮像面との角度に応じて、目標点の位置を求める際の重みをマーカーごとに調整することにより、撮像装置12から見えにくいマーカーによって生じる誤差を軽減する。またHMD18にIMU(Inertial Measuremen Unit)センサを設け、その出力値から推定されるHMD18の位置情報と、撮影画像におけるマーカーの像から得た位置情報とを統合することにより、位置情報の振動や不連続性を抑制する。
図5は、情報処理装置10の内部回路構成を示している。情報処理装置10は、CPU(Central Processing Unit)22、GPU(Graphics Processing Unit)24、メインメモリ26を含む。これらの各部は、バス30を介して相互に接続されている。バス30にはさらに入出力インターフェース28が接続されている。入出力インターフェース28には、USBやIEEE1394などの周辺機器インターフェースや、有線又は無線LANのネットワークインターフェースからなる通信部32、ハードディスクドライブや不揮発性メモリなどの記憶部34、HMD18へデータを出力する出力部36、撮像装置12やHMD18からデータを入力する入力部38、磁気ディスク、光ディスクまたは半導体メモリなどのリムーバブル記録媒体を駆動する記録媒体駆動部40が接続される。
CPU22は、記憶部34に記憶されているオペレーティングシステムを実行することにより情報処理装置10の全体を制御する。CPU22はまた、リムーバブル記録媒体から読み出されてメインメモリ26にロードされた、あるいは通信部32を介してダウンロードされた各種プログラムを実行する。GPU24は、ジオメトリエンジンの機能とレンダリングプロセッサの機能とを有し、CPU22からの描画命令に従って描画処理を行い、表示画像を図示しないフレームバッファに格納する。そしてフレームバッファに格納された表示画像をビデオ信号に変換して出力部36に出力する。メインメモリ26はRAM(Random Access Memory)により構成され、処理に必要なプログラムやデータを記憶する。
図6はHMD18の内部回路構成を示している。HMD18は、CPU50、メインメモリ52、表示部54、音声出力部56を含む。これらの各部はバス58を介して相互に接続されている。バス58にはさらに入出力インターフェース60が接続されている。入出力インターフェース60には、有線又は無線LANのネットワークインターフェースからなる通信部62、IMUセンサ64、および発光部66が接続される。
CPU50は、バス58を介してHMD18の各部から取得した情報を処理し、情報処理装置10から取得した出力データを表示部54や音声出力部56に供給する。メインメモリ52はCPU50における処理に必要なプログラムやデータを格納する。ただし実行するアプリケーションや装置の設計によっては、情報処理装置10がほぼ全ての処理を行い、HMD18では情報処理装置10から送信されたデータを出力するのみで十分な場合がある。この場合、CPU50やメインメモリ52は、より簡易なデバイスで置き換えることができる。
表示部54は、液晶パネルや有機ELパネルなどの表示パネルで構成され、HMD18を装着したユーザの眼前に画像を表示する。上述のとおり、左右の目に対応する領域に一対の視差画像を表示することにより立体視を実現してもよい。表示部54はさらに、HMD18装着時に表示パネルとユーザの目との間に位置し、ユーザの視野角を拡大する一対のレンズを含んでもよい。
音声出力部56は、HMD18の装着時にユーザの耳に対応する位置に設けたスピーカーやイヤホンで構成され、ユーザに音声を聞かせる。出力される音声のチャンネル数は特に限定されず、モノラル、ステレオ、サラウンドのいずれでもよい。通信部62は、情報処理装置10との間でデータを送受するためのインターフェースであり、Bluetooth(登録商標)などの既知の無線通信技術を用いて実現できる。IMUセンサ64はジャイロセンサおよび加速度センサを含み、HMD18の角速度や加速度を取得する。センサの出力値は通信部62を介して情報処理装置10に送信される。発光部66は、所定の色で発光する素子またはその集合であり、図2で示したHMD18の外面の複数箇所に設けたマーカーを構成する。
図7は、情報処理装置10の機能ブロックの構成を示している。図7に示す各機能ブロックは、ハードウェア的には、図5に示したCPU、GPU、メモリなどの構成で実現でき、ソフトウェア的には、記録媒体などからメモリにロードした、データ入力機能、データ保持機能、画像処理機能、入出力機能などの諸機能を発揮するプログラムで実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
情報処理装置10は、撮像装置12から撮影画像のデータを取得する撮影画像取得部130、撮影画像からマーカーの像を抽出し重心の3次元空間での位置を取得するマーカー位置取得部132、マーカーの面と撮像面との関係から各マーカーの重み係数を調整する重み調整部134、調整された重み係数を用いて各マーカーの重心から目標点の位置を算出する目標点位置算出部136を含む。情報処理装置10はさらに、HMD18からIMUセンサ64の出力値を取得するセンサデータ取得部138、センサの出力値に基づきHMD18の位置および姿勢を推定する位置姿勢推定部140、HMD18の3次元オブジェクトモデルを格納するモデルデータ格納部144、位置姿勢推定部140の推定結果を用いて目標点位置算出部136が算出した目標点の位置をフィルタリングするフィルタリング部142、および、フィルタリングされた位置情報を表すデータ、あるいはそれを用いた表示画像などの出力データを生成し表示装置16などに出力する出力データ生成部146を含む。
撮影画像取得部130は図5の入力部38、CPU22、メインメモリ26などで実現され、撮像装置12が所定のフレームレートで撮影して得られる撮影画像のデータを順次取得し、マーカー位置取得部132に供給する。撮像装置12をステレオカメラで構成する場合、左右のカメラがそれぞれ撮影する動画像のデータを順次取得する。
マーカー位置取得部132は図5のCPU22、メインメモリ26などで実現され、図3のS10a、S10bのように、撮影画像からマーカーの像を検出したうえ、画像上での各重心の位置座標を求める。そしてステレオ画像を用いる場合は、左右の画像で同じマーカーの像を対応づけ、それらの重心の水平方向の位置ずれに基づき、重心の3次元空間での位置座標を求める。
センサデータ取得部138は図5の入力部38、通信部32、CPU22、メインメモリ26などで実現され、HMD18からIMUセンサ64の出力値、すなわち角速度および加速度を所定のレートで取得し、位置姿勢推定部140に供給する。位置姿勢推定部140は図5のCPU22、GPU24、メインメモリ26などで実現され、IMUセンサ64の出力値とフィルタリング部142からの位置情報を用いて、次のフレームの撮影時刻におけるHMD18の位置および姿勢を推定する。3軸の角速度を用いて積分演算により姿勢を求める手法は広く知られている。また当該姿勢情報を用いて出力値をセンサ座標系からワールド座標系に変換することにより、以前の位置姿勢情報からその後の位置姿勢情報を推定できる。
重み調整部134は図5のCPU22、GPU24、メインメモリ26などで実現され、モデルデータ格納部144に格納された、HMD18の3次元オブジェクトモデルのデータを読み出し、撮像装置12の撮像面を配置した仮想3次元空間に、位置姿勢推定部140により推定された位置および姿勢でHMD18を配置する。そして当該HMD18のオブジェクトモデルにおける各マーカーの法線と、各マーカーから撮像面へ向かう射影ベクトルとの角度に応じて、各マーカーの重心位置に与える重み係数を決定する。
目標点位置算出部136は図5のCPU22、メインメモリ26などで実現され、調整された重みを係数に用いて、各マーカーの重心位置に重み付けしたうえ、さらに目標点までの距離に基づく重みを与えたうえで平均をとることにより目標点の位置座標を算出する。フィルタリング部142は図5のCPU22、メインメモリ26などで実現され、目標点位置算出部136が算出した目標点の位置座標と、位置姿勢推定部140が推定した目標点の位置座標とを所定の比率で合成することによりフィルタリングを行い、最終的な目標点の位置座標を導出する。
この際、合成割合をHMD18の動きに応じて調整してもよい。例えば頭部がほぼ止まっている状態では、上述したような位置情報の振動や不連続性が、表示画像など出力データを介してより認識されやすくなる。したがってそのような場合に位置姿勢推定部140が推定した位置情報の割合を上げて合成する。一方、位置姿勢推定部140が推定した位置情報の割合を高いままとすると、推定誤差が蓄積されて実際の位置と解離することが考えられる。そこで振動や不連続性が認識されにくい、頭部の動きが大きいときは、目標点位置算出部136が算出した位置情報の割合を上げて合成する。
そのようにしてフィルタリングされた位置情報を、位置姿勢推定部140に戻すことにより、次のフレームの撮影画像における位置および姿勢の推定に用いる。出力データ生成部146は図5のCPU22、GPU24、メインメモリ26、出力部36、通信部32などで実現され、フィルタリング部142が出力する目標点の位置情報を用いて所定の情報処理を実施し、その結果として出力すべき画像や音声のデータを生成する。例えば上述のように、ユーザの頭部の位置や姿勢に対応する視点から見た仮想世界を左右の視差画像とし描画する。このとき姿勢の情報は位置姿勢推定部140から取得する。
この視差画像をHMD18において左右の目の前に表示させたり、仮想世界での音声を出力したりすれば、ユーザはあたかも仮想世界に入り込んだような感覚を得られる。あるいは単に、フィルタリング部142からの位置情報と、位置姿勢推定部140からの姿勢情報を出力データとして、別途設けた情報処理装置に出力するようにしてもよい。この場合、図示する情報処理装置10は、HMD18の状態検出装置として機能する。
図8は、重み調整部134が各マーカーに与える重み係数を算出する手法を説明するための図である。同図は上述のとおり仮想3次元空間に撮像装置12の撮像面150とHMD18のオブジェクトモデルを配置した様子を示している。オブジェクトモデルにおける各マーカーの位置や傾斜は当然、既知のため、位置姿勢推定部140が推定した位置および姿勢に従いHMD18のオブジェクトモデルを配置すれば、仮想3次元空間におけるマーカーの法線ベクトル(例えば法線ベクトル152a、152b)が求められる。
一方、当該オブジェクトモデルを撮像面150に射影してなるHMD18の像156は、撮影画像のいわば理想形である。撮像面に対するマーカーの面の角度は、オブジェクトモデルの各マーカーから像156の対応する位置までのベクトル、すなわち撮像装置12の光学中心へ収束する射影ベクトル(例えば射影ベクトル154a、154b)と法線ベクトルのなす角度(例えば角度θa、θb)に対応する。すなわち当該角度が大きいほど像の面積が小さくなり、重心位置の誤差が大きくなる。また面の角度によらず、撮影画像に写るマーカーの面積が小さいほど重心位置が誤差を含みやすい。
したがって定性的には、法線ベクトルと射影ベクトルとのなす角度が大きいほど、またモデル上で像の面積が小さいほど、マーカーの重心位置に与える重みを小さくする。ここでオブジェクトモデルにおいてマーカーの面を構成するポリゴンごとに法線ベクトルと射影ベクトルの内積、および像の面積を求め、それらの積をマーカー単位で合計すると、マーカー表面が曲面の場合も含め、より厳密に重み係数を決定できる。すなわちn番目のマーカーに対する重み係数Wnを次のように決定できる。
ここでi(1≦i≦a)はn番目のマーカーを構成するa個のポリゴンの識別番号、vpro(i)およびvnormal(i)はそれぞれ、i番目のポリゴンの射影ベクトルと法線ベクトル、S(i)はi番目のポリゴンの像の面積である。目標点位置算出部136は、この重み係数Wnを用いてn番目のマーカーの重心位置Pnに重みづけすることにより、目標点の位置座標Positionimageを次のように求める。
ここでNはマーカーの総数、offsetnはn番目のマーカーの重心位置から目標点までの3次元空間での距離である。重み係数Wnを精度よく求めるため、位置姿勢推定部140は画像が撮影された時刻と同じ時刻でのHMD18の位置および姿勢を推定する。フィルタリング部142が、式2により求めた目標点の位置座標Positionimageをフィルタリングする際に用いる推定位置情報も、画像の撮影時刻と一致させる。図9は、位置姿勢推定部140による位置の推定と画像の撮影時刻の関係を説明するための図である。
フレームレートをΔtとすると、各フレームは図の時間軸に示すように、t-Δt、t、t+Δt、t+2Δt、・・・の時刻で撮影される。したがって撮影画像から式2により得られる目標点の位置座標Positionimageも、それらの時刻に対し求められる。図ではその位置座標を白丸で表している。一方、位置姿勢推定部140は、IMUセンサ64から角速度、加速度を取得し、それらを用いてHMD18の位置や姿勢を取得する。
図示する位置座標の場合、黒丸で示した、各撮影時刻に対応する位置座標を始点とし、加速度の積分演算から得られるΔt分の変位量を加算することで、次の撮影時刻に対応する位置座標を、矢印で示すように推定できる。このときの推定値を網掛けの丸で示している。フィルタリング部142は、画像から得られた位置座標Positionimageと(白丸)、IMUセンサ64からの出力値から推定した同じ時刻の位置座標(網掛けの丸)を、所定の割合で合成することにより、当該時刻のフィルタリング後の位置座標を黒丸で示すように求める。位置姿勢推定部140が推定した位置座標をPositionsensor、その合成割合をkとすると、フィルタリング後の位置座標Positionoutは次のように求められる。
フィルタリング後の位置座標Positionoutはその時刻の最終的な位置座標として出力データ生成部146に供給されるとともに、位置姿勢推定部140に与えられ、次の撮影時刻の位置を推定するための始点として用いられる。また位置姿勢推定部140は、フィルタリング後の位置座標Positionoutを用いて、図8で示したHMD18のオブジェクトモデルの次の撮影時刻における配置も決定する。
このとき、位置座標PositionoutにあるときのHMD18のオブジェクトモデルのマーカーの重心が、撮影画像から得られた各マーカーの重心位置と合致するように、前の撮影時刻における姿勢を決定することで、それを始点として次の撮影時刻における姿勢も正しく推定できる。重み調整部134はこれらの推定値を用いて、図8で示したように各マーカーの重み係数を決定する。
式3における合成割合kは、撮影画像から得た位置情報に対するフィルタリングの強さを意味する一方、(1-k)は、IMUセンサ64の出力値から位置情報を推定する際の、撮影画像から得た位置情報の帰還率を意味する。したがって上述のとおり、合成割合kが1に近いほど、センサの出力値の積分演算による誤差の蓄積率が大きくなり、0に近いほど、撮影画像から取得する位置情報における上述のような誤差の影響が大きくなる。
したがって合成割合kを適切に調整することにより、それらのバランスを好適に保つ。図10は、撮影画像から得た位置情報に対する、センサの出力値から推定された位置情報の合成割合の調整手法の例を説明するための図である。この例では、HMD18の速度によって合成割合kを変化させる。ここで速度Vは、IMUセンサ64の出力値に基づき取得した値を用いる。これは、撮影画像から得られた位置情報から速度を得ると、上述のような誤差や他の物体による隠蔽によって、速度自体に誤差が含まれる可能性があるためである。
図示するように、速度Vには実験などにより第1のしきい値Vth1、第2のしきい値Vth2(ただしVth1<Vth2)の2つのしきい値を設定しておく。HMD18の速度Vが0≦V<Vth1の範囲にあるときはk=k1とする。速度VがVth2≦Vの範囲にあるときはk=k2とする(ただしk2<k1)。それらの中間速度であるVth1≦V<Vth2の範囲では、速度Vの増加に対し、kをk1からk0まで線形に減少させる。ここでkの最大値k1や最小値k0も、実験などにより好適な値を設定する。
このような調整により、位置情報の誤差による不連続性や振動が認識されやすい低速領域では、フィルタが強く効くようにする。一方、不連続性や振動が認識されにくい高速領域では、撮影画像から得た位置情報の帰還率を上げることにより、センサの出力値から得る位置情報の累積誤差が解消されやすくする。これによりユーザの動きの有無を含めた長期的な観点で良好な状態を保つことができる。なお合成割合kの変化のさせ方は図示するものに限らず、しきい値を3つ以上設けてもよいし、kの変化を曲線としてもよい。また各速度範囲に対し定数を設定するなど、kを不連続に変化させてもよい。
次に、これまで述べた構成によって実現できる情報処理装置の動作を説明する。図11は、情報処理装置10が、撮影画像およびIMUセンサの出力値を用いてHMD18の目標点の位置座標を出力する処理手順を示すフローチャートである。このフローチャートは、ユーザが情報処理装置10を起動させ、撮像装置12が撮影を開始した状態で開始される。まず撮影画像取得部130は、撮像装置12から最初のフレームの撮影画像を取得する(S30)。次にマーカー位置取得部132は、撮影画像からマーカーの像を抽出する(S32)。撮影画像をステレオ画像とする場合、その両者に対し像の抽出を行う。
さらにマーカー位置取得部132は、抽出したマーカーの像に基づき、マーカーの重心の3次元空間における位置を取得する(S34)。ステレオ画像の場合、図3で説明したように、左右の画像の対応する像を特定し、それらの視差に基づき撮像面からの距離を導出したうえ、3次元空間に逆射影することにより3次元での位置座標を求められる。単眼カメラの画像であっても、マーカーの像の大きさから距離を推定すれば、3次元での位置座標を求められる。一方、位置姿勢推定部140は、IMUセンサ64の出力値を用いて、HMD18の位置と姿勢を推定する(S36)。
なお最初の撮影画像に対しては、位置や姿勢の始点を適宜設定してもよいし、推定処理自体は次の時刻のフレームから開始するようにしてもよい。後者の場合、最初のフレームについては撮影画像のみから位置情報を取得し、図示するフローチャートは次のフレームの撮影画像から開始する。またS36の処理は、S32やS34の処理と並列に行ってよい。続いて重み調整部134は、位置姿勢推定部140が推定した位置および姿勢に従い、HMD18のオブジェクトモデルを仮想3次元空間に配置したうえ、式1により重み係数を決定する(S38)。
次に目標点位置算出部136は、決定した重み係数を用いて、式2により撮影画像に基づく目標点の位置座標を取得する(S40)。続いてフィルタリング部142は、S36で位置姿勢推定部140がIMUセンサ64の出力値から推定した位置情報を用いて、S40で取得した位置情報を式3によりフィルタリングする(S42)。このときフィルタリング部142は、位置姿勢推定部140が推定に用いたHMD18の速度の値を取得し、それに応じて合成割合kを決定する。
フィルタリング部142は、そのようにして得たフィルタリング後の位置情報を、出力データ生成部146に出力するとともに、位置姿勢推定部140に帰還させる(S44)。出力データ生成部146は上述のとおり、取得した位置情報を用いて適宜情報処理を実施し、表示画像を生成して表示装置16に出力してもよいし、位置情報そのものを別の情報処理装置に出力してもよいが、同図では図示を省略している。ユーザが処理の終了操作を行うなど処理を終了させる必要がなければ(S46のN)、次のフレームの撮影画像に対しS30からS44の処理を繰り返す。処理を終了させる必要が生じたら、全ての処理を終了させる(S46のY)。
図12は、本実施の形態を適用した場合の効果を例示している。同図はパンチルタ上に固定したHMD18をヨー軸周りに回転させたときに出力される位置情報を示しており、横軸が画像の水平方向、縦軸が撮像装置12からの距離を表す。HMD18を回転させることにより、眉間に対応する目標点の位置座標はおよそ円形に近い変化を示す。(a)は撮影画像のみから求めた位置座標であり全体的に細かい振動が確認される。これに対し、本実施の形態を導入した(b)の結果では、位置座標の振動が大幅に抑えられていることがわかる。
以上述べた本実施の形態によれば、撮影画像からマーカーの像を抽出することにより対象物の3次元での位置情報を取得する技術において、IMUセンサの出力値を用いて位置情報をフィルタリングする。ここでIMUセンサの出力値から、撮影時刻に合わせた位置情報を推定することにより、時間的なずれなく正確なフィルタリングを行える。これにより、マーカーの本来の像と、各画素を構成するセンサが検出する色との位置関係や、マーカーの見かけ上の形状やサイズの変化に起因する誤差を軽減し、位置情報の取得精度を安定させることができる。
また、IMUセンサから推定される位置や姿勢の情報を用いて、対象物のオブジェクトモデルを仮想空間に配置し、各マーカーの面と撮像面との角度や、マーカーを撮像面に射影したときの像の面積から、対象物における目標点の位置座標の算出にどの程度寄与させるかを決定づける重み係数をマーカーごとに決定する。これにより、フィルタリング前の位置情報であっても、マーカーの見え方に起因する誤差を極力排除できる。すなわちフィルタリングを導入しない場合でも、撮影画像におけるマーカーの像から対象物の位置座標を取得する際の精度を安定させることができる。
これらの構成により、マーカーの数が少なくても、また見かけの形状が向きによって変化するようなマーカーであっても、それを装備した対象物の位置情報を安定して得ることができる。結果として、HMDなどマーカーを装備させる対象物のデザインに柔軟性を持たせたり、製造コストを抑えたりすることができる。またマーカーの数が少ないことから演算コストを軽減できるとともに、マーカーを発光体とする場合には消費電力を抑えることもできる。
実施の形態2
本実施の形態では、実施の形態1と同様の状況において、さらにマーカーの隠蔽を考慮する。図13は、マーカーの隠蔽が発生する状況を模式的に示している。(a)の撮影画像は、HMD18全体が写った状態を表している。この場合、実施の形態1で説明したように、オブジェクトモデルを用いて各マーカーの見え方を特定することにより、マーカーの位置情報に含まれる誤差を見積もれるため、それに応じて目標点の位置座標の算出式を調整できた。一方、(b)の撮影画像では、撮像面とHMD18との間にユーザの手が入ることにより、本来見えるべき5つのマーカーのうち2つが隠蔽されている。
このような隠蔽は、オブジェクトモデルを用いた誤差評価では考慮されず、発生を予測することも難しい。マーカーのいくつかが突然、隠蔽されることにより、重心が得られるマーカーの数が急に変化し、誤差特性が変動することにより目標点の位置座標も不連続に変化することがあり得る。また、比較的大きいサイズのマーカーの場合、一部が隠蔽されることにより当該マーカーの重心の位置座標が大きな誤差を含むことになる。
そこで本実施の形態では、本来見えるべきマーカーの面積に対する、実際に写っているマーカーの像の面積の割合によって隠蔽の有無や割合を判定し、所定の基準以上、隠蔽されているマーカーの重心位置は、目標点の位置座標算出に用いないようにする。以後、実施の形態1と異なる点に主眼を置いて説明する。本実施の形態における情報処理装置の内部回路構成および機能ブロックの構成は、実施の形態1において図5、図7で示したのと同様でよい。
ここで本実施の形態における上記機能は、重み調整部134に割り当てる。図14は、本実施の形態における重み調整部134が、マーカーの隠蔽を確認し目標点の位置座標算出に用いることのできる情報に限定して目標点位置算出部136に出力する処理手順を示すフローチャートである。まず実施の形態1と同様、位置姿勢推定部140が推定した、撮影時刻と同時刻のHMD18の位置および姿勢の情報に基づき、撮像面を含む仮想3次元空間にHMD18のオブジェクトモデルを配置する(S50)。
次に、オブジェクトモデル上の各マーカーを構成するポリゴンをそれぞれ撮像面に射影する(S52)。このとき、法線ベクトルと射影ベクトルの内積が所定のしきい値以下であるポリゴンは、撮像面からは見えないとして射影対象から除外する。次に、隠蔽の度合いを表す指標として、可視度をマーカーごとに算出する(S54)。可視度は基本的には上述のとおり、本来あるべきマーカーの像に対する実際に撮影画像に写っているマーカーの像の面積割合を示す。ただしマーカーの位置や見え方によって可視度の特性が変化しないように正規化する。具体例は後に述べる。
S54で求めた可視度が所定のしきい値以上であれば(S56のY)、隠蔽の度合いは小さいとして、実施形態1で説明したように、式1を用いて当該マーカーの重み係数を決定したうえ(S58)、重心の位置座標とともに目標点位置算出部136に出力する(S60)。一方、可視度がしきい値を超えない場合、隠蔽の度合いが大きいとして、当該マーカーの重心の位置は出力しない(S56のN)。これにより目標点位置算出部136では、遮蔽されていない、あるいはその度合いが小さいマーカーの重心位置のみを用いて目標点が算出される。
全てのマーカーに対しS50からS60の処理を繰り返し(S62のN)、全てのマーカーについて処理が完了したら、その撮影画像に対する処理を終了する(S62のY)。なおここで図示した処理手順は、図11で示したフローチャートのS38の代わりとすることにより、実施の形態1と組み合わせることができる。また本実施の形態の可視度による評価のみを行う場合、S58の処理を省略し、S60では除外されないマーカーの重心位置のみを出力してもよい。このようにしても、隠蔽による誤差を軽減させる効果がある。
次に可視度について説明する。上述のとおり、単に面積の割合で可視度を定義すると、隠蔽以外の要因でも値が変化し、厳密に隠蔽の度合いを表しているといえない場合がある。まず基本的に撮影画像上の像は、オブジェクトモデルを撮像面に射影して得られるモデル上の像より大きくなる傾向がある。これは図4で示したように、撮影画像では画素単位で像の面積が決まること、デモザイク後の像は周囲の画素との補間により、本来の像の周囲まで色が拡張されやすいこと、レンズ歪みの補正により像が拡大されやすいことなどに起因する。
また撮影画像における像のサイズによって、そのような要因により拡張される面積の割合が変化する。図15は、マーカーの本来の像がデモザイク後の撮影画像において拡張される様子を模式的に示している。同図は(a)、(b)ともに画像平面を表し、内部の格子で囲まれた領域が各画素を表している。網掛けで示した領域160a、160bは本来のマーカーの像であるが、撮影画像上では画素単位で色が決まるうえ周囲の画素との補間により、それぞれ領域162a、162bに拡張される。
ここで、領域160a、160bをモデル上の像の面積、領域162a、162bを実際の撮影画像上の像の面積として、拡張された面積の割合を計算すると、元々の像のサイズが大きい(a)の場合と比較し、像のサイズが小さい(b)の場合の方が拡張面積の割合が大きくなりやすい。すなわち可視度を(実際の像の面積/モデル上の像の面積)と定義すると、隠蔽がない状態においても、像のサイズによって可視度が変化してしまう。また像のサイズが小さいと、当該像と画素の境界との位置関係によって拡張の割合に大きなばらつきが生じ、その結果として可視度もばらつくようになる。
像のサイズが小さくなるのは、撮像面に対する角度が大きいマーカー、あるいは撮像面からの距離が大きいマーカーである。そこでそれらの状況の差による影響を抑制するため、n番目のマーカーの可視度Dnを次のように定義する。
ここでvpro(n)およびvnormal(n)はそれぞれ、n番目のマーカーの射影ベクトルと法線ベクトル、Simage(n)は実際の撮影画像におけるn番目のマーカーの像の面積である。式1では射影ベクトルと法線ベクトルがポリゴンごとであったが、式4ではマーカーごととしている。したがって、図14のS52において射影対象となったポリゴンの射影ベクトルの平均値、法線ベクトルの平均値を、マーカーごとの射影ベクトルvpro(n)および法線ベクトルvnormal(n)とする。
実際の像の面積Simage(n)に、マーカー全体の射影ベクトルと法線ベクトルの内積を乗算することにより、Simage(n)が大きい方向にばらついても、角度が大きく誤差を含みやすいマーカーほどその影響を抑えられる。また分母のS(n)は、オブジェクトモデルを撮像面に射影したときの、n番目のマーカーの像の面積である。これはS52において射影したポリゴンの像の面積を、マーカーごとに合計した値である。ただし分解能を画素単位とする。
すなわちオブジェクトモデル上のマーカーを射影する撮像面に、実際の撮影画像と同じ解像度で画素領域を設定し、本来は画素より小さい分解能で得られているモデル上の像を、画素単位の像とする。図15の例を用いると、モデル上の像の領域160a、160bから、画素単位の領域162a、162bを疑似的に作りだし、その面積をS(n)とする。このように可視度を定義することにより、像のサイズによらず同じ条件で隠蔽の度合いを評価できる。
図16は、正規化された可視度を用いることによる効果を示している。同図は、マーカーの像の面積および可視度の、HMD18の撮像面からの距離に対する変化を表しており、(a)と(b)は、HMD18上での位置、ひいては撮像面に対する角度が異なるマーカーを対象としている。左側に示された面積を表すグラフにおいて、データ170a、170bは実際の撮影画像におけるマーカーの像の面積、データ172a、172bは、オブジェクトモデルを撮像面に射影してなるモデル上の像の面積である。
いずれも撮像面からの距離が大きくなるほど面積が減少するが、上述した理由により撮影画像上の像の面積は、モデル上の像の面積より常に大きくなるとともに、距離が大きいほどその解離の割合が大きくなる。これらの面積比をそのまま可視度として採用すると、右側のグラフにおけるデータ176a、176bのように、距離に対して可視度が増加してしまう。またデータ176aとデータ176bでは、マーカーの角度が異なることにより、距離に対する可視度の依存性も異なっている。
すなわちこのような定義による可視度は、隠蔽の度合いのほかに、マーカーの距離や撮像面に対する角度にも依存することになる。そこでまず、上述のようにモデル上の像を画素単位に拡張すると、その面積は、面積を表すグラフにおけるデータ174a、174bのように、実際の像のデータ170a、170bに近づく。これをS(n)として式4のように可視度を定義すると、右側の可視度のグラフのデータ178a、178bのように、距離に対する依存性や角度による差がほぼ解消される。
図17は、HMD18の姿勢を様々に変化させたときの可視度の変化を示している。具体的には、姿勢のパラメータとして2軸の回転角を水平面の位置座標で表し、各姿勢における可視度を縦軸方向にプロットしている。また、プロットされた点群を近似した曲面も示している。(a)と(b)はそれぞれ、図16の(a)と(b)で示したのと同じマーカーを対象としている。面180a、180bは、単純にモデル上の像に対する撮影画像上の像の面積比を可視度とした場合、平面182a、182bは式4を可視度とした場合である。式4の可視度によれば、HMD18の姿勢やマーカーの角度に対する依存性が小さく、純粋に隠蔽の度合いを表す指標として用いることができることがわかる。
図18は、位置情報の有効/無効を判定するために可視度に設ける基準を例示している。上述のように正規化された可視度を用いることにより、マーカーの像のサイズによらず単純なしきい値判定により有効/無効の判定が可能になる。すなわち可視度には、実験などによりしきい値Dthを設定しておく。そして各マーカーの可視度Dnが0≦Dn<Dthの範囲にあるとき、そのマーカーの位置情報を無効とする。可視度DnがDth≦Dnの範囲にあるとき、そのマーカーの位置情報を有効とし、目標点の位置の算出に用いる。なお図示するように可視度Dnは、上述したような撮影画像上の像の膨張により1.0を超える場合がある。
本実施の形態においても実施の形態1で説明したのと同様に、位置姿勢推定部140が推定した位置座標を用いて目標点の位置座標をフィルタリングしてよい。この場合、目標点位置算出部136が算出する、撮影画像に基づく位置情報には、マーカーが隠蔽されたか否かの判定結果が反映されている。例えば5つのマーカーのうち3つのマーカーの位置情報が隠蔽により無効となると、残りの2つのマーカーの重心の位置座標のみから目標点の位置座標を算出することになる。このようにして誤差特性が突然変化した結果、表示画像など後段の処理結果が不連続に変化することが考えられる。
そこで、位置姿勢推定部140が推定する位置座標との合成割合kを、隠蔽が生じた時点あるいはその直前の段階から所定時間、増加させることにより、シームレスな状態移行を実現する。図19は、可視度に基づく位置情報の有効/無効判定に基づき、推定位置情報の合成割合を制御するタイムチャートを例示している。同図上段は重み調整部134が、可視度のしきい値判定によって、あるマーカーの位置情報の有効、無効を切り替えるタイミングを例示している。下段はそれに応じて、フィルタリング部142が、位置姿勢推定部140が推定した位置情報の混合割合kを変化させるタイミングを示している。
図示するように、時刻t0においてあるマーカーの隠蔽の度合いが大きくなったとして、その位置情報が有効から無効へ切り替えられたとする。このときフィルタリング部142は、当該時刻t0において合成割合をk2からk3(k3>k2)に増加させ、所定時間Δt経過後に元の合成割合k2に戻す。さらにその後の時刻t1において隠蔽が解消されたとして、位置情報が無効から有効に切り替えられた場合も、フィルタリング部142は当該時刻t1において合成割合をk2からk3に増加させ、所定時間Δt経過後に元の合成割合k2に戻す。
図示するような位置情報の有効/無効の判定は、マーカー個々になされるため、フィルタリング部142は、いずれかのマーカーで隠蔽が発生したり解消されたりする都度、合成割合kを所定時間Δtだけ増加させる。このようにすることで、目標点の位置情報の算出に用いられるマーカーの数の増減によって、位置情報、ひいてはそれを用いた情報処理や表示画像の突発的な変化を抑えることができる。
なおマーカーごとの位置情報の有効/無効の判定は可視度に対するしきい値Dthによってなされるため、フィルタリング部142も可視度を確認するようにすれば、有効/無効が切り替えられるより前の段階で混合割合を調整できる。すなわち可視度に対し別のしきい値Dth1、Dth2(ただしDth1>Dth>Dth2)を設定しておき、有効から無効への切り替え時は、可視度が第1のしきい値Dth1以下となったら混合割合kを所定時間、増加させる。無効から有効への切り替え時は、可視度が第2のしきい値Dth2以上となったら混合割合kを所定時間、増加させる。
また図示する例では、混合割合kを定数k2、k3のどちらかとしたが、それに限る主旨ではなく、徐々に増減させてもよい。あるいは複数の混合割合kを設定し、段階的に増減させてもよい。無効となっているマーカーの数によって混合割合kを変化させてもよい。さらに、実施の形態1で説明したようにHMD18の速度に基づく混合割合の調整と組み合わせてもよい。この場合、図示するような調整を、HMD18の速度が所定のしきい値より小さいときのみに行ってもよい。あるいは、HMD18の速度によらず図示するような調整を行い、さらに図10で示したような速度に依存した調整を併存させてもよい。
以上述べた本実施の形態によれば、マーカーの隠蔽の度合いを表す可視度を導入し、隠蔽の度合いが大きいマーカーの位置情報は、目標点の位置情報の算出に用いる対象から除外する。これにより信頼性の高いマーカーのみを用いて対象物の位置情報を取得できるため、比較的大きなサイズのマーカーを用いても精度を安定化できる。目標点の位置情報の算出に用いるマーカーの数が変化したときは、IMUセンサから推定される位置情報の合成割合を一時的に増加させる。これにより誤差特性が突然変化し、出力データが不連続に変動するのを抑えることができる。
また隠蔽の度合いを評価する可視度として、マーカーの姿勢や距離による像のサイズの変化への依存が生じないよう正規化したパラメータを用いる。これにより位置情報の有効/無効を判定する処理がシンプルになり、処理の負荷を増大させることなく厳密な判定が行える。またマーカーのサイズや形状が異なっても、隠蔽発生の検出感度を均一化できるため、処理精度への影響を少なく、デザインの自由度を増やすことができる。さらに実施の形態1との組み合わせが可能なため、実施の形態1で上述した効果も同様に得られる。
以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。