以下に本発明の上位概念、中位概念および下位概念の理解に役立つ一実施形態を示す。なお、以下の実施形態に含まれる概念について、そのすべてが特許請求の範囲に記載されているとは限らない。ただし、これは特許発明の技術的範囲から意識的に除外したのではなく、特許発明と均等の関係にあるため特許請求の範囲には記載していない場合があることを理解していただきたい。
[第1の実施形態]
本実施形態では、複数の指示手段によりそれぞれ並行して入力される座標位置を検出し、検出された複数の座標位置について、入力の連続性と、入力に使用された指示手段とを認識し、さらに認識された入力の連続性に関する識別情報、認識された指示手段の識別情報、および座標位置を表す座標データを出力する座標データ出力方法について説明する。
図1は、本実施形態に係る座標入力装置の概略構成を示す図である。図中1L、1R、1CL、1CRは、投光ユニットおよび検出ユニットを含むセンサユニットであり、それぞれ所定の距離だけ離されて設置されている。センサユニット1L、1R、1CL、1CRは、制御・演算を行なう制御・演算ユニット2に接続されている。センサユニット1L、1R、1CL、1CRは、制御・演算ユニット2から制御信号を受信すると共に、検出した信号を制御・演算ユニット2に送信する。受光IC5は、指示具の一例である発光ペン6から指示具の識別情報等を受信する受信回路である。インタフェース7は、本座標入力装置を外部にあるホスト(描画処理装置としてのパーソナルコンピュータ)と接続して通信を行なう通信回路と通信ケーブルである。通信回路の部分は制御・演算ユニット2に内蔵してもよい。
図2は、本実施形態に係る反射ユニットの再帰反射特性を説明する図である。反射ユニット3は、再帰反射面有する再帰反射部材を含んでいる。図2に示すように投光ユニットからの入力パネルに沿って投光された光は、この再帰反射面によって到来方向へと反射される。このようにして反射ユニット3は、それぞれのセンサユニット1L、1R、1CL、1CRから略90°の範囲に投光された光を、それぞれ対応するセンサユニット1L、1R、1CL、1CRに向けて再帰反射する。入力領域を最大限に確保するためには、入力パネルの周縁に反射ユニット3を配設することが望ましい。
反射された光は、センサユニット1L、1R、1CL、1CRにそれぞれ含まれる検出ユニットによって検出される。各検出ユニットは、結像光学系と光検知素子(たとえばラインCCDなど)等によって構成されている。検出ユニットによって1次元的に検出された反射光は、光量分布のデータとして制御・演算ユニット2に送信される。
4は入力領域を構成するパネルである。当該パネルを、PDP、リアプロジェクタ、またはLCDパネルなどの表示装置の表示画面で構成すれば、インタラクティブな入力装置を提供できよう。
このような構成において、入力領域に対して、指や指示具などを用いて座標位置が指示されると、上記投光ユニットから投光された光が指示具等により遮られるので、検出ユニットでは、遮られた部分からの反射光が得られなくなる。すなわち、反射光量分布のうち、入力座標位置に対応する角度のみ、光量が相対的に落ち込むことになる。この角度の方向に入力座標位置が存在することになる。
この原理に従い、制御演算ユニット2は、複数のセンサユニットのそれぞれからの反射光量分布のうち光量レベルが相対的に落ち込んだ部分を入力座標位置として決定する。制御・演算ユニット2は、たとえば、入力指示された部分の遮光範囲を検出し、遮光範囲内での検出点を特定することで、検出点の角度を算出する。検出点は、たとえば、遮光範囲の中央を選択すればよいだろう。そして、制御・演算ユニット2は、算出された角度および、センサユニット間の距離データ等から、入力領域における座標位置を算出する。制御・演算ユニット2は、表示装置に接続されているPCなどに、USBなどのインタフェース7を経由して座標値のデータを出力する。
なお、指などの指示手段ではなく、ペンダウン検出スイッチを有するような専用の入力指示具を用いると、尾引きなどのない座標入力や描画を行なうことができる。発光ペン6は、専用指示具の一例であり、ペン先スイッチあるいはペンサイドに設けられたスイッチが押下されると、ペン6に内蔵された赤外LEDが発光して、スイッチ情報や自身のID情報などを送信する。送信された光信号は、集光光学系を有する受信ユニットである受光IC5によって検出される。受光IC5によって検出された信号は、制御・演算ユニット2に送信される。制御・演算ユニット2は、受信したペンダウンなどの情報や指示具の識別情報(PID)に加え、入力の連続性を表す識別情報(CID)などを判別し、座標値のデータとともに出力する。これらのデータを、PCなどの描画処理装置が受信し、描画データを作成して表示装置に出力することで、表示装置の画面上に線や文字を描画したり、アイコンの操作などPCを操したりすることが可能となる。以降では、ユニットごとに詳細な説明を行なう。
<センサユニットの詳細説明>
図3は、本実施形態に係るセンサユニットに含まれる投光ユニットの構成例を示す図である。(a)は、投光ユニットを上から(入力面に対し垂直方向)から見た上面図である。赤外LED31は赤外光を発する発光素子であり、発光した光は投光レンズ32によって、略90°範囲に光を投光する。一方、(b)は投光ユニットを横から見た断面図である。すなわち、入力面に対し水平方向では、赤外LED31からの光は上下方向に制限された光束として投光され、主に、再帰反射ユニット3に対して光が投光されるようになっている。要するに、投光ユニットからの光は入力パネルに沿って投光されることになる。
図4は、本実施形態に係るセンサユニットの検出ユニットを入力パネルに対して垂直方向から見た上面図である。検出ユニットは、1次元のラインCCD41および結像光学系としてのレンズ42および、入射光の入射方向を制限する絞り43、可視光など余分な光の入射を防止する赤外フィルター44を有している。
投光ユニットからの光は再帰反射ユニット3によって反射され、赤外フィルター44、絞り43を透過する。そして、結像用レンズ42によって入力面の略90°範囲にある光がCCD41の検出面に入射する。入射角に対応した画素上に入射光が結像され、角度ごとの光量分布に関するデータとして出力される。つまり画素番号が角度情報を表すことになる。
図5は、入力面に対して水平方向から見たときのセンサユニットを示す上面図である。投光ユニットと検出ユニットの光軸間の距離は、再帰反射ユニット3の角度特性を考慮し反射光を充分に検出できるような値に設定されればよい。
<制御・演算ユニットの説明>
図1に示した制御・演算ユニット2とセンサユニット1L、1R、1CL、1CRとの間では、CCDの制御信号、CCD用クロック信号、CCDの出力信号、およびLEDの駆動信号が送受されている。
図6は、本実施形態に係る制御・演算ユニットのブロック図である。ワンチップマイコンなどで構成される演算制御回路(CPU)21は、CCD制御信号を出力することで、CCDのシャッタタイミングや、データの出力制御などをおこなっている。CCD用のクロックはクロック発生回路22から各センサユニットに送出される。
検出ユニットとして機能するCCDからの検出信号は、制御・演算ユニット2のADコンバータ23に入力され、演算制御回路21からの制御によってデジタル値に変換される。変換されたデジタル値はRAM25に記憶され、角度計算に用いられる。
演算制御回路21は、RAM25からデジタル値を読み出して角度を算出し、さらに当該角度に基づいて座標値を算出する。演算制御回路21は、外部PCなどにシリアルインタフェース7などを介して算出した座標値のデータを出力する。
受光IC5は、発光ペン6からの光信号を受信し復調してデジタル信号を出力する。この出力信号は、ペンスイッチ信号検出回路として機能するサブCPU24に入力される。サブCPU24は、当該信号を解析し、発光ペン6の識別情報などの解析結果を演算制御回路21に出力する。
<光量分布検出の説明>
図7は、制御信号のタイミングチャートである。71、72および73は、それぞれCCD制御用の制御信号であり、とりわけ、SH信号71の間隔で、CCDのシャッタ解放時間が決定される。72,73はそれぞれのセンサユニットへのゲート信号であり、CCD内部に含まれる光電変換部の電荷を読み出し部へ転送する信号である。
74,75は左右のLEDの駆動信号である。SH信号71の最初の周期に同期して、駆動信号74が一方のLED(LとCL)に供給され、当該LEDが点灯する。次の周期で、駆動信号75が他方のLED(RとCR)に供給され、当該LEDが点灯する。双方のLEDの駆動が終了すると、読み出し期間に移行してCCDの信号が夫々読み出される。
4つあるセンサユニットについて、上述の例では、L,CLを一つの組として同時に点灯し、次にR,CRを一つの組として点灯しているが、本発明はこれに限定されるわけではない。処理時間に余裕があれば、4つのセンサユニットをそれぞれ別々に駆動してもよい。センサユニット間で発光が相互に影響しないように各センサユニットを配置するのであれば、これらを同時に駆動してもよい。
図8は、実施形態における光量分布の一例を示す図である。とりわけ、この例は、指示具による座標入力が無い場合を示している。この図では、横軸が検出角度に相当し、縦軸が光量(上が光量小、下が光量大)を表している。81は、無投光時の反射光量分布(背景光の光量分布)を示しており、82は、遮蔽物の無い投光時の反射光量分布を示している。同図においては、Aのレベルが最大光量であり、Bのレベルが最低光量である。つまり反射光のない状態では、得られるレベルがB付近になり、反射光量が増えるほどAのレベルに近づいてゆく。このようにCCDから出力されたデータは、逐次AD変換され、CPU12にデジタルデータとして取り込まれる。
図9は、2つの指示具などで反射光を遮ったときのセンサ出力の例を示す図である。C1、C2の部分は、複数の指示具などで反射光が遮られたことにより、相対的に光量が低下していることがわかる。指示具等により指示された座標位置は、この光量分布の変化から検出する。
たとえば、図8で示したように無入力状態での光量分布を予めRAM25に記憶しておき、この無入力状態の光量分布から、サンプル期間に得られた光量分布との差分を算出する。そして、相対的に光量が低下している部分(C1,C2)があると、その部分が指示具により指示された座標位置と判別され、対応する入力角度を算出する。
<角度計算出の説明>
角度計算にあたっては、まず、遮光範囲を検出する必要がある。以降では、一つのセンサのデータについて説明するが、他のセンサでも同様の処理を行っている。
電源投入時の光量分布を示すデータ(図8)をRAM25に記憶しておき、その分布との比較から入力範囲を検出する。
CPU21は、C1,C2の部分で指示入力がなされた光量分布(図9)と、予め記憶しておいた初期時の光量分布との差を算出する。この差、と初期時の光量分布における各画素のレベルとの比から、光量分布の変化率を算出する。このような変化率を計算することによって、部分的な光量分布の不均一などの影響を除去できる。
図10は、算出された光量分布の変化率の一例を示す図である。このように計算された変化率に対して閾値などを用い、CPU21は、変化した部分に相当するCCD画素の番号(画素番号)を特定する。変化している画素が複数特定された場合には、複数ある画素のうち中央の画素を、入力座標位置に対応する画素として決定できる。
得られた中央画素の画素番号から、実際の座標値を計算するためには、角度情報に変換する必要がある。角度情報への変換は、たとえば、多項式を用いればよい。画素番号をe、次数をn、各次数の係数をTnとすれば、算出式は次のとおりである。
θ=Tn・en+T(n−1)・e(n−1)+T(n−2)・e(n−2)+・・・+T0 (1)
各次数の係数は、実測や設計値などから決定できる。また、次数は必要とされる座標精度を考慮して決定すればよい。なお、後述する座標計算では、角度θそのものよりもその角度における正接(tangent)の値を求めるほうが都合がよい。また、tanθへの変換には、テーブルを参照して変換したり、変換式を用いて変換したりすればよい。
ここで、センサユニットの取り付け誤差などを補正するため基準データを用いる。センサの中心方向への入力などを行なうことによって、基準の角度データθorgをあらかじめRAM25に記憶しておく。この値と入力の中心の角度θから、基準角度からの角度θcは
θc = θ−θorg (2)
となる。この値のTanθへの変換には、たとえば次に示すようなマクローリン展開などの級数展開式を用いることができる。
Tanθc=θc+1/3・θc3+2/15・θc5+17/315・θc7+62/2835・θc9・・・ (3)
<座標計算方法の説明>
次に、得られた角度データから座標値を算出する。図11は、入力座標位置と各センサとの関係を示す図である。この例では、入力座標位置は一点であり、センサユニットとしてLセンサとRセンサだけを考慮している。入力パネルの上辺左右にセンサユニット1L,1Rがそれぞれ取り付けられており、その間の距離はDLRである。
画面(入力パネル)中央が画面の原点位置であり、P0は、各センサユニットから角度0となる各直線の交点である。すなわち、基準角度の交点である。それぞれの角度をθL、θRとして、それぞれtanθL,tanθRを上記多項式を用いて算出する。
このとき点Pのx、y座標は次の式から算出できる。
x = DLR /2* (tanθL+ tanθR) / (1+( tanθL * tanθR) ) (4)
y = DLR /2* (tanθR − tanθL −(2* tanθL* tanθR)) / (1+( tanθL * tanθR))+P0Y (5)
図12は、複数の入力座標位置P1,P2がある場合の各センサとの関係を示す図である。本実施形態では、P1,P2ともにL,Rセンサの組で計算することができる。ただし、2つの座標位置が並行して指示されると、L,Rセンサはそれぞれ2つの角度を検出してしまうので、計算され得る座標値は4個所になる(図12参照)。このうち2つP1,P2が実際の入力座標であり、残り二つP3,P4は虚像の座標値となる。この虚実を判定するために、中央のセンサCRまたはCLを用いる。
たとえば、図12においては、CRセンサの角度情報θcr1、θcr2が得られているものとする。CRから見て、計算された座標値がこの角度情報θcr1、θcr2の方向にあるか否かを判定することによって、P1およびP2の座標位置が実像と判定できる。そして残りのP3とP4を虚像と判定できる。このように本発明によれば、3以上の検出ユニットを設けることで、同時並行的に複数の座標入力がなされたとしても、それぞれ正確に座標位置を決定することが可能となる。
図12によれば、CRセンサの座標値をXcr,Ycrとすると、P1(X1,Y1)との角度の間には次の関係が成り立つ。
(Y1−Ycr)/(X1−Xcr) = tanθcr1 (X1 ≠ Xcr1) (6)
よって、上の式の座標値から算出される正接の値と、CRセンサからの角度情報から算出した正接とを比較することによって実像か虚像かを判定できる。X座標が等しい場合には、CLなどの他のセンサからのデータを用いて判定したり、あるいはCRセンサと同一のX座標であることを利用して判定したりすればよい。
図13は、複数の入力座標位置があるにかかわらず、あるセンサからは一つの入力座標位置しか検出できない場合の一例を示す。この例では、Rセンサからは、P1おおびP2とも同一の角度に位置しているため、複数の座標位置が入力されていることを認識できない。そこで、このような場合にはセンサの組を変更して計算すればよい。たとえば、LセンサとCRセンサとを新たな組として座標値を計算し、CLセンサまたはRセンサのデータで虚実判定を行えばよい。
中央のセンサCLまたはCRを用いた場合も座標値は上記LとRの場合と同様に計算可能である。また、使用されるセンサの組み合わせに応じて、CPU21は、DLCR、DRCLなど、好適なセンサ間距離をRAM25または不図示のROMから読み出して使用する。
また、座標値については、選択した2つのセンサの基準角度の交点が0となるので、入力エリア原点からこの点までの距離をオフセット分として勘案する必要がある。
座標計算に用いられるセンサ組は、たとえば検出された影の数などを判別して、決定すればよい。たとえば図12の場合であれば、各センサともに2つずつの影が検出されるので、どの組み合わせでもかまわないが、図13の場合のように、あるセンサでは1つの影しか検出できないが、他のセンサでは複数の影を検出できる場合は、より多くの影を検出できるセンサ同士を組と決定すればよい。角度やセンサ間の距離などによって、より精度の有利な組み合わせを用いればよい。センサユニットの組み合わせは、CPU21が決定する。
たとえば、Rセンサから見ると、図13のように入力座標位置が重なってしまうようなときは、L、CR、CLセンサについては、二つの影が検出されているが、Rセンサについては影が一つしか検出されていない。よって、CPU21は、より多くの影を検出しているLセンサ、CRセンサおよびCLセンサから適宜の2つを選択し、座標計算に使用すればよい。選択ルールとしては、たとえば、できる限り外側のセンサ(例:Lセンサ)や、最初に選択された外側センサの反対側に存在するセンサ(例:CRセンサ)を選択する方法が考えられる。なおこれらは一例であり、内側の2つのセンサ(例:CLセンサとCRセンサ)を組み合わせてもよいし、同一の側にある2つのセンサ(例:LセンサとCLセンサなど)を組み合わせてもよい。組み合わせを選択する際には、より精度を確保しやすい組を選択するようにすれば好ましいだろう。このように検出された影の数などを用いて組み合わせを決定すればよい。
<座標の連続性の判定>
上述したように複数のセンサの組み合わせを用い、また、座標の虚実の判定を行なうことで複数の入力座標位置の座標データを決定できる。しかしながら、このまま座標データを出力しただけでは、受け取った側のホストで二つの座標データの区別がつかず、両データを一連のデータとして繋ぎ合わせてしまうおそれもある。そこで、このような課題を解決するために、入力座標位置の連続性を表す識別子を、各座標データに付与することにする。
ある検出タイミングにおいて、複数の座標データが検出された場合には、直前の座標データとの差分を計算することで、直前の座標データにより近い今回の座標データとの間に連続性があると判定できる。
また、座標位置の入力の連続性を識別するために識別情報としては、影が検出された順番にしたがってID番号を付与すればよい。そして、連続性がある座標データには常に同一のID番号を付すようにする。
図14は、2つの座標値と前回の座標値との連続性を説明するための図である。このように2つの座標値 P1(X1n,Y1n)、 P2(X2n,Y2n)が得られたとする。前回、サンプリングされた座標値が ID0:X1n−1,Y1n−1、 ID1:X2n−1,Y2n−1であったとすると、CPU21は、P1,P2のそれぞれについてこれらとの差分を算出し、より差が小さい方を連続性のあるものと判別する。このように連続性の判別がなされたら、連続性のある複数の座標データには、同一のIDを付与して出力する。この例では、P1にID0を付与し、P2にID1付与して、インタフェース7へと出力される。
図15は、本実施形態に係る座標データの送信フォーマットの一例を示す図である。この場合5byteのデータで一つの座標データを表現している。最初に位置するbyte0は、座標データのヘッダ情報であり、最も左にあるbit7が1となっているので、ヘッダであることを表している。残りの4byte(byte1からbyte4)には、それぞれX座標、Y座標が格納される。この例では、各座標の値が、14ビットで表現されている。
ヘッダとなるbyte0には、指示具などを用いた場合のスイッチ情報S1,S0を格納する部分と、座標データの識別情報を格納する部分 ID4、ID3、ID2、ID1、ID0が用意されている。本実施形態では、識別情報として、入力座標の連続性を表す識別情報(CID)と、後述する指示具の種別を表す識別情報(PID)とが含まれる。たとえば、CIDを下位2ビットに割り当て、PIDを上位3ビットに割り当てるものとする。
PIDが未検出の場合は、PID=000とする。この場合、CPU21は、ID4、ID3、ID2に夫々0を設定し、ID1、ID0に連続性を表すCIDを設定する。この例示的なフォーマットによれば、同時入力可能な数は4点であり、PIDは7個まで区別可能となる。
CPU21は、連続性の判定が行われた座標データを、このフォーマットにしたがって代入することで、送信用のデータを作成する。このとき、ヘッダ情報のIDは、先のP1であれば [1, S1, S0, 0 0 0 ,0 0]で表現でき、P2の場合には[1, S1, S0,0 0 0, 0 1]と表現できる。各点の座標データは、このヘッダを含め5byteのデータとして出力される。
指などの入力を許容するような使用環境下など、夫々の座標入力に対して異なる描画属性を付与しない場合は、ホスト側で座標データの連続性識別情報を参照し、この識別情報を使用して描画処理を実行する。すなわち、指示具の識別情報は利用せずに描画処理を実行する。
<ペン信号の検出>
指示具として、たとえば、先端にスイッチなどを設けたペンを用いることで、文字入力等において尾引きなどのない、スムーズな入力が可能になる。
PCなどのホスト側に送信される情報には、上述のように座標データだけでなく、マウスの左ボタンに相当するようなアップダウン情報S0、マウスの右ボタンに相当するペンサイドスイッチ情報S1、または上記のような連続性を表す識別情報などが有る。それ以外にもペンなど指示具固有の識別情報などがある。これらの情報は、電波、音波、光などを用いて送信することができるが、本実施形態では、干渉や反射などの問題が比較的すくない、光を用いたペンについて説明する。
図16は、本実施形態に係る指示具の構成例を示す図である。この指示具は、発光ペン6であり、その外形はペンの形をなしている。ペン先チップ60が入力面に接触すると、ペンダウンとして検知され、発光窓67から赤外線が投光され、受光IC5にて信号が検出される。
図17は、本実施形態に係る発光ペンの内部構成を示した図である。発光ペン6は、電池66、電池電圧を昇圧するためのコンバータ65、スイッチ信号を検出して光のON/OFFを制御するペン制御回路64、ペン先に設けられたスイッチ61、ペンサイドに設けられたスイッチ62、および複数の赤外発光LED63を含んでいる。スイッチ61およびスイッチ62がON、OFFされると、ペン制御回路64は、その状態に応じた信号列に応じてLEDを駆動し、光信号を外部に出力させる。
図18は、本実施形態に係る発光ペンからの光信号の一例を示す図である。この例では、外乱などの影響を受けにくいようにするために、ペン制御回路64およびLED63は、所定の周波数fで光信号を変調している。光信号には、スタートビット、ペンダウンスイッチ信号S0、サイドスイッチ信号S1、ペン固有のIDを示すID1とID0、および信号の終わりを示すストップ信号が含まれている。
図19は、本実施形態において復調された信号の一例を示す図である。図18に示されたような変調光を、受光IC5が受信すると、当該変調光を電気信号に変換するとともにローパスフィルタなどを用いて検波する。受光IC5は、このようにして復調したビット列をサブCPU24へと出力する。
この例では、SW情報やIDビットは2ビット構成になっているが、本発明はこれに限定されることはなく、それぞれ必要な長さに応じて設定することができる。
サブCPU24は、先頭のスタートビットを検出すると、一定周期でサンプリングを行い、各ビット位置の1,0を判定する。また、そして、ストップビットを検出すると、スイッチの状況、指示具IDなどの情報CPU21へと出力する。
指示具の識別情報を検出すると、CPU21は、上述した座標データの送信フォーマットにおける上位3ビットに、このIDを設定する。なお、指示具IDが0の場合はそのまま使用してしまうと不都合がある。なぜなら、上述の送信フォーマットについては、ID不明のときにPID=000と設定することにしているからである。そこで、指示具IDに1を足した値などを用いるようにしてもよい。この場合は、連続性識別情報(CID)=1、指示具識別情報(PID)=0という入力が成されたら、CPU21は、ヘッダ情報を、[1, S1, S 0,0 0 1, 0 1]と設定する。
ホスト側などでは、このヘッダに含まれるPID部分(ID4,ID3,ID2)を参照して、このIDに対応付けて、線種や色などの描画属性を割り当てることができる。これによって、複数点に対して同時並行的に座標入力がなされても、夫々の描画属性に応じた描画を行なうことができる。なお、ホストは、CIDとPIDの双方を考慮して描画属性を付与してもよいし、いずれか一方だけ考慮して描画属性を付与してもよいことはいうまでもない。
ペン先やサイドのスイッチが押下されたときをペン制御回路64が検出したときにのみ光出力を行なうように制御すれば、電池寿命などの観点から好ましいだろう。この省電力モードにおいては、ペン先が入力面に接しない限り、そのID情報などが座標入力装置やホスト側に送信されないことになる。
本実施形態によれば、反射ユニット3の再帰反射部材が幅を有しているため、ペン先などが入力パネルに接触していない状態であっても、影を検出(座標の検出)できる。この状態を近接入力と呼ぶ。近接入力時には、カーソルを移動させるように制御するだけで、線を引くなどの描画動作を行なわないように制御することができる。しかしながら、一部の文字認識などのソフトウエアでは、近接入力状態での座標データを利用する可能性がある。そこで、このようなときにはペンIDが不明であっても、ID0、1の連続性IDを参酌して座標データを連続的に取り扱うことにする。
一方、近接入力時に連続性に関する情報を特に必要としないような場合には、CIDは不要となる。そこで、上述のCIDとPIDを入れ替えたり、あるいはすべてのビットをPIDに割り当てるようにフォーマットを変更したりしてもよい。この場合、IDの数をより多く設定できるようになるだけでなく、IDを有する指示具と、IDを持たない指示具や指などの指示手段を併用することも可能になる。
図20は、指示具の動きと各識別情報との関連性を説明するための図である。ステップS2001において、検出可能高内に発光ペン6が進入すると、上述のセンサユニットによって座標位置が検出される。しかしながら、この状態では発光ペン6から指示具識別情報が送信されないので、PIDは不明(000)のままである。よって、このときは、CPU21が、連続性の判定に基づいてCID(01)を座標データに付与する。
ステップS2002において、発光ペン6の先端に配置されているスイッチ60がONにされると、スイッチ情報とともにPIDが送信されるので、CPU21は、PIDを検出して、座標データのPIDを「000」から「001」へと更新する。これらのIDは、PIDの送信が検出されている間は維持されるが、その後、ステップS2002において、スイッチ60がOFFになると、PIDはクリアされる。なお、ステップS2002からステップS2003までは、近接入力に相当するが、この間も入力座標の連続性が検出されているならば、CIDだけでなく、PIDを維持するようにしてもよい。すなわち、CPU21は、一度PIDが検出されると、CIDがクリアされるまでは、そのPIDを維持するように制御することになる。これにより、その後の近接入力状態においてもPIDを維持できるようになる。
あるいは、IDビットを同一として扱い、ステップS2001にて付加されたCIDに対して、ステップS2002において、PIDが検出された段階で、前記CIDに変えてPIDを付加して、座標出力するように構成してもよい。また、ステップS2003の期間、もう一度CIDに切り替えても良いし、PIDのまま継続してもよい。このように、連続性を表す、第1の識別情報、認識された前記指示手段に関する第2の識別情報、のどちらかあるいは双方を付加して、座標出力することで、座標の連続性や、属性の連続性を保つことが出来る。
図21は、本実施形態に係るペン信号を受信する受信ユニットの構成例を示す図である。この例によれば、受信ユニットの主要部となる受信IC5には、複数の受光ユニットIC1とIC2が含まれている。仮に、複数の発光ペンからの発光信号を一箇所で受けると、どの入力領域に位置するペンからの発光信号であるかを判別できなくない。これは、各発光ペンが自己の識別情報を送信する場合であっても、同様である。そこで、それぞれ異なるかまたは一部重複する受信領域を担当する複数の検出ユニットを設けることで、このような課題を解決するものとする。
たとえば、図21において、入力パネルのA領域を受光IC1が担当し、B領域を受光IC2が担当し、C領域を受光IC1と受光IC2とで担当する。この場合、P1の点とP2の点に座標入力があると、P1については、受光IC1により検出されることになる。よって、得られた複数の座標データのうちA領域に属するP1の座標データには、受光IC1により検出されたスイッチ情報とPID情報とを、CPU12は付与する。P2については、B領域を担当する受光IC2により検出されたPID等を付与する。一方。受光IC1、および受光IC2の両方により検出されたときは、C領域に属する座標データにPID等を付与する。なお、受光ICごとの担当領域を分割する方法はこの例に限定されるものではない。
図22は、本実施形態に係るペン信号を受信する受信ユニットの他の構成例を示す図である。この変形例では、入力領域をさらに細かく分割するとともに、各領域ごとに対応する受信ユニットを配置している。これにより、同時に並行して座標入力可能な指示具の数を増やすことができる。51は反射集光ミラーであり、担当する領域内の光を、受光IC5に集光する。
本発明によれば、他の構成を採用してもよい。たとえば、入力パネル4の領域全体にわたって光を受光できる受光用ICを配置するとともに、どの部分で発光が発生したかを検出する撮像素子を別途配置することで、領域全体を細かく分離して、複数の指示具からの光信号を区別して受信できるようにしてもよい。
<制御フローの説明>
図23は、本実施形態に関する座標入出力処理に関する例示的なフローチャートである。本フローチャートは、座標入力装置に電源が投入される開始される。
ステップS2301において、CPU21は、ポート設定、タイマ設定などさまざまな初期化を実行するとともに、ROM26などの不揮発メモリから基準データやデータ補正用のパラメータをそれぞれ読みだしRAM25に格納する。また、各センサユニットごとに、図8に示したように、CPU21は、投光無しのときの光量分布データ81と、座標入力が無いときの光量分布データ82とを取得し、RAM25に記憶する。
ステップS2302において、CPU21は、各センサユニットのLED31を点灯させ、CCD41などの検出ユニットから光量分布データを取得する。
ステップS2303において、CPU21は、取得された光量分布のデータと、RAM25に記憶されている初期時のデータとに基づいて差分演算を行なうとともに、変化率を算出する。
ステップS2304において、CPU21は、算出された変化率が所定の閾値を越えるかどうかを判定基準として、座標入力の有無を判定する。座標入力が無いと判定されたときにはステップS2316に進み、連続性を表すフラグやPIDなどのデータをクリアし、S2302へ戻り、データ取得動作を繰り返す。このとき、この繰り返し周期を10[msec]程度に設定すれば、100回/秒のサンプリング周期となる。
一方、ステップS2304において遮光領域が有り(すなわち座標入力あり)と判定されると、ステップS2305に進み、CPU21は、各センサユニットの遮光領域の数を計測し、計測された数に応じて座標計算に用いるセンサの組を決定する。決定のアルゴリズムは上述したとおりである。
ステップS2306において、CPU21は、決定されたセンサ組となる各センサからの出力データから、影に対応するCCD画素番号を読み出し、初期時に読み込んだ補正データを用いてθを算出する。さらに、計算されたθと基準データとから正接(tanθ)を算出する。CPU21は、正接の値から座標値を算出する。なお、このとき算出に使用するCCDの画素番号に関して、CPU12は、検出レベル等による補間処理を用いて精細化などの処理を行ってもよい。この補間処理により、実際の画素と画素との間に仮想の画素を設けることができ、解像度が増加することになる。
上述したように、並行して同時に複数の座標入力が実行されると、実際に入力された位置(実像)と虚の位置(虚像)とについて座標データが算出される。そこで、ステップS2307において虚実判定を行なう。
S2307において、CPU21は、座標データの算出に使用されなかった残りのセンサユニットからの角度データを用いて、算出された複数の座標データについて虚実判定を行なう。
ステップS2308において、CPU21は、実像と判定された座標データについて、連続的に入力されている座標データであるかどうかを判定する。上述したように、CPU21は、今回取得された各座標データと直前の座標データとの差分演算を行い、所定の閾値以内の差であったり、または最も小さい差となったりする座標データを直前の座標データに対して連続性があるものと判別する。すなわち、CPU12は、直前に入力された入力座標位置に対して相対的に近い入力座標位置を入力の連続性があると判別する。
ステップS2309において、CPU21は、連続性がある判別された座標データに対しては、直前の座標データと同一のCIDを発生して付与する。一方、連続性が無いと判別された座標データには、未使用のCIDを付与する。
ステップS2310において、CPU21は、受光IC5からのデータをRAM25から読み出す。もし、座標入力の際に発光ペン6などの指示具が用いられていれば、ペンダウンのときに指示具の識別情報などが受光IC5により受信されているはずなので、サブCPU24は、受信された指示具の識別情報に、当該識別情報を受信した受光ユニットのIDを付加してRAM25に記憶する。なお、指示具の識別情報が検出されなければ、PID=000を記憶する。なお、近接入力に関して説明したように、PID=000とすべき場合であっても、CIDが維持されていることを条件として、PIDの内容を維持してもよい。
ステップS2311において、CPU21は、読み出された指示具の識別情報等のデータに基づいて、どの領域で使用された指示具かを特定する。たとえば、受光ユニットのIDと受信担当領域を表すデータ(座標範囲を表すデータ)と対応付けて記憶しているテーブルがROM26に記憶されていれば、受光ユニットのIDから受信担当領域を特定できる。
ステップS2312において、CPU21は、読み出した指示具の識別情報が000ではないかどうかを判定する。指示具の識別情報が000であれば、ステップS2314に進み、000以外であればステップS2313に進む。
ステップS2313において、CPU21は、指示具の検出された領域の座標範囲内に、ステップS2306において算出された座標データが含まれる場合には、当該座標データに指示具の識別情報を付与する。
ステップS2314において、CPU21は、座標データに対してさらにスイッチ情報などの付加情報を付与して、送信データ(図15)を作成し、インタフェース7から外部装置等に出力する。
ステップS2315において、連続性判定などのために、送信した座標データ、各種のID情報、連続入力を表すフラグ等をRAM26に記憶する。その後、データ取得動作S2302に戻り、以降電源OFFまでループを繰り返すことになる。
以上説明したように本実施形態によれば、検出された座標データに、座標入力の連続性に関する識別情報と、座標入力に使用された指示手段(指示具や指など)の識別情報を対応付けて出力するようにしたので、これらの情報を受信した描画処理装置は、描画属性を付した描画処理を実現できるようになる。
また、指示具等により指示入力された座標位置を検出する検出ユニットを3以上配置することで、2以上の指示具により同時に並行して座標入力がなされても、各座標入力を適確に認識することができる。
また、入力パネル4において、それぞれ異なる担当受信領域または一部重複する担当受信領域を割り当てられるとともに、指示具から送信される指示具の識別情報を受信する複数の検出ユニットを設け、さらに、当該検出ユニットの担当受信領域内において検出された入力座標位置を、当該指示具識別情報に対応付けられた指示具により入力されたものと決定することで、各指示具の存在位置を適切に推定することができる。そして、座標データへの指示具の識別情報の対応付けも好適に実行されることが期待できる。
[他の実施形態]
上述の実施形態によれば、指示具がペンダウンした後ペンアップし、さらに近接入力領域からも逸脱したとしても、再びペンダウンしたときには同一のPIDが維持されるものであった。なぜなら、指示具からは固有の識別情報が送信されるからである。しかしながら、近接入力領域から逸脱してしまうと、座標入力の連続性は途絶えるので、CIDはクリアされてしまう。すなわち、座標入力の連続性を表すCIDに関しては未使用のIDが使用される。
たとえば、ホワイトボードなどでは、複数人が同時並行して入力を行なうが、夫々左右に分かれて座標入力(描画)する場合が多い。このような状況では、ある座標位置において近接入力が終了し、再びその近傍に座標入力された場合、両者は同一のユーザによる座標入力である可能性が高いと推察される。このような使用形態を鑑みて、入力領域ごとにCIDのデフォルト値をROM26に記憶しておき、当該入力領域に含まれる座標データには、対応するデフォルトのCIDを付与するようにしてもよい。
たとえば、図21に示したようにA,B,Cの各領域に入力領域を分割する場合には、CID0,1,2のようにデフォルト値を記憶しておき、座標データが属する領域のデフォルトCIDを付与する。これにより、たとえば、近接入力時の連続性を利用しているようなアプリケーションに対しても、CIDの継続性が維持されるので好適である。また、指示具を用いない座標入力に対しても連続性を持たせることができる。
図24は、本実施形態に係る動的な領域分割の一例を示す図である。上述の実施形態では入力用域を固定的に分割していたが、図24に示すP1とP2のように、同時並行して複数の座標入力が実行されると、CPU21は、その中間点を算出し、そこからたとえば2領域ABに分割してもよい。たとえば、P1,P2がペンアップされた後に、再びペンダウンされたときも入力順番に依存することなく、P2と同一の領域に属するP4にはCID=2が付与し、P1と同一の領域に属するP3にはCID=1を付与する。
あるいは、上記A,Bのような大きな領域に分けることなく、図中のP5の周りに破線で示したように、前回の近接入力OUTの点から所定の距離内に再び座標入力が行なわれたときは、同一のIDを付与するようにしてもよい。このような構成であれば、所定距離以内の近接領域への座標入力に対しては、同一のIDを付与することができるので、使い勝手の向上につながろう。このようなOUT点からの所定距離の範囲は、OUT時点から一定時間経過後に記憶から削除してもよい。
上述実施形態においては、座標入力が連続しているときの座標データの連続性判別は、前回検出された座標データと今回検出された座標データ間の距離に応じて判別していた。上述したように複数人が同時に入力を行なうときは、それぞれ離れた位置に座標入力がなされるので問題は無いが、両者が接近して入力を行なう場合には、連続性の判定を間違え、IDがすりかわってしまうおそれがある。
図25は、複数の座標入力が並行して、かつ、近接して入力される場合の一例を説明する図である。たとえば、一方の入力がP0で、もう一方がP1とし、それぞれ次の入力位置がP2、P3であったとする。この場合、距離だけで連続性を判別すると、P0、P1ともにP2よりもP3のほうが近いため、P3に対して連続していると判別されるおそれがある。そこで、前回の座標データからつぎの入力領域をCPU21が予測し、予測された領域内に座標入力された座標データを連続性があるものと認識する。たとえば、前回算出された座標データから接線ベクトルを算出することで予測領域を求める。
図26は、本実施形態に係る座標入力の予測領域を説明するための図である。この例では、点P0での接線ベクトルV0、点P1での接線ベクトルV1から、次の座標データの取り得る方向が図中破線でしめしたように予測可能となる。すなわち算出された接線ベクトルの方向に対して、ある角度内を予測領域とする。この予測領域の範囲内に含まれる座標データを連続性があると判定する。
接線ベクトルに相当する情報としては、たとえば、通常のサンプリング周期によりサンプリングされた座標値と、通常のサンプリング周期に比べ短い時間でサンプリングした座標値との差分を用いることができる。たとえば、通常のサンプリング周期を10[msec]とすると、ある座標データをサンプルした後、1[msec]経過すると、もう一度座標データをサンプルし、この両者の差分をそれぞれ計算する。このときの時間差と移動量を接線ベクトル情報とすることができよう。
以上説明したように、直前に入力された1以上の入力座標位置から次の描画領域を予測し、さらに、予測された描画領域に含まれる入力座標位置を入力の連続性があると判別するようにすることで、座標入力の連続性を好適に判別できるようになる。
図27は、本実施形態に係る描画処理装置の一例を示す図である。描画処理装置2700は、上述の座標入力装置2720から座標データを受信して、表示装置2710に対して、描画属性をともなう描画処理を実行する。描画処理装置2700は、たとえば、本実施形態に係る描画処理プログラムをインストールされたパーソナルコンピュータである。
CPU2701は、ROM2703に格納されているコンピュータプログラムに基づいて制御を実行する中央演算処理装置である。RAM2702は、データなどを記憶する揮発性の記憶装置である。ROM2703は、書き換え不能のマスクROMや書き換え可能なEEPROMなどの記憶装置である。ハードディスクドライブ2704は、大容量の記憶装置であり、ROM2702には記憶できない大規模なコンピュータプログラムを記憶する。表示制御回路2705は、いわゆるビデオカードであり、表示装置2710に対して表示信号を出力する。操作部2706は、テンキー、ポインティングデバイス、マイクなどの情報入力装置である。通信インタフェース2707は、座標入力装置2720と各種データを送受信するための通信回路である。表示装置2710は、PDPやLCDディスプレイなどである。
2以上の指示具を用いて並行して複数の座標位置を入力可能な座標入力装置2720から、入力の連続性を表すCIDと、入力の際に使用された指示具を識別するためのPIDと、入力座標位置を表す座標データが通信IF2707を経由して入力されると、CPU2701は、CIDとPIDとがそれぞれ同一である座標データには、同一の描画属性を付与してRAM2703に記憶する。CPU2701は、座標データと描画属性を読み出し、読み出したデータに応じて描画データ作成し、表示制御回路2705から表示装置2710へと出力する。これにより、2以上の指示具を用いて並行して複数の座標位置を入力される場合にも、それぞれ区別して描画属性を付与することが可能となる。
なお、上述したように、座標入力装置2720を表示装置2710の表示面に対して設けることで、インタラクティブな入力装置を提供できる。さらに、描画処理装置2700もこれらと一体化して提供してもよい。
以上、様々な実施形態を詳述したが、本発明は、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。たとえば、座標入力装置を単体で提供してもよいし、座標入力装置と表示装置を一体化したシステムとして提供したり、座標入力装置、表示装置および描画処理装置を一体化したシステムとして提供してもよい。
なお、本発明は、前述した実施形態の各機能を実現するソフトウェアプログラム(本実施形態では図23に示すフローチャートや、図27に関して説明した一連の描画処理に対応したプログラム)を、システム若しくは装置に対して直接または遠隔から供給し、そのシステム若しくは装置に含まれるコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。
従って、本発明の機能・処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の一つである。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。
プログラムを供給するための記録媒体としては、たとえば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などがある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明の構成要件となる場合がある。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。