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

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

Info

Publication number
JP2005257886A
JP2005257886A JP2004067348A JP2004067348A JP2005257886A JP 2005257886 A JP2005257886 A JP 2005257886A JP 2004067348 A JP2004067348 A JP 2004067348A JP 2004067348 A JP2004067348 A JP 2004067348A JP 2005257886 A JP2005257886 A JP 2005257886A
Authority
JP
Japan
Prior art keywords
line
display
straight line
data
scanning
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.)
Pending
Application number
JP2004067348A
Other languages
English (en)
Inventor
Mitsuhiro Motome
光弘 本目
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 JP2004067348A priority Critical patent/JP2005257886A/ja
Priority to US11/070,941 priority patent/US7439980B2/en
Publication of JP2005257886A publication Critical patent/JP2005257886A/ja
Priority to US12/283,421 priority patent/US20090051689A1/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Image Generation (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Image Input (AREA)
  • Image Processing (AREA)

Abstract

【課題】 直線の接続部および端部を滑らかに表示することができる画像表示方法を提供する。
【解決手段】 直線描画ブロックRBは、直線属性テーブル15bから属性データを読み出し、読み出した属性データが直線端部の円処理を指示しているか否かを判断する。そして、直線端部の円処理を指示していた場合に、描画対象の走査線上の表示ドットであって、直線の端部に描いた線幅を直径とする仮想円に含まれる表示ドットを検出し、検出した表示ドットに対応するラインバッファ20a、20bの記憶位置に表示データを描画する。
【選択図】 図1

Description

本発明は、幅のある直線の表示処理に係り、特に、直線の端部処理の改良を図った画像処理方法および装置に関する。
従来、各種のソフトウエアにおいて、モニタに複数の直線を表示することはしばしば行われ、また、単に幅のない直線だけでなく、幅のある直線の表示も必要とされる。この幅のある直線の表示において、直線端部に円描画処理を行わないと、直線端部の見栄えが悪く、特に、2本の直線の接続部において直線が滑らかに接続されない問題がある。そこで、従来、幅のある直線の接続部に、図19(a)に示すように円を描き、これにより2本の直線を滑らかに接続することが行われた(特許文献1参照)。
特開昭62−285188号公報
しかしながら、上述した従来の処理は、モニタの走査線に平行または垂直に計った線幅を直径とした円を直線端部に描いていたため、図19(a)に示すように、円の大きさが線幅より大きくなり、直線の接続部が滑らかにならない問題があった。また、従来の処理は、接続部であることを判定して円を描画するため、接続部でない直線端部が滑らかにならず、さらに、接続部であることを自動的に判別する回路負荷が大きい問題があった。
本発明は上記事情を考慮してなされたもので、その目的は、直線の接続部を滑らかにすることができる画像処理方法および画像処理装置を提供することにある。また、この発明の他の目的は、接続部以外の直線端部についても滑らかにすることができる画像処理方法および画像処理装置を提供することにある。
この発明は上記の課題を解決するためになされたもので、請求項1に記載の発明は、表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前に直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理方法において、前記走査線上の表示ドットであって、前記直線の端部に描いた線幅を直径とする仮想円に含まれる表示ドットを検出する第1の処理と、前記第1の処理によって検出された表示ドットに対応する前記ラインバッファの記憶位置に表示データを書き込む第2の処理とを有することを特徴とする画像処理方法である。
請求項2に記載の発明は、表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前において、第1の記憶手段内の属性データに基づいて直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理方法において、前記第1の記憶手段から前記属性データを読み出す第1の処理と、前記第1の処理によって読み出された属性データが直線端部の円処理を指示しているか否かを判断する第2の処理と、前記第2の処理が直線端部の円処理を指示していた場合に、前記走査線上の表示ドットであって、前記直線の端部に描いた線幅を直径とする仮想円に含まれる表示ドットを検出する第3の処理と、前記第3の処理によって検出された表示ドットに対応する前記ラインバッファの記憶位置に表示データを書き込む第4の処理とを有することを特徴とする画像処理方法である。
請求項3に記載の発明は、請求項2に記載の画像処理方法において、前記第3の処理は、予め第2の記憶手段内に記憶された、円の表示ドットを指定するデータを、前記直線の始点または終点のX,Y座標および前記走査線のY座標に基づいて読み出し、読み出したデータに基づいて表示ドットを検出することを特徴とする。
請求項4に記載の発明は、請求項3に記載の画像処理方法において、前記第2の記憶手段に、描画対象画像の表示データとバック画像の表示データの混合比を示すデータを記憶させることを特徴とする。
請求項5に記載の発明は、表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前に直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理装置において、前記走査線上の表示ドットであって、前記直線の端部に描いた線幅を直径とする仮想円に含まれる表示ドットを検出する検出手段と、前記検出手段によって検出された表示ドットに対応する前記ラインバッファの記憶位置に表示データを書き込む書込手段とを具備することを特徴とする画像処理装置である。
請求項6に記載の発明は、表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前において、第1の記憶手段内の属性データに基づいて直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理装置において、前記第1の記憶手段から前記属性データを読み出す読出手段と、前記読出手段によって読み出された属性データが直線端部の円処理を指示しているか否かを判断する判断手段と、前記判断手段が直線端部の円処理を指示していた場合に、前記走査線上の表示ドットであって、前記直線の端部に描いた線幅を直径とする仮想円に含まれる表示ドットを検出する検出手段と、前記検出手段によって検出された表示ドットに対応する前記ラインバッファの記憶位置に表示データを書き込む書込手段とを具備することを特徴とする画像処理装置である。
請求項7に記載の発明は、請求項5または請求項6に記載の画像処理装置において、前記検出手段は、予め第2の記憶手段内に記憶された、円の表示ドットを指定するデータを、前記直線の始点または終点のX座標、Y座標および前記走査線のY座標に基づいて読み出し、読み出したデータに基づいて表示ドットを検出することを特徴とする。
請求項8に記載の発明は、請求項7に記載の画像処理装置において、前記第2の記憶手段に、表示対象画像とバック画像の混合比を示すデータを記憶させることを特徴とする。
この発明によれば、走査線上の表示ドットであって、直線の端部に描いた線幅を直径とする仮想円に含まれる表示ドットを検出する第1の処理と、第1の処理によって検出された表示ドットに対応するラインバッファの記憶位置に表示データを書き込む第2の処理とを有しているので、図19(b)に示すように、直線の接続部を滑らかにすることができると共に、接続部以外の直線端部についても滑らかにすることができる効果がある。また、この発明によれば、接続部を自動判別する回路が不要となる利点がある。
以下、図面を参照し、この発明の実施の形態について説明する。図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までのドットに対応するラインバッファアドレスに線色で指定された色のカラーデータを書き込む。また、始点円描画、終点円描画を指定するデータが共に”1”であった場合は、同図に破線で示すように、始点、終点において線幅LWを直径とする円を想定し、その円の内部にもカラーデータを書き込む。
次に、上述した直線描画処理の過程を図7〜図18を参照して詳細に説明する。
図7は直線描画処理の過程を示すフローチャートである。直線描画ブロックRB(図1)は、まず、直線属性テーブル15bから直線属性データをロードする(ステップSa1)。次に、ロードした属性データに基づいて始点円、終点円を除く直線描画を行う(ステップSa2)。次に、属性データの始点円描画を指定するデータがON(”1”)であるか否かを判断し(ステップSa3)、ONであった場合は始点円描画処理を行い(ステップSa4)、ONでなかった場合はステップSa5へ進む。ステップSa5では、属性データの終点円描画を指定するデータがON(”1”)であるか否かを判断し(ステップSa5)、ONであった場合は終点円描画処理を行い(ステップSa6)、ONでなかった場合はステップSa7へ進む。ステップSa7では、描画処理が終了した直線が現在処理中のレイヤにおける最終直線であるか否かを判断し、最終直線であった場合は直線描画処理を終了し、最終直線でなかった場合は、ステップSa1へ戻り、次の直線の描画処理を行う。
図8〜図16は上述したステップSa2の直線描画処理を説明するための図である。図図9は描画基準点を説明するための図である。図9に示すように、線幅LWが偶数幅(偶数ドット幅)の場合はグリッド上の始点および終点座標がそのまま描画基準点となり、線幅LWが奇数幅の場合はグリッドの始点および終点の座標それぞれのX座標およびY座標に0.5を加算した点が描画基準点となる。ここで、奇数幅の場合に、描画基準点をずらすのは、直線を滑らかに表示するためである。また、以下の説明においては、始点、終点のX、Y座標をそれぞれ次の表示によって表す。
始点(LSX,LSY)
終点(LEX,LEY)
また、座標の原点をモニタの左上角とする。
以下、図8のフローチャートの各ステップ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」は、図9に示すように、線幅が奇数の場合に始点、終点の座標と描画基準点とをずらすための値である。この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の値を計算する。いま、直線を図10に符号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を求める。
○方向の判定
いま、図11に示す直交座標における原点を直線の始点とし、直線終点がどの領域にあるかによって直線の方向を判定する。図11における斜めの線は直交座標軸に対し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)垂直方向直線描画
垂直方向直線の描画の過程を図12〜図15を参照して説明する。
(1)直線中心点XNの計算
始点と終点を結ぶ直線L1(図12)と描画対象の走査線を表すライン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方向の描画範囲は、図13に示すように、直線Lの始点および終点において直線Lに直角に引いた直線M1、M2の間である。そして、描画制限値XMAX、XMINは次の過程によって求められる。
まず、図14に示す直線の始点(LSX, LSY)によって決まるX方向描画範囲XSlimitを次式によって求める。
奇数幅 XSlimit = (LSX+0.5)-((YN+0.5)-(LSY+0.5))× DY
偶数幅 XSlimit = LSX -((YN+0.5)- LSY )× DY
次に、図15に示す直線の終点(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は図11に示す領域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までのドットに対応したラインバッファのアドレスに、指定された線色データを書き込む(図14、図15のハッチング参照)。ただしこの場合、DREの1つ前のドットまでで、DREのドットは含まれない。
(S9)水平方向直線描画
水平方向直線の描画の過程を図16を参照して説明する。
(1)描画実行幅Wdrの計算
設定された線幅LWから実行幅Wdrを計算する。ここで、実行幅Wdrは、図16に示すように走査線に対し垂直方向となる。この計算は、実際には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までのドットに対応したラインバッファのアドレスに、指定された線色データを書き込む(図16のハッチング参照)。ただし、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のドットは含まれない。
以上が、図7の直線描画処理(ステップSa2)である。次に、始点円描画処理(ステップSa4)、終点円描画処理(ステップSa6)について図17、図18を参照して説明する。
始点円、終点円の描画は次の手順によって行われる。
(E−1)走査線YNが円の描画範囲内であるかの判定
(E−2)X方向描画範囲の計算
(E−3)描画ドットを求める
以下、各処理を順次説明する。
(E−1)走査線YNが円の描画範囲内であるかの判定
始点円、終点円の中心は、図17に示すように、線幅が偶数幅の場合はグリッド線上となり、奇数幅の場合はグリッド線の中間となる。したがって、Y方向の描画範囲は奇数幅と偶数幅で計算方法が異なり、次のようになる。なお、この範囲は、前述した端点処理の範囲と同じである。
奇数幅 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 (終点に対する描画範囲)
(E−2)X方向描画範囲の計算
X方向描画範囲は奇数幅と偶数幅で計算方法が異なり、描画範囲の最左端のドットDRSのX座標XL(図17参照)、最右端のドットDREのX座標XR(図17参照)はそれぞれ次のようになる。
○始点に対する計算
奇数幅
XL=LSX+0.5-LW/2
XR=LSX+0.5+LW/2
偶数幅
XL=LSX-LW/2
XR=LSX+LW/2
○終点に対する計算
奇数幅
XL=LEX+0.5-LW/2
XR=LEX+0.5+LW/2
偶数幅
XL=LEX-LW/2
XR=LEX+LW/2
(E−3)描画ドットを求める
円の描画データは線幅1〜16について予め作成し、円ROMに記憶させておく。図18は円ROMに記憶された描画データを説明するための図であり、線幅LWが16の場合(偶数幅)と15の場合(奇数幅)について示している。この図に示すように、円ROMには円の1/4の部分について描画データが記憶され、また、円内の場合(描画ドットの場合)はデータ”1”が記憶され、円外の場合はデータ”0”が記憶されている。そして、この円ROM内の1ビットのデータがYアドレスY_ADとXアドレスX_ADによって読み出される。例えば、LW=16の場合において、YアドレスY_AD=3、XアドレスX_AD=3の場合は描画を指示するデータ”1”が読み出され、YアドレスY_AD=6、XアドレスX_AD=7の場合は描画せずを指示するデータ”0”が読み出される。
次に、YアドレスY_ADとXアドレスX_ADを求める計算について説明する。
○YアドレスY_ADの計算
走査線の座標YNから円ROMのYアドレスを計算する。Yアドレスの計算は奇数幅と偶数幅で計算方法が異なる。
始点に対する計算
奇数幅 Y_AD=abs(YN-LSY)
偶数幅 Y_AD=INT(abs(YN+0.5-LSY))
終点に対する計算
奇数幅 Y_AD=abs(YN−LEY)
偶数幅 Y_AD=INT(abs(YN+0.5-LEY))
なお、abs( )は括弧内の値の絶対値を求める演算式であり、INT( )は括弧内の値の整数部分を求める演算式である。
○XアドレスX_ADの計算
円描画では前述したX方向描画範囲において求めたドットDRSからドットDREまでを描画対象とする。描画対象ドットの座標XNに対する円ROMのXアドレスX_ADを次の式によって計算する。XアドレスX_ADの計算は奇数幅と偶数幅で異なる。
始点に対する計算
奇数幅 X_AD=abs(XN-LSX)
偶数幅 X_=INT(abs(XN+0.5-LSX))
終点に対する計算
奇数幅 X_=abs(XN-LEX)
偶数幅 X_=INT(abs(XN+0.5-LEX))
上述した計算によって求めたYアドレスY_ADおよびXアドレスX_ADに基づいて円ROMから描画データを読み出し、読み出したデータが”1”の場合はその描画対象ドットに直線の線色のカラーコードを書き込み、”0”の場合は書き込みを行わない。
なお、上述した実施形態においては、円ROMの1アドレスについて1ビットの描画データを記憶させているが、これに代えて複数ビットの描画データを記憶させてもよい。これにより、円のαブレンディング描画を行うことが可能となる。ここで、αブレンディングとは、描画対象画像とバック画像との混合色によって画像表示をすることである。例えば、円ROMに4ビットのデータを記憶させた場合、次の16段階のαブレンディングが可能となる。
円ROMデータ αブレンディング演算式
0000 (円)×16/16+(バック画像)×0/16
0001 (円)×15/16+(バック画像)×1/16
・・・・・・・・・・・・・・・
1111 (円)×1/16+(バック画像)×15/16
なお、(円)は円のカラーコードを指し、(バック画像)はバック画像のカラーコードを指す。また、αブレンディングを行わない場合は次のように描画する。
円ROMデータ 描画データ
0000〜0111 円のカラーコードを描画
1000〜1111 描画せず
また、上述したαブレンディング処理は円の外周線のアンチェイリアス処理に適用することができる。ここで、アンチェイリアス処理とは、ドット表示による画像表示を行う場合に、斜めの境界線がギザギザに表示されることを防止する処理であり、円の外周部(境界線)のドット描画においてαブレンディング処理を行うことによってアンチェイリアスを実行することができる。例えば、図18の線幅LW=16の場合において、YアドレスY_AD=1、XアドレスX_AD=7の記憶データは、1ビットの場合は”1”となるが、4ビットの場合は、円内の面積と円外の面積の比が約15:1であることを考慮し、データ”0001”を記憶させておく。この場合、同ドットの表示は、
(円)×15/16+(バック画像)×1/16
なるカラーデータによって表示される。円の外周線沿いの他のデータについても同様である。この処理により、円に含まれる面積が大きいドットほど円のカラーが強く表示され、円に含まれる面積が小さくなるに従いバック画像のカラーが強く表示される。この処理により、円外周線のギザギザが柔らかくなる。
ディスプレイに幅のある直線を表示する場合に使用される。
この発明の第1の実施形態による画像処理装置の要部の構成を示す機能ブロック図である。 同実施形態による画像処理装置の構成を示すブロック図である。 同画像処理装置における汎用テーブル15の記憶内容を示す図である。 同画像処理装置における表示レイヤを示す図である。 同画像処理装置におけるラインバッファ20a、20bを説明するための図である。 同画像処理装置における直線表示の概要を説明するための直線図である。 同画像処理装置の直線表示動作を説明するためのフローチャートである。 図7における直線描画(ステップSa2)の処理を示すフローチャートである。 直線の始点および終点の座標を説明するための図である。 直線の傾きを説明するための図である。 直線の傾きに基づく直線の区分けを説明するための図である。 垂直方向直線の描画を説明するための図である。 描画領域を説明するための図である。 垂直方向直線の描画における端点処理を説明するための図である。 垂直方向直線の描画における端点処理を説明するための図である。 水平方向直線の描画を説明するための図である。 直線端部の始点円、終点円を説明するための図である。 始点円描画、終点円描画に使用される円ROM内のデータを説明するための図である。 従来の直線表示の問題点および本発明の効果を説明するための図である。
符号の説明
3…CPU、4…モニタ、15…汎用テーブル、15b…直線属性テーブル、20a、20b…ラインバッファ、22…直線プレーンジェネレータ、23…直線レンダリングプロセッサ、RB…直線描画ブロック。

Claims (8)

  1. 表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前に直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理方法において、
    前記走査線上の表示ドットであって、前記直線の端部に描いた線幅を直径とする仮想円に含まれる表示ドットを検出する第1の処理と、
    前記第1の処理によって検出された表示ドットに対応する前記ラインバッファの記憶位置に表示データを書き込む第2の処理と、
    を有することを特徴とする画像処理方法。
  2. 表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前において、第1の記憶手段内の属性データに基づいて直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理方法において、
    前記第1の記憶手段から前記属性データを読み出す第1の処理と、
    前記第1の処理によって読み出された属性データが直線端部の円処理を指示しているか否かを判断する第2の処理と、
    前記第2の処理が直線端部の円処理を指示していた場合に、前記走査線上の表示ドットであって、前記直線の端部に描いた線幅を直径とする仮想円に含まれる表示ドットを検出する第3の処理と、
    前記第3の処理によって検出された表示ドットに対応する前記ラインバッファの記憶位置に表示データを書き込む第4の処理と、
    を有することを特徴とする画像処理方法。
  3. 前記第3の処理は、予め第2の記憶手段内に記憶された、円の表示ドットを指定するデータを、前記直線の始点または終点のX,Y座標および前記走査線のY座標に基づいて読み出し、読み出したデータに基づいて表示ドットを検出することを特徴とする請求項2に記載の画像処理方法。
  4. 前記第2の記憶手段に、描画対象画像の表示データとバック画像の表示データの混合比を示すデータを記憶させることを特徴とする請求項3に記載の画像処理方法。
  5. 表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前に直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理装置において、
    前記走査線上の表示ドットであって、前記直線の端部に描いた線幅を直径とする仮想円に含まれる表示ドットを検出する検出手段と、
    前記検出手段によって検出された表示ドットに対応する前記ラインバッファの記憶位置に表示データを書き込む書込手段と、
    を具備することを特徴とする画像処理装置。
  6. 表示装置の走査線の各表示ドットに対応する記憶位置を有するラインバッファに、前記走査線の走査開始前において、第1の記憶手段内の属性データに基づいて直線の表示データを書き込み、該書き込んだ表示データを前記走査線の走査タイミングに合わせて前記表示装置へ出力して前記直線の表示を行う画像処理装置において、
    前記第1の記憶手段から前記属性データを読み出す読出手段と、
    前記読出手段によって読み出された属性データが直線端部の円処理を指示しているか否かを判断する判断手段と、
    前記判断手段が直線端部の円処理を指示していた場合に、前記走査線上の表示ドットであって、前記直線の端部に描いた線幅を直径とする仮想円に含まれる表示ドットを検出する検出手段と、
    前記検出手段によって検出された表示ドットに対応する前記ラインバッファの記憶位置に表示データを書き込む書込手段と、
    を具備することを特徴とする画像処理装置。
  7. 前記検出手段は、予め第2の記憶手段内に記憶された、円の表示ドットを指定するデータを、前記直線の始点または終点のX座標、Y座標および前記走査線のY座標に基づいて読み出し、読み出したデータに基づいて表示ドットを検出することを特徴とする請求項5または請求項6に記載の画像処理装置。
  8. 前記第2の記憶手段に、表示対象画像とバック画像の混合比を示すデータを記憶させることを特徴とする請求項7に記載の画像処理装置。
JP2004067348A 2004-03-08 2004-03-10 画像処理方法および画像処理装置 Pending JP2005257886A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004067348A JP2005257886A (ja) 2004-03-10 2004-03-10 画像処理方法および画像処理装置
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
JP2004067348A JP2005257886A (ja) 2004-03-10 2004-03-10 画像処理方法および画像処理装置

Publications (1)

Publication Number Publication Date
JP2005257886A true JP2005257886A (ja) 2005-09-22

Family

ID=35083685

Family Applications (1)

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

Country Status (1)

Country Link
JP (1) JP2005257886A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011061888A1 (ja) * 2009-11-17 2011-05-26 パナソニック株式会社 映像信号処理装置及び映像表示装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62285188A (ja) * 1986-06-04 1987-12-11 Hitachi Ltd 線分の表示方法
JPH02232775A (ja) * 1989-03-07 1990-09-14 Brother Ind Ltd 図形処理装置
JPH05159067A (ja) * 1991-12-05 1993-06-25 Sharp Corp 図形描画装置
JPH06309395A (ja) * 1993-04-27 1994-11-04 Sharp Corp 画像作成装置
JPH0991444A (ja) * 1995-09-22 1997-04-04 Nec Corp グラフィックス表示装置
JPH11232071A (ja) * 1998-02-09 1999-08-27 Copyer Co Ltd 図形作成装置
JP2005251076A (ja) * 2004-03-08 2005-09-15 Yamaha Corp 画像処理方法および画像処理装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62285188A (ja) * 1986-06-04 1987-12-11 Hitachi Ltd 線分の表示方法
JPH02232775A (ja) * 1989-03-07 1990-09-14 Brother Ind Ltd 図形処理装置
JPH05159067A (ja) * 1991-12-05 1993-06-25 Sharp Corp 図形描画装置
JPH06309395A (ja) * 1993-04-27 1994-11-04 Sharp Corp 画像作成装置
JPH0991444A (ja) * 1995-09-22 1997-04-04 Nec Corp グラフィックス表示装置
JPH11232071A (ja) * 1998-02-09 1999-08-27 Copyer Co Ltd 図形作成装置
JP2005251076A (ja) * 2004-03-08 2005-09-15 Yamaha Corp 画像処理方法および画像処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011061888A1 (ja) * 2009-11-17 2011-05-26 パナソニック株式会社 映像信号処理装置及び映像表示装置

Similar Documents

Publication Publication Date Title
EP0437630B1 (en) Image processor
US7884825B2 (en) Drawing method, image generating device, and electronic information apparatus
US6768491B2 (en) Barycentric centroid sampling method and apparatus
JPH1186007A (ja) プリミティブにより覆われるピクセルの割合を求める方法
JP3547250B2 (ja) 描画方法
JP2005257886A (ja) 画像処理方法および画像処理装置
US7439980B2 (en) Image processing method and apparatus
JP2005215252A (ja) 画像処理方法および装置
JP4320604B2 (ja) 画像処理方法および画像処理装置
JP2010277304A (ja) 描画データ処理方法、図形描画システム、及び図形描画データ作成プログラム
JP2002140063A (ja) グラフィックス描画装置
JP4325812B2 (ja) ベクター画像描画回路およびベクター画像描画方法
JP3898426B2 (ja) 図形描画装置
JPS60173676A (ja) 図形塗りつぶし方式
JP3872056B2 (ja) 描画方法
JP4466234B2 (ja) 画像処理方法および装置
JP4106719B2 (ja) 画像処理装置
EP2346001A1 (en) Figure drawing device, anti-aliasing method, and storage medium
JP3249096B2 (ja) 図形塗りつぶし装置
JP2913635B2 (ja) ビツトマツプデイスプレイシステムにおける描画方法
JP2004086479A (ja) 図形を表示させるための情報処理装置、情報処理方法、その情報処理方法を実現するためのプログラム、およびそのプログラムを記録した記録媒体
JP3862877B2 (ja) 塗り潰し図形発生方法及びそれを用いた装置
JPH0350686A (ja) 図形処理方式
JPH07109628B2 (ja) 図形情報の表示処理方法
JP2001109896A (ja) エッジ描画方法及びこれを用いた画像処理装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060623

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100316

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100914

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110329