(57)【要約】　　　（修正有）【課題】メモリ容量を増加せずに圧縮処理を効果的に行って高速処理を実現可能な圧縮方法、並びに、それを利用する高速のカラープリンタを提供する。【解決手段】最新の入力データを複数個記憶する履歴バッファ、画像データの圧縮データを出力する第１の出力部、履歴バッファの各データと今回の入力データを比較する第１の比較部とを備えて、比較部が一致すると判断した場合に、一致位置オフセット値を第１の出力部に出力し、一致しないと判断した場合に、一致符号と区別可能な透過符号と、入力データを透過データとして第１の出力部に出力する第２の出力部とを有し、一個の入力データのサイズはバス幅に一致させ、一致符号と一致位置オフセット値の和が１バイト以内になるように一致符号のビット幅と履歴バッファの大きさを設定し、透過符号は８ビット以内になるように設定され、第１の出力部は前記圧縮データを１バイト単位で出力する。【選択図】　　　　　図１
2004112665.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ又は専用ハードウェアを利用して画像データを圧縮する装置であって、
最新の入力データを複数個記憶する履歴バッファと、
前記画像データの圧縮データを出力する第１の出力部と、
当該履歴バッファの各データと今回の入力データを比較する第１の比較部と、当該第１の比較部が一致すると判断した場合に、一致符号と入力データから何個手前の履歴データかを示す一致位置オフセット値を前記第１の出力部に出力し、前記第１の比較部が一致しないと判断した場合に、一致符号と区別可能な透過符号と、入力データを透過データとして前記第１の出力部に出力する第２の出力部とを有し、
一個の入力データのサイズは前記ＣＰＵの処理単位又は前記専用ハードウェアが接続されるバス幅に一致し、
一致符号と一致位置オフセット値の和が１バイト以内になるように一致符号のビット幅と履歴バッファの大きさが設定され、
透過符号は８ビット以内になるように設定され、前記第１の出力部は前記圧縮データを１バイト単位で出力することを特徴とする圧縮装置。
【請求項２】
前記今回のデータに特定のデータが含まれるかどうかを判断する第２の比較部と、
前記第２の比較部が前記特定のデータが含まれると判断した場合に、前記特定のデータが含まれることを示す８ビットより小さくて前記一致符号及び前記透過符号と区別可能な特定データ一致符号を前記第１の出力部に出力する第３の出力部とを更に有することを特徴とする請求項１記載の圧縮装置。
【請求項３】
前記リピート符号が最大値に達した場合に、リピート数を拡張することを示す８ビットより小さい拡張リピート符号を有し、出力データのうち拡張リピート符号を除く残りのビットをリピート数符号として、リピート数を更に拡張できることを特徴とする請求項１記載の圧縮装置。
【請求項４】
画像データを圧縮する方法であって、
前記画像データに空白データが含まれるかどうかを判断するステップと、
前記判断ステップが前記空白データが含まれると判断した場合に、前記空白データを一以上繰り返すことを表す第１の符号を生成することによって前記画像データを圧縮するステップとを有し、
前記画像データが、当該画像データの直前１６個のデータのいずれかの繰り返しであるかどうかを判断するステップと、
前記判断ステップが繰り返しであると判断した場合に前記画像データを、手前のデータを一以上繰り返すことを表す第２の符合を生成するか、若しくは、前記第１又は第２の符号を一以上繰り返すことを表す第３の符号を生成することによって、圧縮するステップとを有することを特徴とする圧縮方法。
【請求項５】
前記画像データは３２ビットであり、
前記圧縮方法は、
前記画像データの上位１６ビットと下位１６ビットの少なくとも一方が、前記画像データの直前８個のデータのそれぞれの上位１６ビット又は下位１６ビットと一致するかどうかを判断するステップとを更に有し、
前記画像データの上位１６ビットと下位１６ビットの少なくとも一方が一致すると判断された場合に、前記少なくとも一方を圧縮するステップとを有することを特徴とする請求項４記載の方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般に、画像データの圧縮方法及びかかる方法を利用するカラー画像形成装置に係り、特に、ＹＭＣＫフレームデータから構成されるカラー画像データの圧縮方法に関する。ここで、「ＹＭＣＫフレームデータ」とは、黄（Ｙｅｌｌｏｗ）、赤（Ｍａｇｅｎｔａ）、青（Ｃｙａｎ）、黒（Ｂｌａｃｋ）で表された画像又は映像の一コマのデータをいう。
【０００２】
【従来の技術】
近年、ディジタルカメラなどカラー画像が流通する機会が多くなり、それに伴って、これを印刷するカラープリンタの需要が益々高まっている。多値をサポートするカラープリンタで問題になるのが、ＹＭＣＫフレームデータのサイズが膨大であることである。例えば、画像をＡ４サイズで解像度６００ｄｐｉの１６値の中間値で表現する場合は、６４Ｍｂｙｔｅ／ｐａｇｅのメモリ容量が必要となる。スループットや両面印刷を考慮すると、非圧縮では搭載されるメモリ容量は膨大となる。かかるメモリ容量の増大は、プリンタのコストアップを招くため、好ましくない。
【０００３】
また、丁合い印刷を高速に実行する場合、ラスタライズ後の最終のＹＭＣＫフレームデータをメモリ又はＨＤＤ等に保存すれば、２部目以降の印刷はラスタライズ処理が不要となり、実効性能が向上する。しかし、フレームデータが膨大な場合、ＨＤＤ容量やＨＤＤのアクセス速度等が高速動作を制限するため、非圧縮だと逆に性能劣化になる場合もある。
【０００４】
しかも、２０ｐｐｍクラスの高速カラープリンタを実現しようとすると、処理速度は数１０Ｍｂｙｔｅ／ｓｅｃ必要となり、しかも最悪値保証（最悪の場合でも印刷が間に合うこと）が必要となる。例えば、Ａ４サイズで解像度６００ｄｐｉの２５６値画像で１２８Ｍｂｙｔｅ，２０ｐｐｍは３秒で１ページなので約４３Ｍｂｙｔｅ／ｓｅｃ、その他の処理も必要なのでマージンを考慮して５０Ｍｂｙｔｅ／ｓｅｃ以上が必要となる。
【０００５】
従って、ＹＭＣＫフレームをリアルタイムで圧縮／伸張する技術がどうしても必要になる。そこで、従来は、ランレングス手法、ハフマン符号、レンペル・ジップ法、ＪＰＥＧ、ＪＢＩＧ、等、各種の圧縮方法が提案されている。
【０００６】
その他の先行技術文献としては、特開平０５−２３６２８０号公報、特公平０６−０９５７２４号公報、特許第２７８５６４１号公報などがある。
【０００７】
【発明が解決しようとする課題】
しかし、ランレングス手法は、非常に単純なアルゴリズムで高速に処理できるが、直前のデータの繰り返ししか圧縮しないので、ディザがかかったような画像データは効率的に圧縮できない。換言すれば、ランレングス手法は圧縮率が余り高くないという問題を有する。ＴＩＦＦのＰａｃｋＢｉｔも同様である。ハフマン符号は、画像データのようなイメージには向いておらず、処理時間も長い。
【０００８】
レンペル・ジップ法は、入力が１バイト単位で遅く、可変長のストリング一致検出に時間がかかるために、たとえハードでパイプライン化したとしても１クロックで動作するようなハードはできない。ＡＬＤＣ（Ａｄａｐｔｉｖｅ　Ｌｏｓｓｌｅｓｓ　Ｄａｔａ　Ｃｏｍｐｒｅｓｓｉｏｎ）も同様で実行速度の最悪値保証ができない。最悪値保証がないとプリンタでは印刷に間に合わない場合が生じる。このように、レンペル・ジップ法では実行時間が遅いという問題がある。
【０００９】
ＪＰＥＧは、圧縮率が高いもののロッシーであり、画質が劣化する。即ち、ランレングス手法、ハフマン符号、レンペル・ジップ法が圧縮前のデータと圧縮して伸張した後のデータとが全く同一であるのに対して、ＪＰＥＧは圧縮して伸張した後のデータには損失がある。また、ＪＰＥＧは、圧縮処理が複雑で、特に、プリンタのように６００ｄｐｉなどの解像度が要求される環境ではリアルタイム処理が行えず、伸張にも時間がかかる。
【００１０】
ＪＢＩＧは、ＦＡＸのような２値画像データを対象としており、多値データは扱えない。
【００１１】
従って、特に多値をサポートする高速カラープリンタを実現する場合、従来の圧縮手法が流用できず、新しい圧縮手法が必要となった。
【００１２】
そこで、カラープリンタのメモリ容量を増加せずにメモリの容量は標準カラープリンタと同程度にして圧縮処理を効果的に行って高速処理を実現可能な圧縮方法、並びに、それを利用する高速のカラープリンタを提供することを本発明の例示的な目的とする。
【００１３】
【課題を解決するための手段】
かかる目的を達成するために、本発明の一側面としての圧縮装置は、ＣＰＵ又は専用ハードウェアを利用して画像データを圧縮する装置であって、最新の入力データを複数個記憶する履歴バッファと、前記画像データの圧縮データを出力する第１の出力部と、当該履歴バッファの各データと今回の入力データを比較する第１の比較部と、当該第１の比較部が一致すると判断した場合に、一致符号と入力データから何個手前の履歴データかを示す一致位置オフセット値を前記第１の出力部に出力し、前記第１の比較部が一致しないと判断した場合に、一致符号と区別可能な透過符号と、入力データを透過データとして前記第１の出力部に出力する第２の出力部とを有し、一個の入力データのサイズは前記ＣＰＵの処理単位又は前記専用ハードウェアが接続されるバス幅に一致し、一致符号と一致位置オフセット値の和が１バイト以内になるように一致符号のビット幅と履歴バッファの大きさが設定され、透過符号は８ビット以内になるように設定され、前記第１の出力部は前記圧縮データを１バイト単位で出力することを特徴とする。かかる圧縮装置においては、履歴バッファが複数個格納できるので、ランレングス手法と異なり、ディザがかかった画像にも対応できる。また、符号及び圧縮後の出力が１バイト以内に単純化されているので高速動作を図ることができる。各入力データのサイズは前記ＣＰＵの処理単位又は前記専用ハードウェアが接続されるバス幅に一致するので高速化が図れる。
【００１４】
前記一個の入力データの前記サイズは、例えば、一般的なＣＰＵ、バス幅の単位である、３２ビットであってもよい。これにより、高速処理を図ることができる。前記履歴バッファの大きさは、通常は８、大きいディザで１４程度の、前記画像データのディザ処理のディザマトリックスのサイズより大きいことが好ましい。これにより、ディザの繰り返し成分を圧縮することができる。前記履歴バッファが記憶可能な前記入力データの個数は、例えば、３２個以内である。履歴バッファの大きさを、一般的なＲＩＳＣ型ＣＰＵのレジスタ総数である３２個以内、例えば、１６個に収めることによってＣＰＵレジスタを履歴バッファとして使用することができ、ＣＰＵで高速に処理することが可能になる。
【００１５】
前記第２の出力手段は、２個以上一致するものがあると判断した場合は、例えば、前記一致位置オフセット値の小さい方、即ち、入力データに近い方を選択してもよい。もちろん、本発明は遠い方の選択を禁止するものではない。
【００１６】
前記一致符号と前記一致位置オフセット値の前記和は７ビット以下であり、前記第２の出力部はリピート数符号を更に出力し、前記一致符号と前記一致位置オフセット値と前記リピート数符号の和は１バイト以内であり、前記第２の出力部は、前記第１の比較部が２回同一の一致位置オフセット値を有する一致を検出した場合には、前記一致符号と前記一致位置オフセット値を出力せずに前記リピート符号を最大値までインクリメントして出力してもよい。これにより、同一符号の出力を省略して圧縮率を向上することができる。
【００１７】
前記透過符号は７ビット以下であり、前記第２の出力部はリピート数符号を更に出力し、前記透過符号と前記リピート数符号の和は１バイト以内であり、前記第２の出力部は、前記第１の比較部が２回不一致を検出した場合には、前記透過符号を出力せずに前記リピート符号を最大値までインクリメントして出力してもよい。これにより、透過符号付与のオーバーヘッドを最小にすることができる。
【００１８】
前記今回のデータに特定のデータが含まれるかどうかを判断する第２の比較部と、前記第２の比較部が前記特定のデータが含まれると判断した場合に、前記特定のデータが含まれることを示す８ビットより小さくて前記一致符号及び前記透過符号と区別可能な特定データ一致符号を前記第１の出力部に出力する第３の出力部とを更に有してもよい。かかる圧縮装置は、全データを一律に圧縮するのではなく、冗長性の高い特定のデータを圧縮することによって圧縮手法を単純にすることができる。前記特定データは、例えば、無色を表す空白データ（又はＮＵＬＬデータ）であってもよい。ＹＭＣＫフレームデータには特に空白部が多いことに鑑みたものである。
【００１９】
前記特定データ一致符号は７ビット以下であり、前記第４の出力部はリピート数符号を更に出力し、前記特定データ一致符号と前記リピート数符号の和は１バイト以内であり、前記第４の出力部は、前記第２の比較部が前記特定データが含まれることを検出した場合には、前記特定データ一致符合を出力せずに前記リピート符号を最大値までインクリメントして出力してもよい。これにより、同一符号の出力を省略して圧縮率を向上することができる。
【００２０】
前記第２の比較部が前記特定データを検出した場合、前記第４の出力部は、前記第１の比較部による比較よりも優先して前記第１の出力部に出力し、前記履歴バッファは更新されなくてもよい。かかる圧縮装置によれば、特定データが履歴バッファに書き込まれないように構成することによって、履歴バッファの効率を向上させて圧縮率の向上が可能となる。
【００２１】
前記リピート符号が最大値に達した場合に、リピート数を拡張することを示す８ビットより小さい拡張リピート符号を有し、出力データのうち拡張リピート符号を除く残りのビットをリピート数符号として、リピート数を更に拡張してもよい。リピート符号を設けて符号を１バイト以内に維持して高速処理を図る一方で、リピート符号を設けて同一データの出力を省略して圧縮率を向上することができる。
【００２２】
拡張リピート符号において、拡張リピート符号に付随するリピート数符号が最大値に達した場合、更に次のデータを拡張リピート符号とし、それを繰り返す事により、リピート符号を拡張してもよい。かかる圧縮装置によれば、リピート符号を拡張可能にすることによって圧縮率の向上を維持することができる。
【００２３】
前記圧縮装置は、前記履歴バッファに格納されている前記今回の入力データ直前の半分を、上位１６ビットと下位１６ビットの二個のデータに分割する第１の分割部と、前記入力データを上位１６ビットと下位１６ビットの二個のデータに分割する第２の分割部と、前記今回の入力データの前記上位１６ビットと前記下位１６ビットのそれぞれを、前記第１の分割部によって分割されたデータと比較する第３の比較部と、第４の出力部とを更に有し、当該第４の出力部は、前記第３の比較部が前記今回の入力データの前記上位１６ビットと前記下位１６ビットの両方が不一致であると判断した場合には、前記透過符号と前記透過データを出力し、当該前記第３の比較部が前記今回の入力データの前記上位１６ビット及び／又は前記下位１６ビットが一致すると判断した場合には、前記今回の入力データの前記上位１６ビットと前記下位１６ビットのうちで一致する態様を表す符号と一致位置を示すオフセット値を出力すると共に、前記今回の入力データの前記上位１６ビット又は前記下位１６ビットが一致する場合には不一致の方をオフセット値として更に出力し、前記一致する態様を表す符号と前記一致位置を示すオフセット値の和は８ビットであってもよい。１６ビットより大きいビット、例えば、３２ビットを処理単位とすると、その中にある１６ビット単位の細かい冗長度は圧縮されない。この冗長成分が多いデータの場合、高い圧縮率を得られないという問題が発生する。例えば、特に、写真等の写実的な絵の場合かなりミクロレベルでしか繰り返しが発生しない可能性がある。一方、１６ビットを処理単位にすると圧縮に長時間かかることになる。そこで、かかる圧縮装置は、高速処理を維持したまま、１６ビット単位の冗長成分も圧縮できるように圧縮率を向上している。
【００２４】
前記圧縮装置は専用ハードウェアを利用し、複数の一致符合を出力可能な場合にいずれかの一致符号を選択する選択部を更に有し、前記ハードウェアが動作可能な周波数の１クロックで比較を行ってもよい。これにより、ハードウェアが動作可能な周波数の１クロックで一致及び不一致の判定を行うことができる。
【００２５】
本発明の別の側面としての圧縮方法は、画像データを圧縮する方法であって、前記画像データに空白データが含まれるかどうかを判断するステップと、前記判断ステップが前記空白データが含まれると判断した場合に、前記空白データを一以上繰り返すことを表す第１の符号を生成することによって前記画像データを圧縮するステップとを有し、前記画像データが、当該画像データの直前１６個のデータのいずれかの繰り返しであるかどうかを判断するステップと、前記判断ステップが繰り返しであると判断した場合に前記画像データを、手前のデータを一以上繰り返すことを表す第２の符合を生成するか、若しくは、前記第１又は第２の符号を一以上繰り返すことを表す第３の符号を生成することによって、圧縮するステップとを有することを特徴とする。かかる圧縮方法は、（ＹＭＣＫフレームデータなど）空白データが多い画像データを一律に圧縮するのではなく冗長性の高い空白データを圧縮することによって圧縮処理の単純化と圧縮率の向上を図っている。また、かかる圧縮方法は、画像データによっては、ディザの繰り返し成分など、何ドットか前のパターンが繰り返されることが多い場合があることに鑑みて、連続空白データ又はディザによる連続繰り返し部を更に圧縮することができる。
【００２６】
前記画像データは３２ビットであり、前記圧縮方法は、前記画像データの上位１６ビットと下位１６ビットの少なくとも一方が、前記画像データの直前８個のデータのそれぞれの上位１６ビット又は下位１６ビットと一致するかどうかを判断するステップとを更に有し、前記画像データの上位１６ビットと下位１６ビットの少なくとも一方が一致すると判断された場合に、前記少なくとも一方を圧縮するステップとを有することを特徴とする。３２ビットを処理単位とすると、その中にある１６ビット単位の細かい冗長度は圧縮されない。この冗長成分が多いデータの場合、高い圧縮率を得られないという問題が発生する。例えば、特に、写真等の写実的な絵の場合かなりミクロレベルでしか繰り返しが発生しない可能性がある。一方、１６ビットを処理単位にすると圧縮に長時間かかることになる。そこで、かかる圧縮方法は、高速処理を維持したまま、１６ビット単位の冗長成分も圧縮できるように圧縮率を向上している。
【００２７】
上述の圧縮装置を有することを特徴とするカラー画像形成装置や、上述の圧縮方法を実行するためのプログラムも本発明の一側面を構成する。
【００２８】
本発明の他の目的と更なる特徴は、以下、添付図面を参照して説明される実施例において明らかになるであろう。
【００２９】
【発明の実施の形態】
以下、図１を参照して、カラー画像形成装置１について説明する。ここで、図１は、カラー画像形成装置１の概略側面断面図である。カラー画像形成装置１は、カラープリンタとして具体化され、４つの画像形成ユニット２００ａ乃至２００ｄと、用紙引き込み部３１０と、用紙搬送部３２０と、定着器３３０と、スタッカ３５０とを有する。カラー画像形成装置１は、ＹＭＣＫの４色を使用しており、黒（Ｋ）が画像形成ユニット２００ａ、青（Ｃ）が画像形成ユニット２００ｂ、赤（Ｍ）が画像形成ユニット２００ｃ、黄（Ｙ）が画像形成ユニット２００ｄにそれぞれ割り当てられている。なお、特に断らない限り、参照番号２００は参照番号２００ａなどを総括するものとする。もちろん、本発明はこれらに更に数色加わっても適用可能である。また、カラー画像形成装置１は片面印刷と両面印刷の両方に適用できることはいうまでもない。
【００３０】
用紙引き込み部３１０は、複数枚の印刷用紙Ｐを収納するホッパ（又はトレイ）３１２から最上位の用紙Ｐを取り出して装置内部の用紙搬送部３２０へ供給する。用紙引き込み部３１０は、ホッパ３１２と、ピックアップローラ３１４とを有する。ホッパ３１２は複数枚の用紙Ｐを収納する。ピックアップローラ３１４は、ホッパ３１２にセットされている用紙Ｐの最上位の用紙Ｐに当接してこれを１枚ずつ繰り出す。
【００３１】
用紙搬送部３２０は、用紙引き込み部３１０から用紙Ｐを受け取って、これを用紙搬送路３４５に沿って装置上部のスタッカ３５０まで搬送する。用紙搬送部３２０は、紙送りローラ３２２と、搬送ベルト３２４と、搬送ベルト３２４を回転させる駆動ローラ３２６と、従動ローラ３２６とを有する。用紙Ｐは紙送りローラ３２２によって搬送ベルト３２４に搬送される。その後、用紙Ｐは、ローラ３２６及び３２８によって図１の左回り（反時計回り）に回転している搬送ベルト３２４に静電吸着し、画像形成ユニット２００の感光体ドラム２１０とベルト３２４との間を搬送され、定着器３３０を経て、スタッカ３５０に排出される。
【００３２】
図１に示すように、好ましくは、搬送ベルト３２４の下側のベルト面にはベルト移動方向に直行する方向にセンサ３２９が設置される。センサ３２９は搬送ベルト３２４のレジストマークを光学的に読み取って搬送ベルト３２４の位置ずれを検出する。
【００３３】
画像形成ユニット２００は印刷用紙Ｐに所望のトナー像を形成（転写）する機能を有する。図１に示すように、４つの画像形成ユニット２００ａ乃至２００ｄは直線的に整列している。画像形成ユニット２００は、図２に示すように、感光体ドラム２１０と、前帯電器２２０と、露光装置としてのＬＤユニット２２５と、現像装置２３０と、転写ローラ２４０と、クリーニング部２５０と、スクリューコンベア２６０とを有する。ここで、図２は、画像形成ユニット２００の概略断面図である。
【００３４】
感光体ドラム２１０は回転が可能なドラム状導体支持体上に感光性誘電体層を有し、像保持部材として使用される。感光体ドラム２１０は、例えば、表面に機能分離型有機感光体を厚さ約２０μｍに塗布したアルミニウム製ドラムから構成され、外径３０ｍｍを有して矢印方向に周速度７０ｍｍ／ｓで回転する。
【００３５】
前帯電器２２０は、例えば、スコロトロン帯電器から構成され、感光体ドラム２１０の表面に一定の電荷量（例えば、約−７００Ｖ）を与える。
【００３６】
露光装置２２５は感光体ドラム２１０を一様に（例えば、−６００Ｖに）帯電する。露光装置２２５は、当業界で周知のいかなる露光方式（例えば、機械走査方式や固定走査方式）も採用することができ、ＬＤから構成される。
【００３７】
現像装置２３０は、感光体ドラム２１０に形成された潜像をトナー像として可視化する機能を有する。現像装置２３０は、現像ローラ２３２と、リセットローラ２３４と、トナーカートリッジ２３６とを有する。本実施例では、現像剤に例示的にＹＭＣＫの４色のトナーを使用している。現像剤は一成分、二成分（即ち、キャリアを含む）とを問わず、磁性、非磁性を問わない。トナーカートリッジ２３６はトナーを貯蔵しており、リセットローラ２３４にトナーを供給する。リセットローラ２３４は現像ローラ２３２に当接してトナーを現像ローラ２３２に供給する。現像ローラ２３２は感光体ドラム２１０に接触又は非接触に配置され、静電気力を利用して感光体ドラム２１０にトナーを供給する。この結果、感光体ドラム２１０上にトナー像が形成される。現像ローラ２３２上に残留した未使用トナーは、リセットローラ２３４によって回収され、トナーカートリッジ２３６内へと戻される。
【００３８】
転写ローラ２４０は、静電的にトナーを吸着するような電界を発生させ、転写電流を利用して感光体ドラム２１０上に吸着しているトナー像を用紙Ｐに転写する。
【００３９】
クリーニング部２５０は転写後に感光体ドラム２１０上に残っているトナーを回収し廃棄するか、必要があれば、スクリューコンベア２６０によって回収したトナーをトナーカートリッジ２３６に返却する。また、クリーニング部２５０は感光体ドラム２１０上のごみを回収する機能も有する。クリーニング部２５０は感光体ドラム２１０のトナーと帯電を除去するために磁気やゴム摩擦を含む各種の方法を利用することができる。
【００４０】
定着器３３０は用紙Ｐにトナー像（トナー重層）を永久的に固着させる機能を有する。転写後のトナーは用紙Ｐに弱い力で付着しているだけであるから簡単に剥がれ落ちる。そこで、定着器３３０が、加圧及び加熱によりトナーを融溶して用紙Ｐに浸透させる。定着器３３０は、一対の定着ローラ３３２を有する。一対の定着ローラ３３２は、互いに平行かつ接触するように配置され、それらの間にはニップが形成される。定着ローラ３３２は、例えば、フッ素系ゴムやシリコンゴム等から構成される。定着ローラ３３２は熱源としてハロゲンランプ等を内蔵し、例えば、１７０℃乃至１９０℃に加熱することができる。定着ローラ３３２の表面温度を検出するために図示されていないサーミスタが設置されている。更に、一対の定着ローラ３３２の間には、例えば、３３ａｔｍの高圧が付加されるようになっている。これにより、用紙Ｐ上に転写したトナーは高温、高圧によって定着される。
【００４１】
スタッカ３５０には印刷終了後の用紙Ｐが排出される。
【００４２】
以下、図３を参照して、カラー画像形成装置１の制御系について説明する。ここで、図３は、カラー画像形成装置１の制御系のブロック図である。制御系は、プリンタコントローラ１００と、メカ制御回路部１８０と、プリンタエンジン１９０とを有する。
【００４３】
プリンタコントローラ１００は、カラー画像形成装置１の裏面等に設けられた図示しないプリンタケーブルなどを介して図示しないコンピュータ、ＬＡＮ等のネットワークその他の外部装置（以下、単に「ホスト」という。）１０に接続されている。ホスト１０が典型的なパーソナルコンピュータにより構成される場合、ホスト１０は、ウィンドウズなどのＯＳによって構築され、各種アプリケーション１２とプリンタドライバ１４をサポートする。
【００４４】
コントローラ１００は、コントローラボードとして具体化され、ホスト１０からのコマンド解析処理、描画処理、色変換処理、ディザ処理、ＰＷＭ処理、圧縮処理を行う。コマンド解析処理ではコントローラ１００は、処理の分析、割り当て、内部言語への変換を行う。描画処理では、コントローラ１００は、画像の座標変換、図形描画などを行う。
【００４５】
色変換処理では、コントローラ１００は、ＲＧＢから印刷に用いる色であるＹＭＣＫへの変換を行う。具体的には、色変換処理は、Ａ／Ｄ変換やシェーディング補正などを行う入力処理（Ｉｎｐｕｔ　Ｐｒｏｃｅｓｓｉｎｇ）によりＲＧＢをＣＭＹに変換し、画素単位のＹＭＣデータからエッジや網点を検出などする領域分離処理（Ｓｅｇｍｅｎｔａｔｉｏｎ）、ＣＭＹの３色の比率から黒（Ｋ）の生成量を決定する黒生成（ＢＧ：Ｂｌａｃｋ　Ｇｅｎｅｒａｔｉｏｎ）、トナーの分光特性における他色との重なりを除去して色の濁りを抑える色補正処理（Ｃｏｌｏｒ　Ｃｏｒｒｅｃｔｉｏｎ）を含む。
【００４６】
ディザ処理（スクリーン処理又は面積階調処理と呼ばれる場合もある。）では、コントローラ１００は、ＹＭＣＫ各色毎に多値のデータを濃度に応じた面積のドットパターンに変換する。
【００４７】
ＰＷＭ処理では、指定のＰＷＭ信号を実際のパルスに変換する。これらの処理の結果、コントローラ１００は、ホスト１０から送られるＹＭＣＫの印刷パターン情報を、例えば、ビットマップ形式のラスタ信号（又はビデオ信号）に展開してメカ制御回路部１８０に送出する。このようなラスタライズ後の最終のラスタ信号又はビデオ信号を本出願ではＹＭＣＫフレームデータと呼ぶ。
【００４８】
本実施形態では、コントローラ１００は更に圧縮処理を行う。まず、本発明者らは、ＹＭＣＫフレームデータの全データを、従来のように均等に圧縮するのではアルゴリズムが複雑になり高速の圧縮／伸張処理を効率的に行えないし、大容量のメモリが必要になると分析した。このため、本発明者らは、ハードを単純化するために、ＹＭＣＫフレームデータの冗長成分のみを圧縮することが必要であると考えた。そこで、本発明者らは、ＹＭＣＫフレームデータのどこに冗長性があるかをまず検討した。その結果、本発明者らは以下の３つの冗長性を発見した。
【００４９】
第１に、ＹＭＣＫフレームデータは、人間の目で見てもＹＭＣＫの各色についても、空白データ（０）が多いことを発見した。なお、本出願ではフレームデータは０を空白とする加色法を想定している。例えば、ＹＭＣＫ全てを最高値で印刷した時を合計インク使用量百分率４００％とすると、「２４０％以内」などと当業界でよく表現されるように、実際の印刷の合計インク使用量百分率は２５０％以下である。これは換言すれば、実際の印刷では空白率は１５０％以上存在することを意味する。これは、下色除去（ＵＣＲ：Ｕｎｄｅｒ　Ｃｏｌｏｒ　Ｒｅｍｏｖａｌ）及び黒生成を行うために結果である。下色除去は、ＹＭＣの３色が重なった部分は完全な黒ではなくやや灰色であることからこれをＫインクに置き換える処理である。これにより、合計インク量を低減する効果を有する。即ち、ＹＭＣやＹＭＣＫが全て重なることはない。
【００５０】
第２に、本発明者らは、ＹＭＣＫフレームデータにおいては何ドットか前のパターンが繰り返されることが多いことを発見した。写真などの写実的な絵の場合、色の変化は緩やかであるがミクロ的に見れば繰り返し部分が存在する。また、図形、文字などの抽象的な絵の場合は、変化は急激だが繰り返しが多い。
【００５１】
第３に、何ドットか前の相対位置は同一であることが多い。これは、面積ディザの線数が一定であることによる。但し、その相対位置は常に同一ではない。同一ページにおいては、文字部は解像度優先のディザ、画像部は階調優先のディザなど、複数のディザを持つ可能性があるためである。
【００５２】
一方、ＹＭＣＫフレームデータを高速で圧縮伸張するために、本実施形態は、以下の７点が必要であると考えた。もっとも、本発明は、これら全てを満足することを要求するものではない。
【００５３】
第１に、簡単な処理と高速動作のため、圧縮はハード又はソフトで行うことである。第２に、印刷時のオーバーランを防止するために伸張はハードで行うことである。第３に、ハードのゲート数は、数万ゲート以下など、圧縮／伸張共に非常に少ないことである。第４に、入力データを読んで直ちに圧縮／伸張することを可能にするために１パス方式であることである。第５に、２０ｐｐｍクラスの高速カラープリンタを実現するために処理速度がハードの場合５０Ｍｂｙｔｅ／ｓｅｃを超えることである。第６に、圧縮されたデータは元データよりも小さくなることである。第７に、印刷された画像の品質を保証するために損失のない可逆圧縮であることである。
【００５４】
上記冗長性と要求事項に鑑みて、本実施形態による圧縮手法は、幾つかの特徴を有する。
【００５５】
第１に、８ビット（即ち、１バイト）を処理単位とする単純な符号化を採用して高速動作を実現することである。後述する圧縮コアモジュール１１０は、圧縮された出力を１バイト単位としている。
【００５６】
第２に、画像データ１ピクセル（ｎ値）をｍ個まとめて３２ビット単位にし、これを１入力データとして格納する履歴バッファを設けていることである。本実施形態は、３２ドット単位の処理がＣＰＵの処理単位と一致する、ＰＣＩバスが３２ビットなどであるなど、圧縮率と処理速度のバランス上最適と判断し、これにより、処理時間の最適化と圧縮率の向上を図っている。
【００５７】
第３に、直前の１６個の入力データを記憶しておく。１６個に設定したのは、これだけあればディザの繰り返しパターンが現れるということ、あまり履歴を持ってもハードが複雑になる一方で圧縮率の向上が頭打ちになると予想したことによる。
【００５８】
第４に、冗長性のあるデータのみを圧縮することである。但し、本発明は、上述した冗長性のあるデータの種類全てを圧縮することを要求するものではない。また、データの符号化を以下のように処理する。まず、（１）空白部を圧縮して空白データ（１入力データ全て）を少ないビットで符号化する。（２）直前１６個のデータのいずれかの繰り返し（Ｈｉｓｔｏｒｉｃａｌ　Ｒｅｐｅａｔ）を圧縮してディザによる繰り返し部を圧縮する。（３）直前の（１）または（２）符号の繰り返しをリピート数を付して圧縮して連続空白部やディザによる連続繰り返し部を更に圧縮する。（４）冗長性を認められないデータは非圧縮で入力データをそのまま透過し、透過符号とリピート数を付す。本処理は、非圧縮であるもののリピートにより冗長性を低減しようとするものである。
【００５９】
具体的な符号化は、第１の実施形態においては、以下のように行う。いずれの符号も８ビットとする。まず、上記（１）に対応して空白データの符号化を符号１（００ＲＲＲＲＲＲ）で表す。これは、空白データをＲＲＲＲＲＲ個リピートすることを意味する。次に、上記（２）に対応して繰り返しデータを符号２（０１ＸＸＸＸＲＲ）で表す。これは、直前のＸＸＸＸ手前のデータからＲＲ個分リピートすることを意味する。上記（３）に対応して繰り返しデータを符号３（１０ＲＲＲＲＲＲ）で表す。これは、直前の符号１か２をＲＲＲＲＲＲ回リピートすることを意味する。符号３は、例えば同じパターンの塗りつぶしとか連続した空白とかを高い圧縮率で圧縮することができる。上記（４）に対応して、非圧縮の透過モードを符号４（１１ＹＹＹＹＹＹ）で表す。これは、これ以後ＹＹＹＹＹＹ個の入力データを非圧縮とすることを意味する。ＲＲＲＲＲＲ、ＸＸＸＸ、ＹＹＹＹＹＹ、ＲＲは、０を１とみなす（＋１する）。
【００６０】
第１の実施形態の圧縮率について考察する。符号１による空白データの圧縮は、空白が繰り返されると圧縮率は向上する。１入力データだと２５％だが、６４入力データだと０．５％以下になる。更に、符号３を併用すると０．０２％にまで達する。符号２も、同様に１入力データだと２５％だが、繰り返しが増えてくるにつれて圧縮率は劇的に向上する。つまり、ランレングス法と同じ効果が得られる事になる。しかも、ランレングス法より優れている点は、１個でも２５％の圧縮が得られる点である。これは、空白を特別に符号化していることと、１６個の履歴を残していることによってもたらされる。非圧縮と判断されたときの冗長度の増加であるが、これはリピート数を含めることによって最小限に抑えることができる。たとえ、圧縮と非圧縮が交互に３２ビットづつ現れたとしても、データサイズは、元データより大きくなる事はない。つまり、３２×６４＝２５６バイトに１回以上、符号１（空白）又は符号２（繰り返し）が現れれば、確実に圧縮される。これは、ＹＭＣＫ全空間（４００％）のうち１５０％以上は空白であるという仮定から、明らかに高い圧縮率をもたらすものである。符号化のよる圧縮の場合、入力データの大きさと符号の大きさの差が圧縮率となるので、３２ビット単位の処理の方が有利である。また、処理単位が大きいと処理速度上も有利である。
【００６１】
第２の実施形態においては、具体的な符号化を以下のように行う。即ち、第１の実施形態は、必ず３２ビット単位で処理しているので、その中にある１６ビット単位の細かい冗長度は圧縮されない。この冗長成分が多いデータの場合、高い圧縮率を得られないという問題が発生する。例えば、特に、写真等の写実的な絵の場合かなりミクロレベルでしか繰り返しが発生しない可能性がある。この場合、３２ビット単位の処理では冗長性が隠れてしまい、あまり圧縮率を高めることができない可能性がある。一方、１６ビットを処理単位にすると圧縮に長時間かかることになる。そこで、第２の実施形態においては、１６ビット単位の冗長成分も圧縮できるように第１の実施形態を改良している。つまり、第２の実施形態は、３２ビット単位の有利さを維持しながら、１６ビット単位処理のこまやかさも兼ね備えている。
【００６２】
第２の実施形態においては、１６個の３２ビット履歴レジスタのうち、８個の上位１６ビットと下位１６ビットを分離して、１６個の１６ビットの履歴レジスタとして利用可能にしている。例えば、１手前の３２ビット履歴レジスタは、１手前の１６ビット履歴としての上位１６ビットと、２手前の１６ビット履歴としての下位１６ビットを格納する。２手前の３２ビット履歴レジスタは、３手前の１６ビット履歴としての上位１６ビットと、４手前の１６ビット履歴としての下位１６ビットを格納する。以下同様にして、８手前の３２ビット履歴レジスタは、１５手前の１６ビット履歴としての上位１６ビットと、１６手前の１６ビット履歴としての下位１６ビットを格納する。９手乃至１６手前の３２ビット履歴レジスタは、１６ビット履歴としては使わずに３２ビット専用とする。
【００６３】
第２の実施形態では、第１の実施形態と同様に、空白３２ビットは符号１を使用し、３２ビット履歴レジスタの中で一致するものは符号２を使用して符号化する。空白でもなく、３２ビット履歴と一致しないときは、今度は、入力データ３２ビットを上位１６ビットと下位１６ビットに分けて、１６ビット履歴レジスタと一致するか判断する。どちらか片方又は両方一致するものがあれば、専用の符号化を行う。上位も下位も一致するものがなければ、符号４を使用してデータを非圧縮で透過させる。
【００６４】
１６ビット履歴一致の符合のため、符号３を１０００ＲＲＲＲに変更する。これは、直前の符号１か２をＲＲＲＲ回リピートするという意味である。また、符号５乃至７を追加する。
【００６５】
符号５は、入力の上位、下位１６ビット両方とも１６個の１６ビット履歴レジスタのいずれかに一致する場合に使用される。具体的には、符号５は１００１００００で表され、その後、ＸＸＸＸＹＹＹＹが続く。直前のＸＸＸＸ手前の１６ビット履歴を上位１６ビットに、ＹＹＹＹ手前の１６ビット履歴を下位１６ビットにする。符号５は、ＸＸＸＸＹＹＹＹが続くので合計２バイトであり、５０％の圧縮率を達成することができる。
【００６６】
符号６は、入力の上位１６ビットが、１６個の１６ビット履歴レジスタのいずれかに一致する場合に使用される。具体的には、符号６は、１０１０ＸＸＸＸで表現する。直前のＸＸＸＸ手前の１６ビット履歴を上位１６ビットにし、下位１６ビットは、符号６に続く１６ビットを使用する。符号６は、一致しない側の１６ビットデータが続くので合計３バイトであり、７５％の圧縮率を達成する。
【００６７】
符号７は、入力の下位１６ビットが、１６個の１６ビット履歴レジスタのいずれかに一致する場合に使用される。具体的には、符号７は、１０１１ＹＹＹＹで表現する。直前のＹＹＹＹ手前の１６ビット履歴を下位１６ビットにし、上位１６ビットは符号７に続く１６ビットを使用する。符号６は、一致しない側の１６ビットデータが続くので合計３バイトであり、７５％の圧縮率を達成する。
【００６８】
第１及び第２の実施形態の圧縮は、１６個の履歴レジスタを有して比較する関係上、ハード処理のほうが向いている。これにより、１クロックで１６個全部を比較することが可能となる。例えば、２１ｐｐｍのプリンタの場合、Ａ４用紙１２８Ｍｂｙｔｅとすると、約５０Ｍｂｙｔｅ／ｓｅｃ位の処理速度が望ましい。６６ＭＨｚで動作するＬＳＩの場合、５クロック／３２ビット単位の処理で実行すれば、５０Ｍｂｙｔｅ／ｓｅｃは実現できる。従って、２１ｐｐｍの装置でＬＳＩ動作周波数が６６ＭＨｚの場合，平均５クロック以下の圧縮処理を目標とすればよい。実際には、履歴レジスタとの比較は１クロックで行えるので、その他の符号生成も含めて３クロックで実現できることが判明している。この時は、３クロック／３２ビット（６６ＭＨｚ）＝８８Ｍｂｙｔｅ／ｓｅｃとなり、２１ｐｐｍクラスで充分な性能が確保された。また、ハードを使用しないソフト処理の場合も、最近のギガヘルツ駆動の高速ＣＰＵを使えば上記速度は達成できると想定されるので、例えば、ＰＣ側でフレーム圧縮してプリンタに送信することも、実現可能となる。従って、プリンタ内部でフレーム描画するタイプではハード圧縮、ＰＣ側でフレーム描画するタイプではソフト圧縮を使うというように、タイプにより使い分けることができる。
圧縮処理は、圧縮コア（ＣＰＳ＿ＣＯＲＥ）モジュール１１０において行われる。圧縮コア１１０はＹＭＣＫフレームデータを圧縮符号へ可逆的に変換する処理を行う。図４に、圧縮コア１１０の入出力を示す。本実施形態が、このように、ハードウェアを使用して圧縮処理の高速化（５０ＭＢｙｔｅ／ｓｅｃ以上）を図っている。また、本実施形態は、上述の第２の実施形態の圧縮方法を採用している。
【００６９】
図４に示すように、圧縮コア１１０には、入力信号としてＣＬＫ、ＲＳＴ＿Ｘ、ＣＰＳ＿ＥＮＢ、ＣＰＳ＿ＲＥＱ、ＣＰＳ＿ＤＡＴＡ［３１：０］、ＣＰＳ＿ＳＴＢ、ＣＰＳ＿ＬＡＳＴが入力する。ＣＬＫは動作クロックとして機能し、ＲＳＴ＿Ｘは回路リセットとして機能する。ＣＰＳ＿ＥＮＢ、ＣＰＳ＿ＲＥＱ、ＣＰＳ＿ＤＡＴＡ［３１：０］、ＣＰＳ＿ＳＴＢ、ＣＰＳ＿ＬＡＳＴは圧縮取り出しＤＭＡ１０２に接続される。圧縮取り出しＤＭＡ１０２は、図３に示すように、プリントコントローラ１００に設けられてホスト１０に接続される。ＣＰＳ＿ＥＮＢは、圧縮コア１１０を動作可能にする信号であり、Ｌの時に初期化される。ＣＰＳ＿ＲＥＱは、圧縮前データ要求信号であり、Ｈの時にデータが入力可能となる。ＣＰＳ＿ＤＡＴＡ［３１：０］は圧縮前データである。ＣＰＳ＿ＳＴＢは、圧縮前データ入力ストローブ信号であり、Ｈの時にデータ入力可能となる。ＣＰＳ＿ＬＡＳＴは、最終データ入力パルスである。最終データ入力時にＣＰＳ＿ＳＴＢと共にＨになる。
【００７０】
また、圧縮コア１１０からは、出力信号としてＯＵＴ＿ＲＤＹ、ＳＩＧ＿ＯＵＴ［３１：０］、ＳＩＧ＿ＳＴＢ、ＳＩＧ＿ＬＡＳＴが出力し、これらの出力信号は圧縮書き込みＤＭＡ１２２に接続される。圧縮書き込みＤＭＡ１２２は、図３に示すように、メカ制御回路部１８０に接続される。ＯＵＴ＿ＲＤＹは、圧縮後データ出力レディ信号であり、「Ｈ」の時にデータ出力が可能となる。ＳＩＧ＿ＯＵＴ［３１：０］は圧縮後データである。ＳＩＧ＿ＳＴＢは、圧縮後データ出力ストローブ信号であり、Ｈの時にデータ出力が可能となる。ＳＩＧ＿ＬＡＳＴは、最終データ出力パルスであり、最終データ出力時にＳＩＧ＿ＳＴＢと共にＨになる。
【００７１】
図５（ａ）に入力信号のタイミングチャートを、図５（ｂ）に出力信号のタイミングチャートを示す。
【００７２】
図５（ａ）に示すように、ＣＰＳ＿ＥＮＢがＨになると圧縮が開始する。ＣＰＳ＿ＲＥＱがＨの時に圧縮データ入力し、ＣＰＳ＿ＳＴＢがＨになると圧縮データが取り込まれる。ＣＰＳ＿ＬＡＳＴがＨとして、ＣＰＳ＿ＳＴＢがＨになるとそのデータが最終圧縮データとして取り込まれる。ＣＰＳ＿ＲＥＱがＬである時は圧縮処理不可のためデータを入力しない。
【００７３】
図５（ｂ）に示すように、ＳＩＧ＿ＳＴＢがＨの時に、ＳＩＧ＿ＯＵＴに１クロック毎に圧縮データ出力する。ＳＩＧ＿ＬＡＳＴがＨであり、ＳＩＧ＿ＳＴＢがＨである時に、ＳＩＧ＿ＯＵＴに最終の圧縮データを出力する。ＯＵＴ＿ＲＤＹがＬになると圧縮データの出力を中断することができる。但し、出力中断中も、内部バッファが圧縮符号でフルになるまでは圧縮動作が可能である。
【００７４】
圧縮コア１１０は、１データの圧縮処理の処理速度が３クロックである。本実施形態は、６６ＭＨｚで動作し、処理単位３２ビットで５０ＭＢｙｔｅ／ｓｅｃの処理速度を達成するため、圧縮コア１１０に要求される処理速度は５クロック以下である。圧縮コア１１０は、圧縮処理の一連動作を１ラスタ毎に行う。圧縮前入力データの単位は３２ビットであり、圧縮後符号の単位は８ビットである。圧縮出力データの単位は３２ビットである。圧縮用の履歴レジスタの数は、３２ビット幅×１６入力分で、かつ、１６ビット幅×１６入力分である。
【００７５】
１入力データを圧縮した時に生成される圧縮符号の組合せは以下のいずれかとなる。圧縮コア１１０では、この組合せが４バイトの連続した符号として出力される。
【００７６】
【表１】
2004112665.tif 000003
【００７７】
図６に、圧縮コア１１０のブロック図を示す。図６に示すように、圧縮コア１１０は、圧縮前レジスタとしてのチェックデータレジスタ１１１と、比較モジュール１１２と、メインモジュール１１３と、符号生成モジュール１１４と、ライト制御モジュール１１５と、バッファモジュール１１６と、リード制御モジュール１１７とを有する。
【００７８】
チェックデータレジスタ１１１は３２ビットのレジスタであり、処理クロックは１クロックである。
【００７９】
比較モジュール１１２は、圧縮コア１１０への入力データを空白データ及び履歴レジスタ１１２ｅの履歴データと比較するモジュールであり、チェックデータ内の空白比較部１１２ａと、３２ビット履歴レジスタ比較部１１２ｂと、下位１６ビット履歴レジスタ比較部１１２ｃと、上位１６ビット履歴レジスタ比較１１２ｄと、履歴レジスタ１１２ｅとを有する。
【００８０】
空白比較部１１２ａは、空白データ（無色データ又はＮＵＬＬデータ）があれば、その旨を後述する圧縮フラグ生成部１１３ａに通知し、これに応答して圧縮フラグ生成部１１３ａは、空白データとしての特定データと一致する符合として機能する「空白」フラグを出力する。特定データ一致符合は８ビットよりも小さく、残りのビットをリピート数符合とすることが好ましい。これにより、後述するステップ１２０８に示すように、空白比較部１１２ａが次も同じ空白データの一致を発見した場合にリピート符号を最大値までインクリメントして、同一符号の出力を省略して圧縮率の向上を図ることができる。なお、空白比較部１１２ａが空白データを検出した場合、符号１を他の符号よりも優先して出力され、履歴バッファ１１２ｅを更新しないように構成することが好ましい。これによって、履歴バッファ１１２ｅの効率を向上させて圧縮率の向上を図ることができる。
【００８１】
３２ビット履歴レジスタ比較部１１２ｂは、３２ビットの履歴データが一致すれば、その旨を後述する圧縮フラグ生成部１１３ａに通知し、これに応答して圧縮フラグ生成部１１３ａは一致したことを示す一致符号として機能する「３２ビット一致」フラグを出力する。また、３２ビット履歴レジスタ比較部１１２ｂは、３２ビット一致した履歴一致番号を出力する。履歴一致番号は、入力データから何個手前の履歴データかを示す一致位置オフセット値として機能する。３２ビット履歴レジスタ比較部１１２ｂは、本実施形態では、履歴バッファ１１２ｅのうち２個以上一致するものがあった場合には、入力データに近い方、即ち、オフセット値の小さい方を選択する。
【００８２】
本実施形態においては、一致符合と一致位置オフセット値の和は１バイト（即ち、８ビット）以下になるように、一致符合のビット幅と履歴バッファ１１２ｅの大きさが制限されている。より詳細には、一致符号と一致位置オフセット値の和は７ビット以下であり、８ビットの残りのビットをリピート数符号とすることによって、一致符号と前記一致位置オフセット値とリピート数符号の和を１バイト以内としている。これは、後述するステップ２２１６に示すように、３２ビット履歴レジスタ比較部１１２ｂが、次も同じオフセット値の一致を発見した場合に、一致符号と一致位置オフセット値を出力せずにリピート符号を最大値までインクリメントして出力するためである。これにより、同一符号の出力を省略して圧縮率を向上することができる。
【００８３】
なお、リピート符号が最大値に達した場合に、リピート数を拡張することを示す８ビットより小さい拡張リピート符号を設け、出力データのうち拡張リピート符号を除く残りのビットをリピート数符号として、リピート数を更に拡張できることが好ましい。拡張リピート符号を設けることによって、圧縮率の向上を維持することができる。また、拡張リピート符号に付随するリピート数符号が最大値に達した場合、更に次のデータを拡張リピート符号とし、それを繰り返す事により、リピート符号を連続的に拡張してもよい。
【００８４】
下位及び上位１６ビット履歴レジスタ比較部１１２ｃ及び１１２ｄは、入力データを上位１６ビットと下位１６ビットの二個のデータに分割する手段として機能する。下位及び上位１６ビット履歴レジスタ比較部１１２ｃ及び１１２ｄは、それぞれ、下位及び上位１６ビットの履歴データが一致すれば、その旨を後述する圧縮フラグ生成部１１３ａに通知し、これに応答して圧縮フラグ生成部１１３ａは「下位１６ビット一致」フラグと「上位１６ビット一致」フラグを出力する。また、下位及び上位１６ビット履歴レジスタ比較部１１２ｃ及び１１２ｄは、１６ビット一致した履歴一致番号を出力する。履歴一致番号は、入力データから何個手前の履歴データかを示す一致位置オフセット値として機能する。下位及び上位１６ビット履歴レジスタ比較部１１２ｃ及び１１２ｄは、本実施形態では、履歴バッファ１１２ｅのうち２個以上一致するものがあった場合には、入力データに近い方、即ち、オフセット値の小さい方を選択する。
【００８５】
後述する圧縮フラグ生成部１１３ａは、「下位１６ビット一致」フラグと「上位１６ビット一致」フラグは同時に出力する場合もある。この結果、上位だけ一致する、下位だけ一致する、上位及び下位とも一致しない、上位及び下位とも一致するの４つの状態に判定することができる。一致しないと判断された場合にのみ後述の透過符号と透過データを出力し、他の３状態の場合は、それぞれ固有の他の符号と区別しうる符号（上位一致符号、下位一致符号、上位・下位一致符号）を出力し、上位一致、下位一致の場合は一致位置を示すオフセット値を符号に付与して全部で８ビットになるようにする。また、続いて一致しなかった側の１６ビット入力データを透過データとして出力する。上位及び下位が共に一致する場合、一致符号の次にそれぞれの一致位置を示すオフセット値を出力する。
【００８６】
非圧縮の場合には、比較モジュール１１２は、その旨を後述する圧縮フラグ生成部１１３ａに通知し、これに応答して圧縮フラグ生成部１１３ａは「非圧縮」フラグを出力する。透過符号は、１バイト以内になるように構成されている。より詳細には、透過符号は７ビット以下に構成され、８ビットの残りのビットにリピート数符号を割り当て、透過符号とリピート数符号の和を１バイト以内二光制している。そして、次も不一致の場合に、透過符号を出力せずにリピート符号を最大値までインクリメントして出力し、透過符号付与のオーバーヘッドを最小にしている。また、入力データは非圧縮用データとしての透過データとして出力される。
【００８７】
履歴レジスタ１１２ｅは、結果条件に応じて以下の表に示すように処理される。
【００８８】
【表２】
2004112665.tif 000004
【００８９】
履歴レジスタ１１２ｅは、最新の入力データを複数個記憶することができ、本実施形態では、３２ビットの入力データを１６個格納することができる。入力データのサイズが、一般的なＣＰＵやバス幅の単位である３２ビットであることは、処理時間の最適化と圧縮率の向上を図る上で好ましい。また、履歴バッファ１１２ｅは、入力データを１６個格納できるので、ランレングス手法と異なり、画像データのディザ処理のディザマトリックスのサイズ（通常は８、大きいディザで１４）よりも大きく、ディザがかかった画像にも対応できる。一方、履歴を多くし過ぎるとハードの複雑化と圧縮率の頭打ちをもたらすおそれがあるからである。
【００９０】
履歴バッファ１１２ｅが記憶可能な入力データの個数は、上述したように、１６個であり、３２個以内である。履歴バッファの大きさを、一般的なＲＩＳＣ型ＣＰＵのレジスタ総数である３２個以内、例えば、１６個に収めることによってＣＰＵレジスタを履歴バッファとして使用することができ、ＣＰＵで高速に処理することが可能になる。
【００９１】
なお、本実施形態では圧縮後の出力を１バイト単位として単純化し、高速動作を可能にしている。
【００９２】
メインモジュール１１３は、１つ前の圧縮状態と比較モジュール１１２の結果を基に圧縮符号及び符号生成のパラメータフラグを作成する機能を有し、上述の圧縮フラグ生成部１１３ａと、符号選択部１１３ｂと、符号３有無判断部１１３ｃと、一致番号出力部１１３ｄ及び１１３ｅと、符号３の圧縮数を表す４ビットカウンタ１１３ｆと、符号１、２及び４用の圧縮数を示す６ビットカウンタ１１３ｇと、符号生成部１１３ｈと、前回チェックデータ参照部１１３ｉと、前回処理フラグ参照部１１３ｊと、符号１初回フラグ設定部１１３ｋと、符号２初回フラグ設定部１１３ｌとを有する。
【００９３】
符号選択部１１３ｂは、複数の一致符合を出力可能な場合にいずれかの一致符号を選択する選択部として機能する。本実施形態では、ハードウェアが動作可能な周波数の１クロックで比較を行う。
【００９４】
符号３有無判断部１１３ｃは、符号３が存在するかどうかを判断する。一致番号出力部１１３ｄ及び１１３ｅは、符号２などに使用され、入力データ直前の一致レジスタのオフセット値などを格納する。符号３の圧縮数を表す４ビットカウンタ１１３ｆは、符号１又は２をリピートすべき個数を最大値まで計数するカウンタである。
【００９５】
符号１、２及び４用の６ビットカウンタ１１３ｇは、符号１のリピートすべき個数などの所定の個数を最大値まで計数するカウンタである。符号生成部１１３ｈは符号１乃至７を生成する。前回チェックデータ参照部１１３ｉは、前回の圧縮処理内容を確認するための参照部である。前回処理フラグ参照部１１３ｊは、前回の圧縮処理で使用されたフラグを確認するための参照部である。符号１及び２初回フラグ設定部１１３ｋ及びｌは、後述するステップ１２１０や２２１８で使用され、符号１及び２が最大値になったのが初回であるかどうかを示すフラグを作成するブロックである。
【００９６】
以下にメインモジュール１１３内で使用されているパラメータの機能を記載する。まず、符号の種類として、符号１に対応する「空白符号」、符号２に対応する「３２ビット一致符号」、符号３に対応する「空白／３２ビット繰り返し符合」、符号４に対応する「非圧縮符号」、符号５に対応する「１６ビット上位下位一致符号」、「一致番号」、符号６に対応する「１６ビット上位一致符号」、「入力データ下位［１５：８］」、「入力データ下位［７：０］」、符号７に対応する「１６ビット下位一致符号」、「入力データ上位［１５：８］」、「入力データ上位［７：０］」を含む８ビットの圧縮符号を生成する（ブロック１１３ｈ）。
【００９７】
以下に、前回の圧縮処理状態を表す２ビットの前回処理フラグ１１３ｊを示す。
【００９８】
【表３】
2004112665.tif 000005
【００９９】
以下に、符号１のフルカウントが１回目かどうかを表す１ビットの符号１初回フラグ１１３ｋを示す。
【０１００】
【表４】
2004112665.tif 000006
【０１０１】
以下に、符号２のフルカウントが１回目かどうかを表す１ビットの符号２初回フラグ１１３ｌを示す。
【０１０２】
【表５】
2004112665.tif 000007
【０１０３】
以下に、符号１又は符号２のフルカウントが２回目以降３回目未満であるかどうかを表す１ビットの符号３初回フラグを示す。
【０１０４】
【表６】
2004112665.tif 000008
【０１０５】
以下に、符号３の有無を表す１ビットの符号３有無フラグを示す。
【０１０６】
【表７】
2004112665.tif 000009
【０１０７】
非圧縮処理用のステートカウンタは、「待機状態」、「非圧縮以外の圧縮状態」、「非圧縮処理開始」、「非圧縮データ処理中」、「非圧縮処理終了」の状態を保持することができる。
【０１０８】
符号生成モジュール１１４は、メインモジュール１１３で生成されたバッファ書き込み符号を格納用に選択して並び替えを行う。１回の圧縮サイクルで生成される符号の最大バイト数は以下のようになる。
【０１０９】
まず、非圧縮スタートにおいては、新規非圧縮処理のため符号５、６、７はあり得ない。組合せは、前回余り（１乃至３バイト）＋符号（１乃至３バイト）＋非圧縮データ（４バイト）＜６バイト＋４バイト（非圧縮の仮書き込み）となる。
【０１１０】
非圧縮繰り返しにおいては、組合せは、前回余り（１乃至３バイト）＋非圧縮データ（４バイト）＜７バイトとなる。
【０１１１】
非圧縮終了においては、組合せは、符号４（４バイト処理固定）＋前回余り（１乃至３バイト）＋符号（１乃至３バイト）＜６バイト＋４バイト（非圧縮の再書き込み）となる。
【０１１２】
通常符号生成においては、組合せは、前回余り（１乃至３バイト）＋符号（１乃至５バイト）＜８バイトとなる。
【０１１３】
以上から、バッファへの書き込みサイクルは、圧縮１回に対して符号４の仮／再書き込みに１ワードサイクル、通常の符号書き込みに２ワードサイクル設ける。
【０１１４】
以下に、１データ圧縮時の符号生成組合せパターンを示す。
【０１１５】
【表８】
2004112665.tif 000010
【０１１６】
ライト制御モジュール１１５は、バッファ又はＲＡＭへの符号の書き込み制御を行う。
【０１１７】
バッファモジュール１１６は、４×６８バイトの圧縮符号格納用のバッファを有する。以下の理由から、圧縮マクロでは圧縮した符号をバッファリングしておく符号格納バッファを設けている。第１に、３２ビットの出力データに対し、符号は８ビット単位であるため、３２ビット単位に変換するバッファが必要あるためである。第２に、非圧縮時の符号フォーマットは先頭に非圧縮データ数を格納した符号、それ以降に非圧縮データとなっているため、非圧縮データ数が確定するまでバッファへ一時的にデータを格納するためである。第３に、圧縮データの取り出し／書き込み共に１つのＰＣＩバスを使用するため、圧縮データ入力中に圧縮符号が出力できない場合があり、この時に圧縮符号を格納しておくためである。
【０１１８】
リード制御モジュール１１７は、バッファ又はＲＡＭからの符号の読み出しを制御する。
【０１１９】
以下、圧縮処理速度について説明する。Ａ４サイズの用紙（６００ｄｐｉ×６００ｄｐｉ，左右余白４ｍｍ）での圧縮データ量は、６，８２６×２５６値［８ビット］×４，９６０ドットとなり、３３，８５６，９６０バイト＝８，４６４，２４０ワードとなる。ＰＣＩバス（ＰＣＩ−６４ビット、６６ＭＨｚ、バースト３２バイト）のアクセス速度は、読み出し実行速度は、６４ビット×４バースト単位：２７クロック（４０５ｎＳ）となり、書き込み速度は６４ビット×４バースト単位：２０クロック（３００ｎＳ）となる。
【０１２０】
【表９】
2004112665.tif 000011
【０１２１】
圧縮データ処理時間は、６クロック（符号圧縮サイクル＋バッファ書きこみサイクル）であるが、符号圧縮サイクルとバッファ書きこみサイクルは並列で処理されるため、実際の圧縮サイクルは３クロックとなる。
【０１２２】
以上から、１頁分の圧縮処理時間は、８，４６４，２４０ワード×３クロック（６６ＭＨｚ×３＝４５ｎＳ）×４色＝１，５２３．５６３ｍＳとなる。
【０１２３】
メカ制御回路部１８０は、プリンタエンジン１９０のメインモータ１９２、高圧電源ユニット１９４及び露光パワー制御部１９６を制御し、これらに必要な切替信号を生成する。切替信号は、例えば、両面印刷ユニットと片面印刷ユニットのいずれが選択されるか、印刷用紙が普通紙か厚紙かなどのパラメータによって変更される。メカ制御回路部１８０は、メインモータなど本体内部のその他の機構部、例えば、前帯電器制御部、転写電流制御部などを含む。
【０１２４】
メカ制御回路部１８０はＭＰＵ１８２を有する。ＭＰＵ１８２は、プリンタコントローラ１００に接続されており、例えば、印字データとしてビットマップ形式のビデオデータをコントローラ１００から受信する。メカ制御回路部１８０の動作はこれに接続された図示しない表示部に表示される。表示部はキー入力可能な操作パネルとして構成することができる。ＭＰＵ１８２は、プリンタエンジン１９０のメインモータ１９２と、高圧電源ユニット１９４と、露光パワー制御部１９６に接続され、これらを制御する。ＭＰＵ１８２は、用紙サイズ（幅）、用紙の種類（厚紙か普通紙か、異なる製造メーカーにより製造された印刷用紙など）、解像度などの情報を含む印字データや図示しない各種センサの出力結果を得て、図示しないＲＯＭに格納されたプログラムに従って各種の制御信号を生成する。
【０１２５】
以下、カラー画像形成装置１の動作について説明する。プリンタコントローラ１００はホスト１０からの印刷命令を受信すると、上述のコマンド解析処理、描画処理、色変換処理、ディザ処理、ＰＷＭ処理、圧縮処理を行ってビデを信号をメカ制御回路部１８０のＭＰＵ１８２に送信する。
【０１２６】
以下、圧縮処理を、図７乃至図１０を参照して説明する。ここで、図７乃至図１０は、本実施形態の圧縮処理を説明するためのフローチャートであり、図７は空白圧縮処理１０００、図８は３２ビット一致圧縮処理２０００、図９は１６ビット一致圧縮処理３０００及び非圧縮処理４０００、図１０は最終データ格納処理５０００をそれぞれ示している。ここでは、上述した第２の実施形態の圧縮処理を行う場合を説明する。
【０１２７】
まず、図７を参照して空白圧縮処理１０００を説明する。空白圧縮処理１０００は、空白圧縮前処理１１００と、空白圧縮処理１２００と、空白圧縮後処理１３００とを有する。
【０１２８】
空白圧縮前処理１１００は、前回の履歴データとの一致処理又は非圧縮処理の有無をチェックする処理であり、入力データの読み込みと履歴レジスタ１１２ｅへの書き込み（ステップ１００２）後に、空白比較部１１２ａが、空白データが存在すると判断した（ステップ１００４）場合に開始する。
【０１２９】
まず、前回チェックデータ参照部１１３ｉを参照して前回に履歴データとの一致処理があるかどうかを判断し（ステップ１１０２）、あれば符号３の有無を、符号３有無判断部１１３ｃを参照して判断する（ステップ１１０４）。ステップ１１０４が、符号３があると判断すれば符号３を格納し、その後、処理はステップ１１０８に移行する。一方、ステップ１１０４が、符号３がないと判断すれば、符号２を格納し（ステップ１１０８）、その後、処理はステップ１１１０に移行する。
【０１３０】
ステップ１１０２が前回に履歴データとの一致処理がないと判断すれば、前回チェックデータ参照部１１３ｉを参照して前回の非圧縮処理が存在すると判断する（ステップ１１１０）。ステップ１１１０が前回の非圧縮処理が存在すると判断すれば符号４を格納し（ステップ１１１２）、その後、処理は空白圧縮処理１２００に移行する。一方、ステップ１１１０が、前回が非圧縮処理でないと判断すれば、その後、処理は空白圧縮処理１２００に移行する。
【０１３１】
空白圧縮処理１２００は、入力データとしてのＹＭＣＫフレームデータに含まれる空白データを圧縮する処理である。空白圧縮処理１２００は、まず、前回チェックデータ参照部１１３ｉを参照して前回が空白圧縮処理であるかどうかを判断する（ステップ１２０２）。前回が空白圧縮処理でなく、最初の空白圧縮処理であれば、符号生成部１１３ｈが新たに符号１を作成及び出力する（ステップ１２０４）。その後、処理はステップ２００２に移行する。
【０１３２】
ステップ１２０２が、前回に空白圧縮処理があったと判断すれば、カウンタ１１３ｇを参照して符号１のリピート値は最大値であるかどうか判断し（ステップ１２０６）、最大値でないと判断されればカウンタ１１３ｇが符号１のリピート値を＋１だけインクレメントする（ステップ１２０８）。その後、処理はステップ２００２に移行する。
【０１３３】
一方、ステップ１２０６が、符号１のリピート値が最大値であると判断した場合は、符号１初回フラグ１１３ｋを参照して、その最大値に到達したのが初回であると判断されれば（ステップ１２１０）、符号生成部１１３ｈが新たに符号１を作成、出力及び格納する（ステップ１２１２）。その後、処理はステップ２００２に移行する。
【０１３４】
ステップ１２１０が、符号１のリピート値が最大値に到達したのが初回ではない判断すれば、符号３有無判断部１１３ｃを参照して符号３の有無が判断され（ステップ１２１４）、符号３が存在しないと判断されれば（ステップ１２１４）、符号生成部１１３ｈが新たに符号３及び符号１を作成して出力する（ステップ１２１６）。その後、処理はステップ２００２に移行する。
【０１３５】
一方、ステップ１２１４が、符号３が存在すると判断すれば、カウンタ１１３ｆを参照して符号３のリピート値は最大値であるかどうか判断する（ステップ１２１８）。ステップ１２１８が最大値でないと判断すれば、カウンタ１１３ｆが符号３のリピート値を＋１だけインクレメントし、符号生成部１１３ｈが新たに符号１を作成して出力する（ステップ１２２０）。その後、処理はステップ２００２に移行する。一方、ステップ１２１８が符号３のリピート値は最大値であると判断した場合は、符号３を格納し、符号生成部１１３ｈが新たに符号３及び符号１を作成して出力する（ステップ１２２２）。その後、処理はステップ２００２に移行する。
【０１３６】
空白圧縮後処理１３００は、前回の空白圧縮処理の有無をチェックする処理であり、ステップ１００２後に、空白比較部１１２ａが、空白データが存在しないと判断した（ステップ１００４）場合に開始する。空白圧縮後処理１３００では、前回チェックデータ参照部１１３ｉを参照して前回の空白圧縮処理の有無を判断し（ステップ１３０２）、ステップ１３０２が存在すると判断すれば、次いで、符号３有無判断部１１３ｃを参照して符号３の有無を判断する（ステップ１３０４）。一方、ステップ１３０２が前回の空白圧縮処理は存在しないと判断すれば、その後、処理はステップ２００２に移行する。ステップ１３０４が、符号３が存在すると判断すれば符号３を格納し（ステップ１３０６）、ステップ１３０８に移行する。一方、ステップ１３０４が、符号３が存在しないと判断すれば、符号１を格納する（ステップ１３０８）。その後、処理はステップ２００２に移行する。
【０１３７】
次に、図８を参照して３２ビット一致圧縮処理２０００を説明する。３２ビット一致圧縮処理２０００は、３２ビット一致圧縮前処理２１００と、３２ビット一致圧縮処理２２００と、３２ビット一致圧縮後処理２３００とを有する。
【０１３８】
３２ビット一致圧縮前処理２１００は、前回の非圧縮処理の有無をチェックする処理であり、入力データを履歴レジスタ１１２ｅと比較した（ステップ２００２）後に、３２ビット履歴レジスタ比較部１１２ｂが、一致するレジスタが履歴レジスタ１１２ｅに存在すると判断した（ステップ２００４）場合に開始する。３２ビット一致圧縮前処理２１００においては、前回チェックデータ参照部１１３ｉを参照して前回に非圧縮処理があるかどうかを判断し（ステップ２１０２）、あれば符号４を格納した後で３２ビット一致圧縮処理２２００に移行する。一方、ステップ２１０２が、前回が非圧縮処理でないと判断すれば（ステップ２１０２）、３２ビット一致圧縮処理２２００に移行する。
【０１３９】
３２ビット一致圧縮圧縮処理２２００は、ＹＭＣＫフレームデータが履歴データの繰り返しである場合にその繰り返し部を圧縮する処理である。３２ビット一致圧縮処理２２００は、まず、前回処理フラグ１１３ｊを参照して前回も３２ビット一致圧縮処理であったかどうかを判断する（ステップ２２０２）。前回が３２ビット一致圧縮処理でなく、最初の３２ビット一致圧縮処理であれば、符号３有無判断部１１３ｃを参照して符号３の有無を判断し（ステップ２２０４）、符号３が存在すれば符号３を格納し（ステップ２２０６）、ステップ２２０８に移行する。
【０１４０】
一方、ステップ２２０４が、符号３が存在しないと判断すれば、符号２の有無を判断し（ステップ２２０８）、符号２が存在すれば符号２を格納し（ステップ２２１０）、ステップ２２１２に移行する。一方、ステップ２２０８が、符号２が存在しないと判断すれば、符号２を新たに作成及び出力する（ステップ２２１２）。その後、処理はステップ３００２に移行する。
【０１４１】
ステップ２２０２が、前回も３２ビット一致圧縮処理であったと判断すれば、カウンタ１１３ｇを参照して符号２のリピート値は最大値であるかどうか判断する（ステップ２２１４）。ステップ２２１４が最大値でないと判断すれば、カウンタ１１３ｆが符号２のリピート値を＋１だけインクレメントする（ステップ２２１６）。その後、処理はステップ３００２に移行する。
【０１４２】
一方、ステップ２２１４が、符号２初回フラグ１１３ｌを参照して、符号２のリピート値が最大値であると判断した場合は、その最大値に到達したのが初回であると判断されれば（ステップ２２１８）、符号生成部１１３ｈが新たに符号２を作成、出力及び格納する（ステップ２２２０）。その後、処理はステップ３００２に移行する。
【０１４３】
ステップ２２１８が、符号２のリピート値が最大値に到達したのが初回ではないと判断すれば、符号３有無判断部１１３ｃを参照して符号３の有無が判断される（ステップ２２２２）。ステップ２２２２が、符号３が存在しないと判断すれば、符号生成部１１３ｈが新たに符号３及び符号２を作成して出力する（ステップ２２２４）。その後、処理はステップ３００２に移行する。
【０１４４】
一方、ステップ２２２２が、符号３が存在すると判断すれば、カウンタ１１３ｆを参照して符号３のリピート値は最大値であるかどうか判断する（ステップ２２２６）。ステップ２２２６が最大値でないと判断すれば、カウンタ１１３ｆが符号３のリピート値を＋１だけインクレメントし、符号生成部１１３ｈが新たに符号２を作成して出力する（ステップ２２２８）。その後、処理はステップ３００２に移行する。一方、ステップ２２２６が符号３のリピート値は最大値であると判断した場合は、符号３を格納し、符号生成部１１３ｈが新たに符号３及び符号２を作成して出力する（ステップ２２３０）。その後、処理はステップ３００２に移行する。
【０１４５】
３２ビット一致圧縮後処理２３００は、前回の３２ビット一致圧縮処理の有無をチェックする処理であり、ステップ２００２後に、３２ビット履歴レジスタ比較部１１２ｂが、一致するレジスタが存在しないと判断した（ステップ２００４）場合に開始する。３２ビット一致圧縮後処理２３００では、前回チェックデータ参照部１１３ｉを参照して前回の３２ビット一致圧縮処理の有無を判断し（ステップ２３０２）、ステップ２３０２が存在すると判断すれば、次いで、符号３有無判断部１１３ｃを参照して符号３の有無を判断する（ステップ２３０４）。一方、ステップ２３０２が前回の空白圧縮処理は存在しないと判断すれば、その後、処理はステップ３００２に移行する。ステップ２３０４が、符号３が存在すると判断すれば符号３を格納し（ステップ２３０６）、ステップ２３０８に移行する。一方、ステップ２３０４が、符号３が存在しないと判断すれば、符号２を格納する（ステップ２３０８）。その後、処理はステップ３００２に移行する。
次に、図９を参照して、１６ビット一致圧縮処理３０００を説明する。１６ビット一致圧縮処理３０００は、ＹＭＣＫフレームデータが履歴データの上位又は下位１６ビットの繰り返しである場合にその繰り返し部を圧縮する処理である。
【０１４６】
まず、上位１６ビット履歴レジスタ比較部１１２ｄが、前半１６ビットが一致するかどうかを判断する（ステップ３００４）。上位１６ビット履歴レジスタ比較部１１２ｄが一致すると判断した場合、新たに符号６を作成及び出力し（ステップ３００６）、ステップ３００８に移行する。一方、上位１６ビット履歴レジスタ比較部１１２ｄが一致しないと判断した場合（ステップ３００４）、後半１６ビットが比較される（ステップ３００８）。下位１６ビット履歴レジスタ比較部１１２ｃは、後半１６ビットが一致するかどうかを判断する（ステップ３０１０）。下位１６ビット履歴レジスタ比較部１１２ｃが一致しないと判断した場合（ステップ３０１０）、符号６の有無が判断される（ステップ３０１２）。ステップ３０１２が、符号６が存在しないと判断すれば、処理はステップ４００２に移行する。
【０１４７】
一方、下位１６ビット履歴レジスタ比較部１１２ｃが一致すると判断した場合（ステップ３０１０）、前回チェックデータ参照部１１３ｉを参照して前回の非圧縮処理の有無が判断される（ステップ３０１４）。ステップ３０１４が存在すると判断すれば、符号４を格納し（ステップ３０１６）、ステップ３０１８に移行する。一方、ステップ３０１４が存在しないと判断すれば、符号６の有無を判断する（ステップ３０１８）。ステップ３０１８が、符号６が存在すると判断すれば、符号生成部１１３ｈが新たに符号５を作成、出力及び格納し（ステップ３０２０）、その後、処理はステップ４００２に移行する。一方、ステップ３０１８が、符号６が存在しないと判断すれば、符号生成部１１３ｈが新たに符号７を作成、出力及び格納する（ステップ３０２２）。その後、処理はステップ４００２に移行する。
【０１４８】
一方、ステップ３０１２が符号６が存在すると判断すると、前回チェックデータ参照部１１３ｉを参照して前回の非圧縮処理が存在するかどうかを判断する（ステップ３０２４）。ステップ３０２４が存在すると判断すると符号４を格納し（ステップ３０２６）、ステップ３０２８に移行する。ステップ３０２４が存在しないと判断すると符号６を格納し、その後、処理はステップ４００２に移行する。
【０１４９】
次に、図９を参照して、非圧縮処理４０００を説明する。非圧縮処理４０００は、ＹＭＣＫフレームデータを透過すると共にリピート値を付す処理である。
【０１５０】
まず、符号５、６又は７のいずれかの有無を判断する（ステップ４００２）。ステップ４００２が、いずれかが存在すると判断すれば、履歴レジスタ１１２ｅが最大値であるかどうかを判断する（ステップ４００４）。ステップ４００４が、履歴レジスタ１１２ｅが最大値であると判断すれば、履歴レジスタ１１２ｅをシフトして格納する（ステップ４００６）。その後、処理は、ステップ１００２に帰還する。一方、ステップ４００４が、履歴レジスタ１１２ｅが最大値ではないと判断すれば、履歴レジスタ１１２ｅに格納する（ステップ４００８）。その後、処理は、ステップ１００２に帰還する。
【０１５１】
一方、ステップ４００２が、いずれも存在しないと判断すれば、履歴レジスタ１１２ｅが最大値であるかどうかを判断する（ステップ４０１０）。ステップ４０１４が、履歴レジスタ１１２ｅが最大値であると判断すれば、履歴レジスタ１１２ｅをシフトして格納し（ステップ４０１２）、次いで、ステップ１０１６に移行する。一方、ステップ４０１０が、履歴レジスタ１１２ｅが最大値ではないと判断すれば、履歴レジスタ１１２ｅに格納する（ステップ４０１４）。
【０１５２】
次いで、前回チェックデータ参照部１１３ｉを参照して前回も非圧縮処理であったかどうかを判断する（ステップ４０１６）。前回が非圧縮処理でなく、最初の非圧縮処理であれば、符号生成部１１３ｈが新たに符号４を作成及び出力すると共に非圧縮データバッファに格納する（ステップ４０１８）。その後、処理はステップ１００２に帰還する。
【０１５３】
一方、ステップ４０１６が、前回も非圧縮処理であったと判断すれば、カウンタ１１３ｇを参照して符号４のリピート値は最大値であるかどうか判断し（ステップ４０２０）、最大値でないと判断されれば、カウンタ１１３ｇが符号４のリピート値を＋１だけインクレメントすると共に非圧縮データバッファに格納する（ステップ４０２２）。その後、処理はステップ１００２に帰還する。
【０１５４】
一方、ステップ４０２０が、符号４のリピート値が最大値であると判断した場合は、符号生成部１１３ｈが新たに符号４を作成及び出力すると共に非圧縮データバッファに格納する（ステップ４０２４）。その後、処理はステップ１００２に帰還する。
【０１５５】
次に、図１０を参照して、最終データ格納処理５０００について説明する。まず、ステップ５００２が初期化符号１カウンタの有無を判断し、存在すると判断すれば、符号１初回フラグ１１３ｋを参照して、符号１の最大値は初回以降であるかどうかを判断する（ステップ５００４）。ステップ５００４が、符号１の最大値が初回以降であると判断した場合は、ステップ５００２が初期化符号３カウンタの有無を判断し、存在すると判断すれば、符号３を格納する（ステップ５００８）。ステップ５００４が、符号１の最大値が初回以降ではないと判断した場合、ステップ５００６が初期化符号３カウンタが存在しないと判断した場合、及び、ステップ５００８が符号３を格納した場合は、ステップ５０１０に移行して符号１を格納する。その後、処理はステップ５０１２に移行する。
【０１５６】
一方、ステップ５００２が初期化符号１カウンタが存在しないと判断すれば、符号２初回フラグ１１３ｌを参照して、符号２の最大値は初回以降であるかどうかを判断する（ステップ５０１４）。ステップ５０１４が、符号１の最大値が初回以降であると判断した場合は、ステップ５０１６が初期化符号３カウンタの有無を判断し、存在すると判断すれば、符号３を格納する（ステップ５０１８）。ステップ５０１４が、符号２の最大値が初回以降ではないと判断した場合、ステップ５０１６が初期化符号３カウンタが存在しないと判断した場合、及び、ステップ５０１８が符号３を格納した場合は、ステップ５０２０に移行して符号２を格納する。その後、処理はステップ５０２２に移行する。
【０１５７】
次いで、ステップ５０２２が初期化符号３カウンタの有無を判断し、存在すると判断すれば、符号３を格納する（ステップ５０２４）。ステップ５０２２が初期化符号３カウンタが存在しないと判断すれば、ステップ５０２６が初期化符号４カウンタの有無を判断し、存在すると判断すれば、符号４を格納する（ステップ５０２８）。
【０１５８】
【実施例】
ＹＭＣＫフレームデータ（６００ｄｐｉ、８ビット）を２５６ラスタ単位に分割して圧縮した。圧縮率は、元サイズ（Ａ４サイズ１頁で１２８バイト）を１００％としたときに圧縮後のサイズが何％であるかで表している。かかる結果を表１に示す。画像パターンＩは、画像パターンＩＩ乃至ＩＶから代表的なパターンを集めたものである。画像パターンＩＩは、ビジネス用アプリケーションのパターンである。画像パターンＩＩＩは、ＳＯＨＯ用のアプリケーションのパターンである。画像パターンＩＶは、グラフィックス系のアプリケーションのパターンである。
【０１５９】
【表１０】
2004112665.tif 000012
【０１６０】
上記表から、第２の実施形態の方が、第１の実施形態よりも、圧縮率が高く平均圧縮率は１％程度改善され、最悪値も５％程度改善されていることが理解される。
【０１６１】
圧縮処理が終了すると、メカ回路制御部１８０のＭＰＵ１８２が圧縮処理と逆の処理を行ってＹＭＣＫフレームデータの伸張を行う。印刷命令によりホッパ３１２に載置された一又は複数枚の用紙Ｐの最上位の用紙Ｐがピックアップローラ３１４によって繰り出され、用紙ガイド３１６によって搬送路３４５に案内される。その後、用紙Ｐは紙送りローラ３２２、搬送ベルト３２４、駆動及び従動ローラ３２６、３２８によって画像形成装置２００ｄ、２００ｃ、２００ｂ及び２００ａの順番で、所望の画像に応じたイエロー、マゼンタ、シアン及びブラックの順番で形成されたトナー重層を有する。その後、トナー重層は定着器３３０によって用紙Ｐに定着される。定着された用紙Ｐはスタッカ３５０に排出される。本実施形態によれば、高速又はリアルタイムでＹＭＣＫフレームデータの圧縮及び伸張処理を行うことができる。また、本実施形態では、圧縮伸張がロスレスであるので印刷された画像は高品質である。
【０１６２】
以上、本発明の好ましい実施例を説明したが、本発明はその要旨の範囲内で様々な変形及び変更が可能である。例えば、カラー画像形成装置１はカラープリンタに限定されず、印刷機能を有するその他の装置、例えば、コピー機、ファックス機を含む。
【０１６３】
本出願は更に以下の事項を開示する。
【０１６４】
（付記１）　ＣＰＵ又は専用ハードウェアを利用して画像データを圧縮する装置であって、最新の入力データを複数個記憶する履歴バッファと、前記画像データの圧縮データを出力する第１の出力部と、当該履歴バッファの各データと今回の入力データを比較する第１の比較部と、当該第１の比較部が一致すると判断した場合に、一致符号と入力データから何個手前の履歴データかを示す一致位置オフセット値を前記第１の出力部に出力し、前記第１の比較部が一致しないと判断した場合に、一致符号と区別可能な透過符号と、入力データを透過データとして前記第１の出力部に出力する第２の出力部とを有し、一個の入力データのサイズは前記ＣＰＵの処理単位又は前記専用ハードウェアが接続されるバス幅に一致し、一致符号と一致位置オフセット値の和が１バイト以内になるように一致符号のビット幅と履歴バッファの大きさが設定され、透過符号は８ビット以内になるように設定され、前記第１の出力部は前記圧縮データを１バイト単位で出力することを特徴とする圧縮装置。（１）
（付記２）　前記一個の入力データの前記サイズは３２ビットであることを特徴とする付記１記載の圧縮装置。
【０１６５】
（付記３）　前記履歴バッファの大きさを、前記画像データのディザ処理のディザマトリックスのサイズより大きくしたことを特徴とする付記１又は２記載の圧縮装置。
【０１６６】
（付記４）　前記履歴バッファが記憶可能な前記入力データの個数は３２個に以内であることを特徴とする付記１乃至３のうちいずれか一項記載の圧縮装置。
【０１６７】
（付記５）　前記履歴バッファが記憶可能な前記入力データの個数は１６個であることを特徴とする付記４のうちいずれか一項記載の圧縮装置。
【０１６８】
（付記６）　前記第２の出力手段は、２個以上一致するものがあると判断した場合は、前記一致位置オフセット値の小さいほうを選択することを特徴とする付記１乃至５のうちいずれか一項記載の圧縮装置。
【０１６９】
（付記７）　前記一致符号と前記一致位置オフセット値の前記和は７ビット以下であり、前記第２の出力部はリピート数符号を更に出力し、前記一致符号と前記一致位置オフセット値と前記リピート数符号の和は１バイト以内であり、前記第２の出力部は、前記第１の比較部が２回同一の一致位置オフセット値を有する一致を検出した場合には、前記一致符号と前記一致位置オフセット値を出力せずに前記リピート符号を最大値までインクリメントして出力することを特徴とする付記１乃至６のうちいずれか一項記載の圧縮装置。
【０１７０】
（付記８）　前記透過符号は７ビット以下であり、前記第２の出力部はリピート数符号を更に出力し、前記透過符号と前記リピート数符号の和は１バイト以内であり、前記第２の出力部は、前記第１の比較部が２回不一致を検出した場合には、前記透過符号を出力せずに前記リピート符号を最大値までインクリメントして出力することを特徴とする付記１乃至７のうちいずれか一項記載の圧縮装置。
【０１７１】
（付記９）　前記今回のデータに特定のデータが含まれるかどうかを判断する第２の比較部と、前記第２の比較部が前記特定のデータが含まれると判断した場合に、前記特定のデータが含まれることを示す８ビットより小さくて前記一致符号及び前記透過符号と区別可能な特定データ一致符号を前記第１の出力部に出力する第３の出力部とを更に有することを特徴とする付記１乃至８のうちいずれか一項記載の圧縮装置。（２）
（付記１０）　前記特定データは無色を表す空白データであることを特徴とする付記９記載の圧縮装置。
【０１７２】
（付記１１）　前記特定データ一致符号は７ビット以下であり、前記第４の出力部はリピート数符号を更に出力し、前記特定データ一致符号と前記リピート数符号の和は１バイト以内であり、前記第４の出力部は、前記第２の比較部が前記特定データが含まれることを検出した場合には、前記特定データ一致符合を出力せずに前記リピート符号を最大値までインクリメントして出力することを特徴とする付記９又は１０記載の圧縮装置。
【０１７３】
（付記１２）　前記第２の比較部が前記特定データを検出した場合、前記第４の出力部は、前記第１の比較部による比較よりも優先して前記第１の出力部に出力し、前記履歴バッファは更新されないことを特徴とする付記９乃至１１記載の圧縮装置。
画像データを圧縮する方法であって、
（付記１３）　前記リピート符号が最大値に達した場合に、リピート数を拡張することを示す８ビットより小さい拡張リピート符号を有し、出力データのうち拡張リピート符号を除く残りのビットをリピート数符号として、リピート数を更に拡張できることを特徴とする付記１乃至１２記載の圧縮装置。（３）
（付記１４）　前記拡張リピート符号に付随するリピート数符号が最大値に達した場合、更に次のデータを拡張リピート符号とし、それを繰り返す事により、リピート符号を拡張することを特徴とする付記１３記載の圧縮装置。
【０１７４】
（付記１５）　前記圧縮装置は、前記履歴バッファに格納されている前記今回の入力データ直前の半分を、上位１６ビットと下位１６ビットの二個のデータに分割する第１の分割部と、前記入力データを上位１６ビットと下位１６ビットの二個のデータに分割する第２の分割部と、前記今回の入力データの前記上位１６ビットと前記下位１６ビットのそれぞれを、前記第１の分割部によって分割されたデータと比較する第３の比較部と、第４の出力部とを更に有し、当該第４の出力部は、前記第３の比較部が前記今回の入力データの前記上位１６ビットと前記下位１６ビットの両方が不一致であると判断した場合には、前記透過符号と前記透過データを出力し、当該前記第３の比較部が前記今回の入力データの前記上位１６ビット及び／又は前記下位１６ビットが一致すると判断した場合には、前記今回の入力データの前記上位１６ビットと前記下位１６ビットのうちで一致する態様を表す符号と一致位置を示すオフセット値を出力すると共に、前記今回の入力データの前記上位１６ビット又は前記下位１６ビットが一致する場合には不一致の方をオフセット値として更に出力し、前記一致する態様を表す符号と前記一致位置を示すオフセット値の和は８ビットであることを特徴とする付記２記載の圧縮装置。
【０１７５】
（付記１６）　前記圧縮装置は専用ハードウェアを利用し、複数の一致符合を出力可能な場合にいずれかの一致符号を選択する選択部を更に有し、前記ハードウェアが動作可能な周波数の１クロックで比較を行うことを特徴とする付記１乃至１５のうちいずれか一項記載の圧縮装置。
【０１７６】
（付記１７）　前記圧縮ステップは、前記空白データを一以上繰り返すことを表す第１の符号を生成することによって前記画像データを圧縮し、前記圧縮方法は、前記画像データが、当該画像データの直前１６個のデータのいずれかの繰り返しであるかどうかを判断するステップと、前記判断ステップが繰り返しであると判断した場合に前記画像データを、手前のデータを一以上繰り返すことを表す第２の符合を生成するか、若しくは、前記第１又は第２の符号を一以上繰り返すことを表す第３の符号を生成することによって、圧縮するステップとを更に有することを特徴とする付記１７記載の圧縮方法。（４）
（付記１８）　前記画像データは３２ビットであり、前記圧縮方法は、前記画像データの上位１６ビットと下位１６ビットの少なくとも一方が、前記画像データの直前８個のデータのそれぞれの上位１６ビット又は下位１６ビットと一致するかどうかを判断するステップとを更に有し、前記画像データの上位１６ビットと下位１６ビットの少なくとも一方が一致すると判断された場合に、前記少なくとも一方を圧縮するステップとを有することを特徴とする付記１７記載のうちいずれか一項記載の方法。（５）
（付記１９）　付記１乃至１６のうちいずれか一項記載の圧縮装置を有することを特徴とするカラー画像形成装置。
【０１７７】
（付記２０）　付記１７又は１８記載の圧縮方法を実行するためのプログラム。
【０１７８】
【発明の効果】
以上説明したように、本発明の圧縮装置、方法及びそれを利用した画像形成装置によれば、圧縮伸張を高速で行うことができる。また、画像形成装置のメモリは標準のものを使用することができるので、コストアップを招かずに高速印刷を実現することができる。
【図面の簡単な説明】
【図１】本発明のカラー画像形成装置の概略断面図である。
【図２】図１に示すカラー画像形成装置の画像形成ユニットの概略断面図である。
【図３】カラー画像形成装置の制御系のブロック図である。
【図４】図３に示す圧縮コアモジュールの入出力信号を示すブロック図である。
【図５】図３に示す入出力信号のタイミングチャートである。
【図６】図３に示す圧縮コアモジュールの内部ブロック図である。
【図７】図３に示す圧縮コアモジュールが実行する圧縮処理を説明するためのフローチャートである。
【図８】図３に示す圧縮コアモジュールが実行する圧縮処理を説明するためのフローチャートである。
【図９】図３に示す圧縮コアモジュールが実行する圧縮処理を説明するためのフローチャートである。
【図１０】図３に示す圧縮コアモジュールが実行する圧縮処理を説明するためのフローチャートである。
【符号の説明】
１　　　　　　　カラー画像形成装置
１０　　　　　　ホスト
１００　　　　　プリンタコントローラ
１０２　　　　　圧縮取り出しＤＭＡ
１１０　　　　　圧縮コアモジュール
１２２　　　　　圧縮書き込みＤＭＡ
２００ａ−ｄ　　画像形成ユニット
【図１】
2004112665.tif 000013
【図２】
2004112665.tif 000014
【図３】
2004112665.tif 000015
【図４】
2004112665.tif 000016
【図５】
2004112665.tif 000017
【図６】
2004112665.tif 000018
【図７】
2004112665.tif 000019
【図８】
2004112665.tif 000020
【図９】
2004112665.tif 000021
【図１０】
2004112665.tif 000022