(57)【要約】【課題】用いるメモリ容量を抑制しつつアンチエイリアスの品質を向上する。【解決手段】分割輪郭設定部６は、輪郭線の始点および終点の座標から、画素分割部５で生成した分割画素配列について、輪郭データを設定する。補正部７は、分割画素配列について走査線の方向に並んだ分割画素行ごとに走査線の方向に、所定の画素数移動する。縮約部８は、分割画素行ごとに移動前の分割画素配列の範囲にある分割画素について、輪郭データの和を計算し、走査線方向に１分割画素の幅の縮約画素の列に格納する。隣接画素加算部９は、移動前の分割画素配列の範囲からはみ出した分割画素の値を、はみ出した方向に隣接する画素の縮約画素の列に加算する。マスク生成部１１は、縮約画素の配列に従って、塗りつぶしを示すマスクデータを生成する。占有率計算部１２は、重み付け係数行列を移動しながら、マスクデータと縮約画素ごとの積和をとって、塗りつぶし占有率を計算する。【選択図】図１
2010113625.tif 000002
【特許請求の範囲】
【請求項１】
図形の輪郭線が通る画素について、前記輪郭線のその画素を通る部分の始点と終点の座標を取得する輪郭始終点取得手段と、
前記輪郭線が通る画素を水平および垂直方向に所定の数で分割した分割画素配列を生成する分割手段と、
前記輪郭線の部分の始点および終点の座標から、前記分割画素配列において、描画領域の走査線に沿って塗りつぶしを開始する分割画素または塗りつぶしを終了する分割画素を表す輪郭データを設定する分割輪郭設定手段と、
前記分割輪郭設定手段で前記輪郭データを設定した分割画素配列を、前記走査線の方向に並んだ分割画素行ごとに前記走査線の方向に、前記分割画素行ごとに決められた所定の分割画素数移動する補正手段と、
前記補正手段で移動した分割画素の集合の、移動前の前記分割画素配列の範囲にある分割画素について、前記分割画素行ごとに前記輪郭データの和を計算して、前記走査線の方向に１画素の幅で前記走査線に垂直な方向に分割した数の、前記輪郭データの和を格納する縮約画素の列を生成する縮約手段と、
前記補正手段で前記走査線の方向に移動した結果、移動前の分割画素配列の範囲からはみ出した分割画素の値を、前記分割画素行がはみ出した方向に隣接する画素について前記縮約手段で生成した縮約画素の列に、加算する拡散手段と、
前記縮約手段および前記拡散手段で生成した前記縮約画素の列を、分割前の画素の配列に従って並べた縮約画素の配列から、塗りつぶす縮約画素を示すマスク画素配列を生成するマスク生成手段と、
前記マスク画素配列の縮約画素の列ごとに、その縮約画素の列と隣接する縮約画素の列に、縮約画素ごとの所定の重み付け係数を乗じた積の和から、その縮約画素の列に対応する前記輪郭線が通る画素の塗りつぶし占有率を計算する占有率計算手段と、
を備えることを特徴とする図形描画装置。
【請求項２】
前記分割手段は、前記輪郭線が通る画素を水平および垂直方向にそれぞれ４分割し、
前記補正手段は、前記分割画素行を１行ごとに前記走査線の方向の負の方向と正の方向に１分割画素ずつ移動する、
ことを特徴とする請求項１に記載の図形描画装置。
【請求項３】
前記占有率計算手段は、
前記縮約画素の列の走査線の負の方向に隣接する縮約画素の列の縮約画素のそれぞれと、０、０．５、０、０．５との積和と、
前記縮約画素の列の縮約画素のそれぞれと、１．０、１．５、１．５、１．０との積和と、
前記縮約画素の列の走査線の正の方向の縮約画素の列の縮約画素のそれぞれと、０．５、０、０．５、０との積和と、
の合計を７で除した値を、その画素の塗りつぶし占有率として計算する、
ことを特徴とする請求項２に記載の図形描画装置。
【請求項４】
図形の輪郭線が通る画素について、前記輪郭線のその画素を通る部分の始点と終点の座標を取得する輪郭始終点取得ステップと、
前記輪郭線が通る画素を水平および垂直方向に所定の数で分割した分割画素配列を生成する分割ステップと、
前記輪郭線の部分の始点および終点の座標から、前記分割画素配列について、描画領域の走査線に沿って塗りつぶしを開始する分割画素または塗りつぶしを終了する分割画素を表す輪郭データを設定する分割輪郭設定ステップと、
前記分割輪郭設定ステップで前記輪郭データを設定した分割画素配列を、前記走査線の方向に並んだ分割画素行ごとに前記走査線の方向に、前記分割画素行ごとに決められた所定の分割画素数移動する補正ステップと、
前記補正ステップで移動した分割画素の集合の、移動前の前記分割画素配列の範囲にある分割画素について、前記分割画素行ごとに前記輪郭データの和を計算して、前記走査線の方向に１画素の幅で前記走査線に垂直な方向に分割した数の、前記輪郭データの和を格納する縮約画素の列を生成する縮約ステップと、
前記補正ステップで前記走査線の方向に移動した結果、移動前の分割画素配列の範囲からはみ出した分割画素の値を、前記分割画素行がはみ出した方向に隣接する画素について前記縮約ステップで生成した縮約画素の列に、加算する拡散ステップと、
前記縮約ステップおよび前記拡散ステップで生成した前記縮約画素の列を、分割前の画素の配列に従って並べた縮約画素の配列から、塗りつぶす縮約画素を示すマスク画素配列を生成するマスク生成ステップと、
前記マスク画素配列の縮約画素の列ごとに、その縮約画素の列と隣接する縮約画素の列に、縮約画素ごとの所定の重み付け係数を乗じた積の和から、その縮約画素の列に対応する前記輪郭線が通る画素の塗りつぶし占有率を計算する占有率計算ステップと、
を備えることを特徴とするアンチエイリアス処理方法。
【請求項５】
前記分割ステップは、前記輪郭線が通る画素を水平および垂直方向にそれぞれ４分割し、
前記補正ステップは、前記分割画素行を１行ごとに前記走査線の方向の負の方向と正の方向に１分割画素ずつ移動する、
ことを特徴とする請求項４に記載のアンチエイリアス処理方法。
【請求項６】
前記占有率計算ステップは、
前記縮約画素の列の走査線の負の方向の縮約画素の列の縮約画素のそれぞれと、０、０．５、０、０．５との積和と、
前記縮約画素の列の縮約画素のそれぞれと、１．０、１．５、１．５、１．０との積和と、
前記縮約画素の列の走査線の正の方向の縮約画素の列の縮約画素のそれぞれと、０．５、０、０．５、０との積和と、
の合計を７で除した値を、その画素の塗りつぶし占有率として計算する、
ことを特徴とする請求項５に記載のアンチエイリアス処理方法。
【請求項７】
コンピュータに、
図形の輪郭線が通る画素について、前記輪郭線のその画素を通る部分の始点と終点の座標を取得する輪郭始終点取得ステップと、
前記輪郭線が通る画素を水平および垂直方向に所定の数で分割した分割画素配列を生成する分割ステップと、
前記輪郭線の部分の始点および終点の座標から、前記分割画素配列について、描画領域の走査線に沿って塗りつぶしを開始する分割画素または塗りつぶしを終了する分割画素を表す輪郭データを設定する分割輪郭設定ステップと、
前記分割輪郭設定ステップで前記輪郭データを設定した分割画素配列を、前記走査線の方向に並んだ分割画素行ごとに前記走査線の方向に、前記分割画素行ごとに決められた所定の分割画素数移動する補正ステップと、
前記補正ステップで移動した分割画素の集合の、移動前の前記分割画素配列の範囲にある分割画素について、前記分割画素行ごとに前記輪郭データの和を計算して、前記走査線の方向に１画素の幅で前記走査線に垂直な方向に分割した数の、前記輪郭データの和を格納する縮約画素の列を生成する縮約ステップと、
前記補正ステップで前記走査線の方向に移動した結果、移動前の分割画素配列の範囲からはみ出した分割画素の値を、前記分割画素行がはみ出した方向に隣接する画素について前記縮約ステップで生成した縮約画素の列に、加算する拡散ステップと、
前記縮約ステップおよび前記拡散ステップで生成した前記縮約画素の列を、分割前の画素の配列に従って並べた縮約画素の配列から、塗りつぶす縮約画素を示すマスク画素配列を生成するマスク生成ステップと、
前記マスク画素配列の縮約画素の列ごとに、その縮約画素の列と隣接する縮約画素の列に、縮約画素ごとの所定の重み付け係数を乗じた積の和から、その縮約画素の列に対応する前記輪郭線が通る画素の塗りつぶし占有率を計算する占有率計算ステップと、
を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、図形データに基づいて画像を表示装置に描画する図形描画装置、アンチエイリアス処理方法およびプログラムに関する。
【背景技術】
【０００２】
図形データに基づいて画像を描画する場合、輪郭線で囲まれた範囲の画素を塗りつぶす場合に、図形の輪郭のアンチエイリアス処理を行う。画素は表示を行なう際の最小単位であるので、文字や図形の輪郭部において画素の一部に文字や図形が重なったとしても、その画素全体を１つの色で表示しなければならない。しかし、輪郭部の画素を図形の内部の画素と同一色や同一輝度にすると、ジャギによるギザギザが目立ってしまう。そこで、図形の輪郭線が通過する画素について、その画素に重なる図形の面積比率を算出し、輪郭部分のドットの表示色を、その面積比率に応じた色で階調表示する（特許文献１参照）。これがアンチエイリアス処理である。
【０００３】
この輪郭部の画素の図形が重なる比率を算出するために、１画素を例えば４×４のサブピクセルに分割して、サブピクセル毎の塗りつぶし領域の算出を行うことが行われている（特許文献２参照）。特許文献２の技術では、濃度決定処理（アンチエイリアシング処理）において、その走査線の最初の画素から順番に、所定のアンチエイリアシング手法のフィルター（例えば均一平均化法のフィルター）をかけ、各画素の面積率を計算して階調値（即ち、濃度）を算出する。
【０００４】
特許文献３には、サブピクセル分割及び塗り潰し個数のカウントを行うことなく、面積率を求める技術が記載されている。特許文献３の技術は、図形のアウトラインを形成するベクトルデータとベクトルデータとの連続性を示す連続情報を生成し、ベクトル情報に付加する連続情報付加手段と、ベクトルデータの連続情報に基づいて、スキャンラインを挟む上下の走査線とベクトルデータとの交点情報から疑似ベクトルを生成する疑似ベクトル生成手段と、疑似ベクトルがエッジ部画素を通過する際に形成する２つの交点の何れかのＸ座標値或いはＹ座標値の小数部を用いて、エッジ部画素の近似面積率を演算する近似面積率演算手段とを備えている。
【０００５】
また、特許文献４には、背景の画像データが展開されたフレームバッファ上に図形を描画するとき、図形の輪郭に接する背景の部分の第１のピクセルの色と、この第１のピクセルに接する図形の輪郭部分の第２のピクセルの色との中間色を計算して中間色保持領域に保持する。そして、図形の輪郭に沿って連続する、第１のピクセルを含む背景の部分のＮ個のピクセルの色を、中間色保持領域に保持された中間色でそれぞれ置き換える。Ｎは任意に決められた２以上の整数である。
【０００６】
【特許文献１】特開平０３−２１１５９１号公報
【特許文献２】特開平０４−１３９５８９号公報
【特許文献３】特開平０５−１４３７４２号公報
【特許文献４】特開２００４−２２７３３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
例えば、図１２（ａ）のような輪郭データを持った図形を描画する場合、走査線の方向（Ｘ方向）およびそれに垂直な方向（Ｙ方向）にそれぞれ２分割し（図１２（ｂ））、アウトラインを検出する（図１２（ｃ））。アウトライン検出後、各走査線の行（Ｙ）に対して左から右へアウトラインデータを走査しマスクデータを作成する（図１２（ｄ））。その後、２×２のサブピクセルから占有率を計算する。図１２の例では、占有率は３／４である。
【０００８】
上述のような描画のアンチエイリアスにおいて、占有率を輪郭と画素との関係に合わせてより細かく設定するために、関連する技術では、図１２（ｂ）で２×２に分割倍している処理を、図１３のように例えば４×４に分割して、サブピクセル数を多くすることでアンチエイリアスの階調を細かくして品質を上げていた。このため、アウトラインデータの容量は拡大率の平方倍（図１３の例では図１２の４倍）となり、アウトラインの走査にも拡大率の平方倍の処理時間がかかる。
【０００９】
このようにサブピクセル数を分割数の平方倍の数にするアンチエイリアス処理には、次のような問題がある。アンチエイリアスの品質を上げるためには、図形を分割数に拡大したサイズのアウトラインバッファ領域を確保しなければならない。また、アウトラインバッファへの書き込み、読み込み量が増えるためメモリのアクセス回数が増え性能低下の原因となる。
【００１０】
特許文献３のように、サブピクセルに分割しない方法では、１つの輪郭線のデータだけでは、塗りつぶしを判断できないので、交点の座標をマスクデータの生成まで保持する必要がある。そして、マスクデータを生成するときに、面積比率を決定する必要があり、マスクデータ生成処理が複雑になる。また、特許文献４の技術では、面積比率に合わせた階調ではない。
【００１１】
本発明は上述の事情に鑑みてなされたもので、図形の描画にアンチエイリアス処理を行う場合、用いるメモリ容量を抑制しつつアンチエイリアスの品質を向上することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の観点に係る図形描画装置は、
図形の輪郭線が通る画素について、前記輪郭線のその画素を通る部分の始点と終点の座標を取得する輪郭始終点取得手段と、
前記輪郭線が通る画素を水平および垂直方向に所定の数で分割した分割画素配列を生成する分割手段と、
前記輪郭線の部分の始点および終点の座標から、前記分割画素配列において、描画領域の走査線に沿って塗りつぶしを開始する分割画素または塗りつぶしを終了する分割画素を表す輪郭データを設定する分割輪郭設定手段と、
前記分割輪郭設定手段で前記輪郭データを設定した分割画素配列を、前記走査線の方向に並んだ分割画素行ごとに前記走査線の方向に、前記分割画素行ごとに決められた所定の分割画素数移動する補正手段と、
前記補正手段で移動した分割画素の集合の、移動前の前記分割画素配列の範囲にある分割画素について、前記分割画素行ごとに前記輪郭データの和を計算して、前記走査線の方向に１画素の幅で前記走査線に垂直な方向に分割した数の、前記輪郭データの和を格納する縮約画素の列を生成する縮約手段と、
前記補正手段で前記走査線の方向に移動した結果、移動前の分割画素配列の範囲からはみ出した分割画素の値を、前記分割画素行がはみ出した方向に隣接する画素について前記縮約手段で生成した縮約画素の列に、加算する拡散手段と、
前記縮約手段および前記拡散手段で生成した前記縮約画素の列を、分割前の画素の配列に従って並べた縮約画素の配列から、塗りつぶす縮約画素を示すマスク画素配列を生成するマスク生成手段と、
前記マスク画素配列の縮約画素の列ごとに、その縮約画素の列と隣接する縮約画素の列に、縮約画素ごとの所定の重み付け係数を乗じた積の和から、その縮約画素の列に対応する前記輪郭線が通る画素の塗りつぶし占有率を計算する占有率計算手段と、
を備えることを特徴とする。
【００１３】
本発明の第２の観点に係るアンチエイリアス処理方法は、
図形の輪郭線が通る画素について、前記輪郭線のその画素を通る部分の始点と終点の座標を取得する輪郭始終点取得ステップと、
前記輪郭線が通る画素を水平および垂直方向に所定の数で分割した分割画素配列を生成する分割ステップと、
前記輪郭線の部分の始点および終点の座標から、前記分割画素配列について、描画領域の走査線に沿って塗りつぶしを開始する分割画素または塗りつぶしを終了する分割画素を表す輪郭データを設定する分割輪郭設定ステップと、
前記分割輪郭設定ステップで前記輪郭データを設定した分割画素配列を、前記走査線の方向に並んだ分割画素行ごとに前記走査線の方向に、前記分割画素行ごとに決められた所定の分割画素数移動する補正ステップと、
前記補正ステップで移動した分割画素の集合の、移動前の前記分割画素配列の範囲にある分割画素について、前記分割画素行ごとに前記輪郭データの和を計算して、前記走査線の方向に１画素の幅で前記走査線に垂直な方向に分割した数の、前記輪郭データの和を格納する縮約画素の列を生成する縮約ステップと、
前記補正ステップで前記走査線の方向に移動した結果、移動前の分割画素配列の範囲からはみ出した分割画素の値を、前記分割画素行がはみ出した方向に隣接する画素について前記縮約ステップで生成した縮約画素の列に、加算する拡散ステップと、
前記縮約ステップおよび前記拡散ステップで生成した前記縮約画素の列を、分割前の画素の配列に従って並べた縮約画素の配列から、塗りつぶす縮約画素を示すマスク画素配列を生成するマスク生成ステップと、
前記マスク画素配列の縮約画素の列ごとに、その縮約画素の列と隣接する縮約画素の列に、縮約画素ごとの所定の重み付け係数を乗じた積の和から、その縮約画素の列に対応する前記輪郭線が通る画素の塗りつぶし占有率を計算する占有率計算ステップと、
を備えることを特徴とする。
【００１４】
本発明の第３の観点に係るプログラムは、コンピュータに、
図形の輪郭線が通る画素について、前記輪郭線のその画素を通る部分の始点と終点の座標を取得する輪郭始終点取得ステップと、
前記輪郭線が通る画素を水平および垂直方向に所定の数で分割した分割画素配列を生成する分割ステップと、
前記輪郭線の部分の始点および終点の座標から、前記分割画素配列について、描画領域の走査線に沿って塗りつぶしを開始する分割画素または塗りつぶしを終了する分割画素を表す輪郭データを設定する分割輪郭設定ステップと、
前記分割輪郭設定ステップで前記輪郭データを設定した分割画素配列を、前記走査線の方向に並んだ分割画素行ごとに前記走査線の方向に、前記分割画素行ごとに決められた所定の分割画素数移動する補正ステップと、
前記補正ステップで移動した分割画素の集合の、移動前の前記分割画素配列の範囲にある分割画素について、前記分割画素行ごとに前記輪郭データの和を計算して、前記走査線の方向に１画素の幅で前記走査線に垂直な方向に分割した数の、前記輪郭データの和を格納する縮約画素の列を生成する縮約ステップと、
前記補正ステップで前記走査線の方向に移動した結果、移動前の分割画素配列の範囲からはみ出した分割画素の値を、前記分割画素行がはみ出した方向に隣接する画素について前記縮約ステップで生成した縮約画素の列に、加算する拡散ステップと、
前記縮約ステップおよび前記拡散ステップで生成した前記縮約画素の列を、分割前の画素の配列に従って並べた縮約画素の配列から、塗りつぶす縮約画素を示すマスク画素配列を生成するマスク生成ステップと、
前記マスク画素配列の縮約画素の列ごとに、その縮約画素の列と隣接する縮約画素の列に、縮約画素ごとの所定の重み付け係数を乗じた積の和から、その縮約画素の列に対応する前記輪郭線が通る画素の塗りつぶし占有率を計算する占有率計算ステップと、
を実行させることを特徴とする。
【発明の効果】
【００１５】
本発明によれば、図形の描画にアンチエイリアス処理を行う場合、用いるメモリ容量を抑制しつつアンチエイリアスの品質を向上することができる。
【発明を実施するための最良の形態】
【００１６】
図１は、本発明の実施の形態に係るアンチエイリアス回路の構成例を示すブロック図である。アンチエイリアス回路１は、輪郭生成回路１０４、アウトラインバッファ１０６および表示回路１２０に接続する。アンチエイリアス回路１は、輪郭生成回路１０４から輪郭線の情報を入力して、輪郭部の画素の塗りつぶし占有率を計算し、占有率データ１６を表示回路１２０に出力する。アンチエイリアス回路１は、占有率を計算する途中の輪郭データを、アウトラインバッファ１０６に格納する。
【００１７】
図２は、アンチエイリアスを含む描画装置の構成例を示すブロック図である。描画装置１００は、制御点入力部１０１、ベジェ曲線分割部１０２、座標変換１０３、輪郭生成回路１０４、アンチエイリアス回路１、アウトラインバッファ１０６、マスク生成１０７、塗りつぶし１０８、合成部１０９、ディザー１１０、イメージバッファ１１１、フィルタ１１２および色変換１１３から構成される。アンチエイリアス回路１は描画装置１００のうち、輪郭線の情報から輪郭部の画素の塗りつぶし占有率を演算する部分である。図１の表示回路１２０は、図２のマスク生成１０７以降に相当する。
【００１８】
描画装置１００の処理の概要を説明する。制御点入力部１０１でベジェ曲線の制御点の座標を入力して、ベジェ曲線分割部１０２が、ベジェ曲線を折れ線近似する分割点の座標を出力すると、座標変換１０３は分割点の座標を、表示する画面全体の中の座標に変換する。輪郭生成回路１０４は、分割点の座標から各線分が通る画素を示す輪郭データをアウトラインバッファ１０６に設定する。アンチエイリアス回路１は、輪郭線を構成する各線分の情報から、アンチエイリアス処理を行う。マスク生成１０７は、輪郭データからマスクデータを生成する。そして、マスクデータに従って、塗りつぶし処理を行う。
【００１９】
一方、ビットマップなどの画素ごとの色および輝度のデータで表された画像データと重ね合わせる場合に、その画像データはイメージバッファ１１１に設定される。画像データはフィルタ１１２でエッジ強調、特異点除去などの処理が施されて、表示装置に合わせて色変換したのち、輪郭データから生成された画像と合成される。最後に、画面で見やすいようにディザー効果をかけて、描画データを生成する。
【００２０】
図１に戻って、アンチエイリアス回路１は、輪郭補正回路２と重み付け処理回路３から構成される。輪郭補正回路２は、輪郭線座標入力部４、画素分割部５、分割輪郭設定部６、補正部７、縮約部８および隣接画素加算部９を備える。重み付け処理回路３は、マスク生成部１１と占有率計算部１２を備える。輪郭補正回路２は、分割画素に輪郭データを設定し、輪郭データを補正した上で分割画素を縮約し、分割画素のデータを圧縮してアウトラインバッファ１０６に格納する。重み付け処理回路３は、アウトラインバッファ１０６から１つの走査線の縮約された分割画素の輪郭データを読み込んで、画素ごとの占有率を計算する。重み付け処理回路３は、画素ごとの占有率データ１６を表示回路１２０に出力する。
【００２１】
輪郭補正回路２の輪郭線座標入力部４は、輪郭生成回路１０４から輪郭線を構成する部分ごとの始点と終点の座標（始終点座標１３）を入力する。画素分割部５は、少なくとも輪郭線が通る画素について、所定の分割数に分割した分割画素配列を生成する。分割輪郭設定部６は、分割画素配列に対して、輪郭線が通る位置の分割画素に輪郭データ、すなわち走査線に沿って塗りつぶしを開始または終了することを示すデータを設定する。
【００２２】
補正部７は、輪郭デーが設定された分割画素配列について、走査線の方向に並んだ分割画素行ごとに走査線の方向に、分割画素行ごとに決められた所定の画素数移動する。これによって、分割画素行のうち、元の分割画素配列の範囲に残る分割画素と、分割画素配列の範囲からはみ出る分割画素に分けられる。元の分割画素配列の範囲に残る部分とはみ出る部分は、分割画素行ごとに異なる。
【００２３】
縮約部８は、補正部７で移動された分割画素行ごとに、元の分割画素配列の範囲内に残る分割画素についてその輪郭データを加算する。そして、分割画素行ごとに加算された値を走査線の方向に垂直な方向に並べた列を生成する。この分割画素行ごとに加算された値を保持する記憶領域を縮約画素といい、縮約画素を分割画素配列に合わせて走査線に垂直な方向に並べた列を縮約画素の列という。
【００２４】
隣接画素加算部９は、補正部７で分割画素行ごとに移動した結果、元の分割画素配列の範囲からはみ出た分割画素の輪郭データを、はみ出た方向に隣接する画素の縮約画素の列のデータに加算する。走査線に沿って、１つ前の画素の縮約画素の列を読み出して、その方向にはみ出た分散画素行の部分の輪郭データを加算して、もとのアウトラインバッファ１０６の記憶領域（１つ前の画素の縮約画素の列）に書き込む。また、走査線に沿って１つ後の画素の縮約画素の列の記憶領域に、その方向にはみ出た分散画素行の部分の輪郭データを書き込む。補正部７で分割画素行ごとに移動することによって、移動前の分割画素配列の範囲からはみ出した分割画素は、隣接画素に拡散されたことになる。
【００２５】
隣接画素加算部９は、また、縮約部８で生成された縮約画素の列（アウトラインデータ１４）をアウトラインバッファ１０６に格納する。そのとき、１つ前の画素で後の画素の方向にはみ出た分散画素行の部分の輪郭データが書き込まれているので、それに今回の縮約画素の列のデータを加算する。
【００２６】
図３は、本実施の形態に係るアンチエイリアス処理を説明する図である。図３の（ａ）は輪郭線が通る画素の例である。輪郭線座標入力部４は、この画素を通る輪郭線の始点と終点の座標を入力する。図３（ｂ）は、画素を分割した状態を表す。図３の例では、水平（走査線の方向）および垂直にそれぞれ４分割している。分割した１つの四角が分割画素１つを表す。画素分割部５は、分割画素の配列を生成する。
【００２７】
図３（ｃ）は、分割画素に輪郭データを設定した状態を示す。図３では、見やすくするために、分割画素の値が０の場合を空白にしている。図３の例では、輪郭線は画素の左上角から右下角に向かう対角線に通っているので、その輪郭線が通る対角線上の分割画素に輪郭データが設定される。図３の例では、輪郭データは＋１であり、この分割画素で塗りつぶしが開始（または終了）することを表す。
【００２８】
図４は、分割画素配列に設定された輪郭データの例を示す。画素に通る輪郭線の位置によって輪郭データが設定される分割画素の位置が変化する。図４（ａ）は、輪郭線が画素の左上角から右辺中央に向かって通る場合である。図４（ｂ）は、輪郭線が画素の左上角から下辺中央に向かって通る場合である。図４（ｃ）は、２本の輪郭線が通っている例を示す。
【００２９】
図３（ｄ）は、図１の補正部７が分割画素行ごとに移動した結果の例を示す。移動する前の分割画素配列の範囲を二点鎖線で示す。図３の例では、分割画素行ごとに上から順に、走査線の負の方向に１分割画素分、走査線の正の方向に１分割画素分、走査線の負の方向に１分割画素分、走査線の正の方向に１分割画素分、交互に移動している。移動前の分割画素配列の範囲からはみ出した分割画素は、隣接画素に拡散されたことになる。
【００３０】
図３（ｅ）は、分割画素行ごとに縮約した状態の例を示す。縮約部８は、移動された分割画素行ごとに、元の分割画素配列の範囲内に残る分割画素についてその輪郭データを加算する。すなわち、図３（ｄ）の二点鎖線の範囲の輪郭データを、分割画素行ごとに水平（走査線）方向に加算する。図３（ｅ）の二点鎖線の範囲が縮約画素の列を示す。図３の例では、分割画素行の第１行と第４行の輪郭データは、元の分割画素配列の範囲からはみ出ているので、縮約画素の列の第１行と第４行の値は０である。
【００３１】
図５は、実施の形態に係る縮約画素の配列を説明する図である。図５はアウトラインバッファ１０６の配列を示す。一点鎖線で囲んだ部分が、今回処理した画素の縮約画素の列である。その左隣の列が１つ前の画素の縮約画素の列であり、右隣の列が１つ後の画素の縮約画素の列である。隣接画素加算部９は、左隣の縮約画素の列を読み出して、その方向にはみ出た分散画素行の部分の輪郭データを加算して、もとの記憶領域に書き込む。また、右隣の縮約画素の列の記憶領域に、その方向にはみ出た分散画素行の部分の輪郭データを書き込む。
【００３２】
図５の例では、左隣の縮約画素の列のデータが０だったので、図３（ｅ）の左列の値がそのまま書き込まれている。また、今回処理した画素の縮約画素の列の右隣に、図３（ｅ）の右列の値が書き込まれる。分割画素行ごとに移動することによって、移動前の分割画素配列の範囲からはみ出した分割画素は、隣接画素に拡散されている。
【００３３】
隣接画素加算部９は、縮約部８で生成された縮約画素の列をアウトラインバッファ１０６の該当記憶領域に加算して格納する。図５の例では、１つ前の画素から走査線の正の方向にはみ出た部分に輪郭データがなかった（０だった）ので、図３（ｅ）の中央の列の値がそのまま書き込まれている。
【００３４】
以上のようにして、走査線の１ライン分の縮約画素の列が生成されると、重み付け処理回路３に対して描画開始命令を発行する。１ライン分の縮約画素の列は、元の画素の行を走査線に垂直な方向にｎ倍したデータ構造である。縮約画素の列の値は、描画領域の走査線に沿って塗りつぶしの開始画素を正の値、塗りつぶしを終了する画素を負の値で表したものである。
【００３５】
図１に示す重み付け処理回路３のマスク生成部１１は、アウトラインバッファ１０６から１ライン分の縮約画素の列（アウトラインデータ１５）を読み込み、走査線に垂直な方向にｎ倍されたアウトラインデータ１５から、縮約画素単位のマスクデータを作成する。
【００３６】
占有率計算部１２はマスクデータから、描画する画素の縮約画素の列とその前後の縮約画素の列の各縮約画素に重み付け係数を乗じて加算して、描画する画素の占有率を求める。そして、画素ごとに計算した占有率データ１６を表示回路１２０に出力する。
【００３７】
図６は、縮約画素の配列におけるマスクデータの例を説明する図である。図６は、図５の縮約画素の配列に対応している。図５の一点鎖線で囲まれた縮約画素に、図６の一点鎖線に囲まれたマスクデータが対応する。図６は、図５の輪郭データが＋１の縮約画素から塗りつぶしが開始される場合を示す。ハッチングを付けた塗りつぶす縮約画素のマスクデータを１、塗りつぶさない縮約画素のマスクデータを０とする。
【００３８】
図７は、本実施の形態に係る重み付け係数の例を示す。図７の二点鎖線で囲んだ中央の列の値が、着目する画素の縮約画素の列に乗じる係数である。左の列の値は、着目する画素の１つ前の画素の縮約画素の列に乗じる係数であり、右の列の値は、１つ後の画素の縮約画素の列に乗じる係数である。
【００３９】
占有率計算部１２は、図７に示すような重み付け係数の行列を、着目する画素の縮約画素の列がその中央（二点鎖線で示す）に位置するように移動させながら、各係数を対応する縮約画素の列のマスクデータに乗じて、その合計を計算する。そして、合計値を係数の総和で除した値を、その画素の占有率とする。図７の例では、係数の総和は７である。
【００４０】
図８は、占有率の例を示す。図８は、図６のマスクデータに対応して、図７の重み付け行列で計算した値である。一点鎖線で囲んだデータは、図５および図６の一点鎖線で囲んだ縮約画素の列の画素の占有率を示す。
【００４１】
図６の一点鎖線で囲んだ縮約画素の列に対する画素では、図７の重み付け係数を乗じて占有率は次のように計算される。
（（１．０＋０．５）＋（１．５）＋（１．５＋０．５））
／（（１．０＋０．５）＋（０．５＋１．５）＋（１．５＋０．５）＋（０．５＋１．０））＝５／７
【００４２】
一点鎖線で囲んだ画素の１つ前（左隣）の画素では、マスクデータが１の縮約画素が４つであり、占有率は２／７となる。２つ前の画素では、マスクデータが１の縮約画素は重み付け係数行列の右上の１つだけであり、占有率は０．５／７である。それより前の画素では、マスクデータがすべて０なので、占有率は０である。
【００４３】
一点鎖線で囲んだ画素の１つ後（右隣）の画素では、マスクデータが０の縮約画素は左下の１つだけであり、占有率は６．５／７となる。また、２つ後の画素では、占有率は７／７＝１である。
【００４４】
図７の重み付け係数は、分割画素行を移動する方向の縮約画素に対する係数は０であり、反対側の係数は０．５である。マスクデータは走査線に沿って輪郭データで開始または終了するように生成されるので、重み付け係数の各行は上から順に、隣接画素に拡散した輪郭データを取り込む分と排除する分が交互に現れる。図７の重み付け係数は、図３（ｄ）の輪郭データの隣接画素への拡散と合わせて、適度に占有率を設定するように作用する。
【００４５】
図３および図５の例では、縮約画素の列は元の画素を走査線に垂直な方向に４倍しているので、アウトラインバッファ１０６のデータは元の画素の４倍である。これは、図１２の場合のアウトラインバッファのデータ量と同じである。図１２の例では、占有率の階調が４であるのに対して、図３および図５の例では、階調が７に拡大している。本実施の形態によれば、アウトラインデータを増やさずに画素の諧調を増やしアンチエイリアスの品質を向上できる。
【００４６】
図９は、本実施の形態に係る輪郭補正処理の動作の一例を示すフローチャートである。輪郭補正処理は、輪郭生成回路１０４で輪郭線のデータが生成されるごとに起動される。輪郭線座標入力部４は、輪郭生成回路１０４から輪郭線を構成する部分ごとの始点と終点の座標（始終点座標１３）を入力する（ステップＳ１）。画素分割部５は、輪郭線が通る画素を所定の数で分割した分割画素配列を生成する（ステップＳ２）。分割輪郭設定部６は、分割画素配列に対して、輪郭線が通る位置の分割画素に輪郭データを設定する（ステップＳ３）。
【００４７】
補正部７は、輪郭デーが設定された分割画素配列について、走査線の方向に並んだ分割画素行ごとに走査線の方向に、分割画素行ごとに決められた所定の画素数移動する補正処理を行う（ステップＳ４）。縮約部８は、補正部７で移動された分割画素行ごとに、元の分割画素配列の範囲内に残る分割画素についてその輪郭データを加算して、分割画素行ごとに加算された値を走査線の方向に垂直な方向に並べた列を生成する（ステップＳ５）。
【００４８】
隣接画素加算部９は、補正部７で分割画素行ごとに移動した結果、元の分割画素配列の範囲からはみ出た分割画素の輪郭データを、はみ出た方向に隣接する画素の縮約画素の列のデータに加算する（ステップＳ６）。また、隣接画素加算部９は、縮約部８で生成された縮約画素の列をアウトラインバッファ１０６の該当記憶領域に加算して格納する。
【００４９】
描画する画像の輪郭線ごとに輪郭補正処理が行われ、その輪郭線が通る画素について、縮約画素の列のデータが生成されて、アウトラインバッファ１０６に加算されていく。１つの走査線上のすべての輪郭線について輪郭補正処理が行われると、その走査線のアウトラインデータの重み付け処理を行う。
【００５０】
図１０は、本実施の形態に係る重み付け処理の動作の一例を示すフローチャートである。重み付け処理回路３のマスク生成部１１は、アウトラインバッファ１０６から１ライン分の縮約画素の配列（アウトラインデータ１５）を入力する（ステップＳ１１）。マスク生成部１１は、入力した走査線に垂直な方向にｎ倍されたアウトラインデータ１５から、縮約画素単位のマスクデータを作成する（ステップＳ１２）。
【００５１】
占有率計算部１２はマスクデータから、描画する画素の縮約画素の列とその前後の縮約画素の列の各縮約画素に重み付け係数を乗じて加算して、描画する画素の占有率を求める（ステップＳ１３））。そして、画素ごとに計算した占有率データ１６を表示回路１２０に出力する。
【００５２】
表示回路１２０は、図２のマスク生成１０７以降に相当する。マスク生成１０７は、アンチエイリアス処理で生成された占有率を用いて、輪郭データからマスクデータを生成する。そして、マスクデータに従って、塗りつぶし処理を行う。
【００５３】
なお、画素分割部５における画素の分割数、および、補正部７における分割画素行ごとに移動する分割画素数は、実施の形態で説明した数に限らず、任意に設定できる。例えば分割数を水平垂直方向それぞれｎ倍とすることができる。その場合、アウトラインバッファ１０６はｎの平方倍にはならず、ｎ倍で収まる。また、移動する分割数を２以上としてもよい。その場合でも、移動前の分割画素配列の範囲からはみ出た分割画素のデータは、それぞれはみ出た方向の隣接画素の縮約画素の列に加算する。分割数と移動する分割画素数に応じて重み付け係数を設定することにより、適切な表示のアンチエイリアス処理を行うことができる。
【００５４】
図１１は、描画装置をコンピュータに実装する場合の、物理的な構成の一例を示すブロック図である。本実施の形態に係る描画装置１００は、一般的なコンピュータ装置と同様のハードウェア構成によって実現することができる。アンチエイリアス回路１は、図２で説明したように描画装置１００の一部を構成する。描画装置１００は、図１１に示すように、制御部２１、主記憶部２２、外部記憶部２３、操作部２４、表示部２５および入出力部２６を備える。主記憶部２２、外部記憶部２３、操作部２４、表示部２５および入出力部２６はいずれも内部バス２０を介して制御部２１に接続されている。
【００５５】
制御部２１はＣＰＵ（Central Processing Unit）等から構成され、外部記憶部２３に記憶されているプログラム３０に従って、アンチエイリアス処理を含む描画するための処理を実行する。
【００５６】
主記憶部２２はＲＡＭ（Random-Access Memory）等から構成され、外部記憶部２３に記憶されているプログラム３０をロードし、制御部２１の作業領域として用いられる。上述のアウトラインバッファ１０６は、主記憶部２２の中に構成される。
【００５７】
外部記憶部２３は、フラッシュメモリ、ハードディスク、ＤＶＤ−ＲＡＭ（Digital Versatile Disc Random-Access Memory）、ＤＶＤ−ＲＷ（Digital Versatile Disc ReWritable）等の不揮発性メモリから構成され、前記の処理を制御部２１に行わせるためのプログラム３０を予め記憶し、また、制御部２１の指示に従って、このプログラム３０が記憶するデータを制御部２１に供給し、制御部２１から供給されたデータを記憶する。
【００５８】
操作部２４はキーボードおよびマウスなどのポインティングデバイス等と、キーボードおよびポインティングデバイス等を内部バス２０に接続するインターフェース装置から構成されている。操作部２４を介して、ベジェ曲線を含む画像データの作成、入力、送受信などの指示、表示する画像の指定、描画領域の範囲、拡大率、描画領域の表示装置における位置などが入力され、制御部２１に供給される。
【００５９】
表示部２５は、ＣＲＴ（Cathode Ray Tube）またはＬＣＤ（Liquid Crystal Display）などから構成され、描画された画像を表示する。
【００６０】
入出力部２６は、無線送受信機、無線モデムまたは網終端装置、およびそれらと接続するシリアルインタフェースまたはＬＡＮ（Local Area Network）インタフェース等から構成されている。入出力部２６を介して、ベジェ曲線を含む画像データを受信し、また送信できる。
【００６１】
本発明によるアンチエイリアス回路１を含む描画装置１００は、上記のアンチエイリアス処理を実現する回路を組み込んだＬＳＩ（Large Scale Integration）等のハードウェア部品から構成される回路を実装して、電子回路として構成することができる。また、上記の各機能を行うプログラム３０を、コンピュータ処理装置上の制御部２１で実行することにより、描画装置１００を実現することができる。その場合、制御部２１のＣＰＵは、外部記憶部２３に格納されているプログラム３０を、主記憶部２２にロードして実行し、各部の動作を制御して上記の各機能を行わせることによって、アンチエイリアス回路１の処理を実行する。
【００６２】
以上に説明したように、本実施の形態のアンチエイリアス回路１によれば、以下に記載するような効果を奏する。
第１の効果は、輪郭データ生成後の座標補正、および重み付けによる占有率の計算によりアウトラインバッファの容量を増やさずにアンチエイリアスの品質を向上することができる。
第２の効果は、アウトラインバッファの容量を増やしていないので、品質を上げる前とメモリのアクセス回数が変わらないため、描画速度の低下を起こさずにアンチエイリアスの品質を向上できる。
【００６３】
その他、本発明の好適な変形として、以下の構成が含まれる。
【００６４】
本発明の第１の観点に係る図形描画装置について、
好ましくは、前記分割手段は、前記輪郭線が通る画素を水平および垂直方向にそれぞれ４分割し、
前記補正手段は、前記分割画素行を１行ごとに前記走査線の方向の負の方向と正の方向に１分割画素ずつ移動する、
ことを特徴とする。
【００６５】
さらに好ましくは、前記占有率計算手段は、
前記縮約画素の列の走査線の負の方向の縮約画素の列の縮約画素のそれぞれと、０、０．５、０、０．５との積和と、
前記縮約画素の列の縮約画素のそれぞれと、１．０、１．５、１．５、１．０との積和と、
前記縮約画素の列の走査線の正の方向の縮約画素の列の縮約画素のそれぞれと、０．５、０、０．５、０との積和と、
の合計を７で除した値を、その画素の塗りつぶし占有率として計算する、
ことを特徴とする。
【００６６】
本発明の第２の観点に係るアンチエイリアス処理方法について、
好ましくは、前記分割ステップは、前記輪郭線が通る画素を水平および垂直方向にそれぞれ４分割し、
前記補正ステップは、前記分割画素行を１行ごとに前記走査線の方向の負の方向と正の方向に１分割画素ずつ移動する、
ことを特徴とする。
【００６７】
さらに好ましくは、前記占有率計算ステップは、
前記縮約画素の列の走査線の負の方向の縮約画素の列の縮約画素のそれぞれと、０、０．５、０、０．５との積和と、
前記縮約画素の列の縮約画素のそれぞれと、１．０、１．５、１．５、１．０との積和と、
前記縮約画素の列の走査線の正の方向の縮約画素の列の縮約画素のそれぞれと、０．５、０、０．５、０との積和と、
の合計を７で除した値を、その画素の塗りつぶし占有率として計算する、
ことを特徴とする。
【００６８】
その他、前記のハードウエェア構成やフローチャートは一例であり、任意に変更および修正が可能である。
【００６９】
制御部２１、主記憶部２２、外部記憶部２３、操作部２４、入出力部２６および内部バス２０などから構成される描画装置１００の処理を行う中心となる部分は、専用のシステムによらず、通常のコンピュータシステムを用いて実現可能である。たとえば、前記の動作を実行するためのコンピュータプログラムを、コンピュータが読み取り可能な記録媒体（フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ等）に格納して配布し、当該コンピュータプログラムをコンピュータにインストールすることにより、前記の処理を実行する描画装置１００を構成してもよい。また、インターネット等の通信ネットワーク上のサーバ装置が有する記憶装置に当該コンピュータプログラムを格納しておき、通常のコンピュータシステムがダウンロード等することで描画装置１００を構成してもよい。
【００７０】
また、描画装置１００の機能を、ＯＳ（オペレーティングシステム）とアプリケーションプログラムの分担、またはＯＳとアプリケーションプログラムとの協働により実現する場合などには、アプリケーションプログラム部分のみを記録媒体や記憶装置に格納してもよい。
【００７１】
また、搬送波にコンピュータプログラムを重畳し、通信ネットワークを介して配信することも可能である。たとえば、通信ネットワーク上の掲示板(BBS, Bulletin Board System)に前記コンピュータプログラムを掲示し、ネットワークを介して前記コンピュータプログラムを配信してもよい。そして、このコンピュータプログラムを起動し、ＯＳの制御下で、他のアプリケーションプログラムと同様に実行することにより、前記の処理を実行できるように構成してもよい。
【図面の簡単な説明】
【００７２】
【図１】本発明の実施の形態に係るアンチエイリアス回路の構成例を示すブロック図である。
【図２】描画装置の構成例を示すブロック図である。
【図３】本発明の実施の形態に係るアンチエイリアス処理を説明する図である。
【図４】分割画素配列における輪郭データの例を説明する図である。
【図５】実施の形態に係る縮約画素の配列を説明する図である。
【図６】縮約画素の配列におけるマスクデータの例を説明する図である。
【図７】本実施の形態に係る重み付け係数の例を示す図である。
【図８】占有率の例を示す図である。
【図９】本実施の形態に係る輪郭補正処理の動作の一例を示すフローチャートである。
【図１０】本実施の形態に係る重み付け処理の動作の一例を示すフローチャートである。
【図１１】描画装置をコンピュータに実装する場合の、物理的な構成の一例を示すブロック図である。
【図１２】アンチエイリアス処理を説明する図である。
【図１３】アンチエイリアス処理の占有率を細かく設定する方法を説明する図である。
【符号の説明】
【００７３】
１  アンチエイリアス回路
２  輪郭補正回路
３  重み付け処理回路
４  輪郭線座標入力部
５  画素分割部
６  分割輪郭設定部
７  補正部
８  縮約部
９  隣接画素加算部
１１  マスク生成部
１２  占有率計算部
１３  輪郭線始終点座標
１４  アウトラインデータ
１５  アウトラインデータ
１６  占有率データ
２１  制御部
２２  主記憶部
２３  外部記憶部
２４  操作部
２５  表示部
２６  入出力部
３０  プログラム
１００  描画装置
１０４  輪郭生成回路
１０６  アウトラインバッファ
１２０  表示回路
【図１】
2010113625.tif 000003
【図２】
2010113625.tif 000004
【図３】
2010113625.tif 000005
【図４】
2010113625.tif 000006
【図５】
2010113625.tif 000007
【図６】
2010113625.tif 000008
【図７】
2010113625.tif 000009
【図８】
2010113625.tif 000010
【図９】
2010113625.tif 000011
【図１０】
2010113625.tif 000012
【図１１】
2010113625.tif 000013
【図１２】
2010113625.tif 000014
【図１３】
2010113625.tif 000015