(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
以下、本発明の一実施形態について添付の図面を参照しながら説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複した説明を省く。
【0013】
[ジェスチャ入力装置の概要]
まず、本発明の一実施形態に係るジェスチャ入力装置1の概要について、
図1を参照しながら説明する。
図1は、一実施形態に係るジェスチャ入力装置1の概要を示した図である。ジェスチャ入力装置1としては、例えば、PCやTV等の画面を有する端末が挙げられる。ジェスチャ入力装置1は、身振りや手振り等のユーザの動作でPCやTVなどの画面を操作可能な装置である。ユーザの動作を、以下「ジェスチャ」という。
【0014】
なお、ジェスチャを行うユーザの身体部分は、ユーザの身体の一部または全部であり得る。ジェスチャは、手、腕、足、胴体、頭、視線等の動きや方向であってもよい。ジェスチャは、口の動きや音声であってもよい。
【0015】
ジェスチャ入力装置1は、カメラ10とディスプレイ20とを有し、その上で動作するソフトウェアにより、ジェスチャによる画面操作、すなわち、ジェスチャ入力を実現する。ソフトウェアの部分は等価な働きをするハードウェアによって実現されてもよい。
【0016】
ジェスチャ入力装置1は、ハードウェアの機構に関し、特定のものに依存しない。例えば、カメラ10は、ユーザの身体の一部の位置を取得できればよい。例えば、カメラ10は、距離センサ、単眼カメラ、ステレオカメラ等のセンサと物体トラッキング装置とを組み合わせて使用してもよい。カメラ10に替えてジャイロセンサ、加速度センサ、超音波などを用いて位置取得を行える端末を、ユーザが装着してもよい。
【0017】
ディスプレイ20は、PCのモニタや、TV、プロジェクタ、HMD(Head Mounted Display)等、画面表示ができるものであればよい。
【0018】
ジェスチャ入力装置1では、例えば、カメラ10によりユーザUの手の位置が検出される。検出された手の位置に基づき、離れている画面21上の手の位置に応じた位置にカーソル21aが表示される。そして、表示されたカーソル21aにより画面21上のアイコンの選択等のGUI操作が行われる。このようにして、ユーザUが行うジェスチャによりユーザUは、離れた画面の操作を行うことができる。
【0019】
本実施形態に係るジェスチャ入力装置1は、ジェスチャをするユーザの身体部分(以下では、主に「手」を例に挙げる。)のぶれ量だけでなく、カメラ10により取得したセンサデータの処理による遅延時間も考慮して、ジェスチャ入力に対する操作性のよい画面を表示する。本実施形態では、操作性に影響するぶれ量を「ぶれを平滑化し、そのぶれ量を十分小さくする処理による遅延時間」とする。これにより、本実施形態に係るジェスチャ入力装置1は、ぶれ量による遅延時間と機器の性能による遅延時間とに基づき、カーソル移動が遅延することによる使いにくさを考慮した画面を表示する。以下では、本実施形態に係るジェスチャ入力装置1について詳細に説明する。
【0020】
(機能構成)
まず、一実施形態にかかるジェスチャ入力装置1の機能構成の一例について説明する。
図2は、一実施形態にかかるジェスチャ入力装置1の機能構成の一例を示した図である。
【0021】
(遅延量算出機能)
ジェスチャ入力装置1は、遅延量を算出する機能を有する。この機能を実現するために、ジェスチャ入力装置1は、センサの精度およびユーザの身体のぶれに基づくカーソルの位置の精度を算出し、ぶれを十分に小さくするようにカーソルの位置を平滑化する際の平滑化強度を算出する。そして、算出された平滑化強度からユーザのジェスチャが画面上のカーソル操作に反映されるまでの遅延時間が算出される。ここで算出される遅延時間は、「ジェスチャを行うユーザの身体部分のぶれ量に基づく遅延時間」であり、「ぶれ量」にはユーザの身体が揺れることで生じるものと、ユーザの身体を観測するときのセンサの精度、つまり、センサによる位置検出時の検出値の誤差(実際の身体位置と検出した身体位置との差分)が含まれる。この遅延時間は、主に平滑化処理時に発生する位相のずれにより生じる遅延時間である。また、ジェスチャ入力装置1は、センサの内部処理にかかる時間や画面表示装置等の機器性能に基づく遅延時間を算出する。ジェスチャ入力装置1は、ぶれ量の平滑化による遅延時間と機器性能による遅延時間とに基づき総遅延時間を算出する。
【0022】
(画面表示機能)
ジェスチャ入力装置1は、算出された総遅延時間に基づき画面を表示する機能を有する。この機能を実現するために、ジェスチャ入力装置1は、総遅延時間とカーソルの初期位置の分布とに基づいて、画面上のオブジェクトの操作難度を算出する。操作難度は、画面操作の難易度を示す。ジェスチャが画面上のカーソル操作に反映されるまでの遅延時間と操作難度とは、遅延時間が大きい程操作難度が高くなるという相関関係を有する。よって、どのくらい遅延したらどのくらい操作が難しくなるかを示す操作難度を遅延時間から算出できる。
【0023】
ジェスチャ入力装置1は、ユーザと画面との位置関係に基づいて、画面上のオブジェクトが視認できる表示条件を算出する。表示条件としては、ユーザと画面との距離が遠ければオブジェクトを大きく表示し、ユーザと画面との距離が近ければオブジェクトを小さく表示するというような条件が挙げられる。ジェスチャ入力装置1は、算出された操作難度と表示条件とに基づいて画面上のオブジェクトを表示する。ジェスチャ入力装置1は、ジェスチャによる画面操作が難しくなりすぎないように操作難度が一定の値以下になる大きさのオブジェクトを表示する。その際、オブジェクトの大きさが大きくなるほど画面の一覧性は低下する。よって、生成された画面には、操作難度が一定の値以下であって、画面の一覧性を無用に低下させない程度の大きさのオブジェクトが表示される。
【0024】
本実施形態では、遅延量算出機能は、主に、位置取得部31、位置蓄積部32、精度算出部33、平滑化強度算出部34、平滑遅延時間算出部35、機器遅延時間算出部36、及び総遅延時間算出部37の各機能により実現される。
【0025】
位置取得部31は、ユーザの手の位置やポインティングデバイスの位置を取得し、画面上のカーソルの位置を計算する。手の座標系は、表示装置の画面の法線方向をz軸とし、画面から離れる方向を正とする。画面の平面内の水平方向をx軸、垂直方向をy軸とする。この座標系で位置取得部31は適宜、ユーザの手の座標(xh、yh、zh)を取得し、取得した手の位置に従って、画面上のカーソル座標(x、y)を計算する。カーソルの座標系は、画面の平面内の水平方向をx軸(右方向を正)、垂直方向をy軸(下方向を正)とする。手の座標からカーソルの座標pを算出する計算式の一例として式(1)を挙げる。
【0027】
ここで、ax、bx、ay、byは、実数の定数で、画面の解像度などから、実験的に定める値である。
【0028】
位置蓄積部32は、位置取得部31で算出したカーソルの座標p(x、y)を一定の時間毎に蓄積する。蓄積したカーソルの座標は、カーソルの移動速度・方向を算出する際に用いられる。一定の時間毎とは、例えば1秒間に30回などである。位置蓄積部32は、カーソルの座標を蓄積するだけでなく、カーソルの座標を破棄してもよい。例えば、一定の時間より以前に蓄積されたカーソルの座標を破棄することで、位置蓄積部32に一定の量以上のカーソルの座標が蓄積されないようにすることもできる。
【0029】
精度算出部33は、位置蓄積部32に蓄積された一定の長さのカーソルの座標列を用いて、カーソルの位置の精度を算出する。具体的には、精度算出部33は、ぶれ量を測定し、ぶれ量からカーソルの位置の精度を算出する。「ぶれ量」は、手を静止し、センサで位置を一定の回数取得した時の標準偏差と定義することができる。
【0030】
カーソルの位置の精度を算出する方法の一例としては、まず、精度算出部33は、精度を算出する旨をユーザに通知する。ユーザは、通知に応じてカーソルをできるだけ静止させる。静止させたまま一定の時間が経過し、カーソルの位置が位置蓄積部32に十分に蓄積されたとき、精度算出部33は、式(2)に従ってカーソルの位置の精度を算出する。カーソルの位置の精度は、式(2)のように分散として算出される。精度算出部33は、ユーザにカーソルの位置の精度が算出できた旨を通知する。ここでV(X)、V(Y)は標準偏差であり、mは標準偏差の計算に使用する座標列の長さであり、
および はx座標およびy座標の平均である。
【0032】
以上のようにして、精度算出部33は、ユーザの手のぶれ量を測定し、ぶれ量に基づきカーソルの位置の精度を算出する。なお、カメラ10で取得した画像上の長さを現実世界の長さに変換して扱う場合、ぶれ量は距離に比例する。よって、センサ及びユーザの距離とぶれ量とは比例関係になる。この比例関係が既知の場合は、精度算出部33は、ユーザとセンサとの距離が変わったときに再測定する必要はなく、センサ及びユーザの距離とぶれ量との既知の関係に基づき、カーソルの位置の精度を算出すればよい。
【0033】
平滑化強度算出部34は、カーソルの位置のぶれが十分に小さくなるように、所定の時間蓄積されたカーソルの位置を平滑化する際の強度を算出する。平滑化強度算出部34による平滑化の強度の算出の仕方は、平滑化をどのような関数によって行うかによって異なる。例えば、移動平均で平滑化する場合、平滑化強度算出部34は、平均に使う観測点の数を算出する。観測点の数は、平滑化の強度の一例である。
【0034】
また、例えば、指数平滑移動平均で平滑化する場合、平滑化強度算出部34は、指数平滑移動平均で平滑化するときの係数を算出する。ここで、係数の値は、平滑化の強度の一例である。
【0035】
より具体的には、例えば、式(3)のような単純な移動平均を用いる場合、平滑化強度算出部34は、式(4)によって平滑化後の分散を計算することができる。算出された平滑化後の分散は、カーソルの位置の精度を示す。
【0038】
ここで、x(t)は平滑化前の座標列(入力座標列)、Xs(t)は平滑化後の座標列、nは移動平均に用いる座標列の長さ(平均に使用する入力点の数)、V(Xs)は平滑化後の分散である。ただし、式(3)及び式(4)ではx座標のみについて記述したが、y座標についても同様である。
【0039】
平滑化強度算出部34は、式(4)で計算される平滑化後の分散を十分小さくするという条件(平滑化後の分散V(Xs)<閾値Tv;ただしTvは十分小さな分散を示す閾値)下で座標列の長さnについて解く。平滑化強度算出部34は、そのn(移動平均に用いる座標列の長さ)を平滑化強度とみなすことで平滑化強度を算出してもよい。
【0040】
また、例えば、式(5)のような指数平滑移動平均を用いる場合、平滑化強度算出部34は、式(6)によって平滑化後の分散を計算することができる。算出された平滑化後の分散は、カーソルの位置の精度を示す。
【0041】
これによれば、単純な移動平均の場合と同様に、平滑化強度算出部34は、係数αの値を平滑化強度とみなすことで平滑化強度を算出してもよい。つまり、式(6)で計算される平滑化後の分散を十分小さくするという条件(平滑化後の分散V(Xs)<閾値T;ただしTは十分小さな分散を示す閾値)下で係数αについて解く。ここで、係数αは、平滑化定数であり、小さい値ほど平滑化強度が高いことを示す。
【0044】
また、これら以外の平滑化方法についても、同様な考え方を適用して平滑化強度を算出することができる。すなわち、平滑化強度算出部34は、平滑化後のカーソルのぶれ量(例えば分散)が十分に小さくなるよう、平滑化に関わるパラメータを決定すればよい。平滑化強度算出部34は、そのときのパラメータを平滑化強度とみなすことで平滑化強度を算出してもよい。
【0045】
図3に示されるように、遅延時間には、主に機器による遅延時間と平滑化に基づく遅延時間とがある。
図3の(a)に示される機器による遅延時間は、ジェスチャに応じた機器の処理又は通信に基づく遅延時間である。機器による遅延時間の一例としては、センサ内部の処理時間や、センサからサーバ等の機器へ情報を転送するときの通信時間が挙げられる。機器による遅延時間の他の例としては、転送された画像を画面上に表示するためのレンダリング等の処理時間、処理後の画像を画面へ表示するためのUI画面の計算にかかる時間等が挙げられる。機器による遅延時間に基づくカーソルの移動軌跡は、
図3の(a)のグラフの実線で示した本来のカーソルの移動軌跡に対して、破線で示した単純な遅延を持つ。
【0046】
機器遅延時間算出部36は、
図3の(a)に示される機器による遅延時間を算出する。機器遅延時間算出部36は、センサや画面の表示機器の性能に基づいて遅延時間を算出する。機器遅延時間算出部36により算出される遅延時間は、事前にセンサや情報処理機器の処理時間を測定することで取得できる。また、機器遅延時間算出部36は、使用する機器の処理時間を事前に測定し、機器の性能と処理時間との対応表を作成しておき、その対応表に基づき使用する特定の機器の性能から処理時間を取得しても良い。
【0047】
また、機器遅延時間算出部36は、例えば、機器の性能を定めた仕様書から機器による遅延時間を算出することができる。また、機器遅延時間算出部36は、ジェスチャ入力装置1が平滑化を行わない状態で、ユーザがジェスチャによる操作を行ってからその操作が画面上に反映されるまでの時間を、センサとは別のカメラで撮影された画像から測定し、機器による遅延時間として算出してもよい。
【0048】
一方、
図3の(b)に示される平滑化に基づく遅延時間は、周波数(速度)に依存する遅延である。その遅延の一例は、(b)のグラフの実線で示した本来のカーソルの移動軌跡に対して、破線で示したように単純な遅延ではない。例えば、平滑遅延時間算出部35は、
図3の(b)に示される平滑化に基づく遅延時間を算出する。平滑遅延時間算出部35は、平滑化フィルタの時定数を平滑化に基づく遅延時間として使用することができる。平滑遅延時間算出部35による具体的な算出の仕方は、平滑化および平滑強度の算出をどのように行うかによって異なる。単純な移動平均で平滑化した場合の平滑化フィルタの時定数の算出、又は指数平滑移動平均で平滑化した場合の平滑化フィルタの時定数の算出について以下に具体的に説明する。
【0049】
例えば、単純な移動平均で平滑化した場合には、平滑遅延時間算出部35は、式(7)によって時定数τを算出することができる。ここで時定数τは遅延時間、Tは位置蓄積部32が位置を蓄積する時間間隔(サンプリング周期)、eは自然対数の底である。
【0051】
指数平滑移動平均を用いる場合には、平滑遅延時間算出部35は、式(8)により遅延時間(時定数)τを計算することができる。ここで、α(0≦α≦1)は平滑化定数、時定数τは遅延時間、Tは位置蓄積部32が位置を蓄積する時間間隔(サンプリング周期)、である。αが小さい程強く平滑化する。
【0053】
総遅延時間算出部37は、機器遅延時間算出部36で算出した遅延時間と、平滑遅延時間算出部35で算出した遅延時間とに基づき総遅延時間を算出する。例えば、総遅延時間算出部37は、平滑遅延時間と機器遅延時間との和を総遅延時間としてもよい。総遅延時間算出部37は、平滑遅延時間と機器遅延時間とのいずれかを遅延時間としてもよい。
【0054】
なお、平滑遅延時間は、ジェスチャを行うユーザの身体部分のぶれ量に基づく遅延時間の一例である。機器遅延時間は、ジェスチャに応じた機器の処理又は通信に基づく遅延時間の一例である。
【0055】
(画面表示機能)
本実施形態では、画面表示機能は、主に操作難度算出部41、表示条件算出部42及び画面表示部43により実現される。操作難度算出部41は、総遅延時間と、カーソルの初期位置の分布の仕方とに基づいて、画面上のオブジェクトの操作難度を算出する。オブジェクトは、画面上に表示され、選択可能な図形やアイコン等の画像やテキストを含む。ポインティングは、オブジェクト上にカーソルを重ねる操作をいう。
【0056】
操作難度算出部41は、オブジェクトのポインティングにかかる時間を操作難度として算出する。オブジェクトの操作難度は、カーソルの初期位置とオブジェクトの距離に対して増加し、オブジェクトの大きさに対して減少し、総遅延時間に対して増加する量である。
【0057】
操作難度算出部41は、以下の式に基づき操作難度を算出できる。操作難度を算出する一例として式(9)及び式(10)を以下に示す。
【0060】
ここで、a、b、cは定数であり、実験的に定められる値である。MTはポインティング時間、IDは難度(Index of Difficulty)、Aはカーソルの初期位置からオブジェクトまでの距離、Wはオブジェクトの大きさ、Lagは遅延時間を表す。カーソルの初期位置は、後述されるカーソルの初期位置の分布を使用して定められる。
【0061】
式(9)で算出されるポインティング時間MTは、画面操作に対する難易度を示す操作難度の一例である。
【0062】
式(9)及び式(10)では、表示の候補とされるオブジェクトに対して、カーソルの位置毎にカーソルの初期位置からオブジェクトまでの距離Aが算出される。操作難度算出部41は、表示の候補とされるオブジェクトのそれぞれに対して、カーソルの初期位置の分布から想定されるカーソルの位置のそれぞれについて距離Aを算出する。オブジェクトの大きさWは、例えば、5cm、10cm、15cmと仮定してもよい。よって、操作難度算出部41は、大きさの異なるオブジェクト毎であって、カーソルの位置毎にカーソルの初期位置からオブジェクトまでの距離Aを用いてポインティング時間MTを算出する。
【0063】
また、操作難度を算出する操作難度を算出する他の例として式(11)、式(12)及び式(13)を以下に示す。
【0067】
ここで、a、b、c、dは定数であり、実験的に定められる値である。MTはポインティング時間、Aはカーソルの初期位置からオブジェクトまでの距離、Wはオブジェクトの大きさ、Lagは遅延時間を示す。また、φは平均0、分散1の累積正規分布、Nは正規分布、Fは任意のB>0に対して等式(13)を満たす関数である。操作難度算出部41は、式(11)を用いてポインティング時間MTを算出する。算出されたポインティング時間MTは、操作難度の一例である。
【0068】
(カーソルの初期位置)
カーソルの初期位置は一般には不明である。なぜなら、画面表示部43の処理は、実際に画面表示が行われる前に実行されるため、操作難度算出部41の実行時に、ユーザがカーソルを操作しているとは限らないからである。よって、カーソルの初期位置からオブジェクトまでの距離Aの算出ができないことになる。
【0069】
そこで、操作難度算出部41は、カーソルの初期位置の分布を仮定し、仮定されたカーソルの初期位置の分布に従ったそれぞれのカーソルの位置における操作難度を算出する。操作難度算出部41は、それぞれのカーソルの位置での操作難度の平均値を算出し、操作難度としてもよい。カーソルの初期位置の分布の一例としては、
図4の(a)に示されるように、カーソルの存在確率が画面21内で一様な分布の場合が挙げられる。また、カーソルの初期位置の分布の他の例としては、
図4の(b)に示されるように、カーソルの存在確率が、画面21内でユーザUの肩の位置に対応する点Oを中心とした紡錘形の分布の場合が挙げられる。
【0070】
表示条件算出部42は、画面の大きさと、ユーザ及び画面の位置関係とに基づいて、画面上のオブジェクトが視認できる表示条件を算出する。表示条件算出部42は、オブジェクトの大きさの閾値条件を設定する。表示条件算出部42は、オブジェクトの大きさの閾値Tsを画面の大きさに対して増加し、ユーザと画面との距離に対して増加する値に設定する。これによれば、ユーザから画面までの距離が遠い場合に、表示が大きくなり、近づくと小さく表示されるため、ユーザと画面との距離が変わっても、ユーザが視聴しやすい画面表示を提供できる。例えば、ユーザと画面との距離が距離d1である場合のオブジェクトの大きさの閾値をTs=t1とする。また、ユーザと画面との距離が距離d1よりも大きい距離d2である場合のオブジェクトの大きさの閾値をTs=t2とする。このとき、閾値t2は閾値t1よりも大きい値(t2>t1)に設定されてもよい。ここで、t1、t2、d1、d2は開発者により定められる値である。閾値Tsは、例えば、図示しない記憶領域に記憶されてもよい。
【0071】
画面表示部43は、操作難度算出部41で算出した操作難度と、表示条件算出部42で算出した表示条件とに基づいて、オブジェクトを表示した画面を生成する。一例としては、画面表示部43は、操作難度が予め定められた操作難度の閾値Tm以下になるよう、生成する画面上のオブジェクトの大きさを調整する。オブジェクトの大きさの調整は、操作難度が十分小さい(つまり、閾値Tm以下)の範囲で画面での表示の一覧性が増すよう、できるだけ多くのオブジェクトが表示できるサイズに設定してもよい。閾値Tmは、例えば、図示しない記憶領域に記憶されてもよい。
【0072】
例えば、オブジェクトの大きさの候補が、s1、s2、s3(s1<s2<s3)である場合を想定する。操作難度算出部41は、オブジェクトの大きさs1、s2、s3(s1<s2<s3)に対する操作難度m1、m2、m3を算出する。画面表示部43は、操作難度m1、m2、m3に基づき、オブジェクトの大きさがs1、s2、s3の候補のうち操作難度(m1、m2、m3)が一定の閾値Tm以下となるオブジェクトであって、オブジェクトの大きさが最も小さいものを採用する。仮にm1>Tm、m2<Tm、m3<Tmの場合、画面表示部43は、候補s3より大きさの小さいオブジェクトの候補s2を採用する。更に、表示条件を考慮すると、オブジェクトの大きさの候補s2が大きさの閾値Tsよりも大きければよい。もし、候補s2が大きさの閾値Tsよりも小さい場合、画面表示部43は、候補s2よりも大きいオブジェクトの候補s3が、大きさの閾値Tsよりも大きければ候補s3を採用する。画面表示部43は、採用された候補の大きさでオブジェクトを表示する。
【0073】
[ジェスチャ入力処理]
次に、本実施形態に係るジェスチャ入力装置1が行うジェスチャ入力処理の一例について、
図5及び
図6を参照しながら説明する。以下では、本実施形態に係るジェスチャ入力処理を、ジェスチャ入力に基づく遅延量算出処理とジェスチャ入力に応じた画面表示処理とに分けて説明する。
図5は、一実施形態に係る遅延量算出処理の一例を示したフローチャートである。
図6は、一実施形態に係る画面表示処理の一例を示したフローチャートである。
図5の遅延量算出処理、
図6の画面表示処理の順に各処理を説明することで、ユーザがジェスチャを行ってからジェスチャに応じた画面が表示されるまでを説明する。
【0074】
(遅延量算出処理)
位置取得部31は、ポインティングデバイスやユーザの手など身体の一部の位置から画面上の操作位置(カーソルの位置)を計算する。位置蓄積部32は、位置取得部31で取得したカーソルの位置を予め定められた所定の時間間隔で蓄積する。位置蓄積部32は、カーソルの位置が所定の時間蓄積されたかを判定する(ステップS10)。位置蓄積部32は、カーソルの位置が所定の時間蓄積されるまでステップS10の処理を繰り返す。
【0075】
カーソルの位置が所定時間蓄積された場合、精度算出部33は、カーソルの位置のぶれに基づき、カーソルの位置の精度を算出する(ステップS12)。カーソルの位置のぶれは、例えば、センサの精度およびユーザの身体のぶれ(手振れ)に基づき生じる。
【0076】
次に、平滑化強度算出部34は、精度算出部33で算出したカーソルの位置の精度に基づいて、カーソルの位置のぶれが十分に小さくなるように、カーソルの位置を平滑化する際の強度を算出する(ステップS14)。次に、平滑遅延時間算出部35は、平滑化強度算出部34で算出した平滑化強度に基づく平滑化による遅延時間(ぶれ量に基づく遅延時間;以下、「平滑遅延時間」ともいう。)を算出する(ステップS16)。
【0077】
次に、機器遅延時間算出部36は、センサや機器の性能に基づく遅延時間(機器に基づく遅延時間;以下、「機器遅延時間」ともいう)を算出する(ステップS18)。総遅延時間算出部37は、平滑遅延時間と機器遅延時間とを加算することで総遅延時間を算出する(ステップS20)。
【0078】
(画面表示処理)
次に、
図6の画面表示処理について説明する。表示条件算出部42は、位置取得部31からユーザの位置(ユーザの手の位置等)をカメラ10から取得できたかを判定し(ステップS30)、ユーザの位置を取得するまでステップS30の処理を繰り返す。
【0079】
ユーザの位置を取得した場合、表示条件算出部42は、画面の大きさとユーザと画面との位置関係に基づいて、画面上のオブジェクトが視認できる表示条件を算出する(ステップS32)。
【0080】
画面表示部43は、表示条件を満たした画面の表示候補となるオブジェクトを生成する(ステップS34)。次に、操作難度算出部41は、候補となるオブジェクトの操作難度を算出する処理を行う(ステップS36)。
【0081】
ステップS36にて呼び出される操作難度の算出処理について、
図7を参照しながら説明する。
図7は、一実施形態に係る操作難度の算出処理の詳細を示したフローチャートである。
【0082】
まず、操作難度算出部41は、カーソルの初期位置の分布に従って、カーソルの位置の一つを算出する(ステップS40)。次に、操作難度算出部41は、カーソルの初期位置からオブジェクトまでの距離Aを算出する(ステップS42)。次に、操作難度算出部41は、例えば、式(9)及び式(10)を用いて操作難度(ポインティング時間MT)を算出する(ステップS44)。操作難度は、他の式(13)等の方法により算出することもできる。次に、操作難度算出部41は、すべてのカーソルの位置に対する操作難度が算出したかを判定する(ステップS46)。すべてのカーソルの位置に対する操作難度が算出されていない場合、ステップS40に戻り、ステップS40からS46の処理が行われる。
【0083】
一方、すべてのカーソルの位置に対する操作難度が算出されている場合、操作難度算出部41は、例えば、操作難度の平均値を操作難度の代表値として算出し(ステップS48)、
図6に戻ってステップS38の処理を行う。
【0084】
画面表示部43は、操作難度が十分に小さいかを判定する(ステップS38)。操作難度が所定の閾値より大きいと判定された場合、ステップS34に戻り、操作難度が所定の閾値以下になるまでステップS34〜ステップS38の処理を繰り返す。
【0085】
例えば、ステップS38にて操作難度が所定の閾値より大きいと判定された場合、ステップS34で生成される画面の表示候補のオブジェクトの大きさを前回の候補としたオブジェクトの大きさより大きくする。例えば、前回候補としたオブジェクトの大きさが5cmの場合、操作難度算出部41は、今回候補としたオブジェクトの大きさを10cmと大きくし、式(10)のWに代入し、式(9)から操作難度を算出してもよい。その場合においてもステップS38にて操作難度が所定の閾値より大きいと判定された場合、操作難度算出部41は、候補としたオブジェクトの大きさを15cmと大きくし、式(10)のWに代入し、式(9)から操作難度を算出してもよい。
【0086】
ステップS38にて操作難度が十分に小さいと判定された場合、画面表示部43は、生成された画面を表示し(ステップS39)、本処理を終了する。
【0087】
以上、本実施形態にかかるジェスチャ入力処理について説明した。本実施形態にかかるジェスチャ入力装置1は、遅延時間と表示条件とに基づいて画面上のオブジェクトの大きさを調整して表示する。
【0088】
図8は、一実施形態に係る画面表示の一例を示す。
図8の横軸は遅延時間、縦軸はユーザと画面との距離を示す。操作難度は遅延時間に基づき算出される。
図8に示される画面上のオブジェクトは、操作難度が一定の閾値以下となるオブジェクトであって、オブジェクトの大きさが最も小さいものを採用する。これにより、操作性と一覧性を両立させることができる。
【0089】
一例としては、遅延時間が小さくかつ距離が近い場合には、小さいオブジェクトが表示される。例えば、遅延時間が中程度でかつ距離が中程度の場合には、中程度の大きさのオブジェクトが表示される。例えば、遅延時間が大きくかつ距離が遠い場合には、大きいオブジェクトが表示される。
【0090】
ぶれ量が大きい場合、画面上のオブジェクトを小さく表示するとユーザのジェスチャ入力に対する操作エラーが生じ易くなる。これに対して、以上に説明した本実施形態に係るジェスチャ入力装置1によれば、ぶれ量を遅延時間として算出し、遅延時間に基づき画面上のオブジェクトの大きさを調整して表示する。例えば、ぶれ量が大きい場合には、遅延時間が大きいため、ジェスチャ入力に対する操作エラーを抑制するためにオブジェクトを大きく表示する。これにより、ユーザのジェスチャ入力における画面の操作性を向上させることができる。
【0091】
特に、カーソルの位置の分布が一様でない場合、オブジェクトの位置によって操作難度の値が異なるため、同一画面上で許容されるオブジェクトの大きさが異なる場合が生じる。その場合には、各オブジェクトの位置に対して許容されるオブジェクトの大きさのうちの最も大きいオブジェクトの大きさを採用してもよい。これにより、ユーザの操作性を向上させることができる。
【0092】
(ハードウェア構成例)
最後に、ジェスチャ入力装置1のハードウェア構成例について簡単に説明する。
図9は、本実施形態にかかるジェスチャ入力装置1のハードウェア構成例を示す図である。ジェスチャ入力装置1は、入力装置101、表示装置102、外部I/F103、RAM(Random Access Memory)104、ROM(Read Only Memory)105、CPU(Central Processing Unit)106、通信I/F107及びHDD(Hard Disk Drive)108を備え、それぞれがバスBで相互に接続されている。
【0093】
入力装置101は、カメラ10やキーボードやマウスなどを含み、ジェスチャ入力装置1に各操作を入力するのに用いられる。表示装置102は、ディスプレイ20を含み、ユーザのジェスチャ入力に応じて画面上のアイコン操作等を行い、その結果を表示する。
【0094】
通信I/F107は、ジェスチャ入力装置1をネットワークに接続するインタフェースである。これにより、ジェスチャ入力装置1は、通信I/F107を介して他の機器と通信可能となる。
【0095】
HDD108は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、装置全体を制御する基本ソフトウェアであるOS(Operating System)、及びOS上において各種機能を提供するアプリケーションソフトウェアなどがある。また、HDD108は、上記精度算出処理、平滑化強度算出処理、平滑遅延時間算出処理、機器遅延時間算出処理、総遅延時間算出処理、操作難度算出処理、表示条件算出処理、画面表示処理を行うためにCPU106により実行されるプログラムを格納する。
【0096】
外部I/F103は、外部装置とのインタフェースである。外部装置には、記録媒体103aなどがある。ジェスチャ入力装置1は、外部I/F103を介して、記録媒体103aの読み取り及び/又は書き込みを行うことができる。記録媒体103aには、CD(Compact Disk)、及びDVD(Digital Versatile Disk)、ならびに、SDメモリカード(SD Memory card)やUSBメモリ(Universal Serial Bus memory)等がある。
【0097】
ROM105は、不揮発性の半導体メモリ(記憶装置)であり、起動時に実行されるBIOS(Basic Input/Output System)、OS設定、及びネットワーク設定などのプログラムやデータが格納されている。RAM104は、プログラムやデータを一時保持する揮発性の半導体メモリ(記憶装置)である。CPU106は、上記記憶装置(例えば「HDD」や「ROM」など)から、プログラムやデータをRAM上に読み出し、処理を実行することで、装置全体の制御や搭載機能を実現する演算装置である。
【0098】
精度算出部33、平滑化強度算出部34、平滑遅延時間算出部35、機器遅延時間算出部36、総遅延時間算出部37、操作難度算出部41、表示条件算出部42、画面表示部43、画面表示部43の各部は、HDD108にインストールされたプログラムがCPU106に実行させる処理により実現される。
【0099】
位置取得部31は、入力装置101を用いて実現可能である。位置蓄積部32は、例えば、RAM104、HDD108、又はジェスチャ入力装置1にネットワークを介して接続される記憶装置を用いて実現可能である。
【0100】
以上、ジェスチャ入力装置、ジェスチャ入力方法及びプログラムを上記実施形態により説明したが、本発明は上記実施形態に限定されるものではなく、本発明の範囲内で種々の変形及び改良が可能である。また、上記実施形態及び変形例が複数存在する場合、矛盾しない範囲で組み合わせることができる。
【0101】
例えば、本実施形態に係るジェスチャ入力装置1は、ぶれ量に基づく遅延時間と機器の処理又は通信に基づく遅延時間とから総遅延時間を算出した。しかしながら、これに限られず、本発明に係るジェスチャ入力装置は、例えば、ぶれ量に基づく遅延時間を総遅延時間としてもよいし、ジェスチャに応じた機器の処理又は通信に基づく遅延時間を総遅延時間としてもよい。ぶれ量に基づく遅延時間のみ、又は、機器の処理又は通信に基づく遅延時間のみによっても、遅延時間が大きい場合にはジェスチャ入力に対する操作エラーが生じ易いと判断できる。よって、上記遅延時間のいずれかを総遅延時間とした場合であっても総遅延時間が大きい場合にはオブジェクトを大きく表示することにより、ユーザのジェスチャ入力における画面の操作性を向上させることができる。
【0102】
また、本実施形態に係るジェスチャ入力装置1は、総遅延時間及びユーザと画面との位置関係に基づいて、オブジェクトを表示した。しかしながら、これに限られず、本発明に係るジェスチャ入力装置は、総遅延時間に基づいて、オブジェクトを表示してもよい。この場合、ユーザと画面との位置関係に拘らず、遅延時間に基づいて画面上のオブジェクトの大きさが調整される。
【0103】
この場合の一例としては、
図8の最上段に示したように、遅延時間が小さい場合、小さいオブジェクトが表示される。遅延時間が中程度の場合、中程度の大きさのオブジェクトが表示される。遅延時間が大きい場合には、大きいオブジェクトが表示される。
【0104】
以上の説明に関し、更に以下の項を開示する。
(付記1)
ジェスチャによる入力を行うジェスチャ入力装置であって、
ジェスチャを行うユーザの身体部分のぶれ量に基づく遅延時間と、前記ジェスチャに応じた機器の処理又は通信に基づく遅延時間と、の少なくともいずれかからジェスチャによる入力の総遅延時間を算出する総遅延時間算出部と、
前記ジェスチャによる入力の総遅延時間に基づいて、オブジェクトを表示する画面表示部と、
を有するジェスチャ入力装置。
(付記2)
前記総遅延時間算出部は、
前記ぶれ量に基づく遅延時間と前記機器の処理又は通信に基づく遅延時間とから総遅延時間を算出する、
付記1に記載のジェスチャ入力装置。
(付記3)
前記画面表示部は、
前記総遅延時間及びユーザと画面との位置関係に基づいて、オブジェクトを表示する、
付記1又は2に記載のジェスチャ入力装置。
(付記4)
前記総遅延時間から画面操作の難易度を示す操作難度を算出する操作難度算出部を有し、
前記画面表示部は、
前記操作難度が予め定められた閾値以下の画面のオブジェクトを表示する、
付記1〜3のいずれか一項に記載のジェスチャ入力装置。
(付記5)
前記操作難度算出部は、
ジェスチャを行うユーザの身体部分の位置に基づいてカーソルの初期位置の分布を算出し、算出されたカーソルの初期位置の分布に応じて操作難度を算出する、
付記4に記載のジェスチャ入力装置。
(付記6)
前記ぶれ量に基づく遅延時間を、前記ジェスチャに応じて取得されたカーソルの位置を平滑化する平滑化強度に基づき算出する平滑遅延時間算出部を有する、
付記1〜5のいずれか一項に記載のジェスチャ入力装置。
(付記7)
ジェスチャによる入力を行うジェスチャ入力方法であって、
ジェスチャを行うユーザの身体部分のぶれ量に基づく遅延時間と、前記ジェスチャに応じた機器の処理又は通信に基づく遅延時間と、の少なくともいずれかからジェスチャによる入力の総遅延時間を算出し、
前記ジェスチャによる入力の総遅延時間に基づいて、オブジェクトを表示する、
処理をコンピュータが実行するジェスチャ入力方法。
(付記8)
前記ぶれ量に基づく遅延時間と前記機器の処理又は通信に基づく遅延時間とから総遅延時間を算出する、
付記7に記載のジェスチャ入力方法。
(付記9)
前記総遅延時間及びユーザと画面との位置関係に基づいて、オブジェクトを表示する、
付記7又は8に記載のジェスチャ入力方法。
(付記10)
前記総遅延時間から画面操作の難易度を示す操作難度を算出し、
前記操作難度が予め定められた閾値以下の画面のオブジェクトを表示する、
付記7〜9のいずれか一項に記載のジェスチャ入力方法。
(付記11)
ジェスチャを行うユーザの身体部分の位置に基づいてカーソルの初期位置の分布を算出し、算出されたカーソルの初期位置の分布に応じて操作難度を算出する、
付記10に記載のジェスチャ入力方法。
(付記12)
前記ぶれ量に基づく遅延時間を、前記ジェスチャに応じて取得されたカーソルの位置を平滑化する平滑化強度に基づき算出する、
付記7〜11のいずれか一項に記載の記載のジェスチャ入力方法。
(付記13)
ジェスチャによる入力により画面を操作するプログラムであって、
ジェスチャを行うユーザの身体部分のぶれ量に基づく遅延時間と、前記ジェスチャに応じた機器の処理又は通信に基づく遅延時間と、の少なくともいずれかからジェスチャによる入力の総遅延時間を算出し、
前記ジェスチャによる入力の総遅延時間に基づいて、オブジェクトを表示する、
処理をコンピュータに実行させるためのプログラム。
(付記14)
前記ぶれ量に基づく遅延時間と前記機器の処理又は通信に基づく遅延時間とから総遅延時間を算出する、
付記13に記載のプログラム。
(付記15)
前記総遅延時間及びユーザと画面との位置関係に基づいて、オブジェクトを表示する、
付記13又は14に記載のプログラム。
(付記16)
前記総遅延時間から画面操作の難易度を示す操作難度を算出し、
前記操作難度が予め定められた閾値以下の画面のオブジェクトを表示する、
付記13〜15のいずれか一項に記載のプログラム。
(付記17)
ジェスチャを行うユーザの身体部分の位置に基づいてカーソルの初期位置の分布を算出し、算出されたカーソルの初期位置の分布に応じて操作難度を算出する、
付記16に記載のプログラム。
(付記18)
前記ぶれ量に基づく遅延時間を、前記ジェスチャに応じて取得されたカーソルの位置を平滑化する平滑化強度に基づき算出する、
付記13〜17のいずれか一項に記載の記載のプログラム。