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