JP2005301902A - 画像処理装置および画像処理システム - Google Patents

画像処理装置および画像処理システム Download PDF

Info

Publication number
JP2005301902A
JP2005301902A JP2004120603A JP2004120603A JP2005301902A JP 2005301902 A JP2005301902 A JP 2005301902A JP 2004120603 A JP2004120603 A JP 2004120603A JP 2004120603 A JP2004120603 A JP 2004120603A JP 2005301902 A JP2005301902 A JP 2005301902A
Authority
JP
Japan
Prior art keywords
stamp
image processing
linear equation
linear
information
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.)
Granted
Application number
JP2004120603A
Other languages
English (en)
Other versions
JP4030519B2 (ja
Inventor
Tatsuo Teruyama
山 竜 生 照
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2004120603A priority Critical patent/JP4030519B2/ja
Priority to US10/952,827 priority patent/US20050259100A1/en
Priority to TW093140131A priority patent/TWI282518B/zh
Publication of JP2005301902A publication Critical patent/JP2005301902A/ja
Application granted granted Critical
Publication of JP4030519B2 publication Critical patent/JP4030519B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

【課題】 スタンプの内外判定を高速に行うことが可能な画像処理装置を提供する。
【解決手段】 画像処理装置45は、DDAセットアップ部1と、コンテキスト部2と、直線方程式計算部3と、XY計算部4と、エッジ判定部5と、DDA制御部6と、マスク生成部7とを有する。複数のスレッドを交互に切り替えながらスタンプの処理を行い、スタンプがポリゴンの外部にあると判定されると、次に処理すべきスタンプを瞬時に切り替えるようにしたため、ポリゴンの外部にあるスタンプを無駄に処理するおそれがなくなり、効率的なラスタライズ処理が可能になる。
【選択図】 図3

Description

本発明は、複数画素からなるスタンプが直線方程式の内側にあるか外側にあるかを判定する画像処理装置に関する。
グラフィックプロセッサでは、頂点データからピクセルデータに変換するラスタライズ処理が行われる。従来のラスタライズ処理では、DDA(Digital Differencial Analyser)と呼ばれる手法で線形補間をしながらポリゴンの内外判定を行ったり、パラメータを生成する(特許文献1、非特許文献1,2参照)。このため、エッジ方程式の値を逐次加算しながら、加算結果の符号判定を行って、スタンプの移動方向を決定する。スループットを達成するためには、この一連の処理を1サイクルで行う必要があり、これが高クロック動作を阻害している。
ここで、ラスタライズとは、メインプロセッサから与えられたポリゴンの頂点座標に基づいて、ポリゴンの内部をスキャンしながら、内部の各ピクセル位置での座標やパラメータを生成する操作である。
上述したDDAでは、3つのステージA,B,Cに分けてスタンプの内外判定を行う。Aステージでは、現在のスタンプ位置での直線方程式の値と、次の行(スタンプからY方向にスタンプ高さ分だけ移動した位置)の直線方程式の値とを格納する。Bステージでは、現在値に傾きを加算して次のスタンプの直線方程式の値を計算する。Cステージでは、直線方程式の符号からスタンプがポリゴンの内部にあるか外部にあるかを判定する。
1サイクルごとにスタンプを1つ移動するためには、AステージからCステージまでの動作を1サイクルで行う必要がある。すなわち、DDAでは、Cステージの内外判定の結果によって、次にスタンプが動く方向がX方向なのかY方向なのかを判定してからAステージのMUXを駆動するために、ここがLSI設計上のクリティカルパスとなり、高周波動作のボトルネックとなっている。
逆に、高周波数で動作させるために、ステージA,B,Cをそれぞれ1サイクル(合計で3サイクル)で動作させるようにパイプライン化させると、Cステージを実行した後に次のスタンプのAステージを動作させる必要があるため、各サイクルごとにスタンプを移動させることができなくなり、2サイクルに1スタンプしか処理できなくなる。これは、DDAのスループットが1から0.5に低下してしまうことになり、演算処理性能が低下する。
あるいは、スループットを確保するために、エッジ判定の前にスタンプを移動させる方法も考えられる。この場合、エッジ判定の結果がX方向の移動であると予め予測してスタンプを移動させるため、スタンプがポリゴンのX方向の外側に来たときに、2スタンプほどの無駄な処理が生じる。ポリゴンが比較的大きい場合には所望の性能が出るが、ポリゴンが小さくてすぐにY方向に折り返す必要がある場合は、X方向でのスタンプの無駄な処理が多くなり、性能が低下する。
United States Patent No. US6504542 "Incremental and Hierarchical Hilbert Order Edge Equation Polygon Rasterization" (Michael D. McCool, Chris Wales, Kevin Moule / SIGGRAPH/EUROGRAPHICS workshop on Graphics hardware 2001 Proceedings) "Tiled polygon traversal using half-plane edge functions" (Joel McCormack and Robert McNamara / SIGGRAPH/EUROGRAPHICS workshop on Graphics hardware 2000 Proceedings)
本発明の目的は、スタンプの内外判定を高速に行うことが可能な画像処理装置を提供することにある。
本発明の一態様に係る画像処理装置は、複数の直線方程式のそれぞれに対応して複数個ずつ設けられ、隣接する複数画素からなるスタンプに関連する座標を対応する直線方程式に入力して得られる値を格納可能なスタンプ情報格納手段と、複数の直線方程式のそれぞれに対応して設けられ、複数個の前記スタンプ情報格納手段に格納された情報の一つを交互に選択する情報選択手段と、複数の直線方程式のそれぞれに対応して設けられ、前記情報選択手段にて選択された情報を用いて現在のスタンプに関連する座標を対応する前記直線方程式に入力して計算を行い、該計算結果を対応する前記スタンプ情報格納手段に格納する直線方程式演算手段と、複数の直線方程式のそれぞれに対応する前記直線方程式演算手段の演算結果に基づいて、現在のスタンプに隣接する次のスタンプが複数の直線方程式で囲まれる領域の内側にあるか否かを判定する内外判定手段と、現在のスタンプ内の代表画素の座標を計算する座標計算手段と、を備える。
本発明によれば、直線方程式の値を複数個のスタンプ情報格納手段に交互に格納して、次のスタンプの直線方程式の値を計算するため、スタンプの内外判定を高速に行うことができる。
以下、本発明の一実施形態について、図面を参照しながら説明する。本実施形態では、隣接する2×2ピクセルからなるスタンプを単位として、与えられたポリゴンをラスタスキャンし、各ピクセルの座標やパラメータを生成する。ここで、パラメータとは、各ピクセルにおけるRGBの階調値、透過率、奥行き、テクスチャ座標および法線ベクトルなどである。このような処理を以下ではラスタライズと呼ぶ。
以下では、簡略化のために、ポリゴンが三角形であるとする。このとき、各ポリゴンは、図1に示すように、3つの直線方程式Ia,Ib,Icで表される。各直線方程式は以下の(1)〜(3)式で表される。
Ia:a0・x+b0・y+c0 …(1)
Ib:a1・x+b1・y+c1 …(2)
Ic:a2・x+b2・y+c2 …(3)
現在のスタンプの位置は、図2に示すように、スタンプ内の左下のピクセル(代表点)の座標で表される。ラスタライズ処理では、スタンプを順次移動させて、各スタンプがポリゴンの内部に存在するか否かを判定する。具体的には、図2に示すように、現在のスタンプの脇に位置する先行点の座標を(1)〜(3)式の直線方程式に与えて得られた値により、現在のスタンプがポリゴンの内部に存在するか否かを判定する。このような内外判定処理を、スタンプを上下左右に1つずつ動かしながら行うが、そのたびごとに直線方程式を計算するのは処理負担が大きい。
そこで、本実施形態では、現在のスタンプにおける直線方程式の値を記憶しておき、その値に直線方程式の傾き(a0, a1, a2)、(b0, b1, b2)を加算することで、隣接する次のスタンプの直線方程式の値を求める。
以下、本発明の具体的な実施形態について説明する。
(第1の実施形態)
図3は本発明の第1の実施形態に係る画像処理装置の概略構成を示すブロック図である。この画像処理装置は、例えばグラフィックプロセッサに内蔵され、頂点データからピクセルデータに変換するラスタライズ処理を行う。
図4は図3の画像処理装置を内蔵するグラフィックプロセッサを備えた画像処理システムの概略構成の一例を示すブロック図である。図4の画像処理システムは、ホストプロセッサ21と、グラフィックプロセッサ22と、メインメモリ23と、I/Oプロセッサ24とを備えている。
ホストプロセッサ21は、メインプロセッサ31と、複数の信号処理部(DSP:Digital Signal Processor)32と、外部との入出力を司るI/O部33,34,35とを有する。I/O部33はメインメモリ23との入出力を司り、I/O部34はグラフィックプロセッサ22との入出力を司り、I/O部35はI/Oプロセッサ24との入出力を司る。
グラフィックプロセッサ22は、コントローラ41と、ホストプロセッサ21とデータのやり取りを行うI/O部42と、PCIなどの各種汎用バス、ビデオおよびオーディオ等の入出力を司るI/O部43と、図4に示した画像処理ユニット44とを有する。
I/Oプロセッサ24は、汎用バスの他、HDDやDVDドライブ等の周辺機器、およびネットワークと接続する制御を行う。
画像処理ユニット44の画像処理は、ホストプロセッサ21の処理に並行して行われるため、ホストプロセッサ21自身で3次元画像処理を行わなくて済み、ホストプロセッサ21の処理負担が軽減されるとともに、3次元画像処理を高速に行うことができる。
画像処理ユニット44は、図3の画像処理装置45と、複数の演算ユニット46と、メモリ47とを備えている。画像処理装置45、演算ユニット46およびメモリ47は、ローカルネットワーク48に接続されている。
画像処理装置45は、隣接する2×2ピクセルからなるスタンプごとに、スタンプ内の各ピクセルの座標やバラメータを計算し、その計算結果を対応する演算ユニット46に供給する。複数の演算ユニット46は、互いに並行して処理を行うことができる。すなわち、各演算ユニット46は、それぞれ異なるスタンプの画像処理を行う。演算ユニット46での演算結果はメモリ47に格納される。
図4に示す複数の演算ユニット46は、それぞれ並行して画像処理を行えるため、画像処理を高速に行うことができる。
図3に戻って、画像処理装置45は、DDAセットアップ部1と、コンテキスト部2と、直線方程式計算部3と、XY計算部4と、エッジ判定部5と、DDA制御部6と、マスク生成部7とを有する。DDA制御部6は、ラスタライズの開始点の(X,Y)座標と、その座標における直線方程式の値(初期値Ia, Ib, Ic)と、直線方程式の傾き(dIa/dx, dIa/dy, dIb/dx, dIb/dy, dIc/dx, dIc/dy)とを計算する。初期値は、コンテキスト部2のACCレジスタとSaveレジスタに格納される。直線方程式の傾きは、コンテキスト部2のdIdxレジスタとdIdyレジスタに格納される。
コンテキスト部2、直線方程式計算部3およびDDA制御部6は、ポリゴンを構成する3つの直線方程式のそれぞれに対応して設けられる。
図5はコンテキスト部2とDDA制御部6の内部構成の一例を示すブロック図である。図示のように、各コンテキスト部2は、直線方程式の計算結果を格納可能な複数のスレッドth1〜thNと、直線方程式の傾きを格納する傾きコンテキスト部11と、スタンプの代表点の(x,y)座標を格納するXYコンテキスト部12とを有する。
複数のスレッドのそれぞれは、現在のスタンプの先行点における直線方程式の値を格納するマルチプレクサおよびACCレジスタ13と、スタンプをY方向に1スタンプ分移動させたスタンプの先行点における直線方程式の値を格納するマルチプレクサおよびSaveレジスタ14と、ACCレジスタ13またはSaveレジスタ14に格納された値を選択するマルチプレクサ15とを有する。
傾きコンテキスト部11は、直線方程式のX方向の傾きdI/dxを格納するdIdxレジスタ16aと、直線方程式のY方向の傾きdI/dyを格納するdI/dyレジスタ16bと、dIdxレジスタ16aまたはdI/dyレジスタ16bの値を選択するマルチプレクサ17とを有する。
直線方程式計算部3内の加算器18は、対応するコンテキスト部2内のいずれかのスレッドから出力された値と傾きコンテキスト部11から出力された値とを加算して、次のスタンプにおける先行点の直線方程式の値を計算する。
エッジ判定部5内の内外判定器19は、3つの直線方程式計算部3にて計算された値のいずれもがポリゴンの内部にあることを示している場合に、スタンプはポリゴンの内部に存在すると判定する。直線方程式の値が一つでもポリゴンの外部にあることを示す場合は、スタンプはポリゴンの外部に存在すると判定する。
DDA制御部6は、スレッドth1〜thNの出力のうちいずれか一つを選択するマルチプレクサ51と、XYコンテキスト部12の出力から対応する座標(x,y)を選択するマルチプレクサ52と、これらマルチプレクサでの選択を制御するスレッド制御ユニット53とを有する。
マスク生成部7は、3つの直線方程式計算部3で計算された値に基づいて、現在のスタンプ内の各ピクセルの座標(x,y)を計算する。
XYコンテキスト部12は、最初は開始点のスタンプにおける代表点の座標(x,y)を格納し、その後は、現在のスタンプにおける代表点の座標(x,y)を格納する。具体的には、スレッドth1〜thNのそれぞれごとに、代表点の座標(x,y)を格納する。
図6はXYコンテキスト部12の内部構成の一例を示すブロック図である。図示のように、XYコンテキスト部12は、各スレッドごとに設けられるマルチプレクサおよびXsaveレジスタ61と、マルチプレクサおよびXレジスタ62と、マルチプレクサおよびYレジスタ63と、これらレジスタ61〜63の出力のうちいずれか一つを選択するマルチプレクサ64と、を有する。これらレジスタは、現在のスタンプにおける代表点の座標(x,y)を格納する。また、XYコンテキスト部12は、スタンプの座標を1スタンプ分移動させるための座標増分格納部65を有する。座標増分格納部65は、1スタンプ分のX座標の距離Δxを格納するΔxレジスタ66と、1スタンプ分のY座標の距離Δyを格納するΔyレジスタ67と、これらレジスタ66,67の一方を選択するマルチプレクサ68とを有する。
図7はポリゴンのラスタライズ処理の手順を説明する図である。図7の例では、X方向に隣接するスタンプを同じスレッドで処理し、Y方向に隣り合うスタンプ列は別々のスレッドで処理する。
具体的には、2つのスレッドth1,2を用いてラスタライズを行う。スタンプ1を開始点として、まず、Y方向に隣接するスタンプ2をスレッドth2で処理する。スタンプ2の処理内容は、内外判定と、スタンプ2を構成する各ピクセルの座標検出と、各ピクセルのパラメータ計算である。次に、スタンプ1の右側に隣接するスタンプ3をスレッドth1で処理し、その後、スタンプ2の右側に隣接するスタンプ4をスレッドth2で処理する。このように、スレッドth1,2が交互に処理を行う。
スレッドth1,2はそれぞれ、3つのステージA,B,Cに分けて処理を行う。ステージAは、図3に示すように、コンテキスト部2における処理である。ステージBは、直線方程式計算部3における処理である。ステージCは、エッジ判定部5における処理である。
図8は図7のポリゴンをラスタライズする場合のタイミングを示す図である。図示のように、まず、スレッドth1が2回連続して処理を行い、それ以降は、スレッドth2とスレッドth1が交互に処理を行う。スレッドth1,2は1サイクルずつずらして処理を行い、各スレッドの処理は3サイクルで完了する。
図8からわかるように、スレッドth1はスタンプ1を開始点として、まずY方向への移動を開始する(サイクルt1)。次のサイクルt2で、スレッドth1はスタンプ1からX方向への移動を開始する。次のサイクルt3で、スレッドth2はスタンプ2からX方向への移動を開始する。次のサイクルt4で、スレッドth1はスタンプ3からY方向への移動を開始する。次のサイクルt5で、スレッドth2はスタンプ4からX方向への移動を開始する。
例えば、サイクルt4に着目すると、スレッドth1がスタンプ1のステージCを処理しているときに、スレッドth2がスタンプ3のステージAを処理する。このように、スレッドth1,2は並列処理を行う。
サイクルt4において、エッジ判定部5は、スタンプ1をX方向に移動させたとき(スタンプ3)の先行点がポリゴンの外側に出ることを認識する。このため、フラグ20をセットする。このフラグ20は同サイクル中にスレッドth1に送られる。このとき、スレッドth1は、スタンプ3のサイクルAを処理しているため、スタンプ3の右側には処理すべきスタンプが存在しないことを認識し、Y方向への移動処理を行う。
このように、本実施形態では、スタンプの先行点がポリゴンの内部に位置するか否かの判定結果に基づいて、同じサイクル中にスタンプの移動方向を決定する点に特徴がある。このため、従来のように、無駄なスタンプ処理を行わなくてすみ、処理の効率化を図ることができる。
以下、図7のポリゴンをラスタライズする場合を例にとって、第1の実施形態に係る画像処理装置45の動作を説明する。まず、最初にスレッドth1を使って、図のスタンプ1から処理を開始するものとする。
(1-1) スレッドth1、スタンプ1、Y方向移動、ステージA(図8のサイクルt1)
スレッドth1のACCレジスタ13とSaveレジスタ14には、スタンプ1の先行点の直線方程式の値が格納され、XYコンテキスト部12のXレジスタとYレジスタにはスタンプ1の代表点の座標(X,Y)が格納され、XSaveレジスタ61には代表点のX座標が格納されている。
開始時は、Y方向に移動するため、DDA制御部6内のマルチプレクサ52は、X,Yレジスタ62,63のうちYレジスタ63の出力を選択してXY計算部4に供給する。また、XYコンテキスト部12内のマルチプレクサ68は、Y方向の増分値Δyを選択してXY計算部4に供給する。
一方、スレッドth1〜thN内のマルチプレクサ15は、Saveレジスタ14の値を選択する。DDA制御部6内のマルチプレクサは、スレッドth1の出力を選択して直線方程式計算部3に供給する。また、傾きコンテキスト部11内のマルチプレクサはdIa/dyを選択して直線方程式計算部3に供給する。以上の処理は、3つの直線方程式計算部3のそれぞれに対して行われる。
(1-2) スレッドth1、スタンプ1、Y方向移動、ステージB(図8のサイクルt2)
XY計算部4は、Y+Δyの計算を行う。また、3つの直線方程式計算部3はそれぞれ、Ia+dIadyの加算を行い、その計算結果を出力する。
(1-3) スレッドth1、スタンプ1、Y方向移動、ステージC(図8のサイクルt3)
エッジ判定部5は、3つの直線方程式計算部3の出力値の符号を調べて、それらがすべて正であれば、先行点はポリゴンの内部にあり、一つでも負の値があれば、ポリゴンの外部にあると判断する。計算された直線方程式の値は、スタンプ2の先行点のものであるため、図7のポリゴンの場合、すべて正の値になり、ポリゴンの内部にあると判定される。そこで、次は、スタンプ5の位置までX方向に移動することが決定される。
計算した直線方程式の値は、スレッドth2のACCレジスタ13とSaveレジスタ14に格納される。また、Y座標値は、XYコンテキスト部12のYレジスタ63に格納され、XSaveレジスタ61の値はXレジスタ62に格納される。また、Y方向移動後、最初のポリゴン内部のスタンプであるため、そのX座標がXSaveレジスタ61に格納される。
(2) スタンプ1からスタンプ3への移動
(2-1) スレッドth1、スタンプ1、X方向移動、ステージA(図8のサイクルt2)
スレッドth1のACCレジスタ13とSaveレジスタ14には、スタンプ1の直線方程式の先行点の値が格納され、XYコンテキスト部12のXレジスタ62とYレジスタ63には代表点のX,Yレジスタ62,63が格納されている。また、XSaveレジスタ61には、スタンプ1の代表点のX座標が格納されている。X方向に移動するため、Xレジスタ62の値、ΔxおよびACCレジスタ13の値が出力される。DDA制御部6は、スレッドth1の出力を選択する。
(2-2) スレッドth1、スタンプ1、X方向移動、ステージB(図8のサイクルt3)
XY計算部4は、X+Δxの計算を行う。また、3つの直線方程式計算部3はそれぞれ、Ia+dIa/dxの計算を行い、その計算結果を出力する。
(2-3) スレッドth1、スタンプ1、X方向移動、ステージC(図8のサイクルt4)
エッジ判定部5は、3つの直線方程式計算部3の出力値の符号を調べる。この場合、移動後のスタンプ3の先行点における直線方程式の値を調べる。この結果、ポリゴンの外側にあると判定され、その旨のフラグがセットされる。
(3) スタンプ2からスタンプ4への移動
この場合、X方向の移動であるため、スレッドth2を(2)と同様にして動作させる。移動後のスタンプ4の先行点はポリゴンの内部に位置するため、ステージCの処理が(2-3)と異なる。
(3-3) スレッドth2、スタンプ2、X方向移動、ステージC(図8のサイクルt5)
この場合、3つの直線方程式計算部3の出力はすべて正になる。このため、直線方程式の値がACCレジスタ13に格納され、スタンプ4のX座標がXレジスタ62に格納される。
(4) スタンプ3からスタンプ5への移動
上述した(2-3)において、スタンプ3の先行点がポリゴンの外部にある旨のフラグがセットされているため、スレッドth1はY方向への移動を行う。
(4-1) スレッドth1、スタンプ3、Y方向移動、ステージA(図8のサイクルt4)
Y方向への移動を指示するフラグがセットされているため、スレッドth1は、Saveレジスタ14に格納されている直線方程式の値(スタンプ1の先行点の値)を出力する。また、XYコンテキスト部12は、Yレジスタ63の値とΔyを出力する。また、傾きコンテキスト部11はdIadyを出力する。
(4-2) スレッドth1、スタンプ3、Y方向移動、ステージB(図8のサイクルt5)
XY計算部4は、Y+Δyを計算する。3つの直線方程式計算部3はそれぞれIa+dIa/dyを計算し、その計算結果を出力する。
(4-3) スレッドth1、スタンプ3、Y方向移動、ステージC(図8のサイクルt6)
エッジ判定部5は、移動後の先行点が三角形の内部にあると判定し、直線方程式の値をスレッドth1のACCレジスタ13とSaveレジスタ14に格納する。Saveレジスタ14に格納するのは、ポリゴンの内部にあると判定したためである。次に、加算したY座標値をスレッドth1のYレジスタ63に格納する。また、XSaveレジスタ61の値をXレジスタ62に、Xレジスタ62の値をXSaveレジスタ61に格納する。
以上の処理をスタンプごとに順次行い、ポリゴンの最後のスタンプまで処理を行うと、そのポリゴンの処理を終了する。
上述した実施形態では、2つのスレッドを交互に切り替えながら処理を行う例を説明したが、3つ以上のスレッドを交互に切り替えながら処理を行ってもよい。3つ以上のスレッドを用いる場合は、フラグの受け渡しからX座標およびY座標を切り替えるまでのタイミングにより余裕が生じる。
図9は以上に説明した第1の実施形態の概略的な処理手順を示すフローチャートである。まず、DDAセットアップ部1は、直線方程式の係数を計算し(ステップS1)、開始点を決定する(ステップS2)。次に、DDAセットアップ部1は、開始点の座標と、直線方程式の初期値と傾きを計算する(ステップS3)。次に、コンテキスト部2は、ACCレジスタ13とSaveレジスタ14を初期化する(ステップS4)。次に、マスク生成部7は、ピクセル単位の座標とパラメータを生成する(ステップS5)。
その後、スレッドth1とスレッドth2の処理が交互に行われる。まず、スレッドth1の処理を説明する。スレッドth1は、スレッドth1のスタンプをX方向に1スタンプ分移動させ(ステップS6)、移動後のスタンプの先行点について内外判定を行う(ステップS7)。内側にあると判定されると、マスク生成部7は、移動後のスタンプ内の各ピクセルのXY座標を計算するとともに、パラメータを生成する(ステップS8)。そして、ステップS6に戻る。
一方、ステップS7でポリゴンの外側と判定されると、スタンプをY方向に1スタンプ分移動させる(ステップS9)。次に、移動後のスタンプがポリゴンの内部に位置するか否かを判定し(ステップS10)、位置する場合には、移動後のスタンプ内の各ピクセルについてXY座標とパラメータの計算を行った後、ステップS6に戻る。一方、ステップS10でポリゴンの外側と判定されると、処理を終了する。
次に、スレッドth2の処理を説明する。スレッドth2では、スタンプをY方向に移動させて(ステップS11)、内外判定を行う(ステップS12)。移動後のスタンプがポリゴンの内部に位置すると判定されると、そのスタンプ内の各ピクセルのXY座標とパラメータを計算する(ステップS13)。
次に、スタンプをX方向に1スタンプ分移動させ(ステップS14)、内外判定を行う(ステップS15)。移動後のスタンプがポリゴンの内部に位置すると判定されると、そのスタンプ内の各ピクセルのXY座標とパラメータを計算し(ステップS16)、ステップS14に戻る。
一方、ステップS15でポリゴンの外側と判定されると、スタンプをY方向に1スタンプ分移動させる(ステップS17)。次に、移動後のスタンプについて内外判定を行う(ステップS18)。移動後のスタンプがポリゴンの内部と判定されると、そのポリゴン内の各ピクセルのXY座標とパラメータを計算し(ステップS19)、ステップS14に戻る。
一方、ステップS12またはS18でポリゴンの外側と判定されると、処理を終了する。
このように、第1の実施形態では、複数のスレッドを交互に切り替えながらスタンプの処理を行い、スタンプがポリゴンの外部にあると判定されると、次に処理すべきスタンプを瞬時に切り替えるようにしたため、ポリゴンの外部にあるスタンプを無駄に処理するおそれがなくなり、効率的なラスタライズ処理が可能になる。また、複数のスレッドを交互に切り替えて処理を行うため、直線方程式を計算する直線方程式計算部3とエッジ判定部5を複数のスレッドで共用でき、全体の構成を簡略化できる。
(第2の実施形態)
第2の実施形態は、隣接するポリゴンに別個のスレッドを割り当てて、各スタンプの処理を行う。
図10は第2の実施形態の処理タイミングの一例を示す図である。この図では、3つのスレッドth1〜3を用いて処理を行う例を示している。
まず、スレッドth1は、ポリゴン1のスタンプ処理を行うために、サイクルt1で初期設定を行い、その後、開始点のスタンプについて、サイクルt2でステージAの処理を行い、サイクルt3でステージBの処理を行い、サイクルt4でステージCの処理を行う。
一方、スレッドth2は、サイクルt2でポリゴン2の初期設定を行い、その後、開始点のスタンプについて、サイクルt3でステージAの処理を行い、サイクルt4でステージBの処理を行い、サイクルt5でステージCの処理を行う。
一方、スレッド3は、サイクルt3でポリゴン3の初期設定を行い、その後、開始点のスタンプについて、サイクルt4でステージAの処理を行い、サイクルt5でステージBの処理を行い、サイクルt6でステージCの処理を行う。
以降、スレッドth1〜3は、対応するポリゴン内のスタンプを順に処理していく。ポリゴン内の最後のスタンプの処理が終わると、次のポリゴンについて同様の処理を行う。あるスレッドが1つのポリゴンの処理が終わると、そのスレッドは次のポリゴンについて初期設定を行い、同様の手順でスタンプの処理を行う。
図11は3つのポリゴンのラスタライズをスレッドth1〜3が行う順序を示す図である。図示のように、スレッドth1〜3はそれぞれポリゴンp1〜p3のラスタライズを行う。
図12は第2の実施形態の処理手順の一例を示すフローチャートである。このフローチャートは、2つのスレッドがそれぞれ異なるポリゴンを処理する例を示している。図9との違いは、各スレッドがそれぞれ初期設定を行う点である(ステップS31〜S35、S51〜S55)。それ以外の処理は図9と同様である。
このように、第2の実施形態では、一つのポリゴンを1つのスレッドで処理し、複数のスレッドが交互にラスタライズを行うため、ポリゴンのサイズが小さい場合には、第1の実施形態よりも効率的に処理を行うことができる。
(第3の実施形態)
第3の実施形態は、ポリゴンを形成する3つの直線方程式のうち2つ(以下、開始辺と終了辺)に沿って、スタンプごとに処理を行うものである。
図13は第3の実施形態の処理手順を説明する図である。開始辺と終了辺に沿って、交互に1スタンプずつ処理を行う。このとき、各辺の外側に出ると、内側に1スタンプ移動させる。例えば、開始辺の場合、図13のスタンプ1,2,3,4,5,6,7,8の順に処理が行われる。また、終了辺の場合、スタンプ1,2,3,4,5,6,7,8,9の順に処理が行われる。
そして、X方向に平行な各ラインごとに、開始辺に沿ったスタンプから終了辺に沿ったスタンプまでの距離を記憶しておく。
次に、開始辺と終了辺の間に位置するスタンプについては、直線方程式の符号ではなく、上述の距離によりエッジ判定を行う。これにより、開始点と終了辺の間に位置するか否かを容易に判定できる。
第3の実施形態の場合、開始辺に沿ったスキャンと、終了辺に沿ったスキャンと、開始辺および終了辺の間の中間スキャンの計3つのスキャンが必要となるが、開始辺のスキャンと中間スキャンはまとめて行えるため、2つのスキャンで行うことができる。
このように、第3の実施形態では、ポリゴンの開始辺と終了辺に沿ってスタンプの処理を行うため、第1および第2の実施形態のような3つの直線方程式を用いた内外判定を行わなくてすむ。
上述した画像処理装置が行う画像処理の具体的内容は特に問わない。三次元画像処理を行ってもよいし、二次元画像処理を行ってもよい。また、図1に示した画像処理装置は、必ずしも図4のホストプロセッサ21に接続して使用する必要はない。さらに、画像処理装置だけでチップを構成してもよいし、図4の画像処理ユニット22を1つのチップとしてもよいし、図4のホストプロセッサ21と画像処理ユニット22を1つのチップとしてもよい。
また、上述した実施形態では、2×2のスタンプを用いる例を説明したが、スタンプを構成するピクセル数には特に制限はない。また、ポリゴンの形状も、三角形に限定されず、四角形以上の多角形でもよい。
上述した実施形態で説明した画像処理装置は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、画像処理装置の少なくとも一部の機能を実現するプログラムをフロッピーディスクやCD−ROM等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の携帯可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。
また、画像処理装置の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線(無線通信も含む)を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
ポリゴンを説明する図。 スタンプを説明する図。 本発明の第1の実施形態に係る画像処理装置の概略構成を示すブロック図。 図3の画像処理装置を内蔵するグラフィックプロセッサを備えた画像処理システムの概略構成の一例を示すブロック図。 コンテキスト部2とDDA制御部6の内部構成の一例を示すブロック図。 XYコンテキスト部12の内部構成の一例を示すブロック図。 ポリゴンのラスタライズ処理の手順を説明する図。 図7のポリゴンをラスタライズする場合のタイミングを示す図。 第1の実施形態の概略的な処理手順を示すフローチャート。 第2の実施形態の処理タイミングの一例を示す図。 3つのポリゴンのラスタライズをスレッドth1〜3が行う順序を示す図。 第2の実施形態の処理手順の一例を示すフローチャート。 第3の実施形態の処理手順を説明する図。
符号の説明
1 DDAセットアップ部
2 コンテキスト部
3 直線方程式計算部
4 XY計算部
5 エッジ判定部
6 DDA制御部
7 マスク生成部
11 傾きコンテキスト部
12 XYコンテキスト部
13 ACCレジスタ
14 Saveレジスタ
15 マルチプレクサ
16 dI/dyレジスタ
17 マルチプレクサ
18 加算器
19 内外判定器
21 ホストプロセッサ
22 グラフィックプロセッサ
23 メインメモリ
24 I/Oプロセッサ
31 メインプロセッサ
32 信号処理部
33,34,35 I/O部
41 コントローラ
42,43 I/O部
44 画像処理ユニット
45 画像処理装置
46 演算ユニット
47 メモリ
48 ローカルネットワーク

Claims (9)

  1. 複数の直線方程式のそれぞれに対応して複数個ずつ設けられ、隣接する複数画素からなるスタンプに関連する座標を対応する直線方程式に入力して得られる値を格納可能なスタンプ情報格納手段と、
    複数の直線方程式のそれぞれに対応して設けられ、複数個の前記スタンプ情報格納手段に格納された情報の一つを交互に選択する情報選択手段と、
    複数の直線方程式のそれぞれに対応して設けられ、前記情報選択手段にて選択された情報を用いて現在のスタンプに関連する座標を対応する前記直線方程式に入力して計算を行い、該計算結果を対応する前記スタンプ情報格納手段に格納する直線方程式演算手段と、
    複数の直線方程式のそれぞれに対応する前記直線方程式演算手段の演算結果に基づいて、現在のスタンプに隣接する次のスタンプが複数の直線方程式で囲まれる領域の内側にあるか否かを判定する内外判定手段と、
    現在のスタンプ内の代表画素の座標を計算する座標計算手段と、を備えることを特徴とする画像処理装置。
  2. 前記スタンプ情報格納手段は、
    現在のスタンプを第1方向に1スタンプ分移動させた場合の直線方程式の値を格納する第1の値格納手段と、
    現在のスタンプを第2方向に1スタンプ分移動させた場合の直線方程式の値を格納する第2の値格納手段と、
    前記内外判定手段の判定結果に基づいて、前記第1および第2の値格納手段のいずれかに格納された値を選択して出力する値選択手段と、を有することを特徴とする請求項1に記載の画像処理装置。
  3. 前記スタンプ情報格納手段による格納処理と、前記直線方程式演算手段による演算処理および前記内外判定手段による判定処理とは並行して行われることを特徴とする請求項1または2に記載の画像処理装置。
  4. 前記直線方程式のX方向の傾きおよびY方向の傾きを格納する傾き格納手段を備え、
    前記情報選択手段は、前記内外判定手段の判定結果に基づいて、前記傾き格納手段に格納されたX方向またはY方向の傾きを選択し、
    前記直線方程式演算手段は、前記情報選択手段にて選択されたX方向またはY方向の傾きと、前記情報選択手段にて選択されたいずれかの前記スタンプ情報格納手段に格納された情報と、を加算して、現在のスタンプに関する直線方程式の演算を行うことを特徴とする請求項1乃至3のいずれかに記載の画像処理装置。
  5. 前記複数の直線方程式のそれぞれに対応する前記直線方程式演算手段の演算結果に基づいて、現在のスタンプ内のすべての画素の座標値およびパラメータを計算する画素情報計算手段を備えることを特徴とする請求項1乃至4のいずれかに記載の画像処理装置。
  6. 前記パラメータは、RGBの階調値と、透過率情報と、奥行き情報と、テクスチャー座標と、法線ベクトルとを含むことを特徴とする請求項5に記載の画像処理装置。
  7. 第1方向に隣接する1列分のスタンプに関する直線方程式の値と、該1列に第2方向に隣接する1列分のスタンプに関する直線方程式の値とは、それぞれ別個の前記スタンプ情報格納手段に格納されることを特徴とする請求項1乃至6のいずれかに記載の画像処理装置。
  8. 複数のポリゴンに含まれるスタンプに関する直線方程式の値は、それぞれ別個の前記スタンプ情報格納手段に格納されることを特徴とする請求項1乃至7のいずれかに記載の画像処理装置。
  9. ポリゴンの頂点データを供給する頂点データ供給装置と、
    前記頂点データに基づいて、画素ごとの座標値およびパラメータを生成する画像処理装置と、
    前記座標値およびパラメータを格納する記憶装置と、を備えた画像処理システムにおいて、
    前記画像処理装置は、
    複数の直線方程式のそれぞれに対応して複数個ずつ設けられ、隣接する複数画素からなるスタンプに関連する座標を対応する直線方程式に入力して得られる値を格納可能なスタンプ情報格納手段と、
    複数の直線方程式のそれぞれに対応して設けられ、複数個の前記スタンプ情報格納手段に格納された情報の一つを交互に選択する情報選択手段と、
    複数の直線方程式のそれぞれに対応して設けられ、前記情報選択手段にて選択された情報を用いて現在のスタンプに関連する座標を対応する前記直線方程式に入力して計算を行い、該計算結果を対応する前記スタンプ情報格納手段に格納する直線方程式演算手段と、
    複数の直線方程式のそれぞれに対応する前記直線方程式演算手段の演算結果に基づいて、現在のスタンプに隣接する次のスタンプが複数の直線方程式で囲まれる領域の内側にあるか否かを判定する内外判定手段と、
    現在のスタンプ内の代表画素の座標を計算する座標計算手段と、を備えることを特徴とする画像処理システム。
JP2004120603A 2004-04-15 2004-04-15 画像処理装置および画像処理システム Expired - Fee Related JP4030519B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004120603A JP4030519B2 (ja) 2004-04-15 2004-04-15 画像処理装置および画像処理システム
US10/952,827 US20050259100A1 (en) 2004-04-15 2004-09-30 Graphic processing apparatus, graphic processing system, graphic processing method and graphic processing program
TW093140131A TWI282518B (en) 2004-04-15 2004-12-22 Graphic processing apparatus, graphic processing system, graphic processing method and graphic processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004120603A JP4030519B2 (ja) 2004-04-15 2004-04-15 画像処理装置および画像処理システム

Publications (2)

Publication Number Publication Date
JP2005301902A true JP2005301902A (ja) 2005-10-27
JP4030519B2 JP4030519B2 (ja) 2008-01-09

Family

ID=35333314

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004120603A Expired - Fee Related JP4030519B2 (ja) 2004-04-15 2004-04-15 画像処理装置および画像処理システム

Country Status (3)

Country Link
US (1) US20050259100A1 (ja)
JP (1) JP4030519B2 (ja)
TW (1) TWI282518B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8031208B2 (en) 2005-12-26 2011-10-04 Kabushiki Kaisha Toshiba Drawing apparatus and method for processing plural pixels in parallel

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8692844B1 (en) 2000-09-28 2014-04-08 Nvidia Corporation Method and system for efficient antialiased rendering
US8732644B1 (en) 2003-09-15 2014-05-20 Nvidia Corporation Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits
US8872833B2 (en) 2003-09-15 2014-10-28 Nvidia Corporation Integrated circuit configuration system and method
US8775997B2 (en) 2003-09-15 2014-07-08 Nvidia Corporation System and method for testing and configuring semiconductor functional circuits
US8711161B1 (en) 2003-12-18 2014-04-29 Nvidia Corporation Functional component compensation reconfiguration system and method
US8723231B1 (en) 2004-09-15 2014-05-13 Nvidia Corporation Semiconductor die micro electro-mechanical switch management system and method
US8711156B1 (en) 2004-09-30 2014-04-29 Nvidia Corporation Method and system for remapping processing elements in a pipeline of a graphics processing unit
US8427496B1 (en) 2005-05-13 2013-04-23 Nvidia Corporation Method and system for implementing compression across a graphics bus interconnect
US8698811B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Nested boustrophedonic patterns for rasterization
US8390645B1 (en) 2005-12-19 2013-03-05 Nvidia Corporation Method and system for rendering connecting antialiased line segments
US9117309B1 (en) 2005-12-19 2015-08-25 Nvidia Corporation Method and system for rendering polygons with a bounding box in a graphics processor unit
US8928676B2 (en) 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US8477134B1 (en) 2006-06-30 2013-07-02 Nvidia Corporation Conservative triage of polygon status using low precision edge evaluation and high precision edge evaluation
US8427487B1 (en) 2006-11-02 2013-04-23 Nvidia Corporation Multiple tile output using interface compression in a raster stage
US8482567B1 (en) 2006-11-03 2013-07-09 Nvidia Corporation Line rasterization techniques
US8724483B2 (en) 2007-10-22 2014-05-13 Nvidia Corporation Loopback configuration for bi-directional interfaces
US8063903B2 (en) * 2007-11-09 2011-11-22 Nvidia Corporation Edge evaluation techniques for graphics hardware
US9064333B2 (en) * 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
TWI416345B (zh) * 2009-09-15 2013-11-21 Chii Ying Co Ltd Data representation of the correlation values ​​of the data set, computer program products and devices
US20110063306A1 (en) 2009-09-16 2011-03-17 Nvidia Corporation CO-PROCESSING TECHNIQUES ON HETEROGENEOUS GPUs INCLUDING IDENTIFYING ONE GPU AS A NON-GRAPHICS DEVICE
US9530189B2 (en) 2009-12-31 2016-12-27 Nvidia Corporation Alternate reduction ratios and threshold mechanisms for framebuffer compression
US9331869B2 (en) 2010-03-04 2016-05-03 Nvidia Corporation Input/output request packet handling techniques by a device specific kernel mode driver
US9171350B2 (en) 2010-10-28 2015-10-27 Nvidia Corporation Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up
US9218678B2 (en) * 2011-04-25 2015-12-22 Intel Corporation Multi-view rasterization using an analyticl visibility function
US9607407B2 (en) 2012-12-31 2017-03-28 Nvidia Corporation Variable-width differential memory compression
US9591309B2 (en) 2012-12-31 2017-03-07 Nvidia Corporation Progressive lossy memory compression
US9710894B2 (en) 2013-06-04 2017-07-18 Nvidia Corporation System and method for enhanced multi-sample anti-aliasing
GB2570172B (en) * 2018-06-29 2020-02-12 Imagination Tech Ltd Conservative Rasterization Using Gradients

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6504542B1 (en) * 1999-12-06 2003-01-07 Nvidia Corporation Method, apparatus and article of manufacture for area rasterization using sense points
JP4568950B2 (ja) * 2000-02-29 2010-10-27 ソニー株式会社 グラフィックス描画装置
JP3840966B2 (ja) * 2001-12-12 2006-11-01 ソニー株式会社 画像処理装置およびその方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8031208B2 (en) 2005-12-26 2011-10-04 Kabushiki Kaisha Toshiba Drawing apparatus and method for processing plural pixels in parallel

Also Published As

Publication number Publication date
TWI282518B (en) 2007-06-11
JP4030519B2 (ja) 2008-01-09
TW200537393A (en) 2005-11-16
US20050259100A1 (en) 2005-11-24

Similar Documents

Publication Publication Date Title
JP4030519B2 (ja) 画像処理装置および画像処理システム
US8339409B2 (en) Tile-based graphics system and method of operation of such a system
JP4824687B2 (ja) 図形データのキャッシュ効率的なラスター化
JP5518967B2 (ja) グラフィック・パフォーマンス改善のための方法、装置およびコンピュータ・プログラム・プロダクト
EP3471059B1 (en) Geometry to tiling arbiter for tile-based rendering system
JP4938850B2 (ja) 拡張型頂点キャッシュを備えたグラフィック処理装置
US7161603B2 (en) Image rendering device and image rendering method
US20080100618A1 (en) Method, medium, and system rendering 3D graphic object
JP5634104B2 (ja) タイルベースのレンダリング装置および方法
JP2008097583A (ja) グラフィックスパイプラインにおけるタイルベース精度のラスタライズ
US9600747B2 (en) Image forming apparatus and control method that execute a plurality of rendering processing units in parallel
US10262391B2 (en) Graphics processing devices and graphics processing methods
JP2007026285A (ja) 画像処理装置および画像処理プログラム
US10593111B2 (en) Method and apparatus for performing high throughput tessellation
JP5304443B2 (ja) 描画データ処理方法、図形描画システム、及び図形描画データ作成プログラム
JP4325812B2 (ja) ベクター画像描画回路およびベクター画像描画方法
Ma et al. Rasterization of geometric primitive in graphics based on FPGA
JP4863306B2 (ja) ベクターイメージ描画装置、ベクターイメージ描画方法およびプログラム
JP4042377B2 (ja) 画像処理装置、および画像処理方法、並びにコンピュータ・プログラム
Xue et al. An improved midpoint rasterization algorithm implemented in FPGA
KR20230028458A (ko) 다중 샘플 안티-앨리어싱을 위한 로드 명령어
WO2021262370A1 (en) Fine grained replay control in binning hardware
JP2006031160A (ja) グラフィックオブジェクト処理方法
JP2006190135A (ja) 画像生成方法および画像生成装置
JP2011128720A (ja) 画像処理装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070619

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070820

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20071016

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

Free format text: PAYMENT UNTIL: 20101026

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20111026

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20111026

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20121026

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20131026

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees