JPH04157578A - 輪郭抽出方法及びその装置 - Google Patents
輪郭抽出方法及びその装置Info
- Publication number
- JPH04157578A JPH04157578A JP2281958A JP28195890A JPH04157578A JP H04157578 A JPH04157578 A JP H04157578A JP 2281958 A JP2281958 A JP 2281958A JP 28195890 A JP28195890 A JP 28195890A JP H04157578 A JPH04157578 A JP H04157578A
- Authority
- JP
- Japan
- Prior art keywords
- vector
- pixel
- registered
- contour
- case
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/13—Edge detection
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/12—Edge-based segmentation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/10—Segmentation; Edge detection
- G06T7/181—Segmentation; Edge detection involving edge growing; involving edge linking
Landscapes
- Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
本発明はラスタ走査順に記憶された2値画像の輪郭線を
抽8する方法とその装置に関するものである。
抽8する方法とその装置に関するものである。
従来の例えば、2値ドツトパターンよりアウトラインフ
ォントを作成する場合は、2値画像文字パターンの輪郭
線を抽出し、その輪郭線をベクトル情報形式で記憶する
ことにより、その文字のアウトラインフォントを作成し
ている。このような2値画像よりの輪郭線の抽出は、ま
ず2値画像における輪郭線追跡のため追跡開始点を見つ
けることから始められる。そして、この追跡開始点が発
見されると、次にこの追跡開始点から順にその画像の輪
郭を追跡していき、追跡の終わった輪郭点には次々に追
跡済のマークを付けながら追跡を続行する。こうして、
この追跡が一巡した時点で一つの輪郭点列(輪郭線)を
求めている。このような手順を繰り返し行なうことによ
り、その画像中のすべての輪郭線を抽出することができ
る。 従来より知られる8連結の輪郭追跡の手順例を第2図に
示す。第2図において、201は内側に空白部分202
を含む2値画像パターンで、この輪郭線を抽出する場合
を説明する。第2図における、1つのマス目は1ドツト
(画素)を表わしている。 (1)2値画像パターン201を画面の基準点(0,0
)からラスタ走査してゆく。 (2)追跡済のマークが付いていない画素(例えばドツ
ト203)が存在する点にぶつかったならば、その点を
Poとしてドツトパターンの輪郭追跡を開始する。企画
面分を探しても点Paが存在しなければ手順終了。 (3)開始点P0に隣接する8方向の近傍画素方向に、
第3図に示す順番で探索を開始する。そして、最初に出
会った画素が存在する点(第2図の場合ではドツト20
4)を次の輪郭点Plとする。このとき、隣接点が存在
しない場合は、その点を孤立点として手順(2)へ戻る
。 (4)このようにしてPlマーク付けを行ない、第4図
に示したように、P、に隣接する8方向の近傍画素に対
して、次の輪郭点P1.1を抽出する。これは、直前に
マーク付けを行った点401より、P、(ドツト402
)を中心に反時計回り方向にドツトが存在するかを探索
し、最初に出会った画素が存在する点を次の輪郭点P1
゜1とするものである。 (5)以下、手順(4)を繰り返して、次々に輪郭点を
求める。 但し、p、、、=p、、p、、=Poとなったならば、
po、p、、・・・、pH−1を1つの領域の輪郭点列
となし、手順(6)へ進む。 (6)別の画像領域の輪郭点列を求めるために手順(2
)へ戻る。 以上である。なお、第3図及び第4図において、■は注
目点を、0(401)は直前にマーク付けを行った点を
示している。また、図中に示された数字は画素(ドツト
)の有無を探索する順番を表現している。
ォントを作成する場合は、2値画像文字パターンの輪郭
線を抽出し、その輪郭線をベクトル情報形式で記憶する
ことにより、その文字のアウトラインフォントを作成し
ている。このような2値画像よりの輪郭線の抽出は、ま
ず2値画像における輪郭線追跡のため追跡開始点を見つ
けることから始められる。そして、この追跡開始点が発
見されると、次にこの追跡開始点から順にその画像の輪
郭を追跡していき、追跡の終わった輪郭点には次々に追
跡済のマークを付けながら追跡を続行する。こうして、
この追跡が一巡した時点で一つの輪郭点列(輪郭線)を
求めている。このような手順を繰り返し行なうことによ
り、その画像中のすべての輪郭線を抽出することができ
る。 従来より知られる8連結の輪郭追跡の手順例を第2図に
示す。第2図において、201は内側に空白部分202
を含む2値画像パターンで、この輪郭線を抽出する場合
を説明する。第2図における、1つのマス目は1ドツト
(画素)を表わしている。 (1)2値画像パターン201を画面の基準点(0,0
)からラスタ走査してゆく。 (2)追跡済のマークが付いていない画素(例えばドツ
ト203)が存在する点にぶつかったならば、その点を
Poとしてドツトパターンの輪郭追跡を開始する。企画
面分を探しても点Paが存在しなければ手順終了。 (3)開始点P0に隣接する8方向の近傍画素方向に、
第3図に示す順番で探索を開始する。そして、最初に出
会った画素が存在する点(第2図の場合ではドツト20
4)を次の輪郭点Plとする。このとき、隣接点が存在
しない場合は、その点を孤立点として手順(2)へ戻る
。 (4)このようにしてPlマーク付けを行ない、第4図
に示したように、P、に隣接する8方向の近傍画素に対
して、次の輪郭点P1.1を抽出する。これは、直前に
マーク付けを行った点401より、P、(ドツト402
)を中心に反時計回り方向にドツトが存在するかを探索
し、最初に出会った画素が存在する点を次の輪郭点P1
゜1とするものである。 (5)以下、手順(4)を繰り返して、次々に輪郭点を
求める。 但し、p、、、=p、、p、、=Poとなったならば、
po、p、、・・・、pH−1を1つの領域の輪郭点列
となし、手順(6)へ進む。 (6)別の画像領域の輪郭点列を求めるために手順(2
)へ戻る。 以上である。なお、第3図及び第4図において、■は注
目点を、0(401)は直前にマーク付けを行った点を
示している。また、図中に示された数字は画素(ドツト
)の有無を探索する順番を表現している。
しかしながら前記従来例では、輪郭追跡の開始点を決定
した後は、輪郭線に沿った追跡を行なうため、全画像を
メモリ上にとり込んだ後で、輪郭線の抽出処理を開始し
なければならない。このため、必要とするメモリ容量が
大きくなり、コストアップや処理時間が遅くなるなどの
不具合があった。 また上記従来例では、1つの輪郭点列を抽出した後、次
の輪郭の開始点を再度ラスタ走査により検出するために
、−度探索済の画素を再度検索することになり、画像デ
ータの演算量が増加し、処理速度が遅くなるといった不
具合もあった。 更に、前記従来例では画素(ドツト)の線単位ではな(
、ドツトそのものを単位として輪郭を追跡している。こ
のため、1ドツト巾のドツトパターンを追跡すると、そ
の検出した輪郭線幅が“0” (幅が0ドツト)となっ
てしまうという不具合もあった。 本発明は上記従来例に鑑みてなされたもので、画像をラ
スタ走盃し、注目すべき画素位置を移動させながら輪郭
を抽出していき、注目すべき画素位置とその近傍画素の
黒点の存在を判定し、これらの黒点の状態に応じて輪郭
ベクトル列上のベクトルの始点及び終点の候補を抽圧し
、これら候補に連結される終点及び始点を決定づけるこ
とによって、1回のラスタ走査により画像中に含まれる
全ての輪郭を抽圧できるようにした輪郭抽出装置及びそ
の方法を提供することを目的とする。
した後は、輪郭線に沿った追跡を行なうため、全画像を
メモリ上にとり込んだ後で、輪郭線の抽出処理を開始し
なければならない。このため、必要とするメモリ容量が
大きくなり、コストアップや処理時間が遅くなるなどの
不具合があった。 また上記従来例では、1つの輪郭点列を抽出した後、次
の輪郭の開始点を再度ラスタ走査により検出するために
、−度探索済の画素を再度検索することになり、画像デ
ータの演算量が増加し、処理速度が遅くなるといった不
具合もあった。 更に、前記従来例では画素(ドツト)の線単位ではな(
、ドツトそのものを単位として輪郭を追跡している。こ
のため、1ドツト巾のドツトパターンを追跡すると、そ
の検出した輪郭線幅が“0” (幅が0ドツト)となっ
てしまうという不具合もあった。 本発明は上記従来例に鑑みてなされたもので、画像をラ
スタ走盃し、注目すべき画素位置を移動させながら輪郭
を抽出していき、注目すべき画素位置とその近傍画素の
黒点の存在を判定し、これらの黒点の状態に応じて輪郭
ベクトル列上のベクトルの始点及び終点の候補を抽圧し
、これら候補に連結される終点及び始点を決定づけるこ
とによって、1回のラスタ走査により画像中に含まれる
全ての輪郭を抽圧できるようにした輪郭抽出装置及びそ
の方法を提供することを目的とする。
上記目的を達成するために本発明の輪郭線抽出装置は以
下の様な構成からなる。即ち、画像データにおける注目
画素と、その近傍画素の状態を保持する保持手段と、前
記注目画素をラスタ走査順に取比し、前記注目画素とそ
の近傍画素の状態に基づいて、水平方向及び垂直方向の
画素配列ベクトルを検出する検出手段と、前記画素配列
ベクトル同士の接続状態を判別する判別手段と、前記判
別手段により判別された画素配列ベクトルの接続状態を
もとに、前記画像データの輪郭を抽出する抽圧手段とを
有する。 上記目的を達成するために本発明の輪郭線抽出方法は以
下の様な構成からなる。即ち、注目画素と、その近傍画
素の状態により、予め定められた位置を輪郭線を構成す
る点とし、近傍画素の状態により輪郭線の点の接続方向
を決定する工程と、前記輪郭線を構成する点と、輪郭線
の他の点との接続状態を判断する工程と、前記注目画素
の位置をラスタ走査順に画像データ上を更新し、注目画
素毎に近傍画素の状態に基づいて前記工程を実行し、輪
郭点を抽出する。
下の様な構成からなる。即ち、画像データにおける注目
画素と、その近傍画素の状態を保持する保持手段と、前
記注目画素をラスタ走査順に取比し、前記注目画素とそ
の近傍画素の状態に基づいて、水平方向及び垂直方向の
画素配列ベクトルを検出する検出手段と、前記画素配列
ベクトル同士の接続状態を判別する判別手段と、前記判
別手段により判別された画素配列ベクトルの接続状態を
もとに、前記画像データの輪郭を抽出する抽圧手段とを
有する。 上記目的を達成するために本発明の輪郭線抽出方法は以
下の様な構成からなる。即ち、注目画素と、その近傍画
素の状態により、予め定められた位置を輪郭線を構成す
る点とし、近傍画素の状態により輪郭線の点の接続方向
を決定する工程と、前記輪郭線を構成する点と、輪郭線
の他の点との接続状態を判断する工程と、前記注目画素
の位置をラスタ走査順に画像データ上を更新し、注目画
素毎に近傍画素の状態に基づいて前記工程を実行し、輪
郭点を抽出する。
以上の構成において、画像データにおける注目画素と、
その近傍画素の状態を保持し、この注目画素を等した走
査順に取出し、その注目画素とその近傍画素の状態に基
づいて、水平方向及び垂直方向の画素配列ベクトルを検
出する。これら画素配列ベクトル同士の接続状態を判別
して、この判別された画素配列ベクトルの接続状態をも
とに、画像データの輪郭を抽出するように動作する。
その近傍画素の状態を保持し、この注目画素を等した走
査順に取出し、その注目画素とその近傍画素の状態に基
づいて、水平方向及び垂直方向の画素配列ベクトルを検
出する。これら画素配列ベクトル同士の接続状態を判別
して、この判別された画素配列ベクトルの接続状態をも
とに、画像データの輪郭を抽出するように動作する。
以下、添付図面を参照して本発明の好適な実施例を詳細
に説明する。 く第1の実施例〉 この実施例は、第1図に示すように、2個画像における
注目画素(101)と、その近傍の8個の画素の状態を
見て処理を進めるもので、注目画素をラスタ走査し、1
画素毎にずらしながら画像全体の処理を逐次行なってゆ
く。 第1図において、■は注目画素101であり、“O”及
び“2”で示された位置は、主走査方向に対し注目画素
101と同じ位置にあり、副走査方向のそれぞれ1ラス
タ前の画素(0)及び1ラスタ先の画素(2)を示す、
“l”及び“3”で示された位置は、注目画素101と
同一のラスタ上にあり、それぞれ1画素前の画素(3)
及び1画素先の画素(1)を示している。更に、“A”
及び“B”は、主走査方向に1画素先の位置にあり、そ
れぞれ1ラスタ前及びlラスタ先の位置にある画素を示
し、“C”及び“D′は主走査方向の1画素前の位置に
ある画素で、それぞれ1ラスタ先及び1ラスタ前の位置
にある画素を示す。 第5図は、本実施例の輪郭検出を行うハードウェア構成
例を示すブロック図である。 501は信号u!5oOを介して入力される画像データ
をやりとりするための入力側fml(インターフェース
)部であり、この信号線500よりラスタ走査形式で順
次2値画像データが入力されてくる。502はラッチで
、501より入力された画像データを、図示しない画素
同期クロックに同期して1画素づつ順次更新しながら保
持する0次の画素同期クロックにて、ラッチ502は次
の画素データを入力制御回路501より入力する。この
時、既に保持していた画素データは、その画素クロック
に同期してラッチ503にラッチされて、保持される。 同様にラッチ503に保持されていた画素データは、次
の画素同期クロックにて、ラッチ504に保持される。 505及び503はそれぞれ1ラスタ分の画素データを
保持するFIFO(ファーストイン・)アースドアウド
・メモリ)である。PIFO505は、ラッチ504の
出力を順次、画素同期クロックに同期して取り込み、l
ラスタ前のデータをラッチ507へ出力する。同様に、
PIF0506も、ラッチ509の出力を取り込み、ラ
ッチ510にlラスタ前の画素データを8カする。ラッ
チ507,508,509及びラッチ510,511.
512は共に前S己うッチ502,503゜504と全
く同様に動作する。 このようにして、ラッチ502,503,504.50
7,508,509,510,511及び512に記憶
された9個の画素は、第1図に示した9 (3X3)画
素よりなる領域の画素データを記憶していることになる
。即ち、これらラッチのデータは、それぞれ第1図の“
B”、“2”。 “C”、“1”、“■″、“3″、“A”、“0”、′
D”に対応している。 513.514は共にCPU519の入力ポートで、入
力ポート513は、ラッチ510,502.504,5
12のデータを、即ち、それぞれ第1図における“A”
、“B”、“C”1 “D”の位置のデータをCPU5
19に入力する。同様に、入力ポート514はラッチ5
11,507゜503.509,508のデータ、即ち
、“0”、“1”、“2”、“3”、′■”の位置のデ
ータとして入力する。 515は主走査方向の画素位置を示す主走査カウンタで
あり、図示しない副走査同期信号によりリセットされ、
画業同期信号によりカウントアツプする。516は副走
査方向の画素位置を示す副走査カウンタで、図示しない
ページ同期信号によりリセットされ、副走査同期信号に
よりカウントアツプされる。517は入出力制御用の入
出力ボートであり、大圧力制御回路501に対し、画素
データ入力の実行及び保留を指示する信号、及び入出力
制御回路501よりCPU519への画素データ更新を
知らせる信号等を保持する。521はハードディスク5
22の入出力制御装置である。入出力制御ボート517
、主走査カウンタ515、副走査カウンタ516、入力
ポート513.514、メモリ520、ディスクl10
521はバス518を介してCPU519に接続されて
いる。 こうして、CPU519は入出力制御ボート517を介
して、画素データの更新を行い、主走査カウンタ515
及び副走査カウンタ516を介して、注目画素の画素位
置(i、j)を知ることができる。また、入力ポート5
13及び514を介して、注目画素及びその近傍の8方
向の画素の状態を知ることができる。 このようにして注目画素の処理が終了すると、CPU5
19は入出力制御ボート517を介して9個のラッチに
記憶される画素データの更新を指示し、同時に画素デー
タの更新完了の信号をリセットする。入出力制御回路5
01は、この更新の指示を受けると、画素データの7更
新指示の信号をクリアするとともに、後段のラッチにラ
ッチされ゛る画素データを更新し、この更新が終了する
と入出力制御ボート517に、更新完了の信号を圧力す
る。 CPU519は、更新指示の出力後、入出力制御ボート
517より更新完了の信号が入力されるのを監視してい
る。この更新完了の信号が入力されると、新たに9個の
ラッチに記憶された画素データに関する処理を実行し、
以下同様にこれを繰り返すものである。また、入力制御
回路501は、画像領域の最終画素を注目画素として処
理し終った際に、大8力制御ボート517に終了信号を
出力する。 次に注目画素及びその近傍の8画素の状態に応じた、そ
れぞれの場合の処理を説明する。 注目画素が白画素である場合は、その処理を終了してラ
スタ走査を1画素分進め、注目画素位置を更新する。 注目画素が黒画素の場合は、近傍の画素の状態によって
以下の処理を行なう。第6図〜第21図に各状態におけ
る処理内容を示しである。 ここで第6図の画素マトリクス61において、“d”は
do not care ” 、即ち、“d″の表示の
ある位置の画素は白画素でも黒画素でも構わないことを
意味している。これは以下の図でも同様とする。また第
6図の画素マトリクス62において、○印は、横方向ベ
クトルの始点及び縦方向ベクトルの終点を表わしており
、Δ印は縦方向ベクトルの始点及び横方向ベクトルの終
点を表わしている。また第6図の62における実線矢印
は、始点及び終点共に定まった、矢印の向く方向の輪郭
ベクトルを表わし、第7図に示すような点線矢印は、始
点もしくは終点のいずれか一方のみが定まった、矢印の
向(方向の輪郭ベクトルを表わしている。これら、○、
△、実線矢印及び点線矢印の持つ意味も、以降の図にお
いても同様である。また・は黒画素を示し、白画素はそ
の位置を明示したい時のみ点線のO印で表言己し、それ
以外の時は表記していない。 これら輪郭ベクトルの始点・終点位置は、主走査方向及
び副走査方向共に、画素と画素の中間の位置にあるもの
とする。また、主走査方向及び副走査方向共に、画素の
ある位置は正整数で示され、画素位置を2次元の座標で
表現をする。例えば、第6図の注目画素63の位置が[
(3,7):第7ラスタの第3画素位置の意]であれば
、第6図の62で示された4本のベクトルはそれぞれ点
64 (2,5,6,5) 、点65 (3,5゜6.
5)、点66 (3,5,7,5) 、点67(2,5
,7,5)の4点を始点、終点とする互いに連続する4
本のベクトルとして表現される。 これらベクトルを(始点の座標、終点の座標)で表現す
るものとすると、第6図の4本のベクトルは。 [(2,5,6,5)、(3,5,6,5)][(3,
5,6,5)、(3,5,7,5)][(3,5,7,
5)、(2,5,7,5)][(2,5,7,5)、(
2,5,6,5)]でそれぞれ表現される。 従って、ここでは小数の表現を避けるために便宜上、以
降の画素位置を偶数のみで表現することにし、始点、終
点の位置を奇数の整数で表現することにする。即ち、m
画素xnll!i素の画像は、2mx2nの正の偶数(
整数)の座標表現で表わすものとする。これにより、上
述の第6図の例は、注目画素位置を(6,14)である
と表現し、それぞれ4つの終点、始点は(5,13)、
(7゜13)、(7,15)、(5,151となる。こ
れにより、第6図の4本のベクトルは、[(5,13)
、(7,13)] [(7,13)、(7,15)] [(7,15)、(5,15)] [(5,15)、(5,t3)] と表現されるものとする。 これ以降2値画像は、それぞれがm画素よりなるnラス
タで構成されるmxn画素(m、nは正の整数)でなる
ものとし、第j番目のラスタの第1番目の画素位置を(
2i、2j)(i、jは正の整数で、i5m、J≦n)
で表現するものとする。 く輸郭抽a処理の説明〉 第22図は実施例の装置のCPU519による輪郭抽出
処理の全体の流れを示すフローチャートである。 まずステップS1にて、2値画偉データからベクトル列
を抽出し、各ベクトルの始点の座標及びこのベクトルに
流入してくる(このベクトルの始点の座標が終点となっ
ている)ベクトル、流出してゆ((このベクトルの終点
の座標が始点となっている)ベクトルを、第23図及び
第24図に示すテーブル形式で出力する。 第23図は水平方向のベクトルを示す図、第24図は垂
直方向のベクトルを示す図である。 次にステップS2に進み、第23区及び第24図に示す
テーブルから流入及び流aベクトルの項目番号を辿るこ
とにより、第25図に示すような画像中の総輪郭線数、
各輪郭線毎の輪郭線の総点数、輪郭線中の各点のX座標
、X座標を記憶したテーブルを作成する。次にステップ
S3に進み、ディスクl10521を介して、このテー
ブル情報ファイル形式でディスク522にg己憶して、
−連の動作を終了する。 第26図は第22図のステップS1のベクトル列抽出処
理を示すフローチャートである。 まずステップSllでは、入力ポート514のビット4
(注目画素)を見ることにより、注目画素が白画素か黒
画素かを判定する。白画素の場合はステップS13へ進
み、黒画素の場合はステップS12へ進む。ステップS
12では、注目画素の周囲8画素の状態を見て、その状
態に応じた適当な処理ルーチンをコールする。 ステップS13では、前述の如く入出力制御ボート51
7を介して画素位置を更新を指示する。 そして、入出力制御ボート517より更新完了の信号を
入力するとステップS14に進み、入出力制御ボート5
17を介して、最終画素の処理が終了したか否かを判断
し、終了していなければステップSllへ戻り、次の注
目画素も同様に処理を行ない、終了していれば、元のル
ーチンにリターンする。 第27図は第26図のステップS12に示された周囲画
素の状態により実行される処理を示すフローチャートで
ある。 ステップS21において、CPU519のレジスタを“
0”にクリアする。次にステップS22に進み、第1図
の“0”で示された位置の画素の状態(以降、f(0)
で表現する)が黒画素(以降、“1”で表わす)であれ
ばステップS23へ進み、白画素(以降、“0”で表わ
す)であればステップS24へ進む。ステップS23で
は前記レジスタの内容に1を加える。 次にステップS24に進み、第1図の“1”の位置の画
素の状態が黒画素であれば(f (1) =1)ステッ
プS25へ進み、前記レジスタの内容に2を加える。f
(1)=OであればステップS26に進み、同様に第
1図の“2”の位置の画素面黒画素かどうかをみる。f
(2) =1 (黒画素であれば)であればステップ
S27へ進み、前記レジスタの内容に4を加える。 次にステップS28に進み、第1図の“3″の位置の画
素に注目し、f (3):1ならステップS29へ進み
、前記レジスタの内容に8を加えるが、そうでなければ
ステップS30へ進む。ステップS30では、前記レジ
スタの保持する値の処理番号のルーチンをコールする。 これにより、前記レジスタの内容は、第1図に示した“
0”、“l”、“2”、“3”の画素位置の各画素の状
態に応じて、0〜15の値を取り得る。これらは、その
値に応じてそれぞれ第6図の(ケース(case) O
) 、第7図の(ケース1)、第8図(ケース2)、第
9図(ケース3)、第10図(ケース4)、第11図(
ケース5)、第12図(ケース6)、第13図(ケース
7)、第14図(ケース8>、第15図(ケース−9)
、第16図(ケース10)、第17図−(ケース11)
、第1.8図(ケース12)、第19図(ケース13)
、第20図(ケース14)、第21図(ケース15、)
呻示されている。 5 −以下、各状態それ
ぞれの処理内容に関し詳述する。 第27図のステップS30において、レジスタの値が“
0”の場合は、第28図に示す処理がコールされる。第
28図は前述の第6図に示す状態(ケースO)を処理す
るルーチンである。以降、注目画素63の座標が(2i
、2j)として説明する。 くケースOの場合の処理説明 (第6図、第23図、第24図、第28図)〉第28図
のステップS31では(2i−1,2j−1)を水平ベ
クトルの始点として登録する。 即ち、第23図に示す水平ベクトルカウンタ230の指
し示す水平ベクトル始点(第6図の64)のX座標テー
ブルの欄(第23図の231)に(2i−1)を格納し
1、同じ(水平ベクトル始点y座標、テーブルの欄(第
23図の、232)に(2j−1)を格、納する。そし
て、この水平ベクトルに流入してくる元の垂直ベクトル
は、第24図の垂直ベクトルカウンタ240が、この時
点で指している垂直、ベクトルの始点座標テーブル内の
位置の次の位置に格納されるベクトルであり、また、こ
の水平ベクトルが流出していく先の垂直ベクトルは、こ
の時点で垂直ベクトルカウンタ240が指している垂直
ベクトルの始点座標テーブルの位置にある。 即ち、第23図に示す水平ベクトルの流入ベクトル項目
番号の欄において、水平ベクトルカウンタ230が指し
示す位置(第23図の例では233)に、垂直ベクトル
カウンタ240の値に1加えた値を格納する。また、水
平ベクトルの流8ベクトル項目番号の欄には、水平ベク
トルカウンタ230が指し示す位置(第23図の例では
234)に、垂直ベクトルカウンタ240の値を格納す
る。 次にステップS32では、同様に(2i+1゜2j−1
)を垂直ベクトルの始点(第6図の65)として登録す
る。この垂直ベクトルに流入する水平ベクトルはステッ
プS31で登録した水平ベクトルであり、この垂直ベク
トルが流出する水平ベクトルは、水平ベクトル始点座標
テーブルのステップ31で登録された水平ベクトルの次
の位置に格納される水平ベクトルであると登録する。 即ち、第24図を参照して説明すると、欄241には(
2i+1)が、欄242には(2j−1)が、更に欄2
43には、この時の水平ベクトルカウンタ230の値が
、欄243にはこの時の水平ベクトルカウンタ230の
値に+1した値が格納される。 次にステップS33に進み、水平ベクトルカウンタ23
0の内容を+1する。ステップS34では、(2i+1
,2j+1)を水平ベクトルの始点(第6図の67)座
標として登録し、この水平ベクトルに流入する垂直ベク
トルは、ステップS32で登録したベクトルであると登
録し、この水平ベクトルが流出する垂直ベクトルは、ス
テップS32で登録された垂直ベクトルの垂直ベクトル
始点座標テーブル内における次の位置に格納される垂直
ベクトル(第6図の点66と点64とを結ぶベクトル)
であると登録する。 ステップS35では、垂直ベクトルカウンタ240の内
容を+1し、ステップS36では、(2i−1,2J+
1)を垂直ベクトルの始点座標として登録し、この垂直
ベクトルに流入する水平ベクトルはステップS34で登
録された水平ベクトルであると登録し、この垂直ベクト
ルが流出する水平ベクトルは、ステップS31で登録し
た水平ベクトルであると登録する。こうして最後に、ス
テップS37で、水平ベクトルカウンタ230及び垂直
ベクトルカウンタ240を共に+1して処理を終了する
。 この処理結果は、第6図の62で示す如く、点64と点
65とを結ぶ水平ベクトルと、点67と点66とを結ぶ
水平ベクトルからなる2つの水平ベクトルと、点65と
点67、及び点66と点64とを結ぶ2つの垂直ベクト
ル合わせ4つのベクトルが順回した1つのループを作っ
ている状態として抽出する。 くケース1の説明 (第7図、第23図、第24図、第29図)〉第29図
は第27図のステップS30で、レジスタの保持する値
が1の場合にコールされるケース1の処理を示すフロー
チャートである。 まずステップS41では(2i+1,2j+1)を水平
ベクトルの始点として、第23図に示すテーブルの始点
座標のx、y座標に登録する。また、この水平ベクトル
が流出する垂直ベクトルの番号(欄234)は、後述す
るステップS43で登録される垂直ベクトルカウンタ2
40の値とする。次にステップS42に進み、ステップ
S41で登録した水平ベクトルに流入する垂直ベクトル
を、第34図に示す流出先が未定な垂直ベクトルテーブ
ル341から探し出して登録する。このステップS42
の処理の内容は、第30図のフローチャートで示してい
る。 ステップS51では、テーブル341に登録されている
流出先が未定の垂直ベクトルの数を保持する流aベクト
ル未定垂直ベクトルカウンタ340の値を変数kにセッ
トする。ステップS52では垂直ベクトル流出ベクトル
未決定項目番号テーブル341に登録されている項目番
号(k−1)の値が指し示す垂直ベクトルの始点のX座
標の欄が(2i+1)であるか否かを判定する。(21
+l)でなければ変数にの値(k)を1だけ減じて、再
びステップS52を実行する。ステップS52で始点の
X座標が(2i+1)であればステツブ854へ進む。 ステップS54ではテーブル341の項目番号が(k−
1)である垂直ベクトルが、前述したステップS41で
登録した水平ベクトルの流入光ベクトルであり、更にス
テップS41で登録した水平ベクトルが、この垂直ベク
トルの流出先ベクトルであることになる。従って、第2
3図の水平ベクトルカウンタ230で指示される水平ベ
クトルの流入ベクトル項目番号欄に、テーブル341の
項目番号が(k−1)である垂直ベクトル番号を、及び
第24図の垂直ベクトルの流出項目番号欄に、ステップ
S41における水平へり1ドルカウンタ230の値を格
納する。 ステップS55では、ステップS53.ステップS54
において、流出先が決定したベクトルを流出光未定ベク
トルテーブル341から消去し、そのテーブルの空いた
部分を詰める0次に、ステップS56で、流出ベクトル
未定垂直ベクトルカウンタ340の値を1減じ、垂直ベ
クトル流出テーブル未決定項目番号テーブル341に登
録されている流出先が未定の垂直ベクトルが1つ減った
旨更新して、元のルーチンに戻る。 このようにして、第29図のステップS42の処理が終
了してステップS43へ進む。ステップS43では(2
i−1,2j+1)を垂直ベクトルの始点として登録し
、この垂直ベクトルに注入してくる水平ベクトルは、ス
テップS41で登録した水平ベクトルとする。次に、ス
テップS44ではステップS43で登録した垂直ベクト
ルが流出する先の水平ベクトルを、第31図に示す流入
光ベクトル未定テーブル311より探し出して登録する
。このステップS44の処理内容は、第35図のフロー
チャートで示す。 これは前述した第30図に示した処理と全く同様にして
実行される。即ち、ステップS43で登録した垂直ベク
トルが流出する先のベクトルを第24図の流出ベクトル
項目欄に登録し、この垂直ベクトルへ流出する水平ベク
トルの流入光ベクトル項目番号欄に、垂直ベクトルカウ
ンタ240の値をセットして、この垂直ベクトルである
と登録する。これにより、第31図に示すテーブル31
1を更新する。 次にステップS45では、水平ベクトルカウンタ230
を+1し、ステップS46で、垂直ベクトルカウンタ2
40を+1して、元の処理に戻る。 くケース2の処理説明 (第8図、第23図、第24図、第33図、第36図)
〉第27図のステップS30において、レジスタの保持
する値が2″の場合は、第36図に示す処理が実行され
る。 第36図に示す処理は、第8図に示す状態を処理するル
ーチンである。 まず、ステップS71で、第24図の垂直ベクトルカウ
ンタ240が示す垂直ベクトルの始点を(2i−1,2
J+1)として登録し、この垂直ベクトルが流出する先
の水平ベクトルを、ステップS73で登録される水平ベ
クトルとする。ステップS72では、ステップS71で
、登録した垂直ベクトルが、それに流入してくる水平ベ
クトルが未定であるベクトルとして、第33図に示す流
入ベクトル未定垂直ベクトルテーブル331の既使用領
域のすぐ隣の未使用領域に登録し、流入光ベクトル未定
垂直ベクトルカウンタ330を+1する。次にステップ
S73に進み、第23図に示すテーブルのカウンタ23
0で示される欄の水平ベクトルの始点を(2i−1,2
j−1)として登録し、このテーブルの流入光垂直ベク
トルを、ステップS71で登録した垂直ベクトルとして
登録する。 ステップS74では、ステップS73で登録した水平ベ
クトルが流入してゆく先の垂直ベクトルが未定であるベ
クトルとして、第32図に示す流出ベクトル未定水平ベ
クトルテーブル321の既使用領域のすぐ隣の未使用領
域に登録し、流出先ベクトル未定水平ベクトルカウンタ
320を+1する。ステップS75では、水平ベクトル
カウンタ230及び垂直ベクトルカウンタ240を共に
+Iして元の処理に戻る。 くケース3の説明 (第9図、第23.24図、第37図)〉第27図のス
テップS30において、レジスタの値が“3”の場合は
第37図に示す処理が実行される。これは第9区に示す
状態を処理するルーチンである。 ステップS81では(2i−1,2J+1)を垂直ベク
トル91(第9図)の始点として登録する。次にステッ
プS82に進み、前述のステップS44と同様にして、
ステップS81で登録した垂直ベクトルが流出する先の
水平ベクトルを求める。次にステップS83で、カウン
タ330が指示するの指示するテーブル331に垂直ベ
クトルカウンタ240の値をセットして、カウンタ33
0の値を+1する。次にステップS85で垂直ベクトル
カウンタ240の内容を+1し、ステップS85でケー
スAの処理を行う。この処理は第38図のフローチャー
トで示されている。 第38図のフローチャートを説明すると、ステップS9
1で第9図の画素Aが白“0″かどうかを調べ、白でな
ければ何もせずに処理を終了する。これは第9図の93
で示されている。 画素Aが白であればステップS92に進み、水平ベクト
ル94(第9図)の始点を(2i+1゜2j−1)とす
る。次にステップS93で、この水平ベクトルに流入す
る垂直ベクトルをサーチする。次にステップS94に進
み、この水平ベクトルの流出ベクトルが未定であるとし
て、この水平ベクトルの番号をテーブル321にセット
する。 そして、ステップS95で水平ベクトルカウンタ230
を+1して、処理を終了する。 〈ケース4の説明 (第10図、第23図、第24図、
第31図〜第34図、第39図)〉第27図のステップ
S30において、レジスタの値が“4”の場合は、第3
9図に示したルーチンがコールされる。このルーチンは
第10図に示したケース4を処理するルーチンである。 ステップ5101では(2i−1,2j’−1)を水平
ベクトル102の始点として登録し、このベクトルが流
出する先のベクトルは、ステップ5103で登録する垂
直ベクトルであるとして、このときの垂直ベクトルカウ
ンタ240の値を第23図の流出ベクトル項目番号欄に
セットする。ステップ5102では、ステップ5101
で登録したベクトルへ流入してくるベクトルが未定であ
るとして、第31図に示したテーブル311にカウンタ
230の値を登録して。このテーブル311を更新する
。ステップ5103では、(2i+1.2j−1)を垂
直ベクトル103(第10図)の始点として定義し、こ
のベクトルに流入してくるベクトルはステップ5101
で登録した水平ベクトル102であるとして、第24図
に示すテーブルの流入ベクトル項目番号欄に水平ベクト
ルカウンタ230の値をセットする。ステップ5IO4
では、ステップ5103で登録した垂直ベクトル103
が流出するベクトルが未定であるとして第34図のカウ
ンタ340で指示されたテーブル341の欄に垂直ベク
トルカウンタ240の値をセットする0次に、ステップ
5105で、水平ベクトルカウンタ230及び垂直ベク
トルカウンタ240をそれぞれ+1して、元の処理に戻
る。 くケース5の説明〉 第27図のステップS30において、レジスタのが“5
”の場合は、第40図で示されたルーチンをコールする
。この第40図で示されたルーチンは、第11図で示す
状態の場合にコールされ、何もせずにそのままリターン
する。 くケース6の説明(第12図、第23.24図、第31
〜第34図、第41図、第42図)〉第27図のステッ
プS30において、レジスタの値が6”の場合は、第4
1図のフローチャートで示されたルーチンをコールする
。これは、第12図で示すケース6の処理である。 まずステップ5111で、第23図のカウンタ230で
指示された水平ベクトル122(第12図)の始点を(
2i−1,2j−1)として登録する。次にステップ5
112で、ステップ5l11で登録した水平ベクトル1
22は、その流出光ベクトルが未定であるとして、第3
2図に示す流出光ベクトル未定水平ベクトルテーブル3
21に、第38図のステップS94と同様にして登録す
る。ステップ5113では、ステップ5illで登録し
た水平ベクトル122に流入してくる元のベクトルが未
定であるとして、第39図のステップ5102と同様に
、第31図に示す流入元ベクトル未定水平ベクトルテー
ブル311に登録する。次にステップSl 14では、
水平ベクトルカウンタ230を+1する。ステップ51
15では(B)の位置の画素が白画素か黒画素かを判断
し、白画素である場合は、第12図の120に示す如く
、(2i+1,2j+1)を垂直ベクトル124の始点
として登録し、黒画素の場合は第12図の121に示す
如(、そのまま処理を終える。 このステップ5115の処理の詳細は第42図に示す。 ステップ5121では画素Bが白画素か黒画素かを判断
し、黒画素ならそのままリターンする。 白画素の場合はステップ5122へ進む、ステップ51
22では(2i+1,2J+1)を垂直ベクトル124
の始点として登録する。ステップ5123では、第39
図のステップ5104と同様に、この垂直ベクトル12
4が流圧する先のベクトルが未定の垂直ベクトルである
として、第34図のテーブル341に登録する。更にス
テップ5124では、前述した第36図のステップS7
2と同様に、ステップ5122で登録した垂直ベクトル
124に流入してくる元のベクトルが未定であるとして
、第33図のテーブル331にセットする。ステップ5
125では、垂直ベクトルカウンタ240を+1して元
のルーチンに戻る。 (以下余白) くケース7の説明 (第13図、第38図、第42図、
第43図)〉 第27図のステップS30において、レジスタの値が“
7″の場合は、第43図のフローチャートで示すルーチ
ンが実行される。このルーチンは第13図で示されるケ
ース7の処理を行なう。 ステップ5131では、第38図のステップS85と同
様に、画素Aの状態に応じた処理を行なう0次に、ステ
ップ5132では、第40図のステップ5116と同様
に、画素Bの状態に応じた処理を行なって元のルーチン
にリターンする。 第13図において、130は(、A )の位置の画素及
び(B)の位置の画素が共に白画素の場合、131は(
A)のみ黒画素、132は(B)のみ黒画素、モして1
33は共に黒画素である場合を示している。 くケース8の説明(第14図、第44〜46図)〉第2
7図のステップS30において、レジスタの値が“8”
の場合は第44図で示す処理ルーチンをコールする。こ
のルーチンは、第14図で示されるケース8の処理を行
なう。 ステップ5133では、垂直ベクトルカウンタ240で
指示された垂直ベクトル141(第14図)の始点を(
2i+1,2j−1)として第24図のテーブルに登録
し、このベクトルが流出する先の水平ベクトルは、後続
の8135で登録するベクトルであるとして、カウンタ
230の値を流出ベクトル項目番号欄に登録する。冬テ
ップ5134では、ステップ5133で登録した垂直ベ
クトル141に流入して(る元の水平ベクトルを第45
図に示す手順で、第32図に示すテーブル321を用い
て求める。 第45図の処理は、先に説明した第30図及び第35図
に示した処理と全く同様な手順で、ステップ5133で
登録した垂直ベクトル141に流入してくる元の水平ベ
クトルを登録し、この水平ベクトルが流出する先の垂直
ベクトルをステップ5133で登録した垂直ベクトル1
41であると登録する(ステップ5145)、そして、
ステップ5146でテーブル321の隙間を埋め、ステ
ツブ5147でカウンタ320を−1して、第32図に
示すテーブル321を更新する。 第44図のステップ5135では、水平ベクトルカウン
タ230で指示される水平ベクトル142(第14図)
の始点を(2i+1.2j+1)として登録し、かつ、
このベクトル142に流入する元の垂直ベクトルは、ス
テップ5133で登録した垂直ベクトル141であると
登録する。ステップ5136では、ステップ5135で
登録した水平ベクトル142が流出する先の垂直ベクト
ルを第46図に示す手順に従って、第33図に示すテー
ブル331を用いて求める。 第46図の処理は、先に説明した第30図、第35図及
び第45図に示した処理と全く同様な手順で、第44図
のステップ5135で登録した水平ベクトル142が流
出する先の垂直ベクトルを登録し、この垂直ベクトルに
流入する元のベクトルは5135で登録した水平ベクト
ル142であると登録して(第46図のステップ515
4)、ステップ5155,5156で第33図に示すテ
ーブル331を更新するものである。 再び第44図に戻り、ステップ5137で水平ベクトル
カウンタ230及び垂直ベクトルカウンタ240を共に
+1してリターンする。 くケース9の説明(第15図、第47図)〉第14区の
ステップS30において、レジスタの値が“9”の場合
は第47図に示すルーチンがコールされ、このルーチン
は第15図に示すケース9を処理するものである。 まずステップ3161では、(2i+1.2j+1)を
水平ベクトル151(第15区)の始点として登録する
。次にステップ8162では、先に説明した第30図に
示した手順と同様にして、この水平ベクトル151に流
入する垂直ベクトルを第34図のテーブル341を用い
てサーチして登録する。また、このサーチされた垂直ベ
クトルが流出する水平ベクトルが、ステップ5161で
登録した水平ベクトルであると第24図に示すテーブル
に登録する。こうして第34図のテーブル341を更新
する。 ステップ8163では、先に説明した第46図に示した
手順と同様にして、ステップ8161で登録した水平ベ
クトル151が流出する先の垂直ベクトルを第33図に
示すテーブルを用いて探し出して登録し、この垂直ベク
トルに流入する元のベクトルが8161で登録した水平
ベクトル151であると登録して、第33図に示すテー
ブル331を更新する。 ステップ8164では、水平ベクトルカウンタ230を
+−1し、ステップ5165では、(’D)の位置の画
素が白画素か黒画素かを判断し、白画素である場合は、
第15図の152で示すように、(2i−1,2j−1
)を垂直ベクトル154の始点として登録し、黒画素の
場合はそのまま処理を終える(第15図の153)。 ステップ8165の処理(ケースD)の内容を第48図
に示す。 ステップ5171では、(D)の位置が白画素か黒画素
かを判断し、黒画素ならそのままリターンする。白画素
の場合はステップ5172に進み、(2i−1,2j−
1)を垂直ベクトル154の始点として登録する。次に
ステップ5173に進み、前述した第45図の処理を行
なう。即ち、ステップ5172で登録した垂直ベクトル
154に流入してくる元の水平ベクトルを登録し、この
水平ベクトルが流入する先の垂直ベクトルがステップ5
172で登録した垂直ベクトル154であると登録して
、第32図に示すテーブル321を更新するものである
。 次にステップ5174では、先に説明した第35図に示
す処理を行なう、即ち、ステップ5172で登録した垂
直ベクトル154が流出する先の水平ベクトルを登録し
、この水平ベクトルに流入して(る元のベクトルは、ス
テップ5172で登録した垂直ベクトル154であると
登録して、第31図に示すテーブル311を更新する。 ステップ5175では、垂直ベクトルカウンタ240を
+1してリターンする。 くケース10の処理〉 第27図のステップS30において、レジスタの値が”
10”の場合は第49図に示すルーチンがコールされ、
このルーチンは第16図に示すケース10を処理するも
のである。第49図のルーチンはコールされるとそのま
まリターンする。 くケース11の説明〉 第27図のステップS30において、レジスタの値が1
1°の場合は、第50図に示すルーチンがコールされ、
このルーチンは第17図に示すケース11を処理するも
のである。 まずステップ8176では、ステップ8165と同様に
(D)の位置の画素の状態に応じて、先に説明した第4
8図のフローチャートで示される処理を行なう。次にス
テップ5177では、ステップS85及び5131と同
様に、(A)の位置の画素の状態に応じて、先に説明し
た第38図で示される処理を行なう、第17図の(D)
の位置の画素及び(A)の位置の画素が共に白画素の場
合を170で示し、(A)のみが黒画素の場合を171
で、(D)のみが黒画素の場合を172、(A)(D)
が共に黒画素の場合の処理結果な173で示す。 くケース12の説明(第18図、第23図、第24図、
第51図、第52図)〉 第27図のステップS30において、レジスタの値が“
12″の場合は、第51図に示すルーチンがコールされ
、このルーチンは第18図に示すケース12の状態を処
理するものである。 ステップ5181では、第24図に示すテーブルに(2
i+1,2j−1)を垂直ベクトル181 (第18図
)の始点として登録する。ステップ5182では、先に
説明した第44図のステップ5134と同様に、第45
図に示す手順でステップ8181で登録した垂直ベクト
ル181に流入して(る元の水平ベクトル182をサー
チして登録する。また、この水平ベクトル182が流出
する先の垂直ベクトルが、ステップ5181で登録した
垂直ベクトル181であると登録して、第32図に示す
テーブル321を更新する。 次にステップ5183では、ステップ8181で登録し
た垂直ベクトル181の流出光のベクトルが未定である
旨を第34図で示すテーブル341に登録し、カウンタ
340の更新を行なう。次にステップ5184では、垂
直ベクトルカウンタ240を+1する。そしてステップ
8185ではCの位置の画素が白画素か黒画素かを判断
し、白画素である場合は、第18図の183で示す如く
(2i−1,2j+1)を水平ベクトル185の始点と
して登録し、黒画素である場合は第18図の184に示
す如くそのまま処理を終える。 このステップ8185の処理の内容を第52図のフロー
チャートで示す。 ステップ5191では、Cの位置が白画素か黒画素かを
判断し、黒画素ならそのままリターンする。白画素の場
合はステップ5192へ進み、ステップ5192では、
(2i−1,2j+1)を水平ベクトル185の始点と
して登録する0次にステップ5193では、先に説明し
た第46図のフローチャートで示された処理を行なって
、ステップ5192で登録した水平ベクトル185が流
出する先の垂直ベクトルを登録する。そして、この垂直
ベクトルに流入して(る元のベクトルが、ステップ51
92で登録した水平ベクトル185であると、第24図
のテーブルに登録して、第33図に示すテーブル331
を更新する。 ステップ5194では、ステップ5192で登録した水
平ベクトル185は、これに流入する元の垂直ベクトル
186が未定なベクトルである旨を第31図に示す流入
光ベクトル未定水平ベクトルテーブル311に登録し、
カウンタ310を+1する0次にステップ5195に進
み、水平ベクトルカウンタ230を+1して元の処理に
戻る。 くケース13の説明(第19図、第53図)〉第27図
のステップS30において、レジスタの値が13′″の
場合は、第53図に示すルーチンがコールされ、このル
ーチンは第19図のケース13を処理するものである。 ステップ8196では、第47図のステップS、165
及び第50図のステップ8176同様にDの位置の画素
の状態に応じて、先に説明した第48図のフローチャー
トで示される処理を行なう。 ステップ5197では、第51図のステップ8185と
同様に、Cの位置の画素の状態に応じて、先に説明した
第52図のフローチャートで示される処理を行なう、1
90はDの位置の画素及びCの位置の画素が共に白画素
の場合、191はCのみ黒画素、192はDのみ黒画素
、そして193はCとDが共に黒画素だった場合の処理
結果をそれぞれ示す。 くケース14の説明〉 第27図のステップS30において、レジスタの値が“
14”の場合は、第54図に示すルーチンがコールされ
、このルーチンは第20図で示すケース14の状態を処
理するものである。 第54図のステップ5201では、第51図のステップ
5185及び第53図のステップ5197と同様に、C
の位置の画素の状態に応じて、先に説明した第52図で
示されるケースCの処理を行なう0次にステップ520
2では、第41図のステップ5115及び第43図のス
テップS1’32と同様にBの位置の画素の状態に応じ
て、先に説明した第42図で示されるケースBの処理を
行なう。 201はCの位置の画素及びBの位置の画素が共に白画
素の場合1202はBのみ黒画素、203はCのみ黒画
素、204は共に黒画素の場合の処理結果をそれぞれ示
している。 くケース15の説明〉 第27図のステップS30において、レジスタの値が“
15”の場合は、第55図に示すルーチンがコールされ
、このルーチンは第21図で示すケース15の状態を処
理するものである。 ステップ5203では、前述のステップ5165等と同
様にDの位置の画素の状態に応じて、先に説明した第4
8図のフローチャートで示されるケースDの処理を行な
う。次にステップ5204では、前述のステップS85
,5L31等と同様にAの位置の画素の状態に応じて、
先に説明した第38図で示されるケースAの処理を行な
う、ステップ5205では前述のステップ8185等と
同様に、Cの位置の画素の状態に応じて、先に説明した
第52図で示されるケースCの処理を行なう。更に、ス
テップ8206では第41図のステップ5115等と同
様に、Bの位置の画素の状態に応じて先に説明した第4
2図で示されるケースBの処理を行なう。 これにより、第21図の210は、Dの位置の画素、A
の位置の画素、Cの位置の画素及びBの位置の画素が全
て白画素だった場合の処理結果を示し、211はAのみ
黒画素だった場合を、212はBのみが黒画素だった場
合を、213はCのみ黒画素だった場合を、214はD
のみ黒画素だった場合を、215はA及びBのみ黒画素
だった場合を、216はB及びCのみが黒画素だった場
合を、217はC及びDのみが黒画素だった場合を、2
18がD及びAのみ黒画素だった場合を、219はB及
びDのみ黒画素だった場合を、220はA及びCのみ黒
画素だった場合を、221はDのみ白画素だった場合を
、222はCのみ白画素だった場合を、223はBのみ
白画素だった場合を、224はAのみ白画素だった場合
を、そして225は全てが黒画素だった場合の処理結果
を示している。 以上説明した手順により、第22図のステップS1にお
けるベクトル列抽出の一連の処理が実行される。 〈アウトラインベクトル列の整列処理〉第56図は第2
2図のステップS2のアウトラインベクトル列整列の処
理の内容を示す。第56図のフローチャートは、第22
図のステップS1で作成された水平ベクトルに関するテ
ーブル群(第23図)、垂直ベクトルに関するテーブル
群(第24図)及び後述する第57図のテーブル群を用
いて動作する。 まずステップ5211で、第57面に示すテーブル群の
中で必要となる項目の初期化を行う、このステップ52
11の処理内容は、第58図のフローチャートで詳しく
示されている。 ステップ5231では、−時的に開始点の項目番号を保
持する変数t(開始点項目番号)をOにする0次にステ
ップ5232に進み、変数iを“0”にし、ステップ5
233では開始点候補テーブル571の第1番目の項目
を“1”にセットする。ステップ5234では変数iを
+1し、ステップ5235で変数iが水平ベクトルカウ
ンタ230の値より小さな値をもつか否かを判定し、小
さな値であればステップ5233へ戻る。 水平ベクトルカウンタ230の値より大きな値であれば
ステップ8236へ進み、ループ数カウンタ572を“
0”にリセットする。次にステップ5237で変数kを
“0”にリセットして、元のルーチンに戻る。これによ
り、開始点候補テーブル57100番目より(水平ベク
トルカウンタ230−1)番目の欄に全て“1”がセッ
トされる。 こうしてステップ5211を終了するとステップ521
2に進み、変数kが水平ベクトルカウンタ230の値の
2倍と等しいか否かを判断し、もし等しければそのまま
リターンするが、等しくなければステップ5213へ進
む。ステップ5213では、ループ数カウンタ572の
保持する僅のさす開始点項目番号テーブル574の項目
位置に変数tに保持されている値を格納する。5214
では、開始点項目番号テーブル574のループ数カウン
タ572の値で指示される項目に格納されている値(即
ち、ステップ5213で格納した値)を変数りにセット
する。そして、ステップ5215で変数jを0にリセッ
トする。 ここで、ループ数カウンタ572は現在整理中の輪郭の
番号を示し、開始点項目番号テーブル574のループカ
ウンタ572で指示される項目番号欄には、現在整理中
の輪郭の開始点のある項目番号が記憶されている。また
、変数には現在までの処理済み及び処理中の輪郭内で、
処理済み及び処理中の点の総数を保持し、jは現在整理
中の輪郭内で、処理済の点の個数を保持している。また
、変数りは次に処理する水平ベクトルの項目番号を示す
。 次にステップ8216に進み、開始点候補テーブル57
1の、変数りの値により指示される項目番号を“O”に
リセットする6次にステップ5217に進み、変数りの
値が指す水平ベクトル開始点のX座標(第23図)及び
水平ベクトル開始点X座標(第23図)の項目位置に保
持される値を、X座標テーブル575及びX座標テーブ
ル576内の変数にで指示される項目位置に格納する。 それとともに、変数りの値が指す水平ベクトル流出先ベ
クトル項目番号(第23図)の項目位置に保持されてい
る値を変数νにセットする。この変数νは、次に処理す
る垂直ベクトルの項目番号を示している。ステップ82
18では、変数k及び変数j′の保持する値をそれぞれ
+1する。 次にステップ5219に進み、変数νの値・が指す垂直
ベクトル開始点のX座標(第24図)及び垂直ベクトル
開始点のX座標(第24図)の項目位置に保持される値
をX座標テーブル575及びX座標テーブル576内の
変数にの値が指す項目位置に格納する。それとともに、
変数νの値が指す垂直ベクトル流出先ベクトル項目番号
(第24図)の項目位置に保持されている値を変数りに
セットする。これにより変数りには、この垂直ベクトル
より流出する水平ベクトルの項目番号がセットされる。 ステップ5220では、変数k及びjの保持する値をそ
れぞれ+1する。 次にステップ5221で、変数りの値が現在整理中の輪
郭の開始点の項目番号を保持する573(変数t)の値
と等しいか否かを判断し、等しくなければステップ82
16へ戻り、同一輪郭点の一点として次の点の処理を続
けるが、等しくなるとステップ5222へ進み、現在整
理中の輪郭の処理を終了する。ステップ5222では、
変数jの保持する値を現在処理中の輪−郭の中に含まれ
る点の数として各輪郭内に含まれる点数を保持する、点
数テーブル577の、ループ数カウンタ572で指示さ
れる項目位置に格納する。ステップ5223では、整理
中の輪郭の番号を示すループ数カウンタ572を+1す
る。 次にステップ5224では変数kが保持する既に処理し
た点の個数と、水平ベクトルカウンタ230に保持され
た水平ベクトルテーブル内に保−持される点の数の2倍
とが等しいか否かを判断し、等しい場合は処理を終えて
リターンする。等しくない場合はステップ5225に進
み、開始点項目番号573の値を+1する。そして、ス
テップ5226では、開始点項目番号573の値で指示
される開始点候補テーブル571の項目に保持されてい
る値が“1”か否かを判断し、“1”でなければステッ
プ5225へ戻り、再度開始点候補の探索を続ける。一
方、“1”であればステップ5213に戻り、次の輪郭
内の点の整理を開始する。 以上、第22図のステップS2の処理により、第23図
〜第25図に示したベクトルの開始点データは、第57
図に示すテーブルに各輪郭ループ毎に順に並んだ点の座
標列として整列される。 〈ベクトル列テーブルの圧力〉 次に第59区のフローチャートを参照して、第22図の
ステップS3のベクトル列テーブルファイルの出力処理
を説明する。 ステップS241では、変数kを“0”にリセットする
0次にステップ5242に進み、ディスクl10521
を介して、ディスク522上に出力ファイルをオーブン
する。ステップ5243では、ステップ5242でオー
ブンしたファイルにループ数カウンタ572に保持され
ている値を出力する。ステップ5244では、変数にの
値がループ数カウンタ572に保持する値と等しいか否
かを判定し、等しい場合はステップ5245へ進み、a
カフアイルをクローズして、元の処理に戻る。 一方、ステップ5244で等しくない場合はステップ8
246に進み、輪郭ループ内点数テーブル577の変数
にの値の指す項目位置に格納されている値をディスク5
22に出力する。ステップ5247では開始点項目番号
テーブル574内の変数にの値の指す項目位置に格納さ
れている値を変数mにセットする。ここで、kは現在出
力中の輪郭ループ番号を保持し、mは現在出力中の輪郭
ループ内の点列の開始点の格納される項目番号を保持し
ている0次にステップ8248ではkの値を+1し、ス
テップ5249では変数℃の値を“0”にリセットする
。この忍は、現在出力中の輪郭ループ内の出力済の点の
数を保持する変数である。 ステップ5250では、iの値が現在出力中の輪郭ルー
プ内の点の数と等しいか否かを判断し、等しければステ
ップ5244べ戻り、等しくなければステップ5251
へ進む、ステップ5251では、変数mの値が指すX座
欄テーブル575及びy!mテーブル576内の項目位
置に格納されている値を出力ファイル521に出力する
。次にステップ5252ではmの値を+1し、ステップ
5253では、℃の値を+1してステップ5250に戻
る。かくして、第57図に示されるテーブルに基づいて
、第25図に示される形式でディスク522に圧力して
、第22図のステップS3の処理を終了する。 以上説明した手順によれば、いわゆる4方向に連結した
輪郭線が抽出される。しかし、本発明はこれに限定され
るものでな(,8方向に連結する輪郭線を抽出する場合
にも適用できる。 く他の実施例〉 第1の実施例に於ける、ケース0.ケース1゜ケース2
.ケース3.ケース4.ケース6、ケース8.ケース9
.ケース12をそれぞれ第60図、第61図、第62図
、第63図、第64図、第65図、第66図、第67図
、第68図に示したケース00.ケース01.ケース0
2.ケース03、ケース04.ケース06.ケース08
.ケース09.ケース012の如くに、それぞれの状態
に於けるベクトルの始点の設定及び連結状態の設定を変
えることによって、実行可能である。 以、下、それぞれの処理の第69図〜第83図に示すフ
ローチャートに従って説明する。 第69図はケース00の処理を示すフローチャートで、
ステップ5261では、第60図の画素マトリクス60
1の■の位置の画素近傍の処理を行ない、その内容は第
70図のフローチャートで示される。この■の位置は、
前述の第1区における画素りの位置に対応している。 第70図のフローチャートにおいて、このDの位置の画
素が黒画素であれば、既にDと注目点の間のベクトルの
始点は、Dの位置の画素が注目点であった時の処理によ
り抽出されている。よってステップ5271ではf (
D)=1の場合は、そのまま何もせずにリターンする。 f (D)=Oの場合はステップ5272に進み、(2
i−1,2j−1)を水平ベクトル602(第60図)
の始点として、第23図のテーブルに登録する。ステッ
プ5273では、この水平ベクトルの流入光ベクトルが
未定であるして、第31図のテーブル311に登録し、
カウンタ310を更新する0次にステップ5274に進
み、この水平ベクトルの流出先のベクトルも未定である
として、第32図のテーブル321に登録し、カウンタ
320を更新する。そして最後に水平ベクトルカウンタ
230を+1して、元の処理に戻る。このようにしてス
テップ5261のケースeの処理を終える。 次にステップ8262に進み、第1図に示すCの位置の
画素近傍の処理を行なう。その内容は、第71図のフロ
ーチャートで示される。 ステップ8281では(2i−1,2j+1)を垂直ベ
クトル603(第60図)の始点として第24図に示す
テーブルに登録してステップ8282に進み、この垂直
ベクトルの流出先の水平ベクトルを探索して登録する。 次にステップ5283に進み、Cの位置が黒画素か否か
を判定し、白画素だった場合はステップ8288に進み
、ステップ8281で登録した垂直ベクトル603は流
入光ベクトルが未定のベクトルとして、第33図のテー
ブル331に登録して、ステップ5289で垂直カウン
タ240を+1してリターンする。 一方、ステップ8283でCの位置が黒画素の場合はス
テップ8284に進み、ステップ5281で登録した垂
直ベクトル603は流入光ベクトルが未定のベクトルと
して、第33図のテーブル331に登録する。次にステ
ップ8285で垂直ベクトルカウンタ240を+1し、
ステップ8286では(2i−1,2j+1)を、ステ
ップ8281で登録した垂直ベクトルとは異なる垂直ベ
クトル604(第60図)の開始点として登録する。次
にステップ5287に進み、ステップ8286で登録し
た垂直ベクトル604がベクトル流出先が未定なベクト
ルであるとして第34図に示すテーブル341に登録す
る。ステップ8288では、この垂直ベクトル604が
流入光が未定のベクトルであるとしてテーブル331に
登録し、ステップ8289では垂直ベクトルカウンタ2
40を+1してリターンする。これにより、ステップ8
262のケースCの処理を終了する。 ステップ8263は、第1図に示すBの位置の画素■近
傍の処理を行なう、その内容は、第72図のフローチャ
ートに示される。 ステップ5291では(2i+1,2j+1)を水平ベ
クトル605(第60図)の始点として第23図のテー
ブルに登録する0次に、ステップ5292にて、この水
平ベクトル605が流出する先の垂直ベクトルを探索し
て、第23図の流出ベクトル項目番号欄に登録する。ス
テップ5293ではBの位置が黒画素か否かを判定し、
白画素たった場合はステップ8298に進み、ステップ
5291で登録した水平ベクトル605は、流入光が未
定のベクトルとしてテーブル311に登録し、水平ベク
トルカウンタ230を+1してリターンする。 一方、Bの位置が黒画素だった場合はステップ5294
へ進む、ステップ5294では、ステップ5291で登
録した水平ベクトル605は、流入光ベクトルが未定の
ベクトルとしてテーブル311に登録し、カウンタ31
0を+1する。次にステップ5295に進み、水平ベク
トルカウンタ230を+1する0次に、ステップ829
6に進み、(2i+1.2j+1)をステップ5291
で登録した水平ベクトルとは異なる水平ベクトル606
(第60図)の開始点として第23図のテーブルに登録
する0次にステップ5297に進み、ステップ8296
で登録したベクトルは、流出先が未定のベクトルである
としてテーブル321にその水平ベクトルを登録し、カ
ウンタ320を更新する。そして、ステップ8298で
は、この水平ベクトルが流入光未定のベクトルであると
してテーブル311に登録し、ステップ5299では水
平ベクトルカウンタ230を+1してリターンする。 これにより、ステップ5263のケースbの処理を終え
る。 第69図のステップ8264では、第1図に示したAの
位置の画素■近傍の処理を行なう。その処理内容は第7
3図のフローチャートに示される。 ステップ5301ではAの位置が黒画素か否かを判断し
、白画素だった場合はステップ$302へ進み、(2i
+1,2j−1)を乗室ベクトル607(第60図)の
始点として登録し、ステップ5303へ進む。ステップ
5303では、ステップ5302で登録した垂直ベクト
ル607の流出先のベクトルを先に説明した第35図に
示した処理と同様に探索して登録する。但し、第35図
のS62における判定項の(2i−1)が、ここでは(
2i+1)となる点のみが異なり、他は第35図に示し
た処理と全く同様の処理手順である。 次にステップ5304に進み、ステップ5302で登録
した垂直ベクトル607の流入光のベクトルを前述の第
45図のフローチャートで示した処理を行うことにより
探索し登録する。ステップ5305では、垂直ベクトル
カウンタ240を+1してリターンする。 一方、ステップ5301において、Aの位置が黒画素素
であった場合は、既にAと注目点の間のベクトルの始点
はAの位置の画素が注目点であった時の処理にて抽出さ
れているため、ステップ8306で垂直ベクトルカウン
タ240の値を一旦退避させた後、ステップ8307〜
5310で、この時すでに登録されているAと注目点間
の乗室ベクトルで流出先が未定のものを探し出す。即ち
、ステップ5308ではテーブル341の項目(k−1
)の内容で与えられる値で指定される垂直ベクトルのX
座標が(2i+1)かを調べ、そうであればステップ5
310でテーブル341の項g (k−1)の欄の内容
をカウンタ240にセットする。そしてステップ531
1で、この垂直ベクトルの流8先の水平ベクトルを、前
述のステップ5303と全く同手順で探索・登録する。 ステップ8312〜5315では、この時既に登録され
ているAと注目点の間の垂直ベクトルで流入光が未定の
ものを探し出す。即ち、ステップ5313ではテーブル
331の項目(k−1)の内容で与えられる値で指定さ
れる垂直ベクトルのX座標が(2j−1)かどうかを調
べ、そうであればステップ5315に進み、テーブル3
31の項目(k−1)の欄の内容をカウンタ240にセ
ットする0次にステップ5316にて、この垂直ベクト
ルの流入光になる水平ベクトルを探索・登録する。ステ
ップ5317ではステップ8306で退避した垂直ベク
トルカウンタ240の値を再度設定して元の処理に戻る
。 こうして、第69図のステップ5264のケースaの処
理を終えてリターンすることにより、ケースOOの処理
を終了する。 第60図において、610はこれら4つの画素がいずれ
も白画素のときのベクトルを示し、611はaの位置の
画素のみが黒画素の時のベクトルを示す、以下同様に、
612はbの位置の画素のみが黒画素のとき、613は
Cの位置の画素がのみが黒画素である場合、614は画
素eのみが黒画素の場合を示す、その他については説明
を省略する。 第74図はケース01の処理を示すフローチャートであ
る。 まずステップ5321では、第61図の@の位置の画素
近傍の処理を行なう。その処理内容は前述の第71図の
ケースCと全く同様である。次にステップ5322に進
み、第61図の■の位置の近傍の処理を行う、その処理
内容は第75図のフローチャートで示される。 ステップ5351では、(2i+1.2.j+1)を水
平ベクトル615(第61図)の始点として登録し、ス
テップ5352ではこの水平ベクトル615が流出する
先の垂直ベクトルを探索して登録する。次にステップ5
353に進み、−Bの位置が黒画素か否かを判定し、白
画素の場合はステップ8358に進み、ステップ535
1で登録した水平ベクトル615の流入光のベクトルを
探索・登録し、ステップ5359で水平ベクトルカウン
タ230を+1して元のルーチンに戻る。 一方、ステップ5353でBの位置が白画素の場合はス
テップ5354へ進み、ステップ5351で登録した水
平ベクトル615は流入光が未定のベクトルとしてテー
ブル311に登録し、ステップ5355では水平ベクト
ルカウンタを+1する。次にステップ8356に進み、
(2i+1゜2j+1)をステップ5351で登録した
水平ベクトルとは異なる水平ベクトル616の開始点と
して、第23図のテーブルに登録する。次にステップ5
357に進み、ステップ8356で登録した水平ペクト
616ルは流出光が未定のベクトルであると、テーブル
321に登録する。そして、ステップ8358に進み、
ステップ8356で登録した水平ベクトル616の流入
光となる垂直ベクトルを探索・登録し、ステップ535
9で水平ベクトルカウンタ230を+1して元のルーチ
ンに戻る。 このようにして第74図のステップ5322を終了し、
元のルーチンに戻る。これにより、ケース01の処理を
終了する。第61図は画素■◎が一黒画素かどうかによ
るベクトルの発生状態を示している。 第76図はケース02の処理を示すフローチャートであ
る。 ステップ5331では、第62図の■の位置近傍の処理
(ケースe)を行ない、その内容は前述の第70図に示
す処理と全く同様である。次にステップ5332では、
第62図の◎の位置近傍の処理を行ない、その内容は前
述の第71図の処理(ケースC)と全く同様である。こ
のようにして、ケース02の処理を終了する。第62図
は画素◎■が黒画素かどうかによるベクトルの発生状態
を示している。 第77図はケース03の処理を示すフローチャートであ
る。 ステップ5341では、第63図の■の位置近傍の処理
を行ない、その内容は前述の第71図のフローチャート
で示す処理と全く同様である。次にステップ5342に
進み、第63図のAの位置近傍の処理を行ない、その内
容は前述の第38図の処理と全く同様である。こうして
、ケース03の処理が行われる。第63図は画素A@が
黒画素かどうかによるベクトルの発生状態を示している
。 第78図はケース04の処理を示すフローチャートであ
る。 ステップ8361では、第64図の■の位置近傍の処理
を行ない、その内容は前述の第70図のフローチャート
で示す処理と全く同様である。ステップ8362では、
第64図の■の位置の処理を行ない、その内容は第79
図のフローチャートで示す。 第79図のステップ5391では、Aの位置の画素が黒
画素か否かを判定する。白画素であればステップ539
2へ進み、(2i+1.2j−1)を垂直ベクトル64
0(第64図)の始点として登録する。次にステップ5
393に進み、ステップ5392で登録した垂直ベクト
ル640への流入光となる水平ベクトルを探索・登録す
る。そして、ステップ5394に進み、ステップ539
2で登録した垂直ベクトル640が流出する先の水平ベ
クトルが未定のものであるとテーブル341に登録し、
カウンタ340を更新する。次にステップ5395で垂
直ベクトルカウンタ240を+Iして元のルーチンに戻
る。 一方、ステップ5391でAの位置が黒画素であった場
合は、既にAと注目点の間のベクトルの始点は、Aの位
置の画素が注目点であった時の処理にて抽出されている
ため、ステップ8396で垂直ベクトルカウンタ240
の値を一旦退避させる。その後、ステップ5397〜5
400で、この時すでに登録されているAと注目点間の
垂直ベクトルで流入光が未定のものを探し出す、即ち、
ステップ5398でテーブル331の項目(k−1)の
内容で与えられる値で指定される水平ベクトルのy座標
が(2j+1)かを調べ、そうであればステップ540
0でテーブル3310項目(k−1)の櫂の内容をカウ
ンタ240にセットする。次にステップ5401でこの
ベクトルの流入光の水平ベクトルを前述のステップ53
93と全く同手順で探索・登録する。次にステップ54
02に進み、ステップ8396で一旦退避させた垂直ベ
クトルカウンタ240の値を再度、乗置ベクトルカウン
タ240にセットして元のルーチンに戻る。か(して第
78図のステップ8362の処理を終了し、リターンし
てケース04の処理を終える。第64図は画素■■が黒
画素かどうかによるベクトルの発生状態を示している。 第80図にケース06の処理を示す。ステップ5371
では、第65図の■の位置の処理を行ない、その内容は
前述第70図の処理(ケースe)と全(同様である。ス
テップ5372では、第65図のBの位置の処理を行な
い、その内容は前述第42図の処理(ケースB)と全く
同様である。 このようにしてステップ5372の処理を終了すると元
の処理に戻り、ケース06の処理を終了する。第65図
は画素B■が黒画素かどうかによるベクトルの発生状態
を示している。 第81図はケース08の処理を示すフローチャートであ
る。 ステップ5381では、第66図の■の位置の画素に対
する処理を行ない、その内容は前述第72図に示す処理
(ケースb)と同じである。ステップ8382で、第6
6図の■の位置の画素の処理を行ない、その内容は前述
第79図の処理と同じである。このようにして、ステッ
プ8382の処理(ケースa’)を終了すると、リター
ンしてケース08の処理を終了する。第66図は画素■
■が黒画素かどうかによるベクトルの発生状態を示して
いる。 第82図はケース09の処理を示すフローチャートであ
る。 まずステップ5411で、第67図のDの位置の画素の
処理(ケースD)を行ない、その内容は前述の第48図
のフローチャートに示す。次にステップ5412で、第
67図の■で示す位置の画素の処理を行ない、その内容
は前述第75図に示すフローチャートと同様である。こ
うしてステップ5412の処理(ケースb’)を終了す
ると、リターンしてケース09の処理を終える。第67
図は画素■Dが黒画素かどうかによるベクトルの発生状
態を示している。 第83区はケース012の処理を示すフローチャートで
ある。まずステップ5421では、第68図のCの位置
の処理(ケースC)を行ない、その内容は前述第52区
に示すフローチャートと同じである0次にステップ54
22で、第68図の■の位置の処理を行ない、その内容
は前述第79図のフローチャートに示す処理(ケースa
’)を行なう。こうしてステップ5422の処理を終了
するとリターンして、ケース012の処理を終了する。 第68図は画素■◎が黒画素かどうかによるベクトルの
発生状態を示している。 以上、説明した手順を行なえば、8方向に連結した輪郭
線の抽出がラスター走査により実行可である。 以上説明した全ての水平ベクトルを垂直ベクトルに、ま
た、全ての垂直ベクトルを水平ベクトルとして抽出する
様にしても、抽出される輪郭ループの回転方向が反対に
なるだけで同様に輪郭が抽出される。 また、4方向の輪郭線として抽出するか、或は8方向の
輪郭線として抽出するかは、外部からの指示によってC
PUが判断し、使い分けることができることは容易に理
解できる。 以上説明したように本実施例によれば、注目点の近傍の
8画素の状態に応じて、輪郭ベクトル列上のベクトルの
始点及び終了点の候補を抽$して保持し、かつ既に保持
されている候補との連結関係を判定することにより、ラ
スター走査を1回行なうだけで、画像中に含まれている
輪郭を抽出することができる。これにより、輪郭線の抽
出処理に要する画像メモリの容量を大幅に削減すること
ができ、かつ処理の重複により発生していた処理時間を
短縮できるという効果を有する。 加えて、ドツトの中心単位ではなく、ドツトの線単位に
輪郭を抽出することにより、1ドツト幅の線に対しても
有為な幅を有する輪郭線を抽出できるという効果を有す
る。
に説明する。 く第1の実施例〉 この実施例は、第1図に示すように、2個画像における
注目画素(101)と、その近傍の8個の画素の状態を
見て処理を進めるもので、注目画素をラスタ走査し、1
画素毎にずらしながら画像全体の処理を逐次行なってゆ
く。 第1図において、■は注目画素101であり、“O”及
び“2”で示された位置は、主走査方向に対し注目画素
101と同じ位置にあり、副走査方向のそれぞれ1ラス
タ前の画素(0)及び1ラスタ先の画素(2)を示す、
“l”及び“3”で示された位置は、注目画素101と
同一のラスタ上にあり、それぞれ1画素前の画素(3)
及び1画素先の画素(1)を示している。更に、“A”
及び“B”は、主走査方向に1画素先の位置にあり、そ
れぞれ1ラスタ前及びlラスタ先の位置にある画素を示
し、“C”及び“D′は主走査方向の1画素前の位置に
ある画素で、それぞれ1ラスタ先及び1ラスタ前の位置
にある画素を示す。 第5図は、本実施例の輪郭検出を行うハードウェア構成
例を示すブロック図である。 501は信号u!5oOを介して入力される画像データ
をやりとりするための入力側fml(インターフェース
)部であり、この信号線500よりラスタ走査形式で順
次2値画像データが入力されてくる。502はラッチで
、501より入力された画像データを、図示しない画素
同期クロックに同期して1画素づつ順次更新しながら保
持する0次の画素同期クロックにて、ラッチ502は次
の画素データを入力制御回路501より入力する。この
時、既に保持していた画素データは、その画素クロック
に同期してラッチ503にラッチされて、保持される。 同様にラッチ503に保持されていた画素データは、次
の画素同期クロックにて、ラッチ504に保持される。 505及び503はそれぞれ1ラスタ分の画素データを
保持するFIFO(ファーストイン・)アースドアウド
・メモリ)である。PIFO505は、ラッチ504の
出力を順次、画素同期クロックに同期して取り込み、l
ラスタ前のデータをラッチ507へ出力する。同様に、
PIF0506も、ラッチ509の出力を取り込み、ラ
ッチ510にlラスタ前の画素データを8カする。ラッ
チ507,508,509及びラッチ510,511.
512は共に前S己うッチ502,503゜504と全
く同様に動作する。 このようにして、ラッチ502,503,504.50
7,508,509,510,511及び512に記憶
された9個の画素は、第1図に示した9 (3X3)画
素よりなる領域の画素データを記憶していることになる
。即ち、これらラッチのデータは、それぞれ第1図の“
B”、“2”。 “C”、“1”、“■″、“3″、“A”、“0”、′
D”に対応している。 513.514は共にCPU519の入力ポートで、入
力ポート513は、ラッチ510,502.504,5
12のデータを、即ち、それぞれ第1図における“A”
、“B”、“C”1 “D”の位置のデータをCPU5
19に入力する。同様に、入力ポート514はラッチ5
11,507゜503.509,508のデータ、即ち
、“0”、“1”、“2”、“3”、′■”の位置のデ
ータとして入力する。 515は主走査方向の画素位置を示す主走査カウンタで
あり、図示しない副走査同期信号によりリセットされ、
画業同期信号によりカウントアツプする。516は副走
査方向の画素位置を示す副走査カウンタで、図示しない
ページ同期信号によりリセットされ、副走査同期信号に
よりカウントアツプされる。517は入出力制御用の入
出力ボートであり、大圧力制御回路501に対し、画素
データ入力の実行及び保留を指示する信号、及び入出力
制御回路501よりCPU519への画素データ更新を
知らせる信号等を保持する。521はハードディスク5
22の入出力制御装置である。入出力制御ボート517
、主走査カウンタ515、副走査カウンタ516、入力
ポート513.514、メモリ520、ディスクl10
521はバス518を介してCPU519に接続されて
いる。 こうして、CPU519は入出力制御ボート517を介
して、画素データの更新を行い、主走査カウンタ515
及び副走査カウンタ516を介して、注目画素の画素位
置(i、j)を知ることができる。また、入力ポート5
13及び514を介して、注目画素及びその近傍の8方
向の画素の状態を知ることができる。 このようにして注目画素の処理が終了すると、CPU5
19は入出力制御ボート517を介して9個のラッチに
記憶される画素データの更新を指示し、同時に画素デー
タの更新完了の信号をリセットする。入出力制御回路5
01は、この更新の指示を受けると、画素データの7更
新指示の信号をクリアするとともに、後段のラッチにラ
ッチされ゛る画素データを更新し、この更新が終了する
と入出力制御ボート517に、更新完了の信号を圧力す
る。 CPU519は、更新指示の出力後、入出力制御ボート
517より更新完了の信号が入力されるのを監視してい
る。この更新完了の信号が入力されると、新たに9個の
ラッチに記憶された画素データに関する処理を実行し、
以下同様にこれを繰り返すものである。また、入力制御
回路501は、画像領域の最終画素を注目画素として処
理し終った際に、大8力制御ボート517に終了信号を
出力する。 次に注目画素及びその近傍の8画素の状態に応じた、そ
れぞれの場合の処理を説明する。 注目画素が白画素である場合は、その処理を終了してラ
スタ走査を1画素分進め、注目画素位置を更新する。 注目画素が黒画素の場合は、近傍の画素の状態によって
以下の処理を行なう。第6図〜第21図に各状態におけ
る処理内容を示しである。 ここで第6図の画素マトリクス61において、“d”は
do not care ” 、即ち、“d″の表示の
ある位置の画素は白画素でも黒画素でも構わないことを
意味している。これは以下の図でも同様とする。また第
6図の画素マトリクス62において、○印は、横方向ベ
クトルの始点及び縦方向ベクトルの終点を表わしており
、Δ印は縦方向ベクトルの始点及び横方向ベクトルの終
点を表わしている。また第6図の62における実線矢印
は、始点及び終点共に定まった、矢印の向く方向の輪郭
ベクトルを表わし、第7図に示すような点線矢印は、始
点もしくは終点のいずれか一方のみが定まった、矢印の
向(方向の輪郭ベクトルを表わしている。これら、○、
△、実線矢印及び点線矢印の持つ意味も、以降の図にお
いても同様である。また・は黒画素を示し、白画素はそ
の位置を明示したい時のみ点線のO印で表言己し、それ
以外の時は表記していない。 これら輪郭ベクトルの始点・終点位置は、主走査方向及
び副走査方向共に、画素と画素の中間の位置にあるもの
とする。また、主走査方向及び副走査方向共に、画素の
ある位置は正整数で示され、画素位置を2次元の座標で
表現をする。例えば、第6図の注目画素63の位置が[
(3,7):第7ラスタの第3画素位置の意]であれば
、第6図の62で示された4本のベクトルはそれぞれ点
64 (2,5,6,5) 、点65 (3,5゜6.
5)、点66 (3,5,7,5) 、点67(2,5
,7,5)の4点を始点、終点とする互いに連続する4
本のベクトルとして表現される。 これらベクトルを(始点の座標、終点の座標)で表現す
るものとすると、第6図の4本のベクトルは。 [(2,5,6,5)、(3,5,6,5)][(3,
5,6,5)、(3,5,7,5)][(3,5,7,
5)、(2,5,7,5)][(2,5,7,5)、(
2,5,6,5)]でそれぞれ表現される。 従って、ここでは小数の表現を避けるために便宜上、以
降の画素位置を偶数のみで表現することにし、始点、終
点の位置を奇数の整数で表現することにする。即ち、m
画素xnll!i素の画像は、2mx2nの正の偶数(
整数)の座標表現で表わすものとする。これにより、上
述の第6図の例は、注目画素位置を(6,14)である
と表現し、それぞれ4つの終点、始点は(5,13)、
(7゜13)、(7,15)、(5,151となる。こ
れにより、第6図の4本のベクトルは、[(5,13)
、(7,13)] [(7,13)、(7,15)] [(7,15)、(5,15)] [(5,15)、(5,t3)] と表現されるものとする。 これ以降2値画像は、それぞれがm画素よりなるnラス
タで構成されるmxn画素(m、nは正の整数)でなる
ものとし、第j番目のラスタの第1番目の画素位置を(
2i、2j)(i、jは正の整数で、i5m、J≦n)
で表現するものとする。 く輸郭抽a処理の説明〉 第22図は実施例の装置のCPU519による輪郭抽出
処理の全体の流れを示すフローチャートである。 まずステップS1にて、2値画偉データからベクトル列
を抽出し、各ベクトルの始点の座標及びこのベクトルに
流入してくる(このベクトルの始点の座標が終点となっ
ている)ベクトル、流出してゆ((このベクトルの終点
の座標が始点となっている)ベクトルを、第23図及び
第24図に示すテーブル形式で出力する。 第23図は水平方向のベクトルを示す図、第24図は垂
直方向のベクトルを示す図である。 次にステップS2に進み、第23区及び第24図に示す
テーブルから流入及び流aベクトルの項目番号を辿るこ
とにより、第25図に示すような画像中の総輪郭線数、
各輪郭線毎の輪郭線の総点数、輪郭線中の各点のX座標
、X座標を記憶したテーブルを作成する。次にステップ
S3に進み、ディスクl10521を介して、このテー
ブル情報ファイル形式でディスク522にg己憶して、
−連の動作を終了する。 第26図は第22図のステップS1のベクトル列抽出処
理を示すフローチャートである。 まずステップSllでは、入力ポート514のビット4
(注目画素)を見ることにより、注目画素が白画素か黒
画素かを判定する。白画素の場合はステップS13へ進
み、黒画素の場合はステップS12へ進む。ステップS
12では、注目画素の周囲8画素の状態を見て、その状
態に応じた適当な処理ルーチンをコールする。 ステップS13では、前述の如く入出力制御ボート51
7を介して画素位置を更新を指示する。 そして、入出力制御ボート517より更新完了の信号を
入力するとステップS14に進み、入出力制御ボート5
17を介して、最終画素の処理が終了したか否かを判断
し、終了していなければステップSllへ戻り、次の注
目画素も同様に処理を行ない、終了していれば、元のル
ーチンにリターンする。 第27図は第26図のステップS12に示された周囲画
素の状態により実行される処理を示すフローチャートで
ある。 ステップS21において、CPU519のレジスタを“
0”にクリアする。次にステップS22に進み、第1図
の“0”で示された位置の画素の状態(以降、f(0)
で表現する)が黒画素(以降、“1”で表わす)であれ
ばステップS23へ進み、白画素(以降、“0”で表わ
す)であればステップS24へ進む。ステップS23で
は前記レジスタの内容に1を加える。 次にステップS24に進み、第1図の“1”の位置の画
素の状態が黒画素であれば(f (1) =1)ステッ
プS25へ進み、前記レジスタの内容に2を加える。f
(1)=OであればステップS26に進み、同様に第
1図の“2”の位置の画素面黒画素かどうかをみる。f
(2) =1 (黒画素であれば)であればステップ
S27へ進み、前記レジスタの内容に4を加える。 次にステップS28に進み、第1図の“3″の位置の画
素に注目し、f (3):1ならステップS29へ進み
、前記レジスタの内容に8を加えるが、そうでなければ
ステップS30へ進む。ステップS30では、前記レジ
スタの保持する値の処理番号のルーチンをコールする。 これにより、前記レジスタの内容は、第1図に示した“
0”、“l”、“2”、“3”の画素位置の各画素の状
態に応じて、0〜15の値を取り得る。これらは、その
値に応じてそれぞれ第6図の(ケース(case) O
) 、第7図の(ケース1)、第8図(ケース2)、第
9図(ケース3)、第10図(ケース4)、第11図(
ケース5)、第12図(ケース6)、第13図(ケース
7)、第14図(ケース8>、第15図(ケース−9)
、第16図(ケース10)、第17図−(ケース11)
、第1.8図(ケース12)、第19図(ケース13)
、第20図(ケース14)、第21図(ケース15、)
呻示されている。 5 −以下、各状態それ
ぞれの処理内容に関し詳述する。 第27図のステップS30において、レジスタの値が“
0”の場合は、第28図に示す処理がコールされる。第
28図は前述の第6図に示す状態(ケースO)を処理す
るルーチンである。以降、注目画素63の座標が(2i
、2j)として説明する。 くケースOの場合の処理説明 (第6図、第23図、第24図、第28図)〉第28図
のステップS31では(2i−1,2j−1)を水平ベ
クトルの始点として登録する。 即ち、第23図に示す水平ベクトルカウンタ230の指
し示す水平ベクトル始点(第6図の64)のX座標テー
ブルの欄(第23図の231)に(2i−1)を格納し
1、同じ(水平ベクトル始点y座標、テーブルの欄(第
23図の、232)に(2j−1)を格、納する。そし
て、この水平ベクトルに流入してくる元の垂直ベクトル
は、第24図の垂直ベクトルカウンタ240が、この時
点で指している垂直、ベクトルの始点座標テーブル内の
位置の次の位置に格納されるベクトルであり、また、こ
の水平ベクトルが流出していく先の垂直ベクトルは、こ
の時点で垂直ベクトルカウンタ240が指している垂直
ベクトルの始点座標テーブルの位置にある。 即ち、第23図に示す水平ベクトルの流入ベクトル項目
番号の欄において、水平ベクトルカウンタ230が指し
示す位置(第23図の例では233)に、垂直ベクトル
カウンタ240の値に1加えた値を格納する。また、水
平ベクトルの流8ベクトル項目番号の欄には、水平ベク
トルカウンタ230が指し示す位置(第23図の例では
234)に、垂直ベクトルカウンタ240の値を格納す
る。 次にステップS32では、同様に(2i+1゜2j−1
)を垂直ベクトルの始点(第6図の65)として登録す
る。この垂直ベクトルに流入する水平ベクトルはステッ
プS31で登録した水平ベクトルであり、この垂直ベク
トルが流出する水平ベクトルは、水平ベクトル始点座標
テーブルのステップ31で登録された水平ベクトルの次
の位置に格納される水平ベクトルであると登録する。 即ち、第24図を参照して説明すると、欄241には(
2i+1)が、欄242には(2j−1)が、更に欄2
43には、この時の水平ベクトルカウンタ230の値が
、欄243にはこの時の水平ベクトルカウンタ230の
値に+1した値が格納される。 次にステップS33に進み、水平ベクトルカウンタ23
0の内容を+1する。ステップS34では、(2i+1
,2j+1)を水平ベクトルの始点(第6図の67)座
標として登録し、この水平ベクトルに流入する垂直ベク
トルは、ステップS32で登録したベクトルであると登
録し、この水平ベクトルが流出する垂直ベクトルは、ス
テップS32で登録された垂直ベクトルの垂直ベクトル
始点座標テーブル内における次の位置に格納される垂直
ベクトル(第6図の点66と点64とを結ぶベクトル)
であると登録する。 ステップS35では、垂直ベクトルカウンタ240の内
容を+1し、ステップS36では、(2i−1,2J+
1)を垂直ベクトルの始点座標として登録し、この垂直
ベクトルに流入する水平ベクトルはステップS34で登
録された水平ベクトルであると登録し、この垂直ベクト
ルが流出する水平ベクトルは、ステップS31で登録し
た水平ベクトルであると登録する。こうして最後に、ス
テップS37で、水平ベクトルカウンタ230及び垂直
ベクトルカウンタ240を共に+1して処理を終了する
。 この処理結果は、第6図の62で示す如く、点64と点
65とを結ぶ水平ベクトルと、点67と点66とを結ぶ
水平ベクトルからなる2つの水平ベクトルと、点65と
点67、及び点66と点64とを結ぶ2つの垂直ベクト
ル合わせ4つのベクトルが順回した1つのループを作っ
ている状態として抽出する。 くケース1の説明 (第7図、第23図、第24図、第29図)〉第29図
は第27図のステップS30で、レジスタの保持する値
が1の場合にコールされるケース1の処理を示すフロー
チャートである。 まずステップS41では(2i+1,2j+1)を水平
ベクトルの始点として、第23図に示すテーブルの始点
座標のx、y座標に登録する。また、この水平ベクトル
が流出する垂直ベクトルの番号(欄234)は、後述す
るステップS43で登録される垂直ベクトルカウンタ2
40の値とする。次にステップS42に進み、ステップ
S41で登録した水平ベクトルに流入する垂直ベクトル
を、第34図に示す流出先が未定な垂直ベクトルテーブ
ル341から探し出して登録する。このステップS42
の処理の内容は、第30図のフローチャートで示してい
る。 ステップS51では、テーブル341に登録されている
流出先が未定の垂直ベクトルの数を保持する流aベクト
ル未定垂直ベクトルカウンタ340の値を変数kにセッ
トする。ステップS52では垂直ベクトル流出ベクトル
未決定項目番号テーブル341に登録されている項目番
号(k−1)の値が指し示す垂直ベクトルの始点のX座
標の欄が(2i+1)であるか否かを判定する。(21
+l)でなければ変数にの値(k)を1だけ減じて、再
びステップS52を実行する。ステップS52で始点の
X座標が(2i+1)であればステツブ854へ進む。 ステップS54ではテーブル341の項目番号が(k−
1)である垂直ベクトルが、前述したステップS41で
登録した水平ベクトルの流入光ベクトルであり、更にス
テップS41で登録した水平ベクトルが、この垂直ベク
トルの流出先ベクトルであることになる。従って、第2
3図の水平ベクトルカウンタ230で指示される水平ベ
クトルの流入ベクトル項目番号欄に、テーブル341の
項目番号が(k−1)である垂直ベクトル番号を、及び
第24図の垂直ベクトルの流出項目番号欄に、ステップ
S41における水平へり1ドルカウンタ230の値を格
納する。 ステップS55では、ステップS53.ステップS54
において、流出先が決定したベクトルを流出光未定ベク
トルテーブル341から消去し、そのテーブルの空いた
部分を詰める0次に、ステップS56で、流出ベクトル
未定垂直ベクトルカウンタ340の値を1減じ、垂直ベ
クトル流出テーブル未決定項目番号テーブル341に登
録されている流出先が未定の垂直ベクトルが1つ減った
旨更新して、元のルーチンに戻る。 このようにして、第29図のステップS42の処理が終
了してステップS43へ進む。ステップS43では(2
i−1,2j+1)を垂直ベクトルの始点として登録し
、この垂直ベクトルに注入してくる水平ベクトルは、ス
テップS41で登録した水平ベクトルとする。次に、ス
テップS44ではステップS43で登録した垂直ベクト
ルが流出する先の水平ベクトルを、第31図に示す流入
光ベクトル未定テーブル311より探し出して登録する
。このステップS44の処理内容は、第35図のフロー
チャートで示す。 これは前述した第30図に示した処理と全く同様にして
実行される。即ち、ステップS43で登録した垂直ベク
トルが流出する先のベクトルを第24図の流出ベクトル
項目欄に登録し、この垂直ベクトルへ流出する水平ベク
トルの流入光ベクトル項目番号欄に、垂直ベクトルカウ
ンタ240の値をセットして、この垂直ベクトルである
と登録する。これにより、第31図に示すテーブル31
1を更新する。 次にステップS45では、水平ベクトルカウンタ230
を+1し、ステップS46で、垂直ベクトルカウンタ2
40を+1して、元の処理に戻る。 くケース2の処理説明 (第8図、第23図、第24図、第33図、第36図)
〉第27図のステップS30において、レジスタの保持
する値が2″の場合は、第36図に示す処理が実行され
る。 第36図に示す処理は、第8図に示す状態を処理するル
ーチンである。 まず、ステップS71で、第24図の垂直ベクトルカウ
ンタ240が示す垂直ベクトルの始点を(2i−1,2
J+1)として登録し、この垂直ベクトルが流出する先
の水平ベクトルを、ステップS73で登録される水平ベ
クトルとする。ステップS72では、ステップS71で
、登録した垂直ベクトルが、それに流入してくる水平ベ
クトルが未定であるベクトルとして、第33図に示す流
入ベクトル未定垂直ベクトルテーブル331の既使用領
域のすぐ隣の未使用領域に登録し、流入光ベクトル未定
垂直ベクトルカウンタ330を+1する。次にステップ
S73に進み、第23図に示すテーブルのカウンタ23
0で示される欄の水平ベクトルの始点を(2i−1,2
j−1)として登録し、このテーブルの流入光垂直ベク
トルを、ステップS71で登録した垂直ベクトルとして
登録する。 ステップS74では、ステップS73で登録した水平ベ
クトルが流入してゆく先の垂直ベクトルが未定であるベ
クトルとして、第32図に示す流出ベクトル未定水平ベ
クトルテーブル321の既使用領域のすぐ隣の未使用領
域に登録し、流出先ベクトル未定水平ベクトルカウンタ
320を+1する。ステップS75では、水平ベクトル
カウンタ230及び垂直ベクトルカウンタ240を共に
+Iして元の処理に戻る。 くケース3の説明 (第9図、第23.24図、第37図)〉第27図のス
テップS30において、レジスタの値が“3”の場合は
第37図に示す処理が実行される。これは第9区に示す
状態を処理するルーチンである。 ステップS81では(2i−1,2J+1)を垂直ベク
トル91(第9図)の始点として登録する。次にステッ
プS82に進み、前述のステップS44と同様にして、
ステップS81で登録した垂直ベクトルが流出する先の
水平ベクトルを求める。次にステップS83で、カウン
タ330が指示するの指示するテーブル331に垂直ベ
クトルカウンタ240の値をセットして、カウンタ33
0の値を+1する。次にステップS85で垂直ベクトル
カウンタ240の内容を+1し、ステップS85でケー
スAの処理を行う。この処理は第38図のフローチャー
トで示されている。 第38図のフローチャートを説明すると、ステップS9
1で第9図の画素Aが白“0″かどうかを調べ、白でな
ければ何もせずに処理を終了する。これは第9図の93
で示されている。 画素Aが白であればステップS92に進み、水平ベクト
ル94(第9図)の始点を(2i+1゜2j−1)とす
る。次にステップS93で、この水平ベクトルに流入す
る垂直ベクトルをサーチする。次にステップS94に進
み、この水平ベクトルの流出ベクトルが未定であるとし
て、この水平ベクトルの番号をテーブル321にセット
する。 そして、ステップS95で水平ベクトルカウンタ230
を+1して、処理を終了する。 〈ケース4の説明 (第10図、第23図、第24図、
第31図〜第34図、第39図)〉第27図のステップ
S30において、レジスタの値が“4”の場合は、第3
9図に示したルーチンがコールされる。このルーチンは
第10図に示したケース4を処理するルーチンである。 ステップ5101では(2i−1,2j’−1)を水平
ベクトル102の始点として登録し、このベクトルが流
出する先のベクトルは、ステップ5103で登録する垂
直ベクトルであるとして、このときの垂直ベクトルカウ
ンタ240の値を第23図の流出ベクトル項目番号欄に
セットする。ステップ5102では、ステップ5101
で登録したベクトルへ流入してくるベクトルが未定であ
るとして、第31図に示したテーブル311にカウンタ
230の値を登録して。このテーブル311を更新する
。ステップ5103では、(2i+1.2j−1)を垂
直ベクトル103(第10図)の始点として定義し、こ
のベクトルに流入してくるベクトルはステップ5101
で登録した水平ベクトル102であるとして、第24図
に示すテーブルの流入ベクトル項目番号欄に水平ベクト
ルカウンタ230の値をセットする。ステップ5IO4
では、ステップ5103で登録した垂直ベクトル103
が流出するベクトルが未定であるとして第34図のカウ
ンタ340で指示されたテーブル341の欄に垂直ベク
トルカウンタ240の値をセットする0次に、ステップ
5105で、水平ベクトルカウンタ230及び垂直ベク
トルカウンタ240をそれぞれ+1して、元の処理に戻
る。 くケース5の説明〉 第27図のステップS30において、レジスタのが“5
”の場合は、第40図で示されたルーチンをコールする
。この第40図で示されたルーチンは、第11図で示す
状態の場合にコールされ、何もせずにそのままリターン
する。 くケース6の説明(第12図、第23.24図、第31
〜第34図、第41図、第42図)〉第27図のステッ
プS30において、レジスタの値が6”の場合は、第4
1図のフローチャートで示されたルーチンをコールする
。これは、第12図で示すケース6の処理である。 まずステップ5111で、第23図のカウンタ230で
指示された水平ベクトル122(第12図)の始点を(
2i−1,2j−1)として登録する。次にステップ5
112で、ステップ5l11で登録した水平ベクトル1
22は、その流出光ベクトルが未定であるとして、第3
2図に示す流出光ベクトル未定水平ベクトルテーブル3
21に、第38図のステップS94と同様にして登録す
る。ステップ5113では、ステップ5illで登録し
た水平ベクトル122に流入してくる元のベクトルが未
定であるとして、第39図のステップ5102と同様に
、第31図に示す流入元ベクトル未定水平ベクトルテー
ブル311に登録する。次にステップSl 14では、
水平ベクトルカウンタ230を+1する。ステップ51
15では(B)の位置の画素が白画素か黒画素かを判断
し、白画素である場合は、第12図の120に示す如く
、(2i+1,2j+1)を垂直ベクトル124の始点
として登録し、黒画素の場合は第12図の121に示す
如(、そのまま処理を終える。 このステップ5115の処理の詳細は第42図に示す。 ステップ5121では画素Bが白画素か黒画素かを判断
し、黒画素ならそのままリターンする。 白画素の場合はステップ5122へ進む、ステップ51
22では(2i+1,2J+1)を垂直ベクトル124
の始点として登録する。ステップ5123では、第39
図のステップ5104と同様に、この垂直ベクトル12
4が流圧する先のベクトルが未定の垂直ベクトルである
として、第34図のテーブル341に登録する。更にス
テップ5124では、前述した第36図のステップS7
2と同様に、ステップ5122で登録した垂直ベクトル
124に流入してくる元のベクトルが未定であるとして
、第33図のテーブル331にセットする。ステップ5
125では、垂直ベクトルカウンタ240を+1して元
のルーチンに戻る。 (以下余白) くケース7の説明 (第13図、第38図、第42図、
第43図)〉 第27図のステップS30において、レジスタの値が“
7″の場合は、第43図のフローチャートで示すルーチ
ンが実行される。このルーチンは第13図で示されるケ
ース7の処理を行なう。 ステップ5131では、第38図のステップS85と同
様に、画素Aの状態に応じた処理を行なう0次に、ステ
ップ5132では、第40図のステップ5116と同様
に、画素Bの状態に応じた処理を行なって元のルーチン
にリターンする。 第13図において、130は(、A )の位置の画素及
び(B)の位置の画素が共に白画素の場合、131は(
A)のみ黒画素、132は(B)のみ黒画素、モして1
33は共に黒画素である場合を示している。 くケース8の説明(第14図、第44〜46図)〉第2
7図のステップS30において、レジスタの値が“8”
の場合は第44図で示す処理ルーチンをコールする。こ
のルーチンは、第14図で示されるケース8の処理を行
なう。 ステップ5133では、垂直ベクトルカウンタ240で
指示された垂直ベクトル141(第14図)の始点を(
2i+1,2j−1)として第24図のテーブルに登録
し、このベクトルが流出する先の水平ベクトルは、後続
の8135で登録するベクトルであるとして、カウンタ
230の値を流出ベクトル項目番号欄に登録する。冬テ
ップ5134では、ステップ5133で登録した垂直ベ
クトル141に流入して(る元の水平ベクトルを第45
図に示す手順で、第32図に示すテーブル321を用い
て求める。 第45図の処理は、先に説明した第30図及び第35図
に示した処理と全く同様な手順で、ステップ5133で
登録した垂直ベクトル141に流入してくる元の水平ベ
クトルを登録し、この水平ベクトルが流出する先の垂直
ベクトルをステップ5133で登録した垂直ベクトル1
41であると登録する(ステップ5145)、そして、
ステップ5146でテーブル321の隙間を埋め、ステ
ツブ5147でカウンタ320を−1して、第32図に
示すテーブル321を更新する。 第44図のステップ5135では、水平ベクトルカウン
タ230で指示される水平ベクトル142(第14図)
の始点を(2i+1.2j+1)として登録し、かつ、
このベクトル142に流入する元の垂直ベクトルは、ス
テップ5133で登録した垂直ベクトル141であると
登録する。ステップ5136では、ステップ5135で
登録した水平ベクトル142が流出する先の垂直ベクト
ルを第46図に示す手順に従って、第33図に示すテー
ブル331を用いて求める。 第46図の処理は、先に説明した第30図、第35図及
び第45図に示した処理と全く同様な手順で、第44図
のステップ5135で登録した水平ベクトル142が流
出する先の垂直ベクトルを登録し、この垂直ベクトルに
流入する元のベクトルは5135で登録した水平ベクト
ル142であると登録して(第46図のステップ515
4)、ステップ5155,5156で第33図に示すテ
ーブル331を更新するものである。 再び第44図に戻り、ステップ5137で水平ベクトル
カウンタ230及び垂直ベクトルカウンタ240を共に
+1してリターンする。 くケース9の説明(第15図、第47図)〉第14区の
ステップS30において、レジスタの値が“9”の場合
は第47図に示すルーチンがコールされ、このルーチン
は第15図に示すケース9を処理するものである。 まずステップ3161では、(2i+1.2j+1)を
水平ベクトル151(第15区)の始点として登録する
。次にステップ8162では、先に説明した第30図に
示した手順と同様にして、この水平ベクトル151に流
入する垂直ベクトルを第34図のテーブル341を用い
てサーチして登録する。また、このサーチされた垂直ベ
クトルが流出する水平ベクトルが、ステップ5161で
登録した水平ベクトルであると第24図に示すテーブル
に登録する。こうして第34図のテーブル341を更新
する。 ステップ8163では、先に説明した第46図に示した
手順と同様にして、ステップ8161で登録した水平ベ
クトル151が流出する先の垂直ベクトルを第33図に
示すテーブルを用いて探し出して登録し、この垂直ベク
トルに流入する元のベクトルが8161で登録した水平
ベクトル151であると登録して、第33図に示すテー
ブル331を更新する。 ステップ8164では、水平ベクトルカウンタ230を
+−1し、ステップ5165では、(’D)の位置の画
素が白画素か黒画素かを判断し、白画素である場合は、
第15図の152で示すように、(2i−1,2j−1
)を垂直ベクトル154の始点として登録し、黒画素の
場合はそのまま処理を終える(第15図の153)。 ステップ8165の処理(ケースD)の内容を第48図
に示す。 ステップ5171では、(D)の位置が白画素か黒画素
かを判断し、黒画素ならそのままリターンする。白画素
の場合はステップ5172に進み、(2i−1,2j−
1)を垂直ベクトル154の始点として登録する。次に
ステップ5173に進み、前述した第45図の処理を行
なう。即ち、ステップ5172で登録した垂直ベクトル
154に流入してくる元の水平ベクトルを登録し、この
水平ベクトルが流入する先の垂直ベクトルがステップ5
172で登録した垂直ベクトル154であると登録して
、第32図に示すテーブル321を更新するものである
。 次にステップ5174では、先に説明した第35図に示
す処理を行なう、即ち、ステップ5172で登録した垂
直ベクトル154が流出する先の水平ベクトルを登録し
、この水平ベクトルに流入して(る元のベクトルは、ス
テップ5172で登録した垂直ベクトル154であると
登録して、第31図に示すテーブル311を更新する。 ステップ5175では、垂直ベクトルカウンタ240を
+1してリターンする。 くケース10の処理〉 第27図のステップS30において、レジスタの値が”
10”の場合は第49図に示すルーチンがコールされ、
このルーチンは第16図に示すケース10を処理するも
のである。第49図のルーチンはコールされるとそのま
まリターンする。 くケース11の説明〉 第27図のステップS30において、レジスタの値が1
1°の場合は、第50図に示すルーチンがコールされ、
このルーチンは第17図に示すケース11を処理するも
のである。 まずステップ8176では、ステップ8165と同様に
(D)の位置の画素の状態に応じて、先に説明した第4
8図のフローチャートで示される処理を行なう。次にス
テップ5177では、ステップS85及び5131と同
様に、(A)の位置の画素の状態に応じて、先に説明し
た第38図で示される処理を行なう、第17図の(D)
の位置の画素及び(A)の位置の画素が共に白画素の場
合を170で示し、(A)のみが黒画素の場合を171
で、(D)のみが黒画素の場合を172、(A)(D)
が共に黒画素の場合の処理結果な173で示す。 くケース12の説明(第18図、第23図、第24図、
第51図、第52図)〉 第27図のステップS30において、レジスタの値が“
12″の場合は、第51図に示すルーチンがコールされ
、このルーチンは第18図に示すケース12の状態を処
理するものである。 ステップ5181では、第24図に示すテーブルに(2
i+1,2j−1)を垂直ベクトル181 (第18図
)の始点として登録する。ステップ5182では、先に
説明した第44図のステップ5134と同様に、第45
図に示す手順でステップ8181で登録した垂直ベクト
ル181に流入して(る元の水平ベクトル182をサー
チして登録する。また、この水平ベクトル182が流出
する先の垂直ベクトルが、ステップ5181で登録した
垂直ベクトル181であると登録して、第32図に示す
テーブル321を更新する。 次にステップ5183では、ステップ8181で登録し
た垂直ベクトル181の流出光のベクトルが未定である
旨を第34図で示すテーブル341に登録し、カウンタ
340の更新を行なう。次にステップ5184では、垂
直ベクトルカウンタ240を+1する。そしてステップ
8185ではCの位置の画素が白画素か黒画素かを判断
し、白画素である場合は、第18図の183で示す如く
(2i−1,2j+1)を水平ベクトル185の始点と
して登録し、黒画素である場合は第18図の184に示
す如くそのまま処理を終える。 このステップ8185の処理の内容を第52図のフロー
チャートで示す。 ステップ5191では、Cの位置が白画素か黒画素かを
判断し、黒画素ならそのままリターンする。白画素の場
合はステップ5192へ進み、ステップ5192では、
(2i−1,2j+1)を水平ベクトル185の始点と
して登録する0次にステップ5193では、先に説明し
た第46図のフローチャートで示された処理を行なって
、ステップ5192で登録した水平ベクトル185が流
出する先の垂直ベクトルを登録する。そして、この垂直
ベクトルに流入して(る元のベクトルが、ステップ51
92で登録した水平ベクトル185であると、第24図
のテーブルに登録して、第33図に示すテーブル331
を更新する。 ステップ5194では、ステップ5192で登録した水
平ベクトル185は、これに流入する元の垂直ベクトル
186が未定なベクトルである旨を第31図に示す流入
光ベクトル未定水平ベクトルテーブル311に登録し、
カウンタ310を+1する0次にステップ5195に進
み、水平ベクトルカウンタ230を+1して元の処理に
戻る。 くケース13の説明(第19図、第53図)〉第27図
のステップS30において、レジスタの値が13′″の
場合は、第53図に示すルーチンがコールされ、このル
ーチンは第19図のケース13を処理するものである。 ステップ8196では、第47図のステップS、165
及び第50図のステップ8176同様にDの位置の画素
の状態に応じて、先に説明した第48図のフローチャー
トで示される処理を行なう。 ステップ5197では、第51図のステップ8185と
同様に、Cの位置の画素の状態に応じて、先に説明した
第52図のフローチャートで示される処理を行なう、1
90はDの位置の画素及びCの位置の画素が共に白画素
の場合、191はCのみ黒画素、192はDのみ黒画素
、そして193はCとDが共に黒画素だった場合の処理
結果をそれぞれ示す。 くケース14の説明〉 第27図のステップS30において、レジスタの値が“
14”の場合は、第54図に示すルーチンがコールされ
、このルーチンは第20図で示すケース14の状態を処
理するものである。 第54図のステップ5201では、第51図のステップ
5185及び第53図のステップ5197と同様に、C
の位置の画素の状態に応じて、先に説明した第52図で
示されるケースCの処理を行なう0次にステップ520
2では、第41図のステップ5115及び第43図のス
テップS1’32と同様にBの位置の画素の状態に応じ
て、先に説明した第42図で示されるケースBの処理を
行なう。 201はCの位置の画素及びBの位置の画素が共に白画
素の場合1202はBのみ黒画素、203はCのみ黒画
素、204は共に黒画素の場合の処理結果をそれぞれ示
している。 くケース15の説明〉 第27図のステップS30において、レジスタの値が“
15”の場合は、第55図に示すルーチンがコールされ
、このルーチンは第21図で示すケース15の状態を処
理するものである。 ステップ5203では、前述のステップ5165等と同
様にDの位置の画素の状態に応じて、先に説明した第4
8図のフローチャートで示されるケースDの処理を行な
う。次にステップ5204では、前述のステップS85
,5L31等と同様にAの位置の画素の状態に応じて、
先に説明した第38図で示されるケースAの処理を行な
う、ステップ5205では前述のステップ8185等と
同様に、Cの位置の画素の状態に応じて、先に説明した
第52図で示されるケースCの処理を行なう。更に、ス
テップ8206では第41図のステップ5115等と同
様に、Bの位置の画素の状態に応じて先に説明した第4
2図で示されるケースBの処理を行なう。 これにより、第21図の210は、Dの位置の画素、A
の位置の画素、Cの位置の画素及びBの位置の画素が全
て白画素だった場合の処理結果を示し、211はAのみ
黒画素だった場合を、212はBのみが黒画素だった場
合を、213はCのみ黒画素だった場合を、214はD
のみ黒画素だった場合を、215はA及びBのみ黒画素
だった場合を、216はB及びCのみが黒画素だった場
合を、217はC及びDのみが黒画素だった場合を、2
18がD及びAのみ黒画素だった場合を、219はB及
びDのみ黒画素だった場合を、220はA及びCのみ黒
画素だった場合を、221はDのみ白画素だった場合を
、222はCのみ白画素だった場合を、223はBのみ
白画素だった場合を、224はAのみ白画素だった場合
を、そして225は全てが黒画素だった場合の処理結果
を示している。 以上説明した手順により、第22図のステップS1にお
けるベクトル列抽出の一連の処理が実行される。 〈アウトラインベクトル列の整列処理〉第56図は第2
2図のステップS2のアウトラインベクトル列整列の処
理の内容を示す。第56図のフローチャートは、第22
図のステップS1で作成された水平ベクトルに関するテ
ーブル群(第23図)、垂直ベクトルに関するテーブル
群(第24図)及び後述する第57図のテーブル群を用
いて動作する。 まずステップ5211で、第57面に示すテーブル群の
中で必要となる項目の初期化を行う、このステップ52
11の処理内容は、第58図のフローチャートで詳しく
示されている。 ステップ5231では、−時的に開始点の項目番号を保
持する変数t(開始点項目番号)をOにする0次にステ
ップ5232に進み、変数iを“0”にし、ステップ5
233では開始点候補テーブル571の第1番目の項目
を“1”にセットする。ステップ5234では変数iを
+1し、ステップ5235で変数iが水平ベクトルカウ
ンタ230の値より小さな値をもつか否かを判定し、小
さな値であればステップ5233へ戻る。 水平ベクトルカウンタ230の値より大きな値であれば
ステップ8236へ進み、ループ数カウンタ572を“
0”にリセットする。次にステップ5237で変数kを
“0”にリセットして、元のルーチンに戻る。これによ
り、開始点候補テーブル57100番目より(水平ベク
トルカウンタ230−1)番目の欄に全て“1”がセッ
トされる。 こうしてステップ5211を終了するとステップ521
2に進み、変数kが水平ベクトルカウンタ230の値の
2倍と等しいか否かを判断し、もし等しければそのまま
リターンするが、等しくなければステップ5213へ進
む。ステップ5213では、ループ数カウンタ572の
保持する僅のさす開始点項目番号テーブル574の項目
位置に変数tに保持されている値を格納する。5214
では、開始点項目番号テーブル574のループ数カウン
タ572の値で指示される項目に格納されている値(即
ち、ステップ5213で格納した値)を変数りにセット
する。そして、ステップ5215で変数jを0にリセッ
トする。 ここで、ループ数カウンタ572は現在整理中の輪郭の
番号を示し、開始点項目番号テーブル574のループカ
ウンタ572で指示される項目番号欄には、現在整理中
の輪郭の開始点のある項目番号が記憶されている。また
、変数には現在までの処理済み及び処理中の輪郭内で、
処理済み及び処理中の点の総数を保持し、jは現在整理
中の輪郭内で、処理済の点の個数を保持している。また
、変数りは次に処理する水平ベクトルの項目番号を示す
。 次にステップ8216に進み、開始点候補テーブル57
1の、変数りの値により指示される項目番号を“O”に
リセットする6次にステップ5217に進み、変数りの
値が指す水平ベクトル開始点のX座標(第23図)及び
水平ベクトル開始点X座標(第23図)の項目位置に保
持される値を、X座標テーブル575及びX座標テーブ
ル576内の変数にで指示される項目位置に格納する。 それとともに、変数りの値が指す水平ベクトル流出先ベ
クトル項目番号(第23図)の項目位置に保持されてい
る値を変数νにセットする。この変数νは、次に処理す
る垂直ベクトルの項目番号を示している。ステップ82
18では、変数k及び変数j′の保持する値をそれぞれ
+1する。 次にステップ5219に進み、変数νの値・が指す垂直
ベクトル開始点のX座標(第24図)及び垂直ベクトル
開始点のX座標(第24図)の項目位置に保持される値
をX座標テーブル575及びX座標テーブル576内の
変数にの値が指す項目位置に格納する。それとともに、
変数νの値が指す垂直ベクトル流出先ベクトル項目番号
(第24図)の項目位置に保持されている値を変数りに
セットする。これにより変数りには、この垂直ベクトル
より流出する水平ベクトルの項目番号がセットされる。 ステップ5220では、変数k及びjの保持する値をそ
れぞれ+1する。 次にステップ5221で、変数りの値が現在整理中の輪
郭の開始点の項目番号を保持する573(変数t)の値
と等しいか否かを判断し、等しくなければステップ82
16へ戻り、同一輪郭点の一点として次の点の処理を続
けるが、等しくなるとステップ5222へ進み、現在整
理中の輪郭の処理を終了する。ステップ5222では、
変数jの保持する値を現在処理中の輪−郭の中に含まれ
る点の数として各輪郭内に含まれる点数を保持する、点
数テーブル577の、ループ数カウンタ572で指示さ
れる項目位置に格納する。ステップ5223では、整理
中の輪郭の番号を示すループ数カウンタ572を+1す
る。 次にステップ5224では変数kが保持する既に処理し
た点の個数と、水平ベクトルカウンタ230に保持され
た水平ベクトルテーブル内に保−持される点の数の2倍
とが等しいか否かを判断し、等しい場合は処理を終えて
リターンする。等しくない場合はステップ5225に進
み、開始点項目番号573の値を+1する。そして、ス
テップ5226では、開始点項目番号573の値で指示
される開始点候補テーブル571の項目に保持されてい
る値が“1”か否かを判断し、“1”でなければステッ
プ5225へ戻り、再度開始点候補の探索を続ける。一
方、“1”であればステップ5213に戻り、次の輪郭
内の点の整理を開始する。 以上、第22図のステップS2の処理により、第23図
〜第25図に示したベクトルの開始点データは、第57
図に示すテーブルに各輪郭ループ毎に順に並んだ点の座
標列として整列される。 〈ベクトル列テーブルの圧力〉 次に第59区のフローチャートを参照して、第22図の
ステップS3のベクトル列テーブルファイルの出力処理
を説明する。 ステップS241では、変数kを“0”にリセットする
0次にステップ5242に進み、ディスクl10521
を介して、ディスク522上に出力ファイルをオーブン
する。ステップ5243では、ステップ5242でオー
ブンしたファイルにループ数カウンタ572に保持され
ている値を出力する。ステップ5244では、変数にの
値がループ数カウンタ572に保持する値と等しいか否
かを判定し、等しい場合はステップ5245へ進み、a
カフアイルをクローズして、元の処理に戻る。 一方、ステップ5244で等しくない場合はステップ8
246に進み、輪郭ループ内点数テーブル577の変数
にの値の指す項目位置に格納されている値をディスク5
22に出力する。ステップ5247では開始点項目番号
テーブル574内の変数にの値の指す項目位置に格納さ
れている値を変数mにセットする。ここで、kは現在出
力中の輪郭ループ番号を保持し、mは現在出力中の輪郭
ループ内の点列の開始点の格納される項目番号を保持し
ている0次にステップ8248ではkの値を+1し、ス
テップ5249では変数℃の値を“0”にリセットする
。この忍は、現在出力中の輪郭ループ内の出力済の点の
数を保持する変数である。 ステップ5250では、iの値が現在出力中の輪郭ルー
プ内の点の数と等しいか否かを判断し、等しければステ
ップ5244べ戻り、等しくなければステップ5251
へ進む、ステップ5251では、変数mの値が指すX座
欄テーブル575及びy!mテーブル576内の項目位
置に格納されている値を出力ファイル521に出力する
。次にステップ5252ではmの値を+1し、ステップ
5253では、℃の値を+1してステップ5250に戻
る。かくして、第57図に示されるテーブルに基づいて
、第25図に示される形式でディスク522に圧力して
、第22図のステップS3の処理を終了する。 以上説明した手順によれば、いわゆる4方向に連結した
輪郭線が抽出される。しかし、本発明はこれに限定され
るものでな(,8方向に連結する輪郭線を抽出する場合
にも適用できる。 く他の実施例〉 第1の実施例に於ける、ケース0.ケース1゜ケース2
.ケース3.ケース4.ケース6、ケース8.ケース9
.ケース12をそれぞれ第60図、第61図、第62図
、第63図、第64図、第65図、第66図、第67図
、第68図に示したケース00.ケース01.ケース0
2.ケース03、ケース04.ケース06.ケース08
.ケース09.ケース012の如くに、それぞれの状態
に於けるベクトルの始点の設定及び連結状態の設定を変
えることによって、実行可能である。 以、下、それぞれの処理の第69図〜第83図に示すフ
ローチャートに従って説明する。 第69図はケース00の処理を示すフローチャートで、
ステップ5261では、第60図の画素マトリクス60
1の■の位置の画素近傍の処理を行ない、その内容は第
70図のフローチャートで示される。この■の位置は、
前述の第1区における画素りの位置に対応している。 第70図のフローチャートにおいて、このDの位置の画
素が黒画素であれば、既にDと注目点の間のベクトルの
始点は、Dの位置の画素が注目点であった時の処理によ
り抽出されている。よってステップ5271ではf (
D)=1の場合は、そのまま何もせずにリターンする。 f (D)=Oの場合はステップ5272に進み、(2
i−1,2j−1)を水平ベクトル602(第60図)
の始点として、第23図のテーブルに登録する。ステッ
プ5273では、この水平ベクトルの流入光ベクトルが
未定であるして、第31図のテーブル311に登録し、
カウンタ310を更新する0次にステップ5274に進
み、この水平ベクトルの流出先のベクトルも未定である
として、第32図のテーブル321に登録し、カウンタ
320を更新する。そして最後に水平ベクトルカウンタ
230を+1して、元の処理に戻る。このようにしてス
テップ5261のケースeの処理を終える。 次にステップ8262に進み、第1図に示すCの位置の
画素近傍の処理を行なう。その内容は、第71図のフロ
ーチャートで示される。 ステップ8281では(2i−1,2j+1)を垂直ベ
クトル603(第60図)の始点として第24図に示す
テーブルに登録してステップ8282に進み、この垂直
ベクトルの流出先の水平ベクトルを探索して登録する。 次にステップ5283に進み、Cの位置が黒画素か否か
を判定し、白画素だった場合はステップ8288に進み
、ステップ8281で登録した垂直ベクトル603は流
入光ベクトルが未定のベクトルとして、第33図のテー
ブル331に登録して、ステップ5289で垂直カウン
タ240を+1してリターンする。 一方、ステップ8283でCの位置が黒画素の場合はス
テップ8284に進み、ステップ5281で登録した垂
直ベクトル603は流入光ベクトルが未定のベクトルと
して、第33図のテーブル331に登録する。次にステ
ップ8285で垂直ベクトルカウンタ240を+1し、
ステップ8286では(2i−1,2j+1)を、ステ
ップ8281で登録した垂直ベクトルとは異なる垂直ベ
クトル604(第60図)の開始点として登録する。次
にステップ5287に進み、ステップ8286で登録し
た垂直ベクトル604がベクトル流出先が未定なベクト
ルであるとして第34図に示すテーブル341に登録す
る。ステップ8288では、この垂直ベクトル604が
流入光が未定のベクトルであるとしてテーブル331に
登録し、ステップ8289では垂直ベクトルカウンタ2
40を+1してリターンする。これにより、ステップ8
262のケースCの処理を終了する。 ステップ8263は、第1図に示すBの位置の画素■近
傍の処理を行なう、その内容は、第72図のフローチャ
ートに示される。 ステップ5291では(2i+1,2j+1)を水平ベ
クトル605(第60図)の始点として第23図のテー
ブルに登録する0次に、ステップ5292にて、この水
平ベクトル605が流出する先の垂直ベクトルを探索し
て、第23図の流出ベクトル項目番号欄に登録する。ス
テップ5293ではBの位置が黒画素か否かを判定し、
白画素たった場合はステップ8298に進み、ステップ
5291で登録した水平ベクトル605は、流入光が未
定のベクトルとしてテーブル311に登録し、水平ベク
トルカウンタ230を+1してリターンする。 一方、Bの位置が黒画素だった場合はステップ5294
へ進む、ステップ5294では、ステップ5291で登
録した水平ベクトル605は、流入光ベクトルが未定の
ベクトルとしてテーブル311に登録し、カウンタ31
0を+1する。次にステップ5295に進み、水平ベク
トルカウンタ230を+1する0次に、ステップ829
6に進み、(2i+1.2j+1)をステップ5291
で登録した水平ベクトルとは異なる水平ベクトル606
(第60図)の開始点として第23図のテーブルに登録
する0次にステップ5297に進み、ステップ8296
で登録したベクトルは、流出先が未定のベクトルである
としてテーブル321にその水平ベクトルを登録し、カ
ウンタ320を更新する。そして、ステップ8298で
は、この水平ベクトルが流入光未定のベクトルであると
してテーブル311に登録し、ステップ5299では水
平ベクトルカウンタ230を+1してリターンする。 これにより、ステップ5263のケースbの処理を終え
る。 第69図のステップ8264では、第1図に示したAの
位置の画素■近傍の処理を行なう。その処理内容は第7
3図のフローチャートに示される。 ステップ5301ではAの位置が黒画素か否かを判断し
、白画素だった場合はステップ$302へ進み、(2i
+1,2j−1)を乗室ベクトル607(第60図)の
始点として登録し、ステップ5303へ進む。ステップ
5303では、ステップ5302で登録した垂直ベクト
ル607の流出先のベクトルを先に説明した第35図に
示した処理と同様に探索して登録する。但し、第35図
のS62における判定項の(2i−1)が、ここでは(
2i+1)となる点のみが異なり、他は第35図に示し
た処理と全く同様の処理手順である。 次にステップ5304に進み、ステップ5302で登録
した垂直ベクトル607の流入光のベクトルを前述の第
45図のフローチャートで示した処理を行うことにより
探索し登録する。ステップ5305では、垂直ベクトル
カウンタ240を+1してリターンする。 一方、ステップ5301において、Aの位置が黒画素素
であった場合は、既にAと注目点の間のベクトルの始点
はAの位置の画素が注目点であった時の処理にて抽出さ
れているため、ステップ8306で垂直ベクトルカウン
タ240の値を一旦退避させた後、ステップ8307〜
5310で、この時すでに登録されているAと注目点間
の乗室ベクトルで流出先が未定のものを探し出す。即ち
、ステップ5308ではテーブル341の項目(k−1
)の内容で与えられる値で指定される垂直ベクトルのX
座標が(2i+1)かを調べ、そうであればステップ5
310でテーブル341の項g (k−1)の欄の内容
をカウンタ240にセットする。そしてステップ531
1で、この垂直ベクトルの流8先の水平ベクトルを、前
述のステップ5303と全く同手順で探索・登録する。 ステップ8312〜5315では、この時既に登録され
ているAと注目点の間の垂直ベクトルで流入光が未定の
ものを探し出す。即ち、ステップ5313ではテーブル
331の項目(k−1)の内容で与えられる値で指定さ
れる垂直ベクトルのX座標が(2j−1)かどうかを調
べ、そうであればステップ5315に進み、テーブル3
31の項目(k−1)の欄の内容をカウンタ240にセ
ットする0次にステップ5316にて、この垂直ベクト
ルの流入光になる水平ベクトルを探索・登録する。ステ
ップ5317ではステップ8306で退避した垂直ベク
トルカウンタ240の値を再度設定して元の処理に戻る
。 こうして、第69図のステップ5264のケースaの処
理を終えてリターンすることにより、ケースOOの処理
を終了する。 第60図において、610はこれら4つの画素がいずれ
も白画素のときのベクトルを示し、611はaの位置の
画素のみが黒画素の時のベクトルを示す、以下同様に、
612はbの位置の画素のみが黒画素のとき、613は
Cの位置の画素がのみが黒画素である場合、614は画
素eのみが黒画素の場合を示す、その他については説明
を省略する。 第74図はケース01の処理を示すフローチャートであ
る。 まずステップ5321では、第61図の@の位置の画素
近傍の処理を行なう。その処理内容は前述の第71図の
ケースCと全く同様である。次にステップ5322に進
み、第61図の■の位置の近傍の処理を行う、その処理
内容は第75図のフローチャートで示される。 ステップ5351では、(2i+1.2.j+1)を水
平ベクトル615(第61図)の始点として登録し、ス
テップ5352ではこの水平ベクトル615が流出する
先の垂直ベクトルを探索して登録する。次にステップ5
353に進み、−Bの位置が黒画素か否かを判定し、白
画素の場合はステップ8358に進み、ステップ535
1で登録した水平ベクトル615の流入光のベクトルを
探索・登録し、ステップ5359で水平ベクトルカウン
タ230を+1して元のルーチンに戻る。 一方、ステップ5353でBの位置が白画素の場合はス
テップ5354へ進み、ステップ5351で登録した水
平ベクトル615は流入光が未定のベクトルとしてテー
ブル311に登録し、ステップ5355では水平ベクト
ルカウンタを+1する。次にステップ8356に進み、
(2i+1゜2j+1)をステップ5351で登録した
水平ベクトルとは異なる水平ベクトル616の開始点と
して、第23図のテーブルに登録する。次にステップ5
357に進み、ステップ8356で登録した水平ペクト
616ルは流出光が未定のベクトルであると、テーブル
321に登録する。そして、ステップ8358に進み、
ステップ8356で登録した水平ベクトル616の流入
光となる垂直ベクトルを探索・登録し、ステップ535
9で水平ベクトルカウンタ230を+1して元のルーチ
ンに戻る。 このようにして第74図のステップ5322を終了し、
元のルーチンに戻る。これにより、ケース01の処理を
終了する。第61図は画素■◎が一黒画素かどうかによ
るベクトルの発生状態を示している。 第76図はケース02の処理を示すフローチャートであ
る。 ステップ5331では、第62図の■の位置近傍の処理
(ケースe)を行ない、その内容は前述の第70図に示
す処理と全く同様である。次にステップ5332では、
第62図の◎の位置近傍の処理を行ない、その内容は前
述の第71図の処理(ケースC)と全く同様である。こ
のようにして、ケース02の処理を終了する。第62図
は画素◎■が黒画素かどうかによるベクトルの発生状態
を示している。 第77図はケース03の処理を示すフローチャートであ
る。 ステップ5341では、第63図の■の位置近傍の処理
を行ない、その内容は前述の第71図のフローチャート
で示す処理と全く同様である。次にステップ5342に
進み、第63図のAの位置近傍の処理を行ない、その内
容は前述の第38図の処理と全く同様である。こうして
、ケース03の処理が行われる。第63図は画素A@が
黒画素かどうかによるベクトルの発生状態を示している
。 第78図はケース04の処理を示すフローチャートであ
る。 ステップ8361では、第64図の■の位置近傍の処理
を行ない、その内容は前述の第70図のフローチャート
で示す処理と全く同様である。ステップ8362では、
第64図の■の位置の処理を行ない、その内容は第79
図のフローチャートで示す。 第79図のステップ5391では、Aの位置の画素が黒
画素か否かを判定する。白画素であればステップ539
2へ進み、(2i+1.2j−1)を垂直ベクトル64
0(第64図)の始点として登録する。次にステップ5
393に進み、ステップ5392で登録した垂直ベクト
ル640への流入光となる水平ベクトルを探索・登録す
る。そして、ステップ5394に進み、ステップ539
2で登録した垂直ベクトル640が流出する先の水平ベ
クトルが未定のものであるとテーブル341に登録し、
カウンタ340を更新する。次にステップ5395で垂
直ベクトルカウンタ240を+Iして元のルーチンに戻
る。 一方、ステップ5391でAの位置が黒画素であった場
合は、既にAと注目点の間のベクトルの始点は、Aの位
置の画素が注目点であった時の処理にて抽出されている
ため、ステップ8396で垂直ベクトルカウンタ240
の値を一旦退避させる。その後、ステップ5397〜5
400で、この時すでに登録されているAと注目点間の
垂直ベクトルで流入光が未定のものを探し出す、即ち、
ステップ5398でテーブル331の項目(k−1)の
内容で与えられる値で指定される水平ベクトルのy座標
が(2j+1)かを調べ、そうであればステップ540
0でテーブル3310項目(k−1)の櫂の内容をカウ
ンタ240にセットする。次にステップ5401でこの
ベクトルの流入光の水平ベクトルを前述のステップ53
93と全く同手順で探索・登録する。次にステップ54
02に進み、ステップ8396で一旦退避させた垂直ベ
クトルカウンタ240の値を再度、乗置ベクトルカウン
タ240にセットして元のルーチンに戻る。か(して第
78図のステップ8362の処理を終了し、リターンし
てケース04の処理を終える。第64図は画素■■が黒
画素かどうかによるベクトルの発生状態を示している。 第80図にケース06の処理を示す。ステップ5371
では、第65図の■の位置の処理を行ない、その内容は
前述第70図の処理(ケースe)と全(同様である。ス
テップ5372では、第65図のBの位置の処理を行な
い、その内容は前述第42図の処理(ケースB)と全く
同様である。 このようにしてステップ5372の処理を終了すると元
の処理に戻り、ケース06の処理を終了する。第65図
は画素B■が黒画素かどうかによるベクトルの発生状態
を示している。 第81図はケース08の処理を示すフローチャートであ
る。 ステップ5381では、第66図の■の位置の画素に対
する処理を行ない、その内容は前述第72図に示す処理
(ケースb)と同じである。ステップ8382で、第6
6図の■の位置の画素の処理を行ない、その内容は前述
第79図の処理と同じである。このようにして、ステッ
プ8382の処理(ケースa’)を終了すると、リター
ンしてケース08の処理を終了する。第66図は画素■
■が黒画素かどうかによるベクトルの発生状態を示して
いる。 第82図はケース09の処理を示すフローチャートであ
る。 まずステップ5411で、第67図のDの位置の画素の
処理(ケースD)を行ない、その内容は前述の第48図
のフローチャートに示す。次にステップ5412で、第
67図の■で示す位置の画素の処理を行ない、その内容
は前述第75図に示すフローチャートと同様である。こ
うしてステップ5412の処理(ケースb’)を終了す
ると、リターンしてケース09の処理を終える。第67
図は画素■Dが黒画素かどうかによるベクトルの発生状
態を示している。 第83区はケース012の処理を示すフローチャートで
ある。まずステップ5421では、第68図のCの位置
の処理(ケースC)を行ない、その内容は前述第52区
に示すフローチャートと同じである0次にステップ54
22で、第68図の■の位置の処理を行ない、その内容
は前述第79図のフローチャートに示す処理(ケースa
’)を行なう。こうしてステップ5422の処理を終了
するとリターンして、ケース012の処理を終了する。 第68図は画素■◎が黒画素かどうかによるベクトルの
発生状態を示している。 以上、説明した手順を行なえば、8方向に連結した輪郭
線の抽出がラスター走査により実行可である。 以上説明した全ての水平ベクトルを垂直ベクトルに、ま
た、全ての垂直ベクトルを水平ベクトルとして抽出する
様にしても、抽出される輪郭ループの回転方向が反対に
なるだけで同様に輪郭が抽出される。 また、4方向の輪郭線として抽出するか、或は8方向の
輪郭線として抽出するかは、外部からの指示によってC
PUが判断し、使い分けることができることは容易に理
解できる。 以上説明したように本実施例によれば、注目点の近傍の
8画素の状態に応じて、輪郭ベクトル列上のベクトルの
始点及び終了点の候補を抽$して保持し、かつ既に保持
されている候補との連結関係を判定することにより、ラ
スター走査を1回行なうだけで、画像中に含まれている
輪郭を抽出することができる。これにより、輪郭線の抽
出処理に要する画像メモリの容量を大幅に削減すること
ができ、かつ処理の重複により発生していた処理時間を
短縮できるという効果を有する。 加えて、ドツトの中心単位ではなく、ドツトの線単位に
輪郭を抽出することにより、1ドツト幅の線に対しても
有為な幅を有する輪郭線を抽出できるという効果を有す
る。
以上説明したように本発明によれば、ラスタ走査に応じ
て移動する注目画素と、その近傍の画素の黒点の状態に
応じて輪郭ベクトルを抽出し、それらの接続状態を基に
輪郭線を形成するようにしたので、1回のラスタ走査だ
けで画像の全ての輪郭線を抽出することができる効果が
ある。 また本発明によれば、全画像データを配憶するメモリを
必要としないため、メモリの容量を少なくできる効果が
ある。
て移動する注目画素と、その近傍の画素の黒点の状態に
応じて輪郭ベクトルを抽出し、それらの接続状態を基に
輪郭線を形成するようにしたので、1回のラスタ走査だ
けで画像の全ての輪郭線を抽出することができる効果が
ある。 また本発明によれば、全画像データを配憶するメモリを
必要としないため、メモリの容量を少なくできる効果が
ある。
第1図は本実施例における注目画素とその近傍画素を示
す図、 第2図〜第4図は従来例を説明する図、第5図は本実施
例の輪郭抽出装置の概略構成を示す図、 第6図〜第21図は本実施例の輪郭抽出における注目画
素の近傍画素の状態に応じたベクトル発生例を示す図、 第22図は輪郭抽出処理の全体を示すフローチャート、 第23図は水平ベクトルの登録テーブルを示す図、 第24図は垂直ベクトルの登録テーブルを示した図、 第25図は輪郭線のデータ形式を示した図、第26図〜
第30図、第35図〜第55図はベクトル列の抽出処理
を示すフローチャート、第31図は流入ベクトルが未定
の水平ベクトルの登録テーブルを示す図、 第32図は流出ベクトルが未定の水平ベクトルの登録テ
ーブルを示す図、 第33図は流入ベクトルが未定の垂直ベクトルの登録テ
ーブルを示す図、 第34図は流出ベクトルが未定の垂直ベクトルの登録テ
ーブルを示す図、 第56図及び第58図はアウトラインベクトル列の整列
処理を示すフローチャート、 第57図は本実施例における開始点候補テーブルを説明
するための図、 第59図はベクトル列テーブルをファイルに出力する処
理を示すフローチャート、 第60図〜第68図は他の実施例の輪郭抽出における注
目画素の近傍画素の状態に応じたベクトル発生例を示す
図、そして 第69図〜第83図は本発明の第2の実施例の処理手順
を示すフローチャートである。 図中、230・・・水平ベクトルカウンタ、240・・
・垂直ベクトルカウンタ、310,320,330.3
40・・・カウンタ、311・・・流入ベクトル未定水
平ベクトルテーブル、321・・・流出ベクトル未定水
平ベクトルテーブル、331・・・流入ベクトル未定垂
直ベクトルテーブル、341−・・流出ベクトル未定垂
直ベクトルテーブル、501・・・入力制御回路、50
2〜5o4,507〜512・・・ラッチ、505,5
06−FIFo、513.514・・・入力ボート、5
15・・・主走査カウンタ、516・・・副走査カウン
タ、517・・・入出力制御ポート、519・・・CP
U、520・・・ワーキングメモリ、521・・・ディ
スクI10.522・・・ディスクである。 特許出願人 キャノン株式会社 、に、7−1 代理人 弁理士 大塚康徳(他1名)二二・ニー14
云[]ゝ・二ぞ′ニーシ;こ 基準点(0,0> / 第2図 第4図 第7図 第10図 第11図 第9 第22図 水平ベクトルカウンタ 第23図 垂直ベクトルカウンタ 第24図 第26図 第29図 第30図 第36図 第37図 第38図 第39図 第40図 第41図 第43図 第42図 第44図 ゛ 第45図 第46図 第47図 第48図 第49図 第50図 第51図 第52図 第53図 第54図 第55図 第58図 第62図 第63図 第64図 第66図 第67図 第68図 第69図 第70図 第74図 第76図 第77図 第78図 第80図 第81図 第82図 第83図
す図、 第2図〜第4図は従来例を説明する図、第5図は本実施
例の輪郭抽出装置の概略構成を示す図、 第6図〜第21図は本実施例の輪郭抽出における注目画
素の近傍画素の状態に応じたベクトル発生例を示す図、 第22図は輪郭抽出処理の全体を示すフローチャート、 第23図は水平ベクトルの登録テーブルを示す図、 第24図は垂直ベクトルの登録テーブルを示した図、 第25図は輪郭線のデータ形式を示した図、第26図〜
第30図、第35図〜第55図はベクトル列の抽出処理
を示すフローチャート、第31図は流入ベクトルが未定
の水平ベクトルの登録テーブルを示す図、 第32図は流出ベクトルが未定の水平ベクトルの登録テ
ーブルを示す図、 第33図は流入ベクトルが未定の垂直ベクトルの登録テ
ーブルを示す図、 第34図は流出ベクトルが未定の垂直ベクトルの登録テ
ーブルを示す図、 第56図及び第58図はアウトラインベクトル列の整列
処理を示すフローチャート、 第57図は本実施例における開始点候補テーブルを説明
するための図、 第59図はベクトル列テーブルをファイルに出力する処
理を示すフローチャート、 第60図〜第68図は他の実施例の輪郭抽出における注
目画素の近傍画素の状態に応じたベクトル発生例を示す
図、そして 第69図〜第83図は本発明の第2の実施例の処理手順
を示すフローチャートである。 図中、230・・・水平ベクトルカウンタ、240・・
・垂直ベクトルカウンタ、310,320,330.3
40・・・カウンタ、311・・・流入ベクトル未定水
平ベクトルテーブル、321・・・流出ベクトル未定水
平ベクトルテーブル、331・・・流入ベクトル未定垂
直ベクトルテーブル、341−・・流出ベクトル未定垂
直ベクトルテーブル、501・・・入力制御回路、50
2〜5o4,507〜512・・・ラッチ、505,5
06−FIFo、513.514・・・入力ボート、5
15・・・主走査カウンタ、516・・・副走査カウン
タ、517・・・入出力制御ポート、519・・・CP
U、520・・・ワーキングメモリ、521・・・ディ
スクI10.522・・・ディスクである。 特許出願人 キャノン株式会社 、に、7−1 代理人 弁理士 大塚康徳(他1名)二二・ニー14
云[]ゝ・二ぞ′ニーシ;こ 基準点(0,0> / 第2図 第4図 第7図 第10図 第11図 第9 第22図 水平ベクトルカウンタ 第23図 垂直ベクトルカウンタ 第24図 第26図 第29図 第30図 第36図 第37図 第38図 第39図 第40図 第41図 第43図 第42図 第44図 ゛ 第45図 第46図 第47図 第48図 第49図 第50図 第51図 第52図 第53図 第54図 第55図 第58図 第62図 第63図 第64図 第66図 第67図 第68図 第69図 第70図 第74図 第76図 第77図 第78図 第80図 第81図 第82図 第83図
Claims (5)
- (1)画像データにおける注目画素と、その近傍画素の
状態を保持する保持手段と、 前記注目画素をラスタ走査順に取出し、前記注目画素と
その近傍画素の状態に基づいて、水平方向及び垂直方向
の画素配列ベクトルを検出する検出手段と、 前記画素配列ベクトル同士の接続状態を判別する判別手
段と、 前記判別手段により判別された画素配列ベクトルの接続
状態をもとに、前記画像データの輪郭を抽出する抽出手
段と、 を有することを特徴とする輪郭抽出装置。 - (2)前記近傍画素は、前記注目画素を取り囲む8個の
近傍画素であることを特徴とする請求項第1項に記載の
輪郭抽出装置。 - (3)注目画素と、その近傍画素の状態により、予め定
められた位置を輪郭線を構成する点とし、近傍画素の状
態により輪郭線の点の接続方向を決定する工程と、 前記輪郭線を構成する点と、輪郭線の他の点との接続状
態を判断する工程と、 前記注目画素の位置をラスタ走査順に画像データ上に設
定し、注目画素毎に近傍画素の状態に基づいて前記工程
を実行し、輪郭点を抽出することを特徴とする画像の輪
郭抽出方法。 - (4)前記輪郭線を構成する点の予め定められた位置が
入力画素間の中間位置であることを特徴とする請求項第
3項に記載の輪郭抽出方法。 - (5)抽出された輪郭点の位置が入力画素間の位置であ
ることを特徴とする請求項第3項に記載の輪郭抽出方法
。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP02281958A JP3026592B2 (ja) | 1990-10-22 | 1990-10-22 | 輪郭抽出方法及びその装置 |
| EP91309709A EP0482862B1 (en) | 1990-10-22 | 1991-10-21 | Contour extraction method and apparatus |
| DE69131922T DE69131922T2 (de) | 1990-10-22 | 1991-10-21 | Verfahren und Gerät zum Ausziehen von Aussenlinien |
| US08/161,082 US6404921B1 (en) | 1990-10-22 | 1993-12-03 | Contour extracting method and apparatus |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP02281958A JP3026592B2 (ja) | 1990-10-22 | 1990-10-22 | 輪郭抽出方法及びその装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH04157578A true JPH04157578A (ja) | 1992-05-29 |
| JP3026592B2 JP3026592B2 (ja) | 2000-03-27 |
Family
ID=17646277
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP02281958A Expired - Lifetime JP3026592B2 (ja) | 1990-10-22 | 1990-10-22 | 輪郭抽出方法及びその装置 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US6404921B1 (ja) |
| EP (1) | EP0482862B1 (ja) |
| JP (1) | JP3026592B2 (ja) |
| DE (1) | DE69131922T2 (ja) |
Cited By (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5579405A (en) * | 1992-06-26 | 1996-11-26 | Canon Kabushiki Kaisha | Method and apparatus for contour vector image processing |
| US5666439A (en) * | 1993-05-27 | 1997-09-09 | Canon Kabushiki Kaisha | Outline discrimination and processing |
| US5828794A (en) * | 1992-09-24 | 1998-10-27 | Canon Kabushiki Kaisha | Image processing method and apparatus for enlarging and reducing image data |
| US5832141A (en) * | 1993-10-26 | 1998-11-03 | Canon Kabushiki Kaisha | Image processing method and apparatus using separate processing for pseudohalf tone area |
| US5900948A (en) * | 1994-12-21 | 1999-05-04 | Canon Kabushiki Kaisha | Image processing apparatus and method |
| US5933528A (en) * | 1992-01-27 | 1999-08-03 | Canon Kabushiki Kaisha | Image processing apparatus |
| US5974195A (en) * | 1994-10-14 | 1999-10-26 | Canon Kabushiki Kaisha | Image processing apparatus and method |
| US6232978B1 (en) | 1994-10-17 | 2001-05-15 | Canon Kabushiki Kaisha | Image processing apparatus, and method of controlling same, using a combination of enlargement and fixed ratio reduction processing |
| US6289136B1 (en) | 1995-03-22 | 2001-09-11 | Canon Kabushiki Kaisha | Image processing method and apparatus |
| JP2007279825A (ja) * | 2006-04-03 | 2007-10-25 | Fuji Xerox Co Ltd | 画像処理装置、画像処理方法及びプログラム |
| JP2007293829A (ja) * | 2006-03-31 | 2007-11-08 | Canon Inc | 画像処理方法及び画像処理装置 |
| JP2009271700A (ja) * | 2008-05-07 | 2009-11-19 | Canon Inc | 画像処理装置および画像処理方法 |
| US7889938B2 (en) | 2006-03-31 | 2011-02-15 | Canon Kabushiki Kaisha | Method and apparatus for processing line drawings in images |
| US8041122B2 (en) | 2006-12-12 | 2011-10-18 | Canon Kabushiki Kaisha | Image processing apparatus, method for controlling image processing apparatus, and storage medium storing related program |
| US8050499B2 (en) | 2006-03-31 | 2011-11-01 | Canon Kabushiki Kaisha | Image-processing apparatus, image-processing method, and computer program used therewith |
| JP2013114655A (ja) * | 2011-12-01 | 2013-06-10 | Canon Inc | 画像処理装置、画像処理方法、及びコンピュータプログラム |
| US8611658B2 (en) | 2008-08-26 | 2013-12-17 | Canon Kabushiki Kaisha | Image processing apparatus and image processing method |
| US8743383B2 (en) | 2009-02-05 | 2014-06-03 | Canon Kabushiki Kaisha | Image processing apparatus storing destination information and information indicating whether a user is allowed to print image data and control method therefor |
Families Citing this family (28)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5644366A (en) * | 1992-01-29 | 1997-07-01 | Canon Kabushiki Kaisha | Image reproduction involving enlargement or reduction of extracted contour vector data for binary regions in images having both binary and halftone regions |
| EP0687994B1 (en) | 1994-06-17 | 2002-02-13 | Canon Kabushiki Kaisha | Contour-information extraction apparatus and method |
| US7028040B1 (en) * | 2001-05-17 | 2006-04-11 | Microsoft Corporation | Method and system for incrementally maintaining digital content using events |
| JP3855805B2 (ja) * | 2002-03-07 | 2006-12-13 | ブラザー工業株式会社 | 画像処理装置および画像処理方法 |
| US7805003B1 (en) * | 2003-11-18 | 2010-09-28 | Adobe Systems Incorporated | Identifying one or more objects within an image |
| WO2006056612A1 (en) * | 2004-11-27 | 2006-06-01 | Bracco Imaging S.P.A. | Systems and methods for generating and measuring surface lines on mesh surfaces and volume objects and mesh cutting techniques ('curved measurement') |
| JP4878209B2 (ja) * | 2006-05-15 | 2012-02-15 | キヤノン株式会社 | 画像処理装置、画像処理方法、コンピュータプログラム |
| JP5017031B2 (ja) | 2007-09-13 | 2012-09-05 | キヤノン株式会社 | 画像処理装置、画像処理方法、画像処理プログラム、並びに、記憶媒体 |
| JP4933404B2 (ja) | 2007-11-07 | 2012-05-16 | キヤノン株式会社 | 画像処理装置、画像処理方法、画像処理プログラム、並びに、プログラム記録媒体 |
| JP4991590B2 (ja) | 2008-02-14 | 2012-08-01 | キヤノン株式会社 | 画像処理装置、画像処理方法、画像処理プログラム、及び、記憶媒体 |
| JP5111226B2 (ja) | 2008-05-02 | 2013-01-09 | キヤノン株式会社 | 画像処理方法、画像処理装置、及び、そのプログラムならびにコンピュータ読み取り可能な記憶媒体 |
| JP5111242B2 (ja) | 2008-06-04 | 2013-01-09 | キヤノン株式会社 | 画像処理装置及び方法 |
| JP5121599B2 (ja) | 2008-06-30 | 2013-01-16 | キヤノン株式会社 | 画像処理装置、画像処理方法およびそのプログラムならびに記憶媒体 |
| JP5049921B2 (ja) * | 2008-08-26 | 2012-10-17 | キヤノン株式会社 | 画像処理装置及び画像処理方法 |
| JP5049922B2 (ja) * | 2008-08-26 | 2012-10-17 | キヤノン株式会社 | 画像処理装置及び画像処理方法 |
| JP5159588B2 (ja) * | 2008-12-05 | 2013-03-06 | キヤノン株式会社 | 画像処理装置、画像処理方法、コンピュータプログラム |
| JP5328510B2 (ja) | 2009-06-24 | 2013-10-30 | キヤノン株式会社 | 画像処理装置、画像処理方法、コンピュータプログラム |
| JP5361574B2 (ja) | 2009-07-01 | 2013-12-04 | キヤノン株式会社 | 画像処理装置、画像処理方法、及びプログラム |
| JP2011216080A (ja) | 2010-03-18 | 2011-10-27 | Canon Inc | 画像処理装置、画像処理方法、および記憶媒体 |
| JP5566158B2 (ja) | 2010-03-30 | 2014-08-06 | キヤノン株式会社 | 画像処理方法、画像処理装置、及びプログラム |
| JP5629483B2 (ja) | 2010-03-30 | 2014-11-19 | キヤノン株式会社 | 画像処理方法、画像処理装置、及びプログラム |
| JP5600524B2 (ja) | 2010-08-27 | 2014-10-01 | キヤノン株式会社 | 画像処理装置、画像処理方法、プログラム、および記憶媒体 |
| JP5653141B2 (ja) * | 2010-09-01 | 2015-01-14 | キヤノン株式会社 | 画像処理方法、画像処理装置、及び、プログラム |
| JP5597096B2 (ja) | 2010-10-18 | 2014-10-01 | キヤノン株式会社 | 画像処理装置、画像処理方法、およびプログラム |
| JP5843474B2 (ja) * | 2011-05-09 | 2016-01-13 | キヤノン株式会社 | 画像処理装置、画像処理方法、及び、プログラム |
| JP5801598B2 (ja) * | 2011-05-09 | 2015-10-28 | キヤノン株式会社 | 画像処理装置、画像処理方法、及び、プログラム |
| CN102855642B (zh) * | 2011-06-28 | 2018-06-15 | 富泰华工业(深圳)有限公司 | 图像处理装置及其物体轮廓的提取方法 |
| JP6169366B2 (ja) * | 2013-02-08 | 2017-07-26 | 株式会社メガチップス | 物体検出装置、プログラムおよび集積回路 |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4368462A (en) * | 1979-07-10 | 1983-01-11 | Teledyne Industries, Inc. | Line follower |
| JPS5851388A (ja) * | 1981-09-22 | 1983-03-26 | Ricoh Co Ltd | 方向コ−ド割付け方法 |
| US4777651A (en) * | 1984-06-25 | 1988-10-11 | Tektronix, Inc. | Method of pixel to vector conversion in an automatic picture coding system |
| US4961231A (en) * | 1987-01-20 | 1990-10-02 | Ricoh Company, Ltd. | Pattern recognition method |
| JP3014097B2 (ja) * | 1987-02-20 | 2000-02-28 | 株式会社日立製作所 | 輪郭追跡方法及びシステム |
| JPH01277976A (ja) | 1988-04-28 | 1989-11-08 | Meidensha Corp | 画像処理装置 |
| JPH02171875A (ja) | 1988-12-24 | 1990-07-03 | Hitachi Eng Co Ltd | 多値画像の輪郭検出方式 |
| US5228097A (en) * | 1989-02-07 | 1993-07-13 | Ezel, Inc. | Method for registering image data |
| JP2806961B2 (ja) * | 1989-02-22 | 1998-09-30 | 株式会社リコー | 画像符号化方法 |
-
1990
- 1990-10-22 JP JP02281958A patent/JP3026592B2/ja not_active Expired - Lifetime
-
1991
- 1991-10-21 DE DE69131922T patent/DE69131922T2/de not_active Expired - Lifetime
- 1991-10-21 EP EP91309709A patent/EP0482862B1/en not_active Expired - Lifetime
-
1993
- 1993-12-03 US US08/161,082 patent/US6404921B1/en not_active Expired - Fee Related
Cited By (20)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5933528A (en) * | 1992-01-27 | 1999-08-03 | Canon Kabushiki Kaisha | Image processing apparatus |
| US5579405A (en) * | 1992-06-26 | 1996-11-26 | Canon Kabushiki Kaisha | Method and apparatus for contour vector image processing |
| US6111994A (en) * | 1992-09-24 | 2000-08-29 | Canon Kabushiki Kaisha | Outline extraction using partial image processing |
| US5828794A (en) * | 1992-09-24 | 1998-10-27 | Canon Kabushiki Kaisha | Image processing method and apparatus for enlarging and reducing image data |
| US5666439A (en) * | 1993-05-27 | 1997-09-09 | Canon Kabushiki Kaisha | Outline discrimination and processing |
| US5832141A (en) * | 1993-10-26 | 1998-11-03 | Canon Kabushiki Kaisha | Image processing method and apparatus using separate processing for pseudohalf tone area |
| US5974195A (en) * | 1994-10-14 | 1999-10-26 | Canon Kabushiki Kaisha | Image processing apparatus and method |
| US6232978B1 (en) | 1994-10-17 | 2001-05-15 | Canon Kabushiki Kaisha | Image processing apparatus, and method of controlling same, using a combination of enlargement and fixed ratio reduction processing |
| US5900948A (en) * | 1994-12-21 | 1999-05-04 | Canon Kabushiki Kaisha | Image processing apparatus and method |
| US6289136B1 (en) | 1995-03-22 | 2001-09-11 | Canon Kabushiki Kaisha | Image processing method and apparatus |
| US7889938B2 (en) | 2006-03-31 | 2011-02-15 | Canon Kabushiki Kaisha | Method and apparatus for processing line drawings in images |
| JP2007293829A (ja) * | 2006-03-31 | 2007-11-08 | Canon Inc | 画像処理方法及び画像処理装置 |
| US8050499B2 (en) | 2006-03-31 | 2011-11-01 | Canon Kabushiki Kaisha | Image-processing apparatus, image-processing method, and computer program used therewith |
| JP2007279825A (ja) * | 2006-04-03 | 2007-10-25 | Fuji Xerox Co Ltd | 画像処理装置、画像処理方法及びプログラム |
| US8009926B2 (en) | 2006-04-03 | 2011-08-30 | Fuji Xerox Co., Ltd. | Image processing apparatus, image processing method, and medium storing program |
| US8041122B2 (en) | 2006-12-12 | 2011-10-18 | Canon Kabushiki Kaisha | Image processing apparatus, method for controlling image processing apparatus, and storage medium storing related program |
| JP2009271700A (ja) * | 2008-05-07 | 2009-11-19 | Canon Inc | 画像処理装置および画像処理方法 |
| US8611658B2 (en) | 2008-08-26 | 2013-12-17 | Canon Kabushiki Kaisha | Image processing apparatus and image processing method |
| US8743383B2 (en) | 2009-02-05 | 2014-06-03 | Canon Kabushiki Kaisha | Image processing apparatus storing destination information and information indicating whether a user is allowed to print image data and control method therefor |
| JP2013114655A (ja) * | 2011-12-01 | 2013-06-10 | Canon Inc | 画像処理装置、画像処理方法、及びコンピュータプログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| DE69131922T2 (de) | 2000-06-21 |
| JP3026592B2 (ja) | 2000-03-27 |
| US6404921B1 (en) | 2002-06-11 |
| EP0482862A3 (en) | 1992-12-02 |
| DE69131922D1 (de) | 2000-02-24 |
| EP0482862B1 (en) | 2000-01-19 |
| EP0482862A2 (en) | 1992-04-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH04157578A (ja) | 輪郭抽出方法及びその装置 | |
| WO2006131967A1 (ja) | 画像処理装置 | |
| US6111994A (en) | Outline extraction using partial image processing | |
| CN106791623A (zh) | 一种全景视频拼接方法及装置 | |
| US20150036945A1 (en) | Reconstruction of Missing Regions Of Images | |
| US5933528A (en) | Image processing apparatus | |
| JP2007293829A (ja) | 画像処理方法及び画像処理装置 | |
| JPS63211474A (ja) | 階層化構造的テンプレ−ト・マツチング方法 | |
| JP3037504B2 (ja) | 画像処理方法及びその装置 | |
| JP4380376B2 (ja) | 画像処理装置、画像処理方法、及び画像処理プログラム | |
| US20090060391A1 (en) | Image processing apparatus, image processing method and computer-readable medium | |
| KR100460081B1 (ko) | 동영상 가상현실 이미지 제작 시스템 및 방법 | |
| JP2003323616A (ja) | 画像処理装置及びその方法と、画像処理プログラム及びそのプログラムを記録した記録媒体 | |
| JP3006973B2 (ja) | 画像処理装置及び方法 | |
| JP2625045B2 (ja) | 画像処理装置 | |
| JPH01243188A (ja) | 輪郭検出装置 | |
| JPH06103379A (ja) | 画像処理方法及びその装置 | |
| JPH05233807A (ja) | ラベリング処理装置及びラベリング処理方法 | |
| JPH02246487A (ja) | 通信会議端末装置及び通信会議方法 | |
| JPH1173497A (ja) | イメージ処理方法及び装置、イメージ処理プログラムを格納する記憶媒体 | |
| JP3133807B2 (ja) | 輪郭抽出方法及びその装置 | |
| Starostenko et al. | Novel algorithms for estimating motion characteristics within a limited sequence of images | |
| JP2001351110A (ja) | 形状輪郭線分割方法、形状輪郭線分割器、および形状輪郭線分割プログラムを記憶した記憶媒体 | |
| JPH10209U (ja) | 文書作成装置 | |
| JPH0247787B2 (ja) |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090128 Year of fee payment: 9 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090128 Year of fee payment: 9 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100128 Year of fee payment: 10 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110128 Year of fee payment: 11 |
|
| EXPY | Cancellation because of completion of term | ||
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110128 Year of fee payment: 11 |