JPH0322188A - 図形イメージをラスタ化して表現する方法 - Google Patents

図形イメージをラスタ化して表現する方法

Info

Publication number
JPH0322188A
JPH0322188A JP2146060A JP14606090A JPH0322188A JP H0322188 A JPH0322188 A JP H0322188A JP 2146060 A JP2146060 A JP 2146060A JP 14606090 A JP14606090 A JP 14606090A JP H0322188 A JPH0322188 A JP H0322188A
Authority
JP
Japan
Prior art keywords
state
pixel
pixels
frame buffer
states
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.)
Pending
Application number
JP2146060A
Other languages
English (en)
Inventor
Steven J Harrington
スティーヴン ジェイ ハーリントン
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.)
Xerox Corp
Original Assignee
Xerox Corp
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 Xerox Corp filed Critical Xerox Corp
Publication of JPH0322188A publication Critical patent/JPH0322188A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 産業上の利用分野 本発明は、電子プリンタ、より詳細にはラスタ印刷にお
いて図形イメージを表現する改良された方法に関するも
のである。
従来の技術 今日のコンピュータグラフィックスはフレームバッファ
を基礎にしている。フレームバッファは作戒するイメー
ジの内部情報を提供する。イメージは色のついた点すな
わち画素のラスタパターンとして表示される。フレーム
バッファは、表示装置の各点のためのデータエントリと
して仕切られたメモリのブロックであり、通例は、ラス
タと一致してtJ!威される。ある画素に対応するフレ
ームバッファ要素内のデータは、その画素の色を記述す
る。フレームバッファとラスタ図形処理の開発によって
、べた黒領域(多角形など)を記述し、像形威すること
が現実のものになった。しかし、多角形を表示するには
、最初に多角形を定義した表現(通例は、頂点のリスト
であり、そのリストから境界を構成する線分を導くこと
ができる)を、フレームバッファが要求するフォーマッ
ト(多角形で囲まれた画素の集合)へ変換しなければな
らない。これはラスタ化(ラスタリゼーション)すなわ
ち走査変換と呼ばれ、幾つかの手法が提案されている。
第1の手法(核塗りつぶし法と呼ばれる)は、バックグ
ラウンド以外のある色を用いて、フレームバッファ内に
多角形の境界を描く方法である。
この手法は、第1図に示すように、多角形の中にあると
わかっているいる点(種すなわち核)から出発し、境界
に達するまで、隣接する画素の色を変えることによって
領域を塗りつぶしていく。この手法は重なった多角形を
累積するのに使用できるが、孤立した領域をアクセスす
るには、多数の核が必要になることがある。核点を見つ
けることは、難しいしまた費用もかかる。
アルゴリズムの第2の手法は、奇数偶数法と呼ばれる。
もしラスタが左から右へ走査されれば、左と右の境界(
各走査線上の区域を塗りつぶす最左端の点と最右端の点
)を痛くことにより、多角形を構戒することができる.
左右の境界を描いた後、境界を含む区域を走査すること
ができる。そのとき、交差する辺に注目する。第2図に
示すように、もしある画素に達するまでに偶数の辺と交
差すれば、その画素は多角形の内側として着色される。
もし奇数の辺と交差すれば、その画素は多角形の外側に
あるので、着色されない。この手法は、核点を必要とし
ないが、多数の重なった多角形を取り扱うには、2つの
フレームバッファ(または、各画素ごとに少なくとも3
つの考えられる状態を1つのバッファ)が必要である。
この手法は境界を描いて画素が与えられた多角形の内部
にあるかどうかを判定するために第1フレームバッファ
を使用し、複合イメージを実際に累積するために第2フ
レームバッファを使用する。各多角形を構或する間に、
第1フレームバッファをクリヤしなければならないこと
に留意されたい。
第3の手法は、順序付き辺りストを基礎とするものであ
る。この手法は上記の奇数偶数法に関係があるが、境界
を描くための第2のフレームバッファを必要としない。
代わりに、境界或分の分析的記述が記憶される。境界は
、走査線との交差を容易に計算できる形で表現しなけれ
ばならない。
境界は、通例、直線の辺セグメントに分解され、それら
の最小走査線端点によって走査線順に分類される。次に
各走査線ごとに、辺との交差が計算され、走査内のそれ
らの順序に分類される。次にこれらの点はその走査線に
ついて内部画素の境界として使用される。奇数偶数法の
場合と同様に、もし画素の境界点が、第3図に示すよう
に、走査線上のある画素に達するのに奇数の境界点と交
差すれば、その画素は内部にあるとみなされる。この手
法は第2のフレームバッファを必要としないが、走査線
の数に変化がなく、走査線順に生成することができる辺
記述を持つ領域に限定される。
さらに、この手法は、多角形の辺セグメントに分解し、
分類する面倒な処理が必要である。
また従来の技術として米国特許第4,815,(16)
0号は、複数のベクトルで定義されるイメージの輪郭を
塗りつぶし、その輪郭を1組の台形に変換するアルゴリ
ズムを開示している。すべての区域は、巻き数(win
ding number)を有している。巻き数は最初
0にセットされる。ベクトルが走査線内で交差するたび
にカウンタを増分および減分する手段が、区域の巻き数
を判定する。奇数または非ゼロ巻き数をもつすべての区
域は、選択した判定方法に従って、輪郭内にあるとみな
されて塗りつぶされる。この手法は、非ゼロ巻き数によ
って定義される対象を取り扱う1つの方法を提供するが
、そのような対象を取り扱うには、対象の広範な分析が
必要である。この手法が有効に使用できるのは、平坦な
辺を持つ対象だけであろう。さらに、もし台形が予想し
た通りに塗りつぶされても、対象を処理するために、そ
の区域についてあらゆる画素を記憶する必要がある。
米国特許第4,554,538号は、重なったイメージ
のためのマルチレベルラスタ走査式表示装置を開示して
いる。ディジタルメモリは、表示画面を駆動するために
ラスタ走査信号によって読み出されるワードを記憶する
。適切な記憶場所を選択的に増分または減分することに
よって、表示するイメージの要素が溝かれ、移動され、
または消去される。これにより、下のイメージの内容に
影響を及ぼさずに上のイメージを置き直すことができる
しかし、この装置は、対象がその周囲でなく、その区域
によってエントリされるので、非常に多くの画素を変更
する必要がある。また、この装置は、起こるであろう重
なった対象の最大数をカウントする十分なビットを各画
素に与えるため、非常に多くの記憶装置を必要とする。
一般に、先行特許文献に開示されている塗りつぶしアル
ゴリズムは、すべて、奇数の巻き数によって多角形の内
部を定義することを基礎としている。点に関する巻き数
は、その点が多角形の境界をトレースする回数である。
もし点に達するのに奇数の境界と交差すれば、その点が
内部にあると定義することは、内部の点は奇数の巻き数
を有すると定義することに等しい。しかし、多角形の内
部について、別の定義がある。もし点が非ゼロ巻き数を
有すれば、その点は内部にあると定義することができる
、すなわち正の巻き数を内部の定義として使用すること
ができる。Interpress  やPostScr
iptなどのページ記述言語は、この非ゼロ巻き数や奇
数巻き数の取決めをサポートする。
上記2つの定義は、多角形が自己交差している場合また
は幾つかの多角形が重なっている場合、異なる結果が生
じる。奇数巻き数で定義される2つの多角形の境界が交
差している場合には、 第4a図に示すように、両方に
共通な区域のパリティは奇数から偶数に変わる。この結
果、共通区域は2度塗りつぶされずに、まったく塗りつ
ぶされない。この理由で、奇数偶数法は各多角形を個別
にラスタ化しなければならないし、またメージを累算す
るための第2のフレームバッファを必要とするのである
もし正の巻き数を使用すれば、重なった内部はより大き
な巻き数を有し、第4b図に示すように、塗りつぶされ
る。このように、多角形を正の巻き数で定義すれば、数
個の多角形について境界を集め、それらの内部を走査線
による1回の掃引で塗りつぶすことができる。順序付き
辺りスト法を、非ゼロ巻き数で定義される多角形に適合
させるには、多角形の境界を反時計まわりにたどるとき
、辺に沿って上方または下方に動くかに従って、一1ま
たは+1の方向数(direcLion number
)を与える必要がある。走査線に沿って進み、境界と交
差したとき、交差した辺の方向数が加算される。
この合計が、第5図に示すような現在点に関する巻き数
である。
発明が解決しようとする課題 本発明の目的は、図形イメージをラスタ化する新しい簡
単な方法を提供することである。第2の目的は、ラスタ
化のための時間依存性が対象の区域でなく、措かれた対
象の周囲に比例している装置と、ハードウエアによって
サポートすることができ、かつ高速イメージ生成におい
て重要な利益が得られる方法を提供することである。第
3の目的は、正の巻き数の境界を描くことができる任意
の形状をラスタ化できるようにすることである。
本発明のその他の利点は、説明が進むにつれて明らかに
なるであろう。発明を特徴づける機構や機能は、特許請
求の範囲に詳しく記載してある。
課題を解決するための手段 本発明は、非ゼロ巻き数規約によって記述された内部を
もつ輪郭として定義されるイメージを生成するためのフ
レームバッファを有する装置と、フレームバッファに所
定の方向コードをエントリするステップと、交差する点
と、走査方向に隣接する場所の点を判定するステップと
、前記交差する点と走査方向に隣接する場所の点に関す
る方向コードを走査方向に空間的にオフセットするステ
ップから戒り、走査方向に沿って可視イメージを得る方
法を提供する。
発明の理解を助けるため添付図面を参照して説明するが
、図中、類似する部品は同じ参照番号で表示してある。
実施例 正の巻き数で定義される多角形の境界は、奇数偶数法に
類似する順序付き辺りストに格納される代わりに、本発
明に従って、フレームバッファに直接描かれる。これに
より、順序付き辺りスト法のめんどうな分解および分類
が省略されるほか、境界に使用する曲線の種類やそれら
の曲線を生戊するため使用する方法をより自由に選択で
きる。
フレームバッファを一般化して正の巻き数の多角形の単
色塗りつぶしを取り扱うため、各画素は3つの状態(バ
ックグラウンド、ダウンおよびアップ)を持つことが許
される。これは、各画素に2ビットの記憶装置を割り当
てることで極めて簡単にできる。多角形の境界は、反時
計方向に生成され、元の画素値(バックグラウンド)を
アップ値またはダウン値のどちらかへ変更することによ
りフレームバッファに入力される。奇数偶数法と同様に
、左と右の辺のみが第6図のように入力される(水平の
辺は描かない)。アップ状態とダウン状態は方向数に対
応する。
もし辺が下位の走査線から高位の走査線へ生成されれば
、アップ状態が記憶される。もし辺が下向きに生威され
れば、ダウン状態が記憶される。
ラスタ化の前に、すべての多角形の境界を入力すること
ができる。このステップは、フレームバッファの表示と
共に実行してもよい。ラスタ化段階において、奇数偶数
法と同様に、ラスタを通して、1走査線づつラスタ化が
進行する。走査線について、巻き数が0に初期化され、
各画素が検査される。もし値がダウンであれば、巻き数
が増分される。もし値がアップであれば、巻き数が減分
される。正の巻き数を有するすべての画素はシェードさ
れる。
従来、この方法は、第7図に示すように、2つ以上の辺
が一致する点に問題があった。これらの点では、すべて
の辺による増分または減分の合計を反映させるため、巻
き数を変更させるべきであるが、2つの状態、アップと
ダウンしかないので、許される変更は−1または1のみ
である。この問題を解決する突破口は、イメージに重大
な影響を与えずに、一致する境界の画素値を空間的にオ
フセットできるようにすることである。ダウン状態を入
力すべき場合、最初に画素が検査される。もし画素値が
バックグラウンドであれば、ダウン状態が入力される。
もし画素値がアップであれば、2つの辺の増分と減分が
相殺し、値バックグラウンドが入力される。もし画素値
が既にダウンであれば、右側の次の画素が検討され、計
算が繰り返される。この結果、衝突する一連の下向きの
辺により、右へ拡がる一連のダウン画素が生しる。巻き
数は、一連のダウン画素の端において正しい。
上向き辺の線描は、画素が既に値アップを有する場合、
左側の画素が検査される以外は、同様に取り扱われる。
本方法は、まったくエラーがないとは言えない.第8図
に示すように、2つの並んだダウン画素は、別個の画素
を通過する2木の下向きの線から生じることもあるし、
あるいは2本の下向きの線が左側の画素を通過すること
によって生じることもある。この2つのケースを区別す
ることはできない。
したがって、もし上向きの線が左側の画素を通過して引
かれれば、左側または右側のダウン画素のどちらをキャ
ンセルすべきなのかわからない。しかし、このようなエ
ラーは、衝突する一連の画素の区域に局在化しており、
上向きの線と下向きの線が存在している場合にのみ起き
ることに注目されたい。
このような衝突が起きる可能性のある1つの共通する状
況は、数個の多角形がクリップされて共通の辺になるク
リッピング境界に沿っている。アップ値が一連のダウン
画素と衝突する場合には、一連のダウン画素のうち最右
端の画素をキャンセルするのが最良である。この戦略に
より、クリッピング領域の収縮が防止される。
以下は、上記の手続きを実行するアルゴリズムである。
A.拡張フレームバッファ内のすべての点をバックグラ
ウンドにセットする。
B.すべての多角形について境界を入力する。
l. 多角形の境界を反時計まわりに進み、左側の境界
と右側の境界について画素座標を生威する。
2.  下riilの辺の各画素について、Store
Do−囚nPaintを呼び出す。
上向きの辺の各画素について、StoreLlp−Po
intを呼び出す。
C.  イメージを表示する。
1. 各走査線について、 巻き数を0にセットする。
走査線上の画素を通って進み、 もし画素が値ダウンを有すれば、巻き数を増分し、 もし画素が値アップを有すれば、巻き数を減分し、 もし巻き数が正であれば、画素をシェ ードして表示し、さもなければ、シェ ードせずに表示する。
このように、拡張フレームバッファの中で、各画素は3
つの考えられる状態、すなわちバックグラウンド、アッ
プ、ダウンを有する。点は、以下の2つの手続きによっ
てフレームバッファに入力される。
StoreDownPoint 画素値が記憶されるまで繰り返す。
もし現在画素の値がバックグラウンドであれば、値ダウ
ンを記憶し、 もし現在画素の値がダウンであれば、右側の次の画素へ
進み、 もし現在画素の値がアップであれば、 左側の次の画素がアップでなければ、値バックグラウン
ドを記憶し、 さもなければ、左側の次の画素に進む。
StoreUpPoint 画素値が記憶されるまで繰り返す。
もし現在画素の値がバックグラウンドであれば、値アッ
プを記憶し、 もし現在画素の値がアップであれば、左側の次の画素へ
進み、 もし現在画素の値がダウンであれば、 右側の次の画素の値がダウンでなければ、値バックグラ
ウンドを記憶し、 さもなければ、右側の次の画素へ進む。
これは、図形イメージをラスタ化する新しい簡単な方法
である。本方法は、正の巻き数の境界を描くことができ
るどんな形状でもラスタ化することができる。境界のた
めの分析的形状を備え、それを走査順序で描く必要もな
いし、またそれを最端点で分割する必要もない。ラスタ
化の時間依存性は、対象の区域でなく、描かれた対象の
周囲に比例する。本方法は、ハードウェアでサポートす
ることができ、また高速イメージ生成において重要な利
益を提供することができる。
本発明に従って、ページの始めに、バックグラウンド値
のみを入れるため、フレームバッファがクリヤされる。
多角形は、その左辺と右辺に沿う画素の状態を変更する
ことにより、フレームバッファに入力される。すなわち
、下向きに引かれた辺はダウン状態にセットされ、上向
きに引かれた辺はアップ状態にセットされる。像形威の
際、フレームバッファは一度に走査線を横に(左から右
へ)掃引される。各走査線の始めに、巻き数が0にセッ
トされる。もしダウン画素に出会ったら、巻き数が増分
され、アップ画素に出会ったら、巻き数が減分される。
正(すなわち、非ゼロ)巻き数に対応するすべての画素
がシェードされる。アルゴリズムは、幾つかの辺が同一
画素と交差する衝突を取り扱う。その取扱いは、空間的
に左または右へ動いて、変更を入れることができる画素
を見つけることである。アップ状態とダウン状態の衝突
では、両者は相殺され、ダウン状態同士の衝突では、右
へ拡がる一連のダウン画素が生じ、アップ状態同士の衝
突では、左へ拡がる一連のアップ画素が生じる。この取
扱いの問題点は、■個の境界の辺が画素を通過したり、
あるいは数個の辺が隣の画素を通過したりするので、画
素がセットされたか否かが曖昧であるために、局部的な
エラーが生じる可能性があることである。
上記のジレンマを解決するには、追加の画素状態と追加
の計算が必要である。しかし、この解決策は、各画素に
おける巻き数の変化を厳密に表すので、エラーが生じな
い。詳しく述べると、巻き数の変化を厳密に表すため、
2つの追加状態が定義される。この2つの追加状態は、
左丸かっこ(#と、右丸かっこ“)“で表示される。し
たがって、フレームバッファ内の各画素は5つの状態を
取ることが可能なはずである。新しく追加した2つの状
態は、画素に関する巻き数の変化の範囲を定めるために
使われる。
最初に画素が境界の辺(例えば、下向きの辺)にあるこ
とがわかると、フレームバッファ内の3つの画素が変更
される。辺が通過する画素は、左丸かっこ状態″(“で
表示され、右側の次の画素はダウン状態“d“で表示さ
れ、右側の第2の画素は右丸かっこ状態″)″で表示さ
れる(第9図参照)。もし第2の下向きの辺がその画素
を通過すれば、前記丸かっこの間に第2のダウン状態が
挿入される。すなわち、追加の状態を入れるため、右丸
かっこが1画素分だけシフトする(第10図参照)。
もし同一画素を上向きの辺と下向きの辺が通過すれば、
丸かっこの間に、アップ状態とダウン状態の2つを入れ
ることもできるし、あるいはアップ状態をダウン状態で
相殺して、リストを省略することもできる(第11図参
照)。画素に影響を及ぼすアップ状態とダウン状態は、
丸かっこ内に囲まれ、左の丸かっこは、境界の辺の画素
を表す。
追加状態が加わると、リストは右へ拡大する。もしリス
トが、その右側の一定の画素に属する別のリストに出会
ったならば、この第2のリストを飛び越えて、その右側
へさらに伸びる(第12図参照)。
辺が始めてある画素を通過したが、もしその画素が既に
その左側の画素に属するリストの一部として非バックグ
ラウンド値を有していれば、新しいリストのための空室
を作るため、この先行リストの値は3画素だけ右ヘシフ
トされる(第13図参照)。前と同様に、もしリストが
右側で別のリストに出会ったならば、そのリストを飛び
越えてさらに伸びる。
この解決策では、辺を表示するのに、辺が通過する各画
素について、バックグラウンドからりスト構造へ最大3
つの画素を変更する必要が生じる可能性がある。このた
め、非常に濃い絵は、常に右へ伸びる長いリストを作る
ことがある。フレームバッファの縁を越えて伸びるリス
トの問題は、そのリストを次の走査線の左側に巻き付け
ることによって取り扱うことができる。これは、フレー
ムバックァメモリを構或する多くのやり方であり、フレ
ームバッファの緑で、特別な取扱いはしなくてもよい。
撮像素子の解像度を高める場合、この符号化に利用でき
る空間は二乗で増えるが、処理すべき辺の画素数は直線
的に増えるだけであることに留意されたい。
各画素に追加状態が与えれば、状態リストの長さを減ら
すことが可能である。第14図に示した9つの状態につ
いて、走査線を通過している各辺について、走査線上で
1個の画素を変更するだけで、リストを作ることができ
る(第15図参照)。
もし1個の画素についてアップ状態とダウン状態が常に
相殺すれば、リストは、すべてのアップ状態またはすべ
てのダウン状態を含むであろう。この仮定のちとに、画
素を通る非相殺の境界の辺の数に比例する長さのリスト
を表すには、第16図に示すように、7つの状態があれ
ばよい。
ここで、リストの最初の画素は、上向きの辺または下向
きの辺のリストであるかどうかを指示し、リストの残り
の画素について、Xと、X)は、幾つの辺があるかをカ
ウントする(第17図参照)。
2進コンピュータシステムでは、1画素当たり4ビット
でなく、3ビットで済むので、必要な状態は8つ以下で
よいという利点がある。
さらに多くの状態を追加することによって、リストの長
さをさらに短くすることが可能である。
例えば、リスト内の状態の2つ,4つまたは8つの例を
表す状態を追加することができよう。しかし、単に2、
つの状B(アップおよびダウン)を0および1と再定義
し、その画素についての巻き数の変化を、2進数として
符号化することにより、新しい状態を導入せずに、リス
トの短縮を実現することができる.例えば、もし画素を
5つの下向きの辺が通過すれば、巻き数の変化は+5に
なる。
リスl− (ddddd)を使用する代わりに、これを
リスト(0101)で表すことができるであろう。先頭
のOは巻き数の符号を定める。
通例、イメージ或分の境界は、ほとんど交差せずに、す
なわち重ならずに分散している。したがって、上記の符
号化法は必要ないと予想される。
低解像度の場合に同一画素に入る隣接する辺は、高解像
度の場合、個別の画素にマップできるので、解像度を高
めれば、重なる可能性はある程度少なくなるであろう。
しかし、合或図形イメージの場合には、画素を通る辺が
すぐ近くでなく、同一のことがよくある。この場合には
、解像度を高めることは助けにならない。重なる辺が生
じる傾向のある操作の1つは、クリッピングである。も
し数個の対象がクリッピング境界と重なれば、それらの
対象はすべてその境界までクリップされ、境界に沿って
重なった辺を有するであろう。しかし、これらの辺の重
なりの程度は、対象の重なりと同程度で、通常は少ない
以下は、上に述べた基本5状態フレームバッファ符号化
のためのアルゴリズムのサンプル具現化である。手続き
は、Cプログラ逅ング言語で符号化されている. 拡大フレームバッファに入力された対象は、後で消去で
きることに留意されたい。また、本アルゴリズムは、線
ばかりでなく、順次生成することができるどのような境
界形状にも使えることに留意されたい。
最初の2つのルーチンは、一定の画素に関するリストに
値を入れる操作を取り扱う。もしリストが存在していな
ければ、リストが作られる。Add−Entry手続き
は、アップ、ダウン、右丸かっこまたは左丸かっこの値
を画素に関するリストに入れ、必要ならば前の値を右ヘ
シフトして、大量の作業を実行する。EnterVal
ue手続きは、もしリストが存在しなければ、AddE
ntry手続きを用いて辺の値(アップまたはダウン)
を有するリストを作り、もし存在すれば、既存のリスト
に値を入れる。このサンプル具体化は、リスト内の上向
きの辺と下向きの辺を相殺することはしない。
AddEntry(x,y,value){paren
s =O  ; putValue  =  value ;while
  (oldValue =  frame[x.yl
)=  BACKGR[lt]ND) (if(oldValue  =  =  LEFTP
ARENTHESIS)parens  =  par
ens  +  1else if(parens = = O) {frame[X,Yl  =  putValue;
putValue  = oldValue;} else if(oldValue == RIGHTPARET
HESIS)parens  =  parens  
−  1;x  =  x  +  1; } frame(x,yl  = put’/alue;} DisplayFrame(  ) (for(y = 0;y < MAXFRAME Y
;y + + )(windingNumber = 
O;for(x = O;x < MAXFRAME 
X;x + + )(value   =   fra
me[x,y];if(value  =  = LE
FTPARENTHESIS)parens  =1; else  parens = 0; z  =  X  +  l; wh i 1 e (pa rens > O){va
lue  =  frame[z.yl;if((pa
rens = =  1)&&(value = = 
DOWN))windingNumber   =  
 windingNumber   +  1;if(
(parens = =  1)&&(value =
 = UP))windingNumber  =  
windingNumber  −  1;if(va
lue  =  =  LEFTPARENTHESI
S)pares  =.parens  +  1;i
f(value  =  =  RIGHTPARET
HESIS)pares  =  parens  −
  1;2  二  z  +  1; Entervalue手続きの目的は、画素に関するリ
ストが存在するか否かに従って、3つのコード(新しい
リスト)または1つのコード(リスト拡張)を入れるこ
とである。
EnterValue(x,y,value){o1d
Value =  frame[x,yl;if(ol
dValue  !  = LEFTPARENTHE
SIS);{AddEntry(x, y, RIGI
{TPARENTHESIS) ;AddEntry(
x,y,value);AddEntry(x,y,L
EFTPARENTHSIS);} else AddEntry(x  +  l,y,v
alue);} DisplayFrame手続きは、拡張フレームバソ
ファからイメージを作る。Shade手続きの呼出しは
、画素をシェーディングするハードウエア動作を表す。
if(windingNumber !  = O)S
hade(x,y); } } } 本アルゴリズムにより、「フレームバッファ」の中のア
ップおよびダウン状態の順序と位置は、もはや、像形成
する画素と直接対応していないことに留意されたい。巻
き数の変化(および、それによるシエーディングの変化
)を指示する状態は、丸かっこと別のリストによって移
される。Displ一ayFrame手続きは、各画素
に関するリスト構造を通して走査し、巻き数の正味の変
化を判定する。
表示の際の画素の繰返しアクセスは、サンプルアルゴリ
ズムの変形を使用することにより避けることができる。
この概念は、表示走査で用いた方向とは反対の方向にリ
ストを拡張することである。
表示走査のときは、最初にリストの後端、続いてすべて
のリスト要素、最後にリストの前端と出会い、さらにリ
ストが属する画素に印がつけられる.この手法により、
画素に達する時間までに、その画素に関する巻き数の変
化がわかるであろう。同時に幾つかのリストの中央にあ
るかも知れないので、いろいろなリストの小計を維持す
るため、DisplayFrame手続きは、スタック
などの補助データ構造が必要である。以下は、この手法
のためのDisplayFrame手続きの例である。
DisplayFrame( ) (for(y = 0;y <MAXFRAME Y;
y + +)(StackTop − 0; windingNumber =O; for(x = MAXFRAME X−1;x>=O
;x − −)(value = frame[X,Y
];if(value = = RIGHTPAREN
THESIS){StackTop = StackT
op + l;Stack[StackTop] = 
0;} if(value == UP) Stack[StackTop]  = StackT
op +  1;if(value  =  =  D
OWN)Stack[StackTop]  = St
ack[StackTop]  −1;if(valu
e  : = LEFTPARENTHESIS)(w
indingNumber  =  windingN
umber  + Stack[StackTopl 
; StackTop  =  StackTop  − 
 1;} if(windingNumber !  = 0;S
 h a d e ( x + y ) ;} } } 現時点で本発明の好ましい実施例と考えられるものを説
明したが、この分野の専門家は、おそらくこの実施例に
対し、さまざまな変更や修正を思い浮かべるであろう。
本発明の精神および範囲に含まれるすべての変更や修正
は、特許請求の範囲に包含されるものとする。
【図面の簡単な説明】
第1図は、従来の図形イメージを表現する第1の方法を
示す図、 第2図は、従来の図形イメージを表現する第2の方法を
示す図、 第3図は、従来の図形イメージを表現する第3の方法を
示す図、 第4a図と第4図は、それぞれ、奇数巻き数および正の
巻き数によって定義される2つの多角形の境界の交差を
示す図、 第5図は、走査線に沿う方向数と巻き数を示す図、 第6図は、本発明によるアップ状態(上向き境界)とダ
ウン状態(下向き境界)を示す図、第7図は、本発明に
よる衝突の取扱いを示す図、第8図は、衝突の取扱いか
ら生じる可能性のある曖昧さを示す図、 第9図〜第13図は、本発明による巻き数の変化を厳密
に表すための2つの追加状態を示す図、第14図〜第1
7図は、本発明による状態リストの長さを短縮する方法
を示す図である。 境界を描く FIG. 1a FIG.1b 核から領域を拡げる FIG. 1c 境界を塗りつぶす FIG. 1d 境界辺セグメントの 順序付き辺りストを作る FIG. 3a 各走査ごとに壇界を見つけて 分馴し、間を塗りつぶす すべての走査線が処理されるまで繰返すFIG. 3c 左と右の境界を描く FIG. 2a 各走査ごとに境界と 出会ったら、色を反転する 全走査線が処理されるまで繰ぷす FIG. 2c 奇数巻数 FIG. 4a 非ゼロ巻数 FIG. 4b 方向数とを数 FIG. 5 右へ拡げられた衝突点 FIG. 7 FIG.12 FIG. 13 FIG. 8 FIG. 9 FIG.10 FIG.74 FIG.75 FIG. 16 FIG.17

Claims (20)

    【特許請求の範囲】
  1. (1)左から右へ向けられた走査線の中に構成されたフ
    レームバッファを有するラスタ走査装置において、境界
    と巻き数によって、バックグラウンド状態、アップ状態
    およびダウン状態の画素のラスタ表示として定義される
    図形イメージを表現する方法であって、 バックグラウンド状態のみを入れるためフレームバッフ
    ァをクリヤすること、 下向きに描かれた境界の辺がダウン状態にセットされ、
    上向きに描かれた境界の辺がアップ状態にセットされる
    ように、画素の状態を変更することにより、フレームバ
    ッファに境界の辺を入力すること、 少なくとも2つの辺が同一画素と交差している衝突に対
    しては、アップ状態とダウン状態の衝突によりバックグ
    ラウンド状態が生じ、ダウン状態同士の衝突により右へ
    拡がる一連のダウン画素が生じ、アップ状態同士の衝突
    により左へ拡がる一連のアップ画素が生じるように、空
    間的に左または右に動いて変更を入力することができる
    画素を見つけることにより対応すること、 各走査線を横に掃引すること、 各走査線の始めに、巻き数を0にセットすること、 ダウン画素に出会ったら、巻き数を増分すること、 アップ画素に出会ったら、巻き数を減分すること、およ
    び 非ゼロ巻き数に相当する画素をシェードすること、 の諸ステップから成る方法。
  2. (2)走査線の中に構成されたフレームバッファを有す
    るラスタ走査装置において、境界と巻き数によって、バ
    ックグラウンド状態、第1状態および第2状態の画素の
    ラスタ表示として定義される図形イメージを表現する方
    法であって、バックグラウンド状態のみを入れるためフ
    レームバッファをクリヤすること、 第1方向に描かれた境界の辺が第1方向状態にセットさ
    れ、上向きに描かれた境界の辺が第2方向状態にセット
    されるように、画素の状態を変更することにより、境界
    の辺をバッファフレームに入力すること、 少なくとも2つの辺が同一画素と交差する衝突に対して
    は、第1方向状態と第2方向状態との衝突によりバック
    グラウンド状態が生じるように、空間的に第1および第
    2方向に直角な方向に動いて(辺に対する第1方向の動
    きと辺に対する第2方向の動きは逆である)、変更を入
    力することができる画素を見つけることによって対応す
    ること、 各走査線を横に掃引すること、 各走査線の始めに、巻き数を0にセットすること、 ダウン画素に出会ったら、巻き数を増分すること、 アップ画素に出会ったら、巻き数を減分すること、およ
    び 非ゼロ巻き数に相当する画素をシェードすること、 の諸ステップから成る方法。
  3. (3)ラスタ走査装置において、境界と巻き数によって
    定義される図形イメージを画素によつて表現する方法で
    あって、 第1方向に描かれた境界の辺が第1状態にセットされ、
    第2方向に描かれた境界の辺が第2状態にセットされる
    ように、境界の辺に沿う画素の状態を変更することによ
    り、前記図形イメージを表現すること、 2つの辺が多くても1画素離れている出会いに対しては
    、空間的に動いて画素の1つをオフセットすることによ
    って対応すること、 巻き数を初期化し、走査線を横に掃引すること、 第1方向の画素に出会ったら、巻き数を増分すること、 第2方向の画素に出会ったら、巻き数を減分すること、
    および 所定の巻き数に相当する画素をシェードすること、 の諸ステップから成る方法。
  4. (4)前記ラスタ走査装置はフレームバッファを有して
    おり、さらにバックグラウンド状態のみを入れるため前
    記フレームバッファをクリヤするステップを含んでいる
    ことを特徴とする請求項3に記載の方法。
  5. (5)さらに、第1方向に描かれた辺が第1状態にセッ
    トされ、第2方向に描かれた辺が第2状態にセットされ
    るように、辺に沿う画素の状態を変更することにより、
    前記フレームバッファに図形イメージを入力するステッ
    プを含んでいることを特徴とする請求項3に記載の方法
  6. (6)さらに、走査線の一方から他方へフレームバッフ
    ァを掃引するステップと、各走査線の始めに、巻き数を
    0にセットするステップを含んでいることを特徴とする
    請求項3に記載の方法。
  7. (7)さらに、第1方向の画素に出会ったら、巻き数を
    増分するステップを含んでいることを特徴とする請求項
    3に記載の方法。
  8. (8)さらに、第2方向の画素に出会ったら、巻き数を
    減分するステップを含んでいることを特徴とする請求項
    7に記載の方法。
  9. (9)さらに、正の巻き数に相当する画素をシェードす
    るステップを含んでいることを特徴とする請求項3に記
    載の方法。
  10. (10)さらに、少なくとも2つの辺が同一画素と交差
    する衝突に対しては、空間的に動いて変更を入力するこ
    とができる画素を見つけることによって対応するステッ
    プを含んでいることを特徴とする請求項10に記載の方
    法。
  11. (11)さらに、2つの辺が隣接する画素を占めるよう
    な接触に対しては、空間的に動いて変更を入力すること
    ができる画素を見つけることによって対応するステップ
    を含んでいることを特徴とする請求項10に記載の方法
  12. (12)第1状態の画素と第2状態の画素の衝突により
    、2つの画素が相殺されることを特徴とする請求項11
    に記載の方法。
  13. (13)第1状態の画素同士の衝突により、第1方向に
    拡がる一連の画素が生じ、第2状態の画素同士の衝突に
    より、第2方向に拡がる一連の画素が生じることを特徴
    とする請求項12に記載の方法。
  14. (14)さらに、第1および第2方向状態とバックグラ
    ウンド状態によって各画素を表すステップを含んでいる
    ことを特徴とする請求項5に記載の方法。
  15. (15)さらに、第1および第2方向状態、バックグラ
    ウンド状態並びに2つの追加状態によって各画素を表す
    ステップを含んでいることを特徴とする請求項6に記載
    の方法。
  16. (16)メモリを有するラスタ走査装置において、画素
    によってイメージを表現する方法であって、イメージの
    輪郭を定義し、定義されたイメージの輪郭を記憶するこ
    と、 輪郭に対応する境界画素を識別すること、 前記境界画素について方向コードを組織的にメモリに格
    納すること、 与えられた境界画素が既に第1方向コードで表されてい
    るかどうかを判定すること、 第1方向コードで既に表された境界画素の隣りの画素の
    第2方向コードを格納すること、の諸ステップから成る
    ことを特徴とする方法。
  17. (17)非ゼロ巻き数規約で記述される内部を有する輪
    郭として定義されるイメージを生成するためのフレーム
    バッファを有する装置において、走査方向に沿って可視
    イメージを得る方法であって、 輪郭に関する所定の方向コードを前記フレームバッファ
    に入力すること、 走査方向に隣接する場所の点と交差する点を判定するこ
    と、 前記走査方向に隣接する場所の点と前記交差する点につ
    いて、方向コードを走査方向に空間的にオフセットする
    こと、 の諸ステップから成ることを特徴とする方法。
  18. (18)非ゼロ巻き数規約で記述される内部を有する輪
    郭として定義されるイメージを生成するためのフレーム
    バッファを有する装置において、走査方向に沿って可視
    イメージを得る方法であって、 輪郭の各画素について、アップ状態、ダウン状態、ライ
    ト状態およびレフト状態を表す所定の方向コードを前記
    フレームバッファに入力すること、 交差する点と、走査方向に隣接する点を判定すること、 前記アップ状態、ダウン状態、ライト状態およびレフト
    状態を使用して、各画素について、前記交差する点と、
    前記走査方向に隣接する点を識別すること、 の諸ステップから成ることを特徴とする方法。
  19. (19)走査線の中に構成されたフレームバッファを有
    するラスタ走査装置において、境界と巻き数によって、
    バックグラウンド状態、第1および第2状態、リスト開
    始およびリスト終了状態の画素のラスタ表示として定義
    される図形イメージを得る方法であって、 バックグラウンド状態のみを入れるためフレームバッフ
    ァをクリヤすること、 第1方向に描かれた辺が第1方向状態にセットされ、第
    2方向に描かれた辺が第2方向状態にセットされるよう
    に、画素の状態を変更することにより、境界の辺をバッ
    ファフレームに入力すること、 画素がバックグラウンド状態でない場合の衝突に対して
    は、辺状態リストを作り、開始辺状態を用いてリストの
    始めに印を付け、終了辺状態を用いてリストの終わりに
    印を付け、開始状態と終了状態の間に方向状態が置かれ
    、衝突が起きる画素に開始辺状態が置かれるように、状
    態を走査線に沿って配列することによって対応すること
    、 各走査線を横に掃引すること、 各走査線の始めに、巻き数を0にセットすること、 ダウン画素に出会ったら、巻き数を増分すること、 アップ画素に出会ったら、巻き数を減分すること、およ
    び 非ゼロ巻き数に相当する画素をシェードすること、 の諸ステップから成ることを特徴とする方法。
  20. (20)さらに、衝突に対しては、方向状態リストを作
    ることにより対応するステップを含むことを特徴とする
    請求項19に記載の方法。
JP2146060A 1989-06-09 1990-06-04 図形イメージをラスタ化して表現する方法 Pending JPH0322188A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/363,827 US5043711A (en) 1989-06-09 1989-06-09 Representation of polygons defined by non-zero winding numbers
US363827 1989-06-09

Publications (1)

Publication Number Publication Date
JPH0322188A true JPH0322188A (ja) 1991-01-30

Family

ID=23431907

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2146060A Pending JPH0322188A (ja) 1989-06-09 1990-06-04 図形イメージをラスタ化して表現する方法

Country Status (4)

Country Link
US (1) US5043711A (ja)
EP (1) EP0402161B1 (ja)
JP (1) JPH0322188A (ja)
DE (1) DE69032515T2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008282208A (ja) * 2007-05-10 2008-11-20 Renesas Technology Corp 塗潰し処理装置、図形表示装置及び塗潰し処理方法

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5542052A (en) * 1991-03-04 1996-07-30 Adobe Systems Incorporated Applying traps to a printed page specified in a page description language format
US5295236A (en) * 1991-03-04 1994-03-15 Aldus Corporation Applying traps to a printed page specified in a page description language format
US5321799A (en) * 1992-04-17 1994-06-14 Proxim, Inc. Signalling transition control in a modulated-signal communications system
JP2625612B2 (ja) * 1992-07-20 1997-07-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 画像処理方法および画像処理装置
KR960016738B1 (ko) * 1992-11-30 1996-12-20 캐논 가부시끼가이샤 정보 처리 방법 및 장치
US5438656A (en) * 1993-06-01 1995-08-01 Ductus, Inc. Raster shape synthesis by direct multi-level filling
US5528737A (en) * 1993-12-14 1996-06-18 Silicon Graphics, Inc. Processor-based method for rasterizing polygons at an arbitrary precision
US5666543A (en) * 1994-03-23 1997-09-09 Adobe Systems Incorporated Method of trapping graphical objects in a desktop publishing program
US5689705A (en) * 1995-02-13 1997-11-18 Pulte Home Corporation System for facilitating home construction and sales
US5771045A (en) * 1995-10-23 1998-06-23 Hewlett-Packard Company Method for polygon decomposition
AUPP771798A0 (en) * 1998-12-14 1999-01-14 Canon Kabushiki Kaisha Overlapping edge blends and other texture mapped regions
US6384745B1 (en) 2000-10-10 2002-05-07 Morisawa & Co., Ltd. System, method and computer program product for a highly compressed outline font engine
US7110003B2 (en) * 2000-12-22 2006-09-19 Canon Kabushiki Kaisha Rendering objects
JP2003162728A (ja) 2001-11-26 2003-06-06 Ricoh Co Ltd 画像処理装置及び画像出力装置
JP4621618B2 (ja) * 2006-03-28 2011-01-26 株式会社東芝 図形描画装置、図形描画方法、およびプログラム
KR101470472B1 (ko) 2006-09-14 2014-12-09 메드제닉스 메디칼 이스라엘 리미티드 장기 지속형 약물 제형
US8454948B2 (en) 2006-09-14 2013-06-04 Medgenics Medical Israel Ltd. Long lasting drug formulations
JP4858883B2 (ja) * 2008-11-07 2012-01-18 Necシステムテクノロジー株式会社 ベクター画像描画装置、ベクター画像描画方法およびプログラム
US20120062585A1 (en) * 2009-05-19 2012-03-15 Mitsubishi Electric Corporation Vector graphic drawing device
WO2011159758A2 (en) 2010-06-15 2011-12-22 Medgenics Medical Israel Ltd. Long lasting drug formulations
US9132672B2 (en) * 2011-11-08 2015-09-15 Xerox Corporation Controlling exit velocity of printed sheets being stacked to optimize stack quality

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4364037A (en) * 1981-06-15 1982-12-14 Cromemco Inc. Transition data image processor
US4646076A (en) * 1983-04-27 1987-02-24 Sperry Corporation Method and apparatus for high speed graphics fill
US4554538A (en) * 1983-05-25 1985-11-19 Westinghouse Electric Corp. Multi-level raster scan display system
US4677574A (en) * 1984-08-20 1987-06-30 Cromemco, Inc. Computer graphics system with low memory enhancement circuit
US4815009A (en) * 1987-04-21 1989-03-21 Xerox Corporation Algorithm for filling an image outline
JP2690110B2 (ja) * 1988-08-15 1997-12-10 沖電気工業株式会社 走査変換方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008282208A (ja) * 2007-05-10 2008-11-20 Renesas Technology Corp 塗潰し処理装置、図形表示装置及び塗潰し処理方法

Also Published As

Publication number Publication date
DE69032515D1 (de) 1998-09-03
EP0402161A3 (en) 1992-07-15
EP0402161A2 (en) 1990-12-12
US5043711A (en) 1991-08-27
DE69032515T2 (de) 1999-02-04
EP0402161B1 (en) 1998-07-29

Similar Documents

Publication Publication Date Title
JPH0322188A (ja) 図形イメージをラスタ化して表現する方法
JP4101275B2 (ja) 走査線ベースのラスタ画像プロセッサにおける奥行き追跡の方法
EP0356103B1 (en) Scan-conversion process and processor
JP4073029B2 (ja) グラフィックオブジェクトレンダリングにおけるアンチエイリアシング合成
WO1994010647A1 (en) Polygon rasterization
EP0592770B1 (en) Method for filling of interior pixels within a polygon
EP0344686B1 (en) Clipping process and processor
KR100317549B1 (ko) 문자채움처리를위해연쇄코드를사용하는비트맵문자변환방법
US5444825A (en) Method and apparatus for scaling line patterns
US5553219A (en) Font outline and bit map generator synthesizing filling data with selected outline data or duplicate outline data
JP2676116B2 (ja) 画像データ処理方法および装置
EP0855682B1 (en) Scan line rendering of convolutions
US6384745B1 (en) System, method and computer program product for a highly compressed outline font engine
US7170528B1 (en) Fast glyph rendering for vector based fonts
JPH03179873A (ja) 画像処理装置
JP4325812B2 (ja) ベクター画像描画回路およびベクター画像描画方法
JPH07120427B2 (ja) グラフイツクス処理システム
US6124863A (en) Object-based graphics system for displaying an image using explicit quadratic polynomial fragments
JP3493745B2 (ja) 図形描画装置
JP3191409B2 (ja) フォントデータ生成装置
JP3872056B2 (ja) 描画方法
JP3266905B2 (ja) 図形処理装置
US5319346A (en) Conversion from odd to non-zero winding number specification using an extended frame buffer
AU2009222438A1 (en) Anti-aliased polygon rendering
JP2782904B2 (ja) 多角形塗りつぶし方式