JP2005250662A - 直線描画装置、直線描画方法および直線描画プログラム - Google Patents

直線描画装置、直線描画方法および直線描画プログラム Download PDF

Info

Publication number
JP2005250662A
JP2005250662A JP2004057707A JP2004057707A JP2005250662A JP 2005250662 A JP2005250662 A JP 2005250662A JP 2004057707 A JP2004057707 A JP 2004057707A JP 2004057707 A JP2004057707 A JP 2004057707A JP 2005250662 A JP2005250662 A JP 2005250662A
Authority
JP
Japan
Prior art keywords
straight line
color
value
pixel
shading
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004057707A
Other languages
English (en)
Other versions
JP4301037B2 (ja
Inventor
Takashi Sawazaki
高 澤崎
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.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2004057707A priority Critical patent/JP4301037B2/ja
Publication of JP2005250662A publication Critical patent/JP2005250662A/ja
Application granted granted Critical
Publication of JP4301037B2 publication Critical patent/JP4301037B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Image Generation (AREA)

Abstract

【課題】 オーバーサンプリングを行うことなく、塗り潰し図形の輪郭に含まれる直線のアンチエイリアス処理を精度よく行う。
【解決手段】 シェーディングモジュールLMにて、各画素における直線色Lcolまたは背景色Bcolを考慮した濃度値を算出するとともに、シェーディングモジュールRMにて、各画素における塗り潰し色Fcolまたは直線色Lcolを考慮した濃度値を算出し、色合成モジュールM0にて、これらの各画素の濃度値を合成することにより各画素の出力色情報Colを算出する。
【選択図】 図5

Description

本発明は直線描画装置、直線描画方法および直線描画プログラムに関し、特に、塗り潰し図形の輪郭に含まれる直線のアンチエイリアス処理に適用して好適なものである。
従来の直線描画方法では、斜めに描画された直線の段差を滑らかにするために、アンチエイリアス処理を施す方法がある。このアンチエイリアス処理では、画素に占める直線の割合に応じて各画素の濃度値を変化させることにより、滑らかな斜線を描画することができる。また、単なる直線以外にも、例えば、特許文献1、2に開示されているように、塗り潰し図形に対してもアンチエイリアス処理が行う方法がある。
図16は、特許文献1に開示された塗り潰し図形内のアンチエイリアス処理の方法を示す図である。
図16(a)において、多角形の輪郭線の一部RLに着目し、輪郭線の一部RLの右側が塗り潰されるものとする。この場合、図16(b)に示すように、多角形内を塗り潰し部分が濃度値“8”をとるものとすると、輪郭部分のジャギーが目立たないようにするには、輪郭部分の隣接画素間の濃度値を“1”→“3”→“5”→“7”と徐々に増加させることが好ましい。
一方、図16(a)の輪郭線の一部RLの実際のイメージが図16(c)に示すようになっており、図16(c)の直線の幅が0.485画素分であるとする。この場合、図16(a)の輪郭線の一部RLに対してアンチエイリアス処理を施すと、図16(d)に示すように、各画素の濃度値“1”〜“4”のいずれかの値をとるように描画することができる。また、アンチエイリアス処理を行わずに、図16(a)の多角形の輪郭線の一部RLの右側を塗り潰すと、多角形内を塗り潰し部分の全ての画素が濃度値“8”をとる。そして、図16(d)の描画結果と図16(e)の描画結果とを重ね合わせることにより、塗り潰し図形内のアンチエイリアス処理を行うことができる。
特開平7−282274号公報 特開2002−56395号公報
しかしながら、特許文献1に開示された方法では、アンチエイリアス処理された直線を塗り潰し図形に単に重ね合わせるだけであるため、塗り潰し図形内にエイリアスが部分的に残り、輪郭部分のジャギーが目立つという問題があった。すなわち、図16(b)の理想的な状態では、輪郭部分の隣接画素間の濃度値が“1”→“3”→“5”→“7”と変化しているのに対し、特許文献1に開示された方法では、図16(f)に示すように、輪郭部分の隣接画素間の濃度値が“1”→“3”→“4”→“8”と変化する。このため、理想的には濃度値が“5”であるべき画素の濃度値が“4”となり、理想的には濃度値が“7”であるべき画素の濃度値が“8”となるため、輪郭部分の隣接画素間の濃度差が大きくなる部分が発生し、ジャギーが発生するようになる。
また、特許文献2に開示された方法では、塗り潰し図形の輪郭線の色を塗り潰し図形内の色と異なるようにすることができないのみならず、塗り潰し図形の輪郭線の太さも変えられないという問題があった。
そこで、本発明の目的は、オーバーサンプリングを行うことなく、塗り潰し図形の輪郭に含まれる直線のアンチエイリアス処理を精度よく行うことが可能な直線描画装置、直線描画方法および直線描画プログラムを提供することである。
上述した課題を解決するために、本発明の一態様に係る直線描画装置によれば、塗り潰しまたは背景のいずれか少なくとも一方の色情報およびそれらを仕切る直線の色情報に基づいて、前記直線にかかる画素の色情報を算出する色情報算出手段を備えることを特徴とする。
これにより、塗り潰し色または背景色および直線色に基づいて、塗り潰し図形の輪郭線の画素の色を算出することが可能となり、塗り潰し図形の輪郭線の画素の色を塗り潰し色または背景色に溶け込ませることが可能となる。このため、塗り潰し図形の輪郭線の色が塗り潰し図形内の色と異なる場合においても、オーバーサンプリングを行うことなく、塗り潰し図形の輪郭に含まれる直線のアンチエイリアス処理を精度よく行うことが可能となり、輪郭部分のジャギーの発生を抑制しつつ、図形内の塗り潰しを高速に行うことができる。
また、本発明の一態様に係る直線描画装置によれば、前記色情報算出手段は、塗り潰し領域または背景領域のいずれか少なくとも一方が画素に占める割合に基づいて、前記画素における塗り潰し色または背景色の濃度値を算出する第1シェーディングモジュールと、前記塗り潰し領域および背景領域を仕切る直線が前記画素に占める割合に基づいて、前記画素における直線色の濃度値を算出する第2シェーディングモジュールと、前記塗り潰し色または背景色のいずれか少なくとも一方の濃度値および前記直線色の濃度値に基づいて、前記直線にかかる画素の色情報を算出する色合成モジュールとを備えることを特徴とする。
これにより、塗り潰し領域または背景領域が画素に占める割合および直線が画素に占める割合に基づいて、塗り潰し図形の輪郭線の画素の濃度値を算出することが可能となり、塗り潰し図形の輪郭線の画素の濃度を塗り潰し領域または背景領域の濃度に溶け込ませることが可能となる。このため、塗り潰し図形の輪郭線の太さが変化する場合においても、オーバーサンプリングを行うことなく、塗り潰し図形の輪郭に含まれる直線のアンチエイリアス処理を精度よく行うことが可能となり、輪郭部分のジャギーの発生を抑制しつつ、図形内の塗り潰しを高速に行うことができる。
また、本発明の一態様に係る直線描画装置によれば、直線の両端の座標値に基づいて前記直線の傾きを算出する傾き算出手段と、前記直線の傾きに基づいて、前記直線のシェーディング部分とスキャンラインとが交わる部分のシェーディング長を算出するシェーディング長算出手段と、前記直線の幅および傾きに基づいて、前記直線の非シェーディング部分と前記スキャンラインとが交わる部分の非シェーディング長を算出する非シェーディング長算出手段と、前記直線の両端の座標値および前記直線の傾きに基づいて、前記直線の中央が前記スキャンラインと交わる中央点座標値を算出する中央点座標値算出手段と、前記シェーディング長、前記非シェーディング長および前記中央点座標値に基づいて、前記直線の輪郭部が前記スキャンラインと交わる第1および第2端点座標値を算出する端点座標値算出手段とをさらに備え、前記第1シェーディングモジュールは、前記シェーディング長および前記第1端点座標値に基づいて、前記シェーディング部分にかかる各画素における塗り潰し色または背景色の濃度値を算出し、前記第2シェーディングモジュールは、前記シェーディング長および前記第2端点座標値に基づいて、前記シェーディング部分にかかる各画素における直線色の濃度値を算出することを特徴とする。
これにより、オーバーサンプリングを行うことなくシェーディング処理を行うことが可能となるとともに、直線を正円の軌跡として計算を行うことが可能となり、塗り潰し図形の輪郭に含まれる直線を精度よく描画させることを可能としつつ、アンチエイリアス処理を高速化することができる。また、シェーディングモジュールを複数設けることで、シェーディング処理を並列に行わせることが可能となり、アンチエイリアス処理の煩雑化を抑制しつつ、アンチエイリアス処理を高速化することができる。
また、本発明の一態様に係る直線描画装置によれば、前記直線の傾きに基づいて1画素当たりの濃度変化量を算出する濃度変化量算出手段をさらに備え、前記第1シェーディングモジュールは、前記濃度変化量に基づいて、前記シェーディング部分にかかる各画素における塗り潰し色または背景色の濃度値を算出し、前記第2シェーディングモジュールは、前記濃度変化量に基づいて、前記シェーディング部分にかかる各画素における直線色の濃度値を算出することを特徴とする。
これにより、前回算出された画素の濃度値に濃度変化量を累加算することで、今回算出される隣接画素の濃度値を算出することが可能となる。このため、計算精度を落とすことなく、シェーディング部分にかかる各画素の濃度値の算出過程を簡易化することが可能となり、滑らかな直線を高速に描画することができる。
また、本発明の一態様に係る直線描画方法によれば、塗り潰し領域または背景領域のいずれか少なくとも一方が画素に占める割合に基づいて、前記画素における塗り潰し色または背景色の濃度値を算出するステップと、前記塗り潰し領域および背景領域を仕切る直線が前記画素に占める割合に基づいて、前記画素における直線色の濃度値を算出するステップと、前記塗り潰し色または背景色のいずれか少なくとも一方の濃度値および前記直線色の濃度値に基づいて、前記直線にかかる画素の色情報を算出するステップとを備えることを特徴とする。
これにより、塗り潰し領域または背景領域が画素に占める割合および直線が画素に占める割合に基づいて、塗り潰し図形の輪郭線の画素の濃度値を算出することが可能となり、塗り潰し図形の輪郭に含まれる直線のアンチエイリアス処理を精度よく行うことが可能となる。
また、本発明の一態様に係る直線描画方法によれば、直線の両端の座標値に基づいて前記直線の傾きを算出するステップと、前記直線の傾きに基づいて、前記直線のシェーディング部分とスキャンラインとが交わる部分のシェーディング長を算出するステップと、前記直線の幅および傾きに基づいて、前記直線の非シェーディング部分と前記スキャンラインとが交わる部分の非シェーディング長を算出するステップと、前記直線の両端の座標値および前記直線の傾きに基づいて、前記直線の中央が前記スキャンラインと交わる中央点座標値を算出するステップと、前記シェーディング長、前記非シェーディング長および前記中央点座標値に基づいて、前記直線の輪郭部が前記スキャンラインと交わる第1および第2端点座標値を算出するステップと、前記直線の傾きに基づいて前記直線のシェーディング部分における1画素当たりの濃度変化量を算出するステップと、前記濃度変化量、前記シェーディング長および前記端点座標値に基づいて、前記シェーディング部分にかかる各画素における塗り潰し色または背景色の濃度値を算出するステップと、前記濃度変化量、前記シェーディング長および前記端点座標値に基づいて、前記シェーディング部分にかかる各画素における直線色の濃度値を算出するステップと、塗り潰しまたは背景のいずれか少なくとも一方の色情報およびそれらを仕切る直線の色情報を取得するステップと、前記塗り潰し色または背景色のいずれか少なくとも一方の濃度値および前記直線色の濃度値、ならびに前記塗り潰しまたは背景のいずれか少なくとも一方の色情報およびそれらを仕切る直線の色情報に基づいて、前記直線にかかる画素の色情報を算出するステップとを備えることを特徴とする。
これにより、直線を正円の軌跡として計算を行うことが可能となるとともに、前回算出された画素の濃度値に濃度変化量を加算することで、今回算出される隣接画素の濃度値を算出することが可能となり、線幅に制約を設けることなく、滑らかな直線を高速に描画することができる。
また、本発明の一態様に係る直線描画方法によれば、前記シェーディング部分にかかる各画素の濃度値を算出するステップは、前記端点座標値に基づいて始点座標値を設定するステップと、前記始点座標値の小数部および前記直線の傾きに基づいて、前記始点座標値に対応する画素の濃度値を算出するステップと、前記始点座標値と前記シェーディング長との加算結果に基づいて、前記シェーディング部分の終点座標値を算出するステップと、前記終点座標値の小数部および前記直線の傾きに基づいて、前記終点座標値に対応する画素の濃度値を算出するステップと、前記濃度変化量に基づいて、前記始点座標値に対応する画素と前記終点座標値に対応する画素との間の画素の濃度値を算出するステップとを備えることを特徴とする。
これにより、オーバーサンプリングを行うことなく、シェーディング部分にかかる各画素の濃度値を厳密に算出することが可能となり、描画精度を劣化させることなく、塗り潰し図形の輪郭に含まれる直線のアンチエイリアス処理を高速化することができる。
また、本発明の一態様に係る直線描画方法によれば、前記始点座標値の整数部および前記終点座標値の整数部に基づいて状態識別子を生成するステップと、前記状態識別子に基づいて、前記始点座標値に対応する画素、前記終点座標値に対応する画素、またはその間の画素の濃度値を切り替えて出力するステップとを備えることを特徴とする。
これにより、シェーディング部分にかかる各画素の濃度値を厳密に算出することが可能となるとともに、各画素の濃度値を座標値に対応させて出力させることが可能となる。このため、回路規模の増大を抑制しつつ、塗り潰し図形の輪郭に含まれる直線のアンチエイリアス処理のハードウェア化を図ることが可能となり、コストアップを抑制しつつ、アンチエイリアス処理を高速化することができる。
また、本発明の一態様に係る直線描画プログラムによれば、塗り潰し領域または背景領域のいずれか少なくとも一方が画素に占める割合に基づいて、前記画素における塗り潰し色または背景色の濃度値を算出するステップと、前記塗り潰し領域および背景領域を仕切る直線が前記画素に占める割合に基づいて、前記画素における直線色の濃度値を算出するステップと、前記塗り潰し色または背景色のいずれか少なくとも一方の濃度値および前記直線色の濃度値に基づいて、前記直線にかかる画素の色情報を算出するステップとをコンピュータに実行させることを特徴とする。
これにより、直線描画プログラムをコンピュータに実行させることで、オーバーサンプリングを行わせることなく、塗り潰し図形の輪郭に含まれる直線のアンチエイリアス処理を精度よく行わせることが可能となり、輪郭部分のジャギーの発生を抑制しつつ、図形内の塗り潰しを高速に行わせることができる。
以下、本発明の実施形態に係る直線描画装置について図面を参照しながら説明する。
図1は、本発明の一実施形態に係る情報表示装置の概略構成を示すブロック図である。
図1において、情報表示装置には、電力を供給する電源3、電源3を制御する電源コントローラ2、CPU1を動作させるプログラムや各種データなどを記憶するメモリ4、ハードディスクなどの外部記憶装置6、外部記憶装置6を制御する外部記憶コントローラ5、ディスプレイ9に表示される描画データを記憶するVRAM7、情報を表示するディスプレイ9、ディスプレイ9を制御する表示コントローラ8、グラフィックデータを生成するグラフィックエンジン10およびこれらの全体的な制御を行うCPU1が設けられている。
また、グラフィックスエンジン10には、楕円を描画する楕円描画部11、曲線を描画する曲線描画部12、文字を描画する文字描画部13、多角形を描画する多角形描画部14、直線を描画する直線描画部15、図形の塗りつぶしを行う塗り潰し部16、楕円描画部11、曲線描画部12、文字描画部13、多角形描画部14、直線描画部15および塗り潰し部16を制御するグラフィックエンジンコントローラ17が設けられている。
また、直線描画部15には、シェーディングされる画素の濃度変化量、シェーディング長およびシェーディング部分の端点座標値を算出するパラメータ算出部21および塗り潰しまたは背景のいずれか少なくとも一方の色情報およびそれらを仕切る直線の色情報に基づいて、その直線にかかる画素の色情報を算出する色情報算出部22が設けられている。
ここで、VRAM7、表示コントローラ8およびグラフィックエンジンコントローラ17は、バス18を介して互いに接続されている。また、CPU1、電源コントローラ2、メモリ4および外部記憶コントローラ5は、バス19を介して互いに接続されている。
そして、例えば、内部が塗り潰された多角形をディスプレイ9に表示する場合、多角形描画部14は、直線描画部15を呼び出すことにより、多角形の輪郭を構成する直線を直線描画部15に描画させる。
ここで、直線描画部15は、多角形描画部14から直線の描画指令を受けた場合、多角形描画部14にて描画される多角形の塗り潰しが行われるかを塗り潰し部16に問い合わせることができる。そして、多角形描画部14にて描画される多角形の塗り潰しが行われる場合、色情報算出部22は、塗り潰しおよび背景の色情報を塗り潰し部16から取得する。そして、色情報算出部22は、塗り潰しまたは背景のいずれか少なくとも一方の色情報およびそれらを仕切る直線の色情報に基づいて、その直線にかかる画素の色情報を算出し、直線描画部15は、その画素の色情報に基づいて直線を描画することができる。
ここで、色情報算出部22が、塗り潰し図形の輪郭に含まれる直線の画素の色情報を算出する場合、パラメータ算出部21は、その直線の傾きに基づいて、シェーディングされる画素の濃度変化量、シェーディング長およびシェーディング部分の端点座標値を算出することができる。そして、色情報算出部22は、パラメータ算出部21にて算出された濃度変化量、シェーディング長および端点座標値に基づいて、シェーディング部分にかかる各画素の塗り潰し色または背景色の濃度値を算出するとともに、その画素における直線色の濃度値を算出することができる。そして、塗り潰し色または背景色の濃度値および直線色の濃度値を合成することにより、塗り潰し図形の輪郭に含まれる直線にかかる画素の色情報を算出することができる。
そして、直線描画部15にて多角形の輪郭を構成する直線が描画されると、多角形角形描画部14は、塗り潰し部16を呼び出すことにより、多角形の内部を塗り潰させることができる。
ここで、直線描画部15および塗り潰し部16を別々のモジュールとすることにより、塗り潰しを伴わない図形の輪郭に含まれる直線についても、オーバーサンプリングを行うことなく、アンチエイリアス処理を精度よく行うことが可能となるとともに、多角形以外にも、扇形、星形、立体図形などを描画する他の様々なモジュールに直線描画部15を容易に組み込むことが可能となる。もちろん、直線描画部15および塗り潰し部16を1個のモジュールにまとめるようにしてもよく、これにより、さらなる高速描画が可能となる。
なお、以下の説明では計算を簡略化するために、描画色を1、背景色を0として説明する。また、描画色および背景色が指定されている時は、計算結果として得られる濃度Cに対し、以下の(1)式を適用することで、FGCを描画色、BGCを背景色とする中間色colを得ることができる。
col=(c)FGC+(1−c)BGC ・・・(1)
図2は、図1の直線描画部15で描画される直線のパラメータを説明する図である。
図2において、直線Lの始点Ls(Sx、Sy)および終点Le(Ex、Ey)が与えられた場合、以下の(2)式および(3)式を適用することで、x軸方向の増分dxおよびy軸方向の増分dyを求める。
dx=Ex−Sx ・・・(2)
dy=Ey−Sy ・・・(3)
ただし、Sx、Sy、Ex、Eyはそれぞれ、始点Lsのx座標値、始点Lsのy座標値、終点Leのx座標値、終点Leのy座標値である。
そして、直線を描画する場合、色情報算出部22は、以下に示すように、x軸方向の増分dxおよびy軸方向の増分dyの値によって場合分けすることができる。
(a)dx<0の場合
直線Lの始点Lsと終点Leとを交換し、以下に説明する方法をそのまま利用することができる。
(b)dx<|dy|の場合
x軸とy軸とを交換すれば、以下に説明する方法をそのまま利用することができる。以下、dx≧|dy|とする。
(c)|dy|=0かつdx=0の場合
与えられた条件では直線Lを形成することができないので、直線Lを描画する必要はない。
(d)|dy|=0かつdx≠0の場合
直線Lはx軸に平行となる。この場合、描画する直線Lの幅Wと始点Lsのy座標値Syとから、以下の(4)式および(5)式に従って、直線Lの上端のy座標値Ytopと下端のy座標値Ybtmとを求める。
Ytop=Sy+W/2 ・・・(4)
Ybtm=Sy−W/2 ・・・(5)
次に、以下の(6)式および(7)式に従って、直線Lの上端の濃度値Ctopと下端の濃度値Cbtmとを求める。
Ctop=Ytop−floor(Ytop) ・・・(6)
Cbtm=ceil(Ybtm)−Ybtm ・・・(7)
ただし、floor(Ytop)は、Ytopを超えない最大の整数値、ceil(Ybtm)は、Ybtmを下回らない最小の整数値である。
次に、floor(Ybtm)のラインを濃度値Cbtmで、floor(Ytop)のラインを濃度値Ctopで、floor(Ybtm)とfloor(Ytop)の間のラインを濃度値1で、長さdxだけ描画する。
ただし、floor(Ybtm)=floor(Ytop)の場合、下端の濃度値Cbtmを以下の(8)式に従って求め、floor(Ybtm)のラインを濃度値Cbtmで描画する。
Cbtm=Ytop−Ybtm ・・・(8)
(e)dy≠0の場合
以下の算出過程に基づいて各定数を算出し、直線Lのかかる全てのスキャンラインに対して描画を行うことができる。
図3は、アンチエイリアス処理された直線の一例を示す図である。
図3において、図1の色情報算出部22は、直線Lの始点Ls、終点Leおよび幅Wが与えられると、直線Lのかかる全てのスキャンラインに対してシェーディング処理を行うことができる。
ここで、直線Lの上側輪郭部LuのシェーディングSuおよび下側輪郭部LdのシェーディングSdを別個に求め、これらのシェーディングSu、Sdを合成することにより、直線Lのシェーディング処理を行うことができる。この際、直線Lの上側輪郭部LuのシェーディングSuを行うシェーディングモジュールと、直線Lの上側輪郭部LdのシェーディングSdを行うシェーディングモジュールをそれぞれ用意し、これらのシェーディングモジュールを並列動作させることにより、アンチエイリアス処理を高速化することができる。
図4は、アンチエイリアス処理される直線のパラメータを説明する図である。
図4において、図1のパラメータ算出部21は、(2)式および(3)式からx軸方向の増分dxおよびy軸方向の増分dyが求まると、以下の(9)式および(10)式にそれぞれ従って、直線Lの傾きkおよび直線Lの長さhを算出する。
k=dy/dx ・・・(9)
h=√(dx2+dy2) ・・・(10)
なお、直線Lの長さhの算出には、例えば、「Jon Brntley.More Programming Pearls.Addison−Wesley,1988.p.156」に記載されているアルゴリズムを用いることができる。
次に、パラメータ算出部21は、以下の(11)式に従って、直線Lのシェーディング部分とスキャンラインSLとが交わる部分のシェーディング長sを算出する。なお、シェーディング長sは、y軸方向に1画素分だけ移動する間に、x軸方向に移動した距離に等しい。
s=dx/dy ・・・(11)
次に、パラメータ算出部21は、以下の(12)式に従って、直線Lの非シェーディング部分とスキャンラインSLとが交わる部分の非シェーディング長fを算出する。
f=(h/dy)W−s ・・・(12)
次に、パラメータ算出部21は、以下の(13)式に従って、直線Lの中央がスキャンラインSLと交わる中央点座標値Cを算出する。
C=Sx+(dx/dy)(y−Sy) ・・・(13)
なお、yは注目するスキャンラインSLのy座標値、中央点座標値Cは直線Lの中央点のx座標値を意味する。
次に、パラメータ算出部21は、以下の(14)式および(15)式に従って、直線Lの上側輪郭部Luおよび下側輪郭部LdがスキャンラインSLとそれぞれ交わる端点座標値A、Dを算出する。
A=C−s−f/2 ・・・(14)
D=A+s+f ・・・(15)
なお、端点座標値Aは、各スキャンラインSLにかかる上側シェーディング部分の始点のx座標値、端点座標値Dは、各スキャンラインSLにかかる下側シェーディング部分の始点のx座標値を意味する。
次に、パラメータ算出部21は、以下の(16)式に従って、直線Lのシェーディング部分における1画素当たりの濃度変化量Cdを算出する。
Cd=k ・・・(16)
そして、パラメータ算出部21にて濃度変化量Cdを算出されると、色情報算出部22は、濃度変化量Cdに基づいてシェーディング部分にかかる各画素の濃度値を算出することができる。
図5は、図1の色情報算出部22の概略構成を示すブロック図である。
図5において、色情報算出部22には、シェーディングモジュールLM、RMおよび色合成モジュールM0が設けられている。そして、パラメータ算出部21にて算出された濃度変化量Cd(=直線Lの傾きk)、始点座標値A、シェーディング長sおよび始点座標値Dは、レジスタR1、R3〜R5にそれぞれ格納される。また、レジスタR6には、各ラインの描画処理の開始点を指定する座標初期値X0が格納され、レジスタR7には、各ラインの描画処理を開始させるリセット信号Resetが格納される。なお、座標初期値X0は、計算の開始点となるx座標値を指定するもので、シェーディングモジュールLM、RMは、座標初期値X0から計算の開始することができる。また、リセット信号Resetは、yの値を固定し、1ライン分の結果を出力した後に、次のラインの計算を開始させるためのものである。
さらに、レジスタR8には左右フラグLRFlagが格納され、レジスタR9には、背景色Bcol、直線色Lcolおよび塗り潰し色Fcolに対応する色情報B/L/Fcolが格納される。なお、左右フラグLRFlagは、与えられた直線の左右どちらを塗り潰すかを指定するものである。ここでは、左右フラグLRFlagが0であれば、直線の右側を塗り潰し、左右フラグLRFlagが1であれば、直線の左側を塗り潰すものとする。また、色情報B/L/Fcolは、例えば、モノクロ8階調での描画なら1バイト変数、フルカラーでの描画なら3バイト変数とすることができる。
そして、シェーディングモジュールLMには、濃度変化量Cd、始点座標値A、シェーディング長s、座標初期値X0およびリセット信号Resetが入力され、シェーディングモジュールRMには、濃度変化量Cd、始点座標値D、シェーディング長s、座標初期値X0およびリセット信号Resetが入力される。そして、シェーディングモジュールLMは、シェーディング長sおよび始点座標値Aに基づいてシェーディング部分にかかる画素を特定する。そして、濃度変化量Cdに基づいてシェーディング部分にかかる各画素の濃度値を算出する。また、シェーディングモジュールRMは、シェーディング長sおよび始点座標値Dに基づいてシェーディング部分にかかる画素を特定する。そして、濃度変化量Cdに基づいてシェーディング部分にかかる各画素の濃度値を算出する。
ここで、左右フラグLRFlagが0の場合、シェーディングモジュールLMにて、各画素における直線色Lcolまたは背景色Bcolを考慮した濃度値を算出するとともに、シェーディングモジュールRMにて、各画素における塗り潰し色Fcolまたは直線色Lcolを考慮した濃度値を算出することができる。一方、左右フラグLRFlagが1の場合、シェーディングモジュールLMにて、各画素における直線色Lcolまたは塗り潰し色Fcolを考慮した濃度値を算出するとともに、シェーディングモジュールRMにて、各画素における背景色Bcolまたは直線色Lcolを考慮した濃度値を算出することができる。
そして、シェーディングモジュールLM、RMでそれぞれ算出された各画素の濃度値は色合成モジュールM0に出力される。そして、色合成モジュールM0にて、これらの各画素の濃度値を合成することにより各画素の出力色情報Colを算出し、その出力色情報ColをレジスタR10に格納する。また、シェーディングモジュールLMは、濃度値Cが算出された各画素の座標値Xを算出し、その座標値XをレジスタR11に格納する。
ここで、色合成モジュールM0にて各画素の濃度値を合成する場合、左右フラグLRFlagが0の時には、シェーディングモジュールLMにて算出された画素の濃度値に直線色Lcolまたは背景色Bcolに関する色情報B/L/Fcolを乗算するとともに、シェーディングモジュールRMにて算出された画素の濃度値に直線色Lcolまたは塗り潰し色Fcolに関する色情報B/L/Fcolを乗算し、これらの乗算結果を加算することができる。また、左右フラグLRFlagが1の時には、シェーディングモジュールLMにて算出された画素の濃度値に直線色Lcolまたは塗り潰し色Fcolに関する色情報B/L/Fcolを乗算するとともに、シェーディングモジュールRMにて算出された画素の濃度値に直線色Lcolまたは背景色Bcolに関する色情報B/L/Fcolを乗算し、これらの乗算結果を加算することができる。
これにより、塗り潰し色Fcolまたは背景色Bcolおよび直線色Lcolに基づいて、塗り潰し図形の輪郭線の画素の色を算出することが可能となり、塗り潰し図形の輪郭線の画素の色を塗り潰し色Fcolまたは背景色Bcolに溶け込ませることが可能となる。このため、塗り潰し図形の輪郭線を構成する直線色Lcolが塗り潰し図形内の塗り潰し色Fcolと異なる場合においても、オーバーサンプリングを行うことなく、塗り潰し図形の輪郭に含まれる直線のアンチエイリアス処理を精度よく行うことが可能となり、輪郭部分のジャギーの発生を抑制しつつ、図形内の塗り潰しを高速に行うことができる。
さらに、複数のシェーディングモジュールLM、RMを設けることで、シェーディング処理を並列に行わせることが可能となり、アンチエイリアス処理の煩雑化を抑制しつつ、アンチエイリアス処理を高速化することができる。
図6は、本発明の一実施形態に係るアンチエイリアス処理を説明する図である。
図6において、シェーディングモジュールLMでは、始点座標値Aを起点としてスキャンラインSLにかかる各画素の濃度値が算出される。また、シェーディングモジュールRMでは、始点座標値Dを起点としてスキャンラインSLにかかる各画素の濃度値が算出される。そして、色合成モジュールM0にて、塗り潰し色Fcolまたは背景色Bcolおよび直線色Lcolを考慮しながら、これらの濃度値を各画素ごとに合成することにより、塗り潰し図形の輪郭線を構成する直線色Lcolが塗り潰し図形内の塗り潰し色Fcolと異なる場合においても、塗り潰し図形の輪郭に含まれる直線のアンチエイリアス処理を精度よく行うことができる。
図7は、図5のシェーディングモジュールLM、RMの概略構成を示すブロック図である。
図7において、シェーディングモジュールLM、RMには、定数計算モジュールM1、状態遷移モジュールM2、濃度値計算モジュールM3およびレジスタR21〜R28がそれぞれ設けられている。なお、シェーディングモジュールLMでは、レジスタR3´には、始点座標値Pとして始点座標値Aが格納される。また、シェーディングモジュールRMでは、レジスタR3´には、始点座標値Pとして始点座標値Dが格納される。
そして、定数計算モジュールM1には、直線Lの傾きk、始点座標値Pおよびシェーディング長sが入力される。そして、定数計算モジュールM1は、始点座標値Pの整数部に基づいて始点座標整数値Piを算出し、その始点座標整数値PiをレジスタR21に格納する。また、定数計算モジュールM1は、始点座標値Pの小数部および傾きkに基づいて濃度開始値Ctを算出し、その濃度開始値CtをレジスタR22に格納する。また、定数計算モジュールM1は、始点座標値Pの小数部および傾きkに基づいて始点濃度値Csを算出し、その始点濃度値CsをレジスタR23に格納する。また、定数計算モジュールM1は、始点座標値P、シェーディング長sおよび傾きkに基づいて終点濃度値Ceを算出し、その終点濃度値CeをレジスタR24に格納する。また、定数計算モジュールM1は、始点座標値Pおよびシェーディング長に基づいて終点座標整数値Eiを算出し、その終点座標整数値EiをレジスタR25に格納する。
また、状態遷移モジュールM2には、始点座標整数値Pi、終点座標整数値Ei、座標初期値X0およびリセット信号Resetが入力される。また、状態遷移モジュールM2には、状態遷移モジュールM2から出力される状態識別子Statおよび座標値Xが戻される。そして、状態遷移モジュールM2は、始点座標整数値Pi、終点座標整数値Ei、座標初期値X0、リセット信号Reset、座標値Xおよび状態識別子Statに基づいて状態識別子Statを更新し、その状態識別子StatをレジスタR26に格納する。また、状態遷移モジュールM2は、座標初期値X0、リセット信号Resetおよび座標値Xに基づいて座標値Xを更新し、その座標値XをレジスタR27に格納する。
また、濃度値計算モジュールM3には、濃度変化量Cd、濃度開始値Ct、始点濃度値Cs、終点濃度値Ceおよび状態識別子Statが入力される。また、濃度値計算モジュールM3には、濃度値計算モジュールM3から出力されるフィードバック値Cpが戻される。そして、濃度値計算モジュールM3は、フィードバック値Cpに濃度変化量Cdを加算することにより、フィードバック値Cpを更新し、そのフィードバック値CpをレジスタR28に格納する。また、濃度値計算モジュールM3は、状態識別子Statに基づいて、濃度値0、濃度値1、始点濃度値Cs、終点濃度値Ceまたは濃度開始値Ctとフィードバック値Cpとの加算結果のいずれかを選択し、選択された濃度値CをレジスタR12に格納する。
図8は、本発明の一実施形態に係る濃度値の算出方法を説明する図である。
図8において、リセット信号Resetが1となると、図7の状態遷移モジュールM2は、状態識別子(ステータス)Statを“000”に設定するとともに、座標値Xとして座標初期値X0を出力する。そして、状態識別子Statが“000”になると、濃度値計算モジュールM3は、濃度値Cとして0を出力することにより、座標初期値X0で特定される画素の濃度値Cを0とする。そして、1画素分の濃度値Cが出力されると、状態遷移モジュールM2は、座標値Xを1だけインクリメントし、座標値Xが始点座標整数値Piと一致するかどうか比較する。そして、座標値Xが始点座標整数値Piと一致しない間は、状態識別子Statとして“000”を出力する。そして、状態識別子Statが“000”の間は、濃度値計算モジュールM3は、座標値Xで特定される画素の濃度値Cとして0を出力する。
そして、例えば、座標値XがX+2となった時に座標値Xが始点座標整数値Piと一致したものとすると、状態遷移モジュールM2は、状態識別子Statを“001”に設定する。そして、状態識別子Statが“001”になると、濃度値計算モジュールM3は、濃度値Cとして始点濃度値Csを出力することにより、座標値Xで特定される画素の濃度値Cを始点濃度値Csとする。なお、始点濃度値Csは、(Pi+1−P)を底辺とし、斜辺の傾きが直線Lの傾きkで規定される三角形の面積に基づいて算出することができる。
そして、始点座標整数値Piで特定される画素の濃度値Cが出力されると、状態遷移モジュールM2は、座標値Xを1だけインクリメントし、座標値Xが終点座標整数値Eiと一致するかどうか比較する。そして、座標値Xが終点座標整数値Eiと一致しない場合、座標値XがX+3の時の状態識別子Statとして“010”を出力する。そして、状態識別子Statが“010”になると、濃度値計算モジュールM3は、濃度値Cとして濃度開始値Ctに濃度変化量Cdを加算した値を出力することにより、座標値Xで特定される画素の濃度値Cを(Ct+Cd)とする。なお、濃度開始値Ctは、(Cs−Csneg)の計算を行うことで求めることができる。また、Csnegは、(P−Pi)を底辺とし、斜辺の傾きが直線Lの傾きkで規定される三角形の面積に基づいて算出することができる。
そして、座標値Xが終点座標整数値Eiと一致しない間は、状態遷移モジュールM2は、座標値Xを1だけインクリメントしながら、状態識別子Statとして“010”を出力し続ける。そして、状態識別子Statが“010”の間は、濃度値計算モジュールM3は、前回求めた画素の濃度値Cをフィードバック値Cpとして、このフィードバック値Cpに濃度変化量Cdを順次加算することで、座標値Xで特定される画素の濃度値Cを(Cp+Cd)とする。
そして、例えば、座標値XがX+8となった時に座標値Xが終点座標整数値Eiと一致したものとすると、状態遷移モジュールM2は、状態識別子Statを“011”に設定する。そして、状態識別子Statが“011”になると、濃度値計算モジュールM3は、濃度値Cとして終点濃度値Ceを出力することにより、座標値Xで特定される画素の濃度値Cを終点濃度値Ceとする。なお、終点濃度値Ceは、(E−Ei+1)を底辺とし、斜辺の傾きが直線Lの傾きkで規定される三角形の面積に基づいて算出することができる。
そして、終点座標整数値Eiで特定される画素の濃度値Cが出力されると、状態遷移モジュールM2は、座標値Xを1だけインクリメントし、状態識別子Statとして“100”を出力する。そして、状態識別子Statが“100”の間は、濃度値計算モジュールM3は、座標値Xで特定される画素の濃度値Cとして1を出力する。
これにより、オーバーサンプリングを行うことなく、シェーディング部分にかかる各画素の濃度値を厳密に算出することが可能となり、描画精度を劣化させることなく、アンチエイリアス処理を高速化することができる。
図9は、図5の色合成モジュールM0の概略構成を示すブロック図である。なお、図9のブロックAでは、塗り潰しが直線の左右どちら側に行われるかが指定され、図9のブロックBでは、塗り潰し図形の輪郭に含まれる直線の画素の出力色情報Colが算出される。
すなわち、図9において、色合成モジュールM0には、セレクタH101、H102、減算器G101、G101、乗算器G103、G105、加算器G104およびレジスタR101〜R108が設けられている。また、レジスタR9に格納されている色情報B/L/Fcolのうち、直線色LcolはレジスタR9´に格納され、背景色BcolはレジスタR9´´に格納され、塗り潰し色FcolはレジスタR9´´´に格納される。さらに、シェーディングモジュールLMから出力された濃度値Cは、左側濃度LとしてレジスタR12´に格納され、シェーディングモジュールRMから出力された濃度値Cは、右側濃度RとしてレジスタR12´´に格納される。そして、左側濃度Lは乗算器G103に入力されるとともに、右側濃度Rは乗算器G105に入力される。
そして、直線色Lcolは中央色CcとしてレジスタR102に格納される。また、セレクタH101、H102には、左右フラグLRFlag、背景色Bcolおよび塗り潰し色Fcolが入力される。そして、左右フラグLRFlagが0の場合、セレクタH101にて背景色Bcolが選択されるとともに、セレクタH102にて塗り潰し色Fcolが選択される。そして、セレクタH101にて選択された背景色Bcolが左側色ClとしてレジスタR101に格納されるとともに、セレクタH102にて選択された塗り潰し色Fcolが右側色CrとしてレジスタR103に格納される。
そして、左側色Clおよび中央色Ccは減算器G101に入力され、減算器G101にて左側色Clおよび中央色Ccの差分Cc−Clが算出される。そして、減算器G101にて算出された差分Cc−ClはレジスタR104に格納される。そして、レジスタR104に格納された差分Cc−Clは乗算器G103に入力され、乗算器G105にて差分Cc−Clと左側濃度Lとの乗算が行われる。そして、乗算器G103にて算出された乗算結果(Cc−Cl)*LはレジスタR106に格納される。そして、レジスタR106に格納された乗算結果(Cc−Cl)*Lは加算器G104に入力され、加算器G104にて乗算結果(Cc−Cl)*Lおよび左側色Clの加算が行われる。そして、その加算結果((Cc−Cl)*L+Cl)は加算器G106に入力される。
また、右側色Crおよび中央色Ccは減算器G102に入力され、減算器G102にて右側色Crおよび中央色Ccの差分Cr−Ccが算出される。そして、減算器G102にて算出された差分Cr−CcはレジスタR105に格納される。そして、レジスタR105に格納された差分Cr−Ccは乗算器G105に入力され、乗算器G105にて差分Cr−Ccと右側濃度Rとの乗算が行われる。そして、乗算器G105にて算出された乗算結果(Cr−Cc)*RはレジスタR107に格納される。そして、レジスタR107に格納された乗算結果(Cr−Cc)*Rは加算器G106に入力される。
そして、加算結果((Cc−Cl)*L+Cl)および乗算結果(Cr−Cc)*Rが加算器G106に入力されると、加算器G106にて加算結果((Cc−Cl)*L+Cl)および乗算結果(Cr−Cc)*Rの加算が行われる。そして、加算器G106にて算出された加算結果(Cl+(Cc−Cl)*L+(Cr−Cc)*R)はレジスタR108に格納され、この加算結果(Cl+(Cc−Cl)*L+(Cr−Cc)*R)が出力色情報ColとしてレジスタR10に格納される。
図10は、本発明の一実施形態に係る色情報と濃度値との関係を示す図である。
図10(a)において、塗り潰し図形の輪郭に含まれる直線、背景領域および塗り潰し領域が一画素PX内に含まれているものとする。この場合、この一画素PX内には、塗り潰し図形の輪郭に含まれる直線の直線色Lcol、背景領域の背景色Bcolおよび塗り潰し領域の塗り潰し色Fcolが混在して存在する。
ここで、直線色Lcolが中央色Cc、背景色Bcolが左側色Cl、塗り潰し色Fcolが右側色Crである場合、図10(b)に示すように、中央色Ccの領域が一画素PX内に占める面積に基づいて、中央色Ccの領域に対応する左側濃度Lを算出するとともに、右側色Crの領域が一画素PX内に占める面積に基づいて、右側色Crの領域に対応する右側濃度Rを算出することができる。
そして、中央色Cc、左側色Cl、右側色Cr、左側濃度Lおよび右側濃度Rが与えられると、以下の(31)式に基づいて画素PXの出力色情報Colを求めることができる。
Col=Cl(1−L)+Cc(L−R)+Cr・R ・・・(31)
なお、(31)式を変形すると、以下の(32)式のようになり、レジスタR10に格納された出力色情報Colと等しいことが判る。
Col=Cl+(Cc−Cl)L+(Cr−Cc)R ・・・(32)
これにより、塗り潰し図形の輪郭に含まれる直線の直線色Lcol、背景領域の背景色Bcolおよび塗り潰し領域の塗り潰し色Fcolが一画素PX内に混在する場合においても、これらの複数色を考慮しつつ、一画素PX内を1個の色で塗ることが可能となる。このため、塗り潰し図形の輪郭線の色が塗り潰し図形内の色と異なる場合においても、オーバーサンプリングを行うことなく、塗り潰し図形の輪郭線の色を塗り潰し図形内の色に溶け込ませることが可能となり、塗り潰し図形の輪郭に含まれる直線のアンチエイリアス処理を精度よく行うことが可能となる。
図11は、図7の定数計算モジュールM1の概略構成を示すブロック図である。なお、定数計算モジュールM1は、傾きk、始点座標値Pおよびシェーディング長sに基づいて、始点座標整数値Pi、濃度開始値Ct、始点濃度値Cs、終点濃度値Ceおよび終点座標整数値Eiを、以下の(20)式〜(24)式にそれぞれ従ってハードウェア的に求めるようにしたものである。
Pi=[P] ・・・(20)
Ei=[E] ・・・(21)
Ct=(1−2Pf)k/2 ・・・(22)
Cs=(1−Pf)2k/2 ・・・(23)
Ce=Ef2k/2 ・・・(24)
ただし、[X]は、Xを超えない最小の整数を示す。また、PfおよびEfは、以下の式で表すことができる。
Pf=P−[P]
Ef=E−[E]
すなわち、図11において、定数計算モジュールM1には、整数部小数部分離器G11、G20、シフト演算器G12、G18、減算器G13、G15、G23、乗算器G14、G16、G17、G21、G22、加算器G19およびレジスタR31〜R45が設けられている。そして、整数部小数部分離器G11には始点座標値Pが入力され、シフト演算器G18には傾きkが入力され、加算器G19には始点座標値Pおよびシェーディング長sが入力される。
そして、始点座標値Pが整数部小数部分離器G11に入力されると、整数部小数部分離器G11は始点座標値Pを整数部Piと小数部Pfに分離し、始点座標値Pの整数部Piを取り出す。そして、始点座標値Pの整数部PiはレジスタR31に格納され、レジスタR31に格納された始点座標値Pの整数部Piは、始点座標整数値PiとしてレジスタR21に格納される。
また、傾きkがシフト演算器G18に入力されると、シフト演算器G18にて、傾きkのシフト演算が行われることにより、傾きkが1/2倍され、そのシフト演算結果k/2がレジスタR39に格納される。そして、レジスタR39に格納されたシフト演算結果k/2は、乗算器G14、G17、G22に出力される。
また、整数部小数部分離器G11は、始点座標値Pから分離された小数部PfをレジスタR32に格納する。そして、レジスタR32に格納された始点座標値Pの小数部Pfは、シフト演算器G12に出力される。そして、シフト演算器G12にて、始点座標値Pの小数部Pfのシフト演算が行われることにより、始点座標値Pの小数部Pfが2倍され、そのシフト演算結果2PfがレジスタR33に格納される。
そして、レジスタR33に格納されたシフト演算結果2Pfは、減算器G13に出力される。そして、減算器G13にて、シフト演算結果2Pfが1から減算され、その減算結果(1−2Pf)がレジスタR34に格納される。
そして、レジスタR34に格納された減算結果(1−2Pf)は、乗算器G14に出力される。そして、乗算器G14にて、レジスタR34から出力された減算結果(1−2Pf)とレジスタR39から出力されたシフト演算結果k/2とが乗算され、その乗算結果((1−2Pf)*k/2が)レジスタR35に格納される。そして、レジスタR35に格納された乗算結果((1−2Pf)*k/2)は、濃度開始値CtとしてレジスタR21に格納される。
また、レジスタR32に格納された始点座標値Pの小数部Pfは、減算器G15に出力される。そして、減算器G15にて、始点座標値Pの小数部Pfが1から減算され、その減算結果(1−Pf)がレジスタR36に格納される。
そして、レジスタR36に格納された減算結果(1−Pf)は、乗算器G16に出力される。そして、乗算器G16にて、レジスタR36から出力された減算結果(1−Pf)が自乗され、その乗算結果(1−Pf)2がレジスタR37に格納される。
そして、レジスタR37に格納された乗算結果(1−2Pf)2は、乗算器G17に出力される。そして、乗算器G17にて、レジスタR37から出力された乗算結果(1−2Pf)2とレジスタR39から出力されたシフト演算結果k/2とが乗算され、その乗算結果((1−2Pf)2*k/2)がレジスタR38に格納される。そして、レジスタR38に格納された乗算結果((1−2Pf)2*k/2)は、始点濃度値CsとしてレジスタR23に格納される。
また、始点座標値Pおよびシェーディング長sが加算器G19に入力されると、加算器G19にて、始点座標値Pとシェーディング長sとが加算され、その加算結果(P+s)がレジスタR40に格納される。そして、レジスタR40に格納された加算結果(P+s)は整数部小数部分離器G20に入力され、整数部小数部分離器G20にて、加算結果(P+s)が整数部Eiと小数部Efに分離される。そして、加算結果(P+s)から分離された小数部EfはレジスタR41に格納される。
そして、レジスタR41に格納された加算結果(P+s)の小数部Efは、乗算器G21に出力される。そして、乗算器G21にて、加算結果(P+s)の小数部Efが自乗され、その乗算結果Ef2がレジスタR42に格納される。
そして、レジスタR42に格納された乗算結果Ef2は、乗算器G22に出力される。そして、乗算器G22にて、レジスタR42から出力された乗算結果Ef2とレジスタR39から出力されたシフト演算結果k/2とが乗算され、その乗算結果(Ef2*k/2)がレジスタR43に格納される。
そして、レジスタR43に格納された乗算結果(Ef2*k/2)は、減算器G23に出力される。そして、減算器G23にて、乗算結果(Ef2*k/2)が1から減算され、その減算結果(1−(Ef2*k/2))がレジスタR44に格納される。そして、レジスタR44に格納された減算結果(1−(Ef2*k/2))が終点濃度値CeとしてレジスタR24に格納される。
また、整数部小数部分離器G20にて分離された整数部EiはレジスタR45に格納され、レジスタR45に格納された整数部Eiは、終点座標整数値EiとしてレジスタR25に格納される。
これにより、濃度値Cの計算に用いられる始点座標整数値Pi、濃度開始値Ct、始点濃度値Cs、終点濃度値Ceおよび終点座標整数値Eiをハードウェアにて算出させることが可能となるとともに、これらの算出処理を並列に行うことが可能となり、アンチエイリアス処理を高速化することができる。
図12は、図7の状態遷移モジュールM2の概略構成を示すブロック図である。なお、図12のブロックAでは、状態識別子Statが偶数の時はそのままとされ、状態識別子Statが奇数の時は1だけ加算される。また、図12のブロックBでは、座標値X´が始点座標整数値Piまたは終点座標整数値Eiに等しくなった時だけ状態識別子Statの下1ビットを1にすることにより、シェーディングの開始および終了を通知することができる。
すなわち、図12において、状態遷移モジュールM2には、下位1ビット分離器G31、加算器G32、シフト演算器G33、論理和演算器G34、G35およびインクリメント器G36、セレクタH1〜H3およびレジスタR61〜R67が設けられている。なお、状態識別子Statは3ビット分の2進数で表現され、レジスタR63、R64、R67には“000”が格納され、レジスタR65、R66には“001”が格納されているものとする。
そして、下位1ビット分離器G31には状態識別子Statが入力され、セレクタH3には始点座標整数値Piが入力され、セレクタH4には終点座標整数値Eiが入力され、セレクタH1にはリセット信号Resetが入力され、セレクタH2にはリセット信号Resetおよび座標初期値X0が入力され、インクリメント器G36には座標値Xが入力される。また、レジスタR63に格納されている“000”はセレクタH1に入力され、レジスタR64に格納されている“000”およびレジスタR65に格納されている“001”はセレクタH3に入力される。
そして、インクリメント器G36に座標値Xが入力されると、座標値Xを1だけインクリメントし、インクリメントされた座標値XをセレクタH2に出力する。そして、セレクタH2は、リセット信号Resetが1の場合、座標値X´として座標初期値X0を選択し、その座標値X´をレジスタR66に格納する。一方、リセット信号Resetが1でない場合、インクリメントされた座標値X´を座標値Xとして選択し、その座標値X´をレジスタR66に格納する。そして、レジスタR66に格納された座標値X´はレジスタR27に格納され、座標値Xとしてインクリメント器G36に戻される。また、レジスタR66に格納された座標値X´はセレクタH3にも出力される。
一方、下位1ビット分離器G31に状態識別子Statが入力されると、下位1ビット分離器G31は、状態識別子Statの下位1ビットを分離し、状態識別子Statの下位1ビットをレジスタR62に格納するとともに、状態識別子Statの上位2ビットをレジスタR61に格納する。
そして、レジスタR62に格納された状態識別子Statの下位1ビットはシフト演算器G33に入力される。そして、シフト演算器G33にて、状態識別子Statの下位1ビットのシフト演算が行われ、そのシフト演算結果が加算器G32に出力される。また、レジスタR61に格納された状態識別子Statの上位2ビットは加算器G32に出力される。
そして、状態識別子Statの下位1ビットのシフト演算結果と、状態識別子Statの上位2ビットが加算器G32に出力されると、これらの値が加算器G32にて加算され、この加算結果がレジスタR67に格納される。そして、レジスタR67に格納された加算結果がセレクタH1に出力される。
そして、セレクタH1は、リセット信号Resetが1の場合、レジスタR63に格納されている“000”を選択し、“000”を論理和演算器G34に出力する。一方、リセット信号Resetが0の場合、レジスタR67に格納されている加算結果を選択し、レジスタR67に格納されている加算結果を論理和演算器G34に出力する。
また、セレクタH3は、レジスタR68から出力された座標値X´を始点座標整数値Piおよび終点座標整数値Eiと比較する。そして、座標値X´が始点座標整数値Piまたは終点座標整数値Eiと一致する場合、レジスタR65に格納されている“001”を選択し、“001”を論理和演算器G34に出力する。一方、座標値X´が始点座標整数値Piおよび終点座標整数値Eiのいずれとも一致しない場合、レジスタR65に格納されている“000”を選択し、“000”を論理和演算器G34に出力する。
そして、セレクタH1にて選択された値と、セレクタH3にて選択された値とが論理和演算器G34に入力されると、論理和演算器G34にて、セレクタH1にて選択された値と、セレクタH3にて選択された値との論理和演算が行われ、その論理和演算結果が状態識別子Stat´としてレジスタR26に格納される。そして、レジスタR26に格納された状態識別子Stat´は、状態識別子Statとして下位1ビット分離器G31に戻される。
これにより、座標値Xが始点座標整数値Piと一致した時に状態識別子Statを“001”に遷移させ、座標値Xが終点座標整数値Eiと一致した時に状態識別子Statを“011”に遷移させ、座標値Xが始点座標整数値Piと終点座標整数値Eiとの間にある場合、状態識別子Statを“010”として一定に保つことができる。このため、状態識別子Statに基づいて、始点濃度値Cs、終点濃度値Ceまたは濃度開始値Ctとフィードバック値Cpとの加算結果のいずれかを選択させることが可能となり、状態遷移モジュールM2のハードウェア化を可能として、アンチエイリアス処理を高速化することができる。
図13は、図7の濃度値計算モジュールM3の概略構成を示すブロック図、図14は、状態識別子Statと濃度値Cとの関係を示す図、図15は、図13のブロックA、Bへの入力値の変化を示す図である。なお、図13のブロックAでは、濃度変化量Cdに基づいてフィードバック値Cp´が算出され、図13のブロックBでは、図12の状態遷移モジュールM2にて生成された状態識別子Statに基づいて、濃度値Cが出力される。
すなわち、図13において、濃度値計算モジュールM3には、加算器G41、下位2ビット目選択器G42、セレクタH11、H12およびレジスタR71〜R73が設けられている。なお、レジスタR71には“0”が格納され、レジスタR72には“1”が格納されているものとする。
そして、加算器G41にはフィードバック値Cpおよび濃度変化量Cdが入力され、セレクタH12には濃度開始値Ctが入力され、セレクタH11には始点濃度値Csおよび終点濃度値Ceが入力され、下位2ビット目選択器G42には状態識別子Statが入力される。また、レジスタR71に格納されている“0”およびレジスタR72に格納されている“1”はセレクタH11に入力される。
そして、加算器G41にフィードバック値Cpおよび濃度変化量Cdが入力されると、加算器G41にて、フィードバック値Cpと濃度変化量Cdとが加算され、その加算結果がセレクタH11、H12に入力される。
また、下位2ビット目選択器G42に状態識別子Statが入力されると、下位2ビット目選択器G42にて、状態識別子Statの下位2ビット目が選択される。そして、下位2ビット目選択器G42にて選択された状態識別子Statの下位2ビット目は、レジスタR73に格納され、レジスタR73に格納された状態識別子Statの下位2ビット目はセレクタH12に出力される。
そして、状態識別子Statの下位2ビット目が0の場合、セレクタH12は濃度開始値Ctを選択して、その濃度開始値CtをレジスタR28に格納する。一方、状態識別子Statの下位2ビット目が1の場合、加算器G41から出力された加算結果を選択して、その加算結果をフィードバック値Cp´としてレジスタR28に格納する。そして、レジスタR28に格納されたフィードバック値Cp´は、フィードバック値Cpとして加算器G41に出力される。
また、セレクタH11に状態識別子Statが入力されると、セレクタH11は、状態識別子Statの状態を判断する。そして、状態識別子Statが“000”の場合、レジスタR71に格納されている濃度値0がセレクタH11にて選択され、濃度値0が濃度値CとしてレジスタR10´に格納される。また、状態識別子Statが“001”の場合、レジスタR22に格納されている始点濃度値CsがセレクタH11にて選択され、始点濃度値Csが濃度値CとしてレジスタR10´に格納される。また、状態識別子Statが“010”の場合、加算器G41から出力されたフィードバック値Cpと濃度変化量Cdとの加算結果がセレクタH11にて選択され、フィードバック値Cpと濃度変化量Cdとの加算結果が濃度値CとしてレジスタR10´に格納される。また、状態識別子Statが“011”の場合、レジスタR23に格納されている終点濃度値CeがセレクタH11にて選択され、終点濃度値Ceが濃度値CとしてレジスタR10´に格納される。また、状態識別子Statが“100”の場合、レジスタR72に格納されている濃度値1がセレクタH11にて選択され、濃度値1が濃度値CとしてレジスタR10´に格納される。
これにより、シェーディング部分にかかる各画素の濃度値を厳密に算出することが可能となるとともに、各画素の濃度値Cを座標値Xに対応させて出力させることが可能となる。このため、回路規模の増大を抑制しつつ、アンチエイリアス処理のハードウェア化を図ることが可能となり、コストアップを抑制しつつ、アンチエイリアス処理を高速化することができる。
本発明の一実施形態に係る情報表示装置の概略構成を示すブロック図。 図1の直線描画部15で描画される直線のパラメータを説明する図。 アンチエイリアス処理された直線の一例を示す図 アンチエイリアス処理される直線のパラメータを説明する図。 図1の色情報算出部22の概略構成を示すブロック図。 本発明の一実施形態に係るアンチエイリアス処理を説明する図。 図5のシェーディングモジュールの概略構成を示すブロック図。 本発明の一実施形態に係る濃度値の算出方法を説明する図。 図5の色合成モジュールM0の概略構成を示すブロック図。 本発明の一実施形態に係る色情報と濃度値との関係を示す図。 図7の定数計算モジュールM1の概略構成を示すブロック図。 図7の状態遷移モジュールM2の概略構成を示すブロック図。 図7の濃度値計算モジュールM3の概略構成を示すブロック図。 一実施形態に係る状態識別子Statと濃度値Cとの関係を示す図。 図13のブロックA、Bへの入力値の変化を示す図。 従来の塗り潰し図形内のアンチエイリアス処理の方法を示す図。
符号の説明
1 CPU、2 電源コントローラ、3 電源、4 メモリ、5 外部記憶コントローラ、6 外部記憶装置、7 VRAM、8 表示コントローラ、9 ディスプレイ、10 グラフィックスエンジン、11 楕円描画部、12 曲線描画部、13 文字描画部、14 多角形描画部、15 直線描画部、16 塗りつぶし部、17 グラフィックエンジンコントローラ、18、19 バス、21 パラメータ算出部、22 色情報算出部、R1〜R12、R3´、R9´、R9´´、R9´´´、R10´、R12´、R12´´、R21〜R28、R31〜R45、R61〜R67、R71〜R73、R101〜R108 レジスタ、LM、RM シェーディングモジュール、M0 色合成モジュール、G1、G13、G15、G23、G101、G102 減算器、M1 定数計算モジュール、M2 状態遷移モジュール、M3 濃度値計算モジュール、G11、G20 整数部小数部分離器、G12、G18、G33 シフト演算器、G14、G16、G17、G21、G22、G103、G105 乗算器、G19、G32、G41、G104、G106 加算器、G31 下位ビット分離器、G34、G35 論理和演算器、G36 インクリメント器、H1〜H4、H11、H12、H101、H102、 セレクタ、G42 下位2ビット目選択器

Claims (9)

  1. 塗り潰しまたは背景のいずれか少なくとも一方の色情報およびそれらを仕切る直線の色情報に基づいて、前記直線にかかる画素の色情報を算出する色情報算出手段を備えることを特徴とする直線描画装置。
  2. 前記色情報算出手段は、
    塗り潰し領域または背景領域のいずれか少なくとも一方が画素に占める割合に基づいて、前記画素における塗り潰し色または背景色の濃度値を算出する第1シェーディングモジュールと、
    前記塗り潰し領域および前記背景領域を仕切る直線が前記画素に占める割合に基づいて、前記画素における直線色の濃度値を算出する第2シェーディングモジュールと、
    前記塗り潰し色または背景色のいずれか少なくとも一方の濃度値および前記直線色の濃度値に基づいて、前記直線にかかる画素の色情報を算出する色合成モジュールとを備えることを特徴とする請求項1記載の直線描画装置。
  3. 直線の両端の座標値に基づいて前記直線の傾きを算出する傾き算出手段と、
    前記直線の傾きに基づいて、前記直線のシェーディング部分とスキャンラインとが交わる部分のシェーディング長を算出するシェーディング長算出手段と、
    前記直線の幅および傾きに基づいて、前記直線の非シェーディング部分と前記スキャンラインとが交わる部分の非シェーディング長を算出する非シェーディング長算出手段と、
    前記直線の両端の座標値および前記直線の傾きに基づいて、前記直線の中央が前記スキャンラインと交わる中央点座標値を算出する中央点座標値算出手段と、
    前記シェーディング長、前記非シェーディング長および前記中央点座標値に基づいて、前記直線の輪郭部が前記スキャンラインと交わる第1および第2端点座標値を算出する端点座標値算出手段とをさらに備え、
    前記第1シェーディングモジュールは、前記シェーディング長および前記第1端点座標値に基づいて、前記シェーディング部分にかかる各画素における塗り潰し色または背景色の濃度値を算出し、
    前記第2シェーディングモジュールは、前記シェーディング長および前記第2端点座標値に基づいて、前記シェーディング部分にかかる各画素における直線色の濃度値を算出することを特徴とする請求項2記載の直線描画装置。
  4. 前記直線の傾きに基づいて1画素当たりの濃度変化量を算出する濃度変化量算出手段をさらに備え、
    前記第1シェーディングモジュールは、前記濃度変化量に基づいて、前記シェーディング部分にかかる各画素における塗り潰し色または背景色の濃度値を算出し、
    前記第2シェーディングモジュールは、前記濃度変化量に基づいて、前記シェーディング部分にかかる各画素における直線色の濃度値を算出することを特徴とする請求項3記載の直線描画装置。
  5. 塗り潰し領域または背景領域のいずれか少なくとも一方が画素に占める割合に基づいて、前記画素における塗り潰し色または背景色の濃度値を算出するステップと、
    前記塗り潰し領域および背景領域を仕切る直線が前記画素に占める割合に基づいて、前記画素における直線色の濃度値を算出するステップと、
    前記塗り潰し色または背景色のいずれか少なくとも一方の濃度値および前記直線色の濃度値に基づいて、前記直線にかかる画素の色情報を算出するステップとを備えることを特徴とする直線描画方法。
  6. 直線の両端の座標値に基づいて前記直線の傾きを算出するステップと、
    前記直線の傾きに基づいて、前記直線のシェーディング部分とスキャンラインとが交わる部分のシェーディング長を算出するステップと、
    前記直線の幅および傾きに基づいて、前記直線の非シェーディング部分と前記スキャンラインとが交わる部分の非シェーディング長を算出するステップと、
    前記直線の両端の座標値および前記直線の傾きに基づいて、前記直線の中央が前記スキャンラインと交わる中央点座標値を算出するステップと、
    前記シェーディング長、前記非シェーディング長および前記中央点座標値に基づいて、前記直線の輪郭部が前記スキャンラインと交わる第1および第2端点座標値を算出するステップと、
    前記直線の傾きに基づいて前記直線のシェーディング部分における1画素当たりの濃度変化量を算出するステップと、
    前記濃度変化量、前記シェーディング長および前記端点座標値に基づいて、前記シェーディング部分にかかる各画素における塗り潰し色または背景色の濃度値を算出するステップと、
    前記濃度変化量、前記シェーディング長および前記端点座標値に基づいて、前記シェーディング部分にかかる各画素における直線色の濃度値を算出するステップと、
    塗り潰しまたは背景のいずれか少なくとも一方の色情報およびそれらを仕切る直線の色情報を取得するステップと、
    前記塗り潰し色または背景色のいずれか少なくとも一方の濃度値および前記直線色の濃度値、ならびに前記塗り潰しまたは背景のいずれか少なくとも一方の色情報およびそれらを仕切る直線の色情報に基づいて、前記直線にかかる画素の色情報を算出するステップとを備えることを特徴とする直線描画方法。
  7. 前記シェーディング部分にかかる各画素の濃度値を算出するステップは、
    前記端点座標値に基づいて始点座標値を設定するステップと、
    前記始点座標値の小数部および前記直線の傾きに基づいて、前記始点座標値に対応する画素の濃度値を算出するステップと、
    前記始点座標値と前記シェーディング長との加算結果に基づいて、前記シェーディング部分の終点座標値を算出するステップと、
    前記終点座標値の小数部および前記直線の傾きに基づいて、前記終点座標値に対応する画素の濃度値を算出するステップと、
    前記濃度変化量に基づいて、前記始点座標値に対応する画素と前記終点座標値に対応する画素との間の画素の濃度値を算出するステップとを備えることを特徴とする請求項6記載の直線描画方法。
  8. 前記始点座標値の整数部および前記終点座標値の整数部に基づいて状態識別子を生成するステップと、
    前記状態識別子に基づいて、前記始点座標値に対応する画素、前記終点座標値に対応する画素、またはその間の画素の濃度値を切り替えて出力するステップとを備えることを特徴とする請求項7記載の直線描画方法。
  9. 塗り潰し領域または背景領域のいずれか少なくとも一方が画素に占める割合に基づいて、前記画素における塗り潰し色または背景色の濃度値を算出するステップと、
    前記塗り潰し領域および背景領域を仕切る直線が前記画素に占める割合に基づいて、前記画素における直線色の濃度値を算出するステップと、
    前記塗り潰し色または背景色のいずれか少なくとも一方の濃度値および前記直線色の濃度値に基づいて、前記直線にかかる画素の色情報を算出するステップとをコンピュータに実行させることを特徴とする直線描画プログラム。
JP2004057707A 2004-03-02 2004-03-02 直線描画装置、直線描画方法および直線描画プログラム Expired - Fee Related JP4301037B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004057707A JP4301037B2 (ja) 2004-03-02 2004-03-02 直線描画装置、直線描画方法および直線描画プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004057707A JP4301037B2 (ja) 2004-03-02 2004-03-02 直線描画装置、直線描画方法および直線描画プログラム

Publications (2)

Publication Number Publication Date
JP2005250662A true JP2005250662A (ja) 2005-09-15
JP4301037B2 JP4301037B2 (ja) 2009-07-22

Family

ID=35031105

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004057707A Expired - Fee Related JP4301037B2 (ja) 2004-03-02 2004-03-02 直線描画装置、直線描画方法および直線描画プログラム

Country Status (1)

Country Link
JP (1) JP4301037B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014186682A (ja) * 2013-03-25 2014-10-02 Mega Chips Corp 画像処理装置、プログラムおよび集積回路
KR20170031479A (ko) * 2015-09-11 2017-03-21 삼성전자주식회사 경로 스트로크를 수행하는 방법 및 장치

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014186682A (ja) * 2013-03-25 2014-10-02 Mega Chips Corp 画像処理装置、プログラムおよび集積回路
KR20170031479A (ko) * 2015-09-11 2017-03-21 삼성전자주식회사 경로 스트로크를 수행하는 방법 및 장치
US10885681B2 (en) 2015-09-11 2021-01-05 Samsung Electronics Co., Ltd. Method and apparatus for performing path stroking
KR102443697B1 (ko) * 2015-09-11 2022-09-15 삼성전자주식회사 경로 스트로크를 수행하는 방법 및 장치

Also Published As

Publication number Publication date
JP4301037B2 (ja) 2009-07-22

Similar Documents

Publication Publication Date Title
KR100497557B1 (ko) 묘화장치및묘화방법
JP3107452B2 (ja) テクスチャマッピング方法およびその装置
JP5294313B2 (ja) ベジェ曲線描画装置、ベジェ曲線描画方法およびプログラム
WO1996031844A1 (fr) Systeme graphique
WO1996028794A1 (fr) Dispositif d'affichage graphique tridimensionnel
WO2017217011A1 (ja) 画像処理装置および重畳画像生成方法
JP4301037B2 (ja) 直線描画装置、直線描画方法および直線描画プログラム
US7015930B2 (en) Method and apparatus for interpolating pixel parameters based on a plurality of vertex values
JP4239846B2 (ja) 直線描画装置および直線描画方法
US6373494B1 (en) Signal processing apparatus and image processing apparatus
JP4664169B2 (ja) 図形描画装置及び図形描画プログラム
JP2008052595A (ja) 画像処理装置、画像処理方法、及びコンピュータプログラム
JPH03144782A (ja) 三次元図形処理装置
JP2571662B2 (ja) 線描画方法及び装置
JP2003308537A (ja) 図形描画装置
JP3556517B2 (ja) 3次元画像処理装置
JP4805094B2 (ja) フォグ効果処理方法、グラフィックス装置、グラフィックス用半導体集積回路装置及びフォグ効果処理プログラム
WO2010053102A1 (ja) 図形描画装置、アンチエイリアス処理方法および記憶媒体
WO2021006160A1 (ja) 画像処理装置、画像処理方法、及びプログラム
JP3409987B2 (ja) 3次元画像生成方法および装置とこの方法および装置を用いた3次元画像処理装置
JP2005322959A (ja) 画像処理装置、携帯端末、画像処理プログラム及び画像処理方法
JPH11242585A (ja) 除算回路およびグラフィック演算装置
JP4669334B2 (ja) エッジ・マルチサンプリングハイブリッドアンチエイリアス
JP2000099748A (ja) 3次元グラフィックス処理装置及びその処理方法
JP2001118083A (ja) 図形データ処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070301

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080930

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090113

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090304

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090331

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

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

Free format text: PAYMENT UNTIL: 20120501

Year of fee payment: 3

R150 Certificate of patent (=grant) or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090413

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

Free format text: PAYMENT UNTIL: 20130501

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140501

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees