JP2017087514A - Image processing device, image processing method, and program - Google Patents

Image processing device, image processing method, and program Download PDF

Info

Publication number
JP2017087514A
JP2017087514A JP2015218796A JP2015218796A JP2017087514A JP 2017087514 A JP2017087514 A JP 2017087514A JP 2015218796 A JP2015218796 A JP 2015218796A JP 2015218796 A JP2015218796 A JP 2015218796A JP 2017087514 A JP2017087514 A JP 2017087514A
Authority
JP
Japan
Prior art keywords
data
image processing
processing apparatus
division
positions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015218796A
Other languages
Japanese (ja)
Inventor
辰昇 鈴木
Tatsunobu Suzuki
辰昇 鈴木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2015218796A priority Critical patent/JP2017087514A/en
Publication of JP2017087514A publication Critical patent/JP2017087514A/en
Pending legal-status Critical Current

Links

Images

Landscapes

  • Record Information Processing For Printing (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

PROBLEM TO BE SOLVED: To provide an image processing device advantageously reducing the number of blocks into which data is divided.SOLUTION: An image processing device for processing an image on the basis of printing data written in a page description language, comprises: creation means for creating intermediate data from print data; first setting means for setting first division positions as positions corresponding to edges of an object, for respective bands in the intermediate data; second setting means for setting second division positions, for areas exceeding a range of block width capable of rendering, out of a plurality of areas divided at the first division positions; and division means for dividing the intermediate data into a plurality of blocks on the basis of the first positions and the second positions. The second setting means determines a plurality of candidates for the block width so that the candidates satisfy the range, and sets the second division positions in a manner that the wider the block width of a candidate is, the higher the priority given to the candidate is.SELECTED DRAWING: Figure 4

Description

本発明は、画像処理装置、画像処理方法、およびプログラムに関する。   The present invention relates to an image processing device, an image processing method, and a program.

ページ記述言語等のベクタ形式のデータをレンダリングすることによって得られたラスタ画像をスプールし、プリンタエンジンで印刷を行う複合機などの画像処理装置が知られている。画像処理装置では、データを複数のブロックに分割し、以降の画像処理をブロック単位で並列に行うことで、画像の印刷を高速に行う方法がある。この方法では、分割された各ブロックのデータをワークバッファに一時的に格納することが必要である。特許文献1には、ラスタライズ後のラスタ形式のデータではなく、当該ラスタ形式のデータよりデータ量が少ないラスタライズ前のベクタ形式のデータを複数のブロックに分割することで、ワークバッファのバッファサイズを低減する方法が提案されている。特許文献1に記載された方法では、ベクタ形式のデータが一定のサイズで複数のブロックに分割される。   2. Description of the Related Art An image processing apparatus such as a multifunction peripheral that spools a raster image obtained by rendering vector format data such as a page description language and performs printing by a printer engine is known. In an image processing apparatus, there is a method of printing an image at a high speed by dividing data into a plurality of blocks and performing subsequent image processing in parallel in units of blocks. In this method, it is necessary to temporarily store the data of each divided block in the work buffer. In Patent Document 1, the buffer size of the work buffer is reduced by dividing the vector format data before rasterization, which has a smaller data amount than the raster format data, into a plurality of blocks instead of the raster format data after rasterization. A method has been proposed. In the method described in Patent Document 1, data in vector format is divided into a plurality of blocks with a constant size.

特開2009−269355号公報JP 2009-269355 A

上記のような画像処理装置では、分割されたブロックごとに、ワークバッファにデータを格納したり読み出したりする処理(ワークバッファへのリード・ライト)が行われる。したがって、画像の印刷をより高速に行うためには、ベクタ形式のデータを分割するブロックの数を減らし、ワークバッファへのリード・ライトに要する時間を低減することが好ましい。   In the image processing apparatus as described above, processing for storing and reading data in the work buffer (reading and writing to the work buffer) is performed for each divided block. Therefore, in order to print an image at a higher speed, it is preferable to reduce the number of blocks into which the vector format data is divided to reduce the time required for reading / writing to the work buffer.

そこで、本発明は、データを分割するブロックの数を低減するために有利な技術を提供することを目的とする。   Therefore, an object of the present invention is to provide an advantageous technique for reducing the number of blocks into which data is divided.

上記目的を達成するために、本発明の一側面としての画像処理装置は、ページ記述言語で記述された印刷データに基づいて画像を処理する画像処理装置であって、前記印刷データから中間データを生成する生成手段と、前記中間データにおける複数のバンドの各々について、オブジェクトのエッジに対応する位置を第1分割位置に設定する第1設定手段と、前記第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域に対して第2分割位置を設定する第2設定手段と、前記第1分割位置および前記第2分割位置に基づいて、前記中間データを複数のブロックに分割する分割手段と、前記複数のブロックの各々に対してレンダリングを行うレンダリング手段と、を含み、前記第2設定手段は、ブロック幅についての複数の候補を前記範囲を満たすように決定し、決定した前記複数の候補のうちブロック幅の広いものから優先的に適用されるように前記第2分割位置を設定する、ことを特徴とする。   In order to achieve the above object, an image processing apparatus according to an aspect of the present invention is an image processing apparatus that processes an image based on print data described in a page description language, wherein intermediate data is obtained from the print data. Generating means for generating, first setting means for setting a position corresponding to the edge of the object as a first divided position for each of the plurality of bands in the intermediate data, and a plurality of areas partitioned by the first divided position A second setting unit that sets a second division position for an area that exceeds the range of the renderable block width, and a plurality of the intermediate data based on the first division position and the second division position. Dividing means for dividing into blocks, and rendering means for rendering each of the plurality of blocks, wherein the second setting means comprises a block And determining the second division position so as to be applied preferentially from the determined plurality of candidates having a wider block width. To do.

本発明の更なる目的又はその他の側面は、以下、添付図面を参照して説明される好ましい実施形態によって明らかにされるであろう。   Further objects and other aspects of the present invention will become apparent from the preferred embodiments described below with reference to the accompanying drawings.

本発明によれば、例えば、データを分割するブロックの数を低減するために有利な技術を提供することができる。   According to the present invention, for example, it is possible to provide an advantageous technique for reducing the number of blocks into which data is divided.

画像処理装置におけるシステム構成例およびハードウェア構成例を示す図である。1 is a diagram illustrating an example of a system configuration and an example of a hardware configuration in an image processing apparatus. 画像処理装置におけるソフトウェア構成例を示す図である。It is a figure which shows the software structural example in an image processing apparatus. 画像処理装置における画像形成処理のフローを示す図である。It is a figure which shows the flow of the image formation process in an image processing apparatus. 画像処理装置におけるレンダリング処理のフローを示す図である。It is a figure which shows the flow of the rendering process in an image processing apparatus. 1ページ分の画像に対してレンダリング処理を行っている様子を示す図である。It is a figure which shows a mode that the rendering process is performed with respect to the image for 1 page. 配列情報を生成する処理のフローを示す図である。It is a figure which shows the flow of the process which produces | generates arrangement | sequence information. スキャンライン数情報を示す図である。It is a figure which shows scan line number information. ブロック幅を決定する処理のフローを示す図である。It is a figure which shows the flow of the process which determines a block width. ブロック順変換処理後にスプールされたスパンデータの一例を示す図である。It is a figure which shows an example of the span data spooled after the block order conversion process. スキャンライン数情報に、フィルのデータサイズをカウントした情報を加えた情報を示す図である。It is a figure which shows the information which added the information which counted the data size of the fill to the number information of scan lines.

以下、添付図面を参照して、本発明の好適な実施の形態について説明する。なお、各図において、同一の部材ないし要素については同一の参照番号を付し、重複する説明は省略する。   DESCRIPTION OF EXEMPLARY EMBODIMENTS Hereinafter, preferred embodiments of the invention will be described with reference to the accompanying drawings. In addition, in each figure, the same reference number is attached | subjected about the same member thru | or element, and the overlapping description is abbreviate | omitted.

<第1実施形態>
本発明に係る第1実施形態の画像処理装置について説明する。図1(a)は、第1実施形態のシステム構成の例を示す図である。本システムでは、ホストコンピュータ101と画像処理装置110とがLAN102を介して接続されている。ユーザは、印刷するページ情報を示すPDL(Page Description Language)データをホストコンピュータ101において生成し、ホストコンピュータ101からLAN102を介して画像処理装置110に送信する。本実施形態における画像処理装置110は、MFP(Multi Function Printer)であっても、SFP(SingleFunction Printer)のうちいずれのプリンタであってもよい。また、画像処理装置110は、MFPやSFP以外のプリンタであってもよい。
<First Embodiment>
An image processing apparatus according to a first embodiment of the present invention will be described. FIG. 1A is a diagram illustrating an example of a system configuration according to the first embodiment. In this system, a host computer 101 and an image processing apparatus 110 are connected via a LAN 102. The user generates PDL (Page Description Language) data indicating page information to be printed in the host computer 101 and transmits the data from the host computer 101 to the image processing apparatus 110 via the LAN 102. The image processing apparatus 110 in this embodiment may be an MFP (Multi Function Printer) or an SFP (Single Function Printer). Further, the image processing apparatus 110 may be a printer other than an MFP or SFP.

[画像処理装置におけるハードウェア構成について]
図1(b)は、第1実施形態の画像処理装置110におけるハードウェア構成例を示す図である。画像処理装置110は、例えば、画像出力デバイスであるプリンタ部111を含む。また、画像処理装置110は、ホストコンピュータ101からLANを介してPDLデータ(ページ記述言語で記述された印刷データ)を取得する。
[Hardware configuration in image processing apparatus]
FIG. 1B is a diagram illustrating a hardware configuration example in the image processing apparatus 110 according to the first embodiment. The image processing apparatus 110 includes, for example, a printer unit 111 that is an image output device. In addition, the image processing apparatus 110 acquires PDL data (print data described in a page description language) from the host computer 101 via the LAN.

プリンタ部111は、デバイスI/F232と接続され、CPU220で生成された画像データをシート(紙)に出力する処理を行う。CPU220は、画像処理装置の全体(各部)を制御するための中央処理部である。RAM222は、CPU220が動作するためのシステムワークメモリである。また、RAM222は、取得したPDLデータや、画像形成処理のために生成される中間データ、レンダリング処理を行う際の作業領域であるワーク領域や、入力された画像データを一時的に格納するためのメモリでもある。ROM221は、例えばブートROMであり、システムのブートプログラムが格納されている。記憶部223は、例えばハードディスクドライブであり、各種処理のためのシステムソフトウェアおよび取得したPDLデータを格納する。   The printer unit 111 is connected to the device I / F 232 and performs a process of outputting the image data generated by the CPU 220 to a sheet (paper). The CPU 220 is a central processing unit for controlling the entire image processing apparatus (each unit). The RAM 222 is a system work memory for the CPU 220 to operate. The RAM 222 temporarily stores acquired PDL data, intermediate data generated for image formation processing, a work area that is a work area for rendering processing, and input image data. It is also memory. The ROM 221 is a boot ROM, for example, and stores a system boot program. The storage unit 223 is, for example, a hard disk drive, and stores system software for various processes and acquired PDL data.

操作部I/F225は、各種メニューや印刷データ情報等を表示するための表示部を有する操作部113に対するインターフェース部であり、操作部113に対して操作画面データを出力する。また、操作部I/F225は、操作部113を介してユーザが入力した情報をCPU220に伝える。ネットワークI/Fは、LAN102を介して外部装置(例えばホストコンピュータ101)との間で情報のやり取りを行うためのインターフェースである。これらCPU220、ROM221、RAM222、記憶部223、操作部I/F225およびネットワークI/Fは、システムバス227に接続されている。   The operation unit I / F 225 is an interface unit for the operation unit 113 having a display unit for displaying various menus, print data information, and the like, and outputs operation screen data to the operation unit 113. The operation unit I / F 225 transmits information input by the user via the operation unit 113 to the CPU 220. The network I / F is an interface for exchanging information with an external device (for example, the host computer 101) via the LAN. The CPU 220, ROM 221, RAM 222, storage unit 223, operation unit I / F 225, and network I / F are connected to a system bus 227.

イメージバスI/F228は、システムバス227と画像データを高速に転送する画像バス230とを接続するためのインターフェースであり、データ構造を変換するバスブリッジである。画像バス230には、RIP(ラスタイメージプロセッサ)231、およびデバイスI/F232が接続されている。RIP231は、CPU220からの指示に基づき、PDLデータコードや中間データ(ディスプレイリスト)を解析し、イメージ展開する。デバイスI/F232は、プリンタ部111にデータを送信するためのインターフェースである。   The image bus I / F 228 is an interface for connecting the system bus 227 and the image bus 230 that transfers image data at high speed, and is a bus bridge that converts a data structure. An RIP (raster image processor) 231 and a device I / F 232 are connected to the image bus 230. The RIP 231 analyzes a PDL data code and intermediate data (display list) based on an instruction from the CPU 220 and develops an image. The device I / F 232 is an interface for transmitting data to the printer unit 111.

[画像処理装置におけるソフトウェア構成について]
次に、画像処理装置110におけるソフトウェア構成について、図2を参照しながら説明する。図2は、第1実施形態の画像処理装置110におけるソフトウェア構成例を示す図である。図2に示すソフトウェアモジュールの各々は、例えば、CPU220がROM221または記憶部223に格納されたプログラムをRAM222に展開して実行することにより実現されうる。
[Software configuration in image processing apparatus]
Next, a software configuration in the image processing apparatus 110 will be described with reference to FIG. FIG. 2 is a diagram illustrating a software configuration example in the image processing apparatus 110 according to the first embodiment. Each of the software modules shown in FIG. 2 can be realized, for example, by the CPU 220 expanding and executing a program stored in the ROM 221 or the storage unit 223 on the RAM 222.

PDLデータ処理部201は、PDLデータから、ページ情報と、ページ情報に含まれるオブジェクト情報とを取得する処理を行い、取得した情報を中間データ生成部202に供給する。中間データ生成部202は、PDLデータ処理部で取得されたページ情報およびオブジェクト情報に基づいて、画像形成に利用するための中間データを生成する。また、画像形成部203は、ブロック順のビットマップ画像を生成するため、ブロック幅算出部206が算出したブロック幅に基づいて、ブロック順変換部205にデータをブロック順に変換させる。そして、画像形成部203は、ブロック順変換メモリ210に、画像形成部203によって利用されるベクタデータ(スパンデータ)を格納する。ブロック画像圧縮・伸長部204は、画像形成部203が生成したブロック単位のビットマップ画像を圧縮する。ブロック順変換部205は、ブロック順変換メモリ210に格納されたベクタデータを、ブロック順のベクタデータに変換し(複数のブロックに分割し)、画像形成部203に供給する。画像形成部203は、ブロック順変換部205で変換されたブロック順のベクタデータに基づいてビットマップ画像を生成することにより、ブロック順のビットマップ画像を生成する。ブロック幅算出部206は、ブロック順変換メモリに格納されたベクタデータに基づいて、ブロック順変換部205で用いられるブロック幅を決定する。   The PDL data processing unit 201 performs processing for acquiring page information and object information included in the page information from the PDL data, and supplies the acquired information to the intermediate data generation unit 202. The intermediate data generation unit 202 generates intermediate data to be used for image formation based on the page information and object information acquired by the PDL data processing unit. In addition, the image forming unit 203 causes the block order conversion unit 205 to convert the data in the block order based on the block width calculated by the block width calculation unit 206 in order to generate a bitmap image in the block order. The image forming unit 203 stores vector data (span data) used by the image forming unit 203 in the block order conversion memory 210. The block image compression / decompression unit 204 compresses the block-unit bitmap image generated by the image forming unit 203. The block order conversion unit 205 converts the vector data stored in the block order conversion memory 210 into vector data in the block order (divides it into a plurality of blocks), and supplies it to the image forming unit 203. The image forming unit 203 generates a bitmap image based on the block order vector data converted by the block order conversion unit 205, thereby generating a block order bitmap image. The block width calculation unit 206 determines the block width used by the block order conversion unit 205 based on the vector data stored in the block order conversion memory.

[本実施形態における用語の定義]
ここで、本実施形態で用いられる用語の定義について説明する。
・エッジとは、ページ内に描画されるオブジェクト同士の境界、またはオブジェクトと背景との境界を示す。即ち、オブジェクトのアウトラインである。
・スパンとは、単一のスキャンラインにおいて、エッジ間で囲まれる閉領域を示す。
・レベルとは、ページ内に描画されるオブジェクト同士の上下関係を示す。各オブジェクトには、互いに異なるレベル番号が割り振られている。
・フィルとは、スパンに対する塗り情報(色データ)を示し、ビットマップデータやシェーディングのように1ピクセルごとに異なる色値をもつフィルや、ベタ塗りのようにスパン内で色値が同じであるフィルがある。つまり、スパンは、スパンに対応するオブジェクトの数だけレベルが存在し、レベルの数だけ互いに異なるフィルが存在する。
・スキャンラインとは、画像形成処理において画像データが連続的にメモリ走査される主走査方向のラインであり、スキャンラインの高さは例えば1ピクセルである。また、複数のスキャンラインを束ねたものを「バンド」という。
[Definition of terms in this embodiment]
Here, definitions of terms used in the present embodiment will be described.
The edge indicates a boundary between objects drawn on the page or a boundary between the object and the background. That is, the outline of the object.
A span indicates a closed area surrounded by edges in a single scan line.
Level refers to the vertical relationship between objects drawn on the page. Each object is assigned a different level number.
・ Fill indicates fill information (color data) for the span, and the color value is the same within the span, such as fill with different color values for each pixel such as bitmap data and shading, and solid fill. There is Phil. That is, a span has levels corresponding to the number of objects corresponding to the span, and there are different fills from each other by the number of levels.
A scan line is a line in the main scanning direction in which image data is continuously scanned in memory in the image forming process, and the height of the scan line is, for example, one pixel. A group of a plurality of scan lines is called a “band”.

また、後述されるフォールバック処理についても説明する。例えば、PDLデータから中間データを生成する際、取得したPDLデータのデータサイズが大きすぎると、全ての中間データを格納するにはメモリ容量が不足する場合がある。このようなメモリ容量の不足を防止するために、フォールバック処理が行われる。   Further, a fallback process to be described later will be described. For example, when generating intermediate data from PDL data, if the data size of the acquired PDL data is too large, the memory capacity may be insufficient to store all the intermediate data. In order to prevent such shortage of memory capacity, fallback processing is performed.

フォールバック処理では、まずCPU220は、PDLデータに含まれる複数のオブジェクトの一部に対応する中間データを作成してメモリに格納し、その中間データに対してビットマップ画像を生成する。次に、CPU220は、このビットマップ画像を生成する際に用いられた中間データをメモリから削除する。また、CPU220は、生成したビットマップ画像に対し、ブロック画像圧縮・伸長部204によりJPEG圧縮などの圧縮処理を行いデータサイズを小さくする。   In the fallback processing, first, the CPU 220 creates intermediate data corresponding to some of the plurality of objects included in the PDL data, stores the intermediate data in the memory, and generates a bitmap image for the intermediate data. Next, the CPU 220 deletes the intermediate data used when generating the bitmap image from the memory. Further, the CPU 220 performs compression processing such as JPEG compression on the generated bitmap image by the block image compression / decompression unit 204 to reduce the data size.

CPU220は、PDLデータに含まれる残りのオブジェクトから、圧縮後のビットマップ画像を背景画像として含む中間データを生成し、生成した中間データをメモリに格納する。そして、CPU220は、メモリに格納された圧縮後のビットマップ画像を背景画像として含む中間データから新たなビットマップ画像を生成する。   The CPU 220 generates intermediate data including the compressed bitmap image as a background image from the remaining objects included in the PDL data, and stores the generated intermediate data in the memory. Then, the CPU 220 generates a new bitmap image from the intermediate data including the compressed bitmap image stored in the memory as a background image.

このようなフォールバック処理を行うか否かは、メモリに格納されている中間データの総量が所定の閾値を超えたか否かによって決定される。即ち、本実施形態では、フォールバック処理は、PDLデータから中間データを生成する際に、メモリに格納された中間データの総サイズが所定の閾値を超えた場合に実行されうる。フォールバック処理は、中間データを格納するメモリ容量の不足に応じて実行されるため、1ページ分のPDLデータからビットマップ画像を生成する場合であっても、複数回実行されうる。このとき、ブロック画像圧縮・伸長部204は、画像形成部203が生成したブロック単位のビットマップ画像を受け取って圧縮するとともに、フォールバック処理で圧縮されたブロック単位の画像を伸長して画像形成部203に受け渡すこととなる。   Whether or not to perform such fallback processing is determined by whether or not the total amount of intermediate data stored in the memory exceeds a predetermined threshold. That is, in the present embodiment, the fallback process can be executed when the total size of the intermediate data stored in the memory exceeds a predetermined threshold when generating the intermediate data from the PDL data. Since the fallback process is executed in response to a shortage of memory capacity for storing intermediate data, it can be executed a plurality of times even when a bitmap image is generated from one page of PDL data. At this time, the block image compressing / decompressing unit 204 receives and compresses the block unit bitmap image generated by the image forming unit 203, and decompresses the block unit image compressed by the fallback processing to generate an image forming unit. It will be handed over to 203.

[画像形成処理について]
次に、第1実施形態の画像処理装置110における画像形成処理について、図3を参照しながら説明する。図3は、第1実施形態の画像処理装置における画像形成処理のフローを示す図である。なお、以下で説明する処理は、CPU220がROM221や記憶部223等に予め格納された制御プログラムをRAM222に読み出して実行することにより実現される。また、以下のフローにおける各工程は、CPU220によって制御されうる。
[Image formation processing]
Next, image forming processing in the image processing apparatus 110 of the first embodiment will be described with reference to FIG. FIG. 3 is a diagram illustrating a flow of image forming processing in the image processing apparatus according to the first embodiment. Note that the processing described below is realized by the CPU 220 reading a control program stored in advance in the ROM 221 or the storage unit 223 into the RAM 222 and executing it. In addition, each step in the following flow can be controlled by the CPU 220.

S301では、CPU220は、ホストコンピュータ101から送信されたPDLデータを記憶部223に格納し、送信されたPDLデータの解析を行う。S302では、CPU220は、解析したPDLデータの情報をもとに、ビットマップ画像の生成のために必要な中間データの生成を行う。S302における中間データの生成は、公知技術が用いられうる。S303では、CPU220は、生成した中間データに基づいて、後述するブロック順変換処理を伴うレンダリング処理を行い、ページ画像を表すビットマップ画像の生成を行う。生成されたビットマップ画像は、ページ画像をブロック順にしたブロック画像データであり、このブロック画像データは、ブロック単位での画像処理が行われうる。   In S301, the CPU 220 stores the PDL data transmitted from the host computer 101 in the storage unit 223, and analyzes the transmitted PDL data. In step S302, the CPU 220 generates intermediate data necessary for generating a bitmap image based on the analyzed PDL data information. A known technique can be used to generate the intermediate data in S302. In S303, the CPU 220 performs a rendering process with a block order conversion process, which will be described later, based on the generated intermediate data, and generates a bitmap image representing a page image. The generated bitmap image is block image data in which page images are arranged in block order, and this block image data can be subjected to image processing in units of blocks.

[レンダリング処理について]
次に、図3のS303の工程における詳細について、図4および図5を参照しながら説明する。図4は、第1実施形態の画像処理装置110におけるレンダリング処理のフローを示す図である。また、図5は、幅384[pixel]、高さ512[pixel]の1ページ分の画像に対してレンダリング処理を行っている様子を示す図である。図5では、3種類のオブジェクト501〜503を描画エリアに含むデータ(PDLデータ500)がホストコンピュータ101から送信された場合を想定する。この場合、PDLデータ500に基づいてS302で生成された中間データ510が、S303のレンダリング処理で扱われる。中間データ510は、データ500の描画エリアに含まれるオブジェクト501〜503のエッジの情報と、エッジ内のフィル情報とを有する。
[About rendering]
Next, details of the step S303 in FIG. 3 will be described with reference to FIGS. FIG. 4 is a diagram illustrating a rendering process flow in the image processing apparatus 110 according to the first embodiment. FIG. 5 is a diagram illustrating a state in which rendering processing is performed on an image for one page having a width of 384 [pixel] and a height of 512 [pixel]. In FIG. 5, it is assumed that data (PDL data 500) including three types of objects 501 to 503 in the drawing area is transmitted from the host computer 101. In this case, the intermediate data 510 generated in S302 based on the PDL data 500 is handled in the rendering process in S303. The intermediate data 510 includes information on the edges of the objects 501 to 503 included in the drawing area of the data 500, and fill information within the edges.

ここで、第1実施形態の画像処理装置110におけるレンダリング処理には、上述したように、S302で生成された中間データを複数のブロックに分割するブロック順変換処理が含まれる。なお、以下で説明する処理は、CPU220がROM221や記憶部223等に予め格納された制御プログラムをRAM222に読み出して実行することにより実現されうる。ここで、本実施形態では、中間データを分割するブロックの幅および高さの初期値が、64[pixel]×64[pixel]に予め設定されているものとする。そして、1つのバンドの高さは64[pixel]であるものとする。   Here, as described above, the rendering process in the image processing apparatus 110 according to the first embodiment includes the block order conversion process for dividing the intermediate data generated in S302 into a plurality of blocks. Note that the processing described below can be realized by the CPU 220 reading a control program stored in advance in the ROM 221 or the storage unit 223 into the RAM 222 and executing it. Here, in the present embodiment, it is assumed that the initial values of the width and height of the block into which the intermediate data is divided are set in advance to 64 [pixel] × 64 [pixel]. The height of one band is assumed to be 64 [pixel].

S401では、CPU220は、S302で生成された中間データに基づいて、スパンデータを生成する。図5では、データ520が、中間データ510に基づいて生成されたスパンデータに対応する。スパンデータは、オブジェクトのエッジで区切られた閉領域(スパン)を示す情報と、スパン内のフィル情報とで構成されうる。ここで、スパンの長さは、例えばピクセル数によって表現される。S401では、先頭スキャンラインから順に、1つのスキャンラインに対応するスパンデータが生成されうる。   In S401, the CPU 220 generates span data based on the intermediate data generated in S302. In FIG. 5, data 520 corresponds to span data generated based on the intermediate data 510. The span data can be composed of information indicating a closed region (span) divided by the edge of the object and fill information within the span. Here, the span length is expressed by the number of pixels, for example. In S401, span data corresponding to one scan line can be generated sequentially from the first scan line.

S402では、CPU220は、S401で生成したスパンデータをブロック順変換メモリ210にスプールする。このとき、CPU220は、スパンデータを、各スパンがノードとなる連結リスト形式にしてスプールする。例えば、CPU220が、図5のデータ520(スパンデータ)における4バンド目の先頭スキャンデータをスプールしたとすると、スプールされたスパンデータは、図9(a)に示すようになる。   In S402, the CPU 220 spools the span data generated in S401 to the block order conversion memory 210. At this time, the CPU 220 spools the span data in a linked list format in which each span is a node. For example, if the CPU 220 spools the head scan data of the fourth band in the data 520 (span data) in FIG. 5, the spooled span data is as shown in FIG.

S403では、CPU220は、1つのバンド高分のスパンデータをブロック順変換メモリ210にスプールしたか否かを判断する。1つのバンド高分のスパンデータをスプールした場合はS404に進み、1つのバンド高分のスパンデータをスプールしていない場合はS401に戻り、S401〜S403の工程を繰り返す。   In S <b> 403, the CPU 220 determines whether span data for one band height has been spooled in the block order conversion memory 210. When the span data for one band height is spooled, the process proceeds to S404, and when the span data for one band height is not spooled, the process returns to S401 and the processes of S401 to S403 are repeated.

S404では、CPU220は、S401で生成したスパンデータに基づいて、中間データを複数のブロックに分割するために用いられる配列情報を、バンドごとに生成する。配列情報とは、オブジェクトのエッジに対応する位置を示す情報のことである。即ち、S404は、中間データにおける複数のバンドの各々について、オブジェクトのエッジに対応する位置を、中間データを分割するための分割位置(第1分割位置)として設定した情報を生成する工程である。CPU220は、例えば、バンド内のスキャンラインごとにスパンのエッジの位置(X座標)を算出し、予め設定された複数の位置(X座標)の各々について、スパンのエッジが配置されるスキャンラインの数をカウントすることにより配列情報を生成する。ここで、バンドは、初期値として予め設定されたブロック高分のスキャンラインを束ねたものであり、複数の位置(X座標)はそれぞれ、例えば、初期値として予め設定されたブロックの幅の倍数である。   In S404, the CPU 220 generates, for each band, array information used to divide the intermediate data into a plurality of blocks based on the span data generated in S401. The array information is information indicating a position corresponding to the edge of the object. That is, S404 is a step of generating information in which a position corresponding to the edge of the object is set as a division position (first division position) for dividing the intermediate data for each of a plurality of bands in the intermediate data. For example, the CPU 220 calculates the position (X coordinate) of the span edge for each scan line in the band, and the scan line in which the span edge is arranged for each of a plurality of preset positions (X coordinate). Sequence information is generated by counting the number. Here, the band is obtained by bundling scan lines for a block height set in advance as an initial value, and each of the plurality of positions (X coordinates) is, for example, a multiple of the block width set in advance as an initial value. It is.

以下に、S404における配列情報を生成する工程の詳細について、図6を参照しながら説明する。図6は、配列情報を生成する処理のフローを示す図である。なお、以下で説明する処理は、CPU220がROM221や記憶部223等に予め格納された制御プログラムをRAM222に読み出して実行することにより実現されうる。   Details of the step of generating sequence information in S404 will be described below with reference to FIG. FIG. 6 is a diagram showing a flow of processing for generating array information. Note that the processing described below can be realized by the CPU 220 reading a control program stored in advance in the ROM 221 or the storage unit 223 into the RAM 222 and executing it.

S601では、CPU220は、スキャンラインにおいて予め設定された複数の位置(座標)と、当該複数の位置にスパンのエッジが配置されるスキャンラインの数との関係を示す情報(以下、スキャンライン数情報と称する)を初期化する。図7(a)は、図5に示すスパンデータ520における2バンド目の初期化されたスキャンライン数情報を示す図である。スキャンライン数情報における複数の位置(座標)は、ページ幅(384[pixel])と、初期値として予め設定されたブロック幅(64[pixel])とに基づいて設定されうる。即ち、当該複数の位置は、それらのピッチが、初期値として予め設定されたブロック幅になるように設定されている。ここで、第1実施形態では、初期値として予め設定されたブロック幅に基づいて当該複数の位置が設定されているが、それに限られるものではない。例えば、レンダリング可能なブロック幅の範囲における最小値に基づいて当該複数の位置が設定されてもよい。即ち、当該複数の位置は、それらのピッチが、レンダリング可能なブロック幅の範囲における最小値になるように設定されてもよい。   In S <b> 601, the CPU 220 displays information indicating the relationship between a plurality of positions (coordinates) set in advance in the scan line and the number of scan lines at which the span edges are arranged at the plurality of positions (hereinafter, scan line number information). Is called). FIG. 7A is a diagram showing the initialized number of scan lines for the second band in the span data 520 shown in FIG. A plurality of positions (coordinates) in the scan line number information can be set based on a page width (384 [pixel]) and a block width (64 [pixel]) preset as an initial value. That is, the plurality of positions are set such that their pitches are set to block widths set in advance as initial values. Here, in the first embodiment, the plurality of positions are set based on a block width set in advance as an initial value, but the present invention is not limited to this. For example, the plurality of positions may be set based on the minimum value in the range of the renderable block width. In other words, the plurality of positions may be set so that their pitches become the minimum value in the range of the renderable block width.

S602では、CPU220は、カレントY座標を示す変数の値を「0」に初期化する。カレントY座標とは、ページの高さ方向におけるバンド内でのスキャンラインの位置を示す座標である。S603では、CPU220は、カレントX座標を示す変数の値を「0」に初期化する。カレントX座標とは、スキャンラインに沿った方向におけるスキャンライン上の位置を示す座標である。S604では、CPU220は、S401で生成したスパンデータを解析する。具体的には、CPU220は、生成したスパンデータにおけるスパン長を取得する。   In S602, the CPU 220 initializes the value of the variable indicating the current Y coordinate to “0”. The current Y coordinate is a coordinate indicating the position of the scan line within the band in the height direction of the page. In S603, the CPU 220 initializes the value of the variable indicating the current X coordinate to “0”. The current X coordinate is a coordinate indicating a position on the scan line in a direction along the scan line. In S604, the CPU 220 analyzes the span data generated in S401. Specifically, the CPU 220 acquires the span length in the generated span data.

S605では、CPU220は、S604で取得したスパン長をカレントX座標に加算し、当該カレントX座標を更新する。S606では、CPU220は、スキャンライン数情報における複数の位置のうち、S605で更新したカレントX座標に対応する位置において、スキャンラインの数に「1」を加算する(スキャンラインの数をインクリメントする)。S607では、CPU220は、カレントX座標がページ幅以上であるか否かを判断する。カレントX座標がページ幅より小さい場合はS604に戻り、カレントX座標がページ幅以上である場合はS608に進む。S608では、CPU220は、カレントY座標に「1」を加算(カレントY座標をインクリメントする)し、カレントY座標を更新する。S609では、CPU220は、カレントY座標がバンド高(即ち、初期値として予め設定されたブロックの高さ)以上であるか否かを判断する。カレントY座標がバンド高より小さい場合はS603に戻り、次のスキャンラインについてS603〜S608の工程を行う。一方、カレントY座標がバンド高以上である場合は終了する。   In S605, the CPU 220 adds the span length acquired in S604 to the current X coordinate, and updates the current X coordinate. In S606, the CPU 220 adds “1” to the number of scan lines (increments the number of scan lines) at the position corresponding to the current X coordinate updated in S605 among the plurality of positions in the scan line number information. . In S607, the CPU 220 determines whether or not the current X coordinate is greater than or equal to the page width. If the current X coordinate is smaller than the page width, the process returns to S604, and if the current X coordinate is greater than or equal to the page width, the process proceeds to S608. In S608, the CPU 220 adds “1” to the current Y coordinate (increments the current Y coordinate), and updates the current Y coordinate. In S609, the CPU 220 determines whether or not the current Y coordinate is equal to or higher than the band height (that is, the height of the block set in advance as an initial value). If the current Y coordinate is smaller than the band height, the process returns to S603, and steps S603 to S608 are performed for the next scan line. On the other hand, if the current Y coordinate is greater than or equal to the band height, the process ends.

図6に示す処理を行うことにより、CPU220は、図7(b)に示すスキャンライン数情報を得ることができる。図7(b)は、図5に示すスパンデータ520における2バンド目のスキャンライン数情報を示している。CPU220は、例えば、スキャンラインの数が閾値以上になるときの所定の位置を、中間データを分割するための分割位置(第1分割位置)として設定することにより、配列情報を得ることができる。即ち、CPU220は、X座標が64、320、384[pixel]の位置が第1分割位置に設定された配列情報を得ることができる。ここで、閾値は、任意に設定されうるが、例えば、エッジが配置されるスキャンラインの数が1つでもある位置(座標)を第1分割位置とする場合には、「1」に設定されうる。   By performing the process shown in FIG. 6, the CPU 220 can obtain the scan line number information shown in FIG. 7B. FIG. 7B shows scan line number information for the second band in the span data 520 shown in FIG. For example, the CPU 220 can obtain array information by setting a predetermined position when the number of scan lines is equal to or greater than a threshold as a division position (first division position) for dividing the intermediate data. That is, the CPU 220 can obtain the array information in which the X coordinate is 64, 320, and the position of 384 [pixel] is set as the first division position. Here, the threshold value can be set arbitrarily. For example, when the position (coordinates) where the number of scan lines on which the edge is arranged is even one is set as the first division position, it is set to “1”. sell.

図4に戻り、S405では、CPU220は、S404で生成された配列情報に基づいて、1つのバンドに対して分割するブロックの幅を決定する。例えば、CPU220は、配列情報に基づいて、第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域を分割するための第2分割位置を決定する。このとき、CPU220は、当該範囲を満たすブロック幅についての複数の候補を決定し、決定した前記複数の候補のうちブロック幅の広いものから優先的に適用されるように第2分割位置を決定する。   Returning to FIG. 4, in S <b> 405, the CPU 220 determines the width of a block to be divided for one band based on the array information generated in S <b> 404. For example, based on the arrangement information, the CPU 220 determines a second division position for dividing an area exceeding the range of the renderable block width among a plurality of areas divided at the first division position. At this time, the CPU 220 determines a plurality of candidates for the block width satisfying the range, and determines the second division position so as to be applied preferentially from the determined plurality of candidates having a larger block width. .

以下に、S405におけるブロック幅を決定する工程の詳細について、図8を参照しながら説明する。図8は、ブロック幅を決定する処理のフローを示す図である。なお、以下で説明する処理は、CPU220がROM221や記憶部223等に予め格納された制御プログラムをRAM222に読み出して実行することにより実現されうる。   Details of the step of determining the block width in S405 will be described below with reference to FIG. FIG. 8 is a diagram showing a flow of processing for determining the block width. Note that the processing described below can be realized by the CPU 220 reading a control program stored in advance in the ROM 221 or the storage unit 223 into the RAM 222 and executing it.

S801では、CPU220は、レンダリング可能なブロック幅の範囲を満たすブロック幅についての複数の候補を決定する。このとき、CPU220は、第1幅と、第1幅の整数倍である第2幅とを含むように、ブロック幅についての複数の候補を決定するとよい。   In step S <b> 801, the CPU 220 determines a plurality of candidates for a block width that satisfies a range of renderable block widths. At this time, the CPU 220 may determine a plurality of candidates for the block width so as to include the first width and the second width that is an integer multiple of the first width.

レンダリング可能なブロック幅の範囲における最小値は、例えば、ブロック画像圧縮・伸長部204が処理可能な最小値である。ブロック画像圧縮・伸長部204によりJPEG(Joint Photographic Experts Group)圧縮が実行される場合、画像が8[pixel]×8[pixel]のブロックに分割され、ブロックごとに変換処理が実行される。即ち、この場合、レンダリング可能なブロック幅の範囲における最小値は8[pixel]となる。   The minimum value in the range of the renderable block width is, for example, the minimum value that can be processed by the block image compression / decompression unit 204. When JPEG (Joint Photographic Experts Group) compression is executed by the block image compression / decompression unit 204, an image is divided into 8 [pixel] × 8 [pixel] blocks, and conversion processing is executed for each block. That is, in this case, the minimum value in the range of the renderable block width is 8 [pixel].

また、レンダリング可能なブロック幅の範囲における最大値は、例えば、ブロック画像圧縮・伸長部204が処理可能な最大値であり、ブロック画像圧縮・伸長部204での処理負荷と内部メモリの総量および空き容量とから決定されうる。例えば、ブロック画像圧縮・伸長部204の内部メモリの総量が32KByte(128[pixel]×64[pixel]の非圧縮CMYK画像に相当)であるとする。この場合、前述のフォールバック処理が発生しない時、レンダリング可能なブロック幅の範囲における最大値は128[pixel]となる。したがって、レンダリング可能なブロック幅の範囲は8〜128[pixel]の範囲となり、CPU220は、初期値とした予め設定されたブロック幅の整数倍である64[pixel]および128[pixel]をブロック幅についての候補として決定する。   Further, the maximum value in the range of the block width that can be rendered is, for example, the maximum value that can be processed by the block image compression / decompression unit 204, the processing load in the block image compression / decompression unit 204, the total amount of internal memory, and the free space It can be determined from the capacity. For example, it is assumed that the total amount of internal memory of the block image compression / decompression unit 204 is 32 Kbytes (corresponding to an uncompressed CMYK image of 128 [pixel] × 64 [pixel]). In this case, when the above-described fallback processing does not occur, the maximum value in the range of renderable block width is 128 [pixel]. Accordingly, the range of the block width that can be rendered is in the range of 8 to 128 [pixel], and the CPU 220 sets the block width to 64 [pixel] and 128 [pixel] that are integer multiples of the preset block width as the initial value. Determine as a candidate for.

S802では、CPU220は、カレントX座標を示す変数の値を「0」に初期化する。S803では、CPU220は、ブロック幅を決定する対象のバンド(以下、対象バンドと称する)について、S404で生成された配列情報を取得する(読み込む)。   In S802, the CPU 220 initializes the value of the variable indicating the current X coordinate to “0”. In step S803, the CPU 220 acquires (reads) the array information generated in step S404 for a target band for determining a block width (hereinafter referred to as a target band).

S804では、CPU220は、S803で取得した配列情報とS801で決定したブロック幅の候補とに基づいて、中間データを複数のブロックに分割するための分割位置を決定する。例えば、CPU220は、対象バンドをスキャンしていき、第1分割位置が現れた場合にはS805に進む。一方、CPU220は、対象バンドをスキャンしていき、レンダリング可能なブロック幅の範囲を超えても第1分割位置が現れない場合、S801で決定された複数の候補のうちブロック幅の広いものから優先的に適用されるように第2分割位置を決定する。即ち、CPU220は、第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域に対し、S801で決定された複数の候補のうちブロック幅の広いものから優先的に適用されるように第2分割位置を決定する。CPU220は、第2分割位置を決定したらS805に進む。   In S804, the CPU 220 determines a division position for dividing the intermediate data into a plurality of blocks based on the arrangement information acquired in S803 and the block width candidates determined in S801. For example, the CPU 220 scans the target band and proceeds to S805 if the first division position appears. On the other hand, if the CPU 220 scans the target band and the first division position does not appear even when the block width range that can be rendered is exceeded, priority is given to the candidate having the larger block width among the plurality of candidates determined in S801. The second division position is determined so as to be applied. That is, the CPU 220 preferentially selects a plurality of candidates determined in step S801 from those having a larger block width with respect to a region exceeding the range of the renderable block width among the plurality of regions divided at the first division position. 2nd division position is determined so that it may be applied. After determining the second division position, the CPU 220 proceeds to S805.

S805では、CPU220は、カレントX座標を更新する。S806では、CPU220は、カレントX座標がページ幅以上であるか否かを判断する。カレントX座標がページ幅より小さい場合はS803に戻り、カレントX座標がページ幅以上である場合は終了する。このような処理を経て分割位置をバンドごとに決定することにより、図5のデータ550に示すように、初期値として予め設定されたブロック幅のみで中間データを分割すること(データ503)に比べて分割ブロック数を低減することができる。図5のデータ550は、第1実施形態の画像処理装置110において決定された中間データにおける分割位置を示す図であり、図5のデータ550において、白丸(○)が分割位置(第1分割位置または第2分割位置)に対応する。   In S805, the CPU 220 updates the current X coordinate. In S806, the CPU 220 determines whether or not the current X coordinate is equal to or greater than the page width. If the current X coordinate is smaller than the page width, the process returns to S803, and if the current X coordinate is greater than or equal to the page width, the process ends. By determining the division position for each band through such processing, as shown in the data 550 in FIG. 5, as compared with dividing the intermediate data only with the block width set in advance as an initial value (data 503). Thus, the number of divided blocks can be reduced. Data 550 in FIG. 5 is a diagram showing a division position in the intermediate data determined in the image processing apparatus 110 of the first embodiment. In the data 550 in FIG. 5, white circles (◯) are division positions (first division positions). Or the second division position).

図4に戻り、S406では、CPU220は、S402でスプールされた1つのバンド高分のスパンデータを読み込む。S407では、CPU220は、第1分割位置および第2分割位置に基づいて、S406で読み込まれたスパンデータ(中間データ)を複数のブロックに分割する、いわゆるブロック順変換処理を行う。ブロック順変換処理後にスプールされたスパンデータの一例を図5および図9を参照しながら説明する。図5におけるデータ520における4バンド目(図9(a))のスプールされたスパンデータは、ブロック順変換処理後、図9(a)のSpan3が、図9(c)のSpan3とSpan4とに分割されてスプールされる。そして、S403までの処理はページ内のスキャンラインごとに行われるが、S408以降の処理はブロック内のスキャンラインごとに行われる。   Returning to FIG. 4, in S406, the CPU 220 reads the span data for one band height spooled in S402. In S407, the CPU 220 performs a so-called block order conversion process in which the span data (intermediate data) read in S406 is divided into a plurality of blocks based on the first division position and the second division position. An example of span data spooled after the block order conversion process will be described with reference to FIGS. The spooled span data of the fourth band (FIG. 9A) in the data 520 in FIG. 5 is converted to Span3 in FIG. 9C and Span3 and Span4 in FIG. Divided and spooled. The processing up to S403 is performed for each scan line in the page, but the processing after S408 is performed for each scan line in the block.

S408では、CPU220は、S407で分割された各ブロックに対してレンダリング処理を行う。レンダリング処理は、例えば、S408−1のフィル処理と、S408−2のコンポジット処理を含みうる。フィル処理(S408−1)では、CPU220は、分割された各ブロックにおけるスパンに対し、スパン内に存在するフィル情報が指定する色を生成する。コンポジット処理(S408−2)では、CPU220は、フィル処理で生成した色の合成処理を行う。   In S408, the CPU 220 performs a rendering process on each block divided in S407. The rendering process can include, for example, a fill process in S408-1 and a composite process in S408-2. In the fill process (S408-1), the CPU 220 generates a color specified by the fill information existing in the span for each of the divided blocks. In the composite process (S408-2), the CPU 220 performs a composition process for the color generated by the fill process.

S409では、CPU220は、ブロック内における全てのスパンに対してレンダリング処理を行ったか否かを判断する。ブロック内における全てのスパンに対してレンダリング処理を行った場合はS410に進み、レンダリング処理を行っていないスパンがある場合はS406に戻る。S410では、CPU220は、バンド内における全てのブロックに対してレンダリング処理を行ったか否かを判断する。バンド内における全てのブロックに対してレンダリング処理を行った場合はS411に進み、レンダリング処理を行っていないブロックがある場合はS405に戻る。S411では、CPU220は、ページ内における全てのバンドに対してレンダリング処理を行ったか否かを判断する。ページ内における全てのバンドに対してレンダリング処理を行った場合は終了し、レンダリング処理を行っていないバンドがある場合はS401に戻る。   In step S409, the CPU 220 determines whether rendering processing has been performed for all spans in the block. If rendering processing has been performed for all spans in the block, the process proceeds to S410. If there is a span for which rendering processing has not been performed, the process returns to S406. In S410, the CPU 220 determines whether or not rendering processing has been performed on all blocks in the band. If rendering processing has been performed on all blocks in the band, the process proceeds to S411, and if there is a block that has not been subjected to rendering processing, the process returns to S405. In S411, the CPU 220 determines whether or not rendering processing has been performed for all the bands in the page. If the rendering process has been performed on all the bands in the page, the process ends. If there is a band that has not been subjected to the rendering process, the process returns to S401.

上述したような処理を行うことにより、第1実施形態の画像処理装置110は、分割ブロック数が低減されるように分割位置を決定することができる。これにより、第1実施形態の画像処理装置110は、従来の処理に比べて、分割されるブロック数を低減することができる。即ち、レンダリング処理を各ブロックに対して行う際、分割されたブロックごとに行われるワークバッファへのリード・ライトに要するトータルの時間を低減し、画像をより高速に印刷することが可能となる。   By performing the processing as described above, the image processing apparatus 110 according to the first embodiment can determine the division position so that the number of division blocks is reduced. Thereby, the image processing apparatus 110 of 1st Embodiment can reduce the number of blocks divided | segmented compared with the conventional process. That is, when rendering processing is performed on each block, it is possible to reduce the total time required for reading and writing to the work buffer performed for each divided block, and to print an image at a higher speed.

ここで、上述した処理を行ったときの効果について、図5および図9を参照しながら説明する。図5におけるスパンデータ520の分岐のうち左側は、従来の処理を行うことにより複数のブロックに分割されたスパンデータ530およびランレングスデータ540を示している。また、当該分岐のうち右側は、本実施形態の処理を行うことにより複数のブロックに分割されたスパンデータ550およびランレングスデータ560を示している。従来の処理では、ブロック幅を一定として中間データが複数のブロックに分割されているのに対し、本実施形態の処理では、複数のブロックにおけるブロック幅が互いに異なり、ブロック数が低減されている。例えば、4バンド目のスパンデータ(図9(a))は、従来の処理では、図9(b)に示すように6個のブロックに分割されるのに対し、本実施形態の処理では、図9(c)に示すように4個のブロックに分割される。   Here, the effect when the above-described processing is performed will be described with reference to FIGS. 5 and 9. The left side of the branch of the span data 520 in FIG. 5 shows the span data 530 and the run length data 540 divided into a plurality of blocks by performing conventional processing. The right side of the branch shows span data 550 and run-length data 560 that are divided into a plurality of blocks by performing the processing of this embodiment. In the conventional process, the intermediate data is divided into a plurality of blocks with a constant block width, whereas in the process of the present embodiment, the block widths of the plurality of blocks are different from each other, and the number of blocks is reduced. For example, the span data of the fourth band (FIG. 9A) is divided into 6 blocks as shown in FIG. 9B in the conventional processing, whereas in the processing of this embodiment, As shown in FIG. 9C, the block is divided into four blocks.

例えば、1つのスパンにつき描画範囲(ピクセル数)の指定に8[byte]、色値(色合成やグラデーションの指定も含む)に8[byte]が必要であるとする。この場合、1つのスパンの分割につき少なくとも16[byte]の読み出し(リード)と書き出し(ライト)がブロックごとに発生することになる。これを、印刷解像度が1200dpiのA4サイズ(幅210mm、高さ297mm)の画像(9921[pixel]×14048[pixel])に対してレンダリング処理を行うこととする。そして、従来の処理では、1つのバンドにつき155個のブロックに分割されるのに対し、本実施形態の処理では、78個のブロックに分割されるものとする。この場合、従来の処理ではページ全体で約3.5[Mbyte]必要であったデータのリード・ライトを、本実施形態の処理を適用することにより、約1.8「Mbyte」に低減することができる。画像処理装置110が100ppm(page/minutes)の処理速度を要求される場合、従来の処理ではデータのリード・ライトに少なくとも約3.5[Mbyte/sec]の転送帯域が必要になる。それ対し、本実施形態の処理では約1.8[Mbyte/sec]となり、大幅に転送帯域を低減することができる。   For example, it is assumed that 8 [bytes] are required for designating a drawing range (number of pixels) and 8 [bytes] are required for color values (including color composition and gradation specification) for one span. In this case, at least 16 [bytes] of reading (reading) and writing (writing) occur for each block in one span division. It is assumed that a rendering process is performed on an image (9921 [pixel] × 14048 [pixel]) of an A4 size (width 210 mm, height 297 mm) having a print resolution of 1200 dpi. In the conventional process, it is divided into 155 blocks per band, whereas in the process of the present embodiment, it is divided into 78 blocks. In this case, the read / write of data, which required about 3.5 [Mbyte] for the entire page in the conventional processing, is reduced to about 1.8 “Mbyte” by applying the processing of this embodiment. Can do. When the image processing apparatus 110 is required to have a processing speed of 100 ppm (page / minutes), the conventional processing requires a transfer band of at least about 3.5 [Mbyte / sec] for reading and writing data. On the other hand, in the processing of the present embodiment, it is about 1.8 [Mbyte / sec], and the transfer band can be greatly reduced.

<第2実施形態>
第1実施形態では、スパンのエッジが配置されるスキャンラインの数の情報に基づいてブロック幅を決定する方法について説明した。第2実施形態では、スパンのエッジが配置されるスキャンラインの数の情報だけでなく、スパンデータに含まれるフィル(色データ)の情報にも基づいて、ブロック幅を決定する方法について説明する。ここで、第2実施形態の画像処理装置およびソフトウェア構成は、第1実施形態の画像処理装置110およびソフトウェア構成と同様であるため、ここでは説明を省略する。また、第2実施形態の画像処理装置は、図3、図4、図6、図8に示すフローチャートに従って画像形成処理を行う。以下では、第1実施形態の画像処理装置110における処理と異なる工程(図6のS604、S606、および図8のS804)について説明する。
Second Embodiment
In the first embodiment, the method for determining the block width based on the information on the number of scan lines in which the edges of the span are arranged has been described. In the second embodiment, a method of determining a block width based on not only information on the number of scan lines on which span edges are arranged but also information on fill (color data) included in span data will be described. Here, since the image processing apparatus and software configuration of the second embodiment are the same as the image processing apparatus 110 and software configuration of the first embodiment, description thereof is omitted here. The image processing apparatus according to the second embodiment performs image forming processing according to the flowcharts shown in FIGS. 3, 4, 6, and 8. Hereinafter, steps different from the processing in the image processing apparatus 110 of the first embodiment (S604, S606 in FIG. 6 and S804 in FIG. 8) will be described.

図6のS604では、CPU220は、S401で生成したスパンデータを解析する。具体的には、CPU220は、生成したスパンデータにおけるスパン長に加えて、フィルのデータサイズの情報も取得する。図6のS606では、CPU220は、スキャンライン数情報において設定された複数の位置のうち、S605で更新したカレントX座標に対応する位置において、スキャンラインの数に「1」を加算する(スキャンラインの数をインクリメントする)。また、CPU220は、スキャンライン数情報において設定された複数の位置の間において、フィルのデータサイズをカウントする。図10は、図5に示すスパンデータ520における5バンド目のスキャンライン数情報に、フィルのデータサイズをカウントした情報を加えた情報を示す図である。図10に示す情報では、128[pixel]、192[pixel]および256[pixel]の位置に対して、分割するフィルデータサイズが「8」にカウントされている。即ち、図10に示す情報は、64から128[pixel]の間、128から192[picel]の間、および192から256[pixel]の間をそれぞれ8つに分割する必要があることを示している。   In S604 of FIG. 6, the CPU 220 analyzes the span data generated in S401. Specifically, the CPU 220 acquires information on the fill data size in addition to the span length in the generated span data. In S606 of FIG. 6, the CPU 220 adds “1” to the number of scan lines at the position corresponding to the current X coordinate updated in S605 among the plurality of positions set in the scan line number information (scan line). Increment the number). The CPU 220 counts the fill data size between a plurality of positions set in the scan line number information. FIG. 10 is a diagram illustrating information obtained by adding information obtained by counting the fill data size to the scan line number information of the fifth band in the span data 520 illustrated in FIG. 5. In the information illustrated in FIG. 10, the fill data size to be divided is counted as “8” with respect to the positions of 128 [pixel], 192 [pixel], and 256 [pixel]. That is, the information shown in FIG. 10 indicates that it is necessary to divide the area between 64 and 128 [pixel], between 128 and 192 [pixel], and between 192 and 256 [pixel], respectively. Yes.

図8のS804では、CPU220は、S803で取得した配列情報とS801で決定したブロック幅の候補とに基づいて、中間データを複数のブロックに分割するための分割位置を決定する。例えば、図10に示す情報において、64[pixel]の位置と128[pixel]の位置とでは、スキャンラインの数がともに64である。しかしながら、64[pixel]の位置では、分割するフィルデータサイズのカウント値が「0」であり、128[pixel]の位置では、分割するフィルデータサイズのカウント値が「8」である。即ち、スパンデータを複数のブロックに分割する工程(S407)の後に、64から128[pixel]の間を更に8つに分割する必要がある。そのため、フィルデータに基づいた分割での処理負荷を低減させるには、フィルのデータサイズのカウント値が変化する64[pixel]の位置を分割位置に設定することが好ましい(64[pixel]の位置では、第1分割位置として既に設定されている)。また、256[pixel]の位置では、分割するフィルデータサイズのカウント値が「8」であり、320[picel]の位置では、分割するフィルデータサイズのカウント値が「0」である。したがって、フィルのデータサイズのカウント値が変化する256[pixel]の位置を分割位置(第2分割位置)に設定することが好ましい。   In S804 of FIG. 8, the CPU 220 determines a division position for dividing the intermediate data into a plurality of blocks based on the arrangement information acquired in S803 and the block width candidates determined in S801. For example, in the information shown in FIG. 10, the number of scan lines is 64 at the position of 64 [pixel] and the position of 128 [pixel]. However, the count value of the fill data size to be divided is “0” at the position of 64 [pixel], and the count value of the fill data size to be divided is “8” at the position of 128 [pixel]. That is, after the step of dividing span data into a plurality of blocks (S407), it is necessary to further divide the range from 64 to 128 [pixel] into eight. Therefore, in order to reduce the processing load in division based on fill data, it is preferable to set the position of 64 [pixel] where the count value of the fill data size changes as the division position (position of 64 [pixel]). Then, it has already been set as the first division position). Further, the count value of the fill data size to be divided is “8” at the position of 256 [pixel], and the count value of the fill data size to be divided is “0” at the position of 320 [pixel]. Therefore, it is preferable to set the position of 256 [pixel] where the count value of the fill data size changes as the division position (second division position).

<その他の実施例>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
<Other examples>
The present invention supplies a program that realizes one or more functions of the above-described embodiments to a system or apparatus via a network or a storage medium, and one or more processors in a computer of the system or apparatus read and execute the program This process can be realized. It can also be realized by a circuit (for example, ASIC) that realizes one or more functions.

以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されないことはいうまでもなく、その要旨の範囲内で種々の変形および変更が可能である。   As mentioned above, although preferred embodiment of this invention was described, it cannot be overemphasized that this invention is not limited to these embodiment, A various deformation | transformation and change are possible within the range of the summary.

101:ホストコンピュータ、110:画像処理装置、220:CPU、221:ROM、222:RAM、223:記憶部 101: Host computer, 110: Image processing device, 220: CPU, 221: ROM, 222: RAM, 223: Storage unit

Claims (11)

ページ記述言語で記述された印刷データに基づいて画像を処理する画像処理装置であって、
前記印刷データから中間データを生成する生成手段と、
前記中間データにおける複数のバンドの各々について、オブジェクトのエッジに対応する位置を第1分割位置に設定する第1設定手段と、
前記第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域に対して第2分割位置を設定する第2設定手段と、
前記第1分割位置および前記第2分割位置に基づいて、前記中間データを複数のブロックに分割する分割手段と、
前記複数のブロックの各々に対してレンダリングを行うレンダリング手段と、
を含み、
前記第2設定手段は、ブロック幅についての複数の候補を前記範囲を満たすように決定し、決定した前記複数の候補のうちブロック幅の広いものから優先的に適用されるように前記第2分割位置を設定する、ことを特徴とする画像処理装置。
An image processing apparatus that processes an image based on print data described in a page description language,
Generating means for generating intermediate data from the print data;
First setting means for setting a position corresponding to an edge of the object as a first divided position for each of the plurality of bands in the intermediate data;
Second setting means for setting a second division position for an area that exceeds a range of a renderable block width among a plurality of areas divided by the first division position;
Division means for dividing the intermediate data into a plurality of blocks based on the first division position and the second division position;
Rendering means for rendering each of the plurality of blocks;
Including
The second setting means determines a plurality of candidates for a block width so as to satisfy the range, and applies the second division so as to be applied with priority from the determined plurality of candidates having a larger block width. An image processing apparatus characterized by setting a position.
前記第2設定手段は、第1幅と、前記第1幅の整数倍の幅を有する第2幅とを含むように前記複数の候補を決定する、ことを特徴とする請求項1に記載の画像処理装置。   The said 2nd setting means determines the said several candidate so that the 2nd width | variety which has a 1st width | variety and the width | variety of the said 1st integral multiple may be included. Image processing device. 前記第1幅は、前記中間データを分割するために予め設定されたブロック幅である、ことを特徴とする請求項2に記載の画像処理装置。   The image processing apparatus according to claim 2, wherein the first width is a block width set in advance to divide the intermediate data. 前記複数のバンドの各々は、複数のスキャンラインを含む、ことを特徴とする請求項1乃至3のうちいずれか1項に記載の画像処理装置。   The image processing apparatus according to claim 1, wherein each of the plurality of bands includes a plurality of scan lines. 前記第1設定手段は、スキャンラインに沿って設定された複数の位置の各々について、1つのバンドの各スキャンラインにおける前記エッジが位置する数をカウントし、前記複数の位置のうちカウントされた数が閾値以上である位置を前記1つのバンドについての前記第1分割位置に設定する、ことを特徴とする請求項4に記載の画像処理装置。   The first setting means counts the number of positions of the edge in each scan line of one band for each of a plurality of positions set along the scan line, and the counted number of the plurality of positions. The image processing apparatus according to claim 4, wherein a position where is equal to or greater than a threshold is set as the first division position for the one band. 前記第2設定手段は、スキャンラインに沿って設定された複数の位置の各々について色データのデータサイズをカウントし、前記複数の位置のうち、色データのデータサイズのカウント値が変化する位置を前記第2分割位置に決定する、ことを特徴とする請求項4又は5に記載の画像処理装置。   The second setting means counts the data size of the color data for each of a plurality of positions set along the scan line, and selects a position where the count value of the data size of the color data changes among the plurality of positions. The image processing apparatus according to claim 4, wherein the second division position is determined. 前記複数の位置は、それらのピッチが、前記中間データを分割するために予め設定されたブロック幅になるように設定されている、ことを特徴とする請求項5又は6に記載の画像処理装置。   The image processing apparatus according to claim 5, wherein the plurality of positions are set such that their pitches have a block width set in advance to divide the intermediate data. . 前記複数の位置は、それらのピッチが前記範囲における最小値になるように設定されている、ことを特徴とする請求項5又は6に記載の画像処理装置。   The image processing apparatus according to claim 5, wherein the plurality of positions are set such that their pitches become a minimum value in the range. 前記生成手段は、前記印刷データからベクタ形式の前記中間データを生成する、ことを特徴とする請求項1乃至8のうちいずれか1項に記載の画像処理装置。   The image processing apparatus according to claim 1, wherein the generation unit generates the intermediate data in a vector format from the print data. ページ記述言語で記述された印刷データに基づいて画像を処理する画像処理方法であって、
生成手段が、前記印刷データから中間データを生成する生成工程と、
第1設定手段が、前記中間データにおける複数のバンドの各々について、オブジェクトのエッジに対応する位置を第1分割位置に設定する第1設定工程と、
第2設定手段が、前記第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域に対して第2分割位置を設定する第2設定工程と、
分割手段が、前記第1分割位置および前記第2分割位置に基づいて、前記中間データを複数のブロックに分割する分割工程と、
レンダリング手段が、前記複数のブロックの各々に対してレンダリングを行うレンダリング工程と、
を含み、
前記第2設定工程では、ブロック幅についての複数の候補を前記範囲を満たすように決定し、決定した前記複数の候補のうちブロック幅の広いものから優先的に適用されるように前記第2分割位置を設定する、ことを特徴とする画像処理方法。
An image processing method for processing an image based on print data described in a page description language,
A generating step for generating intermediate data from the print data;
A first setting step in which a first setting unit sets a position corresponding to an edge of the object as a first divided position for each of the plurality of bands in the intermediate data;
A second setting step in which a second setting means sets a second division position for an area exceeding a renderable block width range among the plurality of areas divided by the first division position;
A dividing step of dividing the intermediate data into a plurality of blocks based on the first dividing position and the second dividing position;
A rendering step in which rendering means renders each of the plurality of blocks;
Including
In the second setting step, a plurality of candidates for the block width are determined so as to satisfy the range, and the second division is performed so as to be applied preferentially from the determined candidates having a larger block width. An image processing method characterized by setting a position.
請求項10に記載の画像処理方法の各工程をコンピュータに実行させるためのプログラム。   The program for making a computer perform each process of the image processing method of Claim 10.
JP2015218796A 2015-11-06 2015-11-06 Image processing device, image processing method, and program Pending JP2017087514A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015218796A JP2017087514A (en) 2015-11-06 2015-11-06 Image processing device, image processing method, and program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015218796A JP2017087514A (en) 2015-11-06 2015-11-06 Image processing device, image processing method, and program

Publications (1)

Publication Number Publication Date
JP2017087514A true JP2017087514A (en) 2017-05-25

Family

ID=58769842

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015218796A Pending JP2017087514A (en) 2015-11-06 2015-11-06 Image processing device, image processing method, and program

Country Status (1)

Country Link
JP (1) JP2017087514A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019010817A (en) * 2017-06-30 2019-01-24 キヤノン株式会社 Image processing apparatus, image processing method, and program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019010817A (en) * 2017-06-30 2019-01-24 キヤノン株式会社 Image processing apparatus, image processing method, and program

Similar Documents

Publication Publication Date Title
US8842325B2 (en) Image processing apparatus, control method thereof, and storage medium
JP6029344B2 (en) Image processing apparatus, image processing method, and program
US8855438B2 (en) Image processing apparatus, image processing method of image processing apparatus, and program
JP5538792B2 (en) Image processing apparatus, control method thereof, and program
US10762401B2 (en) Image processing apparatus controlling the order of storing decompressed data, and method thereof
US10929727B2 (en) Image processing apparatus with color replacement with achromatic colors, and image processing method and storage medium thereof
US8654147B2 (en) Apparatus for generating raster images, raster image generating method, and storage medium
US9600747B2 (en) Image forming apparatus and control method that execute a plurality of rendering processing units in parallel
JP2017024321A (en) Image processor, image formation device, and image processing time prediction method and program
US9716810B2 (en) Image processing apparatus configured to perform smoothing based on analysis of PDL data, and storage medium storing program therefor
JP5020998B2 (en) Image processing apparatus and image processing method
JP2017087514A (en) Image processing device, image processing method, and program
JP6904717B2 (en) Image processing equipment, its control method, and programs
CN107203354B (en) Image processing apparatus and control method thereof
JP6741463B2 (en) Image processing apparatus, image processing method, and program
JP2014194635A (en) Image forming apparatus, image forming method, and program
JP6544905B2 (en) Image processing apparatus, image processing method, program
JP2011139162A (en) Image encoding device, control method, and program
US8437046B2 (en) Image processing apparatus and method for outputting an image subjected to pseudo-halftone processing
JP2016206934A (en) Image processing device, image processing method and program
JP6809158B2 (en) Image processing equipment and programs
JP2019211963A (en) Information processing apparatus, information processing method, and program
JP2019077133A (en) Image formation apparatus, image formation method and program
JP2011172152A (en) Image processing apparatus and method, and program
JP2017212601A (en) Image processing device, image processing method, program, and data