(57)【要約】【課題】回路規模を膨大にすることなく、高速に描画画素範囲を算出することができる画像処理装置を提供。【解決手段】描画演算装置10は、入力される描画位置や線幅を含む一連の描画命令に対して傾き演算モードで傾き算出部12で描画位置や線幅を基に、描画命令における傾き演算を実施して、傾きをメモリ18に保存し、基点算出部14で設定線分および平行線分の始点すべてを算出し、選択部16を介して、メモリ18に設定線分および平行線分の始点すべてを保存し、描画演算モードでメモリ18から保存したものを読み出し、加算部22で次ラインにおける設定線分および平行線分の始点を求め、描画算出部20で加算や大小比較により設定線分および平行線分それぞれの現ラインの始点、次ラインの始点から描画範囲を決定する。【選択図】図１
2010009271.tif 000002
【特許請求の範囲】
【請求項１】
直線や矩形といった図形要素を組み合わせて描画する図形の描画において、該図形要素に対して入力される描画位置や線幅を基に演算して、描画範囲に所望の図形要素の描画に用いる画素位置を決定する画像処理装置において、該装置は、
前記図形要素の傾きを算出する傾き算出手段と、
設定された始点と終点を結んで描画される線分を設定線分と呼び、前記線幅の設定で決まる設定線分に平行な線分を平行線分と呼び、前記設定線分と前記平行線分の始点を基点として算出する基点算出手段と、
傾きに関して演算する第１の演算モードと描画に関して演算する第２の演算モードを設け、供給される演算モードの指示に応じて前記基点算出手段からの基点と描画での次のラインにおける基点を選択する選択手段と、
第１の演算モードでは算出された傾き、前記設定線分および前記平行線分の始点すべてを格納し、第２の演算モードでは格納された設定線分の傾き、前記設定線分および前記平行線分の始点を、指示に応じて読み出す記憶手段と、
前記設定線分および前記平行線分それぞれの現ラインの始点、次ラインの始点から描画範囲を決定する描画算出手段と、
前記次ラインにおける前記設定線分および前記平行線分の始点を、前記現ラインの始点および前記設定線分の傾きを基に算出する加算手段とを含み、
該装置は、第１の演算モードと第２の演算モードに分けて、演算させ、
前記描画算出手段は、前記傾きの符号および供給される基点の大小関係を基に前記描画範囲における画素の始点と描画するサイズを求めることを特徴とする画像処理装置。
【請求項２】
請求項１に記載の装置において、前記基点算出手段は、前記設定線分と前記平行線分のそれぞれに直交する２つの線分を直交線分と呼び、該２つの直交線分それぞれの基点を演算する基点演算手段を配設し、
前記記憶手段は、前記設定線分に直交する線分の傾きを格納する第１格納手段と、
前記設定線分の一端側の座標と直交する線分の始点を格納する第２格納手段と、
前記設定線分の他端側の座標と直交する線分の始点を格納する第３格納手段とを含み、
前記加算手段は、前記現ラインの始点と前記直交線分の傾きを基に前記次ラインの始点を演算する演算手段を含み、
前記描画算出手段は、４本の線分における始点および終点の大小を比較して、前記描画範囲における画素の始点と描画するサイズを求めることを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置に関し、とくに、画像処理LSI（Large-Scale Integration）における直線描画および矩形描画処理回路に関するものである。
【背景技術】
【０００２】
一般に、画像処理LSI（Large-Scale Integration）には直線・矩形描画演算回路が含まれている。直線・矩形描画演算回路が、直線描画を処理する場合、ユーザはソフトウェアで作成された画面に表示される操作画面に入力キーやポインティングデバイスを用いて、描画する線分におけるX座標およびY座標で表わされる始点および終点、ならびに線幅などの描画パラメータを入力する。
【０００３】
直線・矩形描画演算回路は、入力された描画パラメータからX座標およびY座標それぞれの差分から求めた線分の傾き、線分の線幅情報を基に描画範囲を演算し、この演算により現在描画処理中のラインにおける線分の描画画素の始点および終点を算出する。直線・矩形描画演算回路は、算出した線分の描画画素の始点および終点を後段の描画処理によって直線や矩形を描画する。
【０００４】
直線描画における具体例を記述する。描画パラメータが、始点座標（sx, sy）、終点座標（ex, ey）および線幅１とする線分を描画する場合、X座標の差分dxとY座標の差分dyは、それぞれ、演算器での差分ex−sxとey−syにより求める。ここでの線分の傾きaは、供給されるX座標の差分dxとY座標の差分dyを基にdx/dyを求める。
【０００５】
設定線分Xは、ａ(sy-Y)+sxで表す。描画範囲は、演算器により処理描画ラインLに対する描画画素範囲を求める。描画画素範囲は、描画画素始点rsp=ａ(sy-L-0.5)+sxで求められるY-0.5の線分のX座標と、描画画素終点rep=ａ(sy-L+0.5)+sxで求められるY+0.5の線分のX座標の間になる。描画開始ライン（点）から描画終了ライン（点）まで、この演算を順に行なうことで、始点座標（sx, sy）終点座標（ex, ey）とする線分を描画している。
【０００６】
画像処理LSIの全体として、描画画像を保存しておくフレームメモリを持たず、数ライン分のバッファのみを持つラインバッファモードにした場合、１フレーム分の描画画像は保存しておくことができない。このため、描画ライン毎に、描画線分の傾き演算をし、さらに、ラインに対する描画線分の描画画素範囲を演算して、描画処理に演算結果を出力していく。複数の線分の描画は、従来回路構成をラインバッファモードで動作させると、描画手順は、傾き、描画画素範囲を順次演算し、全線分演算が終了したか否か判断し、演算が未完の場合、上述した描画のための演算を繰り返し、演算が完了の場合、描画最終ラインか否かを判断する。描画最終ラインでない場合、描画ラインを+1歩進して上述した描画のための演算を繰り返す。また、描画最終ラインに達した場合、描画を終了する。
【０００７】
具体例として特許文献１を挙げる。特許文献１は、画像処理方法および画像処理装置である。特許文献１はラインバッファモードで幅のある直線表示の提供を目的にしている。
【０００８】
特許文献１における画像処理方法は、表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、走査線の走査開始前に直線の表示データを書き込み、この書き込んだ表示データを走査線の走査タイミングに合わせて表示装置へ出力して直線の表示を行う画像処理方法において、直線の始点座標、終点座標および線幅に基づいて直線の垂直方向の描画範囲を計算し、走査線が描画範囲外であった時直線の描画を中止する第１の処理と、走査線が描画範囲内であったとき、走査線と直線の左側線、右側線との各交点の座標を求め、求めた座標値に基づいて描画ドットを決定する第２の処理と、決定された描画ドットに対応する前記ラインバッファの記憶位置に表示データを書き込む第３の処理とを有することを開示している。
【０００９】
また、特許文献１における画像処理装置には、直線の始点座標、終点座標および線幅に基づいて直線の垂直方向の描画範囲を演算する演算手段と、走査線が演算手段によって求められた描画範囲内であったとき、直線描画の指示を出力する制御手段と、制御手段からの指示を受け、走査線と直線の左側線、右側線との各交点の座標を求める交点座標演算手段と、交点座標演算手段によって求められた座標値に基づいて描画ドットを決定する描画ドット決定手段と、決定された描画ドットに対応する前記ラインバッファの記憶位置に表示データを書き込む書込手段とを具備することが記載されている。
【特許文献１】特開2005−251076号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来の回路構成では、Ｘ座標の差分、Ｙ座標の差分から除算器を用いて傾きを演算し、描画ラインに対する線分の描画画素始点、描画画素終点を、乗算器を用いて演算するため、演算処理に時間を要するものであり、複数の線分の処理を行う場合には、描画線分の数分、演算処理も増大していく。特許文献１は、走査線毎に、描画範囲の始点と終点の座標を掛け算器と割り算器を用いて演算していることから、上述したように、演算に時間を要してしまう。
【００１１】
また、１ライン分の描画演算処理に用いることができる時間は１ライン時間と決まっているから、複数線分の演算には高速な処理が要求されるが、高速な演算には、描画演算処理部を並列に持たせる構成とするしかなく、回路規模が増大してしまうという問題点があった。
【００１２】
本発明はこのような課題に鑑み、回路規模を膨大にすることなく、高速に描画画素範囲を算出することができる画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は上述の課題を解決するために、直線や矩形といった図形要素を組み合わせて描画する図形の描画において、この図形要素に対して入力される描画位置や線幅を基に演算して、描画範囲に所望の図形要素の描画に用いる画素位置を決定する画像処理装置において、この装置は、図形要素の傾きを算出する傾き算出手段と、設定された始点と終点を結んで描画される線分を設定線分と呼び、線幅の設定で決まる設定線分に平行な線分を平行線分と呼び、設定線分と平行線分の始点を基点として算出する基点算出手段と、傾きに関して演算する第１の演算モードと描画に関して演算する第２の演算モードを設け、供給される演算モードの指示に応じて基点算出手段からの基点と描画での次のラインにおける基点を選択する選択手段と、第１の演算モードでは算出された傾き、設定線分および平行線分の始点すべてを格納し、第２の演算モードでは格納された設定線分の傾き、設定線分および平行線分の始点を、指示に応じて読み出す記憶手段と、設定線分および平行線分それぞれの現ラインの始点、次ラインの始点から描画範囲を決定する描画算出手段と、次ラインにおける設定線分および平行線分の始点を、現ラインの始点および設定線分の傾きを基に算出する加算手段とを含み、この装置は、第１の演算モードと第２の演算モードに分けて、演算させ、描画算出手段は、傾きの符号および供給される基点の大小関係を基に前記描画範囲における画素の始点と描画するサイズを求めることを特徴とする。
【発明の効果】
【００１４】
本発明に係る画像処理装置によれば、入力される描画位置や線幅を含む一連の描画命令に対して第１の演算モードで傾き算出手段で描画位置や線幅を基に、描画命令における傾き演算を実施して、傾きを記憶手段に保存し、基点算出手段で設定線分および平行線分の始点すべてを算出し、選択手段を介して、記憶手段に設定線分および平行線分の始点すべてを保存し、第２の演算モードで記憶手段から保存したものを読み出し、加算手段で次ラインにおける設定線分および平行線分の始点を求め、描画算出手段で加算や大小比較により設定線分および平行線分それぞれの現ラインの始点、次ラインの始点から描画範囲を決定することで、回路規模を抑えながら、高速な描画画素範囲の算出を可能にする。
【発明を実施するための最良の形態】
【００１５】
次に添付図面を参照して本発明による画像処理装置の実施例を詳細に説明する。図１を参照すると、本発明は、入力される描画位置や線幅を含む一連の描画命令に対して傾き演算モードで傾き算出部12で描画位置や線幅を基に、描画命令における傾き演算を実施して、傾きをメモリ18に保存し、基点算出部14で設定線分および平行線分の始点すべてを算出し、選択部16を介して、メモリ18に設定線分および平行線分の始点すべてを保存し、描画演算モードでメモリ18から保存したものを読み出し、加算部22で次ラインにおける設定線分および平行線分の始点を求め、描画算出部20で加算や大小比較により設定線分および平行線分それぞれの現ラインの始点、次ラインの始点から描画範囲を決定するによる画像処理装置の実施例で、回路規模を抑えながら、高速な描画画素範囲の算出を可能にする。
【００１６】
本実施例は、本発明の画像処理装置を描画演算装置10に適用した場合である。本発明と直接関係のない部分について図示および説明を省略する。以下の説明で、信号はその現れる接続線の参照番号で指示する。
【００１７】
描画演算装置10は、図１に示すように、傾き算出部12、基点算出部14、選択部16、メモリ18、描画算出部20および加算部22を含む。
【００１８】
傾き算出部12は、設定した線分の傾きを算出する機能を有する。傾き算出部12には、たとえばポインティングデバイスを介して、直線・矩形描画に用いる始点Ｘ座標（sx）24、終点Ｘ座標（ex）26、始点Ｙ座標（sy）28および終点Ｙ座標（ey）30、ならびに選択した描画モード（rmode）32が入力される。
【００１９】
ここで、描画モード32とは、直線描画か矩形描画かを示す情報である。
【００２０】
傾き算出部12は、図２に示すように、差分演算器34および36、ならびに傾き演算器38を含む。差分演算器34には、始点Ｘ座標（sx）24および終点Ｘ座標（ex）26が供給される。また、差分演算器36には、始点Ｙ座標（sy）28および終点Ｙ座標（ey）30が供給される。差分演算器34は、供給される始点Ｘ座標（sx）24および終点Ｘ座標（ex）26を基に差分をとることによりX方向の設定線分（dx）を算出し、算出したX方向の線分（dx）40を傾き演算器38に供給する。差分演算器36は、供給される始点Ｙ座標（sy）28および終点Ｙ座標（ey）30を基に差分をとることによりＹ方向の線分（dy）を算出し、算出したY方向の設定線分（dy）42を傾き演算器38に供給する。
【００２１】
また、定義として、設定線分は、直線や矩形の描画において設定された始点と終点を結んで描画される線分であり、平行線分は線幅の設定で決まる設定線分に平行な線分である。
【００２２】
傾き演算器38は、供給される設定線分（dx）40および（dy）42を用いて、１ラインに対するＸ座標の増分であり、傾きデータ（dx/dy）を算出し、描画モード32における算出した傾きデータ44を基点算出部14およびメモリ18に供給する。
【００２３】
傾きデータ44の符号が“＋”の場合、右肩下がりの線分であることを表し、傾きデータ44の符号が“−”の場合、左肩下がりの線分であることを表す。設定線分（dx）が“0”の場合、線分が垂直線であり傾きデータ44も“0”に設定する。同様に、設定線分（dy）が“0”の場合、線分が水平線であり、傾きデータ44も“0”に設定する。また、描画モード（rmode）が矩形描画である場合も傾きデータ44を“0”に設定する。
【００２４】
図１に戻って、基点算出部14は、設定線分および平行線分に対する描画基点を算出する機能を有する。基点は、描画される四辺形の各点に対応している。これらの基点が描く位置関係に応じて便宜上、始点、終点と呼んでいる。基点算出部14には、始点Ｘ座標（sx）24、終点Ｘ座標（ex）26、描画モード（rmode）32、線幅（lw）46および傾きデータ44が供給される。基点算出部14は、図３に示すように、基点演算器48および50を含む。基点演算器48には、始点Ｘ座標（sx）24、終点Ｘ座標（ex）26および傾きデータ44が入力される。また、基点演算器50には、傾きデータ44、描画モード（rmode）32、線幅（lw）46および基点演算器48の出力である設定線分の描画基点（setb）52が供給される。
【００２５】
基点演算器48は、供給される傾きデータ44の符号が“＋”であれば、始点Ｘ座標（sx）24と終点Ｘ座標（ex）26の小さい方の座標から傾きデータ44の半分を引いた値を、設定線分の描画基点（setb）52に設定し、設定線分の描画基点（setb）52を選択部16に出力する。基点演算器48は、供給される傾きデータ44の符号が“−”であれば、始点Ｘ座標（sx）24と終点Ｘ座標（ex）26の大きい方の座標から傾きデータ44の半分を引いた値を、設定線分の描画基点（setb）52を設定し、設定線分の描画基点（setb）52を選択部16に出力する。
【００２６】
また、基点演算器50は、傾きの絶対値を見て、１より大きければ（θ＜45°）、設定線分の描画基点（setb）52から傾きデータ44×（線幅-１）を引いた値を、平行線分の描画基点（parab）54に設定し、平行線分の描画基点（parab）54を選択部16に出力する。基点演算器50は、傾きの絶対値を見て、１以下（θ＝0、θ＞45°）であれば、設定線分の描画基点（setb）52に線幅-１を足した値を平行線分の描画基点（parab）54に設定し、平行線分の描画基点（parab）54を選択部16に出力する。
【００２７】
図１に戻って、選択部16は、演算モードに応じて設定線分の描画基点（setb）52と加算部22からの帰還データ56を選択し、平行線分の描画基点（parab）54と加算部22からの帰還データ58を選択する。選択部16は、図４に示すように、選択回路60および62を含む。選択回路60には、設定線分の描画基点（setb）52と帰還データ56が供給される。選択回路62には、平行線分の描画基点（parab）54と帰還データ58が供給される。選択回路60および62には、傾き演算か描画演算かを示す演算モード（cmode）64が供給される。選択回路60は、示される演算モード（cmode）64に応じて設定線分の描画基点（setb）52と後述する加算部22からの帰還データ56の一方を選択する。選択回路60は、選択したデータ66を設定線分の始点としてメモリ18に出力する。選択回路62も同様に示される演算モード（cmode）64に応じて平行線分の描画基点（parab）54と帰還データ58の一方を選択する。選択回路62は、選択したデータ68を平行線分の始点としてメモリ18に出力する。演算モード（cmode）64には、傾き演算モードと描画演算モードがある。描画演算装置10は、傾き演算モードと描画演算モードに分けて動作させている。
【００２８】
また、図１に戻って、メモリ18には、何番目に描画する線分かを示す描画識別番号（rndid）70がメモリ18のアドレスとして供給される。メモリ18は、図５に示すように、３つのRAM（Random Access Memory）72、74および76を含む。RAM 72、74および76には、それぞれ、描画識別番号（rndid）70をアドレスとして供給され、RAM 72は傾き用メモリであり、RAM 74および76は選択部16の演算モード64によって選択した値66および68を、それぞれ、記憶している。したがって、RAM 72、74および76は描画識別番号70に格納された値を読み出すことになる。
【００２９】
すなわち、RAM 72は演算モードが傾き演算モードの場合、設定線分の傾きを記憶し、RAM 74は演算モード64が傾き演算モードの場合、設定線分の始点を記憶し、RAM 76は演算モード64が傾き演算モードの場合、平行線分の始点を記憶する。また、RAM 72および74は、描画演算モードの場合、供給される描画識別番号（rndid）70をアドレスとして、保存された傾きを示すデータ（curslope）78および設定線分の始点を示すデータ（cursetsp）80を読み出す。さらに、RAM 74は、描画演算モードの場合、供給される描画識別番号（rndid）70に応じて平行線分の始点を示すデータ（curparsp）82を読み出す。このように、RAM 72、74および76は、供給される描画識別番号（rndid）70に応じて読み出したデータ78、80および82を加算部22および描画算出部20に出力する。
【００３０】
図１に戻り、加算部22は加算器84および86を含む。加算器84には、データ（curslope）78とデータ（cursetsp）80が入力される。加算器84は、入力されたデータ（curslope）78とデータ（cursetsp）80を加算して、加算したデータ（nxtsetsp）56を選択回路60および描画算出部20に出力する。また、加算器86は、入力されたデータ（curslope）78とデータ（curparsp）82を加算して、加算したデータ（nxtparsp）58を選択回路62および描画算出部20に出力する。データ（nxtsetsp）56およびデータ（nxtparsp）58は、それぞれ、次ラインの設定線分の始点と次ラインの平行線分の始点となる。
【００３１】
描画算出部20は、供給される複数のデータを基に描画画素始点と描画画素終点を求めて、描画画素始点（rndstrp）と描画画素サイズ（rndsize）を出力する機能を有する。描画算出部20には、データ（curslope）78、データ（cursetsp）80、データ（curparsp）82、データ（nxtsetsp）56、データ（nxtparsp）58とともに、始点Ｘ座標（sx）24、終点Ｘ座標（ex）26、始点Ｙ座標（sy）28、終点Ｙ座標（ey）30および線幅（lw）46、ならびにデータ88が入力される。データ88は、描画処理中のラインが１フレームにおけるどのラインであるかを示す描画ライン（rndline）のデータである。
【００３２】
描画算出部20は、あるラインの各コマンドの描画画素始点と描画画素終点を求めて、描画画素始点（rndstrp）90と描画画素サイズ（rndsize）92を、後段の図示しない描画処理部に出力する。
【００３３】
なお、上述したラインバッファモードにおいて供給される始点Ｘ座標（sx）、始点Ｙ座標（sy）、終点Ｘ座標（ex）、終点Ｙ座標（ey）、線幅（lw）、描画モード（rmode）および描画識別番号（rndid）は、１つの線分の描画命令であるコマンドのパラメータとして入力される。
【００３４】
次に本発明に係る画像処理装置を適用した描画演算装置10の動作について簡単に記述する。ラインバッファモードにおける描画演算装置10は、演算は大きく２つに分ける点に特徴がある。一つの演算は、描画の前準備となる各コマンドの傾き/基点を求めてメモリ18保存する傾き演算で、傾き演算モードにある。これは、たとえばLCD（Liquid Crystal Panel）パネルといった表示装置のＶ（垂直）ブランキング期間中に行うようにし、表示フレームが変わる毎に傾き演算処理を実行する。描画演算装置10におけるもう一つの演算は、実際に直線/矩形を描画するときの描画演算で描画演算モードにある。この描画演算では、あるラインに対する各コマンドの描画画素範囲を求めた後段の描画処理部に出力している。
【００３５】
本実施例における描画演算装置10は、図６に示すように、この特徴を反映させるように、演算モードが傾き演算モードか否かを判断する（ステップS10）。演算モードが傾き演算モードの場合（YES）、傾き演算処理に進む（サブルーチンSUB1へ）。また、演算モードが傾き演算モードでない場合（NO）、描画演算処理に進む（サブルーチンSUB2へ）。
【００３６】
傾き演算処理は、上述したように、描画の前準備となる各コマンドの傾き/基点を求めて、メモリ18に保存し、描画ライン分繰り返す。（サブルーチンSUB1）。傾き演算処理は、傾き演算処理の実行後、傾き演算モードの判断処理に戻る（ステップS10）。これは、描画演算装置10が傾き演算モードを示すデータが供給されている間、傾き演算処理だけが続けられることを意味する。このように演算モードの判断処理により、描画演算装置10は、演算モードが傾き演算モードでない場合として傾き演算が全線分の演算終了後に描画演算処理に進むことになる（サブルーチンSUB2へ）。
【００３７】
描画演算処理は、描画するあるラインに対して描画するすべてのコマンドの描画画素情報、すなわち各コマンドの描画画素範囲を求めて演算し、この演算結果を出力し、さらに、次のラインになると再度すべてのコマンドの描画画素情報を演算し、出力するように動作して、１フレームの描画データを後段の描画処理部へ出力する。（サブルーチンSUB2）。
【００３８】
次に終了か否か判断する（ステップS12）。終了の場合（YES）、描画を終了する。また、未終了の場合（NO）、傾き演算モードの判断処理に戻る（ステップS10へ）。
【００３９】
次に傾き演算処理（サブルーチンSUB1）の手順について図７を参照しながら、記述する。まず、傾き演算は、傾き算出部12で入力する始点Ｘ座標（sx）24と終点Ｘ座標（ex）26からＸ座標の差分（dx）、始点Ｙ座標（sy）28と終点Ｙ座標（ey）30からＹ座標の差分（dy）を求め、傾き演算器38にて線分の傾きデータ44を求める（サブステップSS10）。傾きデータ44は、１ラインに対するＸ座標の増分に対する傾きである。
【００４０】
傾きデータ44の符号の“＋”は右肩下がりの線分であり、符号の“−”は左肩下がりの線分であることを示す。Ｘ座標の差分（dx）“0”は線分が垂直線で、傾きデータ44も“0”である。同様にＹ座標の差分（dy）が“0”のとき、設定線分が水平線であり傾きデータ44も“0”とする。また、描画モードrmodeが矩形描画である場合、傾きデータ44も“0”に設定する。求めた傾きデータ44は描画識別番号（rndid）70をアドレスとしてRAM 72に書き込む。
【００４１】
基点算出部14の基点演算器48では、傾きデータ44の符号が“＋”の場合、始点Ｘ座標と終点Ｘ座標の小さい方の座標から傾きの半分を引いた値を、基点演算器48の出力である設定線分の描画基点（setb）52に設定する。また、基点算出部14では、傾きデータ44の符号が“−”の場合、始点Ｘ座標と終点Ｘ座標の大きい方の座標から傾きの半分を引いた値を、設定線分の描画基点（setb）52に設定する。基点算出部14の基点演算器50は、算出した設定線分の描画基点（setb）52をメモリ18におけるRAM 74のアドレスとして設定した描画識別番号70に出力し、書き込む。
【００４２】
また、基点演算器50では、平行線分の基点を演算し、傾きの絶対値を見て、１より大きければ、Ｘ軸と設定線分のなす角θがθ＜45°であり、設定線分の描画基点（setb）52から傾き×（線幅-１）した値を引いた値を、平行線分の描画基点（parab）54として算出する。同様に、基点演算器50では、平行線分の基点を演算し、傾きの絶対値を見て、１以下の場合、Ｘ軸と設定線分のなす角θがθ＝0、θ＞45°であり、設定線分の描画基点（setb）52に線幅-１を足した値を、平行線分の描画基点（parab）54として算出する。基点演算器50は、算出した平行線分の描画基点（parab）54をメモリ18におけるRAM 76のアドレスとして設定した描画識別番号70に出力し、書き込む。
【００４３】
次に演算を、すべての線分に対して実施したか否か判断する（サブステップSS12）。すべての線分の演算が終了した場合（YES）、リターンに移動して、傾き演算は終了する。また、すべての線分の演算が未終了の場合（NO）、傾き演算処理に戻る（サブステップSS10へ）。
【００４４】
次に描画演算処理（サブルーチンSUB2）の手順について図８を参照しながら、記述する。描画演算処理は、傾き演算処理によりRAM 72、74および76に格納したデータに対して描画識別番号（rndid）70をアドレスとして読み出して演算する（サブステップSS20）。
【００４５】
描画演算処理は、RAM 74から読み出したデータ（cursetsp）80とRAM 72から読み出したデータ（curslope）78を加算し、加算したデータ（nxtsetsp）56を算出する。データ（cursetsp）80とデータ（nxtsetsp）56は、設定線分のあるラインにおける描画画素始点と次ラインにおける描画画素始点になる。データ（nextsetsp）56は、次ラインの演算ために、RAM 74に上書き保存する。
【００４６】
同様に、描画演算処理は、RAM 76から読み出したデータ（curparsp）82とRAM 72から読み出したデータ（curslope）78を加算し、加算したデータ（nxtparsp）を算出する。データ（nxtparsp）58は、RAM 76に上書き保存する。描画算出部20では、描画する線分の描画範囲を決定する。
【００４７】
ここで、設定線分の描画終点（cursetep）は、データ（nxtsetsp）56-１に設定し、平行線分の描画終点（curparep）は、データ（nxtparsp）58-1に設定する。また、始点Ｘ座標（sx）24と終点Ｘ座標（ex）26を比較して、小さい方を最小Ｘ座標（minx）、大きい方を最大Ｘ座標（maxx）に設定する。
【００４８】
描画画素の始点は、まず、データ（cursetsp）89とデータ（curparsp）82を比較して、小さい方を選択し、さらに最小Ｘ座標（minx）と比較して大きい方がデータ（rndstrp）90になる。また、描画画素の終点は、設定線分の描画終点（cursetep）と平行線分の描画終点（curparep）を比較して、大きい方を選択し、最大Ｘ座標（maxx）と比較して小さい方が描画画素の終点（rndendp）になる。
【００４９】
描画画素サイズ（rndsize）92は、描画画素の終点（rndendp）-描画画素の始点（rndstrp）＋１の演算により求める。描画算出部20は、算出した描画画素の始点（rndstrp）90とともに、描画画素サイズ（rndsize）92を後段の描画処理部へ渡す。このように、描画するすべてのコマンドに対して演算し、あるラインにおける描画の完了に応じて次のラインになると再度、同様にすべてのコマンドに対して演算する。
【００５０】
次に演算を、すべての線分に対して実施したか否か判断する（サブステップSS22）。すべての線分の演算が終了した場合（YES）、描画の最終ラインか否かの判断処理に進む（サブステップSS24へ）。また、すべての線分の演算が未終了の場合（NO）、描画演算処理に戻る（サブステップSS20へ）。
【００５１】
次に現在の描画ラインが最終ラインかを判断する。現在の描画ラインが最終ラインの場合（YES）、リターンに進んで、サブルーチンSUB2を終了する。また、現在の描画ラインが最終ラインでない場合（NO）、描画ラインの歩進処理に進む（サブステップSS26へ）。
【００５２】
次に描画ラインの歩進処理は、現在の描画ラインに対して+1を加算する。この歩進処理後、描画演算処理に戻る（サブステップSS20へ）。
【００５３】
このように動作させて、描画全ライン分の演算を繰り返し、１フレーム分の描画処理が完了させる。平行線、垂直線、矩形描画の場合、データ（curslope）78が“0”になっているから、RAM 72から読み出す始点情報は毎ライン同じ値になる。このため、傾きを持った線分と同じ演算を行うことで描画可能である。
【００５４】
また、描画演算装置10は、データ（curslope）78、線幅（lw）46、始点Ｙ座標（sy）28、終点Ｙ座標（ey）30および描画ライン（rndline）88から各コマンドに描画する画素があるかどうかを判断し、描画する画素がある場合、描画演算装置10は、上述した描画演算を実施し、描画する画素がない場合、描画算出部20は、RAM 72、74および76からの情報読み出し、描画演算を行わず、データ（rndsize）92を“0”として描画処理部に出力している。
【００５５】
このように演算した結果である描画の例を示す。描画は、始点座標（x1, y1）、終点座標（x2, y2）、矢印94が示す線幅94、およびＸ軸に平行な線96と設定線分、すなわち始点座標（x1, y1）と終点座標（x2, y2）の線分98のなす角θで表わされる。図9Aの線分は、傾きθ＜45°の場合の描画である。図9Bの線分は、傾きθ＝45°の場合の描画である。図9Cの線分は、傾き90°＞θ＞45°の場合の描画である。図9D線分は、傾きθ＝90°の場合の描画である。
【００５６】
さらに、傾き90°を越えた傾き-90°＞θ＞-45°で描画する場合が図9Eである。傾きθ＝-45°の場合、描画は図9Fに示すように表わされる。図9Gの線分は、傾きθ＜-45°の場合の描画である。図9Hの線分は、傾きθ＝0°、すなわち水平線の場合の描画である。そして、図9Iの矩形100は、矩形の対角線である線分98で特徴付けられる。
【００５７】
このように、すべての描画線分の傾き、基点を保存しておくメモリ18を設け、Ｖブランキング期間中に傾き、基点を求める演算を実施して、メモリ18に保存しておき、描画演算に際して、メモリ18から保存してある傾き、始点情報を読み出し、加算演算だけで、描画ラインにおける２本の線分の描画始点/終点を求め、描画終点は次ラインの描画始点情報として書き戻すようにし、２本の線分の始点/終点の大小比較で描画範囲を決定できるようにすることで、回路規模を膨大に大きくすることなく、描画演算を高速に処理できるという効果が得られる。
【００５８】
次に本発明に係る画像処理装置を適用した描画演算装置10における他の実施例について記述する。本実施例は、先の実施例と同じ構成要素を有する。描画演算装置10は、図10に示すように、基点算出部14、選択部16、メモリ18、描画算出部20および加算部22を含む。傾き算出部12は、まったく先の実施例の構成要素に同じことから、図示を省略する。また、共通する構成要素には、先の実施例と同じ参照符号を付して、記述を省略する。
【００５９】
基点算出部14は、図11に示すように、基点演算器48および50だけでなく、基点演算器102および104を含む。基点演算器102および104は、直交線分の基点を演算する機能を有する。直交線分は、設定線分と平行線分のそれぞれに直交する２つの線分のことである。基点演算器48および50には、先の実施例において入力したデータに同じである。新たに配設される基点演算器102および104にも基点演算器48と同じ傾きデータ44、始点Ｘ座標（sx）24および終点Ｘ座標（ex）26が供給される。
【００６０】
基点演算器102および104は、供給される傾きデータ44を基に直交線分の傾き-1/傾きデータ44を算出する。
【００６１】
基点演算器102および104は、設定線分の小さいＸ座標で直交する線分の基点（mnvb）106および設定線分の大きいＸ座標で直交する線分の基点（nxvb）108を演算し、選択部16を介して、傾き演算時に描画識別番号（rndid）70をアドレスに設定するメモリ18に直交線分の２始点、すなわち基点（mnvb）106および（nxvb）108を保存する。
【００６２】
選択部16は、図12に示すように、選択回路60、62、110および112を含む。選択回路110および112も、選択回路60および62と同じ機能を有する。選択回路110および112には、データ（mnvb）106およびデータ（nxvb）108が入力されるとともに、後述する加算部22からデータ（nxtmnvsp）114およびデータ（nxtmxvsp）116がそれぞれ、供給される。選択回路60、62、110および112は、それぞれ、演算モード（cmode）64に応じて選択したデータ（setb）66、データ（parab）68、データ（mnvb）118およびデータ（nxvb）120を、メモリ18の描画識別番号（rndid）70をアドレスとするRAMに出力する。
【００６３】
メモリ18は、先の実施例の構成要素であるRAM 72、74および76に加えて、３つのRAM 122、124および126を含む。６つのRAM 72、74、76、122、124および126は、供給される描画識別番号（rndid）70をアドレスとする領域にデータを格納する。RAM 72、74および76には、傾きデータ44、設定線分の始点66および平行線分の始点68がアドレスに格納される。また、RAM 122には、傾きデータ44に直交する線分の傾きが供給される。RAM 124および126には、それぞれ、直交線分の始点118および120が供給される。
【００６４】
描画演算時に、RAM 72、74、76、122、124および126は、アドレスからデータ（curslope）78、データ（cursetsp）80、データ（curparsp）82、データ（curvslope）128、データ（curmnvsp）130およびデータ（curnxvsp）132を、描画算出部20および加算部22に、それぞれ、出力する。
【００６５】
図10に戻って、加算部22は、４つの加算器84、86、134および136を含む。加算器84および86における接続関係は、先の実施例に同じである。加算器134には、データ（curvslope）128およびデータ（curmnvsp）130が供給される。また、加算器136には、データ（curvslope）128およびデータ（curnxvsp）132が供給される。
【００６６】
加算器134は、供給されるデータ（curvslope）128およびデータ（curmnvsp）130を加算して、加算したデータ（nxtmnvsp）114を、選択部16および描画算出部20に出力する。また、加算器134は、供給されるデータ（curvslope）128およびデータ（curnxvsp）132を加算して、加算したデータ（nxtmxvsp）116を、選択部16および描画算出部20に出力する。
【００６７】
次に本発明に係る画像処理装置を適用した描画演算装置10における他の実施例の動作について簡単に記述する。本実施例における描画演算装置10は、基本的に、先の実施例と同じ手順で動作する。
【００６８】
描画演算装置10は、傾き演算器38で、設定線分の基点演算および平行線分の基点演算が終了した後、直交線分の傾きを演算する。直交線分の傾きは、-１/傾きデータであるから、dy/dxを演算する。直交線分の符号は、設定線分の符号の逆にする。設定線分が平行線、垂直線および矩形描画のいずれかの場合、直交線分の傾きも設定線分の傾きと同様に“0”にする。求めた直交線分の傾き（vslope）は、選択部16を介して、描画識別番号（rndid）70をアドレスとして直交線分の傾きをRAM 122に書き込む。
【００６９】
また、基点演算器102では、設定線分の符号が“＋”であれば、始点Ｘ座標（sx）24と終了Ｘ座標（ex）26の小さい方の座標から直交線分の傾き（vslope）の半分を引いた値（mnvb）106を算出する。また、設定線分の符号が“−”であれば始点Ｘ座標（sx）24と終了Ｘ座標（ex）26の大きい方の座標から直交線分の傾き（vslope）の半分を引いた値（mnvb）106を算出する。基点演算器102は、選択部16を介して、描画識別番号（rndid）70をアドレスとして用い、RAM 124に直交線分の始点を書き込む。
【００７０】
さらに、基点演算器104では、設定線分の符号が“＋”であれば、始点Ｘ座標（sx）24と終了Ｘ座標（ex）26の大きい方の座標から直交線分の傾き（vslope）の半分を引いた値（nxvb）108を算出する。また、設定線分の符号が“−”であれば、始点Ｘ座標（sx）24と終了Ｘ座標（ex）26の小さい方の座標から直交線分の傾き（vslope）の半分を引いた値（nxvb）108を算出する。基点演算器１０４は、選択部16を介して、描画識別番号（rndid）70をアドレスとして用い、RAM 126に直交線分の始点を書き込む。
【００７１】
次に描画演算では、設定線分/平行線分の始点演算と同様に、始点を保存したRAM 124からデータ（curmnvsp）130を加算器134に読み出し、直交線分を保存したRAM 122から傾きデータ（curvslope）128を加算器134に読み出し、加算器134で加算して、データ（nxtmnvsp）114を選択部16および描画算出部20に出力する。また、描画演算では、もう一つの始点を保存したRAM 126からデータ（curnxvsp）132を加算器136に読み出し、直交線分を保存したRAM 122から傾きデータ（curvslope）128を加算器136に読み出し、加算器136で加算して、データ（nxtmxvsp）116を選択部16および描画算出部20に出力する。
【００７２】
描画演算装置10は、描画演算において選択部16を介して、データ（nxtmnvsp）114およびデータ（nxtmxvsp）116のそれぞれを、始点を保存するRAM 124および126に書き戻している。
【００７３】
ただし、設定線分と交わるＹ座標は、始点Ｙ座標（sy）28および終点Ｙ座標（ey）30の２点であることが分かっているから、直交線分の始点演算が要求されるラインだけで行なう。始点Ｙ座標（sy）28および終点Ｙ座標（ey）30を比較して、始点Ｙ座標（sy）28および終点Ｙ座標（ey）30の小さい方を最小Ｙ座標（miny）、大きい方を最大Ｙ座標（maxy）と設定する。
【００７４】
設定線分の符号が“＋”であれば、データ130に関する直交線分は最小Ｙ座標（miny）で設定線分と交わり、データ132に関する直交線分は最大Ｙ座標（maxy）で設定線分と交わることになる。
【００７５】
また、設定線分の符号が“−”であれば、データ130に関する直交線分は最大Ｙ座標（maxy）で設定線分と交わり、データ132に関する直交線分は最小Ｙ座標（miny）で設定線分と交わることになる。描画ライン（rndline）88が各交点になったら、直交ラインの始点を演算するようにする。
【００７６】
描画算出部20には、設定線分、平行線分、これら線分と直交する２つの直交線分それぞれのあるラインにおける始点、終点のＸ座標が入力される。これらの情報の大小を比較して、描画画素始点、描画画素サイズを算出し後段へ渡す。本実施例は、先の実施例と同様に演算を処理するが、本実施例では最小Ｙ座標（miny）の代わりにデータ130に関する直交線分の始点を、そして、最大Ｙ座標（maxy）の代わりにデータ132に関する直交線分の終点を、使用することで傾きを持った長方形の描画を可能にしている。
【００７７】
まず、設定線分と平行線分の始点を比較して、始点の値の小さい方を選択する。さらに、データ130に関する直交線分の始点と比較して、大きい方が描画始点（rndstrp）となる。
【００７８】
また、設定線分と平行線分の終点を比較して、終点の値の大きい方を選択する。さらに、データ132に関する直交線分の終点と比較して、小さい方が描画終点（rndendp）になる。描画画素サイズ（rndsize）92は、先の実施例と同様に描画始点（rndendp）−描画終点（rndstrp）＋１で求める。
【００７９】
ここで、１コマンドの描画終了は、描画画素サイズ（rndsize）が0以下になったこと、すなわち平行線分とどちらかの直交線分が交わり、始点の大小関係が逆転したことで分かる。このように演算を描画ライン分に繰り返し、１フレームの描画が完了させる。
【００８０】
描画を先の実施例と同様の参照符号を用いて、図14Aないし図14Hに示す。また、矩形は図9Iに同じであることから、省略する。角度θの関係も、先の実施例に同じである。本実施例は、描画範囲に描かれる図形が長方形である点に特徴がある。
【００８１】
本実施例は、傾き演算を時分割するようにして、直交線分の傾きを求め、先の実施例に比べて、新たな構成要素を設け、設定線分の始点/終点と直交する２本の線分のあるラインにおける描画始点、描画終点情報を算出し、設定線分、平行線分の描画始点、描画終点との大小比較で描画範囲を決定するようにしたことで、平行四辺形でない幅を持った線分の描画演算を、アルゴリズムを変更することなく、高速に処理できるという効果が得られる。
【図面の簡単な説明】
【００８２】
【図１】本発明に係る画像処理装置を適用した描画演算装置の実施例における概略的な構成を示すブロック図である。
【図２】図１の描画演算装置における傾き算出部の概略的な構成を示すブロック図である。
【図３】図１の描画演算装置における基点算出部の概略的な構成を示すブロック図である。
【図４】図１の描画演算装置における選択部の概略的な構成を示すブロック図である。
【図５】図１の描画演算装置におけるメモリの概略的な構成を示すブロック図である。
【図６】図１の描画演算装置をラインバッファモードで動作させる場合の手順を示すメインフローチャートである。
【図７】図６の手順における傾き演算処理（サブルーチン１）の手順を示すフローチャートである。
【図８】図６の手順における描画演算処理（サブルーチン２）の手順を示すフローチャートである。
【図９Ａ】図１の描画演算装置で演算して、傾きθ＜45°の場合の描画を示す図である。
【図９Ｂ】図１の描画演算装置で演算して、傾きθ＝45°の場合の描画を示す図である。
【図９Ｃ】図１の描画演算装置で演算して、傾き90°＞θ＞45°の場合の描画を示す図である。
【図９Ｄ】図１の描画演算装置で演算して、傾きθ＝90°の場合の描画を示す図である。
【図９Ｅ】図１の描画演算装置で演算して、傾き-90°＞θ＞-45°の場合の描画を示す図である。
【図９Ｆ】図１の描画演算装置で演算して、傾きθ＝-45°の場合の描画を示す図である。
【図９Ｇ】図１の描画演算装置で演算して、傾きθ＜-45°の場合の描画を示す図である。
【図９Ｈ】図１の描画演算装置で演算して、傾きθ＝0°の場合の描画を示す図である。
【図９Ｉ】図１の描画演算装置で演算して、矩形を表わす図である。
【図１０】本発明に係る画像処理装置を適用した描画演算装置の他の実施例における概略的な構成を示すブロック図である。
【図１１】図10の描画演算装置の他の実施例における基点算出部の概略的な構成を示すブロック図である。
【図１２】図10の描画演算装置の他の実施例における選択部の概略的な構成を示すブロック図である。
【図１３】図10の描画演算装置の他の実施例におけるメモリの概略的な構成を示すブロック図である。
【図１４Ａ】図10の描画演算装置で演算して、傾きθ＜45°の場合の描画を示す図である。
【図１４Ｂ】図10の描画演算装置で演算して、傾きθ＝45°の場合の描画を示す図である。
【図１４Ｃ】図10の描画演算装置で演算して、傾き90°＞θ＞45°の場合の描画を示す図である。
【図１４Ｄ】図10の描画演算装置で演算して、傾きθ＝90°の場合の描画を示す図である。
【図１４Ｅ】図10の描画演算装置で演算して、傾き-90°＞θ＞-45°の場合の描画を示す図である。
【図１４Ｆ】図10の描画演算装置で演算して、傾きθ＝-45°の場合の描画を示す図である。
【図１４Ｇ】図10の描画演算装置で演算して、傾きθ＜-45°の場合の描画を示す図である。
【図１４Ｈ】図10の描画演算装置で演算して、傾きθ＝0°の場合の描画を示す図である。
【符号の説明】
【００８３】
10  描画演算装置
12  傾き算出部
14  基点算出部
16  選択部
18  メモリ
20  描画算出部
22  加算部
【図１】
2010009271.tif 000003
【図２】
2010009271.tif 000004
【図３】
2010009271.tif 000005
【図４】
2010009271.tif 000006
【図５】
2010009271.tif 000007
【図６】
2010009271.tif 000008
【図７】
2010009271.tif 000009
【図８】
2010009271.tif 000010
【図９Ａ】
2010009271.tif 000011
【図９Ｂ】
2010009271.tif 000012
【図９Ｃ】
2010009271.tif 000013
【図９Ｄ】
2010009271.tif 000014
【図９Ｅ】
2010009271.tif 000015
【図９Ｆ】
2010009271.tif 000016
【図９Ｇ】
2010009271.tif 000017
【図９Ｈ】
2010009271.tif 000018
【図９Ｉ】
2010009271.tif 000019
【図１０】
2010009271.tif 000020
【図１１】
2010009271.tif 000021
【図１２】
2010009271.tif 000022
【図１３】
2010009271.tif 000023
【図１４Ａ】
2010009271.tif 000024
【図１４Ｂ】
2010009271.tif 000025
【図１４Ｃ】
2010009271.tif 000026
【図１４Ｄ】
2010009271.tif 000027
【図１４Ｅ】
2010009271.tif 000028
【図１４Ｆ】
2010009271.tif 000029
【図１４Ｇ】
2010009271.tif 000030
【図１４Ｈ】
2010009271.tif 000031