(57)【要約】【課題】ユーザの意図を反映するようにストロークの幅を管理及び修正すること。【解決手段】本発明によるシステムは、ストロークの曲率やユーザが描くスピードのような幾何学的な又は時間的な特性の関数として手書き線幅を変える。本システムは、ストローク制御モジュール、速度適応モジュール、曲率適応モジュール、スムージングモジュール、近接判定モジュール及びストローク優勢度モジュールを含む。ストローク制御モジュールは、入力を受けた時点での速度及び／又は曲率に基づいて、入力ストロークの幅を変更し、ストロークを調整する。ストローク制御モジュールは、速度適応モジュール、曲率適応モジュール、スムージングモジュール及び他のモジュールと協同し且つそれらを制御し、ユーザの要望及び意図を自動的に反映するようにユーザから入力されたストローク全体の幅を調整し、且つ紙で提供されるような自然な感じの線にかなり近づける。【選択図】図４Ｂ
2008181505.tif 000002
【特許請求の範囲】
【請求項１】
ストロークデータを受信し、表示に備えてストロークデータを処理するプロセッサと、
前記プロセッサに結合され、手書きの線を表示する表示装置と、
前記プロセッサに結合されたストローク制御モジュールと、
を有し、前記ストローク制御モジュールは、ある幅を有する少なくとも１つのストロークを受信し、該少なくとも１つのストロークの幾何学的な又は時間的な特性の関数として、所望の影響を与えるように前記幅を修正するようにした表示する手書き線幅を変えるシステム。
【請求項２】
前記ストローク制御モジュールが、前記ストロークの長さ方向に沿って前記ストロークの幅の量を修正する請求項１記載のシステム。
【請求項３】
前記所望の影響は、前記ストロークが紙に描かれたような効果をもたらすことである請求項１記載のシステム。
【請求項４】
前記ストローク制御モジュールが、ユーザによる前後関係に基づいて前記幅を適応的に修正する請求項１記載のシステム。
【請求項５】
前記ストローク制御モジュールが、幾何学的な又は時間的な特性の関数として前記幅を適応的に修正する請求項１記載のシステム。
【請求項６】
前記ストロークが入力された時の入力速度に基づいて前記ストロークの前記幅を調整する速度適応モジュールを更に有し、該速度適応モジュールは前記プロセッサに結合されている請求項１記載のシステム。
【請求項７】
前記ストロークの曲率に基づいて前記ストロークの前記幅を調整する曲率適応モジュールを更に有し、該曲率適応モジュールは前記プロセッサに結合されている請求項１記載のシステム。
【請求項８】
前記ストロークが内側セグメント及び端部セグメントを含み、
当該システムは、前記端部セグメント及び前記内側セグメントの間の遷移を滑らかにするように前記ストロークの幅を修正するスムージングモジュールを更に有し、該スムージングモジュールは前記プロセッサに結合されている請求項１記載のシステム。
【請求項９】
第２ストロークに近い第１ストロークを特定し、該第１及び第２ストロークの幅が同程度になるように調整する近接判定モジュールを更に有し、該近接判定モジュールは前記プロセッサに結合されている請求項１記載のシステム。
【請求項１０】
複数のストロークを受信するステップと、
該複数のストロークの内ある幅を有するストロークを選択するステップと、
前記ストロークの幾何学的な又は時間的な特性の関数として、所望の影響を及ぼすように前記ストロークの前記幅を修正するステップと、
を有する表示する手書き線幅を変える方法。
【請求項１１】
前記ストロークの前記幅を修正するステップが、前記ストロークの長さ方向に沿って前記ストロークの幅の量を変更することを含む請求項１０記載の方法。
【請求項１２】
前記所望の影響は、前記ストロークが紙に描かれたような効果をもたらすことである請求項１０記載の方法。
【請求項１３】
前記幅を修正するステップが、選択されたストロークの幾何学的な又は時間的な特性の関数として適応的に実行される請求項１０記載の方法。
【請求項１４】
前記複数のストロークを、一群のロングストローク及び一群のショートスロー区に分けるステップを更に有する請求項１０記載の方法。
【請求項１５】
前記一群のショートストロークを少なくとも１つの近接グループに分けるステップと、
前記近接グループの優勢度を判定するステップと、
前記近接グループ中の前記ショートストロークの平均長の関数として、前記少なくとも１つの近接グループ中の前記ショートストロークに幅を割り当てるステップと、
を更に有する請求項１４記載の方法。
【請求項１６】
前記一群のショートストロークを少なくとも１つの近接グループに分けるステップと、
前記近接グループの優勢度を判定するステップと、
前記近接グループの或る領域内の少なくとも１つのロングストロークの幅を判定するステップと、
前記少なくとも１つの近接グループ中の前記一群のショートストロークに、前記ロングストロークの平均幅に等しい幅を割り当てるステップと、
を更に有する請求項１４記載の方法。
【請求項１７】
前記幅を判定するステップが、複数のロングストロークの幅を判定し、複数のロングストロークの幅を平均化することで、前記幅を判定するステップの前記幅を生成し、
前記割り当てるステップが、前記幅の平均値を利用するようにした請求項１６記載の方法。
【請求項１８】
前記一群のショートストロークを少なくとも１つの近接グループに分けるステップが、時間的に又は物理的にストローク同士が近いストロークを確認することで実行されるようにした請求項１５記載の方法。
【請求項１９】
前記近接グループの優勢度を判定するステップが、
前記近接グループ中のストロークの長さの全長を判定するステップと、
前記一群のロングストロークの長さを判定及び合計するステップと、
前記全長が合計より長かった場合、該近接グループを優勢として設定するステップと、
を有する請求項１５記載の方法。
【請求項２０】
前記ストロークの端部を先細りにするステップを更に有する請求項１０記載の方法。
【請求項２１】
所望の影響を及ぼすように前記ストロークの前記幅を修正するステップが、ストロークの曲率の関数として該ストロークの前記幅を修正するようにした請求項１０記載の方法。
【請求項２２】
所望の影響を及ぼすように前記ストロークの前記幅を修正するステップが、前記ストロークの入力された時の速度の関数として前記ストロークの前記幅を修正するようにした請求項１０記載の方法。
【請求項２３】
所望の影響を及ぼすように前記ストロークの前記幅を修正するステップが、前記ストロークの入力された時の速度の関数として及び前記ストロークの曲率の関数として前記ストロークの前記幅を修正するようにした請求項１０記載の方法。
【請求項２４】
前記ストロークを形成する少なくとも１つのセグメントを平滑化するステップを更に有する請求項１０記載の方法。
【請求項２５】
前記選択するステップ及び前記修正するステップが、前記受信するステップとリアルタイムで実行される請求項１０記載の方法。
【請求項２６】
前記選択するステップ及び前記修正するステップが、前記受信するステップの後の所定の時間に実行される請求項１０記載の方法。
【請求項２７】
前記複数のストロークを格納し、ストローク幅を再計算し、他のセグメント及びストロークに関するより詳細な情報に基づいて、当初の幅を後に計算した幅で置換するステップを更に有する請求項１０記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に表示装置に手書きの線を表示する技法に関連する。特に、本発明は、ユーザの要請や意図を反映するようにコンピュータ装置に表示するストローク(stroke)のサイズを変更するシステム及び方法に関連する。
【背景技術】
【０００２】
近年、ペンを利用したコンピュータ装置の普及率を増やすため、多大な企業努力がなされている。現在、多くのラップトップコンピュータはスタイラス及びディスプレイを含み、そのスタイラス等は、カーソル制御やストローク捕捉用にマウスの代わりにスタイラスを利用して、ユーザがコンピュータとやり取りできるようにする。近年、スマートフォンやパーソナルディジタルアシスタント(PDA)のような携帯用コンピュータ装置もスタイラス／タブレット型のインターフェースを組み込み始めている。
【０００３】
スタイラスベースのタブレットに付随する従来からの１つの問題は、スタイラス及びタブレットと共にユーザの体験することが、紙と筆記用具で書く場合にユーザの体験することと一致しないことである。特に、タブレットで捕捉されユーザに表示されるストロークは、一般に、如何なる寸法(dimension)も持っていない。これに対して、ユーザが紙に書く場合、ユーザは筆圧や筆の傾きを利用して、描くストロークの幅に影響を及ぼす。しかしながらスタイラスベースのタブレットシステムで傾斜の付いた圧力を検出することは困難であり且つできたとしても高価になってしまう。複雑なスタイラス並びに複雑な検出及び報告システムの何れも必要になるからである。複雑なスタイラス及び報告システムについてのそのような要請は、そのようなシステムを法外に高価にしてしまう。
【０００４】
従来システムが適切な幅を持つようにストロークを変更できないことは、ユーザの体験やスタイラスベースのタブレットの普及率を大きく妨げている。ユーザは、読みやすくするために、従来システムが表そうとするものより大きなストロークで書く必要があるように感じがちであり、従来システムが表そうとするものは、文字や行の間や中の空きスペースとインクの付いた部分との通常の比率も含み、そのように感じることは、従来システムが異なる線幅に変えることができないことに部分的に起因している。特に、メモをとる場合、文字を紙に書くのと同程度に小さく書けないことはユーザにとって苛立たしいものである。これに対して、円、矢印及び枠を描く場合、ユーザはそれらを遠くからでも見えやすくすることを望んでおり、相当に広いストロークを望んでいる。しかしながら従来技術は、ユーザの意図を反映するようにストロークの幅を管理及び修正する機能を提供していない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
本発明の課題は、ユーザの意図を反映するようにストロークの幅を管理及び修正することである。
【課題を解決するための手段】
【０００６】
本発明は或るシステムと共に従来技術の欠点を克服し、そのシステムは、ストローク（筆使い、筆跡、運筆等を含む）の曲率やユーザが描くスピードのような幾何学的な又は時間的な特性の関数として手書き線幅を変える。一実施例における本発明によるシステムは、ストローク制御モジュール、速度適応モジュール、曲率適応モジュール、スムージングモジュール、近接判定モジュール及びストローク優勢度モジュールを含む。ストローク制御モジュールは、入力を受けた時点での速度及び／又は曲率に基づいて、入力ストロークの幅を変更し、ストロークを調整する。ストローク制御モジュールは、速度適応モジュール、曲率適応モジュール、スムージングモジュール及び他のモジュールと協同し且つそれらを制御し、ユーザの要望及び意図を自動的に反映するようにユーザから入力されたストローク全体の幅を調整する機能をもたらし、且つ紙で提供されるようなものにかなり近い自然な感じの線をもたらす。
【０００７】
また本発明は次のようないくつもの新規な方法も包含する：手書き線幅を変える方法、曲率に合わせて線幅を変える方法、速度に合わせて線幅を変える方法、線の一部を滑らかにする方法、或る領域内のグループの優勢度(dominance)を計算する方法、及び近接グループを判定する方法。
【０００８】
ここで説明される特徴及び利点は網羅的なものではなく、特に、多くの追加的な特徴及び利点は以下の詳細な説明及び図面により当業者には明らかになるであろう。更に、本明細書で使用されている言葉は基本的には読みやすいように説明目的のために選ばれており、発明の対象物の範囲を限定しようとするものではない。
【発明を実施するための最良の形態】
【０００９】
以下、本発明が添付図面と共に非限定的な実施例により説明される。図中、同様な参照番号は同様な要素を表すのに使用される。
【００１０】
表示する手書き線幅を変更するシステム及び方法が説明される。以下の説明では、説明の便宜上、多くの具体的詳細が本発明の十分な理解をもたらすように説明される。しかしながらそのような具体的詳細とは別に本発明は実現可能であることを当業者は理解するであろう。場合によっては、本発明を曖昧にすることを避けるため、構造や装置がブロック図で示される。本発明は例えばスタイラスやタブレットコンピュータ装置と共に主に説明される。しかしながら本発明は携帯性やサイズによらずペンを利用する如何なるタイプのコンピュータ装置にも適用可能である。
【００１１】
本明細書における「一実施例」又は「実施例」は、その実施例に関して説明される特定の特質、構造又は特徴が、本発明の少なくとも１つの実施例に含まれることを意味する。本明細書の様々な場所で「一実施例」なる用語が使用されていることは、全て同じ実施例であることを必ずしも意味しているわけではない。
【００１２】
以下の詳細な説明の一部は、コンピュータメモリ内のデータビットを処理するアルゴリズム及び記号表現で与えられる。これらのアルゴリズムの説明及び表現は、データ処理技術分野の当業者が他の当業者に彼らの仕事内容を最も効率的に伝えるのに使用される手段である。ここで、アルゴリズムは一般に所望の結果に導く首尾一貫した一連のステップと考えられる。そのステップは物理量の物理的処理を必要とするものである。必須ではないが、通常それらの物理量は、格納、転送、結合、比較その他の処理を施すことの可能な電気的な又は磁気的な信号の形態をとる。原則的な一般的な用法の観点から、ビット、値、エレメント、シンボル、キャラクタ、期間、数等としてそれらの信号に言及することが折に触れて便利なことが分かる。
【００１３】
しかしながら、これらの及び類似の用語の全ては、適切な物理量に関連しており且つそれらの量に付された便宜的なラベルにすぎないことに留意を要する。特に断りのない限り、以下の説明から明らかなように、本説明を通じて、「処理」、「演算」、「計算」、「決定」又は「表示」等のような用語を用いる説明は、コンピュータシステム又は同様な電子コンピュータ装置の動作や処理に関連し、その動作や処理は、コンピュータシステムのレジスタ及びメモリの中で物理的な（電子的な）量として表現されるデータを、コンピュータシステムメモリやレジスタその他の情報ストレージ、伝送又は表示装置の中で物理量として同様に表現される他のデータに変換及び処理することが、理解されるであろう。
【００１４】
本発明はここで説明される処理を実行する装置にも関連している。その装置は、必要な目的に応じて特別に構築されてもよいし、コンピュータに格納されているコンピュータプログラムによって選択的にアクティブにされる又は再構成される汎用コンピュータで構築されてもよい。そのようなコンピュータプログラムはコンピュータ読取可能な記憶媒体に格納されてもよく、その記憶媒体は、限定ではないが、フロッピディスク、光ディスク、CD-ROM、磁気光ディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気又は光カード等の如何なるタイプのディスクを含んでもよいし、或いは電子的な命令を格納するのに指摘した如何なるタイプの媒体を含んでもよいし、ディスクも媒体もそれぞれコンピュータシステムバスに結合される。
【００１５】
最後に、ここで説明されるアルゴリズム及び表示は、特定のコンピュータその他の装置のどれにも固有に関連するものではない。様々な汎用システムがここで教示するものによるプログラムと共に使用されてよく、或いは、必要な方法ステップを実行するように、よりいっそう特化した装置を構築することが便利なことが分かるかもしれない。これら様々なシステムに必要な構造は以下の説明から明らかになるであろう。更に、本発明は特定のプログラミング言語のどれにも依存しない。ここで説明される本発明の教示内容を実現するのに様々なプログラミング言語が使用されてよいことが分かるであろう。
【００１６】
＜システム＞
図１は本発明の実施例で使用可能なスタイラス１０２，タブレット又はコンピュータ装置１０４を示すシステム１００の一例を示す。タブレット又はコンピュータ装置１０４は、画像、文字、データを提示するディスプレイ２１０を含み、表示は、ストロークの表現をユーザに提示することも含む。タブレット又はコンピュータ装置１０４は、指やスタイラスの位置を特定するタッチスクリーン又はディジタイザ２１４をそれぞれ含む。ディジタイザ２１４はアクティブの又はパッシブの当該技術分野で知られているようなものでよい。
【００１７】
図２を参照するに、本発明の一実施例により構築されるシステム１００の機能ブロック図が示されている。システム１００は好ましくは制御部２５０、ディスプレイ装置２１０及びディジタイザ２１４を有する。システム１００は、キーボード及びカーソル制御部２１２、ネットワークコントローラ２１６、並びに１つ以上の入力／出力（Ｉ／Ｏ）装置２１８を選択に含んでよい。
【００１８】
制御部２５０は、算術論理部、マイクロプロセッサ、汎用コンピュータ又は他の何らかの情報機器を有し、それらは電子表示信号をディスプレイ装置２１０に与えるように備わっている。一実施例では、制御部２５０はグラフィカルユーザインターフェースを有する汎用コンピュータを有し、例えば、ウインドウズ（登録商標）やユニックス（登録商標）ベースのオペレーティングシステムのようなオペレーティングシステム上で走るジャバ(Java(登録商標))で書かれたプログラムにより生成される。一実施例では、１つ以上のアプリケーションプログラムが制御部２５０により実行され、アプリケーションプログラムは、限定ではないが、グラフィティ(graffiti)、描画アプリケーション、ノートパッドアプリケーション、ワードプロセシングアプリケーション、電子メールアプリケーション、財務アプリケーション及びウェブブラウザアプリケーションを含む。
【００１９】
図２を更に参照するに、制御部２５０はプロセッサ２０２、メインメモリ２０４及びデータストレージデバイス２０６を含むように図示され、それら全てはシステムバス２０８に通信可能に結合されている。
【００２０】
プロセッサ２０２は、データ信号を処理し、様々なコンピューティングアーキテクチャで構成されてもよい。そのアーキテクチャは、例えば、複合命令セットコンピュータ(CISC)アーキテクチャ、縮小命令セットコンピュータ(RISC)アーキテクチャ又は命令セットの組み合わせを実現するアーキテクチャ等を含んでよい。図２には１つのプロセッサしか図示されていないが、複数のプロセッサが含まれてもよい。
【００２１】
メインメモリ２０４は、プロセッサ２０２で実行される命令及び/又はデータを格納する。命令及び/又はデータは、ここで説明される技法の全部又は一部を実行するコードを構成する。メインメモリ２０４は、ダイナミックランダムアクセスメモリ(DRAM)装置、スタティックランダムアクセスメモリ(SRAM)装置、その他の当該技術分野で既知のメモリ装置でもよい。メモリ２０４は図３に関連して以下で詳細に説明される。
【００２２】
データストレージデバイス２０６は、プロセッサ２０２のための命令及びデータを格納し、ハードディスクドライブ、フロッピディスクドライブ、CD-ROMドライブ、DVD-ROMドライブ、DVD-RAM装置、DVD-RW装置、フラッシュメモリ装置その他の当該技術分野で既知の何らかの大容量記憶装置を含む１つ以上の装置で構成される。
【００２３】
システムバス２０８は、制御部２５０を介して情報及びデータを通信する共有バスを表す。システムバス２０８は、業界標準アーキテクチャ(ISA)バス、ペリフェラルコンポーネント相互接続(PCI)バス、ユニバーサルシリアルバス(USB)その他の当該技術分野で既知の同様な機能をもたらす他のバスを含む１つ以上のバスを表現してよい。システムバス２０８を介して制御部２５０に結合される追加的なコンポーネントは、ディスプレイ装置２１０、キーボード及びカーソル制御部２１２、ディジタイザ２１４、ネットワークコントローラ２１６及びI/Oデバイス２１８を含む。
【００２４】
ディスプレイ装置２１０は、上述したような電子画像及びデータを表示するよう設けられた何らかの装置を表す。ディスプレイ装置２１０は、例えば、液晶ディスプレイ(LCD)、陰極線管(CRT)その他の同様に備えられた表示装置、スクリーン又はモニタでもよい。一実施例では、ディスプレイ装置２１０にはタッチスクリーンが備えられ、及び／又はディスプレイ装置はディジタイザ２１４を含み、接触式の透明パネルがディスプレイ装置２１０伸すクリーンをカバーする。
【００２５】
ディジタイザ２１４又はグラフィクスタブレットは平坦な表面を有する一般的なタイプの装置であり、その平面上でユーザはペンのような描画装置を用いて画像を「描き」、座標情報にデコード可能な信号を生成する。ディジタイザ２１４又はグラフィクスタブレットは、タブレットパーソナルコンピュータ及び他の装置の一部として含まれている一般的などのタイプのものでもよい。
【００２６】
波線で示されているように、システム１００はキーボード及びカーソル制御装置２１２、ネットワークコントローラ２１６及び１つ以上の入力／出力(I/O)装置２１８（後述）を選択的に含んでもよい。
【００２７】
キーボード２１２は制御部２５０に結合された英数字入力装置を表し、情報及び命令選択をプロセッサ２０２に伝える。キーボード２１２はクワーティ(QWERTY)キーボード、キーパッド又はそのようにタッチスクリーン上に形成された表現物でもよい。カーソル制御部２１２は、コマンド選択内容だけでなく位置データもプロセッサ２０２に伝えるように設けられたユーザ入力装置を表す。カーソル制御部２１２は、マウス、トラックボール、スタイラス、ペン、タッチスクリーン又はカーソル指示キーを含んでもよいし、或いはカーソルの動きを引き起こす他の手段を含んでもよい。
【００２８】
ネットワークコントローラ２１６は、制御部２５０をネットワーク２２０に接続し、複数の処理システムを含んでよい。処理システムのネットワークは、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)（例えば、インターネット）を含んでもよいし、及び／又は複数の装置が通信する他の如何なる相互接続データパスを含んでもよい。制御部２５０は、他のシステムに対する他の一般的なコネクションを有し、他のシステムは、TCP/IP、http、https及びSMTP等のような標準的なネットワークプロトコルを用いてファイル（メディアオブジェクト）を分散するネットワーク等であり、それら自体は当該技術分野で既知である。
【００２９】
１つ以上のI/O装置２１８がシステムバス２０８に結合される。これらのI/O装置は一実施例ではシステム１００の一部になっていてよいが、（不図示の）他の実施例では他のシステムの部分になっていてもよい。例えば、I/O装置２１８は書類の画像を捕捉する画像スキャナを含んでもよい。I/O装置２１８は書類を生成するプリンタを含んでもよい。I/O装置２１８は、マイクロフォンを介して音声入力を受信し且つスピーカーを介して音声出力を送信するように設けられた音声入力／出力装置を含んでもよい。一実施例では、音声装置は汎用装置であり；汎用コンピュータシステム内で使用するように設計された音声アドイン／拡張カードである。選択的に、I/O音声装置は１つ以上のアナログトゥディジタル又はディジタルトゥアナログ変換器を含み、及び／又は１つ以上のディジタル信号プロセッサを含み、音声処理を支援する。
【００３０】
本発明の精神及び範囲から逸脱せずに、図２に示されるものとは異なる、より多くの又はより少ないコンポーネントを、システム１００は含んでもよいことが、当業者に理解されるべきである。例えば、システム１００は追加的なメモリ（例えば、第１又は第２レベルキャッシュ、或いは１つ以上の特定用途向集積回路(ASIC)）を含んでもよい。同様に、（例えば、RFIDタグリーダ、ディジタルスチルカメラ、ディジタルビデオカメラ、その他の装置（制御装置２５０へ電子データをダウンロード及び／又は捕捉するように設けられても設けられなくてもよい））追加的なコンポーネントの入力／出力装置２１８が制御部２５０に結合されてもよい。１つ以上のコンポーネントは、キーボード及びカーソル制御部２１２のように省略されてもよい。
【００３１】
図３はシステム１００のメモリユニット２０４の一例を示すブロック図である。メモリユニット２０４は、好ましくは、オペレーティングシステム３０２、ストローク制御モジュール３０４、速度適応モジュール３０６、曲率適応モジュール３０８、スムージングモジュール３１０、近接判定モジュール３１２及びストローク優勢度モジュール３１４を含む。メモリ２０４は、ストローク、セグメント及び捕捉データを格納するバッファを含むが、図示されたものに限定されないことを当業者は認識するであろう。上述したように、メモリユニット２０４は、プロセッサ２０２で実行される命令及び／又はデータを格納する。命令及び／又はデータは、ここで説明される技法の全部又は一部を実行するコードを有する。これらのモジュール２０２−２１４は、システム１００と通信及び協同するプロセッサ２０２にバス２０８により結合される。本発明はコンピュータシステム１００のメモリユニット２０４の一部又はモジュールとして説明されるが、モジュール又はその一部は永久データストレージデバイス２０６のような他の媒体に格納されてもよいし、クライアント／サーバー環境等で複数の様々なコンポーネントを有するネットワーク１０４内で分散されていてもよいことを当業者は認識するであろう。
【００３２】
オペレーティングシステム３０２は、ウインドウズ(登録商標)、ソラリス(登録商標)又はリナックス(登録商標)等のような一般的なタイプの何れかであることが好ましい。図示してはいないが、メモリユニット２０４は１つ以上のアプリケーションプログラムを含み、アプリケーションプログラムは、限定ではないが、描画アプリケーション、ワードプロセシングアプリケーション、電子メールアプリケーション、財務アプリケーション及びウェブブラウザアプリケーション等を含んでよい。
【００３３】
ストローク制御モジュール３０４は、メモリ２０４の他のモジュールを制御するのに使用される。ストローク制御モジュール３０４は、速度適応モジュール３０６、曲率適応モジュール３０８、スムージングモジュール３１０、近接判定モジュール３１２及びストローク優勢度モジュール３１４と通信するよう適合させられている。ストローク制御モジュール３０４の動作は、以下の図６Ａ及び６Ｂから明らかであろう。他のモジュールによる処理が完了すると、ストローク制御モジュール３０４は修正されたストロークを生成し、それをディスプレイに表示するようにする。ストローク制御モジュール３０４はメモリ２０４の別個のモジュールとして図示されているが、他の実施例でのストローク制御モジュール３０４は、他のモジュール２０４−２１２内のルーチンとして分散されてもよいことを当業者は認識するであろう。
【００３４】
速度適応モジュール３０６は、ユーザがストロークを書いた時の速度に合うようにストローク幅を修正するソフトウエア及びルーチンである。一実施例では、スタイラス１０２がセグメントを書いた時に移動した速度が、ストローク又はセグメントの速度の指標として使用される。速度適応モジュール３０６の動作は、図７を参照しながら以下で更に詳細に説明される。一般に、速度適応モジュール３０６は、より速い速度ほどより太い幅になるようにストロークの幅を修正する。
【００３５】
曲率適応モジュール３０８は、ストローク又はセグメントの曲率に合わせてストローク幅を修正するソフトウエア及びルーチンである。一実施例では、あるセグメント及びその近辺の複数のセグメントの曲率は、線の幅を修正するために使用される。曲率適応モジュール３０８の動作は、図８を参照しながら以下で更に詳細に説明される。一般に、曲率適応モジュール３０８は、より小さな曲率ほどより太い幅になるようにストロークの幅を修正する。
【００３６】
スムージングモジュール３１０は、ストローク全体を滑らかにするようにストローク幅を修正するソフトウエア及びルーチンである。一実施例では、途中で及び初期段階で全てのストローク及びセグメントがスムージングルーチンを経ることとし、検出プロセスで導入されたアーチファクトが最小化されるようにする。一般にこれは、メモリの他のモジュール３０４−３１４で処理される前に行われる、ストロークデータの前処理である。他の実施例では、スムージングモジュール３１０はセグメントの端及びセグメントの内側を滑らかにする。このスムージングは、隣接するセグメントの幅が大きく変化しないことを保証することで達成され、それは、隣接するセグメントの幅の間で最少変化を強制することでなされる。これは、セグメント間で視覚的な遷移の様子を排除する。スムージングモジュール３１０の動作は、図９Ａ及び９Ｂを参照しながら以下で詳細に説明される。
【００３７】
近接判定モジュール３１２は、ショートストローク及び他のストロークに対するそれらの近接度を判定し、他のストロークに対するそれらの近接度により幅を調整するソフトウエア及びルーチンである。一般に、ストロークの表示を通常の手書きにできるだけ近づけるために、このモジュールは、予め定めた互いの近辺の中にあるストロークが、他のストロークに一致するサイズの幅を有することを保証する。近接判定モジュール３１２の動作は図１０に関連して以下で更に詳細に説明される。
【００３８】
ストローク優勢度モジュール３１４は、多数のストロークを含む領域を判定するためのソフトウエア及びルーチンである。そのような高密度の領域では、ストロークの幅は、ストローク優勢度に従う別の方法で修正される。ストローク優勢度モジュール３１４は、そのような領域を判別し、どのストロークがそのような領域に該当するかを判定し、それらがどのように別様に又は追加的に処理されるかを決定する。ストローク優勢度モジュール３１４の動作は、図１１及び１２に関連して以下で更に詳細に説明される。
【００３９】
＜サンプルストローク＞
図４Ａを参照するに、従来技術による未修正のストローク例４００が示されている。ディジタイザ２１４で捕捉されたデータを利用して、一貫した幅で線４００を生成している。図示されているように、ライン幅は決して変化していない。以下の表１を参照するに、ディジタイザ２１４で生成され且つ従来の方法で処理されたデータは、「イベント」、「Ｘ」、「Ｙ」及び「時間」の列で示される。
【００４０】
【表１】
2008181505.tif 000003
図４Ｂを参照するに、本発明のシステム１００により生成されたストローク４０２が示されている。従来技術で使用されたパラメータに加えて、本発明は、表１の「Ｄ／Ｔ」で示される列で与えられているような速度を利用して、ストローク幅を修正する。図示されるように、ストローク４０２の幅は、速度が最大になる地点４０８でより太くなるように修正される。図４Ｂは、本発明によるシステム１００及び方法が、図６Ａ及び６Ｂに関して以下で後述されるようなストローク速度に基づく追加的な処理により、ストロークの端部４０４，４０６をどのように先細りにするかを示す。
【００４１】
図５Ａは従来技術による未修正の別のストローク例の図形表示である。ディジタイザ２１４で捕捉されたデータを利用することで、一貫した幅の線５０２が生成される。図示されているように、線がストローク５０２の端部５０４，５０６にあったとしても、急激に曲がった部分５０８にあったとしても、ライン幅は決して変化していない。以下の表２を参照するに、ディジタイザ２１４で生成され従来方法で処理されたデータは、「イベント」、「Ｘ」、「Ｙ」及び「Ｔ(ms)」の列で示される。
【００４２】
【表２】
2008181505.tif 000004
図５Ｂは曲率に合わせた本発明の一実施例によるストローク５２０の図形表示を示す。図示されているように、ストローク５２０の幅はセグメントの曲率に依存して大きく変わっている。本発明のシステム１００及び方法により、より急激に曲がっている線の部分５２６は狭い幅を有し、端５２２，５２４は先細りになっている。
【００４３】
＜方法＞
図６Ａ及び６Ｂを参照しながら、表示する手書き線幅を変える本発明による方法例を説明する。本プロセスは、ストロークをショートストローク及びロングストロークに分けることから始まる（ステップ６０２）。一実施例では、ストロークは長さ及び時間に基づいてロング及びショートのストロークに分けられる。一実施例では、ショートストロークは、描くのに０．４秒未満しかかからない又は１２ピクセル未満の距離にしか及ばないものである。次に本方法は、ロングストロークの処理が完了したか否かを判定する（ステップ６０４）。完了していれば、本方法は図６Ｂに関して後述されるプロセスに続く。処理する更なるロングストロークが存在していたならば、本方法は次のロングストロークを選択する（ステップ６０６）。ロングストロークを構成するセグメントを順に処理することで、各ロングストロークは分析される。選択されたストローク中の全てのセグメントが処理されたか否かを本方法は判定する（ステップ６２４）。完了していたならば、本方法はセグメント内側を滑らかにするステップ６２４に進む。このプロセスは図９Ａに関して以下で更に詳細に説明される。そして本方法はセグメント端部を滑らかにする（ステップ６２６）。このプロセスは図９Ｂに関して以下で更に詳細に説明される。ステップ６２６の後で、本方法はステップ６０４に戻り、処理を要する更なるロングストロークの有無を判定する。
【００４４】
ステップ６０８で本方法がセグメントの処理を終了していなかったならば、次のセグメントが選択される（ステップ６１０）。選択されたセグメントが端部のセグメントであるか否かを本方法は検査する（ステップ６１２）。端部であったならば、本方法はセグメント幅を最少幅に設定し（ステップ６１４）、ステップ６０８に戻り、処理する別のセグメントの有無を判定する。一方、ステップ６１２でセグメントがセグメント端部でないように確認された場合、本方法はそのセグメントが端部に近いか否かを判定する（ステップ６１６）。セグメントが端部に近かったならば、本プロセスはその地点での幅をそのセグメントに割り当てない。これは後のスムージングステップ６２４，６２６で処理されることになる。本プロセスはステップ６０８に戻り、処理する何らかの別のセグメントの有無を確認する。セグメントが端部に近くなかったならば、本方法は速度に基づいて調整されたセグメント幅を決定する（ステップ６１８）。速度に基づいてセグメント幅を修正する方法は、図７に関連して以下で更に詳細に説明される。本方法は曲率に基づいて調整されたセグメント幅を決定する（ステップ６２０）。曲率に基づいてセグメント幅を修正するプロセスは、図８を参照しながら以下で更に詳細に説明される。速度及び曲率に応じた適切な調整内容が決定されると、本プロセスはセグメント幅を修正する（ステップ６２２）。一実施例では、セグメント幅は速度に基づいて修正される。別の実施例では、セグメント幅は曲率に基づいて修正される。更に別の実施例では、速度及び曲率の双方に基づいてセグメント幅が修正される。例えば、セグメントの幅は、速度に応じて修正された幅をあるウェイト倍した値と、曲率に応じて修正された幅に１からそのウェイトを引いた係数を乗じた値との和の値に設定されてもよい。セグメントの幅が速度及び／又は曲率に応じて修正された後（ステップ６２２）、本方法はステップ６０８に戻り、現在のストロークのセグメントの処理が完了したか否かを確認する。
【００４５】
図６Ｂを参照しながら、ショートストロークを処理する方法を説明する。本方法はステップ６０４からステップ６３０へ遷移し、ショートストロークの処理を開始する。先ず本方法はショートストロークを「近接グループ」に分ける（ステップ６３０）。有利なことに、本発明は複数のストロークの幅を同様な幅を有するように設定し、その複数のストロークは時間的に又は物理的に互いに近いストロークである。これは、ショートストロークを近接グループに分割し、それらを一緒に処理することで部分的に達成される。このプロセスは図１１を参照しながら以下で更に詳細に説明される。例えば、ストロークが特に短かったならば、それは特別に処理される。例えば、「ｉ」の上のドット（点）は、「ｉ」自身とほぼ同じ幅を持つべきである。次に本方法は近接グループを処理し終えたか否かを確認する（ステップ６３２）。終了していたならば、本方法は完了し、終わる。しかしながら終了していなかったならば、本方法は処理する次オングループを選択する（ステップ６３４）。そして、本方法は或る領域の中でグループの「優勢度(dominance)」を判定する（ステップ６３６）。ある領域中の「優勢度」は、その領域中のストロークの幅についてどの程度大きなウェイトが、選択されたストロークグループの幅を設定するのに与えられるべきかについての入力を与える。ストローク優勢度を判定する方法は、図１０を参照しながら以下で説明される。そして本方法は選択されたストロークのグループがその領域内で「優勢」であるか否かを判定する。本質的には、本方法は所与のその領域内に多くのショートストロークがあるか否かを判定する。さほどなければ、本方法はその領域内のロングストロークに合わせてショートストロークの幅を調整することになるであろう。本方法はそれを次のようにして達成する：その領域内のロングストロークの幅を計算し（ステップ６４４）、それらの幅の平均値を、グループのメンバであるショートストローク各々についてのセグメント幅として割り当てるようにする（ステップ６４６）。ショートストロークのそのグループがその領域で支配的であるようにステップ６３８で確認されたならば、本方法は（ＹＥＳのフローに遷移し）、グループ中のショートストロークの平均長さを計算し（ステップ６４０）、グループ中のショートストロークのセグメントを、平均長さの関数になるように設定する（ステップ６４２）。ステップ６４６又は６４２の後、本方法はステップ６４８に続き、ショートストロークについて最少の先細り処理が実行される。有利なことに、本発明はストロークの最初及び終わりに僅かのテーパをかけ、ユーザが書込を開始又は終了する場合に圧力を徐々に印加したり解放するのを装っている。一実施例では、ストロークの最初及び末尾にテーパをかけるのに時間差を利用して先細りにする。ステップ６４８では、本方法はショートストロークのグループを処理し終えたか否かを判定する。
【００４６】
図７を参照しながら、ストロークが入力された時の速度に基づいて線幅を変える方法の一例を説明する。本方法はそのセグメントの及び直近のセグメントの速度を計算することから始まる（ステップ７０２）。一実施例では、この計算は入力がユーザから受信される際にリアルタイムで実行される。そのような場合、速度が計算されつつあるセグメントに先行するセグメントのみが、速度計算に使用可能である。しかしながら、ストロークが捕捉された後に（直後に又はかなり後になってもよい）処理が行われるならば、選択されたセグメントに先行するセグメント及び後続のセグメントが速度計算に使用可能になる。一実施例では単に速度計算は、セグメントの開始からセグメントの終了までの時間でセグメントの長さを割ったものである。一旦速度が計算されると、そのセグメントの速度が「失速速度(stall  out  velocity)」未満であるか否かを本方法は確認する（ステップ７０４）。失速速度未満であったならば、そのセグメントについて調整される幅は最少幅に設定される（ステップ７０６）。なぜなら、所定のデフォルトの閾値幅があり、どのセグメントもその閾値幅を下回ることはできないからである。調整幅を最少幅に設定した後、本方法はステップ７１２に進み、１．０の速度重みを割り当てる。このセグメントについての速度が失速速度より速いようにステップ７０４で確認された場合、本方法はステップ７０８に進む。ステップ７０８では、そのセグメントについての速度が「脱出速度(escape  velocity)」より速いか否かを本方法は確認する。速かった場合、その速度は或る量を上回っており、その量とはストロークの幅を増やせる量であり、本方法はそのストロークについての調整幅を最大幅に等しく設定する（ステップ７１０）。ステップ７１０の後に、本方法はステップ７１２に続き、１．０に等しい速度ウェイトを設定する。有利なことに、本方法は幅の値とその幅の値についての確からしさの度合い（速度ウェイト）との双方を加味する。一実施例では、確からしさの値は０と１の間の範囲内にある。ステップ７０６及びステップ７１０では速度は最大値を超えており或いは最小値を下回っているので、速度ウェイト又は信頼度は１に設定される。
【００４７】
ステップ７０８でセグメントの速度が脱出速度より速くなかったならば、ストローク速度は或る範囲内にあり、その範囲は、幅を速度に比例して太くする関数に従って調整可能である。より具体的には、ストロークが急速に描かれた場合、その速度はストロークがゆっくり描かれた場合よりも速い。従って一般に本発明の方法は、急速に描かれたセグメントを、ゆっくり描かれたセグメントより太くする。本方法はステップ７１４に進み、調整される幅が速度の関数になるように設定され、速度の重みも速度の関数になるように設定される。より素早く描いたストロークが広い線になる上記の例は、セグメントが捕捉される時の速度に従って、線幅がどのように変えられるかを示す例になる。調整する幅及び速度重み係数を計算する多種多様な関数が存在してよいことを当業者は認識するであろう。書道の(calligraphic)筆を装うことを意図したシステムは、まさに反対の振る舞いをするかもしれない、即ち、素早いストロークで細い線を描き、遅い筆の動きによる滲みを装うように太くする。ステップ７１４又は７１２の何れかが終了すると、本方は終了し、終わる。
【００４８】
図８を参照しながら、セグメントの曲率に基づいて線幅を調整する方法を説明する。あるセグメント及び直近のセグメントの曲率を計算することで本方法は始まる（ステップ８０２）。一実施例では、「曲率半径」により曲率が与えられ、隣接するセグメントの垂直二等分線を特定し、そのセグメント間の距離を算出することで、曲率半径は見出される。一実施例では、曲率半径を決定するのに使用するセグメントは、ストローク中の実際のセグメントでなく、ストロークセグメント中間点の間のセグメントであり、ストロークをいくらか平滑化している。一実施例における曲率の計算はローパスフィルタリングを含み、ローパスフィルタリングは、スタイラスの位置をサンプリングするシステムで導入された非常に短いセグメントの影響を減らす。一実施例では、ストロークの所与の領域の曲率半径は、いくつかの隣接するセグメントに渡って平均化され、アーチファクトをサンプリングした影響を更に減らす。速度に関して上述したように、曲率による適合は、リアルタイム形式で演算されてもよいし、全てのセグメントが捕捉された後になされてもよい。処理が行われる時点に依存して、曲率適合計算を行う際に本方法は、現在のセグメントに加えて先行するセグメントだけを使用してもよいし、現在のセグメントに加えて先行する及び後続のセグメント双方を使用してもよい。或るセグメント及び隣接するセグメントの曲率が特定された後で、本方法は、その曲率が最大半径より大きいか否かを判定する（例えば、線が比較的直線的であった場合、曲率半径は最大半径より大きい）（ステップ８０４）。大きかった場合、調整される幅は最大幅に設定され（ステップ８０６）、本方法は終了する。大きくなかった場合、本方法はその曲率が最小半径（例えば、その領域が非常に曲がっており、即ち非常にねじれている場合、曲率半径は小さい）未満であるか否かを判定する（ステップ８０８）。最小半径未満であった場合、そのセグメントについて調整される幅は最少幅に設定され（ステップ８１０）、本方法は完了し、終了する。一般に、本方法は非常に曲がった線の部分を細くする。そのセグメントについて計算された曲率が最大半径及び最小半径の間にあった場合、本方法はステップ８１２に進み、最小値と最大値の間にある何らかの幅を、曲率の関数として算出する。そのような１つの関数は、最少曲率半径及び最大曲率半径の間の曲率の値を、最少セグメント幅及び最大セグメント幅の間の幅の値に単に線形に対応付ける。より滑らかな曲線の関数が使用されてもよい。
【００４９】
セグメントを平滑化するプロセスは、セグメント内側のスムージングとセグメント端部のスムージングの双方を含む。一般に、セグメント各々の幅を、隣接するセグメントの幅から過剰に大きく変化しないように調整することで、本発明はストロークを平滑化する。図９Ａを参照しながら本発明によるセグメント内側を平滑化する方法を説明する。本プロセスは、セグメント内側の処理が完了したか否かを確認することで始まる（ステップ９０２）。完了していれば本方法は終了する。平滑化する別の内側セグメント（インテリアセグメント）があった場合、次のセグメント対を選択することで本発明は続く（ステップ９０４）。セグメント間の線幅が、本発明で許容されるセグメント間の最大相違幅以下であるか否かを本方法は判定する(ステップ９０６)。最大相違幅以下であった場合、それら２つのセグメント間で追加的なスムージングのなされる必要はなく、本方法は平滑化する何らかの別の内部セグメントの有無を確認する（ステップ９０２）。一方、２つのセグメント間の線幅の相違量が許容されている最大相違幅より大きかった場合、幅の移り変わりを滑らかにするため、我々はそれら２つのセグメントを３つに分割する。本方法は選択したセグメント対の長さの合計が、幅平滑化の最少セグメントサイズの３倍より大きいか否かを確認する（ステップ９０８）。大きかった場合、本発明の方法は２つのセグメントを３つのセグメントに分割し（ステップ９１０）、中央のセグメントは、他の２つのセグメントの幅の中間に設定された幅を有する、或いは最大相違幅と同程度に異なるように設定された幅を有するようにする。セグメント長の合計が最少セグメントサイズの３倍より大きくなかった場合、本方法は第１の最大相違幅の範囲内に第２のものが該当するように修正する（ステップ９１２）。ステップ９１０及び９１２の後、本方法はステップ９０２に戻り、処理すべき残っている別の内側セグメントの有無を確認する。
【００５０】
図９Ｂを参照しながら、セグメント端部を平滑化する本発明による方法の一例を説明する。一般に、セグメント端部はそのセグメント端部をより小さなサブセグメントに分割することで滑らかにされる。本方法は、各セグメント端部でその端部から内側セグメントまでの距離を算出することから始まる（ステップ９５０）。そして本方法は長さに起因するサブセグメントの最大数を確認する（ステップ９５２）。長さに起因するサブセグメントの最大数は、スムージングする最少サブセグメント長で端部の距離を除算することで確認される。端部の距離はステップ９５０で計算されている。端部のスムージングプロセスでは、最少サブセグメント長が存在し、それを各サブセグメントは持っていなければならない。従ってセグメントは分割可能なサブセグメントの最大数に関して制限される。次に、本方法はサブセグメントの最大数を決定し（ステップ９５４）、我々は、必要量のスムージングを行うためにセグメントをその最大数に分割しようとしている。ここで「デルタ幅(width  delta)」を想定し、それは、最初の内側セグメントの幅と最少セグメント幅との間の差分に等しいものとする。このデルタ幅を利用することで、幅の相違に起因するサブセグメントの最大数は、そのデルタ幅を最大内側セグメントデルタ幅（段差の最大幅）で除算することで判定可能である。これは、セグメント間の幅の相違を平滑化する際に、セグメントを望むように分割するのにどの程度多くのサブセグメントを要するかの指標をもたらす。本方法はサブセグメントの数ｎを確認することに続き（ステップ９５６）、セグメントはその数に分割される。一実施例では、長さに起因するサブセグメント数の最大値及び幅の相違（デルタ）に起因するサブセグメントの最大数の内小さい方に数ｎが設定される。本方法は端部領域をｎ個のサブセグメントに分割することに続き（ステップ９５８）、最少幅から最初の内側セグメントの幅に至るまでｎ個のサブセグメントの幅で徐々に平滑化する。
【００５１】
図１０を参照しながら、ある領域における一群のストロークの「優勢度(dominance)」を計算する本発明の一実施例による方法の一例を説明する。本プロセスは、その領域中のショートストローク全ての長さの合計を計算することから始まる（ステップ１００２）。そして、その領域の中で何らかのショートストロークに「近い」一群のロングストロークを本方法は確認する（ステップ１００４）。ストロークが他のストロークに「近い」か否かを判定する方法は図１２に示されており、それについては後述される。ステップ１００４で確認された一群のロングストロークの長さが合計される（ステップ１００６）。次に、ステップ１００２によるショートストロークの全長がステップ１００６によるロングストロークの全長より長いか否かを本方法は判定する（ステップ１００８）。長かった場合、本方法はショートストロークが支配的であることを確認し、真(TRUE)を出力する（ステップ１０１２）。長くなかった場合、本方法はショートストロークが支配的でないことを確認し、偽(FALSE)を出力する（ステップ１０１０）。
【００５２】
図１１を参照しながら、ショートストロークを近接グループに分ける本発明による方法の一例を説明する。全てのショートストロークが分類されたか否かを判定することから本方法は始まる（ステップ１１０２）。分類されていれば本プロセスは完了し、終了する。分類されていなければ、本法は続いて未分類のショートストロークを選択し、ショートストローク用のグループを作成する（ステップ１１０４）。次に、本方法は或るショートストロークを反復的に加えることでそのグループを拡張し、或るショートストロークはそのグループ中のどのメンバにも「近い」（ステップ１１０６）。ステップ１１０６が完了すると、本プロセスはステップ１１０２に続き、全てのストロークが分類されたか否かを判定する。
【００５３】
図１２を参照しながら、あるストロークと別のストロークの近接度を計算する本発明による方法の一例を説明する。本プロセスはショートストロークの中心点を算出することから始まる（ステップ１１０２）。その点を中心とし且つ近接カットオフ距離に等しい半径を有する円を本方法は算出する。近接カットオフ距離は、ストローク同士が互いに「近い」と考えられるか否かの指標を与える所定の閾値である。本発明の方法では、ストローク同士が互いに所定の距離の範囲内にあった場合、そのストローク同士は近いものとする。次に、所与のストロークがステップ１２０４で想定した円と交わるか否かを本方法は判定する（ステップ１２０６）。交わる場合、ストロークは互いに「近い」と考えられ、真(TRUE)が出力される（ステップ１２１４）。ステップ１２０４で想定された円とストロークが交わらなかった場合、本方法はストローク間の最少時間差(minimum  time  delta)を算出する（ステップ１２０８）。ステップ１２０８で計算された最少時間差が、近接カットオフ時間(adjacency  time  cut  off)以下であるか否かを、本方法は確認する（ステップ１２１０）。距離に基づいてストローク同士が互いに近いと考えることに加えて、本発明は、ストローク同士がほぼ同時に入力されていた場合も、そのストロークを互いに近いと考える。近接カットオフ時間は或る閾値を与え、その閾値により、ストロークは時間的に互いに「近い」か否か判別される。ステップ１２０８の時間差が近接カットオフ時間以下であった場合、ストロークは互いに近いものであり、本法は続いて真(TRUE)を出力する（ステップ１２１４）。一方、ステップ１２０８の時間差が近接カットオフ時間より大きかった場合、ストロークは互いに近いようには考えられず、本法は続いて偽(FALSE)を出力する（ステップ１２１２）。
【００５４】
以上、本発明の実施例の説明が理解を促すように与えられた。その説明は余すところのないものであることを意図するものではないし、本発明を開示された詳細な形態に限定しようとするものでもない。多くの修正や変形が上記の教示に照らして可能である。本発明の範囲は詳細な説明に限定されず、原則として本願の特許請求の範囲によってしか限定されないことが意図される。当業者に理解されるように、本発明の精神や本質的特徴から逸脱せずに、本発明は他の特定の形態で実施されてもよい。同様に、モジュール、ルーチン、特質、属性、方法その他の態様についての特定のネーミングや区分けは、必須でもなく重要でもない。本発明又はその特徴を実現する手段は、名称、区分け及び／又はフォーマットを別様に持っていてもよい。更に、関連技術分野で通常の知識を有する者に明らかなように、モジュール、特質、属性、方法その他の本発明の形態は、ソフトウエアとして、ハードウエアとして、ファームウエアとして、又はそれらの組み合わせとして実現可能である。本発明のコンポーネント（具体例は、モジュール）がソフトウエアとしてどこで実現されようとも、そのコンポーネントは、スタンドアローンプログラムとして、より大きなプログラムの一部として、個々の複数のプログラムとして、静的に又は動的にリンクしたライブラリとして、カーネルローダブルモジュールとして又はデバイスドライバとして実現可能であり、及び／又はコンピュータプログラミングの技術分野で通常の知識を有する者にとって現在既知の又は将来既知になる他の如何なる方法によっても実現可能である。更に本発明はどの特定のプログラミング言語にも限定されず、どの特定のオペレーティングシステムにも環境にも限定されない。従って本発明に関する開示内容は、例示であることが意図されており、特許請求の範囲で規定される本発明の範囲を限定しようとするものではない。
【図面の簡単な説明】
【００５５】
【図１】本発明によるディジタルタブレット及びスタイラスを含むシステム例を示す図である。
【図２】本発明により構築されたシステムのブロック図を示す。
【図３】本発明により構築された図２のコンピュータのメモリを示すブロック図である。
【図４Ａ】従来技術による未修正のストロークの図形表示を示す図である。
【図４Ｂ】本発明の一実施例により速度に合わせて修正されたストロークの図形表示を示す図である。
【図５Ａ】従来技術による未修正のストロークの図形表示を示す図である。
【図５Ｂ】本発明の一実施例により曲率に合わせて修正されたストロークの図形表示を示す図である。
【図６Ａ】表示する手書き線幅を変更する本発明による方法例を示すフローチャートである。
【図６Ｂ】表示する手書き線幅を変更する本発明による方法例を示すフローチャートである。
【図７】速度に基づいて線幅を変更する本発明による方法例を示すフローチャートである。
【図８】曲率に基づいて線幅を変更する本発明による方法例を示すフローチャートである。
【図９Ａ】セグメント内側を滑らかにする本発明による方法例を示すフローチャートである。
【図９Ｂ】セグメント端部を滑らかにする本発明による方法例を示すフローチャートである。
【図１０】ある領域でグループの優勢度を算出する本発明による方法例を示すフローチャートである。
【図１１】ショートストロークを近接グループに区分けする本発明による方法例を示すフローチャートである。
【図１２】あるストロークとショートストロークとの近接度を算出する本発明による方法例を示すフローチャートである。
【符号の説明】
【００５６】
１００  システム
１０２  スタイラス
１０４  コンピュータ装置
２０２  プロセッサ
２０４  メインメモリ
２０６  データストレージデバイス
２０８  システムバス
２１０  ディスプレイ
２１２  キーボード及びカーソル制御部
２１４  ディジタイザ
２１６  ネットワークコントローラ
２１８  入力／出力（Ｉ／Ｏ）装置
２５０  制御部
３０２  オペレーティングシステム
３０４  ストローク制御モジュール
３０６  速度適応モジュール
３０８  曲率適応モジュール
３１０  スムージングモジュール
３１２  近接判定モジュール
３１４  ストローク優勢度モジュール
【図１】
2008181505.tif 000005
【図２】
2008181505.tif 000006
【図３】
2008181505.tif 000007
【図４Ａ】
2008181505.tif 000008
【図４Ｂ】
2008181505.tif 000009
【図５Ａ】
2008181505.tif 000010
【図５Ｂ】
2008181505.tif 000011
【図６Ａ】
2008181505.tif 000012
【図６Ｂ】
2008181505.tif 000013
【図７】
2008181505.tif 000014
【図８】
2008181505.tif 000015
【図９Ａ】
2008181505.tif 000016
【図９Ｂ】
2008181505.tif 000017
【図１０】
2008181505.tif 000018
【図１１】
2008181505.tif 000019
【図１２】
2008181505.tif 000020