(57)【要約】      （修正有）【課題】エッジデータのソートをプロセッサで実行し、所定の合成演算を演算回路で行うことができる画像形成装置を提供する。【解決手段】印刷データによって表現されるページ内のライン上にあるオブジェクトのエッジに対応するエッジデータを、ライン上におけるエッジの座標に基づいてソートし、ソートされたエッジデータに基づいて、ラインにおける各エッジ間の区間のラスタ画像を生成する画像形成装置であって、所定のプログラムを読み込んで実行するプロセッサと、所定の合成演算を行う演算回路を含む処理部と、を有し、プロセッサは、所定のプログラムにしたがって、エッジデータをソートし、処理部は、ラスタ画像の生成において所定の合成演算にしたがってオブジェクトを合成する場合に、演算回路を用いて、当該オブジェクトの色値に基づく所定の合成演算を行うことを特徴とする。【選択図】図４
2019077133.tif 000002
【特許請求の範囲】
【請求項１】
印刷データによって表現されるページ内の処理対象のライン上にあるオブジェクトのエッジに対応するエッジデータを、前記ライン上における前記エッジの座標に基づいてソートし、前記ソートされたエッジデータに基づいて、前記ラインにおける各エッジ間の区間のラスタ画像を生成する画像形成装置であって、
所定のプログラムを読み込んで実行するプロセッサと、
所定の合成演算を行う演算回路を含む処理部と、
を有し、
前記プロセッサは、前記所定のプログラムにしたがって、前記エッジデータをソートし、
前記処理部は、前記ラスタ画像の生成において前記所定の合成演算にしたがってオブジェクトを合成する場合に、前記演算回路を用いて、当該オブジェクトの色値に基づく前記所定の合成演算を行うことを特徴とする画像形成装置。
【請求項２】
前記プロセッサは、前記所定のプログラムにしたがって、前記ソートされたエッジデータに基づいて、前記ライン上における前記区間のデータを生成し、当該生成された各区間のデータを圧縮して所定の記憶部に記憶し、
前記処理部は、前記所定の記憶部から前記圧縮された前記データを取得して伸張することで、前記各区間のデータを取得し、当該取得された各区間のデータに基づいて、前記ラインにおける各区間のラスタ画像を生成することを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記プロセッサは、前記所定のプログラムにしたがって、前記ページ内の複数のラインについて、前記エッジデータのソートおよび前記区間のデータの生成を行い、前記複数のラインについて生成された前記区間のデータを圧縮して前記所定の記憶部に記憶し、
前記処理部は、前記所定の記憶部から前記圧縮された前記データを取得して伸張することで、前記複数のラインについての各区間のデータを取得し、当該取得されたデータに基づいて、前記複数のラインにおける各区間のラスタ画像を生成することを特徴とする請求項２に記載の画像形成装置。
【請求項４】
前記プロセッサは、第１のキャッシュメモリを有し、
前記プロセッサは、前記エッジデータのソートを、前記第１のキャッシュメモリを利用して実行し、
前記処理部は、第２のキャッシュメモリを有し、
前記処理部は、前記所定の合成演算を、前記演算回路および前記第２のキャッシュメモリを利用して実行し、
前記第１のキャッシュメモリは、前記第２のキャッシュメモリよりもメモリ容量が大きいことを特徴とする請求項１乃至３の何れか１項に記載の画像形成装置。
【請求項５】
前記プロセッサは、前記印刷データを解釈して前記ページに含まれるオブジェクトのエッジに対応するエッジデータを生成することを特徴とする請求項１乃至４の何れか１項に記載の画像形成装置。
【請求項６】
前記印刷データは、ページ記述言語で記述されることを特徴とする請求項１に記載の画像形成装置。
【請求項７】
前記所定の合成演算とは、ＲＯＰあるいはαブレンドであることを特徴とする請求項１に記載の画像形成装置。
【請求項８】
前記処理部は、前記エッジデータのソートを行うためのプロセッサを有し、
前記プロセッサは、前記印刷データを解析し、
当該解析された印刷データの内容に応じて、
前記エッジデータのソートを前記プロセッサで行い、かつ、前記所定の合成演算を前記演算回路で行うか、
前記エッジデータのソートおよび前記所定の合成演算を前記プロセッサで行うか、
前記エッジデータのソートおよび前記所定の合成演算を前記処理部のプロセッサおよび前記演算回路で行うと判定することを特徴とする請求項１に記載の画像形成装置。
【請求項９】
印刷データによって表現されるページ内のライン上にあるオブジェクトのエッジに対応するエッジデータを、前記ライン上における前記エッジの座標に基づいてソートし、前記ソートされたエッジデータに基づいて、前記ラインにおける各エッジ間の区間のラスタ画像を生成する画像形成方法であって、
前記エッジデータのソートを行うプログラムをプロセッサに実行させる工程と、
前記ラスタ画像の生成において所定の合成演算にしたがってオブジェクトを合成する場合に、前記所定の合成演算を行う演算回路に、当該オブジェクトの色値に基づく前記所定の合成演算を行わせる工程と、
を有することを特徴とする画像形成装置。
【請求項１０】
印刷データによって表現されるページ内の処理対象のライン上にあるオブジェクトのエッジに対応するエッジデータを、前記ライン上における前記エッジの座標に基づいてソートし、前記ソートされたエッジデータに基づいて、前記ラインにおける各エッジ間の区間のラスタ画像を生成する画像形成方法を行うためのプログラムであって、
前記エッジデータをソートするための所定のプログラムにしたがって、プロセッサに前記エッジデータのソートを実行させ、
前記ラスタ画像の生成において前記所定の合成演算にしたがってオブジェクトを合成する場合に、所定の合成演算を行う演算回路に、当該オブジェクトの色値に基づく前記所定の合成演算を行わせることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、画像形成方法、プログラムに関する。
【背景技術】
【０００２】
従来、ホストコンピュータ上で実行される描画アプリケーションを用いて生成された描画データをプリンタで印刷する場合、ホストコンピュータは描画データをページ記述言語（以降、ＰＤＬ）と呼ばれる印刷データの形式でプリンタへ送信する。ＰＤＬには描画データにおける、文字、グラフィック、イメージ等のオブジェクトを印刷する際に必要となる印刷情報が含まれている。
【０００３】
ＰＤＬを受信したプリンタは、ＰＤＬに含まれる描画データをもとに、ページのラスタ画像を生成するレンダリング処理を行う。レンダリング処理の方法は幾つか存在するが、例えば、１ラインごとにページのラスタ画像を生成するスキャンラインレンダリングという方法がある。スキャンラインレンダリングは、ページ内に描画するオブジェクトとオブジェクト、またはオブジェクトと背景の境目を指すエッジのデータ（エッジデータ）を基にライン単位でレンダリングを行う。
【０００４】
スキャンラインレンダリングは、ページに含まれるオブジェクトのエッジのうち、処理対象のライン（現在のライン）上に存在する複数のエッジのデータをリスト（エッジリスト）で管理するエッジ処理を行う。このエッジ処理は、現在のライン上に存在する複数のエッジを特定し、それらエッジのデータを、現在のラインにおける各エッジの座標に基づき、座標昇順でソートし、ソートされたエッジデータをエッジリストで管理する。このように複数のエッジデータを座標昇順でソートする処理をエッジソート処理と呼び、各ラインについて行われる。そして、スキャンラインレンダリングは、現在のラインについて、エッジソート処理によってソートされたエッジデータにしたがって、エッジ間の区間（スパン）を特定し、特定された各区間の画素の最終的な色を算出する。特定された区間の画素の最終的な色を算出する際に、その区間に存在する複数のオブジェクトの色を合成演算命令にしたがって合成する処理（合成処理）が行われる。
【０００５】
特許文献１では、上記エッジソート処理と合成処理とを開示している。またこの特許文献１では、このスキャンラインレンダリングのエッジソート処理と合成処理とを別々のＣＰＵで実行する方法を開示する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−２５９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
スキャンラインレンダリングをＣＰＵによる処理（ソフトウェアプログラムに従う逐次処理）ではなく、ＡＳＩＣやＦＰＧＡなどに代表されるハードウェア回路による演算処理によって高速化することを考える。
【０００８】
スキャンラインレンダリングの合成処理において、合成演算の種類（ＲＯＰ演算やαブレンド）は限られている上に、また、最終的な色を算出するための複数の合成演算は逐次的に繰り返される。そのため、ＲＯＰ演算回路やαブレンド演算回路をハードウェア回路上に構成し、これら演算回路を用いて複数の合成演算を逐次処理することで高速化が見込める。
【０００９】
エッジソート処理も同様に、ハードウェア回路上に所望のソートアルゴリズムにしたがって複数の演算器およびメモリ回路を構成し、それらを動作させることで高速化を図ることが可能である。
【００１０】
しかしながら、エッジソート処理の対象は、ライン上の複数のエッジのデータであるため、ソート処理回路の回路規模は、ソート対象のエッジの数に依存する。
【００１１】
近年、ホストコンピュータ上の描画アプリケーションによって作成される描画データは複雑化しているため、１ライン上に存在するエッジの数は膨大な量となることがある。このようなエッジ数が膨大なケースに合わせてエッジソート回路を構成すると、エッジソート回路の回路規模が大きくなってしまう。
【課題を解決するための手段】
【００１２】
本発明の形成装置は、印刷データによって表現されるページ内のライン上にあるオブジェクトのエッジに対応するエッジデータを、前記ライン上における前記エッジの座標に基づいてソートし、前記ソートされたエッジデータに基づいて、前記ラインにおける各エッジ間の区間のラスタ画像を生成する画像形成装置であって、所定のプログラムを読み込んで実行するプロセッサと、
所定の合成演算を行う演算回路を含む処理部と、を有し、前記プロセッサは、前記所定のプログラムにしたがって、前記エッジデータをソートし、前記処理部は、前記ラスタ画像の生成において前記所定の合成演算にしたがってオブジェクトを合成する場合に、前記演算回路を用いて、当該オブジェクトの色値に基づく前記所定の合成演算を行うことを特徴とする。
【発明の効果】
【００１３】
本発明に依れば、エッジデータのソートをプロセッサで実行し、所定の合成演算を演算回路で行うことができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態の画像形成装置のハードウェア構成を示す図
【図２】ＲＩＰ部１４１のハードウェア構成を示す図
【図３】画像形成装置のソフトウェア構成を示した図
【図４】画像形成処理の実施例１の詳細なフローを示す図
【図５】受信したＰＤＬデータの一例を示す図
【図６】ＰＤＬデータから生成したＤＬを示す概念図
【図７】エッジ処理後のＤＬを示す概念図
【図８】エッジ処理時のＣＰＵキャッシュの状態を示す説明図
【図９】レベル処理後のＤＬを示す概念図
【図１０】画像形成処理の実施例２の詳細なフローを示す図
【図１１】実施例２のソフトＲＩＰ処理の詳細なフローを示す図
【図１２】実施例２の通常ＲＩＰ処理の詳細なフローを示す図。
【図１３】画像形成処理の実施例３の先行処理の詳細なフローを示す図
【図１４】画像形成処理の実施例３の印刷の詳細なフローを示す図
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態について図面を用いて説明する。
【００１６】
＜実施例１＞
図１は、本発明のシステム構成の例を示す図である。本システムでは、ホストコンピュータと画像形成装置１１０がＬＡＮ経由で接続する構成とする。
【００１７】
ユーザは、まずホストコンピュータ上で、印刷対象のページを表す、ＰＤＬ（ページ記述言語）で記述された印刷データ（以下ＰＤＬ）を生成し、画像形成装置１１０に転送する。画像形成装置１１０は、転送されたＰＤＬに基づき、印刷処理を行う構成をとる。本画像形成装置は、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）、ＳＦＰ（Ｓｉｎｇｌｅ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）のうち、いずれのプリンタであってもよい。また、画像処理装置は、ＭＦＰ、ＳＦＰ以外のプリンタであってもよい。
【００１８】
図１を用いて、本実施形態の画像形成装置１１０の詳細なハードウェア構成について説明する。図１において、画像形成装置１１０は、画像出力デバイスであるプリンタエンジン１５１を保持する。また、画像形成装置１１０は、ＬＡＮと接続することで、ＰＤＬやデバイス情報をＬＡＮ経由で入出力するための制御を行う。ＣＰＵ１２１は画像形成装置全体を制御するための中央処理部である。このＣＰＵ１２１は、プログラム中の演算命令をＲＡＭ１２２から読み込んで（フェッチ）、解読して（デコード）、実行するサイクルを繰り返すプロセッサの一例である。また、このＣＰＵ１２１は、内部にＳＲＡＭで構成されたキャッシュメモリを有する。このキャッシュメモリのサイズは１Ｍバイトである。ＲＡＭ１２２は、ＣＰＵ１２１が動作するためのシステムワークメモリである。また送信されたＰＤＬや印刷処理のため画像形成装置内で生成する中間データ、レンダリング処理を行う際の作業領域であるワーク領域や、入力された画像データを一時記憶するためのメモリでもある。さらに、ＲＯＭ１２３はブートＲＯＭであり、システムのブートプログラムが格納されている。記憶装置１２４はハードディスクドライブであり、各種処理のためのシステムソフトウェア及び送信されたＰＤＬを格納する構成である。操作部Ｉ／Ｆ  １３０は、各種メニューや印刷データ情報等を表示可能な表示画面を有する操作部１３１に対するインタフェース部であり、操作部１３１に対して操作画面データを出力する。また、操作部Ｉ／Ｆ  １３０は、操作部１３１から操作者が入力した情報をＣＰＵ１２１に伝える役割をする。たとえば、記憶装置１２４に格納したＰＤＬの印刷指示は、ユーザによって操作部１３１を介して実行される。ネットワークＩ／Ｆ  １２０は、ＬＡＮに接続して外部装置との間で情報の入出力を行う。圧縮器１２５は、入力データに対して圧縮処理を行う。圧縮後データの出力先はＲＡＭ１２２、または記憶装置１２４である。以上のユニットがシステムバス１６０上に配置されている。イメージバスＩ／Ｆ  １４０は、システムバス１６０と画像データを高速で転送する画像バス１７０と接続するためのインタフェースであり、データ構造を変換するバスブリッジである。画像バス１７０上には、ＲＩＰ（Ｒａｓｔｅｒ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｏｒｓ）１４１、プリント画像処理部１４２、デバイスＩ／Ｆ  １５０が接続される。ＲＩＰ１４１は、エッジ処理前のＤＬあるいはエッジ処理済のＤＬからＲＧＢ形式のページのラスタ画像を生成する。プリント画像処理部１４２は、ＲＩＰ１４１が生成したＲＧＢ形式のページのラスタ画像を、ＣＭＹＫ形式のページのラスタ画像に変換し、ＣＭＹＫ形式のラスタ画像にスクリーン処理を行う。デバイスＩ／Ｆ  １５０は、プリンタエンジン１５１と画像形成装置１１０とを接続し、スクリーン処理後のラスタ画像をプリンタエンジン１５１が処理可能な形式に変換し、変換後の画像データをプリンタエンジン１５１に転送する。プリンタエンジン１５１は、受け取った画像データに基づいて画像を印刷する。
【００１９】
図２は、ＲＩＰ１４１の内部構成を表す図である。伸張器２０２は、入力データ（例えばエッジ処理済のＤＬ）に対して伸張処理を行う。伸張後データの出力先はＲＡＭ２０３である。ＲＩＰ１４１はパイプラインを形成する複数のサブＣＰＵシステムを有し、各サブＣＰＵシステム内のサブＣＰＵ２１１からサブＣＰＵ２４１は、ＲＩＰ処理を高速に行うために対応するハードウェア回路を制御する専用ＣＰＵである。一般的に、各サブＣＰＵの周波数、キャッシュサイズ（キャッシュメモリのメモリ容量）は、ＣＰＵ１２１に比べて小さい。本実施例でのサブＣＰＵが内蔵するキャッシュメモリのサイズは、３２Ｋバイトである。しかし、各処理（エッジ処理、レベル処理、ピクセル処理、合成処理）に特化したハードウェア制御により、条件次第で汎用ＣＰＵと同等かそれ以上のパフォーマンスを実現する。本実施形態では、サブＣＰＵ２１１はエッジ処理、サブＣＰＵ２２１はレベル処理、サブＣＰＵ２３１はピクセル処理、サブＣＰＵ２４１は合成処理に特化したハードウェア回路を制御なＣＰＵとして説明する。ＲＡＭ２０３は、サブＣＰＵ２１１からサブＣＰＵ２４１が動作するためのシステムワークメモリである。
【００２０】
図３は、本発明のソフトウェア構成の例を示す図である。尚、中間データ生成部３０１、ＰＤＬデータ解析部３２１、レンダリング処理部３０２はＣＰＵ１２１上で動作するソフトウェアモジュールであり、レンダリング処理部３１０は、サブＣＰＵ２１１〜２４１上で動作するソフトウェアモジュールである。
【００２１】
中間データ生成部３０１は、ネットワークＩ／Ｆ１２０から受信したＰＤＬで指定される描画コマンドを読みだし、中間データであるＤＬを生成するソフトウェアモジュールである。中間データ生成部３０１は、ＣＰＵ１２１上で動作し、生成したＤＬはＲＡＭ１２２、もしくは記憶装置１２４に格納する。
【００２２】
レンダリング処理部３０２は、ＲＡＭ１２２から取得したＤＬから後述のエッジ処理済のＤＬ（ソート済ＤＬ）を生成するソフトウェアモジュールである。また、レンダリング処理部３０２は、ＤＬをレンダリングしてラスタ画像を生成する。このラスタ画像をレンダリング処理部３０２は、ネットワークＩ／Ｆ１２０を介して外部の画像形成装置（図示せず）への送信や、イメージバスＩ／Ｆ１４０、プリント画像処理部１４２、デバイスＩ／Ｆ  １５０を経由してプリンタエンジン１５１へ送信する。ラスタ画像の生成については、実施例２以降で後述する。レンダリング処理部３０２は、ＣＰＵ１２１上で動作し、ソート済ＤＬ、または、ラスタ画像を、ＲＡＭ１２２、もしくは記憶装置１２４に格納する。
【００２３】
ＰＤＬデータ解析部３２１は、ＰＤＬコマンドの種類毎の描画位置や描画範囲をカウントし、データ傾向を予測するためのソフトウェアモジュールである。この詳細は実施例２以降で後述する。ＰＤＬデータ解析部３２１は、ＣＰＵ１２１上で動作し、解析結果はＲＡＭ１２２、もしくは記憶装置１２４に格納する。
【００２４】
レンダリング処理部３１０は、ソフトウェアモジュールである。レンダリング処理部３１０は、ＲＡＭ１２２からイメージバスＩ／Ｆ  １４０を経由して渡されたＤＬや後述のソート済ＤＬをレンダリングし、生成したラスタ画像をプリント画像処理部１４２、デバイスＩ／Ｆ  １５０を経由してプリンタエンジン１５１へ送る。レンダリング処理部３１０は、レンダリング処理の各工程（エッジ処理、レベル処理、ピクセル処理、合成処理）を複数のサブＣＰＵ２１１〜２４１、および各ハードウェア回路２１２〜２４２を用いて実行する。各サブＣＰＵ間のデータ授受はＲＡＭ２０３か、より高速に行うためにＣＰＵ間に専用バッファ（図示しない）を用意しても良い。また、レンダリング処理部３１０は、以下４つのソフトウェアサブモジュールで構成される。
【００２５】
エッジ処理部３１１は、イメージバスＩ／Ｆ  １４０を経由して渡されたＤＬを基に、スキャンライン毎にエッジソート処理（エッジ処理）を行うためのソフトウェアモジュールである。エッジ処理部３１１は、サブＣＰＵ２１１上で動作し、生成した情報はＲＡＭ２０３、またはＣＰＵ間の専用バッファに格納する。サブＣＰＵ２１１がエッジ処理回路２１２にエッジソート処理を実行させる。なお、このエッジ処理回路２１２は、次の演算回路を有する。１つめは、現在のライン上に存在する１つのエッジの座標値を、そのエッジの１つ前のライン上の座標値とそのエッジの傾きから算出する回路である。２つめは、２つのエッジの座標値が入力された場合に、どちらの入力座標値のほうが大きいのかを判定する回路である。サブＣＰＵ２１１は、エッジリスト中のエッジデータに含まれるエッジの座標値とエッジの傾きを取得し、その座標値と傾きを１つめの回路に入力することで現在のラインにおけるそのエッジの座標値を得る。そして、その得られた座標値で、エッジリスト中のそのエッジデータに含まれるそのエッジの座標値を更新する。この座標値の更新処理を、エッジリストに含まれるすべてのエッジデータに対して行うことで、現在のラインにおける各エッジの座標値が算出される。そしてサブＣＰＵ２１１は、エッジリスト中のエッジデータに含まれる２つのエッジデータに含まれる座標値を２つ目の回路に入力して、その大小比較の判定結果を基に、エッジリスト中のエッジデータをソートする。なおエッジリストは、ＲＡＭ２０３に記憶され、ライン単位で更新される。また以上のエッジ処理回路２１２は、複数のエッジデータを入力してハードウェア回路のみでエッジソート処理を行うものではない。なぜなら、エッジ処理回路２１２の回路規模を大きくしすぎないためである。
【００２６】
レベル処理部３１２は、エッジ処理部３１１が生成したエッジソート済のデータを基に、レベル処理回路２２２にレベル処理を行わせるためのソフトウェアモジュールである。このレベル処理は、処理対象ライン上のエッジ間の区間（、スパン）に存在するオブジェクトを特定し、それらオブジェクトをレベル順にソートする。このソート処理によってスパン内の色に影響を与えるオブジェクトを特定することができる。例えば、半透明なオブジェクト（第１オブジェクト）、不透明なオブジェクト（第２オブジェクト）、半透明なオブジェクト（第３オブジェクト）の順に、これら３つのオブジェクトが重なる単純合成のスパンを仮定する。この仮定によれば、スパンの色は、レベル番号が３つのオブジェクトのうちで最大の（一番上に重なる）第３オブジェクトと、レベル番号が次に大きい第２オブジェクトの色で決まる。なぜなら、第２オブジェクトは不透明であり、一番下に重なる第１オブジェクトの色の影響を遮断するからである。そこで、レベル処理は、オブジェクトのソート後、スパン内の画素の色に影響を与えるオブジェクトのみをスパンに関連付ける。レベル処理部３１２は、サブＣＰＵ２２１上で動作し、オブジェクトのレベル順のソート（レベル処理）にはレベル処理回路２２２を用いる。このレベルソートはスパンごとに行われ、生成した情報（レベル処理後のスパンの情報）はＲＡＭ２０３、またはＣＰＵ間の専用バッファに格納する。
【００２７】
ピクセル処理部３１３は、レベル処理後のスパンの情報を基に、拡大、縮小、回転処理やグラデーション等の色の計算処理（ピクセル処理、フィル処理とも呼ばれる）をピクセル処理回路２３２に行わせるためのソフトウェアモジュールである。ピクセル処理部３１３は、サブＣＰＵ２３１上で動作し、処理対象のスパンにおけるオブジェクトの色を算出するピクセル処理回路２３２を用いる。このピクセル処理回路２３２は、スパン内の画素におけるオブジェクトの色を算出する回路であって、例えばグラデーションオブジェクトであれば、グラデーションの幅および勾配と、対象の画素位置を入力として、対象の画素の色を算出する。このサブＣＰＵ２３１は、レベル処理後のスパンの情報から、スパン内の色に影響を与えるオブジェクトを特定する。そしてサブＣＰＵ２３１は、そのオブジェクトの色を算出する処理をピクセル処理回路２３２に行わせる。生成した情報（スパン内の各画素におけるオブジェクトの色）はＲＡＭ２０３、またはＣＰＵ間の専用バッファに格納する。
【００２８】
合成処理部３１４は、ＲＯＰ（ラスターオペレーション）やαブレンド（アルファブレンド）等の合成処理を合成処理回路２４２に行わせ、スパン（ピクセル）の色値を決めるためのソフトウェアモジュールである。合成処理部３１４は、サブＣＰＵ２４１上で動作し、処理対象の画素におけるオブジェクトの色を合成処理回路２４２に合成させる。この合成処理回路２４２は、ＲＯＰ演算回路とαブレンド（アルファブレンド）演算回路を有し、処理対象画素について、サブＣＰＵ２４１から入力される合成演算命令と合成対象の１つ以上の色値を基に、ＲＯＰ演算回路やαブレンド演算回路で合成処理を行う。ＲＯＰには、ＲＯＰ２やＲＯＰ３などの種々の命令があるが、これら命令の数は有限であるため、これら命令を個々に実行するための演算回路を予め用意しておいても回路規模が無用に大きくなることはない。また合成演算命令は、スタックに保存されて、逐次実行されるので、各合成演算命令を、対応する演算回路に逐次実行させることで、合成処理の高速化を図ることができる。また、サブＣＰＵ２４１は、逐次実行された合成演算命令の処理結果（合成後の画素の色値）をキャッシュに一時的に保持するが、高々数画素分のデータをキャッシュすればよいだけなので、比較的小さいサイズのキャッシュメモリで十分である。このように合成処理は、ハードウェア回路を用いて行ったほうが効率的である。この合成処理によって生成した情報（ピクセルの色値）はページのラスタ画像としてＲＡＭ２０３に格納する。
【００２９】
図４は、受信したＰＤＬデータを解釈してラスタライズされた画像データ（ラスタ画像）が生成されるまでの流れを示すフローチャート図である。尚、図４のフローチャートに記載のステップＳ４０１〜Ｓ４１０のプログラムは、画像形成装置１１０の起動時にＲＡＭ１２２、ＲＡＭ２０３に展開され、ＣＰＵ１２１、サブＣＰＵ２１１〜２４１によって実行される。本実施形態では、図５のＰＤＬデータを用いて処理の流れを説明する。尚、図５は幅が１画素の矩形オブジェクトが複数、横方向に並んでおり、その上に三角形のオブジェクトが重なる状態を示している。この矩形オブジェクトは、色値（ＲＧＢα）＝（２００、２００、２００、１．０）の不透明の灰色のオブジェクトである。この三角形オブジェクトは、色値（ＲＧＢα）＝（２５５、２５５、２５５、０．８）の半透明の白色のオブジェクトである。
【００３０】
ステップＳ４０１において、中間データ生成部３０１は、ホストコンピュータ１０１から送信されたＰＤＬデータをネットワークＩ／Ｆ１２０を介して受信し、ＲＡＭ１２２、もしくは記憶装置１２４に格納する。本実施形態では、ホストコンピュータ１０１からのＰＤＬデータ投入を例に説明するが、別の画像形成装置に格納されたＰＤＬを取得しても良い。また、ＵＳＢ端子（図示せず）からフラッシュメモリなどの記憶装置を画像形成装置１１０に直接挿入して、そこからＰＤＬを取得しても良く、投入元は限定しない。
【００３１】
ステップＳ４０２において、中間データ生成部３０１は、受信したＰＤＬで指定される描画コマンドを読み出し、中間データであるＤＬを生成する。中間データ生成部３０１は、描画コマンドによって描画されるオブジェクトの輪郭（エッジ）を抽出し、そのエッジの情報をエッジデータとして含むＤＬを生成する。各エッジのデータは、エッジ毎に固有のエッジＩＤ、開始位置座標、開始点からの遷移を示すセグメント、エッジ向き、オブジェクトの上下関係を示すレベル、オブジェクトの色値（塗情報）を示すフィル、リンクされる前後のエッジのアドレス（ＩＤ）を持つ。１つのオブジェクトにつき、少なくとも２つのエッジデータが生成される。１つは、エッジ向きがｕｐに設定されたエッジデータであり、もう１つは、エッジ向きがｄｏｗｎに設定されたエッジデータである。エッジ向きがｕｐであるエッジデータの座標と、エッジ向きがｄｏｗｎであるエッジデータの座標との間の区間は、そのオブジェクトの描画区間であることを示す。
【００３２】
中間データ生成部３０１は、生成したＤＬをＲＡＭ２２２の連続したアドレス領域に格納する。連続したアドレス領域に格納するのは、次のＳ４０３でＣＰＵ１２１（レンダリング処理部３０２）によって行われるエッジソート処理において、ＣＰＵ１２１のキャッシュヒット率を上げるためである。
【００３３】
図６（ｂ）は、ＤＬの構成の一例を示した図である。図５での複数の矩形オブジェクトと１つの三角形オブジェクトは、図６（ａ）において、Ｎ本のエッジで表現されている。ここでこれらオブジェクトの総数はＮ／２である。
【００３４】
例えば図５の再左端の矩形オブジェクトは、左辺と右辺で定義可能であるので、左辺を示すエッジと右辺を示すエッジで表現される。この左辺および右辺は図６（ｂ）に示されるようにエッジＩＤ＝１、２を持つエッジデータに相当する。矩形オブジェクトの左辺は、始点（開始位置）の座標が（２００、４００）、始点に対する終点（終了位置）の相対位置が（０、６００）である。そのため、エッジＩＤ＝１のエッジデータには、開始位置＝（２００、４００）、セグメント＝（０、６００）が設定される。またこのエッジは矩形オブジェクトの左辺であるので、エッジ向き＝ｕｐがエッジＩＤ＝１のエッジデータに含まれる。またこの矩形オブジェクトの色値（Ｒ値、Ｇ値、Ｂ値、α値）が（２００、２００、２００、１．０）であるので、フィルにも同じ値が設定されている。そして、この矩形オブジェクトが複数のオブジェクトのなかで最も下層である（Ｚオーダーで最も値が小さい、視点からの距離が最も遠い）のでレベルＩＤ＝１が設定される。同様にこの矩形オブジェクトの右辺に相当するエッジＩＤ＝２のエッジデータは、開始位置＝（２０１、４００）、セグメント＝（０、６００）を持つ。また右辺であるので、エッジ向き＝ｄｏｗｎが設定される。そして、レベルＩＤ、フィルについては左辺のエッジと同様に、レベルＩＤ＝１、フィル＝（２００、２００、２００、１．０）が設定される。またＤＬは、オブジェクト単位で生成されるため、この矩形オブジェクトのＤＬを生成する際に、エッジＩＤ＝１のエッジデータには、次のエッジ（エッジデータ）としてエッジＩＤ＝２のエッジデータが設定される。同様に、エッジＩＤ＝２のエッジデータには、前のエッジ（エッジデータ）としてエッジＩＤ＝１のエッジデータが設定される。そしてこの矩形オブジェクトの次に右に隣接する矩形オブジェクトのＤＬが生成される場合に、この隣接矩形オブジェクトの左辺および右辺それぞれに対応するエッジＩＤ＝３、４のエッジデータを同様に生成する。このとき、エッジＩＤ＝２のエッジデータには、次のエッジ（エッジデータ）としてエッジＩＤ＝３が設定される。
【００３５】
また、例えば図５の最上位の三角形オブジェクトは、斜辺と右辺で定義可能であるので、斜辺を示すエッジと右辺を示すエッジで表現される。この斜辺および右辺は図６（ｂ）に示されるようにエッジＩＤ＝Ｎ−１、Ｎを持つエッジデータに相当する。斜辺は、始点（開始位置）の座標が（８００、５００）、終点（終了位置）の始点に対する相対位置が（−７００、４００）であるので、エッジＩＤ＝Ｎ−１のエッジデータには、開始位置＝（８００、５００）、セグメント＝（−７００、４００）が設定される。そして前述の矩形オブジェクトと同様の理由から、このエッジＩＤ＝Ｎ−１のエッジデータには、エッジ向き＝ｕｐ、レベルＩＤ＝Ｎ／２、フィル＝（２５５、２５５、２５５、０．８）、前のエッジＩＤ＝Ｎ−２、次のエッジＩＤ＝Ｎが設定される。エッジＩＤ＝Ｎのエッジデータには次の値が設定される。開始位置＝（８００、５００）、セグメント＝（０、４００）、エッジ向き＝ｄｏｗｎ、レベルＩＤ＝Ｎ／２、フィル＝（２５５、２５５、２５５、０．８）、前のエッジＩＤ＝Ｎ−１、次のエッジＩＤ＝ｎｕｌｌが設定される。なお、不図示ではあるが、オブジェクトにＲＯＰ（ＲＯＰ２やＲＯＰ３など）による合成が指定されている場合には、その情報（ＲＯＰ種の情報）もＤＬ中の各エッジデータのフィル情報に関連付けて保存される。
【００３６】
ステップＳ４０３において、レンダリング処理部３０２は、ステップＳ４０２で生成したＤＬを基に、ラインごとにエッジソート処理を行い、エッジソート処理が行われたエッジリストをラインごとに生成する。すなわち、ページの全ライン分のエッジリストが生成される。このレンダリング処理部３０２は、エッジソート処理の所定のプログラムであり、このプログラム中の演算命令をＣＰＵ１２１がＲＡＭ１２２から読み込み、実行することでエッジソート処理はＣＰＵ１２１によって行われる。すなわちＳ４０３におけるエッジソート処理は、エッジソート処理に特化した専用のハードウェア回路を用いない処理である。ＣＰＵ１２１がエッジソート処理を行うメリットを説明するため、まずエッジソート処理について説明する。エッジソート処理は、概して、ラインに存在する複数のエッジのデータをそれらエッジの座標を基に座標昇順にソートする処理である。ここでは、ＣＰＵ１２１が、処理対象のライン上に存在するエッジのエッジデータを特定し、特定されたエッジデータのセグメント情報を用いて、ライン上におけるそれらエッジの座標を算出し、エッジデータの座標情報を更新する。そして更新された座標情報を基に、ＣＰＵ１２１は、特定されたエッジデータを座標昇順でソートする。このソートは、エッジデータのリンク情報（前のエッジＩＤ、次のエッジＩＤ）の更新によって行われる。ここでこのソートにおいてＣＰＵ１２１は、座標情報が更新されたエッジデータを取得するときに、取得対象のエッジデータの近くのアドレスのエッジデータもキャッシュメモリに読み込む。そのため、ソートにおけるエッジ座標の大小比較やリンク情報の更新において、キャッシュヒット効果が得られる。このキャッシュヒット効果はソート対象のエッジ数が多いときでも得られる。
【００３７】
一方、このエッジソート処理を専用のハードウェア回路で行うことを仮に考えると、用意すべき回路の回路規模は、ソート対象のエッジの数の数に依存する。そのため、大量のエッジがライン上に存在する可能性を考慮して回路を用意すると、回路規模が大きくなってしまう。それに対してＣＰＵ１２１でソフト処理を行うようにすることで大量のエッジをソートする場合でも回路規模の増大を防ぐことができる。また上述のように、ＣＰＵ１２１はＲＩＰ１４１の専用ハードウェア回路２１２〜２４２の持つキャッシュメモリよりも大きなサイズのキャッシュメモリを内蔵している。そのため、大量のエッジがライン上に存在する場合でも、キャッシュヒット効果により高速にエッジソート処理を行うことができる。
【００３８】
図７はエッジソート後のＤＬを示している。レンダリング処理部３０２は、あるスキャンラインを処理する際、そのスキャンライン上に存在するエッジのデータ（エッジデータ）をＲＡＭ２２２に格納されるＤＬからロードし、ＣＰＵキャッシュに展開する。また、本実施形態では簡単のため、各エッジデータのサイズは同一とする。ここでは例として、スキャンライン＝５００とスキャンライン＝７００を処理する場合について説明する。なお以下でエッジと呼ぶときにはエッジデータを指し示す。
【００３９】
まずスキャンライン＝５００を処理する際、レンダリング処理部３０２は、エッジ（ＩＤ＝１）から順番にエッジをロードして、エッジ（ＩＤ＝Ｎ）までロードして該スキャンラインのエッジソート処理を完了する。スキャンライン＝５００では、ソートを必要とするエッジが存在しないため、レンダリング処理部３０２は、次のスキャンラインに処理を進める。
【００４０】
スキャンライン＝７００を処理する際、セグメント情報によって、エッジ（ＩＤ＝Ｎ−１）が傾きを持つエッジであることが分かっている。そのため、レンダリング処理部３０２は、Ｘ座標＝ｍ（ｎ−１＜＝ｍ＜ｎ）であるエッジ（ＩＤ＝Ｎ−１）がどのエッジの間に挿入されるかを判定する。レンダリング処理部３０２は、エッジ（ＩＤ＝１）とエッジ（ＩＤ＝Ｎ−１）のＸ座標を比較し、エッジ（ＩＤ＝Ｎ−１）の方が主走査方向に後方である（Ｘ座標が大きい）ため、次のエッジと比較する。レンダリング処理部３０２は、この大小比較の処理をエッジ（ＩＤ＝Ｎ−１）のＸ座標よりも小さいＸ座標を持つエッジを見つけるまで繰り返す。Ｘ座標＝ｎであるエッジ（ＩＤ＝ｋ）と比較の結果、エッジ（ＩＤ＝Ｎ−１）の方が主走査方向で前方である（Ｘ座標が小さい）ため、レンダリング処理部３０２は、エッジ（ＩＤ＝ｋ−１）とエッジ（ＩＤ＝ｋ）の間にエッジ（ＩＤ＝Ｎ−１）を挿入する。この一連のソート処理におけるＣＰＵキャッシュの状態について、図８を用いて説明する。尚、本実施形態ではソートアルゴリズムとして挿入ソートを基に説明したが、どのアルゴリズムを採用しても良い。
【００４１】
上で述べたように、レンダリング処理部３０２は、図８（ａ）のようにソートによりエッジ（ＩＤ＝Ｎ−１）をエッジ（ＩＤ＝ｋ−１）とエッジ（ＩＤ＝ｋ）の間へ挿入する際、まずスキャンライン＝７００上の先頭エッジ（ＩＤ＝１）のエッジのロードを行う。しかし、図８（ｂ）に示すように、ＣＰＵキャッシュの小さいサブＣＰＵでは、全てのエッジがキャッシュに載り切らない場合がある（ここではＩＤ＝Ｋまでのエッジが載ったとする）。この場合、エッジソートにおいてＸ座標を比較する際に、エッジ（ＩＤ＝１）、エッジ（ＩＤ＝Ｎ−１）、エッジ（ＩＤ＝２）、エッジ（ＩＤ＝Ｎ−１）、と処理するため、エッジをロードする度にキャッシュミスヒットが発生する。一方、図８（ｃ）で示すように、ＣＰＵキャッシュが十分にあるＣＰＵ１２１の場合、スキャンライン＝７００上のエッジ（ＩＤ＝１）からエッジ（ＩＤ＝Ｎ）までのエッジが全てキャッシュに載り切るため、高速にエッジソートを行うことが出来る。
【００４２】
ステップＳ４０４において、レンダリング処理部３０２は、ステップＳ４０３で作成した情報（すべてのラインについてのソート済エッジデータ）を基にスパンを生成し、その色値を決定するためのレベル処理を行う。スキャンライン＝５００におけるレベル処理について、図９を用いて説明する。スキャンライン＝５００は、図９（ａ）に示されるように三角形オブジェクトの頂点が存在するラインである。尚、この処理で生成したレベル処理後のＤＬ情報（以降、ソート済ＤＬ）はＲＡＭ１２２に格納される。
【００４３】
レンダリング処理部３０２は、ステップＳ４０３で生成した各エッジの情報（ページ内の全てのラインについてのエッジデータ）を基にページ内の全てのラインについてのスパンを生成する。レンダリング処理部３０２は、スキャンライン＝５００におけるソート済のエッジリスト（図７（ｂ））を先頭から参照する。まずスキャンライン開始点（Ｘ座標＝０）に最も近いエッジはエッジ（ＩＤ＝１）であることがわかる。そのため、１番目のスパンの長さ（ピクセル長）はエッジ（ＩＤ＝１）のＸ座標に等しく、スパンＩＤ＝１のスパンデータには、ピクセル長＝２００が設定される。またこのスパンにはオブジェクトが含まれないため、フィル＝背面、オブジェクト数＝０が設定される。そしてそれ以前にスパンは登場しないため、前のスパンＩＤ＝ｎｕｌｌ、次のスパンＩＤ＝２が設定される。そしてレンダリング処理部３０２は、エッジリストを再び参照し、エッジ（ＩＤ＝１）の次のエッジＩＤを検索する。するとエッジ（ＩＤ＝２）が見つかる。レンダリング処理部３０２は、エッジ（ＩＤ＝２）のＸ座標とエッジ（ＩＤ＝１）の２エッジ間の差分を計算し、その差分「１」を次のスパン（ＩＤ＝２）のピクセル長に設定する。またこのエッジ間において、エッジ（ＩＤ＝１）のエッジ向きがｕｐであるため、エッジ（ＩＤ＝１）のフィルが、スパン（ＩＤ＝２）に設定され、オブジェクト数＝１となる。そして前のスパンＩＤ＝１、次のスパンＩＤ＝３が設定される。またレンダリング処理部３０２は、このエッジ（ＩＤ＝２）のレベルＩＤが１であり、のエッジ向きがｄｏｗｎであるため、以降のスパンではエッジ（ＩＤ＝１）のフィルは参照されない。以降、同様の処理を繰り返し、スキャンライン終端である最終スパン（ＩＤ＝Ｓ）まで処理する。また、スキャンライン＝５００では、１つのスパン内に重複するエッジがなかったため、全てのスパンのオブジェクト数＝１となる。またレンダリング処理部３０２は、２つのエッジ間のＸ座標の差分が０であるときはスパンを生成しない。エッジデータのフィルにＲＯＰ種の情報が関連付けられている場合、スパンデータのフィルにもその情報が同様に関連付けられる。
【００４４】
ステップＳ４０５において、レンダリング処理部３０２は、ＲＡＭ１２２からソート済ＤＬ（すなわち、ページ内の全てのラインについてのスパンのデータ）を取得し、圧縮器１２５に送り、圧縮処理を行う。ページ全体（すなわち複数のライン分）のスパンを生成しているため、圧縮しないと、ＲＩＰ１４１へのデータを行う際に転送帯域を圧迫してしまうからである。
【００４５】
ステップＳ４０６において、レンダリング処理部３０２は、圧縮したソート済ＤＬをイメージバスＩ／Ｆ１４０を介して、ＲＩＰ１４１（ＲＩＰ１４１のＲＡＭ）に転送する。尚、ここでは転送処理についてレンダリング処理部３０２が明示的に転送する例について述べた。しかし、レンダリング処理部３０２はＲＡＭ１２２（記憶部）にソート済ＤＬを格納に留め、後述するピクセル処理部３１３がイメージバスＩ／Ｆ１４０を介してＲＡＭ１２２にアクセスし情報を取得する、でも良い。
【００４６】
ステップＳ４０７において、ピクセル処理部３１３は、転送されたソート済ＤＬを伸張器２０２に送り、伸張処理を行う。
【００４７】
ステップＳ４０８において、ピクセル処理部３１３は、拡大、縮小、回転処理やグラデーション等の色の計算処理を行う。
【００４８】
ステップＳ４０９において、合成処理部３１４は、スパンデータのフィル情報にしたがってＲＯＰやαブレンド等の合成処理を行い、スパン（ピクセル）の色値を決め、ページのラスタ画像を生成する。例えば、合成処理部３１４は、スパンデータのフィル情報にＲＯＰによる合成命令が関連付けられている場合に、そのＲＯＰに対応するＲＯＰ演算回路に、複数のオブジェクト（フィル）に指定された色値の合成処理を実行させる。フィル情報にＲＯＰによる合成命令が関連付けられていない場合には、合成処理部３１４は、オブジェクト（フィル）に指定された色値を上書きする処理を、上書き用（ＲＯＰ２のＣＯＰＹＰＥＮ）の演算回路に実行させる。またスパンデータのフィル情報に半透明を示すα値が含まれている場合に、合成処理部３１４は、複数のオブジェクト（フィル）に指定された色値のαブレンド演算処理を、αブレンド演算回路に実行させる。このようにして、複数オブジェクトが重なっているスパン（エッジ間の区間）の画素の最終的な色値を、演算回路を用いた合成処理によって算出する。
【００４９】
ステップＳ４１０において、合成処理部３１４は、生成したラスタ画像を、プリンタ画像処理部１４２、デバイスＩ／Ｆ１５０を介してプリンタエンジン１５１へ送り、プリンタエンジン１５１は印刷処理を行う。
【００５０】
本実施形態によれば、エッジソート処理を、専用のハードウェア回路を用いることなく、エッジソート処理プログラムに従ってＣＰＵ１２１（いわゆる汎用プロセッサ）による逐次処理によって行う。そのため、処理すべきエッジ数に依存しない回路規模（すなわちＣＰＵ１２１がもともと備えている演算装置の回路規模）でエッジソート処理を実行することができる。さらに、１スキャンライン上に大量のエッジが存在し、それらが交差するデータであっても、キャッシュメモリサイズ（メモリ容量）が比較的大きいＣＰＵ１２１を用いることで、キャッシュミスヒットが抑えられて、高速にエッジソート処理を行うことができる。また、本実施形態では、レベル処理後のＤＬに対して圧縮してＲＩＰ１４１に転送したが、エッジ処理後のＤＬに対して圧縮してＲＩＰ１４１に転送しても良い。その場合、ＲＩＰ１４１では、転送されたＤＬに対して、レベル処理部３１２がレベル処理から実施する。
【００５１】
＜実施例２＞
実施例１は、１スキャンライン上に大量のエッジがあるデータに対して効果的だが、そうではないデータに対しては、圧縮、転送、伸張のオーバヘッドによりパフォーマンスが劣化するケースが存在する。そのため、実施例２では、実施例１に加え、事前にＰＤＬデータを解析し、そのＰＤＬデータの内容に応じて適切なレンダリング処理を行う形態について説明する。
【００５２】
システム構成、ソフトウェア構成は実施例１と同様のため、割愛する。
【００５３】
図１０は、入稿されたＰＤＬを解析し、その結果に応じたＲＩＰ形態でレンダリングするまでの流れを示すフローチャート図である。尚、図１０のフローチャートに記載のステップＳ１００１〜Ｓ１００７のプログラムは、画像形成装置１１０の起動時にＲＡＭ１２２、もしくはＲＡＭ２０３に展開され、ＣＰＵ１２１、サブＣＰＵ２１１〜２４１によって実行されるものである。
【００５４】
ステップＳ１００２において、ＰＤＬデータ解析部３２１は、受信したＰＤＬ（ステップＳ１００１）のＰＤＬコマンドを解釈し、スキャンライン単位（またはバンド単位）に存在するエッジ数を算出する。また、ＰＤＬデータ解析部３２１は、ページに含まれる、背面を必要とする１または複数のグラフィック（ＲＯＰやαブレンドによる合成演算が行われるグラフィックオブジェクト）の描画総面積を算出する。またＰＤＬデータ解析部３２１は、ページに含まれる、透過付の１または複数のイメージ（α値を有するイメージオブジェクト）の総面積を算出する。ＰＤＬデータ解析部３２１は、閾値を超えるエッジ数を有するラインがページに含まれるか否かを判定し、含まれる場合にエッジ過多であると判定する。そうでない場合にはエッジ過多でないと判定する。またＰＤＬデータ解析部３２１は、グラフィックの描画総面積とイメージの総面積との和が閾値を超えるかを判定し、超える場合に透過過多であると判定し、そうでない場合には透過過多でないと判定する。尚、この閾値はＲＩＰ１４１の性能によって決定される固定値である。より具体的には、エッジ数は、ＲＩＰ１４１にてエッジを処理するＣＰＵのＣＰＵキャッシュサイズとエッジ数を比較し、キャッシュミスヒットが発生しないエッジ数を閾値とする。面積は、ＲＩＰ１４１のピクセル処理、及び合成透過処理で使用されるＨＷ性能において、１ピクセルあたりのピクセル演算に必要なサイクル数から、スループット達成可能なピクセル上限値を算出して閾値とする。また、複数の画像形成装置が接続される環境において、実際にレンダリング処理を行う画像形成装置が別となる場合は、接続されている全ての画像形成装置のうち、最も高速な画像形成装置のＲＩＰ性能に合わせて閾値を決定しても良い。
【００５５】
ステップＳ１００３において、ステップＳ１００２の結果、エッジ過多と判断される場合はステップＳ１００４へ、過多でないと判断される場合はステップＳ１００７へ遷移する。
【００５６】
ステップＳ１００４において、ステップＳ１００２の結果、透過過多と判断される場合はステップＳ１００５へ、過多でないと判断される場合はステップＳ１００６へ遷移する。
【００５７】
ステップＳ１００５は図４のフローと同様であるため、説明を割愛する。
【００５８】
ステップＳ１００６は、図１１のフローチャートの処理を行う。図１１のフローチャートに記載のステップＳ１１０１〜Ｓ１１０２のプログラムは、画像形成装置１１０の起動時にＲＡＭ１２２に展開され、ＣＰＵ１２１によって実行されるものである。また、図１１のステップＳ４０２からステップＳ４０４までは、図４を用いて説明済のため、割愛する。
【００５９】
ステップＳ１１０１において、レンダリング処理部３０２は、ＲＡＭ１２２からソート済ＤＬを取得し、拡大、縮小、回転処理やグラデーション等の色の計算処理を行う。
【００６０】
ステップＳ１１０２において、レンダリング処理部３０２は、ＲＯＰや透過処理等の合成処理を行い、スパン（ピクセル）の色値を決める。
【００６１】
ステップＳ１００７は、図１２のフローチャートの処理を行う。図１２のフローチャートに記載のステップＳ１２０１〜Ｓ１２０３のプログラムは、画像形成装置１１０の起動時にＲＡＭ１２２、もしくはＲＡＭ２０３に展開され、ＣＰＵ１２１、もしくはサブＣＰＵ２１１からサブＣＰＵ２４１によって実行されるものである。また、図１２のステップＳ４０２、ステップＳ４０８、及びステップＳ４０９は、図４を用いて説明済のため、割愛する。
【００６２】
ステップＳ１２０１において、中間データ生成部３０１は、ステップＳ４０２で生成したＲＡＭ１２２に格納されているＤＬ情報を、イメージバスＩ／Ｆ  １４０を介してＲＩＰ１４１に転送する。
【００６３】
ステップＳ１２０２において、エッジ処理部３１１は、転送されたＤＬをＲＡＭ２０３から取得して、スキャンライン単位で走査し、Ｘ方向にエッジをソートするエッジソート処理を行う。エッジソート処理自体は、実施例１で説明済のため、詳細は割愛する。実施例２では、事前にステップＳ１００２にてスキャンライン単位でエッジ数を解析したうえでステップＳ１２０２の処理が行われるため、エッジロード時に、ＣＰＵキャッシュが小さいサブＣＰＵでもキャッシュミスヒットの発生が抑えられる。
【００６４】
ステップＳ１２０３において、レベル処理部３１２は、ステップＳ１２０２で作成した情報を基にスパンを生成し、その色値を決定するためのレベル処理を行う。レベル処理自体は実施例１で説明済のため、詳細は割愛する。
【００６５】
以上のように、Ｓ１００５、Ｓ１００６、Ｓ１００７の何れかの処理が完了すると、Ｓ４１０と同様にラスタ画像の印刷処理が行われる。
【００６６】
本実施形態によれば、事前にＰＤＬデータを解析し、データに応じたＲＩＰ形態で処理を行うことが可能となるため、システムが持つＲＩＰ性能を最大限引き出すことが出来る。
【００６７】
本実施形態では、ステップＳ１００４にて透過過多であるデータに対して、ステップＳ１００６にてソフトＲＩＰする例について説明したが、ステップＳ１００５の実施例１のＲＩＰ形態でも良い。
【００６８】
本実施形態では、ステップＳ１２０１にてＤＬ情報を非圧縮でＲＩＰ１４１へ転送する例について説明したが、ＤＬ圧縮をしてから転送するでも良い。
【００６９】
＜実施例３＞
昨今、情報処理装置から一意に画像形成装置を指定して印刷を行うのではなく、所望の画像形成装置から印刷を行える「リモート印刷」が実施されている。「リモート印刷」は、情報処理装置から入稿された印刷ジョブを印刷ジョブ送信装置上で一時的に蓄積する。「リモート印刷」は、所望の画像形成装置上でユーザ認証され、ユーザが印刷ジョブを指定して印刷実行すると、印刷ジョブ送信装置から印刷ジョブが所望の画像形成装置に送信され印刷物を出力する印刷システムである。
【００７０】
印刷ジョブが印刷処理に時間のかかる（＝スループットが出ない）データである場合に、ユーザが画像形成装置の前で待つことがないよう、送信装置上で一時的に蓄積されている状態で先行してレンダリングを行う技術がある。しかし、スループットを出すために全ての印刷ジョブをレンダリングすると、送信装置のメモリ逼迫や転送サイズが増大する課題がある。また、スループットが出ない処理は印刷ジョブの入稿からレンダリングまでの一部の処理であり、事前にその処理を行うことで全てのデータをレンダリングすることなく、印刷データのスループットを達成することが出来る。
【００７１】
本実施形態では、事前にＰＤＬデータを解析することにより、入稿された印刷データをどこまで処理するかを決定し、その処理結果に応じた中間データを送信装置上に蓄積する形態について説明する。これにより、印刷時にスループットが出る最小の構成で、送信装置上に印刷ジョブと先行処理情報を蓄積することが出来る。また、本実施形態では、説明を簡略化するため送信装置＝画像形成装置として説明するが、ネットワークＩ／Ｆ１２０を介した別の画像形成装置や情報機器を送信装置とみなしても良い。
【００７２】
システム構成、ソフトウェア構成は実施例１と同様のため、割愛する。
【００７３】
図１３は、入稿されたＰＤＬを解析し、その結果に応じた先行処理形態で情報を格納するまでの流れを示すフローチャート図である。尚、図１３のフローチャートに記載のステップＳ１３０１〜Ｓ１３０７のプログラムは、画像形成装置１１０の起動時にＲＡＭ１２２に展開され、ＣＰＵ１２１によって実行されるものである。
【００７４】
ステップＳ１３０１において、ＰＤＬデータ解析部３２１は、受信したＰＤＬ（ステップＳ１００１）のＰＤＬコマンドを解釈し、ステップＳ１００２で説明したエッジ数、面積に加え、ページ内に含まれる細切れイメージのオブジェクト数を算出する。細切れイメージとは、幅高が閾値以内の小さな圧縮イメージのことを指す。これが大量にある場合、伸張のオーバヘッドによりスループット達成が困難になるデータがあるため、あらかじめ伸張しておく必要がある（ステップＳ１３０７）。ＰＤＬデータ解析部３２１は、細切れイメージの閾値と比較し、閾値を超える場合は過多である、と判断する。
【００７５】
尚、この閾値は画像形成装置のイメージ伸張性能によって決定される固定値である。より具体的には、本実施形態では、イメージ伸張は伸張器２０２を利用して行うので、幅高の閾値のイメージの伸張コストからスループット達成可能な細切れイメージの個数を算出し閾値とする。また、複数の画像形成装置が接続される環境において、実際にレンダリング処理を行う画像形成装置が別となる場合は、接続されている全ての画像形成装置のうち、最も高速な画像形成装置のイメージ伸張性能に合わせて閾値を決定しても良い。
【００７６】
ステップＳ１３０２において、ステップＳ１３０１の結果、エッジ過多と判断される場合はステップＳ１３０３へ、過多でないと判断される場合はステップＳ１３０４へ遷移する。
【００７７】
ステップＳ１３０３において、ステップＳ１３０１の結果、透過過多と判断される場合はステップＳ１３０５へ、過多でないと判断される場合はステップＳ１３０６へ遷移する。
【００７８】
ステップＳ１３０４において、ステップＳ１３０１の結果、細切れイメージ過多と判断される場合はステップＳ１３０７へ、過多でないと判断される場合は、その印刷ジョブは先行処理がなくともスループット達成可能なデータと判断し、本フローを終了する。
【００７９】
ステップＳ１３０５において、ＰＤＬデータ解析部３２１は、先行処理情報をソート済ＤＬとして格納する。具体的には、ＰＤＬデータ解析部３２１は、受信したＰＤＬに対し、図４で説明したステップＳ４０２からステップＳ４０５までの処理を行い、生成したソート済ＤＬをＲＡＭ１２２、もしくは記憶装置１２４に入稿されたＰＤＬデータと紐づけて格納する。この格納されたソート済ＤＬは、印刷指示をユーザから受け付けたときに処理される。
【００８０】
ステップＳ１３０６において、ＰＤＬデータ解析部３２１は、先行処理情報をラスタ画像として格納する。具体的には、ＰＤＬデータ解析部３２１は、受信したＰＤＬに対し、図１１で説明したステップＳ４０２からステップＳ１１０２までの処理を行い、生成したラスタ画像をＲＡＭ１２２、もしくは記憶装置１２４に入稿されたＰＤＬデータと紐づけて格納する。この格納されたラスタ画像は、印刷指示をユーザから受け付けたときに処理される。
【００８１】
ステップＳ１３０７において、ＰＤＬデータ解析部３２１は、先行処理情報をＤＬ情報として格納する。具体的には、ＰＤＬデータ解析部３２１は、受信したＰＤＬに対し、図１２で説明したステップＳ４０２の処理を行い、生成したＤＬ情報をＲＡＭ１２２、もしくは記憶装置１２４に入稿されたＰＤＬデータと紐づけて格納する。このＤＬにおいて圧縮イメージは伸張された状態となっている。この格納されたソート済ＤＬは、印刷指示をユーザから受け付けたときに処理される。
【００８２】
図１４は、印刷指示を受けた画像形成装置が送信装置からＰＤＬと先行処理情報を取得し、取得した先行処理情報に応じた処理形態でレンダリングするまでの流れを示すフローチャート図である。尚、図１４のフローチャートに記載のステップＳ１４０１〜Ｓ１４０４のプログラムは、画像形成装置１１０の起動時にＲＡＭ１２２に展開され、ＣＰＵ１２１によって実行されるものである。
【００８３】
ステップＳ１４０１において、中間データ生成部３０１は、操作部Ｉ／Ｆ１３０を介して操作部１３１より、ユーザから印刷指示があったかを検知する。印刷指示があった場合、中間データ生成部３０１は、記憶装置１２４に格納される指定されたＰＤＬデータを取得し、印刷指示がなかった場合は、ステップＳ１４０１の処理を繰り返す。
【００８４】
ステップＳ１４０２において、中間データ生成部３０１は、取得したＰＤＬに紐づく先行処理情報の有無を確認する。ある場合はステップＳ１４０３へ、ない場合は図１２のステップＳ４０２へ遷移する。
【００８５】
ステップＳ１４０３において、中間データ生成部３０１は、取得したＰＤＬに紐づく先行処理情報の種別がラスタ画像か判別する。ラスタ画像である場合、レンダリング処理は終了しているため本フローを終了し、ラスタ画像でない場合、ステップＳ１４０４へ遷移する。
【００８６】
ステップＳ１４０４において、中間データ生成部３０１は、取得したＰＤＬに紐づく先行処理情報の種別がＤＬか判別する。ＤＬである場合、図１２のステップＳ１２０２へ遷移し、ＤＬでない場合（＝ソート済ＤＬ）、図４のステップＳ４０７へ遷移する。
【００８７】
本実施形態によれば、事前にＰＤＬデータを解析することで行う先行処理を制御し、印刷時のスループット達成を維持しながら、最小の構成となるデータ形式で先行処理情報を蓄積することが出来る。
【図１】
2019077133.tif 000003
【図２】
2019077133.tif 000004
【図３】
2019077133.tif 000005
【図４】
2019077133.tif 000006
【図５】
2019077133.tif 000007
【図６】
2019077133.tif 000008
【図７】
2019077133.tif 000009
【図８】
2019077133.tif 000010
【図９】
2019077133.tif 000011
【図１０】
2019077133.tif 000012
【図１１】
2019077133.tif 000013
【図１２】
2019077133.tif 000014
【図１３】
2019077133.tif 000015
【図１４】
2019077133.tif 000016