(57)【要約】【課題】指示体による指示位置を安定して決定する情報処理装置を提供する。【解決手段】情報処理装置１００は、ステレオカメラ２０８で撮像された画像を所定の時間間隔で連続して取得する画像取得部３００と、取得した画像から、ユーザが指示を行うための指示体の画像の領域を検出する指示領域検出部３０３と、指示体の画像の領域内の各画素について、ステレオカメラ２０８からの距離を取得する距離取得部３０２と、過去に取得した画像から決定した、指示体により指し示される位置である指示位置及び距離に基づいて、現在の指示位置を決定する指先位置決定部３０４と、を備える。【選択図】図２
2017187944.tif 000002
【特許請求の範囲】
【請求項１】
所定の撮像手段で撮像された画像を所定の時間間隔で連続して取得する画像取得手段と、
取得した前記画像から、ユーザが指示を行うための指示体の画像の領域を検出する指示領域検出手段と、
前記指示体の画像の領域内の各画素について、前記撮像手段からの距離を取得する距離取得手段と、
過去に取得した画像から決定した、前記指示体により指し示される位置である指示位置を保存する保存手段と、
前記保存手段に保存された前記指示位置及び前記距離に基づいて、現在の指示位置を決定する決定手段と、を備えることを特徴とする、
情報処理装置。
【請求項２】
前記決定手段は、前記距離が遠い順に所定の個数の画素を選定し、前記保存手段に保存された前記指示位置及び選定した各画素の位置に基づいて、前記現在の指示位置を決定することを特徴とする、
請求項１記載の情報処理装置。
【請求項３】
前記決定手段は、前記選定した各画素の位置と、前記保存手段に保存された前記指示位置との距離に応じて、前記選定した各画素の位置に対して重み付けを行い、重み付けした前記選定した各画素の位置により前記現在の指示位置を決定することを特徴とする、
請求項２記載の情報処理装置。
【請求項４】
前記保存手段は、過去に取得した複数の画像から決定した、複数の前記指示位置を保存しており、
前記決定手段は、重み付けした前記選定した各画素の位置の平均の位置と、前記保存手段に保存された複数の前記指示位置との平均の位置を、前記現在の指示位置を決定することを特徴とする、
請求項３記載の情報処理装置。
【請求項５】
前記決定手段は、重み付けした前記選定した各画素の位置の平均の位置と、前記保存手段に保存された前記指示位置との中間位置を、前記現在の指示位置を決定することを特徴とする、
請求項３記載の情報処理装置。
【請求項６】
前記決定手段は、前記保存手段に前記指示位置が保存されていない場合に、過去に取得した画像から決定した前記指示位置を用いずに、前記距離に基づいて前記現在の指示位置を決定することを特徴とする、
請求項１〜５のいずれか１項記載の情報処理装置。
【請求項７】
前記指示領域検出手段は、前記画像取得手段が取得した前記画像の肌色領域のうち、前記撮像手段からの距離が所定の基準の範囲にある領域を、前記指示体の画像の領域として検出することを特徴とする、
請求項１〜６のいずれか１項記載の情報処理装置。
【請求項８】
前記指示領域検出手段は、前記画像取得手段が取得した前記画像の肌色領域のうち、前記撮像手段からの距離が２０［ｃｍ］から７０［ｃｍ］の範囲にある領域を、前記指示体の画像の領域として検出することを特徴とする、
請求項７記載の情報処理装置。
【請求項９】
前記決定手段は、前記指示領域検出手段が、検出した前記指示体の画像の領域が特定の形状であると判定した場合、過去に取得した画像から決定した前記指示位置を用いずに、前記距離に基づいて前記現在の指示位置を決定することを特徴とする、
請求項１〜８のいずれか１項記載の情報処理装置。
【請求項１０】
前記決定手段は、前記指示領域検出手段が、検出した前記指示体の画像の領域が指差し形状であると判定した場合、前記保存手段に保存された前記指示位置を用いずに、前記距離に基づいて前記現在の指示位置を決定することを特徴とする、
請求項９記載の情報処理装置。
【請求項１１】
前記決定手段は、前記選定したＮ個（Ｎは２以上の整数）の画素から、さらに距離が遠い順にＭ個（Ｍ＜Ｎ）の画素を選定し、前記Ｎ個の画素に基づいて前記現在の指示位置の３次元座標のうちの２つの座標を決定し、前記Ｍ個の画素に基づいて前記現在の指示位置の３次元座標のうちの残りの１つの座標を決定することを特徴とする、
請求項１〜１０のいずれか１項記載の情報処理装置。
【請求項１２】
前記決定手段は、
前記Ｎ個の画素の位置と、前記保存手段に保存された前記指示位置との距離に応じて、前記Ｎ個の画素の位置に対して重み付けを行い、重み付けした前記Ｎ個の画素の位置により前記現在の指示位置の３次元座標のうちの前記２つの座標を決定し、
前記Ｍ個の画素の３次元座標のうちの残りの前記１つの座標を平均することで、前記現在の指示位置の３次元座標のうちの残りの前記１つの座標を決定することを特徴とする、
請求項１１記載の情報処理装置。
【請求項１３】
所定の表示手段の前記現在の指示位置に応じた位置に、ポインタを表示させる表示制御手段を備えることを特徴とする、
請求項１〜１２のいずれか１項記載の情報処理装置。
【請求項１４】
所定の撮像手段に接続される情報処理装置により実行される方法であって、
前記撮像手段で撮像された画像を所定の時間間隔で連続して取得する工程と、
取得した前記画像から、ユーザが指示を行うための指示体の画像の領域を検出する工程と、
前記指示体の画像の領域内の各画素について、前記撮像手段からの距離を取得する工程と、
過去に取得した画像から決定した、前記指示体により指し示される位置である指示位置を及び前記距離に基づいて、現在の指示位置を決定する工程と、を含むことを特徴とする、
指示位置の決定方法。
【請求項１５】
所定の撮像手段に接続されるコンピュータを、
前記撮像手段で撮像された画像を所定の時間間隔で連続して取得する画像取得手段、
取得した前記画像から、ユーザが指示を行うための指示体の画像の領域を検出する指示領域検出手段、
前記指示体の画像の領域内の各画素について、前記撮像手段からの距離を取得する距離取得手段、
過去に取得した画像から決定した、前記指示体により指し示される位置である指示位置を保存する保存手段、
前記保存手段に保存された前記指示位置及び前記距離に基づいて、現在の指示位置を決定する決定手段、
として機能させるためのコンピュータプログラム。
【請求項１６】
請求項１５記載のコンピュータプログラムを記憶するコンピュータにより読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想空間を操作するユーザインタフェースを備えた情報処理装置に関する。ユーザインタフェースは、以下「ＵＩ」という。
【背景技術】
【０００２】
ＡＲ（Augmented Reality）やＭＲ（Mixed Reality）等の技術分野では、ヘッドマウントディスプレイ（以下、「ＨＭＤ」という。）を用いたＵＩが実現されている。例えば、ユーザは、ＨＭＤにより表示される仮想オブジェクトを、手指等の指示体を用いてジェスチャ操作を行うことができる。ジェスチャによる仮想オブジェクトの操作を可能としたＵＩでは、ＨＭＤに搭載されるカメラにより撮影された画像から指示体の画像の領域を検出し、検出した指示体の画像の領域内の一点（指示位置）を操作用等のポインタとする。ユーザは、ポインタを操作することで、仮想オブジェクトに対する各種ジェスチャ操作を行うことができる。
【０００３】
一般的にポインタは、検出した指示体の画像の領域の重心もしくは指示体の画像の領域の先端（例えば指先）に設けられる。例えば特許文献１のシステムは、手の画角内への侵入方向からポインタとなる手領域の指先位置を決定する。指先位置が指示位置となる。このようなポインタは、操作入力位置を示すカーソルの役割のみならず、操作状況をユーザが把握し易くするためのフィードバック手段としても利用される。またポインタは、ＵＩにおいて、ＨＭＤにより表示される仮想オブジェクトと指示体（手）とのヒット判定を行うための基点として利用される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−２２９４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、手領域の指先位置が距離精度のバラつきや手ブレ、手の傾き、手の形状等により安定しないために、ポインタの位置（指示位置）を安定して正確に決定することができないことがある。ポインタの位置が正確に決められない場合、操作性が低下するだけでなく、情報処理装置内部で行われる仮想オブジェクトと手とのヒット判定が正確に行えなくなる。
【０００６】
本発明は、上記の問題を解決するために、指示体による指示位置を安定して決定する情報処理装置を提供することを主たる課題とする。
【課題を解決するための手段】
【０００７】
上記課題を解決する本発明の情報処理装置は、所定の撮像手段で撮像された画像を所定の時間間隔で連続して取得する画像取得手段と、取得した前記画像から、ユーザが指示を行うための指示体の画像の領域を検出する指示領域検出手段と、前記指示体の画像の領域内の各画素について、前記撮像手段からの距離を取得する距離取得手段と、過去に取得した画像から決定した、前記指示体により指し示される位置である指示位置を保存する保存手段と、前記保存手段に保存された前記指示位置及び前記距離に基づいて、現在の指示位置を決定する決定手段と、を備えることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、過去に決定した指示位置を現在の指示位置を決定する要素に用いることで、指示位置を安定して正確に決定することができる。
【図面の簡単な説明】
【０００９】
【図１】（ａ）、（ｂ）はシステムの説明図。
【図２】（ａ）、（ｂ）は情報処理装置の説明図。
【図３】指先位置決定処理の説明図。
【図４】指先位置決定処理を表すフローチャート。
【図５】（ａ）〜（ｅ）は手の形状毎の指先位置の例示図。
【図６】（ａ）、（ｂ）は指先位置決定処理の説明図。
【発明を実施するための形態】
【００１０】
以下、図面を参照して実施形態を詳細に説明する。ただし、本実施形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
【００１１】
（構成）
図１は、ヘッドマウントディスプレイ（ＨＭＤ）をユーザインタフェースに用いた情報処理装置を備えるシステムの説明図である。ＨＭＤ１０１は、ステレオカメラを搭載しており、ＲＧＢ画像を撮像することができる。情報処理装置１００とＨＭＤ１０１とは、通信ケーブル１０５により接続される。情報処理装置１００は、通信ケーブル１０５を介してＨＭＤ１０１からＲＧＢ画像を取得する。また、情報処理装置１００は、ＨＭＤ１０１に表示させるオブジェクト（仮想オブジェクト）を通信ケーブルを介してＨＭＤ１０１に送信する。ＨＭＤ１０１は、ユーザ１０６の頭部に装着される。ＨＭＤ１０１は、表示領域１０４に、情報処理装置１００から取得した仮想オブジェクト１０３ａ、１０３ｂを表示する。
【００１２】
本実施形態では、ユーザ１０６が表示領域１０４に表示される仮想オブジェクト１０３ａ、１０３ｂを操作する場合について説明する。情報処理装置１００は、ユーザ１０６に対してジェスチャ操作の基点となるポインタ１０７を提示する。ユーザ１０６は、ポインタ１０７を利用して、操作対象となる仮想オブジェクト１０３ａ、１０３ｂを操作する。本実施形態では、情報処理装置１００とＨＭＤ１０１とが、ＵＳＢ（Universal Serial Bus）等により有線接続される例を説明するが、無線接続により構成してもよい。無線接続には、ＮＦＣ（Near Field Communication）やbluetooth（登録商標）等の近距離無線通信、ワイヤレスＵＳＢを用いることができる。
【００１３】
図１（ｂ）は、ユーザ１０６に提示されるポインタ１０７の説明図である。ポインタ１０７は、ユーザ１０６の手１０２の位置に対応づけて表示される。本実施形態のポインタ１０７は、ＨＭＤ１０１に搭載されるステレオカメラによって撮像された画像に含まれる手領域内にあり、かつＨＭＤ１０１から最も遠い場所に位置する点である。図１（ｂ）に示すように、本実施形態では、ＨＭＤ１０１の表示領域１０４に平行な二次元平面にｘ軸、ｙ軸、表示領域１０４に直交する方向にｚ軸を設定して、３次元空間内の座標（位置）を表す。ｚ軸方向が深さ情報（距離情報）であり、ＨＭＤ１０１から遠ざかる（深さが深くなる、距離が大きくなる）方向を正の方向としている。なお、ＨＭＤ１０１の座標系と３次元空間の座標系は適切にキャリブレーションされており、ＨＭＤ１０１の座標系（ｈｘ、ｈｙ、ｈｚ）は、実空間の３次元座標（ｘ、ｙ、ｚ）に１対１で対応する。
【００１４】
本実施形態では仮想オブジェクト１０３ａ、１０３ｂへユーザが指示を行う（ユーザが操作する）ための指示体としてユーザ１０６の手及びその指先を用いる例を説明する。指示体には、この他に、スタイラスペンや差し棒等の操作器具を用いることができる。ポインタ１０７は、指示体の画像領域内の所定の点である指示位置に提示される。つまりポインタ１０７は、指示体により指し示される位置に提示される。また、ＨＭＤ１０１は、撮像装置を備えたウェアラブルな表示装置であればよい。
【００１５】
図２は、情報処理装置１００の説明図である。図２（ａ）は情報処理装置１００のハードウェア構成図であり、図２（ｂ）は情報処理装置１００の機能ブロック図である。なお、ＨＭＤ１０１は、ステレオカメラ２０８で撮像したＲＧＢのステレオ画像を情報処理装置１００へ送信する。
【００１６】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）２００、ＲＡＭ（Random
Access Memory）２０１、及びＲＯＭ（Read Only Memory）２０２を備えたコンピュータである。情報処理装置１００は、ＨＭＤ１０１との間のインタフェースであるディスプレイインタフェース（Ｉ／Ｆ）２０４及び入力Ｉ／Ｆ２０５と、ストレージ２０７との間のインタフェースであるストレージＩ／Ｆ２０６とを備える。ＣＰＵ２００、ＲＡＭ２０１、ＲＯＭ２０２、ディスプレイＩ／Ｆ２０４、入力Ｉ／Ｆ２０５、及びストレージＩ／Ｆ２０６は、バス２０３を介して相互に通信可能に接続される。
【００１７】
ＣＰＵ２００は、ＲＯＭ２０２からコンピュータプログラムを読み込み、ＲＡＭ２０１を作業領域に用いて実行することで、情報処理装置１００の動作及びＨＭＤ１０１の表示を制御する。ＲＯＭ２０２は、起動プログラム、オペレーティングシステム等の各種プログラム、デバイスドライバ等を記憶する。ＲＡＭ２０１は、高速にアクセス可能な一時記憶領域を提供する。
ディスプレイＩ／Ｆ２０４は、ＣＰＵ２００で生成した仮想オブジェクトを表す信号をＨＭＤ１０１で処理可能な信号に変換する。入力Ｉ／Ｆ２０５は、ＨＭＤ１０１に搭載されているステレオカメラ２０８で撮像したＲＧＢ画像を入力信号として受信し、情報処理装置１００で処理可能な信号に変換する。
ストレージＩ／Ｆ２０６は、ストレージ２０７へのデータの書き込み及び読み出しを行う。ストレージ２０７には、情報処理装置１００が生成、出力する仮想オブジェクトに関する情報が格納される。ストレージ２０７は、ディスクデバイスやフラッシュメモリ、ネットワークドライブ、ＵＳＢドライブ等の大容量記憶装置である。また、複数の記憶装置を並列に接続して構成されていてもよい。
【００１８】
情報処理装置１００は、ステレオカメラ２０８で撮像されたＲＧＢ画像から手領域を検出し、ポインタの位置となる指示位置として、指先位置を決定する。ステレオカメラ２０８で撮像されたＲＧＢ画像は、ＲＡＭ２０１に一時保存され、ＣＰＵ２００に適宜読み出されて処理される。なお、ＲＧＢ画像は、ストレージ２０７に蓄積されてもよい。
【００１９】
このような構成の情報処理装置１００は、画像取得部３００、領域検出部３０１、距離取得部３０２、指示領域検出部３０３、指先位置決定部３０４、表示制御部３０５、データ読出部３０６、及び記憶部３０７として機能する。これらの機能は、ＣＰＵ２００が、コンピュータプログラムを実行することで実現される。また例えば、これらの機能は、少なくとも一部がハードウェアにより実現されてもよい。
【００２０】
画像取得部３００は、ステレオカメラ２０８から入力される左右のＲＧＢ画像（ＲＧＢステレオ画像）を所定の時間間隔で連続して取得し、ＲＡＭ２０１に随時保存する。ＲＧＢステレオ画像は、２つの視点から撮像された２つのＲＧＢ画像から構成される。２つのＲＧＢ画像間にはズレ（視差）があり、それぞれ右目と左目に対応付けられる。保存されたＲＧＢステレオ画像は、情報処理装置１００により順次処理される。本実施形態では、画像取得部３００がＲＧＢステレオ画像を取得する周期が、ステレオカメラ２０８が撮像する映像のフレームレートに一致するものとする。ただし、フレームレートに限らない所定時間を画像取得の周期として設定することも可能である。本実施形態では、左目に対応付けられたＲＧＢ画像をマスター画像、右目に対応づけられたＲＧＢ画像をスレーブ画像として処理するがこの限りではない。
【００２１】
領域検出部３０１は、ＲＡＭ２０１に保存されるＲＧＢステレオ画像の肌色情報を利用することで、肌色領域を検出する。肌色領域は、認識対象であるユーザ１０６の手１０２の画像の領域を検出するための領域となる。領域検出部３０１は、検出した肌色領域をＲＡＭ２０１に保存する。
【００２２】
距離取得部３０２は、ＲＡＭ２０１に保存される肌色領域の情報に基づいて、肌色領域の各画素のＨＭＤ１０１からの距離（深さ）を算出することにより取得する。距離取得部３０２は、ステレオ画像を構成する２つのＲＧＢ画像（マスター画像及びスレーブ画像）の対応点を探索し、視差に基づいて三角測量を用いて距離を算出する。ここで「対応点」とは、空間中のある一点を二つの視点で同時に撮影したときに、それぞれの視点で撮影した画像中に写った当該点のことであり、一般的に「ステレオ対応点」と呼ばれる。距離の算出方法の詳細は後述する。距離取得部３０２は、算出した各画素の距離を表す距離情報をＲＡＭ２０１に保存する。
【００２３】
本実施形態では、距離取得のためにＲＧＢ画像を撮像するステレオカメラ２０８を用いたが、必ずしも可視画像である必要はなく、赤外ステレオカメラにより撮像した赤外線ステレオ画像を用いても距離取得を行ってもよい。またステレオカメラ２０８ではなく、距離画像センサを用いることによって距離取得を行ってもよい。
【００２４】
指示領域検出部３０３は、ＲＡＭ２０１に保存されるマスター画像の肌色領域及び距離情報に基づいて、ＨＭＤ１０１からの距離が２０［ｃｍ］〜７０［ｃｍ］の範囲にある肌色領域を手領域として検出する。「手領域」は、マスター画像中のユーザの手の画像の領域である。指示領域検出部３０３は、検出した手領域をラベリングしてＲＡＭ２０１に保存する。本実施形態で手領域を「距離が２０［ｃｍ］〜７０［ｃｍ］の範囲にある肌色領域」としたのは、手全体がステレオカメラ２０８に映る範囲、かつ人の手が届く範囲を考慮した結果である。距離が２０［ｃｍ］より近い場合、撮像されるステレオ画像は肌色領域ばかりとなってしまい、手かどうかの判断が難しくなる。また人の手が届く範囲（ユーザ１０６の手１０２が写る範囲）は７０［ｃｍ］以下である場合が多く、逆に７０［ｃｍ］以上にしてしまうと、背景の肌色がノイズとなってしまう可能性が高くなる。そのために上記の範囲のＨＭＤ１０１からの距離を手領域の検出基準とした。これは一例であり、上記の問題が生じ無い場合には、手領域とする肌色領域を２０［ｃｍ］〜７０［ｃｍ］以外に設定してもよい。
【００２５】
指先位置決定部３０４は、指示領域検出部３０３によってラベリングされた手領域と、距離取得部３０２によって取得された距離情報とから指先位置を決定し、指先位置を表す情報をＲＡＭ２０１に保存する。指先位置決定処理の詳細は後述する。
上記の通り、本実施形態では指先位置（指示位置）をポインタ１０７の表示位置としてユーザ１０６に提示する。指先位置（指示位置）は、手領域に含まれる画素の中でＨＭＤ１０１から最も遠い距離情報を持つ画素に対応する実空間上の位置である。例えば、ステレオ画像中（正確にはマスター画像）の画素（ｍ、ｎ）が最もＨＭＤ１０１から遠い場合、画素（ｍ、ｎ）に対応するＨＭＤ座標系での指先位置は（ｈｘ、ｈｙ、ｈｚ）であり、実空間上の指先位置は（ｘ、ｙ、ｚ）となる。図１に示す各座標系は適切にキャリブレーションされているために、画像中の点（ｍ、ｎ）、ＨＭＤ座標系の点（ｈｘ、ｈｙ、ｈｚ）、及び実空間上の点（ｘ、ｙ、ｚ）は、変換式を用いて相互に変換可能である。
【００２６】
表示制御部３０５は、ＲＡＭ２０１に保存されている指先位置を表す情報に応じてポインタ１０７を生成し、ＨＭＤ１０１に出力する。これによりＨＭＤ１０１の表示領域１０４には、ステレオカメラ２０８で撮像された画像に加えて、ポインタ１０７が重畳表示される。
ユーザ１０６は、ポインタ１０７を仮想オブジェクト１０３ａ、１０３ｂの位置に移動させることで、仮想オブジェクト１０３ａ、１０３ｂのフォーカスや、選択が可能である。このとき情報処理装置１００では、ポインタ１０７の３次元座標と、仮想オブジェクト１０３ａ、１０３ｂの３次元座標とを利用してヒット判定を行う。ヒット判定とは、仮想オブジェクト１０３ａ、１０３ｂとポインタ１０７とが接触したか否かを判定することである。
【００２７】
データ読出部３０６は、記憶部３０７から仮想オブジェクト１０３ａ、１０３ｂを表すデータを読み出し、表示制御部３０５に送る。表示制御部３０５は、このデータに基づいて仮想オブジェクト１０３ａ、１０３ｂを生成してＨＭＤ１０１に出力する。記憶部３０７はストレージ２０７により実現される。これにより情報処理装置１００で生成された仮想オブジェクト１０３ａ、１０３ｂがＨＭＤ１０１の表示領域１０４上に表示される。ユーザ１０６は、この状態から手１０２を用いて仮想オブジェクト１０３ａ、１０３ｂに対するジェスチャ操作を開始することになる。
【００２８】
（処理）
図３は、指先位置決定処理の説明図である。ステレオ画像から取得される距離情報にはノイズが含まれているために、ＨＭＤ１０１から最も遠い１つの画素の３次元座標のみで指先位置を決定してしまうと、決定した指先位置に対する信頼性が低くなってしまう。そのために、従来、ＨＭＤ１０１から距離の遠い順に所定の個数の画素を選定し、各画素の３次元座標を平均することで指先位置が決定される。
【００２９】
例えば時刻ｔにステレオカメラ２０８で撮像された画像（フレームＦ）から従来の方法で指先位置を決定する場合、以下のようになる。
情報処理装置１００は、まず、フレームＦの画像から、手領域５００ａ及び手領域５００ａ内の複数個の画素４００ａを選定する。情報処理装置１００は、複数個の画素４００ａの位置の平均から指先位置４０１を決定する。このように任意のフレームにおいて手領域５００ａから複数の画素４００ａを選定して平均（空間的な平均）することで指先位置４０１を決定することができる。時刻ｔから所定時間後のフレームＦ＋１の画像から手領域５００ｂ及び手領域５００ｂ内の複数個の画素４００ｂを選定すると、情報処理装置１００は指先位置４０２を決定する。指先位置４０２は、フレームＦから得られた指先位置４０１に対して連続しない、飛び飛びの位置となってしまう。
【００３０】
この原因はＲＧＢステレオ画像から取得される距離情報に含まれるノイズである。ノイズが発生することで、フレーム毎に距離が安定的に取得できるとは限らない。そのために、選定される複数個の画素が安定せず、その結果、指先位置が不安定になってしまう可能性が高くなる。本実施形態では、安定的に指先位置を決定するために、空間的な平均だけではなく時間的な平均を行う。時間的な平均を行う一般的な方法としては、時刻ｔより以前の画像に基づいて決定された過去の指先位置を保存しておき、その平均から現在の画像による指先位置を決定する方法等がある。しかし、情報処理装置１００に入力されるＲＧＢステレオ画像のフレームレートが十分でない場合、操作に対する応答速度（レスポンス）が低下してしまう。
【００３１】
本実施形態の情報処理装置１００は、このように不安定な指先位置を、レスポンスの低下を抑制して安定的に決定する。情報処理装置１００は、時刻ｔから所定時間後のフレームＦ＋１’の画像から手領域５００ｂ及び手領域５００ｂ内の複数個の画素４００ｂを選定し、複数個の画素４００ｂ及び時刻ｔのときの指先位置４０１に基づいて、現在の指先位置４０３を決定する。図４は、情報処理装置１００による、このような指先位置決定処理を表すフローチャートである。
【００３２】
データ読出部３０６は、記憶部３０７から仮想オブジェクトのデータを取得する。表示制御部３０５は、データ読出部３０６が取得した仮想オブジェクトのデータに基づいて仮想オブジェクトを生成し、ＨＭＤ１０１に出力する（Ｓ１００）。ＨＭＤ１０１は、表示制御部３０５から取得した仮想オブジェクトを、ステレオカメラ２０８で撮像した画像に重畳表示する。ＨＭＤ１０１は、ステレオカメラ２０８で撮像したＲＧＢステレオ画像を所定の時間間隔、例えばフレームレートに応じて情報処理装置１００に送信する。
画像取得部３００は、ＨＭＤ１０１からＲＧＢステレオ画像を所定の時間間隔で連続して取得する（Ｓ１０１）。画像取得部３００は、取得したＲＧＢステレオ画像をフレーム毎にＲＡＭ２０１に保存する。
【００３３】
領域検出部３０１は、ＲＡＭ２０１に保存されたＲＧＢステレオ画像を解析して、マスター画像及びスレーブ画像中の肌色領域の有無を検出する（Ｓ１０２）。肌色領域を検出しない場合（Ｓ１０２：N）、表示制御部３０５は、ポインタの表示制御を行う（Ｓ１１０）。この場合、ＲＧＢステレオ画像中に肌色領域が無い、すなわち指先が撮像されていない。
【００３４】
肌色領域を検出した場合（Ｓ１０２：Y）、領域検出部３０１は、検出した肌色領域を表すデータをＲＡＭ２０１に保存する。距離取得部３０２は、ＲＡＭ２０１に保存されたＲＧＢステレオ画像の肌色領域を解析して、マスター画像中の肌色領域内の各画素のＨＭＤ１０１からの距離を取得する（Ｓ１０３）。例えば、距離取得部３０２は、マスター画像中の肌色領域の画素（ｍ、ｎ）の距離を取得する場合、スレーブ画像から画素（ｍ、ｎ）に対応するステレオ対応点（ｍ１、ｎ１）を探索する。距離取得部３０２は、探索したステレオ対応点と、マスター画像及びスレーブ画像の視差から三角測量によってＨＭＤ１０１から画素（ｍ、ｎ）までの距離を算出することで取得する。距離取得部３０２は、マスター画像中の全ての肌色領域の画素に対してこのような距離取得をおこない、その結果をＲＡＭ２０１に保存する。
【００３５】
指示領域検出部３０３は、ＲＡＭ２０１に保存されるマスター画像の肌色領域及び距離情報に基づいて、ＨＭＤ１０１からの距離が２０［ｃｍ］〜７０［ｃｍ］の範囲にある肌領域を手領域として検出する（Ｓ１０４）。指示領域検出部３０３は、検出した手領域を、手領域をラベリングしたラベル情報とともにＲＡＭ２０１に保存する。
【００３６】
指先位置決定部３０４は、ＲＡＭ２０１に保存される手領域のラベル情報及び距離情報に基づいて、ＨＭＤ１０１からの距離が遠い順に、Ｎ個の画素を選定する（Ｓ１０５）。ここでＮは２以上の整数である。指先位置決定部３０４は、選定したＮ個の画素の各々に対応する３次元空間内の３次元座標を変換式から算出して、ＲＡＭ２０１に算出結果を保存する。図３の例では、Ｎ個の画素４００ｂの各々の３次元座標（ｐ１〜ｐＮ）がＲＡＭ２０１に保存される。
【００３７】
指先位置決定部３０４は、ＲＡＭ２０１に前フレームの指先位置Ｐが保存されているか否かを判断する（Ｓ１０６）。前フレームの指先位置Ｐが保存されていない場合（Ｓ１０６：N）、指先位置決定部３０４は、ＲＡＭ２０１に保存されているＮ個の３次元座標（ｐ１〜ｐＮ）を平均して指先位置を決定し、ＲＡＭ２０１に保存する（Ｓ１０７）。
【００３８】
前フレームの指先位置Ｐが保存されている場合（Ｓ１０６：Y）、指先位置決定部３０４は、ＲＡＭ２０１に保存されているＮ個の３次元座標（ｐ１〜ｐＮ）の各々に対して、指先位置Ｐとの距離（ｄ１〜ｄＮ）を取得し、ＲＡＭ２０１に保存する（Ｓ１０８）。例えば、図３のフレームＦ＋１’の画像の例では、指先位置決定部３０４は、前フレームの指先位置４０１に対する、Ｎ個の画素４００ｂの各々の３次元座標（ｐ１〜ｐＮ）との距離（ｄ１〜ｄＮ）を取得する。
【００３９】
指先位置決定部３０４は、選定した各画素の３次元座標（ｐ１〜ｐＮ）の各々に対して、対応する距離（ｄ１〜ｄＮ）を考慮した重み付けを行う。指先位置決定部３０４は、重み付けされたＮ個の３次元座標を平均することで指先位置４０３（図３参照）を決定し、ＲＡＭ２０１に保存する（Ｓ１０９）。
具体的な指先位置の決定処理について説明する。説明を簡単にするため、Ｎ＝２とする。選定された２個の３次元座標Ｐ１（ｘ１、ｙ１、ｚ１）、Ｐ２（ｘ２、ｙ２、ｚ２）、前フレームの指先位置Ｐとの距離ｄ１、ｄ２とする。このとき、決定される指先位置の３次元座標ｘ、ｙ、ｚはそれぞれ以下のようになる。
ｘ＝（ｘ１／ｄ１＋ｘ２／ｄ２）／（１／ｄ１＋１／ｄ２）
ｙ＝（ｙ１／ｄ１＋ｙ２／ｄ２）／（１／ｄ１＋１／ｄ２）
ｚ＝（ｚ１／ｄ１＋ｚ２／ｄ２）／（１／ｄ１＋１／ｄ２）
Ｎ＞２の場合にも同様に取得することで、時刻ｔ
における最終的な指先位置を決定することができる。
【００４０】
図３の例では、前フレームであるフレームＦの画像から指先位置４０１が決定し、現在のフレームであるフレームＦ＋１’の画像から指先位置４０３が決定する。指先位置４０１及び指先位置４０３は、いずれも手領域５００ａ、５００ｂの中指の先端であり、略同位置である。これに対してＮ個の３次元座標を単に平均した場合は指先位置４０２が決定する。指先位置４０１が手領域５００ａの中指の先端であるのに対し、指先位置４０２が手領域５００ｂの中指の中程に決定されて、手領域内における位置が移動している。このように手を動かしていない場合でも、ＲＧＢステレオ画像の距離取得に起因するノイズの影響で、３次元座標を単に平均するだけでは指先位置がブレてしまう可能性が高い。しかし、本実施例形態の指先位置の決定処理を用いるとブレを小さくし、安定して指先位置を決定することが可能となる。
【００４１】
表示制御部３０５は、ＲＡＭ２０１に指先位置が保存されている場合、ＨＭＤ１０１に、指先位置にポインタ１０７を表示するように指示する（Ｓ１１０）。情報処理装置１００は、ポインタをＨＭＤ１０１に表示させると、システムを終了するか否かを判断する（Ｓ１１１）。情報処理装置１００は、本実施形態では、物理ボタンやＧＵＩの操作によりシステムの終了指示が入力された場合、もしくは認識対象が検出されないまま所定時間が経過した場合にシステムを終了すると判断する。システムを終了しない場合（Ｓ１１１：N）、情報処理装置１００は、Ｓ１０１の処理に戻り、ＨＭＤ１０１から次のフレームのＲＧＢステレオ画像を取得する。システムを終了する場合（Ｓ１１１：Y）、情報処理装置１００はすべての処理を終了する。
【００４２】
以上のように本実施形態の情報処理装置１００は、重み付けされたＮ個の画素の３次元座標の平均により指先位置（指示位置）を決定する。これによれば、ステレオ画像の距離取得に起因するノイズ（時間的な変動）の影響がある場合であっても、指先位置（指示位置）を安定的に決定することができる。その結果、指先位置（指示位置）をジェスチャ操作のポインタとして表示する場合、ポインタの表示位置のブレが抑制されるためにユーザの操作性が向上する。また、指先位置（指示位置）をヒット判定に利用する場合においても、ブレが抑制されるために安定したヒット判定を行うことが可能となる。
【００４３】
また本実施形態では、重み付けされたＮ個の画素の３次元座標の平均の位置、及び過去に決定した複数フレームの指先位置を保存しておき、その平均の位置を指先位置に決定してもよい。十分にフレームレートの高いステレオ画像が取得できる環境であれば、複数フレームの指先位置を保存することによる操作応答性への影響を無視できる。
また、Ｎ個の画素の３次元座標（ｐ１〜ｐＮ）を単純に平均して求めた指先位置Ｐｓと直前のフレームの指先位置Ｐに基づいて、指先位置Ｐｓと指先位置Ｐとの中間位置を新たな指先位置に決定してもよい。この場合、本実施形態で説明した方法と比較して計算量を少なくすることができる。
【００４４】
［変形例１］
上記の指先位置の決定処理では、最低でも２フレームのＲＧＢステレオ画像を必要とする。しかし、フレームレートが極端に低い場合、指先位置の決定に時間がかかり、操作の応答性が低下してしまう。変形例１では、可能な限り複数のフレームを用いないで指先位置を決定する。情報処理装置１００のハードウェア構成、機能ブロックは、図２と同様である。ただし指示領域検出部３０３は、手の形状の認識も行う。
【００４５】
図５は、手の形状毎の指先位置（ポインタの表示位置）の例示図である。図５（ａ）、（ｂ）は、同じ手の形状であり、図５（ｂ）の方が傾いている。図５（ａ）、（ｂ）では、手が開かれており、指間が閉じられている。図５（ｃ）は、人差し指を立てた指差し形状である。図５（ｄ）は、人差し指と中指が立てられた形状である。図５（ｅ）は、手が開かれており、指間が開かれている。
【００４６】
図５（ａ）、（ｂ）では、指示領域検出部３０３が検出する手領域６００、６０１の形状が同じである。しかし、手がブレるなどして短い時間間隔でランダムに傾く場合、指先位置が、中指の先端である指先位置７００から人差し指の先端である指先位置７０１に飛び飛びに移動する。図５（ｄ）、（ｅ）のような手の形状６０３、６０４では、手がブレることで指先位置７０３ａ、７０３ｂ、あるいは指先位置７０４ａ〜７０４ｅのいずれかに頻繁に入れ替わってしまう。
【００４７】
図５（ｃ）のような手の形状では、他の手の形状と比較してステレオ画像の距離取得に起因するノイズ（時間的な変動）の影響を受けにくい。これは、ステレオ画像から手領域６０２内の各画素の距離を算出する際に、指先候補となる画素を選定する領域（指先側の領域）の幅（大きさ）が、他の形状と比べて小さいため、選定するＮ個の画素の位置の範囲が拡散しないためである。この場合、Ｎ個の画素の位置の３次元座標を単純に平均して指先位置７０２を決定しても、指先位置が飛び飛びの位置になる可能性が低い。つまり、図５（ｃ）のように手領域６０２の形状が指差し形状である場合、指先位置７０２を安定的に決定することができる。
【００４８】
情報処理装置１００は、図４と同様の指先位置の決定処理を行う。ただし、Ｓ１０４の処理で手領域を検出する際に、指示領域検出部３０３が手の形状も認識する。検出された手の形状が図５（ｃ）の手領域６０２の形状の場合、指示領域検出部３０３はパターンマッチングを行うことで、検出された手領域の形状が指差し形状であると判定する。
【００４９】
指示領域検出部３０３が手の形状を指差し形状のような特定の形状であると判定した場合、指先位置決定部３０４は、前フレームの指先位置ＰがＲＡＭ２０１に保存されているか否かにかかわらず、Ｓ１０６の処理で指先位置Ｐを保存していないと判定する。そのために指先位置決定部３０４は、Ｎ個の画素の３次元座標を平均して指先位置を決定する。つまり、過去の指先位置にかかわらず、最新のフレーム画像（ステレオ画像）のみにより指先位置を決定することと同等になる。指示領域検出部３０３が手１０２の形状を指差し形状以外であると判定した場合の処理は、第１の実施形態と同様である。
【００５０】
以上のように情報処理装置１００は、手の形状が指差し形状のような特定の形状である場合に、最新のフレーム画像（ステレオ画像）のみで指先位置を決定する。そのために、常に２つのフレーム画像から指先位置を決定する場合と比較して、応答性を改善できる。
【００５１】
［変形例２］
変形例２では、図５（ａ）、（ｂ）、（ｄ）、（ｅ）のように手１０２のブレにより指先位置が頻繁に入れ替わる場合、以下のような処理を行うことで、安定した指先位置の決定を行えるようにする。情報処理装置１００のハードウェア構成、機能ブロックは、指先位置決定部３０４による指先位置決定処理を除いて、図２に示したものとほぼ同様である。同様な構成についての説明は省略する。
【００５２】
変形例２における指先位置決定処理の効果を分かりやすく説明するために、手の形状が図５（ｄ）の場合について説明する。図６は、このような手の形状による指先位置決定処理の説明図である。
【００５３】
変形例２では、図３で説明した場合よりも選定する画素の数を大きくする。これは、より多くの画素の３次元座標の平均から指先位置を決定すると、特定の画素の位置（３次元座標）への依存度が減少するからである。しかし、単純に選定する画素の数を大きくすると、指先位置は手領域の中央に寄ってくる傾向にある。例えば図６（ａ）で示すように、検出した手領域８００、選定するＮ個の画素９００ａの場合、手領域８００の中央（重心）に近い位置に指先位置９０１が決定される。この重心位置に偏った指先位置９０１をポインタの位置としてしまうと操作性が低下する。操作の際、手領域８００（手１０２）に、仮想オブジェクトが隠れてしまい、ポインティングの位置精度が低下してしまうからである。つまりユーザ１０６に提示するポインタは、操作性の観点から、可能な限り手領域８００の先端位置が望ましい。
【００５４】
変形例２では、指先位置のｘ、ｙ座標をＮ個の画素の３次元座標から取得し、指先位置のｚ座標をＭ（＜Ｎ）個の画素の３次元座標から取得する。各３次元座標の取得方法は上記の通りである。各３次元座標を重み付けして平均することで指先位置を決定する。上記の例とは、ｘ、ｙ座標がＮ個の３次元座標を用い、ｚ座標がＮより小さいＭ個の３次元座標を用いて取得される点で異なる。指先位置を決定するための画素は、ＨＭＤ１０１からの距離が遠い順に選定される。この手法は、指先位置候補となる指先付近の画素のＨＭＤ１０１からの距離（深さ、ｚ座標）が略同じであるために有効である。つまり、選定される画素の３次元座標のｚ座標に差異は少ないが、ｘ、ｙ座標は大きく異なっている可能性が高いと仮定できる。従って、ｘ、ｙ座標についてはより多くの画素の３次元座標を平均して取得し、ｚ座標はｘ、ｙよりも少ない数の画素の３次元座標で平均して取得する。本実施形態の指先位置決定部３０４は、このようにして指先位置を決定する。
【００５５】
図４のＳ１０５の処理では、指先位置決定部３０４は、ｘ、ｙ座標取得用にＮ個の画素を選定し、選定したＮ個の画素の中からさらに距離が遠い順にＭ（Ｍ＜Ｎ）個の画素をｚ座標取得用に選定する。Ｓ１０８の処理では、指先位置決定部３０４は、Ｎ個の画素とＭ個の画素の３次元座標（ｐ１〜ｐＭ〜ｐＮ）それぞれに対し、前フレームの指先位置Ｐとの距離（ｄ１〜ｄＭ〜ｄＮ）を取得する。Ｓ１０９の処理では、指先位置決定部３０４は、ｘ、ｙ座標についてはＮ個の画素の３次元座標を重み付け平均して取得し、ｚ座標についてはＭ個の画素の３次元座標を重み付け平均することによって取得する。つまり指先位置決定部３０４は、Ｎ個の画素に基づいて３次元座標のうちの２つの座標を決定し、Ｍ個の画素に基づいて３次元座標のうちの残りの１つの座標を決定する。これにより指先位置決定部３０４は、指先位置を決定する。
【００５６】
図６（ｂ）により、このような指先位置決定処理で決定した指先位置を説明する。手領域８００、ｘ、ｙ座標用に選定された画素９００ａ、ｚ座標用に選定された画素９００ｂの場合、指先位置決定部３０４は、指先位置９０２を決定する。図６（ａ）の指先位置９０１と比較して、指先位置９０２は手領域８００の先端付近に近づいている。この方法で指先位置を決定する場合、指先位置が必ずしも手領域８００内に決定されるとは限らない。しかし、操作性の観点からは、こちらの方が好ましく、操作性が向上する。
【００５７】
このように、手が傾いた場合や特定の形状になった場合であっても、指先位置（指示位置）を安定的に決定することができる。
【００５８】
以上のような情報処理装置１００により、指示位置に応じたポインタによるジェスチャ操作の操作性が改善でき、仮想オブジェクトへのヒット判定も正確に行えるようになる。
【００５９】
［その他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵ、ＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2017187944.tif 000003
【図２】
2017187944.tif 000004
【図３】
2017187944.tif 000005
【図４】
2017187944.tif 000006
【図５】
2017187944.tif 000007
【図６】
2017187944.tif 000008