(57)【特許請求の範囲】
【請求項１】
第１の方向のジェスチャに対応する複数の制御信号を連続的に入力するために連続往復運動に応じてジェスチャ入力を検知する方法であって、前記連続往復運動が第１の方向のジェスチャと第２の方向のジェスチャのみを含み、各々のジェスチャが検知装置によって認識できて、異なる制御信号が出力され、前記連続往復運動は前記第１の方向のジェスチャで始まる、方法において、
２つの方向のジェスチャのうちの前記第１の方向のジェスチャで始まる前記連続往復運動を受信することであって、前記第１の方向のジェスチャと前記第２の方向のジェスチャは交互に生じる、前記受信することと、
前記連続往復運動についての反転点を特定することと、
前記反転点を用いて、前記連続往復運動を、各々が前記２つの方向のジェスチャのうちの一方に対応する少なくとも２つの部分運動に分割することと、
前記第１の方向のジェスチャに対応する複数の制御信号であって、前記連続往復運動内に含まれている前記第１の方向のジェスチャの数に等しい回数で、前記第１の方向のジェスチャに対応する前記複数の制御信号、を出力することと、
を含む、前記方法。
【請求項２】
請求項１に記載の方法であって、前記反転点を特定することが、更に、
前記連続往復運動の一連の画像フレームを受信することと、
各々の画像フレームについての点を特定することと、
前記一連の画像フレームについての点に基づいて前記反転点を特定することと、
を含む、前記方法。
【請求項３】
請求項２に記載の方法であって、前記一連の画像フレームについての前記点に基づいて前記反転点を特定することが、更に、
前記一連の画像フレームについての前記点のうちの２番目の点以降の各々の点について、１つの点と直前の点との位置関係を２つの反対する向きに対応する２つのカウンタを用いて、記録することであって、前記直前の点に対する前記点の前記位置関係に対応するカウンタが１加算される、前記記録することと、
１つの特定の点において、一方のカウンタが所定の閾値を超えており、且つ、他方のカウンタが１に等しいと判定すると、前記特定の点を反転点と判定することと、
前記２つのカウンタを０に設定することと、
を含む、前記方法。
【請求項４】
請求項１に記載の方法であって、前記出力することが、更に、
各々の部分運動を最初の部分運動と比較することと、
前記比較される部分運動が前記最初の部分運動と同じ方向であるという判定に応じて、前記第１の方向のジェスチャに対応する制御信号を出力することと、
を含む、前記方法。
【請求項５】
請求項１に記載の方法であって、前記出力することが、更に、各々の奇数番目の反転点に応じて、前記第１の方向のジェスチャに対応する制御信号を出力することを含む、前記方法。
【請求項６】
第１の方向のジェスチャに対応する複数の制御信号を連続的に入力するために連続往復運動に応じてジェスチャ入力を検知する装置であって、前記連続往復運動が第１の方向のジェスチャと第２の方向のジェスチャのみを含み、各々のジェスチャが認識できて、異なる制御信号が出力され、前記連続往復運動は前記第１の方向のジェスチャで始まる、装置において、
交互に生じる前記第１の方向のジェスチャと前記第２の方向のジェスチャである２つの方向のジェスチャのうちの前記第１の方向のジェスチャで始まる前記連続往復運動を捕捉する捕捉モジュールと、
前記連続往復運動についての反転点を特定し、前記反転点を用いて、前記連続往復運動を、各々が前記２つの方向のジェスチャのうちの一方に対応する少なくとも２つの部分運動に分割し、前記第１の方向のジェスチャに対応する複数の制御信号であって、前記捕捉された連続往復運動に基づいて、前記連続往復運動内に含まれている前記第１の方向のジェスチャの数に等しい回数で、前記第１の方向のジェスチャに対応する、前記複数の制御信号を出力する処理モジュールと、
を備えた、前記装置。
【請求項７】
請求項６に記載の装置であって、前記処理モジュールが、更に、前記部分運動毎に、それを最初の部分運動と比較し、前記比較される部分運動が前記最初の部分運動と同じ方向であるという判定に応じて、前記第１の方向のジェスチャに対応する制御信号を出力するように構成されている、前記装置。
【請求項８】
請求項６に記載の装置であって、前記処理モジュールが、更に、各々の奇数番目の反転点に応じて、前記第１の方向のジェスチャに対応する制御信号を出力するように構成されている、前記装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザ・インタフェースに関し、更に詳しくは、ジェスチャ入力を検知する方法に関する。
【背景技術】
【０００２】
ジェスチャ認識、特に、ハンド・ジェスチャ（手のジェスチャ）認識によって、人間は、機械と繋がり、機械的装置を使用せずに自然に連係できる。このジェスチャ認識は、コンピュータ・ビジョンと画像処理とに由来する各技術を用いて、行われる。ジェスチャ認識の概念を使用すれば、コンピュータ・スクリーンに対して指を指し示すことによって、カーソルがそれに従って動くように構成できる。ジェスチャには、例えば勝利サイン（人差し指と中指とを伸ばして互いに離すようにする一方、親指と残りの各指とを堅く閉じるハンド・ジェスチャ）のような静的なジェスチャと、１つの有効なジェスチャ入力の期間内でユーザの手の形状（例えば、幾つかの指を伸ばし、あるいは、幾つかの指を堅く閉じる）及び／又は位置を変えることによって、有効なジェスチャ入力を形成する動的なジェスチャと、が含まれる。また、連続した手の形状の変化、及び／又は、手の動きを、装置に対する複数の命令として解釈できる場合もある。
【０００３】
ジェスチャ入力は、多くの分野に応用されている。ハンド・ジェスチャ入力の１つのアプリケーションは、読書アプリケーションである。例えば、カメラの前でユーザの手が水平方向に移動する（手の動きの軌跡が実質的に水平方向であり、そして、動いた距離が、ある値、例えば１５センチメートルを超える）と、当該装置は、このジェスチャ入力を、本のページを捲る命令として、解釈する。本を順方向に捲るか、あるいは、逆方向に捲るかは、動き（運動）の向きによって決まる。図１は、従来技術に従って、本を逆方向に捲ることを表している右向きのジェスチャを例示している図である。図１から分かるように、この右向きのジェスチャを行う為に、ユーザは、先ず、右手をカメラの前に置き、次に、それを右向きに、ある距離だけ、動かす必要がある。このジェスチャが完了すると、すなわち、手が、図１に示された停止の位置に到達すると、ユーザは、カメラの前で、手を素早く引っ込める必要がある。ユーザが数ページ、例えば、５つのページをいっきに捲りたい場合、手をかざし、動かし、停止し、そして、引っ込める動作を５回行う必要がある。これは、ユーザにとって実に不便であり、従って、このユーザ経験は少なくなる。
【０００４】
従って、連続したジェスチャ入力の新たな方法が切望される。
【発明の概要】
【０００５】
本発明の一様相に従えば、連続往復運動に応じてジェスチャ入力を検知する方法であって、連続往復運動が少なくとも１つの第１のタイプのジェスチャと少なくとも１つの第２のタイプのジェスチャとを含み、各々のジェスチャが検知装置によって認識でき、その認識の結果、異なる制御信号が出力され、交互に生じる第１のタイプのジェスチャと第２のタイプのジェスチャである２つのタイプのジェスチャのうちの第１のタイプのジェスチャで始まる連続往復運動を受信するステップと、連続往復運動内に含まれている第１のタイプのジェスチャの数に等しい回数で、第１のタイプのジェスチャに対応する制御信号を出力するステップと、を含む方法が提供される。
【０００６】
本発明の別の一様相に従えば、連続往復運動に応じてジェスチャ入力を検知する装置であって、連続往復運動が少なくとも１つの第１のタイプのジェスチャと少なくとも１つの第２のタイプのジェスチャとを含み、各々のジェスチャが認識でき、その認識の結果、異なる制御信号が出力され、交互に生じる第１のタイプのジェスチャと第２のタイプのジェスチャである２つのタイプのジェスチャのうちの第１のタイプのジェスチャで始まる連続往復運動を捕捉する捕捉モジュールと、捕捉された連続往復運動に基づいて、連続往復運動内に含まれている第１のタイプのジェスチャの数に等しい回数で、第１のタイプのジェスチャに対応する制御信号を出力する処理モジュールと、を備えた装置が提供される。
【０００７】
本発明の更なる各様相と各利点は、後述の詳細な説明において明らかになるであろう。
【図面の簡単な説明】
【０００８】
ここに添付した図面は、本発明の理解を深めるためのものであり、本発明の原理を説明する記載と共に、本発明の各実施形態を単に例示するものである。従って、本発明は、これらの各実施形態には限定されない。
【図１】従来技術に従う、カメラの前の手の動きを示す図である。
【図２Ａ】本発明の一実施形態に従う、１つのハンド・ウェーブの軌跡を示す図である。
【図２Ｂ】本発明の一実施形態に従う、１つのハンド・ウェーブの軌跡を示す図である。
【図３】本発明の該実施形態に従う、２つの隣接した映像フレームに対応している２つの点を示す図である。
【図４】本発明の該実施形態に従う、初めからの手の軌跡を示す図である。
【図５】本発明の該実施形態に従う、初めからの別の手の軌跡を示す図である。
【図６】本発明の該実施形態に従う、連続往復運動からジェスチャ入力を検知する方法を示すフローチャートである。
【図７】本発明の該実施形態に従う、連続往復運動からジェスチャ入力を検知する装置を示すブロック図である。
【発明を実施するための形態】
【０００９】
本発明の一実施形態を、図面と合わせて、詳細に説明する。以下の説明において、周知の機能と構成の一部の詳しい説明は、明瞭さと簡潔さのために、省略する場合がある。
【００１０】
本発明の目的は、連続往復手運動によって重複命令を与える容易な方法を提供することである。この連続往復運動は、装置によって、１組の連続した各部分運動（sub movements）として認識でき、任意の連続した２つの部分運動は互いに反対の向きを有している。連続往復運動の結果として得られる各命令のタイプは、その１組の連続した各部分運動のうちの最初の部分運動によって決まり、また、結果として得られる各命令の数は、その１組内の最初の部分運動と同じ向きを有する各部分運動（最初の部分運動も含む）の数と同じになる。
【００１１】
以下、本発明の一実施形態に従う詳細な例を説明する。当該システムは、ジェスチャ入力の連続した各映像を捕捉するために使用されるカメラと、該カメラに接続している処理装置とを備えている。この処理装置は、連続した各映像を用いて、これらに対応する各命令を生成する。本実施形態において、ジェスチャ認識についての基本的なジェスチャの軌跡は、実質的に直線に等しい（実際のジェスチャの動きは、真直ぐな線にはならない）。この例では、水平方向のハンド・ウェーブ（手による波形）ジェスチャを用いて本発明の原理を例示する。しかしながら、本発明の原理は、その他の連続往復運動、例えば、垂直方向のハンド・ウェーブ運動、斜めのハンド・ウェーブ運動、及び、深度検出可能なカメラの前で手を伸ばして引っ込める運動等にも適用できる。
【００１２】
ジェスチャ認識技術は画像処理に関し、従って、ジェスチャ認識は、リアル・タイムの各画像フレームに基づいてリアル・タイムで行うことが出来、あるいはは、リアル・タイムで行わない、すなわち、カメラで１組の画像フレームを捕捉し、そして、その１組の画像フレームを分析することも出来る。
【００１３】
実際、全ての静的ジェスチャ認識（状態認識）は、リアル・タイムの各画像フレームに基づいてリアル・タイムで行うことが出来る。例えば、勝利サインの状態を検知する場合、当該装置は、当該状態が、勝利サインであると、あるいは、手の形状の凸形輪郭の分析結果に基づいていないと、判断するだけでよい。動的ジェスチャ認識では、当該装置は、１組の画像フレームを捕捉し、各々のフレームにおける手の図心（重心）を見出し、そして、この一連の手の図心により形成された曲線の分析後に、どのようなジェスチャであるかを判断する必要がある。
【００１４】
図２は本発明の一実施形態に従う１つのハンド・ウェーブの軌跡を示す図であり、図２Ａは右方向の手の動きを示し、図２Ｂは左方向の手の動きを示している。この例において、カメラは左上の座標系であると仮定する。尚、ジェスチャ認識において、均質な曲線（あるいは、実質的に真直ぐな線）は存在しない。各々のフレームにおける手についての重心が、曲線上の点に等しい。従って、何れかの向きの動き、例えば、左方向の手の動きについての全ての画像フレームについて、一連の連続した点を示す場合、説明の便宜上、これらの全ての点を連結する線を使用することにする。離散した点の数は、フレームの捕捉率によって決まる。
【００１５】
図３は、本発明の実施形態に従う、２つの隣接した画像フレームに対応する２つの点を示す図である。点Ａは２つの画像フレームのうちの前のフレームに対応しており、点Ｂは２つの画像フレームのうちの後のフレームに対応している。ここでは、点Ａを直前位置点と呼び、点Ｂを現在位置点と呼ぶことにする。
【００１６】
この例では、上、下、左、及び、右を含む４つの動きの向きを使用する。図３が示すように、点Ｂは、点Ａの右に位置している。これは、両点が同じ座標系における各座標値を有するので、当該装置によって容易に決定できる。
【００１７】
本実施形態においては、２つのデータ・アレイを用いて手の軌跡を記憶して、ユーザのジェスチャの分析を行う。もし動き動向が、例えば図２Ａに示されているように、反転しないならば、手の軌跡のデータは第１のアレイに記憶される。動き動向の反転の検知後に、手の軌跡のデータが、動き動向の反転の故に、第２のアレイに記憶され、次に、第１のアレイ内のデータによって、どのようなジェスチャが生じたかが判定されて、それに対応する命令が出力される。更に、反転閾値と４つの向きカウンタとを用いて、反転動作の発生が判定される。ユーザの連続したジェスチャ、例えば水平方向のハンド・ウェーブは、ある特定の規則性を有している。例えば、人が手を振る動作をしている場合、もしそれが左向きの振りならば、それは、先ず、ある距離だけ左向きに動き、次に、ある距離だけ右向きに動き、それが数回繰り返される筈である。また、もしそれが右向きの振りならば、同様に、それは、先ず、ある距離だけ右向きに動き、次に、ある距離だけ左向きに動き、それが数回繰り返される筈である。従って、先行する部分ジェスチャ（sub-gesture）に基づいて向きカウンタを選択できる。尚、本実施形態においては、第１のアレイのデータが、ジェスチャの判定基準として、使用される。
【００１８】
以下、本発明の実施形態に従って、手の動きから生成された複数の位置点のうちの１つの位置点について実行される各処理ステップを説明する。
【００１９】
ステップ１：  連続ジェスチャ入力期間中のある時点において、当該装置は、直前位置点の各座標値と現在位置点の各座標値とを特定する。擬似コードを以下に示す。
「Last  position  x  coordinates  (old_x)  =  (hand  trace  trend  reverse  happened)  ?  got  last  stored  data  in  second  array  (pPointBuf1.x)  :  got  last  stored  data  in  first  array  (pPointBuf0.x);
Last  position  y  coordinates  (old_y)  =  (hand  trace  trend  reverse  happened)  ?  got  last  stored  data  in  second  array  (pPointBuf1.y)  :  got  last  stored  data  in  first  array  (pPointBuf0.y);
Current  position  x  coordinates  (cur_x)  =  got  hand  x  coordinate  in  current  frame;
Current  position  y  coordinates  (cur_y)  =  got  hand  y  coordinate  in  current  frame;」
【００２０】
上記の擬似コードから分かるように、当該時点に対応する現在のフレームを用いて、現在位置点の各座標値が特定される。当該時点の直前の画像フレームに対応する直前位置点については、当該装置は、先ず、動き動向の反転が生じているかを判定する必要がある。もし生じているならば、第２のアレイにおけるデータを用いて、直前位置点の各座標値が特定される。もし生じていないならば、第１のアレイにおけるデータを用いて、直前位置点の各座標値が特定される。
【００２１】
ステップ２：  手の動きの動き動向を判定する４つの向きカウンタは、現在位置点と直前位置点との位置関係に基づいて、更新される。この実施形態においては、４つの向きカウンタによって、それぞれ、上向き、下向き、左向き、及び、右向きを記録する。しかしながら、別の一実施形態に従えば、もし垂直方向のハンド・ジェスチャが当該装置において規定されていないならば、上向きカウンタと下向きカウンタとは、不要となる。
【００２２】
互いに反対の向きに対応する２つの向きカウンタは、１つのグループにおいて機能する。例えば、もし直前位置点に対する現在位置点の所在が左向きならば、左向きカウンタが１加算され、そして、同時に、もし右向きカウンタがゼロでないならば、このカウンタは、１減算される。そして、同じ原理が、上向きカウンタと下向きカウンタにも適用される。Ｘ軸の値に基づいて左向きと右向きの各カウンタ（orientation_l,orientation_r）を判定する関連擬似コードを以下に示す。同様の原理がＹ軸の値に基づく上向きと下向きの各カウンタにも適用できる。
If(cur_x  >  old_x)  {//x-axis  coordinates  of  current  position  is  bigger  than  last  position
orientation_r++;//  RIGHT  orientation  counter  increase  one
If  (orientation_l  >  0)  {//  LEFT  orientation  counter  bigger  than  zero
Orientation_l--;
}  else  {
Orientation_l  =  0;
}
} 
If(cur_x  <  old_x)  {//x  axis  coordinates  of  current  position  is  smaller  than  last  position
orientation_l++;//  LEFT  orientation  counter  increase  one
If  (orientation_r  >  0)  {//  RIGHT  orientation  counter  bigger  than  zero
Orientation_r--;
}  else  {
Orientation_r  =  0;
}
}
【００２３】
図４は、本実施形態に従う、最初からの手の軌跡を示す図である。図４から分かるように、反転点の前に１４個の点がある（反転点を特定する方法は後で説明する）。反転点は、反転ジェスチャの開始点と見なせる。従って、反転点の前の点、すなわち、最も右側の点に於けるOrientation_lとOrientation_rについての上記の操作方法（この例では、上向きと下向きの各カウンタについての操作方法は省略する）に従えば、Orientation_lは０であり、Orientation_rは１３である。反転点に移動した場合（cur_X＜old_X）、Orientation_lは１加算されて１になり、Orientation_rは１減算されて１２になる。
【００２４】
ステップ３：  当該装置は、ジェスチャ入力の際に画像フレームを捕捉する毎に、動き動向が反転しているか否かを判定する。当該装置は、ジェスチャ入力の際に、ジェスチャをある捕捉率で１組の画像フレームとして捕捉する。当該装置は、画像フレーム毎に、先ず、画像フレーム内のユーザの手の位置点を特定し、該位置点とその直前の位置点とを用いて、該当する各向きカウンタを更新する。当該装置は、各向きカウンタを更新した後、これらの向きカウンタと向き閾値とを用いて、動き動向の反転が生じているか否かを判定する。向き閾値は、前もって決定された値であり、この例では６に設定されている。動き動向が反転しているか否かを判定するための擬似コードを以下に示す。ここでは、１組の部分ジェスチャ向きインジケータ、すなわち、gesture_l、gesture_r、gesture_uとgesture_dを用いて、連続したジェスチャ入力、あるいは、連続した手の往復運動における最終ジェスチャのジェスチャ向きを記録する。ユーザが連続したジェスチャを入力する前に、これらのパラメータは、偽に設定される。そして、当該装置が連続したジェスチャ入力における最初の部分ジェスチャを検知した後、それに対応するパラメータが真に設定される。
【００２５】
最初の部分ジェスチャが検知される前に、４つのカウンタのうちの最大値のカウンタを選択して向き閾値と比較する。もし最大値のカウンタが向き閾値より大きく、そして、最大値のカウンタと反対の向きを有する向きカウンタが１に等しければ、反転が生じていると判定され、最初の部分ジェスチャの反対の向きに対応する部分ジェスチャ向きインジケータが真に設定される。別の実施形態に従えば、４つの値の選択肢を有する１つのインジケータを用いて４つの真偽インジケータと置き換えることが出来る。
If  (~(gesture_l  |  gesture_r  |  gesture_u  |  gesture_d))  {//four  orientation  trajectory  reversal  does  not  happened
Got  the  maximum  orientation  counter;
If  (the  maximum  orientation  counter  >  THRESHOLD  &&  the  opposite  orientation  counter  ==  1)  {
reverse  =  true;//  Trajectory  reversal  happened
}
}
【００２６】
更に図４を用いて例示する。最も右側の点において、Orientation_lは０であり、Orientation_rは１３である。最大値のカウンタとしてのOrientation_rは向き閾値６より大きいが、反対の向きカウンタ、すなわち、Orientation_lは０である。従って、反転が生じていないと判定される。しかしながら、反転点においては、両条件が満たされる。従って、反転が生じていることが当該装置によって判定され得る。
【００２７】
最初の部分ジェスチャの各向きインジケータの後の反転の判定について、当該装置は、次の２つの条件、すなわち、１）最後の部分ジェスチャの向きインジケータと同じ向きの向きカウンタが閾値を超えているという条件と、２）最後の部分ジェスチャの向きインジケータと反対の向きの向きカウンタが１に等しいという条件と、が満たされているか否かを判定する。これらの両方が満たされている場合、反転が生じていると判定される。これによって、計算の複雑性が低減される。gesture_lが得られた後の反転の判定についての擬似コードを以下に示す。その他の向きインジケータについての擬似コードも同様である。
If  (gesture_l)  {  //last  gesture  is  LEFT
If((orientation_l  >  THRESHOLD)  &&  (orientation_r  ==  1))  {
Reverse = true;
}
}
【００２８】
反転が見出される前に、データは、第１のアレイpPointBuf0に記憶される。最初の反転が生じると、pPointBuf0に於けるデータを用いて当該ジェスチャが解釈されて、当該ジェスチャの意味を示す信号が出力される。この時、pPointBuf0における全ての点について、互いに隣接する２点のみを使用して、あるいは、向きカウンタの数値のみに基づいて、何のジェスチャであるかを判定することは出来ない。もしそのようにして判定するならば、エラーが生じることがある。図５は、このような状況を示している。ユーザが右向きの部分ジェスチャを行っている場合、下向きの運動を伴うこともあり、反転点において、下向きカウンタが右向きカウンタより大きくても、この部分ジェスチャを下向きのジェスチャとして特定できない。このジェスチャを全体的に観察した場合、右向きの移動距離が下向きの移動距離より遥かに大きいことは明らかであり、この部分ジェスチャは右向きのジェスチャであると判定されるべきである。最初の反転が生じた後、データは第２のアレイpPointBuf1に記憶される。そして、対応する向きカウンタを用いて、２番目の反転の発生が特定される。尚、この例では、pPointBuf1のデータを用いてはジェスチャを判定しない。pPointBuf1におけるデータは、２番目の反転、４番目の反転、６番目の反転等の発生を特定することのみに使用される。各ジェスチャの動きが往復運動であるので、第１のアレイが、最初の部分ジェスチャの動きと同じ向きを有する各部分ジェスチャの動きのデータを記憶するために使用されること、及び、第２のアレイが、最初の部分ジェスチャの動きと反対の向きを有する各部分ジェスチャの動きのデータを記憶するために使用されることは容易に理解できる。３番目の反転、５番目の反転、７番目の反転等の判定は、最初の反転の判定と同様である。そして、４番目の反転、６番目の反転、８番目の反転等の判定は、２番目の反転の判定と同様である。開始点と停止点とのｘ軸及びｙ軸の各座標の差分を用いて何のジェスチャが起きたかを判定する（もう１つの方法は、ジェスチャの軌跡のｘ軸及びｙ軸の振幅比を用いてどのような種類のジェスチャであるかを判定する）。
【００２９】
以下の擬似コードは、何のジェスチャが起きたかを判定する仕方を示している。
Function  calcAction()  :
If  (nPointBufLength  >  0)  {//  length  of  data  array  bigger  than  zero
nDiffx  =  pPointBuf0[nPointBufLength-1].x  ‐  pPointBuf0[0].x;//Got  the  difference  of  x-axis  nDiffx;
nDiffy  =  pPointBuf0[nPointBufLength-1].y  ‐  pPointBuf0[0].y;//Got  the  difference  of  y-axis  nDiffy;
If  (abs(nDiffx)  >  abs(nDiffy))
If(nDiffx  <  0)  LEFT  gesture  occurred;
Else  RIGHT  gesture  occurred;
}  else  {
If(nDiffy  <  0)  DOWN  gesture  occurred;
Else  UP  gesture  occurred;
}
Return  gesture;
【００３０】
上記から分かるように、nDiffxとnDiffyとの各絶対値を比較して、水平方向の動きと垂直方向の動きとの間で、どのような主要な動きが生じているかを判定する。その理由は、ユーザの手の動きが、正確な水平方向の動き、あるいは、正確な垂直方向の動きには成り得ないからである。水平方向の動きを行おうとする際に、垂直方向における差分は不可避ではあるけれども、水平方向に於ける差分の絶対値は、垂直方向における差分の絶対値よりも大きくなるはずである。水平方向の動きとして判定されると、nDiffxを用いて、左向きジェスチャと右向きジェスチャのうち、どちらのジェスチャであるかが判定される。
【００３１】
以下の擬似コードは、最初の反転が生じた後にどのような処理を行うかを示している。
If  reversal  occurred  (reversal)  {
Call  calcAction;
Clear  all  four  orientation  counter;
gesture_l  =  LEFT  gesture  happened;
gesture_r  =  RIGHT  gesture  happened;
gesture_u  =  UP  gesture  happened;
gesture_d  =  DOWN  gesture  happened;
Set  pPointBuf0  length  to  zero;
Push  current  data  into  pPointBuf1;
Set  pPointBuf1  length  to  one;
}  else  {
Push  data  in  pPointBuf0;
PointBufLength0++;//  Increase  the  length  of  pPointBuf0
}
【００３２】
以下の擬似コードは、２番目の反転が生じた後にどのような処理を行うかを示している。
If(reverse)  {//after  the  first  reversal  occurs,  bool  variable  reverse  set  to  true
Got  the  four  orientation  counter;
Got  the  maximum  orientation  counter;
If  (the  maximum  orientation  counter  >  THRESHOLD  &&  the  related  exclusive  orientation  counter  ==  1)  {
reverse  =false;//  second  trajectory  reversal  happened,  after  the  second  reversal  occurs,  bool  variable  reverse  set  to  false
}
If(!reserve)  {
Clear  four  orientation  counters;
Push  current  point  in  pPointBuf0[0];
PointBufLength0  =  1;
}  else  {
Push  current  point  in  pPointBuf1;
PointBufLength1++;//  Increase  the  length  of  pPointBuf1
}
}
【００３３】
手の往復運動が停止した後（手が空中に一定時間、例えば、２秒間留まった後、あるいは、特別な状態を用いて停止を示した後、あるいは、ユーザが素早く手を引いた後）、もし第１のアレイpPointBuf0に於ける有効データの数値がある閾値（通常、少なくとも３、さもなければジェスチャの軌跡が短すぎて無視され得る）より大きければ、このデータを用いて何のジェスチャが生じているかを判定する。以下の擬似コードは、１つの連続したジェスチャが停止した後にどのような処理を行うかを示している。
If(gesture_stop)  {
If(PointBufLength0  >  2)  {
Call  calcAction;
}
Clear  all  four  orientation  counter;
Set  all  gesture  orientation  indicators  to  false;
PointBufLength0  =  0;
PointBufLength1  =  0;
}
【００３４】
図６は、本実施形態に従う、連続した往復運動から各ジェスチャ入力を検知する方法を表すフローチャートである。ここで、連続した往復運動は、２つのタイプの装置認識可能ジェスチャから成り、各々のジェスチャは、数回、生じる。
【００３５】
ステップ６０１：  当該装置は、カメラを用いて連続した往復運動を捕捉することによってその運動を受信して、一連の画像フレームの結果を出力する。尚、ステップ６０１には、少なくとも２つのケース、すなわち、１）当該装置が、当該運動が終了するまで、当該運動を捕捉し続けて、捕捉モジュールが一連の画像フレームを出力するケースと、２）捕捉モジュールが、当該運動の期間中に、画像の捕捉に直ぐに応答して画像フレームを出力するケースとが含まれる。
【００３６】
ステップ６０２：  当該装置が、一連の画像フレームを用いて少なくとも１つの反転点を特定する。具体的に述べると、このステップには、一連の座標値を得る為に、画像フレーム毎に、手の位置に対応する座標値を特定するステップ６０２１が更に含まれている。この座標値の特定については、例えば、捕捉されたＲＧＢ画像をＨＳＶ色空間に変換して、肌色に基づく背景減算を行える。もし必要であれば、何らかのモフォロジック（形態学的）処理を行って、手の輪郭を見出すことが出来る。この輪郭の重心（すなわち図心）が、このフレームについての手の位置に対応する座標値になる。更に、ステップ６０２２において、上述のステップ１からステップ３を用いて、一連の座標値に基づいて、反転点を特定する。
【００３７】
ステップ６０３：  当該装置が、特定された反転点に基づいて、連続往復運動を各部分運動に分割する。反転点が特定され、そして、一連の画像フレームが連続往復運動に対応しているので、各部分運動が一連の画像フレーム内の反転点によって分離され、反転点が最初の部分運動以外のあらゆる部分運動についての開始点になる。なお、分割された全ての部分運動は、認識可能なジェスチャである。
【００３８】
ステップ６０４：  当該装置が、各分割された部分運動に基づいて、少なくとも１つの信号を出力する。具体的に述べると、当該装置は、まず、最初の部分運動を含み、そして、最初の部分運動と同じ向きを有する各部分運動の数を特定し、次に、認識可能な最初の部分運動に対応する意味を有し、そして、数が最初の部分運動と同じ向きを有する各部分運動の数に等しい各信号を出力する。
【００３９】
尚、当該装置が各画像フレームをリアル・タイムで処理する、すなわち、ステップ６０１において述べたケース２に対応する如く処理を行う場合、当該装置は、各々の画像フレームの入力に応じて、最初の反転点を見出すことによって、最初の部分運動を特定し、その最初の部分運動に対応する信号を出力する必要がある。最初の部分運動を特定した後、当該装置は、各々の画像フレームの入力に応じて、２番目の反転点、３番目の反転点、４番目の反転点等を順次見出すことによって、２番目の部分運動、３番目の部分運動、４番目の部分運動等を特定し、その２番目の部分運動、３番目の部分運動、４番目の部分運動等を最初の部分運動とそれぞれ個別に比較して、それらが同じタイプのジェスチャであるかを判定し、もしそれらが同じタイプのジェスチャであるならば、当該装置は、最初の部分運動と同じ信号を出力する。
【００４０】
別の実施形態に従えば、連続往復運動であるがゆえに、２番目の部分運動、４番目の部分運動、６番目の部分運動等を比較することは不要である。従って、当該装置は、最初の部分運動、３番目の部分運動、５番目の部分運動を特定するだけでよい。勿論、当該装置が、連続往復運動を部分運動に分割するために、全ての反転点を特定する必要はある。３番目の部分運動、５番目の部分運動等を得た後、当該装置は、それらを最初の部分運動と比較して、各々の肯定の比較結果の後、最初の部分運動に対応する信号を出力する。更に、往復運動であるがゆえに、奇数番目の各部分運動を比較することは必要でない場合もある。その代わりに、当該装置は、最初の反転点から１つおきの各反転点において、最初の部分運動に対応する信号を出力する。
【００４１】
図７は、ユーザ入力を検知する装置を示すブロック図である。図７から分かるように、連続往復運動に応じて各ジェスチャ入力を検知する装置が提供される。この連続往復運動は、２つのタイプの認識可能なジェスチャ、すなわち、第１のタイプのジェスチャ（例えば、左向きに動く）と第２のタイプのジェスチャ（例えば、右向きに動く）とから構成される。また、各々のジェスチャは認識でき、その認識の結果、異なる制御信号が出力される。当該装置は、交互に生じる第１のタイプのジェスチャと第２のタイプのジェスチャである２つのタイプのジェスチャのうちの第１のタイプのジェスチャから始まる連続往復運動を捕捉する捕捉モジュールと、捕捉された連続往復運動に基づいて、この連続往復運動内に含まれている第１のタイプの各ジェスチャの数に等しい回数で、第１のタイプのジェスチャに対応する制御信号を出力する処理モジュールと、を備えている。
【００４２】
更に、処理モジュールは、連続往復運動についての反転点を特定するように構成されている。
【００４３】
更に、処理モジュールは、各反転点を用いて、連続往復運動を、各々が２つのタイプのジェスチャのうちの一方に対応する少なくとも２つの部分運動に分割し、部分運動毎に、それを最初の部分運動と比較し、その比較される部分運動が最初の部分運動と同じタイプであるという判定に応じて、第１のタイプのジェスチャに対応する制御信号を出力するように構成されている。
【００４４】
更に、処理モジュールは、各々の奇数番目の反転点に応答して、第１のタイプのジェスチャに対応する制御信号を出力するように構成されている。
【００４５】
以上、幾つかの実施形態を説明した。しかしながら、種々の修正を行うことが出来る。例えば、相異なる各実施形態の各要素を、組み合わせる、補足する、修正する、あるいは、削除することによって、別の実施形態を実現できる。更に、当業者であれば、その他の各構成と各処理とを用いて、ここに開示されたものと置き換えてもよく、その結果得られる各実施形態は、少なくとも実質的に同じ機能で、かつ、少なくとも実質的に同じやり方で実現され、ここに開示された各実施形態と少なくとも実質的に同じ結果が得られる。従って、これらの各実施形態とその他の各実施形態は、本発明の権利範囲に入る。
【図１】
0005997699.tif 000002
【図２Ａ】
0005997699.tif 000003
【図２Ｂ】
0005997699.tif 000004
【図３】
0005997699.tif 000005
【図４】
0005997699.tif 000006
【図５】
0005997699.tif 000007
【図６】
0005997699.tif 000008
【図７】
0005997699.tif 000009