(57)【要約】【課題】ユーザーが描画および筆記した内容を認識して受容する知的アプリケーションを提供する。【解決手段】電子スタイラス１６により、電子ディスプレイ１２のキャンバスに描画された複数のデジタルインクストロークにより形成されたノードリンクダイアグラムに構造認識を提供する方法において、関係するストロークを、グループ内のストロークの構造化された解釈を反映する複数の仮説にグループ分けし、複数の仮説の信頼度スコアを計算し、仮説間に制約を適用し、適用された制約下で仮説への受理／棄却値の集合的に高いスコア割り当てを探索し、ノードリンクダイアグラムの表現として集合的に高いスコア割り当てを有する仮説を受理する。【選択図】図１
2008243204.tif 000002
【特許請求の範囲】
【請求項１】
入力装置により電子装置のキャンバスに描画された複数のデジタルインクストロークにより形成されたノードリンクダイアグラムに構造認識を提供する方法であって、
関係するストロークを、グループ内のストロークの構造化された解釈を反映する複数の仮説にグループ分けするステップと、
前記ストロークグループのストロークおよび囲みストロークに関する局所的証拠に基づいて複数の仮説の信頼度スコアを計算するステップと、
前記仮説間に制約を適用するステップと、
前記適用された制約下で仮説への受理／棄却値の集合的に高いスコア割り当てを探索するステップと、
前記ノードリンクダイアグラムのストロークに構造情報を提供して前記ノードリンクダイアグラムを電子的に編集可能にすべく、前記ノードリンクダイアグラムの表現として前記集合的に高いスコア割り当てを有する仮説を受理するステップと、
を含む方法。
【請求項２】
（ｉ）前記ノードリンクダイアグラムにデジタルインクストロークを追加するステップと、
（ｉｉ）前記ノードリンクダイアグラムからデジタルインクストロークを削除するステップと、
（ｉｉｉ）前記ノードリンクダイアグラムから文字項目の正式なオブジェクト表現を削除するステップと、
（ｉｖ）前記ノードリンクダイアグラムから図形項目の正式なオブジェクト表現を削除するステップと、
（ｖ）前記ノードリンクダイアグラムのデジタルインクストロークを空間的に変換するステップと、
（ｖｉ）前記ノードリンクダイアグラムの文字項目の正式なオブジェクト表現を空間的に変換するステップと、
（ｖｉｉ）前記ノードリンクダイアグラムの図形項目の正式なオブジェクト表現を空間的に変換するステップと、
のうち少なくとも１つのステップと、
前記ノードリンクダイアグラムの漸増的構造認識を実行するステップと、
を更に含む、請求項１に記載の方法。
【請求項３】
前記漸増的構造認識が、
追加、削除、空間的変換のうち少なくとも一つに起因して新たな構造仮説を生成するステップと、
（ｉ）前記新たな構造仮説を既存の構造仮説グループとグループ化するステップ、及び、（ｉｉ）新たな構造仮説グループを形成するステップ、のうちの１つのステップと、
影響を受けたグループを認識するステップと、
前記受理された仮説から形成された階層束を更新するステップと、
を含む、請求項２に記載の方法。
【請求項４】
関係するストロークを、グループ内のストロークの構造化された解釈を反映する複数の仮説にグループ分けするステップと、
前記ストロークグループのストロークおよび囲みストロークに関する局所的証拠に基づいて複数の仮説の信頼度スコアを計算するステップと、
前記仮説間に制約を適用するステップと、
前記適用された制約下で仮説への受理／棄却値の集合的に高いスコア割り当てを探索するステップと、
前記ノードリンクダイアグラムのストロークに構造情報を提供して前記ノードリンクダイアグラムを電子的に編集可能にすべく、前記ノードリンクダイアグラムの表現として前記集合的に高いスコア割り当てを有する仮説を受理するステップと、
をコンピュータに実行させるプログラム。
【請求項５】
（ｉ）前記ノードリンクダイアグラムにデジタルインクストロークを追加するステップと、
（ｉｉ）前記ノードリンクダイアグラムからデジタルインクストロークを削除するステップと、
（ｉｉｉ）前記ノードリンクダイアグラムから文字項目の正式なオブジェクト表現を削除するステップと、
（ｉｖ）前記ノードリンクダイアグラムから図形項目の正式なオブジェクト表現を削除するステップと、
（ｖ）前記ノードリンクダイアグラムのデジタルインクストロークを空間的に変換するステップと、
（ｖｉ）前記ノードリンクダイアグラムの文字項目の正式なオブジェクト表現を空間的に変換するステップと、
（ｖｉｉ）前記ノードリンクダイアグラムの図形項目の正式なオブジェクト表現を空間的に変換するステップと、
のうち少なくとも１つのステップと、
前記ノードリンクダイアグラムの漸増的構造認識を実行するステップと、
を更にコンピュータに実行させる、請求項４に記載のプログラム。
【請求項６】
前記漸増的構造認識が、
追加、削除、空間的変換のうち少なくとも一つに起因して新たな構造仮説を生成するステップと、
（ｉ）前記新たな構造仮説を既存の構造仮説グループとグループ化するステップ、及び、（ｉｉ）新たな構造仮説グループを形成するステップ、のうちの１つのステップと、
影響を受けたグループを認識するステップと、
前記受理された仮説から形成された階層束を更新するステップと、
を含む、請求項５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、電子的に形成された画像の生成に関し、具体的にはノードリンク型ダイアグラム、より具体的には非電子的ホワイトボードすなわちペンと紙を用いるのと同様の仕方で形成でき、しかも電子的な編集機能を更に含んでいる概念マップに関する。
【背景技術】
【０００２】
コンピュータへのペン／スタイラスインターフェースは、紙またはホワイトボードと同程度に直観的でありながら、コンピュータアプリケーションが提供する編集、探索その他の処理能力および機能を有するアプリケーションの可能性も有している。
【０００３】
関連する技術についての文献として、例えば以下の特許文献がある。
【０００４】
【特許文献１】米国特許第７０３６０７７号明細書
【特許文献２】米国特許第７１３９００４号明細書
【特許文献３】米国特許第７１３６０８２号明細書
【特許文献４】米国特許第６９０３７５１号明細書
【特許文献５】米国特許第５５５３２２４号明細書
【発明の開示】
【発明が解決しようとする課題】
【０００５】
概念マッピングや思考マッピング等のノードリンクダイアグラム用の現行ＵＩ設計は、メニューから選択により図形が入力され、キーボードにより文字が入力されるキーボード／マウスソフトウェアを応用したものである。この方式をペン／スタイラスコンピュータに採用すべく、ペンは主としてポインティングデバイスとして扱われるが、限られた単一ストロークの形状認識を用いてノードオブジェクトの入力またはリンクの表示を行なったり、マイクロソフトその他のソフトウェア会社から提供される手書き文字認識機能を導入してペン入力や文字編集に利用したりすることができる。この方式は、ユーザーが描画や筆記を行なう際に外部ユーザーインターフェースコマンドを用いる必要なしにユーザーが描画および筆記した内容を認識して受容する知的アプリケーションに期待されるものからは懸け離れている。本出願は、既存のペン方式のシステムおよび方法の上記および他の短所を解決するシステムおよび方法を提示するものである。
【課題を解決するための手段】
【０００６】
本発明の１つの態様の方法は、入力装置により電子装置のキャンバスに描画された複数のデジタルインクストロークにより形成されたノードリンクダイアグラムに構造認識を提供する方法であって、関係するストロークを、グループ内のストロークの構造化された解釈を反映する複数の仮説にグループ分けするステップと、前記ストロークグループのストロークおよび囲みストロークに関する局所的証拠に基づいて複数の仮説の信頼度スコアを計算するステップと、前記仮説間に制約を適用するステップと、前記適用された制約下で仮説への受理／棄却値の集合的に高いスコア割り当てを探索するステップと、前記ノードリンクダイアグラムのストロークに構造情報を提供して前記ノードリンクダイアグラムを電子的に編集可能にすべく、前記ノードリンクダイアグラムの表現として前記集合的に高いスコア割り当てを有する仮説を受理するステップと、を含む。
【０００７】
本発明の１つの態様の方法において、（ｉ）前記ノードリンクダイアグラムにデジタルインクストロークを追加するステップと、（ｉｉ）前記ノードリンクダイアグラムからデジタルインクストロークを削除するステップと、（ｉｉｉ）前記ノードリンクダイアグラムから文字項目の正式なオブジェクト表現を削除するステップと、（ｉｖ）前記ノードリンクダイアグラムから図形項目の正式なオブジェクト表現を削除するステップと、（ｖ）前記ノードリンクダイアグラムのデジタルインクストロークを空間的に変換するステップと、（ｖｉ）前記ノードリンクダイアグラムの文字項目の正式なオブジェクト表現を空間的に変換するステップと、（ｖｉｉ）前記ノードリンクダイアグラムの図形項目の正式なオブジェクト表現を空間的に変換するステップと、のうち少なくとも１つのステップと、前記ノードリンクダイアグラムの漸増的構造認識を実行するステップと、を更に含んでいてよい。
【０００８】
本発明の１つの態様の方法において、前記漸増的構造認識が、追加、削除、空間的変換のうち少なくとも一つに起因して新たな構造仮説を生成するステップと、（ｉ）前記新たな構造仮説を既存の構造仮説グループとグループ化するステップ、及び、（ｉｉ）新たな構造仮説グループを形成するステップ、のうちの１つのステップと、影響を受けたグループを認識するステップと、前記受理された仮説から形成された階層束を更新するステップと、を含んでいてよい。
【０００９】
本発明の１つの態様のプログラムは、関係するストロークを、グループ内のストロークの構造化された解釈を反映する複数の仮説にグループ分けするステップと、前記ストロークグループのストロークおよび囲みストロークに関する局所的証拠に基づいて複数の仮説の信頼度スコアを計算するステップと、前記仮説間に制約を適用するステップと、前記適用された制約下で仮説への受理／棄却値の集合的に高いスコア割り当てを探索するステップと、前記ノードリンクダイアグラムのストロークに構造情報を提供して前記ノードリンクダイアグラムを電子的に編集可能にすべく、前記ノードリンクダイアグラムの表現として前記集合的に高いスコア割り当てを有する仮説を受理するステップと、をコンピュータに実行させる。
【００１０】
本発明の１つの態様のプログラムにおいて、（ｉ）前記ノードリンクダイアグラムにデジタルインクストロークを追加するステップと、（ｉｉ）前記ノードリンクダイアグラムからデジタルインクストロークを削除するステップと、（ｉｉｉ）前記ノードリンクダイアグラムから文字項目の正式なオブジェクト表現を削除するステップと、（ｉｖ）前記ノードリンクダイアグラムから図形項目の正式なオブジェクト表現を削除するステップと、（ｖ）前記ノードリンクダイアグラムのデジタルインクストロークを空間的に変換するステップと、（ｖｉ）前記ノードリンクダイアグラムの文字項目の正式なオブジェクト表現を空間的に変換するステップと、（ｖｉｉ）前記ノードリンクダイアグラムの図形項目の正式なオブジェクト表現を空間的に変換するステップと、のうち少なくとも１つのステップと、前記ノードリンクダイアグラムの漸増的構造認識を実行するステップと、を更にコンピュータに実行させてよい。
【００１１】
本発明の１つの態様のプログラムにおいて、前記漸増的構造認識が、追加、削除、空間的変換のうち少なくとも一つに起因して新たな構造仮説を生成するステップと、（ｉ）前記新たな構造仮説を既存の構造仮説グループとグループ化するステップ、及び、（ｉｉ）新たな構造仮説グループを形成するステップ、のうちの１つのステップと、影響を受けたグループを認識するステップと、前記受理された仮説から形成された階層束を更新するステップと、を含んでいてよい。
【発明を実施するための最良の形態】
【００１２】
本明細書においてユーザーインターフェース（ＵＩ）を用いるコンセプトスケッチプログラムまたはプロセスとも呼ぶ、スタイラス／ペンコンピュータシステムによりノードリンクダイアグラムを対話的に作成および編集する方法および装置について記述する。ＵＩは、電子ホワイトボード、グラフィックタブレット、デジタル用紙その他の平坦な表面または電子キャンバス上への手書き動作の拡張として動作する。ユーザーが文字や図形を描画するのに従い、マーキングがノード、リンク、および概念マップ等のノードリンクダイアグラムの文字ラベルとして密かに解釈される。認識された構造は続いて、有意味なオブジェクトを単にタップするだけで選択したり、ユーザー指示による漸増的且つ可逆的な整形／正式化動作を可能にする。
【００１３】
本ＵＩ設計は、ＵＩの複雑な水面下の働きをグラフィカルユーザーインターフェース（ＧＵＩ）および認識モジュール（層またはプロセスとも呼ばれる）に分割する新たなアーキテクチャを用いる。ＧＵＩと認識モジュールの間でデジタルインクストロークが並列に維持され、モジュール間の通信は主にストロークＩＤおよびＸＭＬ文字列により行なわれる。
【００１４】
ＵＩ設計の実装は、手書きの文字や図形を解釈する認識モジュールの能力に依存するが、これは人工知能およびコンピュータビジョン分野の極めて困難な問題である。本出願はまた、オブジェクトのオントロジー、仮説の束を構築するアルゴリズム、および最適、ほぼ最適、あるいは所望の達成可能な大域的解釈を求めて仮説空間を探索する制約付き探索プロセスについて記述する。
【００１５】
本概念は、知的ノードリンクダイアグラムを作成および編集する方法およびシステムを指向しており、本システムの知的な部分が、ダイアグラムの構造の認識により得られた追加的機能を、独立に、または一体的に包含している。以下では一般にノードリンクダイアグラムについて議論するが、本概念から概念マップの作成および編集に特定の利点が得られる。
【００１６】
概念マップとは、情報を視覚的に表わすために用いるノードおよびリンクからなるノードリンクダイアグラムの特別な形式である。概念マッピングにおいて、ノードは概念、項目、または質問を表わすデータの表現として定義される。ノードは、ラベル、色、または形状等、データを表わすために多くの排他的でない属性を有することができる。リンクもまた、概念ノード同士の関係を示すことによりデータを表わすために用いられる。これらは往々にして、例えば矢印等の終端記号により方向を識別することによりデータ表現に関係する点で追加的な特徴を有する。このように、ラベル付けされたリンクはノード間の関係を説明し、矢印その他の終端子により関係の向きを表わすことができるため、ユーザーは概念マップを理解することができる。しかし、有向リンクを概念マップその他のノードリンクダイアグラムで用いるか否かは任意である。リンクは、いずれかの終端に終端記号があっても、あるいは一切終端記号がなくてもよい。また、リンクおよびノードは、ラベル付きでも、あるいはラベル無しでもよい。関係を表わすために単に有向または無向リンクが存在するだけで十分な場合もある一方、他の状況ではラベルが関係についてより多くの詳細事項を提供する。
【００１７】
図１に、電子スタイラスまたはペン１６、あるいは追加的／代替的にキーボード１８またはマウス２０を用いて操作すべく構成されたコンピュータ１４と通信状態にある電子ディスプレイ１２を含む環境またはシステム１０を示す。コンピュータ１４は、適切な入力がコンピュータ１４により受理された場合にコンセプトスケッチプログラムを格納して動作させるのに十分なメモリおよび処理能力を含んでいる。システムは、有線または無線環境において動作可能である。上述の構成要素の各種のものは、別々であっても、あるいはタブレットコンピュータ、携帯情報端末、携帯電話その他の計算能力を有する電子装置等の単一装置に一体化されていてもよい。電子ディスプレイ１２は、電子ホワイトボードシステムと同様に、これらの装置のいずれにも取り付け、または組み込むことができる。
【００１８】
電子ディスプレイ１２およびコンピュータ１４は、ユーザーがスタイラスまたはペン１６を操作してその上にノードリンクダイアグラム２４を作成するキャンバス２２等の書込領域を形成すべく構成されている。キャンバスは、電子ディスプレイのある領域を表わすことを意図しているため、スタイラスまたはペン１６による電子インクの生成により、ディスプレイ面上への直接的な描画や筆記が可能になる。
【００１９】
あるいは、装置（例：グラフィックタブレット）は別個であって、ユーザーその他がダイアグラムを見るディスプレイとは分かれていてよい。
【００２０】
手書きノードリンクダイアグラム２４は、４個のノード２６ａ〜２６ｄおよび５個のリンク２８ａ〜２８ｅを含んでおり、閉じたグラフィック形状（例：２６ａ、２６ｃ）がノードを表わし、湾曲した弧（例：２８ａ〜２８ｅ）が２個のノードを関係付けるリンクを表わし、文字単独（例：２６ｄ）を用いてノードを表わすこともでき、文字はノード内に含まれていてよい（例：３０ａ）。文字（３０ｂ〜３０ｃ）はリンクのラベルであってよく、矢印その他の形状３２ａを用いて以下に詳述するノードリンクダイアグラムにおけるリンクの終端を識別する。キャンバスへの全てのストロークが必ずしもノードリンクダイアグラムの一部でという訳ではない。例えば、インクストローク３４を解釈することができる。
【００２１】
図２に、キャンバス作成初期化プロセス４２、グラフィカルユーザーインターフェース（ＧＵＩ）初期化プロセス４４、未処理ストローク列初期化プロセス４６、処理済（または解釈済）ストローク列初期化プロセス４８、および認識初期化プロセス５０を含む動作の環境１０を整えるために用いる初期化動作４０を記述する高水準のダイアグラム３８を示す。上述の初期化が完了したならば、ユーザー入力の待ち状態が入力される（５２）。本システムは、入力が提供され都度リアルタイムに動作することができる。あるいは、本システムは、格納されたインクストロークのファイルからインクストロークを読み込むべく設計することができる。
【００２２】
各種の初期化プロセス４２〜５０は互いに非同期化されており、別々の非同期スレッドとして実行される。非同期化は、コンセプトスケッチプログラムに柔軟性と共に、認識プロセスをバックグラウンドジョブとして実行しながら、筆記に対するリアルタイムに応答する能力を提供する。
【００２３】
図３に、ＧＵＩモジュール６２と認識モジュール６４との関係を示しながら、ユーザーインターフェース（ＵＩ）６０の全体的なシステムアーキテクチャを示す。ＧＵＩモジュール６２は、キャンバスへのデジタルインクストロークの入力と表示、および大多数のコマンド対話ロジック、例えば囲みストロークの検出およびポップアップボタンの表示やプロセスを扱うべく設計されている。ＧＵＩモジュール６２は、各種のプログラミング言語およびランタイム環境で実装されていてよく、コンセプトスケッチ認識モジュール（例：ＪＶＭ−Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）６４ａ、未処理ストローク列６４ｂ、処理（解釈）済みストローク列６４ｃ、正式インターフェース６４ｄ、および手書き認識モジュール６４ｅへのアクセスを含む認識モジュール６４の環境とは異なっていてよい。
【００２４】
認識モジュール６４は、ユーザーが入力したマーキングを単語、ライン、文字カラム、図形オブジェクト、およびノードリンクダイアグラムのモデルとして解釈すべく設計されている。未処理ストローク列６４ｂはＧＵＩモジュール６２から電子インクストローク情報を受信すべく設計されている、処理済みストローク列６４ｃは認識モジュール６４からの処理済みストローク情報をＧＵＩモジュール６２に提供する。正式インターフェース６４ｄは、２個のモジュール間に対話の経路を提供する。一実施形態において、手書き文字認識モジュールはマイクロソフトから同社のタブレットＰＣオペレーティングシステムで使用すべく提供される手書き文字ソフトウェアであってよい。
【００２５】
図４に、フロー図７０を示す。ステップ７２において、ＧＵＩモジュールは、スタイラスまたはペンからの入力（例：ストローク））等のイベントを待機している。ユーザーがペンをキャンバス面上に置いたならば、ＧＵＩモジュールがインクストロークを受信する（７４）。インクストロークを受信したならば、ＧＵＩモジュールは、インクストロークが（ｉ）インキング動作、（ｉｉ）タップ動作、（ｉｉｉ）囲み動作、または（ｉｖ）取消し動作の状態にあるか否かを判定する（７６）。インキング動作は、キャンバス上への筆記または描画と解釈する。タップ動作は、タップされた項目を選択するかまたは除外すべくキャンバス上のある点へのスタイラスまたはペンの移動である。あるいは、ある項目が選択された場合、キャンバスの背景へのタップにより当該項目を除外する機能を果たす。囲み動作は、他の既存のインクストロークまたは他の項目を囲むインクストロークであって、インキング動作または選択ジェスチャであってよい。削除動作は、既存のインクストロークその他の項目に対するジグザグの筆記または描画、往復の筆記または描画、×印による取消し、または他の「削除」的動作である。プロセスの一部として、囲み動作および取消し動作は、インキング動作または選択ジェスチャのいずれかであると判定される。
【００２６】
ステップ７８において、以下のうち一つが真の場合、ストロークが明確にインキング動作（すなわち、筆記または描画を意図している）であるか否かが最初に判定される。（ｉ）ストロークの長さが所定の長さより短く、キャンバス上のどのオブジェクトも当該ストロークまで所定の距離より近くには無く、当該ストロークが前のストロークの終了（ペン持ち上げ）後、所定時間内で始まる、（ｉｉ）ストロークが閉経路の形状をなしておらず、且つジグザク（取消し）形状もなしていない、（ｉｉｉ）ストロークが、キャンバス上の他のどの対象も囲んでいない閉経路の形状をなす、または（ｉｖ）ストロークがジグザク（取消し）の形状をなしているが、キャンバス上のどのオブジェクトも当該ストロークの所定の近傍内に存在しない。
【００２７】
ストロークが明確にインキング動作である場合、プロセスはステップ８０へ進み、ストロークを未処理ストローク列（例：図３の６４ｂ）に入れる。ストロークがインキング動作またはタップ選択、囲み選択、あるいは取消しコマンドジェスチャのいずれであるかが曖昧な場合、プロセスはステップ８２へ進んでストロークがタップ動作であるか、あるいは囲み動作、取消し動作またはインキング動作のいずれであるかを判定する。ステップ８２において、ストロークの長さが所定の閾値より短いか、ストロークが前のストロークの終了（ペン持ち上げ）の後で所定時間以後に始まるか、且つキャンバス上の少なくとも１個のオブジェクトが当該ストロークの位置から所定距離内にある場合、当該ストロークがタップ動作であると判定する。ステップ８２において、当該動作がタップ動作であると判定されたならば、プロセスはステップ８４へ進み、対応するタップ選択コマンドに関連付けられた動作を実行するよう認識モジュールへコマンドまたは信号を送る。ステップ８２において、当該動作がタップ動作ではないと判定されたならば、プロセスはステップ８６へ進む。ステップ８６において、ストロークの形状に基づいて、当該ストロークが囲み選択ジェスチャまたは取消し削除ジェスチャであるか否かを判定する。
【００２８】
ストロークが囲み選択ジェスチャである場合、「選択?」ボタンがユーザー８８に提示される。この「選択?」ボタンは、当該囲み動作がインキング動作かまたは選択ジェスチャであるかをシステムが判定できないため、囲み動作が曖昧であることを示す。ステップ９０において、システムはユーザー動作を総合して状況を明確にすべく設定されている。ステップ９２において、囲まれた情報に関連付けられた「選択?」にユーザーがスタイラスまたはペンを置いたならば、システムはステップ９４へ進み、囲み選択コマンドを認識モジュールへ送る。このことは、囲み動作が選択ジェスチャであることを示す。認識モジュールは次いで、何が選択されたかを判定する。認識モジュールは、例えば、囲まれたか取消し線で覆われたものを選択することも、あるいはジェスチャの意図を、文字通り覆われている／いないに拘わらず認識されたストローク（または他の項目）として解釈することもできる。しかし、ステップ９４でユーザーがタップ選択動作を行なわず、キャンバスの背景にペンを下ろした場合、システムはこれを単語または描画を意図した囲み情報として解釈し、ステップ８０で当該ストロークがデジタルインクとしてキャンバスに追加される。
【００２９】
ストロークが削除ジェスチャ８６と思われる場合、「削除?」ボタンがユーザー９６に提示される。この「削除?」ボタンは、当該ストローク動作がインキング動作かまたは取消しジェスチャであるかをシステムが判定できないため、ストローク動作が曖昧であることを示す。ステップ９８において、システムはユーザー動作を総合して状況を明確にすべく設定されている。ステップ１００において、当該ストロークに近接するオブジェクトに関連付けられた「削除?」にユーザーがスタイラスまたはペンを置いたならば、システムはステップ１０２へ進み、インキング動作が削除ジェスチャであることを示す取消し選択コマンドが認識モジュールへ与えられ、ジェスチャにより覆われた項目が認識モジュールおよびＵＩキャンバスから削除される。ステップ１００でユーザーが「削除?」に対してタップ選択動作を行なわず、キャンバスの背景にペンを下ろした場合、システムはこれを、単語または描画に対して取消しストロークを意図していると解釈し、ステップ８０において当該ストロークがデジタルインクとしてキャンバスに追加される。
【００３０】
ステップ８０で動作がインクストロークであると判定された場合、プロセスは、ストロークを未処理ストローク列に入れる。ステップ１０４において、事前解釈またはプロセスコマンドが認識モジュールへ送られて未処理ストローク例のストロークに対して「事前解釈」および／または「処理」動作を実行する。ステップ７２〜１０４で実行される動作は、ＧＵＩモジュール（例：図３の６２）で生起するものと見なすことができる。認識モジュールは、事前解釈および／またはプロセスコマンドを担う。ＧＵＩモジュールおよび認識モジュールの動作が一時的に非同期化され、更なるストロークがキャンバスに置かれて、ＧＵＩモジュールは独立に動作し続ける。
【００３１】
ステップ１０６において、認識モジュールは、ＧＵＩモジュールが「事前解釈」または「処理」コマンドを発行するのを待機している。受信したならば、認識モジュールの動作は判定ブロック１０８へ進み、当該コマンドが事前解釈コマンドであると判定される場合、プロセスはステップ１１０へ進む。次いで、複雑なストロークの場合、未処理ストローク列からの未加工ストロークを角でフラグメントに分解する。角の無い単純なストロークの場合、この動作は不要である。
【００３２】
その後、ストロークフラグメントおよび／または単純なストロークには、識別情報（ＩＤ）が付与されて処理済みストローク列に入れられる（１１２）。ＧＵＩ層６２はステップ１１６へ進み、未処理ストロークを処理済みストローク列からのストロークフラグメントで置換する。ステップ１１８において、ＧＵＩは全てのストロークフラグメントをストロークＩＤと共に表その他のメモリ装置に追加し、次いでストロークフラグメントは、置換したことがユーザーに感知されないように、キャンバス上の未処理ストロークを置換する。
【００３３】
ＧＵＩモジュール６２と認識モジュール６４の間で最初にストローク情報を受け渡す際に、ストロークフラグメントを構成する点の両方の情報（すなわちｘ−ｙ位置および時間）がＩＤと共にＧＵＩモジュールへ渡されるため、認識モジュールおよびＧＵＩモジュールがストロークに関して同じ格納情報を有している。
【００３４】
ＧＵＩモジュールから送られたコマンドが「事前解釈」ではなく、「処理」コマンドであった場合、ステップ１０６で、プロセスはステップ１１４へ進んで処理済みの分解されたストロークに対して構造化認識動作を実行する。これらの構造処理済フラグメントは、ストローク（例：オブジェクト形式の）がコマンド動作（例：正式化、移動等）用に選択されるまで認識モジュール内で維持されていてよい。
【００３５】
フロー図７０に、ストロークがインキング動作、タップ動作、囲み動作または取消し動作であるか否かを判定するプロセス、および当該判定に続く動作の概要を示す。上述のプロセスを採用することにより、ユーザーは、紙やホワイトボードを用いるのと同様に直観的に、しかもコンピュータアプリケーションの能力および機能を以って、ノードリンクダイアグラムを作成することができる。
【００３６】
図５に、ノードリンクダイアグラム１２０のスクリーンショットを示す。ここで、ユーザーが特定の部品、すなわち楕円１２２内の「taste（味覚）」および手書きの概念マップ（すなわちノードリンクダイアグラム）の単語「texture（テクスチャ）」１２４を選択して正式化している。ノードリンクダイアグラムは、システムにより４個のグラフノードおよび３個のグラフリンクを有することが自動的に認識されている。
【００３７】
事前解釈および／またはプロセス動作はまた、認識モジュールに、未処理および処理済列を調べて、上述の動作を実行すべきストロークが列に存在するか否かを判定することができる。本システムはまた、複数の事前解釈動作を実行して、これらの事前解釈ストロークをグループとして処理するように設計されていても、あるいは、本システムは事前解釈動作のすぐ後に同一ストロークのプロセス動作が続くように構成されていてもよい。
【００３８】
図６に、ＵＩを操作するためにユーザーが知る必要がある少数の命令群１３０ａ〜１３０ｆを示す例証的な命令シート１３０を示す。
【００３９】
ペンコンピュータ用のユーザーインターフェース設における一つの問題として、モードの問題がある。これは、多数の機能、すなわち、マーキングの入力、マーキングの選択、および選択されたマーキングに対して実行されるコマンドの特定のために単一の実装を用いねばならないという課題がある。
【００４０】
ここに提示するモード問題に対する一つの解決策として、ペン／スタイラスシステムにおける混合デジタルインク入力および選択のための推論モードプロトコルおよびタップサイクル選択技術を用いる。推論モードプロトコルの下で、ユーザーは先にモードを指定しなくても、自由にモードのマーキングまたは選択ジェスチャを実行することができる。システムは、前後関係からユーザーの意図を推論しようと試みて、曖昧ならば仲介ボタンが現れる。
【００４１】
推論モードプロトコルの下で、ペン入力はキャンバス上に描画されたデジタルインクとして登録される。しかし、特定のペン入力は、デジタルインクマーキングの何らかの部分集合の選択を意図しているとも解釈できる。例えば、オブジェクトのタッピング、囲み、または取消しは全て、選択および削除動作を始めるのに際して自然な入力形式である。意図が曖昧な場合、ポップアップボタンまたはアイコンの形式で選択肢が提供される。
【００４２】
閉じた空の円を描くことは、明らかに描画動作であるが、既存のデジタルインクの周囲を円で囲むのは曖昧である。ユーザーは、囲まれた項目を選択しようとしているか、または単にその周囲に円を描いているだけかもしれない。この場合、「選択?」と尋ねるポップアップボタンが表示される。ユーザーがポップアップボタンをタップすると、当該項目が強調表示されて選択されたことを示すと共に、サイズ変更その他の動作を実行するためのアイコンが局所的にキャンバス上に重ねられる。ユーザーは自由に、ポップアップボタンを無視して描画を続けることができ、その場合、囲みはデジタルインクとして登録される。
【００４３】
ユーザーが既存のマーキングの上に取消し線を描いた場合、下側のマーキングを削除したいのか、×印を表わすデジタルインクを入力したいのかが曖昧なため、システムは、ユーザーが下側のどのインクを削除したいのかを推論し、これを強調表示して「削除?」と尋ねるポップアップボタンを表示する。ユーザーがポップアップボタンをタップした場合、当該項目が削除される。背景をタップするか描画を続けた場合、取消しマーキングはデジタルインクとして登録される。最後に、画像オブジェクトの選択に広く用いられる方法は、それらをタップすることである。
【００４４】
ＵＩとのユーザー対話の例を、図７の対話フロー図１４０に示す。（このバージョンでは、説明をわかりやすくするために取消し削除ジェスチャを省略している。）、四角形の枠は、ユーザーに対する情報のコンピュータ表示を表す（すなわち、四角形の枠は、ユーザーに提示される情報１４２ａ〜１４２ｄに付随するコンピュータ動作である）。表示の見せ方として４通りの主な方法がある。すなわち、（手書きストロークおよび正式な図形オブジェクトを含む）キャンバスの内容のみを表示（１４２ａ）し、キャンバスの内容と「選択?」ボタンを表示（１４２ｂ）し、複数の項目が選択済みとして強調表示された状態でキャンバスの内容をコマンドアイコンと共に表示（１４２ｃ）して、複数の項目が選択された状態でキャンバスの内容をポップアップコマンドメニューと共に表示（１４２ｄ）する。角が丸い枠は、ストロークの描画、囲みジェスチャの描画、ストロークまたは正式な図形オブジェクトへのタッピングによるオブジェクトの選択または選択内容の巡回、背景へのタッピングによる選択解除、ポップアップ「選択?」へのタッピング、ポップアップコマンドアイコンへのタッピング、ポップアップコマンドメニュー１４４ａ〜１４４ｈ内の項目選択等を含むユーザー動作を表わす。判定ブロック１４６は、曖昧な囲み動作が前後関係に基づいて明確にできるか否かに関する当該プロセスの判定を表わす。丸印１４８ａ〜１４８ｄはユーザーの選択肢を表わす。
【００４５】
本出願のシステムは、束階層構造を用いる代替的な構造選択プロトコル（例：タップサイクル選択技術）を利用する。第１のタップにより、タップされているデジタルインクオブジェクトが支持する、最も選択される可能性が高いオブジェクトが選択される。可能な選択肢の中で、どの選択肢の可能性を最も高いとみなして最初に表示するかは、システム側で調整可能な設計パラメータである。概念マップの場合、ノードとリンクが最も顕著なオブジェクトと考えられる。ほぼ同じ場所にある反復タップが他の選択肢を巡回する。いずれかの項目が選択されたならば、他のマーキングをタップすることでその各々の構造オブジェクトが強調表示された選択に追加される。
【００４６】
上の議論から分かるように、所与のデジタルインクのどの部分も、ノードリンクダイアグラム（例：概念マップ）の領域における多構造オブジェクトの一部であり得る。例えば、図８の画像１５０の場合、ストローク１５２へのペンタップにより文字「Ｔ」１５４、単語「Ｔｏｄａｙ」１５６、あるいは単語「Ｔｏｄａｙ」からなる概念マップ内のノードおよびそれを囲む長方形１５８を表わすことができる。ユーザーは、反復タッピングにより所望の選択を得ることができる。（タップサイクル選択技術を用いて、意図したストロークを選択する）
【００４７】
画像項目（例：インクストローク）が選択された場合、小さい局所的ボタンまたはアイコンが近くに置かれる。このボタンまたはアイコンをタップすることにより、実行可能な動作のポップアップメニューが現われる。実行可能なコマンドには、正式化／非正式化（すなわち、デジタルインクと正式な図形および文字との間の変換）、切り取り、削除、色変更が含まれる。選択された項目の回転および拡大縮小用にドラッグハンドルが提供されており、項目が選択された状態で、ペンを任意の強調表示されたオブジェクトの上に置いてドラッグすることにより随時移動させることができる。
【００４８】
誤った手書き文字認識の訂正は、不正確な文字、単語、または文字ブロックを取消すか別途選択することにより開始される。これらは削除され、削除された文字が置かれていた場所に次の文字入力がマッッピングされる。ある場合には、ユーザーに選択させるため以前の代替的な手書き文字認識結果がメニューに表示される。
【００４９】
当該設計の下で、ユーザーは、ノード、リンク、ノードラベル、リンクラベル、注釈文字、周辺の落書きや図形を入力しているか否か等をシステムに意図的に指示する必要なしに、随時、任意の順序で図形または手書きの文字を直接描画することができる。単一のストロークで描画される形状、または複数のストロークを特定の順序で描画する等の要件は存在しない。本インターフェースの中核動作にはツールバーも大域的メニューも一切関与しない。全てのメニューは、局所的且つ文脈依存である。ノードリンク構造および手書き文字の正しい認識により、選択タップ入力を、一般に閉じた形状、直線または曲線、矢印、および文字ラベルの組合せを含んでいて有意味なノードおよびリンクオブジェクトからなるインクストロークの集合であると解釈するシステムの能力を介して生産性が向上する。認識が失敗しても、意図するインクストロークをより慎重に囲んでおよび正確にタップ選択することにより、ユーザーが操作したい項目を選択することを妨げない。本ＵＩ設計は、ユーザーを制御しながら、認識モジュールの能力に関して弾力的である。
【００５０】
本出願のシステムアーキテクチャを三つの観点から記述する。すなわち（ｉ）システムモジュールの機能的編成、（ｉｉ）各モジュールにより実行される機能の仕様、および（ｉｉｉ）モジュール間の通信を統制するインターフェースである。
【００５１】
ＧＵＩモジュール６２は、キャンバス上へのデジタルインクストロークの入力と表示、および囲みストロークの検出等のシステムのコマンド対話ロジックの大部分、並びにポップアップボタン（図７に示す）の表示とプロセスを扱う。ＧＵＩモジュール６２は、通信が可能な限り、認識モジュール６４とは異なるプログラミング言語およびランタイム環境において実装されていてよい。
【００５２】
認識モジュール６４は、単語、線および文字、図形オブジェクトおよびノードリンクダイアグラムの文書モデルの列に関して、ユーザーによる入力マーキングの解釈を扱う。認識モジュールの特定の目的は、（ｉ）タッピング、囲み、および取消し動作を介した知的な選択の提供、（ｉｉ）項目の正式化、（ｉｉｉ）リンクが自身の指示するノードに追随するようにオブジェクトを移動、および（ｉｖ）ノードリンク（例：概念マップ）構造の出力を可能にすることによりシステム機能を提供することである。
【００５３】
２個の層はオペレーティングシステム内で異なるスレッドとして、従って非同期的に実行させることができる。ＧＵＩモジュール６２は高速且つユーザー入力に対して応答し、ペン、スタイラスまたはマウスからイベントが受信されたならば即時にデジタルインクを表示すべく設計されている。別個のスレッドにおいて、認識モジュール６４は、完了までに相当な時間（数秒）を要する計算負荷の重い動作を実行することができる。
【００５４】
２層間の通信は、少なくとも二通りの方式で行なわれる。第１の方式では、デジタルインクストロークの記述はバッファまたはストローク列を介して受け渡される。第２の方式では、選択およびコマンド動作は、所定のインターフェースを介して伝達される。選択およびコマンド動作は動作期間中、デジタルインクにストロークの受け渡しを行なわない。その代わり、ＧＵＩおよび認識モジュールは、共通の識別子またはＩＤにより名付けられた、既存のストロークの表現を相互に同期的に維持する。ストロークが参照されたならば、各ストロークに属する点全体のリストを渡す必要はなく、ＩＤだけを渡せばよい。
【００５５】
図９のプロセスフロー図１８０は、図３のモジュール間におけるストロークデータの受け渡しの詳細を示す。認識グループ分けプロセスが効果的に動作して、ユーザーがダイアグラムに対してきめ細かい制御を行なえるようにすべく、元の入力ストロークをより小さいフラグメントに分解する必要がある。これはユーザーが筆記している際にリアルタイムで行なうことはできず、若干の遅延が生じる場合がある。ストローク列を用いて未処理且つ分解されたストロークを、各々の受け入れプロセスがそれらを受理する用意ができるまで保持する。
【００５６】
フロー図１８０において、（ＵＩ層）が未処理ストローク列に未処理ストローク１８２を入れる。これらのストロークは、ストローク分解プロセス１８４のため認識層へ送られる。ストローク分解プロセスは、ストロークを分解して（１８６）、これらのストロークを処理済みストローク列に入れる（１８８）。処理済みストローク列は、キャンバス上にある既存のストローク情報を処理済の分解されたストローク１９０で置換すべく用いられる。図９において、ステップ１９０までの動作は相対的にリアルタイムで生起する。これにより、システム更新または遅延を待つことなくキャンバス上に連続的に描画できるようになる。本システムの当該部分は、キャンバス上の画像に「知能」を提供しない（すなわち、非正式スケッチの正式化、オブジェクトの移動、色付け、切り取り等は不可能である）。この能力を得るために、分解されたストローク１８６は、自身に対して構造認識動作１９２をなされる。これらの構造認識動作は、筆記および描画ステップから時間的に非同期化された仕方で生起する。処理済の分解されたストローク１９０は、認識層内で同一分解されたストロークが構造認識動作を受けるのと同時にキャンバス上に表示され、その後、分解されたストロークに正式なオブジェクトおよび関係１９４が与えられる。注目する特定の分解されたストロークに対して構造認識動作が完了したならば、これらはシステムのインターフェース１９８を介してＧＵＩ層に提供された分解されたストローク、正式なオブジェクト１９６としてＧＵＩ層側に再び表示される。この設計により、ＧＵＩ層と認識層のデータ構造とが同期化される。
【００５７】
ＧＵＩおよび認識モジュールにおいて「事前解釈」により実行されるように未処理ストロークをフラグメントに分解して、ストロークフラグメントの同期化されたリストを生成する方法の詳細を図１０のフロー図２１０に示す。事前解釈動作には、認識モジュールにおいてストロークのどのグループが手書きの単語、すなわち「文字オブジェクト」を形成するかに関する初期仮説を設定および更新するロジックを含んでいる。
【００５８】
図１０において、ペンが画面に接触した場合、ＧＵＩモジュールは新たな「ペン経路」オブジェクトを設定する。ペンがドラッグされるに従い、点列が経路に追加される。ペンが持ち上げられたならば、ＧＵＩモジュールはペン経路オブジェクトがタップまたはストロークのいずれであるかを判定する。ストロークである場合、ＧＵＩモジュールは、当該ストロークが他のストロークを囲んでいるか否かを判定する。囲んでいない場合、ペン経路オブジェクトは、ＩＤ（未処理ペン経路ｉｄ）が割当てられて、未処理ストローク列２１２に入れられる。
【００５９】
ある時点で認識モジュールは別個のスレッドで起動される。既に実行中でなければ、ストロークを描画した後にペンが持ち上げられた後、認識モジュールが開始される。認識には時間を要するため、未処理ストロークは待ち行列に入っている場合があり、この状況において認識モジュールは、未処理ストローク列のより大規模ながら頻度は少ない読み取り処理を当該未処理ストロークに対して行なう。あるいは、認識モジュールは常時収集すべく構成されていてよく、その場合、未処理ストロークが無いかを常に調べており、そのようなストロークがあれば直ちに処理する。
【００６０】
認識モジュールは、未処理ストローク列２１２からストロークを除去して、ストロークを「終了ストローク（finished stroke）」または「分解されたストローク」と呼ばれる、より小さいフラグメントに分解する（２１６）。当分野で公知のマルチスケール角検出アルゴリズムが適用されて、どこで分解すべきかを判定する。終了ストロークは、各々が導かれた元の未処理「親」ストロークへのポインタを保持する。各々の終了ストロークは一意な識別子が割当てられて、処理済み（終了）ストローク列２１８に入れられる。そして、各々の終了ストロークは、認識モジュール内で維持されているキャンバスの複製にも格納され、この状態で「原子」と呼ばれて原子リスト２２０に格納される。
【００６１】
ＧＵＩプロセスは、処理済みストローク列を選択的に調べる。処理済みストロークが存在する場合、これらのストロークの親である未処理ストロークをキャンバスから除去して、これを処理済である、より小さい終了ストロークで置換する。
【００６２】
本サイクルの後で、ＧＵＩモジュールおよび認識モジュールは各々、終了（処理済）ストロークおよびこれらに関連付けられた共有ＩＤの同一の複製を有する。ＩＤは、２個のモジュールに対し、ストロークＩＤを介してストロークに関して互いに通信するための手段を提供する。
【００６３】
未加工ストロークをフラグメントに分解すると共に、認識モジュールはまた事前解釈段階において、同一の手書き単語に属する可能性のある終了ストロークのグループを形成する（２２２）。これらは、文字オブジェクト仮説であって、文字オブジェクト仮説リスト２２４に格納される。デジタルインクストロークの単語へのグループ分けを判定する方法は当分野で公知である。人間の筆跡は多様であるため、人間の解釈と一致するグループ分けを形成する確実且つ迅速なルールは無い。その代わり、多くの仮説が設定される。
【００６４】
各々の新規ストロークについて、本プロセスは当該新規ストロークが既存の文字オブジェクトに明らかに帰属するか、既存の文字オブジェクトに明らかには帰属しないか、あるいは曖昧であるかを判定する役割を果たす。ストロークが曖昧な場合、二つの新たな仮説が設定され、その一つではストロークが既存の文字オブジェクト仮説リスト２２４に追加され、もう一つではストロークが新たな文字オブジェクトを生成し、これが新たに接触された（または空間的に変換された）文字オブジェクトリスト２２６に入れられる。本プロセスでは潜在的に、仮説が膨大になる恐れがあるため、この方式の実行には注意を要する。仮説を制限する多くの手順、例えば、最大許容可能仮説値の包含等がある。あるいは、仮説設定の時間制限を含めてもよい。これらは、本システムに含め得る任意の数の仮説規制の二つの例に過ぎない。
【００６５】
図１１に、文字オブジェクト仮説によるストロークのグループ分け（図１０のブロック２２２）をより詳細に示す。新たな終了ストローク２１４を、「極めて整合性が高い」、「いくぶん整合性を有する」、あるいは「整合性が無い」を判定する判定ブロック２３２に渡して調べることにより、当該ストロークと既存の文字オブジェクト仮説の幾何学的整合性を判定する（２３０）。「極めて整合性が高い」場合、本プロセスは、ストロークを既存の文字オブジェクト仮説（２３４）、およびリスト（２３６、または図１０の２２４）に追加する。ステップ２３２において当該ストロークが「いくぶん整合性を有する」ことが分かった場合、本プロセスは、既存の文字オブジェクト仮説を複製し（２３８）、複製された仮説にストロークを追加して（２４０）、既存のリスト２３６にも追加する。ストロークが「整合性が無い」と判定された場合、本プロセスは、新たな文字オブジェクト仮説を生成して（２４２）、全ての仮説のリスト２３６に追加する。
【００６６】
ＧＵＩおよび認識モジュールは、インターフェースプロトコル（Ｉコンセプトスケッチ認識モジュール）を介して相互に作用すべく設計されている。
【００６７】
ＧＵＩの観点から、認識モジュールの主要な役割は二つある。第一に、ユーザーが選択ジェスチャを実行した際に、どのオブジェクトが選択されたかを表示すべきかをＧＵＩが決定するのを支援し、第２に、ユーザーが正式化または非正式化コマンドを発行する際に、表示すべき正式化または非正式オブジェクトを提供することである。多くの補助機能もまた提供される。
【００６８】
認識モジュールにより実装されるＩコンセプトスケッチ認識インターフェース２５０の実施形態を図１２に示す。これらは全て、任意の認識モジュールで実装される方法であって、ＧＵＩにより呼ばれる。いくつかの方法は戻り値を返し、他のものは副作用（待ち行列へのストロークの追加、削除等）により動作する。
【００６９】
インターフェース２５０に固有の関数群は、以下の通りである。
【００７０】
＜未加工ストローク列を介したストロークの追加（２５２）＞
ＧＵＩモジュールがペンからのデジタルインクを総合するに従い、ＧＵＩ側で「未加工ストローク」として表現される。これらは、未加工ストローク列に入れられる。
【００７１】
＜事前解釈ストローク（２６６）：preInterpretStrokesInInputStrokeQueue()；＞
認識モジュールは、preInterpretStrokesInInputStrokeQueue()と呼ばれるメッセージ受け渡しメソッドを実行する。これは、ＧＵＩにより意図的に呼ぶことも、あるいは、スケジューラにより自動的に起動することもできる。認識モジュールの事前解釈プロセスは、未処理ストローク列からストロークを除去して、処理済（終了）ストローク列にストロークを入れる。終了ストロークは、未処理ストローク列から得られた未処理ストロークと同一であっても、あるいは未処理ストロークのフラグメントである新規ストロークであってもよい。通常、フラグメントは元の未処理ストロークを角で分解することで生じる。
【００７２】
ＧＵＩモジュールは、処理済（終了）ストローク列上の終了ストロークを連続的に試験する。そこで終了ストロークを見つけたならば、待ち行列から除去して、古い未処理ストロークがあれば新たな終了ストロークで置換する。全ての未処理および終了ストロークは内部ＩＤを維持していて、ＧＵＩおよび認識モジュールにより追跡可能である。
【００７３】
本アーキテクチャの一実装において、ＧＵＩモジュールおよび認識モジュールは、ハッシュ表その他の相互参照を維持する公知技術を用いて、終了ストロークの別々の同期化された複製を維持している。
【００７４】
＜構造認識（２６８）：performStructureRecognitionOnPreprocessedStrokes()；＞
構造認識の認識モジュールでの実装実行は、ユーザーには感知できない。唯一の視覚的効果は、オブジェクトが選択されて正式化される際に反映される。
【００７５】
＜タップ選択（２５８）：public int[] selectTap(Point p, boolean b＿last＿operation＿was＿select＿objects)；＞
selectTapメソッドはＧＵＩにより呼ばれて、点ｐのｘ−ｙ位置で示すキャンバス上の特定の位置でユーザーがペンタップしたことを認識モジュールに教える。ＧＵＩが次いで、ユーザーが何のストロークを選択しようと意図したかを判定して、これらのストロークのＩＤを含む配列（例：int[]配列）を返す。推論モードプロトコルの下で、当該判定は、点ｐの下方または近傍にある任意のストローク、および当該ストロークが属すると認識されたグループに基づいている。認識モジュールが知的であるほど、ユーザーがキャンバス上の様々な位置でタッピングした際に選択しようと意図するストロークの適切な集合を識別することに関してより知的になる。
【００７６】
第２の引数b＿last＿operation＿was＿select＿objectsは、推論モードプロトコルの直観的な選択ロジックに寄与する。ロジックが真である場合、タップ位置の位置に応じて、ユーザーが連続的なタッピングにより複数のオブジェクトを選択していることを認識モジュールに教え、従って、既に選択されたストロークのＩＤが呼び出しにより返された選択済みストロークのリストに含まれている筈である。ロジックが偽の場合、返される選択済みストロークのリストを生成する前に、現在選択されているストロークのＩＤを廃棄すべきであることを示す。
【００７７】
＜エンクロージャ選択（２５４）：public int[] selectPath(Path path)＞
selectPathメソッドは、ストロークの周囲に閉経路を描画することにより選択を可能にする。他のストロークを囲みにより閉経路ストロークが曖昧であり、従って推論モードプロトコルの下で「選択?」メディエーターを要求するか否かに関する判定はＧＵＩに委ねられる。selectPathメソッドは、囲まれたストロークがＧＵＩおよび認識モジュールの両方により選択されたものと見なす場合にのみ用いる。ＧＵＩは通常、選択されたストロークを何らかの方法で強調表示されるように加工する。
【００７８】
＜ストロークの削除（２５６）：public int[] deleteStrokes(int[] stroke-ids)；＞
deleteStrokesはＧＵＩにより呼ばれて、特定のストロークをキャンバスから除去させる。認識モジュールは、これらのストロークが関与する認識済み構造は全て分解することに対処する必要がある。返されるint[]はキャンバスから削除されたストロークのＩＤであって、渡されたint[]stroke-idsと同一でなければならない。
【００７９】
＜取消し（２６０）：public int[] scratchOut(PenPath scratchout-path)；＞
scratchOutメソッドは、ユーザーが取消しジェスチャ（通常はジグザグ）と意図されたストロークを描画した場合にＧＵＩにより呼ばれる。次いで認識モジュールは、取消しジェスチャの経路および認識アルゴリズムが構築した構造グループにより判定されたのと同様に、ユーザーがどのストロークの削除を意図しているかを正確に判定することを求められる。引数PenPath scratchout-pathは、ジェスチャの時点（そのタイムスタンプを含む）のリストである。認識モジュールが知的であるほど、たとえ曖昧な取消しジェスチャを行なった場合であっても、ユーザーの意図をより的確に認識することができる。
【００８０】
戻り値は、ストロークＩＤ（例：int[]配列）を含むデータ構造である。ＧＵＩは通常、「削除?」等の問いかけを行なう確認ボタンと共に強調して表示しなければならない。タップされたならば、ＧＵＩはこれらのストロークＩＤをdeleteStrokesメソッドへの引数として認識モジュールに渡す。
【００８１】
＜正式化（２６２）：public String formalizeObjects(int[] strok-ids)；＞
formalizeObjectsコマンドはまた、beautifyObjectsとも呼ばれる場合がある。これにより、int[]stroke-ids引数として渡された選択された非正式な終了ストロークが、円、楕円、長方形、多角形、矢印、弧および形式化された文字等の正式化図形オブジェクトで置き換えられる。渡されたstroke-idsにどのような認識可能オブジェクトが含まれていて、それらをどのように正式なオブジェクトで置換するかについては認識モジュールに委ねられている。
【００８２】
返される文字列（String）は、行なうべきプロセスを判定すべくＧＵＩにより構文解析を必要とするＸＭＬ文字列である。ＸＭＬ文字列は３種類のタグ、<introduce-object>、<remove-object>および<add-object>を含んでいる。<introduce-object>コマンドは、新たなプリミティブ、すなわち原子オブジェクトがＧＵＩおよび認識モジュールの両方で用いられることをＧＵＩに知らせる。導入されるオブジェクトには、形式化された文字列、および長方形、楕円、多角形、ポリライン、弧、および矢印の図形オブジェクト等の種類が含まれる。他の種類のものも導入することができる。導入されたオブジェクトにはストロークＩＤと同様に一意のオブジェクトＩＤが付与される。<remove-object>タグの後に、ＩＤで示されるキャンバス削除すべき原子オブジェクトＩＤ（通常はストロークＩＤ）のリストが続く。<add-object>タグは、キャンバスにどのオブジェクトを追加すべきかを示す。
【００８３】
手書き図形の一部または全てが最初に正式化される際に、正式化図形オブジェクトが導入、次いで追加される。しかし、正式化の後で、ユーザーは、既に作成されたオブジェクトをキャンバスに単に追加または削除することにより、正式および非正式バージョンの間を行き来することができる。
【００８４】
＜非正式化する（２６４）：public String roughen Objects(int[] object-ids)；＞
roughenObjectsコマンドは、formalizeObjectsコマンドの逆である。選択されたオブジェクトのオブジェクトＩＤは、int[]object＿ids引数を介して渡される。これらは、正式なオブジェクトまたは未処理ストロークであってよい。認識モジュールはroughenObjectsコマンドを受信したならば、どの正式なオブジェクトをキャンバスから除去すべきか、あるいはどのストロークを追加すべきかを判定する。
【００８５】
返されるＸＭＬ文字列は、formalizeObjectsコマンドにより返されたＸＭＬ文字列と構文的に同一であるが、通常は<remove-object>および<add-object>タグだけを含んでいる。
【００８６】
＜変換（２７０）：public String affineTransform(int[] object-ids)；＞
affineTransformコマンドを用いて、キャンバス上の選択されたオブジェクトの移動、スケーリング、伸長および回転変換を認識モジュールへ伝達する。認識モジュールが関与するのは、ダイアグラムのノードリンク構造に関する知識を有しており、従って、ノードが移動または別途変換されるのに伴ない、紐付けられているノードに追随してリンクグラフィックをどのように更新すべきかを指示すべく配置されているためである。
【００８７】
以上、インターフェース２５０に固有の関数群について説明した。
【００８８】
認識モジュールは、ＧＵＩ／認識インターフェースに関して自身の役割を遂行すべく、図形オブジェクト、文字内容、およびダイアグラムの空間構造を認識する。第１段階、すなわち事前解釈段階は、上述のように、キャンバスに追加されている新たなストロークに応答して素早く動作する。事前解釈段階は、未加工ストロークをより小さいフラグメントに分解して、文字オブジェクト仮説を形成する。構造認識と呼ばれる第２段階は、より多くのプロセス時間を要する場合があり、ユーザーの筆記や描画とは非同期的に動作する。構造認識は、ストロークが図形的ドメインモデル、すなわち、概念マップとみなされるノードリンクダイアグラムに関して解釈される。
【００８９】
ノードリンクダイアグラム構造認識を高い水準で捉えるならば、認識モジュールのパラダイムが含まれ、その場合、
（ｉ）必要に応じてストロークが分解される
（ｉｉ）関連するストロークがグループ分けされて、ストロークの構造化された解釈を反映する複数の仮説を形成する（ストロークは、形状の類似度および位置の近さを含むがこれに限定されない、多くの類似度特徴の任意のもの基づいて関連していると判定される）
（ｉｉｉ）仮説に対し、局所的証拠（例：固有のスコア）に基づいて信頼度スコアが適用されている
（ｉｖ）仮説に対し、囲みストローク（例：支持コンテキストスコア）等の相互に作用する支持オブジェクトに応じて信頼度スコアが適用されている
（ｖ）仮説は支持関係に応じて束を形成する
（ｖｉ）競合する仮説同士に制約が適用される
（ｖｉｉ）適用された制約の下で、集合的に高いスコアが割当てられた仮説（例：受理／棄却値問合せ、すなわち他の競合する仮説よりも高い受理値を有する仮説に基づいて）の探索が行なわれる
（ｖｉｉｉ）集合的に高いスコアが割当てられている受理仮説が、ノードリンクダイアグラムの解釈を表わす仮説束の部分集合を形成する。
【００９０】
事前処理されたストロークに対する構造認識：構造仮説の形成、について述べる。構造認識は、原子ストロークオブジェクトを比較的複雑なオブジェクトにグループ分けすることにより生じる。グループ分けの規則は変動およびノイズを許容しなければならず、複雑なオブジェクトに対する多くの仮説が構築されている。これにより束３１０が形成される。最適化手順は、集合的に最高いスコアを達成する仮説の組合せを選択すべく動作し、特定の制約に従って仮説束の部分集合（例：図１５の３３０）を選択する。
【００９１】
各々の複雑なオブジェクトは、１個以上の比較的単純なオブジェクトにより「支持」される。これらの比較的単純なオブジェクトは、比較的複雑なオブジェクトで規定された役割を果たす場合がある（例：くさびが、矢印の比較的複雑なオブジェクトを支持する役割を果たす）。
【００９２】
ノードリンクコンセプトスケッチドメインについて、図形および文字オブジェクト並びに部品２８０のオントロジーを図１３に示す。図形および文字オブジェクトのオントロジーは、原子から分子へ、グラフノードへ、およびノードリンクダイアグラムのグラフリンクへと構築される。
【００９３】
以下、図１３に例示する各要素について説明する。
【００９４】
原子ストローク（２８２）：未加工ストロークを角で分解することにより得られる分解されたデジタルインクストローク。極めて短い孤立したストロークはペンドット（PenDot）と呼ばれ、より長いストロークはペンストローク（PenStroke）と呼ばれる。
くさび（２８４）：角で交わるほぼ一対の同じ長さのペンストローク。
矢印（２８６）：角で交わるくさびとペンストロークであって、当該ペンストロークはくさびの辺の間に来なければならない。
曲線オブジェクト（２９０）：自身とは交差しない開経路を形成する一連のペンストローク。
曲線コネクタ（２９２）：開経路、単一ペンストローク、または端と端がつながった複数ペンストロークは、終端子図形（TerminatorGraphic）、すなわち矢印等のコネクタの終端子として機能できるオブジェクトのオプション的役割を含んでいる。他の形状または項目は終端子として機能することができる。
閉経路オブジェクト（２８８）：自身とは交わらない閉経路またはほぼ閉じた経路を形成する一連のペンストローク。閉経路は通常、閉経路オブジェクトと見なすことができるためには比較的単純且つ小さい形状でなければならない。蛇行する長い閉経路はこれに該当しない。
文字オブジェクト（２９４）：手書きの単語に概ね対応する、まとまりのある細長い塊を形成するペンストロークおよびペンドットの集合。
文字ライン（２９６）：通常は水平線に沿って端から端まで並んだ文字オブジェクトのグループ。
文字カラム（２９８）：文字オブジェクトおよび／または文字ラインを垂直にならべたもの。
グラフノード（３００）：ノードグラフィックおよびノードラベルの二つの主な役割を有する。グラフノードを支持すべく、役割の少なくとも一つ、オプション的には両方を果たす。一実施形態において、閉経路オブジェクトによりノードグラフィックの役割を果たし、文字オブジェクト、文字ラインまたは文字カラムによりノードラベルの役割を果たすことができる。同じ実施形態において、グラフノードに対して両方の役割が果たされ、次いで閉経路オブジェクトにより文字が囲まれる。また、グラフノードは、自身に関連付けられたグラフリンクへのポインタを保持する。他の実施形態では異なる構成であってよい。
グラフリンク（３０２）：リンクグラフィックおよびリンクラベルの二つの役割を有している。リンクグラフィック役割は、曲線コネクタが果たさなければなければならない。リンクラベル役割はオプション的に、文字オブジェクト、文字ライン、または文字カラムにより果たすことができる。また、グラフリンクはいずれかの終端に関連付けられた（指示される）グラフノードのリストを保持する。
【００９５】
図１３には示していないが、グラフノードの関連付けも本概念と合わせて用いられることを理解されたい。
【００９６】
これらの種類のオブジェクトの各々について、これを支持する何らかの比較的単純なオブジェクトからオブジェクト仮説を形成する方法を用いる。また、各々のオブジェクトは、支持オブジェクトが、形状やサイズ要件等の規定された基準をどの程度満たすかに依存する固有のスコアを得る。例えば、本実装において、仮定された文字オブジェクトは、マイクロソフトタブレットＰＣ  ＡＰＩを介して呼ばれるマイクロソフト手書き認識プログラムの信頼度スコア（低、中間、高）に応じて、０．１、０．５、または０．９の固有スコアを得る。くさびおよび矢印は、それぞれの部品のジオメトリに基づいて発見的な基準で採点される。他のスコア設定方式も公知であって利用できる。
【００９７】
オブジェクトの構築方法を図１４の仮説束３１０に示す。
【００９８】
ペンストロークおよびペンドット（例：プリミティブまたは原子）３１２から出発して、分子３１３を経て、グラフノード３１４ａ、３１４ｂおよびグラフリンク３１６まで、比較的単純なオブジェクトを比較的複雑なオブジェクトにグループ分けするアルゴリズムが多くの仮説（すなわち、仮説束）を生成し、そこから仮説の部分集合が選択される。黒い（太線）連鎖３１８ａ、３１８ｂ、３１８ｃは受理された仮説と見なすことができる一方、明るい（太線でない）連鎖３２０ａ、３２０ｂ、３２０ｃは棄却された仮説である。受理された仮説の組は、ノードリンクダイアグラムの正確な解釈であるとして集合的に高いスコア割当て（他の競合する仮説の組と比較して）を有する。時折、形の拙い矢印のように低いスコアを付与された仮説が、曲線の等高線すなわちグラフリンクの支持に重要な役割を果たす場合、当該仮説が正しいことがわかり、トップダウン情報により効果的に補強される。
【００９９】
図１５に、フラグメント（１〜２８）３３４に分解されたノードリンクダイアグラム３３２の受理された仮説束３３０を示す。これらは、グループ分けされ（例：１〜７、８〜１１、１２、１３、１４、１５、１６、１７〜２８）、次いで、くさび３３６等の最も単純な形式から出発して、矢印３３８、曲線コネクタ３４０、文字オブジェクト３４２ａ、３４２ｂ、閉経路３４４、グラフノード３４６、およびグラフリンク３４８まで構築されて、全体的なノードリンク関連付け（ダイアグラム）３５０が得られる。構造階層には最終の正しい仮説だけを示し、多くの誤ったグループ分けが削除されている。
【０１００】
以下に、構造認識手順の一実施形態の入出力と共にステップについて述べる。
【０１０１】
入力：新たに分解されたペンストローク；新しくタッチされた文字オブジェクト仮説；既存の文字オブジェクト、閉経路オブジェクト、くさび、矢印、曲線コネクタ、ＮＬリンク、ＮＬノード。
【０１０２】
出力：文字オブジェクトのリスト。閉経路オブジェクト、くさび、矢印、曲線コネクタ、ＮＬリンク、ＮＬノード。
【０１０３】
適切な入力がなされたならば、プロセスは、
１．全てのペンストロークの近位端にリンクを形成する。リンクされたペンストローク終端の各対が並び（alignment）または角を形成する程度を表すスコアを数値的に与える。
２．くさび仮説を形成する。
本システムは、図１６のノードリンクダイアグラム３６０を解釈して、潜在的にくさびと考えられるストロークを識別する。くさび仮説３６２ａのあるものは真であるが、他のものは偽３６２ｂである。仮説の同様の例を図１７〜２１に示す。仮説束を修正する認識モジュールの動作を示す図３０のブロック５１２における最適化プロセスの一部としてＴ／Ｆの判定がなされる。
３．矢印仮説を形成する（図１７、３６４ａ真、３６４ｂ偽を参照）。
４．閉経路オブジェクト仮説を形成する（図１８、３６５ａ真を参照）。
５．曲線コネクタ仮説を形成する（図１９、３６６ａ真を参照）。
６．閉経路オブジェクトにより囲まれるストロークの集合を見出す。
７．閉経路オブジェクトによる囲い込みに基づいて文字オブジェクト仮説を破る。
８．共通の支持オブジェクトを有することに基づいて、互いに冗長である文字オブジェクト仮説または他のいずれかの図形オブジェクトと冗長である文字オブジェクト仮説を除去する。
９．スコアが与えられていない全ての文字オブジェクト仮説に対して手書き文字認識を実行する。
１０．文字オブジェクトから文字ラインおよび文字カラム仮説を形成する。
１１．文字オブジェクト、文字ライン、または文字カラム（図２１、３６８ａ真を参照）を囲む閉経路オブジェクトからグラフノード仮説を形成する（図２０、３６７ａ真を参照）。
１２．文字オブジェクト、文字ライン、または文字カラムを指す曲線オブジェクトからグラフノードおよびグラフリンク仮説を形成する。
【０１０４】
各オブジェクトは、スコアと、自身の支持オブジェクトおよび自身が支持するより複雑なオブジェクトへのポインタと、を含んでいる。この出力は、例えば図１４の３１０の仮説束を形成する。
【０１０５】
キャンバス上のストロークが特定のオブジェクト形式であるか否かを判定する仮説を生成すべく利用可能且つ当分野で公知である多くの技術が存在する。単純なくさび仮説に関して、本システムは、互いに一定の近さにある２個のストロークの間の角度および各ストロークの相対的な長さを判定することができる。これらの属性には値が付与される（例：２個のストローク間の角度がｘならば角度スコアは０．１であり、角度がｚならば角度スコアは０．９である）。このような属性から、各々の仮説について全体的なスコアが得られ、これを用いて全体的なスコア（例：図１５の固有スコア）を判定すべく属性のコスト関数が定義される。特定のインクストロークおよびオブジェクトに関係する技術およびプロセスが当分野で公知である。
【０１０６】
受理された束が形成されたならば、束の原子は自身が支持する仮説が知らされる。これらの仮説の少なくともいくつかは「選択可能仮説」と見なすことができる。各原子は選択可能オブジェクトリストを保持しており、これらは選択可能なグループ仮説（例えば、インクストローク原子は矢印の仮説を支持することができ、その場合当該矢印は選択可能な項目である）と見なすことができる。タップ選択コマンドが呼ばれた場合、タッピング動作を受けている原子に対し、自身の選択可能オブジェクトリストに関して問い合わせが行なわれる。図１５に注目すれば、原子「１５」は（少なくともある程度）「くさび」、「矢印」、「曲線コネクタ」を支持し、これら全ては原子「１５」の選択可能オブジェクトリストに含まれている。
【０１０７】
本システムは選択可能オブジェクトリストの順序を編成することが可能であり、従って本考察では、曲線コネクタが選択可能オブジェクトリストの先頭にあると見なすことができる。原子「１５」がタップされたならば、本システムは曲線コネクタまで構造階層を上がって、キャンバス上の曲線コネクタを選択（例：強調表示により）する。ユーザーが実際には曲線コネクタを望んでおらず、矢印を選択したい場合、原子「１５」を再度タップすることによりシステムはリストで２番目の選択可能仮説（例：本例では矢印）へ移動し、階層内の移動が受理されて矢印が取り出される。これにより、プロセスが選択オプションを循環することができる。同様の機能が囲み動作や取消し動作にも利用できる。
【０１０８】
図２２では、選択可能オブジェクトリストに関係する動作をフロー図３７０に示す。最初に、画像または画像の一部（原子オブジェクト等）に対しタップ動作が行なわれ（３７０ａ）、これにより選択可能オブジェクトリストの最初の項目を選択する（３７０ｂ）。本システムは次いで、構造階層内を移動して選択可能オブジェクトリストの最初の項目を識別し（３７０ｃ）、当該項目をキャンバス上で強調表示する（３７０ｄ）。強調表示された項目の選択が決定された場合（３７０ｅ）、本システムは選択コマンドを認識モジュールへ送信するか（３７０ｆ）、または、項目が選択されてない（例：ユーザーが再び画像をタップする）場合（３７０ｇ）、プロセスは選択可能オブジェクトリスト内で一段先へ進み、次に登録されている項目（例：矢印）に達する（３７０ｈ）。構造階層を再び調査して選択可能オブジェクトリストから現在選択されている項目を識別（３７０ｉ）し、当該項目をキャンバス上で強調表示する（３７０ｊ）。次いで、強調表示された項目を選択するか否かをについて再度判定する必要がある（３７０ｋ）。項目が選択されたならば、選択コマンドを認識モジュールへ送るか（３７０ｌ）、または、項目が選択されていない場合、当該項目が選択可能オブジェクトリストにおける最後の項目であるか否かの問合せを行なう（３７０ｍ）。結果が否認的な場合、ユーザーは再び画像をタップすることができ（３７０ｇ）、ステップ３７０ｈ〜３７０ｋが繰り返される。選択された項目が選択可能オブジェクトリストの最後の項目であるが、ユーザーが項目を選択していないと判定された場合、本システムはリストを一巡して、スタイラスまたはペンでタッピングされたならば再びリスト上の選択可能な最初の項目を選択する。
【０１０９】
いくつかの実施形態において、複雑なオブジェクトから単純なオブジェクトへ選択可能オブジェクトリストを並べ替えるオプションを、他の順序の中から、提示されることで、ユーザーが選択可能オブジェクトリストの項目の順序を決定することができる。
【０１１０】
あるいは、ノードリンクダイアグラムの漸増的構造認識または漸増的更新が提供される。ダイアグラムがキャンバスに描画されていて、追加のノード、リンクまたはラベルがダイアグラムに追加または削除された際に、システムが自動的に知的ノードリンクダイアグラム（すなわち、認識動作により機能が与えられているという意味で知的ノードリンクダイアグラムである）を認識すべく動作しているならば、これらの変更により以前に形成された全ての仮説を再生成する必要が無い。既存のノードリンクダイアグラムに変更が生じる都度、仮説の「森」を再構築する必要が無い（例：図１４）。その代わり、新たに追加または削除されたインクストロークに起因して生成された新たな構造仮説グループは、適宜、既存の構造仮説のグループに統合されるか、または新たな構造仮説のグループが形成される。再スコア付与（すなわち、固有および／またはコンテキストスコアの）があれば、既存の階層束（例：図１５）を更新すべく伝播される。この漸増的構造認識はまた、ストロークが新たにタッチされた場合に生起する。束仮説に何らかの変更を行なうべく、ユーザーがノードリンク構造の既存の要素をタッチまたは選択しても、新たな仮説の森全体および新たな束仮説グラフを再生成する必要が無い。
【０１１１】
本システムでは代替的な仮説の森を再構築する際に反復的な作業を行なう必要が無いため、上述のプロセスは、修正された知的ノードリンクダイアグラムを生成する速度を向上させる。従って、既に生成されている構造が維持される。
【０１１２】
グループ分け手順により生成された階層束が含んでいる多くの誤った仮説は、知覚的に顕著で有意味なオブジェクトと一致せず、整合的なノードリンクダイアグラムの一部として互いに整合しない（図１４参照）。選択プロセスは、受理された解釈（図１５参照）の状態に進んで、タップ選択コマンドおよび正式化／非正式化その他の動作を通じてユーザーに利用可能になるオブジェクト仮説を決定すべく動作する。この選択プロセスは、一実施形態において、スコアの合計が最大になるか、個々の仮説の同様の算術的組合せの下で、また、重複しない支持制約の下で最大値を生ずるオブジェクトを保持すべく設計することができる。一実装例において、この制約は、任意のグループまたは原子ペンストロークは高々他の１個の受理されたグループしか支持できないとするものである。他の実装例では、重複しない制約を緩めることができ、例えば、重複しない概念を文字オブジェクト仮説と、くさび、曲線オブジェクトまたは閉経路オブジェクト仮説はグループ仮説との間で緩めて、複数の受理されたグループを支持できるようにすることができる。
【０１１３】
本アルゴリズムは、境界を用いて探索木を剪定する探索概念に基づいている。本アルゴリズムでは重複しない支持制約が起動されて、探索木のより高い位置でなされた決定に基づいて動的に分岐を棄却することにより更に探索木を剪定する。以下の議論は、深さ優先探索として当分野で公知の方法に焦点を当てる。とりわけ「最良優先」を含むがこれに限定されない他の種類の探索を用いてもよい点を理解されたい。
【０１１４】
一実施形態において重複しない支持制約の下で階層グループに対し「深さ優先」探索手順を用いる探索プロセスのステップと共に、入力および出力を以下に記述する。
【０１１５】
入力：ノードの階層束。束の基礎部分には原子ノードがある。その上にグループノードがある。各グループノードは、階層内でより低いいくつかノードにより「支持」されている。各グループノードには２個のスコア、すなわち上述の固有スコアおよび後述の支持コンテキストスコアが割当てられている。
【０１１６】
出力：各ノードが階層において自分より上のノードを高々１つ支持するように、部分集合に含まれるノードの支持、支持コンテキストスコアの合計または関係する算術的組合せを最大にするグループノードの部分集合。
１．図２３の階層的束構造３８０に示すように、各原子ノード（Ａ１〜Ａ６）３８２に支持コンテキストスコアとして１が割当てられる。スコアは原子ノードから上方へ伝播されることにより、各グループノード（Ｍ１〜Ｍ８）３８４は、自身の固有スコア３８８と、自身の支持ノード群の最小支持コンテキストスコアからイプシロン値を減算した値と、のうちの小さい方である支持コンテキストスコア３８６を有している。支持コンテキストスコアは、底部の原子ノードから伝播させて、固有のスコアを支持ノードの支持コンテキストと組み合わせることによりノードの階層に割当てられる。
２．全てのグループノードの支持コンテキストスコアを一覧表示するスコアベクトルが生成される。スコアベクトルにおいて固有スコアを用いることは可能であるが、これにより探索木の剪定が大幅に減り、従って探索時間が増える恐れがある。
３．スコアベクトルおよび付随するグループノードが、最大支持コンテキストスコアから最小なものへ並べ替えられる。ステップ１でのスコア割当てのため、束内でより高いノードがそれらの支持ノードの後に厳密に来るよう、ノードは順序付けられる。
４．図２４の表３９０のような支持表が階層束（例えば図２３の）に基づいて構築される。図２４に、支持表３９０が、階層グループ束３８０の支持構造を符号化する様子を示す。表の水平方向の次元（行添え字）は、全てのグループノードを、支持コンテキストスコアの順に一覧表示する。支持表の垂直方向の次元（列添え字）は、原子ノードに加え、束内でより上位にある少なくとも１個の他のグループノードを支持する全てのグループノードからなる。支持表の項目はブール値であり、行添え字付き原子または支持グループノードが束内で列添え字付きグループノードを支持するか否かを示す。
５．重複しない支持制約の下で最適化探索が実行される。探索の目的は、各グループ（または仮説）ノードにＴ／Ｆ値を割当てることである。これは２進木の探索により達成され、ここで、木の各ノードにおいて左分岐がノードに真値を割当てることに対応し、右分岐が偽値を割当てることに対応する。木の深さは、グループノードの個数である（図２６参照）。
【０１１７】
図２４に、階層ノード束の例および支持表３９０の支持関係の表現を示す。ノード（ＭＩ、Ｍ３、Ｍ５）３９２ａ〜３９２ｃは受理される（真）一方、ノード（Ｍ２、Ｍ４、Ｍ６、Ｍ７、Ｍ８）３９４ａ〜３９４ｄは棄却される（偽）。支持表の帯状域３９６は、深さ優先探索を動的に剪定するための重複しない支持制約の動作を示す。
【０１１８】
重複しない支持制約の下で深さ優先最適化探索のより特定の実施形態に注目すれば、以下の段落において、探索（Ａ１〜Ａ３）の主ステップおよび主ステップ（Ａ１〜Ａ３）のより詳細と共に、そのような探索の入力および出力を記述する。
【０１１９】
入力：オブジェクトスコアのベクトルおよび支持表。
【０１２０】
出力：全ての真であるオブジェクトが支持表に従い高々１個の他の真であるオブジェクトを支持するという制約の下で、オブジェクトスコアの合計または関係する算術的組合せが最大化されるようなオブジェクのＴ／Ｆ値のラベリング。
Ａ１．ノード変数を初期化する。
Ａ２．主ループ：．．．となるまで現在ノードを処理する。
Ａ３．終了：最適なノードＴ／Ｆ値割当てを出力する。
【０１２１】
Ａ１の初期化ステップは以下を含んでいる。
Ｉ１．変数best-score（最高スコア）を０に初期化する。
Ｉ２．変数cumulative-score（累積スコア）を０に初期化する。
Ｉ３．各ノードの変数veto-count（否認回数）を０に初期化する。
Ｉ４．各ノードの変数current-state（現在の状態）の値を「状態Ａ」に初期化する。
Ｉ５．ポインタtree-pointer（木ポインタ）を第１ノードに初期化する。ポインタtree-pointerにより指示されるノードを「current-node（現在ノード）」と呼ぶ。
【０１２２】
主ループ：current-node（現在ノード）を処理する。ステップＡ１〜Ａ３中のステップＡ２について、構造認識を得るために用いるプロセスに関する詳細を提供する図２５〜図２９と合わせて説明する。プロセスが繰り返す間に、ポインタtree-pointerが探索木を上下に調査して、ノード値を真および偽のさまざまな組合せに設定する。プロセスは、２通りの方法で探索を剪定するように設計されている。第一に、プロセスは、否認されたノードが重複しない支持制約を満たさないため、その真値を調べない。第二に、プロセスは、ノードを受理することにより得られる最適な累積スコアが、これまで得られた最高スコアを下回る場合、当該ノードの真値を調べない。
【０１２３】
図２５に、重複しない支持制約アルゴリズム４００の下での深さ優先最適化の主ループのロジックダイアグラムを示す。ステップ４０２において、現在ノードが処理される。このプロセスにおいて、動作は判定ブロック４０４へ移動して、当該ノードが最後のグループノードの現在ノードであるか否かを判定する。そうでない場合、判定ブロック４０６において、現在ノードの状態がＡ、ＢまたはＣ（図２６参照、Ａが未調査、Ｂは真、Ｃは真および偽である）であるか否かを判定する。Ａである場合、判定ブロック４０８は現在ノードの否認回数がゼロ（０）を超えるか否かを調べる。ＮＯの場合、プロセスはブロック４１０へ移動して、現在ノードの累積スコアが現在ノードのスコアに等しいか否かを調べる。ステップ４１２において楽観的スコアを合計する。動作「楽観的スコアを合計する」は、現在の累積スコアを否認回数がゼロ（０）に等しい木の下方にあるノードのスコアに加算することを意味する。楽観的スコアが最高スコアより小さいか否かを判定する（４１４）。ＹＥＳならば、現在ノードの変数Ｔ／Ｆの値を偽に設定する（４１６）。次いで、現在ノードの変数current-stateの値を「Ｃ」に設定し（４１８）、変数current-nodeの値を減らし（４２０）、プロセスは４０２へ戻って現在ノードの入力を処理する。
【０１２４】
ステップ４１４において楽観的スコアが最高スコアより大きいことが分かった場合、プロセスは現在ノードの変数Ｔ／Ｆの値を真に設定し（４２２）、矛盾している支持ノードを否認するプロセスを呼び出す（４２４）。この時点で、現在ノードの変数current-stateの値を「Ｂ」に設定し（４２６）、変数current-nodeの値を増やす（４２８）。その後、プロセスは入力された現在ノードの処理ブロック４０２へ戻る。
【０１２５】
ステップ４０８において現在ノードの否認回数がゼロ（０）より大きいと判定された場合、プロセスは現在ノードの変数current-stateを「Ｃ」に設定して（４３０）、現在ノードの変数Ｔ／Ｆの値を偽に設定し（４３２）、次いで変数current-nodeの値を減らす（４３４）。その後、プロセスは現在ノードの次の処理のためステップ４０２へ移動する。これは、ステップ４０６で現在ノードの状態が「Ａ」であることが分かった場合に利用できる代替方法である。
【０１２６】
ステップ４０６において現在ノードの状態が「Ｂ」である場合、矛盾する支持ノードの否認を解除するプロセスを呼び出し（４３６）、現在ノードの変数current-stateを「Ｃ」に設定し（４３８）、現在ノードの変数Ｔ／Ｆの値を偽に設定し（４４０）、変数current-nodeの値を増やす（４４２）。
【０１２７】
上記は、現在ノードの状態が「Ｂ」である場合に生じるステップである。ステップ４０６において現在ノードの状態が「Ｃ」である場合、現在ノードが第１ノードであるか否かの問い合わせを行なう（４４４）。ＮＯならば、変数current-nodeの値を減らし（４４６）、プロセスは現在ノードの処理４０２へ戻る。ステップ４４４において現在ノードが第１ノードである場合、プロセスが終了し、最適ノードＴ／Ｆ値割当てがなされた旨を報告する（４４８）。
【０１２８】
ステップ４０４へ戻り、現在ノードが最後のグループであると判定された場合、プロセスは最後のグループノードを処理する（４５０）。現在ノードの変数current-stateを「Ｃ」に設定し（４５２）、変数current-nodeの値が減らされる（４４６）。この時点で、プロセスは再び現在ノードの初期プロセス４０２へ戻る。
【０１２９】
図２６に、本明細書に記述している探索概念の動作により生成された探索木の一部（または極めて簡単な探索木の全体）を示す。数字は、探索木内でノード状態、Ａ、ＢおよびＣがどのように探索の現在状態を追跡し続けて、木ポインタを探索における次のノードに向けるかを示している。図２６は、ノード探索状態変数４６０が状態の値としてＡ、ＢまたはＣを取り得ることを示す。これらは、ノードが未だ調べられていない（状態Ａ）４６２、調べた結果が真（状態Ｂ）である４６４、あるいは調べた結果が真および偽の両方（状態Ｃ）である４６６か否かを追跡する。
【０１３０】
ステップＡ３、「終了：最適なノードＴ／Ｆ値割当てを出力する」に注目すれば、ポインタtree-pointerが最上位のノードに到達して、その現在の状態current-stateがＣである場合、アルゴリズムは終了する。これが生じるのは、それより下位の全てのノードが調査されたか剪定されている場合である。本アルゴリズムは次いで、探索過程で見つかった、最高スコアのＴ／Ｆ値割当てのＴ／Ｆ値を出力する。これは例えば、図１５のダイアグラムで最適なグループ仮説を選択することに対応する。
【０１３１】
図２７において、最後のグループノードのプロセス４５０に関係し、且つこれに続く動作をより詳細に示す。累積スコアcumulative-scoreが最高スコアbest-scoreより大きいか否かを判定する（４７０）。結果が肯定的である場合、変数best-scoreの値を変数cumulative-scoreの値に設定する（４７２）。次いで、変数best node true-or-false assignmentの値を現在ノードの真偽値割当ての値に設定する（４７４）。この情報を用いて、システムはプロセスを終了する。一方、ステップ４７０において、累積スコアが最高スコアより大きいと判定されなかった場合、プロセスは否認的な結果を返し、直ちに終了する。
【０１３２】
図２８において、矛盾する支持ノードを否認する動作（４２４）についてより詳細に示す。変数node-to-considerの値を現在ノードの値に設定する（４８０）。システムは、支持表内で変数node-to-considerが表すノードの支持ノードを探す。支持ノードを利用不可支持スタックに追加し（４８２）、システムは利用不可支持スタックが空であるか否かを判定する（４８４）。空である場合、プロセスを終了する。空でない場合、変数node-to-considerの値を、利用不可支持スタックからポップアップされたノードの値に設定して（４８６）、変数node-to-considerが表すノードの変数veto-countの値を増やす（４８８）。プロセスは再びステップ４８２へ移動して、ステップ４８４で利用不可支持スタックに他のノードが存在するが否かを判定し、プロセスは利用不可支持スタックが空になるまで継続される。このプロセスでは、システムはシステムの重複しない制約が満たされるか否かを判定する。
【０１３３】
図２９に、図２５の矛盾する支持ノードの否認解除プロセス４３６を更に詳細に示す。変数node-to-considerの値を現在ノードの値に設定し（４９０）、システムはステップ４９２において再び、支持表において変数node-to-considerが表すノードの支持ノードを探して、支持ノードを利用不可支持スタックに追加する。次いで、ステップ４９４において、プロセスは利用不可支持スタックが空であるか否かを判定する。結果が肯定的である場合、プロセスを終了する。結果が否認的である場合、変数node-to-considerの値を、利用不可支持スタックからポップアップされたノードの値に設定し（４９６）、変数node-to-considerが表すノードの変数veto-countの値を減らす（４９８）。その後、プロセスがステップ４９４の結果が肯定的になるまで継続され、プロセスを終了する。
【０１３４】
本明細書に記述する探索概念は、重複しない制約を用いており、特に構造認識に注目して記述してきた。その用途を、上述の実装例に限定することを意図しておらず、他の図形認識用途、および他の計算機視覚アプリケーションまたは上述の方法およびプロセスから得られる探索能力による利益が享受する他の任意の分野にも適用可能である。
【０１３５】
上述の議論は、最適化された、ほぼ最適化された、または所望の実行可能な解決策に到達すべく、Ｔ／Ｆ値の判定を用いて探索木を剪定する各種の手順の動作を記述している。多くの理由により、ある解釈を「強制する」ことが望ましい場合がある。解釈を強制するとは、介入の無い動作の下で最適化探索が仮説のＴ／Ｆ値をどのように判定するかに関らず、何らかの介入（例：ユーザーによる能動的入力または所定の選択）により仮説の値を真または偽値に設定することを意味する。従って、最適化探索が別途真（または偽）値を発見し得る状況において、システムは当該判定をオーバーライドすることにより、当該計算内のノードが潜在的に受理可能（または受理不可能）にすべく設計することができる。
【０１３６】
上の段落が仮説束の生成を用いる認識動作について述べていて、図３０に示すように各種の動作が仮説束の修正を可能にすることを理解されたい。例えば、システム図５００において、ストロークの事前解釈動作を実行した場合（５０２）、更新された文字オブジェクト仮説５０４が仮説束５０６に与えられる。構造認識動作を実行した場合（５０８）、特定の動作に全ての構造化オブジェクト仮説の更新が含まれている（５１０）。これが認識動作の下で必要とされる全てである場合、これらの更新された構造オブジェクト仮説が仮説束５０６に与えられる。システムは、受理された仮説の選択を必要とする場合がある（すなわち、最適化探索を行なわなければならない５１２）。この状況において、仮説束を更新する前に、当該仮説に真または偽のラベルを付与する（５１４）。
【０１３７】
ストローク正式化動作５１６に際して、システムは、正式化すべき仮説を決定すべく選択動作を実行し（５１８）、選択された仮説を正式なグラフィカルオブジェクトに変換する（５２０）。これら正式なオブジェクトは、束５０６の更新に際して非正式な仮説と交換または差し替えられる（５２２）。代替的な措置において、システムは棄却された仮説の除去を要求する場合があり（５２４）、その場合は選択された仮説を除去（５２６）して仮説束を更新する（５０６）。
【０１３８】
また、上述の議論が電子的に形成されたノードリンクダイアグラムに知能を与えてダイアグラムの構造を認識可能にする動作を開示している点に注意されたい。これらの動作は、ノードリンクダイアグラムの編集を可能にする。基本すなわち原子オブジェクトを取得する態様を以下に要約する。
I．ストローク毎の処理段階
１．原子オブジェクト（ストローク、ノード）の形成
１ａ．ストローク解釈列から次の利用可能ストロークを除去する。
１ｂ．ストロークが筆記体であるか否かの指標を計算する。
これはストロークの二乗和曲率、長さ、速度、およびオプションとして他の特性に基づいている。
１ｃ．筆記体と判定されたストロークを「文字」型の原子とみなして、ストローク解釈列の先頭に戻す。
１ｄ．筆記体と判定されなかったストロークを公知の手段に従い角で分解する。結果的に生じる各々のストロークフラグメントを原子ストロークとみなす。生成された原子ストロークフラグメントの集合をストローク解釈列の先頭に入れる。
２．原子ストークスのグループ分けに基づく分子文字オブジェクト仮説の形成
原子ストロークをストローク解釈列から除去し、仮説束内の文字オブジェクト型分子オブジェクト仮説の現在の集合に関して考察する。（最初、仮説束に分子オブジェクトは存在しない。）、各文字型分子仮説について、ストロークの位置、長さ、形状および他の特性を評価し、行なうべき動作を以下のように決定する。
−ストロークが文字オブジェクト分子オブジェクト仮説と完全に整合性を有する場合、ストロークを当該分子オブジェクトの支持オブジェクトに加える。
−ストロークが分子オブジェクト仮説と部分的に整合性を有する場合、二つの新たな分子オブジェクト仮説を形成する。一つはストローク単独からなり、もう一つは当該ストロークに当該分子の支持原子ストロークを加えたものからなる。
−ストロークがどの既存の文字型分子オブジェクト仮説とも部分的に整合性を有しないと判定された場合、当該ストロークをその唯一の支持オブジェクトとして新たな文字型分子オブジェクト仮説を形成する。
ＩＩ．後続処理段階
３．終端リンク
３ａ．筆記体と判定されなかった全てのストローク（ストロークフラグメント）について、各ストロークの終端点の位置と向きを表わすストローク終端オブジェクトを生成する。
３ｂ．閾値に従い互いに十分近くにある一対のストローク終端を表わす終端リンクデータ構造を形成する。そのような各々の終端対が角を形成する度合い、およびそのような各々の終端対が滑らかな曲線形状をなす度合いを計算して終端リンクデータ構造に加える。
３ｃ．当分野で公知のアルゴリズムに従い、原子ストロークにより形成される知覚的に閉じた経路の探索を行なう。結果的に生じた各々の閉経路図形オブジェクトを仮説束に加える。
３ｄ．くさびまたは矢印を形成する３重のストロークを発見すべく、閉経路図形オブジェクトに関与していない全てのストロークを更に処理する。矢印ストロークの対を仮説束の矢印図形オブジェクトとして登録される。
３ｅ．終端同士がリンクされたストロークの連鎖を発見すべく、閉経路図形オブジェクトに関与していない全てのストロークを更に処理する。仮説束の開経路図形オブジェクトとして連鎖を登録する。
４．グラフまたはノードリンク構造ノードの生成。
４ａ．上で定義したグラフノードおよびグラフリンクオブジェクトの要件を満たす仮説束における分子オブジェクトの集合を、適切な型であって、互いに空間的に適切な近さにある分子オブジェクトの対を網羅的に探索することにより発見する。例えば、閉経路オブジェクトと文字型分子オブジェクトを比較して、閉経路オブジェクトが文字オブジェクトを囲んでいることが分かった場合、グラフノードオブジェクトが生成される。
同様に、開経路オブジェクトが、文字型分子オブジェクトまたは閉経路オブジェクトを「指す」関係があることが分かった場合、グラフリンクおよびグラフノードオブジェクトが生成される。
５．信頼度スコアの割当て
５ａ．自身の原子支持オブジェクトが当該分子オブジェクトの型の理想的なモデルにどれほど良く当てはまるかに基づいて、仮説グラフ内の各分子オブジェクトに信頼度スコアを付与する。
５ｂ．自身の寄与するノードリンク分子オブジェクトのスコア、および当該ノードリンク構造オブジェクト型について定義された部品の理想的な構成を満たす空間構成に応じて、仮説グラフ内の各ノードリンク構造オブジェクトにスコアを割当てる。
６．グラフ構造信頼度スコアの補強
６ａ．グラフ構造オブジェクト度の信頼度スコアは、互いを補強する程度に応じて調整される。信頼度は、グラフ構造ノードオブジェクトがグラフ構造リンクオブジェクトにより指示される程度から、グラフ構造リンクオブジェクトがグラフ構造ノードオブジェクトを指示する程度まで上がる。
７．仮説の選択
７ａ．勝ち残る仮説は、最適探索により仮説グラフから選択される。最高スコアを得たグラフ構造ノードが「受理された」として選択され、これを支持する全ての分子オブジェクトがこれに割当てられる。
７ｂ．このような支持分子オブジェクトの各々について、当該分子オブジェクトを支持する全ての原子ストロークがこれに割当てられる。
７ｃ．次の層のオブジェクトに割当てられた全ての分子オブジェクトおよび原子ストロークの支持オブジェクトが、仮説グラフ内の他の全ての仮説から除去される。
７ｄ．影響を受けた全てのグラフ構造および分子オブジェクトが、自身の信頼度スコアを再計算する。
７ｅ．信頼度スコアが閾値を超える状態で、未受理グラフ構造仮説ノードがなくなるまで制御は７ａへ戻る。
７ｆ．受理されたグラフ構造ノードおよびこれらの支持分子オブジェクト並びに原子ストロークを、抽象オブジェクトおよびそれらの支持ストロークにおけるノードリンクとその支持オブジェクトの論理的関係を記録するデータ構造に登録する。このデータ構造は、上述のユーザー選択および編集動作に対応している。
【図面の簡単な説明】
【０１３９】
【図１】本出願の概念図である。
【図２】本出願の概念を実装するために用いるプロセスの高水準のダイアグラムである。
【図３】グラフィカルユーザーインターフェースモジュールと認識モジュールのアーキテクチャ上の関係を示す構成図である。
【図４】高水準のフロー図である。
【図５】ノードリンクダイアグラムプログラムの画面スナップショットである。
【図６】プログラム（例：コンセプトスケッチ）への各種の指示／動作の概要図である。
【図７】フロー図である。
【図８】タッピング動作を示す概念図である。
【図９】ＧＵＩモジュール（層）と認識モジュール（層）の関係の詳細図である。
【図１０】事前解釈動作の更なる詳細図である。
【図１１】図１０のグループ分け動作の更なる詳細図である。
【図１２】ＧＵＩと認識モジュールの間のインターフェースの各種の方法を示す関数一覧図である。
【図１３】ノードリンクダイアグラム構造のオントロジーを示す構成図である。
【図１４】複数の構造仮説または構造仮説の森を示す概念図である。
【図１５】ノードリンク構造階層を示す概念図である。
【図１６】くさび仮説を示す関係図である。
【図１７】矢印仮説を示す関係図である。
【図１８】閉経路オブジェクト仮説を示す関係図である。
【図１９】曲線コネクタ仮説を示す関係図である。
【図２０】グラフノードの仮説を示す関係図である。
【図２１】グラフリンク仮説を示す関係図である。
【図２２】フロー図である。
【図２３】階層ノードダイアグラムである。
【図２４】階層ノード束の例を示す概念図である。
【図２５】ロジックダイアグラムである。
【図２６】状態がノード探索を追跡する様子を示す概念図である。
【図２７】ノード探索における最後のグループノードのプロセスステップ拡大を示すフロー図である。
【図２８】より詳細なフロー図である。
【図２９】矛盾する支持ノードの否認を解除する動作を示すフロー図である。
【図３０】認識モジュールの動作を示すフロー図である。
【符号の説明】
【０１４０】
１０  環境またはシステム、１２  電子ディスプレイ、１４  コンピュータ、１６  電子スタイラスまたはペン、１８  キーボード、２０  マウス、２２  キャンバス、２４  ノードリンクダイアグラム、２６ａ，２６ｃ  図形形状、２６ｄ  文字、２８ａ〜２８ｅ  湾曲した弧、３０ａ〜３０ｃ  文字、３２ａ  矢印、３４  インクストローク、６０  ユーザーインターフェース、６２  ＧＵＩモジュール、６４  認識モジュール、６４ａ  コンセプトスケッチ認識モジュール、６４ｂ  未処理ストローク列、６４ｃ  処理（解釈）済みストローク列、６４ｄ  正式インターフェース、６４ｅ  手書き認識モジュール。
【図１】
2008243204.tif 000003
【図２】
2008243204.tif 000004
【図３】
2008243204.tif 000005
【図４】
2008243204.tif 000006
【図５】
2008243204.tif 000007
【図６】
2008243204.tif 000008
【図７】
2008243204.tif 000009
【図８】
2008243204.tif 000010
【図９】
2008243204.tif 000011
【図１０】
2008243204.tif 000012
【図１１】
2008243204.tif 000013
【図１２】
2008243204.tif 000014
【図１３】
2008243204.tif 000015
【図１４】
2008243204.tif 000016
【図１５】
2008243204.tif 000017
【図１６】
2008243204.tif 000018
【図１７】
2008243204.tif 000019
【図１８】
2008243204.tif 000020
【図１９】
2008243204.tif 000021
【図２０】
2008243204.tif 000022
【図２１】
2008243204.tif 000023
【図２２】
2008243204.tif 000024
【図２３】
2008243204.tif 000025
【図２４】
2008243204.tif 000026
【図２５】
2008243204.tif 000027
【図２６】
2008243204.tif 000028
【図２７】
2008243204.tif 000029
【図２８】
2008243204.tif 000030
【図２９】
2008243204.tif 000031
【図３０】
2008243204.tif 000032