以下、本発明を実施するための最良の形態について図面を用いて説明する。
[第一の実施形態]
本発明の実施例にかかわる画像処理システムの全体構成を、図1を参照しながら説明する。
システムは、ネットワーク400と、それに接続されたデジタル複合機、および1台以上のコンピュータから構成される。
デジタル複合機は、制御装置100、操作部150、リーダー部200およびプリンタ部300 から構成される。
リーダー部200は、原稿を光学的に読み取り、画像データに変換する。リーダー部200は、原稿を読取るための機能を持つスキャナユニット210で構成される。
プリンタ部300は、記録紙を搬送し、その上に画像データを可視画像として印字して装置外に排紙する。プリンタ部300は、複数種類の記録紙カセットを持つ給紙ユニット310と、画像データを記録紙に転写、定着させる機能を持つマーキング(印刷)ユニット320と、印字された記録紙を機外へ出力する機能を持つ排紙ユニット330とで構成される。
制御装置100は、リーダー部200、プリンタ部300と電気的に接続される。制御装置100は、リーダー部200を制御して、原稿の画像データを読込んで画像データに変換する。また、制御装置100はプリンタ部300を制御して画像データを記録紙に出力する。さらに、制御装置100は、ネットワーク400に接続され、コンピュータ401もしくはコンピュータ402から圧縮画像データを受信・伸張し、プリンタ部300を制御して記録用紙に出力する。
操作部150は液晶タッチパネルで構成されており、制御装置100に接続されデジタル複合機を操作するためのユーザI/Fである。
コンピュータ401(もしくは402)は、図11のブロック図で例示されるように、CPU 1101、RAM 1102、ROM 1103、HDD 1104、ネットワークインタフェース 1105、およびそれらをつなぐシステムバス1106から構成される。CPU 1101はコンピュータを制御するための中央処理装置である。RAM 1102は、CPU 1101が動作するためのシステムワークメモリである。ROM 1103はBIOS ROMであり、コンピュータの起動プログラムと起動設定値が格納されている。HDD 1104はハードディスクドライブであり、各種処理のためのシステムソフトウェアや、一時保存データを格納する。ネットワークインタフェース 1105は、ネットワーク400に接続して外部装置との間で画像データや各種情報の入出力を行う。以上のユニットがシステムバス1106上に配置されている。コンピュータ401(もしくは402)上では、HDD 1104に保存されているプログラムが、RAM 1102にロードされCPU 1101上で動作することで、デジタル画像を生成し、さらにデータ圧縮を行う。さらにネットワークI/F 1105経由でネットワーク400に接続され、デジタル複合機に圧縮画像データを送信する。また、コンピュータ401、402は、ネットワーク400経由で図示されていないコンピュータ機器と接続される場合もある。
図2は、本実施形態におけるデジタル複合機の制御装置の一構成例を示すブロック図である。
CPU101はデジタル複合機全体を制御するための中央処理装置である。RAM102は、CPU101が動作するためのシステムワークメモリであり、入力された圧縮画像データや変換中の画像データ、さらに印刷実行時の各種属性情報などを一時記憶するためのメモリでもある。ROM103はブートROMであり、システムのブートプログラムが格納されている。HDD104はハードディスクドライブであり、各種処理のためのシステムソフトウェアや、ネットワーク400経由で受信した圧縮画像データや伸張した画像データを格納する。操作部I/F105は操作部150に対するインタフェース部であり、CPU101によって生成された操作画面データを操作部150に対して出力すると同時に、操作部150から操作者が入力した情報をCPU101に伝える役割をする。ネットワークインタフェース106は、ネットワーク400に接続して外部装置との間で画像データや各種情報の入出力を行う。以上のユニットがシステムバス107上に配置されている。
画像バス110は画像データを高速で転送するためのバスであり、データ構造を変換するバスブリッジであるイメージバスI/F109を経由して、システムバス107と接続される。画像バス110上には、デバイスI/F112、スキャナ画像処理部113、プリンタ画像処理部114が接続される。
デバイスI/F部112は、制御装置100とリーダー部200やプリンタ部300とを接続するインタフェースである。制御装置100はデバイスI/F部112経由でリーダー部200やプリンタ部300の動作制御を行い、さらに画像データの転送やエラー状態通知の検知を行う。スキャナ画像処理部113は、リーダー部200から入力した画像データに対して、補正、加工、編集等の各種処理を行うロジックを持つ。プリンタ画像処理部114は、プリント出力する画像データに対して、プリンタ部の特性に応じた補正、解像度変換等の処理を行うロジックを持つ。
次に図3、図4、図5を用いて、コンピュータ401において実行される、プリント用圧縮画像の生成処理を説明する。
図3は、コンピュータ401内のCPU 1101で動作する、ラスタイメージ生成処理プログラム(ソフトRIP)の動作を模式的に表している。
まず、ソフトRIPは、コンピュータ401内のHDD 1104に保存されているPDLデータ3001を読み込む。PDLデータ3001は、プリント用画像を生成するために必要な様々な種類のオブジェクト描画命令や描画属性値から構成されている。PDLデータ3001に含まれるオブジェクト描画命令には、大きくわけてフォント描画、グラフィックス描画、イメージ描画の命令がある。フォント描画命令は、ベクタフォント描画、ビットマップフォント描画、TypeWing(キヤノン商標)フォント描画を含む。グラフィックス描画命令は、線分描画のためのStroke描画、領域塗りのためのFill描画を含む。イメージ描画命令は、イメージデータの形式ごと定義され、PING形式描画、GIF形式描画、PackBits描画、JPEG描画、および非圧縮のRawImage描画を含む。また、描画命令には不図示のクリップ命令が含まれる場合もあり、上記描画命令に対して、描画可能範囲の指定に用いられる。さらに、PDLデータ中に地紋画像やアノト(アノト社商標)画像が、ドットパターン画像としてイメージ描画命令に含まれることもある。このようなドットパターン画像を描画する際には、画質劣化を起こさないような制御が必要であるため、PDLデータ3001中に地紋属性を付加することで、描画処理系に対して画質劣化を起こさない制御指示を行うことができる。
続いてソフトRIP内のインタープリタ処理ルーチン3002は、読み込んだPDLデータ3001を解釈し、オブジェクト描画命令の種類を判定する。この際、イメージ描画命令のうち、PNG/GIFについてはインタープリタ処理ルーチン3002内でソフトウェア的に伸張を行う。その後、インタープリタ処理ルーチン3002は、ディスプレイリスト生成ルーチン(DL Gen.)3003に対して、ディスプレイリスト3004の生成を指示する。
ディスプレイリスト3004は、コンピュータ401内のRAM 1102に一時保存される中間データであり、プリント時のページ単位で、ページ描画に必要な情報がまとめられている。ディスプレイリスト3004内の情報はEdge、 Level、 Attribute、Fill、Image画像データから構成される。Edgeは描画オブジェクトの境界に関する座標情報を保持する。Levelは描画オブジェクト同士が重なりあう順番に関する情報を保持する。Attributeは描画オブジェクトの種類に関する情報を保持し、Text/Graphics/LossLessImage/LossyImage のいずれかを表す値となる。フォント描画の場合はText、グラフィックス描画の場合はGraphics、イメージ描画の場合は、後述する判断処理によりLossLessImage/LossyImageのいずれかの値となる。Fillは描画オブジェクトが塗られる色に関する色値情報を保持する。Image画像データは描画オブジェクトがイメージデータだった場合の画像データである。1ページ分のディスプレイリスト3004が生成が完了すると、ソフトRIPはディスプレイリストを、ソフトRIP内のラスタ展開ルーチン(ScanlineRenderer)3005に渡す。
ラスタ展開ルーチン3005では、ディスプレイリスト3004内のすべてのEdge情報、Level情報、Attribute情報、Fill情報、イメージデータのための画像データを用いて、ページ内を走査する順に画素を生成する。この際、画像データが圧縮状態であるPackBits/JPEGの場合は、同時にソフトウェア的に伸張を行い非圧縮イメージデータに変換したうえで、ページ内画素に反映させる。
ここで生成されるページ画像は、画素値としてRGBそれぞれ8bit深度を持つラスタ画像3007と、その画素それぞれに関する画素Attribute bit値3006から構成される。画素Attribute bit値3006は、ディスプレイリスト3004内のAttribute値に対応した、Text/Graphics/LossLessImage/LossyImage のいずれかを表す値となる。
図4は、コンピュータ401内のCPU 1101で動作するソフトRIP内のディスプレイリスト生成ルーチン3003における、Attribute値をいずれにするかの判断処理を説明する流れ図である。ステップS401において、現在判断処理を実行している描画命令を確認し、ステップS402において描画命令がイメージ描画オブジェクトであるか否かを判断する。イメージ描画オブジェクトでない場合は、ステップS403にてフォント描画オブジェクトと判断した場合にはステップS404にてAttribute値にTextを付与する。フォント描画オブジェクトではない場合、ステップS405にてグラフィックス描画オブジェクトと判断した場合にはステップS406にてAttribute値にGraphicsを付与する。グラフィックス描画オブジェクトではない場合には、不正処理としてステップS407でエラーとする。ステップS402においてイメージ描画だった場合は、ステップS408にてPDLデータ3001中に地紋属性が付加されているか否かを判断する。地紋属性が付加されていない場合は、ステップS409にてAttribute値にLossyImageを付与する。地紋属性付きの場合、イメージ種別を判断することによってAttribute値が決まる。ステップS410にてJPEGと判断された場合は、ステップS411にてAttribute値にLossyImageを付与する。ステップS412にてPackbitsと判断された場合は、ステップS413にてAttribute値にLossLessImageを付与する。ステップS414にて非圧縮RawImageと判断された場合は、ステップS415にてAttribute値にLossLessImageを付与する。なお、PNG/GIFについてはインタープリタ処理ルーチン3002内でソフトウェア的に伸張済みであるため、非圧縮RawImageとして扱われる。非圧縮RawImageでない場合には、不正処理としてステップS416でエラーとする。かかる構成により地紋属性が付加されていて、イメージ種別がLossyImage であるJPEGではない場合に、Attribute値をLossLessImageとすることができる。尚上記説明では地紋属性を例に説明したが、地紋属性の代わりにアノト属性としてもよい。
図5は、コンピュータ401内のCPU 1101で動作する画像圧縮プログラムの動作を模式的に示す図である。
RIP済み画像5001は、ソフトRIPのラスタ展開ルーチン3005によって生成されたページ画像のうち、画素ごとにRGBそれぞれ8bit深度を持つラスタ画像3007からなる部分である。RIP済みAttribute 5002は、ソフトRIPのラスタ展開ルーチン3005によって生成されたページ画像のうち、画素ごとのAttribute bit値3006からなる部分である。図5で例とするページ画像は、ページ内左上に「Earth」の文字列が配置され、その部分のAttribute値はTextである。その下の地球の写真はJPEGイメージであり、Attribute値はLossyImageである。右上にはStrokeとFillで描かれる棒グラフ図形が配置され、Attribute値はGraphicsである。そして背景には地紋のドットパターンイメージが配置されており、Attribute値はLossLessImageである。
5003は、マスク画像5004の生成(マスク画像生成)のためのAttribute対応表であり、マスク画像5004を生成する際に、ページ画像中のどのAttribute領域をマスクとして用いるかを決めるために用いられる。図5の例では、Attribute対応表5003はLossyImage Attributeを持つ画素のみをマスクとして用いるべく保持される。画像圧縮プログラムは、RIP済みAttribute 5002のうち、LossyImage Attributeが付与されているJPEGイメージ部分の画素を1とし、その他の部分の画素を0とした1bitイメージ画像を生成する。そしてこれをLossyマスク画像5004とする。Lossyマスク画像5004は、Lossy圧縮する画素をマスク画素として選択するための画像である。その後画像圧縮プログラムは、RIP済み画像5001とLossyマスク画像5004を用いたマスク演算処理を行い、Lossyページ画像5006を生成する。RIP済み画像5001中の各画素は、Lossyマスク画像5004上で同じ座標に位置する画素の値が1だった場合は元の画素値を保って、Lossyページ画像5006に保存される。Lossyマスク画像5004上で同じ座標に位置する画素の値が0だった場合は白色を表す画素値(R,G,B)=(255,255,255)がLossyページ画像5006に保存される。
続いて画像圧縮プログラムは、Lossyマスク画像5004の各画素のbit値を反転させた1bitイメージ画像を生成し、それをLossLessマスク画像5005とする。LossLessマスク画像5005は、LossLess圧縮する画素をマスク画素として選択するための画像である。その後画像圧縮プログラムは、RIP済み画像5001とLossLessマスク画像5005を用いたマスク演算処理を行い、LossLessページ画像5007を生成する。RIP済み画像5001中の各画素は、LossLessマスク画像5005上で同じ座標に位置する画素の値が1だった場合は元の画素値を保って、LossLessページ画像5007に保存される。LossLessマスク画像5005上で同じ座標に位置する画素の値が0だった場合は白色を表す画素値(R,G,B)=(255,255,255)がLossLessページ画像5007に保存される。
最後に画像圧縮プログラムは、プリント用圧縮画像データ5008を生成する処理を行う。RIP済みAttribute 5002はPackbits、Lossyページ画像5006はJPEG(非可逆圧縮手法)、LossLessページ画像5007はPNG(可逆圧縮手法)でそれぞれ圧縮される。これらの3つの圧縮画像とAttribute対応表5003を一つのファイルにまとめたものが、プリント用圧縮画像データ5008となる。その結果地紋やアノト等のドットパターンのイメージに対して、LossLess(非可逆圧縮方法)による圧縮が可能となる。
このようにして生成されたプリント用圧縮画像データ5008は、コンピュータ401(402)からネットワーク400を経由してデジタル複合機の制御装置100のHDD104に転送される。
次に図6を用いて、デジタル複合機の制御装置100のCPU101において実行される、プリント用圧縮画像データ5008の伸張処理プログラムの動作を説明する。
伸張処理プログラムは、まずHDD104に格納されたプリント用圧縮画像データ5008を読み込む。続いて、プリント用圧縮画像データ5008に含まれる圧縮画像を伸張する。JPEG圧縮画像からLossy伸張画像6001、PNG圧縮画像からLossLess伸張画像6002、Packbits圧縮画像からAttribute 6003 をそれぞれ得る。ここでLossLess伸張画像6002はLossLessページ画像5007とまったく同じ画像であり、Attribute 6003はRIP済みAttribute 5002とまったく同じAttribute値を持つ。Lossy伸張画像6001は圧縮伸張による劣化を伴うため、Lossyページ画像5006と同じ画像にはならない。また同時に伸張処理プログラムは、Attribute対応表5003も得る。
続いて伸張処理プログラムは、Attribute 6003とAttribute対応表5003を用いて、Lossyマスク画像6004を生成する。図6の例ではLossyImage Attributeを持つ画素のみをマスクとして用いる。伸張処理プログラムは、Attribute 6003のうち、LossyImage Attributeが付与されている画素を1とし、その他の画素を0とした1bitイメージ画像を生成し、これをLossyマスク画像6004とする。さらに伸張処理プログラムは、Lossyマスク画像6004の各画素のbit値を反転させた1bitイメージ画像を生成し、それをLossLessマスク画像6005とする。
その後伸張処理プログラムは、Lossy伸張画像6001、Lossyマスク画像6004、LossLess伸張画像6002、LossLessマスク画像6005を用いたマスク演算処理と画像合成処理を行い、伸張ページ画像6006を生成する。この画像合成処理では、Lossy伸張画像6001中の各画素は、Lossyマスク画像6004上で同じ座標に位置する画素の値が1だった場合のみ、元の画素値を保って、伸張ページ画像6006に保存される。その結果、Lossy伸長画像6001から地球の画像の部分が1画素毎に切り出され、伸長ページ画像6006として保存される。LossLess伸張画像6002中の各画素は、LossLessマスク画像6005上で同じ座標に位置する画素の値が1だった場合のみ、元の画素値を保って、伸張ページ画像6006に保存される。その結果、LossLess伸長画像6002から黒丸の位置以外の画像部分が1画素毎に切り出され、伸長ページ画像6006として保存される。
以上の処理を経て生成された伸張ページ画像6006は、デジタル複合機の制御装置100のCPU101にて実行されるプリント実行プログラムにより、イメージバスI/F 109経由で画像バス110に転送される。その後、プリンタ画像処理部114を経由してデバイスI/F 112転送され、プリンタ部300より印刷される。
[第二の実施形態]
第一の実施形態においては、プリント用圧縮画像データ5008のデータサイズは、元になるRIP済み画像5001とRIP済みAttribute 5002、およびAttribute対応表5003によって一意に決定される。この際、ネットワーク400を経由でのコンピュータ 401と制御装置100との通信速度が、プリント用圧縮画像データ5008のデータサイズに対して十分高速である場合は、特に問題はない。しかし、ネットワーク400の通信速度が遅い場合には、データ転送がボトルネックとなりプリント用圧縮画像データ5008がスムーズに制御装置100に送信されなくなり、結果としてデジタル複合機のプリント速度が遅くなることがある。
第二の実施形態では、通信速度に応じてプリント用圧縮画像の圧縮方法を変更する手段を導入することにより、通信速度が遅い場合はよりLossy圧縮を多く適用しプリント用圧縮画像データのサイズを小さくするように試みる。この場合画質の劣化がより多く発生するが、データ転送速度は改善される。
以下図7と図8を用いて、第二の実施形態での通信速度に応じてプリント用圧縮画像の圧縮方法を変更する方法を説明する。
図7は、第二の実施形態における、コンピュータ401にて実行される画像圧縮処理と、デジタル複合機の制御装置100において実行される画像伸張処理とを説明する模式図である。図8は、コンピュータ401のCPU 1101において実行される画像圧縮処理プログラムにおいて、画像圧縮方法を切り替える処理を説明する流れ図である。
コンピュータ401のCPU 1101で動作する画像圧縮処理プログラムは、ステップS801にてネットワーク400経由で接続されているデジタル複合機の制御装置100と、予備通信を行う。この予備通信では、ダミーのデータパケットを制御装置100に送信し、その受信完了が制御装置100からコンピュータ401に通知されるまでの時間を計測する。この予備通信により、コンピュータ401から制御装置100への通信スループットが大まかに計算できる。ここで計算した通信スループットをT [byte/sec]とする。
ステップS802では、コンピュータ401で実行される画像圧縮プログラムは、第一の実施形態と同様の手法により、プリント用圧縮画像データを生成し、そのデータサイズの計測を行う。
RIP済み画像7000は、ソフトRIPのラスタ展開ルーチン3005によって生成されたページ画像のうち、画素ごとにRGBそれぞれ8bit深度を持つラスタ画像3007からなる部分である。RIP済みAttribute 7010は、ソフトRIPのラスタ展開ルーチン3005によって生成されたページ画像のうち、画素ごとのAttribute bit値3006からなる部分である。
7021は、マスク画像7011生成のためのAttribute対応表であり、マスク画像7011を生成する際に、ページ画像中のどのAttribute領域をマスクとして用いるかを決めるために用いられる。Attribute対応表7021はLossyImage Attributeを持つ画素のみをマスクとして用いる。画像圧縮プログラムは、RIP済みAttribute 7010のうち、LossyImage Attributeが付与されているJPEGイメージ部分の画素を1とし、その他の部分の画素を0とした1bitイメージ画像を生成する。そしてこれをLossyマスク画像7011とする。その後画像圧縮プログラムは、RIP済み画像7000とLossyマスク画像7011を用いたマスク演算処理を行い、Lossyページ画像7001を生成する。RIP済み画像7000中の各画素は、Lossyマスク画像7011上で同じ座標に位置する画素の値が1だった場合は元の画素値を保って、Lossyページ画像7001に保存される。Lossyマスク画像7011上で同じ座標に位置する画素の値が0だった場合は白色を表す画素値(R,G,B)=(255,255,255)がLossyページ画像7001に保存される。
続いて画像圧縮プログラムは、Lossyマスク画像7011の各画素のbit値を反転させた1bitイメージ画像を生成し、それをLossLessマスク画像7012とする。その後画像圧縮プログラムは、RIP済み画像7000とLossLessマスク画像7012を用いたマスク演算処理を行い、LossLessページ画像7002を生成する。RIP済み画像7000中の各画素は、LossLessマスク画像7012上で同じ座標に位置する画素の値が1だった場合は元の画素値を保って、LossLessページ画像7002に保存される。LossLessマスク画像7012上で同じ座標に位置する画素の値が0(黒丸の部分)だった場合は白色を表す画素値(R,G,B)=(255,255,255)がLossLessページ画像7002に保存される。
その後画像圧縮プログラムは、図7中に不図示の処理として、RIP済みAttribute 7010はPackbits、Lossyページ画像7001はJPEG、LossLessページ画像7002はPNGでそれぞれ圧縮を行う。さらにその合計データサイズを計測し、このデータサイズをS1 [byte]とする。
ステップS803ではデータサイズS1が、通信スループットTに対して十分小さいサイズであるかどうかを判断する。この判断の一例として、デジタル複合機のプリンタ部300のプリント速度よりも画像データ転送速度が勝っていれば、デジタル複合機はその能力を十分に発揮できるといえる。デジタル複合機のプリンタ部300のプリント速度の最大値をM [page/sec] とした場合に、
M < T / S1
が成り立つ場合は、データサイズS1が、通信スループットTに対して十分小さいサイズであると判断できる。
ステップS803で画像データ転送速度が十分であると判断された場合は、ステップS804にてプリント用圧縮画像データを生成する。RIP済みAttribute 7010、Lossyページ画像7001、LossLessページ画像7002がそれぞれ圧縮された画像、Attribute対応表7021を一つのファイルにまとめる。このファイルをプリント用圧縮画像データとして、ネットワーク400経由でデジタル複合機の制御装置100に送信する。
ステップS803で画像データ転送速度が十分ではないと判断された場合は、ステップS805にて、プリント用圧縮画像の圧縮方法を変更した処理を行う。
7022は、新たなマスク画像7013生成のためのAttribute対応表である。Attribute対応表7021はLossyImage Attributeを持つ画素のみをLossyマスクとして扱うように定められている。それに対してAttribute対応表7022ではText Attributeを持つ画素のみをLossLessマスクとして扱うが異なる。その他のGraphics Attribute、LossyImage Attribute、LossLessImage Attributeを持つ画素をLossyマスクとして扱う。
画像圧縮プログラムは、RIP済みAttribute 7010のうち、Text Attributeが付与されているフォント描画部分の画素を0とし、その他の部分の画素を1とした1bitイメージ画像を生成する。そして、これをLossyマスク画像7013とする。その後画像圧縮プログラムは、RIP済み画像7000とLossyマスク画像7013を用いたマスク演算処理を行い、Lossyページ画像7003を生成する。RIP済み画像7000中の各画素は、Lossyマスク画像7013上で同じ座標に位置する画素の値が1だった場合は元の画素値を保って、Lossyページ画像7003に保存される。Lossyマスク画像7013上で同じ座標に位置する画素の値が0だった場合は白色を表す画素値(R,G,B)=(255,255,255)がLossyページ画像7003に保存される。その結果、RIP済み画像7000のうち“Earth”というテキスト以外を有するLossyページ画像7003が保存される。
続いて画像圧縮プログラムは、Lossyマスク画像7013の各画素のbit値を反転させた1bitイメージ画像を生成し、それをLossLessマスク画像7014とする。その後画像圧縮プログラムは、RIP済み画像7000とLossLessマスク画像7014を用いたマスク演算処理を行い、LossLessページ画像7004を生成する。RIP済み画像7000中の各画素は、LossLessマスク画像7014上で同じ座標に位置する画素の値が1だった場合は元の画素値を保って、LossLessページ画像7004に保存される。LossLessマスク画像7014上で同じ座標に位置する画素の値が0だった場合は白色を表す画素値(R,G,B)=(255,255,255)がLossLessページ画像7004に保存される。
その後画像圧縮プログラムは、図7中に不図示の処理として、RIP済みAttribute 7010はPackbits、Lossyページ画像7003はJPEG、LossLessページ画像7004はPNGでそれぞれ圧縮を行う。そして、その合計データサイズを計測し、このデータサイズをS2 [byte]とする。
ステップS806では、S1とS2のサイズ比較を行う。Lossy圧縮であるJPEGを適用したとしても、LossLess圧縮であるPNGよりもサイズが小さくならない場合があるため、その確認を行う。
ステップS807にてS2の方が小さいサイズであると判断した場合は、ステップS808にてプリント用圧縮画像データを生成する。RIP済みAttribute 7010、Lossyページ画像7003、LossLessページ画像7004がそれぞれ圧縮された画像とAttribute対応表7022を一つのファイルにまとめる。このファイルをプリント用圧縮画像データとして、ネットワーク400経由でデジタル複合機の制御装置100に送信する。
ステップS807にてS1の方が小さいサイズであると判断した場合は、ステップS804の処理にてプリント用圧縮画像データを生成する。RIP済みAttribute 7010、Lossyページ画像7001、LossLessページ画像7002がそれぞれ圧縮された画像とAttribute対応表7021を一つのファイルにまとめる。このファイルをプリント用圧縮画像データとして、ネットワーク400経由でデジタル複合機の制御装置100に送信する。
ステップS804にてプリント用圧縮画像データを送信した場合の、デジタル複合機の制御装置100での画像伸張処理は、第一の実施形態の図6にて説明した処理と同様である。
ステップS808にてプリント用圧縮画像データを送信した場合の、デジタル複合機の制御装置100のCPU101において実行される、プリント用圧縮画像データの伸張処理プログラムの動作は、以下の通りである。
伸張処理プログラムは、ネットワークインタフェース106にて受信されたプリント用圧縮画像データを伸張する。JPEG圧縮画像からLossy伸張画像7101、PNG圧縮画像からLossLess伸張画像7102、Packbits圧縮画像からAttribute 7110 をそれぞれ得る。ここでLossLess伸張画像7102はLossLessページ画像7004とまったく同じ画像であり、Attribute 7110はRIP済みAttribute 7010とまったく同じAttribute値を持つ。Lossy伸張画像7101は圧縮伸張による劣化を伴うため、Lossyページ画像7003と同じ画像にはならない。また同時に伸張処理プログラムは、Attribute対応表7022も得る。
続いて伸張処理プログラムは、Attribute 7110とAttribute対応表7022を用いて、Lossyマスク画像7112を生成する。図7の例ではText Attribute以外の値を持つ画素をマスクとして用いる。伸張処理プログラムは、Attribute 7110のうち、Text Attribute以外が付与されている画素を1とし、その他の画素を0とした1bitイメージ画像を生成し、これをLossyマスク画像7112とする。さらに伸張処理プログラムは、Lossyマスク画像7112の各画素のbit値を反転させた1bitイメージ画像を生成し、それをLossLessマスク画像7113とする。
その後伸張処理プログラムは、Lossy伸張画像7101、Lossyマスク画像7112、LossLess伸張画像7102、LossLessマスク画像7113を用いたマスク演算処理と画像合成処理を行い、伸張ページ画像7100を生成する。Lossy伸張画像7101中の各画素は、Lossyマスク画像7112上で同じ座標に位置する画素の値が1だった場合のみ、元の画素値を保って、伸張ページ画像7100に保存される。LossLess伸張画像7102中の各画素は、LossLessマスク画像7113上で同じ座標に位置する画素の値が1だった場合のみ、元の画素値を保って、伸張ページ画像7100に保存される。
[第三の実施形態]
第二の実施形態においては、プリント用圧縮画像データ転送速度と、デジタル複合機のプリンタ部300のプリント速度との比較判断を行った。この比較判断はデジタル複合機のプリンタ部300の能力を最大限に生かせるかどうかという観点で判断をしているが、プリント速度よりも画質の方が重要な場合もある。また、同じデータのプリントを何度も繰り返す場合には、プリントする度に同じ画質で出力されることが望ましい場合も多い。
第三の実施形態においては、プリント速度よりも画質が重視される場合での制御手段を提供する。
図9は、第三の実施形態のコンピュータ401において実行される画像圧縮処理プログラムにおいて、画像圧縮方法を切り替える処理を説明する流れ図である。
図10は、第三の実施形態のコンピュータ401内のHDD 1104に保存されているPDLデータ10001であり、プリント用画像を生成するために必要な様々な種類のオブジェクト描画命令や描画属性値から構成されている。第一の実施形態のPDLデータ3001との差異として、地紋属性のほかに、印刷済属性とAttribute対応表が付加される場合がある。印刷済属性とAttribute対応表は、後述の画像圧縮プログラムにおいて付加される。
コンピュータ401で動作する画像圧縮処理プログラムは、ステップS901にてPDLデータ10001中に印刷済属性が付加されているか否かを確認する。印刷済属性が付加されていない場合は、続いてステップS902にてネットワーク400経由で接続されているデジタル複合機の制御装置100と、予備通信を行う。この予備通信では、ダミーのデータパケットを制御装置100に送信し、その受信完了が制御装置100からコンピュータ401に通知されるまでの時間を計測する。この予備通信により、コンピュータ401から制御装置100への通信スループットが大まかに計算できる。ここで計算した通信スループットをT [byte/sec]とする。
ステップS903では、コンピュータ401で実行される画像圧縮プログラムは、第一の実施形態と同様の手法により、RIP済みAttribute、Lossyページ画像、LossLessページ画像を生成しそれぞれ圧縮を行う。そしてその合計データサイズを計測し、このデータサイズをS1 [byte]とする。
ステップS904ではデータサイズS1が、通信スループットTに対して十分小さいサイズであるかどうかを判断する。デジタル複合機のプリンタ部300のプリント速度の最大値をM [page/sec] とした場合に、
M < T / S1
が成り立つ場合は、データサイズS1が、通信スループットTに対して十分小さいサイズであると判断できる。
ステップS904で画像データ転送速度が十分であると判断された場合は、ステップS911にて、RIP済みAttribute、Lossyページ画像、LossLessページ画像の3つの圧縮画像とAttribute対応表を一つのファイルにまとめる。このファイルをプリント用圧縮画像データとして、ネットワーク400経由でデジタル複合機の制御装置100に送信する。
ステップS904で画像データ転送速度が十分ではないと判断された場合は、ステップS905にて、PDLデータ10001中に地紋属性が付加されているか否かを確認する。地紋属性が付加されていない場合には、ステップS906にてAttribute対応表の書き換えを行う。Text Attributeを持つ画素のみをLossLessマスクとして扱う。そしてその他のGraphics Attribute、LossyImage Attribute、LossLessImage Attributeを持つ画素をLossyマスクとして扱う。
ステップS905にて、PDLデータ10001中に地紋属性が付加されている場合には、ステップS906にてAttribute対応表の書き換えを行う。Text AttributeとLossLessImage Attributeを持つ画素をLossLessマスクとして扱い、Graphics AttributeとLossyImage Attributeを持つ画素をLossyマスクとして扱う。地紋などのドットパターンイメージはLossLessImage Attributeであり、これがLossLessマスクとして扱いわれるため、このあとの圧縮処理で画像劣化することはない。
ステップS908では、ステップS906もしくはステップS907にて書き換えられたAttribute対応表に従い、Lossyマスク画像、LossLessマスク画像を生成し、さらにLossyページ画像、LossLessページ画像を生成する。さらにRIP済みAttribute はPackbits、Lossyページ画像はJPEG、LossLessページ画像はPNGでそれぞれ圧縮を行い、その合計データサイズを計測する。このデータサイズをS3 [byte]とする。
ステップS910では、S1とS3のサイズ比較を行う。S3の方が小さいサイズであると判断した場合は、ステップS912にて、RIP済みAttribute、Lossyページ画像、LossLessページ画像の3つの圧縮画像とAttribute対応表を一つのファイルにまとめる。このファイルをプリント用圧縮画像データとして、ネットワーク400経由でデジタル複合機の制御装置100に送信する。
ステップS910でS1の方が小さいサイズであると判断した場合は、ステップS911にて、RIP済みAttribute、LossyImageのみをJPEG圧縮したLossyページ画像、LossLessページ画像の3つの圧縮画像とAttribute対応表を一つのファイルにまとめる。このファイルをプリント用圧縮画像データとして、ネットワーク400経由でデジタル複合機の制御装置100に送信する。
ステップS911もしくはステップS912にてプリント用圧縮画像データを送信したのち、ステップS913ではPDLデータ10001中にプリント済属性を付加する。また同時に、最終的に使用したAttribute対応表をPDLデータ10001中に保存し、次回以降のPDL10001からプリント用画像を生成する場合に、このプリント済属性は用いられる。
ステップS901にてPDLデータ10001中に印刷済属性が付加されてる場合は、PDLデータ10001は過去にプリント用圧縮画像データの生成に使用され、プリント用圧縮画像データがデジタル複合機に送信されたことを示す。
この場合、ステップS914にてPDLデータ10001中に保存されたAttribute対応表を読み込む。そしてステップS915にて、Attribute対応表に従い、Lossyマスク画像、LossLessマスク画像を生成し、さらにLossyページ画像、LossLessページ画像を生成する。さらにRIP済みAttribute はPackbits、Lossyページ画像はJPEG、LossLessページ画像はPNGでそれぞれ圧縮を行い、3つの圧縮画像とAttribute対応表を一つのファイルにまとめる。そしてステップS915にて、このファイルをプリント用圧縮画像データとして、ネットワーク400経由でデジタル複合機の制御装置100に送信する。この処理により、以前にプリント用圧縮画像データの生成に用いられた時と同じ画質の、プリント用圧縮画像データを送信することが可能になる。
以上の実施例1〜3によれば、PDLデータからLossy圧縮とLossLess圧縮を組み合わせたプリント用圧縮画像データを生成する際に、描画オブジェクトの種類と属性によってどちらの圧縮方式にするべきかを、画素単位で正確に制御することが可能になる。PDLデータ中の属性として、地紋やアノト等のドットパターンを含むことが指定されている場合には、ドットパターンをLossLess圧縮することが可能になる。
また、Lossy圧縮とLossLess圧縮を組み合わせたプリント用圧縮画像データを伸張する際に、Attribute画像と組み合わせ表から生成したマスク画像を用いて2つの伸張画像を合成することが可能になる。これにより、LossLess圧縮の地紋やアノト等のドットパターンを含むプリント用圧縮画像データを受信し伸張した場合でも、ドットパターンが画質劣化しないことから、地紋やアノトの機能を損なうことがない。
[その他の実施例]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。