JP2017087514A - Image processing device, image processing method, and program - Google Patents
Image processing device, image processing method, and program Download PDFInfo
- 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
Links
Images
Landscapes
- Record Information Processing For Printing (AREA)
- Editing Of Facsimile Originals (AREA)
Abstract
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
上記のような画像処理装置では、分割されたブロックごとに、ワークバッファにデータを格納したり読み出したりする処理(ワークバッファへのリード・ライト)が行われる。したがって、画像の印刷をより高速に行うためには、ベクタ形式のデータを分割するブロックの数を減らし、ワークバッファへのリード・ライトに要する時間を低減することが好ましい。 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.
以下、添付図面を参照して、本発明の好適な実施の形態について説明する。なお、各図において、同一の部材ないし要素については同一の参照番号を付し、重複する説明は省略する。 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
[画像処理装置におけるハードウェア構成について]
図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
プリンタ部111は、デバイスI/F232と接続され、CPU220で生成された画像データをシート(紙)に出力する処理を行う。CPU220は、画像処理装置の全体(各部)を制御するための中央処理部である。RAM222は、CPU220が動作するためのシステムワークメモリである。また、RAM222は、取得したPDLデータや、画像形成処理のために生成される中間データ、レンダリング処理を行う際の作業領域であるワーク領域や、入力された画像データを一時的に格納するためのメモリでもある。ROM221は、例えばブートROMであり、システムのブートプログラムが格納されている。記憶部223は、例えばハードディスクドライブであり、各種処理のためのシステムソフトウェアおよび取得したPDLデータを格納する。
The
操作部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 /
イメージバス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
[画像処理装置におけるソフトウェア構成について]
次に、画像処理装置110におけるソフトウェア構成について、図2を参照しながら説明する。図2は、第1実施形態の画像処理装置110におけるソフトウェア構成例を示す図である。図2に示すソフトウェアモジュールの各々は、例えば、CPU220がROM221または記憶部223に格納されたプログラムをRAM222に展開して実行することにより実現されうる。
[Software configuration in image processing apparatus]
Next, a software configuration in the
PDLデータ処理部201は、PDLデータから、ページ情報と、ページ情報に含まれるオブジェクト情報とを取得する処理を行い、取得した情報を中間データ生成部202に供給する。中間データ生成部202は、PDLデータ処理部で取得されたページ情報およびオブジェクト情報に基づいて、画像形成に利用するための中間データを生成する。また、画像形成部203は、ブロック順のビットマップ画像を生成するため、ブロック幅算出部206が算出したブロック幅に基づいて、ブロック順変換部205にデータをブロック順に変換させる。そして、画像形成部203は、ブロック順変換メモリ210に、画像形成部203によって利用されるベクタデータ(スパンデータ)を格納する。ブロック画像圧縮・伸長部204は、画像形成部203が生成したブロック単位のビットマップ画像を圧縮する。ブロック順変換部205は、ブロック順変換メモリ210に格納されたベクタデータを、ブロック順のベクタデータに変換し(複数のブロックに分割し)、画像形成部203に供給する。画像形成部203は、ブロック順変換部205で変換されたブロック順のベクタデータに基づいてビットマップ画像を生成することにより、ブロック順のビットマップ画像を生成する。ブロック幅算出部206は、ブロック順変換メモリに格納されたベクタデータに基づいて、ブロック順変換部205で用いられるブロック幅を決定する。
The PDL
[本実施形態における用語の定義]
ここで、本実施形態で用いられる用語の定義について説明する。
・エッジとは、ページ内に描画されるオブジェクト同士の境界、またはオブジェクトと背景との境界を示す。即ち、オブジェクトのアウトラインである。
・スパンとは、単一のスキャンラインにおいて、エッジ間で囲まれる閉領域を示す。
・レベルとは、ページ内に描画されるオブジェクト同士の上下関係を示す。各オブジェクトには、互いに異なるレベル番号が割り振られている。
・フィルとは、スパンに対する塗り情報(色データ)を示し、ビットマップデータやシェーディングのように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
CPU220は、PDLデータに含まれる残りのオブジェクトから、圧縮後のビットマップ画像を背景画像として含む中間データを生成し、生成した中間データをメモリに格納する。そして、CPU220は、メモリに格納された圧縮後のビットマップ画像を背景画像として含む中間データから新たなビットマップ画像を生成する。
The
このようなフォールバック処理を行うか否かは、メモリに格納されている中間データの総量が所定の閾値を超えたか否かによって決定される。即ち、本実施形態では、フォールバック処理は、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 /
[画像形成処理について]
次に、第1実施形態の画像処理装置110における画像形成処理について、図3を参照しながら説明する。図3は、第1実施形態の画像処理装置における画像形成処理のフローを示す図である。なお、以下で説明する処理は、CPU220がROM221や記憶部223等に予め格納された制御プログラムをRAM222に読み出して実行することにより実現される。また、以下のフローにおける各工程は、CPU220によって制御されうる。
[Image formation processing]
Next, image forming processing in the
S301では、CPU220は、ホストコンピュータ101から送信されたPDLデータを記憶部223に格納し、送信されたPDLデータの解析を行う。S302では、CPU220は、解析したPDLデータの情報をもとに、ビットマップ画像の生成のために必要な中間データの生成を行う。S302における中間データの生成は、公知技術が用いられうる。S303では、CPU220は、生成した中間データに基づいて、後述するブロック順変換処理を伴うレンダリング処理を行い、ページ画像を表すビットマップ画像の生成を行う。生成されたビットマップ画像は、ページ画像をブロック順にしたブロック画像データであり、このブロック画像データは、ブロック単位での画像処理が行われうる。
In S301, the
[レンダリング処理について]
次に、図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
ここで、第1実施形態の画像処理装置110におけるレンダリング処理には、上述したように、S302で生成された中間データを複数のブロックに分割するブロック順変換処理が含まれる。なお、以下で説明する処理は、CPU220がROM221や記憶部223等に予め格納された制御プログラムをRAM222に読み出して実行することにより実現されうる。ここで、本実施形態では、中間データを分割するブロックの幅および高さの初期値が、64[pixel]×64[pixel]に予め設定されているものとする。そして、1つのバンドの高さは64[pixel]であるものとする。
Here, as described above, the rendering process in the
S401では、CPU220は、S302で生成された中間データに基づいて、スパンデータを生成する。図5では、データ520が、中間データ510に基づいて生成されたスパンデータに対応する。スパンデータは、オブジェクトのエッジで区切られた閉領域(スパン)を示す情報と、スパン内のフィル情報とで構成されうる。ここで、スパンの長さは、例えばピクセル数によって表現される。S401では、先頭スキャンラインから順に、1つのスキャンラインに対応するスパンデータが生成されうる。
In S401, the
S402では、CPU220は、S401で生成したスパンデータをブロック順変換メモリ210にスプールする。このとき、CPU220は、スパンデータを、各スパンがノードとなる連結リスト形式にしてスプールする。例えば、CPU220が、図5のデータ520(スパンデータ)における4バンド目の先頭スキャンデータをスプールしたとすると、スプールされたスパンデータは、図9(a)に示すようになる。
In S402, the
S403では、CPU220は、1つのバンド高分のスパンデータをブロック順変換メモリ210にスプールしたか否かを判断する。1つのバンド高分のスパンデータをスプールした場合はS404に進み、1つのバンド高分のスパンデータをスプールしていない場合はS401に戻り、S401〜S403の工程を繰り返す。
In S <b> 403, the
S404では、CPU220は、S401で生成したスパンデータに基づいて、中間データを複数のブロックに分割するために用いられる配列情報を、バンドごとに生成する。配列情報とは、オブジェクトのエッジに対応する位置を示す情報のことである。即ち、S404は、中間データにおける複数のバンドの各々について、オブジェクトのエッジに対応する位置を、中間データを分割するための分割位置(第1分割位置)として設定した情報を生成する工程である。CPU220は、例えば、バンド内のスキャンラインごとにスパンのエッジの位置(X座標)を算出し、予め設定された複数の位置(X座標)の各々について、スパンのエッジが配置されるスキャンラインの数をカウントすることにより配列情報を生成する。ここで、バンドは、初期値として予め設定されたブロック高分のスキャンラインを束ねたものであり、複数の位置(X座標)はそれぞれ、例えば、初期値として予め設定されたブロックの幅の倍数である。
In S404, the
以下に、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
S601では、CPU220は、スキャンラインにおいて予め設定された複数の位置(座標)と、当該複数の位置にスパンのエッジが配置されるスキャンラインの数との関係を示す情報(以下、スキャンライン数情報と称する)を初期化する。図7(a)は、図5に示すスパンデータ520における2バンド目の初期化されたスキャンライン数情報を示す図である。スキャンライン数情報における複数の位置(座標)は、ページ幅(384[pixel])と、初期値として予め設定されたブロック幅(64[pixel])とに基づいて設定されうる。即ち、当該複数の位置は、それらのピッチが、初期値として予め設定されたブロック幅になるように設定されている。ここで、第1実施形態では、初期値として予め設定されたブロック幅に基づいて当該複数の位置が設定されているが、それに限られるものではない。例えば、レンダリング可能なブロック幅の範囲における最小値に基づいて当該複数の位置が設定されてもよい。即ち、当該複数の位置は、それらのピッチが、レンダリング可能なブロック幅の範囲における最小値になるように設定されてもよい。
In S <b> 601, the
S602では、CPU220は、カレントY座標を示す変数の値を「0」に初期化する。カレントY座標とは、ページの高さ方向におけるバンド内でのスキャンラインの位置を示す座標である。S603では、CPU220は、カレントX座標を示す変数の値を「0」に初期化する。カレントX座標とは、スキャンラインに沿った方向におけるスキャンライン上の位置を示す座標である。S604では、CPU220は、S401で生成したスパンデータを解析する。具体的には、CPU220は、生成したスパンデータにおけるスパン長を取得する。
In S602, the
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
図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
図4に戻り、S405では、CPU220は、S404で生成された配列情報に基づいて、1つのバンドに対して分割するブロックの幅を決定する。例えば、CPU220は、配列情報に基づいて、第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域を分割するための第2分割位置を決定する。このとき、CPU220は、当該範囲を満たすブロック幅についての複数の候補を決定し、決定した前記複数の候補のうちブロック幅の広いものから優先的に適用されるように第2分割位置を決定する。
Returning to FIG. 4, in S <b> 405, the
以下に、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
S801では、CPU220は、レンダリング可能なブロック幅の範囲を満たすブロック幅についての複数の候補を決定する。このとき、CPU220は、第1幅と、第1幅の整数倍である第2幅とを含むように、ブロック幅についての複数の候補を決定するとよい。
In step S <b> 801, the
レンダリング可能なブロック幅の範囲における最小値は、例えば、ブロック画像圧縮・伸長部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 /
また、レンダリング可能なブロック幅の範囲における最大値は、例えば、ブロック画像圧縮・伸長部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 /
S802では、CPU220は、カレントX座標を示す変数の値を「0」に初期化する。S803では、CPU220は、ブロック幅を決定する対象のバンド(以下、対象バンドと称する)について、S404で生成された配列情報を取得する(読み込む)。
In S802, the
S804では、CPU220は、S803で取得した配列情報とS801で決定したブロック幅の候補とに基づいて、中間データを複数のブロックに分割するための分割位置を決定する。例えば、CPU220は、対象バンドをスキャンしていき、第1分割位置が現れた場合にはS805に進む。一方、CPU220は、対象バンドをスキャンしていき、レンダリング可能なブロック幅の範囲を超えても第1分割位置が現れない場合、S801で決定された複数の候補のうちブロック幅の広いものから優先的に適用されるように第2分割位置を決定する。即ち、CPU220は、第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域に対し、S801で決定された複数の候補のうちブロック幅の広いものから優先的に適用されるように第2分割位置を決定する。CPU220は、第2分割位置を決定したらS805に進む。
In S804, the
S805では、CPU220は、カレントX座標を更新する。S806では、CPU220は、カレントX座標がページ幅以上であるか否かを判断する。カレントX座標がページ幅より小さい場合はS803に戻り、カレントX座標がページ幅以上である場合は終了する。このような処理を経て分割位置をバンドごとに決定することにより、図5のデータ550に示すように、初期値として予め設定されたブロック幅のみで中間データを分割すること(データ503)に比べて分割ブロック数を低減することができる。図5のデータ550は、第1実施形態の画像処理装置110において決定された中間データにおける分割位置を示す図であり、図5のデータ550において、白丸(○)が分割位置(第1分割位置または第2分割位置)に対応する。
In S805, the
図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
S408では、CPU220は、S407で分割された各ブロックに対してレンダリング処理を行う。レンダリング処理は、例えば、S408−1のフィル処理と、S408−2のコンポジット処理を含みうる。フィル処理(S408−1)では、CPU220は、分割された各ブロックにおけるスパンに対し、スパン内に存在するフィル情報が指定する色を生成する。コンポジット処理(S408−2)では、CPU220は、フィル処理で生成した色の合成処理を行う。
In S408, the
S409では、CPU220は、ブロック内における全てのスパンに対してレンダリング処理を行ったか否かを判断する。ブロック内における全てのスパンに対してレンダリング処理を行った場合はS410に進み、レンダリング処理を行っていないスパンがある場合はS406に戻る。S410では、CPU220は、バンド内における全てのブロックに対してレンダリング処理を行ったか否かを判断する。バンド内における全てのブロックに対してレンダリング処理を行った場合はS411に進み、レンダリング処理を行っていないブロックがある場合はS405に戻る。S411では、CPU220は、ページ内における全てのバンドに対してレンダリング処理を行ったか否かを判断する。ページ内における全てのバンドに対してレンダリング処理を行った場合は終了し、レンダリング処理を行っていないバンドがある場合はS401に戻る。
In step S409, the
上述したような処理を行うことにより、第1実施形態の画像処理装置110は、分割ブロック数が低減されるように分割位置を決定することができる。これにより、第1実施形態の画像処理装置110は、従来の処理に比べて、分割されるブロック数を低減することができる。即ち、レンダリング処理を各ブロックに対して行う際、分割されたブロックごとに行われるワークバッファへのリード・ライトに要するトータルの時間を低減し、画像をより高速に印刷することが可能となる。
By performing the processing as described above, the
ここで、上述した処理を行ったときの効果について、図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
例えば、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 (
<第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
図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
図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
<その他の実施例>
本発明は、上述の実施形態の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.
生成手段が、前記印刷データから中間データを生成する生成工程と、
第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.
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019010817A (en) * | 2017-06-30 | 2019-01-24 | キヤノン株式会社 | Image processing apparatus, image processing method, and program |
-
2015
- 2015-11-06 JP JP2015218796A patent/JP2017087514A/en active Pending
Cited By (1)
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 |