(57)【要約】【課題】座標を精度良く検出することができる座標入力技術を提供する。【解決手段】座標入力領域４の角部に設けられた受光部と光を照明する発光部を有するセンサユニット１Ｌ及び１Ｒと、座標入力領域４の周辺部に設けられ、入射光を再帰的に反射する再帰的反射部材３を有する座標入力装置において、制御・演算ユニット２は、センサユニット１Ｌ及び１Ｒから得られる光量分布において、所定レベルを横切る点に対応する角度情報を算出する。そして、その算出される複数の角度情報それぞれが示す角度の内、最小角度と最大角度間の中心となる中心角度に基づいて、指示位置の座標を算出する。【選択図】  図１
2004280708.tif 000002
【特許請求の範囲】
【請求項１】
座標入力領域上の指示位置を算出する座標入力装置であって、
前記座標入力領域の角部に設けられた受光手段と、
前記座標入力領域の周辺部に設けられ、入射光を再帰的に反射する反射手段と、
前記座標入力領域に光を照明する発光手段と、
前記受光手段から得られる光量分布において、所定レベルを横切る点に対応する角度情報を算出する角度算出手段と、
前記角度算出手段で算出される複数の角度情報それぞれが示す角度の内、最小角度と最大角度間の中心となる中心角度に基づいて、指示位置の座標を算出する算出手段と
を備えることを特徴とする座標入力装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、座標入力領域上の指示位置を算出する座標入力装置に関するものである。
【０００２】
【従来の技術】
入力面に指示具や指によって指示して座標を入力することにより、接続されたコンピュータを制御したり、文字や図形などを書き込むために用いられる座標入力装置が存在する。
【０００３】
従来より、この種の座標入力装置としては、タッチパネルとして、各種方式のものが提案、または製品化されており、特殊な器具などを用いずに、画面上でパーソナルコンピュータ等の端末の操作が簡単にできるため、広く用いられている。
【０００４】
座標入力方式としては、抵抗膜を用いたもの、また、超音波を用いたものなど、さまざまなものがあるが、光を用いたものとして、例えば、特許文献１に見られるように、座標入力領域の外側に再帰性反射シートを設け、座標入力領域の角端部に配置された光を照明する照明部と光を受光する受光部とにより、座標入力領域内において指等の光を遮蔽する遮蔽物と受光部間の角度を検出し、その検出結果に基づいて、その遮蔽物の指示位置を決定するものが知られている。
【０００５】
また、特許文献２や３等にあるように、再帰性反射部材を座標入力領域周辺に構成し、再帰反射光が遮光される部分の座標を検出する装置が開示されている。
【０００６】
【特許文献１】
米国特許登録公報４５０７５５７
【０００７】
【特許文献２】
特開２０００−１０５６７１
【０００８】
【特許文献３】
特開２００１−１４２６４２
【０００９】
【発明が解決しようとする課題】
これらの装置において、例えば、特許文献２では、微分等の波形処理演算によって受光部が受光する遮蔽物による遮光部分のピークを検出することにより、受光部に対する遮光部分の角度を検出し、その検出結果からその遮蔽物の座標を算出している。また、特許文献３では、特定のレベルパターンとの比較によって遮光部位の一方の端と他方の端を検出し、それらの座標の中心を検出する構成が示されている。
【００１０】
また、特許文献１においては、受光部であるＲＡＭイメージャーの各画素を読み出し、コンパレータで比較することで、遮光部分を検出し、一定幅以上の遮光部分がある場合に、その両端の画素の中心（１／２位置）を検出し、その検出結果に基づいて遮蔽物の座標を算出する方式が示されている。
【００１１】
ここで、指示具（遮蔽物）としては、指以外のもの、例えば、指し棒やペン等の表面の反射率の高いものが使用される場合や、指であっても、その入力位置が受光部に近い場合や爪どにマニキュア等の高反射率のものが塗布している場合の入力では、照明部からの照射光がその指示具の表面で直接反射した反射光が受光部で検出される場合がある。このような場合、受光部で本来検出する再帰性反射部材からの反射光以外に、指示具からの反射光も検出されてしまい、誤検出の要因や座標算出精度の劣化の要因となっていた。
【００１２】
本発明は上記の課題を解決するためになされたものであり、座標を精度良く検出することができる座標入力技術に関するものである。
【００１３】
【課題を解決するための手段】
上記の目的を達成するための本発明による座標入力装置は以下の構成を備える。即ち、
座標入力領域上の指示位置を算出する座標入力装置であって、
前記座標入力領域の角部に設けられた受光手段と、
前記座標入力領域の周辺部に設けられ、入射光を再帰的に反射する反射手段と、
前記座標入力領域に光を照明する発光手段と、
前記受光手段から得られる光量分布において、所定レベルを横切る点に対応する角度情報を算出する角度算出手段と、
前記角度算出手段で算出される複数の角度情報それぞれが示す角度の内、最小角度と最大角度間の中心となる中心角度に基づいて、指示位置の座標を算出する算出手段と
を備える。
【００１４】
【発明の実施の形態】
以下、本発明の実施の形態について図面を用いて詳細に説明する。
【００１５】
＜＜実施形態１＞＞
図１は本発明の実施形態１の座標入力装置の概略構成を示す図である。
【００１６】
図１において、１Ｌ及び１Ｒは、投光部３０及び検出部４０（図５参照）を有するセンサユニットであり、両者は互いに所定距離離されて設置されている。センサユニット１Ｌ及び１Ｒは、制御・演算を行う制御・演算ユニット２に接続され、制御信号を制御・演算ユニット２から受信すると共に、検出した信号を制御・演算ユニット２に送信する。
【００１７】
３は、図２に示すように、入射光を到来方向に反射する再帰反射面を有する再帰性反射部材であり、左右それぞれのセンサユニット１Ｌ及び１Ｒから略９０°範囲に投光された光を、センサユニット１Ｌ及び１Ｒに向けて再帰反射する。反射された光は、センサユニット１Ｌ及び１Ｒによって１次元的に検出され、その光量分布が制御・演算ユニット２に送信される。
【００１８】
４は座標入力領域であり、ＰＤＰやリアプロジェクタ、ＬＣＤパネルなどの表示装置の表示画面で構成されることで、インタラクティブな入力装置として、利用可能となっている。
【００１９】
このような構成において、座標入力領域４に指等の指示具による入力指示がなされると、センサユニット１Ｌ及び１Ｒの投光部３０から投光された光が遮られ、再帰性反射部材３による反射光が得られなくなるため、入力指示位置のみ反射光量が得られなくなる。
【００２０】
制御・演算ユニット２は、センサユニット１Ｌ及び１Ｒが検出する光量変化から、指示具によって入力指示された部分の遮光範囲を検出し、その遮光範囲内での検出点を特定して、センサユニット１Ｌ及び１Ｒそれぞれに対する指示具の角度を算出する。そして、算出された角度及びセンサユニット間の距離等から、座標入力領域４上の指示具の指示位置を算出し、表示装置に接続されているパーソナルコンピュータ等の外部端末に、ＵＳＢ等のインタフェースを経由して座標値を出力する。
【００２１】
このようにして、指示具によって、画面上に線を描画したり、表示装置に表示されるアイコンを操作する等の外部端末の操作が可能になる。
【００２２】
＜センサユニットの詳細説明＞
まず、センサユニット１Ｌ及び１Ｒ内の投光部３０の構成について、図３を用いて説明する。
【００２３】
図３は本発明の実施形態１のセンサユニットの投光部の構成例を示す図である。
【００２４】
図３（ａ）は投光部３０を上（座標入力領域４の入力面に対し垂直方向）から見た場合を示している。３１は赤外光を発する赤外ＬＥＤであり、赤外ＬＥＤ３１から発光した光は投光レンズ３２によって略９０°範囲に光が投光される。
【００２５】
図３（ｂ）は投光部３０を横（座標入力領域４の入力面に対し水平方向）から見た場合を示している。この方向では、赤外ＬＥＤ３１からの光は上下方向に制限された光束として投光され、主に、再帰性反射部材３に対して光が投光されるように構成されている。
【００２６】
次に、センサユニット１Ｌ及び１Ｒの検出部４０の構成について、図４を用いて説明する。
【００２７】
図４は本発明の実施形態１のセンサユニットの検出部の構成例を示す図である。
【００２８】
図４では、センサユニット１Ｌ及び１Ｒの検出部４０を座標入力領域４の入力面に対して垂直方向から見た場合を示している。
【００２９】
検出部４０は、複数の受光素子（画素）からなる１次元のラインＣＣＤ４１及び集光光学系としての集光用レンズ４２及び４３、入射光の入射方向を制限する絞り４４、可視光など余分な光の入射を防止する赤外フィルタ４５から構成されている。
【００３０】
投光部３０からの光は、再帰性反射部材３によって反射され、赤外フィルタ４５、絞り４４を抜けて、集光用レンズ４２及び４３によって入力面の略９０°範囲の光がラインＣＣＤ４１の検出面にその入射角に依存した画素上に結像される。これにより、入射角の角度毎の光量分布が得られる。つまり、ラインＣＣＤ４１を構成する各画素の画素番号が角度情報を表すことになる。
【００３１】
次に、図３の投光部３０及び図４の検出部４０を有するセンサユニット１Ｌ及び１Ｒの構成について、図５を用いて説明する。
【００３２】
図５は本発明の実施形態１のセンサユニットの構成例を示す図である。
【００３３】
図５では、入力面と水平方向からの見たときの、図３（ａ）の投光部３０と図４の検出部４０を重ねて、センサユニット１Ｌ（１Ｒ）を構成した場合を示している。ここで、投光部３０と検出部４０の光軸間の距離は、再帰性反射部材３の角度特性から充分検出可能な範囲に設定されていればよい。
【００３４】
＜反射部材について＞
再帰性反射部材３は、入射角度に対する反射特性を有してる。この反射特性としては、例えば、再帰性反射部材３がテープ状に平坦に構成された場合には、図６に示すように、再帰性反射部材３への入射光の入射角度が４５度を超えるあたりから得られる反射光量が減少し、指示具がある場合にはその変化が充分に取れないことになる。
【００３５】
反射光量は、光量分布（照明強度および距離）、再帰性反射部材３の反射率（入射角度、反射部材の幅）、センサユニット１Ｌ及び１Ｒ内の結像系照度（ｃｏｓｉｎｅ４乗則）によって決まる。
【００３６】
反射光量が不足する場合に、その不足を解決する方法としては、投光部３０の照明強度を上げることが考えられる。しかしながら、反射光量分布が均一で無い場合で、高光量部分の光をセンサユニットが受光したときには、センサユニット内のラインＣＣＤ４１でその部分が蝕和することがあり、照明強度を上げるには限界がある。裏返せば、再帰性反射部材３の反射光量分布をなるべく均一にすることで低光量部分への反射光量の増大も望むことができる。
【００３７】
そこで、実施形態１では、再帰性反射部材３への入射光の入射角度方向に対する反射光量の均一化を計るために、図７に示すような複数の三角柱からなる再帰性反射部材を構成する。このようにすることで、入射角度に対する反射特性を改善することができる。
【００３８】
尚、各三角柱の角度は、再帰性反射部材の反射特性から決定すればよく、また、そのピッチは、センサユニット内のラインＣＣＤ４１の検出分解能以下に設定することが望ましい。
【００３９】
＜制御・演算ユニットの説明＞
制御・演算ユニット２とセンサユニット１Ｌ及び１Ｒの間では、主に、検出部４０内のラインＣＣＤ４１用のＣＣＤ制御信号、ＣＣＤ用クロック信号と出力信号及び発光部３０の赤外ＬＥＤ３１の駆動信号がやり取りされている。
【００４０】
ここで、制御・演算ユニット２の詳細構成について、図８を用いて説明する。
【００４１】
図８は本発明の実施形態１の制御・演算ユニットの詳細構成を示すブロック図である。
【００４２】
ＣＣＤ制御信号は、ワンチップマイコン等で構成される演算制御回路（ＣＰＵ）８３から出力され、ラインＣＣＤ４１のシャッタタイミングやデータの出力制御等が行われる。尚、この演算制御回路８３は、メインクロック発生回路８６からのクロック信号に従って動作する。また、ＣＣＤ用のクロック信号は、クロック発生回路（ＣＬＫ）８７からセンサユニット１Ｌ及び１Ｒに送信されると共に、各センサユニット内部のラインＣＣＤ４１との同期をとって各種制御を行うために、演算制御回路８３にも入力されている。
【００４３】
投光部３０の赤外ＬＥＤ３１を駆動するためのＬＥＤ駆動信号は、演算制御回路８３からＬＥＤ駆動回路８４Ｌ及び８４Ｒを介して、対応するセンサユニット１Ｌ及び１Ｒの投光部３０の赤外ＬＥＤ３１に供給されている。
【００４４】
センサユニット１Ｌ及び１Ｒそれぞれの検出部４０のラインＣＣＤ４１からの検出信号は、制御・演算ユニット２の対応するＡ／Ｄコンバータ８１Ｌ及び８１Ｒに入力され、演算制御回路２からの制御によって、デジタル値に変換される。この変換されたデジタル値は、メモリ８２に記憶され、指示具の角度計算に用いられる。そして、この計算された角度から座標値が算出され、外部端末にシリアルインタフェース８８（例えば、ＵＳＢ、ＲＳ２３２Ｃインタフェース等）を介して出力される。
【００４５】
＜光量分布検出の説明＞
図９は本発明の実施形態１の制御信号のタイミングチャートである。
【００４６】
図９において、９１〜９３はＣＣＤ制御信号であり、ＳＨ信号９１の間隔で、ラインＣＣＤ４１のシャッタ解放時間が決定される。ＩＣＧＬ信号９２及びＩＣＧＲ信号９３は、センサユニット１Ｌ及び１Ｒそれぞれのセンサユニットへのゲート信号であり、内部のラインＣＣＤ４１の光電変換部の電荷を読出部へ転送する信号である。
【００４７】
９４、９５はセンサユニット１Ｌ及び１Ｒそれぞれの投光部３０の駆動信号である。ここで、ＳＨ信号９１の最初の周期で、センサユニット１Ｌの投光部３０を点灯（投光期間９６Ｌ）するために、ＬＥＤＬ信号９４がＬＥＤ駆動回路８４Ｌを経て投光部３０に供給される。また、ＳＨ信号９１の次の周期で、センサユニット１Ｒの投光部３０を点灯（投光期間９６Ｒ）するために、ＬＥＤＲ信号９５がＬＥＤ駆動回路８４Ｒを経て投光部３０に供給される。
【００４８】
そして、センサユニット１Ｌ及び１Ｒの双方の投光部３０の駆動が終了した後に、センサユニット１Ｌ及び１Ｒの双方の検出部（ラインＣＣＤ４１）の検出信号が読み出される。
【００４９】
ここで、センサユニット１Ｌ及び１Ｒの双方から読み出される検出信号は、座標入力領域４への指示具による入力がない場合には、それぞれのセンサユニットからの出力として、図１０のような光量分布が得られる。もちろん、このような光量分布がどのシステムでも必ず得られるわけではなく、再帰性反射部材３の特性や投光部３０の特性、また、経時変化（反射面の汚れなど）によって、光量分布は変化する。
【００５０】
図１０においては、レベルＡが最大光量であり、レベルＢが最低光量となっている。
【００５１】
つまり、再帰性反射部材３からの反射光がない状態では、センサユニット１Ｌ及び１Ｒで得られる光量レベルがレベルＢ付近になり、反射光量が増えるほど、レベルＡに光量レベルが遷移する。このようにして、センサユニット１Ｌ及び１Ｒから出力された検出信号は、逐次、対応するＡ／Ｄコンバータ８１Ｌ及び８１ＲでＡ／Ｄ変換され、演算制御回路８３にデジタルデータとして取り込まれる。
【００５２】
これに対し、座標入力領域４への指示具による入力がある場合には、センサユニット１Ｌ及び１Ｒからの出力として、図１１のような光量分布が得られる。
【００５３】
この光量分布のＣ部分では、指示具によって再帰性反射部材３からの反射光が遮られているため、その部分（遮光範囲）のみ反射光量が低下していることがわかる。
【００５４】
そして、実施形態１では、指示具による入力がない場合の図１０の光量分布と、指示具による入力がある場合の図１１の光量分布の変化に基づいて、センサユニット１Ｌ及び１Ｒに対する指示具の角度を算出する。
【００５５】
具体的には、図１０の光量分布を初期状態として予めメモリ８２に記憶しておき、センサユニット１Ｌ及び１Ｒそれぞれの検出信号のサンプル期間に、図１１のような光量分布の変化があるか否かを、そのサンプル期間中の光量分布と初期状態の光量分布との差分によって検出する。そして、光量分布に変化がある場合には、その変化部分を指示具の入力点としてその入力角度を決定する演算を行う。
【００５６】
＜角度計算の説明＞
センサユニット１Ｌ及び１Ｒに対する指示具の角度計算にあたっては、まず、指示具による遮光範囲を検出する必要がある。
【００５７】
上述したように、センサユニット１Ｌ及び１Ｒが検出する光量分布は、経時変化等の要因で一定ではないため、その初期状態の光量分布は、例えば、システムの起動時毎にメモリ８２に記憶することが望ましい。これにより、例えば、再帰性反射部材３の再帰反射面がほこりなどで汚れていて完全に光を反射できないような場合を除いて、常に、座標入力装置の最新の初期状態の光量分布をメモリ８２に管理することが可能になる。
【００５８】
以下、センサユニット１Ｌ及び１Ｒの一方（例えば、センサユニット１Ｌ）による指示具の角度計算について説明するが、他方（センサユニット１Ｒ）でも同様の角度計算を行うことは言うまでもない。
【００５９】
電源投入時、入力のない状態で、まず、センサユニット１Ｌ内の投光部３０からの投光を停止している状態で、検出部４０の出力である光量分布をＡ／Ｄ変換して、この値をＢａｓ＿ｄａｔａ［Ｎ］としてメモリ８２に記憶する。
【００６０】
尚、この値は、検出部（ラインＣＣＤ４１）のバイアスのばらつき等を含んだデータでり、図１０のレベルＢ付近のデータとなる。ここで、ＮはラインＣＣＤ４１を構成する画素の画素番号であり、有効な入力範囲（有効範囲）に対応する画素番号が用いられる。
【００６１】
次に、投光部３０からの投光を行っている状態で、検出部４０の出力である光量分布をＡ／Ｄ変換して、この値をＲｅｆ＿ｄａｔａ［Ｎ］としてメモリ８２に記憶する。
【００６２】
尚、この値は、例えば、図１０の実線で示されるデータとなる。
【００６３】
そして、このメモリ８２に記憶されたＢａｓ＿ｄａｔａ［Ｎ］とＲｅｆ＿ｄａｔａ［Ｎ］とを用いて、まずは、指示具による入力の有無、かつ遮光範囲の有無の判定を行う。
【００６４】
ここで、センサユニット１Ｌ（ラインＣＣＤ４１）の出力のサンプル期間内のＮ番目の画素の画素データをＮｏｒｍ＿ｄａｔａ［Ｎ］とする。
【００６５】
まず、遮光範囲を特定するために、画素データの変化の絶対量によって、遮光範囲の有無を判定する。これは、ノイズ等による誤判定を防止し、所定量の確実な変化を検出するためである。
【００６６】
具体的には、画素データの変化の絶対量を、ラインＣＣＤ４１の各々の画素において以下の計算を行い、予め決定してある閾値Ｖｔｈａと比較する。
【００６７】
Ｎｏｒｍ＿ｄａｔａ＿ａ［Ｎ］  ＝  Ｎｏｒｍ＿ｄａｔａ［Ｎ］  −  Ｒｅｆ＿ｄａｔａ［Ｎ］  （１）
ここで、Ｎｏｒｍ＿ｄａｔａ＿ａ［Ｎ］は、ラインＣＣＤ４１の各画素における絶対変化量である。
【００６８】
この処理は、ラインＣＣＤ４１の各画素の絶対変化量Ｎｏｒｍ＿ｄａｔａ＿ａ［Ｎ］を算出し、それを閾値Ｖｔｈａと比較するだけなので、その処理時間をさほど必要とせず、入力の有無の判定を高速に行うことが可能である。そして、特に、閾値Ｖｔｈａを初めて超えた画素が所定数を超えて検出された場合に、指示具の入力があると判定する。
【００６９】
次に、より高精度に指示具による入力を検出するために、画素データの変化の比を計算して入力点の決定を行う方法について、図１２を用いて説明する。
【００７０】
図１２において、１２１は再帰性反射部材３の再帰反射面とする。ここで、Ａ領域が汚れなどにより、その反射率が低下していたとすると、このときのＲｅｆ＿ｄａｔａ［Ｎ］の画素データ分布（光量分布）は、図１３の１３−１のように、Ａ領域に対応する部分の反射光量が少なくなる。この状態で、図１２のように、指示具１２００が挿入され、ほぼ再帰性反射面１２１の上半分を覆ったとすると、反射光量は略半分となるため、図１３の１３−２の太線で示した分布Ｎｏｒｍ＿ｄａｔａ［Ｎ］が観測されることになる。
【００７１】
この状態に対して、（１）式を適用すると、その画素データ分布は、図１４の１４−１のようになる。ここで、縦軸は初期状態との差分電圧になっている。
【００７２】
この画素データに対して、閾値Ｖｔｈａを適用すると、本来の入力範囲をはずれてしまうような場合がある。もちろん、閾値Ｖｔｈａの値を下げればある程度検出可能であるが、ノイズなどの影響を受ける可能性がある。
【００７３】
そこで、画素データの変化の比を計算することとすると、Ａ領域及びＢ領域とも反射光量は最初の半分であるので、次式で比を計算することができる。
【００７４】
Ｎｏｒｍ＿ｄａｔａ＿ｒ［Ｎ］  ＝  Ｎｏｒｍ＿ｄａｔａ＿ａ［Ｎ］  ／  （Ｂａｓ＿ｄａｔａ［Ｎ］  −  Ｒｅｆ＿ｄａｔａ［Ｎ］）  （２）
この計算結果を示すと、図１４の１４−２のように、画素データの変化が比であらわされるため、再帰性反射部材３の反射率が異なる場合でも、等しく扱うことが可能になり、高精度に検出が可能になる。
【００７５】
この画素データに対して、閾値Ｖｔｈｒを適用して、遮光範囲に対応する画素データ分布の立ち上がり部と立ち下がり部に対応する画素番号を取得し、この両者の中央を指示具による入力に対応する画素とすることで、より正確な指示具の入力位置を決定することができる。
【００７６】
尚、図１４の１４−２は、説明のために模式的に描いたもので、実際にはこのような立ち上がりにはなっておらず、画素毎に異なるデータレベルを示している。
【００７７】
以下、式（２）を画素データに適用した場合の検出結果の詳細について、図１５を用いて説明する。
【００７８】
図１５は本発明の実施形態１の検出結果の詳細を示す図である。
【００７９】
図１５において、指示具による遮光範囲を検出するための閾値Ｖｔｈｒに対して、その閾値Ｖｔｈｒを横切る画素データ分布の立ち上がり部分がＮｒ番目の画素、立ち下がり部分がＮｆ番目の画素である場合、両者の画素の中心画素Ｎｐは、
Ｎｐ  ＝  Ｎｒ  ＋  （Ｎｆ−Ｎｒ）／２                                  （３）
と計算することが可能である。但し、この計算では、画素間隔が最小の分解能になってしまう。
【００８０】
そこで、より細かく検出するために、それぞれの画素のデータレベルとその一つ前の隣接画素のデータレベルを用いて、閾値Ｖｔｈｒを横切る仮想の画素番号を計算する。
【００８１】
ここで、Ｎｒ番目の画素のデータレベルをＬｒ、Ｎｒ−１番目の画素のデータレベルをＬｒ−１とする。また、Ｎｆ番目の画素のデータレベルをＬｆ、Ｎｆ−１番目の画素のデータレベルをＬｆ−１とすれば、それぞれの仮想画素番号Ｎｒｖ，Ｎｆｖは、
Ｎｒｖ  ＝  Ｎｒ−１    ＋  （  Ｖｔｈｒ    −    Ｌｒ−１  ）  ／  （  Ｌｒ    −    Ｌｒ−１  ）      （４）
Ｎｆｖ  ＝  Ｎｆ−１    ＋  （  Ｖｔｈｒ    −    Ｌｆ−１  ）  ／  （  Ｌｆ    −    Ｌｆ−１  ）      （５）
と計算できる。そして、これらの仮想画素番号Ｎｒｖ，Ｎｆｖの仮想中心画素Ｎｐｖは、
Ｎｐｖ  ＝  Ｎｒｖ  ＋  （Ｎｆｖ−Ｎｒｖ）／２                                （６）
で決定される。
【００８２】
このように、閾値Ｖｔｈｒを越えるデータレベルの画素の画素番号とその隣接する画素番号と、それらのデータレベルから、閾値Ｖｔｈｒを横切る仮想的な仮想画素番号を計算することで、より分解能の高い検出を実現できる。
【００８３】
＜直接反射時の検出＞
上述の説明では、指示具からの直接反射光の無い状態での、センサユニットに対する指示具の角度検出について説明してきたが、指示具の表面反射率が高い場合などは、図１６に示すように、再帰性反射部材３の再帰反射面ではなく、指示具１２００の表面で投光部３０からの直接反射が発生し、この反射光がセンサユニット１Ｌあるいは１Ｒにて検出されてしまう場合がある。
【００８４】
例えば、図１７において、本来の遮光範囲は、Ａ領域であるが、指示具の表面の反射光によって、Ｂ領域のような部分ができ、あたかも２つの範囲で入力が行われているように検出されてしまう。
【００８５】
このような場合に、上記と同様に、（２）式を用いて画素データの変化の比を計算すると、図１７の光量分布は、図１８のようになる。
【００８６】
図１８において、閾値Ｖｔｈを横切る点を検出して行くと、画素データ分布の立ち上がりとしてｒ０、ｒ１が、立ち下がりとしてｆ０、ｆ１が検出可能になる。
【００８７】
このとき、ｆ０，ｒ１の区間は指示具による直接反射によってもたらされたものであるので、本来の入力による遮光範囲は、ｒ０，ｆ１の範囲である。故に、ｒ０，ｆ１の中間点を、指示具の入力位置とすることが望ましい。
【００８８】
以下、この指示具からの直接反射光がある場合の指示具の入力位置に対応する遮光範囲を検出するために、画素データ分布中の特徴点（閾値を越える画素データ分布中の立ち上がり点及び立ち下がり点）を検出する特徴点検出処理について、図１９を用いて説明する。
【００８９】
図１９は本発明の実施形態１の特徴点検出処理を示すフローチャートである。
【００９０】
まず、この特徴点検出処理を、後述する図２２の座標算出処理のサブルーチンとして呼ぶ出す。
【００９１】
ステップＳ２０２で、センサユニット１Ｌ（１Ｒ）の検出部４０のラインＣＣＤ４１を構成する画素の画素番号を示すカウンタＣｎｔ、閾値Ｖｔｈを越える画素データ分布の立ち上がり点の検出状態を示す立ち上がり検出フラグＲ＿ｆｌｇ（０：立ち上がり未検出状態、１：立ち上がり検出状態）、閾値Ｖｔｈを越える画素データ分布の立ち下がり点の検出状態を示す立ち下がり検出フラグＦ＿ｆｌｇ（０：立ち下がり未検出状態、１：立ち下がり検出状態）をそれぞれ初期化する。
【００９２】
ステップＳ２０３で、カウンタＣｎｔをインクリメントする。
【００９３】
ステップＳ２０４で、カウンタＣｎｔの値が示す画素番号が、ラインＣＣＤ４１の検出範囲の有効範囲外であるか否かを判定する。有効範囲外である場合（ステップＳ２０４でＹＥＳ）、ステップＳ２１６へ進む。一方、有効範囲内である場合（ステップＳ２０４でＮＯ）、ステップＳ２０５に進み、カウンタＣｎｔの値が示す画素番号の画素データ（Ｄａｔａ）を読み込む。
【００９４】
次に、立ち上がり検出フラグＲ＿ｆｌｇ＝０であるか否かを判定する。立ち上がり検出フラグＲ＿ｆｌｇ＝０である場合（ステップＳ２０６でＹＥＳ）、ステップＳ２０７に進み、画素データ（Ｄａｔａ）が閾値Ｖｔｈ以上であるか否かを判定する。
【００９５】
閾値Ｖｔｈ未満である場合（ステップＳ２０７でＮＯ）、ステップＳ２０３に戻り、カウンタＣｎｔをインクリメントして、そのカウンタＣｎｔの値が示す画素番号が有効範囲内であれば、ステップＳ２０５で、処理対象として、カウンタＣｎｔの値が示す次の画素番号の画素データ（Ｄａｔａ）を読み込み、以降、同様の処理を実行する。一方、閾値Ｖｔｈ以上である場合（ステップＳ２０７でＹＥＳ）、ステップＳ２０８に進む。
【００９６】
ステップＳ２０８で、現在のカウンタＣｎｔの値が示す画素番号の画素データ（Ｄａｔａ）を遮光範囲に対応する画素データ分布の立ち上がりデータＮｒとしてメモリ８２に記憶する。次に、ステップＳ２０９で、立ち上がり検出フラグＲ＿ｆｌｇ＝１にセットする。
【００９７】
その後、ステップＳ２０３で、カウンタＣｎｔをインクリメントして、そのカウンタＣｎｔの値が示す画素番号の画素データ（Ｄａｔａ）の読み込みを経て、ステップＳ２０６の判定を行う場合には、立ち上がり検出フラグＲ＿ｆｌｇ＝１となっているので、ステップＳ２０６からステップＳ２１０へ進む。
【００９８】
ステップＳ２１０で、立ち下がり検出フラグＦ＿ｆｌｇ＝０であるか否かを判定する。立ち下がり検出フラグＦ＿ｆｌｇ＝０である場合（ステップＳ２１０でＹＥＳ）、ステップＳ２１１に進み、画素データ（Ｄａｔａ）が閾値Ｖｔｈ未満であるか否かを判定する。閾値Ｖｔｈ以上である場合（ステップＳ２１１でＮＯ）、ステップＳ２０３に戻る。一方、閾値Ｖｔｈ未満である場合（ステップＳ２１１でＹＥＳ）、ステップＳ２１２に進み、現在のカウンタＣｎｔの値が示す画素番号の画素データ（Ｄａｔａ）を遮光範囲に対応する画素データ分布の立ち下がりデータＮｆとしてメモリ８２に記憶する。次に、ステップＳ２１３で、立ち下がり検出フラグ＝１にセットする。
【００９９】
その後、ステップＳ２０３で、カウンタＣｎｔをインクリメントして、そのカウンタＣｎｔの値が示す画素番号の画素データ（Ｄａｔａ）の読み込みを経て、ステップＳ２１０の判定を行う場合には、立ち下がり検出フラグＦ＿ｆｌｇ＝１となっているので、ステップＳ２１０からステップＳ２１４へ進む。
【０１００】
ステップＳ２１４で、画素データ（Ｄａｔａ）が閾値Ｖｔｈ以上であるか否かを判定する。直接反射が無い場合には、このあと、画素データ（Ｄａｔａ）が閾値Ｖｔｈを超えることがないので、このまま、ラインＣＣＤ４１の有効範囲の最後まで、画素データ（Ｄａｔａ）を読み込んでも立ち下がりデータＮｆの値は変わらないが、直接反射を検出している場合には、再び、画素データ（Ｄａｔａ）が閾値Ｖｔｈを超えることになる。
【０１０１】
そこで、ステップＳ２１４で、画素データ（Ｄａｔａ）が閾値Ｖｔｈ以上である場合（ステップＳ２１４でＹＥＳ）、ステップＳ２１５に進み、立ち下がり検出フラグ＝０に設定して、再度、画素データ分布の立ち下がりが検出されるまで、ステップＳ２１１〜ステップＳ２１３の判定ループを繰り返し、最終的な、画素データ分布の立ち下がりデータの検出を行う。
【０１０２】
有効範囲内の画素データ（Ｄａｔａ）に対する処理が完了したら、立ち上がり検出フラグＲ＿ｆｌｇと立ち下がり検出フラグＬ＿ｆｌｇをチェックする。
【０１０３】
つまり、ステップＳ２１６で、立ち上がり検出フラグＲ＿ｆｌｇ＝１で、かつ立ち下がり検出フラグＦ＿ｆｌｇ＝１であるか否かを判定する。ステップＳ２１６の判定における条件を満足する場合（ステップＳ２１６でＹＥＳ）、ステップＳ２１７へ進み、メモリ８２に記憶されている立ち上がりデータＮｒと立ち下がりデータＮｆから、遮光範囲に対応する画素データ分布の中間点Ｎｐ（＝（Ｎｒ＋Ｎｆ）／２：中心画素番号）を計算して、リターンする。
【０１０４】
一方、ステップＳ２１６の判定における条件を満足しない場合（ステップＳ２１６でＮＯ）、指示具による入力がないとして、その旨を示すフラグ等をセットして、リターンする。
【０１０５】
図１９では、遮光範囲に対応する画素データ分布の立ち下がりと立ち上がりの検出を、ラインＣＣＤ４１の実際の画素の画素番号を用いて実行しているが、より精度を高めるために、上述の（４）、（５）、（６）式を用いた仮想的な画素番号を用いることも可能である。
【０１０６】
このように、指示具からの直接反射が発生していて、遮光範囲候補となる画素データ分布中の閾値を横切る立ち上がり点及び立ち下がり点が複数点検出される場合でも、最初に検出される立ち上がり点と最後に検出される立ち下がり点から得られる画素データ分布の中心点を、遮光範囲の中心点（中心画素番号）として検出することで、指示具からの直接反射の影響を考慮した精度の高い検出が可能になる。
【０１０７】
次に、図１９の処理によって得られた遮光範囲の中心点を示す中心画素番号から、実際の指示具の座標値を計算するためには、この中心画素番号を角度情報に変換する必要がある。
【０１０８】
後述する実際の座標算出処理では、角度そのものよりもその角度における正接（ｔａｎｇｅｎｔ）の値を求めるほうが都合がよい。
【０１０９】
ここで、画素番号からｔａｎθへの変換には、テーブル参照や変換式を用いる。特に、検出部４０内の光学系の収差がない場合は、一次変換などで可能であるが、収差などがある場合は高次の多項式を用いることで、収差の誤差を取り除くことができる。
【０１１０】
ここで、画素番号とｔａｎθとの関係について、図２０を用いて説明する。
【０１１１】
図２０は本発明の実施形態１の画素番号に対するｔａｎθ値の関係を示す図である。
【０１１２】
この図２０に基づいて、画素番号からｔａｎθを求めるための近似式を定義し、その近似式（変換式）を用いて画素番号からｔａｎθへの変換を行うことが可能となる。
【０１１３】
ここで、変換式はより高次の多項式を用いると精度を確保できるが、この多項式の次数などは、座標入力装置の計算能力および精度スペック等を鑑みて決定すればよい。
【０１１４】
例えば、５次多項式を用いる場合には、係数が６個必要になるので、出荷時などに、この係数データをメモリ８２に記憶しておけばよい。
【０１１５】
ここで、５次多項式の係数をＬ５，Ｌ４，Ｌ３，Ｌ２，Ｌ１，Ｌ０とすると、ｔａｎθは
2004280708.tif 000003
で示すことができる。
【０１１６】
これをセンサユニット１Ｌ及び１Ｒそれぞれの検出部４０のラインＣＣＤ４１で検出する画素番号に対して行えば、それぞれから対応する角度データ（ｔａｎθ）を決定できる。もちろん、上記例では、画素番号から直接ｔａｎθを求めるように構成しているが、画素番号から角度そのものを求め、その後、ｔａｎθを求めるような構成であっても良い。
【０１１７】
＜座標計算方法の説明＞
次に、画素番号から変換された角度データ（ｔａｎθ）から、指示具の位置座標を算出する。
【０１１８】
ここで、座標入力領域４上に定義する座標とセンサユニット１Ｌ及び１Ｌとの位置関係について、図２１を用いて説明する。
【０１１９】
図２１は本発明の実施形態１の座標入力領域上に定義する座標とセンサユニット１Ｌ及び１Ｌとの位置関係を示す図である。
【０１２０】
図２１では、座標入力領域４の座標入力範囲の下辺左右に、それぞれのセンサユニット１Ｌ及び１Ｒが取り付けられており、その間の距離はＤｓで示されている。
【０１２１】
座標入力領域４の中央が原点位置であり、Ｐ０はセンサユニット１Ｌ及び１Ｒそれぞれのセンサユニットの角度０の交点である。
【０１２２】
それぞれの角度をθＬ、θＲとして、それぞれｔａｎθＬ、ｔａｎθＲを上記（７）式を用いて算出する。
【０１２３】
このとき点Ｐ（ｘ，ｙ）座標は
2004280708.tif 000004
で計算される。
【０１２４】
以上の計算に基づく座標入力装置の座標算出処理について、図２２を用いて説明する。
【０１２５】
図２２は本発明の実施形態１の座標入力装置が実行する座標算出処理を示すフローチャートである。
【０１２６】
まず、座標入力装置の電源が投入されると、ステップＳ１０２で、制御・演算ユニット２のポート設定、タイマ設定等の座標入力装置に係る各種初期化を行う。
【０１２７】
ステップＳ１０３で、ラインＣＣＤ４１の初期読込動作の初期読込回数を設定する。
【０１２８】
尚、この初期読込動作は、座標入力装置の起動時におけるラインＣＣＤ４１の不要電荷除去を行うのための動作である。ラインＣＣＤ４１では、動作させていないときに不要な電荷を蓄積している場合があり、その電荷が蓄積されている状態で座標入力動作を実行すると、検出不能になったり、誤検出の原因となる。そこで、これを避けるために、ステップＳ１０３では、投光部３０による投光を停止している状態で、所定回数の読込動作を実行し、これにより、不要電荷の除去を行う。
【０１２９】
ステップＳ１０４で、ラインＣＣＤ４１の読込動作を実行する。ステップＳ１０５で、所定回数以上の読込を実行したか否かを判定する。所定回数以上の読込を実行していない場合（ステップＳ１０５でＮＯ）、ステップＳ１０４に戻る。一方、所定回数以上の読込を実行した場合（ステップＳ１０５でＹＥＳ）、ステップＳ１０６に進む。
【０１３０】
ステップＳ１０６で、第１リファレンスデータとして、投光部３０による投光を停止している状態でのラインＣＣＤ４１の画素データ（Ｂａｓ＿ｄａｔａ［Ｎ］）を取り込む。ステップＳ１０７で、その第１リファレンスデータをメモリ８２に記憶する。
【０１３１】
次に、ステップＳ１０８で、第２リファレンスデータとして、投光部３０からの投光を行っている状態でのラインＣＣＤ４１の画素データ（Ｒｅｆ＿ｄａｔａ［Ｎ］）を取り込む。ステップＳ１０９で、その第２リファレンスデータをメモリ８２に記憶する。
【０１３２】
ここまでの処理が、電源投入時の初期動作になり、以降の処理から指示具による入力における動作になる。
【０１３３】
ステップＳ１１０で、座標入力サンプリング状態で、ラインＣＣＤ４１の通常読込動作を実行して、画素データ（Ｎｏｒｍ＿ｄａｔａ［Ｎ］）を取り込む。ステップＳ１１１で、第２リファレンスデータ（Ｒｅｆ＿ｄａｔａ［Ｎ］）と画素データ画素データ（Ｎｏｒｍ＿ｄａｔａ［Ｎ］）の差分値を計算する。ステップＳ１１２で、その差分値に基づいて、指示具による入力の有無を判定する。入力がない場合（ステップＳ１１２でＮＯ）、ステップＳ１１０に戻る。一方、入力がある場合（ステップＳ１１２でＹＥＳ）、ステップＳ１１３に進む。
【０１３４】
尚、このときの繰り返し周期を１０［ｍｓｅｃ］程度に設定すれば、１００回／秒のサンプリングになる。
【０１３５】
ステップＳ１１３で、式（２）により、画素データの変化の比を計算する。ステップＳ１１４で、上述の図１９の特徴点検出処理を実行し、遮光範囲の中心となる中心画素番号を決定する。ステップＳ１１５で、決定された中心画素番号と（７）式よりＴａｎθを計算する。
【０１３６】
ステップＳ１１６で、センサユニット１Ｌ及び１Ｒに対するＴａｎθ値から、指示具の入力座標Ｐ（ｘ，ｙ）を（８）、（９）式を用いて算出する。
【０１３７】
次に、ステップＳ１１７で、指示具による入力がタッチダウン入力であるか否かを判定する。
【０１３８】
これは、例えば、指示具による入力機能として、マウスのボタンを押下せずにカーソルを移動させる状態に相当する近接入力状態と、マウスの左ボタンを押下した状態に相当するタッチダウン状態を設定している場合に、その指示具による入力状態がどちらの状態であるかを判定する。この２種類の入力状態は、例えば、ステップＳ１１３で算出した画素データの変化の比の最大値が、所定値（例えば、０．５）以上である場合にはタッチダウン状態とし、所定値未満である場合には近接入力状態と判定する。あるいは、専用の指示具などを用いる場合には、画素データではなく、他の手段をもちいてもよい。例えば、指示具先端にスイッチなどを設け、その状態を、電波や光などを用いて送受信し、タッチダウンなどの判定を行ってもよい。
【０１３９】
このような判定方法に基づいて、ステップＳ１１７で、指示具による入力がタッチダウン入力である場合（ステップＳ１１７でＹＥＳ）、ステップＳ１１８に進み、タッチダウン入力であることを示すダウンフラグをセットする。一方、指示具による入力がタッチダウン入力でない場合（ステップＳ１１７でＮＯ）、ステップＳ１１９に進み、ダウンフラグを解除する。
【０１４０】
ステップＳ１２０で、ダウンフラグの状態と算出した座標値を外部端末へ出力する。そして、外部端末では、受信した座標値とダウンフラグの状態に基づいて、例えば、カーソルの移動、マウスボタン状態の変更を行う。
【０１４１】
尚、ステップＳ１２０の処理が終了したら、ステップＳ１１０に戻り、以降、電源ＯＦＦまで、上記の処理を繰り返す。
【０１４２】
以上説明したように、実施形態１によれば、再帰性反射部材３の反射を介在しない指示具からの直接反射光をセンサユニット１Ｌ及び１Ｒを受光するような場合でも、その直接反射光の影響を受けずに精度良く座標を算出することができる。
【０１４３】
つまり、実施形態１では、センサユニット１Ｌ及び１Ｒから得られる、指示具による遮光範囲候補となる画素データ分布中の閾値を横切る複数の立ち上がり点および立ち下がり点を検出した場合には、その画素データ分布で最初に検出される立ち上がり点と最後に検出される立ち下がり点から得られる画素データ分布の中心点を、遮光範囲の中心点（中心画素番号）として検出することで、指示具からの直接反射の影響を考慮した精度の高い検出が可能になる。
【０１４４】
＜＜実施形態２＞＞
実施形態１では、不特定の指示具からの直接反射光の影響を排除するため、センサユニット１Ｌ及び１Ｒから得られる指示具による遮光範囲候補となる画素データ分布中の閾値を横切る複数の立ち上がり点と立ち下がり点を検出し、それらの内の、センサユニット１Ｌあるいは１Ｒに対する入射光の最小角度に相当する最初の立ち上がり点と入射光の最大角度に相当する最後の立ち下がり点の中間点を、指示具の入力点として、指示具とセンサユニット１Ｌあるいは１Ｒに対する角度を計算するように構成した。
【０１４５】
この構成は見方を代えれば、画素データ分布から複数の立ち上がり点と立ち下がり点を検出できることを意味している。そこで、実施形態２では、このことを利用して、画素データ分布中に意図的な立ち上がり点及び立ち下がり点を生成させ、その有無に基づいて、単なる指示具の入力位置の位置情報を検出する以外に、その意図的な立ち上がり点及び立ち下がり点を生成することによって、位置情報以外の情報入力を実現する構成について説明する。
【０１４６】
これを実現する場合には、実施形態２では、例えば、図２３のような指示具を用いる。
【０１４７】
図２３は本発明の実施形態２の指示具の構成例を示す図である。
【０１４８】
図２３において、２３１は指示具筐体であり、センサユニット１Ｌ及び１Ｒからの入射光の直接反射を抑止する表面処理あるいは材質で構成されている。２３２は赤外ＬＥＤであり、指示具２３１のペンスイッチ２３３の押下によって点灯するように構成されている。赤外ＬＥＤ２３２から発光される光は、円錐形の反射部材２３４によって、座標入力領域４に対して略平行な方向に放射される構成になっている。
【０１４９】
尚、図２３では、赤外ＬＥＤ等を駆動するためのドライブや電源等は図示していない。
【０１５０】
このような指示具２３１を用いて入力を行うと、通常は、図２４の実線２４１のように、センサユニット１Ｌ及び１Ｒから得られる光量分布では、閾値Ｖｔｈを横切る立ち上がり点及び立ち下がり点ともに一つずつ検出される。
【０１５１】
この状態で、指示具２３１のペンスイッチ２３３を押下すると、赤外ＬＥＤ２３２から発光される光によって、図中点線で示す波形２４２がセンサユニット１Ｌ及び１Ｒで検出されることになる。そして、この波形２４２に対して、閾値Ｖｔｈを横切る立ち上がり点及び立ち下がり点の検出を行うと、複数の立ち上がり点及び立ち下がり点が検出されることになる。
【０１５２】
また、この波形２４２は、この赤外ＬＥＤ２３２から発光する光の発光量によって変化する。そこで、実施形態２では、この発光量と、それに対応する波形２４２を予め対応付けておくことで、ペンスイッチ２３３の押下の有無を検出したり、その押下に対応付けられたスイッチ情報を検出することが可能となる。また、ペンスイッチ２３３の押下時間に応じて発光量を制御し、制御される発光量に対して様々なスイッチ情報を割り当てておくことも可能である。
【０１５３】
以下、図２３の指示具２３１による入力を行う場合に、センサユニット１Ｌ及び１Ｒから得られる画素データ分布中の特徴点を検出する特徴点検出処理について、図２５を用いて説明する。
【０１５４】
図２５は本発明の実施形態２の特徴点検出処理を示すフローチャートである。
【０１５５】
まず、この特徴点検出処理を、実施形態１の図２２の座標算出処理のサブルーチンとして呼び出す。
【０１５６】
ステップＳ３０２で、センサユニット１Ｌ（１Ｒ）の検出部４０のラインＣＣＤ４１を構成する画素の画素番号を示すカウンタＣｎｔ、スイッチ情報の有無を示すスイッチフラグＳＷ（０：スイッチ情報検出状態、１：スイッチ情報未検出状態）をそれぞれＣｎｔ＝０、ＳＷ＝１に初期化する。
【０１５７】
ステップＳ３０３で、カウンタＣｎｔをインクリメントする。
【０１５８】
ステップＳ３０４で、カウンタＣｎｔの値が示す画素番号が、ラインＣＣＤ４１の検出範囲の有効範囲外であるか否かを判定する。有効範囲外である場合（ステップＳ３０４でＹＥＳ）、ステップＳ３２３へ進む。一方、有効範囲内である場合（ステップＳ３０４でＮＯ）、ステップＳ３０５に進み、カウンタＣｎｔの値が示す画素番号の画素データ（Ｄａｔａ）を読み込む。
【０１５９】
ステップＳ３０６で、画素データ（Ｄａｔａ）が閾値Ｖｔｈ以上であるか否かを判定する。閾値Ｖｔｈ未満である場合（ステップＳ３０６でＮＯ）、ステップＳ３０３に戻り、カウンタＣｎｔをインクリメントして、そのカウンタＣｎｔの値が示す画素番号が有効範囲内であれば、ステップＳ３０５で、処理対象として、カウンタＣｎｔの値が示す次の画素番号の画素データ（Ｄａｔａ）を読み込み、以降、同様の処理を実行する。一方、閾値Ｖｔｈ以上である場合（ステップＳ３０６でＹＥＳ）、ステップＳ３０７に進む。
【０１６０】
ステップＳ３０７で、現在のカウンタＣｎｔの値が示す画素番号の画素データ（Ｄａｔａ）を画素データ分布中の閾値Ｖｔｈを横切る最初の立ち上がりデータｒ０としてメモリ８２に記憶する。
【０１６１】
次に、ステップＳ３０８で、カウンタＣｎｔをインクリメントする。ステップＳ３０９で、カウンタＣｎｔの値が示す画素番号が、ラインＣＣＤ４１の検出範囲の有効範囲外であるか否かを判定する。有効範囲外である場合（ステップＳ３０９でＹＥＳ）、ステップＳ３２３へ進む。一方、有効範囲内である場合（ステップＳ３０９でＮＯ）、ステップＳ３１０に進み、カウンタＣｎｔの値が示す画素番号の画素データ（Ｄａｔａ）を読み込む。
【０１６２】
ステップＳ３１１で、画素データ（Ｄａｔａ）が閾値Ｖｔｈ未満であるか否かを判定する。閾値Ｖｔｈ以上である場合（ステップＳ３１１でＮＯ）、ステップＳ３０８に戻り、カウンタＣｎｔをインクリメントして、そのカウンタＣｎｔの値が示す画素番号が有効範囲内であれば、ステップＳ３１０で、処理対象として、カウンタＣｎｔの値が示す次の画素番号の画素データ（Ｄａｔａ）を読み込み、以降、同様の処理を実行する。一方、閾値Ｖｔｈ未満である場合（ステップＳ３１１でＹＥＳ）、ステップＳ３１２に進む。
【０１６３】
ステップＳ３１２で、現在のカウンタＣｎｔの値が示す画素番号の画素データ（Ｄａｔａ）を画素データ分布中の閾値Ｖｔｈを下がる最初の立ち下がりデータｆ０としてメモリ８２に記憶する。
【０１６４】
以降、同様の処理を、ステップＳ３１３〜ステップＳ３２２で実行することで、２つ目の立ち上がりデータｒ１を検出してメモリ８２に記憶し（ステップＳ３１７）、２つ目の立ち下がりデータｆ１を検出しメモリ８２に記憶する（ステップＳ３２２）。
【０１６５】
尚、２つ目の立ち上がりデータｒ１や２つ目の立ち下がりデータｆ１を検出する前に、カウンタＣｎｔの値が示す画素番号が有効範囲外になってしまった場合には、それらの検出を行わずにステップＳ３２３にジャンプする。
【０１６６】
そして、有効範囲内の画素データ（Ｄａｔａ）に対する処理が完了したら、立ち上がりデータ及び立ち下がりデータの有無をチェックする。
【０１６７】
つまり、ステップＳ３２３で、立ち上がりデータｒ０と立ち下がりデータｆ１の両データの有無を判定する。立ち上がりデータｒ０と立ち下がりデータｆ１の両データがある場合（ステップＳ３２３でＹＥＳ）、画素データ分布中の閾値Ｖｔｈを横切る立ち上がり点と立ち下がり点とも複数回検出されていることになるので、スイッチ２３３が押下されている状態の指示具２３１による入力と判定して、メモリ８２に記憶されている立ち上がりデータｒ０と立ち下がりデータｆ１の中間点Ｎｐ（＝（ｒ０＋ｆ１）／２）を計算するとともに、ＳＷ＝０にセットする。
【０１６８】
一方、立ち上がりデータｒ０と立ち下がりデータｆ１の両データがない場合（ステップＳ３２３でＮＯ）、ステップＳ３２５に進む。
【０１６９】
ステップＳ３２５で、立ち上がりデータｒ０と立ち下がりデータｆ０の両データの有無を判定する。立ち上がりデータｒ０と立ち下がりデータｆ０の両データがある場合（ステップＳ３２５でＹＥＳ）、スイッチ２３３が押下されない状態の指示具２３１による入力と判定して、メモリ８２に記憶されている立ち上がりデータｒ０と立ち下がりデータｆ０の中間点Ｎｐ（＝（ｒ０＋ｆ０）／２）を計算するとともに、ＳＷ＝１にセットする。
【０１７０】
一方、立ち上がりデータｒ０と立ち下がりデータｆ０の両データがない場合（ステップＳ３２５でＮＯ）、指示具２３１による入力がないと判定して、リターンする。
【０１７１】
以上説明したように、実施形態２によれば、実施形態１で説明した効果に加えて、センサユニット１Ｌ及び１Ｒで得られる画素データ分布中に意図的な立ち上がり点及び立ち下がり点を生成するような指示具を構成することで、単なる指示具の入力位置の位置情報を検出する以外に、位置情報以外の情報入力を実現することができる。
【０１７２】
尚、実施形態２では、閾値Ｖｔｈを用いて画素データ分布中でその閾値Ｖｔｈを横切る立ち上がり点及び立ち下がり点を検出して、それらの立ち上がり点及び立ち下がり点が複数存在するか否かでスイッチ情報を検出するように構成していたが、指示具からの直接反射光を考慮する場合には、位置検出のための閾値だけでなく、ペン発光を検出するための閾値をもってレベル変化を検出することで、立ち上がり点および立下り点を特定するように構成しても、同様の効果を得ることが可能である。
【０１７３】
また、実施形態２の構成では、例えば、スイッチを押下していない状態でも２つの指示具２３１を用いて入力がなされると、図２４のような検出結果が得られてしまう場合がある。この場合、図２５の処理を実行すると、一方の指示具の入力を他方の指示具のスイッチ情報として誤検出する可能性がある。そこで、２つ以上の指示具からの入力を想定する場合には、検出される立ち下がりデータｆ０と立ち上がりデータｒ１の差が所定値以上の場合には、２つの指示具２３１による入力であると判定して、対応する立ち上がりデータ及び立ち下がりデータを用いて、各指示具の入力位置を特定するように構成しても良い。
【０１７４】
上記実施形態１及び２に係る実施態様を列挙すると、次の通りである。すなわち、座標入力装置及びその制御方法、プログラムは、次のようになる。
【０１７５】
＜実施態様１＞  座標入力領域上の指示位置を算出する座標入力装置であって、
前記座標入力領域の角部に設けられた受光手段と、
前記座標入力領域の周辺部に設けられ、入射光を再帰的に反射する反射手段と、
前記座標入力領域に光を照明する発光手段と、
前記受光手段から得られる光量分布において、所定レベルを横切る点に対応する角度情報を算出する角度算出手段と、
前記角度算出手段で算出される複数の角度情報それぞれが示す角度の内、最小角度と最大角度間の中心となる中心角度に基づいて、指示位置の座標を算出する算出手段と
を備えることを特徴とする座標入力装置。
【０１７６】
＜実施態様２＞  前記受光手段は、複数の受光手段から構成され、
前記角度算出手段は、前記複数の受光手段それぞれが出力する光量分布毎に、所定レベルを横切る点に対応する角度情報を算出し、
前記算出手段は、前記複数の受光手段それぞれが出力する光量分布毎に前記角度算出手段で算出される複数の角度情報それぞれが示す角度の内、最小角度と最大角度間の中心となる中心角度に基づいて、指示位置の座標を算出する
ことを特徴とする実施態様１に記載の座標入力装置。
【０１７７】
＜実施態様３＞  前記光量分布は、初期状態で前記受光手段から得られる光量分布と座標入力サンプリング状態で前記受光手段から得られる光量分布との変化の比で示される光量分布である
ことを特徴とする実施態様１に記載の座標入力装置。
【０１７８】
＜実施態様４＞  前記角度算出手段は、前記受光手段から得られる光量分布において、前記所定レベルを横切る点として、該所定レベルから立ち上がる立ち上がり点と該所定レベルへ立ち下がる立ち下がり点を検出する検出手段と、
前記検出手段による検出結果に基づいて、スイッチ情報を出力する出力手段と
を備えることを特徴とする実施態様１に記載の座標入力装置。
【０１７９】
＜実施態様５＞  前記受光手段は、それぞれに素子番号が付与されている複数の受光素子から構成されるセンサであり、
前記角度算出手段は、前記受光手段から得られる光量分布において、前記所定レベルを横切る点として、該所定レベルから立ち上がる立ち上がり点と該所定レベルへ立ち下がる立ち下がり点を検出する検出手段と、
前記検出手段で検出した立ち上がり点と立ち下がり点それぞれに対応する素子番号を取得する取得手段とを備え、
前記取得手段で取得した素子番号に対応する角度情報を算出する
ことを特徴とする実施態様１に記載の座標入力装置。
【０１８０】
＜実施態様６＞  前記受光手段は、それぞれに素子番号が付与されている複数の受光素子から構成されるセンサであり、
前記角度算出手段は、前記受光手段から得られる光量分布において、前記所定レベルを横切る点として、該所定レベルから立ち上がる立ち上がり点と該所定レベルへ立ち下がる立ち下がり点を検出する検出手段と、
前記検出手段で検出した立ち上がり点と立ち下がり点それぞれに対応する素子番号を取得する取得手段と、
前記取得手段で取得した素子番号と該素子番号の受光素子に隣接する隣接受光素子の素子番号から、仮想的な仮想素子番号を算出する算出手段とを備え、
前記算出手段で算出した仮想素子番号に対応する角度情報を算出する
ことを特徴とする実施態様１に記載の座標入力装置。
【０１８１】
＜実施態様７＞  座標入力領域の角部に設けられた受光部と、該座標入力領域の周辺部に設けられ、入射光を再帰的に反射する反射部と、該座標入力領域に光を照明する発光部を有し、該座標入力領域上の指示位置を算出する座標入力装置の制御方法であって、
前記受光部から得られる光量分布において、所定レベルを横切る点に対応する角度情報を算出する角度算出工程と、
前記角度算出工程で算出される複数の角度情報それぞれが示す角度の内、最小角度と最大角度間の中心となる中心角度に基づいて、指示位置の座標を算出する算出工程と
を備えることを特徴とする座標入力装置の制御方法。
【０１８２】
＜実施態様８＞  座標入力領域の角部に設けられた受光部と、該座標入力領域の周辺部に設けられ、入射光を再帰的に反射する反射部と、該座標入力領域に光を照明する発光部を有し、該座標入力領域上の指示位置を算出する座標入力装置の制御を実現するプログラムであって、
前記受光部から得られる光量分布において、所定レベルを横切る点に対応する角度情報を算出する角度算出工程のプログラムコードと、
前記角度算出工程で算出される複数の角度情報それぞれが示す角度の内、最小角度と最大角度間の中心となる中心角度に基づいて、指示位置の座標を算出する算出工程のプログラムコードと
を備えることを特徴とする座標入力装置の制御方法。
【０１８３】
以上、実施形態例を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能であり、具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１８４】
尚、本発明は、前述した実施形態の機能を実現するソフトウェアのプログラム（実施形態では図に示すフローチャートに対応したプログラム）を、システムあるいは装置に直接あるいは遠隔から供給し、そのシステムあるいは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【０１８５】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１８６】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【０１８７】
プログラムを供給するための記録媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【０１８８】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１８９】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【０１９０】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現され得る。
【０１９１】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施形態の機能が実現される。
【０１９２】
【発明の効果】
以上説明したように、本発明によれば、座標を精度良く検出することができる座標入力技術を提供することができる。
【図面の簡単な説明】
【図１】本発明の実施形態１の座標入力装置の概略構成を示す図である。
【図２】本発明の実施形態１の再帰反射部材の動作を説明するための図である。
【図３】本発明の実施形態１のセンサユニットの投光部の構成例を示す図である。
【図４】本発明の実施形態１のセンサユニットの検出部の構成例を示す図である。
【図５】本発明の実施形態１のセンサユニットの構成例を示す図である。
【図６】本発明の実施形態１の再帰反射部材への入射角度に対する再帰反射特性を示す図である。
【図７】本発明の実施形態１の再帰反射部材の構成例を示す図である。
【図８】本発明の実施形態１の制御・演算ユニットの詳細構成を示すブロック図である。
【図９】本発明の実施形態１の制御信号のタイミングチャートである。
【図１０】本発明の実施形態１のセンサユニットによって得られる光量分布の一例を示す図である。
【図１１】本発明の実施形態１の入力がなされた場合にセンサユニットによって得られる光量分布の一例を示す図である。
【図１２】本発明の実施形態１の入力例を説明するための図である。
【図１３】本発明の実施形態１のセンサユニットによって得られる光量分布の光量変化を説明するための図である。
【図１４】本発明の実施形態１のセンサユニットによって得られる光量分布における光量変化量と光量変化比を説明するための図である。
【図１５】本発明の実施形態１の遮光範囲の検出例を示す図である。
【図１６】本発明の実施形態１の指示具からの直接反射を説明するための図である。
【図１７】本発明の実施形態１の指示具からの直接反射がある場合にセンサユニットによって得られる光量分布の一例を示す図である。
【図１８】本発明の実施形態１の光量分布における複数の立ち上がり及び立ち下がりを検出する場合を説明するための図である。
【図１９】本発明の実施形態１の特徴点検出処理を示すフローチャートである。
【図２０】本発明の実施形態１の画素番号に対するｔａｎθ値の関係を示す図である。
【図２１】本発明の実施形態１の座標入力領域上に定義する座標とセンサユニット１Ｌ及び１Ｌとの位置関係を示す図である。
【図２２】本発明の実施形態１の座標入力装置が実行する座標算出処理を示すフローチャートである。
【図２３】本発明の実施形態２の指示具の構成例を示す図である。
【図２４】本発明の実施形態２の指示具からスイッチ情報を出力した場合にセンサユニットによって得られる光量分布の一例を示す図である。
【図２５】本発明の実施形態２の特徴点検出処理を示すフローチャートである。
【符号の説明】
１Ｌ、１Ｒ  センサユニット
２  制御・演算ユニット
３  再帰性反射部材
４  座標入力領域
【図１】
2004280708.tif 000005
【図２】
2004280708.tif 000006
【図３】
2004280708.tif 000007
【図４】
2004280708.tif 000008
【図５】
2004280708.tif 000009
【図６】
2004280708.tif 000010
【図７】
2004280708.tif 000011
【図８】
2004280708.tif 000012
【図９】
2004280708.tif 000013
【図１０】
2004280708.tif 000014
【図１１】
2004280708.tif 000015
【図１２】
2004280708.tif 000016
【図１３】
2004280708.tif 000017
【図１４】
2004280708.tif 000018
【図１５】
2004280708.tif 000019
【図１６】
2004280708.tif 000020
【図１７】
2004280708.tif 000021
【図１８】
2004280708.tif 000022
【図１９】
2004280708.tif 000023
【図２０】
2004280708.tif 000024
【図２１】
2004280708.tif 000025
【図２２】
2004280708.tif 000026
【図２３】
2004280708.tif 000027
【図２４】
2004280708.tif 000028
【図２５】
2004280708.tif 000029