説明

閉図形抽出装置

【課題】任意の線図形に対して正確に抽出可能で、不要な接続点の認識を排除することができる閉図形抽出装置を提供する。
【解決手段】複数のベクトルによって構成される線図形の中から、空間的に閉塞した領域としての閉図形を抽出する閉図形抽出装置10である。閉図形抽出装置10は、前記線図形を構成する各ベクトルについて、互いの接続関係を対応づけ、各ベクトルを開始ベクトルとして、追跡方向を記録しながら連続的に追跡して追跡リストを作成し、抽出された閉図形のうち、任意の2つの閉図形を構成する追跡リストに共通する任意の一つのベクトルが、連続かつ互いに異なる追跡方向を有するように前記追跡リストを再配置して、当該2つの追跡リストを合成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、閉図形抽出装置に関し、より具体的には、複数の線によって構成される線図形の中から、空間的に閉塞した領域として閉図形を抽出する閉図形抽出装置に関する。
【背景技術】
【0002】
従来、パーソナルコンピュータやCAD(Computer Aided Design)装置等の図形処理装置によって、地図、回路パターン図、設計図等の線図形を処理する場合、しばしば当該線図形の中から空間的に閉塞した領域としての閉図形を抽出することが要求される。
【0003】
従来、線図形から閉図形を抽出する技術の一例として、特開平3−171378号公報(特許文献1)に開示された「閉領域自動認識装置」がある。また、線図形から閉図形を抽出する他の従来技術として、特開平2−245987号公報(特許文献2)に開示された「線図形認識装置の閉ループ抽出方法」がある。
【0004】
しかし、上記特許文献1の技術では、線図形の中に、一方の閉図形がその内部に他方の閉図形を包含し、かつ他方の閉図形が一方の閉図形と1点で接しているような閉図形群が存在している場合、閉図形を正しく抽出できないという問題点があった。
【0005】
さらに、上記特許文献2の技術は、アークの追跡時に、追跡中ノードに接続するアークのすべてについて、その反対側ノード(追跡中ノードと反対側のノード)の接続状況を調べるという複雑な条件判断を行っているため、追跡に時間がかかるという問題点を有していた。
【0006】
かかる問題を解消すべく、特開平6−119446号公報(特許文献3)に開示の「閉図形抽出装置」が公知となっている。追跡中のアークが閉図形以外の図形部分に到達しても、再び追跡開始アークの追跡開始方向に戻るまでアークの追跡が中断することなく続行されるため、閉図形以外の図形部分に分岐点ノードが存在する場合であっても、アークの追跡が途中で中断することがなくなり、閉図形を正しく抽出できる。
【特許文献1】特開平3−171378号公報
【特許文献2】特開平2−245987号公報
【特許文献3】特開平6−119446号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかし、特許文献3にかかる閉図形抽出装置は、例えば、図27に示すような、V101〜V104で構成された1つの閉図形を貫通する線分V105が存在する場合、当該成分で区画された2つの閉図形L101,L103としての抽出が可能であるが、V105〜V108で構成された1つの閉図形(すなわちL102+L103の閉図形)を抽出することは不可能であった。
【0008】
すなわち、特許文献3にかかる閉図形抽出装置は、追跡中ノードに接続する3以上のアークが存在する場合、現在追跡中のアークを除き、当該アークから見て最も右側(左側でも同様である)に折れるアークを次の追跡中アークとすることから、V105の追跡過程において、ノードC101でV105を直進して追跡することができない。よって、V105の全線分を構成要素とする閉図形L103の抽出を行うことができないという問題があった。
【0009】
さらに、特許文献3にかかる閉図形抽出装置は、1つの閉図形がその一部に他方の閉図形を包含し、かつ他方の閉図形が一方の閉図形と一点で接しているような閉図形群が存在している場合(図28)、他方の閉図形と一点で接している1の閉図形の当該接点Sを新たなノード(接続点)として判断することとなる。そして、このように1つの閉図形の1つの線分の途中にノード(接続点)が認識されると、当該閉図形において各ノード毎に変形式を持つような特殊な拡大縮小変形処理を行う場合に、自動追加されたノードには適切な変形式が未設定であることから、意図した変形結果を得ることが困難となる。例えば、閉図形抽出装置が服飾型作成の編集作業装置に組み込まれて使用される場合、規準サイズからのサイズアップ及びサイズダウンの処理に問題となる。
【0010】
したがって、本発明が解決しようとする技術的課題は、上記問題を解消し、1つの閉図形を貫通する線分が存在する場合などの図形を含む任意の線図形に対して正確に抽出可能で、不要な接続点の認識を排除することができる閉図形抽出装置を提供することである。
【課題を解決するための手段】
【0011】
本発明は、上記技術的課題を解決するために、以下の構成の閉図形抽出装置を提供する。
【0012】
本発明の第1態様によれば、複数のベクトルによって構成される線図形の中から、空間的に閉塞した領域としての閉図形を抽出する閉図形抽出装置であって、
前記線図形を構成する各ベクトルを格納するベクトルリストと、
前記ベクトルリストに格納されているベクトルについて、他のベクトルとの交点を抽出し、前記交点が存在する場合は当該ベクトルを分割して作成された新たなベクトルを互いの接続関係を対応づけて前記ベクトルリストに登録する、交点抽出手段と、
前記ベクトルリストに登録されたベクトルについて、各ベクトルを開始ベクトルとして、追跡方向を記録しながら連続的に追跡して追跡リストを作成し、追跡リストに含まれる連続するベクトルが同一で互いに異なる追跡方向を有している場合は当該ベクトルを除外しつつ閉図形を抽出する追跡手段と、
前記ベクトルリストに登録されたベクトルについて、各ベクトルを開始ベクトルとして
前記追跡手段で抽出された閉図形のうち、任意の2つの閉図形を構成する追跡リストに共通する任意の一つのベクトルが、連続かつ互いに異なる追跡方向を有するように前記追跡リストを再配置して、当該2つの追跡リストを合成する共有ベクトル合成手段と、
前記抽出図形を構成するベクトルが、交点抽出手段により分割されたベクトルを含む場合、前記ベクトルリストの接続関係に基づいて、統合したベクトルに置き換える、ベクトル統合手段とを備えることを特徴とする、閉図形抽出装置を提供する。
【0013】
本発明の第2態様によれば、前記追跡手段は、
右回りに追跡処理して追跡リストを作成する第1追跡手段と、
左回りに追跡処理して追跡リストを作成する第2追跡手段とを備える、ことを特徴とする、第1態様の閉図形抽出装置を提供する。
【0014】
本発明の第3態様によれば、前記共有ベクトル合成手段は、前記追跡リスト変換手段により変換された前記共通ベクトルが連続するように前記追跡リストを合成することを特徴とする、第1又は第2態様の閉図形抽出装置を提供する。
【0015】
本発明の第4態様によれば、前記共有ベクトル合成手段は、合成された追跡リストのうち、連続する同一かつ互いに異なる追跡方向ベクトル及び前記抽出された他の閉図形と同配列のベクトルを削除することを特徴とする、第3態様の閉図形抽出装置を提供する。
【発明の効果】
【0016】
本発明によれば、線図形を構成するベクトルを交点で分割し、分割された全てのベクトルを追跡開始ベクトルとして追跡を行い、追跡により得られた閉図形に共通するベクトルを統合して他の閉図形を構築することができるため、追跡において抽出できなかった閉図形を新たに抽出することができる。また、分割されたベクトルを含む閉図形には、ベクトルリストに含まれる接続関係に基づいて統合を行うため、線分の途中に接続点をなくすことができる。
【0017】
また、本発明によれば、追跡処理として、右回りと左回りの双方を行うことにより、追跡処理での閉図形の抽出をより正確に行うことができる。
【0018】
また、本発明の第3及び第4態様によれば、合成処理において共通するベクトルを除外し、合成処理において閉図形を容易に抽出することができる。
【発明を実施するための最良の形態】
【0019】
以下、本発明の一実施形態に係る閉図形抽出装置について、図面を参照しながら説明する。
【0020】
(装置の概略構成)
図1は、本発明の一実施形態にかかる閉図形抽出装置の概略構成を示すブロック図である。図1において、この閉図形抽出装置は、CPU1,ROM2,RAM3,ベクトル演算用プロセッサ4,画像入力ポート5および端末制御部6を含むデータ処理ユニット10と、原稿上の画像をラスタデータとして読み込むイメージスキャナ8と、画像処理の指示や処理結果の表示を行う端末機9とを備えている。
【0021】
CPU1は、システムバス7を介して、ROM2およびRAM3とデータ伝送可能に接続されている。CPU1は、ROM2に格納されたプログラムに従ってデータ処理を行う。RAM3は、CPU1のデータ処理に必要なデータを適宜記憶する。さらに、CPU1は、システムバス7を介して、ベクトル演算用プロセッサ4,画像入力ポート5および端末制御部6と接続されている。画像入力ポート5および端末制御部6には、それぞれ、イメージスキャナ8および端末機9が接続されている。
【0022】
イメージスキャナ8は、セットされた原稿を光学的にスキャンし、白黒の2値情報として画像データ(ラスタデータ)を読み取るものである。CPU1は、端末機9からの指示により、イメージスキャナ8が読み取ったラスタデータを画像入力ポート5に内蔵された画像バッファの所定の領域に展開する。端末機9は、こうした一連の画像処理の作業をデータ処理ユニット10に指示するとともに、画像処理の過程や処理結果をその表示部に表示する。
【0023】
データ処理ユニット10に内蔵されたベクトル演算用プロセッサ4は、画像入力ポート5の画像バッファに展開されたラスタデータに対してベクトル演算を行って、原画像に対する線分のベクトルデータを抽出するプロセッサである。ベクトルデータとしては、始点の座標と方向と長さ、あるいは始点と終点の座標といった形式が考えられる。
【0024】
次に、データ処理ユニット10が実行する閉図形抽出処理について説明する。図2は、データ処理ユニットの機能ブロック図であり、図3は、データ処理ユニットが実行する処理のフローチャートである。
【0025】
(線図形画像入力)
本実施形態の画像処理装置は、閉図形抽出処理を開始すると、まず画像の入力処理を行う(#1)。入力処理は、例えば、イメージスキャナ8によって読み取られたラスタデータをデータ処理ユニット10が画像入力ポート5の画像バッファに展開することにより行われる。なお、画像入力処理としては、イメージスキャナ8により読み取る他に、図示しない任意の画像作成装置によって作成された線図又はラスタデータとして認識されている情報を読み出すように構成してもよい。
【0026】
(ベクトルデータ抽出処理)
次に、データ処理ユニット10は、画像入力ポート5の画像バッファに展開されたラスタデータから線図形を構成する各線分のベクトルデータを抽出する処理を行う(#2)。このベクトルデータの抽出は、ラスタデータに対してベクトル演算用プロセッサ4により行われ、RAM3の所定の領域であるベクトルデータ記憶部11に格納される。
【0027】
図4は、画像の入力処理により入力された画像データをベクトルデータとして抽出した状態を示す例である。図4に示す例では、ベクトルデータはベクトルV1〜ベクトルV9までのベクトルの集合として認識されている。ベクトルデータの例を図5に示す。図5に示すように、ベクトルデータは、各ベクトルV1〜ベクトルV9の始点・終点の座標、有効フラグ、接続フラグなどの情報を有する。各ベクトルの始点・終点を示す方向性は任意に決定すればよく、例えば、右から左方向、上から下方向などというように必ずしも一義的に決定されていなくてもよい。有効フラグは、後述する閉図形抽出の追跡工程において、追跡の対象となるか否かをしめすフラグである。また、接続フラグは、あるベクトルが接続する他のベクトルを示すフラグである。
【0028】
また、各ベクトルは、曲線で構成されていてもよい。図4では、例えば、ベクトルV2は曲線で構成されており、この場合は、始点・終点の端点の他、自由曲線の中間点の座標を任意に有する。
【0029】
(交点抽出処理)
次に、データ処理ユニット10は、交点抽出処理を行う(#3)。交点抽出処理は、交点抽出手段12が処理を司る。図6は、交点抽出処理のフローチャートである。図7は、交点抽出処理によって更新されたベクトルデータのデータ構造を示す図である。図8は、交点抽出処理後のベクトル及び交点の状態を示す図である。図9は、交点抽出処理によって抽出された交点リストのデータ構造を示す図である。交点抽出処理は、まず、ベクトルデータ記憶部11に格納されているそれぞれのベクトルV1〜ベクトルV9について、それぞれに交点が存在しているかを確認する(#32)。ベクトルの交点が存在している場合は、対象ベクトルを当該交点で分割して新たなベクトルデータとし、ベクトルデータに登録する(#33)。分割された対象ベクトルは、有効フラグが無効に書き換えられ、接続フラグに分割の対象となった他のベクトルを登録する(#34)。また、存在が確認された交点については、交点リストに記録され(#35)、交点リスト記憶部13に格納される。
【0030】
図7及び図8を用いて交点抽出処理の具体的処理について説明する。以下では、対象ベクトルを、ベクトルV1からベクトルV9へと順次切り替えて交点抽出を行う場合を例にとって説明する。ベクトルV1を対象ベクトルとした場合、ベクトルV1については、図8に示すように他のベクトルV2及びベクトルV3と交差する点(交点C1,C2)が存在している。ここで、交点C1は、ベクトルV1と他のベクトルV3が交差する交点であり、交点C1を挟んで両側にベクトルV1を構成する一部の線分が存在する。一方、交点C2は、ベクトルV1の終点座標とベクトルV2の始点座標が一致しており、交点を挟んで一方側にのみベクトルV1を構成する線分が存在する。
【0031】
ベクトルV1を対象ベクトルとした場合、抽出される交点はC1,C2であり、ベクトルV1を分割して新たに登録されたベクトルはベクトルV10とベクトルV11となる。ベクトルV1は分割されたため、図7に示すように無効のフラグが付される。また、新たに登録されたベクトルV10,ベクトルV11は、有効のフラグが立てられ接続フラグに互いのベクトルが付される。
【0032】
ベクトルV1を対象とした場合に抽出された交点C1及びC2は、交点リストに登録される。交点リストに登録される交点は、ベクトルの始点又は終点の座標が交点座標と一致しているベクトルを接続ベクトルとして登録する。よって、たとえば、交点C1の接続ベクトルは、この段階では、ベクトルV10及びベクトルV11のみとなる。この段階で、ベクトルV1を対象ベクトルとする交点抽出処理は終了し、対象ベクトルをインクリメントしつつ、同様の処理が繰り返し行われる。
【0033】
上記交点抽出処理において、ベクトルV3を対象とする場合、抽出された交点は、すでに登録された交点C1である。ベクトルV3は交点C1で分割され、新たにベクトルV12,ベクトルV13が登録される。また、交点C1の交点リストには、その交点を始点又は終点とするベクトルV12,ベクトルV13が接続ベクトルとして登録される。
【0034】
ベクトルV6を対象ベクトルとする場合、ベクトルV6は、ベクトルV8とベクトルV9に交差することなく連結しているため、分割の処理が行われない。したがって、ベクトルV6は依然として有効であり、ベクトルデータの更新は行われない。また、交点C6及び交点C9では、接続ベクトルとしてV6が登録される。
【0035】
以上の処理を全てのベクトルについて実行する。全てのベクトルについての処理が終了すると、延長処理(#38)を実行する。
【0036】
延長処理(#38)は、延長処理手段17によって実行され、ベクトルの両端から一定の距離だけ線分を延長する処理である。延長処理によって、わずかな隙間を空けて配置されている2つの線分を接続させ新たに交点を抽出することができる。
【0037】
図10は延長処理後のベクトル及び交点の状態を示す図である。図11は、延長処理によって抽出された交点リストのデータ構造を示す図である。延長処理は、上記交点抽出において有効のフラグが付されているベクトルであって、交点リストの接続ベクトルとして登録されている数が1つ以下のベクトルが対象となる。図8の例では、ベクトルV11,ベクトルV12,ベクトルV13,ベクトルV15,ベクトルV16,ベクトルV17,ベクトルV18,ベクトルV20,ベクトルV23,ベクトルV24,ベクトルV26,ベクトルV27が対象となる。
【0038】
これらの延長処理の対象となるベクトルについて、交点として登録されていない側の端点から所定量線分を延長する。延長量は任意に設定することができ、たとえば、ベクトルの長さに関係なく一定量を延長してもよいし、例えば、ベクトル長さの20%を延長するというようにベクトルの長さに応じて設定してもよい。
【0039】
延長する側の端点を中心として所定距離内に他のベクトルが存在する場合については、その交点を新たな交点として交点リストに追加する。図10の例では、破線で示したベクトルV11とベクトルV20が延長されて新たな交点C12が登録され、ベクトルV18が延長されて新たな交点C11が登録され、ベクトルV12が延長されて新たな交点C10が登録されている。
【0040】
延長処理によって新たに登録された交点を規準として、ベクトルをさらに分割する。図10の例では、ベクトルV17は、新たに登録された交点C10,交点C11によってベクトルV30,ベクトルV31,ベクトルV32に分割される。ベクトルの分割に伴い、ベクトルV17は有効フラグが無効に更新され、図11に示すように、交点リストの交点C10,交点C11,交点C12が追加され、接続ベクトル番号が更新される。
【0041】
延長処理が終了すると交点抽出処理(#3)は終了し、閉図形抽出処理(#4)が実行される。
【0042】
(閉図形抽出処理)
図12は閉図形抽出処理のサブフローチャートである。閉図形抽出処理(#4)は、図12に示す通り、右回り追跡処理(#41)、左回り追跡処理(#42)、共有ベクトル処理(#43)、ベクトル統合処理(#44)の4つのサブルーチンを備える。右回り追跡処理(#41)は、第1追跡手段18が実行し左回り追跡処理(#42)は第2追跡手段19が実行する。共有ベクトル処理(#43)は共有ベクトル処理手段20が実行する。ベクトル統合処理(#44)はベクトル統合処理手段21が実行する。
【0043】
(右回り追跡処理)
図16は、右回り追跡処理のサブフローチャートである。右回り追跡処理では、適当なベクトルから追跡をスタート(#411)し、連続する要素を辿っていく。このとき、任意の追跡開始のベクトルごとに追跡リストを作成し、追跡したベクトルと追跡方向を記録しておく(#412)。右回り追跡処理では、交点又は開放端において、追跡方向から見て最も右側に存在するベクトルを連続して追跡する。追跡は、追跡をスタートしたベクトルに対して追跡方向が同じとなった時点で終了する(#413)。
【0044】
図13Aは、ベクトルV10をスタートとして右回り追跡を行う場合の処理を説明する図であり、図13Bは、図13Aの追跡処理が行われる場合の追跡リストのデータ構成例を示す図である。図13Aに示すように、ベクトルV10からベクトルの追跡が行われる場合、ベクトルV10の追跡方向は、ベクトルの方向と逆向きであるため、図13Bに示される追跡リストにベクトルV10が逆向きに追跡されたことが記録される。交点C1では、ベクトルV11,ベクトルV12,ベクトルV13が接続されているが、右回り追跡処理では、追跡方向から見て最も右側に存在するベクトル(ベクトルV12)を選択して追跡する。同様に追跡を繰り返して追跡したベクトル及び交点を記録し、追跡をスタートしたベクトル(ベクトルV10)に対して追跡方向が同じとなった時点で、当該追跡を終了する。
【0045】
なお、本実施例では、追跡するベクトルについて、接続された他のベクトルが存在しなければ、現在追跡しているベクトルの端点から同じベクトルを逆向きに追跡する。具体的には、図14Aに示す、ベクトルV11を追跡スタートのベクトルとして追跡を開始した場合、図14Bに示すように、ベクトルV11(逆),ベクトルV20(逆),ベクトルV22(順),ベクトルV24(順)と追跡が進むが、ベクトルV24(順)の終点では、交点が存在しないため、再度ベクトルV24を逆向きに追跡する。また、ベクトルV24(逆)を行い、交点C4では、ベクトルV23(順)、ベクトルV23(逆)、ベクトルV25(逆)・・・と追跡が行われ、最後に、ベクトルV11(逆)となった時点で当該追跡を終了する。
【0046】
このときの追跡リストは、図14Bに示す通りとなるが、右回り処理手段は、追跡リストの追跡結果であって、同じベクトルで追跡方向が互いに異なる追跡結果を有する連続するベクトルは端ベクトルと判断し、これを追跡結果から削除する処理を行う(#414)。具体的には、図14Bでは、No4,No5のベクトルV24,No6,No7のベクトルV23,No9,No10のベクトルV27は、それぞれ連続しかつ追跡方向が互いに異なるので、これらを端ベクトルとして追跡リストから削除する。図14Cは、端ベクトル削除が行われた図14Bの追跡リストの結果を示す図である。
【0047】
なお、端ベクトルの削除は多段階で行われる。多段階に削除処理を行うことで、複数のベクトルによって1つの開放端を構成するような場合であっても、閉図形の抽出要素から除外することができる。たとえば、図4に示す本実施形態の例には含まれていないが、例えば、図15Aに示すように、3つのベクトルV50、ベクトルV51、ベクトルV52で端ベクトルを構成しているような場合の追跡処理の例を説明する。
【0048】
ベクトルV50を追跡スタートとして追跡処理がスタートした場合、図15Bに示すように、追跡結果は、ベクトルV50(順),ベクトルV51(順),ベクトルV52(逆),ベクトルV52(逆),ベクトルV51(順),ベクトルV50(逆)となり、スタートであるベクトルV50(順)が追跡される時点で当該追跡処理が終了する。そして削除処理では、第1段階として、No3,No4のベクトルV52及び、No6,No7のベクトルV50が削除される。第1段階の削除の結果、次にNo2,No5が隣り合う追跡結果となり、ベクトルが共通で追跡方向が反対であるため、ベクトル51についても端ベクトルであると判断され、これが削除される。
【0049】
なお、図15Aにおいて、追跡スタートのベクトルが例えばベクトルV51であったとしても、図15Cに示すように、削除処理を行えば、同じ結果となる。
【0050】
次に、一図形内の複数閉図形の分割処理を行う。追跡リストの各ベクトルの端点で、重複の有無を検査し、重複があればその重複端点の前後で、追跡リストを分割する。この処理は、図15Dのような一つの追跡リスト内に2つの閉図形F1,F2が存在するような場合に、それぞれの閉図形を検出するための処理である。具体的には、連続する交点(C30,C31)が2以上追跡リスト内に存在し、かつ当該交点に挟まれるベクトルV50が正逆方向反対である場合に、複数の閉図形が連結している図形であると判断する。
【0051】
なお、追跡リストを分割と端ベクトルの削除の順序はどちらを先にしてもよい。例えば、追跡リストの分割を行って、複数の閉図形を検出した後、それぞれの追跡リストにおいて上記の端ベクトルの削除に関する処理を行い、端ベクトルがあればそれを削除するようにしてもよい。
【0052】
削除処理(#414)を行った結果、追跡リストを構成するベクトルが2以下の場合は、当該追跡リストを削除する(#417)。一方、追跡リストを構成するベクトルが2以上である場合は、閉図形であると判断し、閉図形リストに当該追跡リストを登録する(#416)。閉図形リストは、ROM2又はRAM3の一部領域で構成される閉図形リスト記憶部14に格納される。
【0053】
なお、このとき、閉図形リストに格納される追跡結果は、同じ閉図形が多数回認識される。例えば、ベクトルV10をスタートベクトルとして抽出される閉図形と、ベクトルV12,ベクトルV14,ベクトルV30をスタートベクトルとした場合に抽出されるそれぞれの閉図形は同じ閉図形であり、構成ベクトルを全て共通にする図形である。このような構成ベクトルを全て共通する閉図形は、2回目以降閉図形リストに登録しない。以上の処理を繰り返し行い、全てのベクトルを追跡スタートベクトルとした場合について追跡を行い、全てのベクトルについての追跡が終了すると右回り追跡処理を終了する。
【0054】
(左回り追跡処理)
右回り追跡処理が終了すると、左回り追跡処理が実行される。左回り追跡処理は右回り追跡処理とほぼ同じ処理が行われ、適当なベクトルから追跡をスタートし、連続する要素を辿っていく。左回り追跡処理では、交点又は開放端において、追跡方向から見て最も左側に存在するベクトルを連続して追跡する点において、右回り追跡処理と異なる。
【0055】
右回り追跡処理に加えて左回り追跡処理を行うことで、右回り追跡処理では抽出できなかった新たな閉図形を抽出することができる。図17に示す例に基づいて、ベクトルV10をスタートベクトルとして左回り追跡処理を行う場合を説明する。図17に示すように、ベクトルV10からベクトルの追跡が行われる場合、ベクトルV10の追跡方向は、ベクトルの方向と逆向きであるため、追跡リストにベクトルV10が逆向きに追跡されたことが記録される。交点C1では、ベクトルV11,ベクトルV12,ベクトルV13が接続されているが、左回り追跡処理では、追跡方向から見て最も左側に存在するベクトルV13を選択して追跡する。ベクトルV13の終端は開放端であるため、追跡はベクトルV13を逆向きに追跡し、次にベクトルV11(逆)を追跡する。同様に追跡をベクトルV20(逆),ベクトルV21(順),ベクトルV6(順),ベクトルV29(順),ベクトルV18(逆),ベクトルV32(逆),ベクトルV32(順),ベクトルV31(順),ベクトルV30(順),ベクトルV15(順),ベクトルV15(逆),ベクトルV16(順),ベクトルV16(逆),ベクトルV14(逆)と繰り返し、追跡をスタートしたベクトルV10(逆)に対して追跡方向が同じとなった時点で、当該追跡を終了する。
【0056】
端ベクトルの削除処理を行い、ベクトルV13,ベクトルV32を削除し、残ったベクトル(ベクトルV10,ベクトルV11,ベクトルV20,ベクトルV21,ベクトルV6,ベクトルV29,ベクトルV18,ベクトルV31,ベクトルV30,ベクトルV14)を構成要素として閉図形が抽出される。
【0057】
図18は、閉図形リストのデータ構成例である。閉図形リストは、構成ベクトル列として登録される。
【0058】
図19は、図4のベクトルデータにもとづいて、右回り追跡処理と左回り追跡処理が終了した結果、抽出される閉図形の例を示す図である。右回り追跡処理と左回り追跡処理が終了した時点で、図19に示すA〜Eまでの5つの閉図形が抽出されている。これらの抽出された閉図形を用いて新しい閉図形を構築する共有ベクトル処理を行う(#43)。
【0059】
(共有ベクトル処理)
共有ベクトル処理は、それぞれの閉図形の共有する辺(ベクトル)に注目し、辺を共有するベクトルを除いて新たな閉図形を構築する処理である。以下、図を用いながら具体的に説明する。
【0060】
共有ベクトル処理では、まず閉図形リストに格納されている全図形のうち全ての組み合わせについて下記の処理を行う。
【0061】
図20は共有ベクトル処理のサブフローチャートである。対象となる選択された2つの閉図形を構成するベクトルとして、双方に共通するベクトルを有しているか否かを判断する(#430)。共有するベクトルが存在しない場合は、当該組み合わせについての共有ベクトル処理を行わない。
【0062】
共有するベクトルが存在している場合は、当該共有ベクトルに着目し、閉図形リストに格納されている構成ベクトルの順逆が異なるように反転処理を行う。例えば、図21Aに示すように閉図形Aと閉図形Bが選択された場合、共にベクトルV12を共通にする。反転処理では、まず、閉図形Aと閉図形Bの共有ベクトルに着目し、それぞれの閉図形において、共通するベクトルを、閉図形リストの最終ベクトルと先頭ベクトルに移動させる配置変換を行う(#431)。
【0063】
配置変換が行われたそれぞれの閉図形について、共有ベクトルの追跡方向が同じか異なるかを判断し(#432)、追跡方向が同じである場合は、いずれか一方の閉図形について、全ての構成ベクトルの追跡方向を反転させる(#432)。図21Bは、反転処理が終了した閉図形Aの閉図形リストであり、図21Cは、反転処理が終了した閉図形Bの閉図形リストである。
【0064】
次いで、2つの閉図形リストの共有ベクトルが連続するように、2つの図形リストを合成し(#434)、新たな閉図形リストFを作成する。図22Aに合成処理によって新たに作成された閉図形リストの例を示す。合成処理によって新たに作成された閉図形リストについて、削除処理を行う(#435)。共有ベクトル処理における削除処理は、右回り追跡処理及び左回り追跡処理における削除処理において削除の対象となった連続配置されかつ追跡方向が互いに異なるベクトルに加え、すでに既登録の閉図形リストを構成するベクトルの配列が共通する場合はこれも削除する。
【0065】
図22Aの例では、新たに合成された閉図形リストFは、ベクトルV12が連続配置されかつ追跡方向が互いに異なるため、これを削除する。削除後の閉図形リストは図22Bのように構成される。
【0066】
図22Cに閉図形Aと閉図形Bとの共有ベクトル処理で新たに構築された閉図形の構成を示す。閉図形Aと閉図形Bとの共有ベクトル処理で新たに構築された閉図形Fは、図示のような多数のベクトルで構成される。また、反転処理を行うことによって接続ベクトルの追跡方向を同方向にすることができる。例えば、ベクトルV10とベクトルV11とでは、共に逆向きとなるように構成されており、ベクトルの接続の処理をスムーズに行うことができる。
【0067】
なお、共有ベクトル処理において対象となる2つの閉図形が、共有するベクトルを2以上有しているときは、いずれか1つのベクトルに注目して上記配置変換、反転、合成の各処理を行い、合成リストについて削除処理を行う。
【0068】
例えば、図23Aに示すように閉図形Bと閉図形Eの共有ベクトル処理では、図23Bにおいて破線で示すベクトルV11,ベクトルV18,ベクトルV20,ベクトルV31が共有する。この場合、いずれか1つのベクトル(例えば、ベクトルV31)を共有ベクトルとして上記処理(#431〜#435)を行う。
【0069】
以下、閉図形リストを示して具体的に説明する。図24は、閉図形Eと閉図形Bの閉図形リストである。図24においては、すでに配置変換(#431)及び反転処理(#433)は終了している状態を示している。図24では、ベクトルV31を共有ベクトルとし2つの閉図形リストをベクトル合成する(#434)。ベクトル合成された2つのリストは、次の通り削除処理(#435)がなされる。まず、ベクトルV31は、連続しかつ追跡方向が互いに異なるので、削除処理される。ベクトルV31が削除されると、ベクトルV18が連続しかつ追跡方向が互いに異なるのでベクトル18を削除する。
【0070】
次に、残った閉図形追跡リストの内で、複数閉図形の分割処理と同様の処理を行い、ベクトル端点で重複する交点(ここではC1・C5・C12)に注目し、そのいずれかで、追跡リストを分割する。
【0071】
ここで交点C1で分割したとすると、既登録の閉図形の構成ベクトルの削除後残った閉図形リストの内で、連続しかつ追跡方向が逆のベクトルを削除する。具体的には、ベクトルV11は、リストの先頭と最後に位置し、連続しておりかつ追跡方向が逆であるので、これを削除する。また、ベクトルV11を削除すると、ベクトルV20が連続かつ追跡方向が逆となるのでこれを削除する。以上のベクトルの削除が終了すると、図25に示す新たな閉図形リストが残ることとなる。生成された閉図形リストで、ベクトルV12・ベクトルV30・ベクトルV14・ベクトルV10の組み合わせは、閉図形Aと共通するため、この組み合わせを削除する。
【0072】
このように削除処理がなされた後の閉図形リストが既存の閉図形リストに登録されている閉図形であるかを確認し(#437)、共通でない場合は、新たな閉図形として登録する(#438)。
【0073】
以上の処理について、全ての閉図形の組み合わせについて共有ベクトル処理が終了すると、全ての可能性のある閉図形が抽出される。具体的には、図22Cに示した閉図形F(閉図形Aと閉図形Bの組み合わせ)、や閉図形G(閉図形Eと閉図形Bの組み合わせ)、さらには、閉図形Bと閉図形Cの組み合わせが抽出される。
【0074】
なお、たとえば、閉図形Gは閉図形Cと閉図形Dの組み合わせでも抽出可能であるが、上記のように既存の閉図形リストには重複して登録されないため、いずれかの組み合わせの共有ベクトル処理においてのみ登録されることとなる。
【0075】
さらに、共有ベクトル処理は、共有ベクトル処理によって新たに追加された閉図形についての組み合わせも処理を行う。例えば、閉図形Bと閉図形G(閉図形Cと閉図形Dとを組み合わせ図形)の供給ベクトル処理も行われ、新たな閉図形を抽出することができる。
【0076】
(ベクトル統合処理)
以上、共有ベクトル処理が終了し、閉図形が抽出された後、それぞれの閉図形リストにおいて、閉図形を構成するベクトルの接続フラグを確認し、接続フラグが互いに付されており、かつ追跡方向が共通のベクトルを統合処理し、新たなベクトルとしてベクトルデータに追加する。
【0077】
図26は、閉図形Eを構成する閉図形リストを構成するベクトルを示す図である。閉図形Eは、ベクトルV10とベクトルV11及びベクトルV30とベクトルV31が互いに接続フラグで付されており、かつ追跡方向が共通する。ベクトル統合処理では、これらを統合し、新たにベクトルV33とベクトルV34を作成するとともに、閉図形リストに構成されるベクトルを新たに統合されたベクトルに置き換える。
【0078】
なお、ベクトル統合処理で新たに作成されたベクトルは、当該対象となる閉図形においてのみ用いられるものである。たとえば、閉図形Bにおいては、依然としてベクトルV11もベクトルV31も有効に存在している。よって、閉図形Bと閉図形Eでは、共通する線分を有しているが、これら共通する線分を構成するベクトルは異なるベクトルとして認識される。
【0079】
ベクトル統合処理により、1つの線分中に存在する接続点を削除することができ、閉図形を相似形に拡大縮小する場合などに変形などの影響が及ぶことがない。
【0080】
以上説明したように、本実施形態にかかる閉図形抽出装置によれば、線図形を構成するベクトルを交点で分割し、分割された全てのベクトルを追跡スタートベクトルとして、回転方向が異なる複数回の追跡を行い、追跡により得られた閉図形に共通するベクトルを統合して他の閉図形を構築することができる。これにより、ほぼ漏れなく閉図形の抽出を行うことができる。また、閉図形の抽出のために分割したベクトルは、分割された接続するベクトルの情報を格納しておくことにより、閉図形を構成するベクトルの統合が容易であり、1つの線分中に存在する接続点を除去することができる。
【0081】
よって、正確に抽出された閉図形の相似形に拡大・縮小を行う場合に変形などの問題を起こすことがなく、例えば、服飾用の型紙の作成などにおいて好適に用いることができる。
【0082】
なお、本発明は上記実施形態に限定されるものではなく、その他種々の態様で実施可能である。
【図面の簡単な説明】
【0083】
【図1】本発明の一実施形態にかかる閉図形抽出装置の概略構成を示すブロック図である。
【図2】データ処理ユニットの機能ブロック図である。
【図3】データ処理ユニットが実行する処理のフローチャートである。
【図4】画像の入力処理により入力された画像データをベクトルデータとして抽出した状態を示す例である。
【図5】ベクトルデータ記憶部に格納されているベクトルデータのデータ構成例である。
【図6】交点抽出処理のフローチャートである。
【図7】交点抽出処理によって更新されたベクトルデータのデータ構造を示す図である。
【図8】交点抽出処理後のベクトル及び交点の状態を示す図である。
【図9】交点抽出処理によって抽出された交点リストのデータ構造を示す図である。
【図10】延長処理後のベクトル及び交点の状態を示す図である。
【図11】延長処理によって抽出された交点リストのデータ構造を示す図である。
【図12】閉図形抽出処理のサブフローチャートである。
【図13A】ベクトルV10をスタートとして右回り追跡を行う場合の処理を説明する図である。
【図13B】図13Aの追跡処理が行われる場合の追跡リストのデータ構成例を示す図である。
【図14A】追跡しているベクトルの端点から同じベクトルを逆向きに追跡する追跡例を示す図である。
【図14B】図14Aの追跡リストの構成を示す図である。
【図14C】削除処理を行った後の図14Bの追跡リストの構成を示す図である。
【図15A】複数のベクトルによって1つの開放端を構成するような場合のベクトル追跡の状態を説明する図である。
【図15B】図15Aの線図形においてベクトルV50を追跡スタートとして追跡処理がスタートした場合の追跡リストを示す図である。
【図15C】図15Aの線図形においてベクトルV51を追跡スタートとして追跡処理がスタートした場合の追跡リストを示す図である。
【図15D】一追跡リスト中に複数の閉図形が存在している場合の分割処理を説明する図である。
【図16】右回り追跡処理のサブフローチャートである。
【図17】ベクトルV10をスタートベクトルとして行われる左回り追跡処理を説明する図である。
【図18】閉図形リストのデータ構成例である。
【図19】図4のベクトルデータにもとづいて、右回り追跡処理と左回り追跡処理が終了した結果、抽出される閉図形の例を示す図である。
【図20】共有ベクトル処理のサブフローチャートである。
【図21A】閉図形Aと閉図形Bが選択された場合の共有ベクトル処理の説明図である。
【図21B】反転処理が終了した閉図形Aの閉図形リストである。
【図21C】反転処理が終了した閉図形Bの閉図形リストである。
【図22A】合成処理によって新たに作成された閉図形リストの例を示す図である。
【図22B】削除処理後の図22Aの閉図形リストの例を示す図である。
【図22C】閉図形Aと閉図形Bとの共有ベクトル処理で新たに構築された閉図形の構成図である。
【図23A】閉図形Bと閉図形Eが選択された場合の共有ベクトル処理の説明図である。
【図23B】23Aの共有ベクトル処理において共有するベクトルを示す図である。
【図24】閉図形Eと閉図形Bの閉図形リストである。
【図25】閉図形Bと閉図形Eの共有ベクトル処理において新たに作成された閉図形リストの構成を示す図である。
【図26】閉図形Eを構成する閉図形リストを構成するベクトルを示す図である。
【図27】従来の閉図形抽出装置で抽出不可能な閉図形の例を示す図である。
【図28】従来の閉図形抽出装置で抽出不可能な閉図形の例を示す図である。
【符号の説明】
【0084】
1 CPU
2 ROM
3 RAM
4 ベクトル演算用プロセッサ
5 画像入力ポート
6 端末制御部
7 システムバス
8 イメージスキャナ
9 端末機
10 データ処理ユニット
11 ベクトルデータ記憶部
12 交点抽出手段
13 交点リスト記憶部
14 閉図形リスト記憶部
15 閉図形抽出手段
16 交点検出手段
17 延長処理手段
18 第1追跡手段
19 第2追跡手段
20 共有ベクトル処理手段
21 ベクトル統合手段

【特許請求の範囲】
【請求項1】
複数のベクトルによって構成される線図形の中から、空間的に閉塞した領域としての閉図形を抽出する閉図形抽出装置であって、
前記線図形を構成する各ベクトルを格納するベクトルリストと、
前記ベクトルリストに格納されているベクトルについて、他のベクトルとの交点を抽出し、前記交点が存在する場合は当該ベクトルを分割して作成された新たなベクトルを互いの接続関係を対応づけて前記ベクトルリストに登録する、交点抽出手段と、
前記ベクトルリストに登録されたベクトルについて、各ベクトルを開始ベクトルとして、追跡方向を記録しながら連続的に追跡して追跡リストを作成し、追跡リストに含まれる連続するベクトルが同一で互いに異なる追跡方向を有している場合は当該ベクトルを除外しつつ閉図形を抽出する追跡手段と、
前記ベクトルリストに登録されたベクトルについて、各ベクトルを開始ベクトルとして
前記追跡手段で抽出された閉図形のうち、任意の2つの閉図形を構成する追跡リストに共通する任意の一つのベクトルが、連続かつ互いに異なる追跡方向を有するように前記追跡リストを再配置して、当該2つの追跡リストを合成する共有ベクトル合成手段と、
前記抽出図形を構成するベクトルが、交点抽出手段により分割されたベクトルを含む場合、前記ベクトルリストの接続関係に基づいて、統合したベクトルに置き換える、ベクトル統合手段とを備えることを特徴とする、閉図形抽出装置。
【請求項2】
前記追跡手段は、
右回りに追跡処理して追跡リストを作成する第1追跡手段と、
左回りに追跡処理して追跡リストを作成する第2追跡手段とを備える、ことを特徴とする、請求項1に記載の閉図形抽出装置。
【請求項3】
前記共有ベクトル合成手段は、前記追跡リスト変換手段により変換された前記共通ベクトルが連続するように前記追跡リストを合成することを特徴とする、請求項1又は2に記載の閉図形抽出装置。
【請求項4】
前記共有ベクトル合成手段は、合成された追跡リストのうち、連続する同一かつ互いに異なる追跡方向ベクトル及び前記抽出された他の閉図形と同配列のベクトルを削除することを特徴とする、請求項3に記載の閉図形抽出装置。

【図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

【図13A】
image rotate

【図13B】
image rotate

【図14A】
image rotate

【図14B】
image rotate

【図14C】
image rotate

【図15A】
image rotate

【図15B】
image rotate

【図15C】
image rotate

【図15D】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21A】
image rotate

【図21B】
image rotate

【図21C】
image rotate

【図22A】
image rotate

【図22B】
image rotate

【図22C】
image rotate

【図23A】
image rotate

【図23B】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate