(57)【特許請求の範囲】
【請求項１】
イメージデータを圧縮して、圧縮データを生成する圧縮データ生成部と、
圧縮データ生成部により生成された前記圧縮データを伝送する内部バスと、
内部バスを介して前記圧縮データを受け取り、伸長して前記イメージデータを得る圧縮データ伸長部と、
圧縮データ伸長部により伸長された前記イメージデータを印刷するプリントエンジンとを備え、
前記圧縮データ生成部は、
非イメージデータを受け取り、受け取った非イメージデータから前記イメージデータを生成するイメージデータ生成部と、
前記イメージデータを所定のビット数のビット列に分け、前記イメージデータの第ｎ番目のビット列（ｎは整数）と第（ｎ−１）番目のビット列の差分である差分データを求め、所定の数の当該求めた差分データそれぞれが示す値の分布を求め、当該求めた分布において、最も多くの差分データが含まれる範囲を求め、当該求めた範囲に含まれる値のいずれかを、差分データを結合するための圧縮パラメータとして導出する圧縮パラメータ導出部と、
圧縮パラメータ導出部により導出された前記圧縮パラメータを用いて、イメージデータ生成部により生成された前記イメージデータを圧縮するイメージデータ圧縮部と、を含む、印刷装置。
【請求項２】
前記圧縮データ伸長部は、前記圧縮パラメータを用いて前記圧縮データを伸長し、前記イメージデータを得る、請求項１に記載の印刷装置。
【請求項３】
外部ネットワークと接続され、前記外部ネットワークを介して前記非イメージデータを入力する入力部をさらに備えた、請求項１または２に記載の印刷装置。
【請求項４】
印刷装置におけるイメージデータ印刷方法であって、
イメージデータを圧縮して、圧縮データを生成するステップと、
前記圧縮データを伝送するステップと、
前記圧縮データを受け取り、伸長して前記イメージデータを得るステップと、
伸長された前記イメージデータを印刷するステップと、を有し、
前記圧縮データを生成するステップは、
非イメージデータを受け取り、受け取った非イメージデータから前記イメージデータを生成するステップと、
前記イメージデータを所定のビット数のビット列に分け、前記イメージデータの第ｎ番目のビット列（ｎは整数）と第（ｎ−１）番目のビット列の差分である差分データを求め、所定の数の当該求めた差分データそれぞれが示す値の分布を求め、当該求めた分布において、最も多くの差分データが含まれる範囲を求め、当該求めた範囲に含まれる値のいずれかを、差分データを結合するための圧縮パラメータとして導出するステップと、
当該導出された圧縮パラメータを用いて、前記イメージデータを生成するステップにおいて生成されたイメージデータを圧縮するステップと、を含む、印刷方法。
【請求項５】
前記伸長してイメージデータを得るステップは、前記圧縮パラメータを用いて前記圧縮データを伸長し、前記イメージデータを得るステップを含む、請求項４に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プリンタ装置内のデータ転送に関する。
【０００２】
【従来の技術】
ホストコンピュータからプリンタへ印刷データを伝送する場合、通信回線の負荷を軽減し伝送時間を短縮する目的で、印刷データの圧縮が行われることがある。印刷データが情報量の多いイメージデータ等の場合には、その圧縮は特に有効な処理である。その処理の具体的な流れを説明すると、ホストコンピュータはまず印刷対象の印刷データを圧縮し、圧縮データを通信回線を通じてプリンタに送信する。プリンタは、圧縮された印刷データを受信し、伸長した後、メモリに印刷データを格納する。プリンタは、印刷実行時の給紙に合わせてメモリからその印刷データを読み出し、内部バスを介してプリントエンジンインターフェースに送信する。その結果、プリンタのプリントエンジンは印刷データを印刷する。
【０００３】
【発明が解決しようとする課題】
ホストコンピュータとプリンタの間で印刷データの伝送時間を短縮しても、プリンタが印刷処理を完了するまでにかなりの時間を要する場合がある。それは、例えば印刷データがデータ量の非常に大きいイメージデータの場合、内部バスを介したプリンタ内部でのイメージデータの転送に多大な時間を要するからである。さらに、内部バスを介したイメージデータの転送中はプリンタの他の構成要素は内部バスを利用できず、処理が滞る。
【０００４】
本発明の目的は、高速な印刷を実現する印刷装置を提供することである。
【０００５】
【課題を解決するための手段】
本発明の印刷装置は、イメージデータを圧縮して、圧縮データを生成する圧縮データ生成部と、圧縮データ生成部により生成された前記圧縮データを伝送する内部バスと、内部バスを介して前記圧縮データを受け取り、伸長して前記イメージデータを得る圧縮データ伸長部と、圧縮データ伸長部により伸長された前記イメージデータを印刷するプリントエンジンとを備え、前記圧縮データ生成部は、非イメージデータを受け取り、受け取った非イメージデータから前記イメージデータを生成するイメージデータ生成部と、前記イメージデータを所定のビット数のビット列に分け、前記イメージデータの第ｎ番目のビット列（ｎは整数）と第（ｎ−１）番目のビット列の差分である差分データを求め、所定の数の当該求めた差分データそれぞれが示す値の分布を求め、当該求めた分布において、最も多くの差分データが含まれる範囲を求め、当該求めた範囲に含まれる値のいずれかを、差分データを結合するための圧縮パラメータとして導出する圧縮パラメータ導出部と、圧縮パラメータ導出部により導出された前記圧縮パラメータを用いて、イメージデータ生成部により生成された前記イメージデータを圧縮するイメージデータ圧縮部と、を含んでおり、これにより上記目的が達成される。
【０００７】
前記圧縮データ伸長部は、前記圧縮パラメータを用いて前記圧縮データを伸長し、前記イメージデータを得てもよい。
【０００８】
印刷装置は、外部ネットワークと接続され、前記外部ネットワークを介して前記非イメージデータを入力する入力部をさらに備えていてもよい。
【０００９】
本発明の印刷方法は、印刷装置におけるイメージデータ印刷方法であって、イメージデータを圧縮して、圧縮データを生成するステップと、前記圧縮データを伝送するステップと、前記圧縮データを受け取り、伸長して前記イメージデータを得るステップと、伸長された前記イメージデータを印刷するステップとを有し、
前記圧縮データを生成するステップは、非イメージデータを受け取り、受け取った非イメージデータから前記イメージデータを生成するステップと、前記イメージデータを所定のビット数のビット列に分け、前記イメージデータの第ｎ番目のビット列（ｎは整数）と第（ｎ−１）番目のビット列の差分である差分データを求め、所定の数の当該求めた差分データそれぞれが示す値の分布を求め、当該求めた分布において、最も多くの差分データが含まれる範囲を求め、当該求めた範囲に含まれる値のいずれかを、差分データを結合するための圧縮パラメータとして導出するステップと、当該導出された圧縮パラメータを用いて、前記イメージデータを生成するステップにおいて生成されたイメージデータを圧縮するステップと、を含む、印刷方法であり、これにより上記目的が達成される。
なお、前記伸長してイメージデータを得るステップは、前記圧縮パラメータを用いて前記圧縮データを伸長し、前記イメージデータを得るステップを含んでもよい。
【００１０】
【発明の実施の形態】
以下、添付の図面を参照して、本発明の実施の形態を説明する。
【００１１】
図１は、主としてプリンタ１００の構成を示すブロック図を示す。本発明のプリンタ１００は、印刷時に内部バスを介して内部の構成要素間で印刷データを転送する場合に、印刷データを圧縮して転送すべきデータ量を減少し、それにより内部バスの占有時間を少なくする。これにより高速な印刷を実現できる。以下の説明では、印刷データは、データ量の多いイメージデータとして説明する。イメージデータとは、イメージを構成する画素とその色等がそれぞれ対応付けできるように格納されたデータであり、プリンタ独自の制御コマンド等は含まない画像を表すデータである。イメージデータは、例えば、ビットマップ画像データである。
【００１２】
図１を参照して、プリンタ１００は、印刷データを入力するデータ入力部２と、演算処理一般を行う中央演算処理ユニット（ＣＰＵ）４と、データを格納するランダムアクセスメモリ（ＲＡＭ）６と、プリンタ１００の処理プログラム等を格納する読み出し専用メモリ（ＲＯＭ）８と、これらの要素を相互に接続する内部バス１０とを含む。データ入力部２は、外部のネットワーク１１０を介してホストコンピュータ１２０から、または所定の印刷データが格納された情報記録媒体からデータを入力するために用いられる。ホストコンピュータ１２０は、他の１以上のコンピュータ１３０とも接続され、これらのそれぞれからの印刷指示が、ホストコンピュータ１２０と外部ネットワーク１１０とを介してデータ入力部２に入力される。データ入力部２、ＣＰＵ４、ＲＡＭ６、ＲＯＭ８および内部バス１０は、従来のプリンタに備えられていた周知の要素と同じでよく、したがって個々の構成要素の機能の詳細な説明は省略する。
【００１３】
プリンタ１００はさらに、圧縮データ生成部２０と、パラメータ保持部３０と、圧縮データ伸長部４０と、エンジンインターフェース５０と、プリントエンジン６０とを含む。以下、各構成要素を順に説明する。
【００１４】
まず、圧縮データ生成部２０は、イメージデータ生成部２２と、イメージデータ圧縮部２４と、パラメータ導出部２６とを含む。イメージデータ生成部２２は、非イメージデータを受け取り、受け取った非イメージデータからイメージデータを生成する。非イメージデータとは、イメージを表すデータではあるが、イメージデータそれ自体ではないデータであり、例えば、ホストコンピュータ１２０からプリンタ１００に送信された印刷データや、その印刷データを解析して変換された中間データである。印刷データは、所定のイメージを表すプリント言語データ（制御コマンドを含む）である（ホストコンピュータ１２０側で圧縮されているか否かは問わない）。中間データとは、プリントエンジン６０が解釈可能なイメージデータへの変換時間を短縮するために、変換をより高速に実行できる形式に変換されたデータである。中間データは、ＣＰＵ４が印刷データに含まれる制御コマンド等を解析し、その内容に応じて印刷データに所定の変更を加えることにより生成される。イメージデータ圧縮部２４は、所定の圧縮効率を得るための圧縮パラメータを用いてイメージデータを圧縮し、その圧縮されたイメージデータ（圧縮データ）を出力する。圧縮処理の詳細は、後述する。パラメータ導出部２６は、以前の圧縮結果に基づいて、所定の圧縮効率を得るための圧縮パラメータを導出し、出力する。
【００１５】
パラメータ保持部３０は、圧縮パラメータを受け取り、その内容を内部メモリ（図示せず）等に保持する。パラメータ保持部３０は、保持した圧縮パラメータを、必要に応じて出力する。
【００１６】
圧縮データ伸長部４０は、圧縮データを受け取り、圧縮パラメータを利用して圧縮データを伸長する。圧縮パラメータは、圧縮の際に利用されたパラメータと同一のパラメータである。圧縮データ伸長部４０により伸長されたイメージデータは、イメージデータ生成部２２により生成されたイメージデータと同一のデータである。圧縮データ伸長部４０は、伸長したイメージデータを印刷のために出力する。
【００１７】
エンジンインターフェース５０は、圧縮されていないイメージデータを受け取り、プリントエンジン６０の動作に同期してイメージデータをプリントエンジン６０に転送する。プリントエンジン６０は、エンジンインターフェース５０から供給されるイメージデータを印刷する。なお、エンジンインターフェース５０およびプリントエンジン６０は、周知の要素と同じでよい。
【００１８】
次にプリンタ１００の動作を説明する。プリンタ１００は、ＲＯＭ８に予め格納されたプログラムにしたがって動作する。このプログラムは、ＣＰＵ４により解釈され、実行される。まずプリンタ１００は、データ入力部２において印刷データを受け取る。印刷データは、例えば、ホストコンピュータ１２０のプリンタドライバにより生成された、所定のイメージを表すプリント言語データ（制御コマンドを含む）である。データ入力部２において受け取られた印刷データは、一旦ＲＡＭ６に格納される。ＣＰＵ４は、ＲＡＭ６に格納された印刷データを解析して、印刷データを中間データに変換する。
【００１９】
変換された中間データは、内部バス１０を介して圧縮データ生成部２０のイメージデータ生成部２２に送られる。イメージデータ生成部２２は、中間データからイメージデータを生成し、イメージデータ圧縮部２４へ送信する。このイメージデータは、プリントエンジン６０が解釈可能なデータである。イメージデータ圧縮部２４は、イメージデータ生成部２２から送信されたイメージデータを圧縮して圧縮データを生成する。このとき、所定の圧縮効率を得るための圧縮パラメータが利用される。イメージデータ圧縮部２４は、圧縮パラメータをパラメータ導出部２６から直接に、またはパラメータ導出部２６からの圧縮パラメータを格納したパラメータ保持部３０から受け取る。イメージデータ圧縮部２４は、内部バス１０を介してＲＡＭ６に圧縮データを送信し、圧縮データをＲＡＭ６に一旦格納する。また、イメージデータ圧縮部２４は、パラメータ導出部２６に差分データを供給する。パラメータ導出部２６は、圧縮結果と差分データとに基づいて圧縮パラメータを導出する。圧縮データ伸長部４０は、内部バス１０を介してＲＡＭ６に格納された圧縮データを読み出す。この圧縮データは、圧縮されていないイメージデータよりもデータ量が少ないので、転送の際に内部バス１０を占有する時間を短くできる。したがって、他の構成要素が内部バス１０を利用して他のデータを授受する場合でも、それらの構成要素の待ち時間が減少し、その結果、印刷処理を迅速に完了できる。なお、圧縮データをＲＡＭ６に格納せずそのまま圧縮データ伸長部４０に送信してもよい。イメージデータ圧縮部２４は、圧縮データの送信と同時に、圧縮に使用した圧縮パラメータをパラメータ保持部３０に送信する。パラメータ保持部３０は、イメージデータ圧縮部２４から送信された圧縮パラメータを保持する。
【００２０】
圧縮データ伸長部４０は、内部バス１０を介してＲＡＭ６から圧縮データを受け取り、またその圧縮データの生成の際に用いられた圧縮パラメータをパラメータ保持部３０から受け取る。そして圧縮データ伸長部４０は、圧縮パラメータに基づいて圧縮データを伸長し、イメージデータ生成部２２により生成されたイメージデータと同一のイメージデータを得る。圧縮データ伸長部４０は、伸長したイメージデータをエンジンインターフェース５０に送信し、エンジンインターフェース５０はプリントエンジン６０の動作に同期してイメージデータをプリントエンジン６０に転送する。プリントエンジン６０は、エンジンインターフェース５０から供給されるイメージデータを印刷する。以上、プリンタ１００の動作を説明した。なお、圧縮データ生成部２０はＣＰＵ４の別の構成要素として説明したが、ＣＰＵ４が行ってもよい。
【００２１】
次に、イメージデータ圧縮部２４の圧縮処理を説明する。本実施の形態では２種類の圧縮処理を説明するが、周知の圧縮アルゴリズムが利用できる。圧縮処理は、イメージデータを構成するビット列に対して適用され、またイメージデータが複数存在する場合にも、すべてのイメージデータに対して適用される。
【００２２】
以下説明する圧縮処理では、イメージデータを所定のビット数のビット列に分け、ビット列のデータ量を圧縮することによりイメージデータ全体のデータ量を圧縮する。第１の圧縮処理では、ビット列間の差分を計算してイメージデータのデータ量を圧縮する。第２の圧縮処理では、ビット列のビットの並びを単に整数を表しているとして捉え、所定の除数を用いた除算によって商と余りを計算してイメージデータのデータ量を圧縮する。
【００２３】
以下、第１の圧縮処理を説明する。図２は、第１の圧縮処理の手順を示すフローチャート２００である。この処理では、イメージデータ圧縮部２４（図１）のイメージデータの受信が、イメージデータ圧縮部２４（図１）とイメージデータ生成部２２（図１）とを接続するラインのビット幅単位行われることに鑑み、そのラインのビット幅のビット列同士の差分を計算する。ラインのビット幅は、例えば８ビットであるが、３２ビットや６４ビット等であってよい。以下では一般化のため、ｎ番目のビット列について説明する。ｎ番目のビット列は「イメージデータ（＃ｎ）」として参照される。なお、イメージデータ（＃１）〜イメージデータ（＃ｎ−１）はすでにイメージデータ圧縮部２４に取り込まれているとする。
【００２４】
まず、イメージデータ圧縮部２４はイメージデータ（＃ｎ）を取り込み（ステップ２０２）、イメージデータ（＃ｎ）と、すでに取り込み保持していたイメージデータ（＃ｎ−１）との差分を計算し、差分データ（＃ｎ）を得る（ステップ２０４）。差分データは、イメージデータ（＃ｎ）からイメージデータ（＃ｎ−１）を減算したときの結果を表すデータである。次に、イメージデータ圧縮部２４は、差分データ（＃ｎ）のビット数がイメージデータ（＃ｎ）のビット数の半分以下か否かを判断する（ステップ２０６）。例えば、イメージデータ（＃ｎ）が８ビットの場合は、差分データ（＃ｎ）が４ビット以下であるか否かを判断する。より具体的な例では、
イメージデータ（＃ｎ）：    １１００１１０１（２進表示）
イメージデータ（＃ｎ−１）：１１０００１００（２進表示）のとき、
差分データ（＃ｎ）：        １００１（２進表示）
である。このような判断を行う理由は、本来であれば１つのイメージデータの転送に８ビット要していたのが、４ビット以下の差分データを少なくとも２つ転送することにより、１つのイメージデータの情報量（８ビット）で実質的に２つのイメージデータを転送できるからである。これにより、内部バス１０（図１）を介して転送するデータ量が減少し、内部バス１０（図１）の占有時間を減少できる。この処理についてはステップ２１４に関して後述する。なお、上述の例におけるイメージデータ（＃ｎ）とイメージデータ（＃ｎ−１）との差は、厳密にいえば００００１００１（２進表示）であるが、上位４ビットは０のみなので下位４ビットのみを差分データとして利用する。
【００２５】
差分データ（＃ｎ）のビット数が、イメージデータ（＃ｎ）のビット数の半分以下の場合（ステップ２０６で「はい」の場合）を説明する。この場合には、イメージデータ圧縮部２４（図１）は、次のイメージデータ（＃ｎ＋１）を取り込み（ステップ２０８）、ステップ２０４と同様、イメージデータ（＃ｎ＋１）と、前のイメージデータ（＃ｎ）との差分を計算し、差分データ（＃ｎ）を得る（ステップ２１０）。そして、差分データ（＃ｎ＋１）のビット数がイメージデータ（＃ｎ＋１）のビット数の半分以下か否かを判断する（ステップ２１２）。
【００２６】
差分データ（＃ｎ＋１）のビット数もイメージデータ（＃ｎ＋１）のビット数の半分以下である場合は、イメージデータ圧縮部２４は、その差分データ（＃ｎ＋１）と差分データ（＃ｎ）とを結合して１つの圧縮データを形成し、さらに１ビットのフラグビットを付加してＲＡＭに転送する（ステップ２１４）。ここで、差分データ同士のビット数が異なる場合（例えば差分データ（＃ｎ）が４ビット、差分データ（＃ｎ＋１）が３ビットの場合）がある。このような場合には、桁が少ない方の差分データの上位ビット側に０のビットを付け加え、他方の差分データと同一のデータサイズにすればよい。またフラグビットを設けたのは、イメージデータ圧縮部２４から出力されたデータが、イメージデータ（＃ｎ）そのものであるのか、複数の差分データが結合されたデータであるのかを判断するためである。これは、差分データを結合したデータのビット数が、もとのイメージデータ（＃ｎ）のビット数（８ビット）と同じであることに基づく。例えばフラグビットは、最上位ビットとして設けられる。この説明から、イメージデータ（＃ｎ）が８ビットである上述の例の場合には、圧縮データは、フラグビットが「１」の９ビットのデータとしてＲＡＭ６（図１）に格納される。次に説明するように、イメージデータ（＃ｎ）またはイメージデータ（＃ｎ＋１）が圧縮されずＲＡＭ６（図１）に出力される場合には、フラグビットが「０」のイメージデータ（＃ｎ）等がＲＡＭ６（図１）に送信される。
【００２７】
以上のように、差分データの各々とフラグビットとをまとめてＲＡＭ６（図１）に転送した後は（ステップ２１４）、イメージデータ圧縮部２４は、イメージデータ（＃ｎ＋１）を直前に処理したイメージデータとして保持し、後の処理に備える（ステップ２１６）。
【００２８】
続いて、差分データのビット数がイメージデータのビット数の半分以下でない場合を説明する。これは、ステップ２０６の「いいえ」の場合およびステップ２１２の「いいえ」の場合の両方である。差分データのビット数がイメージデータのビット数の半分以下でないということは、２つの差分データをまとめると１つのイメージデータの情報量より大きくなることを表す。したがって、イメージデータ（＃ｎ）は、圧縮できないデータであるとしてＲＡＭ６（図１）に転送される（ステップ２１８）。一方、イメージデータ（＃ｎ＋１）が圧縮できないデータの場合には、差分データ（＃ｎ＋１）とともに圧縮データを形成する予定であった差分データ（＃ｎ）は、もはやイメージデータ（＃ｎ）を表すデータとして利用できない。したがって、差分データ（＃ｎ）ではなく、イメージデータ（＃ｎ）がＲＡＭ６（図１）に転送され（ステップ２２２）、その後イメージデータ（＃ｎ＋１）もＲＡＭ６（図１）に転送される（ステップ２２４）。イメージデータをＲＡＭ６（図１）に転送する際には、イメージデータにはフラグビット（例えば「０」）が付加され、圧縮データでないことが示される。そして、次の処理のために、イメージデータ（＃ｎ）およびイメージデータ（＃ｎ＋１）を、直前に処理したイメージデータとして保持する（ステップ２２０、２１６）。
【００２９】
以上、第１の圧縮処理を説明した。差分データの各々とフラグビットとをまとめることにより、データ量の少ない、転送時間がより短い圧縮データを得ることができる。圧縮データ伸長部４０（図１）は、イメージデータ圧縮部２４から出力され、ＲＡＭ６（図１）に格納されたデータを内部バス１０（図１）を介して読み出す。そして、そのフラグビットによりそのデータが圧縮データであると判断できれば、その差分データと直前に復元されたイメージデータとを単純に加算することで、次のイメージデータを復元できる。すなわち圧縮データを伸長して元のイメージデータに復元できる。以上の説明では、差分データのビット数がイメージデータのビット数の半分以下か否かを圧縮の基準としたが、半分でなく、例えば１／４以下か否かを圧縮の基準とし、４倍の圧縮効率を得るようにしてもよい。
【００３０】
次に第２の圧縮処理を簡単に説明する。図３は、第２の圧縮処理の手順を示すフローチャート３００である。第２の圧縮処理は、ビット列のビットの並びを単に整数を表しているとして捉え、所定の除数を用いた除算によって商と余りを計算してイメージデータのデータ量を圧縮する処理である。第１の圧縮処理と同様、第２の圧縮処理でも、イメージデータ圧縮部２４（図１）とイメージデータ生成部２２（図１）とを接続するラインのビット幅ごとに分けられた、イメージデータのビット列を処理の対象とする。まずイメージデータ圧縮部２４は、イメージデータ（＃ｎ）を取り込み（ステップ３０２）、イメージデータ（＃ｎ）により表される数（Ｘn）を、所定の除数Ｑで除算して、商Ｙnと余りＺnとを算出する（ステップ３０４）。この「イメージデータ（＃ｎ）により表される数（Ｘn）」とは、イメージデータ（＃ｎ）を単なる２進数のビット列とみたとき、そのビット列により表される整数のことをいう。「所定の除数Ｑ」とは、予め決められている整数Ｑをいう。したがって、整数Ｑは除数であり、整数Ｘnは被除数である。
【００３１】
除算の結果、イメージデータ圧縮部２４は、商Ｙnのビット数と余りＺnのビット数の和が、被除数Ｘn（イメージデータ（＃ｎ））のビット数の半分以下かを判断する（ステップ３０６）。例えば、被除数Ｘn＝１３１（８ビット）、除数Ｑ＝４３とした場合、商Ｙnは３（２ビット）、余りＺnは２（２ビット）となる。したがって、商Ｙnのビット数と余りＺnのビット数の和（４ビット）は、被除数Ｘnのビット数（８ビット）の半分以下となる。半分以下と判断すると（ステップ３０６の「はい」）、イメージデータ圧縮部２４は、次のイメージデータ（＃ｎ＋１）を取り込む（ステップ３０８）。そして上述のステップ３０４と全く同様、イメージデータ（＃ｎ＋１）により表される数（Ｘn+1）と除数Ｑから商Ｙn+1と余りＺn+1とを算出する（ステップ３１２）。イメージデータ圧縮部２４は、除算の結果、商Ｙn+1のビット数と余りＺn+1のビット数の和が、被除数Ｘn+1（イメージデータ（＃ｎ＋１））のビット数の半分以下かを判断する（ステップ３１２）。
【００３２】
商Ｙn+1のビット数と余りＺn+1のビット数の和が、被除数Ｘn+1（イメージデータ（＃ｎ＋１））のビット数の半分以下である場合には（ステップ３１２の「はい」）、そのＹn+1、Ｚn+1およびＹn、Ｚnの各データを結合して１つの圧縮データを形成し、さらに１ビットのフラグビットを付加してＲＡＭに転送する（ステップ３１４）。圧縮データは、例えば、上位２ビットがＹn、その次の２ビットがＺn、その次の２ビットがＹn+1、そして下位２ビットがＺn+1などのように配置され結合される。フラグビットを設けたのは、上記同様、イメージデータ圧縮部２４から出力されたデータが、イメージデータ（＃ｎ）そのものであるのか、複数の商、余りが結合されたデータであるのかを判断するためである。例えばフラグビットは、最上位ビットとして設けられる。この説明から、イメージデータ（＃ｎ）が８ビットとすると、圧縮データは、フラグビットが「１」の９ビットのデータとしてＲＡＭ６（図１）に格納される。次に説明するように、イメージデータ（＃ｎ）またはイメージデータ（＃ｎ＋１）が圧縮されずＲＡＭ６（図１）に出力される場合には、フラグビットが「０」のイメージデータ（＃ｎ）等がＲＡＭ６（図１）に送信される。
【００３３】
続いて、商のビット数と余りのビット数の和が、被除数のビット数の半分以下である場合（ステップ３０６の「いいえ」の場合、またはステップ３１２の「いいえ」の場合）は、イメージデータ圧縮部２４は、圧縮できないデータであるとしてイメージデータ（＃ｎ）をＲＡＭ６（図１）に転送する（ステップ３１６、ステップ３１８）。さらにステップ３１８の場合には、続いてステップイメージデータ（＃ｎ＋１）をＲＡＭ６（図１）に転送する（ステップ３２０）。
【００３４】
以上、第２の圧縮処理を説明した。第１の圧縮処理と同様、商と余りのデータとフラグビットとをまとめることにより、１つのイメージデータの情報量で実質的に２つのイメージデータを転送するので、データはより少なく、転送時間はより短くできる。圧縮データ伸長部４０（図１）は、イメージデータ圧縮部２４から出力され、ＲＡＭ６（図１）に格納されたデータを内部バス１０（図１）を介して読み出す。そして、そのフラグビットによりそのデータが圧縮データであると判断できれば、その商と余りのデータと、予め決められていた除数Ｑとを利用してもとの被除数Ｘnを求める。この被除数Ｘnを表すビット列を、イメージデータを構成する一ビット列としてイメージデータを復元できる。
【００３５】
次に、圧縮パラメータを用いて、第１の圧縮処理の圧縮効率を高める手法を説明する。圧縮パラメータは、圧縮処理の結果、圧縮されなかったビット列が多くなった場合に利用されるパラメータである。差分データを利用する第１の圧縮処理では、差分データのビット数がイメージデータのビット数の半分以下であれば圧縮を行い、半分より大きければ圧縮を行わなかった。例えばイメージデータのビット数の半分が４ビットであるとして、差分データが５ビットのときは圧縮は行わなかった。しかし、その５ビットの差分データからさらに所定の数を減算して４ビット以下にできれば、圧縮を行うことができる。このときの「所定の数」が圧縮パラメータである。圧縮パラメータを用いると、差分データは、
0004399965.tif 000002
として得ることができる。圧縮パラメータによって、本来圧縮されない差分データをどれだけ多く圧縮できるかが決まる。したがって、圧縮効率を高めるためには、どのような圧縮パラメータを用いるかが問題となる。
【００３６】
以下、圧縮パラメータを導出する手順について説明する。説明において、特に指定しない限り、「差分データ」は（イメージデータ）−（直前に処理されたイメージデータ）により得られるデータをいうとする。圧縮パラメータを導出する時点では、まだ圧縮パラメータを用いた差分データは存在しないからである。圧縮パラメータを導出する手順は、差分データの分布をカウントし、分布が多い範囲（Ｎ個の差分データのうち、Ｌ個以上含む範囲）内のある値を圧縮パラメータとして採用する。このような圧縮パラメータを用いると、差分データから圧縮パラメータを減算した値は統計的により小さな値になり、その値に対応するビット列のビット数も少なくなるので、より圧縮効率を高められる。
【００３７】
図４は、圧縮パラメータの導出手順を示すフローチャート４００である。まずパラメータ導出部２６（図１）は、差分データの分布をカウントするカウンタをクリアする（ステップ４０２）。差分データの分布は、複数定められた範囲のうち、いずれの範囲に属するかにより求められる。この例では、差分データの値がａ1以上ａ2未満か、ｂ1以上ｂ2未満か、およびｃ1以上ｃ2未満かが判断される。差分データは、イメージデータ圧縮部２４（図１）でステップ２０４（図２）およびステップ２１０（図２）において計算されたデータである。パラメータ導出部２６はまず、ａ1以上ａ2未満かを判断し（ステップ４０４）、その範囲に入っていればカウンタ１をインクリメントする（ステップ４０６）。その範囲に入っていなければ、次に差分データがｂ1以上ｂ2未満かを判断する（ステップ４０８）。差分データがｂ1以上ｂ2未満であれば、パラメータ導出部２６はカウンタ２をインクリメントする（ステップ４１０）。そうでなければ、差分データがｃ1以上ｃ2未満かを判断する（ステップ４１２）。差分データがｃ1以上ｃ2未満であれば、パラメータ導出部２６はカウンタ３をインクリメントする（ステップ４１４）。そうでない場合、およびカウンタ１またはカウンタ２をインクリメントした後は、それまで集計した差分データがＮ個になったか否かを判断する（ステップ４１６）。
【００３８】
判断の結果、まだＮ個に至らない場合には、再びステップ４０４からの処理を繰り返す。Ｎ個の差分データを集計した場合には、パラメータ導出部２６はカウンタ１〜３の値を調べ、その値がＬ以上のカウンタがあるか否かを判断する（ステップ４１８）。これは、あまりに少ない分布範囲内の値を圧縮パラメータとして採用しても、圧縮効率の向上は望めないからである。値がＬ以上のカウンタがある場合には、そのカウンタに対応する範囲の下限値を圧縮パラメータとして採用する。仮に値がＬ以上のカウンタが複数ある場合には、カウンタ値が最大のカウンタに対応する範囲の下限値を、圧縮パラメータとして採用する（ステップ４２０）。値がＬ以上のカウンタがない場合には、圧縮パラメータは０とされ（ステップ４２２）、圧縮パラメータを利用しない場合と実質的に同じになる。
【００３９】
以上のようにして、パラメータ導出部２６は圧縮パラメータを導出し、その圧縮パラメータをその後の処理に利用して圧縮効率を高める。以上の説明では、上記第１の圧縮処理に関して圧縮パラメータを求める手順を説明した。第２の圧縮処理に対しては、除数Ｑの値を被除数Ｘnに応じて変化させ、圧縮効率を向上させてもよい。例えば、被除数Ｘnが第１の範囲内の値のときは、除数はＱ1、第２の範囲にある値のときは、除数はＱ2などと変化させてもよい。
【００４０】
【発明の効果】
本発明によれば、印刷時に内部バスを介して内部の構成要素間で印刷データを転送する場合に、印刷データを圧縮して転送すべきデータ量を減少し、それにより内部バスの占有時間を少なくする。これにより高速な印刷を実現できる。
【００４１】
また、圧縮結果と、前記イメージデータをなすビット列が表す値に基づいて圧縮パラメータを導出し、その圧縮パラメータを用いてイメージデータを圧縮するので、圧縮効率をより高く変化させることができる。したがって転送すべきデータ量をより減少し、内部バスの占有時間を少なくできる。
【図面の簡単な説明】
【図１】  主としてプリンタの構成を示すブロック図である。
【図２】  第１の圧縮処理の手順を示すフローチャートである。
【図３】  第２の圧縮処理の手順を示すフローチャートである。
【図４】  圧縮パラメータの導出手順を示すフローチャートである。
【符号の説明】
２  データ入力部
４  ＣＰＵ
６  ＲＡＭ
８  ＲＯＭ
１０  内部バス
２０  圧縮データ生成部
２２  イメージデータ生成部
２４  イメージデータ圧縮部
２６  パラメータ導出部
３０  パラメータ保持部
４０  圧縮データ伸長部
５０  エンジンインターフェース
６０  プリントエンジン
１００  プリンタ
【図１】
0004399965.tif 000003
【図２】
0004399965.tif 000004
【図３】
0004399965.tif 000005
【図４】
0004399965.tif 000006