(57)【要約】【課題】リアルタイムのインクストローク平滑化、軌道予測、及びインクストローク入力のＧＰＵ活用レンダリングを効率化するためのシステムを提供する。【解決手段】第１のインク点及び第２のインク点が受信され、これらに基づきアクティブベジエ近似が演算される。引き続き、第１インク点及び第２インク点に対して時間的に後に第３のインク点が受信される。第３のインク点がアクティブベジエ近似に十分合致するか否かが判定される。第３のインク点が十分合致すると判定された場合、第１のインク点、第２のインク点、及び第３のインク点を含む更新済みのアクティブベジエ近似が演算される。第３のインク点が十分合致しないと判定された場合、第３のインク点を含むが第１のインク点及び第２のインク点を含まない異なる新たなベジエ近似が演算される。ＧＰＵを活用して、ベジエ近似に基づく平滑化インクストロークがレンダリングされる。【選択図】図２
2019204522.tif 000002
【特許請求の範囲】
【請求項１】
デジタルインク入力を平滑化するために、少なくとも１つのプロセッサを含んだ１つ以上の演算装置で実施される方法（１４００）であって、
第１のインク点を受信すること（１４１０）と、
第２のインク点を受信すること（１４１２）と、
少なくとも前記第１のインク点及び前記第２のインク点に基づき、アクティブ３次ベジエ近似を演算すること（１４１４）と、
第３のインク点を受信すること（１４１６）と、
前記第３のインク点が前記アクティブ３次ベジエ近似に十分合致するか否かを判定すること（１４１８）と、
少なくとも前記第１のインク点、前記第２のインク点、及び前記第３のインク点を利用して新たな３次ベジエ近似を演算すること（１４２０）と、
を備える、方法。
【請求項２】
前記第３のインク点が前記アクティブ３次ベジエ近似に十分合致すると判定すると、新たなベジエ近似の演算は、前記アクティブ３次ベジエ近似の更新を備える、請求項１に記載の方法。
【請求項３】
前記第３のインク点が前記アクティブ３次ベジエ近似に十分合致しないと判定すると、新たな３次ベジエ近似の演算は、前記アクティブ３次ベジエ近似を終了し、第２の３次ベジエ近似を開始することを備える、請求１項に記載の方法。
【請求項４】
１つ以上の意図された尖点が存在するか否かを判定することをさらに備え、
意図された尖点が検出されない場合、前記アクティブ３次ベジエ近似及び前記第２の３次ベジエ近似の間にＣ１連続性を保存する、請求項３に記載の方法。
【請求項５】
前記第１のインク点、前記第２のインク点、及び前記第３のインク点は、デジタル化されると連続的に受信され、
前記アクティブベジエ近似は、入力機器が入力データの提供を継続している間に演算される、請求項１に記載の方法。
【請求項６】
前記第３のインク点が前記アクティブ３次ベジエ近似に十分合致するか否かを判定することは、前記第２のインク点及び前記第３のインク点で記述される多角形と前記アクティブ３次ベジエ近似との間の距離を近似することを備える、請求項１に記載の方法。
【請求項７】
前記第２のインク点及び前記第３のインク点を接続する多角形と前記アクティブ３次ベジエ近似との間の距離が閾値以下である場合、前記第３のインク点は、前記アクティブ３次ベジエ近似に十分合致すると判定する、請求項６に記載の方法。
【請求項８】
前記閾値は、少なくとも部分的に、前記デジタルインクがレンダリングされるディスプレイの解像度と、前記デジタルインクをレンダリングする変換と、の一方又は双方に基づく、請求項７に記載の方法。
【請求項９】
前記アクティブベジエ近似を未来に向かって拡張することにより、時間的に後の時点で受信される少なくとも１つの後続インク点を予測することをさらに備える、請求項１に記載の方法。
【請求項１０】
少なくとも前記第１のインク点、前記第２のインク地点、及び第３のインク地点を備える平滑化インク出力をレンダリングすることをさらに備える、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
「デジタルインク」とは、マウス、デジタイザタブレット上のスタイラス／ペン、容量式タッチデジタライザ上の容量式スタイラス又は容量式オブジェクト（例えば、指）、タッチ感応表示画面を利用してもよく、又は利用しなくてもよいデジタイザタブレットと一体化された表示画面上のスタイラス／ペン等の入力機器から記録された１つ以上のストロークをいう。本明細書で使用される「インク」という用語は、「デジタルインク」と交換可能に使用され、これを意味する。さらに「ペン」及び／又は「スタイラス」という用語は、任意の種別の入力機器をいうため、一般的且つ交換可能に使用される。各ストロークは、１つ以上のインク点として記憶されてもよく、各インク点は、単なる例示であるが、入力機器の位置に対応する圧力、傾斜、包囲、及び座標（ｘ，ｙ）を含む種々の特性を含んでもよい。例えば、ユーザは、線又は曲線を描くように、コンピュータシステムのタッチ感応表示画面に沿ってペンを移動させてもよく、コンピュータシステムは、ユーザが入力機器を移動させるのに合わせ、時間の経過に合わせて（又は当業者に既知である他の任意の間隔で）入力機器の先端位置の軌跡に沿って座標（ｘ，ｙ）をサンプルしてもよい。これらの座標は、ユーザによって入力された曲線又は線に沿った点を表し、本明細書では「インク点」と称される。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
この概要は、詳細な説明において以下に詳述する概念の選択を簡易な形態で導入するために提供されるものである。この概要は、クレームの主題のキーとなるフィーチャ又は必須のフィーチャを特定することを意図するものでなく、クレームされる主題の範囲を判定する補助として使用されることを意図するものでない。
【課題を解決するための手段】
【０００３】
種々の実施形態、システム、方法、及びコンピュータ可読記憶媒体は、リアルタイムのインクストローク平滑化及び軌道予測を効率化するために提供される。少なくとも第１のインク点と第２のインク点とを含んだ複数のインク点が受信される。少なくとも第１のインク点及び第２のインク点に基づき（正確な量は、少なくとも部分的に、以下にさらに詳述する通り、次いで受信するインク点に対する十分な合致を得ることに基づいて判定される）、アクティブベジエ近似が演算される。第１のインク点及び第２のインク点に時間的に連続して、第３のインク点が受信され、第３のインク点がアクティブベジエ近似に十分に合致するか否かを判定する。ユーザがレンダリングに際して両者間の差異を検出できないであろうと判定された場合、第３のインク点はアクティブベジエ近似に十分合致すると判定される。このような判定は、通常、予め判定された閾値差異値に基づく。第３のインク点がアクティブベジエ近似に十分合致すると判定された場合、アクティブベジエ近似は、第３のインク点を含むように更新される。しかしながら、第３のインク点がアクティブベジエ近似に合致しないと判定された場合、アクティブベジエ近似は終了され、新たなベジエ近似が演算される。平滑化インク出力のレンダリングには、ストローク受容面、例えば、タッチ感応表示画面と関連した第１のインク点、第２のインク点、及び第３のインク点が含まれる。
【０００４】
本発明の実施形態は、大きなズームレベルであっても（例えば、２００〜４００％）、ストローク入力中及びストローク入力後に平滑に現れるデジタルインク入力を提供する。本発明の実施形態は、さらに、ユーザが、ストローク入力中又はストローク後のいずれかに、平滑化に基づくストロークへの変化に実質的に気づかないようにする、デジタルインクストロークの平滑化及びレンダリングを提供する。さらに、これらの実施形態によると、以下にさらに記載の予測技術を使用することにより、レンダリング時間は長くならず、多くの場合、短縮される。
【０００５】
以下の詳細な説明を考慮することにより、本発明のこれらのフィーチャ及びその他のフィーチャが明らかとなるであろう。関連技術の当業者にとって、本明細書に照らして、本発明の態様の代替となる組み合わせが、単独で、又は、本明細書に規定のステップの１つ以上の要素との組み合わせにおいて、本発明又は本発明の一部の修正又は代替として使用されてもよいことは明らかであろう。本明細書に含まれる本発明についての説明は、このような修正及び代替も網羅することが意図されるものである。
【図面の簡単な説明】
【０００６】
前述の概要及び以下の詳細な説明は、クレームする実施形態に関する限定でなく、例示として含まれる添付の図面とともに熟読することで、よりよく理解される。添付の図面において、要素には参照符号を付しており、３桁の参照符号の最初の桁と、４桁の参照符号の最初の２桁は、その要素が最初に示された図面の番号を示す。異なる図面における同一の参照符号は、同一又は同様の要素をいうものである。
【０００７】
【図１】本発明の実施形態の実施に際して使用されるのに好適な一例としての演算環境のブロック図である。
【図２】本発明の実施形態が採用されてもよい、一例としての演算システムのブロック図である。
【図３】本発明の一実施形態に応じて生成されてもよいＣ０連続スプラインの、一例としての「悪い」アーチファクトを示す概念図である。
【図４】本発明の一実施形態に係るＣ１連続フィッタによって生成されてもよい、一例としての不安定な挙動を示す概念図である。
【図５】本発明の一実施形態に係る、図４に示した不安定な挙動のない、一例としての連続スプラインを示す概念図である。
【図６】本発明の一実施形態に係る、５点前予測のための一例としての予測、実現、及びエラーベクトルを示す概念図である。
【図７】本発明の一実施形態に係るインクストロークのセグメントを示す概念図である。
【図８】本発明の一実施形態に係る一例としてのインクレンダリング方法を示すフロー図である。
【図９】本発明の一実施形態に係るインスタンス化モザイク処理の一例としての実施を示す概念図である。
【図１０】本発明の一実施形態に係るインスタンス化モザイク処理の他の一例としての実施を示す概念図である。
【図１１】本発明の一実施形態に係る２つの隣接インク点（Ｍが同一性であると想定する）の概念図である。
【図１２】本発明の一実施形態に係るＰ（ｉ＋１）（ＴｏｐＯｒＢｏｔｔｏｍ＝０、ＳｔａｒｔＯｒＥｎｄ＝１、及びＭが同一性であると推定する）周辺のクローズアップを示す概念図である。
【図１３】Ｐ＋Ｄ（ＴｏｐＯｒＢｏｔｔｏｍ＝０、ＳｔａｒｔＯｒＥｎｄ＝１、及びＭが同一性であると推定する）周辺の図１２の部分のクローズアップを示す概念図である。
【図１４】本発明の一実施形態に係る一例としてのデジタルインク入力の平滑方法を示すフロー図である。
【図１５】本発明の一実施形態に係る一例としてのデジタルインク入力の平滑化及びレンダリング方法を示すフロー図である。
【図１６】本発明の一実施形態に係る他の一例としてのデジタルインク入力の平滑化及びレンダリング方法を示すフロー図である。
【発明を実施するための形態】
【０００８】
法的要件を満たすべく、本発明の主題を本明細書中に具体的に説明する。しかしながら、その説明は、本特許の範囲の限定を意図するものでない。むしろ、本発明者らは、クレームする主題が、その他の現在又は未来の技術との連携において、異なるステップ又は本文書に記載のものと同様のステップの組み合わせを含む、他の方法により実施されてもよいと考えている。さらに、本明細書中、「ステップ」及び／又は「ブロック」という用語は、採用される方法の異なる要素を含意するものとして使用されてもよく、これらの用語は、個々のステップの順が明示的に記載されない限り、且つ、その明示的な記載がある場合を除いて、種々のステップ間に何らの特定の順序も暗示するものとして解釈されてはならない。
【０００９】
デジタルインクのレンダリングでは、ズーム動作中、インクが平滑でなく、段差状の外観を有すること、待機時間が長くなること（例えば、キャッシング及び／又はストローク後の平滑化及びレンダリングによる）、及びペン又はその他の入力機器が受信面から離された時（すなわち、ストローク後）のインクカラー又はその他の外観性質の変化を含む多数の問題が生じる。
【００１０】
本明細書に記載の技術の種々の態様は、通常、リアルタイムのインクストローク平滑化、軌道予測、及びＧＰＵ（グラフィクス処理部）を活用したレンダリングを効率化するためのシステム、方法、及びコンピュータ可読記憶媒体を対象とする。少なくとも第１のインク点及び第２のインク点を含む複数のインク点は、各インク点がデジタル化されるのに合わせて受信される。少なくとも第１のインク点及び第２のインク点に基づき、アクティブベジエ近似が演算される。当業者に理解される通り、ベジエ近似又は曲線は、グラフィクスレンダリングにおいて平滑曲線のモデル化に利用されることの多いパラメータ曲線である。本明細書において利用される通り、ベジエ近似は、最も最近受信及び処理したインク点（この場合、第２のインク点）が属する曲線又は近似である場合に「アクティブ」であると考えられる。アクティブベジエ近似において利用されるインク点の正確な量は、少なくとも部分的に、次いで受信されるインク点に対する十分な合致を得ることに応じて決まる。すなわち、Ｎ個のインク点は、以下にさらに説明する通り、合致の目的で蓄積されてもよく、Ｎの値は適切な合致がもはや可能でなくなるまで増加を継続する。
【００１１】
続いて第１のインク点及び第２のインク点に対して時間的に後に、第３のインク点を受信し、第３のインク点がアクティブベジエ近似に十分に合致するか否かが判定される。第３のインク点は、ユーザがレンダリングに際して両者間の差異を検出できないであろうと判定されると、アクティブベジエ近似に十分合致すると判定される。このような判定は、通常、予め定められた閾値載置、例えば、１０ＨＩＭＥＴＲＩＣ単位（０．１ｍｍ）に基づくものである。第３のインク点がアクティブベジエ近似に十分合致すると判定された場合、第３のインク点を含むようにアクティブベジエ近似を更新する。実施形態において、「更新済み」のベジエ近似は、「新たな」ベジエ近似又は曲線と考慮されてもよい。しかしながら、第３のインク点がアクティブベジエ近似に十分合致しないと判定されると、アクティブベジエ近似を終了し、異なる新たなベジエ近似を演算する。ＧＰＵを活用して、第１のインク点、第２のインク点、及び第３のインク点を備える、結果として得られた平滑化インク出力を、例えば、タッチ感応表示画面等のストローク受信面と関連してレンダリングする。（当業者に理解及び認識される通り、本明細書中、３次ベジエ平滑化を主として説明するが、本実施形態中において、４次ベジエ平滑化、４倍以上の倍率のベジエ、又はその他任意の既知の平滑化アルゴリズムを利用してもよい。）
【００１２】
従って、本発明の一実施形態は、デジタルインク入力を平滑化するために、少なくとも１つのプロセッサを含んだ１つ以上の演算装置によって実施される方法を対象とする。本方法は、第１のインク点を受信することと、第２のインク点を受信することと、第１のインク点及び第２のインク点に基づき、アクティブ３次ベジエ近似を演算することと、第３のインク点を受信すること（第３のインク点は、第１及び第２のインク点に次いで、時間的に後に受信される）、第３のインク点がアクティブ３次ベジエ近似に十分合致するか否かを判定することと、第１のインク点、第２のインク点、及び第３のインク点を利用して、新たな３次ベジエ近似を演算することとを含む。新たな３次ベジエ近似は、第３のインク点がアクティブ３次ベジエ近似に十分合致すると判定された場合、更新済みのアクティブ３次ベジエ近似を備えてもよく、第３のインク点がアクティブ３次ベジエ近似に十分合致しないと判定された場合、異なる新たな３次ベジエ近似を備えてもよい。
【００１３】
他の実施形態において、本発明は、中央処理装置（ＣＰＵ）及びグラフィック処理装置（ＧＰＵ）を備えたシステムを対象とする。ＣＰＵは、第１のインク点及び第２のインク点を連続的に受信し、第１のインク点及び第２のインク点に基づいてアクティブ平滑インクフラグメントを生成し、（次いで、時間的に後に）第３のインク点を受信し、第３のインク点がアクティブ平滑化インクフラグメントに十分合致するか否かを判定し、第３のインク点がアクティブ平滑化インクフラグメントに十分合致すると判定すると、アクティブ平滑化インクフラグメントを更新するように構成される。或いは、第３のインク点がアクティブ平滑化インクフラグメントに十分合致しないと判定された場合、ＣＰＵは、アクティブ平滑化インクフラグメントを終了し、第２の平滑化インクフラグメントを開始するように構成される。ＧＰＵは、表示画面との関連で、第１のインク点、第２のインク点、及び第３のインク点を備える平滑化インク出力をレンダリングするように構成される。
【００１４】
さらに他の実施形態において、本発明は、少なくとも１つのプロセッサと、デジタルインクの平滑化及びレンダリングルーチンを記憶するメモリとを備える装置を対象とする。少なくとも１つのプロセッサによって実行されると、デジタルインクの平滑化及びレンダリングルーチンにより、装置に、第１のインク点を受信させ、第２のインク点を受信させ、第１のインク点及び第２のインク点に基づいてアクティブ３次ベジエ近似を演算させ、（第１のインク点及び第２のインク点に次いで、時間的に後に）第３のインク点を受信させ、第３のインク点がアクティブ３次ベジエ近似に十分合致するか否かを判定させ、第１のインク点、第２のインク点、及び第３のインク点を利用して、新たな３次ベジエ近似を演算させ、表示画面との関連で第１のインク点、第２のインク点、及び第３のインク点を備えた平滑化インク出力をレンダリングさせる。
【００１５】
本発明の実施形態の概略について簡単に説明したが、本発明の種々の態様に一般的な文脈を与えるため、本発明の実施形態が実施されてもよい一例としての動作環境を以下に示す。図面を全般的に参照し、まず特に図１を参照すると、本発明の実施形態を実施するための一例としての動作環境が示されており、一般的に演算装置１００として設計されている。演算装置１００は好適な演算環境の一例であるが、本発明の実施形態の仕様又は機能の範囲に関して何らの限定を提示することを意図するものでもない。演算装置１００は、図示のいずれの構成要素又はいずれの構成要素の組み合わせに関する依存性又は要求も有するものと解釈されてはならない。
【００１６】
本発明の実施形態は、プログラムモジュール等のコンピュータによる使用が可能であるか、又は、コンピュータによる実行が可能である指示を含むコンピュータコード又は機械による使用が可能な指示が、パーソナルデータアシスタント又はその他の手持ち式装置等、コンピュータ又はその他の機械によって実行される一般的に文脈において説明されてもよい。一般的に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、構成要素、データ構造等を含み、且つ／又は、特定のタスクを実施するか、特定の抽象データ種別を実施するコードをいう。本発明の実施形態は、手持ち式装置、消費者電子機器、汎用コンピュータ、専用演算装置等を含むが、これに限定されない、種々のシステム構成において実施されてもよい。本発明の実施形態はまた、通信ネットワークを通じて接続された遠隔処理装置によってタスクが実施される分散演算環境において実施されてもよい。
【００１７】
引き続き図１を参照すると、演算装置１００は、以下の装置を直接又は間接に連結するバス１１０を備える。すなわち、メモリ１１２、１つ以上のプロセッサ１１４、１つ以上の表現要素１１６、１つ以上の入力／出力（Ｉ／Ｏ）ポート１１８、１つ以上のＩ／Ｏ要素１２０、及び一例としての電源１２２である。バス１１０は、１つ以上のバスであってよいもの（アドレスバス、データバス、又はそれらの組み合わせ等）を表す。図１の種々のブロックは、明確にするために線で示されているが、実際には、これらのブロックは、論理的要素を表しており、必ずしも実際の要素でなくてもよい。例えば、表示装置等の表現要素は、Ｉ／Ｏ要素と考えられてもよい。また、プロセッサは、メモリを有する。本発明者らは、このようなものを当分野の性質であると認識しており、図１が本発明の１つ以上の実施形態との関係で使用可能な一例としての演算装置の単なる例示であることを繰り返しておく。「ワークステーション」、「サーバ」、「ラップトップ」、「手持ち式装置」等のカテゴリ間に区別はなく、これらはすべて、図１及び「演算装置」の参照の範囲内と考えられる。
【００１８】
演算装置１００は、通常、種々のコンピュータ可読媒体を含む。コンピュータ可読媒体は、演算装置１００によるアクセスが可能であり、揮発性媒体及び不揮発性媒体の双方、脱着式媒体及び非脱着式媒体の双方を含む、任意の利用可能な媒体であってもよい。コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を備え、コンピュータ記憶媒体は、それ自体が信号を除外する。コンピュータ記憶媒体は、コンピュータ可読指示、データ構造、プログラムモジュール、又はその他のデータ等の情報を記憶する任意の方法又は技術で実施される、揮発性及び不揮発性、且つ、脱着式及び非脱着式の媒体を含む。コンピュータ記憶媒体は、所望の情報を記憶するために使用可能であり、演算装置１００によるアクセスの可能なＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ又はその他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多目的ディスク（ＤＶＤ）又はその他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又はその他の磁気記憶装置、若しくはその他任意の媒体を含むが、これに限定されるものでない。一方、通信媒体は、搬送波又はその他の搬送機構等、変調データ信号においてコンピュータ可読指示、データ構造、プログラムモジュール、又はその他のデータを具体化し、任意の情報伝達媒体を含む。「変調データ信号」という用語は、信号内の情報を復号化するように設定又は変更された性質のうちの１つ以上を有する信号を意味する。非限定的な例として、通信媒体には、有線ネットワーク又は直接有線接続等の有線媒体と、音声、ＲＦ、赤外線、及びその他の無線媒体等の無線媒体が含まれる。上述の任意の要素の組み合わせも、コンピュータ可読媒体の範囲内に含まれなければならない。
【００１９】
メモリ１１２に、揮発性及び／又は不揮発性メモリの形態のコンピュータ記憶媒体が含まれる。メモリは、脱着式、非脱着式、又はそれらの組み合わせであってもよい。一例としてのハードウェア装置には、固体メモリ、ハードドライブ、光学ディスクドライブ等が含まれる。演算装置１００は、メモリ１１２又はＩ／Ｏ要素１２０等、種々の実体からデータを読み取る１つ以上のプロセッサを含む。表現要素１１６は、ユーザ又はその他の装置にデータ指示を提示する。一例としての表現要素には、表示装置、スピーカ、印刷要素、振動要素等が含まれる。
【００２０】
Ｉ／Ｏポート１１８は、演算装置１００を、Ｉ／Ｏ要素１２０を含む、その他の装置に論理的に連結させるが、これらの一部は内蔵されてもよい。一例としてのＩ／Ｏ要素には、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナ、プリンタ、表示装置、無線装置、コントローラ（スタイラス、キーボード、及びマウス等）、ナチュラルユーザインタフェース（ＮＵＩ）等が含まれる。実施形態において、ペンデジタイザ（図示せず）及び付随の入力機器（図示しないが、一例として、ペン又はスタイラスが含まれてもよい）は、フリーハンドユーザ入力をデジタル的に取得するために提供される。ペンデジタイザ及びプロセッサ１１４の間の接続は、直接行われてもよく、従来既知のシリアルポート、パラレルポート、及び／又は、その他のインタフェース、及び／又は、システムバスを利用した連結を介して行われてもよい。さらに、デジタイザ入力要素は、表示装置等の出力要素から分離された要素であってもよく、又は、いくつかの実施形態において、デジタイザの使用可能な入力領域は、表示装置の表示領域と同延であってもよく、表示装置と一体化されてもよく、若しくは表示装置に重畳されるか、又はこれに付随する別個の装置として存在してもよい。このような任意且つすべてのバリエーション、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【００２１】
ＮＵＩは、ユーザによって生成されたエアジェスチャ、声、又はその他の生理学的入力を処理する。適切なＮＵＩ入力は、演算装置１００と関連の表現のためのインクストロークとして解釈されてもよい。これらの要求は、さらなる処理のため、適切なネットワーク要素に送信されてもよい。ＮＵＩは、音声認識、タッチ及びスタイラス認識、顔認識、背板認証、画面上と画面隣接部の双方におけるジェスチャ認証、エアジェスチャ、頭部及び眼部追跡、及び演算装置１００のディスプレイに関連付けられたタッチ認識の任意の組み合わせを実施する。演算装置１００は、ジェスチャの検出及び認識のため、立体カメラシステム、赤外線カメラシステム、ＲＧＢカメラシステム、及びこれらの組み合わせ等の深度カメラを備えてもよい。さらに、演算装置１００は、動きの検出を可能にする加速度計又はジャイロスコープを備えてもよい。加速度計又はジャイロスコープの出力は、演算装置１００のディスプレイに提供され、没入型仮拡張現実又は仮想現実をレンダリングしてもよい。
【００２２】
本明細書に記載の主題の態様は、プログラムモジュール等のコンピュータ可読指示がモバイルデバイスによって実行される一般的文脈において説明されてもよい。通常、プログラムモジュールには、特定のタスクを実施するか、又は特定の抽象データ種別を実施するルーチン、プログラム、オブジェクト、構成要素、及びデータ構造等が含まれる。本明細書に記載の主題の態様はまた、通信ネットワークを通じて接続された遠隔処理装置によってタスクが実施される分散演算環境において実施されてもよい。分散演算環境において、プログラムモジュールは、メモリ記憶装置を含むローカルコンピュータ記憶媒体及び遠隔コンピュータ記憶媒体の双方に配置されてもよい。コンピュータ使用可能指示は、入力ソースに応じてコンピュータを反応させるインタフェースを形成する。これらの指示は、その他のコードセグメントと協働し、受信データのソースとともに受信されたデータに応じて、種々のタスクを開始する。
【００２３】
上述の通り、本発明の実施形態は、システム、方法、並びにシステム及び方法のためのコンピュータ可読記憶媒体を提供するものであり、コンピュータ記憶媒体は、リアルタイムのインクストロークの平滑化、軌道予測、及びＧＰＵ活用インクストロークレンダリングを効率化するために提供される。図２を参照すると、ブロック図は、本発明の実施形態が採用されてもよい一例としての演算システム２００を示すために提供される。通常、演算システム２００は、ストローク入力中及びストローク入力後、非常に大きなズームレベルであってもデジタル入力が平滑に現れる環境を示している。演算システム２００はさらに、平滑化及び／又はその他の処理に基づくストロークの変化がストロークの入力中又はストローク後のいずれかにおいてユーザに実質的に知覚されないように、デジタルインクストロークの平滑化及びレンダリングが提供される環境を示している。さらに、演算システム２００は、少なくとも部分的に以下にさらに説明する予測技術を使用することにより、レンダリング時間が延びることなく、多くの場合に短縮される環境を示している。
【００２４】
演算装置２００は、通常、不図示の他の構成要素の中でも、以下により完全に説明する通り、ディスプレイ２２４との関連で、デジタルインク入力を受信し、平滑化されたインク出力を提供するように構成されたユーザ演算装置２１０と、未来のインクストローク入力の平滑化及び予測を行うように構成されたインク平滑化エンジン２１２とを含む。実施形態において（且つ、図２に示す通り）、ユーザ演算装置２１０及びインク平滑化エンジン２１２は、ネットワーク２１４を介して互いに連通してもよい。ネットワーク２１４は、限定なく、１つ以上のローカルエリアネットワーク（ＬＡＮ）及び／又はワイドエリアネットワーク（ＷＡＮ）を含んでもよい。このようなネットワーキング環境は、オフィスで一般的に使用されるもの、社内コンピュータネットワーク、イントラネット、及びインターネットである。従って、本明細書において、ネットワーク２１４についてはさらなる説明を行わない。
【００２５】
本発明の実施形態の範囲内において、演算システム２００には、任意の数のユーザ演算装置２１０及び／又はインク平滑化エンジン２１２が採用されてもよいことを理解しなければならない。各々、単一の装置／インタフェースを備えてもよく、又は分散環境で協働する複数の装置／インタフェースを備えてもよい。例えば、インク平滑化エンジン２１２は、本明細書に記載のインク平滑化エンジン２１２の機能を統括的に提供する分散環境に配置された複数の装置及び／又はモジュールを備えてもよい。さらに、不図示の他の構成要素又はモジュールも演算システム２００内に含まれてよい。
【００２６】
いくつかの実施形態において、図示の構成要素／モジュールのうちの１つ以上は、スタンドアロン型アプリケーションとして実施されてもよい。他の実施形態において、図示の構成要素／モジュールのうちの１つ以上は、ユーザ演算装置２１０、インク平滑化エンジン２１２を介して、又はインターネットベースサービスとして実施されてもよい。当業者は、図２に示す構成要素／モジュールの性質及び数は例示であり、限定とみなされてはならないことを理解するであろう。実施形態の範囲内において所望の機能を達成するために、任意の数の構成要素／モジュールが採用されてもよい。さらに、構成要素／モジュールは、任意の数のインク平滑化エンジン２１２及び／又はユーザ演算装置２１０に配置されてもよい。単なる例示であるが、インク平滑化エンジン２１２は、単一の演算装置、演算装置のクラスタ、又は残りの構成要素の１つ以上から離間した演算装置として提供されてもよい。
【００２７】
本明細書に記載のこの配置及び他の配置は、単なる例として記されるものであることが理解されなければならない。他の配置及び要素（例えば、機械、インタフェース、機能、命令、及び機能のグループ化等）が、図示及び／又は説明したものの追加又は代替として使用可能であり、いくつかの構成要素はともに省略されてもよい。さらに、本明細書に記載の要素の多くは、別々の、すなわち分散された構成要素として実施されてもよく、又は他の構成要素との連携で実施されてもよく、任意の好適な組み合わせ及び位置に実施されてもよい機能的実体である。１つ以上の実体によって実施されるものとして本明細書に記載した種々の機能は、ハードウェア、ファームウェア、アプリケーション、ドライバ、及び／又はソフトウェアによって実施されてもよい。例えば、種々の機能は、メモリに記憶された指示を実行するプロセッサによって実施されてもよい。
【００２８】
ユーザ演算装置２１０には、例えば、図１を参照して説明した演算装置１００等、任意の種別の演算装置が含まれてもよい。図示の通り、ユーザ演算装置２１０は、インク入力受信要素２１６、インク入力送信要素２１８、平滑化（実施形態によっては拡張化）インクストローク出力受信要素２２０、及びディスプレイ２２４との関連で平滑化されたインク出力をレンダリングするＧＰＵ２２２を含む。インク入力受信要素２１６は、インクストロークのユーザ入力、通常は、ペン又はスタイラス等のＩ／Ｏ要素を介する入力を受信するように構成される。インク入力送信要素２１８は、インク入力受信要素２１６によって受信されたインクストロークを、例えば、ネットワーク２１４を介して、インク平滑化エンジン２１２に送信するように構成される。平滑化インクストローク出力受信要素２２０は、（以下により完全に説明する通り、通常は、インク平滑化エンジン２１２からネットワーク２１４を介して）ディスプレイ２２４との関連でレンダリングを行うための平滑化インク出力を受信するように構成される。ＧＰＵ２２２は、ディスプレイ２２４との関連でレンダリングを行うため、受信した平滑化インク出力を（以下により完全に説明する通り）処理するように構成される。
【００２９】
ユーザ演算装置２１０の任意の構成要素により実施されるものとして本明細書に記載した機能は、グラフィクスコンテンツをレンダリング可能な任意の他のアプリケーション、アプリケーションソフトウェア、ユーザインタフェース等によって実施されてもよいことに留意しなければならない。さらに、本発明の実施形態は、モバイル演算装置及びジェスチャ、タッチ、及び／又は声の入力を受容する装置に等しく適用可能であることに留意しなければならない。このような任意且つすべてのバリエーション、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【００３０】
図示の通り、インク平滑化エンジン２１２は、スプラインフィッタ２２６、インク予測要素２３２、及びインクレンダリング要素２３４を含む。スプラインフィッタ２２６は、３次ベジエセグメントのセットでインク点のストロークを近似するように構成される。スプラインフィッタ２２６には、一度に、且つ、新たなインク点毎に単一のインク点が供給され、アクティブベジエセグメントを更新するか、又は、新たなインク点がアクティブベジエセグメントに十分合致することができない場合、新たなベジエセグメントを開始するように構成される。そこで、スプラインフィッタ２２６は、２つのサブ構成要素、すなわち、ベジエフィッタ２２８及びセグメント化要素２３０を含む。
【００３１】
ベジエフィッタ２２８は、デジタル化されると、一度に１つずつ連続して受信されるアクティブ点のセットを維持するように構成される。このセットが更新される度に、ベジエフィッタ２２８は、新たな３次ベジエ近似を演算するように構成される。しかしながら、アクティブなセットは、以下により完全に説明する通り、セグメント化要素２３０によってリセットされることもあるので、必ずしもストロークの開始からすべての点を含む必要はない。
【００３２】
セグメント化要素２３０は、ベジエフィッタ２２８によって生成される合致の質を評価し、既存のベジエ近似をいつ更新すべきであるか、また新たなベジエ近似又は曲線をいつ開始すべきであるかを決定するように構成される。ベジエフィッタ２２８は、尖点検出（以下により完全に説明する）等のタスクも実施し、ベジエフィッタ２２８を構成することにより（以下により完全に説明する通り）スプラインの解析特性を制御する。
【００３３】
ベジエフィッタ２２８
この節では、ベジエフィッタ２２８がいかに３次ベジエ近似又は曲線でインク点のセットを近似するかを説明する。簡潔さのため、本説明では位置的情報のみを考慮する。しかしながら、計算式を任意の数のフィーチャまで拡張するのが簡単である。例えば、いくつかの実施例において、受信したインク点の半径（これは、入力ブラシストロークの印加圧力及びサイズに比例してもよい）が利用されてもよい。他の実施例において、傾斜、方位等の特性が使用されてもよい。このような任意且つすべてのフィーチャ、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【００３４】
任意の与えられた時点で、ベジエフィッタ２２８は、アクティブ点のセットＳｋ＝｛ｐ０、ｐ１、…、ｐｋ−１｝を単一のベジエセグメントＢ（ｔ）と合致させる。合致タスクは、最小化問題として定式化される。
Ｂ＊（ｔ）＝ａｒｇｍｉｎＢＥ
式中、Ｅは、以下により完全に説明される誤差関数である。
【００３５】
Ｐ（ｔ）、ｔ∈［０、１］をセットＳｋで記述される暗示的多角形であるとすると、
Ｐ（０）＝ｐ０
Ｐ（１）＝ｐｋ−１
【００３６】
本実施形態によると、多角形上の点とベジエ曲線との間の距離を演算するのは費用がかさむため、多角形のサンプリングで得られた２点とパラメータの同一値におけるベジエ曲線の間の距離が近似される。
【数１】
2019204522.tif 000003
【００３７】
そして、最少化が望まれる誤差関数は、以下の通り、規定されてもよい。
【数２】
2019204522.tif 000004
【００３８】
Ｎ＝ｋ及びｔｉは、誤差関数がＳｋにおけるすべての点のみを考慮に入れるべく、Ｐ（ｔｉ）＝ｐｉ、ｉ＝０、１、…、ｋ−１となるように選択される。しかしながら、３次近似が利用されているため、サンプルには少なくとも４つの点が含まれる。
【００３９】
最少化
最少化問題の変数は、Ｂの制御点である。Ｃ＝［Ｃ０、Ｃ１、Ｃ２、Ｃ３］を制御点のベクトルとする。最急降下アプローチを使用して、最適値を探す。
【数３】
2019204522.tif 000005
【００４０】
更新規則のパラメータαは、収束率を制御する。通常、値が大きくなるほど要求される反復は少なくなるが、同時に、αが大きいとき計算が不安定になる。利用されてもよい一例としてのパラメータαは、以下の通りである。
【数４】
2019204522.tif 000006
【００４１】
さらに、合致誤差に何らの改善も生じなかった反復の数でαを除算することにより、収束のリスクを軽減してもよい。
【００４２】
【数５】
2019204522.tif 000007
は、Ｂの制御点に対する近似誤差の勾配であり、以下の通り、演算されてもよい。
【数６】
2019204522.tif 000008
【００４３】
３次ベジエ近似の４つの制御点に対応して、更新規則には４つの自由度が存在することに留意しなければならない。しかしながら、次の節に記載のセグメント化要素２３０は、スプラインに所望の解析特性（例えば、連続性）を課すため、これらの自由度の一部を使用するであろう。
【００４４】
セグメント化要素２３０
セグメント化要素２３０は、２つの基本タスクを達成する。第１に、新たなベジエ近位を開始すべきであるか、又は現在のものを更新すべきであるかを決定する。第２に、新たな近似又は曲線が開始されると随時、３次ベジエフィッタ２２８を再構成することにより、スプライン（とりわけ、Ｃ０又はＣ１連続性）上の解析特性を実施する。本明細書で利用される通り、また当分野において理解される通り、「連続性」とは、隣接のベジエ曲線が接続される接合部における相対的平滑度をいう。「Ｃ０連続性」とは、隣接のベジエ曲線が同一の終点を共有する状況をいう。「Ｃ１連続性」とは、隣接のベジエ曲線が同一の終点及び同一の導関数をともに共有する状況をいう。
【００４５】
新たなベジエ近似を開始すべきか、又は現在のものを更新すべきかの決定は、合致の質に基づく。より具体的には、新たなベジエ近似を開始すべきか、又は現在のものを更新すべきかの決定は、受信したデジタル化インク点と３次ベジエフィッタ２２８で演算された最良の近似との間の最大距離に基づく。実施形態において、カットオフ閾値は、１０ＨＩＭＥＴＲＩＣ単位（０．１ｍｍ）、つまり、使用可能性研究におけるユーザが、新たな点の到達時のインク変化（新たな点への拡張以外）が目立つことを示した点であってもよい。しかしながら、この閾値は、レンダリングの中のインクの物理的サイズに相関することに留意しなければならない。例えば、ウェットインク（すなわち、入力機器が受信面から離される前、ストローク活動中にレンダリングされるインク）が１０倍の倍率にレンダリングされている場合、この閾値は、１０倍小さくする必要がありそうで、さもなければユーザがインク変化に気づいてしまう。当然のことながら、ドライインク（すなわち、入力機器が一旦離されたときの、受信面上のインク）は変化しない（すなわち、セグメント化が既に行われている）ため、この点はウェットインクについてのみ意味がある。この閾値は、過去のインク点の任意の質、このようなインク点の任意のフィーチャ（例えば、座標、圧力、傾斜、捩り等）の関数であってもよく、且つ／又は、装置（例えば、ＤＰＩ、利用可能なメモリ、ＣＰＵ、ＧＰＵ等）に依存してもよいことがさらに留意されなければならない。このような任意且つすべてのバリエーション、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【００４６】
セグメント化要素２３０によって達成される他方の重要なタスクは、スプラインに所望の解析特性を課すことである。スプラインは、少なくとも接続されていなければならず（Ｃ０連続性）、これは各ベジエ曲線又はセグメントの第１の制御点が過去の曲線又はセグメントの最終制御点と合致しなければならないことを意味するため、１つの自由度が失われる。
【数７】
2019204522.tif 000009
【００４７】
Ｃ０連続性は、スプラインが接続されていることを保証するものであるが、図３に示す通り、平滑なインクを生成するのに十分でなく、円で囲んだ接続領域が悪い（非平滑な）アーチファクトを指摘している。
【００４８】
本発明の実施形態によると、図３の悪いアーチファクトは、Ｃ１連続性を課すことによって除去されてもよい。パラメトリックＣ１連続性は、ｔ＝０におけるセグメントの導関数がｔ＝１における過去のセグメントのものと合致することを必要とする。
【数８】
2019204522.tif 000010
【００４９】
しかしながら、良好な合致を生じるために自由度をほとんど残さないパラメトリックＣ１連続性が課されたとき、他の自由度が失われる。幸い、スプラインが平滑に見えるのに必要なものは、制限度がより低く、第２の制御点の方向のみを拘束することを要求する幾何学的（パラメトリックとは対照的）Ｃ１連続性のみである。
【数９】
2019204522.tif 000011
【００５０】
本実施形態によると、幾何学的Ｃ１連続性は、更新規則の適用後に要求される方向に第２の制御点を投影することによって課されてもよい。
【００５１】
不安定な挙動の防止
時には、幾何学的Ｃ１連続性の実施の結果として、例えば図４に示す通り、望ましくない不安定な挙動の慣習を生じてしまう。この挙動は、多くの場合、Ｃ０連続スプラインに時折観察される尖点より悪く現れる。この挙動の根本的要因は、ｔ＝１における最後に実行されたベジエの導関数が対応のデジタル化された点に一致しないことのように見受けられる。従って、この問題は、図５に示す通り、ｔ＝１におけるベジエ近似の導関数がデジタル化された最後の２点を接続するベジエ近似又はセグメントの導関数と合致しなければならないという新たな制約をベジエフィッタ２２８に加えることにより、軽減されてもよい。本実施形態の範囲内において、他の軽減も可能であることに留意しなければならない。例えば、以前のベジエ及び現在のベジエの双方が更新されてもよい。或いは、２つのベジエが同時に合致されてもよく、２つの間に連続性が課され、合致要件が満たされなければ、その度に新たなベジエセグメントの対が開始されてもよい。
【００５２】
尖点検出
通常、Ｃ１連続性は望ましい特性であるが、実施が好都合でない場合もある。とりわけ、Ｃ１連続性は意図された尖点も除去してしまう。このため、セグメント化要素２３０はさらに、尖点検出の結果に基づき、Ｃ１連続性のためにベジエフィッタ２２８を構成するように構成される。
【００５３】
尖点検出の簡単なアプローチは、最後の３点で形成される角度を確認し、規定の閾値を下回る尖点角度として分類することである。同様のアプローチとして、ｔ＝０における現在のセグメントの導関数でｔ＝１における過去のセグメントの導関数で形成された角度の決定の基準とする。このような任意且つすべてのアプローチ、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【００５４】
インク予測要素２３２
手書きでは、方向が鋭利に、且つ、予測不能に変化することが多いにあり、ユーザが随時ペン（又は、その他の入力機器）を持ち上げることがあって、予測を不要なものにするばかりか潜在的に有害なものとしてしまうため、入力機器の次のいくつかの位置を予測することは、解決の困難な問題である。
【００５５】
インク予測要素２３２は、まず、インク予測の質を評価させる測定基準を規定することにより、予測品質を成立させるように構成される。考慮すべき２つの主要な面がある。つまり、ユーザ経験及び性能である。ユーザ経験に関しては、誤った予測の結果として、インク片が画面又はその他の表示面上でレンダリングし、予測が誤っていると証明されると直ちに、数フレーム内でクリアされる。これにより、予測がフレームに亘って安定しないときに悪化するチラつき効果を生じることがある。測定基準は、エンドユーザによって予測誤差の観察が可能か否かを反映しなければならない。
【００５６】
性能に関しては、一例としてのアプローチは、予測品質の測定基準として、誤差ベクトルの主要成分
【数１０】
2019204522.tif 000012
を使用することである。図５は、５点前予測の例を提供するものである。デジタル化された点をドットで表している。実線６１０で接続されたものは既にデジタル化されており、接続されていない（且つ、大きい方の三角形の内部に現れた）ものは未来におけるものである。予測点は、点線６１２で接続されている。予測点を最後にデジタル化された点と接続するベクトル
【数１１】
2019204522.tif 000013
は、予測ベクトルである。未来にデジタル化される点を最後にデジタル化された点と接続するベクトル
【数１２】
2019204522.tif 000014
は、実現ベクトルである。ベクトル
【数１３】
2019204522.tif 000015
は、予測誤差であり、
【数１４】
2019204522.tif 000016
は、その主要成分である。
【数１５】
2019204522.tif 000017
は、予測がどの程度遅れているか、又は行き過ぎているかを測定するものである。
【数１６】
2019204522.tif 000018
は、予測点が実現ベクトルからどの程度離れているかを測定するものである。
【００５７】
インク予測のためにインク予測要素２３２によって使用されてもよい１つの技術に、デジタル化された点を３次ベジエスプラインに合致させることが含まれる。その基本的考え方は、最終ベジエセグメントＢ（ｔ）をその未来に拡張することにより予測を行うというものであり、単に任意のｔ＞１におけるサンプリングＢ（ｔ）を意味する（図６の点線）。
【００５８】
ｔの選択
ｋを未来予測が望まれる点の数とし、
【数１７】
2019204522.tif 000019
をデジタル化された最後の２点間の距離とする。ｔ≧１は、ベジエ曲線の弧の長さ又はＢ（１）及びＢ（ｔ）の間のセグメントがｋ・ｄｔと等しくなるように選択されてもよい。
【００５９】
３次曲線の弧の長さについて閉形式ソリューションは存在しないが、既知の事実の数を活用する近似を利用してもよい。第１に、ベジエ曲線の終点間の距離は、その弧の長さの下限である。第２に、ベジエ曲線の制御多角形の長さは、その弧の長さの上限である。
【００６０】
再パラメータ化
予測をレンダリングする最も簡易なオプションは、最後にデジタル化された点から予測点まで線を引くことである。しかしながら、より良いアプローチは、図６に示す通り（点線６）、ベジエ曲線の延長戦を引くことである。従って、インク予測要素２３２は、さらに、曲線が変化しないように、ベジエ曲線の再パラメータ化を行うように構成される。
Ｂｒ（０）＝Ｐｔ、
Ｂｒ（１）＝Ｂ（ｋ・ｄｔ）
式中、Ｂは、当初のベジエであり、Ｂｒは、再パラメータ化されたものである。再パラメータ化は、常時実施可能であるため、そのコストは無視することができる。
【００６１】
インク予測要素２３２は、この技術を利用して、悪いアーチファクト（すなわち、視認できる誤予測）を導入することなく、約１６ｍｓ先の予測を行ってもよい。
【００６２】
インクレンダリング
合致及び予測の終了時、その結果は、ベジエ近似｛Ｂｔ（ｔ）｝のセットと、対応する半径｛Ｒｔ（ｔ）｝のセットである。通常、Ｂｔは、３次関数であり、４つの制御点、すなわち、Ｂｉ、０、Ｂｉ、１、Ｂｉ、２、Ｂｉ、３でパラメータ化される。状況によっては、Ｒｉは線形であり、開始半径及び終了半径のみによってパラメータ化される。
Ｒｉ（ｔ）＝（１−ｔ）Ｒｉ、０＋ｔＲｉ、３
【００６３】
他の状況では、これらは３次方程式であり、当業者に周知の通り、ベルンシュタイン多項式を使用して、４つの制御点の各々の重みでパラメータ化される。
【数１８】
2019204522.tif 000020
【００６４】
与えられた（Ｂｉ，Ｒｉ）の対は、図７に示す通り、インクストロークのセグメントを表す。象徴的な意味において、これは、点｛Ｂｉ（ｔ）＋ｓ＊Ｒｉ（ｔ）ｔ０＜ｓ、ｔ＜１｝の軌跡に対応する。
【００６５】
図８のフロー図は、本発明の実施形態に係る、インクをレンダリングするための一例としての一般的プロセス８００を示す。点線の左に示した機能は、例えば、図２のインク平滑化エンジン２１２のインクレンダリング要素２３４を利用して実施されてもよい。点線の右側に示した機能は、例えば、図２のユーザ演算装置２１０のＧＰＵ２２２を利用して実施されてもよい。
【００６６】
輪郭変換８１０
本発明の実施形態は、インクの取得及び合致が行われた後、且つ、レンダリングの実施前のインクに、任意の２Ｄアフィン変換（３×２マトリクス
【数１９】
2019204522.tif 000021
によって規定される）が適用されるようにする。このような変換は、例えば、インクを含む文書のパン及びズームのモデル化に有用である。
【００６７】
変換は、２つのステップで実施される。第１のステップ（「輪郭変換」）では、ベジエ関数Ｂｉ（ｔ）を変換する。これは、単にベジエ制御点Ｂｉ、０、Ｂｉ、１、Ｂｉ、２、Ｂｉ、３を特定マトリクス（概念的には、これはインクの全体形状に影響するが、厚さには影響しない）で乗算することによって達成される。
【００６８】
第２のステップでは、半径を変換する。これは、以下により完全に説明する通り、頂点シェーダ８２０において達成される。Ｍ（ｍ３１及びｍ３２）の変換成分は、半径の変換時には使用されないことに留意する。以降の本説明においては、符号Ｍは２×２マトリクス
【数２０】
2019204522.tif 000022
をいう。
【００６９】
平坦化８１２
与えられたストロークをレンダリングするために、各成分たるベジエ近似は、「平坦化」される。形式上、ｔｉ、ｊのセットが各（Ｂｉ，Ｒｉ）対に対して選択され、これらのｔで関数が評価される（これは、逆に、本質的に曲線に合致する）。ｔｉ、ｊのセットを選択する正確な方法は、規定の実施である。一実施例において、米国特許第５，３６７，６１７号に記載の通り、ハイブリッド前進差分アルゴリズムを利用してもよく、この全体を本明細書に記したのと同様に参照としてここに組み込む。当業者は、全身差分等、その他の技術が当分野で一般的且つ周知であり、同様に利用されてもよいことを理解するであろう。
【００７０】
結果は、点と、曲線に沿って存在する半径（ｐ１，ｒ１）、…、（ｐｎ，ｒｎ）の一覧である。このデータは、その後、ＧＰＵに送られ、所謂「頂点バッファ」（以降、ＶＢｌと指定する）に記憶される。
【００７１】
インスタンス化モザイク処理８１４
２つの他の頂点バッファもＧＰＵに引き渡されるが、この一方は、円を近似する三角形メッシュを含み、他方は、台形を表す三角形メッシュである。これらのメッシュは、初期化中に一度演算され、キャッシュされ、次のレンダリング動作で再使用される。
【００７２】
特定の実施例では、モザイク処理を異なる方法で表してもよい。一実施例では、以下の方式を利用する。
【００７３】
円形三角形メッシュにおける各頂点は、以下のデータを含む。
ＣｅｎｔｅｒＯｒＥｄｇｅ：１ビット（０：中央、１：縁部）
ＩｎｔｅｒｉｏｒＯｒＥｘｔｅｒｉｏｒ：１ビット（０：内部、１：外部）
Ｄｉｒｅｃｔｉｏｎ：ｆｌｏａｔ２（正規化）
【００７４】
内側頂点及び外側頂点を接続する三角形を使用して、アンチエイリアシングを提供する（図８に示す明暗勾配によって指定される）。実際には、頂点に絶対座標が記憶されず、他のものと関連する際の頂点の位相的関係のみが記録されることに留意しなければならない。例えば、以下の図の頂点Ａは、内側縁部頂点であり、以下の通り、記憶されるであろう。
（ＣｅｎｔｅｒＯｒＥｄｇｅ：１、ＩｎｔｅｒｉｏｒＯｒＥｘｔｅｒｉｏｒ：０、Ｄｉｒｅｃｔｉｏｎ：（１，０））
頂点Ｄは、外側縁部頂点であり、以下の通り、記憶されるであろう。
【数２１】
2019204522.tif 000023
（反転ｙ軸を想定）。中央頂点（図９中、Ｃとして指定）が１つのみ存在し、これは、内側であり、任意の方向に割り当てられる。
【００７５】
また、実施例においては正確な数の三角形（引いては頂点）が変動し得るものであり、通常、レンダリングされているインクの最大半径に応じて決まるものであることにも留意しなければならない。
【００７６】
台形における各頂点は、以下のデータを含む。
ＳｔａｒｔＯｒＥｎｄ：１ビット（０：開始、１：終了）
ＩｎｔｅｒｉｏｒＯｒＥｘｔｅｒｉｏｒ：１ビット（０：内側、１：外側）
ＴｏｐＯｒＢｏｔｔｏｍ：１ビット（０：頂上部、１：底部）
【００７７】
例えば、以下の図における頂点Ａは、頂上部における内側開始頂点であり、以下の通り、記憶されるであろう。
（ＳｔａｒｔＯｒＥｎｄ：０、ＩｎｔｅｒｉｏｒＯｒＥｘｔｅｒｉｏｒ：０、ＴｏｐＯｒＢｏｔｔｏｍ：０）
【００７８】
頂点Ｂは、底部における内側端部頂点であり、図１０に示す通り、以下のように記憶されるであろう。
（ＳｔａｒｔＯｒＥｎｄ：１、ＩｎｔｅｒｉｏｒＯｒＥｘｔｅｒｉｏｒ：０、ＴｏｐＯｒＢｏｔｔｏｍ：１）
この場合、レンダリングされているインクの半径に関わらず、独自の頂点の数が８に固定される。
【００７９】
ワイド化及びラスタ化８１６
一旦データがＧＰＵにアップロードされると、ラスタ化の残りのステップが２つのパスで実施される。すなわち、１つは円のレンダリングであり、もう１つは台形のレンダリングである。一実施例では、例えば、後述する標準Ｄｉｒｅｃｔ３Ｄパイプラインの５つの段階（８１８、８２０、８２２、８２４、及び８２６）を使用して各パスを実施する。当業者は、ＯｐｅｎＧＬ等の他のプラットフォームには、Ｄｉｒｅｃｔ３Ｄに直接類似する他の実施例も可能であることを理解及び認識するであろう。このような任意且つすべてのバリエーション、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【００８０】
入力アセンブラ８１８、ラスタライザ８２２、及び出力統合器８２６は、固定機能を有し、ＧＰＵ自体によって基本的に自動的に実施される。頂点シェーダ８２０及び画素シェーダ８２４は、プログラム可能である。
【００８１】
入力アセンブラ８１８
入力アセンブラ８１８は、円形／台形メッシュ及びＶＢ１内の頂点を採り、パイプラインの残りの部分による処理にそれらを準備するように構成される。部分的に、これには、ＶＢ１内の頂点に亘るメッシュのコピーを複製することが含まれる（「インスタンス化」として当業者には既知の一般的技術）。円形パスにおいて、入力アセンブラ８１８は、ＶＢ１内の頂点毎にメッシュのコピーを１つ割り当てるように構成される。台形パスにおいて、入力アセンブラ８１８は、ＶＢ１における連続頂点の対事に１つのコピーを割り当てる。入力アセンブラ８１８によって出力される頂点は、メッシュ及びＶＢ１データの双方からの統合データを含む。
円形パス頂点形式：
（ＣｅｎｔｅｒＯｒＥｄｇｅ、ＩｎｔｅｒｉｏｒＯｒＥｘｔｅｒｉｏｒ、Ｄｉｒｅｃｔｉｏｎ、ｐｉ、ｒｉ）
台形パス頂点形式：
（ＳｔａｒｔＯｒＥｎｄ、ＩｎｔｅｒｉｏｒＯｒＥｘｔｅｒｉｏｒ、ＴｏｐＯｒＢｏｔｔｏｍ、ｐｉ、ｒｉ、ｐｉ＋１、ｒｉ＋１）
【００８２】
頂点シェーダ８２０
本実施形態によると、入力アセンブラ８１８によって出力された各頂点を採り、それを位置及び不透明度に凝縮する頂点シェーダ８２０が提供される。円形パスについては、以下の計算式が使用される。
【数２２】
2019204522.tif 000024
【００８３】
ここで、Ｍは、文書においてより早期に規定された２×２マトリクスであり、（Ｍ−１）ｔは、その逆転置である。
【００８４】
オフセット及びｏｐａｃｉｔｙＭｏｄｉｆｉｅｒの関数について、以下により詳細に検討するが、一般的には、単にｏｆｆｓｅｔ（ａ，ｒ）＝（１／２−ａ）及びｏｐａｃｉｔｙＭｏｄｉｆｉｅｒ（ｒ）−１である。
【００８５】
台形パスについては、より複雑な計算式が使用されてもよい。
【数２３】
2019204522.tif 000025
【数２４】
2019204522.tif 000026
【００８６】
ここで、ｋｏｔ９０°は、９０度回転マトリクス
【数２５】
2019204522.tif 000027
である。
【００８７】
インクレンダリングのより早期のバージョンでは、これらの計算式と同様のバージョンが使用されてきたことに留意しなければならない。しかしながら、本発明の実施形態は、以前の具体化とは異なり、ＧＰＵ上で変換を実施する。
【００８８】
これらの計算式の導関数は、本説明の範囲を超えるものであることにも留意しなければならない。しかしながら、図１１、図１２、及び図１３は、種々の量を互いに関連付ける補助となってもよい。図１１は、２つの隣接インク点を示す図である（Ｍは同一であると想定する）。図１２は、Ｐ（ｉ＋１）周辺のクローズアップを示す（ＴｏｐＯｒＢｏｔｔｏｍ＝０、ＳｔａｒｔＯｒＥｎｄ＝１、及びＭは同一であると想定する）。図１３は、Ｐ＋Ｄ周辺のクローズアップを示す（ＴｏｐＯｒＢｏｔｔｏｍ＝０、ＳｔａｒｔＯｒＥｎｄ＝１、及びＭは同一であると想定する）。
【００８９】
ラスタライザ８２２
複製メッシュの頂点が一旦変換されると、対応する三角形は、ラスタライズ８２２を利用して、ＧＰＵによってラスタ化される。換言すると、三角形にカバーされた画素が特定され、画素シェーダ８２４がカバーされた画素毎に一度呼び出される。Ｄ３Ｄラスタ化は、当業者にとって既知であるため、本明細書ではさらなる説明を行わない。
【００９０】
画素シェーダ８２４
画素シェーダ８２４は、ラスタライザ８２２２から不透明度を採り、それをインクの色の変調に使用する。
Ｃｏｌｏｒｏｕｔｐｕｔ＝Ｏｐａｃｉｔｙ＊Ｃｏｌｏｒｉｎｐｕｔ
【００９１】
この色変調は、インクの縁部に沿ったアンチエイリアシングのシミュレーションを行うものである（状況によっては、これは簡易のべた一色であるが、より複雑な状況においては、色は画素の位置に応じて決まってもよい）。その後、この色値は、出力統合器８２６に引き渡される。
【００９２】
出力統合器８２６
出力統合器８２６は、色値を受け取り、レンダリング対象乗にそれをブレンドするように構成される。出力統合は、当業者にとって既知であるため、本明細書中ではさらなる説明を行わない。
【００９３】
薄いフィーチャの軽減
本明細書において上述した通り、本発明の実施形態は、２つの補助的関数、すなわちオフセット及びｏｐａｃｉｔｙＭｏｄｉｆｉｅｒを使用する頂点シェーダ８２０を提供する。オフセットの目的は、画面空間内で頂点を１／２画素オフセットすることにより、アンチエイリアシングのシミュレーションを行うことである。レンダリングされている円／台形の寸法が１画素未満である場合、特別な論理が加えられ、このオフセットによって三角形の重畳を生じる機会を軽減してもよい。このような論理が実施されるとき、頂点の不透明度が対応して修正される。
【００９４】
オフセット及びｏｐａｃｉｔｙＭｏｄｉｆｉｅｒの完全な定義は、以下の通りである。
【数２６】
2019204522.tif 000028
【００９５】
次に、図１４を参照すると、本発明の一実施形態に係るデジタルインク入力を平滑化するための一例としての方法１４００を示すフロー図が示されている。ブロック１４１０に示される通り、第１のインク点を受信する。ブロック１４１２に示される通り、第２のインク点も受信する。ブロック１４１４に示される通り、第１のインク点及び第２のインク手に基づき、アクティブ３次ベジエ近似を演算する。ブロック１４１６に示される通り、第３のインク点を受信する。ブロック１４１８に示される通り、第３のインク点がアクティブ３次ベジエ近位ｊに十分に合致するか否かを判定し、ブロック１４２０に示される通り、第１のインク点、第２のインク点、及び第３のインク点を利用して、新たな３次ベジエ近似を演算する。
【００９６】
図１５を参照すると、本発明の一実施形態に係るデジタルインク入力を平滑化及びレンダリングするための一例としての方法１５００を示すフロー図が示されている。ブロック１５１０に示される通り、第１のインク点及び第２のインク点を連続して受信する。ブロック１５１２に示される通り、第１のインク点及び第２のインク点に基づき、アクティブ平滑化インクフラグメントを生成する。ブロック１５１４に示される通り、第３のインク点を受信する。その後、ブロック１５１６で示される通り、第３のインク点がアクティブ平滑化インクフラグメントに十分合致するか否かを判定する。第３のインク点がアクティブ平滑化インクフラグメントに十分合致すると判定された場合、ブロック１５１８に示される通り、アクティブ平滑化インクフラグメントを更新する。しかしながら、第３のインク点がアクティブ平滑化インクフラグメントに十分合致しないと判定された場合、ブロック１５２０に示される通り、アクティブ平滑化インクフラグメントを終了し、第２の平滑化インクフラグメントを開始する。ＧＰＵを利用して、第１のインク点、第２のインク点、及び第３のインク点を備える平滑化インク出力をレンダリングする。これは、ブロック１５２２に示されている。
【００９７】
次に、図１６を参照すると、本発明の一実施形態に係るデジタルインク入力を平滑化及びレンダリングするための一例としての方法１６００を示すフロー図が示されている。ブロック１６１０に示される通り、第１のインク点を受信する。ブロック１６１２に示される通り、第２のインク点も受信する。ブロック１６１４に示される通り、第１のインク点及び第２のインク点に基づき、アクティブ３次ベジエ近似を演算する。ブロック１６１６に示される通り、第３のインク点を受信する。その後、ブロック１６１８に示される通り、第３のインク点がアクティブ３次ベジエ近似に十分合致するか否かを判定する。ブロック１６２０に示される通り、第１のインク点、第２のインク点、及び第３のインク点を利用して、新たな３次ベジエ近似を演算する。その後、第１のインク点、第２のインク点、及び第３のインク点を備える平滑化インク出力をレンダリングする。これは、ブロック１６２２に示されている。
【００９８】
理解される通り、本発明の実施形態は、中でも、リアルタイムのインクストローク平滑化、軌道予測、及びインクストローク入力のＧＰＵ活用レンダリングを効率化するためのシステム、方法、及びコンピュータ可読記憶媒体を提供するものである。少なくとも第１のインク点及び第２のインク点を含む複数のインク点を受信する。第１のインク点及び第２のインク点に基づき、アクティブベジエ近似を演算する。時間的に第１のインク点及び第２のインク点に次いで、第３のインク点を受信し、第３のインク点がアクティブベジエ近似に十分合致するか否かを判定する。ユーザがレンダリングに際して両者間に差異を検出できないと判定される場合、第３のインク点はアクティブベジエ近似に十分合致すると判定される。このような判定は、通常、所定の閾値差異値に基づく。第３のインク点がアクティブベジエ近似に十分合致すると判定された場合、第３のインク点を含むようにアクティブベジエ近似を更新する。しかしながら、第３のインク点がアクティブベジエ近似に十分合致しないと判定された場合、アクティブベジエ近似を終了し、新たなベジエ近似を演算する。ストローク受信面、例えば、タッチ感応表示画面と関連して、第１のインク点、第２のインク点、及び第３のインク点を含む平滑化インク出力をレンダリングする。
【００９９】
本発明を特定の実施形態との関連で説明してきたが、これらは制約でなく、完全に例示を意図するものである。本発明の属する分野の当業者にとって、本発明の範囲から逸脱することなく、その代替実施形態が明らかとなるであろう。
【０１００】
本発明は、種々の修正及び代替構成の影響を受けやすいものの、特定の一例としての実施形態を図面に示しており、以上に詳細に説明した。しかしながら、本発明を開示の特定の形態に限定するものでなく、逆に、すべての修正、代替構成、及びその同等物が本発明の精神及び範囲に収まることが理解されなければならない。
【０１０１】
当業者は、図１４の方法１４００、図１５の１５００、及び図１６の１６００において示されるステップの順は、あらゆる方法においても本発明の範囲を限定することを意味するものでなく、実際には、これらのステップは、本実施形態における種々の異なるシーケンスで発生してもよいことを理解するであろう。このような任意且つすべてのバリエーション、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【図１】
2019204522.tif 000029
【図２】
2019204522.tif 000030
【図３】
2019204522.tif 000031
【図４】
2019204522.tif 000032
【図５】
2019204522.tif 000033
【図６】
2019204522.tif 000034
【図７】
2019204522.tif 000035
【図８】
2019204522.tif 000036
【図９】
2019204522.tif 000037
【図１０】
2019204522.tif 000038
【図１１】
2019204522.tif 000039
【図１２】
2019204522.tif 000040
【図１３】
2019204522.tif 000041
【図１４】
2019204522.tif 000042
【図１５】
2019204522.tif 000043
【図１６】
2019204522.tif 000044
【手続補正書】
【提出日】令和1年7月4日(2019.7.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ストローク受信面で受信したデジタルインク入力を平滑化するために、少なくとも１つのプロセッサを含んだ１つ以上の演算装置で実施される方法であって、
複数のインク点を受信してインク点の第１のセットを確立することと、
前記第１のセットに基づき、第１の多項式近似を演算することと、
前記第１のセットに対して時間的に後に続いて、第１の追加インク点を受信することと、
前記第１の追加インク点を受信することに少なくとも基づき、前記第１の追加インク点が前記第１の多項式近似に合致するか否かを動的に判定することと、
前記第１の追加インク点が前記第１の多項式近似に合致すると判定したことに少なくとも基づき、前記第１の追加インク点を含むように前記第１のセット及び前記第１の多項式近似を更新し、かつ、前記更新された第１のセットを含む第１の平滑化インク出力を生成することと、
前記第１の追加インク点が前記第１の多項式近似に合致しないと判定したことに少なくとも基づき、前記第１のセットを終了させてインク点の第２のセットを確立し、かつ、少なくとも前記第１の追加インク点を用いて第２の多項式近似を開始することと、
前記ストローク受信面に関連するディスプレイ上に、前記第１の平滑化インク出力をレンダリングすることと、
を含む、方法。
【請求項２】
前記第１の追加インク点に対して時間的に後に続いて、第２の追加インク点を受信することと、
前記第２の追加インク点が、前記第１の多項式近似及び前記第２の多項式近似の一つに合致するか否かを判定することと、
をさらに含む、請求項１に記載の方法。
【請求項３】
前記第２の追加インク点を含む第２の平滑化インク出力を生成してレンダリングすることをさらに含む、請求項２に記載の方法。
【請求項４】
１つ以上の意図された尖点が存在するか否かを判定することをさらに備え、
意図された尖点が検出されない場合、前記第１の多項式近似及び前記第２の多項式近似の間にＣ１連続性を保存する、請求項１に記載の方法。
【請求項５】
前記第１のセットにおける前記複数のインク点及び前記第１の追加インク点は、デジタル化されると連続的に受信され、
前記第１の多項式近似は、入力機器が入力データの提供を継続している間に演算される、請求項１に記載の方法。
【請求項６】
前記第１の追加インク点が前記第１の多項式近似に十分合致するか否かを判定することは、前記第１のセットにおける直前のインク点及び前記第１の追加インク点で記述される多角形と、前記第１の多項式近似と、の間の距離を近似することを備える、請求項１に記載の方法。
【請求項７】
前記第１のセットにおける直前の前記インク点及び前記第１の追加インク点を接続する多角形と、前記第１の多項式近似と、の間の距離が閾値以下である場合、前記第１の追加インク点は、前記第１の多項式近似に十分合致すると判定する、請求項６に記載の方法。
【請求項８】
前記閾値は、少なくとも部分的に、前記デジタルインクがレンダリングされるディスプレイの解像度と、前記デジタルインクをレンダリングする変換と、の一方又は双方に基づく、請求項７に記載の方法。
【請求項９】
前記第１の多項式近似を未来に向かって拡張することにより、時間的に後の時点で受信される少なくとも１つの後続インク点を予測することをさらに備える、請求項１に記載の方法。
【請求項１０】
コンピュータ装置によって実行されると前記コンピュータ装置に方法を実行させるコンピュータ実行可能指示を含む一つ以上のコンピュータ記憶媒体であって、
前記方法は、
少なくとも第１のインク点及び第２のインク点を含む複数のインク点を連続的に受信することと、
少なくとも前記第１のインク点及び前記第２のインク点に基づいてアクティブ平滑化インクフラグメントを生成することと、
前記第１のインク点及び前記第２のインク点に対して時間的に後に続いて、第３のインク点を受信することと、
前記第３のインク点を受信することに少なくとも基づき、前記第３のインク点が前記アクティブ平滑化インクフラグメントに十分合致するか否かを動的に判定することと、
前記第３のインク点が前記アクティブ平滑化インクフラグメントに十分合致すると判定することに少なくとも基づき、前記アクティブ平滑化インクフラグメントを更新し、さもなければ、前記アクティブ平滑化インクフラグメントを終了して第２の平滑化インクフラグメントを開始することと、
表示面との関連で、少なくとも前記第１のインク点、前記第２のインク点及び前記第３のインク点を備える平滑化インク出力をレンダリングすることと、
を含む、コンピュータ記憶媒体。
【請求項１１】
前記方法は、曲線を少なくとも前記第１のインク点及び前記第２のインク点に合致させることにより前記アクティブ平滑化インクフラグメントを生成することをさらに含む、請求項１０に記載の媒体。
【請求項１２】
前記方法は、少なくとも第１のインク点及び第２のインク点を含む複数のインク点をデジタル化された状態で連続的に受信することをさらに含み、
前記アクティブ平滑化インクフラグメントは、入力装置が連続的に入力データを提供し続けている間に算出される、請求項１０に記載の媒体。
【請求項１３】
前記方法は、前記第２のインク点及び前記第３のインク点で記述される多角形と、前記アクティブ平滑化インクフラグメントと、の間の距離を近似することにより、前記第３のインク点が前記アクティブ平滑化インクフラグメントに十分合致するか否かを判定することをさらに含む、請求項１０に記載の媒体。
【請求項１４】
前記第２のインク点及び前記第３のインク点を接続する多角形と、前記アクティブ平滑化インクフラグメントと、の間の距離が閾値以下である場合、前記第３のインク点は、前記アクティブ平滑化インクフラグメントに十分合致すると判定する、請求項１３に記載のシステム。
【請求項１５】
前記方法は、事前生成された円形ドット及びクアッドのモザイクを前記表示面に部分的に位置決めすることにより前記平滑化インク出力をレンダリングすることをさらに含む、請求項１０に記載の媒体。
【請求項１６】
前記方法は、前記平滑化インク出力をレンダリングする際に、薄いフィーチャを軽減することをさらに含む、請求項１０に記載の媒体。
【請求項１７】
少なくとも１つのプロセッサと、デジタルインクの平滑化及びレンダリングルーチンを記憶するメモリと、を備える装置であって、
前記デジタルインクの平滑化及び前記レンダリングルーチンは、前記少なくとも１つのプロセッサによって実行されると、
第１のインク点を受信することと、
第２のインク点を受信することと、
少なくとも前記第１のインク点及び前記第２のインク点に基づき、アクティブ多項式近似を演算することと、
前記第１のインク点及び前記第２のインク点に対して時間的に後に続いて、第３のインク点を受信することと、
前記第３のインク点を受信することに少なくとも基づき、前記第３のインク点が前記アクティブ多項式近似に十分合致するか否かを動的に判定することと、
前記１のインク点、前記第２のインク点及び前記第３のインク点を少なくとも利用して、新たな多項式近似を演算することと、
表示面との関連で、少なくとも前記第１のインク点、前記第２のインク点及び前記第３のインク点を備える平滑化インク出力をレンダリングすることと、
前記装置に構成させる、装置。
【請求項１８】
前記第３のインク点が前記アクティブ多項式近似に十分合致していると前記装置が判定したことに少なくとも基づき、前記デジタルインクの平滑化及び前記レンダリングルーチンは、前記アクティブ多項式近似を更新することにより新たな多項式近似を演算することを前記装置に構成させる、請求項１７に記載の装置。
【請求項１９】
前記第３のインク点が前記アクティブ多項式近似に十分合致していないと前記装置が判定したことに少なくとも基づき、前記デジタルインクの平滑化及び前記レンダリングルーチンは、前記アクティブ多項式近似を終了させて第２の多項式近似を開始することを前記装置に構成させる、請求項１７に記載の装置。
【請求項２０】
レンダリングのために前記平滑化インク出力をラスタ化して統合するように構成されたグラフィック処理装置をさらに備える、請求項１７に記載の装置。
【外国語明細書】
2019204522000001.pdf