JP2007152843A - 画像処理装置及び画像処理プログラム - Google Patents
画像処理装置及び画像処理プログラム Download PDFInfo
- Publication number
- JP2007152843A JP2007152843A JP2005353873A JP2005353873A JP2007152843A JP 2007152843 A JP2007152843 A JP 2007152843A JP 2005353873 A JP2005353873 A JP 2005353873A JP 2005353873 A JP2005353873 A JP 2005353873A JP 2007152843 A JP2007152843 A JP 2007152843A
- Authority
- JP
- Japan
- Prior art keywords
- intermediate code
- image data
- band
- bitmap image
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Record Information Processing For Printing (AREA)
Abstract
【課題】事前展開を行った後に追加の描画コマンドから生成される中間コードの処理にかかる時間を最小限に抑え,印刷ジョブ全体を効率良く行う。
【解決手段】印刷ページごとの描画コマンドから生成された中間コードを印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録手段と,バンド毎の中間コードからビットマップ画像データを展開して印刷エンジンへ出力する展開手段とを有する画像処理装置において,前記展開手段がバンド毎の割当て時間の前にビットマップ画像データを事前展開したバンドにおいて登録されていない中間コードが発生する場合は,中間コードのデータ量に応じて,当該中間コードの登録,あるいは,当該中間コードからのビットマップ画像データの展開のいずれかを実行する。
【選択図】図5
【解決手段】印刷ページごとの描画コマンドから生成された中間コードを印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録手段と,バンド毎の中間コードからビットマップ画像データを展開して印刷エンジンへ出力する展開手段とを有する画像処理装置において,前記展開手段がバンド毎の割当て時間の前にビットマップ画像データを事前展開したバンドにおいて登録されていない中間コードが発生する場合は,中間コードのデータ量に応じて,当該中間コードの登録,あるいは,当該中間コードからのビットマップ画像データの展開のいずれかを実行する。
【選択図】図5
Description
本発明は,印刷ページごとの描画コマンドから中間コードを生成し,前記中間コードからビットマップ画像データを展開する画像処理装置及び画像処理プログラムに関し,特に,ビットマップ画像データを展開したバンドに対する追加の描画コマンドを中間コードとしてメモリに格納する場合と,ビットマップ画像データに展開して格納する場合とを選択できる画像処理装置及び画像処理プログラムに関する。
プリンタなどの画像形成装置は,印刷データを処理する画像処理装置と,画像処理装置により形成された画像データに基づき画像を印刷する印刷エンジンとを有する。画像処理装置は,ページ記述言語で記述された描画コマンドから成る印刷データをホストコンピュータから受け取り,描画コマンドを解析して画像データへの展開が容易な中間コードを生成し,中間コードに基づくビットマップ画像データをメモリ上に展開する。そして,画像処理装置はビットマップ画像データを画像再生信号として印刷エンジンに出力する。
かかる画像処理装置は,印刷ページを複数に分割したバンド領域ごとに画像処理を行う。すなわち,印刷ページ毎の描画コマンドを順次解析し,中間コードを生成してバンド毎に確保したメモリ領域に登録する。そして,1印刷ページ分の中間コードの登録を終了してから,順次バンド毎に中間コードからビットマップ画像データに展開し,ビットマップ画像データを画像再生信号として印刷エンジンへ出力する。
中間コードからビットマップ画像データを展開し,印刷エンジンへ出力する工程はバンド毎に割当てられた時間内に行われる。この印刷エンジンへのデータ転送割り当て時間はプリンタの動作に同期したものであるため,各バンド均等である。印刷エンジンの側では,所定の割当時間毎に画像処理装置から受け取った画像再生信号に基づき,バンド毎に画像形成して印刷を実行する。
しかし,バンドによっては印刷内容が多いものがあり,その分中間コードの量が他のバンドより多くなることがある。よって,かかる中間コードからビットマップ画像データを展開する場合は他のバンドより多くの処理時間を要するため,各バンド均等に割当てられた印刷エンジンへのデータ転送割当て時間内にビットマップ画像データを展開することが終了しない場合が生じる。そうすると印刷エンジンの画像形成は失敗し,いわゆるオーバーランというエラーが生じる。
かかるオーバーランを未然に防ぐために,事前展開という方法が提案されている。事前展開とは,オーバーランが予測されるような大量の中間コードを有するバンドについては,中間コード登録の代わりに予めビットマップ画像データを展開し,メモリに保持しておく方法である。そうすることにより,バンド毎の印刷エンジンへのデータ転送割当て時間内にはビットマップ画像データ展開を行わずにデータ転送だけを行えばよいので,オーバーランを防止できる。例えば,特許文献1には,バンド毎の中間コードにビットマップ画像データへ展開する処理時間の評価値を持たせておき,この評価値が閾値を超えた場合に事前展開を行うことにより,オーバーランを防止する方法が記載されている。
また,事前展開はオーバーラン防止の他に,メモリ資源の節約のために実行される場合がある。中間コードは,描画する画像の形状,位置,色等の情報を有するリスト構造のデータであり,描画する画像によっては,中間コードよりも二値化されたビットマップ画像データの方がデータ量が少なくなることがある。そうした場合には,中間コードを登録する代わりに事前展開したビットマップ画像データをメモリに保持することにより,メモリ資源を節約することが可能となる。
特開2001−1576号公報
上記のような従来の技術においては事前展開を行うことによりオーバーランを防止でき,またはメモリ不足となることを回避することが可能となる。さらに,事前展開したビットマップ画像データを圧縮することによりメモリを節約することも可能となる。
しかしながら,事前展開を行うということは,本来バンド毎の印刷エンジンへのデータ転送割当て時間内に行っていたビットマップ画像データへの展開を,印刷エンジンへのデータ転送割当時間の前に前倒しで行うものであるので,データ転送を開始するまでの処理時間が長くなることを意味する。
また,事前展開は1印刷ページ分の中間コードの登録が終了する前に行われるので,事前展開されたバンドにおいて追加の描画コマンドの処理が発生する場合がある。さらに,一旦展開されたビットマップ画像データを圧縮することによりメモリ資源の節約を図る場合においても,圧縮されたデータの展開処理が発生する。すると,これらの追加の処理にかかる時間が印刷ジョブ全体の処理時間を遅らせる要因となる。
そこで,本発明の目的は,事前展開を行った後に追加の描画コマンドから生成される中間コードの処理にかかる時間を最小限に抑え,印刷ジョブ全体を効率良く行うための画像処理装置及び画像処理プログラムを提供することにある。
上記の目的を達成するために,本発明の第1の側面における画像処理装置は,描画コマンドから生成された中間コードに基づいてビットマップ画像データを展開し,前記展開したビットマップ画像データに対応する画像形成信号を印刷エンジンに出力し,前記中間コードを印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録手段と,前記バンド毎の中間コードからビットマップ画像データを展開する展開手段とを有しており,前記展開手段は,前記印刷エンジンへ前記画像形成信号を出力している時に,前記登録した中間コードからビットマップ画像データを展開する第1の展開処理,または,前記印刷エンジンへ前記画像形成信号を出力する前に,前記生成された中間コードからバンド毎にビットマップ画像データを事前展開する第2の展開処理のいずれかをバンド毎に行い,前記第2の展開処理が行われたバンドにおいてさらに登録されていない中間コードが発生する場合は,前記登録手段は当該中間コードを対応するバンドのメモリに登録することを特徴とする。
上記第1の側面における画像処理装置によれば,事前展開が発生したバンドにおいて,追加された中間コードのビットマップ画像データへの展開を印刷エンジンへのデータ転送割当て時間内に行うことができる。よって,印刷エンジンへのデータ転送開始前の処理を最小限に抑えることができ,事前展開発生後の印刷ジョブ全体としての処理効率が向上する。
上記第1の側面の好ましい実施例における画像処理装置は,前記第2の展開処理が行われたバンドにおいて登録されていない中間コードが発生する場合であって,当該登録されていない中間コードの量が所定の基準値以下のときは,前記登録手段は当該中間コードを登録せずに,前記展開手段は当該中間コードに対し前記第2の展開処理を行うことを特徴とする。
上記実施例における画像処理装置は,中間コード量に基づき,ビットマップ画像データへの展開負荷が高い中間コードを予めビットマップ画像データに展開してメモリに保持するので,一旦中間コードを登録してから再度の事前展開が生じる場合の追加的な処理時間を回避でき,印刷ジョブ全体としての処理効率の向上を図ることができる。
上記実施例における画像処理装置は,中間コード量に基づき,ビットマップ画像データへの展開負荷が高い中間コードを予めビットマップ画像データに展開してメモリに保持するので,一旦中間コードを登録してから再度の事前展開が生じる場合の追加的な処理時間を回避でき,印刷ジョブ全体としての処理効率の向上を図ることができる。
本発明の第2の側面における画像処理装置は,描画コマンドから生成された中間コードに基づいてビットマップ画像データを展開し,前記展開したビットマップ画像データに対応する画像形成信号を印刷エンジンに出力し,前記中間コードを前記印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録手段と,前記バンド毎の中間コードからビットマップ画像データを展開する展開手段と,前記バンド毎のビットマップ画像データを圧縮する圧縮手段とを有しており,前記展開手段は,前記印刷エンジンへ前記画像形成信号を出力している時に,前記登録した中間コードからビットマップ画像データを展開する第1の展開処理,または,前記印刷エンジンへ前記画像形成信号を出力する前に,前記生成された中間コードからバンド毎にビットマップ画像データを事前展開する第2の展開処理のいずれかをバンド毎に行い,前記第2の展開処理が行われたバンドに対応するメモリに中間コードを追加して登録する場合に,当該追加登録する中間コードのデータ量に対するメモリの残量が所定の基準値を上回るときは,前記圧縮手段は当該バンドのビットマップ画像データに対し第1の圧縮率で圧縮を行い,当該追加登録する中間コードのデータ量に対するメモリの残量が前記所定の基準値以下のときは,前記圧縮手段は,当該バンドのビットマップ画像データに対し,前記第1の圧縮率より高い第2の圧縮率で圧縮を行うことを特徴とする。
上記第2の側面における画像処理装置によれば,事前展開されたビットマップ画像データの圧縮率を選択することにより,中間コードをビットマップ画像データに展開する負荷が高いことによるオーバーランを防止するための事前展開や,メモリ不足を防止するための事前展開を再度行うような事態を回避でき,印刷ジョブの効率向上を図ることができる。
以下,図面にしたがって本発明の実施の形態について説明する。但し,本発明の技術的範囲はこれらの実施の形態に限定されず,特許請求の範囲に記載された事項とその均等物まで及ぶものである。
図1は,印刷ジョブにおける1印刷ページの描画コマンドに対するバンド毎の処理を説明する図である。印刷ページの一例として,文字1,図形2,図形3,及び図形4という画像オブジェトを有する印刷ページPP1を図示している。この印刷ページPP1は,さらに複数のバンドBND1〜4に分割される。
かかる印刷ページPP1を印刷する際には,まずPDL(ページ記述言語)で記述された印刷コマンドP−CMから中間コードが生成され,メモリ上に確保した中間コードバッファIC−BUFにバンドごとに登録される。なお,以下の文中では,中間コードバッファIC−BUFとは1印刷ページ分の中間コードをビットマップ画像データに展開するまでの間保持するために一時的に割当てたメモリ領域を意味し,メモリ上の特定の領域を限定して意味するものではない。
通常時は,印刷ページPP1の全ての描画コマンドが中間コード登録された後に,メモリ上に確保したバンドバッファB−BUFに順次バンド毎のビットマップ画像データBB1,BB2,・・・として展開され,印刷エンジンに画像形成信号GSとしてデータ転送が行われる。ビットマップ画像データの展開と印刷エンジンへのデータ転送は,印刷エンジンの動作に同期して各バンド均等に割当てられたデータ転送割当時間内に,バンド毎に行われる。
しかし,バンド内の中間コード量が多く,ビットマップ画像データへの展開と印刷エンジンへのデータ転送がバンド毎の印刷エンジンへのデータ転送割当て時間内に終了しないこと,つまりオーバーランが予測される場合には,事前展開が行われる。例えば,図形2の中間コードの量が多くオーバーランが予測される場合には,中間コードバッファIC−BUFまたはワークメモリ領域に,バンドBND2のビットマップ画像データBM2が展開され,保持される。
ここで,事前展開は中間コードが保有する処理時間の負荷係数を基準にオーバーランを予測して行われるので,図で示すように,例えば図形2の描画コマンドを中間コード化した時点で事前展開したとすると,バンドBND2には図形3がまだ描画されていない状態でビットマップ画像データが展開される。よって,バンドBND2においては,事前展開後に図形3の描画コマンドを処理することになる。
また,事前展開は,メモリ資源節約のために行われる場合もある。上記の例では,図形2を描画する中間コードが大量であって,中間コードを中間コードバッファIC−BUFに登録するとメモリ不足が予期される場合には,二値データであるビットマップ画像データに展開した方がデータ量が少なくなることから,事前展開が行われる。
図2は,中間コード生成と登録,及びビットマップ画像データ展開の処理時間について説明する図である。横軸方向に時間経過を示し,バンド単位での処理時間を示している。
図2(a)は通常時の処理時間を示している。まず,描画コマンドから中間コードが生成される中間コード生成時間IC−T1と,生成された中間コードを中間コードバッファIC−BUFに登録する中間コード登録時間IC−T2が発生する。これら中間コード生成時間IC−T1と中間コード登録時間IC−T2は描画コマンド毎に発生するが,本図においては1回のみ図示してある。
その後に,ビットマップ画像データ展開と印刷エンジンへの転送を行う。それぞれの処理時間はビットマップ画像データ展開時間BM−Tと印刷エンジン転送時間TR−Tとして示されている。この2つの処理は,バンド毎の印刷エンジンへのデータ転送割当て時間PR−T内に行われる。データ転送割当て時間PR−Tは,上述のように,印刷エンジンの動作に同期した時間であり,各バンド均等に割当てられている。よって,印刷エンジンの動作速度によって長短が生じる。
図2(a)では,ビットマップ画像データ展開時間BM−Tと印刷エンジン転送時間TR−Tの合計がバンド毎の印刷エンジンへのデータ転送割当て時間PR−T以下であるので,オーバーランは生じないことを表している。しかし,登録された中間コードが大量であるため展開に時間がかかり,ビットマップ画像データ展開時間BM−Tが増大することにより上記合計時間がバンド毎の印刷エンジンへのデータ転送時割当て間PR−Tを超過すると,オーバーランが生ずることになる。
図2(b)はオーバーランを防止するために事前展開を行う場合の処理時間を示している。図示するように,中間コード登録時間IC−T2が省略され,予めビットマップ画像データ展開が行われる。よって,ビットマップ画像データ展開時間BM−Tが前倒しされる。この場合は,印刷エンジンへのデータ転送割当て時間PR−T内で行う処理は印刷エンジンへのデータ転送のみであるので,矢印△Uで示す時間が空き時間となる。また,処理時間としては中間コード登録時間IC−T2よりビットマップ画像データ展開時間BM−Tの方が長いため,印刷エンジンへのデータ転送開始が矢印△Dの分だけ遅れることになる。
上記のとおり,事前展開が発生した場合は,印刷エンジンへのデータ転送開始が遅くなることで印刷ジョブ全体の処理速度が遅くなる。ここで,事前展開が生じたバンドにおける追加の描画コマンドから生成された中間コードの処理形態を,図3を用いて説明しておく。
図3は,事前展開発生後のバンドの登録されていない中間コードに対する処理形態を説明する図である。図3(a)に示すように,図形2の一部を描画した段階で事前展開されたバンドBND2のビットマップ画像データBM2に対し,図形3の描画コマンドから生成された中間コードIC−3を処理する場合を例として説明する。
まず,図3(b)で示すように中間コードIC−3をビットマップ画像データに展開して,ビットマップ画像データBM2の背景を構成する画素のデータに対し図形3を上書きする方法が可能である。また,図3(c)に示すように,本実施の形態における画像処理装置が特徴とする,中間コードのまま中間コードバッファIC−BUFに登録する方法が可能である。いずれの場合でも,バンドに割当てられた中間コードバッファの容量MEM−C以下であれば,メモリ不足にならずにデータを保持することができる。
図3(b),(c)で説明した方法の処理時間を,再び図2を用いて比較する。まず,図3(b)で説明したビットマップ画像データに展開して保持する場合の処理時間を図2(c)に示す。中間コードIC−3を生成する中間コード生成時間IC−T12が,図2(b)の場合に対し追加的に発生する。次に,中間コードIC−3をビットマップ画像データに展開するビットマップ画像データ展開時間BM−T2が生じる。その後,印刷エンジンへのデータ転送割当て時間PR−T内に印刷エンジンへのデータ転送が行われるので,同時間内に印刷エンジン転送時間TR−Tが生じる。この場合,依然として矢印△Uが示す時間が空き時間となっている。
次に,図3(c)で説明した中間コードのまま保持する場合の処理時間を図2(d)に示す。中間コードIC−3を生成する中間コード生成時間IC−T12と,中間コードIC−3を登録する時間IC−T22が図2(b)の場合に対し追加的に発生する。その後,印刷エンジンへの転送が始まってから中間コードIC−3をビットマップ画像データに展開するので,印刷エンジンへのデータ転送時間PR−T内にビットマップ画像データ展開時間BM―T2と印刷エンジン転送時間TR−Tが生じる。ここで,これらのビットマップ画像データ展開時間BM−Tと印刷エンジン転送時間TR−Tの合計が印刷エンジンへのデータ転送割当て時間PR−T以下であればオーバーランは生じない。
このように,中間コードIC−2を中間コードとして保持することにより,ビットマップ画像データ展開時間BM―T2をそのバンドの印刷エンジンへのデータ転送割当て時間PR−T内に吸収できることになる。よって,図2(c)の場合より矢印△D2の分だけ印刷開始を早めることができるので,印刷ジョブ全体の処理効率が向上する。つまり図2(c)の矢印△Uが示す空いた時間を有効活用することができる。
しかし,中間コードIC−3の量が多くビットマップ画像データ展開時間BM−T2が増大する場合や,中間コードIC−3の後にもさらに追加の中間コードを登録することにより追加のビットマップ画像データ展開時間が発生することが予測される場合には,ビットマップ画像データへの展開時間と印刷エンジンへのデータ転送時間がバンドの印刷エンジンへのデータ転送割当て時間を超過する可能性が高くなる。すると,オーバーラン防止のための事前展開を再度行う必要が生じてしまう。あるいは,多くの中間コードを登録することによりメモリ不足が予測される場合には,これを回避するための事前展開の必要性も生じてしまう。よって,そのような場合には,図2(c)の場合のように,印刷ジョブ全体としての処理は遅くなるものの予めビットマップ画像データに展開する方が望ましい。
本実施の形態における画像処理装置では,上記のように,事前展開後さらに描画コマンドから生成された中間コードを処理する場合に,中間コード登録またはビットマップ画像データ展開のいずれかを動的に選択し,印刷エンジンへのデータ転送割当て時間の無駄の削減を図り印刷ジョブ全体の処理効率を向上させるものである。すなわち,追加される中間コードの量を予測し,オーバーランやメモリ不足のおそれがなければ処理効率の良い中間コードで保持する形態を選択し,そうでなければビットマップ画像データに展開した形で保持する形態を選択する。なお,選択の手順については後述する。
図4は,上述した画像処理を行う画像処理装置の概略構成図である。図4(a)では,ページ記述言語で記述された一連の描画コマンドから成る印刷データPDLが,ホストコンピュータHOSTのプリンタドライバP−DRから,画像形成装置の一例であるプリンタ10のコントローラ12に供給される。
コントローラ12は,画像処理の内容を記述したプログラムとそのプログラムに従って動作する制御装置で実装され,印刷データPDLの描画コマンドの解析,中間コードの生成,及びビットマップ画像データの展開,圧縮,二値化などの処理を行う。また,コントローラ12は記憶部14におけるメモリ資源の管理や印刷エンジン16の動作の制御を行う。
記憶部14はROM及びRAMを有し,RAM上には生成された中間コードを登録する中間コードバッファIC−BUFと,中間コードからビットマップ画像データが展開されるバンドバッファB−BUFが確保される。
コントローラ12は,印刷ページの全ての描画コマンドから中間コードを生成し,生成した中間コードをバンド毎に中間コードバッファIC−BUFに登録する。登録を終了したら,バンド毎に順次中間コードバッファIC−BUFの中間コードを読み出してバンドバッファB−BUFに二値化されたビットマップ画像データを展開する。そして,バンドバッファB−BUFに保持されたビットマップ画像データは,バンド毎に図示しないパルス幅変調器により画像形成信号に変換されて印刷エンジン16へ転送される。
コントローラ12は,描画コマンドを解析して中間コードを生成する段階で,生成する中間コードが有するビットマップ画像データに展開される際の処理時間の負荷係数に基づき,オーバーランの可能性を判断する。すなわち,1つのバンドおける中間コードの負荷係数の累計が予め記憶部14に格納された閾値を超える場合にはオーバーランが予測される。その場合は,中間コードバッファIC−BUFへはその中間コードを登録せずに,そのバンドの登録済みの中間コードと共にビットマップ画像データに展開して保持する。これが事前展開である。また,中間コードを中間コードバッファIC−BUFに登録することにより記憶部14のメモリの残量が不足することが予測される場合にも,同様の事前展開の処理を行う。
また,コントローラ12は,上記の事前展開を行った後にそのバンドの中間コードバッファIC−BUFに新たに中間コードを登録しようとする場合には,図5において説明する手順に従って,処理を行う。あるいは,コントローラ12は,メモリ不足に対処するために中間コードバッファIC−BUFに事前展開されたビットマップ画像データの圧縮を行う。
以上の構成において,コントローラ12と記憶部14が画像処理装置に対応する。また,記憶部14のROMに格納されコントローラ12の処理手順を記述したプログラムは画像処理プログラムに対応する。
図4(b)では,ホストコンピュータHOST内のプリンタドライバP−DRが,印刷データPDLからバンド領域ごとに中間コードを生成し,その中間コードICをプリンタ10のコントローラ12に供給する。コントローラ12は,供給された中間コードICに基づいてビットマップ画像データをバンドバッファB−BUFに展開し,展開されたビットマップ画像データから生成した画像再生信号を印刷エンジン16に供給する。この場合も,コントローラ12と記憶部14が画像処理装置に対応する。また,記憶部14のROMに格納されコントローラ12の処理手順を記述したプログラムは画像処理プログラムに対応する。
さらに,図4(c)では,ホストコンピュータHOST内のプリンタドライバP−DRが,印刷データからバンド領域内の中間コードを生成し,その中間コードに基づいてビットマップ画像データをバンドバッファB−BUF内に展開して,圧縮されたビットマップ画像データBMをプリンタ10内のコントローラ12に出力する。この場合は,プログラムであるプリンタドライバP−DRが画像処理プログラムに対応する。
図5は,本実施の形態における画像処理装置の処理手順を説明するフローチャート図である。図4(a)のコントローラ12と記憶部14の動作を例として説明しているが,図4(b)または図4(c)の構成にも適用できる。
画像処理装置は,ホストコンピュータHOSTのプリンタドライバP−DRから送られてくるPDL(ページ記述言語)による描画コマンド個々に対し,以下の手順で処理を行う。まず,PDLを解析し描画コマンドを生成する(S10)。描画コマンドには,印刷ページの描画コマンド全体における処理の順番を示す情報が付加されており,処理の進行状況の判断に用いることができる。そして,改ページコマンドでない限り次の処理を行う(S20のNO)。
解析した描画コマンドから中間コードを生成し(S40),その時点で事前展開がされているか否かを判断する(S60)。事前展開後であれば工程S80へ進み,事前展開されていなければ,生成した中間コードに付随する処理時間を示す負荷係数が事前展開が予見される閾値を超えているか,あるいは,生成した中間コードのデータ量がメモリ不足を引き起こす閾値を超えているかを判断する(S70)。いずれかの閾値を超えていれば事前展開を行う(S72)。
事前展開が既に行われていた場合(S60のYES)は,印刷ページ全体としての描画コマンドの残量とメモリの残量を判断する(S80)。ここで,プリンタドライバP−DRから描画コマンドと共に提供されている処理の順番に関する情報に基づき,処理中の描画コマンド以降の描画コマンド残量を判断することができる。すると,描画コマンドの残量に対応して今後生成される中間コードのデータ量も推測できるので,バンド毎の登録されていない中間コード量も推測できる。なお,図4(b)の構成に適用する場合は,印刷ページの描画コマンド全体における順番を示す情報は,中間コードに付加されてホストコンピュータHOSTのプリンタドライバP−DRから提供される。
さらに,上記情報に加えて記憶部14におけるメモリ資源の残量を取得し,図6に示すような判断基準における基準値を用いることにより,その後の処理を判断する。ここで図6を用いて判断基準を説明しておく。
図6は,印刷コマンドの残量とメモリ残量に,追加の中間コードの処理形態が対応づけられた図である。横軸にメモリの残量を示し,縦軸に印刷ページにおける処理の進行状況を示している。
縦軸の処理の進行状況は,印刷ページ全体のコマンド数に対する処理済みの描画コマンドの割合で表される。縦軸の数値が増すほど処理済みの描画コマンド数が増え,未処理の描画コマンド,つまりまだ登録されていない中間コードのデータ量が減ることを意味している。この印刷ページ全体の進行状況を平均すると,各バンドでまだ登録されていない中間コードのデータ量が推測される。なお,全体のコマンド数における処理済みの描画コマンド数は,描画コマンドまたは中間コードに付加される処理の順番に関する情報から算出される。
本図では,印刷ページ全体のコマンド数における処理済みのコマンドの割合60%と,メモリ残量20%を閾値とした例を示している。かかる対応関係は記憶部14に含まれるROMに格納されている。
まず,メモリ残量が20%以上の場合について見てみる。処理済みの描画コマンドの割合60%以下,つまり残コマンド数が40%を上回る数存在している場合には,その残りのコマンドから生成される中間コードを対応するバンドの中間コードバッファIC−BUFに登録すると展開負荷が過剰となり,オーバーランが予測され新たな事前展開の可能性が高くなることを意味する。よって,その場合は,中間コード登録をせずに,ビットマップ画像データに展開して保持する。
一方,残コマンド数が40%以下の場合は,中間コード登録しても,展開の負荷が問題にならないと考えられるので,中間コードとして登録する。
次に,メモリ残量が20%を下回る場合について見てみる。描画コマンド残量が40%を上回る数存在している場合には,ビットマップ画像データに展開して保持する。今後生成される中間コードの展開負荷によりオーバーラン防止のため再度の事前展開の可能性が高くなるからであり,かつメモリ不足による再度の事前展開の可能性が高くなるからである。
描画コマンドの残量が40%以下で,かつメモリの残量が20%以下の場合は,図示するように,メモリ残量当たりの描画コマンド数によって,処理形態を判断する。すなわち,残りの描画コマンドから生成される中間コードを保持するのに必要なメモリ残量があるかを判断し,残量があれば,オーバーラン防止のための事前展開またはメモリ不足防止のための事前展開いずれの可能性も低いので,中間コードとして登録する。反対に,中間コードを保持するのに必要なメモリ残量が無ければ,メモリ不足のための事前展開の可能性が高まるので,ビットマップ画像データに展開する。なお,ビットマップ画像データとして保持されていれば,後述する圧縮処理にも対応し易くなる。
再び図5に戻ると,画像処理装置は,工程S80における上記のような判断に基づき,中間コードの処理形態を選択し,中間コードバッファIC−BUFには中間コードの登録を行うか(S82),あるいは生成した中間コードをビットマップ画像データに展開し(S84),ビットマップ画像データの追加を行う(S86)。
このように,オーバーラン,メモリ不足いずれの懸念も少ない状況であれば,処理効率のよい中間コード登録を行い,いずれかが予測されることにより事前展開の可能性が高いようであればビットマップ画像データに展開して保持するので,印刷ジョブ全体としての処理効率を向上させることが可能となる。
図7は,本発明の別の側面における,画像処理装置のデータ圧縮方法を説明する図である。上述した画像処理が進展するにつれて,記憶部14が備えるメモリ資源が全体として不足する場合が生じる。その場合には,事前展開が発生したバンドのビットマップ画像データを圧縮することにより,メモリの空き容量を確保する。
図7(a),(b)は,図形2を描画した時点で事前展開が発生したバンドBND2のビットマップ画像データBM2(図7(a))が上記のような状況下で圧縮されて圧縮ビットマップ画像データCBM(図7(b))となる状態を表している。ここに,図形3の描画コマンドから生成された中間コードIC−3が来たとする。その場合に,中間コードIC−3を中間コードのまま登録する方法(図7(e))と,圧縮した圧縮ビットマップ画像データCBMを一旦伸長し,中間コードIC−2から展開されるビットマップ画像データを書き込む方法が可能である(図7(c))。
しかし,圧縮ビットマップ画像データCBMを一旦伸長すると,結局データ量は図7(a)のメモリ不足を招いた状況に逆戻りすることになる。よって,中間コードIC−3から展開されるビットマップ画像データを書き込んだ後に再度圧縮しておく必要がある(図7(d))。かかる圧縮・伸長を繰り返すと,それだけ処理が増え,印刷エンジンへのデータ転送までの時間もかかることになる。つまり,印刷ジョブ全体としての処理効率が悪くなる。
そこで,本発明の別の側面では,図7(e)に示すように,圧縮ビットマップ画像データBMPと中間コードとを中間コードバッファIC−BUFに保持する。そうすることで,圧縮ビットマップ画像データCBMの伸長時間,中間コードIC−3からビットマップ画像データを展開する時間,及びこれらのビットマップ画像データを印刷エンジンに転送する時間を,バンド毎の印刷エンジンへのデータ転送割当て時間内に行うことができる。すると,印刷エンジンへのデータ転送開始までの時間が最小限に抑えられ,印刷ジョブ全体としての処理効率低下を回避できる。その場合には,圧縮ビットマップ画像データBMPの圧縮率を次のような観点から選択する。
まず,中間コードのデータ量が多いと,ビットマップ画像データに展開する負荷が高く,オーバーラン防止のための事前展開が生じやすくなる。事前展開が生じると,印刷エンジンへのデータ転送開始までの処理時間が長くなり処理効率が低下する。よって,少しでも圧縮ビットマップ画像データの伸長速度を速くして,中間コード展開のための時間を確保する必要がある。圧縮ビットマップ画像データの伸長速度は圧縮率と相関関係があり,伸長速度を速くするには低い圧縮率を用いればよい。
しかし,低い圧縮率を用いると,圧縮ビットマップ画像データのデータ量は多くなるためメモリ効率は悪くなり,メモリ不足防止のための事前展開が生じやすくなる。よって,メモリ効率の観点からは,高い圧縮率を用いた方がよい。
上記のように,圧縮ビットマップ画像データの圧縮率が処理効率に与える影響とメモリ効率に与える影響は相反する関係にあるので,登録する中間コードの量を予測してメモリ資源の使用状況に照らし,最適な圧縮率を選択する必要がある。そこで,図8に示す判断に基づき事前展開したバンドのビットマップ画像データに対する2種類の圧縮率を選択する。
図8は,印刷ページの描画コマンドの処理状況とメモリ残量に,選択すべき圧縮率を対応させた図である。縦軸は印刷ページの描画コマンド全体の処理の進行状況を表している。進行状況を示すパーセンテージが高いほど,未処理の描画コマンドが少なく,今後登録すべき中間コード量が少ないことを示している。この印刷ページ全体の進行状況を平均すると,バンド毎に登録すべき中間コードのデータ量が推測される。一方,横軸はメモリの残量をメモリ容量全体の割合で表している。よって,直線Lにおいては,未処理の描画コマンド,つまり登録すべき中間コードの全体量における割合に対するメモリ残量の割合が等しくなる。すると,本図においては,未処理の描画コマンドつまり今後登録すべき中間コードに対するメモリ残量が多いほど低い圧縮率を用い,少ないほど高い圧縮率を用いることを表している。
かかる判断は,事前展開したビットマップ画像データを圧縮する場合に行われる。図5における工程を例にとると,工程S82において中間コードを登録しようとする際にメモリの消費を伴うため,圧縮が必要となる場合に上記の判断が行われる。処理中の描画コマンドがどの位置にあるかの情報はプリンタドライバP−DRから描画コマンドまたは中間コードと共に提供されているので,その情報に基づき,描画コマンドの残量を判断し,そのバンドに対し今後登録すべき中間コードの量を予測することができる。
上述した選択を行うと,登録すべき中間コード量に対するメモリ残量が多く,つまりメモリに比較的余裕があるときは,低い圧縮率を用いて圧縮ビットマップ画像データを作成する。よって,圧縮マップ画像データの伸長速度は速くなるのでバンド毎の印刷エンジンへのデータ転送割当て時間において中間コードからビットマップ画像データを展開する時間を確保し易くなり,オーバーラン防止のための事前展開を回避することができる。
また,中間コード量に対するメモリ残量が少なく,メモリに余裕がないときは,高い圧縮率を用いて圧縮ビットマップ画像データを作成する。よって,圧縮ビットマップ画像データのデータ量は少なくなるため,メモリ不足防止のための事前展開を回避することができる。
このように,中間コードの量とメモリの残量との関係に応じて事前展開したビットマップ画像データの圧縮率を選択することにより,再度の事前展開の可能性を回避しつつ,処理効率とメモリ効率の最適化を図ることができる。
なお,以上において説明した別の側面は,図4(b)または図4(c)のいずれの構成にも適用できるものである。
また,図6及び図8に示した各種判断基準における閾値等は,それぞれにおいて示したものに限られない。
以上のようにして,事前展開が発生したバンドにおいて,追加の中間コードをメモリ領域に登録することにより,事前展開発生後の印刷ジョブ全体としての処理効率の向上を図ることが可能となる。
IC−BUF: 中間コードバッファ B−BUF:バンドバッファ
BM2:ビットマップ画像データ CBM:圧縮ビットマップ画像データ
IC−3:中間コード 12:コントローラ
14:記憶部 16:印刷エンジン
PR−T:バンド毎の印刷エンジンへのデータ転送割当て時間
BM2:ビットマップ画像データ CBM:圧縮ビットマップ画像データ
IC−3:中間コード 12:コントローラ
14:記憶部 16:印刷エンジン
PR−T:バンド毎の印刷エンジンへのデータ転送割当て時間
Claims (7)
- 描画コマンドから生成された中間コードに基づいてビットマップ画像データを展開し,前記展開したビットマップ画像データに対応する画像形成信号を印刷エンジンに出力する画像処理装置において,
前記中間コードを印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録手段と,
前記バンド毎の中間コードからビットマップ画像データを展開する展開手段とを有し,
前記展開手段は,前記印刷エンジンへ前記画像形成信号を出力している時に,前記登録した中間コードからビットマップ画像データを展開する第1の展開処理,または,前記印刷エンジンへ前記画像形成信号を出力する前に,前記生成された中間コードからバンド毎にビットマップ画像データを事前展開する第2の展開処理のいずれかをバンド毎に行い,
前記第2の展開処理が行われたバンドにおいてさらに登録されていない中間コードが発生する場合は,前記登録手段は当該中間コードを対応するバンドのメモリに登録することを特徴とする画像処理装置。 - 請求項1において,
前記第2の展開処理が行われたバンドにおいて登録されていない中間コードが発生する場合であっても,当該登録されていない中間コードのデータ量が所定の基準値以下のときは,前記登録手段は当該中間コードを登録せずに,前記展開手段は当該中間コードに対し前記第2の展開処理を行うことを特徴とする画像処理装置。 - 請求項1または2において,
前記第2の展開処理が行われたバンドの前記展開されたビットマップ画像データを圧縮する圧縮手段をさらに有し,
前記圧縮手段がビットマップ画像データを圧縮したバンドにおいてさらに登録されていない中間コードが発生する場合は,前記登録手段は当該中間コードを当該バンドのメモリに登録することを特徴とする画像処理装置。 - 描画コマンドから生成された中間コードに基づいてビットマップ画像データを展開し,前記展開したビットマップ画像データに対応する画像形成信号を印刷エンジンに出力する画像処理装置において,
前記中間コードを前記印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録手段と,
前記バンド毎の中間コードからビットマップ画像データを展開する展開手段と,
前記バンド毎のビットマップ画像データを圧縮する圧縮手段とを有し,
前記展開手段は,前記印刷エンジンへ前記画像形成信号を出力している時に,前記登録した中間コードからビットマップ画像データを展開する第1の展開処理,または,前記印刷エンジンへ前記画像形成信号を出力する前に,前記生成された中間コードからバンド毎にビットマップ画像データを事前展開する第2の展開処理のいずれかをバンド毎に行い,
前記第2の展開処理が行われたバンドに対応するメモリに中間コードを追加して登録する場合に,当該追加登録する中間コードのデータ量に対するメモリの残量が所定の基準値を上回るときは,前記圧縮手段は当該バンドのビットマップ画像データに対し第1の圧縮率で圧縮を行い,当該追加登録する中間コードのデータ量に対するメモリの残量が前記所定の基準値以下のときは,前記圧縮手段は,当該バンドのビットマップ画像データに対し,前記第1の圧縮率より高い第2の圧縮率で圧縮を行うことを特徴とする画像処理装置。 - 請求項1乃至4のいずれかの画像処理装置を備え,
前記画像処理装置が展開した前記バンド毎のビットマップ画像データに基づき画像形成を行う画像形成装置。 - 描画コマンドから生成された中間コードに基づいてビットマップ画像データを展開し,前記展開したビットマップ画像データを画像形成装置に出力する画像処理プログラムにおいて,
前記中間コードを印刷ページを複数に分割したバンド領域に分けてメモリに登録する登録工程と,
前記画像形成装置へビットマップ画像データを出力する時に,前記登録された中間コードからビットマップ画像データを展開して前記画像形成装置へ出力する第1の展開処理,または,前記画像形成装置へビットマップ画像データを出力する前に,前記生成された中間コードからビットマップ画像データを事前展開する第2の展開処理のいずれかをバンド毎に行う展開工程と,
前記第2の展開処理が行われたバンドにおいてさらに登録されていない中間コードが発生する場合に,当該登録されていない中間コードのデータ量が所定の基準値を上回るときは,当該中間コードを対応するバンドのメモリに登録し,当該登録されていない中間コードのデータ量が前記所定の基準値以下のときは,当該中間コードを登録せずに,当該中間コードに対して前記第2の展開処理を行う工程とをコンピュータに実行させることを特徴とする画像処理プログラム。 - 描画コマンドから生成された中間コードに基づいてビットマップ画像データを展開し,前記展開したビットマップ画像データを画像形成装置に出力する画像処理プログラムにおいて,
前記中間コードを前記印刷ページを複数に分割したバンド領域に分けてメモリに登録する工程と,
前記画像形成装置へビットマップ画像データを出力する時に,前記登録された中間コードからビットマップ画像データを展開して前記画像形成装置へ出力する第1の展開処理,または,前記画像形成装置へビットマップ画像データを出力する前に,前記生成された中間コードからバンド毎にビットマップ画像データを事前展開する第2の展開処理のいずれかをバンド毎に行う展開工程と,
前記第2の展開処理が行われたバンドに中間コードを追加して登録する場合に,当該追加登録する中間コードのデータ量に対するメモリの残量が所定の基準値を上回るときは,当該バンドのビットマップ画像データに対し第1の圧縮率で圧縮を行い,当該追加登録する中間コードのデータ量に対するメモリの残量が前記所定の基準値以下のときは,当該バンドのビットマップ画像データに対し,前記第1の圧縮率より高い第2の圧縮率で圧縮を行う圧縮工程とをコンピュータに実行させることを特徴とする画像処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005353873A JP2007152843A (ja) | 2005-12-07 | 2005-12-07 | 画像処理装置及び画像処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005353873A JP2007152843A (ja) | 2005-12-07 | 2005-12-07 | 画像処理装置及び画像処理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007152843A true JP2007152843A (ja) | 2007-06-21 |
Family
ID=38237789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005353873A Pending JP2007152843A (ja) | 2005-12-07 | 2005-12-07 | 画像処理装置及び画像処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007152843A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4968398B1 (ja) * | 2011-05-26 | 2012-07-04 | 富士ゼロックス株式会社 | 画像処理装置、画像処理制御プログラム、非一時的記録媒体 |
-
2005
- 2005-12-07 JP JP2005353873A patent/JP2007152843A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4968398B1 (ja) * | 2011-05-26 | 2012-07-04 | 富士ゼロックス株式会社 | 画像処理装置、画像処理制御プログラム、非一時的記録媒体 |
US8373887B2 (en) | 2011-05-26 | 2013-02-12 | Fuji Xerox Co., Ltd. | Image processing apparatus including an image processing unit, a memory, a determination unit, a dividing unit, and non-transitory computer readable medium |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20010040699A1 (en) | Image processing apparatus and method | |
JPH0971013A (ja) | 印刷制御装置及びメモリ制御方法及び印刷制御方法及び制御プログラムを記憶した記憶媒体 | |
JP2003312068A (ja) | 画像処理方法及びその装置 | |
US6115134A (en) | Scan line splitting in a multi-staged image processing pipeline | |
JP2005316950A (ja) | データ処理装置およびデータ処理方法およびプリンタドライバプログラムおよび印刷制御装置および印刷制御方法および印刷システム | |
JP4420207B2 (ja) | ホストベースプリンタ、ホスト装置、印刷制御方法 | |
JP2008049664A (ja) | 画像形成装置のコントローラ及び画像形成装置のドライバ | |
JP2000043348A (ja) | 印刷装置 | |
JP2007152843A (ja) | 画像処理装置及び画像処理プログラム | |
JP2006116846A (ja) | 印刷装置及びプログラム | |
JP2008205636A (ja) | 画像処理装置、画像処理装置の画像処理方法、及びプログラム | |
JP2010277466A (ja) | 印刷システム、印刷装置およびプリンタドライバプログラム | |
JP2006338194A (ja) | データ処理システム、データ処理プログラム及びデータ処理方法 | |
JP2021115764A (ja) | 画像処理装置、画像処理方法 | |
JPH1086451A (ja) | 画像処理装置 | |
US20030098988A1 (en) | Fast printing apparatus and method thereof | |
JP2002052763A (ja) | 印刷装置 | |
JP3432205B2 (ja) | 情報処理装置およびデータ処理方法および印刷制御システム | |
JP2006050444A (ja) | 画像処理装置および画像処理装置の制御方法 | |
JP2000003257A (ja) | 両面処理ペ―ジ・プリンタのメモリ解放方法 | |
JP4246187B2 (ja) | 画像形成装置 | |
JPH11291566A (ja) | ラスタライズ方法 | |
JP2020116803A (ja) | 画像処理装置及び該画像処理装置を備えた画像形成装置 | |
JP4433873B2 (ja) | 印刷装置及びデータ転送方法 | |
JP2002120418A (ja) | プリンタ装置及び該プリンタ装置を備えた画像処理装置 |