(57)【要約】      （修正有）【課題】無駄な処理工程を省略して印刷スループットを向上させる画像形成装置及び画像形成装置システムの提供。【解決手段】印刷データをイメージデータを展開するための中間コードに変換して記憶し，バンド内の中間コードから求められる展開に要する負荷評価値が閾値を超えたときに，そのバンドの中間コードをイメージデータに事前展開して記憶し，中間コードを展開しながら生成または展開済みのイメージデータを，印刷エンジンに供給する。そして，事前展開が発生した後は，直接展開して記憶する直接展開処理を行う。すでに事前展開が発生した場合は，その後の印刷プレーンにおいて印刷データから直接イメージデータを生成する直接展開処理を行うので，事前展開が必要になる印刷データに対して，中間コードの生成と負荷評価値の評価処理を省略することができ，印刷スループットを向上させることができる。【選択図】    図６
2006205462.tif 000002
【特許請求の範囲】
【請求項１】
ホストコンピュータから供給される印刷データに基づいて画素毎のイメージデータに展開して印刷エンジンに供給するコントローラを有する画像形成装置において，
前記コントローラは，
前記印刷データを前記イメージデータを展開するための中間コードに変換して記憶し，
所定の印刷単位内の中間コードから求められる前記展開に要する負荷評価値が所定の閾値を超えたときに，当該印刷単位の中間コードを前記イメージデータに事前展開して記憶し，
前記印刷エンジンの動作に同期して，前記中間コードを展開しながら生成したイメージデータまたは前記展開済みのイメージデータを，前記印刷エンジンに供給し，
前記事前展開が発生した後は，前記印刷データから中間コードを生成することなく前記イメージデータに直接展開して記憶する直接展開処理を行うことを特徴とする画像形成装置。
【請求項２】
請求項１において，
前記コントローラによる直接展開処理は，前記事前展開が発生した後に同じ印刷ジョブの後続する印刷プレーンにおいて行われることを特徴とする画像形成装置。
【請求項３】
請求項１において，
前記コントローラによる直接展開処理は，前記ホストコンピュータから供給される印刷データに当該事前展開が発生した印刷プレーンと類似する旨の情報が含まれている場合に，当該類似印刷プレーンにおいて行われることを特徴とする画像形成装置。
【請求項４】
請求項３において，
前記コントローラによる直接展開処理は，前記類似印刷プレーン内の前記事前展開が発生した印刷単位位置に対応する印刷単位で行われることを特徴とする画像形成装置。
【請求項５】
ホストコンピュータから供給される印刷データに基づいて画素毎のイメージデータに展開して印刷エンジンに供給するコントローラを有する画像形成装置において，
前記コントローラは，
前記印刷データを前記イメージデータを展開するための中間コードに変換して記憶し，
所定の印刷単位内の中間コードから求められる前記展開に要する負荷評価値が所定の閾値を超えたときに，当該印刷単位の中間コードを前記イメージデータに事前展開して記憶し，
前記印刷エンジンの動作に同期して，前記中間コードを展開しながら生成したイメージデータまたは前記展開済みのイメージデータを，前記印刷エンジンに供給し，
前記事前展開が発生した時は，当該事前展開の発生を前記ホストコンピュータに通知し，当該ホストコンピュータから供給される印刷データに前記事前展開が発生した印刷プレーンと類似する旨の情報が含まれている場合に，当該類似印刷プレーンにおいて，前記印刷データから中間コードを生成することなく前記イメージデータに直接展開して記憶する直接展開処理を行うことを特徴とする画像形成装置。
【請求項６】
請求項５において，
前記コントローラは，前記事前展開が発生した時に，当該事前展開の発生を該当する印刷単位の位置情報と共に前記ホストコンピュータに通知し，当該ホストコンピュータから供給される印刷データに含まれる前記類似印刷プレーンと直接展開対象の印刷単位の位置情報とに応じて，当該直接展開対象の印刷単位において前記直接展開処理を行うことを特徴とする画像形成装置。
【請求項７】
ホストコンピュータに印刷データを生成させるドライバプログラムと，前記ホストコンピュータから供給される印刷データに基づいて画素毎のイメージデータに展開して印刷エンジンに供給するコントローラを有する画像形成装置とを有する画像形成システムにおいて，
前記コントローラは，
前記印刷データを前記イメージデータを展開するための中間コードに変換して記憶し，
所定の印刷単位内の中間コードから求められる前記展開に要する負荷評価値が所定の閾値を超えたときに，当該印刷単位の中間コードを前記イメージデータに事前展開して記憶し，
前記印刷エンジンの動作に同期して，前記中間コードを展開しながら生成したイメージデータまたは前記展開済みのイメージデータを，前記印刷エンジンに供給し，
前記事前展開が発生した時は，当該事前展開の発生を前記ホストコンピュータに通知し，当該ホストコンピュータから供給される印刷データに前記事前展開が発生した印刷プレーンと類似する旨の類似情報が含まれている場合に，当該類似印刷プレーンにおいて，前記印刷データから中間コードを生成することなく前記イメージデータに直接展開して記憶する直接展開処理を行い，
前記ドライバプログラムは，前記ホストコンピュータに，前記事前展開の発生通知に応答して，当該事前展開発生対象の印刷プレーンの画像と類似する画像を有する印刷プレーンに対して，その印刷データに前記類似情報を含ませて供給させることを特徴とする画像形成装置。
【請求項８】
請求項７において，
前記コントローラは，前記事前展開が発生した時に，当該事前展開の発生を該当する印刷単位の位置情報と共に前記ホストコンピュータに通知し，当該ホストコンピュータから供給される印刷データに含まれる前記類似印刷プレーンと直接展開対象の印刷単位の位置情報とに応じて，当該直接展開対象の印刷単位において前記直接展開処理を行い，
前記ドライバプログラムは，前記ホストコンピュータに，前記印刷データに前記類似情報と共に前記位置情報を含ませて供給させることを特徴とする画像形成装置。
【請求項９】
印刷データから変換された中間コードを画像形成装置に供給する画像形成装置のドライバプログラムであって，前記画像形成装置では，前記中間コードを画素毎のイメージデータに展開させて印刷エンジンに供給させ，
前記ドライバプログラムは，コンピュータに，
前記印刷データを前記イメージデータを展開するための中間コードに変換させる手順と，
所定の印刷単位内の中間コードから求められる前記展開に要する負荷評価値が所定の閾値を超えたときに，当該印刷単位の中間コードを前記イメージデータに事前展開させる手順と，
前記変化した中間コードまたは展開済みのイメージデータを前記画像形成装置に供給させる手順と，
前記事前展開が発生した後は，当該事前展開が発生した印刷プレーンと同様の画像を有する後続する印刷プレーンにおいて，前記印刷データから中間コードを生成することなく前記イメージデータに直接展開して記憶する直接展開処理手順とを行わせることを特徴とするドライバプログラム。
【請求項１０】
請求項９において，
前記ドライバプログラムは，コンピュータに，前記事前展開が発生した印刷プレーン内のバンド位置に対応するバンドにおいて，前記直接展開処理手順を行わせることを特徴とするドライバプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，印刷スループットを向上させた画像形成装置及び画像形成装置システムに関し，特に，印刷データから中間コードを生成し，その後印刷エンジンに同期して画素毎のイメージデータに展開しながら印刷エンジンにイメージデータを供給する画像形成装置及び画像形成装置システムに関する。
【背景技術】
【０００２】
プリンタなどの画像形成装置のコントローラは，ホストコンピュータから供給された印刷データを，一旦中間コードに変換し保存する。そして，コントローラは，１印刷プレーン分の中間コードが形成されるタイミングで印刷エンジンを起動し，印刷エンジンの動作に同期して中間コードをイメージデータに展開しながら当該イメージデータを印刷エンジンに供給する。このように印刷エンジンの動作に同期して中間コードをイメージデータに展開することで，イメージデータへの展開時間を印刷エンジンの動作時間にダブらせて，印刷スループットを向上させることができる。
【０００３】
ここで，イメージデータとは画素毎の画像再生データであり，印刷エンジンの形態に応じて，画素にドットを形成するか否かの情報であったり，画素のドット面積を示す情報であったりする。また，中間コードは，画像形成装置に固有のまたは汎用的なコードであり，ホストコンピュータが生成する印刷データを解釈して得られる描画コマンドに基づいて形成されるコードであり，通常の画像であれば印刷エンジンの動作速度に対応できる程度にイメージデータへの展開を可能にするコードである。つまり，イメージデータへの展開を短時間で可能にする中間コードである。
【０００４】
複雑で大量の画像が含まれている場合は，たとえ中間コードであっても，中間コードからイメージデータへの展開が印刷エンジンの動作速度に追従することができず，いわゆるオーバーランエラーを起こすことがある。このオーバーランエラーを回避する方法として，中間コードをイメージデータに変換する処理時間を事前に予想し，変換処理時間が所定の閾値を超える場合は中間コードを事前にイメージデータに展開しておき，印刷エンジンには展開済みのイメージデータを供給することが行われる。このように，印刷データから中間コードを生成する段階で，事前にイメージデータに展開することで，印刷エンジンが起動した後でオーバーランエラーが発生することを回避することができる。
【０００５】
印刷エンジンへのイメージデータの展開は，１つの印刷プレーンを複数に分割したバンド単位で制御される。したがって，上記の事前展開の必要性を評価する場合，１バンド内の中間コードについて展開処理時間に対応する負荷評価値が求められ，その負荷評価値が所定の閾値を超えるか否かの判定が行われる。オーバーランエラーの発生を極力避けるために，上記の閾値は低めに設定されている。
【０００６】
以上のような場合であっても，あるバンドにおいてオーバーランエラーが発生する確率はゼロではなく，きわめてまれではあるがかかるオーバーランエラーが発生する場合がある。そのような場合，一旦印刷用紙を排紙し，オーバーランエラーが発生したバンドの中間コードをイメージデータに事前展開し，再度印刷処理を行うことが行われる。しかし，オーバーランエラーが発生する画像は多数のバンドさらに多数のプレーンに及ぶことがある。そこで，オーバーランエラーが発生すると，そのバンドの中間コードから演算した負荷評価値を，新たな閾値に設定し，その後のバンドに対してオーバーランエラーが発生することを未然に防止することが提案されている。例えば，以下の特許文献１に示されるとおりである。
【０００７】
また，事前展開の必要性を評価するためには，１バンド内の中間コードについて負荷評価値を求めて，それが閾値を超えるか否かの判定を行う必要がある。この負荷評価値の演算や閾値との比較判定は，それ自体処理工数を発生するので，オーバーランエラーが発生するまでは，かかる事前展開の判定を行わないようにして，少なくともオーバーランエラーが発生するまでの間は印刷スループットを高くすることが提案されている。例えば，以下の特許文献２に示されるとおりである。
【特許文献１】特開２００１−１５７６号公報
【特許文献２】特開平９−２５８９３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
近年におけるプリンタなどの画像形成装置は，より高速の印刷エンジンとより低コストのコントローラで構成することが求められている。したがって，印刷スループットを向上させるためには，コントローラにおける種々の制御処理工程をできるだけ削減する必要がある。
【０００９】
前述した印刷データから中間コードを生成し，必要に応じてイメージデータに事前展開する方法は，中間コードへの変換とメモリへの格納，中間コードに対する負荷評価値の演算と判定などの処理を伴う。この処理は，あらかじめイメージデータへの事前展開が必要であることが判明している場合は，無駄な処理になる。画像形成の対象となるドキュメントには，例えば同じ背景画像が含まれているページが複数ページ連続して含まれることがある。そのような場合，先頭のページで事前展開が発生すると，後続する同じ背景画像を有するページでも事前展開が発生することがある。そのような場合，後続するページにおいて，中間コードを生成し，負荷評価値を評価し，イメージデータの事前展開をすると，中間コードの生成と負荷評価値の評価とが無駄な処理時間となる。
【００１０】
そこで，本発明の目的は，無駄な処理工程を省略して印刷スループットを向上させることができる画像形成装置及び画像形成装置システムを提供することにある。
【課題を解決するための手段】
【００１１】
上記の目的を達成するために，本発明の第１の側面によれば，ホストコンピュータから供給される印刷データに基づいて画素毎のイメージデータに展開して印刷エンジンに供給するコントローラを有する画像形成装置において，
前記コントローラは，
前記印刷データを前記イメージデータを展開するための中間コードに変換して記憶し，
所定の印刷単位内の中間コードから求められる前記展開に要する負荷評価値が所定の閾値を超えたときに，当該印刷単位の中間コードを前記イメージデータに事前展開して記憶し，
前記印刷エンジンの動作に同期して，前記中間コードを展開しながら生成したイメージデータまたは前記展開済みのイメージデータを，前記印刷エンジンに供給し，
前記事前展開が発生した後は，前記印刷データから中間コードを生成することなく前記イメージデータに直接展開して記憶する直接展開処理を行うことを特徴とする。
【００１２】
上記の第１の側面によれば，すでに事前展開が発生した場合は，その後の印刷プレーンにおいて印刷データから中間コードを生成することなく直接イメージデータを生成する直接展開処理を行うので，事前展開が必要になる印刷データに対して，中間コードの生成と負荷評価値の評価処理を省略することができ，印刷スループットを向上させることができる。
【００１３】
上記の目的を達成するために，本発明の第２の側面によれば，ホストコンピュータから供給される印刷データに基づいて画素毎のイメージデータに展開して印刷エンジンに供給するコントローラを有する画像形成装置において，
前記コントローラは，
前記印刷データを前記イメージデータを展開するための中間コードに変換して記憶し，
所定の印刷単位内の中間コードから求められる前記展開に要する負荷評価値が所定の閾値を超えたときに，当該印刷単位の中間コードを前記イメージデータに事前展開して記憶し，
前記印刷エンジンの動作に同期して，前記中間コードを展開しながら生成したイメージデータまたは前記展開済みのイメージデータを，前記印刷エンジンに供給し，
前記事前展開が発生した時は，当該事前展開の発生を前記ホストコンピュータに通知し，当該ホストコンピュータから供給される印刷データに前記事前展開が発生した印刷プレーンと類似する旨の情報が含まれている場合に，当該類似印刷プレーンにおいて，前記印刷データから中間コードを生成することなく前記イメージデータに直接展開して記憶する直接展開処理を行うことを特徴とする。
【００１４】
上記の第２の側面によれば，ホストコンピュータから事前展開が発生した印刷プレーンと類似する旨の情報が供給されるので，それに応じてその類似印刷プレーンにおいて，印刷データから中間コードを生成することなく直接イメージデータを生成する直接展開処理を行うので，中間コードの生成と負荷評価値の評価処理を省略することができ，印刷スループットを向上させることができる。
【００１５】
上記の目的を達成するために，本発明の第３の側面によれば，印刷データから変換された中間コードを画像形成装置に供給する画像形成装置のドライバプログラムであって，前記画像形成装置では，前記中間コードを画素毎のイメージデータに展開させて印刷エンジンに供給させ，
前記ドライバプログラムは，コンピュータに，
前記印刷データを前記イメージデータを展開するための中間コードに変換させる手順と，
所定の印刷単位内の中間コードから求められる前記展開に要する負荷評価値が所定の閾値を超えたときに，当該印刷単位の中間コードを前記イメージデータに事前展開させる手順と，
前記変化した中間コードまたは展開済みのイメージデータを前記画像形成装置に供給させる手順と，
前記事前展開が発生した後は，当該事前展開が発生した印刷プレーンと同様の画像を有する後続する印刷プレーンにおいて，前記印刷データから中間コードを生成することなく前記イメージデータに直接展開して記憶する直接展開処理手順とを行わせることを特徴とする。
【００１６】
上記の第３の側面によれば，ドライバプログラムの処理スループットを向上させることができる。
【発明を実施するための最良の形態】
【００１７】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１８】
図１は，本実施の形態における画像処理装置システムの構成図である。ホストコンピュータ１０には，画像を作成するアプリケーションプログラム１０２と，アプリケーションプログラム１０２により生成されたアプリケーション印刷データ１０４を，画像形成装置であるプリンタ装置１４に対応するドライバ印刷データ１２に変換して当該プリンタ装置１４に送信するドライバプログラム１０６とがインストールされている。
【００１９】
プリンタ装置１４は，ホストコンピュータ１０からドライバ印刷データ１２を受信し，そのドライバ印刷データ１２から画素に展開したイメージデータ１８を生成するコントローラ１６と，コントローラ１６から供給されるイメージデータ１８に応じて画像を形成する印刷エンジン２０とを有する。このイメージデータ１８は，印刷エンジン２０の形態に応じて種々のデータを取りうる。例えば，レーザープリンタの場合は，各画素内に形成されるドット面積のデータである。また，インクジェットプリンタの場合は，各画素にドットを形成するか否かを示すデータである。いずれの印刷エンジンであっても，コントローラ１６は，ホストコンピュータ１０から供給された印刷データ１２から画素に展開されたイメージデータ１８を生成し，印刷エンジン２０の印刷動作に同期してそのイメージデータ１８を供給する。
【００２０】
コントローラ１６は，ホストコンピュータ１０と通信するインターフェース３０と，コントロールプログラムが格納されたプログラムメモリ３４と，当該コントロールプログラムを実行して，印刷データ１２から中間コードを生成し，更に，中間コードから画素に展開されたイメージデータを生成し，場合によっては印刷データ１２から直接イメージデータを生成するＣＰＵ３２とを有する。また，コントローラ１６は，イメージデータを展開する展開ユニット３６と，中間コードを格納する中間コードバッファ４０と，事前に展開したイメージデータなどを格納するワークメモリ３８と，中間コードに対応する負荷係数や，事前展開の必要性を評価するための負荷評価値の演算式や，事前展開の必要性を判定する閾値などを格納する不揮発性メモリ４２とを有する。更に，コントローラ１６は，イメージデータ１８を印刷エンジン２０に出力する出力バッファ４４を有する。コントローラ１６の構成要素３０乃至４４は，全て内部バス４６を介して接続されている。但し，コントローラ１６の内部構成は，このような構成に限定されるものではなく，必要に応じて，プログラムメモリ３４内の機能を専用のハードウエアユニットで構成してもよいし，展開ユニット３６の機能を展開プログラムをＣＰＵ３２が実行して実現するようにしてもよい。
【００２１】
図２は，本実施の形態におけるドライバプログラムの動作フローチャート図である。ホストコンピュータ１０にインストールされているドライバプログラム１０６は，図２に示す動作手順をホストコンピュータに実行させる。まず，ドライバプログラムは，アプリケーションプログラム１０２により生成されたアプリケーション印刷データ１０４を，プリンタ装置１４に適合したドライバ印刷データ１２に変換する（Ｓ５０）。このドライバ印刷データ１２は，たとえば，ＰＤＬ（Printer Description Language）やＰｏｓｔ  Ｓｃｒｉｐｔなどの言語で記述された印刷要求データである。また，ドライバプログラム１０６は，前印刷プレーンの画像に類似する画像を有する印刷プレーンか否かをチェックし（Ｓ５２），類似する場合は（Ｓ５２のＹＥＳ），ドライバ印刷データに類似印刷プレーンである旨の情報を含ませる（Ｓ５４）。そして，印刷ジョブ内の全ての印刷プレーンについてドライバ印刷データへの変換が終了するまで（Ｓ５６），上記工程Ｓ５０〜Ｓ５４を繰り返す。そして，印刷ジョブ内の全ての印刷プレーンの印刷データ１２が生成されると，ドライバプログラム１０６は，その印刷データ１２をプリンタ装置のコントローラ１６に送信する（Ｓ５８）。
【００２２】
図３は，本実施の形態における画像形成装置のコントローラの動作を示すフローチャート図である。図３のコントローラの動作は，印刷エンジンが１回の連続動作で印刷可能な１プレーン分の印刷データを中間コードに変換する準備動作に対応する。したがって，印刷データが複数プレーンの画像の形成を要求している場合は，図３のコントローラの動作が各プレーン毎に行われる。
【００２３】
さて，コントローラ１６のＣＰＵ３２は，コントロールプログラムを実行して，以下の制御を行う。まず，ホストコンピュータ１０から供給されたドライバ印刷データ１２を受信し，そのドライバ印刷データ１２を解釈し，描画コマンドを生成する（Ｓ１０）。印刷データ１２は，例えば，写真などのイメージと，文字と，グラフィックスとを印刷するためのデータであり，イメージの場合はその大きさのデータ及び画素に展開されたイメージデータ（必要に応じて圧縮される）とからなり，文字の場合は大きさデータ及びフォントと色などのデータからなり，グラフィックスの場合は形状（矩形や円形，三角など）と大きさと色などのデータからなる。いずれの場合も，印刷プレーン上の位置データを有する。このドライバ印刷データ１２は，所定の言語で表現された印刷コマンドからなり，概略して上記３種類の画像に対応するデータからなる。この印刷データから生成される描画コマンドは，例えば，印刷場所と大きさ，そして描画すべき画像の種類およびイメージの場合は展開されたイメージデータからなる。
【００２４】
コントローラ１６のＣＰＵ３２は，通常動作時は工程Ｓ１２，Ｓ１４がそれぞれＮＯと判断されて，工程Ｓ１６以下を実行する。つまり，コントローラ１６のＣＰＵは，描画コマンドを所定の印刷領域毎（例えばバンド毎または印刷ページ毎，印刷プレーン毎）の中間コードに変換し，中間コードバッファ４０に記録する（Ｓ１６）。この中間コードは，画素に展開されたイメージデータを生成するためのコードであり，印刷エンジン２０に同期してコントローラ１６が中間コードバッファ４０から読み出しイメージデータに展開し印刷エンジンに供給することができる程度の下位言語で表現されたコードである。以下，その一例について説明する。
【００２５】
図４は，印刷画像例を示す図である。また，図５は，図４の印刷画像に対応する中間コードの例を示す図である。図４には，印刷エンジンが１回の動作で画像形成可能な印刷範囲に対応する印刷プレーンＰＬＮ内に形成される画像例が示されている。この印刷プレーンＰＬＮは複数のバンド領域ＢＮＤ１〜ＢＮＤ３に分割されている。この印刷プレーンＰＬＮは，例えば，Ａ４のレーザープリンタであればＡ４サイズに，Ａ３のレーザープリンタであればＡ３サイズに対応する。したがって，印刷用紙のサイズによっては印刷プレーンが複数ページに対応することもある。また，印刷エンジンが１回の動作で１枚の印刷用紙に画像を形成する場合は，この印刷プレーンＰＬＮは，その１ページに対応する。図４の画像例は，写真からなるイメージ５０と，所定の色の矩形ＲＣＴ０と，文字「ＡＢＣＤＥＦ」と，楕円形５２と，三角形５４と，所定の色を有し内部に文字「Ａ」が重ね書きされている長方形５６とを有する。
【００２６】
かかる印刷画像の場合，ドライバ印刷データ１２は，イメージ５０についてはその属性と位置と圧縮方式などに加えて画素に展開されたイメージデータを有し，矩形ＲＣＴ０，楕円５２，三角形５４，矩形５６などについてはその属性と位置と色のデータを有し，文字「ＡＢＣＤＥＦ」や「Ａ」についてはその属性とキャラクタの種類（フォント）と位置及び色のデータを有する。これらの印刷データ１２は，例えば，ＰＤＬやポストスクリプトなどの印刷ジョブ記述言語で記述されている。
【００２７】
そこで，このドライバ印刷データ１２から画素に展開されたイメージデータを生成するに適した中間コードが生成される。更に，画素展開を容易にするために，中間コードに変換される段階で，文字は画素に展開したイメージデータにされ，楕円５２は単位幅を有する垂直矩形Ｖ０〜Ｖ４に分解され，三角形５４は単位高さを有する水平矩形Ｌ０〜Ｌ３に分解される。また，中間コードは，印刷プレーンＰＬＮを複数に分割したバンド領域ＢＮＤ０〜ＢＮＤ３毎に生成され，それに伴い，イメージ５０はバンドＢＮＤ０に属するイメージＩＭＧ０とバンドＢＮＤ１に属するイメージＩＭＧ２とに分解され，矩形５６はバンドＢＮＤ２に属する矩形ＲＣＴ１とバンドＢＮＤ３に属する矩形ＲＣＴ２とに分解される。
【００２８】
つまり，図４に示されるとおり，バンドＢＮＤ０には，イメージＩＭＧ０と矩形ＲＣＴ０と文字を画素に展開したイメージＩＭＧ１とに対応する中間コードが生成される。バンドＢＮＤ１には，イメージＩＭＧ２と複数の垂直矩形Ｖ０〜Ｖ４に対応する中間コードが生成される。また，バンドＢＮＤ２には，複数の水平矩形Ｌ０〜Ｌ３と矩形ＲＣＴ１に対応する中間コードが生成され，バンドＢＮＤ３には矩形ＲＣＴ２とイメージＩＭＧ３に対応する中間コードが生成される。
【００２９】
図５には，図４に示した分解された画像に対応する中間コードの例が示されている。バンドＢＮＤ０には，イメージＩＭＧ０と，矩形ＲＣＴ０と，イメージＩＭＧ１に対応する中間コード６０，６１，６２が含まれる。具体的には，
（１）イメージＩＭＧ０の中間コード６０は，その属性ＩＭＧ０と，左上の点（図３中の黒点）のバンドＢＮＤ０内のローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）と，イメージデータの圧縮形式ＣＯＭＰと，具体的なイメージデータ（00110011…）とを有する。
（２）矩形ＲＣＴ０の中間コード６０は，その属性ＲＣＴ０と，矩形の模様を示すスクリーンデータＰと，色データＣＯＬと，左上点のバンドＢＮＤ０内のローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）とを有する。
（３）イメージＩＭＧ１の中間コード６２は，その属性ＩＭＧ１と，ローカル座標（Ｘ，Ｙ）と，幅及び高さ（Ｗ，Ｈ）と，文字を画素に展開したイメージデータ（0010101…）とを有する。
【００３０】
同様に，バンドＢＮＤ１には，イメージＩＭＧ２と複数の垂直矩形Ｖ０〜Ｖ４に対応する中間コード７０〜７５が含まれる。具体的には，
（１）垂直矩形Ｖ０〜Ｖ４の中間コード７０〜７４は，その属性Ｖ０〜Ｖ４と，色データＣＯＬと，それぞれの左上点のローカル座標（Ｘ，Ｙ）と，高さＨとを有する。
（２）イメージＩＭＧ２の中間コード７５は，その属性ＩＭＧ２と，ローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）と，イメージデータの圧縮形式ＣＯＭＰと，具体的なイメージデータ（00110011…）とを有する。
【００３１】
同様に，バンドＢＮＤ２には，水平矩形Ｌ０〜Ｌ３の中間コード８０〜８３と，矩形ＲＣＴ１の中間コード８４とを有する。具体的には，
（１）水平矩形Ｌ０〜Ｌ４の中間コード８０〜８３は，その属性Ｌ０〜Ｌ４と，モノクロデータＢと，ローカル座標（Ｘ，Ｙ）と，幅Ｗとを有する。
（２）矩形ＲＣＴ１の中間コード８４は，その属性ＲＣＴ１と，矩形の模様を示すスクリーンデータＰと，色データＣＯＬと，ローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）とを有する。
【００３２】
そして，バンドＢＮＤ３には，矩形ＲＣＴ２とイメージＩＭＧ３の中間コード９０，９１が含まれる。具体的には，
（１）矩形ＲＣＴ２の中間コード９０は，その属性ＲＣＴ２と，矩形の模様を示すスクリーンデータＰと，色データＣＯＬと，ローカル座標（Ｘ，Ｙ）と，その幅及び高さ（Ｗ，Ｈ）とを有する。
（２）イメージＩＭＧ３は，その属性データＩＭＧ３と，下地との重なりの関係（ＡＮＤかＯＲかＥＯＲかなど）のデータＤと，スクリーンデータＰと，ローカル座標（Ｘ，Ｙ）と，幅及び高さ（Ｗ，Ｈ）とを有する。
【００３３】
図４に示されるようにイメージデータ以外は，細分化された簡単な図形に対応する中間コードにされる。それにより，その後印刷エンジンの動作速度に追従して中間コードから画素に展開したイメージデータを高速に生成することが可能になる。
【００３４】
図３に戻り，コントローラ１６のＣＰＵ３２が，描画コマンドから中間コードを生成し，中間コードバッファ４０に保存する（Ｓ１６）。中間コードには，前述したとおり画素に展開されたイメージデータも含まれる。かかるイメージデータは，ＲＡＭ内のワークメモリ３８に格納され，中間コードバッファ４０にはそのワークメモリ３８のアドレスデータが，展開済みのイメージデータのポインタ情報として格納される。
【００３５】
次に，ＣＰＵ３２は，各バンドについて，バンド内に含まれる中間コードからイメージデータを展開するのに要する負荷評価値を演算により求めて更新する（Ｓ１８）。この負荷評価値とは，中間コードを展開するのに必要な演算時間に対応するものであり，印刷エンジンが起動した時に，コントローラ１６が中間コードからイメージデータを生成し，そのイメージデータを印刷エンジンの動作速度に対応して適切なタイミングで印刷エンジン２０に供給できるか否かを評価するための指標である。つまり，この負荷評価値が所定の閾値を超えるか否かを事前にチェックすることで，保存された中間コードから印刷エンジンに追従してイメージデータを供給可能か否かを評価することができる。負荷評価値が所定の閾値を超える場合は，オーバーランエラーが発生する蓋然性が高いと見なして，そのバンドの中間コードを事前に画素に展開してイメージデータの形態でＲＡＭに保存する。
【００３６】
また，工程Ｓ１８の負荷評価値の更新は，描画コマンドから中間コードが生成されるたびに行われる。つまり，印刷データのレベルでは印刷すべき画像が印刷プレーン上のどの位置にあるかを判別することは困難である。そこで，中間コードが生成されるたびに，その新たに生成された中間コードが属するバンドの負荷評価値が更新される（Ｓ１８）。そして，更新した負荷評価値が所定の閾値を超えるか否かがその都度判断される（Ｓ２０）。
【００３７】
負荷評価値の計算方法について簡単に説明する。まず，中間コードの組合せに対応して負荷係数Ａがあらかじめ設定され，その負荷係数Ａにその画像の面積（幅Ｗ×高さＨ）を乗算して負荷評価値が演算される。つまり，バンド内の複数の中間コード（または中間コードの組合せ）の負荷係数Ａとその面積（Ｗ＊Ｈ）との乗算値の合計が，そのバンドの負荷評価値となる。この図表の負荷係数Ａは，コントローラ１６の不揮発性メモリ４２に格納されている。そして，コントローラ１６のＣＰＵ３２が，新たに変換された中間コードに基づき，この図表の負荷係数Ａの設定値を参照し，上記の演算を行って，各バンドの負荷評価値を更新する。
【００３８】
図３に戻り，コントローラ１８のＣＰＵ３２は，各バンドの更新された負荷評価値が，あらかじめ設定されている閾値を超えるか否かを判定する（Ｓ２０）。そして，負荷評価値が閾値を超えている場合は（Ｓ２０のＹＥＳ），該当するバンド内の中間コードを全て画素に展開したイメージデータに事前展開し，そのイメージデータをワークメモリ領域３８にそのアドレスを中間コードバッファ４０にそれぞれ保存する（Ｓ２２）。そして，事前展開したバンドの位置を記憶する（Ｓ２４）。つまり，事前展開したバンドの位置を記憶しておくことで，後にその画像と類似する画像を有する印刷プレーンに対しては，そのバンドの位置では中間コードを生成せずに描画コマンドから直接イメージデータを生成することが可能になる。
【００３９】
負荷評価値が閾値を超えていない場合（工程Ｓ２０のＮＯ）は，上記した中間コードの事前展開は行われない。そして，１印刷プレーン内の全ての印刷データが終了するまで，上記の工程Ｓ１６〜Ｓ２４が繰り返される。
【００４０】
同じ印刷プレーン内において，あるバンドにおいて一度事前展開が発生すると，そのバンドについてはイメージデータへの展開が必要であるので，その後の事前展開済みのバンドについての描画コマンドに対しては（Ｓ１４のＹＥＳ），中間コードを生成せずにイメージデータに直接展開し，ＲＡＭ内に保存する（Ｓ２８）。つまり，同じ印刷プレーン内では，事前展開済みのバンドに対しては，描画コマンドからイメージデータを直接展開する直接展開処理を行う（Ｓ２８）。
【００４１】
更に，図２のドライバプログラムの処理手順で説明したとおり，前印刷プレーンの画像に類似する画像を有する印刷プレーンか否かの情報が，ドライバ印刷データ１２に含まれている。そこで，コントローラのＣＰＵ３２は，ドライバ印刷データ１２に類似情報が含まれている場合は，その印刷プレーンを事前展開対象と判断し（Ｓ１２のＹＥＳ），その印刷プレーンについては描画コマンドからイメージデータを直接展開し，保存する（Ｓ２８）。つまり，前印刷プレーンで事前展開が発生している場合は，その次の類似印刷プレーンに対しては，中間コードの生成Ｓ１６と事前展開の評価Ｓ１８，Ｓ２０を行わないで，イメージデータへの直接展開処理を行う。
【００４２】
または，前印刷プレーンで事前展開が発生した時に，記憶していたバンド位置情報を参照して，その次の類似印刷プレーンの対応するバンドでは，中間コードの生成Ｓ１６と事前展開の評価Ｓ１８，Ｓ２０を行わないで，イメージデータへの直接展開処理を行う（Ｓ１２，Ｓ２８）。類似印刷プレーン全体でイメージデータへの直接展開処理を行うと，記憶すべきイメージデータの容量が大きくなるので，可能であれば，事前展開が発生したバンド位置についてのみイメージデータへの直接展開処理を行うのが好ましい。
【００４３】
図６は，本実施の形態におけるドライバ印刷データの例とそれに対応するコントローラの動作を示す図である。上記の動作をドライバ印刷データ例にしたがって説明する。まず，ホストコンピュータ１０のドライバプログラム１０６により，ドライバ印刷データ１２がプリンタのコントローラ１６に供給される。図６のドライバ印刷データ１２の例では，印刷データのヘッダに続いて，印刷プレーンＰＬＮ０〜ＰＬＮ２のデータが含まれる。そして，各印刷プレーンのデータには，前印刷プレーンと類似する画像を含むか否かの類似情報ＳＭが含められている。類似情報ＳＭが「０」であれば非類似，「１」であれば類似とする。
【００４４】
かかるドライバ印刷データ１２に対応して，コントローラの動作は図示されるように次のとおりである。まず，最初の印刷プレーンＰＬＮ０は，前印刷プレーンが存在せず類似情報ＳＭは「０」（非類似）である。したがって，コントローラ１６は，その印刷データを描画コマンドに変換し，中間コードの生成と，負荷評価値の評価と，事前展開（図３のＳ１６〜Ｓ２４）とを実行する。そして，印刷プレーンＰＬＮ０のあるバンドで事前展開が発生したとする。次の印刷プレーンＰＬＮ１の印刷データには，前印刷プレーンＰＬＮ０と同様の画像が含まれていることを示す類似情報ＳＭ＝「１」が含まれている。したがって，コントローラ１６は，その類似情報ＳＭに応答して，記憶していた事前展開が発生したバンド位置に対応するバンドでは，中間コードを生成せずに描画コマンドからイメージデータを直接展開する（Ｓ２８）。同様に，次の印刷プレーンＰＬＮ２の印刷データにも，類似情報ＳＭ＝「１」が含まれていて，コントローラ１６は記憶していた事前展開発生バンド位置に対応するバンドでは，イメージデータを直接展開する（Ｓ２８）。
【００４５】
このように，プリンタ装置のコントローラ１６は，ドライバ１０６から類似情報を供給してもらうことで，次の印刷プレーンでは直接展開すべきか否かを判断することができ，その場合に，中間コードを生成して事前展開すべきか否かの評価を行う必要がない。
【００４６】
以上の中間コードへの変換と事前展開または直接展開が，印刷エンジンの１印刷プレーン分行われると，印刷エンジンによる印刷起動準備が終了する。それに応答して，コントローラ１６は印刷エンジン２０に起動をかけて，中間コードをイメージデータに展開しながら，または展開済みのイメージデータを読み出して，印刷エンジン２０の動作に同期してそのイメージデータ１８を供給する。この印刷エンジン２０の起動タイミングは，１印刷プレーン分の中間コード生成または事前展開が終了する前に，印刷エンジン２０の起動に要する時間を考慮して，早めに設定されてもよい。
【００４７】
図７は，本実施の形態においてコントローラが印刷エンジンを起動してからの動作を示すフローチャート図である。コントローラ１６のＣＰＵ３２は，１印刷プレーン内の全てのバンドについて中間コードの生成または必要なイメージデータへの展開が終了すると，印刷エンジン２０を起動する（Ｓ３０）。そして，印刷エンジンの動作に同期して，中間コードバッファ４０から対応するバンドの中間コードを読み出して画素に展開したイメージデータを生成しながら，そのイメージデータ１８を印刷エンジン２０に供給する（Ｓ３２）。または展開済みのイメージデータ１８を印刷エンジン２０に供給する（Ｓ３２）。印刷エンジン２０は，供給されたイメージデータ１８に基づき所望の画像を形成する。そして，印刷エンジン２０の動作にイメージデータの供給が間に合わない場合は，印刷エンジン２０からコントローラ１６に対してオーバーランエラーの発生が通知される（Ｓ３４）。それに応答して，コントローラ１６は，印刷中の用紙を排出し，エラーの発生を図示しない表示パネルやエラーランプを介してユーザに通知する（Ｓ３８）。
【００４８】
通常は，負荷評価値に対する閾値が安全サイドに設定されているので，事前展開されなかった場合，中間コードからイメージデータへの変換と供給は印刷エンジンの動作速度に追従することができ，オーバーランエラーが発生することはない。しかし，まれに複雑な画像の形成が要求され，演算で求めた負荷評価値が閾値を上回ることはなくても，印刷エンジン起動後に中間コードからイメージデータへの変換が間に合わずにオーバーランエラーが発生することがある。
【００４９】
オーバーランエラーが発生して用紙が排紙されると，ＣＰＵ３２は，事前展開の評価に使用する閾値をオーバーランエラーを起こしたバンドの負荷評価値に更新する（Ｓ４０）。そして，オーバーランエラーが発生したバンドの中間コードをイメージデータに事前展開し，保存する（Ｓ４２）。エラー発生後に印刷要求を受信すると（Ｓ４４のＹＥＳ），コントローラのＣＰＵ３２は，再度印刷エンジンを起動し（Ｓ３０），前述の動作Ｓ３２を繰り返す。全てのバンドが終了するまでオーバーランエラーが発生しなければ，その印刷プレーンに対する印刷エンジンの制御が終了し，そのプレーンの画像形成は終了する。
［変形例］
図８は，本実施の形態の変形例を説明する図である。本変形例では，プリンタ装置１４のコントローラ１６が，ある印刷プレーンにおいてイメージデータへの事前展開が発生した時に，その事前展開発生情報２４と印刷プレーン及びバンド位置情報２６とを，ホストコンピュータのドライバ１０６に送信する。そして，ホストコンピュータのドライバ１０６は，通知された事前展開が発生した印刷プレーン（またはそのバンド）と同様の画像を有する後続の印刷プレーンの印刷データに，類似情報ＳＭとそのバンド位置情報ＢＮとを含ませて，コントローラ１６に供給する。
【００５０】
図８の印刷データ１２の例では，最初の印刷プレーンＰＬＮ０の印刷データには類似情報ＳＭ＝０（非類似）でバンド位置情報ＢＮ＝Ｎ（ＮＵＬＬ）が含められている。したがって，コントローラ１６は，描画コマンドから中間コードを生成し，負荷評価値の評価を行い，必要に応じて事前展開（Ｓ１６〜Ｓ２４）を行う。ここでは，最初の印刷プレーンＰＬＮ０のあるバンドで事前展開が発生したと仮定する。その場合，コントローラ１６は，ホストコンピュータのドライバ１０６に事前展開発生情報２４と印刷プレーン及びバンド位置情報２６とを通知する。
【００５１】
そして，次の印刷プレーンＰＬＮ１の画像が最初の印刷プレーンＰＬＮ０の画像と類似していることがドライバ１０６により検出されると，ドライバ１０６は，その印刷プレーンＰＬＮ１の印刷データに類似情報ＳＭ＝１（類似）と事前展開が生じたバンド位置情報ＢＮ＝０（０番目のバンド）とを埋め込む。この印刷データに応答して，コントローラ１６は，印刷プレーンＰＬＮ１の対応するバンドにおいて，中間コードを生成することなくイメージデータを直接展開する（Ｓ２８）。
【００５２】
さらに，次の印刷プレーンＰＬＮ２では，事前展開が発生した印刷プレーンＰＬＮ０とは類似しない画像が含まれているとすると，ドライバ１０６は，その印刷プレーンＰＬＮ２の印刷データに類似情報ＳＭ＝０（非類似）とバンド位置情報ＢＮ＝Ｎ（ＮＵＬＬ）とを埋め込む。それに応答して，コントローラ１６は，描画コマンドから中間コードを生成し，負荷評価値の評価を行い，必要に応じて事前展開（Ｓ１６〜Ｓ２４）を行う。
【００５３】
このように，本実施の形態の変形例では，コントローラ１６からドライバ１０６に事前展開発生情報等２４，２６を通知させることで，ドライバ１０６からは，どの印刷プレーンを直接展開すべきか，またはどの印刷プレーンのどのバンドを直接展開すべきかの情報を印刷データに含ませることができる。したがって，プリンタのコントローラ１６は，印刷データに含まれた類似情報等ＳＭ，ＢＮに基づいて，直接展開すべきか否かを判断することができる。無駄な中間コードの生成等をなくすことで，印刷スループットを向上させることができる。
【００５４】
図９は，本実施の形態の変形例におけるドライバプログラムの動作フローチャート図である。図２の動作フローチャートと異なるところは，工程Ｓ５２０とＳ５４０であり，それ以外は図２と同じである。つまり，ドライバ１０６は，事前展開が発生した時点でプリンタのコントローラ１６から事前展開発生情報等２４，２６を受信済みである。そこで，ドライバ１０６は，その事前展開が発生した印刷プレーンの画像に類似する画像を有する印刷プレーンか否かをチェックし（Ｓ５２０），類似する場合は，ドライバ印刷データ１２に類似情報ＳＭとバンド位置情報ＢＮとを含ませて，コントローラ１６に送信する。
【００５５】
図１０は，本実施の形態の変形例における画像形成装置のコントローラの動作を示すフローチャート図である。この変形例でのコントローラ１６における準備動作は，図３のフローチャートと工程Ｓ１２０，Ｓ２４０のみが異なり，それ以外は図３と同じである。つまり，コントローラ１６は，事前展開が発生すると，その事前展開情報２４と印刷プレーン情報及びバンド位置情報２６とをホストコンピュータのドライバ１０６に通知する（Ｓ２４０）。さらに，コントローラ１６は，印刷データに含められている類似データＳＭとバンド位置データＢＮとを参照して，直接展開対象の印刷プレーンか否か，或いは直接展開対象の印刷プレーン内のバンドか否かを判定する（Ｓ１２０）。直接展開の対象の場合は，描画コマンドから中間コードを生成せずにイメージデータを直接展開し，ＲＡＭ内に保存する（Ｓ２８）。
【００５６】
準備動作が終了した後の印刷エンジンの起動制御は，図７のフローチャートと同じである。
【００５７】
以上の通り，本実施の形態の変形例では，プリンタのコントローラ１６は，印刷データに含まれる類似情報とバンド位置情報とを参照して，不要な中間コードの生成や負荷評価値の評価を行うことなく，直接イメージデータを展開することができるので，印刷スループットを向上させることができる。
【００５８】
上記の実施の形態では，コントローラ１６が事前展開を行った場合に，それと類似する画像を有する印刷プレーンについて直接展開を行うようにしている。それ以外に，コントローラ１６が印刷エンジン２０からオーバーランエラーの発生を通知された場合も，その印刷プレーンの画像と類似する印刷プレーンについて直接展開を行うようにしても良い。但し，その場合は，印刷エンジンによる印刷処理が終了するまで，どの印刷プレーンについて印刷処理中かをコントローラが保持しておかなければならない。
【００５９】
上記の実施の形態及びその変形例は，ホストコンピュータのドライバ１０６が，描画コマンドから中間コードに変換し，負荷評価による必要な事前展開を行って，中間コードまたは展開済みのイメージデータをプリンタのコントローラ１６に供給する場合にも適用できる。この場合は，中間コードの生成，負荷評価値による評価，事前展開の全てがドライバ１０６によって行われるので，コントローラ１６からドライバ１０６への事前展開発生情報など２４，２６を通知する必要はない。そして，ドライバ１０６は，通常は中間コードの生成，負荷評価値による評価，必要な事前展開を実行するが，事前展開が発生した印刷プレーンと同等の画像を有する印刷プレーンに対しては，中間コードを生成することなくイメージデータに直接展開する。それにより，ドライバでの処理のスループットを向上させることができる。
【００６０】
すなわち，ドライバプログラム１０６は，図２の工程Ｓ５８を除く処理と，図３の全ての処理をホストコンピュータに実行させ，生成された中間コード及び展開済みイメージデータをプリンタのコントローラ１６に供給する。また，変形例の場合は，ドライバプログラム１０６は，図９の工程Ｓ５８を除く処理と，図１０の工程Ｓ２４０を除く処理とをホストコンピュータに実行させ，生成された中間コード及び展開済みイメージデータをプリンタのコントローラ１６に供給する。
【図面の簡単な説明】
【００６１】
【図１】本実施の形態における画像処理装置システムの構成図である。
【図２】本実施の形態におけるドライバプログラムの動作フローチャート図である。
【図３】本実施の形態における画像形成装置のコントローラの動作を示すフローチャート図である。
【図４】印刷画像例を示す図である。
【図５】図４の印刷画像に対応する中間コードの例を示す図である。
【図６】本実施の形態におけるドライバ印刷データの例とそれに対応するコントローラの動作を示す図である。
【図７】本実施の形態においてコントローラが印刷エンジンを起動してからの動作を示すフローチャート図である。
【図８】本実施の形態の変形例を説明する図である。
【図９】本実施の形態の変形例におけるドライバプログラムの動作フローチャート図である。
【図１０】本実施の形態の変形例における画像形成装置のコントローラの動作を示すフローチャート図である。
【符号の説明】
【００６２】
１０：ホストコンピュータ    １０６：ドライバプログラム
１２：印刷データ            １４：プリンタ装置，画像形成装置
１６：コントローラ          １８：イメージデータ
２０：印刷エンジン          ＳＭ：類似情報
【図１】
2006205462.tif 000003
【図２】
2006205462.tif 000004
【図３】
2006205462.tif 000005
【図４】
2006205462.tif 000006
【図５】
2006205462.tif 000007
【図６】
2006205462.tif 000008
【図７】
2006205462.tif 000009
【図８】
2006205462.tif 000010
【図９】
2006205462.tif 000011
【図１０】
2006205462.tif 000012