JPH0660191A - 直線画素発生装置 - Google Patents
直線画素発生装置Info
- Publication number
- JPH0660191A JPH0660191A JP4209208A JP20920892A JPH0660191A JP H0660191 A JPH0660191 A JP H0660191A JP 4209208 A JP4209208 A JP 4209208A JP 20920892 A JP20920892 A JP 20920892A JP H0660191 A JPH0660191 A JP H0660191A
- Authority
- JP
- Japan
- Prior art keywords
- straight line
- division
- processing
- coordinate
- pixel
- 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
Links
Landscapes
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
(57)【要約】
【目的】 直線の画素発生処理を実行する際、処理を並
列実行することで、処理速度の向上を図る。 【構成】 直線の画素発生装置において、直線情報とし
て与えられた始点、終点座標から、差分検出手段2によ
り検出された値と、あらかじめ定めた基準値との比較の
結果を受け、直線を分割するかしないかを判定する分割
判定手段3と、手段3が分割しないと決定した場合に
は、実画素を発生させる画素発生手段7と、分割すると
決定した場合には、図形をN分割し、分割した各々の直
線に関する情報を決定する直線分割手段4と、前記手段
4によって分割された各図形に関する直線情報を、M
(M≧1)個のプロセッサに分担して与え、与えられた
図形情報を用いて各プロセッサに、手段2以降による処
理を再帰的に並列実行させる並列実行手段とを有する。
列実行することで、処理速度の向上を図る。 【構成】 直線の画素発生装置において、直線情報とし
て与えられた始点、終点座標から、差分検出手段2によ
り検出された値と、あらかじめ定めた基準値との比較の
結果を受け、直線を分割するかしないかを判定する分割
判定手段3と、手段3が分割しないと決定した場合に
は、実画素を発生させる画素発生手段7と、分割すると
決定した場合には、図形をN分割し、分割した各々の直
線に関する情報を決定する直線分割手段4と、前記手段
4によって分割された各図形に関する直線情報を、M
(M≧1)個のプロセッサに分担して与え、与えられた
図形情報を用いて各プロセッサに、手段2以降による処
理を再帰的に並列実行させる並列実行手段とを有する。
Description
【0001】
【産業上の利用分野】本発明は、プリンタ、グラフィッ
クディスプレイ等において、特に直線の画素集合発生処
理を並列分散処理に依って高速に実行する図形出力装置
に関する。
クディスプレイ等において、特に直線の画素集合発生処
理を並列分散処理に依って高速に実行する図形出力装置
に関する。
【0002】
【従来の技術】従来、印刷装置、グラフィックディスプ
レイ等の出力装置へ図形を出力する場合、各1ピクセル
ごとに適当なビット数を対応させた記憶領域を用意し、
この中に図形の形状を表す画素集合を発生させる方法を
用いるのが一般的である。(以下この記憶領域をイメー
ジメモリ領域と呼称する。)ところで、図形描画の中で
最も基本的な直線線分を発生させるには、始点、終点の
2点の座標を結ぶ画素集合を始点から順に発生させ、イ
メージメモリに書き込む。代表的な直線描画方式として
は、Bresenhamの方式(J.E.Bresenham,"Algorithm for
Computer Control of a Digital Plotter," IBM System
Journal,Vol.4,No.1,1965 参照)がある。これは、直
線を構成している画素を逐一判断してから描画する方式
である。このため、明かに同一方向(例えば、傾きが4
5゜以下の直線ならば同一のY座標をもつことを意味す
る)に画素が連続している様な場合でも、逐一画素の座
標を決定するための判断処理を繰り返す必要があり、高
速な描画を行うことはできなかった。
レイ等の出力装置へ図形を出力する場合、各1ピクセル
ごとに適当なビット数を対応させた記憶領域を用意し、
この中に図形の形状を表す画素集合を発生させる方法を
用いるのが一般的である。(以下この記憶領域をイメー
ジメモリ領域と呼称する。)ところで、図形描画の中で
最も基本的な直線線分を発生させるには、始点、終点の
2点の座標を結ぶ画素集合を始点から順に発生させ、イ
メージメモリに書き込む。代表的な直線描画方式として
は、Bresenhamの方式(J.E.Bresenham,"Algorithm for
Computer Control of a Digital Plotter," IBM System
Journal,Vol.4,No.1,1965 参照)がある。これは、直
線を構成している画素を逐一判断してから描画する方式
である。このため、明かに同一方向(例えば、傾きが4
5゜以下の直線ならば同一のY座標をもつことを意味す
る)に画素が連続している様な場合でも、逐一画素の座
標を決定するための判断処理を繰り返す必要があり、高
速な描画を行うことはできなかった。
【0003】そこでこのような問題を解決するため特開
平01-53276「直線描画方法及びその装置」では、直線を
構成している画素の連続性を考慮することにより、計算
量を減らすことで、高速な画素発生を行おうとしてい
る。説明を簡略化するため、X軸と直線とのなす角度が
0゜以上且つ45゜以下の範囲にある直線の場合につい
て説明する。図11に示すように、同一Y座標が連続的
に復数個並ぶ直線は、その各水平画素列の描画始点(s
x,sy)と画素数pを求めることで、同一水平画素列の個
々の点に関する計算を省略している。図11において
は、第2の水平画素列の始点を求める場合、第1の水平
画素列を描画する処理において算出された始点座標とそ
の画素列の画素数用いて、前者の値に後者の値を加える
ことによって第2の水平画素列を描画するのに必要な数
値を得、この一連の処理を直線の始点から終点まで繰り
返すことで直線全体を描画している。
平01-53276「直線描画方法及びその装置」では、直線を
構成している画素の連続性を考慮することにより、計算
量を減らすことで、高速な画素発生を行おうとしてい
る。説明を簡略化するため、X軸と直線とのなす角度が
0゜以上且つ45゜以下の範囲にある直線の場合につい
て説明する。図11に示すように、同一Y座標が連続的
に復数個並ぶ直線は、その各水平画素列の描画始点(s
x,sy)と画素数pを求めることで、同一水平画素列の個
々の点に関する計算を省略している。図11において
は、第2の水平画素列の始点を求める場合、第1の水平
画素列を描画する処理において算出された始点座標とそ
の画素列の画素数用いて、前者の値に後者の値を加える
ことによって第2の水平画素列を描画するのに必要な数
値を得、この一連の処理を直線の始点から終点まで繰り
返すことで直線全体を描画している。
【0004】
【発明が解決しようとする課題】しかし、このような大
量の処理を1つのプロセッサで行なうことは処理速度の
点から非常に不利である。そこで、マルチプロセッサに
よる並列処理系を応用することで直線画素発生の処理速
度をさらに向上させることを鑑みるが、上記従来方法で
は、注目している水平画素列の始点を求めるのに、その
一つ前の水平画素列の描画処理時における始点座標と画
素数を使用して逐次的処理を行っているため、処理を並
列化することは困難である。つまり、並列処理システム
を利用する場合、処理の対象となるものが並列性を帯び
ていなければならない。
量の処理を1つのプロセッサで行なうことは処理速度の
点から非常に不利である。そこで、マルチプロセッサに
よる並列処理系を応用することで直線画素発生の処理速
度をさらに向上させることを鑑みるが、上記従来方法で
は、注目している水平画素列の始点を求めるのに、その
一つ前の水平画素列の描画処理時における始点座標と画
素数を使用して逐次的処理を行っているため、処理を並
列化することは困難である。つまり、並列処理システム
を利用する場合、処理の対象となるものが並列性を帯び
ていなければならない。
【0005】本発明はこの様な従来技術の問題点に着目
してなされたものであり、その目的とするところは、直
線等の図形の画素集合を発生させる処理において、画素
を発生させる範囲を分割し、それぞれの範囲ごとに別の
プロセッサで処理を実行させることで、逐次処理で実行
されていた直線の画素発生を並列処理させることによ
り、画素発生処理を高速化することにある。
してなされたものであり、その目的とするところは、直
線等の図形の画素集合を発生させる処理において、画素
を発生させる範囲を分割し、それぞれの範囲ごとに別の
プロセッサで処理を実行させることで、逐次処理で実行
されていた直線の画素発生を並列処理させることによ
り、画素発生処理を高速化することにある。
【0006】
【課題を解決するための手段】この様な課題を解決する
ために本発明の直線画素発生装置においては、(a)
始点座標と終点座標が与えられた直線Lにおいて、X軸
となす角度が45゜以下、又は45゜未満の直線に関し
ては、始点のY座標と終点のY座標による差を、それ以
外の直線に関しては、始点のX座標と終点のX座標によ
る差を検出する差分検出手段と、(b) 前記の差分検
出手段によって取得された値を用いて分割の有無を判定
する分割判定手段と、(c) 前記の分割判定手段によ
って分割無しと判定された場合、直線Lの始点から終点
までの実画素を発生させる画素発生手段と、(d) 前
記の分割判定手段によって分割有りと判定された場合、
直線LをN(自然数)分割する直線分割手段と、(e)
前記の直線分割手段によって分割された各直線に関する
始点座標、終点座標を、M(M≧1)個のプロセッサに
1直線ずつ分担して与え、各プロセッサごとに(a)以
降の手段による処理を再帰的に並列実行させる並列実行
手段と、を有する。
ために本発明の直線画素発生装置においては、(a)
始点座標と終点座標が与えられた直線Lにおいて、X軸
となす角度が45゜以下、又は45゜未満の直線に関し
ては、始点のY座標と終点のY座標による差を、それ以
外の直線に関しては、始点のX座標と終点のX座標によ
る差を検出する差分検出手段と、(b) 前記の差分検
出手段によって取得された値を用いて分割の有無を判定
する分割判定手段と、(c) 前記の分割判定手段によ
って分割無しと判定された場合、直線Lの始点から終点
までの実画素を発生させる画素発生手段と、(d) 前
記の分割判定手段によって分割有りと判定された場合、
直線LをN(自然数)分割する直線分割手段と、(e)
前記の直線分割手段によって分割された各直線に関する
始点座標、終点座標を、M(M≧1)個のプロセッサに
1直線ずつ分担して与え、各プロセッサごとに(a)以
降の手段による処理を再帰的に並列実行させる並列実行
手段と、を有する。
【0007】
(実施例1)以下、本発明について、実施例に基づき詳
細に説明する。本発明では、印刷処理装置やグラフィッ
クディスプレイ等の表示装置に図形を出力する際、アプ
リケーションプログラムから出力された図形描画のため
の図形情報データを取得し、実画素発生を行う処理に関
して、処理の分散と並列化を行うものである。直線描画
に必要な情報を取得した後、後述する手順で直線を分割
し、複数のプロセッサ上に割当て、並列実行により順次
実画素を発生させる。生成された実画素集合をイメージ
メモリ領域に書き込み、量子化された画素データをグラ
フィックディスプレイ、あるいはプリンタに転送するこ
とで図形出力を得る処理構成をとるものである。
細に説明する。本発明では、印刷処理装置やグラフィッ
クディスプレイ等の表示装置に図形を出力する際、アプ
リケーションプログラムから出力された図形描画のため
の図形情報データを取得し、実画素発生を行う処理に関
して、処理の分散と並列化を行うものである。直線描画
に必要な情報を取得した後、後述する手順で直線を分割
し、複数のプロセッサ上に割当て、並列実行により順次
実画素を発生させる。生成された実画素集合をイメージ
メモリ領域に書き込み、量子化された画素データをグラ
フィックディスプレイ、あるいはプリンタに転送するこ
とで図形出力を得る処理構成をとるものである。
【0008】一般的に、並列処理を実行するには相互に
影響を与えない実行単位に処理が分割され、それらが並
列性を帯びている必要がある。本発明は、従来まで単一
のプロセッサで行っていた直線画素発生処理を、直線を
再帰的に分割することによって処理に並列性をもたせ、
複数のプロセッサで並列処理を実行することによって処
理速度を高速化するものである。
影響を与えない実行単位に処理が分割され、それらが並
列性を帯びている必要がある。本発明は、従来まで単一
のプロセッサで行っていた直線画素発生処理を、直線を
再帰的に分割することによって処理に並列性をもたせ、
複数のプロセッサで並列処理を実行することによって処
理速度を高速化するものである。
【0009】説明を簡単にするため、本実施例では図形
情報のうちX軸と直線のなす角度が0゜以上且つ45゜
以下で、始点座標(x1,y1)、終点座標(x2,y2)の間に
x1≦x2、y1≦y2の関係が成り立っている直線を処理の対
象として扱う。
情報のうちX軸と直線のなす角度が0゜以上且つ45゜
以下で、始点座標(x1,y1)、終点座標(x2,y2)の間に
x1≦x2、y1≦y2の関係が成り立っている直線を処理の対
象として扱う。
【0010】図1に本発明の実施例の基本構成を示す。
本発明の動作に関して概要を述べると、直線を発生させ
る処理を実行する際、直線中に含まれる画素の段差を検
出し、段差がなくなるまで直線を分割し、分割と同時に
なんらかの手段で結合されているプロセッサに分散さ
れ、各プロセッサごとに与えられた直線の範囲の画素発
生を並列実行するものである。段差を検出して分割する
までの処理を具体化したものが、図中の2から4までの
手段である。
本発明の動作に関して概要を述べると、直線を発生させ
る処理を実行する際、直線中に含まれる画素の段差を検
出し、段差がなくなるまで直線を分割し、分割と同時に
なんらかの手段で結合されているプロセッサに分散さ
れ、各プロセッサごとに与えられた直線の範囲の画素発
生を並列実行するものである。段差を検出して分割する
までの処理を具体化したものが、図中の2から4までの
手段である。
【0011】構成要素の1手段である差分検出手段2
は、アプリケーションから出力される図形情報の内の直
線情報1を読み込み、差分を算出する。直線情報1は、
始点におけるX座標、Y座標、及び終点におけるX座
標、Y座標からなるものとする。分割判定手段3は、処
理の対象となっている直線の始点から終点の間に画素の
ずれが有るか無いかを判定することを目的とする。与え
られた始点、終点の各X、Y座標が整数値である場合を
考えると、前述の差分検出手段2で算出された値がゼロ
でなければ画素のずれが有ると判定される。ここで、画
素のずれが検出されたときは分割判定手段は分割有りと
判定し、直線分割手段4による処理に移行する。一方、
画素のずれがなかった場合、つまり始点から終点まで同
一のY座標をもつ画素が連続している場合は、直線の分
割を行わず、画素発生手段7によって実画素データを生
成する。
は、アプリケーションから出力される図形情報の内の直
線情報1を読み込み、差分を算出する。直線情報1は、
始点におけるX座標、Y座標、及び終点におけるX座
標、Y座標からなるものとする。分割判定手段3は、処
理の対象となっている直線の始点から終点の間に画素の
ずれが有るか無いかを判定することを目的とする。与え
られた始点、終点の各X、Y座標が整数値である場合を
考えると、前述の差分検出手段2で算出された値がゼロ
でなければ画素のずれが有ると判定される。ここで、画
素のずれが検出されたときは分割判定手段は分割有りと
判定し、直線分割手段4による処理に移行する。一方、
画素のずれがなかった場合、つまり始点から終点まで同
一のY座標をもつ画素が連続している場合は、直線の分
割を行わず、画素発生手段7によって実画素データを生
成する。
【0012】分割無しと判定された時点で実行される画
素発生手段7は、始点における整数値化されたY座標値
を用いて始点のX座標から終点のX座標まで各画素をイ
メージメモリ11に書き込む。
素発生手段7は、始点における整数値化されたY座標値
を用いて始点のX座標から終点のX座標まで各画素をイ
メージメモリ11に書き込む。
【0013】分割有りと判定された場合に実行される直
線分割手段4は、発生させる直線の範囲を2分割する。
この際、分割の境界となる点の座標は分割された片側の
図形の終点座標となり、もう片側の始点座標となる。直
線分割手段4により分割された直線情報に対する画素発
生処理プロセスは、この後、プロセス待ち行列8に送ら
れ、複数の使用可能なCPU5に分散される。プロセス
の実行を指定されたプロセッサ上でも、上記手順と同様
の画素集合発生処理を行うプログラムが稼働し、割り当
てられた図形情報を受けとり、処理を実行するため、図
形情報は分割後も分割前と同様のデータ構造をとるよう
にしてある。
線分割手段4は、発生させる直線の範囲を2分割する。
この際、分割の境界となる点の座標は分割された片側の
図形の終点座標となり、もう片側の始点座標となる。直
線分割手段4により分割された直線情報に対する画素発
生処理プロセスは、この後、プロセス待ち行列8に送ら
れ、複数の使用可能なCPU5に分散される。プロセス
の実行を指定されたプロセッサ上でも、上記手順と同様
の画素集合発生処理を行うプログラムが稼働し、割り当
てられた図形情報を受けとり、処理を実行するため、図
形情報は分割後も分割前と同様のデータ構造をとるよう
にしてある。
【0014】オペレーティングシステム10は、スケジ
ューラ9により複数のプロセスに対するCPU時間の割
当てを行う。このため、複数のCPUの管理下で生成さ
れる各プロセスを同時に実行可能であり、画素集合発生
処理を並列実行できる。スケジューラ9が画素集合発生
処理を各CPUに割り当てると、割当てられたプロセッ
サは再度取得された図形情報をもとに手段2、手段3、
手段4の一連の処理を実行するプロセス6を起動する。
各プロセッサで生成された実画素データはイメージメモ
リ7に蓄積され、出力装置12に出力される。本実施例
では、複数のプロセッサが同一コンピュータ上にある密
結合のマルチプロセッサを用いて実行するが、ネットワ
ーク上で粗結合されているコンピュータ上のプロセッサ
を使用する処理系においても有効である。これについて
は、実施例2で述べる。
ューラ9により複数のプロセスに対するCPU時間の割
当てを行う。このため、複数のCPUの管理下で生成さ
れる各プロセスを同時に実行可能であり、画素集合発生
処理を並列実行できる。スケジューラ9が画素集合発生
処理を各CPUに割り当てると、割当てられたプロセッ
サは再度取得された図形情報をもとに手段2、手段3、
手段4の一連の処理を実行するプロセス6を起動する。
各プロセッサで生成された実画素データはイメージメモ
リ7に蓄積され、出力装置12に出力される。本実施例
では、複数のプロセッサが同一コンピュータ上にある密
結合のマルチプロセッサを用いて実行するが、ネットワ
ーク上で粗結合されているコンピュータ上のプロセッサ
を使用する処理系においても有効である。これについて
は、実施例2で述べる。
【0015】次に、本発明を構成する各手段に関して詳
細な実施例を示す。直線情報1は、アプリケーションに
より出力された図形情報の内の直線に関する情報であ
る。具体的な直線情報の記述形式は使用しているシステ
ムに依存するが、本実施例では直線情報1は始点、終点
の各X座標、Y座標が実数値で与えられている場合を例
に挙げて説明する。
細な実施例を示す。直線情報1は、アプリケーションに
より出力された図形情報の内の直線に関する情報であ
る。具体的な直線情報の記述形式は使用しているシステ
ムに依存するが、本実施例では直線情報1は始点、終点
の各X座標、Y座標が実数値で与えられている場合を例
に挙げて説明する。
【0016】まず、差分検出手段2と分割判定手段3に
ついて、処理内容を図2の流れ図と、図3を用いて説明
する。この2つの手段によって行われる処理は、始点、
終点座標からなる直線情報からY座標について差分値を
検出し、画素のずれの有無の判定により直線を分割する
かしないかを決定し、処理の分岐を行うものである。直
線情報として与えられる座標値が整数値表現であった場
合、差分検出手段2は単純に始点と終点の各Y座標が等
しいか、異なるかで段差の有無を判定することができる
が、他方、実数値表現である場合は、値がゼロでない差
分が検出されたからといって画素のずれが存在するとは
限らない。そのため、本実施例では与えられる直線情報
が実数値表現されている場合の実施例として、以下の2
通りの方法で行っている。この方法について説明する。
ついて、処理内容を図2の流れ図と、図3を用いて説明
する。この2つの手段によって行われる処理は、始点、
終点座標からなる直線情報からY座標について差分値を
検出し、画素のずれの有無の判定により直線を分割する
かしないかを決定し、処理の分岐を行うものである。直
線情報として与えられる座標値が整数値表現であった場
合、差分検出手段2は単純に始点と終点の各Y座標が等
しいか、異なるかで段差の有無を判定することができる
が、他方、実数値表現である場合は、値がゼロでない差
分が検出されたからといって画素のずれが存在するとは
限らない。そのため、本実施例では与えられる直線情報
が実数値表現されている場合の実施例として、以下の2
通りの方法で行っている。この方法について説明する。
【0017】まず、図3(a)に図示した方法は、流れ
図2(a)に示す処理手順で行う。直線情報として始点
の実数座標値(rx1,ry1)と終点の実数座標値(rx2,ry
2)を読み込む(21)。始点のY座標値ry1を四捨五入
した値をsyとし、終点のY座標値ry2との差eをとる(2
2)。流れ図中のround(y)は、値yを四捨五入すること
を意味する。終点のY座標値は実数値のままで扱う。こ
の結果得られた2つの座標の差分eの値を基準値'0.5'と
比較する(23)。基準値より小さい場合は、始点から
終点までの各画素は同一のY座標を持つことが分るた
め、分割無しと判定する(25)。一方、基準値より大
きい場合、直線には画素のずれが存在することを意味す
るため、分割を行うように判定する(24)。
図2(a)に示す処理手順で行う。直線情報として始点
の実数座標値(rx1,ry1)と終点の実数座標値(rx2,ry
2)を読み込む(21)。始点のY座標値ry1を四捨五入
した値をsyとし、終点のY座標値ry2との差eをとる(2
2)。流れ図中のround(y)は、値yを四捨五入すること
を意味する。終点のY座標値は実数値のままで扱う。こ
の結果得られた2つの座標の差分eの値を基準値'0.5'と
比較する(23)。基準値より小さい場合は、始点から
終点までの各画素は同一のY座標を持つことが分るた
め、分割無しと判定する(25)。一方、基準値より大
きい場合、直線には画素のずれが存在することを意味す
るため、分割を行うように判定する(24)。
【0018】他方、図3(b)に図示した方法は、流れ
図2(b)に示す処理手順で行う。前記の方法と同様に
直線情報を読み込み(26)、始点、終点双方のY座標
値ry1、ry2を四捨五入する。この結果得られた整数値y
1、y2の差eを算出する(27)。差分eの値を基準値'1'
と比較し(28)、基準値より小さい場合は分割無しと
判定し(30)、大きい場合は分割有りとする(2
9)。
図2(b)に示す処理手順で行う。前記の方法と同様に
直線情報を読み込み(26)、始点、終点双方のY座標
値ry1、ry2を四捨五入する。この結果得られた整数値y
1、y2の差eを算出する(27)。差分eの値を基準値'1'
と比較し(28)、基準値より小さい場合は分割無しと
判定し(30)、大きい場合は分割有りとする(2
9)。
【0019】以上に述べた方法で、直線の分割の有無を
判定し、分割有りの場合、図1の直線分割手段4の処理
に移行する。
判定し、分割有りの場合、図1の直線分割手段4の処理
に移行する。
【0020】次に、直線分割手段4について説明する。
この処理は直線の画素発生を並列実行するとき、処理を
担当する各プロセッサに与えられる直線情報を生成する
ことを目的とする。本実施例では直線を2分割し、それ
ぞれの直線の直線情報を生成する場合を例に挙げる。分
割の手順を流れ図4に従って説明する。流れ図4中で扱
われている記号で、x1、x2はそれぞれ始点、終点の整数
値化されたX座標である。2分割した時の分割点(mx,m
y)の求め方は複数考えられるが、本実施例ではできる
だけ元の直線に近い座標を得られるよう以下の計算方法
で行った(41)。
この処理は直線の画素発生を並列実行するとき、処理を
担当する各プロセッサに与えられる直線情報を生成する
ことを目的とする。本実施例では直線を2分割し、それ
ぞれの直線の直線情報を生成する場合を例に挙げる。分
割の手順を流れ図4に従って説明する。流れ図4中で扱
われている記号で、x1、x2はそれぞれ始点、終点の整数
値化されたX座標である。2分割した時の分割点(mx,m
y)の求め方は複数考えられるが、本実施例ではできる
だけ元の直線に近い座標を得られるよう以下の計算方法
で行った(41)。
【0021】mx = round((x1+x2)/2) my = slope*mx+cons ここで、slope及びconsで示した値はそれぞれ定数で、
直線の画素発生処理を始める段階で最初に与えられた、
つまり分割を行っていない段階の直線における直線の方
程式 y = slope * x + cons の傾き(X座標の増加量に対するY座標の増加量の値)
と切片(X座標がゼロの時のY座標の値)である。具体
的には、上記で述べた直線の始点座標が(rx1,ry1)、
終点座標が(rx2,ry2)であった場合に、 slope = (ry2-ry1)/(rx2-rx1) cons = ry2-slope*rx2 で求められる。
直線の画素発生処理を始める段階で最初に与えられた、
つまり分割を行っていない段階の直線における直線の方
程式 y = slope * x + cons の傾き(X座標の増加量に対するY座標の増加量の値)
と切片(X座標がゼロの時のY座標の値)である。具体
的には、上記で述べた直線の始点座標が(rx1,ry1)、
終点座標が(rx2,ry2)であった場合に、 slope = (ry2-ry1)/(rx2-rx1) cons = ry2-slope*rx2 で求められる。
【0022】分割点を求める際、分割点のX座標は整数
値を取ることにする。その理由は、図5に示したような
場合を例に挙げて説明する。始点座標を(x1,y1)、終
点座標を(x2,y2)で与えられている直線を2等分した
ときの値、つまり(x1+x2)/2が、'ある整数値+0.5'であ
ったとする。そのX座標に対するY座標はslope*(x1+x
2)/2+consである。この両者の値をそれぞれX座標、Y
座標とした点P0を分割点とした場合、次のような問題
が起こる。前記の図2で示したような差分検出手段を実
行する場合、始点座標のY座標を四捨五入する処理が必
要とされる。この処理の意味することは、始点座標を実
画素に置き換えたときにとるべき格子点の座標を算出す
ることである。従って、整数値座標の格子点で直線の始
点P0に最も近い点をとるのであれば、本来始点画素は
P3に置かれるべきである。ところが、上記で示した始
点座標をそのまま四捨五入すると、P1に画素が置かれ
ることになってしまい、不都合が生ずることになる。以
上のことから判断し、始点のX座標は整数値をとり、Y
座標はそのX座標に対応する直線上のY座標を求めるこ
とにした。こうして求められた点P2を分割点(mx,m
y)とし、直線を分割する(42)。分割によって得ら
れた始点(x1,y1)、終点(mx,my)の直線情報と、始点
(mx,my)、終点(x2,y2)の直線情報をプロセス待ち行
列8に出力する。
値を取ることにする。その理由は、図5に示したような
場合を例に挙げて説明する。始点座標を(x1,y1)、終
点座標を(x2,y2)で与えられている直線を2等分した
ときの値、つまり(x1+x2)/2が、'ある整数値+0.5'であ
ったとする。そのX座標に対するY座標はslope*(x1+x
2)/2+consである。この両者の値をそれぞれX座標、Y
座標とした点P0を分割点とした場合、次のような問題
が起こる。前記の図2で示したような差分検出手段を実
行する場合、始点座標のY座標を四捨五入する処理が必
要とされる。この処理の意味することは、始点座標を実
画素に置き換えたときにとるべき格子点の座標を算出す
ることである。従って、整数値座標の格子点で直線の始
点P0に最も近い点をとるのであれば、本来始点画素は
P3に置かれるべきである。ところが、上記で示した始
点座標をそのまま四捨五入すると、P1に画素が置かれ
ることになってしまい、不都合が生ずることになる。以
上のことから判断し、始点のX座標は整数値をとり、Y
座標はそのX座標に対応する直線上のY座標を求めるこ
とにした。こうして求められた点P2を分割点(mx,m
y)とし、直線を分割する(42)。分割によって得ら
れた始点(x1,y1)、終点(mx,my)の直線情報と、始点
(mx,my)、終点(x2,y2)の直線情報をプロセス待ち行
列8に出力する。
【0023】以上で説明した本発明の並列化処理の一連
の構成を、具体的にプログラムする際に行う操作手順
を、図6の流れ図を使って説明する。流れ図に示される
プログラムは、定数値等の、最初に1度計算しておけば
利用できる値を算出する処理を実行する部分と、並列実
行できる処理の部分からなる。主プログラム中で並列実
行記述を検出した後、一部の処理単位が分散され別のプ
ロセッサ上で実行されるが、処理を分担されたプロセッ
サ上で動作するプロセスは、主プログラムの内の、並列
実行可能な処理の部分である。具体的に処理の手順を以
下に示す。
の構成を、具体的にプログラムする際に行う操作手順
を、図6の流れ図を使って説明する。流れ図に示される
プログラムは、定数値等の、最初に1度計算しておけば
利用できる値を算出する処理を実行する部分と、並列実
行できる処理の部分からなる。主プログラム中で並列実
行記述を検出した後、一部の処理単位が分散され別のプ
ロセッサ上で実行されるが、処理を分担されたプロセッ
サ上で動作するプロセスは、主プログラムの内の、並列
実行可能な処理の部分である。具体的に処理の手順を以
下に示す。
【0024】直線情報から始点座標(rx1,ry1)、終点
座標(rx2,ry2)を持つ直線Lに関して画素発生処理を
行う(61)。直線Lの方程式で定数として得られるsl
ope(直線の傾き)と、cons(切片)の値をあらかじめ
算出する(62)。始点、終点共にX座標は整数値を扱
うため、それぞれのX座標rx1、rx2を四捨五入して整数
値化し、x1、x2とする(63)。さらに、この時求めら
れたX座標x1、x2に対する直線上の点のY座標を、直線
の方定式より算出しy1、y2とする。本実施例では、直線
を分割する際、分割点は片方の直線の終点となり、もう
片方の直線の始点となる。このため、それぞれの直線に
関して画素を発生させる時、始点、終点両方の画素を含
めて発生させてしまうと、分割点に関しては重複して画
素を発生させることになる。この重複を避けるため、本
実施例の分割した直線の画素発生処理では、始点画素は
含むが終点画素の発生は行わないものとした。従って、
分割されていない最初の直線Lにおいて、終点画素を最
初に描画する(65)。ここまでの操作は、本プログラ
ムの初期処理とする。
座標(rx2,ry2)を持つ直線Lに関して画素発生処理を
行う(61)。直線Lの方程式で定数として得られるsl
ope(直線の傾き)と、cons(切片)の値をあらかじめ
算出する(62)。始点、終点共にX座標は整数値を扱
うため、それぞれのX座標rx1、rx2を四捨五入して整数
値化し、x1、x2とする(63)。さらに、この時求めら
れたX座標x1、x2に対する直線上の点のY座標を、直線
の方定式より算出しy1、y2とする。本実施例では、直線
を分割する際、分割点は片方の直線の終点となり、もう
片方の直線の始点となる。このため、それぞれの直線に
関して画素を発生させる時、始点、終点両方の画素を含
めて発生させてしまうと、分割点に関しては重複して画
素を発生させることになる。この重複を避けるため、本
実施例の分割した直線の画素発生処理では、始点画素は
含むが終点画素の発生は行わないものとした。従って、
分割されていない最初の直線Lにおいて、終点画素を最
初に描画する(65)。ここまでの操作は、本プログラ
ムの初期処理とする。
【0025】続いて並列化可能な部分の処理の流れを説
明する。この時点で与えられている情報は、始点座標
(x1,y1)と終点座標(x2,y2)である。まず、始点座標
と終点座標が同一点でないか判断し(66)、同じ場合
は、始点の画素を発生させる。このとき、画素のY座標
はy1を四捨五入した値で得られる(67)。一方、始点
と終点が同一点でなかった場合、差分検出処理に移行す
る。上記では差分検出処理を2通り挙げたが、本流れ図
ではこの内の終点の実数値Y座標と始点の整数値Y座標
の差分を算出する方法を扱う。ここで差分eが求まると
(68)、eの値によって直線を分割するかしないかの
判定を行う(69)。差分eが基準値'0.5'より小さかっ
た場合は、画素発生処理に移行する。画素発生処理で
は、与えられた始点から終点までの画素を、同一のY座
標(始点のY座標を整数値化した値round(y1))で発生
させることができる(70)(71)。従来技術で述べ
たBresenhamの画素発生アルゴリズムを使用した場合、
同一のY座標を持つ画素が連続している場合であって
も、連続する画素列の続く範囲を検出する時に、全ての
X座標に対して逐一計算を行わなければならなかったた
め、効率がよくなかった。その点でも、段差を検出する
手段と、段差のない直線画素列に対しては、個々の点に
対する計算を行わないという画素発生手段を持ち合わせ
ている本発明は、処理速度の面で効果があるといえる。
明する。この時点で与えられている情報は、始点座標
(x1,y1)と終点座標(x2,y2)である。まず、始点座標
と終点座標が同一点でないか判断し(66)、同じ場合
は、始点の画素を発生させる。このとき、画素のY座標
はy1を四捨五入した値で得られる(67)。一方、始点
と終点が同一点でなかった場合、差分検出処理に移行す
る。上記では差分検出処理を2通り挙げたが、本流れ図
ではこの内の終点の実数値Y座標と始点の整数値Y座標
の差分を算出する方法を扱う。ここで差分eが求まると
(68)、eの値によって直線を分割するかしないかの
判定を行う(69)。差分eが基準値'0.5'より小さかっ
た場合は、画素発生処理に移行する。画素発生処理で
は、与えられた始点から終点までの画素を、同一のY座
標(始点のY座標を整数値化した値round(y1))で発生
させることができる(70)(71)。従来技術で述べ
たBresenhamの画素発生アルゴリズムを使用した場合、
同一のY座標を持つ画素が連続している場合であって
も、連続する画素列の続く範囲を検出する時に、全ての
X座標に対して逐一計算を行わなければならなかったた
め、効率がよくなかった。その点でも、段差を検出する
手段と、段差のない直線画素列に対しては、個々の点に
対する計算を行わないという画素発生手段を持ち合わせ
ている本発明は、処理速度の面で効果があるといえる。
【0026】差分eを用いた判定の結果、分割有りと判
定された場合、直線分割処理に移行する。まず、始点と
終点のX座標の値の差が'1'であるか判定する。始点、
終点共にX座標は整数値をとることが約束されているた
め、両座標の差が'1'であるということは、隣合う画素
であることを意味する。従って、これ以上の分割は必要
なく、始点の画素を発生させる処理を実行する(7
3)。一方、両座標の差が'1'でない場合は分割点(mx,
my)を算出する(74)。この時得られた分割点を用い
て 始点(x1,y1)、終点(mx,my)を持つ直線 始点(mx,my)、終点(x2,y2)を持つ直線 を生成する(75)。それぞれの直線に関して流れ図の
手順(66)から(75)までの処理を再帰的に実行す
る。
定された場合、直線分割処理に移行する。まず、始点と
終点のX座標の値の差が'1'であるか判定する。始点、
終点共にX座標は整数値をとることが約束されているた
め、両座標の差が'1'であるということは、隣合う画素
であることを意味する。従って、これ以上の分割は必要
なく、始点の画素を発生させる処理を実行する(7
3)。一方、両座標の差が'1'でない場合は分割点(mx,
my)を算出する(74)。この時得られた分割点を用い
て 始点(x1,y1)、終点(mx,my)を持つ直線 始点(mx,my)、終点(x2,y2)を持つ直線 を生成する(75)。それぞれの直線に関して流れ図の
手順(66)から(75)までの処理を再帰的に実行す
る。
【0027】図7は、流れ図6に従って処理を実行した
結果である。図中(ア)から(コ)の座標が、分割を繰
り返すことによって算出された点である。明かに従来の
個々の点を全て計算によって求めるより、求める点の数
は少なく、計算量の削減効果がある。特に、X軸となす
角度が小さい直線に関しては有効性が顕著である。
結果である。図中(ア)から(コ)の座標が、分割を繰
り返すことによって算出された点である。明かに従来の
個々の点を全て計算によって求めるより、求める点の数
は少なく、計算量の削減効果がある。特に、X軸となす
角度が小さい直線に関しては有効性が顕著である。
【0028】言語仕様に並列記述を認めている疑似的な
プログラミング言語を使用して、並列実行すべき部分の
明示的な記述方法を図8に示す。手続きplotは、引数と
して点P1、P2の2つの座標を受け取り、その座標を
結ぶ線分P1P2を発生する手続きである。変数型po
intは、点のX座標値、Y座標値を格納する構造体と
して定義する。差分検出処理を実行した後(81)、条
件文(82)で、始点から終点の間に段差がないかどう
か判断する。もし、段差がないと判断された場合、引数
で与えられている直線情報を用いて、直線の画素集合発
生手続きを実行する(83)。一方、段差があると判定
された場合、線分分割処理により線分P1P2の分割点
PMを求める(84)。cobegin(85)と、coend(8
8)は、並列実行すべき処理部分を明示的に示すための
予約語である。cobegin、coendで囲まれた部分の処理は
並列に実行され、それ以外の処理は、コンパイラにより
逐次処理系での実行コードが生成され、通常に処理され
る。本実施例では、並列化する部分は、得られた分割点
PMを新たに引数として用いて、自分自身の手続きに再
帰的に複数個(86)、(87)与える部分である。並
列記述の開始を意味するcobeginを検出した場合、並列
処理手段により、処理を分担させることが可能なプロセ
ッサを検出し、処理の片方は自分自身で実行し、もう一
方は検出されたプロセッサに分散させる。この様なシス
テムを考えると、図9のような2nトリー構成になる。
アルファベットのaからhで示すのは、使用可能なプロ
セッサである。プロセッサaが主プログラムが起動され
たプロセッサであるとすると、直線が分割されるごとに
プロセッサに割り振られる様子が分る。プロセスの数が
プロセッサの数より多くなった場合は、待ち行列を作り
蓄えられる。プロセッサの数がプロセスの数より多い場
合、結合されている使用可能なプロセッサ中のどのプロ
セッサに割り当てるかは、スケジューラによって決めら
れる。この時、プロセス間通信によりプロセッサの負荷
を検出し、負荷の少ないプロセッサに優先的に処理をス
ケジュールすることで、処理の待ち時間を軽減できる。
この時、プロセッサの負荷は、オペレーティングシステ
ムのスケジューラに対する要求の待ち行列の長さを検出
することで判断できる。
プログラミング言語を使用して、並列実行すべき部分の
明示的な記述方法を図8に示す。手続きplotは、引数と
して点P1、P2の2つの座標を受け取り、その座標を
結ぶ線分P1P2を発生する手続きである。変数型po
intは、点のX座標値、Y座標値を格納する構造体と
して定義する。差分検出処理を実行した後(81)、条
件文(82)で、始点から終点の間に段差がないかどう
か判断する。もし、段差がないと判断された場合、引数
で与えられている直線情報を用いて、直線の画素集合発
生手続きを実行する(83)。一方、段差があると判定
された場合、線分分割処理により線分P1P2の分割点
PMを求める(84)。cobegin(85)と、coend(8
8)は、並列実行すべき処理部分を明示的に示すための
予約語である。cobegin、coendで囲まれた部分の処理は
並列に実行され、それ以外の処理は、コンパイラにより
逐次処理系での実行コードが生成され、通常に処理され
る。本実施例では、並列化する部分は、得られた分割点
PMを新たに引数として用いて、自分自身の手続きに再
帰的に複数個(86)、(87)与える部分である。並
列記述の開始を意味するcobeginを検出した場合、並列
処理手段により、処理を分担させることが可能なプロセ
ッサを検出し、処理の片方は自分自身で実行し、もう一
方は検出されたプロセッサに分散させる。この様なシス
テムを考えると、図9のような2nトリー構成になる。
アルファベットのaからhで示すのは、使用可能なプロ
セッサである。プロセッサaが主プログラムが起動され
たプロセッサであるとすると、直線が分割されるごとに
プロセッサに割り振られる様子が分る。プロセスの数が
プロセッサの数より多くなった場合は、待ち行列を作り
蓄えられる。プロセッサの数がプロセスの数より多い場
合、結合されている使用可能なプロセッサ中のどのプロ
セッサに割り当てるかは、スケジューラによって決めら
れる。この時、プロセス間通信によりプロセッサの負荷
を検出し、負荷の少ないプロセッサに優先的に処理をス
ケジュールすることで、処理の待ち時間を軽減できる。
この時、プロセッサの負荷は、オペレーティングシステ
ムのスケジューラに対する要求の待ち行列の長さを検出
することで判断できる。
【0029】最終的に各プロセッサ上で画素発生処理を
実行するが、発生させた実画素データは、イメージメモ
リに蓄積される。該イメージメモリとして複数のプロセ
ッサの共有メモリを使用するか、各プロセッサごとのメ
モリを使用し、後で合成処理を実行するかは、処理系の
任意であり、ハードウェアの構成により、高速処理を実
現できる方を採用する。イメージメモリへの実画素デー
タの書き込みが終了した以降の出力のための処理は、各
出力装置に対する従来の方法を実行する。
実行するが、発生させた実画素データは、イメージメモ
リに蓄積される。該イメージメモリとして複数のプロセ
ッサの共有メモリを使用するか、各プロセッサごとのメ
モリを使用し、後で合成処理を実行するかは、処理系の
任意であり、ハードウェアの構成により、高速処理を実
現できる方を採用する。イメージメモリへの実画素デー
タの書き込みが終了した以降の出力のための処理は、各
出力装置に対する従来の方法を実行する。
【0030】(実施例2)実施例1では、本発明の画素
発生処理プログラムが、密結合のマルチプロセッサを利
用して実行される場合を考えたが、実施例2では、なん
らかの通信手段を介して接続されているコンピュータ上
のプロセッサを利用して実行される場合について考え
る。接続される他の情報機器との間の通信手段及び該通
信手段を実現するハードウェアを「ネットワーク」と呼
称する。ネットワークは、ハードウェアに依存した物理
的なアドレスと、上層のプログラムから参照される論理
的なアドレス管理機構をもつ。これらのアドレスは、ネ
ットワーク上の特定のコンピュータへのパケット転送に
用いられるが、多くのネットワークプロトコルにおい
て、より抽象化の進んだ上層の処理手順をもっている。
本発明の実施例においては、これらの上層の処理ルーチ
ン群が、オペレーティングシステムによって供給されて
いるものとして説明を行う。この様な管理機構により、
プログラムはコンピュータを名前と論理アドレスにより
検出可能であり、また通信相手のプロセスとは通信ソケ
ットもしくは類似の機構を用いたパケットの送信/受信
が可能であるものとする。図10を用いて詳細を述べ
る。
発生処理プログラムが、密結合のマルチプロセッサを利
用して実行される場合を考えたが、実施例2では、なん
らかの通信手段を介して接続されているコンピュータ上
のプロセッサを利用して実行される場合について考え
る。接続される他の情報機器との間の通信手段及び該通
信手段を実現するハードウェアを「ネットワーク」と呼
称する。ネットワークは、ハードウェアに依存した物理
的なアドレスと、上層のプログラムから参照される論理
的なアドレス管理機構をもつ。これらのアドレスは、ネ
ットワーク上の特定のコンピュータへのパケット転送に
用いられるが、多くのネットワークプロトコルにおい
て、より抽象化の進んだ上層の処理手順をもっている。
本発明の実施例においては、これらの上層の処理ルーチ
ン群が、オペレーティングシステムによって供給されて
いるものとして説明を行う。この様な管理機構により、
プログラムはコンピュータを名前と論理アドレスにより
検出可能であり、また通信相手のプロセスとは通信ソケ
ットもしくは類似の機構を用いたパケットの送信/受信
が可能であるものとする。図10を用いて詳細を述べ
る。
【0031】図中コンピュータ101aは、コンピュー
タ101b、101c、101dとネットワーク102
によって接続されている。コンピュータ101aで直線
の出力要求が発生すると、プログラム103はアプリケ
ーションにより出力された図形情報データを中間コード
に変換した後の直線に関する情報1を受けとり、処理を
実行する。プログラム103は、図1の手段2、3、4
を実行するプログラムである。つまり、直線情報を受け
取り、始点、終点座標に基づく差分を検出し、その値か
ら分割の有無を判定し、分割有りの判定であれば分割処
理を実行するものである。上記処理を実行中、注目して
いる図形要素のデータに対して分割が行われないと判定
された場合、該直線情報を画素発生手段7に引き渡す。
図形集合発生手段7は、与えられた始点、終点座標を用
いて実画素集合を発生させる。この処理に与えられる直
線情報は、画素のずれを含んでいないため、始点から終
点まで同一のY座標値(直線とX軸とのなす角が45゜
より大きい場合はX座標値)で画素を発生させればよ
く、極めて簡単なアルゴリズムで実行できる。また、処
理中の直線に対して分割すると判定された場合、プログ
ラム103は直線情報送信ソケット107を介してネッ
トワークに出力され、コンピュータ103b、103
c、103dのプログラム103に転送される。受信側
では、直線情報受信ソケット106を介して直線情報を
受け取る。受信した直線情報データを基に、各コンピュ
ータ上のプログラム103は、直線分割処理を実行し、
分割有りと判定された場合は、再度直線情報送信ソケッ
ト107を介して他のコンピュータに処理を分散させ
る。一方、分割が行われない場合は、画素発生手段7に
より実画素集合を発生させる。実画素データを発生させ
たコンピュータが直線出力要求を発したコンピュータ1
01a以外である場合、画素データ送信ソケット109
を介して出力要求を発しているコンピュータ101aに
実画素データを転送する。コンピュータ101aでは、
複数のコンピュータからの実画素データを、画素データ
受信ソケット108を用いて受信し、イメージメモリ領
域105に蓄積する。コンピュータ101a上で直接画
素発生された実画素集合及び、上記の転送された実画素
集合は、画素合成処理装置104により合成され、この
結果得られた画素集合データを、プリントエンジンコン
トローラあるいはグラフィックディスプレイコントロー
ラに転送することにより出力を得る。
タ101b、101c、101dとネットワーク102
によって接続されている。コンピュータ101aで直線
の出力要求が発生すると、プログラム103はアプリケ
ーションにより出力された図形情報データを中間コード
に変換した後の直線に関する情報1を受けとり、処理を
実行する。プログラム103は、図1の手段2、3、4
を実行するプログラムである。つまり、直線情報を受け
取り、始点、終点座標に基づく差分を検出し、その値か
ら分割の有無を判定し、分割有りの判定であれば分割処
理を実行するものである。上記処理を実行中、注目して
いる図形要素のデータに対して分割が行われないと判定
された場合、該直線情報を画素発生手段7に引き渡す。
図形集合発生手段7は、与えられた始点、終点座標を用
いて実画素集合を発生させる。この処理に与えられる直
線情報は、画素のずれを含んでいないため、始点から終
点まで同一のY座標値(直線とX軸とのなす角が45゜
より大きい場合はX座標値)で画素を発生させればよ
く、極めて簡単なアルゴリズムで実行できる。また、処
理中の直線に対して分割すると判定された場合、プログ
ラム103は直線情報送信ソケット107を介してネッ
トワークに出力され、コンピュータ103b、103
c、103dのプログラム103に転送される。受信側
では、直線情報受信ソケット106を介して直線情報を
受け取る。受信した直線情報データを基に、各コンピュ
ータ上のプログラム103は、直線分割処理を実行し、
分割有りと判定された場合は、再度直線情報送信ソケッ
ト107を介して他のコンピュータに処理を分散させ
る。一方、分割が行われない場合は、画素発生手段7に
より実画素集合を発生させる。実画素データを発生させ
たコンピュータが直線出力要求を発したコンピュータ1
01a以外である場合、画素データ送信ソケット109
を介して出力要求を発しているコンピュータ101aに
実画素データを転送する。コンピュータ101aでは、
複数のコンピュータからの実画素データを、画素データ
受信ソケット108を用いて受信し、イメージメモリ領
域105に蓄積する。コンピュータ101a上で直接画
素発生された実画素集合及び、上記の転送された実画素
集合は、画素合成処理装置104により合成され、この
結果得られた画素集合データを、プリントエンジンコン
トローラあるいはグラフィックディスプレイコントロー
ラに転送することにより出力を得る。
【0032】上記の2つの実施例において、直線とX軸
とのなす角度が45゜より大きい場合は、X座標とY座
標を置き換えて処理を行う。なお、45゜の場合は、本
実施例ではそのままの座標平面を用いて行ったが、X座
標とY座標を置き換えた座標平面での実行でも問題でな
い。
とのなす角度が45゜より大きい場合は、X座標とY座
標を置き換えて処理を行う。なお、45゜の場合は、本
実施例ではそのままの座標平面を用いて行ったが、X座
標とY座標を置き換えた座標平面での実行でも問題でな
い。
【0033】また、上記実施例の直線分割手段では、直
線を2分割する方法を実行したが、分割数はn分割(n
は自然数)でも構わない。n分割で実行する場合は、流
れ図6の処理(74)において以下のように定義する。
この時、分割点は(n−1)個存在し、それぞれX座標
の小さいものから順に座標値を(m1x,m1y)(m2x,m2y)
…(mnx,mny)とすると、 となる。さらに、処理(75)では、 を生成し、それぞれの直線に関して、流れ図の手順(6
6)から(75)までの処理を再帰的に実行する。
線を2分割する方法を実行したが、分割数はn分割(n
は自然数)でも構わない。n分割で実行する場合は、流
れ図6の処理(74)において以下のように定義する。
この時、分割点は(n−1)個存在し、それぞれX座標
の小さいものから順に座標値を(m1x,m1y)(m2x,m2y)
…(mnx,mny)とすると、 となる。さらに、処理(75)では、 を生成し、それぞれの直線に関して、流れ図の手順(6
6)から(75)までの処理を再帰的に実行する。
【0034】以上の実施例によって示されるように、本
発明はアプリケーションが出力した図形描画のための直
線情報を取得して分割し、複数の情報機器に分散し画素
発生する手段であるから、その手段を実現するソフトウ
ェアの部分が実際にいかなる情報機器のハードウェアの
上で実行されるかには無関係である。いかなる情報機器
にせよ、何らかの双方向通信手段によって接続された機
器間では、既に述べた実施例の幾つかに示される手段に
よって本発明の直線画素発生処理を実施可能である。
発明はアプリケーションが出力した図形描画のための直
線情報を取得して分割し、複数の情報機器に分散し画素
発生する手段であるから、その手段を実現するソフトウ
ェアの部分が実際にいかなる情報機器のハードウェアの
上で実行されるかには無関係である。いかなる情報機器
にせよ、何らかの双方向通信手段によって接続された機
器間では、既に述べた実施例の幾つかに示される手段に
よって本発明の直線画素発生処理を実施可能である。
【0035】
【発明の効果】以上で説明したように、本発明では直線
の画素発生処理の実行時に分割判定手段が直線中の画素
のずれの有無を検出し、その結果に基づいて直線分割手
段が直線の画素発生範囲を分割する。そのため、本発明
の手段により直線が独立した処理単位に再帰的に分割さ
れる結果、画素発生処理は並列性を帯びることになり、
従来逐次処理で行われていたため並列処理系を利用でき
なかった画素発生処理が並列実行可能となる効果があ
る。それと同時に、最終的に個々の画素を発生する段階
では、同一のY座標を持つ連続した画素に対しては、全
ての画素の座標計算を行う必要がないため、画素を高速
に描画することができる。
の画素発生処理の実行時に分割判定手段が直線中の画素
のずれの有無を検出し、その結果に基づいて直線分割手
段が直線の画素発生範囲を分割する。そのため、本発明
の手段により直線が独立した処理単位に再帰的に分割さ
れる結果、画素発生処理は並列性を帯びることになり、
従来逐次処理で行われていたため並列処理系を利用でき
なかった画素発生処理が並列実行可能となる効果があ
る。それと同時に、最終的に個々の画素を発生する段階
では、同一のY座標を持つ連続した画素に対しては、全
ての画素の座標計算を行う必要がないため、画素を高速
に描画することができる。
【図1】 実施例1において、処理系の構成を示す図。
【図2】 実施例1において、差分検出手段の処理手順
を示す流れ図。
を示す流れ図。
【図3】 実施例1において、差分検出手段の処理手順
を示す流れ図。
を示す流れ図。
【図4】 実施例1において、直線分割手段の処理手順
を示す流れ図。
を示す流れ図。
【図5】 実施例1において、直線分割手段の分割処理
を示す説明図。
を示す説明図。
【図6】 実施例1において、本発明の処理手順を示す
流れ図。
流れ図。
【図7】 本発明の直線分割手段を実行した結果を示す
説明図。
説明図。
【図8】 本発明の疑似プログラムによる説明図。
【図9】 2nトリー構造のシステムの説明図。
【図10】 実施例2において、処理系の構成を示す
図。
図。
【図11】 従来技術の説明図。
1 直線情報 2 差分検出手段 3 分割判定手段 4 直線分割手段 7 画素発生手段 10 オペレーティングシステム 102 ネットワーク 104 画素合成処理装置 105 イメージメモリ領域 106 直線情報受信ソケット 107 直線情報送信ソケット 108 画素データ受信ソケット 109 画素データ送信ソケット
Claims (1)
- 【請求項1】 始点座標と終点座標が与えられた直線に
おいて、(a)X軸とのなす角度が45゜以下、又は4
5゜未満の直線に関しては始点のY座標と終点のY座標
による差を、それ以外の直線に関しては始点のX座標と
終点のX座標による差を検出する差分検出手段と、
(b)前記の差分検出手段によって取得された値を用い
て分割の有無を判定する分割判定手段と、(c)前記の
分割判定手段によって分割無しと判定された場合、直線
Lの始点から終点までの実画素を発生させる画素発生手
段と、(d)前記の分割判定手段によって分割有りと判
定された場合、直線LをN(自然数)分割する直線分割
手段と、(e)前記の直線分割手段によって分割された
各直線に関する始点座標、終点座標をM(M≧1)個の
プロセッサに1直線ずつ分担して与え、各プロセッサご
とに(a)以降の手段による処理を再帰的に並列実行さ
せる並列実行手段と、を有することを特徴とする直線画
素発生装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4209208A JPH0660191A (ja) | 1992-08-05 | 1992-08-05 | 直線画素発生装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4209208A JPH0660191A (ja) | 1992-08-05 | 1992-08-05 | 直線画素発生装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH0660191A true JPH0660191A (ja) | 1994-03-04 |
Family
ID=16569150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4209208A Pending JPH0660191A (ja) | 1992-08-05 | 1992-08-05 | 直線画素発生装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH0660191A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4830759A (en) * | 1986-07-24 | 1989-05-16 | Labofina, S.A. | Dispersant compositions for treating oil slicks |
JP2011039664A (ja) * | 2009-08-07 | 2011-02-24 | Ricoh Co Ltd | 線分描画処理方法及び装置、並びに撮像画像処理装置 |
-
1992
- 1992-08-05 JP JP4209208A patent/JPH0660191A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4830759A (en) * | 1986-07-24 | 1989-05-16 | Labofina, S.A. | Dispersant compositions for treating oil slicks |
JP2011039664A (ja) * | 2009-08-07 | 2011-02-24 | Ricoh Co Ltd | 線分描画処理方法及び装置、並びに撮像画像処理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11763168B2 (en) | Progressive modification of generative adversarial neural networks | |
US6681388B1 (en) | Method and compiler for rearranging array data into sub-arrays of consecutively-addressed elements for distribution processing | |
CN111143174B (zh) | 在共享功率/热约束下操作的硬件的最佳操作点估计器 | |
JP3617851B2 (ja) | パイプライン化データ処理方法 | |
CN110766778B (zh) | 使用散列执行并行路径空间滤波的方法和*** | |
US7937567B1 (en) | Methods for scalably exploiting parallelism in a parallel processing system | |
CN110059793B (zh) | 生成式对抗神经网络的逐步修改 | |
JP2000010943A (ja) | 入力デ―タをデ―タプロセッサ・パイプラインで処理する方法およびシステム | |
CN111191784A (zh) | 转置的稀疏矩阵乘以稠密矩阵用于神经网络训练 | |
CN113568599A (zh) | 用于处理计算作业的方法、电子设备和计算机程序产品 | |
CN111667542B (zh) | 适用于人工神经网络的用于处理压缩数据的解压缩技术 | |
EP3678037A1 (en) | Neural network generator | |
WO2019199307A1 (en) | Second-order optimization methods for avoiding saddle points during the training of deep neural networks | |
US9542127B2 (en) | Image processing method and image processing apparatus | |
EP0314289B1 (en) | Multiple pixel generator | |
US10152310B2 (en) | Fusing a sequence of operations through subdividing | |
CN113822975B (zh) | 用于对图像进行有效采样的技术 | |
US20210255866A1 (en) | Acceleration unit, system-on-chip, server, data center, and related method | |
JPH06274608A (ja) | マルチプロセッサ画像処理装置 | |
JP2007087137A (ja) | 印刷制御装置、画像形成方法および記憶媒体 | |
JPH0660191A (ja) | 直線画素発生装置 | |
CN109272112B (zh) | 一种面向神经网络的数据重用指令映射方法、***及装置 | |
CN116127685A (zh) | 使用机器学习执行模拟 | |
CN114283046B (zh) | 基于icp算法的点云文件配准方法、装置及存储介质 | |
CN116108952A (zh) | 用于组合优化的并行处理 |