(57)【要約】【課題】始端点と終端点の間のみの部分でノイズ成分を除去した上で２次や３次のベジェ曲線近似がなされた、高品位の非周回型のベクトル列の生成を可能とし、高品位のアウトラインを生成することができる画像処理装置を提供する。【解決手段】細線化された２値画像を構成する端点や交点間をつなぐ独立した線や閉曲線のそれぞれから得られる線成分に対応する線芯化された端点間毎線芯（周回）化済ベクトルが平滑化処理される前に、端点部分に相当するベクトルがノイズ除去処理により除去されたとしても、平滑化処理後に、端点部分に端点位置が不明にならぬように、本来の端点部分に相当する位置を明示する始端点・終端点情報を生成する。端点部分に相当する部分が端点として保存されるように補助ベクトルを挿入した端点間毎補助ベクトル入り（周回）ベクトルを生成する独立したベクトル群を抽出する。【選択図】図１
2008146173.tif 000002
【特許請求の範囲】
【請求項１】
細線化された２値画像の中から、該２値画像を構成する端点及び交点を含む点同士をつなぐ各線のそれぞれから得られる線芯化された第１のベクトル列群とそれらの第１のベクトル列の中の各ベクトルが線画像の端点部にある画素部分から抽出されたベクトルあるか否かを表す輪郭点情報とを獲得する第１のベクトル獲得手段と、
獲得された第１のベクトルの端点部のノイズ成分を検出して修正する端点部ノイズ検出修正手段と、
前記輪郭点情報を平滑化する平滑化手段と、
前記輪郭点情報が平滑化される際に、端点部分に相当するベクトルが他のベクトルと統合されて端点位置が不明にならぬように、端点部分に相当する部分を明示する始端点・終端点情報の生成と共に、端点部分に相当する部分が端点として保存されるように補助ベクトルの挿入を行う周回ベクトル生成手段とを備えたことを特徴とする画像処理装置。
【請求項２】
前記始端点・終端点情報は、前記端点部ノイズ検出修正手段による処理前の端点位置と処理後の端点位置に基づく情報であることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記端点部ノイズ検出修正手段は、端点部でのノイズの存在を検出する端点部ノイズ検出手段と、予め決められた規則に従い端点部のノイズを修正する端点部ノイズ修正手段と、修正前の端点の座標値と修正後の端点の座標値もしくはそれらの差異とに基いて、前記始端点・終端点情報を生成する端点修正情報生成手段とを含むことを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
細線化された２値画像の中から、該２値画像を構成する端点及び交点を含む点同士をつなぐ各線のそれぞれから得られる線芯化された第１のベクトル列群とそれらの第１のベクトル列の中の各ベクトルが線画像の端点部にある画素部分から抽出されたベクトルあるか否かを表す輪郭点情報とを獲得する第１のベクトル獲得工程と、
獲得された第１のベクトルの端点部のノイズ成分を検出して修正する端点部ノイズ検出修正工程と、
前記輪郭点情報を平滑化する平滑化工程と、
前記輪郭点情報が平滑化される際に、端点部分に相当するベクトルが他のベクトルと統合されて端点位置が不明にならぬように、端点部分に相当する部分を明示する始端点・終端点情報の生成と共に、端点部分に相当する部分が端点として保存されるように補助ベクトルの挿入を行う周回ベクトル生成工程とを有することを特徴とする画像処理方法。
【請求項５】
前記始端点・終端点情報は、前記端点部ノイズ検出修正工程による処理前の端点位置と処理後の端点位置に基づく情報であることを特徴とする請求項４に記載の画像処理方法。
【請求項６】
前記端点部ノイズ検出修正工程は、端点部でのノイズの存在を検出する端点部ノイズ検出工程と、予め決められた規則に従い端点部のノイズを修正する端点部ノイズ修正工程と、修正前の端点の座標値と修正後の端点の座標値もしくはそれらの差異とに基いて、前記始端点・終端点情報を生成する端点修正情報生成工程とを含むことを特徴とする請求項４または５に記載の画像処理方法。
【請求項７】
画像処理方法を実行するための、コンピュータで読み取り可能なプログラムであって、
細線化された２値画像の中から、該２値画像を構成する端点及び交点を含む点同士をつなぐ各線のそれぞれから得られる線芯化された第１のベクトル列群とそれらの第１のベクトル列の中の各ベクトルが線画像の端点部にある画素部分から抽出されたベクトルあるか否かを表す輪郭点情報とを獲得する第１のベクトル獲得ステップと、
獲得された第１のベクトルの端点部のノイズ成分を検出して修正する端点部ノイズ検出修正ステップと、
前記輪郭点情報を平滑化する平滑化ステップと、
前記輪郭点情報が平滑化される際に、端点部分に相当するベクトルが他のベクトルと統合されて端点位置が不明にならぬように、端点部分に相当する部分を明示する始端点・終端点情報の生成と共に、端点部分に相当する部分が端点として保存されるように補助ベクトルの挿入を行う周回ベクトル生成ステップとを備えたことを特徴とするプログラム。
【請求項８】
画像処理方法を実行するための、コンピュータで読み取り可能なプログラムを記憶する記憶媒体であって、
前記プログラムは、
細線化された２値画像の中から、該２値画像を構成する端点及び交点を含む点同士をつなぐ各線のそれぞれから得られる線芯化された第１のベクトル列群とそれらの第１のベクトル列の中の各ベクトルが線画像の端点部にある画素部分から抽出されたベクトルあるか否かを表す輪郭点情報とを獲得する第１のベクトル獲得ステップと、
獲得された第１のベクトルの端点部のノイズ成分を検出して修正する端点部ノイズ検出修正ステップと、
前記輪郭点情報を平滑化する平滑化ステップと、
前記輪郭点情報が平滑化される際に、端点部分に相当するベクトルが他のベクトルと統合されて端点位置が不明にならぬように、端点部分に相当する部分を明示する始端点・終端点情報の生成と共に、端点部分に相当する部分が端点として保存されるように補助ベクトルの挿入を行う周回ベクトル生成ステップとを備えたことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、図面や文書画像内の線図形の処理等を行う画像処理装置及び画像処理方法、前記画像処理方法を実行するためのプログラム、及び前記プログラムを記憶した記憶媒体に関する。
【背景技術】
【０００２】
近年、ペーパーレス化への要求が高まり、既存の画像データを電子化して再利用することが頻繁に行われるようになってきた。従来、画像データの再利用は、画像データを２値化処理した後にベクトル化技術を用いてベクトルデータに変換し、このベクトルデータをＣＡＤソフト等で使用するという形で行われてきている。
【０００３】
２値画像のベクトル化に関しては、特許文献１が提案されている。特許文献１では、画像データにおける注目画素とその近傍画素の状態を保持し、この注目画素をラスタ走査順に取り出し、その注目画素とその近傍画素の状態に基づいて、水平方向及び垂直方向の画素間ベクトルを検出する。これら画素間ベクトル同士の接続状態を判別して、この判別された画素間ベクトルの接続状態を基に、画像データの輪郭を抽出する。
【０００４】
また、特許文献２には、特許文献１に開示されるベクトル抽出ルールのモジュール化により、効率的な輪郭点抽出が可能であることを開示している。
【０００５】
さらに、特許文献３においては、２値画像の輪郭情報を用いて高画質な変倍画像を得る画像処理装置が提案されている。この提案は、２値画像からアウトラインベクトルを抽出し、抽出したアウトラインベクトル表現の状態で所望の倍率（任意）で滑らかに変倍されたアウトラインベクトルを作成する。そして、滑らかに変倍されたアウトラインベクトルから２値画像を再生成することによって、所望の倍率（任意）で変倍された高画質のデジタル２値画像を得るようにするものである。
【０００６】
ここで、２値画像からアウトラインベクトルを抽出する方法としては、例えば前記特許文献１や特許文献２で開示される次のような方法を用いることができる。
【０００７】
図５３（ａ）〜（ｄ）は、２値画像のアウトラインベクトルによる処理例を示す図である。図５３（ａ）〜（ｄ）の例では、２値画像からアウトラインベクトルを抽出し、該抽出したアウトラインベクトル表現を滑らかに関数近似したアウトラインベクトルを用いて所望の倍率（任意）で変倍された高画質のデジタル２値画像を得る一連の流れでの各段階でのデータの様子を表している。
【０００８】
図５３（ａ）は、入力されるラインアート画像の一例を示している。図５３（ｂ）は、図５３（ａ）の２値画像から、特許文献１または２による手法で抽出される輪郭ベクトルデータを輪郭画像として描画して可視化したものである。図５３（ｃ）は、同抽出された輪郭ベクトルデータを特許文献３による手法で滑らかに関数近似して得られるアウトラインベクトルを描画して可視化したものである。図５３（ｄ）は、同平滑化（関数近似）されたベクトルを中塗りして得られる所望の倍率（任意）で変倍された高画質のデジタル２値画像の例である。
【０００９】
一方、２値画像の輪郭情報を、直線のみならず２次や３次のベジェ曲線近似を行うことで、より少ないデータ量で高画質な変倍画像を表現することができる処理手法が考えられている（以降、処理方法１と称す）。この処理方法１では、２次や３次のベジェ曲線近似をする前に、１画素大の凸凹に起因するノイズの除去を行ってから２次や３次のベジェ曲線近似をする方が、より高品位のアウトラインが生成可能となることが知られている。１画素大の凸凹とは、ラスタ画像中における２値図形の一部にありがちな例えば、２値図形の角欠けや、垂直辺や水平辺部の１画素大の突起や陥没等である。
【００１０】
また、２値画像を構成する端点部分に相当するベクトルが他のベクトルと統合されて端点位置が不明にならぬようにした処理方法も考えられている（以降、処理方法２と称す）。即ち、この処理方法２では、細線化された２値画像を構成する端点や交点間をつなぐ独立した線や閉曲線のそれぞれから得られる線成分に対応する、線芯化された端点間毎線芯（周回）化済ベクトルが平滑化（関数近似）処理される際に、次のような処理を行う。端点位置が不明にならぬように、端点部分に相当する部分を明示する始端点・終端点情報を生成し、端点部分に相当する部分が端点として保存されるように補助ベクトルを挿入し、端点間毎補助ベクトル入り（周回）ベクトルを生成する。これにより、ある図形の輪郭を構成する線のみを、太さや面積といった概念に意味をもたせずに、単なる線（直線、［開］曲線、［閉］曲線等）、あるいは、その線の集まりとして扱う如きの線画として再利用が可能になる。
【００１１】
即ち、上述した特許文献１や特許文献２で開示される方法を用いて２値画像からアウトラインベクトルを抽出し、前記処理方法２を用いて、端点間毎線芯（周回）化済ベクトルを平滑化処理する際に、端点位置が不明にならぬように、前記始端点・終端点情報を生成し、且つ上記のように補助ベクトルを挿入する。そして、得られた端点間毎補助ベクトル入り（周回）ベクトルに対して、前記処理方法１の方法で、２次や３次のベジェ曲線近似をすることで、始端点と終端点の間のみの部分の非周回型のベクトル列の生成する。これにより、ある図形の輪郭を構成する線を、太さや面積といった概念に意味をもたせずに、単なる線（直線、［開］曲線、［閉］曲線等）、あるいは、その線の集まりとして扱い、線画として再利用することができる。
【特許文献１】特許第３０２６５９２号公報
【特許文献２】特開平０５−１０８８２３号公報
【特許文献３】特許第３０４９６７２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述した１画素大のノイズが、たまたま始端点・終端点部に発生している場合に、前記の処理方法１によるノイズ除去の処理を加えてから２次や３次のベジェ曲線近似を行うと次のような問題点が生ずる。即ち、ノイズ成分として、始端点または終端点を始点もしくは終点に持つベクトルが除去されることがあり、このような場合は、本来、端点部分に相当する部分が端点として保存されるように補助ベクトルを挿入した意味がなくなってしまう。つまり、端点位置が不明となる結果、始端点と終端点の間の部分の同定が不可能になり、アウトラインの予期せぬ近似結果が生じてしまう恐れがあった。
【００１３】
より詳しく説明する。上記従来技術によれば、特許文献１や特許文献２で開示される方法を用いて２値画像からアウトラインベクトルを抽出し、前記処理方法２の方法を用いて、線芯化された端点間毎線芯（周回）化済ベクトルを平滑化（関数近似）処理する。その際に、端点部分に相当するベクトルが、他のベクトルと統合されて端点位置が不明にならぬように、端点部分に相当する部分を明示する始端点・終端点情報を生成する。さらに、端点部分に相当する部分が端点として保存されるように補助ベクトルを挿入し、得られた端点間毎補助ベクトル入り（周回）ベクトルに対して、前記処理方法１の方法で２次や３次のベジェ曲線近似をする。これにより、始端点と終端点の間のみの部分の非周回型のベクトル列の生成を可能ならしめ、ある図形の輪郭を構成する線を、単なる線あるいはその線の集まりとして扱い、線画としての再利用を可能にすることができる。
【００１４】
しかし、ノイズ除去処理を始端点・終端点部で適用させると、ノイズ成分として始端点、または終端点を始点もしくは終点に持つベクトルが除去されてしまうことが起こり得る。すると、本来、端点部分に相当する部分が端点として保存される（ベジェ曲線のアンカーポイントとなる）ように補助ベクトルを挿入した意味がなくなり、端点位置が不明となってしまう。その結果、始端点と終端点の間の部分の同定が不可能になる場合が起こり得ることが懸念される。
【００１５】
本発明は、上記従来の問題点に鑑み、始端点と終端点の間のみの部分でノイズ成分を除去した上で２次や３次のベジェ曲線近似がなされた、高品位の非周回型のベクトル列の生成を可能とし、高品位のアウトラインを生成することができる画像処理装置、画像処理方法、プログラム、及び記憶媒体を提供する目的とする。
【課題を解決するための手段】
【００１６】
上記目的を達成するため、本発明の画像処理装置は、細線化された２値画像の中から、該２値画像を構成する端点及び交点を含む点同士をつなぐ各線のそれぞれから得られる線芯化された第１のベクトル列群とそれらの第１のベクトル列の中の各ベクトルが線画像の端点部にある画素部分から抽出されたベクトルあるか否かを表す輪郭点情報とを獲得する第１のベクトル獲得手段と、獲得された第１のベクトルの端点部のノイズ成分を検出して修正する端点部ノイズ検出修正手段と、前記輪郭点情報を平滑化する平滑化手段と、前記輪郭点情報が平滑化される際に、端点部分に相当するベクトルが他のベクトルと統合されて端点位置が不明にならぬように、端点部分に相当する部分を明示する始端点・終端点情報の生成と共に、端点部分に相当する部分が端点として保存されるように補助ベクトルの挿入を行う周回ベクトル生成手段とを備えたことを特徴とする。
【００１７】
また、本発明の画像処理方法は、細線化された２値画像の中から、該２値画像を構成する端点及び交点を含む点同士をつなぐ各線のそれぞれから得られる線芯化された第１のベクトル列群とそれらの第１のベクトル列の中の各ベクトルが線画像の端点部にある画素部分から抽出されたベクトルあるか否かを表す輪郭点情報とを獲得する第１のベクトル獲得工程と、獲得された第１のベクトルの端点部のノイズ成分を検出して修正する端点部ノイズ検出修正工程と、前記輪郭点情報を平滑化する平滑化工程と、前記輪郭点情報が平滑化される際に、端点部分に相当するベクトルが他のベクトルと統合されて端点位置が不明にならぬように、端点部分に相当する部分を明示する始端点・終端点情報の生成と共に、端点部分に相当する部分が端点として保存されるように補助ベクトルの挿入を行う周回ベクトル生成工程とを有することを特徴とする。
【００１８】
また、本発明のプログラムは、画像処理方法を実行するための、コンピュータで読み取り可能なプログラムであって、細線化された２値画像の中から、該２値画像を構成する端点及び交点を含む点同士をつなぐ各線のそれぞれから得られる線芯化された第１のベクトル列群とそれらの第１のベクトル列の中の各ベクトルが線画像の端点部にある画素部分から抽出されたベクトルあるか否かを表す輪郭点情報とを獲得する第１のベクトル獲得ステップと、獲得された第１のベクトルの端点部のノイズ成分を検出して修正する端点部ノイズ検出修正ステップと、前記輪郭点情報を平滑化する平滑化ステップと、前記輪郭点情報が平滑化される際に、端点部分に相当するベクトルが他のベクトルと統合されて端点位置が不明にならぬように、端点部分に相当する部分を明示する始端点・終端点情報の生成と共に、端点部分に相当する部分が端点として保存されるように補助ベクトルの挿入を行う周回ベクトル生成ステップとを備えたことを特徴とする。
【００１９】
また、本発明の記憶媒体は、画像処理方法を実行するための、コンピュータで読み取り可能なプログラムを記憶する記憶媒体であって、前記プログラムは、細線化された２値画像の中から、該２値画像を構成する端点及び交点を含む点同士をつなぐ各線のそれぞれから得られる線芯化された第１のベクトル列群とそれらの第１のベクトル列の中の各ベクトルが線画像の端点部にある画素部分から抽出されたベクトルあるか否かを表す輪郭点情報とを獲得する第１のベクトル獲得ステップと、獲得された第１のベクトルの端点部のノイズ成分を検出して修正する端点部ノイズ検出修正ステップと、前記輪郭点情報を平滑化する平滑化ステップと、前記輪郭点情報が平滑化される際に、端点部分に相当するベクトルが他のベクトルと統合されて端点位置が不明にならぬように、端点部分に相当する部分を明示する始端点・終端点情報の生成と共に、端点部分に相当する部分が端点として保存されるように補助ベクトルの挿入を行う周回ベクトル生成ステップとを備えたことを特徴とする。
【発明の効果】
【００２０】
本発明によれば、２値画像中の典型的なノイズ成分をベクトルデータ上で除去した上での２次や３次のベジェ曲線近似による高品位のアウトラインが生成可能となる。即ち、始端点と終端点の間のみの部分で、ノイズ成分を除去した上で２次や３次のベジェ曲線近似がなされた、従来より高品位の非周回型のベクトル列の生成が可能になる。
【００２１】
要するに、例え、端点部のノイズ除去が行われたとしても、安定的に且つ高品位の非周回型のベクトル列を得ることができる。これにより、例えば、ある図形の輪郭を構成する線のみを、太さや面積といった概念に意味をもたせずに、単なる線（直線、［開］曲線、［閉］曲線等）、あるいはその線の集まりとして扱う際に、従来より高品位の線画としての再利用が可能になる。
【発明を実施するための最良の形態】
【００２２】
本発明の実施の形態について、図面を参照しながら説明する。
【００２３】
＜画像処理装置の機能ブロック＞
図１は、本発明の実施の形態に係る画像処理装置の機能を示すブロック図である。
【００２４】
同図に示すように、本実施の形態の画像処理装置は、細線化済２値画像獲得部２００（以降、単に２値画像獲得部２００と記す）と、端点間毎輪郭（周回）ベクトル抽出部３００（以降、単に周回ベクトル抽出部３００と記す）と、端点間毎線芯（周回）ベクトル生成部３１０（以降、単に周回ベクトル生成部３１０と記す）を有している。
【００２５】
２値画像獲得部２００は、２値画像入力部２１０より出力される２値画像を、公知の２値画像細線化部２２０で、４−連結方式に細線化された２値画像を出力する。ここで、４−連結方式とは、注目する黒画素の縦横方向に隣接する黒画素間を連結した画素群でできる領域を連結領域とみなし、縦横方向の隣接画素が共に白画素の場合には、たとえ斜め方向に隣接する黒画素があったとしても連結領域とはみなさない連結方式である。
【００２６】
２値画像入力部２１０は、例えば、公知のスキャナ等の画像入力部２１１と公知の２値化部２１２とで構成される。即ち、画像入力部２１１で光電走査により読み取られた画像データを２値化部２１２で閾値処理により２値化して得られる２値画像を、２値画像細線化部２２０で、例えば、公知の細線化手法であるＨｉｌｄｉｔｃｈ法で４−連結方式の細線化をする。
【００２７】
なお、Ｈｉｌｄｉｔｃｈ法は、酒井幸市著“デジタル画像処理の基礎と応用”第２版，ＩＳＢＮ４−７８９８−３７０７−６，ＣＱ出版社，２００４年２月１日発行，Ｐ．５１−Ｐ．５４，等に記述されている。
【００２８】
図２（ａ）〜（ｆ）は、本実施の形態によるラインアート画像のベクトル処理の流れによる一連の処理経過の例を示す図である。
【００２９】
図２（ａ）に２値画像細線化部２２０に入力される２値画像の一例を示した。図２（ｂ）は、図２（ａ）を入力２値画像とした際の２値画像細線化部２２０から出力される細線化済画像を示している。
【００３０】
上記のようにして得られた４−連結方式に細線化された２値画像を、周回ベクトル抽出部３００で処理する。これにより、１回のラスタ走査のみにより、処理対象の細線化済２値画像中の線図形を、それらを構成している端点や交点間をつなぐ独立した線や閉曲線毎のそれぞれに対応したベクトル列の集まりとして抽出し、その処理結果を出力する。前記ベクトル列の集まりを、以降、“端点間毎線素粗輪郭ベクトル”と称する。
【００３１】
なお、出力される処理結果には、前記ベクトル列のそれぞれを構成する各ベクトルが、処理対象の線図形の端点（交点）位置に対応する部分から抽出されたものか否か等を表す情報（以降、“付与情報”と称することがある）が含まれる。
【００３２】
そして、線図形の端点（交点）位置に対応する部分から抽出されたものか否か等を表す情報（付与情報）を含んだ端点間毎線素粗輪郭ベクトル（以降、付与情報と端点間毎線素粗輪郭ベクトルを合わせて“端点間毎輪郭（周回）ベクトル”と称する）を得る。
【００３３】
このベクトルは、例えば以下に述べるような流れで処理されることにより、ある図形の輪郭を構成する線のみを、太さや、面積といった概念に意味をもたせずに、単なる線（直線、［開］曲線、［閉］曲線等）、あるいは、その線の集まりとして扱いたい場合に再利用することができる。また、もともとの太さを意識せずに、細線のみで描かれている線画としての再利用することもできる。
【００３４】
周回ベクトル生成部３１０は、周回ベクトル抽出部３００より得られた前記付与情報を含む端点や交点間をつなぐ端点間毎線素粗輪郭ベクトル列の集まりである端点間毎線素粗輪郭ベクトルを入力する。そして、付与情報を利用して、一画素幅の幅を持った輪郭（周回）ベクトルの各ベクトルの位置をそれぞれ半画素分ずつ相応する方向へ予め定める規則により微調整する。これによって、幅０に線芯化された第１のベクトルである端点間毎線芯（周回）化済ベクトル（以降、付与情報と端点間毎線芯（周回）化済ベクトルを合わせて“端点間毎線芯（周回）ベクトル”と称する）とする。
【００３５】
図２（ｃ）は、図２（ｂ）を入力２値画像とした際の周回ベクトル抽出部３００から出力される端点間毎線素粗輪郭ベクトルを輪郭画像として描画して可視化したものである。また、図２（ｄ）は、図２（ｃ）を入力した際の周回ベクトル生成部３１０から出力される端点間毎線芯（周回）化済ベクトルを線画像として描画して可視化したものである。
【００３６】
端点部ノイズ検出・修正部３１５０は、端点部ノイズ検出部３１５１、端点部ノイズ修正部３１５２、及び端点修正情報生成部３１５３より構成される。端点部ノイズ検出・修正部３１５０は、前記周回ベクトル生成部３１０により生成された端点間毎線芯（周回）ベクトルを入力する。そして、端点部ノイズ検出部３１５１において、端点間毎線芯（周回）化済ベクトルの端点部付近に、ノイズ特有のベクトル並びの有無を吟味し、その存在が検出される場合には、端点部ノイズ修正部３１５２において該ノイズ特有のベクトルの並びを修正する。
【００３７】
次の端点修正情報生成部３１５３において、このノイズ特有のベクトル並びの修正処理に基づく端点修正情報を含む始端点・終端点情報を生成する。かくして、端点部ノイズ検出・修正部３１５０は、ノイズ特有のベクトル並びの修正処理に基づく端点修正情報を含む始端点・終端点情報（以降、“修正処理済始端点・終端点情報”と称す）と、ノイズ検出・修正処理済の輪郭点情報とを出力する。
【００３８】
端点部ノイズ検出・修正部３１５０の後段には、端点間毎補助ベクトル入り（周回）ベクトル生成部３２０（以降、単に周回ベクトル生成部３２０と称す）と、端点間毎補助ベクトル入り（周回）ベクトル平滑部３３０（以降、単に周回ベクトル平滑部３３０と称す）が設けられている。
【００３９】
周回ベクトル生成部３２０は、端点部ノイズ検出・修正部３１５０より得られる、上記の修正処理済始端点・終端点情報と修正処理済端点間毎線芯（周回）ベクトルとを入力し、次工程の処理をする周回ベクトル平滑部３３０により平滑化（関数近似）処理される際に、端点部分に相当するベクトルが、他のベクトルと統合されて端点位置が不明にならぬように、端点部分に相当する部分が端点として保存される（ベジェ曲線のアンカーポイントとなる）ように補助ベクトルを挿入することにより、端点間毎補助ベクトル入り（周回）ベクトルを生成する。
【００４０】
加えて、補助ベクトルを挿入された各周回ベクトルのそれそれに対し、次工程以降の処理部において始端点と終端点の間のみの部分の非周回型のベクトル列を生成する。そのための情報として、上記の修正処理済始端点・終端点情報に加え、総輪郭点数と、補助ベクトルである輪郭点数も出力する。図２（ｅ）は、図２（ｄ）を入力した際の周回ベクトル生成部３２０から出力される端点間毎補助ベクトル入り（周回）ベクトルを線画像として描画して可視化したものである。
【００４１】
周回ベクトル平滑部３３０は、周回ベクトル生成部３２０より得られる周回ベクトルを入力し、各（周回）ベクトル毎に平滑化（関数近似）処理を行うことによって、平滑化（関数近似）された平滑化（関数近似）済端点間毎補助ベクトル入り（周回）ベクトルを生成して、次工程の処理をする端点間毎平滑化済ベクトル同定（非周回化）部３４０に出力する。
【００４２】
周回ベクトル平滑部３３０の後段には、端点間毎平滑化済ベクトル同定（非周回化）部３４０（以降、単に平滑化済ベクトル同定部３４０と称す）と、平滑化済ベクトル出力部３５０が設けられている。
【００４３】
平滑化済ベクトル同定部３４０は、周回ベクトル平滑部３３０より得られる、上記の平滑化（関数近似）済端点間毎補助ベクトル入り（周回）ベクトルと、周回ベクトル生成部３２０より得られる、始端点と終端点の間のみの部分の非周回型のベクトル列を生成するための情報としての、上記の修正処理済始端点・終端点情報と、総輪郭点数、及び、助ベクトルである輪郭点数とを入力し、各平滑化済の（周回）ベクトル毎にそれぞれ始端点と終端点となるベクトルを同定して、始端点と終端点の間のみの部分の非周回型のベクトル列を生成する。
【００４４】
そして、次工程の処理部である平滑化済ベクトル出力部３５０を介して、ファイル出力もしくは通信Ｉ／Ｆ等を介して外部装置に出力する。図２（ｆ）は、図２（ｅ）を入力した際の平滑化済ベクトル同定部３４０から出力される平滑化済ベクトルを線画像として描画して可視化したものである。
【００４５】
＜画像処理装置を実現する機器構成例＞
図３は、上記に説明した機能ブロックでなる画像処理装置を実現する機器構成例を示す図である。
【００４６】
同図において、５１８は、図３で示される系のバスを表している。１は図１の２値画像入力部２１０の画像入力部２１１を構成するスキャナである。２は画像メモリであり、３は画像入出力Ｉ／Ｏである。画像メモリ２は画像入出力Ｉ／Ｏ３を介して、スキャナ１で読み取られた２値化前の多値画像を保持したり、２値化された後の２値画像データを保持するものであり、共に図１の２００に示される２値画像獲得部を構成している。５は周回ベクトル抽出部であり、図１の周回ベクトル抽出部３００を構成している。５０は入力画像ラスタ走査部であり、画像入出力Ｉ／Ｏ２を介して信号線５００より細線化済２値画像データを順次入力する。
【００４７】
５１３と５１４は３×３の９画素で構成される走査窓の各画素の状態を入力する入力ポートである。４は、ネットワーク等を経由して、システムの外部と通信する通信Ｉ／Ｆである。５１９はＣＰＵである。５２０はＲＡＭで、ワーキングメモリである。５はＲＯＭで、後に説明する手順に沿ってＣＰＵ５１９で実行されるプログラムや予め定められるパラメータやデータ等を格納している。
【００４８】
これらのＣＰＵ５１９やＲＡＭ５１９、ＲＯＭ６により、図１の端点部ノイズ検出・修正部３１５０、及び、これを構成する端点部ノイズ検出部３１５１、端点部ノイズ修正部３１５２、端点修正情報生成部、並びに周回ベクトル生成部３２０や周回ベクトル平滑部３３０、平滑化済ベクトル同定部３４０が実現される。５２１はハードディスク装置５２２とのＩ／Ｏ（入出力回路）である。
【００４９】
＜周回ベクトル抽出部３００の処理内容＞
以下、主として、図４、及び図５〜図１７等を用いて周回ベクトル抽出部３００での処理内容を説明する。
【００５０】
図４は、本実施の形態における注目画素とその近傍画素を示す図である。
【００５１】
本実施の形態では、図４に示すように、２値画像における注目画素（１０１）と、その近傍の８個の画素の状態を見て処理を進めるもので、注目画素をラスタ走査し、１画素毎にずらしながら画像全体の処理を逐次行っていく。
【００５２】
図４において、×は注目画素１０１を表しており、“０”及び“２”で示された位置は、主走査方向に対し注目画素１０１と同じ位置にあり、副走査方向のそれぞれ１ラスタ前の画素（０）及び１ラスタ先の画素（２）を示す。“１”及び“３”で示された位置は、注目画素１０１と同一のラスタ上にあり、それぞれ１画素前の画素（３）及び１画素先の画素（１）を示している。更に、“Ａ”及び“Ｂ”は、主走査方向に１画素先の位置にあり、それぞれ１ラスタ前及び１ラスタ先の位置にある画素を示し、“Ｃ”及び“Ｄ”は主走査方向の１画素前の位置にある画素で、それぞれ１ラスタ先及び１ラスタ前の位置にある画素を示す。
【００５３】
（Ａ）注目画素及びその近傍の８画素の状態に応じた処理
次に、注目画素及びその近傍の８画素の状態に応じた、それぞれの場合の処理を説明する。
【００５４】
注目画素が白画素である場合は、その処理を終了してラスタ走査を１画素分進め、注目画素位置を更新する。注目画素が黒画素の場合は、近傍の画素の状態によって以下の処理を行う。図５〜図１７に各状態における処理内容を示してある。図５〜図１７は、端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【００５５】
内部を斜めのチェッカーパターンで埋められた大き目の○印は黒画素を示し、白画素は大き目の点線の○印で表記してある。“ｄ”は“ｄｏ  ｎｏ  ｃａｒｅ”、即ち、“ｄ”の表示のある位置の画素は白画素でも黒画素でも構わないことを意味している。
【００５６】
また、図５〜図１７の各画素マトリクスにおいて、●印と○印は、横方向ベクトルの始点及び縦方向ベクトルの終点を表しており、▲印と△印は縦方向ベクトルの始点及び横方向ベクトルの終点を表している。これらのベクトルの始点・終点間の実線矢印は、始点及び終点共に定まった、矢印の向く方向の輪郭ベクトルを表し、一方、点線矢印は、始点もしくは終点のいずれか一方のみが定まった、矢印の向く方向の輪郭ベクトルを表している。これら輪郭ベクトルの始点及び終点を総称して、以降、輪郭点と呼ぶことにする。
【００５７】
また、●印と▲印は端点部から抽出されるベクトルの始点・終点で、それぞれ端点部から抽出される横方向ベクトルの始点及び縦方向ベクトルの終点、端点部から抽出される縦方向ベクトルの始点及び横方向ベクトルの終点であることを示している。図５〜図１７のそれぞれの輪郭点には、対応付けられる付与情報として、図１８の一覧表に示した輪郭点情報のいずれかが付記されている。この輪郭点情報が、各輪郭点情報に付記されて抽出される付与情報となる。なお、図５〜図１７において、輪郭ベクトルを抽出しない画素マトリクスのパターンに対しては、輪郭情報を記載していない。
【００５８】
図１８は、輪郭点情報の一覧表を示す図である。
【００５９】
同図のＮｏ．０１〜１６に示される１６種の輪郭点情報は、“ｘｘｘ＿ｙｙｙ＿ｚｚｚ”または“ｘｘｘ＿ｙｙｙ”なる形で表記されており、いずれも、“ｘｘｘ”の部分は、対象の輪郭点が終点となるベクトルの向きを表し、“ｙｙｙ”の部分は、同輪郭点が始点となるベクトルの向きを表している。上向きをＵＰ、下向きをＤＯＷＮ、右向きをＲＩＧＨＴ、左向きをＬＥＦＴと表現し、例えば、Ｎｏ．０１〜０３はいずれも、上向きベクトルの始点且つ右向きベクトルの始点になっている輪郭点であることを意味している。なお、“＿ｚｚｚ”の部分は、この付与情報をもつ輪郭点が、端点部から抽出されたものであることを意味していて、図１８の端点情報の欄に記載してある。
【００６０】
図１９（ａ）〜（ｄ）は、端点部より検出される輪郭点例とそれらに付与される輪郭点情報を示す図である。
【００６１】
図中の、＿ＴＬは、線素の上端部の右側（Ｔｏｐ  Ｒｉｇｈｔ）から抽出された端点であることを示し（図１９（ａ）参照）、＿ＬＴは、線素の左端部の上側（Ｌｅｆｔ  Ｔｏｐ）から抽出された端点であることを示している（図１９（ｂ）参照）。＿ＢＲは、線素の下端部の右側（Ｂｏｔｔｏｍ  Ｒｉｇｈｔ）から抽出された端点であることを示し（図１９（ｄ）参照）、＿ＲＢは、線素の右端部の下側（Ｒｉｇｈｔ  Ｂｏｔｔｏｍ）から抽出された端点であることを示している（図１９（ｃ）参照）。
【００６２】
図中の、＿ＬＢは、線素の左端部の下側（Ｌｅｆｔ  Ｂｏｔｔｏｍ）から抽出された端点であることを示し（図１９（ｂ）参照）、＿ＢＬは、線素の下端部の左側（Ｂｏｔｔｏｍ  Ｌｅｆｔ）から抽出された端点であることを示している（図１９（ｄ）参照）。＿ＲＴは、線素の上端部の右側（Ｒｉｇｈｔ  Ｔｏｐ）から抽出された端点であることを示し（図１９（ｃ）参照）、＿ＴＲは、線素の左端部の上側（Ｔｏｐ  Ｒｉｇｈｔ）から抽出された端点であることを示している（図１９（ａ）参照）。
【００６３】
図２０（ａ）〜（ｄ）は、端点部ではない部分より検出される輪郭点例とそれらに付与される輪郭点情報を示す図である。
【００６４】
線素の端点ではない部分（以降、非端点部と称する）から抽出される輪郭点には、この”＿ｚｚｚ“部のない輪郭点情報が付与され、これらの例を図２０（ａ）〜（ｄ）に示した。但し、注目画素が黒画素の場合で、近傍の画素の状態によって、図５〜図１７に各状態における輪郭点とその付与情報を抽出する際の実際の処理においては、上述の図１８の輪郭点情報は図１８の”値“の欄の対応する位置に表記される数値をもって、抽出されるように構成するものとする。内部を斜めのチェッカーパターンで埋められた○印は黒画素を示し、白画素は点線の○印で表記されている。
【００６５】
これら輪郭ベクトルの始点・終点位置は、主走査方向及び副走査方向共に、画素と画素の中間の位置にあるものとする。また、主走査方向及び副走査方向共に、画素のある位置は正整数で示され、画素位置を２次元の座標で表現をする。但し、ここでは小数の表現を避けるために便宜上、以降の画素位置を偶数のみで表現することにし、始点、終点の位置を奇数の整数で表現することにする。即ち、ｍ画素×ｎ画素の画像は、２ｍ×２ｎの正の偶数（整数）の座標表現で表すものとする。
【００６６】
このように、主走査方向をｘ座標、副走査方向をｙ座標とした２次元座標で表すとき、これ以降２値画像は、それぞれがｍ画素よりなるｎラスタで構成されるｍ×ｎ画素（ｍ，ｎは正の整数）でなるものとし、第ｊ番目のラスタの第ｉ番目の画素位置を（２ｉ，２ｊ）（ｉ，ｊは正の整数で、ｉ≦ｍ，ｊ≦ｎ）で表現するものとする。また、主走査方向（ｘ座標）は左から右に向かう方向が正の方向であり、副走査方向（ｙ座標）は上から下に向かう向きが正の方向である。
【００６７】
（Ｂ）周回ベクトル抽出部３００の一連の動作
以下、周回ベクトル抽出部３００の一連の動作を図２１〜２８のフローチャートに沿って説明を加える。
【００６８】
本実施の形態は、特許文献１に比し、４−連結方式に細線化された２値画像を端点、交点を検出しつつ、端点や交点をつなぐ互いに独立した線素や閉曲線の集まりとして、それぞれの線成分に対応する独立したベクトル群を抽出し、加えて、各輪郭点に輪郭点情報をも付与して抽出できる点で、その機能は大きく異なる。
【００６９】
また、図５〜図１７に示したように用いる３×３の画素パターン群も大きく異なるものであるが、３×３の９画素で構成される走査窓を用いて、画像をラスタ走査し、逐次３×３の画素パターンとして注目画素とその８近傍の画素の状態を判断しながら、輪郭点を抽出していく。この点で、各３×３の画素パターンに応じた輪郭点と輪郭点情報の抽出部分を除いて、一連の流れは、基本的には特許文献１の開示する抽出動作と同様に構成することができる。
【００７０】
図２１は、実施の形態の装置のＣＰＵ５１９による輪郭抽出処理の全体の流れを示すフローチャートである。
【００７１】
これは、特許文献１に開示されるフローチャートであり、本実施の形態でも、このレベルの流れとしては、これとほぼ同様な手順で実施できる。しかしながら、特許文献１では輪郭点情報の概念はな且つ、たので、本実施の形態では、抽出した輪郭点に付加された属性情報として考え、特許文献１で抽出した輪郭点の接続情報の処理をする際にも、それぞれの輪郭点の輪郭点情報も各輪郭点の情報の一部として付随したものとして一環して扱うようにする。これは、各輪郭点データのデータ形式の内部にと輪郭点の座標値のみならず、その、輪郭点データをもその一部として取り込んだデータ構造として扱えば、容易に実現できるので、詳述はしない。
【００７２】
まずＳ１にて、２値画像データからベクトル列を各輪郭点に付随させて輪郭点情報込みで抽出する。そして、各ベクトルの始点の座標及びこのベクトルに流入してくる（このベクトルの始点の座標が終点となっている）ベクトル、流出してゆく（このベクトルの終点の座標が始点となっている）ベクトルを特許文献１に準じて出力する。
【００７３】
次にＳ２に進み、不図示のテーブルから流入及び流出ベクトルの項目番号を辿ることにより、図２３に示すような画像中の総輪郭線数、各輪郭線毎の輪郭線の総点数、輪郭線中の各点のｘ座標、ｙ座標と各点の輪郭点情報の組み合わせを記憶したテーブルを作成する。次にＳ３に進み、ディスクＩ／Ｏ５２１を介して、このテーブル情報ファイル形式でディスク５２２に記憶して、一連の動作を終了する。
【００７４】
図２２は図２１のＳ１のベクトル列抽出処理を示すフローチャートである。
【００７５】
まずＳ１１では、入力ポート５１４のビット４（注目画素）を見ることにより、注目画素が白画素か黒画素かを判定する。白画素の場合はＳ１３へ進み、黒画素の場合はＳ１２へ進む。Ｓ１２では、注目画素の周囲８画素の状態を見て、その状態に応じた適当な処理ルーチンをコールする。
【００７６】
Ｓ１３では、前述の如く入出力制御ポート５１７を介して画素位置を更新を指示する。そして、入出力制御ポート５１７より更新完了の信号を入力するとＳ１４に進み、入出力制御ポート５１７を介して、最終画素の処理が終了したか否かを判断し、終了していなければＳ１１へ戻り、次の注目画素も同様に処理を行い、終了していれば、元のルーチンにリターンする。
【００７７】
図２３は、図２２のＳ１２に示された周囲画素の状態により実行される処理を示すフローチャートである。
【００７８】
Ｓ２１において、ＣＰＵ５１９のレジスタを“０”にクリアする。次にＳ２２に進み、図４の“０”で示された位置の画素の状態（以降、ｆ（０）で表現する）が黒画素（以降、“１”で表す）であればＳ２３へ進み、白画素（以降、“０”で表す）であればＳ２４へ進む。Ｓ２３では前記レジスタの内容に１を加える。
【００７９】
次にＳ２４に進み、図４の“１”の位置の画素の状態が黒画素であれば（ｆ（１）＝１）Ｓ２５へ進み、前記レジスタの内容に２を加える。ｆ（１）＝０であればＳ２６に進み、同様に図４の“２”の位置の画素画黒画素かどうかをみる。ｆ（２）＝１（黒画素であれば）であればＳ２７へ進み、前記レジスタの内容を加える。
【００８０】
次にＳ２８に進み、図４の“３”の位置の画素に注目し、ｆ（３）＝１ならＳ２９へ進み、前記レジスタの内容に８を加えるが、そうでなければＳ３０へ進む。Ｓ３０では、前記レジスタの保持する値の処理番号のルーチンをコールする。
【００８１】
これにより、前記レジスタの内容は、図４に示した“０”，“１”，“２”，“３”の画素位置の各画素の状態に応じて、０〜１５の値を取り得る。これらは、その値に応じてそれぞれ次の各図のケースに示されている。
【００８２】
即ち、図５（ａ）の（ケース０）、図５（ｂ）の（ケース１）、図６（ケース２）、図７（ａ）（ケース３）、図７（ｂ）（ケース４）、図８（ケース５）、図９（ケース６）、図１０（ケース７）、図１１（ａ）（ケース８）、図１１（ｂ）（ケース９）、図１２（ケース１０）、図１３（ａ），（ｂ）（ケース１１）、図１４（ケース１２）、図１５（ａ），（ｂ）（ケース１３）、図１６（ａ），（ｂ）（ケース１４）、及び図１７（ケース１５）のように示される。
【００８３】
即ち、Ｓ３０において、上記に述べた図５〜図１７に示される様に定義された輪郭点とその輪郭点情報とをそれぞれのケースに応じて抽出する。
かくして、周回ベクトル抽出部３００は、１回のラスタ走査のみにより、入力される４−連結方式に細線化された２値画像（線図形）から、それらを構成している端点や交点間をつなぐ独立した線や閉曲線毎のそれぞれに対応したベクトル列の集まり（  “端点間毎線素粗輪郭ベクトル”）とその輪郭点情報を抽出し、その処理結果を出力する。これらは、例えば、図２４に示したような形式として出力される。
【００８４】
図２４は、端点間毎周回ベクトル列と輪郭点情報のデータ形式の例を示す図である。
【００８５】
同図における第一輪郭や第二輪郭、第ａ輪郭といったまとまりとして各線素から抽出されたベクトル列を表し、それらの各輪郭点ごとに輪郭点情報が付与された形式となっている。
【００８６】
図２５は、線素、端点間毎周回ベクトル列と輪郭点情報、及び端点間毎線芯（周回）ベクトルを例示する図である。即ち、同図は、線図形の入力例とこれから抽出される端点間毎輪郭（周回）ベクトル、つまり、端点間毎線素粗輪郭ベクトル（太めに表現されたベクトル列）と輪郭点情報を示している。
【００８７】
＜周回ベクトル生成部３１０の動作＞
次に、周回ベクトル生成部３１０の動作を説明する。図２６は、周回ベクトル生成部の動作を示すフローチャートである。
【００８８】
同図において、処理を開始すると、Ｓ１００において、周回ベクトル抽出部３００より得られた、端点間毎輪郭（周回）ベクトル、即ち、線図形の端点（交点）位置に対応する部分から抽出されたものか否か等を表す情報（付与情報）を含んだ、端点や交点間をつなぐ独立した線や閉曲線毎のそれぞれに対応したベクトル列の集まり（端点間毎線素粗輪郭ベクトル）を入力する。
【００８９】
次に、Ｓ１１０では、Ｓ１００で入力した図２４に示したような形式の端点間毎輪郭（周回）ベクトルから、中に含まれる１つのベクトル列（図２４の第ｋ輪郭（１≦ｋ≦ａ））を当面の処理対象としてＳ１１０が実行されるたびに順次昇順に定める。
【００９０】
次に、Ｓ１２０では、Ｓ１１０で定めたベクトル列（総点数ｐとする）の中の１つのベクトルの輪郭点（第ｑ点（１≦ｑ≦ｐ））を当面の処理対象としてＳ１２０が実行されるたびに順次昇順に定める。次に、Ｓ１３０では、Ｓ１２０で定めた輪郭点の輪郭点情報を参照して、この輪郭点を終点とするベクトルか、もしくは、この輪郭点を始点とするベクトルのいずれかが左向きか否かを判定し、左向きの場合は、Ｓ１４０に進み、そうではない場合にはＳ１５０に進む。
【００９１】
Ｓ１４０では該輪郭点（座標値を（２＊ｉ，２＊ｊ）とする）のｙ座標値を１減じて（副走査方向に半画素分原点側にずらして）、Ｓ１６０に進む。Ｓ１５０では、該輪郭点のｙ座標値を１増やして（副走査方向に半画素分原点とは反対側にずらして）、Ｓ１６０に進む。Ｓ１６０では、該輪郭点の輪郭点情報を参照して、この輪郭点を終点とするベクトルか、もしくは、この輪郭点を始点とするベクトルのいずれかが上向きか否かを判定し、上向きの場合は、Ｓ１７０に進み、そうではない場合にはＳ１８０に進む。
【００９２】
Ｓ１７０では該輪郭点のｘ座標値を１増やして（主走査方向に半画素分原点とは反対側にずらして）、Ｓ１９０に進む。Ｓ１８０では、該輪郭点のｘ座標値を１減じて（主走査方向に半画素分原点側にずらして）、Ｓ１９０に進む。Ｓ１９０では、これでＳ１１０で定めたベクトル列内の全ての輪郭点の吟味が終わったか否かを判定し、そうであればＳ２００へ進み、そうでなければ、同ベクトル列内の次の輪郭点にＳ１３０からＳ１９０までの処理を施すべくＳ１２０に戻る。
【００９３】
Ｓ２００では、これでＳ１００で入力した端点間毎線素粗輪郭ベクトル中の全てのベクトル列の処理が終了したか否かを判定し、そうであればＳ２１０へ進み、そうでなければ、杉のベクトル列に対してＳ１２０からＳ２００までの処理を施すべくＳ１１０へ戻る。Ｓ２１０では、Ｓ１００で入力した端点間毎線素粗輪郭ベクトルに対する処理結果を出力する。
【００９４】
なお、上記Ｓ１３０やＳ１６０での判定は、先述の図１８における“値”欄の数値を輪郭点情報としているので、これらの数値を２進数で表現した際のＬＳＢをｂｉｔ０、ＭＳＢをｂｉｔ７とすると、ステップ１３０ではｂｉｔ２（図１８では“右向（０）左向（１）”欄）を調べて、０なら右向き、１なら左向きと判定することができる。ステップ１６０ではｂｉｔ３（図１８では“上向（０）下向（１）”欄）を調べて、０なら上向き、１なら下向きと判定することができる。
【００９５】
かくして、周回ベクトル抽出部３００より得られた、端点間毎輪郭（周回）ベクトル、即ち、線図形の端点（交点）位置に対応する部分から抽出されたものか否か等を表す情報（付与情報）を含んだ、端点や交点間をつなぐ独立した線や閉曲線毎のそれぞれに対応したベクトル列の集まり（端点間毎線素粗輪郭ベクトル）を入力し、付与情報を利用して、一画素幅の幅を持った輪郭（周回）ベクトルの各ベクトルの位置をそれぞれ半画素分ずつ相応する方向へ予め定める規則により微調整することによって、幅０に線芯化された端点間毎線芯（周回）化済ベクトルとする。これらは、端点間毎線芯（周回）化済ベクトルもまた、例えば、図２４に示したような形式として表現でき、本実施の形態では、この形式で出力されるものとする。
【００９６】
先述の図２５に、端点間毎線素粗輪郭ベクトル（太めに表現されたベクトル列）と輪郭点情報から幅０に線芯化された端点間毎線芯（周回）化済ベクトル（入力２値画像の画素上の位置に細めに描かれたベクトル列）の例を示す。
【００９７】
＜ノイズ成分を除去した上での２次や３次のベジェ曲線近似＞
ここで、本実施の形態での主題の背景となる、ノイズ成分を除去した上での２次や３次のベジェ曲線近似による高品位のアウトラインが生成に関して説明を加える。
【００９８】
先述の処理方法１によれば、２次や３次のベジェ曲線近似をする前に、光電走査により読み取られた画像を２値化して得られる２値画像中における２値図形の一部にありがちな１画素大の凸凹、即ち、２値図形の角欠けや、垂直辺や水平辺部の１画素大の突起や陥没等に起因するノイズの除去を行ってから２次や３次のベジェ曲線近似をする方が、より高品位のアウトラインが生成可能となる。
【００９９】
図２７は、粗輪郭データよりアウトラインベクトルデータへ変換する処理を示すフローチャートである。
【０１００】
図２７を用いて，粗輪郭データよりアウトラインベクトルデータへ変換するフローを述べると、まず、粗輪郭データに対しノイズ除去を行い（Ｓ３３１）、ノイズ除去された粗輪郭上の線分より接線成分を抽出する（Ｓ３３２）。Ｓ３３２により抽出される接線成分よりアンカーポイントを抽出し（Ｓ３３３）、抽出されたアンカーポイント間が数個の線分により構成されるグループに２次もしくは３次ベジェ曲線、及び直線を当てはめる（Ｓ３３４）、次に残りの線分についてベジェ近似を行い、３次もしくは２次のベジェ曲線により置き換える（Ｓ３３５）。最後に、直線、及び曲線より構成されるアウトラインベクトルデータに対し、補正処理を行う（Ｓ３３６）ものである。
【０１０１】
図２８（ａ）〜（ｄ）は、本実施の形態で問題とする典型的なノイズの例を示す図である。
【０１０２】
図２８（ａ）は、始端点ベクトルＶ０が垂直ベクトルである始端点部（始端点は、Ｐ０）付近に、１画素大のノイズがある例を示している。始端点から終端点方向に、順に、粗輪郭点がＰ１  、Ｐ２  、Ｐ３と続き、始点がＰ０で終点がＰ１であるベクトルをＶ０、以下、始点がＰ１で終点がＰ２であるベクトルをＶ１、始点がＰ２で終点がＰ３であるベクトルをＶ２、と表記している。
【０１０３】
ここで、ベクトルＶｉの長さを｜Ｖｉ｜と表記するとすると、先述の粗輪郭の抽出で説明した様に、１画素長とは粗輪郭点間の座標値の差として見ると２であるから、図２８（ａ）では、｜Ｖ０｜＝｜Ｖ１｜＝２  である。Ｖ０とＶ２の向きが等しい場合である。
【０１０４】
また、図２８（ｂ）は、終端点ベクトルＶｎ−１が垂直ベクトルである終端点部（終端点は、Ｐｎ）付近に、１画素大のノイズがある例を示している。始端点方向から終端点に、順に、粗輪郭点が、‥‥‥、Ｐｎ−３  、Ｐｎ−２  、Ｐｎ−１と続き、始点がＰｎ−３で終点がＰｎ−２であるベクトルをＶｎ−３、以下、始点がＰｎ−２で終点がＰｎ−１であるベクトルをＶｎ−２、始点がＰｎ−１で終点がＰｎであるベクトルをＶｎ−１、と表記している。
【０１０５】
図２８（ｂ）では、｜Ｖｎ−１｜＝｜Ｖｎ−２｜＝２であり、且つＶｎ−１とＶｎ−３の向きが等しい場合である。図２８（ｃ）は、始端点ベクトルＶ０が水平ベクトルである始端点部（始端点は、Ｐ０）付近に、１画素大のノイズがある例を示している。図２８（ａ）と同様に、｜Ｖ０｜＝｜Ｖ１｜＝２  であり、且つ、Ｖ０とＶ２の向きが等しい場合である。また、図２８（ｄ）は、終端点ベクトルＶｎ−１が水平ベクトルである終端点部（終端点は、Ｐｎ））付近に、１画素大のノイズがある例を示している。図２８（ｂ）と同様に、｜Ｖｎ−１｜＝｜Ｖｎ−２｜＝２  であり、且つ、Ｖｎ−１とＶｎ−３の向きが等しい場合である。
【０１０６】
図２９（ａ），（ｂ）及び図３０（ｃ），（ｄ）は、それぞれ図２８（ａ）〜（ｄ）の場合に対応する、本実施の形態で問題とする典型的なノイズの除去の例を示す図である。
【０１０７】
図２９（ａ）は、始端点部が図２８（ａ）で示されるようなノイズパターンの場合、Ｐ０をＰ０’に変更し、Ｐｎ−２とを削除する。
【０１０８】
即ち、Ｐｎ’＝  Ｐｎ−（Ｐｎ−１−Ｐｎ−２）＝Ｐｎ−Ｖｎ−２
として、新たな始端点Ｐ０’を生成する。同時に、その次の輪郭点Ｐ１’をＰ３として、新たな始端点ベクトル  Ｖ０’を  Ｖ０’＝  Ｐ１’−Ｐ０’とすることを示している。
【０１０９】
図２９（ｂ）は、終端点部が図２８（ｂ）で示されるようなノイズパターンの場合、ＰｎをＰｎ’に変更し、Ｐｎ−１をとＰｎ−２とを削除する。即ち、
Ｐｎ’＝Ｐｎ−（Ｐｎ−１−Ｐｎ−２）＝Ｐｎ−Ｖｎ−２ 
として、新たな始端点Ｐｎ’を生成する。同時に、その直前の輪郭点Ｐｎ−１’をＰｎ−３として、新たな終端点ベクトル  Ｖｎ−１’を  Ｖｎ−１’＝Ｐｎ’−Ｐｎ−１’とすることを示している。
【０１１０】
図３０（ｃ）は、始端点部が図２８（ｃ）で示されるようなノイズパターンの場合、Ｐ０をＰ０’に変更し、Ｐ１をとＰ２とを削除する。
【０１１１】
即ち、Ｐ０’＝Ｐ０＋（Ｐ２−Ｐ１）＝Ｐ０＋Ｖ１として、新たな始端点Ｐ０’を生成し、と同時に、その次の輪郭Ｐ３として、新たな始端点ベクトル  Ｖ０’を
Ｖ０’＝Ｐ１’−Ｐ０’
とすることを示している。
【０１１２】
図３０（ｄ）は、終端点部が図２８（ｄ）で示されるようなノイズパターンの場合、ＰｎをＰｎ’に変更し、Ｐｎ−１とＰｎ−２とを削除する。即ち、
Ｐｎ’＝  Ｐｎ−（Ｐｎ−１−Ｐｎ−２）＝Ｐｎ−Ｖｎ−２ 
として、新たな始端点Ｐｎ’を生成し、と同時に、その直前の輪郭点Ｐｎ−１’をＰｎ−３として、新たな終端点ベクトルＶｎ−１’を
Ｖｎ−１’＝Ｐｎ’−Ｐｎ−１’
とすることを示している。
【０１１３】
＜端点部ノイズ検出・修正部３１５０の動作＞
次に、端点部ノイズ検出・修正部３１５０の動作を説明する。
【０１１４】
端点部ノイズ検出・修正部は、端点部ノイズ検出部３１５１、端点部ノイズ修正部３１５２、端点修正情報生成部３１５３より構成される。端点部の伊豆検出部３１５１は、図２８を用いて上記に説明した始端点部、及び、終端点部でのノイズパターンの検出を行い、ここでノイズパターンが検出されると、端点部ノイズ修正部３１５２にて、図２９を用いて上記に説明したノイズ除去の処理を行う。端点修正情報生成部３１５３では、端点部ノイズ検出及び端点部ノイズ修正の処理による端点修正情報を生成する。
【０１１５】
図３１及び図３２は、端点部ノイズ検出・修正部３１５０の動作を示すフローチャートである。
【０１１６】
同図において、処理を開始すると、Ｓ５００において、周回ベクトル生成部３１０より得られた、幅０に線芯化された端点間毎線芯（周回）化済ベクトルを入力する。
【０１１７】
次に、Ｓ５１０では、Ｓ５００で入力した図２４に示したような形式の端点間毎線芯（周回）化済ベクトルから、その中に含まれる１つのベクトル列（図２４の第ｋ輪郭（１≦ｋ≦ａ））を当面の処理対象として順に定める。
【０１１８】
なお、粗輪郭ベクトル抽出の性質上、必ず、水平ベクトルの次は垂直ベクトルとなり、垂直ベクトルの次は水平ベクトルとなることから、粗輪郭ベクトルの各ベクトル列上の総点数は必ず偶数となっている。また、周回ベクトル生成部３１０より、幅０に線芯化された端点間毎線芯（周回）化済ベクトルを生成する際には，削除されたり、追加挿入されたりする輪郭点はない。そのため、上記Ｓ５００で入力した図２４に示したような形式の端点間毎線芯（周回）化済ベクトルの中に含まれるベクトル列は全て、偶数の輪郭点を有する。
【０１１９】
次に、ステップ５２０では、Ｓ５１０で定めたベクトル列の中の総点数ｐが、６以下であるかを判定し、そうである場合はＳ７２０の総点数６点以下の場合の端点処理に進み、そうではない場合には、Ｓ５３０に進む。ステップ５３０では、Ｓ５１０で定めたベクトル列の中の総点数ｐが、８であるかを判定し、そうである場合はＳ７３０の総点数８点の場合の端点処理に進み、そうではない場合には、Ｓ５４０に進む。
【０１２０】
ステップ５４０では、Ｓ５１０で定めたベクトル列の中の総点数ｐが、１０であるかを判定し、そうである場合はＳ７４０の総点数１０点の場合の端点処理に進み、そうではない場合には、総点数は１２点以上であり、Ｓ５５０に進む。
【０１２１】
Ｓ７２０の総点数６点以下の場合の端点処理、Ｓ７３０の総点数８点の場合の端点処理、及び、Ｓ７４０の総点数１０点の場合の端点処理については、後に、それぞれ、図３９及び図４０、図４１及び図４２、及び、図４３及び図４４と図４５を用いて、別途説明を加える。
【０１２２】
Ｓ５５０では、１つのベクトルの輪郭点（第ｑ点（１≦ｑ≦ｐ））として、Ｓ５６０で始端点が見つけられるまでの間、Ｓ５５０が実行されるたびに第１点から第ｐ点までを昇順に順次１点ずつ当面の処理対象として定める。Ｓ５６０では、直前のＳ５５０で定めた輪郭点の輪郭点情報を参照して、この輪郭点が始端点に該当するベクトルか否かを判定する。この輪郭点が始端点に該当するベクトルの場合は、Ｓ５７０に進み、そうではない場合にはＳ６７０に進む。
【０１２３】
ここで、当該輪郭点が始端点に該当するベクトルか否かは、その輪郭点の輪郭点情報を参照して、先述の図１８で表記しているところのＵＰ＿ＲＩＧＨＴ＿ＬＴ（０３Ｈ），ＤＯＷＮ＿ＬＥＦＴ＿ＲＢ（０ＦＨ），ＬＥＦＴ＿ＵＰ＿ＢＬ（１７Ｈ），ＲＩＧＨＴ＿ＤＯＷＮ＿ＴＲ（１ＢＨ）のいずれかであるか否かをもってその判定を行う。これらは、図１８の“値”の数値のｂｉｔ１とｂｉｔ０が共に１であるか否かを調べることで実現することもできる。
【０１２４】
Ｓ５７０では、端点部のノイズチェック準備に関する一連の処理を行う。
【０１２５】
（Ａ）端点部のノイズチェック準備に関する一連の処理
次に、端点部のノイズチェック準備に関する一連の処理について詳述する。
【０１２６】
図３３は、Ｓ５７０で実行される、端点部のノイズチェック準備に関する一連の処理の詳細を示すフローチャートである。
【０１２７】
同図において、Ｓ５７１においては、Ｓ５５０で入力したばかりの輪郭点の座標値を、始端点Ｐ０の座標値（ｘ０，ｙ０）とするとともに、同ベクトル列上のこの点に続く４点の座標値を順に、各々、Ｐ１、Ｐ２、Ｐ３、Ｐ４の座標値（ｘ１，ｙ１）、（ｘ２，ｙ２）、（ｘ３，ｙ３）、（ｘ４，ｙ４）として入力する。
【０１２８】
次にＳ５７２において、
始点ベクトルＶ０＝Ｖ０（ｖｘ０，ｖｙ０）と、
これに続くベクトルＶ１＝Ｖ１（ｖｘ１，ｖｙ１）とＶ２＝Ｖ２（ｖｘ２，ｖｙ２）を、
Ｖ０＝Ｖ０（ｖｘ０，ｖｙ０）＝Ｐ１−Ｐ０
＝（ｘ１，ｙ１）−（ｘ０，ｙ０）＝（ｘ１−ｘ０，ｙ１−ｙ０）  
Ｖ１＝Ｖ１（ｖｘ１，ｖｙ１）＝Ｐ２−Ｐ１
＝（ｘ２，ｙ２）−（ｘ１，ｙ１）＝（ｘ２−ｘ１，ｙ２−ｙ１）  
Ｖ２＝Ｖ２（ｖｘ２，ｖｙ２）＝Ｐ３−Ｐ２
＝（ｘ３，ｙ３）−（ｘ２，ｙ２）＝（ｘ３−ｘ２，ｙ３−ｙ２）
とする。
【０１２９】
さらに、終端点Ｐｎの座標値  （ｘｎ，ｙｎ）をＰ４の座標値（ｘ４，ｙ４）とするとともに、同ベクトル列上のこの点に先立つ２点、Ｐｎ−１とＰｎ−２の座標値（ｘｎ−１，ｙｎ−１）と（ｘｎ−２，ｙｎ−２）を順に、それぞれ、Ｐ３、Ｐ２の座標値  （ｘ３，ｙ３）、（ｘ２，ｙ２）とした上で、終点ベクトルＶｎ−１＝Ｖｎ−１（ｖｘｎ―１，ｖｙｎ−１）と、
これに先立つベクトルＶｎ−２＝Ｖｎ−２（ｖｘｎ―２，ｖｙｎ−２）を、
Ｖｎ−１＝Ｖｎ−１（ｖｘｎ―１，ｖｙｎ−１）＝Ｐｎ−Ｐｎ−１＝（ｘ４，ｙ４）−（ｘ３，ｙ３）
＝（ｘ４−ｘ３，ｙ４−ｙ３）  
Ｖｎ−２＝Ｖｎ−２（ｖｘｎ―２，ｖｙｎ−２）＝Ｐｎ−１−Ｐｎ−２＝（ｘ３，ｙ３）−（ｘ２，ｙ２）＝（ｘ３−ｘ２，ｙ３−ｙ２）  
とする。
【０１３０】
かくして、Ｓ５７０の端点部のノイズチェック準備に関する一連の処理を終えるとＳ５８０に進む。Ｓ５８０では、始端点ノイズ判定と修正処理の一連の処理を行う。
【０１３１】
（Ｂ）始端点ノイズ判定と修正処理の一連の処理
図３４は、Ｓ５８０で実行される、始端点ノイズ判定と修正処理の一連の処理の詳細を示すフローチャートである。
【０１３２】
同図において、Ｓ５８１においては、始端点部での連続する３ベクトルがノイズパターンに合致するか否かの判定を行う。即ち、図２８（ａ）と（ｃ）を用いて上述したように、
｜Ｖ０｜＝（ｖｘ０２＋ｖｙ０２）１／２＝｜ｖｘ０｜＋｜ｖｙ０｜  と
｜Ｖ１｜＝（ｖｘ１２＋ｖｙ１２）１／２＝｜ｖｘ１｜＋｜ｖｙ１｜  とが
共に２に等しく、且つ
Ｖ０とＶ２の向きが等しい、即ち、それらの内積が正、つまり、
（ｖｘ０×ｖｘ２）＋（ｖｙ０×ｖｙ２）＞  ０
であるか否かを判定する。
【０１３３】
もしそうなら、始端点部でのノイズパターンに合致するので、以降、Ｓ５８２に進んで、図２９（ａ）と図３０（ｃ）を用いて上述した一連の始端点修正処理（Ｓ５８２〜Ｓ５８５）を行い、そうでないなら、始端点部でのノイズパターンには合致しないので、以降、Ｓ５８６へ進んで、始端点修正処理は施さずにそのまま始端点として出力する一連の処理（Ｓ５８６〜Ｓ５８８）を行う。
【０１３４】
Ｓ５８２では、修正始端点Ｐ０’の座標値（ｘ０’，ｙ０’）を
Ｐ０’＝  Ｐ０＋Ｖ１＝Ｐ０＋（Ｐ２−Ｐ１）  
即ち、
（ｘ０’，ｙ０’）＝（ｘ０，ｙ０）＋（ｘ２−ｘ１，ｙ２−ｙ１）
＝（ｘ０−ｘ１＋ｘ２，ｙ０−ｙ１＋ｙ２）
として求め、この修正始端点Ｐ０’の座標値（ｘ０’，ｙ０’）をもって、あらためて始端点Ｐｓの座標値（ｘｓ，ｙｓ）とする。即ち、
（ｘｓ，ｙｓ）＝（ｘ０’，ｙ０’）＝（ｘ０−ｘ１＋ｘ２，ｙ０−ｙ１＋ｙ２）
である。
【０１３５】
次に、Ｓ５８３において、もともとの始端点Ｐ０の座標値（ｘ０，ｙ０）を原始端点情報として、例えば図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。
【０１３６】
Ｓ５８４では、原始端点Ｐ０から始端点Ｐｓ  への始端点補正量ΔＰｓ  ＝（Δｘｓ，  Δｙｓ）を
ΔＰｓ  ＝Ｖ１
即ち、
（Δｘｓ，Δｙｓ）＝（ｖｘ１，ｖｙ１）＝（ｘ２−ｘ１，ｙ２−ｙ１）
として、図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０１３７】
Ｓ５８５では、始端点Ｐｓの座標値（ｘｓ，  ｙｓ）を現時点で処理中のベクトル列の第１点の座標値として、入力中の粗輪郭ベクトルデータと同様に、図２４に示す形式で、ＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。かくして、Ｓ５８２〜Ｓ５８５において一連の始端点修正処理を行い、Ｓ５８０の処理を終えてＳ５９０へ進む。
【０１３８】
一方、Ｓ５８６では、もともとの始端点Ｐ０の座標値（ｘ０，ｙ０）を原始端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。次にＳ５８７では、この場合、始端点部での補正は行われていないので、
ΔＰｓ  ＝（Δｘｓ，Δｙｓ）＝（０，０）
を始端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０１３９】
またＳ５８８では、もともとの始端点Ｐ０の座標値（ｘ０，ｙ０）を始端点Ｐｓの座標値（ｘｓ，ｙｓ）として、つまりは現時点で処理中のベクトル列の第１点の座標値として登録・保持する。これは、入力中の粗輪郭ベクトルデータと同様に、図２４に示す形式で、ＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持するものである。かくして、Ｓ５８６〜Ｓ５８８において一始端点修正処理は施さずにそのまま始端点として出力する一連の処理を行い、Ｓ５８０の処理を終えてＳ５９０へ進む。
【０１４０】
Ｓ５９０では、１つのベクトルの輪郭点（第ｑ点（１≦ｑ≦ｐ））として、Ｓ６１０で終端点が見つけられるまでの間、Ｓ５９０が実行されるたびに、Ｓ５６０で見つけられた始端点の次の点から第ｐ点までを昇順に順次１点ずつ当面の処理対象として定める。
【０１４１】
Ｓ６００では、終端点部のノイズチェック準備に関する一連の処理を行う。図３７は、終端点部のノイズチェック準備に関する一連の処理を示すフローチャートである。
【０１４２】
同図において、Ｓ６０１においては、同ベクトル列上の終端点に先立つ２点Ｐｎ−１とＰｎ−２の座標値（ｘｎ−１，ｙｎ−１）と（ｘｎ−２，ｙｎ−２）を順に更新するとともに、Ｓ５９０で入力したばかりの輪郭点の座標値を、終端点Ｐｎの座標値（ｘｎ，ｙｎ）とし、また、終点ベクトルに先立つ２ベクトルである
Ｖｎ−２＝Ｖｎ−２（ｖｎｘ―２，ｖｙｎ−２）＝（ｖｎｘ―２，ｖｙｎ−２）
と、
Ｖｎ−３＝Ｖｎ−３（ｖｘｎ―３，ｖｙｎ−３）＝（ｖｘｎ―３，ｖｙｎ−３）
及び、終点ベクトルである
Ｖｎ−１＝Ｖｎ−１（ｖｘｎ―１，ｖｙｎ−１）＝（ｖｘｎ―１，ｖｙｎ−１）
とを順に更新する。
【０１４３】
即ち、まず、
Ｐｎ−２＝Ｐｎ−１
つまり、  （ｘｎ−２，ｙｎ−２）＝（ｘｎ−１，ｙｎ−１）
と更新してから、
Ｐｎ−１＝Ｐｎ 
つまり、（ｘｎ−１，ｙｎ−１）＝（ｘｎ，ｙｎ）
と更新し、その上で、
Ｓ５９０で入力したばかりの輪郭点の座標値を、終端点Ｐｎの座標値（ｘｎ，ｙｎ）とする。
【０１４４】
また、Ｖｎ−３＝Ｖｎ−２  、つまり（ｖｘｎ―３，ｖｙｎ−３）＝（ｖｎｘ―２，ｖｙｎ−２）
と更新してから、
Ｖｎ−２＝Ｖｎ−１ 
つまり、（ｖｘｎ―２，ｖｙｎ−２）＝（ｖｎｘ―１，ｖｙｎ−１）
と更新し、その上で、
Ｖｎ−１＝（ｖｘｎ―１，ｖｙｎ−１）＝Ｐｎ−Ｐｎ−１
＝（ｘｎ，ｙｎ）−（ｘｎ−１，ｙｎ−１）＝（ｘｎ−ｘｎ−１，ｙｎ−ｙｎ−１）
として、終端点部のノイズチェック準備に関する一連の処理を行う。かくして、Ｓ６００の終端点部のノイズチェック準備に関する一連の処理を終えるとＳ６１０に進む。
【０１４５】
Ｓ６１０では、直前のＳ５９０で定めた輪郭点の輪郭点情報を参照して、この輪郭点が終端点に該当するベクトルか否かを判定し、この輪郭点が終端点に該当するベクトルの場合は、Ｓ６２０に進み、そうではない場合にはＳ６１５に進む。
【０１４６】
ここで、当該輪郭点が終端点とすべきベクトルか否かは、その輪郭点の輪郭点情報を参照して、先述の図１８で表記しているところのＵＰ＿ＲＩＧＨＴ＿ＴＬ（０１Ｈ），ＤＯＷＮ＿ＬＥＦＴ＿ＢＲ（０ＤＨ），ＬＥＦＴ＿ＵＰ＿ＬＢ（１５Ｈ），ＲＩＧＨＴ＿ＤＯＷＮ＿ＲＴ（１９Ｈ）のいずれかであるか否かをもってその判定を行う。これらは、図１８の“値”の数値のｂｉｔ１とｂｉｔ０がそれぞれ０と１であるか否かを調べることで実現することもできる。
【０１４７】
Ｓ６１５では、Ｓ５９０で入力された１つのベクトルの輪郭点は、注目するベクトル列の始端点と終端点の間にある輪郭点として、ＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。これは、Ｓ５８５やＳ５８８で説明した、入力中の粗輪郭ベクトルデータと同様な図２４に示す形式で登録・保持するものである。
【０１４８】
そして、Ｓ５９０に戻り、注目ベクトル列中の次の輪郭点への処理を続ける。
【０１４９】
（Ｃ）終端点ノイズ判定と修正処理の一連の処理
Ｓ６２０では、終端点ノイズ判定と修正処理の一連の処理を行う。
【０１５０】
図３８は、終端点ノイズ判定と修正処理の一連の処理を示すフローチャートである。
【０１５１】
同図において、Ｓ６２１においては、終端点部での連続する３ベクトルがノイズパターンに合致するか否かの判定を行う。即ち、図２８（ｂ）と（ｄ）を用いて上述したように、
｜Ｖｎ−１｜＝（ｖｘｎー１２＋ｖｙｎ−１２）１／２＝｜ｖｘｎー１｜＋｜ｖｙｎー１｜  と
｜Ｖｎ−２｜＝（ｖｘｎ−２２＋ｖｙｎ−２２）１／２＝｜ｖｘｎ−２｜＋｜ｖｙｎ−２｜  とが
共に２に等しく、且つ
Ｖｎ−１とＶｎ−３の向きが等しい、即ち、それらの内積が正、つまり、
（ｖｘｎ−１×ｖｘｎ−３）＋（ｖｙｎ−１×ｖｙｎ−３）＞０
であるか否かを判定する。
【０１５２】
もしそうなら、終端点部でのノイズパターンに合致するので、以降、Ｓ６２２に進んで、図２９（ｂ）と図３０（ｄ）を用いて上述した一連の終端点修正処理（Ｓ６２２〜Ｓ６２５）を行い、そうでないなら、終端点部でのノイズパターンには合致しないので、以降、Ｓ６２６へ進んで、終端点修正処理は施さずにそのまま終端点として出力する一連の処理（Ｓ６２６〜Ｓ６２８）を行う。
【０１５３】
Ｓ６２２では、修正終端点Ｐｎ’の座標値（ｘｎ’，ｙｎ’）を
Ｐｎ’＝Ｐｎ−Ｖｎ−２＝  Ｐｎ−（Ｐｎ−１−Ｐｎ−２）  
即ち、
（ｘｎ’，ｙｎ’）＝（ｘｎ，ｙｎ）−（ｘｎ−１−ｘｎ−２，ｙｎ−１−ｙｎ−２）
＝（ｘｎ−ｘｎ−１＋ｘｎ−２，ｙｎ−ｙｎ−１＋ｙｎ−２）
として求め、この修正終端点Ｐｎの座標値（ｘｎ，ｙｎ）をもって、あらためて終端点Ｐｅの座標値（ｘｅ，ｙｅ）とする。
即ち、
（ｘｅ，ｙｅ）＝（ｘｎ’，ｙｎ’）
＝（ｘｎ−ｘｎ−１＋ｘｎ−２，ｙｎ−ｙｎ−１＋ｙｎ−２）
である。
【０１５４】
次に、Ｓ６２３において、もともとの終端点Ｐｎの座標値（ｘｎ，ｙｎ）を原終端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。
【０１５５】
Ｓ６２４では、原終端点Ｐｎから終端点Ｐｅへの終端点補正量ΔＰｅ＝（Δｘｓ，Δｙｓ）をΔＰｅ  ＝−Ｖｎ−２
即ち、
（Δｘｅ，Δｙｅ）＝−（ｖｘｎ−２，ｖｙｎ−２）
＝−（ｘｎ−１−ｘｎ−２，ｙｎ−１−ｙｎ−２）
＝（ｘｎ−２−ｘｎ−１，ｙｎ−２−ｙｎ−１）
として、図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０１５６】
Ｓ６２５では、終端点Ｐｅの座標値（ｘｅ，ｙｅ）を現時点で処理中のベクトル列の終端点の座標値として、ＲＡＭ５２０上のデータ領域において、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。
【０１５７】
かくして、Ｓ６２２〜Ｓ６２５において一連の始端点修正処理を行い、Ｓ６２０の処理を終えてＳ６３０へ進む。
【０１５８】
一方、Ｓ６２６では、もともとの終端点Ｐｎの座標値（ｘｎ，ｙｎ）を原終端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。次にＳ６２７では、この場合、終端点部での補正は行われていないので、  ΔＰｅ  ＝（Δｘｅ，  Δｙｅ）＝（０，  ０）
を終端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０１５９】
またＳ６２８では、もともとの終端点Ｐｎの座標値（ｘｎ，ｙｎ）として、つまりは現時点で処理中のベクトル列の終端点の座標値として、ＲＡＭ５２０上のデータ領域において、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。この登録は、Ｓ５８５やＳ５８８で説明した、入力中の粗輪郭ベクトルデータと同様な図２４に示す形式である。
【０１６０】
かくして、Ｓ６２６〜Ｓ６２８において終端点修正処理は施さずにそのまま終端点として出力する一連の処理を行い、Ｓ６２０の処理を終えてＳ６３０へ進む。
【０１６１】
Ｓ６３０では、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値について逆順コピー貼り付けを行う。即ち、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値を、Ｓ５８５やＳ５８８等の始端点、後のＳ７３０等の始端点と終端点に挟まれる途中の点、並びにＳ６２５やＳ６２８等の終端点のそれぞれの直後に、図２４に示す形式で逆順（終端点〜始端点の順）に順次コピーして付け加えていく。
【０１６２】
前記の輪郭点座標値（線素ベクトル部分（始端点〜終端点））は、一貫して図２４に示す形式でここまでに出力された処理中の１ベクトル列（第ｋ輪郭（１≦ｋ≦ａ））に関するものである。これにより、Ｓ６３０では、それまでは始端点〜終端点までのみであった輪郭点列を始端点〜終端点と終端点〜始端点のように、始端点と終端点間を往復する座標点列となるように端点部のノイズ除去処理済の線芯（周回）化済ベクトル列を生成する。
【０１６３】
次に、Ｓ６４０では、Ｓ６３０で生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数を始端点〜終端点までの輪郭点列の２倍の値として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０１６４】
Ｓ６５０では、Ｓ５００で入力した、端点間毎線芯（周回）化済ベクトルの中に含まれる全てのベクトル列に関する一連の端点部のノイズ除去処理が終了したか否かを判断し、終了している場合にはスッテプＳ６６０に進み、終了していない場合にはＳ５１０に戻り、次のベクトル列に対する一連の処理を繰り返す。
【０１６５】
Ｓ６６０では、端点部ノイズ修正処理済の端点間毎線芯（周回）化済ベクトルと、原始端点・原終端点情報群を出力して、一連の動作を終了する。即ち、この端点間毎線芯（周回）化済ベクトルは、Ｓ５００で入力した端点間毎線芯（周回）化済ベクトルの中に含まれる全てのベクトル列に関する一連の端点部のノイズ除去処理を終えた結果として得られた、図２４に示す形式のベクトルである。原始端点・原終端点情報群は、全てのベクトル列分の、図３６（ａ）や（ｂ）に示される形式の原始端点・原終端点情報で構成される。また、この出力処理は、例えば、ディスクＩ／Ｏ５２１を介して、このテーブル情報ファイル形式でディスク５２２に記憶し、もしくは、ＲＡＭ５２０での同情報の領域を次工程の処理をする処理部に引き渡すようにして行われる。
【０１６６】
次に、Ｓ６７０における動作を説明する。
【０１６７】
Ｓ６７０では、直前のＳ５６０で始端点ではないと判定されたベクトルが、処理中の注目ベクトル列の最後のベクトルであるか否かを判定する。例えば、詳述はしない公知の処理ループカウンタのカウント値が注目ベクトル列内の輪郭点数以上になっているか否か等により容易に判定可能である。もし、最終ベクトルである場合には、注目ベクトル列内には始端点が存在しない、つまりは、閉ループを構成するベクトル列であり、Ｓ６８０に進む。一方、最終ベクトルではない場合には、Ｓ５５０に戻り、注目ベクトル列内の次のベクトルが始端点か否かの判断を繰り返す。
【０１６８】
Ｓ６８０では、注目ベクトル列内には始端点が存在しない、つまりは、閉ループを構成するベクトル列であることを示すために、次のような処理を行う。即ち、原終端点情報として、本来、始端点としても終端点としてもありえない座標値（−１，−１）を、原始端点と原終端点の両方の座標値として、例えば、図３６（ｂ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。
【０１６９】
次にＳ６９０では、この場合、終端点部での補正は行われていないので、
ΔＰｅ  ＝（Δｘｅ，Δｙｅ）＝（０，０）
を終端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０１７０】
Ｓ７００では、注目中のベクトル列内の輪郭点全てを、入力中の粗輪郭ベクトルデータと同様な図２４に示す形式で、且つＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。Ｓ７１０では、生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数として、注目するベクトル列中にある輪郭点数と同じ値として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０１７１】
かくして、Ｓ６８０〜Ｓ７１０では、注目ベクトル列内には始端点が存在しない、つまりは、閉ループを構成するベクトル列に対する端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の生成を行い、Ｓ６５０に進む。この線芯（周回）化済ベクトル列は、実際は、閉ループマーカとなる原始端点・原終端点情報と、入力と全く同じ座標値をもつデータ列となる。
【０１７２】
（Ｄ）６点以下の輪郭点しか持たないベクトル列に対する処理
次に、Ｓ７２０の６点以下の輪郭点しか持たないベクトル列に対する処理の流れを説明する。図３９及び図４０は、Ｓ７２０の６点以下の輪郭点しか持たないベクトル列に対する処理を示すフローチャートである。
【０１７３】
同図において、処理を開始すると、Ｓ７２０１では、Ｓ５１０で入力した図２４に示したような形式の端点間毎線芯（周回）化済ベクトルの中に含まれる１つのベクトル列（図２４の第ｋ輪郭（１≦ｋ≦ａ））から順に１つのベクトル（輪郭点）を当面の処理対象として定める。
【０１７４】
Ｓ７２０２では、直前のＳ７２０１で定めた輪郭点の輪郭点情報を参照して、この輪郭点が始端点に該当するベクトルか否かを判定し、この輪郭点が始端点に該当するベクトルの場合は、Ｓ７２０３に進み、そうではない場合にはＳ７２１５に進む。ここで、当該輪郭点が始端点に該当するベクトルか否かは、その輪郭点の輪郭点情報を参照して、先述の図１８で表記している次のいずれかであるか否かをもってその判定を行う。
【０１７５】
即ち、ＵＰ＿ＲＩＧＨＴ＿ＬＴ（０３Ｈ）、ＤＯＷＮ＿ＬＥＦＴ＿ＲＢ（０ＦＨ）、ＬＥＦＴ＿ＵＰ＿ＢＬ（１７Ｈ）、及びＲＩＧＨＴ＿ＤＯＷＮ＿ＴＲ（１ＢＨ）のいずれかであるか否かをもってその判定を行う。これらは、図１８の“値”の数値のｂｉｔ１とｂｉｔ０が共に１であるか否かを調べることで実現することもできる。
【０１７６】
Ｓ７２０３では、もともとの始端点Ｐ０の座標値（ｘ０，ｙ０）を原始端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。次のＳ７２０４では、この場合、始端点部での補正は行わないので、
ΔＰｓ  ＝（Δｘｓ，Δｙｓ）＝（０，０）
を始端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０１７７】
またＳ７２０５では、もともとの始端点Ｐ０の座標値（ｘ０，ｙ０）を始端点Ｐｓの座標値（ｘｓ，ｙｓ）として、つまりは現時点で処理中のベクトル列の第１点ＰＳの座標値ＰＳとして、登録・保持する。これは、入力中の粗輪郭ベクトルデータと同様に図２４に示す形式で、ＲＡＭ５２０上のデータ領域において入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力して、登録・保持する。
【０１７８】
かくして、Ｓ７２０３〜Ｓ７２０５において、始端点修正処理は施さずにそのまま始端点として出力する一連の処理を行い、Ｓ７２０６へ進む。
【０１７９】
Ｓ７２０６では、Ｓ７２０１で定めた輪郭点の次の輪郭点として、１つのベクトル（輪郭点）を当面の処理対象として定める。Ｓ７２０７では、Ｓ７２０６で定めたベクトル（輪郭点）を現時点で処理中のベクトル列の第二の輪郭点Ｐ１として、ＲＡＭ５２０上のデータ領域において、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。Ｓ７２０８では、Ｓ５１０で定めたベクトル列の中の総点数ｐが、４以下であるかを判定し、そうである場合はＳ７２２０以降の総点数４点以下の場合の端点処理に進み、そうではない場合には、Ｓ７２０９以降の総点数６点以下の場合の端点処理に進む。
【０１８０】
Ｓ７２０９では、Ｓ７２０６で定めた輪郭点の次の輪郭点として、１つのベクトル（輪郭点）を当面の処理対象として定める。Ｓ７２１０では、Ｓ７２０９で定めたベクトル（輪郭点）を現時点で処理中のベクトル列の第三の輪郭点Ｐ２（終端点Ｐｅでもある）として、その座標値を入力ベクトルデータと同様に、図２４に示す形式で登録・保持する。
【０１８１】
Ｓ７２１１では、第三の輪郭点Ｐ２の座標値（終端点Ｐｅの座標値（ｘｅ，ｙｅ）でもある）を原終端点Ｐｎの座標値（ｘｎ，ｙｎ）として、入力中の粗輪郭ベクトルデータと同様な図２４に示す形式で登録・保持する。
【０１８２】
Ｓ７２１２では、この場合、終端点部での補正は行われていないので、
ΔＰｅ  ＝（Δｘｅ，  Δｙｅ）＝（０，  ０）
を終端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。かくして、Ｓ７２０９〜Ｓ７２１２において終端点修正処理は施さずにそのまま終端点として出力する一連の処理を行い、Ｓ７２１３へ進む。
【０１８３】
Ｓ７２１３では、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値について逆順コピー貼り付けを行う。即ち、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値を、Ｓ７２０５での始端点、Ｓ７２０６での始端点と終端点に挟まれる途中の点、並びにＳ７２１０の終端点のそれぞれについて、前記Ｓ６３０と同様の処理を行う。
【０１８４】
次に、Ｓ７２１４では、それまでに生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数の値を６として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。Ｓ７２１４を終えるとＳ７２０の６点以下の入力ベクトル列に対しての一連の端点部のノイズ除去処理を終えて、Ｓ６５０に進む。
【０１８５】
次に、Ｓ７２１５における動作を説明する。Ｓ７２１５では、直前のＳ７２０２で始端点ではないと判定されたベクトルが、処理中の注目ベクトル列の最後のベクトルであるか否かを判定する。もし、最終ベクトルである場合には、注目ベクトル列内には始端点が存在しない、つまりは、閉ループを構成するベクトル列であり、Ｓ７２１６に進む。一方、最終ベクトルではない場合には、Ｓ７２０１に戻り、注目ベクトル列内の次のベクトルが始端点か否かの判断を繰り返す。
【０１８６】
Ｓ７２１６では、注目ベクトル列内には始端点が存在しない、つまりは、閉ループを構成するベクトル列であることを示すために、前記Ｓ６８０と同様の処理を行う。
【０１８７】
次にＳ７２１７では、この場合、終端点部での補正は行われていないので、
ΔＰｅ  ＝（Δｘｅ，Δｙｅ）＝（０，０）
を終端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。Ｓ７２１８では、注目中のベクトル列内の輪郭点全てを、入力中の粗輪郭ベクトルデータと同様な図２４に示す形式で、且つＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。
【０１８８】
Ｓ７２１９では、生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数として、注目するベクトル列中にある輪郭点数と同じ値として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０１８９】
かくして、Ｓ７２１６〜Ｓ７２１９では、注目ベクトル列内には始端点が存在しない、つまりは、閉ループを構成するベクトル列に対する端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の生成を行い、Ｓ６５０に進む。
【０１９０】
Ｓ７２２０では、Ｓ７２０７で定めたベクトル（輪郭点）を現時点で処理中のベクトル列の第二の輪郭点Ｐ１（終端点Ｐｅでもある）として、その座標値を入力ベクトルデータと同様に、図２４に示す形式で登録・保持する。Ｓ７２２１では、第二の輪郭点Ｐ１の座標値（終端点Ｐｅの座標値（ｘｅ，ｙｅ）でもある）を原終端点Ｐｎの座標値（ｘｎ，ｙｎ）として、入力中の粗輪郭ベクトルデータと同様な図２４に示す形式で登録・保持する。
【０１９１】
Ｓ７２１２では、この場合、終端点部での補正は行われていないので、
ΔＰｅ  ＝（Δｘｅ，Δｙｅ）＝（０，０）
を終端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０１９２】
かくして、Ｓ７２２０〜Ｓ７２２１において終端点修正処理は施さずにそのまま終端点として出力する一連の処理を行い、Ｓ７２２２へ進む。
【０１９３】
Ｓ７２２２では、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値について逆順コピー貼り付けを行う。即ち、Ｓ７２０５の始端点及びＳ７２２０の終端点のそれぞれについて、前記Ｓ６３０と同様の処理を行う。これにより、Ｓ７２２２では、始端点と終端点間を往復する座標点列となるように端点部のノイズ除去処理済の線芯（周回）化済ベクトル列を生成する。
【０１９４】
次に、Ｓ７２２３では、それまでに生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数の値を４として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。Ｓ７２２３を終えるとＳ７２０の６点以下（のうちの４点である場合）の入力ベクトル列に対しての一連の端点部のノイズ除去処理を終えて、Ｓ６５０に進む。
【０１９５】
以上、図３９及び図４０を用いて、Ｓ７２０の６点以下の輪郭点しか持たないベクトル列に対する処理の流れを説明した。
【０１９６】
（Ｅ）８点の輪郭点しか持たないベクトル列に対する処理
次に、図４１及び図４２を用いて、Ｓ７３０の８点の輪郭点しか持たないベクトル列に対する処理の流れを説明する。図４１及び図４２は、Ｓ７３０の８点の輪郭点しか持たないベクトル列に対する処理を示すフローチャートである。
【０１９７】
処理を開始すると、Ｓ７３０１では、Ｓ５１０で入力した図２４に示すような形式の端点間毎線芯（周回）化済ベクトルの中に含まれる１つのベクトル列（図２４の第ｋ輪郭（１≦ｋ≦ａ））から順に１つのベクトル（輪郭点）を当面の処理対象として定める。
【０１９８】
Ｓ７３０２では、直前のＳ７３０１で定めた輪郭点の輪郭点情報を参照して、この輪郭点が始端点に該当するベクトルか否かを判定する。この輪郭点が始端点に該当するベクトルの場合は、Ｓ７３０３に進み、そうではない場合にはＳ７３１６に進む。ここで、当該輪郭点が始端点に該当するベクトルか否かの判定処理は、前述したステップＳ５６０と同様に行う。
【０１９９】
Ｓ７３０３では、Ｓ７３０１で入力した輪郭点の座標値を、始端点Ｐ０の座標値  （ｘ０，ｙ０）とすると共に、同ベクトル列上のこの点に続く３点の座標値を順に、各々Ｐ１、Ｐ２、Ｐ３の座標値（ｘ１，ｙ１）、（ｘ２，ｙ２）、（ｘ３，ｙ３）として入力する。
【０２００】
次にＳ７３０４において、
始点ベクトルＶ０＝Ｖ０（ｖｘ０，ｖｙ０）と、
これに続くベクトルＶ１＝Ｖ１（ｖｘ１，ｖｙ１）とＶ２＝Ｖ２（ｖｘ２，ｖｙ２）を、
Ｖ０＝Ｖ０（ｖｘ０，ｖｙ０）＝Ｐ１−Ｐ０
＝（ｘ１，ｙ１）−（ｘ０，ｙ０）＝（ｘ１−ｘ０，ｙ１−ｙ０）  
Ｖ１＝Ｖ１（ｖｘ１，ｖｙ１）＝Ｐ２−Ｐ１
＝（ｘ２，ｙ２）−（ｘ１，ｙ１）＝（ｘ２−ｘ１，ｙ２−ｙ１）  
Ｖ２＝Ｖ２（ｖｘ２，ｖｙ２）＝Ｐ３−Ｐ２
＝（ｘ３，ｙ３）−（ｘ２，ｙ２）＝（ｘ３−ｘ２，ｙ３−ｙ２）
とする。且つ終端点Ｐｎの座標値  （ｘｎ，ｙｎ）をＰ３の座標値（ｘ３，ｙ３）とするとともに、同ベクトル列上のこの点に先立つ２点、Ｐｎ−１とＰｎ−２の座標値（ｘｎ−１，ｙｎ−１）と（ｘｎ−２，ｙｎ−２）を順に、それぞれ、Ｐ２、Ｐ１の座標値  （ｘ２，ｙ２）、（ｘ１，ｙ１）とする。
【０２０１】
その上で、終点ベクトルＶｎ−１＝Ｖｎ−１（ｖｘｎ―１，ｖｙｎ−１）と、
これに先立つベクトルＶｎ−２＝Ｖｎ−２（ｖｘｎ―２，ｖｙｎ−２）を、
Ｖｎ−１＝Ｖｎ−１（ｖｘｎ―１，ｖｙｎ−１）＝Ｐ３−Ｐ２＝（ｘ３，ｙ３）−（ｘ２，ｙ２）
＝（ｘ３−ｘ２，ｙ３−ｙ２）  
Ｖｎ−２＝Ｖｎ−２（ｖｘｎ―２，ｖｙｎ−２）＝Ｐ２−Ｐ１＝（ｘ２，ｙ２）−（ｘ１，ｙ１）
＝（ｘ２−ｘ１，ｙ２−ｙ１）
とする。
【０２０２】
かくして、Ｓ７３０４の端点部のノイズチェック準備に関する一連の処理を終えるとＳ７３０５に進む。
【０２０３】
Ｓ７３０５においては、始端点部での連続する３ベクトルがノイズパターンに合致するか否かの判定を行う。即ち、図２８（ａ），（ｃ）を用いて上述したように、
｜Ｖ０｜＝（ｖｘ０２＋ｖｙ０２）１／２＝｜ｖｘ０｜＋｜ｖｙ０｜  と
｜Ｖ１｜＝（ｖｘ１２＋ｖｙ１２）１／２＝｜ｖｘ１｜＋｜ｖｙ１｜  とが
共に２に等しく、且つ
Ｖ０とＶ２の向きが等しい、即ち、それらの内積が正、つまり、
（ｖｘ０×ｖｘ２）＋（ｖｙ０×ｖｙ２）＞  ０
であるか否かを判定する。
【０２０４】
もしそうなら、始端点部でのノイズパターンに合致するので、以降、Ｓ７３２１に進んで、図２９（ａ）と図３０（ｃ）を用いて上述した一連の始端点修正処理（Ｓ７３２１〜Ｓ７３２４）を行う。そうでないなら、始端点部でのノイズパターンには合致しないので、以降、Ｓ７３０６へ進んで、始端点修正処理は施さずにそのまま始端点として出力する一連の処理（Ｓ７３０６〜Ｓ７３０８）を行う。
【０２０５】
Ｓ７３０６では、もともとの始端点Ｐ０の座標値（ｘ０，ｙ０）を原始端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。
【０２０６】
次にＳ７３０７では、この場合、始端点部での補正は行われていないので、
ΔＰｓ  ＝（Δｘｓ，  Δｙｓ）＝（０，  ０）
を始端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０２０７】
またＳ７３０８では、もともとの始端点Ｐ０の座標値（ｘ０，ｙ０）を始端点Ｐｓの座標値（ｘｓ，ｙｓ）として、つまりは、現時点で処理中のベクトル列の第１点の座標値として、入力中の粗輪郭ベクトルデータと同様に、図２４に示す形式で、ＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。
【０２０８】
かくして、Ｓ７３０６〜Ｓ７３０８において始端点修正処理は施さずにそのまま始端点として出力する一連の処理を行い、Ｓ７３０９へ進む。
【０２０９】
Ｓ７３０９においては、終端点部での連続する３ベクトルがノイズパターンに合致するか否かの判定を行う。即ち、図２８（ｂ）と（ｄ）を用いて上述したように、
｜Ｖｎ−１｜＝（ｖｘｎー１２＋ｖｙｎ−１２）１／２
＝｜ｖｘｎー１｜＋｜ｖｙｎー１｜  と
｜Ｖｎ−２｜＝（ｖｘｎ−２２＋ｖｙｎ−２２）１／２
＝｜ｖｘｎ−２｜＋｜ｖｙｎ−２｜  とが
共に２に等しく、且つ
Ｖｎ−１とＶｎ−３の向きが等しい、即ち、それらの内積が正、つまり
（ｖｘｎ−１×ｖｘｎ−３）＋（ｖｙｎ−１×ｖｙｎ−３）＞  ０
であるか否かを判定する。
【０２１０】
もしそうなら、終端点部でのノイズパターンに合致するので、以降、Ｓ７３１０に進んで、図２９（ｂ）と図３０（ｄ）を用いて上述した一連の終端点修正処理（Ｓ７３１０〜Ｓ７３１３）を行う。そうでないなら、終端点部でのノイズパターンには合致しないので、以降、Ｓ７３３０へ進んで、終端点修正処理は施さずにそのまま終端点として出力する一連の処理を行う。
【０２１１】
Ｓ７３１０では、修正終端点Ｐｎ’の座標値（ｘｎ’，ｙｎ’）を
Ｐｎ’＝  Ｐｎ−Ｖｎ−２＝  Ｐｎ−（Ｐｎ−１−Ｐｎ−２）  
＝Ｐ３−（Ｐ２−Ｐ１）
即ち、
（ｘｎ’，ｙｎ’）＝（ｘｎ，ｙｎ）  −（ｘｎ−１−ｘｎ−２，ｙｎ−１−ｙｎ−２）
＝（ｘｎ−ｘｎ−１＋ｘｎ−２，ｙｎ−ｙｎ−１＋ｙｎ−２）
として求め，この修正終端点Ｐｎ’の座標値（ｘｎ’，ｙｎ’）をもって、あらためて終端点Ｐｅの座標値Ｐｅの座標値（ｘｅ，ｙｅ）とする。
即ち、（ｘｅ，ｙｅ）＝（ｘｎ’，ｙｎ’）＝（ｘ３−ｘ２＋ｘ１，ｙ３−ｙ２＋ｙ１）
である。
【０２１２】
次に、Ｓ７３１１において、もともとの終端点Ｐｎ（Ｐ３）の座標値（ｘ３，ｙ３）を原終端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。Ｓ７３１２では、終端点Ｐｅの座標値（ｘｅ，ｙｅ）を現時点で処理中のベクトル列の終端点の座標値として、入力中の粗輪郭ベクトルデータと同様な図２４に示す形式で登録・保持する。
【０２１３】
Ｓ７３１３では、原終端点Ｐｎから終端点Ｐｅ  への終端点補正量ΔＰｅ  ＝（Δｘｓ，  Δｙｓ）を
ΔＰｅ  ＝−Ｖｎ−２＝−（Ｐ２−Ｐ１）
即ち、
（Δｘｅ，  Δｙｅ）＝−（ｖｘｎ−２，ｖｙｎ−２）
＝−（ｘｎ−１−ｘｎ−２，ｙｎ−１−ｙｎ−２）
＝（ｘ１−ｘ２，ｙ１−ｙ２）
として、図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０２１４】
かくして、Ｓ７３１０〜Ｓ７３１３において一連の始端点修正処理を行い、Ｓ７３１４へ進む。
【０２１５】
Ｓ７３１４では、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値について逆順コピー貼り付けを行う。これは、Ｓ７２０８での始端点及びＳ７２１２での終端点のそれぞれについて、前記Ｓ６３０と同様の処理を行う。
【０２１６】
次に、Ｓ７３１５では、それまでに生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数の値を４として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。Ｓ７３１５を終えるとＳ７３０の８点以下の入力ベクトル列に対しての一連の端点部のノイズ除去処理を終えて、Ｓ６５０に進む。
【０２１７】
次に、Ｓ７３１６における動作を説明する。
【０２１８】
Ｓ７３１６では、直前のＳ７３０２で始端点ではないと判定されたベクトルが、処理中の注目ベクトル列の最後のベクトルであるか否かを判定する。もし、最終ベクトルである場合には、注目ベクトル列内には始端点が存在しない、つまりは、閉ループを構成するベクトル列であり、Ｓ７３１７に進む。一方、最終ベクトルではない場合には、Ｓ７３０１に戻り、注目ベクトル列内の次のベクトルが始端点か否かの判断を繰り返す。
【０２１９】
Ｓ７３１７では、注目ベクトル列内には始端点が存在しない、つまりは、閉ループを構成するベクトル列であることを示すために、Ｓ６８０と同様の登録・保持処理を行う。
【０２２０】
次にＳ７３１８では、この場合、終端点部での補正は行われていないので、
ΔＰｅ  ＝（Δｘｅ，Δｙｅ）＝（０，０）
を終端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０２２１】
Ｓ７３１９では、注目中のベクトル列内の輪郭点全てを、入力中の粗輪郭ベクトルデータと同様な図２４に示す形式で、且つＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。Ｓ７３２０では、生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数として、注目するベクトル列中にある輪郭点数と同じ値として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０２２２】
かくして、Ｓ７３１７〜Ｓ７３２０では、注目ベクトル列内には始端点が存在しない、つまりは、閉ループを構成するベクトル列に対する端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の生成を行い、Ｓ６５０に進む。
【０２２３】
Ｓ７３２１では、修正始端点Ｐ０’の座標値（ｘ０’，ｙ０’）を
Ｐ０’＝  Ｐ０＋Ｖ１＝  Ｐ０＋（Ｐ２−Ｐ１）  
即ち、
（ｘ０’，ｙ０’）＝（ｘ０，ｙ０）＋（ｘ２−ｘ１，ｙ２−ｙ１）
＝（ｘ０−ｘ１＋ｘ２，ｙ０−ｙ１＋ｙ２）
＝（ｘ０−ｘ１＋ｘ２，ｙ０−ｙ１＋ｙ２）
として求め、この修正始端点Ｐ０’の座標値（ｘ０’，ｙ０’）をもって、あらためて始端点Ｐｓの座標値（ｘｓ，ｙｓ）とする。
【０２２４】
即ち、（ｘｓ，ｙｓ）＝（ｘ０’，ｙ０’）＝（ｘ０−ｘ１＋ｘ２，ｙ０−ｙ１＋ｙ２）
である。
【０２２５】
次に、Ｓ７３２２において、始端点Ｐｓの座標値（ｘｓ，  ｙｓ）を現時点で処理中のベクトル列の第１点の座標値として、入力中の粗輪郭ベクトルデータと同様に、図２４に示す形式で、ＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。
【０２２６】
Ｓ７３２３では、もともとの始端点Ｐ０の座標値（ｘ０，ｙ０）を原始端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。
【０２２７】
Ｓ７３２４では、原始端点Ｐ０から始端点Ｐｓ  への始端点補正量ΔＰｓ  ＝（Δｘｓ，  Δｙｓ）を
ΔＰｓ  ＝Ｖ１＝  Ｐ２−Ｐ１
即ち、
（Δｘｓ，  Δｙｓ）＝（ｖｘ１，ｖｙ１）＝（ｘ２−ｘ１，ｙ２−ｙ１）
として、図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０２２８】
かくして、Ｓ７３２１〜Ｓ７３２４において一連の始端点修正処理を行い、引き続きＳ７３２５へ進む。
【０２２９】
Ｓ７３２５では、もともとの終端点Ｐｎ（Ｐ３）の座標値（ｘ３，ｙ３）を終端点Ｐｅの座標値（ｘｅ，ｙｅ）として、現時点で処理中のベクトル列の終端点の座標値として、Ｓ５８５やＳ５８８で説明した、入力中の粗輪郭ベクトルデータと同様な図２４に示す形式で、且つＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。またＳ７３２６では、もともとの終端点Ｐｎ（Ｐ３）の座標値（ｘ３，ｙ３）を原終端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。
【０２３０】
次にＳ７３２７では、この場合、終端点部での補正は行われていないので、
ΔＰｅ  ＝（Δｘｅ，  Δｙｅ）＝（０，  ０）
を終端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。かくして、Ｓ７３２５〜Ｓ７３２７において終端点修正処理は施さずにそのまま終端点として出力する一連の処理を行う。
【０２３１】
次に、Ｓ７３２８では、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値について逆順コピー貼り付けを行う。即ち、Ｓ７３２２で始端点、及びＳ７３２５で終端点のそれぞれについて、前記Ｓ６３０と同様の処理を行う。これにより、Ｓ７３２８では、始端点と終端点間を往復する座標点列となるように端点部のノイズ除去処理済の線芯（周回）化済ベクトル列を生成する。
【０２３２】
次に、Ｓ７３２９では、それまでに生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数の値を４として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。Ｓ７３２９を終えるとＳ７３０の８点以下の入力ベクトル列に対しての一連の端点部のノイズ除去処理を終えて、Ｓ６５０に進む。
【０２３３】
Ｓ７３３０では、始端点部も終端点部も共にノイズパターンではない場合である。Ｓ７３０３で入力した３ベクトル（輪郭点）は、そのまま順に、注目するベクトル列の始端点の次の点から終端点のまでの輪郭点であるとして、入力中の粗輪郭ベクトルデータと同様な図２４に示す形式で登録・保持する。これは、ＲＡＭ５２０上のデータ領域において、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力して、登録・保持する。
【０２３４】
次に、Ｓ７３３１では、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値について逆順コピー貼り付けを行う。即ち、Ｓ７３０８で始端点、Ｓ７３３０で始端点と終端点の間にある２点と終端点とのそれぞれについて、前記Ｓ６３０と同様の処理を行う。これにより、Ｓ７３３１では、始端点と終端点間を往復する座標点列となるように端点部のノイズ除去処理済の線芯（周回）化済ベクトル列を生成する。
【０２３５】
またＳ７３３２では、もともとの終端点Ｐｎ（Ｐ３）の座標値（ｘ３，ｙ３）を原終端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。
【０２３６】
次にＳ７３３３では、この場合、終端点部での補正は行われていないので、
ΔＰｅ  ＝（Δｘｅ，Δｙｅ）＝（０，０）
を終端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０２３７】
かくして、Ｓ７３３０〜Ｓ７３３３において終端点修正処理は施さずにそのまま終端点として出力する一連の処理を行う。
【０２３８】
次に、Ｓ７３３４では、それまでに生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数の値を８として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。Ｓ７３３４を終えるとＳ７３０の８点以下の入力ベクトル列に対しての一連の端点部のノイズ除去処理を終えて、Ｓ６５０に進む。
【０２３９】
（Ｆ）１０点の輪郭点しか持たないベクトル列に対する処理
次に、Ｓ７４０の１０点の輪郭点しか持たないベクトル列に対する処理の流れを説明する。図４３、図４４及び図４５は、Ｓ７４０の１０点の輪郭点しか持たないベクトル列に対する処理を示すフローチャートである。
【０２４０】
処理を開始すると、Ｓ７４０１では、Ｓ５１０で入力した図２４に示したような形式の端点間毎線芯（周回）化済ベクトルの中に含まれる１つのベクトル列（図２４の第ｋ輪郭（１≦ｋ≦ａ））から順に１つのベクトル（輪郭点）を当面の処理対象として定める。
【０２４１】
Ｓ７４０２では、直前のＳ７４０１で定めた輪郭点の輪郭点情報を参照して、この輪郭点が始端点に該当するベクトルか否かを判定する。この輪郭点が始端点に該当するベクトルの場合は、Ｓ７４０３に進み、そうではない場合にはＳ７４１７に進む。
【０２４２】
Ｓ７４０３では、Ｓ７４０１で入力したばかりの輪郭点の座標値を、始端点Ｐ０の座標値  （ｘ０，ｙ０）とする。さらに、同ベクトル列上のこの点に続く４点の座標値を順に、各々、Ｐ１、Ｐ２、Ｐ３、Ｐ４の座標値（ｘ１，ｙ１）、（ｘ２，ｙ２）、（ｘ３，ｙ３）  、（ｘ４，ｙ４）として入力する。
【０２４３】
次にＳ７４０４において、
始点ベクトルＶ０＝Ｖ０（ｖｘ０，ｖｙ０）と、
これに続くベクトルＶ１＝Ｖ１（ｖｘ１，ｖｙ１）とＶ２＝Ｖ２（ｖｘ２，ｖｙ２）を、
Ｖ０＝Ｖ０（ｖｘ０，ｖｙ０）＝Ｐ１−Ｐ０
＝（ｘ１，ｙ１）−（ｘ０，ｙ０）＝（ｘ１−ｘ０，ｙ１−ｙ０）  
Ｖ１＝Ｖ１（ｖｘ１，ｖｙ１）＝Ｐ２−Ｐ１
＝（ｘ２，ｙ２）−（ｘ１，ｙ１）＝（ｘ２−ｘ１，ｙ２−ｙ１）  
Ｖ２＝Ｖ２（ｖｘ２，ｖｙ２）＝Ｐ３−Ｐ２
＝（ｘ３，ｙ３）−（ｘ２，ｙ２）＝（ｘ３−ｘ２，ｙ３−ｙ２）
とする。
【０２４４】
さらに、終端点Ｐｎの座標値  （ｘｎ，ｙｎ）をＰ４の座標値（ｘ４，ｙ４）とする。そして、同ベクトル列上のこの点に先立つ２点、Ｐｎ−１とＰｎ−２の座標値（ｘｎ−１，ｙｎ−１）と（ｘｎ−２，ｙｎ−２）を順に、それぞれ、Ｐ３、Ｐ２の座標値  （ｘ３，ｙ３）、（ｘ２，ｙ２）とした上で、
終点ベクトルＶｎ−１＝Ｖｎ−１（ｖｘｎ―１，ｖｙｎ−１）と、
これに先立つベクトルＶｎ−２＝Ｖｎ−２（ｖｘｎ―２，ｖｙｎ−２）を、
Ｖｎ−１＝Ｖｎ−１（ｖｘｎ―１，ｖｙｎ−１）＝Ｐｎ−Ｐｎ−１
＝Ｐ４−Ｐ３＝（ｘ４，ｙ４）−（ｘ３，ｙ３）
＝（ｘ４−ｘ３，ｙ４−ｙ３）  
Ｖｎ−２＝Ｖｎ−２（ｖｘｎ―２，ｖｙｎ−２）＝Ｐｎ―１−Ｐｎ−２
＝Ｐ３−Ｐ２＝（ｘ３，ｙ３）−（ｘ２，ｙ２）
＝（ｘ３−ｘ２，ｙ３−ｙ２）
とする。
【０２４５】
かくして、Ｓ７４０４の端点部のノイズチェック準備に関する一連の処理を終えるとＳ７４０５に進む。
【０２４６】
Ｓ７４０５においては、始端点部での連続する３ベクトルがノイズパターンに合致するか否かの判定を行う。即ち、図２８（ａ）と（ｃ）を用いて上述したように、
｜Ｖ０｜＝（ｖｘ０２＋ｖｙ０２）１／２＝｜ｖｘ０｜＋｜ｖｙ０｜  と
｜Ｖ１｜＝（ｖｘ１２＋ｖｙ１２）１／２＝｜ｖｘ１｜＋｜ｖｙ１｜  とが
共に２に等しく、且つＶ０とＶ２の向きが等しい、即ち、それらの内積が正、つまり
（ｖｘ０×ｖｘ２）＋（ｖｙ０×ｖｙ２）＞  ０
であるか否かを判定する。
【０２４７】
もしそうなら、始端点部でのノイズパターンに合致するので、以降、Ｓ７４２７に進んで、図２９（ａ）と図３０（ｃ）を用いて上述した一連の始端点修正処理（Ｓ７４２７〜Ｓ７４３０）を行う。そうでないなら、始端点部でのノイズパターンには合致しないので、以降、Ｓ７４０６へ進んで、始端点修正処理は施さずにそのまま始端点として出力する一連の処理（Ｓ７４０６〜Ｓ７４０８）を行う。
【０２４８】
Ｓ７４０６では、もともとの始端点Ｐ０の座標値（ｘ０，ｙ０）を原始端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。次にＳ７４０７では、この場合、始端点部での補正は行われていないので、
ΔＰｓ  ＝（Δｘｓ，Δｙｓ）＝（０，０）
を始端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０２４９】
またＳ７４０８では、もともとの始端点Ｐ０の座標値（ｘ０，ｙ０）を始端点Ｐｓの座標値（ｘｓ，ｙｓ）として、つまりは現時点で処理中のベクトル列の第１点の座標値として、入力中の粗輪郭ベクトルデータと同様に、図２４に示す形式で登録・保持する。これは、ＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力して登録・保持する。かくして、Ｓ７４０６〜Ｓ７４０８において始端点修正処理は施さずにそのまま始端点として出力する一連の処理を行い、Ｓ７４０９へ進む。
【０２５０】
Ｓ７４０９では、保持しているＰ２の座標値  （ｘ２，ｙ２）を第２番目の点の座標値として、Ｓ７４０８と同様に登録・保持する。次に、Ｓ７４１０においては、終端点部での連続する３ベクトルがノイズパターンに合致するか否かの判定を行う。即ち、図２８（ｂ）と（ｄ）を用いて上述したように、
｜Ｖｎ−１｜＝（ｖｘｎー１２＋ｖｙｎ−１２）１／２
＝｜ｖｘｎー１｜＋｜ｖｙｎー１｜  と
｜Ｖｎ−２｜＝（ｖｘｎ−２２＋ｖｙｎ−２２）１／２
＝｜ｖｘｎ−２｜＋｜ｖｙｎ−２｜  とが
共に２に等しく、且つＶｎ−１とＶｎ−３の向きが等しい、即ち、それらの内積が正、つまり、
（ｖｘｎ−１×ｖｘｎ−３）＋（ｖｙｎ−１×ｖｙｎ−３）＞０
であるか否かを判定する。もしそうなら、終端点部でのノイズパターンに合致するので、以降、Ｓ７４１１に進んで、図２９（ｂ）と図３０（ｄ）を用いて上述した一連の終端点修正処理（Ｓ７４１１〜Ｓ７３１４）を行う。そうでないなら、終端点部でのノイズパターンには合致しないので、以降、Ｓ７４２２へ進んで、終端点修正処理は施さずにそのまま終端点として出力する一連の処理を行う。
【０２５１】
Ｓ７４１１では、修正終端点Ｐｎ’の座標値（ｘｎ’，ｙｎ’）を
Ｐｎ’＝  Ｐｎ−Ｖｎ−２
＝  Ｐｎ−（Ｐｎ−１−Ｐｎ−２）  ＝Ｐ４−（Ｐ３−Ｐ２）
即ち、
（ｘｎ’，ｙｎ’）＝（ｘｎ，ｙｎ）  −（ｘｎ−１−ｘｎ−２，ｙｎ−１−ｙｎ−２）
＝（ｘｎ−ｘｎ−１＋ｘｎ−２，ｙｎ−ｙｎ−１＋ｙｎ−２）
として求め，この修正終端点Ｐｎ’の座標値（ｘｎ’，ｙｎ’）をもって、あらためて終端点Ｐｅの座標値Ｐｅの座標値（ｘｅ，ｙｅ）とする。即ち、
（ｘｅ，ｙｅ）＝（ｘｎ’，ｙｎ’）＝（ｘ４−ｘ３＋ｘ２，ｙ４−ｙ３＋ｙ２）
である。
【０２５２】
次に、Ｓ７４１２において、もともとの終端点Ｐｎ（Ｐ４）の座標値（ｘ４，ｙ４）を原終端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。
【０２５３】
Ｓ７４１３では、終端点Ｐｅの座標値（ｘｅ，ｙｅ）を現時点で処理中のベクトル列の終端点の座標値として、入力中の粗輪郭ベクトルデータと同様な図２４に示す形式で登録・保持する。これは、ＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力して登録・保持する。
【０２５４】
Ｓ７４１４では、原終端点Ｐｎから終端点Ｐｅ  への終端点補正量ΔＰｅ  ＝（Δｘｓ，  Δｙｓ）を
ΔＰｅ  ＝−Ｖｎ−２＝−（Ｐ３−Ｐ２）
即ち、
（Δｘｅ，  Δｙｅ）＝−（ｖｘｎ−２，ｖｙｎ−２）
＝−（ｘｎ−１−ｘｎ−２，ｙｎ−１−ｙｎ−２）
＝（ｘ１−ｘ２，ｙ１−ｙ２）
として、図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。かくして、Ｓ７４１１〜Ｓ７４１４において一連の始端点修正処理を行い、Ｓ７３１５へ進む。
【０２５５】
Ｓ７４１５では、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値について逆順コピー貼り付けを行う。即ち、Ｓ７４０８での始端点、Ｓ７４０９での第二番目の点、並びにＳ７４１３での終端点のそれぞれについて、前記Ｓ６３０と同様の処理を行う。これにより、Ｓ７４１５では、始端点と終端点間を往復する座標点列となるように端点部のノイズ除去処理済の線芯（周回）化済ベクトル列を生成する。
【０２５６】
次に、Ｓ７４１６では、それまでに生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数の値を６として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。Ｓ７４１６を終えるとＳ７４０の１０点以下の入力ベクトル列に対しての一連の端点部のノイズ除去処理を終えて、Ｓ６５０に進む。
【０２５７】
次に、Ｓ７４１７における動作を説明する。
【０２５８】
Ｓ７４１７では、直前のＳ７４０２で始端点ではないと判定されたベクトルが、処理中の注目ベクトル列の最後のベクトルであるか否かを判定する。もし、最終ベクトルである場合には、注目ベクトル列内には始端点が存在しない、つまりは、閉ループを構成するベクトル列であり、Ｓ７４１８に進む。一方、最終ベクトルではない場合には、Ｓ７４０１に戻り、注目ベクトル列内の次のベクトルが始端点か否かの判断を繰り返す。
【０２５９】
Ｓ７４１８では、注目ベクトル列内には始端点が存在しない、つまりは閉ループを構成するベクトル列であることを示すために、前記Ｓ６８０と同様の処理を行う。次にＳ７４１９では、この場合、終端点部での補正は行われていないので、
ΔＰｅ＝（Δｘｅ，Δｙｅ）＝（０，０）
を終端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０２６０】
Ｓ７４２０では、注目中のベクトル列内の輪郭点全てを、入力中の粗輪郭ベクトルデータと同様な図２４に示す形式で、且つＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。
【０２６１】
Ｓ７４２１では、生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数として、注目するベクトル列中にある輪郭点数と同じ値として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０２６２】
かくして、Ｓ７４１８〜Ｓ７４２１では、注目ベクトル列内には始端点が存在しない、つまりは、閉ループを構成するベクトル列に対する端点部のノイズ除去処理済の線芯（周回）化済ベクトル列（実際は、閉ループマーカとなる原始端点・原終端点情報と、入力と全く同じ座標値をもつデータ列となる）の生成を行い、Ｓ６５０に進む。
【０２６３】
Ｓ７４２２では、始端点部、終端点部共にノイズパターンではない場合であり、Ｓ７４０３で入力した４ベクトル（輪郭点）は、そのまま順に、注目するベクトル列の始端点の次の点から終端点のまでの輪郭点であるとし、前記Ｓ５８５やＳ５８８と同様の登録・保持を行う。但し、始端点と第２番目の点に関しては、それぞれ既にＳ７４０８とＳ７４０９で出力済であるので，ここでは、第３点〜第５点（終端点）のデータのみを、それぞれのデータとして、Ｐ２、Ｐ３、Ｐ４を出力する。
【０２６４】
次に、Ｓ７４２３では、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値について逆順コピー貼り付けを行う。即ち、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値を、Ｓ７４０８での始端点、Ｓ７４０９での第２点、並びにＳ７４２３での第３点から第５点（終端点）までのそれぞれについて前記Ｓ６３０と同様の処理を行う。これにより、Ｓ７４２３では、始端点と終端点間を往復する座標点列となるように端点部のノイズ除去処理済の線芯（周回）化済ベクトル列を生成する。
【０２６５】
またＳ７４２４では、もともとの終端点Ｐｎ（Ｐ４）の座標値（ｘ４，ｙ４）を原終端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。
【０２６６】
次にＳ７４２５では、この場合、終端点部での補正は行われていないので、
ΔＰｅ  ＝（Δｘｅ，Δｙｅ）＝（０，０）
を終端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。かくして、Ｓ７４２２〜Ｓ７４２６において終端点修正処理は施さずにそのまま終端点として出力する一連の処理を行う。
【０２６７】
次に、Ｓ７４２６では、それまでに生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数の値を１０として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。Ｓ７６２６を終えるとＳ７４０の１０点以下の入力ベクトル列に対しての一連の端点部のノイズ除去処理を終えて、Ｓ６５０に進む。
【０２６８】
一方、Ｓ７４２７では、修正始端点Ｐ０’の座標値（ｘ０’，ｙ０’）を
Ｐ０’＝  Ｐ０＋Ｖ１＝  Ｐ０＋（Ｐ２−Ｐ１）  
即ち、
（ｘ０’，ｙ０’）＝（ｘ０，ｙ０）＋（ｘ２−ｘ１，ｙ２−ｙ１）
＝（ｘ０−ｘ１＋ｘ２，ｙ０−ｙ１＋ｙ２）
として求め、この修正始端点Ｐ０’の座標値（ｘ０’，ｙ０’）をもって、あらためて始端点Ｐｓの座標値
（ｘｓ，ｙｓ）とする。即ち、
（ｘｓ，ｙｓ）＝（ｘ０’，ｙ０’）＝（ｘ０−ｘ１＋ｘ２，ｙ０−ｙ１＋ｙ２）
である。
【０２６９】
次に、Ｓ７４２８において、もともとの始端点Ｐ０の座標値（ｘ０，ｙ０）を原始端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。
【０２７０】
Ｓ７４２９では、原始端点Ｐ０から始端点Ｐｓ  への始端点補正量ΔＰｓ  ＝（Δｘｓ，  Δｙｓ）を
ΔＰｓ  ＝Ｖ１＝  Ｐ２−Ｐ１
即ち、
（Δｘｓ，  Δｙｓ）＝（ｖｘ１，ｖｙ１）
＝（ｘ２−ｘ１，ｙ２−ｙ１）
として、図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０２７１】
Ｓ７４３０では、始端点Ｐｓの座標値（ｘｓ，  ｙｓ）を現時点で処理中のベクトル列の第１点の座標値として、入力中の粗輪郭ベクトルデータと同様に、図２４に示す形式で、ＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。
【０２７２】
かくして、Ｓ７４２７〜Ｓ７４３０において一連の始端点修正処理を行い、引き続きＳ７４３１へ進む。
【０２７３】
Ｓ７４３１においては、終端点部での連続する３ベクトルがノイズパターンに合致するか否かの判定を行う。即ち、図２８（ｂ）と（ｄ）を用いて上述したように、
｜Ｖｎ−１｜＝（ｖｘｎー１２＋ｖｙｎ−１２）１／２
＝｜ｖｘｎー１｜＋｜ｖｙｎー１｜  と
｜Ｖｎ−２｜＝（ｖｘｎ−２２＋ｖｙｎ−２２）１／２
＝｜ｖｘｎ−２｜＋｜ｖｙｎ−２｜  とが
共に２に等しく、且つ
Ｖｎ−１とＶｎ−３の向きが等しい、即ち、それらの内積が正、つまり
（ｖｘｎ−１×ｖｘｎ−３）＋（ｖｙｎ−１×ｖｙｎ−３）＞０
であるか否かを判定する。
【０２７４】
もしそうなら、終端点部でのノイズパターンに合致するので、以降、Ｓ７４３８に進んで、図２９（ｂ）と図３０（ｄ）を用いて上述した一連の終端点修正処理（Ｓ７４３９〜Ｓ７４４２）を行う。そうでないなら、終端点部でのノイズパターンには合致しないので、以降、Ｓ７４３２へ進んで、終端点修正処理は施さずにそのまま終端点として出力する一連の処理を行う。
【０２７５】
Ｓ７４３２では、始端点部はノイズパターンに該当し、終端点部はノイズパターンではない場合であり、保持しているＰ３の座標値（ｘ３，ｙ３）を第２番目の点の座標値として、入力中の粗輪郭ベクトルデータと同様に、図２４に示す形式で、ＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。
【０２７６】
Ｓ７４３３では、保持しているＰ３の座標値  （ｘ３，ｙ３）を原終端点Ｐｎの座標値  （ｘｎ，ｙｎ）とし、原始端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。
【０２７７】
次に、Ｓ７４３４では、保持しているＰ３の座標値  （ｘ３，ｙ３）を終端点Ｐｅの座標値  （ｘｅ，ｙｅ）として、入力中の粗輪郭ベクトルデータと同様に登録・保持する。
【０２７８】
次にＳ７４３５では、この場合、終端点部での補正は行われていないので、
ΔＰｅ  ＝（Δｘｅ，  Δｙｅ）＝（０，  ０）
を終端点補正情報として図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。
【０２７９】
Ｓ７４３６では、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値について逆順コピー貼り付けを行う。即ち、一貫して図２４に示す形式でここまでに出力されて形成された処理中の１ベクトル列に関しての始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値を、その直後に、図２４に示す形式で逆順に順次コピーして付け加えていく。これにより、Ｓ７４３６では、始端点と終端点間を往復する座標点列となるように端点部のノイズ除去処理済の線芯（周回）化済ベクトル列を生成する。
【０２８０】
Ｓ７４３７では、それまでに生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数の値を６として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。Ｓ７４３７を終えるとＳ７４０の１０点以下の入力ベクトル列に対しての一連の端点部のノイズ除去処理を終えて、Ｓ６５０に進む。
【０２８１】
次に、Ｓ７４３８では、保持しているＰ２の座標値  （ｘ２，ｙ２）を第２番目の点の座標値として、図２４に示す形式で、ＲＡＭ５２０上のデータ領域において、入力中の粗輪郭ベクトルデータとは異なる領域に登録・保持する。
【０２８２】
Ｓ７４３９では、修正終端点Ｐｎ’の座標値（ｘｎ’，ｙｎ’）を
Ｐｎ’＝Ｐｎ−Ｖｎ−２
＝Ｐｎ−（Ｐｎ−１−Ｐｎ−２）＝Ｐ４−（Ｐ３−Ｐ２）
即ち、
（ｘｎ’，ｙｎ’）＝（ｘｎ，ｙｎ）−（ｘｎ−１−ｘｎ−２，ｙｎ−１−ｙｎ−２）
＝（ｘｎ−ｘｎ−１＋ｘｎ−２，ｙｎ−ｙｎ−１＋ｙｎ−２）
として求め，この修正終端点Ｐｎ’の座標値（ｘｎ’，ｙｎ’）をもって、あらためて終端点Ｐｅの座標値（ｘｅ，ｙｅ）とする。即ち、
（ｘｅ，ｙｅ）＝（ｘｎ’，ｙｎ’）＝（ｘ４−ｘ３＋ｘ２，ｙ４−ｙ３＋ｙ２）
である。
【０２８３】
そして、終端点Ｐｅの座標値（ｘｅ，ｙｅ）を現時点で処理中のベクトル列の終端点の座標値として、図２４に示す形式で、且つＲＡＭ５２０上のデータ領域で、入力中の粗輪郭ベクトルデータとは異なるデータ領域に出力し、登録・保持する。
【０２８４】
Ｓ７４４０では、始端点Ｐｓから終端点Ｐｅまでの処理済の輪郭点座標値について逆順コピー貼り付けを行う。即ち、Ｓ７４３０での始端点、Ｓ７４３８での第二番目の点、及びＳ７４３９での終端点のそれぞれについて、前記Ｓ６３０と同様の処理を行う。
【０２８５】
Ｓ７４４１では、もともとの終端点Ｐｎ（Ｐ４）の座標値（ｘ４，ｙ４）を原終端点情報として、例えば、図３６（ａ）に示すような形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。
【０２８６】
Ｓ７４４２では、原終端点Ｐｎから終端点Ｐｅ  への終端点補正量ΔＰｅ  ＝（Δｘｓ，  Δｙｓ）を
ΔＰｅ  ＝−Ｖｎ−２＝−（Ｐ３−Ｐ２）
即ち、
（Δｘｅ，Δｙｅ）＝−（ｖｘｎ−２，ｖｙｎ−２）
＝−（ｘｎ−１−ｘｎ−２，ｙｎ−１−ｙｎ−２）＝（ｘ１−ｘ２，ｙ１−ｙ２）
として、図３６（ａ）に示すような形式でＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。かくして、Ｓ７４３８〜Ｓ７４４２において一連の始端点修正処理を行い、Ｓ７４４３へ進む。
【０２８７】
次に、Ｓ７４４３では、それまでに生成した端点部のノイズ除去処理済の線芯（周回）化済ベクトル列の輪郭点数の値を６として図２４に示す形式に合わせて該当するＲＡＭ５２０上に保持されるデータ領域に出力し、登録・保持する。Ｓ７４４３を終えるとＳ７４０の１０点以下の入力ベクトル列に対しての一連の端点部のノイズ除去処理を終えて、Ｓ６５０に進む。
【０２８８】
以上説明してきたように、端点部ノイズ検出・修正部３１５０は、前記周回ベクトル生成部３１０により生成された端点間毎線芯（周回）ベクトルを入力する。そして、端点間毎線芯（周回）化済ベクトルの端点部付近におけるノイズ特有のベクトル並びの有無を吟味し（端点部ノイズ検出部３１５１）、その存在が検出される場合には、該ノイズ特有のベクトルの並びを修正する（端点部ノイズ修正部３１５２）。さらに、このノイズ特有のベクトル並びの修正処理に基づく端点修正情報を含む原始端点・原終端点情報を生成する（端点修正情報生成部３１５３）。
【０２８９】
かくして、端点部ノイズ検出・修正部３１５０は、ノイズ特有のベクトル並びの修正処理に基づく端点修正情報を含む原始端点・原終端点情報と、図２４に示す形式でのノイズ検出・修正処理済の輪郭点情報とを出力する。前者の原始端点・原終端点情報は、図３６（ａ），（ｂ）に示すような形式であり、後者のノイズ検出・修正処理済の輪郭点情報は、図２４に示す形式である。これ以降、前記原始端点・原終端点情報を修正処理済始端点・終端点情報と称し、前記ノイズ検出・修正処理済の輪郭点情報を修正処理済端点間毎線芯（周回）ベクトルと称する。
【０２９０】
周回ベクトル生成部３２０は、周回ベクトル平滑部３３０により平滑化処理される際に、端点部分に相当するベクトルが、端点位置が不明にならぬように、端点部分に相当する部分が端点として保存されるように補助ベクトルを挿入する。加えて、平滑化済ベクトル同定部３４０において、周回ベクトル平滑部３３０より得られる上記の平滑化済端点間毎補助ベクトル入り（周回）ベクトルから、各平滑化済の（周回）ベクトル毎にそれぞれの始端点と終端点となるベクトルを同定する。そして、始端点と終端点の間のみの部分の非周回型のベクトル列を生成するために用いられる各平滑化済の（周回）ベクトル毎の始端点・終端点情報をも生成する。
【０２９１】
ベクトル平滑化の流れは、以下の如きである。
【０２９２】
まず、粗輪郭データと称して、２値のラスタ画像のデータより抽出された、水平ベクトル、垂直ベクトルが交互に並ぶ構成となる輪郭データを入力とし、粗輪郭上の線分より接線線分を抽出する。抽出された接線線分よりアンカーポイントを抽出し、抽出されたアンカーポイント間の線分により構成されるグループを２次もしくは３次ベジェ曲線、及び直線を当てはめ、あるいは、ベジェ曲線近似を行い、３次もしくは２次のベジェ曲線により置き換えていく。
【０２９３】
ここで、アンカーポイントとして定めた点をもとに、アンカーポイント間にある輪郭点を１つのグループとして関数近似してい方法は、関数近似法としての基本的な手法である。また、アンカーポイントは、その間が、２次もしくは３次ベジェ曲線、及び直線のいずれに関数近似されたとしても、アンカーポイント自体の位置（座標値）は、変化しないという特徴をもつ。
【０２９４】
そこで、周回ベクトル生成部３２０では、端点間毎線芯（周回）化済ベクトルの端点のそれぞれを、一方を始端点と他方を終端点とし、且つそれらが共にアンカーポイントとなるように始端点と終端点間に補助ベクトル（補助輪郭点）を挿入していく処理をする。
【０２９５】
接線線分とするベクトルの抽出の条件として、
（１）注目するベクトルの前後のベクトルの向きが互いに逆向きであるもの
（２）抽出済みの主接線線分に隣接し、ベクトルの長さＬ１がＬ１≧θ4を満たすもの
（３）ベクトルの長さＬ２がＬ２≧θ5を満たすもの
等の条件が挙げられる。
【０２９６】
また、アンカーポイントの抽出に関して、抽出された接線線分上に新たな点を抽出し、それをアンカーポイントとする。アンカーポイントは接線線分の端２つに対しそれぞれ抽出される。よって、１つの接線線分に対し２つのアンカーポイントが抽出されるが、該２つのアンカーポイントが一致した場合には１つのアンカーポイントのみ抽出されることになる。２つのアンカーポイントが抽出される場合は、アンカーポイントに挟まれた部位は自動的にオブジェクト上の直線となる。接線線分上の１つの端点に対するアンカーポイント抽出方法としては、注目する接線線分であるベクトルに隣接するベクトルが接線線分であれば、この隣接する側の端点をアンカーポイントとする。
【０２９７】
そこで、周回ベクトル生成部３２０は、点間毎線芯（周回）化済ベクトルの端点のそれぞれを、一方を始端点と他方を終端点とし、且つそれらが共にアンカーポイントとなるように、補助点を挿入する。
【０２９８】
図３５（ａ），（ｂ）は、始端点の直前と終端点の直後に挿入する補助輪郭点の概念を示す図である。
【０２９９】
図３５（ａ）を用いて、始端点としたい端点Ｐ０の直前に挿入する補助輪郭点Ｐ−１の挿入方法を説明する。
【０３００】
補助輪郭点Ｐ−１を、これを始点とする補助ベクトルＶ−１が、始端点としたい端点Ｐ０の直後の輪郭点Ｐ１を始点とするベクトルＶ１と逆向きになるように、補助輪郭点Ｐ−１を定める。このようにすれば、上述の、接線線分の抽出条件の（１）から、ベクトルＶ０が接線線分となる。
【０３０１】
また、補助輪郭点Ｐ−１を、これを始点とする補助ベクトルＶ−１が、上述の、接線線分の抽出条件の（３）を満たすように十分な長さを持つようにする。このようにすれば、補助ベクトルＶ−１もまた接線線分となる。
【０３０２】
補助ベクトルＶ−１とベクトルＶ０とが共に接線線分となることにより、始端点としたい端点Ｐ０をアンカーポイントとすることができる。これは、上述のアンカーポイント抽出方法における“注目する接線線分であるベクトルに隣接するベクトルが接線線分であれば、この隣接する側の端点をアンカーポイントとする”という条件による。
【０３０３】
次に、図３５（ｂ）を用いて、終端点としたい端点Ｐｎの直後に挿入する補助輪郭点Ｐｎ＋１の挿入方法を説明する。
【０３０４】
補助輪郭点Ｐｎ＋１を、これを終点とする補助ベクトルＶｎが、終端点としたい端点Ｐｎの直前の輪郭点Ｐｎ−１を終点とするベクトルＶｎ−２と逆向きになるように、補助輪郭点Ｐｎ＋１を定める。このようにすれば、上述の、接線線分の抽出条件の（１）から、ベクトルＶｎ−１が接線線分となる。
【０３０５】
また、Ｐｎ＋１を、これを終点とする補助ベクトルＶｎが上述の接線線分の抽出条件の（３）を満たすように十分な長さを持つようにする。このようにすれば、補助ベクトルＶｎもまた接線線分となる。補助ベクトルＶｎ−１とベクトルＶｎとが共に接線線分となることにより、上述のアンカーポイント抽出方法における条件から、終端点としたい端点Ｐｎをアンカーポイントとすることができる。
【０３０６】
このように、始端点と終端点がアンカーポイントになるように、それぞれ、始端点の直前への挿入点と終端点の直後への挿入点を定める。その後、これらの挿入点が水平ベクトルと垂直ベクトルの連続で連結され、始端点から終端点までの本来の輪郭点列と終端点の直後から始端点の直前までの挿入点をへて再び始端点につながる一連の輪郭点列を生成する。さらに、この一連の輪郭点列の中での補助点数と、総輪郭点数を生成する。
【０３０７】
＜周回ベクトル生成部３２０の動作＞
次に、周回ベクトル生成部３２０の動作を説明する。図４６は、周回ベクトル生成部３２０の動作を示すフローチャートである。
【０３０８】
同図において、処理を開始すると、Ｓ３００において、周回ベクトル生成部３１５０より得られた、修正処理済端点間毎線芯（周回）化済ベクトルを入力する。次に、Ｓ３１０では、Ｓ３００で入力した図２４に示したような形式の修正処理済端点間毎線芯（周回）化済ベクトルから、その中に含まれる１つのベクトル列（図２４の第ｋ輪郭（１≦ｋ≦ａ））を当面の処理対象として順に定める。
【０３０９】
次に、Ｓ３２０では、Ｓ３１０で定めたベクトル列（総点数ｐとする）の中の１つのベクトルの輪郭点（第ｑ点（１≦ｑ≦ｐ））として、Ｓ３３０で始端点が見つけられるまでの間、Ｓ３２０が実行されるたびに第１点から第ｐ点までを昇順に順次１点ずつ当面の処理対象として定める。
【０３１０】
次に、Ｓ３３０では、Ｓ３２０で定めた輪郭点の輪郭点情報を参照して、この輪郭点が始端点とすべきベクトルか否かを判定し、この輪郭点が始端点とすべきベクトルの場合は、Ｓ３６０に進み、そうではない場合にはＳ３４０に進む。
【０３１１】
Ｓ３４０では、これで、Ｓ３１０で入力した端点間毎線芯（周回）化済ベクトルの中に含まれる１つのベクトル列中の全てのベクトルの処理が終了したか否かを判定する。そうでなければ、当該ベクトル列中の次のベクトルに対してＳ３２０の判定を施すべくＳ３１０へ戻る。そうであれば、Ｓ３１０で入力したベクトル列中には、始端点候補が存在しな且つ、た場合（つまりは、原画である２値画像（線画）上で、当該線素が閉ループであった場合）であり、Ｓ３５０へ進む。
【０３１２】
Ｓ３５０では、該ベクトル列中の一連の各ベクトルをそのまま出力する。このデータ形式を図３６（ｃ）に示した。同図において、対象としたベクトル列は第ｔ番目であった場合で、そのベクトル列中には（Ｎｔ＋１）個のベクトルが含まれている場合の例である。なお、この場合には、挿入される補助ベクトルは発生しないため、同図におけるｒｔ＝０であり、全て線素ベクトル部分となり、補助ベクトル部分は発生しない。Ｓ３５０の処理を終えると、Ｓ４２０へ進む。
【０３１３】
Ｓ３６０では、該輪郭点を図３６（ｃ）における始端点〜終端点間の第１番目のベクトルとして出力してＳ３７０へ進む。Ｓ３７０では、Ｓ３２０と同様に、Ｓ３１０で定めたベクトル列（総点数ｐとする）の中の１つのベクトルの輪郭点（第ｑ点（１≦ｑ≦ｐ））として、Ｓ３８０で終端点が見つけられるまでの間、次のような処理を行う。即ち、Ｓ３２０で定められた輪郭点以降の点を、Ｓ３７０が実行されるたびにＳ３２０で定められた輪郭点以降の点から第ｐ点に向けて昇順に順次１点ずつ当面の処理対象として定め、Ｓ３８０に進む。
【０３１４】
次に、Ｓ３８０では、Ｓ３７０で定めた輪郭点の輪郭点情報を参照して、この輪郭点が終端点とすべきベクトルか否かを判定し、この輪郭点が終端点とすべきベクトルの場合は、Ｓ４００に進み、そうではない場合にはＳ３９０に進む。
【０３１５】
Ｓ３９０では、該輪郭点を図３６（ｃ）における始端点〜終端点間の注目ベクトル列の１ベクトルとして順次に出力してＳ３７０へ戻る。Ｓ４００では、該輪郭点を図３６（ｃ）における始端点〜終端点間の注目ベクトル列の終端点のベクトルとして出力してＳ４１０へ進む。
【０３１６】
Ｓ４１０では、当該ベクトル列の始端点と終端点の両方が定まり且つ始端点〜終端点間の一連の各ベクトルも出力された状態となっており、ここでは、終端点〜始端点の間に挿入される一連の補助ベクトルを求める。Ｓ４１０の内容は、図４７と図４８及び図４９を用いて追ってさらに説明を加える。Ｓ４１０の処理を終えるとＳ４２０へ進む。
【０３１７】
Ｓ４２０では、これで、Ｓ３１０で入力した端点間毎線芯（周回）化済ベクトル中の１つのベクトル列の処理が終了したので、これまで該ベクトル列に対して、図３６（ｃ）における線素ベクトル分と補助ベクトル分の全てのベクトル数（輪郭点数）をＮｔ＋１として、また、補助ベクトルとして出力してきたベクトル数（輪郭点数）をｒｔとして、図３６（ｃ）に示す形式でＲＡＭ５２０上のデータ領域に出力し、登録・保持する。Ｓ４２０の処理を終えるとＳ４３０に進む。
【０３１８】
Ｓ４３０では、これで、Ｓ３００で入力した端点間毎線芯（周回）化済ベクトル中の全てのベクトル列の処理が終了したか否かを判定する。そうであればＳ４４０へ進み、そうでなければ、次のベクトル列に対してＳ３２０からＳ４２０までの処理を施すべくＳ３１０へ戻る。
【０３１９】
Ｓ３００で入力した端点間毎線芯（周回）化済ベクトルに対する処理結果について、補助ベクトルを含めた総輪郭点数と補助ベクトル分のみの輪郭点数は図３６（ｄ）に示すような形式で、また、それらの輪郭点の座標値列が図３６（ｃ）に示すような形式でＲＡＭ５２０上のデータ領域に登録・保持されている。Ｓ４４０では、これらを、例えばディスクＩ／Ｏ５２１を介して、このテーブル情報ファイル形式でディスク５２２に記憶して、もしくはＲＡＭ５２０での同情報の領域を次工程の処理部に引き渡して、一連の動作を終了する。
【０３２０】
ここで、図３６（ｃ）では、対象としたベクトル列に、始端点・終端点の両方が定まり、且つ始端点〜終端点間の一連の各ベクトルと終端点〜始端点の間に挿入される一連の補助ベクトルが求まった場合に出力されるそのベクトル列に対する出力例を示した。同図において、対象としたベクトル列は、第ｔ番目であった場合で、そのベクトル列中には始端点と終端点自身も含めて始端点〜終端点間の一連の各ベクトルがＮｔ−ｒｔ＋１個ある。さらに、終端点〜始端点の間に挿入される一連の補助ベクトルがｒｔ個ある。即ち、ベクトルの総点数はＮｔ＋１個の例である。ここで、実は、第１点は、始端点そのものであり、第Ｎｔ−ｒｔ＋１点は、終端点そのものとなっている。
【０３２１】
次に、図４６のＳ４１０の処理の内容にさらに説明を加える。図４７は、前記Ｓ４１０の処理の内容を示すフローチャートである。
【０３２２】
ここでは、当該ベクトル列の始端点と終端点の両方が定まり且つ始端点〜終端点間の一連の各ベクトルも出力された状態となっている。終端点〜始端点の間に挿入される一連の補助ベクトルを求めるのがＳ４１０の処理内容である。
【０３２３】
図４７において、処理を開始すると、Ｓ４１１では、先に図３５（ａ）を用いて説明したように、始端点としたい端点Ｐ０の直前に挿入する補助輪郭点Ｐ−１の座標値を求める。即ち、補助輪郭点Ｐ−１を始点とする補助ベクトルＶ−１が、始端点としたい端点Ｐ０の直後の輪郭点Ｐ１を始点とするベクトルＶ１と逆向きになるようにする。また、補助輪郭点Ｐ−１を、これを始点とする補助ベクトルＶ−１が上述の接線線分の抽出条件の（３）を満たすように十分な長さ（例えば、１０画素長以上）を持つように補助輪郭点Ｐ−１を定める。
【０３２４】
次に、Ｓ４１２に進んで、Ｓ４１２では、先に図３５（ｂ）を用いて説明したように、終端点としたい端点Ｐｎの直後に挿入する補助輪郭点Ｐｎ＋１の座標値を求める。即ち、補助輪郭点点Ｐｎ＋１を終点とする補助ベクトルＶｎが、終端点としたい端点Ｐｎの直前の輪郭点Ｐｎ−１を終点とするベクトルＶｎ−２と逆向きになるようにする。
【０３２５】
また、補助輪郭点Ｐｎ＋１を終点とする補助ベクトルＶｎが上述の接線線分の抽出条件の（３）を満たすように十分な長さ（例えば、１０画素長以上）を持つように補助輪郭点Ｐｎ＋１を定める。Ｓ４１２の処理を終えると、Ｓ４１３に進む。
【０３２６】
Ｓ４１３では、補助ベクトルＶ−１と補助ベクトルＶｎが、共に水平ベクトルとなっているか、あるいは共に垂直ベクトルとなっているかを判定する。もしそうであれば、Ｓ４１４に進み、そうでない場合にはＳ４１６に進む。ここで、補助ベクトルＶ−１は、Ｓ４１１で求めた始端点としたい端点Ｐ０の直前に挿入する補助輪郭点Ｐ−１を始点とする。補助ベクトルＶｎは、Ｓ４１２で求めた終端点としたい端点端点Ｐｎの直後に挿入する補助輪郭点Ｐｎ＋１を終点とする。
【０３２７】
Ｓ４１４は、Ｖ−１とＶｎが、共に水平ベクトルとなっているか、あるいは共に垂直ベクトルとなっている場合であり、この場合の例を図４８に示した。図４８は、終端点〜始端点間へ挿入する補助ベクトルの概念を示す概念図である。
【０３２８】
Ｓ４１４では終端点としたい端点Ｐｎの次の次に当たる補助輪郭点Ｐｎ＋２を、ＰｎからみてＰ−１から遠くなる方向に、上述の接線線分の抽出条件の（３）を満たすように十分な長さ（例えば、１０画素長以上）を持つように定める。そして、Ｓ４１５に進む。
【０３２９】
ステップ４１５もＳ４１４と同様にＶ−１とＶｎが、共に水平ベクトルとなっているか、あるいは共に垂直ベクトルとなっている場合である。Ｓ４１５では、水平ベクトルと垂直ベクトルが交互につながるような形式で、Ｐｎ＋２とＰ−１を連結する様に、終端点としたい端点Ｐｎの３点後の補助輪郭点である点Ｐｎ＋３を定める。そして、補助点挿入の一連のステップを終え、図４６のフローチャートのＳ４２０に戻る。
【０３３０】
一方、Ｓ４１６は、Ｖ−１とＶｎの、どちらか一方が水平ベクトルとなっていて、他方は垂直ベクトルとなっている場合であり、この場合の例を図４９に示した。図４９は、終端点〜始端点間へ挿入する補助ベクトルの他の概念を示す概念図である。
【０３３１】
Ｓ４１６では終端点としたい端点Ｐｎの次の次にあたる補助輪郭点Ｐｎ＋を、Ｐｎ＋１からみてＰ−１から遠くなる方向に、上述の接線線分の抽出条件の（３）を満たすように十分な長さ（例えば、１０画素長以上）を持つように定める。そして、Ｓ４１７に進む。
【０３３２】
ステップ４１７もＳ４１６と同様にＶ−１とＶｎが、どちらか一方が水平ベクトルとなっていて、他方は垂直ベクトルとなっている場合である。Ｓ４１７では、点Ｐｎ＋３を、Ｐｎ＋２からみてＰ−１から遠くなる方向に、上述の接線線分の抽出条件の（３）を満たすように十分な長さ（例えば、１０画素長以上）を持つように定める。そして、Ｓ４１８に進む。
【０３３３】
ステップ４１８もＳ４１６及びＳ４１７と同様にＶ−１とＶｎが、どちらか一方が水平ベクトルとなっていて、他方は垂直ベクトルとなっている場合である。Ｓ４１８では、水平ベクトルと垂直ベクトルが交互につながるような形式で、Ｐｎ＋３とＰ−１を連結する様に、終端点としたい端点Ｐｎの４点後の補助輪郭点である点Ｐｎ＋４を定める。そして、補助点挿入の一連のステップを終え、図４６のフローチャートのＳ４２０に戻る。
【０３３４】
かくして、周回ベクトル生成部３２０は、周回ベクトル生成部３１０より得られる上記の端点間毎線芯（周回）化済ベクトルを入力し、次の周回ベクトル平滑部３３０により平滑化処理される際に、次ような処理を行う。即ち、端点部分に相当するベクトルが、他のベクトルと統合されて端点位置が不明にならぬように、端点部分に相当する部分が端点として保存されるように補助ベクトルを挿入することで、端点間毎補助ベクトル入り（周回）ベクトルを生成する。
【０３３５】
加えて、補助ベクトルを挿入された各端点間毎補助ベクトル入り（周回）ベクトルのそれそれに対し、どのベクトルが端点部に当たるかを明示する始端点・終端点情報をも生成する。かくして生成された処理結果は、例えば、図２４に示したような形式の各輪郭データ部分のそれぞれを図３６（ｃ）や図３６（ｄ）の各ベクトル列データに置き換えた形として表現でき、本実施の形態では、この形式で出力されるものとする。
【０３３６】
周回ベクトル平滑部３３０の出力は、端点部分に相当する部分が端点として保存された状態で各（周回）ベクトル毎に平滑化された平滑化済端点間毎補助ベクトル入り（周回）ベクトルを生成され、次工程の処理をする平滑化済ベクトル同定部３４０に出力する。この際、周回ベクトル生成部３２０で生成された始端点・終端点情報もそのまま次工程の処理をする平滑化済ベクトル同定部３４０に出力する。
【０３３７】
平滑化済ベクトル同定部３４０は、周回ベクトル平滑部３３０より得られる、上記の平滑化済端点間毎補助ベクトル入り（周回）ベクトルと、端点部ノイズ検出・修正部３１５０より得られる原始端点・原終端点情報とを入力する。そして、各平滑化済の（周回）ベクトル列毎に、そのベクトル列内の各ベクトルの座標値を、それぞれ始端点と終端点となる輪郭点の座標値と比較していくことにより同定して、始端点と終端点の間のみの部分の非周回型のベクトル列を生成して端点間毎平滑化済（非周回）ベクトルとする。
【０３３８】
なお、この際、原始端点の座標値に始端点補正情報を加え、原終端点の座標値に終端点補正情報を加えることで、ノイズ除去処理結果に対して平滑化した処理結果であっても、安定してそれらの同定が可能となっている。
【０３３９】
そして、次工程である平滑化済ベクトル出力部３５０を介して、ファイル出力もしくは通信Ｉ／Ｆ等を介して外部装置に出力する。なお、生成された処理結果は、やはり、図２４に示したような形式に準じた形として表現することができる、但し、各輪郭点はそれまでの輪郭点情報の部分をアンカーポイントであるのか否かの属性情報としての付帯情報をもつ形をとる。本実施の形態では、このような形式で出力されるものとする。
【０３４０】
＜本実施の形態の利点＞
本実施の形態によれば、端点間毎線芯（周回）化済ベクトル獲得部２００は、幅０に線芯化された端点間毎線芯（周回）化済ベクトル列群（第１のベクトル列群）と、輪郭点情報とを獲得する。端点部ノイズ検出・修正部３１５０は、前記獲得された端点間毎線芯（周回）化済ベクトルの端点部付近に、ノイズ特有のベクトル並びが検出される場合には、該ノイズ特有のベクトルの並びを修正して始端点・終端点情報を生成する。
【０３４１】
周回ベクトル生成部３２０は、前記始端点・終端点情報とノイズ検出・修正処理済の輪郭点情報とから、平滑化処理される際に、端点部分に相当するベクトルが、端点部分に相当する部分が端点として保存されるように補助ベクトルを挿入し、端点間毎補助ベクトル入り（周回）ベクトルを生成する。平滑化済ベクトル同定部は３４０は、得られた端点間毎補助ベクトル入り（周回）ベクトルから、平滑化済端点間毎補助ベクトル入り（周回）ベクトルを生成し、前記端点修正情報を含む始端点・終端点情報から始端点と終端点を同定する。そして、始端点と終端点の間のみの部分の非周回型のベクトル列を生成することにより、例え、端点部のノイズ除去が行われたとしても、安定的に、且つ高品位の、端点間毎平滑化済（非周回）ベクトルを得る。
【０３４２】
このような機能により、本実施の形態によれば、２値画像中の典型的なノイズ成分をベクトルデータ上で除去した上での２次や３次のベジェ曲線近似による高品位のアウトラインが生成可能となる。つまりは、始端点と終端点の間のみの部分で、ノイズ成分を除去した上で２次や３次のベジェ曲線近似がなされた、従来より高品位の非周回型のベクトル列の生成を可能とする。ある図形の輪郭を構成する線のみを、太さや、面積といった概念に意味をもたせずに、単なる線（直線、［開］曲線、［閉］曲線等）、あるいは、その線の集まりとして扱う際に、従来より高品位の線画としての再利用を可能とする。
【０３４３】
＜本実施の形態の変形例＞
前記図２４、図３６（ｃ），（ｄ）に示したデータ形式は、一例にすぎず、これに限らない。例えば、端点間毎平滑化済（非周回）ベクトルは、ＳＶＧ形式のベクトル表現をとって出力しても良い。また、各ベクトル列中の輪郭点数のみをまとめて、輪郭点数テーブル部と各ベクトル列中の各ベクトルのデータ部とを分離して表現しても良い。即ち、図２４の輪郭線中の総点数の部分のみ第一番目の輪郭から第ａ番目の輪郭までまとめた部分を作り、その後に、第一番目の輪郭から第ａ番目の輪郭までの輪郭点データをまとめた部分とするようにしても良い。
【０３４４】
さらに、図３６（ｂ）に示した、閉ループマーカもこれに限ることなく、始端点・終端点が存在するベクトル列が区別がつくものであればそれでも良い。
【０３４５】
また、上述の実施の形態においては、端点部ノイズ検出・修正部３１５０は、全ての入力ベクトル列に対して処理を施す。その後、全てのベクトル列に対してあらためて、次工程の周回ベクトル生成部３２０、さらに次工程の周回ベクトル平滑部３３０により平滑化処理され、そのまた次々工程の平滑化済ベクトル同定部３４０で処理される様に説明した。本実施の形態は、これに限るものではなく、即ち、全ての入力ベクトル列ではなく、それぞれのベクトル列の一つ一つに対して、上記一連の処理を行うように構成しても良いことは明らかである。この場合、図４６の処理のＳ３１０とＳ３２０の間に、図３１及び図３２で説明した処理を１つのステップ（例えばＳ３１５０）として行えば良い。この場合の図４６の処理の変形を図５０に示す。
【０３４６】
図５０は、図４６の処理の変形例を示すフローチャートである。図５０のＳ３１５０以外の部分は、図４６と全く同様であるので、詳述は避ける。
【０３４７】
また、図３１及び図３２の処理は、図５１及び図５２のように変形される。図５１及び図５２は、図３１及び図３２の処理の変形例を示すフローチャートである。図５１及び図５２は、図３１及び図３２におけるＳ５００とＳ６５０、Ｓ６６０が削除されているのみで、それ以外の部分は図３１及び図３２と全く同様であるので、これも詳述は省略する。
【０３４８】
なお、本発明の目的は、上述した第１〜第３の各実施の形態のホスト及び端末の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出して実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が上記各実施の形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することとなる。
【０３４９】
プログラムコードを供給するための記憶媒体としては、ＲＯＭ、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード等を用いることができる。また、コンピュータが読み出したプログラムコードを実行することにより、上記各実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ等が実際の処理の一部または全部を行い、その処理によって上記各実施の形態の機能が実現される場合も含まれることは言うまでもない。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された拡張機能ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって上記各実施の形態の機能が実現される場合も含まれることは言うまでもない。
【０３５０】
なお、本発明の目的は、前述した各実施の形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体をシステムあるいは装置に供給し、そのシステムあるいは装置のコンピュータが前記プログラムコードを読み出し実行することによっても達成される。
【０３５１】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した各実施の形態の機能を実現することになり、そのプログラムコード及び該プログラムコードを記憶した記憶媒体は本発明を構成することになる。
【０３５２】
また、プログラムコードを供給するための記憶媒体としては、例えば次のようなものが挙げられる。即ち、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤＲＯＭ、ＣＤＲ、ＣＤＲＷ、ＤＶＤＲＯＭ、ＤＶＤＲＡＭ、ＤＶＤＲＷ、ＤＶＤ＋ＲＷ等の光ディスク、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしても良い。
【０３５３】
また、本発明は、コンピュータが読み出したプログラムコードを実行することにより、前述した各実施の形態の機能が実現されるだけではない。そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって前述した各実施の形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【０３５４】
【図１】実施の形態に係る画像処理装置の機能を示すブロック図である。
【図２】実施の形態によるラインアート画像のベクトル処理の流れによる一連の処理経過の例を示す図である。
【図３】図１の機能ブロックでなる画像処理装置を実現する機器構成例を示す図である。
【図４】実施の形態における注目画素とその近傍画素を示す図である。
【図５】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図６】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図７】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図８】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図９】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図１０】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図１１】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図１２】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図１３】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図１４】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図１５】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図１６】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図１７】端点間毎輪郭（周回）ベクトル抽出における注目画素と近傍画素の状態に応じた輪郭点と輪郭点情報の抽出パターンを示す図である。
【図１８】輪郭点情報の一覧表を示す図である。
【図１９】端点部より検出される輪郭点例とそれらに付与される輪郭点情報を示す図である。
【図２０】端点部ではない部分より検出される輪郭点例とそれらに付与される輪郭点情報を示す図である。
【図２１】輪郭抽出処理の全体の流れを示すフローチャートである。
【図２２】図２１のＳ１のベクトル列抽出処理を示すフローチャートである。
【図２３】図２２のＳ１２に示された周囲画素の状態により実行される処理を示すフローチャートである。
【図２４】端点間毎周回ベクトル列と輪郭点情報のデータ形式の例を示す図である。
【図２５】線素、端点間毎周回ベクトル列と輪郭点情報、及び端点間毎線芯（周回）ベクトルを例示する図である。
【図２６】周回ベクトル生成部の動作を示すフローチャートである。
【図２７】粗輪郭データよりアウトラインベクトルデータへ変換する処理を示すフローチャートである。
【図２８】実施の形態で問題とする典型的なノイズの例を示す図である。
【図２９】実施の形態で問題とする典型的なノイズの除去の例を示す図である。
【図３０】実施の形態で問題とする典型的なノイズの除去の例を示す図である。
【図３１】端点部ノイズ検出・修正部３１５０の動作を示すフローチャートである。
【図３２】端点部ノイズ検出・修正部３１５０の動作を示すフローチャートである。
【図３３】端点部のノイズチェック準備に関する一連の処理を示すフローチャートである。
【図３４】始端点ノイズ判定と修正処理の一連の処理を示すフローチャートである。
【図３５】始端点の直前と終端点の直後に挿入する補助輪郭点の概念を示す図である。
【図３６】端点間毎補助ベクトル入り（周回）ベクトル、及び端点間毎平滑化済ベクトルのデータ形式の例を示す図である。
【図３７】終端点部のノイズチェック準備に関する一連の処理を示すフローチャートである。
【図３８】終端点ノイズ判定と修正処理の一連の処理を示すフローチャートである。
【図３９】Ｓ７２０の６点以下の輪郭点しか持たないベクトル列に対する処理を示すフローチャートである。
【図４０】図３９の続きのフローチャートである。
【図４１】Ｓ７３０の８点の輪郭点しか持たないベクトル列に対する処理を示すフローチャートである。
【図４２】Ｓ７３０の８点の輪郭点しか持たないベクトル列に対する処理を示すフローチャートである。
【図４３】Ｓ７４０の１０点の輪郭点しか持たないベクトル列に対する処理を示すフローチャートである。
【図４４】Ｓ７４０の１０点の輪郭点しか持たないベクトル列に対する処理を示すフローチャートである。
【図４５】Ｓ７４０の１０点の輪郭点しか持たないベクトル列に対する処理を示すフローチャートである。
【図４６】周回ベクトル生成部３２０の動作を示すフローチャートである。
【図４７】前記Ｓ４１０の処理の内容を示すフローチャートである。
【図４８】終端点〜始端点間へ挿入する補助ベクトルの概念を示す概念図である。
【図４９】終端点〜始端点間へ挿入する補助ベクトルの概念を示す概念図である。
【図５０】図４６の処理の変形例を示すフローチャートである。
【図５１】図３１及び図３２の処理の変形例を示すフローチャートである。
【図５２】図３１及び図３２の処理の変形例を示すフローチャートである。
【図５３】従来の、２値画像のアウトラインベクトルによる処理例を示す図である。
【符号の説明】
【０３５５】
１  スキャナ
２  画像メモリ
３  画像入出力Ｉ／Ｏ
４  通信Ｉ／Ｆ
５  ＲＯＭ
５０  入力画像ラスタ走査部
２００  ２値画像獲得部
２１０  ２値画像入力部
２１１  画像入力部
２１２  ２値化部
２２０  ２値画像細線化部
３００  周回ベクトル抽出部
３１０  周回ベクトル生成部
３１５０  端点部ノイズ検出・修正部
３１５１  端点部ノイズ検出部
３１５２  端点部ノイズ修正部
３１５３  端点修正情報生成部
３２０  周回ベクトル生成部
３３０  周回ベクトル平滑部
３４０  平滑化済ベクトル同定部
３５０  平滑化済ベクトル出力部
５１３  入力ポート
５１４  入力ポート
５１９  ＣＰＵ
５２０  ＲＡＭ
５２２  ハードディスク
【図１】
2008146173.tif 000003
【図２】
2008146173.tif 000004
【図３】
2008146173.tif 000005
【図４】
2008146173.tif 000006
【図５】
2008146173.tif 000007
【図６】
2008146173.tif 000008
【図７】
2008146173.tif 000009
【図８】
2008146173.tif 000010
【図９】
2008146173.tif 000011
【図１０】
2008146173.tif 000012
【図１１】
2008146173.tif 000013
【図１２】
2008146173.tif 000014
【図１３】
2008146173.tif 000015
【図１４】
2008146173.tif 000016
【図１５】
2008146173.tif 000017
【図１６】
2008146173.tif 000018
【図１７】
2008146173.tif 000019
【図１８】
2008146173.tif 000020
【図１９】
2008146173.tif 000021
【図２０】
2008146173.tif 000022
【図２１】
2008146173.tif 000023
【図２２】
2008146173.tif 000024
【図２３】
2008146173.tif 000025
【図２４】
2008146173.tif 000026
【図２５】
2008146173.tif 000027
【図２６】
2008146173.tif 000028
【図２７】
2008146173.tif 000029
【図２８】
2008146173.tif 000030
【図２９】
2008146173.tif 000031
【図３０】
2008146173.tif 000032
【図３１】
2008146173.tif 000033
【図３２】
2008146173.tif 000034
【図３３】
2008146173.tif 000035
【図３４】
2008146173.tif 000036
【図３５】
2008146173.tif 000037
【図３６】
2008146173.tif 000038
【図３７】
2008146173.tif 000039
【図３８】
2008146173.tif 000040
【図３９】
2008146173.tif 000041
【図４０】
2008146173.tif 000042
【図４１】
2008146173.tif 000043
【図４２】
2008146173.tif 000044
【図４３】
2008146173.tif 000045
【図４４】
2008146173.tif 000046
【図４５】
2008146173.tif 000047
【図４６】
2008146173.tif 000048
【図４７】
2008146173.tif 000049
【図４８】
2008146173.tif 000050
【図４９】
2008146173.tif 000051
【図５０】
2008146173.tif 000052
【図５１】
2008146173.tif 000053
【図５２】
2008146173.tif 000054
【図５３】
2008146173.tif 000055