(57)【要約】【課題】事前展開を行った後に追加の描画コマンドから生成される中間コードの処理にかかる時間を最小限に抑え，印刷ジョブ全体を効率良く行う。【解決手段】印刷ページごとの描画コマンドから生成された中間コードを印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録手段と，バンド毎の中間コードからビットマップ画像データを展開して印刷エンジンへ出力する展開手段とを有する画像処理装置において，前記展開手段がバンド毎の割当て時間の前にビットマップ画像データを事前展開したバンドにおいて登録されていない中間コードが発生する場合は，中間コードのデータ量に応じて，当該中間コードの登録，あるいは，当該中間コードからのビットマップ画像データの展開のいずれかを実行する。【選択図】図５
2007152843.tif 000002
【特許請求の範囲】
【請求項１】
描画コマンドから生成された中間コードに基づいてビットマップ画像データを展開し，前記展開したビットマップ画像データに対応する画像形成信号を印刷エンジンに出力する画像処理装置において，
前記中間コードを印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録手段と，
前記バンド毎の中間コードからビットマップ画像データを展開する展開手段とを有し，
前記展開手段は，前記印刷エンジンへ前記画像形成信号を出力している時に，前記登録した中間コードからビットマップ画像データを展開する第１の展開処理，または，前記印刷エンジンへ前記画像形成信号を出力する前に，前記生成された中間コードからバンド毎にビットマップ画像データを事前展開する第２の展開処理のいずれかをバンド毎に行い，
前記第２の展開処理が行われたバンドにおいてさらに登録されていない中間コードが発生する場合は，前記登録手段は当該中間コードを対応するバンドのメモリに登録することを特徴とする画像処理装置。
【請求項２】
請求項１において，
前記第２の展開処理が行われたバンドにおいて登録されていない中間コードが発生する場合であっても，当該登録されていない中間コードのデータ量が所定の基準値以下のときは，前記登録手段は当該中間コードを登録せずに，前記展開手段は当該中間コードに対し前記第２の展開処理を行うことを特徴とする画像処理装置。
【請求項３】
請求項１または２において，
前記第２の展開処理が行われたバンドの前記展開されたビットマップ画像データを圧縮する圧縮手段をさらに有し，
前記圧縮手段がビットマップ画像データを圧縮したバンドにおいてさらに登録されていない中間コードが発生する場合は，前記登録手段は当該中間コードを当該バンドのメモリに登録することを特徴とする画像処理装置。
【請求項４】
描画コマンドから生成された中間コードに基づいてビットマップ画像データを展開し，前記展開したビットマップ画像データに対応する画像形成信号を印刷エンジンに出力する画像処理装置において，
前記中間コードを前記印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録手段と，
前記バンド毎の中間コードからビットマップ画像データを展開する展開手段と，
前記バンド毎のビットマップ画像データを圧縮する圧縮手段とを有し，
前記展開手段は，前記印刷エンジンへ前記画像形成信号を出力している時に，前記登録した中間コードからビットマップ画像データを展開する第１の展開処理，または，前記印刷エンジンへ前記画像形成信号を出力する前に，前記生成された中間コードからバンド毎にビットマップ画像データを事前展開する第２の展開処理のいずれかをバンド毎に行い，
前記第２の展開処理が行われたバンドに対応するメモリに中間コードを追加して登録する場合に，当該追加登録する中間コードのデータ量に対するメモリの残量が所定の基準値を上回るときは，前記圧縮手段は当該バンドのビットマップ画像データに対し第１の圧縮率で圧縮を行い，当該追加登録する中間コードのデータ量に対するメモリの残量が前記所定の基準値以下のときは，前記圧縮手段は，当該バンドのビットマップ画像データに対し，前記第１の圧縮率より高い第２の圧縮率で圧縮を行うことを特徴とする画像処理装置。
【請求項５】
請求項１乃至４のいずれかの画像処理装置を備え，
前記画像処理装置が展開した前記バンド毎のビットマップ画像データに基づき画像形成を行う画像形成装置。
【請求項６】
描画コマンドから生成された中間コードに基づいてビットマップ画像データを展開し，前記展開したビットマップ画像データを画像形成装置に出力する画像処理プログラムにおいて，
前記中間コードを印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録工程と，
前記画像形成装置へビットマップ画像データを出力する時に，前記登録された中間コードからビットマップ画像データを展開して前記画像形成装置へ出力する第１の展開処理，または，前記画像形成装置へビットマップ画像データを出力する前に，前記生成された中間コードからビットマップ画像データを事前展開する第２の展開処理のいずれかをバンド毎に行う展開工程と，
前記第２の展開処理が行われたバンドにおいてさらに登録されていない中間コードが発生する場合に，当該登録されていない中間コードのデータ量が所定の基準値を上回るときは，当該中間コードを対応するバンドのメモリに登録し，当該登録されていない中間コードのデータ量が前記所定の基準値以下のときは，当該中間コードを登録せずに，当該中間コードに対して前記第２の展開処理を行う工程とをコンピュータに実行させることを特徴とする画像処理プログラム。
【請求項７】
描画コマンドから生成された中間コードに基づいてビットマップ画像データを展開し，前記展開したビットマップ画像データを画像形成装置に出力する画像処理プログラムにおいて，
前記中間コードを前記印刷ページを複数に分割したバンド領域に分けてメモリに登録する工程と，
前記画像形成装置へビットマップ画像データを出力する時に，前記登録された中間コードからビットマップ画像データを展開して前記画像形成装置へ出力する第１の展開処理，または，前記画像形成装置へビットマップ画像データを出力する前に，前記生成された中間コードからバンド毎にビットマップ画像データを事前展開する第２の展開処理のいずれかをバンド毎に行う展開工程と，
前記第２の展開処理が行われたバンドに中間コードを追加して登録する場合に，当該追加登録する中間コードのデータ量に対するメモリの残量が所定の基準値を上回るときは，当該バンドのビットマップ画像データに対し第１の圧縮率で圧縮を行い，当該追加登録する中間コードのデータ量に対するメモリの残量が前記所定の基準値以下のときは，当該バンドのビットマップ画像データに対し，前記第１の圧縮率より高い第２の圧縮率で圧縮を行う圧縮工程とをコンピュータに実行させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，印刷ページごとの描画コマンドから中間コードを生成し，前記中間コードからビットマップ画像データを展開する画像処理装置及び画像処理プログラムに関し，特に，ビットマップ画像データを展開したバンドに対する追加の描画コマンドを中間コードとしてメモリに格納する場合と，ビットマップ画像データに展開して格納する場合とを選択できる画像処理装置及び画像処理プログラムに関する。
【背景技術】
【０００２】
プリンタなどの画像形成装置は，印刷データを処理する画像処理装置と，画像処理装置により形成された画像データに基づき画像を印刷する印刷エンジンとを有する。画像処理装置は，ページ記述言語で記述された描画コマンドから成る印刷データをホストコンピュータから受け取り，描画コマンドを解析して画像データへの展開が容易な中間コードを生成し，中間コードに基づくビットマップ画像データをメモリ上に展開する。そして，画像処理装置はビットマップ画像データを画像再生信号として印刷エンジンに出力する。
【０００３】
かかる画像処理装置は，印刷ページを複数に分割したバンド領域ごとに画像処理を行う。すなわち，印刷ページ毎の描画コマンドを順次解析し，中間コードを生成してバンド毎に確保したメモリ領域に登録する。そして，１印刷ページ分の中間コードの登録を終了してから，順次バンド毎に中間コードからビットマップ画像データに展開し，ビットマップ画像データを画像再生信号として印刷エンジンへ出力する。
【０００４】
中間コードからビットマップ画像データを展開し，印刷エンジンへ出力する工程はバンド毎に割当てられた時間内に行われる。この印刷エンジンへのデータ転送割り当て時間はプリンタの動作に同期したものであるため，各バンド均等である。印刷エンジンの側では，所定の割当時間毎に画像処理装置から受け取った画像再生信号に基づき，バンド毎に画像形成して印刷を実行する。
【０００５】
しかし，バンドによっては印刷内容が多いものがあり，その分中間コードの量が他のバンドより多くなることがある。よって，かかる中間コードからビットマップ画像データを展開する場合は他のバンドより多くの処理時間を要するため，各バンド均等に割当てられた印刷エンジンへのデータ転送割当て時間内にビットマップ画像データを展開することが終了しない場合が生じる。そうすると印刷エンジンの画像形成は失敗し，いわゆるオーバーランというエラーが生じる。
【０００６】
かかるオーバーランを未然に防ぐために，事前展開という方法が提案されている。事前展開とは，オーバーランが予測されるような大量の中間コードを有するバンドについては，中間コード登録の代わりに予めビットマップ画像データを展開し，メモリに保持しておく方法である。そうすることにより，バンド毎の印刷エンジンへのデータ転送割当て時間内にはビットマップ画像データ展開を行わずにデータ転送だけを行えばよいので，オーバーランを防止できる。例えば，特許文献１には，バンド毎の中間コードにビットマップ画像データへ展開する処理時間の評価値を持たせておき，この評価値が閾値を超えた場合に事前展開を行うことにより，オーバーランを防止する方法が記載されている。
【０００７】
また，事前展開はオーバーラン防止の他に，メモリ資源の節約のために実行される場合がある。中間コードは，描画する画像の形状，位置，色等の情報を有するリスト構造のデータであり，描画する画像によっては，中間コードよりも二値化されたビットマップ画像データの方がデータ量が少なくなることがある。そうした場合には，中間コードを登録する代わりに事前展開したビットマップ画像データをメモリに保持することにより，メモリ資源を節約することが可能となる。
【特許文献１】特開２００１−１５７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記のような従来の技術においては事前展開を行うことによりオーバーランを防止でき，またはメモリ不足となることを回避することが可能となる。さらに，事前展開したビットマップ画像データを圧縮することによりメモリを節約することも可能となる。
【０００９】
しかしながら，事前展開を行うということは，本来バンド毎の印刷エンジンへのデータ転送割当て時間内に行っていたビットマップ画像データへの展開を，印刷エンジンへのデータ転送割当時間の前に前倒しで行うものであるので，データ転送を開始するまでの処理時間が長くなることを意味する。
【００１０】
また，事前展開は１印刷ページ分の中間コードの登録が終了する前に行われるので，事前展開されたバンドにおいて追加の描画コマンドの処理が発生する場合がある。さらに，一旦展開されたビットマップ画像データを圧縮することによりメモリ資源の節約を図る場合においても，圧縮されたデータの展開処理が発生する。すると，これらの追加の処理にかかる時間が印刷ジョブ全体の処理時間を遅らせる要因となる。
【００１１】
そこで，本発明の目的は，事前展開を行った後に追加の描画コマンドから生成される中間コードの処理にかかる時間を最小限に抑え，印刷ジョブ全体を効率良く行うための画像処理装置及び画像処理プログラムを提供することにある。
【課題を解決するための手段】
【００１２】
上記の目的を達成するために，本発明の第１の側面における画像処理装置は，描画コマンドから生成された中間コードに基づいてビットマップ画像データを展開し，前記展開したビットマップ画像データに対応する画像形成信号を印刷エンジンに出力し，前記中間コードを印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録手段と，前記バンド毎の中間コードからビットマップ画像データを展開する展開手段とを有しており，前記展開手段は，前記印刷エンジンへ前記画像形成信号を出力している時に，前記登録した中間コードからビットマップ画像データを展開する第１の展開処理，または，前記印刷エンジンへ前記画像形成信号を出力する前に，前記生成された中間コードからバンド毎にビットマップ画像データを事前展開する第２の展開処理のいずれかをバンド毎に行い，前記第２の展開処理が行われたバンドにおいてさらに登録されていない中間コードが発生する場合は，前記登録手段は当該中間コードを対応するバンドのメモリに登録することを特徴とする。
【００１３】
上記第１の側面における画像処理装置によれば，事前展開が発生したバンドにおいて，追加された中間コードのビットマップ画像データへの展開を印刷エンジンへのデータ転送割当て時間内に行うことができる。よって，印刷エンジンへのデータ転送開始前の処理を最小限に抑えることができ，事前展開発生後の印刷ジョブ全体としての処理効率が向上する。
【００１４】
上記第１の側面の好ましい実施例における画像処理装置は，前記第２の展開処理が行われたバンドにおいて登録されていない中間コードが発生する場合であって，当該登録されていない中間コードの量が所定の基準値以下のときは，前記登録手段は当該中間コードを登録せずに，前記展開手段は当該中間コードに対し前記第２の展開処理を行うことを特徴とする。
上記実施例における画像処理装置は，中間コード量に基づき，ビットマップ画像データへの展開負荷が高い中間コードを予めビットマップ画像データに展開してメモリに保持するので，一旦中間コードを登録してから再度の事前展開が生じる場合の追加的な処理時間を回避でき，印刷ジョブ全体としての処理効率の向上を図ることができる。
【００１５】
本発明の第２の側面における画像処理装置は，描画コマンドから生成された中間コードに基づいてビットマップ画像データを展開し，前記展開したビットマップ画像データに対応する画像形成信号を印刷エンジンに出力し，前記中間コードを前記印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録手段と，前記バンド毎の中間コードからビットマップ画像データを展開する展開手段と，前記バンド毎のビットマップ画像データを圧縮する圧縮手段とを有しており，前記展開手段は，前記印刷エンジンへ前記画像形成信号を出力している時に，前記登録した中間コードからビットマップ画像データを展開する第１の展開処理，または，前記印刷エンジンへ前記画像形成信号を出力する前に，前記生成された中間コードからバンド毎にビットマップ画像データを事前展開する第２の展開処理のいずれかをバンド毎に行い，前記第２の展開処理が行われたバンドに対応するメモリに中間コードを追加して登録する場合に，当該追加登録する中間コードのデータ量に対するメモリの残量が所定の基準値を上回るときは，前記圧縮手段は当該バンドのビットマップ画像データに対し第１の圧縮率で圧縮を行い，当該追加登録する中間コードのデータ量に対するメモリの残量が前記所定の基準値以下のときは，前記圧縮手段は，当該バンドのビットマップ画像データに対し，前記第１の圧縮率より高い第２の圧縮率で圧縮を行うことを特徴とする。
【００１６】
上記第２の側面における画像処理装置によれば，事前展開されたビットマップ画像データの圧縮率を選択することにより，中間コードをビットマップ画像データに展開する負荷が高いことによるオーバーランを防止するための事前展開や，メモリ不足を防止するための事前展開を再度行うような事態を回避でき，印刷ジョブの効率向上を図ることができる。
【発明を実施するための最良の形態】
【００１７】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１８】
図１は，印刷ジョブにおける１印刷ページの描画コマンドに対するバンド毎の処理を説明する図である。印刷ページの一例として，文字１，図形２，図形３，及び図形４という画像オブジェトを有する印刷ページＰＰ１を図示している。この印刷ページＰＰ１は，さらに複数のバンドＢＮＤ１〜４に分割される。
【００１９】
かかる印刷ページＰＰ１を印刷する際には，まずＰＤＬ（ページ記述言語）で記述された印刷コマンドＰ−ＣＭから中間コードが生成され，メモリ上に確保した中間コードバッファＩＣ−ＢＵＦにバンドごとに登録される。なお，以下の文中では，中間コードバッファＩＣ−ＢＵＦとは１印刷ページ分の中間コードをビットマップ画像データに展開するまでの間保持するために一時的に割当てたメモリ領域を意味し，メモリ上の特定の領域を限定して意味するものではない。
【００２０】
通常時は，印刷ページＰＰ１の全ての描画コマンドが中間コード登録された後に，メモリ上に確保したバンドバッファＢ−ＢＵＦに順次バンド毎のビットマップ画像データＢＢ１，ＢＢ２，・・・として展開され，印刷エンジンに画像形成信号ＧＳとしてデータ転送が行われる。ビットマップ画像データの展開と印刷エンジンへのデータ転送は，印刷エンジンの動作に同期して各バンド均等に割当てられたデータ転送割当時間内に，バンド毎に行われる。
【００２１】
しかし，バンド内の中間コード量が多く，ビットマップ画像データへの展開と印刷エンジンへのデータ転送がバンド毎の印刷エンジンへのデータ転送割当て時間内に終了しないこと，つまりオーバーランが予測される場合には，事前展開が行われる。例えば，図形２の中間コードの量が多くオーバーランが予測される場合には，中間コードバッファＩＣ−ＢＵＦまたはワークメモリ領域に，バンドＢＮＤ２のビットマップ画像データＢＭ２が展開され，保持される。
【００２２】
ここで，事前展開は中間コードが保有する処理時間の負荷係数を基準にオーバーランを予測して行われるので，図で示すように，例えば図形２の描画コマンドを中間コード化した時点で事前展開したとすると，バンドＢＮＤ２には図形３がまだ描画されていない状態でビットマップ画像データが展開される。よって，バンドＢＮＤ２においては，事前展開後に図形３の描画コマンドを処理することになる。
【００２３】
また，事前展開は，メモリ資源節約のために行われる場合もある。上記の例では，図形２を描画する中間コードが大量であって，中間コードを中間コードバッファＩＣ−ＢＵＦに登録するとメモリ不足が予期される場合には，二値データであるビットマップ画像データに展開した方がデータ量が少なくなることから，事前展開が行われる。
【００２４】
図２は，中間コード生成と登録，及びビットマップ画像データ展開の処理時間について説明する図である。横軸方向に時間経過を示し，バンド単位での処理時間を示している。
【００２５】
図２（ａ）は通常時の処理時間を示している。まず，描画コマンドから中間コードが生成される中間コード生成時間ＩＣ−Ｔ１と，生成された中間コードを中間コードバッファＩＣ−ＢＵＦに登録する中間コード登録時間ＩＣ−Ｔ２が発生する。これら中間コード生成時間ＩＣ−Ｔ１と中間コード登録時間ＩＣ−Ｔ２は描画コマンド毎に発生するが，本図においては１回のみ図示してある。
【００２６】
その後に，ビットマップ画像データ展開と印刷エンジンへの転送を行う。それぞれの処理時間はビットマップ画像データ展開時間ＢＭ−Ｔと印刷エンジン転送時間ＴＲ−Ｔとして示されている。この２つの処理は，バンド毎の印刷エンジンへのデータ転送割当て時間ＰＲ−Ｔ内に行われる。データ転送割当て時間ＰＲ−Ｔは，上述のように，印刷エンジンの動作に同期した時間であり，各バンド均等に割当てられている。よって，印刷エンジンの動作速度によって長短が生じる。
【００２７】
図２（ａ）では，ビットマップ画像データ展開時間ＢＭ−Ｔと印刷エンジン転送時間ＴＲ−Ｔの合計がバンド毎の印刷エンジンへのデータ転送割当て時間ＰＲ−Ｔ以下であるので，オーバーランは生じないことを表している。しかし，登録された中間コードが大量であるため展開に時間がかかり，ビットマップ画像データ展開時間ＢＭ−Ｔが増大することにより上記合計時間がバンド毎の印刷エンジンへのデータ転送時割当て間ＰＲ−Ｔを超過すると，オーバーランが生ずることになる。
【００２８】
図２（ｂ）はオーバーランを防止するために事前展開を行う場合の処理時間を示している。図示するように，中間コード登録時間ＩＣ−Ｔ２が省略され，予めビットマップ画像データ展開が行われる。よって，ビットマップ画像データ展開時間ＢＭ−Ｔが前倒しされる。この場合は，印刷エンジンへのデータ転送割当て時間ＰＲ−Ｔ内で行う処理は印刷エンジンへのデータ転送のみであるので，矢印△Ｕで示す時間が空き時間となる。また，処理時間としては中間コード登録時間ＩＣ−Ｔ２よりビットマップ画像データ展開時間ＢＭ−Ｔの方が長いため，印刷エンジンへのデータ転送開始が矢印△Ｄの分だけ遅れることになる。
【００２９】
上記のとおり，事前展開が発生した場合は，印刷エンジンへのデータ転送開始が遅くなることで印刷ジョブ全体の処理速度が遅くなる。ここで，事前展開が生じたバンドにおける追加の描画コマンドから生成された中間コードの処理形態を，図３を用いて説明しておく。
【００３０】
図３は，事前展開発生後のバンドの登録されていない中間コードに対する処理形態を説明する図である。図３（ａ）に示すように，図形２の一部を描画した段階で事前展開されたバンドＢＮＤ２のビットマップ画像データＢＭ２に対し，図形３の描画コマンドから生成された中間コードＩＣ−３を処理する場合を例として説明する。
【００３１】
まず，図３（ｂ）で示すように中間コードＩＣ−３をビットマップ画像データに展開して，ビットマップ画像データＢＭ２の背景を構成する画素のデータに対し図形３を上書きする方法が可能である。また，図３（ｃ）に示すように，本実施の形態における画像処理装置が特徴とする，中間コードのまま中間コードバッファＩＣ−ＢＵＦに登録する方法が可能である。いずれの場合でも，バンドに割当てられた中間コードバッファの容量ＭＥＭ−Ｃ以下であれば，メモリ不足にならずにデータを保持することができる。
【００３２】
図３（ｂ），（ｃ）で説明した方法の処理時間を，再び図２を用いて比較する。まず，図３（ｂ）で説明したビットマップ画像データに展開して保持する場合の処理時間を図２（ｃ）に示す。中間コードＩＣ−３を生成する中間コード生成時間ＩＣ−Ｔ１２が，図２（ｂ）の場合に対し追加的に発生する。次に，中間コードＩＣ−３をビットマップ画像データに展開するビットマップ画像データ展開時間ＢＭ−Ｔ２が生じる。その後，印刷エンジンへのデータ転送割当て時間ＰＲ−Ｔ内に印刷エンジンへのデータ転送が行われるので，同時間内に印刷エンジン転送時間ＴＲ−Ｔが生じる。この場合，依然として矢印△Ｕが示す時間が空き時間となっている。
【００３３】
次に，図３（ｃ）で説明した中間コードのまま保持する場合の処理時間を図２（ｄ）に示す。中間コードＩＣ−３を生成する中間コード生成時間ＩＣ−Ｔ１２と，中間コードＩＣ−３を登録する時間ＩＣ−Ｔ２２が図２（ｂ）の場合に対し追加的に発生する。その後，印刷エンジンへの転送が始まってから中間コードＩＣ−３をビットマップ画像データに展開するので，印刷エンジンへのデータ転送時間ＰＲ−Ｔ内にビットマップ画像データ展開時間ＢＭ―Ｔ２と印刷エンジン転送時間ＴＲ−Ｔが生じる。ここで，これらのビットマップ画像データ展開時間ＢＭ−Ｔと印刷エンジン転送時間ＴＲ−Ｔの合計が印刷エンジンへのデータ転送割当て時間ＰＲ−Ｔ以下であればオーバーランは生じない。
【００３４】
このように，中間コードＩＣ−２を中間コードとして保持することにより，ビットマップ画像データ展開時間ＢＭ―Ｔ２をそのバンドの印刷エンジンへのデータ転送割当て時間ＰＲ−Ｔ内に吸収できることになる。よって，図２（ｃ）の場合より矢印△Ｄ２の分だけ印刷開始を早めることができるので，印刷ジョブ全体の処理効率が向上する。つまり図２（ｃ）の矢印△Ｕが示す空いた時間を有効活用することができる。
【００３５】
しかし，中間コードＩＣ−３の量が多くビットマップ画像データ展開時間ＢＭ−Ｔ２が増大する場合や，中間コードＩＣ−３の後にもさらに追加の中間コードを登録することにより追加のビットマップ画像データ展開時間が発生することが予測される場合には，ビットマップ画像データへの展開時間と印刷エンジンへのデータ転送時間がバンドの印刷エンジンへのデータ転送割当て時間を超過する可能性が高くなる。すると，オーバーラン防止のための事前展開を再度行う必要が生じてしまう。あるいは，多くの中間コードを登録することによりメモリ不足が予測される場合には，これを回避するための事前展開の必要性も生じてしまう。よって，そのような場合には，図２（ｃ）の場合のように，印刷ジョブ全体としての処理は遅くなるものの予めビットマップ画像データに展開する方が望ましい。
【００３６】
本実施の形態における画像処理装置では，上記のように，事前展開後さらに描画コマンドから生成された中間コードを処理する場合に，中間コード登録またはビットマップ画像データ展開のいずれかを動的に選択し，印刷エンジンへのデータ転送割当て時間の無駄の削減を図り印刷ジョブ全体の処理効率を向上させるものである。すなわち，追加される中間コードの量を予測し，オーバーランやメモリ不足のおそれがなければ処理効率の良い中間コードで保持する形態を選択し，そうでなければビットマップ画像データに展開した形で保持する形態を選択する。なお，選択の手順については後述する。
【００３７】
図４は，上述した画像処理を行う画像処理装置の概略構成図である。図４（ａ）では，ページ記述言語で記述された一連の描画コマンドから成る印刷データＰＤＬが，ホストコンピュータＨＯＳＴのプリンタドライバＰ−ＤＲから，画像形成装置の一例であるプリンタ１０のコントローラ１２に供給される。
【００３８】
コントローラ１２は，画像処理の内容を記述したプログラムとそのプログラムに従って動作する制御装置で実装され，印刷データＰＤＬの描画コマンドの解析，中間コードの生成，及びビットマップ画像データの展開，圧縮，二値化などの処理を行う。また，コントローラ１２は記憶部１４におけるメモリ資源の管理や印刷エンジン１６の動作の制御を行う。 
【００３９】
記憶部１４はＲＯＭ及びＲＡＭを有し，ＲＡＭ上には生成された中間コードを登録する中間コードバッファＩＣ−ＢＵＦと，中間コードからビットマップ画像データが展開されるバンドバッファＢ−ＢＵＦが確保される。
【００４０】
コントローラ１２は，印刷ページの全ての描画コマンドから中間コードを生成し，生成した中間コードをバンド毎に中間コードバッファＩＣ−ＢＵＦに登録する。登録を終了したら，バンド毎に順次中間コードバッファＩＣ−ＢＵＦの中間コードを読み出してバンドバッファＢ−ＢＵＦに二値化されたビットマップ画像データを展開する。そして，バンドバッファＢ−ＢＵＦに保持されたビットマップ画像データは，バンド毎に図示しないパルス幅変調器により画像形成信号に変換されて印刷エンジン１６へ転送される。
【００４１】
コントローラ１２は，描画コマンドを解析して中間コードを生成する段階で，生成する中間コードが有するビットマップ画像データに展開される際の処理時間の負荷係数に基づき，オーバーランの可能性を判断する。すなわち，１つのバンドおける中間コードの負荷係数の累計が予め記憶部１４に格納された閾値を超える場合にはオーバーランが予測される。その場合は，中間コードバッファＩＣ−ＢＵＦへはその中間コードを登録せずに，そのバンドの登録済みの中間コードと共にビットマップ画像データに展開して保持する。これが事前展開である。また，中間コードを中間コードバッファＩＣ−ＢＵＦに登録することにより記憶部１４のメモリの残量が不足することが予測される場合にも，同様の事前展開の処理を行う。
【００４２】
また，コントローラ１２は，上記の事前展開を行った後にそのバンドの中間コードバッファＩＣ−ＢＵＦに新たに中間コードを登録しようとする場合には，図５において説明する手順に従って，処理を行う。あるいは，コントローラ１２は，メモリ不足に対処するために中間コードバッファＩＣ−ＢＵＦに事前展開されたビットマップ画像データの圧縮を行う。
【００４３】
以上の構成において，コントローラ１２と記憶部１４が画像処理装置に対応する。また，記憶部１４のＲＯＭに格納されコントローラ１２の処理手順を記述したプログラムは画像処理プログラムに対応する。
【００４４】
図４（ｂ）では，ホストコンピュータＨＯＳＴ内のプリンタドライバＰ−ＤＲが，印刷データＰＤＬからバンド領域ごとに中間コードを生成し，その中間コードＩＣをプリンタ１０のコントローラ１２に供給する。コントローラ１２は，供給された中間コードＩＣに基づいてビットマップ画像データをバンドバッファＢ−ＢＵＦに展開し，展開されたビットマップ画像データから生成した画像再生信号を印刷エンジン１６に供給する。この場合も，コントローラ１２と記憶部１４が画像処理装置に対応する。また，記憶部１４のＲＯＭに格納されコントローラ１２の処理手順を記述したプログラムは画像処理プログラムに対応する。
【００４５】
さらに，図４（ｃ）では，ホストコンピュータＨＯＳＴ内のプリンタドライバＰ−ＤＲが，印刷データからバンド領域内の中間コードを生成し，その中間コードに基づいてビットマップ画像データをバンドバッファＢ−ＢＵＦ内に展開して，圧縮されたビットマップ画像データＢＭをプリンタ１０内のコントローラ１２に出力する。この場合は，プログラムであるプリンタドライバＰ−ＤＲが画像処理プログラムに対応する。
【００４６】
図５は，本実施の形態における画像処理装置の処理手順を説明するフローチャート図である。図４（ａ）のコントローラ１２と記憶部１４の動作を例として説明しているが，図４（ｂ）または図４（ｃ）の構成にも適用できる。
【００４７】
画像処理装置は，ホストコンピュータＨＯＳＴのプリンタドライバＰ−ＤＲから送られてくるＰＤＬ（ページ記述言語）による描画コマンド個々に対し，以下の手順で処理を行う。まず，ＰＤＬを解析し描画コマンドを生成する（Ｓ１０）。描画コマンドには，印刷ページの描画コマンド全体における処理の順番を示す情報が付加されており，処理の進行状況の判断に用いることができる。そして，改ページコマンドでない限り次の処理を行う（Ｓ２０のＮＯ）。
【００４８】
解析した描画コマンドから中間コードを生成し（Ｓ４０），その時点で事前展開がされているか否かを判断する（Ｓ６０）。事前展開後であれば工程Ｓ８０へ進み，事前展開されていなければ，生成した中間コードに付随する処理時間を示す負荷係数が事前展開が予見される閾値を超えているか，あるいは，生成した中間コードのデータ量がメモリ不足を引き起こす閾値を超えているかを判断する（Ｓ７０）。いずれかの閾値を超えていれば事前展開を行う（Ｓ７２）。
【００４９】
事前展開が既に行われていた場合（Ｓ６０のＹＥＳ）は，印刷ページ全体としての描画コマンドの残量とメモリの残量を判断する（Ｓ８０）。ここで，プリンタドライバＰ−ＤＲから描画コマンドと共に提供されている処理の順番に関する情報に基づき，処理中の描画コマンド以降の描画コマンド残量を判断することができる。すると，描画コマンドの残量に対応して今後生成される中間コードのデータ量も推測できるので，バンド毎の登録されていない中間コード量も推測できる。なお，図４（ｂ）の構成に適用する場合は，印刷ページの描画コマンド全体における順番を示す情報は，中間コードに付加されてホストコンピュータＨＯＳＴのプリンタドライバＰ−ＤＲから提供される。
【００５０】
さらに，上記情報に加えて記憶部１４におけるメモリ資源の残量を取得し，図６に示すような判断基準における基準値を用いることにより，その後の処理を判断する。ここで図６を用いて判断基準を説明しておく。
【００５１】
図６は，印刷コマンドの残量とメモリ残量に，追加の中間コードの処理形態が対応づけられた図である。横軸にメモリの残量を示し，縦軸に印刷ページにおける処理の進行状況を示している。
【００５２】
縦軸の処理の進行状況は，印刷ページ全体のコマンド数に対する処理済みの描画コマンドの割合で表される。縦軸の数値が増すほど処理済みの描画コマンド数が増え，未処理の描画コマンド，つまりまだ登録されていない中間コードのデータ量が減ることを意味している。この印刷ページ全体の進行状況を平均すると，各バンドでまだ登録されていない中間コードのデータ量が推測される。なお，全体のコマンド数における処理済みの描画コマンド数は，描画コマンドまたは中間コードに付加される処理の順番に関する情報から算出される。
【００５３】
本図では，印刷ページ全体のコマンド数における処理済みのコマンドの割合６０％と，メモリ残量２０％を閾値とした例を示している。かかる対応関係は記憶部１４に含まれるＲＯＭに格納されている。
【００５４】
まず，メモリ残量が２０％以上の場合について見てみる。処理済みの描画コマンドの割合６０％以下，つまり残コマンド数が４０％を上回る数存在している場合には，その残りのコマンドから生成される中間コードを対応するバンドの中間コードバッファＩＣ−ＢＵＦに登録すると展開負荷が過剰となり，オーバーランが予測され新たな事前展開の可能性が高くなることを意味する。よって，その場合は，中間コード登録をせずに，ビットマップ画像データに展開して保持する。
【００５５】
一方，残コマンド数が４０％以下の場合は，中間コード登録しても，展開の負荷が問題にならないと考えられるので，中間コードとして登録する。
【００５６】
次に，メモリ残量が２０％を下回る場合について見てみる。描画コマンド残量が４０％を上回る数存在している場合には，ビットマップ画像データに展開して保持する。今後生成される中間コードの展開負荷によりオーバーラン防止のため再度の事前展開の可能性が高くなるからであり，かつメモリ不足による再度の事前展開の可能性が高くなるからである。
【００５７】
描画コマンドの残量が４０％以下で，かつメモリの残量が２０％以下の場合は，図示するように，メモリ残量当たりの描画コマンド数によって，処理形態を判断する。すなわち，残りの描画コマンドから生成される中間コードを保持するのに必要なメモリ残量があるかを判断し，残量があれば，オーバーラン防止のための事前展開またはメモリ不足防止のための事前展開いずれの可能性も低いので，中間コードとして登録する。反対に，中間コードを保持するのに必要なメモリ残量が無ければ，メモリ不足のための事前展開の可能性が高まるので，ビットマップ画像データに展開する。なお，ビットマップ画像データとして保持されていれば，後述する圧縮処理にも対応し易くなる。
【００５８】
再び図５に戻ると，画像処理装置は，工程Ｓ８０における上記のような判断に基づき，中間コードの処理形態を選択し，中間コードバッファＩＣ−ＢＵＦには中間コードの登録を行うか（Ｓ８２），あるいは生成した中間コードをビットマップ画像データに展開し（Ｓ８４），ビットマップ画像データの追加を行う（Ｓ８６）。
【００５９】
このように，オーバーラン，メモリ不足いずれの懸念も少ない状況であれば，処理効率のよい中間コード登録を行い，いずれかが予測されることにより事前展開の可能性が高いようであればビットマップ画像データに展開して保持するので，印刷ジョブ全体としての処理効率を向上させることが可能となる。
【００６０】
図７は，本発明の別の側面における，画像処理装置のデータ圧縮方法を説明する図である。上述した画像処理が進展するにつれて，記憶部１４が備えるメモリ資源が全体として不足する場合が生じる。その場合には，事前展開が発生したバンドのビットマップ画像データを圧縮することにより，メモリの空き容量を確保する。
【００６１】
図７（ａ），（ｂ）は，図形２を描画した時点で事前展開が発生したバンドＢＮＤ２のビットマップ画像データＢＭ２（図７（ａ））が上記のような状況下で圧縮されて圧縮ビットマップ画像データＣＢＭ（図７（ｂ））となる状態を表している。ここに，図形３の描画コマンドから生成された中間コードＩＣ−３が来たとする。その場合に，中間コードＩＣ−３を中間コードのまま登録する方法（図７（ｅ））と，圧縮した圧縮ビットマップ画像データＣＢＭを一旦伸長し，中間コードＩＣ−２から展開されるビットマップ画像データを書き込む方法が可能である（図７（ｃ））。
【００６２】
しかし，圧縮ビットマップ画像データＣＢＭを一旦伸長すると，結局データ量は図７（ａ）のメモリ不足を招いた状況に逆戻りすることになる。よって，中間コードＩＣ−３から展開されるビットマップ画像データを書き込んだ後に再度圧縮しておく必要がある（図７（ｄ））。かかる圧縮・伸長を繰り返すと，それだけ処理が増え，印刷エンジンへのデータ転送までの時間もかかることになる。つまり，印刷ジョブ全体としての処理効率が悪くなる。
【００６３】
そこで，本発明の別の側面では，図７（ｅ）に示すように，圧縮ビットマップ画像データＢＭＰと中間コードとを中間コードバッファＩＣ−ＢＵＦに保持する。そうすることで，圧縮ビットマップ画像データＣＢＭの伸長時間，中間コードＩＣ−３からビットマップ画像データを展開する時間，及びこれらのビットマップ画像データを印刷エンジンに転送する時間を，バンド毎の印刷エンジンへのデータ転送割当て時間内に行うことができる。すると，印刷エンジンへのデータ転送開始までの時間が最小限に抑えられ，印刷ジョブ全体としての処理効率低下を回避できる。その場合には，圧縮ビットマップ画像データＢＭＰの圧縮率を次のような観点から選択する。
【００６４】
まず，中間コードのデータ量が多いと，ビットマップ画像データに展開する負荷が高く，オーバーラン防止のための事前展開が生じやすくなる。事前展開が生じると，印刷エンジンへのデータ転送開始までの処理時間が長くなり処理効率が低下する。よって，少しでも圧縮ビットマップ画像データの伸長速度を速くして，中間コード展開のための時間を確保する必要がある。圧縮ビットマップ画像データの伸長速度は圧縮率と相関関係があり，伸長速度を速くするには低い圧縮率を用いればよい。
【００６５】
しかし，低い圧縮率を用いると，圧縮ビットマップ画像データのデータ量は多くなるためメモリ効率は悪くなり，メモリ不足防止のための事前展開が生じやすくなる。よって，メモリ効率の観点からは，高い圧縮率を用いた方がよい。
【００６６】
上記のように，圧縮ビットマップ画像データの圧縮率が処理効率に与える影響とメモリ効率に与える影響は相反する関係にあるので，登録する中間コードの量を予測してメモリ資源の使用状況に照らし，最適な圧縮率を選択する必要がある。そこで，図８に示す判断に基づき事前展開したバンドのビットマップ画像データに対する２種類の圧縮率を選択する。
【００６７】
図８は，印刷ページの描画コマンドの処理状況とメモリ残量に，選択すべき圧縮率を対応させた図である。縦軸は印刷ページの描画コマンド全体の処理の進行状況を表している。進行状況を示すパーセンテージが高いほど，未処理の描画コマンドが少なく，今後登録すべき中間コード量が少ないことを示している。この印刷ページ全体の進行状況を平均すると，バンド毎に登録すべき中間コードのデータ量が推測される。一方，横軸はメモリの残量をメモリ容量全体の割合で表している。よって，直線Ｌにおいては，未処理の描画コマンド，つまり登録すべき中間コードの全体量における割合に対するメモリ残量の割合が等しくなる。すると，本図においては，未処理の描画コマンドつまり今後登録すべき中間コードに対するメモリ残量が多いほど低い圧縮率を用い，少ないほど高い圧縮率を用いることを表している。
【００６８】
かかる判断は，事前展開したビットマップ画像データを圧縮する場合に行われる。図５における工程を例にとると，工程Ｓ８２において中間コードを登録しようとする際にメモリの消費を伴うため，圧縮が必要となる場合に上記の判断が行われる。処理中の描画コマンドがどの位置にあるかの情報はプリンタドライバＰ−ＤＲから描画コマンドまたは中間コードと共に提供されているので，その情報に基づき，描画コマンドの残量を判断し，そのバンドに対し今後登録すべき中間コードの量を予測することができる。
【００６９】
上述した選択を行うと，登録すべき中間コード量に対するメモリ残量が多く，つまりメモリに比較的余裕があるときは，低い圧縮率を用いて圧縮ビットマップ画像データを作成する。よって，圧縮マップ画像データの伸長速度は速くなるのでバンド毎の印刷エンジンへのデータ転送割当て時間において中間コードからビットマップ画像データを展開する時間を確保し易くなり，オーバーラン防止のための事前展開を回避することができる。
【００７０】
また，中間コード量に対するメモリ残量が少なく，メモリに余裕がないときは，高い圧縮率を用いて圧縮ビットマップ画像データを作成する。よって，圧縮ビットマップ画像データのデータ量は少なくなるため，メモリ不足防止のための事前展開を回避することができる。
【００７１】
このように，中間コードの量とメモリの残量との関係に応じて事前展開したビットマップ画像データの圧縮率を選択することにより，再度の事前展開の可能性を回避しつつ，処理効率とメモリ効率の最適化を図ることができる。
【００７２】
なお，以上において説明した別の側面は，図４（ｂ）または図４（ｃ）のいずれの構成にも適用できるものである。
【００７３】
また，図６及び図８に示した各種判断基準における閾値等は，それぞれにおいて示したものに限られない。
【００７４】
以上のようにして，事前展開が発生したバンドにおいて，追加の中間コードをメモリ領域に登録することにより，事前展開発生後の印刷ジョブ全体としての処理効率の向上を図ることが可能となる。  
【図面の簡単な説明】
【００７５】
【図１】印刷ジョブにおける１印刷ページの描画コマンドに対するバンド毎の処理を説明する図である。
【図２】中間コード生成と登録，及びビットマップ画像データ展開の処理時間について説明する図である。
【図３】事前展開発生後のバンドの登録されていない中間コードに対する処理形態を説明する図である。
【図４】画像処理を行う画像処理装置の概略構成図である。
【図５】本実施の形態における画像処理装置の処理手順を説明するフローチャート図である。
【図６】印刷コマンドの残量とメモリ残量に，追加の中間コードの処理形態が対応づけられた図である。
【図７】本発明の別の側面における，画像処理装置のデータ圧縮方法を説明する図である。
【図８】印刷ページの描画コマンドの処理状況とメモリ残量に，選択すべき圧縮率を対応させた図である。
【符号の説明】
【００７６】
ＩＣ−ＢＵＦ： 中間コードバッファ   Ｂ−ＢＵＦ：バンドバッファ
ＢＭ２：ビットマップ画像データ      ＣＢＭ：圧縮ビットマップ画像データ
ＩＣ−３：中間コード                １２：コントローラ
１４：記憶部                        １６：印刷エンジン                 
ＰＲ−Ｔ：バンド毎の印刷エンジンへのデータ転送割当て時間
【図１】
2007152843.tif 000003
【図２】
2007152843.tif 000004
【図３】
2007152843.tif 000005
【図４】
2007152843.tif 000006
【図５】
2007152843.tif 000007
【図６】
2007152843.tif 000008
【図７】
2007152843.tif 000009
【図８】
2007152843.tif 000010