JPH0520467A - 画像処理方法及びその装置 - Google Patents

画像処理方法及びその装置

Info

Publication number
JPH0520467A
JPH0520467A JP17209891A JP17209891A JPH0520467A JP H0520467 A JPH0520467 A JP H0520467A JP 17209891 A JP17209891 A JP 17209891A JP 17209891 A JP17209891 A JP 17209891A JP H0520467 A JPH0520467 A JP H0520467A
Authority
JP
Japan
Prior art keywords
line
edge
contour
point
interest
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP17209891A
Other languages
English (en)
Other versions
JP3130965B2 (ja
Inventor
Yoshihiro Ishida
良弘 石田
Kunihiro Yamamoto
邦浩 山本
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 JP17209891A priority Critical patent/JP3130965B2/ja
Priority to US07/912,970 priority patent/US5561534A/en
Priority to EP92306374A priority patent/EP0522877B1/en
Priority to DE69227073T priority patent/DE69227073D1/de
Publication of JPH0520467A publication Critical patent/JPH0520467A/ja
Application granted granted Critical
Publication of JP3130965B2 publication Critical patent/JP3130965B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Abstract

(57)【要約】 【目的】 本発明は、複雑輪郭線内部を塗り潰す処理
を、その図形の歪を発生せず、高速に且つ簡便・安価に
実現させることを可能にする画像処理方法及びその装置
を提供しようとするものである。 【構成】 本発明においては、閉輪郭を決定する各線要
素において、注目線要素が水平であると判断したときそ
の線要素のページメモリ3への描画は行わない。水平で
ないと判断した場合には、注目線要素とその前後に隣接
するそれぞれの線要素との接続関係及び塗りつぶすべき
領域の方向に基づいて、当該注目線要素の両端点の位置
を図22の規則に従って補正する。そして、補正された
両端点位置に基づいて順次ページメモリ3上に線要素を
描画する。そして、その後、ページメモリに対して主走
査方向に走査するときの奇数番目に遭遇する輪郭は当該
画素位置が領域の正転位置を示しているとして、偶数番
目に遭遇する輪郭の進行方向にある隣接画素位置は当該
画素位置が領域の反転位置を示しているとして塗り潰
す。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は画像処理方法及びその装
置、詳しくは複数の線要素でもって構成された閉輪郭の
内部を塗り潰す画像処理方法及びその装置に関する物で
ある。
【0002】
【従来の技術】この種の装置においては、閉領域内部を
塗りつぶすことは基本的な画像処理機能の1つであり、
これまで種々の塗りつぶし方法が提案されている。
【0003】最も基本的な方法は、ソフトウェアによつ
て、ランダム・アクセス・メモリ(RAM)の各画素ラ
イン毎に塗り潰し範囲を逐一指定し、指定された範囲の
ライン画素を塗りつぶすものである。
【0004】このような方法の代表例としては、文献
「Fundamentals of Interactive Computer Graphics 」
(J.D.FOLEY/A.VAN DAM 共著 1982年Addison-Wesl
ey刊pp.456〜460)に記載されている。
【0005】しかしながら、この処理(ソフトウエア)
による塗り潰しは処理時間が長くなってしまうという問
題がある。
【0006】このため、ハードウエアにより高速に塗り
潰しを行うための種種の手法が提案されている。
【0007】この種の方法は、図形の輪郭を定める画素
のみを画像メモリ上に描画した後、この画像メモリをラ
スタ走査を行い、走査線上の奇数番目の輪郭線ドッドで
塗り潰しを開始し、偶数番目の輪郭線ドットで塗り潰し
を終了する(以降、奇偶反転法という)ものである。
【0008】しかし、この奇遇反転法を用いる場合は、
単純に輪郭の描画を行うと、例えば図2のL1、L2、
L3、L4、L5のように塗り潰されるべきでない部分
が塗り潰され、塗り潰されるべき部分が塗り潰されない
(ラインL3の波線部)という問題があった。
【0009】これをふまえて、輪郭描画に規則を設定し
て、改善を計る提案もなされている。
【0010】例えば、特公平1−54752号公報に
は、下記の5つの規則に従った輪郭画素の書き込みを開
示している。
【0011】規則1:水平な線セグメントは書かない。
【0012】規則2:各線セグメントは各ライン当り1
画素で表す。
【0013】規則3:各線セグメントの始点は書かな
い。
【0014】規則4:輪郭線画素はこの画素を書込もう
としているメモリ・アドレスに記憶されている画素デー
タとの排他的ORを取って、その結果を書き込む。
【0015】規則5:各線セグメントは上から下または
下から上への一方向で指定する。
【0016】規則1は図2のラインL2やL4のように
水平な輪郭線部分に含まれる輪郭画素P1〜P2やP4
〜P3によつて1つのラインに奇数個の輪郭画素が生じ
るのを防止している。
【0017】規則2は、線セグメントの角度に関係なく
常に1ライン当り1画素で輪郭線を表すためのものであ
る。
【0018】規則3は、上向きまたは下向きの頂点を除
去するものである。規則5に従つて例えば上から下への
一方向で線セグメントを指定するものとすれば、規則3
は図2の上向きの頂点の輪郭線画素P5およびP6を除
去する。
【0019】規則4および規則5は、規則3によつて処
理される頂点と反対向きの頂点の輪郭線画素(この例で
はP7)を除去するものである。
【0020】
【発明が解決しようとしている課題】しかしながら、上
記方式では、歪んだ図形となって再生されるという問題
がある。また、輪郭線画素の書き込み終了後、メモリの
各ラインを走査し、奇数番目の輪郭線画素から次に生ず
る偶数画素番目の輪郭線画素までを塗り潰す際に、偶数
番目の輪郭線画素から塗り潰さないようにすると、更に
図形の右側の輪郭線上の画素が削れて一回り小さな図形
となってしまうという不具合があった。
【0021】図3は、上記規則に従って輪郭を描画した
例である。図4は、図3に得られた図形に基づて塗り潰
した結果を示している。図3において、“×”印は輪郭
画素としては書き込まれない画素を示している。また、
上記従来技術で推奨される方法で塗り潰す場合は、P5
〜P8、P9〜P10、P11〜P3、及びP12〜P
7といった部分も塗られなくなるものである。
【0022】特開平2−50778号公開公報では、輪
郭線を描画する際に、水平線(斜線描画時に発生する水
平画素の連続する部分を含む)の描画において、その両
端の点に相当する画素を描画するか否かを規則化した方
式が開示されている。しかしながら、この方式には、頂
点画素に関する扱いに関しては開示されておらず、頂点
画素において生ずる誤判定もしくは歪みに関しては配慮
がなされていない。
【0023】また、上記従来方法等で発生した図形の歪
みを補うため、例えば図7に示す如く、他にまた輪郭線
だけを描画して、この輪郭線画素と歪んだ図形との画素
毎の論理和をとつて歪みのない図形として出力する方式
も試みられているが、この場合には、処理に要するメモ
リ量が、図形を生成したメモリの他に輪郭線のみの画像
を保持する分まで必要となる。まして、輪郭線のみの画
像を生成するための時間や回路も余分に必要になったり
して、好ましくない。
【0024】本発明はかかる従来技術に鑑みなされたも
のであり、複雑輪郭線内部を塗り潰す処理を、その図形
の歪を発生せず、高速に且つ簡便・安価に実現させるこ
とを可能にする画像処理方法及びその装置を提供しよう
とするものである。
【0025】
【課題を解決するための手段】この課題を解決するため
本発明の画像処理方法は以下に示す行程を備える。すな
わち、複数の線要素でもって構成された閉輪郭の内部を
塗り潰す画像処理方法において、注目線要素の向きに基
づいて、当該注目線要素を描画するか否かを判定する判
定行程と、該判定行程で描画対象であると判定された注
目線要素に対し、当該注目線要素とその前後に隣接する
それぞれの線要素との接続関係及び塗りつぶすべき領域
の方向に基づいて、当該注目線要素の両端点の位置を補
正する補正行程と、該補正行程で補正さた両端点の位置
で注目線要素を画像展開用メモリに描画する線要素描画
行程と、前記画像展開用メモリに対して主走査方向に走
査するときの奇数番目に遭遇する輪郭は当該画素位置が
領域の正転位置を示しているとして、偶数番目に遭遇す
る輪郭の進行方向にある隣接画素位置は当該画素位置が
領域の反転位置を示しているとして塗り潰す塗り潰し行
程とを備える。
【0026】また、本発明の画像処理装置は以下に示す
構成を備える。すなわち、複数の線要素でもって構成さ
れた閉輪郭の内部を塗り潰す画像処理装置において、画
像を展開するメモリと、注目線要素の向きに基づいて、
当該注目線要素を描画するか否かを判定する判定手段
と、該判定手段で描画対象であると判定された注目線要
素に対し、当該注目線要素とその前後に隣接するそれぞ
れの線要素との接続関係及び塗りつぶすべき領域の方向
に基づいて、当該注目線要素の両端点の位置を補正する
補正手段と、該補正手段で補正さた両端点の位置で注目
線要素を前記メモリに描画する線要素描画手段と、前記
メモリに対して主走査方向に走査するときの奇数番目に
遭遇する輪郭は当該画素位置が領域の正転位置を示して
いるとして、偶数番目に遭遇する輪郭の進行方向にある
隣接画素位置は当該画素位置が領域の反転位置を示して
いるとして塗り潰す塗り潰し手段とを備える。
【0027】
【作用】かかる本発明の画像処理方法或いは装置におい
て、閉輪郭を決定する各線要素において、注目線要素が
描画対象として扱うか否かを判定する。描画対象として
扱う場合には、当該注目線要素とその前後に隣接するそ
れぞれの線要素との接続関係及び塗りつぶすべき領域の
方向に基づいて、当該注目線要素の両端点の位置を補正
する。そして、補正された両端点位置に基づいて順次メ
モリ上に線要素を描画する。そして、その後、メモリに
対して主走査方向に走査するときの奇数番目に遭遇する
輪郭は当該画素位置が領域の正転位置を示しているとし
て、偶数番目に遭遇する輪郭の進行方向にある隣接画素
位置は当該画素位置が領域の反転位置を示しているとし
て塗り潰す。
【0028】
【実施例】以下、添付図面に従って本発明にかかる実施
例を詳細に説明する。
【0029】<動作概要の説明>先ず、実施例における
動作概要を簡単に説明する。
【0030】実施例では、図形の輪郭として、所定方向
に方向付けられた輪郭を用いる。即ち、扱う図形の輪郭
を全て時計の回転方向(以下、右回り)に連なるアウト
ラインベクトル(線要素)の集まり、もしくは、扱う図
形の輪郭を全て反時計の回転方向(以下、左回り)に連
なるアウトラインベクトルの集まりとして表す。ここ
で、時計の回転方向に連なるアウトラインベクトルと
は、そのアウトラインベクトルの右側を塗りつぶすと該
当図形が塗りつぶされることを意味すると考えて良い
(図5)。また、反時計の回転方向に連なるアウトライ
ンベクトルとは、そのアウトラインベクトルの左側を塗
りつぶすと該当図形が塗りつぶされるものである(図
6)。
【0031】さて、実施例では、各アウトラインベクト
ルの向き及び傾斜を判断し、かつまた、該アウトライン
ベクトルの直前のアウトラインベクトルの向き及び傾
斜、及び直後のアウトラインベクトルの向き及び傾斜に
よつて、該当ベクトルの各端点及び両端点以外のベクト
ル上の端点を閉区間をなす境界点の判定に用いるか否か
を判定する。しかる後に、各走査毎に該走査線と交差す
る奇数番目の境界判定用エッジか、偶数番目の境界判定
用エッジかで、メモリ上の対応する画素位置にプロット
するか、主走査方向に一画素隣の位置にプロットするか
を制御する。かくして、アウトラインのみを描画する。
ただし、水平でないベクトルの描画は、各走査線当たり
1画素でプロットする。
【0032】しかる後、前記一走査線分のデータを水平
走査して、奇数番目のプロットから塗り潰しを開始し、
偶数番目のプロット位置で塗りつぶしを中止するように
する。
【0033】<装置構成の説明>以下、実施例の画像処
理装置の具体的説明を行う。
【0034】図1は、ラスタ走査型のビデオプリンタ用
に構成した実施例の画像処理装置のブロック構成図を示
している。図中、1はマイクロプロセッサ(CPU)
で、バス9を介してRAM(ランダムアクセスメモリ)
2、ページメモリ3、直線描画回路4、同期制御回路
6、I/Oポート4及び14と接続されている。尚、C
PU1の制御処理手順はプログラムとして内部のROM
(図示せず)に格納されている。5は塗りつぶし回路
で、同期制御回路6からの同期信号12に従ってページ
メモリ3よりラスタ走査出力される輪郭画像データ10
を入力し、塗りつぶされた画像データ11を出力する。
8はプリンタ装置であり、I/Oポート7を介して、マ
イクロプロセッサ1とインタフェース接続されている。
また、プリンタ装置8は、同期制御回路6からの同期信
号13と、塗りつぶされた画像データ11とが、ビデオ
インタフェースとして接続されている。
【0035】輪郭データは、対象とする画像内に含まれ
ている閉ループの数を示すデータと各閉ループを構成す
る頂点の数を示すデータ群とで構成される。ただし、各
閉ループ上の各頂点は、それぞれの閉ループ上で予め方
向づけられた順番に従って、隣合う頂点の関係を維持し
たままのデータの集まりとして表現される。この内容を
図9に示した。
【0036】先に説明したように、実施例では、輪郭デ
ータを所定方向に並んだデータの集まりとしてとらえて
いる。図8は、右回りアウトラインデータの例で、図示
のアウトラインは頂点A→B→C→D→E→F→G→H
→I→J→Aの順に右回りに一巡する点列として表現さ
れている。この閉図形の輪郭データを示したのが図10
である。
【0037】以下、実施例では、座標の原点は画像の左
上隅にあるものとし、主走査方向(右方向)をx軸に、
副走査方向(下方向)をy軸として説明する。また、ア
ウトラインは、右回りのデータ表現をとるものとして説
明を進める。尚、各閉ループ内の始点は、ループ上の任
意の点でよい。
【0038】<主処理の説明>図11に、実施例におけ
るCPU1の動作処理手順を示し、以下にそれを説明す
る。
【0039】CPU1は、ステップS1でその処理を開
始するとステップS2へ進む。ステップS2では、ペー
ジメモリ3をリセットする。このとき、CPU1は、同
期制御回路6を介して塗り潰し回路5がページメモリへ
一定のデータを出力するように制御する。つまり、同期
制御回路6にこの一定データ(例えば“0”)をページ
メモリ3全面に書き込まされることで、ページメモリ3
のリセットを行う。
【0040】図16に実施例の塗り潰し回路5の回路構
成を示す。ステップS2で、CPU1の制御により、同
期制御回路6は信号線12−2を論理レベル“0(LO
W)”に固定することによって、塗り潰し回路5の出力
11を全てLOWになるように制御できる。同期制御回
路6は、この出力11をページメモリ3に対し、同期信
号に合わせて書き込み、これによりページメモリ3の全
アドレス空間を“0”でリセットすることができる。図
17は1ページの先頭を意味するページ同期信号(Page
Sync )、及び同ページ内における各走査線の先頭を意
味する走査線同期信号(Line Sync )の関係を示すタイ
ミングチャートである。そして、図18は1走査線の先
頭を意味する走査線同期信号(Line Sync )及び同走査
線内における各画素データを示すタイミングチャートで
ある。上述したリセット処理は、ページ同期信号により
開始され、ページメモリ3の図示しない付加回路によっ
て走査同期信号及び画素同期信号によりメモリのアドレ
スを順次変更していくことで、実施される。
【0041】説明を戻して、ページメモリ3のリセット
処理が完了すると、処理はステップS3に進み、I/O
14を経由して画像の出力指示が合ったか否かを判定
し、その指示があるまで待つ。画像出力指示があった場
合、処理はステップS4に進み、塗り潰し用の輪郭デー
タをI/O14を経由して、外部より、或いは図示しな
い補助記憶装置からRAM領域2に入力する。処理はス
テップS5に進み、図22に示す規則に従って、CPU
1は直線描画回路4を制御してページメモリ上に塗り潰
し用の輪郭を描画する。そして、ステップS6で、プリ
ンタがレディであるか否かを判定し、レディであればス
テップS7へ、そうでなければレディになるまで待つ。
【0042】プリンタがレディになって、ステップS7
に処理が進むと、CPU1は同期制御回路6を制御して
ページメモリ3上の塗り潰し用の輪郭画像を1ラインず
つ読みだし、塗り潰し回路5を経由して、塗り潰された
2値画像を生成させ、それを信号11に出力させる。
【0043】<塗り潰し用輪郭描画処理の説明>上述し
た処理中における、ステップS5における“塗り潰し用
輪郭描画”を更に詳しく説明する。図12は、塗り潰し
用輪郭描画にかかる処理を示すフローチャートである。
【0044】先ず、CPU1はステップS51で輪郭描
画処理が開始すると、ステップS52に進む。ステップ
S52では、図9に示される形式で与えられた合うとラ
インデータの閉ループ数Nを参照し、ステップS53に
進む。ステップS53では、このループ数Nが“0”よ
り大きいか否か、つまり、閉領域が少なくとも1つある
か否かを判定する。1つも閉ループが存在しない場合、
処理はステップS68に進み、一連の処理を終えてメイ
ンルーチンに復帰する。
【0045】さて、閉ループが1以上あると判定した場
合には、ステップS54に進み、図9の形式で与えられ
るアウトラインデータの各ループ内の頂点数テーブルの
第0ループ内の頂点数を格納してある位置に、ループ内
頂点数テーブルポインタを初期化して、ステップS55
へ進む。ステップS55では、ループ内頂点数テーブル
ポインタに指されている位置のループ内頂点数テーブル
を参照し、ステップS56でその頂点数が2以上出ある
か否かを判断する。2以下なら、閉ループを形成するこ
とはできないわけであるから、ステップS68に進み、
処理を終える。また、2以上の時にはステップS57に
進み、注目しているループ内の最終頂点を始点とし、最
初の頂点を終点とするエッジを現エッジとみなす。そし
て、この現エッジの向きとxの増分を算出する。即ち、
今、当該エッジの始点座標を(xstart,ystart )、終
点座標を(xend,yend )とする時、ystart =yend
の時、エッジの向きは水平となる。ただし、水平の場合
にはx増分は算出しない。この時、x start>xend な
ら、左向きエッジとし、Xstart <xend なら、右向き
エッジとする。また、この時、xstart=xend という
のは、始点と終点が一致している一点のみのエッジを意
味し、その前もしくは後のエッジの一部となっている
か、孤立点である。このようなエッジは、図9で示され
るデータを形成する際に、輪郭を構成するエッジの頂点
列から、あらかじめ除去されているものとする。
【0046】y start>y endの時は、エッジの向きを
上向きと判定し、xの増分は(xstart −xend )/
(ystart −yend )で算出する。
【0047】ystart <y endの時は、エッジの向きを
下向きと判定し、Xの増分は、(Xend −Xstart )/
(yend −ystart )で算出する。
【0048】このステップS57の処理を終えると、ス
テップS58へ進み、当該ループの最初の頂点(第0頂
点)を始点として、次の頂点(第1頂点)を終点とする
エッジを次エッジ(注目エッジに対して、輪郭ループ上
次に接続しているエッジ、即ち、注目エッジの終点を始
点とするエッジ)とし、このエッジの向きとxの増分
を、ステップS57と同様に求める。ステップS58の
処理を終えると、ステップS59へ進む。ステップS5
9では、注目する頂点座標テーブルポインタを、図9で
いう当該ループの第0頂点座標のデータの格納されるア
ドレス値に設定を行って、ステップS60へ進む。ステ
ップS60では、この時点の直前における現エッジデー
タ(現エッジの向き及びxの増分)をもつて、前エッジ
(注目エッジに対して、輪郭ループ上、その直前に接続
しているエッジ、即ち、注目エッジの始点を終点とする
エッジ)データとする。そして、ステップS61へ進
む。ステップS61では、この時点の直前における次エ
ッジデータ(次エッジの向き及びxの増分)をもって、
現エッジデータとする。そして、ステップS62へ進
む。ステップS62では、次エッジデータ(次エッジの
向き及びxの増分)を、ステップS57と同様に求め
る。この時、次エッジの始点は、現エッジの終点であ
り、次エッジの終点は、もちろん、現エッジの終点に対
して、ループ上の次の頂点である。これらは、注目する
頂点位置の次の頂点位置、及び、次の次の頂点位置のデ
ータを参照することにより、得られるが、この時点での
注目する頂点位置が、該ループの最終頂点にある時は、
次エッジとは、当該ループの第0頂点が始点となり、第
1頂点が終点となる。また、注目する頂点位置が、該ル
ープの最終頂点の直前の頂点にある時には、最終頂点が
始点となり、第0頂点が終点となる様に制御も行ってい
る。
【0049】ステップS62の処理を終えると、ステッ
プS63に進み、この時点における前エッジデータ、現
エッジデータ及び次エッジデータと図22の規則に基づ
き、現エッジデータに関する描画処理を図13に示すフ
ローチャートに従って実行する(詳細は後述する)。
【0050】このステップS63の処理を終了すると、
処理はステップS64へ進み、注目する頂点座標テーブ
ルポインタの値を更新し、ループ上の次の頂点の座標テ
ーブルの位置とする。そして、ステップS65で、当該
ループ内の全エッジ分の処理が完了したか否かを判定
し、完了していればステップS66へ進む。また、そう
でなければ、ステップS60へ戻り、それまで次エッジ
として扱われたエッジを現エッジとして、上述した一連
の処理を続けることになる。全エッジ分の処理が完了し
たか否かは、例えば、各ループ毎に、このステップS6
5を通過した回数をカウントしておき、その回数が、当
該ループ内に含まれる頂点の数を越えたか否かで判定す
ることができる。
【0051】ステップS66では、ループ内頂点数テー
ブルポインタを次のループのデータを保持する位置に更
新して、ステップS67へ進む。ステップS67では、
当該輪郭データ内に含まれる全てのループに対して一連
の処理が完了したか否かを判定し、完了していれば、ス
テップS68へ進み、そうでなければ、ステップS55
へ戻つて、次のループに対する一連の処理を続ける。
【0052】全ループの処理を完了したか否かは、例え
ば、このステップS67を通過した回数をカウントして
おき、その回数が、当該輪郭データ内に含まれるループ
の数を越えたか否かで判定することができる。ステップ
S68では、塗り潰し用輪郭描画の処理を終えたとして
メインルーチンに戻る。
【0053】<現ベクトルデータ描画処理の説明>以
下、図12のステップS63の“現ベクトルデータ描画
処理”の処理内容を図13のフローチャートに従って説
明する。
【0054】ステップS63においては、現エッジ、前
エッジ及び次エッジの向きとxの増分を用いて処理を進
める。現エッジに対する輪郭ベクトルを描画する際に、
その生成規則を図22に示した。
【0055】まず、現エッジが水平エッジ、即ち、向き
が左向きであるか、または右向きである場合は、この現
エッジに対しては、輪郭ベクトル(輪郭ベクトルを表現
する画素群)は生成しない。また、現エッジが上向きで
ある場合は基本的にエッジ上の画素を輪郭画素としてプ
ロットし、下向きのときには基本的にエッジ上の画素
は、本来の位置より走査方向に1画素ずれた位置にプロ
ットする。ただし、各輪郭エッジの両端点の扱いはは、
前エッジのデータの内容及び次エッジのデータの内容に
より場合分けして処理する。
【0056】図22においては、始点の状態の欄には、
現エッジを実線矢印、前エッジを波線矢印で示し、矢印
の向きはそれぞれのエッジの向き、斜線は各エッジの斜
線側が塗り潰されるべき領域であることを示している。
終点の状態の欄には、現エッジを実線矢印、次エッジを
波線矢印で示し、矢印の向きはそれぞれのエッジの向
き、斜線は各エッジの斜線側が塗り潰されるべき領域で
あることを示している。
【0057】まず、現エッジの始点の取扱いに注目し、
現エッジが上向きである場合(始1〜始5)を説明す
る。
【0058】前エッジも上向きの場合(ケース始1)
は、現エッジの始点は、実際よりも、一走査線分だけ、
エッジに沿って終点方向に移動した点にあるとして、輪
郭画素をプロットする。前エッジが下向きの場合は、前
エッジの終点即ち、現エッジの始点が閉図形の凹頂点に
なる時(ケース始2)なら、始点はやはり、実際よりも
一走査線だけ、エッジに沿って終点に移動した点にある
として輪郭画素をプロットする。閉図形の凸頂点になる
時(ケース始3)は、始点は実際の位置の点そのものと
して、輪郭画素をプロットする。尚、ケース始2か、ケ
ース始3かの判別は、現エッジのx増分と、前エッジの
x増分との大小関係を比較することで可能である。即
ち、前エッジのx増分を△xpre ,現エッジのx増分を
△xnow とすると、△xpre >△xnow の場合はケース
始2であり、△Xpre <△xnow の場合は、ケース始3
である。ただし、△xpre =△Xnow の場合は、ケース
始3であると判定することにする。さて、前エッジが左
向きの場合(ケース始4)は、現エッジの始点は、実際
の位置の点そのものとしてバ輪郭画素をプロットし、前
エッジが右向きの場合(ケース始5)は、現エッジの始
点は、実際よりも一走査線分だけエッジに沿つて終点方
向に移動した点にあるとして輪郭画素をプロットする。
【0059】次に、現エッジが下向きである場合(始6
〜始10)の始点を考える。
【0060】前エッジが、上向きの場合は、前エッジの
終点、すなわち、現エッジの始点が、閉図形の凸頂点に
なる時(ケース始6)なら、始点は、実際の位置の点そ
のものとして輪郭画素をプロットする。閉図形の凹頂点
になる時(ケース始7)なら、始点は、実際よりも一走
査線分だけ、エッジに沿って終点方向に移動した点にあ
るとして輪郭画素をプロットする。前エッジが下向きの
場合(ケース始8)及び右向きの場合(ケース始10)
には、始点は実際の位置の点そのものとして輪郭画素を
プロットする。前エッジが左向きの場合(ケース始9)
には、始点は、実際よりも一走査線分だけエッジに沿っ
て終点方向に移動した点にあるとして輪郭画素をプロッ
トする。ここで、ケース始6かケース始7かの判別は、
現エッジのx増分△xnow と前エッジのx増分△xpre
との大小関係を比較することで可能である。即ち、△x
pre <△xnowの場合はケース始6であり、△xpre >
△xnow の場合はケース始7である。△xpre =△xno
w の場合は、ケース6であると判定することにする。
【0061】次に、現エッジの終点の取扱いに注目した
場合を説明する。
【0062】先ず、現エッジが上向きである場合(終1
〜終5)を説明する。次エッジも上向きの場合(ケース
終1)は、現エッジの終点は、実際の位置の点そのもの
として輪郭画素をプロットする。次エッジが下向きの場
合は、次エッジの始点、即ち、現エッジの終点が閉図形
の凹頂点になる時(ケース終3)には、現エッジの終点
は実際の位置よりも一走査線だけエッジに沿って始点側
に戻った点にあるとして、輪郭画素をプロットする。ま
た、閉図形の凸頂点になる時(ケース終2)には、現エ
ッジの終点は、実際の位置の点そのものとして、輪郭画
素データをプロットする。次エッジが左向きの場合に
は、現エッジの終点は実際の位置よりも一走査線だけエ
ッジに沿って始点に戻った点にあるとして、輪郭画素を
プロットする。次エッジが右向きの場合には、現エッジ
の終点は、実施の位置の点そのものとして輪郭画素をプ
ロットする。ここで、ケース終2かケース終3かの判別
は、現エッジのx増分△xnow と、次エッジのx増分△
xpostとの大小関係を比較することで可能である。即
ち、△xnow <△xpostの場合は、ケース終2であり、
△xnow >△xpostの場合は、ケース終3である。ただ
し、△xnow =△xpostの場合は、ケース終2であると
判定することにする。
【0063】次に現エッジが下向きの場合(終6〜終1
0)を説明する。次エッジが上向きの場合は、次エッジ
の始点、即ち、現エッジの終点が閉図形の凸頂点になる
時(ケース終6)には、現エッジの終点は、実際の位置
の点そのものとして輪郭画素をプロットする。閉図形の
凹頂点になる時(ケース終7)には、現エッジの終点
は、実際の位置よりも一走査線分だけエッジの沿って始
点に戻った点にあるとして輪郭画素をプロットする。次
エッジが下向きの場合(ケース終8)には、現エッジの
終点は、実際の位置よりも一走査線分だけエッジに沿っ
て始点に戻った点にあるとして輪郭画素をプロットす
る。次エッジが左向きの場合(ケース終9)には、現エ
ッジの終点は、実際の位置の点そのものとして輪郭画素
をプロットする。次エッジが右向きの場合(ケース終1
0)には、現エッジの終点は、実際の位置よりも一走査
線分だけエッジに沿って戻った位置にある点として輪郭
画素をプロットする。ここで、ケース終6かケース終7
かの判別は、現エッジのx増分△xnow と、次エッジの
x増分△xpostとの大小関係を比較することで可能であ
る。即ち、△xnow <△xpostの場合は、ケース終6で
あり、△xnow >△xpostの場合、ケース終7である。
△xnow =△xpostの場合は、ケース終6であると判定
することにする。
【0064】以上の生成規則に従って、輪郭ベクトルの
両端点の取扱いが定められる(両端点の座標位置の補正
値が決定される)。現エッジに対しての輪郭画素が生成
される。
【0065】以上説明した処理がステップS63で行わ
れることになるが、結局CPU1は図13に示すフロー
チャートに従って処理することになる。
【0066】先ず、ステップS630にて、その一連の
処理を開始すると、ステップS631へ進む。この時、
入力データとしては、ステップS60で更新された前エ
ッジデータ(前エッジの向き、及びx増分△xpre )
と、ステップS61で更新された現エッジデータ(現エ
ッジの始点と終点の座標値(それぞれ(xstart ,yst
art ).(xend ,yend )、向き、及びx増分△xno
w とする)、及びステップS62で作成された次エッジ
データ(次エッジの向き、及びx増分△xpost)があ
る。ステップS631では、現エッジの向きが水平か否
か(即ち、右向きもしくは左向きのいずれかであるかど
うか)を判定し、水平であれば、ステップS644へ進
み、その一連の処理を終えて、本処理をコールした次の
ステップ(ステップS64)へ戻る。
【0067】また、水平でなければ、ステップS632
へ進み、現エッジの向きは上向きか否かを判定し、上向
きであれば、ステップS633へ進んで以下上向きエッ
ジ用の両端点の扱い方の判定を行っていく。一方、上向
きでなければ(下向きエッジならば)ステップS645
へ進んで、以下、下向きエッジ用の両端点の扱い方の判
定を行っていく。
【0068】現エッジが上向きエッジであると判断して
ステップS633に進むと、輪郭画素プロット用の端点
データを一旦そのまま作成する。即ち、ymax =ystar
t,xmin =xend ,△x=△xnow ,ymin =yend
と設定する。
【0069】ここでymax とは、現エッジの両端点(始
点と終点)において、y座標の大きい方の端点のyの値
であり、xmin とymin とは、y座標の小さい方の端点
のxの値とyの値を意味する。xの増分△xとは、現エ
ッジ上の点が現エッジに沿って、y座標の小さい方から
大きい方へ向けて移動する際の1走査線当たりのx座標
の変化分を意味している。実施例では、x座標の正の向
きを右向き、y座標の正の向きを下向きに想定している
ので(ただし、ベクトルの向きで上向きというのはy座
標値が小さくなる方向を意味している)、上述の如く
に、ymax ,xmin ,△x,ymin が設定される。ステ
ップS633の処理を終えると、ステップS634へ進
む。ステップS634では、前エッジは下向きか否かを
判定し、下向きであれば、ステップS635へ進み、そ
うでなければ、ステップS636へ進む。ステップS6
35では、現エッジの始点がケース始2に該当するのか
ケース始3に該当するのかを、先に説明した方法で判定
し、ケース始2に該当する場合は、ステップS637に
進み、そうでない場合はステップS638へ進む。ま
た、ステップS636では現エッジの始点が、ケース始
4に該当するか否か(即ち、ケース始1またはケース始
5に該当するのか)を判定し、ケース始4に該当する場
合はステップS638へ進み、そうでなければステップ
S637へ進む。ステップS637では、ymax を
“1”減らす、即ち、上向きエッジの始点を一走査線分
つめる。ステップS637の処理を終えると、ステップ
S638へ進む。これで現エッジが上向きの場合の始点
に対する処理が終了する。
【0070】さて、ステップS638では、次エッジは
下向きか否かを判定し、下向きであればステップS63
9へ進み、そうでなければステップS640へ進む。ス
テップS639では、現エッジの終点がケース終2に該
当するのかケース3に該当するのかを前述の方法で判定
し、ケース終2に該当する場合はステップS643へ進
み、そうでない場合はステップS641へ進む。ステッ
プS640では、現エッジの終点がケース終4に該当す
るのか否か(即ち、ケース終1又は終5に該当するの
か)を判定し、ケース終4に該当する場合はステップS
641へ進み、そうでない場合はステップS643へ進
む。ステップS641では、xmin を△xだけ増やす、
即ち、上向きエッジの終点を一走査線分つめたとして、
そのx座標値を修正している。ステップS641の処理
を終えると、ステップS642へ進む。ステップS64
2では、ymin を“1”増やす、即ち、上向きエッジの
終点を一走査線分つめたとして、その値を修正してい
る。ステップS642の処理を終えると、ステップS6
43へ進む。
【0071】一方、ステップS632において、現エッ
ジは上向きではない、即ち、下向きと判定された場合を
説明する。
【0072】この場合、処理はステップS645へ進
み、現エッジは下向きエッジであるとして、輪郭画素プ
ロット用の端点データを一旦そのまま生成する。即ち、
ymax =yend 、xmin =xstart +1、△x=△xno
w として設定する。ここで、“xmin =xstart +1”
の意味であるが、実施例では、下向きエッジについて
は、基本的に、エッジ上の画素の走査方向に1画素分ず
れた画素をプロットすることからきている。
【0073】ステップS646では、前エッジは上向き
か否かを判定し、上向きであればステップS647へ進
み、そうでなければステップS648へ進む。ステップ
S647では、現エッジの始点がケース始6に該当する
のかケース始7に該当するのかを前述の方法で判定す
る。ケース始6に該当する場合には、ステップS651
に進み、ケース始7に該当する場合にはステップS64
9へ進む。また、ステップS648では、現エッジの始
点がケース始9に該当するのか、否か(即ち、ケース始
8又は、始10に該当するのか)を判定し、ケース始9
に該当する場合は、ステップS649に進む。ステップ
S649では、xmin を△x増やす、即ち、下向きエッ
ジの始点を一走査線分つめたとして、そのx座標値を修
正している。ステップS649の処理を終えると、ステ
ップS650へ進み、ymin を“1”増やす、即ち、下
向きエッジの始点を一走査線分つめたとして、その値を
修正している。これで、現エッジの始点に対する処理が
終了する。
【0074】ステップS650の処理を終えると、ステ
ップS651へ進む。このステップS651では、次エ
ッジが上向きか否かを判定し、上向きであればステップ
S652へ進み、そうでなければステップS653へ進
む。ステップS652では、現エッジの終点がケース終
6に該当するのか、ケース終7に該当するのかを前述の
方法で判定する。そして、ケース終6に該当する場合は
ステップS643へ進み、ケース終7に該当する場合は
ステップS654へ進む。また、ステップS653で
は、現エッジの終点がケース終9に該当するのか否か
(即ち、ケース終8又は終10に該当するのか)を判定
し、ケース終9に該当する場合は、ステップS643へ
進み、そうでない場合にはステップS654へ進む。ス
テップS654では、ymax を“1”減らす、即ち、下
向きエッジの終点を一走査線分つめる。ステップS65
4の処理を終えると、ステップS643へ進む。
【0075】以上で、現エッジが上向き及び下向きの場
合のそれぞれにおいて、現エッジに対す輪郭画素プロッ
ト用の端点データが図22に記された規則に従って生成
される。
【0076】さて、ステップS643では、後述する直
線描画回路を初期設定し、上述した処理で生成された現
エッジに対する輪郭画素プロット用の端点データ(yma
x,xmin,ymin,△x)をセットすることでページメモリ
3に現エッジの描画を行わせる。現エッジに対する描画
が終えると、本ルーチンをコールした上位のルーチンに
戻る。
【0077】図8の輪郭データを図22の規則に適応し
て(上述した処理を行って)、ページメモリ3に描画し
た結果を図14に示す。図8において、輪郭ベクトル
[A→B](点Aを始点とし、点Bを終点とするベクト
ルと定義する)を現ベクトルとすると、[J→A]は前
ベクトルである。[J→A]は下向きでそのxの増分△
xpre は“1”、[A→B]は右向きとなる。また、次
ベクトル[B→C]は下向きで、そのxの増分△xpost
は“0”である。現ベクトル[A→B]は水平ベクトル
であるので、描画されない。次に、[B→C]を現ベク
トルとすると、前ベクトル[A→B]は右向きで、現ベ
クトル[B→C]は下向き、xの増分△xpost=“0”
であるので、始点はケース始10に該当する。次ベクト
ル[C→D]は左向きであるので、現エッジの終点はケ
ース終9に該当する。従って、このときの現ベクトル
[B→C]は、その両端点ともつめずに各々の点B、点
Cの位置にあるとして輪郭画素プロット用の端点データ
が生成される。ただし、ベクトル[B→C]は下向きで
あるので、エッジ上の画素はその走査方向に1画素ずれ
た画素、換言すれば走査方向に向かって1画素隣の画素
として輪郭画素がプロットされ、結局、図14のQ1〜
Q2がベクトル[B→C]による輪郭画素として描画さ
れる。
【0078】また、ベクトル[C→D]を注目した場合
(ベクトル[C→D]を現ベクトルとした場合)、これ
は水平ベクトルなので描画しない。
【0079】ベクトル[D→E]の場合、上向きエッジ
であり、始点Dはケース始4、終点Eはケース終3に該
当する。従って、始点はそのまま、終点は1走査分つめ
てエッジがプロットされ、結局、図14のQ3〜Q4が
描画される。
【0080】ベクトル[E→F]は、下向きエッジであ
り、始点Eはケース始7、終点Fはケース終9に該当す
る。従って、始点側は1走査分つめ、終点側はそのまま
となり、エッジ上の各画素は走査方向に1画素ずつずれ
た位置に描画される(図14では、Q5〜Q6)。
【0081】ベクトル[F→G]は水平エッジであるの
で描画されない。
【0082】ベクトル[G→H]は下向きエッジであ
り、始点はケース始9、終点はケース終6に該当する。
従って、始点側は1走査分つめられ、終点はそのまま、
そしてエッジ上の各画素は走査方向に隣の画素位置に描
画される(図示ではQ7〜Q8)。
【0083】ベクトル[H→I]であるが、これは上向
きであり、始点はケース始3、終点はケース終1に該当
する。従って、始点、終点ともそのままでエッジ上の画
素が描画される(図示ではP7〜Q9)。
【0084】ベクトル[I→J]は上向きであり、始点
はケース始1に、終点はケース終2に該当する。従っ
て、始点側は1走査分つめられ、終点はそのままでエッ
ジ上の画素が描画される(Q10〜P5)。
【0085】ベクトル[J→A]は下向きエッジであ
り、始点はケース始6、終点はケース終10に該当す
る。従って、始点側はそのまま、終点側は1走査分つ
め、かつエッジ上の画素が走査方向に1画素ずれた位置
になるように描画される(Q11〜Q12)。
【0086】かくして、ページメモリ3には塗り潰し用
輪郭が描画されることになる。そして、そのメモリをラ
スタ走査して、水平走査線上で出現する奇数番目の
“1”にプロットされた画素位置から次の偶数番目の
“1”にプロットされた画素直前までを塗り潰し区間と
し、他を塗り潰さない区間として処理する。これによっ
て得られた画像の例を図15に示す。図示の如く、実施
例の処理を行うことで、全く歪がない結果を得ることが
できるようになる。
【0087】<直線描画回路の説明>次に、図1におけ
る直線描画回路4について説明する。尚、この回路は、
先に説明した図13のステップS643で付勢される。
【0088】図19に直線描画回路4のブロック構成図
を示す。図示の如く、本回路は直線発生制御回路21と
直線発生回路22の2つの部分より構成されている。
【0089】この直線描画回路4はCPU1によって、
各アウトラインベクトルの描画毎に制御され、1本づつ
アウトラインベクトルを直線描画していく。
【0090】繰り返すが、図13において、ステップS
643以前で行われる処理は、結局の所、ymax,xmin,
ymin及び△xを決定していることである。
【0091】さて、直線描画回路4に対する処理の内
容、つまり、ステップS643の内容の詳細を、図20
のフローチャートを用いて説明する。
【0092】先ず、ステップS31でこの処理が開始さ
れると、ステップS32で直線描画回路4内の直線発生
制御回路21から出力される終了信号24のレベルを調
べることで、同回路がレディ状態にあるか否か(以前に
指示した線の描画が完了し、次の指示の設定が可能かど
うか)を判定する。レディ状態でなければ、その状態に
なるまで待つ。
【0093】さて、直線描画回路がレディになると、処
理はステップS33に進み、同回路内の直線発生回路2
2に、これから描画させようとしているベクトルのy座
標値の小さい方の端点のx座標値xmin をセットする。
次いで、ステップS34では、y座標値の小さい方の端
点のy座標値ymin 、ステップS35でy座標値の大き
い方の端点のy座標値ymax を同様にセットし、ステッ
プS36でx増分値△xを直線発生回路22にセットす
る。そして、ステップS37で直線発生制御回路21に
描画を開始させるための開始信号25を送出した後、ス
テップS38に進み、図13のルーチンに復帰する。
【0094】以上の様に、初期化された直線描画回路4
は開始信号25を受けると動作を開始する。図19で機
能ブロック分けして表現した直線描画回路4の具体的構
成例を図21に示した。
【0095】開始信号25はHighレベル(論理レベ
ル“1”)で開始を意味するパルス信号であり、パルス
幅は図示しない付加回路により適正に設定されている。
CPU1はこのパルスのトリガとなる信号を送出してい
る。終了信号はlowレベル(論理レベル“0”)で終
了を意味する信号であり、highレベルで動作中(ビ
ジィ)を意味している。開始信号と描画信号との論理和
をOR回路2101が出力する。このOR回路2101
の出力で、外部より与えられる定常発生している一定周
期のクロックである描画同期信号をAND回路2102
において制御することで、ベクトル開始点(ここではy
座標値が小さい方の端点)から終点(ここではy座標値
の大きい方の端点)までの分の描画同期が生成される。
【0096】バッファ2202には、CPU1によっ
て、y座標値の小さい方の端点のy座標値(ymin )が
セットされている。また、バッファ2204には、y座
標値の大きい方の端点のy座標値(ymax )が、バッフ
ァ2201にはy座標値の小さい方の端点のx座標値
(xmin )が、そして、バッファ2203にはx増分値
(△x)がセットされている。アップカウンタ2205
は、開始信号を入力すると、バッファ2202に保持さ
れたy座標値の小さい方の端点のy座標値(ymin )を
カウント値の初期値としてロードする。アップカウンタ
2205は保持しているカウント値をそのまま信号線2
210に出力する。比較器2206は開始信号を入力す
ると動作し、アップカウンタ2205の出力と、バッフ
ァ2204に保持されたy座標値の大きい方の端点のy
座標値(ymax )を比較し、それらが等しくなるとlo
wレベルの信号を出力し、次の開始信号を受けるまでこ
のレベルを保持する。また、等しくない場合はhigh
レベルの信号を出力する。アップカウンタ2205は描
画同期信号26に同期してカウントアップを行い、描画
画素のyアドレスを更新する。選択器2207はバッフ
ァ2201に保持されたy座標値の小さい方の端点のx
座標値(xmin )と、加算器2209の出力値とのいず
れかを選択信号により選択し、それを出力する。即ち、
開始信号の入力時のみバッファ2201の出力を選択
し、バッファ2201の出力を選択出力し、それ以外は
加算器2209の出力を選択する。ラッチ2208は選
択器2207の出力を描画同期26により取り込み、そ
の値を現時点でプロットする点のx座標値として出力す
る。このラッチ2208の出力とバッファ2203に保
持されたx増分(△x)との和を加算器2209は描画
同期26に同期して演算し、出力する。かくして、描画
同期26に同期して描画画素のx座標値アドレスが更新
される。
【0097】以上により生成された信号27、28、2
9を図示しない付加回路によりタイミングを調整して、
それぞれプロットするページメモリ3上の位置へのXア
ドレス、Yアドレス、書き込み信号として出力する。
【0098】ページメモリ3では、図示しない付加回路
によって、図示しない付加回路によって、前記描画同期
29に同期して、Xアドレス27及びYアドレス28で
定めるアドレスに、そのときそのアドレスに保持されて
いた値と定数“1”との排他的論理和をとった値を書き
込む(リードモディファイライト)ことによって、塗り
潰し用輪郭を描画していく。
【0099】かくして、ページメモリ3上に塗り潰し用
輪郭が描画された後、CPU1により同期制御回路6が
起動され、塗り潰しデータが生成される。以下、塗り潰
した画像の生成に関して、前述した図16、図17及び
図18を用いて実施例の動作を説明する。
【0100】CPU1により、塗り潰された画像を生成
する旨の起動を受けると、同期制御回路6は図16の符
号12ー2に示す信号線をhighに固定して塗り潰し
済みデータを塗り潰し回路5が出力するように設定し、
図17、図18に示すページ同期信号(Page Sync)、
走査線同期信号(LineSync)及び画素同期信号(CLK)
を生成する。また、ページメモ3リに、図示しない付加
回路によって、同期信号をカウントすることによって得
られるアドレスに保持するデータを塗り潰し回路5に信
号線10を介して出力するように設定を行う。ページ同
期信号、走査同期信号及び画素同期信号は、信号線12
を介してページメモリ3及び塗り潰し回路5へ与えられ
る。ページメモリ3の図示しないアドレス生成用の付加
回路は、ページ同期信号によりリセットされ、ライン同
期信号をカウントすることによって副走査方向の位置を
生成し、画素同期信号をカウントすることによって主走
査方向の位置を生成するものである。画素同期信号のカ
ウントは各ライン同期信号によってリセットされるもの
である。また、塗り潰し回路はページメモリ3よりの出
力10を画素同期信号に同期して取り込み、前画素デー
タを保持するラッチ503の出力とゲート501で排他
的論理和をとる。この結果をゲート502で信号線12
ー2で与えられる値と論理積をとったものが塗り潰した
結果の画像データとして信号線11へ出力する。信号線
11に出力されるデータは前画素データとしてラッチ5
03に保持される。ラッチ503は走査同期信号によっ
て、“0”にリセットされる。かくして、ページメモリ
3上のデータは前記同期信号に同期してラスタ走査さ
れ、塗り潰し回路によって同一ラスタデータ内の奇数番
目の“1”の出現のタイミングから、すぐ次の偶数番目
の“1”の出現タイミングの直前までの間が“1”とし
て出力され、それ以外を“0”として出力される。これ
によって、塗り潰された画素データが前記同期信号に同
期してラスタ走査状のデータとして生成される。
【0101】また、以上の議論でにおいて、ymax 及び
xmin は非負の整数として扱ってきた。また、xmin 及
び△xに関しては使用に際して、十分の精度を持つ実数
データ(即ち、小数部情報を有する数値データ)として
扱い、その整数部のみを画素アドレスとした。即ち、図
21の符号2201、2208、2203は小数部の情
報を含むが、xアドレスとして出力される信号28はラ
ッチ2208の出力の整数部となっている。小数部は四
捨五入する場合には、xmin の値をバッファ2201に
セットする際に、予めxmin に“0.5”を加えた値を
初期値としてセットすれば良い。“0.5”をxmin に
加えず、xmin そのものをバッファ2201にセットす
れば、小数部を切り捨てたことに相当する扱いを受け、
実行されることになる。
【0102】<第2の実施例の説明>前記した実施例
(第1の実施例という)において、図22に示した輪郭
画素プロット用の端点データの生成規則中、ケース始1
とケース終1、及びケース始8とケース終8の各組に対
しては、次のように規則を変更してもよい。
【0103】即ち、ケース始1:現エッジの始点は、
“つめないでそのまま”として、かつケース終1:現エ
ッジの終点は“一走査線だけつめる”とする。
【0104】又、ケース始8:現エッジの始点は、“一
走査線だけつめる”として、かつ、ケース終8:現エッ
ジの終点は、“つめないでそのまま”とする。
【0105】また、図13に示した処理の流れも、これ
らに合わせて、ケース始1に対しては、ステップS63
6、ケース終1に対しては、ステップS640が変更に
応じて変更されることは容易に理解できる。また、ケー
ス始8に対しては、ステップS648が、ケース終8に
対してはステップS653が、変更されることも容易に
理解できる。
【0106】以上の変更は、上向き同志、又は下向き同
志の連続する2つのアウトラインエッジに共有されてい
る頂点は、その頂点を終点とするエッジ上の点としての
み処理されるか、あるいは、その頂点を始点とするエッ
ジ上の点としてのみ処理されるか、いずれでもよいこと
を暗示し、双方のエッジ上の点として処理されたり、い
ずれのエッジ上の点でもないとされる様なこと無く処理
されれば、いずれでもよいことを意味していると考える
事ができる。
【0107】<第3の実施例の説明>前記第1の実施例
では、アウトラインは右回りのデータ表現をとるものと
して説明したが、本発明は、これに限るものではなく、
左周りのデータ表現をとる場合にも対応可能である。左
回りのデータ表現時には、輪郭画素プロット用の端点デ
ータの生成規則を図23に示したものを用いればよい。
この場合も、現エッジと前エッジの向き及び傾斜の程度
から現エッジの始点の取扱いを判断し、現エッジと次エ
ッジの向き及び傾斜の程度から現エッジの終点の取り扱
い方を判断してゆく。左回りのデータ表現の輪郭画素プ
ロット用の端点データの生成規則に従った現ベクトルデ
ータ描画処理の流れも、図13とほぼ同様であり、ステ
ップS636、S640、S648、S653の“Y”
“N”が全て反対になるだけの違いである。
【0108】<第4の実施例の説明>第1の実施例に対
し、第2の実施例で説明した変形と同様に、第3の実施
例での図29の規則においても、ケース始11とケース
終11、及び、ケース始18とケース終18がそれぞれ
組み合わされて、ケース始11:現エッジの始点は、
“一走査線だけつめる”としてかつ、ケース終11:現
エッジの終点は、“つめないでそのまま”としてもよい
し、ケース始18:現エッジの始点は、“つめないでそ
のまま”としてかつ、ケース終18:一走査線だけつめ
る”としてもよい。
【0109】<第5の実施例の説明>前記実施例では、
座標の原点は、画像の左上にあるとして説明したが、こ
れに限るものではない。即ち、原点の位置及び、座標の
向きに応じて、前記説明中での向きの判定法や、ymax
,ymin ,xmin ,△x等の扱いを変更すれば、同様
の処理が可能であることはもちろんである。
【0110】<第6の実施例の説明>前記実施例では、
塗り潰し動作時の主走査の方向を画像の左から右への方
向であるとして説明したが、これに限るものではない。
走査方向がこの逆で右から左への方向である場合には、
前記輪郭画素プロット用端点データを作成する際に、上
向きエッジはエッジ上の画素位置として、下向きエッジ
はエッジ上の画素位置の1画素位走査方向に隣の画素と
する。そして、端点のx座標値xmin を設定していた部
分を上向きエッジの場合にエッジ上の1画素走査方向に
隣の画素として(すなわち、1減じる;xmin=xstart
−1 or xmin=xend −1)設定して処理するようにす
れば良い。そして、輪郭画素をその位置の画素に対応す
るメモリアドレスに“1”との排他的論理和による画素
描画を行った後に、該メモリバッファから輪郭画素デー
タを画像の右から左の方向に対向するデータを読み出し
て前記塗り潰し方法を実行すれば良い。
【0111】<第7の実施例の説明>前記実施例におい
て、本発明をプリンタ用の構成例としたが、これに限定
される物ではなく、ディスプレイ等の表示装置であって
も構わない。
【0112】<第8の実施例の説明>前記実施例におい
ては、一点のみのエッジ、即ち、始点と、終点が一致し
ているエッジ(点エッジ)は、図9で示されるデータを
形成する際に、輪郭を構成するエッジの頂点列から、あ
らかじめ除去されているものとして説明したが、本発明
は、これに限るものではない。即ち、エッジデータの吟
味時に、点エッジのデータは無視して前述の処理を続行
してもよい。図12の処理では、ステップS57の現エ
ッジデータ作成、ステップS58の次エッジデータ作
成、及び、S62の次エッジデータの作成手順におい
て、処理中のエッジが点エッジであれば、すぐ次の頂点
データをさらに読み込んで、新たに(xend ,yend )
として、処理を続ければよい。このとき、読みとばした
頂点の数に応じて、注目頂点位置の更新や処理済の頂点
数のカウント等を調整すればよいのである。かくして、
エッジテーブルの作成中に、点エッジの除去を行うこと
ももちろん可能である。
【0113】尚、本発明は複数の機器から構成されるシ
ステムに適用しても、1つの機器から成る装置に適用し
ても良い。また、本発明は、システム或は装置にプログ
ラムを供給することによつて達成される場合にも適用で
きることは言うまでもない。
【0114】以上説明した様に本実施例によれば、各ア
ウトラインベクトルの向きを判断し、かつまた、該アウ
トラインベクトルの直前のアウトラインベクトルの向き
と傾斜、及び直後のアウトラインベクトルの向きと傾斜
によって、当該ベクトルの各端点を閉図形の閉区間をな
す境界点の判定に用いるか否かを判定する。また、用い
る場合には、ベクトル上の点として、メモリ上の対応す
る画素位置にプロットするか、主走査方向に1画素隣の
位置にプロットするのかを制御しながら輪郭線のみの描
画を既設定値と排他的論理和をとって書き込む形で先ず
行い、しかる後に、上記輪郭画像をラスタ走査して、ラ
スタ走査毎に奇数番目の輪郭点との交差から(この点を
含む)、偶数番目の輪郭点との交差まで(この点は含ま
ず)塗り潰し区間とすることで、複雑な塗り潰し図形を
歪の発生を伴わず、高速に、しかも簡便、安価に実現さ
せることが可能になる。
【0115】
【発明の効果】以上説明したように本発明によれば、複
雑輪郭線内部を塗り潰す処理を、その図形の歪を発生せ
ず、高速に且つ簡便・安価に実現させることが可能にな
る。
【図面の簡単な説明】
【図1】ラスタ走査型のビデオプリンタ用に構成した実
施例の装置構成を示す図である。
【図2】奇偶反転法の問題点を説明するための図であ
る。
【図3】従来例で得られる輪郭描画例を示す図である。
【図4】従来例で得られる塗り潰し結果を示す図であ
る。
【図5】右回りアウトライン閉図形例を示す図である。
【図6】左回りアウトライン閉図形例を示す図である。
【図7】従来例における回路ブロック図である。
【図8】右回りアウトラインの例を示す図である。
【図9】実施例におけるアウトラインベクトルデータを
示す図である。
【図10】図8のアウトラインデータのアウトラインベ
クトル座標の表現例を示す図である。
【図11】実施例の装置のメイン動作処理を説明するた
めのフローチャートである。
【図12】塗り潰し用輪郭描画処理のフローチャートで
ある。
【図13】ベクトル描画の処理を説明するためのフロー
チャートである。
【図14】実施例の処理によって得られた塗り潰し輪郭
の描画結果を示す図である。
【図15】実施例の処理によって得られた塗り潰し結果
を示す図である。
【図16】実施例の塗り潰し回路の回路構成図である。
【図17】実施例におけるページ同期信号と走査同期信
号のタイミングチャートである。
【図18】実施例における走査同期信号と画素同期信号
のタイミングチャートである。
【図19】実施例の直線描画回路のブロック構成図であ
る。
【図20】ベクトルの描画を実行させるためのフローチ
ャートである。
【図21】図19における直線発生回路の回路構成図で
ある。
【図22】実施例における右回りアウトラインに対する
塗り潰し用輪郭ベクトルデータ生成規則を示す図であ
る。
【図23】実施例における左回りアウトラインに対する
塗り潰し用輪郭ベクトルデータ生成規則を示す図であ
る。
【符号の説明】
1 マイクロプロセッサ 2 ランダムアクセスメモリ 3 ページメモリ 4 直線描画回路 5 塗り潰し回路 6 同期制御回路 7 I/Oポート 8 プリンタ装置 9 バス 14 I/Oポート

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 複数の線要素でもって構成された閉輪郭
    の内部を塗り潰す画像処理方法において、 注目線要素の向きに基づいて、当該注目線要素を描画す
    るか否かを判定する判定行程と、 該判定行程で描画対象であると判定された注目線要素に
    対し、当該注目線要素とその前後に隣接するそれぞれの
    線要素との接続関係及び塗りつぶすべき領域の方向に基
    づいて、当該注目線要素の両端点の位置を補正する補正
    行程と、 該補正行程で補正さた両端点の位置で注目線要素を画像
    展開用メモリに描画する線要素描画行程と、 前記画像展開用メモリに対して主走査方向に走査すると
    きの奇数番目に遭遇する輪郭は当該画素位置が領域の正
    転位置を示しているとして、偶数番目に遭遇する輪郭の
    進行方向にある隣接画素位置は当該画素位置が領域の反
    転位置を示しているとして塗り潰す塗り潰し行程とを備
    えることを特徴とする画像処理方法。
  2. 【請求項2】 判定行程では、注目線要素が主走査方向
    に平行であるときには描画対象外と判定することを特徴
    とする請求項第1項に記載の画像処理方法。
  3. 【請求項3】 複数の線要素でもって構成された閉輪郭
    の内部を塗り潰す画像処理装置において、 画像を展開するメモリと、 注目線要素の向きに基づいて、当該注目線要素を描画す
    るか否かを判定する判定手段と、 該判定手段で描画対象であると判定された注目線要素に
    対し、当該注目線要素とその前後に隣接するそれぞれの
    線要素との接続関係及び塗りつぶすべき領域の方向に基
    づいて、当該注目線要素の両端点の位置を補正する補正
    手段と、 該補正手段で補正さた両端点の位置で注目線要素を前記
    メモリに描画する線要素描画手段と、 前記メモリに対して主走査方向に走査するときの奇数番
    目に遭遇する輪郭は当該画素位置が領域の正転位置を示
    しているとして、偶数番目に遭遇する輪郭の進行方向に
    ある隣接画素位置は当該画素位置が領域の反転位置を示
    しているとして塗り潰す塗り潰し手段とを備えることを
    特徴とする画像処理装置。
  4. 【請求項4】 判定手段は、注目線要素が主走査方向に
    平行であるときには描画対象外と判定することを特徴と
    する請求項第3項に記載の画像処理装置。
JP17209891A 1991-07-12 1991-07-12 画像処理方法及びその装置 Expired - Fee Related JP3130965B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP17209891A JP3130965B2 (ja) 1991-07-12 1991-07-12 画像処理方法及びその装置
US07/912,970 US5561534A (en) 1991-07-12 1992-07-10 Image processing method and apparatus
EP92306374A EP0522877B1 (en) 1991-07-12 1992-07-10 Image processing
DE69227073T DE69227073D1 (de) 1991-07-12 1992-07-10 Bildverarbeitung

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17209891A JP3130965B2 (ja) 1991-07-12 1991-07-12 画像処理方法及びその装置

Publications (2)

Publication Number Publication Date
JPH0520467A true JPH0520467A (ja) 1993-01-29
JP3130965B2 JP3130965B2 (ja) 2001-01-31

Family

ID=15935509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17209891A Expired - Fee Related JP3130965B2 (ja) 1991-07-12 1991-07-12 画像処理方法及びその装置

Country Status (1)

Country Link
JP (1) JP3130965B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5828794A (en) * 1992-09-24 1998-10-27 Canon Kabushiki Kaisha Image processing method and apparatus for enlarging and reducing image data
US5974195A (en) * 1994-10-14 1999-10-26 Canon Kabushiki Kaisha Image processing apparatus and method
US6232978B1 (en) 1994-10-17 2001-05-15 Canon Kabushiki Kaisha Image processing apparatus, and method of controlling same, using a combination of enlargement and fixed ratio reduction processing
US6289136B1 (en) 1995-03-22 2001-09-11 Canon Kabushiki Kaisha Image processing method and apparatus
CN115439845A (zh) * 2022-08-02 2022-12-06 北京邮电大学 基于图神经网络的图像外推方法、装置、存储介质及终端

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5828794A (en) * 1992-09-24 1998-10-27 Canon Kabushiki Kaisha Image processing method and apparatus for enlarging and reducing image data
US6111994A (en) * 1992-09-24 2000-08-29 Canon Kabushiki Kaisha Outline extraction using partial image processing
US5974195A (en) * 1994-10-14 1999-10-26 Canon Kabushiki Kaisha Image processing apparatus and method
US6232978B1 (en) 1994-10-17 2001-05-15 Canon Kabushiki Kaisha Image processing apparatus, and method of controlling same, using a combination of enlargement and fixed ratio reduction processing
US6289136B1 (en) 1995-03-22 2001-09-11 Canon Kabushiki Kaisha Image processing method and apparatus
CN115439845A (zh) * 2022-08-02 2022-12-06 北京邮电大学 基于图神经网络的图像外推方法、装置、存储介质及终端

Also Published As

Publication number Publication date
JP3130965B2 (ja) 2001-01-31

Similar Documents

Publication Publication Date Title
US5793379A (en) Method and apparatus for scaling images having a plurality of scan lines of pixel data
EP0522877B1 (en) Image processing
US5325446A (en) Apparatus for image transformation
JPH0816795A (ja) ピクセル画像のエッジ改良のための方法と装置
US5771047A (en) Graphics computer
US4884220A (en) Address generator with variable scan patterns
JP3130965B2 (ja) 画像処理方法及びその装置
US6188800B1 (en) Two-dimensional spatial transformation system for video processing
EP0434037B1 (en) A shading method and shading apparatus for computer graphics
JPH0520466A (ja) 画像処理方法及びその装置
US6670965B1 (en) Single-pass warping engine
JP3151005B2 (ja) 図形処理装置および図形処理方法
JP3155595B2 (ja) 符号化方法及びその装置
JPH0520468A (ja) 画像処理方法及びその装置
JP3139805B2 (ja) 画像処理方法及びその装置
JP2634906B2 (ja) 画像処理方法
JP2687380B2 (ja) 画像処理装置
JP3493745B2 (ja) 図形描画装置
JP3129717B2 (ja) 画像処理装置および画像処理方法
JPH087794B2 (ja) 画像処理方法
JPS6366678A (ja) 画像処理装置
JP3517982B2 (ja) 図形描画装置
JP3211591B2 (ja) イメージ処理装置
JP3338484B2 (ja) アウトラインフォント変形装置
JP2803235B2 (ja) ディジタル画像処理方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20000602

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20001016

LAPS Cancellation because of no payment of annual fees