(57)【要約】【課題】レンダリング処理とオブジェクトの結合処理との負荷分散を行なうこと。【解決手段】印刷データに含まれる複数のオブジェクトを１つのオブジェクトに結合するための結合処理を行う画像形成装置において、印刷データの内容に基づいて、結合処理の結合対象となるオブジェクト数を決定し、決定されたオブジェクト数に基づいて、印刷データに含まれる複数のオブジェクトを１つのオブジェクトに結合する。【選択図】図５
2015116703.tif 000002
【特許請求の範囲】
【請求項１】
印刷データに含まれる複数のオブジェクトを１つのオブジェクトに結合するための結合処理を行う画像形成装置であって、
印刷データを取得する取得手段と、
前記取得された印刷データの内容に基づいて、前記結合処理の結合対象となるオブジェクト数を決定する決定手段と、
前記決定されたオブジェクト数に基づいて、前記取得された印刷データに含まれる複数のオブジェクトを１つのオブジェクトに結合する結合手段と、
を有する画像形成装置。
【請求項２】
前記印刷データから得られるデータを用いて描画処理を行う描画手段をさらに有することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記決定手段は、前記描画手段で行われる描画処理に要する時間が前記結合手段で行われる結合処理に要する時間よりも短くなるように前記オブジェクトの数を決定することを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記取得手段は、前記印刷データとして、ページ記述言語で記述されたページ記述言語データを取得し、
前記画像形成装置は、
前記ページ記述言語データから得られる描画命令に基づいて中間データを生成する生成手段をさらに有し、
前記描画手段は、前記生成手段で生成された中間データを用いて描画処理を行うことを特徴とする請求項２または３に記載の画像形成装置。
【請求項５】
前記結合手段は、前記結合対象となるオブジェクトに対応する描画命令に基づいて複数のオブジェクトを１つのオブジェクトに結合した画像データを生成し、生成した画像データを描画する描画命令を前記生成手段に出力する請求項４に記載の画像形成装置。
【請求項６】
前記決定手段は、前記印刷データの中間データを構成する要素数を集計し、集計した要素数から前記描画手段で行われる描画処理に要する時間を推定することを特徴とする請求項２から５のいずれか一項に記載の画像形成装置。
【請求項７】
前記決定手段は、前記印刷データの結合対象の数のオブジェクトに対応する描画命令に基づいて複数のオブジェクトを１つのオブジェクトに結合した画像データを生成する際に要する時間を前記結合手段で行われる結合処理に要する時間と推定する請求項２から６のいずれか一項に記載の画像形成装置。
【請求項８】
前記結合手段は、印刷データに含まれる印刷領域毎に結合処理を行うことを特徴とする請求項１から７のいずれか一項に記載の画像形成装置。
【請求項９】
前記結合手段は、処理対象の印刷領域において、結合されたオブジェクトの数が前記決定手段で決定されたオブジェクトの数を超える場合、前記決定手段で決定された数のオブジェクトを１つのオブジェクトに結合し、該処理対象の印刷領域における他のオブジェクトを用いた結合をさらに行うことを特徴とする請求項８に記載の画像形成装置。
【請求項１０】
印刷データに含まれる複数のオブジェクトを１つのオブジェクトに結合するための結合処理を行う画像形成方法であって、
印刷データを取得する取得工程と、
前記取得された印刷データの内容に基づいて、前記結合処理の結合対象となるオブジェクト数を決定する決定工程と、
前記決定されたオブジェクト数に基づいて、前記取得された印刷データに含まれる複数のオブジェクトを１つのオブジェクトに結合する結合工程と、
を有する画像形成方法。
【請求項１１】
コンピュータを請求項１から９のいずれか一項に記載の画像形成装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＤＬ（Page Description Language）データから中間データを作成し、中間データをレンダリングしてビットマップ画像を生成する画像形成装置及び画像形成方法に関する。
【背景技術】
【０００２】
近年のアプリケーションソフトやＯＳの多様化、および、ホストＰＣの性能向上によって、印刷描画命令が複雑化し、画像形成装置における描画処理の負荷が増大してきている。画像形成装置は、外部装置から受信したＰＤＬデータからディスプレイリストと呼ばれる中間データを生成する中間データ生成部と、生成した中間データからビットマップ画像を描画するレンダリング処理部とを含む。この中間データは、描画対象となる各オブジェクトの輪郭を示すエッジデータ（単にエッジとも呼ばれる）を含む。このエッジデータを含む中間データがレンダリング処理部によって処理されることでビットマップ画像が描画される。
【０００３】
ＰＤＬデータに輪郭の形状が複雑なオブジェクトが大量に含まれる場合、エッジが大量に生成される。その結果、レンダリング処理部にかかる負荷が大きくなり、処理時間が長くなってしまうことがある。
【０００４】
これに対して特許文献１は、中間データに含まれる複数のエッジが結合条件を満たしているかを判定し、結合条件を満たしている場合に複数のエッジを１つのエッジに結合し新たな中間データを生成する技術を開示している。このようなエッジの結合処理が行われることで、エッジ数を減らした新たな中間データが生成され、レンダリング処理部に対する負荷が低減される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３５０８０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示された手法においては、エッジの結合条件を満たしている場合に複数のエッジを結合する処理を行っている。そのため、データによっては大量の描画命令が結合条件を満たし、大量のエッジを結合する処理を行うことになるので、結合処理そのものに対する負荷がかかってしまう。その結果、レンダリング処理部の負荷が下がり、レンダリング処理部の時間は高速化されるが、結合処理に非常に時間がかかり、トータルの印刷時間としては結合処理を行うことによって、結合処理を行わない場合より遅くなってしまうことがあり得る。
【課題を解決するための手段】
【０００７】
本発明に係る画像形成装置は、印刷データに含まれる複数のオブジェクトを１つのオブジェクトに結合するための結合処理を行う画像形成装置であって、印刷データを取得する取得手段と、前記取得された印刷データの内容に基づいて、前記結合処理の結合対象となるオブジェクト数を決定する決定手段と、前記決定されたオブジェクト数に基づいて、前記取得された印刷データに含まれる複数のオブジェクトを１つのオブジェクトに結合する結合手段とを有する。
【発明の効果】
【０００８】
本発明によれば、結合処理とレンダリング処理の負荷分散を行うことが可能となる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態における、画像形成装置を含む印刷システムの一実施形態を示すハードウェア構成図である。
【図２】本発明の実施形態における、印刷データ制御装置と画像形成装置との一実施形態を示すソフトウェアブロック図である。
【図３】本発明の実施形態における、ＰＤＬデータと中間データとビットマップデータとの例を示す模式図である。
【図４】本発明の実施形態における、描画集計情報の一例を示す模式図である。
【図５】本発明の実施形態における、結合処理部への入力データと結合処理部からの出力データとの例を示す模式図である。
【図６】結合処理部における結合過剰のケースと結合不足ケースとを示す図である。
【図７】本発明の実施形態における、描画集計情報の取得に関するフローチャートを示す図である。
【図８】本発明の実施形態における、一連の描画処理に関するフローチャートを示す図である。
【図９】本発明の実施形態における、結合数の決定に関するフローチャートを示す図である。
【図１０】本発明の実施形態における、結合数の決定に関する描画データの一例と、描画集計情報の一例と、処理時間の予測に用いる予測式とを示す模式図である。
【図１１】本発明の実施形態における、処理時間の短縮効果を示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を用いて説明する。ただし、この実施形態に記載されている構成要素はあくまで例示であり、この発明の範囲をそれらに限定する趣旨のものではない。
【００１１】
図１は、本実施形態に関係する電子部品としてのコントローラが搭載された画像形成装置およびその周辺の機器を含む印刷システムの例を示すブロック図である。印刷システムは、画像形成装置１００と、ＰＣ１７０とファイルサーバー１８０とＬＡＮ（Local Area Network）１６０とを含む。
【００１２】
画像形成装置１００は、イーサネット（登録商標）等のＬＡＮにて、ホストコンピュータであるＰＣ１７０とファイルサーバー１８０とに接続されている。画像形成装置１００は、リーダー部１２０と、プリンタ部１３０と、操作部１４０と、画像記憶部１５０と、さらに、これら各構成要素を制御するコントローラ部１１０とを含む。コントローラ部１１０は、ＣＰＵ１１２と、ＲＯＭ１１４と、ＲＡＭ１１６とを含む。
【００１３】
ＣＰＵ１１２がＲＯＭ１１４または他の記憶媒体に格納されたプログラムに基づいて、画像形成装置１００全体を統括制御する。例えば、コントローラ部１１０は、ＣＰＵ１１２を用いて、ＰＤＬ解析処理、結合処理、中間データ生成処理、及びレンダリング処理等を行うためのあらかじめ決められたプログラムをロードする。なおレンダリング処理に関しては、専用のハードウェアを利用しても構わない。
【００１４】
プリンタ部１３０は、レンダリングした結果の画像データ（ビットマップデータ）の紙出力を行う。操作部１４０は、画像出力処理を行うための各種印刷設定の操作を行うキーボード、及び画像出力設定を行う操作ボタン等の表示を行う液晶パネルなどを備える。画像記憶部１５０は、画像データやドキュメントデータ、印刷装置制御言語（例えば、ＥＳＣコード、ＰＤＬ）などの印刷データの格納ができる。例えば、画像記憶部１５０は、ＬＡＮを介してＰＣ１７０やファイルサーバー１８０から受信した画像データ、ドキュメントデータ、ＰＤＬデータ（ページ記述言語データ）や、リーダー部１２０を制御して読み込む画像データの格納ができる。
【００１５】
本実施形態では、画像形成装置１００はＭＦＰ（Multi Function Printer）を例として用いて説明する。もちろん、ＳＦＰ（Single Function Printer）やＬＢＰ（Laser Beam Printer）、その他のプリント方式のプリンタでもよいことは言うまでもない。
【００１６】
ＰＣ１７０は、ＣＰＵ１７２とＲＯＭ１７４とＲＡＭ１７６とを含む。ＰＣ１７０は、印刷ジョブを生成してファイルサーバー１８０に送信する。
【００１７】
ファイルサーバー１８０は、データ記憶部１８５と印刷データ制御部１８７とを有する。印刷データ制御部１８７は、ＣＰＵ１８１とＲＯＭ１８２とＲＡＭ１８３とを含む。
【００１８】
ＰＣ１７０にて生成された印刷ジョブは、ＬＡＮを介して、ファイルサーバー１８０へ送信される。印刷ジョブは、ファイルサーバー１８０におけるデータ記憶部１８５に格納される。
【００１９】
図２は、本実施形態におけるファイルサーバーの印刷データ制御部１８７および画像形成装置１００のコントローラ部１１０において動作するソフトウェアモジュール図の一例を示す図である。
【００２０】
図２（ａ）は、印刷データ制御部１８７におけるＲＯＭ１８２に格納されており、起動時に、ＲＡＭ１８３へ展開され、ＣＰＵ１８１により実行されるソフトウェアのモジュール図である。
【００２１】
データ制御部２４０は、データ記憶部１８５に格納された印刷ジョブの入力から出力までの処理を関数コールやメッセージ通信などの手法により制御する。
【００２２】
ＰＤＬ解析部２４１、２４２、２４３は、画像形成装置１００に搭載されるＰＤＬの種類（例えば、ＰｏｓｔＳｃｒｉｐｔ（登録商標）、ＰＣＬ、ＸＰＳ）に応じて存在する。例えば、３つのＰＤＬの種類が画像形成装置１００で搭載される場合、３つのＰＤＬ解析部が備えられる。ＰＤＬ解析部２４１―２４３は、データ制御部２４０からの制御に従い、データ記憶部１８５に格納された印刷ジョブの中からＰＤＬデータを読み込み、解析処理を実行する。描画集計情報生成部２４５は、データ制御部２４０からの制御に従い、ＰＤＬ解析部２４１―２４３から渡されたＰＤＬコマンド（描画命令）を用いて処理を実行し、中間データを構成するエッジ／レベル／フィルといった要素の数を集計する。描画命令はＰＤＬコマンドに含まれる命令である。すなわち、より詳細には、描画集計情報生成部２４５は、ＰＤＬコマンドに含まれる描画命令群を用いて中間データを構成する要素の数を集計する。ＰＤＬコマンドと描画命令との違いの詳細については後述するが、以下では同じような意味として用いられる場面では、両者を上記のように併記する場合がある。
【００２３】
描画集計情報生成部２４５は、描画命令から中間データを生成する場合における上記の要素の数をオブジェクト毎にカウントしてカウントした数を描画集計情報２４８として生成する。このように、描画集計情報は、ある領域におけるオブジェクトの中間データを構成する要素数を集計したものである。描画集計情報の詳細については後述する。生成された描画集計情報は、ファイルサーバー１８０上のＲＡＭ１８３に印刷ジョブに含めて格納される。
【００２４】
ファイルサーバー１８０に格納された描画集計情報を含む印刷ジョブは、ＬＡＮを介して、画像形成装置１００へ送信される。ユーザーは、ＰＣ１７０にて印刷ジョブを送信した後、画像形成装置１００にて、ＩＤを用いてユーザー認証を行い、紙出力する印刷ジョブを選択する。選択された印刷ジョブは、ファイルサーバー１８０におけるデータ記憶部１８５から、画像形成装置１００へと送信される。なお、本実施形態では、このようにＰＣ１７０から印刷ジョブがファイルサーバー１８０に格納されており、ユーザーが画像形成装置１００にて認証を行って印刷ジョブを選択する例を用いて説明するが、これに限られるものではない。すなわち、ＰＣ１７０から画像形成装置１００に印刷ジョブが送信され、画像形成装置１００において描画集計情報を生成する処理としてもよい。すなわち、図１の例における画像形成装置１００とファイルサーバー１８０とが一体となった構成であってもよい。従って、画像形成装置１００は、外部装置から得られる印刷ジョブを取得してもよいし、内部に格納している印刷ジョブを取得してもよい。
【００２５】
図２（ｂ）は、画像形成装置１００におけるＲＯＭ１１４にて格納され、起動時に、ＲＡＭ１１６へ展開され、ＣＰＵ１１２にて動作するソフトウェアのモジュール図である。ジョブ制御部２００は、データ記憶部１８５に格納された印刷ジョブの入力から出力を、関数コールやメッセージ通信などの手段により制御する。ＰＤＬ解析部２０１、２０２、２０３は、画像形成装置１００に搭載されるＰＤＬの種類（例えば、ＰｏｓｔＳｃｒｉｐｔ（登録商標）、ＰＣＬ、ＸＰＳなど）に応じて存在する。ＰＤＬ解析部２０１―２０３は、ジョブ制御部２００からの制御に従い、ＲＡＭ１１６に格納された印刷ジョブの中からＰＤＬデータを逐次読み込み、解析処理を実行する。結合処理部２０５は、結合処理部は、印刷ジョブの内容に基づいてオブジェクトの結合数を決定する。例えば、ジョブ制御部２００から渡される描画集計情報と、ＰＤＬ解析部２０１―２０３から渡されるＰＤＬコマンド（描画命令）とを用いて、オブジェクトの結合数をある印刷領域毎に決定する。さらに、結合処理部２０５は、決定した結合数に達するまでオブジェクトの結合処理を実行する。そして結合処理部２０５は、結合したオブジェクトを示す描画命令を中間データ生成部２１０に送る。より詳細には、結合処理部２０５は、結合対象のオブジェクトについてＰＤＬコマンド（描画命令）から中間データを生成し、局所的にレンダリング処理を行う（以下、プレレンダリングと称する）。そして、局所的にレンダリングされた後の結合対象のオブジェクトを含む画像データ（ビットマップデータ）を示す描画命令（すなわち、イメージデータの描画命令）を中間データ生成部に送信する。結合処理の詳細については後述する。なお、結合処理部２０５は、結合しないオブジェクトについては描画命令をそのまま中間データ生成部２１０に送る。つまり、結合処理部は、局所的な中間データ生成部及び局所的なプレレンダリング処理部であり、プレレンダリング処理後の画像データ（ビットマップデータ）を描画する描画命令を出力する機能を有しているとも言える。
【００２６】
中間データ生成部２１０は、結合処理部２０５から受信した描画命令から中間データを生成し、ＲＡＭ１１６にディスプレイリストとして格納する。ディスプレイリストは、前述の中間データを構成する要素をリストの形式にしたものである。１ページ分の中間データが生成されると、レンダリング処理部２２０は、ＲＡＭ１１６から中間データを読み込んでレンダリング処理を実行し、画像データ（ビットマップデータ）を出力する。出力された画像データは、画像記憶部１５０に格納される。この画像形成装置１００による結合処理部２０５および中間データ生成部２１０に関する一連の処理の詳細については後述する。
【００２７】
図３は、本実施形態に関わる、ＰＤＬデータを解析して得られるオブジェクトのＰＤＬコマンド（描画命令）と、描画命令から得られる中間データと、中間データをレンダリングして得られる画像データとを示す模式図である。
【００２８】
図３（ａ）は、アプリケーションから出力されるＰＤＬデータを解析して得られる、あるオブジェクトのＰＤＬコマンド（描画命令）と、そのオブジェクトをページ上に描画した例を示す模式図である。ＰＣ１７０にて生成される印刷ジョブは、ＰＤＬデータを含む。ＰＤＬ解析部による解析によってＰＤＬデータから例えば図３（ａ）に示すようなＰＤＬコマンド３００が得られる。図３（ａ）に示すように、ＰＤＬコマンドは、描画するキャンバスの指定、開始点や各点列の座標位置、色値やストローク幅といった描画命令群を含む。中間データ生成部は、この描画命令群から中間データを生成する。図３（ａ）のＰＤＬコマンド３００（すなわち、描画命令群）は、図３（ａ）のページビュー３１０の描画を意図したコマンドである。
【００２９】
図３（ｂ）は、図３（ａ）に示すＰＤＬコマンド３００を用いて中間データ生成部によって生成される中間データを示す図である。図３（ｂ）に示す中間データは、描画オブジェクトの輪郭情報を有するエッジデータ３３０と、描画オブジェクトの重なり情報を有するレベルデータ３３１と、描画オブジェクトの塗り情報を有するフィルデータ３３２とから構成される。各オブジェクトに対応するデータはエッジ、レベル、フィルの順に参照したリスト構成（ディスプレイリスト）を持つ。レンダリング処理部は、この中間データをエッジから順にたどっていくことで、レンダリング処理を実施する。
【００３０】
図３（ｃ）は、図３（ｂ）に示す中間データ（ディスプレイリスト）からレンダリング処理部によってレンダリングされた後の画像データを示す図である。図３（ｃ）に示すように、描画オブジェクトのビットマップデータ３２０が、レンダリング処理の実行後に生成される。
【００３１】
図４は、本実施形態に関わる、描画集計情報の一例を示す模式図である。この描画集計情報はファイルサーバー１８０の描画集計情報生成部２４５によって生成される。この描画集計情報は、画像形成装置１００のレンダリング処理部２２０および結合処理部２０５における処理時間を予測するために結合処理部２０５において用られる。処理時間の予測の例については後述する。描画集計情報は、図３（ｂ）にて説明した中間データ形式におけるエッジ、レベル、フィルといった中間データを構成する各要素の情報をある領域毎（たとえばバンドまたはブロック毎）に集計した値である。具体的には図４に示すような情報である。例えば、エッジ総数とは、各バンドまたはブロック毎に含まれる各オブジェクトのエッジ数を記載した値になる。なお、描画集計情報生成部２４５は、例えば、描画命令を解釈して、点の座標位置を追跡したり、矩形の数を数えることで、エッジの数を推定することができる。その他の中間データを構成する要素についても同様に、実際に中間データを生成せずにその要素数を推定することができる。
【００３２】
図５は、本実施形態に関わる、結合処理部２０５における入出力結果の一例を示す模式図である。画像形成装置１００の結合処理部２０５は、レンダリング処理部２２０の処理時間を短縮化するために、ＰＤＬ解析部２０１―２０３によって発行されたＰＤＬコマンドによって描画されるオブジェクトを結合する。ＰＤＬコマンドとは、例えば図３（ａ）に示すような描画命令群を含むコマンドである。本実施形態においては、１つのＰＤＬコマンドに複数の描画命令が含まれており、１つのＰＤＬコマンドに含まれる描画命令群によって１つのオブジェクトが描画されるものとする。この描画されるオブジェクトのことを描画オブジェクトと称する。
【００３３】
図５（ａ）は、結合処理部２０５へ入力されたＰＤＬコマンドによって描画される描画オブジェクトの例を示す模式図である。図５（ａ）の例では、所定の領域に５つ矩形オブジェクトが含まれている。すなわち、図５（ａ）の例では、図３（ａ）で示すようなＰＤＬコマンドが５つ結合処理部２０５に入力されている。結合処理部２０５は、ＰＤＬコマンドに対応する領域の描画集計情報を参照して、中間データを構成するであろう要素数を決定する。この結果を用いて結合処理部２０５は結合処理を行なう。図５（ａ）の例では、結合処理部２０５は、入力されたＰＤＬコマンドから５つの矩形オブジェクトを含むことを決定し、描画集計情報から中間データの要素数として１０エッジ、５レベル、５フィルの情報を含むことを決定する。
【００３４】
ある描画領域内に複数の描画オブジェクトが多量に存在する場合は、レンダリングに要する時間は指数関数的に増える。そこで、レンダリング処理部２２０の処理時間を短縮化するために、描画オブジェクトを結合すること、換言すれば、局所的にプレレンダリング処理をすることで、レンダリング処理に要する時間を短縮化することができる。
【００３５】
図５（ｂ）は、図５（ａ）の描画オブジェクトを１つの描画オブジェクトとして結合した結果例を示す模式図である。５つの描画オブジェクトを結合処理部２０５にてプレレンダリングし、１つのイメージ画像を含む描画オブジェクトへとまとめることで、生成される中間データの要素数が減少する。すなわち、結合処理部２０５は、５つの描画オブジェクトを示すＰＤＬコマンドから中間データを生成する。生成される中間データは、図５（ａ）に示すように、１０エッジ、５レベル、５フィルの情報を含む。そして、結合処理部２０５は、この生成された中間データをプレレンダリングして５つの描画オブジェクトを含むビットマップデータを生成する。結合処理部２０５は、この５つの描画オブジェクトを含むビットマップデータを描画する描画命令を生成する。そして、結合処理部２０５は、５つの描画オブジェクトを示すＰＤＬコマンド（描画命令群）に代えて、生成したビットマップイメージデータを描画する描画命令を中間データ生成部２１０に出力する。このように出力された描画命令から中間データ生成部２１０が生成する中間データは、図５（ｂ）に示すように、２エッジ、１レベル、１フィルとなる。すなわち、図５（ａ）で示す中間データよりも図５（ｂ）で示す中間データの方が中間データを構成する要素数が減少している。このように結合処理によって、中間データにおける描画情報が減ることで、レンダリング処理部２２０の処理時間を短縮化することができる。
【００３６】
しかしながら、闇雲に結合数を増やすと、結合処理に時間がかかりすぎてしまうことがある。上述したように、結合処理とは、いわば局所的なレンダリング処理であるといえる。レンダリング処理においては、中間データの要素数が増えると指数関数的にレンダリング処理に要する時間が増える。ここで、結合数を増やすことは結合処理部におけるプレレンダリングする中間データの要素数が増えることになるので、結合処理（すなわち、プレレンダリング処理）に時間がかかりすぎてしまう状況が発生してしまう。
【００３７】
図６は、結合処理部での結合不足および結合過剰な状態を示す模式図である。図６（ａ）は、結合処理部２０５へ入力されたＰＤＬコマンドにより描画される描画オブジェクトの例を示す模式図である。図６（ａ）では、１２個のＰＤＬコマンドによって表される１２個の多角形オブジェクトが局所的に密集して配置される例を示している。すなわち、結合処理部に入力されるＰＤＬコマンドは、図６（ａ）のような描画オブジェクトを描画するコマンドである。このような局所的に密集するような描画オブジェクト群については、レンダリング処理部２２０の処理時間を短縮化するために、結合処理部２０５にて結合処理（プレレンダリング処理）を行う。
【００３８】
図６（ｂ）は、図６（ａ）の１２個の描画オブジェクトを１つの描画オブジェクトに結合した状態を示す模式図である。実際には、結合処理部２０５は、前述の通りＰＤＬコマンドから得られる描画命令に基づいて局所的な領域の中間データを生成してプレレンダリングし、１つのビットマップデータを生成する。そして、結合処理部２０５は、そのビットマップデータを描画する描画命令を生成して中間データ生成部２１０に出力する。このような処理が描画オブジェクトの結合処理である。以下では、このような結合処理を、説明を簡略するために、単に複数の描画オブジェクトを１つの描画オブジェクトに結合するという概念的な表現で説明する場合がある。なお、中間データ生成部２１０では、結合処理部２０５から出力された描画命令から中間データを生成し、レンダリング処理部２２０では、中間データをレンダリングする処理が行われることになる。
【００３９】
図６（ｂ）のように、全ての描画オブジェクトを結合対象としてまとめると、レンダリング処理部２２０の処理時間は大幅に短縮されるが、結合処理部２０５におけるプレレンダリング処理時間が増加してしまう。その結果、画像形成装置１００のＣＰＵ１１２上で動作するソフトウェアの処理時間が、結合処理によって増加してしまう場合が生じる。
【００４０】
図６（ｃ）は、図６（ａ）のうちの２個の描画オブジェクトを１つの描画オブジェクトに結合した状態を示す模式図である。このように、少ない数の描画オブジェクトを結合すると、結合処理部２０５の処理時間は少ない。しかしながら、レンダリング処理部２２０の処理時間は短縮されず、画像形成装置１００のＣＰＵ１１２上で動作するソフトウェアの処理時間としては、レンダリング処理によって非常に時間がかかってしまう。
【００４１】
図６（ｄ）は、結合過剰ケースと結合不測ケースの処理時間の例を示す図である。図６（ａ）では、描画オブジェクトを１２として説明したが、図６（ｄ）では描画オブジェクトを１０２４×１０２４個としたときの、画像形成装置１００のＣＰＵ１１２上で動作するソフトウェアの処理時間を示す図である。結合過剰ケース（図６（ｂ）相当）は、１０２４×１０２４個の描画オブジェクト全てを結合処理部にて結合した時である。この場合、レンダリング処理時間が０．５秒と短いが、結合処理時間が、１９８４．２秒と非常に時間がかかってしまう。また、結合不足ケース（図６（ｃ）相当）では、１０２４×１０２４個ある描画オブジェクトを１０個単位で結合を行った後に中間データに変換し、レンダリング処理部２２０にてレンダリング処理を実施した時間である。この場合、結合処理時間が１２．３秒と短いが、レンダリング処理時間が、７６２．２秒と非常に時間がかかってしまう。レンダリング処理においてソート処理にかかる時間の比重が高いため、エッジデータが増加すればするほど、指数関数的に処理時間が増加する傾向にある。そこで、本実施形態では、描画オブジェクトの個数を調整することで、結合不足および過剰を避け、結合処理部２０５とレンダリング処理部２２０の処理時間の負荷分散を行う。
【００４２】
図７は、ファイルサーバー１８０の印刷データ制御部１８７にあるＣＰＵ１８１上で動作するソフトウェアである図2（ａ）のソフトウェアのモジュールの動作の一例を示すフローチャートである。まず、ステップＳ７０１において、印刷データ制御部に含まれるデータ制御部２４０は、データ記憶部１８５に格納されたＰＤＬデータを読み込み、該当するＰＤＬ解析部へ、解析処理依頼を実行する。次にステップＳ７０２において、ＰＤＬ解析部２４１、２４２、２４３は、ＰＤＬデータから得られた図３（ａ）のようなＰＤＬコマンドを解析する。次にステップＳ７０３へ進み、ＰＤＬ解析部２４１―２４３は、ＰＤＬコマンドを解析して描画命令を発行し、その描画命令を描画集計情報生成部２４５へ通知する。次にステップＳ７０４へ進み、描画集計情報生成部２４５は、描画命令によって発行される中間データの要素数を推定する。例えば、図３（ａ）に示すＰＤＬコマンド（描画命令）から、図３（ｂ）に示すような中間データの要素数を推定する。次にステップＳ７０５へ進み、推定した中間データの要素数を集計する。次にステップＳ７０６へ進み、描画集計情報生成部２４５は、ある領域毎に中間データの要素数を集計した描画集計情報を生成する。ＰＤＬコマンド解析が終了するまでステップＳ７０２からＳ７０６の処理を繰り返す。全てのＰＤＬコマンドの解析が終了したら、ステップＳ７０７へ進み、印刷データ制御部１８７は、描画集計情報２４８を印刷ジョブに含めてデータ記憶部１８５に格納する。
【００４３】
図８は、画像形成装置１００のコントローラ部１１０にあるＣＰＵ１１２上で動作する図2（ｂ）のソフトウェアのモジュールの一例の描画処理についての動作を示すフローチャートである。まず、ステップＳ８０１において、ジョブ制御部２００はファイルサーバー１８０から受信した印刷ジョブをＲＡＭ１１６に格納する。印刷ジョブはＰＤＬデータと描画集計情報とを含む。次にステップＳ８０２において、ＰＤＬ解析部２０１―２０３は印刷ジョブに含まれるＰＤＬデータを解析する。
【００４４】
次にステップＳ８０３において、ＰＤＬ解析部２０１―２０３はページ開始命令を発行し、先頭ページのＰＤＬ解析を実施する。次にステップＳ８０４へ進み、結合処理部２０５は、ある領域において結合処理部が結合する描画オブジェクトの数を決定する。ステップＳ８０４では、結合処理部２０５が描画集計情報を読み込み、レンダリング処理の時間予測を行い、描画オブジェクトの結合数を決定する。このステップＳ８０４における結合数の決定処理に関しては、図９および図１０を用いて後述する。
【００４５】
次にステップＳ８０５へ進み、ＰＤＬ解析部２０１―２０３はＰＤＬデータの該当ページにおけるＰＤＬコマンドを解析する。前述の通り、１つのＰＤＬコマンドから１つの描画オブジェクトが描画される。ステップＳ８０５では、該当ページに対応する複数のＰＤＬコマンドのうち、１つのＰＤＬコマンドを処理単位として以降の処理を行う。
【００４６】
ステップＳ８０６において、ＰＤＬ解析部２０１―２０３はＰＤＬコマンドに含まれる描画命令を発行し、その描画命令を結合処理部２０５へ通知する。次にステップＳ８０７へ進み、結合処理部２０５は、通知された描画命令が結合条件を満たすかどうかを判定する。結合条件とは、描画命令によって描画される描画オブジェクトの位置や属性と、その描画命令の前後の描画命令によって描画される描画オブジェクトの位置や属性とによって決定される。例えば、描画オブジェクトの位置が一定以上重なっている場合や、描画オブジェクトの属性が同じ場合に結合条件を満たすと判定される。結合条件はこの例に限られるものではなく、任意の条件を設定することができる。
【００４７】
ステップＳ８０７において結合条件を満たさないと判定された場合、ステップＳ８１３に進み、中間データ生成部２１０にて中間データを生成する処理を開始する。ステップＳ８０７において結合条件を満たすと判定された場合は、ステップＳ８０８に進み、結合処理部２０５が、結合条件を満たす描画オブジェクト数が結合数以下かどうかを判定する。より詳細には、結合処理部２０５は、結合条件を満たす描画オブジェクトの数が、現在の処理対象の領域に対応するステップＳ８０４で決定された結合数以下か否かを判定する。本実施形態では、結合数は所定の領域毎に決定されるので、ステップＳ８０８の判定も所定の領域毎に行われる。
【００４８】
ステップＳ８０８において、結合条件を満たすオブジェクト数が結合数より多い場合は、ステップＳ８１３に進み、中間データ生成部２１０にて中間データに含まれる要素を生成する処理を開始する。一方、ステップＳ８０８において、結合条件を満たすオブジェクト数が結合数以下の場合は、ステップＳ８０９に進み、結合処理部２０５は、ステップＳ８０６で発行された描画命令で描画される描画オブジェクトを結合対象のオブジェクトと決定する。
【００４９】
次にステップＳ８１０において結合処理部２０５は、結合対象のオブジェクトの数はステップＳ８０４で決定された結合数であるかを判定する。結合対象のオブジェクトの数が決定された結合数である場合、ステップＳ８１２において結合処理部２０５は、結合対象のオブジェクトの結合処理を行う。ステップＳ８１０において結合対象のオブジェクトの数が決定された結合数でない場合、ステップＳ８１１において結合処理部２０５は、現在の処理対象となっているＰＤＬコマンドが最後のＰＤＬコマンドであるかを判定する。ここでは、領域毎に結合処理を行っているので、処理対象の領域における最後のＰＤＬコマンドであるかを判定する。最後のＰＤＬコマンドである場合、ステップＳ８１２に進みそれまでの結合対象のオブジェクトを用いて結合処理を行う。最後のＰＤＬコマンドでない場合、ステップＳ８０５に処理を戻す。
【００５０】
ステップＳ８１２において結合処理部２０５は、処理対象のオブジェクトの結合処理を行う。すなわち、処理対象となっている複数のオブジェクトそれぞれをプレレンダリングし１つのビットマップデータを生成する。そして生成したビットマップデータを示す描画命令を中間データ生成部２１０に出力する。
【００５１】
具体例を挙げてステップＳ８０８からステップＳ８１２の処理について補足する。例えば、ある領域についてステップＳ８０４で決定された結合数が１００であるとする。この意味は、この領域について１００個の描画オブジェクトを結合した場合、結合処理に要する時間もレンダリング処理に要する時間もほどよく調和されたものとなる数である。このとき、この領域に描画オブジェクトが３００個あると仮定する。また、この３００個のオブジェクトは全て結合条件を満たすものと仮定する。この場合、１つ目から１００個目までの描画オブジェクトが１つの描画オブジェクトに結合される。その次の１０１個目から２００個目までの描画オブジェクトについても同様に１つの描画オブジェクトに結合される。
【００５２】
ステップＳ８１３において中間データ生成部２１０は、受信した描画命令に基づいて中間データを生成する。すなわち、中間データに含まれる要素を生成する。
【００５３】
該当ページのＰＤＬコマンドを全て解析するまでステップＳ８０５からＳ８１３処理を繰り返す。該当ページのＰＤＬコマンドを全て解析し、中間データに含まれる要素を生成し終えたら、次にステップＳ８１３へ進み、中間データをクローズする。次にステップＳ８１４へ進み、レンダリング処理部２２０は、ＲＡＭ１１６から中間データを読み込み、中間データをレンダリングし、ステップＳ８１５にて画像出力を行う。全てのページに対して、中間データを生成し、レンダリング処理を実施するまでＳ８０３からＳ８１６の処理を繰り返し、一連の処理を終了する。
【００５４】
図９は、画像形成装置１００のコントローラ部１１０にあるＣＰＵ１１２上で動作する結合処理部２０５の動作を示すフローチャートであり、Ｓ８０４における描画集計情報から結合数を決定する処理を示す図である。結合処理部２０５は、ステップＳ９０１において、ジョブ制御部２００から渡される描画集計情報を読み込む。次にステップＳ９０２へ進み、先頭領域であるバンドを、レンダリング処理時間を予測し、結合数を決定する対象の領域とする。以下、領域のことをバンドと称する。
【００５５】
本実施形態では、図１０（ａ）に示す模式図のように、バンド単位で描画集計情報が生成されている。よって、結合数の決定もバンド毎に行われる。すなわち、先頭のバンド１からバンド２、バンド３へと順次、各バンドの描画集計情報からのレンダリング時間の予測処理が行われることになる。詳細は後述する。
【００５６】
ステップＳ９０３において結合処理部２０５は、結合数を初期値に設定する。初期値はどのような値であってもよいが、本実施形態では、以降の処理で結合数を引き上げる処理を行うので、２や５などの少ない値を用いるものとする。また、結合しないことを示す０であってもよい。結合処理部２０５は、初期値の結合数によって結合処理部２０５が描画オブジェクトを結合した場合に推定される減少した中間データの要素の数で、受信した描画集計情報を更新する。例えば初期値の結合数が５個である場合、受信した描画集計情報に含まれる中間データの要素の推定数を結合数に応じて減らす。この処理は、先に説明したようにＰＤＬコマンドの描画命令から結合されるであろう結合対象の描画オブジェクトを推定し、結合対象の描画オブジェクトを結合した場合に残る中間データの要素の数を推定する。結合処理部２０５は、この減少した値を用いて受信した描画集計情報を更新する。
【００５７】
次にステップＳ９０４へ進み、結合処理部２０５は、対象バンドにおける更新された描画集計情報からレンダリング処理時間を予測する。次にステップＳ９０５へ進み、結合処理部２０５は、レンダリング予測時間がＮ分以上であるかどうかを判定する。Ｎはレンダリング予測時間がこの値を超えると処理に時間がかかりすぎるとユーザーが考える時間を任意に設定できる。例えばＮは３であるとする。
【００５８】
具体例を用いて説明する。図１０（ａ）を入力データの例とした場合、ステップＳ９０５では、バンド１の描画集計情報を図１０（ｂ）として読み込む。バンド１には矩形オブジェクトが一つしか存在しないため、エッジ総数は２といった描画集計情報が記載されている。図１０（ｅ）はステップＳ９０４で行う描画集計情報からのレンダリング時間の予測に用いる予測式である。描画集計情報の各パラメーターを用いて、レンダリング時間を予測する。図１０（ｅ）の“a” から“n”は所定の係数である。EdgeCountはエッジ総数に対応し、VectorEdgeはエッジの種類に対応し、SegmentHeightはエッジの長さ総数に対応し、SegmentCountは点列数に対応し、EdgeDensityはエッジ密集度に対応する。また、CompositeLevelはレベル総数に対応し、LevelDensityはレベル密集度に対応する。また、FillCountはフィル総数に対応し、RotateImageは回転イメージ総数に対応し、NoRotateImageは非回転イメージ総数に対応する。CompositeImageは合成イメージ総数に対応し、NoCompositeImageは非合成イメージ総数に対応し、GradImageはグラデーション総数に対応する。Ｃは定数である。この計算式によって算出される予測時間がＮ分以上であるかどうかの判定を、ステップＳ９０５の処理で判定する。
【００５９】
次にステップＳ９０５において、結合処理部２０５は、予測したレンダリング時間がＮ分以上であるかどうかを判定する。Ｎ分以下である場合は、レンダリング処理に負荷のかかるバンドデータではないため、そのままステップＳ９１３へ進み、全バンド分の処理を繰り返す。ステップＳ９０５において、レンダリング処理の予測時間がＮ分以上である場合は、ステップＳ９０６に進み、ステップＳ９０３で設定した結合数（＝初期値）をＭだけ引き上げる（Ｍを結合数に加算する）。次にステップＳ９０７へ進み、引き上げた結合数によって、描画集計情報を更新する。描画集計情報の更新についてはステップＳ９０３で説明したものと同様に処理が行われる。次にステップＳ９０８へ進み、結合処理部２０５は、更新された描画集計情報によってレンダリング時間を予測する。
【００６０】
次にステップＳ９０９へ進み、結合処理部２０５は、ステップＳ９０９で得られたレンダリング予測時間がＮ分未満かどうかを判定する。Ｎ分未満でない場合は、まだレンダリング処理時間が基準時間としたＮ分に満たしていないため、さらに結合する必要性がある。そこで、結合数を引き上げるためステップＳ９０６に進み、再度ステップＳ９０６から９０９の処理を繰り返す。
【００６１】
ステップＳ９０９において、レンダリング予測時間がＮ分未満と判定した場合は、ステップＳ９１０へ進み、引き上げた結合数での結合処理部２０５にかかる結合処理時間を同様に予測する。すなわち、引き上げた結合数分の描画オブジェクトをプレレンダリングした場合の処理時間を予測する。
【００６２】
次にステップＳ９１１へ進み、結合処理部２０５は、ステップＳ９０８にて行ったレンダリング処理の予測時間と、ステップＳ９１０にて行った結合処理の予測時間に基準値であるＮ分を加えた時間とを比較する。ステップＳ９１１において、レンダリング処理の予測時間が、結合処理の予測時間＋Ｎより大きい場合は、結合処理のコストが低いので、結合処理が高速化処理として機能する。よって、ステップＳ９１２に進み、Ｓ９０６にて引き上げていった結合数を当該バンドに適用すると決定する。ステップＳ９１１において、レンダリング処理の予測時間が、結合処理の予測時間＋Ｎより小さい場合は、結合処理のコストが高く、結合処理そのものがネックとなるので結合数の引き上げは行わず、当該バンドには初期値のままの値を用いる。次にステップＳ９１３へ進み、次のバンドがあるか判定する。次のバンドがある場合は、ステップＳ９１４にて対象バンドを進める。全てのバンドに対して結合数の算出を行った場合は、一連の処理を終了する。
【００６３】
以下、図１０の例を用いて具体的に説明する。図１０（ａ）のバンド２を入力データの例とした場合、ステップＳ９０１では、バンド２の描画集計情報を図１０（ｃ）として読み込む。バンド２には多角形オブジェクトが大量に存在するため、エッジ総数は１，０４８，５７６といった値が含まれている。バンド２には大量のエッジが含まれるためレンダリング時間が３分以上と予測される。従って、ステップＳ９０６に進み結合数の引き上げを開始する。ステップＳ９０７では、ステップＳ９０３で設定した結合数の初期値（例えば初期値＝１０とする）に、Ｍ（例えばＭ＝１００）だけ引き上げた値の結合数を用いて描画集計情報を更新する。そして、ステップＳ９０８で結合処理部２０５は、更新された描画集計情報において、再度、図１０（ｅ）の予測式に基づいてレンダリング時間を算出する。そのレンダリング予測時間が３分以下となるまで、結合数をＭだけ順次引き上げて求める。最終的に３分以下となった描画集計情報を図１０（ｄ）に示す。このときの結合数は１２１０になっており、この結合数をバンド２には適用する。
【００６４】
図１１は、本実施形態における効果を示す具体例である。図６（ｄ）に示したように、１０２４×１０２４個の描画オブジェクトを含む入力データに対して、結合数を１０２４×１０２４とし全て結合した結合過剰ケースと、結合数を１０とした結合不足ケースとが比較対象である。本実施形態による適切な結合ケースでは、結合数が１０１０と求まり、その処理時間が結合処理時間とレンダリング処理時間とで負荷分散され、合計時間として短縮された結果を得ることが出来る。
【００６５】
＜その他の実施例＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2015116703.tif 000003
【図２】
2015116703.tif 000004
【図４】
2015116703.tif 000005
【図７】
2015116703.tif 000006
【図８】
2015116703.tif 000007
【図９】
2015116703.tif 000008
【図１１】
2015116703.tif 000009
【図３】
2015116703.tif 000010
【図５】
2015116703.tif 000011
【図６】
2015116703.tif 000012
【図１０】
2015116703.tif 000013