(57)【特許請求の範囲】
【請求項１】
印刷ジョブに含まれる複数のオブジェクトを１つのオブジェクトにまとめることが可能な画像処理装置であって、
前記印刷ジョブに含まれる複数のオブジェクトを、１つのオブジェクトにまとめられるオブジェクトの個数を制限するための値に基づき、１つのオブジェクトにまとめるまとめ手段と、
前記まとめ手段でまとめられたオブジェクトに基づき、画像データを生成する生成手段と、
を有し、
前記制限するための値は、まとめられるオブジェクトの種別によって異なる画像処理装置。
【請求項２】
前記制限するための値を越える個数の複数のオブジェクトは、前記まとめ手段によって１つのオブジェクトにまとめられない請求項１記載の画像処理装置。
【請求項３】
前記まとめ手段は、１つのオブジェクトにまとめられる複数のオブジェクトの個数を数え上げ、前記個数が前記制限するための値を越えるかを判定し、
前記生成手段は、前記まとめ手段で前記個数が前記制限するための値を越えると判定されたことに応じて、前記まとめ手段でまとめられたオブジェクトに基づき中間データを生成する請求項１又は２記載の画像処理装置。
【請求項４】
前記まとめ手段は、まとめられる複数のオブジェクトを、前記まとめられる複数のオブジェクト全体の輪郭を示すパスを持つ１つのオブジェクトにまとめる請求項１乃至３何れか１項記載の画像処理装置。
【請求項５】
前記まとめ手段でまとめられた１つのオブジェクトは、前記まとめられる複数のオブジェクトに共通する１つの色値、又は、前記まとめられる複数のオブジェクト全体を含むイメージを持つ請求項４記載の画像処理装置。
【請求項６】
前記まとめ手段は、複数の画像データ生成手段を有し、オブジェクトをまとめる際に画像データの生成が必要な場合、オブジェクトの種別によって画像データ生成手段を切り替える請求項１乃至５何れか１項記載の画像処理装置。
【請求項７】
前記複数の画像データ生成手段とは、ペインターズ法を用いて画像データの生成を行う画像データ生成手段と、スキャンライン法を用いて画像データの生成を行う画像データ生成手段と、である請求項６記載の画像処理装置。
【請求項８】
前記まとめ手段がまとめるオブジェクトの種別とは、まとめたときに重なりが発生しない同色の矩形のグラフィックオブジェクトと、まとめたときに重なりが発生する同色の矩形のグラフィックオブジェクトと、同色で任意の形のグラフィックオブジェクトと、である請求項１乃至７何れか１項記載の画像処理装置。
【請求項９】
前記まとめ手段がまとめるオブジェクトの種別とは、まとめたときに重なりが発生しないイメージオブジェクトと、まとめたときに重なりが発生するイメージオブジェクトと、である請求項１乃至７何れか１項記載の画像処理装置。
【請求項１０】
前記生成手段で生成された画像データに基づき画像を印刷する印刷手段を更に有する請求項１乃至９何れか１項記載の画像処理装置。
【請求項１１】
印刷ジョブに含まれる複数のオブジェクトを１つのオブジェクトにまとめることが可能な画像処理装置が実行する画像処理方法であって、
前記印刷ジョブに含まれる複数のオブジェクトを、１つのオブジェクトにまとめられるオブジェクトの個数を制限するための値に基づき、１つのオブジェクトにまとめるまとめステップと、
前記まとめステップでまとめられたオブジェクトに基づき、画像データを生成する生成ステップと、
を含み、
前記制限するための値は、まとめられるオブジェクトの種別によって異なる画像処理方法。
【請求項１２】
前記生成ステップで生成された画像データに基づき画像を印刷する印刷ステップを更に含む請求項１１記載の画像処理方法。
【請求項１３】
コンピュータを、請求項１乃至１０何れか１項記載の画像処理装置の各手段として動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【０００２】
従来、印刷ジョブからビットマップ画像データを生成する手法として、スキャンライン法を用いたものがある。（例えば、特許文献１参照）図１はこのスキャンライン法の概念を示す図である。ここでは矩形のグラフィックオブジェクト３００ａと「Ｔ」の形をしたグラフィックオブジェクト３００ｂを含む印刷ジョブ３００から、ビットマップ画像データ３０１を生成する場合について説明する。スキャンライン法では、印刷ジョブに含まれるオブジェクトの両端を示すエッジ３０２、重なり具合を示すレベル３０３、色の具合を示すフィル３０４の情報を算出する。矩形のグラフィックオブジェクト３００ａからは、左右のエッジ３０２ａ、３０２ｂ、レベル３０３ａ、フィル３０４ａを算出し、エッジとレベルとフィルを関連付けた情報が保持される。同様に「Ｔ」の形をしたグラフィックオブジェクト３００ｂからは左右のエッジ３０２ｃ、３０２ｄ、レベル３０３ｂ、フィル３０４ｂを算出し、それぞれを関連付けた情報が保持される。そしてビットマップ画像データを生成する際、左エッジから右エッジの間のピクセルは、そのエッジに関連付けられたフィルのピクセルで描画される。オブジェクトが重なる部分に関しては、よりレベルが高いエッジに関連付けられたフィルのピクセルで描画される。このようにすることでフレームバッファ３０５に対して、最上位にあるオブジェクトのピクセルだけを描画してビットマップ画像データを生成することができる。そのため、図２に示すフレームバッファ４０１に対して全てのオブジェクトの全てのピクセルを描画するペインターズ法に比べ、スキャンライン法は高速にビットマップ画像データを生成できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１４０５９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
印刷ジョブを生成するソフトウェアアプリケーションには様々な種類があり、ソフトウェアアプリケーションによっては、１本の線を重なる複数のオブジェクトで表現する等、冗長な描画指示を行うものがある。その結果、細かいオブジェクトが連続した印刷ジョブが生成されてしまう。図３は、１本の線を１つのグラフィックオブジェクトで表現した時と、複数のグラフィックオブジェクトで冗長に表現したときの例を示す図である。１つのグラフィックオブジェクト５００で１本の線が表現された場合、そのエッジは５００ａと５００ｂとの２つだけで済む。しかし、オブジェクト５０６に示すようなグラフィックオブジェクトが、５０１、５０２、５０３、５０４、５０５と重なることで１本の線が表現された場合、それぞれのグラフィックオブジェクトがエッジ（５０１ａ、５０１ｂ）〜（５０５ａ、５０５ｂ）を持つのでエッジの数が増えてしまう。
【０００５】
また、あるソフトウェアアプリケーションで作成したデータを、別のソフトウェアアプリケーションで利用したときに、１つオブジェクトが複数のオブジェクトに分割されることもある。この場合も細かいオブジェクトが連続した印刷ジョブが生成される。図４は、１つのビットマップが複数のビットマップに分割される例を示す図である。ビットマップがひとつの場合、そのエッジは６００ａと６００ｂの２つだけで済む。しかし、ビットマップが分割されると（６０１）、分割された数だけエッジが増えてしまう（６０３）。
このような細かいオブジェクトが連続する印刷ジョブでは、１ページを描画するオブジェクトが１００万個を超えることも珍しくなく、エッジの数も膨大に増加する。
細かいオブジェクトが連続して大量に含まれる印刷ジョブに対して、エッジやレベルを算出するスキャンライン法を用いてビットマップ画像データを生成すると、膨大なエッジやレベルの処理に多大な負荷がかかる。そこで、細かいオブジェクトを１つにまとめてエッジやレベルの数を減らすことで負荷を軽減し、ビットマップ画像データの生成処理を高速化する最適化処理を導入することが考えられる。しかし、単純にオブジェクトをまとめてしまうと、まとめる処理自体に負荷が増大し、やはりビットマップ画像データの生成処理を高速化できないという課題がある。
【課題を解決するための手段】
【０００６】
そこで、本発明は、印刷ジョブに含まれる複数のオブジェクトを１つのオブジェクトにまとめることが可能な画像処理装置であって、前記印刷ジョブに含まれる複数のオブジェクトを、１つのオブジェクトにまとめられるオブジェクトの個数を制限するための値に基づき、１つのオブジェクトにまとめるまとめ手段と、前記まとめ手段でまとめられたオブジェクトに基づき、画像データを生成する生成手段と、を有し、前記制限するための値は、まとめられるオブジェクトの種別によって異なる。
【発明の効果】
【０００７】
本発明によれば、オブジェクトのまとめ処理に高い負荷がかかることなく、ビットマップ画像データの生成処理を高速化することができる。
【図面の簡単な説明】
【０００８】
【図１】スキャンライン法の概念を示す図である。
【図２】ペインターズ法の概念を示す図である。
【図３】１本の線を１つのオブジェクト、複数のオブジェクトで表現した例を示す図である。
【図４】１つのビットマップと分割されたビットマップとを示す図である。
【図５】印刷装置のハードウェア構成の一例を示す図である。
【図６】印刷装置のソフトウェア構成の一例を示す図である。
【図７】印刷ジョブからビットマップ画像データを生成する処理を示すフローチャートである。
【図８】まとめ対象となるオブジェクトの例とまとめ方とを示す図である。
【図９】オブジェクトのまとめ処理を示すフローチャートである。
【図１０】まとめたオブジェクトのイメージを生成する処理を示すフローチャートである。
【図１１】オブジェクトの種別とまとめる最大個数との関係を示す図である。
【図１２】オブジェクト数とレンダリング処理時間との関係を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面に基づいて説明する。
【００１０】
＜実施形態１＞
図５は、印刷装置のハードウェア構成の一例を示す図である。
ＣＰＵ１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。図６で後述するソフトウェアモジュールは全てこのＣＰＵ上で動作する。
メモリ１０２は、ＣＰＵ１０１がアクセスできるＲＡＭ（Ｒａｍｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。メモリ１０２は、各種ソフトウェアの動作に必要なメモリの確保先として利用され、後述の中間データ生成部２０３が生成する中間データや、レンダラ１０３が生成するビットマップ画像データの保存先として利用される。
レンダラ１０３は、スキャンライン法を用いてビットマップ画像データを生成するハードウェアレンダラである。
入力部１０４は、印刷装置に対する印刷ジョブの入力を受け付ける入力部である。
エンジン１０５は、レンダラ１０３が生成したビットマップ画像データに基づき印刷用紙に画像を印刷する。
ＲＯＭ１０６は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）である。図６で後述するソフトウェアモジュールのプログラムはＲＯＭ１０６に格納され、ＣＰＵ１０１に読み込まれ、実行される。
印刷装置は、画像処理装置の一例である。
【００１１】
図６は、印刷装置のソフトウェア構成の一例を示す図である。前述の通り、各ソフトウェアモジュールは、全てＣＰＵ１０１上で動作する。
解析部２０１は、入力部１０４で受け付けた印刷ジョブに含まれるオブジェクトを解析するモジュールである。
最適化部２０２は、解析部２０１の解析結果を受け、まとめることが可能な複数のオブジェクトを１つにまとめるモジュールである。最適化部２０２には、ペインターズ法を用いるソフトウェアレンダラ２０２ａとスキャンライン法を用いるソフトウェアレンダラ２０２ｂとが含まれる。ソフトウェアレンダラ２０２ａ、ソフトウェアレンダラ２０２ｂは、ビットマップ生成手段の一例である。
中間データ生成部２０３は、解析部２０１が解析したオブジェクトや最適化部２０２でまとめられたオブジェクトからレンダラ１０３が処理するのに適切な中間データを生成するモジュールである。
ハードレンダラ制御部２０４は、中間データ生成部２０３が生成した中間データをレンダラ１０３に入力し、メモリ１０２にビットマップ画像データを出力するまでの一連の処理を制御するモジュールである。
例えば、ハードレンダラ制御部２０４は、画像データ生成手段の一例である。
【００１２】
図７は、印刷ジョブを読み込み、各ページのビットマップ画像データを生成する処理の一例を示すフローチャートである。
ステップＳ７０１において、解析部２０１は、入力部１０４に入力された印刷ジョブを読み込み、印刷ジョブの各ページに含まれるオブジェクトの解析を行う。
ステップＳ７０２において、最適化部２０２は、解析したオブジェクトがまとめる対象オブジェクトかどうかを判断する。本実施形態においては、連続して以下のオブジェクトをまとめる対象とする。
【００１３】
図８は、まとめる対象の例とまとめた結果の例とを示す図である。
図８の（ａ）は、同色の矩形グラフィックオブジェクト（重なりなし）の例を示している。
例えば、図８（ａ）に示すように矩形のグラフィックオブジェクト１００１ａ、１００１ｂ、１００１ｃ、１００１ｄが順々に連続して描画され、各オブジェクトの色が同じで、お互いに重ならない場合である。このように連続したオブジェクトは、オブジェクト全体の輪郭を示す１つのパス１０１１ａと色値１０１１ｂを持つオブジェクトにまとめることができる。
図８の（ｂ）は、同色の矩形グラフィックオブジェクト（重なりあり）の例を示している。
例えば、図８（ｂ）に示すように矩形のグラフィックオブジェクト１００２ａ、１００２ｂ、１００２ｃ、１００２ｄが順々に連続して描画され、各オブジェクトの色が同じで、オブジェクト同士に重なりが発生する場合である。このように連続したオブジェクトは、オブジェクト全体の輪郭を示す１つのパス１０１２ａと色値１０１２ｂを持つオブジェクトにまとめることができる。
図８の（ｃ）は、同色の任意の形のグラフィックオブジェクトの例を示している。
例えば、図８（ｃ）に示すように、任意の形のグラフィックオブジェクトが１００３ａ、１００３ｂ、１００３ｃが順々に連続して描画され、各オブジェクトの色が同じで場合である。このように連続したオブジェクトは、オブジェクト全体の輪郭を示す１つのパス１０１３ａと１つの色値１０１３ｂを持つオブジェクトにまとめることができる。
【００１４】
図８の（ｄ）は、イメージオブジェクト（重なりなし）の例を示している。
例えば、図８（ｄ）に示すように、イメージオブジェクト１００４ａ、１００４ｂ、１００４ｃ、１００４ｄが順々に連続して描画され、オブジェクト同士が重ならない場合である。このように連続したオブジェクトは、オブジェクト全体を含むイメージ１０１４ｂと、オブジェクト全体の輪郭を示すパス１０１４ａにまとめることができる。
図８の（e）は、イメージオブジェクト（重なりあり）の例を示している。
例えば、図８（ｅ）に示すように、イメージオブジェクト１００５ａ、１００５ｂ、１００５ｃ、１００５ｄが順々に連続して描画され、オブジェクト同士に重なりが発生する場合である。このように連続したオブジェクトは、オブジェクト全体を含むイメージ１０１５ｂと、オブジェクト全体の輪郭を示し、イメージ１０１５ｂから実際の描画に不要な部分を切り抜くパス１０１５ａまとめることができる。
【００１５】
最適化部２０２は、オブジェクトが上記のまとめ対象のオブジェクトの場合はステップＳ７０２へ、そうでなければステップＳ７０４へ進む。
ステップＳ７０３において、最適化部２０２は、オブジェクトのまとめ処理を行う。詳細については、後ほど図９のフローチャートを用いて後述する。
ステップＳ７０４において、中間データ生成部２０３は、最適化部２０２がオブジェクトのまとめ処理を実行中かどうか確認する。オブジェクトをまとめた数が０より大きければまとめ処理を実行中である（詳細は図９のフローチャート）。中間データ生成部２０３は、まとめ処理を実行中の場合はステップＳ７０５へ、そうでなければステップＳ７０６に進む。
ステップＳ７０５において、中間データ生成部２０３は、最適化部２０２がまとめたオブジェクトの中間データを生成する。詳細については、後ほど図１０のフローチャートを用いて説明する。
ステップＳ７０６において、中間データ生成部２０３は、まとめ対象ではないオブジェクトの中間データを生成する。
ステップＳ７０７において、解析部２０１は、現在解析しているページのオブジェクトが終了したかどうか確認する。解析部２０１は、終了した場合はＳ７０８へ、終了してない場合はステップＳ７０１に戻りオブジェクトの解析を続ける。
ステップＳ７０８において、ハードレンダラ制御部２０４は、１ページの中間データのレンダラ１０３へ入力し、ビットマップ画像データを得る。
【００１６】
次に、図７のステップＳ７０３におけるオブジェクトのまとめ処理の詳細について、図９のフローチャートを用いて説明する。
ステップＳ８０１において、最適化部２０２は、まとめたオブジェクトの数を確認し、ままとめた数が０より多ければステップＳ８０２に進み、そうでなければステップＳ８０５へ進む。
ステップＳ８０２において、最適化部２０２は、新しいオブジェクトがこれまでまとめたオブジェクトとまとめられるか判断する。最適化部２０２は、まとめられる場合はステップＳ８０８へ、まとめられなければ、ステップＳ８０３へ進む。
ステップＳ８０３において、最適化部２０２は、これまでまとめたオブジェクトの中間データを生成する。詳細については図１０を用いて後述する。
ステップＳ８０４において、最適化部２０２は、まとめたオブジェクトの数をリセットして０とする。
ステップＳ８０５において、最適化部２０２は、新しいオブジェクトを格納する。
ステップＳ８０６において、最適化部２０２は、まとめたオブジェクトの数のインクリメントを行う。
ステップＳ８０７において、最適化部２０２は、まとめるオブジェクトの最大個数を仮決定する。
【００１７】
図１１は、最大個数の決定のために最適化部２０２が予め持つテーブルの一例を示す図である。テーブルには、まとめるオブジェクトの種別１１０１に対してまとめることが可能な最大個数１１０２が設定されている。このとき、矩形のグラフィックオブジェクトで、重なりがないようなオブジェクトは、そのまとめ処理の負荷が低いために大きな最大個数が設定されている。イメージで重なりがあるようなオブジェクトは、そのまとめ処理の負荷が高いため、小さな最大個数が設定されている。本実施形態において、図１１のＣＡＴＥＧＯＲＹ１〜５は、それぞれ図８の（ａ）〜（ｅ）のオブジェクトに該当する。最適化部２０２は、ステップＳ８０７を終えると、図７のステップＳ７０１に戻り、オブジェクト解析を続ける。
【００１８】
ステップＳ８０８において、最適化部２０２は、まとめるオブジェクトの最大個数の変更が必要かどうかを確認する。最適化部２０２は、新しいオブジェクトによって、まとめるオブジェクトの種別のＣＡＴＥＧＯＲＹが変わる場合は最大個数の変更が必要である。必要な場合はステップＳ８０９へ進み、そうでなければステップＳ８１０へ進む。
ステップＳ８０９において、最適化部２０２は、まとめるオブジェクトの最大個数の変更を行う。例えば、重なりがなく同色の矩形グラフィックオブジェクトをまとめている際に、新しいオブジェクトとして重なりが発生する同色の矩形グラフィックオブジェクトを受取ると、オブジェクトの種別はＣＡＴＥＧＯＲＹ１からＣＡＴＥＧＯＲＹ２になる。その場合、まとめるオブジェクトの最大個数は２５０から２００に変更される。
ステップＳ８１０において、最適化部２０２は、新しいオブジェクトとこれまでまとめたオブジェクトを１つにまとめて格納する。
ステップＳ８１１において、最適化部２０２は、まとめたオブジェクトの数のインクリメントを行う。
ステップＳ８１２において、最適化部２０２は、これまでにまとめたオブジェクトの数とまとめるオブジェクトの最大個数とを比較する。最適化部２０２は、まとめた数が最大個数を超えていたらステップＳ８１３へ進み、そうでなければ、図７のステップＳ７０１に戻り、オブジェクト解析を続ける。
ステップＳ８１３において、最適化部２０２は、これまでまとめたオブジェクトの中間データを生成する。詳細については図１０を用いて後述する。
ステップＳ８１４において、最適化部２０２は、まとめたオブジェクトの数をリセットして０とする。最適化部２０２は、ステップＳ８１４を終えると、図７のステップＳ７０１に戻り、オブジェクト解析を続ける。
【００１９】
次に、図７のステップＳ７０３や図９のステップＳ８０３、Ｓ８１３における、これまでまとめたオブジェクトの中間データ生成処理について、図１０のフローチャートを用いて説明する。
ステップＳ９０１において、最適化部２０２は、オブジェクトをまとめたイメージを生成する必要があるかどうかを決定する。最適化部２０２は、必要がある場合はステップＳ９０２へ、必要がなければステップＳ９０６へ進む。本実施形態では、図８のオブジェクトの種別（ｄ）（ｅ）がイメージの生成を必要とする。
ステップＳ９０２において、最適化部２０２は、まとめたオブジェクト同士に重なりがあるかどうかを確認する。最適化部２０２は、重なりがある場合はステップＳ９０３へ、なければステップＳ９０５へ進む。
ステップＳ９０３において、最適化部２０２は、まとめたオブジェクトの数が予め定められた閾値以上かどうかを確認する。図１２は、最適化部２０２に含まれるペインターズレンダラ２０２ａとスキャンラインレンダラ２０２ｂとが、重なりのあるイメージオブジェクトをソフトウェアレンダリングするときのオブジェクト数と処理時間との関係を示す図である。１２０１がスキャンラインレンダラ２０２ａの場合を示しており、１２０２がペインターズレンダラ２０２ｂの場合を示している。
【００２０】
先に述べたようにスキャンライン法は、エッジ３０２、レベル３０３、フィル３０４の情報を生成し、それらを参照しながらレンダリングするため、ペインターズ法に比べ複雑な処理を必要とする。そのため、この複雑なスキャンライン法の処理をソフトウェアで実行した場合、オブジェクトの数によってはペインターズ法の処理より時間を要してしまう。スキャンライン法とペインターズ法との処理時間が同じになるときのオブジェクト数が閾値となる。最適化部２０２は、まとめたオブジェクトの数が閾値以上の場合は、ステップＳ９０４に進み、そうでない場合はステップＳ９０５に進む。
ステップＳ９０４において、最適化部２０２は、ペインターズレンダラ２０２ａを利用してソフトウェアレンダリングを行い、まとめたオブジェクトのイメージを生成する。
ステップＳ９０５において、最適化部２０２は、スキャンラインレンダラ２０２ｂを利用してソフトウェアレンダリングを行い、まとめたオブジェクトのイメージを生成する。
ステップＳ９０６において、最適化部２０２は、まとめたオブジェクトの中間データを生成する。
【００２１】
以上で述べたように、オブジェクトに応じて最適化部でまとめるオブジェクトの数を切り替えることで、最適化部のまとめ処理が高負荷になること避けられる。また最適化部のまとめ処理においてイメージを生成する必要な場合は、まとめたオブジェクトの数に応じてレンダラを切り替えることで、イメージ生成が高負荷になること避けられる。
この結果、１ページに含まれるエッジが膨大な印刷ジョブからビットマップ画像データを高速に生成できるようになる。
【００２２】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００２３】
以上、上述した各実施形態によれば、オブジェクトのまとめ処理に高い負荷がかかることなく、ビットマップ画像データの生成処理を高速化することができる。
【００２４】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図１】
0005808195.tif 000002
【図２】
0005808195.tif 000003
【図３】
0005808195.tif 000004
【図４】
0005808195.tif 000005
【図５】
0005808195.tif 000006
【図６】
0005808195.tif 000007
【図７】
0005808195.tif 000008
【図８】
0005808195.tif 000009
【図９】
0005808195.tif 000010
【図１０】
0005808195.tif 000011
【図１１】
0005808195.tif 000012
【図１２】
0005808195.tif 000013