(57)【要約】【課題】スキャンライン毎のトナー載り量情報算出に要する処理時間を推定する術がなく、当該スキャンラインの処理時間をワーストケースを前提にして、間引き処理するかを判断しなければならないという課題を解決すること。【解決手段】各スキャンラインの描画範囲情報を求め、描画範囲情報内の開始位置、終了位置内の範囲のみを対象として、トナー載り量情報を算出する。これにより、計算量を削減でき、かつ、それぞれのスキャンラインを処理するのに必要な処理時間も推定可能となる。【選択図】図２
2019126993.tif 000002
【特許請求の範囲】
【請求項１】
ＰＤＬコマンドから描画コマンドを生成するＰＤＬインタプリタ手段（２０３）と、
描画コマンドからディスプレイリストを生成するＤＬ生成手段（２０４）と、
ディスプレイリストからコントーン画像を生成するＲＩＰ手段（２５２，１３２）と、
ラスタ画像からハーフトーン画像を生成するハーフトーン手段（２５４，１３４）と、
ハーフトーン画像を用紙へ出力する手段（２５６，１３６）と、
から構成される印刷手段であって、
各スキャンライン上における描画開始位置および描画終了位置を含む描画範囲情報（２３２）を求める描画範囲情報算出手段（２０５）と、
描画範囲情報に基づき、コントーン画像もしくはハーフトーン画像の一部に対して画像処理を行う画像処理手段と、
を備えることを特徴とする印刷手段。
【請求項２】
描画範囲情報算出手段（２０５）は、ディスプレイリストを元にしてスキャンライン毎にスパンリストを作成し（Ｓ８５１）、当該スキャンラインにおけるエッジ位置を更新し（Ｓ８５３）、更に描画開始位置および描画終了位置を求める（Ｓ８６１〜Ｓ８６３、Ｓ８７１〜Ｓ８７３）ことを特徴とする請求項１に記載の印刷手段。
【請求項３】
描画範囲情報算出手段（２０５）は、当該スキャンライン内のスパンが、関連付けられているフィルのフィル種別が背景画像もしくは地紋画像のいずれかであれば描画範囲外とし、背景画像でも地紋画像でも無ければ描画範囲内として扱う（Ｓ８６２，Ｓ８７２）ことを特徴とする請求項２に記載の印刷手段。
【請求項４】
描画範囲情報算出手段（２０５）は、当該スキャンラインに含まれるエッジ数が閾値以上か否かを判断し、閾値以上である場合には当該スキャンライン全体を描画開始位置および描画終了位置とする（Ｓ８３２）ことを特徴とする請求項２に記載の印刷手段。
【請求項５】
画像処理手段はコントーン画像もしくはハーフトーン画像に対するトナー載り量情報（２６２）を算出するためのトナー載り量情報算出手段である（２５７）ことを特徴とする請求項１乃至請求項４の何れか一項に記載の印刷手段。
【請求項６】
トナー載り量情報（２６２）は、コントーン画像もしくはハーフトーン画像における、ページ内でトナーが載る画素を意味する、トナー載り面積を含む（Ｓ１０２３）ことを特徴とする請求項５に記載の印刷手段。
【請求項７】
トナー載り量情報（２６２）は、コントーン画像もしくはハーフトーン画像における、各画素で最もトナーが載っている画素の載り量の最大値を意味する、トナー載り量最大値を含む（Ｓ１０３３）ことを特徴とする請求項５に記載の印刷手段。
【請求項８】
トナー載り量情報（２６２）は、コントーン画像もしくはハーフトーン画像における、ページ全体でどれだけのトナーを使用するかを意味する、トナー消費量を含む（Ｓ１０３２）ことを特徴とする請求項５に記載の印刷手段。
【請求項９】
トナー載り量情報（２６２）は、コントーン画像もしくはハーフトーン画像における、ページ内でトナーを使用する平均値を意味する、トナー載り平均値を含む（Ｓ１０４３）ことを特徴とする請求項５に記載の印刷手段。
【請求項１０】
トナー載り量情報（２６２）は、コントーン画像もしくはハーフトーン画像における、ページ内でトナーが載る画素数の割合を意味する、トナー載り面積割合を含む（Ｓ１０４２）ことを特徴とする請求項５に記載の印刷手段。
【請求項１１】
画像処理を行うスキャンライン毎の優先順位を決定する手段を有す（Ｓ１００４）ことを特徴とする請求項１乃至請求項１０の何れか一項に記載の印刷手段。
【請求項１２】
スキャンライン毎の優先順位は、スキャンラインの行番号によって決定される（Ｓ１１０１−１１３３）ことを特徴とする請求項１１に記載の印刷手段。
【請求項１３】
スキャンライン毎の優先順位は、スキャンラインの描画画素数に基づいて決定される（Ｓ１６０１−１６３１）ことを特徴とする請求項１１に記載の印刷手段。
【請求項１４】
描画範囲情報算出手段（２０５）は、ＰＤＬデータのページ終了タイミングで、描画範囲情報算出処理を行う（Ｓ３４２）ことを特徴とする請求項１乃至請求項１３の何れか一項に記載の印刷手段。
【請求項１５】
描画範囲情報算出手段（２０５）は、拡張ＤＬ生成手段（１４１０）が描画コマンドからディスプレイリストを生成する処理を行うタイミングで描画範囲情報算出処理を行うことを特徴とする請求項１乃至請求項１３の何れか一項に記載の印刷手段。
【請求項１６】
描画範囲情報算出手段（２０５）は、拡張ＲＩＰ手段（１５００）がディスプレイリストを解釈しているタイミングで描画範囲情報算出処理を行うことを特徴とする請求項１乃至請求項１３の何れか一項に記載の印刷手段。
【請求項１７】
請求項１乃至請求項１６の何れか一項に記載の印刷手段を実行する印刷プログラム。
【請求項１８】
請求項１７のプログラムを実行する印刷装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷装置、印刷手段、及び、印刷プログラムに関する。
【背景技術】
【０００２】
エコロジーに対する消費者の関心の高まりに伴い、レーザープリンターにおいても印刷時の消費電力を削減したいという要望が高まりつつある。消費電力を削減する１手段として、用紙上に定着させるトナー載り量や、搬送する用紙の用紙銘柄や坪量に応じ、定着ローラーの温度を必要な時にだけ高くする制御手段がある。
【０００３】
また、レーザープリンターが高速化するのに伴い、大量通紙に伴う定着ローラーの温度低下を避け、確実にトナーを用紙へ定着させるために、用紙を搬送する紙間や搬送速度を調整することが必要となるケースもある。
【０００４】
そこで、レーザープリンターがプリンタエンジンのドラム上に印字画像を露光・現像する前に、印字画像からトナー載り量情報を算出し、定着ローラーの温度調整や、プリンタエンジンの搬送紙間、搬送速度を調整に活用する事を本発明者は考えている。トナー載り量情報には、その印字画像上のトナー載り量最大値、平均値、あるいは、面積割合の少なくとも１つが含まれる。トナー載り量最大値は、印字画像上での画素単位でのトナー載り量の最大値である。トナー載り量平均値は、印字画像上での画素単位でのトナー載り量の平均値である。トナー載り量面積割合とは、印字画像上でトナーが載っている画素が占める印字画像上の面積割合である。
【０００５】
従来から、トナー消費量（すなわち、トナー載り量平均値を印字画像の面積で乗じたものと同じ）を類推する手段が知られていた（先行技術１参照）。これは、ＲＩＰ（Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒ）モジュールがレンダリングする際に参照する、各スキャンライン上での塗りつぶしの小単位であるスパンに注目し、トナー消費量を類推する。すなわち、スパンの長さと描画コマンドに基づいてスパン単位でトナー消費量の類推値を算出し、その総和によってページ単位のトナー消費量を類推する。あるいは、ＲＩＰモジュールでレンダリングした画像に注目して、各論理ページのトナー載り量を求め、更にレイアウトに従って物理ページ上でのトナー消費量を求める手段である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１９８９１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
トナー載り量情報算出処理には、２つの要求が有る。１つ目は、必要な制御をするのに十分な精度でトナー載り量情報を得る事である。２つ目は、エンジンスループットに影響を与えない処理時間内に処理を簡潔する事である。ここでは、従来技術でのトナー載り量情報算出手段を、処理時間という観点で改めて評価する。
【０００８】
スパンに注目してトナー載り量情報を算出する手段には、最悪条件での処理時間が長大となるデメリットがある。この手段では、一般的な文章データを対象にする分には、スパン単位で複数画素をまとめて処理できるメリットがある。しかし、ＣＡＤ（ｃｏｍｐｕｔｅｒ  ａｉｄｅｄ  ｄｅｓｉｇｎ）で用いられるような線画データでは、１スパンが数画素しか表現できない場合がある。特に、格子状や縦縞状のハッチングパターンを一定領域を塗りつぶすデータに対しては、非常に処理時間を要するリスクがある。
【０００９】
レンダリング画像に注目してトナー載り量情報を算出する手段には、スキャンライン上の全画素を走査してみなければ、トナー載り量情報算出に要する処理時間が分からないデメリットがある。最後の１画素によってトナー載り量最大値や平均値、面積比率が変わってしまう可能性がある。スキャンライン両端のトナーの載っていない余白部分についても、トナー載り量情報を算出する処理をしているケースもある。
【００１０】
製品として搭載可能なＣＰＵの性能には限りがあることから、前記２つの要求を同時に満たすことは難しい。そのため、算出精度を犠牲にして、処理時間を短縮せざるを得ない。例えば、トナー載り量情報算出の処理対象となるスキャンラインを間引くことで、処理時間を短縮する。しかし、間引き処理によって、算出精度が下がれば、定着ローラーの温度調整や、プリンタエンジンの搬送紙間、搬送速度を調整を誤り、印字不正が起きおこすリスクとなる。
【００１１】
このとき、従来技術では、スキャンライン毎のトナー載り量情報算出に要する処理時間を推定する術がなく、当該スキャンラインの処理時間をワーストケースを前提にして、間引き処理するかを判断しなければならないという課題があった。
【課題を解決するための手段】
【００１２】
上記の課題を解決するために、本発明に係る印刷手段は、
ＰＤＬコマンドから描画コマンドを生成するＰＤＬインタプリタ手段（２０３）と、
描画コマンドからディスプレイリストを生成するＤＬ生成手段（２０４）と、
ディスプレイリストからコントーン画像を生成するＲＩＰ手段（２５２，１３２）と、
ラスタ画像からハーフトーン画像を生成するハーフトーン手段（２５４，１３４）と、
ハーフトーン画像を用紙へ出力する手段（２５６，１３６）と、
から構成される印刷手段であって、
各スキャンライン上における描画開始位置および描画終了位置を含む描画範囲情報（２３２）を求める描画範囲情報算出手段（２０５）と、
描画範囲情報に基づき、コントーン画像もしくはハーフトーン画像の一部に対して画像処理を行う画像処理手段と、を備えることを特徴とする。
【発明の効果】
【００１３】
本発明に係る印刷手段によれば、各スキャンラインに対して、トナー載り量情報算出処理の対象となる開始位置および終了位置を、トナー載り量情報算出処理を開始する前に求められる。これにより２つのメリットがある。１つ目のメリットは、各スキャンライン上で処理対象となる画素を限定的にでき、処理時間の短縮へ寄与できる。２つ目のメリットは、各スキャンラインに対するトナー載り量情報算出に要する処理時間を開始位置と終了位置から推定する事が出来る。これにより、当該スキャンラインの全画素を走査せずとも、当該スキャンラインを間引き処理するか判断できる。
【図面の簡単な説明】
【００１４】
【図１】ハードウェア構成図の１例
【図２】ソフトウェア構成図の１例
【図３】メイン側ジョブ管理処理のフローチャート
【図４】サブ側ジョブ管理処理のフローチャート
【図５】処理対象となる印刷データの模式図
【図６】ハーフトーン画像形成処理・出力処理のパイプライン処理の模式図。
【図７】ディスプレイリストの１例
【図８】描画範囲算出処理のフローチャート
【図９】描画範囲算出処理の算出結果の１例
【図１０】トナー載り量情報算出処理のフローチャート
【図１１】優先順位算出処理のフローチャート
【図１２】スキャンライン処理判断処理のフローチャート
【図１３】トナー載り量情報算出処理で用いるルックアップテーブルの１例
【図１４】ＤＬ生成処理と描画範囲情報算出処理を同時に行う場合のソフトウェア構成図
【図１５】ＲＩＰ処理と描画範囲情報算出処理を同時に行う場合のソフトウェア構成図
【図１６】トナー載り量情報算出部が、各スキャンラインの描画画素数に基づいて優先順位を決定するフローチャート
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【実施例１】
【００１６】
図１は、印刷装置１００のハードウェア構成図の一例である。
【００１７】
印刷装置１００は、ネットワーク１５０を介して、ホストコンピュータ１７０と接続されている。ホストコンピュータ１７０は、ページ記述言語（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ，  以下  ＰＤＬ）データを印刷装置１００へ送信することで、印刷装置１００へ印刷指示を行う。ＰＤＬデータのフォーマットは種々のものを適用する事ができるので、ここではその詳細については割愛する。
【００１８】
メインメインプロセッサ１０１は、バス１１０を通じて、ＲＡＭ１０２、操作パネル１０３、ネットワークインタフェイス１０４、ＲＯＭ１０５、ハードディスク１０６、そして、サブプロセッサ１３１と接続されている。ＲＡＭ１０２、ＲＯＭ１０５、あるいはハードディスク１０６には、メインプロセッサ１０１やサブプロセッサ１３１が利用するプログラムやデータが記憶されている。
【００１９】
メインプロセッサ１０１は、ＲＡＭ１０２、ＲＯＭ１０５、あるいはハードディスク１０６に記憶されたメインシステムプログラム２００に従い、上述した各構成部を制御する。操作パネル１０３は、ユーザからの操作を受け付け、またユーザに情報を表示する為のデバイスである。また、操作パネル１０３には、電源スイッチ１４１を備え、ユーザからの電源の切断操作を受け付けることもできる。ネットワークインタフェイス１０４は、ネットワーク１５０と印刷装置１００を接続する為のインタフェイスデバイスである。具体的には、有線ネットワークインタフェイスや無線ネットワークインタフェイス等を用いることが出来る。
【００２０】
サブプロセッサ１３１にはＲＩＰモジュール１３２、ＣＭＳモジュール１３３、ハーフトーンモジュール１３４が接続されている。また、サブプロセッサ１３１には、イメージ圧縮・展開モジュール１３５、プリンタエンジン１３６も接続されている。
【００２１】
サブプロセッサ１３１は、メインプロセッサ１０１がＲＯＭ１０５やハードディスク１０６から読み出し、ＲＡＭ１０２に格納したサブシステムプログラム２５０を読み込み、上述した各構成部を制御する。もしくは、サブプロセッサ自体がＲＯＭ１０５やハードディスク１０６から直接プログラムを読み込んでも良い。また、サブプロセッサ１３１はＲＡＭ１０２の一部領域を共有メモリとして参照する。
【００２２】
ＲＩＰモジュール１３２は、メインプロセッサ１０１が生成した中間データ（Ｄｉｓｐｌａｙ  Ｌｉｓｔ、以下ＤＬ）を元に、コントーン画像をラスタライズするモジュールである。ＣＭＳモジュール１３３は、ＲＩＰモジュール１３２がラスタライズしたコントーン画像を印刷に適した色空間変換、あるいは色補正するＣＭＳ（Ｃｏｌｏｒ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）モジュールである。ハーフトーンモジュール１３４は、ＣＭＳモジュールが色空間変換・色補正したコントーン画像に対して、ディザリングすることで、プリンタエンジン１３６が用紙上に印字可能なハーフトーン画像に変換するモジュールである。
【００２３】
イメージ圧縮・展開モジュール１３５は、コントーン画像やハーフトーン画像を可逆、あるいは不可逆に圧縮・展開するモジュールである。圧縮・展開するアルゴリズムには種々のものを適用する事が可能である。プリンタエンジン１３６は、ハーフトーンモジュール１３４がディザリングしたハーフトーン画像を、用紙上に印字するモジュールである。
【００２４】
図２は、印刷装置１００のソフトウェア構成図の一例である。
【００２５】
印刷装置１００のソフトウェアは、メインプロセッサ１０１上で動作するメインシステムプログラム２００と、サブプロセッサ１３１上で動作するサブシステムプログラム２５０とで構成される。
【００２６】
メインプロセッサ１０１と、サブプロセッサ１３１の両方から共通的に見えているメモリ領域として、ＤＬＭ領域２３１と、描画範囲情報２３２がある。ＤＬＭ領域２３１は、後述するＤＬ生成部２０４が生成したＤＬを格納し、ＲＩＰモジュール１３２がコントーン画像をラスタライズするためにＤＬを参照するためのメモリ領域である。
【００２７】
メインシステムプログラム２００は、メイン側ジョブ管理部２０１、ネットワークパケット受信部２０２、ＰＤＬインタプリタ２０３、ＤＬ生成部２０４、描画範囲情報算出部２０５、操作パネル制御部２０６で構成される。メイン側ジョブ管理部２０１は、これらのモジュールを管理するソフトモジュールである。ネットワークパケット受信部２０２は、ネットワークインタフェイス１０４から送受信されるネットワークパケットを送受信するソフトモジュールである。ＰＤＬインタプリタ２０３は、ＰＤＬデータを解釈しＤＬ生成部２０４へ描画コマンドとして通知するモジュールである。ＤＬ生成部２０４は、ＰＤＬインタプリタ２０３から通知された描画コマンドを解釈し、ＤＬを生成して、ＤＬＭ領域２３１へ格納するソフトウェアモジュールである。描画範囲情報算出部２０５は、ＤＬＭ領域２３１に格納されたＤＬを解釈し、描画範囲情報２３２を算出するソフトウェアモジュールである。操作パネル制御２０６は、操作パネル１０３を制御するためのソフトウェアモジュールである。操作パネル１０３上のボタンを押されたイベントを、メイン側ジョブ管理部２０１へ通知したり、またメイン側ジョブ管理部２０１から通知された表示情報を操作パネル１０３上に表示したりする。
【００２８】
サブシステムプログラム２５０は、サブ側ジョブ管理部２５１、スプール領域２６１、トナー載り量情報２６２で構成される。また、サブシステムプログラム２５０は、ＲＩＰ制御部２５２、ＣＭＳ制御部２５３、ハーフトーン制御部２５４、イメージ圧縮・展開制御部２５５、プリンタ制御部２５６、トナー載り量制御部２５７で構成される。サブ側ジョブ管理部２５１は、これらのモジュールを管理するソフトモジュールである。スプール領域２６１は、後述するイメージ圧縮・展開制御部２５５で圧縮した圧縮画像を格納する領域である。トナー載り量情報２６２は、後述するトナー載り量情報算出部２５７が算出した、トナー載り量の最大値・平均値情報を格納する領域である。トナー載り量情報２６２は、プリンタエンジン制御２５６が、プリンタエンジン１３６を制御する時に、定着ローラーの温度管理や搬送ローラーの紙間制御等に用いられる。
【００２９】
ＲＩＰ制御部２５２は、ＲＩＰモジュール１３２を制御する為のモジュールである。ＲＩＰ制御部２５２は、ＲＩＰモジュール１３２に対してレンダリングするべきページのディスプレイリストのメモリアドレスを通知する。また、ＲＩＰモジュール１３２へラスタライズ処理開始を通知したり、あるいはＲＩＰ１３２からラスタライズ処理終了を受信したりする。
【００３０】
ＣＭＳ制御部２５３は、ＣＭＳモジュール１３３を制御する為のモジュールである。ＣＭＳ制御部２５３は、ＣＭＳモジュール１３３に対して、ＣＭＳ処理に必要なレンダリングインテント等の画像パラメータを通知する。
【００３１】
ハーフトーン制御部２５４は、ハーフトーンモジュール１３４を制御する為のモジュールである。ハーフトーン制御部２５４は、ハーフトーンモジュール１３４に対して、ハーフトーン処理に必要なディザマトリックスに関する情報等の画像パラメータを通知する。
【００３２】
イメージ圧縮・展開制御部２５５は、イメージ圧縮展開モジュール１３５を制御する為のモジュールである。イメージ圧縮・展開制御部２５５は、イメージ圧縮展開モジュール１３５に対してイメージ圧縮・展開処理するのに必要な圧縮アルゴリズムの指定や、圧縮データ・非圧縮データのメモリアドレス等のパラメータを通知する。
【００３３】
プリンタエンジン制御部２５５はプリンタエンジン１３６を制御する為のモジュールである。プリンタエンジン制御部２５５は、プリンタエンジン１３６に対して、印字するハーフトーン画像を通知する。プリンタエンジン１３６は当該ハーフトーン画像に基づいて、露光・現像する。また、プリンタエンジン制御部２５５は、プリンタエンジン１３６に対して、トナー載り量情報２６２に基づき、定着ローラーの温度や搬送ローラーの紙間設定などをプリンタエンジン１３６に通知する。
【００３４】
図３は、メイン側ジョブ管理部２０１で行われるメイン側ジョブ管理処理のフローチャートである。
【００３５】
メイン側ジョブ管理部２０１は、他モジュールからの新たなメッセージの受付処理を行う（Ｓ３０１）。新たなメッセージが来た場合にはその種別によって処理を分岐する（Ｓ３０２）。
【００３６】
ネットワークパケット受信部２０２は、受信ネットワークパケットがＰＤＬデータである場合には、メイン側ジョブ管理部２０１へ＜ＰＤＬジョブ受信＞のメッセージを通知する。メイン側ジョブ管理部２０１は、ネットワークパケット受信部２０２から＜ＰＤＬジョブ受信＞のメッセージを受信したら、ＰＤＬインタプリタ用ジョブメモリを確保し（Ｓ３１１）、ＰＤＬインタプリタ２０３に対して、ＰＤＬ処理開始を通知する（Ｓ３１２）。
【００３７】
ＰＤＬインタプリタ２０３は、メイン側ジョブ管理部２０１とネットワークパケット受信部２０２を介して、ホストコンピュータ１７０から送信されたＰＤＬデータを受信し、解釈をする。ＰＤＬインタプリタ２０３は、ＰＤＬデータ内にページ開始命令があれば、メイン側ジョブ管理部２０１に対して＜ページ開始＞を通知する。
【００３８】
メイン側ジョブ管理部２０１は、ＰＤＬインタプリタ２０３から＜ページ開始＞のメッセージを受信したら、インタプリタ用ページメモリを確保する（Ｓ３２１）。
【００３９】
ＰＤＬインタプリタ２０３は、ＰＤＬコマンドを解釈した結果である描画コマンドをＤＬ生成部２０４に通知する。ＤＬ生成部２０４は、ＰＤＬインタプリタ２０３から描画コマンドを受け取ると、ＤＬ生成部２０４から割り当てられたＤＬメモリ内での空き容量をチェックする。もし、ＤＬメモリが不足していれば必要なメモリ量とともに＜メモリ割り当て要求＞のメッセージをメイン側ジョブ管理部２０１へ通知する。
【００４０】
メイン側ジョブ管理部２０１は、ＤＬ生成部２０４から＜メモリ割り当て要求＞のメッセージを受信したら、ＤＬＭ領域２３１に、要求メモリ量に対して十分な空き領域あるか否かを判断する（Ｓ３３１）。もし、要求メモリ量に対して十分な空き領域があるならば、ＤＬＭ領域２３１からメモリを確保する（Ｓ３３２）。そして、メイン側ジョブ管理部２０１は、ＤＬ生成部２０４へ確保したメモリのアドレスを通知する（Ｓ３３３）。ＤＬＭ領域の空きが要求メモリ量に対して不十分であれば、メイン側ジョブ管理部２０１は、サブ側ジョブ管理部２５１に＜フォールバック開始＞のメッセージを通知する（Ｓ３３４）。
【００４１】
ＰＤＬインタプリタ２０３は、ＰＤＬデータ内にページ終了指示があれば、メイン側ジョブ管理部２０１に対して＜ページ終了＞のメッセージを通知する。メイン側ジョブ管理部２０１は、ＰＤＬインタプリタ２０３から＜ページ終了＞のメッセージを受信したら、ＰＤＬインタプリタ用ページメモリを開放する（Ｓ３４１）。描画範囲情報算出処理を行い（Ｓ３４２）、サブ側ジョブ管理部２５１に対して、＜レンダリング開始＞のメッセージを通知する（Ｓ３４３）。描画範囲情報算出処理の詳細については、図８を用いて後述する。
【００４２】
メイン側ジョブ管理部２０１は、サブ側ジョブ管理部２５１から＜レンダリング終了＞のメッセージを受信したら、使用済みＤＬＭ領域を解放する（Ｓ３５１）。そして、当該レンダリングがフォールバックのためのレンダリングだったか、否かを判断する（Ｓ３５２）。当該レンダリングがフォールバックのためのレンダリングでなければ、サブ側ジョブ管理部２５１に対して＜印字開始＞を通知する（Ｓ３５３）。当該レンダリングが、フォールバックの為のレンダリングであれば、ＤＬ生成部２０４に対してサブ側ジョブ管理部２５１から通知された圧縮画像のメモリアドレスを、背景画像として通知する（Ｓ３５４）。ＤＬ生成部２０４は、通知された背景画像をフォールバック画像として記憶する。この背景画像に対応したフィル種類が「背景」であるＤＬを追加する。そして、メイン側ジョブ管理部２０１は、＜メモリ割り当て要求＞のメッセージ受信時に行うメモリ割り当て処理を行う（Ｓ３３１〜Ｓ３３４）。
【００４３】
ＰＤＬインタプリタ２０３は、ＰＤＬデータの終端まで処理したら、メイン側ジョブ管理部２０１に対して＜ジョブ終了＞を通知する。メイン側ジョブ管理部２０１は、ＰＤＬインタプリタ２０３から＜ジョブ終了＞のメッセージを受信したら、ＰＤＬインタプリタ用ジョブメモリを開放する（Ｓ３６１）。
【００４４】
また、操作パネル制御部１０３は、電源スイッチ１４１が押された際に、メイン側ジョブ管理部２０１に対して＜システム終了＞を通知する。メイン側ジョブ管理部２０１は、＜システム終了＞のメッセージを受信したら、サブ側ジョブ管理部２５１に対して、＜システム終了＞を通知する（Ｓ３０３）。また、メイン側ジョブ管理部２０１は、メイン側システム２００の終了処理を行う（Ｓ３０４）。
【００４５】
図４は、サブ側ジョブ管理部２５１で行われるサブ側ジョブ管理処理のフローチャートである。
【００４６】
サブ側ジョブ管理部２５１は、他モジュールからの新たなメッセージの受付処理を行う（Ｓ４０１）。新たなメッセージが来た場合にはその種別によって処理を分岐する（Ｓ４０２）。
【００４７】
サブ側ジョブ管理部２５１は、メイン側ジョブ管理部２０１から＜レンダリング開始＞のメッセージを受信したら、ＲＩＰ処理のための設定をＲＩＰ制御部２５２に通知する（Ｓ４１１）。ＲＩＰ制御部２５２は、ＤＬＭ領域２３１上のＤＬのアドレスを元にコントーン画像をレンダリングし、ＣＭＳモジュール１３３へコントーン画像を送信するためのパラメータをＲＩＰモジュール１３２に設定する。サブ側ジョブ管理部２５１は、ＣＭＳ処理のための設定をＣＭＳ制御部２５３に通知する（Ｓ４１２）。ＣＭＳ制御部２５３は、コントーン画像を受信し、ＣＭＳ処理を行って、ＣＭＳ処理済みコントーン画像をハーフトーンモジュール１３４へ送信すするためのパラメータをＣＭＳモジュール１３３に設定する。
【００４８】
サブ側ジョブ管理部２５１は、ハーフトーン処理のための設定をハーフトーン制御部２５４に通知する（Ｓ４１３）。ハーフトーン制御部２５４は、ＣＭＳ処理済みコントーン画像を受信し、ディザリング処理をし、ハーフトーン画像をトナー載り量情報算出部２５７へ送信するためのパラメータをハーフトーンモジュール１３４に設定する。サブ側ジョブ管理部２５１は、ハーフトーン画像を受信し、トナー載り量情報２５２を算出し、ハーフトーン画像をイメージ圧縮・展開制御部２５５へ送信するための設定をトナー載り量情報算出部２５７に通知する（Ｓ４１４）。
【００４９】
サブ側ジョブ管理部２５１は、イメージ圧縮のための設定をイメージ圧縮・展開制御部２５５に通知する（Ｓ４１５）。イメージ圧縮・展開制御部２５５は、ハーフトーン画像を受信し、可逆圧縮して、スプール領域２６１上に保存するためのパラメータをイメージ圧縮・展開，モジュール１３５に設定する。また、イメージ圧縮・展開制御部２５５は、１ページ分の処理が終了すると、サブ側ジョブ管理手段に対して＜レンダリング終了＞のメッセージを送信する。
【００５０】
サブ側ジョブ管理部２５１は、＜レンダリング開始＞をＲＩＰ制御部２５２に通知する（Ｓ４１６）。ＲＩＰ制御部２５２は＜レンダリング開始＞のメッセージを受信すると、処理開始をＲＩＰモジュール１３２に通知する。これにより、ＤＬＭ領域２３１上のＤＬを元にコントーン画像がレンダリングされ、ＣＭＳ処理とハーフトーン画像がかけられ、トナー載り量情報が算出された上で、圧縮画像を生成する処理が開始される。
【００５１】
サブ側ジョブ管理部２５１は、イメージ圧縮・展開制御部２５５から＜レンダリング終了＞のメッセージを受信したら、メイン側ジョブ管理部２０１へ＜レンダリング終了＞のメッセージを通知する（Ｓ４４１）。
【００５２】
サブ側ジョブ管理部２５１は、メイン側ジョブ管理部２０１から＜印字開始＞のメッセージを受信したら、サブ側ジョブ管理部２５１は、イメージ展開のための設定をイメージ圧縮・展開制御部２５５に通知する（Ｓ４５１）。イメージ圧縮・展開制御部２５５は、スプールメモリ２６１上の圧縮されたハーフトーン画像を読みとり、展開し、プリンタエンジン１３６へハーフトーン画像を送信する設定をイメージ圧縮・展開，モジュール１３５にする。サブ側ジョブ管理部２５１は、ハーフトーン画像を印字するための設定をプリンタエンジン制御部２５６に通知する（Ｓ４５２）。プリンタエンジン制御部２５６は、ハーフトーン画像を受信し、用紙へ印字する設定をプリンタエンジン１３６にする。
【００５３】
メッセージ内容の確認処理（Ｓ４０２）に戻り、サブ側ジョブ管理部２５１は、メイン側ジョブ管理部２０１から＜フォールバック開始＞のメッセージを受信したら、ＲＩＰ処理のための設定をＲＩＰ制御部２５２に通知する（Ｓ４２１）。ＲＩＰ制御部２５２は、ＤＬＭ領域２３１上のＤＬのアドレスを元にコントーン画像をレンダリングし、ＣＭＳモジュール１３３へコントーン画像を送信するためのパラメータをＲＩＰモジュール１３２に設定する。
【００５４】
サブ側ジョブ管理部２５１は、イメージ圧縮のための設定をイメージ圧縮・展開制御部２５５に通知する（Ｓ４２２）。イメージ圧縮・展開制御部２５５は、コントーン画像を受信し、不可逆圧縮して、ＤＬＭ領域２３１上に保存する設定をするためのパラメータをイメージ圧縮・展開モジュール１３５に設定する。
【００５５】
サブ側ジョブ管理部２５１は、ＲＩＰ制御部２５２に対して、＜レンダリング開始＞を通知する（Ｓ４２３）。ＲＩＰ制御部２５２はサブ側ジョブ管理部２５１から＜レンダリング開始＞のメッセージを受信すると、処理開始をＲＩＰモジュール１３２に通知する（Ｓ４２３）。これにより、ＤＬＭ領域２３１上のＤＬを元にコントーン画像がレンダリングされ、圧縮画像を生成する処理が開始される。
【００５６】
サブ側ジョブ管理部２５１は、メイン側ジョブ管理部２０１から＜システム終了＞のメッセージを受信したら、サブ側システム２５０の終了処理を行う（Ｓ４０３）。
【００５７】
次に、本実施例を説明する上で処理対象となる印刷データの具体例について説明する。
【００５８】
図５は、実施例１で処理対象とする印刷データを表現した模式図である。
【００５９】
図５（Ａ）は、処理対象のページ５０１を模式的に表現したものである。ページ５０１は、Ａ４（２１０ｍｍ×２９７ｍｍ）の用紙に印字する為の６００ｄｐｉ画像である。なお、処理の高速化をするために横幅は３２ｂｉｔ  ｂｏｕｎｄａｒｙに合わせ、幅４９６４  ｐｉｘｅｌ、高さ７０１６  ｐｉｘｅｌの大きさとする。ページ５０１上には、図形５０２と、図形５０３が含まれる。図形５０２は、座標（２５６０，１５３６）、（４６０８，３５８４）、（５１２，３５８４）を結んだ三角形であり、ＲＧＢ（０，０，０）で塗りつぶされている。図形５０３．は、（１５３６，３０７２），（３５８４，３０７２），（３５８４，５６３４），（１５３６，５３６４）を結んだ矩形であり、ＲＧＢ（１２８．１２８．１２８）で塗りつぶされている。
【００６０】
図５（Ｂ）は、疑似ＰＤＬ言語でページ５０１を表現したものである。Ｌｉｎｅ  １は、ページ５０１の開始するコマンドである。Ｌｉｎｅ  ２は、ＣＯＰＹＰＥＮによって描画するＲＯＰ指定するコマンドである。ＣＯＰＹＰＥＮとは、下地の色を無視して描画色を上書きする指定である。Ｌｉｎｅ  ３は塗りつぶし色をＲＧＢ（０，０，０）とするコマンドである。Ｌｉｎｅ  ４は、図形５０２の形状を指定するコマンドである。Ｌｉｎｅ  ５は、図形５０２に対応した塗りつぶし指定コマンドである。Ｌｉｎｅ  ６は、塗りつぶし色をＲＧＢ（１２８，１２８，１２８）とするコマンドである。Ｌｉｎｅ  ７は、図形５０３の形状を指定するコマンドである。Ｌｉｎｅ  ８は、図形５０３に対応した塗りつぶし指定コマンドである。Ｌｉｎｅ  ９は、ページ５０１の終了コマンドである。
【００６１】
図５（Ｃ）は、ページ５０１を構成するエッジとフィルを表現した模式図である。ページ５０１には、エッジ５２１〜５２５が含まれる。エッジ５２１は図形５０２の塗りつぶし開始のエッジである。エッジ５２２は図形５０２の塗りつぶし終了のエッジである。エッジ５２３は図形５０３の塗りつぶし開始のエッジである。エッジ５２４は図形５０３の塗りつぶし終了であり、かつ、終了時に図形５０２の塗りつぶしとなるエッジである。エッジ５２５は図形５０３の塗りつぶし終了であり、かつ終了時に塗りつぶすものがないエッジである。
【００６２】
フィル５３１は、図形５０２の塗りつぶしに対応するフィルである。フィル５３２は、図形５０３の塗りつぶしに対応するフィルである。フィル５３３は、塗りつぶしが無い背景部分に対応するフィルである。
【００６３】
ページ５０１は、エッジ５２１〜５２５が追加あるいは削除されるタイミング毎に、ストライプ５１１〜５１５に分割される。ストライプ５１１は、１５３６  ｐｉｘｅｌの高さを持ち、エッジが含まれない。ストライプ５１２は、１５３６  ｐｉｘｅｌの高さを持ち、エッジ５２１およびエッジ５２２が含まれる。ストライプ５１３は、５１２  ｐｉｘｅｌの高さを持ち、エッジ５２１、エッジ５２２、エッジ５２３、エッジ５２４が含まれる。ストライプ５１４は、２０４８  ｐｉｘｅｌの高さを持ち、エッジ５２３、エッジ５２５が含まれる。ストライプ５１５は、１３８４  ｐｉｘｅｌの高さを持ち、エッジが含まれない。
【００６４】
サブシステムプログラム２５０では、各モジュールが並行動作できるものとする。このときの動きを図６を用いて説明する。サブシステムプログラム２５０は、ＤＬを元にハーフトーン画像を形成しスプール領域２６１に格納するハーフトーン画像形成処理と、スプール領域２６１に格納したハーフトーン画像を印字するハーフトーン画像出力処理とに分けられる。
【００６５】
図６は、サブシステムプログラム２５０で実行されるハーフトーン画像形成処理とハーフトーン画像出力処理のパイプライン化に関する模式図である。
【００６６】
図６（Ａ）は、本実施例におけるバンド分割の模式図である。本実施例では、パイプライン処理を実現する為に、ページ５０１を５１２  ｐｉｘｅｌ毎のバンド６１１〜６２５に分割して処理する。
【００６７】
図６（Ｂ）は、サブシステムプログラム２５０でハーフトーン画像形成処理を並列処理する際のパイプラインを表した模式図である。ＲＩＰモジュール１３２は、ページ５０１に含まれるバンド５１１、バンド５１２、バンド５１３、・・・と、順次各バンドを処理する。ＣＭＳモジュール１３３は、ＲＩＰモジュール１３２が処理し終わったバンドを処理する。同様に、ハーフトーンモジュール１３４、トナー載り量情報検出部２５７、及びイメージ圧縮・展開モジュール１３５も、それぞれのパイプラインの中で前のモジュールが処理したバンドを逐次処理する。
【００６８】
例えば、ＲＩＰモジュール１３２がバンド５１５をレンダリング処理しているとき、ＣＭＳモジュール１３３は１つ前のバンド５１４のＣＭＳ処理をしている。ハーフトーンモジュール１３４は２つ前のバンド５１３のハーフトーン処理をしている。トナー載り量情報算出部２５７は３つ前のバンド５１２のトナー載り量情報を算出している。イメージ圧縮・展開モジュール１３５は、４つ前のバンド５１１のハーフトーン画像の画像圧縮処理を行っている。
【００６９】
図６（Ｃ）は、サブシステムプログラム２５０でハーフトーン画像出力処理を並列処理する際のパイプラインを表した模式図である。イメージ圧縮・展開モジュール１３５は、ページ５０１に含まれるバンド５１１、バンド５１２、バンド５１３、・・・と、順次各バンドを画像展開処理する。プリンタエンジン１３６は、イメージ圧縮・展開モジュール１３５が展開したハーフトーン画像を逐次印字する。
【００７０】
図６（Ｄ）は、サブシステムプログラム２５０でハーフトーン画像形成処理とハーフトーン画像出力処理とを並列処理する際のパイプラインを表した模式図である。ハーフトーン画像を形成する処理と、ハーフトーン画像を出力する処理もまた、並列化することが可能である。これにより、例えば１ページ目のハーフトーン画像を出力すると同時に、２ページ目のハーフトーン画像を形成処理も実行する事が可能となる。
【００７１】
例えば、イメージ圧縮・展開モジュール１３５がバンド５１２を展開しているとき、同時にプリンタエンジン１３６はバンド５１１を印字する処理をしている。
【００７２】
１ページを複数のバンドに分割することで、それぞれのモジュールで同時刻に異なるバンドを処理でき、処理時間を効果的に短縮できる。
【００７３】
図７は、図５で表現した印刷データに対するＤＬを表現した模式図である。ＤＬには、インストラクション７００、エッジ情報リスト７５０およびフィル情報リスト７７０が含まれる。
【００７４】
フィル情報リスト７７０は、ページ５０１に含まれる塗りつぶしに関する情報を保持している。フィル情報７７１は、図形５０２で利用されているＲＧＢ（０，０，０）での塗りつぶし指定である。フィル情報７７２は、何も描画するオブジェクトの無い領域の塗りつぶし指定である。フィル情報７７３は、図形５０３で利用されているＲＧＢ（１２８，１２８，１２８）での塗りつぶし指定である。フィル情報は、そのフィル種類が"透過"であれば塗りつぶし対象外となる。また、フィル種類として"背景"を指定すれば、背景オブジェクトとして本発明においては描画範囲情報算出時の対象外とする。
【００７５】
エッジ情報リスト７５０は、ページ５０１に含まれるエッジに関する情報、エッジリスト７５１〜７５５を保持している。
【００７６】
エッジ情報７５１は、エッジ５２１を表現したエッジ情報である。エッジの種別は直線である。開始Ｘは２５６０、傾きは−１、塗りつぶしの指定は、フィル情報７７１である。
【００７７】
エッジ情報７５２は、エッジ５２２を表現したエッジ情報である。エッジの種別は直線である。開始Ｘは２５６０、傾きは＋１、塗りつぶしの指定は、フィル情報７７２である。
【００７８】
エッジ情報７５３は、エッジ５２３を表現したエッジ情報である。エッジの種別は直線である。開始Ｘは１５３６、傾きは０、塗りつぶしの指定は、フィル情報７７３である。
【００７９】
エッジ情報７５４は、エッジ５２４を表現したエッジ情報である。エッジの種別は直線である。開始Ｘは３５８４、傾きは０、塗りつぶしの指定は、フィル情報７７１である。
【００８０】
エッジ情報７５５は、エッジ５２５を表現したエッジ情報である。エッジの種別は直線である。開始Ｘは３５８４、傾きは０、塗りつぶしの指定は、フィル情報７７２である。
【００８１】
インストラクション７００は、ページの開始や終了、それぞれのストライプでどのエッジが出現したか、また不要となったか等を、ＲＩＰモジュールが解釈可能な命令列として記録したものである。ここでは、ページ開始命令７０１からページ終了命令７０９までが含まれる。
【００８２】
ページ開始命令７０１は新規ページを形成する事を意味する命令である。この場合、ページ幅は４９６４  ｐｉｘｅｌ、ページ高は７０１６  ｐｉｘｅｌ  と指定されている。
【００８３】
エッジ情報のロード及び描画開始７０２は、ストライプ５１１に対応した命令である。ストライプ５１１の描画高さは１５３６、追加すべきエッジは無いため、追加エッジ情報数は０となる。
【００８４】
エッジ情報のロード及び描画開始７０３は、ストライプ５１２に対応した命令である。ストライプ５１２の描画高さは１５３６、追加すべきエッジはエッジ５２１と、エッジ５２２であり、追加エッジ情報数は２となる。エッジ５２１に関するエッジ情報は、エッジ情報７５１に保持されている。エッジ５２２に関するエッジ情報は、エッジ情報７５２に保持されている。
【００８５】
エッジ情報のロード及び描画開始７０４は、ストライプ５１３に対応した命令である。ストライプ５１３の描画高さは５１２であり、追加すべきエッジはエッジ５２３と、エッジ５２４であるため、追加エッジ情報数は２となる。エッジ５２３に関するエッジ情報は、エッジ情報７５３に保持されている。エッジ５２４に関するエッジ情報は、エッジ情報７５４に保持されている。
【００８６】
エッジ削除命令７０５は、次のストライプを処理する前に不要となったエッジを除外する為の命令である。次のストライプ５１４を処理するに当たり、エッジ５２１、エッジ５２２、エッジ５２４が不要となり、削除エッジ情報数は３となる。
【００８７】
エッジ情報のロード及び描画開始７０６は、ストライプ５１４に対応した命令である。ストライプ５１４の描画高さは２０４８であり、追加すべきエッジはエッジ５２５であるため、追加エッジ情報数は１となる。エッジ５２５に関するエッジ情報は、エッジ情報７５５に保持されている。
【００８８】
エッジ削除命令７０７は、次のストライプを処理する前に不要となったエッジを除外する為の命令である。次のストライプ５１５を処理するに当たり、エッジ５２３、エッジ５２５が不要となり、削除エッジ情報数は２となる。
【００８９】
エッジ情報のロード及び描画開始７０８は、ストライプ５１５に対応した命令である。ストライプ５１５の描画高さは１３８４であり、追加すべきエッジは無いため、追加エッジ情報数は０となる。ページ終了命令７０９は、当該ページの終了を意味する命令である。
【００９０】
図８は、描画範囲情報算出部２０５が実行する、ＤＬＭ領域２３１内のＤＬを参照し、描画範囲情報２３２を算出する描画範囲算出処理の詳細なフローチャートである。
【００９１】
描画範囲情報算出部２０５は、ＤＬに含まれる命令を読み込む（Ｓ８０１）。読み込んだ命令によって処理を切り替える（Ｓ８０２）。
【００９２】
描画範囲情報算出部２０５は読み込んだ命令が＜ページ開始＞である場合には、全スキャンラインに対して（Ｓ８１１）、その描画範囲情報のＳｔａｒｔＸをページ幅で、ＥｎｄＸを０で初期化する（Ｓ８１２，Ｓ８１３）。処理スキャンライン番号を示すパラメータｃｕｒＹを０で初期化する（Ｓ８１４）。
【００９３】
描画範囲情報算出部２０５は読み込んだ命令が＜エッジ情報のロード及び描画開始＞である場合には、指定エッジ情報をエッジリストへ追加する（Ｓ８３１）。描画範囲情報算出部２０５はエッジリストに追加されているエッジ数が任意の閾値以下であるかを判断する（Ｓ８３２）。もし、エッジ数が閾値を超過している場合には、当該ストライブのエッジが非常に入り組んでいると判断し、ストライブの高さだけ（Ｓ８４１）、その描画範囲情報のＳｔａｒｔＸを０、ＥｎｄＸをページ幅で埋める（Ｓ８４２，Ｓ８４３，Ｓ８４４）。これにより、ＣＡＤデータ内にハッチングパターンが含まれ、多数のエッジが含まれている場合でも、１エッジ毎に処理する手間を省くことが出来る。エッジ数が閾値以下である場合には、描画範囲情報算出部２０５は、エッジリストを元にスパンリストを形成する（Ｓ８５１）。
【００９４】
描画範囲情報算出部２０５は、ページ内の全スキャンラインに対して、スキャンライン毎にスパンリストを更新し、当該スパンのＳｔａｒｔＸ順にソートをする（Ｓ８５３）。描画範囲情報算出部２０５は、スパンリストに含まれる全スパンに対してＳｔａｒｔＸが小さい順番に（Ｓ８６１）、そのスパンが背景でも透過でもないかを判定する（Ｓ８６２）。もし、当該スパンが背景あるいは透過であれば、何もしない。もし、当該スパンが背景でも透過でもなければ、現在処理をしているスキャンラインの描画範囲情報のＳｔａｒｔＸを、当該スパンのＳｔａｒｔＸと比較し、より小さければ更新して（Ｓ８６３）、このループから抜ける。
【００９５】
描画範囲情報算出部２０５は、スパンリストに含まれる全スパンに対してＳｔａｒｔＸが大きい順番に（Ｓ８７１）、そのスパンが背景でも透過でもないかを判定する（Ｓ８７２）。もし、当該スパンが背景あるいは透過であれば、何もしない。もし、当該スパンが背景でも透過でもなければ、現在処理をしているスキャンラインの描画範囲情報のＥｎｄＸを、当該スパンのＳｔａｒｔＸと長さの総和と比較し、より大きければ更新し（Ｓ８７３）、このループから抜ける。最後にｃｕｒＹに１を加算し（Ｓ８５４）、新しいスキャンラインに対して処理を繰り返す。
【００９６】
描画範囲情報算出部２０５は読み込んだ命令が＜エッジ情報の削除＞である場合には、指定されたエッジ情報をエッジリストから削除する。
【００９７】
描画範囲情報算出部２０５は読み込んだ命令が＜ページ終了＞である場合には、本処理を終了する。
【００９８】
図９は、描画範囲情報算出部２０５が、図７に示したＤＬを元に描画範囲情報を算出するときの計算例を示している。
【００９９】
図９（Ａ）は、ストライブ５１１に対するスパンリストの算出例である。ストライブ５１１はエッジが１つも含まれず、したがってスパンも存在しない。
【０１００】
図９（Ｂ）に、ストライブ５１１に対する描画範囲情報の算出結果を示す。描画範囲情報は添え字となるＹ座標に対して、描画が開始するＸ座標を表すＳｔａｒｔＸ、描画が終了するＸ座標を示すＥｎｄＸの情報を持つ。ストライブ５１１に対してはＳ８６１やＳ８７１のループが実行されず、Ｓ８１１〜Ｓ８１３で行われた描画範囲情報の初期値がそのまま設定される。
【０１０１】
図９（Ｃ）は、ストライブ５１２に対するスパンの模式図である。ストライブ５１２には、エッジ情報７５１と関連付けられているエッジ５２１と、エッジ情報７５２と関連付けられているエッジ５２２が含まれている。
ｉ＝０つまりｙ＝１５３６  ｐｉｘｅｌのスキャンライン上のスパンをスパン９１１、スパン９１２、スパン９１３として説明する。また、ｉ＝１つまりｙ＝１５３７  ｐｉｘｅｌとなるスキャンライン上のスパンを、スパン９２１、スパン９２２、スパン９２３として説明する。
【０１０２】
図９（Ｄ）は、ストライブ５１２に対するｉ＝０時の、スパンリストを示している。スパンリストは、当該ストライブに含まれるエッジリストに基づいて作成される。スパン９１１はページ左端のエッジと、エッジ５２１に起因する。スパン９１２は、エッジ５２１とエッジ５２２に起因する。スパン９１３は、エッジ５２２とページ右端のエッジに起因する。各スパンの長さはそれぞれのスパンの左側エッジの開始Ｘ間の距離によって算出される。また、各スパンの種別はそれぞれの起因しているエッジ情報が参照しているフィル情報によって決定される。
【０１０３】
種別が背景でも透過でもないスパンのうち、一番左に位置しているスパンはスパン９１１であるから、描画範囲情報のＳｔａｒｔＸはエッジ５２１のＳｔａｒｔＸである２５６０となる。また、種別が背景でも透過でもないスパンのうち、一番右に位置しているスパンはスパン９１２であるから、描画範囲情報のＥｎｄＸはエッジ５２２のＳｔａｒｔＸとＬｅｎｇｔｈの総和である２５６０となる。よって、描画範囲情報の添え字Ｙが１５３６となっている列は、ＳｔａｒｔＸが２５６０、ＥｎｄＸが２５６０となる。
【０１０４】
図９（Ｅ）は、ストライブ５１２に対するｉ＝１時の、スパンリストを示している。ｉが変化すると、各スパンと関連付けられているエッジは、その傾きに応じて開始位置も変化する。
【０１０５】
ページ左端のエッジは傾きが０であり、そのＳｔａｒｔＸは０のまま変化しない。エッジ５２１は傾きが−１であるので、そのＳｔａｒｔＸは２５６０から２５５９に変化する。エッジ５２２は傾きが＋１であるので、そのＳｔａｒｔＸは２５６０から２５６１へ変化する。
【０１０６】
先ほど同様に、描画範囲情報のＳｔａｒｔＸ，ＥｎｄＸを求めると、それぞれ２５５９、２５６１となる。同様に、ストライブ５１２内の全てのスキャンラインに対して同様の処理を行う事によって、描画範囲情報のうちＹ＝１５３６〜３０７２までの１５３６ラインの描画範囲が特定される。ページ５０１に含まれるその他のストライブ、更にそのストライブに含まれるスキャンラインについても同様に描画範囲を算出する。
【０１０７】
図１０は、トナー載り量情報算出部２５７が、ハーフトーン画像からトナー載り量情報２６２を算出する処理のフローチャートである。
【０１０８】
トナー載り量情報算出部２５７は、現在処理中のバンドが先頭バンドであるかを判定する（Ｓ１００１）。現在処理中のバンドが先頭バンドであれば、バンドＩＤを０で初期化する（Ｓ１００２）。そして、トナー消費量、トナー載り量面積、トナー載り平均値、チェック面積、トナー載り量最大値を０で初期化する（Ｓ１００３）。
【０１０９】
トナー載り量情報算出部２５７は、トナー載り量情報２６２を算出する際のスキャンラインの優先順位を導く（Ｓ１００４）。この優先順位を導く処理の詳細を図１１を用いて説明する。
【０１１０】
図１１は、トナー載り量情報算出部２５７が、各スキャンラインに対する優先順位を導く処理のフローチャートである。
【０１１１】
トナー載り量情報算出部２５７は、ｉｄｘを０で初期化する（Ｓ１１０１）。トナー載り量情報算出部２５７は、配列ＢＩＡＳの全要素に対して処理を行う（Ｓ１１１０）。配列ＢＩＡＳは、全スキャンラインを偏りなく走査するためのオフセット情報である。ここでは、ＢＩＡＳの内容を、｛０，３，１，４，２，５｝とする。トナー載り量情報算出部２５７は、ＪにＢＩＡＳの値を順次代入する（Ｓ１１１２）。トナー載り量情報算出部２５７は、Ｊがバンド高さを超過しているかを判定する（Ｓ１１３０）。Ｊがバンド高さを超過していなければ、ｉｄｘ番目の優先順位をＪとする（Ｓ１１３１）。そして、ｉｄｘに１を加算し、ＪにＢＩＡＳ長を加算する（Ｓ１１３２）。例えば、今回はＢＩＡＳ長は６であるため、ＢＩＡＳ  ［ｉ］が０であれば、Ｊは０，６，１２，１８と変化する。ＢＩＡＳ  ［ｉ］が３であれば、Ｊは３，９，１５，２１，…と変化する。サイズＪがバンド高さを超過していれば（Ｓ１１３０）、また新しいＢＩＡＳの要素に対して、処理を継続する。全てのＢＩＡＳの要素に対して処理が終了したら、優先順位算出処理を終了する。以上の処理によって、トナー載り量情報算出部２５７は、優先順位を｛０，６，１２，１８，…，４９８，５０４，５１０，３，９，１５，２１，…，５０３，５０９，５１５｝として決定する。
【０１１２】
図１０に戻り、トナー載り量情報算出部２５７は、次の処理をページ高さ回数だけ繰り返す（Ｓ１０１０）。算出した優先順位に基づき、処理対象にするスキャンラインの位置を求める（Ｓ１０１１）。例えば最初のループであれば０番目のスキャンラインを処理対象とする。２回目のループであれば６番目のスキャンラインを処理対象とする。以下、同様に順次処理していく。
【０１１３】
トナー載り量情報算出部２５７は、当該スキャンラインを処理するべきかを判定する（Ｓ１０１２）。この詳細を図１２を用いて説明する。
【０１１４】
図１２は、トナー載り量情報算出部２５７が、当該スキャンラインを処理するべきかを判定するフローチャートである。トナー載り量情報算出部２５７は、現在時刻を取得する（Ｓ１２０１）。トナー載り量情報算出部２５７は、当該スキャンラインがバンド内の先頭スキャンラインであるかを判定する（Ｓ１２１０）。もし、先頭スキャンラインであれば、累積対象画素数を０に初期化する（Ｓ１２１１）。また、開始時刻を現在時刻で初期化する（Ｓ１２１２）。
【０１１５】
トナー載り量情報算出部２５７は、当該スキャンラインのＥｎｄＸからＳｔａｒｔＸを引き、処理の対象となる画素数を求める（Ｓ１２２０）。エッジが１つも含まれていないストライブは、Ｓ８１２やＳ８１３で設定した結果、ＳｔａｒｔＸの方がＥｎｄＸよりも大きくなる。そのため、対象画素数がマイナスとなるかを判断する（Ｓ１２２１）。もし、対象画素数がマイナスとなっている場合には，処理するべき対象画素が存在しないので、対象画素数を０とする（Ｓ１２２２）。
【０１１６】
トナー載り量情報算出部２５７は、累積対象画素数が０よりも大きいかを判断する（Ｓ１２３０）。もし、累積対象画素数が０以下であれば、累積対象画素数に対象画素数を加算し（Ｓ１２３１）、中断フラグをＦＡＬＳＥに設定する（Ｓ１２３２）。累積対象画素数が０よりも大きければ、現在時刻から開始時刻の差を求めることで、経過時間を算出する（Ｓ１２４１）。次に、式１に従って、対象画素を処理した時の終了予測時間を算出する（Ｓ１２４２）。
【０１１７】
【数１】
2019126993.tif 000003
【０１１８】
式１は、これまでの経過時間内で処理できた累積対象画素数を元に、更に対象画素数も処理した時に要する時間を求めるものである。例えば、累積対象画素数が１００画素、対象画素数が５０画素、経過時間が１０ｍｓｅｃであれば、終了予測時間は１５ｍｓｅｃとなる。特に、この計算式において、当該スキャンライン上の画素を走査することなく、対象画素数を算出できている事に注目されたい。対象画素数を算出する処理は非常にシンプルな２変数の差を求めるだけで得られ、計算時間はほぼ０である。バンド単位、ページ単位で終了予測時間を算出する時間も、全画素を走査するのに比べれば非常に負荷の軽い。
【０１１９】
トナー載り量情報算出部２５７は、終了予測時間がバンド規定時間を超過するかを判断する（Ｓ１２４３）。バンド規定時間は、例えば、プリンタエンジン１３６のスループットに基づいてバンド毎に割り当てることができる。５０ｐｐｍのスループットを持つプリンタエンジンであれば、１ページ当たりの処理可能な時間は１２００ｍｓｅｃとなる。１ページを１５のバンドに分割して処理をするならば、バンド規定時間は８０ｍｓｅｃとなる。この８０ｍｓｅｃ内に当該バンドを処理できれば、エンジンスループットで出力する事が可能となる。このバンド規定時間は予めソフトウェアのソースコード上に静的にハードコーディングしてもよいし、印刷装置のステータスに応じて動的に変化しても良い。
【０１２０】
トナー載り量情報算出部２５７は、終了予測時間がバンド規定時刻を超過しない場合には、累積対象画素数に対象画素数を加算し（Ｓ１２３１）、中断フラグをＦＡＬＳＥに設定する（Ｓ１２３２）。終了予測時間がバンド規定時刻を超過していれば、中断フラグをＴＲＵＥに設定する（Ｓ１２４４）。以上によって、トナー載り量情報算出処理を現時点で中断すべきかどうかの判定結果が、中断フラグに保持される。
【０１２１】
図１０に戻り、トナー載り量情報算出部２５７は、中断フラグの状態に基づき、処理を中断するかを判断する（Ｓ１０１３）。中断フラグがＦＡＬＳＥであれば、ページ上のスキャンライン番号ｐｙを算出する（Ｓ１０１４）。当該スキャンラインの描画範囲の座標を意味するＳｔａｒｔＸとＥｎｄＸを、Ｂｙｔｅ単位での位置を意味するＳＸ、ＥＸに変換する（Ｓ１０１５）。これは、ハーフトーン画像の色深度（Ｂｉｔ  Ｄｅｐｔｈ  ／  Ｂｉｔ  Ｐｅｒ  Ｐｉｘｅｌ）に基づき、算出される。そして、チェック面積にページ幅を加算する（Ｓ１０１６）。
【０１２２】
トナー載り量情報算出部２５７は、ＳＸ番目のバイト位置からＥＸ番目のバイト位置まで、以下処理を繰り返す（Ｓ１０２０）。当該バイトに対する、ハーフトーン画像内のオフセット位置を算出する（Ｓ１０２１）。そして、Ｃ版、Ｍ版、Ｙ版、Ｋ版のハーフトーン画像上から、当該オフセット位置上の画素値Ｃ，Ｍ，Ｙ，Ｋを取得する（Ｓ１０２２）。この画素値は、対象となるハーフトーン画像が２ｂｉｔであれば４画素をまとめて表現したものとなる。画素値Ｃ，Ｍ，Ｙ，Ｋの全画素値をＯＲを取った結果に対して、画素カウントルックアップテーブルを適用して、濃度が０ではない画素数（以下、濃度非ゼロ画素数）を算出し、トナー載り面積に加算する（Ｓ１０２３）。この場合、１Ｂｙｔｅのデータから、描画されている画素数は０〜４の範囲で得らえる。この画素数カウントルックアップテーブルの１例を図１３（Ａ）に示す。図１３（Ａ）はハーフトーン画像が２ｂｉｔで表現されている時の、画素数カウントするためのルックアップテーブルである。例えば、画素値Ｃ、Ｍ、Ｙ、ＫのＯＲした結果が、０ｘ０であった場合には、２進数で００  ００  ００  ００となり、濃度非ゼロ画素数は０となる。ＯＲ結果０ｘ５は２進数で００  ００  ０１  ０１となり、濃度非ゼロ画素数は２となる。同様に、ＯＲ結果０ｘｆは２進数で、１１  １１  １１  １１となり、濃度非ゼロ画素数は４となる。これらの演算結果はビットのシフト演算を用いて同じ結果を得ることもできるが、計算コストを削減するために、ルックアップテーブルを用いることが望ましい。
【０１２３】
トナー載り量情報算出部２５７は、画素値Ｃ，Ｍ，Ｙ，Ｋに対して、トナー載り量変換ルックアップテーブルを用いてトナー載り量に変換し、その総和を当該画素のトナー載り量の全版での合計値（以下、Ｄｅｎｓｉｔｙ）とする（Ｓ１０３１）。トナー載り量変換ルックアップテーブルの１例を図１３（Ｂ）に示す。図１３（Ｂ）はハーフトーン画像が２ｂｉｔで表現されている時の、トナー載り量を算出するためのルックアップテーブルである。つまり、ある版の１画素は濃度０〜３の間で表現される。
画素値０ｘ０は２進数表記で００  ００  ００  ００となるため、トナー載り量は（２×０＋１×０）＋（２×０＋１×０）＋（２×０＋１×０）＋（２×０＋１×０）＝０となる。
画素値０ｘ５は２進数表記で００  ００  ０１  ０１となるため、トナー載り量は（２×０＋１×０）＋（２×０＋１×０）＋（２×０＋１×１）＋（２×０＋１×１）＝２となる。
同様に画素値０ｘｆｆは２進数で１１  １１  １１  １１となるため、トナー載り量は（２×１＋１×１）＋（２×１＋１×１）＋（２×１＋１×１）＋（２×１＋１×１）＝１２となる。
これらの演算についてもビットのシフト演算などを用いて同じ結果を得ることもできるが、計算コストを削減するために、ルックアップテーブルを用いることが望ましい。Ｃ版、Ｍ版、Ｙ版、Ｋ版の４版があるため任意の画素のＤｅｎｓｉｔｙは０〜４８の範囲となる。
【０１２４】
トナー載り量情報算出部２５７は、トナー消費量に、Ｄｅｎｓｉｔｙを加算する（Ｓ１０３３）。そして、Ｄｅｎｓｉｔｙがトナー載り量最大値よりも大きければ、トナー載り量最大値をＤｅｎｓｉｔｙで更新する（Ｓ１０３４）。
【０１２５】
トナー載り量情報算出部２５７は、中断フラグがＴＲＵＥであった場合、若しくは、当該バンド内の全スキャンラインの処理が終了したら、当該バンドがページの最終バンドであるかを判定する（Ｓ１０４１）。もし、最終バンドであった場合には、トナー載り面積をチェック面積で除する事でトナー面積割合を求める（Ｓ１０４２）。また、トナー消費量をチェック面積で除する事で、トナー載り平均値を求める（Ｓ１０４３）。
【０１２６】
最後に、トナー載り量情報算出部２５７は、バンドＩＤに１を加算する（Ｓ１０５１）。
【０１２７】
以上の処理によって、対象バンド上の描画に対する、トナー消費量やトナー載り量平均値、トナー載り量最大値、トナー載り面積割合を算出する事ができる。
【０１２８】
本発明を適用することで、各スキャンラインに対して、トナー載り量情報算出処理の対象となる開始位置および終了位置を、トナー載り量情報算出処理を開始する前に求められる。これにより２つのメリットがある。１つ目のメリットは、各スキャンライン上で処理対象となる画素を限定的にでき、処理時間の短縮へ寄与できる。２つ目のメリットは、各スキャンラインに対するトナー載り量情報算出に要する処理時間を開始位置と終了位置から推定する事が出来る。これにより、当該スキャンラインの全画素を走査せずとも、当該スキャンラインを間引き処理するか判断できる。
【実施例２】
【０１２９】
実施例１では、メインシステムプログラム２００でＤＬを生成後に、描画範囲情報算出処理を行う例を示した。実施例２では、別タイミングで描画範囲情報算出処理を行う手段について示す。なお、大部分の構成については既に実施例１で説明済みであるため、ここではその差分部分についてのみ言及する。
【０１３０】
図１４は、ＤＬ生成処理と描画範囲情報算出処理を同時に行う場合のソフトウェア構成図である。
【０１３１】
メインシステムプログラム１４００では、ＰＤＬインタプリタ２０３は、ＰＤＬデータを解釈し拡張ＤＬ生成部１４１０へ描画コマンドとして通知する。拡張ＤＬ生成部１４１０は、当該描画コマンドをＤＬ生成部２０４に通知する。ＤＬ生成部２０４はＤＬを生成し、一定量たまったら描画範囲算出部２０５に通知する。描画範囲算出部２０５は通知されたＤＬに従って、描画範囲情報２３２を更新する。
【０１３２】
実施例１では、ＤＬ生成処理と描画範囲算出処理とをシーケンシャルに行っていため、ＤＬのサイズが非常に大きい場合にはこのモジュールがパフォーマンスのボトルネックとなるリスクがあった。本実施例においてＰＤＬインタプリタ２０３と描画範囲算出部２０５を含む拡張ＤＬ生成部１４１０をそれぞれ別のスレッドで動作させれば、処理が並列化でき、パフォーマンス改善に繋がる。
【０１３３】
図１５は、ＲＩＰ処理と描画範囲情報算出処理を同時に行う場合のソフトウェア構成図である。
【０１３４】
ＲＩＰ制御部２５２は、拡張ＲＩＰモジュール１５００を制御する。拡張ＲＩＰモジュール１５００には、ＲＩＰモジュール１３２と、描画範囲算出部２０５が含まれる。
【０１３５】
ＲＩＰモジュール１３２では、ラスタライズ処理をする際に各スキャンラインに含まれるスパンのリストを求める。描画範囲算出部２０５ではＲＩＰモジュール１３２が求めたスパンリストを元に、描画範囲情報２３２を求めることで、スパンリストを２度処理をすることを省く事も出来る。
【０１３６】
また、ＲＩＰモジュール１３２では、スパンリストを元にコントーン画像の各画素を描画する。このタイミングでスキャンラインに含まれる先頭と終端のスパン情報を元に、描画範囲情報２３２を求める構成を取ることも可能である。
【実施例３】
【０１３７】
実施例１では、各スキャンラインの行番号に基づいて優先順位を決定する例を示した。実施例３では、各スキャンラインの描画画素数に基づいて優先順位を決定する手段について示す。
【０１３８】
図１６は、トナー載り量情報算出部２５７が、各スキャンラインの描画画素数に基づいて優先順位を決定するフローチャートである。
【０１３９】
トナー載り量情報算出部２５７は、以下の処理をバンド高さ数だけ繰り返す（Ｓ１６０１）。繰り返し回数をｉとする。ｉ番目のライン情報のｉｄをｉとする（Ｓ１６０２）。ｉ番目のライン情報のＬｅｎｇｔｈを、ｉ番目の描画範囲情報のＥｎｄＸとＳｔａｒｔＸの差分とする（Ｓ１６０３）。ｉ番目のライン情報のＬｅｎｇｔｈが０未満であるかを判定し（Ｓ１６０４）、０未満であれば、０を代入する（Ｓ１６０５）。この処理を繰り返すことで、ライン情報にはページ上のスキャンラインの行番号と、そのスキャンラインの描画画素数が求められる。
【０１４０】
トナー載り量情報算出部２５７は、この得られたライン情報をＬｅｎｇｔｈの値を昇順ソートを行う（Ｓ１６１０）。これにより、ライン情報を順次処理すると、描画画素数が少ない要素から大きい要素に並び替えられる。
【０１４１】
トナー載り量情報算出部２５７は、奇数番目の要素は昇順のまま、偶数番目の要素を降順に並び替える。具体的には、変数ｉを０で初期化する（Ｓ１６２０）。そして、変数ｉがバンド高さの半分よりも小さいかを判断する（Ｓ１６２１）。バンド高さの半分よりも小さいと判断したら、交換対象となる位置を示す変数ｊをバンド高さ−変数ｉ−１で求める。そして、ライン情報のｉ番目とｊ番目の要素を交換し（Ｓ１６２３）、変数ｉに２を加算する（Ｓ１６２４）。変数ｉがバンド高さの半分以上となったら、全バンド高さに対して（Ｓ１６３０）、ｉ番目の優先順位をｉ番目のライン情報のｉｄに基づいて決定する（Ｓ１６３１）。
【０１４２】
バンド内に含まれるスキャンラインの描画画素数の分布は必ずしも一定のものではない。そのため、単純に何行か毎に間引くと、データによってはトナー載り量情報２３２が過大・過小評価されるリスクがある。例えば、横縞のハッチングパターンが書かれたバンドではその描画画素数の分布が非常に大きいケースと少ないケースが入り混じることになる。本手段を用いることで、描画画素数の少ないスキャンラインと、描画画素数の多いスキャンラインと、両方を加味したうえで、優先順位を決定する事が可能となる。
【０１４３】
上記では、描画画素数の分布が少ないクラスタ―と、描画画素数の分布が少ない多いクラスタ―の２つに大別できる事を前提として説明した。別の実現手段としては、複数のクラスタ―に分割する手段を取ることもできる。具体的には、予め描画画素数の分布を求め、ｘ−ｍｅａｎｓ法などのデータクラスタリング手法によって描画画素数が同程度となるスキャンラインをまとめて複数のクラスタ―を構成する。その上でそれぞれのクラスタ―からクラスタ―中心に近い順番に各スキャンラインを優先順位に割り当てる。更に、このクラスタリング処理をする際の評価関数としてに、前後の数スキャンライン分の描画画素数の情報も加味して類似性を判断することで、より効果的に複数スキャンラインの代表値を求める事が可能となる。
【０１４４】
以上、ディスプレイリストがスキャンライン単位での描画のための情報である事を説明してきた。しかしながら、本発明は、ページを矩形に分割したブロック単位でのレンダリングのためのディスプレイリストへ適応する事も容易に可能である。
【０１４５】
本発明の実施例では描画範囲算出部２０５がＤＬを元に描画範囲情報２３２を算出する前提で説明をしてきた。それ以外に、例えばＰＤＬインタプリタ２０３からの描画コマンドに基づいて、描画範囲情報２３２を算出してもよい。あるいは、ハーフトーンモジュール１３４が出力したハーフトーン画像を元に、描画範囲情報２３２を算出するためのソフトウェアやハードウェアを搭載し、実現してもよい。
【０１４６】
加えて、描画範囲情報２３２を今回はトナー載り量情報算出処理に適用したが、その他の画像処理に対して適用することで、効果的に処理時間を短縮する事も可能である。例えば、ＣＭＳモジュール１３３で行われるＣＭＳ処理に適用したり、ハーフトーンモジュール１３４で行われるディザリング処理を、描画範囲情報２３２に含まれる描画範囲内の領域に限定して行うこともできる。これらの工夫については、特に各モジュールがソフトウェアで実装されている場合に効果的に処理時間削減に利用できる。
【０１４７】
これらは、本発明で開示している内容の範囲を逸脱しない範囲で適用できる。
【符号の説明】
【０１４８】
２０１  メイン側ジョブ管理部、２０３  ＰＤＬインタプリタ、
２０４  ＤＬ生成部、２０５  描画範囲情報算出部、２３２  描画範囲情報、
２６２  トナー載り量情報、２５１  サブ側ジョブ管理部、２５２  ＲＩＰ制御部、
２５６  プリンタエンジン制御部、２５７  トナー載り量情報算出部
【図１】
2019126993.tif 000004
【図２】
2019126993.tif 000005
【図３】
2019126993.tif 000006
【図４】
2019126993.tif 000007
【図５】
2019126993.tif 000008
【図６】
2019126993.tif 000009
【図７】
2019126993.tif 000010
【図８】
2019126993.tif 000011
【図９】
2019126993.tif 000012
【図１０】
2019126993.tif 000013
【図１１】
2019126993.tif 000014
【図１２】
2019126993.tif 000015
【図１３】
2019126993.tif 000016
【図１４】
2019126993.tif 000017
【図１５】
2019126993.tif 000018
【図１６】
2019126993.tif 000019