(57)【要約】【課題】線の意図に寄与する画素を適切にかつ正確に特定する画像処理方法およびシステムを提供する。【解決手段】画像処理のための方法は、画像からストロークのマスクを取得し、当該マスクと基準線とに基づいて、上記ストロークの複数の交差エッジを特定する。複数の交差エッジは、基準線と交差し隣り合った交差エッジのグループを含む。上記方法は、さらに、（ａ）グループ内の少なくとも２つの交差エッジの位置に基づいて第１のベクトルを計算し、（ｂ）第１のベクトルに基づいて、基準線と交差せずグループに隣接する交差エッジを含むようにグループを拡張し、（ｃ）拡張されたグループ内の交差エッジの少なくとも２つの位置に基づいて第２のベクトルを計算し、（ｄ）第２のベクトルに基づいて、基準ラインと交差せず拡張されたグループの近傍の隣接する交差エッジの第２のグループを含むように、拡張されたグループを拡張することを含む。【選択図】図２
2017215946.tif 000002
【特許請求の範囲】
【請求項１】
画像処理のための方法であって、
画像からストロークのマスクを取得するステップと、
前記マスクと前記マスク上に描画された基準線とに基づいて、前記ストロークの複数の交差エッジを特定するステップと、
ここで、前記複数の交差エッジは、前記基準線と交差し隣り合った交差エッジのグループを含み、
以下を含む前記グループを拡張するステップと、
（ａ）前記グループ内の少なくとも２つの前記交差エッジの位置に基づいて第１のベクトルを計算するステップと、
（ｂ）前記第１のベクトルに基づいて、前記基準線と交差せず前記グループに隣接する交差エッジを含むように前記グループを拡張するステップと
以下を含む拡張されたグループを拡張するステップと、
（ｃ）前記拡張されたグループ内の前記交差エッジの少なくとも２つの位置に基づいて第２のベクトルを計算するステップと、
（ｄ）前記第２のベクトルに基づいて、前記基準線と交差せず前記拡張されたグループの近傍の隣り合った交差エッジの第２のグループを含むように前記拡張されたグループを拡張するステップと、
を含む、方法。
【請求項２】
前記ステップ（ｄ）における前記拡張されたグループの近傍の隣り合った交差エッジの第２のグループは、前記第２のグループの長さおよび前記拡張されたグループの長さのうち短い方の長さだけ、前記拡張されたグループから離隔されている、請求項１に記載の方法。
【請求項３】
前記ストロークの幅の最大許容値に基づいて表の線の交差に対応する前記拡張されたグループ内の前記交差エッジを更新するステップをさらに含む、請求項１または２に記載の方法。
【請求項４】
前記複数の交差エッジは、隣接する交差エッジの隣接するグループをさらに含み、
前記方法は、
前記ストロークの幅の最大許容値と、前記グループ内の前記交差エッジのうちの少なくとも２つの位置とに基づいて、前記グループと前記する隣接するグループとの間のギャップを特定するステップと、
前記ギャップに対応する交差エッジを前記複数の交差エッジに追加するステップと、をさらに含む、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記ストロークの幅の最大許容値に基づいて、前記ストローク内の穴に対応する前記拡張されたグループの交差エッジを特定するステップと、
前記穴に対応する追加の交差エッジを特定するステップと、
前記特定された交差エッジを前記特定された追加の交差エッジで更新するステップと、をさらに含む、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記第１のベクトルは、少なくとも、
前記グループの端部で交差エッジに最も近接し、最小および最大許容値の間の幅を有する交差エッジの第１の位置と、
前記最小および最大許容値の間の幅を有し、前記端部において前記交差エッジから所定の距離だけ離隔されている交差エッジの第２の位置と、から計算される、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
前記第２のベクトルは、少なくとも、
最小および最大許容値の間の幅を有し、前記拡張されたグループの端部で交差エッジに最も近いクロスエッジの第１の位置と、
前記最小および最大許容値の間の幅を有し、前記端部において所定の距離だけ前記交差エッジから離隔された交差エッジの第２の位置と、から計算される、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
前記複数の交差エッジは、隣り合った交差エッジの追加のグループをさらに含み、前記グループの各々は、前記ステップ（ａ）および前記ステップ（ｂ）によって、隣り合った交差エッジの最大数を有する前記グループから開始して拡張される、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
隣り合った交差エッジの最大数を有する前記拡張されたグループと、前記ステップ（ａ）および（ｂ）によって拡張されたグループのうち最も近いものとを併合するステップをさらに含む、請求項８に記載の方法。
【請求項１０】
前記基準線は、前記マスク上に描画されたハフ線であり、
前記特定された複数の交差エッジは、前記ハフ線を横切る前記ストロークの一部を表し、
前記交差エッジのグループは、前記ハフ線の方向に拡張される、請求項１〜９のいずれか１項に記載の方法。
【請求項１１】
請求項１〜１０のいずれか１項に記載の方法をコンピューターに実行させるように構成された画像処理用コンピュータープログラム。
【請求項１２】
請求項１１に記載のコンピュータープログラムを記録したコンピューター読み取り可能な記録媒体。
【請求項１３】
メモリーと、
プロセッサーと、
を含み、前記プロセッサーは、
画像からストロークのマスクを取得し、
前記マスクを前記メモリーに格納し、
前記マスクと前記マスクに描画された基準線とに基づいて前記ストロークの複数の交差エッジを特定し、
ここで、前記複数の交差エッジは前記基準線と交差し隣り合った交差エッジのグループを含み、
以下によりグループを拡張し、
（ａ）前記グループ内の少なくとも２つの前記交差エッジの位置に基づいて第１のベクトルを計算し、
（ｂ）前記第１のベクトルに基づいて、前記基準線と交差せず前記グループに隣接する交差エッジを含むように前記グループを拡張し、
以下により前記拡張されたグループを拡張する、
（ｃ）前記拡張されたグループ内の前記交差エッジの少なくとも２つの位置に基づいて第２のベクトルを計算し、
（ｄ）前記第２のベクトルに基づいて、前記基準線と交差せず前記拡張されたグループの近傍の隣り合った交差エッジの第２のグループを含むように前記拡張されたグループを拡張する、画像処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、表の線を追跡するためのロバスト法に関する。
【背景技術】
【０００２】
背景
ホワイトボードや黒板などのライティングボード（Ｗｒｉｔｉｎｇ  ｂｏａｒｄｓ）は、多くの異なる状況（たとえば、学術、企業、非営利、住宅など）で頻繁に使用される。講義、訓練、ブレインストーミング・セッションなどのために、テキスト、図、表、図表（チャート）、グラフなどのさまざまなコンテンツをライティングボードに描画または配置することができる。
【０００３】
これらのアイデアを電子的に記憶するために、ライティングボードの写真を撮ることがある。さらに、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅｃｏｇｎｉｔｉｏｎ）、ストローク認識、再構成などの画像処理を実行して、画像からライティングボードの内容を抽出することがある。
【０００４】
ライティングボードに手書きされた表（ｔａｂｌｅ）の内容を認識するために、画像プロセッサーまたは画像処理ソフトウェアは、たとえばストローク（ｓｔｒｏｋｅ）幅および線の色のような表形状（ｔａｂｌｅ  ｇｅｏｍｅｔｒｙ）の様々な属性とともに、表の線の「意図（ｉｎｔｅｎｔ）」に寄与する画素を見つけ出さなければならない。表のセルが特定されると、セルに含まれる内容（たとえば、テキスト）を認識モジュール（たとえば、ＯＣＲモジュール）に送ることができる。
【０００５】
しかしながら、手書き処理からのアーティファクト（ａｒｔｉｆａｃｔｓ）の一部、およびライティングボードの画像が撮られたときのいくつかの照明条件は、画像プロセッサーへ低品質の入力をもたらす可能性がある。低品質の入力は、入力画像のマスクが生成されたときに見ることができる。たとえば、図３２に示すライティングボードは、不規則性（ｉｒｒｅｇｕｌａｒｉｔｉｅｓ）を有する少なくとも３つの領域Ａ１、Ａ２、Ａ３を有する。領域Ａ１は、交差する垂直ストロークによって生じる、書込みボード上のマーカーまたはペンの水平ストロークの消えかかった部分（ｆａｄｅｄ  ｐｏｒｔｉｏｎ）を示す。領域Ａ２は、ストローク中にマーカー自体が消えかかった場所を示す。領域Ａ３は、ストロークの途中における退色を示す。これらの不規則性は、図３３に示すようにマスク（Ａ１’、Ａ２’およびＡ３’）に取り込むことができる。他の不規則性、たとえば、直線でない線、一端で湾曲した線、線の部分を消去する指の汚れ、低インクまたは乾燥したマーカーで作成されたマーク、および現在の画像に現れる前の図面からの消えかかったマークも上記マスクに見られる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ライティングボード上の手書きの表の形状を認識するためには、上記マスクに見られるような不規則性を考慮し、線の意図（ｉｎｔｅｎｔ）に寄与する画素を適切にかつ正確に特定すべきである。
【課題を解決するための手段】
【０００７】
概要
概して、一態様では、本発明は、画像処理のための方法に関する。この方法は、画像からストロークのマスクを取得するステップと、前記マスクと前記マスク上に描画された基準線とに基づいて、前記ストロークの複数の交差エッジを特定するステップと、ここで、前記複数の交差エッジは、前記基準線と交差し隣り合った交差エッジのグループを含み、以下を含む上記グループを拡張するステップと、（ａ）上記グループ内の少なくとも２つの上記交差エッジの位置に基づいて第１のベクトルを計算するステップと、（ｂ）上記第１のベクトルに基づいて、上記基準線と交差せず上記グループに隣接する交差エッジを含むように上記グループを拡張するステップと、以下を含む拡張されたグループを拡張するステップと、（ｃ）上記拡張されたグループ内の上記交差エッジの少なくとも２つの位置に基づいて第２のベクトルを計算するステップと、（ｄ）上記第２のベクトルに基づいて、上記基準ラインと交差せず上記拡張されたグループの近傍の隣り合った交差エッジの第２のグループを含むように上記拡張されたグループを拡張するステップと、を含む。
【０００８】
１つ以上の実施形態では、近くの交差エッジは、上記拡張されたグループに隣接および隣接していない交差エッジを含む。たとえば、１つ以上の実施形態では、ステップ（ｄ）における上記拡張されたグループの近傍の隣り合った交差エッジの第２のグループは、上記第２のグループの長さおよび上記拡張されたグループの長さのうち短い方の長さだけ、上記拡張されたグループから離隔される。さらに、１つ以上の実施形態では、上記グループの長さは、最初の交差エッジの位置から最後の交差エッジの位置までの距離である。
【０００９】
概して、本発明の一態様は、コンピュータープログラムと、該コンピュータープログラムを記憶したコンピューター読み取り可能な記録媒体とに関する。コンピュータープログラムは、コンピューターに上述の方法を実行させるように構成される。コンピュータープログラムのコードは、画像からストロークのマスクを取得し、上記マスクと上記マスクに描画された基準線とに基づいて上記ストロークの複数の交差エッジを特定し、ここで、上記複数の交差エッジは上記基準線と交差し隣り合った交差エッジのグループを含み、（ａ）上記グループ内の少なくとも２つの上記交差エッジの位置に基づいて第１のベクトルを計算し、（ｂ）上記第１のベクトルに基づいて、上記基準線と交差せず上記グループに隣接する交差エッジを含むように上記グループを拡張し、（ｃ）上記拡張されたグループ内の上記交差エッジのうちの少なくとも２つの位置に基づいて第２のベクトルを計算し、（ｄ）上記第２のベクトルに基づいて上記基準線と交差せず上記拡張されたグループの近傍の隣り合った交差エッジの第２のグループを含むように上記拡張されたグループを拡張する。
【００１０】
概して、一態様では、本発明は画像処理システムに関する。画像処理システムは、メモリーと、プロセッサーと、を含み、上記プロセッサーは、画像からストロークのマスクを取得し、上記マスクと上記マスクに描画された基準線とに基づいて上記ストロークの複数の交差エッジを特定し、ここで、上記複数の交差エッジは上記基準線と交差し隣り合った交差エッジのグループを含み、以下によりグループを拡張し、（ａ）上記グループ内の少なくとも２つの上記交差エッジの位置に基づいて第１のベクトルを計算し、（ｂ）上記第１のベクトルに基づいて、上記基準線と交差せず上記グループに隣接する交差エッジを含むように、以下により上記拡張されたグループを拡張する、（ｃ）上記拡張されたグループ内の少なくとも２つの上記交差エッジの位置に基づいて第２のベクトルを計算し、（ｄ）上記第２のベクトルに基づいて上記基準線と交差せず上記拡張されたグループの近傍の隣り合った交差エッジの第２のグループを含むように上記拡張されたグループを拡張する。
【００１１】
本発明の他の態様は、以下の説明および添付の特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００１２】
図面の簡単な説明
【図１】本発明の１つ以上の実施形態によるシステムを示す。
【図２】本発明の１つ以上の実施形態によるフローチャートを示す。
【図３】本発明の１つ以上の実施形態によるフローチャートを示す。
【図４】本発明の１つ以上の実施形態によるフローチャートを示す。
【図５】本発明の１つ以上の実施形態によるストロークを追跡するアルゴリズムを示す。
【図６】本発明の１つ以上の実施形態による実装例を示す。
【図７】本発明の１つ以上の実施形態による実装例を示す。
【図８】本発明の１つ以上の実施形態による実装例を示す。
【図９】本発明の１つ以上の実施形態による線追跡の例を示す。
【図１０】本発明の１つ以上の実施形態による線追跡の例を示す。
【図１１】本発明の１つ以上の実施形態による線追跡の例を示す。
【図１２】本発明の１つ以上の実施形態による線追跡の例を示す。
【図１３】本発明の１つ以上の実施形態による線追跡の例を示す。
【図１４】本発明の１つ以上の実施形態による線追跡の例を示す。
【図１５】本発明の１つ以上の実施形態による線追跡の例を示す。
【図１６】本発明の１つ以上の実施形態による線追跡の例を示す。
【図１７】本発明の１つ以上の実施形態による線追跡の例を示す。
【図１８】本発明の１つ以上の実施形態による線追跡の例を示す。
【図１９】本発明の１つ以上の実施形態による線追跡の例を示す。
【図２０】本発明の１つ以上の実施形態による線追跡の例を示す。
【図２１】本発明の１つ以上の実施形態による線追跡の例を示す。
【図２２】本発明の１つ以上の実施形態による線追跡の例を示す。
【図２３】本発明の１つ以上の実施形態による線追跡の例を示す。
【図２４】本発明の１つ以上の実施形態による線追跡の例を示す。
【図２５】本発明の１つ以上の実施形態による線追跡の例を示す。
【図２６】本発明の１つ以上の実施形態による線追跡の例を示す。
【図２７】本発明の１つ以上の実施形態による線追跡の例を示す。
【図２８】本発明の１つ以上の実施形態による線追跡の例を示す。
【図２９】本発明の１つ以上の実施形態による線追跡の例を示す。
【図３０】本発明の１つ以上の実施形態による線追跡の例を示す。
【図３１】本発明の１つ以上の実施形態によるコンピュータシステムを示す。
【図３２】ライティングボード上の手書きの表を含む画像の一例を示す図である。
【図３３】ライティングボード上の手書きの表を含む画像から得られるマスクの例を示す。
【発明を実施するための形態】
【００１３】
詳細な説明
本発明の特定の実施形態を、添付の図面を参照して詳細に説明する。様々な図における同様の要素は、一貫性のために同様の参照番号で示されている。
【００１４】
本発明の実施形態の以下の詳細な説明では、本発明のより完全な理解を提供するために、多数の特定の詳細が記載されている。しかしながら、当業者には、これらの特定の詳細なしに本発明を実施することができることは明らかであろう。他の例では、説明を不必要に複雑にすることを避けるために、周知の特徴は詳細には記載されていない。
【００１５】
発明の実施形態は、概して、方法、コンピュータープログラム、コンピューター読み取り可能な記録媒体、および画像処理のためのシステム、たとえば表の線を追跡するための処理を提供する。
【００１６】
概して、本発明の１つ以上の実施形態は、線の「意図」に寄与する画素を特定することによって、図３２および図３３を参照して上述したような様々な不規則性を含みうる、手書きの表内のセルの内容を認識することができる。
【００１７】
概して、本発明の１つ以上の実施形態によれば、ハフ線（Ｈｏｕｇｈ  ｌｉｎｅ）は、表の線を追跡するためのガイドとして使用される。ハフ線は、画像内の直線を検出または特定する既知の技術であるハフ線変換（Ｈｏｕｇｈ  ｌｉｎｅ  ｔｒａｎｓｆｏｒｍ）に従って描かれてもよい。ハフ線は、マスクに現れる可能性があるすべての不連続点にわたって線の存在を示す強力な証拠を提供することがある。さらに、ハフ線は、破線のストロークのギャップにまたがる。これにより、個々のダッシュを、異なるセグメントの集合ではなく、単一の線として集めることができる。
【００１８】
本発明の１つ以上の実施形態では、ガイドとしてハフ線を使用することによって、表の線を、直近の画素接続性（ｉｍｍｅｄｉａｔｅ  ｐｉｘｅｌ  ｃｏｎｎｅｃｔｉｖｉｔｙ）を使用して最も近い不連続点まで追跡することができる。線の追加の部分は、ハフ線との他の交差部を追跡し、これらの部分を一緒に併合することによって発見することができる。ハフ線と交差するすべての異種の部分を見つけて併合することによって、その線の意図を高い精度または信頼度で再現することができる。その時点で得られた線についての知識は、ハフ線と交差しない線の追加部分を見つけるために使用されるが、そうでなければ線の意図に適切に適合する。
【００１９】
したがって、本発明の１つ以上の実施形態は、マスクの線が不連続であるか、あるいは品質が悪い場合において、単純な隣接画素検索のような従来の方法と比較して、表の線の意図を見つける可能性を向上させる。さらに、本発明の１つ以上の実施形態は、ダッシュ（ｄａｓｈｅｓ）の間のギャップを横切る線の意図に従うことによって、破線のストロークを有する表の線を特定することができる。様々な他の利点は、本発明の実施形態の以下の詳細からも明らかになるであろう。
【００２０】
最初に、本発明の１つ以上の実施形態によれば、ライティングボード上に描画されたストロークの画像が取得される。次に、画像内のストロークのマスクが得られる。ストロークは、線、表、図表、グラフ、テキスト文字などの一部であってもよい。
【００２１】
次に、ライン・トレーサー（ｌｉｎｅ  ｔｒａｃｅｒ）がストロークを追跡し、ハフ線と交差するストロークに対して複数の「交差エッジ（ｃｒｏｓｓ  ｅｄｇｅｓ）」（すなわち、上記ストロークの方向に垂直な線の画素）を決定する。上記複数の交差エッジは、１つ以上の隣接するエッジのグループに分割されてもよい。１つ以上の実施形態によれば、交差エッジの画素についての情報を記録するために、クラス「クロスエッジ（ＣｒｏｓｓＥｄｇｅ）」が使用される。クロスエッジはまた、エッジの幅および位置（たとえば、中間点）を返す方法を実装してもよい。たとえば、図６に示すような灰色の縦方向ストリップは、水平ラインのマスク内の１つの画素に対する単一のクロスエッジを表す。
【００２２】
さらに、クラス「クロスエッジセット（ＣｒｏｓｓＥｄｇｅＳｅｔ）」として、一連の交差エッジが生成されうる。１つ以上の実施形態によれば、クロスエッジセットは、セット内の全ての交差エッジに関する現在知られている追加情報（たとえば、ラインの向き、交差エッジの数、最小幅と最大幅、ストロークのすべての交差エッジの幅のヒストグラム、モード幅など）と併せて、ゼロまたは複数のクロスエッジの集合である。たとえば、図７は、５つの交差エッジを含むクロスエッジセットを示し、図８は、これらの交差エッジに関するいくつかの「追加情報」を示す。
【００２３】
次に、クラス  ローライン（ＲａｗＬｉｎｅ）が定義される。１つ以上の実施形態によれば、ローラインは、表の線の意図を表すクロスエッジセットである。ローラインは、線の信頼度、最小および最大の幅、交差部のリストなどの追加情報を記録することができる。
【００２４】
ハフ線と交差するすべての交差エッジを保持する初期クロスエッジセットが確立されると、上記初期クロスエッジセット内の隣接する交差エッジのグループは、上記線の幅に対する最大許容値および上記グループ（以下でより詳細に説明する）内の交差エッジの位置によって定義されるベクトルを使用して、ハフ線が描かれる方向に拡張され得る。この拡張は、ハフ線と交差しないグループに隣接するエッジを探す。拡張されたグループ（すなわち、一連の既存および追加の交差エッジ）がローラインに追加されうる。本発明の１つ以上の実施形態では、初期クロスエッジセット内の２つ以上の交差エッジのグループがそれぞれ拡張され、ローラインに追加されうる。
【００２５】
全てのグループが拡張され、ローラインに追加されるとき、ローライン全体は、最大幅許容（ｍａｘｉｍｕｍ  ｗｉｄｔｈ  ｔｏｌｅｒａｎｃｅ）およびベクトルを使用して、いずれかの端で再び同様の方法で拡張される。この第２の拡張は、初期グループに隣接していないが、ストロークの意図を完全にする近くの交差エッジを探す。
【００２６】
次に、最大幅許容値と、２つの隣接するグループの少なくとも２つの交差エッジの位置とに基づいて、ローライン内の２つの隣接するグループを分離するギャップが特定されうる。ギャップに対応する交差エッジがローラインに追加されうる。さらに、線内の穴は、最大幅許容値に基づいて特定されうる。上記穴に対応するローラインの上記交差エッジは、上記線内の上記穴に架かる橋となる、新たに特定された交差エッジに基づいて更新されてもよい。さらに、表の線の交点におけるローラインの交差エッジは、上記最大幅許容値に基づいて更新されうる。上記の手順により、１つ以上の実施形態によるローラインは、元の線の意図を反映する表の線を示す。
【００２７】
次に図１を参照する。本発明の１つ以上の実施形態によるシステム（１００）は、バッファー（１１０）、マスキングエンジン（１２０）、分析エンジン（１３０）、および追跡エンジン（１４０）を含む。これらのコンポーネント（１１０，１２０，１３０，１４０）の各々は、同じコンピューティングデバイス（たとえばパーソナルコンピューター（ＰＣ）、ラップトップ、タブレットＰＣ、スマートフォン、サーバー、メインフレーム、ケーブルボックス（ｃａｂｌｅ  ｂｏｘ）、キオスクなど）、あるいは有線および／または無線セグメントを有する任意のサイズおよび任意のトポロジのネットワークによって接続された異なるコンピューティングデバイス上に配置されうる。
【００２８】
本発明の１つ以上の実施形態では、システム（１００）はバッファー（１１０）を含む。バッファー（１１０）は、ハードウェア（すなわち、回路）、ソフトウェア、またはそれらの任意の組み合わせで実施されうる。バッファー（１１０）は、任意のサイズまたはタイプ（たとえば、メモリー、ハードドライブなど）であってもよい。バッファー（１１０）は、画像からのストロークのマスク（１１２）と、交差エッジ（ストローク方向に垂直な線の画素）を記録するクロスエッジ（１１４）と、一群の交差エッジとしてのクロスエッジセット（１１６）と、線の追跡の結果としてローライン（１１８）とを格納する。
【００２９】
画像は、ライティングボードを含むことができ、ストロークは、ライティングボード上の連続的なペンマーキングに対応しうる。マスク（１１２）は、ライティングボードを撮り込んでいる（ｃａｐｔｕｒｉｎｇ）画像に閾値処理を適用することによって生成された２値画像と考えることができる。閾値処理の結果として、ストロークの不規則性が捕捉されうる。ストロークは、マスク（１１２）内の白画素を用いて表すことができ、一方、マスク（１１２）内の他の全ては黒画素を用いて表すことができる。マスク（１１２）は、画像の全部または一部のみに対応しうる。マスク（１１２）は、システム内で生成されてもよいし、任意のソースから取得（たとえば、ダウンロード）されてもよい。さらに、マスク（１１２）は、任意のサイズおよび任意のフォーマットでありうる。
【００３０】
本発明の１つ以上の実施形態において、システム（１００）は、マスキングエンジン（１２０）を含む。マスキングエンジン（１２０）は、ハードウェア（すなわち、回路）、ソフトウェア、またはそれらの任意の組み合わせで実施されうる。マスキングエンジン（１２０）は、ライティングボードを撮り込んでいる画像を読み取り、当該画像に閾値処理を適用して、二値画像をマスク（１１２）として取得できる。マスクエンジン（１２０）は、取得されたマスク（１１２）をバッファー（１１０）に格納できる。
【００３１】
本発明の１つ以上の実施形態では、システム（１００）は分析エンジン（１３０）を含む。分析エンジン（１３０）は、ハードウェア（すなわち、回路）、ソフトウェア、またはそれらの任意の組み合わせで実施されうる。分析エンジン（１３０）は、マスク（１１２）の画素を読み取り、マスクにおけるオフ画素に遭遇するまでストロークの方向に垂直な正および負の方向に走査することによって、上記ストローク内の複数の交差エッジを特定することができる。本発明の１つ以上の実施形態では、分析エンジン（１３０）は、マスク上に描画された基準線と交差する交差エッジを特定できる。上述したように、基準線はハフ線でありうる。上述のように、クラス  クロスエッジを使用して、単一の交差エッジの画素に関する情報を記録し、その幅を戻すための方法を実装することができる。クロスエッジはまた、その位置（たとえば、中間点）を返す方法を実装してもよい。図６は、水平ラインのマスク内の１つの画素に対する単一の交差エッジを表すグレーの垂直ストリップ（ｖｅｒｔｉｃａｌ  ｓｔｒｉｐ）を示す。この例では、クロスエッジは１２画素を記録し、ゆえに１２の幅を返す。
【００３２】
分析エンジン（１３０）は、すべての画素を走査した後、クロスエッジ（１１４）に基づいてクロスエッジセット（１１６）を生成できる。上述のように、クロスエッジセットは、セット内の交差エッジに関する追加情報を含むことができる。図８は、図７に示すような５つの交差エッジを含むクロスエッジセットに関するそのような追加情報の一例を示す。「向き」は、ストロークの向き（たとえば、水平または垂直）を表す。「ｎｕｍ＿ｅｄｇｅｓ」は交差エッジの数を表し、「ｗｉｄｔｈ＿ｍｉｎ」は交差エッジの最小幅を表し、「ｗｉｄｔｈ＿ｍａｘ」は交差エッジの最大幅を表し、「幅モード」は幅のモードを表す。「ｍｏｄｅ＿ｃｏｕｎｔ」はモード幅のカウントを表し、「ｗｉｄｔｈ＿ｍｅａｎ」は幅の平均を表し、「ヒストグラム」は、すべての幅およびその頻度を含むデータ構造を表す。「ｂｅｇ」と「ｅｎｄ」はクロスエッジセットの範囲を表す。「ｐｒｏｂａｂｌｅ＿ｌｉｎｅ＿ｗｉｄｔｈ＿ｍｉｎ」および「ｐｒｏｂａｂｌｅ＿ｌｉｎｅ＿ｗｉｄｔｈ＿ｍａｘ」は交差エッジの最も可能性のある最小および最大幅を表す。
【００３３】
図７に示す例では、２つの交差エッジが幅「１１」および３つの交差エッジが「１２」を有する。この場合、分析エンジン（１３０）は、図８における「ヒストグラム」として示されるデータ構造「１１［２］１２［３］」を生成する。追加情報は、交差エッジがクロスエッジセット（１１６）に追加または削除されるたびに更新されてもよい。
【００３４】
本発明の１つ以上の実施形態では、クロスエッジセットのクラスの次のメソッド、WidthTolerances()、ClosestGoodEdge()、およびTrailingMomentum()を使用することができる。
【００３５】
WidthTolerances()は、クロスエッジセットに潜在的に属する交差エッジの幅に対する最小および最大許容値を設定する。上記許容は、最初に、特定された交差エッジの最小幅（probable_line_width_min）から最大幅（probable_line_width_max）までスパンを計算することによって計算される。最大許容値は、スパンの半分と最大幅の合計でありうる。最小許容値は、最小幅からスパンの半分を引いたものでありうる。
【００３６】
ClosestGoodEdge()は、指定された交差エッジを入力として受け取り、クロスエッジセットのWidthTolerances()によって計算された許容値内にある入力交差エッジに最も近い交差エッジを見つける。これにより、信頼できるデータを使用して線についての判定を行うことができる。
【００３７】
TrailingMomentum（）は、一端部において一連の交差エッジ（またはクロスエッジセット）のモーメンタム（ｍｏｍｅｎｔｕｍ）を特定するベクトルを取得する。上記モーメンタムは、クロスエッジセットのトレーリング交差エッジ（ｔｒａｉｌｉｎｇ  ｃｒｏｓｓ  ｅｄｇｅ）と終端交差エッジ（ｔｅｒｍｉｎａｌ  ｃｒｏｓｓ  ｅｄｇｅ）の中点間のベクトルを見つけることによって計算される。トレーリング交差エッジは、終端交差エッジからＮエッジの交差エッジからClosestGoodEdge（）によって「最も近い良好エッジ」を探すことによって見つけられる。終端交差エッジからClosestGoodEdge（）によって最も近い良好なエッジを探すことで、終端交差エッジが見つけられる。Ｎはパラメータであり、たとえば２０に設定されうる。
【００３８】
本発明の１つ以上の実施形態において、システム（１００）は、追跡エンジン（１４０）を含む。追跡エンジン（１４０）は、ハードウェア（すなわち、回路）、ソフトウェア、またはそれらの任意の組み合わせで実施されうる。追跡エンジン（１４０）は、ローライン（１１８）を作成し、分析エンジン（１３０）によって生成されたクロスエッジセット（１１６）に基づいてインスタンスを修正するように構成される。
【００３９】
本発明の１つ以上の実施形態では、追跡エンジン（１４０）は、隣接する少なくとも２つの交差エッジの位置から計算された第１のベクトルに基づいて、クロスエッジセット（１１６）内の１つ以上の隣接する交差エッジを含むグループを拡張できる。この最初の拡張では、グループ内のエッジに隣接するが、基準線と交差しない交差エッジを探す。拡張されたグループは、ローライン（１１８）に格納される。本発明の１つ以上の実施形態では、一旦すべてのグループが拡張されてローラインに格納されると、追跡エンジン（１４０）は、ローライン（１１８）に含まれる少なくとも２つの交差エッジの位置から計算された第２のベクトルに基づいてローライン（１１８）を拡張しうる。この第２の拡張は、最初のグループに隣接していないが近くにあり、ストロークの意図に従うエッジを探す。
【００４０】
本発明の１つ以上の実施形態では、第１のベクトルは、すくなくとも（ｉ）最小および最大許容値の間の幅を有し、グループの端部で交差エッジに最も近接した交差エッジの位置と、（ｉｉ）最小および最大許容値との間の幅を有し、上記端部において交差エッジから所定の距離だけ離れた上記交差エッジの位置とから算出されうる。本発明の１つ以上の実施形態では、第２のベクトルは、少なくとも（ｉ）最小および最大許容値の間の幅を有し、ローライン（１１８）の端部において交差エッジに最も近接した交差エッジの位置と、（ｉｉ）最小および最大許容値との間の幅を有し、ローライン（１１８）の上記端部において交差エッジから所定の距離だけ離れた上記交差エッジの位置とから算出できる。上で述べたように、最小と最大許容値はWidthTolerances（）メソッドで取得でき、第１と第２のベクトルはTrailingMomentum（）メソッドで取得できる。
【００４１】
本発明の１つ以上の実施形態では、追跡エンジン（１４０）は、ストロークの幅の最大許容値に基づいて、表の線の交差部に対応するローライン（１１８）に含まれる１つ以上の交差エッジを更新できる。
【００４２】
本発明の１つ以上の実施形態では、追跡エンジン（１４０）は、最大許容値および２つの近隣のグループの少なくとも２つの交差エッジの位置に基づいて、ローライン（１１８）内の上記２つの隣接するグループ間のギャップを特定できる。上記２つの隣接するグループの各々は、複数の交差エッジの隣接する交差エッジを含む。追跡エンジン（１４０）は、特定されたギャップに対応する任意の交差エッジをローライン（１１８）に追加できる。
【００４３】
本発明の１つ以上の実施形態では、追跡エンジン（１４０）は、最大幅許容値に基づいて、ストロークの穴に対応するローライン（１１８）の交差エッジを特定できる。続いて、追跡エンジン（１４０）は、上記穴に対応する追加の交差エッジを特定し、追加の交差エッジでローライン（１１８）を更新できる。
【００４４】
本発明の１つ以上の実施形態では、追跡エンジン（１４０）は、基準線と交差する１つ以上の隣接する交差エッジをそれぞれ含む１つ以上のグループを拡張できる。その場合、追跡エンジンは、最大のグループ（すなわち、連続する交差エッジの数が最も多いグループ）を特定し、最初に上記最大のグループを拡張できる。その後、追跡エンジン（１４０）は、上記拡張された最大グループと別の拡張グループをローライン（１１８）に併合できる。
【００４５】
本発明の１つ以上の実施形態では、追跡エンジン（１４０）は、基準線（すなわち、ハフ線）が描かれる方向に交差エッジ群を拡張できる。
【００４６】
図１は、４つの構成要素（１１０，１２０，１３０，１４０）を有するシステム（１００）を示しているが、システム（１００）は、より多くの構成要素またはより少ない構成要素を有しうる。たとえば、システム（１００）は、マスク（１１２）が生成されるライティングボードの画像を取り込むために、デジタルカメラを備えたスキャナまたはスマートフォンを含みうる。別の例として、システム（１００）は、マスク（１１２）上のコンテンツ（たとえば、テキスト文字）を抽出するためにマスク（１１２）上に追加の画像処理（たとえば、ＯＣＲ）を実行する追加のエンジンを含みうる。
【００４７】
図２は、本発明の１つ以上の実施形態によるフローチャートを示す。上記フローチャートは、画像処理のための処理を示す。図２における１以上のステップは、図１を参照して上述したシステム（１００）のコンポーネント（１１０，１２０，１３０，１４０）によって実行されうる。本発明の１つ以上の実施形態では、図２に示した１以上のステップは、省略、繰り返し、および／または図２に示す順序とは異なる順序で実行されうる。したがって、本発明の範囲は、図２に示されるステップの特定の配列に限定されるとみなされるべきではない。
【００４８】
まず、マスキングエンジン（１２０）は、ライティングボードを撮影した画像を読み取る（ステップ２０５）。画像は、ライティングボード上の手書きの表のストロークを含みうる。画像は任意のサイズまたはフォーマットのものでありうる。画像は、システム（１００）の外部から取得できる。あるいは、画像は、システム（１００）のメモリーに予め記憶されていてもよい。
【００４９】
ステップ２１０において、マスキングエンジン（１２０）は、上記画像からマスク（１１２）を取得または生成する。上記マスクは、任意のサイズまたはフォーマットのものでありうる。上記マスクは画像全体に対応してもよいし、画像の一部分にのみ対応してもよい。マスクエンジン（１２０）は、マスク（１１２）をバッファー（１１０）に格納できる。
【００５０】
ステップ２１５において、分析エンジン（１３０）は、ストロークの方向に垂直な正および負の方向に走査することによってマスク上の複数の交差エッジを特定する。分析エンジン（１３０）は、上記マスク上に描画されたハフ線と交差する交差エッジを特定できる。分析エンジン（１３０）は、クロスエッジ（１１４）を使用して、幅および位置情報を含む交差エッジ画素を記録することができる。分析エンジン（１３０）は、クロスエッジ（１１４）をバッファー（１１０）に格納できる。
【００５１】
ステップ２２０において、分析エンジン（１３０）は、上記特定された交差エッジに関する追加情報を含む、ストロークに対して見つけられた一連の全ての交差エッジを記憶する初期クロスエッジセット（１１６）を生成する。分析エンジン（１３０）は、クロスエッジセット（１１６）をバッファー（１１０）に格納できる。初期クロスエッジセット（１１６）は、ハフ線と交差するすべての交差エッジを特定し、隣接するエッジの１つ以上のグループに分割されうる。
【００５２】
ステップ２２５において、追跡エンジン（１４０）は、上記グループ内の少なくとも２つの交差エッジの位置に基づいて、初期クロスエッジセット内の隣接エッジのグループのための第１のベクトルを計算する。上述したように、第１のベクトルは、グループの端部に含まれる交差エッジのモーメンタムを識別するベクトルでありうる。
【００５３】
ステップ２３０において、追跡エンジン（１４０）は、上記第１のベクトルに基づいて、初期クロスエッジセット（１１６）内の隣接エッジのグループを拡張する。上記グループは、以下に説明する例に示すように、ハフ線と交差しない可能性がある、上記グループに隣接する交差エッジを含むように拡張される。追跡エンジン（１４０）は、各々拡張されたグループをローライン（１１８）に追加できる。ステップ２２５および２３０は、初期クロスエッジセット（１１６）内の隣接する交差エッジを含む追加のグループについて繰り返されてもよい。
【００５４】
ステップ２３５において、追跡エンジン（１４０）は、ローライン（１１８）内の少なくとも２つの交差エッジの位置に基づいて第２のベクトルを計算する。上述したように、上記第２のベクトルは、端部においてローライン（１１８）の交差エッジのモーメンタムを特定するベクトルでありうる。
【００５５】
ステップ２４０において、追跡エンジン（１４０）は、ローライン（１１８）に含まれる少なくとも２つの交差エッジの位置から計算された第２のベクトルに基づいてローライン（１１８）を拡張する。この拡張は、ストロークの意図を完成させる近くのエッジを探す。追跡エンジン（１４０）は、上記拡張されたローライン（１１８）をバッファー（１１０）に格納できる。ステップ２３５および２４０は、可能な限り多くの近隣エッジを見つけるために繰り返し実行できる。近くのエッジを見つけるアルゴリズムの詳細については後述する。
【００５６】
ステップ２４５において、追跡エンジン（１４０）は、ローライン（１１８）における交差エッジの２つの隣接するグループ間のギャップを充填する。このステップは、図３に示すように、複数のステップに分割されうる。ステップ３０５において、追跡エンジン（１４０）は、最大幅許容値および上記２つの隣接するグループの少なくとも２つの交差エッジの位置に基づいて、それぞれが１つ以上の隣接する交差エッジを含むローライン（１１８）内の上記２つの隣接するグループを分離するギャップを特定する。続いて、ステップ３１０において、追跡エンジン（１４０）は、特定されたギャップに対応する任意の交差エッジをローライン（１１８）に追加する。ステップ２４５は、他の隣接するグループ間のギャップを充填するために繰り返し実行されてもよい。
【００５７】
ステップ２５０では、追跡エンジン（１４０）は、ローライン（１１８）内のストローク（または線）内の穴を満たす。このステップは、図４に示すように、複数のステップに分割されうる。ステップ４０５において、追跡エンジン（１４０）は、上記線の上記穴に対応するローライン（１１８）の交差エッジを、最大幅許容値に基づいて特定する。ステップ４１０において、追跡エンジン（１４０）は、上記穴の反対側の追加の交差エッジを特定する。ステップ４１５において、追跡エンジン（１４０）は、上記追加の交差エッジでローライン（１１８）の特定された交差エッジを更新する。ステップ２５０は、ローライン（１１８）内のストロークの内側にある他の穴を充填するために繰り返し実行されうる。
【００５８】
最後に、ステップ２５５において、追跡エンジン（１４０）は、上記ストロークの幅の最大許容値に基づいて、上記ストロークの交差部に対応するローライン（１１８）の１つ以上の交差エッジを更新する。
【００５９】
図５は、本発明の１つ以上実施形態による手描きの表の線を追跡するためのアルゴリズムの例を示す。視覚的な例を示す図５、図９〜３０を参照して、分析エンジン（１３０）および追跡エンジン（１４０）によって実行されるアルゴリズムの詳細を以下に説明する。この例では、図９に示すマスクは、マスクエンジン（１２０）によって取得され、バッファー（１１０）に格納されている。図に示すように、入力には破損個所や亀裂などの不規則性がある。
【００６０】
１つ以上の実施形態によるアルゴリズムの最初のステップでは、分析エンジン（１３０）は、図１０（０１行）に示すように、マスク（１１２）上に描画されたハフ線Ｌに基づいて、ハフ線クロスエッジセットを構築する。具体的には、分析エンジン（１３０）は、ハフ線Ｌを基準線として交差するストロークのすべての交差エッジを特定する（図１１のグレー領域として示される）。その後、分析エンジン（１３０）は、特定された交差エッジに対応するクロスエッジ（１１４）のインスタンスを作成し、クロスエッジ（１１４）を含むクロスエッジセット（１１６）を作成する。
【００６１】
０２行において、追跡エンジン（１４０）は、ローライン（１１８）を、ハフ線クロスエッジセット（１１６）における最大の集合または接続された（隣接する）エッジ群に初期化する。上記のように、ローライン（１１８）は、表の線の意図を表すクロスエッジセットである。この例は、交差エッジの６つのグループ（すなわち、クロスエッジセット（１１６）内のグループＧ１〜Ｇ６）を含み、Ｇ１は、交差エッジの最大数を有する最大グループである。このようにして、ローライン（１１８）は、図１２に示すように、グループＧ１を含むように初期化される。
【００６２】
０３行において、追跡エンジン（１４０）は、TrailingMomentum()を使用して、いずれかの方向にローライン（１１８）のエッジを拡張する。追跡エンジン（１４０）は、両端において線のTrailingMomentum()を計算し、モーメンタムベクトルに沿って見つけられる追加の隣接する交差エッジを探す。追跡エンジン（１４０）は、現在のエッジから最大Ｎ画素離れた交差エッジを探索できる。この例では、Ｎは１に等しいが、他の任意の値を使用できる。最大グループＧ１の拡張後、拡張グループＧ１’を含むローライン（１１８）は、図１３に示すように成長する。
【００６３】
０４行において、追跡エンジン（１４０）は、ハフ線クロスエッジセット（１１６）からローライン（すなわち、グループＧ１’）の新たに拡張されたエッジを差し引く。これは、追跡エンジン（１４０）が残ったものにのみに集中するように、ハフ線クロスエッジセット（１１６）から発見された交差エッジを除去する。図１４は、残りのグループ（すなわち、ハフ線クロスエッジセット（１１６）内のグループＧ２〜Ｇ６）を示す。
【００６４】
０５行では、ハフ線クロスエッジセット（１１６）がまだ交差エッジを有するか否かが判定される。ＹＥＳの場合は、０６行から１０行が繰り返される。ここでは、クロスエッジセット（１１６）内に５つのグループが残っているので、処理はループに入る。
【００６５】
０６行において、追跡エンジン（１４０）は、既存のローライン（１１８）へのハフ線クロスエッジセット（１１６）内の連続交差エッジの最も近いグループを見つける。ここで、追跡エンジン（１４０）は、グループＧ１’を含む現在のローライン（１１８）にクロスエッジセット（１１６）内の最も近いグループであるグループＧ２を見つけることができる。グループＧ２が図１５に示される。
【００６６】
０７行では、追跡エンジン（１４０）は、０３行と同じ方法で最も近いグループをいずれかの方向に拡張する。その結果、グループＧ２は、図１６に示すようにグループＧ２’に拡張される。
【００６７】
０８行では、上記拡張された最も近いグループと上記既存のローライン（１１８）とを併合できるかどうかが判定される。０９行において、上記拡張された最も近いグループおよび上記既存のローライン（１１８）が併合されうると判定された場合、追跡エンジン（１４０）は、上記拡張された最も近いグループを上記ローライン（１１８）に併合する。ここで、追跡エンジン（１４０）は、２つの交差エッジ（すなわち、グループＧ１’およびＧ２’）のセットを比較し、両者を併合可能であると決定できる。追跡エンジン（１４０）は、上記交差エッジを併合し、それらをローライン（１１８）として保存することができる。図１７は、併合されたローライン（１１８）を示す。
【００６８】
１０行において、追跡エンジン（１４０）は、上記拡張された最も近いグループをハフ線クロスエッジセット（１１６）から差し引く。ここで、図１８に示すように、グループＧ２’は、クロスエッジセット（１１６）から差し引かれる。
【００６９】
次に、処理は０５行に戻り、ハフ線クロスエッジセット（１１６）が空になるまでループを繰り返す。この例では、交差エッジの４つのグループＧ３−Ｇ６が、ハフ線クロスエッジセット（１１６）に依然として残っている。したがって、処理はループを繰り返す。
【００７０】
図１９（０６行）に示すように、ここで、グループＧ３は、既存のローライン（１１８）に対して、連続するハフ線クロスエッジの最も近いグループとして位置付けられる。次に、追跡エンジン（１４０）は、いずれかの方向にグループＧ３を拡張しようとする（０７行）。しかし、この場合、グループの両端における交差エッジの中央からのモーメンタムに追従しても追加の交差エッジが発見されないので、追跡エンジン（１４０）は追加のエッジを見つけない。続いて、追跡エンジン（１４０）は、最も近いグループと既存のローラインとを併合できるどうかを判定しうる（０８行）が、併合が不可能であると判定する。最後に、図２０に示すように、追跡エンジン（１４０）は、ハフ線クロスエッジセット（１１６）からグループＧ３を差し引く（１０行）。
【００７１】
この処理は、ハフ線クロスエッジセットのエッジがなくなるまで、ループ内で継続する。この例では、ローライン（１１８）は図２１に示すように成長する。
【００７２】
この時点までに構築されたローライン（１１８）は、ハフ線Ｌおよびその隣接する近傍と交差するクロスエッジに基づいているので、現在のローライン（１１８）のスパンが実際に線の意図に従う合理的な確実性がある。次の段階で、アルゴリズムは可能な限り両端においてローライン（１１８）を拡張することにより、マスク内のより多くのクロスエッジを見つけることを試みる（１１行）。
【００７３】
１２〜１３行において、追跡エンジン（１４０）は、メソッドClosestGoodEdge()およびTrailingMomentum()を使用して、線の端部における最も近く良好なエッジの中間点と、上記端部におけるトレーリングモーメントとを計算する。続いて、追跡エンジン（１４０）は、中間点がマスクの境界内にある間、１５〜２２行で計算を繰り返す。
【００７４】
１５行において、追跡エンジン（１４０）は、モーメンタムの方向に沿って１画素だけ中間点をインクリメントする。１６行において、追跡エンジン（１４０）は、現在の中間点においてローライン（１１８）の一部ではないクロスエッジを探す。１７行では、クロスエッジが見つかったかどうかが判定される。そうであれば、１８行で、追跡エンジン（１４０）は、クロスエッジを新しいクロスエッジセットに追加し、上記の０３行と同様の方法でいずれかの方向に拡張する。１９行では、拡張された新しいクロスエッジセットと既存のローライン（１１８）が併合されうるかどうかが判定される。そうであれば、２０〜２２行で、追跡エンジン（１４０）は、拡張された最も近いグループをローライン（１１８）に併合し、ClosestGoodEdge()の中間点をローライン（１１８）の新しい端部に対して計算し、上記端部におけるTrailingMomentum（）を計算する。１５〜２２行での計算は、中間点がマスク（１１２）の境界内にある間に繰り返される。
【００７５】
図２１に示すように、左端部Ｅ１には余裕がないが、右端部Ｅ２においてより多くのエッジを取り出すことができる。したがって、追跡エンジン（１４０）は、線の右端でTrailingMomentum()を計算し、その後、図２２に示すように、追加のエッジを探すWidthTolerances()の上限の幅を掃引するベクトルに従う。追跡エンジン（１４０）が第１のクロスエッジを見つけ出すと、追跡エンジン（１４０）は、これを新たなクロスエッジセットに追加し、クロスエッジセットは、セグメントのTrailingMomentum()を使用し、Ｎ画素離れたエッジを探していずれかの方向に再び拡張される。追跡エンジン（１４０）は、ローライン（１１８）と新たに発見されたクロスエッジセットとが併合可能であるかどうかを判定できる。図２３は、ローラインの右端が拡張された結果の一例を示す。
【００７６】
図２４および２６に示すように、追跡エンジン（１４０）がローライン（１１８）のエッジを可能な限り拡張した後、追跡エンジン（１４０）はローライン（１１８）の内部に焦点を合わせ、ローライン（１１８）のギャップおよび穴を埋めようとする。追跡エンジン（１４０）は、ローライン（１１８）の一方の端部から他の端部（以下では可能なすべての交差エッジＣと呼ぶ）へ交差エッジを走査して、ギャップまたは穴を充填するために探す（２３〜３４行）。
【００７７】
図２４に示すように、２５〜３０行において、追跡エンジン（１４０）は、ライン内のギャップを充填する。追跡エンジン（１４０）が線内にギャップを見つけた場合、追跡エンジン（１４０）は、WidthTolerances()によって計算された最大許容値に等しい高さを有し、ギャップの２つの端の中間点の間の線上にセンタリングされたウィンドウＷ内の交差エッジを調査する。追跡エンジン（１４０）は、上記ウィンドウ内で見つかったエッジをローライン（１１８）に追加できる。
【００７８】
２５行において、ローラインがＣでクロスエッジを欠いているかどうかが判定される。そうであれば、２６行において、追跡エンジン（１４０）は、空でないクロスエッジを見つけるまで探索を続ける。この操作は、１つ以上の交差エッジのギャップＧを特定できる。２７行では、追跡エンジン（１４０）は、Ｇの両側でClosestGoodEdge()を見つけることができる（以下、クロスエッジＰおよびＱと呼ぶ）。２８行では、追跡エンジン（１４０）は、Ｐの中点からＱの中点に向かう線Ｍを描画する。次に、２９行で、追跡エンジン（１４０）は、WidthTolerances()の上限に対応する幅を有するＭを中心としたウィンドウを使用し、Ｍから外側に漸進的に移動しつつ、Ｍに沿ってクロスエッジを探索する。最後に、３０行において、クロスエッジが見つかったかどうかが判定され、そうであれば、追跡エンジン（１４０）は、ローライン（１１８）にクロスエッジを追加する。図２５は、この充填作業の結果を示す（２５〜３０行）。
【００７９】
追跡エンジン（１４０）は、すでにエッジを有するローライン（１１８）の領域に対する追加のエッジを見つけることができる。図２６に示すように、これは、ライン内に穴Ｈがある場合に起こり得る。この領域の幅は、予想される線の幅よりも狭いので、この領域は、線を完成させる可能性のある追加のエッジについて、両側で走査される。新しいクロスエッジは、WidthTolerances()の最大許容値に等しい幅まで、ローライン（１１８）内の既存のエッジと併合される。
【００８０】
３１行では、ローライン（１１８）がＣにおいてクロスエッジを有し、当該クロスエッジの幅がWidthTolerances()の上限よりも小さいかどうかが判定される。そうであれば、３２行において、追跡エンジン（１４０）は、クロスエッジの幅をWidthTolerances()の最大許容値から差し引いた予想画素数Ｅを計算する。３３行において、追跡エンジン（１４０）は、両端Ｅ画素からクロスエッジに沿って走査して、追加のクロスエッジを探す。３４行では、追加のクロスエッジが見つけられ、２つのクロスエッジの結合の幅がWidthTolerances()の上限よりも小さいかどうかが判定される。そうであれば、追跡エンジン（１４０）は上記クロスエッジを上記結合に置き換える。図２７にこの交換操作の結果を示す（３１〜３４行）。
【００８１】
図２８に示すように、３５〜３８行において、追跡エンジン（１４０）は、他のラインとの交差部になっている可能性があるローライン（１１８）のクロスエッジを更新する。追跡エンジン（１４０）は、WidthTolerances()を超える、ローライン（１１８）内のエッジのグループを探すことによって、そのようなクロスエッジを見つけることができる。
【００８２】
３７行において、追跡エンジン（１４０）は、交差部を突き止める。上記交差部は、幅が著しく変化する線の領域であり、表の別の線が重なるローライン（１１８）の領域でありうる。３８行では、交差部があるかどうかが判定される。そうである場合、追跡エンジン（１４０）は、交差部に対応する交差エッジをローライン（１１８）から除去し、上記交差部を通して補間された一連のクロスエッジを追加する。図２９にこの操作の結果を示す。交差部に対応するローライン（１１８）のクロスエッジは、隣接するクロスエッジの幅を有する新しいクロスエッジで更新される。この処理は、ローライン（１１８）内にあるすべての交差部について繰り返される。図３０は、処理が完了したときの結果を示す。
【００８３】
本発明の実施形態は、使用されているプラットフォームにかかわらず、実際上あらゆるタイプのコンピューティングシステム上で実施できる。たとえば、コンピューティングシステムは、１つ以上のモバイルデバイス（たとえば、ラップトップコンピューター、スマートフォン、パーソナルデジタルアシスタント、タブレットコンピューター、または他のモバイルデバイス）、デスクトップコンピューター、サーバー、サーバシャーシ内のブレード、または本発明の１つ以上の実施形態を実行するために少なくとも最小処理能力、メモリー、および入力出力デバイスを含む任意の他のタイプの１つ以上のコンピューティングデバイスでありうる。たとえば、図３１に示すように、コンピューティングシステム（５００）は、１つ以上のコンピュータープロセッサー（５０２）、関連メモリー（５０４）（たとえば、ランダムアクセスメモリー（ＲＡＭ）、キャッシュメモリー、フラッシュメモリーなど）、１つ以上の記憶装置（５０６）（たとえば、ハードディスク、コンパクトディスク（ＣＤ）ドライブまたはデジタルバーサタイルディスク（ＤＶＤ）ドライブ、フラッシュメモリースティックなどの光学ドライブ）および他の多数の要素および機能性を有する。コンピュータープロセッサー（５０２）は、命令を処理するための集積回路でありうる。たとえば、コンピュータープロセッサーは、１つ以上のコア、またはプロセッサーのマイクロコアでありうる。コンピューティングシステム（５００）は、また、タッチスクリーン、キーボード、マウス、マイクロフォン、タッチパッド、電子ペン、または任意の他のタイプの入力デバイスなどの１つ以上の入力デバイス（５１０）を含むことができる。さらに、コンピューティングシステム（５００）は、スクリーン（たとえば、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイ、タッチスクリーン、陰極線管（ＣＲＴ）モニター、プロジェクター、または他の表示装置）、プリンター、外部記憶装置、または任意の他の出力装置などの１つ以上の出力デバイス（５０８）を含むことができる。上記１つ以上の出力装置は、入力装置と同じであっても異なっていてもよい。コンピューティングシステム（５００）は、ネットワークインターフェース接続（図示せず）を通じて、ネットワーク（５１２）（たとえば、ローカルエリアネットワーク（ＬＡＮ）、インターネットなどのワイドエリアネットワーク（ＷＡＮ）、モバイルネットワーク、または任意の他のタイプのネットワーク）に接続されうる。入力および出力デバイスは、局所的または遠隔的（たとえば、ネットワーク（５１２）を介して）にコンピュータープロセッサー（５０２）、メモリー（５０４）、および記憶装置（５０６）に接続されうる。多くの異なるタイプのコンピューティングシステムが存在し、前述の入力デバイスおよび出力デバイスは、他の形態をとってもよい。
【００８４】
本発明の実施形態を実行するためのコンピューター読み取り可能なプログラムコードの形態のソフトウェア命令は、その全体または一部が、一時的にまたは永続的に、ＣＤ、ＤＶＤ、記憶装置、ディスケット、テープ、フラッシュメモリー、物理メモリー、または任意の他のコンピューター読み取り可能な記憶媒体などのコンピューター読み取り可能な記録媒体に格納されうる。具体的には、ソフトウェア命令は、プロセッサーによって実行されるとき、本発明の実施形態を実行するように構成されたコンピューター読み取り可能なプログラムコードに対応することができる。
【００８５】
さらに、前述のコンピューティングシステム（５００）の１つ以上の要素は、遠隔地に配置され、ネットワーク（５１２）を介して他の要素に接続されうる。さらに、本発明の１つ以上の実施形態は、複数のノードを有する分散システム上で実施することができ、本発明の各部分は、分散システム内の異なるノード上に配置することができる。本発明の一実施形態では、ノードは、別個のコンピューティングデバイスに対応する。あるいは、ノードは、関連する物理メモリーを有するコンピュータープロセッサーに対応してもよい。あるいは、ノードは、コンピュータープロセッサー、もしくは共用のメモリーおよび／またはリソースを有するコンピュータープロセッサーのマイクロコアに対応してもよい。
【００８６】
本発明は限られた数の実施形態に関して記載されているが、本開示の利益を有する当業者は、ここに開示された本発明の範囲から逸脱しない他の実施形態が考案され得ることを理解するであろう。したがって、本発明の範囲は、添付の特許請求の範囲によってのみ限定されるべきである。
【図１】
2017215946.tif 000003
【図２】
2017215946.tif 000004
【図３】
2017215946.tif 000005
【図４】
2017215946.tif 000006
【図５】
2017215946.tif 000007
【図６】
2017215946.tif 000008
【図７】
2017215946.tif 000009
【図８】
2017215946.tif 000010
【図９】
2017215946.tif 000011
【図１０】
2017215946.tif 000012
【図１１】
2017215946.tif 000013
【図１２】
2017215946.tif 000014
【図１３】
2017215946.tif 000015
【図１４】
2017215946.tif 000016
【図１５】
2017215946.tif 000017
【図１６】
2017215946.tif 000018
【図１７】
2017215946.tif 000019
【図１８】
2017215946.tif 000020
【図１９】
2017215946.tif 000021
【図２０】
2017215946.tif 000022
【図２１】
2017215946.tif 000023
【図２２】
2017215946.tif 000024
【図２３】
2017215946.tif 000025
【図２４】
2017215946.tif 000026
【図２５】
2017215946.tif 000027
【図２６】
2017215946.tif 000028
【図２７】
2017215946.tif 000029
【図２８】
2017215946.tif 000030
【図２９】
2017215946.tif 000031
【図３０】
2017215946.tif 000032
【図３１】
2017215946.tif 000033
【図３２】
2017215946.tif 000034
【図３３】
2017215946.tif 000035
【外国語明細書】
2017215946000001.pdf
2017215946000002.pdf
2017215946000003.pdf
2017215946000004.pdf