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