JP4320604B2 - 画像処理方法および画像処理装置 - Google Patents
画像処理方法および画像処理装置 Download PDFInfo
- 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
Links
Images
Landscapes
- Image Generation (AREA)
- Storing Facsimile Image Data (AREA)
Description
しかしながら、直線の始点と終点の座標および直線の幅の3データを所定ラインのドットデータに変換する処理は時間がかかり、このため、従来、ラインバッファによっては幅がある直線表示ができないという問題があった。
本発明は上記事情を考慮してなされたもので、その目的は、ラインバッファによって幅がある直線の表示を可能とする画像処理装置を提供することにある。また、この発明の他の目的は、端部が描画する直線に対して直交する直線となる画像処理装置を提供することにある。
次に、ラインバッファ方式による直線描画の過程の概略を図1、図5、図6を参照して説明する。
図7は直線描画処理の過程を示すフローチャート、図8は描画基準点を説明するための図である。図8に示すように、線幅LWが偶数幅(偶数ドット幅)の場合はグリッド上の始点および終点座標がそのまま描画基準点となり、線幅LWが奇数幅の場合はグリッドの始点および終点の座標それぞれのX座標およびY座標に0.5を加算した点が描画基準点となる。ここで、奇数幅の場合に、描画基準点をずらすのは、直線を滑らかに表示するためである。また、以下の説明においては、始点、終点のX、Y座標をそれぞれ次の表示によって表す。
始点(LSX,LSY)
終点(LEX,LEY)
また、座標の原点をモニタの左上角とする。
(S1)直線属性テーブルデータロード
直線描画ブロックRB(図1)は、モニタ4の各走査線の走査開始前において、直線属性テーブル15bから直線属性データを順次読み出し描画する。この属性データには、直線の始点座標、終点座標、線幅、線色を示すデータが含まれている。
描画を行う走査線(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ずらすことによって、直線表示の不自然さを少なくすることができる。
奇数幅 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
なお、端点処理については後述する。
描画対象の走査線がYminより小の場合、あるいは、Ymaxより大の場合は描画範囲外となり、その直線についての描画処理は行われず(ステップS3の判断が「NO」)次の直線の処理へ進む。また、上記端点処理範囲内の場合は、端点処理を行った後、描画範囲内か否かが判断される。端点処理を行った後、描画範囲内と判断された場合、および、描画対象の走査線が上記YminとYmaxの間であって、端点処理範囲より内側であった場合は以下の描画処理が行われる(ステップS3の判断が「YES」)。
直線描画は始点から終点に向かって描画を行う。そのため始点と終点の位置により描画方法が異なる。また、直線の傾き(|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 :水平直線
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
上記の演算結果にしたがって直線種別が判定され、その判定結果にしたがって次の各処理に移行する。
垂直方向直線→ステップS8
水平方向直線→ステップS9
垂直直線→ステップS10
水平直線→ステップS11
垂直方向直線の描画の過程を図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
設定された線幅LW(図6)から実行幅を計算する。この計算は、実際にはROMに複数の計算結果を用意しておき、それを読み出すことによって求める。
Wdr = round(√(1+ |DX|2)× LW,0)
なお、round(A,0)はAの小数点以下を4捨5入する関数である。
(3)ラインHと直線の左側線L2との交点の座標XLr、直線の右側線L3との交点の座標XRrを次式によって求める。
XLr = XN-Wdr/2
XRr = XN+Wdr/2
走査線のY座標YNが前述した端点処理範囲内(ステップS2参照)の時は、X方向の描画範囲から描画制限値XMAX、XMINを求め、その制限値の範囲内において描画ドットを求める(端点処理という)。X方向の描画範囲は、図12に示すように、直線Lの始点および終点において直線Lに直角に引いた直線M1、M2の間である。そして、描画制限値XMAX、XMINは次の過程によって求められる。
奇数幅 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
領域0 : XMIN = XSlimit XMAX = XElinit
領域1 : XMIN = XElimit XMAX = XSlimit
領域2 : XMIN = XElimit XMAX = XSlimit
領域3 : XMIN = XSlimit XMAX = XElimit
これまでに計算した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のドットは含まれない。
水平方向直線の描画の過程を図15を参照して説明する。
(1)描画実行幅Wdrの計算
設定された線幅LWから実行幅Wdrを計算する。ここで、実行幅Wdrは、図15に示すように走査線に対し垂直方向となる。この計算は、実際にはROMに複数の計算結果を用意しておき、それを読み出すことによって求める。
Wdr = round(√(1+ |DY|2)× LW,0)
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
この計算は前述した(S8)垂直方向直線描画の項目(4)と全く同じである。
(4)描画開始ドット(DRS)及び描画終了ドット(DRE)の計算
この計算も前述した(S8)垂直方向直線描画の項目(5)と全く同じである。
(5)ラインバッファヘの描画
DRSからDREまでのドットに対応したラインバッファのアドレスに、指定された線色データを書き込む(図15のハッチング参照)。ただし、DREの1つ前のドットまでで、DREのドットは含まれない。DRS≧DREであった場合はラインバッファにデータを書き込まない。
垂直直線描画(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)
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のドットは含まれない。
水平直線描画(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のドットは含まれない。
Claims (4)
- 表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前に直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理方法において、
前記直線の始点座標、終点座標および線幅に基づいて前記直線の垂直方向の描画範囲を計算し、前記走査線が描画範囲外であった時直線の描画を中止する第1の処理と、
前記走査線が描画範囲内であった時、前記直線の傾きを前記始点座標および終点座標に基づいて計算する第2の処理と、
前記直線の傾きが走査線に対し45度〜135度であった場合に、前記直線の始点座標、終点座標および前記走査線の座標に基づいて前記直線の中心線と前記走査線の交点の座標を求めると共に、前記直線の始点座標、終点座標および線幅に基づいて前記直線の走査線方向長さを計算し、前記交点座標および前記走査線方向長さから前記走査線と前記直線の左側線、右側線との各交点の座標を求める第3の処理と、
前記直線の傾きが前記走査線に対し0度〜45度または135度〜180度であった場合に、前記直線の始点座標、終点座標および線幅に基づいて前記直線の走査線垂直方向長さを計算し、前記直線の始点座標、終点座標、前記走査線垂直方向長さおよび前記走査線の座標から前記走査線と前記直線の左側線、右側線との各交点の座標を求める第4の処理と、
前記第3または第4の処理によって求めた座標値に基づいて描画ドットを決定する第5の処理と、
決定された描画ドットに対応するラインバッファの記憶位置に表示データを書き込む第6の処理と、
を有することを特徴とする画像処理方法。 - 前記走査線が、前記直線の予め決められた端点範囲を通過するか否かを判断する第7の処理と、
前記走査線が前記端点範囲を通過する場合に、前記直線の始点座標、終点座標および前記走査線の座標に基づいて前記走査線方向の描画ドットの限界値を求める第8の処理と、
を有し、前記第6の処理は、前記第7の処理の結果が「通過」であった場合に、前記ラインバッファの記憶位置に表示データを書き込む際において前記第8の処理によって求められた限界値の外の描画ドットの書き込みを行わないことを特徴とする請求項1に記載の画像処理方法。 - 表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前に直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理装置において、
前記直線の始点座標、終点座標および線幅に基づいて前記直線の垂直方向の描画範囲を演算する第1の演算手段と、
前記走査線が前記第1の演算手段によって演算された描画範囲内であった時直線描画の指示を出力する制御手段と、
前記直線描画の指示を受けて前記直線の始点座標および終点座標に基づいて前記直線の傾きを演算する第2の演算手段と、
前記直線の傾きが走査線に対し45度〜135度であった場合に、前記直線の始点座標、終点座標および前記走査線の座標に基づいて前記直線の中心線と前記走査線の交点の座標を求めると共に、前記直線の始点座標、終点座標および線幅に基づいて前記直線の走査線方向長さを計算し、前記交点座標および前記走査線方向長さから前記走査線と直線の左側線、右側線との各交点の座標を求める第3の演算手段と、
前記直線の傾きが走査線に対し0度〜45度または135度〜180度であった場合は、前記直線の始点座標、終点座標および線幅に基づいて前記直線の走査線垂直方向長さを計算し、前記直線の始点座標、終点座標、前記走査線垂直方向長さおよび前記走査線の座標から前記走査線と前記直線の左側線、右側線との各交点の座標を求める第4の演算手段と、
前記第3または第4の演算手段によって求められた座標値に基づいて描画ドットを決定する描画ドット決定手段と、
決定された描画ドットに対応するラインバッファの記憶位置に表示データを書き込む書込手段と、
を具備することを特徴とする画像処理装置。 - 前記走査線が、前記直線の予め決められた端点範囲を通過するか否かを判断する判断手段と、
前記走査線が前記端点範囲を通過する場合に、前記直線の始点座標、終点座標および前記走査線の座標に基づいて前記走査線方向の描画ドットの限界値を求める第5の演算手段と、
を有し、前記書込手段は、前記判断手段の結果が「通過」であった場合に、前記ラインバッファの記憶位置に表示データを書き込む際において前記第5の演算手段によって求められた限界値の外の描画ドットの書き込みを行わないことを特徴とする請求項3に記載の画像処理装置。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005257886A (ja) * | 2004-03-10 | 2005-09-22 | Yamaha Corp | 画像処理方法および画像処理装置 |
-
2004
- 2004-03-08 JP JP2004063889A patent/JP4320604B2/ja not_active Expired - Fee Related
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 |