[実施例1]
本実施形態の画像処理装置の構成例について、図2のブロック図を参照して説明する。画像処理装置は、汎用のコンピュータを用いて実現することが可能である。図2において、CPU7は装置全体を制御するプロセッサである。ROM6は変更を必要としないプログラムやパラメータを格納するメモリである。RAM5は外部装置等から供給されるプログラムやデータを一時記憶するメモリである。スキャナ1は、文書等を光電走査して電子的な画像データを得る。入出力I/O3はスキャナ1と画像処理装置とを接続するインタフェースである。画像メモリ2はスキャナ1で読み取られた画像データ等を保持する。外部記憶装置12は固定して設置されたハードディスクやメモリカード、光ディスク等の記憶媒体である。また、I/O13は外部記憶装置12と画像処理装置とを接続するインタフェースである。I/O15は、マウス等のポインティングデバイス10やキーボード9等の入力デバイスと画像処理装置を接続するインタフェースである。映像I/O14は、画像処理装置の保持するデータや供給されたデータを表示するためのディスプレイ8と画像処理装置とを接続するインタフェースである。通信I/F4は、インターネット等のネットワーク回線(不図示)に接続するためのインタフェースである。システムバス11は各ユニットを通信可能に接続するバスである。
以下、CPU7上で実行されるプログラムにより本発明を実現する処理手順を、図1のブロック図と図4のフローチャートを用いて説明する。
ステップS1000で処理を開始すると、処理対象となる画像領域を含む画像データを入力する。画像入力に関しては、スキャナ1にて読み取られた画像データを画像入出力I/O3を介して画像メモリ2に入力する。また、通信I/F4を介して、装置外部より前記処理対象となる画像領域を含む画像を入力してもよく、あるいは、外部記憶装置12に予め記憶される画像データをI/O13を介して読み込むものであってもよい。得られた入力画像は、画像メモリ2上に保持される。
スキャナなどの入力手段を用いた場合、入力画像にノイズが重畳され、代表色の特定が難しいことが起こりうる。この場合、色領域分割処理を行うことで、近い画素値を持つ画素が同じ色情報となるようにまとめるようにするのが望ましい。そこでステップS1000ではCPU7が入力画像に対して色領域分割処理を施すことで、上記問題を解消することができる。ここでの色領域分割処理については、本発明が適用可能であれば、いずれの方法を用いてもよい。例えば特許文献4で開示されている手法では、入力画像中の画素から色情報を元にクラスタを構成し、類似するクラスタやノイズと思われるクラスタを統合することでスキャンノイズを除去する。本実施形態においては、このような方法を適用することで、スキャン画像入力等で生じるノイズ除去している。以上の処理は図1における画像入力手段101を実現している。
次にステップS1000で読み取った画像データに対して、ステップS1100でラベリング処理(領域番号(ラベル)付与処理)を行うことにより、画像データ中の同色と判断される領域に同一の領域番号を付与して、色領域を抽出する。ラベリング処理は、8連結接続で考える場合、上下左右斜めの8方向のいずれかで隣接(連結)する同じ画素値を有する画素集合に同一の番号を付与する処理である。ここでは各色領域を後処理で識別できるようにするための番号(以下、領域番号)を、各色領域を構成する各画素に付与する。ラベリング処理(領域番号(ラベル)付与処理)された画像を、ラベル画像と呼ぶこととする。ラベリング処理では後で行う輪郭抽出処理と同じ連結状態となるラベリング処理を行う必要がある。本実施形態では、8連結接続で輪郭を抽出する例を用いて説明するので、ラベリング処理も8連結接続として処理し、上下左右斜め方向のいずれかで隣接する同じ画素値を有する画素集合に同一の番号を付与することになる。なお、ステップS1100の処理は図1における領域番号付与手段102を実現している。
ステップS1200では、ステップ1100で得られたラベル画像を入力画像として、図5(a)に示すような3×3の画素マトリクス状ウィンドウの中心(同図中「x」で表示)を着目画素として、図5(b)に示すように入力画像の左上からラスター走査を行なう。そして、各ラベル領域毎にそのラベル領域の輪郭を構成する水平方向の線素と垂直方向の線素の切り替わる位置を、それぞれの線素の始点(以降、単に輪郭点とも称する)として抽出する処理を行う。加えて、それら輪郭点が色交点であるか否かの判定する色交点判定処理を行う。それら線素上に存在する可能性のある色交点の存在判定の結果、色交点が存在する場合には、その位置に色交点である輪郭点の抽出処理を行う。尚、抽出される垂直・水平方向の線素を、それぞれ垂直ベクトル、水平ベクトルと呼ぶ。また、線素上に存在が判定された色交点も、当該線素が水平の場合には新たな水平ベクトルの始点となり、同様に当該線素が垂直な場合には垂直ベクトルの始点となる。輪郭点抽出処理、輪郭点の色交点判定、線素上での色交点判定と色交点である位置での輪郭点抽出処理を総称して、色交点判定・輪郭点抽出処理と呼ぶ。
本実施形態では、水平ベクトルと垂直ベクトルは進行方向に対して、着目画素の属するラベル領域が右側に来るよう抽出される。この結果、抽出される外輪郭(輪郭抽出対象のラベル領域を外側から取り囲む輪郭)は時計回りとなる。また、内輪郭(輪郭抽出対象のラベル領域領域に周囲を取り囲まれる孔の境界に沿って、当該ラベル領域が右側に来るように抽出される内部の輪郭)は反時計回りとなる。座標系については、特許文献1での説明と同様に、本実施例では、入力画像の各画素の座標値を、主走査方向をx軸(右向きが正方向)、副走査方向をy軸(下向きが正方向)とし、それぞれ整数値で表現するものとして話を進める。また、抽出される線素の始点や色交点の座標値は、画素と画素の中間の位置に抽出されるので、これらの座標値を整数値として扱うため、当該座標値を2倍にした値を対象座標として抽出する。即ち、m画素×n画素の画像は、2m×2nの正の偶数(整数)の座標表現で表し、抽出される線素の始点や色交点の座標値が、整数値(奇数)となるようにして説明する。以降、第j番目のラスタの第i番目の画素位置を(2i,2j)(i,jは正の整数で、i≦m,j≦n)で表現する。
抽出した垂直ベクトルの始点や水平ベクトルの始点の情報には、それぞれに流入元となるベクトルの始点と、流出先となるベクトルの始点の情報への接続情報を付して記録する。以降、流入元となるベクトルの始点を単に流入元、流出先となるベクトル始点を流出先と称し、流入元となるベクトルを流出ベクトル、流出先となるベクトルを流出先と称する。着目しているベクトルの始点は、流入ベクトルの終点でもあり、かつ、流出ベクトルの始点は、着目しているベクトルの終点でもある。この様子を図6に一例として示した。同図は、注目ベクトルが水平ベクトルである場合を表記していて、61が注目ベクトル、62が注目ベクトル61の始点であり、かつ、流入ベクトル63の終点でもある。64が流入ベクトル63の始点(流入元)、65が流出ベクトル、66が流出ベクトル65の始点(流出先)であり、かつ、注目ベクトル61の終点でもある。ここで、垂直ベクトルの始点を白抜き三角印、水平ベクトルの始点を白抜き丸印で表記した。
これらのベクトルはラベルごとに1つのベクトル情報テーブルに記録して管理する。例として、図7に、注目するラベルが一点(1画素)のみで構成されるラベルである場合の前記ベクトル情報テーブルによる記録を示した。図7(a)は、一点のみで構成されるラベルを中心にその周囲8画素を含めて3×3のラベル画像を表現しており、周囲8画素は中心画素のラベルとは異なるラベルをもつ画素である。同ラベルは、水平ベクトル(r)、垂直ベクトル(r+2)、水平ベクトル(r+3)、垂直ベクトル(r+1)の4本の線素で囲まれている。同図(b)は、この様子を記録したベクトル情報テーブルである。図7(b)のテーブルにおいて、各ベクトルは横一行で1本の線素を表現している。ベクトルカウンタ欄は、抽出された順にカウントアップされながら定まるベクトル番号(ベクトルインデックスやテーブルインデックスとも称すことがある)である。ベクトル番号は、基本的に、輪郭点、もしくは、色交点として抽出された順に昇順に定められる番号である。図7(a)の状態の説明におけるr,r+1,r+2,r+3も、抽出された順に定められるベクトル番号ではあるが、このベクトル番号をもって、各ベクトルを特定するベクトルの名称としても用いるものとする。なお、説明の便宜上、ベクトル番号の初期値としてrを用いたが、初期値が0から始まるものとすると、これらベクトル番号は、0、1、2、3となる。始点欄は、X座標欄とY座標欄から構成され、それぞれ、各ベクトルの始点のX座標値とY座標値を格納する。図7(b)では、中心の画素の座標値が(2i,2j)であったとして、各ベクトルの始点の座標値を記載してある。流入ベクトル欄は、当該ベクトル番号のベクトルの流入元となるベクトルのベクトル番号が格納される。同様に、流出ベクトル欄は、流出先となるベクトルのベクトル番号が格納される。色交点フラグ欄は、同ベクトル番号のベクトルが色交点である場合には“TRUE”が、色交点ではない場合には“FALSE”がはいるフラグ領域である。未使用フラグ欄は、ステップS1300の輪郭情報再構成処理で参照するフラグ領域であり、これに関しては、追ってさらに説明を加える。
3×3のウィンドウでは、図8に示したように、3×3のウィンドウの中心である着目画素と着目画素の上下左右の4近傍画素に着目し、着目画素の周辺での輪郭ベクトルの始点や色交点の抽出、及び、それらの局所的な接続関係を求める。まず、着目画素P0が輪郭抽出対象のラベル領域の画素である場合にはR0=1とした上で、着目画素P0と、図7に示すP1、P2、P3、P4の4近傍の各画素とを比較し、着目画素の所属ラベルと所属ラベルが一致した画素の位置Pk(k=1,2,3,4)の値Rkを1とし、一致しない画素位置ではRkを0とする。そして、これらR0、R1、R2、R3に係数をかけて定義する以下の式によりRを求める。
R=R0+1×R1+2×R2+4×R3+8×R4
尚、着目画素P0が輪郭抽出対象のラベル領域の画素である場合には、4近傍画素の状態にかかわらず、R=0とする。
上記Rは、着目画素と着目画素の上下左右の4近傍画素の所属ラベルの状態によって、0〜16の値を持つのに対応させて、それぞれの場合をケース0からケース16で区別する。各ケースに応じて所定の色交点判定・輪郭点抽出処理を行う。ケース0では、色交点判定・輪郭点抽出は全くなされない。
ケース1〜ケース16の場合の色交点判定・輪郭点抽出処理を図9に示した。図9においては、中心画素のラベルに対して、その左右上下の4画素がそれぞれ同じラベルか否かで表現してあり、同4画素のうち、中心画素のラベルと同じラベルの画素は中心画素と同じ塗りつぶしパターンで表記し、そうでないものは塗りつぶしていない。尚、図9における中心画素の左上、左下、右上、右下の位置にある画素は、ケース1〜16のいずれに属するかを分類する上では関わりをもたない非注目画素であることから、図9ではどんなラベルを持つ画素かによらず塗りつぶしのない状態で表記してある。図9(a)から図9(p)までの16種類の3×3のウィンドウの状態にあわせて、それぞれ、aからpまでのアルファベット順に、ケース1からケース16の処理内容をケース番号の昇順に対応させて表記してある。図9において、白抜き丸印は、色交点であるか否かの判断をすることなしに、色交点ではない水平ベクトルの始点の抽出処理をする輪郭点候補位置である。白抜き三角印は、色交点であるか否かの判断をすることなしに、色交点ではない垂直ベクトルの始点の抽出処理をする輪郭点候補位置である。横向き矢印を伴った黒塗り丸印は、色交点であるか否かの判断を伴う水平ベクトルの始点の抽出処理をする輪郭点候補位置である。縦向き矢印を伴った黒塗り三角印は、色交点であるか否かの判断を伴う垂直ベクトルの始点の抽出処理をする輪郭点候補位置である。矢印の伴わない黒塗り丸印は、色交点か否かを判定し、色交点である場合には、色交点である水平ベクトルの始点を抽出する候補位置である。矢印の伴わない黒塗り三角印は、色交点であるか否かを判定し、色交点である場合には、色交点である垂直ベクトルの始点を抽出する候補位置である。実線矢印は、この矢印の位置にベクトルが抽出される場合には、流出先となる抽出済みのベクトルが存在するものを意味している。破線矢印は、この矢印の位置にベクトルが抽出された場合、流出先となるべきベクトルが、まだ抽出されていない状態、即ち、流出先が未定の状態で抽出されることになるベクトルであることを意味している。尚、以降、水平、垂直共に、ベクトルの始点の抽出のことを、単に、ベクトルの抽出と表現することがある。
図10を用いて、色交点であるか否かの判断を伴わない輪郭点の抽出を説明する。図10は、ケース16での処理内容を示す図であり、中心画素のラベルと、その上下左右の4画素のラベルは全て同じ状態にある。図10(a)は、図10内で改めてケース16のパターンを示すために、図9(p)を再掲したものである。
まず、図10(b)に示すように、中心画素(座標値が(2i,2j)であるとする)の左上に垂直ベクトルの始点が存在するか否かを判定する。即ち、中心画素の左上の画素(座標値は(2i−2,2j−2))が、中心画素のラベルと同じラベルであるか否かを判定し、異なる場合には、図10(c)に示すように中心画素の左上の位置(座標値は(2i−1,2j−1))に垂直ベクトルを抽出する。同じ場合には、図10(d)に示すように、同位置にベクトルは抽出されない。
次に、図10(e)に示すように、中心画素の左下に水平ベクトルの始点が存在するか否かを判定する。即ち、中心画素の左下の画素(座標値は(2i−2,2j+2))が、中心画素のラベルと同じラベルであるか否かを判定し、異なる場合には、図10(f)に示すように中心画素の左下の位置(座標値は(2i−1,2j+1))に水平ベクトルを抽出する。同じ場合には、同図(g)に示すように、同位置にベクトルは抽出しない。
次に、図10(h)に示すように、中心画素の右上に水平ベクトルの始点が存在するか否かを判定する。即ち、中心画素の右上の画素(座標値は(2i+2,2j−2))が、中心画素のラベルと同じラベルであるか否かを判定し、異なる場合には、図10(i)に示すように中心画素の右上の位置(座標値は(2i+1,2j−1))に水平ベクトルを抽出する。同じ場合には、図10(j)に示すように、同位置にベクトルは抽出しない。
さらに、図10(k)に示すように、中心画素の右下に垂直ベクトルの始点が存在するか否かを判定する。即ち、中心画素の右下の画素(座標値は(2i+2,2j+2))が、中心画素のラベルと同じラベルであるか否かを判定し、異なる場合には、図10(l)に示すように中心画素の右下の位置(座標値は(2i+1,2j+1))に垂直ベクトルを抽出する。同じ場合には、図10(m)に示すように、同位置にベクトルは抽出しない。
以上、図10を用いて、ケース16での処理内容と、色交点であるか否かの判断を伴わない輪郭点の抽出について説明した。
ここで、ベクトルを抽出した際のベクトル情報テーブル上でのデータの扱いについて、さらに説明を加える。注目するラベル領域(中心画素の属するラベル領域)に対する(図7(b)を用いて、上述した形式の)ベクトル情報テーブルにおいて、それまで既に見つけられていたベクトル情報の次の行に相当するテーブル領域にベクトル情報を追記する。
まず、該当行のベクトルカウンタ欄に、抽出された順に応じたベクトル番号を書き込む。
次に、抽出されたベクトルの座標値(X座標値、Y座標値)を、始点のX座標値とY座標値の欄に書き込む。
流入ベクトル欄と流出ベクトル欄については、図10(l)のケースのように、抽出したベクトルの流出先や流入元が、まだ走査されていない領域(以降、未走査領域とも称する)方向にある場合と、図10(c)のように、既に走査し終えた領域(以降、既走査領域とも称する)方向にある場合とで扱いが異なる。未走査領域方向に流入元や流出先がある場合には、前述のベクトル情報テーブルとは別に、流入ベクトルが未定のベクトルの情報を管理するテーブルと流出ベクトルが未定のベクトル情報を管理するテーブルとをそれぞれ別途用いて処理する。垂直ベクトル用の流入ベクトル未定のベクトルを管理するテーブルを、流入ベクトル未定垂直ベクトルテーブルと称する。また、垂直ベクトル用の流出ベクトル未定のベクトルを管理するテーブルを、流出ベクトル未定垂直ベクトルテーブルと称する。水平ベクトル用にも同様に、流入ベクトル未定水平ベクトルテーブルと流出ベクトル未定水平ベクトルと称するテーブルをそれぞれ用いる。それぞれのテーブルには、該当するベクトル番号を検出した順に格納していくものとする。図10(l)のケースの場合には、ベクトル情報テーブルの流入ベクトル欄には、その時点では何も記録せず、流入ベクトル未定垂直ベクトルテーブルに、ベクトル情報ベクトル上でのベクトル番号を追記して同テーブルを更新する。同様に、ベクトル情報テーブルの流出ベクトル欄には、その時点では何も記録せず、流出ベクトル未定垂直ベクトルテーブルに、ベクトル情報ベクトル上でのベクトル番号を追記して同テーブルを更新する。尚、図10(i)で示される水平ベクトルを抽出する場合の流出ベクトル欄も同様に、その時点では何も記入せず、流出ベクトル未定水平ベクトルにそのベクトル番号を追記して同テーブルを更新する。図10(f)で示される水平ベクトルが抽出される際は、その時点では流入ベクトル欄に何も記入せず、流入ベクトル未定水平ベクトルテーブルにそのベクトル番号を記入して同テーブルを更新する。
一方、上述の図10(c)の垂直ベクトルの様に、流入元や流出先が既走査領域方向にある場合は、上記の流入ベクトルが未定のベクトルの情報を管理するテーブルや流出ベクトルが未定のベクトル情報を管理するテーブル参照して、その流入元や流出先を定める。
流入元が既走査領域方向にある垂直ベクトルの流入元は、流出先が未定の水平ベクトルである。よって、このような垂直ベクトルの流入元を定める場合には、流出ベクトル未定水平ベクトルテーブルを参照する。このテーブルに格納されているベクトル番号をもつベクトルの中で、当該垂直ベクトルの始点と同じY座標値を持つベクトルを該当するラベルのベクトル情報テーブルから探し出す。ベクトル情報テーブルの当該垂直ベクトルの流入ベクトル欄に、得られた水平ベクトルのベクトル番号を記入し、それまで未定であったその水平ベクトルの流出ベクトル欄に、当該垂直ベクトルのベクトル番号を記載する。また、流出ベクトル未定水平ベクトルテーブルからその水平ベクトルのベクトル番号を削除して同テーブルを更新する。
次に、当該垂直ベクトルの様に、流出先が既走査方向にある垂直ベクトルの流出先を定める場合を説明する。流出先が既走査領域方向にある垂直ベクトルの流出先は、流入元が未定の水平ベクトルか、または、後述する色交点位置に抽出された垂直ベクトルの中で流入元が未定のものである。よって、このような垂直ベクトルの流出先を定める場合には、流入ベクトル未定水平ベクトルテーブルと流入ベクトル未定垂直ベクトルテーブルの両方を参照する。これらテーブルに格納されているベクトル番号をもつベクトルの中で、当該垂直ベクトルの始点と同じX座標値を持つベクトルを該当するラベルのベクトル情報テーブルから探し出す。複数見つかった場合には、そのY座標値が当該垂直ベクトルのY座標値よりも小さいものの中で最も大きなY座標値をもつもの(即ち、既走査領域の中で最も近くにある流入元未定の輪郭点)を選ぶ。ベクトル情報テーブルの当該垂直ベクトルの流出ベクトル欄に、得られた水平、もしくは、垂直ベクトルのベクトル番号を記入し、それまで未定であったそのベクトルの流入ベクトル欄に、当該垂直ベクトルのベクトル番号を記載する。また、得られたベクトルの番号が記載されていた、流入ベクトル未定水平ベクトルテーブル、もしくは、流入ベクトル未定垂直ベクトルテーブルからそのベクトルのベクトル番号を削除して同テーブルを更新する。
尚、図10(i)で示される水平ベクトルの様に、流入元が既走査領域方向にある水平ベクトルの流入元は、流出先が未定の垂直ベクトルである。よって、このような水平ベクトルの流入元を定める場合には、流出ベクトル未定垂直ベクトルテーブルを参照する。このテーブルに格納されているベクトル番号をもつベクトルの中で、当該水平ベクトルの始点と同じX座標値を持つベクトルを該当するラベルのベクトル情報テーブルから探し出す。ベクトル情報テーブルの当該水平ベクトルの流入ベクトル欄に、得られた垂直ベクトルのベクトル番号を記入し、それまで未定であったその垂直ベクトルの流出ベクトル欄に、当該水平ベクトルのベクトル番号を記載する。また、流出ベクトル未定垂直ベクトルテーブルからその垂直ベクトルのベクトル番号を削除して同テーブルを更新する。
次に、図10(f)で示される水平ベクトルの様に、流出先が既走査方向にある水平ベクトルの流出先を定める場合を説明する。流出先が既走査領域方向にある水平ベクトルの流出先は、流入元が未定の垂直ベクトルか、または、後述する色交点位置に抽出された水平ベクトルの中で流入元が未定のものである。よって、このような水平ベクトルの流出先を定める場合には、流入ベクトル未定水平ベクトルテーブルと流入ベクトル未定垂直ベクトルテーブルの両方を参照する。これらテーブルに格納されているベクトル番号をもつベクトルの中で、当該水平ベクトルの始点と同じY座標値を持つベクトルを該当するラベルのベクトル情報テーブルから探し出す。万が一、複数見つかる場合には、そのX座標値が当該水平ベクトルのX座標値よりも小さいものの中で最も大きなX座標値をもつもの(即ち、既走査領域の中で最も近くにある流入元未定の輪郭点)を選ぶ。ベクトル情報テーブルの当該水平ベクトルの流出ベクトル欄に、得られた水平、もしくは、垂直ベクトルのベクトル番号を記入し、それまで未定であったそのベクトルの流入ベクトル欄に、当該水平ベクトルのベクトル番号を記載する。また、得られたベクトルの番号が記載されていた、流入ベクトル未定水平ベクトルテーブル、もしくは、流入ベクトル未定垂直ベクトルテーブルからそのベクトルのベクトル番号を削除して同テーブルを更新する。
色交点フラグ欄には、追記中のベクトルが色交点である場合には、TRUEを記録し、色交点ではない場合にFALSEを記録する。ケース16では、色交点となる輪郭点はそもそも発生しないパターンであり、色交点であるか否かの判断は不要であった。このため、上述の図10(c)、図10(f)、図10(i)、図10(l)で抽出される輪郭点は、色交点ではないため、いずれの場合も色交点フラグ欄はFALSEを記録する。
未使用フラグ欄は、ステップS1200では、TRUEを記録する。同欄は、ステップS1300の輪郭情報再構成処理で参照するフラグ領域であり、追ってさらに説明を加える。
次に、図11と図12を用いて、色交点であるかの判断(色交点判定)を伴う輪郭点の抽出とその色交点判定を説明する。
図11は、ケース1での処理内容を示す図であり、中心画素のラベルと、その上下左右の4画素のラベルは全て異なる状態にある。図11(a)は、図11内で改めてケース1のパターンを示すために、図9(a)を再掲したものである。
まず、図11(b)に示すように、中心画素(座標値が(2i,2j)であるとする)の左上の位置(座標値は(2i−1,2j−1))に水平ベクトルの始点を抽出する。この水平ベクトルは、中心画素の上の画素が中心画素とはことなるラベルをもつので、流出先は未定のベクトルであるが、中心画素とその左上、上、左の4画素でなる2×2の領域の各画素のラベルの状態により、流入元が未定か確定するかは異なるものとなる。また、中心画素とその左上、上、左の4画素でなる2×2の領域の各画素のラベルの状態により、中心画素の左上の位置の水平ベクトルが、色交点となるか否かも異なる。図11(c)と図11(d)はともに、中心画素とその左上の画素のラベルが異なる場合をあらわしている。これらの場合には、当該水平ベクトルの流入ベクトルも未走査領域にあることになるので、流入ベクトルも流出ベクトルも未定の水平ベクトルとなる。一方、図11(e)と図11(f)はともに、中心画素とその左上の画素のラベルが同じ場合をあらわしている。これらの場合には、当該水平ベクトルの流入ベクトルは既走査領域に存在することになるので、流入ベクトルは確定していて、流出ベクトルは未走の水平ベクトルとなる。尚、当該水平ベクトルが、流入ベクトルも流出ベクトルも未定の水平ベクトルであっても、色交点である場合とない場合とがあり得る。この様子を図11(c)と図11(d)に示した。図11(c)は、当該水平ベクトルの始点が色交点ではない場合であり、白抜き丸印で表わした。図11(d)は、当該水平ベクトルの始点が色交点の場合であり、右上がり斜線で塗りつぶした丸印で表わした。また、該水平ベクトルが、流入ベクトルは確定していて、流出ベクトルは未走の水平ベクトルの場合も同様に、色交点である場合とない場合とがあり得る。この様子を図11(e)と図11(f)に示した。図11(e)は、当該水平ベクトルの始点が色交点ではない場合であり、白抜き丸印で表わした。図11(f)は、当該水平ベクトルの始点が色交点の場合であり、右上がり斜線で塗りつぶした丸印で表わした。
この位置(中心画素の左上の位置)の水平ベクトルの始点の色交点判定について、図12(a)〜(f)を用いて説明する。図12(a)自体は図9(e)、即ち、ケース5の状態をもとに表記したものであるが、中心画素の左上の位置の水平ベクトルの始点の色交点判定という意味では、図11(b)で表わされる、ケース1の中の同位置と同じ処理を行うものである。さて、図12(a)に示す様に、中心画素とその左上、上、左の4画素でなる2×2の領域の各画素のラベルの状態により、色交点判定が行われる。図12(b)〜(d)は、いずれも中心画素とその左上の画素のラベルが異なる場合を示している。これらの場合には、2×2の中の残り2画素(中心画素の上の画素と左の画素)のラベルも調べる。
中心画素以外の3画素が全て同一のラベルである場合(図12(b))は、2色の領域でしか接していない状態なので、色交点ではない輪郭点と判断する。
また、中心画素の上と左が同一のラベルで、左上の画素はこれらとは異なるラベルの場合(不図示)には、上と左の画素が8連結状態にあり、中心画素と左上の画素は非連結の状態にある。この場合は、当該水平ベクトルの始点位置では2色の領域でしか接していない状態にあるものとみなし、色交点ではない輪郭点とする。
また、図12(c)に示す様に、中心画素の左上と左の画素が同ラベルで、残りの1画素(上の画素)が中心画素とも他の2画素とも異なるラベルの場合には、3色の領域で接しているので色交点である輪郭点とする。
また、中心画素の左上と上の画素が同ラベルで、残りの1画素(左の画素)が注目画素とも他の2画素とも異なるラベルの場合(不図示)にも、3色の領域で接しているので色交点である輪郭点とする。即ち、注目画素以外の3画素のうち、縦または横につながる2画素が同ラベルで、残りの1画素が注目画素とも他の2画素とも異なるラベルの場合には、色交点である輪郭点とする。
また、図12(d)に示す様に、中心画素以外の3画素がいずれも互いに異なるラベルである場合には、4色の領域が接する交点となっているので、色交点とする。
図12(e)と(f)は、中心画素と左上の画素のラベルが同じ場合、即ち、3×3の9画素領域中における2×2の4画素領域の中で、中心画素とその対角画素のラベルが同じ場合を示している。残りの2画素が、中心画素のラベルとは異なるラベルながら、同ラベルとなっている場合(図12(e))は、どちらの対角画素の組も8連結状態にあり、この場合にはどちらの連結状態も同等に扱う意味で、色交点とする。一方、図12(f)に示す様に、残りの2画素が互いに異なるラベルである場合、先に述べた不図示の場合同様、中心画素と左上の画素が8連結状態にあり、上と左の画素は非連結の状態にある。当該水平ベクトルの始点位置では2色の領域でしか接していない状態にあるものとみなし、色交点ではない輪郭点とする。
さて、ここまで図11(b)〜(f)と図12(a)〜(f)を用いて、中心画素の左上の位置における、色交点であるかの判断(色交点判定)を伴う輪郭点の抽出とその色交点判定を説明した。一方、中心画素の左下の位置における色交点判定を伴う輪郭点の抽出と色交点判定も、流入元と流出先の扱いを含めて、抽出されるベクトルが垂直ベクトルの始点になる点とその位置が中心画素の左下であることを考慮する必要はあるものの、同様の処理内容となる。図11(g)〜(k)と図12(g)〜(l)が中心画素の左下の位置における色交点判定を伴う輪郭点の抽出と色交点判定を説明する図ではあるが、不図示の場合も含めて容易に適用可能であるため、これらを用いた詳述は省略する。以下、同様に、中心画素の右上の位置における色交点判定を伴う輪郭点の抽出と色交点判定は、図11(l)〜(p)と図12(m)〜(r)が中心画素の右上の位置における色交点判定を伴う輪郭点の抽出と色交点判定を説明する図である。抽出されるベクトルが垂直ベクトルの始点で、位置が中心画素の右上であることを考慮する必要はあるものの、不図示の場合も含めて容易に適用可能であるため、これらを用いた詳述は省略する。中心画素の右下の位置における色交点判定を伴う輪郭点の抽出と色交点判定は、図11(q)〜(u)と図12(s)〜(x)が中心画素の右下の位置における色交点判定を伴う輪郭点の抽出と色交点判定を説明する図である。抽出されるベクトルが水平ベクトルの始点で、位置が中心画素の右下であることを考慮する必要はあるものの、不図示の場合も含めて容易に適用可能であるため、これらを用いた詳述は省略する。
次に、図9の中の表記にあった、矢印を伴わない黒塗り丸印の位置での処理と、矢印を伴わない黒塗り三角印の位置での処理とを、図13を用いて説明する。矢印の伴わない黒塗り丸印の位置での処理とは、色交点か否かを判定し、色交点である場合には、色交点である水平ベクトルの始点を抽出する処理である。矢印の伴わない黒塗り三角印の位置での処理とは、色交点であるか否かを判定し、色交点である場合には、色交点である垂直ベクトルの始点を抽出する処理である。
図13(a)と図13(e)は、ケース11(図9(k))での処理に対応した図である。
図13(a)は、中心画素とその左の画素が同ラベルで、中心画素の上の画素は中心画素と異なるラベルの場合に発生する処理を説明している。中心画素(座標値が(2i,2j)であるとする)の左上の位置(座標値は(2i−1,2j−1))が色交点であるか否かを判定し、色交点であるときのみ、水平ベクトルの始点を抽出する。中心画素の左上を中心とした2×2の4画素領域の画素パターンが、図13(d)に示す様に、中心画素とその左の画素以外の2画素が互いに異なるラベルで、かつ、中心画素の対角画素である左上の画素も中心画素とは異なるラベルである場合にのみ、左上の位置(座標値は(2i−1,2j−1))に色交点である水平ベクトルの始点を抽出する。この水平ベクトルは、流入元は既走査領域にあるので確定され、流出先は未走査領域にあるので未定となる。なお、図13(b)は、中心画素の対角位置が中心画素のラベルとは異なるラベルではあるものの、中心画素の上の画素と同じラベルである場合を示している。また、図13(c)は、中心画素とその左の画素以外の2画素が互いに異なるラベルではあるものの、中心画素の対角位置の画素が中心画素と同じラベルである場合を示している。図13(b)や図13(c)の場合には、中心画素の左上の位置は色交点ではなく、輪郭点は抽出されない。
図13(e)は、中心画素とその右の画素が同ラベルで、中心画素の下の画素は中心画素と異なるラベルの場合に発生する処理を説明している。中心画素(座標値が(2i,2j)であるとする)の右下の位置(座標値は(2i+1,2j+1))が色交点であるか否かを判定し、色交点であるときのみ、水平ベクトルの始点を抽出する。中心画素の右下を中心とした2×2の4画素領域の画素パターンが、図13(h)に示す様に、中心画素とその右の画素以外の2画素が互いに異なるラベルで、かつ、中心画素の対角画素である右下の画素も中心画素とは異なるラベルである場合にのみ、右下の位置(座標値は(2i+1,2j+1))に色交点である水平ベクトルの始点を抽出する。この水平ベクトルは、流入元は未走査領域にあるので未定となり、流出先は既走査領域にあるので確定される。なお、図13(f)は、中心画素の対角位置が中心画素のラベルとは異なるラベルではあるものの、中心画素の下の画素と同じラベルである場合を示している。図13(g)は、中心画素とその右の画素以外の2画素が互いに異なるラベルではあるものの、中心画素の対角位置の画素が中心画素と同じラベルである場合を示している。図13(f)や図13(g)の場合には、中心画素の右下の位置は色交点ではなく、輪郭点は抽出されない。
図13(i)と図13(m)は、ケース6(図9(f))での処理に対応した図である。
図13(i)は、中心画素とその下の画素が同ラベルで、中心画素の左の画素は中心画素と異なるラベルの場合に発生する処理を説明している。中心画素(座標値が(2i,2j)であるとする)の左下の位置(座標値は(2i−1,2j+1))が色交点であるか否かを判定し、色交点であるときのみ、垂直ベクトルの始点を抽出する。中心画素の左下を中心とした2×2の4画素領域の画素パターンが、図13(l)に示す様に、中心画素とその下の画素以外の2画素が互いに異なるラベルで、かつ、中心画素の対角画素である左下の画素も中心画素とは異なるラベルである場合にのみ、左下の位置(座標値は(2i−1,2j+1))に色交点である垂直ベクトルの始点を抽出する。この垂直ベクトルは、流入元は未走査領域にあるので未定となり、流出先は既走査領域にあるので確定される。なお、図13(j)は、中心画素の対角位置が中心画素のラベルとは異なるラベルではあるものの、中心画素の左の画素と同じラベルである場合を示している。また、図13(k)は、中心画素とその下の画素以外の2画素が互いに異なるラベルではあるものの、中心画素の対角位置の画素が中心画素と同じラベルである場合を示している。図13(j)や図13(k)の場合には、中心画素の左下の位置は色交点ではなく、輪郭点は抽出されない。
図13(m)は、中心画素とその上の画素が同ラベルで、中心画素の右の画素は中心画素と異なるラベルの場合に発生する処理を説明している。中心画素(座標値が(2i,2j)であるとする)の右上の位置(座標値は(2i+1,2j−1))が色交点であるか否かを判定し、色交点であるときのみ、垂直ベクトルの始点を抽出する。中心画素の右上を中心とした2×2の4画素領域の画素パターンが、図13(p)に示す様に、中心画素とその上の画素以外の2画素が互いに異なるラベルで、かつ、中心画素の対角画素である右上の画素も中心画素とは異なるラベルである場合にのみ、右上の位置(座標値は(2i+1,2j−1))に色交点である垂直ベクトルの始点を抽出する。この垂直ベクトルは、流入元は既走査領域にあるので確定され、流出先は未走査領域にあるので未定となる。尚、図13(n)は、中心画素の対角位置が中心画素のラベルとは異なるラベルではあるものの、中心画素の右の画素と同じラベルである場合を示している。図13(o)は、中心画素とその上の画素以外の2画素が互いに異なるラベルではあるものの、中心画素の対角位置の画素が中心画素と同じラベルである場合を示している。図13(n)や図13(o)の場合には、中心画素の右上の位置は色交点ではなく、輪郭点は抽出されない。
先にも述べたが、色交点と判断された輪郭点に対応するベクトル情報テーブル中の色交点フラグ欄には、TRUEを記録し、色交点ではない場合にFALSEを記録する。
尚、上述の図10は図9(p)に示したケース16の処理、また、上述の図11は図9(a)に示したケース1の処理、図13(a)と図13(e)は図9(k)に示したケース11の処理、図13(i)と図13(m)は図9(f)に示したケース6の処理に対応している。それ以外のケースは、これまで説明した、中心画素の左上、左下、右上、右下での、色交点であるか否かの判断を伴わない輪郭点の抽出処理、色交点判定を伴う輪郭点の抽出処理、色交点判定をして色交点の場合のみ輪郭点を抽出する処理の組合せで構成される。例えば、図9(b)に示したケース2の場合は、中心画素の左下での色交点判定を伴う輪郭点の抽出処理と、同右上での色交点判定をして色交点の場合のみ輪郭点を抽出する処理、同右下での色交点判定を伴う輪郭点の抽出処理で構成される。また、図9(d)に示したケース4では、中心画素の左下での色交点判定を伴う輪郭点の抽出処理と、同右上での色交点であるか否かの判断を伴わない輪郭点の抽出処理、同右下での色交点判定をして色交点の場合のみ輪郭点を抽出する処理で構成される。といった具合である。これ以外のケースに関しても、同様に処理を行えば構成可能であるため、これらに関する詳述は省略する。尚、各ケースにおいて構成に必要となる、中心画素の左上、左下、右上、右下での処理(ケースによって、存在しない位置もある)の順番は、ラスター走査の順における未走査領域と抽出した輪郭点の流入元と流出先の扱いを一貫させる必要がある。このため、本実施例では、左上、左下、右上、右下(ケースにより、処理が存在しない位置は、左記の順を飛ばす)の順に行うものとする。
以上により、ステップS1200における色交点判定・輪郭点抽出処理の説明を終える。ステップS1200における、ベクトル情報テーブルや流入ベクトル未定水平ベクトルテーブル、流入ベクトル未定垂直ベクトルテーブル、流出ベクトル未定水平テーブル、流出ベクトル未定垂直テーブルは、RAM5上に不図示の領域として確保されるものである。なお、ステップS1200の処理は図1における色交点判定・輪郭点抽出手段103を実現している。とりわけ、上記において、図12及び図13に基いて説明した色交点判定は、図1における色交点判定手段1031を実現しており、図10、図11及び図13に基いて説明した輪郭点抽出処理は、図1における輪郭点抽出手段1032を実現している。
ステップS1200での処理の流れを、図14と図15を用いて、具体例を元にして、さらに説明を加える。
図15は上述した、流入ベクトル未定水平ベクトルテーブル、流出ベクトル未定水平ベクトルテーブル、流入ベクトル未定垂直ベクトルテーブル、流出ベクトル未定垂直ベクトルテーブルの4種のテーブルの状態を表している。それぞれのテーブルは、あらかじめRAM5上に十分な領域が確保されているものとする。また、それぞれの領域は、それぞれ連続したメモリ領域として構成されていて、先頭領域から発生順にそれぞれのテーブルに該当する未定のベクトル番号を格納するものとする。それぞれの領域において、有効データの次である最終尾の位置には、最終尾であることを示すマーカーとして「−1」を格納しておく。データを付け加えるには、このマーカーの位置に新たなベクトル番号を上書きし、その次の領域に改めてマーカーを書き込む。あるデータを削除する際には、削除するデータの次の有効データからマーカーまでを、削除するデータの位置から順に1つずつシフトするように書き写していくものとする。
さて、図14(a)の140で示されるようなラベル画像にステップS1200の処理を行うと、色領域1(ラベル番号が1の領域)に対しては、図14(b)で示されるベクトル情報テーブルが得られることになる。図14(a)における、A(0)、B(1)、C(2)、D(3)、E(4)、F(5)の6点が、それぞれ、図14(b)のベクトル番号(ベクトルカウンタ欄の値)0、1、2、3、4,5の6本のベクトルに対応する。図14(a)のラベル画像140をラスター走査すると、A(0)、B(1)、C(2)、D(3)、E(4)、F(5)で示される位置の順に輪郭点が抽出されていくことになるからである。
すなわち、ラベル画像の左上からラスター走査を開始すると、3×3の画素マトリクスのウィンドウが、図14(a)の1400で示される位置に来た時、図9(g)に示したケース7の状態となる。このときの中心画素の左上の位置に交点判定を伴う輪郭点抽出処理が行われ、図12(b)で示した状態であることから、図14(a)におけるA(0)の位置に、ベクトル番号0として、色交点ではない輪郭点(水平ベクトルの始点)が抽出される。このベクトルは、この時点では流入ベクトルも流出ベクトルも未定であるから、図15(a)に示す様に、流入ベクトル未定水平ベクトルテーブルと流出ベクトル未定水平ベクトルテーブルに、ベクトル番号0が追記されることになる。
ラスター走査を進めると、次に、図14(a)の1401で示される位置に来た時、図9(m)に示したケース13の状態となる。このときの中心画素の右上の位置に交点判定を伴う輪郭点抽出処理が行われ、図12(n)で示した状態であることから、図14(a)におけるB(1)の位置に、ベクトル番号1として、色交点ではない輪郭点(垂直ベクトルの始点)が抽出される。このベクトルは、流出ベクトルは未定ながら、流入ベクトルは既走査領域にあるので、流出ベクトル未定水平ベクトルテーブルを探索することにより、ベクトル番号0が流入ベクトルであることが判明する。よって、上述したように、ベクトル情報テーブルのベクトル番号1の流入ベクトル欄とベクトル番号0流出ベクトル欄の記載を行う。図15(b)に示す様に、流出ベクトル未定水平ベクトルテーブルからベクトル番号0を削除するとともに、流出ベクトル未定垂直ベクトルテーブルに、ベクトル番号1を追記する。
次に、図14(a)の1402で示される位置に来た時、図9(f)に示したケース6の状態となる。このときの中心画素の右上の位置に交点判定結果に基く輪郭点抽出処理が行われ、図13(p)で示した状態であることから、図14(a)におけるC(2)の位置に、ベクトル番号2として、色交点である輪郭点(垂直ベクトルの始点)が抽出される。このベクトルも、流出ベクトルは未定ながら、流入ベクトルは既走査領域にあるので、流出ベクトル未定垂直テーブルを探索することにより、ベクトル番号1が流入ベクトルであることが判明する。よって、上述したように、ベクトル情報テーブルのベクトル番号2の流入ベクトル欄とベクトル番号1流出ベクトル欄の記載を行う。図15(c)に示す様に、流出ベクトル未定垂直ベクトルテーブルからベクトル番号1を削除した上で、ベクトル番号2を追記する。
次に、図14(a)の1403で示される位置に来た時、図9(d)に示したケース4の状態となる。このときの中心画素の左下の位置に交点判定を伴う輪郭点抽出処理が行われ、図12(h)で示した状態であることから、図14(a)におけるD(3)の位置に、ベクトル番号3として、色交点ではない輪郭点(垂直ベクトルの始点)が抽出される。このベクトルは、流入ベクトルは未定ながら、流出ベクトルは既走査領域にあるので、上述のように、流入ベクトル未定水平ベクトルテーブルと流入ベクトル未定垂直ベクトルテーブルの両方を探索することにより、ベクトル番号0が流出ベクトルであることが判明する。よって、上述したように、ベクトル情報テーブルのベクトル番号3の流出ベクトル欄とベクトル番号0流入ベクトル欄の記載を行う。図15(d)に示す様に、流入ベクトル未定水平ベクトルテーブルからベクトル番号0を削除するとともに、流入ベクトル未定垂直ベクトルテーブルに、ベクトル番号3を追記する。さらに、このケース4の状態では、中心画素の右下の位置に交点判定結果に基く輪郭点抽出処理が行われ、図13(h)で示した状態であることから、図14(a)におけるE(4)の位置に、ベクトル番号4として、色交点である輪郭点(水平ベクトルの始点)が抽出される。このベクトルは、流入ベクトルは未定ながら、流出ベクトルは既走査領域にあるので、上述のように、流入ベクトル未定水平ベクトルテーブルと流入ベクトル未定垂直ベクトルテーブルの両方を探索することにより、ベクトル番号3が流出ベクトルであることが判明する。よって、上述したように、ベクトル情報テーブルのベクトル番号4の流出ベクトル欄とベクトル番号3流入ベクトル欄の記載を行う。図15(e)に示す様に、流入ベクトル未定垂直ベクトルテーブルからベクトル番号3を削除するとともに、流入ベクトル未定水平ベクトルテーブルに、ベクトル番号4を追記する。
次に、図14(a)の1404で示される位置に来た時、図9(j)に示したケース10の状態となる。このときの中心画素の右下の位置に交点判定を伴う輪郭点抽出処理が行われ、不図示ながら、図12(u)の様に、中心画素以外の3画素のうち、縦または横につながる2画素が同ラベルで、残りの1画素が中心画素とも他の2画素とも異なるラベルなので、色交点である輪郭点である。よって、図14(a)におけるF(5)の位置に、ベクトル番号5として、色交点である輪郭点(水平ベクトルの始点)が抽出される。このベクトルは、流入ベクトルも流入ベクトルも既走査領域にある。まず、流出ベクトル未定垂直ベクトルテーブルを探索することにより、ベクトル番号2が流入ベクトルであることが判明する。よって、上述したように、ベクトル情報テーブルのベクトル番号5の流入ベクトル欄とベクトル番号2流出ベクトル欄の記載を行う。図15(f)に示す様に、流出ベクトル未定垂直ベクトルテーブルからベクトル番号2を削除する。そして、流入ベクトル未定水平ベクトルテーブルと流入ベクトル未定垂直ベクトルテーブルの両方を探索することにより、ベクトル番号4が流出ベクトルであることが判明する。図15(f)に示す様に、流入ベクトル未定水平ベクトルテーブルからベクトル番号4を削除する。
かくして、図14(a)の140で示されるようなラベル画像の色領域1(ラベル番号が1の領域)に対して、図14(b)で示されるベクトル情報テーブルが得られることになる。
さて、これまで述べてきた、ステップS1200の輪郭点・色交点抽出処理は、ラベル画像のラベル毎に順次にベクトル情報を抽出することが可能である。この方式では、ラベル画像中の全てのラベル領域の処理には、ラベル数に相当する回数分だけラベル画像を繰り返しラスター走査し、上記の処理を繰り返すことになる。このとき、ラベル画像中で、各ラベル領域の存在する範囲をあらかじめ矩形領域として求めておき、ラベル毎に、それぞれの存在する矩形領域(ラベル画像の部分領域となる)のみにラスター走査の範囲を限定すれば、処理時間を短縮することができる。
一方で、ラベル画像を一回走査するだけで、ラベル画像中に出現する全てのラベルの輪郭ベクトル情報を抽出することも可能である。この場合は、ラベル画像中に出現する全てのラベル分だけ、各々のラベル領域用に別々にベクトル情報テーブルと流入ベクトルや流入ベクトルが未定のベクトルの情報を管理するテーブル類を用意する。その上で、ラスター走査時に逐次、中心画素が属するラベルのテーブル類を使い分けて処理を進めるようにする。上述の走査を繰り返す場合に比し、ラベル数分の十分なメモリ容量を要すものの、一回のラスター走査で、全てのラベルに対して、それぞれ別々の独立したベクトル情報テーブル中に、それぞれのラベル領域の輪郭ベクトルデータを抽出することができる。
次にステップS1300では、ステップS1200で抽出したベクトル情報テーブル上のベクトル情報から、色領域(ラベル領域)を色交点間で区切られた部分輪郭の集まりで表現された輪郭情報に再構成する。
ベクトル情報テーブルをベクトル番号の昇順に未使用フラグを参照しながら、未処理(未処理フラグがTRUE)かつ、色交点(色交点フラグがTRUE)であるベクトルを探し、該当するベクトルが見つかった場合には、このベクトルから処理を開始する。このベクトルを第1の区分輪郭線の始点とするともに第一の区分輪郭線の第1点目の輪郭点とし、当該ベクトルの未使用フラグをFALSEに変更する。次に、このベクトルの流出ベクトルを参照して、同区分輪郭線の次の輪郭点とする。もし、この輪郭点が色交点でなければ、当該ベクトルの未使用フラグをFALSEに変更し、このベクトルの流出ベクトルを参照して同様の処理を続ける。一方、同輪郭点が色交点(色交点フラグがTRUE)であった場合は、この輪郭点をもって同区分輪郭線の終了点とする。もし、この色交点の未使用フラグが既にFALSEとなっていた場合には、抽出中の輪郭の開始座標に戻ったということであり、1つの閉ループの抽出が完了となる。もし、この輪郭点の未使用フラグが未だTRUEの場合には、この輪郭点を次の区分輪郭線の始点とし、この新しい区分曲線の第1点目の輪郭点とする。このベクトルの未使用フラグをFALSEに変更してから、前の区分輪郭線と同様に、流出ベクトルを参照して同区分輪郭線上の次の輪郭点を求める動作を続ける。1つの閉ループの抽出が完了した場合には、再度、未処理(未処理フラグがTRUE)かつ、色交点(色交点フラグがTRUE)であるベクトルを探して残りの閉ループを探す。もし、テーブル内に色交点フラグがTRUEであるベクトルが見つからなかった場合は、テーブル内で最初に見つかる未処理のベクトルから処理を開始する。流出ベクトルのベクトル番号をたどり、出現するxy座標を順に記録していけば輪郭座標を再構成することができる。そうして輪郭情報の再構成を続け、抽出中の輪郭の開始座標に戻れば1つの閉ループの抽出が完了となる。未処理のベクトルが無くなるまで処理を続けると外輪郭・内輪郭合わせた輪郭座標を全て抽出することができる。抽出された輪郭情報は、ラベル単位で情報を持つこととする。
図14(a)から求められる図14(b)のベクトル情報テーブルを基に、ステップS1300の処理で輪郭情報を再構成すると、図14(c)のように、色領域(ラベル番号が1の領域)を色交点間で区切られた部分輪郭の集まりで表現した輪郭情報が得られる。図14(d)は、図14(c)の輪郭情報が、ラベル番号1の領域の輪郭を構成することを示すデータ形式の例を示している。
このようにして抽出される色交点で区間分割された境界線(分割境界線)データを、区間ごとに関数近似することにより、それぞれの色領域の隣接箇所での重なり・隙間のないベクトルデータを生成することができる。
以上、ステップS1300の輪郭情報再構成処理を説明した。尚、このステップS1300の処理は、図1における輪郭情報再構成手段を実現している。
上述したように、本発明では、ラベリングされたラベル画像をラスター走査し、各ラベル領域の輪郭を構成する線素を、ウィンドウを用いて抽出する。抽出した線素は線素の始点となる座標情報とともに流出先・流出元を関連付けたうえでテーブルに登録しておく。また線素の始点が色領域間の色交点にあたる場合、色交点情報である旨も合わせて記録する。画像全体を走査し終えた後に、テーブルを参照して線素をつなぎ合わせる。この時、色交点情報を持つ箇所でつなぎ合わせるデータを分けることで境界線を抽出することができる。したがって、テーブルには線素が再構成されるべき順番で漏れなく登録されるため、抽出できる境界線も特定領域の輪郭再構成に適した順番で、漏れなく抽出することができる。1回の画像全面に対するラスター走査とテーブル走査で境界線が抽出できるため、処理も高速である。また、線素の抽出と色交点判定はウィンドウをラスター走査順にずらしながら行うため、追跡による境界線抽出のように、領域形状によって追跡の方向が変わることがなく、メモリキャッシュが効きやすくなり処理速度の低下防止に効果がある。また、色領域の形状によらず、画像全体に対する1回のラスター走査とテーブル走査で境界線を抽出できる。
[実施例2]
ウィンドウのサイズは3×3でなくてもよく、2×2でも可能である。2×2のウィンドウ走査で起こりえる2×2内の4画素のパターンを図16(a)、図16(d)、図16(g)、図16(k)、図16(o)に示した。図16(a)と図16(d)は、4画素内に2種類のラベルの画素が存在する場合である。図16(g)、図16(k)は、4画素内に3種類のラベルの画素が存在する場合である。図16(o)は、4画素内に4種類のラベルの画素が存在する場合である。尚、4画素内に1種類のラベルの画素しか存在しない場合には、輪郭点は抽出されることがないので、表記していない。基本的には、これらのパターンの90°、180°、270°の回転したパターンがあり得るが、図16(a)、図16(d)、図16(g)、図16(k)、図16(o)の場合を示せば、それらの回転パターンの場合は、容易に構成可能であるため、これらに関する詳述は省略する。以下、図16(a)、図16(d)、図16(g)、図16(k)、図16(o)の場合を説明する。
実施例1の3×3のウィンドウ走査での説明の中で、ラベル画像を一回走査するだけで、ラベル画像中に出現する全てのラベルの輪郭ベクトル情報を抽出する場合を述べた。その中で、ラベル画像中に出現する全てのラベル分だけ、各々のラベル領域用に別々にベクトル情報テーブルと流入ベクトルや流入ベクトルが未定のベクトルの情報を管理するテーブル類を用意することを説明した。2×2のウィンドウ走査においても、同様である。
さて、図16(a)のパターンの場合には、図16(b)と図16(c)に示したように、2種類のラベルのそれぞれに、一点ずつ、色交点ではない輪郭点を抽出する。図16(d)のパターンの場合には、図16(e)と図16(f)で示したように、2種類のラベルのそれぞれに、2点ずつ、色交点である輪郭点を抽出する。図16(g)のパターンの場合には、図16(h)、図16(i)、図16(j)で示したように、3種類のラベルのそれぞれに対応させて、それぞれに色交点である輪郭点を1点ずつ抽出する。図16(k)のパターンの場合には、図16(l)、図16(m)、図16(n)で示したように、3種類のラベルのうち、4画素中に一画素しか存在しないラベルに対しては、色交点ではない輪郭点を1点ずつ抽出し(図16(l)と図16(m)に相当)、4画素中の斜め方向に隣接している2画素に同じラベルが存在しているラベル(図16(n)に相当)には、色交点ではない輪郭点を2点抽出する。また、図16(o) のパターンの場合には、図16(p)、図16(q)、図16(r) 、図16(s)で示したように、のそれぞれに対応させて、それぞれに色交点である輪郭点を1点ずつ抽出する。
このように、構成すれば、2×2のウィンドウ走査でも、3×3のウィンドウ走査で得られる輪郭情報と全く同等な輪郭情報を抽出することが可能である。
一回のラスター走査で、ラベル画像中の全てのラベル領域の輪郭情報を抽出するためには、3×3の場合には、実施例1で述べた様に、中心画素のラベルについてのみを抽出すればよい。これに対し、2×2の場合には、ウィンドウ内4画素内に出現するラベル全てについての上を抽出しながら行う必要がある点が大きく異なる。
また、2×2の2×2のウィンドウ走査の場合でも、一回の走査では、上記の輪郭点抽出のうち、ある一つのラベルに対応する輪郭点のみを該当する一つのラベルのテーブル領域のみに抽出する様に構成してすることも可能である。画像中に存在するラベルの数の回数、輪郭抽出するラベルを切り替えながら、同様なラスター走査を繰り返せば、2×2のウィンドウ走査によっても、ラベル毎の輪郭情報抽出が可能である。この場合には、ベクトル情報テーブルと流入ベクトルや流入ベクトルが未定のベクトルの情報を管理するテーブル類用のメモリ領域をあらかじめ全てのラベル分確保する必要はなくなる。
(その他の実施例)
以上本発明にかかる実施形態を説明したが、実施形態の処理の多くは、情報処理装置上で実行されるコンピュータプログラムによるものであるので、当然、本発明はかかるコンピュータプログラムをもその範疇とする。通常、コンピュータプログラムは5のRAMや6のROM、またはCD−ROM等のコンピュータ可読記憶媒体に格納されていて、それをコンピュータにセットし、システムにコピーもしくはインストールすることで実行可能になる。従って、かかるコンピュータ可読記憶媒体も当然に本発明の範疇に入る。
また、本発明は、以下の処理を実行することによっても実現される。その処理は、上述した実施例の機能を実現させるソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。