図1は本実施の形態における情報処理システムの構成例を示す。情報処理システム1は、ユーザ4が保持する発光デバイス18、発光デバイス18を含む空間を撮影する撮像装置12、発光デバイス18の位置を特定しそれに基づき情報処理を行う情報処理装置10、情報処理の結果として生成されたデータを出力する表示装置16を含む。
情報処理装置10と、撮像装置12および表示装置16とは、有線ケーブルで接続されても、Bluetooth(登録商標)など既知の無線通信技術により接続されてもよい。またこれらの装置の外観形状は図示するものに限らない。さらにこれらのうち2つ以上の装置を一体的に備えた装置としてもよい。例えば情報処理装置10、撮像装置12、表示装置16を、それらを備えた携帯端末などで実現してもよい。また、撮像装置12は必ずしも表示装置16の上に搭載されていなくてもよい。ユーザ4は情報処理装置10で処理される内容によって複数でもよく、発光デバイス18もまた複数でよい。
撮像装置12は、発光デバイス18を含む空間を所定のフレームレートで撮影するカメラと、その出力信号にデモザイク処理など一般的な処理を施すことにより撮影画像の出力データを生成し、情報処理装置10に送出する機構とを有する。カメラはCCD(Charge Coupled Device)センサやCMOS(Complementary Metal Oxide Semiconductor)センサなど、一般的な可視光センサを備える。
図示するように、そのようなカメラを既知の間隔で左右に配置したステレオカメラとすることにより、発光デバイス18などの対象物の、撮像面からの距離を含む3次元空間での位置を特定することができる。ただし撮像装置12は単眼のカメラとしてもよい。また、撮像装置12は可視光センサが取得したベイヤ配列などで構成されるいわゆるRAW画像をそのまま送出し、情報処理装置10においてデモザイク処理等、必要な処理を施すようにしてもよい。
情報処理装置10は、撮像装置12から送信されたデータを用いて発光デバイス18の実空間での位置を特定する。そして当該位置情報に基づき必要な情報処理を行い、その結果を表す画像や音声などの出力データを生成する。情報処理装置10が発光デバイス18の位置情報を利用して行う処理の内容は特に限定されず、ユーザが求める機能やアプリケーションの内容などによって適宜決定してよい。例えば情報処理装置10は、発光デバイス18の動きからユーザ4の動きを取得し、同様の動きをするキャラクタが登場するゲームを進捗させたり、発光デバイス18の動きをコマンド入力に変換して、それと対応する機能を実現させたりする。
表示装置16は、表示画像を出力するディスプレイおよび音声を出力するスピーカーを有するテレビでよく、例えば液晶テレビ、有機ELテレビ、プラズマテレビ、PCディスプレイ等である。あるいはタブレット端末や携帯端末のディスプレイおよびスピーカーであってもよい。なお表示装置16は、図示するような平板型のディスプレイでもよいし、ユーザが頭に装着することによってその眼前に画像を表示させるヘッドマウントディスプレイであってもよい。あるいはその双方でもよい。
情報処理システム1にはさらに、ユーザが操作することにより処理の開始、終了、機能の選択などの要求や各種コマンド入力を受け付け、電気信号として情報処理装置10に供給する入力装置が含まれていてもよい。当該入力装置は、例えばハードウェアキーを備えるコントローラ、マウス、ジョイスティックなど固有の装置でもよいし、表示装置16のディスプレイを覆うタッチパッドなどでもよい。
図2は発光デバイス18の外観形状を例示している。発光デバイス18は、発光部6およびハンドル8を含む。発光部6は、光透過性を有する樹脂などのカバー材で形成され発光ダイオードや電球など一般的な光源を内蔵した球体であり、点灯状態にあるとき球面全体が発光する。複数のユーザが個々に発光デバイス18を用いる場合は、発光色を異ならせることによりそれらを区別して認識できるようにする。
ハンドル8はユーザが手にする部分であり、図示はしないが、必要に応じてオン/オフボタンなどの入力ボタンを備えてもよい。また、有線あるいは無線で情報処理装置10と通信を確立し、必要な情報を送受する通信手段を備えてもよい。例えば複数の発光デバイスに対する発光色の割り当てを情報処理装置10が決定し、各発光デバイス18に通知したり、点灯や点滅などの発光態様を情報処理装置10が制御したりしてもよい。
さらにハンドル8の内部に加速度センサやジャイロセンサなどのモーションセンサを設け、その計測値を発光デバイス18から情報処理装置10に所定のレートで送信するようにしてもよい。これにより情報処理装置10は、発光デバイス18の姿勢を逐次特定することができる。なお発光デバイス18の外観形状は図示するものに限らない。例えばユーザの体に装着可能な機構を有していてもよいし、上述のヘッドマウンドディスプレイや入力装置と一体的に実現してもよい。例えばヘッドマウントディスプレイや入力装置の表面に所定形状の発光領域を設けてもよい。このとき発光領域は1つであっても複数であってもよい。
本実施の形態では、様々な物が存在する空間を撮影した画像から、発光部6の像を高精度に抽出し、その位置やサイズに基づき発光デバイス18の位置を特定する。より詳細には、発光部6が「所定色」で「発光している」という条件に基づき画素値を評価することにより、同色でも発光していない物や発光していても色が異なる物の像と区別して、発光部6の像のみを高精度に抽出する。図2に示したような発光デバイス18の場合、発光部6の像の領域がおよそ円形に抽出されるが、発光色が既知であれば光源が入力装置やヘッドマウントディスプレイであっても構わない。以後、抽出対象の像が表す、発光部6のような発光体を「発光マーカー」と総称する。
図3は情報処理装置10の内部回路構成を示している。情報処理装置10は、CPU(Central Processing Unit)22、GPU(Graphics Processing Unit)24、メインメモリ26を含む。これらの各部は、バス30を介して相互に接続されている。バス30にはさらに入出力インターフェース28が接続されている。入出力インターフェース28には、USBやIEEE1394などの周辺機器インターフェースや、有線又は無線LANのネットワークインターフェースからなる通信部32、ハードディスクドライブや不揮発性メモリなどの記憶部34、表示装置16へデータを出力する出力部36、撮像装置12や入力装置14からデータを入力する入力部38、磁気ディスク、光ディスクまたは半導体メモリなどのリムーバブル記録媒体を駆動する記録媒体駆動部40が接続される。
CPU22は、記憶部34に記憶されているオペレーティングシステムを実行することにより情報処理装置10の全体を制御する。CPU22はまた、リムーバブル記録媒体から読み出されてメインメモリ26にロードされた、あるいは通信部32を介してダウンロードされた各種プログラムを実行する。GPU24は、ジオメトリエンジンの機能とレンダリングプロセッサの機能とを有し、CPU22からの描画命令に従って描画処理を行い、表示画像を図示しないフレームバッファに格納する。そしてフレームバッファに格納された表示画像をビデオ信号に変換して出力部36に出力する。メインメモリ26はRAM(Random Access Memory)により構成され、処理に必要なプログラムやデータを記憶する。
(1)発光マーカーの位置情報に基づく情報処理
まず上記の構成により、運用段階において撮影画像から発光マーカーの像を検出し、その位置情報に基づき情報処理を実施する態様について説明する。図4は、本態様における情報処理装置10の機能ブロックの構成を示す。情報処理装置10は、撮像装置12から撮影画像のデータを取得する撮影画像取得部60、撮影画像や位置情報のデータを格納するデータ記憶部62、撮影画像から発光マーカーの像を検出することによりその実空間での位置情報を取得する位置情報取得部64、位置情報に基づき所定の情報処理を実施する情報処理部66、および、情報処理の結果として出力すべきデータを生成する出力データ生成部68を含む。
図4および後述する図11において、さまざまな処理を行う機能ブロックとして記載される各要素は、ハードウェア的には、図3で示したCPU22、GPU24、メインメモリ26等の各主回路で構成することができ、ソフトウェア的には、記録媒体駆動部40により駆動される記録媒体や記憶部34からメインメモリ26にロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。
撮影画像取得部60は、撮像装置12が撮影した動画像のフレームデータを順次取得し、データ記憶部62に格納する。ここで取得するフレームデータは、撮像装置12内部の回路構成によりRGB画像あるいはYCbCr画像のどちらとしてもよい。フレーム画像にデモザイク処理やシェーディング補正がなされていない場合、撮影画像取得部60はそれらの処理や補正を実施したうえでデータ記憶部62に格納する。
また撮影画像取得部60は初期処理として、一旦取得した撮影画像を解析し、最適な撮影条件を決定したうえで、当該条件で撮影するように撮像装置12をフィードバック制御してもよい。例えば発光マーカーの像を高精度に抽出することを主目的とした場合、表示に用いる一般的な撮影画像より露出を抑えることにより、発光している物とそれ以外の物で像の輝度に差をつけることができる。これにより発光マーカーの像の抽出精度をより向上させることができる。
位置情報取得部64は、データ記憶部62から撮影画像のフレームデータを順次読み出し、発光マーカーの像を抽出する。そしてそれに基づき発光デバイス18の実空間での位置情報を取得する。位置情報取得部64は、スコアマップ作成部70、対象領域抽出部72、および位置情報生成部74を含む。スコアマップ作成部70は、各フレーム画像の画素が表す色情報に基づき、その像の元となる被写体が所定色で発光している可能性の高さを示すスコア値を画素ごとに求め、それを画像平面に表したスコアマップを作成する。
つまり撮影画像における像の色から、それが表す元の物が所定色で発光している可能性をスコアの数値として表す。ここでスコア値は、元の物が所定色である確度と、それが発光している確度の双方を加味したものである。具体例は後に述べるが、本実施の形態では青、赤、緑、・・・など異なる色の発光マーカーを個別に特定できるような計算式を用いることにより、同じ形状の発光デバイスでもそれらを区別して認識し情報処理が行えるようにする。以後、抽出対象とするマーカーの発光色を「対象色」と呼ぶ。
対象領域抽出部72は、スコアマップを探索し、スコアが周囲より高い連続した画素集合を特定することにより、対象色で発光している物の像の領域を抽出する。そのような物が複数個存在すれば、その個数分の領域が抽出される。またそれらの発光色が異なれば、当該発光色に対応づけて個々の領域が抽出される。対象領域抽出部72はさらに抽出した領域をサイズに基づき評価し、発光マーカーの像である可能性の低い領域を除外する。
例えば、電源のオン/オフなど何らかの情報を点灯/消灯や発光色で示す発光インジケータを備えた電子機器は身の回りに多く存在する。そのような発光インジケータと本実施の形態で位置検出の対象とする発光マーカーとは、発光色や形状が類似しやすい。一方、発光インジケータは一般的に直径数ミリ程度であるため、発光マーカーのサイズを適切に選択すれば、すなわち、想定される可動範囲のうち最も遠い位置にあっても見かけ上のサイズが一般的な発光インジケータより十分大きいサイズとすれば、像のサイズにより区別が可能である。
そこで抽出した領域のサイズに下限を設け、それより小さい領域を除外することにより誤検出を防止する。この処理により発光インジケータのみならず、デモザイク処理時に発生しやすい偽色についても検出対象から除外できる。なお発光マーカーのサイズが既知であれば発光マーカーの像の上限もおよそ定まるため、抽出した領域のサイズに上限を設けそれより大きい領域を除外してもよい。
位置情報生成部74は、撮影画像において発光マーカーの像として抽出された領域の重心の位置座標やサイズに基づき、発光マーカー、ひいては発光デバイスの実空間での位置を特定する。撮像装置12をステレオカメラとした場合、スコアマップ作成部70および対象領域抽出部72が、左右の視点から撮影されたステレオ画像のそれぞれに対し上述した処理を実施することにより、発光マーカーの像の領域の重心位置がそれぞれ求められる。位置情報生成部74は、ステレオ画像間での重心位置の水平方向の差分を視差として、一般的な三角測量の原理で当該発光マーカーの奥行き方向の距離を取得する。
図2で示した発光部6のように、角度によらず見かけ上のサイズが変化しない発光マーカーや、所定の間隔でデバイス表面に配置させた複数の発光マーカーを用いる場合などは、単眼のカメラであっても、像のサイズや間隔から距離の取得が可能である。位置情報生成部74は、そのようにして特定した撮像面からの奥行き方向の距離を、フレーム画像における発光マーカーの像の領域の画素値として表した、いわゆるデプスマップを作成するなどして位置情報をデータ化し、データ記憶部62に格納する。なお複数の色の発光マーカーが存在する場合は、色ごとに抽出された像の重心位置などに基づき、各色に対応づけて位置情報を生成する。
情報処理部66は、データ記憶部62から発光マーカーの位置情報を読み出し、それに応じた情報処理を実施する。上述のとおりここで実施する情報処理の内容は特に限定されない。出力データ生成部68は、情報処理部66が実施した情報処理の結果として表示すべき画像や出力すべき音声のデータを生成し順次、表示装置16へ出力する。
次にスコアマップ作成部70がスコアマップを生成する原理を説明する。本実施の形態では上述のとおり、フレーム画像を構成する画素の色情報に基づき、元の被写体が所定色で発光している可能性を画素ごとに数値化する。具体的には、当該画素を含む像が表す被写体が「対象色である確度」と「発光している確度」の積を含む計算により、それらの積集合の確度を算出する。ここで、前者の確度には色相を、後者の確度には彩度を利用する。
図5は本実施の形態でスコア値の計算に用いる錐体のHSV色空間を示している。同図左側が色空間を表す錐体80である。この錐体80の軸を中心とする水平断面は右側に示すように、色相Hを円環状に示した色相環90を構成する。ただし実際の色相環は一周360°に対する色のスペクトルで表現され、色相Hはその角度によって表される。また当該水平断面における中心からの距離が彩度S、錐体80の頂点から軸方向の距離が明度Vである。本実施の形態で用いる色相Hおよび彩度Sは、各画素が表すRGBの値に基づき次の式により求められる。
スコアマップ作成部70は、画素ごとのRGB値から色相Hと彩度Sを求める。撮像装置12から得られるフレームデータがYCbCr画像である場合も、既知の変換式により色相Hと彩度Sが求められる。そして色相Hの値に基づき被写体が対象色である確度C(H)を、彩度Sの値に基づき被写体が発光している確度L(S)を、画素ごとに求める。
確度C(H)の算出のために、対象色に対応する色相Htを挟んで前後にしきい値Th1、T2(Th1<Ht<Th2)を設定しておく。例えば対象色が青である場合、当該青に合致する色相Htに対しTh1からTh2までを、元のマーカーの発光色が青と推定される範囲として設定することにより、撮影環境による像の色の変化を許容する。このような色相範囲を、対象色ごとに設定しておく。
図6は被写体が対象色である確度C(H)の設定例を示している。この例で確度C(H)は、色相Hが対象色に対応する色相範囲外にあるときに0、当該色相範囲内にあるとき0より大きく図示するような変化を有する関数とする。つまり色相Hに対し確度C(H)は次のように求められる。
H≦Th1のときC(H)=0
Th1<H≦HtのときC(H)=(H−Th1)/(Ht−Th1)
Ht<H≦Th2のときC(H)=(Th2−H)/(Th2−Ht)
Th2<HのときC(H)=0
この例によれば確度C(H)は、画素の色相が対象色と一致するときに最大値となり、対象色から離れるほど減少し、しきい値Th1、Th2に達したとき0となるような関数である。このような変化を与えることにより、画素が表す色相にある程度の許容範囲を設けたうえで他の色から選別し、さらに許容範囲内での色相の変化を確度C(H)に反映させることができる。また許容範囲の内外で確度C(H)を連続的に変化させることにより、画素値の小さな誤差が確度C(H)として増幅されることによる抽出領域の不安定性を抑制できる。
なお図示する例では、確度C(H)は対象色の色相Htで極大となりTh<H≦Th2の範囲で線形に変化する関数であったが、それに限る主旨ではなく、2次以上の項を含む曲線としてもよい。またしきい値Th1、Th2を設定する際は、様々な環境下での撮影画像における同じ発光マーカーの像の色相を統計処理するなどして適切な値を求めておく。このときしきい値Th1、Th2を全ての環境で固定としてもよいし、運用時に実際の撮影画像全体を画像解析するなどして、輝度、周波数、色分布などの特性を求め、それに応じて用いる値を切り替えてもよい。
一方、被写体が発光している確度L(S)は、彩度Sの増加に対して単調増加するような関数とする。例えばL(S)=Sとしてもよい。上式で表される錐体モデルのHSV色空間における彩度Sは、色の純度が高くかつ強度が高いほど大きい値となるため、そのまま確度として用いても発光強度を反映した数値を得ることができる。あるいは2次以上の項を含むような曲線的な変化としてもよいし、確度C(H)と同様、所定のしきい値より小さい彩度Sで確度L(S)を0としてもよい。
このようにして求めた確度C(H)と確度L(S)とを用いて、当該画素が、対象色で発光しているマーカーの像を表している可能性を示すスコア値Sを、例えば次のように算出する。
S=C(H)×L(S)
あるいは図6で示したのと同じ関数を色相Hの重み係数α(H)として次のようなスコア値Sを定義してもよい。
S=α(H)×H×L(S)
スコアマップ作成部70はこのようなスコア値を画素ごとに算出して、画像平面にマッピングすることでスコアマップを作成する。
図7はスコアマップの例を模式的に示している。同図ではスコアマップ100を、スコア値が大きいほど輝度が大きくなるグレースケールの画像として表している。図6で例示した確度C(H)を用いることにより、対象色と推定できる許容範囲外の色相を有する大部分の領域はスコア値が0となる。また確度L(S)を用いることにより、色相が許容範囲内にあっても発光していない物の像を表す領域104、106はスコア値が小さくなる。結果として、色相が許容範囲内にあり発光している物の像を表す領域102のスコア値が突出して大きくなる。
例えば領域102、104が発光デバイスの像を表しているとすると、発光部の発光色とハンドルの色が同じであったとしても、スコア値の差からそれらの像を区別できる。なお当該球形部分において光の強さに分布があれば、スコア値はそれを反映するような若干の変化として表れる。スコアマップ作成部70が図示するようなスコアマップを撮影画像のフレームごとに作成すると、対象領域抽出部72は、当該スコアマップを探索し、領域102を抽出する。
例えばスコアマップの画素をラスタ順に走査することにより、スコア値が極大を示す画素を抽出する。なお抽出対象とする極大値には下限を設けてもよい。あるいは画像全体でのスコアの最大値からの差分が所定範囲内の極大値を示す画素を抽出してもよい。そして抽出した画素を基点としてその周囲の画素を探索することにより、スコア値の変化量が所定範囲内にある連続した画素集合を抽出する。これにより、図示する例では領域102のみを抽出することができる。
対象領域抽出部72はこのようにして抽出した領域102について、既知の手法で重心108の位置座標を導出する。ステレオ画像を用いる場合は、両画像における重心の位置座標の差分に基づき、単眼カメラによる撮影画像を用いる場合は当該重心と領域102のサイズ、例えば面積や直径などに基づき、実際の発光マーカーの距離を求められる。複数の発光マーカーを用い、それらの発光色が異なる場合は、それぞれを対象色としてスコアマップを作成し、同様にスコア値の高い領域を抽出する。なお画素値の高い連続した領域を効率的に抽出する手順については様々考えられ、そのいずれを採用してもよい。
図8は、実際の撮影画像を用いたときの対象領域の抽出結果を例示している。このうち最上段の画像(a)は、この例における被写空間を一般的な条件で撮影した画像である。被写空間には複数の発光マーカーが存在するが、図示するような一般的な撮影画像では室内にある様々な物との区別が明確でない。
中段の画像(b)は同じ被写空間を、露出を抑えて撮影した画像である。露出を抑えることにより、発光の有無によって像の輝度に差をつけることができ、結果として発光マーカーの像110a、110b、110c、110dを他より際立たせることができる。撮像装置12はこのように撮影条件を調整して撮影を実施してもよい。ただしこのような条件で撮影しても、発光マーカー以外の物、例えば天井照明などの像112が同様の輝度で表れる。
下段の画像(c)は、例えば(b)で示した撮影画像から上述のとおり作成したスコアマップであり、スコア値が高いほど高い輝度で表している。図示するように、室内にある発光していない物や、発光していても対象色でない天井照明などはスコア値が小さくなるため、抽出対象から除外できる。すなわち、RGBの各成分の強度によらず、見た目の色の違いを、色相を用いてスコアに反映させることにより、照明などの誤検出を防止でき人の認識と合致する結果を得ることができる。
また錐体のHSV色空間での彩度を用いることにより、色の純度が高くかつ強く発光している物の像を正確に抽出できる。なお被写体が発光している確度Lは彩度を利用するほか、輝度など光の強さやエネルギーを表すパラメータを利用してもよい。この場合もスコアの計算式は同様である。
次に、これまで述べた構成によって実現できる情報処理装置10の動作について説明する。図9は情報処理装置10の位置情報取得部64が発光デバイスの位置情報を取得する処理手順を示すフローチャートである。このフローチャートは、ユーザ操作により情報処理装置10が情報処理を開始し、それに伴い撮像装置12が発光デバイスを含む被写空間の撮影を開始したときなどに開始される。
まずスコアマップ作成部70は、撮像装置12が撮影中の動画像のフレームデータをデータ記憶部62から読み出す(S10)。そして必要に応じてRGB画像を生成するなどの初期処理を実施した後、当該フレーム画像に対応するスコアマップを作成する(S12)。具体的には各画素のRGB値に基づきその画素の色相Hおよび彩度Sを算出し、元となる被写体が対象色である確度C(H)と発光している確度L(H)を算出する。そしてそれらの積をとるなど、スコア値Sの定義式に代入することにより画素ごとにスコア値Sを算出して画像平面の画素配列と対応づける。
次に対象領域抽出部72は、スコアマップを走査することにより、高いスコアを有する連続した画素集合からなる領域を抽出する(S14)。そして対象領域抽出部72は、抽出した領域について、画像平面での重心の位置座標およびサイズを求めるとともに(S16)、サイズが所定の範囲内にあるもののみを選別することにより、発光マーカーの像である可能性の低い領域を除外する(S18)。発光色が異なる複数の発光マーカーを対象とする場合は、色ごとにS12〜S18の処理を実施する。
次に位置情報生成部74は、抽出された領域の重心の位置座標やサイズを用い、当該領域の像が表している発光デバイスの撮像面からの距離を求めてデプスマップなど所定の形式で位置情報を作成し、データ記憶部62に出力する(S20)。なお発光デバイスの表面に複数の発光マーカーを配列させる場合は、それらの発光マーカーの位置情報を統合して発光デバイス自体の位置情報を取得してもよい。また発光デバイスがモーションセンサを内蔵する場合は、上述の通信機構によりその計測値を取得し、さらにその情報を統合して詳細な位置や姿勢を導出してもよい。
ユーザ操作などにより処理を終了させる必要が生じない限りは、撮像装置12が撮影している動画像のフレームデータを順次取得し、同様の処理を繰り返す(S22のN、S10〜S20)。これにより発光デバイスの位置情報が所定のレートで出力され続ける。情報処理部66が当該位置情報を読み出し、出力データ生成部68との協働により適宜処理を行うことにより、発光デバイスの位置や動きを反映させた画像や音声が表示装置16から出力されることになる。そして情報処理を終了させる必要が生じたとき位置情報を生成する処理も終了させる(S22のY)。
(2)発光マーカーの駆動電流の調整
これまで述べたように、撮影画像中、発光マーカーの像を構成する画素を画素値に基づき抽出する処理の精度を安定的に保つためには、マーカー自体の発光や撮像装置での光の検出が適切になされていることが前提となる。例えば上述のとおり、像の元となる物が発光している確度Lに彩度Sを利用した場合、マーカーの発光が強すぎれば彩度Sが低くなるため確度Lも低下する。さらに像が無彩色となりやすいため、色(色相)の区別が困難となり、結果として、発光マーカーは所定色で発光しているにも関わらずその像が正確に抽出されなかったり他の色と混同されたりすることがあり得る。
図10はマーカーの発光強度が適切でない場合に、撮影画像から抽出される発光マーカーの像を例示している。ここでは、5つの発光マーカーを備える発光デバイスを撮影したときのスコアマップ140を、スコア値が高いほど高い輝度で表している。発光マーカーの像を示す、本来スコア値が高くなるべき領域のうち、四隅にある4つの領域142a、142b、142c、142dは、スコア値が低い領域を包含している。
これは上述のとおり、彩度が低くなったり白光りしたりして本来の発光色がその部分だけ検知されていないなどの理由による。このようなスコアマップ140を用いて領域を抽出した場合、穴あき状の欠損部分が生じることになる。欠損は図示するように抽出された領域の中に生じるほか、輪郭部分に生じることもある。このような現象は、発光マーカー自体の発光強度が高すぎる以外に、発光マーカーが撮像面に近づくことによっても発生し得る。また発光マーカーの形状等にも依存する。
このように一部の領域が欠損した状態で抽出されてしまうと、算出される重心の位置が本来の発光マーカーの像の重心とは異なり、ひいては発光マーカーの位置取得精度が低下する。また発光デバイスを回転させた場合や、発光マーカーが他の物の背後に移動する場合などは、欠損部分の変位や、欠損部分が完全に隠蔽されたか否かなどに依存して計算上の重心が急激に変化し、発光マーカーが不連続に移動しているような位置情報となり得る。さらに撮影画像のノイズ等で偶然、色相が本来の範囲に入るなどして欠損部分が消滅したり形状が変化したりすると、それによっても重心位置が不安定になってしまう。
一方、発光強度が十分でない場合は、室内照明の色など外的環境の影響を受け、発光マーカーの像の色相が変化してしまうことが考えられる。また、撮像装置12から離れるほど像の輝度が低下し、場合によっては他の装置の発光インジケータなどと混同して認識してしまうことも起こり得る。そのため、実空間での発光マーカーの可動範囲全体にわたり、発光マーカーの像を表す画素の色が適切な範囲で得られるように、マーカーの発光強度を最適化することが望ましい。
そこで本実施の形態では、情報処理システム1の運用の前段階において、発光マーカーに内蔵される発光素子の駆動電流を、像の抽出に適した値に調整する。当該調整を発光マーカーごとに実施すれば、発光素子のみならず、発光デバイスのカバー材や取り付け精度などの固体差によって発光強度が変化し、位置情報の取得精度が製品依存でばらつく問題も解消できる。
図11は、本態様における情報処理装置および発光デバイスの機能ブロックの構成を示している。ここで情報処理装置10aは、図1を参照して説明したように、ユーザ4が情報処理システム1を運用する段階で用いる情報処理装置10と同一であってもよいし、発光デバイス18を製品として出荷する前に駆動電流を調整する目的で準備された情報処理装置であってもよい。前者の場合、図4で示した機能ブロックが同時に備えられていてよいが、ここでは本態様と直接関連しないブロックの図示を省略している。いずれにしろ情報処理装置10aの内部の回路構成は図3で示したのと同様でよい。
撮像装置12および発光デバイス18は、図1を参照して説明した撮像装置12および発光デバイス18と同様でよい。ただし本態様において情報処理装置10aおよび発光デバイス18は、有線または無線により両者間で通信を確立できる機構を有する。これにより、情報処理装置10aが駆動電流に係る調整を実施し、その結果を発光デバイス18に通知したり、発光デバイス18内部で保持する駆動電流の設定値を情報処理装置10aが問い合わせたりできるようにする。
情報処理装置10aの撮影画像取得部120は、撮像装置12による発光デバイス18の撮影画像のデータを取得する。撮像装置12が動画撮影をしている場合、撮影画像取得部120は、必要なタイミングのフレームデータのみを取得してもよい。撮影画像取得部120が取得したデータはデータ記憶部122に格納される。
駆動電流調整部124は、撮影画像のデータをデータ記憶部122から読み出して発光デバイス18の像を抽出し、所定の基準に照らし好適な像が得られるように発光デバイス18の駆動電流を調整する。駆動電流調整部124は、対象領域抽出部126、パラメータ評価部128、および発光デバイス制御部130を含む。対象領域抽出部126は、撮影画像から発光マーカーの像と推定される領域を抽出する。このとき運用時と同様の手法で抽出を行うことで、抽出に適した駆動電流が求められる。
すなわち運用時に、上述と同様にスコア値Sに基づき発光マーカーの像を抽出する場合は、駆動電流の調整時にもそれと同様の手順で領域抽出を実施する。一方、本態様における領域抽出手法はこれに限らず、発光デバイスの発光色に対応する色相から所定範囲にあり、かつ彩度や輝度など発光の強さを表す所定のパラメータが所定値以上の領域を抽出するなどでもよい。
パラメータ評価部128は、抽出された領域について所定のパラメータを評価し、駆動電流を変更する必要性の有無を判定する。具体的な判定基準は用いるパラメータや駆動電流の調整方向によって様々であるが、概念的には発光マーカーの像を表す画素が抜けなく抽出されるまで駆動電流を調整する。例えば駆動電流を過多の状態から減少させていくとともに、抽出された領域の像が飽和状態にあるか否かを表すパラメータを確認していく。
ここで飽和状態とは具体的には、抽出された領域に内包された、あるいは外接している画素のうち最も強い発光を表している画素の色相が、元の発光色に対応する色相の範囲から外れている状態である。そしてそのような飽和状態から脱するまで駆動電流を減少させていく。これにより、上述の白光りのような状態が発生しない範囲での最高強度でマーカーを発光させることができる。
パラメータ評価部128はそのような判定基準に照らし、さらなる駆動電流の調整が必要か否かを判定する。なお上述のように駆動電流過多の状態から調整する場合は、調整時の発光デバイスの位置を、想定される可動範囲内で撮像装置12の最近傍とすることにより、可動範囲全体での位置取得精度を保障できる。発光デバイス制御部130は、駆動電流調整の必要ありと判定されたとき、駆動電流を調整するよう発光デバイス18に要求する。また調整が完了し適切な駆動電流が得られたと判定された時点で、その旨を発光デバイス18に通知する。
発光デバイス18は、図2で示した発光部6のほか、駆動電流制御部132および駆動電流記憶部134を含む。駆動電流制御部132は、発光デバイス制御部130からの要求や通知に従い、発光部6に内蔵される発光素子の駆動電流を制御する。制御用の回路構成や制御手順には一般的な技術を適用できるため、ここでは説明を省略する。駆動電流記憶部134は、調整の結果得られた適切な駆動電流の値を記憶する。これにより発光デバイス18は、固体差を加味し各々に適した駆動電流値を内部に保持することができる。
一旦、適切な駆動電流値が設定されたら、駆動電流制御部132は運用に際し、その値を駆動電流記憶部134から読み出して発光部6を駆動する。調整処理を再度実施し、適切な駆動電流が元の値と異なった場合、駆動電流制御部132は駆動電流記憶部134が記憶するデータを更新する。なお適切な駆動電流は運用段階で実施される情報処理の内容や撮影環境などに応じて切り替えてもよい。この場合、駆動電流記憶部134にはそれらの状況に対応づけてそれぞれに適切な駆動電流を格納しておき、駆動電流制御部132は情報処理装置10からの要求に従い、そのときの状況に対応づけられた電流値を読み出すようにしてもよい。
図12は、スコア値Sを用いた場合の駆動電流の調整手順を説明するための図である。この例は、抽出された領域のうち最大のスコア値の、駆動電流の減少に対する変化量を調整のためのパラメータとして採用する態様を示している。同図のうち上段のグラフ150は、駆動電流に対する最大スコア値の変化を表している。なお駆動電流を表す横軸は、左方向が駆動電流の増加を表す。また同図下段は、複数の駆動電流で発光マーカーを駆動させたときの、発光マーカーの撮影画像とそれから得られるスコアマップを示している。
まず駆動電流が過多な状態152aにおいては、上述のように強い発光を表す部分が本来の色相範囲から外れるなどして、(A)のスコアマップに示すように抽出されるべき領域に欠損が生じる。これにより重心位置が正確でなくなり発光デバイスの位置取得精度が低くなる。一方、駆動電流が過小な状態152cでは、(C)に示すように撮影画像自体が薄暗く、結果として全体的にスコア値が低くなる。このような状態で運用すると、発光デバイスが撮像装置12から遠ざかった際は特に、抽出が適正になされなくなったり他の発光体と混同したりする可能性が高くなる。
駆動電流が適切な状態152bでは、(B)のスコアマップに示すように、欠損がなくかつ他との区別が十分つけられる程度の強度で像の領域が表れる。グラフ150から明らかなように、駆動電流が過多の状態では、駆動電流の減少に対し最大スコア値はほぼ変化しない。これは駆動電流が減少することによって欠損部分が減少し、最大スコア値を示す画素の位置が変化したとしても、当該スコア値自体は最大値で飽和している状態にあることによる。そこで、そのような飽和状態が解消するときの駆動電流を適正値として求めることにより、(B)のようなスコアマップが得られる最大駆動電流を求める。
具体的には、過多の状態から駆動電流を減少させていき、最大スコア値が減少し始めたとき、例えば駆動電流の所定の減少量に対し最大スコア値の変化量が所定値以上となったときに、条件を満たしたと判定する。すなわち本判定手法は上述のように、発光マーカーの像として抽出される領域が飽和状態から脱した時点を、最大スコア値の変化量を用いて判定するものである。変化量に代えてグラフの1次微分や2次微分を用いてもよい。
ただし本実施の形態をそれに限る主旨ではなく、判定基準やそれに用いるパラメータには様々なものが考えられる。例えば抽出した領域が示す最大彩度や最大輝度の、駆動電流に対する変化を同様に確認してもよい。あるいは抽出された領域の画素数が駆動電流の変化に対して定常的となったか否かを判定してもよいし、図示するように複数の駆動電流に対しスコアマップを取得し、種々の画像解析により比較して最適な駆動電流を内挿により求めるなどでもよい。
次に上述の構成で実現できる情報処理装置および発光デバイスの動作について説明する。図13は、情報処理装置10aと発光デバイス18により駆動電流を調整する処理手順を示すフローチャートである。このフローチャートは、調整の必要が生じた時点でユーザが情報処理装置10aにその旨を要求したときなどに開始される。このとき発光デバイス制御部130は、調整用として定められた初期電流値で駆動されるように発光デバイス18を制御する(S30)。
上述の例では、発光マーカーの像の一部が白色に近くなるような、明らかに高い電流値を初期値として準備しておく。発光デバイスは、駆動電流の調整方向などに応じて適切な位置に固定しておく。ユーザが自宅等で調整する場合は、表示画像などを介して、発光デバイス18を把持し適切な距離に位置するようユーザに指示を与える。並行して撮像装置12は当該発光デバイス18の撮影を開始する。
次に撮影画像取得部120は、撮像装置12が撮影した画像のデータを取得し、データ記憶部62に格納する(S32)。すると駆動電流調整部124の対象領域抽出部126は、当該画像のデータをデータ記憶部62から読み出し、一般的なフィルタによりノイズ低減処理を施す(S34)。これにより、より正確に適切な駆動電流を求められる。なお撮像装置12から送信される撮影画像がRAW画像である場合などは、RGB画像に変換するなど必要な処理も実施する。
次に対象領域抽出部126は、撮影画像から発光マーカーの像と推定される領域を抽出する(S36)。この処理は、例えば図9のS12、S14と同様、色相および彩度からスコア値を求めてスコアマップを作成し、そのうちスコア値の高い連続した画素集合を探索する処理であってよい。ただし本実施の形態はそれに限らず、その色相が発光マーカーの発光色に対応する色相から所定範囲内にあり、かつ彩度あるいは輝度が所定値以上の連続した画素集合などを、真偽判定によって抽出してもよい。
次にパラメータ評価部128は、抽出された領域に対し所定のパラメータを導出し(S38)、それが判定基準を満たすか否かを判定する(S40)。図12に示した手法では、所定のパラメータとは駆動電流の変化に対する最大スコア値の変化量である。したがって初期電流値で駆動している1回目のフローでは最大スコア値のみを取得し、判定処理は2回目以降で実施する。初期電流値では当然、基準を満たさないため(S40のN)、発光デバイス制御部130が発光デバイス18の駆動電流制御部132に対し駆動電流の変更を要求することにより、発光デバイス18の駆動電流が変更される(S42)。
例えば駆動電流を所定の変化量だけ減少させる。そして撮影画像取得部120は、変更した電流で駆動されている発光デバイス18の撮影画像のデータを再度取得し(S32)、対象領域抽出部126がS34、S36の処理を同様に実施したのち、パラメータ評価部128がパラメータを導出する(S38)。上述の手法では初期電流値での最大スコア値と、所定の変化量だけ減少させた電流値での最大スコア値とを比較し、その差分を求める。そして当該差分が所定値以上か否かを基準として判定を行う(S40)。所定値以上でなければ図12で示した飽和状態と判断し、再度、駆動電流を所定の変化量だけ減少させる(S42)。
ただし駆動電流の変更方向や変更量は判定基準によって異なっていてよい。S32〜S42の処理を、判定基準を満たすまで繰り返す。判定基準を満たしたら、上述の例では最大スコア値の変化量が所定値以上となったら(S40のY)、発光デバイス制御部130は発光デバイス18にその旨を通知する。これを受けて発光デバイス18の駆動電流制御部132は、その時点での駆動電流を適正値として、駆動電流記憶部134に格納する(S44)。これにより以後の運用時には当該適正値での駆動がなされ、発光マーカーの像が正確に抽出される。
以上述べた本実施の形態によれば、撮影画像を入力情報に用いる情報処理において、所定色で発光するマーカーを利用して被写体の位置や動きを特定する。このとき、当該発光マーカーの像を撮影画像から検出するため、その可能性の高さを示すスコア値を画素ごとに求めて画像平面に表したスコアマップを作成する。ここでスコア値は、その像によって表されている物が所定色である確度と、その物が発光している確度とを統合する計算式に基づき算出する。このように2つの観点からスコアを求めることにより、発光マーカーと類似した色を有する発光していない物や、発光しているが色が異なる物などを誤って検出してしまう可能性を抑えられる。
ここで、元の物が所定色である確度には色相を利用する。このとき色相に有限の許容範囲を設けることにより、撮影環境の変化により像の色味が変化しても検出が可能となり、高い頑健性で位置情報を取得できる。また当該確度を、色相に対し連続的に変化する関数とすることにより、画素値の誤差がスコア値の変化として増幅されるのを防止する。これにより、発光マーカーの像として検出された領域の形状がフレームによって大きく変動したりして、領域の重心位置、ひいては発光デバイスの位置情報が不安定になるのを防ぐことができる。
また元の物が発光している確度には錐体のHSV色空間における彩度を利用する。これにより、RGBの純色での発光強度の差が直接的にスコアに反映されるため、純度の高い固有の色で発光する物の像をそれぞれ精度よく抽出できる。以上の構成により、発光色ごとに区別してマーカーの像を正確に抽出できるため、発光マーカーの形状を同一としても、複数の発光デバイス、ひいては複数のユーザの位置情報をそれぞれ区別して取得できる。結果として発光デバイスやそれを用いるユーザの数の増加に容易に対応できる。このことは、赤外線など色情報を利用しない位置取得システムと比較しても格段の利点となる。
さらに発光マーカーの像が適切に抽出されるように、駆動電流値を調整する。すなわち発光が強すぎて色相や彩度が変化することにより、像の一部が抽出対象から除外されたり、発光が弱すぎて発光マーカーとして検出されなかったり他の物と混同したりした結果、位置情報の取得精度が低下するのを防止する。そのため、発光マーカーの像として抽出されるべき領域において最大強度の発光を表す画素が、本来の色相範囲に入るように駆動電流を調整する。
例えば電流過多の状態から駆動電流を下げていき、発光マーカーの像として抽出される領域のスコア値のうち最大スコア値の変化を取得する。そして最大スコア値が、飽和状態から脱したことを示した時点、すなわち駆動電流の変化を反映するように最大スコア値が変化を始めた時点での電流値を適正な駆動電流値として特定する。これにより、発光マーカーの像の領域が正確に抽出されるようになり、得られた位置情報が本来の発光マーカーの移動を表していなかったり、位置情報が不安定になったりするのを防ぐことができる。
以上、本発明を実施例をもとに説明した。この実施例は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。