画像処理装置、画像処理方法及びプログラム
【課題】オブジェクトのまとめ処理に高い負荷がかかることなく、ビットマップ画像データの生成処理を高速化することを目的とする。
【解決手段】印刷ジョブを解析する解析手段と、解析手段での解析の結果に基づいて、印刷ジョブに含まれる複数のオブジェクトを最大個数に応じて1つのオブジェクトにまとめる最適化手段と、最適化手段でまとめられたオブジェクトに基づき中間データを生成する中間データ生成手段と、中間データ生成手段で生成された中間データから画像データを生成する画像データ生成手段と、を有し、最適化手段は、まとめるオブジェクトの種別によって、まとめるオブジェクトの最大個数を切り替えることによって課題を解決する。
【解決手段】印刷ジョブを解析する解析手段と、解析手段での解析の結果に基づいて、印刷ジョブに含まれる複数のオブジェクトを最大個数に応じて1つのオブジェクトにまとめる最適化手段と、最適化手段でまとめられたオブジェクトに基づき中間データを生成する中間データ生成手段と、中間データ生成手段で生成された中間データから画像データを生成する画像データ生成手段と、を有し、最適化手段は、まとめるオブジェクトの種別によって、まとめるオブジェクトの最大個数を切り替えることによって課題を解決する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【0002】
従来、印刷ジョブからビットマップ画像データを生成する手法として、スキャンライン法を用いたものがある。(例えば、特許文献1参照)図1はこのスキャンライン法の概念を示す図である。ここでは矩形のグラフィックオブジェクト300aと「T」の形をしたグラフィックオブジェクト300bを含む印刷ジョブ300から、ビットマップ画像データ301を生成する場合について説明する。スキャンライン法では、印刷ジョブに含まれるオブジェクトの両端を示すエッジ302、重なり具合を示すレベル303、色の具合を示すフィル304の情報を算出する。矩形のグラフィックオブジェクト300aからは、左右のエッジ302a、302b、レベル303a、フィル304aを算出し、エッジとレベルとフィルを関連付けた情報が保持される。同様に「T」の形をしたグラフィックオブジェクト300bからは左右のエッジ302c、302d、レベル303b、フィル304bを算出し、それぞれを関連付けた情報が保持される。そしてビットマップ画像データを生成する際、左エッジから右エッジの間のピクセルは、そのエッジに関連付けられたフィルのピクセルで描画される。オブジェクトが重なる部分に関しては、よりレベルが高いエッジに関連付けられたフィルのピクセルで描画される。このようにすることでフレームバッファ305に対して、最上位にあるオブジェクトのピクセルだけを描画してビットマップ画像データを生成することができる。そのため、図2に示すフレームバッファ401に対して全てのオブジェクトの全てのピクセルを描画するペインターズ法に比べ、スキャンライン法は高速にビットマップ画像データを生成できる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−140597号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
印刷ジョブを生成するソフトウェアアプリケーションには様々な種類があり、ソフトウェアアプリケーションによっては、1本の線を重なる複数のオブジェクトで表現する等、冗長な描画指示を行うものがある。その結果、細かいオブジェクトが連続した印刷ジョブが生成されてしまう。図3は、1本の線を1つのグラフィックオブジェクトで表現した時と、複数のグラフィックオブジェクトで冗長に表現したときの例を示す図である。1つのグラフィックオブジェクト500で1本の線が表現された場合、そのエッジは500aと500bとの2つだけで済む。しかし、オブジェクト506に示すようなグラフィックオブジェクトが、501、502、503、504、505と重なることで1本の線が表現された場合、それぞれのグラフィックオブジェクトがエッジ(501a、501b)〜(505a、505b)を持つのでエッジの数が増えてしまう。
【0005】
また、あるソフトウェアアプリケーションで作成したデータを、別のソフトウェアアプリケーションで利用したときに、1つオブジェクトが複数のオブジェクトに分割されることもある。この場合も細かいオブジェクトが連続した印刷ジョブが生成される。図4は、1つのビットマップが複数のビットマップに分割される例を示す図である。ビットマップがひとつの場合、そのエッジは600aと600bの2つだけで済む。しかし、ビットマップが分割されると(601)、分割された数だけエッジが増えてしまう(603)。
このような細かいオブジェクトが連続する印刷ジョブでは、1ページを描画するオブジェクトが100万個を超えることも珍しくなく、エッジの数も膨大に増加する。
細かいオブジェクトが連続して大量に含まれる印刷ジョブに対して、エッジやレベルを算出するスキャンライン法を用いてビットマップ画像データを生成すると、膨大なエッジやレベルの処理に多大な負荷がかかる。そこで、細かいオブジェクトを1つにまとめてエッジやレベルの数を減らすことで負荷を軽減し、ビットマップ画像データの生成処理を高速化する最適化処理を導入することが考えられる。しかし、単純にオブジェクトをまとめてしまうと、まとめる処理自体に負荷が増大し、やはりビットマップ画像データの生成処理を高速化できないという課題がある。
【課題を解決するための手段】
【0006】
そこで、本発明は、印刷ジョブから画像データを生成する画像処理装置であって、前記印刷ジョブを解析する解析手段と、前記解析手段での前記解析の結果に基づいて、印刷ジョブに含まれる複数のオブジェクトを最大個数に応じて1つのオブジェクトにまとめる最適化手段と、前記最適化手段でまとめられたオブジェクトに基づき中間データを生成する中間データ生成手段と、前記中間データ生成手段で生成された中間データから画像データを生成する画像データ生成手段と、を有し、前記最適化手段は、まとめるオブジェクトの種別によって、まとめるオブジェクトの最大個数を切り替える。
【発明の効果】
【0007】
本発明によれば、オブジェクトのまとめ処理に高い負荷がかかることなく、ビットマップ画像データの生成処理を高速化することができる。
【図面の簡単な説明】
【0008】
【図1】スキャンライン法の概念を示す図である。
【図2】ペインターズ法の概念を示す図である。
【図3】1本の線を1つのオブジェクト、複数のオブジェクトで表現した例を示す図である。
【図4】1つのビットマップと分割されたビットマップとを示す図である。
【図5】印刷装置のハードウェア構成の一例を示す図である。
【図6】印刷装置のソフトウェア構成の一例を示す図である。
【図7】印刷ジョブからビットマップ画像データを生成する処理を示すフローチャートである。
【図8】まとめ対象となるオブジェクトの例とまとめ方とを示す図である。
【図9】オブジェクトのまとめ処理を示すフローチャートである。
【図10】まとめたオブジェクトのイメージを生成する処理を示すフローチャートである。
【図11】オブジェクトの種別とまとめる最大個数との関係を示す図である。
【図12】オブジェクト数とレンダリング処理時間との関係を示す図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について図面に基づいて説明する。
【0010】
<実施形態1>
図5は、印刷装置のハードウェア構成の一例を示す図である。
CPU101は、CPU(Central Processing Unit)である。図6で後述するソフトウェアモジュールは全てこのCPU上で動作する。
メモリ102は、CPU101がアクセスできるRAM(Ramdom Access Memory)である。メモリ102は、各種ソフトウェアの動作に必要なメモリの確保先として利用され、後述の中間データ生成部203が生成する中間データや、レンダラ103が生成するビットマップ画像データの保存先として利用される。
レンダラ103は、スキャンライン法を用いてビットマップ画像データを生成するハードウェアレンダラである。
入力部104は、印刷装置に対する印刷ジョブの入力を受け付ける入力部である。
エンジン105は、レンダラ103が生成したビットマップ画像データに基づき印刷用紙に画像を印刷する。
ROM106は、ROM(Read Only Memory)である。図6で後述するソフトウェアモジュールのプログラムはROM106に格納され、CPU101に読み込まれ、実行される。
印刷装置は、画像処理装置の一例である。
【0011】
図6は、印刷装置のソフトウェア構成の一例を示す図である。前述の通り、各ソフトウェアモジュールは、全てCPU101上で動作する。
解析部201は、入力部104で受け付けた印刷ジョブに含まれるオブジェクトを解析するモジュールである。
最適化部202は、解析部201の解析結果を受け、まとめることが可能な複数のオブジェクトを1つにまとめるモジュールである。最適化部202には、ペインターズ法を用いるソフトウェアレンダラ202aとスキャンライン法を用いるソフトウェアレンダラ202bとが含まれる。ソフトウェアレンダラ202a、ソフトウェアレンダラ202bは、ビットマップ生成手段の一例である。
中間データ生成部203は、解析部201が解析したオブジェクトや最適化部202でまとめられたオブジェクトからレンダラ103が処理するのに適切な中間データを生成するモジュールである。
ハードレンダラ制御部204は、中間データ生成部203が生成した中間データをレンダラ103に入力し、メモリ102にビットマップ画像データを出力するまでの一連の処理を制御するモジュールである。
例えば、ハードレンダラ制御部204は、画像データ生成手段の一例である。
【0012】
図7は、印刷ジョブを読み込み、各ページのビットマップ画像データを生成する処理の一例を示すフローチャートである。
ステップS701において、解析部201は、入力部104に入力された印刷ジョブを読み込み、印刷ジョブの各ページに含まれるオブジェクトの解析を行う。
ステップS702において、最適化部202は、解析したオブジェクトがまとめる対象オブジェクトかどうかを判断する。本実施形態においては、連続して以下のオブジェクトをまとめる対象とする。
【0013】
図8は、まとめる対象の例とまとめた結果の例とを示す図である。
図8の(a)は、同色の矩形グラフィックオブジェクト(重なりなし)の例を示している。
例えば、図8(a)に示すように矩形のグラフィックオブジェクト1001a、1001b、1001c、1001dが順々に連続して描画され、各オブジェクトの色が同じで、お互いに重ならない場合である。このように連続したオブジェクトは、オブジェクト全体の輪郭を示す1つのパス1011aと色値1011bを持つオブジェクトにまとめることができる。
図8の(b)は、同色の矩形グラフィックオブジェクト(重なりあり)の例を示している。
例えば、図8(b)に示すように矩形のグラフィックオブジェクト1002a、1002b、1002c、1002dが順々に連続して描画され、各オブジェクトの色が同じで、オブジェクト同士に重なりが発生する場合である。このように連続したオブジェクトは、オブジェクト全体の輪郭を示す1つのパス1012aと色値1012bを持つオブジェクトにまとめることができる。
図8の(c)は、同色の任意の形のグラフィックオブジェクトの例を示している。
例えば、図8(c)に示すように、任意の形のグラフィックオブジェクトが1003a、1003b、1003cが順々に連続して描画され、各オブジェクトの色が同じで場合である。このように連続したオブジェクトは、オブジェクト全体の輪郭を示す1つのパス1013aと1つの色値1013bを持つオブジェクトにまとめることができる。
【0014】
図8の(d)は、イメージオブジェクト(重なりなし)の例を示している。
例えば、図8(d)に示すように、イメージオブジェクト1004a、1004b、1004c、1004dが順々に連続して描画され、オブジェクト同士が重ならない場合である。このように連続したオブジェクトは、オブジェクト全体を含むイメージ1014bと、オブジェクト全体の輪郭を示すパス1014aにまとめることができる。
図8の(e)は、イメージオブジェクト(重なりあり)の例を示している。
例えば、図8(e)に示すように、イメージオブジェクト1005a、1005b、1005c、1005dが順々に連続して描画され、オブジェクト同士に重なりが発生する場合である。このように連続したオブジェクトは、オブジェクト全体を含むイメージ1015bと、オブジェクト全体の輪郭を示し、イメージ1015bから実際の描画に不要な部分を切り抜くパス1015aまとめることができる。
【0015】
最適化部202は、オブジェクトが上記のまとめ対象のオブジェクトの場合はステップS702へ、そうでなければステップS704へ進む。
ステップS703において、最適化部202は、オブジェクトのまとめ処理を行う。詳細については、後ほど図9のフローチャートを用いて後述する。
ステップS704において、中間データ生成部203は、最適化部202がオブジェクトのまとめ処理を実行中かどうか確認する。オブジェクトをまとめた数が0より大きければまとめ処理を実行中である(詳細は図9のフローチャート)。中間データ生成部203は、まとめ処理を実行中の場合はステップS705へ、そうでなければステップS706に進む。
ステップS705において、中間データ生成部203は、最適化部202がまとめたオブジェクトの中間データを生成する。詳細については、後ほど図10のフローチャートを用いて説明する。
ステップS706において、中間データ生成部203は、まとめ対象ではないオブジェクトの中間データを生成する。
ステップS707において、解析部201は、現在解析しているページのオブジェクトが終了したかどうか確認する。解析部201は、終了した場合はS708へ、終了してない場合はステップS701に戻りオブジェクトの解析を続ける。
ステップS708において、ハードレンダラ制御部204は、1ページの中間データのレンダラ103へ入力し、ビットマップ画像データを得る。
【0016】
次に、図7のステップS703におけるオブジェクトのまとめ処理の詳細について、図9のフローチャートを用いて説明する。
ステップS801において、最適化部202は、まとめたオブジェクトの数を確認し、ままとめた数が0より多ければステップS802に進み、そうでなければステップS805へ進む。
ステップS802において、最適化部202は、新しいオブジェクトがこれまでまとめたオブジェクトとまとめられるか判断する。最適化部202は、まとめられる場合はステップS808へ、まとめられなければ、ステップS803へ進む。
ステップS803において、最適化部202は、これまでまとめたオブジェクトの中間データを生成する。詳細については図10を用いて後述する。
ステップS804において、最適化部202は、まとめたオブジェクトの数をリセットして0とする。
ステップS805において、最適化部202は、新しいオブジェクトを格納する。
ステップS806において、最適化部202は、まとめたオブジェクトの数のインクリメントを行う。
ステップS807において、最適化部202は、まとめるオブジェクトの最大個数を仮決定する。
【0017】
図11は、最大個数の決定のために最適化部202が予め持つテーブルの一例を示す図である。テーブルには、まとめるオブジェクトの種別1101に対してまとめることが可能な最大個数1102が設定されている。このとき、矩形のグラフィックオブジェクトで、重なりがないようなオブジェクトは、そのまとめ処理の負荷が低いために大きな最大個数が設定されている。イメージで重なりがあるようなオブジェクトは、そのまとめ処理の負荷が高いため、小さな最大個数が設定されている。本実施形態において、図11のCATEGORY1〜5は、それぞれ図8の(a)〜(e)のオブジェクトに該当する。最適化部202は、ステップS807を終えると、図7のステップS701に戻り、オブジェクト解析を続ける。
【0018】
ステップS808において、最適化部202は、まとめるオブジェクトの最大個数の変更が必要かどうかを確認する。最適化部202は、新しいオブジェクトによって、まとめるオブジェクトの種別のCATEGORYが変わる場合は最大個数の変更が必要である。必要な場合はステップS809へ進み、そうでなければステップS810へ進む。
ステップS809において、最適化部202は、まとめるオブジェクトの最大個数の変更を行う。例えば、重なりがなく同色の矩形グラフィックオブジェクトをまとめている際に、新しいオブジェクトとして重なりが発生する同色の矩形グラフィックオブジェクトを受取ると、オブジェクトの種別はCATEGORY1からCATEGORY2になる。その場合、まとめるオブジェクトの最大個数は250から200に変更される。
ステップS810において、最適化部202は、新しいオブジェクトとこれまでまとめたオブジェクトを1つにまとめて格納する。
ステップS811において、最適化部202は、まとめたオブジェクトの数のインクリメントを行う。
ステップS812において、最適化部202は、これまでにまとめたオブジェクトの数とまとめるオブジェクトの最大個数とを比較する。最適化部202は、まとめた数が最大個数を超えていたらステップS813へ進み、そうでなければ、図7のステップS701に戻り、オブジェクト解析を続ける。
ステップS813において、最適化部202は、これまでまとめたオブジェクトの中間データを生成する。詳細については図10を用いて後述する。
ステップS814において、最適化部202は、まとめたオブジェクトの数をリセットして0とする。最適化部202は、ステップS814を終えると、図7のステップS701に戻り、オブジェクト解析を続ける。
【0019】
次に、図7のステップS703や図9のステップS803、S813における、これまでまとめたオブジェクトの中間データ生成処理について、図10のフローチャートを用いて説明する。
ステップS901において、最適化部202は、オブジェクトをまとめたイメージを生成する必要があるかどうかを決定する。最適化部202は、必要がある場合はステップS902へ、必要がなければステップS906へ進む。本実施形態では、図8のオブジェクトの種別(d)(e)がイメージの生成を必要とする。
ステップS902において、最適化部202は、まとめたオブジェクト同士に重なりがあるかどうかを確認する。最適化部202は、重なりがある場合はステップS903へ、なければステップS905へ進む。
ステップS903において、最適化部202は、まとめたオブジェクトの数が予め定められた閾値以上かどうかを確認する。図12は、最適化部202に含まれるペインターズレンダラ202aとスキャンラインレンダラ202bとが、重なりのあるイメージオブジェクトをソフトウェアレンダリングするときのオブジェクト数と処理時間との関係を示す図である。1201がスキャンラインレンダラ202aの場合を示しており、1202がペインターズレンダラ202bの場合を示している。
【0020】
先に述べたようにスキャンライン法は、エッジ302、レベル303、フィル304の情報を生成し、それらを参照しながらレンダリングするため、ペインターズ法に比べ複雑な処理を必要とする。そのため、この複雑なスキャンライン法の処理をソフトウェアで実行した場合、オブジェクトの数によってはペインターズ法の処理より時間を要してしまう。スキャンライン法とペインターズ法との処理時間が同じになるときのオブジェクト数が閾値となる。最適化部202は、まとめたオブジェクトの数が閾値以上の場合は、ステップS904に進み、そうでない場合はステップS905に進む。
ステップS904において、最適化部202は、ペインターズレンダラ202aを利用してソフトウェアレンダリングを行い、まとめたオブジェクトのイメージを生成する。
ステップS905において、最適化部202は、スキャンラインレンダラ202bを利用してソフトウェアレンダリングを行い、まとめたオブジェクトのイメージを生成する。
ステップS906において、最適化部202は、まとめたオブジェクトの中間データを生成する。
【0021】
以上で述べたように、オブジェクトに応じて最適化部でまとめるオブジェクトの数を切り替えることで、最適化部のまとめ処理が高負荷になること避けられる。また最適化部のまとめ処理においてイメージを生成する必要な場合は、まとめたオブジェクトの数に応じてレンダラを切り替えることで、イメージ生成が高負荷になること避けられる。
この結果、1ページに含まれるエッジが膨大な印刷ジョブからビットマップ画像データを高速に生成できるようになる。
【0022】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【0023】
以上、上述した各実施形態によれば、オブジェクトのまとめ処理に高い負荷がかかることなく、ビットマップ画像データの生成処理を高速化することができる。
【0024】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【0002】
従来、印刷ジョブからビットマップ画像データを生成する手法として、スキャンライン法を用いたものがある。(例えば、特許文献1参照)図1はこのスキャンライン法の概念を示す図である。ここでは矩形のグラフィックオブジェクト300aと「T」の形をしたグラフィックオブジェクト300bを含む印刷ジョブ300から、ビットマップ画像データ301を生成する場合について説明する。スキャンライン法では、印刷ジョブに含まれるオブジェクトの両端を示すエッジ302、重なり具合を示すレベル303、色の具合を示すフィル304の情報を算出する。矩形のグラフィックオブジェクト300aからは、左右のエッジ302a、302b、レベル303a、フィル304aを算出し、エッジとレベルとフィルを関連付けた情報が保持される。同様に「T」の形をしたグラフィックオブジェクト300bからは左右のエッジ302c、302d、レベル303b、フィル304bを算出し、それぞれを関連付けた情報が保持される。そしてビットマップ画像データを生成する際、左エッジから右エッジの間のピクセルは、そのエッジに関連付けられたフィルのピクセルで描画される。オブジェクトが重なる部分に関しては、よりレベルが高いエッジに関連付けられたフィルのピクセルで描画される。このようにすることでフレームバッファ305に対して、最上位にあるオブジェクトのピクセルだけを描画してビットマップ画像データを生成することができる。そのため、図2に示すフレームバッファ401に対して全てのオブジェクトの全てのピクセルを描画するペインターズ法に比べ、スキャンライン法は高速にビットマップ画像データを生成できる。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2006−140597号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
印刷ジョブを生成するソフトウェアアプリケーションには様々な種類があり、ソフトウェアアプリケーションによっては、1本の線を重なる複数のオブジェクトで表現する等、冗長な描画指示を行うものがある。その結果、細かいオブジェクトが連続した印刷ジョブが生成されてしまう。図3は、1本の線を1つのグラフィックオブジェクトで表現した時と、複数のグラフィックオブジェクトで冗長に表現したときの例を示す図である。1つのグラフィックオブジェクト500で1本の線が表現された場合、そのエッジは500aと500bとの2つだけで済む。しかし、オブジェクト506に示すようなグラフィックオブジェクトが、501、502、503、504、505と重なることで1本の線が表現された場合、それぞれのグラフィックオブジェクトがエッジ(501a、501b)〜(505a、505b)を持つのでエッジの数が増えてしまう。
【0005】
また、あるソフトウェアアプリケーションで作成したデータを、別のソフトウェアアプリケーションで利用したときに、1つオブジェクトが複数のオブジェクトに分割されることもある。この場合も細かいオブジェクトが連続した印刷ジョブが生成される。図4は、1つのビットマップが複数のビットマップに分割される例を示す図である。ビットマップがひとつの場合、そのエッジは600aと600bの2つだけで済む。しかし、ビットマップが分割されると(601)、分割された数だけエッジが増えてしまう(603)。
このような細かいオブジェクトが連続する印刷ジョブでは、1ページを描画するオブジェクトが100万個を超えることも珍しくなく、エッジの数も膨大に増加する。
細かいオブジェクトが連続して大量に含まれる印刷ジョブに対して、エッジやレベルを算出するスキャンライン法を用いてビットマップ画像データを生成すると、膨大なエッジやレベルの処理に多大な負荷がかかる。そこで、細かいオブジェクトを1つにまとめてエッジやレベルの数を減らすことで負荷を軽減し、ビットマップ画像データの生成処理を高速化する最適化処理を導入することが考えられる。しかし、単純にオブジェクトをまとめてしまうと、まとめる処理自体に負荷が増大し、やはりビットマップ画像データの生成処理を高速化できないという課題がある。
【課題を解決するための手段】
【0006】
そこで、本発明は、印刷ジョブから画像データを生成する画像処理装置であって、前記印刷ジョブを解析する解析手段と、前記解析手段での前記解析の結果に基づいて、印刷ジョブに含まれる複数のオブジェクトを最大個数に応じて1つのオブジェクトにまとめる最適化手段と、前記最適化手段でまとめられたオブジェクトに基づき中間データを生成する中間データ生成手段と、前記中間データ生成手段で生成された中間データから画像データを生成する画像データ生成手段と、を有し、前記最適化手段は、まとめるオブジェクトの種別によって、まとめるオブジェクトの最大個数を切り替える。
【発明の効果】
【0007】
本発明によれば、オブジェクトのまとめ処理に高い負荷がかかることなく、ビットマップ画像データの生成処理を高速化することができる。
【図面の簡単な説明】
【0008】
【図1】スキャンライン法の概念を示す図である。
【図2】ペインターズ法の概念を示す図である。
【図3】1本の線を1つのオブジェクト、複数のオブジェクトで表現した例を示す図である。
【図4】1つのビットマップと分割されたビットマップとを示す図である。
【図5】印刷装置のハードウェア構成の一例を示す図である。
【図6】印刷装置のソフトウェア構成の一例を示す図である。
【図7】印刷ジョブからビットマップ画像データを生成する処理を示すフローチャートである。
【図8】まとめ対象となるオブジェクトの例とまとめ方とを示す図である。
【図9】オブジェクトのまとめ処理を示すフローチャートである。
【図10】まとめたオブジェクトのイメージを生成する処理を示すフローチャートである。
【図11】オブジェクトの種別とまとめる最大個数との関係を示す図である。
【図12】オブジェクト数とレンダリング処理時間との関係を示す図である。
【発明を実施するための形態】
【0009】
以下、本発明の実施形態について図面に基づいて説明する。
【0010】
<実施形態1>
図5は、印刷装置のハードウェア構成の一例を示す図である。
CPU101は、CPU(Central Processing Unit)である。図6で後述するソフトウェアモジュールは全てこのCPU上で動作する。
メモリ102は、CPU101がアクセスできるRAM(Ramdom Access Memory)である。メモリ102は、各種ソフトウェアの動作に必要なメモリの確保先として利用され、後述の中間データ生成部203が生成する中間データや、レンダラ103が生成するビットマップ画像データの保存先として利用される。
レンダラ103は、スキャンライン法を用いてビットマップ画像データを生成するハードウェアレンダラである。
入力部104は、印刷装置に対する印刷ジョブの入力を受け付ける入力部である。
エンジン105は、レンダラ103が生成したビットマップ画像データに基づき印刷用紙に画像を印刷する。
ROM106は、ROM(Read Only Memory)である。図6で後述するソフトウェアモジュールのプログラムはROM106に格納され、CPU101に読み込まれ、実行される。
印刷装置は、画像処理装置の一例である。
【0011】
図6は、印刷装置のソフトウェア構成の一例を示す図である。前述の通り、各ソフトウェアモジュールは、全てCPU101上で動作する。
解析部201は、入力部104で受け付けた印刷ジョブに含まれるオブジェクトを解析するモジュールである。
最適化部202は、解析部201の解析結果を受け、まとめることが可能な複数のオブジェクトを1つにまとめるモジュールである。最適化部202には、ペインターズ法を用いるソフトウェアレンダラ202aとスキャンライン法を用いるソフトウェアレンダラ202bとが含まれる。ソフトウェアレンダラ202a、ソフトウェアレンダラ202bは、ビットマップ生成手段の一例である。
中間データ生成部203は、解析部201が解析したオブジェクトや最適化部202でまとめられたオブジェクトからレンダラ103が処理するのに適切な中間データを生成するモジュールである。
ハードレンダラ制御部204は、中間データ生成部203が生成した中間データをレンダラ103に入力し、メモリ102にビットマップ画像データを出力するまでの一連の処理を制御するモジュールである。
例えば、ハードレンダラ制御部204は、画像データ生成手段の一例である。
【0012】
図7は、印刷ジョブを読み込み、各ページのビットマップ画像データを生成する処理の一例を示すフローチャートである。
ステップS701において、解析部201は、入力部104に入力された印刷ジョブを読み込み、印刷ジョブの各ページに含まれるオブジェクトの解析を行う。
ステップS702において、最適化部202は、解析したオブジェクトがまとめる対象オブジェクトかどうかを判断する。本実施形態においては、連続して以下のオブジェクトをまとめる対象とする。
【0013】
図8は、まとめる対象の例とまとめた結果の例とを示す図である。
図8の(a)は、同色の矩形グラフィックオブジェクト(重なりなし)の例を示している。
例えば、図8(a)に示すように矩形のグラフィックオブジェクト1001a、1001b、1001c、1001dが順々に連続して描画され、各オブジェクトの色が同じで、お互いに重ならない場合である。このように連続したオブジェクトは、オブジェクト全体の輪郭を示す1つのパス1011aと色値1011bを持つオブジェクトにまとめることができる。
図8の(b)は、同色の矩形グラフィックオブジェクト(重なりあり)の例を示している。
例えば、図8(b)に示すように矩形のグラフィックオブジェクト1002a、1002b、1002c、1002dが順々に連続して描画され、各オブジェクトの色が同じで、オブジェクト同士に重なりが発生する場合である。このように連続したオブジェクトは、オブジェクト全体の輪郭を示す1つのパス1012aと色値1012bを持つオブジェクトにまとめることができる。
図8の(c)は、同色の任意の形のグラフィックオブジェクトの例を示している。
例えば、図8(c)に示すように、任意の形のグラフィックオブジェクトが1003a、1003b、1003cが順々に連続して描画され、各オブジェクトの色が同じで場合である。このように連続したオブジェクトは、オブジェクト全体の輪郭を示す1つのパス1013aと1つの色値1013bを持つオブジェクトにまとめることができる。
【0014】
図8の(d)は、イメージオブジェクト(重なりなし)の例を示している。
例えば、図8(d)に示すように、イメージオブジェクト1004a、1004b、1004c、1004dが順々に連続して描画され、オブジェクト同士が重ならない場合である。このように連続したオブジェクトは、オブジェクト全体を含むイメージ1014bと、オブジェクト全体の輪郭を示すパス1014aにまとめることができる。
図8の(e)は、イメージオブジェクト(重なりあり)の例を示している。
例えば、図8(e)に示すように、イメージオブジェクト1005a、1005b、1005c、1005dが順々に連続して描画され、オブジェクト同士に重なりが発生する場合である。このように連続したオブジェクトは、オブジェクト全体を含むイメージ1015bと、オブジェクト全体の輪郭を示し、イメージ1015bから実際の描画に不要な部分を切り抜くパス1015aまとめることができる。
【0015】
最適化部202は、オブジェクトが上記のまとめ対象のオブジェクトの場合はステップS702へ、そうでなければステップS704へ進む。
ステップS703において、最適化部202は、オブジェクトのまとめ処理を行う。詳細については、後ほど図9のフローチャートを用いて後述する。
ステップS704において、中間データ生成部203は、最適化部202がオブジェクトのまとめ処理を実行中かどうか確認する。オブジェクトをまとめた数が0より大きければまとめ処理を実行中である(詳細は図9のフローチャート)。中間データ生成部203は、まとめ処理を実行中の場合はステップS705へ、そうでなければステップS706に進む。
ステップS705において、中間データ生成部203は、最適化部202がまとめたオブジェクトの中間データを生成する。詳細については、後ほど図10のフローチャートを用いて説明する。
ステップS706において、中間データ生成部203は、まとめ対象ではないオブジェクトの中間データを生成する。
ステップS707において、解析部201は、現在解析しているページのオブジェクトが終了したかどうか確認する。解析部201は、終了した場合はS708へ、終了してない場合はステップS701に戻りオブジェクトの解析を続ける。
ステップS708において、ハードレンダラ制御部204は、1ページの中間データのレンダラ103へ入力し、ビットマップ画像データを得る。
【0016】
次に、図7のステップS703におけるオブジェクトのまとめ処理の詳細について、図9のフローチャートを用いて説明する。
ステップS801において、最適化部202は、まとめたオブジェクトの数を確認し、ままとめた数が0より多ければステップS802に進み、そうでなければステップS805へ進む。
ステップS802において、最適化部202は、新しいオブジェクトがこれまでまとめたオブジェクトとまとめられるか判断する。最適化部202は、まとめられる場合はステップS808へ、まとめられなければ、ステップS803へ進む。
ステップS803において、最適化部202は、これまでまとめたオブジェクトの中間データを生成する。詳細については図10を用いて後述する。
ステップS804において、最適化部202は、まとめたオブジェクトの数をリセットして0とする。
ステップS805において、最適化部202は、新しいオブジェクトを格納する。
ステップS806において、最適化部202は、まとめたオブジェクトの数のインクリメントを行う。
ステップS807において、最適化部202は、まとめるオブジェクトの最大個数を仮決定する。
【0017】
図11は、最大個数の決定のために最適化部202が予め持つテーブルの一例を示す図である。テーブルには、まとめるオブジェクトの種別1101に対してまとめることが可能な最大個数1102が設定されている。このとき、矩形のグラフィックオブジェクトで、重なりがないようなオブジェクトは、そのまとめ処理の負荷が低いために大きな最大個数が設定されている。イメージで重なりがあるようなオブジェクトは、そのまとめ処理の負荷が高いため、小さな最大個数が設定されている。本実施形態において、図11のCATEGORY1〜5は、それぞれ図8の(a)〜(e)のオブジェクトに該当する。最適化部202は、ステップS807を終えると、図7のステップS701に戻り、オブジェクト解析を続ける。
【0018】
ステップS808において、最適化部202は、まとめるオブジェクトの最大個数の変更が必要かどうかを確認する。最適化部202は、新しいオブジェクトによって、まとめるオブジェクトの種別のCATEGORYが変わる場合は最大個数の変更が必要である。必要な場合はステップS809へ進み、そうでなければステップS810へ進む。
ステップS809において、最適化部202は、まとめるオブジェクトの最大個数の変更を行う。例えば、重なりがなく同色の矩形グラフィックオブジェクトをまとめている際に、新しいオブジェクトとして重なりが発生する同色の矩形グラフィックオブジェクトを受取ると、オブジェクトの種別はCATEGORY1からCATEGORY2になる。その場合、まとめるオブジェクトの最大個数は250から200に変更される。
ステップS810において、最適化部202は、新しいオブジェクトとこれまでまとめたオブジェクトを1つにまとめて格納する。
ステップS811において、最適化部202は、まとめたオブジェクトの数のインクリメントを行う。
ステップS812において、最適化部202は、これまでにまとめたオブジェクトの数とまとめるオブジェクトの最大個数とを比較する。最適化部202は、まとめた数が最大個数を超えていたらステップS813へ進み、そうでなければ、図7のステップS701に戻り、オブジェクト解析を続ける。
ステップS813において、最適化部202は、これまでまとめたオブジェクトの中間データを生成する。詳細については図10を用いて後述する。
ステップS814において、最適化部202は、まとめたオブジェクトの数をリセットして0とする。最適化部202は、ステップS814を終えると、図7のステップS701に戻り、オブジェクト解析を続ける。
【0019】
次に、図7のステップS703や図9のステップS803、S813における、これまでまとめたオブジェクトの中間データ生成処理について、図10のフローチャートを用いて説明する。
ステップS901において、最適化部202は、オブジェクトをまとめたイメージを生成する必要があるかどうかを決定する。最適化部202は、必要がある場合はステップS902へ、必要がなければステップS906へ進む。本実施形態では、図8のオブジェクトの種別(d)(e)がイメージの生成を必要とする。
ステップS902において、最適化部202は、まとめたオブジェクト同士に重なりがあるかどうかを確認する。最適化部202は、重なりがある場合はステップS903へ、なければステップS905へ進む。
ステップS903において、最適化部202は、まとめたオブジェクトの数が予め定められた閾値以上かどうかを確認する。図12は、最適化部202に含まれるペインターズレンダラ202aとスキャンラインレンダラ202bとが、重なりのあるイメージオブジェクトをソフトウェアレンダリングするときのオブジェクト数と処理時間との関係を示す図である。1201がスキャンラインレンダラ202aの場合を示しており、1202がペインターズレンダラ202bの場合を示している。
【0020】
先に述べたようにスキャンライン法は、エッジ302、レベル303、フィル304の情報を生成し、それらを参照しながらレンダリングするため、ペインターズ法に比べ複雑な処理を必要とする。そのため、この複雑なスキャンライン法の処理をソフトウェアで実行した場合、オブジェクトの数によってはペインターズ法の処理より時間を要してしまう。スキャンライン法とペインターズ法との処理時間が同じになるときのオブジェクト数が閾値となる。最適化部202は、まとめたオブジェクトの数が閾値以上の場合は、ステップS904に進み、そうでない場合はステップS905に進む。
ステップS904において、最適化部202は、ペインターズレンダラ202aを利用してソフトウェアレンダリングを行い、まとめたオブジェクトのイメージを生成する。
ステップS905において、最適化部202は、スキャンラインレンダラ202bを利用してソフトウェアレンダリングを行い、まとめたオブジェクトのイメージを生成する。
ステップS906において、最適化部202は、まとめたオブジェクトの中間データを生成する。
【0021】
以上で述べたように、オブジェクトに応じて最適化部でまとめるオブジェクトの数を切り替えることで、最適化部のまとめ処理が高負荷になること避けられる。また最適化部のまとめ処理においてイメージを生成する必要な場合は、まとめたオブジェクトの数に応じてレンダラを切り替えることで、イメージ生成が高負荷になること避けられる。
この結果、1ページに含まれるエッジが膨大な印刷ジョブからビットマップ画像データを高速に生成できるようになる。
【0022】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(又はCPUやMPU等)がプログラムを読み出して実行する処理である。
【0023】
以上、上述した各実施形態によれば、オブジェクトのまとめ処理に高い負荷がかかることなく、ビットマップ画像データの生成処理を高速化することができる。
【0024】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【特許請求の範囲】
【請求項1】
印刷ジョブから画像データを生成する画像処理装置であって、
前記印刷ジョブを解析する解析手段と、
前記解析手段での前記解析の結果に基づいて、印刷ジョブに含まれる複数のオブジェクトを最大個数に応じて1つのオブジェクトにまとめる最適化手段と、
前記最適化手段でまとめられたオブジェクトに基づき中間データを生成する中間データ生成手段と、
前記中間データ生成手段で生成された中間データから画像データを生成する画像データ生成手段と、
を有し、
前記最適化手段は、まとめるオブジェクトの種別によって、まとめるオブジェクトの最大個数を切り替える画像処理装置。
【請求項2】
前記最適化手段は、複数の画像データ生成手段を有し、オブジェクトをまとめる際に画像データの生成が必要な場合、オブジェクトの種別によって画像データ生成手段を切り替える請求項1記載の画像処理装置。
【請求項3】
前記複数の画像データ生成手段とは、ペインターズ法を用いて画像データの生成を行う画像データ生成手段と、スキャンライン法を用いて画像データの生成を行う画像データ生成手段と、である請求項2記載の画像処理装置。
【請求項4】
前記最適化手段がまとめるオブジェクトの種別とは、まとめたときに重なりが発生しない同色の矩形のグラフィックオブジェクトと、まとめたときに重なりが発生する同色の矩形のグラフィックオブジェクトと、同色で任意の形のグラフィックオブジェクトと、である請求項1乃至3何れか1項記載の画像処理装置。
【請求項5】
前記最適化手段がまとめるオブジェクトの種別とは、まとめたときに重なりが発生しないイメージオブジェクトと、まとめたときに重なりが発生するイメージオブジェクトと、である請求項1乃至3何れか1項記載の画像処理装置。
【請求項6】
印刷ジョブから画像データを生成する画像処理装置における画像処理方法であって、
前記印刷ジョブを解析する解析ステップと、
前記解析ステップでの前記解析の結果に基づいて、印刷ジョブに含まれる複数のオブジェクトを最大個数に応じて1つのオブジェクトにまとめる最適化ステップと、
前記最適化ステップでまとめられたオブジェクトに基づき中間データを生成する中間データ生成ステップと、
前記中間データ生成ステップで生成された中間データから画像データを生成する画像データ生成ステップと、
を含み、
前記最適化ステップでは、まとめるオブジェクトの種別によって、まとめるオブジェクトの最大個数を切り替える画像処理方法。
【請求項7】
コンピュータに、
印刷ジョブを解析する解析ステップと、
前記解析ステップでの前記解析の結果に基づいて、印刷ジョブに含まれる複数のオブジェクトを最大個数に応じて1つのオブジェクトにまとめる最適化ステップと、
前記最適化ステップでまとめられたオブジェクトに基づき中間データを生成する中間データ生成ステップと、
前記中間データ生成ステップで生成された中間データから画像データを生成する画像データ生成ステップと、
を実行させ、
前記最適化ステップでは、まとめるオブジェクトの種別によって、まとめるオブジェクトの最大個数を切り替えるプログラム。
【請求項8】
印刷ジョブを解析する解析手段と、
前記解析手段での前記解析の結果に基づいて、印刷ジョブに含まれる複数のオブジェクトを最大個数に応じて1つのオブジェクトにまとめる最適化手段と、
前記最適化手段でまとめられたオブジェクトに基づき中間データを生成する中間データ生成手段と、
前記中間データ生成手段で生成された中間データに基づき画像データを生成する画像データ生成手段と、
前記画像データ生成手段により生成された画像データに基づき画像を印刷する印刷手段と、
を有し、
前記最適化手段は、まとめるオブジェクトの種別によって、まとめるオブジェクトの最大個数を切り替える印刷装置。
【請求項1】
印刷ジョブから画像データを生成する画像処理装置であって、
前記印刷ジョブを解析する解析手段と、
前記解析手段での前記解析の結果に基づいて、印刷ジョブに含まれる複数のオブジェクトを最大個数に応じて1つのオブジェクトにまとめる最適化手段と、
前記最適化手段でまとめられたオブジェクトに基づき中間データを生成する中間データ生成手段と、
前記中間データ生成手段で生成された中間データから画像データを生成する画像データ生成手段と、
を有し、
前記最適化手段は、まとめるオブジェクトの種別によって、まとめるオブジェクトの最大個数を切り替える画像処理装置。
【請求項2】
前記最適化手段は、複数の画像データ生成手段を有し、オブジェクトをまとめる際に画像データの生成が必要な場合、オブジェクトの種別によって画像データ生成手段を切り替える請求項1記載の画像処理装置。
【請求項3】
前記複数の画像データ生成手段とは、ペインターズ法を用いて画像データの生成を行う画像データ生成手段と、スキャンライン法を用いて画像データの生成を行う画像データ生成手段と、である請求項2記載の画像処理装置。
【請求項4】
前記最適化手段がまとめるオブジェクトの種別とは、まとめたときに重なりが発生しない同色の矩形のグラフィックオブジェクトと、まとめたときに重なりが発生する同色の矩形のグラフィックオブジェクトと、同色で任意の形のグラフィックオブジェクトと、である請求項1乃至3何れか1項記載の画像処理装置。
【請求項5】
前記最適化手段がまとめるオブジェクトの種別とは、まとめたときに重なりが発生しないイメージオブジェクトと、まとめたときに重なりが発生するイメージオブジェクトと、である請求項1乃至3何れか1項記載の画像処理装置。
【請求項6】
印刷ジョブから画像データを生成する画像処理装置における画像処理方法であって、
前記印刷ジョブを解析する解析ステップと、
前記解析ステップでの前記解析の結果に基づいて、印刷ジョブに含まれる複数のオブジェクトを最大個数に応じて1つのオブジェクトにまとめる最適化ステップと、
前記最適化ステップでまとめられたオブジェクトに基づき中間データを生成する中間データ生成ステップと、
前記中間データ生成ステップで生成された中間データから画像データを生成する画像データ生成ステップと、
を含み、
前記最適化ステップでは、まとめるオブジェクトの種別によって、まとめるオブジェクトの最大個数を切り替える画像処理方法。
【請求項7】
コンピュータに、
印刷ジョブを解析する解析ステップと、
前記解析ステップでの前記解析の結果に基づいて、印刷ジョブに含まれる複数のオブジェクトを最大個数に応じて1つのオブジェクトにまとめる最適化ステップと、
前記最適化ステップでまとめられたオブジェクトに基づき中間データを生成する中間データ生成ステップと、
前記中間データ生成ステップで生成された中間データから画像データを生成する画像データ生成ステップと、
を実行させ、
前記最適化ステップでは、まとめるオブジェクトの種別によって、まとめるオブジェクトの最大個数を切り替えるプログラム。
【請求項8】
印刷ジョブを解析する解析手段と、
前記解析手段での前記解析の結果に基づいて、印刷ジョブに含まれる複数のオブジェクトを最大個数に応じて1つのオブジェクトにまとめる最適化手段と、
前記最適化手段でまとめられたオブジェクトに基づき中間データを生成する中間データ生成手段と、
前記中間データ生成手段で生成された中間データに基づき画像データを生成する画像データ生成手段と、
前記画像データ生成手段により生成された画像データに基づき画像を印刷する印刷手段と、
を有し、
前記最適化手段は、まとめるオブジェクトの種別によって、まとめるオブジェクトの最大個数を切り替える印刷装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2013−42458(P2013−42458A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2011−179743(P2011−179743)
【出願日】平成23年8月19日(2011.8.19)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願日】平成23年8月19日(2011.8.19)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]