図1を参照して、本実施形態におけるジェスチャ入力の考え方を説明する。図1に示すように、本実施形態では、ユーザが手の指先100等で行うジェスチャの表示装置14の画面からの距離方向についての位置に応じて、そのジェスチャが表す意味を切り換える。図1の例では、表示装置14に接続された情報処理装置(図示省略)は、指先100を移動させるというジェスチャを、そのジェスチャの位置が画面15に最も近い第1の範囲内の場合には「ペンツール」操作と解釈する。また、そのジェスチャの位置が第1の範囲よりも画面15から遠い第2の範囲内である場合には、「てのひらツール」操作と解釈し、第2の範囲よりも画面から最も遠い第3の範囲内である場合は、「ページ送り」操作と解釈する。図示した表示画像15a、15b、15cは、各操作が行われたときに画面15に表示されている画像の例である。
ここで「ペンツール」操作は、表示画像15aが表す文書上に、指先100の移動軌跡に対応した曲線を描く操作である。「てのひらツール」操作は、画面15をスクロールする操作である。すなわち、指先100を「てのひらツール」に対応する第2の範囲内で画面15にほぼ平行に動かすと、文書のうち画面15上に表示画像15bとして表示される部分が、指先100を動かした方向にスクロールされる。「ページ送り」操作は、画面15に表示されるページを前に戻したり先に進めたりする操作である。例えば、指先100を第3の範囲内で画面15にほぼ平行に左側に動かすと、画面15上に表示画像15cとして表示されるページがページ番号の小さい方向に戻り、右側に動かすと、表示されるページがページ番号の大きい方向へと進む。
ジェスチャの検出は、モーションセンサ16により行う。モーションセンサ16としては、Leap Motion ControllerやKinect(登録商標)などの従来のセンサを用いてもよい。
以上に説明したように、本実施形態では、同じジェスチャ(例えば指先100を画面15にほぼ平行に動かす手振り)を、そのジェスチャが実施された位置(図示例では画面15からの距離)に応じて、異なった意味(すなわち操作)と解釈する。
次に、図2を参照して、本実施形態の情報処理装置の機能構成の例を説明する。図2に示すように、本実施形態の情報処理装置は、OS/アプリケーション10、表示ドライバ12、表示装置14、モーションセンサ16、センサドライバ18、ジェスチャエンコード部20、ジェスチャパターン制御部22及びジェスチャパターン管理部24を有する。このうち、表示装置14及びモーションセンサ16はハードウエアであり、他のものは典型的にはソフトウエアである。表示装置14及びモーションセンサ16は、情報処理装置の筐体に内蔵されていてもよいし、情報処理装置に外付けされるデバイスであってもよい。
OS/アプリケーション10は、当該情報処理装置の基本ソフトであるオペレーティングシステム(OS)または、そのOS上で実行されるアプリケーションプログラムである。本実施形態との関連では、OS/アプリケーション10は、これから説明するジェスチャによる指示入力システムにより入力された操作指示の入力先である。すなわち、ジェスチャにより入力された操作指示は、OSまたはいずれかのアプリケーションプログラムに入力される。操作指示の入力先は、OS及びアプリケーションプログラムのうち、その入力の時点でアクティブ状態(すなわちユーザにより操作の入力対象に選択された状態)となっているものである。
表示ドライバ12は、表示装置14の表示動作を制御するデバイスドライバである。表示装置14は、OS/アプリケーション10が生成した表示画像を表示する液晶ディスプレイや有機ELディスプレイなどの装置である。
モーションセンサ16は、情報処理装置に対する指示入力のためのユーザのジェスチャを検出する装置である。ユーザのジェスチャは、ユーザの手や指、又はユーザが持つ指示棒などを用いて行われる。ユーザが指示入力のために動かす手や指、指示棒などのことを以下では「指示部」と呼ぶこととする。モーションセンサ16は、例えば、三角測量方式やTOF(Time Of Flight)方式等を用いた距離画像センサであり、ユーザが動かす指示部を含む視野内の距離画像をあらかじめ定めた時間間隔ごとに求めて出力する。距離画像には、計測対象範囲内にある各物体の表面の各点の三次元位置の情報が含まれる。特にこの実施形態との関連では、距離画像の情報から、指示部表面の各点の三次元位置の情報が得られる。
また、モーションセンサ16は、距離画像を出力する代わりに、距離画像を解析することで得られる特徴量を出力するものであってもよい。例えば、距離画像を解析することで、指先や指示棒の先端を抽出し、抽出した先端の三次元位置を特徴量として時々刻々、出力してもよい。複数の指先を検出した場合、各指先の位置の組を特徴量として出力してもよい。また、手の面を近似する平面を求め、その平面を表す特徴量を出力してもよい。
センサドライバ18は、モーションセンサ16の動作を制御するデバイスドライバである。センサドライバ18は、モーションセンサ16が出力する検知信号(距離画像、または距離画像から求めた特徴量)を受け取ってジェスチャエンコード部20に渡す。
モーションセンサ16は、距離画像を生成するものに限るものではなく、ユーザの指示部(手や指示棒)の位置や動きを検出できるものであればどのような方式のものであってもよい。
ジェスチャエンコード部20は、センサドライバ18に対して動作指示を送ると共に、その動作指示に応じてセンサドライバ18経由でモーションセンサ16から入力される信号から、ジェスチャのパターンとジェスチャの実施位置を求める。モーションセンサ16から入力される信号は、モーションセンサ16の生の検出情報(例えば距離画像)の時系列、あるいは検出情報を処理して得た特徴量(例えば手の各指先の位置座標)の時系列などである。
ジェスチャのパターン(種類)には、例えば、複数の指の指先同士を近づける「ピンチイン」、指先同士を広げる「ピンチアウト」、手や指等を掃くように一方向に動かす「スワイプ」、(仮想的なオブジェクトを)「つかむ」動作、「つかんだ」状態の手を広げる(すなわち「つかんだ」オブジェクトを)「放す」動作、開いた手を「ひねる」動作、人差し指等の一本の指(あるいは揃えた数本の指)で「指さす」動作等、様々なものが考えられる。また、手の指を開いた状態か、手が握り拳の状態になっているか、指さしなどのように一本の指だけ伸ばした状態か、などの手の状態をモーションセンサ16の距離画像情報から判別することも可能であり、同じ手を移動させる動作でも、そのときの手の状態に応じて異なるジェスチャパターンと識別するようにしてもよい。また、「つかむ」動作の後「つかんだ」状態のまま手を動かすことを「ドラッグ」動作と定義するなど、複数の基本的な動作の組合せを1つのジェスチャとして定義することも可能である。ジェスチャエンコード部20が行うジェスチャパターンの認識処理は、Leap Motion Controller等の従来技術で用いられるものと同様のものでよい。
ジェスチャの実施位置は、ジェスチャが行われた場所の位置(この例では三次元的な位置)のことである。モーションセンサ16からの入力情報には、指示部(指先等)の位置情報が含まれているので、ジェスチャエンコード部20は、その位置情報から、ジェスチャの位置を認識すればよい。1つの例では、指示部の先端の位置をジェスチャの位置と認識する。例えば「指さす」ジェスチャの場合、モーションセンサ16から入力される指の先端の位置情報を、そのジェスチャの実施位置と認識すればよい。また、握り拳のようなある程度大きな体積のある指示部の場合、その重心や先端(上腕の延びる方向に沿った先端)などの代表位置を、その指示部によるジェスチャの位置としてもよい。指示部の先端が複数ある場合(例えば複数の指の先端がモーションセンサ16により検出された場合)には、例えばそれら複数の先端の位置の重心位置をジェスチャの位置としてもよいし、それら複数の先端の位置の集合(例えば各指の先端位置の組)をジェスチャの位置としてもよい。
ジェスチャは動作であり、時間的な幅を持つ。ジェスチャの実施位置は、その時間幅の中の1つの時点あるいは複数の時点での指示部の位置に基づき求める。
1つの例では、ジェスチャの開始位置をそのジェスチャの実施位置と認識する。例えば、指示部(手など)がほぼ停止している状態(あるいはジェスチャと認識されない程度の低速で動いている状態)から急に(ある程度大きな加速度で)動き始めた場合、その動き始めの時点をジェスチャの開始時点とし、そのときの指示部の位置をジェスチャの開始位置としてもよい。
また、別の例では、認識されたジェスチャを構成する各時点での指示部の位置の平均位置や、そのジェスチャの時間幅の中央の時点での指示部の位置など、開始位置とは異なる代表位置をそのジェスチャの実施位置としてもよい。
また、各時点での指示部の位置をすべてジェスチャの実施位置と捉えてもよい。例えば、線画を描く操作の場合、各時点での指先100の位置が、「線画を描く」ジェスチャの中での当該時点のペン先の位置に対応する。
ジェスチャパターン制御部22は、ジェスチャエンコード部20に動作指示を送ると共に、ジェスチャエンコード部20から入力されるジェスチャのパターン及び実施位置の情報を受け取り、そのパターンと実施位置の組合せから、ユーザの操作指示を判定する。この判定では、ジェスチャパターン管理部24に管理されている操作指示の定義情報を参照する。
図3に、ジェスチャパターン管理部24に管理されている操作指示の定義情報の一例を示す。図3に示す表の各行が、それぞれ1つの操作指示の定義情報である。各行は、「ID」、「ジェスチャ」、「アプリケーション」、「対応する操作」の項目を有する。「ID」は、この定義情報のエントリ(行)の識別情報である。「対応する操作」は、そのIDに対応する操作指示(ユーザがジェスチャにより指示する操作。言い換えればそのジェスチャの「意味」)の識別情報である。図示される「ペンツール」などの操作の意味については既に説明した。
「位置」は、その操作指示に対応するジェスチャの位置範囲を表す。すなわち、ユーザのジェスチャが当該操作指示を示すものと認識されるには、そのジェスチャの実施位置がその「位置」に示される範囲内にある必要がある。図示例では、位置範囲はX,Y,Zの直行三次元座標で表される。ここでZ座標は、表示装置14の画面15に対して垂直なZ軸方向の座標であり、画面15上の点はZ=0であり、画面15の正面方向がZ軸の正の方向である。X,Y座標は、画面15の矩形形状の直交する2辺の方向に延びる座標軸である。
「ジェスチャ」は、その操作指示に対応するジェスチャのパターン(種類)を表す。なお、図に例示した「ドラッグ」というジェスチャは、タップ(指先等の指示部をたたくように動かす動作)などで指定した開始点から指示部を移動させる動作であり、マウスのドラッグ操作と同様、例えば画面15上で指定された開始点からカーソルを(指先の移動軌跡にしたがって)移動させる動作を表す。
「アプリケーション」は、その操作指示の対象となるアプリケーションプログラムまたはOSの識別情報である。図に例示した「文書ビューア」は、PDF(Portable Document File)等のいずれかの文書フォーマットの電子文書の閲覧または編集に用いられるアプリケーションである。アプリケーションが異なれば、同じジェスチャでも異なる操作を指示するものと解釈され得る。
図3の例では、同じアプリケーション「文書ビューア」に対する同じ種類のジェスチャ「ドラッグ」が、位置範囲の異なる3つのケース(ID=1,2,3)に分類されている。それら各ケースの位置範囲は、X,Y方向については同じ範囲(すなわち画面15の矩形範囲)であるが、Z方向については異なっている。これら各ケースの位置範囲を図4に示す。図4に示すように、ID=1に対応する位置範囲は、図4の(1)に示すZ方向にについて0〜150mmの範囲の直方体の領域である。また、ID=2に対応する位置範囲は、(2)に示すZ方向について150〜300mmの範囲の直方体の領域であり、ID=3に対応する位置範囲は、(3)に示すZ方向について300〜450mmの範囲の直方体の領域である。
図3に例示する定義情報が用いられる場合、同じジェスチャ「ドラッグ」が、画面15に最も近い範囲(ID=1)では「ペンツール」と解釈され、これよりも1段階遠い範囲では「てのひらツール」と解釈され、更に遠い範囲では「ページ送り」と解釈される。
ここで、「ペンツール」と「てのひらツール」と「ページ送り」とを比較した場合、「ページ送り」ではページを戻すのか進めるのかを指示すれば足りるのに対し、「てのひらツール」では表示画像をどの方向にどの程度スクロールするかを指示する必要がある。したがって、「てのひらツール」の方が「ページ送り」の場合よりも、ユーザの操作意図を伝えるために、より精密なジェスチャが要求される。また、「ペンツール」にてユーザの意図する線画を描くには、「てのひらツール」による画面スクロールよりも精密なジェスチャが要求される。
図3に例示した定義情報では、より精密なジェスチャが要求される操作ほど、その操作に対応するジェスチャの位置範囲が画面15に近い範囲に設定されていることがわかる。この設定は、ユーザにとって直感的に理解しやすい。
なお、図3の例におけるX座標0〜500mmは画面15の横幅の範囲であり、Y座標0〜400mmは画面15の縦の高さの範囲である。図3(及び図4)の例では、各位置範囲のX,Y方向の幅は同じであったが、これはあくまで一例に過ぎない。この代わりに、例えば、画面15から離れるほど、位置範囲のX,Y方向の幅を広くしてもよい。
図3には、アプリケーションが1つしか示されていないが、ジェスチャによる操作入力が適用可能なアプリケーションが情報処理装置に複数インストールされている場合もある。このような場合、ジェスチャのパターンと位置範囲の組合せが同じであっても、適用先のアプリケーションが異なれば、「対応する操作」が異なる場合がある。
ジェスチャパターン制御部22は、図3に例示した定義情報を参照して、ジェスチャエンコード部20から入力されるジェスチャのパターンと実施位置との組合せに対応する操作指示(「対応する操作」)を特定する。またジェスチャ入力の適用先のアプリケーションが複数ある場合には、情報処理装置において現在アクティブ状態のアプリケーションと、ジェスチャエンコード部20から入力されるジェスチャのパターン及び実施位置との組合せに対応する操作指示を、図3に例示したような定義情報から特定する。なお、OSがアクティブ状態の場合(言い換えれば起動中のアプリケーションがすべてアクティブ状態でない場合)には、定義情報の中から、ジェスチャのパターン、実施位置及びOSの組合せに対応する操作指示が、ユーザのジェスチャの示す意味として特定される。
そして、ジェスチャパターン制御部22は、そのように特定したジェスチャの意味、すなわち操作指示を、現在アクティブ状態にあるアプリケーションまたはOS(OS/アプリケーション10)に入力する。この入力を受けたアプリケーションまたはOSは、その操作指示に応じた処理を実行する。
ジェスチャパターン管理部24が管理する定義情報は、カスタマイズ可能である。例えば、既存の操作指示の定義エントリを削除したり、既存の操作指示の定義エントリのうちのいずれかの項目を変更したり、位置範囲、ジェスチャ種類(パターン)、アプリケーション、及び操作指示(「対応する操作」)の組からなる新たな定義エントリを作成して定義情報に追加したりすることができる。
図5に、本実施形態のジェスチャエンコード部20、ジェスチャパターン制御部22及びジェスチャパターン管理部24が行う処理手順の一例を示す。この手順では、まずジェスチャエンコード部20が、センサドライバ18から入力されるモーションセンサ16の検出信号をエンコード(解析)し(S10)、そのエンコードの結果である特徴量の情報から、その検出信号が示すジェスチャのパターン及び実施位置を抽出する(S12)。次に、ジェスチャパターン制御部22が、現在アクティブ状態であるアプリケーションまたはOSと、抽出されたジェスチャのパターン及び実施位置と、の組合せに対応する操作指示を、ジェスチャパターン管理部24内の定義情報を参照して特定する(S14)。S14で、ジェスチャに対応する操作が見つからなかった場合(S16の判定結果がN)、図示例では、そのジェスチャを無効とし、S10に戻って次のジェスチャを認識する。S14で、ジェスチャに対応する操作指示が見つかった場合(S16の判定結果がY)、その操作指示を、そのアプリケーションまたはOSに入力する(S18)。この入力に応じ、そのアプリケーションまたはOSは、ユーザがジェスチャにより指示した操作を実行する。
さて、モーションセンサ16の検出信号が表す指示部(手など)の三次元位置は、モーションセンサ16の座標系での位置である。これに対し、図3に例示した操作指示の定義情報における「位置」は、情報処理装置に接続された表示装置14の画面15を基準とする座標系での位置である。したがって、本実施形態の処理を実現するには、モーションセンサ16の検出信号から求められる位置を、画面15を基準とする座標系での位置へと座標変換する必要がある。
ここで、画面15とモーションセンサ16の位置関係が常に一定であれば、その座標変換は固定的である。この場合、その固定的な座標変換の情報をあらかじめ求めておき、ジェスチャエンコード部20などがその情報を用いて座標変換を行えばよい。画面を内蔵した筐体内にモーションセンサ16を内蔵した装置、例えば、タブレット端末に対してモーションセンサ16を内蔵したものや、デジタル複合機(プリンタ、スキャナ、コピー機、ファクシミリ装置などの機能を兼ね備えた多機能装置)のディスプレイにモーションセンサ16を内蔵したもの、などがこの一例である。
これに対し、画面15とモーションセンサ16の位置関係が可変の場合もある。例えば、モーションセンサ16が情報処理装置に対してケーブルや無線で接続される場合がその典型例である。また、情報処理装置がノート型PC(パーソナルコンピュータ)である場合でも、モーションセンサ16が本体(キーボードが設けられた筐体)に内蔵されている場合は、ディスプレイの開く角度が可変なので、ディスプレイとモーションセンサ16との位置関係は可変である。
このように画面15とモーションセンサ16の位置関係が可変の場合、例えばモーションセンサ16を起動した際に、その座標変換を求めるためのキャリブレーション処理を行う。このキャリブレーション処理では、ユーザに画面15の四隅をタップ(指先で叩く動作)させ、それらタップされた位置をモーションセンサ16で求める。このとき求められる四隅の点の位置は、モーションセンサ16の座標系での位置である。例えば、この四隅の点のうちのあらかじめ定められた1つの点が画面15基準の座標系の原点であり、他の3点のうち原点に近い方から2つの点が、X軸及びY軸方向を規定する。また、その四隅の点が規定する面(画面15)に垂直な方向がZ軸方向である。この関係から、モーションセンサ16基準の座標系から画面15基準の座標系への座標変換を計算すればよい。
キャリブレーション処理を行う際、例えば、ジェスチャパターン制御部22が、情報処理装置の画面15に画面の四隅をタップするようメッセージを表示してもよい。
次に、第1の変形例を説明する。この変形例は、操作指示の定義情報が上記実施例の場合と異なる。この第1の変形例で用いる操作指示の定義情報の一例を図6に示す。
図3との対比でわかるように、図6の定義情報は、複数のアプリケーションを想定したものである。
この例では、「文書ビューア」に対する「指先を右に送る」ジェスチャは、「改ページ」(ページ番号が大きくなる方向へのページ送り)操作に対応づけられているが、同じ「改ページ」がジェスチャの実施位置に応じて2つに細分されている。すなわち、画面15からの距離が0〜100mmの位置範囲(ID=1)でそのジェスチャが行われた場合、そのジェスチャは1ページずつの改ページと解釈される。一方、画面15からの距離が100〜500mmの位置範囲(ID=2)でそのジェスチャが行われた場合、そのジェスチャは、1回のジェスチャでめくられるページ数が画面15からの距離に応じて線形に増えるタイプの改ページと解釈される。
図7に、「指先を右に送る」ジェスチャの意味の、ジェスチャ実施位置の画面からの距離に応じた変化の様子を示す。図7に示すように、「指先を右に送る」ジェスチャの実施位置が画面から0〜100mmの距離(Z座標)の範囲内の場合は、そのジェスチャは、文書ビューアに対して画面15に表示するページを1ページ先に進める操作指示を表す。また、そのジェスチャの実施位置が画面から500mmの距離の位置である場合、そのジェスチャは、表示中の文書の全ページ数をめくる操作指示と解され、文書ビューアはそのジェスチャに応じてその文書の最後のページを表示する。また、ジェスチャの実施位置の画面からの距離が100mm〜500mmの範囲内では、そのジェスチャにより進められるページ数は、1ページから文書の全ページ数の間で線形に増加するページ数のうち、その距離に応じたページ数となる。なお、1回あたりのページめくり数が異なる「改ページ」をそれぞれ別の操作と解すれば、Z座標が100mm〜500mmの範囲内で実施されるジェスチャは、それぞれその実施位置のZ座標毎に異なる操作を指示するものと捉えることもできる。
図6及び図7の例では、画面15から100mm以遠では、ジェスチャに応じてめくるページ数が画面15からの距離の増大に応じて連続的に増大したが、この代わりに、例えば図8に示すように距離の増大に応じてめくるページ数が段階的に増えるようにしてもよい。図7や図8に示すジェスチャ実施位置とページ数との関係は、ジェスチャに対応する操作指示の内容を規定する情報として、ジェスチャパターン管理部24に登録される。
次に、図9及び図10を参照して第2の変形例を説明する。この変形例では、ジェスチャによる操作指示に応じて、OS/アプリケーション10が、その操作指示に応じたGUI(グラフィカルユーザインタフェース)を画面表示する。図9は、操作指示に応じたGUIの例を示す図であり、図10は、この変形例における操作指示の定義情報の例である。
図10に示すように、この例では、画面15からの距離が0〜150mmの範囲内の位置で指先を左右に動かすジェスチャは、画面15に表示した画像の拡大縮小操作を解釈される。例えば、指先を左方向に動かすジェスチャは縮小指示であり、右方向に動かすジェスチャは拡大指示である。また、同じ画面15からの0〜150mmの距離内のジェスチャでも、握った拳を動かすジェスチャは、ページ内でのドラッグ操作と解釈される。ページ内ドラッグにより、例えばページ内での範囲指定等が行われる。この例では、同じ0〜150mmの距離範囲内で同じく手を右または左に動かす動作でも、手を握った状態で動かすか、指を一本伸ばして指先を動かすかで、ジェスチャの意味が異なる。
また、図10の例では、画面15からの距離が150〜300mmの範囲内で手を左右に移動させる動作は、1ページずつのページ送り操作と解釈される。例えば、手を左方向に動かすジェスチャは1ページ前に戻る操作を示し、右方向に動かすジェスチャは1ページ後ろに進む操作を示す。また、画面15からの距離が300〜450mmの範囲内で手を右または左に移動させる動作は、1回のジェスチャで複数ページを送る操作と解釈される。この場合も、例えば、手を左方向に動かすジェスチャは前のページに戻る操作を示し、右方向に動かすジェスチャは後ろのページに進む操作を示す。
図10の定義情報に従ってジェスチャ解釈を行った場合の情報処理装置の画面表示は,図9に例示したものとなる。例えば、画面15から距離0〜150mmの範囲で指先を右または左に動かすジェスチャ(「拡大縮小」)が行われた場合、画面15には表示画像15aが表示される。表示画像15aには、表示の拡大縮小率の入力指示のためのGUI152が表示される。このGUI152上のスライダー153を例えばマウスで選択して右または左にドラッグすると、表示画像を拡大または縮小することができる。この実施形態では、そのマウスによる操作の代わりに、画面15から距離0〜150mmの範囲で指先を右または左に動かすジェスチャを用いている。
また、画面15から距離150〜300mmの範囲で手を右または左に動かすジェスチャ(「1ページ送り」)が行われた場合、画面15には表示画像15bが表示される。表示画像15bには、「現在表示中のページ番号/全ページ数」を示す表示と、前後各方向への1ページずつのページ送りを指示するGUIボタンを含んだGUI154が表示される。このジェスチャの他にも、マウス等によりGUI154のページ送りボタンをクリックしたりすることで、表示するページを戻したり進めたりすることができる。
また、画面15から距離300〜450mmの範囲で手を右または左に動かすジェスチャ(複数ページ送り)が行われた場合、画面15には表示画像15cが表示される。表示画像15cには、各ページのサムネイル画像をページ順に並べたGUI156が表示される。このGUI156内のうち、メイン表示欄に表示されたページに対応するサムネイルは強調表示される。手を右に動かせば、その動かした距離に応じたページ数だけ進んだページがメイン表示欄に表示される。
この例では、図9に例示したように画面15上に操作用のGUI152、154、156が表示されるので、ユーザは、この表示から現在のジェスチャで選択中の操作モードが「拡大縮小」、「1ページ送り」、「複数ページ送り」のいずれであるかを認識する。
なお、図9の例のようにジェスチャにより指示された操作に対応する操作用のGUI152、154、156を表示する代わりに、図11に示すように、その指示された操作を表すアイコン158a及び158bを画面15上に表示してもよい。
図11の(a)の例では、画面15から離れた位置で指を動かすジェスチャが、ジェスチャパターン制御部22により「てのひらツール」操作と認識される。ジェスチャパターン制御部22は、その認識結果に従い、OS/アプリケーション10(「文書ビューア」)に対して、「てのひらツール」操作の実行を指示すると共に、画面15上に表示した「文書ビューア」の操作モード選択用のアイコン群のうち「てのひらツール」のアイコン158aを選択(アクティブ)状態とするよう指示する。これにより、「てのひらツール」のアイコン158aが選択状態を示す表示形態となり、ユーザはこの表示から、現在選択中の操作モードが「てのひらツール」であることを知る。
同様に,図11の(b)の例では、画面15に近い位置で指を動かすジェスチャが、ジェスチャパターン制御部22により「ペンツール」操作と認識される。ジェスチャパターン制御部22は、その認識結果に従い、OS/アプリケーション10(「文書ビューア」)に対して、「ペンツール」操作の実行を指示すると共に、画面15上に表示した「文書ビューア」の操作モード選択用のアイコン群のうち「ペンツール」のアイコン158bを選択状態とするよう指示する。これにより、「ペンツール」のアイコン158bが選択状態を示す表示形態となり、ユーザはこの表示から、現在選択中の操作モードが「ペンツール」であることを知る。
次に、図12を参照して、第3の変形例を説明する。前述のように、本実施形態の制御の一例では、ジェスチャの実施位置(例えば画面15からの距離)がどの範囲にあるかに応じて、同じジェスチャの意味づけを変える。ここで、ジェスチャが行われている間の各時点の指示部(指先など)の位置をそのジェスチャの実施位置と捉える場合、複数の位置範囲にまたがるジェスチャが問題となる。例えば、図3の定義情報を用いる例において、ID=1の位置範囲(画面から0〜150mm)内で指先でドラッグジェスチャを行うことで「ペンツール」により画面上に線画の描画を開始した場合を考える。そのドラッグジェスチャの中で、指先が画面から遠ざかる方向に動き、ID=2の位置範囲(「てのひらツール」)に入ってしまうことが起こりえる。このような場合、1つの例として、指示部(指先など)が最初にジェスチャが認識された位置範囲から外れた時点で、そのジェスチャが終了したと見なす方式を採ってもよい。しかし、ユーザにとってみれば、指示部の連続した動きは画面からの距離がある程度変わっても同じ操作を意図したものである可能性が高いので、そのような場合でも同じ操作の続きと解釈した方がよい。
そこで、この変形例では、ジェスチャのパターンと実施位置の組合せからそのジェスチャの意味、すなわち「対応する操作」、を認識すると、その操作に対応する位置範囲を拡張する。その操作に対応する拡張(拡大)後の位置範囲は、通常時(拡張の前)の位置範囲を内包し、通常時の位置範囲よりも大きい。この拡張により、そのジェスチャの中で指先等の指示部が画面に対してある程度近づいたり遠ざかったりしても、その拡張された位置範囲から外れなければ、同じジェスチャが連続しているものと認識される。
図12に、この変形例の処理手順の一例を示す。この手順では、まずジェスチャエンコード部20がモーションセンサ16の検出信号をエンコードし(S20)、そのエンコードの結果から、その検出信号が示すジェスチャのパターン及び実施位置を抽出する(S22)。次に、ジェスチャパターン制御部22が、S22の抽出結果に基づき、ジェスチャが開始されたかどうかを判定する(S24)。S24では、例えば、指示部(指先など)がモーションセンサ16の検知領域内に入ってきたとき、指示部が何の操作にも対応していない動作状態であるとき(例えばほぼ停止している場合)から急激に動き出したとき、指示部がジェスチャの開始を示す特定の動きを示したとき、指示部がジェスチャの終了を示す特定の動きを示した後に指示部の動きを検出した場合、指示部が検知領域内のあらかじめ定めた特定の座標をタッチする動作を示した場合などに、ジェスチャが開始されたと判定する。ジェスチャの開始を検知しなかった場合、S20に戻る。
S24でジェスチャの開始を検知した場合、ジェスチャパターン制御部22が、現在アクティブ状態であるアプリケーションまたはOSと、抽出されたジェスチャのパターン及び実施位置と、の組合せに対応する操作指示を、ジェスチャパターン管理部24を参照して特定する(S26)。S26で、ジェスチャに対応する操作が見つからなかった場合(S28の判定結果がN)、図示例では、そのジェスチャを無効とし、S20に戻って次のジェスチャを認識する。S26で、ジェスチャに対応する操作指示が見つかった場合(S28の判定結果がY)、その操作指示に対応する位置範囲を拡大すると共に(S39)、
その操作指示を、そのアプリケーションまたはOSに入力する(S32)。この入力に応じ、そのアプリケーションまたはOSは、ユーザがジェスチャにより指示した操作を実行する。処理はS20に戻り、ジェスチャの認識処理が続行される。なお、操作指示に対応する位置範囲を拡大した場合、その位置範囲に隣接する他の操作指示の位置範囲は、操作指示に対応する位置範囲が拡大された分だけ削減する。
S24でジェスチャの開始ではないと判定した場合、ジェスチャパターン制御部22は、S20及びS22で抽出されたジェスチャのパターン及び実施位置が、現在選択中の操作に整合しているか否かを判定する(S34)。すなわち、ジェスチャの開始(S24の判定結果がY)時に、S26にて、ユーザがジェスチャにより選択した操作が特定されるが、その開始後に続くジェスチャが、その選択された操作に合致しているかを判定するのである。この判定はS26と同様ジェスチャのパターンと実施位置の組合せに基づき行われる。ただし、この判定では、操作指示の定義情報(例えば図3参照)として、ジェスチャ開始時に特定された操作に対応する位置範囲が拡大され、この位置範囲に隣接する他の操作に対応する位置範囲がその拡大分だけ縮小されたものを用いる。S22で抽出されたジェスチャのパターンが現在選択中の操作に対応するジェスチャパターンに該当しており、S22で抽出されたジェスチャ実施位置がその操作に対応する拡大された位置範囲内に属していれば、そのジェスチャは現在の操作に整合していると判定される。S34にて「整合している」と判定した場合、ジェスチャパターン制御部22は、そのジェスチャに応じた操作パラメータを、現在選択中の操作のパラメータとして、OS/アプリケーション10に送信する(S36)。例えば、ジェスチャ開始時にそのジェスチャが「ペンツール」操作であると判定された後、引き続き移動する指先の位置が、「ペンツール」に対応する位置範囲(ただしS30で拡大されたもの)内にあれば、その指先のX,Y座標に対応する画面15上の座標の情報が、「ペンツール」のペン先の座標を示すパラメータとして、ジェスチャパターン制御部22からOS/アプリケーションに通知される。S34にて「整合していない」と判定した場合、ジェスチャパターン制御部22は、OSまたはアプリケーションに対して、現在選択中の操作の選択解除を指示し(S38)、操作指示の定義情報におけるその操作に対応する位置範囲を、拡大前(通常時)の範囲へとリセットする。
以上、本発明の実施形態及び変形例について説明した。以上に説明した例では、操作指示に対応するジェスチャの位置範囲として、情報処理装置の画面に垂直な方向について区分された位置範囲を用いる場合を例示したが、これは一例に過ぎない。画面に平行な方向に区分された位置範囲や、画面に垂直な方向と平行な方向の両方について区分された位置範囲などを用いてもよい。
また、以上の例では、画面15に対する表示と関連する操作(描画、スクロール、ページ送りなど)についてのジェスチャ入力の例を示したが、本実施形態の制御処理は、画面表示と関係しない操作にも適用可能である。例えば、電子楽器に対する操作指示の入力に本実施形態の仕組みを適用することも可能である。例えば同じ「ビブラート」を示すジェスチャでも、そのジェスチャの実施位置の電子楽器からの距離に応じてビブラートの量(音程の振れ幅)を変えるなどである。
以上に説明した実施形態の処理は、例えば、パーソナルコンピュータやタブレット端末などのコンピュータ、デジタル複合機などの装置に内蔵されたコンピュータ等の、コンピュータ上で実行されるプログラムとして実装される。ここで言うコンピュータは、例えば、ハードウエアとして、CPU等のマイクロプロセッサ、ランダムアクセスメモリ(RAM)およびリードオンリメモリ(ROM)等のメモリ(一次記憶)、HDD(ハードディスクドライブ)やフラッシュメモリ等の二次記憶を制御する二次記憶コントローラ、各種I/O(入出力)インタフェース、無線又は有線のネットワークとの接続のための制御を行うネットワークインタフェース等が、たとえばバスを介して接続された回路構成を有する。また、そのバスに対し、例えばI/Oインタフェース経由で、CDやDVD、ブルーレイディスクなどの可搬型ディスク記録媒体に対する読み取り及び/又は書き込みのためのディスクドライブ、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体に対する読み取り及び/又は書き込みのためのメモリリーダライタ、などが接続されてもよい。上に例示した各機能モジュールの処理内容が記述されたプログラムがCDやDVD等の記録媒体を経由して、又はネットワーク等の通信手段経由で、フラッシュメモリ等の二次記憶装置に保存され、コンピュータにインストールされる。二次記憶装置に記憶されたプログラムがRAMに読み出されCPU等のマイクロプロセッサにより実行されることにより、上に例示した機能モジュール群が実現される。