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

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

Info

Publication number
JP3139805B2
JP3139805B2 JP1363392A JP1363392A JP3139805B2 JP 3139805 B2 JP3139805 B2 JP 3139805B2 JP 1363392 A JP1363392 A JP 1363392A JP 1363392 A JP1363392 A JP 1363392A JP 3139805 B2 JP3139805 B2 JP 3139805B2
Authority
JP
Japan
Prior art keywords
edge
contour
pixel
filling
bucket
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
Application number
JP1363392A
Other languages
English (en)
Other versions
JPH0612497A (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 JP1363392A priority Critical patent/JP3139805B2/ja
Priority to EP92306374A priority patent/EP0522877B1/en
Priority to DE69227073T priority patent/DE69227073D1/de
Priority to US07/912,970 priority patent/US5561534A/en
Publication of JPH0612497A publication Critical patent/JPH0612497A/ja
Application granted granted Critical
Publication of JP3139805B2 publication Critical patent/JP3139805B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は画像処理方法及びその装
置に関し、詳しくは複数の線要素でもって構成された閉
輪郭の内部を塗り潰す画像処理方法及びその装置に関す
るものである。
【0002】
【従来の技術】この種の装置においては、閉領域内部を
塗り潰すことは基本的な画像処理機能の1つであり、こ
れまで種々の塗り潰し方法が提案されている。
【0003】最も基本的な方法は、ソフトウェアによっ
てランダム・アクセス・メモリ(RAM)の各画素ライ
ン毎に塗り潰し範囲を逐一指定し、指定された範囲のラ
イン画素を塗り潰すものである。このような方法の代表
例としては、文献「Fundamentals of Interactive Comp
uter Graphics 」(J.D.FOLEY/A.VAN DAM共著 1982年Ad
dison - Wesley刊 pp.456〜460)に記載されている。
【0004】この方法を簡単に説明すると以下の通りで
ある。
【0005】頂点データ列で与えられた図2に示す様な
閉図形F1について、この閉図形を構成する各稜線エッ
ジe1〜e13についてそれぞれ図4で示すバケットデ
ータを生成し、これらを図5で示すエッジテーブル(E
T)の形にまとめる。このとき、水平なエッジを除き、
水平でないエッジのみに対してバケットデータを作成す
る。エッジテーブル(ET)は、画像メモリが格納し得
る走査線ラスタ数に等しいだけのポインタバケットテー
ブルAy0〜Ayn(画像が第0ラスタから第nラスタ
までの(n+1)ラスタから成る場合)を有している。
そして、各稜線エッジe1〜e13の中でX軸に水平で
ないものに対して、y座標値が小さい方の端点のy座標
値に対応したポインタバケットテーブルに、それらそれ
ぞれのエッジのバケットデータをリスト構造で接続す
る。複数のバケットが同じポインタバケットからリスト
構造をなす場合には、それぞれのバケット内のy座標値
が小さい方の端点のxの値(xmin )で昇順にソートし
てリスト構造を形成する。対応するエッジバケットのな
いポインタバケットには、その旨を示すマーカーコード
“λ”を格納する。また、各稜線のy座標方向の極小値
あるいは極大値でない場合には、図形要素内外判定での
誤判定を引き起こさないために、本来のy座標値より1
走査分だけ該稜線に沿って進んだ位置をもってy座標値
の小さい方の端点としてエッジテーブル(ET)を生成
する。図2では、エッジe3の端点C,エッジe12の
端点M,エッジe11の端点Lがこれに該当する。
【0006】それぞれの稜線エッジに対応する各エッジ
バケットAe1〜Ae13には、対応する稜線エッジe
1〜e13のy座標が大きい方の端点のyの値(ymax
e1〜ymax e10)とy座標が小さい方の端点のxの
値(xmin e1〜xmin e10)と、y座標値が1だけ
増加したときのx座標値の増分(Δxe1〜Δxe1
9)と、y座標が小さい方の端点のy座標値が共通する
稜線のエッジバケットをx座標値の小さいものから昇べ
きにつなげるポインタ(Pe1〜Pe13)とが格納さ
れている。尚、ポインタPe1〜Pe13における
“λ”は、これ以上結ぶエッジバケットがないことを意
味している(図5)。尚、x方向は走査線方向(図示で
右方向)に一致し、y方向は走査線のインクリメント方
向(図示で下方向)に一致している。
【0007】このようにして作成されたエッジテーブル
(ET)を利用して、塗り潰し処理を実行する。まず、
エッジテーブル(ET)にエッジバケットを有する最少
のy座標値に走査線y座標値をセットする。次いで、そ
の走査線y座標値についてエッジバケットを結び、アク
ティブエッジテーブル(AET)(図6参照)を空に初
期化する。
【0008】これ以降、アクティブエッジテーブル(A
ET)及びエッジテーブル(ET)が共に空になるま
で、以下の処理を繰り返す。 (1)アクティブエッジテーブル(AET)のx座標値
(xmin )でのソート順を保ちながら、そのときのエッ
ジテーブル(ET)の情報とアクティブエッジテーブル
(AET)との情報を併合して、走査線y座標値にかか
るエッジバケットを結ぶ新たなアクティブエッジテーブ
ル(AET)を作成する。 (2)アクティブエッジテーブル(AET)のx座標値
(xmin )が小さい方から2個ずつを対として、その間
を図形要素内の塗り潰し区間とし、その区間内の塗り潰
しを実行する。 (3)走査線y座標値をy座標が大きい方の端点のyの
値(ymax )とするエッジバケットを次の走査線におけ
る動作のためにアクティブエッジテーブル(AET)か
ら削除する。 (4)アクティブエッジテーブル(AET)に残ってい
るエッジバケットについて、次の走査線における動作の
ために増分データ(Δx)を利用して、x座標値(x
min )を更新する。即ち、(xmin +Δx)をもって、
新しくxmin とし直す。 (5)かかるx座標値(xmin )の更新後、x座標値
(xmin )に基づいてソーティングし直す。 (6)走査線y座標をインクリメントして(1)の処理
に戻る。
【0009】この様にして、塗り潰しが実行される。こ
こで、図6は走査線y座標値が“14”の場合の図2に
示す閉図形F1に関するアクティブエッジテーブル(A
ET)である。また、図7は同じく各走査線y座標値
(0〜19)に亙ってのアクティブエッジテーブル(A
ET)の状態の推移を示したものである。
【0010】この他にも、ハードウェアにより高速に塗
り潰しを行うために種々の手法が提案されている。
【0011】この種の方法は、図形の輪郭を定める画素
のみを画像メモリ上に描画した後、この画像メモリをラ
スタ走査を行い、走査線上の奇数番目の輪郭線ドットで
塗り潰しを開始し、偶数番目の輪郭線ドットで塗り潰し
を終了する(以降、奇偶反転法と呼ぶ)ものである。
【0012】しかし、この奇偶反転法を用いる場合は、
単純に輪郭の描画を行うと、図8のL1,L2,L3,
L4,L5,L6のように塗り潰されるべきではない部
分が塗り潰され、塗り潰されるべき部分が塗り潰されな
い(ラインL3,L4の破線部分)という問題があっ
た。これをふまえて、輪郭描画に規則を設定して、改善
を計る提案もなされている。
【0013】例えば、特公平1−54752号公報は、
下記の5つの規則に従った輪郭画素の書き込みを開示し
ている。
【0014】規則1:水平な線セグメントは書かない。
【0015】規則2:各線セグメントは各ライン当り1
画素で表す。
【0016】規則3:各線ベクトルの始点は書かない。
【0017】規則4:輪郭線画素は、この画素を書込も
うとしているメモリ・アドレスに記憶されている画素デ
ータとの排他的論理和を取って、その結果を書き込む。
【0018】規則5:各線セグメントは上から下または
下から上への一方向で指定する。
【0019】規則1は図8のラインL2やL4のよう
に、水平な輪郭線部分に含まれる輪郭画素P10〜P9
及びP11〜P1やP4〜P3によって1つのラインに
奇数個の輪郭画素が出現するのを防止している。
【0020】規則2は線セグメントの角度に関係なく、
常に1ライン当り1画素で輪郭線を表わすためのもので
ある。
【0021】規則3は上向きまたは下向きの頂点を除去
するものである。規則5に従って例えば上から下への一
方向で線セグメントを指定するものとすれば、規則3は
図8の上向きの頂点の輪郭線画素P5およびP6を除去
する。
【0022】規則4および規則5は、規則3によって処
理される頂点と反対向きの頂点の輪郭線画素(この例で
はP7及びP8)を除去するものである。
【0023】
【発明が解決しようとする課題】しかしながら上記従来
例のうちの前者、即ち、ソフトウェアによる方法では、
塗り潰し範囲の指定のみならず、塗り潰しの実行自体も
ソフトウェアで行われるために、処理時間がかかりすぎ
るという欠点があった。また、図9はこの従来法で図2
に示す閉図形F1に関しての処理結果を表わしたもので
あるが、この図9のP2〜P9の区間の如く、水平エッ
ジ上の各点が塗り潰されない場合が発生し、生成図形が
歪んでしまうことがあるという欠点もあった。
【0024】また、上記従来例の後者、即ち、ハードウ
ェアにより高速に塗り潰しを行う方法では、塗り潰しの
実行速度は前者と比べて高速ではあるが、反面、全ての
輪郭線を最初に描画してしまう必要があるため、一画像
全面分の画像メモリを必要とし、コスト高を招くという
欠点があった。また、図10は、この従来法(後者)で
図2に示す閉図形F1に関して、その記載された方法で
塗り潰し範囲を決定し、同公報で推奨される方法により
塗り潰しを実行した際に得られる結果を表したものであ
るが、この方法においてもやはり、図10におけるP
5,P8のような頂点画素や、P5〜P10,P9〜P
10,P9〜P15,P11〜P1及びP1〜P12,
P13〜P3,P14〜P8といった部分も塗り潰され
ず、生成図形に歪を生じるという欠点を有していた。
【0025】また、上記従来方法等で発生した図形の歪
みを補うために、図11に示すように、塗り潰し回路に
よって塗りつぶされた領域画像データと歪補正用輪郭メ
モリに記憶された輪郭線画素とを合成回路により論理和
をとって歪みのない図形として出力する方式も試みられ
ているが、この場合は、処理に要するメモリ容量とし
て、図形を生成したメモリの他に輪郭線のみの画像を保
持する歪補正用輪郭メモリの分まで必要となったり、こ
のような輪郭線のみの画像を生成するための時間や回路
が余分に必要になったりして、やはり好ましくない。
【0026】本発明は従来技術に鑑みなされたものであ
り、輪郭線内部を塗り潰す際に、高速で、しかも少ない
メモリ容量で意図した通りの塗り潰し結果を得ることを
可能にする画像処理方法及びその装置を提供しようとす
るものである。
【0027】
【課題を解決するための手段】上記目的を達成するため
に本発明の画像処理装置は以下のような構成を備える。
即ち、図形を表わす輪郭内を塗りつぶす画像処理装置で
あって、複数の接続されるベクトルに基づき図形の輪郭
を生成する輪郭生成手段と、前記輪郭生成手段が生成し
た輪郭と水平走査線との奇数回目の交差の際に交差した
画素も含めて塗りつぶしを開始し、前記輪郭と水平走査
線との偶数回目の交差の際に偶数回目に交差した直前の
画素までを塗りつぶす塗りつぶし手段とを有し、前記輪
郭生成手段は、現ベクトルの向きと直前のベクトルの向
きとを判別し、当該判別結果に応じて、前記現ベクトル
の開始点の部分の画素を、プロットしない、プロットす
る、或は前記塗りつぶし手段による塗りつぶし方向に1
画素ずらしてプロットするように決定し、前記現ベクト
ルの開始点以外の部分の画素を前記判別結果に応じて、
プロットしない、プロットする、或は前記塗りつぶし方
向に1画素ずらしてプロットするように決定して輪郭を
生成することを特徴とする。上記目的を達成するために
本発明の画像処理装置は以下のような構成を備える。即
ち、図形を表わす輪郭内を塗りつぶす画像処理装置であ
って、複数の接続されるベクトルに基づき図形の輪郭を
生成する輪郭生成手段と、前記輪郭生成手段が生成した
輪郭と水平走査線との奇数回目の交差の際に交差した画
素も含めて塗りつぶしを開始し、前記輪郭と水平走査線
との偶数回目の交差の際に偶数回目に交差した直前の画
素までを塗りつぶす塗りつぶし手段とを有し、前記輪郭
生成手段は、現ベクトルの向きと直後のベクトルの向き
とを判別し、当該判別結果に応じて、前記現ベクトルの
終了点の部分の画素を、プロットしない、プロットす
る、或は前記塗りつぶし手段による塗りつぶし方向に1
画素ずらしてプロットするように決定し、前記現ベクト
ルの終了点以外の部分の画素を前記判別結果に応じて、
プロットしない、プロットする、或は前記塗りつぶし方
向に1画素ずらしてプロットするように決定して輪郭を
生成することを特徴とする。
【0028】上記目的を達成するために本発明の画像処
理方法は以下のような工程を備える。即ち、図形を表わ
す輪郭内を塗りつぶす画像処理装置における画像処理方
法であって、複数の接続されるベクトルに基づき図形の
輪郭を生成する輪郭生成工程と、前記輪郭生成工程で生
成した輪郭と水平走査線との奇数回目の交差の際に交差
した画素も含めて塗りつぶしを開始し、前記輪郭と水平
走査線との偶数回目の交差の際に偶数回目に交差した直
前の画素までを塗りつぶす塗りつぶし工程とを有し、前
記輪郭生成工程では、現ベクトルの向きと直前のベクト
ルの向きとを判別し、当該判別結果に応じて、前記現ベ
クトルの開始点の部分の画素を、プロットしない、プロ
ットする、或は前記塗りつぶし工程における塗りつぶし
方向に1画素ずらしてプロットするように決定し、前記
現ベクトルの開始点以外の部分の画素を前記判別結果に
応じて、プロットしない、プロットする、或は前記塗り
つぶし方向に1画素ずらしてプロットするように決定し
て輪郭を生成することを特徴とする。上記目的を達成す
るために本発明の画像処理方法は以下のような工程を備
える。即ち、図形を表わす輪郭内を塗りつぶす画像処理
装置における画像処理方法であって、複数の接続される
ベクトルに基づき図形の輪郭を生成する輪郭生成工程
と、前記輪郭生成工程で生成した輪郭と水平走査線との
奇数回目の交差の際に交差した画素も含めて塗りつぶし
を開始し、前記輪郭と水平走査線との偶数回目の交差の
際に偶数回目に交差した直前の画素までを塗りつぶす塗
りつぶし工程とを有し、前記輪郭生成工程では、現ベク
トルの向きと直後のベクトルの向きとを判別し、当該判
別結果に応じて、前記現ベクトルの終了点の部分の画素
を、プロットしない、プロットする、或は前記塗りつぶ
し工程における塗りつぶし方向に1画素ずらしてプロッ
トするように決定し、前記現ベクトルの終了点以外の部
分の画素を前記判別結果に応じて、プロットしない、プ
ロットする、或は前記塗りつぶし方向に1画素ずらして
プロットするように決定して輪郭を生成することを特徴
とする。
【0029】
【作用】以上の構成において、複数の接続されるベクト
ルにおける現ベクトルの向きと直前のベクトルの向きと
を判別し、当該判別結果に応じて、現ベクトルの開始点
の部分の画素を、プロットしない、プロットする、或は
塗りつぶし方向に1画素ずらしてプロットするように決
定し、現ベクトルの開始点以外の部分の画素を前記判別
結果に応じて、プロットしない、プロットする、或は前
記塗りつぶし方向に1画素ずらしてプロットするように
決定して輪郭を生成し、その生成した輪郭と水平走査線
との奇数回目の交差の際に交差した画素も含めて塗りつ
ぶしを開始し、前記輪郭と水平走査線との偶数回目の交
差の際に偶数回目に交差した直前の画素までを塗りつぶ
すように動作する。また本発明によれば、複数の接続さ
れるベクトルにおける現ベクトルの向きと直後のベクト
ルの向きとを判別し、当該判別結果に応じて、現ベクト
ルの終了点の部分の画素を、プロットしない、プロット
する、或は塗りつぶし方向に1画素ずらしてプロットす
るように決定し、現ベクトルの終了点以外の部分の画素
を前記判別結果に応じて、プロットしない、プロットす
る、或は前記塗りつぶし方向に1画素ずらしてプロット
するように決定して輪郭を生成し、その生成した輪郭と
水平走査線との奇数回目の交差の際に交差した画素も含
めて塗りつぶしを開始し、前記輪郭と水平走査線との偶
数回目の交差の際に偶数回目に交差した直前の画素まで
を塗りつぶすように動作する。
【0030】
【実施例】以下、添付図面を参照して本発明の好適な実
施例を詳細に説明する。 <動作概要の説明>先ず、本実施例における動作概要を
簡単に説明する。
【0031】本実施例では、図形の輪郭として、所定方
向に方向付けられた輪郭を用いる。即ち、扱う図形の輪
郭を全て時計回り方向(以下、右回り)に連なるアウト
ラインベクトル(線要素)の集まり、もしくは、扱う図
形の輪郭を全て反時計回り方向(以下、左回り)に連な
るアウトラインベクトルの集まりとして表わす。ここ
で、右回りに連なるアウトラインベクトルとは、そのア
ウトラインベクトルの右側を塗り潰すと該当図形が塗り
潰されることを意味すると考えて良い(図12)。ま
た、左回りに連なるアウトラインベクトルとは、そのア
ウトラインベクトルの左側を塗り潰すと該当図形が塗り
つぶされるものである(図13)。
【0032】さて、本実施例では、各アウトラインベク
トルの向きを判断し、かつまた、そのアウトラインベク
トルの直前のアウトラインベクトルの向きによって、そ
のベクトルの始点とそれ以外のベクトルを制御する。し
かる後に、各走査線毎に該走査線と交差する奇数番目の
境界判定用エッジか、偶数番目の境界判定用エッジかに
より、メモリ上の対応する画素位置にプロットするか、
主走査方向に一画素隣の位置にプロットするかを制御す
る。但し、このとき、偶数番目の境界エッジ位置と直後
の奇数番目の境界エッジ位置が同じ画素位置なら共にプ
ロットしない。この後、前記一走査線分のデータを水平
走査して、奇数番目のプロットから偶数番目のプロット
の直前の画素まで塗り潰しを行う様にしたものである。 <装置構成の説明>以下、実施例の画像処理装置の具体
的説明を行う。
【0033】図1は、ラスタ走査型のビデオプリンタ用
に構成した実施例の画像処理装置のブロック図を示して
いる。図中、1はマイクロプロセッサ(CPU)で、バ
ス9を介してRAM(ランダムアクセスメモリ)2,ラ
インメモリ3,同期制御回路6,I/Oポート4及び7
と接続されている。尚、CPU1の制御処理手順はプロ
グラムとして内部のROM(図示せず)に格納されてい
る。5は中塗り回路で、同期制御回路6からの同期信号
12に従ってラインメモリ3よりラスタ走査出力される
輪郭画像データ10を入力し、閉空間を塗り潰した画像
データ11を出力する。8はプリンタ装置であり、I/
Oポート7を介して、マイクロプロセッサ1とインタフ
ェース接続されている。また、プリンタ装置8は、同期
制御回路6からの同期信号13と、塗りつぶされた画像
データ11とが、ビデオインタフェースとして接続され
ている。尚、ここでは塗りつぶされた画像データ11の
出力先をプリンタ8としたが、本発明はこれに限定され
るものでなく、例えばCRTや液晶等の表示装置であっ
ても良い。
【0034】輪郭データは、対象とする画像内に含まれ
ている閉ループの数を示すデータと各閉ループを構成す
る頂点の数を示すデータ群とで構成される。ただし、各
閉ループ上の各頂点は、それぞれの閉ループ上で予め方
向づけられた順番に従って、隣合う頂点の関係を維持し
たままのデータの集まりとして表現される。この内容を
図14に示した。
【0035】先に説明したように、この実施例では、輪
郭データを所定方向に並んだデータの集まりとしてとら
えている。例えば、図2に示したのは、右回りアウトラ
インデータの例で、その輪郭データは図15に示した如
くになる。図15において、図2の閉図形F1のアウト
ラインは、A→B→C→D→E→F→G→H→I→J→
K→L→M→Aの順に、A点を開始点として右まわりに
一巡する点列として表現されている。
【0036】以下、本実施例では、座標の原点は画像の
左上隅にあるものとし、主走査方向(右方向)をx軸
に、副走査方向(下方向)をy軸として説明する。ま
た、アウトラインは、右回りのデータ表現をとるものと
して説明を進める。尚、各閉ループ内の始点は、ループ
上の任意の点でよい。 <主処理の説明>図16は、本実施例におけるCPU1
の動作処理手順を示すフローチャートで、以下にこのフ
ローチャートに従って説明する。
【0037】CPU1は、ステップS1でその処理を開
始するとステップS2へ進み、ラインメモリ3をクリア
する。このとき、CPU1はラインメモリ3に一定値
“0”が書き込まれる様に図示しない付加回路を設定
し、同時に同期制御回路6に、この一定値“0”をラス
タメモリ3へ一面書込ませる様に制御することによっ
て、ラスタメモリ3のリセットを行う。同期制御回路6
は、CPU1より指示を受けると、前記CPU1により
設定された一定値をラスタメモリ3へ書き込むためにラ
スタメモリ3の全域に亙るアドレスを順次発生し、書き
込みを要する同期信号を生成して、ラスタメモリ3内の
一連のアドレス領域内に一定値を書き込ませてリセット
を実行した後、CPU1にその終了を示す信号を図示し
ない制御レジスタを介して通知する。CPU1は、この
信号検知することによって、ラインメモリ3のリセット
を知ることができる。こうしてラインメモリ3をクリア
した後、ステップS3へ進み、外部よりI/O4を経由
して画像の入力があったか否かを判定し、出力指示があ
るまで待つ。外部からの画像の入力があるとステップS
4に進み、塗り潰し用の輪郭データをI/O4を経由し
て外部より入力し、RAM2に格納する。尚、ここで言
う外部とは、外部インタフェースに接続された装置のみ
ではなく、図示しない補助記憶装置もその対象にしても
構わない。また、塗り潰し用の輪郭データとは、前述し
た如く図14に示した形式で表現された、アウトライン
ベクトルデータ群である。次に、ステップS5に進み、
図30に示した規則に従って、前述した図4に示すデー
タ形式で、各エッジに対するデータを作成し、図5に示
した形式のエッジテーブル(ET)を作成して、ステッ
プS6へ進む。尚、ステップS5の処理の詳細は詳しく
後述する。
【0038】さて、ステップS6では注目する走査線位
置をページ内の先頭の走査線位置にセットする。即ち、
y=0の走査線位置とする。また、前述の図6に示した
ようなアクティブエッジポインタ領域を確保する。次に
ステップS7へ進み、注目走査位置における、前述の図
6に示すような形式のアクティブエッジテーブル(AE
T)を生成して、これに基づき、ラインメモリ3上に、
輪郭点のプロットを行う。このステップS7の処理の詳
細も詳しく後述する。ステップS7の処理が終了すると
ステップS8に進み、プリンタ8が記録可能状態(レデ
ィ)になるのを待つ。
【0039】プリンタ8が記録可能状態になるとステッ
プS9に進み、先のステップS7にて描画された当該走
査線位置にある輪郭点データに基づき、輪郭点間の領域
を塗り潰す動作を行いながら、該ラインバッファの再ク
リアも同時に実行する。このステップS9の処理内容
も、追ってまた説明する。ステップS9の処理を終える
とステップS10へ進み、注目する走査線位置を1ライ
ン進める。即ち、それまでy=iの走査位置を注目して
いたなら、y=i+1とする。次にステップS11へ進
み、ページ内の最終走査線位置まで終了したか否かを判
定する。最終走査線位置まで終了している場合、ステッ
プS12へ進み、一連の処理を終了する。最終走査線位
置までは終了していない場合はステップS7へ戻って、
次ラインの処理を続ける。最終走査線か否かは、図示せ
ぬルーチンにおいて、描画しようとするページ内に含ま
れる走査線数を予め保持しておき、この走査線数と注目
走査線位置とを比較することにより判定する。 <エッジテーブル作成処理の説明>図17は図16のス
テップS5のエッジテーブル(ET)作成処理の詳細を
示すフローチャートである。
【0040】ステップS51では、図18に示すように
生成しようとしているページ内に含まれる走査線(ここ
では、0〜NまでのN+1ライン)分のアドレスポイン
タ(以下、ポインタバケットとも呼ぶ)領域Ay0〜A
yNをRAM2上に確保し、その各領域に参照データは
存在しないことを示すマーカー値“λ”を格納してエッ
ジテーブル(ET)を初期化する。次にステップS52
に進み、図14の形式で与えられるアウトラインデータ
の閉ループ数に基づいて注目するループ数を設定し、各
ループ内頂点数テーブルを指示するポインタを、第0ル
ープ内頂点数を指示する位置に初期化してステップS5
3に進む。ステップS53では、ポインタにより指示さ
れる頂点座標テーブルの当該ループの第0頂点座標デー
タが格納されているアドレス値に設定する。ステップS
54では、現エッジデータと直前のエッジデータから前
述の図4に示した形態のバケットデータを作成する。次
にステップS55に進み、作成したバケットデータをエ
ッジテーブル内に追加してエッジテーブルを更新する。
次にステップS56に進んで注目頂点を更新し、次のエ
ッジの処理に移る。これらの操作を全ループの処理が終
了するまで行う。
【0041】以下、図17のステップS54及びS55
の各処理について詳述する。
【0042】ステップS54におけるバケットデータの
生成規則を図19に示す。ここで、あるエッジの始点座
標を(xstart ,ystart )、終点座標を(xend ,y
end)とすると、ystart =yend ならば水平であり、
start >xend ならば左向き、xstart <xend なら
ば右向きである。また、ystart >yend ならば上向
き、ystart <yend ならば下向きである。
【0043】又、x増分Δxは次式で与えられる。
【0044】 Δx=(xend −xstart )/(yend −ystart ) 図19の生成規則に従って現エッジを開始点とし、それ
以外の部分に分割してバケットデータを生成するが、従
来例とは異なり、現エッジが水平であっても現エッジが
右向きで、直前エッジが下向きの場合(図19c)や、
現エッジが左向きで直前エッジが水平で右向きの場合
(図19e)は、現エッジの開始点をバケットデータに
する。また、現エッジが非水平である場合には、開始点
を除いたエッジバケットデータを作成する。現エッジの
開始点については、現エッジが下向きの場合は、直前エ
ッジが水平で右向きの場合と上向きの場合(図19i,
m)、現エッジが上向きの場合は直前エッジが水平で左
向きの場合と下向きの場合(図19p,q)のみバケッ
トデータにする。尚、図19において、○はバケットデ
ータを作成する場合を示し、×はバケットデータを作成
しない場合を示している。これは後述する図27〜図2
9においても同様である。
【0045】ここで、開始点のバケットデータとはエッ
ジバケットの特別な場合であり、開始点と終点の一致し
たエッジ(xmin =xmax ,ymin =ymax ,Δx=
0)とする。
【0046】次にステップS55では、以上で生成され
たエッジバケットをエッジテーブル(ET)に追加登録
する。即ち、エッジテーブル内のy=ymin に相当する
ポインタバケットAyymin につながるエッジバケット
のリスト接続に現エッジのエッジバケットを追加する。
まず、現エッジのエッジバケットを保持する領域をRA
M2上に確保する。次にポインタバケットAyymin
値を吟味して、その値がまだ“λ”であれば、現エッジ
のエッジバケットを保持する領域のアドレスに書き換え
て、現エッジのエッジバケットは、ポインタバケットに
リスト接続される。ポインタバケットAyymin の値が
既にある“λ”以外の値をもつ場合には、既にリスト接
続されている何個かのエッジバケットが存在しているの
で、これらのエッジバケットのxmin の値が、ポインタ
バケット側から見て昇順になるように、現エッジのエッ
ジバケットを、該リスト接続されているエッジバケット
列に挿入する。これは、挿入される直前のバケットポイ
ンタの値を、現エッジのエッジバケットのポインタ部に
コピーし、直前のバケットのポインタ部の現エッジのエ
ッジバケットのアドレス値に書き換えることで実現され
る。かくして、ステップS55の処理を終えると、ステ
ップS56へ進む。 <注目走査線輪郭の生成処理の説明>次に、前述の図1
6におけるステップS7の“注目走査線輪郭の生成処
理”を説明する。尚、その時点でのアクティブエッジテ
ーブル(AET)を用いて以下に示す手順に従って処理
が進行することになる。尚、このアクティブエッジテー
ブル(AET)は、ステップS6において初期化され、
最初は空の状態(マーカーλが書かれた状態)になって
いるものである。以降、一旦処理を終了して、ステップ
S8へ進んでも、アクティブエッジテーブルの状態は次
にステップS7に再度入るまで保持される。 (1)アクティブエッジテーブル(AET)のx座標値
(xmin )でのソート順を保ちながら、そのときのエッ
ジテーブル(ET)の情報とアクティブエッジテーブル
(AET)との情報とを併合して、走査線y座標値にか
かるエッジバケットを結ぶ新たなアクティブエッジテー
ブル(AET)を作成する。 (2)アクティブエッジテーブル(AET)のx座標値
(xmin )が小さい方からアクセスして、奇数番目のx
座標値の位置にある画素に対応するラインメモリ3上の
アドレスに保持される値をそのアドレスに格納されてあ
ったビット値(0または1)と“1”とを排他的論理和
して書き換える。また、偶数番目のx座標値の位置にあ
る画素の一画素右隣の画素に対応するラインメモリ3上
のアドレスに保持される値を、そのアドレスに格納され
てあったビット値(0または1)と1との排他的論理和
で得られる値に書き替える。但し、偶数番目のx座標値
が、直後の奇数番目のx座標値の画素位置と同位置とな
る場合は、その双方ともを描画しない。 (3)注目走査線y座標値をy座標が大きい方の端点の
yの値(ymax )とするエッジバケットを次の走査線に
おける動作のためにアクティブエッジテーブル(AE
T)から削除する。 (4)アクティブエッジテーブル(AET)に残ってい
るエッジバケットについて、次の走査線における動作の
ために増分データ(Δx)を利用して、x座標値を更新
する。即ち、(xmin +Δx)をもって新しくxmin
し直す。 (5)かかるx座標値(xmin )の更新後、x座標値
(xmin )に基づいてソーティングし直す。
【0047】この様にして、その時点の注目走査線にお
ける閉図形の輪郭の走査線と奇数番目に交差する点が、
その対応するラインバッファのメモリアドレスに、偶数
番目に交差する点が、その一画素右隣の点が対応するラ
インバッファのメモリアドレスに描画される。但し、偶
数番目に交差する点とその直後の奇数番目に交差する点
とが同一の場合、この2点はともに描画されない。ま
た、その時点でアクティブエッジテーブル(AET)が
空の場合にも、何も描画されない。かくして、ステップ
S7が終了する。また、ラインバッファ3は、走査線中
に含まれる走査方向(x軸方向)に並ぶ画素数分の容量
を保有しており、主走査の方向に沿って、各画素のデー
タをアドレスが昇順に連続して増加する様に構成されて
いる。 <注目走査線データ出力&ラインメモリ3のクリア処理
の説明>次に、図16におけるステップS9の処理内容
を説明する。
【0048】ステップS9では、ステップS7にて描画
された該当走査線位置にある輪郭点データに基づき、輪
郭点間の領域を塗り潰す動作を行いながら、ラインメモ
リ3の再クリアも同時に実行するものである。CPU1
はステップS9へと進むと、ステップS9の処理が完了
するまでラインメモリ3へ以降入力されるデータが一定
値“0、となる様に図示しない付加回路を設定し、同時
に同期制御回路6に一走査線のデータを出力させるべく
起動をかけ、同期制御回路6がその一連の動作を終了し
た旨の信号を返すのを待つ。この時、同期制御回路6
は、CPU1より起動されると、ラインメモリ3の先頭
アドレスから順にアドレスを生成して、そのアドレス位
置に保持されていたデータを信号線10に出力させ、同
時に前記CPU1により設定されていた一定値“0、を
同アドレスに書き込ませる動作を各アドレス毎に実行し
ていく。そして、予め設定されていた画素数分だけこの
動作を行った後に書込み動作を停止して、該走査線に対
する一連の処理を終了したことをCPU1に通知する信
号を出力する。
【0049】一方、この一連の動作に同期して、図20
に示す様な同期信号を中塗り回路5への信号12及びプ
リンタ8への同期信号13として出力する。図20のLi
ne Sync 信号は水平走査線の同期信号であり、この信号
の立ち上がり信号をもって、一走査線の処理の開始を意
味している。CLK信号は画素の同期信号であり、この
信号の立上がり信号をもって、データの有効なタイミン
グを示す。Line Sync信号の直後のCLK信号の立上が
りが、該走査線の最初の画素のデータの有効タイミング
を示し、以降、1クロック後にその主走査方向の隣の画
素のデータのタイミングであることを示す。図20は、
走査線上にm個の画素が存在する場合の同期信号を示し
ている。
【0050】図21は、本実施例における中塗り回路5
の構成例を示すブロック図である。上述の動作により、
ラインメモリ3より出力されてくるデータ10は、走査
線上にある輪郭データのみである。図21において、デ
ータ10上の奇数番目の輪郭画素信号から偶数番目の輪
郭画素の直前の画素信号までを“1”として出力し、そ
れ以外の画素領域は“0”として出力する。この時、入
力データ10は輪郭位置のみ“1”となり、他は“0”
とされた信号となっている。まず、Line Sync信号の入
力によってラッチ201の保持する値は“0”に初期化
され、“0”が排他的論理和ゲート206に出力される
様にリセットされる。次に、同期制御回路6から出力さ
れるCLK信号204に同期して入力されるデータ10
と、ラッチ201の出力206との排他的論理和値が信
号線206に出力される。この信号線206のデータが
プリンタ8への出力データ11となる。また、この信号
線206をCLK信号204に同期してラッチ201に
取り込み、次のデータを作成するために保持する。この
一連の動作を画素数分繰り返すものである。
【0051】図3に対して、本実施例によって得られた
エッジテーブルを図22に示す。
【0052】図19に示す規則を参照すると、エッジe
1は現エッジが下向きで、直前のエッジが上向きである
ため図19mの場合となり、現エッジe1の開始点とそ
れ以外のエッジの2つのバケットデータが生成される。
同様に、エッジe2は図19cの場合で、現エッジe2
の開始点のバケットデータを生成する。エッジe3は図
19iの場合で、現エッジの開始点と開始点以外のエッ
ジの2つのバケットデータが生成される。エッジe4は
図19qの場合となり、やはり2つのバケットデータが
生成される。更に、エッジe5は図19eの場合でバケ
ットデータは生成されない。又、エッジe6は図19i
の場合で2つのバケットデータが生成される。エッジe
7は図19gの場合でバケットデータは生成されない。
エッジe8は図19pとなり、2つのバケットデータが
生成される。又、エッジe9は図19mの場合でやはり
2つのバケットデータが生成される。更にエッジe10
は図19gの場合でバケットデータは生成されない。エ
ッジe11は図19jの場合で、開始点以外のバケット
データが生成される。そして、エッジe12は図19q
の場合で2つのバケットデータが生成される。そして最
後にエッジe13は図19rの場合となり、開始点以外
のバケットデータが生成される。
【0053】図22に基づいてアクティブエッジテーブ
ル(AET)を生成し、注目走査線をy=0より順次1
つずつ増やしていった際のAETの変化を図23に示
す。
【0054】図23のAETに従って、各走査線におい
て奇数番目のエッジバケットのxmi n の位置と、偶数番
目のエッジバケットのxmin の位置の主走査方向のすぐ
隣の画素を輪郭画素としてプロットした図を図24に示
す。
【0055】図24において、Q11〜Q18はエッジ
e1に対しての輪郭画素であり、Q18はエッジe2に
対しての輪郭画素である。同様に、Q13〜Q15,Q
15〜P11,Q1〜Q2,Q3〜Q4,Q5〜Q6,
Q7〜Q8,P8〜Q9,Q10〜P5のそれぞれは、
エッジe3,e4,e6,e8,e9,e11,e1
2,e13のそれぞれに対する輪郭画素である。尚、図
24の◎印で示されるQ15,Q16のそれぞれはエッ
ジe3,e4のそれぞれに対する輪郭画素としてプロッ
トされ、Q18はエッジe1,e2に対する輪郭画素と
してプロットされる。このプロット方法は前述したよう
に、対応するラインメモリ3上のアドレス位置に既に格
納されてあったビット値(0または1)と“1”との排
他的論理和で求められる値に書き換える方法であるの
で、結局プロットされない状態に戻ることになる。ま
た、Δ印で示されるP7とQ14及びP6とQ17は、
それぞれ前述のステップS7の処理の際に注目走査線位
置y=10及びy=13において、先に説明した手順
(2)で説明したように、「偶数番目のx座標値が、直
後の奇数番目のx座標値の画素位置と同位置となる場合
は、その双方とも描画しない位置」に該当する。従っ
て、これらの画素位置はプロットされない。これらの点
は閉図形の凹部の頂点であり、そのままプロットすると
中塗り処理後の凹部に一点だけ孤立した白画素が発生し
てしまうからである。
【0056】ここで、先に説明した(2)の具体的処理
内容を図26のフローチャートに示し、以下に説明す
る。
【0057】先ず、ステップS100でその一連の処理
が開始されるとステップS101に進み、アクティブエ
ッジテーブル(AET)のアクティブエッジポインタの
内容をみて、接続されるエッジバケットが存在しないこ
とを示すマーカ“λ”であるか否かを判定する。マーカ
“λ”であればステップS110に進み、本処理(手順
(2))を終了する。
【0058】マーカ“λ”がなければステップS102
に進み、アクティブポインタによって接続される最初の
バケットのxmin で与えられる座標値で指示される画素
位置に対応するラインメモリ3上のアドレス位置に、そ
の位置に格納されてあったビット値(0または1)と
“1”との排他的論理和で得られる値に書き換える方式
でプロットする。次にステップS103に進み、ステッ
プS102のポインタによって接続されるエッジバケッ
ト(偶数番目のエッジバケット)のxmin を参照してス
テップS104に進む。ステップS104では、ステッ
プS102で参照されたエッジバケットのポインタが、
次に接続されているエッジバケットが存在しないことを
示すマーカ“λ”であるか否かを判定し、そうでなけれ
ばステップS105に進み、そうであればステップS1
09に進む。
【0059】ステップS109では、ステップS103
で参照したxmin で与えられる座標値の画素位置の1画
素右隣りの画素位置にステップS102と同様に排他的
論理和によるプロットを行い、ステップS110へ進
む。
【0060】また、ステップS105では、ステップS
103で参照したエッジバケットのポインタによって接
続されるエッジバケット(奇数番目のエッジバケット)
のx min を参照してステップS106に進む。ステップ
S106では、先のステップS103で参照したxmin
とステップS105で参照したxmin とでそれぞれ表現
される画素位置同士が同じ位置であるか否かを判定し、
同位置である場合にはステップS103に戻り、次のエ
ッジバケットの処理はしない。また、同位置でない場合
にはステップS107に進み、先のステップS103で
参照したxminで与えられる座標値の画素位置の1画素
右隣の画素位置に対応するラインメモリ3上のアドレス
にステップS102と同様に排他的論理和によるプロッ
トを行ってステップS108に進む。ステップS108
では、ステップS105で参照したxmin で与えられる
座標値の画素位置に対応するラインメモリ3のアドレス
に、ステップS102と同様に排他的論理和によるプロ
ットを行う。そして、ステップS103に戻って、次の
エッジバケットの処理を行っていく。
【0061】以上の処理手順で先に説明した手順(2)
を実現させることが可能になる。
【0062】ここで、図24に示すような輪郭データ
を、前述した如く走査線上にある奇数番目の輪郭画素か
ら偶数番目の輪郭画素の直前までを塗り潰した場合の出
力を図25に示す。本方式によれば、頂点画素も水平エ
ッジ上の画素も全て歪なく塗り潰される。
【0063】尚、以上の説明において、ymax 及びy
min は非負の整数値として扱っている。また、xmin
びΔxに関しては、使用に際して、十分な精度をもつ実
数データ(即ち、小数部の情報を有する)として扱って
いる。但し、走査線位置を次のラインの位置に更新する
ときのx座標は、計算では直前のエッジのx座標に算出
したΔxを加えた値となるが、メモリ上での画素は整数
位置にしかとれない。従って、Δxを足し込んで小数点
以下からキャリィが発生したときに実際のx座標は変化
する。 [第2実施例]前記第1の実施例では、アウトラインは
右回りのデータ表現をとるものとして説明したが、本発
明はこれに限るものではなく、左回りのデータ表現をと
る場合にも対応可能である。この場合のエッジバケット
の生成規則を図27に示す。このときも現エッジと前エ
ッジの向きから開始点とそれ以外のエッジの取り扱い方
を判断する。この生成規則に従ったエッジテーブル更新
の処理の流れは右回りの場合と同様である。 [第3実施例]本実施例では、現エッジを開始点とそれ
以外のエッジの分割して処理を行ったが、これを現エッ
ジを終了点とそれ以外のエッジに分割して処理を行って
もよい。この場合のエッジバケットの生成規則を図28
に示す。 [第4実施例]前述の第1実施例に対し、第2実施例で
説明したのと同様に第3実施例に対してもアウトライン
を左回りのデータ表現とすることが可能である。この場
合のエッジデータの生成規則を図29に示す。
【0064】又、前記実施例では、座標の原点は画像の
左上にあるとして説明したが、これに限るものではな
い。即ち、原点の位置及び、座標の向きに応じて、前記
説明中での向きの判定法や、ymax ,ymin ,xmin
Δx等の扱いを変更すれば、同様の処理が可能であるこ
とは勿論である。
【0065】更に前記実施例では、塗り潰し動作時の主
走査の方向を画像の左から右への方向であるとして説明
したが、これに限るものではない。走査方向がこの逆で
右から左への方向である場合には、前記アクティブエッ
ジテーブル(AET)から輪郭画素をラインバッファに
描画する際に、x座標値(xmin )が小さい方からアク
セスした時の奇数番目のx座標値に対しては、その位置
の画素の一画素隣の画素に対応するメモリアドレスに1
との排他的論理和による画素描画を行い、偶数番目のx
座標値に対しては、その位置の画素に対応するメモリア
ドレスに1との排他的論理和による画素描画を行った後
に、該メモリバッファから輪郭画素データを画像の右か
ら左の向きに対向する方向にデータを読み出して、前記
中塗り方法を実行すればよい。 [第5実施例]エッジテーブルの構成は、前述の構成に
限るものではない。即ち、ポインタバケットを図30に
示す様な2次元のリスト構造をもったデータ形成として
もよい。ポインタバケットは、そのポインタバケットか
らリスト接続されるエッジバケットのエッジのy座標の
小さい方の端点のy座標値(ymin )(これは、このポ
インタバケットから順に複数のエッジバケットがリスト
接続される場合も、それら複数のエッジのymin は全て
等しい値であることに注目)を保持する項と、y座標値
を昇順に見た場合に、リスト接続されるエッジバケット
を有するポインタバケットの中で次に来るポインタバケ
ットへのポインタの項と、そのポインタバケットに接続
されるエッジバケットへのポインタ項より構成されてい
る。図30の形式をもったポインタバケットをもった構
成したエッジテーブルの例が図31に示されている。
【0066】この図31は、図3で与えられるアウトラ
イン図形に対して構成されるエッジテーブルを示してい
る。この様に、2次元のリスト構造をもったエッジテー
ブルも、前述の実施例とほぼ同様の手順で構成が可能で
あるが、ポインタバケット領域があらかじめ画像の走査
線数分だけ確保されているのではなく、エッジバケット
が1つ生成されるたび毎に、既存のポインタバケットの
中に該当エッジバケットの表すエッジのymin を保持す
るものがあるか否かを判定する。そして、あればそのポ
インタバケットでなるエッジバケットのリスト列に、該
当エッジバケットを追加し、なければ新たなポインタバ
ケットを生成して、そのポインタバケットにymin を格
納し、該当エッジバケットリスト接続した上で、新たに
生成ポインタバケットをymin の順で、ポインタバケッ
ト列のリスト接続に追加・挿入しておくという操作を行
うようになっている。
【0067】この様なエッジテーブルを用いての、アク
ティブエッジテーブルの生成も、前記第1実施例と同様
である。
【0068】この様な2次元構造をもったリスト構造を
採用すれば、画像の走査線本数のポインタバケット領域
を用意する必要はなくなり、特に扱う画像が大サイズの
ものであればあるほど、エッジテーブルに要するランダ
ムメモリ領域が少量で済ませられるという特有の効果を
生む。 [第6実施例]この第6実施例では、図32に示す様な
複数のラインメモリを保持する装置構成で実施すること
も可能である。図32において、図1と同じ部分には同
一番号が付されている。図32において、ラインメモリ
は31と32の2本、即ち、2走査線分のラインメモリ
31,32が用意されている。これら2つのラインメモ
リ31,32の内の1つはCPU1がある走査線上の輪
郭画素を描画するのに使用され、もう1つはその直前に
描画された他の走査線上の輪郭画素データを中塗り回路
5に出力するのに使用されている。即ち、2つの処理を
同時に行わせることを可能にするために設けられてい
る。そして、出力が終了したラインメモリは次に描画さ
れる走査線用の輪郭画素を書き込むために用いられる。
このようなラインメモリの切り換えによるトグル操作を
行うために、マルチプレクサ33及びセレクタ34を用
いて、ラインメモリ31,32の入出力の切り換えを行
う様に構成されている。このマルチプレクサ33及びセ
レクタ34の制御は、同期制御バッファ6aが行ってい
る。即ち、この同期制御回路6aは、一方のラインメモ
リに対するCPU1による輪郭画素の書き込みが終了す
ると、その走査線データの出力を起動し、かつ他方のラ
インメモリからの中塗りデータの生成出力が終了するた
び毎に、マルチプレクサ33及びセレクタ34の接続さ
れるラインメモリを切り換えるように動作する。これら
ラインメモリの切り換えを行う毎にCPU1に対して次
の走査線の描画が可能であることを通知し、かつ、中塗
り回路5に指示信号を出力して輪郭画素より中塗りデー
タの生成・出力を行う。
【0069】この様に、複数の各走査線に対する処理の
間に要する待ち時間を減少させることが可能となり、全
体としての処理を高速化できるという特有の効果を生
む。尚、この図32に示した構成は、後述の各実施例に
おいても同様に実現できるが、説明が重複するので特に
詳しくは述べない。 [第7実施例]前述の第1の実施例で説明したステップ
S7の処理における手順(2)の「但し、偶数番目のx
座標値が、直後の奇数番目のx座標値の画素位置と同位
値となる場合は、その双方ともを描画しない」という条
件を、その画素位置が輪郭エッジの端点である場合のみ
に限定して適用させてもよい。これはエッジバケット中
に図3に示したy座標が大きい方の端点のyの値(y
max )、y座標値が小さい方の端点のxの値(x
min )、xの増分(Δx)、ポインタに加えてy座標が
小さい方の端点のyの値(ymin )も含めてエッジバケ
ットを構成しておき、各注目走査線位置に対して、この
エッジバケットをもってアクティブエッジテーブル(A
ET)を構成するようにすれば、ymin の値が注目走査
線位置と同じ、及びymax の値が注目走査線位置と同じ
エッジバケットに対してのみ、該エッジバケットが奇数
番目のエッジバケットであれば直前の偶数バケットの、
また該エッジバケットが偶数番目のエッジバケットであ
れば直後の奇数番目のエッジバケットのxmin 同士を比
較するようにして実現することも可能である。
【0070】このようにすると、図33、図34のよう
な針状の閉図形中の凹頂点であっても、その頂点のみを
先の手順(2)の「ただし、偶数番目のx座標値が、直
後の奇数番目のx座標値の画素位置と同位置となる場合
は、その双方ともを描画しない」の対象に限定すること
ができる。
【0071】以上説明したように本実施例によれば、注
目線要素を端点とそれ以外の部分の複数に分割して輪郭
線データを生成することにより、注目線要素とその直前
または直後の線要素のみから、少ないメモリ容量で図形
の塗り潰し処理を高速にかつ歪みなく行うことができる
という効果がある。 [第8実施例]図3の閉図形F1に対して、この第8実
施例によって得られたエッジテーブルを図36に示す。
図35はこの時の規則を示している。即ち、前述図16
のステップS5において、図35に示した規則に従って
前述した図3に示す閉図形に基づく各エッジに対するデ
ータを作成する。
【0072】このエッジテーブルの作成処理は図17の
フローチャートで示されており、これは前述の説明とほ
ぼ同様であるが、ステップS54の処理において異なる
部分を以下に説明する。
【0073】まず、現エッジが水平エッジ、即ち、現エ
ッジの向きが左向きであるか又は右向きである場合は、
このエッジに対してはバケットデータは生成せず、エッ
ジテーブルも更新しない。従って、図35には表記して
いない。現エッジが上向き、もしくは下向きの時には、
前エッジデータの内容によって始1〜始10及び終1〜
終10の場合に分けて考える。図35において、始点の
状態の欄には現エッジを実線矢印で、前エッジを破線矢
印で、矢印の向きはそれぞれのエッジの向きを示し、各
エッジの斜線で示される側が、塗りつぶされるべき領域
であることを示している。また、終点の状態欄には現エ
ッジを実線矢印で、次エッジを破線矢印で、矢印の向き
はそれぞれのエッジの向きを示し、各エッジの斜線で示
される側が塗りつぶされる領域であることを示してい
る。
【0074】まず、現エッジの始点の取扱いに注目し、
現エッジが上向きである場合(始1〜始5)を説明す
る。前エッジも上向きの場合(ケース始1)は、現エッ
ジの始点は実際よりも一走査線だけエッジに沿って終点
に移動した点にあるとして、バケットデータを作成す
る。前エッジが下向きの場合は、前エッジの終点、即
ち、現エッジの始点が閉図形の凹頂点になる時(ケース
始2)なら、始点はやはり実際よりも一走査線だけエッ
ジに沿って終点側に移動した点にあるとしてバケットデ
ータを作成する。また、閉図形の凸頂点になる時(ケー
ス始3)は、始点は実際の位置の点そのものとしてバケ
ットデータを作成する。尚、ケース始2か、ケース始3
かの判別は、現エッジのx増分と、前エッジのx増分と
の大小関係を比較することで可能である。即ち、前エッ
ジのx増分をΔxpre 、現エッジのx増分をΔxnow
するとΔxpre >Δxnow の場合はケース始2であり、
Δxpre<Δxnow の場合は、ケース始3である。但
し、Δxpre =Δxnow の場合は、ケース始3であると
判定することにする。前エッジが左向きの場合(ケース
始4)は、現エッジの始点は、実際の位置の点そのもの
としてバケットデータを作成し、前エッジが右向きの場
合(ケース始5)は、現エッジの始点は実際よりも一走
査線だけ現エッジに沿って終点側に移動した点にあると
してバケットデータを作成する。
【0075】次に、現エッジが下向きである場合(始6
〜始10)をみると、前エッジが上向きの場合は前エッ
ジの終点、即ち、現エッジの始点が閉図形の凸頂点にな
る(ケース始6)なら、現エッジの始点は1画素右にシ
フトした位置の点としてバケットデータを作成する。一
方、現エッジの始点が閉図形の凹頂点になる時(ケース
始7)は、現エッジの始点は実際よりも一走査線だけ現
エッジに沿って終点側に移動した点にあるとしてバケッ
トデータを作成する。また、前エッジが下向きの場合
(ケース始8)及び右向きの場合(ケース始10)に
は、現エッジの始点は1画素右にシフトした点としてバ
ケットデータを作成する。又、前エッジが左向きの場合
(ケース始9)には、始点は実際よりも一走査分だけ現
エッジに沿って終点側に移動した点を、更に1画素右に
シフトした位置の点としてバケットデータを生成する。
ここで、ケース始6か、ケース始7かの判別は、現エッ
ジのx増分Δxnow と前エッジのx増分Δxpre との大
小関係を比較することで可能である。即ち、Δxpre
Δxnow の場合はケース始6であり、Δxpre >Δxno
w の場合はケース始7である。尚、Δxpre =Δxnow
の場合はケース始6であると判定することにする。
【0076】次に、現エッジの終点の取扱いに注目して
説明する。
【0077】先ず、現エッジが上向きである場合(終1
〜終5)を説明する。次エッジも上向きの場合(ケース
終1)は、現エッジの終点は実際の位置の点そのものと
してバケットデータを作成する。又、次エッジが下向き
の場合は、次エッジの始点、即ち、現エッジの終点が閉
図形の凹頂点になる時(ケース終3)には、現エッジの
終点は実際の位置よりも一走査線だけ現エッジに沿って
始点側に戻った点にあるとしてバケットデータを作成す
る。一方、閉図形の凸頂点になる時(ケース終2)に
は、現エッジの終点は実際の位置の点そのものとしてバ
ケットデータを作成する。又、次エッジが左向きの場合
(ケース終4)には現エッジの終点は実際の位置よりも
一走査線だけエッジに沿って始点側に戻った点にあると
してバケットデータを作成する。更に、次エッジが右向
きの場合(ケース終5)には、現エッジの終点は実際の
位置の点そのものとしてバケットデータを作成する。こ
こで、ケース終2か、ケース終3かの判別は、現エッジ
のx増分Δxnow と、次エッジのx増分Δxpostとの大
小関係を比較することで可能である。即ち、Δxnow
Δxpostの場合はケース終2であり、Δxnow >Δx
postの場合はケース終3である。但し、Δxnow =Δx
postの場合は、ケース終2であると判定することにす
る。
【0078】次に、現エッジが下向きである場合(終6
〜終10)について説明する。次エッジが上向きの場合
は次エッジの始点、即ち、現エッジの終点が閉図形の凸
頂点になる時(ケース終6)には、現エッジの終点は1
画素右にシフトした位置の点としてバケットデータを作
成する。又、閉図形の凹頂点になる時(ケース終7)に
は、現エッジの終点は実際の位置よりも一走査線だけ現
エッジに沿って始点側に戻った点を1画素右にシフトし
た位置の点としてバケットデータを作成する。更に、次
エッジが下向きの場合(ケース終8)には、現エッジの
終点は実際の位置よりも1走査線だけ現エッジに沿って
始点側に戻った点を、さらに1画素右にシフトした位置
の点としてバケットデータを作成する。又、次エッジが
左向きの場合(ケース終9)は、現エッジの終点は1画
素右にシフトした位置の点としてバケットデータを作成
する。更に、次エッジが右向きの場合(ケース終10)
には、現エッジの終点は実際の位置よりも一走査線だけ
現エッジに沿って戻った点を更に1画素右にシフトした
位置の点としてバケットデータを作成する。ここで、ケ
ース終6か、ケース終7かの判別は、現エッジのx増分
Δxnow と次エッジのx増分Δxpostとの大小関係を比
較することで可能である。即ち、Δxnow <Δxpost
場合はケース終6であり、Δxnow >Δxpostの場合は
ケース終7である。Δxnow =Δxpostの場合はケース
終6であると判定することにする。
【0079】以上の生成規則に従って、図4に示したフ
ォーマットのバケットデータが現エッジに対して生成さ
れる。こうして次にステップS55に進み、前述の図1
6に関する説明と同様の処理を行う。
【0080】尚、図16におけるステップS7の注目走
査線輪郭生成処理において、前述第1実施例と比べて
(2)項のみが異なる。即ち、(2)アクティブエッジ
テーブル(AET)のx座標値(xmin )が小さいほう
からアクセスして、x座標値の位置にある画素に対応す
るラインメモリ3のアドれに保持される値を、そのアド
レスに格納されていたビット値(0又は1)と“1”と
の排他的論理和をとって書き換える。
【0081】これ以外の項目については前述の第1実施
例と同様である。このようにして、ステップS7で、そ
の時点の注目走査線における閉図形の領域の変化点のみ
がラインバッファのメモリアドレスに描画される。
【0082】こうして図3の閉図形に対して求められた
エッジテーブルデータの例を図36に示す。
【0083】エッジe1は下向きのエッジであり、エッ
ジe1に対する前エッジe13は上向きのエッジ、次エ
ッジはe2は右向きのエッジであるから、エッジe1の
始点はケース始6に該当し、終点は終10に該当してい
る。同様に、エッジe2は右向きエッジであるから、そ
の始点はケース始6に該当し、その終点は終10に該当
している。このエッジe2は水平エッジであるからエッ
ジバケットは生成されない。エッジe3は下向きエッジ
であり、その始点はケース始10、終点はケース終7に
該当している。以下同様にして、エッジe4は上向きの
エッジであり、始点はケース始2、終点はケース終5に
該当している。エッジe5は水平エッジでありエッジバ
ケットは生成されない。エッジe6は下向きのエッジで
あり、始点はケース始10、終点はケース終9に該当し
ている。エッジe7は水平エッジでありエッジバケット
は生成されない。エッジe8は上向きエッジであり、始
点はケース始4、終点はケース終3に該当する。エッジ
e9は下向きのエッジであり、始点はケース始7、終点
はケース終9に該当している。エッジe10は水平エッ
ジでエッジバケットは生成されず、エッジe11は下向
きエッジで、始点はケース始9、終点はケース終6に該
当する。エッジe12は上向きエッジであり、始点はケ
ース始3、終点はケース終1に該当している。最後にエ
ッジe13は上向きエッジであり、始点はケース始1、
終点はケース終2に該当している。
【0084】図36に基づいて、アクティブエッジテー
ブル(AET)を作成し、注目走査線をy=0より順次
1ずつ増やしていった際のAETの変化を図37に示
す。更に、図37のAETに従って、各走査線において
各エッジバケットのxmin の位置の画素を輪郭画素とし
てプロットした図を図38に示す。
【0085】図38において、Q11〜Q12はエッジ
e1に対しての輪郭画素であり、Q13〜Q15はエッ
ジe3に対しての輪郭画素である。同様に、Q15〜P
11,Q1〜Q2,Q3〜Q4,Q5〜Q6,Q7〜Q
8,P8〜Q9,Q10〜P5はそれぞれエッジe4,
e6,e8,e9,e11,e12,e13に対しての
輪郭画素である。
【0086】図38の◎印で示されるQ15,Q16
は、エッジe3,e4の両方の輪郭画素としてプロット
される。このプロット方法は、前述したように対応する
ラインメモリ3のアドレス位置に既に格納されてあった
ビット値(0又は1)と“1”との排他的論理和で得ら
れる値に書き換える方法であるので、結局はプロットさ
れない状態に戻ることになる。
【0087】図39は、図38に示す輪郭データを走査
線上にある奇数番目の輪郭画素から偶数番目までの輪郭
がその直前までを塗りつぶした場合の出力を示す図であ
る。このように、この第8実施例の方式によれば、輪郭
上の頂点画素も水平エッジ上の画素も全て塗りつぶされ
ることになる。
【0088】尚、前述した第8実施例では、図35に示
したエッジバケットの生成規則中、ケース始1とケース
終1、及びケース始8とケース終8の各組に対して次の
ように規則を変更しても良い。ケース始1:現エッジの
始点“つめないでそのまま”として、かつケース終1:
現エッジの終点“1走査線だけつめる”とする。また、
ケース始8:現エッジの始点“1画素右シフト1走査線
だけつめる”としてかつケース終8:現エッジの終点
“1画素右シフト、つめないでそのまま”とする。以上
の変更は、上向き同士または下向き同士の連続する2つ
のアウトラインエッジに共有されている頂点は、その頂
点を終点とするエッジ上の点としてのみ処理されるか、
或いはその頂点を始点とするエッジ上の点としてのみ処
理されるかのいずれでも良いことを暗示し、双方のエッ
ジ上の点として処理されたり、いずれのエッジ上の点で
もないとされることなく処理されれば、いずれでも良い
ことを意味していると考えることができる。
【0089】図41は、左回りのデータ表現をとる場合
にも適用できるエッジバケットとの生成規則を示した図
である。この場合も、現エッジと前エッジの向き及び傾
斜に基づいて現エッジの始点の取り扱いを判断し、更に
現エッジと次エッジの向き及び傾斜に基づいて現エッジ
の終点の取り扱い方を判断していく。
【0090】前述の第8実施例に対し、前述の実施例で
示した変形例と同様に、図41においても、ケース始1
1とケース終11、及びケース始18とケース終18が
それぞれ組み合わされて、ケース始11:エッジの始点
は“1画素右シフト1走査線だけつめる”とし、かつケ
ース終11:エッジの終点は“1画素右シフトつめない
でそのまま”とする。又、ケース始18:エッジの始点
は“つめないでそのまま”とし、かつケース終18:エ
ッジの終点は“1走査線だけつめる”としても良い。
【0091】又、前述の図30の場合と同様のポインタ
バケットのデータ構成により構成された、図3に示す閉
図形に対するエッジテーブルの一例を図40に示す。こ
れらの図に関する説明は、前述の図30及び図31に関
する説明を参照されたい。
【0092】以上説明したようにこの第8実施例によれ
ば、注目線要素とその前後の線要素とから画素の変化点
に基づく輪郭線データを生成することにより、図形の塗
りつぶし処理を小さいメモリ容量で高速に、かつ歪みな
く行うことができる効果がある。
【0093】[実施例9]この第9実施例では、図17
のステップS54及びS55の処理を、図42に示すバ
ケットデータの生成規則に則って行う。前述第1実施例
で説明した図17の処理において、この第9実施例の処
理で異なる部分について説明する。まず、ステップS5
4の注目エッジデータ作成処理を説明する。
【0094】ここで、前述第1実施例と同様に、あるエ
ッジの始点座標を(xstart ,yst art )、終点座標を
(xend ,yend )とすると、ystart =yend ならば
水平であり、xstart >xend ならば左向き、xstart
<xend ならば右向きである。また、ystart >yend
ならば上向き、ystart <yend ならば下向きである。
【0095】又、x増分Δxは次式で与えられる。
【0096】 Δx=(xend −xstart )/(yend −ystart ) 図42に示すバケットデータ生成規則に従って現エッジ
を開始点とし、それ以外の部分に分割してバケットデー
タを生成するが、従来例とは異なり、現エッジが水平で
あってもバケットデータを作成する必要がある。現エッ
ジが右向きで、直前エッジが水平で左向きの場合(図4
2b)や、現エッジが左向きで直前エッジが上向きの場
合(図42h)は、現エッジの開始点をそのままバケッ
トデータにする。又、現エッジが右向きで直前エッジが
下向きの場合(図42c)や、現エッジが左向きで直前
エッジが水平で右向きの場合(図42e)には、開始点
を1画素右にシフトしてバケットデータを作成する。
【0097】また、現エッジが非水平である場合には、
現エッジが上向きであるならば開始点を除いたエッジの
バケットデータを作成し、下向きであるならば開始点を
除いたエッジを1画素右にシフトしてバケットデータを
作成する。開始点については現エッジが下向きの場合に
は直前エッジが水平で右向きであるならば、開始点を1
画素右シフトしてバケットデータを作成する。又、直前
エッジが上向きであるならば直前エッジのx増分と現エ
ッジのx増分との和が“0”又は正の時、開始点を1画
素右にシフトしてバケットデータを作成する。一方、そ
の和が負の時には開始点をそのままバケットデータにす
る。又、現エッジが上向きの場合には、直前エッジが水
平で左向きであるならば開始点をバケットデータにし、
直前エッジが下向きであるならば直前エッジのx増分と
現エッジの増分との和が正の時は開始点を1画素右にシ
フトしてバケットデータを作成し、“0”又は負の時は
開始点をそのままバケットデータにする。こうして図1
7のステップS55に進む。これ以降の処理は前述の説
明と同様であるので省略する。
【0098】図3の閉図形F1に対して、この第9実施
例によって得られたエッジテーブルを図43に示す。図
42はこの時の規則を示している。
【0099】エッジe1は図42のmの場合となり、1
画素右にシフトした開始点と1画素右にシフトした開始
点以外のエッジのバケットデータが生成される。エッジ
e2は図42のcの場合で、1画素右にシフトした開始
点のバケットデータが作成される。エッジe3は図42
のiの場合で、1画素右にシフトした2つのバケットデ
ータが生成される。エッジe4は図42のrの場合で、
1画素右にシフトした開始点のバケットデータと、開始
点以外のエッジのバケットデータが生成される。エッジ
e5は図42のdの場合で、バケットデータは生成され
ない。エッジe6は図42のiの場合で、1画素右にシ
フトしたバケットデータが生成される。エッジe7は図
42のgの場合で、バケットデータは生成されない。エ
ッジe8は図42qの場合であって、2つのバケットデ
ータが生成される。エッジe9は図42nの場合で、開
始点のバケットデータと、1画素右にシフトした開始点
以外のエッジのバケットデータが生成される。エッジe
10は図42gの場合で、バケットデータは生成されな
い。エッジe11は図42jの場合で、1画素右にシフ
トした開始点以外のエッジのバケットデータが生成され
る。エッジe12は図42sの場合であって、2つのバ
ケットデータが生成される。エッジe13は図42tの
場合で、開始点以外のエッジのバケットデータが生成さ
れる。
【0100】こうして図43のETに基づいてアクティ
ブエッジテーブル(AET)を作成し、注目走査線を1
つずつ増やしていった際のAETの変化を図44に示
す。更に、図44のAETに従って、各走査線において
各エッジバケットのxmin の位置の画素を輪郭画素とし
てプロットした例を図45に示す。
【0101】図45において、Q11〜Q18はエッジ
e1に対しての輪郭画素であり、Q18はエッジe2に
対しての輪郭画素である。同様に、Q13〜Q14,Q
14〜P11,Q1〜Q2,Q3〜P6,P6〜Q6,
Q7〜Q8,P8〜Q9,Q10〜P5のそれぞれは、
エッジe3,e4,e6,e8,e9,e11,e1
2,e13のそれぞれに対する輪郭画素である。尚、図
45の◎印で示されるQ18はエッジe1,e2に対す
る輪郭画素としてプロットされる。又、Q14〜Q16
はエッジe3,e4に対する輪郭画素として、P6はエ
ッジe8,e9に対する輪郭画素としてプロットされ
る。このプロット方法は前述したように、対応するライ
ンメモリ3上のアドレス位置に既に格納されてあったビ
ット値(0または1)と“1”との排他的論理和で求め
られる値に書き換える方法であるので、結局プロットさ
れない状態に戻ることになる。
【0102】図46は、図45に示す輪郭データを走査
線上にある奇数番目の輪郭画素から偶数番目までの輪郭
がその直前までを塗りつぶした場合の出力を示す図であ
る。このように、この第9実施例による方式によれば、
輪郭上の頂点画素も水平エッジ上の画素も全て塗りつぶ
される。
【0103】尚、前述の実施例では、アウトラインは右
回りのデータ表現をとるものとして説明したが、本発明
はこれに限定されるものでなく、左回りのデータ表現を
とる場合にも対応可能である。この場合のエッジバケッ
トの生成規則を図48に示す。この時も現エッジと前エ
ッジの向きから開始点とそれ以外のエッジの取り扱い方
を判断する。この生成規則に従ったエッジテーブル更新
の処理の流れは前述した右回りの場合の処理と同様であ
る。
【0104】又、この第9実施例では、現エッジを開始
点とそれ以外のエッジに分割して処理を行ったが、これ
を現エッジを終了点とそれ以外のエッジに分割して処理
を行っても良い。この場合のエッジバケットの生成規則
を図49に示す。
【0105】又、更に、図48の場合と同様に、図49
の終了点に対しても左回りのデータ表現をとることが可
能である。この場合のエッジバケットの生成規則を図5
0に示す。
【0106】又、前述の実施例と同様に、この第9実施
例に対しても、図30に示すような2次元のリスト構造
を有するデータ形式としても良い。この場合、図3に示
されたアウトライン図形に対して構成されるエッジテー
ブルを図47に示している。以上説明したようにこの第
9実施例によれば、注目線要素を端点とそれ以外の部分
というように複数に分割して画素の変化点に基づく輪郭
線データを生成することにより、注目線要素とその直前
又は直後の線要素に応じて少ないメモリ容量で高速にか
つ歪みなく図形の塗りつぶし処理を行うことができる。
【0107】尚、本発明は複数の機器から構成されるシ
ステムに適用しても、1つの機器からなる装置に適用し
ても良い。また、本発明はシステム或は装置に、本発明
を実施するプログラムを供給することによって達成され
る場合にも適用できることは言うまでもない。
【0108】
【発明の効果】以上説明したように本発明によれば、少
ないメモリ容量で高速にしかも歪みなく図形を塗りつぶ
すことができる効果がある。
【図面の簡単な説明】
【図1】ラスタ走査型のビデオプリンタ用に構成した実
施例の画像処理装置の構成を示すブロック図である。
【図2】アウトライン閉図形データの一例を示す図であ
る。
【図3】実施例で用いる右回りアウトライン図形データ
の例を示す図である。
【図4】エッジバケットデータのデータフォーマットを
示す図である。
【図5】従来法による図2のエッジテーブル(ET)を
説明するための図である。
【図6】従来法によるy=14のアクティブエッジテー
ブル(AET)を説明するための図である。
【図7】従来法によるアクティブエッジテーブル(AE
T)の推移を説明するための図である。
【図8】従来の奇偶反転法に内在する問題を説明するた
めの図である。
【図9】従来法による図2の図形の処理結果を説明する
ための図である。
【図10】第2の従来法による図2の図形の処理結果を
説明するための図である。
【図11】第2の従来法を改良した他の従来法の画像処
理装置の概略ブロック図である。
【図12】右回りアウトライン閉図形の内部領域を説明
する図である。
【図13】左回りアウトライン閉図形の内部領域を説明
する図である。
【図14】アウトライン図形の座標列形式の輪郭データ
を示す図である。
【図15】図3の図形の座標列形式の輪郭データを示す
図である。
【図16】実施例における画像処理装置の動作を示すフ
ローチャートである。
【図17】実施例におけるエッジテーブル(ET)の生
成手順を示すフローチャートである。
【図18】初期化されたアドレスポインタ領域を示す図
である。
【図19】第1の実施例におけるバケットデータの生成
規則を示す図である。
【図20】本実施例の同期制御回路の生成する同期信号
の説明図である。
【図21】本実施例の中塗り回路の構成図である。
【図22】第1の実施例における図3の図形に基づくエ
ッジテーブル(ET)の説明図である。
【図23】第1の実施例のアクティブエッジテーブル
(AET)の推移を説明するための図である。
【図24】第1の実施例による図3の図形に対する輪郭
画素出力の説明図である。
【図25】第1の実施例における図3の図形の処理結果
の説明図である。
【図26】図16における注目線輪郭部生成処理の一部
を説明するためのフローチャートである。
【図27】第2の実施例における左回りのアウトライン
に対するバケットデータ生成規則を示す図である。
【図28】第3の実施例における注目エッジを終了点と
それ以外のエッジに分割する場合の右回りのアウトライ
ンに対するバケットデータ生成規則を示す図である。
【図29】第4の実施例における注目エッジを終了点と
それ以外のエッジに分割する場合の左回りのアウトライ
ンに対するバケットデータ生成規則を示す図である。
【図30】第5の実施例におけるポインタバケットのデ
ータフォーマットを示す図である。
【図31】第5の実施例に従って作成された図3の図形
のエッジテーブル(ET)を説明した図である。
【図32】第6の実施例のラスタ走査型のビデオプリン
タ用に構成した画像処理装置の概略構成を示すブロック
図である。
【図33】
【図34】第7の実施例で得られる結果の特徴を説明す
るための図である。
【図35】本発明の第8実施例のバケットデータの生成
規則を示す図である。
【図36】第8実施例に従って図3の図形に基づくエッ
ジテーブル(ET)を作成した例を示す図である。
【図37】図36のエッジテーブルより作成されたアク
ティブエッジテーブル(AET)を説明するための図で
ある。
【図38】第8実施例による図3の図形に対する輪郭画
素出力例を示す図である。
【図39】第8実施例による図3の図形に対する処理結
果を示す図である。
【図40】第8実施例の他の実施例における図3に示す
閉図形に対するエッジテーブルの一例を示す図である。
【図41】第8実施例の変形例における左回りのアウト
ラインに対するバケットデータの生成規則を示す図であ
る。
【図42】本発明の第9実施例のバケットデータの生成
規則を示す図である。
【図43】第9実施例において図3の図形に基づいて作
成されたエッジテーブルを示す図である。
【図44】図43のエッジテーブルより作成されたアク
ティブエッジテーブル(AET)のデータ構成を示す図
である。
【図45】第9実施例における図3の図形に対する輪郭
画素出力を説明するための図である。
【図46】第9実施例における図3の図形に対する処理
結果を説明した図である。
【図47】第9実施例の変形例における図3の図形のエ
ッジテーブル(ET)の説明図である。
【図48】第9実施例の変形例の左回りアウトラインに
対するバケットデータの生成規則を示す図である。
【図49】第9実施例の変形例における注目エッジを終
了点とそれ以外のエッジに分割する場合の右回りのアウ
トラインに対するバケットデータ生成規則を示す図であ
る。
【図50】第9実施例の変形例における注目エッジを終
了点とそれ以外のエッジに分割する場合の左回りのアウ
トラインに対するバケットデータの生成規則を示す図で
ある。
【符号の説明】
1 マイクロプロセッサ(CPU) 2 ランダムアクセスメモリ 3,31,32 ラインメモリ 4 I/Oポート 5 中塗り回路 6.6a 同期制御回路 7 I/Oポート 8 プリンタ装置 9 バス 33 マルチプレクサ
フロントページの続き (56)参考文献 特開 平3−22187(JP,A) 特開 平2−153483(JP,A) 特開 平4−250582(JP,A) 特開 平2−50778(JP,A) 特開 平1−205388(JP,A) 特開 昭62−42273(JP,A) 特開 昭60−68472(JP,A) 特開 平1−228074(JP,A) 特開 平1−196675(JP,A) 特開 昭63−118989(JP,A) 特開 昭61−212895(JP,A) 特開 平4−14188(JP,A) 特開 平4−684(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06T 11/40 200

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】 図形を表わす輪郭内を塗りつぶす画像処
    理装置であって、 複数の接続されるベクトルに基づき図形の輪郭を生成す
    る輪郭生成手段と、 前記輪郭生成手段が生成した輪郭と水平走査線との奇数
    回目の交差の際に交差した画素も含めて塗りつぶしを開
    始し、前記輪郭と水平走査線との偶数回目の交差の際に
    偶数回目に交差した直前の画素までを塗りつぶす塗りつ
    ぶし手段とを有し、 前記輪郭生成手段は、現ベクトルの向きと直前のベクト
    ルの向きとを判別し、当該判別結果に応じて、前記現ベ
    クトルの開始点の部分の画素を、プロットしない、プロ
    ットする、或は前記塗りつぶし手段による塗りつぶし方
    向に1画素ずらしてプロットするように決定し、前記現
    ベクトルの開始点以外の部分の画素を前記判別結果に応
    じて、プロットしない、プロットする、或は前記塗りつ
    ぶし方向に1画素ずらしてプロットするように決定して
    輪郭を生成することを特徴とする画像処理装置。
  2. 【請求項2】 図形を表わす輪郭内を塗りつぶす画像処
    理装置であって、 複数の接続されるベクトルに基づき図形の輪郭を生成す
    る輪郭生成手段と、 前記輪郭生成手段が生成した輪郭と水平走査線との奇数
    回目の交差の際に交差した画素も含めて塗りつぶしを開
    始し、前記輪郭と水平走査線との偶数回目の交差の際に
    偶数回目に交差した直前の画素までを塗りつぶす塗りつ
    ぶし手段とを有し、 前記輪郭生成手段は、現ベクトルの向きと直後のベクト
    ルの向きとを判別し、当該判別結果に応じて、前記現ベ
    クトルの終了点の部分の画素を、プロットしない、プロ
    ットする、或は前記塗りつぶし手段による塗りつぶし方
    向に1画素ずらしてプロットするように決定し、前記現
    ベクトルの終了点以外の部分の画素を前記判別結果に応
    じて、プロットしない、プロットする、或は前記塗りつ
    ぶし方向に1画素ずらしてプロットするように決定して
    輪郭を生成することを特徴とする画像処理装置。
  3. 【請求項3】 図形を表わす輪郭内を塗りつぶす画像処
    理装置における画像処理方法であって、 複数の接続されるベクトルに基づき図形の輪郭を生成す
    る輪郭生成工程と、 前記輪郭生成工程で生成した輪郭と水平走査線との奇数
    回目の交差の際に交差した画素も含めて塗りつぶしを開
    始し、前記輪郭と水平走査線との偶数回目の交差の際に
    偶数回目に交差した直前の画素までを塗りつぶす塗りつ
    ぶし工程とを有し、 前記輪郭生成工程では、現ベクトルの向きと直前のベク
    トルの向きとを判別し、当該判別結果に応じて、前記現
    ベクトルの開始点の部分の画素を、プロットしない、プ
    ロットする、或は前記塗りつぶし工程における塗りつぶ
    し方向に1画素ずらしてプロットするように決定し、前
    記現ベクトルの開始点以外の部分の画素を前記判別結果
    に応じて、プロットしない、プロットする、或は前記塗
    りつぶし方向に1画素ずらしてプロットするように決定
    して輪郭を生成することを特徴とする画像処理方法。
  4. 【請求項4】 図形を表わす輪郭内を塗りつぶす画像処
    理装置における画像処理方法であって、 複数の接続されるベクトルに基づき図形の輪郭を生成す
    る輪郭生成工程と、 前記輪郭生成工程で生成した輪郭と水平走査線との奇数
    回目の交差の際に交差した画素も含めて塗りつぶしを開
    始し、前記輪郭と水平走査線との偶数回目の交差の際に
    偶数回目に交差した直前の画素までを塗りつぶす塗りつ
    ぶし工程とを有し、 前記輪郭生成工程では、現ベクトルの向きと直後のベク
    トルの向きとを判別し、当該判別結果に応じて、前記現
    ベクトルの終了点の部分の画素を、プロットしない、プ
    ロットする、或は前記塗りつぶし工程における塗りつぶ
    し方向に1画素ずらしてプロットするように決定し、前
    記現ベクトルの終了点以外の部分の画素を前記判別結果
    に応じて、プロットしない、プロットする、或は前記塗
    りつぶし方向に1画素ずらしてプロットするように決定
    して輪郭を生成することを特徴とする画像処理方法。
JP1363392A 1991-07-12 1992-01-29 画像処理方法及びその装置 Expired - Fee Related JP3139805B2 (ja)

Priority Applications (4)

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

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP1363392A JP3139805B2 (ja) 1992-01-29 1992-01-29 画像処理方法及びその装置

Publications (2)

Publication Number Publication Date
JPH0612497A JPH0612497A (ja) 1994-01-21
JP3139805B2 true JP3139805B2 (ja) 2001-03-05

Family

ID=11838641

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP3139805B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3403707B2 (ja) 2000-09-29 2003-05-06 松下電器産業株式会社 描画装置

Also Published As

Publication number Publication date
JPH0612497A (ja) 1994-01-21

Similar Documents

Publication Publication Date Title
KR100281949B1 (ko) 영상 드로잉 장치
EP0522877A2 (en) Image processing
JP2634851B2 (ja) 画像処理装置
JP3139805B2 (ja) 画像処理方法及びその装置
JP2770582B2 (ja) 図形塗潰し装置
JPH02270019A (ja) 高品質文字パターン発生方式
JP3130965B2 (ja) 画像処理方法及びその装置
US5428719A (en) Method and apparatus for generating high-quality pattern in accordance with an edge defining a character pattern
JPH0520466A (ja) 画像処理方法及びその装置
JPS63305478A (ja) パタ−ン情報復元装置
JPH0520468A (ja) 画像処理方法及びその装置
EP0391401A2 (en) Method and apparatus for generating high-quality pattern
JP2698170B2 (ja) 閉領域塗りつぶし表示方法
JP2773127B2 (ja) 画像編集方法
JP2613653B2 (ja) 画像処理装置
JP2634906B2 (ja) 画像処理方法
JP3129717B2 (ja) 画像処理装置および画像処理方法
JP2782904B2 (ja) 多角形塗りつぶし方式
JP2551322B2 (ja) 画像再生方法および装置
JP3692639B2 (ja) 描画処理装置
JP3089906B2 (ja) 描画装置
JP3567728B2 (ja) 画像処理方法および装置
JP2641790B2 (ja) ベクトルのラスタ変換装置
JPH0350686A (ja) 図形処理方式
JP2787487B2 (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: 20001106

LAPS Cancellation because of no payment of annual fees