JP2015075839A - Image processing apparatus, image processing method, and program - Google Patents
Image processing apparatus, image processing method, and program Download PDFInfo
- Publication number
- JP2015075839A JP2015075839A JP2013210458A JP2013210458A JP2015075839A JP 2015075839 A JP2015075839 A JP 2015075839A JP 2013210458 A JP2013210458 A JP 2013210458A JP 2013210458 A JP2013210458 A JP 2013210458A JP 2015075839 A JP2015075839 A JP 2015075839A
- Authority
- JP
- Japan
- Prior art keywords
- group
- processing
- edge
- composite
- groups
- 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
Images
Landscapes
- Accessory Devices And Overall Control Thereof (AREA)
- Image Generation (AREA)
Abstract
Description
本発明は、画像処理装置、画像処理方法、及びプログラムに関する、具体的には、本発明は、レンダリングにおけるピクセルのコンポジット処理を実行する画像処理装置、画像処理方法、及びプログラムに関する。 The present invention relates to an image processing device, an image processing method, and a program. Specifically, the present invention relates to an image processing device, an image processing method, and a program that execute pixel composite processing in rendering.
印刷データを主走査方向に1ライン毎に読み込んでレンダリングを行うスキャンラインレンダリングという方法がある(特許文献1参照)。スキャンラインレンダリングでは、ページ内に描画する画像オブジェクト(以下「オブジェクト」と称する)と、オブジェクトとの境目又はオブジェクトと、背景画像との境目を指すエッジに関する情報(エッジデータ)に従ってレンダリングを行う。特許文献1は、スキャンラインレンダリングを行うために、1ライン分のエッジデータをメモリにロードすることを開示する。
There is a method called scan line rendering in which print data is read for each line in the main scanning direction and rendered (see Patent Document 1). In scanline rendering, rendering is performed according to information (edge data) about an image object (hereinafter referred to as an “object”) to be drawn in a page and a boundary between the object or an edge indicating a boundary between the object and the background image.
アプリケーションソフトウェアを用いたユーザによって作成される、レンダリング対象となる印刷データは、アプリケーションソフトウェアの描画能力向上に伴い、含まれるエッジ数が多く、複雑なものになってきている。そのため、レンダリングシステムのメモリリソースが不足することや、レンダリング処理に時間がかかること等が問題になっている。 The print data to be rendered created by the user using the application software has become complicated due to an increase in the number of edges included as the rendering performance of the application software increases. For this reason, there are problems such as a shortage of memory resources in the rendering system and a long time for rendering processing.
このような大量エッジを含む印刷データのレンダリング処理方法として、特許文献2は、処理を行うページ記述言語(PDL)データが含むオブジェクトをレベル毎にグループ化して複数のディスプレイリストを生成するフォールバックと呼ばれる処理を開示する。 As a rendering processing method for print data including a large amount of edges, Japanese Patent Application Laid-Open No. H10-228707 discloses a fallback method in which objects included in page description language (PDL) data to be processed are grouped for each level to generate a plurality of display lists. Disclosed process is called.
特許文献1が開示するスキャンラインレンダリング処理によって大量エッジを含む印刷データをレンダリングする際、特許文献2が開示するフォールバック処理を実行することで、限られたメモリリソースを用いてのディスプレイリストの生成が可能となる。
When print data including a large amount of edges is rendered by the scanline rendering process disclosed in
しかし、この方法では、生成したディスプレイリストにCPUキャッシュ内に格納できないだけのエッジが含まれる場合、CPUキャッシュのキャッシュミスヒットの頻発を引き起こし、これにより、レンダリング処理、特にエッジ処理に時間がかかることがある。 However, in this method, when the generated display list includes edges that cannot be stored in the CPU cache, it causes frequent occurrence of cache misses in the CPU cache, which takes time for rendering processing, particularly edge processing. There is.
本願発明は、ディスプレイリストに対するビットマップを生成してレンダリング処理を実行する画像処理装置であって、ディスプレイリストを解釈しオブジェクトをロードするロード手段と、当該ロードしたオブジェクトが不透過であり現在把握しているオブジェクトより上位であるか否か判定する判定手段と、前記ロードしたオブジェクトが不透過であり現在把握しているオブジェクトより上位である場合に、ロードしたオブジェクトの属するグループのグループナンバー及び現在処理中のスキャンラインにおける当該オブジェクトの左右のエッジの座標を保持する保持手段と、コンポジット処理がグループ間のコンポジット処理であり、現在把握している最上位のオブジェクトが属するグループより下位のグループ同士で実行される場合に、前記左右のエッジの座標で表される区間内でコンポジット処理をスキップするスキップ手段とを備えたことを特徴とする。 The present invention is an image processing apparatus that generates a bitmap for a display list and executes a rendering process. The image processing apparatus interprets the display list and loads an object, and the loaded object is opaque and currently grasped. A determination means for determining whether or not the loaded object is higher than the current object, and the group number of the group to which the loaded object belongs and the current process when the loaded object is opaque and higher than the currently known object The holding means that holds the coordinates of the left and right edges of the object in the middle scan line, and the composite process is a composite process between groups, and is executed between groups lower than the group to which the highest-level object currently grasped belongs When to , Characterized in that a skip means for skipping composite processed within a section indicated by the left and right edge coordinates.
本発明により、エッジ数が多い複雑なデータをレンダリング処理する場合であっても、グループ毎にエッジを処理することにより高速にエッジ処理を行うことが可能になる。また、本発明により、グループ間のコンポジット処理も高速に行うことが可能になり、トータルの印刷処理を高速に行うことが可能になる。 According to the present invention, even when complex data having a large number of edges is subjected to rendering processing, edge processing can be performed at high speed by processing edges for each group. Further, according to the present invention, it is possible to perform composite processing between groups at high speed, and it is possible to perform total printing processing at high speed.
以下、本発明の実施形態について図面を用いて説明する。 Hereinafter, embodiments of the present invention will be described with reference to the drawings.
<システム構成>
図1は、実施例1に係る画像処理システムの構成を示すブロック図である。このシステムでは、1台のホストコンピュータ(以下「PC」と称する)130と、2台の画像処理装置100、110とがLAN140に接続されている。ただし、本発明における画像処理システムにおいて、ホストコンピュータや画像処理装置の接続数がこれらに限られることはない。また、本実施例では接続手段としてLANを適用しているが、接続手段はこれに限られることはない。例えば、WAN(公衆回線)などの任意のネットワーク、USBなどのシリアル伝送方式、又はセントロニクスやSCSIなどのパラレル伝送方式なども適用可能である。
<System configuration>
FIG. 1 is a block diagram illustrating the configuration of the image processing system according to the first embodiment. In this system, one host computer (hereinafter referred to as “PC”) 130 and two
PC130は、パーソナルコンピュータの機能を有している。PC130は、LAN140やWANを介してFTPやSMBプロトコルを用いてファイルを送受信したり電子メールを送受信したりすることができる。さらに、PC130は、画像処理装置100、110に対して、プリンタドライバを介した印刷命令を行うことも可能となっている。
The PC 130 has a function of a personal computer. The PC 130 can send and receive files and send and receive e-mails using the FTP and SMB protocols via the
画像処理装置100及び画像処理装置110は同じ構成であり、ともにスキャナ部を有する画像処理装置である。以下では、説明の簡単のために、画像処理装置100、110のうちの画像処理装置110に注目して、その構成を詳細に説明する。
The
画像処理装置110は、画像入力デバイスであるスキャナ部113と、画像出力デバイスであるプリンタ部114と、画像処理装置110全体の動作制御を司るコントローラ111と、ユーザインターフェース(UI)である操作部112とから構成される。
The
<コントローラユニットの構成>
図2は、実施例1に係るMFP(Multifunction Peripheral)のコントロールユニット(コントローラ)の構成を示すブロック図である。図2は、図1におけるコントローラ101やコントローラ111の詳細な構成を示した図である。コントロールユニット200は、画像入力デバイスであるスキャナ部201や画像出力デバイスであるプリンタ部202と接続されており、画像データの読み取りやプリント出力のための制御を行う。また、コントロールユニット200は、LAN N1や公衆回線204と接続されており、画像情報やデバイス情報をLAN N1や公衆回線204経由で入出力するための制御を行う。プリンタ部202は、デバイスI/F217と接続されており、プリンタ部202が有するプリンタエンジンが、コントロールユニット200で生成された描画データを紙に出力する処理を行う。
<Configuration of controller unit>
FIG. 2 is a block diagram illustrating a configuration of a control unit (controller) of an MFP (Multifunction Peripheral) according to the first embodiment. FIG. 2 is a diagram showing a detailed configuration of the
CPU205は、MFP全体を制御するための中央処理装置である。RAM206は、CPU205が動作するためのシステムワークメモリであり、入力された画像データを一時記憶するための画像メモリでもある。ROM207は、ブートROMであり、システムのブートプログラムを格納する。HDD208は、ハードディスクドライブであり、各種処理のためのシステムソフトウェア及び入力された画像データ等を格納する。操作部I/F209は、画像データ等を表示可能な表示画面を有する操作部210に対するインタフェース部であり、操作部210に対して操作画面データを出力する。また、操作部I/F209は、操作部210からユーザが入力した情報をCPU205に伝える役割をする。ネットワークI/F211は、例えばLANカード等で実現され、LAN N1と接続されて外部装置との間で情報の入出力を行う。モデム212は、公衆回線204と接続され、外部装置との間で情報の入出力を行う。CPU205、RAM206、ROM207、HDD208、操作部I/F209、ネットワークI/F211、及びモデム212がシステムバス213上で接続されている。
A
イメージバスI/F214は、システムバス213と、画像データを高速で転送する画像バス215とを接続するためのインタフェースであり、データ構造を変換するバスブリッジである。画像バス215上には、ラスタイメージプロセッサ(RIP)216、デバイスI/F217、スキャナ画像処理部218、プリンタ画像処理部219、画像編集用画像処理部220、及びカラーマネージメントモジュール(CMM)230が接続される。
The image bus I /
RIP216は、ページ記述言語(PDL)データコードやベクトルデータをイメージに展開する。デバイスI/F217は、スキャナ部201やプリンタ部202と、コントロールユニット200とを接続するためのインタフェースであり、画像データの同期系/非同期系の変換を行う。スキャナ画像処理部218は、スキャナ部201から入力された画像データに対して、補正、加工、編集等の各種処理を行う。プリンタ画像処理部219は、プリント出力する画像データに対して、プリンタエンジンに応じた補正、解像度変換等の処理を行う。画像編集用画像処理部220は、画像データの回転や、画像データの圧縮伸長処理等の各種画像処理を行う。CMM230は、画像データに対して、プロファイルやキャリブレーションデータに基づいた、色変換処理(色空間変換処理ともいう)を施す専用ハードウェアモジュールである。プロファイルとは、機器に依存した色空間で表現したカラー画像データを機器に依存しない色空間(例えばLab等)に変換するための関数のような情報である。キャリブレーションデータとは、画像処理装置におけるスキャナ部201やプリンタ部202の色再現特性を修正するためのデータである。
The
<本明細書における用語の定義>
ここでは本明細書で使用する用語の定義について説明する。
<Definition of terms in this specification>
Here, definitions of terms used in this specification will be described.
「ディスプレイリスト」とは、各種PDLから変換され生成される、RIPが処理できる共通フォーマットである。ディプレイリストには、インストラクションと呼ばれるどのオブジェクトをどの場所に書くかという描画命令、各オブジェクトにひも付けられるエッジ情報、レベル情報、レベル情報にひも付けられるフィル情報、及びROP情報が記載されている。 The “display list” is a common format that can be processed by the RIP, generated by conversion from various PDLs. In the display list, a drawing command indicating which object called an instruction is written in which location, edge information associated with each object, level information, fill information associated with level information, and ROP information are described. .
「エッジ」とは、ページ内に描画するオブジェクトと、オブジェクトとの境目又はオブジェクトと、背景との境目を指す。オブジェクトは左右のエッジにより形状が形成される。処理中のスキャンラインにおける左右エッジのX座標を左右のX座標と呼ぶ。 “Edge” refers to a boundary between an object drawn in a page and an object or a boundary between an object and a background. The shape of the object is formed by the left and right edges. The X coordinates of the left and right edges in the scan line being processed are referred to as the left and right X coordinates.
「スパン」とは、エッジ間で囲まれる閉領域を指す。 “Span” refers to a closed region surrounded by edges.
「レベル」とは、ページ内に描画するオブジェクト同士の上下関係を示すもので、必ずオブジェクト毎にレベル番号が割り振られている。なお、上記のとおりオブジェクトは左右のエッジにより形状が形成されるので、ページ内に描画するエッジ同士の上下関係もレベルによって示されることとなる。 “Level” indicates the vertical relationship between objects drawn in a page, and a level number is always assigned to each object. As described above, since the shape of the object is formed by the left and right edges, the vertical relationship between the edges drawn in the page is also indicated by the level.
「フィル」とは、スパンに対する塗りのことで、Bitmap画像やシェーディングのように1ピクセル毎に異なる色値を持つフィルや、ベタ塗りのようにスパン中で色値の変化がないフィル等が存在する。 “Fill” means painting on the span, and there are fills with different color values for each pixel, such as Bitmap images and shading, and fills with no color value change in the span, such as solid painting. To do.
「スキャンライン」とは、それに沿ってスキャン処理が実行される用紙搬送方向の各ラインである。1スキャンラインの2次元平面における高さは1ピクセルとなっている。また、複数のスキャンラインを束ねたものをバンドと呼ぶ。 A “scan line” is a line in the paper conveyance direction along which a scan process is executed. The height of one scan line in the two-dimensional plane is 1 pixel. A bundle of a plurality of scan lines is called a band.
「グループ」とは、オブジェクト又はオブジェクトを形成する複数のエッジがレベル昇順にグループ化された集合である。一例として、レベル番号が1から3001までのエッジが1つずつ存在し、1つのグループに最大1000エッジ含まれる場合を検討する。この場合、最背面のグループにはレベル番号が1から1000までのエッジが含まれる。次に一つ上位のグループにはレベル番号が1001から2000までのエッジが含まれる。更に一つ上位のグループにはレベル番号が2001から3000までのエッジが含まれる。最上位のグループにはレベル番号が3001のエッジが含まれる。グループの上下関係を保持するために、各グループにはグループナンバー(本明細書ではグループNOと略記される)が割り振られている。例えば、最背面のグループのグループNOが1、その上のグループのグループNOが2等とすることができる。グループNOは、グループ管理構造体の中で管理されている。
A “group” is a set in which an object or a plurality of edges forming an object are grouped in ascending level order. As an example, consider a case where there is one edge with
<ディスプレイリストのレンダリング処理について>
図3は、スキャンラインレンダリングと呼ばれるレンダリング処理について説明した図である。以下の処理は、コントローラ101によって実行される。具体的には、以下の処理は、コントローラ101のCPU205が、HDD208に格納されているスキャンラインレンダリングのプログラムをRAM206にロード及び実行することで、実行される。
<About display list rendering>
FIG. 3 is a diagram illustrating a rendering process called scanline rendering. The following processing is executed by the
図3(a)は、本実施例に係るスキャンラインレンダリング処理の処理フローについて説明するブロック図である。スキャンラインレンダリング処理は大きく分けて、エッジ処理、レベル処理、フィル処理、コンポジット処理の4つに分かれている。以下に各処理の詳細を記載する。なお、CPU205が複数のCPUで構成されている場合、それぞれのCPUに別々の処理を実行させてもよい。具体的には、1つ目のCPUにエッジ処理だけを実行させ、2つ目のCPUにレベル処理だけを実行させ、3つ目のCPUにフィル処理だけを実行させ、4つ目のCPUにコンポジット処理だけを実行させてもよい。 FIG. 3A is a block diagram illustrating a processing flow of scanline rendering processing according to the present embodiment. The scan line rendering process is roughly divided into four processes: edge processing, level processing, fill processing, and composite processing. Details of each process are described below. In addition, when CPU205 is comprised by several CPU, you may make each CPU perform a separate process. Specifically, only the edge processing is executed by the first CPU, only the level processing is executed by the second CPU, only the fill processing is executed by the third CPU, and the fourth CPU is executed. Only the composite processing may be executed.
<エッジ処理>
エッジ処理は大きく分けて5つの処理からなっている。5つの処理とは、エッジロード処理、エッジ削除処理、X座標算出処理、エッジソート処理、及びエッジトラッキング処理である。
<Edge processing>
Edge processing is roughly divided into five processes. The five processes are an edge load process, an edge deletion process, an X coordinate calculation process, an edge sort process, and an edge tracking process.
エッジロード処理とは、DL(ディスプレイリスト)メモリに格納されているディスプレイリストから、オブジェクトのアウトラインを示すエッジデータをメインメモリ上へロードする処理のことをいう。なお、エッジロード処理は、エッジデータを後述のリンクリストとして管理すべく、エッジデータをエッジリストにロードする処理とも言い換えることができる。 Edge load processing refers to processing for loading edge data indicating the outline of an object onto a main memory from a display list stored in a DL (display list) memory. The edge loading process can also be referred to as a process of loading edge data into the edge list in order to manage the edge data as a link list described later.
X座標算出処理とは、ロードされたエッジデータに対して、スキャンライン毎に、エッジの傾きや塗りルールに基づいてエッジの位置を示すX座標を算出する処理である。 The X coordinate calculation process is a process for calculating the X coordinate indicating the position of the edge based on the inclination of the edge and the paint rule for each scan line with respect to the loaded edge data.
処理中のスキャンラインに現れるエッジは、ActiveEdgeList(AEL)と呼ばれるリンクリスト(エッジリスト)によって、スキャンライン毎にエッジリストの先頭からエッジのX座標昇順でソートされている。N番目のスキャンラインにおけるエッジリストに含まれるエッジデータは、直前に走査したスキャンラインであるN−1番目のスキャンラインにおけるエッジリストを用いてソートされる。 Edges appearing on the scan line being processed are sorted in ascending order of the X coordinate from the head of the edge list for each scan line by a link list (edge list) called ActiveEdgeList (AEL). The edge data included in the edge list in the Nth scan line is sorted using the edge list in the (N−1) th scan line, which is the scan line scanned immediately before.
具体的には、N番目のスキャンラインのエッジリストにおいてエッジデータが、それぞれのX座標に従ってエッジE1、E2、E3の順でソートされていると仮定する。そして、スキャンラインが変わった際に、N+1番目のスキャンライン上のエッジE1、E2、E3のX座標をX座標算出処理によって求める。そして、N番目のスキャンラインのエッジリスト及びX座標算出処理によって求められたエッジE1、E2、E3のX座標に従って、N+1番目のスキャンラインエッジリストにおいてエッジE1〜E3のソートを実行する。 Specifically, it is assumed that the edge data is sorted in the order of the edges E1, E2, and E3 according to the respective X coordinates in the edge list of the Nth scan line. When the scan line changes, the X coordinates of the edges E1, E2, and E3 on the (N + 1) th scan line are obtained by the X coordinate calculation process. Then, according to the edge list of the Nth scan line and the X coordinates of the edges E1, E2, and E3 obtained by the X coordinate calculation process, the sorting of the edges E1 to E3 is executed in the N + 1th scan line edge list.
ここでN番目のスキャンラインのエッジリストにおいてはエッジE1、E2、E3の順でソートされているので、まず、エッジE3のX座標と、N番目のスキャンラインのエッジリストにおいては1つ前のエッジであったエッジE2のX座標とを比較する。これによって、N+1番目のスキャンラインのエッジリストにおいて、エッジE3がエッジE2よりも前にあるかどうかを判定する。エッジE3がエッジE2より前にある場合に、エッジE3のX座標は、N番目のスキャンラインのエッジリストにおいてエッジE2よりさらに前のエッジE1のX座標と比較される。これにより、N+1番目のスキャンラインのエッジリストにおいてエッジE3がエッジE1よりも前にあるかどうかが判定される。 Here, since the edge list of the Nth scan line is sorted in the order of the edges E1, E2, and E3, first, the X coordinate of the edge E3 and the edge list of the Nth scan line are the previous one. The X coordinate of the edge E2 that was the edge is compared. Thus, it is determined whether or not the edge E3 is before the edge E2 in the edge list of the (N + 1) th scan line. When the edge E3 is before the edge E2, the X coordinate of the edge E3 is compared with the X coordinate of the edge E1 before the edge E2 in the edge list of the Nth scan line. Thus, it is determined whether or not the edge E3 is before the edge E1 in the edge list of the (N + 1) th scan line.
そして、これらの比較判定の結果に従ってN+1番目のスキャンラインのエッジリストにおけるエッジE3の順番が決定され、決定された順番となるようにエッジリストのリンク構造を更新する。この処理はそれぞれのエッジに対しても実行され、N+1番目のスキャンラインのエッジリストが更新される。 Then, the order of the edge E3 in the edge list of the (N + 1) th scan line is determined according to the result of the comparison determination, and the link structure of the edge list is updated so as to be the determined order. This process is also executed for each edge, and the edge list of the (N + 1) th scan line is updated.
なお、エッジのX座標同士の比較が行われる際に、エッジデータがCPUキャッシュ上になければメインメモリ上のエッジデータにアクセスする必要がある。しかし、エッジデータがCPUキャッシュにコピーされている場合には、メインメモリではなくCPUキャッシュ上のエッジデータにアクセスすることで処理が高速化される。このような動作は、CPUキャッシュと接続するCPU205の動作として一般的である。
When the edge X coordinates are compared, if the edge data is not on the CPU cache, it is necessary to access the edge data on the main memory. However, when the edge data is copied to the CPU cache, the processing is speeded up by accessing the edge data on the CPU cache instead of the main memory. Such an operation is a general operation of the
以上説明したように、スキャンラインが変わってエッジのX座標の前後が逆転した場合、新たにエッジが出現した場合、又はエッジが消滅した場合等に、エッジリストのリンク構造を更新する必要が生じる。このエッジリストを更新する処理をエッジソート処理と呼んでいる。 As described above, it is necessary to update the link structure of the edge list when the scan line changes and the front and back of the X coordinate of the edge are reversed, when an edge newly appears, or when an edge disappears, etc. . This processing for updating the edge list is called edge sorting processing.
エッジソート処理が終わったエッジリストはレベル処理部に渡されて、X座標昇順でのエッジデータ及びレベルデータがレベル処理部に渡される。この処理をエッジトラッキング処理と呼んでいる。 The edge list after the edge sort processing is passed to the level processing unit, and the edge data and level data in the ascending order of the X coordinates are passed to the level processing unit. This processing is called edge tracking processing.
最後に、描画が終了したエッジは、メモリから削除される。この処理をエッジ削除処理と呼んでいる。 Finally, the edge for which drawing has been completed is deleted from the memory. This processing is called edge deletion processing.
<レベル処理>
レベル処理は大きく分けて3つの処理からなっている。3つの処理とは、レベル追加処理、レベル削除処理、及びレベルソート処理である。
<Level processing>
Level processing is roughly divided into three processes. The three processes are a level addition process, a level deletion process, and a level sort process.
レベル追加処理において、エッジ処理から送られてきたエッジデータに含まれるエッジの向きやクリップ情報に基づいてエッジが描画対象のエッジであるか否かが判定される。エッジが描画対象であると判定された場合、ActiveLevelList(ALL)と呼ばれるリンクリストに、該当するレベルデータが追加される。 In the level addition process, it is determined whether the edge is a drawing target edge based on the edge direction and the clip information included in the edge data sent from the edge process. When it is determined that the edge is a drawing target, the corresponding level data is added to a link list called Active Level List (ALL).
レベル削除処理は、レベル追加処理と逆の処理である。レベルの削除処理において、エッジの向きやクリップ情報に基づいてそれまで描画対象だったエッジが描画対象でなくなったと判定された場合、ALLから該当するレベルデータが削除される。 The level deletion process is the reverse of the level addition process. In the level deletion processing, when it is determined that the edge that has been the drawing target is no longer the drawing target based on the edge direction and the clip information, the corresponding level data is deleted from the ALL.
ALLはレベル番号昇順に常にソートされており、レベル追加処理やレベル削除処理があった場合、レベルソート処理と呼ばれるALLのソート処理が行われる。レベル追加処理、レベル削除処理、及びレベルソート処理を行ったレベルデータは、スパン単位でフィル処理に渡される。 ALL is always sorted in ascending order of level numbers, and when there is a level addition process or a level deletion process, an ALL sort process called a level sort process is performed. The level data that has been subjected to the level addition process, the level deletion process, and the level sort process is passed to the fill process in units of spans.
<フィル処理>
フィル処理は大きく分けて3つの処理からなっている。3つの処理とは、画像拡縮処理、画像回転処理、及びピクセル生成処理である。
<Fill processing>
The fill process is roughly divided into three processes. The three processes are an image enlargement / reduction process, an image rotation process, and a pixel generation process.
画像拡縮処理は、ディスプレイリストに含まれているビットマップ画像に拡大率が指定されていた場合に、指定された拡大率に従って各ピクセルの色値を生成する処理である。 The image enlargement / reduction process is a process for generating a color value of each pixel according to a specified enlargement ratio when an enlargement ratio is specified for a bitmap image included in the display list.
画像回転処理は、ディスプレイリストに含まれているビットマップ画像に回転情報が指定されていた場合に、指定された回転情報に従って各ピクセルの色値を生成する処理である。 The image rotation process is a process for generating the color value of each pixel according to the specified rotation information when the rotation information is specified in the bitmap image included in the display list.
ピクセル生成処理は、ディスプレイリストにおいて、ある色値をある色値に変化させる変化情報が指定されていた場合に、指定された変化情報に従って各ピクセルの色値を生成する処理である。 The pixel generation process is a process of generating the color value of each pixel according to the specified change information when change information for changing a certain color value to a certain color value is specified in the display list.
<コンポジット処理>
コンポジット処理とは、レベル処理で確定したレベルの上下関係及びフィル処理で生成したピクセル値に基づいて実行される、ディスプレイリストに指定されている重ね合わせ処理である。
<Composite processing>
The composite process is an overlay process specified in the display list, which is executed based on the level relationship determined by the level process and the pixel value generated by the fill process.
<並列処理されるエッジ処理、レベル処理、フィル処理、及びコンポジット処理>
上で説明した各処理は、スパンを単位としてパイプラインで並列に処理される。この並列処理について、図3(b)、(c)を用いて説明する。
<Edge processing, level processing, fill processing, and composite processing that are processed in parallel>
Each process described above is processed in parallel in the pipeline in units of spans. This parallel processing will be described with reference to FIGS.
図3(b)は、1枚のページ画像データを示す。オブジェクト403はオブジェクト401乃至403のうちで最背面のオブジェクトであり、最背面にあることを示すレベル番号が割り当てられている。オブジェクト403の上位にオブジェクト402が重なり、さらにオブジェクト402の上位にオブジェクト401が重なっている。これら3つのオブジェクトはすでにディスプレイリスト化されている。このようなページ画像データに対してスキャンライン毎にスキャンラインレンダリング処理を行う。
FIG. 3B shows one page image data. The
詳細に図3(b)を説明すると、ページ画像データの1スキャンライン目は、オブジェクトが存在しないのでスパン1−1が処理される。2スキャンライン目は、オブジェクト402が存在し、2つのエッジが検出されるので、スパン2−1、2−2、2−3が処理される。3スキャンライン目は、オブジェクト401、402、403が存在し、6つのエッジが検出されるので、スパン3−1、3−2、3−3、3−4、3−5、3−6、3−7が処理される。4スキャンライン目以降も同様である。
Explaining FIG. 3B in detail, since the first scan line of the page image data has no object, span 1-1 is processed. In the second scan line, since the
このような各スキャンラインのスパンは、図3(c)に示されるように、エッジ処理、レベル処理、フィル処理、コンポジット処理の順でパイプライン処理される。 As shown in FIG. 3C, the span of each scan line is pipelined in the order of edge processing, level processing, fill processing, and composite processing.
図3(b)の例で言うと、図3(c)に示されるように、まず1スキャンライン目の1番目のスパン1−1がエッジ処理で処理され、続いてレベル処理に渡される。次に2スキャンライン目の1番目のスパン2−1がエッジ処理され、レベル処理に渡されるのと同時にスパン1−1がレベル処理され、フィル処理に渡される。以下同様に図3(c)で示すように各スパンが各処理で並列に処理される。 In the example of FIG. 3B, as shown in FIG. 3C, the first span 1-1 of the first scan line is first processed by edge processing, and then passed to level processing. Next, the first span 2-1 of the second scan line is subjected to edge processing and passed to level processing, and at the same time, the span 1-1 is subjected to level processing and passed to fill processing. Similarly, as shown in FIG. 3C, each span is processed in parallel in each process.
<大量エッジが含まれているディスプレイリストのエッジ処理>
図3ではオブジェクト401、402、403が1つずつだった場合のレンダリング処理について説明した。ここではオブジェクト402、403がそれぞれ1000個ずつ重なった場合の、エッジ処理におけるエッジソート処理について図4を用いて説明する。図4(a)は、見た目上、図3(b)と同じ画像を示す画像データである。しかし図4(a)では、1000個のオブジェクト402が同じ位置に重なっており、また1000個のオブジェクト403が同じ位置に重なっている。
<Edge processing for display lists that contain a large number of edges>
In FIG. 3, the rendering processing in the case where there are one
図4(b)は、図4(a)のスパン3−2付近の破線で表される円内のオブジェクトの配置を拡大した図である。図4(b)中の縦線で表された部分がオブジェクト401の領域である。また、X0は、4スキャンライン目のオブジェクト401の左側のエッジのX座標である。X1は、オブジェクト402の左側のエッジのX座標である。X2は、オブジェクト403の左側のエッジのX座標である。X3は、3スキャンライン目のオブジェクト401の左側のエッジのX座標である。すなわち、3スキャンライン目から4スキャンライン目へとスキャンラインが変わると、オブジェクト401の左側のエッジが1000個のオブジェクト402及び1000個のオブジェクト403を横切ることになる。したがって、図4(c)に示されるように、エッジソート処理によって、3スキャンライン目のエッジリスト上のオブジェクト401のエッジデータは、1000個のオブジェクト402のエッジデータ及び1000個のオブジェクト403のエッジデータを辿る。そして、4スキャンライン目のエッジリストの状態になるように、エッジリストの先頭へオブジェクト401のエッジデータが移される。
FIG. 4B is an enlarged view of the arrangement of objects in a circle represented by a broken line near the span 3-2 in FIG. A portion represented by a vertical line in FIG. 4B is an area of the
つまり、図4(c)では、前述したように、処理中に現れるエッジデータはAELとしてX座標昇順でリンクされている。3スキャンライン目ではオブジェクト402の左側のエッジが1000個分リンクで繋がっており、次にオブジェクト403の左側のエッジが1000個分リンクで繋がっており、最後にオブジェクト401の左側のエッジがリンクされている。
That is, in FIG. 4C, as described above, edge data appearing during processing is linked as AEL in ascending X coordinate order. In the third scan line, the left edge of the
スキャンラインが3スキャンライン目から4スキャンライン目に移る際、オブジェクト401の左側のエッジはX座標がX3からX0に変化する。X0<X1<X2<X3であるから、オブジェクト401の左側のエッジは、エッジソート処理でオブジェクト402の左側のエッジ及びオブジェクト403の左側のエッジをそれぞれ1000個ずつ辿って所定の位置にリンクされることになる。
When the scan line moves from the third scan line to the fourth scan line, the X coordinate of the left edge of the
リンクを辿る際は、メインメモリ上のエッジデータに順次アクセスして、各エッジのX座標と、ソート対象エッジのX座標とを比較する。エッジ数が少ない場合は、エッジデータへのアクセスの際、全スキャンラインを通して1回以上アクセスされるエッジデータの全てがCPUキャッシュに格納された状態となるので高速に処理できる。 When following the link, the edge data on the main memory is sequentially accessed, and the X coordinate of each edge is compared with the X coordinate of the sorting target edge. When the number of edges is small, all the edge data accessed at least once through all the scan lines is stored in the CPU cache when accessing the edge data, so that it can be processed at high speed.
しかし、図4で示した例のようにエッジリストに含まれるエッジデータ数が大量だった場合、全てのエッジデータはCPUキャッシュに収まりきらない。そのため、CPUキャッシュに存在しないエッジデータへのアクセスのために、メインメモリに直接アクセスしなければならず、処理時間が極端に遅くなることがある。特にこの例で挙げたように局所的にエッジが密集した場合(オブジェクト402の左側のエッジのX座標近傍に2000エッジが集中する場合)、少しのエッジの移動でも大量のエッジにアクセスしてエッジソート処理を行わなければならない。これにより、処理時間が極端に遅くなるという問題が生じる。 However, when the number of edge data included in the edge list is large as in the example shown in FIG. 4, not all edge data can fit in the CPU cache. Therefore, in order to access edge data that does not exist in the CPU cache, the main memory must be accessed directly, and the processing time may be extremely slow. In particular, as shown in this example, when edges are concentrated locally (when 2000 edges are concentrated in the vicinity of the X coordinate of the left edge of the object 402), even if a few edges are moved, a large number of edges are accessed and the edges are accessed. Sort processing must be performed. This causes a problem that the processing time becomes extremely slow.
<エッジのグループ分割処理>
図5を用いて、本実施例におけるエッジのグループ分割処理について説明する。ここでも、<大量エッジが含まれているディスプレイリストのエッジ処理>の項目で説明した場合、すなわちオブジェクト402、403がそれぞれ1000個ずつ同一箇所に重なっている場合を例に挙げて説明する。
<Edge grouping process>
The edge group division processing in this embodiment will be described with reference to FIG. Here, the description will be given by taking as an example the case described in the item <edge processing of a display list including a large amount of edges>, that is, a case where 1000 objects 402 and 403 overlap each other at the same location.
入力されたディスプレイリストには、レベル番号1〜1000が振られた1000個のオブジェクト403、レベル番号1001〜2000が振られた1000個のオブジェクト402、及びレベル番号2001が振られた1個のオブジェクト401が含まれる。一つのオブジェクトは、左側のエッジと、右側のエッジとからなっている。このディスプレイリストには2001個のオブジェクトが含まれるので、エッジデータ数は4002個となる。
The input display list includes 1000
ここでCPUキャッシュのメモリが、2000エッジ分のエッジデータまではCPUキャッシュ内に保持でき、エッジデータ数が2001個以上の場合はCPUキャッシュから溢れてしまうとする。この場合、1つのグループには1000個のオブジェクト(2000個のエッジデータに相当)まで含まれるようにすればよいことになる。なお、この「エッジデータ数」はCPUキャッシュのメモリサイズ及びエッジデータのデータサイズによって異なるので、画像処理装置100が異なれば、CPUキャッシュに保持できるエッジデータ数も異なることになる。
Here, it is assumed that the CPU cache memory can hold up to 2000 edge data in the CPU cache, and if the number of edge data is 2001 or more, the CPU cache overflows. In this case, it is sufficient to include up to 1000 objects (corresponding to 2000 edge data) in one group. Since the “number of edge data” varies depending on the memory size of the CPU cache and the data size of the edge data, the number of edge data that can be held in the CPU cache varies depending on the
まず、コントローラ101は、入力されたディスプレイリストに含まれるオブジェクトのエッジと、このエッジのレベル番号とを確認することで、各々のエッジ(エッジデータ)がどのグループに属するべきか判定する。図5の例では、レベル番号1〜1000のオブジェクト403を形成するエッジがグループ1に、レベル番号1001〜2000のオブジェクト402を形成するエッジがグループ2に、オブジェクト401を形成するエッジがグループ3に属する。
First, the
各グループに対して生成されることになるビットマップは、背面のグループから重ね合わせる必要があるので必ず下位のグループ(本例ではグループ1)から順番にレンダリングしていく必要がある。しかし、各グループ内のオブジェクトに関してはレベル処理が行われるので、オブジェクトのレベル番号の小さい順に処理する必要はなくエッジが現れる順に処理すればよい。
Since the bitmap to be generated for each group needs to be overlaid from the rear group, it is necessary to always render in order from the lower group (
各グループでの処理はに対し、<ディスプレイリストのレンダリング処理方法について>の項目に記載したレンダリング処理方法を行うがが実行される、。ディスプレイリストを解釈する際、処理中のグループに属するエッジデータのみをメインメモリCPUキャッシュにロードして処理を行う実行する点が、本発明の特徴の一つである。 For the processing in each group, the rendering processing method described in the item <About display list rendering processing method> is performed. One feature of the present invention is that when interpreting the display list, only the edge data belonging to the group being processed is loaded into the main memory CPU cache for processing.
図5の1グループ目のページ画像の生成で示すように1グループ目のレンダリング処理によってビットマップ画像が生成された後(図5上段)に、2グループ目の処理に取り掛かる。2グループ目も1グループ目と同様、2グループ目に属するエッジのみをCPUキャッシュにロードしてレンダリング処理を行い、2グループ目のビットマップ画像を生成する。その後、1グループ目のビットマップ画像と、2グループ目のビットマップ画像との重ね合わせを行い、1グループ目のビットマップ画像と、2グループ目のビットマップ画像とが重ねあわされた画像が生成される(図5中段)。以下同様に、最上位グループまでレンダリング処理と、重ね合わせ処理とを繰り返し、最終的に、オブジェクト403の上位にオブジェクト402が重なり、オブジェクト402の上位にオブジェクト401が重なったビットマップ画像を生成する(図5下段)。
As shown in the generation of the page image of the first group in FIG. 5, after the bitmap image is generated by the rendering processing of the first group (the upper part of FIG. 5), the processing of the second group is started. Similarly to the first group, the second group loads only the edges belonging to the second group to the CPU cache and performs rendering processing to generate a bitmap image of the second group. Then, the bitmap image of the first group and the bitmap image of the second group are overlapped to generate an image in which the bitmap image of the first group and the bitmap image of the second group are overlapped. (Middle of FIG. 5). Similarly, the rendering process and the superimposition process are repeated up to the highest group, and finally a bitmap image in which the
<エッジのグループ分割後のコンポジット処理についての検討>
図6を用いて、図5を用いて説明したエッジのグループ分割後のコンポジット処理について検討する。コンポジット処理には、グループ内のコンポジット処理と、グループ間のコンポジット処理とがある。グループ内のコンポジット処理に関しては、エッジが一度にロードされレベル処理まで行われ、描画に必要のないレベルは削除されるため、必要最低限のコンポジットですむ。一方、グループ間のコンポジット処理は、図6に示すように、グループ間の全面ピクセル同士でコンポジット処理が行われることになり、また、グループが多ければその分グループ間のコンポジット処理回数も多くなる。したがって、グループが多い場合に処理速度のボトルネックになる可能性がある。よって、さらなる処理速度の向上のためには、グループ間のピクセルのコンポジット処理を効率良く行うことが求められる。
<Examination of composite processing after edge grouping>
The composite processing after the edge group division described with reference to FIG. 5 will be considered with reference to FIG. Composite processing includes composite processing within a group and composite processing between groups. For composite processing within a group, edges are loaded at once and level processing is performed, and levels not required for drawing are deleted, so that the minimum required composite is sufficient. On the other hand, as shown in FIG. 6, the composite processing between the groups is performed on the entire pixels between the groups, and if there are many groups, the number of composite processings between the groups increases accordingly. Therefore, when there are many groups, it may become a bottleneck of processing speed. Therefore, in order to further improve the processing speed, it is required to efficiently perform the pixel composite processing between groups.
<エッジのグループ分割後のグループ間のコンポジットスキップ処理>
図7を用いて、エッジのグループ分割後のグループ間のコンポジットスキップ処理について説明する。
<Composite skip processing between groups after edge grouping>
A composite skip process between groups after edge group division will be described with reference to FIG.
図7を参照すると、例示されるページには、最下位に三角形のオブジェクトを含むグループが存在し、このグループの上には大きな四角形のオブジェクトを含むグループが存在し、最上位には不透過の小さな四角形のオブジェクトを含むグループが存在する。あるスキャンラインAを処理する際、不透過の小さな四角形のオブジェクトがロードされる。 Referring to FIG. 7, in the illustrated page, there is a group that includes a triangular object at the bottom, a group that includes a large square object above this group, and an opaque object at the top. There is a group that contains small square objects. When processing a certain scan line A, an opaque small rectangular object is loaded.
この不透過の小さな四角形のオブジェクトは、最終的な描画結果として他のオブジェクトに上書きされずに表示される。言い換えれば、この不透過の小さな四角形のオブジェクトによって上書きされるより下のオブジェクトは描画されないことになる。 This opaque opaque rectangular object is displayed without being overwritten on other objects as a final drawing result. In other words, the object below the object that is overwritten by this opaque small rectangular object is not drawn.
本実施例では、不透過の小さな四角形のオブジェクトの左右のエッジのX座標(x1、x2)及びこのオブジェクトが属するグループのグループNo(本例では3)を保持する(図7のステップA−1参照)。オブジェクトのグループNoは、オブジェクトをレベルに応じてグループ分けする際にオブジェクト毎に割り当てられる。また、グループNoは、下位から上位になるにつれて昇順に設定される。つまり、上位のグループNoのグループに属するオブジェクトは、下位のグループNoのグループに属するオブジェクトを覆うことがあるが、その逆はない。具体的には、例えば、グループNo3のグループに属するオブジェクトは、グループNo1のグループに属するオブジェクトを覆って、上書きすることがある。しかし、グループNo1のグループに属するオブジェクトが、グループNo3のグループに属するオブジェクトを覆って、上書きすることはない。 In this embodiment, the X coordinates (x 1 , x 2 ) of the left and right edges of the small opaque object that is opaque and the group number (3 in this example) of the group to which this object belongs are retained (step A in FIG. 7). -1). The object group number is assigned to each object when the objects are grouped according to the level. Further, the group numbers are set in ascending order from the lower level to the higher level. That is, an object belonging to a higher group No group may cover an object belonging to a lower group No group, but not vice versa. Specifically, for example, an object belonging to the group No. 3 may cover and overwrite an object belonging to the group No. 1. However, the object belonging to the group No. 1 does not overwrite the object belonging to the group No. 3.
オブジェクトのエッジのX座標及びオブジェクトのグループNoを保持した後、スキャンラインAに隣接する次のスキャンラインBにおける処理を実行する。背面(白色)から生成されるBMPと、三角形のオブジェクトを含む最下位グループから生成されるBMPとをコンポジットする際、背面及び最下位グループは、ステップA−1における処理でグループNoを保持したグループより下位にある。したがって、X座標のx1からx2までの区間(x1、x2)ではグループ間のコンポジット処理は行わず、その他の所のみグループ間のコンポジット処理を行う(図7のステップB−1参照)。 After holding the X coordinate of the edge of the object and the group number of the object, the process on the next scan line B adjacent to the scan line A is executed. When the BMP generated from the back (white) and the BMP generated from the lowest group including the triangular object are composited, the back and the lowest groups are groups in which the group No. is retained in the process in step A-1. It is lower. Therefore, the inter-group composite processing is not performed in the section (x 1 , x 2 ) from x 1 to x 2 of the X coordinate (see step B-1 in FIG. 7). ).
次のステップB−2においても同様に、区間(x1、x2)ではグループ間のコンポジット処理を行う必要はなく、その他の所のみグループ間のコンポジット処理を行う。 Similarly, in the next step B-2, it is not necessary to perform the inter-group composite processing in the section (x 1 , x 2 ), and the inter-group composite processing is performed only in other places.
最終的にステップB−3において、区間(x1、x2)は最上位グループから生成されるBMPにより上書きされ、最終的に出力されるBMPが生成される。 Finally, in step B-3, the section (x 1 , x 2 ) is overwritten by the BMP generated from the highest group, and the BMP to be finally output is generated.
<コンポジットスキップ処理フロー>
図8を用いて、図7に例示したコンポジットスキップ処理について詳細に説明する。図8に示す一連の処理は、図2のRIP216内のRAMにプログラムがロードされ、RIP216内のCPU上で動作することで実行される。
<Composite skip processing flow>
The composite skip process illustrated in FIG. 7 will be described in detail with reference to FIG. A series of processing shown in FIG. 8 is executed by loading a program into the RAM in the
ステップS800において、処理は開始される。次いで、処理は、ステップS802に進む。 In step S800, the process is started. Next, the process proceeds to step S802.
ステップS802において、RIP216内のCPUは、レンダリングを行うディスプレイリスト及びこのディスプレイリストに含まれるエッジ数を受信し、RIP216内のRAMに格納する。ディスプレイリストに含まれるエッジ数は、DL生成部がPDLからDLを生成しながらカウントすることによって得られる。合わせて、ステップS802において、キャッシュサイズ及びエッジデータのデータサイズから、エッジ処理においてキャッシュミスヒットが発生しないエッジ数(1個のグループが含み得る最大のエッジ数)を算出する。キャッシュミスヒットが発生しないエッジ数の算出方法は、下記<エッジ数算出方法>の項目に記載する。ディスプレイリストに含まれるエッジ数を、キャッシュミスヒットが発生しないエッジ数で割ることによって、グループ数を算出する。次いで、処理は、ステップS803に進む。
In step S <b> 802, the CPU in the
ステップS803において、RIP216内のCPUは、エッジをグループ毎に分割する必要があるか否かを判定する。具体的には、ステップS802で算出したグループ数が1より多い場合は、グループ分割の必要があると判定し、処理は、ステップS809に進む。ステップS802で算出したグループ数が1以下の場合は、グループ分割の必要がないと判定し、処理は、ステップS804に進む。
In step S803, the CPU in the
ステップS804において、RIP216内のCPUは、グループ分割を伴わない通常のRIP処理を実行する。次いで、処理は、ステップS820に進む。
In step S804, the CPU in the
ステップS809において、RIP216内のCPUは、ディスプレイリストの解釈及びオブジェクトのロードを行う。次いで、処理は、ステップS810に進む。
In step S809, the CPU in the
ステップS810において、RIP216内のCPUは、ロードしたオブジェクトより下の領域でコンポジット処理が省略可能かを判定するために、ロードしたオブジェクトが不透過且つ矩形であり現在把握しているオブジェクトより上位であるか否かを判定する。オブジェクトが不透過且つ矩形であり現在把握しているオブジェクトより上位であると判定された場合、処理は、ステップS811に進む。オブジェクトが不透過且つ矩形であり現在把握しているオブジェクトより上位ではないと判定された場合、処理は、ステップS812に進む。
In step S810, the CPU in the
ステップS811において、RIP216内のCPUは、オブジェクトが属するグループのグループNo及びオブジェクトの左右のエッジのX座標を更新する。この更新処理は、RIP216内のCPUが、オブジェクトが属するグループのグループNo及びオブジェクトの左右のエッジのX座標をRIP216内のRAMに記憶することで行われる。次いで、処理は、ステップS812に進む。
In step S811, the CPU in the
ステップS812において、RIP216内のCPUは、エッジ処理、レベル処理、及びフィル処理を行う。次いで、処理は、ステップS813に進む。
In step S812, the CPU in the
ステップS813において、RIP216内のCPUは、行われるコンポジット処理がグループ間のコンポジット処理であるか否かを、コンポジット処理を行うオブジェクトの属するグループに基づいて判定する。行われるコンポジット処理がグループ間のコンポジット処理であると判定された場合、処理は、ステップS815に進み、行われるコンポジット処理がグループ間のコンポジット処理ではないと判定された場合、処理は、ステップS814に進む。
In step S813, the CPU in the
ステップS814において、RIP216内のCPUは、<コンポジット処理>の項目で説明したコンポジット処理を行う。次いで、処理は、ステップS818に進む。
In step S814, the CPU in the
ステップS815において、RIP216内のCPUは、ステップS811で把握しているオブジェクトが属するグループより下位のグループ同士のコンポジット処理が行われるか否かを判定する。この判定は、ステップS811における更新により記憶されたグループNoと、RIP216内のRAMが保持するグループNoとを比較することで実行される。例えば、ステップS811における更新により記憶されたグループNoよりも処理されるオブジェクトのグループNoが小さい場合、ステップS811で把握しているオブジェクトが属するグループより下位のグループ同士のコンポジット処理が行われると判定する。一方、ステップS811における更新により記憶されたグループNoよりも処理されるオブジェクトのグループNoが大きい場合、ステップS811で把握しているオブジェクトが属するグループより上位のグループ同士のコンポジット処理が行われると判定する。ステップS811で把握しているオブジェクトが属するグループより下位のグループ同士のコンポジット処理が行われると判定された場合、処理は、ステップS816に進む。ステップS811で把握しているオブジェクトが属するグループより下位のグループ同士のコンポジット処理が行われないと判定された場合、処理は、ステップS814に進む。
In step S815, the CPU in the
ステップS816において、RIP216内のCPUは、ステップS811で更新したX座標間でグループ間のコンポジット処理が行われているか否かを判定する。具体的には、この判定は、現在処理中のグループ間のコンポジット処理が実行される区間と、ステップS811で更新された区間とを比較することにより実行される。例えば、ステップS811で把握しているオブジェクトの左側のエッジのX座標が100、右側のエッジのX座標が500だとする。そして、現在処理中のコンポジット処理がX=150〜300の区間で実行される場合、コンポジット処理が実行される区間はステップS811で把握している区間内に含まれるので、この部分のコンポジット処理は省略できると判定される。ステップS811で更新したX座標間でグループ間のコンポジット処理が行われると判定された場合、処理は、ステップS818に進む。ステップS811で更新したX座標間でグループ間のコンポジット処理が行われないと判定された場合、処理は、ステップS817に進む。
In step S816, the CPU in the
ステップS817において、RIP216内のCPUは、グループ間のコンポジット処理を行う。次いで、処理は、ステップS818に進む。
In step S817, the CPU in the
ステップS818は、オブジェクト毎の処理のループ端である。ステップS818において、RIP216内のCPUは、処理中のスキャンラインにおけるオブジェクトの処理が全て終了したか否かを判定する。処理中のスキャンラインにおけるオブジェクトの処理が全て終了したと判定された場合、処理は、ステップS819に進む。処理中のスキャンラインにおけるオブジェクトの処理が全て終了していないと判定された場合、処理は、ループ端であるステップS808に飛ぶ。
Step S818 is a loop end of processing for each object. In step S818, the CPU in the
ステップS819は、スキャンライン毎の処理のループ端である。ステップS819において、RIP216内のCPUは、処理中のページにおけるスキャンラインの処理が全て終了したか否かを判定する。処理中のページにおけるスキャンラインの処理が全て終了したと判定された場合、処理は、ステップS820に進み、処理中のページにおけるスキャンラインの処理が全て終了していないと判定された場合、処理は、ループ端であるステップS807に飛ぶ。
Step S819 is a loop end of processing for each scan line. In step S <b> 819, the CPU in the
ステップS820において、一連の処理は、終了する。 In step S820, the series of processing ends.
<エッジ数算出方法>
ここで、キャッシュミスヒットが発生しないエッジ数の算出方法を、具体例を挙げて説明する。例えば、CPUキャッシュサイズが32Kbyteで、1つのエッジデータのデータサイズが64byteだった場合、CPUキャッシュサイズを1つのエッジデータのデータサイズで割った値、512個がキャッシュミスヒットが発生しないエッジ数となる。
<Edge number calculation method>
Here, a method for calculating the number of edges at which no cache miss hit occurs will be described with a specific example. For example, if the CPU cache size is 32 Kbytes and the data size of one edge data is 64 bytes, the value obtained by dividing the CPU cache size by the data size of one edge data, 512 is the number of edges at which no cache miss occurs. Become.
<複数の区間におけるグループ間のコンポジットスキップ処理>
実施例1では1スキャンラインにおいてコンポジットスキップする区間は一つだけだったが、1スキャンラインにおいて複数の区間に対してコンポジットスキップ処理を実行しても構わない。
<Composite skip processing between groups in multiple sections>
In the first embodiment, only one section is subjected to composite skip in one scan line. However, composite skip processing may be executed for a plurality of sections in one scan line.
図9を用いて、複数の区間におけるグループ間のコンポジットスキップ処理について説明する。 A composite skip process between groups in a plurality of sections will be described with reference to FIG.
図9に例示するページには、最下位に三角形のオブジェクトを含むグループが存在し、このグループの上には大きな四角形のオブジェクトを含むグループが存在する。また、当該グループの一つ上のグループとして中くらいの四角形のオブジェクトを含むグループが存在する。さらに、最上位には不透過の小さな四角形のオブジェクトを2つ含むグループが存在する。 In the page illustrated in FIG. 9, a group including a triangular object exists at the bottom, and a group including a large rectangular object exists above this group. In addition, there is a group including a medium rectangular object as a group above the group. In addition, there is a group including two non-transparent small square objects at the top.
スキャンラインAを処理する際、不透過の小さな四角形のオブジェクトが2つロードされる。この2つの不透過の小さな四角形のオブジェクトによって最終的に上書きされるので、この2つの不透過の小さな四角形のオブジェクトによって上書きされるそれより下のオブジェクトは描画されないことになる。 When processing the scan line A, two opaque small rectangular objects are loaded. Since these two opaque small square objects are finally overwritten, the objects below that overwritten by the two opaque small square objects will not be drawn.
本実施例では、不透過の小さな四角形のオブジェクトのそれぞれについて、左右のエッジのX座標及びグループNoを保持する。具体的には、1つ目の不透過の小さな四角形のオブジェクトについて、左右のエッジのX座標として(x1、x2)、グループNoとして4が保持される。また、2つ目の不透過の小さな四角形のオブジェクトについて、左右のエッジのX座標として(x3、x4)、グループNoとして4が保持される(図9のステップA−1参照)。 In the present embodiment, the X coordinate and the group number of the left and right edges are held for each of the small opaque objects. Specifically, with respect to the first opaque small rectangular object, X coordinates of the left and right edges are (x 1 , x 2 ), and 4 is held as the group number. For the second opaque small rectangular object, the X coordinate of the left and right edges is (x 3 , x 4 ), and 4 is held as the group number (see step A-1 in FIG. 9).
オブジェクトのエッジのX座標及びオブジェクトのグループNoを保持した後、スキャンラインAに隣接する次のスキャンラインBにおける処理を実行する。ステップB−1において、背面(白色)から生成されるBMPと、三角形のオブジェクトを含む最下位グループから生成されるBMPとをコンポジットする。このとき、背面及び最下位グループは、ステップA−1における処理でグループNoを保持したグループより下位にある。したがって、区間(x1、x2)及び区間(x3、x4)ではグループ間のコンポジット処理は行わず、その他の所のみグループ間のコンポジット処理を行う。 After holding the X coordinate of the edge of the object and the group number of the object, the process on the next scan line B adjacent to the scan line A is executed. In step B-1, the BMP generated from the back surface (white) and the BMP generated from the lowest group including the triangular object are composited. At this time, the back surface and the lowest group are lower than the group holding the group number in the process in step A-1. Therefore, the inter-group composite processing is not performed in the section (x 1 , x 2 ) and the section (x 3 , x 4 ), and the inter-group composite processing is performed only in other places.
続くステップB−2、B−3においても同様に、区間(x1、x2)及び区間(x3、x4)ではグループ間のコンポジット処理を行う必要はなく、その他の所のみグループ間のコンポジット処理を行う。 Similarly, in the subsequent steps B-2 and B-3, it is not necessary to perform the inter-group composite processing in the section (x 1 , x 2 ) and the section (x 3 , x 4 ), and only between other groups. Perform composite processing.
最終的にステップB−4において、区間(x1、x2)及び区間(x3、x4)は最上位グループから生成されるBMPにより上書きされる。 Finally, in step B-4, the section (x 1 , x 2 ) and the section (x 3 , x 4 ) are overwritten by the BMP generated from the highest group.
<複数の区間におけるグループ間のコンポジットスキップ処理フロー>
図10を用いて、図9に例示した複数の区間におけるコンポジットスキップ処理について詳細に説明する。図10に示す一連の処理は、図2のRIP216内のRAMにプログラムがロードされ、RIP216内のCPU上で動作することで実行される。なお、本実施例に係る一連の処理は、実施例1に係る処理と一部同一である。具体的には、図8のステップS800〜S809の処理及びステップS812〜S820の処理に関して、本実施例の処理は、実施例1の処理と同一である。したがって、以下の説明では、実施例1と同一の処理については説明を省略し、ステップS1000(図8のS809)の後のステップS1001以降の処理について説明する。
<Composite skip processing flow between groups in multiple sections>
The composite skip process in the plurality of sections illustrated in FIG. 9 will be described in detail with reference to FIG. A series of processing shown in FIG. 10 is executed by loading a program into the RAM in the
ステップS1001において、RIP216内のCPUは、ロードしたオブジェクトより下の領域でコンポジット処理が省略可能かを判定するために、ロードしたオブジェクトが不透過且つ矩形であり現在把握しているオブジェクトより上位であるか否かを判定する。オブジェクトが不透過且つ矩形であり現在把握しているオブジェクトより上位であると判定された場合、処理は、ステップS1002に進む。オブジェクトが不透過且つ矩形であり現在把握しているオブジェクトより上位ではないと判定された場合、処理は、ステップS1005に進む。
In step S1001, the CPU in the
ステップS1002において、RIP216内のCPUは、グループ間のコンポジットスキップ処理の対象となる区間の数が保持できる個数以内か否かを判定する。保持可能な、グループ間のコンポジットスキップ処理の対象となる区間の数は、予め設定されている。グループ間のコンポジットスキップ処理の対象となる区間の数が保持できる個数以内である場合、処理は、ステップS1003に進む。グループ間のコンポジットスキップ処理の対象となる区間の数が保持できる個数より多い場合、処理は、ステップS1004に進む。
In step S1002, the CPU in the
ステップS1003において、RIP216内のCPUは、エッジのロード時に取得したオブジェクトが属するグループNoと、当該オブジェクトの左右のエッジのX座標とを追加登録する。次いで、処理は、ステップS1005(図8のS812)に進む。
In step S1003, the CPU in the
ステップS1004において、RIP216内のCPUは、保持しているオブジェクトの中で最も背面に近いオブジェクトに関するデータを削除して、ステップS1001でロードしたオブジェクトに関するデータを追加登録する。具体的には、エッジのロード時に取得したオブジェクトが属するグループNoと、当該オブジェクトの左右のエッジのX座標とを追加登録する。次いで、処理は、ステップS1005(図8のS812)に進む。
In step S1004, the CPU in the
<最適オブジェクトの選択を伴うコンポジットスキップ処理>
上述した実施例では、最上位のグループに属する不透過オブジェクトのスパンにおいて、グループ間のコンポジットスキップ処理を実行した。しかし、オブジェクトの形状によっては、最上位グループより低位のグループに属する不透過オブジェクトのスパンにおいて、グループ間のコンポジットスキップ処理を実行しても構わない。
<Composite skip processing with optimal object selection>
In the above-described embodiment, the composite skip process between groups is executed in the span of the opaque object belonging to the highest group. However, depending on the shape of the object, the composite skip processing between groups may be executed in the span of the opaque object belonging to the lower group than the highest group.
図11を用いて、最適オブジェクトの選択を伴うグループ間のコンポジットスキップ処理について説明する。 With reference to FIG. 11, a composite skip process between groups with selection of an optimal object will be described.
図11に例示するページには、最下位に三角形のオブジェクトを含むグループが存在し、このグループの上には大きな四角形のオブジェクトを含むグループが存在する。また、当該グループの一つ上のグループとして不透過の中くらいの四角形のオブジェクトを含むグループが存在する。さらに、最上位には不透過の小さな四角形のオブジェクトを含むグループが存在する。 In the page illustrated in FIG. 11, a group including a triangular object exists at the bottom, and a group including a large rectangular object exists above this group. In addition, there is a group including a non-transparent middle square object as a group above the group. Further, there is a group including a small opaque object that is opaque at the top.
スキャンラインAを処理する際、最上位グループに属する不透過の小さな四角形のオブジェクトがロードされる。しかし、このオブジェクトによって描画される四角形は所定の大きさより小さいので、本実施例では、当該オブジェクトを、コンポジットスキップを実行する際の基準にセットしない。本実施例では、コンポジットスキップを実行する際の基準に、最上位グループの下位のグループに属する不透過の中くらいの四角形のオブジェクトをセットする。この不透過の中くらいの四角形のオブジェクトによって上書きされる、それより下のオブジェクトは描画されないことになる。 When processing the scan line A, an opaque small square object belonging to the highest group is loaded. However, since the quadrangle drawn by this object is smaller than a predetermined size, in this embodiment, the object is not set as a reference for executing the composite skip. In the present embodiment, a non-transparent medium rectangular object belonging to a lower group of the highest group is set as a reference for executing composite skip. Any objects below it that are overwritten by this opaque medium square object will not be drawn.
本実施例では、中くらいの四角形のオブジェクトについて、左右のエッジのX座標及びグループNoを保持する。具体的には、左右のエッジのX座標として(x1、x2)、グループNoとして3が保持される。 In the present embodiment, the X coordinate and group No. of the left and right edges are held for a medium square object. Specifically, (x 1 , x 2 ) is held as the X coordinate of the left and right edges, and 3 is held as the group number.
オブジェクトのエッジのX座標及びオブジェクトのグループNoを保持した後、スキャンラインAに隣接する次のスキャンラインBにおける処理を実行する。ステップB−1において、背面(白色)から生成されるBMPと、三角形のオブジェクトを含む最下位グループから生成されるBMPとをコンポジットする。このとき、背面及び最下位グループは、ステップA−1における処理でグループNoを保持したグループより下位にある。したがって、区間(x1、x2)ではグループ間のコンポジット処理は行わず、その他の所のみグループ間のコンポジット処理を行う。 After holding the X coordinate of the edge of the object and the group number of the object, the process on the next scan line B adjacent to the scan line A is executed. In step B-1, the BMP generated from the back surface (white) and the BMP generated from the lowest group including the triangular object are composited. At this time, the back surface and the lowest group are lower than the group holding the group number in the process in step A-1. Therefore, the inter-group composite processing is not performed in the section (x 1 , x 2 ), and the inter-group composite processing is performed only in other places.
続くステップB−2においても同様に、区間(x1、x2)ではグループ間のコンポジット処理を行う必要はなく、その他の所のみグループ間のコンポジット処理を行う。 Similarly, in the subsequent step B-2, it is not necessary to perform the inter-group composite processing in the section (x 1 , x 2 ), and the inter-group composite processing is performed only in other places.
続くステップB−3においても同様に、区間(x1、x2)ではグループ間のコンポジット処理を行うことなく上書きされる。 Similarly, in the subsequent step B-3, overwriting is performed without performing composite processing between groups in the section (x 1 , x 2 ).
最終的にステップB−4において、小さな四角形が上書きされる。このとき、グループ間のコンポジット処理が行われるが、小さな四角形のオブジェクトのスパンは短いので、エッジ処理にそれほど時間を要さない。 Finally, in step B-4, the small rectangle is overwritten. At this time, composite processing between groups is performed. However, since the span of a small square object is short, the edge processing does not require much time.
<最適オブジェクトの選択を伴うコンポジットスキップ処理フロー>
図12を用いて、図11に例示した最適オブジェクトの選択を伴うコンポジットスキップ処理について詳細に説明する。図12に示す一連の処理は、図2のRIP216内のRAMにプログラムがロードされ、RIP216内のCPU上で動作することで実行される。なお、本実施例に係る一連の処理は、実施例1に係る処理と一部同一である。具体的には、図8のステップS800〜S809の処理及びステップS812〜S820の処理に関して、本実施例の処理は、実施例1の処理と同一である。したがって、以下の説明では、実施例1と同一の処理については説明を省略し、ステップS1200(図8のS809)の後のステップS1201以降の処理について説明する。
<Composite skip processing flow with optimal object selection>
With reference to FIG. 12, the composite skip process involving selection of the optimum object illustrated in FIG. 11 will be described in detail. A series of processing shown in FIG. 12 is executed by loading a program into the RAM in the
ステップS1201において、RIP216内のCPUは、ロードしたオブジェクトより下の領域でコンポジット処理が省略可能かを判定するために、ロードしたオブジェクトが不透過且つ矩形であり現在把握しているオブジェクトより上位であるか否かを判定する。ロードしたオブジェクトが不透過且つ矩形であり現在把握しているオブジェクトより上位であると判定された場合、処理は、ステップS1202に進む。ロードしたオブジェクトが不透過且つ矩形であり現在把握しているオブジェクトより上位ではないと判定された場合、処理は、ステップS1204に進む。
In step S1201, the CPU in the
ステップS1202において、RIP216内のCPUは、ロードされたオブジェクトの大きさが所定の大きさより大きいか否か(ロードされたオブジェクトのスパンの長さが所定の長さより長いか否か)を判定する。ロードされたオブジェクトの大きさが所定の大きさより大きいと判定された場合、処理は、ステップS1203に進み、ロードされたオブジェクトの大きさが所定の大きさ以下であると判定された場合、処理は、ステップS1204(図8のS812)に進む。
In step S1202, the CPU in the
ステップS1203において、RIP216内のCPUは、オブジェクトが属するグループのグループNo及びオブジェクトの左右のエッジのX座標を更新する。次いで、処理は、ステップS1204(図8のS812)に進む。
In step S1203, the CPU in the
<矩形以外のオブジェクトのスパンにおけるグループ間のコンポジットスキップ処理>
上述した実施例では、矩形のオブジェクトのスパンにおいて、グループ間のコンポジットスキップ処理を実行した。しかし、矩形以外のオブジェクトのスパンにおいて、グループ間のコンポジットスキップ処理を実行しても構わない。
<Composite skip processing between groups in non-rectangular object spans>
In the embodiment described above, the composite skip process between groups is executed in the span of a rectangular object. However, composite skip processing between groups may be executed in a span of an object other than a rectangle.
図13を用いて、矩形以外のオブジェクトのスパンにおけるグループ間のコンポジットスキップ処理について説明する。 A composite skip process between groups in a span of an object other than a rectangle will be described with reference to FIG.
図13に例示するページには、最下位に三角形のオブジェクトを含むグループが存在し、このグループの上には大きな四角形のオブジェクトを含むグループが存在する。また、最上位には不透過の台形のオブジェクトを含むグループが存在する。 In the page illustrated in FIG. 13, a group including a triangular object exists at the bottom, and a group including a large rectangular object exists above this group. In addition, a group including an opaque trapezoidal object exists at the top.
スキャンラインAを処理する際、最上位グループに属する不透過の台形のオブジェクトがロードされる。この不透過の台形のオブジェクトにより最終的に上書きされるので、この上書き部より下のオブジェクトは描画されないことになる。 When processing the scan line A, an opaque trapezoidal object belonging to the highest group is loaded. Since the object is finally overwritten by the opaque trapezoidal object, the object below the overwriting portion is not drawn.
本実施例では、不透過の台形のオブジェクトについて、左右のエッジのX座標及びグループNoを保持する。具体的には、左右のエッジのX座標として(x1、x2)、グループNoとして3が保持される。合わせて、台形のオブジェクトのエッジ処理を行う際、スキャンラインAに隣接する次のスキャンラインBにおけるスパン(x1’、x2’)も保持する(図13のステップA−1参照)。 In this embodiment, the X coordinate and group No. of the left and right edges are held for the opaque trapezoidal object. Specifically, (x 1 , x 2 ) is held as the X coordinate of the left and right edges, and 3 is held as the group number. In addition, when performing the edge processing of the trapezoidal object, the span (x 1 ′, x 2 ′) in the next scan line B adjacent to the scan line A is also held (see step A-1 in FIG. 13).
次いで、スキャンラインBにおける処理が実行される。ステップB−1において、背面(白色)から生成されるBMPと、三角形のオブジェクトを含む最下位グループから生成されるBMPとをコンポジットする。このとき、背面及び最下位グループは、ステップA−1における処理でグループNoを保持したグループより下位にある。したがって、区間(x1’、x2’)ではグループ間のコンポジット処理は行わず、その他の所のみグループ間のコンポジット処理を行う。 Next, processing in the scan line B is executed. In step B-1, the BMP generated from the back surface (white) and the BMP generated from the lowest group including the triangular object are composited. At this time, the back surface and the lowest group are lower than the group holding the group number in the process in step A-1. Therefore, the inter-group composite processing is not performed in the section (x 1 ′, x 2 ′), and the inter-group composite processing is performed only in other places.
続くステップB−2においても同様に、区間(x1’、x2’)ではグループ間のコンポジット処理を行う必要はなく、その他の所のみグループ間のコンポジット処理を行う。 Similarly, in the subsequent step B-2, it is not necessary to perform the inter-group composite processing in the section (x 1 ′, x 2 ′), and the inter-group composite processing is performed only in other places.
最終的にステップB−3において、区間(x1’、x2’)は最上位グループから生成されるBMPにより上書きされる。 Finally, in step B-3, the section (x 1 ′, x 2 ′) is overwritten by the BMP generated from the highest group.
<矩形以外のオブジェクトのスパンにおけるコンポジットスキップ処理フロー>
図14を用いて、図13に例示した矩形以外のオブジェクトのスパンにおけるコンポジットスキップ処理について詳細に説明する。図14に示す一連の処理は、図2のRIP216内のRAMにプログラムがロードされ、RIP216内のCPU上で動作することで実行される。なお、本実施例に係る一連の処理は、実施例1に係る処理と一部同一である。具体的には、図8のステップS800〜S809の処理及びステップS813〜S820の処理に関して、本実施例の処理は、実施例1の処理と同一である。したがって、以下の説明では、実施例1と同一の処理については説明を省略し、ステップS1400(図8のS809)の後のステップS1401以降の処理について説明する。
<Composite skip processing flow for spans of objects other than rectangles>
The composite skip process in the span of an object other than the rectangle illustrated in FIG. 13 will be described in detail with reference to FIG. A series of processing shown in FIG. 14 is executed by loading a program into the RAM in the
ステップS1401において、RIP216内のCPUは、ロードしたオブジェクトより下の領域でコンポジット処理が省略可能かを判定するために、ロードしたオブジェクトが不透過且つ現在把握しているオブジェクトより上位であるか否かを判定する。ロードしたオブジェクトが不透過且つ現在把握しているオブジェクトより上位であると判定された場合、処理は、ステップS1402に進む。ロードしたオブジェクトが不透過且つ現在把握しているオブジェクトより上位ではないと判定された場合、処理は、ステップS1403に進む。
In step S1401, the CPU in the
ステップS1402において、RIP216内のCPUは、オブジェクトが属するグループのグループNo及びオブジェクトの左右のエッジのX座標を更新する。次いで、処理は、ステップS1403に進む。
In step S1402, the CPU in the
ステップS1403において、RIP216内のCPUは、保持しているオブジェクトのエッジ処理か否かを判定する。保持しているオブジェクトのエッジ処理と判定された場合、処理は、ステップS1404に進み、保持しているオブジェクトのエッジ処理ではないと判定された場合、処理は、ステップS1405に進む。
In step S1403, the CPU in the
ステップS1404において、RIP216内のCPUは、次のスキャンラインにおけるオブジェクトのエッジのX座標を算出し保持する。次いで、処理は、ステップS1405に進む。
In step S1404, the CPU in the
ステップS1405において、RIP216内のCPUは、エッジ処理、レベル処理、及びフィル処理を行う。次いで、処理は、ステップS1406(図8のS813)に進む。
In step S1405, the CPU in the
<矩形以外のオブジェクトのスパンにおける簡易コンポジットスキップ処理>
実施例4では次のラインでスキップする区間(x1’、x2’)を現在処理中のラインにおける処理でライン毎に算出した。しかし、本実施例では、一旦ロードしたオブジェクトの左右のエッジによるスパン(x1、x2)を常にコンポジットスキップできる区間としてコンポジット処理を実行する。なお、本実施例は、あるスキャンラインから次のスキャンラインに処理が進む際にオブジェクトの左側のエッジがx軸マイナス方向に伸張し、右側のエッジがx軸プラス方向に伸張する場合を想定している。
<Simple composite skip processing for spans of objects other than rectangles>
In Example 4, the section (x 1 ′, x 2 ′) to be skipped in the next line was calculated for each line in the process on the currently processed line. However, in this embodiment, the composite processing is executed by setting the spans (x 1 , x 2 ) due to the left and right edges of the once loaded object as a section in which composite skip can always be performed. Note that this embodiment assumes a case where the left edge of the object extends in the x-axis minus direction and the right edge extends in the x-axis plus direction when processing proceeds from one scan line to the next. ing.
図15を用いて、矩形以外のオブジェクトのスパンにおけるグループ間の簡易コンポジットスキップ処理について説明する。 A simple composite skip process between groups in a span of an object other than a rectangle will be described with reference to FIG.
図15に例示するページには、最下位に三角形のオブジェクトを含むグループが存在し、このグループの上には大きな四角形のオブジェクトを含むグループが存在する。また、最上位には不透過の小さな台形のオブジェクトを含むグループが存在する。 In the page illustrated in FIG. 15, a group including a triangular object exists at the bottom, and a group including a large rectangular object exists above this group. In addition, there is a group including trapezoidal objects that are small and opaque at the top.
スキャンラインAを処理する際、最上位グループに属する不透過の台形のオブジェクトがロードされる。スキャンラインAの処理からスキャンラインBの処理に進む際、不透過の台形の左側のエッジは、x軸マイナス方向に進み、右側のエッジは、x軸プラス方向に進む。本実施例では、この不透過の台形のオブジェクトにより最終的に上書きされるので、この上書き部より下のオブジェクトは描画されないことになる。 When processing the scan line A, an opaque trapezoidal object belonging to the highest group is loaded. When proceeding from scan line A processing to scan line B processing, the left edge of the opaque trapezoid proceeds in the x-axis minus direction, and the right edge proceeds in the x-axis plus direction. In the present embodiment, the object is finally overwritten by the opaque trapezoidal object, so that the object below the overwritten portion is not drawn.
本実施例では、ロードされた台形のオブジェクトについて、左右のエッジによるスパンのうち最も上部のスパン及びグループNoを保持する。具体的には、スパンとして(x1、x2)、グループNoとして3が保持される。図15から分かるように、スパン(x1、x2)は、台形の上底を表す。 In the present embodiment, for the loaded trapezoidal object, the uppermost span and the group number among the spans by the left and right edges are held. Specifically, (x 1 , x 2 ) is retained as the span, and 3 is retained as the group number. As can be seen from FIG. 15, the span (x 1 , x 2 ) represents the upper base of the trapezoid.
次いで、スキャンラインBにおける処理が実行される。ステップB−1において、背面(白色)から生成されるBMPと、三角形のオブジェクトを含む最下位グループから生成されるBMPとをコンポジットする。このとき、背面及び最下位グループは、ステップA−1における処理でグループNoを保持したグループより下位にある。したがって、ステップA−1で保持した区間(x1、x2)ではグループ間のコンポジット処理は行わず、その他の所のみグループ間のコンポジット処理を行う。 Next, processing in the scan line B is executed. In step B-1, the BMP generated from the back surface (white) and the BMP generated from the lowest group including the triangular object are composited. At this time, the back surface and the lowest group are lower than the group holding the group number in the process in step A-1. Therefore, the inter-group composite processing is not performed in the section (x 1 , x 2 ) held in step A-1, and the inter-group composite processing is performed only in other places.
続くステップB−2においても同様に、区間(x1、x2)ではグループ間のコンポジット処理を行う必要はなく、その他の所のみグループ間のコンポジット処理を行う。 Similarly, in the subsequent step B-2, it is not necessary to perform the inter-group composite processing in the section (x 1 , x 2 ), and the inter-group composite processing is performed only in other places.
最終的にステップB−3において、不透過の台形のオブジェクトにより上書きされる。 Finally, in step B-3, the object is overwritten by the opaque trapezoidal object.
<矩形以外のオブジェクトのスパンにおける簡易コンポジットスキップ処理フロー>
図16を用いて、図15に例示した矩形以外のオブジェクトのスパンにおける簡易コンポジットスキップ処理について詳細に説明する。図16に示す一連の処理は、図2のRIP216内のRAMにプログラムがロードされ、RIP216内のCPU上で動作することで実行される。なお、本実施例に係る一連の処理は、実施例1に係る処理と一部同一である。具体的には、図8のステップS800〜S809の処理及びステップS812〜S820の処理に関して、本実施例の処理は、実施例1の処理と同一である。したがって、以下の説明では、実施例1と同一の処理については説明を省略し、ステップS1600(図8のS809)の後のステップS1601以降の処理について説明する。
<Simple composite skip processing flow for spans of objects other than rectangles>
The simple composite skip process in the span of an object other than the rectangle illustrated in FIG. 15 will be described in detail with reference to FIG. A series of processing shown in FIG. 16 is executed by loading a program into the RAM in the
ステップS1601において、RIP216内のCPUは、ロードしたオブジェクトが不透過且つ現在把握しているオブジェクトより上位であるか否か判定する。また、RIP216内のCPUは、ロードしたオブジェクトに関して、カレントスキャンラインが次のスキャンラインに進む際、左側のエッジがx軸マイナス方向に伸張し、右側のエッジがx軸プラス方向に伸張する台形か否かを、エッジの傾きに基づいて判定する。これらの条件を全て満たす場合、処理は、ステップS1602に進み、これらの条件を一つでも満たさない場合、処理は、ステップS1603(図8のS812)に進む。
In step S1601, the CPU in the
ステップS1602において、RIP216内のCPUは、オブジェクトが属するグループのグループNo及びロードしたオブジェクトの左右のエッジのX座標を保持する。次いで、処理は、ステップS1603(図8のS812)に進む。
In step S1602, the CPU in the
<エッジのグループ分割処理と、先行技術との関連について>
図17を用いて、本発明に係るエッジのグループ分割処理と、先行技術との関連について説明する。図17に示す一連の処理は、図2のRIP216内のRAMにプログラムがロードされ、RIP216内のCPU上で動作することで実行される。
<Relationship between edge grouping and prior art>
The relationship between the edge group division processing according to the present invention and the prior art will be described with reference to FIG. A series of processing shown in FIG. 17 is executed by loading a program into the RAM in the
エッジのグループ分割処理とは、実施例1で説明したように、ディスプレイリストを入力としビットマップを出力とした処理であり、CPUキャッシュサイズと、ディスプレイリストに含まれるエッジとに基づいて、エッジをグループに分割して行う処理である。 As described in the first embodiment, the edge group division process is a process in which the display list is input and the bitmap is output, and the edge is determined based on the CPU cache size and the edges included in the display list. This process is performed by dividing into groups.
また、本説明で登場する「フォールバック」とは背景技術で述べた処理のことである。入力されたPDLデータのデータサイズが大きい場合、ディスプレイリストを生成するためのメモリサイズが不足する場合がある。この場合、メモリサイズに収まるサイズのディスプレイリストをPDLデータから生成しレンダリングを行う。一度にディスプレイリストが生成できなかった残りのPDLデータも同様にメモリサイズに収まるようなディスプレイリストを生成し、既にレンダリングしたデータがある場合、重ね合わせを行う。 Further, “fallback” appearing in this description is the processing described in the background art. When the data size of the input PDL data is large, the memory size for generating the display list may be insufficient. In this case, a display list having a size that fits in the memory size is generated from the PDL data and rendered. A display list is generated so that the remaining PDL data for which the display list could not be generated at once also fits in the memory size. If there is already rendered data, superimposition is performed.
PDLのレンダリング処理は、ステップS1701で開始される。次いで、処理は、ステップS1703に進む。 The PDL rendering process starts in step S1701. Next, the process proceeds to step S1703.
ステップS1703において、RIP216内のCPUは、レンダリングを行うPDLを受信し、RIP216内のRAMに格納する。次いで、処理は、ステップS1704に進む。
In step S1703, the CPU in the
ステップS1704において、RIP216内のCPUは、PDLを解釈しディスプレイリストを生成する。次いで、処理は、ステップS1705に進む。
In step S1704, the CPU in the
ステップS1705において、RIP216内のCPUは、処理中のページにおいてフォールバックが発生したか否かを判定する。フォールバックが発生したと判定された場合、処理は、ステップS1706に進み、フォールバックが発生していないと判定された場合、処理は、S1709に進む。
In step S1705, the CPU in the
ステップS1706において、RIP216内のCPUは、エッジをグループに分割した上でレンダリング処理を行う。次いで、処理は、ステップS1707に進む。
In step S1706, the CPU in the
ステップS1707において、RIP216内のCPUは、ページの重ね合わせ処理を行う。ページの重ね合わせ処理については、<フォールバックにおける重ね合わせ処理>の項目で詳細を記載する。次いで、処理は、ステップS1708に進む。
In step S1707, the CPU in the
ステップS1708において、RIP216内のCPUは、入力された1ページ分のPDL処理が全て完了したか否かを判定する。入力された1ページ分のPDL処理が全て完了したと判定された場合、処理は、ステップS1711に進み、入力された1ページ分のPDL処理が全て完了していないと判定された場合、処理は、ステップS1704に戻る。
In step S1708, the CPU in the
ステップS1709において、RIP216内のCPUは、エッジをグループに分割した上でレンダリング処理を行う。次いで、処理は、ステップS1711に進む。
In step S1709, the CPU in the
ステップS1711において、RIP216内のCPUは、入力された全ページ分のPDL処理が全て完了したか否かを判定する。入力された全ページ分のPDL処理が全て完了したと判定された場合、処理は、ステップS1712に進み、入力された全ページ分のPDL処理が全て完了していないと判定された場合、処理は、ステップS1704に戻る。
In step S1711, the CPU in the
PDLのレンダリング処理は、ステップS1712で終了する。 The PDL rendering process ends in step S1712.
<フォールバックにおける重ね合わせ処理>
ここで、図17のステップS1707のページ重ね合わせ処理について説明する。フォールバックにおけるページ重ね合わせ処理では、1ページ分のレンダリング画像が生成される際、レンダリング処理部は、生成したビットマップを圧縮してデータサイズを小さくし、圧縮後のビットマップを背景イメージのDLとして、DLメモリに格納する。換言すると、領域情報が送られたディスプレイリスト生成部は、圧縮されたビットマップが背景として含まれるように次のディスプレイリストを生成する。ディスプレイリストに背景画像が含まれている場合、レンダリング処理部は、圧縮画像を展開して背景画像として現在処理中のディスプレイリストのレンダリング時に重ね合わせ処理を行う。
<Overlay processing in fallback>
Here, the page overlay processing in step S1707 of FIG. 17 will be described. In the page overlay processing in fallback, when a rendering image for one page is generated, the rendering processing unit compresses the generated bitmap to reduce the data size, and the compressed bitmap is converted to the background image DL. Is stored in the DL memory. In other words, the display list generation unit to which the region information is sent generates the next display list so that the compressed bitmap is included as the background. When the display list includes a background image, the rendering processing unit expands the compressed image and performs a superimposition process when rendering the display list currently being processed as a background image.
一方、上述した図8のステップS814やステップS817では、生成されたレンダリング画像はレンダリング処理部で圧縮されず保持され、次のグループのレンダリング時に下位グループのレンダリング画像と重ね合わせを行う。したがって、この点において、フォールバックにおける重ね合わせ処理と、上述した図8のステップS814やステップS817におけるコンポジット処理とは異なる。 On the other hand, in step S814 and step S817 in FIG. 8 described above, the generated rendering image is held without being compressed by the rendering processing unit, and is superimposed on the rendering image of the lower group when rendering the next group. Therefore, in this respect, the overlay process in the fallback is different from the composite process in step S814 or step S817 in FIG. 8 described above.
<他の実施形態>
以上、様々な実施形態を詳述したが、本発明は、複数の装置から構成されるシステムに適用してもよいし、また、一つの装置に適用してもよい。例えば、スキャナ、プリンタ、PC、複写機、複合機、及びファクシミリ装置並びにこれらを組み合わせたシステムに対して、本発明を適用することができる。
<Other embodiments>
Although various embodiments have been described in detail above, the present invention may be applied to a system constituted by a plurality of devices, or may be applied to a single device. For example, the present invention can be applied to a scanner, a printer, a PC, a copier, a multifunction peripheral, a facsimile machine, and a system combining these.
本発明は、前述した実施形態の各機能を実現するソフトウェアプログラムを、システム若しくは装置に対して直接又は遠隔から供給し、そのシステム等に含まれるコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。 The present invention supplies a software program that implements the functions of the above-described embodiments directly or remotely to a system or apparatus, and a computer included in the system reads and executes the supplied program code. Can also be achieved.
従って、本発明の機能・処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の一つの態様である。 Accordingly, since the functions and processes of the present invention are implemented by a computer, the program code itself installed in the computer also implements the present invention. That is, the computer program itself for realizing the functions and processes is also one aspect of the present invention.
その場合、コンピュータプログラムはプログラムの機能を有してさえいればよく、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等、プログラムの形態を問わない。 In that case, the computer program only needs to have the function of the program, and the form of the program such as an object code, a program executed by an interpreter, script data supplied to the OS, etc. is not limited.
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RW等がある。また、記録媒体としては、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM、DVD−R)等もある。 Examples of the recording medium for supplying the program include a flexible disk, hard disk, optical disk, magneto-optical disk, MO, CD-ROM, CD-R, and CD-RW. Examples of the recording medium include a magnetic tape, a nonvolatile memory card, a ROM, a DVD (DVD-ROM, DVD-R), and the like.
また、プログラムは、クライアントコンピュータのブラウザを用いてインターネット/イントラネットのウェブサイトからダウンロードしてもよい。すなわち、該ウェブサイトから本発明のコンピュータプログラムそのものを若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードしてもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるウェブサイトからダウンロードすることによっても、本発明を実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明の構成要件となる場合がある。 The program may be downloaded from an Internet / intranet website using a browser of a client computer. That is, the computer program itself of the present invention or a compressed file including an automatic installation function may be downloaded from the website onto a recording medium such as a hard disk. The present invention can also be realized by dividing the program code constituting the program of the present invention into a plurality of files and downloading the respective files from different websites. That is, a WWW server that allows a plurality of users to download a program file for realizing the functional processing of the present invention on a computer may be a constituent requirement of the present invention.
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布してもよい。この場合、所定条件をクリアしたユーザにのみ、インターネット/イントラネットを介してウェブサイトから暗号化を解く鍵情報をダウンロードさせ、その鍵情報で暗号化されたプログラムを復号して実行し、プログラムをコンピュータにインストールしてもよい。 Further, the program of the present invention may be encrypted and stored in a storage medium such as a CD-ROM and distributed to users. In this case, only the user who has cleared the predetermined condition is allowed to download the key information to be decrypted from the website via the Internet / intranet, decrypt the program encrypted with the key information, and execute the program. You may install it on
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現されてもよい。なお、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行ってもよい。もちろん、この場合も、前述した実施形態の機能が実現され得る。 Further, the functions of the above-described embodiments may be realized by the computer executing the read program. Note that an OS or the like running on the computer may perform part or all of the actual processing based on the instructions of the program. Of course, also in this case, the functions of the above-described embodiments can be realized.
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれてもよい。そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPU等が実際の処理の一部又は全部を行ってもよい。このようにして、前述した実施形態の機能が実現されることもある。 Furthermore, the program read from the recording medium may be written in a memory provided in a function expansion board inserted into the computer or a function expansion unit connected to the computer. Based on the instructions of the program, the CPU or the like provided in the function expansion board or function expansion unit may perform part or all of the actual processing. In this way, the functions of the above-described embodiments may be realized.
Claims (9)
ディスプレイリストを解釈しオブジェクトをロードするロード手段と、
当該ロードしたオブジェクトが不透過であり現在把握しているオブジェクトより上位であるか否か判定する判定手段と、
前記ロードしたオブジェクトが不透過であり現在把握しているオブジェクトより上位である場合に、ロードしたオブジェクトの属するグループのグループナンバー及び現在処理中のスキャンラインにおける当該オブジェクトの左右のエッジの座標を保持する保持手段と、
コンポジット処理がグループ間のコンポジット処理であり、現在把握している最上位のオブジェクトが属するグループより下位のグループ同士で実行される場合に、前記左右のエッジの座標で表される区間内でコンポジット処理をスキップするスキップ手段と
を備えたことを特徴とする画像処理装置。 An image processing device that generates a bitmap for a display list and executes a rendering process,
Loading means to interpret the display list and load the object;
A determination means for determining whether the loaded object is opaque and is higher than the currently grasped object;
When the loaded object is opaque and is higher than the currently grasped object, the group number of the group to which the loaded object belongs and the coordinates of the left and right edges of the object in the currently processed scan line are stored. Holding means;
When the composite process is a composite process between groups and is executed between groups lower than the group to which the highest-level object currently grasped belongs, the composite process is performed within the section represented by the coordinates of the left and right edges. An image processing apparatus comprising: skipping means for skipping.
前記保持手段は、前記ロードしたオブジェクトが不透過且つ台形であり現在把握しているオブジェクトより上位である場合に、前記ロードしたオブジェクトの属するグループのグループナンバー及び当該オブジェクトの左右のエッジの座標を保持する
ことを特徴とする請求項1に記載の画像処理装置。 The determination means determines whether or not the loaded object is a trapezoid based on an inclination of an edge,
The holding means holds the group number of the group to which the loaded object belongs and the coordinates of the left and right edges of the object when the loaded object is opaque and trapezoidal and is higher than the currently grasped object. The image processing apparatus according to claim 1, wherein:
当該算出したグループの数に基づいてエッジをグループ毎に分割するか否か判定する手段と
を更に備えたことを特徴とする請求項1に記載の画像処理装置。 Means for calculating the number of edges in which a cache miss hit does not occur in edge processing, and calculating the number of groups into which edges are divided based on the calculated number of edges;
The image processing apparatus according to claim 1, further comprising: a unit that determines whether to divide the edge into groups based on the calculated number of groups.
前記保持手段は、前記ロードしたオブジェクトが不透過且つ矩形であり現在把握しているオブジェクトより上位である場合に、ロードしたオブジェクトの属するグループのグループナンバー及び現在処理中のスキャンラインにおける当該オブジェクトの左右のエッジの座標を保持する
ことを特徴とする請求項1に記載の画像処理装置。 The determination means determines whether the loaded object is opaque and rectangular and is higher than the currently grasped object,
When the loaded object is opaque and rectangular and is higher than the currently grasped object, the holding means includes the group number of the group to which the loaded object belongs and the right and left of the object in the scan line currently being processed. The image processing apparatus according to claim 1, wherein coordinates of edges of the image are held.
グループ間のコンポジットスキップ処理の対象となる区間の数が保持できる個数以内ではない場合に、保持しているオブジェクトの中で最も背面に近いオブジェクトに関するデータを削除して、当該ロードしたオブジェクトに関するデータを登録する手段と
を更に備えたことを特徴とする請求項1に記載の画像処理装置。 Means for determining whether or not the number of sections subject to composite skip processing between groups is within a holdable number when the loaded object is opaque and is higher than the currently known object; ,
If the number of sections subject to composite skip processing between groups is not within the number that can be retained, delete the data related to the object closest to the back of the objects held, and the data related to the loaded object The image processing apparatus according to claim 1, further comprising: a registering unit.
ディスプレイリストを解釈しオブジェクトをロードするステップと、
当該ロードしたオブジェクトが不透過であり現在把握しているオブジェクトより上位であるか否か判定するステップと、
前記ロードしたオブジェクトが不透過であり現在把握しているオブジェクトより上位である場合に、ロードしたオブジェクトの属するグループのグループナンバー及び現在処理中のスキャンラインにおける当該オブジェクトの左右のエッジの座標を保持するステップと、
コンポジット処理がグループ間のコンポジット処理であり、現在把握している最上位のオブジェクトが属するグループより下位のグループ同士で実行される場合に、前記左右のエッジの座標で表される区間内でコンポジット処理をスキップするステップと
を備えたことを特徴とする画像処理方法。 An image processing method for generating a bitmap for a display list and executing a rendering process,
Interpreting the display list and loading the object;
Determining whether the loaded object is opaque and higher than the currently known object;
When the loaded object is opaque and is higher than the currently grasped object, the group number of the group to which the loaded object belongs and the coordinates of the left and right edges of the object in the currently processed scan line are stored. Steps,
When the composite process is a composite process between groups and is executed between groups lower than the group to which the highest-level object currently grasped belongs, the composite process is performed within the section represented by the coordinates of the left and right edges. An image processing method comprising: a step of skipping.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013210458A JP2015075839A (en) | 2013-10-07 | 2013-10-07 | Image processing apparatus, image processing method, and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013210458A JP2015075839A (en) | 2013-10-07 | 2013-10-07 | Image processing apparatus, image processing method, and program |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2015075839A true JP2015075839A (en) | 2015-04-20 |
Family
ID=53000674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013210458A Pending JP2015075839A (en) | 2013-10-07 | 2013-10-07 | Image processing apparatus, image processing method, and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2015075839A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018063557A (en) * | 2016-10-12 | 2018-04-19 | キヤノン株式会社 | Image forming device, method, and program |
JP2019010817A (en) * | 2017-06-30 | 2019-01-24 | キヤノン株式会社 | Image processing apparatus, image processing method, and program |
-
2013
- 2013-10-07 JP JP2013210458A patent/JP2015075839A/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018063557A (en) * | 2016-10-12 | 2018-04-19 | キヤノン株式会社 | Image forming device, method, and program |
JP2019010817A (en) * | 2017-06-30 | 2019-01-24 | キヤノン株式会社 | Image processing apparatus, image processing method, and program |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8274667B2 (en) | Image processing apparatus, control method thereof, and storage medium storing a program for converting raster image data into block vector image format | |
JP4995057B2 (en) | Drawing apparatus, printing apparatus, drawing method, and program | |
US7680358B2 (en) | Image processing apparatus and control method thereof, and program | |
JP5209953B2 (en) | Image data supply apparatus and image data supply method | |
US8466921B2 (en) | Image processing apparatus and method for load balancing of plural types of image processing in plural processors | |
US8339664B2 (en) | Image processing method, image processing apparatus, and control method thereof | |
US8223387B2 (en) | Image data processor and image data processing program storage medium | |
US20090303550A1 (en) | Image processing apparatus and image processing method | |
US6975416B2 (en) | Print control apparatus and method | |
US9443174B2 (en) | Image processing apparatus, image processing method, and storage medium | |
JP5644214B2 (en) | Print control program, information processing apparatus, storage medium, printing apparatus, printing system | |
JP2015075839A (en) | Image processing apparatus, image processing method, and program | |
JP6135329B2 (en) | Print data processing apparatus, program, and system | |
KR20170099211A (en) | Method for enhancing quality of image object included in compound document and apparatus for performing the same | |
JP4461361B2 (en) | Drawing processing method and program, drawing command output device and image forming apparatus | |
JP2008107970A (en) | Image forming device | |
JP4475680B2 (en) | Image processing apparatus, control method therefor, and program | |
JP2016206934A (en) | Image processing device, image processing method and program | |
JP2010111099A (en) | Image processing apparatus and its control method | |
JP2014194635A (en) | Image forming apparatus, image forming method, and program | |
US8756491B2 (en) | PDL data processing device | |
JP2019111677A (en) | Image processing device, image processing device control method, image forming device and program | |
JP4398361B2 (en) | OUTPUT CONTROL DEVICE, OUTPUT CONTROL METHOD, PROGRAM, AND RECORDING MEDIUM | |
JP2006031160A (en) | Graphic object processing method | |
JP2023077248A (en) | Image forming device, control method thereof and program |