(58)【調査した分野】(Int.Cl.,DB名)
前記エラー検出部は、前記紐付け部によって紐付けられた前記一連の座標に基づいて、前記検出面に近接する物体の位置の時間的な変化に応じた評価値を算出し、当該算出した評価値が所定のエラー判定条件を満たす場合、前記一連の座標に対する紐付けにエラーがあると判定する
ことを特徴とする請求項1又は2に記載の入力装置。
前記エラー検出部は、前記検出動作の一のサイクルにおいて取得された第1の座標と、当該一のサイクルより1つ前のサイクルにおいて取得され、前記第1の座標に紐付けられた第2の座標と、当該一のサイクルより2つ前のサイクルにおいて取得され、前記第2の座標に紐付けられた第3の座標とに基づいて、前記加速度に応じた評価値を算出する
ことを特徴とする請求項4に記載の入力装置。
前記エラー検出部は、前記検出動作の一のサイクルにおいて取得された第1の座標と、当該一のサイクルより1つ前のサイクルにおいて取得され、前記第1の座標に紐付けられた第2の座標とに基づいて、前記速度に応じた評価値を算出する
ことを特徴とする請求項4に記載の入力装置。
検出面の複数の位置において物体の近接状態を検出するセンサ部を備え、前記検出面への物体の近接状態に応じた情報を入力する入力装置をコンピュータが制御する方法であって、
前記複数の位置における物体の近接状態を1サイクルごとに検出する周期的な検出動作を行うように前記センサ部を制御するステップと、
前記検出動作の1サイクルごとに、前記センサ部の検出結果に基づいて、前記検出面に近接した物体の位置の座標を取得するステップと、
前記検出動作の異なるサイクルにおいて取得された同一物体の前記座標を紐付けるステップと、
前記検出動作の一連のサイクルに渡って前記座標の紐付けを行うステップにより紐付けられた一連の前記座標に基づいて、当該一連の座標に対する紐付けのエラーを検出するステップと、
前記エラーを検出するステップにおいて検出された前記紐付けのエラーを補正するステップとを有し、
前記座標の紐付けを行うステップは、前記検出動作の異なるサイクルにおいて取得された同一物体の前記座標に同一の識別コードを割り当て、
前記エラーの補正を行うステップは、前記検出動作の一のサイクルにおいて取得された第1の座標と、当該一のサイクルより1つ前のサイクルにおいて取得された第2の座標との紐付けにエラーがあると前記エラーを検出するステップにおいて判定された場合、前記第1の座標に前記第2の座標とは異なる識別コードを割り当てる
ことを特徴とする入力装置の制御方法。
前記エラーを検出するステップは、前記座標の紐付けを行うステップによって紐付けられた前記一連の座標に基づいて、前記検出面に近接する物体の位置の時間的な変化に応じた評価値を算出し、当該算出した評価値が所定のエラー判定条件を満たす場合、前記一連の座標に対する紐付けにエラーがあると判定する
ことを特徴とする請求項8又は9に記載の入力装置の制御方法。
前記エラーの検出を行うステップは、前記検出動作の一のサイクルにおいて取得された第1の座標と、当該一のサイクルより1つ前のサイクルにおいて取得され、前記第1の座標に紐付けられた第2の座標と、当該一のサイクルより2つ前のサイクルにおいて取得され、前記第2の座標に紐付けられた第3の座標とに基づいて、前記加速度に応じた評価値を算出する
ことを特徴とする請求項11に記載の入力装置の制御方法。
前記エラーの検出を行うステップは、前記検出動作の一のサイクルにおいて取得された第1の座標と、当該一のサイクルより1つ前のサイクルにおいて取得され、前記第1の座標に紐付けられた第2の座標とに基づいて、前記速度に応じた評価値を算出する
ことを特徴とする請求項11に記載の入力装置の制御方法。
【発明の概要】
【発明が解決しようとする課題】
【0005】
タッチパネルを用いたユーザーインターフェース装置では、タップ、フリック、スワイプ等の様々な指の操作が定義されており、指を接触させる時間や、指の位置を移動させる速度、距離、方向などを解析することにより、指の操作に応じたコマンドが入力される。そのため、指の接触位置を1サイクルごとに検出するだけでなく、複数のサイクルに渡って同一の指の接触位置を追跡し、その軌跡を求めることが必要となる。
【0006】
しかしながら、タッチパネル等の入力装置は、センサの検出面に近接する物体を感度よく検出できるように構成されていることから、特にセンサにおいて外部からの電磁ノイズを受け易いという問題がある。例えば上述した静電容量式のセンサの場合、物体の近接に伴う電極の静電容量の変化を微小な電荷量の変化として検出するため、ノイズの影響により物体の座標や接触状態の誤検知を生じ易い。このような誤検知が生じると、実際には指ではないものを指の位置として追跡してしまう場合がある。
【0007】
図5は、ノイズ等により指の位置を誤って追跡する例を示した図である。
図5において、「N1]〜「N4」は、ノイズの影響により指の接触位置として誤って検出された座標を示す。また、「A1」〜「A5」は指Aの接触位置の座標を示し、「B6」〜「B9」は指Bの接触位置の座標を示す。各符号に付された数字は、座標が検出されるサイクル数を示す。例えば「N1」と「A1」は、同じサイクル「1」において検出された異なる座標である。
【0008】
同一の指の接触位置を追跡するためには、新たなサイクルで検出された座標と、その前のサイクルで検出された座標とを、同一の指同士で正しく紐付ける必要がある。
図5の例では、この紐付けが座標間の距離に基づいて行われる。すなわち、新たなサイクルで検出された座標は、その前のサイクルで検出された座標の中で最も近いものと紐付けられる。従って、サイクル「1」〜「4」では、近接した座標「A1」〜「A4」が紐付けられるとともに、残りの座標「N1」〜「N4」が紐付けられる。座標「A1」〜「A4」は指Aの座標であるため、この紐付けは正しい。しかしながら、座標「N1」〜「N4」はそれぞれノイズにより誤検知された座標であるため、これらが指の座標として紐付けられると、ノイズが指の操作として誤認識されてしまう。
【0009】
また、
図5の例では、サイクル「1」〜「5」においてセンサの座標「A1」〜「A5」に接触していた指Aが、サイクル「6」以降センサから離れる。ところが、このサイクル「6」から、新たに別の指Bがセンサの座標「B6」に接触を開始する。サイクル「6」の座標「B6」はサイクル「5」の座標「A5」と最も近いため、座標「6」は座標「A5」と紐付けられてしまう。その結果、座標「A1」〜「A5」における指Aの軌跡と、座標「B6」〜「B9」における指Bの軌跡が、同一の指の軌跡として誤って処理されてしまう。
【0010】
本発明はかかる事情に鑑みてなされたものであり、その目的は、検出面に接触する同一物体の座標の動きを正しく追跡できる入力装置とその制御方法及びプログラムを提供することにある。
【課題を解決するための手段】
【0011】
本発明の第1の観点に係る入力装置は、検出面への物体の近接状態に応じた情報を入力する入力装置であって、前記検出面の複数の位置において物体の近接状態を検出するセンサ部と、前記複数の位置における物体の近接状態を1サイクルごとに検出する周期的な検出動作を行うように前記センサ部を制御するセンサ制御部と、前記検出動作の1サイクルごとに、前記センサ部の検出結果に基づいて、前記検出面に近接した物体の位置の座標を取得する座標取得部と、前記検出動作の異なるサイクルにおいて取得された同一物体の前記座標を紐付ける紐付け部と、前記検出動作の一連のサイクルに渡って前記紐付け部により紐付けられた一連の前記座標に基づいて、当該一連の座標に対する紐付けのエラーを検出するエラー検出部と、前記エラー検出部において検出された前記紐付けのエラーを補正するエラー補正部とを有する。
【0012】
上記の構成によれば、前記検出動作の一連のサイクルに渡って前記紐付け部により紐付けられた同一物体の前記一連の座標に基づいて、前記一連の座標に対する紐付けのエラーが検出され、当該検出された前記紐付けのエラーが前記エラー補正部により補正される。そのため、前記検出面に接触する同一物体の座標の動きが正しく追跡される。
【0013】
好適に、前記エラー検出部は、前記紐付け部によって紐付けられた前記一連の座標に基づいて、前記検出面に近接する物体の位置の時間的な変化に応じた評価値を算出し、当該算出した評価値が所定のエラー判定条件を満たす場合、前記一連の座標に対する紐付けにエラーがあると判定してよい。
これにより、前記検出面に近接する物体の位置の時間的な変化から、前記一連の座標に対する紐付けのエラーの有無が判定される。
【0014】
好適に、前記エラー検出部は、前記検出面に近接する物体の速度に応じた評価値及び当該物体の加速度に応じた評価値の少なくとも一方を算出してよい。
これにより、前記検出面に近接する物体の速度や加速度から、前記一連の座標に対する紐付けのエラーの有無が判定される。
【0015】
好適に、前記エラー検出部は、前記検出動作の一のサイクルにおいて取得された第1の座標と、当該一のサイクルより1つ前のサイクルにおいて取得され、前記第1の座標に紐付けられた第2の座標と、当該一のサイクルより2つ前のサイクルにおいて取得され、前記第2の座標に紐付けられた第3の座標とに基づいて、前記加速度に応じた評価値を算出してよい。
これにより、連続した3サイクルの座標が示す物体の加速度に応じた評価値を用いて、前記紐付けのエラーが検出される。
【0016】
好適に、前記エラー検出部は、前記検出動作の一のサイクルにおいて取得された第1の座標と、当該一のサイクルより1つ前のサイクルにおいて取得され、前記第1の座標に紐付けられた第2の座標とに基づいて、前記速度に応じた評価値を算出してよい。
これにより、連続した2サイクルの座標が示す物体の速度に応じた評価値を用いて、前記紐付けのエラーが検出される。
【0017】
好適に、前記エラー検出部は、前記評価値が所定のエラー判定条件を満たす場合、前記第1の座標と前記第2の座標との紐付けにエラーがあると判定してよい。
【0018】
好適に、前記紐付け部は、前記検出動作の異なるサイクルにおいて取得された同一物体の前記座標に同一の識別コードを割り当ててよい。前記エラー補正部は、前記検出動作の一のサイクルにおいて取得された第1の座標と、当該一のサイクルより1つ前のサイクルにおいて取得された第2の座標との紐付けにエラーがあると前記エラー検出部において判定された場合、前記第1の座標に前記第2の座標とは異なる識別コードを割り当ててよい。
これにより、先に取得された前記第1の座標と後に取得された前記第2の座標との紐付けにエラーがあると判定された場合、後に取得された前記第1の座標の前記識別コードが、先に取得された前記第2の座標とは異なる識別コードに変更される。
【0019】
好適に、前記エラー補正部は、前記第1の座標と前記第2の座標との紐付けにエラーがあると判定された場合において、前記第1の座標が取得されたサイクルにおける前記識別コードの割り当て個数が所定の上限値に達しているならば、前記第1の座標に対する識別コードの割り当てを中止してよい。
これにより、座標の動きの追跡対象となる物体の個数が前記上限値に制限される。
【0020】
本発明の第2の観点は、検出面の複数の位置において物体の近接状態を検出するセンサ部を備え、前記検出面への物体の近接状態に応じた情報を入力する入力装置をコンピュータが制御する方法に関する。この入力装置の制御方法は、前記複数の位置における物体の近接状態を1サイクルごとに検出する周期的な検出動作を行うように前記センサ部を制御するステップと、前記検出動作の1サイクルごとに、前記センサ部の検出結果に基づいて、前記検出面に近接した物体の位置の座標を取得するステップと、前記検出動作の異なるサイクルにおいて取得された同一物体の前記座標を紐付けるステップと、前記検出動作の一連のサイクルに渡って前記座標の紐付けを行うステップにより紐付けられた一連の前記座標に基づいて、当該一連の座標に対する紐付けのエラーを検出するステップと、前記エラーを検出するステップにおいて検出された前記紐付けのエラーを補正するステップとを有する。
【0021】
好適に、前記エラーを検出するステップは、前記座標の紐付けを行うステップによって紐付けられた前記一連の座標に基づいて、前記検出面に近接する物体の位置の時間的な変化に応じた評価値を算出し、当該算出した評価値が所定のエラー判定条件を満たす場合、当該一連の座標に対する紐付けにエラーがあると判定してよい。
【0022】
好適に、前記エラーの検出を行うステップは、前記検出面に近接する物体の速度に応じた評価値及び当該物体の加速度に応じた評価値の少なくとも一方を算出してよい。
【0023】
好適に、前記エラーの検出を行うステップは、前記検出動作の一のサイクルにおいて取得された第1の座標と、当該一のサイクルより1つ前のサイクルにおいて取得され、前記第1の座標に紐付けられた第2の座標と、当該一のサイクルより2つ前のサイクルにおいて取得され、前記第2の座標に紐付けられた第3の座標とに基づいて、前記加速度に応じた評価値を算出してよい。
【0024】
好適に、前記エラーの検出を行うステップは、前記検出動作の一のサイクルにおいて取得された第1の座標と、当該一のサイクルより1つ前のサイクルにおいて取得され、前記第1の座標に紐付けられた第2の座標とに基づいて、前記速度に応じた評価値を算出してよい。
【0025】
好適に、前記エラーの検出を行うステップは、前記評価値が所定のエラー判定条件を満たす場合、前記第1の座標と前記第2の座標との紐付けにエラーがあると判定してよい。
【0026】
好適に、前記座標の紐付けを行うステップは、前記検出動作の異なるサイクルにおいて取得された同一物体の前記座標に同一の識別コードを割り当ててよい。前記エラーの補正を行うステップは、前記検出動作の一のサイクルにおいて取得された第1の座標と、当該一のサイクルより1つ前のサイクルにおいて取得された第2の座標との紐付けにエラーがあると前記エラーを検出するステップにおいて判定された場合、前記第1の座標に前記第2の座標とは異なる識別コードを割り当ててよい。
【0027】
好適に、前記エラーの補正を行うステップは、前記第1の座標と前記第2の座標との紐付けにエラーがあると判定された場合において、前記第1の座標が取得されたサイクルにおける前記識別コードの割り当て個数が所定の上限値に達しているならば、前記第1の座標に対する識別コードの割り当てを中止してよい。
【0028】
本発明の第3の観点は、本発明の第2の観点に係る上記入力装置の制御方法をコンピュータに実行させるためのプログラムに関する。
【発明の効果】
【0029】
本発明によれば、検出面に接触する同一物体の座標の動きを正しく追跡できる。
【発明を実施するための形態】
【0031】
<第1の実施形態>
図1は、本発明の実施形態に係る入力装置の構成の一例を示す図である。
図1に示す入力装置は、センサ部10と、処理部20と、記憶部30と、インターフェース部40を有する。本実施形態に係る入力装置は、センサが設けられた検出面に指やペンなどの物体を近接させることによって、その近接状態に応じた情報を入力する装置である。なお、本明細書における「近接」とは、接触した状態で近くにあることと、接触しない状態で近くにあることを両方含む。
【0032】
[センサ部10]
センサ部10は、検出面に分布する複数の検出位置において、指やペンなどの物体の近接状態をそれぞれ検出する。例えばセンサ部10は、物体の近接に応じて静電容量が変化する容量性センサ素子(キャパシタ)12がマトリクス状に形成されたセンサマトリクス11と、容量性センサ素子12の静電容量に応じた検出データを生成する検出データ生成部13と、容量性センサ素子12に駆動電圧を印加する駆動部14を有する。
【0033】
センサマトリクス11は、縦方向に延在した複数の駆動電極Lxと、横方向に延在した複数の検出電極Lyを備える。複数の駆動電極Lxは横方向へ平行に並び、複数の検出電極Lyは縦方向へ平行に並ぶ。複数の駆動電極Lxと複数の検出電極Lyが格子状に交差しており、互いに絶縁されている。駆動電極Lxと検出電極Lyの交差部付近に容量性センサ素子12が形成される。なお、
図1の例では電極(Lx,Ly)の形状が短冊状に描かれているが、他の任意の形状(ダイヤモンドパターンなど)でもよい。
【0034】
駆動部14は、センサマトリクス11の各容量性センサ素子12に駆動電圧を印加する。具体的には、駆動部14は、処理部20の制御に従って、複数の駆動電極Lxから順番に一の駆動電極Lxを選択し、当該選択した一の駆動電極Lxの電位を周期的に変化させる。駆動電極Lxの電位が所定の範囲で変化することにより、この駆動電極Lxと検出電極Lyとの交差点付近に形成された容量性センサ素子12に印加される駆動電圧が所定の範囲で変化し、容量性センサ素子12において充電や放電が生じる。
【0035】
検出データ生成部13は、駆動部14による駆動電圧の印加に伴って容量性センサ素子12が充電又は放電される際に各検出電極Lyにおいて伝送される電荷に応じた検出データを生成する。すなわち、検出データ生成部13は、駆動部14の駆動電圧の周期的な変化と同期したタイミングで、各検出電極Lyにおいて伝送される電荷をサンプリングし、そのサンプリングの結果に応じた検出データを生成する。
【0036】
例えば、検出データ生成部13は、容量性センサ素子12の静電容量に応じた電圧を出力する静電容量−電圧変換回路(CV変換回路)と、CV変換回路の出力信号をデジタル信号に変換し、検出データとして出力するアナログ−デジタル変換回路(AD変換回路)を有する。
CV変換回路は、駆動部14の駆動電圧が周期的に変化して容量性センサ素子12が充電又は放電される度に、処理部20の制御に従って、検出電極Lyにおいて伝送される電荷をサンプリングする。具体的には、CV変換回路は、検出電極Lyにおいて正又は負の電荷が伝送される度に、この電荷若しくはこれに比例した電荷を参照用のキャパシタに移送し、参照用のキャパシタに発生する電圧に応じた信号を出力する。例えば、CV変換回路は、検出電極Lyにおいて周期的に伝送される電荷若しくはこれに比例した電荷の積算値や平均値に応じた信号を出力する。AD変換回路は、処理部20の制御に従って、CV変換回路の出力信号を所定の周期でデジタル信号に変換し、検出データとして出力する。
【0037】
なお、上述の例において示したセンサ部10は、電極間(Lx,Ly)に生じる静電容量(相互容量)の変化によって物体の近接を検出するものであるが、この例に限らず、他の種々の方式によって物体の近接を検出してもよい。例えば、センサ部10は、物体の接近によって電極とグランドの間に生じる静電容量(自己容量)を検出する方式でもよい。自己容量を検出する方式の場合、検出電極に駆動電圧が印加される。また、センサ部10は、静電容量方式に限定されるものではなく、例えば抵抗膜方式や電磁誘導式などでもよい。
【0038】
[処理部20]
処理部20は、入力装置の全体的な動作を制御する回路であり、例えば、記憶部30に格納されるプログラムの命令コードに従って処理を行うコンピュータや、特定の機能を実現するロジック回路を含んで構成される。処理部20の処理は、その全てをコンピュータとプログラムにより実現してもよいし、その一部若しくは全部を専用のロジック回路で実現してもよい。
【0039】
図1の例において、処理部20は、センサ制御部21と、2次元データ生成部22と、座標取得部23と、接触状態判定部24と、紐付け部25と、エラー検出部26と、エラー補正部27を有する。
【0040】
センサ制御部21は、検出面の複数の検出位置(センサマトリクス11の各容量性センサ素子12)における物体の近接状態を1サイクルごとに検出する周期的な検出動作を行うようにセンサ部10を制御する。具体的には、センサ制御部21は、駆動部14における駆動電極の選択とパルス電圧の発生、並びに、検出データ生成部13における検出電極の選択と検出データの生成が周期的に適切なタイミングで行われるように、これらの回路を制御する。
【0041】
2次元データ生成部22は、センサ部10の検出結果に基づいて、操作面の複数の位置における物体の近接の度合を示す複数の検出データを含んだ行列形式の2次元データ31を生成し、記憶部30に格納する。
【0042】
例えば2次元データ生成部22は、センサ部10から出力される検出データを、行列形式で記憶部30の記憶領域(現在値メモリ)に格納する。2次元データ生成部22は、現在値メモリに格納した行列形式の検出データと、記憶部30の別の記憶領域(ベース値メモリ)に予め格納した行列形式のベース値との差を演算し、それらの演算結果を2次元データ31として記憶部30に格納する。ベース値メモリには、検出面に物体が近接していない状態における検出データの基準となる値(ベース値)が記憶される。2次元データ31は、物体が検出面に近接していない状態からの検出データの変化量を表す。
【0043】
座標取得部23は、センサ部10における検出動作の1サイクルごとに、センサ部10の検出結果に基づいて、検出面に近接した物体の位置の座標Pを取得する。例えば座標取得部23は、2次元データ生成部22より生成された2次元データ31に基づいて、検出面上における物体の近接領域を特定し、特定した近接領域の形状や当該近接領域内のデータ値の分布などから物体の座標Pを算出する。
【0044】
接触状態判定部24は、センサ部10における検出動作の1サイクルごとに、センサ部10の検出結果に基づいて、座標取得部23により座標が取得された物体の検出面への接触状態を判定し、その判定結果を示す接触状態値Tを取得する。例えば接触状態判定部24は、座標Pが算出された物体の検出面における近接領域の面積や、近接領域内におけるデータ値の大きさなどに基づいて、物体(指)が検出面に接触しているか否かを判定する。
【0045】
また、接触状態判定部24は、各物体について取得した接触状態値Tに基づいて、センサ部10の検出面に接触している「指」の数(接触指数M)を計数する。
【0046】
紐付け部25は、センサ部10の検出動作の異なるサイクルにおいて取得された同一物体の座標を紐付ける処理を行う。例えば、紐付け部25は、センサ部10による検出動作の異なるサイクルにおいて取得された同一物体の座標に同一の識別コードiを割り当てる。識別コードiは、複数のサイクルに渡って同一の物体の座標を追跡するための情報である。例えば紐付け部25は、前回のサイクルで取得された座標Pと今回のサイクルで新たに取得された座標Pとの距離をそれぞれ算出し、互いの距離が最も短い前回の座標Pと今回の座標Pとの組み合わせを特定する。そして、紐付け部25は、今回のサイクルの座標Pに対して、最も距離が短い前回のサイクルの座標Pと同一の識別コードiを割り当てる。
【0047】
また、紐付け部25は、座標Pと共に、接触状態値Tについても識別コードiを割り当てる。例えば、紐付け部25は、検出動作の複数のサイクルに渡って、同一物体の同一サイクルにおける座標P及び接触状態値Tを含んだデータDに対して、同一の識別コードiを割り当てる。すなわち、紐付け部25は、同一のサイクルに取得された同一物体の座標P及び接触状態値Tを一つのデータDとしてまとめて扱い、このデータDに識別コードiを割り当てる。サイクルnにおいて識別コードiが割り当てられたデータDを“D[n][i]”と記す。
【0048】
具体的には、紐付け部25は、次のようにして識別コードiの割り当てを行う。
まず、紐付け部25は、サイクルnにおいて同一の物体について取得された座標P及び接触状態値Tを一つのデータCとしてまとめて扱い、このデータCに仮の識別コードkを割り当てる。サイクルnにおいて仮の識別コードkが割り当てられたデータCを“C[n][k]”と記す。
次に、紐付け部25は、前回のサイクルn−1において識別コードiが割り当てられたデータD[n−1][i]の座標Pと、今回のサイクルnにおいて仮の識別コードkが割り当てられたデータC[n][k]の座標Pとの距離をそれぞれ算出し、互いの座標Pの距離が最も短いデータD[n−1][i]とデータC[n][k]の組み合わせを特定する。
そして、紐付け部25は、データD[n−1][i]と最短距離の関係にあるデータC[n][k]の座標P及び接触状態値Tを、今回のサイクルnにおけるデータD[n][i]に代入する。
【0049】
なお、紐付け部25は、最短距離の関係にあるデータD[n−1][i]が存在しないデータC[n][k](サイクルnにおいて新たに接触した指など)については、サイクルn−1において未割り当ての識別コードiを用いたデータD[n][i]に代入する。
【0050】
エラー検出部26は、センサ部10による検出動作の一連のサイクルに渡って紐付け部25により紐付けられた一連の座標Pに基づいて、この一連の座標Pに対する紐付けのエラーを検出する。例えば、エラー検出部26は、紐付け部25によって紐付けられた一連の座標Pに基づいて、検出面に近接する物体の位置の時間的な変化に応じた評価値Eを算出し、算出した評価値Eが所定のエラー判定条件を満たす場合、一連の座標Pに対する紐付けにエラーがあると判定する。
【0051】
具体的には、エラー検出部26は、検出面に近接する物体の速度や加速度に応じた評価値Eを算出する。
図2は、連続した3サイクルの座標(P[n],P[n−1],P[n−2])から求められる速度(V[n],V[n−1])と加速度(A[n])を図解した図である。
図2において、“P[n]”,“P[n−1]”,“P[n−2]”は、サイクルn,n−1,n−2において取得された座標であり、紐付け部25によって紐付けられている(同一の識別コードiが割り当てられている)。各座標は一定の時間間隔で取得されるため、連続する2サイクルの座標は物体の速度ベクトルを表す。
図2において、“V[n]”は座標P[n−1]から座標P[n]へ移動する物体の速度ベクトルを表し、“V[n−1]”は座標P[n−2]から座標P[n−1]へ移動する物体の速度ベクトルを表す。
【0052】
速度ベクトルV[n]と速度ベクトルV[n−1]との差であるベクトル“A[n]”は、物体の加速度ベクトルを表す。加速度ベクトルA[n]の大きさは、座標P[n],P[n−1],P[n−2]の各座標値(X[n],Y[n]),(X[n−1],Y[n−1]),(X[n−2],Y[n−2])を用いて、次の式により算出される。
【0054】
平方根の開平演算を省略するため、エラー検出部26は、“|A[n]|”の二乗を評価値Eとして算出する。評価値Eは次の式で表される。
【0056】
エラー検出部26は、式(2)により算出した評価値Eが所定のエラー判定条件を満たす場合、座標P[n]と座標P[n−1]との紐付けにエラーがあると判定する。具体的には、エラー検出部26は、評価値Eがしきい値THより大きい場合(すなわち、|A[n]|が基準値より大きい場合)に紐付けのエラーがあると判定する。
【0057】
エラー補正部27は、エラー検出部26において検出された紐付けのエラーを補正する。具体的には、エラー補正部27は、検出動作のサイクルnにおいて取得された座標P[n]と、その1つ前のサイクルn−1において取得された座標P[n−1]との紐付けにエラーがあるとエラー検出部26において判定された場合、座標P[n]に座標P[n−1]とは異なる識別コードiを割り当てる。例えばエラー補正部27は、サイクルnにおいて未割り当ての識別コードiを当該座標P[n]に割り当てる。これにより、座標P[n]は、サイクルnにおいて検出面へ新たに接触した物体の座標として扱われる。
【0058】
ただし、エラー補正部27は、座標P[n]と座標P[n−1]との紐付けにエラーがあると判定された場合において、座標P[n]が取得されたサイクルnにおける識別コードiの割り当て個数(サイクルnにおいて識別コードiが割り当てられた座標の数)が所定の上限値に達しているならば、座標P[n]に対する識別コードの割り当てを中止する。この場合、例えばエラー補正部27は、紐付けエラーがある座標P[n]を初期化する。この上限値は、検出対象とする物体の個数の上限を設定する値であり、上限値を超えて接触した物体は検出対象から除外される。
【0059】
[記憶部30]
記憶部30は、処理部20において処理に使用される定数データや変数データを記憶する。処理部20がコンピュータを含む場合、記憶部30は、そのコンピュータにおいて実行されるプログラムを記憶してもよい。記憶部30は、例えば、DRAMやSRAMなどの揮発性メモリ、フラッシュメモリなどの不揮発性メモリ、ハードディスクなどを含んで構成される。
【0060】
[インターフェース部40]
インターフェース部40は、入力装置と他の制御装置(入力装置を搭載する情報機器のコントロール用ICなど)との間でデータをやり取りするための回路である。処理部20は、記憶部30に記憶される情報(物体の座標情報、物体数など)をインターフェース部40から図示しない制御装置へ出力する。また、インターフェース部40は、処理部20のコンピュータにおいて実行されるプログラムを不図示のディスクドライブ装置(非一時的記録媒体に記録されたプログラムを読み取る装置)やサーバなどから取得して、記憶部30にロードしてもよい。
【0061】
次に、上述した構成を有する入力装置において座標Pの紐付けのエラーを補正する動作について説明する。
図3は、本実施形態に係る入力装置における識別コードiの割り当てと座標の紐付けエラーの補正を説明するためのフローチャートである。
【0062】
ST100:
動作を開始する際、処理部20は、各サイクルにおける各物体の座標P及び接触状態値Tを示すデータC,Dを初期化し、センサ部10の検出動作のサイクルnに初期値2を代入する。
【0063】
ST110:
座標取得部23は、現在のサイクルnにおけるセンサ部10の検出結果として記憶部30に格納される2次元データ31に基づいて、検出面に近接した各物体の位置の座標Pを取得する。
接触状態判定部24は、2次元データ31に基づいて、座標Pが算出された各物体の検出面への接触状態を示す接触状態値Tを取得するとともに、検出面に接触した物体(指)の数(接触指数M)を計数する。
紐付け部25は、各物体の座標P及び接触状態値Tにそれぞれ仮の識別コードkを割り当て、データC[n][k]として記憶部30に保存する。
【0064】
ST120:
紐付け部25は、前回のサイクルn−1において識別コードiが割り当てられたデータD[n−1][i]の座標Pと、今回のサイクルnにおいて仮の識別コードkが割り当てられたデータC[n][k]の座標Pとの距離をそれぞれ算出し、互いの座標Pの距離が最も短いデータD[n−1][i]とデータC[n][k]の組み合わせを特定する。最短距離の組み合わせが特定されると、紐付け部25は、データD[n−1][i]と最短距離の関係にあるデータC[n][k]の座標P及び接触状態値Tを、今回のサイクルnにおけるデータD[n][i]に代入する。
【0065】
ST130:
処理部20は、物体の識別コードiに初期値0を代入する。
【0066】
ST140:
エラー検出部26は、紐付け部25によって識別コードiが割り当てられた座標P[n],P[n−1],P[n−2]に基づいて評価値Eを算出し、評価値Eが所定のエラー判定条件を満たす場合、座標P[n]と座標P[n−1]の紐付けにエラーがあると判定する。エラー検出部26によって紐付けエラーが検出された場合、エラー補正部27は、座標P[n]に座標P[n−1]と異なる識別コードiを割り当てる。
【0067】
図4は、ステップST140における座標の紐付けエラーの検出と補正に関わる処理をより詳細に説明するためのフローチャートである。
エラー検出部26は、直近の連続した3サイクル(n,n−1,n−2)におけるデータD[n][i],D[n−1][i],D[n−2][i]に含まれた接触状態値Tが全て「指」の接触中を示しているか否か判定し(ST200)、全ての接触状態値Tが「指」の接触中を示す場合はステップST210に移行する。サイクルn,n−1,n−2における全ての接触状態値Tが「指」の接触中を示していない場合、エラー検出部26は評価値Eを算出できないため、処理を終了する。
【0068】
ステップST210に移行すると、エラー検出部26は、データD[n][i],D[n−1][i],D[n−2][i]に含まれる3つの座標P[n],P[n−1],P[n−2]に基づいて式(2)の評価値Eを算出し(ST210)、この評価値Eがしきい値TH以上か否かを判定する(ST220)。評価値Eがしきい値THより小さい場合、エラー検出部26は紐付けのエラーが無いと判定し、処理を終了する。
【0069】
評価値Eがしきい値THより小さい場合、エラー検出部26は、座標P[n]と座標P[n−1]との紐付けにエラーがあると判定する。紐付けエラーを検出した場合、エラー補正部27は、サイクルnにおける識別コードiの割り当て個数が上限値に達しているか否か判定する(ST250)。識別コードiの割り当て個数が上限値に達している場合、エラー補正部27は、サイクルnのデータD[n][i]を初期化する(ST260)。他方、識別コードiの割り当て個数が上限値に達していない場合、エラー補正部27は、紐付けエラーを検出したデータD[n][i]に含まれる座標P[n]と接触状態値Tを、別の識別コードを用いたデータDに代入する(ST270)。例えばエラー補正部27は、未割り当ての識別コードを用いたデータD[n]に、これらの座標P[n]と接触状態値Tを代入する。あるいは、エラー補正部27は、接触状態値Tが指の非接触状態を示す別の識別コードを用いたデータD[n]に、これらの座標P[n]と接触状態値Tを代入してもよい。これにより、紐付けエラーを検出された座標P[n]は、サイクルnにおいて新たに検出面へ接触した物体(指)の座標として扱われる。
以上が、ステップST140の処理の説明である。
【0070】
ST150〜ST170:
処理部20は、次の物体の処理に進むため、識別コードiに「1」を加え(ST150)、識別コードiを接触指数Mと比較する(ST160)。識別コードiが接触指数Mより小さい場合、まだ処理していない物体(指)が存在するため、処理部20はステップST140に戻る。識別コードiが接触指数M以上になった場合、全ての物体(指)が処理されたので、処理部20はサイクルnに「1」を加算し(ST170)、ステップST110に戻る。
【0071】
以上説明したように、本実施形態に係る入力装置によれば、センサ部10による検出動作の一連のサイクルに渡って紐付け部25により紐付けられた同一物体の一連の座標Pに基づいて、検出面に近接する物体の位置の時間的な変化に応じた評価値Eが算出される。そして、算出された評価値Eが所定のエラー判定条件を満たす場合、一連の座標Pに対する紐付けにエラーがあると判定され、当該紐付けのエラーがエラー補正部27によって補正される。これにより、検出面に近接する物体の位置の時間的変化から、座標Pの紐付けのエラーを検出して補正できるため、検出面に接触する同一物体の座標の動きを正しく追跡することができる。
【0072】
また、本実施形態に係る入力装置によれば、一連の座標Pに基づいて算出される物体の加速度に応じた評価値Eがエラー判定条件を満たす場合、一連の座標Pの紐付けにエラーがあると判定される。これにより、一定以上の加速度で移動した座標を紐付けエラーとして補正することが可能になるため、極端に大きな加速度で移動しない物体(指)の座標の動きを正しく追跡することができる。
【0073】
更に、本実施形態に係る入力装置によれば、先に取得された座標P[n−1]と後に取得された座標P[n]との紐付けにエラーがあると判定された場合、後に取得された座標P[n]の識別コードiが、先に取得された座標P[n−1]とは異なる識別コードに変更される。これにより、新規の座標Pが取得される度に、当該新規の座標Pについて紐付けエラーの検出と補正を行うことができる。すなわち、以前取得された座標Pの紐付けを変更することなく、座標Pの取得と並行して、座標Pの紐付けエラーの検出と補正を行うことができるため、紐付けエラーの検出と補正を簡易な手順で高速に行うことができる。
【0074】
以上、本発明の種々の実施形態について説明したが、本発明は上述した実施形態にのみ限定されるものではなく、種々のバリエーションを含んでいる。
【0075】
上述した実施形態では、評価値Eとして加速度の大きさの二乗に相当する値(式(2))を算出しているが、本発明はこれに限定されない。本発明の他の実施形態では、評価値Eとして、速度に応じた値を算出してもよい。例えば、連続する2つのサイクルの座標P[n],P[n−1]を用いることにより、速度の大きさの二乗に相当する評価値Eを算出することができる。この評価値Eは、次の式で表される。
【0077】
式(3)に示す評価値Eを用いて座標の紐付けのエラーを検出する場合、センサ部10の検出動作の周期は十分に短くすることが望ましい。これにより、短時間で極端に速度が速くなる異常な動きを捉えやすくなるため、速度に応じた評価値Eを用いる方法でも、座標の紐付けエラーを精度よく検出することが可能となる。
【0078】
また、本発明の入力装置は、指等の操作による情報を入力するユーザーインターフェース装置に限定されない。すなわち、本発明の入力装置は、人体に限定されない様々な物体の検出面への近接状態に応じた情報を入力する装置に広く適用可能である。