説明

描画処理装置

【課題】回路規模の増大及び描画速度の低下を抑えつつ、ジャギーを目立たなくすることができる描画処理装置を提供する。
【解決手段】描画パラメータに基づいて、画像を構成する複数の画素によって構成された各描画ライン毎の描画領域を導出し、各描画ラインの画素毎に、画素領域に対する描画領域の占める比率及び描画領域の濃度に応じて画素の濃度を決定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、描画処理装置に関し、特に、画像処理LSI(Large-Scale Integration)等の描画演算処理を行なう描画処理装置に関するものである。
【背景技術】
【0002】
一般に、画像処理LSIには、直線・矩形の描画を行なうための描画演算回路が含まれている。また、この画像処理LSIには、描画画像全体を記憶するフレームメモリを持たず、数ライン分の画像情報のみを記憶可能なラインバッファを有し、ラインバッファに記憶した情報を用いて1ラインずつ描画を行なうものがある。この種の画像処理LSIは、1フレーム分の描画画像全体を保存しておくことができないため、描画ライン毎に描画演算回路で描画線分の傾き演算をし、さらに、ラインに対する描画線分の描画画素範囲を演算して、描画処理回路に演算結果を出力する。
【0003】
たとえば、描画すべき画像が所定幅の描画線分の場合、ユーザは、入力キーやポインティングデバイスを用いて画面に表示される操作画面に描画線分の始点、及び終点、並びに線幅などを指定する。画像処理LSIには、操作画面で指定された描画する線分の始点及び終点のX座標、Y座標や線分の線幅などが描画パラメータ(描画を行なう描画範囲を示す範囲情報)として入力される。
【0004】
描画演算回路は、描画パラメータとして入力された描画する線分の始点、及び終点のX座標、Y座標から当該線分の傾きを求め、入力された描画する線分の線幅情報を基に描画範囲を演算し、この演算により各描画ラインにおける線分の描画画素の始点、及び終点を算出する。画像処理LSIでは、描画演算回路によって算出された線分の描画画素の始点、及び終点に基づいて後段の描画処理によって直線や矩形が描画を行なう。
【0005】
図8に線幅を持った直線描画の例を示す。
【0006】
画像処理LSIでは、たとえば、描画パラメータとして始点X座標strx、始点Y座標stry、終点X座標endx、終点Y座標endy、及び線幅lwidthが入力された場合、始点−終点を結ぶ直線を設定線分、設定線分と平行で始点から線幅分の位置にある画素を通る(図8はY座標方向に線幅を持つ例。設定線分の傾きによりX座標方向に線幅を持つ場合もある)直線を平行線分、始点を通り設定線分と垂直に交わる直線を直交線分Xmin、終点を通り設定線分と垂直に交わる直線を直交線分Xmaxとし、これらの4つの線分で囲まれる画素を、入力される色情報に書き換えることで線幅を持った直線の描画を行なう。
【0007】
具体的には、図17(A)(B)に示すように、ある描画ライン上の、上記4つの線分それぞれの描画始点、描画終点を計算し、それらの大小比較を行うことで、描画範囲を決定していく。
【0008】
画像処理LSIでは、描画ライン毎に、4つの線分のそれぞれの描画始点、描画終点を計算、大小比較を繰り返し行うことで、図18に示すような描画を行っていた。
【0009】
しかしながら、図18に示されるように、直線の境界が階段状のギザギザ(ジャギー)になってしまうという問題点があった。
【0010】
そこで、特許文献1には、ゲーム装置などのコンピュータグラフィックス技術を用いた画像処理装置において、アンチエイリアシング処理を行なうことにより、ジャギーを目立たなくする技術が記載されている。
【特許文献1】特開2001−5989号公報
【発明の開示】
【発明が解決しようとする課題】
【0011】
しかしながら、特許文献1のような一般にコンピュータグラフィックスなどに用いられるアンチエイリアシング処理は、複雑な演算が必要なため、画像処理LSIにそのまま適用すると、回路規模が増大し、描画速度も低下してしまう、という問題点があった。
【0012】
本発明は上記事実を鑑みてなされたものであり、回路規模の増大及び描画速度の低下を抑えつつ、ジャギーを目立たなくすることができる描画処理装置を提供することを目的とする。
【課題を解決するための手段】
【0013】
上記目的を達成するため、請求項1記載の発明の描画処理装置は、描画を行なう描画範囲を示す範囲情報に基づいて、画像を構成する複数の画素によって構成された各描画ライン毎の描画領域を導出する導出手段と、各描画ラインの画素毎に、画素領域に対する前記描画領域の占める比率及び前記描画領域の濃度に応じて画素の濃度を決定する決定手段と、を備えている。
【0014】
請求項1記載の発明は、描画を行なう描画範囲を示す範囲情報に基づいて、導出手段により、画像を構成する複数の画素によって構成された各描画ライン毎の描画領域が導出され、決定手段により、各描画ラインの画素毎に、画素領域に対する前記描画領域の占める比率及び前記描画領域の濃度に応じて画素の濃度が決定される。
【0015】
このように請求項1記載の発明よれば、描画を行なう描画範囲を示す範囲情報に基づいて、画像を構成する複数の画素によって構成された各描画ライン毎の描画領域を導出するので、回路規模の増大及び描画速度の低下を抑えることができ、各描画ラインの画素毎に、画素領域に対する描画領域の占める比率及び描画領域の濃度に応じて画素の濃度を決定するので、ジャギーを目立たなくすることができる。
【0016】
なお、本発明は、請求項2記載の発明のように、前記決定手段が、前記描画領域の濃度が高い場合には前記比率が高いほど濃度を高くし、前記描画領域の濃度が低い場合には前記比率が高いほど濃度を低くしてもよい。
【0017】
また、本発明は、請求項3記載の発明のように、描画すべき画像が所定幅の描画線分の場合には、前記描画線分の外輪郭の一辺を表わす線分の始点、終点、当該一辺を基準とした線幅を前記範囲情報とし、前記導出手段が、前記始点と前記終点を通る設定線分、当該設定線分と平行で前記始点から前記線幅に位置する平行線分、前記始点を通り前記設定線分と垂直に交わる第1直交線分、及び前記終点を通り前記設定線分と垂直に交わる第2直交線分を求め、各描画ライン毎に、前記設定線分、前記平行線分、前記第1直交線分及び前記第2直交線分によって囲まれた矩形領域を描画領域と導出してもよい。
【0018】
また、請求項3記載の発明は、請求項4記載の発明のように、前記決定手段が、前記矩形領域の何れかの辺が通過する画素についてのみ、画素領域に対する前記描画領域の占める比率及び前記描画領域の濃度に応じて画素の濃度を決定する演算を行なうことが好ましい。
【0019】
さらに、請求項4記載の発明は、請求項5記載の発明のように、前記決定手段は、前記矩形領域の何れかの辺が通過する画素について、当該画素を通過する辺の前記描画ラインに対する角度に応じて当該画素の濃度を決定する演算式を変更することが好ましい。
【発明の効果】
【0020】
以上説明したように、本発明によれば、回路規模の増大及び描画速度の低下を抑えつつ、ジャギーを目立たなくすることができる、という優れた効果を有する。
【発明を実施するための最良の形態】
【0021】
以下、図面を参照して、本発明の実施の形態について詳細に説明する。なお、以下では所定幅の描画線分を描画する画像処理LSIに本発明を適用した場合について説明する。
【0022】
図1には、本実施の形態に係る画像処理LSIに含まれる描画演算回路10の各構成要素を示すブロック図が示されている。なお、本発明と直接関係のない部分について図示、及び説明を省略する。
【0023】
描画演算回路10は、傾き演算部12、基点演算部14、選択部16、メモリ部18、描画演算部20、及び加算部22を含んでいる。
【0024】
傾き演算部12は、描画する線分の傾きを算出する機能を有する。傾き演算部12には、たとえばポインティングデバイスを介して、描画する線分の描画パラメータとして始点X座標strx、終点X座標endx、始点Y座標stry、及び終点Y座標endy、が入力される。
【0025】
傾き演算部12は、図2に示すように、差分演算器34、36、並びに傾き演算器38、レジスタ39、40を含んでいる。差分演算器34には、始点X座標strx、終点X座標endxが供給される。差分演算器36には、始点Y座標stry、終点Y座標endyが供給される。
【0026】
差分演算器34は、供給される始点X座標strx、終点X座標endxを基に差分(endx - strx)を演算することによりX方向の差分dxを算出し、算出したX方向の差分dxを傾き演算器38に供給する。
【0027】
差分演算器36は、供給される始点Y座標stry、終点Y座標endyを基に差分(endy - stry)を演算することによりY方向の差分dyを算出し、算出したY方向の差分dyを傾き演算器38に供給する。
【0028】
傾き演算器38は、時分割で2回に分けて設定線分の傾きと直交線分の傾きの演算を行なっており、最初に、供給されるX方向の差分dx及びY方向の差分dyを用いて、走査線1ラインに対するX座標の増分である傾きデータ(dx/dy)を算出し、算出した傾きデータを傾きデータslopeとして出力し、次に、-1/(dx/dy)の演算を行なうことにより傾きデータ(dx/dy)に対して直交する直交傾きデータを算出し、算出した直交傾きデータを傾きデータvslopeとして出力する。
【0029】
傾き演算器38の出力側にはレジスタ39、40が接続されており、傾きデータslopeはレジスタ39に記憶し、レジスタ40は傾きデータvslopeを記憶する。レジスタ39、40は記憶した傾きデータslope及び傾きデータvslopeを基点演算部14及びメモリ部18に出力する。
【0030】
ここで、図8に示すように、描画する線分の始点−終点を結ぶ直線を設定線分とし、設定線分と平行で始点から線幅分の位置にある画素を通る直線を平行線分とし、始点を通り設定線分と垂直に交わる直線を直交線分Xminとし、終点を通り設定線分と垂直に交わる直線を直交線分Xmaxとした場合、傾きデータslopeは、設定線分と平行線分の傾きを表わし、傾きデータvslopeは、直交線分Xminと直交線分Xmaxの傾きを表わしている。
【0031】
傾きデータslope及び傾きデータvslopeは、符号が“+”の場合、右肩下がりの線分であることを表し、符号が“−”の場合、左肩下がりの線分であることを表す。
【0032】
なお、本実施の形態に係る傾き演算器38は、差分dxが“0”の場合、線分が垂直線であり傾きデータslopeも“0”に設定する。同様に、差分dyが“0”の場合、線分が水平線であり、傾きデータslopeも“0”に設定する。直交演算部39は、設定線分が平行線、垂直線及び矩形描画のいずれかの場合、直交線分の傾きも設定線分の傾きと同様に“0”にする。
【0033】
図1に戻って、基点演算部14は、設定線分、平行線分、直交線分Xmin及び直交線分Xmaxが1ラインずつ走査を行なって1フレーム分の画像を描画する場合の最初に走査される描画ラインと交差する基点を算出する機能を有する。なお、以下、これらの基点を、描画する描画ラインの位置関係に応じて便宜上、始点、終点とも呼ぶ。
【0034】
基点演算部14には、始点X座標strx、終点X座標endx、線幅lwidth、傾きデータslope及び傾きデータvslopeが供給される。
【0035】
基点演算部14は、図3に示すように、基点演算器48、49、50、51を含んでいる。
【0036】
基点演算器48には、始点X座標strx、終点X座標endx及び傾きデータslopeが入力される。基点演算器49には、始点X座標strx、線幅lwidth及び基点演算器48の出力である設定線分の描画基点slbaseが入力される。基点演算器50には、始点X座標strx、終点X座標endx及び傾きデータvslopeが入力される。基点演算器51には、始点X座標strx、終点X座標endx及び傾きデータvslopeが入力される。
【0037】
基点演算器48は、設定線分が描画ラインと交差する位置を設定線分の描画基点slbaseとして求めており、供給される傾きデータslopeの符号が“+”の場合、始点X座標strxと終点X座標endxの小さい方の座標から傾きデータslopeの半分を引いた値を設定線分の描画基点slbaseに設定し、供給される傾きデータslopeの符号が“−”の場合、始点X座標strxと終点X座標endxの大きい方の座標から傾きデータslopeの半分を引いた値を設定線分の描画基点slbaseを設定し、設定した設定線分の描画基点slbaseを選択部16に出力する。
【0038】
基点演算器49は、平行線分が描画ラインと交差する位置を平行線分の描画基点plbaseとして求めており、傾きデータslopeにより示される傾きの絶対値が1より大きい場合(θ<45°)、設定線分の描画基点slbaseから傾きデータslope×(線幅-1)を引いた値を、平行線分の描画基点plbaseに設定し、傾きの絶対値が1以下の場合(θ=0、θ≧45°)、設定線分の描画基点slbaseに線幅-1を足した値を平行線分の描画基点plbaseに設定し、設定した平行線分の描画基点plbaseを選択部16に出力する。
【0039】
ここで、本実施の形態では、θ=45°を境として線の幅方向を変えており、傾きデータslopeにより示される傾きの絶対値が1より大きい場合、Y方向を幅方向とし、傾きデータslopeにより示される傾きの絶対値が1以下の場合、X方向を幅方向としている。このため、基点演算器49では、θ=45°を境として平行線分の描画基点の演算を変えている。
【0040】
基点演算器50は、直交線分Xminが描画ラインと交差する位置を直交線分Xminの描画基点vnlbaseとして求めており、傾きデータvslopeの符号が“+”の場合、始点X座標strxと終点X座標endxの小さい方の座標から傾きデータvslopeの半分を引いた値を直交線分Xminの描画基点vnlbaseに設定し、供給される傾きデータvslopeの符号が“−”の場合、始点X座標strxと終点X座標endxの大きい方の座標から傾きデータvslopeの半分を引いた値を直交線分Xminの描画基点vnlbaseに設定し、設定した直交線分Xminの描画基点vnlbaseを選択部16に出力する。
【0041】
基点演算器51では、直交線分Xmaxが描画ラインと交差する位置を直交線分Xmaxの描画基点vxlbaseとして求めており、供給される傾きデータvslopeの符号が“+”の場合、始点X座標strxと終点X座標endxの大きい方の座標から傾きデータvslopeの半分を引いた値を直交線分Xmaxの描画基点vxlbaseに設定し、供給される傾きデータvslopeの符号が“−”の場合、始点X座標strxと終点X座標endxの小さい方の座標から傾きデータvslopeの半分を引いた値を直交線分Xmaxの描画基点vxlbaseに設定し、設定した直交線分Xmaxの描画基点vxlbaseを選択部16に出力する。
【0042】
図1に戻って、選択部16は、描画時に使用する基点を選択する機能を有する。選択部16には、基点演算部14から出力された最初に走査される描画ラインにおける設定線分の描画基点slbase、平行線分の描画基点plbase、直交線分Xminの描画基点vnlbase及び直交線分Xmaxの描画基点vxlbaseが供給される。また、選択部16には、演算モードcmode並びに加算部22からの出力である次の描画ラインにおける設定線分の描画基点nxtslsp、平行線分の描画基点nxtplsp、直交線分Xminの描画基点nxtvnlsp、直交線分Xmaxの描画基点nxtvxlspが供給される。
【0043】
選択部16は、図4に示すように、選択回路60、61、62、63を含んでいる。選択回路60には、設定線分の描画基点slbaseと描画基点nxtslspが供給される。選択回路61には、平行線分の描画基点plbaseと描画基点nxtplspが供給される。選択回路62には、直交線分Xminの描画基点vnlbaseと描画基点nxtvnlspが供給される。選択回路63には、直交線分Xmaxの描画基点vxlbaseと描画基点nxtvxlspが供給される。さらに選択回路60、61、62、63には、傾き演算か描画演算かを示す演算モードcmodeが供給される。この演算モードcmodeには、傾き演算モードと描画演算モードがある。
【0044】
選択回路60は、供給される演算モードcmodeに応じて描画基点slbase又は描画基点nxtvxlspの一方を選択しており、演算モードcmodeが傾き演算モードの場合、描画基点slbaseを設定線分の始点slramwpとしてメモリ部18に出力し、演算モードcmodeが描画演算モードの場合、描画基点nxtvxlspを設定線分の始点slramwpとしてメモリ部18に出力する。
【0045】
選択回路61は、演算モードcmodeに応じて描画基点plbase又は描画基点nxtplspの一方を選択しており、演算モードcmodeが傾き演算モードの場合、描画基点plbaseを平行線分の始点plramwpとしてメモリ部18に出力し、演算モードcmodeが描画演算モードの場合、描画基点nxtplspを平行線分の始点plramwpとしてメモリ部18に出力する。
【0046】
選択回路62は、演算モードcmodeに応じて描画基点vnlbase又は描画基点nxtvnlspの一方を選択しており、演算モードcmodeが傾き演算モードの場合、描画基点vnlbaseを直交線分Xminの始点vnlramwpとしてメモリ部18に出力し、演算モードcmodeが描画演算モードの場合、描画基点nxtvnlspを直交線分Xminの始点vnlramwpとしてメモリ部18に出力する。
【0047】
選択回路63は、演算モードcmodeに応じて描画基点vxlbase又は描画基点nxtvxlspの一方を選択しており、演算モードcmodeが傾き演算モードの場合、描画基点vxlbaseを直交線分Xmaxの始点vxlramwpとしてメモリ部18に出力し、演算モードcmodeが描画演算モードの場合、描画基点nxtvxlspを直交線分Xmaxの始点vxlramwpとしてメモリ部18に出力する。
【0048】
また、図1に戻って、メモリ部18には、描画識別番号rndidがメモリ部18のアドレスとして供給される。本実施の形態に係る画像処理LSIは、複数本の描画線分の描画を行なうことが可能とされており、描画識別番号rndidは何番目の線分であるかを示す情報である。
【0049】
メモリ部18は、図5に示すように、6つのRAM(Random Access Memory)72、73、74、75、76、77を含んでいる。RAM 72には、傾きデータslopeが供給され、RAM 73には、傾きデータvslopeが供給されている。また、RAM 74には、設定線分の始点slramwpが供給され、RAM 75には、平行線分の始点plramwpが供給され、RAM 76には、直交線分Xminの始点vnlramwpが供給され、RAM 77には、直交線分Xmaxの始点vxlramwpが供給される。さらに、RAM 72、73、74、75、76、77には、それぞれ、描画識別番号rndidがアドレスとして供給される。
【0050】
RAM 72、73、74、75、76、77は、それぞれ供給された始点のデータを描画識別番号rndidで指定されたアドレスに記憶する。また、RAM 72、73、74、75、76、77は、描画識別番号rndidで指定されたアドレスに記憶されたデータをそれぞれ読み出して出力することが可能とされている。
【0051】
RAM 72、73、74、75、76、77は、描画識別番号rndidで指定されたアドレスからそれぞれデータcurslope、データcurvslope、データcurslsp、データcurplsp、データcurvnlsp及びデータcurvxlspを処理対象の描画ラインにおける始点として描画演算部20及び加算部22に出力する。
【0052】
図1に戻って、加算部22は、設定線分、平行線分、直交線分Xmin及び直交線分Xmaxがそれぞれ次の描画ラインと交差する基点を算出する機能を有する。加算部22は、図6に示すように、4つの加算器65、66、67、68を含んでいる。
【0053】
加算器65には、データcurslope及びデータcurslspが供給される。加算器66には、データcurslope及びデータcurplspが供給される。加算器67には、データcurvslope及びデータcurvnlspが供給される。加算器68には、データcurvslope及びデータcurvxlspが供給される。
【0054】
加算器65は、供給されるデータcurslopeとデータcurslspを加算し、加算したデータnxtslspを選択部16及び描画演算部20に出力する。加算器66は、供給されるデータcurslopeとデータcurplspを加算し、加算したデータnxtplspを選択部16及び描画演算部20に出力する。加算器67は、供給されるデータcurvslopeとデータcurvnlspを加算し、加算したデータnxtvnlspを選択部16及び描画演算部20に出力する。加算器68は、供給されるデータcurvslopeとデータcurvxlspを加算し、加算したデータnxtvxlspを選択部16及び描画演算部20に出力する。
【0055】
このデータnxtslsp、データnxtplsp、データnxtvnlsp及びデータnxtvxlspは、次ラインの描画ラインにおける設定線分、平行線分、直交線分Xmin及び直交線分Xmaxの始点であると共に、それぞれ、処理対象の描画ラインにおける設定線分、平行線分、直交線分Xmin及び直交線分Xmaxの終点でもある。
【0056】
描画演算部20には、処理対象の描画ラインにおける設定線分、平行線分、直交線分Xmin及び直交線分Xmaxそれぞれの始点(curslsp、curplsp、curvnlsp、curvxlsp)、次の描画ラインにおける設定線分、平行線分、直交線分Xmin及び直交線分Xmaxそれぞれの始点(nxtslsp、nxtplsp、nxtvnlsp、nxtvxlsp)、設定線分と平行線分の傾きデータcurslope、直交線分Xminと直交線分Xmaxの傾きデータcurvslope、線幅lwidth、始点Y座標stry、終点Y座標endyが入力される。
【0057】
本実施の形態に係る描画演算部20は、図7に示すように、8個の選択回路80〜87、12個の比較/選択器90〜101、2個の減算器110、111、及びアンチエイリアシング処理部120を含んでいる。
【0058】
設定線分の始点curslsp、nxtslspは選択回路80及び選択回路82に接続され、選択回路80は設定線分と平行線分の傾きデータcurslopeの符号ビット、選択回路82は傾きデータcurslopeの符号ビットの反転信号が接続されている。
【0059】
平行線分の始点curplsp、nxtplspは選択回路81及び選択回路83に接続され、選択回路81は設定線分と平行線分の傾きデータcurslopeの符号ビット、選択回路83は傾きデータcurslopeの符号ビットの反転信号が接続されている。
【0060】
直交線分Xminの始点curvnlsp、nxtvnlspは選択回路84及び選択回路86に接続され、選択回路84は直交線分Xminと直交線分Xmaxの傾きデータcurvslopeの符号ビット、選択回路86は傾きデータcurvslopeの符号ビットの反転信号が接続されている。
【0061】
直交線分Xmaxの始点curvxlsp、nxtvxlspは選択回路85及び選択回路87に接続され、選択回路85は直交線分Xminと直交線分Xmaxの傾きデータcurvslopeの符号ビット、選択回路87は傾きデータcurvslopeの符号ビットの反転信号が接続されている。
【0062】
比較/選択器90と比較/選択器92は比較/選択器94に接続され、比較/選択器91と比較/選択器93は比較/選択器95に接続され、比較/選択器96と比較/選択器98は比較/選択器100に接続され、比較/選択器97と比較/選択器99は比較/選択器101に接続されている。
【0063】
比較/選択器94と比較/選択器95は減算器110に接続され、比較/選択器100と比較/選択器101は減算器111に接続され、減算器110、減算器111はアンチエイリアシング処理部120へ接続されている。アンチエイリアシング処理部120へは、設定線分と平行線分の傾きデータcurslope、直交線分Xminと直交線分Xmaxの傾きデータcurvslope、線幅lwidth、始点Y座標stry、終点Y座標endyも接続され、rndstrp信号、rndsize信号、ratio信号をそれぞれ画像表示処理回路30に出力する。
【0064】
画像表示処理回路30は、入力されるrndstrp信号、rndsize信号、ratio信号に基づいて描画を行なう。
【0065】
次に本実施の形態に係る画像処理装置を適用した描画演算回路10の動作について簡単に記述する。
【0066】
ラインバッファモードにおける描画演算回路10は、演算を大きく2つに分ける点に特徴がある。一つの演算は、描画の前準備となる各コマンドの傾き/基点を求めてメモリ部18保存する傾き演算で、傾き演算モードにある。これは、たとえばLCD(Liquid Crystal Panel)パネルといった表示装置のV(垂直)ブランキング期間中に行うようにし、表示フレームが変わる毎に傾き演算を実行する。描画演算回路10におけるもう一つの演算は、実際に直線/矩形を描画するときの描画演算で描画演算モードにある。この描画演算では、あるラインに対する各コマンドの描画画素範囲を求め、後段の描画処理部に出力している。
【0067】
描画演算回路10には、1フレームの画像の描画を行なう場合、表示装置のV(垂直)ブランキング期間中に演算モードcmodeが傾き演算モードとされると共に、描画する線分の描画パラメータ及び当該線分の描画識別番号rndidが順次入力される。
【0068】
前準備となる傾き演算が完了すると、描画演算回路10は、演算モードcmodeが描画演算モードとされる。
【0069】
本実施の形態に係る描画演算回路10は、図9に示すように、演算モードが傾き演算モードか否かを判断する(ステップS10)。演算モードが傾き演算モードの場合(YES)、傾き演算処理に進む。また、演算モードが傾き演算モードでない場合(NO)、描画演算処理に進む。
【0070】
傾き演算処理(ステップS12)では、描画する線分の傾き/基点を求めて、メモリ部18に保存し、全線分演算が終了したか否かを判定(ステップS14)することにより、傾き演算処理を描画する線分数だけ繰り返す。
【0071】
この傾き演算処理では、傾き演算部12は、描画パラメータが入力される毎に線分の傾きを演算する。
【0072】
具体的には、差分演算器34において、入力する始点X座標strxと終点X座標endxからX座標の差分dxを求め、差分演算器36において、始点Y座標stryと終点Y座標endyからY座標の差分dyを求める。そして、傾き演算器38において、(dx/dy)を算出することにより設定線分と平行線分の傾きデータslopeを求め、直交演算部39において、-1/(dx/dy)の演算を行なうことにより直交線分Xminと直交線分Xmaxの傾きデータvslopeを求める。
【0073】
この傾きデータslope及び傾きデータvslopeは、1ラインに対するX座標の増分に対する傾きである。なお、X座標の差分dx“0”の場合は、線分が垂直線であり傾きデータslopeも“0”に設定する。同様に、設定線分dyが“0”の場合は、線分が水平線であり、傾きデータslopeも“0”に設定する。求められた傾きデータslopeは描画識別番号rndidをアドレスとしてRAM 72に書き込まれ、傾きデータvslopeは描画識別番号rndidをアドレスとしてRAM 73に書き込まれる。
【0074】
基点演算部14は、描画パラメータが入力される毎に、設定線分、平行線分、直交線分Xmin及び直交線分Xmaxがそれぞれ最初に走査される描画ラインと交差する基点を求め、求めた基点をメモリ部18に記憶させる。
【0075】
具体的には、基点演算器48において設定線分の描画基点slbaseを求め、基点演算器49において平行線分の描画基点plbaseを求め、基点演算器50において直交線分Xminの描画基点vnlbaseを求め、基点演算器51において直交線分Xmaxの描画基点vxlbaseを求める。基点演算部14は、求めた設定線分の描画基点slbase、平行線分の描画基点plbase、直交線分Xminの描画基点vnlbase及び直交線分Xmaxの描画基点vxlbaseを選択部16へ出力する。
【0076】
選択部16は、演算モードcmodeが傾き演算モードの場合、基点演算部14から出力された各データを各線分の始点としてメモリ部18に出力する。これにより、求められた設定線分の描画基点slbaseは描画識別番号rndidをアドレスとしてRAM 74に書き込まれ、平行線分の描画基点plbaseは描画識別番号rndidをアドレスとしてRAM 75に書き込まれ、直交線分Xminの描画基点vnlbaseは描画識別番号rndidをアドレスとしてRAM 76に書き込まれ、直交線分Xminの描画基点vnlbaseは描画識別番号rndidをアドレスとしてRAM 77に書き込まれる。
【0077】
描画演算回路10は、描画する線分の傾き/基点を求めてメモリ部18に保存する処理を描画する線分数だけ繰り返す。
【0078】
前準備となる傾き演算が完了すると、描画演算回路10は、演算モードcmodeが描画演算モードとされて描画演算処理を行なう。
【0079】
演算モードcmodeが描画演算モードとされると、描画演算回路10には、描画対象の描画ラインrndlineが1ラインずつ順に入力され、さらに各描画ラインrndlineが入力された状態で、各描画する線分の描画パラメータ及び当該線分の描画識別番号rndidが順次入力される。
【0080】
すなわち、描画するある描画ラインに対して各描画する線分の描画パラメータが順次入力され、さらに、次の描画ラインになると再度各描画する線分の描画パラメータが順次入力される。
【0081】
描画演算処理では、1ラインずつ順に各描画ラインに対して描画する線分の描画画素範囲を演算する描画演算を行い(図9のステップS20)、全ての線分の描画演算が終了したか否かを判定(ステップS22)することにより描画演算を描画する線分数だけ繰り返し、各描画ラインに対する描画演算処理が完了して最終ラインとなったか否かを判定(ステップS24)することにより、全ての描画ラインの描画を行なう。
【0082】
この描画演算処理では、RAM 72、73、74、75、76、77は、描画識別番号rndidで指定されたアドレスに記憶されたデータcurslope、データcurvslope、データcurslsp、データcurplsp、データcurvnlsp及びデータcurvxlspをそれぞれ読み出し、描画演算部20及び加算部22に出力する。
【0083】
加算部22は、RAM 72、73、74、75、76、77から供給されるデータcurslope、データcurvslope、データcurslsp、データcurplsp、データcurvnlsp及びデータcurvxlspに基づいて次の描画ラインにおける設定線分、平行線分、直交線分Xmin及び直交線分Xmaxそれぞれの始点(nxtslsp、nxtplsp、nxtvnlsp、nxtvxlsp)を算出し、選択部16及び描画演算部20に出力する。
【0084】
具体的には、加算器65は、供給されるデータcurslopeとデータcurslspを加算して次ラインの描画ラインでの設定線分の始点nxtslspを算出し、加算器66は、供給されるデータcurslopeとデータcurplspを加算して次ラインの描画ラインでの平行線分の始点nxtplspを算出し、加算器67は、供給されるデータcurvslopeとデータcurvnlspを加算して次ラインの描画ラインでの直交線分Xminの始点nxtvnlspを算出し、加算器68は、供給されるデータcurvslopeとデータcurvxlspを加算して次ラインの描画ラインでの直交線分Xmaxの始点nxtvxlspを算出する。
【0085】
算出された次の描画ラインにおける設定線分、平行線分、直交線分Xmin及び直交線分Xmaxそれぞれの始点(nxtslsp、nxtplsp、nxtvnlsp、nxtvxlsp)は、次の描画ラインの演算ために、RAM 74〜77に上書き保存される。
【0086】
描画演算部20には、処理対象とされた描画ライン上の4つの線分の描画始点curslsp、curplsp、curvnlsp、curvxlspと、次の描画ライン上の4つの線分の描画始点nxtslsp、nxtplsp、nxtvnlsp、nxtvxlspが演算され描画演算部20に入力される。
【0087】
図10には、処理対象の描画ラインにおける設定線分の始点curslsp、平行線分の始点curplsp、直交線分Xminの始点curvnlsp、直交線分Xmaxの始点curvxlspと、次の描画ラインにおける設定線分の始点nxtslsp、平行線分の始点nxtplsp、直交線分Xminの始点nxtvnlsp、直交線分Xmaxの始点nxtvxlspの位置関係の一例が示されている。
【0088】
描画演算部20では、アンチエイリアシング処理部120において、図11に示すように描画する直線の縁の画素をぼかすアンチエイリアシング処理を行っている。描画する直線の画素において、描画しようとする色と描かれてある色とをある比率で足し合わせることで実現できる。
【0089】
アンチエイリアシング処理を行う必要のない画素は、描画しようとする色を新しい画素の色情報とするだけでよい。本実施の形態に係るアンチエイリアシング処理部120は、アンチエイリアシング処理を行う画素に対しては、1画素ずつ比率を演算し、座標情報と共に出力、アンチエイリアシング処理を行わない画素に対しては、比率は100%とし、スタート画素の座標とアンチエイリアシング処理を行わない画素数を出力する。
【0090】
この描画演算部20の動作についてより詳細に説明をする。
【0091】
選択回路80では、設定線分の描画始点curslspとnxtslspの小さい方をcurslopeの符号により選択し比較/選択器90に渡す。curslopeの符号が“+(=0)”のときはcurslspが選択され、符号が“−(=1)”のときはnxtslspが選択される。選択回路82では、逆に設定線分の2つの描画始点の大きい方の情報を選択し、比較/選択器91に渡す。
【0092】
同様に他の3つの線分の各描画始点情報も、各線分の傾きの符号により選択し、比較/選択器92〜93、96〜99に渡す。選択回路80〜87からは以下の情報が出力される。
【0093】
選択回路80:設定線分の2描画ライン上の始点の小さい値
選択回路81:平行線分の2描画ライン上の始点の小さい値
選択回路82:設定線分の2描画ライン上の始点の大きい値
選択回路83:平行線分の2描画ライン上の始点の大きい値
選択回路84:直交線分Xminの2描画ライン上の始点の小さい値
選択回路85:直交線分Xmaxの2描画ライン上の始点の小さい値
選択回路86:直交線分Xminの2描画ライン上の始点の大きい値
選択回路87:直交線分Xmaxの2描画ライン上の始点の大きい値
【0094】
比較/選択回路90、92、97、99では、入力される2つの始点情報の小さい方を選択し比較/選択器94、101に、比較/選択器91、93、96、98では2つの始点情報の大きい方を選択し、比較/選択器95、100に渡す。各比較/選択器からは以下の情報が出力される。
【0095】
比較/選択器90:設定線分及び平行線分の各描画始点の小さい値
比較/選択器91:設定線分及び平行線分の各描画始点の大きい値
比較/選択器92:直交線分Xmin及び直交線分Xmaxの各描画始点の小さい値
比較/選択器93:直交線分Xmin及び直交線分Xmaxの各描画始点の大きい値
比較/選択器96:設定線分及び平行線分の各描画始点の小さい値
比較/選択器97:設定線分及び平行線分の各描画始点の大きい値
比較/選択器98:直交線分Xmin及び直交線分Xmaxの各描画始点の小さい値
比較/選択器99:直交線分Xmin及び直交線分Xmaxの各描画始点の大きい値
【0096】
比較/選択器94では、入力される2つの始点情報の大きい方を選択し、比較/選択器95では2つの始点情報の小さい方を選択して、減算器110及びアンチエイリアシング処理部120に渡す。また、比較/選択器100では、2つの始点情報の小さい方を選択し、比較/選択器101では2つの始点情報の大きい方を選択し、減算器111及びアンチエイリアシング処理部120に渡す。各比較/選択器及び減算器の出力には以下の情報が出力される。
【0097】
比較/選択器94:全描画始点
比較/選択器95:全描画終点
減算器110 :全描画サイズ
比較/選択器100:アンチエイリアシング処理を行わない描画始点
比較/選択器101:アンチエイリアシング処理を行わない描画終点
減算器111 :アンチエイリアシング処理を行わない描画サイズ
【0098】
アンチエイリアシング処理部120では、上記6つの情報と設定線分の傾きデータcurslope、直交線分の傾きデータcurvslopeを元に、アンチエイリアシング処理を行う画素/行わない画素を管理し、描画画素座標、描画サイズ、比率を演算し、順次出力していく。
【0099】
具体的に、演算ステータス管理回路121では、描画する画素が4つの線分のうちどの線分上の画素なのか、アンチエイリアシング処理を行わない画素なのかを管理する。描画画素カウンタ122は、描画した画素数をカウントする。比率演算器123はアンチエイリアシング処理を行う画素の座標と線分の傾きから比率を算出する。描画範囲処理器124では現描画ラインが描画範囲かどうかを判定し処理を行う。
【0100】
たとえば、図12に示す直線を描画するとき、設定線分と直交線分Xmax上の画素を描画するときをステータス1、直交線分Xminと平行線分上の画素を描画するときをステータス3、アンチエイリアシング処理を行わない画素を描画するときをステータス2とする。ステータス3で描画する画素が、直交線分Xmin上から平行線分上になったかは、直交線分の描画終点が平行線分の描画終点より小さくなったかで判定でき、ステータス1で描画する画素が、設定線分上から直交線分Xmax上になったかは、設定線分の描画始点が直交線分Xmaxの描画始点より大きくなったかで判断できる。また、描画完了は全描画始点が全描画終点より大きくなったかで判断できる。
【0101】
図13に1つの描画ラインの描画する画素を抜き出した図を示す。描画画素順は左から右へ描画していく。
【0102】
まず、描画画素カウンタ122に全描画始点座標をロードする。全描画始点とアンチエイリアシング処理を行わない描画始点が違うため、直交線分Xmin上の画素であるためステータス3にする。描画画素の座標=描画画素カウンタ値と直交線分の傾きを比率演算器123に渡し比率を計算する。計算された比率をratio、描画画素カウンタ値をrndstrpとして出力する。このときアンチエイリアシング処理を行う画素であるためrndsizeは“1”とする。
【0103】
次に、描画画素カウンタ+1の値とアンチエイリアシング処理を行わない描画始点が一致するため、ステータス2とし、描画画素カウンタは+1する。アンチエイリアシング処理を行わない画素は、比率は100%を示す値(例えば0)をratio、アンチエイリアシング処理を行わない描画サイズをrndsize、描画画素カウンタ値をrndstrpとして出力する。
【0104】
次に、ステータス2での描画が完了し、直交線分Xmax上の画素であるため、ステータスを1とし、描画画素カウンタは+アンチエイリアシング処理を行わない描画サイズとすることで描画画素カウンタは設定線分上の描画画素始点となる。描画画素カウンタ値と設定線分の傾きを比率演算器123に渡し比率を計算する。計算された比率をratio、描画画素カウンタ値をrndstrp、描画画素サイズrndsizeを“1”として出力する。
【0105】
描画画素カウンタ値を+1し、同様に比率を演算し出力していく。描画画素カウンタ+1が全描画終点になるまで繰り返し、1走査線上のライン描画を完了する。
【0106】
以上のステータス管理と描画画素カウンタ制御、アンチエイリアシング処理を、描画ライン毎に繰り返していくことでアンチエイリアシング処理された線幅を持った直線描画が可能となる。
【0107】
比率演算は、図14(A)(B)に示すように傾きが45°で演算式を分けている。描画する線分の設定線分をy=ax+bとすると、各画素の色の濃さはラインと重なる斜線部分の面積により決まる。設定線分が画素の中心を通る場合、斜線部分の面積の占める比率は50%となり、また、図14に示されるように設定線分が画素の中心から下または左にずれるほど薄くなり、設定線分が画素の中心から上または右にずれるほど濃くなっていくような演算をする。画素の中心を通り設定線分と平行な線をy=ax+c、画素の中心から設定線分までの距離をl、画素の中心から垂直線または水平線と設定線分が交わるまでの距離をl’とすると、
・傾き<45°の場合
l’=c-b=(Yi−aXi)−(Ys−aXs)
=(Yi−Ys)−a(Xi−Xs)
l=l’cosθ=cosθ×{(Yi−Ys)−a(Xi−Xs)}
・傾き≧45°の場合
l’=-c/a-(-b/a)=(Xi−Yi/a)−(Xs−Ys/a)
=(Xi−Xs)−1/a(Yi−Ys)
l=l’cosθ=cosθ×{(Xi−Xs)−1/a(Yi−Ys)}
となる。
【0108】
ここで、画素の中心からの距離を5ビット(=32段階)で表すものとした場合、画素の中心を設定線分が通る場合、比率50%(5ビットの中心が16)なるので、
・傾き<45°の場合
距離〔4:0〕=16±n×{(Yi−Ys)−a(Xi−Xs)}
・傾き≧45°の場合
距離〔4:0〕=16±n×{(Xi−Xs)−1/a(Yi−Ys)}
となる。
【0109】
cosθを0°〜45°の間で積分して、45°で割り平均化すると
n=32×(sin45°/(π/4)
=64/(π×√2)
=28.8
となり、小数点以下を繰り上げした場合、cosθ≒29となり、本実施の形態では比率を以下から求める。
・傾き<45°の場合
比率=16±29{(Yi−Ys)−a(Xi−Xs)}
・傾き≧45°の場合
比率=16±29{(Xi−Xs)−1/a(Yi−Ys)}
【0110】
上記演算は、傾きの乗算のみ乗算器を使用し、×29は簡単な乗算なため、シフト演算と加減算で実現できる。
【0111】
Xs、Ysは比率50%となる画素の座標ならどこでもよい。図14では、設定線分上及び直交線分Xmin上の画素の場合は始点の座標、直交線分Xmax上の画素の場合は終点の座標、平行線分上の画素の場合は始点から垂直に線幅分下の画素の座標となる。
【0112】
以上のように、本実施の形態によれば、描画パラメータに基づいて、画像を構成する複数の画素によって構成された各描画ライン毎の描画領域を導出するので、回路規模の増大及び描画速度の低下を抑えることができ、また、各描画ラインの画素毎に、画素領域に対する描画領域の占める比率及び描画領域の濃度に応じて画素の濃度を決定するので、ジャギーを目立たなくすることができる。
【0113】
また、本実施の形態によれば、設定線分、平行線分、直交線分Xmin(第1直交線分)、及び直交線分Xmax(第2直交線分)を求め、設定線分、平行線分、直交線分Xmin、及び直交線分Xmaxによって囲まれた矩形領域の何れかの辺が通過する画素についてのみ、アンチエイリアシング処理を行なうので、アンチエイリアシング処理による描画処理の低下がさらに抑制される。
【0114】
また、本実施の形態によれば、アンチエイリアシング処理を行う画素に対しては、描画直線の傾き45°を境に演算式を変えて、アンチエイリアシング描画を行うための画素色の比率演算を行い、1画素ずつの描画情報を後段回路に渡し、アンチエイリアシング処理を行わない画素は、従来と同様にまとめて描画情報を後段回路に渡すことにより、回路規模の増大、描画速度の低下を抑えて、アンチエイリアシング処理を行った直線描画が可能になるという効果が得られる。
【0115】
なお、上記実施の形態では、後段の画像保存用メモリをラインバッファで構成したときの例を説明したが、図15のように、メモリ部18の各記憶部をレジスタ140、141、142、143、144、145で構成し、描画演算部20に上記実施の形態の構成に更にラインカウンタ150を設けることで、後段の画像保存用メモリ32をフレームメモリで構成した場合にも適用できる。図16にフレームメモリモード時の描画フロー図の一例を示す。
【0116】
上記実施の形態では、図9に示すように、傾き演算と描画演算を別々に実施していたのに対し、図16に示すフレームメモリモードでは、傾き演算の後すぐに描画演算を行うことができる。このため、直線の傾き、始点情報を複数直線分保存しておく必要がなく、RAMをレジスタにすることができる。なお、フレームメモリモードでは表示装置とは関係なく動作させるため、走査線情報を内部にカウンタを設けておく必要がある。
【0117】
また、上記実施の形態では、所定幅の描画線分を描画する描画演算回路10に本発明を適用した場合について説明したが、本発明はこれに限定されるものではなく、例えば、円などの各種の図形の描画を行なう描画演算回路10に本発明を適用してもよい。また、本実施の形態では、描画範囲を示す範囲情報を、始点、終点、線幅としたが、本発明はこれに限定されるものではなく、例えば、円を描画する場合は中心点、半径等が範囲情報となる。
【0118】
また、上記実施の形態では、描画領域を高い濃度で描画する場合に描画領域の占める比率が高いほど画素の濃度を高くする場合について説明したが、例えば、描画領域を低い濃度で描画する場合に描画領域の占める比率が高いほど画素の濃度を低くするようにしてもよい。
【0119】
また、上記実施の形態では、45°で濃度を決定する演算式を変更する場合について説明したが、本発明はこれに限定されるものではなく、45°以外の異なる角度や、複数の角度で濃度を決定する演算式を変更するようにしてもよい。
【0120】
その他、上記実施の形態で説明した描画演算回路10の構成(図1〜7、図15参照。)、は一例であり、本発明の主旨を逸脱しない範囲内において適宜変更可能であることは言うまでもない。
【0121】
また、上記実施の形態で説明した演算の処理の流れ(図9参照。)も一例であり、本発明の主旨を逸脱しない範囲内において適宜変更可能であることは言うまでもない。
【図面の簡単な説明】
【0122】
【図1】実施の形態に係る描画演算回路の概略的な構成を示すブロック図である。
【図2】実施の形態に係る傾き演算部の詳細な構成を示すブロック図である。
【図3】実施の形態に係る基点演算部の詳細な構成を示すブロック図である。
【図4】実施の形態に係る選択部の詳細な構成を示すブロック図である。
【図5】実施の形態に係るメモリ部の詳細な構成を示すブロック図である。
【図6】実施の形態に係る加算部の詳細な構成を示すブロック図である。
【図7】実施の形態に係る描画演算部の詳細な構成を示すブロック図である。
【図8】実施の形態に係る描画する線分の一例を示す図である。
【図9】実施の形態に係る描画演算回路をラインバッファモードで動作させる場合の手順を示すフローチャートである。
【図10】実施の形態に係る各始点の位置の一例を示す図である。
【図11】実施の形態に係るアンチエイリアシング処理を行った一例を示す図である。
【図12】実施の形態に係るステータス判別の一例を示す図である。
【図13】実施の形態に係る描画ラインの描画する画素を抜き出した図である。
【図14】実施の形態に係る比率演算を説明するための説明図である。
【図15】他の実施の形態に係る描画演算回路の概略的な構成を示すブロック図である。
【図16】他の実施の形態に係る描画演算回路をフレームメモリモードで動作させる場合の手順を示すフローチャートである。
【図17】従来の描画演算を説明するための説明図である。
【図18】従来の描画演算による描画結果の一例を示す図である。
【符号の説明】
【0123】
10 描画演算回路
12 傾き演算部(導出手段)
14 基点演算部(導出手段)
16 選択部(導出手段)
18 メモリ部(導出手段)
20 描画演算部(決定手段)
22 加算部(導出手段)
30 画像表示処理回路

【特許請求の範囲】
【請求項1】
描画を行なう描画範囲を示す範囲情報に基づいて、画像を構成する複数の画素によって構成された各描画ライン毎の描画領域を導出する導出手段と、
各描画ラインの画素毎に、画素領域に対する前記描画領域の占める比率及び前記描画領域の濃度に応じて画素の濃度を決定する決定手段と、
を備えた描画処理装置。
【請求項2】
前記決定手段は、前記描画領域の濃度が高い場合には前記比率が高いほど濃度を高くし、前記描画領域の濃度が低い場合には前記比率が高いほど濃度を低くする
請求項1記載の描画処理装置。
【請求項3】
描画すべき画像が所定幅の描画線分の場合には、前記描画線分の外輪郭の一辺を表わす線分の始点、終点、当該一辺を基準とした線幅を前記範囲情報とし、
前記導出手段は、前記始点と前記終点を通る設定線分、当該設定線分と平行で前記始点から前記線幅に位置する平行線分、前記始点を通り前記設定線分と垂直に交わる第1直交線分、及び前記終点を通り前記設定線分と垂直に交わる第2直交線分を求め、各描画ライン毎に、前記設定線分、前記平行線分、前記第1直交線分及び前記第2直交線分によって囲まれた矩形領域を描画領域と導出する
請求項1又は請求項2記載の描画処理装置。
【請求項4】
前記決定手段は、前記矩形領域の何れかの辺が通過する画素についてのみ、画素領域に対する前記描画領域の占める比率及び前記描画領域の濃度に応じて画素の濃度を決定する演算を行なう
請求項3記載の描画処理装置。
【請求項5】
前記決定手段は、前記矩形領域の何れかの辺が通過する画素について、当該画素を通過する辺の前記描画ラインに対する角度に応じて当該画素の濃度を決定する演算式を変更する
請求項4記載の描画処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図9】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図8】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図18】
image rotate


【公開番号】特開2010−134654(P2010−134654A)
【公開日】平成22年6月17日(2010.6.17)
【国際特許分類】
【出願番号】特願2008−309037(P2008−309037)
【出願日】平成20年12月3日(2008.12.3)
【出願人】(308033711)OKIセミコンダクタ株式会社 (898)
【Fターム(参考)】