説明

座標入力装置およびその制御方法、座標入力システム

【課題】タッチ操作の操作性を向上させた座標入力装置を提供する。
【解決手段】座標入力装置において、入力面の上層に配された検出領域内に指示具が存在するか否かを定期的に判定する判定手段と、検出領域内に指示具が存在すると判定されたとき、該指示具の座標値を導出する導出手段と、指示具の存在有無の変化に基づいて、検出領域内への指示具の入来及び該検出領域内からの指示具の離脱を検出する検出手段と、指示具の離脱が検出されたとき、指示具の離脱を示すイベント信号を該離脱に関連付けられた座標値と共に出力する出力手段と、を備え、離脱に関連付けられた座標値は、該離脱の検出時の座標値を該離脱に先行する入来の検出時の座標値を用いて補正した座標値である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、座標入力領域上の指示位置を決定する技術に関するものである。
【背景技術】
【0002】
座標入力面に対して指示具(例えば、専用入力ペン、指等)による指示を行うことで座標を入力する座標入力装置がある。このような座標入力装置は、コンピュータの制御、あるいは文字や図形などを入力するために用いられる。この種の座標入力装置としては、タッチパネル装置として、各種方式のものが提案、または製品化されており、特殊な器具などを用いずに、画面上でパーソナルコンピュータ(PC)等の端末の操作が簡単にできるため、広く用いられている。座標入力装置における検出方法としては、抵抗膜を用いたもの、また、超音波を用いたものなど、さまざまなものがあり、例えば、光を用いたものもある(特許文献1)。特許文献1では、座標入力領域の外側に再帰性反射シートを設け、座標入力領域の角端部に配置された光を照明する照明部と光を受光する受光部とにより、座標入力領域内において指等の光を遮蔽する遮蔽物と受光部間の角度を検出している。そして、その検出結果に基づいて、遮蔽物の指示位置を決定する構成が開示されている。
【0003】
また、特許文献2や3にあるように、再帰反射部材を座標入力領域周辺に構成し、再帰反射光が遮光される部分(遮光部分)の座標を検出する座標入力装置が開示されている。例えば、特許文献2では、微分等の波形処理演算によって受光部が受光する遮蔽物による遮光部分のピークを検出することにより、受光部に対する遮光部分の角度を検出し、その検出結果からその遮蔽物の座標を算出している。また、特許文献3では、特定のレベルパターンとの比較によって遮光部位の一方の端と他方の端を検出し、それらの座標の中心を検出する構成が示されている。
【0004】
このような遮光方式の座標入力装置においては、光を照明する照明部とその光を反射する再帰反射部と光を受光する受光部とからなる光路面が入力面に対して略並行に所定の幅(高さ)を有して構成される。そのため、光路面に対する指示具による入力は、入力面に触れる直前や入力面から離れる直後においても検出されることとなる。これにより、例えば操作者が文字を書くときには入力面に触れる前後で軌跡が尾を引く現象が生じる。そこで、特許文献4には、指示具の状態に関して、その2次元座標だけでなく、座標入力/検出領域面に対する距離情報(深さ情報)も検出し、指示状態が挿入状態にあるか非挿入状態にあるかを判断する構成が開示されている。特許文献5には、指示具と光学ユニットとの距離で、座標入力/検出領域に指示具が挿入されたかどうかを判定するために用いる閾値を変更する構成が開示されている。さらに、特許文献6には、座標入力面高さの異なる平面からなる座標入力面を有し、その面の高さとその位置情報、並びに検出した座標値、センサが受光した光の分布変化から、指等の指示具が座標入力面をタッチしたかを判定する構成が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許第4507557号
【特許文献2】特開2000−105671号公報
【特許文献3】特開2001−142642号公報
【特許文献4】特開2001−84106号公報
【特許文献5】特開2001−147776号公報
【特許文献6】特許第4401737号
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献4〜6に開示される技術を用いても、指示具が入力面に対して触れた位置とは、少なからずズレが生じてしまう場合がある。つまり、検出面と入力面とが異なる層に存在するため、ユーザが入力面に対し指示具で指示したと感知する座標と、検出面での実際の検出座標とはズレが生じることがある。そして、このズレは、画面に表示されているボタンオブジェクトを操作(つまり押下)する際に、ボタンを押したつもりが押されていない、というようなことの要因となる。
【0007】
図11は、光学式の座標入力装置の入力面を横から見た断面図である。光路は、検出の下限高さ(LL)と上限高さ(UL)との間の領域として示され、入力有りと反応する高さLthrの検出面において座標位置が決定される。いま、入力面122に画像としてボタンオブジェクト123が領域12Dに表示されているものとする。ここで、ユーザが、ボタンオブジェクト123を押下すべく、指示具を入力軌跡121に沿って動かした場合、ボタンオブジェクト123をタッチしたにもかかわらず、オブジェクトイベントが発生しないことになる。これは、座標値12A(ダウンイベント付き)は領域12Dに入っているものの、座標値12B(アップイベント付き)は領域12Dから外れていたためイベントがキャンセルされたためである。つまり、ボタンオブジェクト123のイベントを実行するには、座標値12A(ダウンイベント付き)と座標値12B(アップイベント付き)の双方がボタンオブジェクト123の領域12Dに入っている必要がある。このように、ユーザは、正しく操作したつもりであっても、ユーザが期待するオブジェクトイベントが発生せず、操作性に影響を及ぼす。
【0008】
本発明は上述の1以上の問題点を解決するためになされたものであり、タッチ操作の操作性を向上させた座標入力装置を提供することを目的とする。
【課題を解決するための手段】
【0009】
上述の1以上の問題点を解決するため、本発明の座標入力装置は以下の構成を備える。すなわち、備える。
【発明の効果】
【0010】
本発明によれば、タッチ操作の操作性を向上させた座標入力装置を提供することが出来る。
【図面の簡単な説明】
【0011】
【図1】第1実施形態に係る座標入力装置の概略構成を示す図である。
【図2】センサユニットの構成を説明する図である。
【図3】制御・演算ユニットのブロック図である。
【図4】発光のタイミングチャートである。
【図5】検出される光量分布を説明するである。
【図6】座標算出可能領域を説明する図である。
【図7】座標算出を説明する図である。
【図8】第1実施形態に係る座標入力装置の制御のフローチャートである。
【図9】イベントに関連する座標値の補正を例示的に説明する図である。
【図10】出力イベント、座標決定処理工程(S123)の詳細フローチャートである。
【図11】従来技術の問題点を説明するための図である。
【発明を実施するための形態】
【0012】
以下に、図面を参照して、この発明の好適な実施の形態を詳しく説明する。なお、以下の実施の形態はあくまで例示であり、本発明の範囲を限定する趣旨のものではない。
【0013】
(第1実施形態)
本発明に係る座標入力装置の第1実施形態として、遮光方式の座標入力装置を例に挙げて説明する。特に、アップイベントに伴う座標値を補正することにより、ユーザの期待する動作の予期せぬキャンセルを低減する構成について説明する。
【0014】
<装置全体構成>
図1は、第1実施形態に係る座標入力装置の概略構成を示す図である。ユーザが指示具を用いて入力を行う入力領域4の周囲には、それぞれが投光部および受光部を有する4個のセンサユニット1A〜1Dが互いに所定の距離離れて設置されている。また、センサユニット1A及び1Dは制御・演算を行う制御・演算ユニット2Aに、センサユニット1B及び1Cは制御・演算を行う制御・演算ユニット2Bに、それぞれ接続されている。各センサユニットは、接続されている制御・演算ユニットから制御信号を受信すると共に、受光部により検出した信号を制御・演算ユニットに送信する。なお、センサユニット及び制御・演算ユニットの構成についての詳細は後述する。
【0015】
再帰反射部3A,3Bは、入射光の到来方向に向けて反射光を反射する再帰反射面を有する。つまり、センサユニットの投光部から投光された光を、同一のセンサユニットに向けて再帰的に反射する。反射された光は、集光光学系とラインCCD等によって構成されたセンサユニットの受光部によって1次元的に検出され、その光量分布が制御・演算ユニットに送られる。
【0016】
第1実施形態において、再帰反射部は、入力領域4の対向する2辺上に構成されており、センサユニット1A、1Dは、再帰反射部3Bに対して投光し再帰反射光を受光する。同様に、センサユニット1B、1Cは、再帰反射部3Aに対して投光し再帰反射光を受光する。つまり、入力領域4に指示具による入力指示がなされると、投光部から投光された光が遮られ、再帰反射による反射光が得られなくなるため、入力指示位置のみ光量が得られなくなる。なお、センサユニットは、入力領域4の外側に配置されている。また、入力領域4は、PDPやリアプロジェクタ、LCDパネルなどの表示装置の表示画面で構成したり、フロントプロジェクタで画像を投影したりすることで、インタラクティブな入力装置として、利用可能となっている。
【0017】
各制御・演算ユニットは相互に通信可能なよう構成され、1A〜1Dのセンサユニットにより検出された光量変化から、入力指示された部分の遮光範囲を検出する。そして、当該遮光範囲の方向(角度)および、センサユニット間の距離等から、入力領域における座標を算出する。その後、座標入力装置に接続されているホスト装置(不図示)などに、USBなどのインタフェースを経由して決定した入力位置の座標値を出力する。
【0018】
また、座標入力装置は、座標値を算出した後に、イベント信号(ムーブイベント、ダウンイベント、アップイベントのいずれか)を生成する。ムーブイベントは、カーソルを移動させる状態を示し、ダウンイベントは、指示具の検出状態(検出領域内への指示具の入来)を示し、アップイベントは、指示具の検出状態から未検出状態への変化(検出領域内からの指示具の離脱)を示している。
【0019】
<センサユニットの詳細説明>
図2(a)〜(c)は、第1実施形態に係る座標入力装置が備えるセンサユニットの詳細構成を示す図である。センサユニット1A〜1Dは、大きく分けて投光部(図2(a))と受光部(図2(b))から構成される。
【0020】
図2(a)は、センサユニットの投光部を示している。101は、赤外光を発する赤外LEDであり、投光レンズ102によって、再帰反射部3の範囲内に光を投光する。ここで、センサユニット1A〜1D中の投光部は、この赤外LED101と、投光レンズ102によって実現される。そして、投光部より投光された赤外光は、再帰反射部3により到来方向に再帰的に反射され、センサユニット1A〜1D中の受光部によって、その光を検出する。
【0021】
図2(b)は、センサユニットの受光部を示している。受光部は、1次元のラインCCD103、集光光学系としての受光用レンズ104、入射光の入射方向を再帰反射部3の範囲内に制限する絞り105、及び可視光等の余分な光(外乱光)の入射を防止する赤外フィルター106から構成される。つまり、再帰反射部3によって反射された赤外光は、赤外フィルター106、絞り105を抜けて受光用レンズ104によって、ラインCCD103の検出素子面上に集光される。
【0022】
図2(c)は、図1のセンサユニット1A,1B側から見た断面図である。センサユニット1Aの赤外LED101Aからの光は、投光レンズ102Aにより、座標入力面に略平行に制限された光束として、主に再帰反射部3Bに対して光が投光されるように構成されている。同様に、センサユニット1Bの赤外LED101Bからの光は、投光レンズ102Bにより、主に再帰反射部3Aに対して光が投光されるように構成されている。
【0023】
ここで、投光部と受光部は、座標入力面である入力領域4の垂直方向に対しオーバレイ構成となっている。そして、正面方向(座標入力面に対し垂直方向)から見て、投光部の発光中心と受光部の基準位置(後述する角度を計測するための基準点位置に相当し、絞り105の位置)が一致する構造となっている。
【0024】
また、投光部により投光された座標入力面に略平行な光束であって、面内方向に所定角度方向に投光されている光は、再帰反射部3により光の到来方向に再帰反射される。そして、赤外フィルター106A(106B)、絞り105A(105B)、受光用レンズ104A(104B)を経て、ラインCCD103の検出素子面上に集光、結像することになる。従って、ラインCCD103の出力信号は、反射光の入射角に応じた光量分布を出力することになるので、ラインCCD103を構成する各画素の画素番号が当該入射角に対応することになる。
【0025】
尚、図2(c)に示す投光部と受光部の距離Lは、投光部から再帰反射部3までの距離に比べて十分に小さな値であり、距離Lを有していても十分な再帰反射光を受光部で検出することが可能となっている。
【0026】
<制御・演算ユニットの詳細説明>
制御・演算ユニット2A、2Bとセンサユニット1A〜1Dの間では、CCDの制御信号、CCD用クロック信号とCCDの出力信号、および、LEDの駆動信号がやり取りされている。
【0027】
図3は、制御・演算ユニットのブロック図である。なお、各制御・演算ユニットは、同様の回路構成となっている。
【0028】
ワンチップマイコンなどで構成されるCPU41は、CCD制御信号を出力し、センサユニットの受光部であるCCDのシャッタタイミングや、データの出力制御などを行っている。CCD用のクロックはクロック発生回路CLK42からセンサユニットに送信されるとともに、CCDとの同期をとって、各種制御を行うために、CPU41にも入力されている。なお、CPU41はLED駆動信号を同様に出力し、センサユニットの投光部である赤外LEDに供給している。
【0029】
センサユニットの受光部であるCCDからの検出信号は、制御・演算ユニットのA/Dコンバータ43に入力され、CPU41からの制御によって、デジタル値に変換される。変換されたデジタル値はメモリ44に記憶され、角度計算に用いられる。そして、計算された角度から、座標値が求められ外部PCなどにシリアルインタフェース48などを介して出力される。なお、シリアルインタフェース48は、制御・演算ユニット2A、2Bのいずれか1つがPCと接続される。
【0030】
第1実施形態においては、図1を参照して上述したように、センサユニットおよび制御・演算ユニットが、入力領域4の上部と下部にそれぞれ分離して配置された構成となっている。上部と下部の間の制御・演算ユニットの通信には、例えば無線通信が用いられる。例えば、赤外線通信インタフェース46を介して、サブCPU45で処理されたデータにより、制御・演算ユニット間のやりとりが行われる。
【0031】
なお、各制御・演算ユニット2A、2Bは、マスター・スレーブ制御にて動作する。例えば、制御・演算ユニット2Aがマスターで、制御・演算ユニット2Bがスレーブである。なお、各制御・演算ユニットは、マスター・スレーブのどちらにもなりうるが、不図示のディップスイッチなどで、CPUのポートに切替え信号を入力することで切替えることが可能となっている。マスターである制御・演算ユニット2Aからは、各センサユニットの制御信号を送信するタイミングを制御する制御信号がスレーブの制御・演算ユニット2Bに各インタフェースを介して送信される。
【0032】
図4は、制御信号のタイミングチャートである。制御信号51,52,53は、それぞれCCD制御用の制御信号であり、制御信号51(SH)で示される間隔で、CCDのシャッタ解放時間が決定される。制御信号52、53はそれぞれ上部センサユニット(センサユニット1A,1D)と下部センサユニット(センサユニット1B,1C)へのゲート信号であり、CCD内部の光電変換部の電荷を読み出し部へ転送する信号である。
【0033】
制御信号54、55はLEDの駆動信号であり、制御信号51(SH)の最初の周期で上部センサユニットのLEDを点灯するために、制御信号54(LEDU)の駆動信号がLED駆動回路を経てLEDに供給される。そして、次の周期で下部センサユニットのLEDを点灯するために、制御信号55(LEDD)の駆動信号がLED駆動回路を経てLEDに供給される。双方のLEDの駆動が終了した後に、CCDの信号がセンサから読み出される。したがって、上部センサユニットと下部センサユニットとでは、異なるタイミングで投光(56Uと56Dの期間露光)されて、各CCDが受光した複数のデータ(光量分布)が読み出されることになる。
【0034】
<光量分布検出の説明>
図5(a)〜(c)は、センサユニットから出力される光量分布を例示的に示す図である。
【0035】
指示具による入力領域4への入力がない場合には、それぞれのセンサユニットからの出力として例えば、図5(a)のような光量分布が得られる。もちろん、この図に示される光量分布は単なる例示で有り、再帰反射シートの特性やLEDの特性、また、経時変化(反射面の汚れなど)によって、光量分布は変化する。図5(a)においては、Aのレベルが最大光量を示し、Bのレベルが最低光量のレベルを示している。この様にCCDから出力されたデータ(光量分布)は、逐次A/D変換されCPUにデジタルデータとして取り込まれる。
【0036】
図5(b)は、指示具による入力領域4への入力がある、つまり、反射光を遮った場合の出力の例である。図5(b)では符号Cで示される部分が指示具により反射光が遮られた位置に想到し当該部分のみ、光量が低下している(レベルがBにまで落ちている)。
【0037】
つまり、図5(a)のような入力の無い状態での光量分布を予め記憶しておいて、図4で示されるそれぞれのサンプル期間において図5(b)のような光量分布を検出する。これにより、それらの差分(遮光範囲)から指示具のよる入力点として入力角度を決定することができる。
【0038】
<角度計算の説明>
角度計算にあたっては、まず、上述した遮光範囲を検出する。以下の説明では、1つのセンサユニットからのデータについて説明するが、他のセンサユニットでも同様の処理を行っている。
【0039】
まず、電源投入時、指示具による入力の無い状態、かつ、投光部による照明が無い状態でのCCDの出力をA/D変換して、これをBas_Data[N]として、メモリに記憶する。これは、CCDのバイアスなどのばらつきを含んだデータとなり、図5(a)のBのレベル付近のデータとなる。なお、Nは画素番号であり、有効な入力範囲に対応する画素番号が用いられる。次に、指示具による入力の無い状態、かつ、投光部から照明した状態での光量分布を記憶する。これは、図5(a)の実線で表されたデータに相当し、Ref_Data[N]とする。
【0040】
そして、あるサンプル期間のデータをNorm_Data[N]とした際、上述のBas_Data[N]及びRef_Data[N]を用いて、遮光範囲が有るか否かの判定を行う。つまり、指示具による入力領域4への入力が成されたか否か、検出領域内に指示具が存在するか否かの判定が定期的に行われる。
【0041】
まず遮光範囲を特定するために、データの変化の絶対量によって、有無を判定する。これは、ノイズなどによる誤判定を防止し、所定量の確実な変化を検出するためである。具体的には、変化の絶対量を各々の画素において以下の計算を行い、予め指定されてある閾値Vthaと比較する。
【0042】
Norm_Data_A[N] = Norm_Data[N] - Ref_Data[N] (1)
ここで、Norm_Data_A[N]は各画素における絶対変化量である。この処理は、2つのデータの差を取り比較するだけなので、処理時間をさほど使わないので、入力の有無の判定を高速に行う事が可能である。なお、Vthaを初めて超えた画素が所定数を超えて検出されたときに入力があったと判定する。
【0043】
一方、より高精度に検出するために、変化の比を計算して入力点の決定を行ってもよい。具体的には、変化の比を各々の画素において以下の計算を行い、予め指定されてある閾値Vthrと比較する。
【0044】
Norm_Data_R[N] = Norm_Data[N] / (Bas_Data[N] - Ref_Data[N]) (2)
このようにして得られるNorm_Data_R[N]に対して、閾値Vthrを適用して、その立ち上がり部と立下り部の画素番号から、両者の中央を入力画素として、角度を求める。
【0045】
図5(c)は、比の計算に基づく検出の例を示す図である。いま閾値Vthrで検出すると遮光領域の立ち上がり部分は、画素番号Nの画素で閾値を超えたとする。さらに、画素番号Nの画素でVthrを下まわったとする。その場合、単に中心画素N
Np = Nr + (Nf - Nr) / 2 (3)
として算出してもよいが、そうすると、画素間隔が最小の分解能になってしまう。そこで、より細かく検出するために、以下の数式(4)〜(6)に示すように、それぞれの画素のレベルとその一つ前の画素番号の画素のレベルを用い閾値を横切った仮想の画素番号を計算することを考える。
【0046】
画素番号Nの画素のレベルをL,画素番号Nr−1の画素のレベルをLr−1とする。また、画素番号Nの画素のレベルをL、画素番号Nf−1の画素のレベルをLf−1とする。そのとき、仮想画素番号Nrv,Nfvは、
Nrv = Nr-1 + ( Vthr - Lr-1 ) / ( Lr -Lr-1 ) (4)
Nfv = Nf-1 + ( Vthr - Lf-1 ) / ( Lf -Lf-1 ) (5)
と計算でき、仮想中心画素Npvは、
Npv = Nrv + ( Nfv - Nrv ) / 2 (6)
として算出される。このように、画素番号とその画素のレベルを用いて仮想的な画素番号を計算することで、より分解能の高い検出ができる。
【0047】
上記のように得られた中央画素番号から、実際の座標値を計算するためには、角度情報に変換する必要がある。ただし、後述する実際の座標計算においては、角度そのものよりも当該角度の正接(tangent)の値を求めるほうが都合がよいため、ここでは正接を求めることにする。なお、画素番号から正接(tanθ)への変換には、テーブルを参照する方式や所定の変換式を用いることができる。なお、変換式を用いる際には、多項式の次数をより高次のものにすることによりより高い精度を確保できるが計算量が増加することになるため、計算能力および精度スペック等を鑑みて決定すればよい。
【0048】
例えば、5次多項式を用いる場合、tanθは6個の係数(L,L,L,L,L,L)を用いて
tanθ = (L5 × Npr + L4) × Npr + L3) × Npr + L2) × Npr + L1) × Npr + L0 (7)
として導出することが出来る。係数のデータは、出荷時などに不揮発性メモリなどに記憶しておくとよい。
【0049】
同様なことを各々のセンサユニットに対して行えば、それぞれの角度データを決定できる。もちろん、ここでは直接tanθを求めているが、他の値(角度そのものなど)を求め、その後tanθを導出しても構わない。
【0050】
<座標計算方法の説明>
図6は、各センサユニットの組み合わせで座標計算可能な入力領域4の座標検出範囲を示している。図6に示すように、各センサユニットの投光および受光範囲が交わる領域が座標計算可能な領域となる。したがって、センサユニット1C,1Dで座標計算可能な範囲は斜線で示される範囲91である。同様にセンサユニット1B,1Cで座標計算可能な範囲は斜線で示される範囲92、センサユニット1A,1Bで座標計算可能な範囲は斜線で示される範囲93、センサユニット1A,1Dで座標計算可能な範囲は斜線で示される範囲94となる。なお、当該4つの範囲91〜94により入力領域4の全体をもれなくカバーするため、各範囲が互いに重複した領域を有するよう構成しても良い。
【0051】
図7は、画面座標との位置関係を示す図である。いま、点Pの位置において指示具による入力があった場合、センサユニット1B,1Cにて遮光データが検出される。なお、当該2つのセンサユニット間の距離はDであらわされており、また、画面中央が画面の原点位置であり、P0(0,YP0)はセンサユニット1B,1Cそれぞれの基準角度とY軸の交点である。センサユニット1B,1Cそれぞれにおける、基準角度と点P方向とのなす角をθ、θとして、tanθ,tanθを上述の多項式を用いて算出する。このとき点Pの座標は
x = Dh × (tanθL + tanθR) / ( 1 + (tanθL × tanθR) ) (8)
y = - Dh × (tanθR - tanθL - ( 2 × tanθL × tanθR) ) / ( 1 + ( tanθL × tanθR) ) + YP0 (9)
で計算される。なお、入力領域における点Pの位置によって、使用するセンサユニットの組み合わせが変更になることは上述した通りであるが、センサユニットの組み合わせで、座標算出式のパラメータが変更になる。例えば、センサユニット1C,1Dで検出されたデータで計算する場合は、数式(8)、(9)において、図7に示した値を用いる。具体的には、D→D、YP0→XP1の変換を行う。同様に、センサユニット1A,1Bの組み合わせ、センサユニット1A,1Dの組み合わせで遮光データが検出された場合も、パラメータを変更し、上記の数式(8)、(9)にて計算することができる。
【0052】
なお、図6を参照して説明したように、各センサユニットのペアによって検出される範囲91〜94は互いに重なる領域を有する。つまり1つの指示具による入力が、異なるセンサユニットのペアにより検出されることがある。その場合は、それぞれのセンサユニットのペアにより検出された複数の座標値の平均値をとるなどの処理をすればよい。
【0053】
<装置の動作>
図8は、第1実施形態に係る座標入力装置の制御・演算ユニットにおける動作フローチャートである。なお、ステップS101〜S110は電源投入時のみに行われる初期設定動作であり、ステップS110〜S124は各サンプル期間に行われる通常の取り込み動作である。
【0054】
ステップS101で、電源が投入されると、ステップS102ではCPUなどのポート設定、タイマ設定などさまざまな初期化が行われる。
【0055】
ステップS103では、不要電荷除去のための準備動作を行う。これは、CCDなどの光電変換素子は、動作させていないときに不要な電荷が蓄積している場合があり、そのデータをそのままリファレンスデータとして用いると、検出不能/誤検出の原因となるためである。そこで、最初に照明無しで、複数回データの読み出しを行っている。具体的には、ステップS103では読み込み回数の設定を行い、ステップS104で照明無しでの所定回数のデータ読み出すを行うことで、不要電荷の除去を行っている。ステップS105は所定回数繰り返すための判断を行う。
【0056】
ステップS106では、基準データに使用する照明無しでのデータ(上述のBas_Data[N])の取り込みを行い、ステップS107でメモリに記憶する。ステップS108では、基準データに使用するもう一つのデータである、照明したときの初期光量分布に相当するデータ(上述のRef_Data[N])を取り込み、ステップS109でこれもメモリに記憶する。なお、ステップS108におけるデータの取り込みは、上部のセンサユニットの組と下部のセンサユニットの組で異なるタイミングで照明してデータを取り込む。これは、上部のセンサユニットと下部のセンサユニットが対向する配置であるため、同時に照明してしまうと、互いの照明を互いの受光部にて検出してしまうことを避けるためである。ステップS110では、全てのセンサユニットにおける取り込みが終了したかどうかが判断される。なお、全てのセンサユニットにおいて取り込みが終了するまで、ステップS108とステップS109を繰り返す。
【0057】
ステップS111では、各サンプル期間において光量分布Norm_Data[N]を取り込み、ステップS112で、全てのセンサユニットにおいて取込みが終了したかどうかが判断される。全てのセンサユニットの取り込みが終了するまでステップS111を繰り返す。
【0058】
ステップS112で、全てのセンサユニットにおいて取込みが終了したと判断されたならば、全てのデータに対して、ステップS113でRef_Data[N]との差分値を計算し、ステップS114で遮光部分の有無を判定する。ステップS114において遮光領域が無いと判定されたときは、直ちにステップS111に戻る。このとき、サンプル期間の繰り返し周期を10[msec]に設定すれば、1秒間に100回サンプリングされることになる。
【0059】
ステップS114において遮光領域が有ると判定されたときは、ステップS115で数式(2)の処理により比を計算する。ステップS116では得られた比に対して閾値で立ち上がり部、立下り部を決定し、数式(4)、(5)、(6)で中心座標(画素番号)を算出する。そして、ステップS117で得られた中心座標から近似多項式よりTanθを計算する。
【0060】
ステップS118では、遮光領域が有りと判定されたセンサユニットの組み合わせから、数式(8)、(9)におけるセンサ間距離などのTanθ以外のパラメータが選択され、当該センサユニットの組み合わせに対応する数式が決定される。そして、ステップS119では、センサユニットでのTanθ値からx、y座標を、ステップS118で決定した数式(8)、(9)式を用いて算出する。
【0061】
ステップS120では、ステップS114で指示具による入力有りと判定されたセンサユニットの全ての組合わせで座標計算が行われたか判定する。全ての組合わせで座標計算が終了していない場合には、ステップS115の動作にもどり繰り返し座標計算を行う。ステップS120で全ての組合わせで座標計算が行われたと判定されたならば、ステップS121に進む。
【0062】
ステップS121では、図6で示される座標検出範囲が重複した重複領域かどうかが判断される。すなわち、複数の座標値が算出されたか否かを判断する。ステップS121で重複領域と判断された場合には、ステップS122に進み、例えば平均化などを用いて1つの座標値とする処理を行う。なお、ステップS121で重複領域と判断されない場合には、ステップS123に進む。
【0063】
ステップS123では、ステップS111〜S122の処理により出力された座標値について、タッチされたか否かの判定を行う。その判定結果から、ホスト装置のアプリケーションで使用されるカーソルイベント信号(上述したムーブイベント、ダウンイベント、アップイベントのいずれか)を生成して、座標値に関連付ける処理を行う。なお、イベント信号の生成に関する詳細は後述する。
【0064】
ステップS124では、ステップS123で決定された、座標値とカーソルイベント信号とを例えばホスト装置へ出力(送信)する。これは、USB、RS232などのシリアル通信インタフェースを含む任意のインタフェースで出力されうる。ホスト装置側では、座標入力装置に対応するデバイスドライバが受信データを解釈し、解釈された座標値、カーソルイベント信号などに基づいてホスト装置を操作する。例えば、解釈された座標値、カーソルイベント信号などに基づいて、カーソルの移動、ボタンオブジェクトへの指示などを行う。ステップS124の処理が終了したら、ステップS111の動作に戻り、以降電源OFFまでこの処理を繰り返すことになる。
【0065】
<カーソルイベント信号の生成および出力座標値の決定の動作>
図9は、アップイベントを付与する座標値の補正について説明する図である。なお、図9は、入力面を横から見た断面を概念的に示す図であり、入力面の上層には検出領域が配されている。ここでは、ユーザーが指示具を入力軌跡81のように動かして、画面に表示されているオブジェクト83をタッチしようとしているものとする。
【0066】
断面における光路の幅(高さ)は、検出の下限高さ(LL)と上限高さ(UL)との間の領域(検出領域)として示される。そして、その光路を指示具を挿入して遮光したときに、入力有りとして検出する高さLthrを横切った(入力面に近づく方向)ときの位置8Aにおいて、座標値を計算し、さらにダウンイベントを生成することになる。つまり、遮光の有無の変化(指示具の存在有無の変化)に基づいてカーソルイベントを生成する。そして、それ以降、入力有りと反応する高さLthrよりも入力面に近い領域において座標計算が継続され、この期間ダウンイベントが生成されることになる。なお、位置8Bでは、入力有りと反応する高さLthrを横切る(入力面から離れる方向)ので、ダウンイベントを生成しない処理となる。すなわち、ダウンイベントの生成、および、当該ダウンイベントを付与する座標値は、位置8Aの座標値と位置8Bの1サイクル前の座標値の間で検出されることになる。
【0067】
ところで、背景技術で説明したように、ボタンオブジェクト83は、領域8Dの範囲内でしか反応しない。そのため、位置8Bの座標値にアップイベントを付与してホスト装置に出力しても、ボタンオブジェクト83に対応するオブジェクトイベントは発生しないこととなる。
【0068】
そこで、第1実施形態に係る座標入力装置においては、例えば、入力有りと反応する高さLthrを横切る開始点である位置8Aの座標値と終了点の位置8Bの座標値とを結ぶ線分の中点の座標値を算出する。つまり、離脱の検出時の座標値と当該離脱に先行する入来の検出時の座標値とを結ぶ線分の中点の座標値を算出する。そして、その結果得られた中点の座標値にアップイベントを関連付けてホスト装置に出力する構成となっている。図9においては、位置8Aと位置8Bから計算された中点位置8Cに対して、アップイベントを付与してホスト装置に出力することとなる。中点位置8Cの座標値は、領域8Dの範囲内に入っているので、ボタンオブジェクトに対応するオブジェクトイベントが発生することとなる。
【0069】
なお、ここでは、補正された座標値として高さLthrを横切った2つの座標値の中点を例に挙げて説明したが、当該2つの座標値に対して重み情報を設定し当該2つの座標値を結ぶ線分上の任意の座標値を補正値として出力し得る。例えば、入力面に近づく方向でLthrを横切ったときの座標値(図9の位置8Aの座標値)を、アップイベントに関連付けて出力してもよい。また、例えば、高さLthrを超えた範囲内での複数の座標値の平均値としてもよい。また、当該複数の座標値に対しサンプル期間あたりの距離で重みづけして平均値を算出してもよい。この手法は、入力面に近づく方向と入力面から離れる方向とで、指示具による入力有りと反応する高さを変えるときに有効である。
【0070】
なお、アップイベントと関連付ける座標値を補正するかどうかは、高さLthrを横切った2つの座標値の間の距離が所定距離を超えるか否かで判断するとよい。なお、当該所定距離は、座標入力装置の用途によって適宜設定すればよい。たとえば、入力領域4に表示されるオブジェクトの大きさによって決めることが考えられる。また、指示具のサイズ(ユーザの指の太さなど)を規定して、当該所定距離を設定するよう構成しても良い。
【0071】
図10は、出力イベント及び座標値を決定するステップ(ステップS123)の詳細動作を示すフローチャートである。
【0072】
ステップS910では処理が開始され、ステップS911では、ダウン状態かどうか、つまり、遮光領域が有ると判定されているか否かを判定する。この処理は、上述したように入力が行われたことによる光量の変化量に対して所定の閾値と比較が行われる。ステップS911でダウン状態と判定された場合はステップS912に進み、ダウン状態ではないと判定された場合はステップS918に進む。
【0073】
ステップS912では、ダウン状態であるかどうかを示すダウンフラグに”1”がセットされているかを判定する。なお、ダウンフラグは初期値において”0”(ダウン状態にない)である。ステップS912でダウンフラグが”0”と判定されたならば、ステップS913に進みダウンフラグに”1”をセットする。そして、ステップS914に進み、現在の座標値を一時的にメモリ内の所定領域に保存する。なお、ステップS912で、ダウンフラグが”1”であると判定された場合には、ダウンフラグが既にセットされた状態なので、直ちにステップS915に進む。
【0074】
ステップS915では、イベント信号としてダウンイベントを生成する。そして、ステップS916で、現在の座標値を出力バッファなどにセットし、ステップS917で、メインルーチンにリターンし、ステップS124に進む。
【0075】
ステップS918では、ダウンフラグが”1”かどうかを判定する。ダウンフラグに”1”がセットされていないと判定した場合には、ステップS919に進みムーブイベントを生成する。続いて、ステップS916に進み、現在の座標値を出力バッファにセットする。一方、ステップS918でダウンフラグに”1”がセットされていると判定した場合には、アップイベントに関連した処理(S920)に進む。
【0076】
ステップS920では、アップイベントを生成し、ステップS921では、ステップS914で保存した座標値と現在の座標値との間の距離を計算する。ステップS922では、ステップS921で計算された距離について、所定距離との比較が行われる。ステップS921で計算された距離が所定距離以下の場合には、ステップS923に進み、所定の座標値の補正処理(2点の中点の計算など)が行われ、ステップ924において、補正された座標値を出力バッファにセットする。一方、ステップS921で計算された距離が所定距離よりも大きい場合には、ステップS928で現在の座標値を補正せずそのまま出力バッファにセットする。
【0077】
ステップS925では、ダウンフラグをクリアする(”0”を設定する)し、ステップS926では、ステップS914にて一時的に保存した座標値をクリアする。その後、ステップS927に進み、メインルーチンにリターンし、ステップS124に進む。
【0078】
以上説明したように、第1実施形態に係る座標入力装置は、アップイベントを付与する座標値を補正してホスト装置に出力する。これにより、ユーザが期待するオブジェクトイベントの意図しないキャンセルを低減することが可能となり、操作性を向上させることが可能となる。
【0079】
(変形例1)
第1実施形態においては、座標入力装置が、入力有りと反応する高さを横切った2点の座標値間の距離を判定し、この距離が所定値の範囲内に有るか否かに基づいて座標値を補正するか否かを決定した。しかしながら、座標値の補正をするか否かを他の基準に基づいて決定しても良い。なお、ここでは入力面がグラフィカルユーザインタフェース(GUI)に関連付けられていることを想定する。例えば、座標入力装置がダウンイベントと関連付けて出力した座標値が所定のGUIオブジェクト(例えばボタンオブジェクト)の範囲内にあるか否かの情報を外部機器であるホスト装置(不図示)から受信する。ボタンオブジェクトの範囲内にある場合にのみ、上述の補正を行うように構成しても良い。これにより、例えば、ユーザが指示具により文字入力を行っている場合などにおける、意図しない補正動作を抑止することが可能となる。
【0080】
(変形例2)
さらに、入力面に近づく方向で入力有りと反応する高さを横切った座標値(ダウンイベント)が、ボタンオブジェクトの領域8Dの範囲外で出力される場合に対応すべく、出力するイベント信号の出力を制御するよう構成しても良い。具体的には、入力面から離れていく方向で入力有りと反応する高さを横切った座標値の補正値(図9の位置8Cの座標値)に対して、アップイベント→ダウンイベント→アップイベント、と出力する。このように制御することにより、仮想的にボタンオブジェクトに対するダウンイベントとアップイベントのペアが生成され、イベント(ボタンの押下など)を実行することが可能となる。
【0081】
ただし、このようなカーソルイベントの出力を行った場合、アプリケーションによっては、「ダブルタップ」の動作となってしまう場合がある。そこで、ホスト装置のデバイスドライバにおいて、所定時間内のダウンイベントとアップイベントのペアの繰り返しは、無視するなどの処理を入れるとよい。
【0082】
(変形例3)
第1実施形態においては、座標値の補正処理を座標入力装置において行う構成について説明した。しかしながら、座標入力装置側ではセンサユニットにより検出した座標値を出力し外部のホスト装置(不図示)に送信し、ホスト装置で上述の座標補正処理を行うように構成した座標入力システムとして実現しても良い。その際、ホスト装置にインストールした、当該座標入力装置のデバイスドライバで行うよう構成すると良い。
【0083】
つまり、座標入力装置は、入力有りと反応する高さを横切った座標値をダウンイベントまたはアップイベントを付与して単に出力すればよい。そして、ホスト装置のデバイスドライバで、カーソルイベント付きの座標値の送信間隔や、ダウンイベントからアップイベントに変化する場合のそれぞれのイベントのエッジの座標値間隔などから、アプリケーションに出力する座標値を決定すればよい。
【0084】
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

【特許請求の範囲】
【請求項1】
座標入力装置であって、
入力面の上層に配された検出領域内に指示具が存在するか否かを定期的に判定する判定手段と、
前記判定手段により前記検出領域内に指示具が存在すると判定されたとき、該指示具の座標値を導出する導出手段と、
前記判定手段による指示具の存在有無の変化に基づいて、前記検出領域内への指示具の入来及び該検出領域内からの指示具の離脱を検出する検出手段と、
前記検出手段により指示具の離脱が検出されたとき、指示具の離脱を示すイベント信号を該離脱に関連付けられた座標値と共に出力する出力手段と、
を備え、
前記離脱に関連付けられた前記座標値は、該離脱の検出時に前記導出手段が導出した座標値を該離脱に先行する入来の検出時に前記導出手段が導出した座標値を用いて補正した座標値であることを特徴とする座標入力装置。
【請求項2】
前記離脱に関連付けられた前記座標値は、該離脱の検出時に前記導出手段が導出した座標値と該離脱に先行する入来の検出時に前記導出手段が導出した座標値とを結ぶ線分上の座標値であることを特徴とする請求項1に記載の座標入力装置。
【請求項3】
前記離脱に関連付けられた前記座標値は、該離脱の検出時に前記導出手段が導出した座標値と該離脱に先行する入来の検出時に前記導出手段が導出した座標値とを結ぶ線分の中点の座標値であることを特徴とする請求項1に記載の座標入力装置。
【請求項4】
前記出力手段は、前記離脱の検出時に前記導出手段が導出した座標値と該離脱に先行する入来の検出時に導出した座標値との間の距離が所定距離を超えるとき、前記補正を抑止し、前記離脱に関連付けられた前記座標値として該離脱の検出時に前記導出手段が導出した座標値を出力することを特徴とする請求項1乃至3の何れか一項に記載の座標入力装置。
【請求項5】
前記入力面は、外部機器のグラフィカルユーザインタフェース(GUI)に関連付けられており、
前記座標入力装置は、
前記導出手段により導出された指示具の座標値を前記外部機器に送信する送信手段と、
前記外部機器から、前記送信手段により送信した座標値が前記GUIを構成する所定のGUIオブジェクトの範囲内に存在するか否かの情報を受信する受信手段と、
を更に備え、
前記出力手段は、前記離脱に先行する入来の検出時に前記導出手段が導出した座標値に対して前記所定のGUIオブジェクトの範囲内に存在しないことを示す情報を受信したとき、前記補正を抑止し、前記離脱に関連付けられた前記座標値として該離脱の検出時に前記導出手段が導出した座標値を出力することを特徴とする請求項1乃至3の何れか一項に記載の座標入力装置。
【請求項6】
前記出力手段は、更に、前記補正した座標値が所定のGUIオブジェクトの範囲内にあり、かつ、該離脱に先行する入来の検出時に前記導出手段が導出した座標値が前記所定のGUIオブジェクトの範囲外にあるとき、それぞれが指示具の離脱、入来、離脱を示す3つイベント信号を前記離脱に関連付けられた前記座標値と共に出力することを特徴とする請求項5に記載の座標入力装置。
【請求項7】
座標入力装置の制御方法であって、
判定手段が、入力面の上層に配された検出領域内に指示具が存在するか否かを定期的に判定する判定工程と、
導出手段が、前記判定工程により前記検出領域内に指示具が存在すると判定されたとき、該指示具の座標値を導出する導出工程と、
検出手段が、前記判定工程による指示具の存在有無の変化に基づいて、前記検出領域内への指示具の入来及び該検出領域内からの指示具の離脱を検出する検出工程と、
出力手段が、前記検出工程により指示具の離脱が検出されたとき、指示具の離脱を示すイベント信号を該離脱に関連付けられた座標値と共に出力する出力工程と、
を含み、
前記離脱に関連付けられた前記座標値は、該離脱の検出時に前記導出工程で導出された座標値を該離脱に先行する入来の検出時に前記導出工程で導出された座標値を用いて補正した座標値であることを特徴とする座標入力装置の制御方法。
【請求項8】
座標入力装置と該座標入力装置と接続されたホスト装置とを含む座標入力システムであって、
前記座標入力装置は、
入力面の上層に配された検出領域内に指示具が存在するか否かを定期的に判定する判定手段と、
前記判定手段により前記検出領域内に指示具が存在すると判定されたとき、該指示具の座標値を導出する導出手段と、
前記判定手段による指示具の存在有無の変化に基づいて、前記検出領域内への指示具の入来及び該検出領域内からの指示具の離脱を検出する検出手段と、
前記検出手段により指示具の離脱が検出されたとき、指示具の離脱を示すイベント信号を該離脱の検出時に前記導出手段が導出した座標値と共に前記ホスト装置に出力する出力手段と、
を備え、
前記ホスト装置は、
前記座標入力装置からイベント信号と座標値を入力する入力手段と、
前記入力手段により指示具の離脱を示すイベント信号を受信したとき、該イベント信号と共に入力された前記離脱に関連付けられた座標値を、先行して前記入力手段により指示具の入来を示すイベント信号と共に入力された前記入来に関連付けられた座標値を用いて補正する補正手段と、
を備える
ことを特徴とする座標入力システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate