(58)【調査した分野】(Int.Cl.,DB名)
前記入力位置取得手段は、前記オブジェクトが前記指示状態になった後に、前記ユーザが前記オブジェクトを動かした場合に、前記基準位置からの現在の前記実指示位置の移動量よりも、前記基準位置からの現在の前記入力位置の移動量が小さくなるように、前記入力位置を取得する、
ことを特徴とする請求項4に記載の情報処理装置。
前記入力位置取得手段は、前記オブジェクトが前記非指示状態から前記指示状態になり、かつ、前記指示状態のまま前記オブジェクトの位置が一定時間以上維持された場合に、現在の前記実指示位置を、前記入力位置及び前記基準位置として取得する、
ことを特徴とする請求項4、10、又は11に記載の情報処理装置。
前記入力位置取得手段は、前記オブジェクトが前記指示状態になった後に、所定の条件が満たされた場合に、現在の前記実指示位置を、新たな前記入力位置及び前記基準位置として取得し直し、
前記情報処理装置は、前記ユーザが前記入力位置を注視しているかを判定する注視判定手段を更に含み、
前記入力位置取得手段は、
前記ユーザが前記入力位置を注視していると判定した場合は、前記所定の条件が満たされても、現在の実指示位置を入力位置及び基準位置とする処理は実行せず、
前記ユーザが前記入力位置を注視していないと判定され、かつ、前記所定の条件が満たされた場合に、現在の実指示位置を入力位置及び基準位置とする処理を実行する、
ことを特徴とする請求項4、10、11、又は12に記載の情報処理装置。
【発明を実施するための形態】
【0027】
[1.情報処理システムのハードウェア構成]
以下、本発明に関わる情報処理装置を含む情報処理システムの実施形態の例を説明する。
図1は、情報処理システムの全体構成を示す図である。
図1に示すように、情報処理システム1は、情報処理装置10、位置検出装置20、及び大型ディスプレイ30を含む。情報処理装置10、位置検出装置20、及び大型ディスプレイ30は、それぞれ有線又は無線によりネットワークを介して通信可能に接続されるようにしてよい。
【0028】
情報処理装置10は、情報処理が可能なコンピュータであり、例えば、パーソナルコンピュータ、サーバコンピュータ、携帯情報端末(タブレット型コンピュータを含む)、又は携帯電話機(スマートフォンを含む)等である。情報処理装置10は、制御部11、記憶部12、通信部13、操作部14、及び表示部15を含む。
【0029】
制御部11は、例えば、少なくとも1つのマイクロプロセッサを含む。制御部11は、記憶部12に記憶されたプログラムやデータに従って処理を実行する。記憶部12は、主記憶部及び補助記憶部を含む。例えば、主記憶部はRAMなどの揮発性メモリであり、補助記憶部は、ハードディスクやフラッシュメモリなどの不揮発性メモリである。通信部13は、有線通信又は無線通信用の通信インタフェースを含み、例えば、ネットワークを介してデータ通信を行う。操作部14は、プレイヤが操作を行うための入力デバイスであり、例えば、タッチパネルやマウス等のポインティングデバイスやキーボード等である。操作部14は、プレイヤによる操作内容を制御部11に伝達する。表示部15は、例えば、液晶表示部又は有機EL表示部等である。表示部15は、制御部11の指示に従って画面を表示する。
【0030】
なお、記憶部12に記憶されるものとして説明するプログラム及びデータは、ネットワークを介してこれらに供給されるようにしてもよい。また、情報処理装置10のハードウェア構成は、上記の例に限られず、種々のコンピュータのハードウェアを適用可能である。例えば、情報処理装置10は、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器と直接的に接続するための入出力部(例えば、USBポートや映像入出力端子)を含んでもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが読取部又は入出力部を介して、情報処理装置10に供給されるようにしてもよい。
【0031】
位置検出装置20は、空間に配置された物体の位置を検出する機器である。本実施形態では、位置検出装置20が3次元的(立体的)な位置を検出する場合を説明するが、2次元的(平面的)な位置のみを検出可能でもよい。例えば、位置検出装置20は、入力位置を入力するためのオブジェクトの位置を検出する。入力位置は、情報処理装置10に対して入力される画面上の位置(即ち、ユーザが指示した位置)であり、情報処理装置10が認識する画面上の位置といえる。入力位置は、一般的なポインティングデバイスで入力される位置と同様の意味である。
【0032】
オブジェクトは、位置検出装置20で位置を検出可能な物体であり、ユーザがその位置及び向きの少なくとも一方を変更可能な物体であればよい。別の言い方をすれば、オブジェクトは、ユーザが画面に向けるものであり、画面を指し示すものであればよい。オブジェクトは、ユーザ自身であってもよいし、ユーザ以外の指示部材であってもよい。オブジェクトがユーザ自身である場合には、ユーザの所定部位がオブジェクトに相当し、例えば、手、指、手首、腕、又は足などであってよい。なお、ユーザの部位とは、人体の一部分のことであり、四肢、胴体、及び頭だけでなく、身体の内側の関節や骨も含む意味である。オブジェクトがユーザ以外の指示部材である場合、ユーザが把持する部材がオブジェクトに相当してもよいし、ユーザの四肢の何れかに固定された部材がオブジェクトに相当してもよく、例えば、棒、ペン、又は入力デバイスなどであってよい。入力デバイスは、一般的なポインティングデバイスであってもよく、入力デバイスの変位や姿勢を検出可能なジャイロセンサや加速度センサを内蔵していてもよい。
【0033】
本実施形態では、ユーザの手がオブジェクトに相当する場合を説明する。このため、ユーザは、自分の手を使って入力位置を入力可能であり、手を動かすことで入力位置を移動可能である。なお、位置検出装置20は、オブジェクトである手以外の部位の位置も検出可能であってよい。例えば、位置検出装置20は、ユーザの複数の部位の各々の位置を検出可能な位置検出センサを含み、各部位の位置の3次元座標を生成可能であってよい。位置検出センサは、CCDイメージセンサ又はCMOSイメージセンサなどの撮像素子、赤外線センサなどの深度センサ、又は、これらを兼ね備えたRGBDカメラなどであってよく、例えば、ユーザの骨格の3次元座標を検出可能なKinect(登録商標)センサであってもよい。
【0034】
なお、被写体の3次元座標を検出する方法自体は、公知の種々の手法を適用可能であり、例えば、赤外線パターンのゆがみを利用するライトコーディング方式を利用してもよいし、赤外線の飛行時間を利用する飛行時間方式を利用してもよい。ここでは、被写体がユーザ(即ち、人間)であるので、位置検出装置20は、ユーザ表面の水平方向の位置及び奥行を示す深度画像に基づいて、ユーザの各部位の3次元座標を取得する。位置検出装置20が3次元座標を検出する部位は、公知の骨格抽出方法により抽出可能な部位であればよく、例えば、頭や手などであってよい。
【0035】
また、位置検出装置20は、有線通信又は無線通信用の通信インタフェースを含み、ユーザの各部位の3次元座標を示す部位情報を情報処理装置10に対して出力可能となっている。例えば、位置検出装置20は、所定のフレームレート(例えば、30fps)のもとで部位情報を生成する。別の言い方をすれば、情報処理装置10は、一定時間(例えば、1/30秒)ごとに、位置検出装置20が生成した最新の部位情報を取得可能である。なお、特にフレームレートが設定されておらず、位置検出装置20は、情報処理装置10の要求に応じて不定期的に部位情報を生成するようにしてよい。
【0036】
大型ディスプレイ30は、少なくとも1つの液晶表示装置又は有機EL表示装置である。大型ディスプレイ30の画面サイズ及びアスペクト比は任意であってよいが、ここでは、横幅が数メートル〜数十メートル程度の大きさであるものとする。なお、大型ディスプレイ30は、単体の表示装置のみから構成されるようにしてもよいし、複数の表示装置を並べて配置したマルチディスプレイ方式のものであってもよい。大型ディスプレイ30は、有線通信又は無線通信用の通信インタフェースを含み、情報処理装置10又は他のコンピュータから受信した画像を表示可能である。例えば、大型ディスプレイ30は、情報処理装置10の表示部15に表示された画像と同じ画像を表示可能であってよい。
【0037】
[2.情報処理装置が実行する処理の概要]
次に、情報処理装置10が実行する処理の概要を説明する。
図2は、情報処理システム1が利用される場面を示す図である。
図2に示すように、例えば、大型ディスプレイ30の上面中央付近に位置検出装置20が配置され、ユーザは、情報処理装置10を操作し、大型ディスプレイ30に資料を映し出してプレゼンテーションをする。なお、本実施形態では、位置検出装置20を原点O
wとするワールド座標系(あるいはビュー座標系)の座標軸であるX
w軸−Y
w軸−Z
w軸と、大型ディスプレイ30の画面左上を原点O
sとするスクリーン座標系の座標軸であるX
s軸−Y
s軸と、が設定されるものとする。また、位置検出装置20と大型ディスプレイ30は、事前に伽リブレーションされており、位置検出装置20の画角におけるユーザ及び画面の関係を把握可能となっている。
【0038】
情報処理装置10は、位置検出装置20から取得した部位情報を参照し、ユーザの手が画面に向いたことを検知すると、画面上にポインタ40を表示させる。ユーザは、ポインタ40を利用して、資料のうち説明中の部分を示すことができる。先述したように、ユーザの体から手に向けて伸ばした線と画面との交点を入力位置としてポインタ40を表示させると、入力位置に対するユーザの相対位置次第では、角度的な問題からポインタ40の表示位置の微調整が難しくなり、操作性を向上させることができない。
【0039】
図3及び
図4は、従来技術の課題の一例をより詳しく説明するための図である。
図3は、ユーザがいる空間を上から見た様子を示している。また、ここでは、入力位置を決める際の基準となる体の位置を、ユーザの頭とする。
図3に示すように、ユーザの手の位置をF
p1とし、ユーザの頭の位置をH
pとすると、従来技術では、入力位置P
1は、頭H
pから手F
p1に向けて伸ばした線L
1と、大型ディスプレイ30の画面と、の交点となる。その後、ユーザが右方向に角度Δθだけ手を移動させた場合の手の位置をF
p2とすると、その場合の入力位置P
2は、頭H
pから手F
P2に向けて伸ばした線L
2と、大型ディスプレイ30の画面と、の交点となる。この場合の入力位置の移動量(即ち、入力位置P
1とP
2の距離)は、
図3のx
12で示される。
【0040】
なお、本実施形態では、入力位置P
1に対するユーザの相対位置を示す角度をθとする。頭H
pから画面に下ろした垂線の足の位置をSとすると、相対位置θは、∠SH
pP
1(=∠SH
pF
p1)となる。また、頭H
pと垂線の足Sとの距離をaとし、垂線の足Sと入力位置P
1との距離をbとすると、移動量x
12、相対位置θ、及びユーザの操作量であるΔθとの関係は、下記の式により表すことができる。
【0046】
例えば、操作量Δθが1°(以降、単位操作量という。)である場合の入力位置の移動量をΔx(以降、単位移動量という。)とすると、上記の数式5により、相対位置θと単位移動量Δxとの関係は、
図4のように表すことができる。
図4に示すように、従来技術では、角度θが大きくなると、単位移動量Δxは飛躍的に大きくなるので、入力位置の微調整が難しくなる。このため、本実施形態の情報処理装置10は、角度θが大きくなった場合の単位移動量Δxを抑制している。
【0047】
図5及び
図6は、情報処理装置10が実行する処理の概要を説明するための図である。
図5は、
図3と同様に、ユーザがいる空間を上から見た様子を示す。
図5に示すように、ユーザが手を画面に向けたばかりのときは、従来と同様に、頭H
pから手F
p3に向けて伸ばした線L
3と、大型ディスプレイ30の画面と、の交点を入力位置P
3としてよい。ただし、その後にユーザが手を動かした場合は、入力位置が従来とは異なる。例えば、ユーザが右方向に角度Δθだけ手を移動させた場合の手の位置をF
p4とすると、頭H
pから手F
p4に向けて伸ばした線L
4と、大型ディスプレイ30の画面と、の交点の位置P
4よりも、入力位置P
5は、ユーザから見て手前側となる。この場合の入力位置の移動量x
35(即ち、入力位置P
3とP
5の距離)は、従来技術の移動量x
12よりも小さくなるように抑制されている。
【0048】
本実施形態では、入力位置の移動量を抑制するために、角度θと単位移動量Δxとの関係は、
図6の実線ように定義されている。この関係は、例えば、数式5のθを「n×θ」(nは、1より大きな任意の数であり、例えば、1.1〜2.0程度であってもよい。)とすることで定義してよい。なお、
図6では、対比のために、従来技術における関係(即ち、
図4の実線)を破線で示している。
図6に示すように、本実施形態では、相対位置θの角度が大きい場合の単位移動量Δxを小さくし、角度θが大きくなったとしても入力位置の微調整を可能にすることによって、操作性を向上させている。以降、この技術の詳細を説明する。
【0049】
[3.本実施形態において実現される機能]
図7は、情報処理システム1で実現される機能の一例を示す機能ブロック図である。
図7に示すように、本実施形態では、データ記憶部100、3次元座標取得部101、実指示位置取得部102、相対位置取得部103、入力位置取得部104、処理実行部105、及び移動判定部106が、情報処理装置10で実現される。なお、以降では、特に図面を参照する必要のないときは、頭H
pや相対位置θなどの符号を省略する。
【0050】
[3−1.データ記憶部]
データ記憶部100は、記憶部12を主として実現される。データ記憶部100は、入力位置の移動量を抑制するために必要なデータを記憶する。ここでは、そのデータの一例として、相対位置θと単位移動量Δxとの関係(
図6)を示す関係データを説明する。関係データは、数式形式(例えば、数式5)であってもよいし、テーブル形式であってもよいし、プログラムコードの一部として記述されていてもよい。関係データがプログラムコードの一部である場合には、相対位置θを引数として入力すると、それに対応する単位移動量Δxを戻り値として返す関数であってよい。
【0051】
なお、データ記憶部100に記憶されるデータは上記の例に限られない。例えば、データ記憶部100は、位置検出装置20が生成した部位情報の履歴を記憶してもよい。また例えば、データ記憶部100は、ワールド座標系の空間における大型ディスプレイ30の画面の位置(例えば、画面の4隅の座標)を定義した座標データを記憶してもよい。また例えば、データ記憶部100は、ポインタ40の画像データを記憶してもよい。
【0052】
[3−2.3次元座標取得部]
3次元座標取得部101は、制御部11を主として実現される。3次元座標取得部101は、位置検出装置20から、ユーザの各部位の3次元座標を示す部位情報を取得する。部位情報は、ユーザの手の位置を示す3次元座標を含むので、3次元座標取得部101は、ユーザの手の位置を示す3次元座標を取得することになる。
【0053】
部位情報は、ユーザの手だけでなく、ユーザの位置の3次元座標を含むので、3次元座標取得部101は、ユーザの位置を示す3次元座標も取得する。ここでのユーザの位置とは、手以外の部位であり、相対位置又は入力位置を決めるために参照される位置である。本実施形態では、当該部位を基準部位という。本実施形態のようにユーザの手がオブジェクトに相当する場合、ユーザが指し示す方向は、手の位置だけでは特定できないので、この方向を特定するために基準部位を利用する。
【0054】
基準部位は、手以外の任意の部位であればよいが、例えば、手と連動しない部位であってよく、頭、首、胸、背骨、又は腰などであってよい。本実施形態では、ユーザの頭が基準部位である場合を説明する。このため、3次元座標取得部101は、ユーザの手の位置を示す3次元座標と、ユーザの頭の位置を示す3次元座標と、を取得することになる。
【0055】
[3−3.実指示位置取得部]
実指示位置取得部102は、制御部11を主として実現される。実指示位置取得部102は、ユーザにより画面に向けられた手が実際に指し示す実指示位置であって、画面を含む平面上にある実指示位置を取得する。実指示位置は、空間において、ユーザによって画面が物理的に指し示されている位置であり、例えば、ユーザの手の位置から指し示す方向に向けて伸ばした線と画面との交点である。実指示位置は、ワールド座標系の3次元座標で示されてもよいし、スクリーン座標系の2次元座標で示されてもよい。本実施形態では、実指示位置は、3次元座標で示されるものとする。また、実指示位置は、必ずしも画面上にある必要はなく、画面を含む平面上にあればよい。画面を含む平面は、画面と一致していてもよいし、画面とその周囲を含む平面であってもよい。即ち、実指示位置は、画面の内側と外側の何れにあってもよく、例えば、実指示位置取得部102は、ユーザが画面の外を指し示したとしても、画面の外の実指示位置を取得可能であってよい。
【0056】
実指示位置取得部102は、ユーザの手の位置に基づいて実指示位置を取得する。本実施形態では、手の3次元座標を取得可能なので、実指示位置取得部102は、ユーザの手の3次元座標に基づいて実指示位置を取得する。また、ユーザの頭が基準部位に相当するので、実指示位置取得部102は、ユーザの手の3次元座標と、ユーザの頭の位置の3次元座標と、に基づいて実指示位置を取得することになる。このため、例えば、実指示位置は、ユーザの頭の位置から手の位置に向けた方向によって定まる画面上の位置であってよい。なお、本実施形態では、
図5に示すユーザの頭H
pから手F
pに向けて伸ばした線Lと画面との交点をそのまま実指示位置とするが、当該交点から所定距離以内の点を実指示位置としてもよい。即ち、実指示位置は、当該交点と一致しなくてもよい。
【0057】
[3−4.相対位置取得部]
相対位置取得部103は、制御部11を主として実現される。相対位置取得部103は、実指示位置に対するユーザの相対位置を取得する。相対位置は、実指示位置とユーザとの位置関係であり、ユーザがどこから画面を指し示しているかである。別の言い方をすれば、相対位置は、実指示位置から伸びる画面上の垂線とユーザとのずれ具合であり、画面に対するユーザの位置ともいえる。相対位置は、実指示位置から見た場合のユーザの位置を特定可能な情報で表されるようにすればよく、ベクトルや座標値で表現されてもよいが、ここでは、角度(例えば、
図5のθ)が用いられるものとする。相対位置取得部103は、実指示位置に対するユーザの任意の部位の相対位置を取得すればよく、ここでは、実指示位置に対するユーザの頭の相対位置を取得する。
【0058】
例えば、相対位置取得部103は、ユーザの3次元座標に基づいて相対位置を取得する。本実施形態では、ユーザの頭が基準部位であるので、相対位置取得部103は、ユーザの頭の3次元座標に基づいて相対位置を取得することになる。例えば、相対位置取得部103は、3次元座標取得部101が取得したユーザの頭の3次元座標から、大型ディスプレイ30の画面(ここでは、X
w−Y
w平面とする。)に下ろした垂線の足S(
図5)の3次元座標を取得する。そして、相対位置取得部103は、垂線の足Sの3次元座標と、ユーザの頭H
pの3次元座標と、実指示位置又は手F
pの3次元座標と、のなす角度θを、相対位置として取得する。
【0059】
[3−5.入力位置取得部]
入力位置取得部104は、制御部11を主として実現される。入力位置取得部104は、ユーザの手の現在位置に対応する画面上の入力位置を取得する。入力位置取得部104は、ユーザの手の現在位置に基づいて入力位置を取得し、ユーザの手が動いた場合に入力位置を移動させる。
【0060】
本実施形態では、手の3次元座標を取得可能なので、入力位置取得部104は、ユーザの手の3次元座標に基づいて、入力位置を取得する。入力位置は、ワールド座標系の3次元座標で示されてもよいし、スクリーン座標系の2次元座標で示されてもよい。本実施形態では、入力位置は、3次元座標で示されるものとする。なお、入力位置取得部104は、定期的に入力位置を取得してもよいし、不定期的に入力位置を取得してもよい。
【0061】
本実施形態では、入力位置取得部104は、ユーザの手が画面を指し示していない非指示状態から画面を指し示す指示状態になった場合は、現在の実指示位置を、入力位置P
3(
図5)として取得する。非指示状態は、ユーザの手が画面に向いていない状態であり、実指示位置が画面内にない状態である。指示状態は、ユーザの手が画面に向いた状態であり、実指示位置が画面内にある状態である。
【0062】
例えば、入力位置取得部104は、ユーザの手の現在位置に基づいて、非指示状態であるか指示状態であるかを判定する。例えば、指示状態になった場合に実指示位置が取得可能になるので、入力位置取得部104は、実指示位置が取得されない場合は非指示状態であると判定し、実指示位置が取得される場合は指示状態であると判定するようにしてよい。
【0063】
入力位置取得部104は、ユーザが手を動かした場合に、相対位置に基づいて、操作量に対する入力位置の移動量を抑制可能である。先述したように、本実施形態では、非指示状態から指示状態になったばかりの時点では、実指示位置がそのまま入力位置となるので、入力位置取得部104は、ユーザの手が指示状態になった後に、ユーザが手を動かした場合に、入力位置の移動量を抑制可能である。
【0064】
操作量は、オブジェクトの一例である手の移動量(位置的な変位量)又は回転量(角度的な変位量)である。入力位置の移動量は、オブジェクトの一例である手が移動する前の入力位置と、手が移動した後の入力位置と、の距離である。抑制とは、オブジェクトの一例である手が移動した場合に、実指示位置の移動量よりも入力位置の移動量を小さくすることである。別の言い方をすれば、抑制とは、ユーザから見て実指示位置よりも手前側の位置を入力位置とすることである。
【0065】
本実施形態では、入力位置取得部104は、ユーザの手が非指示状態から指示状態になった場合の実指示位置(
図5ではP
3)を、基準位置として取得する。ここでは、非指示状態から指示状態になった場合の入力位置は実指示位置と同じなので、基準位置も、この時点の入力位置と同じとなる。このため、基準位置は、初期入力位置ということもでき、入力位置の移動の起点となる位置ということもできる。基準位置は、データ記憶部100に保持される。
【0066】
例えば、入力位置取得部104は、ユーザの手が指示状態になった後に、ユーザが手を動かした場合に、相対位置に基づいて、基準位置からの入力位置の移動量を抑制可能である。具体的には、まず、入力位置取得部104は、関係データに基づいて、現在の相対位置θに対応する単位移動量Δxを取得する。次いで、入力位置取得部104は、ユーザの手の位置変化に基づいて操作量Δθを取得し、操作量Δθと単位移動量Δxとに基づいて、基準位置からの入力位置の移動量xを決定する。
【0067】
先述したように関係データには、実指示位置の移動量よりも入力位置の移動量xの方が小さくなるように(即ち、移動量xが抑制されるように)単位移動量Δxが定義されているので、入力位置取得部104は、上記のように入力位置を計算することで、移動量xを抑制可能となる。例えば、入力位置取得部104は、相対位置θが小さいほど抑制具合を小さくし、相対位置θが大きいほど抑制具合を大きくしてよい。即ち、入力位置取得部104は、ユーザが実指示位置に対して正面に近いほど抑制具合を小さくし、実指示位置が当該正面から遠いほど抑制具合を大きくする。なお、入力位置の移動方向は、ユーザの手の位置が変化した方向又は実指示位置が変化した方向に基づいて決定されるようにすればよい。
【0068】
上記のように、本実施形態では、ユーザの手が頭に対して動いた操作量Δθに基づいて入力位置が決まるので、入力位置取得部104は、ユーザが手を動かした場合、ユーザに対する手の相対位置の変化に基づいて、入力位置を取得することになる。ユーザに対する手の相対位置とは、ユーザと手との位置関係であり、ユーザから見て手がどこにあるかである。相対位置は、ユーザから見た場合の手の位置を特定可能な情報で表されるようにすればよく、ベクトルや座標値で表現されてもよいが、上記のように、ここでは、角度であるΔθが用いられるものとする。即ち、入力位置取得部104は、ユーザが手を動かした場合に、ユーザに対して手が動いた角度Δθに基づいて、入力位置を取得することになる。入力位置取得部104は、ユーザの任意の部位に対する手の相対位置を取得すればよく、ここでは、先述したように、ユーザの頭に対する手の相対位置を取得することになる。
【0069】
また、入力位置取得部104は、ユーザの手が指示状態になった後に、ユーザが手を動かした場合に、基準位置(
図5のP
3)からの現在の実指示位置(
図5のP
4)の移動量よりも、基準位置からの現在の入力位置(
図5のP
5)の移動量が小さくなるように、入力位置を取得することになる。移動量をどれだけ小さくするかは、任意であってよいが、ここでは、角度θが大きくなるほど、実指示位置の移動量と入力位置の移動量との差が大きくなり、入力位置の移動量の抑制具合が大きくなる。
【0070】
なお、入力位置取得部104は、ユーザの手が指示状態になった後に、再び非指示状態になった場合に、入力位置を取得する処理を停止するようにしてもよい。そして、入力位置取得部104は、ユーザの手が再び非指示状態になった後に、再び指示状態になった場合に、現在の実指示位置を、新たな入力位置及び基準位置として取得し直すようにしてもよい。指示状態及び非指示状態を判定する方法は、先述した通りである。入力位置取得部104は、ユーザの手が指示状態から非指示状態になったと判定された場合は、入力位置を取得する処理を実行せず、その後再び指示状態になったと判定された場合に、入力位置を取得する処理を再開することになる。
【0071】
なお、ユーザが手を下ろした状態から手を上げて画面を指し示す場合、手が下から徐々に上に移動するので、ユーザが指し示したい位置に到達する前に、手が画面の下端部付近を指し示すことになる。このため、厳密には、指示状態が開始する位置は、必ず画面の端部となってしまうので、入力位置取得部104は、ユーザの手が非指示状態から指示状態になり、かつ、指示状態のまま手の位置が一定時間以上維持された場合に、現在の実指示位置を、入力位置及び基準位置として取得するようにしてもよい。
【0072】
手の位置が維持されるとは、手の位置が全く変わらないこと又は手の位置が略変わらないことを意味する。手の位置が略変わらないとは、手の位置の移動量が閾値未満であり、一定範囲内に手が留まることを意味する。一定時間は、予め定められた任意の時間(例えば、1秒)であればよく、固定値であってもよいし、可変値であってもよい。入力位置取得部104は、手の位置変化に基づいて、手の位置が維持されたかを判定し、維持されたと判定された場合に計時を開始して、一定時間が経過したかを判定する。入力位置取得部104は、計時中においても手の位置が維持されたかを判定し、手の位置が位置されていると判定されている間は計時を続け、手の位置が維持されないと判定された場合は計時を中止する。入力位置取得部104は、一定時間が経過したと判定された場合に、現在の実指示位置を入力位置及び基準位置として取得することになる。
【0073】
[3−6.処理実行部]
処理実行部105は、制御部11を主として実現される。処理実行部105は、入力位置取得部104により取得された入力位置に基づいて、所定の処理を実行する。本実施系形態では、所定の処理は、画面において入力位置を識別可能にする画像処理である。この画像処理は、例えば、入力位置又はその所定距離以内に画像を表示させる処理、入力位置又はその所定距離以内の色、輝度、若しくは透明度を変化させる処理、又は入力位置又はその所定距離以内に点滅などのエフェクトを施す処理である。本実施形態では、入力位置にポインタ40を表示させることが所定の処理に相当する。
【0074】
なお、所定の処理は、予め定められた任意の処理であればよく、上記画像処理以外の処理であってもよい。例えば、所定の処理は、画面に表示された画像(例えば、入力フォームやボタン)を選択する選択処理であってもよいし、仮想空間内の移動物体(例えば、3Dモデル)又は画面内の画像を移動させる移動制御処理であってもよい。また例えば、所定の処理は、ソフトウェアキーボードに対する入力処理であってもよいし、グラフィックソフトで絵を描く描画処理であってもよい。なお、画面上の複数の位置の各々と、複数の処理内容の各々と、を予め関連付けておき、入力位置に関連付けられた処理が所定の処理として実行されるようにしてもよい。
【0075】
[3−7.移動判定部]
移動判定部106は、制御部11を主として実現される。移動判定部106は、ユーザが移動したかを判定する。移動判定部106による判定対象となるユーザの部位は、任意の部位であってよく、ここでは、基準部位である頭とする。本実施形態では、移動判定部106は、部位情報の変化に基づいてユーザが移動したかを判定する。例えば、移動判定部106は、ユーザの頭の移動量が閾値以上である場合はユーザが移動したと判定し、ユーザの頭の移動量が閾値未満である場合はユーザが移動していないと判定する。頭の移動量は、ある一定期間(例えば、1秒間)における頭の位置変化を利用すればよい。
【0076】
相対位置取得部103は、移動判定部106によりユーザが移動したと判定された場合に、相対位置を取得し直す。相対位置取得部103は、現在の部位情報に基づいて、最新の相対位置を取得することになる。入力位置取得部104は、取得し直された相対位置に基づいて、入力位置を取得し直す。入力位置取得部104は、最新の相対位置に基づいて、入力位置を再び取得する。相対位置及び入力位置の取得方法は、先述した通りである。
【0077】
[4.本実施形態において実行される処理]
図8は、情報処理装置10において実行される処理の一例を示すフロー図である。
図8に示す処理は、
図7に示す機能ブロックにより実行される処理の一例であり、制御部11が、記憶部12に記憶されたプログラムに従って動作することによって実行される。
図8に示す処理は、位置検出装置20のフレームレートに基づいて定まる一定時間(即ち、処理単位であるフレーム)ごとに実行されるものとする。なお、情報処理装置10のフレームと、位置検出装置20のフレームと、は同期されているものとする。
【0078】
図8に示すように、まず、制御部11は、通信部13を介して、位置検出装置20が生成した部位情報を取得する(S1)。S1においては、制御部11は、取得した部位情報を記憶部12に記録し、部位情報の履歴を記憶部12に保持する。
【0079】
制御部11は、ユーザの手が大型ディスプレイ30の画面を指し示しているかを識別するための状態フラグの値を参照する(S2)。状態フラグは、記憶部12に記憶されており、例えば、状態フラグが「0」であることは、ユーザの手が画面を指し示していないことを意味し、状態フラグが「1」であることは、ユーザの手が画面を指し示していることを意味する。なお、状態フラグの初期値は「0」とする。このため1つ目のフレームでは、状態フラグは「0」となっている。2つ目以降のフレームでは、状態フラグの値は、直近のフレームにおける手の状態を示すので、S2では、制御部11は、直近のフレームにおいて、ユーザの手が画面を指し示していたかを判定することになる。
【0080】
状態フラグが「0」である場合(S2;状態フラグが0)、制御部11は、S1で取得した部位情報に基づいて、大型ディスプレイ30の画面が指し示されたかを判定する(S3)。S3においては、制御部11は、部位情報が示すユーザの頭と手の3次元座標を参照し、頭から手に向けて伸ばした線が、大型ディスプレイ30の画面と交差するかを判定する。先述したように、大型ディスプレイ30の画面に対応するX
w−Y
w平面上の領域は、予め記憶部12に記憶されており、制御部11は、頭から手に向けて伸ばした線が、当該領域と交差するかを判定することになる。
【0081】
画面が指し示されたと判定された場合(S3;Y)、制御部11は、ユーザの手の位置が一定時間以上維持されたかを判定する(S4)。S4においては、制御部11は、部位情報の履歴を参照し、ユーザの手の移動量が閾値以内である状態が一定時間以上継続されているかを判定することになる。なお、画面が指し示されたと判定されない場合(S3;N)、又は、ユーザの手の位置が一定時間以上維持されたと判定されない場合(S4;N)、本処理は終了し、次のフレームが訪れた場合に再びS1の処理から実行される。
【0082】
ユーザの手の位置が一定時間以上維持されたと判定された場合(S4;Y)、制御部11は、状態フラグの値を「1」にし(S5)、S1で取得した部位情報に基づいて、実指示位置を計算して入力位置として取得する(S6)。S6においては、制御部11は、頭から手に向けて伸ばした線と、大型ディスプレイ30の画面と、の交点の3次元座標を計算する。本実施形態では、実指示位置が3次元座標で表されるので、制御部11は、交点の3次元座標をそのまま実指示位置とするが、実指示位置が2次元座標で表される場合は、交点の3次元座標をスクリーン座標系の2次元座標に変換すればよい。なお、ワールド座標系とスクリーン座標系の座標変換は、所定の行列式を用いればよい。
【0083】
制御部11は、S6で取得した入力位置に基づいてポインタ40を表示させる(S7)。なお、ポインタ40の画像データは、記憶部12に予め記憶されており、制御部11は、当該画像データに基づいて、入力位置にポインタ40を表示させる。
【0084】
制御部11は、S6で計算した実指示位置を、基準位置として記憶部12に一時的に保持する(S8)。保持された基準位置は、次のフレーム以降において入力位置を決定する際に参照される。
【0085】
制御部11は、S1で取得した部位情報に基づいて、相対位置θを取得する(S9)。S9においては、まず、制御部11は、ユーザの頭の3次元座標を参照し、画面上に下ろした垂線の足の3次元座標を取得する。そして、制御部11は、垂線の足の3次元座標と、ユーザの頭の3次元座標と、実指示位置又は手の3次元座標と、のなす角度θを、相対位置として取得する。
【0086】
制御部11は、記憶部12に記憶された関係データを参照し、S9で取得した相対位置θに対応する単位移動量Δxを取得して記憶部12に一時的に保持し(S10)、本処理は終了する。保持された単位移動量Δxは、次のフレーム以降において入力位置を決定する際に参照される。
【0087】
一方、S2において、状態フラグが「1」である場合(S2;状態フラグが1)、直近のフレームにおいてユーザの手が画面に向いており、ポインタ40が表示されていたことを意味する。この場合、制御部11は、S1で取得した部位情報に基づいて、ユーザの手が画面に向いたままであるかを判定する(S11)。S11の判定方法は、S3と同様である。
【0088】
ユーザの手が画面に向いたままであると判定された場合(S11;Y)、制御部11は、S1で取得した部位情報に基づいて、ユーザが動いたかを判定する(S12)。S12においては、制御部11は、部位情報の履歴に基づいて、ユーザの頭の3次元座標の移動量を取得し、当該移動量が閾値以上であるかを判定する。制御部11は、移動量が閾値以上である場合にユーザが動いたと判定し、移動量が閾値未満である場合にユーザが動いていないと判定する。なお、閾値は、予め定められた固定値であってもよいし、可変値であってもよい。
【0089】
ユーザが動いたと判定された場合(S12;Y)、S6の処理に移行する。この場合、制御部11は、S6において現在の実指示位置を入力位置として取得し、S7において当該入力位置にポインタ40を表示させる。ポインタの表示位置(即ち、入力位置)は、この時点で変わることになる。そして、制御部11は、S8において現在の実指示位置を基準位置として保持し直し、S9において角度θを計算してS10において単位移動量Δxを保持し直す。これら保持された基準位置及び単位移動量Δxは、次のフレーム以降において参照される。
【0090】
一方、ユーザが動いたと判定されない場合(S12;N)、制御部11は、S1で取得した部位情報に基づいて、ユーザの操作量Δθを取得する(S13)。制御部11は、基準位置の3次元座標と、ユーザの頭の3次元座標と、現在の実指示位置又は手の3次元座標と、のなす角度を、操作量Δθとして取得する。
【0091】
制御部11は、記憶部12に保持された基準位置及び単位移動量Δxと、S13で取得した操作量Δθと、に基づいて、入力位置を取得する(S14)。S14においては、まず、制御部11は、操作量Δθと単位移動量Δxとを乗算することで移動量xを計算する。先述したように、この移動量xは、実指示位置の移動量よりも小さい抑止された移動量となっている。そして、制御部11は、現在の実指示位置又は手の3次元座標に基づいて、移動方向を取得する。制御部11は、基準位置から、移動方向に対して移動量xだけ離れた位置を入力位置として取得する。
【0092】
制御部11は、S14で取得した入力位置にポインタ40を表示させ(S15)、本処理は終了する。S15の処理は、S6の処理と同様であるが、ポインタ40はもともと表示されていたので、制御部11は、ポインタ40を移動させることになる。一方、S11において、ユーザの手が画面に向いたままでないと判定された場合(S11;N)、指示状態から非指示状態になったことを意味する。この場合、制御部11は、状態フラグの値を「0」にし(S16)、ポインタ40を消去する(S17)。その後、本処理は終了し、次のフレームが訪れた場合に再びS1の処理から実行される。
【0093】
以上説明した情報処理システム1によれば、ユーザが手を動かした場合の入力位置の移動量が相対位置θに基づいて抑制されるので、相対位置θが示す角度が大きくなったとしても、入力位置の微調整が可能となる。このため、ユーザが手を画面に向けることで画面上の入力位置を入力可能なユーザインタフェースにおける操作性を向上させることができる。即ち、ユーザが指し示した位置が移動した方向に入力位置が移動するという直感的な操作を保ちつつ、相対位置θが高くなった場合の入力位置の急激な移動を回避することで、操作性を向上させることができる。
【0094】
また、ユーザが画面を指し示したばかりのときは、実際に指し示した位置を入力位置にしたいと考えることが多いため、非指示状態から指示状態になった場合に、実指示位置ではない位置を入力位置にすると、ユーザは違和感を覚える可能性がある。この点、情報処理システム1では、非指示状態から指示状態になったばかりのときは実指示位置をそのまま入力位置とするので、ユーザが指示したいと思う位置を入力位置とすることができ、ユーザが違和感を覚えないようにすることができる。
【0095】
また、ユーザの手が指示状態になった後に動いた場合は、基準位置から見た入力位置の移動量が、相対位置θに基づいて抑制されるので、ユーザは、指示状態になった場合の手の位置からどのくらい手を動かせば、基準位置からどのくらい入力位置が移動するかを判断することができる。例えば、基準位置からの単位移動量Δxが相対位置θによって決まる場合には、指示状態になった後は、入力位置の移動量を操作量に比例させることができるので、より直観的な操作が可能になる。
【0096】
また、情報処理装置10は、ユーザの手の位置を示す3次元座標と、ユーザの基準部位を示す3次元座標と、を含む部位情報を取得するため、ユーザの手の位置をより正確に取得することができる。その結果、ユーザが手を動かす操作を、実指示位置、相対位置、及び入力位置をより正確に反映させることができる。
【0097】
また、実指示位置及び相対位置は、ユーザの目がある頭を基準にして決まるので、より直観的な操作を提供することができる。
【0098】
また、ユーザに対する手の相対位置の変化に基づいて入力位置が取得されユーザの手がユーザ自身に対してどれだけ動いたかを入力位置の移動に反映させることができるので、より直感的な操作が可能になる。
【0099】
また、ユーザに対して手が動いた角度に基づいて入力位置が取得され、手が動いた角度は、ユーザが感覚的に操作量を把握しやすい指標なので、より直感的な操作が可能になる。
【0100】
また、ユーザ自身が移動した場合は、実指示位置に対するユーザの相対位置が変わってしまうので、その場合に相対位置を取得し直し、当該相対位置に基づいて入力位置も取得し直すことにより、現在のユーザの位置に応じた操作を提供することができる。例えば、ユーザが移動しても相対位置を更新せず基準移動量Δxが変化しない場合には、ユーザが実指示位置の正面付近の入力位置の微調整が可能な位置に移動したとしても、基準移動量Δxが変わらないので、ユーザは違和感を覚えてしまうが、相対位置を取得し直すことでこのような違和感を回避することができる。
【0101】
また、基準位置からの実指示位置の移動量よりも、基準位置からの現在の入力位置の移動量が小さくなるように入力位置が取得されるので、基準位置から入力位置が移動する場合の移動量を抑制することができる。
【0102】
また、ユーザの手が指示状態になった後に非指示状態になった場合は、ユーザが手で画面を指し示していないので、入力位置を取得する処理を停止することにより、必要のない処理を実行することがなくなり、情報処理装置10の処理負荷を軽減することができる。その後、再び指示状態になった場合に新たな入力位置及び基準位置が取得されることにより、再びポインタ40を表示させることができる。
【0103】
また、指示状態になり、ユーザの手の位置が一定時間以上維持された場合に、現在の実指示位置を入力位置及び基準位置として取得することにより、ユーザが指し示したい位置を指し示す位置に手が移動する前に入力位置や基準位置が取得されてしまうことを防止し、ユーザが指し示したい位置に移動した後に入力位置や基準位置が取得されるので、ユーザの意図した入力位置とすることができ、ユーザの思い通りの操作を提供することができる。
【0104】
また、所定の処理として、入力位置を識別可能にする画像処理とすることで、ユーザに対して入力位置を識別させることができ、入力位置を識別可能にする情報処理装置10の操作性を向上させることができる。
【0105】
また、オブジェクトをユーザの手とすることで、より直観的な操作を提供することができ、入力デバイスを用意する必要もなくなる。
【0106】
[5.変形例]
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
【0107】
図9は、変形例における機能ブロック図である。
図9に示すように変形例では、実施形態で説明した機能の他に、注視判定部107が実現される。注視判定部107は、制御部11を主として実現される。
【0108】
(1)例えば、実施形態では、ユーザが移動すると、現在の実指示位置を新たな入力位置及び基準位置とする処理(以降、リセット処理という。)が実行される場合を説明したが、ユーザの移動以外の他の条件のもとで、リセット処理が実行されるようにしてもよい。この条件は、予め定められた条件であればよく、例えば、一定時間が経過することであってもよいし、ユーザが所定の操作をすることであってもよい。この場合、指示状態において当該条件が満たされたことに応じてリセット処理が実行され、ポインタ40の位置が更新されるようにしてよい。更に、ユーザがポインタ40付近を注視している場合は、ユーザ及び聴衆者がポインタ40付近に注目しているため、リセット処理によってポインタ40が移動しないように、リセット処理の実行をしないようにしてもよい。
【0109】
本変形例の入力位置取得部104は、ユーザの手が指示状態になった後に、所定の条件が満たされた場合に、現在の実指示位置を、新たな入力位置及び基準位置として取得し直す。例えば、所定の条件が実施形態で説明したユーザの移動であれば、入力位置取得部104は、実施形態で説明したように、移動判定部106の判定結果に基づいて、入力位置及び基準位置を取得し直す処理を実行することになる。
【0110】
また例えば、一定時間が経過することが所定の条件に相当する場合は、入力位置取得部104は、リアルタイムクロックなどを利用して、直近で基準位置を取得した時点から一定時間が経過したかを判定すればよい。なお、一定時間は、秒数で示されてもよいし、フレーム数で示されてもよい。また、一定時間は、固定値であってもよいし、可変値であってもよい。また例えば、ユーザが所定の操作をすることが所定の条件に相当する場合は、入力位置取得部104は、操作部14又は部位情報に基づいて、ユーザが所定の操作をしたかを判定すればよい。部位情報を利用する場合は、ユーザが所定のジェスチャをすることが所定の操作をすることに相当してよい。この場合、公知のジェスチャ判定を利用すればよい。
【0111】
本変形例の情報処理装置は、注視判定部107を含む。注視判定部107は、ユーザが入力位置を注視しているかを判定する。この判定は、公知の視線検出方法を利用してもよいし、部位情報から推定される視線方向を利用してもよい。公知の視線検出方法を利用する場合には、例えば、カメラでユーザの目を撮影することによって視線方向が検出されるようにしてよい。部位情報から視線方向を推定する場合には、注視判定部107は、部位情報が示す骨格の位置関係から頭の向きを取得し、当該頭の向きを視線方向としてもよい。
【0112】
注視判定部107は、ユーザの視線方向に基づいて判定処理を実行する。例えば、注視判定部107は、部位情報とユーザの視線方向とに基づいて、画面上の注視点を取得する。注視点は、ユーザの頭の位置から視線方向に向けた線と画面の交点としてよい。例えば、注視判定部107は、注視点と入力位置との距離が閾値未満であるかを判定する。注視判定部107は、当該距離が閾値未満である場合はユーザが入力位置を注視していると判定し、当該距離が閾値以上である場合は、ユーザが入力位置を注視していないと判定する。
【0113】
入力位置取得部104は、ユーザが入力位置を注視していると判定された場合は、所定の条件が満たされても、現在の実指示位置を入力位置及び基準位置とするリセット処理は実行しない。この場合、入力位置取得部104は、現在の基準位置をそのまま利用して、実施形態で説明した方法と同様に、ユーザの手の現在位置に基づいて、入力位置を取得する。このため、ユーザが手を動かさなければポインタ40は現在の位置で固定される。
【0114】
一方、入力位置取得部104は、ユーザが入力位置を注視していないと判定され、かつ、所定の条件が満たされた場合に、現在の実指示位置を入力位置及び基準位置とするリセット処理を実行する。この場合は、入力位置及び基準位置がリセットされ、ポインタ40の位置が変更されることになる。
【0115】
変形例(1)によれば、ユーザが入力位置を注視している場合は、リセット処理を実行しないので、ユーザが手を動かさずに入力位置を見ているにもかかわらず、入力位置が勝手に変わってしまうことを防止することができる。
【0116】
(2)また例えば、入力位置取得部104は、ユーザが手を動かした場合に、手の速度に基づいて、入力位置を取得するようにしてもよい。例えば、入力位置取得部104は、ユーザの手の速度に基づいて入力位置の移動量を決定する。手の速度と入力位置の移動量との関係は、予めデータ記憶部に記憶させておくようにしてよい。この関係には、手の速度が速いほど入力位置の移動量が大きくなり、手の速度が遅いほど入力位置の移動量が小さくなるように定められていてよい。ここでは、入力位置取得部104は、ユーザの手の速度に基づいて、単位移動量Δxを変更する。
【0117】
図10は、変形例(2)における関係データのデータ格納例を示す図である。
図10に示すように、ユーザの手の速度によって、入力位置取得部104が参照する関係データが変わるようにしてよい。
図10では、ユーザの手の速度が遅い場合の関係データを実線で示し、ユーザの手の速度が速い場合の関係データを一点鎖線で示している。例えば、入力位置取得部104は、ユーザが指示状態のまま手を速く動かした場合には、入力位置の微調整をそれほど行わなくてよいものとして、単位移動量Δxを大きくしてよい。一方、入力位置取得部104は、ユーザが指示状態のまま手を遅く動かした場合には、入力位置の微調整が必要であるものとして、単位移動量Δxを小さくしてよい。単位移動量Δxに基づいて入力位置を取得する方法自体は、実施形態で説明した方法と同様である。
【0118】
変形例(2)によれば、ユーザの手を動かした場合の速度に基づいて入力位置が取得されるので、より直観的な操作が可能となり、操作性を更に向上させることができる。
【0119】
(3)また例えば、実施形態では、指示状態のままユーザの手の位置が一定時間以上維持された場合に入力位置の取得が開始される場合を説明したが、他の条件のもとで入力位置の取得が開始されてもよい。例えば、入力位置の取得を開始するための合図(別の言い方をすれば、ポインタ40を表示させるための合図)となるジェスチャを定めておき、ユーザがそのジェスチャをした場合に、入力位置の取得が開始されてもよい。
【0120】
本変形例の入力位置取得部104は、ユーザの手が指示状態になり、かつ、所定の状態になった場合に、現在の実指示位置を入力位置及び基準位置として取得する。所定の状態とは、ユーザの意志により実現可能な状態であればよく、例えば、ユーザが手で所定のジェスチャをすることである。ここでは、手がオブジェクトに相当するので、所定のジェスチャは、手を握ること、手を開くこと、又は所定の指だけを立てることであってよい。入力位置取得部104は、ユーザの手が指示状態になったとしても、所定の状態になるまでは、入力位置及び基準位置の取得を待機する。
【0121】
例えば、入力位置取得部104は、部位情報に基づいて、ユーザの手が所定の状態になったかを判定する。この場合、入力位置取得部は、部位情報が示す手の位置変化が所定の変化をしたかを判定する。また例えば、位置検出装置20が撮影した画像に基づいて、所定の状態になったかを判定してもよい。この場合、所定の状態を示すテンプレート画像を用意しておき、入力位置取得部104は、テンプレートマッチングにより、ユーザの手が所定の状態になったかを判定してもよいし、画像の時系列的な変化に基づいて、ユーザの手が所定の状態になったかを判定してもよい。
【0122】
入力位置取得部104は、ユーザの手が所定の状態を維持したまま、ユーザが手を動かした場合に、基準位置に基づいて入力位置を取得する。即ち、入力位置取得部は、入力位置及び基準位置が取得された後も、ユーザの手が所定の状態になったかを判定し続けるようにしてよい。入力位置の取得方法は、実施形態で説明した通りである。入力位置取得部は、ユーザの手の所定の状態が解除された場合に、入力位置を取得する処理を終了するようにしてよい。
【0123】
変形例(3)によれば、ユーザの手が指示状態になった後に所定の状態になった場合に、現在の実指示位置が入力位置及び基準位置として取得されるので、ユーザ自身が入力位置の取得開始の合図をすることができる。その結果、ユーザが意図した位置を入力位置とすることができる蓋然性を高めることができる。
【0124】
(4)また例えば、実施形態では、ユーザの手が指示状態になった場合の実指示位置を基準位置とし、基準位置からの相対的な移動量xに基づいて、移動量が抑制されるように入力位置を取得する場合を説明したが、入力位置の取得方法は、これに限られない。入力位置は、過去の実指示位置に基づいて相対的に取得されなくてもよく、現在の実指示位置に基づいて絶対的に取得されてもよい。
【0125】
図11は、変形例(4)における入力位置の取得方法を示す図である。
図11に示すように、入力位置取得部104は、現在の実指示位置をユーザ側にずらすことによって、入力位置の移動量を抑制してもよい。例えば、ユーザの手の位置がF
p10である場合の実指示位置をP
10とすると、実指示位置P10を、現在の相対位置θ
10に対応する距離y
10だけ移動させた位置P
11を入力位置としてよい。その後、ユーザが手を右に動かした場合の手の位置をF
p11とし、その場合の実指示位置をP
12とすると、実指示位置P
12を、現在の相対位置θ
11に対応する距離y
11だけ移動させた位置P
13を入力位置としてよい。なお、距離y
11は、距離y
10よりも長くてよい。相対位置θと距離yとの関係を示すデータは、データ記憶部100に予め記憶させておけばよい。実指示位置取得部102は、現在の相対位置θに関連付けられた距離yだけ、実指示位置をユーザ側に移動させることになる。このようにすることでも、操作量に対する入力位置の移動量を抑制可能である。
【0126】
(5)また例えば、位置検出装置20が大型ディスプレイ30の上面に配置される場合を説明したが、位置検出装置20は、オブジェクトの一例である手を検出可能な位置に配置されるようにすればよく、上面以外の任意の位置に配置されていてよい。例えば、位置検出装置20は、大型ディスプレイの左、右、又は下に配置されていてよい。更に、位置検出装置20は、ユーザが身に着けていてもよい。例えば、眼鏡に位置検出装置20を備え付けていてもよい。即ち、位置検出装置20は、ウェアラブルであってよい。
【0127】
位置検出装置20がウェアラブルである場合、情報処理装置10は、位置検出装置20が検出した画面のサイズ及びゆがみ具合に基づいて、画面に対するユーザの位置を推定してよい。例えば、画面に対するユーザの位置と、その位置から画面を見たときの画面のサイズ及びゆがみ具合と、の関係を示すデータは、事前にデータ記憶部100に登録されているものとする。このデータは、数式形式であってもよいし、数式以外のデータであってもよい。情報処理装置10は、位置検出装置20が検出した画面と、当該データと、を比較して、マッチング度が最も高いデータの位置を、ユーザの現在の位置として推定してよい。情報処理装置10は、画面に対するユーザの位置を推定できれば、位置検出装置20から見たユーザの手の位置を取得可能なので、空間における画面、ユーザ、及び手の位置関係を特定可能となる。以降の処理は、実施形態及び上記変形例で説明した処理と同様であってよい。
【0128】
また例えば、実施形態では、ユーザの手が非指示状態から指示状態になった場合は、現在の実指示位置を入力位置とする場合を説明したが、指示状態になったばかりの入力位置は、実指示位置でなくてもよい。この場合、実指示位置から所定距離だけずらした位置を入力位置としてもよいし、実指示位置を含む領域内の任意の位置を入力位置としてもよい。また例えば、ユーザの各部位の3次元座標を示す部位情報に基づいて実指示位置などが特定される場合を説明したが、ユーザの手などの位置を識別可能な情報を利用すればよく、必ずしも3次元座標を利用する必要はない。例えば、ユーザの各部位の位置は、2次元座標を示してもよいし、位置検出装置20から見たときのベクトル情報で示してもよい。
【0129】
また例えば、実施形態では、相対位置の基準となるユーザの位置が頭である場合を説明したが、当該位置は他の部位であってもよい。例えば、相対位置取得部103は、ユーザの首、胸、背骨、又は腰などの胴体の何れかの部位を基準にして相対位置を取得してもよい。また例えば、相対位置取得部103は、胴体以外にも、ひじ又は肩などの手以外の部位を基準にして相対位置を取得してもよい。また例えば、実施形態では、ユーザに対する手の相対位置の変化に基づいて入力位置が取得される場合を説明したが、オブジェクトが手以外であり、特に相対位置を利用しなくてもユーザが指し示したい方向を特定可能な場合には、相対位置は利用しなくてもよい。例えば、ジャイロセンサ又は加速度センサが内蔵されたコントローラがオブジェクトに相当する場合には、オブジェクトの向き(姿勢)を検出可能なので、このような場合には、相対位置を利用しなくてもよい。このため、実施形態では、相対位置の一例として説明した角度も特に利用しなくてもよい。
【0130】
また例えば、実施形態では、ユーザが移動した場合に相対位置を取得し直す場合を説明したが、特にこの処理は省略し、ユーザが移動しても指示状態になったときの相対位置をそのまま利用して入力位置が取得されるようにしてもよい。また例えば、実施形態では、基準位置からの入力位置の移動量が、基準位置からの実指示位置の移動量よりも小さくなるように、入力位置が決定される場合を説明したが、特に基準位置を設定しない場合には、基準位置からの移動量を考慮せずに入力位置が決定されるようにしてよい。この場合、実指示位置よりもユーザ側の位置を入力位置とすることで、入力位置の移動量が抑制されるようにしてよい。
【0131】
また例えば、ユーザの手が非指示状態になった場合に入力位置を取得する処理が停止される場合を説明したが、非指示状態になったとしても、この処理は実行されたままでもよい。ただし、非指示状態なので、入力位置として取得された位置は、画面の外側の位置となるため、ポインタ40は画面に表示されないことになる。また例えば、ユーザの手の位置が一定時間以上維持された場合に実指示位置を入力位置及び基準位置としたが、特に手の位置の維持を判定しなくてもよい。この場合、変形例(3)で説明したように、ユーザの手が所定の状態となった場合の実指示位置を入力位置及び基準位置としてもよいし、その他の操作が行われた場合の実指示位置を入力位置及び基準位置としてもよい。また例えば、実施形態では、実指示位置を取得するための基準部位が頭である場合を説明したが、基準部位は他の部位であってもよい。例えば、基準部位は、ユーザの首、胸、背骨、又は腰などの胴体の何れかの部位であってもよいし、胴体以外にもひじ又は肩などの手以外の部位であってもよい。
【0132】
また例えば、オブジェクトの一例としてユーザの手を説明したが、先述したように、オブジェクトは、手以外の部位であってもよいし、ユーザの部位以外の操作部材であってもよい。実施形態及び上記変形例で手と記載した箇所は、オブジェクトと読み替えることができる。例えば、オブジェクトがユーザの指である場合は、ユーザが指の向きを変えることによって、入力位置を入力可能であってもよい。また、オブジェクトの位置が変わらなくても、その場で回転することによって、指し示す位置が変わるようにしてもよい。また例えば、画面の一例として大型ディスプレイ30を説明したが、画面は、画像が表示される面であればよく、プロジェクトの光が投影される平面(例えば、スクリーン又は壁)であってもよい。
【0133】
また例えば、位置検出装置20は、深度センサを含んでいなくてもよく、カメラで撮影した画像の被写体のサイズから深度を推定してもよい。この場合、ユーザの標準的なサイズを登録しておき、位置検出装置20は、標準的なサイズと、画像に撮影されたユーザのサイズと、を比較して深度を推定してもよい。更に、位置検出装置20がウェアラブルである場合には、画面の標準的なサイズを登録しておき、位置検出装置20は、標準的なサイズの画面と、画面に撮影された画面のサイズ及びゆがみ具合と、を比較して深度を推定してもよい。
【0134】
また例えば、情報処理装置10は、位置検出装置20と一体であってもよい。同様に、情報処理装置10は、大型ディスプレイ30と一体であってもよい。更に、位置検出装置20がプロセッサやメモリを含む場合には、情報処理装置10が実行するものとして説明した処理が位置検出装置20において実行されるようにしてもよい。この場合、位置検出装置20が本発明に係る情報処理装置に相当する。同様に、大型ディスプレイ30がプロセッサやメモリを含む場合には、情報処理装置10が実行するものとして説明した処理が大型ディスプレイ30において実行されるようにしてもよい。この場合、大型ディスプレイ30が本発明に係る情報処理装置に相当する。更に、情報処理装置10は、サーバコンピュータで実現されてもよい。