JP2888270B2 - 図形処理装置及びその方法 - Google Patents

図形処理装置及びその方法

Info

Publication number
JP2888270B2
JP2888270B2 JP5325990A JP32599093A JP2888270B2 JP 2888270 B2 JP2888270 B2 JP 2888270B2 JP 5325990 A JP5325990 A JP 5325990A JP 32599093 A JP32599093 A JP 32599093A JP 2888270 B2 JP2888270 B2 JP 2888270B2
Authority
JP
Japan
Prior art keywords
contour
outline
data
line
filling
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 - Lifetime
Application number
JP5325990A
Other languages
English (en)
Other versions
JPH07152920A (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.)
Victor Company of Japan Ltd
Original Assignee
Victor Company of Japan Ltd
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 Victor Company of Japan Ltd filed Critical Victor Company of Japan Ltd
Priority to JP5325990A priority Critical patent/JP2888270B2/ja
Publication of JPH07152920A publication Critical patent/JPH07152920A/ja
Application granted granted Critical
Publication of JP2888270B2 publication Critical patent/JP2888270B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、図形処理装置及びその
方法に係り、特に文字などの図形の輪郭を示すアウトラ
インベクトルデータをドットデータに変換する際に、輪
郭および図形の内部や外部を塗り潰す図形処理装置及び
その方法に関するものである。
【0002】
【従来の技術】従来より、拡大・縮小した際にも高品質
な文字として表示するために、文字の輪郭をアウトライ
ンデータとして保持し、このアウトラインデータをドッ
トデータに変換することによって描画される文字の輪郭
の内部または外部を塗り潰す方法が採られている。
【0003】そして、コード化された文字を拡大・縮小
してブラウン管等の出力装置に表示させる方法として、
特公昭53-15624号の「文字等発生方式」や特公昭53-410
17号の「高品位文字等の発生方式」等が知られている。
ところが、これらの方法は、文字の輪郭の尖鋭端の部分
が1ドットとなる場合に文字の塗り潰しが正しく行われ
ないという問題があり、以降の特許出願等において、こ
の尖鋭端問題を解決する方法がいくつか提案されてい
る。
【0004】尖鋭端問題を解決して文字や図形のアウト
ラインベクトルデータを塗り潰す方法としては、特開平
2-59872 号の「画像処理装置」や特開平4-684 号の「図
形塗り潰し方法」、特開平3-233689号の「アウトライン
データ描画装置」等が提案されている。そして、特開平
2-59872 号の「画像処理装置」は、尖鋭端問題をソフト
ウエア処理に適した簡単な方法で解決する比較的優れた
方法であり、輪郭線をプロットしながら、順次ラスタス
キャン方向に反転塗り潰しを行なうことにより、尖鋭端
問題を回避しつつ簡単な構成で塗り潰しを行なうように
したものである。しかしながら、1スキャンラインにつ
いて局部的に多数回の反転処理が必要であるので、処理
速度が低下するという問題がある。そこで、この提案で
は、図形の中心線近辺で塗り潰し処理領域を二分して、
各領域での塗り潰し方向を変えることにより、反転処理
が局部的に重複する度合いを軽減させているが、この場
合でも処理速度が低下するという課題は残っていた。
【0005】また、塗り潰しの問題として、輪郭の重複
問題がある。この重複問題をアウトライン文字の修飾の
一つである文字の太さ変形を例にして以下に説明する。
例えば、片仮名「ム」が図10(A)に示すようにアウ
トラインベクトルで定義されている場合、太さ変形を行
なう方法の一例は、同図(B)に示すように、各頂点で
接する二辺の成す角を二分する方向に、その頂点座標を
移動することである。この時、同図(B)中、太い矢印
で示した部分のように輪郭線の衝突あるいは重複が発生
することがあり、この場合、特開平2-59872 号の方法で
は次のような問題が発生する。
【0006】即ち、この輪郭線の重複が発生した部分を
拡大したものを図11(A)〜(E)に示し、輪郭線で
囲まれた文字の内部を塗り潰す場合の反転塗り潰しの手
順を説明すると、まず、同図(A)に示すように、一番
左側の輪郭線よりも右側を黒く反転させ、次に、同図
(B)のように、その隣の輪郭線の右側を白く反転させ
て輪郭線で囲まれた部分だけを黒くする。ところが同様
の処理を行っていくと、同図(C),(D)のように、
輪郭線に囲まれた部分のうち、重複した部分を再度反転
してしまうため、同図(E)のように、輪郭線に囲まれ
ているにもかかわらず、白い中抜け部分が発生してしま
うことがあった。
【0007】特開平4-684 号の「図形塗り潰し方法」
は、ピクセル(画素)を、輪郭フラグと方向ビットとの
組み合わせビットで表現し、輪郭描画時と塗り潰し時と
でこのピクセルを参照しながら書き換えを行なうことに
より、拡大縮小に起因する重複問題を解決しようとする
ものである(なお、この方法では輪郭描画と塗り潰しは
個別に行なっている)。特に、図12に示されたような
文字縮小に伴う、平行する輪郭の縮退による字画の消失
に対しても対応することができるものである。
【0008】ところが、この方法で輪郭描画を行う場
合、輪郭描画開始後、ピクセルの方向情報の更新規則か
ら漏れるケースが必ず発生する。例えば、この更新規則
は前と次のピクセルのデータによって現在のピクセルに
対する方向値が定まるため、輪郭の始点直後の処理は定
まらないことになる(図13(A))。また、輪郭の始
点直後からY座標値に変化のない点が続いた場合、不定
点が連続して発生するようなことが起こりうる(同図
(B))。したがって、特開平4-684 号に開示されてい
る手順のほかに、輪郭描画一周後に、不定点を探して改
めて決定し直す処理が必要であった。
【0009】さらに、最も重要な方向情報の作成から塗
り潰しに至る処理については、この提案には明確に記載
されていないが、この場合、図14(A)に示すような
内部に塗り潰しを行わない部分を有する図形に対して同
図(B)に示すようなベクトルデータが存在するとき、
更新規則による方向決定と不定点の再決定を行なって輪
郭描画を行なうと図16に示すようになる。なお、黒丸
は輪郭ビットがセットされた点であり、数値の書き込ま
れていない点は、値が初期状態(=0)の点である。
【0010】そして、水平方向にピクセル毎の値を加算
して行くと、図17に示すような結果が得られる。これ
に対して、ゼロ非ゼロ偶数奇数の条件判断を行
ない、輪郭情報と論理和をとるなどの処理をすることに
より、図15(A)に示す図形に対して、それぞれ図1
5(B)〜(E)に示すような結果が得られる。このと
き、図14(A)に示すように、内部に塗り潰しを行わ
ない部分を有する図形の塗り潰しを正確に行うために
は、図15(E)で示された結果が得られる奇数の条
件を採用することになる。
【0011】ここで、太さ変形の例で説明したような輪
郭線の重複が発生起した際の問題点について説明する。
図18(A)に示すような図形に対して同図(B)に示
すようなベクトルデータがあったとすると(太さ変更に
起因する状況を模式的に示した図である)、先の例と同
様に更新規則による方向決定と不定点の再決定を行なっ
て輪郭描画を行なうと図19に示すようになる。
【0012】そして、水平方向にピクセルごとに値を加
算して行くと、図20に示すような結果が得られる。こ
こで上と同じように採用する条件を奇数であることに
すると、重複部分の値が−2となって奇数とならないの
で、重複部分で抜けが生じてしまう。他方、非ゼロを
条件として採用すると、本来塗り潰す必要のない内ルー
プの内側まで塗り潰されることになり、本質的な問題が
生じてしまう。さらに、指摘した不定点処理の問題も含
め、この提案は、特殊ルールに基づく判断処理が多く、
また、特殊な処理への分岐も多いため、この提案の実施
例で示されたような構成の装置を用いてソフトウエア処
理を行った場合、非常に処理時間のかかるものとなって
しまう。
【0013】そして、特開平3-233689号の「アウトライ
ンデータ描画装置」は、上記した特開平2-59872 号と類
似した特殊ルールに基づいた輪郭描画と塗り潰しを個別
に行なう方法であり、上記提案で問題となった、輪郭線
の重複部分の中抜け問題に対する対策について詳細に説
明されているが、その使用されるルールが状態遷移を導
入したより複雑なものになっている。このため、ハード
ウエア高速化を目的の一つにしているものの状態遷移処
理等、現在使用されているMPU(microprocessing un
it)によってソフトウエア処理を行うには、さらに時間
のかかる方法となっていた。
【0014】
【発明が解決しようとする課題】輪郭描画と塗り潰しを
別々に行なう方法では、輪郭を単なるドットの集合とし
てではなく、輪郭の個々の部分の持つ性質を何らかの形
で記憶することによって尖鋭端に対処する必要があっ
た。一方、特開平2-59872 号のような方法では、尖鋭端
問題は回避できるが、重複問題を避けることができなか
った。
【0015】さらに、従来の方法では、尖鋭端問題と重
複問題の両方を回避しようとすると、ソフトウエアの処
理に時間が掛かり、あまり実用的ではなかった。そこで
本発明は、上記した尖鋭端および輪郭重複に起因する問
題を簡単な方法で解決し、MPUによるソフトウエア処
理を行う場合に高速処理が可能な図形処理装置及びその
方法を提供することを目的とする。
【0016】
【課題を解決するための手段】上記目的を達成するため
の手段として、少なくとも図形の種類や大きさを指示す
る指示手段と、ループ内が図形となる外輪郭を示す外ル
ープデータの方向とループ外が図形となる内輪郭を示す
内ループデータの方向とが逆方向となるように設定され
たアウトラインデータを記憶するアウトラインデータ記
憶手段と、前記指示手段によって指示された図形の前記
アウトラインデータが前記アウトラインデータ記憶手段
から供給され、前記アウトラインデータの示す輪郭線を
1つのラインごとに1つの輪郭点を決定してラスタ化す
る輪郭ラスタ化手段と、この輪郭ラスタ化手段によって
決定される前記輪郭線がライン処理方向と垂直方向に対
して増加する方向か減少する方向かによって前記輪郭線
で区切られる予め定められた一方向側の各ピクセルの値
を1ラインごとにインクリメントまたはディクリメント
する塗り潰し手段と、この塗り潰し手段によって塗り潰
される図形を記憶する塗り潰しバッファとを備えたこと
を特徴とする図形処理装置、及び、図形の輪郭を示すア
ウトラインデータをビットマップデータに変換する際に
この図形の内部または外部を塗り潰す図形処理方法であ
って、ループ内が図形となる外輪郭を示す外ループデー
タの方向とループ外が図形となる内輪郭を示す内ループ
データの方向とが逆方向となるように設定された前記ア
ウトラインデータの示す輪郭線を1つのラインごとに1
つの輪郭点を決定してラスタ化し、前記輪郭線がライン
処理方向と垂直方向に対して増加する方向か減少する方
向かによって前記輪郭線で区切られる予め定められた一
方向側の各ピクセルの値を1ラインごとにインクリメン
トまたはディクリメントするようにしたことを特徴とす
る図形処理方法を提供しようとするものである。
【0017】
【作用】輪郭描画と塗り潰しを並行して行なうことによ
り、特別に輪郭の性質を記憶することなく、尖鋭端問題
に対処する。また、アウトラインデータに記憶されてい
る外ループデータと内ループデータとをループの向きで
明確に区別し、輪郭点ごとに1ラインの加減算処理を行
なって、各ピクセルの値の正負から塗りつぶされたか否
かを判断することにより、重複部分の中抜けを防止する
ことができる。さらに、MPUの処理しやすいワード長
に複数ピクセルをまとめた状態で、特殊な判断を用いず
に簡単なアルゴリズムを使用して処理することにより、
処理速度を向上させることができる。
【0018】
【実施例】本発明の図形処理装置及びその方法の一実施
例を図面と共に説明する。図1は、本発明の図形処理装
置の一実施例を示す構成図である。同図において、指示
手段1は、処理を行う図形の種類(どの図形を処理する
か)、拡大縮小等の大きさ及び太さや形状等の修飾を指
示するものである。そして、この指示手段1よって指示
された図形のアウトラインデータが、アウトラインデー
タメモリ(アウトラインデータ記憶手段)2から輪郭ラ
スタ化手段3に供給される。アウトラインデータメモリ
2に記憶されている各図形のアウトラインデータは、ル
ープ内を図形として判断する外輪郭を示す外ループデー
タの方向とループ外を図形として判断する内輪郭を示す
内ループデータの方向とが逆方向となるようにして頂点
のデータと線の種類のデータがそれぞれ配列されたもの
である。そして、輪郭ラスタ化手段3によってこのアウ
トラインデータをラスタ化することによって輪郭を作成
する。このラスタ化は、後述するように、各頂点を結ぶ
輪郭線を形成する輪郭点を(塗り潰しバッファ5の)1
つのラインごとに1つづつ決定するようにして行い、塗
り潰し手段4を介して塗り潰しバッファ5に描画する。
さらに、塗り潰し手段4により、後述する加減算塗り潰
しを行って、塗り潰しバッファ5に描画されている図形
の各ピクセル(画素)の値をインクリメントまたはディ
クリメントし、一定値以下または以上となったピクセル
を塗り潰されたピクセルとすることにより、図形の塗り
潰しを行う。最後に、塗り潰しバッファ5に記憶された
図形を表示手段6に表示することにより、指示手段1に
て指示された図形を表示することができる。
【0019】また、図2に本発明の図形処理装置の具体
例を示す。図1に示した構成図と対比しながら説明する
と、キーボード1aは、処理を行う図形の種類、大きさ
及び修飾を指示する指示手段1に相当するものであり、
MPU(microprocessing unit)7は、プログラムRO
M8に記憶されているプログラムに従って、アウトライ
ンデータROM2aから供給されるアウトラインデータ
に対して演算を行い、VRAM等の塗り潰しバッファR
AM5aに出力して図形の描画と塗り潰しを行う回路で
ある。なお、アウトラインデータROM2aは図1のア
ウトラインデータメモリ2に相当し、MPU7とプログ
ラムROM8とが輪郭ラスタ化手段3と塗り潰し手段4
とに相当する。そして、塗り潰しバッファRAM5aは
塗り潰しバッファ5に相当している。塗り潰しバッファ
RAM5aに記憶された図形は、DA変換器9によりア
ナログビデオ信号に変換されて、CRT等の表示手段6
に出力される。
【0020】次に、本発明の主要部分である図形の輪郭
のラスタ化及び塗り潰しの方法について具体的に説明す
る。なお、図3以降の図面は、塗り潰しバッファ5内に
生成される2次元イメージ平面をXY座標で表し、X座
標の増加方向を塗り潰し処理の進む方向とし、Y座標の
増加方向が文字または図形の上方向、X座標の増加方向
が文字または図形の右方向として表したものである。ま
た、アウトラインデータメモリ2に記憶され、塗り潰し
の対象となる文字の輪郭を示すアウトラインデータは、
直線や近似曲線等で表現された一般的なアウトラインデ
ータで良いが、そのデータの配列方向は、外ループと内
ループとで逆向きに表現して、これらを明確に区別する
必要がある。なお、一般にアウトラインデータは、展開
処理系と対応づけられているので、このようなデータと
しても問題は生じない。
【0021】(1)まず、輪郭の作成について説明す
る。アウトラインデータから輪郭を作成するためには、
一般にDDA(Digital Differential Analyzer )アル
ゴリズムと呼ばれているアルゴリズムを使用する。この
DDAアルゴリズムについては、各種国内の公知文献に
記載されており、例えば、「実践コンピュータグラフィ
ックス--基礎手続きと応用--」山口富士夫監修に詳しく
紹介されている。DDAアルゴリズムは、直線をラスタ
化するために、その直線を示す微分方程式の解を漸化式
の形で表現し、XまたはYの値を1ピクセルづつ増加さ
せながら、輪郭点を決定するものである。そして、DD
Aアルゴリズムのなかでも整数型Bresenham アルゴリズ
ムは、少数値を使用せず、しかも除算を行わないため一
般的なデジタル処理系で扱うのに都合が良い。また、誤
差の少ない直線イメージのプロットが行なえるため、広
く用いられている。
【0022】このBresenham 一般化アルゴリズムは、C
RT等に描画された直線の輝度が、直線の向きによらず
視覚的に一定となるように考慮し、一般化されたもので
ある。そして、直線の向きをXY平面上の八分円で考
え、第2と第3、第4と第5、第6と第7、第8と第1
のそれぞれの八分円の組について、アルゴリズムの変
数としてXを選択するのか、Yを選択するのか、それ
ぞれ選択した変数をインクリメントするのか、デク
リメントするのか、の4種類を対応づけるものである。
【0023】本実施例では、Bresenham アルゴリズムを
使用するが、その目的は、描画された直線の輝度が、直
線の向きによらず視覚的に一定となるようにすることで
はなく、塗り潰し処理の開始点を決定することである。
そして、4種類全ての処理を考えると、1回に決まる塗
り潰し開始点の数が、塗り潰し処理方向から見て一つに
定まらず、不都合が生じるので、本実施例では、直線ベ
クトルの方向にかかわらず、Yのみを変数としてインク
リメントのみ行なう( 整数型Bresenham アルゴリズムの
第2と第3八分円の組に対応する処理内容) ことによ
り、開始点を定めている。
【0024】ここで、DDAアルゴリズムと塗り潰しと
の関連について説明する。図3(A)は整数型Bresenha
m 一般化アルゴリズムの第1八分円に対応する処理結果
の例であり、同図(B)は第2八分円に対する処理結果
の例である。そして、同図(A)ではX正方向に1つづ
つ増加させながら輪郭点を決定し、同図(B)では、Y
正方向に1つづつ増加させながら輪郭点を決定したもの
となっている。このようにして決定した輪郭点を塗り潰
し処理の開始点としてX正方向に塗り潰し処理を行なう
場合、同図(A)では、単一の輪郭線を形成する一つの
Y座標値(同一ライン)に対して、複数の輪郭点が存在
するので、塗り潰し開始点が複数存在することになっ
て、不都合が生じる。この結果、処理が重複するだけで
なく、反転や加減算の結果に誤りを生じる虞れがある。
【0025】これに対して、同図(B)では、単一の輪
郭線を形成する一つのY座標値に対しては、一つの輪郭
点しか存在しないので、塗り潰し開始点も一つに決定さ
れ、不都合は生じない。そこで、本実施例では、アウト
ラインデータがどの分円に当てはまるかの判断は行なわ
ず、第2と第3八分円の組に対応させて、変数がY座標
のみとなるように、DDAアルゴリズムを変形して使用
する。なお、このように対応させると輝度は一定となる
とは限らないが、処理の結果得られる輪郭点は、塗り潰
しの開始点として用いるためのものなので、輪郭の輝度
等の変化は問題とならない。
【0026】(2)次に、塗り潰しについて尖鋭端問題
を中心に説明する。本実施例の塗り潰し方法は、変形D
DAアルゴリズムを使用して1つのラインごとに1つの
輪郭点を決定してラスタ化することにより輪郭線を描画
し、この輪郭線がライン処理方向と垂直方向に対して増
加する方向であるときに輪郭線によって区切られた右側
の各ピクセルの値を1ラインごとにインクリメント(増
加)し、減少する方向であるときにデクリメント(減
少)して、その値が1以上となったピクセルを塗り潰す
ピクセルとしたものである。
【0027】具体的には、まず、各ピクセルを数ビット
の整数値で表現し、初期値を0とする。次に、変形DD
Aアルゴリズムにおいて、塗り潰し開始点が一つ決まる
ごとに、X座標値の増加方向に各ピクセル値の加減算を
行なう。そして、変形DDAアルゴリズム処理を行なう
際、もし、直線の始点のY座標値が終点のY座標値より
小さければ、始点から終点に向かって塗り潰し開始点を
決定して行く。そのとき、各ピクセルに対する操作はイ
ンクリメント(増加)である。もし、直線の始点のY座
標値が終点のY座標値より大きければ、終点から始点に
向って塗り潰し開始点を決定して行く。そのときの各ピ
クセルに対する操作は逆にデクリメント(減少)であ
る。
【0028】次に、この方法で、尖鋭端を含む図形の塗
り潰しを行なう場合について説明する。3点A(0,
0)、B(4,8)、C(7,0)からなる三角形を考
える。この三角形は外ループなので時計周りに定義され
る。まず、図4に示すように線分ABに対応する輪郭点
のプロットおよび塗り潰し処理を行なう。輪郭点は図中
矢印の方向に、黒丸で示す各点に定まり、一つの輪郭点
が決まるごとにその輪郭点とその輪郭点の右側すべての
点( 白丸の点) の値に加減算処理を行なう。この場合、
線分がY座標増加方向なので、加算処理を行ない、右側
各点の値は+1となる。
【0029】次に、図5に示すように、線分BCに対応
する輪郭点決定および塗り潰し処理を行なう。輪郭線は
点Bから点Cの向きに定義されているが、逆転して矢印
の方向(点Cから点Bへの方向)に描画する。輪郭点は
黒三角の各点に決まり、一つの輪郭点が決まるごとにそ
の輪郭点とその輪郭点の右側のすべての点( 白三角の
点) の値に加減算処理を行なう。この場合、線分をY座
標増加方向に逆転したので、減算処理を行なう。その結
果、各点の値は、図6に示す黒丸の点のみが+1、その
他の点は0となる。また、点Cと点AのY座標値は等し
いので、線分CAに対しては処理を行う必要はない。
【0030】このようにして塗り潰しを行うと、尖鋭端
を含む図形を塗り潰したときに尖鋭端が右側に尾を引く
ように塗り潰しが行われるなどの不都合が生じず、正確
な塗り潰しを行うことができる。なお、ここでは、一線
分に対するDDAアルゴリズムのループ条件を、Y変数
<終点のY座標値として例を示したが、条件をY変数≦
終点のY座標値としても結果は同じになる。
【0031】(3)さらに、塗り潰しについて重複問題
を中心に説明する。従来例にて使用した図10(A)に
示すアウトラインベクトルで定義されている片仮名
「ム」を同図(B)に示すように太くした場合に生じる
図形の重複の処理について説明する。なお、同図(B)
中、太い矢印で示した輪郭線の重複が発生した部分を拡
大したものを図7(A)〜(E)に示して説明する。こ
こでは、(2)で使用したのと同様、変形DDAアルゴ
リズムと加減算塗り潰しとを組み合わせた方法を使う。
【0032】まず、図7(A)に示す線分Aについて処
理を行なうと、線分AはY座標値増加方向なので、この
線分Aの左側は初期値0のままで、線分Aの右側は+1
となる。次に、同図(B)に示すように、線分Bについ
て処理を行なうと、線分BはY座標値減少方向なので、
線分Aと線分Bの間は+1のままで、線分Bの右側は差
し引き0となる。
【0033】さらに、同図(C)に示すように、線分C
について処理を行なうと、線分CはY座標値増加方向な
ので、線分Cの右側のピクセルをすべて+1にする。そ
の結果、線分Cの右側のうち線分Aと線分Bとで挾まれ
た部分(線分Cと線分Bとの間の部分)では+2とな
り、それ以外の部分(線分B及び線分Cよりも右側の部
分)では+1となる。また、線分Cの左側のうち線分A
と線分Bとで挾まれた部分(線分C及び線分Bよりも左
側の部分)は+1のままであり、それ以外の部分(線分
Bと線分Cとの間の部分)は0のままである。
【0034】そして、同図(D)に示すように、線分D
について処理を行なうと、線分Cと同様に、Y座標値増
加方向であることから線分Dの右側のピクセルをすべて
+1にし、図のように線分Dの右側ののうち線分Aと線
分Bとで挾まれた部分を+2にして、それ以外の部分を
+1にする。最後に、同図(E)に示すように、線分E
について処理を行なうと、線分EはY座標値減少方向な
ので、線分Eの右側のピクセルをすべて−1にして、そ
の値は差し引き0となる。そして、このように処理して
得られた値が正(1以上)であるピクセルを塗り潰すピ
クセルとすることにより、輪郭が重複した部分でも正し
い塗り潰し結果を得ることができる。
【0035】したがって、変形DDAアルゴリズムと加
減算塗り潰しとを組み合わせた方法を使うことにより、
尖鋭端問題と重複問題の両方を解決することができる。
また、上記実施例では、ループ内が図形となる外輪郭を
示す外ループデータについて説明したが、ループ外が図
形となる内輪郭を示す内ループデータの場合でも、その
データの配列方向を外ループデータと逆方向となるよう
にアウトラインデータを保持しておくことにより、全く
同様の処理で正しい塗り潰しを行うことができる。
【0036】(4)最後に、塗り潰しを高速化処理する
方法について説明する。ここでは、特にMPUを使用し
たソフトウエア処理において高速化する方法について説
明する。上記で説明した本発明の塗り潰し方法では、各
ピクセルに加減算処理を行うために、複数ビットで1ピ
クセルを表現する必要がある。実際に何ビット必要にな
るかは文字図形の複雑さによるが、通常日本語アウトラ
インフォントに使用する場合は、4ビット程度で十分で
ある。一方、一般的にMPUが扱うデータの処理単位は
2のべき乗であり、比較的大量のデータ処理を行なう場
合には、16ビットまたは32ビットのデータバス幅を
持つMPUが通常使用される。
【0037】ここで、複数ピクセルを組み合わせて効率
良く塗り潰し処理を行なう例として、16ビットアクセ
ス可能なバッファメモリを使って、4ビット/ピクセル
で表現されたデータの処理を考える。この場合、ピクセ
ル配置とメモリ配置は図18(A),(B)に示すよう
に対応づけることができる。なお、同図(A)はバッフ
ァメモリ上に文字のイメージを表現したときのピクセル
配置を示す図であり、同図(B)はMPUから見たバッ
ファメモリのアドレス配置図である。そして、1ワード
が16ビットのメモリに4ビットのピクセルを配置する
ので、1ワード内に4ピクセルが配置されることにな
る。
【0038】ここで、DDAアルゴリズム等で決定した
塗り潰し開始点(輪郭点)は、メモリ配置上では、ビッ
ト15−12、ビット11−8、ビット7−4、および
ビット3−0の4つの部分のいずれかに対応づけられた
データワードとなる。一方、塗り潰し開始点に対応づけ
られたデータワードよりピクセル配置上右側に対応する
データワードは、すべてのビット部分をインクリメント
またはデクリメント処理することになる。
【0039】したがって、図9に示すように、開始点の
塗り潰しは、上記4つの場合に分けられるが、ピクセル
配置上その右側に対応するデータワードは、全てビット
15−12に塗り潰し開始点が対応づけられた場合と同
等の処理を行なえばよいことになる。そして、上記の4
つの場合の対応づけの方法は、X軸方向1ライン分のピ
クセル数が、1データワードが表現するピクセル数
(4)の整数倍である(図9に示すような場合)と仮定
すれば、決定した塗り潰し開始点のX座標値を1データ
ワードが表現するピクセル数で割った際の余りに応じて
対応づけすることができる(図中、余りが0,1,2,
3のとき、それぞれa,b,c,d…an,bn,c
n,dnの各行に対応する)。
【0040】このように、4つの場合の対応づけを行っ
て、塗り潰し開始点及びその右側のピクセルをインクリ
メントまたはデクリメントしていき、最終的に1以上
(または0以下)となったピクセルを塗り潰されたとし
て処理すれば良い。
【0036】次に、ピクセルの持つ値の実際の表現方法
と実際の加減算方法について説明する。上記したよう
に、ピクセルの持つ値を通常の整数表現で処理しても良
いが、表現の方法を工夫することにより、ソフトウエア
で処理する際に、上記の組み合わせ処理を効率的に行な
うことができる。なお、この方法は、ハードウエアで構
成した場合でも高速処理が可能である。通常は符号つき
の整数を2進化表現する場合、2の補数表現で行なうこ
とが多いが、オフセットを付けた上で符号なし2進化整
数の形で表現することもできるので、ここでは、後者の
符号なし2進化整数の形で表現する場合を例にとって説
明する(なお、加減算する方の数値は、2の補数表現で
行なう)。
【0041】オフセット付き符号なし2進化整数の表現
をnビットで表現するときには、0の値を最上位ビット
以外がオールセットとし、2n /2の値をオールクリ
ア、−((2n /2)−1)の値をオールセットとしたビ
ット符号で表現する。そして、4ビット符号の例を示す
と、次のようになる。
【0042】
【0043】この値に対して加減算( インクリメントと
デクリメント) を行うには、 インクリメント: +0001 デクリメント: +1111(ただし、キャリーを無視) の演算を行なうことで成立する( なお、以下に示す演算
は、被加算値を2の補数表現にした場合でも加算値は同
じである) 。
【0044】この演算処理を複数ピクセルを組み合わせ
て処理する場合について図8(A),(B)及び図9の
場合を例にして説明する。4ピクセルの組み合わせに対
してインクリメントする場合は、上述したように塗り潰
し開始点に相当するビット部分の位置によって、加算値
は下記4つの場合に分けられる。
【0045】 塗り潰し開始 加算値(2進表現16ビット) ビット15-12: 0001 0001 0001 0001 ビット11-8 : 0000 0001 0001 0001 ビット 7-4 : 0000 0000 0001 0001 ビット 3-0 : 0000 0000 0000 0001
【0046】一方、デクリメントする場合は、キャリー
が上位のビットに伝搬するので、この処理に注意する必
要がある。例えば、初期化されている2ピクセルを両方
ともデクリメントする場合には、 初期値:±0 0111 0111 加算値:−1 1110 キャリ 1111 加算結果: 1000 ← 1000 となるように、最下位に配置されたピクセル部分以外
は、加算値がオールセット(2の補数表現の−1)では
なく、最下位ビットはクリア(2の補数表現の−2)と
する必要がある。
【0047】さらに、塗り潰し開始点に相当するビット
部分の位置が最上位にない場合は、開始点より左側に相
当する( デクリメントしない) ビット部分の加算値は、
キャリーを相殺するように、オールセット(2の補数表
現の−1)である必要がある。例えば、初期化されてい
る2ピクセルのうち、下位のピクセルのみをデクリメン
トするときは、 初期値:±0 、±0 0111 0111 加算値:±0 、−1 1111 キャリ 1111 加算結果: 0111 ← 1000 のようにする。
【0048】したがって、4ピクセルの組み合わせに対
してデクリメントする場合は、塗り潰し開始点に相当す
るビット部分の位置によって、加算値は下記4つの場合
に分けられ、それぞれに対応させた加算値を用いること
により、正しいデクリメントが可能となる。
【0049】 塗り潰し開始 加算値(2進表現16ビット) ビット15-12 : 1110 1110 1110 1111 ビット11-8 : 1111 1110 1110 1111 ビット 7-4 : 1111 1111 1110 1111 ビット 3-0 : 1111 1111 1111 1111
【0050】以上4ピクセルの場合のインクリメントと
デクリメントについて説明したが、本発明は、他のピク
セル数及び32ビットの場合などでも同様にして加算値
を求めて加減算を行うことができ、上記したような加算
値を加算するだけで、インクリメントやデクリメントを
行うことができるので、高速演算処理が可能であり、さ
らに、最終的な値を得てから塗り潰すピクセルを決定す
れば良いので、何度も反転処理を行う必要がなく、塗り
潰し処理も高速で行うことができる。
【0051】
【発明の効果】本発明の図形処理装置及びその方法は、
輪郭描画と塗り潰しを並行して行なっているので、特別
に輪郭の性質を記憶することなく、尖鋭端の塗り潰しを
正確に行うことができる。
【0052】また、アウトラインデータに記憶されてい
る外ループデータの方向と内ループデータの方向とを逆
方向にして明確に区別した上で、輪郭点ごとに1ライン
の加減算処理を行なって、各ピクセルの値の正負から塗
りつぶされたか否かを判断できるようにしているので、
重複部分の中抜けを防止することができる。また、外ル
ープデータと内ループデータとを区別することなく、同
じ処理で正確な塗り潰しを行うことができる。
【0053】さらに、MPUの処理しやすいワード長に
複数ピクセルをまとめた状態で、特殊な判断を用いずに
簡単なアルゴリズムを使用して処理しているので、高速
でのソフトウエア処理が可能となると共に、メモリを高
効率で利用することができる。そして、ハードウエアで
処理を行う場合も簡単な構成で実現することができる。
【0054】また、複数ピクセルを同時に扱うことによ
り、近年のMPUに一部実装されているハード的なデー
タバス幅の複数倍のデータビット数を単一命令にて処理
できるような機能を有効に利用することができるという
効果がある。
【図面の簡単な説明】
【図1】本発明の図形処理装置の一実施例を示す構成図
である。
【図2】本発明の図形処理装置の具体例を示す構成図で
ある。
【図3】(A)は整数型Bresenham 一般化アルゴリズム
の第1八分円に対応する処理結果の例を示す図、(B)
は同じく第2八分円に対応する処理結果の例を示す図で
ある。
【図4】本発明で尖鋭端を含む図形の塗り潰しを説明す
るための図である。
【図5】本発明で尖鋭端を含む図形の塗り潰しを説明す
るための図である。
【図6】本発明で尖鋭端を含む図形の塗り潰しを説明す
るための図である。
【図7】(A)〜(E)は本発明で塗り潰しの重複問題
を説明するための図である。
【図8】(A)は本発明の一実施例でバッファメモリ上
に文字のイメージを表現したときのピクセル配置を示す
図、(B)はMPUから見たバッファメモリのアドレス
配置を示す図である。
【図9】本発明の一実施例で開始点の塗り潰しの場合分
けについて説明するためのピクセル配置を示す図であ
る。
【図10】(A)は文字の例を示す図、(B)はその文
字の太さを変形した例を示す図である。
【図11】(A)〜(E)は従来の塗り潰しの重複問題
を説明するための図である。
【図12】従来例を説明するための図である。
【図13】(A),(B)はそれぞれ従来例の問題点を
説明するための図である。
【図14】(A)は図形の例を示す図、(B)はそのベ
クトル例を示す図である。
【図15】(A)は図形の例を示す図、(B)〜(E)
はその図形の塗り潰し結果の例を示す図である。
【図16】図14の図形の輪郭描画を行なった例を示す
図である。
【図17】図14の図形の輪郭描画を行なった例を示す
図である。
【図18】(A)は図形の例を示す図、(B)はそのベ
クトル例を示す図である。
【図19】図18の図形の輪郭描画を行なった例を示す
図である。
【図20】図18の図形の輪郭描画を行なった例を示す
図である。
【符号の説明】
1 指示手段 1a キーボード 2 アウトラインデータメモリ(アウトラインデータ記
憶手段) 2a アウトラインデータROM 3 輪郭ラスタ化手段 4 塗り潰し手段 5 塗り潰しバッファ 5a 塗り潰しバッファRAM 6 表示手段 7 MPU(microprocessing unit) 8 プログラムROM 9 DA変換器
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 平1−166180(JP,A) 特開 平2−59872(JP,A) 特開 平3−171089(JP,A) 特開 平4−684(JP,A) 特開 平4−342085(JP,A) 特開 昭63−118989(JP,A) 特開 昭60−132271(JP,A) (58)調査した分野(Int.Cl.6,DB名) G06T 11/20 - 11/40

Claims (4)

    (57)【特許請求の範囲】
  1. 【請求項1】少なくとも図形の種類や大きさを指示する
    指示手段と、 ループ内が図形となる外輪郭を示す外ループデータの方
    向とループ外が図形となる内輪郭を示す内ループデータ
    の方向とが逆方向となるように設定されたアウトライン
    データを記憶するアウトラインデータ記憶手段と、 前記指示手段によって指示された図形の前記アウトライ
    ンデータが前記アウトラインデータ記憶手段から供給さ
    れ、前記アウトラインデータの示す輪郭線を1つのライ
    ンごとに1つの輪郭点を決定してラスタ化する輪郭ラス
    タ化手段と、 この輪郭ラスタ化手段によって決定される前記輪郭線が
    ライン処理方向と垂直方向に対して増加する方向か減少
    する方向かによって前記輪郭線で区切られる予め定めら
    れた一方向側の各ピクセルの値を1ラインごとにインク
    リメントまたはディクリメントする塗り潰し手段と、 この塗り潰し手段によって塗り潰される図形を記憶する
    塗り潰しバッファとを備えたことを特徴とする図形処理
    装置。
  2. 【請求項2】図形の輪郭を示すアウトラインデータをビ
    ットマップデータに変換する際にこの図形の内部または
    外部を塗り潰す図形処理方法であって、 ループ内が図形となる外輪郭を示す外ループデータの方
    向とループ外が図形となる内輪郭を示す内ループデータ
    の方向とが逆方向となるように設定された前記アウトラ
    インデータの示す輪郭線を1つのラインごとに1つの輪
    郭点を決定してラスタ化し、 前記輪郭線がライン処理方向と垂直方向に対して増加す
    る方向か減少する方向かによって前記輪郭線で区切られ
    る予め定められた一方向側の各ピクセルの値を1ライン
    ごとにインクリメントまたはディクリメントするように
    したことを特徴とする図形処理方法。
  3. 【請求項3】請求項1記載の図形処理装置に使用される
    図形処理方法であって、 1ピクセルのデータを複数ビットの符号つき整数または
    オフセットつきの符号なし整数で表現し、塗り潰し手段
    の1データワードに複数ピクセル分のデータを格納し
    て、この1データワード単位またはその整数倍を単位と
    してインクリメントまたはディクリメント処理すること
    を特徴とする図形処理方法。
  4. 【請求項4】請求項3記載の図形処理方法であって、 塗り潰し開始点に相当する複数ビット部分よりライン処
    理方向の逆方向に相当する複数ビット部分をオールクリ
    アにし、塗り潰し開始点に相当する複数ビット部分とそ
    の複数ビット部分よりライン処理方向の順方向に相当す
    る複数ビット部分のそれぞれの最下位ビットをセットに
    してそれ以外の各ビットをクリアにした加算値を加算す
    ることにより、インクリメント操作を行い、 塗り潰し開始点に相当する複数ビット部分よりライン処
    理方向の逆方向に相当する複数ビット部分をオールセッ
    トにし、塗り潰し開始点に相当する複数ビット部分がデ
    ータワードの最下位にない場合はその最下位ビットをク
    リアにしてそれ以外の各ビットをセットにし、塗り潰し
    開始点に相当する複数ビット部分よりライン処理方向の
    順方向に相当する複数ビット部分がデータワードの最下
    位にない場合はその最下位ビットをクリアにしてそれ以
    外の各ビットをセットにし、最下位の複数ビット部分を
    オールセットにした加算値を加算することにより、デク
    リメント操作を行なうことを特徴とする図形処理方法。
JP5325990A 1993-11-30 1993-11-30 図形処理装置及びその方法 Expired - Lifetime JP2888270B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5325990A JP2888270B2 (ja) 1993-11-30 1993-11-30 図形処理装置及びその方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5325990A JP2888270B2 (ja) 1993-11-30 1993-11-30 図形処理装置及びその方法

Publications (2)

Publication Number Publication Date
JPH07152920A JPH07152920A (ja) 1995-06-16
JP2888270B2 true JP2888270B2 (ja) 1999-05-10

Family

ID=18182871

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5325990A Expired - Lifetime JP2888270B2 (ja) 1993-11-30 1993-11-30 図形処理装置及びその方法

Country Status (1)

Country Link
JP (1) JP2888270B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3098439B2 (ja) * 1997-01-16 2000-10-16 日本電気株式会社 多角形の輪郭抽出装置
JP3950777B2 (ja) 2002-09-30 2007-08-01 キヤノン株式会社 画像処理方法、画像処理装置および画像処理プログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01166180A (ja) * 1987-12-22 1989-06-30 Fujitsu Ltd 図形の塗潰し処理装置

Also Published As

Publication number Publication date
JPH07152920A (ja) 1995-06-16

Similar Documents

Publication Publication Date Title
EP0356103B1 (en) Scan-conversion process and processor
JP3483946B2 (ja) フォント処理装置及びフォント処理方法
US5355449A (en) Method and apparatus for outline font character generation in dot matrix devices
US5719595A (en) Method and apparauts for generating a text image on a display with anti-aliasing effect
EP0624849B1 (en) System and method of rendering curves
US5428728A (en) Method and apparatus for outline font character generation in dot matrix devices
EP0592770B1 (en) Method for filling of interior pixels within a polygon
EP0344686B1 (en) Clipping process and processor
JP2009301284A (ja) 描画装置および方法
US5489920A (en) Method for determining the optimum angle for displaying a line on raster output devices
JPH05204363A (ja) ドットマトリクス装置における輪郭字体文字生成のための高速垂直走査−変換・充填方法及びその装置
JP2888270B2 (ja) 図形処理装置及びその方法
JP3009525B2 (ja) ベクトル画像描画装置
JP2634851B2 (ja) 画像処理装置
EP0392499B1 (en) Apparatus for generating high-quality character pattern
US6504543B1 (en) Polygon drawing method and polygon drawing apparatus
US5297244A (en) Method and system for double error antialiasing in a computer display system
JP2674287B2 (ja) グラフィックマイクロコンピュータ
US5428719A (en) Method and apparatus for generating high-quality pattern in accordance with an edge defining a character pattern
JP3493745B2 (ja) 図形描画装置
EP0391401A2 (en) Method and apparatus for generating high-quality pattern
US5444834A (en) Filling pattern generation apparatus and method including correction for pattern overflow
JP2782904B2 (ja) 多角形塗りつぶし方式
JPH06118935A (ja) 文字データ発生装置
JP2630843B2 (ja) 直線描画方法及び装置

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090219

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090219

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100219

Year of fee payment: 11

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110219

Year of fee payment: 12

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120219

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120219

Year of fee payment: 13

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120219

Year of fee payment: 13

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120219

Year of fee payment: 13

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130219

Year of fee payment: 14

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130219

Year of fee payment: 14

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140219

Year of fee payment: 15

EXPY Cancellation because of completion of term