説明

画像処理装置、画像処理方法、画像処理プログラム、並びに、プログラム記録媒体

【課題】細線化された2値画像中に、2×2の核となり残る4画素部分が発生しても、1回のラスタ走査だけで、画像中の2値図形や線画を断線することなく、ベクトル群を抽出する画像処理装置を提供することを目的とする。
【解決手段】この画像処理装置は、細線化された2値画像を生成し、ベクトルを抽出する画像処理装置であって、ベクトル抽出手段と座標修正手段を備える。ベクトル抽出手段は、細線化された2値画像を、複数の画素から構成される画素マトリクスでラスタ走査し、画素マトリクス内の複数の画素の状態に従って、輪郭点情報が付与されたベクトルを抽出する。座標修正手段は、ベクトルに付与された輪郭点情報を参照することによって、ベクトルが、画素マトリクスにおける2×2の黒画素の集まりから抽出されたことを検出し、輪郭点情報に含まれる座標値の修正情報に従って、ベクトルの座標値を修正する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、細線化された2値画像から、線図形のベクトル情報を抽出する装置に関する。
【背景技術】
【0002】
近年、ペーパーレス化への要求が高まり、既存の画像データを電子化して再利用することが頻繁に行われるようになってきた。従来、画像データの再利用は、画像データを2値化処理した後にベクトル化技術を用いてベクトルデータに変換し、このベクトルデータをCADソフト等で使用するという形で行われてきている。そのような画像データのベクトル化に関する様々な技術が開発されている。
【0003】
特許文献1において、細線化された2値画像から1回のラスタ走査で、2値図形や線画を、それぞれ構成する線の端点や交点間をつなぐ独立した線や閉曲線の集まりとして、各線成分に対応する独立したベクトル群を抽出する画像処理装置が、開示されている。特許文献1によると、細線化された2値画像中の全ての輪郭線を1回のラスタ走査順だけで抽出でき、かつ、全画像データを記憶するための画像メモリを必要としないので、メモリの容量を少なくできるとされている。また、入力画像の画素の中心位置ではなく、画素の縁単位に輪郭を抽出することによって、1画素幅の細線に対しても有為な幅を有することができるとされている。更に、原画中の画素の4方向に連結した連結画素領域の輪郭線を抽出するのみならず、8方向に連結した画素領域も抽出可能であることが記載されている。また、特許文献2において、2値画像の輪郭情報を直線のみならず、2次や3次のベジェ曲線近似をすることで、より少ないデータ量で高画質な変倍画像を表現する輪郭情報を関数近似する処理手法及び装置が開示されている。
【0004】
そのような2値画像のベクトル化、特に、細線化された2値画像(ラインアート画像)のベクトル化についても様々な技術が開発されている。例えば、クリップアートを構成する同色領域の境界線からなるラインアート画像を細線化する場合の細線化手法についても、開発の期待が高まっている。
【特許文献1】特許第3026592号(第14頁)
【特許文献2】特開2005−346137号公報(段落[0073])
【発明の開示】
【発明が解決しようとする課題】
【0005】
特願2006−335070号において開示されている方法を、クリップアートを構成する同色領域の境界線からなるラインアート画像を細線化する場合に適用すると、下記の課題が発生してしまう。
【0006】
図2に示すように、細線化されたラインアート画像中に2画素×2画素の核となって残る部分が発生し得る。図3は、図2における該当部の拡大図である。更に、図4の(a)は、2画素×2画素の核となっている部分の画素の配置を示す図である。
【0007】
ラインアートとしては、2画素×2画素の核となって残る部分の4画素のそれぞれが、相異なるベクトル列の端点になるようにベクトル抽出される。図4の(b)は、2画素×2画素の核となって残る部分の4画素のそれぞれを端点とする4ベクトルを示す図である。更に、図4の(c)〜(f)は、その4ベクトルを別々に示す図である。
【0008】
図4に示すように、クリップアートの境界線の2画素×2画素の核となって残る部分の4画素が端点となるベクトル列間では、それぞれが互いに連結していない。従って、それらのベクトルにより、閉域を取り囲むように端点が連続する一連のベクトル列を構成し得ない部分が発生してしまう。その結果、カラー画像上で隣接する色領域間の輪郭形状について、閉域を取り囲むように端点が連続する一連のベクトル列としては構成し得ない部分が生じてしまう。
【0009】
そこで、上記の点に鑑み、本発明は、細線化された2値画像中に2画素×2画素の核となり残る4画素部分が発生しても、1回のラスタ走査だけで画像中の2値図形や線画を断線することなく、ベクトル群を抽出する画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記課題を解決するため、本発明に係る画像処理装置は、細線化された2値画像を生成し、ベクトルを抽出する画像処理装置であって、細線化された2値画像を、複数の画素から構成される画素マトリクスでラスタ走査し、画素マトリクスにおける白画素と黒画素の予め定められたパターンに従って、輪郭点情報が付与されたベクトルを抽出するベクトル抽出手段と、ベクトルに付与された輪郭点情報を参照することによって、ベクトルが、画素マトリクスにおける2画素×2画素の黒画素の集まりから抽出されたことを検出し、輪郭点情報に含まれる座標値の修正情報に従って、ベクトルを線芯化した線芯ベクトルの座標値を修正する座標修正手段とを備える。
【発明の効果】
【0011】
本発明によれば、細線化された2値画像に、2画素×2画素の核となって残る部分の4画素が含まれていても、その部分で断線することなく、端点が接続されたベクトル列の集まりとして出力することができる。
【発明を実施するための最良の形態】
【0012】
以下に、本発明を実施するための最良の形態について、図面を参照しながら詳しく説明する。なお、同一の構成要素には同一の参照番号を付して、説明を省略する。
【0013】
図1は、本発明を実施する画像処理装置の機能ブロック図を表している。図1において、細線化済2値画像獲得手段200は、公知のスキャナ等の画像入力手段211及び2値化手段212で構成された2値画像入力手段210から出力される2値画像を公知の2値画像細線化手段220で4連結に細線化された2値画像を出力する。即ち、公知のスキャナ等の画像入力手段211において光電走査により読み取られた画像データは、公知の2値化手段212において閾値処理により2値化される。得られた2値画像は、2値画像細線化手段220において例えば公知の細線化手法であるHilditch法によって4連結の細線化が行われる。Hilditch法は、酒井幸市著の「ディジタル画像処理の基礎と応用」(第2版,ISBN4-7898-3707-6,CQ出版社,2004年2月1日発行,P.51-P.54,等)等で知られている。
【0014】
図39の(a)は、2値画像細線化手段220に入力される2値画像の一例を示している。図39の(b)は、図39の(a)を入力2値画像とした場合の2値画像細線化手段220から出力される細線化済画像を示している。
【0015】
4連結に細線化された2値画像は、端点間毎輪郭(周回)ベクトル抽出手段300で処理される。また、1回のラスタ走査により処理対象の細線化済2値画像中の線図形を、それらを構成している端点や交点間をつなぐ独立した線や閉曲線毎のそれぞれに対応したベクトル列の集まり(以下、端点間毎線素粗輪郭ベクトルともいう)として抽出する。抽出された結果は、処理結果として出力される。尚、出力される処理結果には、ベクトル列のそれぞれを構成する各ベクトルが、処理対象の線図形の端点(交点)位置に対応する部分から抽出されたものか否か、2×2の核となっていた部分から得られた端点であるか否か等を表す情報が含まれている。以下、そのような情報を、付与情報ともいう。また、本実施形態において、そのような付与情報と端点間毎線素粗輪郭ベクトルとを合わせて端点間毎輪郭(周回)ベクトルという。端点間毎輪郭(周回)ベクトルは、ある図形の輪郭を構成する線のみを、太さや、面積といった概念に意味をもたせずに、単なる線(直線、開曲線、閉曲線等)、あるいは、その線の集まりとして扱いたい場合に好適なベクトルデータとすることができる。又は、元の太さを意識せずに細線のみで描かれている線画として再利用する場合等にも好適なベクトルデータとすることができる。
【0016】
端点間毎線芯(周回)ベクトル生成手段310は、端点間毎輪郭(周回)ベクトル抽出手段300より得られた端点間毎輪郭(周回)ベクトルを入力し、付与情報を用いて、幅「0」に線芯化された端点間毎線芯(周回)化済ベクトルを生成する。以下、線芯化された端点間毎線芯(周回)化済ベクトルを、線芯ベクトルともいう。端点間毎線芯(周回)ベクトル生成手段310は、1画素幅の幅を持った輪郭(周回)ベクトルの各ベクトルの位置をそれぞれ半画素分ずつ相応する方向へ予め定める規則によって、微調整する。図39の(c)は、図39の(b)を入力2値画像とした場合の端点間毎輪郭(周回)ベクトル抽出手段300から出力される端点間毎輪郭(周回)ベクトルを輪郭画像として描画して可視化したものである。また、図39の(d)は、図39の(c)を入力した場合の端点間毎線芯(周回)ベクトル生成手段310から出力される端点間毎線芯(周回)化済ベクトルを線画像として描画して可視化したものである。
【0017】
端点間毎補助ベクトル入り(周回)ベクトル生成手段320は、端点間毎線芯(周回)ベクトル生成手段310より得られる端点間毎線芯(周回)化済ベクトルを入力する。
その後、次工程の処理をする端点間毎補助ベクトル入り(周回)ベクトル平滑手段330により平滑化(関数近似)処理される際に端点部分に相当するベクトルが、他のベクトルと統合されて端点位置が不明にならぬようにする。そのために、本実施形態においては、端点部分に相当する部分が端点として保存される(ベジェ曲線のアンカーポイントとなる)ように補助ベクトルを挿入して、端点間毎補助ベクトル入り(周回)ベクトルを生成する。加えて、補助ベクトルを挿入された各端点間毎補助ベクトル入り(周回)ベクトルのそれぞれに対し、どのベクトルが端点部にあたるかを明示する始端点・終端点情報をも生成する。図39の(e)は、図39の(d)を入力した際の端点間毎補助ベクトル入り(周回)ベクトル生成手段320から出力される端点間毎補助ベクトル入り(周回)ベクトルを線画像として描画して可視化したものである。
【0018】
端点間毎補助ベクトル入り(周回)ベクトル平滑手段330は、端点間毎補助ベクトル入り(周回)ベクトル生成手段320より得られる端点間毎補助ベクトル入り(周回)ベクトルを入力する。各(周回)ベクトル毎に平滑化(関数近似)処理を行なうことによって、平滑化(関数近似)された平滑化(関数近似)済端点間毎補助ベクトル入り(周回)ベクトルを生成する。その後、端点間毎平滑化済ベクトル同定(非周回化)手段340に出力する。
【0019】
端点間毎平滑化済ベクトル同定(非周回化)手段340は、端点間毎平滑化(関数近似)済補助ベクトル入り(周回)ベクトルと、端点間毎補助ベクトル入り(周回)ベクトル生成手段320より得られる始端点・終端点情報とを入力する。その後、各平滑化済の(周回)ベクトル毎にそれぞれ始端点と終端点となるベクトルを同定して、始端点と終端点の間のみの部分の非周回型のベクトル列を生成する。
【0020】
端点座標修正手段345は、始端点と終端点の間のみの部分の非周回型のベクトル列と、端点間毎補助ベクトル入り(周回)ベクトル生成手段320より得られる始端点・終端点情報とこれら両端点の付与情報を入力する。その後、各平滑化済の(周回)ベクトル毎にそれぞれ始端点と終端点となるベクトルを同定する。同時に、同両端点の中で、2画素×2画素の核となっていた部分から得られた端点である場合には、その端点の座標値を、2画素×2画素の中心位置に相当する位置に対応する座標値に修正する。このようにして、始端点と終端点の間のみの部分の非周回型のベクトル列を生成する。その後、次工程である平滑化済ベクトル出力手段350を介して、ファイル出力もしくは通信インタフェース4等を介して外部装置に出力する。図39の(f)は、図39の(e)を入力した際の端点間毎平滑化済ベクトル同定(非周回化)手段340から出力される平滑化済ベクトルを線画像として描画して可視化したものである。
【0021】
図40の(c)〜(f)は、それぞれ、図4の(c)〜(f)を入力した際に、端点座標修正手段345から出力される様子を示している。即ち、2画素×2画素の核となっていた部分から得られた端点である場合には、その端点の座標値を、2画素×2画素の中心位置に相当する位置に対応する座標値に修正して、端点として出力する様子を描画して可視化したものである。同様に、図41の(c)〜(f)は、それぞれ、図4の(c)〜(f)の左右対称とされたパターンを入力した際に、端点座標修正手段345から出力される様子を示している。ここで、2×2の核となっていた部分から得られた端点の座標値は、2×2の中心位置に相当する位置に対応する座標値に修正されている。
【0022】
図5は、本実施形態に係る画像処理装置を実現する機器構成例を示す図である。同図において、バス518は、本実施形態で用いられる画像処理装置におけるバスを表している。スキャナ1は、図1の2値画像入力手段210の画像入力手段211を構成するスキャナである。画像メモリ2は、画像入出力部3を介して、スキャナ1で読み取られた2値化前の多値画像を保持したり、2値化された後の2値画像データを保持するものであり、共に図1に示す細線化済2値画像獲得手段200を構成している。端点間毎輪郭(周回)ベクトル抽出部5は、図1の端点間毎輪郭(周回)ベクトル抽出手段300を構成している。入力画像ラスタ走査部50は、画像入出力部3を介して信号線500より細線化済2値画像データを順次入力する。入力ポート513及び514は、3×3の9画素で構成される走査窓により各画素の状態を入力する。通信インタフェース4は、ネットワーク等を経由して、システムの外部と通信する。RAM520は、CPU519のワーキングメモリである。ROM6は、後述の手順に沿ってCPU519で実行されるプログラムや予め定められるパラメータやデータ等を格納する。CPU519やRAM520やROM6により、図1の端点間毎線芯(周回)ベクトル生成手段310や、端点間毎補助ベクトル入り(周回)ベクトル生成手段320、端点間毎補助ベクトル入り(周回)ベクトル平滑手段330が、実現される。また、端点間毎平滑化済ベクトル同定(非周回化)手段340、端点座標修正手段345が、CPU519やRAM520やROM6により実現される。入出力部521は、ハードディスク522とのインタフェースである。
【0023】
以下、主として、図6、図7、図10〜図26等を用いて端点間毎輪郭(周回)ベクトル抽出手段300での処理内容を説明する。本実施形態において、図7に示すように、2値画像における注目画素101と、その近傍の8個の画素の状態を検出し処理が進み、注目画素をラスタ走査し、1画素毎にずらしながら画像全体の処理が逐次行われる。
【0024】
図7において、「×」は、注目画素101を示し、「0」及び「2」で示された位置は、主走査方向に対し注目画素101と同じ位置にあり、副走査方向のそれぞれ1ラスタ前の画素「0」及び1ラスタ先の画素「2」を示している。「1」及び「3」で示された位置は、注目画素101と同一のラスタ上にあり、それぞれ1画素前の画素「3」及び1画素先の画素「1」を示している。更に、「A」及び「B」は、主走査方向に1画素先の位置にあり、それぞれ1ラスタ前及び1ラスタ先の位置にある画素を示し、「C」及び「D」は、主走査方向の1画素前の位置にある画素で、それぞれ1ラスタ先及び1ラスタ前の位置にある画素を示している。
【0025】
図6は、図5における端点間毎輪郭(周回)ベクトル抽出部5の構成例をより詳細に示している。同図において、入力画像ラスタ走査部50は、画像入出力部3を介して信号線500より細線化済2値画像データを順次入力する。入力制御回路501は、信号線500により入力される画像データをやりとりし、この信号線500によりラスタ走査形式で順次、2値画像データが入力される。ラッチ502は、入力制御回路501より入力された画像データを、図示されていない画素同期クロックに同期して1画素づつ順次更新しながら保持する。次の画素同期クロックによって、ラッチ502は、次の画素データを入力制御回路501より入力する。この時、既に保持していた画素データは、その画素クロックに同期してラッチ503にラッチされて保持される。同様に、ラッチ503に保持されていた画素データは、次の画素同期クロツクによって、ラッチ504に保持される。
【0026】
FIFO505及び506は、それぞれ1ラスタ分の画素データを保持するFIFO(ファーストイン・ファーストアウト)メモリである。FIFO505は、ラッチ504の出力を順次、画素同期クロツクに同期して取り込み、1ラスタ前のデータをラッチ507へ出力する。同様に、FIFO506も、ラッチ509の出力を取り込み、ラッチ510に1ラスタ前の画素データを出力する。ラッチ507、508、509及びラッチ510、511、512は、ラッチ502、503、504と同様に動作する。
【0027】
このようにして、ラッチ502、503、504、507、508、509、510、511及び512に記憶された9個の画素は、図7に示した9(3×3)画素よりなる領域の画素データを記憶していることになる。即ち、これらラッチのデータは、それぞれ図7の「B」、「2」、「C」、「1」、「×」、「3」、「A」、「0」、「D」に対応している。
【0028】
入力ポート513と514は、3×3の9画素で構成される走査窓の各画素の状態を入力する。入力ポート513及び514は、共にCPU519の入力ポートである。入力ポート513は、ラッチ510、502、504、512のデータを、即ち、それぞれ図7における「A」、「B」、「C」、「D」の位置のデータをCPU519に入力する。同様に、入力ポート514は、ラッチ511、507、503、509、508のデータ、即ち、「0」、「1」、「2」、「3」、「×」の位置のデータとして入力する。
【0029】
主走査カウンタ515は、主走査方向の画素位置を示し、図示されていない副走査同期信号によりリセットされ、画素同期信号によりカウントアップする。副走査カウンタ516は、副走査方向の画素位置を示し、図示されていないページ同期信号によりリセットされ、副走査同期信号によりカウントアツプする。入出力制御ポート517は、入出力制御用のポートであり、入力制御回路501に対し、画素データ入力の実行及び保留を指示する信号、及び、入力制御回路501よりCPU519への画素データ更新を知らせる信号等を保持する。入出力部521は、ハードディスク522の入出力制御装置である。入出力制御ポート517、主走査カウンタ515、副走査カウンタ516、入力ポート513及び514、RAM520、入出力部521は、バス518を介してCPU519に接続されている。このようにして、CPU519は、入出力制御ポート517を介し、画素データの更新を行い、主走査カウンタ515及び副走査カウンタ516を介し、注目画素の画素位置(i、j)を知ることができる。また、入力ポート513及び514を介し、注目画素及びその近傍の8方向の画素の状態を知ることができる。このようにして注目画素の処理が終了すると、CPU519は、入出力制御ポート517を介して9個のラッチに記憶される画素データの更新を指示し、同時に画素データの更新完了の信号をリセットする。入力制御回路501は、この更新の指示を受けると、画素データの更新指示の信号をクリアするとともに、後段のラッチにラッチされる画素データを更新し、この更新が終了すると入出力制御ポート517に、更新完了の信号を出力する。CPU519は、更新指示の出力後、入出力制御ポート517より更新完了の信号が入力されるのを監視している。この更新完了の信号が入力されると、新たに9個のラッチに記憶された画素データに関する処理を実行し、以下同様にこれを繰り返す。また、入力制御回路501は、画像領域の最終画素を注目画素として処理すると、入出力制御ポート517に終了信号を出力する。
【0030】
次に、注目画素及びその近傍の8画素の状態に応じた、それぞれの場合の処理を説明する。注目画素が白画素である場合には、その処理を終了して、ラスタ走査を1画素分進め、注目画素位置を更新する。一方、注目画素が黒画素の場合には、近傍の画素の状態によって以下の処理を行なう。
【0031】
図11〜図26に各状態における処理内容を示してある。内部を斜めのチェッカパターンで埋められた大き目の丸印は黒画素を示し、白画素は大き目の点線の丸印で表記してある。「d」は、「do not care」、即ち、白画素でも黒画素でも構わないことを意味している。また、図11〜図26に示す複数の画素から構成される画素マトリクスにおいて、黒丸印と丸印は、横方向ベクトルの始点及び縦方向ベクトルの終点を表わしており、黒三角印と三角印は、縦方向ベクトルの始点及び横方向ベクトルの終点を表わしている。これらのベクトルの始点・終点間の実線矢印は、始点及び終点共に定まった、矢印の向く方向の輪郭ベクトルを表し、一方、点線矢印は、始点もしくは終点のいずれか一方のみが定まった、矢印の向く方向の輪郭ベクトルを表わしている。以下、これら輪郭ベクトルの始点及び終点を総称して、輪郭点とする。また、黒丸印と黒三角印は、端点部から抽出されるベクトルの始点・終点で、それぞれ端点部から抽出される横方向ベクトルの始点及び縦方向ベクトルの終点、端点部から抽出される縦方向ベクトルの始点及び横方向ベクトルの終点であることを示している。
【0032】
図11〜図26のそれぞれの輪郭点には、対応付けられる付与情報として、図10の一覧表に示した輪郭点情報のいずれかが付与されている。この輪郭点情報が、各輪郭点情報に付記されて抽出される付与情報となる。
【0033】
図10のNo.01〜32に示される32種の輪郭点情報は、「www_xxx」又は「www_xxx_yyy」 又は「www_xxx_yyy_zzz」の形式で表記されている。ここで、「www」の部分は、対象の輪郭点が終点となるベクトルの向きを表し、「_xxx」の部分は、同輪郭点が始点となるベクトルの向きを表している。上向きはUP 、下向きはDOWN 、右向きはRIGHT 、左向きはLEFT と表現されている。例えば、No.01〜07は、いずれも、上向きベクトルの終点かつ右向きベクトルの始点になっている輪郭点であることを意味している。
【0034】
尚、「_yyy」の部分は、この付与情報をもつ輪郭点が、端点部から抽出されたものであることを意味していて、図10の端点情報の欄に記載してある。
【0035】
ここで、「_TL」は、図8の(a)に示すように、線素の上端部の右側(Top Right)から抽出された端点であることを示している。また、「_LT」は、図8の(b)に示すように、線素の左端部の上側(Left Top)から抽出された端点であることを示している。「_BR」は、図8の(d)に示すように、線素の下端部の右側(Bottom Right)から抽出された端点であることを示している。また、「_RB」は、図8の(c)に示すように、線素の右端部の下側(Right Bottom)から抽出された端点であることを示している。「_LB」は、図8の(b)に示すように、線素の左端部の下側(Left Bottom)から抽出された端点であることを示している。また、「_BL」は、図8の(d)に示すように、線素の下端部の左側(Bottom Left)から抽出された端点であることを示している。「_RT」は、図8の(c)に示すように、線素の上端部の右側(Right Top)から抽出された端点であることを示している。また、「_TR」は、図8の(a)に示すように、線素の左端部の上側(Top Right)から抽出された端点であることを示している。
【0036】
「_zzz」の部分は、この付与情報をもつ輪郭点が、入力画像である、細線化された2値画像中の2×2の核となって残る部分の4画素から抽出された端点部のものであることを意味していて、図10の補正方向の欄の記載に意味を有している。
【0037】
ここで、「_1」は、図40の(e)及び図41の(f)に示すように、線芯化後にさらにその端点が2×2の核となって残る部分の4画素の中心位置に補正されるために、左斜め上方向に半画素分ずらされるべき端点であることを示している。「_2」 は、図40の(f)及び図41の(d)に示すように、左斜め下方向に半画素分ずらされるべき端点であることを示している。また、「_3」は、図40の(d)及び図41の(e)に示すように、線芯化後にさらにその端点が2画素×2画素の核となって残る部分の4画素の中心位置に補正されるために、右斜め上方向に半画素分ずらされるべき端点であることを示している。「_4」は、図40の(c)及び図41の(c)に示すように、右斜め下方向に半画素分ずらされるべき端点であることを示している。
【0038】
線素の端点ではない部分(以下、非端点部ともいう)から抽出される輪郭点には、この「_yyy」部及び「_zzz」部のない輪郭点情報が付与され、これらの例を図9の(a)〜(d)に示している。但し、注目画素が黒画素の場合で、近傍の画素の状態によって、図11〜図26に示す各状態における輪郭点とその付与情報を抽出する際において、輪郭点情報は、図10の「値」の欄の対応する位置に表記される数値をもって抽出される。。
【0039】
本実施形態において、輪郭ベクトルの始点・終点位置は、主走査方向及び副走査方向共に、画素と画素の中間の位置にあるとする。また、主走査方向及び副走査方向共に、画素のある位置は、正整数で示され、画素位置は、2次元の座標で表現される。但し、小数の表現を避けるために便宜上、以降の画素位置を偶数のみで表現することにし、始点、終点の位置を奇数の整数で表現することにする。即ち、m画素×n画素の画像は、2mx2nの正の偶数(整数)の座標表現で表わすものとする。このように、主走査方向をx座標、副走査方向をy座標とした2次元座標であらわす場合に、2値画像は、それぞれがm画素及びnラスタで構成されるmxn画素(m,nは正の整数)で構成されるとする。また、第j番目のラスタの第i番目の画素位置を(2i、2j)(ここで、i、jは正の整数で、i≦m、j≦nである)で表現する。また、主走査方向(x座標)は左から右に向かう方向が正の方向であり、副走査方向(y座標)は上から下に向かう向きが正の方向である。
【0040】
以下、端点間毎輪郭(周回)ベクトル抽出手段300の一連の動作を図27〜図29のフローチャートに沿って説明を加える。本実施形態では、端点間毎輪郭(周回)ベクトル抽出手段300は、特許文献1に比し、4連結に細線化された2値画像を端点、交点を検出しつつ端点や交点をつなぐ互いに独立した線素や閉曲線の集まりとして各線成分に対応する独立したベクトル群を抽出する。また、加えて、各輪郭点に輪郭点情報をも付与して抽出することができる。また、図11〜図26に示すような3×3の9画素で構成される走査窓を用いて、画像をラスタ走査し、逐次、3画素×3画素の画素パターンとして注目画素とその8近傍の画素の状態を判断しながら、輪郭点を抽出していく。従って、各3画素×3画素の画素パターンに応じた輪郭点と輪郭点情報の抽出部分を除く一連の流れは、基本的には特許文献1の開示する抽出動作と同様に構成することができる。図11〜図26に示す画素パターンは、4連結に細線化された2値画像を入力した場合に、認識され得るパターンを示した図である。
【0041】
図27は、本実施形態におけるCPU519による輪郭抽出処理の全体の流れを示すフローチャートである。本処理は、特許文献1の図22で示されるフローチャートに準ずるものである。しかしながら、特許文献1では、輪郭点情報の概念はない。そのため、本実施形態においては、輪郭点情報を抽出した輪郭点に付加された属性情報として考え、抽出した輪郭点の接続情報の処理をする際に、それぞれの輪郭点の輪郭点情報も各輪郭点の情報の一部として付随したものとして一貫して扱うようにする。これは、各輪郭点データのデータ形式の内部において、輪郭点の座標値のみならず、その、輪郭点データも一部として取り込んだデータ構造として扱えば、容易に実現できる。
【0042】
まず、ステツプS1において、2値画像データからベクトル列を各輪郭点に付随させて輪郭点情報込みで抽出する。各ベクトルの始点の座標及びこのベクトルに流入してくる(このベクトルの始点の座標が終点となつている)ベクトル、流出してゆく(このベクトルの終点の座標が始点となつている)ベクトルを特許文献1の図23及び図24に示すテーブルに準じて出力する。
【0043】
ステツプS2に進み、例えば、特許文献1の図23及び図24に示すテーブルに準じて、流入及び流出ベクトルの項目番号を辿る。その結果、図30に示すように、画像中の総輪郭線数、各輪郭線毎の輪郭線の総点数、輪郭線中の各点のx又はy座標と各点の輪郭点情報の組合わせを記憶したテーブルを作成する。
【0044】
次に、ステツプS3に進み、入出力部521を介して、このテーブル情報をハードディスク522に記憶して、一連の動作を終了する。
【0045】
図28は、図27におけるステツプS1のベクトル列抽出処理を示すフローチャートである。
【0046】
まず、ステツプS11において、入力ポート514のビツト4(注目画素)を見ることにより、注目画素が白画素か黒画素かを判定する。白画素の場合には、ステツプS13へ進み、黒画素の場合には、ステツプS12へ進む。
【0047】
ステツプS12において、注目画素の周囲の8画素の状態を見て、その状態に応じた適当な処理ルーチンをコールする。
【0048】
ステツプS13において、既に述べたように入出力制御ポート517を介して画素位置の更新を指示する。そして、入出力制御ポート517より更新完了の信号を入力するとステツプS14に進み、入出力制御ポート517を介して、最終画素の処理が終了したか否かを判断する。終了していなければステツプS11へ戻り、次の注目画素も同様に処理をし、終了していれば、元のルーチンにリターンする。
【0049】
図29は、図28のステツプS12に示された周囲画素の状態により実行される処理を示すフローチヤートである。
【0050】
ステツプS21において、CPU519のレジスタをゼロにクリアする。
【0051】
次に、ステツプS22に進み、図6の「0」で示された位置の画素の状態(以下、f(0)とする)が黒画素(以下、「1」で表わす)であればステツプS23へ進み、白画素(以下、「0」で表わす)であればステツプS24へ進む。ステツプS23ではレジスタの内容に1を加える。
【0052】
次にステツプS24に進み、図7の「1」の位置の画素の状態が黒画素であれば(f(1)=1)ステツプS25へ進み、レジスタの内容に2を加える。f(1)=0であればステツプS26に進み、同様に図6の「2」の位置の画素画黒画素かどうかをみる。f(2)=1、即ち、黒画素であれば、ステツプS27へ進み、レジスタの内容に4を加える。
【0053】
次にステツプS28に進み、図6の「3」の位置の画素に注目し、f(3)=1ならステツプS29へ進み、レジスタの内容に8を加えるが、そうでなければステツプS30へ進む。ステツプS30では、レジスタの保持する値の処理番号のルーチンをコールする。
【0054】
これにより、レジスタの内容は、図7に示した「0」、「1」、「2」、「3」の画素位置の各画素の状態に応じて、0〜15の値を取り得る。これらは、その値に応じてそれぞれ図11、図12、図13、図14、図15、図16、図17、図18、図19、図20、図21、図22、図23、図24、図25、図26に示されている。
【0055】
即ち、ステツプS30において、上記に述べた図11〜図26に示される様に定義された輪郭点とその輪郭点情報とをそれぞれのケースに応じて抽出する。このようにして、端点間毎輪郭(周回)ベクトル抽出手段300は、1回のラスタ走査により、入力される4連結に細線化された2値画像(線図形)から、端点間毎線素粗輪郭ベクトルとその輪郭点情報を抽出し、その処理結果を出力することができる。
【0056】
これらは、例えば、図30に示したような形式として出力される。同図における第1輪郭や第2輪郭、第a輪郭といったまとまりは、各線素から抽出されたベクトル列を表しており、各輪郭点ごとに輪郭点情報が付与された形式となっている。図32において、線図形の入力例とこれから抽出される端点間毎輪郭(周回)ベクトル、即ち、端点間毎線素粗輪郭ベクトル(太めに表現されたベクトル列)と輪郭点情報を示す。
【0057】
次に、図31に示すフローチャートにより、端点間毎線芯(周回)ベクトル生成手段310の動作を説明する。同図において、処理を開始すると、ステップS100において、端点間毎輪郭(周回)ベクトルを入力する。端点間毎輪郭(周回)ベクトルは、線図形の端点(交点)位置に対応する部分から抽出されたものか否か等を表す情報を含む、端点や交点間をつなぐ独立した線や閉曲線毎のそれぞれに対応したベクトル列の集まり(端点間毎線素粗輪郭ベクトル)となる。本実施形態において、線図形の端点(交点)位置に対応する部分から抽出されたものか否か等を表す情報を、付与情報ともいう。
【0058】
次に、ステップS110において、ステップS100で入力された端点間毎輪郭(周回)ベクトルから、1つのベクトル列(図30の第k輪郭(1≦k≦a))を当面の処理対象としてステップS110が実行されるたびに順次昇順に定める。ここで、端点間毎輪郭(周回)ベクトルは、図30に示すような形式で入力される。
【0059】
次に、ステップS120において、ステップS110で定めたベクトル列(総点数pとする)における1つのベクトルの輪郭点(第q点(1≦q≦p))を当面の処理対象として、ステップS120が実行されるたびに順次昇順に定める。
【0060】
次に、ステップS130において、ステップS120で定めた輪郭点の輪郭点情報を参照して、この輪郭点を終点とするベクトルか、もしくは、この輪郭点を始点とするベクトルのいずれかが左向きか否かを判定する。ここで、左向きの場合は、ステップS140に進み、そうではない場合にはステップS150に進む。
【0061】
ステップS140において、輪郭点(座標値を(2i、2j) とする)のy座標値を1減じて(副走査方向に半画素分原点側にずらして)、ステップS160に進む。
【0062】
ステップS150において、輪郭点のy座標値を1増やして(副走査方向に半画素分原点とは反対側にずらして)、ステップS160に進む。
【0063】
ステップS160において、輪郭点の輪郭点情報を参照して、この輪郭点を終点とするベクトルか、もしくは、この輪郭点を始点とするベクトルのいずれかが上向きか否かを判定する。上向きの場合は、ステップS170に進み、そうではない場合にはステップS180に進む。
【0064】
ステップS170において、輪郭点のx座標値を1増やして(主走査方向に半画素分原点とは反対側にずらして)、ステップS190に進む。
【0065】
ステップS180において、輪郭点のx座標値を1減じて(主走査方向に半画素分原点側にずらして)、ステップS190に進む。
【0066】
ステップS190において、ステップS110で定めたベクトル列内の全ての輪郭点の検証が終了したか否かを判定する。終了であればステップS200へ進み、そうでなければ、同ベクトル列内の次の輪郭点にステップS130〜S190までの処理を施すべくステップS120に戻る。
【0067】
ステップS200において、ステップS100で入力した端点間毎線素粗輪郭ベクトル中の全てのベクトル列の処理が終了したか否かを判定する。終了であればステップS210へ進み、そうでなけれは、次のベクトル列に対してステップS120〜S200までの処理を施すべくステップS110へ戻る。
【0068】
ステップS210において、ステップS100で入力した端点間毎線素粗輪郭ベクトルに対する処理結果を出力する。
【0069】
尚、ステップS130やステップS160での判定は、図10における「値」欄の数値を輪郭点情報としているので、これらの数値を2進数で表現した際のLSBをbit0、MSBをbit7として以下のように行う。即ち、ステップ130において、bit5(図10では「右向(0)左向(1)」欄)を調べて、0なら右向き、1なら左向きと判定することができる。また、ステップ160において、bit6(図10では「上向(0)下向(1)」欄)を調べて、0なら上向き、1なら下向きと判定することができる。このようにして、入力された端点間毎輪郭(周回)ベクトルの付与情報を用いて、1画素幅の輪郭(周回)ベクトルの各ベクトルの位置をそれぞれ半画素分ずつ相応する方向へ予め定める規則により微調整する。その結果、幅「0」に線芯化された端点間毎線芯(周回)化済ベクトルを生成することができる。端点間毎線芯(周回)化済ベクトルもまた、例えば、図30に示したような形式として表現でき、本実施形態においては、この形式で出力されるものとする。
【0070】
ここで、図32に、端点間毎線素粗輪郭ベクトル(太めに表現されたベクトル列)と輪郭点情報から幅「0」に線芯化された端点間毎線芯(周回)化済ベクトル(入力2値画像の画素上の位置に細めに描かれたベクトル列)の例を示す。
【0071】
次に、端点間毎補助ベクトル入り(周回)ベクトル生成手段320の動作を説明する。
端点間毎補助ベクトル入り(周回)ベクトル生成手段320は、端点部分に相当する部分が端点として保存される(ベジェ曲線のアンカーポイントとなる)ように補助ベクトルを挿入する。その結果、端点間毎補助ベクトル入り(周回)ベクトル平滑手段330により平滑化(関数近似)処理される際に、端点部分に相当するベクトルが他のベクトルと統合されて端点位置が不明にならないようにすることができる。
【0072】
端点間毎平滑化済ベクトル同定(非周回化)手段340において、端点間毎補助ベクトル入り(周回)ベクトル平滑手段330より得られる上記の平滑化(関数近似)済端点間毎補助ベクトル入り(周回)ベクトルが用いられる。そこで、各平滑化済の(周回)ベクトル毎にそれぞれの始端点と終端点となるベクトルを同定して、始端点と終端点の間のみの部分の非周回型のベクトル列を生成するために用いられる、各平滑化済の(周回)ベクトル毎の始端点・終端点情報を生成する。
【0073】
本実施形態において、端点間毎補助ベクトル入り(周回)ベクトル平滑手段330は、特許文献2に開示される方法、および、装置で構成されるものとする。このように構成することで、これまでの、必ずしも細線化されていない2値画像の輪郭(アウトライン)ベクトル用の平滑化手段を用いて、太さを意識せずに、細線のみで描かれている線画としてのベクトルの平滑化まで構成することが可能となる。
【0074】
特許文献2によれば、ベクトル平滑化(関数近似)の流れは、以下の通りである。まず、粗輪郭データと称して、2値のラスタ画像のデータより抽出された、水平ベクトル、垂直ベクトルが交互に並ぶ構成となる輪郭データを入力とし、粗輪郭上の線分より接線線分を抽出する。抽出された接線線分よりアンカーポイントを抽出し、抽出されたアンカーポイント間の線分により構成されるグループに、2次もしくは3次ベジェ曲線及び直線をあてはめ、又は、ベジェ曲線近似を行うことで2次もしくは3次のベジェ曲線により置きかえる。
【0075】
ここで、アンカーポイントとして定めた点をもとに、アンカーポイント間にある輪郭点を1つのグループとして関数近似する方法は、基本的な関数近似手法として知られている。また、アンカーポイントは、その間が、2次もしくは3次ベジェ曲線、及び直線のいずれに関数近似されたとしても、アンカーポイント自体の位置(座標値)は、変化しないという特徴を有している。端点間毎補助ベクトル入り(周回)ベクトル生成手段320においては、端点間毎線芯(周回)化済ベクトルの端点のそれぞれを、一方を始端点とし、他方を終端点とする。かつ、それらがともにアンカーポイントとなるように始端点と終端点間に補助ベクトル(補助輪郭点)を挿入していく処理が行われる。
【0076】
特許文献2によれば、接線線分とするベクトルの抽出の条件として、下記の条件が開示されている。
【0077】
第1の条件は、注目するベクトルの前後のベクトルの向きが互いに逆向きであることである。
【0078】
第2の条件は、抽出済みの主接線線分に隣接し、ベクトルの長さL1が、L1≧Θ4を満たしていることである。
【0079】
第3の条件は、ベクトルの長さL2が、L2≧Θ5を満たしていることである等の条件が開示されている。
【0080】
また、アンカーポイントの抽出に関して様々な手法が開示されている。例えば、抽出された接線線分上に新たな点を抽出し、それをアンカーポイントとする。また、アンカーポイントは、接線線分の2つの端に対しそれぞれ抽出されるので、一つの接線線分に対し2つのアンカーポイントが抽出されるが、その2つのアンカーポイントが一致した場合には一つのアンカーポイントのみ抽出される。また、2つのアンカーポイントが抽出される場合は、アンカーポイントに挟まれた部位は自動的にオブジェクト上の直線となる。接線線分上の一つの端点に対するアンカーポイント抽出方法としては、注目する接線線分であるベクトルに隣接するベクトルが接線線分であれば、この隣接する側の端点をアンカーポイントとする等の様々な手法が開示されている。
【0081】
そこで、端点間毎補助ベクトル入り(周回)ベクトル生成手段320は、端点間毎線芯(周回)化済ベクトルの端点のそれぞれを、一方を始端点とし、他方を終端点とし、かつ、それらがともにアンカーポイントとなるように、補助点を挿入する。
【0082】
図33の(a)を用いて、始端点としたい端点P(0)の直前に挿入する補助輪郭点P(−1)の挿入方法を説明する。補助輪郭点P(−1)を、これを始点とする補助ベクトルV(−1)が、始端点としたい端点P(0)の直後の輪郭点P(1)を始点とするベクトルV(1)と逆向きになるように、補助輪郭点P(−1)を定める。
【0083】
このようにすれば、上述の特許文献2の接線線分の第1の抽出条件から、ベクトルV(0)が接線線分となる。かつ、補助輪郭点P(−1)を始点とする補助ベクトルV(−1)が上述の特許文献2の接線線分の第3の抽出条件を満たすように十分な長さを持つようにする。このようにすれば、補助ベクトルV(−1)もまた接線線分となる。補助ベクトルV(−1)とベクトルV(0)とが共に接線線分となることにより、始端点としたい端点P(0)をアンカーポイントとすることができる。これは、アンカーポイント抽出方法における「注目する接線線分であるベクトルに隣接するベクトルが接線線分であれば、この隣接する側の端点をアンカーポイントとする」という条件による。
【0084】
次に、図33(b)を用いて、終端点としたい端点P(n)の直後に挿入する補助輪郭点P(n+1)の挿入方法を説明する。補助輪郭点P(n+1)を、これを終点とする補助ベクトルV(n)が、終端点としたい端点P(n)の直前の輪郭点P(n−1)を終点とするベクトルV(n−2)と逆向きになるように、補助輪郭点P(n+1)を定める。このようにすれば、上述の接線線分の第1の抽出条件から、ベクトルV(n−1)が、接線線分となる。かつ、補助輪郭点P(n+1)を、これを終点とする補助ベクトルV(n)が上述の接線線分の第3の抽出条件を満たすように十分な長さを持つようにする。このようにすれば、補助ベクトルV(n)もまた接線線分となる。補助ベクトルV(n−1)とベクトルV(n)とが共に接線線分となることにより、終端点としたい端点P(n)をアンカーポイントとすることができる。これは、アンカーポイント抽出方法における「注目する接線線分であるベクトルに隣接するベクトルが接線線分であれば、この隣接する側の端点をアンカーポイントとする」という条件による。
【0085】
このように、始端点と終端点がアンカーポイントになるように、それぞれ、始端点の直前への挿入点と終端点の直後への挿入点を定めた後、これらの挿入点が水平ベクトルと垂直ベクトルの連続で連結される。更に、始端点から終端点までの本来の輪郭点列と、終端点の直後から始端点の直前までの挿入点をへて再び始端点につながる一連の輪郭点列を生成する。かつ、この一連の輪郭点列のなかで、どれが、始端点と終端点であるかを同定するための情報とを加えた始端点・終端点情報を生成する。本実施形態において、輪郭点列中の始端点の座標値と終端点の座標値そのものを改めて別途生成することで、始端点・終端点情報としている。
【0086】
次に、図34に示すフローチャートにより、端点間毎補助ベクトル入り(周回)ベクトル生成手段320の動作を説明する。同図において、処理を開始すると、ステップS300において、端点間毎線芯(周回)ベクトル生成手段310より得られた、幅「0」に線芯化された端点間毎線芯(周回)化済ベクトルを入力する。次に、ステップS310では、ステップS300で入力した図30に示したような形式の端点間毎線芯(周回)化済ベクトルから、その中に含まれる1つのベクトル列(例えば、図30の第k輪郭(1≦k≦a))を当面の処理対象として順に定める。
【0087】
次に、ステップS320において、ステップS310で定めたベクトル列(総点数pとする)の中の1つのベクトルの輪郭点(第q点(1≦q≦p))として、第1点から第p点までを昇順に順次、1点ずつ当面の処理対象として定める。これは、ステップS330で始端点が見つけられるまでの間、ステップS320が実行されるたびに行われる。
【0088】
次に、ステップS330において、ステップS320で定めた輪郭点の輪郭点情報を参照して、この輪郭点が始端点とすべきベクトルか否かを判定する。この輪郭点が始端点とすべきベクトルの場合は、ステップS360に進み、そうではない場合にはステップS340に進む。ここで、当該輪郭点が始端点とすべきベクトルか否かは、その輪郭点の輪郭点情報を参照する。例えば、図10で表記しているところのUP_RIGHT_LT(18H)、DOWN_LEFT_RB(78H)、LEFT_UP_BL(B8H)、RIGHT_DOWN_TR(D8H)のいずれかであるか否かをもってその判定を行なう。また、図10の「値」の数値のbit3とbit4が共に1であるか否かによって判定しても良い。
【0089】
ステップS340において、ステップS310で入力した端点間毎線芯(周回)化済ベクトルの中に含まれる1つのベクトル列中の全てのベクトルの処理が終了したか否かを判定する。終了でなければ、当該ベクトル列中の次のベクトルに対してステップS320の判定を施すべくステップS320へ戻る。終了であれば、ステップS310で入力したベクトル列中には、始端点候補が存在しなかった場合であり、ステップS350へ進む。
【0090】
ステップS350において、当該ベクトル列は、端点のない閉ループである旨を示す閉ループマーカを該ベクトル列に対して付与した上で、それに加えて、該ベクトル列中の一連の各ベクトルをそのまま出力する。このデータ形式を図38の(a)に示す。同図において、対象としたベクトル列は第s番目であった場合で、そのベクトル列中にはv個のベクトルが含まれている場合の例である。尚、閉ループマーカとしては、端点座標としては本来ありえない(−1、−1)の座標値を2点分、始端点・終端点情報として付与して出力している。ステップS350の処理を終えると、ステップS420へ進む。
【0091】
ステップS360において、該輪郭点を始端点として登録し、かつ、該輪郭点を始端点〜終端点間の1ベクトルとして出力してステップS370へ進む。
【0092】
ステップS370において、ステップS320と同様に、ステップS310で定めたベクトル列(総点数pとする)の中の1つのベクトルの輪郭点(第q点(1≦q≦p))として、ステップS320で定められた輪郭点以降の点を当面の処理対象として定める。これは、ステップS320で定められた輪郭点以降の点から第p点に向けて昇順に順次、1点ずつ行われ、その後、ステップS380に進む。
【0093】
次に、ステップS380において、ステップS370で定めた輪郭点の輪郭点情報を参照して、この輪郭点が終端点とすべきベクトルか否かを判定する。この輪郭点が終端点とすべきベクトルの場合は、ステップS400に進み、そうではない場合にはステップS390に進む。ここで、当該輪郭点が終端点とすべきベクトルか否かは、その輪郭点の輪郭点情報を参照して行う。例えば、図10で表記しているところのUP_RIGHT_TL(08H)、DOWN_LEFT_BR(68H)、LEFT_UP_LB(A8H)、RIGHT_DOWN_RT(C8H)のいずれかであるか否かをもってその判定を行なう。これらは、図10の「値」の数値のbit3とbit4がそれぞれ0と1であるか否かを調べることで実現することもできる。
【0094】
ステップS390において、輪郭点を始端点〜終端点間の1ベクトルとして出力してステップS370へ戻る。
【0095】
ステップS400において、輪郭点を終端点として登録し、かつ、輪郭点を始端点〜終端点間の1ベクトルとして出力してステップS410へ進む。
【0096】
ステップS410において、ベクトル列の始端点と終端点の両方が定まり、かつ、始端点〜終端点間の一連の各ベクトルも出力された状態となっており、ここでは、終端点〜始端点の間に挿入される一連の補助ベクトルを求める。ステップS410の内容は、図35に示すフローチャートと図36及び図37を用いて追ってさらに説明を加える。ステップS410の処理を終えるとステップS420へ進む。
【0097】
ステップS420において、これでステップS300で入力した端点間毎線芯(周回)化済ベクトル中の全てのベクトル列の処理が終了したか否かを判定する。終了であればステップS430へ進み、終了でなければ、次のベクトル列に対してステップS320からステップS420までの処理を施すべくステップS310へ戻る。
【0098】
ステップS430において、ステップS300で入力した端点間毎線芯(周回)化済ベクトルに対する処理結果を出力する。
【0099】
図38の(b)に、対象としたベクトル列に、始端点・終端点の両方が定まり、かつ、始端点〜終端点間の一連の各ベクトルと終端点〜始端点の間に挿入される一連の補助ベクトルが求まった場合に出力されるそのベクトル列に対する出力例を示す。同図において、対象としたベクトル列は第u番目であった場合で、そのベクトル列中には始端点と終端点自身も含めて始端点〜終端点間の一連の各ベクトルがt個あり、かつ、終端点〜始端点の間に挿入される一連の補助ベクトルがr個ある場合の例である。ここで、第1点は、始端点そのものであり、第t点は、終端点そのものとなっている。
【0100】
次に、図35に示すフローチャートにより、図34に示すフローチャートのステップS410の処理の内容にさらに説明を加える。先述のように、当該ベクトル列の始端点と終端点の両方が定まり、かつ、始端点〜終端点間の一連の各ベクトルも出力された状態となっており、終端点〜始端点の間に挿入される一連の補助ベクトルを求めるのがステップS410の処理内容である。
【0101】
図35において、処理を開始すると、ステップS411において、図33(a)を用いて説明したように、始端点としたい端点P(0)の直前に挿入する補助輪郭点P(−1)の座標値を求める。即ち、補助輪郭点P(−1)を、これを始点とする補助ベクトルV(−1)が、始端点としたい端点P(0)の直後の輪郭点P(1)を始点とするベクトルV(1)と逆向きになるように定める。かつ、補助輪郭点P(−1)を始点とする補助ベクトルV(−1)が、上述の特許文献2の接線線分の第3の抽出条件を満たすように十分な長さ(例えば、10画素長以上)を持つように補助輪郭点P(−1)を定める。
【0102】
次に、ステップS412に進み、ステップS412において、図33(b)を用いて説明したように、終端点としたい端点P(n)の直後に挿入する補助輪郭点P(n+1)の座標値を求める。即ち、補助輪郭点P(n+1)をこれを終点とする補助ベクトルV(n)が、終端点としたい端点P(n)の直前の輪郭点P(n−1)を終点とするベクトルV(n−2)と逆向きになるように定める。かつ、補助輪郭点P(n+1)をこれを終点とする補助ベクトルV(n)が上述の特許文献2の接線線分の第3の抽出条件を満たすように十分な長さ(例えば、10画素長以上)を持つように補助輪郭点P(n+1)を定める。ステップS412の処理を終えると、ステップS413に進む。
【0103】
ステップS413において、ステップS411で求めた補助ベクトルV(−1)と、補助ベクトルV(n)とが、共に水平ベクトルとなっているか、あるいは、共に垂直ベクトルとなっているかを判定する。補助ベクトルV(−1)は、始端点としたい端点P(0)の直前に挿入する補助輪郭点P(−1)を始点とする補助ベクトルである。また、補助ベクトルV(n)は、終端点としたい端点P(n)の直後に挿入する補助輪郭点P(n+1)を終点とする補助ベクトルである。判定の結果、共に水辺ベクトル、又は、垂直ベクトルになっていれば、ステップS414に進み、なっていない場合にはステップS416に進む。
【0104】
ステップS414は、補助ベクトルV(−1)と補助ベクトルV(n)が、共に水平ベクトルとなっているか、又は、共に垂直ベクトルとなっている場合であり、この場合の例を図36に示す。ステップS414において、終端点としたい端点P(n)の次の次にあたる補助輪郭点P(n+2)を、P(n)からみてP(−1)から遠くなる方向に、特許文献2の接線線分の第3の抽出条件を満たす十分な長さ(例えば、10画素長以上)に定める。そして、ステップS415に進む。
【0105】
ステップ415も、ステップS414と同様に、補助ベクトルV(−1)と補助ベクトルV(n)が、共に水平ベクトルとなっているか、又は、共に垂直ベクトルとなっている場合である。ステップS415で、水平ベクトルと垂直ベクトルが交互につながってP(n+2)とP(−1)を連結する様、終端点としたい端点P(n)の3点後の補助輪郭点(始端点としたい端点P(0)の2点前の補助輪郭点でもある)である点P(n+3)を定める。そして、補助点挿入の一連のステップを終え、図34のフローチャートのS420に戻る。
【0106】
一方、ステップS416において、補助ベクトルV(−1)と補助ベクトルV(n)が、どちらか一方が水平ベクトルとなっていて、他方は垂直ベクトルとなっている場合であり、この場合の例を図37に示す。ステップS416において、終端点としたい端点P(n)の次の次にあたる補助輪郭点P(n+2)を、P(n+1)からみてP(−1)から遠くなる方向に、特許文献2の接線線分の第3の抽出条件を満たす十分な長さ(例えば、10画素長以上)に定める。そして、ステップS417に進む。
【0107】
ステップ417もステップS416と同様に、補助ベクトルV(−1)と補助ベクトルV(n)が、どちらか一方が水平ベクトルとなっていて、他方は垂直ベクトルとなっている場合である。ステップS417において、点P(n+3)を、P(n+2)からみてP(−1)から遠くなる方向に、特許文献2の接線線分の第3の抽出条件を満たす十分な長さ(例えば、10画素長以上)に定める。そして、ステップS418に進む。
【0108】
ステップ418もステップS416、及び、ステップS417と同様に補助ベクトルV(−1)と補助ベクトルV(n)のどちらか一方が水平ベクトルとなっていて、他方は垂直ベクトルとなっている場合である。ステップS418では、水平ベクトルと垂直ベクトルが交互につながるような形式でP(n+3)とP(−1)を連結する様に、終端点としたい端点P(n)の4点後の補助輪郭点である点P(n+4)を定める。ここで、補助輪郭点は、始端点としたい端点P(0)の2点前の補助輪郭点でもある。そして、補助点挿入の一連のステップを終え、図34のフローチャートのステップS420にもどる。
【0109】
端点間毎補助ベクトル入り(周回)ベクトル生成手段320は、端点間毎線芯(周回)ベクトル生成手段310より得られる端点間毎線芯(周回)化済ベクトルを入力し、補助ベクトルを挿入し、端点間毎補助ベクトル入り(周回)ベクトルを生成する。このことにより、端点間毎補助ベクトル入り(周回)ベクトル平滑手段330により平滑化(関数近似)処理される際に、端点部分に相当するベクトルが他のベクトルと統合されて端点位置が不明とならなくなる。即ち、端点部分に相当する部分が端点として保存される(ベジェ曲線のアンカーポイントとなる)ことができる。
【0110】
加えて、補助ベクトルを挿入された各端点間毎補助ベクトル入り(周回)ベクトルのそれぞれに対し、どのベクトルが端点部にあたるかを明示する始端点・終端点情報をも生成する。このように生成された処理結果は、例えば、図30に示したような形式の各輪郭データ部分のそれぞれを図38(a)や図38(b)の各ベクトル列データに置き換えた形として表現でき、本実施形態においては、この形式で出力されるものとする。
【0111】
尚、端点間毎補助ベクトル入り(周回)ベクトル平滑手段330は、特許文献2に開示される方法、および、装置で構成できる。端点部分に相当する部分が端点として保存された状態で、各(周回)ベクトル毎に平滑化(関数近似)された平滑化(関数近似)済端点間毎補助ベクトル入り(周回)ベクトルが生成される。また、次工程の処理をする端点間毎平滑化済ベクトル同定(非周回化)手段340に出力される。その際、端点間毎補助ベクトル入り(周回)ベクトル生成手段320で生成された始端点・終端点情報もそのまま端点間毎平滑化済ベクトル同定(非周回化)手段340に出力する。
【0112】
端点間毎平滑化済ベクトル同定(非周回化)手段340は、平滑化(関数近似)済端点間毎補助ベクトル入り(周回)ベクトルと、始端点・終端点情報とを入力する。ここで、平滑化(関数近似)済端点間毎補助ベクトル入り(周回)ベクトルは、端点間毎補助ベクトル入り(周回)ベクトル平滑手段330より得られる。また、始端点・終端点情報は、端点間毎補助ベクトル入り(周回)ベクトル生成手段320より得られる。各平滑化済の(周回)ベクトル列毎に、そのベクトル列内の各ベクトルの座標値を、それぞれ始端点と終端点となる輪郭点の座標値と比較し同定して、始端点と終端点の間のみの部分の非周回型のベクトル列を生成して端点間毎平滑化済(非周回)ベクトルとする。
【0113】
生成された処理結果は、やはり、図38の(a)及び(b)に示すような形式に準じた形として表現することができる。但し、各輪郭点は、輪郭点情報の部分において、アンカーポイントであるか否かの属性情報としての付与情報を有する。また、図38の(b)における、補助ベクトル部分は、この時点においては、特に無くても良い。この際、閉ループではない場合に、始端点・終端点に関しては、端点間毎補助ベクトル入り(周回)ベクトル生成手段320で生成された始端点・終端点情報を保持するものとする。本実施形態においては、このような形式で端点座標修正手段345に出力される。
【0114】
次に、図42に示すフローチャートにより、端点座標修正手段345の動作を説明する。同図において、処理を開始すると、ステップS500において、端点間毎平滑化済ベクトル同定(非周回化)手段340より得られた、端点間毎平滑化済(非周回)ベクトルを入力する。
【0115】
次に、ステップS510において、ステップS500で入力した図38に示すような形式の端点間毎平滑化済(非周回)ベクトルから、その中に含まれる1つのベクトル列を当面の処理対象として順に定める。
【0116】
次に、ステップS520において、当該ベクトル列が閉ループであるか否か始点・終点情報をチェックすることにより判定し、閉ループならステップS570へ進み、そうでなければ、ステップS530へ進む。
【0117】
ステップS530において、始端点の付与情報をチェックし、この端点が2×2の核内の一画素であったか否か判定する。具体的には、図10に示す値欄のLSBから3ビット(補正方向の欄の値に相当。以下、修正情報ともいう)が0(2進数表示で「000」)でないか否か、即ち、1〜4までの値(2進数表示で「001」、「010」、「011」、「100」のいずれか)であるかをチェックする。0でなければ、始端点は2×2の核内の一画素であったと判定してステップS540へ進み、そうでなければ、ステップS550へ進む。
【0118】
ステップS540において、端点補正を行ない、ステップS550へ進む。
【0119】
ステップS550において、終端点の付与情報をチェックし、ステップS530の始端点の場合と全く同様に、この端点が2画素×2画素の核内の一画素であったか否か判定する。終端点が2画素×2画素の核内の一画素であったと判定した場合は、ステップS560へ進み、そうでなければ、ステップS570へ進む。
【0120】
ステップS560において、ステップS540と同様に端点補正を行ない、ステップS570へ進む。ステップS540及びS560における端点補正については、後述する。
【0121】
ステップS570において、ステップS500において得られた、端点間毎平滑化済(非周回)ベクトルの中の全てのベクトル列の処理が終了したか否かを判定する。終了していない場合にはステップS510にもどり、次のベクトル列に対する一連の処理を始める。終了している場合には、ステップS580に進む。
【0122】
ステップS580において、そのように生成された処理結果を、平滑化済ベクトル出力手段350において、ファイル出力するか、又は、通信インタフェース4等を介して外部装置に出力する。
【0123】
尚、生成された処理結果は、やはり、図30に示したような形式に準じた形として表現することができる。但し、各輪郭点は、輪郭点情報の部分において、アンカーポイントであるか否かの属性情報として付与情報を有する。本実施例においては、このような形式で出力されるものとする。
【0124】
次に、図43のフローチャートを用いて、ステップS540及びS560で用いられる端点補正の処理内容を詳述する。同図において処理を開始すると、ステップS600において、処理対象の端点が、左上への半画素補正対象であるか否かをその付与情報をチェックすることで判定する。左上への半画素補正対象であれば、ステップS610へ進み、そうでなければステップS620へ進む。
【0125】
判定は、当該端点の付与情報が、図10に示される値欄のLSBから3ビット(補正方向の欄の値に相当)が1(2進数表示で「001」)であるか否かをチェックする。そうであれば、始端点は、2×2の核内の一画素であったことを示し、左上への半画素補正対象であると判定する。
【0126】
ステップS610において、処理対象の端点の座標(x、y)のx座標値を半画素長相当分減じ、y座標値を半画素長相当分減じる。即ち、前述したような座標系を踏襲し、1画素長を便宜上「2」として扱い、次式(1)、(2)のような演算を行う。
【0127】
x ← x−1 ・・・(1)
y ← y−1 ・・・(2)
ステップS620において、処理対象の端点が、左下への半画素補正対象であるか否かをその付与情報をチェックすることで判定する。左下への半画素補正対象であれば、ステップS630へ進み、そうでなければステップS640へ進む。判定は、当該端点の付与情報が、図10に示される値欄のLSBから3ビット(補正方向の欄の値に相当)が2(2進数表示で「010」)であるか否かをチェックする。そうであれば、始端点は、2×2の核内の一画素であったことを示し、左下への半画素補正対象であると判定する。
【0128】
ステップS630において、処理対象の端点の座標(x、y)のx座標値を半画素長相当分減じ、y座標値を半画素長相当分増やす。即ち、前述したような座標系を踏襲し、1画素長を便宜上「2」として扱い、次式(3)、(4)のような演算を行う。
【0129】
x ← x−1 ・・・(3)
y ← y+1 ・・・(4)
ステップS640において、処理対象の端点が、右上への半画素補正対象であるか否かをその付与情報をチェックすることで判定する。右上への半画素補正対象であれば、ステップS650へ進み、そうでなければステップS660へ進む。判定は、当該端点の付与情報が、図10に示される値欄のLSBから3ビット(補正方向の欄の値に相当)が3(2進数表示で「011」)であるか否かをチェックする。そうであれば、始端点は、2×2の核内の一画素であったことを示し、右上への半画素補正対象であると判定する。
【0130】
ステップS650において、処理対象の端点の座標(x,y)のx座標値を半画素長相当分増やし、y座標値を半画素長相当分減じる。即ち、前述したような座標系を踏襲し、1画素長を便宜上「2」として扱い、次式(5)、(6)のような演算を行う。
【0131】
x ← x+1 ・・・(5)
y ← y−1 ・・・(6)
ステップS660において、処理対象の端点が、右下への半画素補正対象であるか否かをその付与情報をチェックすることで判定する。右下への半画素補正対象であれば、ステップS670へ進み、そうでなければ一連の処理を終えて図42のフローチャートに復帰する。尚、判定は、当該端点の付与情報が、図10に示される値欄のLSBから3ビット(補正方向の欄の値に相当)が4(2進数表示で「100」)であるか否かをチェックする。そうであれば、始端点は、2画素×2画素の核内の一画素であったことを示し、右下への半画素補正対象であると判定する。
【0132】
ステップS670において、処理対象の端点の座標(x、y)のx座標値を半画素長相当分増やし、y座標値を半画素長相当分増やす。即ち、前述したような座標系を踏襲し、1画素長を便宜上「2」として扱い、次式(7)、(8)のような演算を行う。
【0133】
x ← x+1 ・・・(7)
y ← y+1 ・・・(8)
ステップS670の処理を終えると、一連の処理を終えて図42のフローチャートに復帰する。
【0134】
以上、説明したように、本実施形態においては、輪郭点に付与される状態情報に、2画素×2画素の核を構成する画素であるか否かに関する情報が含まれている。端点座標修正手段において、2画素×2画素の核となっている部分から得られた端点の座標値は、2画素×2画素の中心点の座標値に修正される。即ち、本実施形態に係る画像処理装置は、図11〜図26に示す画素マトリクス内の相隣接する4画素において端点を有するベクトルを同一点(2画素×2画素の中心点)に修正する。
【0135】
その結果、本実施形態においては、細線化された2値画像に、2画素×2画素の核となって残る部分の4画素が含まれていても、その部分で断線することなく、端点が接続されたベクトル列の集まりとして出力することができる。
【0136】
本実施形態において、図30や、図38の(a)及び(b)に示したデータ形式は、一例であるので、他の形式とされても良い。例えば、端点間毎平滑化済(非周回)ベクトルは、SVG形式のベクトル表現で出力されても良い。また、各ベクトル列中の輪郭点数のみをまとめて、輪郭点数テーブル部と各ベクトル列中の各ベクトルのデータ部とを分離して表現されても良い。即ち、図30の輪郭線中の総点数の部分のみ第1番目の輪郭から第a番目の輪郭までまとめた部分を作り、その後に、第1番目の輪郭から第a番目の輪郭までの輪郭点データをまとめた部分としても良い。さらに、図38の(a)に示した、閉ループマーカについても、始端点・終端点が存在するベクトル列の区別がつくような他の形式とされても良い。
【0137】
本実施形態において、端点間毎補助ベクトル入り(周回)ベクトル平滑手段は、特許文献2に開示される方法、及び、装置で構成されるものとして説明したが、他の方法によって実現されても良い。例えば、2次のベジェ関数等の近似や、ショートベクトルとしての直線近似された平滑化に適用されても良い。
【0138】
本実施形態において、ホスト及び端末の機能を実現するソフトウェアのプログラムコードを記憶したコンピュータ読み取り可能なプログラム記録媒体(記憶媒体ともいう)が、システム或いは装置に供給されるようにしても良い。その場合に、更に、システム或いは装置のコンピュータ(又はCPUやMPU)が記憶媒体に格納されたプログラムコードを読みだして実行しても良い。
【0139】
この場合、記憶媒体から読み出されたプログラム(画像処理プログラム)コード自体が、本実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することとなる。プログラムコードを供給するための記憶媒体としては、ROM、フロッピー(登録商標)ディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード等を用いることができる。また、コンピュータが読みだしたプログラムコードを実行して、本実施形態の機能が実現されるだけでなく、プログラムコードの指示に基づきコンピュータ上で稼動しているOS等が実際の処理の一部又は全部を行い、本実施形態が実現される場合も含まれる。
【0140】
記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された拡張機能ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる場合がある。その後に、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によって本実施形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【0141】
【図1】本発明の実施形態に係る画像処理装置の機能ブロック図を示す図である。
【図2】細線化済み2値画像において2画素×2画素の核となって残る部分が発生した例を示す図である。
【図3】図2における該当部の拡大図を示す図である。
【図4】2画素×2画素の核となる部分の画素の配置とベクトル抽出例とを示す図である。
【図5】本発明の実施形態に係る画像処理装置の構成を示す図である。
【図6】図5における端点間毎輪郭(周回)ベクトル抽出手段の構成を示す図である。
【図7】画像マトリクスにおける注目画素と近傍画素とを示す図である。
【図8】端点部において、検出される輪郭点例と、付与される輪郭点情報とを示す図である。
【図9】端点部ではない部分において、検出される輪郭点例と、付与される輪郭点情報とを示す図である。
【図10】輪郭点に付与される輪郭点情報の一覧を示す図である。
【図11】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第1のパターン(ケース0)を示す図である。
【図12】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第2のパターン(ケース1)を示す図である。
【図13】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第3のパターン(ケース2)を示す図である。
【図14】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第4のパターン(ケース3)を示す図である。
【図15】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第5のパターン(ケース4)を示す図である。
【図16】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第6のパターン(ケース5)を示す図である。
【図17】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第7のパターン(ケース6)を示す図である。
【図18】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第8のパターン(ケース7)を示す図である。
【図19】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第9のパターン(ケース8)を示す図である。
【図20】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第10のパターン(ケース9)を示す図である。
【図21】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第11のパターン(ケース10)を示す図である。
【図22】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第12のパターン(ケース11)を示す図である。
【図23】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第13のパターン(ケース12)を示す図である。
【図24】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第14のパターン(ケース13)を示す図である。
【図25】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第15のパターン(ケース14)を示す図である。
【図26】注目画素と近傍画素の状態とに応じて、抽出される輪郭点及び輪郭点情報の第16のパターン(ケース15)を示す図である。
【図27】端点間毎輪郭(周回)ベクトル抽出手段の処理の手順を示すフローチャートである。
【図28】図27におけるベクトル列抽出処理の手順を示すフローチャートである。
【図29】図28における周囲8画素の状態に応じた処理の手順を示すフローチャートである。
【図30】端点間毎輪郭ベクトル列のデータ形式の一例を示す図である。
【図31】端点間毎線芯(周回)ベクトル生成手段の処理の手順を示すフローチャートである。
【図32】線素と、端点間毎ベクトル列及び輪郭点情報と、端点間毎線芯ベクトルとを示す図である。
【図33】始端点の直前と終端点の直後とに挿入する補助輪郭点を説明する図である。
【図34】端点間毎補助ベクトル入り(周回)ベクトル生成手段の処理の手順を示すフローチャートである。
【図35】図34における補助ベクトル挿入の処理の手順を示すフローチャートである。
【図36】補助ベクトル挿入の処理を説明する第1の図である。
【図37】補助ベクトル挿入の処理を説明する第2の図である。
【図38】端点間毎補助ベクトル入りベクトル、及び、端点間毎平滑化済ベクトルのデータ形式の一例を示す図である。
【図39】2値画像が入力され、平滑化済ベクトルが生成されるまでの一連の処理経過を示す図である。
【図40】端点座標修正手段における処理を説明する第1の図である。
【図41】端点座標修正手段における処理を説明する第2の図である。
【図42】端点座標修正手段の処理の手順を示すフローチャートである。
【図43】図42における端点補正の処理の手順を示すフローチャートである。
【符号の説明】
【0142】
1 スキャナ
2 画像メモリ
3 画像入出力部
4 通信インタフェース
5 端点間毎輪郭ベクトル抽出部
6 ROM
50 入力画像ラスタ走査部
101 注目画素
200 細線化済2値画像獲得手段
210 2値画像入力手段
211 画像入力手段
212 2値化手段
220 2値画像細線化手段
300 端点間毎輪郭(周回)ベクトル抽出手段
310 端点間毎線芯(周回)ベクトル生成手段
320 端点間毎補助ベクトル入り(周回)ベクトル生成手段
330 端点間毎補助ベクトル入り(周回)ベクトル平滑手段
340 端点間毎平滑化済ベクトル同定(非周回化)手段
345 端点座標修正手段
350 平滑化済ベクトル出力手段
500 信号線
501 入力制御回路
502、503、504、507、508、509、510、511、512 ラッチ
505、506 FIFO
513、514 入力ポート
515 主走査カウンタ
516 副走査カウンタ
517 入出力制御ポート
518 バス
519 CPU
520 RAM
521 入出力部
522 ハードディスク

【特許請求の範囲】
【請求項1】
細線化された2値画像を生成し、ベクトルを抽出する画像処理装置であって、
前記細線化された2値画像を、複数の画素から構成される画素マトリクスでラスタ走査し、前記画素マトリクスにおける白画素と黒画素の予め定められたパターンに従って、輪郭点情報が付与されたベクトルを抽出するベクトル抽出手段と、
前記ベクトルに付与された前記輪郭点情報を参照することによって、前記ベクトルが、前記画素マトリクスにおける2画素×2画素の黒画素の集まりから抽出されたことを検出し、前記輪郭点情報に含まれる座標値の修正情報に従って、前記ベクトルを線芯化した線芯ベクトルの座標値を修正する座標修正手段と、
を備えることを特徴とする画像処理装置。
【請求項2】
前記座標修正手段が、前記ベクトルの座標値を、前記2画素×2画素の黒画素の集まりの中心点に修正することを特徴とする請求項1記載の画像処理装置。
【請求項3】
前記画素マトリクスが3画素×3画素で構成されることを特徴とする請求項1又は2記載の画像処理装置。
【請求項4】
前記パターンが、
4連結に細線化された2値画像から認識される前記白画素と前記黒画素の集まりであることを特徴とする請求項3記載の画像処理装置。
【請求項5】
細線化された2値画像を生成し、ベクトルを抽出する画像処理方法であって、
ベクトル抽出手段が、前記細線化された2値画像を、複数の画素から構成される画素マトリクスでラスタ走査し、前記画素マトリクスにおける白画素と黒画素の予め定められたパターンに従って、輪郭点情報が付与されたベクトルを抽出するベクトル抽出工程と、
座標修正手段が、前記ベクトルに付与された前記輪郭点情報を参照することによって、前記ベクトルが、前記画素マトリクスにおける2画素×2画素の黒画素の集まりから抽出されたことを検出し、前記輪郭点情報に含まれる座標値の修正情報に従って、前記ベクトルを線芯化した線芯ベクトルの座標値を修正する座標修正工程と、
を備えることを特徴とする画像処理方法。
【請求項6】
細線化された2値画像を生成し、ベクトルを抽出する画像処理プログラムであって、
前記細線化された2値画像を、複数の画素から構成される画素マトリクスでラスタ走査し、前記画素マトリクスにおける白画素と黒画素の予め定められたパターンに従って、輪郭点情報が付与されたベクトルを抽出するベクトル抽出手段と、
前記ベクトルに付与された前記輪郭点情報を参照することによって、前記ベクトルが、前記画素マトリクスにおける2画素×2画素の黒画素の集まりから抽出されたことを検出し、前記輪郭点情報に含まれる座標値の修正情報に従って、前記ベクトルを線芯化した線芯ベクトルの座標値を修正する座標修正手段と、
してコンピュータを機能させるための画像処理プログラム。
【請求項7】
細線化された2値画像を、複数の画素から構成される画素マトリクスでラスタ走査し、前記画素マトリクスにおける白画素と黒画素の予め定められたパターンに従って、輪郭点情報が付与されたベクトルを抽出するベクトル抽出手段と、
前記ベクトルに付与された前記輪郭点情報を参照することによって、前記ベクトルが、前記画素マトリクスにおける2画素×2画素の黒画素の集まりから抽出されたことを検出し、前記輪郭点情報に含まれる座標値の修正情報に従って、前記ベクトルを線芯化した線芯ベクトルの座標値を修正する座標修正手段と、
してコンピュータを機能させるためのプログラムを記録したコンピュータ読み取り可能なプログラム記録媒体。
【請求項8】
細線化された2値画像を生成し、ベクトルを抽出する画像処理装置であって、
前記細線化された2値画像から、線芯化された線芯ベクトルを抽出するベクトル抽出手段と、
画素マトリクス内の相隣接する4画素において端点を有する、前記線芯ベクトルのそれぞれの前記端点の座標を同一点に修正する座標修正手段と、
を備えることを特徴とする画像処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate


【公開番号】特開2009−116689(P2009−116689A)
【公開日】平成21年5月28日(2009.5.28)
【国際特許分類】
【出願番号】特願2007−289962(P2007−289962)
【出願日】平成19年11月7日(2007.11.7)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】