Processing

Please wait...

Settings

Settings

Goto Application

1. WO2020110929 - INFORMATION PROCESSING APPARATUS, INFORMATION PROCESSING SYSTEM, DEVICE FOR POSITION/ATTITUDE ACQUISITION, AND DEVICE INFORMATION ACQUISITION METHOD

Document

明 細 書

発明の名称 情報処理装置、情報処理システム、位置姿勢取得用デバイス、およびデバイス情報取得方法

技術分野

0001  

背景技術

0002  

先行技術文献

特許文献

0003  

発明の概要

発明が解決しようとする課題

0004   0005  

課題を解決するための手段

0006   0007   0008   0009   0010  

発明の効果

0011  

図面の簡単な説明

0012  

発明を実施するための形態

0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078   0079   0080   0081   0082   0083   0084   0085   0086   0087   0088   0089   0090   0091   0092   0093   0094   0095   0096   0097   0098   0099   0100   0101   0102   0103   0104   0105   0106   0107   0108   0109   0110   0111   0112   0113   0114   0115   0116   0117   0118   0119   0120   0121  

産業上の利用可能性

0122  

符号の説明

0123  

請求の範囲

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17  

図面

1   2   3   4   5   6   7   8   9   10   11   12   13   14   15   16   17   18   19   20  

明 細 書

発明の名称 : 情報処理装置、情報処理システム、位置姿勢取得用デバイス、およびデバイス情報取得方法

技術分野

[0001]
 本発明は、撮影によりデバイスの位置や姿勢の情報を取得する情報処理装置、情報処理システム、位置姿勢取得用デバイス、およびデバイス情報取得方法に関する。

背景技術

[0002]
 ユーザの体やマーカーをカメラで撮影し、その像の領域を別の画像で置換してディスプレイに表示するゲームが知られている(例えば、特許文献1参照)。また、カメラで撮影された口や手の動きをアプリケーションの操作指示として受け取るユーザインタフェースシステムも知られている。このように、実世界を撮影しその動きに反応する仮想世界を表示させたり、何らかの情報処理を行ったりする技術は、携帯端末からレジャー施設までその規模によらず幅広い分野で利用されている。

先行技術文献

特許文献

[0003]
特許文献1 : 欧州特許出願公開第0999518号明細書

発明の概要

発明が解決しようとする課題

[0004]
 上記のような技術において、実世界に係る情報を撮影画像からいかに正確に取得するかは常に重要な課題である。例えば撮影視野に多くの物が存在すると、位置や姿勢を認識すべき対象物以外の物を対象物として検出してしまう可能性が高くなる。また撮影環境の明るさや照明の配置などによって撮影画像の輝度分布が大きく変化し、解析精度に影響を及ぼすこともある。このため環境や状況の変化に対し高い頑健性で、撮影画像から正確な情報を取得できる技術が求められている。
[0005]
 本発明はこうした課題に鑑みてなされたものであり、その目的は、撮影画像を用いて、対象物に係る情報を安定した精度で取得できる技術を提供することにある。

課題を解決するための手段

[0006]
 本発明のある態様は情報処理装置に関する。この情報処理装置は、発光マーカーを備えたデバイスを、撮像装置が1フレームの周期より短い露光時間で撮影した動画像のデータを取得する撮影画像取得部と、1フレームの周期を所定数に分割してなる時間を最小単位として所定の点灯/消灯パターンで発光マーカーを発光させるようにデバイスに要求し、それを撮影した動画像の所定数のフレームに当該発光マーカーの像が表れているか否かに基づき、デバイスの時間軸における露光時間を特定する同期処理部と、露光時間に対応する発光時刻で発光マーカーを発光させるようにデバイスに要求する制御情報送信部と、露光時間以下の固定時間で発光時刻に発光する発光マーカーの、動画像のフレームにおける像に基づき、デバイスの位置姿勢情報を取得する位置姿勢取得部と、位置姿勢情報に基づくデータを生成し出力する出力データ生成部と、を備えたことを特徴とする。
[0007]
 本発明の別の態様は情報処理システムに関する。この情報処理システムは、発光マーカーを備えたデバイスと、デバイスを1フレームの周期より短い露光時間で撮影する撮像装置と、撮像装置が撮影した動画像のデータを用いてデバイスの位置姿勢情報を取得する情報処理装置と、を備え、情報処理装置は、1フレームの周期を所定数に分割してなる時間を最小単位として所定の点灯/消灯パターンで発光マーカーを発光させるようにデバイスに要求し、それを撮影した動画像の所定数のフレームに当該発光マーカーの像が表れているか否かに基づき、デバイスの時間軸における露光時間を特定する同期処理部と、露光時間に対応する発光時刻で発光マーカーを発光させるようにデバイスに要求する制御情報送信部と、露光時間以下の固定時間で発光時刻に発光する発光マーカーの、動画像のフレームにおける像に基づき、デバイスの位置姿勢情報を取得する位置姿勢取得部と、位置姿勢情報に基づくデータを生成し出力する出力データ生成部と、を備えたことを特徴とする。
[0008]
 本発明のさらに別の態様は位置姿勢取得用デバイスに関する。この位置姿勢取得用デバイスは、撮像装置が1フレームの周期より短い露光時間で撮影し、情報処理装置が撮影された動画像を用いて位置姿勢情報を取得する対象である、発光マーカーを備えたデバイスであって、情報処理装置からの発光に係る要求を取得する制御情報取得部と、第1の前記要求に従い、1フレームの周期を所定数に分割してなる時間を最小単位として所定の点灯/消灯パターンで発光マーカーを繰り返し発光させるとともに、第2の要求に従い、デバイスの時間軸に対し示された露光時間に対応する発光時刻に、露光時間以下の固定時間で発光マーカーを発光させる制御部と、を備えたことを特徴とする。
[0009]
 本発明のさらに別の態様はデバイス情報取得方法に関する。このデバイス情報取得方法は、発光マーカーを備えたデバイスを、撮像装置が1フレームの周期より短い露光時間で撮影した動画像のデータを取得するステップと、1フレームの周期を所定数に分割してなる時間を最小単位として所定の点灯/消灯パターンで前記発光マーカーを発光させるようにデバイスに要求するステップと、デバイスを撮影した動画像の所定数のフレームに当該発光マーカーの像が表れているか否かに基づき、デバイスの時間軸における露光時間を特定するステップと、露光時間に対応する発光時刻で発光マーカーを発光させるようにデバイスに要求するステップと、露光時間以下の固定時間で発光時刻に発光する発光マーカーの、動画像のフレームにおける像に基づき、デバイスの位置姿勢情報を取得するステップと、位置姿勢情報に基づくデータを生成し出力するステップと、を含むことを特徴とする。
[0010]
 なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、コンピュータプログラム、コンピュータプログラムを記録した記録媒体などの間で変換したものもまた、本発明の態様として有効である。

発明の効果

[0011]
 本発明によると、撮影画像を用いて対象物の情報を安定した精度で取得できる。

図面の簡単な説明

[0012]
[図1] 本実施の形態を適用できる情報処理システムの構成例を示す図である。
[図2] 本実施の形態において情報処理装置が発光デバイスの位置および姿勢を取得する手法を説明するための図である。
[図3] 本実施の形態における撮像装置の露光時間と発光マーカーの発光時間の関係を例示する図である。
[図4] 本実施の形態の発光デバイスにおける発光とIMUセンサによる計測の時間的な関係を例示する図である。
[図5] 本実施の形態における情報処理装置の内部回路構成を示す図である。
[図6] 本実施の形態における発光デバイスの内部回路構成を示す図である。
[図7] 本実施の形態における情報処理装置および発光デバイスの機能ブロックの構成を示す図である。
[図8] 本実施の形態の同期処理部が実施する処理の段階を示す図である。
[図9] 本実施の形態のプレスキャンフェーズにおける発光パターンを模式的に示す図である。
[図10] 本実施の形態のブロードフェーズにおける発光パターンの例を模式的に示す図である。
[図11] 本実施の形態のブロードフェーズにおいて同期処理部が、露光時間に対応する発光デバイスのタイムグリッドを特定する処理手順を示すフローチャートである。
[図12] 本実施の形態のバックグラウンドフェーズにおける同期処理の原理を説明するための図である。
[図13] 本実施の形態のバックグラウンドフェーズにおける発光パターンの例を模式的に示す図である。
[図14] 本実施の形態のバックグラウンドフェーズにおける元の発光時刻と像出現パターンの関係を示す図である。
[図15] 本実施の形態のバックグラウンドフェーズにおいて同期処理部が、発光時刻を露光時間の中間時刻に合わせる処理手順を示すフローチャートである。
[図16] 図15のS40において、発光時刻の識別情報から補正量を取得するために参照する設定情報を例示する図である。
[図17] 本実施の形態における、露光時間の中間時刻に対する発光時刻のずれの偏差の時間変化を例示する図である。
[図18] 本実施の形態のバックグラウンドフェーズにおいて同期処理部が、発光デバイスのクロックを補正する処理手順を示すフローチャートである。
[図19] 本実施の形態において、偏差加算パラメータによって発光デバイスのクロック周波数を補正する手法を説明するための図である。
[図20] 本実施の形態における、情報処理装置と発光デバイスとの協働による露光時間と発光時刻の同期処理のシーケンスを示す図である。

発明を実施するための形態

[0013]
 図1は本実施の形態を適用できる情報処理システムの構成例を示す。この情報処理システム8は、発光デバイス14、当該発光デバイス14を含む空間を撮影する撮像装置12、撮影された画像を解析し情報処理を行う情報処理装置10、情報処理装置10による処理の結果を出力する表示装置16を含む。
[0014]
 この例で発光デバイス14は、Bluetooth(登録商標)など既知の無線通信手段により情報処理装置10と通信を確立する。また撮像装置12および表示装置16と情報処理装置10とは有線により通信を確立する。ただし通信接続の手段をこれに限る主旨ではない。また図示する形態は一例であり、装置の形状や構成を限定するものではない。例えば情報処理装置10と撮像装置12、あるいは情報処理装置10と撮像装置12と表示装置16は、一体的な装置として実現してもよい。
[0015]
 表示装置16は図示するような平板型のディスプレイでなくてもよく、ユーザが装着することによりその眼前に画像を表示するヘッドマウントディスプレイなどでもよい。この場合、当該ヘッドマウントディスプレイに撮像装置12を設け、ユーザの視線に対応する画像を撮影するようにしてもよい。あるいは当該ヘッドマウントディスプレイの外面に発光デバイス14を装着し、撮像装置12で撮影するようにしてもよい。
[0016]
 発光デバイス14は、例えばユーザが把持することにより位置、姿勢、動きなどを、撮影画像を介して入力情報とするための装置である。図示する例では発光デバイス14は、リング状の筐体表面に点状の発光マーカー(例えば発光マーカー6)を多数、配置した構成を有する。発光マーカー6はLED(Light Emitting Diode)など点灯状態と消灯状態を切り替え可能な素子で構成され、その切り替えを情報処理装置10からも制御できるようにする。
[0017]
 なお発光デバイス14の形状や、発光マーカー6の形状、サイズ、数などは図示するものに限らない。例えばユーザが把持できる任意形状の物体に、内部に発光素子を備えた任意形状の発光体を1つまたは複数、接続した構成としてもよい。あるいは一般的なゲームコントローラに発光マーカーを設けた装置を発光デバイス14としてもよい。さらには、ユーザの身体に直接、1つまたは複数の発光デバイス14を取り付けられるようにしてもよい。さらに発光デバイス14は好適には、発光デバイス14自体の角速度や加速度を取得するジャイロセンサおよび加速度センサを内部に備える。以後、これらのセンサを「IMU(Inertial measurement unit)センサ」と総称する。
[0018]
 撮像装置12は、発光デバイス14を含む空間を所定のフレームレートで撮影するカメラと、その出力信号にデモザイク処理など一般的な処理を施すことにより撮影画像の出力データを生成し、情報処理装置10に送出する機構とを含む。カメラはCCD(Charge Coupled Device)センサやCMOS(Complementary Metal Oxide Semiconductor)センサなど、一般的なデジタルビデオカメラで利用されている可視光センサを備える。ただし発光デバイス14の発光マーカー6の像を取得できれば、センサが検出する光の波長帯は限定されない。
[0019]
 また本実施の形態の撮像装置12は、発光マーカー6の発光による像を精度よく検出できるようにするために、露光時間を一般的な撮影条件より短くする。したがって表示画像の生成などの目的で一般的な露光時間の撮影画像が必要な場合は、フレームによって露光時間を変化させてもよいし、別途それ専用の撮像装置を導入してもよい。すなわち情報処理システム8に含まれる撮像装置12の数は限定されない。
[0020]
 また1つの撮像装置12が備えるカメラは1つのみでもよいし、2つのカメラを既知の間隔で左右に配置したいわゆるステレオカメラでもよい。ステレオカメラを導入した場合、左右の異なる視点から発光デバイス14を撮影し、撮影画像上での位置のずれに基づき三角測量の原理で発光デバイス14までの距離を求められる。
[0021]
 情報処理装置10は、撮像装置12から送信された撮影画像のデータを用いて必要な情報処理を行い、画像や音声などの出力データを生成する。本実施の形態において情報処理装置10は少なくとも、撮影画像に写る発光マーカー6の像に基づき、発光デバイス14の位置や姿勢を特定する。発光デバイス14の形状と、その表面における発光マーカー6の位置を既知とすれば、撮影画像上の発光マーカー6の像の分布に基づき発光デバイス14の位置および姿勢を推定できる。発光マーカーを1つの発光体とする場合も、その像のサイズや形状から発光デバイス14の位置などを取得できる。
[0022]
 この処理を撮影画像のフレームごとに繰り返せば、発光デバイス14の動き、ひいてはユーザの動きを特定できるため、それをコマンド入力としてゲームなどの情報処理を実施できる。あるいは撮影画像における発光デバイス14の像を仮想的なオブジェクトに置換した画像や、それが周囲の実物体とインタラクションする様子を表した画像などを生成することもできる。発光デバイス14の位置や姿勢の情報を利用して情報処理装置10が行う処理の内容は特に限定されず、ユーザが求める機能やアプリケーションの内容などによって適宜決定してよい。
[0023]
 表示装置16は、液晶ディスプレイ、有機ELディスプレイなど、画像を表示する一般的なディスプレイと、音声を出力するスピーカーなどで構成され、情報処理装置10が情報処理の結果として生成した画像や音声を出力する。上述のとおり表示装置16はヘッドマウントディスプレイなどでもよく、画像や音声を出力できる装置であればその形態は限定されない。また情報処理装置10が実施した処理の結果を記録媒体や記憶装置に記録したり、図示しないネットワークを介して別の装置に送信したりしてもよい。すなわち情報処理システム8に表示装置16は必須でなく、その替わりとしてそれらの出力機構を設けてもよい。
[0024]
 図2は、本実施の形態において情報処理装置10が発光デバイス14の位置および姿勢を取得する手法を説明するための図である。情報処理装置10は撮像装置12から撮影画像50を所定のレートで取得する。撮影画像50には、既知の色の発光マーカーの像が比較的高い輝度で表れている。したがって情報処理装置10はそのような発光マーカーの像を抽出し、次に示す一般的な変換式を用いて発光デバイス14の3次元空間での位置および姿勢を特定する。
[0025]
[数1]


[0026]
 ここで(u,v)は撮影画像における発光マーカーの像の位置、(f 、f )は撮像装置12の焦点距離、(c 、c )は画像主点、r 11~r 33、t ~t を要素とする行列は回転・並進行列、(X,Y,Z)は、発光デバイス14が基準の位置および姿勢にあるときの発光マーカーの3次元空間での位置である。このうち(u,v)、(f 、f )、(c 、c )、(X,Y,Z)を既知として、複数の発光マーカーについて方程式を解くことにより、それらに共通の回転・並進行列が求められる。この行列によって表される角度および並進量に基づいて、発光デバイス14の位置と姿勢が得られる。この処理を画像解析処理52とする。
[0027]
 一方、情報処理装置10は、発光デバイス14に内蔵されているIMUセンサから、発光デバイス14の角速度、加速度も所定のレートで取得し、それらによっても発光デバイス14の位置や姿勢を取得する。これをセンサ値解析処理54とする。図2には、時間経過に対する発光デバイス14の位置あるいは姿勢の実際の変化と、画像解析処理52およびセンサ値解析処理54による処理の結果を1つのグラフで模式的に示している。このうち発光デバイス14の実際の変化を実線、画像解析処理52により得られる結果を白丸、センサ値解析処理54により得られる結果を点線で示している。
[0028]
 IMUセンサから得られる情報は、発光デバイス14の回転速度および並進の加速度である。したがってセンサ値解析処理54では、前の時刻における位置や姿勢を始点として、速度・加速度の積分演算により得られるそれらの変化量を加算することで、次の時刻の位置や姿勢を算出する。このときの始点として、画像解析処理52の結果を利用できる。ただし撮像装置12による撮影は60Hz(60フレーム/sec)程度であるのに対し、IMUセンサは1600Hzほどの高頻度での計測が可能である。したがって白丸で示した画像解析処理52の結果が離散的であるのに比べ、センサ値解析処理54は点線で示すように格段に短い間隔で位置や姿勢を追跡できる。
[0029]
 ただし速度や加速度を積分演算する性質上、センサ値解析処理54では誤差が蓄積し、実線で示した実際の位置や姿勢から時間経過とともに外れていく傾向となりやすい。そのためカルマンフィルタにより画像解析処理52の結果を統合することで、発光デバイス14の位置や姿勢を連続的に精度よく求める。このように撮像装置12やIMUセンサなど複数のセンサによる解析結果を統合して精度を高める手法はセンサフュージョンとして知られている。
[0030]
 センサフュージョンにおいては、各センサにより値が取得された時刻を共通の時間軸で表す必要がある。本実施の形態の場合、図の横軸である1つの時間軸に対し、画像解析処理52に用いられた画像が撮影された時刻と、センサ値解析処理54に用いられた角速度、加速度が計測された時刻が正確に定まることにより、それらを統合してより高い精度で発光デバイス14の位置や姿勢が得られる。
[0031]
 一方、画像解析処理52の精度を向上させるには、撮像装置12の露光時間と発光マーカーの発光時間をできるだけ短くすることが有効である。すなわち一般的な撮影画像では、発光マーカーの像が他の物の反射光や照明の像と同程度の輝度で表され区別しにくいことがある。また周囲の明るさなどによって区別のしやすさも変化する。露光時間を短くするほど、強く発光している物とそれ以外の物とで像の輝度に差が生じ、結果として高い頑健性で発光マーカーの像を検出できる。
[0032]
 また発光デバイス14は動くことを前提としているため、発光マーカーの発光時間が長いとその像がぶれ、検出しにくくなるうえ、解析に用いる像の位置座標に含まれる誤差が大きくなる。発光時間をできるだけ短くすることで、ぶれの少ない像を撮影できるようにすれば、撮影画像上での位置を高精度に取得でき、解析結果の精度も向上する。また像と時刻との対応が明確になるため上述のセンサフュージョンにおいても有効となる。さらに短時間のみ発光させることにより消費電力を軽減でき、発光デバイス14を電池電源としても長時間の使用が可能になる。
[0033]
 図3は、本実施の形態における撮像装置12の露光時間と発光マーカー6の発光時間の関係を例示している。同図の横軸は時間経過を示し、一点鎖線で区切られた時間がフレームの撮影周期である。例えば60フレーム/secのフレームレートの場合、撮影周期は約16.6msecである。本実施の形態ではこれに対し、各フレームの露光時間60a、60b、60cを500μsec、発光マーカー6の発光時間62a、62b、62cを100μsecなどとする。
[0034]
 ただし露光時間や発光時間は、発光輝度や周囲の明るさなどによって最適化すればよく、具体的な時間を限定するものではない。いずれにしろ、露光時間60a、60b、60cや発光マーカー6の発光時間62a、62b、62cは、撮影画像から像を検出するのに十分な輝度で発光マーカー6が表される限り、極力短くすることが望ましい。定性的には、ある瞬間の発光が像として表れるように発光時間を定め、露光時間をそれ以上とすることが必要条件となる。
[0035]
 さらに図示するように、発光時間62a、62b、62cの全体が露光時間60a、60b、60cに包含されるような時間設定とすることにより、撮影画像において常に同様の輝度で発光マーカー6の像が表れる。例えば露光時間を発光時間の数倍程度とすることにより、発光時刻が多少ずれても像への影響を抑えることができる。
[0036]
 また上述のセンサフュージョンを実現する場合、IMUセンサによる計測時刻と露光時刻の相関を正確に取得できることが望ましい。発光デバイス14と撮像装置12はそれぞれが独自のクロックで動作しているため、本実施の形態では、それらを共通の時間軸に揃えるための制御を行う。具体的にはまず、露光時間60a、60b、60cの基準時刻と発光時間62a、62b、62cの基準時刻を合わせる。
[0037]
 図示する例では、矢印で示すように露光時間60a、60b、60cの中間時刻(全時間の1/2が経過した時刻)を基準とし、発光時間62a、62b、62cの中間時刻をそれに合わせている。以後、発光時間の中間時刻を単に「発光時刻」と呼ぶことがある。このようにすると、発光デバイス14が認識している発光時刻が、すなわち撮影時刻となる。また発光時間62a、62b、62cが多少、前後にずれても露光時間60a、60b、60cから外れにくくなる。
[0038]
 図4は、本実施の形態の発光デバイス14における発光とIMUセンサによる計測の時間的な関係を例示している。同図上段は図3で示した時間軸のうち、1フレーム分の撮影周期における露光時間60aおよび発光時間62aを示している。この撮影周期において、IMUセンサは発光デバイス14の角速度や加速度を高頻度に計測している。同図中段は、上段と同じ時間軸において、発光マーカー6の発光時刻(白丸)と、IMUセンサによる計測時刻(黒丸)を並列に示している。
[0039]
 発光デバイス14はこのような発光時刻と計測時刻を、内部での時間軸に対し取得している。そこで発光デバイス14は図の下段に示すように、IMUセンサによる計測結果および計測された時刻とともに、発光マーカー6を発光させた時刻を情報処理装置10に送信する。図3で示したように発光時刻と露光時間の中間時刻を合わせておくことにより、情報処理装置10では、送信された発光時刻に基づき、画像の撮影時刻と、IMUセンサによる計測時刻を同じ時間軸で表せる。
[0040]
 このような仕組みにより、図2で示したようにセンサ値解析処理54と画像解析処理52を統合でき、発光デバイス14の位置や姿勢を連続的かつ精度よく取得できる。情報処理装置10は、図3で示したように撮影と発光の同期がとれた状態をゲームなどの運用前に達成するとともに、その状態を保つため、運用中においてもバックグラウンド処理としてずれを監視し、必要に応じて修正する。
[0041]
 図5は、情報処理装置10の内部回路構成を示している。情報処理装置10は、CPU(Central Processing Unit)22、GPU(Graphics Processing Unit)24、メインメモリ26を含む。これらの各部は、バス30を介して相互に接続されている。バス30にはさらに入出力インターフェース28が接続されている。入出力インターフェース28には、USBやIEEE1394などの周辺機器インターフェースや、有線又は無線LANのネットワークインターフェースからなる通信部32、ハードディスクドライブや不揮発性メモリなどの記憶部34、表示装置16や発光デバイス14へデータを出力する出力部36、撮像装置12や発光デバイス14からデータを入力する入力部38、磁気ディスク、光ディスクまたは半導体メモリなどのリムーバブル記録媒体を駆動する記録媒体駆動部40が接続される。
[0042]
 CPU22は、記憶部34に記憶されているオペレーティングシステムを実行することにより情報処理装置10の全体を制御する。CPU22はまた、リムーバブル記録媒体から読み出されてメインメモリ26にロードされた、あるいは通信部32を介してダウンロードされた各種プログラムを実行する。GPU24は、ジオメトリエンジンの機能とレンダリングプロセッサの機能とを有し、CPU22からの描画命令に従って描画処理を行い、表示画像を図示しないフレームバッファに格納する。そしてフレームバッファに格納された表示画像をビデオ信号に変換して出力部36に出力する。メインメモリ26はRAM(Random Access Memory)により構成され、処理に必要なプログラムやデータを記憶する。
[0043]
 図6は発光デバイス14の内部回路構成を示している。発光デバイス14は、CPU180、メモリ182、通信部184、IMUセンサ186、LED188、およびクロック発生回路190を含む。CPU180は、発光デバイス14を構成する各回路やその間のデータ伝送を制御する。本実施の形態では特に、情報処理装置10からの要求を受け付け、LED188の点灯/消灯やIMUセンサ186による計測を制御したり、内部のクロックを補正したりする。メモリ182は、CPU180における処理に必要なデータを格納する。本実施の形態では特に、LED188における発光タイミングのパターンや、各種補正値を格納する。
[0044]
 通信部184は、情報処理装置10との間でデータを送受するためのインターフェースであり、Bluetooth(登録商標)などの既知の無線通信技術を用いて実現できる。IMUセンサ186はジャイロセンサおよび加速度センサを含み、発光デバイス14の角速度や加速度を取得する。センサの出力値は通信部184を介して情報処理装置10に送信される。LED188は、所定の色で発光する素子またはその集合であり、図1で示した発光マーカー6を構成する。クロック発生回路190は発光デバイス14のクロックを発生させる回路であり、CPU180の制御によりクロック周波数を補正する機能を有する。
[0045]
 図7は、情報処理装置10および発光デバイス14の機能ブロックの構成を示している。同図に示す各機能ブロックは、ハードウェア的には、図5、6に示したCPU、GPU、メモリなどの構成で実現でき、ソフトウェア的には、記録媒体などからメモリにロードした、データ入力機能、データ保持機能、画像処理機能、入出力機能などの諸機能を発揮するプログラムで実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
[0046]
 情報処理装置10は、発光デバイス14からセンサの計測値や各種時刻に係るデータを取得するデバイスデータ取得部130、撮像装置12から撮影画像のデータを取得する撮影画像取得部132、IMUセンサの計測値と撮影画像を用いて発光デバイス14の位置や姿勢を取得する位置姿勢取得部134、発光デバイス14の位置や姿勢に基づき情報処理を実施する情報処理部136、情報処理の結果を表すデータを生成し出力する出力データ生成部138、撮像装置12の露光と発光デバイス14の発光を同期させる同期処理部140、および発光デバイス14に対し発光や時刻補正に係る制御情報を送信する制御情報送信部142を含む。
[0047]
 デバイスデータ取得部130は図5の入力部38、通信部32、CPU22、メインメモリ26などで実現され、発光デバイス14からIMUセンサ186の計測値、すなわち角速度および加速度を所定のレートで取得する。このとき同時に、各計測値が得られた時刻と、それと並行して発光マーカーを発光させた時刻についても取得する。デバイスデータ取得部130は、取得した情報を位置姿勢取得部134に供給する。撮影画像取得部132は図5の入力部38、CPU22、メインメモリ26などで実現され、撮像装置12が所定のフレームレートで撮影して得た撮影画像のデータを順次取得し、位置姿勢取得部134に供給する。
[0048]
 位置姿勢取得部134は図5のCPU22、GPU24、メインメモリ26などで実現され、撮影画像から発光マーカーの像を検出し、式1により発光デバイス14の位置および姿勢を取得する。位置姿勢取得部134はさらに、IMUセンサが計測した角速度、加速度に基づき積分演算により発光デバイス14の位置および姿勢を取得する。そして図2で説明したように両者の結果を統合することで、位置および姿勢の情報を所定のレートで生成する。このとき位置姿勢取得部134は上述のとおり、IMUセンサ186による計測時刻と発光マーカーの発光時刻、ひいては画像の撮影時刻を同一の時間軸で表すことにより、位置や姿勢の取得精度を向上させる。
[0049]
 情報処理部136は図5のCPU22、メインメモリ26などで実現され、発光デバイス14の位置や姿勢に基づき所定の情報処理を実施する。上述のとおり処理の内容は特に限定されず、ユーザの動きを入力情報としてゲームを進捗させてもよいし、発光デバイス14を仮想のオブジェクトに置き換え物理演算を行うことで拡張現実を実現してもよい。その他、様々な情報処理を実現できることは当業者には理解されるところである。
[0050]
 出力データ生成部138は図5のGPU24、メインメモリ26、出力部36、通信部32などで実現され、情報処理部136による情報処理の結果として出力すべき画像や音声のデータを生成する。生成すべきデータの内容は情報処理の内容によって様々である。画像や音声を生成する場合、出力データ生成部138は生成したデータを所定のレートで表示装置16に出力する。ただし上述のとおり出力先は表示装置に限定されず、記録媒体、記憶装置、ネットワークなどでもよい。
[0051]
 同期処理部140は図5のCPU22、メインメモリ26などで実現され、撮像装置12による撮影と発光マーカー6の発光との同期をとる。すなわち図3で示したように、露光時間の中間時刻と発光マーカー6の発光時刻が合致するように調整処理を行う。具体的には発光マーカー6を時間方向に所定のパターンで発光させ、それが撮影画像にどのように写るかを確認することにより、発光デバイス14内部での時間軸においてどの時刻で発光させるべきかを決定する。
[0052]
 この処理には、少なくとも露光時間内に発光するように露光時間程度の時間単位で評価を行う第1段階と、露光時間の中間時刻と発光時刻を詳細に合わせる第2段階が含まれる。第1段階はゲームなどの運用処理の前に、初期キャリブレーションとして実施する。第2段階は運用時と同じ発光時間で発光させることにより、運用時のバックグラウンド処理として実施できる。当該バックグラウンド処理では、撮像装置12と発光デバイス14のクロックの差によって生じるずれを監視することで、クロックの補正も行う。それぞれの処理の詳細は後に述べる。
[0053]
 制御情報送信部142は図5のCPU22、出力部36、通信部32などで実現され、同期処理部140が同期を実現するのに必要な情報や要求を発光デバイス14に送信する。具体的には発光パターンの指定、発光時刻の補正要求、クロックの補正要求などを送信する。制御情報送信部142はまた、IMUセンサによる計測の開始/停止、撮像装置12による撮影の開始/停止に係る制御情報を発光デバイス14や撮像装置12に送信してもよい。撮像装置12における露光時間はあらかじめ撮像装置12自体に設定しておいてもよいし、制御情報送信部142が指定してもよい。
[0054]
 発光デバイス14は、情報処理装置10から制御情報を取得する制御情報取得部144、制御情報に従い発光、計測、クロックを制御する制御部146、LED188を発光させる発光部148、角速度や加速度を計測する計測部150、および、計測値など必要なデータを情報処理装置10に送信するデータ送信部152を含む。制御情報取得部144は、図6の通信部184、CP1U80などで実現され、情報処理装置10から送信された制御情報を取得する。
[0055]
 制御部146は図6のCPU180、メモリ182、クロック発生回路190などで実現され、当該制御情報に従い発光部148や計測部150を作動させるとともに、クロックを発生させる。情報処理装置10からの制御情報には、点灯/消灯の時間変化を表す発光パターンを指定する識別情報が含まれる。したがって制御部146は当該識別情報と発光パターンを対応付けた情報を内部で保持する。
[0056]
 制御情報にはこのほか、発光時刻の補正値、発光の開始/停止、発光輝度、発光色、IMUセンサによる計測の開始/停止など各種情報を含んでよい。制御部146はそれらの情報に応じて、発光部148、計測部150を適宜作動させる。また制御情報にクロックの補正要求が含まれるとき、制御部146は内部で発生させているクロックの周波数を補正する。
[0057]
 発光部148は図6のLED188で実現され、制御部146による制御のもと、指定されたパターンあるいはタイミングで素子を発光させる。計測部150は図6のIMUセンサ186で実現され、制御部146による制御のもと、所定の頻度で発光デバイス14の角速度、加速度を計測する。データ送信部152は図6のCPU180、メモリ182、通信部184などで実現され、計測部150が計測した角速度、加速度の値を、計測された時刻とともに順次、情報処理装置10に送信する。データ送信部152はさらに、発光部148において発光がなされた時刻も順次、情報処理装置10に送信する。
[0058]
 以下、発光デバイス14との協働によって情報処理装置10の同期処理部140が実施する同期処理の内容について詳述する。図8は、同期処理部140が実施する処理の段階を示している。同期処理は図示するようにプレスキャンフェーズ(S10)、ブロードフェーズ(S12)、バックグラウンドフェース(S14)なる3段階の処理で構成する。プレスキャンフェーズおよびブロードフェーズはゲーム処理などの運用の前に実施する。このうちプレスキャンフェーズは発光デバイス14の検出を目的とする。そのため発光マーカー6は全期間で点灯させる。
[0059]
 ブロードフェーズは、プレスキャンフェーズにおいて検出された発光デバイス14の発光時刻を、露光時間に大まかに合わせることを目的とする。そのため時間を露光時間程度のタイムグリッドに分割し、それぞれに対し設定された点灯/消灯のパターンに従うように発光マーカー6を発光させる。発光パターンは複数フレーム分の時間にわたり設定しておく。これにより、発光マーカー6の像が写っている/写っていない、という2つの状態が時間方向にどのように変化するかによって、露光時間に合った発光時刻の範囲を特定する。
[0060]
 バックグラウンドフェーズは運用前から運用時にかけて、定期的に発光時刻のずれを厳密に確認し、必要に応じて発光時刻や発光デバイス14のクロック周波数を修正することを目的とする。そのためブロードフェーズのタイムグリッドより短い、運用時の発光時間で、発光時刻を意図的にずらしていき、撮影画像に写っている状態/写っていない状態の遷移のタイミングを取得することで、元の発光時刻の、露光時間の中間時刻に対するずれを求める。そしてずれを解消するように発光時刻を補正する。また単位時間あたりのずれの発生量に基づき、それを解消する方向にクロック周波数を補正する。
[0061]
 ブロードフェーズにおいて発光マーカー6の像が所定時間得られない状態となったらプレスキャンフェーズに戻り、発光デバイスの検出から実施する。バックグラウンドフェーズにおいて有効なずれ量が得られない状態となったら、ブロードフェーズに戻って発光時刻の大まかな合わせ込みからやり直す。このように複数のフェーズに分け、それに適したパターンで発光させることにより、効率的に同期をとることができるとともに、運用時にも常時監視を実現できる。
[0062]
 図9は、プレスキャンフェーズにおける発光パターンを模式的に示している。同図に示す矩形は横方向の長さが1フレーム分の撮影周期を示している。基本的にはこの時間を所定時間のタイムグリッドに分割し、この単位で発光デバイスを点灯させたり消灯したりする。例えばフレームレートが60フレーム/secの場合、撮影周期は16.6msecである。これを32分割すると1タイムグリッドは521μsecとなる。上述のとおり露光時間を500μsecとした場合、それと同程度のタイムグリッドとすることで、露光時間と発光時間の粒度を揃えられ、発光時間が露光時間と重なっているか否かといった大まかな判定を行える。
[0063]
 ただしプレスキャンフェーズにおいては、撮像装置12の視野に存在する発光デバイス14を検出することを目的とするため、PWM(Pulse Width Modulation)制御により全タイムグリッドにおいて点灯状態とする。同図ではタイムグリッドを塗りつぶしとすることで点灯状態であることを示している。プレスキャンフェーズでは、同期処理部140は撮影画像取得部132から撮影画像を取得し、発光マーカー6の像を検出することで、視野内に発光デバイスが存在することを確認する。全期間で発光マーカーを点灯させることにより、500μsecの短時間の露光でも、発光デバイス14が視野に存在する限りその像は検出される。
[0064]
 発光デバイス14の存在を確認できたらブロードフェーズに移行する。図10はブロードフェーズにおける発光パターンの例を模式的に示している。図の表し方は図9と同様である。ただしこのフェーズでは、複数フレームに渡り発光パターンを設定するため、フレームごとの変化を縦方向に示している。同図の場合、フレーム0からフレーム10までの11フレームで1つの発光パターンを構成している。
[0065]
 すなわち発光マーカー6は、当該発光パターンでの発光を11フレーム単位で繰り返す。撮像装置12は運用時と同様、各フレームの撮影周期において、所定のタイミングで短時間(例えば500μsec程度)の露光を繰り返す。例えば露光時間が、タイムグリッド「2」に対応する実線の矩形70aの時間に設定されているとする。この場合、最初の5フレーム(フレーム0~4)までは発光マーカー6が消灯しているためその像は写らない。次のフレーム5では全期間点灯しているため、矩形70aの露光時間においても発光マーカー6の像が写る。
[0066]
 次の3フレーム(フレーム6~8)ではそのタイミングで発光マーカー6が消灯しているため像は写らず、さらに次の2フレーム(フレーム9、10)では点灯しているため発光マーカー6の像が写る。連続した11フレーム中で発光マーカー6の像が写っているフレームを「1」、写っていないフレームを「0」と表すと、矩形70aに対応する露光時間ではフレーム0から順に、{0,0,0,0,0,1,0,0,0,1,1}なる数列となる。以後、このような数列を「像出現パターン」と呼ぶ。
[0067]
 なお像露光時間が点灯時間と消灯時間をまたいでいるときは、露光時間中の点灯時間によって像の輝度が様々となる。そこで当該輝度にしきい値を設け、それ以上であれば「写っている」、しきい値未満であれば「写っていない」と判定する。また発光マーカーを複数とする場合、そのうち1つでも写っていれば「写っている」としてもよいし、しきい値以上の数が写っているときに「写っている」としてもよい。
[0068]
 それらの基準の組み合わせにより、写っていることと写っていないことを「1」と「0」の2値で表す。類似の手法は、画像解析により物体の有無を検出するブロブ検出として知られている。ただし本実施の形態では、発光マーカーの消灯を意図的に作り出しているため、「写っていない」ことをエラーとせずに像出現パターンの取得を続行する。
[0069]
 図示するように全てのタイムグリッドで、異なる像検出パターンが得られるように発光パターンを設定すれば、発光デバイス14のタイムグリッドと露光時間との関係が得られることになる。なお最初の5フレーム分の期間を全て消灯とし次の1フレーム分の期間を全て点灯としているのは、1単位の発光パターンを前後の発光パターンと区別するためである。この期間をシンクパターン72と呼ぶ。したがって実際には、撮影画像を連続して取得していき、シンクパターン72の{0,0,0,0,0,1}なる像出現パターンが得られたら、次の5フレーム分の像出現パターンに基づき、発光デバイス14のタイムグリッドと露光時間との関係を特定する。
[0070]
 シンクパターン72に続く発光パターンは上述のとおり、あるタイムグリッドにおける発光パターンが他のタイムグリッドと一致しないように設定するとともに、前後のタイムグリッドで点灯/消灯を変化させるのは1フレームのみとする。例えば矩形70aのタイムグリッド(タイムグリッド「2」)を基準にすると、その前のタイムグリッド「1」からフレーム9のみが、消灯から点灯になっている。またその後のタイムグリッド「3」ではフレーム10のみが点灯から消灯になっている。
[0071]
 このように点灯状態と消灯状態を徐々に変化させていく発光パターンとすることで、露光時間が2つのタイムグリッドにまたがっていても、誤差は高々1タイムグリッドとなる。例えば露光時間が、矩形70aから250μsec程度遅れた破線の矩形70bのタイミングにあった場合、シンクパターンの後の像出現パターンは{0,0,0,1}まで変わらず、遅延の程度によって最後の値のみが0から1までの中間値になる。ブロブ検出によりしきい値判定すれば数値としては1または0になるが、どちらにしろそのような数列になるのは、連続した2つのタイムグリッドに限られるため、ほぼ誤差なく露光時間を特定できることになる。このようなパターンの特徴は、デジタル回路で数値を表すのに用いられるグレイコードと同様である。
[0072]
 なお図示した発光パターンは一例であり、タイムグリッドごとに異なる像出現パターンが得られ、かつ前後のタイムグリッドで1フレームのみ点灯/消灯が変化する限り、どのような発光パターンとしてもよい。またタイムグリッドの細かさも露光時間に合わせて適宜調整してよい。定性的にはタイムグリッドの数が増えるほど、1単位の発光パターンに必要なフレーム数が増加する。
[0073]
 図11は、ブロードフェーズにおいて同期処理部140が、露光時間に対応する発光デバイス14のタイムグリッドを特定する処理手順を示すフローチャートである。このフローチャートは、制御情報送信部142が発光デバイス14にブロードフェーズ用の発光パターンで発光するよう要求し、それに応じて発光マーカー6が図10で示したようなパターンで繰り返し発光している様子を撮像装置12が短時間の露光で撮影している状態で開始される。
[0074]
 また同期処理部140は撮影画像のデータを取得し、発光マーカーの像を検出する処理を並行して実施している。露光時間を短くすることにより、露光時間中に発光があれば発光マーカーの像を容易に検出できる。その状態で、シンクパターンと合致する像出現パターンが得られるまで像の検出処理を繰り返す(S20のN)。そのようなパターンが検出されたら(S20のY)、次のフレームから、タイムグリッドを特定するための像出現パターンを取得していく(S22)。
[0075]
 1単位の発光パターン分のフレーム撮影が終了した時点で、像出現パターンが、あらかじめ判明しているタイムグリッドごとの発光パターンのバリエーションのいずれかに合致していたら(S24のY)、当該パターンに対応するタイムグリッドに露光時間が重なっていることが判明する(S26)。したがって同期処理部140は、当該タイムグリッド中に発光するように制御情報を生成し、制御情報送信部142を介して発光デバイス14に送信することで、およその発光時間帯を設定する(S28)。
[0076]
 S24において像出現パターンが、設定されたタイムグリッドごとの発光パターンのいずれにも合致しなかった場合、シンクパターンの検出からやり直す(S24のN)。なおS20からS26の処理を複数回繰り返し、得られた結果のうち最も頻度が高い結果、あるいは最初に所定回数に到達した結果などを、露光時間に対応するタイムグリッドの最終値として決定することにより精度を高めてもよい。また所定時間、結果が得られなければ、プレスキャンフェーズに戻り発光デバイスの検出からやり直す。
[0077]
 ブロードフェーズにより露光時間と同程度の粒度で、発光すべき時間帯を決定できる。これにより少なくとも露光時間と発光の同期はとれるため、発光マーカーの像が撮影画像に写ることは保証される。センサフュージョンなどの目的で厳密に時刻を合わせる必要がない場合などは、次のバックグラウンドフェーズを省略し、定期的にブロードフェーズを実施するようにしてもよい。ただしバックグラウンドフェーズにより発光時刻を露光時間の中間時刻に合わせておくことにより、クロックの差による発光時刻のずれに対する頑健性を高めることができる。
[0078]
 図12はバックグラウンドフェーズにおける同期処理の原理を説明するための図である。同図は横軸を時間経過とし、実線矩形が1フレームの露光時間80、破線矩形が発光マーカー6の発光時間(例えば発光時間82)を示す。ただし発光時間は、複数フレーム分のものを同時に表している。バックグラウンドフェーズは運用時に実施することを基本とするため、発光時間82も運用時の短い発光時間(例えば100μsec)である。上述のとおりバックグラウンドフェーズは、発光時刻を露光時間の中間時刻に厳密に合わせる処理である。
[0079]
 ブロードフェーズによって、発光デバイス14の時間軸において500μsec程度の分解能で、露光時間80に対応するタイミングが判明するが、発光時間をそれより短くしたとき、露光時間の中間時刻からずれた発光となってしまう可能性がある。また装置ごとのクロック周波数のずれによって、時間経過とともに両者の時刻が相対的にずれていくことが考えられる。
[0080]
 図示する例では、発光時間82の中間時刻T が、露光時間80の中間時刻T より早くなっている。そこでこの時間的なずれ量dを求め、設定されている発光時刻に加算することで、発光時間の中間時刻T を露光時刻T に合わせる。これを目的として、同期処理部140は発光時刻を故意にずらしていき、撮影画像に発光マーカー6が写っている状態と写っていない状態の間の遷移が生じるタイミングを取得する。
[0081]
 図に当てはめると、発光マーカー6の発光時間82が露光時間80に含まれている間はその像が撮影画像に表れ、発光時間82が露光時間80から外れると、像が表れなくなる。発光時刻を徐々にずらしていき、露光時間80から外れるまでの時間が短いほど、元の発光時刻が、露光時間中でずらした方向に寄っていることになる。図示する例では、発光時間82を白抜き矢印のように早めていくと、比較的早く露光時間80から外れ撮影画像に像が写らなくなる。元の発光時刻T のずれ量dは、写らなくなるまでの時間、フレームごとの発光時刻のずらし量、および露光時間80から求められる。
[0082]
 図13はバックグラウンドフェーズにおける発光パターンの例を模式的に示している。図の表し方は図10と同様である。ただし横軸の時間幅は1フレーム分の時間より短く、例えば1100μsec程度である。バックグラウンドフェーズでは上述のとおり、露光時間に対し発光時間が外れたり入ったりするタイミングに着目しているため、白抜き矢印で示した設定中の発光時刻を中心として、露光時間の2倍程度の時間幅で発光時刻をずらしていけば十分となる。また外れている状態が長くならないようにすることで、発光デバイス14の位置や姿勢の追跡精度を落とさないようにしている。図12のように発光時刻が露光時間の中間時刻より前にずれているケースでは、露光時間は例えば矩形86の範囲となる。
[0083]
 また発光時間を短時間とすると、ずれ量dの検出誤差もその粒度に抑えられる。例えば図示するように発光時間を100μsecとすると、検出誤差は±100μsecの範囲に収まる。図示する例では、フレーム0からフレーム26までの27フレームで1つの発光パターンを構成している。発光マーカー6は、当該発光パターンでの発光を27フレーム単位で繰り返す。
[0084]
 ブロードフェーズと同様の目的で、最初の7フレーム(フレーム0~6)にシンクパターン88を設ける。この例では、発光マーカー6が点灯、消灯を繰り返すパターンとしている。ブロードフェーズでの調整によって、設定されている発光時刻は露光時間に入っているため、シンクパターン88では設定されている時刻からずらすことなく発光させる。そしてシンクパターン88の期間の次のフレーム(フレーム7)から、所定時間ずつ発光時刻をずらしていく。図示する例では、50μsecずつ早めている。
[0085]
 そして発光時刻のずらし量が所定の上限時間に達したら、それまでずらしていたのと逆方向に所定の上限時間だけずれた時刻で発光させる。図示する例では、10フレーム(フレーム7~16)かけて500μsecまで発光時刻を早めたら、次のフレーム(フレーム17)では、元の設定時刻より500μsec遅い時刻に発光させている。その後は同様に所定時間ずつ発光時刻をずらしていき、元の発光時刻の1つ手前で、1単位の発光パターンの終点とする(フレーム18~26)。
[0086]
 このようなパターンでの発光を、矩形86の露光時間で撮影すると、シンクパターン88の後における像出現パターンは{1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1}となる。すなわち発光時間がフレーム11で露光時間から外れ、フレーム20で再び露光時間に入るため、フレーム11~19の期間で像が写らないことになる。このような像出現パターンは、露光時間に対する元の発光時刻に依存して変化する。
[0087]
 図14は、バックグラウンドフェーズにおける元の発光時刻と像出現パターンの関係を示している。図13で示した発光パターンによれば、元の発光時刻と露光時間との時間的な関係によって、21通りの像出現パターンがある。ただし露光時間と発光時間の長さや1回のずらし量によって像出現パターンのバリエーションも様々となる。元の発光時刻が露光時間の中間時刻に合っていれば、発光時間が露光時間から外れるまでのフレーム数と、再び露光時間に入って元に戻るまでのフレーム数が均等になるため、「position10」のパターンがそれに該当する。
[0088]
 図13で矩形86に露光時間がある場合は「position13」のパターンに該当する。したがって図示するようなデータを準備しておくことにより、実際の像出現パターンに基づき、露光時間に対する元の発光時刻を、50μsec程度の粒度で求めることができる。
[0089]
 図15は、バックグラウンドフェーズにおいて同期処理部140が、発光時刻を露光時間の中間時刻に合わせる処理手順を示すフローチャートである。このローチャートは、制御情報送信部142が発光デバイス14にバックグラウンドフェーズ用の発光パターンで発光するよう要求し、それに応じて発光マーカー6が図13で示したようなパターンで繰り返し発光している様子を、撮像装置12が短い露光時間で撮影している状態で開始される。
[0090]
 また同期処理部140は撮影画像のデータを取得し、発光マーカーの像を検出する処理を並行して実施している。さらに情報処理装置10の位置姿勢取得部134は検出された像やIMUセンサの計測値などに基づき発光デバイス14の位置や姿勢を取得し、情報処理部136がそれに基づき適宜情報処理を行っていてよい。その状態で、シンクパターンと合致する像出現パターンが得られるまで像の検出処理を繰り返す(S30のN)。シンクパターンが検出されたら(S30のY)、次のフレームから、露光時間に対する発光時刻を特定するための像出現パターンを取得していく(S32)。
[0091]
 1単位の発光パターン分のフレーム撮影が終了した時点で、像出現パターンが、図14で示したような想定されるパターンのいずれにも合致していなければ、シンクパターンの検出からやり直す(S34のN)。像出現パターンが、想定されるパターンのいずれかに合致していたら(S34のY)、図14の「position13」ように、当該パターンに対応づけられている、元の発光時刻を示す識別情報を取得する(S36)。
[0092]
 所定回数連続で、同じ結果が得られるまでS30からS36の処理を繰り返す(S38のN)。所定回数連続で同じ結果が得られたら(S38のY)、その発光時刻に対応する補正量を取得する(S40)。例えば図14で得られた「position13」に基づき、図12で示した時間のずれ量dを補正量として取得する。そのため発光時刻の識別情報と補正量とを対応付けたテーブルまたは変換規則をあらかじめ準備しておく。取得した補正量が、補正の必要があることを示している場合は(S42のY)、当該補正量を元の発光時刻の設定に加算することで発光時刻を補正する(S44)。
[0093]
 補正の必要がない場合は、発光時刻の設定はそのままとする(S42のN)。図示する処理手順を、運用処理のバックグラウンド処理として定期的に繰り返すことにより、発光時刻を常時、露光時間の中間時刻に一致させることができる。図16は、図15のS40において、発光時刻の識別情報から補正量を取得するために参照する設定情報を例示している。補正量テーブル90は、発光時刻の識別情報(発光時刻ID)と補正すべき時間(補正量)との対応づけを示す。補正量は像出現パターン、露光時間、発光時間、1回あたりのずらし量から導出できるため、事前に計算しておく。
[0094]
 図14に示した例では、発光時刻が21通り定義される。したがって補正量テーブル90も、21個の識別情報に対し補正量を設定する。図示する例では、露光時間の1/5(=発光時間)を1単位として補正量を示している。図13で示したように、発光時間の1回あたりのずらし量が発光時間の1/2の場合、補正量は図16に示すように0.5の粒度で設定できる。この粒度での補正によれば、上述のとおり当初の発光時刻が露光時間の中間時刻に合っている状態の「position10」以外に、その前後に位置する「position9」、「position11」も補正量は「0」となり、補正の必要がない。
[0095]
 「position10」から離れるほど補正量は大きくなり、最大で±2.5となる。元の設定時刻に正の補正量を加算すると設定時刻が遅くなり、負の補正量を加算すると設定時刻が早くなる。例えば図13の例は「position13」に該当するため、ずれ量d=0.5×発光時間だけ設定時刻を遅くすることにより、発光時刻が露光時間の中間時刻とほぼ合致するようになる。発光時間を100μsecとすると、発光時刻を50μsec遅くする補正となる。
[0096]
 このような調整によっても、撮像装置12と発光デバイス14のクロック周波数に微小な差があることにより、露光時間の中間時刻と発光時刻が徐々にずれていくことが考えられる。逆に、そのようなずれの時間変化を観測すればクロック周波数の差がわかるため、周波数自体を人工的に補正することによりずれの増加速度を抑え込むことができる。
[0097]
 図17は、露光時間の中間時刻に対する発光時刻のずれの偏差の時間変化を例示している。ここで偏差Dは、図15のフローチャートでのループにおいて、i回目のS40で取得された補正量すなわち露光時間の中間時刻からのずれ量d を累積加算した値であり、次の式で定義される。
[0098]
[数2]


[0099]
 上述した補正によって実際のずれ量は定期的に0に戻るが、取得されたずれ量d を加算した偏差Dは、クロック周波数の差により単調増加あるいは単調減少していく。つまり図示するような秒オーダーの時間経過を考えると、偏差は線形に変化し、その傾きがクロック周波数の差を表す。そこで、例えば期間Aにおいて偏差の傾きが得られたら、これを解消する方向にクロック周波数を補正する。これにより期間Bに示すように偏差の傾きが変化する。
[0100]
 そして期間Bにおいても偏差の傾きが得られたら、その傾きが解消するように再度クロック周波数を補正する。次の期間Cにおいても同様の処理を繰り返すことにより、偏差の時間変化が徐々に小さくなる。このようにして、点線で示した偏差92のように、傾きが0の理想的な状態に近づけていく。発光デバイスの元々のクロックを人工的に補正することにより、露光時間の中間時刻と発光時刻がほぼ一致した状態を長期間維持できるようになる。
[0101]
 図18は、バックグラウンドフェーズにおいて同期処理部140が、発光デバイス14のクロックを補正する処理手順を示すフローチャートである。このフローチャートは、図15で示した発光時刻の調整処理と並行して実施する。ただし実施頻度は異なっていてよい。まず図17で示したように時間tに対し偏差Dをプロットしていき、両者の相関係数rを次のように求める(S50)。
[0102]
[数3]


[0103]
 バー付きのt、Dはそれぞれの平均値である。相関係数rの絶対値が0.99より大きいなど、相関があることを示す所定の基準を満たしていなければ(S52のN)、偏差Dのプロットと相関係数rの取得を継続する(S50)。相関があることを示す所定の基準を満たしたら(S52のY)、その傾きAを求める(S54)。この処理は実際には、直前の所定期間における傾きaを次のように回帰解析により求め、その前までに求められた傾きAに加算する処理となる。
[0104]
[数4]


[0105]
 そのように得られた傾きAを用いて、偏差加算パラメータmおよびnを次のように求め、発光デバイス14に制御情報として送信することで設定値を更新する(S56)。なおパラメータmの分子は時間の単位をsecからμsecに換算するためのものである。また偏差加算パラメータm、nは、n/m=A・10 -6により、単位時間当たりのクロックの補正量(補正時間)を与えるパラメータである。
[0106]
[数5]


[0107]
 図19は、偏差加算パラメータm、nによって発光デバイス14のクロック周波数を補正する手法を説明するための図である。発光デバイス14の制御部146は、発振器からのクロック周波数を補正する補正回路を備える。補正回路自体は一般的な構造でよい。図示するグラフにおいて横軸は実時間、縦軸は発光デバイス14のクロックである。また一点鎖線94はクロックの初期状態である。
[0108]
 発光デバイス14の制御部146は、情報処理装置10から送信された偏差加算パラメータm、nに基づき、時間mの経過ごとにnだけ時間を加算するようにクロックを補正する。図示する直線96のように、nが正であれば図示するようにクロックが速まる。負であればクロックが遅くなる。これによりn/m=A・10 -6だけ傾きが変化するため、原理的には図17で示した偏差の変化が解消されることになる。ただしこのような補正によっても誤差が含まれるため、偏差加算パラメータm、nを随時求め更新することで漸次的に偏差を抑え込んでいく。
[0109]
 実験によれば、偏差加算による補正処理を導入することにより、発光時間が露光時間を外れるまでの時間を大幅に延長させることができた。発光時刻の契機はタイマー割り込みによりμsecオーダーとなるが、図示したクロック補正によれば、発光時刻をより細かい単位で制御できる。
[0110]
 図20は、情報処理装置10と発光デバイス14との協働による、露光時間と発光時刻の同期処理のシーケンスを示している。まずプレスキャンフェーズにおいて情報処理装置10は発光デバイス14に対し、プレスキャンフェーズの発光パターンでの発光命令を送信する(S100)。これに応じて発光デバイス14は、図9で示したプレスキャンフェーズの発光パターン、すなわち全期間において発光マーカーを発光させる(S102)。情報処理装置10は、その様子を撮影した画像を用いて発光デバイス14を検出する(S104)。
[0111]
 発光デバイスを検出できたらブロードフェーズに移行し、情報処理装置10は、ブロードフェーズの発光パターンでの発光命令を送信する(S106)。これに応じて発光デバイス14は、図10で示したようなパターン、すなわち露光時間程度の比較的大きな時間を最小単位として点灯/消灯を繰り返すパターンで発光マーカーを発光させる(S108)。情報処理装置10は、その様子を撮影した画像を用いて、発光デバイス14のクロック(時間軸)での、露光時間に対応するタイムグリッドを検出する(S110)。
[0112]
 当該タイムグリッドを検出できたら、バックグラウンドフェーズに移行し、情報処理装置10は、バックグラウンドフェーズの発光パターンでの発光命令を送信する(S112)。これに応じて発光デバイス14は、図13で示したようなパターン、すなわち運用に好適な短時間での発光を、フレームごとに時刻をずらしながら繰り返すパターンで発光マーカーを発光させる(S114)。S112の命令において、ブロードフェーズで検出した、露光時間に対応するタイムグリッドの識別情報を指定することにより、発光デバイス14では少なくとも露光時間内に発光時刻を設定できる。
[0113]
 当該設定時刻を基点として発光時刻をずらしていく様子を撮影した画像を用いて、情報処理装置10は、上述のとおり露光時間の中間時刻からの設定のずれを検出する(S116)。そして必要に応じて、設定時刻を補正するためのリフレッシュ命令を発光デバイス14に送信する(S118)。また情報処理装置10は、得られたずれ量を加算していくことで偏差の時間変化を取得する(S120)。そして偏差加算パラメータm、nを含む偏差補正命令を発光デバイス14に送信する(S122)。
[0114]
 発光デバイス14側では、送信されたリフレッシュ命令や偏差補正命令に従い、発光時刻の設定を補正したり内部のクロックを補正したりする(S124)これにより、露光時間の中間時刻に発光時刻を同期させた状態を定常的に作り出せる。上述のとおり発光時刻が露光時間から外れるまでの時間が長期化することにより、発光デバイス14が例えば数分間、撮像装置12の視野外に出たとしても、再度視野に入ったときの発光を確実に撮影でき、発光デバイス14を見失う確率を格段に減らすことができる。
[0115]
 なおクロック周波数は装置固有のため、周波数の差、ひいては偏差加算パラメータm、nに類するデータを一旦、取得しておけば、同じ撮像装置12と発光デバイス14の組み合わせであれば、そのデータを用いて適切にクロックの補正を行える。この場合、バックグラウンドフェーズにおける偏差に係る補正処理を省略できる。
[0116]
 例えば撮像装置12と発光デバイス14の固体識別情報の組み合わせと、偏差加算パラメータとを対応づけたテーブルを同期処理部140に準備しておく。そして実際に接続された撮像装置12および発光デバイス14の固体識別情報に基づき偏差加算パラメータを読み出すようにすれば、運用時に当該パラメータを導出する必要なく補正でき、同期状態を容易に維持できる。
[0117]
 以上述べた本実施の形態によれば、撮影画像から発光マーカーの像を抽出することにより、発光マーカーを備えたデバイスの3次元での位置や姿勢を取得する技術において、撮像装置の露光時間と発光マーカーの発光時間を短縮する。これにより、撮影画像において発光マーカーの像の輝度を際立たせることができるため、周囲の照明や強めの反射光であっても発光マーカーと誤認する可能性が低くなる。またデバイスに動きがあっても発光マーカーの像のぶれを抑えられるため、位置と時刻の対応を明確にできる。さらにマーカーを発光させるための消費電力を抑えることができ、電池電源としても長期間の使用に対応できる。
[0118]
 また、特有の発光パターンで点灯/消灯するマーカーを撮影した結果を解析することにより、個別の時間軸で動作している撮像装置の露光時間とデバイスの発光時間を、その中心時刻が合うように調整する。これにより、発光を短時間としてもその像を確実に撮影できる。また発光時刻を、画像が撮影された時刻として扱うことができるため、同じデバイス内部に備えられたIMUセンサの計測時刻と撮影時刻を同じ時間軸で特定できる。結果として、画像解析により得られる情報とIMUセンサの計測値から得られる情報を精度よく統合でき、最終的に得られる位置や姿勢の精度を向上させることができる。
[0119]
 上述の調整にあたって、発光マーカーを全期間点灯させてデバイスを検出するフェーズ、露光時間程度の単位で点灯/消灯させ、発光時間を露光時間内に収めるフェーズ、および、最適な発光時間でその中間時刻を露光時間の中間時刻に合わせるフェーズを設ける。このようにフェーズを分けることにより、最後のフェーズはデバイスの位置や姿勢の取得処理と並行して実施できるため、本来の情報処理を妨げることなく定常的かつ長期的な監視および調整が可能となる。したがって、装置固有のクロックの偏差を長期的に評価し、適応的に時間ずれの蓄積を解消でき、補正処理の頻度を抑えても同期状態を長期間にわたり維持できる。
[0120]
 以上、本発明を実施の形態をもとに説明した。上記実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
[0121]
 例えば本実施の形態では、ブロードフェーズの発光を点灯および消灯の2つの状態とし、像出現パターンを表す数値を0または1の2階調としたが、発光輝度を複数段階とすることにより、当該数値を、輝度に応じて3階調以上としてもよい。露光時間に対応するタイムグリッドを識別するには、像出現パターンを表す数列がタイムグリッドごとに完全に異なっている必要があるため、タイムグリッドの分割数が増えれば、それらを識別するために必要なフレーム数が増えることになる。数列を3階調以上で表すことにより、少ないフレーム数でタイムグリッドの識別が可能になり、ブロードフェーズを短期化できる。

産業上の利用可能性

[0122]
 以上のように本発明は、ゲーム装置、コンテンツ処理装置、画像解析装置、対象物認識装置などの情報処理装置、入力デバイス、コントローラ、およびそれらを含むシステムなどに利用可能である。

符号の説明

[0123]
 6 発光マーカー、 10 情報処理装置、 12 撮像装置、 14 発光デバイス、 16 表示装置、 22 CPU、 24 GPU、 26 メインメモリ、 130 デバイスデータ取得部、 132 撮影画像取得部、 134 位置姿勢取得部、 136 情報処理部、 138 出力データ生成部、 140 同期処理部、 142 制御情報送信部、 144 制御情報取得部、 146 制御部、 148 発光部、 150 計測部、 152 データ送信部、 186 IMUセンサ、 188 LED。

請求の範囲

[請求項1]
 発光マーカーを備えたデバイスを、撮像装置が1フレームの周期より短い露光時間で撮影した動画像のデータを取得する撮影画像取得部と、
 前記1フレームの周期を所定数に分割してなる時間を最小単位として所定の点灯/消灯パターンで前記発光マーカーを発光させるように前記デバイスに要求し、それを撮影した動画像の所定数のフレームに当該発光マーカーの像が表れているか否かに基づき、前記デバイスの時間軸における前記露光時間を特定する同期処理部と、
 前記露光時間に対応する発光時刻で前記発光マーカーを発光させるように前記デバイスに要求する制御情報送信部と、
 前記露光時間以下の固定時間で前記発光時刻に発光する前記発光マーカーの、前記動画像のフレームにおける像に基づき、前記デバイスの位置姿勢情報を取得する位置姿勢取得部と、
 前記位置姿勢情報に基づくデータを生成し出力する出力データ生成部と、
 を備えたことを特徴とする情報処理装置。
[請求項2]
 前記同期処理部は、連続した所定数のフレームに対応する時間における前記点灯/消灯パターンが、前記周期を所定数に分割してなるタイムグリッドごとに異なるように前記発光マーカーを発光させることにより、前記動画像のうち前記所定数のフレームにおいて前記発光マーカーの像が表れているか否かのパターンに基づき、前記露光時間に対応する前記タイムグリッドを特定し、
 前記制御情報送信部は、特定された前記タイムグリッドの識別情報を送信することにより、前記露光時間内で前記発光マーカーを発光させるように前記デバイスに要求することを特徴とする請求項1に記載の情報処理装置。
[請求項3]
 前記同期処理部は、隣り合う前記タイムグリッドにおいて、点灯/消灯の変化が前記所定数のフレームのうち1つのフレームに対応する時間内でのみ生じるような前記点灯/消灯パターンで、前記発光マーカーを発光させることを特徴とする請求項2に記載の情報処理装置。
[請求項4]
 前記同期処理部は、設定中の発光時刻を始点として、前記周期ごとに発光時刻を所定時間だけずらしながら前記固定時間で前記発光マーカーを発光させることにより、前記動画像のうち連続したフレームにおいて少なくとも前記発光マーカーの像が表れなくなるタイミングに基づき、前記露光時間に対する前記設定中の発光時刻を特定し、
 前記制御情報送信部は、前記発光時刻と前記露光時間の中間時刻とのずれ量を前記デバイスに送信することにより、当該中間時刻に一致するように前記発光時刻を補正させることを特徴とする請求項1から3のいずれかに記載の情報処理装置。
[請求項5]
 前記同期処理部は、前記ずれ量を累積加算してなる、前記露光時間に対する前記発光時刻の偏差の時間変化に基づき、単位時間当たりのクロックの補正量を取得し、
 前記制御情報送信部は、前記補正量を前記デバイスに送信することにより、クロックを補正させることを特徴とする請求項4に記載の情報処理装置。
[請求項6]
 前記デバイスが内蔵するIMU(Inertial Measurement Unit)センサの計測値およびその計測時刻と、前記発光マーカーを発光させた時刻とを、前記デバイスから取得するデバイスデータ取得部をさらに備え、
 前記位置姿勢取得部は、前記発光マーカーを発光させた時刻を前記フレームの撮影時刻とし、前記計測値によって得られる前記位置姿勢情報と、前記フレームにおける像に基づく前記位置姿勢情報とを、前記計測時刻と前記撮影時刻との関係に基づき統合することを特徴とする請求項1から5のいずれかに記載の情報処理装置。
[請求項7]
 前記同期処理部は、
 前記周期より短い第1の時間を最小単位とした点灯/消灯パターンで前記発光マーカーを発光させることにより、前記露光時間に含まれる前記発光時刻の範囲を取得したうえ、当該範囲内で前記発光マーカーを発光させる第1の状態を実現し、
 続いて前記第1の時間より短い第2の時間を最小単位とした点灯/消灯パターンで前記発光マーカーを発光させることにより、前記露光時間の中間時刻と前記第1の状態における発光時刻とのずれを検出して補正し、当該中間時刻と発光時刻が一致する第2の状態を実現することを特徴とする請求項1に記載の情報処理装置。
[請求項8]
 前記同期処理部は、前記第2の時間を前記固定時間とし、
 前記位置姿勢取得部は、前記同期処理部が前記第2の状態を実現する処理と並行して、前記像に基づき前記デバイスの位置姿勢情報を取得することを特徴とする請求項7に記載の情報処理装置。
[請求項9]
 前記同期処理部は、前記第2の状態を実現する処理と並行して、前記ずれの量を累積加算してなる、前記露光時間に対する前記発光時刻の偏差の時間変化に基づき、前記撮像装置と前記デバイスのクロック周波数の差を取得し補正することを特徴とする請求項7または8に記載の情報処理装置。
[請求項10]
 前記同期処理部は、前記第1の時間を最小単位とした点灯/消灯パターンで前記発光マーカーを発光させる前に、前記発光マーカーを全期間で発光させ、前記フレームに表れる前記発光マーカーの像に基づき前記デバイスを検出することを特徴とする請求項7から9のいずれかに記載の情報処理装置。
[請求項11]
 前記同期処理部は、前記発光マーカーの像が表れているか否かをフレームごとに1および0で表した像出現パターンの数列に基づき、前記露光時間に対応する発光時刻を特定することを特徴とする請求項1から10のいずれかに記載の情報処理装置。
[請求項12]
 前記同期処理部は、前記動画像のうち連続した所定数のフレームに対応する時間を一単位として前記点灯/消灯パターンを繰り返すように前記発光マーカーを発光させ、当該一単位の時間のうちの一部の時間に対し、前記一単位の時間の区切りを検出するための点灯/消灯パターンを設定することを特徴とする請求項1から11のいずれかに記載の情報処理装置。
[請求項13]
 発光マーカーを備えたデバイスと、前記デバイスを1フレームの周期より短い露光時間で撮影する撮像装置と、前記撮像装置が撮影した動画像のデータを用いて前記デバイスの位置姿勢情報を取得する情報処理装置と、を備え、
 前記情報処理装置は、
 前記1フレームの周期を所定数に分割してなる時間を最小単位として所定の点灯/消灯パターンで前記発光マーカーを発光させるように前記デバイスに要求し、それを撮影した動画像の所定数のフレームに当該発光マーカーの像が表れているか否かに基づき、前記デバイスの時間軸における前記露光時間を特定する同期処理部と、
 前記露光時間に対応する発光時刻で前記発光マーカーを発光させるように前記デバイスに要求する制御情報送信部と、
 前記露光時間以下の固定時間で前記発光時刻に発光する前記発光マーカーの、前記動画像のフレームにおける像に基づき、前記デバイスの位置姿勢情報を取得する位置姿勢取得部と、
 前記位置姿勢情報に基づくデータを生成し出力する出力データ生成部と、
 を備えたことを特徴とする情報処理システム。
[請求項14]
 撮像装置が1フレームの周期より短い露光時間で撮影し、情報処理装置が撮影された動画像を用いて位置姿勢情報を取得する対象である、発光マーカーを備えたデバイスであって、
 前記情報処理装置からの発光に係る要求を取得する制御情報取得部と、
 第1の前記要求に従い、前記1フレームの周期を所定数に分割してなる時間を最小単位として所定の点灯/消灯パターンで前記発光マーカーを繰り返し発光させるとともに、第2の前記要求に従い、前記デバイスの時間軸に対し示された露光時間に対応する発光時刻に、前記露光時間以下の固定時間で前記発光マーカーを発光させる制御部と、
 を備えたことを特徴とする位置姿勢取得用デバイス。
[請求項15]
 前記デバイスの動きを計測するIMU(Inertial Measurement Unit)センサと、
 前記IMUセンサの計測値およびその計測時刻と、前記発光マーカーを発光させた時刻とを前記情報処理装置に送信するデータ送信部と、
 をさらに備えたことを特徴とする請求項14に記載の位置姿勢取得用デバイス。
[請求項16]
 発光マーカーを備えたデバイスを、撮像装置が1フレームの周期より短い露光時間で撮影した動画像のデータを取得するステップと、
 前記1フレームの周期を所定数に分割してなる時間を最小単位として所定の点灯/消灯パターンで前記発光マーカーを発光させるように前記デバイスに要求するステップと、
 前記デバイスを撮影した動画像の所定数のフレームに当該発光マーカーの像が表れているか否かに基づき、前記デバイスの時間軸における前記露光時間を特定するステップと、
 前記露光時間に対応する発光時刻で前記発光マーカーを発光させるように前記デバイスに要求するステップと、
 前記露光時間以下の固定時間で前記発光時刻に発光する前記発光マーカーの、前記動画像のフレームにおける像に基づき、前記デバイスの位置姿勢情報を取得するステップと、
 前記位置姿勢情報に基づくデータを生成し出力するステップと、
 を含むことを特徴とする、情報処理装置によるデバイス情報取得方法。
[請求項17]
 発光マーカーを備えたデバイスを、撮像装置が1フレームの周期より短い露光時間で撮影した動画像のデータを取得する機能と、
 前記1フレームの周期を所定数に分割してなる時間を最小単位として所定の点灯/消灯パターンで前記発光マーカーを発光させるように前記デバイスに要求する機能と、
 前記デバイスを撮影した動画像の所定数のフレームに当該発光マーカーの像が表れているか否かに基づき、前記デバイスの時間軸における前記露光時間を特定する機能と、
 前記露光時間に対応する発光時刻で前記発光マーカーを発光させるように前記デバイスに要求する機能と、
 前記露光時間以下の固定時間で前記発光時刻に発光する前記発光マーカーの、前記動画像のフレームにおける像に基づき、前記デバイスの位置姿勢情報を取得する機能と、
 前記位置姿勢情報に基づくデータを生成し出力する機能と、
 をコンピュータに実現させることを特徴とするコンピュータプログラム。

図面

[ 図 1]

[ 図 2]

[ 図 3]

[ 図 4]

[ 図 5]

[ 図 6]

[ 図 7]

[ 図 8]

[ 図 9]

[ 図 10]

[ 図 11]

[ 図 12]

[ 図 13]

[ 図 14]

[ 図 15]

[ 図 16]

[ 図 17]

[ 図 18]

[ 図 19]

[ 図 20]