JP3026592B2 - 輪郭抽出方法及びその装置 - Google Patents

輪郭抽出方法及びその装置

Info

Publication number
JP3026592B2
JP3026592B2 JP02281958A JP28195890A JP3026592B2 JP 3026592 B2 JP3026592 B2 JP 3026592B2 JP 02281958 A JP02281958 A JP 02281958A JP 28195890 A JP28195890 A JP 28195890A JP 3026592 B2 JP3026592 B2 JP 3026592B2
Authority
JP
Japan
Prior art keywords
vector
pixel
contour
case
horizontal
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.)
Expired - Lifetime
Application number
JP02281958A
Other languages
English (en)
Other versions
JPH04157578A (ja
Inventor
良弘 石田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP02281958A priority Critical patent/JP3026592B2/ja
Priority to EP91309709A priority patent/EP0482862B1/en
Priority to DE69131922T priority patent/DE69131922T2/de
Publication of JPH04157578A publication Critical patent/JPH04157578A/ja
Priority to US08/161,082 priority patent/US6404921B1/en
Application granted granted Critical
Publication of JP3026592B2 publication Critical patent/JP3026592B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/13Edge detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/12Edge-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/181Segmentation; 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)

Description

【発明の詳細な説明】 【産業上の利用分野】
本発明はラスタ走査順に記憶された2値画像の輪郭線
を抽出する方法とその装置に関するものである。
【従来の技術】
従来の例えば、2値ドツトパターンよりアウトライン
フオントを作成する場合は、2値画像文字パターンの輪
郭線を抽出し、その輪郭線をベクトル情報形式で記憶す
ることにより、その文字のアウトラインフオントを作成
している。このような2値画像よりの輪郭線の抽出は、
まず2値画像における輪郭線追跡のため追跡開始点を見
つけることから始められる。そして、この追跡開始点が
発見されると、次のこの追跡開始点から順にその画像の
輪郭を追跡していき、追跡の終わつた輪郭点には次々に
追跡済のマークを付けながら追跡を続行する。こうし
て、この追跡が一巡した時点で一つの輪郭点列(輪郭
線)を求めている。このような手順を繰り返し行なうこ
とにより、その画像中のすべての輪郭線を抽出すること
ができる。 従来より知られる8連結の輪郭追跡の手順例を第2図
に示す。第2図において、201は内側に空白部分202を含
む2散画像パターンで、この輪郭線を抽出する場合を説
明する。第2図における、1つのマス目は1ドツト(画
素)を表わしている。 (1)2値画像パターン201を画面の基準点(0,0)から
ラスタ走査してゆく。 (2)追跡済のマークが付いていない画素(例えばドツ
ト203)が存在する点にぶつかつならば、その点をP0
してドツトパターンの輪郭追跡を開始する。全画面分を
探しても点P0が存在しなければ手順終了。 (3)開始点P0に隣接する8方向の近傍画素方向に、第
3図に示す順番で探索を開始する。そして、最初に出会
つた画素が存在する点(第2図の場合ではドツト204)
を次の輪郭点P1とする。このとき、隣接点が存在しない
場合は、その点を孤立点として手順(2)へ戻る。 (4)このようしてPiマーク付けを行ない、第4図に示
したように、Piに隣接する8方向の近傍画素に対して、
次の輪郭点Pi+1を抽出する。これは、直前にマーク付け
を行つた点401より、Pi(ドツト402)を中心に反時計回
り方向にドツトが存在するかを探索し、最初に出会つた
画素が存在する点を次の輪郭点Pi+1とするものである。 (5)以下、手順(4)を繰り返して、次々に輪郭点を
求める。 但し、Pn+1=P1,Pn=P0となつたならば、P0,P1,…,P
n-1を1つの領域の輪郭点列となし、手順(6)へ進
む。 (6)別の画像領域の輪郭点列を求めるために手順
(2)へ戻る。 以上である。なお、第3図及び第4図において、は
注目点を、◎(401)は直前にマーク付けを行つた点を
示している。また、図中に示された数字は画素(ドツ
ト)の有無を探索する順番を表現している。
【発明が解決しようとする課題】
しかしながら前記従来例では、輪郭追跡の開始点を決
定した後は、輪郭線に沿つた追跡を行なうため、全画像
をメモリ上にとり込んだ後で、輪郭線の抽出処理を開始
しなければならない。このため、必要とするメモリ容量
が大きくなり、コストアツプや処理時間が遅くなるなど
の不具合があつた。 また上記従来例では、1つの輪郭点列を抽出した後、
次の輪郭の開始点を再度ラスタ走査により検出するため
に、一度探索済の画素を再度検索することになり、画像
データの演算量が増加し、処理速度が遅くなるといつた
不具合もあつた。 更に、前記従来例では画素(ドツト)の縁単位ではな
く、ドツトそのものを単位として輪郭を追跡している。
このため、1ドツト巾のドツトパターンを追跡すると、
その検出した輪郭線幅が“0"(幅が0ドツト)となつて
しまうという不具合もあつた。 本発明は上記従来例に鑑みてなされたもので、画像を
画素マトリクス単位にラスタ走査し、輪郭の開始部分か
ら終了部分までの連結された水平及び垂直方向の画素数
に応じた輪郭ベクトルを抽出する輪郭抽出装置及びその
方法を提供することを目的とする。
【課題を解決するための手段】
上記目的を達成するために本発明の輪郭抽出装置は以
下のような構成を備える。即ち、 画像を入力する入力手段と、 前記入力手段により入力した画像の画素マトリクスを
ラスタ走査し、当該画素マトリクス内の複数画素の状態
に応じて黒画素と白画素との境界に輪郭ベクトルを抽出
する抽出手段を有する輪郭抽出装置であって、 前記抽出手段は前記複数画素の状態が主走査方向又は
副走査方向に継続する輪郭の途中部分を表わす場合は、
輪郭ベクトルの座標値のセットおよび前記輪郭ベクトル
の接続関係を特定するための処理を行わず、前記複数画
素の状態が主走査方向又は副走査方向に開始する輪郭の
開始部分を表わす場合には輪郭ベクトルの座標値をセッ
トし接続状態を未定とし、前記複数画素の状態が主走査
方向又は副走査方向に途切れる輪郭の終了部分を表す場
合には輪郭ベクトルの座標値をセットし接続状態を確定
することにより前記輪郭ベクトルを抽出することを特徴
とする。 上記目的を達成するために本発明の輪郭抽出方法は以
下のような工程を備える。即ち、 入力した画像を画素マトリクス内でラスタ走査して当
該画素マトリクス内の複数画素の状態に応じて黒画素と
白画素との境界に輪郭ベクトルを抽出する輪郭抽出方法
であって、 前記複数画素の状態が主走査方向または副走査方向に
継続する輪郭の途中部分を表わす場合、当該輪郭ベクト
ルの座標値のセット及び前記輪郭ベクトル同士の接続関
係を特定するための処理を行わず、 前記複数画素の状態が主走査方向または副走査方向に
開始する輪郭の開始部分を表わす場合には当該輪郭ベク
トルの座標値をセットし接続状態を未定とし、前記複数
画素の状態が主走査方向又は副走査方向に途切れる輪郭
の終了部分を表す場合には輪郭ベクトルの座標値をセッ
トし接続状態を確定することにより前記輪郭ベクトルを
抽出することを特徴とする。
【作用】
以上の構成において、入力した画像を画素マトリクス
内でラスタ走査して当該画素マトリクス内の複数画素の
状態に応じて黒画素と白画素との境界に輪郭ベクトルを
抽出する輪郭抽出装置及び方法であって、複数画素の状
態が主走査方向または副走査方向に継続する輪郭の途中
部分を表わす場合、輪郭ベクトルの座標値のセット及び
前記輪郭ベクトル同士の接続関係を特定するための処理
を行わず、それら複数画素の状態が主走査方向または副
走査方向に開始する輪郭の開始部分を表わす場合には輪
郭ベクトルの座標値をセットし接続状態を未定とし、そ
れら複数画素の状態が輪郭の終了部分を表す場合には輪
郭ベクトルの座標値をセットし接続状態を確定すること
により輪郭ベクトルを抽出するように動作する。
【実施例】
以下、添付図面を参照して本発明の好適な実施例を詳
細に説明する。 <第1の実施例> この実施例は、第1図に示すように、2値画像におけ
る注目画素(101)と、その近傍の8個の画素の状態を
見て処理を進めるもので、注目画素をラスタ走査し、1
画素毎にずらしながら画像全体の処理を逐次行なつてゆ
く。 第1図において、は注目画素101であり、“0"及び
“2"で示された位置は、主走査方向に対し注目画素101
と同じ位置にあり、副走査方向のそれぞれ1ラスタ前の
画素(0)及び1ラスタ先の画素(2)を示す。“1"及
び“3"で示された位置は、注目画素101と同一のラスタ
上にあり、それぞれ1画素前の画素(3)及び1画素先
の画素(1)を示している。更に、“A"及び“B"は、主
走査方向に1画素先の位置にあり、それぞれ1ラスタ前
及び1ラスタ先の位置にある画素を示し、“C"及び“D"
は主走査方向の1画素前の位置にある画素で、それぞれ
1ラスタ先及び1ラスタ前の位置にある画素を示す。 第5図は、本実施例の輪郭検出を行うハードウエア構
成例を示すブロツク図である。 501は信号線500を介して入力される画像データをやり
とりするための入力制御(インターフエース)部であ
り、この信号線500よりラスタ走査形式で順次2値画像
データが入力されてくる。502はラツチで、501より入力
された画像データを、図示しない画素同期クロツクに同
期して1画素づつ順次更新しながら保持する。次の画素
同期クロツクにて、ラツチ502は次の画素データを入力
制御回路501より入力する。この時、既に保持していた
画素データは、その画素クロツクに同期してラツチ503
にラツチされて、保持される。同様にラツチ503に保持
されていた画素データは、次の画素同期クロツクにて、
ラツチ504に保持される。 505及び503はそれぞれ1ラスタ分の画素データを保持
するFIFO(ファーストイン・ファーストアウト・メモ
リ)である。FIFO505は、ラツチ504の出力を順次、画素
同期クロツクに同期して取り込み、1ラスタ前のデータ
をラツチ507へ出力する。同様に、FIFO506も、ラツチ50
9の出力を取り込み、ラツチ510に1ラスタ前の画素デー
タを出力する。ラツチ507,508,509及びラツチ510,511,5
12は共に前記ラツチ502,503,504と全く同様に動作す
る。 このようにして、ラツチ502,503,504,507,508,509,51
0,511及び512に記憶された9個の画素は、第1図に示し
た9(3×3)画素よりなる領域の画素データを記憶し
ていることになる。即ち、これらラツチのデータは、そ
れぞれ第1図の“B",“2",“C",“1",“",“3",“A",
“0",“D"に対応している。 513,514は共にCPU519の入力ポートで、入力ポート513
は、ラッチ510,502,504,512のデータを、即ち、それぞ
れ第1図における“A",“B",“C",“D"の位置のデータ
をCPU519に入力する。同様に、入力ポート514はラツチ5
11,507,503,509,508のデータ、即ち、“0",“1",“2",
“3",“”の位置のデータとして入力する。 515は主走査方向の画素位置を示す主走査カウンタで
あり、図示しない副走査同期信号によりリセットされ、
画素同期信号によりカウントアツプする。516は副走査
方向の画素位置を示す副走査カウンタで、図示しないペ
ージ同期信号によりリセットされ、副走査同期信号によ
りカウントアツプされる。517は入出力制御用の入出力
ポートであり、入出力制御回路501に対し、画素データ
入力の実行及び保留を指示する信号、及び入出力制御回
路501よりCPU519への画素データ更新を知らせる信号等
を保持する。521はハードデイスク522の入出力制御装置
である。入出力制御ポート517、主走査カウンタ515、副
走査カウンタ516、入力ポート513,514、メモリ520、デ
イスクI/O521はバス518を介してCPU519に接続されてい
る。 こうして、CPU519は入出力制御ポート517を介して、
画素データの更新を行い、主走査カウンタ515及び副走
査カウンタ516を介して、注目画素の画素位置(i,j)を
知ることができる。また、入力ポート513及び514を介し
て、注目画素及びその近傍の8方向の画素の状態を知る
ことができる。 このようにして注目画素の処理が終了すると、CPU519
は入出力制御ポート517を介して9個のラツチに記憶さ
れる画素データの更新を指示し、同時に画素データの更
新完了の信号をリセットする。入出力制御回路501は、
この更新の指示を受けると、画素データの更新指示の信
号をクリアするとともに、後段のラツチにラツチされる
画素データを更新し、この更新が終了すると入出力制御
ポート517に、更新完了の信号を出力する。 CPU519は、更新指示の出力後、入出力制御ポート517
より更新完了の信号が入力されるのを監視している。こ
の更新完了の信号が入力されると、新たに9個のラツチ
に記憶された画素データに関する処理を実行し、以下同
様にこれを繰り返すものである。また、入力制御回路50
1は、画像領域の最終画素を注目画素として処理し終つ
た際に、入出力制御ポート517に終了信号を出力する。 次に注目画素及びその近傍の8画素の状態に応じた、
それぞれの場合の処理を説明する。 注目画素が白画素である場合は、その処理を終了して
ラスタ走査を1画素分進め、注目画素位置を更新する。 注目画素が黒画素の場合は、近傍の画素の状態によつ
て以下の処理を行なう。第6図〜第21図に各状態におけ
る処理内容を示してある。 ここで第6図の画素マトリクス61において、“d"は
“do no care"、即ち、“d"の表示のある位置の画素は
白画素でも黒画素でも構わないことを意味している。こ
れは以下の図でも同様とする。また第6図の画素マトリ
クス62において、○印は、横方向ベクトルの始点及び縦
方向ベクトルの終点を表わしており、△印は縦方向ベク
トルの始点及び横方向ベクトルの終点を表わしている。
また第6図の62における実線矢印は、始点及び終点共に
定まつた、矢印の向く方向の輪郭ベクトルを表し、第7
図に示すような点線矢印は、始点もしくは終点のいずれ
か一方のみが定まつた、矢印の向く方向の輪郭ベクトル
を表わしている。これら、○、△、実線矢印及び点線矢
印の持つ意味も、以降の図においても同様である。また
●は黒画素を示し、白画素はその位置を明示したい時の
み点線の○印で表記し、それ以外の時は表記していな
い。 これら輪郭ベクトルの始点・終点位置は、主走査方向
及び副走査方向共に、画素と画素の中間の位置にあるも
のとする。また、主走査方向及び副走査方向共に、画素
のある位置は正整数で示され、画素位置を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),点6
7(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画素xn画素の画像は、2mx2nの正の偶数(整数)の座
標表現で表わすものとする。これにより、上述の第6図
の例は、注目画素位置を(6,14)であると表現し、それ
ぞれ4つの終点、始点は(5,13),(7,13),(7,1
5),(5,15)となる。これにより、第6図の4本のベ
クトルは、 [(5,13),(7,13)] [(7,13),(7,15)] [(7,15),(5,15)] [(5,15),(5,13)] と表現されるものとする。 これ以降2値画像は、それぞれがm画素よりなるnラ
スタで構成されるmxn画素(m,nは正の整数)でなるもの
とし、第j番目のラスタの第i番目の画素位置を(2i,2
j)(i,jは正の整数で、i≦m,j≦n)で表現するもの
とする。 <輪郭抽出処理の説明> 第22図は実施例の装置のCPU519による輪郭抽出処理の
全体の流れを示すフローチヤートである。 まずステツプS1にて、2値画像データからベクトル列
を抽出し、各ベクトルの始点の座標及びこのベクトルに
流入してくる(このベクトルの始点の座標が終点となつ
ている)ベクトル、流出してゆく(このベクトルの終点
の座標が始点となつている)ベクトルを、第23図及び第
24図に示すテーブル形式で出力する。 第23図は水平方向のベクトルを示す図、第24図は垂直
方向のベクトルを示す図である。 次にステツプS2に進み、第23図及第24図に示すテーブ
ルから流入及び流出ベクトルの項目番号を辿ることによ
り、第25図に示すような画像中の総輪郭線数、各輪郭線
毎の輪郭線の総点数、輪郭線中の各点のx座標、y座標
を記憶したテーブルを作成する。次にステツプS3に進
み、デイスクI/O521を介して、このテーブル情報フアイ
ル形式でデイスク522に記憶して、一連の動作を終了す
る。 第26図は第22図のステツプS1のベクトル列抽出処理を
示すフローチヤートである。 まずステツプS11では、入力ポート514のビツト4(注
目画素)を見ることにより、注目画素が白画素か黒画素
かを判定する。白画素の場合はステツプS13へ進み、黒
画素の場合はステツプS12へ進む。ステツプS12では、注
目画素の周囲8画素の状態を見て、その状態に応じた適
当な処理ルーチンをコールする。 ステツプS13では、前述の如く入出力制御ポート517を
介して画素位置を更新を指示する。そして、入出力制御
ポート517より更新完了の信号を入力するとステツプS14
に進み、入出力制御ポート517を介して、最終画素の処
理が終了したか否かを判断し、終了していなければステ
ツプS11へ戻り、次の注目画素も同様に処理を行ない、
終了していれば、元のルーチンにリターンする。 第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)=
0であればステツプS26に進み、同様に第1図の“2"の
位置の画素画黒画素かどうかをみる。f(2)=1(黒
画素であれば)であればステツプS27へ進み、前記レジ
スタの内容にを加える。 次にステツプS28に進み、第1図の“3"の位置の画素
に注目し、f(3)=1ならステツプS29へ進み、前記
レジスタの内容に8を加えるが、そうでなければステツ
プS30へ進む。ステツプS30では、前記レジスタの保持す
る値の処理番号のルーチンをコールする。 これにより、前記レジスタの内容は、第1図に示した
“0",“1",“2",“3"の画素位置の各画素の状態に応じ
て、0〜15の値を取り得る。これらは、その値に応じて
それぞれ第6図の(ケース(case)0)、第7図の(ケ
ース1)、第8図(ケース2)、第9図(ケース3)、
第10図(ケース4)、第11図(ケース5)、第12図(ケ
ース6)、第13図(ケース7)、第14図(ケース8)、
第15図(ケース9)、第16図(ケース10)、第17図(ケ
ース11)、第18図(ケース12)、第19図(ケース13)、
第20図(ケース14)、第21図(ケース15)に示されてい
る。 以下、各状態それぞれの処理内容に関し詳述する。 第27図のステツプS30において、レジスタの値が“0"
の場合は、第28図に示す処理がコールされる。第28図は
前述の第6図に示す状態(ケース0)を処理するルーチ
ンである。以降、注目画素63の座標が(2i,2j)として
説明する。 <ケース0の場合の処理説明(第6図,第23図,第24
図、第28図)> 第28図のステツプS31では(2i−1,2j−1)を水平ベ
クトルの始点として登録する。即ち、第23図に示す水平
ベクトルカウンタ230の指し示す水平ベクトル始点(第
6図の64)のx座標テーブルの欄(第23図の231)に(2
j−1)を格納し、同じく水平ベクトル始点y座標テー
ブルの欄(第23図の232)に(2j−1)を格納する。そ
して、この水平ベクトルに流入してくる元の垂直ベクト
ルは、第24図の垂直ベクトルカウンタ240が、この時点
で指している垂直ベクトルの始点座標テーブル内の位置
の次の位置に格納されるベクトルであり、また、この水
平ベクトルが流出していく先の垂直ベクトルは、この時
点で垂直ベクトルカウンタ240が指している垂直ベクト
ルの始点座標テーブルの位置にある。 即ち、第23図に示す水平ベクトルの流入ベクトル項目
番号の欄において、水平ベクトルカウンタ230が指し示
す位置(第23図の例では233)に、垂直ベクトルカウン
タ240の値に1加えた値を格納する。また、水平ベクト
ルの流出ベクトル項目番号の欄には、水平ベクトルカウ
ンタ230が指し示す位置(第23図の例では234)に、垂直
ベクトルカウンタ240の値を格納する。 次にステツプS32では、同様に(2i+1,2j−1)を垂
直ベクトルの始点(第6図の65)として登録する。この
垂直ベクトルに流入する水平ベクトルはステツプS31で
登録した水平ベクトルであり、この垂直ベクトルが流出
する水平ベクトルは、水平ベクトル始点座標テーブルの
ステツプS31で登録された水平ベクトルの次の位置に格
納される水平ベクトルであると登録する。 即ち、第24図を参照して説明すると、欄241には(2i
+1)が、欄242には(2i−1)が、更に欄243には、こ
の時の水平ベクトルカウンタ230の値が、欄243にはこの
時の水平ベクトルカウンタ230の値に+1した値が格納
される。 次にステツプS33に進み、水平ベクトルカウンタ230の
内容を+1する。ステツプS34では、(2i+1,2j+1)
を水平ベクトルの始点(第6図の67)座標として登録
し、この水平ベクトルに流入する垂直ベクトルは、ステ
ツプS32で登録したベクトルであると登録し、この水平
ベクトルが流出する垂直ベクトルは、ステツプS32で登
録された垂直ベクトルの垂直ベクトル始点座標テーブル
内における次の位置に格納される垂直ベクトル(第6図
の点66と[始点]と点64[終点で、S36で登録予定]と
を結ぶベクトル)であると登録する。 ステツプ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
で登録される垂直ベクトルカウンタ240の値とする。次
にステツプS42に進み、ステツプS41で登録した水平ベク
トルに流入する垂直ベクトルを、第34図に示す流出先が
未定な垂直ベクトルテーブル341から探し出して登録す
る。このステツプS42の処理の内容は、第30図のフロー
チヤートで示している。 ステツプS51では、テーブル341に登録されている流出
先が未定の垂直ベクトルの数を保持する流出ベクトル未
定垂直ベクトルカウンタ340の値を変数kにセツトす
る。ステツプS52では垂直ベクトル流出ベクトル未決定
項目番号テーブル341に登録されている項目番号(k−
1)の値が指し示す垂直ベクトルの始点のx座標の欄が
(2i+1)であるか否かを判定する。(2i+1)でなけ
れば変数kの値(k)を1だけ減じて、再びステツプS5
2を実行する。ステツプS52で始点のx座標が(2i+1)
であればステツプS54へ進む。 ステツプS54ではテーブル341の項目番号が(k−1)
である垂直ベクトルが、前述したステツプS41で登録し
た水平ベクトルの流入元ベクトルであり、更にステツプ
S41で登録した水平ベクトルが、この垂直ベクトルの流
出先ベクトルであることになる。従つて、第23図の水平
ベクトルカウンタ230で指示される水平ベクトルの流入
ベクトル項目番号欄に、テーブル341の項目番号が(k
−1)である垂直ベクトル番号を、及び第24図の垂直ベ
クトルの流出項目番号欄に、ステツプS41における水平
ベクトルカウンタ230の値を格納する。 ステツプS55では、ステツプS53,ステツプS54におい
て、流出先が決定したベクトルを流出先未定ベクトルテ
ーブル341から消去し、そのテーブルの空いた部分を詰
める。次に、ステツプS56で、流出ベクトル未定垂直ベ
クトルカウンタ340の値を1減じ、垂直ベクトル流出テ
ーブル未決定項目番号テーブル341に登録されている流
出先が未定の垂直ベクトルが1つ減つた旨更新して、元
のルーチンに戻る。 このようにして、第29図のステツプS42の処理が終了
してステツプS43へ進む。ステツプS43では(2i−1,2i+
1)を垂直ベクトルの始点として登録し、この垂直ベク
トルに注入してくる水平ベクトルは、ステツプS41で登
録した水平ベクトルとする。次に、ステツプS44ではス
テツプS43で登録した垂直ベクトルが流出する先の水平
ベクトルを、第31図に示す流入元ベクトル未定テーブル
311より探し出して登録する。このステツプS44の処理内
容は、第35図のフローチヤートで示す。 これは前述した第30図に示した処理と全く同様にして
実行される。即ち、ステツプS43で登録した垂直ベクト
ルが流出する先のベクトルを第24図の流出ベクトル項目
欄に登録し、この垂直ベクトルが流出する水平ベクトル
の流入元ベクトル項目番号欄に、垂直ベクトルカウンタ
240の値をセツトして、この垂直ベクトルであると登録
する。これにより、第31図に示すテーブル311を更新す
る。 次にステツプS45では、水平ベクトルカウンタ230を+
1し、ステツプS46で、垂直ベクトルカウンタ240を+1
して、元の処理に戻る。 <ケース2の処理説明(第8図、第23図、第24図、第33
図、第36図)> 第27図のステツプS30において、レジスタの保持する
値が“2"の場合は、第36図に示す処理が実行される。 第36図に示す処理は、第8図に示す状態を処理するル
ーチンである。 まず、ステツプS71で、第24図の垂直ベクトルカウン
タ240が示す垂直ベクトルの始点を(2i−1,2j+1)と
して登録し、この垂直ベクトルが流出する先の水平ベク
トルを、ステツプS73で登録される水平ベクトルとす
る。ステツプS72では、ステツプS71で登録した垂直ベク
トルが、それに流入してくる水平ベクトルが未定である
ベクトルとして、第33図に示す流入ベクトル未定垂直ベ
クトルテーブル331の既使用領域のすぐ隣の未使用領域
に登録し、流入元ベクトル未定垂直ベクトルカウンタ33
0を+1する。次にステツプS73に進み、第23図に示すテ
ーブルのカウンタ230で示される欄の水平ベクトルの始
点を(2i−1,2j−1)として登録し、このテーブルの流
入元垂直ベクトルを、ステツプS71で登録した垂直ベク
トルとして登録する。 ステツプS74では、ステツプS73で登録した水平ベクト
ルが流入してゆく先の垂直ベクトルが未定であるベクト
ルとして、第32図に示す流出ベクトル未定水平ベクトル
テーブル321の既使用領域のすぐ隣の未使用領域に登録
し、流出先ベクトル未定水平ベクトルカウンタ320を+
1する。ステツプS75では、水平ベクトルカウンタ230及
び垂直ベクトルカウンタ240を共に+1して元の処理に
戻る。 <ケース3の説明(第9図、第23、24図、第37図)> 第27図のステツプS30において、レジスタの値が“3"
の場合は第37図に示す処理が実行される。これは第9図
に示す状態を処理するルーチンである。 ステツプS81では(2i−1,2j+1)を垂直ベクトル91
(第9図)の始点として登録する。次にステツプS82に
進み、前述のステツプS44と同様にして、ステツプS81で
登録した垂直ベクトルが流出する先の水平ベクトルを求
める。次にステツプS83で、カウンタ330が指示するの指
示するテーブル331に垂直ベクトルカウンタ240の値をセ
ツトして、カウンタ330の値を+1する。次にステツプS
85で垂直ベクトルカウンタ240の内容を+1し、ステツ
プS85でケースAの処理を行う。この処理は第38図のフ
ローチヤートで示されている。 第38図のフローチヤートを説明すると、ステツプS91
で第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"
の場合は、第39図に示したルーチンがコールされる。こ
のルーチンは第10図に示したケース4を処理するルーチ
ンである。 ステツプS101では(2i−1,2j−1)を水平ベクトル10
2の始点として登録し、このベクトルが流出する先のベ
クトルは、ステツプS103で登録する垂直ベクトルである
として、このときの垂直ベクトルカウンタ240の値を第2
3図の流出ベクトル項目番号欄にセツトする。ステツプS
102では、ステツプS101で登録したベクトルへ流入して
くるベクトルが未定であるとして、第31図に示したテー
ブル311にカウンタ230の値を登録して。このテーブル31
1を更新する。ステツプS103では、(2i+1,2j−1)を
垂直ベクトル103(第10図)の始点として定義し、この
ベクトルに流入してくるベクトルはステツプS101で登録
した水平ベクトル102であるとして、第24図に示すテー
ブルの流入ベクトル項目番号欄に水平ベクトルカウンタ
230の値をセツトする。ステツプS104では、ステツプS10
3で登録した垂直ベクトル103が流出するベクトルが未定
であるとして第34図のカウンタ340で指示されたテーブ
ル341の欄に垂直ベクトルカウンタ240の値をセツトす
る。次に、ステツプS105で、水平ベクトルカウンタ230
及び垂直ベクトルカウンタ240をそれぞれ+1して、元
の処理に戻る。 <ケース5の説明> 第27図のステツプS30において、レジスタのが“5"の
場合は、第40図で示されたルーチンをコールする。この
第40図で示されたルーチンは、第11図で示す状態の場合
にコールされ、何もせずにそのままリターンする。 <ケース6の説明(第12図,第23,24図、第31〜第34
図、第41図、第42図)> 第27図のステツプS30において、レジスタの値が“6"
の場合は、第41図のフローチヤートで示されたルーチン
をコールする。これは、第12図で示すケース6の処理で
ある。 まずステツプS111で、第23図のカウンタ230で指示さ
れた水平ベクトル122(第12図)の始点を(2i−1,2j−
1)として登録する。次にステツプS112で、ステツプS1
11で登録した水平ベクトル122は、その流出先ベクトル
が未定であるとして、第32図に示す流出先ベクトル未定
水平ベクトルテーブル321に、第38図のステツプS94と同
様にして登録する。ステツプS113では、ステツプS111で
登録した水平ベクトル122に流入してくる元のベクトル
が未定であるとして、第39図のステツプS102と同様に、
第31図に示す流入元ベクトル未定水平ベクトルテーブル
311に登録する。次にステツプS114では、水平ベクトル
カウンタ230を+1する。ステツプS115では(B)の位
置の画素が白画素か黒画素かを判断し、白画素である場
合は、第12図の120に示す如く、(2i+1,2j+1)を垂
直ベクトル124の始点として登録し、黒画素の場合は第1
2図の121に示す如く、そのまま処理を終える。 このステツプS115の処理の詳細は第42図に示す。 ステツプS121では画素Bが白画素か黒画素かを判断
し、黒画素ならそのままリターンする。白画素の場合は
ステツプS122へ進む。ステツプS122では(2i+1,2j+
1)を垂直ベクトル124の始点として登録する。ステツ
プS123では、第39図のステツプS104と同様に、この垂直
ベクトル124が流出する先のベクトルが未定の垂直ベク
トルであるとして、第34図のテーブル341に登録する。
更にステツプS124では、前述した第36図のステツプS72
と同様に、ステツプS122で登録した垂直ベクトル124に
流入してくる元のベクトルが未定であるとして、第33図
のテーブル331にセツトする。ステツプS125では、垂直
ベクトルカウンタ240を+1して元のルーチンに戻る。 <ケース7の説明 (第13図、第38図,第42図,第43
図)> 第27図のステツプS30において、レジスタの値が“7"
の場合は、第43図のフローチヤートで示すルーチンが実
行される。このルーチンは第13図で示されるケース7の
処理を行なう。 ステツプS131では、第38図のステツプS85と同様に、
画素Aの状態に応じた処理を行なう。次に、ステツプS1
32では、第40図のステツプS115と同様に、画素Bの状態
に応じた処理を行なつて元のルーチンにリターンする。 第13図において、130は(A)の位置の画素及び
(B)の位置の画素が共に白画素の場合、131は(A)
のみ黒画素、132は(B)のみ黒画素、そして133は共に
黒画素である場合を示している。 <ケース8の説明(第14図、第44〜46図)> 第27図のステツプS30において、レジスタの値が“8"
の場合は第44図で示す処理ルーチンをコールする。この
ルーチンは、第14図で示されるケース8の処理を行な
う。 ステツプS133では、垂直ベクトルカウンタ240で指示
された垂直ベクトル141(第14図)の始点を(2i+1,2j
−1)として第24図のテーブルに登録し、このベクトル
が流出する先の水平ベクトルは、後続のS135で登録する
ベクトルであるとして、カウンタ230の値を流出ベクト
ル項目番号欄に登録する。ステツプS134では、ステツプ
S133で登録した垂直ベクトル141に流入してくる元の水
平ベクトルを第45図に示す手順で、第32図に示すテーブ
ル321を用いて求める。 第45図の処理は、先に説明した第30図及び第35図に示
した処理と全く同様な手順で、ステツプS133で登録した
垂直ベクトル141に流入してくる元の水平ベクトルを登
録し、この水平ベクトルが流出する先の垂直ベクトルを
ステツプS133で登録した垂直ベクトル141であると登録
する(ステツプS145)。そして、ステツプS146でテーブ
ル321の隙間を詰め、ステツプS147でカウンタ320を−1
して、第32図に示すテーブル321を更新する。 第44図のステツプS135では、水平ベクトルカウンタ23
0で指示される水平ベクトル142(第14図)の始点を(2i
+1,2j+1)として登録し、かつ、このベクトル142に
流入する元の垂直ベクトルは、ステツプS133で登録した
垂直ベクトル141であると登録する。ステツプS136で
は、ステツプS135で登録した水平ベクトル142が流出す
る先の垂直ベクトルを第46図に示す手順に従つて、第33
図に示すテーブル331を用いて求める。 第46図の処理は、先に説明した第30図,第35図及び第
45図に示した処理と全く同様な手順で、第44図のステツ
プS135で登録した水平ベクトル142が流出する先の垂直
ベクトルを登録し、この垂直ベクトルに流入する元のベ
クトルはS135で登録した水平ベクトル142であると登録
して(第46図のステツプS154)、ステツプS155,S156で
第33図に示すテーブル331を更新するものである。 再び第44図に戻り、ステツプS137で水平ベクトルカウ
ンタ230及び垂直ベクトルカウンタ240を共に+1してリ
ターンする。 <ケース9の説明(第15図、第47図)> 第14図のステツプS30において、レジスタの値が“9"
の場合は第47図に示すルーチンがコールされ、このルー
チンは第15図に示すケース9を処理するものである。 まずステツプS161では、(2i+1,2j+1)を水平ベク
トル151(第15図)の始点として登録する。次にステツ
プS162では、先に説明した第30図に示した手順と同様に
して、この水平ベクトル151に流入する垂直ベクトルを
第34図のテーブル341を用いてサーチして登録する。ま
た、このサーチされた垂直ベクトルが流出する水平ベク
トルが、ステツプS161で登録した水平ベクトルであると
第24図に示すテーブルに登録する。こうして第34図のテ
ーブル341を更新する。 ステツプS163では、先に説明した第46図に示した手順
と同様にして、ステツプS161で登録した水平ベクトル15
1が流出する先の垂直ベクトルを第33図に示すテーブル
を用いて探し出して登録し、この垂直ベクトルに流入す
る元のベクトルがS161で登録した水平ベクトル151であ
ると登録して、第33図に示すテーブル331を更新する。 ステツプS164では、水平ベクトルカウンタ230を+1
し、ステツプS165では、(D)の位置の画素が白画素か
黒画素かを判断し、白画素である場合は、第15図の152
で示すように、(2i−1,2j−1)を垂直ベクトル154の
始点として登録し、黒画素の場合はそのまま処理を終え
る(第15図の153)。 ステツプS165の処理(ケースD)の内容を第48図に示
す。 ステツプS171では、(D)の位置が白画素か黒画素か
を判断し、黒画素ならそのままリターンする。白画素の
場合はステツプS172に進み、(2i−1,2j−1)を垂直ベ
クトル154の始点として登録する。次にステツプS173に
進み、前述した第45図の処理を行なう。即ち、ステツプ
S172で登録した垂直ベクトル154に流入してくる元の水
平ベクトルを登録し、この水平ベクトルが流入する先の
垂直ベクトルがステツプS172で登録した垂直ベクトル15
4であると登録して、第32図に示すテーブル321を更新す
るものである。 次にステツプS174では、先に説明した第35図に示す処
理を行なう。即ち、ステツプS172で登録した垂直ベクト
ル154が流出する先の水平ベクトルを登録し、この水平
ベクトルに流入してくる元のベクトルは、ステツプS172
で登録した垂直ベクトル154であると登録して、第31図
に示すテーブル311を更新する。ステツプS175では、垂
直ベクトルカウンタ240を+1してリターンする。 <ケース10の処理> 第27図のステツプS30において、レジスタの値が“10"
の場合は第49図に示すルーチンがコールされ、このルー
チンは第16図に示すケース10を処理するものである。第
49図のルーチンはコールされるとそのままリターンす
る。 <ケース11の説明> 第27図のステツプS30において、レジスタの値が“11"
の場合は、第50図に示すルーチンがコールされ、このル
ーチンは第17図に示すケース11を処理するものである。 まずステツプS176では、ステツプS165と同様に(D)
の位置の画素の状態に応じて、先に説明した第48図のフ
ローチヤートで示される処理を行なう。次にステツプS1
77では、ステツプS85及びS131と同様に、(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の状態を処理するもので
ある。 ステツプS181では、第24図に示すテーブルに(2i+1,
2j−1)を垂直ベクトル181(第18図)の始点として登
録する。ステツプS182では、先に説明した第44図のステ
ツプS134と同様に、第45図に示す手順でステツプS181で
登録した垂直ベクトル181に流入してくる元の水平ベク
トル182をサーチして登録する。また、この水平ベクト
ル182が流出する先の垂直ベクトルが、ステツプS181で
登録した垂直ベクトル181であると登録して、第32図に
示すテーブル321を更新する。 次にステツプS183では、ステツプS181で登録した垂直
ベクトル181の流出先のベクトルが未定である旨を第34
図で示すテーブル341に登録し、カウンタ340の更新を行
なう。次にステツプS184では、垂直ベクトルカウンタ24
0を+1する。そしてステツプS185ではCの位置の画素
が白画素か黒画素かを判断し、白画素である場合は、第
18図の183で示す如く(2i−1,2j+1)を水平ベクトル1
85の始点として登録し、黒画素である場合は第18図の18
4に示す如くそのまま処理を終える。 このステツプS185の処理の内容を第52図のフローチヤ
ートで示す。 ステツプS191では、Cの位置が白画素か黒画素かを判
断し、黒画素ならそのままリターンする。白画素の場合
はステツプS192へ進み、ステツプS192では、(2i−1,2j
+1)を水平ベクトル185の始点として登録する。次に
ステツプS193では、先に説明した第46図のフローチヤー
トで示された処理を行なつて、ステツプS192で登録した
水平ベクトル185が流出する先の垂直ベクトルを登録す
る。そして、この垂直ベクトルに流入してくる元のベク
トルが、ステツプS192で登録した水平ベクトル185であ
ると、第24図のテーブルに登録して、第33図に示すテー
ブル331を更新する。 ステツプS194では、ステツプS192で登録した水平ベク
トル185は、これに流入する元の垂直ベクトル186が未定
なベクトルである旨を第31図に示す流入元ベクトル未定
水平ベクトルテーブル311に登録し、カウンタ310を+1
する。次にステツプS195に進み、水平ベクトルカウンタ
230を+1して元の処理に戻る。 <ケース13の説明(第19図、第53図)> 第27図のステツプS30において、レジスタの値が“13"
の場合は、第53図に示すルーチンがコールされ、このル
ーチンは第19図のケース13を処理するものである。 ステツプS196では、第47図のステツプS165及び第50図
のステツプS176同様にDの位置の画素の状態に応じて、
先に説明した第48図のフローチヤートで示される処理を
行なう。ステツプS197では、第51図のステツプS185と同
様に、Cの位置の画素の状態に応じて、先に説明した第
52図のフローチヤートで示される処理を行なう。190は
Dの位置の画素及びCの位置の画素が共に白画素の場
合,191はCのみ黒画素,192はDのみ黒画素,そして193
はCとDが共に黒画素だつた場合の処理結果をそれぞれ
示す。 <ケース14の説明> 第27図のステツプS30において、レジスタの値が“14"
の場合は、第54図に示すルーチンがコールされ、このル
ーチンは第20図で示すケース14の状態を処理するもので
ある。 第54図のステツプS201では、第51図のステツプS185及
び第53図のステツプS197と同様に、Cの位置の画素の状
態に応じて、先に説明した第52図で示されるケースCの
処理を行なう。次にステツプS202では、第41図のステツ
プS115及び第43図のステツプS132と同様にBの位置の画
素の状態に応じて、先に説明した第42図で示されるケー
スBの処理を行なう。 201はCの位置の画素及びBの位置の画素が共に白画
素の場合,202はBのみ黒画素,203はCのみ黒画素,204は
共に黒画素の場合の処理結果をそれぞれ示している。 <ケース15の説明> 第27図のステツプS30において、レジスタの値が“15"
の場合は、第55図に示すルーチンがコールされ、このル
ーチンは第21図で示すケース15を処理するものである。 ステツプS203では、前述のステツプS165等と同様にD
の位置の画素の状態に応じて、先に説明した第48図のフ
ローチヤートで示されるケースDの処理を行なう。次に
ステツプS204では、前述のステツプS85,S131等と同様に
Aの位置の画素の状態に応じて、先に説明した第38図で
示されるケースAの処理を行なう。ステツプS205では前
述のステツプS185等と同様に、Cの位置の画素の状態に
応じて、先に説明した第52図で示されるケースCの処理
を行なう。更に、ステツプS206では第41図のステツプS1
15等と同様に、Bの位置の画素の状態に応じて先に説明
した第42図で示されるケースBの処理を行なう。 これにより、第21図の210は、Dの位置の画素,Aの位
置の画素,Cの位置の画素及びBの位置の画素が全て白画
素だつた場合の処理結果を示し、211はAのみ黒画素だ
つた場合を、212はBのみが黒画素だつた場合を、213は
Cのみ黒画素だつた場合を、214はDのみ黒画素だつた
場合を、215はA及びBのみ黒画素だつた場合を、216は
B及びCのみが黒画素だつた場合を、217はC及びDの
みが黒画素だつた場合を、218がD及びAのみ黒画素だ
つた場合を、219はB及びDのみ黒画素だつた場合を、2
20はA及びCのみ黒画素だつた場合を、221はDのみ白
画素だつた場合を、222はCのみ白画素だつた場合を、2
23はBのみ白画素だつた場合を、224はAのみ白画素だ
つた場合を、そして225は全てが黒画素だつた場合の処
理結果を示している。 以上説明した手順により、第22図のステツプS1におけ
るベクトル列抽出の一連の処理が実行される。 <アウトラインベクトル列の整列処理> 第56図は第22図のステツプS2のアウトラインベクトル
列整列の処理の内容を示す。第56図のフローチヤート
は、第22図のステツプS1で作成された水平ベクトルに関
するテーブル群(23図)、垂直ベクトルに関するテーブ
ル群(第24図)及び後述する第57図のテーブル群を用い
て動作する。 まずステツプS211で、第57図に示すテーブル群の中で
必要となる項目の初期化を行う。このステツプS211の処
理内容は、第58図のフローチヤートで詳しく示されてい
る。 ステツプS231では、一時的に開始点の項目番号を保持
する変数t(開始点項目番号)を0にする。次にステツ
プS232に進み、変数iを“0"にし、ステツプS233では開
始点候補テーブル571の第i番目の項目を“1"にセツト
する。ステツプS234では変数iを+1し、ステツプS235
で変数iが水平ベクトルカウンタ230の値より小さな値
をもつか否かを判定し、小さな値であればステツプS233
へ戻る。 水平ベクトルカウンタ230の値より大きな値であれば
ステツプS236へ進み、ループ数カウンタ572を“0"にリ
セツトする。次にステツプS237で変数kを“0"にリセツ
トして、元のルーチンに戻る。これにより、開始点候補
テーブル571の0番目より(水平ベクトルカウンタ230−
1)番目の欄に全て“1"がセツトされる。 こうしてステツプS211を終了するとステツプS212に進
み、変数kが水平ベクトルカウンタ230の値の2倍と等
しいか否かを判断し、もし等しければそのままリターン
するが、等しくなければステツプS213へ進む。ステツプ
S213では、ループ数カウンタ572の保持する値のさす開
始点項目番号テーブル574の項目位置に変数tに保持さ
れている値を格納する。S214では、開始点項目番号テー
ブル574のループ数カウンタ572の値で指示される項目に
格納されている値(即ち、ステツプS213で格納した値)
を変数hにセツトする。そして、ステツプS215で変数j
を0にリセツトする。 ここで、ループ数カウンタ572は現在整理中の輪郭の
番号を示し、開始点項目番号テーブル574のループカウ
ンタ572で指示される項目番号欄には、現在整理中の輪
郭の開始点のある項目番号が記憶されている。また、変
数kは現在までの処理済み及び処理中の輪郭内で、処理
済み及び処理中の点の総数を保持し、jは現在整理中の
輪郭内で、処理済の点の個数を保持している。また、変
数hは次に処理する水平ベクトルの項目番号を示す。 次にステツプS216に進み、開始点候補テーブル571
の、変数hの値により指示される項目番号を“0"にリセ
ツトする。次にステツプS217に進み、変数hの値が指す
水平ベクトル開始点のx座標(第23図)及び水平ベクト
ル開始点y座標(第23図)の項目位置に保持される値
を、x座標テーブル575及びy座標テーブル576内の変数
kで指示される項目位置に格納する。それとともに、変
数hの値が指す水平ベクトル流出先ベクトル項目番号
(第23図)の項目位置に保持されている値を変数νにセ
ツトする。この変数νは、次に処理する垂直ベクトルの
項目番号を示している。ステツプS218では、変数k及び
変数jの保持する値をそれぞれ+1する。 次にステツプS219に進み、変数νの値が指す垂直ベク
トル開始点のx座標(第24図)及び垂直ベクトル開始点
のy座標(第24図)の項目位置に保持される値をx座標
テーブル575及びy座標テーブル576内の変数kの値が指
す項目位置に格納する。それとともに、変数νの値が指
す垂直ベクトル流出先ベクトル項目番号(第24図)の項
目位置に保持されている値を変数hにセツトする。これ
により変数hには、この垂直ベクトルより流出する水平
ベクトルの項目番号がセツトされる。ステツプS220で
は、変数k及びjの保持する値をそれぞれ+1する。 次にステツプS221で、変数hの値が現在整理中の輪郭
の開始点の項目番号を保持する573(変数t)の値と等
しいか否かを判断し、等しくなければステツプS216へ戻
り、同一輪郭点の一点として次の点の処理を続けるが、
等しくなるとステツプS222へ進み、現在整理中の輪郭の
処理を終了する。ステツプS222では、変数jの保持する
値を現在処理中の輪郭の中に含まれる点の数として各輪
郭内に含まれる点数を保持する点数テーブル577の、ル
ープ数カウンタ572で指示される項目位置に格納する。
ステツプS223では、整理中の輪郭の番号を示すループ数
カウンタ572を+1する。 次にステツプS224では変数kが保持する既に処理した
点の個数と、水平ベクトルカウンタ230に保持された水
平ベクトルテーブル内に保持される点の数の2倍とが等
しいか否かを判断し、等しい場合は処理を終えてリター
ンする。等しくない場合はステツプS225に進み、開始点
項目番号573の値を+1する。そして、ステツプS226で
は、開始点項目番号573の値で指示される開始点候補テ
ーブル571の項目に保持されている値が“1"か否かを判
断し、“1"でなければステツプS225へ戻り、再度開始点
候補の探索を続ける。一方、“1"であればステツプS213
に戻り、次の輪郭内の点の整理を開始する。 以上、第22図のステツプS2の処理により、第23図〜第
25図に示したベクトルの開始点データは、第57図に示す
テーブルに各輪郭ループ毎に順に並んだ点の座標列とし
て整列される。 <ベクトル列テーブルの出力> 次に第59図のフローチヤートを参照して、第22図のス
テツプS3のベクトル列テーブルフアイルの出力処理を説
明する。 ステツプS241では、変数kを“0"にリセツトする。次
にステツプS242に進み、デイスクI/O521を介して、デイ
スク522上に出力フアイルをオープンする。ステツプS24
3では、ステツプS242でオープンしたフアイルにループ
数カウンタ572に保持されている値を出力する。ステツ
プS244では、変数kの値がループ数カウンタ572に保持
する値と等しいか否かを判定し、等しい場合はステツプ
S245へ進み、出力フアイルをクローズして、元の処理に
戻る。 一方、ステツプS244で等しくない場合はステツプS246
に進み、輪郭ループ内点数テーブル577の変数kの値の
指す項目位置に格納されている値をデイスク522に出力
する。ステツプS247では開始点項目番号テーブル574内
の変数kの値の指す項目位置に格納されている値を変数
mにセツトする。ここで、kは現在出力中の輪郭ループ
番号を保持し、mは現在出力中の輪郭ループ内の点列の
開始点の格納される項目番号を保持している。次にステ
ツプS248ではkの値を+1し、ステツプS249では変数l
の値を“0"にリセツトする。このlは、現在出力中の輪
郭ループ内の出力済の点の数を保持する変数である。 ステツプS250では、lの値が現在出力中の輪郭ループ
内の点の数と等しいか否かを判断し、等しければステツ
プS244へ戻り、等しくなければステツプS251へ進む。ス
テツプS251では、変数mの値が指すx座標テーブル575
及びy座標テーブル576内の項目位置に格納されている
値を出力フアイル521に出力する。次にステツプS252で
はmの値を+1し、ステツプS253では、lの値を+1し
てステツプS250に戻る。かくして、第57図に示されるテ
ーブルに基づいて、第25図に示される形式でデイスク52
2に出力して、第22図のステツプS3の処理を終了する。 以上説明した手順によれば、いわゆる4方向に連結し
た輪郭線が抽出される。しかし、本発明はこれに限定さ
れるものでなく、8方向に連結する輪郭線を抽出する場
合にも適用できる。 <他の実施例> 第1の実施例に於ける、ケース0,ケース1,ケース2,ケ
ース3,ケース4,ケース6,ケース8,ケース9,ケース12をそ
れぞれ第60図,第61図,第62図,第63図,第64図,第65
図,第66図,第67図,第68図に示したケース00,ケース0
1,ケース02,ケース03,ケース04,ケース06,ケース08,ケ
ース09,ケース012の如くに、それぞれの状態に於けるベ
クトルの始点の設定及び連結状態の設定を変えることに
よつて、実行可能である。 以下、それぞれの処理の第69図〜第83図に示すフロー
チヤートに従つて説明する。 第69図はケース00の処理を示すフローチヤートで、ス
テツプS261では、第60図の画素マトリクス601のの位
置の画素近傍の処理を行ない、その内容は第70図のフロ
ーチヤートで示される。このの位置は、前述の第1図
における画素Dの位置に対応している。 第70図のフローチヤートにおいて、このDの位置の画
素が黒画素であれば、既にDと注目点の間のベクトルの
始点は、Dの位置の画素が注目点であつた時の処理によ
り抽出されている。よつてステツプS271ではf(D)=
1の場合は、そのまま何もせぶにリターンする。 f(D)=0の場合はステツプS272に進み、(2i−1,
2j−1)を水平ベクトル602(第60図)の始点として、
第23図のテーブルに登録する。ステツプS273では、この
水平ベクトルの流入元ベクトルが未定であるして、第31
図のテーブル311に登録し、カウンタ310を更新する。次
にステツプS274に進み、この水平ベクトルの流出先のベ
クトルも未定であるとして、第32図のテーブル321に登
録し、カウンタ320を更新する。そして最後に水平ベク
トルカウンタ230を+1して、元の処理に戻る。このよ
うにしてステツプS261のケースeの処理を終える。 次にステツプS262に進み、第1図に示すCの位置の画
素近傍の処理を行なう。その内容は、第71図のフローチ
ヤートで示される。 ステツプS281では(2i−1,2j+1)を垂直ベクトル60
3(第60図)の始点として第24図に示すテーブルに登録
してステツプS282に進み、この垂直ベクトルの流出先の
水平ベクトルを探索して登録する。次にステツプS283に
進み、Cの位置が黒画素か否かを判定し、白画素だつた
場合はステツプS288に進み、ステツプS281で登録した垂
直ベクトル603は流入元ベクトルが未定のベクトルとし
て、第33図のテーブル331に登録して、ステツプS289で
垂直カウンタ240を+1してリターンする。 一方、ステツプS283でCの位置が黒画素の場合はステ
ツプS284に進み、ステツプS281で登録した垂直ベクトル
603は流入元ベクトルが未定のベクトルとして、第33図
のテーブル331に登録する。次にステツプS285で垂直ベ
クトルカウンタ240を+1し、ステツプS286では(2i−
1,2j+1)を、ステツプS281で登録した垂直ベクトルと
は異なる垂直ベクトル604(第60図)の開始点として登
録する。次にステツプS287に進み、ステツプS286で登録
した垂直ベクトル604がベクトル流出先が未定なベクト
ルであるとして第34図に示すテーブル341に登録する。
ステツプS288では、この垂直ベクトル604が流入元が未
定のベクトルであるとしてテーブル331に登録し、ステ
ツプS289では垂直ベクトルカウンタ240を+1してリタ
ーンする。これにより、ステツプS262のケースCの処理
を終了する。 ステツプS263は、第1図に示すBの位置の画素近傍
の処理を行なう。その内容は、第72図のフローチヤート
に示される。 ステツプS291では(2i+1,2j+1)を水平ベクトル60
5(第60図)の始点として第23図のテーブルに登録す
る。次に、ステツプS292にて、この水平ベクトル605が
流出する先の垂直ベクトルを探索して、第23図の流出ベ
クトル項目番号欄に登録する。ステツプS293ではBの位
置が黒画素か否かを判定し、白画素だつた場合はステツ
プS298に進み、ステツプS291で登録した水平ベクトル60
5は、流入元が未定のベクトルとしてテーブル311に登録
し、水平ベクトルカウンタ230を+1してリターンす
る。 一方、Bの位置が黒画素だつた場合はステツプS294へ
進む。ステツプS294では、ステツプS291で登録した水平
ベクトル605は、流入元ベクトルが未定のベクトルとし
てテーブル311に登録し、カウンタ310を+1する。次に
ステツプS295に進み、水平ベクトルカウンタ230を+1
する。次に、ステツプS296に進み、(2i+1,2j+1)を
ステツプS291で登録した水平ベクトルとは異なる水平ベ
クトル606(第60図)の開始点として第23図のテーブル
に登録する。次にステツプS297に進み、ステツプS296で
登録したベクトルは、流出先が未定のベクトルであると
してテーブル321にその水平ベクトルを登録し、カウン
タ320を更新する。そして、ステツプS298では、この水
平ベクトルが流入元未定のベクトルであるとしてテーブ
ル311に登録し、ステツプS299では水平ベクトルカウン
タ230を+1してリターンする。 これにより、ステツプS263のケースbの処理を終え
る。 第69図のステツプS264では、第1図に示したAの位置
の画素近傍の処理を行なう。その処理内容は第73図の
フローチヤートに示される。 ステツプS301ではAの位置が黒画素か否かを判断し、
白画素だつた場合はステツプS302へ進み、(2i+1,2j−
1)を垂直ベクトル607(第60図)の始点として登録
し、ステツプS303へ進む。ステツプS303では、ステツプ
S302で登録した垂直ベクトル607の流出先のベクトルを
先に説明した第35図に示した処理と同様に探索して登録
する。但し、第35図のS62における判定項の(2i−1)
が、ここでは(2i+1)となる点のみが異なり、他は第
35図に示した処理と全く同様の処理手順である。 次にステツプS304に進み、ステツプS302で登録した垂
直ベクトル607の流入元のベクトルを前述の第45図のフ
ローチヤートで示した処理を行うことにより探索し登録
する。ステツプS305では、垂直ベクトルカウンタ240を
+1してリターンする。 一方、ステツプS301において、Aの位置が黒画素素で
あつた場合は、既にAと注目点の間のベクトルの始点は
Aの位置の画素が注目点であつた時の処理にて抽出され
ているため、ステツプS306で垂直ベクトルカウンタ240
の値を一旦退避させた後、ステツプS307〜S310で、この
時すでに登録されているAと注目点間の垂直ベクトルで
流出先が未定のものを探し出す。即ち、ステツプS308で
はテーブル341の項目(k−1)の内容で与えられる値
で指定される垂直ベクトルのx座標が(2i+1)かを調
べ、そうであればステツプS310でテーブル341の項目
(k−1)の欄の内容をカウンタ240にセツトする。そ
してステツプS311で、この垂直ベクトルの流出先の水平
ベクトルを、前述のステツプS303と全く同手順で探索・
登録する。 ステツプS312〜S315では、この時既に登録されている
Aと注目点の間の垂直ベクトルで流入元が未定のものを
捜し出す。即ち、ステツプS313ではテーブル331の項目
(k−1)の内容で与えられる値で指定される垂直ベク
トルのy座標が(2j−1)かどうかを調べ、そうであれ
ばステツプS315に進み、テーブル331の項目(k−1)
の欄の内容をカウンタ240にセツトする。次にステツプS
316にて、この垂直ベクトルの流入元になる水平ベクト
ルを探索・登録する。ステツプS317ではステツプS306で
退避した垂直ベクトルカウンタ240の値を再度設定して
元の処理に戻る。 こうして、第9図のステツプS264のケースaの処理を
終えてリターンすることにより、ケース00の処理を終了
する。 第60図において、610はこれら4つの画素がいずれも
白画素のときのベクトルを示し、611はaの位置の画素
のみが黒画素の時のベクトルを示す。以下同様に、612
はbの位置の画素のみが黒画素のとき、613はcの位置
の画素がのみが黒画素である場合、614は画素eのみが
黒画素の場合を示す。その他については説明を省略す
る。 第74図はケース01の処理を示すフローチヤートであ
る。 まずステツプS321では、第61図のの位置の画素近傍
の処理を行なう。その処理内容は前述の第71図のケース
Cと全く同様である。次にステツプS322に進み、第61図
のの位置の近傍の処理を行う。その処理内容は第75図
のフローチヤートで示される。 ステツプS351では、(2i+1,2j+1)を水平ベクトル
615(第61図)の始点として登録し、ステツプS352では
この水平ベクトル615が流出する先の垂直ベクトルを探
索して登録する。次にステツプS353に進み、Bの位置が
黒画素か否かを判定し、白画素の場合はステツプS358に
進み、ステツプS351で登録した水平ベクトル615の流入
元のベクトルを探索・登録し、ステツプS359で水平ベク
トルカウンタ230を+1して元のルーチンに戻る。 一方、ステツプS353でBの位置が白画素の場合はステ
ツプS354へ進み、ステツプS351で登録した水平ベクトル
615は流入元が未定のベクトルとしてテーブル311に登録
し、ステツプS355では水平ベクトルカウンタを+1す
る。次にステツプS356に進み、(2i+1,2j+1)をステ
ツプS351で登録した水平ベクトルとは異なる水平ベクト
ル616の開始点として、第23図のテーブルに登録する。
次にステツプS357に進み、ステツプS356で登録した水平
ベクトル616ルは流出先が未定のベクトルであると、テ
ーブル321に登録する。そして、ステツプS358に進み、
ステツプS356で登録した水平ベクトル616の流入元とな
る垂直ベクトルを探索・登録し、ステツプS359で水平ベ
クトルカウンタ230を+1して元のルーチンに戻る。 このようにして第74図のステツプS322を終了し、元の
ルーチンに戻る。これにより、ケース01の処理を終了す
る。第61図は画素が黒画素かどうかによるベクトル
の発生状態を示している。 第76図はケース02の処理を示すフローチヤートであ
る。 ステツプS331では、第62図のの位置近傍の処理(ケ
ースe)を行ない、その内容は前述の第70図に示す処理
と全く同様である。次にステツプS332では、第62図の
の位置近傍の処理を行ない、その内容は前述の第71図の
処理(ケースc)と全く同様である。このようにして、
ケース02の処理を終了する。第62図は画素が黒画素
かどうかによるベクトルの発生状態を示している。 第77図はケース03の処理を示すフローチヤートであ
る。 ステツプS341では、第63図のの位置近傍の処理を行
ない、その内容は前述の第71図のフローチヤートで示す
処理と全く同様である。次にステツプS342に進み、第63
図のAの位置近傍の処理を行ない、その内容は前述の第
38図の処理と全く同様である。こうして、ケース03の処
理が行われる。第63図は画素Aが黒画素かどうかによ
るベクトルの発生状態を示している。 第78図はケース04の処理を示すフローチヤートであ
る。 ステツプS361では、第64図のの位置近傍の処理を行
ない、その内容は前述の第70図のフローチヤートで示す
処理と全く同様である。ステツプS362では、第64図の
の位置の処理を行ない、その内容は第79図のフローチヤ
ートで示す。 第79図のステツプS391では、Aの位置の画素が黒画素
か否かを判定する。白画素であればステツプS392へ進
み、(2i+1,2j−1)を垂直ベクトル640(第64図)の
始点として登録する。次にステツプS393に進み、ステツ
プS392で登録した垂直ベクトル640への流入元となる水
平ベクトルを探索・登録する。そして、ステツプS394に
進み、ステツプS392で登録した垂直ベクトル640が流出
する先の水平ベクトルが未定のものであるとテーブル34
1に登録し、カウンタ340を更新する。次にステツプS395
で垂直ベクトルカウンタ240を+1して元のルーチンに
戻る。 一方、ステツプS391でAの位置が黒画素であつた場合
は、既にAと注目点の間のベクトルの始点は、Aの位置
の画素が注目点であつた時の処理にて抽出されているた
め、ステツプS396で垂直ベクトルカウンタ240の値を一
旦退避させる。その後、ステツプS397〜S400で、この時
すでに登録されているAと注目点間の垂直ベクトルで流
入元が未定のものを探し出す。即ち、ステツプS398でテ
ーブル331の項目(k−1)の内容で与えられる値で指
定される水平ベクトルのy座標が(2j+1)かを調べ、
そうであればステツプS400でテーブル331の項目(k−
1)の欄の内容をカウンタ240にセツトする。次にステ
ツプS401でこのベクトルの流入元の水平ベクトルを前述
のステツプS393と全く同手順で探索・登録する。次にス
テツプS402に進み、ステツプS396で一旦退避させた垂直
ベクトルカウンタ240の値を再度、垂直ベクトルカウン
タ240にセツトして元のルーチンに戻る。かくして第78
図のステツプS362の処理を終了し、リターンしてケース
04の処理を終える。第64図は画素が黒画素かどうか
によるベクトルの発生状態を示している。 第80図にケース06の処理を示す。ステツプS371では、
第65図のの位置の処理を行ない、その内容は前述第70
図の処理(ケースe)と全く同様である。ステツプS372
では、第65図のBの位置の処理を行ない、その内容は前
述第42図の処理(ケースB)と全く同様である。このよ
うにしてステツプS372の処理を終了すると元の処理に戻
り、ケース06の処理を終了する。第65図は画素Bが黒
画素かどうかによるベクトルの発生状態を示している。 第81図はケース08の処理を示すフローチヤートであ
る。 ステツプS381では、第66図のの位置の画素に対する
処理を行ない、その内容は前述第72図に示す処理(ケー
スb)と同じである。ステツプS382で、第66図のの位
置の画素の処理を行ない、その内容は前述第79図の処理
と同じである。このようにして、ステツプS382の処理
(ケースa′)を終了すると、リターンしてケース08の
処理を終了する。第66図は画素が黒画素かどうかに
よるベクトルの発生状態を示している。 第82図はケース09の処理を示すフローチヤートであ
る。 まずステツプS411で、第67図のDの位置の画素の処理
(ケースD)を行ない、その内容は前述の第48図のフロ
ーチヤートに示す。次にステツプS412で、第67図ので
示す位置の画素の処理を行ない、その内容は前述第75図
に示すフローチヤートと同様である。こうしてステツプ
S412の処理(ケースb′)を終了すると、リターンして
ケース09の処理を終える。第67図は画素Dが黒画素か
どうかによるベクトルの発生状態を示している。 第83図はケース012の処理を示すフローチヤートであ
る。まずステツプS421では、第68図のCの位置の処理
(ケースC)を行ない、その内容は前述第52図に示すフ
ローチヤートと同じである。次にステツプS422で、第68
図のの位置の処理を行ない、その内容は前述第79図の
フローチヤートに示す処理(ケースa′)を行なう。こ
うしてステツプS422の処理を終了するとリターンして、
ケース012の処理を終了する。第68図は画素が黒画
素かどうかによるベクトルの発生状態を示している。 以上、説明した手順を行なえば、8方向に連結した輪
郭線の抽出がラスター走査により実行可である。 以上説明した全ての水平ベクトルを垂直ベクトルに、
また、全ての垂直ベクトルを水平ベクトルとして抽出す
る様にしても、抽出される輪郭ループの回転方向が反対
になるだけで同様に輪郭が抽出される。 また、4方向の輪郭線として抽出するか、或は8方向
の輪郭線として抽出するかは、外部からの指示によつて
CPUが判断し、使い分けることができることは容易に理
解できる。 以上説明したように本実施例によれば、注目点の近傍
の8画素の状態に応じて、輪郭ベクトル列上のベクトル
の始点及び終了点の候補を抽出して保持し、かつ既に保
持されている候補との連結関係を判定することにより、
ラスター走査を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,340……カウンタ、311……
流入ベクトル未定水平ベクトルテーブル、321……流出
ベクトル未定水平ベクトルテーブル、331……流入ベク
トル未定垂直ベクトルテーブル、341……流出ベクトル
未定垂直ベクトルテーブル、501……入力制御回路、502
〜504,507〜512……ラツチ、505,506……FIFO、513,514
……入力ポート、515……主走査カウンタ、516……副走
査カウンタ、517……入出力制御ポート、519……CPU,52
0……ワーキングメモリ、521……デイスクI/O、522……
デイスクである。

Claims (6)

    (57)【特許請求の範囲】
  1. 【請求項1】画像を入力する入力手段と、 前記入力手段により入力した画像の画素マトリクスをラ
    スタ走査し、当該画素マトリクス内の複数画素の状態に
    応じて黒画素と白画素との境界に輪郭ベクトルを抽出す
    る抽出手段を有する輪郭抽出装置であって、 前記抽出手段は前記複数画素の状態が主走査方向又は副
    走査方向に継続する輪郭の途中部分を表わす場合は、輪
    郭ベクトルの座標値のセットおよび前記輪郭ベクトルの
    接続関係を特定するための処理を行わず、前記複数画素
    の状態が主走査方向又は副走査方向に開始する輪郭の開
    始部分を表わす場合には輪郭ベクトルの座標値をセット
    し接続状態を未定とし、前記複数画素の状態が主走査方
    向又は副走査方向に途切れる輪郭の終了部分を表す場合
    には輪郭ベクトルの座標値をセットし接続状態を確定す
    ることにより前記輪郭ベクトルを抽出することを特徴と
    する輪郭抽出装置。
  2. 【請求項2】前記画素マトリクスは3画素×3画素を含
    むことを特徴とする請求項1に記載の輪郭抽出装置。
  3. 【請求項3】前記輪郭ベクトルは、水平ベクトルと垂直
    ベクトルとが交互に接続していることを特徴とする請求
    項1記載の輪郭抽出装置。
  4. 【請求項4】入力した画像を画素マトリクス内でラスタ
    走査して当該画素マトリクス内の複数画素の状態に応じ
    て黒画素と白画素との境界に輪郭ベクトルを抽出する輪
    郭抽出方法であって、 前記複数画素の状態が主走査方向または副走査方向に継
    続する輪郭の途中部分を表わす場合、当該輪郭ベクトル
    の座標値のセット及び前記輪郭ベクトル同士の接続関係
    を特定するための処理を行わず、 前記複数画素の状態が主走査方向または副走査方向に開
    始する輪郭の開始部分を表わす場合には当該輪郭ベクト
    ルの座標値をセットし接続状態を未定とし、前記複数画
    素の状態が主走査方向又は副走査方向に途切れる輪郭の
    終了部分を表す場合には輪郭ベクトルの座標値をセット
    し接続状態を確定することにより前記輪郭ベクトルを抽
    出することを特徴とする輪郭抽出方法。
  5. 【請求項5】前記画素マトリクスは3画素×3画素マト
    リクスを含むことを特徴とする請求項4記載の輪郭抽出
    方法。
  6. 【請求項6】前記輪郭ベクトルは、水平ベクトルと垂直
    ベクトルとが交互に接続していることを特徴とする請求
    項4記載の輪郭抽出方法。
JP02281958A 1990-10-22 1990-10-22 輪郭抽出方法及びその装置 Expired - Lifetime JP3026592B2 (ja)

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 JPH04157578A (ja) 1992-05-29
JP3026592B2 true 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 (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2270714A2 (en) 2009-07-01 2011-01-05 Canon Kabushiki Kaisha Image processing device and image processing method
JP2012053691A (ja) * 2010-09-01 2012-03-15 Canon Inc 画像処理方法、画像処理装置、及び、プログラム
US8150185B2 (en) 2007-11-07 2012-04-03 Canon Kabushiki Kaisha Image processing for generating a thin line binary image and extracting vectors
US8331736B2 (en) 2008-06-04 2012-12-11 Canon Kabushiki Kaisha Image processing device and method therefor
US8532385B2 (en) 2009-06-24 2013-09-10 Canon Kabushiki Kaisha Image processing apparatus and image processing method
US8553985B2 (en) 2010-08-27 2013-10-08 Canon Kabushiki Kaisha Image processing apparatus, image processing method and computer-readable medium
US8571359B2 (en) 2008-06-30 2013-10-29 Canon Kabushiki Kaisha Image processing device, method and storage medium for storing and displaying an electronic document
US8643649B2 (en) 2010-03-30 2014-02-04 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and computer-readable medium
US8687895B2 (en) 2010-10-18 2014-04-01 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and computer-readable medium
US8774524B2 (en) 2010-03-18 2014-07-08 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and storage medium of image processing method
US9035952B2 (en) 2010-03-30 2015-05-19 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and computer-readable medium

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933528A (en) * 1992-01-27 1999-08-03 Canon Kabushiki Kaisha Image processing apparatus
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
JP2954426B2 (ja) * 1992-06-26 1999-09-27 キヤノン株式会社 画像処理方法及び装置
EP0589702B1 (en) * 1992-09-24 1999-05-12 Canon Kabushiki Kaisha Image processing method and apparatus
JP3026698B2 (ja) * 1993-05-27 2000-03-27 キヤノン株式会社 画像処理方法及びその装置
DE69433603D1 (de) * 1993-10-26 2004-04-15 Canon Kk Bildverarbeitungsverfahren und -gerät
DE69525390D1 (de) 1994-06-17 2002-03-21 Canon Kk Verfahren und Vorrichtung zur Gewinnung von Konturinformation
US5974195A (en) * 1994-10-14 1999-10-26 Canon Kabushiki Kaisha Image processing apparatus and method
JP3007001B2 (ja) 1994-10-17 2000-02-07 キヤノン株式会社 画像処理装置及び方法
JPH08179752A (ja) * 1994-12-21 1996-07-12 Canon Inc 画像処理装置及び方法
US6289136B1 (en) 1995-03-22 2001-09-11 Canon Kabushiki Kaisha Image processing method and apparatus
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
CN101065782A (zh) * 2004-11-27 2007-10-31 布雷克成像有限公司 在网格表面和立体对象上产生和测量表面线的***和方法以及网格分割技术(“曲线测量”)
US7889938B2 (en) 2006-03-31 2011-02-15 Canon Kabushiki Kaisha Method and apparatus for processing line drawings in images
JP4928325B2 (ja) * 2006-03-31 2012-05-09 キヤノン株式会社 画像処理方法、画像処理装置、プログラムおよび記憶媒体
JP4764231B2 (ja) 2006-03-31 2011-08-31 キヤノン株式会社 画像処理装置、制御方法、コンピュータプログラム
JP4687900B2 (ja) * 2006-04-03 2011-05-25 富士ゼロックス株式会社 画像処理装置、及びプログラム。
JP4878209B2 (ja) * 2006-05-15 2012-02-15 キヤノン株式会社 画像処理装置、画像処理方法、コンピュータプログラム
JP5058575B2 (ja) 2006-12-12 2012-10-24 キヤノン株式会社 画像処理装置及びその制御方法、プログラム
JP5017031B2 (ja) * 2007-09-13 2012-09-05 キヤノン株式会社 画像処理装置、画像処理方法、画像処理プログラム、並びに、記憶媒体
JP4991590B2 (ja) * 2008-02-14 2012-08-01 キヤノン株式会社 画像処理装置、画像処理方法、画像処理プログラム、及び、記憶媒体
JP5111226B2 (ja) 2008-05-02 2013-01-09 キヤノン株式会社 画像処理方法、画像処理装置、及び、そのプログラムならびにコンピュータ読み取り可能な記憶媒体
JP5137679B2 (ja) * 2008-05-07 2013-02-06 キヤノン株式会社 画像処理装置および画像処理方法
JP5049921B2 (ja) * 2008-08-26 2012-10-17 キヤノン株式会社 画像処理装置及び画像処理方法
JP5049920B2 (ja) 2008-08-26 2012-10-17 キヤノン株式会社 画像処理装置及び画像処理方法
JP5049922B2 (ja) * 2008-08-26 2012-10-17 キヤノン株式会社 画像処理装置及び画像処理方法
JP5159588B2 (ja) * 2008-12-05 2013-03-06 キヤノン株式会社 画像処理装置、画像処理方法、コンピュータプログラム
JP5315075B2 (ja) 2009-02-05 2013-10-16 キヤノン株式会社 画像処理装置、画像処理装置の制御方法およびプログラム
JP5843474B2 (ja) * 2011-05-09 2016-01-13 キヤノン株式会社 画像処理装置、画像処理方法、及び、プログラム
JP5801598B2 (ja) * 2011-05-09 2015-10-28 キヤノン株式会社 画像処理装置、画像処理方法、及び、プログラム
CN102855642B (zh) * 2011-06-28 2018-06-15 富泰华工业(深圳)有限公司 图像处理装置及其物体轮廓的提取方法
JP5854802B2 (ja) * 2011-12-01 2016-02-09 キヤノン株式会社 画像処理装置、画像処理方法、及びコンピュータプログラム
JP6169366B2 (ja) * 2013-02-08 2017-07-26 株式会社メガチップス 物体検出装置、プログラムおよび集積回路

Family Cites Families (9)

* Cited by examiner, † Cited by third party
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 株式会社リコー 画像符号化方法

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8150185B2 (en) 2007-11-07 2012-04-03 Canon Kabushiki Kaisha Image processing for generating a thin line binary image and extracting vectors
US8331736B2 (en) 2008-06-04 2012-12-11 Canon Kabushiki Kaisha Image processing device and method therefor
US8965125B2 (en) 2008-06-30 2015-02-24 Canon Kabushiki Kaisha Image processing device, method and storage medium for storing and displaying an electronic document
US8571359B2 (en) 2008-06-30 2013-10-29 Canon Kabushiki Kaisha Image processing device, method and storage medium for storing and displaying an electronic document
US8532385B2 (en) 2009-06-24 2013-09-10 Canon Kabushiki Kaisha Image processing apparatus and image processing method
US8428356B2 (en) 2009-07-01 2013-04-23 Canon Kabushiki Kaisha Image processing device and image processing method for generating electronic document with a table line determination portion
EP2270714A2 (en) 2009-07-01 2011-01-05 Canon Kabushiki Kaisha Image processing device and image processing method
JP2011013897A (ja) * 2009-07-01 2011-01-20 Canon Inc 画像処理装置、画像処理方法、及びプログラム
US8774524B2 (en) 2010-03-18 2014-07-08 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and storage medium of image processing method
US8643649B2 (en) 2010-03-30 2014-02-04 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and computer-readable medium
US9035952B2 (en) 2010-03-30 2015-05-19 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and computer-readable medium
US8553985B2 (en) 2010-08-27 2013-10-08 Canon Kabushiki Kaisha Image processing apparatus, image processing method and computer-readable medium
JP2012053691A (ja) * 2010-09-01 2012-03-15 Canon Inc 画像処理方法、画像処理装置、及び、プログラム
US8687895B2 (en) 2010-10-18 2014-04-01 Canon Kabushiki Kaisha Image processing apparatus, image processing method, and computer-readable medium

Also Published As

Publication number Publication date
EP0482862A3 (en) 1992-12-02
DE69131922T2 (de) 2000-06-21
EP0482862A2 (en) 1992-04-29
DE69131922D1 (de) 2000-02-24
US6404921B1 (en) 2002-06-11
EP0482862B1 (en) 2000-01-19
JPH04157578A (ja) 1992-05-29

Similar Documents

Publication Publication Date Title
JP3026592B2 (ja) 輪郭抽出方法及びその装置
JP5854802B2 (ja) 画像処理装置、画像処理方法、及びコンピュータプログラム
JPH0658677B2 (ja) 対話式図形探索置換方法
US6339439B1 (en) Device for modifying appearance of related display planes
Ma et al. A novel fully parallel skeletonization algorithm
JP2023109570A (ja) 情報処理装置、学習装置、画像認識装置、情報処理方法、学習方法、画像認識方法
US6728407B1 (en) Method for automatically determining trackers along contour and storage medium storing program for implementing the same
EP0553762B1 (en) Image processing method and apparatus
Xu A generalized discrete morphological skeleton transform with multiple structuring elements for the extraction of structural shape components
Rasoulzadeh et al. Strokes2Surface: Recovering Curve Networks From 4D Architectural Design Sketches
JP3564371B2 (ja) 図形編集装置及び方法
JP3133807B2 (ja) 輪郭抽出方法及びその装置
JPH1049688A (ja) 画像データの部分消去および部分検出方法
JP2008042346A (ja) 画像処理方法、画像処理装置
Sircar et al. An automated approach for labeling raster digitized contour maps
US6240216B1 (en) Method and apparatus for processing an image, storage medium for storing an image processing program
JP2003150639A (ja) メディア検索装置及び記憶媒体
Marchand-Maillet et al. A minimum spanning tree approach to line image analysis
JP2954434B2 (ja) 画像処理方法及びその装置
JP3647075B2 (ja) 画像検索方法及びその装置
JP3679619B2 (ja) 画像の輪郭抽出方法、装置、および記録媒体
JP2001351110A (ja) 形状輪郭線分割方法、形状輪郭線分割器、および形状輪郭線分割プログラムを記憶した記憶媒体
JPH0573693A (ja) 輪郭塗り潰し方式
JPH04112276A (ja) 2値画像輪郭線チェイン符号化装置
JPH0535872A (ja) 2値画像の輪郭追跡方式

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