JP4320604B2 - 画像処理方法および画像処理装置 - Google Patents

画像処理方法および画像処理装置 Download PDF

Info

Publication number
JP4320604B2
JP4320604B2 JP2004063889A JP2004063889A JP4320604B2 JP 4320604 B2 JP4320604 B2 JP 4320604B2 JP 2004063889 A JP2004063889 A JP 2004063889A JP 2004063889 A JP2004063889 A JP 2004063889A JP 4320604 B2 JP4320604 B2 JP 4320604B2
Authority
JP
Japan
Prior art keywords
line
straight line
scanning
scanning line
end point
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.)
Expired - Fee Related
Application number
JP2004063889A
Other languages
English (en)
Other versions
JP2005251076A (ja
Inventor
光弘 本目
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.)
Yamaha Corp
Original Assignee
Yamaha 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 Yamaha Corp filed Critical Yamaha Corp
Priority to JP2004063889A priority Critical patent/JP4320604B2/ja
Priority to US11/070,941 priority patent/US7439980B2/en
Publication of JP2005251076A publication Critical patent/JP2005251076A/ja
Priority to US12/283,421 priority patent/US20090051689A1/en
Application granted granted Critical
Publication of JP4320604B2 publication Critical patent/JP4320604B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Image Generation (AREA)
  • Storing Facsimile Image Data (AREA)

Description

本発明は、幅のある直線の表示処理の改良を図った画像処理方法および装置に関する。
従来、各種のソフトウエアにおいて、モニタに複数の直線を表示することはしばしば行われ、また、単に幅のない直線だけでなく、幅のある直線の表示も必要とされる。この幅のある直線の表示においては、通常、直線の始点と終点の座標および直線の幅がCPU(中央処理装置)によって指定され、画像処理装置がその3データをドットデータに変換し、モニタの2次元平面の表示ドット数に対応する記憶容量を有するフレームバッファに書き込む。このフレームバッファ内のドットデータが液晶等によるモニタへ出力されて直線表示が行われる(特許文献1参照)。なお、フレームバッファとしては、書き込み用/読み出し用の2バッファが設けられる。
特開平04-175887号公報
ところで、周知のように、画像処理装置は、通常、LSIによって作成され、フレームバッファも1チップLSIの中に作成されることが望ましい。しかし、フレームバッファは記憶容量が大きく、大きなチップ面積を必要とする。したがって、画像処理装置においては、フレームバッファではなく、1表示ライン(走査線)のドット数に対応する記憶容量のラインバッファの方が記憶容量が小さくて済むため、低コスト化、小型化の点で好ましい。
しかしながら、直線の始点と終点の座標および直線の幅の3データを所定ラインのドットデータに変換する処理は時間がかかり、このため、従来、ラインバッファによっては幅がある直線表示ができないという問題があった。
また、従来の画像処理装置にあっては、幅のある直線を表示する時、図16に示すように、端部がモニタの走査線に対して平行あるいは直交する直線となり、図17に示すように、描画する直線に対して端部が直交する直線にはならない問題があった。
本発明は上記事情を考慮してなされたもので、その目的は、ラインバッファによって幅がある直線の表示を可能とする画像処理装置を提供することにある。また、この発明の他の目的は、端部が描画する直線に対して直交する直線となる画像処理装置を提供することにある。
発明は、表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前に直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理方法において、前記直線の始点座標、終点座標および線幅に基づいて前記直線の垂直方向の描画範囲を計算し、前記走査線が描画範囲外であった時直線の描画を中止する第1の処理と、前記走査線が描画範囲内であった時、前記直線の傾きを前記始点座標および終点座標に基づいて計算する第2の処理と、前記直線の傾きが走査線に対し45度〜135度であった場合に、前記直線の始点座標、終点座標および前記走査線の座標に基づいて前記直線の中心線と前記走査線の交点の座標を求めると共に、前記直線の始点座標、終点座標および線幅に基づいて前記直線の走査線方向長さを計算し、前記交点座標および前記走査線方向長さから前記走査線と前記直線の左側線、右側線との各交点の座標を求める第3の処理と、前記直線の傾きが前記走査線に対し0度〜45度または135度〜180度であった場合に、前記直線の始点座標、終点座標および線幅に基づいて前記直線の走査線垂直方向長さを計算し、前記直線の始点座標、終点座標、前記走査線垂直方向長さおよび前記走査線の座標から前記走査線と前記直線の左側線、右側線との各交点の座標を求める第4の処理と、前記第3または第4の処理によって求めた座標値に基づいて描画ドットを決定する第5の処理と、決定された描画ドットに対応するラインバッファの記憶位置に表示データを書き込む第6の処理とを有することを特徴とする画像処理方法である。
発明は、上記の画像処理方法において、前記走査線が、前記直線の予め決められた端点範囲を通過するか否かを判断する第7の処理と、前記走査線が前記端点範囲を通過する場合に、前記直線の始点座標、終点座標および前記走査線の座標に基づいて前記走査線方向の描画ドットの限界値を求める第8の処理とを有し、前記第6の処理は、前記第7の処理の結果が「通過」であった場合に、前記ラインバッファの記憶位置に表示データを書き込む際において前記第8の処理によって求められた限界値の外の描画ドットの書き込みを行わないことを特徴とする。
発明は、表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前に直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理装置において、前記直線の始点座標、終点座標および線幅に基づいて前記直線の垂直方向の描画範囲を演算する第1の演算手段と、前記走査線が前記第1の演算手段によって演算された描画範囲内であった時直線描画の指示を出力する制御手段と、前記直線描画の指示を受けて前記直線の始点座標および終点座標に基づいて前記直線の傾きを演算する第2の演算手段と、前記直線の傾きが走査線に対し45度〜135度であった場合に、前記直線の始点座標、終点座標および前記走査線の座標に基づいて前記直線の中心線と前記走査線の交点の座標を求めると共に、前記直線の始点座標、終点座標および線幅に基づいて前記直線の走査線方向長さを計算し、前記交点座標および前記走査線方向長さから前記走査線と直線の左側線、右側線との各交点の座標を求める第3の演算手段と、前記直線の傾きが走査線に対し0度〜45度または135度〜180度であった場合は、前記直線の始点座標、終点座標および線幅に基づいて前記直線の走査線垂直方向長さを計算し、前記直線の始点座標、終点座標、前記走査線垂直方向長さおよび前記走査線の座標から前記走査線と前記直線の左側線、右側線との各交点の座標を求める第4の演算手段と、前記第3または第4の演算手段によって求められた座標値に基づいて描画ドットを決定する描画ドット決定手段と、決定された描画ドットに対応するラインバッファの記憶位置に表示データを書き込む書込手段とを具備することを特徴とする画像処理装置である。
発明は、上記の画像処理装置において、前記走査線が、前記直線の予め決められた端点範囲を通過するか否かを判断する判断手段と、前記走査線が前記端点範囲を通過する場合に、前記直線の始点座標、終点座標および前記走査線の座標に基づいて前記走査線方向の描画ドットの限界値を求める第5の演算手段とを有し、前記書込手段は、前記判断手段の結果が「通過」であった場合に、前記ラインバッファの記憶位置に表示データを書き込む際において前記第5の演算手段によって求められた限界値の外の描画ドットの書き込みを行わないことを特徴とする。
この発明によれば、幅がある直線の表示をラインバッファ方式による画像処理装置によって行うことができる効果がある。また、この発明によれば、直線の端部を直線の中心線に対して直交する線とすることができ、これにより、直線端部の表示を見栄え良くすることができる。
以下、図面を参照し、この発明の実施の形態について説明する。図2はこの発明の一実施の形態によるラインバッファ方式の画像処理装置1を適用したディスプレイ装置の構成を示すブロック図である。この図において、2はスプライトパターンが記憶されたパターンメモリ、3は画像表示を制御するCPU(中央処理装置)、4はCRT(ブラウン管)によるモニタである。
画像処理装置1において、11はパターンメモリインターフェイス、12はCPUインターフェイス、Bはバスラインである。14はカラーコードをRGBカラーデータに変換するカラーパレットである。パターンメモリ2にはスプライトパターンの画像データがカラーコードによって記憶されており、カラーパレット14はそのカラーコードをRGBカラーデータに変換するためのものである。15は汎用テーブル、16はデータ一時記憶用のレジスタである。汎用テーブル15はCPU3によって書き込みが行われるテーブルであり、図3に示すように、レイヤ設定テーブル15aおよび直線属性テーブル15bを有している。
レイヤ設定テーブル15aは、複数のレイヤから構成される。図4は各レイヤを示す図であり、この図に示すように、レイヤ#0が最初に描画され、レイヤ#1、#2・・・がその上に順次上書きされる。各レイヤはスプライト表示レイヤまたは直線表示レイヤであり、スプライト表示レイヤにはスプライトの属性データが記憶され、また、直線表示レイヤには直線属性テーブル15bの始点アドレス、終点アドレスが記憶される。ここで、スプライト属性データには、スプライト識別番号、表示位置を指示する表示位置データ、拡大/縮小等を指示するレンダリングデータ等がある。また、直線属性テーブル15bには、直線の属性、すなわち、直線の始点座標、終点座標、直線の幅、直線の色を指定する各データが記憶される。
図3の例によって具体的に説明すると、現在、レイヤ設定テーブル15aに#0〜#6の7レイヤが設定されており、レイヤ#2が直線表示レイヤであり、それ以外のレイヤ#0、#1、#3〜#6がスプライト表示レイヤとなっている。そして、レイヤ#0、#1、#3〜#6には各々1つのスプライトのスプライト属性が書き込まれている。一方、レイヤ#2には、始点アドレスとしてアドレス「200h」が、終点アドレスとしてアドレス「238h」が書き込まれている。この始点アドレスおよび終点アドレスが指示する直線属性テーブル15bの記憶領域には、直線#0〜#7の8本の直線の属性が順次書き込まれている。
次に図2に戻り、スプライトプレーンジェネレータ18はレイヤ設定テーブル15aの各レイヤから順次スプライト属性データを読み出し、読み出した属性データのスプライト識別番号をパターンメモリインターフェイス11へ出力する。パターンメモリインターフェイス11はその識別番号のスプライトパターンの画像データをパターンメモリ2から読み出し、スプライトプレーンジェネレータ18へ出力する。スプライトプレーンジェネレータ18はその画像データをカラーパレット14へ出力してRGBカラーデータに変換し、変換後のカラーデータをスプライト属性データと共にスプライトレンダリングプロセッサ19へ出力する。
スプライトレンダリングプロセッサ19は、スプライトプレーンジェネレータ18から受けたカラーデータに対し、スプライト属性データに含まれるレンダリングデータに基づく拡大/縮小、回転等の処理を施した後ラインバッファ20に書き込む。直線プレーンジェネレータ22は、レイヤ設定テーブル15aの直線表示レイヤから始点アドレス、終点アドレスを読み出し、読み出したアドレスに基づいて直線属性テーブル15bから直線属性データを読み出す。そして、読み出した直線属性データを直線レンダリングプロセッサ23へ出力する。この場合、直線の色を指定するカラーコードをカラーパレット14によってRGBカラーデータに変換する。
直線レンダリングプロセッサ23は、直線属性データに含まれる始点座標、終点座標、線幅に基づいて所定ラインに表示すべき直線の表示ドットを求め、求めた表示ドットに対応するラインバッファ20の記憶位置に直線属性データに含まれるカラーコードをカラーパレット14で変換したRGBカラーデータを書き込む。
ラインバッファ20は、モニタ4の1水平表示ラインの各表示ドットに対応する記憶スロットを有するバッファメモリであり、2個のバッファが設けられている。そして、それら2個のバッファが交互に書き込み用バッファおよび読み出し用バッファとして使用される。クロック発生回路25は基準クロックパルスを発生し、各部へ出力する。CRTコントローラ26は、クロック発生回路25から出力されるクロックパルスに基づいてモニタ4を駆動する各種のパルス信号、すなわち、水平走査パルス、垂直走査パルス等を発生し、モニタ4およびフレームデータコントローラ27へ出力する。フレームデータコントローラ27は、ラインバッファ20からカラーデータを読み出し、水平走査パルスに従ってDAC(ディジタル・アナログ・コンバータ)28a〜28cへ出力する。DAC28a〜28cはカラーデータをアナログカラー信号に変換し、モニタ4へ出力する。
次に、ラインバッファ方式による直線描画の過程の概略を図1、図5、図6を参照して説明する。
図1は、図2に示す構成から直線表示のための構成を抽出して描いた機能ブロック図である。直線を表示する場合は、CPU3が直線の始点座標、終点座標、線幅、線色等の属性データを直線属性テーブル15bに設定する。直線描画ブロックRB(図2における直線プレーンジェネレータ22、直線レンダリングプロセッサ23が対応)は表示する直線毎に直線属性テーブル15bの設定データを読み出し、そこに設定された属性にしたがって、表示位置の計算を行い、ラインバッファ20a、20b上の表示位置に属性データの線色に対応するカラーデータを描画する。
表示インタフェースブロックDI(図2におけるフレームデータコントローラ27、DAC28a〜28cが対応)は、CRTCブロック26において生成されたモニタ4のスキャンタイミングにしたがって、ラインバッファ20a、20bからカラーデータを読み出し、モニタ4ヘドットデータとして送出する。
ラインバッファ20a、20bは描画用、表示用のダブルバッファで構成され、1表示直線毎に描画と表示を切り替える。モニタ4は0ラインからNラインを順次表示する。ラインバッファ方式では、図5に示すように、2つのラインバッファ20a、20bがそれぞれ描画と表示を繰り返し行う。例えば、ラインバッファ20aが0ライン目を表示している間は、他方のラインバッファ20bに1ライン目の表示データを描画する。0ライン目の表示が終了した時点で、ラインバッファ20a、20bの描画と表示を切り替え、ラインバッファ20bに描画した1ライン目のデータを表示する。1ライン目を表示している間に、他方のラインバッファ20aには2ライン目の表示データを描画する。ラインバッファ方式はフレームバッファ方式に比べてメモリ容量が少なくて済むという利点があるが、前ラインでの描画パラメータを保持できないという欠点がある。
図6に示す始点(LSX, LSY)から終点(LEX,LEY)へ幅LWの直線を描画する場合、ラインバッファ方式で描画するために描画ラインYN毎に、描画開始ドットDRS、描画終了ドットDREを計算し、DRSからDREまでのドットに対応するラインバッファアドレスに線色で指定された色のカラーデータを書き込む。
次に、上述した直線描画処理の過程を図7〜図15を参照して詳細に説明する。
図7は直線描画処理の過程を示すフローチャート、図8は描画基準点を説明するための図である。図8に示すように、線幅LWが偶数幅(偶数ドット幅)の場合はグリッド上の始点および終点座標がそのまま描画基準点となり、線幅LWが奇数幅の場合はグリッドの始点および終点の座標それぞれのX座標およびY座標に0.5を加算した点が描画基準点となる。ここで、奇数幅の場合に、描画基準点をずらすのは、直線を滑らかに表示するためである。また、以下の説明においては、始点、終点のX、Y座標をそれぞれ次の表示によって表す。
始点(LSX,LSY)
終点(LEX,LEY)
また、座標の原点をモニタの左上角とする。
以下、図7のフローチャートの各ステップS1〜S12について順に説明する。
(S1)直線属性テーブルデータロード
直線描画ブロックRB(図1)は、モニタ4の各走査線の走査開始前において、直線属性テーブル15bから直線属性データを順次読み出し描画する。この属性データには、直線の始点座標、終点座標、線幅、線色を示すデータが含まれている。
(S2)Y方向描画範囲の計算
描画を行う走査線(Y=YNとする)が、描画すべき直線内であるか(直線に交差するか)否かを判定するために、直線描画範囲(Y方向の描画範囲)の最小値Ymin、最大値Ymaxをそれぞれ次の式によって求める。この直線描画範囲は直線の幅が奇数幅であるか、偶数幅であるかによって異なる。
奇数幅 Ymin=min(LSY,LEY)+0.5-LW/2
Ymax=max(LSY,LEY)+0.5+LW/2
偶数幅 Ymin=min(LSY,LEY)-LW/2
Ymax=max(LSY,LEY)+LW/2
ここで、min( , )、max( , )はそれぞれ小の方をとる、大の方をとるという意味の関数である。また、「0.5」は、図8に示すように、線幅が奇数の場合に始点、終点の座標と描画基準点とをずらすための値である。この0.5ずらすことによって、直線表示の不自然さを少なくすることができる。
また、走査線が上記YminとYmaxの間であって、次の端点処理範囲内であった時は端点処理を行った後、描画範囲内か否かを判断する。
奇数幅 LSY+0.5-LW/2≦YN<LSY+0.5+LW/2
LEY+0.5-LW/2≦YN<LEY+0.5+LW/2
偶数幅 LSY-LW/2≦YN<LSY+LW/2
LEY-LW/2≦YN<LEY+LW/2
なお、端点処理については後述する。
(S3)描画範囲内か否かの判定
描画対象の走査線がYminより小の場合、あるいは、Ymaxより大の場合は描画範囲外となり、その直線についての描画処理は行われず(ステップS3の判断が「NO」)次の直線の処理へ進む。また、上記端点処理範囲内の場合は、端点処理を行った後、描画範囲内か否かが判断される。端点処理を行った後、描画範囲内と判断された場合、および、描画対象の走査線が上記YminとYmaxの間であって、端点処理範囲より内側であった場合は以下の描画処理が行われる(ステップS3の判断が「YES」)。
(S4)傾きの計算、方向の判定
直線描画は始点から終点に向かって描画を行う。そのため始点と終点の位置により描画方法が異なる。また、直線の傾き(|LEX-LSX|/|LEY-LSY|の値)によっても描画方法が異なる。そこで、描画に先立って直線の傾きおよび直線の方向を求める。
○傾きの計算
直線の傾きDX、DYの値を計算する。いま、直線を図9に符号Lによって示すものとすると、傾きDX、DYは次の式によって求められる。
DX=Lx/Ly=(LEX-LSX)/(LEY-LSY)
DY=Ly/Lx=(LEY-LSY)/(LEX-LSX)
この傾きDX、DYは、実際には次のように計算する。まず、
△X=1/(LEX-LSX)
△Y=1/ (LEY-LSY)
を求める。この△X、△Yは逆数ROMに予め複数の計算値を記憶させておく。次に、
DX= (LEX-LSX) ×△Y
DY=(LEY-LSY)×△X
なる演算を行って傾きDX、DYを求める。
○方向の判定
いま、図10に示す直交座標における原点を直線の始点とし、直線終点がどの領域にあるかによって直線の方向を判定する。図10における斜めの線は直交座標軸に対し45度の直線である。そして、直線の終点が図に示すハッチングを付した領域以外にある場合を水平方向直線、ハッチングを付した領域にある場合を垂直方向直線、X軸上にある場合を水平直線、Y軸上にある場合を垂直直線とし、各直線毎に描画処理方法を分けている。
具体的には、次の演算によって直線種別が求められる。
|LEX-LSX|/|LEY-LSY|>1:水平方向直線
|LEX-LSX|/|LEY-LSY|≦1:垂直方向直線
LEX-LSX=0 LEY-LSY≠0 :垂直直線
LEX-LSX≠0 LEY-LSY=0 :水平直線
なお、図の領域0〜3は次の式から求められる。
LEX-LSX≧O LEY-LSY≧0 領域0
LEX-LSX<O LEY-LSY≧0 領域1
LEX-LSX<0 LEY-LSY<0 領域2
LEX-LSX≧0 LEY-LSY<0 領域3
(S5〜S7)直線種別の判定
上記の演算結果にしたがって直線種別が判定され、その判定結果にしたがって次の各処理に移行する。
垂直方向直線→ステップS8
水平方向直線→ステップS9
垂直直線→ステップS10
水平直線→ステップS11
(S8)垂直方向直線描画
垂直方向直線の描画の過程を図11〜図14を参照して説明する。
(1)直線中心点XNの計算
始点と終点を結ぶ直線L1(図11)と描画対象の走査線を表すラインH(Y=YN+0.5)の交差する点のX座標XNを次式によって求める。X座標XNは奇数幅と偶数幅で求め方が異なる。
奇数幅 XN =(LSX+0.5) + ((YN+0.5 ) - (LSY+0.5)) ×DX
偶数幅 XN = LSX + ((YN+0.5 ) - LSY ) ×DX
(2)描画実行幅Wdrの計算
設定された線幅LW(図6)から実行幅を計算する。この計算は、実際にはROMに複数の計算結果を用意しておき、それを読み出すことによって求める。
Wdr = round(√(1+ |DX|)× LW,0)
なお、round(A,0)はAの小数点以下を4捨5入する関数である。
(3)ラインHと直線の左側線L2との交点の座標XLr、直線の右側線L3との交点の座標XRrを次式によって求める。
XLr = XN-Wdr/2
XRr = XN+Wdr/2
(4)X方向描画制限値XMAX、XMINの計算
走査線のY座標YNが前述した端点処理範囲内(ステップS2参照)の時は、X方向の描画範囲から描画制限値XMAX、XMINを求め、その制限値の範囲内において描画ドットを求める(端点処理という)。X方向の描画範囲は、図12に示すように、直線Lの始点および終点において直線Lに直角に引いた直線M1、M2の間である。そして、描画制限値XMAX、XMINは次の過程によって求められる。
まず、図13に示す直線の始点(LSX, LSY)によって決まるX方向描画範囲XSlimitを次式によって求める。
奇数幅 XSlimit = (LSX+0.5)-((YN+0.5)-(LSY+0.5))× DY
偶数幅 XSlimit = LSX -((YN+0.5)- LSY )× DY
次に、図14に示す直線の終点(LEX, LEY)によって決まるX方向描画範囲XElimitを次式によって求める。
奇数幅 XElimit = (LEX+0.5)-((YN+0.5)-(LEY+0.5))× DY
偶数幅 XElimit = LEX -((YN+0.5)- LEY )× DY
X方向描画制限値XMIN、XMAXは図10に示す領域0〜3、XSlimit、XElimitから以下のように決まる。
領域0 : XMIN = XSlimit XMAX = XElinit
領域1 : XMIN = XElimit XMAX = XSlimit
領域2 : XMIN = XElimit XMAX = XSlimit
領域3 : XMIN = XSlimit XMAX = XElimit
(5)描画開始ドッド(DRS)及び描画終了ドット(DRE)の計算
これまでに計算したXLr、XRr、XMIN、XMAXの値より描画開始ドットDRS、描画終了ドットDREを以下の式によって計算する。
DRS = round(max(XLr、XMIN),0)
DRE = round(min(XRr、XMAX),0)
(6)ラインバッファヘの描画
DRSからDREまでのドットに対応したラインバッファのアドレスに、指定された線色データを書き込む(図13、図14のハッチング参照)。ただしこの場合、DREの1つ前のドットまでで、DREのドットは含まれない。
(S9)水平方向直線描画
水平方向直線の描画の過程を図15を参照して説明する。
(1)描画実行幅Wdrの計算
設定された線幅LWから実行幅Wdrを計算する。ここで、実行幅Wdrは、図15に示すように走査線に対し垂直方向となる。この計算は、実際にはROMに複数の計算結果を用意しておき、それを読み出すことによって求める。
Wdr = round(√(1+ |DY|)× LW,0)
(2)直線の左端点のX座標XLr、右端点のX座標XRrの計算
XLrは奇数幅と偶数幅および描画領域で求め方が異なる。
○描画領域0,2
奇数幅 XLr=(LSX+0.5)+((YN+0.5)-(LSY+0.5)-Wdr/2)×DX
偶数幅 XLr=LSX +((YN+0.5)- LSY )-Wdr/2)×DX
○描画領域1,3
奇数幅 XLr=(LSX+0.5)+((YN+0.5)- LSY+0.5)+Wdr/2)×DX
偶数幅 XLr= LSX +((YN+0.5)- LSY )+Wdr/2)×DX
XRrも奇数幅と偶数幅および描画領域で求め方が異なる。
○描画領域0,2
奇数幅 XRr=(LSX+0.5)+((YN+0.5)-(LSY+0.5)+Wdr/2)×DX
偶数幅 XRr=LSX +((YN+0.5)- LSY )+Wdr/2)×DX
○描画領域1,3
奇数幅 XRr=(LSX+0.5)+((YN+0.5)- LSY+0.5)-Wdr/2)×DX
偶数幅 XRr= LSX +((YN+0.5)- LSY )-Wdr/2)×DX
(3)X方向描画制限値XMAX、XMINの計算
この計算は前述した(S8)垂直方向直線描画の項目(4)と全く同じである。
(4)描画開始ドット(DRS)及び描画終了ドット(DRE)の計算
この計算も前述した(S8)垂直方向直線描画の項目(5)と全く同じである。
(5)ラインバッファヘの描画
DRSからDREまでのドットに対応したラインバッファのアドレスに、指定された線色データを書き込む(図15のハッチング参照)。ただし、DREの1つ前のドットまでで、DREのドットは含まれない。DRS≧DREであった場合はラインバッファにデータを書き込まない。
(S10)垂直直線描画
垂直直線描画(LEXーLSX=O LEY-LSY≠0)の場合は以下の手順で描画を行う。
(1)Y方向描画範囲の計算
垂直直線描画の場合のY方向描画範囲は他の描画方法と異なり、次式によって計算されるYmin、Ymaxが、Ymin≦YN<Ymaxの時のみ描画を実行する。Ymin、Ymaxの計算は奇数幅と偶数幅で異なる。
奇数幅 Ymin = min(LSY,LEY) + 1
Ymax = max(LSY,LEY) + 1
偶数幅 Ymin = min(LSY,LEY)
Ymax - max(LSY,LEY)
(2)描画開始ドットDRS及び描画終了ドットDREの計算
DRS、DREの計算は奇数幅と偶数幅で異なる。
奇数幅 DRS = LSX+0.5-LW/2
ORE = LSX+0.5+LW/2
偶数幅 DRS = LSX-LW/2
ORE = LSX+LW/2
(3)ラインバッファヘの描画
DRSからDREまでのドットに対応したラインバッファのアドレスに、指定された線色データを書き込む。ただし、DREの1つ前のドットまでで、DREのドットは含まれない。
(S11)水平直線描画
水平直線描画(LEX-LSX≠O LEY-LSY=0)の場合以下の手順で描画を行う。
(1)描画開始ドットDRS及び描画終了ドットDREの計算
DRS、DREの計算は奇数幅と偶数幅で異なる。
奇数幅 DRS = min(LSX,LEX)+1
DRE = max(LSX,LEX)+1
偶数幅 DRS = min(LSX,LEX)
DRE = nax(LSX,LEX)
(2)ラインバッファヘの描画
DRSからDREまでのドットに対応したラインバッファのアドレスに、指定された線色データを書き込む。ただし、DREの1つ前のドットまでで、DREのドットは含まれない。
ディスプレイに幅のある直線を表示する場合に使用される。
この発明の第1の実施形態による画像処理装置の要部の構成を示す機能ブロック図である。 同実施形態による画像処理装置の構成を示すブロック図である。 同画像処理装置における汎用テーブル15の記憶内容を示す図である。 同画像処理装置における表示レイヤを示す図である。 同画像処理装置におけるラインバッファ20a、20bを説明するための図である。 同画像処理装置における直線表示の概要を説明するための直線図である。 同画像処理装置の直線表示動作を説明するためのフローチャートである。 直線の始点および終点の座標を説明するための図である。 直線の傾きを説明するための図である。 直線の傾きに基づく直線の区分けを説明するための図である。 垂直方向直線の描画を説明するための図である。 描画領域を説明するための図である。 垂直方向直線の描画における端点処理を説明するための図である。 垂直方向直線の描画における端点処理を説明するための図である。 水平方向直線の描画を説明するための図である。 従来の直線表示の問題点を説明するための図である。 従来の直線表示の問題点を説明するための図である。
符号の説明
3…CPU、4…モニタ、15…汎用テーブル、15b…直線属性テーブル、20a、20b…ラインバッファ、22…直線プレーンジェネレータ、23…直線レンダリングプロセッサ、RB…直線描画ブロック。

Claims (4)

  1. 表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前に直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理方法において、
    前記直線の始点座標、終点座標および線幅に基づいて前記直線の垂直方向の描画範囲を計算し、前記走査線が描画範囲外であった時直線の描画を中止する第1の処理と、
    前記走査線が描画範囲内であった時、前記直線の傾きを前記始点座標および終点座標に基づいて計算する第2の処理と、
    前記直線の傾きが走査線に対し45度〜135度であった場合に、前記直線の始点座標、終点座標および前記走査線の座標に基づいて前記直線の中心線と前記走査線の交点の座標を求めると共に、前記直線の始点座標、終点座標および線幅に基づいて前記直線の走査線方向長さを計算し、前記交点座標および前記走査線方向長さから前記走査線と前記直線の左側線、右側線との各交点の座標を求める第3の処理と、
    前記直線の傾きが前記走査線に対し0度〜45度または135度〜180度であった場合に、前記直線の始点座標、終点座標および線幅に基づいて前記直線の走査線垂直方向長さを計算し、前記直線の始点座標、終点座標、前記走査線垂直方向長さおよび前記走査線の座標から前記走査線と前記直線の左側線、右側線との各交点の座標を求める第4の処理と、
    前記第3または第4の処理によって求めた座標値に基づいて描画ドットを決定する第5の処理と、
    決定された描画ドットに対応するラインバッファの記憶位置に表示データを書き込む第6の処理と、
    を有することを特徴とする画像処理方法。
  2. 前記走査線が、前記直線の予め決められた端点範囲を通過するか否かを判断する第7の処理と、
    前記走査線が前記端点範囲を通過する場合に、前記直線の始点座標、終点座標および前記走査線の座標に基づいて前記走査線方向の描画ドットの限界値を求める第8の処理と、
    を有し、前記第6の処理は、前記第7の処理の結果が「通過」であった場合に、前記ラインバッファの記憶位置に表示データを書き込む際において前記第8の処理によって求められた限界値の外の描画ドットの書き込みを行わないことを特徴とする請求項に記載の画像処理方法。
  3. 表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前に直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理装置において、
    前記直線の始点座標、終点座標および線幅に基づいて前記直線の垂直方向の描画範囲を演算する第1の演算手段と、
    前記走査線が前記第1の演算手段によって演算された描画範囲内であった時直線描画の指示を出力する制御手段と、
    前記直線描画の指示を受けて前記直線の始点座標および終点座標に基づいて前記直線の傾きを演算する第2の演算手段と、
    前記直線の傾きが走査線に対し45度〜135度であった場合に、前記直線の始点座標、終点座標および前記走査線の座標に基づいて前記直線の中心線と前記走査線の交点の座標を求めると共に、前記直線の始点座標、終点座標および線幅に基づいて前記直線の走査線方向長さを計算し、前記交点座標および前記走査線方向長さから前記走査線と直線の左側線、右側線との各交点の座標を求める第3の演算手段と、
    前記直線の傾きが走査線に対し0度〜45度または135度〜180度であった場合は、前記直線の始点座標、終点座標および線幅に基づいて前記直線の走査線垂直方向長さを計算し、前記直線の始点座標、終点座標、前記走査線垂直方向長さおよび前記走査線の座標から前記走査線と前記直線の左側線、右側線との各交点の座標を求める第4の演算手段と、
    前記第3または第4の演算手段によって求められた座標値に基づいて描画ドットを決定する描画ドット決定手段と、
    決定された描画ドットに対応するラインバッファの記憶位置に表示データを書き込む書込手段と、
    を具備することを特徴とする画像処理装置。
  4. 前記走査線が、前記直線の予め決められた端点範囲を通過するか否かを判断する判断手段と、
    前記走査線が前記端点範囲を通過する場合に、前記直線の始点座標、終点座標および前記走査線の座標に基づいて前記走査線方向の描画ドットの限界値を求める第5の演算手段と、
    を有し、前記書込手段は、前記判断手段の結果が「通過」であった場合に、前記ラインバッファの記憶位置に表示データを書き込む際において前記第5の演算手段によって求められた限界値の外の描画ドットの書き込みを行わないことを特徴とする請求項に記載の画像処理装置。
JP2004063889A 2004-03-08 2004-03-08 画像処理方法および画像処理装置 Expired - Fee Related JP4320604B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004063889A JP4320604B2 (ja) 2004-03-08 2004-03-08 画像処理方法および画像処理装置
US11/070,941 US7439980B2 (en) 2004-03-08 2005-03-03 Image processing method and apparatus
US12/283,421 US20090051689A1 (en) 2004-03-08 2008-09-11 Image processing method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004063889A JP4320604B2 (ja) 2004-03-08 2004-03-08 画像処理方法および画像処理装置

Publications (2)

Publication Number Publication Date
JP2005251076A JP2005251076A (ja) 2005-09-15
JP4320604B2 true JP4320604B2 (ja) 2009-08-26

Family

ID=35031472

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004063889A Expired - Fee Related JP4320604B2 (ja) 2004-03-08 2004-03-08 画像処理方法および画像処理装置

Country Status (1)

Country Link
JP (1) JP4320604B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005257886A (ja) * 2004-03-10 2005-09-22 Yamaha Corp 画像処理方法および画像処理装置

Also Published As

Publication number Publication date
JP2005251076A (ja) 2005-09-15

Similar Documents

Publication Publication Date Title
JP4327105B2 (ja) 描画方法、画像生成装置、および電子情報機器
JPH07146952A (ja) 3次元画像処理装置
JP5172640B2 (ja) ベクトル図形描画装置
US6215501B1 (en) Method and filling a polygon and recording medium
US7439980B2 (en) Image processing method and apparatus
JP4320604B2 (ja) 画像処理方法および画像処理装置
JP4325812B2 (ja) ベクター画像描画回路およびベクター画像描画方法
JP3898426B2 (ja) 図形描画装置
JPS60173676A (ja) 図形塗りつぶし方式
US8736635B2 (en) Figure drawing device, anti-aliasing method, and storage medium
JP3872056B2 (ja) 描画方法
JP2005257886A (ja) 画像処理方法および画像処理装置
US7667714B2 (en) Patterned polygon rendering apparatus
JP2011028641A (ja) 画像処理装置及び画像処理方法
JP2614111B2 (ja) 直線表示要素と矩形ウインドウの相互関係の検出方法
JP3249096B2 (ja) 図形塗りつぶし装置
JP2913635B2 (ja) ビツトマツプデイスプレイシステムにおける描画方法
JP3211591B2 (ja) イメージ処理装置
JPS61267096A (ja) 多角形図形のぬりつぶし描画表示装置
JP2903514B2 (ja) 高速描画方法
JP2611599B2 (ja) コンピュータグラフイックスのデータ処理方法及び装置
JP3154343B2 (ja) 多角図形の塗り潰し表示方法
JPH07109628B2 (ja) 図形情報の表示処理方法
JPH08235380A (ja) 多面体表示方法および多面体表示装置
JP4666480B2 (ja) 線描画装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060524

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090202

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090408

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: 20090507

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090520

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120612

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120612

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20130612

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20140612

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees