(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0008】
法的要件を満たすべく、本発明の主題を本明細書中に具体的に説明する。しかしながら、その説明は、本特許の範囲の限定を意図するものでない。むしろ、本発明者らは、クレームする主題が、その他の現在又は未来の技術との連携において、異なるステップ又は本文書に記載のものと同様のステップの組み合わせを含む、他の方法により実施されてもよいと考えている。さらに、本明細書中、「ステップ」及び/又は「ブロック」という用語は、採用される方法の異なる要素を含意するものとして使用されてもよく、これらの用語は、個々のステップの順が明示的に記載されない限り、且つ、その明示的な記載がある場合を除いて、種々のステップ間に何らの特定の順序も暗示するものとして解釈されてはならない。
【0009】
デジタルインクのレンダリングでは、ズーム動作中、インクが平滑でなく、段差状の外観を有すること、待機時間が長くなること(例えば、キャッシング及び/又はストローク後の平滑化及びレンダリングによる)、及びペン又はその他の入力機器が受信面から離された時(すなわち、ストローク後)のインクカラー又はその他の外観性質の変化を含む多数の問題が生じる。
【0010】
本明細書に記載の技術の種々の態様は、通常、リアルタイムのインクストローク平滑化、軌道予測、及びGPU(グラフィクス処理部)を活用したレンダリングを効率化するためのシステム、方法、及びコンピュータ可読記憶媒体を対象とする。少なくとも第1のインク点及び第2のインク点を含む複数のインク点は、各インク点がデジタル化されるのに合わせて受信される。少なくとも第1のインク点及び第2のインク点に基づき、アクティブベジエ近似が演算される。当業者に理解される通り、ベジエ近似又は曲線は、グラフィクスレンダリングにおいて平滑曲線のモデル化に利用されることの多いパラメータ曲線である。本明細書において利用される通り、ベジエ近似は、最も最近受信及び処理したインク点(この場合、第2のインク点)が属する曲線又は近似である場合に「アクティブ」であると考えられる。アクティブベジエ近似において利用されるインク点の正確な量は、少なくとも部分的に、次いで受信されるインク点に対する十分な合致を得ることに応じて決まる。すなわち、N個のインク点は、以下にさらに説明する通り、合致の目的で蓄積されてもよく、Nの値は適切な合致がもはや可能でなくなるまで増加を継続する。
【0011】
続いて第1のインク点及び第2のインク点に対して時間的に後に、第3のインク点を受信し、第3のインク点がアクティブベジエ近似に十分に合致するか否かが判定される。第3のインク点は、ユーザがレンダリングに際して両者間の差異を検出できないであろうと判定されると、アクティブベジエ近似に十分合致すると判定される。このような判定は、通常、予め定められた閾値載置、例えば、10HIMETRIC単位(0.1mm)に基づくものである。第3のインク点がアクティブベジエ近似に十分合致すると判定された場合、第3のインク点を含むようにアクティブベジエ近似を更新する。実施形態において、「更新済み」のベジエ近似は、「新たな」ベジエ近似又は曲線と考慮されてもよい。しかしながら、第3のインク点がアクティブベジエ近似に十分合致しないと判定されると、アクティブベジエ近似を終了し、異なる新たなベジエ近似を演算する。GPUを活用して、第1のインク点、第2のインク点、及び第3のインク点を備える、結果として得られた平滑化インク出力を、例えば、タッチ感応表示画面等のストローク受信面と関連してレンダリングする。(当業者に理解及び認識される通り、本明細書中、3次ベジエ平滑化を主として説明するが、本実施形態中において、4次ベジエ平滑化、4倍以上の倍率のベジエ、又はその他任意の既知の平滑化アルゴリズムを利用してもよい。)
【0012】
従って、本発明の一実施形態は、デジタルインク入力を平滑化するために、少なくとも1つのプロセッサを含んだ1つ以上の演算装置によって実施される方法を対象とする。本方法は、第1のインク点を受信することと、第2のインク点を受信することと、第1のインク点及び第2のインク点に基づき、アクティブ3次ベジエ近似を演算することと、第3のインク点を受信すること(第3のインク点は、第1及び第2のインク点に次いで、時間的に後に受信される)、第3のインク点がアクティブ3次ベジエ近似に十分合致するか否かを判定することと、第1のインク点、第2のインク点、及び第3のインク点を利用して、新たな3次ベジエ近似を演算することとを含む。新たな3次ベジエ近似は、第3のインク点がアクティブ3次ベジエ近似に十分合致すると判定された場合、更新済みのアクティブ3次ベジエ近似を備えてもよく、第3のインク点がアクティブ3次ベジエ近似に十分合致しないと判定された場合、異なる新たな3次ベジエ近似を備えてもよい。
【0013】
他の実施形態において、本発明は、中央処理装置(CPU)及びグラフィック処理装置(GPU)を備えたシステムを対象とする。CPUは、第1のインク点及び第2のインク点を連続的に受信し、第1のインク点及び第2のインク点に基づいてアクティブ平滑インクフラグメントを生成し、(次いで、時間的に後に)第3のインク点を受信し、第3のインク点がアクティブ平滑化インクフラグメントに十分合致するか否かを判定し、第3のインク点がアクティブ平滑化インクフラグメントに十分合致すると判定すると、アクティブ平滑化インクフラグメントを更新するように構成される。或いは、第3のインク点がアクティブ平滑化インクフラグメントに十分合致しないと判定された場合、CPUは、アクティブ平滑化インクフラグメントを終了し、第2の平滑化インクフラグメントを開始するように構成される。GPUは、表示画面との関連で、第1のインク点、第2のインク点、及び第3のインク点を備える平滑化インク出力をレンダリングするように構成される。
【0014】
さらに他の実施形態において、本発明は、少なくとも1つのプロセッサと、デジタルインクの平滑化及びレンダリングルーチンを記憶するメモリとを備える装置を対象とする。少なくとも1つのプロセッサによって実行されると、デジタルインクの平滑化及びレンダリングルーチンにより、装置に、第1のインク点を受信させ、第2のインク点を受信させ、第1のインク点及び第2のインク点に基づいてアクティブ3次ベジエ近似を演算させ、(第1のインク点及び第2のインク点に次いで、時間的に後に)第3のインク点を受信させ、第3のインク点がアクティブ3次ベジエ近似に十分合致するか否かを判定させ、第1のインク点、第2のインク点、及び第3のインク点を利用して、新たな3次ベジエ近似を演算させ、表示画面との関連で第1のインク点、第2のインク点、及び第3のインク点を備えた平滑化インク出力をレンダリングさせる。
【0015】
本発明の実施形態の概略について簡単に説明したが、本発明の種々の態様に一般的な文脈を与えるため、本発明の実施形態が実施されてもよい一例としての動作環境を以下に示す。図面を全般的に参照し、まず特に
図1を参照すると、本発明の実施形態を実施するための一例としての動作環境が示されており、一般的に演算装置100として設計されている。演算装置100は好適な演算環境の一例であるが、本発明の実施形態の仕様又は機能の範囲に関して何らの限定を提示することを意図するものでもない。演算装置100は、図示のいずれの構成要素又はいずれの構成要素の組み合わせに関する依存性又は要求も有するものと解釈されてはならない。
【0016】
本発明の実施形態は、プログラムモジュール等のコンピュータによる使用が可能であるか、又は、コンピュータによる実行が可能である指示を含むコンピュータコード又は機械による使用が可能な指示が、パーソナルデータアシスタント又はその他の手持ち式装置等、コンピュータ又はその他の機械によって実行される一般的に文脈において説明されてもよい。一般的に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、構成要素、データ構造等を含み、且つ/又は、特定のタスクを実施するか、特定の抽象データ種別を実施するコードをいう。本発明の実施形態は、手持ち式装置、消費者電子機器、汎用コンピュータ、専用演算装置等を含むが、これに限定されない、種々のシステム構成において実施されてもよい。本発明の実施形態はまた、通信ネットワークを通じて接続された遠隔処理装置によってタスクが実施される分散演算環境において実施されてもよい。
【0017】
引き続き
図1を参照すると、演算装置100は、以下の装置を直接又は間接に連結するバス110を備える。すなわち、メモリ112、1つ以上のプロセッサ114、1つ以上の表現要素116、1つ以上の入力/出力(I/O)ポート118、1つ以上のI/O要素120、及び一例としての電源122である。バス110は、1つ以上のバスであってよいもの(アドレスバス、データバス、又はそれらの組み合わせ等)を表す。
図1の種々のブロックは、明確にするために線で示されているが、実際には、これらのブロックは、論理的要素を表しており、必ずしも実際の要素でなくてもよい。例えば、表示装置等の表現要素は、I/O要素と考えられてもよい。また、プロセッサは、メモリを有する。本発明者らは、このようなものを当分野の性質であると認識しており、
図1が本発明の1つ以上の実施形態との関係で使用可能な一例としての演算装置の単なる例示であることを繰り返しておく。「ワークステーション」、「サーバ」、「ラップトップ」、「手持ち式装置」等のカテゴリ間に区別はなく、これらはすべて、
図1及び「演算装置」の参照の範囲内と考えられる。
【0018】
演算装置100は、通常、種々のコンピュータ可読媒体を含む。コンピュータ可読媒体は、演算装置100によるアクセスが可能であり、揮発性媒体及び不揮発性媒体の双方、脱着式媒体及び非脱着式媒体の双方を含む、任意の利用可能な媒体であってもよい。コンピュータ可読媒体は、コンピュータ記憶媒体及び通信媒体を備え、コンピュータ記憶媒体は、それ自体が信号を除外する。コンピュータ記憶媒体は、コンピュータ可読指示、データ構造、プログラムモジュール、又はその他のデータ等の情報を記憶する任意の方法又は技術で実施される、揮発性及び不揮発性、且つ、脱着式及び非脱着式の媒体を含む。コンピュータ記憶媒体は、所望の情報を記憶するために使用可能であり、演算装置100によるアクセスの可能なRAM、ROM、EEPROM、フラッシュメモリ又はその他のメモリ技術、CD−ROM、デジタル多目的ディスク(DVD)又はその他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置又はその他の磁気記憶装置、若しくはその他任意の媒体を含むが、これに限定されるものでない。一方、通信媒体は、搬送波又はその他の搬送機構等、変調データ信号においてコンピュータ可読指示、データ構造、プログラムモジュール、又はその他のデータを具体化し、任意の情報伝達媒体を含む。「変調データ信号」という用語は、信号内の情報を復号化するように設定又は変更された性質のうちの1つ以上を有する信号を意味する。非限定的な例として、通信媒体には、有線ネットワーク又は直接有線接続等の有線媒体と、音声、RF、赤外線、及びその他の無線媒体等の無線媒体が含まれる。上述の任意の要素の組み合わせも、コンピュータ可読媒体の範囲内に含まれなければならない。
【0019】
メモリ112に、揮発性及び/又は不揮発性メモリの形態のコンピュータ記憶媒体が含まれる。メモリは、脱着式、非脱着式、又はそれらの組み合わせであってもよい。一例としてのハードウェア装置には、固体メモリ、ハードドライブ、光学ディスクドライブ等が含まれる。演算装置100は、メモリ112又はI/O要素120等、種々の実体からデータを読み取る1つ以上のプロセッサを含む。表現要素116は、ユーザ又はその他の装置にデータ指示を提示する。一例としての表現要素には、表示装置、スピーカ、印刷要素、振動要素等が含まれる。
【0020】
I/Oポート118は、演算装置100を、I/O要素120を含む、その他の装置に論理的に連結させるが、これらの一部は内蔵されてもよい。一例としてのI/O要素には、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナ、プリンタ、表示装置、無線装置、コントローラ(スタイラス、キーボード、及びマウス等)、ナチュラルユーザインタフェース(NUI)等が含まれる。実施形態において、ペンデジタイザ(図示せず)及び付随の入力機器(図示しないが、一例として、ペン又はスタイラスが含まれてもよい)は、フリーハンドユーザ入力をデジタル的に取得するために提供される。ペンデジタイザ及びプロセッサ114の間の接続は、直接行われてもよく、従来既知のシリアルポート、パラレルポート、及び/又は、その他のインタフェース、及び/又は、システムバスを利用した連結を介して行われてもよい。さらに、デジタイザ入力要素は、表示装置等の出力要素から分離された要素であってもよく、又は、いくつかの実施形態において、デジタイザの使用可能な入力領域は、表示装置の表示領域と同延であってもよく、表示装置と一体化されてもよく、若しくは表示装置に重畳されるか、又はこれに付随する別個の装置として存在してもよい。このような任意且つすべてのバリエーション、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【0021】
NUIは、ユーザによって生成されたエアジェスチャ、声、又はその他の生理学的入力を処理する。適切なNUI入力は、演算装置100と関連の表現のためのインクストロークとして解釈されてもよい。これらの要求は、さらなる処理のため、適切なネットワーク要素に送信されてもよい。NUIは、音声認識、タッチ及びスタイラス認識、顔認識、背板認証、画面上と画面隣接部の双方におけるジェスチャ認証、エアジェスチャ、頭部及び眼部追跡、及び演算装置100のディスプレイに関連付けられたタッチ認識の任意の組み合わせを実施する。演算装置100は、ジェスチャの検出及び認識のため、立体カメラシステム、赤外線カメラシステム、RGBカメラシステム、及びこれらの組み合わせ等の深度カメラを備えてもよい。さらに、演算装置100は、動きの検出を可能にする加速度計又はジャイロスコープを備えてもよい。加速度計又はジャイロスコープの出力は、演算装置100のディスプレイに提供され、没入型仮拡張現実又は仮想現実をレンダリングしてもよい。
【0022】
本明細書に記載の主題の態様は、プログラムモジュール等のコンピュータ可読指示がモバイルデバイスによって実行される一般的文脈において説明されてもよい。通常、プログラムモジュールには、特定のタスクを実施するか、又は特定の抽象データ種別を実施するルーチン、プログラム、オブジェクト、構成要素、及びデータ構造等が含まれる。本明細書に記載の主題の態様はまた、通信ネットワークを通じて接続された遠隔処理装置によってタスクが実施される分散演算環境において実施されてもよい。分散演算環境において、プログラムモジュールは、メモリ記憶装置を含むローカルコンピュータ記憶媒体及び遠隔コンピュータ記憶媒体の双方に配置されてもよい。コンピュータ使用可能指示は、入力ソースに応じてコンピュータを反応させるインタフェースを形成する。これらの指示は、その他のコードセグメントと協働し、受信データのソースとともに受信されたデータに応じて、種々のタスクを開始する。
【0023】
上述の通り、本発明の実施形態は、システム、方法、並びにシステム及び方法のためのコンピュータ可読記憶媒体を提供するものであり、コンピュータ記憶媒体は、リアルタイムのインクストロークの平滑化、軌道予測、及びGPU活用インクストロークレンダリングを効率化するために提供される。
図2を参照すると、ブロック図は、本発明の実施形態が採用されてもよい一例としての演算システム200を示すために提供される。通常、演算システム200は、ストローク入力中及びストローク入力後、非常に大きなズームレベルであってもデジタル入力が平滑に現れる環境を示している。演算システム200はさらに、平滑化及び/又はその他の処理に基づくストロークの変化がストロークの入力中又はストローク後のいずれかにおいてユーザに実質的に知覚されないように、デジタルインクストロークの平滑化及びレンダリングが提供される環境を示している。さらに、演算システム200は、少なくとも部分的に以下にさらに説明する予測技術を使用することにより、レンダリング時間が延びることなく、多くの場合に短縮される環境を示している。
【0024】
演算装置200は、通常、不図示の他の構成要素の中でも、以下により完全に説明する通り、ディスプレイ224との関連で、デジタルインク入力を受信し、平滑化されたインク出力を提供するように構成されたユーザ演算装置210と、未来のインクストローク入力の平滑化及び予測を行うように構成されたインク平滑化エンジン212とを含む。実施形態において(且つ、
図2に示す通り)、ユーザ演算装置210及びインク平滑化エンジン212は、ネットワーク214を介して互いに連通してもよい。ネットワーク214は、限定なく、1つ以上のローカルエリアネットワーク(LAN)及び/又はワイドエリアネットワーク(WAN)を含んでもよい。このようなネットワーキング環境は、オフィスで一般的に使用されるもの、社内コンピュータネットワーク、イントラネット、及びインターネットである。従って、本明細書において、ネットワーク214についてはさらなる説明を行わない。
【0025】
本発明の実施形態の範囲内において、演算システム200には、任意の数のユーザ演算装置210及び/又はインク平滑化エンジン212が採用されてもよいことを理解しなければならない。各々、単一の装置/インタフェースを備えてもよく、又は分散環境で協働する複数の装置/インタフェースを備えてもよい。例えば、インク平滑化エンジン212は、本明細書に記載のインク平滑化エンジン212の機能を統括的に提供する分散環境に配置された複数の装置及び/又はモジュールを備えてもよい。さらに、不図示の他の構成要素又はモジュールも演算システム200内に含まれてよい。
【0026】
いくつかの実施形態において、図示の構成要素/モジュールのうちの1つ以上は、スタンドアロン型アプリケーションとして実施されてもよい。他の実施形態において、図示の構成要素/モジュールのうちの1つ以上は、ユーザ演算装置210、インク平滑化エンジン212を介して、又はインターネットベースサービスとして実施されてもよい。当業者は、
図2に示す構成要素/モジュールの性質及び数は例示であり、限定とみなされてはならないことを理解するであろう。実施形態の範囲内において所望の機能を達成するために、任意の数の構成要素/モジュールが採用されてもよい。さらに、構成要素/モジュールは、任意の数のインク平滑化エンジン212及び/又はユーザ演算装置210に配置されてもよい。単なる例示であるが、インク平滑化エンジン212は、単一の演算装置、演算装置のクラスタ、又は残りの構成要素の1つ以上から離間した演算装置として提供されてもよい。
【0027】
本明細書に記載のこの配置及び他の配置は、単なる例として記されるものであることが理解されなければならない。他の配置及び要素(例えば、機械、インタフェース、機能、命令、及び機能のグループ化等)が、図示及び/又は説明したものの追加又は代替として使用可能であり、いくつかの構成要素はともに省略されてもよい。さらに、本明細書に記載の要素の多くは、別々の、すなわち分散された構成要素として実施されてもよく、又は他の構成要素との連携で実施されてもよく、任意の好適な組み合わせ及び位置に実施されてもよい機能的実体である。1つ以上の実体によって実施されるものとして本明細書に記載した種々の機能は、ハードウェア、ファームウェア、アプリケーション、ドライバ、及び/又はソフトウェアによって実施されてもよい。例えば、種々の機能は、メモリに記憶された指示を実行するプロセッサによって実施されてもよい。
【0028】
ユーザ演算装置210には、例えば、
図1を参照して説明した演算装置100等、任意の種別の演算装置が含まれてもよい。図示の通り、ユーザ演算装置210は、インク入力受信要素216、インク入力送信要素218、平滑化(実施形態によっては拡張化)インクストローク出力受信要素220、及びディスプレイ224との関連で平滑化されたインク出力をレンダリングするGPU222を含む。インク入力受信要素216は、インクストロークのユーザ入力、通常は、ペン又はスタイラス等のI/O要素を介する入力を受信するように構成される。インク入力送信要素218は、インク入力受信要素216によって受信されたインクストロークを、例えば、ネットワーク214を介して、インク平滑化エンジン212に送信するように構成される。平滑化インクストローク出力受信要素220は、(以下により完全に説明する通り、通常は、インク平滑化エンジン212からネットワーク214を介して)ディスプレイ224との関連でレンダリングを行うための平滑化インク出力を受信するように構成される。GPU222は、ディスプレイ224との関連でレンダリングを行うため、受信した平滑化インク出力を(以下により完全に説明する通り)処理するように構成される。
【0029】
ユーザ演算装置210の任意の構成要素により実施されるものとして本明細書に記載した機能は、グラフィクスコンテンツをレンダリング可能な任意の他のアプリケーション、アプリケーションソフトウェア、ユーザインタフェース等によって実施されてもよいことに留意しなければならない。さらに、本発明の実施形態は、モバイル演算装置及びジェスチャ、タッチ、及び/又は声の入力を受容する装置に等しく適用可能であることに留意しなければならない。このような任意且つすべてのバリエーション、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【0030】
図示の通り、インク平滑化エンジン212は、スプラインフィッタ226、インク予測要素232、及びインクレンダリング要素234を含む。スプラインフィッタ226は、3次ベジエセグメントのセットでインク点のストロークを近似するように構成される。スプラインフィッタ226には、一度に、且つ、新たなインク点毎に単一のインク点が供給され、アクティブベジエセグメントを更新するか、又は、新たなインク点がアクティブベジエセグメントに十分合致することができない場合、新たなベジエセグメントを開始するように構成される。そこで、スプラインフィッタ226は、2つのサブ構成要素、すなわち、ベジエフィッタ228及びセグメント化要素230を含む。
【0031】
ベジエフィッタ228は、デジタル化されると、一度に1つずつ連続して受信されるアクティブ点のセットを維持するように構成される。このセットが更新される度に、ベジエフィッタ228は、新たな3次ベジエ近似を演算するように構成される。しかしながら、アクティブなセットは、以下により完全に説明する通り、セグメント化要素230によってリセットされることもあるので、必ずしもストロークの開始からすべての点を含む必要はない。
【0032】
セグメント化要素230は、ベジエフィッタ228によって生成される合致の質を評価し、既存のベジエ近似をいつ更新すべきであるか、また新たなベジエ近似又は曲線をいつ開始すべきであるかを決定するように構成される。ベジエフィッタ228は、尖点検出(以下により完全に説明する)等のタスクも実施し、ベジエフィッタ228を構成することにより(以下により完全に説明する通り)スプラインの解析特性を制御する。
【0033】
ベジエフィッタ228
この節では、ベジエフィッタ228がいかに3次ベジエ近似又は曲線でインク点のセットを近似するかを説明する。簡潔さのため、本説明では位置的情報のみを考慮する。しかしながら、計算式を任意の数のフィーチャまで拡張するのが簡単である。例えば、いくつかの実施例において、受信したインク点の半径(これは、入力ブラシストロークの印加圧力及びサイズに比例してもよい)が利用されてもよい。他の実施例において、傾斜、方位等の特性が使用されてもよい。このような任意且つすべてのフィーチャ、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【0034】
任意の与えられた時点で、ベジエフィッタ228は、アクティブ点のセットSk={p
0、p
1、…、p
k−1}を単一のベジエセグメントB(t)と合致させる。合致タスクは、最小化問題として定式化される。
B
*(t)=argmin
BE
式中、Eは、以下により完全に説明される誤差関数である。
【0035】
P(t)、t∈[0、1]をセットS
kで記述される暗示的多角形であるとすると、
P(0)=p
0
P(1)=p
k−1
【0036】
本実施形態によると、多角形上の点とベジエ曲線との間の距離を演算するのは費用がかさむため、多角形のサンプリングで得られた2点とパラメータの同一値におけるベジエ曲線の間の距離が近似される。
【数1】
【0037】
そして、最少化が望まれる誤差関数は、以下の通り、規定されてもよい。
【数2】
【0038】
N=k及びt
iは、誤差関数がS
kにおけるすべての点のみを考慮に入れるべく、P(t
i)=p
i、i=0、1、…、k−1となるように選択される。しかしながら、3次近似が利用されているため、サンプルには少なくとも4つの点が含まれる。
【0039】
最少化
最少化問題の変数は、Bの制御点である。C=[C
0、C
1、C
2、C
3]を制御点のベクトルとする。最急降下アプローチを使用して、最適値を探す。
【数3】
【0040】
更新規則のパラメータαは、収束率を制御する。通常、値が大きくなるほど要求される反復は少なくなるが、同時に、αが大きいとき計算が不安定になる。利用されてもよい一例としてのパラメータαは、以下の通りである。
【数4】
【0041】
さらに、合致誤差に何らの改善も生じなかった反復の数でαを除算することにより、収束のリスクを軽減してもよい。
【0042】
【数5】
は、Bの制御点に対する近似誤差の勾配であり、以下の通り、演算されてもよい。
【数6】
【0043】
3次ベジエ近似の4つの制御点に対応して、更新規則には4つの自由度が存在することに留意しなければならない。しかしながら、次の節に記載のセグメント化要素230は、スプラインに所望の解析特性(例えば、連続性)を課すため、これらの自由度の一部を使用するであろう。
【0044】
セグメント化要素230
セグメント化要素230は、2つの基本タスクを達成する。第1に、新たなベジエ近位を開始すべきであるか、又は現在のものを更新すべきであるかを決定する。第2に、新たな近似又は曲線が開始されると随時、3次ベジエフィッタ228を再構成することにより、スプライン(とりわけ、C0又はC1連続性)上の解析特性を実施する。本明細書で利用される通り、また当分野において理解される通り、「連続性」とは、隣接のベジエ曲線が接続される接合部における相対的平滑度をいう。「C0連続性」とは、隣接のベジエ曲線が同一の終点を共有する状況をいう。「C1連続性」とは、隣接のベジエ曲線が同一の終点及び同一の導関数をともに共有する状況をいう。
【0045】
新たなベジエ近似を開始すべきか、又は現在のものを更新すべきかの決定は、合致の質に基づく。より具体的には、新たなベジエ近似を開始すべきか、又は現在のものを更新すべきかの決定は、受信したデジタル化インク点と3次ベジエフィッタ228で演算された最良の近似との間の最大距離に基づく。実施形態において、カットオフ閾値は、10HIMETRIC単位(0.1mm)、つまり、使用可能性研究におけるユーザが、新たな点の到達時のインク変化(新たな点への拡張以外)が目立つことを示した点であってもよい。しかしながら、この閾値は、レンダリングの中のインクの物理的サイズに相関することに留意しなければならない。例えば、ウェットインク(すなわち、入力機器が受信面から離される前、ストローク活動中にレンダリングされるインク)が10倍の倍率にレンダリングされている場合、この閾値は、10倍小さくする必要がありそうで、さもなければユーザがインク変化に気づいてしまう。当然のことながら、ドライインク(すなわち、入力機器が一旦離されたときの、受信面上のインク)は変化しない(すなわち、セグメント化が既に行われている)ため、この点はウェットインクについてのみ意味がある。この閾値は、過去のインク点の任意の質、このようなインク点の任意のフィーチャ(例えば、座標、圧力、傾斜、捩り等)の関数であってもよく、且つ/又は、装置(例えば、DPI、利用可能なメモリ、CPU、GPU等)に依存してもよいことがさらに留意されなければならない。このような任意且つすべてのバリエーション、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【0046】
セグメント化要素230によって達成される他方の重要なタスクは、スプラインに所望の解析特性を課すことである。スプラインは、少なくとも接続されていなければならず(C0連続性)、これは各ベジエ曲線又はセグメントの第1の制御点が過去の曲線又はセグメントの最終制御点と合致しなければならないことを意味するため、1つの自由度が失われる。
【数7】
【0047】
C0連続性は、スプラインが接続されていることを保証するものであるが、
図3に示す通り、平滑なインクを生成するのに十分でなく、円で囲んだ接続領域が悪い(非平滑な)アーチファクトを指摘している。
【0048】
本発明の実施形態によると、
図3の悪いアーチファクトは、C1連続性を課すことによって除去されてもよい。パラメトリックC1連続性は、t=0におけるセグメントの導関数がt=1における過去のセグメントのものと合致することを必要とする。
【数8】
【0049】
しかしながら、良好な合致を生じるために自由度をほとんど残さないパラメトリックC1連続性が課されたとき、他の自由度が失われる。幸い、スプラインが平滑に見えるのに必要なものは、制限度がより低く、第2の制御点の方向のみを拘束することを要求する幾何学的(パラメトリックとは対照的)C1連続性のみである。
【数9】
【0050】
本実施形態によると、幾何学的C1連続性は、更新規則の適用後に要求される方向に第2の制御点を投影することによって課されてもよい。
【0051】
不安定な挙動の防止
時には、幾何学的C1連続性の実施の結果として、例えば
図4に示す通り、望ましくない不安定な挙動の慣習を生じてしまう。この挙動は、多くの場合、C0連続スプラインに時折観察される尖点より悪く現れる。この挙動の根本的要因は、t=1における最後に実行されたベジエの導関数が対応のデジタル化された点に一致しないことのように見受けられる。従って、この問題は、
図5に示す通り、t=1におけるベジエ近似の導関数がデジタル化された最後の2点を接続するベジエ近似又はセグメントの導関数と合致しなければならないという新たな制約をベジエフィッタ228に加えることにより、軽減されてもよい。本実施形態の範囲内において、他の軽減も可能であることに留意しなければならない。例えば、以前のベジエ及び現在のベジエの双方が更新されてもよい。或いは、2つのベジエが同時に合致されてもよく、2つの間に連続性が課され、合致要件が満たされなければ、その度に新たなベジエセグメントの対が開始されてもよい。
【0052】
尖点検出
通常、C1連続性は望ましい特性であるが、実施が好都合でない場合もある。とりわけ、C1連続性は意図された尖点も除去してしまう。このため、セグメント化要素230はさらに、尖点検出の結果に基づき、C1連続性のためにベジエフィッタ228を構成するように構成される。
【0053】
尖点検出の簡単なアプローチは、最後の3点で形成される角度を確認し、規定の閾値を下回る尖点角度として分類することである。同様のアプローチとして、t=0における現在のセグメントの導関数でt=1における過去のセグメントの導関数で形成された角度の決定の基準とする。このような任意且つすべてのアプローチ、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【0054】
インク予測要素232
手書きでは、方向が鋭利に、且つ、予測不能に変化することが多いにあり、ユーザが随時ペン(又は、その他の入力機器)を持ち上げることがあって、予測を不要なものにするばかりか潜在的に有害なものとしてしまうため、入力機器の次のいくつかの位置を予測することは、解決の困難な問題である。
【0055】
インク予測要素232は、まず、インク予測の質を評価させる測定基準を規定することにより、予測品質を成立させるように構成される。考慮すべき2つの主要な面がある。つまり、ユーザ経験及び性能である。ユーザ経験に関しては、誤った予測の結果として、インク片が画面又はその他の表示面上でレンダリングし、予測が誤っていると証明されると直ちに、数フレーム内でクリアされる。これにより、予測がフレームに亘って安定しないときに悪化するチラつき効果を生じることがある。測定基準は、エンドユーザによって予測誤差の観察が可能か否かを反映しなければならない。
【0056】
性能に関しては、一例としてのアプローチは、予測品質の測定基準として、誤差ベクトルの主要成分
【数10】
を使用することである。
図5は、5点前予測の例を提供するものである。デジタル化された点をドットで表している。実線610で接続されたものは既にデジタル化されており、接続されていない(且つ、大きい方の三角形の内部に現れた)ものは未来におけるものである。予測点は、点線612で接続されている。予測点を最後にデジタル化された点と接続するベクトル
【数11】
は、予測ベクトルである。未来にデジタル化される点を最後にデジタル化された点と接続するベクトル
【数12】
は、実現ベクトルである。ベクトル
【数13】
は、予測誤差であり、
【数14】
は、その主要成分である。
【数15】
は、予測がどの程度遅れているか、又は行き過ぎているかを測定するものである。
【数16】
は、予測点が実現ベクトルからどの程度離れているかを測定するものである。
【0057】
インク予測のためにインク予測要素232によって使用されてもよい1つの技術に、デジタル化された点を3次ベジエスプラインに合致させることが含まれる。その基本的考え方は、最終ベジエセグメントB(t)をその未来に拡張することにより予測を行うというものであり、単に任意のt>1におけるサンプリングB(t)を意味する(
図6の点線)。
【0058】
tの選択
kを未来予測が望まれる点の数とし、
【数17】
をデジタル化された最後の2点間の距離とする。t≧1は、ベジエ曲線の弧の長さ又はB(1)及びB(t)の間のセグメントがk・d
tと等しくなるように選択されてもよい。
【0059】
3次曲線の弧の長さについて閉形式ソリューションは存在しないが、既知の事実の数を活用する近似を利用してもよい。第1に、ベジエ曲線の終点間の距離は、その弧の長さの下限である。第2に、ベジエ曲線の制御多角形の長さは、その弧の長さの上限である。
【0060】
再パラメータ化
予測をレンダリングする最も簡易なオプションは、最後にデジタル化された点から予測点まで線を引くことである。しかしながら、より良いアプローチは、
図6に示す通り(点線6)、ベジエ曲線の延長戦を引くことである。従って、インク予測要素232は、さらに、曲線が変化しないように、ベジエ曲線の再パラメータ化を行うように構成される。
B
r(0)=P
t、
B
r(1)=B(k・d
t)
式中、Bは、当初のベジエであり、B
rは、再パラメータ化されたものである。再パラメータ化は、常時実施可能であるため、そのコストは無視することができる。
【0061】
インク予測要素232は、この技術を利用して、悪いアーチファクト(すなわち、視認できる誤予測)を導入することなく、約16ms先の予測を行ってもよい。
【0062】
インクレンダリング
合致及び予測の終了時、その結果は、ベジエ近似{B
t(t)}のセットと、対応する半径{R
t(t)}のセットである。通常、B
tは、3次関数であり、4つの制御点、すなわち、B
i、0、B
i、1、B
i、2、B
i、3でパラメータ化される。状況によっては、R
iは線形であり、開始半径及び終了半径のみによってパラメータ化される。
R
i(t)=(1−t)R
i、0+tR
i、3
【0063】
他の状況では、これらは3次方程式であり、当業者に周知の通り、ベルンシュタイン多項式を使用して、4つの制御点の各々の重みでパラメータ化される。
【数18】
【0064】
与えられた(B
i,R
i)の対は、
図7に示す通り、インクストロークのセグメントを表す。象徴的な意味において、これは、点{B
i(t)+s*R
i(t)
t0<s、t<1}の軌跡に対応する。
【0065】
図8のフロー図は、本発明の実施形態に係る、インクをレンダリングするための一例としての一般的プロセス800を示す。点線の左に示した機能は、例えば、
図2のインク平滑化エンジン212のインクレンダリング要素234を利用して実施されてもよい。点線の右側に示した機能は、例えば、
図2のユーザ演算装置210のGPU222を利用して実施されてもよい。
【0066】
輪郭変換810
本発明の実施形態は、インクの取得及び合致が行われた後、且つ、レンダリングの実施前のインクに、任意の2Dアフィン変換(3×2マトリクス
【数19】
によって規定される)が適用されるようにする。このような変換は、例えば、インクを含む文書のパン及びズームのモデル化に有用である。
【0067】
変換は、2つのステップで実施される。第1のステップ(「輪郭変換」)では、ベジエ関数B
i(t)を変換する。これは、単にベジエ制御点B
i、0、B
i、1、B
i、2、B
i、3を特定マトリクス(概念的には、これはインクの全体形状に影響するが、厚さには影響しない)で乗算することによって達成される。
【0068】
第2のステップでは、半径を変換する。これは、以下により完全に説明する通り、頂点シェーダ820において達成される。M(m
31及びm
32)の変換成分は、半径の変換時には使用されないことに留意する。以降の本説明においては、符号Mは2×2マトリクス
【数20】
をいう。
【0069】
平坦化812
与えられたストロークをレンダリングするために、各成分たるベジエ近似は、「平坦化」される。形式上、t
i、jのセットが各(B
i,R
i)対に対して選択され、これらのtで関数が評価される(これは、逆に、本質的に曲線に合致する)。t
i、jのセットを選択する正確な方法は、規定の実施である。一実施例において、米国特許第5,367,617号に記載の通り、ハイブリッド前進差分アルゴリズムを利用してもよく、この全体を本明細書に記したのと同様に参照としてここに組み込む。当業者は、全身差分等、その他の技術が当分野で一般的且つ周知であり、同様に利用されてもよいことを理解するであろう。
【0070】
結果は、点と、曲線に沿って存在する半径(p
1,r
1)、…、(p
n,r
n)の一覧である。このデータは、その後、GPUに送られ、所謂「頂点バッファ」(以降、VBlと指定する)に記憶される。
【0071】
インスタンス化モザイク処理814
2つの他の頂点バッファもGPUに引き渡されるが、この一方は、円を近似する三角形メッシュを含み、他方は、台形を表す三角形メッシュである。これらのメッシュは、初期化中に一度演算され、キャッシュされ、次のレンダリング動作で再使用される。
【0072】
特定の実施例では、モザイク処理を異なる方法で表してもよい。一実施例では、以下の方式を利用する。
【0073】
円形三角形メッシュにおける各頂点は、以下のデータを含む。
CenterOrEdge:1ビット(0:中央、1:縁部)
InteriorOrExterior:1ビット(0:内部、1:外部)
Direction:float2(正規化)
【0074】
内側頂点及び外側頂点を接続する三角形を使用して、アンチエイリアシングを提供する(
図8に示す明暗勾配によって指定される)。実際には、頂点に絶対座標が記憶されず、他のものと関連する際の頂点の位相的関係のみが記録されることに留意しなければならない。例えば、以下の図の頂点Aは、内側縁部頂点であり、以下の通り、記憶されるであろう。
(CenterOrEdge:1、InteriorOrExterior:0、Direction:(1,0))
頂点Dは、外側縁部頂点であり、以下の通り、記憶されるであろう。
【数21】
(反転y軸を想定)。中央頂点(
図9中、Cとして指定)が1つのみ存在し、これは、内側であり、任意の方向に割り当てられる。
【0075】
また、実施例においては正確な数の三角形(引いては頂点)が変動し得るものであり、通常、レンダリングされているインクの最大半径に応じて決まるものであることにも留意しなければならない。
【0076】
台形における各頂点は、以下のデータを含む。
StartOrEnd:1ビット(0:開始、1:終了)
InteriorOrExterior:1ビット(0:内側、1:外側)
TopOrBottom:1ビット(0:頂上部、1:底部)
【0077】
例えば、以下の図における頂点Aは、頂上部における内側開始頂点であり、以下の通り、記憶されるであろう。
(StartOrEnd:0、InteriorOrExterior:0、TopOrBottom:0)
【0078】
頂点Bは、底部における内側端部頂点であり、
図10に示す通り、以下のように記憶されるであろう。
(StartOrEnd:1、InteriorOrExterior:0、TopOrBottom:1)
この場合、レンダリングされているインクの半径に関わらず、独自の頂点の数が8に固定される。
【0079】
ワイド化及びラスタ化816
一旦データがGPUにアップロードされると、ラスタ化の残りのステップが2つのパスで実施される。すなわち、1つは円のレンダリングであり、もう1つは台形のレンダリングである。一実施例では、例えば、後述する標準Direct3Dパイプラインの5つの段階(818、820、822、824、及び826)を使用して各パスを実施する。当業者は、OpenGL等の他のプラットフォームには、Direct3Dに直接類似する他の実施例も可能であることを理解及び認識するであろう。このような任意且つすべてのバリエーション、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。
【0080】
入力アセンブラ818、ラスタライザ822、及び出力統合器826は、固定機能を有し、GPU自体によって基本的に自動的に実施される。頂点シェーダ820及び画素シェーダ824は、プログラム可能である。
【0081】
入力アセンブラ818
入力アセンブラ818は、円形/台形メッシュ及びVB1内の頂点を採り、パイプラインの残りの部分による処理にそれらを準備するように構成される。部分的に、これには、VB1内の頂点に亘るメッシュのコピーを複製することが含まれる(「インスタンス化」として当業者には既知の一般的技術)。円形パスにおいて、入力アセンブラ818は、VB1内の頂点毎にメッシュのコピーを1つ割り当てるように構成される。台形パスにおいて、入力アセンブラ818は、VB1における連続頂点の対事に1つのコピーを割り当てる。入力アセンブラ818によって出力される頂点は、メッシュ及びVB1データの双方からの統合データを含む。
円形パス頂点形式:
(CenterOrEdge、InteriorOrExterior、Direction、p
i、r
i)
台形パス頂点形式:
(StartOrEnd、InteriorOrExterior、TopOrBottom、p
i、r
i、p
i+1、r
i+1)
【0082】
頂点シェーダ820
本実施形態によると、入力アセンブラ818によって出力された各頂点を採り、それを位置及び不透明度に凝縮する頂点シェーダ820が提供される。円形パスについては、以下の計算式が使用される。
【数22】
【0083】
ここで、Mは、文書においてより早期に規定された2×2マトリクスであり、(M
−1)
tは、その逆転置である。
【0084】
オフセット及びopacityModifierの関数について、以下により詳細に検討するが、一般的には、単にoffset(a,r)=(1/2−a)及びopacityModifier(r)−1である。
【0085】
台形パスについては、より複雑な計算式が使用されてもよい。
【数23】
【数24】
【0086】
ここで、kot90°は、90度回転マトリクス
【数25】
である。
【0087】
インクレンダリングのより早期のバージョンでは、これらの計算式と同様のバージョンが使用されてきたことに留意しなければならない。しかしながら、本発明の実施形態は、以前の具体化とは異なり、GPU上で変換を実施する。
【0088】
これらの計算式の導関数は、本説明の範囲を超えるものであることにも留意しなければならない。しかしながら、
図11、
図12、及び
図13は、種々の量を互いに関連付ける補助となってもよい。
図11は、2つの隣接インク点を示す図である(Mは同一であると想定する)。
図12は、P(i+1)周辺のクローズアップを示す(TopOrBottom=0、StartOrEnd=1、及びMは同一であると想定する)。
図13は、P+D周辺のクローズアップを示す(TopOrBottom=0、StartOrEnd=1、及びMは同一であると想定する)。
【0089】
ラスタライザ822
複製メッシュの頂点が一旦変換されると、対応する三角形は、ラスタライズ822を利用して、GPUによってラスタ化される。換言すると、三角形にカバーされた画素が特定され、画素シェーダ824がカバーされた画素毎に一度呼び出される。D3Dラスタ化は、当業者にとって既知であるため、本明細書ではさらなる説明を行わない。
【0090】
画素シェーダ824
画素シェーダ824は、ラスタライザ8222から不透明度を採り、それをインクの色の変調に使用する。
Color
output=Opacity*Color
input
【0091】
この色変調は、インクの縁部に沿ったアンチエイリアシングのシミュレーションを行うものである(状況によっては、これは簡易のべた一色であるが、より複雑な状況においては、色は画素の位置に応じて決まってもよい)。その後、この色値は、出力統合器826に引き渡される。
【0092】
出力統合器826
出力統合器826は、色値を受け取り、レンダリング対象乗にそれをブレンドするように構成される。出力統合は、当業者にとって既知であるため、本明細書中ではさらなる説明を行わない。
【0093】
薄いフィーチャの軽減
本明細書において上述した通り、本発明の実施形態は、2つの補助的関数、すなわちオフセット及びopacityModifierを使用する頂点シェーダ820を提供する。オフセットの目的は、画面空間内で頂点を1/2画素オフセットすることにより、アンチエイリアシングのシミュレーションを行うことである。レンダリングされている円/台形の寸法が1画素未満である場合、特別な論理が加えられ、このオフセットによって三角形の重畳を生じる機会を軽減してもよい。このような論理が実施されるとき、頂点の不透明度が対応して修正される。
【0094】
オフセット及びopacityModifierの完全な定義は、以下の通りである。
【数26】
【0095】
次に、
図14を参照すると、本発明の一実施形態に係るデジタルインク入力を平滑化するための一例としての方法1400を示すフロー図が示されている。ブロック1410に示される通り、第1のインク点を受信する。ブロック1412に示される通り、第2のインク点も受信する。ブロック1414に示される通り、第1のインク点及び第2のインク手に基づき、アクティブ3次ベジエ近似を演算する。ブロック1416に示される通り、第3のインク点を受信する。ブロック1418に示される通り、第3のインク点がアクティブ3次ベジエ近位jに十分に合致するか否かを判定し、ブロック1420に示される通り、第1のインク点、第2のインク点、及び第3のインク点を利用して、新たな3次ベジエ近似を演算する。
【0096】
図15を参照すると、本発明の一実施形態に係るデジタルインク入力を平滑化及びレンダリングするための一例としての方法1500を示すフロー図が示されている。ブロック1510に示される通り、第1のインク点及び第2のインク点を連続して受信する。ブロック1512に示される通り、第1のインク点及び第2のインク点に基づき、アクティブ平滑化インクフラグメントを生成する。ブロック1514に示される通り、第3のインク点を受信する。その後、ブロック1516で示される通り、第3のインク点がアクティブ平滑化インクフラグメントに十分合致するか否かを判定する。第3のインク点がアクティブ平滑化インクフラグメントに十分合致すると判定された場合、ブロック1518に示される通り、アクティブ平滑化インクフラグメントを更新する。しかしながら、第3のインク点がアクティブ平滑化インクフラグメントに十分合致しないと判定された場合、ブロック1520に示される通り、アクティブ平滑化インクフラグメントを終了し、第2の平滑化インクフラグメントを開始する。GPUを利用して、第1のインク点、第2のインク点、及び第3のインク点を備える平滑化インク出力をレンダリングする。これは、ブロック1522に示されている。
【0097】
次に、
図16を参照すると、本発明の一実施形態に係るデジタルインク入力を平滑化及びレンダリングするための一例としての方法1600を示すフロー図が示されている。ブロック1610に示される通り、第1のインク点を受信する。ブロック1612に示される通り、第2のインク点も受信する。ブロック1614に示される通り、第1のインク点及び第2のインク点に基づき、アクティブ3次ベジエ近似を演算する。ブロック1616に示される通り、第3のインク点を受信する。その後、ブロック1618に示される通り、第3のインク点がアクティブ3次ベジエ近似に十分合致するか否かを判定する。ブロック1620に示される通り、第1のインク点、第2のインク点、及び第3のインク点を利用して、新たな3次ベジエ近似を演算する。その後、第1のインク点、第2のインク点、及び第3のインク点を備える平滑化インク出力をレンダリングする。これは、ブロック1622に示されている。
【0098】
理解される通り、本発明の実施形態は、中でも、リアルタイムのインクストローク平滑化、軌道予測、及びインクストローク入力のGPU活用レンダリングを効率化するためのシステム、方法、及びコンピュータ可読記憶媒体を提供するものである。少なくとも第1のインク点及び第2のインク点を含む複数のインク点を受信する。第1のインク点及び第2のインク点に基づき、アクティブベジエ近似を演算する。時間的に第1のインク点及び第2のインク点に次いで、第3のインク点を受信し、第3のインク点がアクティブベジエ近似に十分合致するか否かを判定する。ユーザがレンダリングに際して両者間に差異を検出できないと判定される場合、第3のインク点はアクティブベジエ近似に十分合致すると判定される。このような判定は、通常、所定の閾値差異値に基づく。第3のインク点がアクティブベジエ近似に十分合致すると判定された場合、第3のインク点を含むようにアクティブベジエ近似を更新する。しかしながら、第3のインク点がアクティブベジエ近似に十分合致しないと判定された場合、アクティブベジエ近似を終了し、新たなベジエ近似を演算する。ストローク受信面、例えば、タッチ感応表示画面と関連して、第1のインク点、第2のインク点、及び第3のインク点を含む平滑化インク出力をレンダリングする。
【0099】
本発明を特定の実施形態との関連で説明してきたが、これらは制約でなく、完全に例示を意図するものである。本発明の属する分野の当業者にとって、本発明の範囲から逸脱することなく、その代替実施形態が明らかとなるであろう。
【0100】
本発明は、種々の修正及び代替構成の影響を受けやすいものの、特定の一例としての実施形態を図面に示しており、以上に詳細に説明した。しかしながら、本発明を開示の特定の形態に限定するものでなく、逆に、すべての修正、代替構成、及びその同等物が本発明の精神及び範囲に収まることが理解されなければならない。
【0101】
当業者は、
図14の方法1400、
図15の1500、及び
図16の1600において示されるステップの順は、あらゆる方法においても本発明の範囲を限定することを意味するものでなく、実際には、これらのステップは、本実施形態における種々の異なるシーケンスで発生してもよいことを理解するであろう。このような任意且つすべてのバリエーション、及びそれらの任意の組み合わせは、本発明の実施形態の範囲内であると考えられる。