JPH0520468A - 画像処理方法及びその装置 - Google Patents
画像処理方法及びその装置Info
- Publication number
- JPH0520468A JPH0520468A JP17209991A JP17209991A JPH0520468A JP H0520468 A JPH0520468 A JP H0520468A JP 17209991 A JP17209991 A JP 17209991A JP 17209991 A JP17209991 A JP 17209991A JP H0520468 A JPH0520468 A JP H0520468A
- Authority
- JP
- Japan
- Prior art keywords
- line
- edge
- contour
- numbered
- data
- 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
Links
Landscapes
- Image Generation (AREA)
Abstract
(57)【要約】 (修正有)
【目的】 輪郭内部を塗りつぶす際に、高速で、しかも
少ないメモリ容量で意図した通りの塗りつぶしが可能な
画像処理方法を得る。 【構成】 閉輪郭を決定する各線要素において、注目線
要素が水平であるときその線要素のページメモリ3への
描画は行わない。水平でない場合には、注目線要素と隣
接するそれぞれの線要素との接続関係及び塗りつぶすべ
き領域の方向に基づいて、注目線要素のエッジテーブル
を作成する。ただし、奇数番目に遭遇する輪郭位置と偶
数番目に遭遇する輪郭位置とがおなじである場合を除
く。出力段階で、注目しているラインの輪郭ドットをラ
インメモリ3に書き込み、中塗り回路5は、ラインメモ
リ3の主走査方向に走査するときの奇数番目に遭遇する
輪郭は当該画素位置が領域の正転位置を示しているとし
て、偶数番目に遭遇する輪郭の進行方向にある隣接画素
位置は当該画素位置が領域の反転位置を示しているとし
て各ドットを出力する。
少ないメモリ容量で意図した通りの塗りつぶしが可能な
画像処理方法を得る。 【構成】 閉輪郭を決定する各線要素において、注目線
要素が水平であるときその線要素のページメモリ3への
描画は行わない。水平でない場合には、注目線要素と隣
接するそれぞれの線要素との接続関係及び塗りつぶすべ
き領域の方向に基づいて、注目線要素のエッジテーブル
を作成する。ただし、奇数番目に遭遇する輪郭位置と偶
数番目に遭遇する輪郭位置とがおなじである場合を除
く。出力段階で、注目しているラインの輪郭ドットをラ
インメモリ3に書き込み、中塗り回路5は、ラインメモ
リ3の主走査方向に走査するときの奇数番目に遭遇する
輪郭は当該画素位置が領域の正転位置を示しているとし
て、偶数番目に遭遇する輪郭の進行方向にある隣接画素
位置は当該画素位置が領域の反転位置を示しているとし
て各ドットを出力する。
Description
【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は画像処理方法及びその装
置、詳しくは複数の線要素でもって構成された閉輪郭の
内部を塗り潰す画像処理方法及びその装置に関するもの
である。
置、詳しくは複数の線要素でもって構成された閉輪郭の
内部を塗り潰す画像処理方法及びその装置に関するもの
である。
【0002】
【従来の技術】この種の装置においては、閉領域内部を
塗りつぶすことは基本的な画像処理機能の1つであり、
これまで種々の塗りつぶし方法が提案されている。
塗りつぶすことは基本的な画像処理機能の1つであり、
これまで種々の塗りつぶし方法が提案されている。
【0003】最も基本的な方法は、ソフトウェアによつ
て、ランダム・アクセス・メモリ(RAM)の各画素ラ
イン毎に塗り潰し範囲を逐一指定し、指定された範囲の
ライン画素を塗りつぶすものである。
て、ランダム・アクセス・メモリ(RAM)の各画素ラ
イン毎に塗り潰し範囲を逐一指定し、指定された範囲の
ライン画素を塗りつぶすものである。
【0004】このような方法の代表例としては、文献
「Fundamentals of Interactive Computer Graphics 」
(J.D.FOLEY/A.VAN DAM 共著 1982年Addison-Wesl
ey刊pp.456〜460)に記載されている。
「Fundamentals of Interactive Computer Graphics 」
(J.D.FOLEY/A.VAN DAM 共著 1982年Addison-Wesl
ey刊pp.456〜460)に記載されている。
【0005】この方法を簡単に説明すると以下の通りで
ある。
ある。
【0006】頂点データ列で与えられた図2Aに示す様
な閉図形F1について、該図形を構成する各稜線エッジ
e1〜e13についてそれぞれ図3で示すバケットデー
タを生成し、これらを図4で示すエッジテーブル(E
T)の形にまとめる。このとき、水平なエッジを除き、
水平でないエッジのみに対してバケットデータを作成す
る。エッジテーブル(ET)は、画像メモリが格納し得
る走査線ラスタ数に等しいだけのポインタバケットテー
ブルAy 0〜Ay n(画像が第0ラスタから第nラスタ
までのn+1ラスタから成る場合)を有している。そし
て、各稜線エッジe1〜e13の中で水平でないものに
対して、y座標値が小さい方の端点のy座標値に対応し
たポインタバケットテーブルに、それらそれぞれのエッ
ジのバケットデータをリスト構造で接続する。複数のバ
ケットが同じポインタバケットからリスト構造をなす場
合には、それぞれのバケット内のy座標値が小さい方の
端点のxの値(xmin )で昇順にソートしてリスト構造
を形成する。対応するエッジバケットのないポインタバ
ケットには、その旨を示すマーカーコードλを格納す
る。また、各稜線のy座標方向の極小値あるいは極大値
でない場合には、図形要素内外判定での誤判定を引き起
こさないために、本来のy座標値より1走査分だけ該稜
線に沿って進んだ位置をもってy座標値の小さい方の端
点としてエッジテーブル(ET)を生成する。図2Aで
は、e3の端点C、e12の端点M、e11の端点Lが
これに該当する。
な閉図形F1について、該図形を構成する各稜線エッジ
e1〜e13についてそれぞれ図3で示すバケットデー
タを生成し、これらを図4で示すエッジテーブル(E
T)の形にまとめる。このとき、水平なエッジを除き、
水平でないエッジのみに対してバケットデータを作成す
る。エッジテーブル(ET)は、画像メモリが格納し得
る走査線ラスタ数に等しいだけのポインタバケットテー
ブルAy 0〜Ay n(画像が第0ラスタから第nラスタ
までのn+1ラスタから成る場合)を有している。そし
て、各稜線エッジe1〜e13の中で水平でないものに
対して、y座標値が小さい方の端点のy座標値に対応し
たポインタバケットテーブルに、それらそれぞれのエッ
ジのバケットデータをリスト構造で接続する。複数のバ
ケットが同じポインタバケットからリスト構造をなす場
合には、それぞれのバケット内のy座標値が小さい方の
端点のxの値(xmin )で昇順にソートしてリスト構造
を形成する。対応するエッジバケットのないポインタバ
ケットには、その旨を示すマーカーコードλを格納す
る。また、各稜線のy座標方向の極小値あるいは極大値
でない場合には、図形要素内外判定での誤判定を引き起
こさないために、本来のy座標値より1走査分だけ該稜
線に沿って進んだ位置をもってy座標値の小さい方の端
点としてエッジテーブル(ET)を生成する。図2Aで
は、e3の端点C、e12の端点M、e11の端点Lが
これに該当する。
【0007】それぞれの稜線エッジに対応する各エッジ
バケット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におけるλは、こ
れ以上結ぶエッジバケットがないことを意味している
(図3)。
バケット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におけるλは、こ
れ以上結ぶエッジバケットがないことを意味している
(図3)。
【0008】なお、x方向は、走査線方向(図示で右方
向)に一致し、y方向は、走査線のインクリメント方向
(図示で下方向)に一致している。
向)に一致し、y方向は、走査線のインクリメント方向
(図示で下方向)に一致している。
【0009】このようにして作成されたエッジテーブル
(ET)を利用して、塗り潰し処理を実行する。まず。
エッジテーブル(ET)にエッジバケットを有する最小
のy座標値に走査線y座標値をセットする。次いで、そ
の走査線y座標値についてエッジバケットを結び、アク
ティブエッジテーブル(AET)(図5参照)を空に初
期化する。
(ET)を利用して、塗り潰し処理を実行する。まず。
エッジテーブル(ET)にエッジバケットを有する最小
のy座標値に走査線y座標値をセットする。次いで、そ
の走査線y座標値についてエッジバケットを結び、アク
ティブエッジテーブル(AET)(図5参照)を空に初
期化する。
【0010】これ以降、アクティブエッジテーブル(A
ET)及びエッジテーブル(ET)が共に空になるま
で、以下の処理をくり返す。
ET)及びエッジテーブル(ET)が共に空になるま
で、以下の処理をくり返す。
【0011】(1)アクティブエッジテーブル(AE
T)のx座標値(xmin )でのソート順を保ちながら、
そのときのエッジテーブル(ET)の情報とアクティブ
エッジテーブル(AET)との情報とを併合して、走査
線y座標値にかかるエッジバケットを結ぶ新たなアクテ
ィブエッジテーブル(AET)を作成する。
T)のx座標値(xmin )でのソート順を保ちながら、
そのときのエッジテーブル(ET)の情報とアクティブ
エッジテーブル(AET)との情報とを併合して、走査
線y座標値にかかるエッジバケットを結ぶ新たなアクテ
ィブエッジテーブル(AET)を作成する。
【0012】(2)アクティブエッジテーブル(AE
T)のx座標値(xmin )が小さい方から2個ずつを対
として、その間を図形要素内の塗り潰し区間とし、その
区間内の塗り潰しを実行する。
T)のx座標値(xmin )が小さい方から2個ずつを対
として、その間を図形要素内の塗り潰し区間とし、その
区間内の塗り潰しを実行する。
【0013】(3)走査線y座標値をy座標が大きい方
の端点のyの値(ymax )とするエッジバケットを次の
走査線における動作のためにアクティブエッジテーブル
(AET)から削除する。
の端点のyの値(ymax )とするエッジバケットを次の
走査線における動作のためにアクティブエッジテーブル
(AET)から削除する。
【0014】(4)アクティブエッジテーブル(AE
T)に残つているエッジバケットについて、次の走査線
における動作のために増分データ(△x)を利用して、
x座標値(xmin )を更新する。即ち、xmin +△xを
もつて、新しくxmin とし直す。
T)に残つているエッジバケットについて、次の走査線
における動作のために増分データ(△x)を利用して、
x座標値(xmin )を更新する。即ち、xmin +△xを
もつて、新しくxmin とし直す。
【0015】(5)かかるx座標値(xmin )の更新
後、x座標値(xmin )に基づいてソーテイングし直
す。
後、x座標値(xmin )に基づいてソーテイングし直
す。
【0016】(6)走査線y座標をインクリメントして
(1)の処理に戻る。
(1)の処理に戻る。
【0017】この様にして、塗り潰しが実行される。こ
こで、図5は走査線y座標値が“14”の場合の図2A
に示す図形F1に関するアクティブエッジテーブル(A
ET)である。また、図6は同じく各走査線y座標値
(0〜19)に渡ってのアクティブエッジテーブル(A
ET)の状態の推移を示したものである。
こで、図5は走査線y座標値が“14”の場合の図2A
に示す図形F1に関するアクティブエッジテーブル(A
ET)である。また、図6は同じく各走査線y座標値
(0〜19)に渡ってのアクティブエッジテーブル(A
ET)の状態の推移を示したものである。
【0018】この他にも、ハードウェアにより高速に塗
りつぶしを行うために種々の手法が提案されている。
りつぶしを行うために種々の手法が提案されている。
【0019】この種の方法は、図形の輪郭を定める画素
のみを画像メモリ上に描画した後、この画像メモリをラ
スタ走査を行い、走査線上の奇数番目の輪郭線ドツトで
塗りつぶしを開始し、偶数番目の輪郭線ドツトで塗りつ
ぶしを終了する(以降、奇偶反転法と呼ぶ)ものであ
る。
のみを画像メモリ上に描画した後、この画像メモリをラ
スタ走査を行い、走査線上の奇数番目の輪郭線ドツトで
塗りつぶしを開始し、偶数番目の輪郭線ドツトで塗りつ
ぶしを終了する(以降、奇偶反転法と呼ぶ)ものであ
る。
【0020】しかし、奇偶反転法を用いる場合は、単純
に輪郭の描画を行うと、図7のL1,L2,L3,L
4,L5,L6のように塗りつぶされるべきではない部
分が塗りつぶされ、塗りつぶされるべき部分が塗りつぶ
されない(ラインL3,L4の破線部分)という問題が
あった。
に輪郭の描画を行うと、図7のL1,L2,L3,L
4,L5,L6のように塗りつぶされるべきではない部
分が塗りつぶされ、塗りつぶされるべき部分が塗りつぶ
されない(ラインL3,L4の破線部分)という問題が
あった。
【0021】これをふまえて、輪郭描画に規則を設定し
て、改善を計る提案もなされている。
て、改善を計る提案もなされている。
【0022】例えば、特公平1−54752号公報に
は、下記の5つの規則に従った輪郭画素の書き込みを開
示している。
は、下記の5つの規則に従った輪郭画素の書き込みを開
示している。
【0023】規則1:水平な線セグメントは書かない。
【0024】規則2:各線セグメントは各ライン当り1
画素で表す。
画素で表す。
【0025】規則3:各線ベクトルの始点は書かない。
【0026】規則4:輪郭線画素はこの画素を書込もう
としているメモリ・アドレスに記憶されている画素デー
タとの排他的ORを取つて、その結果を書き込む。
としているメモリ・アドレスに記憶されている画素デー
タとの排他的ORを取つて、その結果を書き込む。
【0027】規則5:各線セグメントは上から下または
下から上への一方向で指定する。
下から上への一方向で指定する。
【0028】規則1は図7のラインL2やL4のように
水平な輪郭線部分に含まれる輪郭画素P10〜P9及び
P11〜P1やP4〜P3によって1つのラインに奇数
個の輪郭画素を防止している。
水平な輪郭線部分に含まれる輪郭画素P10〜P9及び
P11〜P1やP4〜P3によって1つのラインに奇数
個の輪郭画素を防止している。
【0029】規則2は、線セグメントの角度に関係なく
常に1ライン当り1画素で輪郭線を表すためのものであ
る。
常に1ライン当り1画素で輪郭線を表すためのものであ
る。
【0030】規則3は、上向きまたは下向きの頂点を除
去するものである。規則5に従って例えば上から下への
一方向で線セグメントを指定するものとすれば、規則3
は図7の上向きの頂点の輪郭線画素P5およびP6を除
去する。
去するものである。規則5に従って例えば上から下への
一方向で線セグメントを指定するものとすれば、規則3
は図7の上向きの頂点の輪郭線画素P5およびP6を除
去する。
【0031】規則4および規則5は、規則3によつて処
理される頂点と反対向きの頂点の輪郭線画素(この例で
はP7及びP8)を除去するものである。
理される頂点と反対向きの頂点の輪郭線画素(この例で
はP7及びP8)を除去するものである。
【0032】
【発明が解決しようとしている課題】しかしながら、上
記従来例の前者、即ち、ソフトウェアによる方法では、
塗りつぶし範囲の指定のみならず、塗りつぶしの実行自
体もソフトウェアで行われるために、処理時間がかかり
すぎるといる欠点があった。また、図8は、この従来法
で図2Aに示す図形F1に関しての処理結果を表したも
のであるが、この図8のP2〜P1の区間の如くに、水
平エッジ上の各点が塗りつぶされない場合が発生し、生
成図形が歪んでしまうことがあるという欠点もあった。
記従来例の前者、即ち、ソフトウェアによる方法では、
塗りつぶし範囲の指定のみならず、塗りつぶしの実行自
体もソフトウェアで行われるために、処理時間がかかり
すぎるといる欠点があった。また、図8は、この従来法
で図2Aに示す図形F1に関しての処理結果を表したも
のであるが、この図8のP2〜P1の区間の如くに、水
平エッジ上の各点が塗りつぶされない場合が発生し、生
成図形が歪んでしまうことがあるという欠点もあった。
【0033】また、上記従来例の後者、即ちハードウェ
アにより高速に塗りつぶしを行う方法では塗りつぶしの
実行速度は前者と比べて高速ではあるが、反面、全ての
輪郭線を最初に描画してしまう必要があるため、一画像
全面分の画像メモリを必要とし、コスト高を引き起こす
という欠点があった。また、図9は、この従来法(後
者)で図2Aに示す図形F1に関して、その記載された
方法で塗りつぶし範囲を決定し、同公報で推奨される方
法により塗りつぶしを実行した際に得られる結果を表し
たものであるが、この方法においてもやはり、図9にお
けるP5、P8の如き頂点画素や、P5〜P10、P9
〜P10、P9〜P15、P11〜P1及びP1〜P1
2、P13〜P3、P14〜P8といった部分も塗りつ
ぶされず、生成図形に歪を生じるという欠点を有してい
た。
アにより高速に塗りつぶしを行う方法では塗りつぶしの
実行速度は前者と比べて高速ではあるが、反面、全ての
輪郭線を最初に描画してしまう必要があるため、一画像
全面分の画像メモリを必要とし、コスト高を引き起こす
という欠点があった。また、図9は、この従来法(後
者)で図2Aに示す図形F1に関して、その記載された
方法で塗りつぶし範囲を決定し、同公報で推奨される方
法により塗りつぶしを実行した際に得られる結果を表し
たものであるが、この方法においてもやはり、図9にお
けるP5、P8の如き頂点画素や、P5〜P10、P9
〜P10、P9〜P15、P11〜P1及びP1〜P1
2、P13〜P3、P14〜P8といった部分も塗りつ
ぶされず、生成図形に歪を生じるという欠点を有してい
た。
【0034】また、上記従来方法等で発生した図形の歪
みを補うために、図10に示すように、他にまた輪郭線
だけを描画して、この輪郭線画素と歪んだ図形との画素
毎の論理和をとって歪みのない図形として出力する方式
も試みられているが、この場合には、処理に要するメモ
リ量が、図形を生成したメモリの他に輪郭線のみの画像
を保持する分まで必要となったり、輪郭線のみの画像を
生成するための時間や回路が余分に必要になったりし
て、やはり好ましくない。
みを補うために、図10に示すように、他にまた輪郭線
だけを描画して、この輪郭線画素と歪んだ図形との画素
毎の論理和をとって歪みのない図形として出力する方式
も試みられているが、この場合には、処理に要するメモ
リ量が、図形を生成したメモリの他に輪郭線のみの画像
を保持する分まで必要となったり、輪郭線のみの画像を
生成するための時間や回路が余分に必要になったりし
て、やはり好ましくない。
【0035】本発明は従来技術に鑑みなされたものであ
り、輪郭内部を塗りつぶす際に、高速で、しかも少ない
メモリ容量で意図した通りの塗りつぶし結果をえること
を可能にする画像処理方法及びその装置を提供しようと
するものである。
り、輪郭内部を塗りつぶす際に、高速で、しかも少ない
メモリ容量で意図した通りの塗りつぶし結果をえること
を可能にする画像処理方法及びその装置を提供しようと
するものである。
【0036】
【課題を解決するための手段】この課題を解決するため
本発明の画像処理方法は以下に示す行程を備える。すな
わち、複数の線要素でもって構成された閉輪郭の内部を
塗り潰す画像処理方法において、線要素の連続する一方
向における、注目線要素とその前後に隣接するそれぞれ
の線要素との接続関係及び塗りつぶすべき領域の方向に
基づいて、主走査から見たときの輪郭線データを生成す
る輪郭線データ生成行程と、主走査方向に走査するとき
に、奇数番目に遭遇する輪郭位置とその直後の偶数番目
に遭遇する輪郭位置とが同じである場合を除き、奇数番
目に遭遇する輪郭は当該画素位置が領域の正転位置を示
しているとして、偶数番目に遭遇する輪郭の進行方向に
ある隣接画素位置は当該画素位置が領域の反転位置を示
しているとして設定する設定行程と、各走査線上の走査
方向から見て、奇数番目の輪郭位置から偶数番目の位置
の直前の画素位置までを閉図形の領域内、それ以外は閉
図形の領域外であると判定する判定行程とを備える。
本発明の画像処理方法は以下に示す行程を備える。すな
わち、複数の線要素でもって構成された閉輪郭の内部を
塗り潰す画像処理方法において、線要素の連続する一方
向における、注目線要素とその前後に隣接するそれぞれ
の線要素との接続関係及び塗りつぶすべき領域の方向に
基づいて、主走査から見たときの輪郭線データを生成す
る輪郭線データ生成行程と、主走査方向に走査するとき
に、奇数番目に遭遇する輪郭位置とその直後の偶数番目
に遭遇する輪郭位置とが同じである場合を除き、奇数番
目に遭遇する輪郭は当該画素位置が領域の正転位置を示
しているとして、偶数番目に遭遇する輪郭の進行方向に
ある隣接画素位置は当該画素位置が領域の反転位置を示
しているとして設定する設定行程と、各走査線上の走査
方向から見て、奇数番目の輪郭位置から偶数番目の位置
の直前の画素位置までを閉図形の領域内、それ以外は閉
図形の領域外であると判定する判定行程とを備える。
【0037】また、本発明の画像処理装置は以下に示す
構成を備える。
構成を備える。
【0038】複数の線要素でもって構成された閉輪郭の
内部を塗り潰す画像処理装置において、線要素の連続す
る一方向における、注目線要素とその前後に隣接するそ
れぞれの線要素との接続関係及び塗りつぶすべき領域の
方向に基づいて、主走査から見たときの輪郭線データを
生成する輪郭線データ生成手段と、主走査方向に走査す
るとき、奇数番目に遭遇する輪郭位置とその直後の偶数
番目に遭遇する輪郭位置とが同じである場合を除き、奇
数番目に遭遇する輪郭は当該画素位置が領域の正転位置
を示しているとして、偶数番目に遭遇する輪郭の進行方
向にある隣接画素位置は当該画素位置が領域の反転位置
を示しているとして設定する設定手段と、各走査線上の
走査方向から見て、奇数番目の輪郭位置から偶数番目の
位置の直前の画素位置までを閉図形の領域内、それ以外
は閉図形の領域外であると判定する判定手段とを備え
る。
内部を塗り潰す画像処理装置において、線要素の連続す
る一方向における、注目線要素とその前後に隣接するそ
れぞれの線要素との接続関係及び塗りつぶすべき領域の
方向に基づいて、主走査から見たときの輪郭線データを
生成する輪郭線データ生成手段と、主走査方向に走査す
るとき、奇数番目に遭遇する輪郭位置とその直後の偶数
番目に遭遇する輪郭位置とが同じである場合を除き、奇
数番目に遭遇する輪郭は当該画素位置が領域の正転位置
を示しているとして、偶数番目に遭遇する輪郭の進行方
向にある隣接画素位置は当該画素位置が領域の反転位置
を示しているとして設定する設定手段と、各走査線上の
走査方向から見て、奇数番目の輪郭位置から偶数番目の
位置の直前の画素位置までを閉図形の領域内、それ以外
は閉図形の領域外であると判定する判定手段とを備え
る。
【0039】
【作用】かかる本発明の画像処理方法或いは装置におい
て、閉輪郭を決定する各線要素において、線要素の連続
する一方向における、注目線要素とその前後に隣接する
それぞれの線要素との接続関係及び塗りつぶすべき領域
の方向に基づいて、主走査から見たときの輪郭線データ
を生成する。ただし、このとき、奇数番目に遭遇する輪
郭位置とその直後の偶数番目に遭遇する輪郭位置とが同
じである場合を除く。そして、主走査方向に走査すると
きの奇数番目に遭遇する輪郭は当該画素位置が領域の正
転位置を示しているとして、偶数番目に遭遇する輪郭の
進行方向にある隣接画素位置は当該画素位置が領域の反
転位置を示しているとして設定する。そして、各走査線
上の走査方向から見て、奇数番目の輪郭位置から偶数番
目の位置の直前の画素位置までを閉図形の領域内、それ
以外は閉図形の領域外であると判定する。
て、閉輪郭を決定する各線要素において、線要素の連続
する一方向における、注目線要素とその前後に隣接する
それぞれの線要素との接続関係及び塗りつぶすべき領域
の方向に基づいて、主走査から見たときの輪郭線データ
を生成する。ただし、このとき、奇数番目に遭遇する輪
郭位置とその直後の偶数番目に遭遇する輪郭位置とが同
じである場合を除く。そして、主走査方向に走査すると
きの奇数番目に遭遇する輪郭は当該画素位置が領域の正
転位置を示しているとして、偶数番目に遭遇する輪郭の
進行方向にある隣接画素位置は当該画素位置が領域の反
転位置を示しているとして設定する。そして、各走査線
上の走査方向から見て、奇数番目の輪郭位置から偶数番
目の位置の直前の画素位置までを閉図形の領域内、それ
以外は閉図形の領域外であると判定する。
【0040】
【実施例】以下、添付図面に従って本発明にかかる実施
例を詳細に説明する。
例を詳細に説明する。
【0041】<動作概要の説明>先ず、実施例における
動作概要を簡単に説明する。
動作概要を簡単に説明する。
【0042】実施例では、図形の輪郭として、所定方向
に方向付けられた輪郭を用いる。即ち、扱う図形の輪郭
を全て時計の回転方向(以下右回り、)に連なるアウト
ラインベクトル(線要素)の集まり、もしくは、扱う図
形の輪郭を全て反時計の回転方向(以下、左回り)に連
なるアウトラインベクトルの集まりとして表す。ここ
で、時計の回転方向に連なるアウトラインベクトルと
は、そのアウトラインベクトルの右側を塗りつぶすと該
当図形が塗りつぶされることを意味すると考えて良い
(図11)。また、反時計の回転方向に連なるアウトラ
インベクトルとは、そのアウトラインベクトルの左側を
塗りつぶすと該当図形が塗りつぶされるものである(図
12)。
に方向付けられた輪郭を用いる。即ち、扱う図形の輪郭
を全て時計の回転方向(以下右回り、)に連なるアウト
ラインベクトル(線要素)の集まり、もしくは、扱う図
形の輪郭を全て反時計の回転方向(以下、左回り)に連
なるアウトラインベクトルの集まりとして表す。ここ
で、時計の回転方向に連なるアウトラインベクトルと
は、そのアウトラインベクトルの右側を塗りつぶすと該
当図形が塗りつぶされることを意味すると考えて良い
(図11)。また、反時計の回転方向に連なるアウトラ
インベクトルとは、そのアウトラインベクトルの左側を
塗りつぶすと該当図形が塗りつぶされるものである(図
12)。
【0043】さて、実施例では、各アウトラインベクト
ルの向きを判断し、かつまた、該アウトラインベクトル
の直前のアウトラインベクトルの向き、及び直後のアウ
トラインベクトルの向きによって、該当ベクトルの各端
点及び両端点以外のベクトル上の端点を閉区間をなす境
界点の判定に用いるか否かを判定する。しかる後に、各
走査毎に該走査線と交差する奇数番目の境界判定用エッ
ジか、偶数番目の境界判定用エッジかで、メモリ上の対
応する画素位置にプロットするか、主走査方向に一画素
隣の位置にプロットするかを制御する。ただし、このと
き、偶数番目の境界エッジ位置と直後の奇数番目の境界
エッジ位置が同画素位置なら共にプロットしない。この
後、前記一走査線分のデータを水平走査して、奇数番目
のプロットから偶数番目のプロットの直前の画素まで塗
りつぶしを行う様にしたものである。
ルの向きを判断し、かつまた、該アウトラインベクトル
の直前のアウトラインベクトルの向き、及び直後のアウ
トラインベクトルの向きによって、該当ベクトルの各端
点及び両端点以外のベクトル上の端点を閉区間をなす境
界点の判定に用いるか否かを判定する。しかる後に、各
走査毎に該走査線と交差する奇数番目の境界判定用エッ
ジか、偶数番目の境界判定用エッジかで、メモリ上の対
応する画素位置にプロットするか、主走査方向に一画素
隣の位置にプロットするかを制御する。ただし、このと
き、偶数番目の境界エッジ位置と直後の奇数番目の境界
エッジ位置が同画素位置なら共にプロットしない。この
後、前記一走査線分のデータを水平走査して、奇数番目
のプロットから偶数番目のプロットの直前の画素まで塗
りつぶしを行う様にしたものである。
【0044】<装置構成の説明>以下、実施例の画像処
理装置の具体的説明を行う。
理装置の具体的説明を行う。
【0045】図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とが、ビデオインタフェースとして
接続されている。
に構成した実施例の画像処理装置のブロック構成図を示
している。図中、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とが、ビデオインタフェースとして
接続されている。
【0046】輪郭データは、対象とする画像内に含まれ
ている閉ループの数を示すデータと各閉ループを構成す
る頂点の数を示すデータ群とで構成される。ただし、各
閉ループ上の各頂点は、それぞれの閉ループ上で予め方
向づけられた順番に従って、隣合う頂点の関係を維持し
たままのデータの集まりとして表現される。この内容を
図13に示した。
ている閉ループの数を示すデータと各閉ループを構成す
る頂点の数を示すデータ群とで構成される。ただし、各
閉ループ上の各頂点は、それぞれの閉ループ上で予め方
向づけられた順番に従って、隣合う頂点の関係を維持し
たままのデータの集まりとして表現される。この内容を
図13に示した。
【0047】先に説明したように、実施例では、輪郭デ
ータを所定方向に並んだデータの集まりとしてとらえて
いる。例えば、図2Bに示したのは、右回りアウトライ
ンデータの例で、その輪郭データは図14に示した如く
になる。図14において、図2Bの図形F1のあるとラ
インは、A→B→C→D→E→F→G→H→I→J→K
→L→M→Aの順にA点を開始点として右まわりに一巡
する点列として表現されている。
ータを所定方向に並んだデータの集まりとしてとらえて
いる。例えば、図2Bに示したのは、右回りアウトライ
ンデータの例で、その輪郭データは図14に示した如く
になる。図14において、図2Bの図形F1のあるとラ
インは、A→B→C→D→E→F→G→H→I→J→K
→L→M→Aの順にA点を開始点として右まわりに一巡
する点列として表現されている。
【0048】以下、実施例では、座標の原点は画像の左
上隅にあるものとし、主走査方向(右方向)をx軸に、
副走査方向(下方向)をy軸として説明する。また、ア
ウトラインは、右回りのデータ表現をとるものとして説
明を進める。尚、各閉ループ内の始点は、ループ上の任
意の点でよい。
上隅にあるものとし、主走査方向(右方向)をx軸に、
副走査方向(下方向)をy軸として説明する。また、ア
ウトラインは、右回りのデータ表現をとるものとして説
明を進める。尚、各閉ループ内の始点は、ループ上の任
意の点でよい。
【0049】<主処理の説明>図15に、実施例におけ
るCPU1の動作処理手順を示し、以下にそれを説明す
る。
るCPU1の動作処理手順を示し、以下にそれを説明す
る。
【0050】CPU1は、ステップS1でその処理を開
始するとステップS2へ進む。ステップS2では、ライ
ンメモリ3をリセットする。このとき、CPU1は、ラ
インメモリへ入力されるデータが、一定値0が書き込ま
れる様に図示しない付加回路を設定し、同時に同期制御
回路6に、この一定値をラスタメモリ3へ一面書き込ま
せる様に制御をすることによって、ラスタメモリ3のリ
セットを行う。同期制御回路6は、CPU1より指示を
受けると、前記CPU1により設定された一定値をラス
タメモリ3へ書き込むためにラスタメモリ内の全域に渡
るアドレスを順次発生し、書き込みに要する同期信号を
生成して、ラスタメモリ3内の一連のアドレス領域内に
前記一定値を書き込ませてリセットを実行した後、CP
U1にその終了を示す信号を図示しない制御レジスター
を介して通知する。CPU1は、この信号を検知するこ
とによって、ラインメモリのリセットを知ることが可能
である。CPU1は、ステップS2にて、ラインメモリ
のクリアを実行した後、ステップS3へ進む。ステップ
S3では、CPU1は、外部よりI/O4を経由して画
像の入力があったか否かを判定し、出力指示があるまで
待つ。外部からの画像の入力があると、ステップS4に
進み、塗り潰し用の輪郭データをI/O4を経由して外
部より入力し、RAM2に格納する。尚、ここで言う外
部とは、外部インタフェース荷接続された装置のみでは
なく、図示しない補助記憶装置もその対象にしても構わ
ない。また、塗り潰し用の輪郭データとは、前述した如
く図13に示した形式で表現された、アウトラインベク
トルデータ群である。次に、ステップS5では、図30
に示した規則に従って、前述した図3に示すデータ形式
で、各エッジに対するデータを作成し、図4に示した形
式のエッジテーブル(ET)を作成して、ステップS6
へ進む。尚、ステップS5の処理の詳細は、追って説明
する。
始するとステップS2へ進む。ステップS2では、ライ
ンメモリ3をリセットする。このとき、CPU1は、ラ
インメモリへ入力されるデータが、一定値0が書き込ま
れる様に図示しない付加回路を設定し、同時に同期制御
回路6に、この一定値をラスタメモリ3へ一面書き込ま
せる様に制御をすることによって、ラスタメモリ3のリ
セットを行う。同期制御回路6は、CPU1より指示を
受けると、前記CPU1により設定された一定値をラス
タメモリ3へ書き込むためにラスタメモリ内の全域に渡
るアドレスを順次発生し、書き込みに要する同期信号を
生成して、ラスタメモリ3内の一連のアドレス領域内に
前記一定値を書き込ませてリセットを実行した後、CP
U1にその終了を示す信号を図示しない制御レジスター
を介して通知する。CPU1は、この信号を検知するこ
とによって、ラインメモリのリセットを知ることが可能
である。CPU1は、ステップS2にて、ラインメモリ
のクリアを実行した後、ステップS3へ進む。ステップ
S3では、CPU1は、外部よりI/O4を経由して画
像の入力があったか否かを判定し、出力指示があるまで
待つ。外部からの画像の入力があると、ステップS4に
進み、塗り潰し用の輪郭データをI/O4を経由して外
部より入力し、RAM2に格納する。尚、ここで言う外
部とは、外部インタフェース荷接続された装置のみでは
なく、図示しない補助記憶装置もその対象にしても構わ
ない。また、塗り潰し用の輪郭データとは、前述した如
く図13に示した形式で表現された、アウトラインベク
トルデータ群である。次に、ステップS5では、図30
に示した規則に従って、前述した図3に示すデータ形式
で、各エッジに対するデータを作成し、図4に示した形
式のエッジテーブル(ET)を作成して、ステップS6
へ進む。尚、ステップS5の処理の詳細は、追って説明
する。
【0051】さて、ステップS6では注目する走査線位
置をページ内の先頭の走査線位置にセットする。即ち、
y=0の走査線位置とする。また、前述の図5に示した
如きアクティブエッジポインタ領域を確保する。そし
て、ステップS7へ進む。ステップS7では、注目走査
位置における、前述の図5の如き形式のアクティブエッ
ジテーブル(AET)を生成して、これに基づき、ライ
ンメモリ3上に、輪郭点のプロットを行う。ステップS
7の処理の詳細も追って説明する。ステップS7の処理
が終了すると、ステップS8に進み、プリンタが記録可
能状態(レディ)になるのを待つ。
置をページ内の先頭の走査線位置にセットする。即ち、
y=0の走査線位置とする。また、前述の図5に示した
如きアクティブエッジポインタ領域を確保する。そし
て、ステップS7へ進む。ステップS7では、注目走査
位置における、前述の図5の如き形式のアクティブエッ
ジテーブル(AET)を生成して、これに基づき、ライ
ンメモリ3上に、輪郭点のプロットを行う。ステップS
7の処理の詳細も追って説明する。ステップS7の処理
が終了すると、ステップS8に進み、プリンタが記録可
能状態(レディ)になるのを待つ。
【0052】プリンタがレディになると、処理はステッ
プS9に進む。ここでは、先のステップS7にて描画さ
れた当該走査線位置にある輪郭点データに基づき、輪郭
点間の領域を塗り潰す動作を行いながら、該ラインバッ
ファの再クリアも同時に実行する。このステップS9の
処理内容も、追つてまた説明する。ステップS9の処理
を終えると、ステップS10へ進む。ステップS10で
は、注目する走査線位置を1ライン進める。即ち、それ
までy=iの走査位置を注目していたなら、y=i+1
とする。そして、ステップS11へ進む。ステップS1
1では、ページ内の最終走査線位置まで終了したか否か
を判定する。最終走査線位置まで終了している場合、ス
テップS12へ進み、一連の処理を終了する。最終走査
線位置までは終了していない場合は、ステップS7へ戻
つて、次ラインの処理を続ける。最終走査線か否かは、
図示せぬルーチンにおいて、あらかじめ描画しようとす
るページ内に含まれる走査線数を保持しておき、この走
査線数と、注目走査線位置とを比較することにより、判
定する。
プS9に進む。ここでは、先のステップS7にて描画さ
れた当該走査線位置にある輪郭点データに基づき、輪郭
点間の領域を塗り潰す動作を行いながら、該ラインバッ
ファの再クリアも同時に実行する。このステップS9の
処理内容も、追つてまた説明する。ステップS9の処理
を終えると、ステップS10へ進む。ステップS10で
は、注目する走査線位置を1ライン進める。即ち、それ
までy=iの走査位置を注目していたなら、y=i+1
とする。そして、ステップS11へ進む。ステップS1
1では、ページ内の最終走査線位置まで終了したか否か
を判定する。最終走査線位置まで終了している場合、ス
テップS12へ進み、一連の処理を終了する。最終走査
線位置までは終了していない場合は、ステップS7へ戻
つて、次ラインの処理を続ける。最終走査線か否かは、
図示せぬルーチンにおいて、あらかじめ描画しようとす
るページ内に含まれる走査線数を保持しておき、この走
査線数と、注目走査線位置とを比較することにより、判
定する。
【0053】<エッジテーブル作成処理の説明>ステッ
プS5のエッジテーブル作成処理の詳細を図16のフロ
ーチャートを用いて説明する。
プS5のエッジテーブル作成処理の詳細を図16のフロ
ーチャートを用いて説明する。
【0054】先ず、ステップS50で、その処理を開始
すると、ステップS51へ進む。ステップS51では、
エッジテーブルの初期化を行う。即ち、図17に示す如
く、生成しようとしているページ内に含まれる走査線数
(ここでは、0〜NまでのN+1ライン)分のアドレス
ポインタ(以下、ポインタバケットとも呼ぶ)領域Ay
0〜Ay NをRAM2上に確保し、その各領域に、参照
データは存在しないことを示すマーカー値“λ”を格納
する。次のステップS52では、図13に示される形式
で与えられるアウトラインデータの閉ループ数Nを参照
し、ステップS53へ進む。ステップS53では、該ル
ープ数Nが0よりも大きな値であるか否かを吟味し、0
以下ならステップS68へ進み、その一連の処理を終え
て、メインフローに復帰する。また、0よりも大きな値
であれば、ステップS54へ進む。このステップS54
では、図13の形式で与えられるアウトラインデータの
各ループ内頂点数テーブルの第0ループ内の頂点数を格
納してある位置にループ内頂点数テーブルポインタを初
期化して、ステップS55へ進む。ステップS55で
は、ループ内頂点数テーブルポインタに指される位置の
ループ内頂点数データを参照して、ステップS56へ進
む。ステップS56では、該頂点数が2以上であるか否
かを判断し、2未満なら閉じた領域を表しているとはい
えないのでステップS68へ進む。また、頂点数が2以
上であれば、ステップS57へ進む。
すると、ステップS51へ進む。ステップS51では、
エッジテーブルの初期化を行う。即ち、図17に示す如
く、生成しようとしているページ内に含まれる走査線数
(ここでは、0〜NまでのN+1ライン)分のアドレス
ポインタ(以下、ポインタバケットとも呼ぶ)領域Ay
0〜Ay NをRAM2上に確保し、その各領域に、参照
データは存在しないことを示すマーカー値“λ”を格納
する。次のステップS52では、図13に示される形式
で与えられるアウトラインデータの閉ループ数Nを参照
し、ステップS53へ進む。ステップS53では、該ル
ープ数Nが0よりも大きな値であるか否かを吟味し、0
以下ならステップS68へ進み、その一連の処理を終え
て、メインフローに復帰する。また、0よりも大きな値
であれば、ステップS54へ進む。このステップS54
では、図13の形式で与えられるアウトラインデータの
各ループ内頂点数テーブルの第0ループ内の頂点数を格
納してある位置にループ内頂点数テーブルポインタを初
期化して、ステップS55へ進む。ステップS55で
は、ループ内頂点数テーブルポインタに指される位置の
ループ内頂点数データを参照して、ステップS56へ進
む。ステップS56では、該頂点数が2以上であるか否
かを判断し、2未満なら閉じた領域を表しているとはい
えないのでステップS68へ進む。また、頂点数が2以
上であれば、ステップS57へ進む。
【0055】ステップS57では、該当ループの最終頂
点を始点として、最初の頂点を終点とするエッジを現エ
ッジ(注目エッジ)とみなし、このエッジの向きとxの
増分を算出する。即ち、今該当エッジの始点座標を(x
start,ystart )、終点座標を(xend,yend )とする
時、ystart =yend の時、エッジの向きは水平であ
り、x増分は算出しない。この時、x start>xend な
ら、左向きエッジとし、Xstart <xend なら、右向き
エッジとする。また、この時、xstart =xend という
のは、始点と終点が一致している一点のみのエッジを意
味し、その前もしくは後のエッジの一部となっている
か、孤立点である。このようなエッジは、図13で示さ
れるデータを形成する際に、輪郭を構成するエッジの頂
点列から、あらかじめ除去されているものとする。
点を始点として、最初の頂点を終点とするエッジを現エ
ッジ(注目エッジ)とみなし、このエッジの向きとxの
増分を算出する。即ち、今該当エッジの始点座標を(x
start,ystart )、終点座標を(xend,yend )とする
時、ystart =yend の時、エッジの向きは水平であ
り、x増分は算出しない。この時、x start>xend な
ら、左向きエッジとし、Xstart <xend なら、右向き
エッジとする。また、この時、xstart =xend という
のは、始点と終点が一致している一点のみのエッジを意
味し、その前もしくは後のエッジの一部となっている
か、孤立点である。このようなエッジは、図13で示さ
れるデータを形成する際に、輪郭を構成するエッジの頂
点列から、あらかじめ除去されているものとする。
【0056】y start>y endの時は、エッジの向きを
上向きと判定し、xの増分は(xstart −xend )/
(ystart −yend )で算出する。
上向きと判定し、xの増分は(xstart −xend )/
(ystart −yend )で算出する。
【0057】ystart <y endの時は、エッジの向きを
下向きと判定し、Xの増分は、(Xend −Xstart )/
(yend −ystart )で算出する。
下向きと判定し、Xの増分は、(Xend −Xstart )/
(yend −ystart )で算出する。
【0058】このステップS57の処理を終えると、ス
テップS58へ進み、当該ループの最初の頂点(第0頂
点)を始点として、次の頂点(第1頂点)を終点とする
エッジを次エッジ(注目エッジに対して、輪郭ループ
上、次に接続しているエッジ、即ち、注目エッジの終点
を始点とするエッジ)とし、このエッジの向きとxの増
分を、ステップS57と同様に求める。ステップS58
の処理を終えると、ステップS59へ進む。ステップS
59では、注目する頂点座標テーブルポインタを、図1
3でいう当該ループの第0頂点座標のデータの格納され
るアドレス値に設定を行って、ステップS60へ進む。
ステップS60では、この時点の直前における現エッジ
データ(現エッジの向き及びxの増分)をもつて、前エ
ッジ(注目エッジに対して、輪郭ループ上、その直前に
接続しているエッジ、即ち、注目エッジの始点を終点と
するエッジ)データとする。そして、ステップS61へ
進む。ステップS61では、この時点の直前における次
エッジデータ(次エッジの向き及びxの増分)をもっ
て、現エッジデータとする。そして、ステップS62へ
進む。ステップS62では、、次エッジデータ(次エッ
ジの向き及びxの増分)を、ステップS57と同様に求
める。この時、次エッジの始点は、現エッジの終点であ
り、次エッジの終点は、もちろん、現エッジの終点に対
して、ループ上の次の頂点である。これらは、注目する
頂点位置の次の頂点位置、及び、次の次の頂点位置のデ
ータを参照することにより、得られるが、この時点での
注目する頂点位置が、該ループの最終頂点にある時は、
次エッジとは、当該ループの第0頂点が始点となり、第
1頂点が終点となる。また、注目する頂点位置が、該ル
ープの最終頂点の直前の頂点にある時には、最終頂点が
始点となり、第0頂点が終点となる様に制御も行ってい
る。
テップS58へ進み、当該ループの最初の頂点(第0頂
点)を始点として、次の頂点(第1頂点)を終点とする
エッジを次エッジ(注目エッジに対して、輪郭ループ
上、次に接続しているエッジ、即ち、注目エッジの終点
を始点とするエッジ)とし、このエッジの向きとxの増
分を、ステップS57と同様に求める。ステップS58
の処理を終えると、ステップS59へ進む。ステップS
59では、注目する頂点座標テーブルポインタを、図1
3でいう当該ループの第0頂点座標のデータの格納され
るアドレス値に設定を行って、ステップS60へ進む。
ステップS60では、この時点の直前における現エッジ
データ(現エッジの向き及びxの増分)をもつて、前エ
ッジ(注目エッジに対して、輪郭ループ上、その直前に
接続しているエッジ、即ち、注目エッジの始点を終点と
するエッジ)データとする。そして、ステップS61へ
進む。ステップS61では、この時点の直前における次
エッジデータ(次エッジの向き及びxの増分)をもっ
て、現エッジデータとする。そして、ステップS62へ
進む。ステップS62では、、次エッジデータ(次エッ
ジの向き及びxの増分)を、ステップS57と同様に求
める。この時、次エッジの始点は、現エッジの終点であ
り、次エッジの終点は、もちろん、現エッジの終点に対
して、ループ上の次の頂点である。これらは、注目する
頂点位置の次の頂点位置、及び、次の次の頂点位置のデ
ータを参照することにより、得られるが、この時点での
注目する頂点位置が、該ループの最終頂点にある時は、
次エッジとは、当該ループの第0頂点が始点となり、第
1頂点が終点となる。また、注目する頂点位置が、該ル
ープの最終頂点の直前の頂点にある時には、最終頂点が
始点となり、第0頂点が終点となる様に制御も行ってい
る。
【0059】ステップS62の処理を終えると、ステッ
プS63に進み、この時点における前エッジデータ、現
エッジデータ及び次エッジデータを元に、現エッジデー
タに関して、前述の図3に示した形態のバケットデータ
を作成する。そして、該バケットデータをエッジテーブ
ル内に追加して、エッジテーブルを更新する。この処理
の内容は、後に詳述する。ステップS63の処理を終了
すると、ステップS64へ進む。ステップS64では、
注目する頂点座標テーブルポインタの値を更新し、ルー
プ上の次の頂点の座標テーブルの位置とする。そして、
ステップS65で、当該ループ内の全エッジ分の処理が
完了したか否かを判定し、完了していれば、ステップS
66へ進み、そうでなければ、ステップS60へ戻っ
て、次のエッジに対する一連の処理を続ける。全エッジ
分の処理が完了したか否かは、例えば、各ループ毎に、
このステップS65を通過した回数をカウントしてお
き、その回数が、当該ループ内に含まれる頂点の数を越
えたか否かで判定することができる。
プS63に進み、この時点における前エッジデータ、現
エッジデータ及び次エッジデータを元に、現エッジデー
タに関して、前述の図3に示した形態のバケットデータ
を作成する。そして、該バケットデータをエッジテーブ
ル内に追加して、エッジテーブルを更新する。この処理
の内容は、後に詳述する。ステップS63の処理を終了
すると、ステップS64へ進む。ステップS64では、
注目する頂点座標テーブルポインタの値を更新し、ルー
プ上の次の頂点の座標テーブルの位置とする。そして、
ステップS65で、当該ループ内の全エッジ分の処理が
完了したか否かを判定し、完了していれば、ステップS
66へ進み、そうでなければ、ステップS60へ戻っ
て、次のエッジに対する一連の処理を続ける。全エッジ
分の処理が完了したか否かは、例えば、各ループ毎に、
このステップS65を通過した回数をカウントしてお
き、その回数が、当該ループ内に含まれる頂点の数を越
えたか否かで判定することができる。
【0060】ステップS66では、ループ内頂点数テー
ブルポインタを次のループのデータを保持する位置に更
新して、ステップS67へ進む。ステップS67では、
当該輪郭データ内に含まれる全てのループに対して一連
の処理が完了したか否かを判定し、完了していれば、ス
テップS68へ進み、そうでなければ、ステップS55
へ戻つて、次のループに対する一連の処理を続ける。
ブルポインタを次のループのデータを保持する位置に更
新して、ステップS67へ進む。ステップS67では、
当該輪郭データ内に含まれる全てのループに対して一連
の処理が完了したか否かを判定し、完了していれば、ス
テップS68へ進み、そうでなければ、ステップS55
へ戻つて、次のループに対する一連の処理を続ける。
【0061】全ループの処理を完了したか否かは、例え
ば、このステップS67を通過した回数をカウントして
おき、その回数が、当該輪郭データ内に含まれるループ
の数を越えたか否かで判定することができる。ステップ
S68では、エッジテーブル(ET)作成の処理を終了
して、メインルーチンへ戻る。
ば、このステップS67を通過した回数をカウントして
おき、その回数が、当該輪郭データ内に含まれるループ
の数を越えたか否かで判定することができる。ステップ
S68では、エッジテーブル(ET)作成の処理を終了
して、メインルーチンへ戻る。
【0062】<エッジテーブル更新処理の説明>以下、
図16のステップS63の処理内容を図30及び図18
を用いて説明する。
図16のステップS63の処理内容を図30及び図18
を用いて説明する。
【0063】ステップS63においては、現エッジ、前
エッジ及び次エッジの向きを用いて処理を進める。現エ
ッジに対する図3に示した形態のバケットデータを作成
する際に、その生成規則を図30に示した。
エッジ及び次エッジの向きを用いて処理を進める。現エ
ッジに対する図3に示した形態のバケットデータを作成
する際に、その生成規則を図30に示した。
【0064】まず、現エッジが水平エッジ、即ち、向き
が左向きであるか、または右向きである場合は、このエ
ッジに対しては、バケットデータは生成せず、エッジテ
ーブルも更新しない。従って、図30には、表記してい
ない。現エッジが上向きもしくは、下向きの時には、前
エッジデータの内容によつて、始1〜始8及び終1〜終
9の場合に分けて考える。
が左向きであるか、または右向きである場合は、このエ
ッジに対しては、バケットデータは生成せず、エッジテ
ーブルも更新しない。従って、図30には、表記してい
ない。現エッジが上向きもしくは、下向きの時には、前
エッジデータの内容によつて、始1〜始8及び終1〜終
9の場合に分けて考える。
【0065】まず、現エッジの始点の取扱いに注目し、
現エッジが上向きである場合(始1〜始5)を説明す
る。
現エッジが上向きである場合(始1〜始5)を説明す
る。
【0066】前エッジも上向きの場合(ケース始1)
は、現エッジの始点は、実際よりも、一走査線だけ、エ
ッジに沿って終点に移動した点にあるとして、バケット
データを作成する。前エッジが下向きの場合(ケース始
2)なら、始点は、実際の位置の点そのものとして、バ
ケットデータを作成する。前エッジが左向きの場合(ケ
ース始3)は、現エッジの始点は、実際の位置の点その
ものとしてバケットデータを作成し、前エッジが右向き
の場合(ケース始4)は、現エッジの始点は、実際より
も一走査線だけエッジに沿って終点に移動した点にある
としてバケットデータを作成する。
は、現エッジの始点は、実際よりも、一走査線だけ、エ
ッジに沿って終点に移動した点にあるとして、バケット
データを作成する。前エッジが下向きの場合(ケース始
2)なら、始点は、実際の位置の点そのものとして、バ
ケットデータを作成する。前エッジが左向きの場合(ケ
ース始3)は、現エッジの始点は、実際の位置の点その
ものとしてバケットデータを作成し、前エッジが右向き
の場合(ケース始4)は、現エッジの始点は、実際より
も一走査線だけエッジに沿って終点に移動した点にある
としてバケットデータを作成する。
【0067】次に、現エッジが下向きである場合(始5
〜始8)を見ると、前エッジが、上向きの場合(ケース
始5)なら、始点は、実際の位置の点そのものとしてバ
ケットデータを作成する。前エッジが右向きの場合(ケ
ース始8)も、始点は実際の位置の点そのものとしてバ
ケットデータを作成する。前エッジが下向きの場合(ケ
ース始6)及び左向きの場合(ケース始7)には、始点
は、実際よりも一走査線だけエッジに沿って終点に移動
した点にあるとしてバケットデータを作成する。
〜始8)を見ると、前エッジが、上向きの場合(ケース
始5)なら、始点は、実際の位置の点そのものとしてバ
ケットデータを作成する。前エッジが右向きの場合(ケ
ース始8)も、始点は実際の位置の点そのものとしてバ
ケットデータを作成する。前エッジが下向きの場合(ケ
ース始6)及び左向きの場合(ケース始7)には、始点
は、実際よりも一走査線だけエッジに沿って終点に移動
した点にあるとしてバケットデータを作成する。
【0068】次に、現エッジの終点の取扱いに注目した
場合を説明する。先ず、現エッジが上向きである場合
(終1〜終4)を説明する。
場合を説明する。先ず、現エッジが上向きである場合
(終1〜終4)を説明する。
【0069】次エッジも上向きの場合(ケース終1)
は、現エッジの終点は、実際の位置の点そのものとして
バケットデータを作成する。次エッジが下向きの場合
(ケース終2)も、現エッジの終点は、実際の位置の点
そのものとして、バケットデータを作成する。次エッジ
が左向きの場合(ケース終3)には、現エッジの終点は
実際の位置よりも一走査線だけエッジに沿って始点に戻
った点にあるとして、バケットデータを作成する。次エ
ッジが右向きの場合(ケース終4)には、現エッジの終
点は、実施の位置の点そのものとしてバケットデータを
作成する。
は、現エッジの終点は、実際の位置の点そのものとして
バケットデータを作成する。次エッジが下向きの場合
(ケース終2)も、現エッジの終点は、実際の位置の点
そのものとして、バケットデータを作成する。次エッジ
が左向きの場合(ケース終3)には、現エッジの終点は
実際の位置よりも一走査線だけエッジに沿って始点に戻
った点にあるとして、バケットデータを作成する。次エ
ッジが右向きの場合(ケース終4)には、現エッジの終
点は、実施の位置の点そのものとしてバケットデータを
作成する。
【0070】次に現エッジが下向きの場合(終5〜終
8)を説明する。
8)を説明する。
【0071】次エッジが上向きの場合(ケース5)は、
現エッジの終点は、実際の位置の点そのものとしてバケ
ットデータを作成する。次エッジが下向きの場合(ケー
ス終6)には、現エッジの終点は、実際の位置の点にあ
るとしてバケットデータを作成する。次エッジが左向き
の場合(ケース終7)には、現エッジの終点は、実際の
位置の点そのものとしてバケットデータを作成する。次
エッジが右向きの場合(ケース終8)には、現エッジの
終点は、実際の位置よりも一走査線だけエッジに沿って
戻った位置にある点としてバケットデータを作成する。
現エッジの終点は、実際の位置の点そのものとしてバケ
ットデータを作成する。次エッジが下向きの場合(ケー
ス終6)には、現エッジの終点は、実際の位置の点にあ
るとしてバケットデータを作成する。次エッジが左向き
の場合(ケース終7)には、現エッジの終点は、実際の
位置の点そのものとしてバケットデータを作成する。次
エッジが右向きの場合(ケース終8)には、現エッジの
終点は、実際の位置よりも一走査線だけエッジに沿って
戻った位置にある点としてバケットデータを作成する。
【0072】以上の生成規則に従つて、図3に示した形
態のバケットデータが現エッジに対して生成される。
態のバケットデータが現エッジに対して生成される。
【0073】以上説明した処理がステップS63で行わ
れることになるが、結局CPU1は図18に示すフロー
チャートに従って処理することになる。
れることになるが、結局CPU1は図18に示すフロー
チャートに従って処理することになる。
【0074】先ず、ステップS630にて、その一連の
処理を開始すると、ステップS631へ進む。この時、
入力データとしては、ステップS60で更新された前エ
ッジデータ(前エッジの向き)と、ステップS61で更
新された現エッジデータ(現エッジの始点と終点の座標
値(それぞれ(xstart ,ystart ).(xend ,yen
d )とする)、向き、及びx増分△xnow )、及びステ
ップS62で作成された次エッジデータ(次エッジの向
き)がある。
処理を開始すると、ステップS631へ進む。この時、
入力データとしては、ステップS60で更新された前エ
ッジデータ(前エッジの向き)と、ステップS61で更
新された現エッジデータ(現エッジの始点と終点の座標
値(それぞれ(xstart ,ystart ).(xend ,yen
d )とする)、向き、及びx増分△xnow )、及びステ
ップS62で作成された次エッジデータ(次エッジの向
き)がある。
【0075】ステップS631では、現エッジの向きが
水平か否か(即ち、右向きもしくは左向きのいずれかで
あるかどうか)を判定し、水平であれば、ステップS6
41へ進み、その一連の処理を終えて、本処理をコール
した次のステップ(ステップS64)へ戻る。
水平か否か(即ち、右向きもしくは左向きのいずれかで
あるかどうか)を判定し、水平であれば、ステップS6
41へ進み、その一連の処理を終えて、本処理をコール
した次のステップ(ステップS64)へ戻る。
【0076】また、水平でなければ、ステップS632
へ進み、現エッジの向きは上向きか否かを判定し、上向
きであれば、ステップS633へ進んで以下上向きエッ
ジ用のバケットデータの生成を行っていく。一方、上向
きでなければ(下向きエッジならば)ステップS642
へ進んで、以下、下向きエッジ用のバケットデータの生
成を行つていく。
へ進み、現エッジの向きは上向きか否かを判定し、上向
きであれば、ステップS633へ進んで以下上向きエッ
ジ用のバケットデータの生成を行っていく。一方、上向
きでなければ(下向きエッジならば)ステップS642
へ進んで、以下、下向きエッジ用のバケットデータの生
成を行つていく。
【0077】現エッジが上向きエッジであると判断して
ステップS633に進むと、図3の形態のエッジバケッ
トを一旦そのまま作成する。即ち、ymax =ystart ,
xmin =xend ,△x=△xnow として作成し、ポイン
タは、ここではλ(接続先がないことを示すマーカー)
を持たせておく。加えて、ステップS640において、
このエッジバケットがETに登録される際に、該エッジ
バケットが、どのポインタバケットに接続すべきデータ
かを示す値ymin も設定し、ここでは、ymin =yend
と設定する。ここでymax とは、現エッジの両端点(始
点と終点)において、y座標の大きい方の端点のyの値
であり、xmin とymin とは、y座標の小さい法の端点
のxの値とyの値を意味する。xの増分△xとは、現エ
ッジ上の点が現エッジに沿って、y座標の小さい方から
大きい方へ向けて移動する際の1走査線当たりのx座標
の変化分を意味している。実施例では、x座標の正の向
きを右向き、y座標の正の向きを下向きに想定している
ので、上述の如くに、ymax ,xmin ,△x,ymin が
設定される。
ステップS633に進むと、図3の形態のエッジバケッ
トを一旦そのまま作成する。即ち、ymax =ystart ,
xmin =xend ,△x=△xnow として作成し、ポイン
タは、ここではλ(接続先がないことを示すマーカー)
を持たせておく。加えて、ステップS640において、
このエッジバケットがETに登録される際に、該エッジ
バケットが、どのポインタバケットに接続すべきデータ
かを示す値ymin も設定し、ここでは、ymin =yend
と設定する。ここでymax とは、現エッジの両端点(始
点と終点)において、y座標の大きい方の端点のyの値
であり、xmin とymin とは、y座標の小さい法の端点
のxの値とyの値を意味する。xの増分△xとは、現エ
ッジ上の点が現エッジに沿って、y座標の小さい方から
大きい方へ向けて移動する際の1走査線当たりのx座標
の変化分を意味している。実施例では、x座標の正の向
きを右向き、y座標の正の向きを下向きに想定している
ので、上述の如くに、ymax ,xmin ,△x,ymin が
設定される。
【0078】さて、ステップS633の処理を終える
と、ステップS634へ進む。このステップS634で
は、前エッジは上向きか否かを判定し、上向きであれ
ば、ケース始1に該当するとしてステップS636へ進
み、そうでなければ、ステップS635へ進む。ステッ
プS635では、現エッジの始点がケース始4に該当す
るのか否か判定し、ケース始4に該当する場合は、ステ
ップS636に進み、そうでない場合(即ち、ケース始
2又は始3に該当する場合)はステップS637へ進
む。ステップS636では、ymax を“1”減らす、即
ち、上向きエッジの始点を一走査線分つめる。ステップ
S636の処理を終えると、ステップS637へ進む。
これで現エッジが上向きの場合の始点に対する処理が終
了する。
と、ステップS634へ進む。このステップS634で
は、前エッジは上向きか否かを判定し、上向きであれ
ば、ケース始1に該当するとしてステップS636へ進
み、そうでなければ、ステップS635へ進む。ステッ
プS635では、現エッジの始点がケース始4に該当す
るのか否か判定し、ケース始4に該当する場合は、ステ
ップS636に進み、そうでない場合(即ち、ケース始
2又は始3に該当する場合)はステップS637へ進
む。ステップS636では、ymax を“1”減らす、即
ち、上向きエッジの始点を一走査線分つめる。ステップ
S636の処理を終えると、ステップS637へ進む。
これで現エッジが上向きの場合の始点に対する処理が終
了する。
【0079】さて、ステップS637では、次エッジは
左向きか否かを判定し、左向きであれば、ケース終3に
該当すると判定してステップS638へ進む。また、そ
うでなければケース終1、ケース終2或いはケース終4
のいずれかに該当すると判定し、ステップS640へ進
む。ステップS638では、xmin を△xだけ増やす、
即ち、上向きエッジの終点を一走査線分つめたとして、
そのx座標値を修正している。ステップS638の処理
を終えると、ステップS639へ進み、ymin を“1”
増やす、即ち、上向きエッジの終点を一走査線分つめた
として、その値を修正している。ステップS639の処
理を終えると、ステップS640へ進む。
左向きか否かを判定し、左向きであれば、ケース終3に
該当すると判定してステップS638へ進む。また、そ
うでなければケース終1、ケース終2或いはケース終4
のいずれかに該当すると判定し、ステップS640へ進
む。ステップS638では、xmin を△xだけ増やす、
即ち、上向きエッジの終点を一走査線分つめたとして、
そのx座標値を修正している。ステップS638の処理
を終えると、ステップS639へ進み、ymin を“1”
増やす、即ち、上向きエッジの終点を一走査線分つめた
として、その値を修正している。ステップS639の処
理を終えると、ステップS640へ進む。
【0080】一方、ステップS632において、現エッ
ジは上向きではない、即ち、下向きと判定された場合を
説明する。
ジは上向きではない、即ち、下向きと判定された場合を
説明する。
【0081】この場合、処理はステップS642へ進
み、図3の形態のエッジバケットを一旦そのまま生成す
る。即ち、ymax =yend 、xmin =xstart 、△x=
△xnow として作成し、ポインタは、ここではλ(接続
先がないことを示すマーカー)を持たせておく。加え
て、ymin =ystart と設定する。次のステップS64
3では、前エッジは下向きか否かを判定し、下向きであ
ればケース始6に該当すると判定し、ステップS645
へ進み、そうでなければステップS644へ進む。ステ
ップS644では、現エッジの始点がケース始7に該当
するのか、否か(即ち、ケース始5又は始8に該当する
のか)を判定し、ケース始7に該当する場合は、ステッ
プS645に進み、そうでい場合はステップS647へ
進む。ステップS645では、xmin を△x増やす、即
ち、下向きエッジの始点を一走査線分つめたとして、そ
のx座標値を修正している。ステップS645の処理を
終えると、ステップS646へ進み、ymin を“1”増
やす。即ち、下向きエッジの始点を一走査線分つめたと
して、その値を修正している。これで、現エッジの始点
に対する処理が終了する。
み、図3の形態のエッジバケットを一旦そのまま生成す
る。即ち、ymax =yend 、xmin =xstart 、△x=
△xnow として作成し、ポインタは、ここではλ(接続
先がないことを示すマーカー)を持たせておく。加え
て、ymin =ystart と設定する。次のステップS64
3では、前エッジは下向きか否かを判定し、下向きであ
ればケース始6に該当すると判定し、ステップS645
へ進み、そうでなければステップS644へ進む。ステ
ップS644では、現エッジの始点がケース始7に該当
するのか、否か(即ち、ケース始5又は始8に該当する
のか)を判定し、ケース始7に該当する場合は、ステッ
プS645に進み、そうでい場合はステップS647へ
進む。ステップS645では、xmin を△x増やす、即
ち、下向きエッジの始点を一走査線分つめたとして、そ
のx座標値を修正している。ステップS645の処理を
終えると、ステップS646へ進み、ymin を“1”増
やす。即ち、下向きエッジの始点を一走査線分つめたと
して、その値を修正している。これで、現エッジの始点
に対する処理が終了する。
【0082】ステップS646の処理を終えると、ステ
ップS647へ進む。このステップS647では、次エ
ッジが右向きか否かを判定する。右向きであればケース
終8に該当すると判定しステップS648へ進み、そう
でなければケース終5ケース終6或いはケース終7のい
ずれかに該当すると判定しステップS640へ進む。ス
テップS648では、ymax を“1”減らす、即ち、下
向きエッジの終点を一走査線分つめる。このステップS
648の処理を終えると、ステップS640へ進む。
ップS647へ進む。このステップS647では、次エ
ッジが右向きか否かを判定する。右向きであればケース
終8に該当すると判定しステップS648へ進み、そう
でなければケース終5ケース終6或いはケース終7のい
ずれかに該当すると判定しステップS640へ進む。ス
テップS648では、ymax を“1”減らす、即ち、下
向きエッジの終点を一走査線分つめる。このステップS
648の処理を終えると、ステップS640へ進む。
【0083】以上で、現エッジが上向き及び下向きの場
合のそれぞれにおいて、現エッジに対するエッジバケッ
トが図30に記された規則に従って生成される。
合のそれぞれにおいて、現エッジに対するエッジバケッ
トが図30に記された規則に従って生成される。
【0084】さて、ステップS640では、以上で生成
されたエッジバケットをエッジテーブル(ET)に追加
登録する。即ち、エッジテーブル内のy=ymin に相当
するポインタバケットAy ymin につながるエッジバケ
ットのリスト接続に現エッジのエッジバケットを追加す
る。まず、現エッジのエッジバケットを保持する領域を
RAM2上に確保する。次にポインタバケットAy ymi
n の値を吟味して、その値がまだ“λ”であれば、現エ
ッジのエッジバケットを保持する領域のアドレスに書き
換えて、現エッジのエッジバケットは、ポインタバケッ
トにリスト接続される。ポインタバケットAy ymin の
値が既にある“λ”以外の値をもつ場合には、既にリス
ト接続されている何個かのエッジバケットが存在してい
るので、これらのエッジバケットのxmin の値が、ポイ
ンタバケット側から見て昇順になる用に、現エッジのエ
ッジバケットを、該リスト接続されているエッジバケッ
ト列を挿入する。これは、挿入される直前のバケットの
ポインタの値を、現エッジのエッジバケットのポインタ
部にコピーし、直前のバケットのポインタ部の現エッジ
のエッジバケットのアドレス値に書き換えるこで実現す
る。かくして、ステップS640の処理を終えると、ス
テップS641へ進む。ステップS641では、エッジ
テーブル更新の一連の処理を終えて、本処理をコールし
た上位のルーチンに戻る。
されたエッジバケットをエッジテーブル(ET)に追加
登録する。即ち、エッジテーブル内のy=ymin に相当
するポインタバケットAy ymin につながるエッジバケ
ットのリスト接続に現エッジのエッジバケットを追加す
る。まず、現エッジのエッジバケットを保持する領域を
RAM2上に確保する。次にポインタバケットAy ymi
n の値を吟味して、その値がまだ“λ”であれば、現エ
ッジのエッジバケットを保持する領域のアドレスに書き
換えて、現エッジのエッジバケットは、ポインタバケッ
トにリスト接続される。ポインタバケットAy ymin の
値が既にある“λ”以外の値をもつ場合には、既にリス
ト接続されている何個かのエッジバケットが存在してい
るので、これらのエッジバケットのxmin の値が、ポイ
ンタバケット側から見て昇順になる用に、現エッジのエ
ッジバケットを、該リスト接続されているエッジバケッ
ト列を挿入する。これは、挿入される直前のバケットの
ポインタの値を、現エッジのエッジバケットのポインタ
部にコピーし、直前のバケットのポインタ部の現エッジ
のエッジバケットのアドレス値に書き換えるこで実現す
る。かくして、ステップS640の処理を終えると、ス
テップS641へ進む。ステップS641では、エッジ
テーブル更新の一連の処理を終えて、本処理をコールし
た上位のルーチンに戻る。
【0085】<注目走査線輪郭の生成処理の説明>次
に、図15におけるステップS7の“注目走査線輪郭の
生成処理”を説明する。尚、その時点でのアクティブエ
ッジテーブル(AET)を用いて以下に示す手順に従っ
て処理が進行することになる。
に、図15におけるステップS7の“注目走査線輪郭の
生成処理”を説明する。尚、その時点でのアクティブエ
ッジテーブル(AET)を用いて以下に示す手順に従っ
て処理が進行することになる。
【0086】尚、このアクティブエッジテーブル(AE
T)は、ステップS6において、初期化され、最初は空
の状態(マーカーλが書かれた状態)になっているもの
である。以降、一旦処理を終了して、ステップS8へ進
んでも、アクティブエッジテーブルの状態は、次にステ
ップS7に再度入るまで保持される。
T)は、ステップS6において、初期化され、最初は空
の状態(マーカーλが書かれた状態)になっているもの
である。以降、一旦処理を終了して、ステップS8へ進
んでも、アクティブエッジテーブルの状態は、次にステ
ップS7に再度入るまで保持される。
【0087】(1)アクティブエッジテーブル(AE
T)のx座標値(xmin )でのソート順を保ちながら、
そのときのエッジテーブル(ET)の情報とアクティブ
エッジテーブル(AET)との情報とを併合して、走査
線y座標値にかかるエッジバケットを結ぶ新たなアクテ
ィブエッジテーブル(AET)を作成する。
T)のx座標値(xmin )でのソート順を保ちながら、
そのときのエッジテーブル(ET)の情報とアクティブ
エッジテーブル(AET)との情報とを併合して、走査
線y座標値にかかるエッジバケットを結ぶ新たなアクテ
ィブエッジテーブル(AET)を作成する。
【0088】(2)アクティブエッジテーブル(AE
T)のx座標値(xmin )が小さい方からアクセスし
て、奇数番目のx座標値の位置にある画素に対応するラ
インメモリ3上のアドレスに保持される値をそのアドレ
スに格納されてあったビット値(0または1)と“1”
とを排他的論理和して書き換える。また、偶数番目のx
座標値の位置にある画素の一画素右隣の画素に対応する
ラインメモリ3上のアドレスに保持される値を、そのア
ドレスに格納されてあったビット値(0または1)と1
との排他的論理和で得られる値に書き替える。ただし、
偶数番目のx座標値が、直後の奇数番目のx座標値の画
素位置と同位置となる場合は、その双方ともを描画しな
い。
T)のx座標値(xmin )が小さい方からアクセスし
て、奇数番目のx座標値の位置にある画素に対応するラ
インメモリ3上のアドレスに保持される値をそのアドレ
スに格納されてあったビット値(0または1)と“1”
とを排他的論理和して書き換える。また、偶数番目のx
座標値の位置にある画素の一画素右隣の画素に対応する
ラインメモリ3上のアドレスに保持される値を、そのア
ドレスに格納されてあったビット値(0または1)と1
との排他的論理和で得られる値に書き替える。ただし、
偶数番目のx座標値が、直後の奇数番目のx座標値の画
素位置と同位置となる場合は、その双方ともを描画しな
い。
【0089】(3)注目走査線y座標値をy座標が大き
方の端点のyの値(ymax )とするエッジバケットを次
の走査線における動作のためにアクティブエッジテーブ
ル(AET)から削除する。
方の端点のyの値(ymax )とするエッジバケットを次
の走査線における動作のためにアクティブエッジテーブ
ル(AET)から削除する。
【0090】(4)アクティブエッジテーブル(AE
T)に残っているエッジバケットについて、次の走査線
における動作のために増分データ(△x)を利用して、
x座標値を更新する。即ち、xmin +△xをもって新し
くxmin とし直す。
T)に残っているエッジバケットについて、次の走査線
における動作のために増分データ(△x)を利用して、
x座標値を更新する。即ち、xmin +△xをもって新し
くxmin とし直す。
【0091】(5)かかるx座標値(Xmin )の更新
後、x座標値(xmin)に基づいてソーティングし直
す。
後、x座標値(xmin)に基づいてソーティングし直
す。
【0092】この様にして、その時点の注目走査線にお
ける閉図形の輪郭のみが、走査線と奇数番目に交差する
点はその対応するラインバッファのメモリアドレスに、
偶数番目に交差する点はその一画素右隣の点が対応する
ラインバッファのメモリアドレスに描画される。ただ
し、偶数番目に交差する点とその直後の奇数番目に交差
する点が同一の場合、この2点はともに描画されない。
また、その時点でアクティブエッジテーブル(AET)
が空の場合には、何も描画されない。かくして、ステッ
プS7が終了する。また、ラインバッファ3は、走査線
中に含まれる走査方向(x軸方向)に並ぶ画素数分の容
量を保有しており、主走査の方向に沿って、各画素のデ
ータをアドレスが昇順に連続して増加する様に構成され
ている。
ける閉図形の輪郭のみが、走査線と奇数番目に交差する
点はその対応するラインバッファのメモリアドレスに、
偶数番目に交差する点はその一画素右隣の点が対応する
ラインバッファのメモリアドレスに描画される。ただ
し、偶数番目に交差する点とその直後の奇数番目に交差
する点が同一の場合、この2点はともに描画されない。
また、その時点でアクティブエッジテーブル(AET)
が空の場合には、何も描画されない。かくして、ステッ
プS7が終了する。また、ラインバッファ3は、走査線
中に含まれる走査方向(x軸方向)に並ぶ画素数分の容
量を保有しており、主走査の方向に沿って、各画素のデ
ータをアドレスが昇順に連続して増加する様に構成され
ている。
【0093】<注目走査線データ出力&ラインメモリク
リア処理の説明>次に、図15におけるステップS9の
処理内容を説明する。
リア処理の説明>次に、図15におけるステップS9の
処理内容を説明する。
【0094】ステップS9では、ステップS7にて描画
された該当走査線位置にある輪郭点データに基づき、輪
郭点間の領域を塗り潰す動作を行いながら、該ラインバ
ッファの再クリアも同時に実行するものである。CPU
1はステップS9へ進むと、ステップS9の処理が完了
するまでラインメモリ3へ以降入力されるデータが一定
値0となる様に図示しない付加回路を設定し、同時に同
期制御回路6に一走査線のデータを出力させるべく起動
をかけ、同期制御回路6がその一連の動作を終了した旨
の信号を返すのを待つ。同期制御回路6は、CPU1よ
り起動されると、ラインメモリ3の先頭アドレスから順
にアドレスを生成し、該アドレス位置に保持されたデー
タを信号線10に出力させ、同時に、前記CPU1によ
り設定されていた一定値0を同アドレスに書き込ませる
動作を各アドレス毎に実行していく。そして、予め設定
されていた画素数分だけこの動作を行った後に停止し
て、該走査線に対する一連の処理を終了したことをCP
U1に通知する信号を出力する。一方、この一連の動作
に同期して、図19に示す様な同期信号を中塗り回路5
への信号12及び、プリンタ8への同期信号13として
出力する。図19のLine Syncとは、走査線同
期信号であり、この信号の立ち上がり信号をもって、一
走査線の処理の開始を意味している。CLKとは、画素
の同期信号であり、この信号の立ち上がり信号をもつ
て、データの有効なタイミングを示す。Line Sy
ncの直後のCLKの立ち上がりが、該走査線の最初の
画素のデータの有効タイミングを示し、以降、1クロツ
ク後に、その主走査方向の隣の画素のデータのタイミン
グであることを示す。図19は、走査線上にm画素が存
在する場合の同期信号を示している。
された該当走査線位置にある輪郭点データに基づき、輪
郭点間の領域を塗り潰す動作を行いながら、該ラインバ
ッファの再クリアも同時に実行するものである。CPU
1はステップS9へ進むと、ステップS9の処理が完了
するまでラインメモリ3へ以降入力されるデータが一定
値0となる様に図示しない付加回路を設定し、同時に同
期制御回路6に一走査線のデータを出力させるべく起動
をかけ、同期制御回路6がその一連の動作を終了した旨
の信号を返すのを待つ。同期制御回路6は、CPU1よ
り起動されると、ラインメモリ3の先頭アドレスから順
にアドレスを生成し、該アドレス位置に保持されたデー
タを信号線10に出力させ、同時に、前記CPU1によ
り設定されていた一定値0を同アドレスに書き込ませる
動作を各アドレス毎に実行していく。そして、予め設定
されていた画素数分だけこの動作を行った後に停止し
て、該走査線に対する一連の処理を終了したことをCP
U1に通知する信号を出力する。一方、この一連の動作
に同期して、図19に示す様な同期信号を中塗り回路5
への信号12及び、プリンタ8への同期信号13として
出力する。図19のLine Syncとは、走査線同
期信号であり、この信号の立ち上がり信号をもって、一
走査線の処理の開始を意味している。CLKとは、画素
の同期信号であり、この信号の立ち上がり信号をもつ
て、データの有効なタイミングを示す。Line Sy
ncの直後のCLKの立ち上がりが、該走査線の最初の
画素のデータの有効タイミングを示し、以降、1クロツ
ク後に、その主走査方向の隣の画素のデータのタイミン
グであることを示す。図19は、走査線上にm画素が存
在する場合の同期信号を示している。
【0095】図20は、実施例における中塗り回路5の
構成例を示している。上述の動作により、ラインメモリ
3より出力されてくるデータ10は、走査線上にある輪
郭データのみである。図20は、同期信号12を用い
て、データ10上の奇数番目の輪郭画素信号から、偶数
番目の輪郭画素の直前の画素信号までを“1”として出
力し、それ以外の画素領域は“0”として出力する。こ
の時、入力のデータ10は、Data信号205として
入力され、輪郭位置のみ“1”となり、他は“0”とさ
れた信号となっている。まず、Line Syncの入
力によつて、ラツチ201の保持する値は“0”に初期
化され、“0”が排他的論理和ゲート206に出力され
る様にリセットされる。次に、CLK204に同期して
入力されるデータ205と、ラツチ201の出力206
との排他的論理和をゲート202が信号線206に出力
する。この信号線206が、プリンタ8への出力データ
11となる。また、この信号線206を、CLK204
に同期して、ラツチ201に取り込み、次データ作成用
に保持する。この一連の動作を画素数分くり返すもので
ある。
構成例を示している。上述の動作により、ラインメモリ
3より出力されてくるデータ10は、走査線上にある輪
郭データのみである。図20は、同期信号12を用い
て、データ10上の奇数番目の輪郭画素信号から、偶数
番目の輪郭画素の直前の画素信号までを“1”として出
力し、それ以外の画素領域は“0”として出力する。こ
の時、入力のデータ10は、Data信号205として
入力され、輪郭位置のみ“1”となり、他は“0”とさ
れた信号となっている。まず、Line Syncの入
力によつて、ラツチ201の保持する値は“0”に初期
化され、“0”が排他的論理和ゲート206に出力され
る様にリセットされる。次に、CLK204に同期して
入力されるデータ205と、ラツチ201の出力206
との排他的論理和をゲート202が信号線206に出力
する。この信号線206が、プリンタ8への出力データ
11となる。また、この信号線206を、CLK204
に同期して、ラツチ201に取り込み、次データ作成用
に保持する。この一連の動作を画素数分くり返すもので
ある。
【0096】図2Bに対して、本実施例によって得られ
たエッジテーブルを図21に示す。即ち、図2Bの図形
F1に関して、エッジe13は、上向きエッジであり、
前エッジe12も上向きエッジ、次エッジe1は下向き
エッジであるから、始点は、図30でいうケース始1に
該当し、終点はケース終2に該当するので、 e13:ymax =8,xmin =7,△x=−1,ymin =3 となる。
たエッジテーブルを図21に示す。即ち、図2Bの図形
F1に関して、エッジe13は、上向きエッジであり、
前エッジe12も上向きエッジ、次エッジe1は下向き
エッジであるから、始点は、図30でいうケース始1に
該当し、終点はケース終2に該当するので、 e13:ymax =8,xmin =7,△x=−1,ymin =3 となる。
【0097】以下、同様に、e1では、下向きエッジで
あり、始点はケース始5、終点はケース終8に該当する
ので、 e1:ymax =5,xmin =7,△x=1,ymin =3 となる。
あり、始点はケース始5、終点はケース終8に該当する
ので、 e1:ymax =5,xmin =7,△x=1,ymin =3 となる。
【0098】また、e2は水平エッジであるから、エッ
ジバケットは生成されない。
ジバケットは生成されない。
【0099】e3は、下向きエッジであり、始点はケー
ス始8、終点は、ケース終5に該当するので、 e3:ymax =10,xmin =13,△x=1/4,ymin =6 となる。
ス始8、終点は、ケース終5に該当するので、 e3:ymax =10,xmin =13,△x=1/4,ymin =6 となる。
【0100】e4は、上向きエッジであり、始点はケー
ス始2、終点はケース終4に該当するので、 e4:ymax =10,xmin =16,△x=−1/2,ymin =6 となる。
ス始2、終点はケース終4に該当するので、 e4:ymax =10,xmin =16,△x=−1/2,ymin =6 となる。
【0101】e5は水平エッジであるからエッジバケッ
トは生成しない。
トは生成しない。
【0102】e6は、下向きエッジであり、始点はケー
ス始8、終点はケース終7に該当するので、 e6:ymax =15,xmin =19,△x=0,ymin =6 となる。
ス始8、終点はケース終7に該当するので、 e6:ymax =15,xmin =19,△x=0,ymin =6 となる。
【0103】e7は水平エッジであるからエッジバケッ
トは生成されない。
トは生成されない。
【0104】e8は上向きエッジであり、始点はケース
始3、終点は、ケース終2に該当するので、 e8:ymax=15,xmin =14,△x=1,ymin =13 となる。
始3、終点は、ケース終2に該当するので、 e8:ymax=15,xmin =14,△x=1,ymin =13 となる。
【0105】e9は、下向きエッジであり、始点はケー
ス始5、終点はケース終7に該当するので、 e9:ymax =16,xmin =14,△x=−1,ymin =13 となる。
ス始5、終点はケース終7に該当するので、 e9:ymax =16,xmin =14,△x=−1,ymin =13 となる。
【0106】e10は、水平エッジであるので、エッジ
バケットは生成されない。
バケットは生成されない。
【0107】e11は、下向きエッジであり、始点はケ
ース始7、終点はケース終5に該当するので、 e11:ymax =18,xmin =7,△x=−1,ymin =17 となる。
ース始7、終点はケース終5に該当するので、 e11:ymax =18,xmin =7,△x=−1,ymin =17 となる。
【0108】e12は、上向きエッジであり、始点はケ
ース始2、終点はケース終1に該当するので、 e12:ymax =18,xmin =1,△x=5/9,ymin =9 となる。
ース始2、終点はケース終1に該当するので、 e12:ymax =18,xmin =1,△x=5/9,ymin =9 となる。
【0109】以上をエッジテーブルにまとめると、図2
1に示す如くとなる。図21に基づき、アクティブエッ
ジテーブル(AET)を生成し、注目走査線をy=0よ
り順次1つずつ増やしていった際のAETの変化の様子
は図22に示す如くである。図22のAETに従って、
各走査線において、奇数番目のエッジバケットのxmin
の位置と、偶数番目のエッジバケットのxmin の位置の
主走査方向のすぐ隣の画素を輪郭画素としてプロットし
た図を図23に示した。ただし、同図において、偶数番
目のエッジバケットのxmin と、その直後の奇数番目の
エッジバケットのxmin が同位置の画素位置となる場合
はその双方をプロットしていない。図示において、P5
〜Q10はe13に対しての輪郭画素であり、Q11〜
Q12はe1に対しての輪郭画素である。同様に、Q9
〜P8、Q13〜Q15、P11〜Q15、Q1〜Q
2、Q4〜Q3、Q5〜Q6、Q7〜Q8は、それぞれ
e12、e3、e4、e6、e8、e9、e11に対し
ての輪郭画素である。図23における◎印で示されるQ
15及びQ16は、e3に対する輪郭画素としても、e
4に対する輪郭画素としてもプロットされる画素であ
り、プロット方法は前述の如く、対応するラインメモリ
上のアドレス位置に既に格納されてあったビット値(0
または1)と1との排他的論理和で得られる値に書き換
える方式であるから、結局、プロットされない状態に戻
ることになる。また、△印で示されるP7とP14、及
びP6とQ17は、それぞれ前述のステップS7の処理
の際に注目走査線位置y=10及びy=13において、
先に説明した手順(2)で説明したように、「偶数番目
のx座標値が、直後の奇数番目のx座標値の画素位置と
同位置となる場合は、その双方ともを描画しない」に該
当する。従って、これらの画素位置はプロットされな
い。これらの点は閉図形の凹部の頂点であり、そのまま
プロットするとAとの中塗り処理後の凹部に一点だけ孤
立した白画素が発生してしまい具合が悪くなるからであ
る(上記の例では点P7及びP6の位置が一点だけ孤立
した白画素になる)。このため、上述した「」の処理は
重要な意味を持つ。
1に示す如くとなる。図21に基づき、アクティブエッ
ジテーブル(AET)を生成し、注目走査線をy=0よ
り順次1つずつ増やしていった際のAETの変化の様子
は図22に示す如くである。図22のAETに従って、
各走査線において、奇数番目のエッジバケットのxmin
の位置と、偶数番目のエッジバケットのxmin の位置の
主走査方向のすぐ隣の画素を輪郭画素としてプロットし
た図を図23に示した。ただし、同図において、偶数番
目のエッジバケットのxmin と、その直後の奇数番目の
エッジバケットのxmin が同位置の画素位置となる場合
はその双方をプロットしていない。図示において、P5
〜Q10はe13に対しての輪郭画素であり、Q11〜
Q12はe1に対しての輪郭画素である。同様に、Q9
〜P8、Q13〜Q15、P11〜Q15、Q1〜Q
2、Q4〜Q3、Q5〜Q6、Q7〜Q8は、それぞれ
e12、e3、e4、e6、e8、e9、e11に対し
ての輪郭画素である。図23における◎印で示されるQ
15及びQ16は、e3に対する輪郭画素としても、e
4に対する輪郭画素としてもプロットされる画素であ
り、プロット方法は前述の如く、対応するラインメモリ
上のアドレス位置に既に格納されてあったビット値(0
または1)と1との排他的論理和で得られる値に書き換
える方式であるから、結局、プロットされない状態に戻
ることになる。また、△印で示されるP7とP14、及
びP6とQ17は、それぞれ前述のステップS7の処理
の際に注目走査線位置y=10及びy=13において、
先に説明した手順(2)で説明したように、「偶数番目
のx座標値が、直後の奇数番目のx座標値の画素位置と
同位置となる場合は、その双方ともを描画しない」に該
当する。従って、これらの画素位置はプロットされな
い。これらの点は閉図形の凹部の頂点であり、そのまま
プロットするとAとの中塗り処理後の凹部に一点だけ孤
立した白画素が発生してしまい具合が悪くなるからであ
る(上記の例では点P7及びP6の位置が一点だけ孤立
した白画素になる)。このため、上述した「」の処理は
重要な意味を持つ。
【0110】ここで、先に説明した(2)の具体的処理
内容を図28に示し、以下に説明する。
内容を図28に示し、以下に説明する。
【0111】先ず、ステップS100でその一連の処理
が開始されるとステップS101に進み、アクティブエ
ッジテーブル(AET)のアクティブエッジポインタの
内容を見て接続されるエッジバケットが存在しないこと
を示すマーカλであるか否かを判定する。マーカλであ
ればステップS110に進み、本処理(手順(2))を
終了する。マーカλがなければステップS102に進
み、アクティブポインタによって接続される最初のバケ
ットのxmin で与えられる座標値の画素位置の画素位置
に対応するラインメモリ3上のアドレス位置に、即ち、
その位置に格納されてあったビット値(0または1)と
1との排他的論理和で得られる値に書き換える方式でプ
ロットする。そして、ステップS103に進む。このス
テップS103では、ステップS102のポインタによ
って接続されるエッジバケット(偶数番目のエッジバケ
ット)のxmin を参照してステップS104に進む。ス
テップS104では、ステップS102で参照されたエ
ッジバケットのポインタが、次に接続されているエッジ
バケットが存在しないことを示すマーカλであるか否か
を判定し、そうでなければステップS105に進み、そ
うであればステップS109に進む。
が開始されるとステップS101に進み、アクティブエ
ッジテーブル(AET)のアクティブエッジポインタの
内容を見て接続されるエッジバケットが存在しないこと
を示すマーカλであるか否かを判定する。マーカλであ
ればステップS110に進み、本処理(手順(2))を
終了する。マーカλがなければステップS102に進
み、アクティブポインタによって接続される最初のバケ
ットのxmin で与えられる座標値の画素位置の画素位置
に対応するラインメモリ3上のアドレス位置に、即ち、
その位置に格納されてあったビット値(0または1)と
1との排他的論理和で得られる値に書き換える方式でプ
ロットする。そして、ステップS103に進む。このス
テップS103では、ステップS102のポインタによ
って接続されるエッジバケット(偶数番目のエッジバケ
ット)のxmin を参照してステップS104に進む。ス
テップS104では、ステップS102で参照されたエ
ッジバケットのポインタが、次に接続されているエッジ
バケットが存在しないことを示すマーカλであるか否か
を判定し、そうでなければステップS105に進み、そ
うであればステップS109に進む。
【0112】ステップS109では、ステップS103
で参照したxmin で与えられる座標値の画素位置の1画
素右隣りの画素位置にステップS102と同様に排他的
論理和によるプロットを行い、ステップS110へ進
む。
で参照したxmin で与えられる座標値の画素位置の1画
素右隣りの画素位置にステップS102と同様に排他的
論理和によるプロットを行い、ステップS110へ進
む。
【0113】また、ステップS105では、ステップS
103で参照したエッジバケットのポインタによって接
続されるエッジバケット(奇数番目のエッジバケット)
のxmin を参照し、ステップS106に進む。ステップ
S106では、先のステップS103で参照したxmin
とステップS105で参照したxmin とでそれぞれ表現
される画素位置同志が同位置であるか否かを判定し、同
位置である場合にはステップS103に戻り、次のエッ
ジバケットの処理はしない。また、同位置でない場合に
はステップS107に進み、先のステップS103で参
照したxminで与えられる座標値の画素位置の1画素右
隣の画素位置に対応するラインメモリ3上のアドレス
に、ステップS102と同様に排他的論理和によるプロ
ットを行い、ステップS108に進む。ステップS10
8では、ステップS105で参照したxmin で与えられ
る座標値の画素位置に対応するラインメモリ上のアドレ
スに、ステップS102と同様に排他的論理和によるプ
ロットを行う。そして、ステップS103に戻って、次
のエッジバケットの処理を行っていく。
103で参照したエッジバケットのポインタによって接
続されるエッジバケット(奇数番目のエッジバケット)
のxmin を参照し、ステップS106に進む。ステップ
S106では、先のステップS103で参照したxmin
とステップS105で参照したxmin とでそれぞれ表現
される画素位置同志が同位置であるか否かを判定し、同
位置である場合にはステップS103に戻り、次のエッ
ジバケットの処理はしない。また、同位置でない場合に
はステップS107に進み、先のステップS103で参
照したxminで与えられる座標値の画素位置の1画素右
隣の画素位置に対応するラインメモリ3上のアドレス
に、ステップS102と同様に排他的論理和によるプロ
ットを行い、ステップS108に進む。ステップS10
8では、ステップS105で参照したxmin で与えられ
る座標値の画素位置に対応するラインメモリ上のアドレ
スに、ステップS102と同様に排他的論理和によるプ
ロットを行う。そして、ステップS103に戻って、次
のエッジバケットの処理を行っていく。
【0114】以上の処理手順で先に説明した手順(2)
を実現させることが可能になる。
を実現させることが可能になる。
【0115】ここで、図23の如くに示される輪郭デー
タを前述した如く、走査線上にある奇数番目の輪郭画素
から偶数番目の輪郭画素の直前までを塗りつぶした場合
の出力を図24に示す。本方式によれば、頂点画素も水
平エッジ上の画素も全て歪なく塗り潰される。
タを前述した如く、走査線上にある奇数番目の輪郭画素
から偶数番目の輪郭画素の直前までを塗りつぶした場合
の出力を図24に示す。本方式によれば、頂点画素も水
平エッジ上の画素も全て歪なく塗り潰される。
【0116】尚、以上の議論において、ymax 及びymi
n は非負の整数値として扱っている。また、xmin及
び△xに関しては、使用に際して、十分な精度をもつ実
数データ(即ち、小数部の情報を有する)として扱って
いる。ただし、走査線を次のラインに更新するときのx
座標は、計算では直前のエッジのx座標に算出したΔx
を加えた値となるが、メモリ上での画素は整数位置にし
かとれない。従って、Δxを足し込んで小数点以下から
キャリーが発生したときに実際のx座標は変化する。
n は非負の整数値として扱っている。また、xmin及
び△xに関しては、使用に際して、十分な精度をもつ実
数データ(即ち、小数部の情報を有する)として扱って
いる。ただし、走査線を次のラインに更新するときのx
座標は、計算では直前のエッジのx座標に算出したΔx
を加えた値となるが、メモリ上での画素は整数位置にし
かとれない。従って、Δxを足し込んで小数点以下から
キャリーが発生したときに実際のx座標は変化する。
【0117】<第2の実施例の説明>前記した実施例
(第1の実施例という)において、図30に示したエッ
ジバケットの生成規則中、ケース始1とケース終1、及
びケース始6とケース終6の各組に対しては、次のよう
に規則を変更してもよい。
(第1の実施例という)において、図30に示したエッ
ジバケットの生成規則中、ケース始1とケース終1、及
びケース始6とケース終6の各組に対しては、次のよう
に規則を変更してもよい。
【0118】即ち、ケース始1:現エッジの始点は、
“つめないでそのまま”として、かつケース終1:現エ
ッジの終点は“一走査線だけつめる”とする。
“つめないでそのまま”として、かつケース終1:現エ
ッジの終点は“一走査線だけつめる”とする。
【0119】又、ケース始6:現エッジの始点は、“つ
めないでそのまま”として、かつ、ケース終6:現エッ
ジの終点は、“一走査線だけつめる”とする。
めないでそのまま”として、かつ、ケース終6:現エッ
ジの終点は、“一走査線だけつめる”とする。
【0120】また、図18に示した処理の流れも、これ
らに合わせて、ケース始1に対してはステップS63
4、ケース終1に対してはステップS637が変更に応
じて変更されることは容易に理解できる。また、ケース
始6に対してはステップS643が、ケース終6に対し
てはステップS647が変更されることも容易に理解で
きる。
らに合わせて、ケース始1に対してはステップS63
4、ケース終1に対してはステップS637が変更に応
じて変更されることは容易に理解できる。また、ケース
始6に対してはステップS643が、ケース終6に対し
てはステップS647が変更されることも容易に理解で
きる。
【0121】以上の変更は、上向き同志又は、下向き同
志の連続する2つのアウトラインエッジに共有されてい
る頂点は、その頂点を終点とするエッジ上の点としての
み処理されるか、あるいは、その頂点を始点とするエッ
ジ上の点としてのみ処理されるか、いずれでもよいこと
を暗示し、双方のエッジ上の点として処理されたり、い
ずれのエッジ上の点でもないとされる様なこと無く処理
されれば、いずれでもよいことを意味していると考える
事ができる。
志の連続する2つのアウトラインエッジに共有されてい
る頂点は、その頂点を終点とするエッジ上の点としての
み処理されるか、あるいは、その頂点を始点とするエッ
ジ上の点としてのみ処理されるか、いずれでもよいこと
を暗示し、双方のエッジ上の点として処理されたり、い
ずれのエッジ上の点でもないとされる様なこと無く処理
されれば、いずれでもよいことを意味していると考える
事ができる。
【0122】<第3の実施例の説明>前記第1の実施例
では、アウトラインは右回りのデータ表現をとるものと
して説明したが、本発明は、これに限るものではなく、
左回りのデータ表現をとる場合にも対応可能である。左
回りのデータ表現時には、エッジバケットの生成規則を
図31に示したものを用いればよい。この場合も、現エ
ッジと前エッジの向きから現エッジの始点の取扱いを判
断し、現エッジと次エッジの向きから現エッジの終点の
取り扱い方を判断してゆく。左回りのデータ表現のエッ
ジバケットの生成規則に従ったエッジテーブル更新の処
理の流れも、図18とほぼ同様であり、ステップS63
4、S635、S637、S643、S644、S64
7を変更すれば実現可能である。
では、アウトラインは右回りのデータ表現をとるものと
して説明したが、本発明は、これに限るものではなく、
左回りのデータ表現をとる場合にも対応可能である。左
回りのデータ表現時には、エッジバケットの生成規則を
図31に示したものを用いればよい。この場合も、現エ
ッジと前エッジの向きから現エッジの始点の取扱いを判
断し、現エッジと次エッジの向きから現エッジの終点の
取り扱い方を判断してゆく。左回りのデータ表現のエッ
ジバケットの生成規則に従ったエッジテーブル更新の処
理の流れも、図18とほぼ同様であり、ステップS63
4、S635、S637、S643、S644、S64
7を変更すれば実現可能である。
【0123】<第4の実施例の説明>第1の実施例に対
し、第2の実施例で説明した変形と同様に、第3の実施
例での図31の規則においても、ケース始9とケース終
9、及び、ケース始14とケース終14がそれぞれ組み
合わされて、ケース始9:現エッジの始点は、“一走査
線だけつめる”としてかつ、ケース終9:現エッジの終
点は、“つめないでそのまま”としてもよいし、ケース
始14:現エッジの始点は、“つめないでそのまま”と
してかつ、ケース終14:“一走査線だけつめる”とし
てもよい。
し、第2の実施例で説明した変形と同様に、第3の実施
例での図31の規則においても、ケース始9とケース終
9、及び、ケース始14とケース終14がそれぞれ組み
合わされて、ケース始9:現エッジの始点は、“一走査
線だけつめる”としてかつ、ケース終9:現エッジの終
点は、“つめないでそのまま”としてもよいし、ケース
始14:現エッジの始点は、“つめないでそのまま”と
してかつ、ケース終14:“一走査線だけつめる”とし
てもよい。
【0124】<第5の実施例の説明>前記実施例では、
座標の原点は、画像の左上にあるとして説明したが、こ
れに限るものではない。即ち、原点の位置及び、座標の
向きに応じて、前記説明中での向きの判定法や、ymax
,ymin ,xmin ,△x等の扱いを変更すれば、同様
の処理が可能であることは勿論である。
座標の原点は、画像の左上にあるとして説明したが、こ
れに限るものではない。即ち、原点の位置及び、座標の
向きに応じて、前記説明中での向きの判定法や、ymax
,ymin ,xmin ,△x等の扱いを変更すれば、同様
の処理が可能であることは勿論である。
【0125】<第6の実施例の説明>前記実施例では、
塗り潰し動作時の主走査の方向を画像の左から右への方
向であるとして説明したが、これに限るものではない。
走査方向がこの逆で右から左への方向である場合には、
前記アクティブエッジテーブル(AET)から輪郭画素
をラインバッファに描画する際に、x座標値(xmin )
が小さい方からアクセスした時の奇数番目のx座標値に
対しては、その位置の画素の一画素隣の画素に対応する
メモリアドレスに1との排他的論理和による画素描画を
行い、偶数番目のx座標値に対しては、その位置の画素
に対応するメモリアドレスに1との排他的論理和による
画素描画を行った後に、該メモリバッファから、輪郭画
素データを画像の右から左の向きに対向する方向にデー
タを読み出して、前記中塗り方法を実行すればよい。
塗り潰し動作時の主走査の方向を画像の左から右への方
向であるとして説明したが、これに限るものではない。
走査方向がこの逆で右から左への方向である場合には、
前記アクティブエッジテーブル(AET)から輪郭画素
をラインバッファに描画する際に、x座標値(xmin )
が小さい方からアクセスした時の奇数番目のx座標値に
対しては、その位置の画素の一画素隣の画素に対応する
メモリアドレスに1との排他的論理和による画素描画を
行い、偶数番目のx座標値に対しては、その位置の画素
に対応するメモリアドレスに1との排他的論理和による
画素描画を行った後に、該メモリバッファから、輪郭画
素データを画像の右から左の向きに対向する方向にデー
タを読み出して、前記中塗り方法を実行すればよい。
【0126】<第7の実施例の説明>前記実施例におい
ては、一点のみのエッジ、即ち、始点と、終点が一致し
ているエッジ(点エッジ)は、図13で示されるデータ
を形成する際に、輪郭を構成するエッジの頂点列から、
あらかじめ除去されているものとして説明したが、本発
明は、これに限るものではない。即ち、エッジデータの
吟味時に、点エッジのデータは無視して前述の処理を続
行してもよい。図16の処理では、ステップS57の現
エッジデータ作成、ステップS58の次エッジデータ作
成、及び、S62の次エッジデータの作成手順におい
て、処理中のエッジが点エッジであれば、すぐ次の頂点
データをさらに読み込んで、新たに(xend ,yend )
として、処理を続ければよい。このとき、読みとばした
頂点の数に応じて、注目頂点位置の更新や処理済の頂点
数のカウント等を調整すればよいのである。かくして、
エッジテーブルの作成中に、点エッジの除去を行うこと
ももちろん可能である。
ては、一点のみのエッジ、即ち、始点と、終点が一致し
ているエッジ(点エッジ)は、図13で示されるデータ
を形成する際に、輪郭を構成するエッジの頂点列から、
あらかじめ除去されているものとして説明したが、本発
明は、これに限るものではない。即ち、エッジデータの
吟味時に、点エッジのデータは無視して前述の処理を続
行してもよい。図16の処理では、ステップS57の現
エッジデータ作成、ステップS58の次エッジデータ作
成、及び、S62の次エッジデータの作成手順におい
て、処理中のエッジが点エッジであれば、すぐ次の頂点
データをさらに読み込んで、新たに(xend ,yend )
として、処理を続ければよい。このとき、読みとばした
頂点の数に応じて、注目頂点位置の更新や処理済の頂点
数のカウント等を調整すればよいのである。かくして、
エッジテーブルの作成中に、点エッジの除去を行うこと
ももちろん可能である。
【0127】<第8の実施例の説明>エッジテーブルの
構成は、前述の構成に限るものではない。即ち、ポイン
タバケットを図25に示す様な2次元のリスト構造をも
ったデータ形成としてもよい。ポインタバケットは、そ
のポインタバケットからリスト接続されるエッジバケッ
トのエッジのy座標の小さい方の端点のy座標値(ymi
n )(これは、このポインタバケットから順に複数のエ
ッジバケットがリスト接続される場合も、それら複数の
エッジのymin は全て等しい値であることに注目)を保
持する項と、y座標値を昇順に見た場合に、リスト接続
されるエッジバケットを有するポインタバケットの中で
次に来るポインタバケットへのポインタの項と、そのポ
インタバケットに接続されるエッジバケットへのポイン
タ項より構成されている。図25の形式をもつたポイン
タバケットをもった構成したエッジテーブルの例が図2
6である。図26は、図2Bで与えられるアウトライン
図形に対して構成されるエッジテーブルである。この様
に、2次元のリスト構造をもったエッジテーブルも、前
述の実施例とほぼ同様の手順で、構成が可能であるが、
ポインタバケット領域があらかじめ画像の走査線本数分
確保されているのではなく、エッジバケットが一つ生成
されるたびに毎に、既存のポインタバケットの中に該当
エッジバケットの表すエッジのymin を保持するものが
あるか否かを判定する。そして、あれば、そのポインタ
バケットでなるエッジバケットのリスト列に、該当エッ
ジバケットを追加し、なければ新たなポインタバケット
を生成して、そのポインタバケットにyminを格納し、
該当エッジバケットをリスト接続した上で、新たに生成
ポインタバケットをymin の順で、ポインタバケット列
のリスト接続に追加・挿入しておくという操作を行うよ
うになっている。
構成は、前述の構成に限るものではない。即ち、ポイン
タバケットを図25に示す様な2次元のリスト構造をも
ったデータ形成としてもよい。ポインタバケットは、そ
のポインタバケットからリスト接続されるエッジバケッ
トのエッジのy座標の小さい方の端点のy座標値(ymi
n )(これは、このポインタバケットから順に複数のエ
ッジバケットがリスト接続される場合も、それら複数の
エッジのymin は全て等しい値であることに注目)を保
持する項と、y座標値を昇順に見た場合に、リスト接続
されるエッジバケットを有するポインタバケットの中で
次に来るポインタバケットへのポインタの項と、そのポ
インタバケットに接続されるエッジバケットへのポイン
タ項より構成されている。図25の形式をもつたポイン
タバケットをもった構成したエッジテーブルの例が図2
6である。図26は、図2Bで与えられるアウトライン
図形に対して構成されるエッジテーブルである。この様
に、2次元のリスト構造をもったエッジテーブルも、前
述の実施例とほぼ同様の手順で、構成が可能であるが、
ポインタバケット領域があらかじめ画像の走査線本数分
確保されているのではなく、エッジバケットが一つ生成
されるたびに毎に、既存のポインタバケットの中に該当
エッジバケットの表すエッジのymin を保持するものが
あるか否かを判定する。そして、あれば、そのポインタ
バケットでなるエッジバケットのリスト列に、該当エッ
ジバケットを追加し、なければ新たなポインタバケット
を生成して、そのポインタバケットにyminを格納し、
該当エッジバケットをリスト接続した上で、新たに生成
ポインタバケットをymin の順で、ポインタバケット列
のリスト接続に追加・挿入しておくという操作を行うよ
うになっている。
【0128】この様なエッジテーブルを用いての、アク
ティブエッジテーブルの生成も、前記第1の実施例と同
様である。
ティブエッジテーブルの生成も、前記第1の実施例と同
様である。
【0129】この様な、2次元構造をもつたリスト構造
を採用すれば、画像の走査線本数数のポインタバケット
領域を用意する必要はなくなり、特に扱う画像が大サイ
ズのものであればあるほど、エッジテーブルに要するラ
ンダムメモリ領域が少量で済ませられるという特有の効
果を生む。
を採用すれば、画像の走査線本数数のポインタバケット
領域を用意する必要はなくなり、特に扱う画像が大サイ
ズのものであればあるほど、エッジテーブルに要するラ
ンダムメモリ領域が少量で済ませられるという特有の効
果を生む。
【0130】<第9の実施例の説明>実施例では、図2
7に示す様な複数のラインメモリを保持する装置構成で
実施することも可能である。図27において、図1と同
じ部分には同一番号が付されている。図27において、
ラインメモリは、31と32の2本、即ち、2走査線分
のラインメモリが用意されている。この2本のラインメ
モリは、一本がCPU1がある走査線上の輪郭画素を描
画するのに使用し、もう一本が、その直前に描画された
他の走査線上の輪郭画素データを中塗り回路5に出力す
るものと使用する。すなわち、2つの処理を同時に行わ
せることを可能にする物である。出力の終了したライン
バッファは、次に描画される走査線用の輪郭画素を書き
込むために用いられる。かくの如く、トグル操作を行う
ために、マルチプレクサ33及びセレクタ34を用い
て、ラインメモリ31、32の入出力の切り換えを行う
様に構成してある。このマルチプレクサ33及びセレク
タ34の制御は、同期制御バッファ6′が行っており、
同期制御回路は、一方のラインメモリに対して、CPU
1より、輪郭画素の書き込みが終了し、その走査線デー
タの出力の起動を受け、かつ、他方のラインメモリから
の中塗りデータの生成出力が終了するたび毎に、マルチ
プレクサ33及び、セレクタ34の接続するラインメモ
リを切り替えて動作する。ラインメモリを切り替える毎
にCPU1に対しては、次の走査線の描画が可能である
ことを通知し、かつ、輪郭画素が描画されてきたバッフ
ァからは、中塗りデータの生成・出力を行う。
7に示す様な複数のラインメモリを保持する装置構成で
実施することも可能である。図27において、図1と同
じ部分には同一番号が付されている。図27において、
ラインメモリは、31と32の2本、即ち、2走査線分
のラインメモリが用意されている。この2本のラインメ
モリは、一本がCPU1がある走査線上の輪郭画素を描
画するのに使用し、もう一本が、その直前に描画された
他の走査線上の輪郭画素データを中塗り回路5に出力す
るものと使用する。すなわち、2つの処理を同時に行わ
せることを可能にする物である。出力の終了したライン
バッファは、次に描画される走査線用の輪郭画素を書き
込むために用いられる。かくの如く、トグル操作を行う
ために、マルチプレクサ33及びセレクタ34を用い
て、ラインメモリ31、32の入出力の切り換えを行う
様に構成してある。このマルチプレクサ33及びセレク
タ34の制御は、同期制御バッファ6′が行っており、
同期制御回路は、一方のラインメモリに対して、CPU
1より、輪郭画素の書き込みが終了し、その走査線デー
タの出力の起動を受け、かつ、他方のラインメモリから
の中塗りデータの生成出力が終了するたび毎に、マルチ
プレクサ33及び、セレクタ34の接続するラインメモ
リを切り替えて動作する。ラインメモリを切り替える毎
にCPU1に対しては、次の走査線の描画が可能である
ことを通知し、かつ、輪郭画素が描画されてきたバッフ
ァからは、中塗りデータの生成・出力を行う。
【0131】この様に、複数の各走査線に対する処理の
間に要する待ち時間を減少させることが可能となり、全
体としての処理を高速化できるという特有の効果を生
む。
間に要する待ち時間を減少させることが可能となり、全
体としての処理を高速化できるという特有の効果を生
む。
【0132】<第10の実施例の説明>第1の実施例で
説明したステップS7の処理における手順(2)の「た
だし、偶数番目のx座標値が、直後の奇数番目のx座標
値の画素位置と同位置となる場合は、その双方ともを描
画しない」という条件を、その画素位置が輪郭エッジの
端点である場合のみに限定して適用させてもよい。これ
はエッジバケット中に図3に示したy座標が大きい方の
端点のyの値(ymax )、y座標値が小さい方の端点の
xの値(xmin )、xの増分(△x)、ポインタに加え
て、y座標が小さい方の端点のyの値(ymin )も含め
てエッジバケットを構成しておき、各注目走査線位置に
対して、このエッジバケットをもってアクティブエッジ
テーブル(AET)を構成するようにすれば、ymin の
値が注目走査線位置と同じ、及びymax の値が注目走査
線位置と同じエッジバケットに対してのみ、該エッジバ
ケットが奇数番目のエッジバケットであれば直前の偶数
バケットの、また、該エッジバケットが偶数番目のエッ
ジバケットであれば直後の奇数番目のエッジバケットの
xmin 同志を比較するようにして実現することも可能で
ある。
説明したステップS7の処理における手順(2)の「た
だし、偶数番目のx座標値が、直後の奇数番目のx座標
値の画素位置と同位置となる場合は、その双方ともを描
画しない」という条件を、その画素位置が輪郭エッジの
端点である場合のみに限定して適用させてもよい。これ
はエッジバケット中に図3に示したy座標が大きい方の
端点のyの値(ymax )、y座標値が小さい方の端点の
xの値(xmin )、xの増分(△x)、ポインタに加え
て、y座標が小さい方の端点のyの値(ymin )も含め
てエッジバケットを構成しておき、各注目走査線位置に
対して、このエッジバケットをもってアクティブエッジ
テーブル(AET)を構成するようにすれば、ymin の
値が注目走査線位置と同じ、及びymax の値が注目走査
線位置と同じエッジバケットに対してのみ、該エッジバ
ケットが奇数番目のエッジバケットであれば直前の偶数
バケットの、また、該エッジバケットが偶数番目のエッ
ジバケットであれば直後の奇数番目のエッジバケットの
xmin 同志を比較するようにして実現することも可能で
ある。
【0133】このようにすると、図29A、29Bのよ
うな針状の閉図形中の凹頂点であっても、その頂点のみ
を先の手順(2)の「ただし、偶数番目のx座標値が、
直後の奇数番目のx座標値の画素位置と同位置となる場
合は、その双方ともを描画しない」の対象に限定するこ
とができる。
うな針状の閉図形中の凹頂点であっても、その頂点のみ
を先の手順(2)の「ただし、偶数番目のx座標値が、
直後の奇数番目のx座標値の画素位置と同位置となる場
合は、その双方ともを描画しない」の対象に限定するこ
とができる。
【0134】尚、本発明は複数の機器から構成されるシ
ステムに適用しても、1つの機器から成る装置に適用し
ても良い。また、本発明は、システム或は装置にプログ
ラムを供給することによつて達成される場合にも適用で
きることは言うまでもない。
ステムに適用しても、1つの機器から成る装置に適用し
ても良い。また、本発明は、システム或は装置にプログ
ラムを供給することによつて達成される場合にも適用で
きることは言うまでもない。
【0135】以上説明した様に本実施例によれば、各ア
ウトラインベクトルの向きを判断し、かつまた、該アウ
トラインベクトルの直前のアウトラインベクトルの向き
及び直後のアウトラインベクトルの向きによつて、当該
ベクトルの各端点を閉図形の閉区間をなす境界点の判定
に用いるか否かを判定する。しかる後に、各走査線毎に
該走査線と交差する奇数番目の境界判定用エッジであれ
ば、メモリ上の対応する画素位置にプロットし、偶数番
目の境界判定用エッジであれば、メモリ上の対応する画
素位置の一画素右隣にプロットする様にして、輪郭画素
データを生成する(ただし、このとき、偶数番目の境界
エッジ位置と奇数番目の境界エッジ位置が同画素位置な
ら共にプロットしない)。この後に、該一走査線分の輪
郭画素データを水平走査して、奇数番目の輪郭画素から
偶数番目の輪郭画素までを閉図形の内部領域である判定
することによつて、図形の塗りつぶし処理を安価にか
つ、高速に、また、歪の発生を伴わずに行えるという効
果を有する。
ウトラインベクトルの向きを判断し、かつまた、該アウ
トラインベクトルの直前のアウトラインベクトルの向き
及び直後のアウトラインベクトルの向きによつて、当該
ベクトルの各端点を閉図形の閉区間をなす境界点の判定
に用いるか否かを判定する。しかる後に、各走査線毎に
該走査線と交差する奇数番目の境界判定用エッジであれ
ば、メモリ上の対応する画素位置にプロットし、偶数番
目の境界判定用エッジであれば、メモリ上の対応する画
素位置の一画素右隣にプロットする様にして、輪郭画素
データを生成する(ただし、このとき、偶数番目の境界
エッジ位置と奇数番目の境界エッジ位置が同画素位置な
ら共にプロットしない)。この後に、該一走査線分の輪
郭画素データを水平走査して、奇数番目の輪郭画素から
偶数番目の輪郭画素までを閉図形の内部領域である判定
することによつて、図形の塗りつぶし処理を安価にか
つ、高速に、また、歪の発生を伴わずに行えるという効
果を有する。
【0136】
【発明の効果】以上説明したように本発明によれば、輪
郭内部を塗りつぶす際に、高速で、しかも少ないメモリ
容量で意図した通りの塗りつぶし結果をえることが可能
になる。
郭内部を塗りつぶす際に、高速で、しかも少ないメモリ
容量で意図した通りの塗りつぶし結果をえることが可能
になる。
【図1】ラスタ走査型のビデオプリンタ用に構成した実
施例の装置構成を示す図である。
施例の装置構成を示す図である。
【図2A】アウトライン図形データの一例を示す図であ
る。
る。
【図2B】実施例で用いる右回りアウトライン図形デー
タの例を示す図である。
タの例を示す図である。
【図3】エッジバケットを示す図である。
【図4】従来法による図2Aの図形のエッジテーブル
(ET)の説明図である。
(ET)の説明図である。
【図5】アクティブエッジテーブル(AET)の説明図
である。
である。
【図6】従来法によるアクティブエッジテーブル(AE
T)の推移の説明図である。
T)の推移の説明図である。
【図7】奇偶反転法に内在する問題を説明するための図
である。
である。
【図8】従来法による図2Aの図形の処理結果の説明図
である。
である。
【図9】第2の従来法による図2Aの図形の処理結果の
説明図である。
説明図である。
【図10】第2の従来法を改良した、他の従来法の構成
図である。
図である。
【図11】右回りアウトライン閉図形の内部領域を説明
する図である。
する図である。
【図12】左回りアウトライン閉図形の内部領域を説明
する図である。
する図である。
【図13】アウトライン図形の座標列形式の輪郭データ
を示す図である。
を示す図である。
【図14】図2Bの図形の座標列形式の輪郭データであ
る。
る。
【図15】実施例における装置の動作を示すフローチャ
ートである。
ートである。
【図16】実施例におけるエッジテーブル(ET)の生
成手順を示すフローチャートである。
成手順を示すフローチャートである。
【図17】初期化されたアドレスポインタ領域を示す図
である。
である。
【図18】バケットデータの生成及びエッジテーブルの
更新の手順を示すフローチャートである。
更新の手順を示すフローチャートである。
【図19】同期制御回路の生成する同期信号の説明図で
ある。
ある。
【図20】中塗り回路の構成図である。
【図21】図2Bの図形に基づくエッジテーブル(E
T)の説明図である。
T)の説明図である。
【図22】アクティブエッジテーブル(AET)の推移
の説明図である。
の説明図である。
【図23】図2Bの図形に対する輪郭画素出力の説明図
である。
である。
【図24】図2Bの図形の処理結果の説明図である。
【図25】他の実施例におけるポインタバケットの説明
図である。
図である。
【図26】他の実施例における図2Bの図形のエッジテ
ーブル(ET)の説明図である。
ーブル(ET)の説明図である。
【図27】ラスタ走査型のビデオプリンタ用に構成した
他の実施例の装置構成を示す図である。
他の実施例の装置構成を示す図である。
【図28】図15における注目線輪郭部生成処理の一部
を説明するためのフローチャートである。
を説明するためのフローチャートである。
【図29A】及び
【図29B】他の実施例で得られる結果の特徴を説明す
るための図である。
るための図である。
【図30】実施例における右回りアウトラインに対する
バケットデータ生成規則を示す図である。
バケットデータ生成規則を示す図である。
【図31】実施例における左回りアウトラインに対する
バケットデータ生成規則を示す図である。
バケットデータ生成規則を示す図である。
1 マイクロプロセッサ
2 ランダムアクセスメモリ
3 ラインメモリ
4 I/Oポート
5 中塗り回路
6 同期制御回路
7 I/Oポート
8 プリンタ装置
9 バス
Claims (4)
- 【請求項1】 複数の線要素でもって構成された閉輪郭
の内部を塗り潰す画像処理方法において、 線要素の連続する一方向における、注目線要素とその前
後に隣接するそれぞれの線要素との接続関係及び塗りつ
ぶすべき領域の方向に基づいて、主走査から見たときの
輪郭線データを生成する輪郭線データ生成行程と、 主走査方向に走査するときに、奇数番目に遭遇する輪郭
位置とその直後の偶数番目に遭遇する輪郭位置とが同じ
である場合を除き、奇数番目に遭遇する輪郭は当該画素
位置が領域の正転位置を示しているとして、偶数番目に
遭遇する輪郭の進行方向にある隣接画素位置は当該画素
位置が領域の反転位置を示しているとして設定する設定
行程と、 各走査線上の走査方向から見て、奇数番目の輪郭位置か
ら偶数番目の位置の直前の画素位置までを閉図形の領域
内、それ以外は閉図形の領域外であると判定する判定行
程とを備えることを特徴とする画像処理方法。 - 【請求項2】 輪郭線データ生成行程は、 注目線要素が主走査方向に平行であるときには無視する
行程と、 注目線要素とその前後に隣接する線要素の接続関係か
ら、注目線要素の両端点の座標位置を補正する補正行程
とを備えることを特徴とする請求項1に記載の画像処理
方法。 - 【請求項3】 複数の線要素でもって構成された閉輪郭
の内部を塗り潰す画像処理装置において、 線要素の連続する一方向における、注目線要素とその前
後に隣接するそれぞれの線要素との接続関係及び塗りつ
ぶすべき領域の方向に基づいて、主走査から見たときの
輪郭線データを生成する輪郭線データ生成手段と、 主走査方向に走査するとき、奇数番目に遭遇する輪郭位
置とその直後の偶数番目に遭遇する輪郭位置とが同じで
ある場合を除き、奇数番目に遭遇する輪郭は当該画素位
置が領域の正転位置を示しているとして、偶数番目に遭
遇する輪郭の進行方向にある隣接画素位置は当該画素位
置が領域の反転位置を示しているとして設定する設定手
段と、 各走査線上の走査方向から見て、奇数番目の輪郭位置か
ら偶数番目の位置の直前の画素位置までを閉図形の領域
内、それ以外は閉図形の領域外であると判定する判定手
段とを備えることを特徴とする画像処理装置。 - 【請求項4】 輪郭線データ生成手段は、 注目線要素が主走査方向に平行であるときには無視する
手段と、 注目線要素とその前後に隣接する線要素の接続関係か
ら、注目線要素の両端点の座標位置を補正する補正手段
とを備えることを特徴とする請求項3に記載の画像処理
装置。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP17209991A JPH0520468A (ja) | 1991-07-12 | 1991-07-12 | 画像処理方法及びその装置 |
| EP92306374A EP0522877B1 (en) | 1991-07-12 | 1992-07-10 | Image processing |
| 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 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP17209991A JPH0520468A (ja) | 1991-07-12 | 1991-07-12 | 画像処理方法及びその装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH0520468A true JPH0520468A (ja) | 1993-01-29 |
Family
ID=15935527
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP17209991A Pending JPH0520468A (ja) | 1991-07-12 | 1991-07-12 | 画像処理方法及びその装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH0520468A (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5974195A (en) * | 1994-10-14 | 1999-10-26 | Canon Kabushiki Kaisha | Image processing apparatus and method |
-
1991
- 1991-07-12 JP JP17209991A patent/JPH0520468A/ja active Pending
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5974195A (en) * | 1994-10-14 | 1999-10-26 | Canon Kabushiki Kaisha | Image processing apparatus and method |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH0719297B2 (ja) | グラフィック表示処理システム及び方法 | |
| EP0934574A1 (en) | Method and apparatus for attribute interpolation in 3d graphics | |
| US5561534A (en) | Image processing method and apparatus | |
| EP0592770B1 (en) | Method for filling of interior pixels within a polygon | |
| KR20050030569A (ko) | 화상 처리 장치 및 그 방법 | |
| KR100281949B1 (ko) | 영상 드로잉 장치 | |
| EP0345672A2 (en) | Address generator | |
| JP3155595B2 (ja) | 符号化方法及びその装置 | |
| US4974172A (en) | Image processing apparatus | |
| JP3130965B2 (ja) | 画像処理方法及びその装置 | |
| JPH0520466A (ja) | 画像処理方法及びその装置 | |
| JPH0520468A (ja) | 画像処理方法及びその装置 | |
| JP3139805B2 (ja) | 画像処理方法及びその装置 | |
| JPH0918698A (ja) | 画像処理装置および画像処理方法 | |
| JP2613653B2 (ja) | 画像処理装置 | |
| JPS63305478A (ja) | パタ−ン情報復元装置 | |
| JP2634906B2 (ja) | 画像処理方法 | |
| JP2610825B2 (ja) | 図形処理装置 | |
| JP3151005B2 (ja) | 図形処理装置および図形処理方法 | |
| JP2773127B2 (ja) | 画像編集方法 | |
| JPH061493B2 (ja) | 画像の塗りつぶし装置 | |
| JP3129717B2 (ja) | 画像処理装置および画像処理方法 | |
| JPH087794B2 (ja) | 画像処理方法 | |
| JP2000298729A (ja) | 二次元画像生成装置 | |
| JP2836617B2 (ja) | レンダリングプロセッサ |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 19990405 |