JP2000172857A - 画像処理装置、画像処理方法、記憶媒体および画像出力装置 - Google Patents

画像処理装置、画像処理方法、記憶媒体および画像出力装置

Info

Publication number
JP2000172857A
JP2000172857A JP34617298A JP34617298A JP2000172857A JP 2000172857 A JP2000172857 A JP 2000172857A JP 34617298 A JP34617298 A JP 34617298A JP 34617298 A JP34617298 A JP 34617298A JP 2000172857 A JP2000172857 A JP 2000172857A
Authority
JP
Japan
Prior art keywords
area
intersection
scan line
pixel
image processing
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
JP34617298A
Other languages
English (en)
Inventor
Naoyuki Iwabuchi
直行 岩渕
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co 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 Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP34617298A priority Critical patent/JP2000172857A/ja
Publication of JP2000172857A publication Critical patent/JP2000172857A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)

Abstract

(57)【要約】 【課題】 プリンタ等において塗りつぶし処理を行うた
めに輪郭線が生成される。ここで、輪郭線の幅を一定に
すると、輪郭線とスキャンラインとの交叉角が小さい場
合は輪郭線が破線状になるという問題が生じる。そこ
で、輪郭線とスキャンラインとの関係に応じて輪郭線の
幅を決定する。 【解決手段】 PDL解釈部200はPDL(ページ記
述言語)データを受信すると、文字または図形の輪郭線
データを出力する。塗りつぶし領域算出部310は、該
輪郭線とスキャンラインとの交叉角が小さくなるほど広
くなるように、該輪郭線と該スキャンラインとの交叉領
域を算出する。そして、塗りつぶし処理部320は、こ
の交叉領域の算出結果に基づいて塗りつぶし処理を行
う。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複写機、プリン
タ、あるいはディスプレイドライバ等において、輪郭線
データに基づいてその中身を塗りつぶす処理に用いて好
適な画像処理装置、画像処理方法、記憶媒体および画像
出力装置に関する。
【0002】
【従来の技術】現在コンピュータ等からプリンタに画像
出力を指令するために、ページ記述言語(PDL:Pag
e Discription Language)が広く用いられている。一
般的にページ記述言語で複雑な図形を描く場合はパスと
呼ばれる閉曲線の輪郭を指定し、その内部を塗りつぶし
たり、ビットマップ図形を輪郭に沿って切り抜いて図の
一部として利用する等の処理を繰返して最終的な出力画
像が生成される。例えば内部を塗りつぶした星形の図形
を描く場合、図1(a)または(b)に示すような星形の輪郭
が指定され、その内部が塗りつぶされる。閉線内部を塗
りつぶすアルゴリズムとして、オーダードエッジリスト
アルゴリズムと呼ばれるものが知られている(参考:実
践コンピュータグラフィックス、山口富士夫監修、日刊
工業新聞社発行、ISBN4-526-02143-1)。
【0003】このアルゴリズムの概略は次のような手順
からなる。 (1)スキャンラインと呼ばれる、(一般的にはX軸
に)平行な複数の直線を想定する。 (2)これらスキャンライン毎に輪郭線との交点データ
を求める。 (3)スキャンライン毎に求められた交点データをソー
トする。 (4)ソートされた交点データをスキャンラインの走査
方向に沿って順に抽出し、塗りつぶし領域の交点データ
の組を作成する。 (5)塗りつぶし領域の組で指定された領域を実際に塗
りつぶす。
【0004】上記アルゴリズムの例を図3を参照して説
明する。図において点A、B、C、Dを端点とする四角
形ABCDが輪郭線である。スキャンラインは、X軸に
平行で、Y座標が0.5から1ずつ等間隔に配置されてい
るものと想定する。尚、四角形ABCDはA→B→C→
D→Aの順に描かれたものとする。次に、各スキャンラ
インと輪郭線との交点および描画方向が求められ、その
結果が図4に示すようにスキャンライン毎に記憶され
る。ここで各スキャンラインのY座標は固定されている
から、交点データの座標値はX座標の値だけで指定され
ている。描画方向は「上」または「下」の何れかで表現
される。ここで、「上」とは、「輪郭線はスキャンライ
ンの下から上に交わる」ことを指し、「下」とは「上か
ら下に交わる」ことをいう。
【0005】次に、各スキャンライン毎に、X座標の小
さい順に図4の各交点データをソートすると、図5に示
す結果が得られる。ところで、実際のプリンタあるいは
ディスプレイ等の画像出力装置は、「画素」を単位とし
て各種図形を描画する。上記X,Y座標が画素の座標を
現わすものとすると、実際の描画を行う前に座標値を整
数化する必要がある。そこで、ここでは、Y座標につい
ては切り捨てで、X座標については四捨五入で整数化を
行うこととする。整数化を行った後、塗りつぶし領域の
両端を成す交点データの組を求めると、図6に示す通り
となる。
【0006】以下、図6に従って、実際に画素を塗りつ
ぶせばよい。その塗りつぶし領域の両端を成す交点の組
を求めるルールについては、Non−Zeroルールお
よびEven−Oddルールが知られている。その詳細
を図2(a)〜(c)を参照し説明する。まず、同図(a)のよ
うに輪郭線を横切るスキャンラインを想定する。そし
て、輪郭線とスキャンラインとが交叉する毎に、描画方
向「上」および「下」に対して各々「1」および「−
1」となる識別値を割り当てる。
【0007】次に、スキャンラインを図上で左から右に
向かって交叉点を辿り、これら識別値を加算してゆく。
ここで、Non−Zeroルールとは、識別値の合計が
「0」以外であれば塗りつぶすというルールであり、塗
りつぶし結果は同図(b)のようになる。また、Even
−Oddルールとは、識別値の合計が奇数であれば塗り
つぶし、偶数であれば塗りつぶさないというルールであ
り、塗りつぶし結果は同図(c)に示すようになる。
【0008】
【発明が解決しようとする課題】ところで、上記技術に
おいて、輪郭線にはスキャンライン方向に所定の幅(太
さ)が付与される。ここで、スキャンラインとほぼ平行
でかつある一定の太さ以下の直線(または曲率の大きい
曲線)を描いた場合、実際には図8のような破線状に描
かれてしまう場合がある。
【0009】以下、このような現象が発生する理由を説
明する。本来スキャンラインと輪郭線は太さのない直線
と仮定して扱われているため、輪郭線とスキャンライン
とが平行に重ならない限り両者の交点は点となる。しか
し、実際のプリンタやディスプレイ等は有限の大きさを
持った点または直線の集まりとして図形を表示してい
る。このため、スキャンラインや輪郭線に一定の太さを
想定すると、あるスキャンラインの値に対して点でしか
交わらないはずの輪郭線が実際には点で交わらず一定の
大きさの領域で交わることとなる。
【0010】特に、スキャンラインと輪郭線との交叉角
が小さい場合は、スキャンライン上に投影した時の線幅
が輪郭線とスキャンラインとの交点が作る幅よりも小さ
くなることがある。例えば図7の例においては、交点は
X座標で7点分の範囲を含む大きさになる。また、ある
線幅の大きさをスキャンラインの上に投影した時の線幅
が輪郭線とスキャンラインとの交点がつくる幅よりも小
さくなることがある。図7では(X軸に投影した)線幅
は最低7点分必要であるが、線幅として指定されている
幅は3点分しか確保されていないため、破線となってし
まうのである。
【0011】以上のように、傾きに対して輪郭線の幅が
相対的に狭くなると、輪郭線が途切れるという問題が生
ずる。その一方、輪郭線の幅をあまり太くしてしまう
と、画像の微細な表現を行うことが不可能になる。この
発明は上述した事情に鑑みてなされたものであり、画像
の微細な表現を損なうことなく充分な輪郭線の幅を確保
できる画像処理装置、画像処理方法、記憶媒体および画
像出力装置を提供することを目的とする。
【0012】
【課題を解決するための手段】上記課題を解決するため
請求項1記載の構成にあっては、文字または図形の輪郭
線データを受信する輪郭線データ受信手段と、該輪郭線
とスキャンラインとの交叉角が小さくなるほど広くなる
ように、該輪郭線と該スキャンラインとの交叉領域を算
出する交叉領域算出手段とを具備することを特徴とす
る。さらに、請求項2記載の構成にあっては、請求項1
記載の画像処理装置において、前記交叉領域を、前記ス
キャンラインに対応して記憶する記憶手段と、前記記憶
手段に記憶された2つの交叉領域であって、塗りつぶす
べき範囲の両端を成す両端交叉領域を抽出する抽出手段
とを具備することを特徴とする。さらに、請求項3記載
の構成にあっては、請求項2記載の画像処理装置におい
て、前記記憶手段は、1つの交叉領域毎にその両端を成
す第1および第2の画素の位置を記憶することを特徴と
する。さらに、請求項4記載の構成にあっては、請求項
3記載の画像処理装置において、前記記憶手段は、前記
第1および第2の画素に対して対応して第1および第2
の識別値を記憶するものであり、前記抽出手段は、各ス
キャンライン毎に前記第1および第2の識別値を順次加
算または減算し、この加算または減算結果に基づいて前
記両端交叉領域を抽出することを特徴とする。さらに、
請求項5記載の構成にあっては、請求項1〜4の何れか
に記載の画像処理装置において、前記各交叉領域が一画
素になるか否かを判定する個別画素数判定手段を具備
し、前記交叉領域が一画素になると判定された場合は、
前記記憶手段はこの一画素の座標によって前記交叉領域
を表現することを特徴とする。さらに、請求項6記載の
構成にあっては、請求項1〜4の何れかに記載の画像処
理装置において、前記輪郭線の一部に対応する全ての交
叉領域が一画素になるか否かを判定する広域画素数判定
手段を具備し、前記全ての交叉領域が一画素になると判
定された場合は、前記記憶手段はこれら全ての交叉領域
毎に各一画素の座標によって前記交叉領域を表現するこ
とを特徴とする。さらに、請求項7記載の構成にあって
は、請求項5または6記載の画像処理装置において、前
記記憶手段は、交叉領域が一画素になる場合は、その一
画素に対して前記第1および第2の識別値の合計に等し
い第3の識別値を記憶することを特徴とする。また、請
求項8記載の構成にあっては、文字または図形の輪郭線
を記憶する過程と、該輪郭線とスキャンラインとの交叉
角が小さくなるほど広くなるように、該輪郭線と該スキ
ャンラインとの交叉領域を算出する過程とを有すること
を特徴とする。また、請求項9記載の構成にあっては、
請求項8記載の方法を実行するプログラムを記録したこ
とを特徴とする。また、請求項10記載の構成にあって
は、請求項1〜7の何れかに記載の画像処理装置を具備
することを特徴とする。
【0013】
【発明の実施の形態】1.実施形態の構成 次に、本発明の一実施形態のプリンタの構成を図9を参
照し説明する。図において100は外部インターフェイ
スであり、ページ記述言語(PDL)データ等のファイ
ルをホストコンピュータ等から受け取る。この部分はネ
ットワークに直接接続可能なシリアルやパラレルのイン
ターフェイスである。200はPDL解釈部であり、1
00の外部のインターフェイスを介してデータとして送
られてくるPDLデータを順次解釈していき、PDLデ
ータで指定された図形や文字を適切な位置に生成するた
めに、輪郭を特定する輪郭線データを算出する等の制御
を行う。
【0014】例えばPDLデータによって図3の4つの
線分から成る四角形ABCDの画像が表現された場合、
PDL解釈部200は「輪郭線データ」として端点A、
B、C、Dの座標を出力する。300はレンダリング部
であり、200のPDL解釈部からの制御により、輪郭
線データから出力エンジン400で出力可能な形式のデ
ータを生成する。レンダリング部300は塗りつぶし領
域算出部310と塗りつぶし処理部320とによって構
成される。
【0015】塗りつぶし領域算出部310はPDL解釈
部200の制御を受けてスキャンライン毎の塗りつぶし
範囲を算出する。塗りつぶし処理部320は、塗りつぶ
し領域算出部310で算出された塗りつぶし範囲をビッ
トマップデータ化し、出力エンジン400に出力する。
但し、出力エンジン400が、例えばプロッタのように
領域を指定して塗りつぶし可能な物である場合は、塗り
つぶし処理部320は省略することができる。
【0016】塗りつぶし領域算出部310のさらに詳細
な構成について図10を参照しながら説明する。図にお
いて312は交叉点算出部であり、輪郭線とスキャンラ
インとの交点を算出する。これは、「従来の技術」の欄
で説明したのと同様の手法によるものであり、輪郭線と
スキャンラインとの交叉領域(交叉点)は常に一画素で
あることを前提にしている。313は交叉領域算出部で
あり、後述するアルゴリズムに基づいて、複数画素にな
り得る交叉領域を算出する。交叉領域算出部313は、
交叉領域を構成する画素のうちX座標が最小になる画素
(以下、最小点という)および最大となる点(以下、最
大点という)を出力する。
【0017】311は交叉領域予測部であり、交叉領域
を計算したときに出力機器の解像度において輪郭線とス
キャンラインとの交叉領域が必ず一画素に収まるか否か
を予測する。ここで、本実施形態では座標系のX軸とY
軸のメモリを出力画素と対応させることにより、整数化
した時に同一の値になれば同じ点を示すものとする。
尚、本実施形態ではスキャンラインはX軸と平行な直線
であるとする。輪郭線は単純な直線や曲線の組合せで表
現されるが、例えば構成要素が直線である場合には、そ
の直線とスキャンラインとが成す交叉角の絶対値が45
度以上ならば必ず一画素で交叉することが予測できる。
一方、交叉角が45°未満であれば、交叉領域は必ずし
も一画素に収まらない(複数画素になり得る)。
【0018】さらに、交叉領域予測部311は、この予
測結果に応じて交叉点算出部312あるいは交叉領域算
出部313のうち一方を動作させる。すなわち、交叉領
域が必ず一画素で表すことができる場合は、交叉点算出
部312によって、交叉領域を1つの点の座標で計算す
る単純なアルゴリズムが用いられ、処理負担が軽減され
る。一方、交叉領域が複数画素になり得ると予測された
場合は、交叉領域算出部313によって、交叉領域が算
出されることとなる。
【0019】314は判定部であり、交叉領域算出部3
13から実際に交叉領域として複数画素が出力された場
合が存在するか否かの判定を行う。315は交叉領域記
憶部であり、交叉点算出部312または交叉領域算出部
313から出力されるデータを記憶する。316は領域
抽出部であり、交叉領域記憶部315に記憶されている
データに基づいて、塗りつぶしルールに従って、塗りつ
ぶされる領域を算出して出力する。ここで、領域抽出部
316にあっては判定部314の判定結果が参照され、
より簡単な塗りつぶし方法が選択できる場合は、簡単な
方法を選択し、処理負担を軽減する。
【0020】2.実施形態の動作 2.1.塗りつぶし領域算出部310(領域抽出部31
6を除く)の動作 次に本実施形態の動作を説明する。まず、PDL解釈部
200においては、PDLデータに基づいて輪郭線デー
タが計算され、この輪郭線データがレンダリング部30
0に供給される。例えば、構成要素が線分からなる図1
1に示す形状がPDLデータによって表現された場合
は、輪郭線データとして、この形状を構成する各線分の
端点の座標がレンダリング部300に供給される。図示
の例にあっては、座標(0,0)、(27,6)、(2
8,6)、(13,3)および(13,0)が順次供給さ
れる。この輪郭線データが供給されると、塗りつぶし領
域算出部310においては図12,図13に示すフロー
チャートのプログラムが起動される。
【0021】図12において処理がステップSP100
に進むと、輪郭線データを構成する一つの要素(ここで
は線分)が取り出される。上記例にあっては、まず最初
に座標が(0,0)から(27,6)に至る線分が取り
出される。次に処理がステップSP101に進むと、こ
の要素の描画方向はスキャンラインに平行であるかが判
定される。ここでは(Y方向の画素数/X方向の画素
数)が0であるかないかによって判定される。線分の傾
きは、(Y方向の画素数/X方向の画素数)=7/28
≠0であるので「NO」と判定され、ステップSP10
2に進む。
【0022】次に処理がステップSP102に進むと、
この要素とスキャンラインとの交叉領域が必ず一点に収
まるか否かが交叉領域予測部311によって判定され
る。上記例にあっては、要素となる線分の傾きは、(Y
方向の画素数/X方向の画素数)=7/28<1であ
り、一つのスキャンラインに対して複数画素から成る交
叉領域を持ち得るから「NO」と判定され、処理はステ
ップSP107に進む。ステップSP107にあって
は、交叉領域が一つだけ計算される。上記例にあって
は、まず要素となる線分の始点である座標(0,0)は
Y=0のスキャンラインと交叉するので、Y=0のスキ
ャンライン上において座標(0,0)が交叉領域上の1
点として求められる。
【0023】次に、処理がステップSP108に進む
と、交叉領域は1点で表わせるか否かが判定部314に
よって判定される。上記例にあっては、X=1のときY
=1×7/28=0.25、X=2のときY=2×7/
28=0.5、X=3のときY=3×7/28=0.7
5、X=4のときY=4×7/28=1.00となる
が、Y座標の小数点以下は切り捨てられるため、X=0
〜3の範囲でY座標は「0」になる。
【0024】従って、Y=0のスキャンラインにおいて
は「4」画素の交叉領域が必要であり、ステップSP1
08においては「NO」と判定され、処理はステップS
P109に進む。ここでは、要素となる線分の描画方向
は「下から上」であるか否かが判定される。上記例にあ
っては、要素となる線分は座標(0,0)から(27,
6)に向かっており、右上りの方向に向かっている。従
って、要素となる線分はスキャンラインを「下から上」
に横切るため「NO」と判定され、処理はステップSP
110に進む。
【0025】ここでは、対応するスキャンラインにおけ
る交叉領域のX座標の最小値と最大値とが求められる。
上記例にあっては、Y=0のスキャンラインに対応する
交叉領域は(0,0)、(1,0)、(2,0)、
(3,0)の4点から構成される。従って、X座標の最
小値は「0」であって最大値は「3」である。これらの
点を、「X座標値(領域データ、描画方向)」の形式で
表わすこととする。ここで「領域データ」とは、交叉領
域の最小値を「1」、最大値を「−1」で表わすデータ
である。また、「描画方向」とは、線分が複数点の交叉
領域によって下から上にスキャンラインと交叉する場合
は「1」、複数点の交叉領域によって上から下にスキャ
ンラインと交叉する場合は「−1」、一点の交叉点によ
って下から上にスキャンラインと交叉する場合は
「2」、一点の交叉点によって上から下にスキャンライ
ンと交叉する場合は「−2」となる値である。
【0026】そうすると、上記(0,0)から(3,
0)に至る交叉領域は、Y=0のスキャンラインに対し
て、「0(1,1)」および「3(−1,1)」のよう
に表現される。このように求められた交叉領域は、交叉
領域記憶部315に記憶される。次に、処理がステップ
SP112に進むと、対象となっている輪郭線データの
要素(ここでは座標(0,0)から(27,6)に至る
線分)とスキャンラインとの交点が全て求められたか否
かが判定される。ここまでの処理では、Y=0に対応す
る交叉領域しか求められていないため、「NO」と判定
され、処理はステップSP107に戻る。
【0027】ここでは、未だ計算されていない交叉領域
の一つが計算される。上記例にあっては、X=4に対応
する点(4,1)が1つの交叉領域として計算されたと
する。ここで、Y=0の時と同様に、交叉領域は複数点
で表わされ、さらに描画方向は「下から上」であるか
ら、処理はステップSP108、SP109を介してス
テップSP110に進む。ここでは、Y=1に対応する
交叉領域(4,1)、(5,1)、(6,1)、(7,
1)が計算される。この計算結果によれば、X座標の最
小値は「4」、最大値は「7」であり、Y=1のスキャ
ンラインに対応する交叉領域は、「4(1,1)」およ
び「7(−1,1)」のように表現され、交叉領域記憶
部315に記憶される。
【0028】以下同様に、座標(0,0)から(27,
6)に至る線分の交叉領域が全て求まるまでステップS
P107〜SP112の処理が繰返される。このように
して求められた交叉領域を図15に示す。このように、
該線分の交叉領域が全て求まった後に処理がステップS
P112に進むと、ここで「YES」と判定され処理は
ステップSP116に進む。ここでは、輪郭線データの
全ての要素に対して交叉領域の算出処理が終了したか否
かについて判定される。ここまでの過程では、座標
(0,0)から(27,6)に至る線分の交叉領域しか
求められていないため「NO」と判定され、処理はステ
ップSP101に戻る。
【0029】ステップSP101に戻ると、輪郭線デー
タを構成する次の要素が一つ取り出される。上記例にあ
っては、座標(27,6)から(28,6)に至る線分
が取り出される。この線分の傾きはスキャンラインに対
して平行であるから、次に処理がステップSP101に
進むと「YES」と判定され、処理はステップSP11
6を介してSP100に戻る。
【0030】ステップSP100においては、次に(2
8,6)から(13,3)に至る線分が取り出される。
最初の線分と同様に処理がステップSP101,SP1
02を介してステップSP107に進む。ステップSP
107にあっては、交叉領域が一つだけ計算される。上
記例にあっては、まず要素となる線分の始点である座標
(28,6)はY=6のスキャンラインと交叉するの
で、Y=6のスキャンライン上において座標(28,
6)が交叉領域上の1点として求められる。
【0031】次に、処理がステップSP108に進む
と、交叉領域は1点で表わせるか否かが判定部314に
よって判定される。この線分は、最初に取り出された線
分に対して逆方向に向かうため、傾きは「−7/28」
である。上記例にあっては、X=28のときY=(28
−1)×7/28=6.75、X=27のときY=(2
7−1)×7/28=6.5、X=26のときY=(2
6−1)×7/28=6.25、X=25のときY=
(25−1)×7/28=6.00となる。Y座標の小
数点以下は切り捨てられるため、X=25〜28の範囲
でY座標は「6」になる。
【0032】従って、ステップSP108においては
「NO」と判定され、処理はステップSP109に進
む。また、要素となる線分の描画方向は「上から下」で
あるため、ステップSP109においては「YES」と
判定され処理はステップSP111に進む。ここでは、
ステップSP110と同様に、対応するスキャンライン
における交叉領域のX座標の最小値と最大値とが求めら
れる。上記例にあっては、Y=6のスキャンラインに対
応する交叉領域は(25,6)、(26,6)、(2
7,6)、(28,6)の4点から構成される。従っ
て、X座標の最小値は「25」であって最大値は「2
8」である。
【0033】これらの点を、「X座標値(領域データ、
描画方向)」の形式で表わすと、上記(25,6)から
(28,6)に至る交叉領域は、Y=6のスキャンライ
ンに対して、「25(1,−1)」および「28(−
1,−1)」のように表現される。このように求められ
た交叉領域は、交叉領域記憶部315に記憶される。次
に、処理がステップSP112に進むと、対象となって
いる輪郭線データの要素とスキャンラインとの交点が全
て求められたか否かが判定される。
【0034】ここでは「NO」と判定され、座標(2
8,6)から(13,3)に至る線分の交叉領域が全て
求まるまでステップSP107〜SP112の処理が繰
返される。現在までの処理で求められた交叉領域を図1
6に示す。次に、ステップSP116を介して処理がス
テップSP100に戻ると、再び輪郭線データを構成す
る一つの要素が取り出される。上記例にあっては、座標
(13,3)から(13,0)に至る線分が取り出され
る。
【0035】この線分は、スキャンラインに対して90
°(>45°)で交叉するから、処理がステップSP1
01を介してステップSP102に進むと「YES」と
判定され、処理はステップSP103に進む。ここで
は、描画方向は「下から上」であるか否かが判定され
る。上記線分の描画方向は「上から下」であるから「N
O」と判定され、処理はステップSP104に進む。こ
こでは、スキャンラインと該線分との交叉点が交叉点算
出部312によって計算される。
【0036】ここでは、最初に点(13,3)が交叉点
として計算される。しかし、この交叉点は、先に座標
(28,6)から(13,3)に至る線分の交叉領域の
一部として既に含まれている。本実施形態においては、
ステップSP110あるいはSP111で求められた交
叉領域は、ステップSP104,SP105および後述
するSP114,115に対して優先する。このため、
ここでは何も記憶されずに処理はステップSP106に
進む。ここでは、対象となっている輪郭線データの要素
とスキャンラインとの交叉点が全て求められたか否かが
判定される。現時点では未だ全ての交叉点が得られてい
ないため「NO」と判定され、処理はステップSP10
3に戻る。
【0037】次に、処理が再びステップSP104に進
むと、次の交叉点(13,2)が計算される。この交叉
点は、描画方向が「−2」,領域データが「0」として
交叉領域記憶部315に記憶される。以下同様に、交叉
点(13,1)、(13,0)が順次計算され、各々描
画方向が「−2」,領域データが「0」として記憶され
る。現在までの処理で求められた交叉領域を図17に示
す。次に、処理がステップSP116を介してステップ
SP100に戻ると、座標(13,0)から(0,0)
に至る線分が取り出される。しかし、この線分はスキャ
ンラインに対して平行であるからステップSP101に
おいて「YES」と判定され、処理はステップSP11
6に進む。ここで、輪郭線データの全ての要素に対する
処理が完了したから、「YES」と判定され、本ルーチ
ンの処理は終了する。
【0038】ここで、図11の例によって辿られなかっ
たステップに関して説明しておく。まず、下から上に向
かう要素であって交点が必ず1点に収まると予測される
ものについては、ステップSP103において「YE
S」と判定され、ステップSP105において交叉点が
計算される。この計算内容はステップSP104と同様
であるが、交叉領域記憶部315に記憶される際に描画
方向は「2」、領域データは「0」として記憶される。
すなわち、描画方向の極性が異なる。
【0039】また、要素となる線分とスキャンラインと
の交叉角が45°未満30°以上である場合、各スキャ
ンラインにおける交叉領域の画素数は1点の場合と複数
点の場合とに分かれる。従って、かかる場合は「必ず1
点に収まる」というステップSP102の条件を満たさ
ないから、処理はステップSP107を介してステップ
SP108に進む。この場合、スキャンライン毎にステ
ップSP108における判定結果が区々となる。
【0040】ステップSP109〜SP112の処理は
上述した通りであり、各交叉領域の最小点および最大点
が描画方向(1または−1)と領域データ(1)ととも
に記憶される。一方、ステップSP108において「Y
ES」と判定されると、処理はステップSP113に進
む。ステップSP113〜SP115の処理は、上記ス
テップSP103〜SP105と同様であり、交叉点算
出部312によって交叉点が求められ、描画方向(2ま
たは−2)および領域データ(0)とともに交叉領域記
憶部315に記憶される。このようにして、図17に示
す各データが求められると、各スキャンライン毎にX座
標が昇順になるようにソートされる。図17のソート結
果を図18に示す。
【0041】2.2.領域抽出部316の動作 領域抽出部316においては、図18に示すデータが供
給されると、各スキャンライン毎に図14に示すプログ
ラムが起動される。最初に図18のY=0のスキャンラ
インに対する処理を説明する。図において処理がステッ
プSP201に進むと、変数LRcountおよび変数
RuleCountが共に「0」に設定される。次に、
処理がステップSP202に進むと、交叉領域記憶部3
15における交点データが一つ取り出され、塗りつぶし
の始点とされる。この例にあっては、Y座標=0のX座
標=0の点が読み出され、これが塗りつぶしの始点とさ
れる。
【0042】次に、処理がステップSP203に進む
と、変数RuleCountに描画方向の値「1」が加
算され、変数LRcountに領域データの値「1」が
加算される。従って、変数RuleCountおよび変
数LRcountは共に「1」になる。次に処理がステ
ップSP204に進むと、次の交点(図示の例ではX座
標=3)が取り出される。
【0043】次に処理がステップSP205に進むと、
変数RuleCountに描画方向の値「1」が加算さ
れ、変数LRcountに領域データの値「−1」が加
算される。従って、変数RuleCountは「2」
に、変数LRcountは「0」になる。次に処理がス
テップSP206に進むと、変数LRcountが
「0」であるか否かが判定される。ここでは「0」であ
るから「YES」と判定され、処理はステップSP20
7に進む。ここでは、変数RuleCountを「4」
で除算した余りは「0」になるか否かが判定される。変
数RuleCountは「2」であるから「NO」と判
定され、処理は処理はステップSP204に戻る。
【0044】ここでは、次の交点(X座標=13)が取
り出される。そして、処理がステップSP205に進む
と、変数RuleCountは「−2」が加算されて
「0」になり、変数LRcountは「0」が加算され
て「0」になる。「0」は「4」で割り切れるから、次
に処理がステップSP206を介してSP207に進む
と「YES」と判定され、処理はステップSP208に
進む。ここでは、最後に取り出された交点を終点とし
て、塗りつぶし範囲が設定される。すなわち、Y座標=
0のスキャンラインにおいては、X座標=0〜13が塗
りつぶし範囲になる。次に、処理がステップSP209
に進むと、処理対象のスキャンラインに交点が残ってい
るか否かが判定される。上記例においては、交点は残っ
ていないから「NO」と判定され、Y座標=0のスキャ
ンラインに対する処理が終了する。
【0045】次に、Y座標=3のスキャンラインに対す
る動作を説明する。図において処理がステップSP20
1に進むと、変数LRcountおよび変数RuleC
ountが共に「0」に設定される。次に、処理がステ
ップSP202に進むと、Y座標=3のX座標=12の
点が読み出され、これが塗りつぶしの始点とされる。
【0046】次に、処理がステップSP203に進む
と、変数RuleCountに描画方向の値「1」が加
算され、変数LRcountに領域データの値「1」が
加算される。従って、変数RuleCountおよび変
数LRcountは共に「1」になる。次に処理がステ
ップSP204に進むと、次の交点(図示の例ではX座
標=13)が取り出される。
【0047】次に処理がステップSP205に進むと、
変数RuleCountに描画方向の値「−1」が加算
され、変数LRcountに領域データの値「1」が加
算される。従って、変数RuleCountは「0」
に、変数LRcountは「2」になる。次に処理がス
テップSP206に進むと、変数LRcountが
「0」であるか否かが判定される。ここでは「2」であ
るから「NO」と判定され、処理はステップSP204
に戻る。
【0048】ここでは、次の交点(X座標=15)が取
り出される。そして、処理がステップSP205に進む
と、変数RuleCountは「1」が加算されて
「1」になり、変数LRcountは「−1」が加算さ
れて「1」になる。ここで変数LRcountは「0」
ではないから、処理はステップSP206を介してステ
ップSP204に戻る。ここでは、次の交点(X座標=
16)が取り出される。そして、処理がステップSP2
05に進むと、変数RuleCountは「−1」が加
算されて「0」になり、変数LRcountは「−1」
が加算されて「0」になる。
【0049】これにより、ステップSP206,SP2
07において共に「YES」と判定され、処理はステッ
プSP208に進む。ここでは、最後に取り出された交
点を終点として、塗りつぶし範囲が設定される。すなわ
ち、Y座標=3のスキャンラインにおいては、X座標=
12〜16が塗りつぶし範囲になる。
【0050】次に、処理がステップSP209に進む
と、処理対象のスキャンラインに交点が残っているか否
かが判定される。上記例においては、交点は残っていな
いから「NO」と判定され、Y座標=3のスキャンライ
ンに対する処理が終了する。なお、Y=0及びY=3の
スキャンラインにおいて、以上の動作でLRcoun
t、RuleCount各変数の変わっていく様子をま
とめたものを図19と図20に示す。
【0051】3.実施形態の効果 本実施形態にれば、輪郭線の要素の傾きに応じて適切な
交叉領域を確保できるから、文字や図形を正確かつ高品
質に描画することが可能である。さらに輪郭線を直線近
似しなくてもオーダードエッジアルゴリズムで描画可能
なものは本実施形態でも描画可能であり、生成される交
点座標は最悪でも高々従来技術の倍になる程度ですむ。
さらに、上下のスキャンラインを考慮することなくスキ
ャンライン毎に独立に塗りつぶし領域の決定を行うこと
が可能である。従って、ページバッファやバンドバッフ
ァを持つ必要がなく、ディスプレイ上のみで計算を行う
アルゴリズム等と極めて相性がよく、かつ高速な処理が
可能となる。
【0052】4.変形例 本発明は上述した実施形態に限定されるものではなく、
例えば以下のように種々の変形が可能である。 (1)図14の処理はEven−Oddルールに基づい
て塗りつぶしを行うものであったが、Non−Zero
ルールに基づいて塗りつぶしを行ってもよいことは言う
までもない。具体的には、ステップSP207の処理の
内容を「RuleCountは0であるか?」を判定す
るように変更するとよい。
【0053】(2)上記実施形態は本発明をプリンタに
適用した例を説明したが、本発明はプリンタに限られる
ものではなく、複写機、プロッタ、CRTディスプレ
イ、液晶ディスプレイ等、様々な画像出力装置に対して
適用することが可能である。
【0054】(3)レンダリング部300の処理内容を
全てソフトウエアで行うことも可能である。すなわち、
このソフトウエアを記録したCD−ROM等の記録媒体
を頒布することにより、上記実施形態と同様の処理が汎
用パーソナルコンピュータ等においても行うことができ
る。
【0055】
【発明の効果】以上説明したように本発明によれば、画
像の微細な表現を損なうことなく充分な輪郭線の幅を確
保できる。
【図面の簡単な説明】
【図1】輪郭線データの例である。
【図2】塗りつぶしルールの説明図である。
【図3】従来技術の動作説明図である。
【図4】図3の輪郭線データとスキャンラインの交点を
求めたデータの格納例である。
【図5】図4のデータをソートした後のデータの様子を
表した図である。
【図6】塗りつぶし領域の数値表現結果を示す図であ
る。
【図7】スキャンラインとの交叉角が小さい直線の描画
結果を示す図である。
【図8】スキャンラインとの交叉角が小さい直線の描画
結果を示す図である。
【図9】本発明の一実施形態のプリンタシステムの構成
図である。
【図10】図9で示された塗りつぶし領域算出部310
の構成図である。
【図11】上記実施形態の動作説明図である。
【図12】上記実施形態の交点領域計算プログラムのフ
ローチャートである。
【図13】上記実施形態の交点領域計算プログラムのフ
ローチャートである。
【図14】上記実施形態の塗りつぶし領域抽出プログラ
ムのフローチャートである。
【図15】交叉領域記憶部315のメモリマップであ
る。
【図16】交叉領域記憶部315のメモリマップであ
る。
【図17】交叉領域記憶部315のメモリマップであ
る。
【図18】交叉領域記憶部315のメモリマップであ
る。
【図19】塗りつぶし領域抽出プログラムの動作説明図
である。
【図20】塗りつぶし領域抽出プログラムの動作説明図
である。
【符号の説明】
100 外部インターフェイス 200 PDL解釈部 300 レンダリング部 310 塗りつぶし領域算出部 311 交叉領域予測部 312 交叉点算出部 313 交叉領域算出部 314 判定部 315 交叉領域記憶部 316 領域抽出部 320 塗りつぶし処理部 400 出力エンジン

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 文字または図形の輪郭線データを受信す
    る輪郭線データ受信手段と、 該輪郭線とスキャンラインとの交叉角が小さくなるほど
    広くなるように、該輪郭線と該スキャンラインとの交叉
    領域を算出する交叉領域算出手段とを具備することを特
    徴とする画像処理装置。
  2. 【請求項2】 前記交叉領域を、前記スキャンラインに
    対応して記憶する記憶手段と、 前記記憶手段に記憶された2つの交叉領域であって、塗
    りつぶすべき範囲の両端を成す両端交叉領域を抽出する
    抽出手段とを具備することを特徴とする請求項1記載の
    画像処理装置。
  3. 【請求項3】 前記記憶手段は、1つの交叉領域毎にそ
    の両端を成す第1および第2の画素の位置を記憶するこ
    とを特徴とする請求項2記載の画像処理装置。
  4. 【請求項4】 前記記憶手段は、前記第1および第2の
    画素に対して対応して第1および第2の識別値を記憶す
    るものであり、 前記抽出手段は、各スキャンライン毎に前記第1および
    第2の識別値を順次加算または減算し、この加算または
    減算結果に基づいて前記両端交叉領域を抽出することを
    特徴とする請求項3記載の画像処理装置。
  5. 【請求項5】 前記各交叉領域が一画素になるか否かを
    判定する個別画素数判定手段を具備し、 前記交叉領域が一画素になると判定された場合は、前記
    記憶手段はこの一画素の座標によって前記交叉領域を表
    現することを特徴とする請求項1〜4の何れかに記載の
    画像処理装置。
  6. 【請求項6】 前記輪郭線の一部に対応する全ての交叉
    領域が一画素になるか否かを判定する広域画素数判定手
    段を具備し、 前記全ての交叉領域が一画素になると判定された場合
    は、前記記憶手段はこれら全ての交叉領域毎に各一画素
    の座標によって前記交叉領域を表現することを特徴とす
    る請求項1〜4の何れかに記載の画像処理装置。
  7. 【請求項7】 前記記憶手段は、交叉領域が一画素にな
    る場合は、その一画素に対して前記第1および第2の識
    別値の合計に等しい第3の識別値を記憶することを特徴
    とする請求項5または6記載の画像処理装置。
  8. 【請求項8】 文字または図形の輪郭線を記憶する過程
    と、 該輪郭線とスキャンラインとの交叉角が小さくなるほど
    広くなるように、該輪郭線と該スキャンラインとの交叉
    領域を算出する過程とを有することを特徴とする画像処
    理方法。
  9. 【請求項9】 請求項8記載の方法を実行するプログラ
    ムを記録したことを特徴とする記録媒体。
  10. 【請求項10】 請求項1〜7の何れかに記載の画像処
    理装置を具備することを特徴とする画像出力装置。
JP34617298A 1998-12-04 1998-12-04 画像処理装置、画像処理方法、記憶媒体および画像出力装置 Pending JP2000172857A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP34617298A JP2000172857A (ja) 1998-12-04 1998-12-04 画像処理装置、画像処理方法、記憶媒体および画像出力装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP34617298A JP2000172857A (ja) 1998-12-04 1998-12-04 画像処理装置、画像処理方法、記憶媒体および画像出力装置

Publications (1)

Publication Number Publication Date
JP2000172857A true JP2000172857A (ja) 2000-06-23

Family

ID=18381609

Family Applications (1)

Application Number Title Priority Date Filing Date
JP34617298A Pending JP2000172857A (ja) 1998-12-04 1998-12-04 画像処理装置、画像処理方法、記憶媒体および画像出力装置

Country Status (1)

Country Link
JP (1) JP2000172857A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015132999A (ja) * 2014-01-14 2015-07-23 三菱電機株式会社 データ処理装置及びデータ処理方法及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015132999A (ja) * 2014-01-14 2015-07-23 三菱電機株式会社 データ処理装置及びデータ処理方法及びプログラム

Similar Documents

Publication Publication Date Title
JP3919754B2 (ja) 画素順次描画システムにおいて実行される合成演算回数の削減法
JP2003271987A (ja) プリミティブにより覆われるピクセルの割合を求める方法
WO2008048859A2 (en) Directional feathering of image objects
JP2005044346A (ja) 画素のランのための合成計算の最適化
JP3433828B2 (ja) ピクセル画像のエッジ改良のための方法と装置
JP3142550B2 (ja) 図形処理装置
US5524198A (en) Character or graphic processing method and apparatus
JP3791259B2 (ja) アウトラインスムージング処理方法
WO2009020532A2 (en) Method for checkerboard-based vector to raster conversion
JP2000172857A (ja) 画像処理装置、画像処理方法、記憶媒体および画像出力装置
US6611632B1 (en) Device and method for interpolating image data and medium on which image data interpolating program is recorded
US20030063084A1 (en) System and method for improving 3D data structure representations
JP3536894B2 (ja) 図形処理装置
JP3567727B2 (ja) 画像処理方法および装置
JP2908194B2 (ja) 文字の変形制御方式
JPH0887585A (ja) 図形データの階層的近似化方法
KR940001106B1 (ko) 선폭보정방법 및 그 장치
JP3039214B2 (ja) データ変換装置
JPH02176927A (ja) 文字の処理方式
JP3567728B2 (ja) 画像処理方法および装置
JPH06110442A (ja) 文字図形処理装置、及び文字または図形の変形処理方法
JP3123902B2 (ja) グラフィック描画システム
JP3359166B2 (ja) プリンタ装置およびプリンタ装置の線分分割描画方法
JPH03278189A (ja) 図形処理装置
JPH10149453A (ja) 多角形図形描画装置