(57)【要約】【課題】圧縮データ・ストリームの形で規定された印刷データを印刷するために必要なトナー・カバレージ量の推定値を計算するための方法、装置、およびプログラムを提供すること。【解決手段】推定値は、部分的に解凍された形のデータ・ストリームからカバレージ・データを取得し、それを使用してカバレージ推定値を求めることによる、削減された処理によって得られる。したがって、データ・ストリームのフル解凍を実施する必要はない。例えば、カバレージ・データは、少なくとも１つの濃度レベルに対する有色画素の数である。【選択図】図２
2008076438.tif 000002
【特許請求の範囲】
【請求項１】
印刷データを含む圧縮データ・ストリームを受信するステップと、
前記データ・ストリームの部分的な解凍を実施するステップと、
前記部分的に解凍されたデータ・ストリームを使用して前記印刷データのカバレージ・データを求めるステップと、
前記求められたカバレージ・データを使用して、印刷データを印刷するために必要なマーキング材料の量を推定するステップと
を含む方法。
【請求項２】
前記カバレージ・データが複数の各濃度レベルごとの画素の数を含む、請求項１に記載の方法。
【請求項３】
画素の濃度レベルを、前記画素および少なくとも１つの隣接画素の前記濃度レベルに基づいて決定するステップをさらに含む、請求項２に記載の方法。
【請求項４】
前記カバレージ・データが複数のカラー・プレーンに対して求められる、請求項１に記載の方法。
【請求項５】
マーキング材料の量についての前記推定を使用して、前記印刷データを印刷するためのコストを算出するステップをさらに含む、請求項１に記載の方法。
【請求項６】
マーキング材料の量についての前記推定を使用して、所定の印刷装置が前記印刷データを印刷することができるかどうかを判定するステップをさらに含む、請求項１に記載の方法。
【請求項７】
前記圧縮データ・ストリームがＧｒｏｕｐ４圧縮データ・ストリームであり、
部分的な解凍を実施する前記ステップが、前記データ・ストリームのラン・フォーマットを取得するステップを含み、
カバレージ・データを求める前記ステップが、前記ラン・フォーマットから有色画素の数を求めるステップを含む、
請求項１に記載の方法。
【請求項８】
前記圧縮データ・ストリームがＬＺＷ（Lempel-Ziv Welch）圧縮データ・ストリームであり、
部分的な解凍を実施する前記ステップが、
前記データ・ストリームから、少なくとも部分的にはストリング・テーブルを生成するステップであって、前記ストリング・テーブルが、各々が関連するストリングを有する複数のエントリを含むステップを含み、
カバレージ・データを求める前記ステップが、
前記ストリング・テーブル内の各ストリングごとに有色画素の数を求めるステップと、
前記求められた有色画素の数を使用して前記印刷データの有色画素の数を求めるステップと
を含む、請求項１に記載の方法。
【請求項９】
前記圧縮データ・ストリームが、エントロピ符号化されたＪＰＥＧ圧縮データ・ストリームであり、
部分的な解凍を実施する前記ステップが、前記圧縮データ・ストリームから画素ブロックのＤＣ係数を取得するステップを含み、
カバレージ・データを求める前記ステップが、前記ＤＣ係数を使用して前記画素ブロックの平均濃度レベルを求めるステップを含む、
請求項１に記載の方法。
【請求項１０】
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサからアクセス可能なインターフェースおよびメモリと
を含むデータ処理システムであって、
前記インターフェースが、印刷データを含む圧縮データ・ストリームを受信し、
前記少なくとも１つのプロセッサが、
前記データ・ストリームの部分的な解凍を実施するサブプロセスと、
前記部分的に解凍されたデータ・ストリームを使用して前記印刷データのカバレージ・データを求めるサブプロセスと、
前記求められたカバレージ・データを使用して前記印刷データを印刷するために必要なマーキング材料の量を推定するサブプロセスと
を実施する、データ処理システム。
【請求項１１】
カバレージ・データが、複数の各濃度レベルごとの画素の数を含む、請求項１０に記載のデータ処理システム。
【請求項１２】
前記少なくとも１つのプロセッサが、
画素の濃度レベルを、前記画素および少なくとも１つの隣接画素の前記濃度レベルに基づいて決定するサブプロセスをさらに実施する、請求項１１に記載のデータ処理システム。
【請求項１３】
前記少なくとも１つのプロセッサが、
マーキング材料の量についての前記推定を使用して、前記データ・ストリームを印刷するためのコストを算出するサブプロセスをさらに実施する、請求項１０に記載のデータ処理システム。
【請求項１４】
前記少なくとも１つのプロセッサが、
マーキング材料の量についての前記推定を使用して、所定の印刷装置が前記データ・ストリームを印刷することができるかどうかを判定するサブプロセスをさらに実施する、請求項１０に記載のデータ処理システム。
【請求項１５】
印刷データを含む圧縮データ・ストリームを受信するステップと、
前記データ・ストリームの部分的な解凍を実施するステップと、
前記部分的に解凍されたデータ・ストリームを使用して前記印刷データのカバレージ・データを求めるステップと、
前記求められたカバレージ・データを使用して前記印刷データを印刷するために必要なマーキング材料の量を推定するステップと
をコンピュータに実行させるためのプログラム。
【請求項１６】
前記カバレージ・データが、複数の濃度レベルごとの画素の数を含み、
画素の濃度レベルを、前記画素および少なくとも１つの隣接画素の前記濃度レベルに基づいて決定するステップをさらにコンピュータに実行させる、請求項１５に記載のプログラム。
【請求項１７】
マーキング材料の量についての前記推定を使用して、前記印刷データを印刷するためのコストを算出するステップをさらにコンピュータに実行させる、請求項１５に記載のプログラム。
【請求項１８】
マーキング材料の量についての前記推定を使用して、所定の印刷装置が前記印刷データを印刷することができるかどうかを判定するステップをさらにコンピュータに実行させる、請求項１５に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は印刷の分野に関し、より詳細には、データ・ストリームを印刷するために必要な、トナーやインクなどのマーキング材料の量の推定に関する。
【背景技術】
【０００２】
プリンタや印刷の分野では、印刷ジョブの印刷のために必要なトナーやインクなどのマーキング材料の量を推定することは有用である。例えば、この推定は、ジョブのコストを推定するため、印刷時に印刷材料の供給を制御するため、またはマーキング材料の供給がいつ切れるかの予測をユーザに提供できるように使用量を追跡するため、あるいはそれらの任意の組み合わせのために使用することができる。さらに、プリンタによっては、例えば定着機構（fuser）またはインク乾燥問題のために、印刷に使用することができるマーキング材料の量に関する制限を有するものもある。このようなプリンタについては、インク／トナー使用量の推定は、あるプリンタが特定のジョブを印刷することができるか否かを判定するために使用することができる。
【０００３】
この技術分野には、インク／トナー使用量の推定に使用される、いくつかの代替方法が存在する。具体的には、使用される一方法では、印刷ジョブによって必要とされる出力の有色（設定された）ペル（pel）／画素の数を求め、次いでその数の有色ペル／画素を出力するためにどのくらいの量のインク／トナーが必要になるかを計算する。実際に、このような推定方法が使用された、従来技術によるいくつかの例が存在する。
【０００４】
例えば、ゼロックス社（Xerox Corp.）の米国特許第5,636,032号は、印刷ジョブで印刷される画素の数をカウントしてインク／トナーの使用量情報を推定する方法を開示している。次いで、そのインク／トナー使用量情報を使用して、インク／トナーの供給が継続されるページ数の詳細が提供される。この解決策では、画素の数は、印刷処理中の光学ラスタ出力スキャナまたはサーマル・インクジェット・カートリッジの起動信号シーケンスを監視することによって、印刷の間に得られる。
【０００５】
例えば、レックスマーク・インターナショナル社（LexmarkInternational Inc.）の米国特許第5,802,240号は、印刷ジョブの各ページごとのペル数をカウントしてトナー使用量情報を推定する方法を開示している。トナー使用量情報は、様々な印刷ジョブによって使用されるトナーの量を比較するために使用される。この解決策では、ペルのカウント数は、やはりジョブの印刷中に得られるが、この場合は、上位ビット設定の出力信号をカウントすることによって得られる。
【０００６】
例えば、ヒューレット・パッカード社（Hewlett-Packard Co.）の米国特許第6,456.802号もまた、印刷ジョブ中の画素の数をカウントしてトナー使用量情報を得るための方法を開示している。トナー使用量情報は、トナー・カートリッジ内のトナー残量を追跡するために使用される。この解決策では、画素の数は、印刷中に、印刷される各画素をカウントすることによって得られる。
【０００７】
これらの各方法では、ペル／画素の数は実際の印刷処理中に得られるものであり、したがってこれらの方法が、インク／トナー使用量に関する事前の（印刷前の）知識を必要とする用途には適さないことに留意されたい。例えば、このような事前の知識は、プリンタが印刷ジョブを印刷できるかどうかを判定するときに有用である。
【０００８】
しかし、例えば、ＩＢＭ社（IBM Corp.）の米国特許第5,937,225号もまた、印刷ジョブ中の有色画素（tonedpixel）の数をカウントしてインク／トナー使用量情報を取得する方法を開示しているが、この解決策では、画素の数は、プリンタ固有のデータ・ストリームを画素数に変換することによって得られる。したがって、この方法は、印刷前または印刷中のどちらででも実行することができる。この方法により、インク／トナー使用量に関する事前の知識を取得することが可能になるが、この方法はまた、データ・ストリームを最初にラスタ化することを必要としている。ラスタ化には大きな計算量が必要であり、したがってジョブが印刷されない場合には、好ましくないものである。印刷ジョブに必要なマーキング材料の使用量を事前に推定することに関する１つの問題点は、一般に印刷ジョブが圧縮データを含むことであることに留意されたい。例えば、良く知られた圧縮方法には、バイレベル・データに対するＩＴＵ−ＴＳＳ  Ｔ．６  Ｇｒｏｕｐ４、バイレベル（bi-level）またはマルチビット・データに対するＬＺＷ（Lempel-Ziv-Welch）、連続階調（continuoustone）データに対するＪＰＥＧなどがある。このような圧縮データからペル／画素カウント数を求めることは不可能であり、また解凍処理には大きな計算量が必要になる。しかし、印刷のためには解凍が必要であり、したがってマーキング材料の使用量の推定値を求めることは、このような解凍が完了した後の、印刷処理の後の時点まで遅れることになる。
【特許文献１】米国特許第5,636,032号
【特許文献２】米国特許第5,802,240号
【特許文献３】米国特許第6,456.802号
【特許文献４】米国特許第5,937,225号
【非特許文献１】"JPEG Still Image DataCompression Standard" by Pennebaker and Mitchell, Van Nostrand Reinhold,1993
【発明の開示】
【発明が解決しようとする課題】
【０００９】
本発明の目的は、印刷ジョブに必要なトナーまたはインクなどのマーキング材料の使用量を推定する方法を提供することであり、印刷ジョブが印刷される前に実施することが可能であり、さらに圧縮データのフル解凍を必要としない方法を提供することである。
【課題を解決するための手段】
【００１０】
この課題に関して、本発明者らは、印刷ジョブにおいて、印刷データの部分的に解凍されたバージョンから、圧縮された印刷データの有色ペル数を求めることが可能な方法を実現した。このような部分的な解凍は、フル解凍と比べて計算量が比較的少なくて済むものであり、したがって、マーキング材料の推定値は、従来技術よりも印刷処理のより早い時点で得られるようになる。
【００１１】
したがって、第１の態様によれば、本発明は、印刷データを含む圧縮されたデータ・ストリームを受信するステップと、そのデータ・ストリームの部分的な解凍を実施するステップと、部分的に解凍されたデータ・ストリームを使用して印刷データのカバレージ（coverage）・データを求めるステップと、求められたカバレージ・データを使用して、印刷データを印刷するために必要なマーキング材料の量を推定するステップとを含む方法を提供する。
【００１２】
第２の態様によれば、本発明は、少なくとも１つのプロセッサと、上記少なくとも１つのプロセッサからアクセス可能なインターフェースおよびメモリとを含むデータ処理システムを提供する。このデータ処理システムにおいて、上記インターフェースは印刷データを含む圧縮データ・ストリームを受信し、上記少なくとも１つのプロセッサは、上記データ・ストリームの部分的な解凍を実施するサブプロセスと、上記部分的に解凍されたデータ・ストリームを使用して上記印刷データのカバレージ・データを求めるサブプロセスと、上記求められたカバレージ・データを使用して上記印刷データを印刷するために必要なマーキング材料の量を推定するサブプロセスとを実施する。
【００１３】
第３の態様によれば、本発明は、印刷データを含む圧縮データ・ストリームを受信するステップと、上記データ・ストリームの部分的な解凍を実施するステップと、上記部分的に解凍されたデータ・ストリームを使用して上記印刷データのカバレージ・データを求めるステップと、上記求められたカバレージ・データを使用して上記印刷データを印刷するために必要なマーキング材料の量を推定するステップとをコンピュータに実行させるためのプログラムを提供する。
【００１４】
例えば、カバレージ・データは、印刷データの有色画素／ペルの数としてもよく、またマーキング材料の推定は各有色画素／ペルごとの平均濃度（intensity）値を使用して実施される。
【００１５】
別法として、例えば、印刷データを印刷するために使用される装置が複数の画素濃度をサポートしている場合は、有色画素の数のカウントは複数の各濃度レベルごとに実施することができ、推定は様々な画素の様々な濃度レベルを用いて実施することができる。任意選択で、このような各濃度レベルにおける有色画素のカウントでは、印刷装置に応じた他の印刷効果も考慮される。例えば、所与の濃度の２つの有色画素に対して、印刷装置は、画素が隣接している場合には、画素が隣接していない場合と比べて、より少ないマーキング材料を要求することができる。この場合、有色画素の濃度レベルは、その画素と少なくとも１つの隣接画素の濃度レベルとに基づいて決定される。
【００１６】
例えば、印刷データは、単一のカラー・プレーン（モノクローム）または複数のカラー・プレーンを含むことができる。好ましくは、印刷データが複数のカラー・プレーンを含む場合は、有色画素の数は複数の各カラー・プレーンごとに求められる。
【００１７】
任意選択で、複数のカラー・プレーンを含む印刷データはさらに、複数のハイライト・カラー・プレーンを含むことができる。任意選択で、有色画素の数はさらに、複数のハイライト・カラー・プレーンに対しても求めることができる。
【００１８】
任意選択で、マーキング材料の量の推定値は、印刷データを印刷するコストを求めるために使用することができる。
【００１９】
任意選択で、マーキング材料の量の推定値は、所定の印刷装置がその印刷データを印刷することができるかどうかを判定するために使用することができる。
【００２０】
例えば、データ・ストリームがＧｒｏｕｐ４圧縮データ・ストリームの場合は、そのデータ・ストリームは、ラン・フォーマット（runs format）の形に部分的に解凍され、カバレージ・データは、そのラン・フォーマットから、有色画素の数の形で求めることができる。さらに、この技術は、中間ラン・フォーマットを使用する任意の圧縮アルゴリズムに対して使用することができる。
【００２１】
例えば、データ・ストリームがＬＺＷ（Lempel-Ziv-Welch）圧縮データ・ストリームの場合は、そのデータ・ストリームは、そのデータ・ストリームのストリング・テーブルを少なくとも部分的に復元することによって部分的に解凍される。このストリング・テーブルは、各々が関連するストリングを含む複数のエントリ（entry）を含む。次に、ストリング・テーブル内の各ストリングに対する有色画素の数を求め、求められた各有色画素の数を使用してデータ・ストリームの有色画素の数を求めることによって、カバレージ・データが得られる。任意選択で、ストリングの有色画素の数は、複数の各濃度ごとの画素の数を含む。
【００２２】
例えば、データ・ストリームがＪＰＥＧ圧縮データ・ストリームの場合は、そのデータ・ストリームは、圧縮データ・ストリームから画素ブロックのＤＣ係数を取得することによって部分的に解凍され、カバレージ・データはそのＤＣ係数を使用して画素ブロックの平均濃度レベルを求めることによって得られる。
【００２３】
ここまで、本発明の目的のいくつかについて述べてきたが、他の目的については、以下の説明を添付の図面と併せて読み進めることによって明らかになるはずである。
【発明を実施するための最良の形態】
【００２４】
図１は、本発明の好ましい実施形態が有利に適用される印刷システムの概略構成図を示す。図は、プリント・サーバ１００および印刷装置１１０を示す。プリント・サーバ１００は、ネットワーク１２０にアクセスするためのネットワーク・インターフェース１０１と、揮発性メモリ１０３および不揮発性メモリ１０４にアクセス可能なプロセッサ１０２と、印刷装置１１０に印刷要求を送信するためのプリンタ・インターフェース１０５を備える。印刷装置１１０は、プリント・サーバ１００からの印刷ジョブを受信するためのホスト・インターフェース１１１と、揮発性メモリ１１３および不揮発性メモリ１１４にアクセス可能なプロセッサ１１２と、印刷ジョブを印刷するためのプリント・ヘッド１１５と、印刷時にプリント・ヘッド１１５によって使用されるトナー・リザーバ１１６とを備える。
【００２５】
例えば、従来技術の印刷ジョブの場合、プリント・サーバ１００は、ネットワーク１２０およびネットワーク・インターフェース１０１を介して、印刷用の印刷データを含む圧縮データ・ストリームを受信する。プロセッサ１０２は、そのデータ・ストリームを揮発性メモリ１０３に維持するとともに、解凍して印刷データを取得するステップと、その印刷データをラスタ化してプリンタに送信するステップとを含むサブプロセスを実施する。このサブプロセスを実施する間に、プロセッサ１０２は、例えば、不揮発性メモリ１０４に格納されたフォント情報にアクセスすることができる。次に、ラスタ化された印刷データは、印刷用の印刷ジョブとして、プリンタ・インターフェース１０５を介して印刷装置１１０に送信される。印刷装置１１０は、ホスト・インターフェース１１１を介して印刷ジョブを受信する。次いで、プロセッサ１１２は、その印刷ジョブを揮発性メモリ１１３に維持し、そのジョブをプリント・ヘッド１１５によって印刷するための適切な形式で提供する。この処理を実施する間に、プロセッサ１１２は、不揮発メモリ１１４の、用紙サイズなどの情報にアクセスする。次に、プリント・ヘッド１１５は、トナー・リザーバ１１６からのトナーを使用して印刷データを印刷する。
【００２６】
印刷システムについての多くの代替形態が使用可能であること、例えばプリント・サーバ１００と印刷装置１１０を単一のユニットに組み込むことができることに留意されたい。さらに、例えば、印刷装置１１０は、ホスト・インターフェース１１１の代わりに、またはそれに追加してネットワーク・インターフェースを含み、ネットワークを介して印刷ジョブを受信することもできる。同様に、プリント・サーバ１００は、ネットワーク・インターフェース１０１の代わりに、またはそれに追加してホスト・インターフェースを含み、ホスト・インターフェースを介して印刷ジョブを受信することもできる。さらに、例えば、どちらの装置も１つまたは複数の追加のプロセッサを含むことができる。
【００２７】
本発明の好ましい実施形態によれば、プリント・サーバ１０２は図２に示された方法を実施する。ステップ２０１で、ターゲット装置で印刷するための印刷データを含む圧縮されたデータ・ストリームが、ネットワーク・インターフェース１０１を介して受信される。次に、ステップ２０２で、データ・ストリームが部分的に解凍される。ステップ２０３で、この解凍されたデータ・ストリームから、印刷データに対するカバレージ・データが求められる。カバレージ・データには、ターゲット装置によってサポートされるかまたは印刷データの形で提供される、あるいはその両方の、１つまたは複数の濃度レベルに対する有色画素の数が含まれる。ステップ２０４で、ターゲット装置で印刷データを印刷するために必要なトナーの推定値が、各画素の数にトナー値を乗算した結果の和をとることによって計算される。ここで、トナー値は、その画素の数に関する濃度で単一の画素を印刷するために必要なトナーの量を表す。推定値が計算された後で、ステップ２０５で、この値が所定の基準（クライテリア）を満たすか否かが判定される。例えば、推定値はトナーの量でもよく、基準は印刷ジョブに使用されるトナーの最大量を表すものでもよい。代わりに、例えば、推定値は必要なトナーのコストでもよく、基準は印刷ジョブを印刷するために使用可能な金額でもよい。所定の基準が満たされていない場合は、印刷ジョブの処理を終了する。一方、基準が満たされている場合は、ステップ２０６で、データ・ストリームの解凍を完了して印刷データを取得し、ステップ２０７で、印刷データがラスタ化され、印刷のためにターゲット装置に送信される。
【００２８】
ある画素を印刷するために必要なトナーの量が、所与の印刷領域に印刷される画素の総数によって決まること、したがって使用されるトナー値は、その画素の総数と画素が印刷される領域の大きさによって決まることに留意されたい。
【００２９】
画素の数を取得する対象となる濃度レベルの数は、データ・ストリームの印刷に使用される印刷装置で使用可能なトナー値、および必要な推定値の精度によって決まる。
【００３０】
例えば、所与のプリンタに対して、画素を印刷するために使用されるトナーの平均量を表す単一のトナー値を使用することができる。この場合、推定値は、有色画素の数に平均トナー値を乗算したものとして計算される。しかし、この計算は比較的簡単な計算であるが、生成される推定値は比較的不正確なものになる。代わりに、複数のトナー値が使用可能な場合で、例えば、各トナー値が、異なる有色画素カバレージのページを印刷するために使用されるトナーの平均量を表している場合は、比較的正確な推定値が得られる。例えば、ある装置では、５％カバレージ（すなわち、ページ上の画素の５％が有色）で第１のトナー値が指定され、１０％カバレージで第２のトナー値が指定され、以下同様に指定される。この場合、ページ上の画素のカバレージが計算され、適切なトナー値を使用して推定値が求められる。さらに、求められたカバレージが、トナー値が使用可能な２つのカバレージ量の間に存在する場合は、２つのトナー値の重み付き平均を計算することもできる。
【００３１】
あるいは、例えば、５濃度レベル、すなわち２０％、４０％、６０％、８０％、および１００％で印刷することが可能で、各濃度レベルに対するトナー値が既知であるプリンタを考える。比較的粗い推定の場合は、有色画素の単一のカウント数が求められ、平均濃度を表すトナー値、例えば６０％濃度トナー値または５つのトナー値の平均が乗算される。より正確な推定の場合は、５濃度レベルのうちの最大５レベルまでの有色画素のカウント数が求められ、適切な濃度トナー値が乗算される。
【００３２】
しかし、画素を印刷するために必要なトナーの量は、どの隣接画素およびいくつの隣接画素が同時に印刷されるのかに応じて決まることがある。例えば、３×３ブロックの画素が１００％濃度で印刷される場合は、中心の画素は外側の画素ほどトナーを必要としない。さらに、外側の画素は、１００％濃度で印刷されるが隣接する有色画素が存在しない単一の画素ほどにはトナーを必要としない。したがって、このような効果を考慮することによって、比較的正確な推定を得ることができるが、増大した、より複雑な計算要件を負担することになる。
【００３３】
したがって、当業者ならば、様々な技術を使用して様々な精度の推定値を得ることができること、また選択される技術が、その推定値が使用される用途に必要な推定の精度とその計算に使用可能な計算リソースとの間のバランスで決まることが理解されよう。
【００３４】
次に、画素の数を含むカバレージ・データを求めるための好ましい実施形態を、３つの周知の圧縮方式、すなわちバイレベル（２レベル）・データのためのＩＴＵ−ＴＳＳ  Ｔ．６  Ｇｒｏｕｐ４、バイレベルまたはマルチビット・データのためのＬＺＷ（Lempel-Ziv-Welch）、および連続階調データのためのＪＰＥＧに対して説明する。しかし、当業者ならば、本発明が、ＪＢＩＧ２、ＲＬＥ（RunLength Encoding）、Ｐａｃｋｂｉｔｓ、ＪＰＥＧ２０００など、他の圧縮方式にも同様に適用できることが理解されよう。
【００３５】
ＩＴＵ−ＴＳＳ  Ｔ６  Ｇｒｏｕｐ４（以下、Ｇｒｏｕｐ４）は、バイレベル圧縮アルゴリズムの例である。バイレベル圧縮アルゴリズムは、各画素が「０」または「１」を取ることができるバイレベル・データに対して使用される。したがって、単一濃度レベルの画素の数を求めることだけが可能であり、したがってバイレベル画像（２レベル・イメージ）のカバレージ・データを計算すること、例えば、「１」の画素の数をカウントし、画像（image）サイズと比較することだけが可能である。
【００３６】
Ｇｒｏｕｐ４アルゴリズムは、２段階方式として処理することができる。第１の段階で、画像のビットマップなどの印刷データがラン・フォーッマットに変換され、第２の段階で、そのラン・フォーマットが最終のＧｒｏｕｐ４形式に圧縮される。ラン・フォーマットは、すべてが０またはすべてが１である画素列を符号化（エンコード）し、ラン・レングスまたはラン・エンドとして格納することができる。解凍はこの処理の逆である。
【００３７】
例えば、図３は単純な画像ビットマップ３０１と、そのビットマップの１６進ラン・エンド形式３０２を示す。画像ビットマップ３０１は、右下隅に２×８の黒の領域を含む４×１６のバイレベル画像を示す。ラン・エンド形式３０２は、各行が画像ビットマップ３０１の１ラインを表す２バイト・ショートの数値列からなる。所与のラインに対して、最初の２バイト・ショートはバイト単位での画像ラインの長さを表す。続く２バイト・ショートは交互に、それぞれ連続する「１」および「０」の数値列の終了位置を表す。ラインの終了は終了位置の繰り返しによって示される。例えば、ラン・エンド形式ビットマップ画像の４番目のラインは、１６であることを指示する長さ「００  １０」（３１０）と、そのラインが「１」で始まらないことを指示する「００  ００」（３１１）によって示された最初の「１」の数値列の終了位置と、ラインが８個の「０」から始まることを指示する「００  ０８」（３１２）によって示された次の「０」の数値列の終了位置と、１６であることを指示する「００  １０」（３１３）によって示された次の「１」の数値列の終了位置と、ラインの終了を指示する前の位置の繰り返し「００  １０」（３１４）とを含む。
【００３８】
本発明の好ましい実施形態によれば、Ｇｒｏｕｐ４圧縮画像に対する画素の数を求めるために、圧縮画像を部分的に解凍してビット列（run）の詳細を取得する。この詳細から、各「１」のビット列の長さを求め、加算して有色画素の数を求めることができる。この方法は、画像をフルに解凍してビットマップから画素の数を計算するよりも、計算は高速である。有色画素の数が得られた後で、トナー／インクの推定値が計算される。
【００３９】
他のバイレベル圧縮アルゴリズムにおいても、部分的に解凍してビット列の詳細を求めることが可能であることに留意されたい。さらに、図３に示されたラン・エンド形式が一例であることにも留意されたい。当業者ならば、多くの異なるラン・フォーマットが可能であることが理解されよう。
【００４０】
ＬＺＷ（Lempel-Ziv-Welch）圧縮は、マルチレベル圧縮アルゴリズムである。したがって、様々な濃度の画素を含むことができる。ＬＺＷ圧縮は、圧縮される印刷データからストリング・テーブルおよびコードワード（codeword）・ストリームを生成することを含む。ストリング・テーブル内の各エントリは印刷データからのストリングおよび関連するコードワードを含む。コードワード・ストリームは、圧縮された印刷データを定義する一連のコードワードを含む。したがって、圧縮の間に、バイト・ストリングは、各々が１つまたは複数のバイトのストリングを表すコードワードによって効果的に置き換えられる。例えば、圧縮の間に、バイト・ストリングの最初の出現がストリング・テーブルにコピーされ、コードワードと関連づけられる。次に、同じバイト・ストリングの後続の出現は、コードワードへの参照によって置き換えられる。さらに、新しいバイト・ストリングは、以前のコードワード（プレフィックス）への参照の後に追加のバイトを続けることによって置き換えることができる。結果として、ストリング・テーブル内に新しいコードワードと新しいエントリが生成される。データが解凍されるときは、ストリング・テーブルが復元され、コードワードへの参照は、それらが表すバイト・ストリングに置き換えられる。
【００４１】
ＬＺＷアルゴリズムには多くの変形があり、それらは圧縮されるデータの形に従って変更することができる。次に、図４を参照して、このようなＬＺＷアルゴリズムの一例について説明する。図４は、１６進画像データ４０１を含む印刷データの例を示す。この画像データ４０１は、圧縮されたときにストリング・テーブル４０２とコード・ストリーム４０３によって表される。画像データ４０１は、画像データ中に「ｆｆ」で示された、右下隅にある黒の単一濃度の２×４領域を含む８×４の画像を表す。
【００４２】
ＬＺＷ圧縮の間に、ストリング・テーブルは、全ての可能な単一キャラクタ（character）値で初期化される。多くのアプリケーションでは、初期化によって各可能な単一のバイト値ごとに２５６のエントリが生じることになるが、簡単のために、この例では、可能な値の組は「００」と「ｆｆ」に制限する。したがって、ストリング・テーブル４０２の最初の２つのエントリはこれらの文字を含み、それぞれコードワードの００および０１に関連づけられる。この例では、それらの文字が、この段階におけるストリング・テーブル４０２のただ２つのエントリである。多くのアプリケーションでは、次いで、ストリング・テーブルには１つまたは複数の予約エントリが続くが、この例では、予約エントリが使用されていないことに留意されたい。
【００４３】
次に、画像データ４０１は、最初の文字である「００」を読み出し、それを検索ストリングとして使用してストリング・テーブルを検索することによって処理される。この文字はコードワード００で見つかる。したがって、画像データからの次の（２番目の）文字が検索ストリングに付加されて「００  ００」が得られ、ストリング・テーブルが再検索される。今回はテーブル内にそのストリングが見つからないので、それはコードワード０２としてテーブルに追加され、見つかった最後のストリングに対するコードワード００がコード・ストリーム４０３に追加され、前回の検索ストリングに追加された最後の文字と画像データ内の次の（３番目の）文字を含む新しい検索ストリングが生成される。この場合、新しい検索ストリングは「００  ００」（画像データの２番目と３番目の文字）であり、これはテーブル内のコードワード０２で見つかる。したがって、画像データからの次の（４番目の）文字が検索ストリングに付加されて「００  ００  ００」が得られ、ストリング・テーブルが再検索される。今回はテーブル内にそのストリングが見つからないので、コードワード０３としてテーブルに追加され、見つかった最後のストリングのコードワード０２がコード・ストリーム４０３に追加され、前回の検索ストリングに追加された最後の文字（画像データの４番目の文字）と、画像データ内の次の（５番目の）文字とを含む新しい検索ストリングが生成される。次に、このプロセスは、ストリング・テーブル内にその検索ストリングが見つからなくなるまで、画像データから検索ストリングへの新しい１バイトの追加を続ける。見つからなくなった時点で、検索ストリングがストリング・テーブルに追加され、直前に見つかったストリングのコードワードがコード・ストリームに追加され、検索ストリングに最後に追加されたバイトと画像データからの次のバイトとを用いた新しい検索が開始される。画像データ４０１に対するこのプロセスが終了すると、ストリング・テーブル４０２とコード・ストリーム４０３が生成され、これらから、コード・ストリーム４０３と、任意選択で、初期化された形のストリング・テーブル、すなわちコードワード００および０１に対するエントリだけを含む形のストリング・テーブルを復元するのに十分な情報とを含むＬＺＷ圧縮データ・ストリームが生成される。
【００４４】
ＬＺＷ圧縮データ・ストリームの解凍には、ストリング・テーブルの復元と、その復元されたストリング・テーブルおよびコード・ストリームを使用した印刷データの復元とが含まれる。これら２つのタスクは並列に実施することができる。しかし、本発明の好ましい実施形態によれば、有色画素の数を含むカバレージ・データを求めるために、ストリング・テーブルの復元を含む部分的な解凍が実施される。ストリング・テーブルが生成された後で、カバレージ推定値は、有色画素の数および任意選択で複数の各濃度レベルごとの有色画素の数とストリング・テーブル内の各コードワードとを関連づけるとともに、これらの数を使用してコード・ストリームに対する有色画素の数を計算することによって求められる。
【００４５】
ストリング・テーブルを復元する（recreate）ためには、ストリング・テーブルは最初に全ての可能な単一キャラクタ値で初期化されるが、この情報は、圧縮されたデータ・ストリームの形で受信されるか、または予め解凍部には既知である。最初のコードワードがコード・ストリームから読み取られ、ストリング・テーブル内で検索される。次いで、後続の各コードワードが読み取られ、順に処理される。取られるアクションは、そのコードワードがストリング・テーブル内に存在しているか否かによって決まる。ストリング・テーブル内にそのコードワードが存在している場合は、次のフリー（free）コードワードを使用して、ストリング・テーブルに新しいエントリが追加される。ストリング値は、前回処理されたコードワードの値に、処理されるコードワードの最初の文字が付加された値で構成される。ストリング・テーブル内にそのコードワードが存在しない場合は、そのコードワードがストリング・テーブルに追加され、ストリング値は、前回処理されたコードワードの値に、前回処理されたコードワードの最初の文字が付加された値で構成される。
【００４６】
例えば、図４を参照すると、ストリング・テーブルは、最初に、文字「００」および「ｆｆ」を含めるようにストリング・テーブル４０２を初期化することによって生成される。したがって、ストリング・テーブル４０２の最初の２つのエントリはこれらの文字を含み、それぞれコードワード００および０１に関連づけられる。次に、コード・ストリーム４０３は、各コードワードを順に読み出して処理することによって処理される。最初のコードワード００はストリング・テーブル中に存在するので、アクションは取られない。次のコードワード０２はストリング・テーブル内には存在しない。したがって、そのコードワード０２は、前回処理されたコードワード（００）の値（「００」）に前回処理されたコードワード（００）の最初の文字（「００」）を付加することで与えられる「００  ００」としてストリング・テーブルに追加される。この処理は、まだストリング・テーブル内に存在していない各コードワード０３、０４、および０５を、コード・ストリームからストリング・テーブル内に構成するように継続され、２番目の０５コードワードが読み込まれるまで継続される。この場合、このコードワードはすでにストリング・テーブル内に存在している。したがって、次のフリー・コードワード、すなわち０６を使用して、前回処理されたコードワード（０５）の値（「００  ００  ００  ００  ００」）に処理されるコードワード（０５）の最初の文字（「００」）を付加した値、すなわち「００  ００  ００  ００  ００  ００」を有する新しいコードワードがストリング・テーブルに追加される。次に、残りのコードワードは、それらがすでにストリング・テーブルに存在しているかどうかに応じて前述のように処理され、完全なストリング・テーブル４０２が構成される。
【００４７】
本発明の好ましい実施形態によれば、カバレージ・データは、１つまたは複数の各濃度レベルごとの有色画素の数を、再構成されたストリング・テーブル内の各コードワードと関連づけることによって得られる。有色画素の数が求められる濃度レベルの数は、印刷データに指定された濃度レベルの数またはターゲット装置によってサポートされる濃度レベルの数、あるいはその両方によって決まる。図４の例では、印刷データは、各「ｆｆ」が１画素である単一濃度レベルを含む。したがって、印刷データの有色画素の数は、印刷データを復元することを必要とせずに、コード・ストリームにおける各コードワードの有色画素の数を加算することによって計算することができる。例えば、図４のテーブル４０２では、コードワード０１、０７、および１１は１画素を含み、コードワード０８、０９、および１２は、それぞれ２、３、および４画素を含む。コード・ストリーム４０３は、合計３画素となる３つの０１コードワードと、２画素を含む１つの０８コードワードと、３画素を含む１つの０９コードワードとを含む。したがって、圧縮されたデータ・ストリームをフルに解凍することなく、総画素数は８になることが求められる。
【００４８】
テーブル４０２において、追加される各コードワードは、他のコードワードと追加の文字によって表すことができることに留意されたい。例えば、コードワード０５は、コードワード０４に追加の文字「００」を付加することによって表すことができる。同様に、あるコードワードの有色画素の数は、追加文字の有色画素の数と他のコードワードの有色画素の数の和となる。
【００４９】
さらに、他の例では、画像データ４０１には追加の値を含めることができ、その各値により、例えばグレー・スケール画像やカラー画像に必要な、画素の濃度または色の様々なレベルを指示することができることに留意されたい。この場合、画素の数は様々な濃度の画素を考慮するように修正することができる。
【００５０】
ＪＰＥＧアルゴリズムは、２段階の圧縮および解凍処理に基づくものである。圧縮の場合は、第１の段階で、各８×８ブロックのデータが、各々が固有の周波数を表す６４個のＤＣＴ係数を出力する離散コサイン変換（ＤＣＴ：Discrete Cosine Transformation）を使用して圧縮される。第２の段階で、各ＤＣＴ係数は量子化値およびエントロピ符号化を用いてスケール変更される。解凍の場合は、第１の段階で、エントロピ符号化を解除し、量子化値の逆数でスケール変換することによって、６４個のＤＣＴ係数が求められる。第２の段階で、逆離散コサイン変換（ＩＤＣＴ：InverseDiscrete Cosine Transformation）を用いて、ＤＣＴ係数から各８×８ブロックのデータが復元される。しかし、このアルゴリズムは「非可逆（lossy）」であり、したがって復元された８×８ブロックのデータはその元のデータとは正確にはマッチしていない可能性があることに留意されたい。このアルゴリズムは、"JPEGStill Image Data Compression Standard" by Pennebaker and Mitchell, VanNostrand Reinhold, 1993に詳述されている。
【００５１】
圧縮の間に、画像の各８×８ブロックに対するＤＣＴ係数が計算された後で、それらの係数は、そのサイズを減少させるために量子化（ある整数で除算）される。また、この量子化により、いくつかの係数がゼロに還元（reduce）されることも多い。次に、量子化された係数はエントロピ符号化される。ハフマンおよび算術と呼ばれる２つのエントロピ方式が知られているが、どちらも同一のデータ構造を利用する。この構造では、各非ゼロ量子化ＤＣＴ係数は、この係数の直前にあるゼロに量子化されたＤＣＴ係数の数を表す４ビットのゼロラン・フィールドと、ＤＣＴ係数を格納するために必要なビット数を示すレングス（length）・フィールドと、ＤＣＴ係数とを含む。
【００５２】
この構造の例として、８個の量子化ＤＣＴ係数５０１の場合の例が図５に示されている。この例では、ＤＣＴ１、ＤＣＴ３、およびＤＣＴ８はそれぞれ、５、８、および３の値を有し、他のすべての係数は０である。これらの値のエントロピ符号化５０２が２進表現で示されており、各行は破線で示されたようなＤＣＴ係数を含む。例えば、ＤＣＴ８のエントロピ符号化は、この係数の直前のゼロ量子化ＤＣＴ係数の数である４（すなわち、ＤＣＴ４、５、６、および７）に設定された４ビットの値（５０３）と、ＤＣＴ８を格納するために使用されるビット数である２に設定された４ビットの値（５０４）と、ＤＣＴ８の値である２ビットの値（５０５）とが含まれる。
【００５３】
８×８ブロックを表す６４個のＤＣＴ係数の１つはＤＣ係数と呼ばれており、８×８ブロックの平均濃度を表す。他の６３の係数はＡＣ係数と呼ばれており、８×８ブロックの実際の画素を計算するために使用することができる周波数項（frequency term）を規定する。
【００５４】
本発明の好ましい実施形態では、カバレージ・データは、ＪＰＥＧ印刷データの各８×８ブロックごとに、そのＤＣ係数を取得しそれを８×８ブロックの平均濃度として使用することによって求められる。次いで、全体の印刷データについてのカバレージ推定値は、求められた平均濃度に基づいて各ブロックごとのカバレージ推定値を計算し、その結果を加算することによって計算される。
【００５５】
ＤＣ係数を取得するために、ＪＰＥＧデータ・ストリームは部分的に解凍される。この部分的な解凍は、エントロピ符号化から量子化されたＤＣ係数を求め、それらを量子化解除することによってなされる。例えば、ＤＣ係数は各ブロックの最初の係数であり、ＤＣ係数が検出された後で、エントロピ符号化から次のブロックが検出される。次のブロックは、各ＤＣＴ係数のレングス・フィールドを繰り返し読み出し、次のブロックが検出されるまで、次の非ゼロ係数にスキップすることによって検出される。
【００５６】
任意選択で、１つまたは複数のＡＣ係数を考慮することもできる。ＤＣ係数は良好な近似を提供するが、ブロックのトナー使用量は８×８ブロックのパターンによって変化する。例えば、ブロックが中央に小さな矩形を含み、残りがブランクの場合は、ＤＣ推定値は実際の使用量を僅かに下回ることになる。したがって、ＡＣ係数を使用して、ブロック内のトナー配分を検出し、それによって推定値を修正することができる。
【００５７】
画像が１つまたは複数のカラー・プレーンを含むことができることに留意されたい。したがって、本発明の好ましい実施形態は、スポットあたり１ビットの白黒画像から、３２ビット（またはそれ以上の）フル処理カラー画像までの、あらゆる種類の画像に適用可能である。
【００５８】
好ましい実施形態では、本発明を３つの非常に良く知られた圧縮アルゴリズムに関して説明しているが、例えばＪＢＩＧ２など、他のいくつかの圧縮アルゴリズムが同じアプローチに適していることは、当業者には明らかであろう。
【００５９】
本発明は、すべてがハードウェアの実施形態、すべてがソフトウェアの実施形態、またはハードウェアとソフトウェアの両方の要素を含む実施形態の形をとることができる。好ましい実施形態では、本発明はソフトウェアの形で実装されている。ソフトウェアには、ファームウェア、常駐ソフトウェア、マイクロコードなどが含まれるが、これらに限られるものではない。
【００６０】
さらに、本発明は、コンピュータまたは任意の命令実行システムによって、またはそれらとともに使用されるプログラム・コードを提供する、コンピュータで使用可能なコンピュータ・プログラムの形をとることもできる。本明細書の目的では、コンピュータで使用可能な媒体、またはコンピュータ可読の媒体は、命令実行システム、装置、もしくはデバイスによって使用される、またはそれらとともに使用されるプログラムを、収容、格納、通信、伝播、または伝送することができる任意の装置であってよい。
【００６１】
媒体は、電子的、磁気的、光学的、電磁的、赤外、または半導体システム（もしくは装置もしくはデバイス）、あるいは伝播媒体でもよい。コンピュータ可読の媒体の例には、半導体または固体メモリ、磁気テープ、リムーバブル・コンピュータ・ディスケット、ＲＡＭ（ランダム・アクセス・メモリ）、ＲＯＭ（読出し専用メモリ）、硬質磁気ディスク、光ディスクなどがある。光ディスクの現行の例には、ＣＤ−ＲＯＭ（compact disk - read only memory）、ＣＤ−ＲＷ（compact disk - read/write）、ＤＶＤなどがある。
【００６２】
プログラム・コードの格納または実行、あるいはその両方に適したデータ処理システムは、システム・バスを介してメモリ素子に直接または間接に結合された少なくとも１つのプロセッサを含む。メモリ素子は、プログラム・コードの実際の実行の間に使用されるローカル・メモリ、大容量記憶装置、および実行時に大容量記憶装置からコードを取り出さなければならない回数を削減するために、少なくともプログラム・コードの一部の一時的な記憶を提供するキャッシュ・メモリを含むことができる。
【００６３】
入／出力またはＩ／Ｏ装置（これらに限られるものではないが、キーボード、ディスプレイ、ポインティング・デバイスなど）は、直接、または中間のＩ／Ｏコントローラを介してシステムに結合することができる。
【００６４】
データ処理システムが、中間にあるプライベート・ネットワークまたはパブリック・ネットワークを介して、他のデータ処理システムまたはリモート・プリンタまたは記憶装置に結合できるようにするために、ネットワーク・アダプタをシステムに結合することもできる。モデム、ケーブル・モデム、およびイーサネット（Ｒ）・カードは、現在使用可能な種類のネットワーク・アダプタのほんの一例である。
【００６５】
要約すれば、本発明は、圧縮データ・ストリームの形で規定された印刷データを印刷するために必要なトナー・カバレージ量の推定値を計算するための方法、装置、およびプログラムを提供する。推定値は、部分的に解凍された形のデータ・ストリームからカバレージ・データを取得し、それを使用してカバレージ推定値を求めることによる、削減された処理によって得られる。したがって、データ・ストリームのフル解凍を実施する必要はない。例えば、カバレージ・データは、少なくとも１つの濃度レベルに対する有色画素の数である。
【図面の簡単な説明】
【００６６】
【図１】本発明の好ましい実施形態が有利に適用される印刷システムを示す概略構成図である。
【図２】圧縮データ・ストリームからマーキング材料の推定値を求めるための流れ図である。
【図３】Ｇｒｏｕｐ４圧縮データ・ストリームの部分的な解凍に使用される例示的なデータ・ストリームの内容を示す図である。
【図４】ＬＺＷ（Lempel-Ziv Welch）圧縮データ・ストリームの部分的な解凍に使用される例示的なデータ・ストリームの内容を示す図である。
【図５】ＪＰＥＧ圧縮データ・ストリームの部分的な解凍に使用される例示的なデータ・ストリームの内容を示す図である。
【符号の説明】
【００６７】
１００  プリント・サーバ
１０１  ネットワーク・インターフェース
１０２  プロセッサ
１０３  揮発性メモリ
１０４  不揮発性メモリ
１０５  プリンタ・インターフェース
１１０  印刷装置
１１１  ホスト・インターフェース
１１２  プロセッサ
１１３  揮発性メモリ
１１４  不揮発性メモリ
１１５  プリント・ヘッド
１１６  トナー・リザーバ
１２０  ネットワーク
３０１  画像ビットマップ
３０２  画像ビットマップの１６進ラン・エンド形式
４０１  １６進画像データ
４０２  ストリング・テーブル
４０３  コード・ストリーム
５０１  ＤＣＴ係数
５０２  エントロピ符号化
【図１】
2008076438.tif 000003
【図２】
2008076438.tif 000004
【図３】
2008076438.tif 000005
【図４】
2008076438.tif 000006
【図５】
2008076438.tif 000007