JP2954434B2 - 画像処理方法及びその装置 - Google Patents
画像処理方法及びその装置Info
- Publication number
- JP2954434B2 JP2954434B2 JP4254989A JP25498992A JP2954434B2 JP 2954434 B2 JP2954434 B2 JP 2954434B2 JP 4254989 A JP4254989 A JP 4254989A JP 25498992 A JP25498992 A JP 25498992A JP 2954434 B2 JP2954434 B2 JP 2954434B2
- Authority
- JP
- Japan
- Prior art keywords
- vector
- image
- pixel
- contour
- image processing
- 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 - Fee Related
Links
Landscapes
- Image Processing (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Analysis (AREA)
Description
置、詳しくはラスタ走査順で入力した2値画像の輪郭線
を抽出する画像処理方法とその装置に関するものであ
る。
ォントを作成する場合、2値画像文字パターンの輪郭線
を抽出し、その輪郭線をベクトル情報形式で記憶するこ
とにより、その文字のアウトラインフォントを作成す
る。このような2値画像より輪郭線を抽出するには、ま
ず2値画像における輪郭線追跡のための追跡開始点を見
付けることから始められる。そして、この追跡開始点が
発見されると、次にこの追跡開始点から順にその画像の
輪郭を追跡していき、追跡の終った輪郭点には次々に追
跡済のマークを付けながら追跡を続行する。こうして、
この追跡が一巡した時点で1つの輪郭点列(輪郭線)を
求めている。このような手順を繰り返し行うことによ
り、その画像中のすべての輪郭線を抽出することができ
る。
示す。図2において、201は内側に空白部分202を
含む2値画像パターンで、この輪郭線を抽出する場合を
説明する。但し、図2における1つのマス目は1ドット
(画素)を表わしている。
準点(0,0)からラスタ走査してゆく。
(例えばドット203)が存在する点にぶつかったなら
ば、その点をP0としてドットパターンの輪郭追跡を開
始する。全画面分を探しても点P0が存在しなければ手
順終了。
画素方向に、図3に示す順番で探索を開始する。そし
て、最初に出会った画素が存在する点(図2の場合では
ドット204)を次の輪郭点P1とする。尚、この時、
隣接点が存在しない場合は、その点を孤立点として手順
(2)へ戻る。
行い、図4に示したように、Piに隣接する8方向の近
傍画素に対して、次の輪郭点Pi+1を抽出する。これ
は、直前にマーク付けを行った点401より、Pi(ド
ット204)を中心に反時計回り方向にドットが存在す
るかを探索し、最初に出会った画素が存在する点を次の
輪郭点Pi+1とするものである。
々に輪郭点を求める。但し、Pn+1=P1、Pn=P0とな
ったならは、P0、P1、・・・、Pn-1を1つの領域の
輪郭点列となし、手順(6)へ進む。
めに手順(2)へ戻る。
目点を、◎(401)は直前にマーク付けを行った点を
示している。又、図中に示された数字は画素(ドット)
の有無を探索する順番を表現している。
始点を決定した後は、輪郭線に沿った追跡を行うため、
全画像をメモリ上に取り込んだ後で、輪郭線の抽出処理
を開始しなければならない。このため、必要とするメモ
リ容量が大きくなり、コストアップや処理時間が遅くな
る等の不具合があった。
に、ラスタ走査順に画像を取り込み、注目画素とその近
傍の画素の状態により輪郭点を抽出する方法を本願出願
人は提案した。この方法では、画素単位に輪郭線の接続
状態を保持しておく接続情報テーブルを持っており、画
像内の全ての画素について輪郭を抽出し終った段階で、
再び接続情報テーブルを走査して、最終的な輪郭ベクト
ルの総ループ数、各ループを構成する輪郭点の個数、各
ループを構成する輪郭点の座標値等を求めている。
も、画像内の全ての画素について輪郭(粗輪郭)ベクト
ルを抽出し終った段階で、再び接続情報テーブルを走査
して、最終的な輪郭ベクトルの総ループ数、各ループを
構成する輪郭点の個数、各ループを構成する輪郭点の座
標値等を求めているため、画像内の輪郭点の接続情報を
全て保持しておかなければならないので接続情報テーブ
ルの容量が大きくなり、テーブルの検索スピードが低下
する傾向にあることがわかった。
に鑑み成されたものであり、輪郭ベクトルを抽出する場
合における各輪郭ベクトルの接続関係を記憶するための
メモリ量を少なくすることを可能にする画像処理方法及
び装置を提供しようとするものである。
画像処理装置は以下の構成を備える。すなわち、入力画
像から1ライン以上の白ラインを検出する検出手段と、
前記検出手段による1ライン以上の白ラインが検出され
た場合、入力画像を、検出された白ライン位置に基づい
て帯状画像に分割する分割手段と、前記分割手段により
分割された帯状画像単位で輪郭ベクトルを抽出する抽出
手段とを有する。
を備える。
出する検出ステップと、前記検出ステップによる1ライ
ン以上の白ラインが検出された場合、入力画像を、検出
された白ライン位置に基づいて帯状画像に分割する分割
ステップと、前記分割ステップにより分割された帯状画
像単位で輪郭ベクトルを抽出する抽出ステップとを有す
る。
抽出した輪郭ベクトルの整列処理までを高速に行え、且
つ、必要とするメモリも少なくて済む画像処理装置及び
方法を提供しようとするものである。
理装置は以下の構成を備える。すなわち、入力画像を記
憶するメモリに入力画像が所定量記憶されたことを検出
する検出手段と、前記検出手段による所定量記憶された
ことの検出に基づき、入力画像を複数の帯状画像に分割
する分割手段と、前記分割手段により分割された帯状画
像単位で、輪郭点を輪郭ベクトルの端点とする輪郭ベク
トルデータを抽出する抽出手段と該抽出手段で抽出した
前記帯状画像毎の輪郭ベクトルデータを、輪郭点の接続
順になるように整列する整列手段とを有する。
を備える。
定量記憶されたことを検出する検出ステップと、前記検
出ステップによる所定量記憶されたことの検出に基づ
き、入力画像を複数の帯状画像に分割する分割ステップ
と、前記分割ステップにより分割された帯状画像単位
で、輪郭点を輪郭ベクトルの端点とする輪郭ベクトルデ
ータを抽出する抽出ステップと該抽出ステップで抽出し
た前記帯状画像毎の輪郭ベクトルデータを、輪郭点の接
続順になるように整列する整列ステップとを有する。
輪郭ベクトルを抽出することでメモリ使用量を少なくす
ると共に、隣接する分割画像の近傍にある有意な輪郭ベ
クトルについては平滑化対象としないことで、良好な再
生画像を得ることを可能ならしめる画像処理装置及び方
法を提供しようとするものである。
画像処理装置は以下の構成を備える。すなわち、入力画
像を複数の帯状画像に分割する分割手段と、前記分割手
段により分割された帯状画像単位で輪郭ベクトルを抽出
する抽出手段と、前記抽出手段により抽出された輪郭ベ
クトルに基づき平滑化を行う平滑化手段とを有し、前記
平滑化手段は、連続する2つの帯状画像それぞれの輪郭
ベクトルのうち、前記2つの帯状画像間の境界近傍にあ
る有意な座標位置の輪郭ベクトルを対象外とし、平滑化
を行うことを特徴とする。
を備える。
ステップと、前記分割ステップにより分割された帯状画
像単位で輪郭ベクトルを抽出する抽出ステップと、前記
抽出ステップにより抽出された輪郭ベクトルに基づき平
滑化を行う平滑化ステップとを有し、前記平滑化ステッ
プは、連続する2つの帯状画像それぞれの輪郭ベクトル
のうち、前記2つの帯状画像間の境界近傍にある有意な
座標位置の輪郭ベクトルを対象外とし、平滑化を行うこ
とを特徴とする。
を白ラインを検出することで帯状画像として分割し、そ
の帯状画像単位に輪郭ベクトルを抽出する。
例を詳細に説明する。
うに、入力画像をストライプ状に分割し、各ストライプ
毎に注目画素(101)と、その近傍の8個の画素の状
態を見て処理を進めるもので、注目画素をラスタ走査
し、1画素ごとにその位置をずらしながら画像全体の処
理を逐次行ってゆく。
り、”0”及び”2”で示された位置は、主走査方向に
対し注目画素101と同じ位置にあり、副走査方向のそ
れぞれ1ラスタ前の画素(0)及び1ラスタ先の画素
(2)を示す。”1”及び”3”で示された位置は、注
目画素101と同一のラスタ上にあり、それぞれ1画素
前の画素(3)及び1画素先の画素(1)を示してい
る。さらに、”A”及び”B”は、主走査方向に1画素
先の位置にあり、それぞれ1ラスタ前及び1ラスタ先の
位置にある画素を示し、”C”及び”D”は主走査方向
の1画素前の位置にある画素で、それぞれ1ラスタ先及
び1ラスタ前の位置にある画素を示す。
ウエア構成例を示すブロック図である。
画像データをやりとりするための入力制御(インタ−フ
ェース)部であり、この信号線500よりラスタ走査形
式で順次2値画像データが入力されてくる。502はラ
ッチで、501より入力された画像データを、図示しな
い画素同期クロックに同期して1画素づつ順次更新しな
がら保持する。次の画素同期クロックにて、ラッチ50
2は次の画素データを入力制御回路501より入力す
る。この時、既に保持していた画素データは、その画素
クロックに同期してラッチ503にラッチされ、保持さ
れることになる。同様にラッチ503は保持されていた
画素データは、次の画素同期クロックにて、ラッチ50
4に保持される。
画素データを保持するFIFO(ファーストイン・ファ
ーストアウト・メモリ)である。FIFO505は、ラ
ッチ504の出力を順次、画素同期クロックに同期して
取り込み、1ラスタ前のデータをラッチ507へ出力す
る。同様に、FIFO506も、ラッチ509の出力を
取り込み、ラッチ510に1ラスタ前の画素データを出
力する。ラッチ507、508、509及びラッチ51
0、511、512は共に前記ラッチ502、503、
504と全く同様に動作する。
3、504、507、508、509、510、511
及び512には、常に3×3画素のデータ、換言すれば
ある領域の画素データが記憶されることになる。ここで
ラッチ508に保持された画素データを注目画素位置
(図1の符号101)として見ると、その回りの各ラッ
チには図1における画素位置”B”、”2”、”
C”、”1”、”3”、”A”、”0”、”D”のデー
タが保持されることになる。
ポート513は、ラッチ510、502、504、51
2のデータ、即ち、それぞれ図1における”A”、”
B”、”C”、”D”の位置のデータをCPU519に
供給する。同様に、入力ポート514はラッチ511、
507、503、509、508のデータ、即ち、”
0”、”1”、”2”、”3”及び注目画素位置のデー
タをCPU519に供給する。
査カウンタであり、図示しない副走査同期信号によりリ
セットされ、画素同期信号によりカウントアップする。
516は副走査方向の画素位置を示す副走査カウンタ
で、図示しないページ同期信号によりリセットされ、副
走査同期信号によりカウントアップされる。517は入
出力制御用の入出力ポートであり、入出力制御回路50
1に対し、画素データ入力の実行及び保留を指示する信
号、及び入出力制御回路501よりCPU519への画
素データ更新を知らせる信号等を保持する。521はハ
ードディスク522の入出力制御装置である。
ウンタ515、副走査カウンタ516、入力ポート51
3、514、メモリ520、ディスクI/O521はバ
ス518を介してCPU519に接続されている。
ト517を介して、画素データの更新を行い、主走査カ
ウンタ515及び副走査カウンタ516を介して、注目
画素の画素位置(i,j)を知ることができる。また、
入力ポート513及び514を介して、注目画素及びそ
の近傍の8方向の画素の状態を知ることができる。
と、CPU519は入出力制御ポート517を介して9
個のラッチに記憶される画素データの更新を指示し、同
時に画素データの更新指示の信号をクリアするととも
に、後段のラッチにラッチされる画素データを更新し、
この更新が終了すると入出力制御ポート517に、更新
完了の信号を出力する。
力制御ポート517より更新完了の信号が入力されるの
を監視している。この更新完了の信号が入力されると、
新たに9個のラッチに記憶された画素データに関する処
理を実行し、以下同様にこれを繰り返すものである。
CPU519の動作処理手順(詳細は後述する)を記憶
しているROM及びワークエリアとして使用されるRA
Mを内蔵している。
最終画素を注目画素として処理し終った際に、入出力制
御ポート517に終了信号を出力する。
に応じた、それぞれの場合の処理を説明する。
輪郭の一部ではないので、その処理を終了してラスタ走
査を1画素分進め、注目画素位置を更新する。
状態によって以下の処理を行う。図6〜図21に各状態
における処理内容を示してある。
て、”d”は”do not 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)、点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画素×n画素の画像は、2m×2nの正の
偶数(整数)の座標表現で表わすものとする。これによ
り、上述の図6の例は、注目画素位置を(6,14)で
あると表現し、それぞれ4つの終点、始点は(5,1
3)、(7,13)、(7,15)、(5,15)とな
る。これにより、図6の4本のベクトルは、 [(5,13),(7,13)] [(7,13),(7,15)] [(7,15),(5,15)] [(5,15),(5,13)] で表現される。
りなるnラスタで構成されるm×n画素(m、nは正の
整数)でなるものとし、第j番目のラスタの第i番目の
画素位置を(2i,2j)(i,jは正の整数で、i≦
m、j≦n)で表現するものとする。
装置のCPU519による輪郭抽出処理の全体の流れを
示すフローチャートである。
定、即ち、図1のように入力画像をストライプ状に分割
し、注目ストライプを画像の先頭ストライプにセットす
る。入力画像を分割する際の各々のストライプのライン
数は同じであっても、異なっていてもよい。また各々の
ストライプのライン数は予め決められた数に設定して
も、外部からの設定手段により任意に設定しても良い。
値画像データからベクトル列を抽出し、各ベクトルの始
点の座標及びこのベクトルに流入してくる(注目ベクト
ルの始点の座標が終点となっている)ベクトル、流出し
ていく(注目ベクトルの終点の座標が始点となってい
る)ベクトルを、図23及び図24に示すテーブル(こ
れらを接続情報テーブルと定義する)形式で出力する。
図23は水平方向のベクトルを示す図、図24は垂直方
向のベクトルを示す図である。尚、上記の如く実施例で
は、2値画像の輪郭を垂直及び水平方向のベクトルに分
解して輪郭(第1段階の輪郭)を抽出する。ここで注意
すべき点は、全ての2値画像の輪郭は、ベクトル長さは
不定であるが、水平ベクトル→垂直ベクトル→水平ベク
トル→垂直ベクトル→…という具合に、これら水平/垂
直の繰り返しで表現される。
4に示すテーブルから流入及び流出ベクトルの項目番号
を辿ることにより、図25に示すような画像中の総輪郭
線数、各輪郭線毎の輪郭線の総点数、輪郭線中の各点の
x座標、y座標を記憶したテーブルを作成する。
521を介して、このテーブル情報をファイル形式でデ
ィスク522に記憶し、図23及び図24のテーブルの
内容をクリアする。
イプが入力画像の最終ストライプかどうかが判定され、
最終ストライプでなければS6に移り、最終ストライプ
ならば処理を終了する。ステップS6では注目ストライ
プを次のストライプに移動してステップS2に戻る。
イプに分割し、ストライプ毎にアウトラインの抽出・整
列・ファイル出力処理を行うことで、図23及び図24
で示されるテーブルの容量を小さくすることができる。
抽出処理の内容を図26のフローチャートを用いて説明
する。
4のビット4(注目画素)を見ることにより、注目画素
が白画素か黒画素かを判定する。白画素の場合はステッ
プS13へ進み、黒画素の場合はステップS12へ進
む。ステップS12では、注目画素の周囲8画素の状態
を見て、その状態に応じた適当な処理ルーチンをコール
する。
御ポート517を介して画素位置の更新を指示する。そ
して、入出力制御ポート517より更新完了の信号を入
力するとステップS14に進み、入出力制御ポート51
7を介して、最終画素の処理が終了したか否かを判断
し、終了していなければステップS11へ戻り、次の注
目画素も同様に処理を行い、終了していれば、元のルー
チンにリターンする。
た周囲画素の状態により実行される処理を示すフローチ
ャートである。
レジスタを“0”で初期化する。次にステップS22に
進み、図1の“0”で示された位置の画素の状態(以
降、f(0)で表現する)が黒画素(以降、“1”で表
わす)であればステップS23へ進み、白画素(以降、
“0”で表わす)であればステップS23をスキップ
し、ステップS4へ進む。ステップS23では前記レジ
スタの内容に“1”を加える。すなわち、そのレジスタ
のビット0を“1”にセットする。
の位置の画素の状態が黒画素であれば(f(1)=1)
ステップS25へ進み、前記レジスタの内容に2を加え
る(ビット1を“1”にセットする)。また、f(1)
=0であればステップS25をスキップする。
様に図1の“2”の位置の画素が黒画素かどうかを調べ
る。f(2)=1(黒画素)であればステップS27へ
進み、前記レジスタの内容に4を加える(ビット2を
“1”でセットする)。また、f(2)=0の場合に
は、ステップS27をスキップする。
の画素に注目し、f(3)=1ならステップS29へ進
んで前記レジスタの内容に8を加える(ビット3を
“1”にセットする)。また、そうでなければステップ
S29の処理をスキップし、ステップS30へ進む。
“1”、“2”、“3”の画素位置の各画素の状態に応
じて、レジスタには0〜15のいずれかの値が保持され
ることになる。ステップS30では、このレジスタの保
持する値の処理番号のルーチンをコールする。
対応する処理(ケース0〜15)を説明するが、それら
ケース0〜15と注目画素及びその周辺画素の関係は、
次の様になっているのは理解できよう。すなわち、ケー
ス0は図6に対応し、ケース1は図7、ケース2は図
8、ケース3は図9、ケース4は図10、ケース5は図
11、ケース6は図12、ケース7は図13、ケース8
は図14、ケース9は図15、ケース10は図16、ケ
ース11は図17、ケース12は図18、ケース13は
図19、ケース14は図20、ケース15は図21に対
応する。
述する。
タの値が“0”の場合は、図28に示す処理がコールさ
れる。図28は先に指摘した様に図6に示す状態(ケー
ス0)を処理するルーチンである。以降、注目画素63
の座標が(2i,2j)として説明する。
3、図24、図28)>図28のステップS31では
(2i−1,2j−1)を水平ベクトルの始点として登
録する。即ち、図23に示す水平ベクトルカウンタ23
0の指し示す水平ベクトル始点(図6の64)のx座標
テーブルの欄(図23の231)に(2i−1)を格納
し、同じく水平ベクトル始点y座標テーブルの欄(図2
3の232)に(2j−1)を格納する。そして、この
水平ベクトルに流入してくる元の垂直ベクトルは、図2
4の垂直ベクトルカウンタ240が、この時点で指して
いる垂直ベクトルの始点座標テーブル内の位置の次の位
置に格納されるベクトルであり、また、この水平ベクト
ルが流出していく先の垂直ベクトルは、この時点で垂直
ベクトルカウンタ240が指している垂直ベクトルの始
点座標テーブルの位置にある。
クトル項目番号の欄において、水平ベクトルカウンタ2
30が指し示す位置(図23の例では233)に、垂直
ベクトルカウンタ240の値に1加えた値を格納する。
また、水平ベクトルの流出ベクトル項目番号の欄には、
水平ベクトルカウンタ230が指し示す位置(図23の
例では234)に、垂直ベクトルカウンタ240の値を
格納する。
1,2j−1)を垂直ベクトルの始点(図6の65)と
して登録する。この垂直ベクトルに流入する水平ベクト
ルはステップS31で登録した水平ベクトルであり、こ
の垂直ベクトルが流出する水平ベクトルは、水平ベクト
ル始点座標テーブルのステップ31で登録された水平ベ
クトルの次の位置に格納される水平ベクトルであると登
録する。
41には(2i+1)が、欄242には(2j−1)
が、更に欄243には、この時の水平ベクトルカウンタ
230の値が、欄244にはこの時の水平ベクトルカウ
ンタ230の値に+1した値が格納される。
カウンタ230の内容を+1する。ステップS24で
は、(2i+1,2j+1)を水平ベクトルの始点(図
6の67)座標として登録し、この水平ベクトルに流入
する垂直ベクトルは、ステップS32で登録したベクト
ルであると登録すると共に、この水平ベクトルが流出す
る垂直ベクトルは、ステップS32で登録された垂直ベ
クトルの垂直ベクトル始点座標テーブル内における次の
位置に格納さる垂直ベクトル(図6の点66と点64と
を結ぶベクトル)であるとして登録する。
タ240の内容を+1し、ステップS36では、(2i
−1,2j+1)を垂直ベクトルの始点座標として登録
し、この垂直ベクトルに流入する水平ベクトルはステッ
プS34で登録された水平ベクトルであるとして登録す
る。そして、この垂直ベクトルが流出する水平ベクトル
は、ステップS31で登録した水平ベクトルであるとし
て登録する。こうして最後に、ステップS37で、水平
ベクトルカウンタ230及び垂直ベクトルカウンタ24
0を共に+1して処理を終了する。
く、点64と点65とを結ぶ水平ベクトルと、点67と
点66とを結ぶ2つの水平ベクトルと、点65と点6
7、及び点66と点64とを結ぶ2つの垂直ベクトルを
合せた、4つのベクトルが巡回した1つのループを作っ
ている状態として抽出する。
単に説明すると、1本の水平ベクトルが発見されると、
その水平ベクトルの始点を終点とする垂直ベクトルが必
ずあることになるから、その垂直ベクトルを特定する番
号(図24の垂直ベクトルテーブルから見つける)を流
入ベクトル項目番号の欄に書き込む。また、注目してい
る水平ベクトルの終点位置には垂直ベクトルがかならず
接続されることになるから、その垂直ベクトルを特定す
る番号(図24の垂直ベクトルテーブルから見つける)
を流出ベクトル項目番号の欄に書き込む。同様の原理
で、垂直ベクトルテーブルについても同様の処理を行う
ことになる。これは、以下に示すケース1〜15につい
ても全く同じである。
4、図29)>図29は図27のステップS30で、レ
ジスタの保持する値が1の場合にコールされるケース1
の処理を示すフローチャートである。
+1)を水平ベクトルの始点として、図23に示すテー
ブルの始点座標のx、y座標に登録する。また、この水
平ベクトルが流出する垂直ベクトルの番号(欄234)
は、後述するステップS43で登録される垂直ベクトル
カウンタ240の値とする。次にステップS42に進
み、ステップS41で登録した水平ベクトルに流入する
垂直ベクトルを図34に示す流出先が未定な垂直ベクト
ルテーブル341から捜し出して登録する。このステッ
プS42の処理の内容は、図30のフローチャートで示
している。
録されている流出先が未定の垂直ベクトルの数を保持す
る流出ベクトル未定垂直ベクトルカウンタ340の値を
変数kにセットする。ステップS52では垂直ベクトル
流出ベクトル未決定項目番号テーブル341に登録され
ている項目番号(k−1)の値が指し示す垂直ベクトル
の始点のx座標の欄が(2i+1)であるか否かを判定
する。(2i+1)でなければ変数kの値(k)を1だ
け減じて、再びステップS52を実行する。ステップS
52で始点のx座標が(2i+1)であればステップS
54へ進む。
番号が(k−1)である垂直ベクトルが、前述したステ
ップS41で登録した水平ベクトルの流入元ベクトルで
あり、更にステップS41で登録した水平ベクトルが、
この垂直ベクトルの流出先ベクトルであることになる。
従って、図23の水平ベクトルカウンタ230で指示さ
れる水平ベクトルの流入ベクトル項目番号欄に、テーブ
ル341の項目番号が(k−1)である垂直ベクトル番
号を、及び図24の垂直ベクトルの流出項目番号欄に、
ステップS41における水平ベクトルカウンタ230の
値を格納する。
テップS54において、流出先が決定したベクトルを流
出先未定ベクトルテーブル341から消去し、そのテー
ブルの空いた部分を詰める。次に、ステップS56で、
流出ベクトル未定垂直ベクトルカウンタ340の値を1
減じ、垂直ベクトル流出テーブル未決定項目番号テーブ
ル341に登録されている流出先が未定の垂直ベクトル
が1つ減った旨更新して、元のルーチンに戻る。。この
ようにして、図29のステップS42の処理が終了して
ステップS43へ進む。ステップS43では(2i−
1,2j+1)を垂直ベクトルの始点として登録し、こ
の垂直ベクトルに流入してくる水平ベクトルは、ステッ
プS41で登録した水平ベクトルとする。次に、ステッ
プS44ではステップS43で登録した垂直ベクトルが
流出する先の水平ベクトルを図31に示す流入元ベクト
ル未定テーブル311より捜し出して登録する。このス
テップS44の処理内容を図35のフローチャートで示
す。
同様にして実行される。即ち、ステップS43で登録し
た垂直ベクトルが流出する先のベクトルを図24の流出
ベクトル項目欄に登録し、この垂直ベクトルへ流出する
水平ベクトルの流入先ベクトル項目番号欄に、垂直ベク
トルカウンタ240の値をセットして、この垂直ベクト
ルであるとして登録する。これにより、図31に示すテ
ーブル311を更新する。
ウンタ230を+1し、ステップS46で、垂直ベクト
ルカウンタ240を+1して、元の処理に戻る。
24、図33、図36)>図27のステップS30にお
いて、レジスタの保持する値が“2”の場合は、図36
に示す処理が実行される。図36に示す処理は、図8に
示す状態を処理するルーチンである。
クトルカウンタ240が示す垂直ベクトルの始点を(2
i−1,2j+1)として登録し、この垂直ベクトルが
流出する水平ベクトルを、ステップS73で登録される
水平ベクトルとする。ステップS72では、ステップS
71で登録した垂直ベクトルが、それに流入してくる水
平ベクトルが未定であるベクトルとして、図33に示す
流入ベクトル未定垂直ベクトルテーブル331の既使用
領域のすぐ隣の未使用領域に登録し、流入元ベクトル未
定垂直ベクトルカウンタ330を+1する。次にステッ
プS73に進み、図23に示すテーブルのカウンタ23
0で示される欄の水平ベクトルの始点を(2i−1,2
j−1)として登録し、このテーブルの流入元垂直ベク
トルを、ステップS71で登録した垂直ベクトルとして
登録する。
録した水平ベクトルが流入して行く先の垂直ベクトルが
未定であるベクトルとして、図32に示す流出ベクトル
未定水平ベクトルテーブル321の既使用領域のすぐ隣
の未使用領域に登録し、流出先ベクトル未定水平ベクト
ルカウンタ320を+1する。ステップS75では、水
平ベクトルカウンタ230及び垂直ベクトルカウンタ2
40を共に+1して元の処理に戻る。
4、図37) 図27のステップS30において、レジスタの値が
“3”の場合は、図37に示す処理が実行される。同図
に示す処理は、図9に示す状態を処理するルーチンであ
る。
1)を垂直ベクトル91(図9)の始点として登録す
る。次にステップS82に進み、前述のステップS44
と同様にして、ステップS81で登録した垂直ベクトル
が流出する先の水平ベクトルを求める。次にステップS
83で、カウンタ330が指示するテーブル331に垂
直ベクトルカウンタ240の値をセットして、カウンタ
330の値を+1する。次にステップS85で垂直ベク
トルカウンタ240の内容を+1し、ステップS85で
ケースAの処理を行う。この処理は図38のフローチャ
ートで示されている。
テップS91で図9の画素Aが白“0”かどうかを調
べ、白でなければ何もせずに処理を終了する。これは図
9の93で示されている。
み、水平ベクトル94(図9)の始点を(2i+1,2
j−1)とする。次にステップS93で、この水平ベク
トルに流入する垂直ベクトルをサーチする。次にステッ
プS94に進み、この水平ベクトルの流出ベクトルが未
定であるとして、この水平ベクトルの番号をテーブル3
21にセットする。そして、ステップS95で水平ベク
トルカウンタ230を+1して、処理を終了する。
4、図31〜図34、図39)>図27のステップS3
0において、レジスタの値が“4”の場合は、図39に
示したルーチンがコールされる。このルーチンは図10
に示したケース4を処理するルーチンである。
1)を水平ベクトル102の始点として登録し、このベ
クトルが流出する先のベクトルは、ステップS103で
登録する垂直ベクトルであるとして、この時の垂直ベク
トルカウンタ240の値を図23の流出ベクトル項目番
号欄にセットする。ステップS102では、ステップS
101で登録したベクトルへ流入してくるベクトルが未
定であるとして、図31に示したテーブル311にカウ
ンタ230の値を登録して、このテーブル311を更新
する。ステップS103では(2i+1,2j−1)を
垂直ベクトル103(図10)の始点として定義し、こ
のベクトルに流入してくるベクトルはステップS101
で登録した水平ベクトル102であるとして、図24に
示すテーブルの流入ベクトル項目番号欄に水平ベクトル
カウンタ230の値をセットする。ステップS104で
は、ステップS103で登録した垂直ベクトル103が
流出するベクトルが未定であるとして図34のカウンタ
340で指示されたテーブル341の欄に垂直ベクトル
カウンタ240の値をセットする。次に、ステップS1
05で、水平ベクトルカウンタ230及び垂直ベクトル
カウンタ240をそれぞれ+1して、元の処理に戻る。
0において、レジスタが“5”の場合は、図40で示さ
れたルーチンをコールする。この図40で示されたルー
チンは、図11で示す状態の場合にコールされ、何もせ
ずにそのままリターンする。
4、図31〜図34、図41、図42)>図27のステ
ップS30において、レジスタの値が“6”の場合は、
図41のフローチャートで示されたルーチンをコールす
る。これは、図12で示すケース6の処理である。
ンタ230で指示された水平ベクトル122(図12)
の始点を(2i−1,2j−1)として登録する。次に
ステップS112で、S111で登録した水平ベクトル
122は、その流出先ベクトルが未定であるとして、図
32に示す流出先ベクトル未定水平ベクトルテーブル3
21に、図38のステップS94と同様にして登録す
る。ステップS113では、ステップS111で登録し
た水平ベクトル122に流入してくる元のベクトルが未
定であるとして、図39のステップS102と同様に、
図31に示す流入元ベクトル未定水平ベクトルテーブル
311に登録する。次にステップS114では、水平ベ
クトルカウンタ230を+1する。ステップS115で
は(B)の位置の画素が白画素か黒画素かを判断し、白
画素である場合は、図12の120に示す如く、(2i
+1,2j+1)を垂直ベクトル124の始点として登
録し、黒画素の場合は図12の121に示すごとく、そ
のまま処理を終える。
2に示す通りである。
が白画素か黒画素かを判断し、黒画素ならそのままリタ
ーンする。白画素の場合はステップS122へ進む。ス
テップS122では(2i+1,2j+1)を垂直ベク
トル124の始点として登録する。ステップS123で
は、図39のステップS104と同様に、この垂直ベク
トル124が流出する先のベクトルが未定の垂直ベクト
ルであるとして、図34のテーブル341に登録する。
更にステップS124では、前述した図36のステップ
S72と同様に、ステップS122で登録した垂直ベク
トル124に流入してくる元のベクトルが未定であると
して、図33のテーブル331にセットする。ステップ
S125では、垂直ベクトルカウンタ240を+1して
元のルーチンに戻る。
2、図43)>図27のステップS30において、レジ
スタの値が“7”の場合、図43のフローチャートで示
すルーチンが実行される。このルーチンは、図13で示
されるケース7の処理を行う。
S85と同様に、画素Aの状態に応じた処理を行う。次
に、ステップS132では、図40のステップS115
と同様に、画素Bの状態に応じた処理を行って元のルー
チンにリターンする。
置の画素及び(B)の位置の画素が共に白画素の場合、
131は(A)のみ黒画素、132は(B)のみ黒画
素、そして133は共に黒画素である場合を示してい
る。
6)>図27のステップS30において、レジスタの値
が“8”の場合は図44で示す処理ルーチンをコールす
る。このルーチンは、図14で示されるケース8の処理
を行う。
ンタ240で指示された垂直ベクトル141(図14)
の始点を(2i+1,2j−1)として図24のテーブ
ルに登録し、このベクトルが流出する先の水平ベクトル
は、後続のS135で登録するベクトルであるとして、
カウンタ230の値を流出ベクトル項目番号欄に登録す
る。ステップS134では、ステップS133で登録し
た垂直ベクトル141に流入してくる元の水平ベクトル
を図45に示す手順で、図32に示すテーブル321を
用いて求める。
図35に示した処理と全く同様な手順で、ステップS1
33で登録した垂直ベクトル141に流入してくる元の
水平ベクトルを登録し、この水平ベクトルが流出する先
の垂直ベクトルをステップS133で登録した垂直ベク
トル141であるとして登録する(S145)。そし
て、ステップS146でテーブル321の隙間を埋め、
ステップS147でカウンタ320を−1して、図32
に示すテーブル321を更新する。
トルカウンタ230で指示される水平ベクトル142
(図14)の始点を(2i+1,2j+1)として登録
し、かつ、このベクトル142に流入する元の垂直ベク
トルは、ステップS133で登録した垂直ベクトル14
1であると登録する。ステップS136では、ステップ
S135で登録した水平ベクトル142が流出する先の
垂直ベクトルを図46に示す手順にしたがって、図33
に示すテーブル331を用いて求める。
35及び図45に示した処理と全く同様な手順で、図4
4のステップS135で登録した水平ベクトル142が
流出する先の垂直ベクトルを登録し、この垂直ベクトル
に流入する元のベクトルはステップS135で登録した
水平ベクトル142であると登録して(図46のステッ
プS154)、ステップS155、S156で図33に
示すテーブル331を更新するものである。
平ベクトルベクトルカウンタ230及び垂直ベクトルカ
ウンタ240を共に+1してリターンする。
14のステップS30において、レジスタの値が“9”
の場合は図47に示すルーチンがコールされる。このル
ーチンは図15に示すケース9を処理するものである。
2j+1)を水平ベクトル151(図15)の始点とし
て登録する。次にステップS162では、先に説明した
図30に示した手順と同様にして、この水平ベクトル1
51に流入する垂直ベクトルを図34のテーブル341
を用いてサーチして登録する。また、このサーチされた
垂直ベクトルが流出する水平ベクトルが、ステップS1
61で登録した水平ベクトルであると図24に示すテー
ブルに登録する。こうして図34のテーブル341を更
新する。
6に示した手順と同様にして、ステップS161で登録
した水平ベクトル151が流出する先の垂直ベクトルを
図33に示すテーブルを用いて捜し出して登録し、この
垂直ベクトルに流入する元のベクトルがステップS16
1で登録した水平ベクトル151であると登録して、図
33に示すテーブル331を更新する。
ンタ230を+1し、ステップS165では、(D)の
位置の画素が白画素か黒画素かを判断し、白画素である
場合は、図15の152で示すように、(2i−1,2
j−1)を垂直ベクトル154の始点として登録し、黒
画素の場合はそのまま処理を終える(図15の15
3)。
容を図48に示す。
画素か黒画素かを判断し、黒画素ならそのままリターン
する。白画素の場合はステップS172に進み、(2i
−1,2j−1)を垂直ベクトル154の始点として登
録する。次にステップS173に進み、前述した図45
の処理を行う。即ち、ステップS172で登録した垂直
ベクトル154に流入してくる元の水平ベクトルを登録
し、この水平ベクトルが流入する先の垂直ベクトルがス
テップS172で登録した垂直ベクトル154であると
登録して、図32に示すテーブル321を更新するもの
である。
図35に示す処理を行う。即ち、ステップS172で登
録した垂直ベクトル154が流出する先の水平ベクトル
を登録し、この水平ベクトルに流入してくる元のベクト
ルは、ステップS172で登録した垂直ベクトル154
であると登録して、図31に示すテーブル311を更新
する。ステップS175では、垂直ベクトルカウンタ2
40を+1してリターンする。
30において、レジスタの値が“10”の場合は図49
に示すルーチンがコールされる。このルーチンは図16
に示すケース10を処理するものである。図49のルー
チンはコールされるとそのままリターンする。
30において、レジスタの値が“11”の場合は、図5
0に示すルーチンがコールされる。このルーチンは、図
17に示すケース11を処理するものである。
65と同様に(D)の位置の画素の状態に応じて、先に
説明した図48のフローチャートで示される処理を行
う。次にステップS177では、ステップS85及びS
131と同様に、(A)の位置の画素の状態に応じて、
先に説明した図38で示される処理を行う。
(A)の位置の画素が共に白画素の場合を170で示
し、(A)のみが黒画素の場合を171で、(D)のみ
が黒画素の場合を172、(A)(D)が共に黒画素の
場合の処理結果を173で示す。
24、図51、図52)>図27のステップS30にお
いて、レジスタの値が“12”の場合は、図51に示す
ルーチンがコールされる。このルーチンは、図18に示
すケース12の状態を処理するものである。
ブルに(2i+1,2j−1)を垂直ベクトル181
(図18)の始点として登録する。ステップS182で
は、先に説明した図44のステップS134と同様に、
図45に示す手順でステップS181で登録した垂直ベ
クトル181に流入してくる元の水平ベクトル182を
サーチして登録する。また、この水平ベクトル182で
登録した垂直ベクトル181であると登録して、図32
に示すテーブル321を更新する。
181で登録した垂直ベクトル181の流出先のベクト
ルが未定である旨を図34で示すテーブル341に登録
し、カウンタ340の更新を行う。次にステップS18
4では、垂直ベクトルカウンタ240を+1する。そし
てステップS185ではCの位置の画素が白画素か黒画
素かを判断し、白画素である場合は、図18の183で
示すごとく(2i−1,2j+1)を水平ベクトル18
5の始点として登録し、黒画素である場合は図18の1
84に示すごとくそのまま処理を終える。
2のフローチャートで示す。
か黒画素かを判断し、黒画素ならそのままリターンす
る。白画素の場合はステップS192へ進み、ステップ
S192では、(2i−1,2j+1)を水平ベクトル
185の始点として登録する。次にステップS193で
は、先に説明した図46のフローチャートで示された処
理を行って、ステップS192で登録した水平ベクトル
185が流出する先の垂直ベクトルを登録する。そし
て、この垂直ベクトルに流入してくる元のベクトルが、
ステップS192で登録した水平ベクトル185である
と、図24のテーブルに登録して、図33に示すテーブ
ル331を更新する。
で登録した水平ベクトル185は、これに流入する元の
垂直ベクトル186が未定なベクトルである旨を図31
に示す流入元ベクトル未定水平ベクトルテーブル311
に登録し、カウンタ310を+1する。次にステップS
195に進み、水平ベクトルカウンタ230を+1して
元の処理に戻る。
図27のステップS30において、レジスタの値が“1
3”の場合は、図53に示すルーチンがコールされる。
このルーチンは図19のケース13を処理したものであ
る。
S165及び図50のステップS176同様にDの位置
の画素の状態に応じて、先に説明した図48のフローチ
ャートで示される処理を行う。
S185と同様に、Cの位置の画素の状態に応じて、先
に説明した図52のフローチャートで示される処理を行
う。190はDの位置の画素及びCの位置の画素が共に
白画素の場合、191はCのみ黒画素、192はDのみ
黒画素、そして193はCとDが共に黒画素だった場合
の処理結果をそれぞれ示す。
30において、レジスタの値が“14”の場合は、図5
4に示すルーチンがコールされる。このルーチンは図2
0で示すケース14の状態を処理するものである。
ステップS185及び図53のステップS197と同様
に、Cの位置の画素の状態に応じて、先に説明した図5
2で示されるケースCの処理を行う。次にステップS2
02では、図41のステップS115及び図43のステ
ップS132と同様にBの位置の画素の状態に応じて、
先に説明した図42で示されるケースBの処理を行う。
素が共に白画素の場合、202はBのみ黒画素、203
はCのみ黒画素、204は共に黒画素の場合の処理結果
をそれぞれ示している。
30において、レジスタの値が“15”の場合は、図5
5に示すルーチンがコールされる。このルーチンは図2
1で示すケース15の状態を処理するものである。
165などと同様にDの位置の画素の状態に応じて、先
に説明した図48のフローチャートで示されるケースD
の処理を行う。次にステップS204では、前述のステ
ップS85、S131などと同様にAの位置の画素の状
態に応じて、先に説明した図38で示されるケースAの
処理を行う。ステップS205では前述のステップS1
85などと同様に、Cの位置の画素の状態に応じて、先
に説明した図52で示されるケースCの処理を行う。更
に、ステップS206では図41のステップS115な
どと同様に、Bの位置の画素の状態に応じて先に説明し
た図42で示されるケースBの処理を行う。
の画素、Aの位置の画素、Cの位置の画素及びBの位置
の画素が全て白画素だった場合の処理結果を示し、21
1はAのみ黒画素だった場合を、212はBのみが黒画
素だった場合を、213はCのみ黒画素だった場合を、
214はDのみ黒画素だった場合を、215はA及びB
のみ黒画素だった場合を、216はB及びCのみが黒画
素だった場合を、217はC及びDのみが黒画素だった
場合を、218はD及びAのみ黒画素だった場合を、2
20はA及びCのみ黒画素だった場合を、221はDの
み白画素だった場合を、222はCのみ白画素だった場
合を、223はBのみ白画素だった場合を、224はA
のみ白画素だった場合を、そして225は全てが黒画素
だった場合の処理結果を示している。
プS2におけるベクトル列抽出の一連の処理が実行され
る。
56及び図57は図22のステップS3のアウトライン
ベクトル列整列の処理の内容を示している。図56及び
図57のフローチャートは、図22のステップS2で作
成された水平ベクトルに関するテーブル群(図23)、
垂直ベクトルに関するテーブル群(図24)及び後述す
る図58のテーブル群を用いて動作する。
テーブル群の中で必要となる項目の初期化を行う。この
ステップS211の処理内容は、図59のフローチャー
トで詳しく示されている。
項目番号を保持する変数t(開始点項目番号)を0にす
る。次にステップS232に進み、変数iを“0”に
し、ステップS233では開始点候補テーブル571の
第i番目の項目を“1”にセットする。ステップS23
4では変数iを+1し、ステップS235で変数iが水
平ベクトルカウンタ230の値より小さな値を持つか否
かを判定し、小さな値であればステップS233へ戻
る。
な値であればステップS236へ進み、ループ数カウン
タ572を“0”にリセットする。次にステップS23
7で変数kを“0”にリセットして、元のルーチンに戻
る。これにより、開始点候補テーブル571の0番目の
より(水平ベクトルカウンタ230−1)番目の欄にす
べて“1”がセットされる。
テップS212に進み、変数kが水平ベクトルカウンタ
230の値の2倍と等しいか否かを判断し、もし等しけ
ればそのままリターンするが、等しくなければステップ
S213へ進む。ステップS213では、ループ数カウ
ンタ572の保持する値のさす開始点項目番号テーブル
574の項目位置に変数tに保持されている値を格納す
る。S214では、開始点項目番号テーブル574のル
ープ数カウンタ572の値で指示される項目に格納され
ている値(即ち、ステップS213で格納した値)を変
数hにセットする。そして、ステップS215で変数j
を0にリセットする。
理中の輪郭の番号を示し、開始点項目番号テーブル57
4のループカウンタ572で指示される項目番号欄に
は、現在整理中の輪郭の開始点のある項目番号が記憶さ
れている。また、変数kは現在までの処理済及び処理中
の輪郭内で、処理済及び処理中の点の総数を保持し、j
は現在整理中の輪郭内で、処理済の点の個数を保持して
いる。また、変数hは次に処理する水平ベクトルの項目
番号を示す。
テーブル571の、変数hの値により指示される項目番
号を“0”にリセットする。次にステップS217に進
み、変数hの値が指す水平ベクトル開始点のx座標(図
23)及び水平ベクトル開始点y座標(図23)の項目
位置に保持される値を、x座標テーブル575及びy座
標テーブル576内の変数kで指示される項目位置に格
納する。それとともに、変数hの値が指す水平ベクトル
流出先ベクトル項目番号(図23)の項目位置に保持さ
れている値を変数νにセットする。この変数νは、次に
処理する垂直ベクトルの項目番号を示している。ステッ
プS218では、変数k及び変数jの保持する値をそれ
ぞれ+1する。
が指す垂直ベクトル開始点のx座標(図24)及び垂直
ベクトル開始点のy座標(図24)の項目位置に保持さ
れる値をx座標テーブル575及びy座標テーブル57
6内の変数kの値が指す項目位置に格納する。それとと
もに、変数νの値が指す垂直ベクトル流出先ベクトル項
目番号(図24)の項目位置に保持されている値を変数
hにセットする。これにより変数hには、この垂直ベク
トルより流出する水平ベクトルの項目番号がセットされ
る。ステップS220では、変数k及びjの保持する値
をそれぞれ+1する。
在整理中の輪郭の開始点の項目番号を保持する573
(変数t)の値と等しいか否かを判断し、等しくなけれ
ばステップS216へ戻り、同一輪郭点の一点として次
の点の処理を続けるが、等しくなるとステップS222
へ進み、現在整理中の輪郭の処理を終了する。ステップ
S222では、変数jの保持する値を現在処理中の輪郭
の中に含まれる点の数として各輪郭内に含まれる点数を
保持する点数テーブル577の、ループ数カウンタ57
2で指示される項目位置に格納する。ステップS223
では、整理中の輪郭の番号を示すループ数カウンタ57
2を+1する。
る既に処理した点の個数と、水平ベクトルカウンタ23
0に保持された水平ベクトルテーブル内に保持される点
の数の2倍とが等しいか否かを判断し、等しい場合は処
理を終えてリターンする。等しくない場合はステップS
225に進み、開始点項目番号573の値を+1する。
そして、ステップS226では、開始点項目番号573
の値で指示される開始点候補テーブル571の項目に保
持されている値が“1”か否かを判断し、“1”でなけ
ればステップS225へ戻り、再度開始点候補の探索を
続ける。一方、“1”であればステップS213に戻
り、次の輪郭内の点の整理を開始する。
り、図23〜図25に示したベクトルの開始点データ
は、図58に示すテーブルに各輪郭ループごとに順に並
んだ点の座標列として整列される。
のフローチャートを参照して、図22のステップS4の
ベクトル列テーブルファイルの出力処理を説明する。
リセットする。次にステップS242に進み、ディスク
522上に出力ファイルをオープンする。ステップS2
43では、ステップS242でオープンしたファイルに
ループ数カウンタ572に保持されている値を出力す
る。ステップS244では、変数kの値がループ数カウ
ンタ572に保持する値と等しいか否かを判断し、等し
い場合はステップS245へ進み、カウンタ230、2
40、310、320、330、340の値をリセット
し(値を0にする)、元の処理に戻る。
はステップS246に進み、輪郭ループ内点数テーブル
577の変数kの値の指す項目位置に格納されている値
をディスク522に出力する。ステップS247では開
始点項目番号テーブル574内の変数kの値の指す項目
位置に格納されている値を変数mにセットする。ここ
で、kは現在出力中の輪郭ループ番号を保持し、mは現
在出力中の輪郭ループ内の点列の開始点の格納される項
目番号を保持している。次にステップS248ではkの
値を+1し、ステップS249では変数lの値を”0”
にリセットする。このlは、現在出力中の輪郭ループ内
の出力済の点の数を保持する変数である。
中の輪郭ループ内の点の数と等しいか否かを判断し、等
しければステップS244へ戻り、等しくなければステ
ップS251へ進む。ステップS251では、変数mの
値が指すx座標テーブル575及びy座標テーブル57
6内の項目位置に格納されている値を出力ファイルに出
力する。次にステップS252ではmの値を+1し、ス
テップS253では、lの値を+1してステップS25
0に戻る。
ップS5において今迄処理していた注目ストライプが画
像中の最終ストライプか否かが判断され、最終ストライ
プならば図22の処理を全て終了する。そうでなければ
ステップS6に進んで、注目ストライプを次のストライ
プに移し、ステップS2に戻る。
方向に連結した輪郭線が抽出される。しかし、本発明は
これに限定されるものでなく、8方向に連結する輪郭線
を抽出する場合にも適用できる。
24で示されるテーブル(接続情報テーブル)の容量は
1ページ分必要であったが、本発明においては入力画像
をストライプ状に分割し、各ストライプ毎に独立にアウ
トラインベクトル列の抽出を行い、アウトラインベクト
ル列の整列行い、アウトラインベクトル列テーブルをフ
ァイルへ出力するようにしたので、図23及び図24で
示されるテーブル(接続情報テーブル)の容量を小さく
することができ、メモリの節約になる。また、図23及
び図24で示されるテーブル(接続情報テーブル)の容
量が小さくなる分、ベクトル列整列時の検索範囲が狭く
なり、処理の高速化を図ることができる。
画像の変倍を行う装置のブロック図である。同図におい
て、401は輪郭抽出・変倍処理を施すデジタル2値画
像を獲得し、ラスター走査形式の2値画像を出力する2
値画像獲得手段であり、例えば、イメージリーダーで画
像を読み取り、2値化して、ラスター走査形式で出力す
る公知のラスター走査型2値画像出力装置で構成され
る。
ストライプに分割する画像分割手段であり、各ストライ
プ中のライン数を外部から任意に設定できるようになっ
ている。
郭ベクトル(平滑化、変倍処理を施す前のアウトライン
ベクトル)を抽出するアウトライン抽出手段であり、本
発明の第1実施例で述べたアウトライン抽出手段であ
る。
郭ベクトルデータをベクトルデータ形態で平滑化及び変
倍処理を行うアウトライン平滑・変倍手段である。アウ
トラインの平滑化及び変倍手段そのもには本出願人によ
り先に出願された特願平3−345062号(1991
年12月26日出願)に記載の装置等で構成される。簡
単に説明すると、例えば先に示した処理で得られた垂直
ベクトルが2本で、水平ベクトルが2本で、尚且つ、そ
れらのベクトル長が“1”の場合には当該ループを形成
しているベクトル群(4本のベクトル)を除去したり、
1ドットのみの突出した画素があったらその部分を除去
する処理、及び、2値画像の角と認識された点を固定点
(角点)とし、その角点以外の点を浮動点としてそれぞ
れの点を定義し、注目している浮動点においては前後す
る複数の角点或いは浮動点との重み付け計算して、その
座標位置を補正する処理である。また、水平ベクトルと
垂直ベクトルが所定の傾きに沿って連続する場合に、そ
の中の拡大や縮小等で影響されない点をいくつか除去す
る等の処理が含まれる。
トラインベクトルデータからそのデータの表現する2値
画像を、分割されたストライプ単位にラスター走査形式
の2値画像データとして再生する2値画像再生手段であ
り、例えば、本出願人により先に出願された特願平3−
172098号(平成3年7月12日出願)に記載の装
置等で構成できる。簡単に説明すると、平滑処理して得
られたベクトルデータに基づいて描画した輪郭(拡大処
理して描画された輪郭を含む)の内部を黒画素で埋める
処理である。
を表示したり、ハードコピーをとったり、或は、通信路
などへ出力したりする2値画像出力手段である。
フローチャートである。
像をストライプ状に分割し、注目ストライプを先頭のス
トライプにセットする。入力画像の分割に際しては、各
ストライプ中のライン数を外部から任意に設定できるよ
うにしても、或は外部から設定するのではなく、予め決
められたライン数で入力画像を分割するようにしてもよ
い。また予め決められたライン数で入力画像を分割する
が、白ラインがその途中で現われた場合は、この位置で
一旦分割するようにしてもよい。例えば、入力画像を5
ラインづつのストライプに分割する場合に白ラインが8
ライン目に現われたとする。この時、第1ストライプは
5ラインで構成されるが、第2ストライプは3ラインで
構成される。第3ストライプは、途中で白ラインが現わ
れなければ9ライン目から再び5ラインで構成される。
但し、白ラインが2ライン以上連続する場合は、連続す
る白ライン全体を1ラインと便宜上見なし、処理をす
る。即ち、先の例で8ライン目からnライン(8ライン
目を含めて)白ラインが続いている場合は、第2ストラ
イプは(2+n)ラインで構成されることになる。これ
は、白ラインのみから成るストライプが存在する(図形
が存在しないので無意味)というような余分な入力画像
の分割するのを防ぐためである。ここで、白ラインとは
全てが白画素で構成されているラインのことをいう。
することと白ライン出現時にストライプ分割することを
組み合わせることの利点を述べると次の様になる。
ていた輪郭ベクトル群はすべて閉ループをなすので、こ
こまでに抽出されたベクトル群を整列させ、ディスクに
アウトラインベクトルとしてファイル形式で出力し、以
降の処理に移ることが可能である。しかしながら、入力
画像中に白ラインが存在しない場合は、全ての輪郭ベク
トルをワーキングメモリに保持しておかねばならず、膨
大なワーキングメモリを必要とする。従って、上記のよ
うに予め決められたライン数でストライプ分割すること
と白ライン出現時にストライプ分割することを組み合わ
せることはワーキングメモリ削減に多大な効果がある。
ライプ中のアウトラインベクトルの抽出と整列を行う。
これは、上記第1実施例に記載した通りである。注目ス
トライプ中のアウトラインベクトルの抽出と整列が終る
と、ステップS303に移り、ここで注目ストライプ中
のアウトラインベクトルの平滑化及び変倍が行われる。
ここでの処理は、注目ストライプを入力画像であると見
なして、先に指摘した如く、特願平3−345062号
に記載の平滑化及び変倍の処理を行う。注目ストライプ
の平滑・変倍処理が終るとステップS304に移り、変
倍された注目ストライプのアウトラインベクトルから2
値画像を再生し、出力する。2値画像の再生・出力処理
は、本出願人により先に提案している特願平3−172
098号に記載の方法・構成でもって処理できる。2値
画像の再生・出力処理が終ると、ステップS305に移
り、ここで注目ストライプが入力画像の最終ストライプ
か否かが判定され、最終ストライプならば処理を終了
し、そうでなければ、ステップS306に移り、注目ス
トライプを次のストライプに移動してステップS302
に戻る。
イプ単位にアウトラインベクトルを抽出し、平滑化及び
変倍を行い、2値画像を再生・出力することにより、 1)アウトラインベクトル抽出の為のディスク容量、或
はワーキングメモリ容量 2)整列済アウトラインベクトルデータを格納するため
のディスク容量、或はワーキングメモリ容量、 3)アウトラインベクトルの平滑化や変倍を行うための
ディスク容量、或はワーキングメモリ容量、 4)アウトラインベクトルから2値画像を再生・出力す
るためのディスク容量、或はワーキングメモリ容量、 等が少なくて済む。
ストライプ単位に抽出・整列されたアウトラインベクト
ルを平滑化・変倍する際に、分割されたストライプ自体
を独立した入力画像であると考えて処理を行った。この
ように処理を行うと、余計な処理を付加せずに全てのス
トライプを並列に処理できるという利点が或る反面、例
えば、図63(a)のような例では平滑化により再生画
像が劣化することが判明した。即ち、図63(a)を入
力画像とし、第2の実施例のストライプ分割法(5ライ
ンづつに分割)を用いれば、図63(b)のように最初
のストライプは5ライン、第2ストライプは、白ライン
が4ライン目で出現しているのでここで分割され4ライ
ン、入力画像の残りのライン数は5ライン以下なので残
り全て(4ライン)を第3ストライプに分割する。この
場合、特願平3−345062号に記載の手法及び装置
を用いれば、411、412、413の凹部(白画素)
は平滑化により削除されてしまい、変倍後の再生画像か
ら411、412、413に相当する部分が欠落してし
まうことになる。
実施例の平滑化の部分に加える。
ストライプ分割により2つ以上のストライプにまたがる
場合、分割により境界となる線(図63(b)上では、
La、Lbが境界となる線であるが、1つの図形が分割に
より2つ以上のストライプにまたがるという条件を満た
すのはLaのみである。)上から流出するベクトル及び
分割により境界となる線上に流入するベクトルの始点と
終点を『角点』(角点は先に説明したように、平滑化処
理でその座標位置が補正されることのない点で、文字通
り角に位置する点と解釈して良い)に指定する。図63
(b)でいえば、10個の△と10個の○が角点に指定
される。角点に指定されると、平滑化から除外されるの
で411、412、413の白画素を保存することがで
き、再生画像の劣化を低減することが可能である。
では、ストライプ単位に平滑・変倍・再生・出力を行う
ため、少ないメモリ量で処理を行えるというメリットが
ある。しかしながら、入力画像ではもともと1つのアウ
トラインベクトルであったものが複数に分割されて、そ
れぞれ独立に平滑化されるため、平滑化後に得られるア
ウトラインベクトルがもともと1つであったときのアウ
トラインベクトルを平滑化したときと多少異なってくる
という問題点も発生する。これを解決するための手法を
次に示す。この手法では、アウトラインベクトルの抽出
と整列は、ストライプ分割した状態で行い、全ての抽出
・整列が終ると、これらからもともと1つであるべきア
ウトラインベクトルを検出し、統合するというもので、
これは分割境界線上から流出するベクトル及び分割境界
線上へ流入するベクトルをチェックし、並べ換えること
により達成できる。
変更した場合のフローチャートである。
をストライプ状に分割し、注目ストライプを先頭のスト
ライプにセットする。この動作は図62中のステップS
301と同じである。次にステップS312に移り、注
目ストライプ中のアウトラインベクトルの抽出と整列を
行う。これも図61中のS302と同じ動作である。ス
テップS313では、注目ストライプが入力画像の最終
ストライプか否かの判定が行われ、最終ストライプでな
ければステップS314に移り、注目ストライプを次の
ストライプに移動してS312に戻る。もし、最終スト
ライプならばステップS315に移る。
整列されたアウトラインベクトルから、複数の輪郭ベク
トルに分割されたもともと1つであったアウトラインベ
クトル(このアウトラインベクトルを入力画像の正式な
アウトラインベクトルと定義する)の抽出及び整列を行
う。ステップS315の処理を図65の例で示す。
像のストライプ分割のライン数を3ラインとしている。
図25の形式でアウトラインベクトルを抽出すると図6
7のようになる(第1実施例と同様に座標を整数表現し
ている)。この時、ストライプ分割の境界線のY座標は
7である。図65の例では、アウトラインベクトルは4
つの輪郭ベクトルとして抽出されるが、これはもともと
1つのアウトラインベクトルであるので統合を行う。こ
の処理を以下に示す。
ある点を図67から求め、図66のようなパケット形式
で表現する。即ち、図67の如くディスク或はメモリ上
に記憶されているデータを走査する。このとき、第1ス
トライプの第1番目の輪郭の第3点目が最初の点として
求まる。得られた点を図66の様に表現する。ここで図
66中のアドレスはY座標が7である点に付けたシリア
ル番号を表わす。X座標はディスク或はメモリ上に記憶
されているデータを走査して得られたY座標が7である
点のX座標を表わす。始点/終点は、得られた点が水平
ベクトルに関して負の方向の始点(負始)となるか或は
負の方向の終点(負終)となるか或は正の方向の始点
(正始)となるか或は正の方向の終点(正終)となるか
を表わす。ストライプ番号は得られた点のストライプ番
号を示し、輪郭番号は得られた点がストライプ中の何番
目の輪郭であるかを示し、座標番号は得られた点が何番
目の点であるかを示している。図67から求められるY
座標が7である点を図66の形式で示すと図68とな
る。これをX座標値の小さい順に並べ換えると図69に
示す様になる。同じ値が存在する場合には、正始、負
始、負終、正終の順番になるように並べる。さらに並べ
変えたパケットを先頭から2個づつペアにし、各々のペ
アにおいて、2つのパケットの順番が正始、負始、負
終、正終の順になるように並べ換える。図示では、アド
レスが5と6であるペアのみこの条件を満たしていない
ので並べ換える。このように処理を行うと輪郭ベクトル
は、各ペアにおいて最初のパケットから次のパケットへ
続くという接続関係になる。即ち、各々のペアにおい
て、最初のパケットの次の点のアドレスには次のパケッ
トのアドレスが記憶され、前の点のアドレスには何も記
憶されない。また、次のパケットの次の点のアドレスに
は何も記憶されず、前の点のアドレスには最初のパケッ
トのアドレスが記憶される。この様子を図70に示す。
最終的なアウトラインベクトルの統合は、図67と図7
0を用いて行われる。これを次に示す。
第1点目から走査を始める。記述を簡単にするために、
第θストライプの第ω輪郭の第ε点目を(θ−ω−ε)
とする。まず(1−1−1)を登録する。これは分割の
境界線上にないので次の(1−1−2)に移り、これを
登録する。(1−1−2)も分割の境界線上にないので
次の(1−1−3)に移り、これを登録する。(1−1
−3)は分割の境界線上にあるので図70を参照し、次
に移動すべき点を調べ、そこに移る。この場合、(1−
2−4)が次に移る点となる。(1−2−4)を登録
し、次の点に移る。(1−2−4)は分割の境界線上の
点ではあるが、図69を参照すると、次に移る先が未定
なので図67の順番に則って(1−2−1)に移り、
(1−2−1)を登録する。続けて(1−2−2)、
(1−2−3)と登録を行い、(1−2−3)は分割の
境界線上にあるので図69を参照し、次の移動先である
(2−2−2)に移る。この時(1−2−3)と(2−
2−2)は同一点を示しているが、このように同一点が
連続する場合は、共に登録を行わない。(1−2−3)
については既に登録されているのでこれを抹消する。
(2−2−2)は分割の境界線上にあるが、図70を参
照すると次の移動先が未定なので図67の順番に則って
(2−2−3)に移る。同様に(2−2−3)、(2−
2−4)、(2−2−1)と登録を続ける。(2−2−
1)は分割の境界線上にあるので図70を参照し、(2
−1−2)に移り、(2−1−2)の登録を行う。(2
−1−2)は分割の境界線上の点であるが、図70を参
照すると移動先が未定なので図67の順番に則り、(2
−1−3)、(2−1−4)、(2−1−1)を登録す
る。(2−1−1)は分割の境界線上の点なので図70
より(1−1−4)に移動し、(1−1−4)の登録を
行う。(1−1−4)の次は走査開始点(1−1−1)
なのでここで登録を終了し、登録した点の数を調べ、輪
郭の総点数を記憶し、入力画像中の総輪郭線数を記憶す
る。
もし未だ未処理のアウトラインベクトルが存在するなら
ば、同様な処理により正式なアウトラインベクトルにし
て、図25の形式になるように図71に続けて登録す
る。また、分割境界線上に座標点を持たないアウトライ
ンベクトルは、何も処理をせずに図25の形式になるよ
うに図71にそのまま続けて登録すればよい。この時、
入力画像中の総輪郭線数がそこに登録されたベクトルル
ープ数を表わすように書き換える必要がある。
316に移る。S316では正式なアウトラインベクト
ルを用いて、平滑化・変倍処理を行う。これは、第2実
施例でも示したとおりである。ステップS316が終了
するとステップS317に移り、変倍された入力画像の
アウトラインベクトルから2値画像を再生・出力する。
これも第2実施例中に述べたとおりである。
した輪郭ベクトルから入力画像の正式なアウトラインベ
クトルを求めることができ、これを平滑化・変倍するこ
とで高画質な再生画像を得ることが可能である。
ラインの抽出・平滑・変倍・再生・表示などに必要とな
るワーキングメモリ量が少なくて済むという利点がある
ことは上述した通りである。しかしながら、ストライプ
分割処理はアウトラインベクトルの平滑化に影響を及ぼ
し、再生画像の画質を少なからず左右する。従って、で
きる限り分割数を少なくしたい(ストライプの幅を大き
くしたい)。以下に分割を少なくする方法について述べ
る。
ン抽出処理等によってワーキングメモリがオーバーフロ
ーしないようにするためであり、ワーキングメモリがオ
ーバーフローしない限りストライプ分割は必要ない。言
換えれば、ワーキングメモリがオーバーフローする手前
でストライプ分割を行えばよいということになる。
クトルカウンタ230あるいは垂直ベクトルカウンタ2
40の指し示すアドレスを図5のCPU519で監視
し、この値がある一定値以上(ワークキングメモリの容
量に依存する)になった場合に、現在処理中のラインで
ストライプ分割を行うといった方法をとればよい。この
場合、第3の実施例のように分割境界線上に流入するベ
クトル及び分割境界線上から流出するベクトルの始点と
終点を角点に指定して処理を行うことが可能である。ま
た第4の実施例中に示した手法も併用することが可能で
ある。
則に従って抽出したアウトラインベクトルを用いて変倍
画像を得ようとすると、1〜2倍程度の低倍率の変倍処
理を行った場合に、生成される出力画像の細線部の画素
巾が太り気味となる場合がある。これは、第1の実施例
で示される方法では、白画素と黒画素のちょうど中心と
なる画素位置に輪郭点を定義して輪郭ベクトルを抽出し
ていくのに対し、画像の再生成部では、得られた平滑・
変倍画像の輪郭座標値で示される画素そのものは黒画素
として処理することから、前記の如き低倍率時には、原
画の画素を取り巻くように定義された輪郭線上の画素を
黒画素として輪郭線に囲まれる領域内を黒画素とする
と、黒画素となる領域が白画素となる領域に比して、本
来の倍率で規定される面積よりも無視できない割合で広
くなりがちとなることに起因している。
ベクトルを抽出する際に、入力画像の白画素と黒画素の
間の黒画素寄りの位置に輪郭点を定義して、黒画素領域
を白画素領域に比して巾狭に抽出することによって、輪
郭線上の画素を黒画素として輪郭線に囲まれる領域内を
黒画素として画像を再生成しても、低倍率の変倍画像が
太り気味とならないようにしたものが本出願人により既
に特願平4−169581号として提案している。
の特願平4−169581号で示される方法を用いても
第1実施例、第2実施例、第3実施例、及び第5実施例
と同様の議論が可能である。但し、特願平4−1695
81号の手法を特願平3−345062号のアウトライ
ン平滑化・変倍手法に適用する場合には、特願平3−3
45062で開示されている第1平滑化の着目輪郭辺ベ
クトルとその前後の辺ベクトル高々3本づつまでの互い
に合い連続する合計7本までの辺ベクトルの長さと向き
の組み合わせのパターンを、特願平4−169581号
の手法によって抽出される輪郭ベクトルに合わせて変更
すれば良い。即ち、特願平4−169581号では、抽
出される輪郭点は、入力画像の白画素と黒画素の間の黒
画素よりの位置に設定されるので、例えば、1画素巾の
黒線は、巾1/2の輪郭ループとして抽出され、黒領域
にある1画素巾の白線は、巾1+1/2の輪郭ループと
して抽出される。入力画像では同じ画素巾であっても、
黒画素領域のでっぱり(凸部)より、へっこみ(凹部)
の方が1だけ巾広に抽出される。第1実施例中に用いた
アウトライン抽出手法に比して、黒画素領域のでっぱり
(凸部)は1/2だけ狭く抽出され、へっこみ(凹部)
は1/2だけ広く抽出される。従って、この差異に対応
して、前記辺ベクトルの長さと向きの組み合わせを調整
して用いれば良い。それ以外の処理は、特願平3−34
5062号の実施例に従うことによって適用が可能であ
る。
ている特願平4−169581号の手法を適用して、ア
ウトラインベクトルの抽出と整列はストライプ単位で行
い、全ての抽出・整列が終ると、これらからもともと1
つであるべきアウトラインベクトルを検出し、統合する
場合ついて以下に述べる。
で、大きく異なるステップS315について記すことに
する。
を入力画像とする。座標の小数表現を避けるために、各
画素の位置を(4m+2,4n+2)(但し、m=0,
1,・・・,10、 n=0,1,・・・,5)に変換
し、図72のように書き換え同図の画像を入力画像とす
る。ストライプ分割のライン数を12ライン(図65の
画像で考えれば3ラインに相当する)とし、図25の形
式でアウトラインベクトルを抽出すると図73のように
なる。この時ストライプ境界線のY座標は12である。
図72の例では、アウトラインベクトルは4つの輪郭ベ
クトルとして抽出されるが、これはもともと1つのアウ
トラインベクトルであるので統合を行う。この処理を以
下に示す。
るベクトルのY座標を求める。この場合、ストライプ分
割を12ラインで行っているため、ストライプ分割によ
り新たに発生するベクトルのY座標は11または13で
ある。一般的に記述すると、分割境界のY座標をλとし
た場合、ストライプ分割により新たに発生するベクトル
のy座標は(λ−1)と(λ+1)である。
ク或はメモリ上に記憶されているデータを走査し、図7
3のようなパケット形式で該当するベクトルの座標値を
表現する。この時第1ストライプの第1番目の輪郭の第
3点目が最初の点として求まる。得られた点を図73の
様に表現する。ここで図73中のアドレスはY座標が1
1または13である点に付けたシリアル番号を表わす。
変換後のX座標(XX)は、その点のX座標を以下の条
件式により求めた値を示している。
めに、便宜的に、隣接する画素間に存在する点のX座標
が同じ値を示すようにしたものである。X座標、Y座標
はディスク或はメモリ上に記憶されているデータを走査
して得られたY座標が11または13である点のX座
標、Y座標を表わす。始点/終点は、得られた点が水平
ベクトルに関して負の方向の始点(負始)となるか或は
負の方向の終点(負終)となるか或は正の方向の始点
(正始)となるか或は正の方向の終点(正終)となるか
を表わす。ストライプ番号は得られた点のストライプ番
号を示し、輪郭番号は得られた点がストライプ中の何番
目の輪郭であるかを示し、座標番号は得られた点が何番
目の点であるかを示している。求められるY座標が11
または13である点を図73の形式で示すと図74とな
る。これをXX(x座標)の小さい順に並べ換える。但
し、同じ値が存在するときは、 正始 負始 負終 正終 −−− 条件1 の順に並べる。例えば今回の例では、XX=24とXX
=36のパケットが二つずつ存在する。条件1に従って
並べると図76のようになる。XX=24の場合、負終
と正終の二つなので、負終のほうを仮想的に番号が若い
と考えて並べる。この時、XXの値が同じでかつX座標
の値が異なる輪郭点には特殊処理を施すためのフラグを
たてる(Yがフラグのたった状態を示し、Nはフラグの
さがった状態を示す)。さらに、並べ変えたパケットを
先頭から2個づつペアにし、各々のペアにおいて、2つ
のパケットの順番が条件1の順になるように並べ換え
る。ここでは、アドレスが5と6であるペアのみこの条
件を満たしていないので並べ換える。このように処理を
行うと輪郭ベクトルは、各ペアにおいて最初のパケット
から次のパケットへ続くという接続関係になる。即ち、
各々のペアにおいて、最初のパケットの次の点のアドレ
スには次のパケットのアドレスが記憶され、前の点のア
ドレスには何も記憶されない。また、次のパケットの次
の点のアドレスには何も記憶されず、前の点のアドレス
には最初のパケットのアドレスが記憶される。この様子
を図77に示す。最終的なアウトラインベクトルの統合
は、図74と図77を用いて行われる。
とっていたため図70のアドレス4からアドレス1へ接
続する場合でも水平ベクトルになっていたが、輪郭を黒
画素寄りにとる今回のような場合には斜め方向のベクト
ルとなってしまう。この弊害を避けるために、以下の規
則を用いて斜めベクトルを水平ベクトルと垂直ベクトル
に展開する。まず、接続方向が斜めになるベクトルに対
して場合分けを行う。ベクトルが[(p,q),(r,
s)](但し、(p,q)は始点の座標、(r,s)は
終点の座標を表わす)のとき、(p,q)と(r,s)
の間に以下の様に輪郭点を内挿する。
グが立っていない場合 (A−1) r>p かつs>qならば、(p,q)→
(p,q+2)→(r,s) (A−2) r>pかつs<qならば、(p,q)→
(r,s+2)→(r,s) (A−3) r<p かつs>qならば(p,q)→
(r,s−2)→(r,s) (A−4) r<pかつs<qならば(p,q)→
(p,q−2)→(r,s) (A−5) s=qかつr>pならば(p,q)→
(p,q+2)→(r,s+2)→(r,s) (A−6) s=qかつr>pならば(p,q)→
(p,q−2)→(r,s−2)→(r,s) (A−7) p=rならば(p,q)→(r,s) B.(p,q)のみに特殊処理フラグが立っている場合 (B−1) r>p かつs>qならば、(p,q)→
(p+2,q)→(p+2,q+2)→(r,s) (B−2) r<pかつs<qならば(p,q)→(p
−2,q)→(p−2,q−2)→(r,s) (B−3) s=qかつr>pならば(p,q)→(p
+2,q)→(p+2,q+2)→(r,s+2)→
(r,s) (B−4) s=qかつr<pならば(p,q)→(p
−2,q)→(p−2,q−2)→(r,s−2)→
(r,s) C.(r,s)のみに特殊処理フラグが立っている場合 (C−1)r>pかつs<qならば、(p,q)→(r
−2,s+2)→(r−2,s)→(r,s) (C−2) r<p かつs>qならば(p,q)→
(r+2,s−2)→(r+2,s)→(r,s) (C−3) s=qかつr>pならば(p,q)→
(p,q+2)→(r−2,s+2)→(r−2,s)
→(r,s) (C−4) s=qかつr<pならば(p,q)→
(p,q−2)→(r+2,s−2)→(r+2,s)
→(r,s) D.(p,q)と(r,s)のどちらにも特殊処理フラ
グが立っている場合 (D−1) r>pならば(p,q)→(p+2,q)
→(p+2,q+2)→(r−2,s+2)→(r−
2,s)→(r,s) (D−2) r<pならば(p,q)→(p−2,q)
→(p−2,q−2)→(r+2,s−2)→(r+
2,s)→(r,s) <規則2>内挿した点も含めて輪郭を構成するベクトル
は、必ず水平ベクトルと垂直ベクトルが交互になるよう
にする。
上連続する垂直ベクトルは、それぞれ1つの水平ベクト
ル、1つの垂直ベクトルに統合する。規則1及び規則2
と図74、図77を用いてアウトラインベクトルの統合
を行う。まず図74の第1ストライプの第1輪郭の第1
点目から走査を始める。記述を簡単にするために、第θ
ストライプの第ω輪郭の第ε点目を(θ−ω−ε)と表
わし、分割境界に関係する点、つまりここではY座標値
が11かまたは13である点を境界点と呼ぶことにす
る。まず(1−1−1)を調べる。これは境界点ではな
いので登録し、次の(1−1−2)に移る。(1−1−
2)も境界点ではないので登録し、次の(1−1−3)
に移る。(1−1−3)は境界点なので図77を参照
し、次に移動すべき点を調べる。この場合、(1−2−
4)が次に移る点となる。(1−1−3)を始点とし
(1−2−4)を終点とするベクトルは規則1の(C−
3)に相当するので(15,11)→(15,13)→
(23,13)→(23,11)→(25,11)とい
うように輪郭点を内挿する。次に規則2を適用し、連続
する水平ベクトル、連続する垂直ベクトルを統合する。
(1−1−3)の一つ前の輪郭点である(1−1−2)
から考えれば、(15,5)→(15,11)→(1
5,13)→(23,13)→(23,11)→(2
5,11)となり、(15,5)→(15,11)と
(15,11)→(15,13)は共に垂直ベクトルな
ので統合し、(15,5)→(15,13)→(23,
13)→(23,11)→(25,11)とする。そし
て(15,13)、(23,13)、(23,11)を
登録し、次に移るべき点を図74から求める。(25,
11)は(1−2−4)で示される点なので次に移る点
は(1−2−1)となる。(23,11)→(25,1
1)は水平ベクトル、(25,11)→(25,5)は
垂直ベクトルであり、交互になっているので(25,1
1)を登録する。同様に(1−2−1)、(1−2−
2)を登録する。(1−2−3)は境界点なので次に移
る点を図74から求めると(2−2−2)となる。これ
は規則1の(A−7)に相当するので、(35,11)
→(35,13)となる。先ほどと同様に(35,1
1)の一つ前の点(35,5)から考えると(35,
5)→(35,11)→(35,13)となり、垂直ベ
クトルが2つ続くので統合し、(35,11)は登録し
ない。(35,13)の次の点は(2−2−3)とな
り、(35,5)→(35,13)→(35,15)と
いうように垂直ベクトルが2つ続くので(35,13)
も登録しない。このように常に移るべき点を監視し、2
つ以上連続する水平ベクトル及び2つ以上連続する垂直
ベクトルはそれぞれ1つの水平ベクトル、1つの垂直ベ
クトルに統合し、垂直ベクトルと水平ベクトルが交互に
出てきた時点で輪郭点を登録する。(2−2−3)の次
に移る点は(2−2−4)であり、(35,5)→(3
5,15)→(33,15)というように垂直ベクトル
と水平ベクトルが交互になるので(2−2−3)、つま
り(35,15)を登録する。以上のように規則1及び
規則2に従って処理を行っていくと最終的に図78のテ
ーブルが得られる。
が、この処理を全て終了すると、ステップS316に移
る。ステップS316では正式なアウトラインベクトル
を用いて、平滑化・変倍処理を行う。これは、第6実施
例でも示したとおりである。ステップS316が終了す
るとステップS317に移り、変倍された入力画像のア
ウトラインベクトルから2値画像を再生・出力する。
した輪郭ベクトルから入力画像の正式なアウトラインベ
クトルを求めることができ、これを平滑化・変倍するこ
とで高画質な再生画像を得ることが可能である。
に応用した場合の構成図を図79、図80、図81に示
す。
に応用した構成図であり、MH符号などで送信された符
号を復号して入力2値画像データを作成し、上記アウト
ライン処理を行う。アウトライン処理部で再生成された
2値画像は記録装置によって紙などに出力されたり、図
示しない表示装置によってディスプレイなどに表示され
たりする。
に応用した構成図である。スキャナなどで入力された画
像信号を2値化し、入力画像データを作成し、アウトラ
イン処理を行う。アウトライン処理部で再生成された2
値画像は画像メモリに蓄えられ符号器によってMH符号
などの符号に変換され送信される。
ァクシミリに対して応用した場合の構成図である。前記
の2例を組み合わせたものであるが、送信受信制御回路
によってセレクタが制御され、送信受信によってアウト
ライン処理部の入出力を決定する。ここで特に、2値画
像獲得手段として、読取り部を選択し、2値画像出力手
段を記録装置として構成(或は、選択)することも可能
であるが、この場合は、変倍機能を有するデジタル複写
機(あるいはコピーモード)の実現が可能である。
力画像をストライプ分割処理することで、ワーキングメ
モリやディスクの容量を小さくすることができ、メモリ
の節約になる。また、ワーキングメモリやディスクの容
量が小さくなる分、アウトライン整列処理のときの検索
範囲が狭くなり、処理の高速化を図ることができる。
素を示す図、
理を説明するための図である。
る。
る。
図である。
画素状態を示す図である。
画素状態を示す図である。
画素状態を示す図である。
画素状態を示す図である。
の画素状態を示す図である。
の画素状態を示す図である。
の画素状態を示す図である。
の画素状態を示す図である。
の画素状態を示す図である。
の画素状態を示す図である。
0の画素状態を示す図である。
1の画素状態を示す図である。
2の画素状態を示す図である。
3の画素状態を示す図である。
4の画素状態を示す図である。
5の画素状態を示す図である。
ローチャートである。
を示す図である。
を示す図である。
図である。
理を示すフローチャートである。
理の内容を更に詳しく説明したフローチャートである。
に対応する場合の処理内容を示すフローチャートであ
る。
ローチャートである。
る処理を示すフローチャートである。
ーブルを示す図である。
ーブルを示す図である。
ーブルを示す図である。
ーブルを示す図である。
る処理を示すフローチャートである。
ローチャートである。
ローチャートである。
ーチャートである。
ローチャートである。
ローチャートである。
ローチャートである。
ーチャートである。
ローチャートである。
ローチャートである。
平ベクトルを検索する処理のフローチャートである。
直ベクトルを検索する処理のフローチャートである。
ローチャートである。
ーチャートである。
フローチャートである。
フローチャートである。
フローチャートである。
ーチャートである。
フローチャートである。
フローチャートである。
フローチャートである。
処理を示すフローチャートである。
処理を示すフローチャートである。
処理における開始点候補テーブルを説明するための図で
ある。
内容を示すフローチャートである。
理を示すフローチャートである。
図である。
ートである。
ートである。
図である。
トルの始点、終点を記述するための図である。
インベクトルの座標テーブルを示す図である。
界線上の座標を示す図である。
図である。
換えた図である。
・整列した結果を示す図である。
図である。
トルの始点、終点を記述するための図である。
インベクトルの座標テーブルを示す図である。
界線上の座標を示す図である。
図である。
換えた図である。
・整列した結果を示す図である。
構成図である。
構成図である。
応用した構成図である。
Claims (26)
- 【請求項1】 入力画像から1ライン以上の白ラインを
検出する検出手段と、 前記検出手段による1ライン以上の白ラインが検出され
た場合、入力画像を、検出された白ライン位置に基づい
て帯状画像に分割する分割手段と、 前記分割手段により分割された帯状画像単位で輪郭ベク
トルを抽出する抽出手段とを有することを特徴とする画
像処理装置。 - 【請求項2】 前記抽出手段により抽出された輪郭ベク
トルを変倍する変倍手段と、 前記変倍手段により変倍された輪郭ベクトルに基づき画
像を再生する再生手段と、 前記再生手段により再生された画像を出力する出力手段
とを有することを特徴とする請求項1記載の画像処理装
置。 - 【請求項3】 前記抽出手段は、黒画素の中心ではなく
黒画素と白画素との境界位置に輪郭ベクトルを抽出する
ことを特徴とする請求項1記載の画像処理装置。 - 【請求項4】 前記入力画像を入力するモデムを有する
ことを特徴とする請求項1記載の画像処理装置。 - 【請求項5】 前記分割手段は、さらに所定ライン数画
像を入力した時点で入力画像を複数の帯状画像に分割す
ることを特徴とする請求項1記載の画像処理装置。 - 【請求項6】 入力画像を記憶するメモリに入力画像が
所定量記憶されたことを検出する検出手段と、 前記検出手段による所定量記憶されたことの検出に基づ
き、入力画像を複数の帯状画像に分割する分割手段と、 前記分割手段により分割された帯状画像単位で、輪郭点
を輪郭ベクトルの端点とする輪郭ベクトルデータを抽出
する抽出手段と該抽出手段で抽出した前記帯状画像毎の
輪郭ベクトルデータを、輪郭点の接続順になるように整
列する整列手段とを有することを特徴とする画像処理装
置。 - 【請求項7】 前記整列手段でにより整列された輪郭ベ
クトルデータを変倍する変倍手段と、 前記変倍手段により変倍された輪郭ベクトルデータに基
づき画像を再生する再生手段と、 前記再生手段により再生された画像を出力する出力手段
とを有することを特徴とする請求項6記載の画像処理装
置。 - 【請求項8】 前記抽出手段は、黒画素の中心ではなく
黒画素と白画素との境界位置に輪郭ベクトルを抽出する
ことを特徴とする請求項6記載の画像処理装置。 - 【請求項9】 前記入力画像を入力するモデムを有する
ことを特徴とする請求項6記載の画像処理装置。 - 【請求項10】 入力画像を複数の帯状画像に分割する
分割手段と、 前記分割手段により分割された帯状画像単位で輪郭ベク
トルを抽出する抽出手段と、 前記抽出手段により抽出された輪郭ベクトルに基づき平
滑化を行う平滑化手段とを有し、 前記平滑化手段は、連続する2つの帯状画像それぞれの
輪郭ベクトルのうち、前記2つの帯状画像間の境界近傍
にある有意な座標位置の輪郭ベクトルを対象外とし、平
滑化を行うことを特徴とする画像処理装置。 - 【請求項11】 前記平滑化手段により平滑化された輪
郭ベクトルに基づき画像を再生する再生手段と、 前記再生手段により再生された画像を出力する出力手段
とを有することを特徴とする請求項10記載の画像処理
装置。 - 【請求項12】 前記抽出手段は、黒画素の中心ではな
く黒画素と白画素との境界位置に輪郭ベクトルを抽出す
ることを特徴とする請求項10記載の画像処理装置。 - 【請求項13】 画像を入力するモデムを有することを
特徴とする請求項10記載の画像処理装置。 - 【請求項14】 入力画像から1ライン以上の白ライン
を検出する検出ステップと、 前記検出ステップによる1ライン以上の白ラインが検出
された場合、入力画像を、検出された白ライン位置に基
づいて帯状画像に分割する分割ステップと、 前記分割ステップにより分割された帯状画像単位で輪郭
ベクトルを抽出する抽出ステップとを有することを特徴
とする画像処理方法。 - 【請求項15】 前記抽出ステップにより抽出された輪
郭ベクトルを変倍する変倍ステップと、 前記変倍ステップにより変倍された輪郭ベクトルに基づ
き画像を再生する再生ステップと、 前記再生ステップにより再生された画像を出力する出力
ステップとを有することを特徴とする請求項14記載の
画像処理方法。 - 【請求項16】 前記抽出ステップは、黒画素の中心で
はなく黒画素と白画素との境界位置に輪郭ベクトルを抽
出することを特徴とする請求項14記載の画像処理方
法。 - 【請求項17】 前記入力画像をモデムより入力するス
テップを有することを特徴とする請求項1記載の画像処
理方法。 - 【請求項18】 前記分割ステップは、さらに所定ライ
ン数画像を入力した時点で入力画像を複数の帯状画像に
分割することを特徴とする請求項14記載の画像処理方
法。 - 【請求項19】 入力画像を記憶するメモリに入力画像
が所定量記憶されたことを検出する検出ステップと、 前記検出ステップによる所定量記憶されたことの検出に
基づき、入力画像を複数の帯状画像に分割する分割ステ
ップと、 前記分割ステップにより分割された帯状画像単位で、輪
郭点を輪郭ベクトルの端点とする輪郭ベクトルデータを
抽出する抽出ステップと該抽出ステップで抽出した前記
帯状画像毎の輪郭ベクトルデータを、輪郭点の接続順に
なるように整列する整列ステップとを有することを特徴
とする画像処理方法。 - 【請求項20】 前記整列ステップにより整列された輪
郭ベクトルデータを変倍する変倍ステップと、 前記変倍ステップにより変倍された輪郭ベクトルデータ
に基づき画像を再生する再生ステップと、 前記再生ステップにより再生された画像を出力する出力
ステップとを有することを特徴とする請求項19記載の
画像処理方法。 - 【請求項21】 前記抽出ステップは、黒画素の中心で
はなく黒画素と白画素との境界位置に輪郭ベクトルを抽
出することを特徴とする請求項19記載の画像処理方
法。 - 【請求項22】 前記入力画像をモデムより入力するス
テップを有することを特徴とする請求項19記載の画像
処理方法。 - 【請求項23】 入力画像を複数の帯状画像に分割する
分割ステップと、 前記分割ステップにより分割された帯状画像単位で輪郭
ベクトルを抽出する抽出ステップと、 前記抽出ステップにより抽出された輪郭ベクトルに基づ
き平滑化を行う平滑化ステップとを有し、 前記平滑化ステップは、連続する2つの帯状画像それぞ
れの輪郭ベクトルのうち、前記2つの帯状画像間の境界
近傍にある有意な座標位置の輪郭ベクトルを対象外と
し、平滑化を行うことを特徴とする画像処理方法。 - 【請求項24】 前記平滑化ステップにより平滑化され
た輪郭ベクトルに基づき画像を再生する再生ステップ
と、 前記再生ステップにより再生された画像を出力する出力
ステップとを有することを特徴とする請求項23記載の
画像処理方法。 - 【請求項25】 前記抽出ステップは、黒画素の中心で
はなく黒画素と白画素との境界位置に輪郭ベクトルを抽
出することを特徴とする請求項23記載の画像処理方
法。 - 【請求項26】 前記入力画像をモデムより入力するス
テップを有することを特徴とする請求項23記載の画像
処理方法。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4254989A JP2954434B2 (ja) | 1992-09-24 | 1992-09-24 | 画像処理方法及びその装置 |
EP93307549A EP0589702B1 (en) | 1992-09-24 | 1993-09-23 | Image processing method and apparatus |
DE69324874T DE69324874T2 (de) | 1992-09-24 | 1993-09-23 | Bildverarbeitungsverfahren und -gerät |
US08/636,629 US5828794A (en) | 1992-09-24 | 1996-04-23 | Image processing method and apparatus for enlarging and reducing image data |
US09/038,477 US6111994A (en) | 1992-09-24 | 1997-12-12 | Outline extraction using partial image processing |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4254989A JP2954434B2 (ja) | 1992-09-24 | 1992-09-24 | 画像処理方法及びその装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06103379A JPH06103379A (ja) | 1994-04-15 |
JP2954434B2 true JP2954434B2 (ja) | 1999-09-27 |
Family
ID=17272665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4254989A Expired - Fee Related JP2954434B2 (ja) | 1992-09-24 | 1992-09-24 | 画像処理方法及びその装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2954434B2 (ja) |
-
1992
- 1992-09-24 JP JP4254989A patent/JP2954434B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH06103379A (ja) | 1994-04-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2690110B2 (ja) | 走査変換方法 | |
US5740285A (en) | Image reduction/enlargement technique | |
US6404921B1 (en) | Contour extracting method and apparatus | |
US5202933A (en) | Segmentation of text and graphics | |
KR950005231B1 (ko) | 도형 처리장치 | |
US8249394B2 (en) | Method and system for shift-map image editing | |
EP0589702B1 (en) | Image processing method and apparatus | |
JP3327621B2 (ja) | オブジェクトソートとエッジ計算を行うグラフィックシステム及びその方法 | |
KR0129505B1 (ko) | 문자 데이터, 로고·삽화 데이터 입력출력장치와 입력출력방법 | |
US5426727A (en) | High-quality character generating system and method for use therein | |
US5388166A (en) | Image drawing apparatus | |
JP2954434B2 (ja) | 画像処理方法及びその装置 | |
JPH0322186A (ja) | 画像出力方法 | |
JPH0464182A (ja) | 塗り潰しパターン発生装置および該装置を用いたパターン塗り潰し方法 | |
JPH0652304A (ja) | 画像処理装置及びその方法 | |
US6356656B1 (en) | Contour-information extraction apparatus and method | |
JPH03177982A (ja) | 画像処理方法 | |
JP2646476B2 (ja) | ロゴ・イラストデ−タ入力出力装置と入力出力方法 | |
JP3133807B2 (ja) | 輪郭抽出方法及びその装置 | |
JP2806679B2 (ja) | 文字発生装置 | |
JP3093906B2 (ja) | 画像処理装置及び方法 | |
JP2885996B2 (ja) | 画像処理方法及び装置 | |
JP2782904B2 (ja) | 多角形塗りつぶし方式 | |
JP3037504B2 (ja) | 画像処理方法及びその装置 | |
JPH08287221A (ja) | 画像処理装置及び画像処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 19990607 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070716 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080716 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080716 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090716 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090716 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100716 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100716 Year of fee payment: 11 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110716 Year of fee payment: 12 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120716 Year of fee payment: 13 |
|
LAPS | Cancellation because of no payment of annual fees |