JPH0612497A - 画像処理方法及びその装置 - Google Patents
画像処理方法及びその装置Info
- Publication number
- JPH0612497A JPH0612497A JP1363392A JP1363392A JPH0612497A JP H0612497 A JPH0612497 A JP H0612497A JP 1363392 A JP1363392 A JP 1363392A JP 1363392 A JP1363392 A JP 1363392A JP H0612497 A JPH0612497 A JP H0612497A
- Authority
- JP
- Japan
- Prior art keywords
- line
- contour
- edge
- scanning
- closed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Image Generation (AREA)
Abstract
(57)【要約】
【目的】 輪郭線内部を塗り潰す際に、高速で、しかも
少ないメモリ容量で意図した通りの塗り潰し結果を得る
ことを可能にする画像処理方法及びその装置を提供する
ことを目的とする。 【構成】 複数の線要素で構成された閉輪郭線内を塗り
潰す画像処理装置において、所定方向に連続する線要素
の内の注目線要素と、その注目線要素に隣接するそれぞ
れの線要素との接続関係、及びその所定方向に基づいて
これら線要素の座標を規定する2次元座標軸のいずれか
一方の座標軸に平行な走査線に対応させてその閉輪郭の
輪郭線データを生成し、これら輪郭線データを走査線方
向に走査するとき奇数番目の輪郭位置とその直後の輪郭
位置とが同じでない場合、奇数番目の輪郭位置を正転位
置とし、走査線方向の偶数番目の輪郭位置の走査線方向
隣接画素位置が反転位置を示しているとして設定する。
そして、走査線上の走査方向に対し正転位置から反転位
置の直前までを閉図形の領域内、それ以外は閉図形の領
域外であると判定して閉輪郭内を塗りつぶすように動作
する。
少ないメモリ容量で意図した通りの塗り潰し結果を得る
ことを可能にする画像処理方法及びその装置を提供する
ことを目的とする。 【構成】 複数の線要素で構成された閉輪郭線内を塗り
潰す画像処理装置において、所定方向に連続する線要素
の内の注目線要素と、その注目線要素に隣接するそれぞ
れの線要素との接続関係、及びその所定方向に基づいて
これら線要素の座標を規定する2次元座標軸のいずれか
一方の座標軸に平行な走査線に対応させてその閉輪郭の
輪郭線データを生成し、これら輪郭線データを走査線方
向に走査するとき奇数番目の輪郭位置とその直後の輪郭
位置とが同じでない場合、奇数番目の輪郭位置を正転位
置とし、走査線方向の偶数番目の輪郭位置の走査線方向
隣接画素位置が反転位置を示しているとして設定する。
そして、走査線上の走査方向に対し正転位置から反転位
置の直前までを閉図形の領域内、それ以外は閉図形の領
域外であると判定して閉輪郭内を塗りつぶすように動作
する。
Description
【0001】
【産業上の利用分野】本発明は画像処理方法及びその装
置に関し、詳しくは複数の線要素でもって構成された閉
輪郭の内部を塗り潰す画像処理方法及びその装置に関す
るものである。
置に関し、詳しくは複数の線要素でもって構成された閉
輪郭の内部を塗り潰す画像処理方法及びその装置に関す
るものである。
【0002】
【従来の技術】この種の装置においては、閉領域内部を
塗り潰すことは基本的な画像処理機能の1つであり、こ
れまで種々の塗り潰し方法が提案されている。
塗り潰すことは基本的な画像処理機能の1つであり、こ
れまで種々の塗り潰し方法が提案されている。
【0003】最も基本的な方法は、ソフトウェアによっ
てランダム・アクセス・メモリ(RAM)の各画素ライ
ン毎に塗り潰し範囲を逐一指定し、指定された範囲のラ
イン画素を塗り潰すものである。このような方法の代表
例としては、文献「Fundamentals of Interactive Comp
uter Graphics 」(J.D.FOLEY/A.VAN DAM共著 1982年Ad
dison - Wesley刊 pp.456〜460)に記載されている。
てランダム・アクセス・メモリ(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がこれに該当する。
閉図形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方向は走査線のインクリメント方
向(図示で下方向)に一致している。
バケット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参照)を空に初
期化する。
(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)の処理
に戻る。
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)の状態の推移を示したものである。
こで、図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の破線部分)という問題があっ
た。これをふまえて、輪郭描画に規則を設定して、改善
を計る提案もなされている。
単純に輪郭の描画を行うと、図8のL1,L2,L3,
L4,L5,L6のように塗り潰されるべきではない部
分が塗り潰され、塗り潰されるべき部分が塗り潰されな
い(ラインL3,L4の破線部分)という問題があっ
た。これをふまえて、輪郭描画に規則を設定して、改善
を計る提案もなされている。
【0013】例えば、特公平1−54752号公報は、
下記の5つの規則に従った輪郭画素の書き込みを開示し
ている。
下記の5つの規則に従った輪郭画素の書き込みを開示し
ている。
【0014】規則1:水平な線セグメントは書かない。
【0015】規則2:各線セグメントは各ライン当り1
画素で表す。
画素で表す。
【0016】規則3:各線ベクトルの始点は書かない。
【0017】規則4:輪郭線画素は、この画素を書込も
うとしているメモリ・アドレスに記憶されている画素デ
ータとの排他的論理和を取って、その結果を書き込む。
うとしているメモリ・アドレスに記憶されている画素デ
ータとの排他的論理和を取って、その結果を書き込む。
【0018】規則5:各線セグメントは上から下または
下から上への一方向で指定する。
下から上への一方向で指定する。
【0019】規則1は図8のラインL2やL4のよう
に、水平な輪郭線部分に含まれる輪郭画素P10〜P9
及びP11〜P1やP4〜P3によって1つのラインに
奇数個の輪郭画素が出現するのを防止している。
に、水平な輪郭線部分に含まれる輪郭画素P10〜P9
及びP11〜P1やP4〜P3によって1つのラインに
奇数個の輪郭画素が出現するのを防止している。
【0020】規則2は線セグメントの角度に関係なく、
常に1ライン当り1画素で輪郭線を表わすためのもので
ある。
常に1ライン当り1画素で輪郭線を表わすためのもので
ある。
【0021】規則3は上向きまたは下向きの頂点を除去
するものである。規則5に従って例えば上から下への一
方向で線セグメントを指定するものとすれば、規則3は
図8の上向きの頂点の輪郭線画素P5およびP6を除去
する。
するものである。規則5に従って例えば上から下への一
方向で線セグメントを指定するものとすれば、規則3は
図8の上向きの頂点の輪郭線画素P5およびP6を除去
する。
【0022】規則4および規則5は、規則3によって処
理される頂点と反対向きの頂点の輪郭線画素(この例で
はP7及びP8)を除去するものである。
理される頂点と反対向きの頂点の輪郭線画素(この例で
はP7及びP8)を除去するものである。
【0023】
【発明が解決しようとする課題】しかしながら上記従来
例のうちの前者、即ち、ソフトウェアによる方法では、
塗り潰し範囲の指定のみならず、塗り潰しの実行自体も
ソフトウェアで行われるために、処理時間がかかりすぎ
るという欠点があった。また、図9はこの従来法で図2
に示す閉図形F1に関しての処理結果を表わしたもので
あるが、この図9のP2〜P9の区間の如く、水平エッ
ジ上の各点が塗り潰されない場合が発生し、生成図形が
歪んでしまうことがあるという欠点もあった。
例のうちの前者、即ち、ソフトウェアによる方法では、
塗り潰し範囲の指定のみならず、塗り潰しの実行自体も
ソフトウェアで行われるために、処理時間がかかりすぎ
るという欠点があった。また、図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といった部分も塗り潰され
ず、生成図形に歪を生じるという欠点を有していた。
ェアにより高速に塗り潰しを行う方法では、塗り潰しの
実行速度は前者と比べて高速ではあるが、反面、全ての
輪郭線を最初に描画してしまう必要があるため、一画像
全面分の画像メモリを必要とし、コスト高を招くという
欠点があった。また、図10は、この従来法(後者)で
図2に示す閉図形F1に関して、その記載された方法で
塗り潰し範囲を決定し、同公報で推奨される方法により
塗り潰しを実行した際に得られる結果を表したものであ
るが、この方法においてもやはり、図10におけるP
5,P8のような頂点画素や、P5〜P10,P9〜P
10,P9〜P15,P11〜P1及びP1〜P12,
P13〜P3,P14〜P8といった部分も塗り潰され
ず、生成図形に歪を生じるという欠点を有していた。
【0025】また、上記従来方法等で発生した図形の歪
みを補うために、図11に示すように、塗り潰し回路に
よって塗りつぶされた領域画像データと歪補正用輪郭メ
モリに記憶された輪郭線画素とを合成回路により論理和
をとって歪みのない図形として出力する方式も試みられ
ているが、この場合は、処理に要するメモリ容量とし
て、図形を生成したメモリの他に輪郭線のみの画像を保
持する歪補正用輪郭メモリの分まで必要となったり、こ
のような輪郭線のみの画像を生成するための時間や回路
が余分に必要になったりして、やはり好ましくない。
みを補うために、図11に示すように、塗り潰し回路に
よって塗りつぶされた領域画像データと歪補正用輪郭メ
モリに記憶された輪郭線画素とを合成回路により論理和
をとって歪みのない図形として出力する方式も試みられ
ているが、この場合は、処理に要するメモリ容量とし
て、図形を生成したメモリの他に輪郭線のみの画像を保
持する歪補正用輪郭メモリの分まで必要となったり、こ
のような輪郭線のみの画像を生成するための時間や回路
が余分に必要になったりして、やはり好ましくない。
【0026】本発明は従来技術に鑑みなされたものであ
り、輪郭線内部を塗り潰す際に、高速で、しかも少ない
メモリ容量で意図した通りの塗り潰し結果を得ることを
可能にする画像処理方法及びその装置を提供しようとす
るものである。
り、輪郭線内部を塗り潰す際に、高速で、しかも少ない
メモリ容量で意図した通りの塗り潰し結果を得ることを
可能にする画像処理方法及びその装置を提供しようとす
るものである。
【0027】
【課題を解決するための手段】上記目的を達成するため
に本発明の画像処理装置は以下のような構成を備える。
即ち、複数の線要素で構成された閉輪郭線内を塗り潰す
画像処理装置において、所定方向に連続する線要素の内
の注目線要素と、前記注目線要素に隣接するそれぞれの
線要素との接続関係、及び前記所定方向に基づいて前記
線要素の座標を規定する2次元座標軸のいずれか一方の
座標軸に平行な走査線に対応させて前記閉輪郭の輪郭線
データを生成する輪郭線データ作成手段と、前記輪郭線
データを前記走査線方向に走査するとき偶数番目の輪郭
位置とその直後の輪郭位置とが同じでない場合、前記偶
数番目の走査線方向隣接画素位置を反転位置とし、前記
走査線方向の奇数番目の輪郭位置が正転位置を示してい
るとして設定する設定手段と、前記走査線上の走査方向
に対し、前記正転位置から前記反転位置の直前までを閉
図形の領域内、それ以外は閉図形の領域外であると判定
して前記閉輪郭内を塗りつぶす塗りつぶし手段とを有す
る。
に本発明の画像処理装置は以下のような構成を備える。
即ち、複数の線要素で構成された閉輪郭線内を塗り潰す
画像処理装置において、所定方向に連続する線要素の内
の注目線要素と、前記注目線要素に隣接するそれぞれの
線要素との接続関係、及び前記所定方向に基づいて前記
線要素の座標を規定する2次元座標軸のいずれか一方の
座標軸に平行な走査線に対応させて前記閉輪郭の輪郭線
データを生成する輪郭線データ作成手段と、前記輪郭線
データを前記走査線方向に走査するとき偶数番目の輪郭
位置とその直後の輪郭位置とが同じでない場合、前記偶
数番目の走査線方向隣接画素位置を反転位置とし、前記
走査線方向の奇数番目の輪郭位置が正転位置を示してい
るとして設定する設定手段と、前記走査線上の走査方向
に対し、前記正転位置から前記反転位置の直前までを閉
図形の領域内、それ以外は閉図形の領域外であると判定
して前記閉輪郭内を塗りつぶす塗りつぶし手段とを有す
る。
【0028】上記目的を達成するために本発明の画像処
理方法は以下のような工程を備える。即ち、複数の線要
素で構成された閉輪郭の内部を塗り潰す画像処理方法で
あって、所定方向に連続する線要素の内の注目線要素
と、前記注目線要素に隣接するそれぞれの線要素との接
続関係、及び前記所定方向に基づいて前記線要素の座標
を規定する2次元座標軸のいずれか一方の座標軸に平行
な走査線からみた前記閉輪郭の輪郭線データを生成する
行程と、前記輪郭線データを前記走査線方向に走査する
とき偶数番目の輪郭位置とその直後の輪郭位置とが同じ
でない場合、前記偶数番目の走査線方向隣接画素位置を
反転位置とし、前記走査線方向の奇数番目の輪郭位置が
正転位置を示しているとして設定する工程と、前記走査
線上の走査方向に対し、前記正転位置から前記反転位置
の直前までを閉図形の領域内、それ以外は閉図形の領域
外であると判定して前記閉輪郭内を塗りつぶす工程とを
有する。
理方法は以下のような工程を備える。即ち、複数の線要
素で構成された閉輪郭の内部を塗り潰す画像処理方法で
あって、所定方向に連続する線要素の内の注目線要素
と、前記注目線要素に隣接するそれぞれの線要素との接
続関係、及び前記所定方向に基づいて前記線要素の座標
を規定する2次元座標軸のいずれか一方の座標軸に平行
な走査線からみた前記閉輪郭の輪郭線データを生成する
行程と、前記輪郭線データを前記走査線方向に走査する
とき偶数番目の輪郭位置とその直後の輪郭位置とが同じ
でない場合、前記偶数番目の走査線方向隣接画素位置を
反転位置とし、前記走査線方向の奇数番目の輪郭位置が
正転位置を示しているとして設定する工程と、前記走査
線上の走査方向に対し、前記正転位置から前記反転位置
の直前までを閉図形の領域内、それ以外は閉図形の領域
外であると判定して前記閉輪郭内を塗りつぶす工程とを
有する。
【0029】
【作用】以上の構成において、所定方向に連続する線要
素の内の注目線要素と、前記注目線要素に隣接するそれ
ぞれの線要素との接続関係、及び前記所定方向に基づい
て前記線要素の座標を規定する2次元座標軸のいずれか
一方の座標軸に平行な走査線からみた前記閉輪郭の輪郭
線データを生成し、輪郭線データを前記走査線方向に走
査するとき偶数番目の輪郭位置とその直後の輪郭位置と
が同じでない場合、前記偶数番目の輪郭位置を反転位置
とし、前記走査線方向の奇数番目の輪郭位置が正転位置
を示しているとして設定する。そして、走査線上の走査
方向に対し、前記正転位置から前記反転位置の直前まで
を閉図形の領域内、それ以外は閉図形の領域外であると
判定して前記閉輪郭内を塗りつぶすように動作する。
素の内の注目線要素と、前記注目線要素に隣接するそれ
ぞれの線要素との接続関係、及び前記所定方向に基づい
て前記線要素の座標を規定する2次元座標軸のいずれか
一方の座標軸に平行な走査線からみた前記閉輪郭の輪郭
線データを生成し、輪郭線データを前記走査線方向に走
査するとき偶数番目の輪郭位置とその直後の輪郭位置と
が同じでない場合、前記偶数番目の輪郭位置を反転位置
とし、前記走査線方向の奇数番目の輪郭位置が正転位置
を示しているとして設定する。そして、走査線上の走査
方向に対し、前記正転位置から前記反転位置の直前まで
を閉図形の領域内、それ以外は閉図形の領域外であると
判定して前記閉輪郭内を塗りつぶすように動作する。
【0030】
【実施例】以下、添付図面を参照して本発明の好適な実
施例を詳細に説明する。 <動作概要の説明>先ず、本実施例における動作概要を
簡単に説明する。
施例を詳細に説明する。 <動作概要の説明>先ず、本実施例における動作概要を
簡単に説明する。
【0031】本実施例では、図形の輪郭として、所定方
向に方向付けられた輪郭を用いる。即ち、扱う図形の輪
郭を全て時計回り方向(以下、右回り)に連なるアウト
ラインベクトル(線要素)の集まり、もしくは、扱う図
形の輪郭を全て反時計回り方向(以下、左回り)に連な
るアウトラインベクトルの集まりとして表わす。ここ
で、右回りに連なるアウトラインベクトルとは、そのア
ウトラインベクトルの右側を塗り潰すと該当図形が塗り
潰されることを意味すると考えて良い(図12)。ま
た、左回りに連なるアウトラインベクトルとは、そのア
ウトラインベクトルの左側を塗り潰すと該当図形が塗り
つぶされるものである(図13)。
向に方向付けられた輪郭を用いる。即ち、扱う図形の輪
郭を全て時計回り方向(以下、右回り)に連なるアウト
ラインベクトル(線要素)の集まり、もしくは、扱う図
形の輪郭を全て反時計回り方向(以下、左回り)に連な
るアウトラインベクトルの集まりとして表わす。ここ
で、右回りに連なるアウトラインベクトルとは、そのア
ウトラインベクトルの右側を塗り潰すと該当図形が塗り
潰されることを意味すると考えて良い(図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や液晶等の表示装置であっ
ても良い。
に構成した実施例の画像処理装置のブロック図を示して
いる。図中、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に示した。
ている閉ループの数を示すデータと各閉ループを構成す
る頂点の数を示すデータ群とで構成される。ただし、各
閉ループ上の各頂点は、それぞれの閉ループ上で予め方
向づけられた順番に従って、隣合う頂点の関係を維持し
たままのデータの集まりとして表現される。この内容を
図14に示した。
【0035】先に説明したように、この実施例では、輪
郭データを所定方向に並んだデータの集まりとしてとら
えている。例えば、図2に示したのは、右回りアウトラ
インデータの例で、その輪郭データは図15に示した如
くになる。図15において、図2の閉図形F1のアウト
ラインは、A→B→C→D→E→F→G→H→I→J→
K→L→M→Aの順に、A点を開始点として右まわりに
一巡する点列として表現されている。
郭データを所定方向に並んだデータの集まりとしてとら
えている。例えば、図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
の動作処理手順を示すフローチャートで、以下にこのフ
ローチャートに従って説明する。
左上隅にあるものとし、主走査方向(右方向)を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の処理の詳細は詳しく
後述する。
始するとステップ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が記録可能状態(レデ
ィ)になるのを待つ。
置をページ内の先頭の走査線位置にセットする。即ち、
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)作成処理の詳細を
示すフローチャートである。
プ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に進んで注目頂点を更新し、次のエ
ッジの処理に移る。これらの操作を全ループの処理が終
了するまで行う。
生成しようとしているページ内に含まれる走査線(ここ
では、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 ならば水平であり、
xstart >xend ならば左向き、xstart <xend なら
ば右向きである。また、ystart >yend ならば上向
き、ystart <yend ならば下向きである。
生成規則を図19に示す。ここで、あるエッジの始点座
標を(xstart ,ystart )、終点座標を(xend ,y
end)とすると、ystart =yend ならば水平であり、
xstart >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においても同様である。
以外の部分に分割してバケットデータを生成するが、従
来例とは異なり、現エッジが水平であっても現エッジが
右向きで、直前エッジが下向きの場合(図19c)や、
現エッジが左向きで直前エッジが水平で右向きの場合
(図19e)は、現エッジの開始点をバケットデータに
する。また、現エッジが非水平である場合には、開始点
を除いたエッジバケットデータを作成する。現エッジの
開始点については、現エッジが下向きの場合は、直前エ
ッジが水平で右向きの場合と上向きの場合(図19i,
m)、現エッジが上向きの場合は直前エッジが水平で左
向きの場合と下向きの場合(図19p,q)のみバケッ
トデータにする。尚、図19において、○はバケットデ
ータを作成する場合を示し、×はバケットデータを作成
しない場合を示している。これは後述する図27〜図2
9においても同様である。
【0045】ここで、開始点のバケットデータとはエッ
ジバケットの特別な場合であり、開始点と終点の一致し
たエッジ(xmin =xmax ,ymin =ymax ,Δx=
0)とする。
ジバケットの特別な場合であり、開始点と終点の一致し
たエッジ(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 )に基づいてソーティングし直す。
たエッジバケットをエッジテーブル(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の処理内容
を説明する。
ける閉図形の輪郭の走査線と奇数番目に交差する点が、
その対応するラインバッファのメモリアドレスに、偶数
番目に交差する点が、その一画素右隣の点が対応するラ
インバッファのメモリアドレスに描画される。但し、偶
数番目に交差する点とその直後の奇数番目に交差する点
とが同一の場合、この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に通知する信
号を出力する。
された該当走査線位置にある輪郭点データに基づき、輪
郭点間の領域を塗り潰す動作を行いながら、ラインメモ
リ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個の画素が存在する場合の同期信号を示し
ている。
に示す様な同期信号を中塗り回路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に
取り込み、次のデータを作成するために保持する。この
一連の動作を画素数分繰り返すものである。
の構成例を示すブロック図である。上述の動作により、
ラインメモリ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に示す。
エッジテーブルを図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の場合となり、開始点以外
のバケットデータが生成される。
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に示
す。
ル(AET)を生成し、注目走査線をy=0より順次1
つずつ増やしていった際のAETの変化を図23に示
す。
【0054】図23のAETに従って、各走査線におい
て奇数番目のエッジバケットのxmi n の位置と、偶数番
目のエッジバケットのxmin の位置の主走査方向のすぐ
隣の画素を輪郭画素としてプロットした図を図24に示
す。
て奇数番目のエッジバケットの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座標値の画素位置と同位置となる場合
は、その双方とも描画しない位置」に該当する。従っ
て、これらの画素位置はプロットされない。これらの点
は閉図形の凹部の頂点であり、そのままプロットすると
中塗り処理後の凹部に一点だけ孤立した白画素が発生し
てしまうからである。
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のフローチャートに示し、以下に説明す
る。
内容を図26のフローチャートに示し、以下に説明す
る。
【0057】先ず、ステップS100でその一連の処理
が開始されるとステップS101に進み、アクティブエ
ッジテーブル(AET)のアクティブエッジポインタの
内容をみて、接続されるエッジバケットが存在しないこ
とを示すマーカ“λ”であるか否かを判定する。マーカ
“λ”であればステップS110に進み、本処理(手順
(2))を終了する。
が開始されるとステップS101に進み、アクティブエ
ッジテーブル(AET)のアクティブエッジポインタの
内容をみて、接続されるエッジバケットが存在しないこ
とを示すマーカ“λ”であるか否かを判定する。マーカ
“λ”であればステップS110に進み、本処理(手順
(2))を終了する。
【0058】マーカ“λ”がなければステップS102
に進み、アクティブポインタによって接続される最初の
バケットのxmin で与えられる座標値で指示される画素
位置に対応するラインメモリ3上のアドレス位置に、そ
の位置に格納されてあったビット値(0または1)と
“1”との排他的論理和で得られる値に書き換える方式
でプロットする。次にステップS103に進み、ステッ
プS102のポインタによって接続されるエッジバケッ
ト(偶数番目のエッジバケット)のxmin を参照してス
テップS104に進む。ステップS104では、ステッ
プS102で参照されたエッジバケットのポインタが、
次に接続されているエッジバケットが存在しないことを
示すマーカ“λ”であるか否かを判定し、そうでなけれ
ばステップS105に進み、そうであればステップS1
09に進む。
に進み、アクティブポインタによって接続される最初の
バケットのxmin で与えられる座標値で指示される画素
位置に対応するラインメモリ3上のアドレス位置に、そ
の位置に格納されてあったビット値(0または1)と
“1”との排他的論理和で得られる値に書き換える方式
でプロットする。次にステップS103に進み、ステッ
プS102のポインタによって接続されるエッジバケッ
ト(偶数番目のエッジバケット)のxmin を参照してス
テップS104に進む。ステップS104では、ステッ
プS102で参照されたエッジバケットのポインタが、
次に接続されているエッジバケットが存在しないことを
示すマーカ“λ”であるか否かを判定し、そうでなけれ
ばステップS105に進み、そうであればステップS1
09に進む。
【0059】ステップS109では、ステップS103
で参照したxmin で与えられる座標値の画素位置の1画
素右隣りの画素位置にステップS102と同様に排他的
論理和によるプロットを行い、ステップS110へ進
む。
で参照した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に戻って、次の
エッジバケットの処理を行っていく。
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に示す。本方式によれば、頂点画素も水平エ
ッジ上の画素も全て歪なく塗り潰される。
を、前述した如く走査線上にある奇数番目の輪郭画素か
ら偶数番目の輪郭画素の直前までを塗り潰した場合の出
力を図25に示す。本方式によれば、頂点画素も水平エ
ッジ上の画素も全て歪なく塗り潰される。
【0063】尚、以上の説明において、ymax 及びy
min は非負の整数値として扱っている。また、xmin 及
びΔxに関しては、使用に際して、十分な精度をもつ実
数データ(即ち、小数部の情報を有する)として扱って
いる。但し、走査線位置を次のラインの位置に更新する
ときのx座標は、計算では直前のエッジのx座標に算出
したΔxを加えた値となるが、メモリ上での画素は整数
位置にしかとれない。従って、Δxを足し込んで小数点
以下からキャリィが発生したときに実際のx座標は変化
する。 [第2実施例]前記第1の実施例では、アウトラインは
右回りのデータ表現をとるものとして説明したが、本発
明はこれに限るものではなく、左回りのデータ表現をと
る場合にも対応可能である。この場合のエッジバケット
の生成規則を図27に示す。このときも現エッジと前エ
ッジの向きから開始点とそれ以外のエッジの取り扱い方
を判断する。この生成規則に従ったエッジテーブル更新
の処理の流れは右回りの場合と同様である。 [第3実施例]本実施例では、現エッジを開始点とそれ
以外のエッジの分割して処理を行ったが、これを現エッ
ジを終了点とそれ以外のエッジに分割して処理を行って
もよい。この場合のエッジバケットの生成規則を図28
に示す。 [第4実施例]前述の第1実施例に対し、第2実施例で
説明したのと同様に第3実施例に対してもアウトライン
を左回りのデータ表現とすることが可能である。この場
合のエッジデータの生成規則を図29に示す。
min は非負の整数値として扱っている。また、xmin 及
びΔxに関しては、使用に際して、十分な精度をもつ実
数データ(即ち、小数部の情報を有する)として扱って
いる。但し、走査線位置を次のラインの位置に更新する
ときのx座標は、計算では直前のエッジのx座標に算出
したΔxを加えた値となるが、メモリ上での画素は整数
位置にしかとれない。従って、Δxを足し込んで小数点
以下からキャリィが発生したときに実際のx座標は変化
する。 [第2実施例]前記第1の実施例では、アウトラインは
右回りのデータ表現をとるものとして説明したが、本発
明はこれに限るものではなく、左回りのデータ表現をと
る場合にも対応可能である。この場合のエッジバケット
の生成規則を図27に示す。このときも現エッジと前エ
ッジの向きから開始点とそれ以外のエッジの取り扱い方
を判断する。この生成規則に従ったエッジテーブル更新
の処理の流れは右回りの場合と同様である。 [第3実施例]本実施例では、現エッジを開始点とそれ
以外のエッジの分割して処理を行ったが、これを現エッ
ジを終了点とそれ以外のエッジに分割して処理を行って
もよい。この場合のエッジバケットの生成規則を図28
に示す。 [第4実施例]前述の第1実施例に対し、第2実施例で
説明したのと同様に第3実施例に対してもアウトライン
を左回りのデータ表現とすることが可能である。この場
合のエッジデータの生成規則を図29に示す。
【0064】又、前記実施例では、座標の原点は画像の
左上にあるとして説明したが、これに限るものではな
い。即ち、原点の位置及び、座標の向きに応じて、前記
説明中での向きの判定法や、ymax ,ymin ,xmin ,
Δx等の扱いを変更すれば、同様の処理が可能であるこ
とは勿論である。
左上にあるとして説明したが、これに限るものではな
い。即ち、原点の位置及び、座標の向きに応じて、前記
説明中での向きの判定法や、ymax ,ymin ,xmin ,
Δx等の扱いを変更すれば、同様の処理が可能であるこ
とは勿論である。
【0065】更に前記実施例では、塗り潰し動作時の主
走査の方向を画像の左から右への方向であるとして説明
したが、これに限るものではない。走査方向がこの逆で
右から左への方向である場合には、前記アクティブエッ
ジテーブル(AET)から輪郭画素をラインバッファに
描画する際に、x座標値(xmin )が小さい方からアク
セスした時の奇数番目のx座標値に対しては、その位置
の画素の一画素隣の画素に対応するメモリアドレスに1
との排他的論理和による画素描画を行い、偶数番目のx
座標値に対しては、その位置の画素に対応するメモリア
ドレスに1との排他的論理和による画素描画を行った後
に、該メモリバッファから輪郭画素データを画像の右か
ら左の向きに対向する方向にデータを読み出して、前記
中塗り方法を実行すればよい。 [第5実施例]エッジテーブルの構成は、前述の構成に
限るものではない。即ち、ポインタバケットを図30に
示す様な2次元のリスト構造をもったデータ形成として
もよい。ポインタバケットは、そのポインタバケットか
らリスト接続されるエッジバケットのエッジのy座標の
小さい方の端点のy座標値(ymin )(これは、このポ
インタバケットから順に複数のエッジバケットがリスト
接続される場合も、それら複数のエッジのymin は全て
等しい値であることに注目)を保持する項と、y座標値
を昇順に見た場合に、リスト接続されるエッジバケット
を有するポインタバケットの中で次に来るポインタバケ
ットへのポインタの項と、そのポインタバケットに接続
されるエッジバケットへのポインタ項より構成されてい
る。図30の形式をもったポインタバケットをもった構
成したエッジテーブルの例が図31に示されている。
走査の方向を画像の左から右への方向であるとして説明
したが、これに限るものではない。走査方向がこの逆で
右から左への方向である場合には、前記アクティブエッ
ジテーブル(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 の順で、ポインタバケッ
ト列のリスト接続に追加・挿入しておくという操作を行
うようになっている。
イン図形に対して構成されるエッジテーブルを示してい
る。この様に、2次元のリスト構造をもったエッジテー
ブルも、前述の実施例とほぼ同様の手順で構成が可能で
あるが、ポインタバケット領域があらかじめ画像の走査
線数分だけ確保されているのではなく、エッジバケット
が1つ生成されるたび毎に、既存のポインタバケットの
中に該当エッジバケットの表すエッジのymin を保持す
るものがあるか否かを判定する。そして、あればそのポ
インタバケットでなるエッジバケットのリスト列に、該
当エッジバケットを追加し、なければ新たなポインタバ
ケットを生成して、そのポインタバケットにymin を格
納し、該当エッジバケットリスト接続した上で、新たに
生成ポインタバケットをymin の順で、ポインタバケッ
ト列のリスト接続に追加・挿入しておくという操作を行
うようになっている。
【0067】この様なエッジテーブルを用いての、アク
ティブエッジテーブルの生成も、前記第1実施例と同様
である。
ティブエッジテーブルの生成も、前記第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に指示信号を出力して輪郭画素より中塗りデー
タの生成・出力を行う。
採用すれば、画像の走査線本数のポインタバケット領域
を用意する必要はなくなり、特に扱う画像が大サイズの
ものであればあるほど、エッジテーブルに要するランダ
ムメモリ領域が少量で済ませられるという特有の効果を
生む。 [第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 同士を比
較するようにして実現することも可能である。
間に要する待ち時間を減少させることが可能となり、全
体としての処理を高速化できるという特有の効果を生
む。尚、この図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座標値の画素位置と同位置となる場合
は、その双方ともを描画しない」の対象に限定すること
ができる。
な針状の閉図形中の凹頂点であっても、その頂点のみを
先の手順(2)の「ただし、偶数番目のx座標値が、直
後の奇数番目のx座標値の画素位置と同位置となる場合
は、その双方ともを描画しない」の対象に限定すること
ができる。
【0071】以上説明したように本実施例によれば、注
目線要素を端点とそれ以外の部分の複数に分割して輪郭
線データを生成することにより、注目線要素とその直前
または直後の線要素のみから、少ないメモリ容量で図形
の塗り潰し処理を高速にかつ歪みなく行うことができる
という効果がある。 [第8実施例]図3の閉図形F1に対して、この第8実
施例によって得られたエッジテーブルを図36に示す。
図35はこの時の規則を示している。即ち、前述図16
のステップS5において、図35に示した規則に従って
前述した図3に示す閉図形に基づく各エッジに対するデ
ータを作成する。
目線要素を端点とそれ以外の部分の複数に分割して輪郭
線データを生成することにより、注目線要素とその直前
または直後の線要素のみから、少ないメモリ容量で図形
の塗り潰し処理を高速にかつ歪みなく行うことができる
という効果がある。 [第8実施例]図3の閉図形F1に対して、この第8実
施例によって得られたエッジテーブルを図36に示す。
図35はこの時の規則を示している。即ち、前述図16
のステップS5において、図35に示した規則に従って
前述した図3に示す閉図形に基づく各エッジに対するデ
ータを作成する。
【0072】このエッジテーブルの作成処理は図17の
フローチャートで示されており、これは前述の説明とほ
ぼ同様であるが、ステップS54の処理において異なる
部分を以下に説明する。
フローチャートで示されており、これは前述の説明とほ
ぼ同様であるが、ステップS54の処理において異なる
部分を以下に説明する。
【0073】まず、現エッジが水平エッジ、即ち、現エ
ッジの向きが左向きであるか又は右向きである場合は、
このエッジに対してはバケットデータは生成せず、エッ
ジテーブルも更新しない。従って、図35には表記して
いない。現エッジが上向き、もしくは下向きの時には、
前エッジデータの内容によって始1〜始10及び終1〜
終10の場合に分けて考える。図35において、始点の
状態の欄には現エッジを実線矢印で、前エッジを破線矢
印で、矢印の向きはそれぞれのエッジの向きを示し、各
エッジの斜線で示される側が、塗りつぶされるべき領域
であることを示している。また、終点の状態欄には現エ
ッジを実線矢印で、次エッジを破線矢印で、矢印の向き
はそれぞれのエッジの向きを示し、各エッジの斜線で示
される側が塗りつぶされる領域であることを示してい
る。
ッジの向きが左向きであるか又は右向きである場合は、
このエッジに対してはバケットデータは生成せず、エッ
ジテーブルも更新しない。従って、図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)は、現エッジの始点は実際よりも一走
査線だけ現エッジに沿って終点側に移動した点にあると
してバケットデータを作成する。
現エッジが上向きである場合(始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であると判定することにする。
〜始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であると判定することにす
る。
〜終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であると判定することにする。
〜終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に関する説明と同様の処理を行う。
ォーマットのバケットデータが現エッジに対して生成さ
れる。こうして次にステップS55に進み、前述の図1
6に関する説明と同様の処理を行う。
【0080】尚、図16におけるステップS7の注目走
査線輪郭生成処理において、前述第1実施例と比べて
(2)項のみが異なる。即ち、(2)アクティブエッジ
テーブル(AET)のx座標値(xmin )が小さいほう
からアクセスして、x座標値の位置にある画素に対応す
るラインメモリ3のアドれに保持される値を、そのアド
レスに格納されていたビット値(0又は1)と“1”と
の排他的論理和をとって書き換える。
査線輪郭生成処理において、前述第1実施例と比べて
(2)項のみが異なる。即ち、(2)アクティブエッジ
テーブル(AET)のx座標値(xmin )が小さいほう
からアクセスして、x座標値の位置にある画素に対応す
るラインメモリ3のアドれに保持される値を、そのアド
レスに格納されていたビット値(0又は1)と“1”と
の排他的論理和をとって書き換える。
【0081】これ以外の項目については前述の第1実施
例と同様である。このようにして、ステップS7で、そ
の時点の注目走査線における閉図形の領域の変化点のみ
がラインバッファのメモリアドレスに描画される。
例と同様である。このようにして、ステップS7で、そ
の時点の注目走査線における閉図形の領域の変化点のみ
がラインバッファのメモリアドレスに描画される。
【0082】こうして図3の閉図形に対して求められた
エッジテーブルデータの例を図36に示す。
エッジテーブルデータの例を図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に該当している。
ジ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に示す。
ブル(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に対しての
輪郭画素である。
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”との排他的論理和で得ら
れる値に書き換える方法であるので、結局はプロットさ
れない状態に戻ることになる。
は、エッジe3,e4の両方の輪郭画素としてプロット
される。このプロット方法は、前述したように対応する
ラインメモリ3のアドレス位置に既に格納されてあった
ビット値(0又は1)と“1”との排他的論理和で得ら
れる値に書き換える方法であるので、結局はプロットさ
れない状態に戻ることになる。
【0087】図39は、図38に示す輪郭データを走査
線上にある奇数番目の輪郭画素から偶数番目までの輪郭
がその直前までを塗りつぶした場合の出力を示す図であ
る。このように、この第8実施例の方式によれば、輪郭
上の頂点画素も水平エッジ上の画素も全て塗りつぶされ
ることになる。
線上にある奇数番目の輪郭画素から偶数番目までの輪郭
がその直前までを塗りつぶした場合の出力を示す図であ
る。このように、この第8実施例の方式によれば、輪郭
上の頂点画素も水平エッジ上の画素も全て塗りつぶされ
ることになる。
【0088】尚、前述した第8実施例では、図35に示
したエッジバケットの生成規則中、ケース始1とケース
終1、及びケース始8とケース終8の各組に対して次の
ように規則を変更しても良い。ケース始1:現エッジの
始点“つめないでそのまま”として、かつケース終1:
現エッジの終点“1走査線だけつめる”とする。また、
ケース始8:現エッジの始点“1画素右シフト1走査線
だけつめる”としてかつケース終8:現エッジの終点
“1画素右シフト、つめないでそのまま”とする。以上
の変更は、上向き同士または下向き同士の連続する2つ
のアウトラインエッジに共有されている頂点は、その頂
点を終点とするエッジ上の点としてのみ処理されるか、
或いはその頂点を始点とするエッジ上の点としてのみ処
理されるかのいずれでも良いことを暗示し、双方のエッ
ジ上の点として処理されたり、いずれのエッジ上の点で
もないとされることなく処理されれば、いずれでも良い
ことを意味していると考えることができる。
したエッジバケットの生成規則中、ケース始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走査線だけつめる”としても良い。
示した変形例と同様に、図41においても、ケース始1
1とケース終11、及びケース始18とケース終18が
それぞれ組み合わされて、ケース始11:エッジの始点
は“1画素右シフト1走査線だけつめる”とし、かつケ
ース終11:エッジの終点は“1画素右シフトつめない
でそのまま”とする。又、ケース始18:エッジの始点
は“つめないでそのまま”とし、かつケース終18:エ
ッジの終点は“1走査線だけつめる”としても良い。
【0091】又、前述の図30の場合と同様のポインタ
バケットのデータ構成により構成された、図3に示す閉
図形に対するエッジテーブルの一例を図40に示す。こ
れらの図に関する説明は、前述の図30及び図31に関
する説明を参照されたい。
バケットのデータ構成により構成された、図3に示す閉
図形に対するエッジテーブルの一例を図40に示す。こ
れらの図に関する説明は、前述の図30及び図31に関
する説明を参照されたい。
【0092】以上説明したようにこの第8実施例によれ
ば、注目線要素とその前後の線要素とから画素の変化点
に基づく輪郭線データを生成することにより、図形の塗
りつぶし処理を小さいメモリ容量で高速に、かつ歪みな
く行うことができる効果がある。
ば、注目線要素とその前後の線要素とから画素の変化点
に基づく輪郭線データを生成することにより、図形の塗
りつぶし処理を小さいメモリ容量で高速に、かつ歪みな
く行うことができる効果がある。
【0093】[実施例9]この第9実施例では、図17
のステップS54及びS55の処理を、図42に示すバ
ケットデータの生成規則に則って行う。前述第1実施例
で説明した図17の処理において、この第9実施例の処
理で異なる部分について説明する。まず、ステップS5
4の注目エッジデータ作成処理を説明する。
のステップ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 ならば下向きである。
ッジの始点座標を(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画素右にシフトしてバケットデータを作成する。
を開始点とし、それ以外の部分に分割してバケットデー
タを生成するが、従来例とは異なり、現エッジが水平で
あってもバケットデータを作成する必要がある。現エッ
ジが右向きで、直前エッジが水平で左向きの場合(図4
2b)や、現エッジが左向きで直前エッジが上向きの場
合(図42h)は、現エッジの開始点をそのままバケッ
トデータにする。又、現エッジが右向きで直前エッジが
下向きの場合(図42c)や、現エッジが左向きで直前
エッジが水平で右向きの場合(図42e)には、開始点
を1画素右にシフトしてバケットデータを作成する。
【0097】また、現エッジが非水平である場合には、
現エッジが上向きであるならば開始点を除いたエッジの
バケットデータを作成し、下向きであるならば開始点を
除いたエッジを1画素右にシフトしてバケットデータを
作成する。開始点については現エッジが下向きの場合に
は直前エッジが水平で右向きであるならば、開始点を1
画素右シフトしてバケットデータを作成する。又、直前
エッジが上向きであるならば直前エッジのx増分と現エ
ッジのx増分との和が“0”又は正の時、開始点を1画
素右にシフトしてバケットデータを作成する。一方、そ
の和が負の時には開始点をそのままバケットデータにす
る。又、現エッジが上向きの場合には、直前エッジが水
平で左向きであるならば開始点をバケットデータにし、
直前エッジが下向きであるならば直前エッジのx増分と
現エッジの増分との和が正の時は開始点を1画素右にシ
フトしてバケットデータを作成し、“0”又は負の時は
開始点をそのままバケットデータにする。こうして図1
7のステップS55に進む。これ以降の処理は前述の説
明と同様であるので省略する。
現エッジが上向きであるならば開始点を除いたエッジの
バケットデータを作成し、下向きであるならば開始点を
除いたエッジを1画素右にシフトしてバケットデータを
作成する。開始点については現エッジが下向きの場合に
は直前エッジが水平で右向きであるならば、開始点を1
画素右シフトしてバケットデータを作成する。又、直前
エッジが上向きであるならば直前エッジのx増分と現エ
ッジのx増分との和が“0”又は正の時、開始点を1画
素右にシフトしてバケットデータを作成する。一方、そ
の和が負の時には開始点をそのままバケットデータにす
る。又、現エッジが上向きの場合には、直前エッジが水
平で左向きであるならば開始点をバケットデータにし、
直前エッジが下向きであるならば直前エッジのx増分と
現エッジの増分との和が正の時は開始点を1画素右にシ
フトしてバケットデータを作成し、“0”又は負の時は
開始点をそのままバケットデータにする。こうして図1
7のステップS55に進む。これ以降の処理は前述の説
明と同様であるので省略する。
【0098】図3の閉図形F1に対して、この第9実施
例によって得られたエッジテーブルを図43に示す。図
42はこの時の規則を示している。
例によって得られたエッジテーブルを図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の
場合で、開始点以外のエッジのバケットデータが生成さ
れる。
画素右にシフトした開始点と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に示す。
ブエッジテーブル(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”との排他的論理和で求め
られる値に書き換える方法であるので、結局プロットさ
れない状態に戻ることになる。
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実施例による方式によれば、
輪郭上の頂点画素も水平エッジ上の画素も全て塗りつぶ
される。
線上にある奇数番目の輪郭画素から偶数番目までの輪郭
がその直前までを塗りつぶした場合の出力を示す図であ
る。このように、この第9実施例による方式によれば、
輪郭上の頂点画素も水平エッジ上の画素も全て塗りつぶ
される。
【0103】尚、前述の実施例では、アウトラインは右
回りのデータ表現をとるものとして説明したが、本発明
はこれに限定されるものでなく、左回りのデータ表現を
とる場合にも対応可能である。この場合のエッジバケッ
トの生成規則を図48に示す。この時も現エッジと前エ
ッジの向きから開始点とそれ以外のエッジの取り扱い方
を判断する。この生成規則に従ったエッジテーブル更新
の処理の流れは前述した右回りの場合の処理と同様であ
る。
回りのデータ表現をとるものとして説明したが、本発明
はこれに限定されるものでなく、左回りのデータ表現を
とる場合にも対応可能である。この場合のエッジバケッ
トの生成規則を図48に示す。この時も現エッジと前エ
ッジの向きから開始点とそれ以外のエッジの取り扱い方
を判断する。この生成規則に従ったエッジテーブル更新
の処理の流れは前述した右回りの場合の処理と同様であ
る。
【0104】又、この第9実施例では、現エッジを開始
点とそれ以外のエッジに分割して処理を行ったが、これ
を現エッジを終了点とそれ以外のエッジに分割して処理
を行っても良い。この場合のエッジバケットの生成規則
を図49に示す。
点とそれ以外のエッジに分割して処理を行ったが、これ
を現エッジを終了点とそれ以外のエッジに分割して処理
を行っても良い。この場合のエッジバケットの生成規則
を図49に示す。
【0105】又、更に、図48の場合と同様に、図49
の終了点に対しても左回りのデータ表現をとることが可
能である。この場合のエッジバケットの生成規則を図5
0に示す。
の終了点に対しても左回りのデータ表現をとることが可
能である。この場合のエッジバケットの生成規則を図5
0に示す。
【0106】又、前述の実施例と同様に、この第9実施
例に対しても、図30に示すような2次元のリスト構造
を有するデータ形式としても良い。この場合、図3に示
されたアウトライン図形に対して構成されるエッジテー
ブルを図47に示している。以上説明したようにこの第
9実施例によれば、注目線要素を端点とそれ以外の部分
というように複数に分割して画素の変化点に基づく輪郭
線データを生成することにより、注目線要素とその直前
又は直後の線要素に応じて少ないメモリ容量で高速にか
つ歪みなく図形の塗りつぶし処理を行うことができる。
例に対しても、図30に示すような2次元のリスト構造
を有するデータ形式としても良い。この場合、図3に示
されたアウトライン図形に対して構成されるエッジテー
ブルを図47に示している。以上説明したようにこの第
9実施例によれば、注目線要素を端点とそれ以外の部分
というように複数に分割して画素の変化点に基づく輪郭
線データを生成することにより、注目線要素とその直前
又は直後の線要素に応じて少ないメモリ容量で高速にか
つ歪みなく図形の塗りつぶし処理を行うことができる。
【0107】尚、本発明は複数の機器から構成されるシ
ステムに適用しても、1つの機器からなる装置に適用し
ても良い。また、本発明はシステム或は装置に、本発明
を実施するプログラムを供給することによって達成され
る場合にも適用できることは言うまでもない。
ステムに適用しても、1つの機器からなる装置に適用し
ても良い。また、本発明はシステム或は装置に、本発明
を実施するプログラムを供給することによって達成され
る場合にも適用できることは言うまでもない。
【0108】
【発明の効果】以上説明したように本発明によれば、少
ないメモリ容量で高速にしかも歪みなく図形を塗りつぶ
すことができる効果がある。
ないメモリ容量で高速にしかも歪みなく図形を塗りつぶ
すことができる効果がある。
【図1】ラスタ走査型のビデオプリンタ用に構成した実
施例の画像処理装置の構成を示すブロック図である。
施例の画像処理装置の構成を示すブロック図である。
【図2】アウトライン閉図形データの一例を示す図であ
る。
る。
【図3】実施例で用いる右回りアウトライン図形データ
の例を示す図である。
の例を示す図である。
【図4】エッジバケットデータのデータフォーマットを
示す図である。
示す図である。
【図5】従来法による図2のエッジテーブル(ET)を
説明するための図である。
説明するための図である。
【図6】従来法によるy=14のアクティブエッジテー
ブル(AET)を説明するための図である。
ブル(AET)を説明するための図である。
【図7】従来法によるアクティブエッジテーブル(AE
T)の推移を説明するための図である。
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)の説明図である。
ッジテーブル(ET)の説明図である。
【図23】第1の実施例のアクティブエッジテーブル
(AET)の推移を説明するための図である。
(AET)の推移を説明するための図である。
【図24】第1の実施例による図3の図形に対する輪郭
画素出力の説明図である。
画素出力の説明図である。
【図25】第1の実施例における図3の図形の処理結果
の説明図である。
の説明図である。
【図26】図16における注目線輪郭部生成処理の一部
を説明するためのフローチャートである。
を説明するためのフローチャートである。
【図27】第2の実施例における左回りのアウトライン
に対するバケットデータ生成規則を示す図である。
に対するバケットデータ生成規則を示す図である。
【図28】第3の実施例における注目エッジを終了点と
それ以外のエッジに分割する場合の右回りのアウトライ
ンに対するバケットデータ生成規則を示す図である。
それ以外のエッジに分割する場合の右回りのアウトライ
ンに対するバケットデータ生成規則を示す図である。
【図29】第4の実施例における注目エッジを終了点と
それ以外のエッジに分割する場合の左回りのアウトライ
ンに対するバケットデータ生成規則を示す図である。
それ以外のエッジに分割する場合の左回りのアウトライ
ンに対するバケットデータ生成規則を示す図である。
【図30】第5の実施例におけるポインタバケットのデ
ータフォーマットを示す図である。
ータフォーマットを示す図である。
【図31】第5の実施例に従って作成された図3の図形
のエッジテーブル(ET)を説明した図である。
のエッジテーブル(ET)を説明した図である。
【図32】第6の実施例のラスタ走査型のビデオプリン
タ用に構成した画像処理装置の概略構成を示すブロック
図である。
タ用に構成した画像処理装置の概略構成を示すブロック
図である。
【図33】
【図34】第7の実施例で得られる結果の特徴を説明す
るための図である。
るための図である。
【図35】本発明の第8実施例のバケットデータの生成
規則を示す図である。
規則を示す図である。
【図36】第8実施例に従って図3の図形に基づくエッ
ジテーブル(ET)を作成した例を示す図である。
ジテーブル(ET)を作成した例を示す図である。
【図37】図36のエッジテーブルより作成されたアク
ティブエッジテーブル(AET)を説明するための図で
ある。
ティブエッジテーブル(AET)を説明するための図で
ある。
【図38】第8実施例による図3の図形に対する輪郭画
素出力例を示す図である。
素出力例を示す図である。
【図39】第8実施例による図3の図形に対する処理結
果を示す図である。
果を示す図である。
【図40】第8実施例の他の実施例における図3に示す
閉図形に対するエッジテーブルの一例を示す図である。
閉図形に対するエッジテーブルの一例を示す図である。
【図41】第8実施例の変形例における左回りのアウト
ラインに対するバケットデータの生成規則を示す図であ
る。
ラインに対するバケットデータの生成規則を示す図であ
る。
【図42】本発明の第9実施例のバケットデータの生成
規則を示す図である。
規則を示す図である。
【図43】第9実施例において図3の図形に基づいて作
成されたエッジテーブルを示す図である。
成されたエッジテーブルを示す図である。
【図44】図43のエッジテーブルより作成されたアク
ティブエッジテーブル(AET)のデータ構成を示す図
である。
ティブエッジテーブル(AET)のデータ構成を示す図
である。
【図45】第9実施例における図3の図形に対する輪郭
画素出力を説明するための図である。
画素出力を説明するための図である。
【図46】第9実施例における図3の図形に対する処理
結果を説明した図である。
結果を説明した図である。
【図47】第9実施例の変形例における図3の図形のエ
ッジテーブル(ET)の説明図である。
ッジテーブル(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 マルチプレクサ
Claims (8)
- 【請求項1】 複数の線要素で構成された閉輪郭の内部
を塗り潰す画像処理方法であって、 所定の方向に連続する線要素の内の注目線要素と、前記
注目線要素に隣接するそれぞれの線要素との接続関係、
及び前記所定方向に基づいて、前記線要素の座標を規定
する2次元座標軸のいずれか一方の座標軸に平行な走査
線からみた前記閉輪郭の輪郭線データを生成する工程
と、 前記輪郭線データを前記走査線方向に走査するとき偶数
番目の輪郭位置とその直後の輪郭位置が同じでない場
合、前記偶数番目の走査線方向隣接画素位置を反転位置
とし、前記走査線方向の奇数番目の輪郭位置が正転位置
を示しているとして設定する工程と、 前記走査線上の走査方向に対し、前記正転位置から前記
反転位置の直前までを閉図形の領域内、それ以外は閉図
形の領域外であると判定して前記閉輪郭内を塗り潰す工
程と、 を備えることを特徴とする画像処理方法。 - 【請求項2】 輪郭線データを生成する工程は、注目線
要素と前記注目線要素に隣接する線要素との接続関係か
ら、前記注目線要素を複数の領域に分割して処理を行な
うことを特徴とする請求項1記載の画像処理方法。 - 【請求項3】 複数の線要素で構成された閉輪郭の内部
を塗り潰す画像処理装置において、 所定の方向に連続する線要素の内の注目線要素と、前記
注目線要素に隣接するそれぞれの線要素との接続関係、
及び前記所定方向に基づいて、前記線要素の座標を規定
する2次元座標軸のいずれか一方の座標軸に平行な走査
線に対応させて前記閉輪郭の輪郭線データを生成する輪
郭線データ作成手段と、 前記輪郭線データを前記走査線方向に走査するとき偶数
番目の輪郭位置とその直後の輪郭位置が同じでない場
合、前記偶数番目の走査線方向隣接画素位置を反転位置
とし、前記走査線方向の奇数番目の輪郭位置が正転位置
を示しているとして設定する設定手段と、 前記走査線上の走査方向に対し、前記正転位置から前記
反転位置の直前までを閉図形の領域内、それ以外は閉図
形の領域外であると判定して前記閉輪郭内を塗り潰す塗
り潰し手段と、 を有することを特徴とする画像処理装置。 - 【請求項4】 輪郭線データ作成手段は、注目線要素と
前記注目線要素に隣接する線要素との接続関係から、前
記注目線要素を複数の領域に分割して処理を行なうこと
を特徴とする請求項3記載の画像処理装置。 - 【請求項5】 複数の線要素で構成された閉輪郭の内部
を塗り潰す画像処理方法であって、 所定の方向に連続する線要素の内の注目線要素と、前記
注目線要素に隣接するそれぞれの線要素との接続関係、
及び前記所定方向に基づいて、前記線要素の座標を規定
する2次元座標軸のいずれか一方の座標軸に平行な走査
線からみた前記閉輪郭の輪郭線データを前記走査線方向
に走査するとき奇数番目の輪郭位置を前記閉領域内と
し、偶数番目の輪郭位置を前記閉領域外として生成する
工程と、 前記輪郭線データを前記走査線方向に走査するときの輪
郭位置を前記領域内外の変化位置として設定する工程
と、 前記走査線上の走査方向に対し、前記奇数番目の輪郭位
置より前記偶数番目の輪郭位置の直前の画素位置までを
閉図形の領域内、それ以外は閉図形の領域外であると判
定して前記閉輪郭内を塗り潰す工程と、 を備えることを特徴とする画像処理方法。 - 【請求項6】 輪郭線データを生成する工程は、注目線
要素と前記注目線要素に隣接する線要素との接続関係か
ら、前記注目線要素を複数の輪郭線データに分割して処
理を行なうことを特徴とする請求項5記載の画像処理方
法。 - 【請求項7】 複数の線要素で構成された閉輪郭の内部
を塗り潰す画像処理装置において、 所定の方向に連続する線要素の内の注目線要素と、前記
注目線要素に隣接するそれぞれの線要素との接続関係、
及び前記所定方向に基づいて前記線要素の座標を規定す
る2次元座標軸のいずれか一方の座標軸に平行な走査線
からみた前記閉輪郭の輪郭線データを前記走査線方向に
走査するとき奇数番目の輪郭位置を前記閉領域内とし、
偶数番目の輪郭位置を前記閉領域外として生成する手段
と、 前記輪郭線データを前記走査線方向に走査するときの輪
郭位置を前記領域内外の変化位置として設定する手段
と、 前記走査線上の走査方向に対し、前記奇数番目の輪郭位
置より前記偶数番目の輪郭位置の直前の画素位置までを
閉図形の領域内、それ以外は閉図形の領域外であると判
定して前記閉輪郭内を塗り潰す手段と、 を備えることを特徴とする画像処理装置。 - 【請求項8】 輪郭線データ作成手段は、注目線要素と
前記注目線要素に隣接する線要素との接続関係から、前
記注目線要素を複数の輪郭線データに分割して処理を行
なうことを特徴とする請求項5記載の画像処理装置。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1363392A JP3139805B2 (ja) | 1992-01-29 | 1992-01-29 | 画像処理方法及びその装置 |
US07/912,970 US5561534A (en) | 1991-07-12 | 1992-07-10 | Image processing method and apparatus |
DE69227073T DE69227073D1 (de) | 1991-07-12 | 1992-07-10 | Bildverarbeitung |
EP92306374A EP0522877B1 (en) | 1991-07-12 | 1992-07-10 | Image processing |
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 true JPH0612497A (ja) | 1994-01-21 |
JP3139805B2 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) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7015923B2 (en) | 2000-09-29 | 2006-03-21 | Matsushita Electric Industrial Co., Ltd. | Apparatus for painting figure |
-
1992
- 1992-01-29 JP JP1363392A patent/JP3139805B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7015923B2 (en) | 2000-09-29 | 2006-03-21 | Matsushita Electric Industrial Co., Ltd. | Apparatus for painting figure |
Also Published As
Publication number | Publication date |
---|---|
JP3139805B2 (ja) | 2001-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP0522877B1 (en) | Image processing | |
JP2634851B2 (ja) | 画像処理装置 | |
JP3139805B2 (ja) | 画像処理方法及びその装置 | |
JP3130965B2 (ja) | 画像処理方法及びその装置 | |
JPH0520466A (ja) | 画像処理方法及びその装置 | |
JPH09120450A (ja) | 画像処理装置 | |
JPH0520468A (ja) | 画像処理方法及びその装置 | |
JPS63305478A (ja) | パタ−ン情報復元装置 | |
JP2613653B2 (ja) | 画像処理装置 | |
JP2773127B2 (ja) | 画像編集方法 | |
JP2610825B2 (ja) | 図形処理装置 | |
JPH0540831A (ja) | 図形処理装置および図形処理方法 | |
JP3493745B2 (ja) | 図形描画装置 | |
JP3089906B2 (ja) | 描画装置 | |
JP2782904B2 (ja) | 多角形塗りつぶし方式 | |
JP2634906B2 (ja) | 画像処理方法 | |
JP3567728B2 (ja) | 画像処理方法および装置 | |
JP2551322B2 (ja) | 画像再生方法および装置 | |
JPH0350686A (ja) | 図形処理方式 | |
JP3692639B2 (ja) | 描画処理装置 | |
JP2641790B2 (ja) | ベクトルのラスタ変換装置 | |
JP2002366962A (ja) | 描画装置及び描画方法 | |
JP3350324B2 (ja) | キャラクタ出力装置 | |
JP3567727B2 (ja) | 画像処理方法および装置 | |
JP3603589B2 (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 |