(57)【要約】【課題】回路規模の増大及び描画速度の低下を抑えつつ、ジャギーを目立たなくすることができる描画処理装置を提供する。【解決手段】描画パラメータに基づいて、画像を構成する複数の画素によって構成された各描画ライン毎の描画領域を導出し、各描画ラインの画素毎に、画素領域に対する描画領域の占める比率及び描画領域の濃度に応じて画素の濃度を決定する。【選択図】図１１
2010134654.tif 000002
【特許請求の範囲】
【請求項１】
描画を行なう描画範囲を示す範囲情報に基づいて、画像を構成する複数の画素によって構成された各描画ライン毎の描画領域を導出する導出手段と、
各描画ラインの画素毎に、画素領域に対する前記描画領域の占める比率及び前記描画領域の濃度に応じて画素の濃度を決定する決定手段と、
を備えた描画処理装置。
【請求項２】
前記決定手段は、前記描画領域の濃度が高い場合には前記比率が高いほど濃度を高くし、前記描画領域の濃度が低い場合には前記比率が高いほど濃度を低くする
請求項１記載の描画処理装置。
【請求項３】
描画すべき画像が所定幅の描画線分の場合には、前記描画線分の外輪郭の一辺を表わす線分の始点、終点、当該一辺を基準とした線幅を前記範囲情報とし、
前記導出手段は、前記始点と前記終点を通る設定線分、当該設定線分と平行で前記始点から前記線幅に位置する平行線分、前記始点を通り前記設定線分と垂直に交わる第１直交線分、及び前記終点を通り前記設定線分と垂直に交わる第２直交線分を求め、各描画ライン毎に、前記設定線分、前記平行線分、前記第１直交線分及び前記第２直交線分によって囲まれた矩形領域を描画領域と導出する
請求項１又は請求項２記載の描画処理装置。
【請求項４】
前記決定手段は、前記矩形領域の何れかの辺が通過する画素についてのみ、画素領域に対する前記描画領域の占める比率及び前記描画領域の濃度に応じて画素の濃度を決定する演算を行なう
請求項３記載の描画処理装置。
【請求項５】
前記決定手段は、前記矩形領域の何れかの辺が通過する画素について、当該画素を通過する辺の前記描画ラインに対する角度に応じて当該画素の濃度を決定する演算式を変更する
請求項４記載の描画処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画処理装置に関し、特に、画像処理LSI（Large-Scale Integration）等の描画演算処理を行なう描画処理装置に関するものである。
【背景技術】
【０００２】
一般に、画像処理LSIには、直線・矩形の描画を行なうための描画演算回路が含まれている。また、この画像処理LSIには、描画画像全体を記憶するフレームメモリを持たず、数ライン分の画像情報のみを記憶可能なラインバッファを有し、ラインバッファに記憶した情報を用いて１ラインずつ描画を行なうものがある。この種の画像処理LSIは、１フレーム分の描画画像全体を保存しておくことができないため、描画ライン毎に描画演算回路で描画線分の傾き演算をし、さらに、ラインに対する描画線分の描画画素範囲を演算して、描画処理回路に演算結果を出力する。
【０００３】
たとえば、描画すべき画像が所定幅の描画線分の場合、ユーザは、入力キーやポインティングデバイスを用いて画面に表示される操作画面に描画線分の始点、及び終点、並びに線幅などを指定する。画像処理LSIには、操作画面で指定された描画する線分の始点及び終点のX座標、Y座標や線分の線幅などが描画パラメータ（描画を行なう描画範囲を示す範囲情報）として入力される。
【０００４】
描画演算回路は、描画パラメータとして入力された描画する線分の始点、及び終点のX座標、Y座標から当該線分の傾きを求め、入力された描画する線分の線幅情報を基に描画範囲を演算し、この演算により各描画ラインにおける線分の描画画素の始点、及び終点を算出する。画像処理LSIでは、描画演算回路によって算出された線分の描画画素の始点、及び終点に基づいて後段の描画処理によって直線や矩形が描画を行なう。
【０００５】
図８に線幅を持った直線描画の例を示す。
【０００６】
画像処理LSIでは、たとえば、描画パラメータとして始点Ｘ座標strx、始点Ｙ座標stry、終点Ｘ座標endx、終点Ｙ座標endy、及び線幅lwidthが入力された場合、始点−終点を結ぶ直線を設定線分、設定線分と平行で始点から線幅分の位置にある画素を通る（図８はＹ座標方向に線幅を持つ例。設定線分の傾きによりＸ座標方向に線幅を持つ場合もある）直線を平行線分、始点を通り設定線分と垂直に交わる直線を直交線分Xmin、終点を通り設定線分と垂直に交わる直線を直交線分Xmaxとし、これらの４つの線分で囲まれる画素を、入力される色情報に書き換えることで線幅を持った直線の描画を行なう。
【０００７】
具体的には、図１７（Ａ）（Ｂ）に示すように、ある描画ライン上の、上記４つの線分それぞれの描画始点、描画終点を計算し、それらの大小比較を行うことで、描画範囲を決定していく。
【０００８】
画像処理LSIでは、描画ライン毎に、４つの線分のそれぞれの描画始点、描画終点を計算、大小比較を繰り返し行うことで、図１８に示すような描画を行っていた。
【０００９】
しかしながら、図１８に示されるように、直線の境界が階段状のギザギザ(ジャギー)になってしまうという問題点があった。
【００１０】
そこで、特許文献１には、ゲーム装置などのコンピュータグラフィックス技術を用いた画像処理装置において、アンチエイリアシング処理を行なうことにより、ジャギーを目立たなくする技術が記載されている。
【特許文献１】特開２００１−５９８９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１のような一般にコンピュータグラフィックスなどに用いられるアンチエイリアシング処理は、複雑な演算が必要なため、画像処理LSIにそのまま適用すると、回路規模が増大し、描画速度も低下してしまう、という問題点があった。
【００１２】
本発明は上記事実を鑑みてなされたものであり、回路規模の増大及び描画速度の低下を抑えつつ、ジャギーを目立たなくすることができる描画処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、請求項１記載の発明の描画処理装置は、描画を行なう描画範囲を示す範囲情報に基づいて、画像を構成する複数の画素によって構成された各描画ライン毎の描画領域を導出する導出手段と、各描画ラインの画素毎に、画素領域に対する前記描画領域の占める比率及び前記描画領域の濃度に応じて画素の濃度を決定する決定手段と、を備えている。
【００１４】
請求項１記載の発明は、描画を行なう描画範囲を示す範囲情報に基づいて、導出手段により、画像を構成する複数の画素によって構成された各描画ライン毎の描画領域が導出され、決定手段により、各描画ラインの画素毎に、画素領域に対する前記描画領域の占める比率及び前記描画領域の濃度に応じて画素の濃度が決定される。
【００１５】
このように請求項１記載の発明よれば、描画を行なう描画範囲を示す範囲情報に基づいて、画像を構成する複数の画素によって構成された各描画ライン毎の描画領域を導出するので、回路規模の増大及び描画速度の低下を抑えることができ、各描画ラインの画素毎に、画素領域に対する描画領域の占める比率及び描画領域の濃度に応じて画素の濃度を決定するので、ジャギーを目立たなくすることができる。
【００１６】
なお、本発明は、請求項２記載の発明のように、前記決定手段が、前記描画領域の濃度が高い場合には前記比率が高いほど濃度を高くし、前記描画領域の濃度が低い場合には前記比率が高いほど濃度を低くしてもよい。
【００１７】
また、本発明は、請求項３記載の発明のように、描画すべき画像が所定幅の描画線分の場合には、前記描画線分の外輪郭の一辺を表わす線分の始点、終点、当該一辺を基準とした線幅を前記範囲情報とし、前記導出手段が、前記始点と前記終点を通る設定線分、当該設定線分と平行で前記始点から前記線幅に位置する平行線分、前記始点を通り前記設定線分と垂直に交わる第１直交線分、及び前記終点を通り前記設定線分と垂直に交わる第２直交線分を求め、各描画ライン毎に、前記設定線分、前記平行線分、前記第１直交線分及び前記第２直交線分によって囲まれた矩形領域を描画領域と導出してもよい。
【００１８】
また、請求項３記載の発明は、請求項４記載の発明のように、前記決定手段が、前記矩形領域の何れかの辺が通過する画素についてのみ、画素領域に対する前記描画領域の占める比率及び前記描画領域の濃度に応じて画素の濃度を決定する演算を行なうことが好ましい。
【００１９】
さらに、請求項４記載の発明は、請求項５記載の発明のように、前記決定手段は、前記矩形領域の何れかの辺が通過する画素について、当該画素を通過する辺の前記描画ラインに対する角度に応じて当該画素の濃度を決定する演算式を変更することが好ましい。
【発明の効果】
【００２０】
以上説明したように、本発明によれば、回路規模の増大及び描画速度の低下を抑えつつ、ジャギーを目立たなくすることができる、という優れた効果を有する。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して、本発明の実施の形態について詳細に説明する。なお、以下では所定幅の描画線分を描画する画像処理LSIに本発明を適用した場合について説明する。
【００２２】
図１には、本実施の形態に係る画像処理LSIに含まれる描画演算回路10の各構成要素を示すブロック図が示されている。なお、本発明と直接関係のない部分について図示、及び説明を省略する。
【００２３】
描画演算回路10は、傾き演算部12、基点演算部14、選択部16、メモリ部18、描画演算部20、及び加算部22を含んでいる。
【００２４】
傾き演算部12は、描画する線分の傾きを算出する機能を有する。傾き演算部12には、たとえばポインティングデバイスを介して、描画する線分の描画パラメータとして始点Ｘ座標strx、終点Ｘ座標endx、始点Ｙ座標stry、及び終点Ｙ座標endy、が入力される。
【００２５】
傾き演算部12は、図２に示すように、差分演算器34、36、並びに傾き演算器38、レジスタ39、40を含んでいる。差分演算器34には、始点Ｘ座標strx、終点Ｘ座標endxが供給される。差分演算器36には、始点Ｙ座標stry、終点Ｙ座標endyが供給される。
【００２６】
差分演算器34は、供給される始点Ｘ座標strx、終点Ｘ座標endxを基に差分（endx - strx）を演算することによりＸ方向の差分dxを算出し、算出したＸ方向の差分dxを傾き演算器38に供給する。
【００２７】
差分演算器36は、供給される始点Ｙ座標stry、終点Ｙ座標endyを基に差分(endy - stry)を演算することによりＹ方向の差分dyを算出し、算出したY方向の差分dyを傾き演算器38に供給する。
【００２８】
傾き演算器38は、時分割で2回に分けて設定線分の傾きと直交線分の傾きの演算を行なっており、最初に、供給されるＸ方向の差分dx及びＹ方向の差分dyを用いて、走査線１ラインに対するＸ座標の増分である傾きデータ（dx/dy）を算出し、算出した傾きデータを傾きデータslopeとして出力し、次に、-１/（dx/dy）の演算を行なうことにより傾きデータ（dx/dy）に対して直交する直交傾きデータを算出し、算出した直交傾きデータを傾きデータvslopeとして出力する。
【００２９】
傾き演算器38の出力側にはレジスタ39、40が接続されており、傾きデータslopeはレジスタ39に記憶し、レジスタ40は傾きデータvslopeを記憶する。レジスタ39、40は記憶した傾きデータslope及び傾きデータvslopeを基点演算部14及びメモリ部18に出力する。
【００３０】
ここで、図８に示すように、描画する線分の始点−終点を結ぶ直線を設定線分とし、設定線分と平行で始点から線幅分の位置にある画素を通る直線を平行線分とし、始点を通り設定線分と垂直に交わる直線を直交線分Xminとし、終点を通り設定線分と垂直に交わる直線を直交線分Xmaxとした場合、傾きデータslopeは、設定線分と平行線分の傾きを表わし、傾きデータvslopeは、直交線分Xminと直交線分Xmaxの傾きを表わしている。
【００３１】
傾きデータslope及び傾きデータvslopeは、符号が“＋”の場合、右肩下がりの線分であることを表し、符号が“−”の場合、左肩下がりの線分であることを表す。
【００３２】
なお、本実施の形態に係る傾き演算器38は、差分dxが“0”の場合、線分が垂直線であり傾きデータslopeも“0”に設定する。同様に、差分dyが“0”の場合、線分が水平線であり、傾きデータslopeも“0”に設定する。直交演算部39は、設定線分が平行線、垂直線及び矩形描画のいずれかの場合、直交線分の傾きも設定線分の傾きと同様に“0”にする。
【００３３】
図１に戻って、基点演算部14は、設定線分、平行線分、直交線分Xmin及び直交線分Xmaxが１ラインずつ走査を行なって１フレーム分の画像を描画する場合の最初に走査される描画ラインと交差する基点を算出する機能を有する。なお、以下、これらの基点を、描画する描画ラインの位置関係に応じて便宜上、始点、終点とも呼ぶ。
【００３４】
基点演算部14には、始点Ｘ座標strx、終点Ｘ座標endx、線幅lwidth、傾きデータslope及び傾きデータvslopeが供給される。
【００３５】
基点演算部14は、図３に示すように、基点演算器48、49、50、51を含んでいる。
【００３６】
基点演算器48には、始点Ｘ座標strx、終点Ｘ座標endx及び傾きデータslopeが入力される。基点演算器49には、始点Ｘ座標strx、線幅lwidth及び基点演算器48の出力である設定線分の描画基点slbaseが入力される。基点演算器50には、始点Ｘ座標strx、終点Ｘ座標endx及び傾きデータvslopeが入力される。基点演算器51には、始点Ｘ座標strx、終点Ｘ座標endx及び傾きデータvslopeが入力される。
【００３７】
基点演算器48は、設定線分が描画ラインと交差する位置を設定線分の描画基点slbaseとして求めており、供給される傾きデータslopeの符号が“＋”の場合、始点Ｘ座標strxと終点Ｘ座標endxの小さい方の座標から傾きデータslopeの半分を引いた値を設定線分の描画基点slbaseに設定し、供給される傾きデータslopeの符号が“−”の場合、始点Ｘ座標strxと終点Ｘ座標endxの大きい方の座標から傾きデータslopeの半分を引いた値を設定線分の描画基点slbaseを設定し、設定した設定線分の描画基点slbaseを選択部16に出力する。
【００３８】
基点演算器49は、平行線分が描画ラインと交差する位置を平行線分の描画基点plbaseとして求めており、傾きデータslopeにより示される傾きの絶対値が１より大きい場合（θ＜45°）、設定線分の描画基点slbaseから傾きデータslope×（線幅-１）を引いた値を、平行線分の描画基点plbaseに設定し、傾きの絶対値が１以下の場合（θ＝0、θ≧45°）、設定線分の描画基点slbaseに線幅-１を足した値を平行線分の描画基点plbaseに設定し、設定した平行線分の描画基点plbaseを選択部16に出力する。
【００３９】
ここで、本実施の形態では、θ＝45°を境として線の幅方向を変えており、傾きデータslopeにより示される傾きの絶対値が１より大きい場合、Y方向を幅方向とし、傾きデータslopeにより示される傾きの絶対値が１以下の場合、X方向を幅方向としている。このため、基点演算器49では、θ＝45°を境として平行線分の描画基点の演算を変えている。
【００４０】
基点演算器50は、直交線分Xminが描画ラインと交差する位置を直交線分Xminの描画基点vnlbaseとして求めており、傾きデータvslopeの符号が“＋”の場合、始点Ｘ座標strxと終点Ｘ座標endxの小さい方の座標から傾きデータvslopeの半分を引いた値を直交線分Xminの描画基点vnlbaseに設定し、供給される傾きデータvslopeの符号が“−”の場合、始点Ｘ座標strxと終点Ｘ座標endxの大きい方の座標から傾きデータvslopeの半分を引いた値を直交線分Xminの描画基点vnlbaseに設定し、設定した直交線分Xminの描画基点vnlbaseを選択部16に出力する。
【００４１】
基点演算器51では、直交線分Xmaxが描画ラインと交差する位置を直交線分Xmaxの描画基点vxlbaseとして求めており、供給される傾きデータvslopeの符号が“＋”の場合、始点Ｘ座標strxと終点Ｘ座標endxの大きい方の座標から傾きデータvslopeの半分を引いた値を直交線分Xmaxの描画基点vxlbaseに設定し、供給される傾きデータvslopeの符号が“−”の場合、始点Ｘ座標strxと終点Ｘ座標endxの小さい方の座標から傾きデータvslopeの半分を引いた値を直交線分Xmaxの描画基点vxlbaseに設定し、設定した直交線分Xmaxの描画基点vxlbaseを選択部16に出力する。
【００４２】
図１に戻って、選択部16は、描画時に使用する基点を選択する機能を有する。選択部16には、基点演算部14から出力された最初に走査される描画ラインにおける設定線分の描画基点slbase、平行線分の描画基点plbase、直交線分Xminの描画基点vnlbase及び直交線分Xmaxの描画基点vxlbaseが供給される。また、選択部16には、演算モードcmode並びに加算部22からの出力である次の描画ラインにおける設定線分の描画基点nxtslsp、平行線分の描画基点nxtplsp、直交線分Xminの描画基点nxtvnlsp、直交線分Xmaxの描画基点nxtvxlspが供給される。
【００４３】
選択部16は、図４に示すように、選択回路60、61、62、63を含んでいる。選択回路60には、設定線分の描画基点slbaseと描画基点nxtslspが供給される。選択回路61には、平行線分の描画基点plbaseと描画基点nxtplspが供給される。選択回路62には、直交線分Xminの描画基点vnlbaseと描画基点nxtvnlspが供給される。選択回路63には、直交線分Xmaxの描画基点vxlbaseと描画基点nxtvxlspが供給される。さらに選択回路60、61、62、63には、傾き演算か描画演算かを示す演算モードcmodeが供給される。この演算モードcmodeには、傾き演算モードと描画演算モードがある。
【００４４】
選択回路60は、供給される演算モードcmodeに応じて描画基点slbase又は描画基点nxtvxlspの一方を選択しており、演算モードcmodeが傾き演算モードの場合、描画基点slbaseを設定線分の始点slramwpとしてメモリ部18に出力し、演算モードcmodeが描画演算モードの場合、描画基点nxtvxlspを設定線分の始点slramwpとしてメモリ部18に出力する。
【００４５】
選択回路61は、演算モードcmodeに応じて描画基点plbase又は描画基点nxtplspの一方を選択しており、演算モードcmodeが傾き演算モードの場合、描画基点plbaseを平行線分の始点plramwpとしてメモリ部18に出力し、演算モードcmodeが描画演算モードの場合、描画基点nxtplspを平行線分の始点plramwpとしてメモリ部18に出力する。
【００４６】
選択回路62は、演算モードcmodeに応じて描画基点vnlbase又は描画基点nxtvnlspの一方を選択しており、演算モードcmodeが傾き演算モードの場合、描画基点vnlbaseを直交線分Xminの始点vnlramwpとしてメモリ部18に出力し、演算モードcmodeが描画演算モードの場合、描画基点nxtvnlspを直交線分Xminの始点vnlramwpとしてメモリ部18に出力する。
【００４７】
選択回路63は、演算モードcmodeに応じて描画基点vxlbase又は描画基点nxtvxlspの一方を選択しており、演算モードcmodeが傾き演算モードの場合、描画基点vxlbaseを直交線分Xmaxの始点vxlramwpとしてメモリ部18に出力し、演算モードcmodeが描画演算モードの場合、描画基点nxtvxlspを直交線分Xmaxの始点vxlramwpとしてメモリ部18に出力する。
【００４８】
また、図１に戻って、メモリ部18には、描画識別番号rndidがメモリ部18のアドレスとして供給される。本実施の形態に係る画像処理LSIは、複数本の描画線分の描画を行なうことが可能とされており、描画識別番号rndidは何番目の線分であるかを示す情報である。
【００４９】
メモリ部18は、図５に示すように、６つの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がアドレスとして供給される。
【００５０】
RAM 72、73、74、75、76、77は、それぞれ供給された始点のデータを描画識別番号rndidで指定されたアドレスに記憶する。また、RAM 72、73、74、75、76、77は、描画識別番号rndidで指定されたアドレスに記憶されたデータをそれぞれ読み出して出力することが可能とされている。
【００５１】
RAM 72、73、74、75、76、77は、描画識別番号rndidで指定されたアドレスからそれぞれデータcurslope、データcurvslope、データcurslsp、データcurplsp、データcurvnlsp及びデータcurvxlspを処理対象の描画ラインにおける始点として描画演算部20及び加算部22に出力する。
【００５２】
図１に戻って、加算部22は、設定線分、平行線分、直交線分Xmin及び直交線分Xmaxがそれぞれ次の描画ラインと交差する基点を算出する機能を有する。加算部22は、図６に示すように、４つの加算器65、66、67、68を含んでいる。
【００５３】
加算器65には、データcurslope及びデータcurslspが供給される。加算器66には、データcurslope及びデータcurplspが供給される。加算器67には、データcurvslope及びデータcurvnlspが供給される。加算器68には、データcurvslope及びデータcurvxlspが供給される。
【００５４】
加算器65は、供給されるデータcurslopeとデータcurslspを加算し、加算したデータnxtslspを選択部16及び描画演算部20に出力する。加算器66は、供給されるデータcurslopeとデータcurplspを加算し、加算したデータnxtplspを選択部16及び描画演算部20に出力する。加算器67は、供給されるデータcurvslopeとデータcurvnlspを加算し、加算したデータnxtvnlspを選択部16及び描画演算部20に出力する。加算器68は、供給されるデータcurvslopeとデータcurvxlspを加算し、加算したデータnxtvxlspを選択部16及び描画演算部20に出力する。
【００５５】
このデータnxtslsp、データnxtplsp、データnxtvnlsp及びデータnxtvxlspは、次ラインの描画ラインにおける設定線分、平行線分、直交線分Xmin及び直交線分Xmaxの始点であると共に、それぞれ、処理対象の描画ラインにおける設定線分、平行線分、直交線分Xmin及び直交線分Xmaxの終点でもある。
【００５６】
描画演算部20には、処理対象の描画ラインにおける設定線分、平行線分、直交線分Xmin及び直交線分Xmaxそれぞれの始点(curslsp、curplsp、curvnlsp、curvxlsp)、次の描画ラインにおける設定線分、平行線分、直交線分Xmin及び直交線分Xmaxそれぞれの始点(nxtslsp、nxtplsp、nxtvnlsp、nxtvxlsp)、設定線分と平行線分の傾きデータcurslope、直交線分Xminと直交線分Xmaxの傾きデータcurvslope、線幅lwidth、始点Ｙ座標stry、終点Ｙ座標endyが入力される。
【００５７】
本実施の形態に係る描画演算部20は、図７に示すように、８個の選択回路80〜87、１２個の比較/選択器90〜101、２個の減算器110、111、及びアンチエイリアシング処理部120を含んでいる。
【００５８】
設定線分の始点curslsp、nxtslspは選択回路80及び選択回路82に接続され、選択回路80は設定線分と平行線分の傾きデータcurslopeの符号ビット、選択回路82は傾きデータcurslopeの符号ビットの反転信号が接続されている。
【００５９】
平行線分の始点curplsp、nxtplspは選択回路81及び選択回路83に接続され、選択回路81は設定線分と平行線分の傾きデータcurslopeの符号ビット、選択回路83は傾きデータcurslopeの符号ビットの反転信号が接続されている。
【００６０】
直交線分Xminの始点curvnlsp、nxtvnlspは選択回路84及び選択回路86に接続され、選択回路84は直交線分Xminと直交線分Xmaxの傾きデータcurvslopeの符号ビット、選択回路86は傾きデータcurvslopeの符号ビットの反転信号が接続されている。
【００６１】
直交線分Xmaxの始点curvxlsp、nxtvxlspは選択回路85及び選択回路87に接続され、選択回路85は直交線分Xminと直交線分Xmaxの傾きデータcurvslopeの符号ビット、選択回路87は傾きデータcurvslopeの符号ビットの反転信号が接続されている。
【００６２】
比較/選択器90と比較/選択器92は比較/選択器94に接続され、比較/選択器91と比較/選択器93は比較/選択器95に接続され、比較/選択器96と比較/選択器98は比較/選択器100に接続され、比較/選択器97と比較/選択器99は比較/選択器101に接続されている。
【００６３】
比較/選択器94と比較/選択器95は減算器110に接続され、比較/選択器100と比較/選択器101は減算器111に接続され、減算器110、減算器111はアンチエイリアシング処理部120へ接続されている。アンチエイリアシング処理部120へは、設定線分と平行線分の傾きデータcurslope、直交線分Xminと直交線分Xmaxの傾きデータcurvslope、線幅lwidth、始点Ｙ座標stry、終点Ｙ座標endyも接続され、rndstrp信号、rndsize信号、ratio信号をそれぞれ画像表示処理回路30に出力する。
【００６４】
画像表示処理回路30は、入力されるrndstrp信号、rndsize信号、ratio信号に基づいて描画を行なう。
【００６５】
次に本実施の形態に係る画像処理装置を適用した描画演算回路10の動作について簡単に記述する。
【００６６】
ラインバッファモードにおける描画演算回路10は、演算を大きく２つに分ける点に特徴がある。一つの演算は、描画の前準備となる各コマンドの傾き/基点を求めてメモリ部18保存する傾き演算で、傾き演算モードにある。これは、たとえばLCD（Liquid Crystal Panel）パネルといった表示装置のＶ（垂直）ブランキング期間中に行うようにし、表示フレームが変わる毎に傾き演算を実行する。描画演算回路10におけるもう一つの演算は、実際に直線/矩形を描画するときの描画演算で描画演算モードにある。この描画演算では、あるラインに対する各コマンドの描画画素範囲を求め、後段の描画処理部に出力している。
【００６７】
描画演算回路10には、１フレームの画像の描画を行なう場合、表示装置のＶ（垂直）ブランキング期間中に演算モードcmodeが傾き演算モードとされると共に、描画する線分の描画パラメータ及び当該線分の描画識別番号rndidが順次入力される。
【００６８】
前準備となる傾き演算が完了すると、描画演算回路10は、演算モードcmodeが描画演算モードとされる。
【００６９】
本実施の形態に係る描画演算回路10は、図９に示すように、演算モードが傾き演算モードか否かを判断する（ステップS10）。演算モードが傾き演算モードの場合（YES）、傾き演算処理に進む。また、演算モードが傾き演算モードでない場合（NO）、描画演算処理に進む。
【００７０】
傾き演算処理（ステップS12）では、描画する線分の傾き/基点を求めて、メモリ部18に保存し、全線分演算が終了したか否かを判定（ステップS14）することにより、傾き演算処理を描画する線分数だけ繰り返す。
【００７１】
この傾き演算処理では、傾き演算部12は、描画パラメータが入力される毎に線分の傾きを演算する。
【００７２】
具体的には、差分演算器34において、入力する始点Ｘ座標strxと終点Ｘ座標endxからＸ座標の差分dxを求め、差分演算器36において、始点Ｙ座標stryと終点Ｙ座標endyからＹ座標の差分dyを求める。そして、傾き演算器38において、（dx/dy）を算出することにより設定線分と平行線分の傾きデータslopeを求め、直交演算部39において、-１/（dx/dy）の演算を行なうことにより直交線分Xminと直交線分Xmaxの傾きデータvslopeを求める。
【００７３】
この傾きデータslope及び傾きデータvslopeは、１ラインに対するＸ座標の増分に対する傾きである。なお、Ｘ座標の差分dx“0”の場合は、線分が垂直線であり傾きデータslopeも“0”に設定する。同様に、設定線分dyが“0”の場合は、線分が水平線であり、傾きデータslopeも“0”に設定する。求められた傾きデータslopeは描画識別番号rndidをアドレスとしてRAM 72に書き込まれ、傾きデータvslopeは描画識別番号rndidをアドレスとしてRAM 73に書き込まれる。
【００７４】
基点演算部14は、描画パラメータが入力される毎に、設定線分、平行線分、直交線分Xmin及び直交線分Xmaxがそれぞれ最初に走査される描画ラインと交差する基点を求め、求めた基点をメモリ部18に記憶させる。
【００７５】
具体的には、基点演算器48において設定線分の描画基点slbaseを求め、基点演算器49において平行線分の描画基点plbaseを求め、基点演算器50において直交線分Xminの描画基点vnlbaseを求め、基点演算器51において直交線分Xmaxの描画基点vxlbaseを求める。基点演算部14は、求めた設定線分の描画基点slbase、平行線分の描画基点plbase、直交線分Xminの描画基点vnlbase及び直交線分Xmaxの描画基点vxlbaseを選択部16へ出力する。
【００７６】
選択部16は、演算モードcmodeが傾き演算モードの場合、基点演算部14から出力された各データを各線分の始点としてメモリ部18に出力する。これにより、求められた設定線分の描画基点slbaseは描画識別番号rndidをアドレスとしてRAM 74に書き込まれ、平行線分の描画基点plbaseは描画識別番号rndidをアドレスとしてRAM 75に書き込まれ、直交線分Xminの描画基点vnlbaseは描画識別番号rndidをアドレスとしてRAM 76に書き込まれ、直交線分Xminの描画基点vnlbaseは描画識別番号rndidをアドレスとしてRAM 77に書き込まれる。
【００７７】
描画演算回路10は、描画する線分の傾き/基点を求めてメモリ部18に保存する処理を描画する線分数だけ繰り返す。
【００７８】
前準備となる傾き演算が完了すると、描画演算回路10は、演算モードcmodeが描画演算モードとされて描画演算処理を行なう。
【００７９】
演算モードcmodeが描画演算モードとされると、描画演算回路10には、描画対象の描画ラインrndlineが１ラインずつ順に入力され、さらに各描画ラインrndlineが入力された状態で、各描画する線分の描画パラメータ及び当該線分の描画識別番号rndidが順次入力される。
【００８０】
すなわち、描画するある描画ラインに対して各描画する線分の描画パラメータが順次入力され、さらに、次の描画ラインになると再度各描画する線分の描画パラメータが順次入力される。
【００８１】
描画演算処理では、１ラインずつ順に各描画ラインに対して描画する線分の描画画素範囲を演算する描画演算を行い（図９のステップS20）、全ての線分の描画演算が終了したか否かを判定（ステップS22）することにより描画演算を描画する線分数だけ繰り返し、各描画ラインに対する描画演算処理が完了して最終ラインとなったか否かを判定（ステップS24）することにより、全ての描画ラインの描画を行なう。
【００８２】
この描画演算処理では、RAM 72、73、74、75、76、77は、描画識別番号rndidで指定されたアドレスに記憶されたデータcurslope、データcurvslope、データcurslsp、データcurplsp、データcurvnlsp及びデータcurvxlspをそれぞれ読み出し、描画演算部20及び加算部22に出力する。
【００８３】
加算部22は、RAM 72、73、74、75、76、77から供給されるデータcurslope、データcurvslope、データcurslsp、データcurplsp、データcurvnlsp及びデータcurvxlspに基づいて次の描画ラインにおける設定線分、平行線分、直交線分Xmin及び直交線分Xmaxそれぞれの始点(nxtslsp、nxtplsp、nxtvnlsp、nxtvxlsp)を算出し、選択部16及び描画演算部20に出力する。
【００８４】
具体的には、加算器65は、供給されるデータcurslopeとデータcurslspを加算して次ラインの描画ラインでの設定線分の始点nxtslspを算出し、加算器66は、供給されるデータcurslopeとデータcurplspを加算して次ラインの描画ラインでの平行線分の始点nxtplspを算出し、加算器67は、供給されるデータcurvslopeとデータcurvnlspを加算して次ラインの描画ラインでの直交線分Xminの始点nxtvnlspを算出し、加算器68は、供給されるデータcurvslopeとデータcurvxlspを加算して次ラインの描画ラインでの直交線分Xmaxの始点nxtvxlspを算出する。
【００８５】
算出された次の描画ラインにおける設定線分、平行線分、直交線分Xmin及び直交線分Xmaxそれぞれの始点(nxtslsp、nxtplsp、nxtvnlsp、nxtvxlsp)は、次の描画ラインの演算ために、RAM 74〜77に上書き保存される。
【００８６】
描画演算部20には、処理対象とされた描画ライン上の４つの線分の描画始点curslsp、curplsp、curvnlsp、curvxlspと、次の描画ライン上の４つの線分の描画始点nxtslsp、nxtplsp、nxtvnlsp、nxtvxlspが演算され描画演算部20に入力される。
【００８７】
図１０には、処理対象の描画ラインにおける設定線分の始点curslsp、平行線分の始点curplsp、直交線分Xminの始点curvnlsp、直交線分Xmaxの始点curvxlspと、次の描画ラインにおける設定線分の始点nxtslsp、平行線分の始点nxtplsp、直交線分Xminの始点nxtvnlsp、直交線分Xmaxの始点nxtvxlspの位置関係の一例が示されている。
【００８８】
描画演算部20では、アンチエイリアシング処理部120において、図１１に示すように描画する直線の縁の画素をぼかすアンチエイリアシング処理を行っている。描画する直線の画素において、描画しようとする色と描かれてある色とをある比率で足し合わせることで実現できる。
【００８９】
アンチエイリアシング処理を行う必要のない画素は、描画しようとする色を新しい画素の色情報とするだけでよい。本実施の形態に係るアンチエイリアシング処理部120は、アンチエイリアシング処理を行う画素に対しては、１画素ずつ比率を演算し、座標情報と共に出力、アンチエイリアシング処理を行わない画素に対しては、比率は100％とし、スタート画素の座標とアンチエイリアシング処理を行わない画素数を出力する。
【００９０】
この描画演算部20の動作についてより詳細に説明をする。
【００９１】
選択回路80では、設定線分の描画始点curslspとnxtslspの小さい方をcurslopeの符号により選択し比較/選択器90に渡す。curslopeの符号が“＋(=0)”のときはcurslspが選択され、符号が“−(=1)”のときはnxtslspが選択される。選択回路82では、逆に設定線分の２つの描画始点の大きい方の情報を選択し、比較/選択器91に渡す。
【００９２】
同様に他の３つの線分の各描画始点情報も、各線分の傾きの符号により選択し、比較/選択器92〜93、96〜99に渡す。選択回路80〜87からは以下の情報が出力される。
【００９３】
選択回路80：設定線分の２描画ライン上の始点の小さい値
選択回路81：平行線分の２描画ライン上の始点の小さい値
選択回路82：設定線分の２描画ライン上の始点の大きい値
選択回路83：平行線分の２描画ライン上の始点の大きい値
選択回路84：直交線分Xminの２描画ライン上の始点の小さい値
選択回路85：直交線分Xmaxの２描画ライン上の始点の小さい値
選択回路86：直交線分Xminの２描画ライン上の始点の大きい値
選択回路87：直交線分Xmaxの２描画ライン上の始点の大きい値
【００９４】
比較/選択回路90、92、97、99では、入力される２つの始点情報の小さい方を選択し比較/選択器94、101に、比較/選択器91、93、96、98では２つの始点情報の大きい方を選択し、比較/選択器95、100に渡す。各比較/選択器からは以下の情報が出力される。
【００９５】
比較/選択器90：設定線分及び平行線分の各描画始点の小さい値
比較/選択器91：設定線分及び平行線分の各描画始点の大きい値
比較/選択器92：直交線分Xmin及び直交線分Xmaxの各描画始点の小さい値
比較/選択器93：直交線分Xmin及び直交線分Xmaxの各描画始点の大きい値
比較/選択器96：設定線分及び平行線分の各描画始点の小さい値
比較/選択器97：設定線分及び平行線分の各描画始点の大きい値
比較/選択器98：直交線分Xmin及び直交線分Xmaxの各描画始点の小さい値
比較/選択器99：直交線分Xmin及び直交線分Xmaxの各描画始点の大きい値
【００９６】
比較/選択器94では、入力される２つの始点情報の大きい方を選択し、比較/選択器95では２つの始点情報の小さい方を選択して、減算器110及びアンチエイリアシング処理部120に渡す。また、比較/選択器100では、２つの始点情報の小さい方を選択し、比較/選択器101では２つの始点情報の大きい方を選択し、減算器111及びアンチエイリアシング処理部120に渡す。各比較/選択器及び減算器の出力には以下の情報が出力される。
【００９７】
比較/選択器94：全描画始点
比較/選択器95：全描画終点
減算器110     ：全描画サイズ
比較/選択器100：アンチエイリアシング処理を行わない描画始点
比較/選択器101：アンチエイリアシング処理を行わない描画終点
減算器111     ：アンチエイリアシング処理を行わない描画サイズ
【００９８】
アンチエイリアシング処理部120では、上記６つの情報と設定線分の傾きデータcurslope、直交線分の傾きデータcurvslopeを元に、アンチエイリアシング処理を行う画素/行わない画素を管理し、描画画素座標、描画サイズ、比率を演算し、順次出力していく。
【００９９】
具体的に、演算ステータス管理回路121では、描画する画素が４つの線分のうちどの線分上の画素なのか、アンチエイリアシング処理を行わない画素なのかを管理する。描画画素カウンタ122は、描画した画素数をカウントする。比率演算器123はアンチエイリアシング処理を行う画素の座標と線分の傾きから比率を算出する。描画範囲処理器124では現描画ラインが描画範囲かどうかを判定し処理を行う。
【０１００】
たとえば、図１２に示す直線を描画するとき、設定線分と直交線分Xmax上の画素を描画するときをステータス１、直交線分Xminと平行線分上の画素を描画するときをステータス３、アンチエイリアシング処理を行わない画素を描画するときをステータス２とする。ステータス３で描画する画素が、直交線分Xmin上から平行線分上になったかは、直交線分の描画終点が平行線分の描画終点より小さくなったかで判定でき、ステータス１で描画する画素が、設定線分上から直交線分Xmax上になったかは、設定線分の描画始点が直交線分Xmaxの描画始点より大きくなったかで判断できる。また、描画完了は全描画始点が全描画終点より大きくなったかで判断できる。
【０１０１】
図１３に１つの描画ラインの描画する画素を抜き出した図を示す。描画画素順は左から右へ描画していく。
【０１０２】
まず、描画画素カウンタ122に全描画始点座標をロードする。全描画始点とアンチエイリアシング処理を行わない描画始点が違うため、直交線分Xmin上の画素であるためステータス３にする。描画画素の座標＝描画画素カウンタ値と直交線分の傾きを比率演算器123に渡し比率を計算する。計算された比率をratio、描画画素カウンタ値をrndstrpとして出力する。このときアンチエイリアシング処理を行う画素であるためrndsizeは“１”とする。
【０１０３】
次に、描画画素カウンタ＋１の値とアンチエイリアシング処理を行わない描画始点が一致するため、ステータス２とし、描画画素カウンタは＋１する。アンチエイリアシング処理を行わない画素は、比率は100％を示す値(例えば０)をratio、アンチエイリアシング処理を行わない描画サイズをrndsize、描画画素カウンタ値をrndstrpとして出力する。
【０１０４】
次に、ステータス２での描画が完了し、直交線分Xmax上の画素であるため、ステータスを１とし、描画画素カウンタは＋アンチエイリアシング処理を行わない描画サイズとすることで描画画素カウンタは設定線分上の描画画素始点となる。描画画素カウンタ値と設定線分の傾きを比率演算器123に渡し比率を計算する。計算された比率をratio、描画画素カウンタ値をrndstrp、描画画素サイズrndsizeを“１”として出力する。
【０１０５】
描画画素カウンタ値を＋１し、同様に比率を演算し出力していく。描画画素カウンタ＋１が全描画終点になるまで繰り返し、１走査線上のライン描画を完了する。
【０１０６】
以上のステータス管理と描画画素カウンタ制御、アンチエイリアシング処理を、描画ライン毎に繰り返していくことでアンチエイリアシング処理された線幅を持った直線描画が可能となる。
【０１０７】
比率演算は、図１４（Ａ）（Ｂ）に示すように傾きが４５°で演算式を分けている。描画する線分の設定線分をｙ=ａｘ＋ｂとすると、各画素の色の濃さはラインと重なる斜線部分の面積により決まる。設定線分が画素の中心を通る場合、斜線部分の面積の占める比率は50％となり、また、図１４に示されるように設定線分が画素の中心から下または左にずれるほど薄くなり、設定線分が画素の中心から上または右にずれるほど濃くなっていくような演算をする。画素の中心を通り設定線分と平行な線をｙ=ａｘ＋ｃ、画素の中心から設定線分までの距離をl、画素の中心から垂直線または水平線と設定線分が交わるまでの距離をl’とすると、
・傾き<45°の場合
l’＝ｃ-ｂ＝(Yi−ａXi)−(Ys−ａXs)
＝(Yi−Ys)−ａ(Xi−Xs)
l＝l’cosθ＝cosθ×{(Yi−Ys)−ａ(Xi−Xs)}
・傾き≧45°の場合
l’＝-ｃ/ａ-(-ｂ/ａ)＝(Xi−Yi/ａ)−(Xs−Ys/ａ)
＝(Xi−Xs)−1/ａ(Yi−Ys)
l＝l’cosθ＝cosθ×{(Xi−Xs)−1/ａ(Yi−Ys)}
となる。
【０１０８】
ここで、画素の中心からの距離を５ビット(=３２段階)で表すものとした場合、画素の中心を設定線分が通る場合、比率50％(5ビットの中心が16)なるので、
・傾き<45°の場合
距離〔4:0〕＝16±ｎ×{(Yi−Ys)−ａ(Xi−Xs)}
・傾き≧45°の場合
距離〔4:0〕＝16±ｎ×{(Xi−Xs)−1/ａ(Yi−Ys)}
となる。
【０１０９】
cosθを0°〜45°の間で積分して、45°で割り平均化すると
n=32×(sin45°/（π/4）
=64/（π×√2）
=28.8
となり、小数点以下を繰り上げした場合、cosθ≒29となり、本実施の形態では比率を以下から求める。
・傾き<45°の場合
比率＝16±29{(Yi−Ys)−ａ(Xi−Xs)}
・傾き≧45°の場合
比率＝16±29{(Xi−Xs)−1/ａ(Yi−Ys)}
【０１１０】
上記演算は、傾きの乗算のみ乗算器を使用し、×29は簡単な乗算なため、シフト演算と加減算で実現できる。
【０１１１】
Xs、Ysは比率50％となる画素の座標ならどこでもよい。図１４では、設定線分上及び直交線分Xmin上の画素の場合は始点の座標、直交線分Xmax上の画素の場合は終点の座標、平行線分上の画素の場合は始点から垂直に線幅分下の画素の座標となる。
【０１１２】
以上のように、本実施の形態によれば、描画パラメータに基づいて、画像を構成する複数の画素によって構成された各描画ライン毎の描画領域を導出するので、回路規模の増大及び描画速度の低下を抑えることができ、また、各描画ラインの画素毎に、画素領域に対する描画領域の占める比率及び描画領域の濃度に応じて画素の濃度を決定するので、ジャギーを目立たなくすることができる。
【０１１３】
また、本実施の形態によれば、設定線分、平行線分、直交線分Xmin（第１直交線分）、及び直交線分Xmax（第２直交線分）を求め、設定線分、平行線分、直交線分Xmin、及び直交線分Xmaxによって囲まれた矩形領域の何れかの辺が通過する画素についてのみ、アンチエイリアシング処理を行なうので、アンチエイリアシング処理による描画処理の低下がさらに抑制される。
【０１１４】
また、本実施の形態によれば、アンチエイリアシング処理を行う画素に対しては、描画直線の傾き45°を境に演算式を変えて、アンチエイリアシング描画を行うための画素色の比率演算を行い、１画素ずつの描画情報を後段回路に渡し、アンチエイリアシング処理を行わない画素は、従来と同様にまとめて描画情報を後段回路に渡すことにより、回路規模の増大、描画速度の低下を抑えて、アンチエイリアシング処理を行った直線描画が可能になるという効果が得られる。
【０１１５】
なお、上記実施の形態では、後段の画像保存用メモリをラインバッファで構成したときの例を説明したが、図１５のように、メモリ部18の各記憶部をレジスタ140、141、142、143、144、145で構成し、描画演算部20に上記実施の形態の構成に更にラインカウンタ150を設けることで、後段の画像保存用メモリ32をフレームメモリで構成した場合にも適用できる。図１６にフレームメモリモード時の描画フロー図の一例を示す。
【０１１６】
上記実施の形態では、図９に示すように、傾き演算と描画演算を別々に実施していたのに対し、図１６に示すフレームメモリモードでは、傾き演算の後すぐに描画演算を行うことができる。このため、直線の傾き、始点情報を複数直線分保存しておく必要がなく、RAMをレジスタにすることができる。なお、フレームメモリモードでは表示装置とは関係なく動作させるため、走査線情報を内部にカウンタを設けておく必要がある。
【０１１７】
また、上記実施の形態では、所定幅の描画線分を描画する描画演算回路10に本発明を適用した場合について説明したが、本発明はこれに限定されるものではなく、例えば、円などの各種の図形の描画を行なう描画演算回路10に本発明を適用してもよい。また、本実施の形態では、描画範囲を示す範囲情報を、始点、終点、線幅としたが、本発明はこれに限定されるものではなく、例えば、円を描画する場合は中心点、半径等が範囲情報となる。
【０１１８】
また、上記実施の形態では、描画領域を高い濃度で描画する場合に描画領域の占める比率が高いほど画素の濃度を高くする場合について説明したが、例えば、描画領域を低い濃度で描画する場合に描画領域の占める比率が高いほど画素の濃度を低くするようにしてもよい。
【０１１９】
また、上記実施の形態では、45°で濃度を決定する演算式を変更する場合について説明したが、本発明はこれに限定されるものではなく、45°以外の異なる角度や、複数の角度で濃度を決定する演算式を変更するようにしてもよい。
【０１２０】
その他、上記実施の形態で説明した描画演算回路10の構成（図１〜７、図１５参照。）、は一例であり、本発明の主旨を逸脱しない範囲内において適宜変更可能であることは言うまでもない。
【０１２１】
また、上記実施の形態で説明した演算の処理の流れ（図９参照。）も一例であり、本発明の主旨を逸脱しない範囲内において適宜変更可能であることは言うまでもない。
【図面の簡単な説明】
【０１２２】
【図１】実施の形態に係る描画演算回路の概略的な構成を示すブロック図である。
【図２】実施の形態に係る傾き演算部の詳細な構成を示すブロック図である。
【図３】実施の形態に係る基点演算部の詳細な構成を示すブロック図である。
【図４】実施の形態に係る選択部の詳細な構成を示すブロック図である。
【図５】実施の形態に係るメモリ部の詳細な構成を示すブロック図である。
【図６】実施の形態に係る加算部の詳細な構成を示すブロック図である。
【図７】実施の形態に係る描画演算部の詳細な構成を示すブロック図である。
【図８】実施の形態に係る描画する線分の一例を示す図である。
【図９】実施の形態に係る描画演算回路をラインバッファモードで動作させる場合の手順を示すフローチャートである。
【図１０】実施の形態に係る各始点の位置の一例を示す図である。
【図１１】実施の形態に係るアンチエイリアシング処理を行った一例を示す図である。
【図１２】実施の形態に係るステータス判別の一例を示す図である。
【図１３】実施の形態に係る描画ラインの描画する画素を抜き出した図である。
【図１４】実施の形態に係る比率演算を説明するための説明図である。
【図１５】他の実施の形態に係る描画演算回路の概略的な構成を示すブロック図である。
【図１６】他の実施の形態に係る描画演算回路をフレームメモリモードで動作させる場合の手順を示すフローチャートである。
【図１７】従来の描画演算を説明するための説明図である。
【図１８】従来の描画演算による描画結果の一例を示す図である。
【符号の説明】
【０１２３】
10  描画演算回路
12  傾き演算部（導出手段）
14  基点演算部（導出手段）
16  選択部（導出手段）
18  メモリ部（導出手段）
20  描画演算部（決定手段）
22  加算部（導出手段）
30  画像表示処理回路
【図１】
2010134654.tif 000003
【図２】
2010134654.tif 000004
【図３】
2010134654.tif 000005
【図４】
2010134654.tif 000006
【図５】
2010134654.tif 000007
【図６】
2010134654.tif 000008
【図７】
2010134654.tif 000009
【図９】
2010134654.tif 000010
【図１４】
2010134654.tif 000011
【図１５】
2010134654.tif 000012
【図１６】
2010134654.tif 000013
【図１７】
2010134654.tif 000014
【図８】
2010134654.tif 000015
【図１０】
2010134654.tif 000016
【図１１】
2010134654.tif 000017
【図１２】
2010134654.tif 000018
【図１３】
2010134654.tif 000019
【図１８】
2010134654.tif 000020