JP2017087514A - 画像処理装置、画像処理方法、およびプログラム - Google Patents
画像処理装置、画像処理方法、およびプログラム 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
【課題】データを分割するブロックの数を低減するために有利な画像処理装置を提供する。
【解決手段】ページ記述言語で記述された印刷データに基づいて画像を処理する画像処理装置は、印刷データから中間データを生成する生成手段と、中間データにおける複数のバンドの各々について、オブジェクトのエッジに対応する位置を第1分割位置に設定する第1設定手段と、第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域に対して第2分割位置を設定する第2設定手段と、第1分割位置および第2分割位置に基づいて、中間データを複数のブロックに分割する分割手段と、を含み、第2設定手段は、ブロック幅についての複数の候補を範囲を満たすように決定し、決定した複数の候補のうちブロック幅の広いものから優先的に適用されるように第2分割位置を設定する。
【選択図】図4
【解決手段】ページ記述言語で記述された印刷データに基づいて画像を処理する画像処理装置は、印刷データから中間データを生成する生成手段と、中間データにおける複数のバンドの各々について、オブジェクトのエッジに対応する位置を第1分割位置に設定する第1設定手段と、第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域に対して第2分割位置を設定する第2設定手段と、第1分割位置および第2分割位置に基づいて、中間データを複数のブロックに分割する分割手段と、を含み、第2設定手段は、ブロック幅についての複数の候補を範囲を満たすように決定し、決定した複数の候補のうちブロック幅の広いものから優先的に適用されるように第2分割位置を設定する。
【選択図】図4
Description
本発明は、画像処理装置、画像処理方法、およびプログラムに関する。
ページ記述言語等のベクタ形式のデータをレンダリングすることによって得られたラスタ画像をスプールし、プリンタエンジンで印刷を行う複合機などの画像処理装置が知られている。画像処理装置では、データを複数のブロックに分割し、以降の画像処理をブロック単位で並列に行うことで、画像の印刷を高速に行う方法がある。この方法では、分割された各ブロックのデータをワークバッファに一時的に格納することが必要である。特許文献1には、ラスタライズ後のラスタ形式のデータではなく、当該ラスタ形式のデータよりデータ量が少ないラスタライズ前のベクタ形式のデータを複数のブロックに分割することで、ワークバッファのバッファサイズを低減する方法が提案されている。特許文献1に記載された方法では、ベクタ形式のデータが一定のサイズで複数のブロックに分割される。
上記のような画像処理装置では、分割されたブロックごとに、ワークバッファにデータを格納したり読み出したりする処理(ワークバッファへのリード・ライト)が行われる。したがって、画像の印刷をより高速に行うためには、ベクタ形式のデータを分割するブロックの数を減らし、ワークバッファへのリード・ライトに要する時間を低減することが好ましい。
そこで、本発明は、データを分割するブロックの数を低減するために有利な技術を提供することを目的とする。
上記目的を達成するために、本発明の一側面としての画像処理装置は、ページ記述言語で記述された印刷データに基づいて画像を処理する画像処理装置であって、前記印刷データから中間データを生成する生成手段と、前記中間データにおける複数のバンドの各々について、オブジェクトのエッジに対応する位置を第1分割位置に設定する第1設定手段と、前記第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域に対して第2分割位置を設定する第2設定手段と、前記第1分割位置および前記第2分割位置に基づいて、前記中間データを複数のブロックに分割する分割手段と、前記複数のブロックの各々に対してレンダリングを行うレンダリング手段と、を含み、前記第2設定手段は、ブロック幅についての複数の候補を前記範囲を満たすように決定し、決定した前記複数の候補のうちブロック幅の広いものから優先的に適用されるように前記第2分割位置を設定する、ことを特徴とする。
本発明の更なる目的又はその他の側面は、以下、添付図面を参照して説明される好ましい実施形態によって明らかにされるであろう。
本発明によれば、例えば、データを分割するブロックの数を低減するために有利な技術を提供することができる。
以下、添付図面を参照して、本発明の好適な実施の形態について説明する。なお、各図において、同一の部材ないし要素については同一の参照番号を付し、重複する説明は省略する。
<第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以外のプリンタであってもよい。
本発明に係る第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以外のプリンタであってもよい。
[画像処理装置におけるハードウェア構成について]
図1(b)は、第1実施形態の画像処理装置110におけるハードウェア構成例を示す図である。画像処理装置110は、例えば、画像出力デバイスであるプリンタ部111を含む。また、画像処理装置110は、ホストコンピュータ101からLANを介してPDLデータ(ページ記述言語で記述された印刷データ)を取得する。
図1(b)は、第1実施形態の画像処理装置110におけるハードウェア構成例を示す図である。画像処理装置110は、例えば、画像出力デバイスであるプリンタ部111を含む。また、画像処理装置110は、ホストコンピュータ101からLANを介してPDLデータ(ページ記述言語で記述された印刷データ)を取得する。
プリンタ部111は、デバイスI/F232と接続され、CPU220で生成された画像データをシート(紙)に出力する処理を行う。CPU220は、画像処理装置の全体(各部)を制御するための中央処理部である。RAM222は、CPU220が動作するためのシステムワークメモリである。また、RAM222は、取得したPDLデータや、画像形成処理のために生成される中間データ、レンダリング処理を行う際の作業領域であるワーク領域や、入力された画像データを一時的に格納するためのメモリでもある。ROM221は、例えばブートROMであり、システムのブートプログラムが格納されている。記憶部223は、例えばハードディスクドライブであり、各種処理のためのシステムソフトウェアおよび取得したPDLデータを格納する。
操作部I/F225は、各種メニューや印刷データ情報等を表示するための表示部を有する操作部113に対するインターフェース部であり、操作部113に対して操作画面データを出力する。また、操作部I/F225は、操作部113を介してユーザが入力した情報をCPU220に伝える。ネットワークI/Fは、LAN102を介して外部装置(例えばホストコンピュータ101)との間で情報のやり取りを行うためのインターフェースである。これらCPU220、ROM221、RAM222、記憶部223、操作部I/F225およびネットワークI/Fは、システムバス227に接続されている。
イメージバスI/F228は、システムバス227と画像データを高速に転送する画像バス230とを接続するためのインターフェースであり、データ構造を変換するバスブリッジである。画像バス230には、RIP(ラスタイメージプロセッサ)231、およびデバイスI/F232が接続されている。RIP231は、CPU220からの指示に基づき、PDLデータコードや中間データ(ディスプレイリスト)を解析し、イメージ展開する。デバイスI/F232は、プリンタ部111にデータを送信するためのインターフェースである。
[画像処理装置におけるソフトウェア構成について]
次に、画像処理装置110におけるソフトウェア構成について、図2を参照しながら説明する。図2は、第1実施形態の画像処理装置110におけるソフトウェア構成例を示す図である。図2に示すソフトウェアモジュールの各々は、例えば、CPU220がROM221または記憶部223に格納されたプログラムをRAM222に展開して実行することにより実現されうる。
次に、画像処理装置110におけるソフトウェア構成について、図2を参照しながら説明する。図2は、第1実施形態の画像処理装置110におけるソフトウェア構成例を示す図である。図2に示すソフトウェアモジュールの各々は、例えば、CPU220がROM221または記憶部223に格納されたプログラムをRAM222に展開して実行することにより実現されうる。
PDLデータ処理部201は、PDLデータから、ページ情報と、ページ情報に含まれるオブジェクト情報とを取得する処理を行い、取得した情報を中間データ生成部202に供給する。中間データ生成部202は、PDLデータ処理部で取得されたページ情報およびオブジェクト情報に基づいて、画像形成に利用するための中間データを生成する。また、画像形成部203は、ブロック順のビットマップ画像を生成するため、ブロック幅算出部206が算出したブロック幅に基づいて、ブロック順変換部205にデータをブロック順に変換させる。そして、画像形成部203は、ブロック順変換メモリ210に、画像形成部203によって利用されるベクタデータ(スパンデータ)を格納する。ブロック画像圧縮・伸長部204は、画像形成部203が生成したブロック単位のビットマップ画像を圧縮する。ブロック順変換部205は、ブロック順変換メモリ210に格納されたベクタデータを、ブロック順のベクタデータに変換し(複数のブロックに分割し)、画像形成部203に供給する。画像形成部203は、ブロック順変換部205で変換されたブロック順のベクタデータに基づいてビットマップ画像を生成することにより、ブロック順のビットマップ画像を生成する。ブロック幅算出部206は、ブロック順変換メモリに格納されたベクタデータに基づいて、ブロック順変換部205で用いられるブロック幅を決定する。
[本実施形態における用語の定義]
ここで、本実施形態で用いられる用語の定義について説明する。
・エッジとは、ページ内に描画されるオブジェクト同士の境界、またはオブジェクトと背景との境界を示す。即ち、オブジェクトのアウトラインである。
・スパンとは、単一のスキャンラインにおいて、エッジ間で囲まれる閉領域を示す。
・レベルとは、ページ内に描画されるオブジェクト同士の上下関係を示す。各オブジェクトには、互いに異なるレベル番号が割り振られている。
・フィルとは、スパンに対する塗り情報(色データ)を示し、ビットマップデータやシェーディングのように1ピクセルごとに異なる色値をもつフィルや、ベタ塗りのようにスパン内で色値が同じであるフィルがある。つまり、スパンは、スパンに対応するオブジェクトの数だけレベルが存在し、レベルの数だけ互いに異なるフィルが存在する。
・スキャンラインとは、画像形成処理において画像データが連続的にメモリ走査される主走査方向のラインであり、スキャンラインの高さは例えば1ピクセルである。また、複数のスキャンラインを束ねたものを「バンド」という。
ここで、本実施形態で用いられる用語の定義について説明する。
・エッジとは、ページ内に描画されるオブジェクト同士の境界、またはオブジェクトと背景との境界を示す。即ち、オブジェクトのアウトラインである。
・スパンとは、単一のスキャンラインにおいて、エッジ間で囲まれる閉領域を示す。
・レベルとは、ページ内に描画されるオブジェクト同士の上下関係を示す。各オブジェクトには、互いに異なるレベル番号が割り振られている。
・フィルとは、スパンに対する塗り情報(色データ)を示し、ビットマップデータやシェーディングのように1ピクセルごとに異なる色値をもつフィルや、ベタ塗りのようにスパン内で色値が同じであるフィルがある。つまり、スパンは、スパンに対応するオブジェクトの数だけレベルが存在し、レベルの数だけ互いに異なるフィルが存在する。
・スキャンラインとは、画像形成処理において画像データが連続的にメモリ走査される主走査方向のラインであり、スキャンラインの高さは例えば1ピクセルである。また、複数のスキャンラインを束ねたものを「バンド」という。
また、後述されるフォールバック処理についても説明する。例えば、PDLデータから中間データを生成する際、取得したPDLデータのデータサイズが大きすぎると、全ての中間データを格納するにはメモリ容量が不足する場合がある。このようなメモリ容量の不足を防止するために、フォールバック処理が行われる。
フォールバック処理では、まずCPU220は、PDLデータに含まれる複数のオブジェクトの一部に対応する中間データを作成してメモリに格納し、その中間データに対してビットマップ画像を生成する。次に、CPU220は、このビットマップ画像を生成する際に用いられた中間データをメモリから削除する。また、CPU220は、生成したビットマップ画像に対し、ブロック画像圧縮・伸長部204によりJPEG圧縮などの圧縮処理を行いデータサイズを小さくする。
CPU220は、PDLデータに含まれる残りのオブジェクトから、圧縮後のビットマップ画像を背景画像として含む中間データを生成し、生成した中間データをメモリに格納する。そして、CPU220は、メモリに格納された圧縮後のビットマップ画像を背景画像として含む中間データから新たなビットマップ画像を生成する。
このようなフォールバック処理を行うか否かは、メモリに格納されている中間データの総量が所定の閾値を超えたか否かによって決定される。即ち、本実施形態では、フォールバック処理は、PDLデータから中間データを生成する際に、メモリに格納された中間データの総サイズが所定の閾値を超えた場合に実行されうる。フォールバック処理は、中間データを格納するメモリ容量の不足に応じて実行されるため、1ページ分のPDLデータからビットマップ画像を生成する場合であっても、複数回実行されうる。このとき、ブロック画像圧縮・伸長部204は、画像形成部203が生成したブロック単位のビットマップ画像を受け取って圧縮するとともに、フォールバック処理で圧縮されたブロック単位の画像を伸長して画像形成部203に受け渡すこととなる。
[画像形成処理について]
次に、第1実施形態の画像処理装置110における画像形成処理について、図3を参照しながら説明する。図3は、第1実施形態の画像処理装置における画像形成処理のフローを示す図である。なお、以下で説明する処理は、CPU220がROM221や記憶部223等に予め格納された制御プログラムをRAM222に読み出して実行することにより実現される。また、以下のフローにおける各工程は、CPU220によって制御されうる。
次に、第1実施形態の画像処理装置110における画像形成処理について、図3を参照しながら説明する。図3は、第1実施形態の画像処理装置における画像形成処理のフローを示す図である。なお、以下で説明する処理は、CPU220がROM221や記憶部223等に予め格納された制御プログラムをRAM222に読み出して実行することにより実現される。また、以下のフローにおける各工程は、CPU220によって制御されうる。
S301では、CPU220は、ホストコンピュータ101から送信されたPDLデータを記憶部223に格納し、送信されたPDLデータの解析を行う。S302では、CPU220は、解析したPDLデータの情報をもとに、ビットマップ画像の生成のために必要な中間データの生成を行う。S302における中間データの生成は、公知技術が用いられうる。S303では、CPU220は、生成した中間データに基づいて、後述するブロック順変換処理を伴うレンダリング処理を行い、ページ画像を表すビットマップ画像の生成を行う。生成されたビットマップ画像は、ページ画像をブロック順にしたブロック画像データであり、このブロック画像データは、ブロック単位での画像処理が行われうる。
[レンダリング処理について]
次に、図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のエッジの情報と、エッジ内のフィル情報とを有する。
次に、図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のエッジの情報と、エッジ内のフィル情報とを有する。
ここで、第1実施形態の画像処理装置110におけるレンダリング処理には、上述したように、S302で生成された中間データを複数のブロックに分割するブロック順変換処理が含まれる。なお、以下で説明する処理は、CPU220がROM221や記憶部223等に予め格納された制御プログラムをRAM222に読み出して実行することにより実現されうる。ここで、本実施形態では、中間データを分割するブロックの幅および高さの初期値が、64[pixel]×64[pixel]に予め設定されているものとする。そして、1つのバンドの高さは64[pixel]であるものとする。
S401では、CPU220は、S302で生成された中間データに基づいて、スパンデータを生成する。図5では、データ520が、中間データ510に基づいて生成されたスパンデータに対応する。スパンデータは、オブジェクトのエッジで区切られた閉領域(スパン)を示す情報と、スパン内のフィル情報とで構成されうる。ここで、スパンの長さは、例えばピクセル数によって表現される。S401では、先頭スキャンラインから順に、1つのスキャンラインに対応するスパンデータが生成されうる。
S402では、CPU220は、S401で生成したスパンデータをブロック順変換メモリ210にスプールする。このとき、CPU220は、スパンデータを、各スパンがノードとなる連結リスト形式にしてスプールする。例えば、CPU220が、図5のデータ520(スパンデータ)における4バンド目の先頭スキャンデータをスプールしたとすると、スプールされたスパンデータは、図9(a)に示すようになる。
S403では、CPU220は、1つのバンド高分のスパンデータをブロック順変換メモリ210にスプールしたか否かを判断する。1つのバンド高分のスパンデータをスプールした場合はS404に進み、1つのバンド高分のスパンデータをスプールしていない場合はS401に戻り、S401〜S403の工程を繰り返す。
S404では、CPU220は、S401で生成したスパンデータに基づいて、中間データを複数のブロックに分割するために用いられる配列情報を、バンドごとに生成する。配列情報とは、オブジェクトのエッジに対応する位置を示す情報のことである。即ち、S404は、中間データにおける複数のバンドの各々について、オブジェクトのエッジに対応する位置を、中間データを分割するための分割位置(第1分割位置)として設定した情報を生成する工程である。CPU220は、例えば、バンド内のスキャンラインごとにスパンのエッジの位置(X座標)を算出し、予め設定された複数の位置(X座標)の各々について、スパンのエッジが配置されるスキャンラインの数をカウントすることにより配列情報を生成する。ここで、バンドは、初期値として予め設定されたブロック高分のスキャンラインを束ねたものであり、複数の位置(X座標)はそれぞれ、例えば、初期値として予め設定されたブロックの幅の倍数である。
以下に、S404における配列情報を生成する工程の詳細について、図6を参照しながら説明する。図6は、配列情報を生成する処理のフローを示す図である。なお、以下で説明する処理は、CPU220がROM221や記憶部223等に予め格納された制御プログラムをRAM222に読み出して実行することにより実現されうる。
S601では、CPU220は、スキャンラインにおいて予め設定された複数の位置(座標)と、当該複数の位置にスパンのエッジが配置されるスキャンラインの数との関係を示す情報(以下、スキャンライン数情報と称する)を初期化する。図7(a)は、図5に示すスパンデータ520における2バンド目の初期化されたスキャンライン数情報を示す図である。スキャンライン数情報における複数の位置(座標)は、ページ幅(384[pixel])と、初期値として予め設定されたブロック幅(64[pixel])とに基づいて設定されうる。即ち、当該複数の位置は、それらのピッチが、初期値として予め設定されたブロック幅になるように設定されている。ここで、第1実施形態では、初期値として予め設定されたブロック幅に基づいて当該複数の位置が設定されているが、それに限られるものではない。例えば、レンダリング可能なブロック幅の範囲における最小値に基づいて当該複数の位置が設定されてもよい。即ち、当該複数の位置は、それらのピッチが、レンダリング可能なブロック幅の範囲における最小値になるように設定されてもよい。
S602では、CPU220は、カレントY座標を示す変数の値を「0」に初期化する。カレントY座標とは、ページの高さ方向におけるバンド内でのスキャンラインの位置を示す座標である。S603では、CPU220は、カレントX座標を示す変数の値を「0」に初期化する。カレントX座標とは、スキャンラインに沿った方向におけるスキャンライン上の位置を示す座標である。S604では、CPU220は、S401で生成したスパンデータを解析する。具体的には、CPU220は、生成したスパンデータにおけるスパン長を取得する。
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座標がバンド高以上である場合は終了する。
図6に示す処理を行うことにより、CPU220は、図7(b)に示すスキャンライン数情報を得ることができる。図7(b)は、図5に示すスパンデータ520における2バンド目のスキャンライン数情報を示している。CPU220は、例えば、スキャンラインの数が閾値以上になるときの所定の位置を、中間データを分割するための分割位置(第1分割位置)として設定することにより、配列情報を得ることができる。即ち、CPU220は、X座標が64、320、384[pixel]の位置が第1分割位置に設定された配列情報を得ることができる。ここで、閾値は、任意に設定されうるが、例えば、エッジが配置されるスキャンラインの数が1つでもある位置(座標)を第1分割位置とする場合には、「1」に設定されうる。
図4に戻り、S405では、CPU220は、S404で生成された配列情報に基づいて、1つのバンドに対して分割するブロックの幅を決定する。例えば、CPU220は、配列情報に基づいて、第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域を分割するための第2分割位置を決定する。このとき、CPU220は、当該範囲を満たすブロック幅についての複数の候補を決定し、決定した前記複数の候補のうちブロック幅の広いものから優先的に適用されるように第2分割位置を決定する。
以下に、S405におけるブロック幅を決定する工程の詳細について、図8を参照しながら説明する。図8は、ブロック幅を決定する処理のフローを示す図である。なお、以下で説明する処理は、CPU220がROM221や記憶部223等に予め格納された制御プログラムをRAM222に読み出して実行することにより実現されうる。
S801では、CPU220は、レンダリング可能なブロック幅の範囲を満たすブロック幅についての複数の候補を決定する。このとき、CPU220は、第1幅と、第1幅の整数倍である第2幅とを含むように、ブロック幅についての複数の候補を決定するとよい。
レンダリング可能なブロック幅の範囲における最小値は、例えば、ブロック画像圧縮・伸長部204が処理可能な最小値である。ブロック画像圧縮・伸長部204によりJPEG(Joint Photographic Experts Group)圧縮が実行される場合、画像が8[pixel]×8[pixel]のブロックに分割され、ブロックごとに変換処理が実行される。即ち、この場合、レンダリング可能なブロック幅の範囲における最小値は8[pixel]となる。
また、レンダリング可能なブロック幅の範囲における最大値は、例えば、ブロック画像圧縮・伸長部204が処理可能な最大値であり、ブロック画像圧縮・伸長部204での処理負荷と内部メモリの総量および空き容量とから決定されうる。例えば、ブロック画像圧縮・伸長部204の内部メモリの総量が32KByte(128[pixel]×64[pixel]の非圧縮CMYK画像に相当)であるとする。この場合、前述のフォールバック処理が発生しない時、レンダリング可能なブロック幅の範囲における最大値は128[pixel]となる。したがって、レンダリング可能なブロック幅の範囲は8〜128[pixel]の範囲となり、CPU220は、初期値とした予め設定されたブロック幅の整数倍である64[pixel]および128[pixel]をブロック幅についての候補として決定する。
S802では、CPU220は、カレントX座標を示す変数の値を「0」に初期化する。S803では、CPU220は、ブロック幅を決定する対象のバンド(以下、対象バンドと称する)について、S404で生成された配列情報を取得する(読み込む)。
S804では、CPU220は、S803で取得した配列情報とS801で決定したブロック幅の候補とに基づいて、中間データを複数のブロックに分割するための分割位置を決定する。例えば、CPU220は、対象バンドをスキャンしていき、第1分割位置が現れた場合にはS805に進む。一方、CPU220は、対象バンドをスキャンしていき、レンダリング可能なブロック幅の範囲を超えても第1分割位置が現れない場合、S801で決定された複数の候補のうちブロック幅の広いものから優先的に適用されるように第2分割位置を決定する。即ち、CPU220は、第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域に対し、S801で決定された複数の候補のうちブロック幅の広いものから優先的に適用されるように第2分割位置を決定する。CPU220は、第2分割位置を決定したらS805に進む。
S805では、CPU220は、カレントX座標を更新する。S806では、CPU220は、カレントX座標がページ幅以上であるか否かを判断する。カレントX座標がページ幅より小さい場合はS803に戻り、カレントX座標がページ幅以上である場合は終了する。このような処理を経て分割位置をバンドごとに決定することにより、図5のデータ550に示すように、初期値として予め設定されたブロック幅のみで中間データを分割すること(データ503)に比べて分割ブロック数を低減することができる。図5のデータ550は、第1実施形態の画像処理装置110において決定された中間データにおける分割位置を示す図であり、図5のデータ550において、白丸(○)が分割位置(第1分割位置または第2分割位置)に対応する。
図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以降の処理はブロック内のスキャンラインごとに行われる。
S408では、CPU220は、S407で分割された各ブロックに対してレンダリング処理を行う。レンダリング処理は、例えば、S408−1のフィル処理と、S408−2のコンポジット処理を含みうる。フィル処理(S408−1)では、CPU220は、分割された各ブロックにおけるスパンに対し、スパン内に存在するフィル情報が指定する色を生成する。コンポジット処理(S408−2)では、CPU220は、フィル処理で生成した色の合成処理を行う。
S409では、CPU220は、ブロック内における全てのスパンに対してレンダリング処理を行ったか否かを判断する。ブロック内における全てのスパンに対してレンダリング処理を行った場合はS410に進み、レンダリング処理を行っていないスパンがある場合はS406に戻る。S410では、CPU220は、バンド内における全てのブロックに対してレンダリング処理を行ったか否かを判断する。バンド内における全てのブロックに対してレンダリング処理を行った場合はS411に進み、レンダリング処理を行っていないブロックがある場合はS405に戻る。S411では、CPU220は、ページ内における全てのバンドに対してレンダリング処理を行ったか否かを判断する。ページ内における全てのバンドに対してレンダリング処理を行った場合は終了し、レンダリング処理を行っていないバンドがある場合はS401に戻る。
上述したような処理を行うことにより、第1実施形態の画像処理装置110は、分割ブロック数が低減されるように分割位置を決定することができる。これにより、第1実施形態の画像処理装置110は、従来の処理に比べて、分割されるブロック数を低減することができる。即ち、レンダリング処理を各ブロックに対して行う際、分割されたブロックごとに行われるワークバッファへのリード・ライトに要するトータルの時間を低減し、画像をより高速に印刷することが可能となる。
ここで、上述した処理を行ったときの効果について、図5および図9を参照しながら説明する。図5におけるスパンデータ520の分岐のうち左側は、従来の処理を行うことにより複数のブロックに分割されたスパンデータ530およびランレングスデータ540を示している。また、当該分岐のうち右側は、本実施形態の処理を行うことにより複数のブロックに分割されたスパンデータ550およびランレングスデータ560を示している。従来の処理では、ブロック幅を一定として中間データが複数のブロックに分割されているのに対し、本実施形態の処理では、複数のブロックにおけるブロック幅が互いに異なり、ブロック数が低減されている。例えば、4バンド目のスパンデータ(図9(a))は、従来の処理では、図9(b)に示すように6個のブロックに分割されるのに対し、本実施形態の処理では、図9(c)に示すように4個のブロックに分割される。
例えば、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]となり、大幅に転送帯域を低減することができる。
<第2実施形態>
第1実施形態では、スパンのエッジが配置されるスキャンラインの数の情報に基づいてブロック幅を決定する方法について説明した。第2実施形態では、スパンのエッジが配置されるスキャンラインの数の情報だけでなく、スパンデータに含まれるフィル(色データ)の情報にも基づいて、ブロック幅を決定する方法について説明する。ここで、第2実施形態の画像処理装置およびソフトウェア構成は、第1実施形態の画像処理装置110およびソフトウェア構成と同様であるため、ここでは説明を省略する。また、第2実施形態の画像処理装置は、図3、図4、図6、図8に示すフローチャートに従って画像形成処理を行う。以下では、第1実施形態の画像処理装置110における処理と異なる工程(図6のS604、S606、および図8のS804)について説明する。
第1実施形態では、スパンのエッジが配置されるスキャンラインの数の情報に基づいてブロック幅を決定する方法について説明した。第2実施形態では、スパンのエッジが配置されるスキャンラインの数の情報だけでなく、スパンデータに含まれるフィル(色データ)の情報にも基づいて、ブロック幅を決定する方法について説明する。ここで、第2実施形態の画像処理装置およびソフトウェア構成は、第1実施形態の画像処理装置110およびソフトウェア構成と同様であるため、ここでは説明を省略する。また、第2実施形態の画像処理装置は、図3、図4、図6、図8に示すフローチャートに従って画像形成処理を行う。以下では、第1実施形態の画像処理装置110における処理と異なる工程(図6のS604、S606、および図8のS804)について説明する。
図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つに分割する必要があることを示している。
図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分割位置)に設定することが好ましい。
<その他の実施例>
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されないことはいうまでもなく、その要旨の範囲内で種々の変形および変更が可能である。
101:ホストコンピュータ、110:画像処理装置、220:CPU、221:ROM、222:RAM、223:記憶部
Claims (11)
- ページ記述言語で記述された印刷データに基づいて画像を処理する画像処理装置であって、
前記印刷データから中間データを生成する生成手段と、
前記中間データにおける複数のバンドの各々について、オブジェクトのエッジに対応する位置を第1分割位置に設定する第1設定手段と、
前記第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域に対して第2分割位置を設定する第2設定手段と、
前記第1分割位置および前記第2分割位置に基づいて、前記中間データを複数のブロックに分割する分割手段と、
前記複数のブロックの各々に対してレンダリングを行うレンダリング手段と、
を含み、
前記第2設定手段は、ブロック幅についての複数の候補を前記範囲を満たすように決定し、決定した前記複数の候補のうちブロック幅の広いものから優先的に適用されるように前記第2分割位置を設定する、ことを特徴とする画像処理装置。 - 前記第2設定手段は、第1幅と、前記第1幅の整数倍の幅を有する第2幅とを含むように前記複数の候補を決定する、ことを特徴とする請求項1に記載の画像処理装置。
- 前記第1幅は、前記中間データを分割するために予め設定されたブロック幅である、ことを特徴とする請求項2に記載の画像処理装置。
- 前記複数のバンドの各々は、複数のスキャンラインを含む、ことを特徴とする請求項1乃至3のうちいずれか1項に記載の画像処理装置。
- 前記第1設定手段は、スキャンラインに沿って設定された複数の位置の各々について、1つのバンドの各スキャンラインにおける前記エッジが位置する数をカウントし、前記複数の位置のうちカウントされた数が閾値以上である位置を前記1つのバンドについての前記第1分割位置に設定する、ことを特徴とする請求項4に記載の画像処理装置。
- 前記第2設定手段は、スキャンラインに沿って設定された複数の位置の各々について色データのデータサイズをカウントし、前記複数の位置のうち、色データのデータサイズのカウント値が変化する位置を前記第2分割位置に決定する、ことを特徴とする請求項4又は5に記載の画像処理装置。
- 前記複数の位置は、それらのピッチが、前記中間データを分割するために予め設定されたブロック幅になるように設定されている、ことを特徴とする請求項5又は6に記載の画像処理装置。
- 前記複数の位置は、それらのピッチが前記範囲における最小値になるように設定されている、ことを特徴とする請求項5又は6に記載の画像処理装置。
- 前記生成手段は、前記印刷データからベクタ形式の前記中間データを生成する、ことを特徴とする請求項1乃至8のうちいずれか1項に記載の画像処理装置。
- ページ記述言語で記述された印刷データに基づいて画像を処理する画像処理方法であって、
生成手段が、前記印刷データから中間データを生成する生成工程と、
第1設定手段が、前記中間データにおける複数のバンドの各々について、オブジェクトのエッジに対応する位置を第1分割位置に設定する第1設定工程と、
第2設定手段が、前記第1分割位置で区切られた複数の領域のうち、レンダリング可能なブロック幅の範囲を超える領域に対して第2分割位置を設定する第2設定工程と、
分割手段が、前記第1分割位置および前記第2分割位置に基づいて、前記中間データを複数のブロックに分割する分割工程と、
レンダリング手段が、前記複数のブロックの各々に対してレンダリングを行うレンダリング工程と、
を含み、
前記第2設定工程では、ブロック幅についての複数の候補を前記範囲を満たすように決定し、決定した前記複数の候補のうちブロック幅の広いものから優先的に適用されるように前記第2分割位置を設定する、ことを特徴とする画像処理方法。 - 請求項10に記載の画像処理方法の各工程をコンピュータに実行させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015218796A JP2017087514A (ja) | 2015-11-06 | 2015-11-06 | 画像処理装置、画像処理方法、およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2015218796A JP2017087514A (ja) | 2015-11-06 | 2015-11-06 | 画像処理装置、画像処理方法、およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017087514A true JP2017087514A (ja) | 2017-05-25 |
Family
ID=58769842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015218796A Pending JP2017087514A (ja) | 2015-11-06 | 2015-11-06 | 画像処理装置、画像処理方法、およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2017087514A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019010817A (ja) * | 2017-06-30 | 2019-01-24 | キヤノン株式会社 | 画像処理装置、画像処理方法及びプログラム |
-
2015
- 2015-11-06 JP JP2015218796A patent/JP2017087514A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2019010817A (ja) * | 2017-06-30 | 2019-01-24 | キヤノン株式会社 | 画像処理装置、画像処理方法及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8842325B2 (en) | Image processing apparatus, control method thereof, and storage medium | |
JP6029344B2 (ja) | 画像処理装置、画像処理方法、プログラム | |
US8855438B2 (en) | Image processing apparatus, image processing method of image processing apparatus, and program | |
JP5538792B2 (ja) | 画像処理装置、その制御方法、及びプログラム | |
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 (ja) | 画像処理装置、画像形成装置及び画像処理時間予測方法及びプログラム | |
JP6741463B2 (ja) | 画像処理装置、画像処理方法、及びプログラム | |
JP5020998B2 (ja) | 画像処理装置、及び画像処理方法 | |
US9716810B2 (en) | Image processing apparatus configured to perform smoothing based on analysis of PDL data, and storage medium storing program therefor | |
JP2017087514A (ja) | 画像処理装置、画像処理方法、およびプログラム | |
JP6544905B2 (ja) | 画像処理装置、画像処理方法、プログラム | |
JP6904717B2 (ja) | 画像処理装置、その制御方法、およびプログラム | |
US10552717B2 (en) | Image processing apparatus, control method thereof, and storage medium | |
JP2014194635A (ja) | 画像形成装置及び画像形成方法ならびにプログラム | |
JP2011139162A (ja) | 画像符号化装置、制御方法、及びプログラム | |
US8437046B2 (en) | Image processing apparatus and method for outputting an image subjected to pseudo-halftone processing | |
JP2016206934A (ja) | 画像処理装置、画像処理方法及びプログラム | |
JP6809158B2 (ja) | 画像処理装置及びプログラム | |
US9049404B2 (en) | Image processing apparatus and method that perform multiple image processes, and storage medium storing a program thereof, for decompressing a compressed image according to first and second information indicating image processing to be performed | |
JP2019211963A (ja) | 情報処理装置、情報処理方法、及びプログラム | |
JP2019077133A (ja) | 画像形成装置、画像形成方法、プログラム | |
JPH10191066A (ja) | 画像処理装置 |