<<1.ジェスチャー検出装置について>>
図1は、位置検出装置100およびジェスチャー検出装置1の外観の一例を示す図である。位置検出装置100は、例えば人の手や指といった検知対象物60の位置を検出する。位置検出装置100は、略直方体の形状を成している。位置検出装置100の最長の一辺の長さは、例えば10mm程度の長さであるが、図1では便宜上、実際よりも大きいサイズで位置検出装置100が示されている。本実施の形態における位置検出装置100には、光を透過させる窓が設けられており、その窓の内側に照明部101と受光部102とを備えている。なお、本実施の形態では、位置検出装置100が、検知対象物60を光学的に検出する場合を例に挙げて説明するが、例えば超音波等を用いて検知対象物60の位置を検出するものであってもよい。
ジェスチャー検出装置1は、位置検出装置100から時々刻々と入力される検知対象物60の位置に基づいて、当該検知対象物60の動きパターン(以後、検知対象物60の動きパターンを「ジェスチャー」と呼ぶこともある)を検出する。ジェスチャー検出装置1は、図1に例示されるように、位置検出装置100と一体に形成されていてもよいし、位置検出装置100とは別体に形成されていてもよい。また、ジェスチャー検出装置1は、図1に示される例とは異なり、パーソナルコンピュータ(PC)で構成されていてもよい。
本実施の形態では、位置検出装置100とジェスチャー検出装置1とで、検知対象物60のジェスチャーを非接触で検出するジェスチャー検出システム110として機能する。ジェスチャー検出システム110は、ジェスチャーによって指示入力を行うことが可能な入力装置として用いることができる。なお、図1に示される位置検出装置100およびジェスチャー検出装置1の形状は一例であり、図1に示される形状に限られない。
次に、ジェスチャー検出システム110の概略的な動作について、図1,2を参照しながら説明する。図2は、ジェスチャー検出システム110の動作を説明するための図である。図2に示されるステップS100の処理は、位置検出装置100によって行われる処理であり、ステップS104の処理はジェスチャー検出装置1によって行われる処理である。
まず、照明部101から光61が照射され(図2のステップS101)、照明部101が照射する光61が検知対象物60で反射して反射光62となる(図2のステップS102)。そして、受光部102の受光面で受光された、ステップS102における反射光62に基づいて、位置検出装置100は検知対象物60の位置を求める。位置検出装置100で求められる検知対象物60の位置とは、図1に示されるように、x軸、y軸およびz軸から成るxyz直交座標系での検知対象物60の位置を示す座標値である。
以後、特に断らない限り、単に「x座標値」と言えば、位置検出装置100で検出されるx軸での検知対象物60の位置を示す値を意味する。また、単に、「y座標値」と言えば、位置検出装置100で検出されるy軸での検知対象物60の位置を示す値を意味する。また、単に「z座標値」と言えば、位置検出装置100で検出されるz軸での検知対象物60の位置を示す値を意味する。なお、本実施の形態では、受光部102の受光面がxy座標平面に含まれる場合を例に挙げて説明する。xy座標平面の原点は、受光部102の受光面の中央位置であり、xy座標平面に垂直な方向の軸をz軸とする。そして、ジェスチャー検出装置1は、ステップS100で検出されるx座標値、y座標値およびz座標値に基づいて、検知対象物60のジェスチャーを検出する(ステップS104)。
以下の第一〜第四実施形態では、位置検出装置100で検出されるx座標値、y座標値およびz座標値に基づいて、検知対象物60のジェスチャーを検出するジェスチャー検出装置1について詳細に説明する。なお、第一〜第四実施形態では、ジェスチャー検出装置1にx座標値、y座標値およびz座標値の3種類の座標値が入力される場合を例に挙げて説明する。しかし、ジェスチャー検出装置1に入力される座標値は1種類であってもよいし、2種類であってもよい。
<<2.第一実施形態>>
<2−1.電気的構成について>
図3は、ジェスチャー検出装置1の電気的構成を示すブロック図である。ジェスチャー検出装置1は、例えば、LSI(Large Scale Integration)の一種であるマイクロコントローラ(マイコン)で構成される。
図3に示されるように、ジェスチャー検出装置1は、CPU(Central Processing Unit)10aおよび記憶部10b等を有する制御部10を備えている。CPU10aが記憶部10bに記憶されている制御プログラム10cを実行することで、制御部10に係る各種機能が実現される。記憶部10bは、ROM(Read Only Memory)及びRAM(Random Access Memory)等の、CPU10aが読み取り可能な非一時的な記録媒体で構成されている。記憶部10bは、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えていても良い。また、図3に示されるように、制御部10には、位置検出装置100が接続されている。
<2−2.機能ブロックについて>
<2−2−1.制御部について>
制御部10では、制御プログラム10cが実行されることによって、複数の機能ブロックが形成される。図4は、制御部10に形成される複数の機能ブロックの一部を示す図である。図4に示されるように、制御部10は、テーブル更新部11、テーブル保持部12およびジェスチャー検出部13を備えている。ジェスチャー検出部13は、第1動作検出部16、第2動作検出部17および第3動作検出部18を有する動作検出部14と、特定部15とを備えている。
テーブル保持部12は、x座標値に関する情報を保持するテーブルと、y座標値に関する情報を保持するテーブルと、z座標値に関する情報を保持するテーブルとのうちの少なくとも1つのテーブルを保持している。
本実施の形態では、便宜上、x座標値に関する情報を保持するテーブルを「第1テーブル」と呼ぶ。また、y座標値に関する情報を保持するテーブルを「第2テーブル」と呼ぶ。また、z座標値に関する情報を保持するテーブルを「第3テーブル」と呼ぶ。また、第1テーブル、第2テーブルおよび第3テーブルを特に区別する必要がないときには、それぞれを「テーブル」と呼ぶ。テーブルの詳細については、後で詳しく説明する。
また、テーブル保持部12が保持するテーブルの種類は、ジェスチャー検出装置1に入力される座標値の種類、およびジェスチャー検出装置1で検出させるジェスチャーの種類等に基づいて決定される。
テーブル更新部11は、位置検出装置100からジェスチャー検出装置1に入力されるx座標値、y座標値およびz座標値に基づいて、テーブル保持部12が保持するテーブルを更新する。より具体的には、テーブル更新部11は、位置検出装置100から順次入力されるx座標値に基づいて、テーブル保持部12が保持する第1テーブル内のx座標値に関する情報を更新する。また、テーブル更新部11は、位置検出装置100から順次入力されるy座標値に基づいて、テーブル保持部12が保持する第2テーブル内のy座標値に関する情報を更新する。また、テーブル更新部11は、位置検出装置100から順次入力されるz座標値に基づいて、テーブル保持部12が保持する第3テーブル内のz座標値に関する情報を更新する。
ジェスチャー検出部13は、テーブル更新部11によって更新されたテーブルに基づいて、検知対象物60のジェスチャーを検出する。より具体的には、動作検出部14は、テーブル更新部11によって更新されたテーブルに基づいて検知対象物60のジェスチャーを暫定的に検出する。そして、動作検出部14によって暫定的に検出されたジェスチャー(検出結果)に基づいて、特定部15が検知対象物60のジェスチャーを最終的に特定する。特定部15によって特定されたジェスチャーは、ジェスチャー検出装置1での検出結果としてジェスチャー検出装置1の外部に出力される。
動作検出部14で暫定的に検出することができるジェスチャーは、第1動作、第2動作および第3動作である。より具体的には、第1動作検出部16によって第1動作が検出され、第2動作検出部17によって第2動作が検出され、第3動作検出部18によって第3動作が検出される。
図5は、第1動作を説明するための図である。第1動作は、2つの座標軸で特定される座標平面上で、検知対象物60が回転する動作である。第1動作検出部16は、ある座標平面上での第1動作を、当該座標平面上の座標値に関する情報、つまり2つのテーブルに基づいて検出する。図5に示される例では、検知対象物60は、xy座標平面上で第1動作を行っている。したがって、第1動作検出部16は、図5に示される第1動作を、第1テーブルおよび第2テーブルに基づいて検出する。なお、本実施の形態では、第1動作を「回転動作」と呼ぶこともある。
また、図5に示される例とは異なり、第1動作検出部16は、xz座標平面上での第1動作およびyz座標平面上での第1動作を検出することも可能である。第1動作検出部16は、xz座標平面上での第1動作を、第1テーブル及び第3テーブルに基づいて検出する。同様に、第1動作検出部16は、yz座標平面上での第1動作を、第2テーブル及び第3テーブルに基づいて検出する。
図6は、第2動作を説明するための図である。第2動作は、1つの座標軸に沿ってプラス方向もしくはマイナス方向に検知対象物60が動く動作である。第2動作検出部17は、ある座標軸に沿った第2動作を、当該座標軸での座標値に関する情報、つまり1つのテーブルに基づいて検出する。図6に示される例では、検知対象物60は、x軸に沿って当該x軸のマイナス方向に向かって動いている。したがって、第2動作検出部17は、図6に示される第2動作を、第1テーブルに基づいて検出する。また、第2動作検出部17は、第1テーブルに基づいて、検知対象物60がx軸に沿ってプラス方向に動く第2動作も検出することができる。本実施の形態では、x軸に沿って検知対象物60が動く第2動作を「左右動作」と呼ぶこともある。
また、図6に示される例とは異なり、第2動作検出部17は、y軸に沿って検知対象物60が動く第2動作、およびz軸に沿って検知対象物60が動く第2動作を検出することも可能である。第2動作検出部17は、y軸に沿って検知対象物60が動く第2動作を、第2テーブルに基づいて検出する。本実施の形態では、y軸に沿って検知対象物60が動く第2動作を「上下動作」と呼ぶこともある。また、第2動作検出部17は、z軸に沿って検知対象物60が動く第2動作を、第3テーブルに基づいて検出する。本実施の形態では、z軸に沿って検知対象物が動く第2動作を「遠近動作」と呼ぶこともある。
図7は、第3動作を説明するための図である。第3動作は、1つの座標軸に沿って検知対象物60がプラス方向およびマイナス方向に交互に短い距離を動く動作である。本実施の形態では、第3動作を「シェーク動作」と呼ぶこともある。第3動作検出部18は、ある座標軸に沿った第3動作を、当該座標軸での座標値に関する情報、つまり1つのテーブルに基づいて検出する。図7に示される例では、検知対象物60は、z軸に沿った第3動作を行っている。したがって、第3動作検出部18は、図7に示される第3動作を、第3テーブルに基づいて検出する。
また、第2動作と同様に、第3動作検出部18は、検知対象物60がx軸に沿って動く第3動作、および検知対象物60がy軸に沿って動く第3動作を検出することも可能である。第3動作検出部18は、検知対象物60がx軸に沿って動く第3動作を、第1テーブルに基づいて検出する。また、第3動作検出部18は、検知対象物60がy軸に沿って動く第3動作を、第2テーブルに基づいて検出する。
<2−2−2.制御部の動作>
図8は、制御部10の動作を説明するための図である。制御部10の概略的な動作について、図4,8を参照しながら説明する。まず、位置検出装置100からジェスチャー検出装置1に検知対象物60の位置を示す座標値が入力されると、テーブル更新部11が、テーブル保持部12に保持されているテーブルを更新する(ステップS1)。次に、第1動作検出部16が、第1動作を検出する(ステップS2)。次に、第2動作検出部17が、第2動作を検出する(ステップS3)。次に、第3動作検出部18が、第3動作を検出する(ステップS4)。後で詳しく述べるが、ステップS4の処理は、ステップS2及びステップS3の処理とは異なり、ジェスチャー検出装置1に検知対象物60の位置を示す座標値が入力されるたびに行われるのではなく、テーブル更新部11がテーブルを更新する際にある条件を満たした場合のみ行われる。そして、ステップS2〜4で暫定的に検出された第1〜第3動作(検出結果)に基づいて、特定部15が検知対象物60のジェスチャーを特定する(ステップS5)。
ここで、ステップS2〜S4の処理は、図8に示される順で行われなくてもよい。ステップS2〜S4の処理は、ステップS5の処理が開始されるまでに行われれば、どのような順番で処理が行われてもよい。
以下に、テーブル及びテーブル更新部11と、第1動作検出部16と、第2動作検出部17と、第3動作検出部18と、特定部15とについて詳細に説明する。
<2−3.テーブル及びテーブル更新部>
ここでは、テーブル保持部12が保持するテーブルについて説明した後に、テーブル更新部11が行う処理について説明する。
<テーブルに保持される情報について>
既述したように、テーブル保持部12は、x座標値に関する情報を保持する第1テーブルと、y座標値に関する情報を保持する第2テーブルと、z座標値に関する情報を保持する第3テーブルとのうちの少なくとも1つのテーブルを保持している。
第1テーブルには、x座標値が同一方向、つまりプラス方向もしくはマイナス方向に連続して変化する回数と、x座標値が同一方向に連続して変化する際の当該x座標値の変化量の累積値とのうちの少なくとも1つと、x座標値が同一方向に連続して変化する際の当該x座標値の変化方向とが保持されている。
図9は、テーブルに保持される情報を説明するための図である。図9の横軸は、時間を示しており、縦軸はジェスチャー検出装置1に入力されたx座標値の値を示している。図9には、時刻t1〜t6のそれぞれにおいて、ジェスチャー検出装置1に入力されたx座標値が示されている。また、図9に示される例では、時刻t2〜t5の間で、ジェスチャー検出装置1に入力されたx座標値がプラス方向に連続して変化している。
ここで、図9の時刻t5に注目した場合、時刻t5のときに第1テーブルに保持されるx座標値が同一方向に連続して変化する回数はAとなる。x座標値が同一方向に連続して変化する回数は、x座標値の変化が現れたときを1回目と数える。したがって、Aは3となる。
同様に、図9の時刻t5に注目した場合、時刻t5のときに第1テーブルに保持されるx座標値が同一方向に連続して変化する際の当該x座標値の変化量の累積値はBとなる。x座標値がある方向に連続して変化する際の注目時刻での当該x座標値の変化量の累積値は、x座標値が当該ある方向へ変化した際の変化の始点となるx座標値から、注目時刻においてジェスチャー検出装置1に入力されたx座標値までの変化量に相当する。つまり、Bは、プラス方向への座標値の変化が始まった時刻t2のときにジェスチャー検出装置1に入力されたx座標値と、注目時刻(即ち、時刻t5)のときにジェスチャー検出装置1に入力されたx座標値との差となる。
同様に、図9の時刻t5に注目した場合、時刻t5のときに第1テーブルに保持されるx座標値が同一方向に連続して変化する際の当該x座標値の変化方向は、プラス方向となる。x座標値が同一方向に連続して変化する際の当該x座標値の変化方向は、プラス方向およびマイナス方向のいずれかとなる。
上記の例では、x座標値に関する情報を保持する第1テーブルについて説明したが、y座標値に関する情報を保持する第2テーブル及びz座標値に関する情報を保持する第3テーブルについても第1テーブルと同様に考えることができる。
また、本実施形態では、テーブルに保持される、ある座標値が同一方向に連続して変化する回数を「変化回数」と呼ぶことがある。また、テーブルに保持される、ある座標値が同一方向に連続して変化する際の当該座標値の変化量の累積値を、「累積変化量」と呼ぶことがある。また、テーブルに保持される、ある座標値が同一方向に連続して変化する際の当該座標値の変化方向を「変化方向」と呼ぶことがある。
<テーブル更新部が行う処理について>
図10は、テーブル更新部11が行う処理を説明するための図である。図10を参照しながら、テーブル更新部11が行う処理について以下に説明する。なお、以下の説明では、テーブル更新部11が、第1テーブルの更新を行う場合を例に挙げて説明するが、テーブル更新部11が、第2テーブルの更新を行う場合および第3テーブルの更新を行う場合についても、同様に考えることができる。
まず、テーブル更新部11は、ジェスチャー検出装置1にx座標値が入力されると、テーブル保持部12に保持されている第1テーブルを取得する(ステップS10)。次に、テーブル更新部11は、今回入力されたx座標値から、ジェスチャー検出装置1に前回入力されたx座標値を減算する(ステップS11)。ここで、本実施の形態では、ステップS11で求められた値を、差分値αと呼ぶ。
ステップS11で求められた差分値αは、今回入力されたx座標値と、前回入力されたx座標値との差を表している。また、ステップS11で求められた差分値αが正の値(α>0)であるときには、前回入力されたx座標値に対する、今回入力されたx座標値の変化の方向がプラス方向であると言える。反対に、ステップS11で求められた差分値αが負の値(α<0)であるときには、前回入力されたx座標値に対する、今回入力されたx座標値の変化の方向がマイナス方向であると言える。
なお、ステップS11の処理で用いる、前回入力されたx座標値は、テーブル更新部11によって一時的に記憶されているものとする。ただし、前回入力されたx座標値は、例えば、第1テーブルに保持されている等、テーブル更新部11以外によって記憶されていてもよい。
次に、テーブル更新部11は、ステップS10で取得した第1テーブルが初期化されているかを調べる(ステップS12)。より具体的には、テーブル更新部11は、ステップS10で取得した第1テーブルに変化回数、累積変化量および変化方向を示すデータが保持されているかを調べる。
ステップS10で取得した第1テーブルが初期化されている場合には(ステップS12でYes)、テーブル更新部11は、テーブル保持部12に保持されている第1テーブルの変化回数に「1」を登録し(ステップS13)、テーブル保持部12に保持されている第1テーブルの累積変化量に、ステップS11で求められた差分値αの絶対値「|α|」を登録する(ステップS14)。そして、テーブル更新部11は、ステップS11で求めた差分値αが正の値か負の値かを判定する(ステップS15)。
ステップS11で求めたαが正の値である場合には(ステップS15でYes)、今回入力されたx座標値が、前回入力されたx座標値に対してプラス方向に変化しているので、テーブル更新部11は、テーブル保持部12に保持されている第1テーブルの変化方向に「プラス方向」を登録する(ステップS16)。一方、ステップS11で求めた差分値αが負の値である場合には(ステップS15でNo)、今回入力されたx座標値が、前回入力されたx座標値に対してマイナス方向に変化しているので、テーブル更新部11は、テーブル保持部12に保持されている第1テーブルの変化方向に「マイナス方向」を登録する(ステップS17)。
なお、ステップS15の処理において、ステップS11で求められた差分値αが0である場合には、テーブル更新部11は処理を終了する。つまり、検知対象物60が動いていないときには、テーブル更新部11は、テーブル保持部12に保持されている第1テーブルの更新を行わない。
ステップS12に戻り、ステップS10で取得した第1テーブルが初期されていない場合には(ステップS12でNo)、テーブル更新部11は、ステップS11で求めた差分値αが正の値か負の値かを調べる(ステップS18)。
ステップS11で求めた差分値αが正の値である場合、つまり、今回入力されたx座標値が、前回入力されたx座標値に対してプラス方向に変化している場合には(ステップS18でYes)、テーブル更新部11は、ステップS10で取得した第1テーブルに保持されている変化方向が「プラス方向」であるか否かを調べる(ステップS19)。第1テーブルに保持されている変化方向がプラス方向である場合、つまりx座標値が前回に引き続き今回もプラス方向に変化している場合には(ステップS19でYes)、テーブル更新部11は、ステップS10で取得した第1テーブルに保持されている変化回数に「+1」を加算した値を、テーブル保持部12に保持されている第1テーブルに登録する(ステップS20)。そして、テーブル更新部11は、ステップS10で取得した第1テーブルに保持されている累積変化量に「|α|」を加算した値を、テーブル保持部12に保持されている第1テーブルに登録する(ステップS21)。なお、x座標値は前回に引き続き同一方向に変化しているため、テーブル更新部11はテーブル保持部12に保持されている第1テーブルの変化方向の更新は行わない。
ステップS19に戻り、ステップS10で取得した第1テーブルに保持されている方向がプラス方向でない場合(ステップS19でNo)、つまり前回までのx座標値の変化方向(マイナス方向)と、前回入力されたx座標値に対する、今回入力されたx座標値の変化の方向(プラス方向)とが逆である場合には、テーブル更新部11は、第3動作検出部18に対して、変化方向が変わった旨の通知を行い(ステップS22)、さらにテーブル保持部12に保持されている第1テーブルを初期化する(ステップS23)。このように、x座標値の同一方向に変化していない場合には、テーブル更新部11はテーブル保持部12に保持されている第1テーブルの初期化を行う。また、後で詳しく述べるが、第3動作検出部18は、ステップS23で初期化される直前のテーブルを用いて第3動作の検知処理を行う。そのため、テーブル更新部11は、ステップS23でテーブルの初期化を行う前に、第3動作検出部18に通知を行う。第3動作検出部18は、テーブル更新部11から通知を受けると、初期化される前のテーブルをテーブル保持部12から取得する。
ステップS18に戻り、ステップS11で求められた差分値αが負の値である場合、つまり今回入力されたx座標値が、前回入力されたx座標値に対してマイナス方向に変化している場合には(ステップS18でNo)、テーブル更新部11は、ステップS10で取得された第1テーブルに保持されている変化方向が「プラス方向」であるか否かを調べる(ステップS24)。
ステップS10で取得された第1テーブルに保持されている変化方向がプラス方向である場合、つまり、前回までのx座標値の変化方向(プラス方向)と、前回入力されたx座標値に対する、今回入力されたx座標値の変化の方向(マイナス方向)とが逆である場合には(ステップS24でYes)、テーブル更新部11は、第3動作検出部18に対して、変化方向が変わった旨の通知を行い(ステップS22)、テーブル保持部12に保持されている第1テーブルを初期化する(ステップS23)。
なお、ステップS18の処理において、ステップS11で求められた差分値αが0である場合には、テーブル更新部11は処理を終了する。つまり、検知対象物60がx軸に沿って動いていないときには、テーブル更新部11は、テーブル保持部12に保持されている第1テーブルの更新を行わない。
ステップS24に戻り、第1テーブルに保持されている変化方向がプラス方向でない場合、つまりx座標値が前回に引き続き今回もマイナス方向に変化している場合には(ステップS24でNo)、テーブル更新部11は、ステップS10で取得した第1テーブルに保持されている変化回数に「+1」を加算した値を、テーブル保持部12に保持されている第1テーブルに登録する(ステップS20)。そして、テーブル更新部11は、ステップS10で取得した第1テーブルに保持されている累積変化量に、ステップS11で求められたαの絶対値「|α|」を加算した値を、テーブル保持部12に保持されている第1テーブルに登録する(ステップS21)。
このように、本実施の形態では、ジェスチャー検出部13(動作検出部14)が検知対象物60のジェスチャーを検出するために用いる各テーブルを、ジェスチャー検出装置1に入力される検知対象物60の位置を示す座標値と、テーブル保持部12に保持されているテーブルとに基づいて、簡単に更新することができる。その結果、ジェスチャー検出装置1は、簡単な処理で検知対象物60のジェスチャーを検出することができる。
なお、テーブル更新部11は、テーブル保持部12が保持するテーブルに変化回数の情報が保持されない場合には、ステップS13及びステップS20の処理を行わない。同様に、テーブル更新部11は、テーブル保持部12が保持するテーブルに累積変化量の情報が保持されない場合には、ステップS14及びステップS21の処理を行わない。
<テーブル更新部が行う処理の一例>
図11は、第1テーブルの一例を示す図である。図11には、時刻t1〜t4においてジェスチャー検出装置1に入力されたx座標値と、第1テーブル(変化回数、累積変化量および変化方向)との関係が示されている。図10,11を参照しながら、テーブル更新部11によって行われる第1テーブルの更新処理の一例を以下に説明する。
図11に示されるように、時刻t1では、ジェスチャー検出装置1にx座標値として「30」が入力されている。テーブル更新部11は、時刻t1以前にジェスチャー検出装置1に入力されたx座標値(つまり、前回ジェスチャー検出装置1に入力されたx座標値)を記憶していないため、時刻t1では処理を行わない。
なお、時刻t1では、第1テーブルは初期化されている。つまり、時刻t1のときにテーブル保持部12が保持する第1テーブルには、変化回数、累積変化量および変化方向を示すデータが保持されていない。
次に、時刻t2でジェスチャー検出装置1にx座標値として「45」が入力されると、テーブル更新部11は、時刻t1のときにジェスチャー検出装置1にx座標値として入力された「30」と、時刻t2のときにジェスチャー検出装置1に入力されたx座標値「45」と、時刻t1のときの第1テーブルとを用いて、当該第1テーブルに変化回数、累積変化量および変化方向を登録する。
まず、時刻t2のときにジェスチャー検出装置1に入力されたx座標値「45」から、時刻t1のときにジェスチャー検出装置1に入力されたx座標値「30」を減算すると、「15(=α)」となる(図10のステップS11)。そして、時刻t1のときのテーブル(更新前のテーブル)は、初期化されている(図10のステップS12でYes)。
したがって、時刻t2では、テーブル更新部11は、テーブル保持部12に保持される第1テーブルの変化回数に、x座標値の変化が1回目であることを示す「1」を登録する(図10のステップS13)。続いて、時刻t2では、テーブル更新部11は、テーブル保持部12に保持される第1テーブルの累積変化量に「15(=|α|)」を登録する(図10のステップS15)。そして、ステップS11で求められた値α(=15)が正の値であるため(図10のステップS15でYes)、テーブル更新部11は、テーブル保持部12に保持されている第1テーブルの変化方向に「プラス方向」を登録する(図10のステップS16)。
次に、時刻t3でジェスチャー検出装置1にx座標値として「48」が入力されると、テーブル更新部11は、時刻t2のときにジェスチャー検出装置1にx座標値として入力された「45」と、時刻t3のときにジェスチャー検出装置1にx座標値として入力された「48」と、時刻t2のときにテーブル更新部11に更新された第1テーブルとを用いて、テーブル保持部12に保持されている第1テーブルを更新する。
まず、時刻t3のときにジェスチャー検出装置1に入力されたx座標値「48」から、時刻t2のときにジェスチャー検出装置1に入力されたx座標値「45」を減算すると、「3(=α)」となる(図10のステップS11)。また、時刻t2のときにテーブル更新部11に更新された第1テーブルには、変化回数「1」、累積変化量「15」および変化方向「プラス方向」が登録されている(図10のステップS12でNo)。そして、ステップS11で求められた値α(=3)は正の値であり(図10のステップS18でYes)、ステップS10で取得した第1テーブルの変化方向には「プラス方向」が登録されている(図10のステップS19でYes)。
したがって、時刻t3では、テーブル更新部11は、ステップS10で取得した第1テーブルに保持されている変化回数「1」に「+1」を加算した値「2」を、テーブル保持部12に保持されている第1テーブルの変化回数に登録する(図10のステップS20)。続いて、テーブル更新部11は、ステップS10で取得した第1テーブルに保持されている累積変化量「15」に「|3(=α)|」を加算した値「18」を、テーブル保持部12に保持されている第1テーブルの累積変化量に登録する。
次に、時刻t4でジェスチャー検出装置1にx座標値として「40」が入力されると、テーブル更新部11は、時刻t3のときにジェスチャー検出装置1にx座標値として入力された「48」と、時刻t4のときにジェスチャー検出装置1にx座標値として入力された「40」と、時刻t3のときにテーブル更新部11に更新された第1テーブルとを用いて、テーブル保持部12に保持されている第1テーブルを更新する(図10のステップS10)。
まず、時刻t4のときにジェスチャー検出装置1に入力されたx座標値「40」から、時刻t3のときにジェスチャー検出装置1に入力されたx座標値「48」を減算すると、「−8(=α)」となる(図10のステップS11)。また、ステップS10で取得された第1テーブルには、変化回数「2」、累積変化量「18」および変化方向「プラス方向」が登録されている(図10のステップS12でNo)。そして、−8(=α)は負の値であり(図10のステップS18でNo)、ステップS10で取得された第1テーブルの変化方向には「プラス方向」が登録されている(図10のステップS24でYes)。したがって、テーブル更新部11は、第3動作検出部18に、変化方向が変わった旨の通知を行い(図10のステップS22)、テーブル保持部12に保持されている第1テーブルの初期化を行う(図10のステップS23)。
以後、同様にして、テーブル更新部11は、ジェスチャー検出装置1に入力されたx座標値と、第1テーブルとに基づいてテーブル保持部12に保持されている第1テーブルの更新を行う。
<テーブル更新部が複数のテーブルの更新を行う場合>
図12,13は、テーブル更新部11が、テーブル保持部12に保持されている3種類のテーブル(第1テーブル、第2テーブルおよび第3テーブル)の更新を行うときの処理の流れを示す図である。
図12に例示されるように、テーブル更新部11は、3種類のテーブルの更新を行うときには、ジェスチャー検出装置1に入力されたx座標値を用いて、テーブル保持部12に保持されている第1テーブルの更新を行った後に(ステップS1a)、ジェスチャー検出装置1に入力されたy座標値を用いて、テーブル保持部12に保持されている第2テーブルの更新を行い(ステップS1b)、ジェスチャー検出装置1に入力されたz座標値を用いて、テーブル保持部12に保持されている第3テーブルの更新を行う(ステップS1c)。なお、図12に示される処理は一例であり、テーブル更新部11によって更新が行われるテーブルの数および更新が行われる順番は、図12に示される例に限定されない。
また、テーブル更新部11は、図13に示されるように、前回ジェスチャー検出装置1に入力された値と、今回ジェスチャー検出装置1に入力された値とに変化がない(つまり、前回ジェスチャー検出装置1に入力された値と、今回ジェスチャー検出装置1に入力された値とが同じ値である)場合には、座標値を用いたテーブルの更新処理は行わなくてもよい。
図13に示されるように、テーブル更新部11は今回ジェスチャー検出装置1に入力されたx座標値と、前回ジェスチャー検出装置1に入力されたx座標値とに変化があるかを判定する(ステップS25a)。今回ジェスチャー検出装置1に入力されたx座標値と前回ジェスチャー検出装置1に入力されたx座標値とに変化がある場合には(ステップS25aでYes)、テーブル更新部11は、テーブル保持部12に保持されている第1テーブルの更新処理を行う(ステップS1a)。
一方、今回ジェスチャー検出装置1に入力されたx座標値と前回ジェスチャー検出装置1に入力されたx座標値とに変化がない場合には(ステップS25aでNo)、テーブル更新部11は、テーブル保持部12に保持されている第1テーブルの更新処理を行わずに次の処理(図13に示される例ではステップS25b)を開始する。
今回ジェスチャー検出装置1に入力されたx座標値と、前回ジェスチャー検出装置に入力されたx座標値とが同じであることから、検知対象物60がx軸に沿って動いていないと言える。検知対象物60がx軸に沿って動いていないときには、テーブル更新部11がテーブル保持部12に保持される第1テーブルの更新処理を行っても、当該第1テーブルが保持する情報は変わらない。そのため、上記のように、前回ジェスチャー検出装置1に入力されたx座標値と、前回ジェスチャー検出装置に入力されたx座標値とが同じである場合に、テーブル更新部11が、テーブル保持部12に保持されている第1テーブルの更新を行わない。その結果、ジェスチャー検出装置1は、検知対象物60が動いていないときの、ジェスチャー検出装置1が行う処理の量を削減することができる。
同様に、テーブル更新部11は、今回ジェスチャー検出装置1に入力されたy座標値と、前回ジェスチャー検出装置1に入力されたy座標値とに変化があるかを調べる(ステップS25b)。今回ジェスチャー検出装置1に入力されたy座標値と前回ジェスチャー検出装置1に入力されたy座標値とに変化がある場合には(ステップS25bでYes)、テーブル更新部11は、テーブル保持部12に保持されている第2テーブルを更新処理を行う(ステップS1b)。反対に、ジェスチャー検出装置1に入力されたy座標値と前回ジェスチャー検出装置1に入力されたy座標値とに変化がない場合には(ステップS25bでNo)、テーブル更新部11は、テーブル保持部12に保持されている第2テーブルの更新処理を行わない。
同様に、テーブル更新部11は、今回ジェスチャー検出装置1に入力されたz座標値と、前回ジェスチャー検出装置1に入力されたz座標値とに変化があるかを調べる(ステップS25c)。今回ジェスチャー検出装置1に入力されたz座標値と前回ジェスチャー検出装置1に入力されたz座標値とに変化がある場合には(ステップS25cでYes)、テーブル更新部11は、テーブル保持部12に保持されている第3テーブルの更新処理を行う(ステップS1c)。反対に、ジェスチャー検出装置1に入力されたz座標値と前回ジェスチャー検出装置1に入力されたz座標値とに変化がない場合には(ステップS25cでNo)、テーブル更新部11は、テーブル保持部12に保持されている第3テーブルの更新処理を行わない。
<2−4.第1動作検出部の概要>
既述したように、第1動作検出部16は、図5に示されるような回転動作を、2つのテーブルに基づいて検出する。より具体的には、第1動作検出部16は、xy座標平面上で検知対象物60が回転する第1動作を検出する場合には、テーブル更新部11によって更新された第1および第2テーブルを用いて検出処理を行う。また、第1動作検出部16は、xz座標平面上で検知対象物60が回転する第1動作を検出する場合には、テーブル更新部11によって更新された第1および第3テーブルを用いて検出処理を行う。また、第1動作検出部16は、yz座標平面上で検知対象物60が回転する第1動作を検出する場合には、テーブル更新部11によって更新された第2及び第3テーブルを用いて検出処理を行う。
図14は、第1動作検出部16の構成を示す図である。図15は、第1動作検出部16での処理を説明するための図である。図14に示されるように、第1動作検出部16は、移動方向特定部20および第1判定部21を有している。第1動作検出部16の概略的な動作について、図14,15を参照しながら以下に説明する。
まず、移動方向特定部20が、テーブル更新部11によって更新された2つのテーブルに基づいて検知対象物60が移動した方向(移動方向)を特定する(ステップS30)。続いて、第1判定部21が、移動方向特定部20において検知対象物60の移動方向が特定された順序を履歴情報として保持する(ステップS31)。そして、第1判定部21は、履歴情報に基づいて、移動方向特定部20において検知対象物60の移動方向が特定された順序が、所定順序を示すか否かを判定する(ステップS32)。履歴情報に基づいて、移動方向特定部20において検知対象物60の移動方向が特定された順序が、所定順序を示す場合には、第1判定部21は、検知対象物60が第1動作を行ったと判定する。
図16,17を参照しながら、第1判定部21がステップS32の処理で用いる所定順序について以下に説明する。図16は、xy座標平面上で検知対象物60が第1動作を行った場合の一例を示す図である。図17は、検知対象物60によって図16に示される第1動作が行われたときに、位置検出装置100が検出したx座標値およびy座標値を示す図である。なお、以下の説明では、検知対象物60がxy座標平面上で第1動作を行った場合を例に挙げて説明するが、検知対象物60が他の座標平面上(より具体的には、xz座標平面上もしくはyz座標平面上)で第1動作を行う場合も同様に考えることができる。
図16には、時刻T0〜T4までの検知対象物60の動きが示されている。図16に示される例では、検知対象物60は、時刻T0〜T4に示される動きを行うことで、時計回りに回転する第1動作を行っている。本実施の形態では、便宜上、図16に示されるように、x軸のプラス方向を「右方向」と呼び、x軸のマイナス方向を「左方向」と呼ぶ。同様に、y軸のプラス方向を「上方向」と呼び、y軸のマイナス方向を「下方向」と呼ぶ。
より具体的には、時刻T0〜T1では、検知対象物60はxy座標平面における左下の領域から、xy座標平面における左上の領域に向かって、xy座標平面の原点を中心に円弧を描くように移動している。時刻T1〜T2では、検知対象物60はxy座標平面における左上の領域から、xy座標平面における右上の領域に向かって、xy座標平面の原点を中心に円弧を描くように移動している。時刻T2〜T3では、検知対象物60は、xy座標平面における右上の領域から、xy座標平面における右下の領域に向かって、xy座標平面の原点を中心に円弧を描くように移動している。そして、時刻T3〜T4では、検知対象物60は、xy座標平面における右下の領域から、xy座標平面における左下の領域に向かって、xy座標平面の原点を中心に円弧を描くように移動している。
一方、図17の上側のグラフには位置検出装置100が検出したx座標値が示されており、下側のグラフには位置検出装置100が検出したy座標値が示されている。それぞれのグラフにおいて、横軸は時間を示しており、縦軸は位置検出装置100によって検出された座標値を示している。
検知対象物60が図16に示されるような第1動作を行っている場合には、図17に示されるように、時刻T0〜T1では、x座標値はほとんど変化せず、y座標値は上方向に変化する。つまり、時刻T0〜T1において、位置検出装置100から入力されたx座標値及びy座標値から特定される検知対象物60が移動する方向は、上方向であると言える。
続いて、時刻T1〜T2では、x座標値は右方向に変化し、y座標値はほとんど変化しない。つまり、時刻T1〜T2において、位置検出装置100から入力されたx座標値及びy座標値から特定される検知対象物60が移動する方向は、右方向であると言える。
続いて、時刻T2〜T3では、x座標値はほとんど変化せず、y座標値は下方向に変化する。つまり、時刻T2〜T3において、位置検出装置100から入力されたx座標値及びy座標値から特定される検知対象物60が移動する方向は、下方向であると言える。
そして、時刻T3〜T4では、x座標値は左方向に変化し、y座標値はほとんど変化しない。つまり、時刻T3〜T4において、位置検出装置100から入力されたx座標値及びy座標値から特定される検知対象物60が移動する方向は、左方向であると言える。
したがって、検知対象物60が時計回りに回転する第1動作を行う場合には、位置検出装置100から入力されたx座標値及びy座標値に基づいて、検知対象物60が上方向に移動(図16の時刻T0〜T1)したと特定された後には、当該検知対象物60が右方向に移動(図16の時刻T1〜T2)すると特定される。同様に、位置検出装置100から入力されたx座標値及びy座標値に基づいて、検知対象物60が右方向に移動(図16の時刻T1〜T2)したと特定された後には、当該検知対象物60が下方向に移動(図16の時刻T2〜T3)すると特定される。同様に、位置検出装置100から入力されたx座標値及びy座標値に基づいて、検知対象物60が下方向に移動(図16の時刻T2〜T3)したと特定された後には、検知対象物60が左方向に移動(図16の時刻T3〜T4)すると特定される。
そして、検知対象物60が図16に示されるように、xy座標平面における左下の領域から時計回りに回転する第1動作を行った場合には、位置検出装置100から入力されたx座標値及びy座標値に基づいて特定される検知対象物60の移動方向は、上記のように上方向、右方向、下方向、左方向の順(所定順序)で変化する。
したがって、本実施の形態における第1動作検出部16では、移動方向特定部20がテーブル更新部11によって更新された2つのテーブルに基づいて、検知対象物60の移動方向を特定し(ステップS30)、第1判定部21は、移動方向特定部20において検知対象物60の移動方向が特定された順序が、上方向、右方向、下方向、左方向といった所定順序を示す場合に、検知対象物60が第1動作を行っていると判定する(ステップS31,S32)。
なお、ステップS32の処理で用いる所定順序は、上述した上方向、右方向、下方向、左方向の順序に限られない。検知対象物60が座標平面上のどの位置から開始するか、当該時計回りに回転を行うか反時計回りに回転を行うかによって、x座標値およびy座標値から特定されるべきである検知対象物60の移動方向の順序は異なる。したがって、ステップS32の処理で用いられる所定順序は、複数種類存在する。所定順序の種類については、後で説明する。
なお、第1動作検出部16は、複数の座標平面での第1動作を検出する場合には、図15に示されるステップS2の処理を繰り返し行う。例えば、第1動作検出部16が、xy座標平面上の第1動作と、xz座標平面上の第1動作とを検出する場合には、第1動作検出部16は、xy座標平面上の第1動作を検出するために第1及び第2テーブルを用いてステップS2の処理を行った後に、xz座標平面上の第1動作を検出するために第1及び第3テーブルを用いてステップS2の処理を行えばよい。
以下に、移動方向特定部20および第1判定部21について詳細に説明する。
<2−4−1.移動方向特定部>
<移動方向特定部で行われる処理について>
既述したように移動方向特定部20は、検知対象物60が移動した方向を特定する。図18は、位置検出装置100で検出されたx座標値を示す図である。図19は、図18に示される時刻T10,T11でテーブル更新部11に更新された第1テーブルを示す図である。図18,19を参照しながら、移動方向特定部20が行う処理の概要を説明する。
なお、以下の説明では、移動方向特定部20が、第1テーブルに基づいて検知対象物60の移動方向を特定する場合を例に挙げて説明するが、移動方向特定部20が、第2テーブルに基づいて検知対象物60の移動方向を特定する場合および第3テーブルに基づいて検知対象物60の移動方向を特定する場合についても、同様に考えることができる。
図18,19に示されるように、時刻T10のときにテーブル更新部11に更新された第1テーブルには、変化回数に「C1」が保持されており、累積変化量に「L1」が保持されており、変化方向に「プラス方向」が保持されている。この場合には、移動方向特定部20は、変化回数C1が第1の閾値より大きく、かつ累積変化量L1が第2の閾値より大きい場合に、検知対象物60がプラス方向(つまり、右方向)に移動していると特定する。
同様に、時刻T11のときにテーブル更新部11に更新された第1テーブルには、変化回数に「C2」が保持されており、累積変化量に「L2」が保持されており、変化方向に「マイナス方向」が保持されている。この場合には、移動方向特定部20は、変化回数C2が第1の閾値より大きく、かつ累積変化量L2が第2の閾値より大きい場合に、検知対象物60がマイナス方向(つまり、左方向)に移動していると特定する。
移動方向特定部20は、テーブル更新部11に更新されたテーブルに保持されている変化回数が第1の閾値より大きいか否かを判定することによって、当該第1の閾値に応じた第1時間より長い時間、検知対象物60が同一方向に移動しているか否かを判定している。また、移動方向特定部20は、テーブル更新部11に更新されたテーブルに保持されている累積変化量が第2の閾値より大きいか否かを判定することによって、当該第2の閾値に応じた第1距離より長い距離を、検知対象物60が同一方向に移動しているか否かを判定している。
移動方向特定部20は、テーブル更新部11に更新されたテーブルに保持されている累積変化量が第2の閾値より大きい場合であっても、当該テーブルに保持されている変化回数が第1の閾値より小さい場合には、検知対象物60が当該テーブルが保持する変化方向が示す方向に移動したと特定しない。つまり、検知対象物60が早い速度で動作を行って、第1距離より長い距離を移動したとしても、当該動作を行う時間が第1時間より短い場合には、移動方向特定部20は、検知対象物60がテーブル更新部11に更新されたテーブルに保持されている変化方向が示す方向に移動したと特定しない。そのため、本実施の形態に係る移動方向特定部20は、ノイズ等の影響によりジェスチャー検出装置1に入力される座標値が一時的に大きく変化していた場合であっても、当該座標値の変化が検知対象物60の動作によるものと判断しない。
同様に、移動方向特定部20は、テーブル更新部11に更新されたテーブルに保持されている変化回数が第1の閾値より大きい場合であっても、当該テーブルに保持されている累積変化量が第2の閾値より小さい場合には、検知対象物60が当該テーブルに保持されている変化方向が示す方向に移動したと判定しない。つまり、検知対象物60が遅い速度で動作を行い、当該動作が第1時間より長い時間行われていても、検知対象物60が第1距離より短い距離しか動いていない場合には、移動方向特定部20は、検知対象物60が移動したと判定しない。そのため、本実施の形態に係る移動方向特定部20は、例えば、検知対象物60がジェスチャーを行っていないときに、ジェスチャー検出装置1に入力される座標値に小さな変化が発生した場合でも、当該座標値の変化が検知対象物60の動作によるものと判断しない。
また、例えば、第1の閾値には4[回]が採用され、第2の閾値には30[mm]が採用される。第1の閾値および第2の閾値は、ジェスチャー検出装置1の使用用途(例えば検知対象物60が動く早さ、第1動作を行うときの回転の軌跡の大きさ等)等に応じて選択される。
このように、本実施の形態では、移動方向特定部20が、テーブルに保持されている変化回数(検知対象物60が移動した時間)と累積変化量(検知対象物60が動いた距離)とを用いて、検知対象物60が移動したか否かを判断する。そのため、ノイズ等によってジェスチャー検出装置1に入力される座標値が変化した場合に、移動方向特定部20によって当該座標値の変化が検知対象物60の動作として特定されることを抑制することができる。その結果、ジェスチャー検出装置1のジェスチャーの検出精度を向上することができる。
<移動方向特定部での処理の流れ>
図20,21は移動方向特定部20が行う処理を説明するための図である。図20,21を参照しながら、移動方向特定部20が行う処理の流れについて以下に説明する。
図20に示されるように、まず、移動方向特定部20は第1動作の検出に用いる2つのテーブルを取得する(ステップS35)。例えば、第1動作検出部16でxy座標平面上の第1動作を検出する場合には、移動方向特定部20はステップS35で、テーブル更新部11によって更新された第1テーブル及び第2テーブルを取得する。次に、移動方向特定部20は、検知対象物60が下方向へ移動しているか否かを特定する(ステップS36a)。図21には、ステップS36aの処理の詳細が示されている。
図21に示されるように、移動方向特定部20は、検知対象物60が下方向へ移動しているか否かを特定するために必要なテーブル、つまりy座標値に基づいてテーブル更新部11に更新された第2テーブルを取得する(ステップS40)。
続いて、移動方向特定部20は、ステップS40で取得した第2テーブルに保持されている変化方向が下方向(マイナス方向)か否かを調べる(ステップS41)。移動方向特定部20は、ステップS40で取得した第2テーブルに保持されている変化方向が下方向でない場合には(ステップS41でNo)、検知対象物60が下方向に移動していないと特定し(ステップS42)、ステップS36aの処理を終了する。一方、移動方向特定部20は、ステップS40で取得した第2テーブルに保持されている変化方向が下方向である場合には(ステップS41でYes)、当該第2テーブルに保持されている変化回数が第1の閾値より大きいかを調べる(ステップS43)。
移動方向特定部20は、ステップS40で取得した第2テーブルに保持されている変化回数が第1の閾値より小さい場合、あるいは第1の閾値と同じ値である場合には(ステップS43でNo)、検知対象物60が下方向に移動していないと特定し(ステップS42)、ステップS36aの処理を終了する。一方、移動方向特定部20は、ステップS40で取得した第2テーブルに保持されている変化回数が、第1の閾値より大きい場合には(ステップS43でYes)、当該第2テーブルに保持されている累積変化量が第2の閾値より大きいかを調べる(ステップS44)。なお、本実施の形態では、ステップS40で取得した第2テーブルに保持されている変化回数と第1の閾値とが同じ値である場合には、移動方向特定部20は検知対象物60が下方向に移動していないと特定している。しかし、移動方向特定部20は、ステップS40で取得した第2テーブルに保持されている変化回数と第1の閾値とが同じ値である場合に、ステップS44に進んでもよい。
ステップS44において、ステップS40で取得した第2テーブルに保持されている累積変化量が第2の閾値より小さい場合、あるいは第2の閾値と同じ場合には(ステップS44でNo)、移動方向特定部20は、検知対象物60が下方向に移動していないと特定し(ステップS42)、ステップS36aの処理を終了する。一方、移動方向特定部20は、ステップS40で取得した第2テーブルに保持されている累積変化量が第2の閾値より大きい場合には(ステップS44でYes)、検知対象物60が下方向に移動していると特定し(ステップS45)、ステップS36aの処理を終了する。なお、本実施の形態では、ステップS40で取得した第2テーブルに保持されている累積変化量が第2の閾値と同じ値である場合には、移動方向特定部20が、検知対象物60が下方向に移動していないと特定している。しかし、移動方向特定部20は、ステップS40で取得した第2テーブルに保持されている累積変化量と第2の閾値とが同じ値である場合に、検知対象物60が下方向に移動していると特定してもよい。
図20に戻り、ステップS36a(図21に示される処理)によって、検知対象物60が下方向に移動していると特定された場合には(ステップS36aでYes)、移動方向特定部20は、検知対象物60が下方向に移動したという特定結果を第1判定部21に送出し(ステップS37a)、ステップS30の処理を終了する。反対に、ステップS36a(図21に示される処理)によって、検知対象物60が下方向に移動していないと特定された場合には(ステップS36aでNo)、移動方向特定部20は、検知対象物60が右方向に移動したか否かを判定する(ステップS36b)。
ステップS36bでは、移動方向特定部20は、ステップS36aの処理と同様の手順で検知対象物60が右方向に移動したか否かを特定する(図21参照)。ステップS36aとステップS36bとの違いは、処理に用いるテーブルと、判定に用いる変化方向とである。より具体的には、ステップS36aでは、第2テーブルを用いて処理を行うのに対し、ステップS36bでは第1テーブルを用いて処理を行う。したがって、ステップS36bでは、図21に示されるステップS36aのステップS40とは異なり、移動方向特定部20は、第1テーブルを取得する。また、ステップS36aでは、検知対象物60が下方向(マイナス方向)に移動しているか否かを判定するのに対し、ステップS36bでは、検知対象物60が右方向(プラス方向)に移動しているか否かを判定する。したがって、ステップS36bでは、図21に示されるステップS36aステップS41とは異なり、移動方向特定部20は、取得したテーブルに保持されている変化方向が右方向(プラス方向)か否かを判定する。
なお、後述するステップ36cでの検知対象物60が上方向に移動しているか否かの特定及びステップS36dでの検知対象物60が右方向に移動しているか否かの特定も、ステップS36a及びステップS36bと同様の手順で行うことができる。
図20に戻り、ステップS36bで、検知対象物60が右方向に移動したと特定された場合には(ステップS36bでYes)、移動方向特定部20は、検知対象物60が右方向に移動したという特定結果を第1判定部21に送出し(ステップS37b)、ステップS30の処理を終了する。反対に、ステップS36bによって、検知対象物60が右方向に移動していないと特定された場合には(ステップS36bでNo)、移動方向特定部20は、検知対象物60が上方向に移動したか否かを判定する(ステップS36c)。
ステップS36cで、検知対象物60が上方向に移動したと特定された場合には(ステップS36cでYes)、移動方向特定部20は、検知対象物60が上方向に移動したという特定結果を第1判定部21に送出し(ステップS37c)、ステップS30の処理を終了する。反対に、ステップS36cによって、検知対象物60が上方向に移動していないと特定された場合には(ステップS36cでNo)、移動方向特定部20は、検知対象物60が左方向に移動したか否かを判定する(ステップS36d)。
ステップS36dで、検知対象物60が左方向に移動したと特定された場合には(ステップS36dでYes)、移動方向特定部20は、検知対象物60が左方向に移動したという特定結果を第1判定部21に送出し(ステップS37d)、ステップS30の処理を終了する。反対に、ステップS36dによって、検知対象物60が左方向に移動していないと特定された場合には(ステップS36cでNo)、移動方向特定部20は、第1動作検出部16の処理を終了する(ステップS38)。
このように、移動方向特定部20は、第1座標軸と第2座標軸から成る座標平面上の第1動作を検出する場合には、第1座標軸のプラス方向、第1座標軸のマイナス方向、第2座標軸のプラス方向および第2座標軸のマイナス方向のうちの、いずれかの方向に検知対象物60が移動しているかを、1つの方向ずつ順番に調べる。移動方向特定部20は、検知対象物60が、ある方向に移動していると特定した場合には、当該特定結果を第1判定部21に送出して、移動方向特定部20の処理を終了する。反対に、検知対象物60が4つの方向のいずれにも移動していない場合には、当該特定結果に基づいて検知対象物60のジェスチャーが検出されることがないため、移動方向特定部20は、第1動作検出部16の動作を終了する。
なお、図20に示される例では、移動方向特定部20は、検知対象物60が下方向に移動しているか(ステップS36a)、検知対象物60が右方向に移動しているか(ステップS36b)、検知対象物60が上方向に移動しているか(ステップS36c)、検知対象物が左方向に移動しているか(ステップS36d)の順で検知対象物60の移動方向を特定しているが、必ずしもこの方向の順序で特定を行う必要はない。例えば、移動方向特定部20は、検知対象物60が左方向に移動しているか(ステップS36d)、検知対象物60が右方向に移動しているか(ステップS36b)、検知対象物60が下方向に移動しているか(ステップS36a)、検知対象物60が上方向に移動しているか(ステップS36c)の順で、検知対象物60の移動方向を特定してもよい。
なお、本実施の形態では、移動方向特定部20は、テーブルに保持されている変化回数、累積変化量および変化方向の3つの情報を用いて、検知対象物60の移動方向を特定している。しかし、移動方向特定部20は、テーブルに保持されている変化回数および変化方向を用いて検知対象物60の移動方向を特定してもよいし、テーブルに保持されている累積変化量および変化方向を用いて検知対象物60の移動方向を特定してもよい。
<2−4−2.第1判定部>
<第1判定部で行われる処理について>
既述したように、第1判定部21は、移動方向特定部20において検知対象物60の移動方向が特定された順序を履歴情報として保持する。そして、第1判定部21は、履歴情報に基づいて、移動方向特定部20において検知対象物60の移動方向が特定された順序が、所定順序を示すか否かを判定することで、検知対象物60が第1動作を行った否かを検出する。
図22は、検知対象物60が図16に示されるジェスチャーを行ったときに、第1判定部21によって保持される履歴情報を示す図である。図22の横方向には、時刻と、移動方向特定部20で特定された移動方向と、第1判定部21が保持する履歴情報とが示されている。
図22に示されるように、第1判定部21が保持する履歴情報には、第1履歴、第2履歴、第3履歴、第4履歴が含まれる。第1判定部21は、一番初めに移動方向特定部20で特定された移動方向を第1履歴として保持する。そして、次に移動方向特定部20で移動方向が特定されたときには、当該次に移動方向特定部20で特定された移動方向を第2履歴として保持する。したがって、移動方向特定部20が第1乃至第4履歴の全てを保持している場合には、第1履歴として保持されている移動方向が最も古い特定結果であり、第4履歴として保持されている移動方向が最も新しい特定結果となる。
図22に示されるように、時刻T1に移動方向特定部20によって、検知対象物60の移動方向が上方向であると特定されると、第1判定部21は、当該特定結果(上方向)を第1履歴として保持する。次に、時刻T2に移動方向特定部20によって、検知対象物60の移動方向が右方向であると特定されると、第1判定部21は当該特定結果(右方向)を第2履歴として保持する。次に、時刻T3に移動方向特定部20によって、検知対象物60の移動方向が下方向であると特定されると、第1判定部21は当該特定結果(下方向)を第3履歴として保持する。そして、時刻T4に移動方向特定部20によって、検知対象物60の移動方向が左方向であると特定されると、第1判定部21は当該特定結果(左方向)を第4履歴として保持する。
ここで、時刻T4のときの履歴情報は、第1履歴から順に、上方向、右方向、下方向、左方向となり、これらの移動方向の順序は、検知対象物60がxy座標平面の左下の領域から時計回りに回転する第1動作を行ったときの所定順序を示している(図17参照)。したがって、第1判定部21は、時刻T4のときの履歴情報に基づいて、検知対象物60が第1動作を行っていると検出する。
図23は、第1判定部21が、検知対象物60が第1動作を行っているか否かの判定に用いる、複数種類の所定順序を示す図である。図23に示されるNo1〜4には、検知対象物60が時計回りに回転する第1動作を行っているときの複数種類の移動方向の順序が示されている。図23のNo5〜8には、検知対象物60が反時計回りに回転する第1動作を行っているときの複数種類の移動方向の順序が示されている。なお、本実施の形態では、便宜上、検知対象物60が時計回りに回転する第1動作を「第1回転動作」と呼ぶことがある。また、検知対象物60が反時計回りに回転する第1動作を「第2回転動作」と呼ぶことがある。
No1〜No4に示される複数種類の順序は、検知対象物60がxy座標平面におけるどの位置から第1回転動作を始めるかの点で異なっている。したがって、検知対象物60の移動方向が、上方向の後に右方向となり、右方向の後に下方向となり、下方向の後に左方向となる点では共通している。
同様に、No5〜No8に示される複数種類の順序も、No1〜No4と同様に、検知対象物60がxy座標平面におけるどの位置から第2回転動作を始めるかの点で異なっている。したがって、検知対象物60の移動方向が、下方向の後に右方向となり、右方向の後に上方向となり、上方向の後に左方向となる点では共通している。
第1判定部21は、履歴情報が示す、移動方向特定部20において検知対象物60の移動方向が特定された順序が、図23に示される8種類の順序のうちのいずれか1つを示すときに、検知対象物60が第1動作を行っていると検出する。つまり、第1判定部21は、移動方向特定部20において検知対象物60の移動方向が特定された順序が所定順序を示すか否かの簡単な判定によって、検知対象物60が第1動作を行っているか否かを検出することができる。その結果、ジェスチャー検出装置1は簡単な処理によって、検知対象物60が行う第1動作を検出することができる。
また、第1判定部21は、履歴情報が示す、移動方向特定部20において検知対象物60の移動方向が特定された順序と、複数種類の順序とを比較することによって、座標平面上で異なる位置から開始する回転動作を検出することができる。その結果、ジェスチャー検出装置1の利便性が向上する。
また、第1判定部21は、履歴情報が示す、移動方向特定部20において検知対象物60の移動方向が特定された順序が、図23のNo1〜No4に示される順序のうちのいずれか1つを示しているのか、No5〜No8に示される順序のうちのいずれか1つを示しているのかを判定することで、検知対象物60が第1回転動作を行っているのか、第2回転動作を行っているのかを検出することができる。この場合には、第1判定部21は、第1回転動作と、第2回転動作とを区別して検出することができることから、ジェスチャー検出装置1の利便性が向上する。
また、第1判定部21は、履歴情報が示す、移動方向特定部20において検知対象物60の移動方向が特定された順序が、図23のNo1〜No8のうちの特定の1つを示しているのかを判定してもよい。この場合には、第1判定部21は、検知対象物60によって座標平面上で異なる位置から開始する回転動作を区別して検出することができる。具体的には、第1判定部21は、例えばNo1に示されるxy座標平面における左下から開始される時計回りの回転動作と、No2に示されるxy座標平面における左上から開始される時計回りの回転動作とを区別して検出することができる。その結果、ジェスチャー検出装置1の利便性が向上する。
一方、検知対象物60の動作が第1動作でなかった場合には、検知対象物60の動作が第1動作でないと判明した時点で、第1判定部21は、履歴情報をクリア(削除)する。検知対象物60の動作が第1動作でなかった場合について、図24,25を参照しながら以下に説明する。図24は、図16に対応する、xy座標平面上での検知対象物60の動作を示す図である。図25は、検知対象物60が図24に示される動作を行ったときに第1判定部21に保持される履歴情報を示す図である。
図24に示されるように、時刻T20〜T21では、検知対象物60は、xy座標平面における左下の領域から、xy座標平面における左上の領域に向かって、xy座標平面の原点を中心に円弧を描くように移動している。時刻T21〜T22では、検知対象物60は、xy座標平面における左上の領域から、xy座標平面における右上の領域に向かって、xy座標平面の原点を中心に円弧を描くように移動している。そして、時刻T22〜T23では、検知対象物60はx軸に沿ってマイナス方向に移動している。つまり、図24に示される検知対象物60の動きは、時刻T20〜T22に注目すると第1動作であると言えるが、時刻T20〜22に注目すると第1動作であると言えない。
図25に示されるように、時刻T21で、移動方向特定部20によって、検知対象物60の移動方向が上方向であると特定されると、第1判定部21は、当該特定結果(上方向)を第1履歴として保持する。続いて、時刻T22で、移動方向特定部20によって、検知対象物60の移動方向が右方向であると特定されると、第1判定部21は、当該特定結果(右方向)を第2履歴として保持する。しかし、時刻T23で、移動方向特定部20によって、検知対象物60の移動方向が左方向であると特定されると、第1判定部21は、履歴情報をクリアする。第1判定部21は、第1履歴が上方向であり、第2履歴が右方向であり、第3履歴が左方向を示す順序が、図23に示される複数種類の順序の中のいずれにも存在しないことより、検知対象物60が行っている動作が第1動作でないと判断し、履歴情報をクリアする。
言い換えると、第1判定部21は、記憶している履歴情報が現在示す順序と、移動方向特定部20によって今回特定された移動方向との組み合わせが、第1動作の検出に用いる所定順序のうちの先頭から始まる部分に含まれる場合には履歴情報を更新し、履歴情報が示す現在示す順序と、移動方向特定部20によって今回特定された移動方向との組み合わせが、第1動作の検出に用いる所定順序のうちの先頭から始まる部分に含まれない場合には履歴情報をクリアする。このように、第1判定部21は、履歴情報が所定順序を示す可能性がなくなった時点で履歴情報をクリアすることで、次に移動方向特定部20で特定された特定結果を新たな履歴情報として保持することができる。その結果、第1動作検出部16の第1動作の検出精度が向上する。
<第1判定部での処理の流れ>
図26は、第1判定部21での処理の流れを説明するための図である。図26を参照しながら、第1判定部21での処理の流れを以下に説明する。
図26に示されるように、第1判定部21は、まず移動方向特定部20での特定結果を取得する(ステップS50)。続いて、第1判定部21は、履歴情報を保持しているかを判定する(ステップS51)。つまり、第1判定部21は、過去に移動方向特定部20で特定された移動方向を保持しているかを判定する。履歴情報が保持されていない場合には(ステップS51でNo)、第1判定部21は、ステップS50で取得した移動方向を第1履歴として保持し(ステップS52)、第1動作検出部16の処理を終了する(ステップS53)。
一方、履歴情報が保持されている場合には(ステップS51でYes)、第1判定部21は、履歴情報が示す順序と、移動方向特定部20によって特定された移動方向との組み合わせが、第1動作の検出に用いる所定順序のうちの先頭から始まる部分に含まれるかを判定する(ステップS54)。図27,28には、ステップS54の処理の詳細が示されている。
図27に示されるように、まず、第1判定部21は、移動方向特定部20によって特定された移動方向が下方向か否かを判定する(ステップS150)。移動方向特定部20によって特定された移動方向が下方向でない場合には(ステップS150でNo)、第1判定部21は、移動方向特定部20によって特定された移動方向が右方向かを判定する(ステップS160)。一方、移動方向特定部20によって特定された移動方向が下方向である場合には(ステップS150でYes)、第1判定部21は、第1履歴として右方向が保持されており、かつ第2〜第4履歴が保持されていないかを判定する(ステップS151)。ステップS151では、第1判定部21は、履歴情報が図23に示されるNo2の所定順序を示す可能性があるか否かを判定している。第1履歴として右方向が保持されており、かつ第2〜第4履歴が保持されていない場合には(ステップS151でYes)、第1判定部21は、履歴情報が示す順序と、移動方向特定部20によって特定された移動方向との組み合わせが、第1動作の検出に用いる所定順序のうちの先頭から始まる部分に含まれるとして、ステップS54の処理を終了し、ステップS56に進む(ステップS152)。
一方、第1履歴として保持されている移動方向が右方向でない、もしくは第2〜第4履歴うちの少なくとも1つが保持されている場合には(ステップS151でNo)、第1判定部21は、第1履歴として左方向が保持されており、かつ第2〜第4履歴が保持されていないかを判定する(ステップS153)。ステップS153では、第1判定部21は、履歴情報が図23に示されるNo8の所定順序を示す可能性があるか否かを判定している。第1履歴として左方向が保持されており、かつ第2〜第4履歴が保持されていない場合には(ステップS153でYes)、第1判定部21は、ステップS54の処理を終了し、ステップS56に進む(ステップS152)。
第1履歴として保持されている移動方向が左方向でない、もしくは第2〜第4履歴のうちの少なくとも1つが保持されている場合には(ステップS153でNo)、第1判定部21は、第1履歴として上方向が保持されており、第2履歴として右方向が保持されており、かつ第3〜第4履歴が保持されていないかを判定する(ステップS154)。ステップS154では、第1判定部21は、履歴情報が図23に示されるNo1の所定順序を示す可能性があるか否かを判定している。第1履歴として上方向が保持されており、第2履歴として右方向が保持されており、かつ第3〜第4履歴が保持されていない場合には(ステップS154でYes)、第1判定部21は、ステップS54の処理を終了し、ステップS56に進む(ステップS152)。
第1履歴として保持されている移動方向が上方向でない、第2履歴として保持されている移動方向が右方向でない、もしくは第3〜第4履歴の少なくとも1つが保持されている場合には(ステップS154でNo)、第1判定部21は、第1履歴として上方向が保持されており、第2履歴として左方向が保持されており、かつ第3〜第4履歴が保持されていないかを判定する(ステップS155)。ステップS155では、第1判定部21は、履歴情報が図23に示されるNo7の所定順序を示す可能性があるか否かを判定している。第1履歴として上方向が保持されており、第2履歴として左方向が保持されており、かつ第3〜第4履歴が保持されていない場合には(ステップS155でYes)、第1判定部21は、ステップS54の処理を終了し、ステップS56に進む(ステップS152)。
第1履歴として保持されている移動方向が上方向でない、第2履歴として保持されている移動方向が左方向でない、もしくは第3〜第4履歴の少なくとも1つが保持されている場合には(ステップS155でNo)、第1判定部21は、第1履歴として左方向が保持されており、第2履歴として上方向が保持されており、第3履歴として右方向が保持されており、第4履歴が保持されていないかを判定する(ステップS156)。ステップS156では、第1判定部21は、履歴情報が図23に示されるNo4の所定順序を示す可能性があるか否かを判定している。第1履歴として左方向が保持されており、第2履歴として上方向が保持されており、第3履歴として右方向が保持されており、第4履歴が保持されていない場合には(ステップS156でYes)、第1判定部21は、ステップS54の処理を終了し、ステップS56に進む(ステップS152)。
第1履歴として保持されている移動方向が左方向でない、第2履歴として保持されている移動方向が上方向でない、第3履歴として保持されている移動方向が右方向でない、もしくは第4履歴が保持されている場合には(ステップS156でNo)、第1判定部21は、第1履歴として右方向が保持されており、第2履歴として上方向が保持されており、第3履歴として左方向が保持されており、第4履歴が保持されていないかを判定する(ステップS157)。ステップS157では、第1判定部21は、履歴情報が図23に示されるNo6の所定順序を示す可能性があるかを判定している。第1履歴として右方向が保持されており、第2履歴として上方向が保持されており、第3履歴として左方向が保持されており、第4履歴が保持されていない場合には(ステップS157でYes)、第1判定部21は、ステップS54の処理を終了し、ステップS56に進む(ステップS152)。
第1履歴として保持されている移動方向が右方向でない、第2履歴として保持されている移動方向が上方向でない、第3履歴として保持されている移動方向が左方向でない、もしくは第4履歴が保持されている場合には(ステップS157でNo)、第1判定部21は、履歴情報が示す順序と、移動方向特定部20によって特定された移動方向との組み合わせが、第1動作の検出に用いる所定順序のうちの先頭から始まる部分に含まれないとして、ステップS54の処理を終了し、ステップS55に進む(ステップS158)。
このように、移動方向特定部20によって特定された移動方向が下方向である場合には、第1判定部21は、下方向の移動方向が特定されたときの履歴情報が示す移動方向の順序が、所定順序が示す移動方向の順序のうち、先頭から移動方向が下方向を示す直前の移動方向までの部分と一致しているかを判定する。当該判定は、第2〜第4履歴の中に下方向の移動方向が含む複数の所定順序に対して1つずつ順番に行われる。つまり、第1判定部21は、履歴情報が第2〜第4履歴の中に下方向の移動方向が含む複数の所定順序のうちのいずれかを示す可能性があるか否かを判定する。
上記では、移動方向特定部20によって特定された移動方向が下方向である場合について説明したが、移動方向特定部20によって特定された移動方向が、右方向(ステップS160でYes)、上方向(図28のステップS170でYes)および左方向(図28のステップS180でYes)である場合にも、第1判定部21は同様の考え方で処理を行う。
より具体的には、移動方向特定部20によって特定された移動方向が右方向である場合には(ステップS160でYes)、第1判定部21は、履歴情報が図23に示されるNo1の所定順序を示す可能性があるか(ステップS161)と、履歴情報が図23に示されるNo5の所定情報を示す可能性があるか(ステップS162)と、履歴情報が図23に示されるNo4の所定情報を示す可能性があるか(ステップS163)と、履歴情報が図23に示されるNo8の所定情報を示す可能性があるか(ステップS164)と、履歴情報が図23に示されるNo3の所定情報を示す可能性があるか(ステップS165)と、履歴情報が図23に示されるNo7の所定情報を示す可能性があるか(ステップS166)とを1つずつ順番に判定する。
同様に、移動方向特定部20によって特定された移動方向が上方向である場合には(ステップS170でYes)、第1判定部21は、履歴情報が図23に示されるNo4の所定情報を示す可能性があるか(ステップS171)と、履歴情報が図23に示されるNo6の所定情報を示す可能性があるか(ステップS172)と、履歴情報が図23に示されるNo3の所定情報を示す可能性があるか(ステップS173)と、履歴情報が図23に示されるNo5の所定情報を示す可能性があるか(ステップS174)と、履歴情報が図23に示されるNo2の所定情報を示す可能性があるか(ステップS175)と、履歴情報が図23に示されるNo8の所定情報を示す可能性があるか(ステップS176)とを1つずつ順番に判定する。
同様に、移動方向特定部20によって特定された移動方向が左方向である場合には(ステップS180でYes)、第1判定部21は、履歴情報が図23に示されるNo3の所定情報を示す可能性があるか(ステップS181)と、履歴情報が図23に示されるNo7の所定情報を示す可能性があるか(ステップS182)と、履歴情報が図23に示されるNo2の所定情報を示す可能性があるか(ステップS183)と、履歴情報が図23に示されるNo6の所定情報を示す可能性があるか(ステップS184)と、履歴情報が図23に示されるNo1の所定情報を示す可能性があるか(ステップS185)と、履歴情報が図23に示されるNo5の所定情報を示す可能性があるか(ステップS186)とを1つずつ順番に判定する。
また、移動方向特定部20によって特定された移動方向が下方向、右方向、上方向および左方向のいずれにも当てはまらない場合(つまり、移動方向特定部20によって移動方向が特定されていない場合)には、第1判定部21は、第1動作検出部16の動作を終了する(ステップS190)。
図26に戻り、履歴情報が示す順序と移動方向特定部20によって特定された移動方向との組み合わせが、第1動作の検出に用いる所定順序のうちの先頭から始まる部分に含まれない場合には(ステップS54でNo)、履歴情報が第1動作の検出に用いる所定順序を示す可能性がなくなったので、第1判定部21は履歴情報をクリアして(ステップS55)、第1動作検出部16の処理を終了する(ステップS53)。
反対に、履歴情報が示す順序と移動方向特定部20によって特定された移動方向との組み合わせが、第1動作の検出に用いる所定順序のうちの先頭から始まる部分に含まれる場合には(ステップS54でYes)、履歴情報が所定情報を示す可能性があるため、第1判定部21は履歴情報を更新する(ステップS56)。
そして、第1判定部21は、ステップS55で更新された履歴情報が、第1動作の検出に用いる所定順序を示しているかを判定する(ステップS57)。ステップS55で更新された履歴情報が、第1動作の検出に用いる所定順序を示していない場合には(ステップS57でNo)、検知対象物60が第1動作を行っているとは言えないため、第1判定部21は、何もせずに第1判定部21の処理を終了する。反対に、ステップS55で更新された履歴情報が、第1動作の検出に用いる所定順序を示している場合には(ステップS57でYes)、第1判定部21は、検知対象物60が第1動作を行っていると検出し(ステップS58)、第1判定部21の処理を終了する。ステップS58で検出された第1動作は、暫定的な検出結果として特定部15に送出される。
<2−5.第2動作検出部>
<第2動作検出部で行われる処理について>
既述したように、第2動作検出部17は、図6に例示されるような第2動作を、1つのテーブルに基づいて検出する。より具体的には、第2動作検出部17は、検知対象物60がx軸に沿って移動する第2動作(左右動作)を、テーブル更新部11によって更新された第1テーブルに基づいて検出する。また、第2動作検出部17は、検知対象物60がy軸に沿って移動する第2動作(上下動作)を、テーブル更新部11によって更新された第2テーブルに基づいて検出する。また、第2動作検出部17は、検知対象物60がz軸に沿って移動する第2動作(遠近動作)を、テーブル更新部11によって更新された第3テーブルに基づいて検出する。
第2動作検出部17は、移動方向特定部20と同様に、テーブル更新部11によって更新されたテーブルに保持されている変化回数が第3の閾値より大きく、かつテーブルに保持されている累積変化量が第4の閾値より大きい場合に、検知対象物60が当該テーブルに保持されている変化方向が示す方向に移動している(つまり、検知対象物60が当該テーブルに保持されている変化方向が示す方向に第2動作を行っている)と判定する。第2動作検出部17の処理において、移動方向特定部20での処理と大きく異なる点は、処理に用いる閾値の値である。検知対象物60が第2動作を行う場合には、回転動作を行う場合と比較して、長い時間、かつ長い距離を同一方向に移動することが多い。したがって、第3の閾値は既述した第1の閾値より大きい値が設定される。同様に、第4の閾値は既述した第2の閾値より大きい値が設定される。一例として、第3の閾値には12[回]が採用され、第4の閾値には50[mm]が採用される。第3の閾値及び第4の閾値は、既述した第1の閾値及び第2の閾値と同様に、ジェスチャー検出装置1の使用用途等に応じて選択される。
<第2動作検出部での処理の流れ>
図29は、第2動作検出部17での処理を説明するための図である。図29は、第2動作検出部17が、第1テーブルに基づいて、検知対象物60が左方向に移動する第2動作および右方向に移動する第2動作を検出する場合を示している。
なお、以下の説明では、第2動作検出部17が、検知対象物60がx軸に沿って移動する第2動作(左右動作)を検出する場合を例に挙げて説明するが、第2動作検出部17が検知対象物60がy軸に沿って移動する第2動作(上下動作)を検出する場合および検知対象物60がz軸に沿って移動する第2動作(遠近動作)を検出する場合についても、同様に考えることができる。
まず、第2動作検出部17は、第2動作の検出に用いるテーブルを取得する(ステップS60)。ここでは、第2動作検出部17は、検知対象物60がx軸に沿って動く第2動作(左右動作)を検出するため、テーブル更新部11によって更新された第1テーブルを取得する。
次に、第2動作検出部17は、ステップS60で取得した第1テーブルに保持される変化回数が第3の閾値より大きいかを判定する(ステップS61)。第2動作検出部17は、ステップS60で取得した第1テーブルに保持されている変化回数が第3の閾値よりも小さい場合、もしくは第3の閾値と同じ値の場合には(ステップS61でNo)、検知対象物60が左右動作を行っていないとして第2動作検出部17の処理を終了する。反対に、第2動作検出部17は、ステップS60で取得した第1テーブルに保持される変化回数が第3の閾値よりも大きい場合には(ステップS61でYes)、当該第1テーブルに保持される累積変化量が第4の閾値より大きいかを判定する(ステップS62)。なお、本実施の形態に係る第2動作検出部17は、ステップS60で取得した第1テーブルに保持されている変化回数が第3の閾値と同じ値の場合には、検知対象物60が左右動作を行っていないものとして判断している。しかし第2動作検出部17は、ステップS60で取得した第1テーブルに保持されている変化回数が第3の閾値と同じ値の場合に、ステップS62進んでもよい。
ステップS62において、ステップS60で取得した第1テーブルに保持される累積変化量が第4の閾値より小さい場合、もしくは第4の閾値と同じ値の場合には(ステップS62でNo)、第2動作検出部17は、検知対象物60が左右動作を行っていないとして、第2動作検出部17の処理を終了する。反対に、第2動作検出部17は、ステップS60で取得した第1テーブルに保持される累積変化量が第4の閾値よりも大きい場合には(ステップS62でYes)、当該第1テーブルに保持される変化方向が右方向(プラス方向)か否かを判定する(ステップS63)。なお、本実施の形態に係る第2動作検出部17は、ステップS60で取得した第1テーブルに保持されている累積変化量が第4の閾値と同じ値の場合には、検知対象物60が左右動作を行っていないものとして判断している。しかし、第2動作検出部17は、ステップS60で取得した第1テーブルに保持されている累積変化量が第4の閾値と同じ値の場合に、ステップS63に進んでもよい。
第2動作検出部17は、ステップS60で取得した第1テーブルに保持される変化方向が右方向でない場合には(ステップS63でNo)、検知対象物60が左方向に移動する第2動作を行っていると検出し(ステップS64)、第2動作検出部17の処理を終了する。一方、第2動作検出部17は、ステップS60で取得した第1テーブルに保持される変化方向が右方向である場合には(ステップS63でYes)、検知対象物60が右方向に移動する第2動作を行っていると検出し(ステップS65)、第2動作検出部17の処理を終了する。ここで、ステップS64及びステップS65で検出された第2動作は、暫定的な検出結果として特定部15に送出される。
このように、第2動作検出部17では、テーブル更新部11によって更新された1つのテーブルに保持される情報からを用いた簡単な処理を行うことで、第2動作を検出することができる。その結果、ジェスチャー検出装置1では簡単な処理で、第2動作を検出することができるとともに、ジェスチャー検出装置1で検出することができるジェスチャーの種類が増えることにより、ジェスチャー検出装置1の利便性が向上する。
なお、図29に示される例では、第2動作検出部17は、テーブルに保持されている変化回数、累積変化量及び変化方向の3つの情報を用いて、検知対象物60が第2動作を行っているか否かを検出している。しかし、第2動作検出部17は、既述した第1動作検出部16(移動方向特定部20)と同様に、テーブルに保持されている変化回数および変化方向を用いて検知対象物60が行う第2動作を検出してもよいし、テーブルに保持されている累積変化量および変化方向を用いて検知対象物60が行う第2動作を検出してもよい。
また、第2動作検出部17は、複数種類の第2動作を検出する場合には、図29に示される処理を繰り返し行う、例えば、第2動作検出部17が、左右動作と遠近動作とを検出する場合には、第2動作検出部17は、第1テーブルを用いて検出処理を行った後に、第3テーブルを用いて検出処理を行えばよい。
<2−6.第3動作検出部>
<第3動作検出部で行われる処理について>
既述したように、第3動作検出部18は、図7に例示されるような第3動作を、1つのテーブルに基づいて検出する。より具体的には、第3動作検出部18は、検知対象物60がx軸に沿ってプラス方向及びマイナス方向に交互に短い距離を動く第3動作を第1テーブルに基づいて検出する。また、第3動作検出部18は、検知対象物60がy軸に沿ってプラス方向及びマイナス方向に交互に短い距離を動く第3動作を第2テーブルに基づいて検出する。また、第3動作検出部18は、検知対象物60がz軸に沿ってプラス方向及びマイナス方向に交互に短い距離を動く第3動作を第3テーブルに基づいて検出する。
図30は、第3動作検出部18の構成を示す図である。図30に示されるように、第3動作検出部18は、変化量判定部25、第1計測部26および第2判定部27を有している。第3動作は、検知対象物60が、ある座標軸に沿ってプラス方向及びマイナス方向に交互に短い距離を動く動作である。したがって、第3動作検出部18では、まず変化量判定部25が、検知対象物60が短い距離を動いたか否かを判定する。続いて、第1計測部26が、変化量判定部25で検知対象物60が短い距離を動いたと判定された回数を計測(保持)する。そして、第1計測部26での計測結果に基づいて、より具体的には検知対象物60が短い距離を所定回数以上動いたと判定したときに、第2判定部27が、検知対象物60が第3動作を行ったと判定する。
また、既述したように、テーブル保持部12に保持されているテーブルに保持されている変化方向と、前回ジェスチャー検出装置1に入力された座標値に対する、今回ジェスチャー検出装置1に入力された座標値の変化の方向とが逆である旨の通知を、テーブル更新部11から受けた場合に、第3動作検出部18は検出処理を行う(図10のステップS22参照)。テーブル更新部11からの通知により、第3動作検出部18は、検知対象物60による同一方向への移動が終わったときにのみ検出処理を行い、当該検知対象物60による同一方向への移動が短い距離を動く移動であるかを判定する。そのため、ジェスチャー検出装置1に座標値が入力される度に、第3動作検出部18が検出処理を行う場合と比較して、ジェスチャー検出装置1で行われる処理の量を低減することができる。
図31は、検知対象物60がx軸に沿って第3動作を行った場合の、位置検出装置100の検出結果を示す図である。時刻t1〜t5では、x座標値はプラス方向に変化している。時刻t5のときにテーブル更新部11に更新される第1テーブルには、変化回数として「4」が保持され、累積変化量として「n1」が保持され、変化方向として「プラス方向」が保持される。
続いて、時刻t6では、時刻t5までと異なり、x座標値がマイナス方向に変化したため、テーブル更新部11は第3動作検出部18に通知を行い、第1テーブルを初期化する。第3動作検出部18は、テーブル更新部11に初期化される前の第1テーブル(つまり、時刻t5にテーブル更新部11に更新された第1テーブル)を用いて、第3動作の検出処理を行う。
その後、時刻t6〜t10までx座標値はマイナス方向に変化している。時刻t10にテーブル更新部11に更新される第1テーブルには、変化回数として「4」が保持され、累積変化量として「n2」が保持され、変化方向として「マイナス方向」が保持される。
そして、時刻t11に、x座標値がプラス方向に変化したため、テーブル更新部11は、第3動作検出部18に通知を行い、第1テーブルを初期化する。一方、第3動作検出部18は、テーブル更新部11に初期化される前の第1テーブル(つまり、時刻t10にテーブル更新部11に更新された第1テーブル)を用いて、第3動作の検出処理を行う。
<第3動作検出部での処理の流れ>
図32は、第3動作検出部18での処理を説明するための図である。図32は、第3動作検出部18が、第1テーブルに基づいて、検知対象物60がx軸に沿ってプラス方向及びマイナス方向に交互に移動する第3動作を検出する場合を示している。図30,32を参照しながら、以下に第3動作検出部18での処理を説明する。
なお、以下の説明では、第3動作検出部18が、検知対象物60がx軸に沿ってプラス方向及びマイナス方向に交互に移動する第3動作を検出する場合を例に挙げて説明するが、第3動作検出部18が、検知対象物60がy軸に沿ってプラス方向及びマイナス方向に交互に動く第3動作を検出する場合および検知対象物60がz軸に沿ってプラス方向及びマイナス方向に交互に動く第3動作を検出する場合についても、同様に考えることができる。
まず、テーブル更新部11から通知を受信すると(ステップS70)、変化量判定部25は、テーブル更新部11に初期化される前の第1テーブルを取得する(ステップS71)。なお、テーブル更新部11は通知を行った後にすぐテーブルの初期化を行う。したがって、第3動作検出部18は、ステップS70で通知を受信した後すぐにステップS71の処理を行わなければならない。しかし、テーブル更新部11によって更新される前の第1テーブルを取得した後の処理は、特定部15での処理が始まるまでに終了していればよい。したがって、第3動作検出部18は、テーブル更新部11によって更新される前の第1テーブルをテーブル保持部12から取得すると、その後の処理はテーブル更新部11での処理など他の処理が終わった後に行ってもよい。
また、上記の例とは異なり、テーブル保持部12に過去のテーブルを保持させてもよい。この場合には、テーブル更新部11での処理が終わった後に、変化量判定部25が、テーブル保持部12からテーブル更新部11によって初期化される前のテーブルを取得することができる。
続いて、変化量判定部25は、ステップS71で取得した第1テーブルに保持されている変化回数が第5の閾値より大きく、かつ第6の閾値より小さいかを判定する(ステップS72)。変化量判定部25は、あまりにも動作時間が短い動作を、第3動作の動きであると判定しないために、ステップS71で取得したテーブルに保持されている変化回数が第5の閾値より大きいかを判定している。第5の閾値としては、例えば3[回]が採用される。また、変化量判定部25は、ステップS71で取得したテーブルに保持されている変化回数が第6の閾値より小さいかを判定することで、動作時間の短い動作が行われたかを判定している。変化量判定部25は、動作時間の短い動作が行われたと判定されたときに、検知対象物60が短い距離を動いたと判定する。第6の閾値には、例えば10[回]が採用される。第5の閾値および第6の閾値の値は、ジェスチャー検出装置1の使用用途等に応じて選択される。
ステップS71で取得した第1テーブルに保持されている変化回数が第5の閾値より小さい、第5の閾値と同じ値、第6の閾値より大きい、もしくは第6の閾値と同じ値である場合には(ステップS72でNo)、変化量判定部25は、検知対象物60が第3動作を行っていないと判定し、第3動作検出部18の処理を終了する。
反対に、ステップS71で取得した第1テーブルに保持されている変化回数が第5の閾値より大きく、かつ第6の閾値より小さい場合には(ステップS72でYes)、変化量判定部25は、ステップS71で取得した第1テーブルに保持されている累積変化量が第7の閾値より大きいかを判定する(ステップS73)。なお、本実施の形態に係る変化量判定部25は、ステップS71で取得した第1テーブルに保持されている変化回数が、第5の閾値と同じ値、もしくは第6の閾値と同じ値である場合には、検知対象物60が第3動作を行っていないと判定する。しかし、変化量判定部25は、ステップS71で取得した第1テーブルに保持されている変化回数が、第5の閾値と同じ値、もしくは第6の閾値と同じ値である場合に、ステップS73に進んでもよい。
ステップS73では、変化量判定部25は、検知対象物60の動いた距離が、第7の閾値に応じた距離より長いかを判定している。検知対象物60が例えば人の手である場合には、第3動作を行う人の個人差によって、手を動かす距離が大きく変わる。したがって、ステップS73では、変化量判定部25は、あまりにも短い距離の動作を、第3動作の動きと判定しないために、テーブルに保持されている累積変化量が第7の閾値より大きいかのみを判定し、テーブルに保持されている累積変化量が所定値より小さいかは判定しない。また、第3動作は、第1動作および第2動作と比較して、検知対象物60が動く距離が小さい動作であるため、ステップS73で用いられる第7の閾値は、既述した第2の閾値及び第4の閾値より小さい値が採用される。第7の閾値には、例えば20[mm]が採用される。第7の閾値の値は、ジェスチャー検出装置1の使用用途等に応じて、選択される。
ステップS71で取得した第1テーブルに保持されている累積変化量が第7の閾値より小さい場合、もしくは第7の閾値と同じ値である場合には(ステップS73でNo)、変化量判定部25は、検知対象物60が第3動作を行っていないと判定し、第3動作検出部18の処理を終了する。反対に、ステップS71で取得した第1テーブルに保持されている累積変化量が第7の閾値より大きい場合には(ステップS73でYes)、変化量判定部25は、検知対象物60が短い距離を動いたと判定し、第1計測部26が保持する計測結果に+1を加算する(ステップS74)。なお、本実施の形態の変化量判定部25は、ステップS71で取得した第1テーブルに保持されている累積変化量が第7の閾値と同じ値である場合には、検知対象物60が第3動作を行っていないと判定する。しかし、変化量判定部25は、ステップS71で取得した第1テーブルに保持されている累積変化量が第7の閾値と同じ値である場合に、ステップS74に進んでもよい。
続いて、第2判定部27は、第1計測部26での計測結果が第8の閾値より大きいかを判定する(ステップS75)。第2判定部27は、ステップS75の処理で、検知対象物60が短い距離の移動を所定回数(第8の閾値)より多い回数行われたかを判定している。第8の閾値には、例えば5[回]が採用される。第8の閾値の値は、ジェスチャー検出装置1の使用用途等に応じて選択される。
第1計測部26での計測結果が第8の閾値より小さい場合、もしくは第8の閾値の値と同じ値である場合には(ステップS75でNo)、第2判定部27は、検知対象物60が第3動作を行っていないと判定し、第3動作検出部18の処理を終了する。反対に、第1計測部26での計測結果が第8の閾値より大きい場合には(ステップS75でYes)、第2判定部27は、検知対象物60が第3の動作を行ったことを検出し(ステップS76)、第3動作検出部18の処理を終了する。ここで、ステップS76で検出された第3動作は、暫定的な検出結果として特定部15に送出される。なお、本実施の形態に係る第2判定部27は、第1計測部26での計測結果が第8の閾値と同じ値である場合には、検知対象物60が第3動作を行っていないと判定する。しかし、第2判定部27は、第1計測部26での計測結果が第8の閾値と同じ値である場合に、検知対象物60が第3動作を行ったと判定してもよい。
このように、第3動作検出部18では、テーブル更新部11によって更新された1つのテーブルを用いて、検知対象物60が短い距離の移動を所定回数(第8の閾値)より多く行ったか否かの簡単な処理を行うことで、第3動作を検出することができる。その結果、ジェスチャー検出装置1は簡単な処理で、第3動作を検出することができる。また、ジェスチャー検出装置1で検出することができるジェスチャーの種類が増えることより、ジェスチャー検出装置1の利便性が向上する。
また、図32に示される例では、第3動作検出部18は、テーブルに保持されている変化回数、累積変化量及び変化方向の3つの情報を用いて、検知対象物60が第3動作を行っているか否かを検出している。しかし、第3動作検出部18は、第1動作検出部16および第2動作検出部17と同様に、テーブルに保持されている変化回数および変化方向を用いて検知対象物60が行う第3動作を検出してもよいし、テーブルに保持されている累積変化量および変化方向を用いて検知対象物60が行う第3動作を検出してもよい。
第3動作検出部18が、テーブルに保持されている累積変化量および変化方向を用いて検知対象物60が行う第3動作を検出する場合には、第3動作検出部18は、累積変化量のみに基づいて、検知対象物60が短い距離の移動を行ったか否かを判定しなければいけない。そのため、図32のステップS73では「テーブルに保持されている累積変化量が第7の閾値より大きく、かつ第9の閾値より小さいか」を判定する必要がある。しかし、前述した通り、検知対象物60が人の手である場合などには、第3動作を行う人の個人差によって、手を動かす距離が大きく変わる。したがって、この場合には、第3動作検出部18での第3動作の検出精度が悪くなる可能性がある。
<2−7.特定部>
特定部15は、第1動作検出部16によって暫定的に検出された検出結果、第2動作検出部17によって暫定的に検出された検出結果および第3動作検出部18によって暫定的に検出された検出結果に基づいて、検知対象物60のジェスチャーを特定する。図33は、特定部15での処理を説明するための図である。
まず、特定部15は、第1動作検出部16が第1動作を検出しているかを判定する(ステップS80)。第1動作検出部16によって第1動作が検出されている場合には(ステップS80でYes)、特定部15は、第1動作が検知対象物60のジェスチャーであると特定する(ステップS81)。例えば、第1動作検出部16によって、反時計周りで回転する第1動作が検出されていた場合には、特定部15は、反時計回りで回転する第1動作が、検知対象物60のジェスチャーであると特定する。ステップS81で特定されたジェスチャーは、ジェスチャー検出装置1での検出結果として、ジェスチャー検出装置1外部に出力される。そして、特定部15は、動作検出部で検出された検出結果(より具体的には、第1動作検出部16が検出した第1動作、第2動作検出部17が検出した第2動作および第3動作検出部18が検出した第3動作)と、第1計測部26が保持する計測結果と、第1判定部21が保持する履歴情報とをクリアする(ステップS82)。特定部15は、ステップS82で、各種情報をクリアすることで、次にジェスチャー検出装置1に検知対象物60の位置を示す座標値が入力されたときに、ジェスチャー検出装置1は、次の検出処理をすぐに行うことができる。
ステップS80に戻り、第1動作検出部16によって第1動作が検出されていない場合には(ステップS80でNo)、特定部15は、第3動作検出部18が第3動作を検出しているかを判定する(ステップS83)。
第3動作検出部18によって第3動作が検出されている場合には(ステップS83でYes)、特定部15は、第3動作が検知対象物60のジェスチャーであると特定する(ステップS84)。例えば、第3動作検出部18によって、検知対象物60がz軸に沿ってプラス方向及びマイナス方向に交互に短い距離を動く第3動作が検出されている場合には、特定部15は、検知対象物60がz軸に沿ってプラス方向及びマイナス方向に交互に短い距離を動く第3動作が、検知対象物60のジェスチャーであると特定する。ステップS84で特定されたジェスチャーは、ジェスチャー検出装置1での検出結果として、ジェスチャー検出装置1外部に出力される。そして、特定部15は、動作検出部で検出された検出結果と、第1計測部26が保持する計測結果と、第1判定部21が保持する履歴情報とをクリアする(ステップS82)。
ステップS83に戻り、第3動作検出部18によって第3動作が検出されていない場合には(ステップS83でNo)、特定部15は、第1動作検出部16が備える第1判定部21が履歴情報を保持しているかを判定する(ステップS85)。
第1判定部21が履歴情報を保持している場合には(ステップS85でYes)、特定部15は、ジェスチャー検出部13の処理を終了する(ステップS86)。第1判定部21が履歴情報を保持していることから、当該履歴情報が第1動作の検出に用いる所定順序を示す可能性がある(即ち、検知対象物60のジェスチャーが、第1動作である可能性がある)と第1判定部21が判定していると分かる。したがって、この場合には、特定部15は検知対象物60のジェスチャーを特定せずに処理を終了する。
既述したとおり、移動方向特定部20で特定される検知対象物60の動きと、第2動作検出部17で検出される検知対象物60の動きとは、閾値が異なるだけである。したがって、例えば、検知対象物60が回転動作を行っている場合でも、当該検知対象物60の動きが大きい場合には、第2動作検出部17によって第2動作が検出されてしまう場合がある。
したがって、図33に示されるように、特定部15は、まず第1動作検出部16が第1動作を検出しているか否かの判定を行う。つまり、本実施の形態では、動作検出部14が第1動作および第2動作の両方を検出している場合であっても、第1動作を検知対象物60のジェスチャーとして特定する。そして、第1動作検出部16によって第1動作が検出されていない場合であっても、第1判定部21が履歴情報を保持している場合には、特定部15は、検知対象物60のジェスチャーを特定しない。そのため、検知対象物60が第1動作を行っている途中で、ジェスチャー検出装置1によって第2動作が検出されることを抑制することができる。その結果、ジェスチャー検出装置1の検出精度を向上することができる。
なお、検知対象物60が第1動作を行っている途中に、第3動作検出部18によって第3動作が検出される場合、もしくは検知対象物60が第3動作を行っている途中に、第1動作検出部16によって第1動作が検出される場合はない。そのため、第1動作検出部16が第1動作を検出しているか否かの判定(ステップS80)の前に、第3動作検出部18が第3動作を検出しているか否かの判定(ステップS83)を行っても、特定部15の特定結果は変化しない。したがって、図33に示される例とは異なり、ステップS80の処理を行う前にステップS83の処理を行ってもよい。
ステップS85に戻り、第1判定部21が履歴情報を保持していない場合には(ステップS85でNo)、特定部15は、第2動作検出部17が第2動作を検出しているかを判定する(ステップS87)。
第2動作検出部17によって第2動作が検出されていない場合には(ステップS87でNo)、動作検出部14によって検出されたジェスチャーは何もないため、特定部15は、ジェスチャー検出部13の処理を終了する(ステップS86)。反対に、第2動作検出部17によって第2動作が検出されている場合には(ステップS87でYes)、特定部15は、第2動作が検知対象物60のジェスチャーであると特定する(ステップS88)。例えば、第2動作検出部によって検知対象物60が上方向に移動する第2動作が検出されている場合には、特定部15は、検知対象物60が上方向に移動する第2動作が、検知対象物60のジェスチャーであると特定する。ステップS88で特定されたジェスチャーは、ジェスチャー検出装置1での検出結果として、ジェスチャー検出装置1の外部に出力される。そして、特定部15は、動作検出部で検出された検出結果(より具体的には、第2動作検出部17が検出した第2動作)と、第1計測部26が保持する計測結果とをクリアする(ステップS89)。
なお、検知対象物60が第2動作を行っている途中に、第3動作検出部18によって第3動作が検出される場合、もしくは検知対象物60が第3動作を行っている途中に第2動作検出部17によって第2動作が検出される場合はない。そのため、第3動作検出部18が第3動作を検出しているか否かの判定(ステップS83)を行う前に、ステップS85以降の処理を行っても、特定部15の特定結果は変化しない。したがって、図33に示される例とは異なり、ステップS83の処理の前にステップS85以降の処理を行ってもよい。
<2−8.第一実施形態変形例>
図34は、本変形例に係る制御部10に形成される複数の機能ブロックの一部を示す図である。図34に示されるように、本変形例に係る制御部10は、第一実施形態に係る制御部10とは異なり、座標値比較部30を備えている。座標値比較部30は、ジェスチャー検出装置1に入力される検知対象物60の位置を示す座標値を監視し、当該座標値が変化していない場合にテーブル更新部11および第2動作検出部(動作検出部14)に通知する。
図35は、テーブル更新部11、第2動作検出部17および座標値比較部30の処理を説明するための図である。図34,35を参照しながら、本変形例に係るテーブル更新部11、第2動作検出部17および座標値比較部30が行う処理について以下に説明する。
まず、座標値比較部30は、前回ジェスチャー検出装置1に入力されたx座標値から、今回ジェスチャー検出装置1に入力されたx座標値が変化したかを判定する(ステップS90a)。前回ジェスチャー検出装置1に入力されたx座標値から、今回ジェスチャー検出装置1に入力されたx座標値が変化した場合には(ステップS90aでYes)、テーブル更新部11は、第1テーブルの更新を行い(ステップS1a)、第2動作検出部17はステップS1aで更新された第1テーブルを用いて第2動作を検出する(ステップS3a)。
一方、前回ジェスチャー検出装置1に入力されたx座標値から今回ジェスチャー検出装置1に入力されたx座標値が変化していない場合には(ステップS90aでNo)、テーブル更新部11は第1テーブルの更新を行わない。そして、第2動作検出部17は、第1テーブルを用いる検出処理を行わない。
検知対象物60がx軸に沿って動いていないときには、テーブル更新部11が、第1テーブルの更新処理を行っても、テーブル保持部12が保持する第1テーブルが保持する情報は変わらない。また、検知対象物60がx軸に沿って動いていないときには、第2動作検出部17が、検知対象物60がx軸に沿って動く第2動作を検出することはない。したがって、本変形例では、座標値比較部30によって、前回ジェスチャー検出装置1に入力されたx座標値から今回ジェスチャー検出装置1に入力されたx座標値が変化していないと判定された場合には、座標値比較部30は、テーブル更新部11に今回ジェスチャー検出装置1に入力されたx座標値を用いる第1テーブルの更新処理を行わせず、第2動作検出部17に、当該第1テーブルを用いる検出処理を行わせない。その結果、本変形例に係るジェスチャー検出装置1では、検知対象物60が動いていないときの、ジェスチャー検出装置1が行う処理の量を削減することができる。
制御部10に座標値比較部30が備えられない場合において、検知対象物60が動いていないときの処理を削減するときには、テーブル更新部11および第2動作検出部17は独立して、今回ジェスチャー検出装置1に入力されたx座標値と、前回ジェスチャー検出装置1に入力されたx座標値とを比較して、処理を行うか否かを判断しなければならない。この場合には、テーブル更新部11および第2動作検出部17のそれぞれが、同じ処理(今回ジェスチャー検出装置1に入力されたx座標値と、前回ジェスチャー検出装置1に入力されたx座標値とを比較する処理)を行うことになる。しかし、本変形例のように、座標値比較部30が、ジェスチャー検出装置1に入力される検知対象物60の位置を示す座標値を監視し、座標値に変化がない場合、つまり検知対象物60が動いていない場合に、テーブル更新部11および第2動作検出部17に通知することで、テーブル更新部11および第2動作検出部17が同じ処理を行うことがない。
同様に、座標値比較部30は、前回ジェスチャー検出装置1に入力されたy座標値と、今回ジェスチャー検出装置1に入力されたy座標値とに変化があるかを判定する(ステップS90b)。前回ジェスチャー検出装置1に入力されたy座標値と、今回ジェスチャー検出装置1に入力されたy座標値とに変化がある場合には(ステップS90bでYes)、テーブル更新部11は、第2テーブルの更新を行い(ステップS1b)、第2動作検出部17はステップS1bで更新された第2テーブルを用いて第2動作を検出する(ステップS3b)。一方、前回ジェスチャー検出装置1に入力されたy座標値と、今回ジェスチャー検出装置1に入力されたy座標値とに変化がない場合には(ステップS90bでNo)、テーブル更新部11は第2テーブルの更新を行わず、第2動作検出部17は、第2テーブルを用いる検出処理を行わない。
同様に、座標値比較部30は、前回ジェスチャー検出装置1に入力されたz座標値と、今回ジェスチャー検出装置1に入力されたz座標値とに変化があるかを判定する(ステップS90c)。前回ジェスチャー検出装置1に入力されたz座標値と、今回ジェスチャー検出装置1に入力されたz座標値とに変化がある場合には(ステップS90cでYes)、テーブル更新部11は、第3テーブルの更新を行い(ステップS1c)、第2動作検出部17はステップS1cで更新された第3テーブルを用いて第2動作を検出する(ステップS3c)。一方、前回ジェスチャー検出装置1に入力されたz座標値と、今回ジェスチャー検出装置1に入力されたz座標値とに変化がない場合には(ステップS90cでNo)、テーブル更新部11は第3テーブルの更新を行わず、第2動作検出部17は、第3テーブルを用いる検出処理を行わない。
<<3.第二実施形態>>
第二実施形態では、位置検出装置100が検出する座標値が検知対象物60の位置を示していない場合に、ジェスチャー検出装置1が行う処理を低減させる例を2つ説明する。
<第二実施形態の1つめの例>
まず、図36,37を参照しながら、1つめの例について説明する。図36は、第二実施形態の1つめの例に係る制御部10に形成される複数の機能ブロックの一部を示す図である。図37は、第2実施形態の1つめの例に係る制御部10での処理を説明するための図である。
図36に示されるように、既述した第一実施形態とは異なり、第二実施形態の1つめの例に係る制御部10には、距離特定部31が備えられている。距離特定部31は、検知対象物60と位置検出装置100が備える受光部102の受光面との間の距離を特定し、当該距離に基づいて位置検出装置100から入力された座標値が検知対象物60の位置を示しているのか否かを判定する。通常、検知対象物60がジェスチャーを行う場合には、当該検知対象物60は、受光部102の受光面に近づいてジェスチャーを行う。したがって、検知対象物60と位置検出装置100が備える受光部102の受光面との間の距離が遠い場合には、ジェスチャー検出装置1に入力された座標値が、ジェスチャーを行う検知対象物60の位置を示していない可能性が高い。したがって、距離特定部31は、位置検出装置100から入力された座標値がジェスチャーを行う検知対象物60の位置を示していないと判定した場合には、検知対象物60が存在していないとして、テーブル更新部11およびジェスチャー検出部13に処理を行わせない。
なお、本実施の形態では、受光部102の受光面がxy座標平面と平行であるため、検知対象物60と位置検出装置100が備える受光部102の受光面との間の距離はz座標値に基づいて求めることができる。したがって、以下の説明では、距離特定部31が、z座標値を用いて、検知対象物60が存在するかの判定を行う場合を例に挙げて説明する。しかし、座標軸の定義の仕方によって、距離特定部31が判定に用いる座標値は変化する。より具体的には、受光部102の受光面がx軸に垂直である場合には、距離特定部31はx座標値に基づいて、検知対象物60と受光部102の受光面との間の距離を求める。また、受光部102の受光面がy軸に垂直である場合には、距離特定部31はy座標値に基づいて、検知対象物60と受光部102の受光面との間の距離を求める。
なお、本実施の形態では、xy座標平面に受光部102の受光面が含まれているため、検知対象物60と受光部102の受光面との間の距離はz座標値の値そのものとなる。本実施の形態とは異なり、xy座標平面に受光部102の受光面が含まれていない場合には、xy座標平面と受光部102の受光面と間の距離とz座標値とに基づいて、検知対象物60と受光部102の受光面との間の距離を求めることができる。
図37に示されるように、まず、距離特定部31は、ジェスチャー検出装置1に入力されたz座標値を取得する(ステップS110)。続いて、距離特定部31は、ステップS110で取得したz座標値、つまり、検知対象物60と受光部102の受光面との間の距離が第10の閾値より小さいかを特定する(ステップS111)。第10の閾値の値は、位置検出装置100の設置環境等によって適宜変更することができる。
ジェスチャー検出装置1に入力されたz座標値が、第10の閾値より大きい場合、もしくは第10の閾値と同じ値である場合には(ステップS111でNo)、距離特定部31は、テーブル更新部11およびジェスチャー検出部13に処理を行わせずに、次にジェスチャー検出装置1に座標値が入力されるのを待つ(ステップS112)。
反対に、ジェスチャー検出装置1に入力されたz座標値が、第10の閾値より小さい場合には(ステップS111でNo)、距離特定部31は、テーブル更新部11およびジェスチャー検出部13に処理を行わせる。具体的には、テーブル更新部11にテーブルを更新させ(ステップS1)、第1動作検出部16に第1動作を検出させ(ステップS2)、第2動作検出部17に第2動作を検出させ(ステップS3)、第3動作検出部18に第3動作を検出させ(ステップS4)、特定部15に検知対象物60のジェスチャーを特定させる(ステップS5)。
このように、距離特定部31は、検知対象物60と受光部102の受光面との間の距離が第10の閾値より大きいときに、テーブル更新部11およびジェスチャー検出部13に処理を行わせない。その結果、検知対象物60の位置を示さない座標値に基づいて行われるジェスチャー検出装置1の処理の量を削減することができる。
なお、本実施の形態における距離特定部31は、ジェスチャー検出装置1に入力されたz座標値が、第10の閾値と同じ値であるときには、検知対象物60が存在しないとして、テーブル更新部11およびジェスチャー検出部13に処理を行わせない。しかし、距離特定部31は、ジェスチャー検出装置1に入力されたz座標値が、第10の閾値と同じ値であるときに、検知対象物60が存在するとして、テーブル更新部11およびジェスチャー検出部13に処理を行わせてもよい。
<第二実施形態の2つめの例>
次に、図38,39を参照しながら、2つめの例について説明する。図38は、第二実施形態の2つめの例に係る制御部10に形成される複数の機能ブロックの一部を示す図である。図39は、第2実施形態の2つめの例に係る制御部10での処理を説明するための図である。
図38に示されるように、上述した第二実施形態の1つめの例とは異なり、第二実施形態の2つめの例に係る制御部10は、第3判定部32を備えている。第3判定部32は、距離特定部31での特定結果に基づいて、検知対象物60が所定時間以上存在していないか否かを判定する。そして、検知対象物60が所定時間以上存在しておらず、第2動作が検出されている場合には、当該第2動作を検知対象物60のジェスチャーとする。
図39に示されるように、まず、距離特定部31は、ジェスチャー検出装置1に入力されたz座標値を取得する(ステップS110)。続いて、距離特定部31は、ステップS110で取得したz座標値、つまり、検知対象物60と受光部102の受光面との間の距離が第10の閾値より小さいかを特定する(ステップS111)。
ステップS110で取得されたz座標値が第10の閾値より大きい場合、もしくは第10の閾値と同じ値である場合には(ステップS111でNo)、第3判定部32は、当該第3判定部32が保持する計測回数に+1を加算する(ステップS113)。第3判定部32が保持する計測回数は、ステップS111でz座標値が第10の閾値より大きいと判定される度に加算されていく。つまり、第3判定部32で保持される計測回数は、ジェスチャーを行う検知対象物60が存在していない時間を示している。
続いて、第3判定部32は、ステップS113で更新した計測回数が第11の閾値より大きいか否かを判定する(ステップS114)。ステップS113で更新した計測回数が第11の閾値より小さい場合もしくは第11の閾値と同じ値である場合、つまりジェスチャーを行う検知対象物60が存在していない時間が、所定時間より短い場合には(ステップS114でNo)、第3判定部32は、処理を終了する(ステップS112)。つまり、第3判定部32は、テーブル更新部11およびジェスチャー検出部13に処理を行わせずに、次にジェスチャー検出装置1に座標値が入力されるのを待つ。
一方、ステップS113で更新した計測回数が第11の閾値より大きい場合、つまりジェスチャーを行う検知対象物60が存在していない時間が所定時間より長い場合には(ステップS114でYes)、第3判定部32は、第2動作検出部17によって第2動作が検出されているかを判定する(ステップS115)。
第2動作検出部17によって第2動作が検出されていない場合には(ステップS115でNo)、第3判定部32は、処理を終了する(ステップS112)。反対に、第2動作検出部17によって第2動作が検出されている場合には(ステップS115でYes)、第3判定部32は、第2動作検出部17によって検出されている第2動作を、検知対象物60のジェスチャーであると特定し(ステップS116)、動作検出部14での検出結果、第1計測部26での計測結果、第3判定部32での計測結果および第1判定部での履歴情報を初期化する(ステップS117)。
既述したように、検知対象物60の動作によって、第1判定部21が履歴情報を保持し、第2動作検出部17が第2動作を検出した場合には、特定部15は検知対象物60のジェスチャーを特定しない。その後に、検知対象物60(ユーザ)が第2動作を行ったつもりで動作を終了してしまうと、ジェスチャー検出装置1は検知対象物60によって行われたジェスチャーを検出しないままとなる。
したがって、本実施の形態では、第3判定部32が、検知対象物60が存在していない時間が、第11の閾値に応じた所定時間より長く、かつ第2動作検出部17によって第2動作が検出されているときに、当該第2動作を検知対象物60のジェスチャーとする。言い換えると、第3判定部32は、第1動作検出中に、検知対象物60の動作が終了したと判定した場合には、検出されている第2動作を検知対象物60のジェスチャーとする。したがって、第1動作及び第3動作とは異なり、第2動作検出部17で検出されても、すぐに検知対象物60のジェスチャーであると特定されない場合がある第2動作を検出しやすくすることができる。その結果、ジェスチャー検出装置1で、第2動作が検出されやすくなる。
図39のステップS111に戻り、ステップS110で取得されたz座標値が第10の閾値より小さい場合には(ステップS111でYes)、第3判定部32は、当該第3判定部32が保持する計測回数をクリアする(ステップS118)。そして、距離特定部31は、テーブル更新部11およびジェスチャー検出部13に処理を行わせる(ステップS1〜ステップS5)。第3判定部32は、ステップS110で取得されたz座標値が第10の閾値より小さい場合に、計測回数をクリアすることで、当該計測回数はジェスチャーを行う検知対象物60が連続して存在していない時間を示す。検知対象物60は、ジェスチャーを行う途中で、受光部102の受光面から一時的に離れてしまう可能性もある。そのため、第3判定部32が、ジェスチャーを行う検知対象物60が連続して存在していない時間を用いて判定を行うことで、より正確に検知対象物60の動作が終了したか否かを判定することができる。
なお、図38に示されるように、本実施の形態では、距離特定部31と第3判定部32とを合わせて、検知対象物有無特定部33と呼ぶことがある。
<<4.第三実施形態>>
第三実施形態では、検知対象物60の表面の凹凸によって、位置検出装置100で検出される座標値がばらつく場合について説明する。位置検出装置100で検出される座標値がばらつく場合には、例えば、実際には検知対象物60が動いていないにも関わらず、位置検出装置100で検出される座標値が変化することによりジェスチャー検出装置1の検出精度が低下する可能性がある。
しかし、検知対象物60の表面の凹凸が原因による、位置検出装置100で検出される座標値の変化の量は小さい。したがって、本実施の形態では、テーブル更新部11は以下に説明する処理でテーブルを更新することにより、検知対象物60の表面の凹凸が原因による、ジェスチャー検出装置1の検出精度の低下を抑制する。なお、第三実施形態で説明する内容については、第一及び第二実施形態のそれぞれにおいて適用することできる。
図40は、図10に示されるテーブル更新部11の処理に対応する、本実施の形態に係るテーブル更新部11の処理を示す図である。図10に示される処理との違いは、ステップS22の前に、ステップS26の処理が挿入されている点である。
ステップS26の処理は、テーブル保持部12に保持されている第1テーブルに登録されている変化方向と、前回ジェスチャー検出装置1に入力されたx座標値に対する、今回ジェスチャー検出装置1に入力されたx座標値の変化の方向とが逆である場合に行われる。
ステップS26では、テーブル更新部11は、ステップS11で求められた差分値αの絶対値|α|が第12の閾値より大きいかを判定している。つまり、ステップS26では、前回ジェスチャー検出装置1に入力されたx座標値と、今回ジェスチャー検出装置1に入力されたx座標値との差が、検知対象物60の表面の凹凸が原因で発生した小さい変化であるかを判定している。第12の閾値の値は、検知対象物60の材質や照明条件によって決定される。
ステップS11で求められた値の絶対値|α|が第12の閾値より大きい場合には(ステップS26でYes)、テーブル更新部11は、検知対象物60の表面の凹凸の影響によって座標値が変化したのではない判定して、第3動作検出部18に通知を行い(ステップS22)、テーブル保持部12に保持されている第1テーブルを初期化する(ステップS23)。
反対に、ステップS11で求められた差分値αの絶対値|α|が第12の閾値より小さい場合、もしくは第12の閾値と同じ値である場合には(ステップS26でNo)、テーブル更新部11は、検知対象物60の表面の凹凸の影響によって座標値が変化したと判定して、テーブル保持部12に保持されている第1テーブルを更新せずに処理を終了する。
このように、テーブル更新部11が、前回入力されたx座標値に対する、今回入力されたx座標値の変化の方向が、第1テーブルに保持されている変化方向と異なり、かつ前回入力されたx座標値と、今回入力されたx座標値との差が第12の閾値より小さい場合には、第1テーブルの更新を行わない。そのため、動作検出部14は、検知対象物60の表面の凹凸による影響を受けたx座標値に基づいて更新された第1テーブルに基づいて検出処理を行うことがない。その結果、ジェスチャー検出装置1のジェスチャーの検出精度が向上する。
なお、説明は省略するが、テーブル更新部11は、第2テーブルおよび第3テーブルに対しても上記と同様の処理を行う。
<<5.第四実施形態>>
第四実施形態では、第三実施形態とは異なり、位置検出装置100からジェスチャー検出装置1に入力される座標値が、位置検出装置100の照明部101や、照明部101以外の光源の影響によってばらつく場合について説明する。このような、光源が要因である場合には、位置検出装置100で検出される座標値のばらつきは、短期間しか現れない。
したがって、本実施の形態では、位置検出装置100から出力された3つの座標値の中央値をテーブル更新部11に出力する出力部を備えることで、光源が原因による、ジェスチャー検出装置1の検出精度の低下を抑制する。なお、第四実施形態で説明する内容については、第一〜第三実施形態のそれぞれにおいて適用することできる。
図41は、第四実施形態に係る制御部10に形成される複数の機能ブロックの一部を示す図である。図42は、第四実施形態に係る制御部10での処理を説明するための図である。図41,42を参照しながら、本実施形態に係る制御部10の処理について以下に説明する。なお、以下に示される例では、ジェスチャー検出装置1にx座標値が入力された場合を例に挙げて説明するが、ジェスチャー検出装置1にy座標値およびz座標値が入力された場合も同様に考えることができる。
図41に示されるように、本実施形態に係る制御部10は、出力部35が備えられる。出力部35は、位置検出装置100から出力される検知対象物60の位置を示す座標値が入力される。そして、出力部35は、位置検出装置100から出力された3つの座標値の中央値をテーブル更新部11に出力する。
図42に示されるように、まず出力部35は、位置検出装置100が出力したx座標値を取得する(ステップS120)。続いて、出力部35は、ステップS120で取得したx座標値を保持する(ステップS121)。続いて、出力部35は、3回分のx座標値を保持しているかを判定する(ステップS122)。3回分のx座標値が保持されていない場合には(ステップS122でNo)、出力部35は、ステップS120に戻り、次に位置検出装置100から出力されるx座標値を取得する。
一方、3回分のx座標値が保持されている場合には(ステップS122でYes)、出力部35は、3回分のx座標値のうちの中央の値を選択する(ステップS123)。そして、テーブル更新部11は、ステップS123で選択されたx座標値に基づいて第1テーブルを更新し(ステップS1a)、第1動作検出部16は、ステップS1aで更新された第1テーブルと、ステップS1aが行われる前後にテーブル更新部11によって更新された第2テーブルもしくは第3テーブルとに基づいて、第1動作を検出し(ステップS2a)、第2動作検出部17は、ステップS1aで更新された第1テーブルに基づいて第2動作を検出し(ステップS3a)、第3動作検出部18はステップS1aで更新された第1テーブルに基づいて第3動作を検出し(ステップS4a)、特定部15は検知対象物60のジェスチャーを検出する(ステップS5)。
出力部35は、ジェスチャー検出装置1に対してx座標値が3つ入力されるたびに、入力された3つのx座標値のうちの中央の座標値をテーブル更新部11に出力する。そのため、ジェスチャー検出装置1は、光源の影響が少ない座標値を用いて検知対象物60のジェスチャーを検出することができる。また、出力部35は、ジェスチャー検出装置1に入力される3つのx座標値の中央の値を出力することで、平均値の計算等を行わずに、簡単な処理によって、光源の影響が少ないx座標値を出力することができる。
上記においてジェスチャー検出装置は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種の例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。