(57)【要約】【課題】ＰＤＬデータのブロック分割レンダリングに要する時間を正確に予測する。【解決手段】入力ＰＤＬデータに対するブロック分割レンダリングによって複数のブロックに分割したビットマップデータを生成するレンダリング手段を有する画像形成装置のための画像処理装置であって、前記レンダリング手段におけるビットマップデータの生成に要する時間を予測する予測手段と、前記予測のための補正情報を前記入力ＰＤＬデータに付加した予測用ＰＤＬデータを生成する予測用ＰＤＬデータ生成手段と、を備え、前記予測手段は、前記予測用ＰＤＬデータから生成した中間データに含まれる補正情報に基づいて、前記予測を行なうことを特徴とする。【選択図】図１３
2017024321.tif 000002
【特許請求の範囲】
【請求項１】
入力ＰＤＬデータに対するブロック分割レンダリングによって複数のブロックに分割したビットマップデータを生成するレンダリング手段を有する画像形成装置のための画像処理装置であって、
前記レンダリング手段におけるビットマップデータの生成に要する時間を予測する予測手段と、
前記予測のための補正情報を前記入力ＰＤＬデータに付加した予測用ＰＤＬデータを生成する予測用ＰＤＬデータ生成手段と、
を備え、
前記予測手段は、前記予測用ＰＤＬデータから生成した中間データに含まれる補正情報に基づいて、前記予測を行なう
ことを特徴とする画像処理装置。
【請求項２】
前記予測用ＰＤＬデータ生成手段は、各ブロックに対応する描画コマンドを前記補正情報として前記入力ＰＤＬデータに加えることで、前記予測用ＰＤＬデータを生成することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記予測用ＰＤＬデータ生成手段は、前記ブロック毎の位置座標を、処理対象ページの用紙サイズ、データ解像度及びページ方向に基づいて導出し、導出した位置座標から各ブロックに対応する描画コマンドを生成して、前記予測用ＰＤＬデータを生成することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記予測用ＰＤＬデータ生成手段は、用紙サイズ、データ解像度及びページ方向の組み合わせに応じ、予め求めておいた各ブロックに対応する描画コマンドを用いて、前記予測用ＰＤＬデータを生成することを特徴とする請求項２に記載の画像処理装置。
【請求項５】
前記各ブロックに対応する描画コマンドは、前記各ブロックに内接する矩形オブジェクトのクリップコマンドであることを特徴とする請求項２乃至４のいずれか１項に記載の画像処理装置。
【請求項６】
前記クリップコマンドは、前記入力ＰＤＬデータに当初から含まれるオブジェクトの描画コマンドよりも前に付加されることを特徴とする請求項５に記載の画像処理装置。
【請求項７】
前記予測手段は、前記予測用ＰＤＬデータから中間データを生成し、該中間データに含まれる全エッジを加算したエッジ高とスパン数から前記レンダリング手段が生成するピクセルデータ数に、１つのピクセルデータの生成に掛かる処理時間を乗算することにより、前記レンダリング手段におけるビットマップデータの生成に要する時間を予測し、
前記エッジは、オブジェクトのアウトラインであり、
前記スパンは、単一のスキャンラインにおける前記エッジ間で囲まれる閉領域である
ことを特徴とする請求項１乃至６のいずれか１項に記載の画像処理装置。
【請求項８】
入力ＰＤＬデータに対するブロック分割レンダリングによって複数のブロックに分割したビットマップデータを生成するレンダリング手段を有する画像形成装置であって、請求項１〜７のいずれか１項に記載の画像処理装置を備え、
前記予測手段で予測された時間に、印刷用紙の給紙から排紙に要する時間を加算した値を、印刷所要時間として表示する表示手段をさらに備えたことを特徴とする画像形成装置。
【請求項９】
入力ＰＤＬデータに対するブロック分割レンダリングによって複数のブロックに分割したビットマップデータを生成するレンダリング手段を有する画像形成装置における、当該ビットマップデータの生成に要する時間を予測する方法であって、
前記予測のための補正情報を前記入力ＰＤＬデータに付加した予測用ＰＤＬデータを生成するステップと、
前記予測用ＰＤＬデータから生成した中間データに含まれる補正情報に基づいて、前記ビットマップデータの生成に要する時間を予測するステップと
を含むことを特徴とする方法。
【請求項１０】
コンピュータを、請求項１乃至７のいずれか１項に記載の画像処理装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理に要する時間の予測技術に関する。
【背景技術】
【０００２】
従来、ユーザに対して、印刷処理に要する時間を通知する機能を備えた画像形成装置が実現されている。例えば特許文献１では、複数のオブジェクトを含むＰＤＬ（Page Description Language）データを受信し、ＰＤＬデータに含まれる描画オブジェクトの個数やサイズから印刷処理に要する時間を予測する技術（以下、所要時間予測技術）が提案されている。
【０００３】
一方で、レンダリング処理に必要なメモリ容量を削減する技術として、例えばブロック分割レンダリングが提案されている（特許文献２）。これは、ＰＤＬデータから生成した中間データに対しレンダリング処理を行う過程で、中間データに含まれるベクタデータを複数のブロック（小領域）に分割したビットマップデータを生成し、ブロック毎に画像を圧縮するものである。これによりレンダリング処理において使用するメモリ容量の削減を可能にしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−２１６３５９号公報
【特許文献２】特開２０１２−２５４５８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献２で示されるブロック分割レンダリングの方法では、ＰＤＬデータから生成した中間データをもとに、レンダリング処理中に分割処理を行うことになる。このようなブロック分割レンダリングに、特許文献１に示される所要時間予測技術を適用すると、分割前のＰＤＬデータを予測に用いるため、レンダリング処理に要する時間を正確に予測することが困難であった。これは、複数のブロックに跨るオブジェクトの場合、各ブロックにおいて、当該オブジェクトの一部のみに対応するビットマップデータの生成を行なうことになるが、このようなブロック単位の処理時間までは考慮されないためである。
【課題を解決するための手段】
【０００６】
本発明に係る画像処理装置は、入力ＰＤＬデータに対するブロック分割レンダリングによって複数のブロックに分割したビットマップデータを生成するレンダリング手段を有する画像形成装置のための画像処理装置であって、前記レンダリング手段におけるビットマップデータの生成に要する時間を予測する予測手段と、前記予測のための補正情報を前記入力ＰＤＬデータに付加した予測用ＰＤＬデータを生成する予測用ＰＤＬデータ生成手段と、を備え、前記予測手段は、前記予測用ＰＤＬデータから生成した中間データに含まれる補正情報に基づいて、前記予測を行なうことを特徴とする。
【発明の効果】
【０００７】
本発明によれば、ＰＤＬデータのブロック分割レンダリングに要する時間を正確に予測することができる。
【図面の簡単な説明】
【０００８】
【図１】画像処理システムの構成例を示すブロック図である。
【図２】プリンタの制御部の内部構成を示すブロック図である。
【図３】留め置かれた印刷ジョブのうちユーザが指定した任意の印刷ジョブを出力する際の処理の流れを示すフローチャートである。
【図４】留め置きジョブの一覧表示画面の一例を示す図である。
【図５】ＰＤＬデータの一例を示す図である。
【図６】ディスプレイリストの一例を示す図である。
【図７】ブロック分割レンダリング処理の流れを示すフローチャートである。
【図８】スキャンラインから抽出したエッジデータに対してソート処理を行なった結果を示す図である。
【図９】スパン情報を説明する図である。
【図１０】レベル情報の生成過程を説明する図である。
【図１１】ブロック分割の結果の一例を示す図である。
【図１２】クリップコマンドの一例を示す図である。
【図１３】印刷所要時間算出処理の流れを示すフローチャートである。
【図１４】予測用ＰＤＬデータの一例を示す図である。
【図１５】予測用ＰＤＬデータをもとに生成したディスプレイリストを示す図である。
【図１６】予測用ＰＤＬデータ生成処理の詳細を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、添付の図面を参照して、本発明を実施する形態について説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。
【００１０】
［実施例１］
図１は、本実施例に係る画像処理システムの構成例を示すブロック図である。画像処理システム１００は、印刷データ（ＰＤＬデータ）を生成する情報処理装置としてのホストコンピュータ１１０と、入力ＰＤＬデータを画像処理して印刷出力する画像形成装置としてのプリンタ１２０で構成され、相互にＬＡＮ１３０を介して接続されている。プリンタ１２０は、コピーやＦＡＸといった複数の機能を備えたＭＦＰ（Multi Function Peripheral）であってもよいし、印刷機能のみを備えたＳＦＰ（Single Function Printer）であってもよい。また、画像形成に用いる方式としては、例えば電子写真方式やインクジェット方式が考えられるが、これらに限定されるものではない。さらに、ホストコンピュータ（以下、ホストＰＣ）１１０とプリンタ１２０はＬＡＮ１３０で接続されているが、接続方法はこれに限定されるものではない。例えば公衆回線に代表されるＷＡＮなどの任意のネットワーク、ＵＳＢなどのシリアル伝送方式、セントロニクスやＳＣＳＩなどのパラレル伝送方式なども適用可能である。
【００１１】
ホストＰＣ１１０は、ＬＡＮ１３０を介してＦＴＰやＳＭＢといったプロトコルを用いてファイルを送受信したり、電子メールを送受信したりすることができる。さらには、ホストＰＣ１１０には、印刷対象となる文書等を作成するためのアプリケーションプログラムや印刷ジョブを作成するためのプリンタドライバを、ＨＤＤ等の記憶部（不図示）に格納している。なお、プリンタドライバで作成される印刷ジョブには、印刷設定とユーザにより作成された印刷データ（ＰＤＬデータ）が含まれる。そして、印刷設定には、ユーザＩＤ、用紙サイズ、カラー／モノクロ印刷、両面印刷、出力部数等の情報が含まれる。
【００１２】
プリンタ１２０は、制御部１２１、操作部１２２、印刷部１２３で構成される。制御部１２１は、操作部１２２及び印刷部１２３と接続され、これら各部の動作を制御することでプリンタ１２０全体の動作制御を司る。また制御部１２１は、ＬＡＮ１３０を介して、ホストＰＣ１１０を含む外部装置と、画像データなどを送受信する。操作部１２２は、入力ボタン、タッチパネル兼ディスプレイを有し、例えば留め置かれた印刷ジョブを出力する際の上記印刷設定に対する変更等の入力操作をユーザから受け付ける。また、操作部１２２は、制御部１２１からの指示に基づき、ディスプレイ上への画像の表示も行う。ユーザの入力操作に係る情報は、制御部１２１へ送られる。印刷部１２３は、制御部１２１が処理した画像データ（ビットマップデータ）を受け取って、画像データに基づいた印刷処理を実行する。
【００１３】
図２は、プリンタ１２０の制御部１２１の内部構成を示すブロック図である。ＣＰＵ２０１は、プリンタ１２０全体を制御するための中央処理装置である。なお、ＣＰＵ２０１は複数のＣＰＵから構成されていてもよい。ＲＡＭ２０２は、ＣＰＵ２０１が動作するためのワークメモリであり、入力された画像データを一時記憶するための画像メモリでもある。ＲＡＭ２０２はメインメモリとも呼ばれる。ＲＯＭ２０３はブートＲＯＭであり、システムのブートプログラムが格納されている。ＨＤＤ２０４は、各種処理のためのシステムソフトウェアプログラム及び入力された画像データ等を格納する。
【００１４】
操作部Ｉ／Ｆ２０５は、操作部１２２と制御部１２１とを接続するためのインタフェースであり、操作部１２２に各種入力操作用ＵＩ画面を表示するための画像データを出力する。また、操作部Ｉ／Ｆ２０５は、操作部１２２に表示されたＵＩ画面を介してユーザが入力した各種情報をＣＰＵ２０１に伝える役割を担う。
【００１５】
ネットワークＩ／Ｆ２０６は、ＬＡＮカード等で実現され、ＬＡＮ１３０に接続して外部装置との間で情報の入出力を行う。
【００１６】
画像バスＩ／Ｆ２０７は、システムバス２０８と画像データを高速で転送する画像バス２０９とを接続するためのインタフェースであり、データ構造を変換するバスブリッジである。画像バス２０９上には、ラスタイメージプロセッサ（ＲＩＰ）２１０、デバイスＩ／Ｆ２１１、印刷画像処理部２１２、画像編集用画像処理部２１３、カラーマネージメントモジュール（ＣＭＭ）２１４が接続される。ＲＩＰ２１０は、ページ記述言語コード（ＰＤＬデータ）や後述するベクトルデータをビットマップデータに展開する。デバイスＩ／Ｆ２１１は、印刷部１２３と制御部１２１との間のインタフェースであり、画像データの同期系／非同期系の変換を行う。
【００１７】
印刷画像処理部２１２は、印刷部１２３で印刷する画像データに対して、印刷部１２３のプリンタエンジンに応じた濃度補正や解像度変換といった画像処理を行う。編集用画像処理部２１３は、画像データに対し、回転や圧縮／伸長といった各種画像処理を行う。ＣＭＭ２１４は、画像データに対して、カラープロファイルやキャリブレーションデータに基づいた、色変換処理（色空間変換処理ともいう）を施す専用ハードウェアモジュールである。カラープロファイルとは、デバイス依存色空間で表現したカラー画像データをデバイス非依存色空間（例えばＬａｂなど）に変換するための関数のような情報である。キャリブレーションデータとは、印刷部１２３の色再現特性を修正するためのデータである。
【００１８】
＜用語の定義＞
ここで、本明細書における用語の定義について説明する。  
エッジとは、オブジェクトのアウトラインであり、ページ内に描画するオブジェクトとオブジェクト、またはオブジェクトと背景の境目を指す。
【００１９】
スキャンラインとは、画像形成処理において画像データが連続的にメモリ走査される主走査方向のラインであり、スキャンラインの高さは１ピクセルとなっている。また複数のスキャンラインを束ねたものをバンドと呼ぶ。
【００２０】
スパンとは、単一のスキャンラインにおけるエッジ間で囲まれる閉領域を指す。すなわち、１つのスキャンラインをオブジェクトのエッジで区切った場合の、エッジを端点として持つライン中の閉領域を意味する。
【００２１】
レベルとは、ページ内に描画するオブジェクト同士の上下関係を示すもので、各オブジェクトには必ずそれぞれ異なるレベル番号が割り振られる。
【００２２】
フィルとはスパンに対する塗り情報を指す。ビットマップデータやシェーディングのように１ピクセル毎に異なる色値を持つフィルや、ベタ塗りのようにスパン中で色値の変化がないフィルが存在する。
【００２３】
＜印刷処理の流れ＞
続いて、プリンタ１２０における印刷処理について説明する。本実施例では、ホストＰＣ１１０から受信した印刷ジョブを一旦留め置いて、その後、留め置かれた印刷ジョブの出力指示をユーザから受けて印刷するまでの一連の流れを説明するものとする。そして、図３は、留め置かれた印刷ジョブのうちユーザが指定した任意の印刷ジョブを出力する際の処理の流れを示すフローチャートである。この一連の処理は、ＲＯＭ２０３又はＨＤＤ２０４に保存されたプログラムをＲＡＭ２０２に展開し、これをＣＰＵ２０１が実行することによって実現される。
【００２４】
ステップ３０１において、ＣＰＵ２０１は、操作部１２２から通知されるユーザログインを検知する。
【００２５】
ステップ３０２において、ＣＰＵ２０１は、ログインしたユーザによって留め置かれた印刷ジョブを、全ての留め置かれている印刷ジョブ（留め置きジョブ）の中から探索し、操作部１２２のディスプレイ上に一覧表示する。図４は、ログインユーザに係る留め置きジョブの一覧表示画面の一例を示す図である。一覧表示画面４００には、ログインユーザのユーザＩＤを示す表示欄４０１、当該ログインユーザの留め置きジョブの内容と各印刷ジョブの出力に要する時間（印刷所要時間）を示す表示欄４０２が存在する。この表示欄４０２に表示される印刷所要時間は、印刷用紙の給紙から排紙までに要すると見込まれる時間に、ブロック分割レンダリング処理に要すると見込まれる時間を加えた時間である。なお、後述のステップ３０７における所定の画像処理に要する時間は、印刷用紙の給紙から排紙までに要する時間に含まれる。本実施例では、この表示欄４０２に表示される印刷所要時間が、ブロック分割レンダリングを考慮した精度の高い予測時間となる。そして、ユーザは印刷を希望する印刷ジョブのチェックボックス４０３にチェックを入れて選択し、印刷開始ボタン４０４を押下することで、選択した印刷ジョブの印刷処理が開始される。
【００２６】
ステップ３０３において、ＣＰＵ２０１は、印刷開始ボタン４０４の押下が検知されたかどうかを判定する。一覧から任意の印刷ジョブが選択され、印刷開始が指示されていた場合、ステップ３０４に進む。この際、ＣＰＵ２０１は、選択された印刷ジョブに含まれるＰＤＬデータをＨＤＤ２０４からＲＡＭ２０２にロードする。一方、印刷開始ボタン４０４の押下が検知できなければ、監視を続行する。
【００２７】
ステップ３０４において、ＣＰＵ２０１は、ロードされたＰＤＬデータについて、ＰＤＬの種別やレンダリングするためのデータ解像度、描画コマンドを解釈する。図５は、ＰＤＬデータの一例を示す図であり、ページ開始（レイアウト）コマンド５０１と２種類の四角形の描画コマンド５０２及び５０３とで構成されている。図５（ａ）は、印刷対象となる、解像度（Resolution）が600dpiの画像を示している。いま、用紙サイズ（Media）がA4（210mm×297mm）、ページ方向（Orientation）が長辺が垂直になるPortraitに指定されており、この場合、生成するビットマップデータの幅と高さ（Area Size）は、「4960pixel×7040pixel」となる。
【００２８】
ステップ３０５において、ＣＰＵ２０１は、ステップ３０４で解釈した結果に基づいてレンダリング用中間データであるディスプレイリスト（ＤＬ）を生成する。図６は、図５のＰＤＬデータに対応するディスプレイリストを示している。図６に示すように、ディスプレイリストには、３種類のオブジェクトそれぞれについて、オブジェクトのパス点列（図形の頂点）の情報を元に導出された、オブジェクトを構成する線分の開始座標、終了座標、傾きの情報が、エッジデータとして格納されている。生成されたディスプレイリストは、ＲＡＭ２０２に格納される。すなわち、図６のような矩形状のオブジェクト１、２、３のそれぞれからは、３個のエッジが生成されるので、ＲＡＭ２０２に格納されるディスプレイリストには、９個（３個×３）のエッジが含まれることになる。
【００２９】
ステップ３０６において、ＣＰＵ２０１は、生成したディスプレイリストのレンダリング処理をＲＩＰ２１０に要求する。この要求を受けてＲＩＰ２１０はレンダリング処理を実行し、ビットマップデータを生成する。前述のとおり本実施例では、ブロック分割によるレンダリング処理が実行される。このブロック分割レンダリングの詳細は後述する。
【００３０】
ステップ３０７において、ＣＰＵ２０１は、レンダリング結果であるビットマップデータについての所定の画像処理を、印刷画像処理部２１２、編集用画像処理部２１３及びＣＭＭ２１４に要求する。この要求を受けて、印刷画像処理部２１２、編集用画像処理部２１３及びＣＭＭ２１４では、用紙の搬送方向に合わせた回転や、色変換処理、濃度補正処理などがビットマップデータに対して施される。
【００３１】
ステップ３０８において、ＣＰＵ２０１は、画像処理が施されたビットマップデータの印刷処理を印刷部１２３に要求する。要求を受けて印刷部１２３は、印刷処理を実行して、印刷後の用紙を出力する。
【００３２】
以上が、プリンタ１２０における留め置き印刷処理の内容である。
【００３３】
続いて、上述のステップ３０６におけるブロック分割レンダリング処理について説明する。このブロック分割レンダリング処理は、処理対象となるスキャンライン毎に順次レンダリングするための情報をディスプレイリストから読み取り、例えば、1240pixel×1240pixelといったサイズのブロック単位の画像データに出力していく処理である。ＲＩＰ２１０によるブロック分割レンダリングは、ＣＰＵ２０１が、ＲＯＭ２０３やＨＤＤ２０４に保存されている所定のプログラムをＲＡＭ２０２に展開して実行することによって実現される。以下、図７に示すブロック分割レンダリング処理の流れを示すフローチャートに従って説明する。
【００３４】
ステップ７０１において、ＲＩＰ２１０は、ディスプレイリストを受信する。具体的には、ＣＰＵ２０１によってＲＡＭ２０２上にブロック分割レンダリングの対象となるディスプレイリストが展開される。
【００３５】
ステップ７０２において、ＲＩＰ２１０は、ディスプレイリストをスキャンライン毎に解析し、順次レンダリングするためのエッジデータを抽出する。例えば、前述の図６に示すディスプレイリストにおける１０００ライン目のスキャンラインを解析する場合、オブジェクトを構成する直線情報に基づいて、該直線とスキャンラインとの交点をオブジェクト毎に算出する。
【００３６】
ステップ７０３において、ＲＩＰ２１０は、注目スキャンラインから抽出したエッジデータについてソート処理を行う。図８は、上記１０００ライン目のスキャンラインから抽出したエッジデータに対してソート処理を行なった結果を示す図であり、図６における３種類のオブジェクト１〜３におけるエッジデータについてのソート処理結果が示されている。オブジェクト１〜３のエッジデータを順にロードし、エッジのＸ座標に基づいて挿入位置を決定してソートすることで、図８に示すようなリスト形式のソート後エッジデータが得られる。
【００３７】
ステップ７０４において、ＲＩＰ２１０は、ソート後エッジデータから注目スキャンラインにおけるスパン情報を生成し、スパン内に存在するオブジェクトをレベル順にソートして描画に必要なオブジェクトのレベル情報を生成する。図９は、図５のＰＤＬデータに対応するページ９００内のバンド９０１について得られるスパン情報を説明する図である。図９（ａ）に示すように、所定のバンド高さを持つバンド９０１は、オブジェクトの位置に従って縦方向（副走査方向）に３つの領域に分けられ、その上で、スパン１〜スパン７の７つのスパンに分割される。より詳細には、領域１は、領域１の高さに相当するライン数分のスパン１で構成される。領域２は、領域２の高さに相当するライン数分のスパン２とスパン３で構成される。領域３は、領域３の高さに相当するライン数分のスパン４、スパン５、スパン６及びスパン７で構成される。図９（ｂ）は、スパン１〜スパン７の各スパンにおいて、何をどのように描画するのかを規定したスパン情報を示している。ここで、スパン５のスパン情報における“ＲＯＰ２”は、バイナリラスターオペレーションの意味である。そして、レベル番号１〜３に内容の異なる塗り情報フィル１〜３がそれぞれ対応付けられている。この場合において、領域３に属する上記１０００ライン目については、スパン４〜７の４つのスパン情報が生成されることになる。
【００３８】
そして、このようなスパン情報に基づき、描画に必要なオブジェクトのレベル情報が併せて生成される。図１０は、上記１０００ライン目について含まれる４つのスパンのうち、スパン５について生成されるレベル情報の生成過程を説明する図である。図１０では、スパン５内に存在する３種類のオブジェクト１〜３をレベル順にソートした結果が示されている。すなわち、「レベル番号３・フィル３のオブジェクト３」、「レベル番号１・フィル１のオブジェクト１」、「レベル番号２・フィル２のオブジェクト２」の順にロードした場合のソート処理結果が示されている。図１０に示されるように、各オブジェクトがロードされると、レベル番号に従って連結リスト内にレベル順に並ぶようにソートされる。そして、スパン内に存在するすべてのオブジェクトがロードされると、実際に描画されるオブジェクトのレベル情報が選択されて出力する。例えば、図１０に示すスパン５の場合、ロード対象のオブジェクトに合成処理や透過処理の指定がなされていない限り、最前面に位置するオブジェクト以外は陰面消去する必要がある。そのため、図１０の例では、最終的に描画される、レベル番号３のオブジェクト３のレベル情報のみが出力されることになる。このようにして、注目スキャンラインについてのスパン情報と、当該スパン情報に対応するレベル情報が出力される。
【００３９】
ステップ７０５において、ＲＩＰ２１０は、ステップ７０４で生成された注目スキャンラインについてのスパン情報とレベル情報を、ワークバッファに格納する。
【００４０】
ステップ７０６において、ＲＩＰ２１０は、ワークバッファに格納されたスキャンライン毎のスパン情報とレベル情報が、所定のブロック高さのスキャンライン分だけ格納されたかを判定する。まだ所定のブロック高さ（例えば1240pixels）分のスキャンラインのスパン情報とレベル情報が格納されていない場合は、ステップ７０２に戻って次のスキャンラインを注目スキャンラインとして処理を続行する。一方、所定のブロック高さ分のスキャンラインのスパン情報とレベル情報が格納されていれば、ステップ７０７に進む。
【００４１】
ステップ７０７において、ＲＩＰ２１０は、ワークバッファに格納された所定のブロック高さ分のスパン情報とレベル情報に基づいて、所定の座標を跨ぐスパンを分割して、全てのスパンが所定のブロック内に収まるようにする（ブロック分割）。図１１は、図９（ａ）のバンド９０１内の領域１〜３に含まれる７つのスパン（スパン１〜７）を、ブロック分割した結果を示す図である。図１１（ａ）に示すように、図９（ａ）におけるバンド９０１内の計３つの領域１〜３においてスパン１〜７は、所定のブロック幅で分割された結果、計１２個の領域４〜１５において１４個のスパン１〜１４に細分化される。詳細には、ブロック１は、領域４の高さのライン数分のスパン１、領域５の高さのライン数分のスパン５、領域６の高さのライン数分のスパン９及び１０で構成される。ブロック２は、領域７の高さのライン数分のスパン２、領域８の高さのライン数分のスパン６、領域９の高さのライン数分のスパン１１で構成される。ブロック３は、領域１０の高さのライン数分のスパン３、領域１１の高さのライン数分のスパン４、領域１２の高さのライン数分のスパン１２及び１３で構成される。ブロック４は、領域１３の高さのライン数分のスパン４、領域１４の高さのライン数分のスパン８、領域１５の高さのライン数分のスパン１４で構成される。このように、ブロック分割の前後で、スパンの数は変化する（増える）。
【００４２】
ステップ７０８において、ＲＩＰ２１０は、分割されたブロックのうち、注目するブロック内の注目するスパンについて、フィル処理とコンポジット処理を行う。例えば、図１１（ａ）のバンド９０１に対応するブロック高さに相当するスキャンライン分のスパン情報とレベル情報がワークバッファに格納されている場合、最初にブロック１が注目ブロックに決定され、スパン１を注目スパンとしてそのスパン情報とレベル情報に基づいて、フィル処理とコンポジット処理がなされる。
【００４３】
ステップ７０９において、ＲＩＰ２１０は、注目ブロック内のすべてのスパンについてフィル処理とコンポジット処理が終了したかどうかを判定する。判定の結果、注目ブロック内に未処理のスパンがあれば、ステップ７０８に戻る。例えば、スパン１についての処理が終わった段階であれば、次のスパン５が注目スパンとなって処理が続行される。一方、注目ブロック内に未処理のスパンがなければ、ステップ７１０に進む。
【００４４】
ステップ７１０において、ＲＩＰ２１０は、ワークバッファに格納された全てのスキャンライン分のスパン（ブロック分割後の全てのスパン）に対し、フィル処理とコンポジット処理が完了したかどうかを判定する。未処理のスパンがある（すなわち、未処理のブロックがある）場合は、ステップ７０８に戻って次のブロックを注目ブロックに決定し、処理を続行する。例えば、ブロック１についての処理が終わった段階であれば、次のブロック２が注目ブロックとなって処理が続行され、ブロック４についての処理が終了するまで繰り返される。
【００４５】
ステップ７１１において、ＲＩＰ２１０は、受信したディスプレイリストについての全てのスキャンラインについて、レンダリング処理が完了したか否かを判定する。未処理のスキャンラインがあれば、ステップ７０２に戻って次の注目スキャンラインを決定し処理を続行する。一方、全てのスキャンラインについてレンダリング処理が完了していれば、本処理を終了する。
【００４６】
以上が、ＲＩＰ２１０によるブロック分割レンダリング処理の内容である。上述のとおりブロック分割によってスパン数が増加するため、増加したスパン数分のフィル・コンポジット処理が新たに発生することになる。しかし、ホストコンピュータ１１０から送られてくるＰＤＬデータは、ＲＩＰ２１０で実行されるブロック分割レンダリングを考慮した構成にはなっていない。ＰＤＬデータ内にブロック分割処理の発生とその位置を示す情報を持たせることができれば、ブロック分割レンダリングに要する時間を正確に予測することを可能となる。
【００４７】
本実施例では、補正情報としてのクリップコマンドをブロック分割処理が発生する位置に付加したＰＤＬデータを生成し、これを用いて正確な処理時間を予測することとしている。ここで、クリップコマンドとは、該コマンドが指定する位置に存在する描画オブジェクトを、クリップコマンドが指定する形状（例えば矩形）にくり抜くことを指示する描画コマンドである。図１２は、クリップコマンドの一例を示す図である。図１２では、描画オブジェクト１２００が、クリップコマンド１２０１が指定する形状にくり抜かれた結果、画像１２０２が形成されている。
【００４８】
このようなクリップ処理をＲＩＰ２１０で実行した場合には、スパン情報をクリップコマンドが指定する位置座標（エッジ）で分割し、分割後の位置座標が示す閉領域の外に存在するスパン情報を削除することで、クリップコマンドが指定する形状にくり抜かれる。したがって、ＲＩＰ２１０で実際に実行されるブロック分割と同等の処理を、クリップコマンドに基づくクリップ処理で再現することができる。
【００４９】
続いて、本実施例の特徴である、精度の高い印刷所要時間を算出する処理について説明する。図１３は、印刷所要時間算出処理の流れを示すフローチャートである。この一連の処理も、ＲＯＭ２０３又はＨＤＤ２０４に保存されたプログラムをＲＡＭ２０２に展開し、これをＣＰＵ２０１が実行することによって実現される。
【００５０】
ＰＣ１１０から留め置き印刷の対象となる印刷ジョブを受信すると、ステップ１３０１において、ＣＰＵ２０１は、受信した印刷ジョブ内のＰＤＬデータから１ページ分のＰＤＬデータを取り出す。
【００５１】
ステップ１３０２において、ＣＰＵ２０１は、取り出した１ページ分のＰＤＬデータから、該ページ分のレンダリング処理に要する時間を予測するためのＰＤＬデータ（以下、予測用ＰＤＬデータ）を生成する。この予測用ＰＤＬデータは、ブロック分割時の各ブロックに対応するクリップコマンドが追加されたＰＤＬデータである。予測用ＰＤＬデータの生成処理については図１６を用いて後述する。
【００５２】
ステップ１３０３において、ＣＰＵ２０１は、生成した予測用ＰＤＬデータからディスプレイリストを生成し、当該ディスプレイリストに基づいて、レンダリング処理に要すると見込まれる時間を予測する。具体的には、生成したディスプレイリストに含まれるエッジ数、全エッジを加算したエッジ高、スパン数及びＲＩＰ２１０が１つのピクセルデータの生成に掛かる処理時間を基に、ブロック分割レンダリング処理の予測時間（以下、レンダリング予測時間）を算出する。レンダリング予測時間の算出が終わると、生成したディスプレイリストはＲＡＭ２０２やＨＤＤ２０４に格納することなく破棄される。
【００５３】
図１５は、図１４の予測用ＰＤＬデータをもとに生成したディスプレイリストを示している。図６で示す３種類のオブジェクトに加え、挿入された２４個のクリップコマンドに対応する矩形オブジェクトを構成する直線の開始座標、終了座標、傾きの情報が、エッジデータとして格納されている。このように、図１４に示す予測用ＰＤＬデータをもとに生成したディスプレイリストは、元のディスプレイリスト（図６を参照）が３個の描画コマンドを有していたのに対し、２７個の描画コマンドを有することになる。そして、元のディスプレイリストでは９個（１つのオブジェクト当たり３個×３）であった全エッジ数は、図１５のディスプレイリストでは８１個（３個×２７）に増える。これにより全てのエッジの高さを加算した全エッジ高は、元のディスプレイリストにおける２０６８０（7040*2+1000*2+2300*2）から、矩形オブジェクト分の５６３２０（1240*2*20+840*2*4）だけ増えて７７０００になる。さらに図示していないが、ブロック分割によって、ページ内の全スパン数も１１から４８に増えることになる。例えば、図１５において１行目の４つのブロックについては、ブロック分割後は、図１１（ａ）、（ｂ）で示したようにスパン数は１４であるが、ブロック分割を考慮しないとスパン数は７と計上される。スパン内のフィル（塗り情報）は変化しないため、ＲＩＰ２１０が生成するピクセルデータ（例えばＣＭＹＫの場合、１ピクセルデータは３２ビット）数は、全エッジを加算したエッジ高とスパン数から算出できる。そして、算出したピクセルデータ数にＲＩＰ２１０が１つのピクセルデータの生成にかかる処理時間を乗算することで、レンダリング予測時間を算出できる。
【００５４】
ステップ１３０４において、ＣＰＵ２０１は、受信した印刷ジョブに含まれる全ページ分のＰＤＬデータに対してレンダリング予測時間の算出が完了したかどうかを判定する。レンダリング予測時間を未算出のページがある場合はステップ１３０１に戻って、次のページを対象に処理を続行する。一方、受信した印刷ジョブに含まれる全ページ分のＰＤＬデータに対してレンダリング予測時間の算出が完了していれば、ステップ１３０５に進む。
【００５５】
ステップ１３０５において、ＣＰＵ２０１は、全ページ分のＰＤＬデータについて算出されたレンダリング予測時間に、印刷用紙の給紙から排紙までの時間を加算した値を、印刷所要時間として留め置きされた印刷ジョブと関連付けてＲＡＭ２０２やＨＤＤ２０４に保存する。
【００５６】
このように、プリンタ１２０は、ＰＣ１１０から印刷ジョブを受信する度に、受信した印刷ジョブについて印刷所要時間を算出した上で、装置内に印刷ジョブを留め置く。そして、留め置きされた印刷ジョブについてユーザから印刷指示を受けるときに、印刷ジョブと関連付けて保存された値が、印刷設定情報とともに当該印刷ジョブの出力に要する所要時間として表示される（前述の図４を参照）。
【００５７】
次に、上述のステップ１３０２に係る予測用ＰＤＬデータの生成処理について詳しく説明する。図１６は、予測用ＰＤＬデータ生成処理の詳細を示すフローチャートである。
【００５８】
ステップ１６０１において、ＣＰＵ２０１は、ブロック分割レンダリング処理において用いるブロックのサイズ（高さと幅）の情報を取得する。このブロックサイズの情報は、ＲＯＭ２０３やＨＤＤ２０４にてあらかじめ保存される。前述の図１４のようにブロック分割する場合は、ブロックサイズ情報として幅・高さ共に1240pixelが取得されることとなる。なお、ページ終端に位置するブロックのサイズは、ページサイズを超えないよう、他のブロックとは異なるサイズとなる場合がある。例えば、図１４の例では、ｙ軸方向ページ終端に位置するブロックの高さは840pixcelとなっている。
【００５９】
ステップ１６０２において、ＣＰＵ２０１は、処理対象ページのＰＤＬデータについて、データ解像度、用紙サイズ及びページ方向の情報を取得する。図５に示したＰＤＬデータの場合、「解像度：600dpi」、「用紙サイズ：A4」、「ページ方向：Portrait」が取得されることになる。ＰＤＬデータに解像度及び用紙サイズの情報が含まれていない場合は、予め設定した既定値を取得するなどすればよい。
【００６０】
ステップ１６０３において、ＣＰＵ２０１は、ステップ６０２で取得したデータ解像度、用紙サイズ及びページ方向の情報から、生成するビットマップデータの幅と高さを決定する。前述のとおり、用紙サイズ（Media）がA4、ページ方向（Orientation）がPortraitなので、生成するビットマップデータの幅と高さ（Area Size）は4960pixel×7040pixelとなる。このとき、ビットマップデータの高さを示す値がページ高さ方向の終端位置を特定するＹ座標（以下、ページ終端Ｙ座標）として、幅を示す値がページ幅方向の終端位置を特定するＸ座標（以下、ページ終端Ｘ座標）として得られることになる。
【００６１】
ステップ１６０４において、ＣＰＵ２０１は、ステップ１６０１で取得したブロックサイズに応じて、処理対象ページのＰＤＬデータについて、処理対象とする注目ブロックの高さ方向における開始位置と終了位置を特定する位置座標（以下、それぞれ「開始Ｙ座標」、「終了Ｙ座標」と呼ぶ。）を導出する。例えば図１４で示される１行目のブロックであれば、開始Ｙ座標は1pixel、終了Ｙ座標は、1240pixelとなる。また、２行目以降のブロックについての開始Ｙ座標および終了Ｙ座標のそれぞれは、現在の開始Ｙ座標および終了Ｙ座標のそれぞれにブロック高さを加えることで求まる。例えば図１４で示される２行目のブロックであれば、開始Ｙ座標は1241pixel、終了Ｙ座標は、2480pixelとなる。
【００６２】
ステップ１６０５において、ＣＰＵ２０１は、ステップ１６０４で求めた開始Ｙ座標が、ステップ１６０３で得られたページ終端Ｙ座標を超えているかどうかを判定する。注目ブロックの開始Ｙ座標が、ページ終端Ｙ座標を超えている場合は、ステップ１６０９に進む。一方、注目ブロックの開始Ｙ座標が、ページ終端Ｙ座標を超えていない場合は、ステップ１６０６に進む。
【００６３】
ステップ１６０６において、ＣＰＵ２０１は、ステップ１６０１で取得したブロックサイズに応じて、処理対象ページのＰＤＬデータについて、注目ブロックの幅方向における開始位置と終了位置を特定する位置座標（以下、それぞれ「開始Ｘ座標」、「終了Ｘ座標」と呼ぶ。）を導出する。例えば図１４で示される１列目のブロックであれば、開始Ｘ座標は1pixel、終了Ｘ座標は、1240pixelとなる。また、２列目以降のブロックについての開始Ｘ座標および終了Ｘ座標のそれぞれは、現在の開始Ｘ座標および終了Ｘ座標のそれぞれにブロック幅を加えることで求まる。例えば図１４で示される２列目のブロックであれば、開始Ｘ座標は1241pixel、終了Ｘ座標は、2480pixelとなる。
【００６４】
ステップ１６０７において、ＣＰＵ２０１は、ステップ１６０６で求めた開始Ｘ座標がステップ１６０４で得られたページ終端Ｘ座標を超えているかどうかを判定する。注目ブロックの開始-Ｘ座標がページ終端Ｘ座標を超えている場合はステップ１６０４に戻り、次の注目ブロックの開始Ｙ座標と終了Ｙ座標を決定して処理を続行する。一方、注目ブロックの開始Ｘ座標が、ページ終端Ｘ座標を超えていない場合は、ステップ１６０８に進む。
【００６５】
ステップ１６０８において、ＣＰＵ２０１は、ステップ１６０４で求めた注目ブロックの開始座標から終了座標までに内接するような矩形オブジェクトのクリップコマンドを生成する。この矩形オブジェクトのクリップコマンドは、注目ブロックに含まれる１つ以上のオブジェクトの、注目ブロック内の部分をくり抜く（抜き出す）ためのコマンドである。そしてＣＰＵ２０１は、生成された矩形オブジェクトのクリップコマンドを、ＲＡＭ２０２に展開する。そして、処理はステップ１６０６に戻り、ＣＰＵ２０１は、同じＹ座標上で次の注目ブロック（右隣のブロック）を決定して処理を続行する。クリップコマンドをＲＡＭ２０２に展開するこの処理は、補正情報を含むＰＤＬデータを生成する処理中の一処理であり、後述のステップ１６０９の処理を経て得られる、ＲＡＭ２０２上の最終的なコマンド群が予測用のＰＤＬデータとなる。
【００６６】
ステップ１６０９において、ＣＰＵ２０１は、処理対象ページのＰＤＬデータに当初から含まれるオブジェクト（当初オブジェクト）の描画コマンドを、上述の矩形オブジェクトのクリップコマンドに続くようにＲＡＭ２０２に展開する。すなわち、ＣＰＵ２０１は、処理対象ページのＰＤＬデータ中の各コマンドを前述のステップＳ１６０８で得られたクリップコマンドの後ろにコピーする。矩形オブジェクトのクリップコマンドを先に展開するのは、これを当初オブジェクトの後にすると、ブロック内に描画される当初オブジェクトをクリップできないためである。このようにステップ１６０９を完了することで、入力された処理対象ページのＰＤＬデータ（入力ＰＤＬデータ）に補正情報としてのクリップコマンドが付加された予測用のＰＤＬデータがＲＡＭ２０２上に生成される。
【００６７】
図１４は、このようにして生成された予測用ＰＤＬデータの一例を示す図であり、元となった処理対象ページのＰＤＬデータ（図５のＰＤＬデータ）に、計２４個のクリップコマンドが追加された予測用ＰＤＬデータとなっている。２４個のクリップコマンドの内訳は、1240pixel×1240pixelの矩形オブジェクトでクリップするためのクリップコマンド１４０１が２０個、1240pixel×840pixelの矩形オブジェクトでクリップするためのクリップコマンド１４０２が４個である。
【００６８】
なお、本実施例では、予測用ＰＤＬデータの生成の際に挿入する矩形オブジェクトの座標を導出しているが、用紙サイズ、解像度及びページ方向の組み合わせに応じた挿入する矩形オブジェクトのクリップコマンドを予め求めておいてもよい。そして、この情報をＨＤＤ２０４に保持しておいて、取得するような構成でもよい。
【００６９】
また、本実施例では、ブロック分割レンダリング時のブロックに対応する矩形オブジェクトのクリップコマンドを追加することで、予測用ＰＤＬデータを生成しているがこれに限定されない。分割時の各ブロックにおいて描画されることになるオブジェクトの該当部分を特定可能な補正情報が付加されたＰＤＬデータであればよく、クリップコマンドの追加は必須ではない。
【００７０】
最後に、本実施例の予測用ＰＤＬデータを用いた予測時間の精度について説明する。
【００７１】
例えば、図９（ａ）における領域１は、図１１（ａ）における領域４、領域７、領域１０、領域１３に分割される。スパン内のフィル（塗り情報）は変化しないため、図９（ａ）の領域１で生成するピクセルデータは、4960pixcel分同色のランレングス符号化データとなる。これに対し、図１１（ａ）の場合は、1240pixcel毎のランレングス符号化データとなる。１色分のランレングス符号化データ（繰り返し情報）に64ビット（8Byte）必要とすると、図９（ａ）の例ではブロック分割の有無で生成するランレングス符号化データは88Byteから384Byteに増加する。画像バス２０９の転送速度を250Byte/μsecとするとピクセルデータの出力に0.352μsec要したデータが、1.536μsec要するようになる。
【００７２】
本実施例を適用し、予測用ＰＤＬデータにクリップコマンドを挿入することで、分割されるスパン情報が分かるようになり、従来の予測処理時に発生する差分（1.536μsec−0.352μsec）1.184μsecの差分を解消できることになる。
【００７３】
以上のとおり本実施例によれば、ブロック分割レンダリングの処理負荷を加味した予測用ＰＤＬデータを生成する。このとき生成する予測用ＰＤＬデータは、描画コマンドを分割することがないため、入力されたＰＤＬデータに含まれる描画オブジェクトの傾向に依らず、予測用ＰＤＬデータを生成できる。
【００７４】
これにより、ブロック分割レンダリング処理に要する時間を予測する際のメモリ使用量の増加を抑制しつつ、ブロック分割処理を加味したレンダリング予測時間を算出することができる。
【００７５】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2017024321.tif 000003
【図２】
2017024321.tif 000004
【図３】
2017024321.tif 000005
【図４】
2017024321.tif 000006
【図５】
2017024321.tif 000007
【図６】
2017024321.tif 000008
【図７】
2017024321.tif 000009
【図８】
2017024321.tif 000010
【図９】
2017024321.tif 000011
【図１０】
2017024321.tif 000012
【図１１】
2017024321.tif 000013
【図１２】
2017024321.tif 000014
【図１３】
2017024321.tif 000015
【図１４】
2017024321.tif 000016
【図１５】
2017024321.tif 000017
【図１６】
2017024321.tif 000018