(57)【要約】【課題】ディスプレイリストのレンダリング処理において、ディスプレイリストに含まれるオブジェクト数が多い場合、レンダリング処理に時間がかかり処理時間を保証する場合、保証時間内に終わらないという課題がある。更に、レンダリングを保証時間内で終了させた場合、ユーザーの意図しない描画結果が出力されるという課題がある。【解決手段】レンダリング処理の入力されたディスプレイリストの処理予測時間とあらかじめ設定されているレンダリング処理保証時間を確認する。処理予測時間が保証時間を超える場合、ディスプレイリストに含まれるエッジをレベル順にレイヤー分割しレイヤー毎に優先する処理を設定する。ディスプレイリストを解釈する際、処理中のレイヤーに含まれるエッジのみをロードし設定した処理方法でレンダリングを行う。分割されたレイヤーは前面から背面に向けて処理されていき、生成されたページは前面から順番に重ね合わせ処理され最終的なページが生成される。【選択図】図６
2014194635.tif 000002
【特許請求の範囲】
【請求項１】
中間データに含まれる複数のオブジェクトのデータのレンダリング処理を行う画像処理方法であって、
前記複数のオブジェクトのレンダリング処理が所定時間内に終了するか判定するステップと、
前記複数のオブジェクトのデータのレンダリング処理が所定時間内に終了しないと判定された場合、前記中間データに含まれる複数のオブジェクトのデータを複数のグループに分割する分割ステップと、
前記分割されたグループごとにレンダリング処理方式を設定する設定ステップと、
グループごとに設定されたレンダリング処理方式に従って、各グループに含まれるオブジェクトのデータのレンダリング処理をグループごとに行って各グループのビットマップデータを生成する生成ステップと、
前記各グループのビットマップデータを合成するステップと
を有することを特徴とする画像処理方法。
【請求項２】
前記分割ステップでは、前記複数のオブジェクトのデータを、オブジェクトの重なり順に複数のグループに分割し、
前記設定ステップでは、重なり順が下位のグループから順次着目して着目グループについては、レンダリング処理方式を通常の処理方式から簡易な処理方式に変更してレンダリング処理を行った場合の処理時間を予想し、予想処理時間が前記所定時間を超えない場合には前記生成ステップによりビットマップデータを生成し、前記予想処理時間が前記所定時間を超える場合には、一段階上位のグループを着目グループとして処理時間を予想することを特徴とする請求項１に記載の画像処理方法。
【請求項３】
前記分割ステップでは、文字オブジェクトをひとつのグループとし、
前記設定ステップでは、前記文字オブジェクトのグループについては、その重なり順に関わらず通常の処理方式を設定し、それ以外のオブジェクトのグループについては簡易な処理方式を設定することを特徴とする請求項１に記載の画像処理方法。
【請求項４】
前記設定ステップでは、オブジェクトを前面のオブジェクトと背面のオブジェクトとを区別できる場合、前記前面のオブジェクトのグループについては通常の処理方式を設定し、前記背面のオブジェクトのグループについては簡易な処理方式を設定することを特徴とする請求項１に記載の画像処理方法。
【請求項５】
前記生成ステップでは、前記レンダリング処理方式が前記簡易な処理方式の場合、図形のオブジェクトに対しては、簡易なＸ座標算出処理、ピクセルプレースメント処理のスキップ、所定の長さ以下のセグメント切り替え処理のスキップ、所定の長さ以下のエッジのスキップ、Ｎ個に１個エッジのスキップの少なくともいずれかを行い、画像のオブジェクトに対しては、解像度の低減、Ｎ画素以下の画像のスキップ、Ｎピクセルおきの処理の実行の少なくともいずれかを行い、オブジェクトの合成においては、上書き、Ｎピクセルおきの処理、透過処理を論理演算に置き換えての処理の少なくともいずれかを行うことを特徴とする請求項２乃至４のいずれか一項に記載の画像処理方法。
【請求項６】
前記生成ステップでは、オブジェクトのエッジの座標算出を行う際、簡易な処理方式では、左エッジは算出されたＸ座標値の小数部を切り捨て、右エッジは切り上げでＸ座標を決定することを特徴とする請求項２乃至５のいずれか一項に記載の画像処理方法。
【請求項７】
前記生成ステップではさらに、各グループのビットマップデータを生成しつつ処理時間を予想し、前記予想処理時間が前記所定時間を超える場合には、未処理かつ通常の処理方式が設定されている最も下位のグループの処理方式を、前記簡易な処理方式として当該グループのビットマップデータを生成することを特徴とする請求項２乃至６のいずれか一項に記載の画像処理方法。
【請求項８】
中間データに含まれる複数のオブジェクトのデータのレンダリング処理を行う画像処理装置であって、
前記複数のオブジェクトのレンダリング処理が所定時間内に終了するか判定する手段と、
前記複数のオブジェクトのデータのレンダリング処理が所定時間内に終了しないと判定された場合、前記中間データに含まれる複数のオブジェクトのデータを複数のグループに分割する手段と、
前記分割されたグループごとにレンダリング処理方式を設定する手段と、
グループごとに設定されたレンダリング処理方式に従って、前記グループに含まれるオブジェクトのデータのレンダリング処理をグループごとに行って各グループのビットマップデータを生成する手段と、
前記各グループのビットマップデータを合成する手段と
を有することを特徴とする画像処理装置。
【請求項９】
請求項１乃至７のいずれか一項に記載した画像処理方法をコンピュータにより実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置及び画像形成方法に関し、特にレンダリングに要する時間を一定の時間に収めた画像形成装置及び画像形成方法に関するものである。
【背景技術】
【０００２】
印刷装置には、いわゆるページ記述言語で記述された印刷データをレンダリング処理によって画素により構成された画像データに変換し、それを印刷するものがある。近年アプリケーションの描画能力向上に伴い、エッジ数が多いデータが増えてきており、レンダリングが長時間にわたるデータもある。印刷プロセスの効率化のために、レンダリングを先行させつつ印刷プロセスを並列に進行させることが行われるが、レンダリング処理に長時間を要するために印刷プロセスに追いつかれると、その時点で印刷プロセスを中断しなければならない。しかし電子写真方式のように画像形成の途中で中断が困難な方式では、レンダリング途中の画像が印刷される可能性がある。また中断できたとしても中断箇所で画像が劣化する可能性もある。そこでレンダリング処理の完了時刻を予測し、レンダリングが印刷プロセスに間に合わない場合、に完了しない場合、レンダリングが間に合わない画像の印刷プロセスの開始前に、ページ間など中断可能な箇所で印刷エンジンを停止して印刷プロセスを一時的に中断するいわゆるサイクルダウンを起こさせる方法が提案されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１２６０９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載の技術では、レンダリング処理の予測完了時間に応じて印刷エンジンのサイクルダウンをあらかじめ起こさせることにより、レンダリングに長時間を要する印刷データであっても、レンダリングが間に合わないことに起因する印刷の失敗を回避することが出来る。しかし、レンダリング処理に要する時間については変わることはない。
【０００５】
本発明は上記従来例に鑑みてなされたもので、レンダリング処理の所要時間を短縮することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本発明は以下の構成を有する。
【０００７】
すなわち、中間データに含まれる複数のオブジェクトのデータのレンダリング処理を行う画像処理方法であって、
前記複数のオブジェクトのレンダリング処理が所定時間内に終了するか判定するステップと、
前記複数のオブジェクトのデータのレンダリング処理が所定時間内に終了しないと判定された場合、前記中間データに含まれる複数のオブジェクトのデータを複数のグループに分割する分割ステップと、
前記分割されたグループごとにレンダリング処理方式を設定する設定ステップと、
グループごとに設定されたレンダリング処理方式に従って、前記グループに含まれるオブジェクトのデータのレンダリング処理をグループごとに行って各グループのビットマップデータを生成する生成ステップと、
前記各グループのビットマップデータを合成するステップとを有する。
【発明の効果】
【０００８】
本発明によれば、生成される画像品質の劣化を抑制しつつ、レンダリング処理の所要時間を短縮することができ、例えば所要時間を上限値に収めることが可能になる。
【図面の簡単な説明】
【０００９】
【図１】実施形態における各機器のコントロールユニットの構成例を示すブロック図
【図２】実施形態におけるシステム構成の一例を示す図
【図３】実施形態におけるディスプレイリストのレンダリング処理工程を示す図
【図４】実施形態におけるレンダリングのパイプライン処理の一例を示す図
【図５】実施形態におけるエッジのレイヤー分割処理を示す図
【図６】実施形態におけるエッジのレイヤー分割による処理時間保証処理のフローを示す図
【図７】実施形態におけるリアルタイムな処理速度の最適度合い変更を示す図
【図８】実施形態におけるリアルタイムな処理速度の最適度合い変更処理のフローを示す図
【図９】実施形態におけるレイヤーに関係ない特定オブジェクトの優先処理設定について説明する図
【図１０】実施形態におけるレイヤーに関係ない文字オブジェクトの優先処理設定のフローを示す図
【図１１】速度優先時のグラフィックスオブジェクトのエッジ処理の一例を示す図
【図１２】本実施形態における速度優先時のグラフィックスオブジェクトのエッジ処理フローを示す図
【図１３】実施形態における背景が特定出来るデータの優先処理設定方法を示す図
【図１４】実施形態における背景が特定出来るデータの優先処理設定フローを示す図
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
［実施形態１］
＜システム構成＞
図１は本発明の実施形態に係る画像処理システムの構成を示すブロック図である。このシステムではホストコンピュータ１３０及び２台の画像処理装置として例えばディジタル複合機（ＭＦＰ）１００，１１０がＬＡＮ１４０に接続されているが、本実施形態における画像処理システムにおいては、これらの接続数に限られることはない。また、本実施形態では接続方法としてＬＡＮを適用しているが、これに限られることはない。例えば、ＷＡＮ（公衆回線）などの任意のネットワーク、ＵＳＢなどのシリアル伝送方式、セントロニクスやＳＣＳＩなどのパラレル伝送方式なども適用可能である。
【００１１】
ホストコンピュータ（以下、ＰＣと称する）１３０はパーソナルコンピュータの機能を有している。このＰＣ１３０はＬＡＮ１４０やＷＡＮを介してＦＴＰやＳＭＢプロトコルを用いファイルを送受信したり電子メールを送受信したりすることができる。さらには、ＰＣ１３０はＭＦＰ１００、１１０に対して、プリンタドライバを介した印刷命令を行うことも可能となっている。
【００１２】
ＭＦＰ１００、１１０は同じ構成で、スキャナ部とプリンタ部とを有する。以下では、説明の簡単のために、ＭＦＰ１００、１１０のうちのＭＦＰ１１０に注目して、その構成を詳細に説明する。ＭＦＰ１１０は、画像入力デバイスであるスキャナ部２０１、画像出力デバイスであるプリンタ部２０２、ＭＦＰ１１０全体の動作制御を司るコントローラ２００、ユーザインターフェース（ＵＩ）である操作部２１０とを有する。
【００１３】
＜コントローラユニットの構成＞
図２は、本実施形態におけるＭＦＰ１１０のコントロールユニット（コントローラ）２００の一構成例を示すブロック図である。図２において、コントロールユニット２００は、画像入力デバイスであるスキャナ２０１や画像出力デバイスであるプリンタエンジン２０２と接続し、画像データの読み取りやプリント出力のための制御を行う。また、コントロールユニット２００は、ＬＡＮ  Ｎ１や公衆回線２０４と接続することで、画像情報やデバイス情報をＬＡＮ  Ｎ１経由で入出力するための制御を行う。プリンタエンジン（プリンタ部）２０２はデバイスＩ／Ｆ２１７と結合されるプリンタエンジンで、コントロールユニット２００で生成された描画データを紙に出力する処理を行う。
【００１４】
ＲＩＰ２１６内のＣＰＵはＭＦＰ全体を制御するための中央処理装置である。ＲＡＭ２０６は、ＲＩＰ２１６内のＣＰＵが動作するためのシステムワークメモリであり、入力された画像データを一時記憶するための画像メモリでもある。さらに、ＲＯＭ２０７はブートＲＯＭであり、システムのブートプログラムが格納されている。ＨＤＤ２０８はハードディスクドライブであり、各種処理のためのシステムソフトウェア及び入力された画像データを等格納する。操作部Ｉ／Ｆ２０９は、画像データ等を表示可能な表示画面を有する操作部２１０に対するインタフェース部であり、操作部２１０に対して操作画面データを出力する。また、操作部Ｉ／Ｆ２０９は、操作部２１０から操作者が入力した情報をＲＩＰ２１６内のＣＰＵに伝える役割をする。ネットワークインタフェース２１１は、例えばＬＡＮカード等で実現され、ＬＡＮ  Ｎ１に接続して外部装置との間で情報の入出力を行う。さらにまた、モデム２１２は公衆回線２０４に接続し、外部装置との間で情報の入出力を行う。以上のユニットがシステムバス２１３上に配置されている。
【００１５】
イメージバスＩ／Ｆ２１４は、システムバス２１３と画像データを高速で転送する画像バス２１５とを接続するためのインタフェースであり、データ構造を変換するバスブリッジである。画像バス２１５上には、ラスタイメージプロセッサ２１６、デバイスＩ／Ｆ２１７、スキャナ画像処理部２１８、プリンタ画像処理部２１９、画像編集用画像処理部２２０、カラーマネージメントモジュール（ＣＭＭ）２３０が接続される。
【００１６】
ラスタイメージプロセッサ（ＲＩＰ）２１６は、ページ記述言語（ＰＤＬデータ）コードや後述するベクトルデータを含む印刷データに対してレンダリング処理を施し、画素で構成されたイメージ（画像データ）に展開する。デバイスＩ／Ｆ２１７は、スキャナ２０１やプリンタエンジン２０２とコントロールユニット２００とを接続し、画像データの同期系／非同期系の変換を行う。なおベクトルデータには、テキストや図形、ビットマップを含み、それぞれの輪郭や位置、レベルなどが指定される。
【００１７】
また、スキャナ画像処理部２１８は、スキャナ２０１から入力した画像データに対して、補正、加工、編集等の各種処理を行う。プリンタ画像処理部２１９は、プリント出力する画像データに対して、プリンタエンジンに応じた補正、解像度変換等の処理を行う。画像編集用画像処理部２２０は、画像データの回転や、画像データの圧縮伸長処理等の各種画像処理を行う。ＣＭＭ２３０は、画像データに対して、プロファイルやキャリブレーションデータに基づいた、色変換処理（色空間変換処理ともいう）を施す専用ハードウェアモジュールである。プロファイルとは、機器に依存した色空間で表現したカラー画像データを機器に依存しない色空間（例えばＬａｂなど）に変換するための関数のような情報である。キャリブレーションデータとは、カラー複合機３におけるスキャナ２０１やプリンタエンジン２０２の色再現特性を修正するためのデータである。
【００１８】
＜本実施形態における用語の定義＞
ここで本実施形態における用語の定義について説明する。
エッジとは、ページ内に描画するオブジェクトとオブジェクト、またはオブジェクトと背景の境目を指す。ただし、本実施形態ではオブジェクトはすべてベクトルオブジェクトであるものとし、したがってエッジはオブジェクトの輪郭を表すベクトルそのものということができる。したがって、本実施形態では、エッジとオブジェクトのベクトルとを区別せずにエッジと称することもある。またエッジはオブジェクトとオブジェクト、またはオブジェクトと背景の境目であるから、ビットマップオブジェクトについてもエッジはそのビットマップオブジェクトの輪郭であり、その内部にはエッジは含まれない。
スパンとは、エッジ間で囲まれる閉領域、特にスキャンラインの閉領域を指す。
レベルとは、ページ内に描画するオブジェクト間の上下関係、すなわち重なり順を示すもので、各オブジェクトには必ずレベル番号が割り振られている。またオブジェクトの輪郭すなわちエッジも、当該オブジェクトに応じたレベルに属することになる。
フィルとはスパンで囲まれる塗りのことで、ビットマップ画像やシェーディングのように１ピクセル毎に異なる色値を持つフィルやベタ塗りのようにスパン中で色値の変化がないフィルがある。
スキャンラインとは、主走査方向の画素（ピクセル）の並びであり、スキャンラインの高さは１ピクセルとなっている。また複数のスキャンラインを束ねたものをバンドと呼ぶ。
レイヤーとは、複数のエッジをエッジの属するレベル昇順にグループ化した１つのグループのことをいう。例えば、画像内にレベル番号が１から３０００までのレベルに属するエッジが１つずつ存在し、最低レベルのレベル１から１０００、レベル１００１から２０００、レベル２００１から最高レベルのレベル３０００の３レイヤーを定義したとする。最背面のレイヤーにはレベル番号が１から１０００までのエッジが含まれる。次に一つ上位面のレイヤーにはレベル番号が１００１から２０００までのエッジが含まれる。最上位面のレイヤーにはレベル番号が２００１から３０００までのエッジが含まれる。
【００１９】
＜ディスプレイリストのレンダリング処理方法について＞
図３はスキャンラインレンダリングと呼ばれる本実施形態のベースとなるレンダリング処理方法について説明した図である。画像形成装置であるＭＦＰ１１０には、ＰＣ１３０からページ記述言語で記述された印刷データが送信される。ＭＦＰ１１０はページ記述言語で記述された印刷データを解釈して印刷ジョブを実行する。印刷データはベクトルオブジェクトによって構成され、いったん中間形式の中間データに変換されてからレンダリングされる。この中間形式がディスプレイリストであり、ディスプレイリストには、たとえばページ単位およびバンド単位のベクトルオブジェクトが、それぞれの位置やレベルを示す情報とともに含まれている。ＲＩＰ２１６は、入力されたオブジェクトを、その位置やレベルに応じたスキャンラインレンダリングを行ってラスタデータを生成する。図３に示すように、レンダリング処理は大きく分けて、エッジ処理３０１、レベル処理３０２、フィル処理３０３、コンポジット処理３０４の４つに分かれており以下に各処理の詳細を記載する。
【００２０】
エッジ処理３０１は大きく、エッジロード、Ｘ座標算出、エッジソート、エッジトラッキング、エッジ削除の５つの処理に分けられる。エッジロードとはディスプレイリスト（ＤＬ）からエッジ情報をメモリ上へロードする処理のことをいう。エッジ情報はベクトルオブジェクトの輪郭を示すベクトル情報である。次にＸ座標算出処理を行ってロードされたエッジ情報に基づいて、スキャンライン毎にエッジの傾きや塗りルールを元に、当該スキャンラインにおけるエッジのＸ座標を算出する。処理中のスキャンラインに現れるエッジ情報はＡｃｔｉｖｅＥｄｇｅＬｉｓｔ（ＡＥＬ）と呼ばれるリンクリストで主走査方向にＸ座標昇順でソートされている。エッジ同士がクロスした場合や新たにエッジが出現／消滅した場合、ＡＥＬのリンク情報をソートし直して更新する必要がありこれをエッジソートと呼んでいる。エッジソートが終わったＡＥＬはレベル処理部にＸ座標昇順でエッジおよびそのレベル情報を渡す処理を行っており、これをエッジトラッキングと呼んでいる。最後に描画が終了したエッジはエッジ削除処理により削除される。
【００２１】
次にレベル処理３０２は大きくレベル追加、レベル削除、レベルソートの３つの処理に分けられる。レベル追加とは、エッジ処理から送られてきたエッジ情報に含まれたエッジの向きやクリップ情報を基に、当該エッジ情報が描画対象のエッジ情報であるか否かを判定し、描画対象だった場合ＡｃｔｉｖｅＬｅｖｅｌＬｉｓｔ(ＡＬＬ)と呼ばれるリンクリストに追加する処理である。また、レベル削除処理は、レベル追加処理と逆で、エッジの向きやクリップ情報を基にそれまで描画対象だったエッジが描画対象でなくなった場合ＡＬＬから削除する処理のことを言う。ＡＬＬはレベル番号昇順に常にソートされており、レベルの追加や削除があった場合、レベルソートと呼ばれるＡＬＬのソート処理が行われる。これらの処理を行ったレベル情報はスパン単位でフィル処理に渡している。
【００２２】
次にフィル処理３０３は大きく画像拡縮、画像回転、ピクセル生成という３つの処理に分けられる。ベクトルデータに含まれたビットマップ画像には、そのエッジの情報に加えて、拡大縮小や回転などのための指定をふくむことができる。画像拡縮はディスプレイリストに含まれているビットマップ画像に拡大率が指定されていた場合、指定に応じてフィルを生成する処理である。画像回転はディスプレイリストに含まれているビットマップ画像に回転情報が指定されていた場合、指定に応じてフィルを生成する処理である。ピクセル生成はディスプレイリストにある色値ともう一つのある色値と変化情報とが指定されていた場合、指定に応じてフィルを生成する処理である。
【００２３】
最後に、コンポジット処理３０４では、レベル処理で確定したレベルの上下関係とフィル処理で生成したピクセルとを基に、ディスプレイリストに指定されている重ね合わせ処理を行ってビットマップデータ（ＢＭＰ）を生成して出力する。
【００２４】
上記で記載した各処理は、図４に示したようにスパンを単位としてパイプラインで並列に実行される。まず１スキャンライン目の１番目のスパン４１１がエッジ処理３０１で処理され、ついでレベル処理３０２に渡される。同時に２スキャンライン目の１番目のスパン４２１がエッジ処理３０１に渡されて処理され、ついでレベル処理３０２に渡されるのと同じ時にスパン４１１がレベル処理３０２からフィル処理３０３に渡される。同時にスパン４２２がエッジ処理４０１に渡され、エッジ処理が開始される。同様にして各処理部で処理されているスパンの処理結果が同期して次段の処理部に転送され、併せて次のスパン例えばスパン４２３がエッジ処理部３０１に入力される。以下同様に図で表すように各スパンが各処理部で並列に処理される。  ＜エッジのレイヤー分割による処理時間保証＞
次に、図５を使って本実施形態におけるエッジのレイヤー分割による処理時間保証について説明する。ここでは、丸、三角、四角がそれぞれ１０００個ずつ同一箇所に重なっている場合を例にとり説明する。
【００２５】
入力されたディスプレイリストに含まれるオブジェクトはレベル番号１から１０００が振られた四角形１０００個、レベル番号１００１から２０００が振られた三角形１０００個、レベル番号２００１から３０００が振られた丸１０００個である。
【００２６】
まず、入力されたディスプレイリストに含まれるエッジとオブジェクトのレベル番号に基づいて、各々のエッジがどのレイヤーに属するべきか判定する。この例では、レベル番号１から１０００の四角計オブジェクトのエッジが最下位レイヤーに、レベル番号１００１から２０００の三角形オブジェクトのエッジが中間レイヤーに、レベル番号２００１から３０００の丸オブジェクトのエッジが最上位レイヤーに属すると判定する。またその際、各レイヤーに属するエッジを処理するにあたり、当該レイヤーが画質優先なのか処理速度優先なのか等の優先すべき項目を決めておく。本実施形態では、デフォルトの設定すなわち通常の処理方式は画質優先とし、画質優先の設定では、設定されてレイヤーのオブジェクトは記述されたとおりに何も省略されることなくレンダリングされる。レンダリングが所定の時間（たとえば保証した処理時間）に間に合わない場合、描画が下に来る下位レイヤーから順次速度優先、すなわち簡易な処理方式を設定する。従ってレンダリング所要時間に余裕があり、所定の時間内にレンダリングが完了するのであれば、全てのレイヤーで画質優先としてもよいし、すべてのレイヤーを速度優先としなければならないこともあり得る。
【００２７】
各レイヤーについては、図３、図４を参照した前述のセクション＜ディスプレイリストのレンダリング処理方法について＞に記載したレンダリング処理方法を適用するが、この処理方法はレイヤーごとに適用される。すなわち、本実施形態では、ディスプレイリストを解釈する際、レイヤーごとにオブジェクトのエッジ情報に着目し、着目した処理対象のレイヤーに属するエッジ情報のみをロードして図３に示したパイプラインでレンダリング処理を行う。こうすることで、着目したレイヤーに属するエッジ、すなわち着目したレイヤーに属するレベルのオブジェクトに関しては共通の優先設定でレンダリングできる。優先設定は、本実施形態では速度又は画質のいずれかを優先するよう設定するもので、設定内容に応じたレンダリング処理方式によってレンダリング処理が実行される。また、各レイヤー内では当該レイヤーに属するエッジについてレベル処理が行われるので、ディスプレイリストに記載された順番に処理を進めて行けばよい。
【００２８】
まず最上位レイヤーに属するエッジ情報のみをロードしてレンダリング処理を行う。次に中間レイヤーも最上位レイヤーと同様、中間レイヤーに属するエッジのみをロードしてレンダリング処理を行う。その後、最上位レイヤーのレンダリング後画像と中間レイヤーのレンダリング後画像の重ね合わせを行い、最上位レイヤーと中間レイヤーに属する画像が生成される。以下同様に最下位レイヤーまでレンダリングと重ね合わせを繰り返す。ここで、本実施形態では、各レイヤーの処理について、画質優先か速度優先かいずれに設定されているかが相違することがある。
【００２９】
＜エッジのレイヤー分割による処理時間保証フロー＞
次に、図６を使って本実施形態におけるエッジのレイヤー分割による処理時間保証をフローチャートで説明する。この処理は、図１のＲＩＰ２１６内のＲＡＭにロードされ、ＲＩＰ２１６内のＣＰＵ上で動作する。以下の説明におけるＲＩＰ２１６内のＣＰＵとは、パイプラインでレンダリング処理を行うプロセッサではなく、エッジロードや優先設定、レイヤー分割などを行うプロセッサである。処理余力があれば同じプロセッサであってもよいが、この例では別々のものとして説明する。なお図６の手順では入力はディスプレイリストである。
【００３０】
エッジのレイヤー分割処理はＳ６０１で開始される。ＲＩＰ２１６内のＣＰＵはＳ６０３においてレンダリング対象のディスプレイリストとレンダリング処理の保証時間をＳ６０２から受信しＲＩＰ２１６内のＲＡＭに格納する。Ｓ６０４においてＲＩＰ２１６内のＣＰＵは入力されたディスプレイリストの情報からレンダリングに要する処理時間の予測を行う。処理時間の予測は、例えば、優先設定やオブジェクト種類ごとに予め決めておいたオブジェクトの処理所要時間を、レンダリング対象のオブジェクト全体について積算することで行う。またＳ６０４では、通常のレンダリングすなわち全てのレイヤーについて後述する画質優先のレンダリングをした場合の所要時間が予想される。Ｓ６０５においてＲＩＰ２１６内のＣＰＵはＳ６０３で受信したレンダリング処理の保証時間とＳ６０４で算出したレンダリング処理予想時間とを比較して、保証時間内にレンダリングが終了するか判定する。Ｓ６０５において保証時間内にレンダリング処理が終了すると判定された場合、ＲＩＰ２１６内のＣＰＵは図４を参照した前述のセクション＜ディスプレイリストのレンダリング処理方法について＞で記載したレンダリング処理をＳ６１６で行い、Ｓ６１７において処理を終了させる。
【００３１】
一方Ｓ６０５において保証時間内にレンダリング処理が終了出来ないことが予想される場合、Ｓ６０６においてＲＩＰ２１６内のＣＰＵはディスプレイリストに含まれているエッジを、オブジェクトのレベルに関連付けて定義したレイヤーに分類し、レイヤー毎に優先事項を設定する。本実施形態では、優先設定は画質優先と速度優先の二種類であり、初めは最下位のレイヤーについて着目し、着目レイヤー（着目グループ）について速度優先が設定され、その他のレイヤーについて画質優先が設定される。なおレイヤーとレベルとの関連付けは予め行っておいてもよいし、処理対象のディスプレイリストに含まれたオブジェクトのレベルを、所定数のレイヤーに動的に分割して関連付けてもよい。レイヤーは、たとえば上位、中位、下位の３レイヤーとし、各レイヤーに均等の数のレベルが属するようにレイヤーとレベルとを関連付けてもよい。また最下位のレイヤーから順次着目して、着目レイヤー（着目グループ）について、優先設定を画質優先から速度優先に変更する。
【００３２】
Ｓ６０７においてＲＩＰ２１６内のＣＰＵはＳ６０６で設定した優先する処理方法を元にレンダリング時間を予測する。ここでＳ６０４に先行してＳ６０６のレイヤー分割をして、予測をレイヤーごとに行えば、各レイヤーについて画質優先の処理予測時間はＳ６０４で求まっているので、Ｓ６０７においては、優先設定を変更した最下位のレイヤーについてのみ処理時間を予測し、その他のレイヤーについては既に得られている予測処理時間を用いてそれらを合算することで予測処理時間を得ることができる。Ｓ６０８においてＲＩＰ２１６内のＣＰＵはＳ６０２から受信したレンダリング処理の保証時間とＳ６０７で算出したレンダリング処理予想時間とを比較する。Ｓ６０８において保証時間内にレンダリング処理が終了しないことが予想される場合、Ｓ６０６において再度レイヤー毎の優先処理を設定する。ここでは、現在画質優先が設定されているレイヤーのうち最も低いレイヤー、すなわち着目レイヤーより一段階上位のレイヤーの優先設定を速度優先に変更する。そしてＳ６０７で、優先設定を変更したレイヤーについて予測処理時間を求め、その他のレイヤーの予測処理時間とあわせてページ全体の予測処理時間を求める。Ｓ６０６からＳ６０８のループを、最上位のレイヤーの優先設定が速度優先になる、すなわち全レイヤーの優先設定が速度優先になるか、あるいは予測処理時間が保証処理時間より短くなるまで繰り返す。なお全レイヤーを速度優先としても予測処理時間が保証処理時間を超える場合には、図６には現れていないが、例えばいったんレンダリング処理を中断し、予測処理時間が保証処理時間を超える旨をＣＰＵ２０５に通知して警告表示を行い、指示に応じて印刷を中止し、或いは続行する。その際レンダリング予想処理時間を出力してもよい。
【００３３】
一方Ｓ６０８において保証時間内にレンダリング処理が終了することが予想される場合、まずレイヤーのひとつ、例えば最上位レイヤーに着目して当該レイヤーについてＳ６０９からＳ６１３を実行する。Ｓ６０９においてＲＩＰ２１６内のＣＰＵはディスプレイリストの解釈処理を行う。Ｓ６１０においてＲＩＰ２１６内のＣＰＵは解釈したディスプレイリスト内に含まれるエッジが現在処理中のレイヤーに属するか判定する。Ｓ６１０において処理エッジが処理中のレイヤーに属する場合Ｓ６１１においてＲＩＰ２１６内のＣＰＵはエッジをＲＩＰ２１６内のＲＡＭにロードする。Ｓ６１０において処理エッジが処理中のレイヤーに属さない場合Ｓ６１２に飛ぶ。Ｓ６１２においては、図４を参照して説明したセクション＜ディスプレイリストのレンダリング処理方法について＞に記載したようにパイプラインによるレンダリング処理を行い処理中のレイヤーのページを生成する。なおＳ６１１におけるエッジロード後のレンダリング処理は、パイプラインにより当該レイヤーの優先設定に従って行われる。したがってＳ６１０において着目エッジが着目レイヤーに属していないと判定した場合に分岐するＳ６１２のレンダリング処理は、新たなエッジロードは行わないが、パイプライン処理を止めることなく続行することを意味している。また、レイヤーごとの優先設定を示す優先設定情報は、その優先設定が適用されるエッジ情報とともにパイプラインを流れるように構成し、パイプラインの各工程において必要に応じてその優先設定情報を参照するよう構成すれば、より効率的にパイプライン処理を遂行できる。
【００３４】
Ｓ６１３においてＲＩＰ２１６内のＣＰＵは、処理中の着目レイヤーの全エッジ処理が終了したか否かを判定し、終わっていたらＳ６１４に飛び、終わっていなかったらＳ６０９に飛び処理を継続する。Ｓ６１４においてＲＩＰ２１６内のＣＰＵは、Ｓ６０８からＳ６１２で生成されたレイヤーに属するレベルのビットマップデータを、既にレンダリングされている上位レイヤーに属するレベルのビットマップデータに重ね合わせる重ね合わせ処理を行う。Ｓ６１５においてＲＩＰ２１６内のＣＰＵは処理中のディスプレイリストに含まれる全てのレイヤーのレンダリング処理が終了したか否かを判定し、終わっていたらＳ６１７に飛び、終わっていなかったらＳ６０９に飛び、次のレイヤーに着目してＳ６０９から処理を継続する。全てのレイヤーのレンダリングおよび重ね合わせが終了したらＳ６１７においてレンダリング処理を終了させる。
【００３５】
以上のようにして例えば１ページの画像のレンダリングを実行する。この結果、処理時間が所定の保証時間を超えることが予想されると、下位レイヤーから順に速度優先として処理時間を短縮するため、レンダリング処理時間を短縮できる。次に、速度優先設定がされているエッジのレンダリングについて説明する。
【００３６】
＜画質優先処理と速度優先処理の例＞
ここで、画質優先処理と速度優先処理の例を説明する。画質優先処理はこれまで行ってきたレンダリング処理そのものをいう。一方、速度優先処理の例としては下記のようなものをさす。グラフィックスについては、簡易Ｘ座標算出処理、ピクセルプレースメント処理をスキップ、所定の長さ以下の場合セグメント切り替え処理をスキップ、エッジ長が所定の長さ以下の場合スキップ、Ｎ個に１個エッジを無視などがあげられる。イメージについては、解像度を低減しての処理、Ｎ画素以下の画像の処理のスキップ、Ｎピクセルおきに処理を実行などがあげられる。コンポジットすなわち合成については、強制的にCOPYPEN（前景による背景の上書き）、Ｎピクセルおきに処理を実行、透過処理（アルファブレンディングなど）をROP（ＡＮＤまたはＯＲなどの論理演算）に置き換えた処理などがあげられる。その他では属性処理をスキップなどがあげられる。更に画質を向上させるために以下のようなエッジ処理をおこなってもよい。
【００３７】
＜速度優先時のグラフィックスオブジェクトのエッジ処理＞
ここで、図１１を使って速度優先時のグラフィックスオブジェクトのエッジ処理の一例について説明する。
【００３８】
グラフィックスオブジェクトの場合、ベクタデータをラスタデータに変換する際、ピクセルとピクセルの中間にエッジが現れることがある。この場合、ピクセルプレースメントと呼ぶＰＤＬ種に応じてどのピクセルを塗る、塗らないという決められたルールがある。
【００３９】
画質優先処理の場合は上記処理を行って画像を出力するが、速度優先の場合、小数部の一律切り上げ、もしくは切り捨てという簡易処理を行ってエッジ処理の速度向上を行う。
【００４０】
しかしオブジェクトとオブジェクトが隣接したエッジでは、本来のピクセルプレースメントではくっついているものが、簡易処理によると１ピクセル離れてしまい白線が出てしまう可能性がある。これを防止する為に、図１１に示すように左エッジのＸ座標値は切り捨て、右エッジのＸ座値標は切り上げることによりＸ座標を決定し、白線が表れてしまうのを防止することが出来る。
【００４１】
＜速度優先時のグラフィックスオブジェクトのエッジ処理フロー＞
次に、図１２を使って本実施形態における速度優先時のグラフィックスオブジェクトのエッジ処理フローをフローチャートで説明する。この処理は、図６のＳ６１２で行われるレンダリング処理のうちエッジ処理の詳細である。Ｓ６１２はレンダリングパイプラインで実行され、図１２はそのうち特にエッジ処理３０１のＸ座標算出処理における処理である。以下の説明ではＲＩＰ２１６内のＣＰＵにより実行されるものとしているが、レンダリングパイプライン中のエッジ処理を実行するプロセッサにより実行される。
【００４２】
速度優先時のグラフィックスオブジェクトのエッジ処理はＳ１２０１で開始される。Ｓ１２０１はＳ６１１の処理に引き続きの処理になる。ＲＩＰ２１６内のＣＰＵはＳ１２０２において現在の処理がレンダリング処理中のエッジ座標算出処理か否かを判定する。エッジ座標算出処理でない場合、ＲＩＰ２１６内のＣＰＵはＳ１２０３においてその他のレンダリング処理を行い、Ｓ１２０８に飛ぶ。なお図１２がたとえば独立して実行されるＸ座標算出プロセスの一部として行われるのであれば、Ｓ１２０２は不要である。エッジ座標算出処理の場合、ＲＩＰ２１６内のＣＰＵはＳ１２０４において処理中のエッジが速度優先で行われているか否かを判定する。この判定基準は現在の処理対象のレイヤーに関して例えば予め設定された優先設定情報である。速度優先でない場合は、ＲＩＰ２１６内のＣＰＵはＳ１２０６において通常のピクセルプレースメント処理を行いＳ１２０７に飛ぶ。速度優先の場合は、ＲＩＰ２１６内のＣＰＵはＳ１２０５において左エッジは切り捨て、右エッジは切り上げてエッジのＸ座標を設定しＳ１２０７に飛ぶ。ＲＩＰ２１６内のＣＰＵはＳ１２０７において全レンダリング処理が終了したか否かを判定し、終了していない場合は、Ｓ１２０２に飛びレンダリング処理を続行する。もちろんＸ座標算出が終えたなら、引き続きレンダリングパイプラインにより処理が続行される。レンダリングが終了した場合Ｓ１２０８に飛び引き続きＳ６１３の処理を行う。
【００４３】
以上のようにして、本実施形態によれば、ベクトルオブジェクトのエッジを、オブジェクトレベルに応じたレイヤーに分類し、レイヤーごとに、画質優先モード又は速度優先モードでレンダリングする。また他のオブジェクトの下となるレベルの低いオブジェクトを低いレイヤーに分類し、低いレイヤーのエッジを速度優先としてレンダリングする。そして、レンダリング処理時間が所定時間に収まらない場合には、デフォルトの画質優先設定を、下位のレイヤーから順に、レンダリング処理時間が所定時間に収まるまで速度優先設定に変更する。これにより、画質とレンダリング所要時間の短縮とを両立できる。
【００４４】
［実施形態２］
＜リアルタイムな処理速度の最適度合い変更＞
ここで、実施形態２として、図７を使ってリアルタイムな処理速度の最適度合い変更について説明する。なお実施形態１と共通する構成や処理については説明を省略する。
【００４５】
実施形態１では＜エッジのレイヤー分割による処理時間保証＞を用いて保証時間内にレンダリング処理が終了する方法を述べてきた。しかし、レイヤー毎に設定した優先処理の時間予測（Ｓ６０７）の精度が低い場合、予測時間と実際の処理時間とに乖離が出てきてしまう。
【００４６】
そこで、レイヤー毎の処理時間予測と実際の処理時間を比較し、処理をそのまま進めて行くと保証時間内に処理が完了出来ないことが判明した場合、その時点で、まだ処理をしていない下位レイヤーの優先度を画質から処理速度に変更し、レンダリング時間の短縮を行う。
【００４７】
＜リアルタイムな処理速度の最適度合い変更処理フロー＞
図８を使って本実施形態におけるリアルタイムな処理速度の最適度合い変更処理をフローチャートで説明する。この処理は、図１のＲＩＰ２１６内のＲＡＭにロードされ、ＲＩＰ２１６内のＣＰＵ上で動作する。
【００４８】
リアルタイムな処理速度の最適度合い変更処理はＳ８０１で開始される。Ｓ８０１は実施形態１のＳ６１４の処理に引き続きの処理になる。ＲＩＰ２１６内のＣＰＵはＳ８０２において全レイヤーの処理が完了したか判定する。処理が完了した場合Ｓ８０８に飛び引き続きＳ６１７の処理を行う。Ｓ８０２が未完了だった場合、Ｓ８０３においてＲＩＰ２１６内のＣＰＵは処理開始から現在までの実時間とこれから行う処理の予測時間が保証時間内に収まるか判定し、収まる場合Ｓ８０７に飛び引き続きＳ６０９の処理を行う。Ｓ８０３が収まらない場合ＲＩＰ２１６内のＣＰＵはＳ８０４において未処理かつ画質優先が設定されているレイヤーの優先設定を、下位のレイヤーから画質優先から速度優先に変更する。次にＳ８０５においてＲＩＰ２１６内のＣＰＵは変更した優先度を元に未処理レイヤーのレンダリング処理時間予測を行う。Ｓ８０６においてＲＩＰ２１６内のＣＰＵはＳ８０５で予測した処理時間とこれまでの経過時間が保証時間内に収まるか確認し、収まらない場合はＳ８０４に飛び再度優先度の変更を行う。Ｓ８０６で収まる場合、Ｓ８０７に飛び引き続きＳ６０９の処理を行う。
【００４９】
以上のようにして、実際に要した処理時間が予測処理時間を超えているためにレンダリング実行前に設定した優先設定では所定時間内にレンダリングが完了しない場合でも、レンダリング中に動的に優先設定を変更することで、レンダリング所要時間を短縮し、所定時間内にレンダリングを完了させることができる。
【００５０】
［実施形態３］
＜レイヤーに関係ない特定オブジェクトの優先処理設定＞
ここで、図９を使ってレイヤーに関係ない特定オブジェクトの優先処理設定について説明する。なお実施形態１と共通する構成や処理については説明を省略する。
【００５１】
これまで＜エッジのレイヤー分割による処理時間保証＞を用いて上位レイヤーほど画質を優先する処理を選択してきた。しかし、例えば文字の場合視認性が高い、また重要な情報である可能性が高いので例え中間や下位レイヤーに属していたとしても画質優先で処理を行う方がページ全体の品質向上につながることが考えられる。
【００５２】
図９のように丸が上位レイヤー、文字「ＡＢＣ，あいう」が中間レイヤー、四角が下位レイヤーだとする。この場合中間レイヤー「ＡＢＣ，あいう」は上述した実施形態では、下位レイヤーの四角を速度優先モードとしただけではレンダリングが所定時間に間に合わないと速度優先モードとされてしまう。しかしこのオブジェクトは文字なので中間レイヤーだが品質優先（画質優先）で処理を行うように設定する。このことにより処理予想時間が保証時間範囲外になった場合は、中間レイヤーをとばして上位レイヤーの優先設定を画質優先から速度優先に変更し、レンダリング処理時間が保証時間内に収まるように設定する。このように品質を優先すべきオブジェクト、たとえば文字オブジェクトを品質優先とし、それ以外のオブジェクトを速度優先としてレンダリング処理時間を保証時間内に収めることもできる。
【００５３】
上記は文字のように品質を優先して処理すべきオブジェクトについて記載したが、逆にＪＰＥＧイメージに様に画質を落として処理しても全体の品質に影響が少ない場合は、上位レイヤーにあっても速度優先で処理しても構わない。
【００５４】
＜レイヤーに関係ない特定オブジェクトの優先処理設定フロー＞
次に、図１０を使って本実施形態におけるレイヤーに関係ない文字オブジェクトの優先処理設定をフローチャートで説明する。この処理は、図１のＲＩＰ２１６内のＲＡＭにロードされ、ＲＩＰ２１６内のＣＰＵ上で動作する。
【００５５】
レイヤーに関係ない文字オブジェクトの優先処理設定はＳ１００１で開始される。Ｓ１００１はＳ６０５の処理に引き続きの処理になる。ＲＩＰ２１６内のＣＰＵはＳ１００２においてレイヤー分割中のレベルに文字が含まれるか判定する。含まれている場合、Ｓ１００３においてＲＩＰ２１６内のＣＰＵは文字を含むレベルのみを一つのレイヤーに分類し、Ｓ１００５に飛ぶ。含まれていない場合は、所定のレベル数毎にレイヤーを設定してＳ１００５に飛ぶ。Ｓ１００５において全てのレベルのレイヤー分割が完了したか判定し完了していない場合は、Ｓ１００２に飛びレイヤー分割を継続する。完了した場合は、Ｓ１００６に飛びレイヤー毎に優先処理設定を行う。
【００５６】
Ｓ１００６においてＣＰＵ２０６は優先処理設定のレイヤーが文字を含むレイヤーか否かを判定する。文字を含むレイヤーの場合、Ｓ１００７においてそのレイヤーは必ず画質優先に設定してＳ１００９に飛ぶ。文字を含まないレイヤーの場合、Ｓ１００８でレイヤーの上位、下位により優先度を設定しＳ１００９に飛ぶ。このＳ１００８における設定は、図６の手順で説明した通り、レンダリングの予測処理時間が所定時間に収まるまで、下位のレイヤから順に速度優先設定に変更しているように行われる。Ｓ１００９においてＲＩＰ２１６内のＣＰＵは全てのレイヤーの優先設定が済んだか判定し、設定してない場合Ｓ１００６に飛びレイヤー毎の優先設定を続ける。設定した場合Ｓ１０１０で終了し引き続きＳ６０７の処理を行う。
【００５７】
以上の手順により、文字を含むレイヤについては、オブジェクトのレベルに関わらず画質優先でレンダリングされるため、印刷される画像品質を保ちつつレンダリング時間の短縮を図ることができる。なお本実施形態は実施形態２と組み合わせることもできる。
【００５８】
［実施形態４］
＜背景が特定出来るデータの優先処理設定方法＞
ここで図１３を使って背景が特定出来るデータの優先処理設定方法について説明する。なお実施形態１と共通する構成や処理については説明を省略する。
【００５９】
パワーポイントのデータのように背景が同じで全面に描画されるデータが異なる場合がある。この場合、背面のテンプレートには重要な情報はなく前面のデータに重要な情報が含まれていることが多い。
【００６０】
図１３の元画像１３０１は、前面画像１３０２を背景画像１３０３に重ね合わせて構成されている。この場合、前景画像１３０２は画質優先で処理を行う。背面画像１３０３は速度優先で処理を行う。このためには、背景画像として特定できるオブジェクトのレベルが、最も低いレイヤーに含まれるようにオブジェクトレベルはレイヤーに分類される。
【００６１】
＜背景が特定出来るデータの優先処理設定フロー＞
次に、図１４を使って本実施形態における背景が特定出来るデータの優先処理設定フローをフローチャートで説明する。この処理は、図１のＲＩＰ２１６内のＲＡＭにロードされ、ＲＩＰ２１６内のＣＰＵ上で動作する。
【００６２】
背景が特定出来るデータの優先処理設定処理はＳ１４０１で開始される。Ｓ１４０１はＳ６０５の処理に引き続きの処理になる。ＲＩＰ２１６内のＣＰＵはＳ１４０２において入力されたデータが前面と背面が分離可能か否かを判定する。分離可能でない場合、ＲＩＰ２１６内のＣＰＵはＳ１４０３において各エッジをレイヤーに分割しレイヤー毎に優先処理を設定し、Ｓ１４０７に飛ぶ。分離可能の場合、ＲＩＰ２１６内のＣＰＵはＳ１４０４において、優先処理設定の対象データが全面画像のエッジか否かを判定する。前面画像でない場合は、ＲＩＰ２１６内のＣＰＵはＳ１４０６において該当エッジのレイヤーを速度優先処理に設定しＳ１４０７に飛ぶ。前面画像の場合は、ＲＩＰ２１６内のＣＰＵはＳ１２０５において該当エッジのレイヤーを速度優先処理に設定しＳ１４０７に飛ぶ。Ｓ１４０７に飛び引き続きＳ６０７の処理を行う。
【００６３】
以上の手順により背景画像の優先設定を速度優先に、前景画像の優先設定を画質優先に設定することで、見た目の画質の低下を防止しつつ処理時間を短縮することができる。
【００６４】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2014194635.tif 000003
【図２】
2014194635.tif 000004
【図３】
2014194635.tif 000005
【図４】
2014194635.tif 000006
【図５】
2014194635.tif 000007
【図６】
2014194635.tif 000008
【図７】
2014194635.tif 000009
【図８】
2014194635.tif 000010
【図９】
2014194635.tif 000011
【図１０】
2014194635.tif 000012
【図１１】
2014194635.tif 000013
【図１２】
2014194635.tif 000014
【図１３】
2014194635.tif 000015
【図１４】
2014194635.tif 000016