(57)【特許請求の範囲】
【請求項１】
ページプリンタにおいてプリントすべき画像データをラスタライズし、そのラスタライズされたデータに対して可変長可逆圧縮処理を施し、その圧縮処理された圧縮コードを圧縮メモリに格納し、該圧縮メモリへの１ページ分あるいはそれを複数に分割したデータの圧縮コードの格納が完了した後、その圧縮コードを前記圧縮メモリから読み出して伸長処理をし、プリンタエンジンにビデオ信号を出力するデータ圧縮・伸長方法であって、
前記ラスタライズされたデータを、所定数のドットで構成されるブロックと、所定数の該ブロックで構成されるユニットとをそれぞれ基本単位として分割し、
前記ラスタライズされたデータに対する可変長可逆圧縮処理を前記ブロック単位で施すとともに、
前記ユニットを構成する各ブロックのデータが全て白又は全て黒であるかどうかを該ユニット毎に前記ブロック単位でチェックし、該ユニットを構成する各ブロックのデータが全て白又は全て黒であった場合には、その状態を示す特定情報を含むユニットレコードを前記圧縮メモリに格納し、
該圧縮メモリに格納された圧縮コードを伸長する際に、前記ユニット単位で前記ユニットレコードの特定情報の有無を判別し、該特定情報があると判別したときには、そのユニットの圧縮コードに対しては読み出し及び伸長処理を行なわず、その全白か全黒かを示す情報のみを伸長部に記憶することを特徴とするデータ圧縮・伸長方法。
【請求項２】
請求項１記載のデータ圧縮・伸長方法において、
前記圧縮コードを伸長する際に前記特定情報があると判別したときは、そのユニットのデータをビデオバッファへ転送することもせず、そのユニットに対応して前記伸長部に記憶した全白又は全黒を示す情報に基づいて、直接全白又は全黒のビデオ信号をプリンタエンジンに出力することを特徴とするデータ圧縮・伸長方法。
【請求項３】
請求項１又は２記載のデータ圧縮・伸長方法において、
前記ラスタライズしたデータに対する可変長可逆圧縮処理を、
主走査方向にｔドットで構成されるブロックと、主走査方向あるいは副走査方向にｕブロックで構成されるユニットの２つの基本単位を用い、プリントすべき画像データを１ページ分ずつラスタライズするために必要なページバッファを前記ユニット単位に分割し、
その分割した各ユニットの描画データが全て白であるかどうかをチェックして、その結果をｍビットの特定コードでホワイトマップテーブルに保存し、
前記ユニットが全て白でない場合には、前記ホワイトマップテーブルで指定されるアドレス領域にｕブロック分のｎビットの圧縮データテーブルを用意して、ｕ個分のブロック毎のデータの圧縮処理結果を格納すると共に、各ブロックの描画データが全て黒か否かを判断して全て黒のブロック数をカウントし、そのカウント値がｕになった場合は前記ホワイトマップテーブルのユニットレコードに全黒の情報を保存し、
前記ブロック毎の圧縮処理が不可能な場合には、前記圧縮データテーブルで指定されるアドレス領域にｔビットの非圧縮データテーブルを用意して、該ブロックのデータをそのまま格納する、
ことによって行なうことを特徴とするデータ圧縮・伸長方法。
【請求項４】
プリントすべきデータをラスタライズし、そのラスタライズされたデータに対して可変長可逆圧縮処理を施して、その圧縮処理された圧縮コードをメモリに格納し、該圧縮メモリへの１ページ分あるいはそれを複数に分割したデータの圧縮コードの格納が完了した後、その圧縮コードを前記圧縮メモリから読み出して伸長処理をし、プリンタエンジンにビデオ信号を出力するページプリンタであって、
前記ラスタライズされたデータを、所定数のドットで構成されるブロックと、所定数の該ブロックで構成されるユニットとをそれぞれ基本単位として分割する手段と、
前記ラスタライズされたデータに対する可変長可逆圧縮処理を前記ブロック単位で施す手段と、
前記ユニットを構成する各ブロックのデータが全て白又は全て黒であるかどうかを該ユニット毎に前記ブロック単位でチェックするチェック手段と、
該チェック手段によるチェックの結果、前記ユニットを構成する各ブロックが全て白又は全て黒であった場合には、その状態を示す特定情報を含むユニットレコードを前記圧縮メモリに格納する手段と、
該圧縮メモリに格納された圧縮コードを伸長する際に、前記ユニット単位で前記ユニットレコードの特定情報の有無を判別し、該特定情報があると判別したときには、そのユニットの圧縮コードに対しては読み出し及び伸長処理を行わず、直接全白又は全黒のビデオ信号をプリンタエンジンに出力する手段と
を設けたことを特徴とするページプリンタ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、白黒およびカラーのレーザプリンタ、ＬＥＤプリンタ等のページプリンタ（デジタル複写機のプリンタ部も含む）におけるデータ圧縮・伸長方法、およびそれを実施するページプリンタに関する。
【０００２】
【従来の技術】
近年、レーザプリンタ等のページプリンタの解像度は益々高くなり、最近では６００ＤＰＩが主流になっている。今後は８００ＤＰＩや１２００ＤＰＩのプリンタが出現するであろうし、マルチ・リゾリューション・プリンタ、すなわちエミュレーションに応じてエンジンの解像度が変化するプリンタも増えてくるであろう。
【０００３】
しかし、ページプリンタ内の１ページ分のビットマップデータを展開するフレームバッファのメモリ容量は、Ａ４，６００ＤＰＩで約４ＭＢ、Ａ３，６００ＤＰＩでは約８ＭＢになる。このようなフレームバッファのメモリ容量の増加は、製品価格に大きな影響を与える。一方、ページプリンタの価格は逆に低価格へと推移しているため、高解像度化に伴う価格上昇をなんらかの手段で抑えなければならない。
【０００４】
そのための２値画像データの可逆圧縮技術には、ファクシミリ等で用いられるＭＨ（ハフマン符号化方式：一次元圧縮法によるＧ３ファクシミリの標準符号化方式），ＭＲ（二次元圧縮法によるＧ３ファクシミリではオプションの符号化方式），ＭＭＲ（ＭＲ符号化方式の変形で、Ｇ４ファクシミリの標準符号化方式）や、コンピュータで扱うテキストファイルやバイナリファイルに用いられる、例えばＬＺ方式の圧縮等がある。また、最近では国際標準である算術符号化を用いたＪＢＩＧ方式もある。
【０００５】
【発明が解決しようとする課題】
しかしながら、これらの２値画像データ圧縮技術は、画像あるいはファイルの先頭から順番に逐次符号化処理を行なうので、所望の任意ブロックだけをリアルタイムに復元することはできない。
ページプリンタでは、印刷すべき文書情報がコンピュータのＣＲＴ上で実際に作成された順番にくるため、ある大きさのブロック単位で圧縮処理を施さなければならない。従って、上記圧縮技術をそのまま使用することはできない。
【０００６】
そこで、本発明者等は先に、ページプリンタにおいて印刷すべき文書データを所定の解像度にラスタライズし、そのラスタライズされたデータに対して所定の大きさのユニット単位で可変長可逆圧縮処理を施し、１ユニットが全て白データの場合の特定コードを含む圧縮コードを圧縮メモリに格納し、該圧縮メモリへの１ページ分あるいはそれを複数に分割したデータの圧縮コードの格納が完了した後、その圧縮コードを伸長してプリンタエンジンにビデオ信号を出力する画像データの圧縮・伸長方法を発明した。
【０００７】
さらに、その圧縮コードを伸長（解凍ともいう）して展開する際に、上記圧縮処理の単位である１ユニットのデータが全て白データであることを、上記特定コードによって判別したときには、そのユニットの圧縮コードに対して読み出し及び伸長を行なわず、そのユニットのデータをビデオバッファへ転送することもせず、そのユニットに対応して直接全白のビデオ信号をプリンタエンジンへ出力することにより、文書等の画像の白地部分などの描画データが全白のユニットに対するメモリアクセスを削減して、効率よく伸長（解凍）処理を行なえるようにした画像データの圧縮・伸長方法を発明した。
【０００８】
ところが、ベタ黒が多い画像や、１ユニットを構成するブロック数が少ないか、または解像度が高い場合には、罫線等も１ユニットの描画データが全て黒になる可能性が高い。しかし、上記圧縮・伸長方法では、圧縮コードを伸長して展開する際に、あるユニットが全て黒データであっても、そのユニット内のデータを全て読み出して伸長処理をしていたため、メモリバスのアクセス回数充分に削減できず、一層効率を高めることが望まれた。
【０００９】
この発明はこの点を改善するためになされたものであり、ページプリンタにおけるフレームバッファのメモリ容量を削減し、低価格な高解像度ページプリンタを提供できるようにするとともに、圧縮コードの伸長（解凍）時におけるメモリアクセスを最小限に削減して、処理効率を高めることを目的とする。
【００１０】
【課題を解決するための手段】
この発明によるデータ圧縮・伸長方法は、上記の目的を達成するため、ページプリンタにおいてプリントすべき画像データをラスタライズし、そのラスタライズされたデータに対して可変長可逆圧縮処理を施し、その圧縮処理された圧縮コードを圧縮メモリに格納し、該圧縮メモリへの１ページ分あるいはそれを複数に分割したデータの圧縮コードの格納が完了した後、その圧縮コードを前記圧縮メモリから読み出して伸長処理をし、プリンタエンジンにビデオ信号を出力するデータ圧縮・伸長方法であって、
上記ラスタライズされたデータを、所定数のドットで構成されるブロックと、所定数の該ブロックで構成されるユニットとをそれぞれ基本単位として分割し、上記ラスタライズされたデータに対する可変長可逆圧縮処理を前記ブロック単位で施す。
さらに、上記ユニットを構成する各ブロックのデータが全て白又は全て黒であるかどうかを該ユニット毎に前記ブロック単位でチェックし、該ユニットを構成する各ブロックのデータが全て白又は全て黒であった場合には、その状態を示す特定情報を含むユニットレコードを前記圧縮メモリに格納する。
そして、該圧縮メモリに格納された圧縮コードを伸長する際に、上記ユニット単位で上記ユニットレコードの特定情報の有無を判別し、該特定情報があると判別したときには、そのユニットの圧縮コードに対して読み出し及び伸長処理を行なわず、その全白又は全黒を示す情報のみを伸長部に記憶することを特徴とする。
【００１１】
さらに、上記圧縮コードを伸長する際に上記特定情報があると判別したときは、そのユニットのデータをビデオバッファへ転送することもせず、そのユニットに対応して前記伸長部に記憶した全白又は全黒を示す情報に基づいて、直接全白又は全黒のビデオ信号をプリンタエンジンに出力するようにするとよい。
【００１２】
また、これらのデータ圧縮・伸長方法において、上記ラスタライズしたデータに対する可変長可逆圧縮処理を、次のようにして行なうことができる。
主走査方向にｔドットで構成されるブロックと、主走査方向あるいは副走査方向にｕブロックで構成されるユニットの２つの基本単位を用い、プリントすべき画像データを１ページ分ずつラスタライズするために必要なページバッファを上記ユニット単位に分割する。
【００１３】
その分割した各ユニットの描画データが全て白であるかどうかをチェックして、その結果をｍビットの特定コードでホワイトマップテーブルに保存し、上記ユニットが全て白でない場合には、ホワイトマップテーブルで指定されるアドレス領域にｕブロック分のｎビットの圧縮データテーブルを用意して、ｕ個分のブロック毎のデータの圧縮処理結果を格納すると共に、各ブロックの描画データが全て黒か否かを判断して全て黒のブロック数をカウントし、そのカウント値がｕになった場合は上記ホワイトマップテーブルのユニットレコードに全て黒の情報を保存する。
また、ブロック毎の圧縮処理が不可能な場合には、上記圧縮データテーブルで指定されるアドレス領域にｔビットの非圧縮データテーブルを用意して、該ブロックのデータをそのまま格納する。
【００１４】
このようにすれば、１ユニット内が全て白データまたは黒データであるときには、そのユニットのデータを読み出さないので、１ユニットのｕブロック分のメモリアクセスを削減でき、極めて効率良く伸長処理を行なえる。
また、そのユニットのデータをビデオバッファへ転送する処理もしないことにより、さらにメモリアクセスを削減でき、一層効率のよい伸長処理を行なえる。
この発明はさらに、プリントすべきデータをラスタライズし、そのラスタライズされたデータに対して可変長可逆圧縮処理を施して、その圧縮処理された圧縮コードをメモリに格納し、該圧縮メモリへの１ページ分あるいはそれを複数に分割したデータの圧縮コードの格納が完了した後、その圧縮コードを前記圧縮メモリから読み出して伸長処理をし、プリンタエンジンにビデオ信号を出力するページプリンタであって、該メモリに格納された圧縮コードを読み出して伸長処理をし、その伸長処理したデータをプリンタエンジンへ送出するページプリンタであって、次の各手段を設けたことを特徴とするページプリンタも提供する。
すなわち、上記ラスタライズされたデータを、所定数のドットで構成されるブロックと、所定数の該ブロックで構成されるユニットとをそれぞれ基本単位として分割する手段と、上記ラスタライズされたデータに対する可変長可逆圧縮処理を前記ブロック単位で施す手段と、上記ユニットを構成する各ブロックのデータが全て白又は全て黒であるかどうかを該ユニット毎に前記ブロック単位でチェックし、該ユニットを構成する各ブロックのデータが全て白又は全て黒であった場合には、その状態を示す特定情報を含むユニットコードを上記圧縮メモリに格納する手段とを設けている。
さらに、該圧縮メモリに格納された圧縮コードを伸長する際に、上記ユニット単位で上記ユニットレコードの特定情報の有無を判別し、該特定情報があると判別したときには、そのユニットの圧縮コードに対しては読み出し及び伸長処理を行なわず、直接全白又は全黒のビデオ信号をプリンタエンジンに出力する手段を設けている。
【００１５】
【発明の実施の形態】
以下、この発明の実施の形態を図面に基づいて具体的に説明する。
図２はこの発明によるページプリンタを用いた画像形成システムの構成例を示す図であり、１００はパーソナルコンピュータ、２００がページプリンタである。通常、ユーザはパーソナルコンピュータ１００のＣＲＴ画面とキーボードとＤＴＰ（デスクトップ・パブリッシング）アプリケーションを使って文書を作成し、プリンタドライバ１０１を通してページプリンタ２００に転送して印刷を行なう。
【００１６】
プリンタドライバ１０１は、通常印刷すべき文書内容をページプリンタ２００がサポートするプリンタ言語、例えばヒューレット・パッカード（ＨＰ）社のＰＣＬやＡｄｏｂｅ社のポストスクリプト言語等にコンバートする。前者に接続されたプリンタを一般にＰＣＬエミュレーション・プリンタ、後者に接続されたプリンタをポストスクリプト・プリンタと呼ぶ。また、パーソナルコンピュータ１００側で全てラスタライズされたビットイメージを印刷するだけのダムプリンタと呼ばれるプリンタもある。
【００１７】
ページプリンタ２００としては、レーザプリンタやインクジェットプリンタ、あるいはサーマルプリンタ等があるが、高速印刷という点でレーザプリンタが勝る。最近はカラーのレーザプリンタも市場に出始めており、それを使用することも可能である。また、解像度は年々高まる一方で、現在は６００ＤＰＩが標準となっている。
以下の実施例では、ページプリンタ２００を６００ＤＰＩの白黒ポストスクリプト・レーザプリンタ（以下単に「ページプリンタ」と称する）として説明するが、この発明はそれに限定されるものではない。
【００１８】
図３はそのページプリンタの外観図であり、図４はその内部機構の概略を示す縦断面図である。
このページプリンタ２００は、給紙トレイ２を着脱可能に備え、上部に第１排紙スタッカ３を設け、後部に第２排紙スタッカ４を設けている。２個の排紙スタッカ３，４への排紙は切換爪５によって切換え可能である。通常は、排紙スタッカとして第１排紙スタッカ３が選択されるが、封筒や葉書などのカールし易い紙を使用する場合など、特別な場合に第２排紙スタッカ４が選択される。
【００１９】
さらに、内部にはプリンタエンジンの作像部を構成する感光体ドラム１０，帯電部１１，光書込部１２，現像部１３，転写部１４，定着部１５と、給紙ローラ１６及びレジストローラ対１７等による給紙部と、搬送ローラとペーパガイド板等からなる排紙用搬送部１８と、このページプリンタ全体を制御するプリンタコントローラを構成するコントローラ基板１９及びプリンタエンジンのシーケンスコントローラを構成するエンジンドライバ基板２０等が設けられている。
【００２０】
そして、プリンタエンジンのシーケンスコントローラによりプリントシーケンスが開始されると、給紙ローラ１６によって給紙トレイ２から給紙を始め、その用紙の先端をレジストローラ対１７に突き当てた状態で一時停止させる。
一方、感光体ドラム１０は図４の矢印Ａ方向へ回転し、帯電部１１で帯電された表面に、光書込部１２によってプリンタコントローラからの画像データに応じて変調されたレーザビームを、ドラム軸方向に主走査しながら照射して露光し、感光体ドラム１０の表面に静電潜像を形成する。
【００２１】
それを現像部１３でトナーによって現像し、レジストローラ対１７によって所定のタイミングで給送される用紙に転写部１４において転写し、定着部１５で加熱定着したプリント紙を第２排紙スタッカ４へ送出するか、排紙用搬送部１８を通して上部の第１排紙スタッカ３へ搬送する。
【００２２】
図５はコントローラ基板１９の内部ブロック図である。
このコントローラ基板１９は、ＣＰＵ２０１，ＮＶＲＡＭ２０３，プログラムＲＯＭ２０４，フォントＲＯＭ２０５，ＲＡＭ２０６，及び４個のインタフェース（以下「Ｉ／Ｆ」と略称する）２０７，２０９，２１１，２１３と、これらを接続するバスライン２１５によって構成されている。
【００２３】
ＣＰＵ２０１は、プログラムＲＯＭ２０４に格納されたプログラム、操作パネル２１０からのモード指示、ホスト装置であるパーソナルコンピュータ（パソコン）１００からのコマンド等によって、このコントローラ全体を制御する。また、挿着されたＩＣカード２０２から、フォントデータやプログラム等を取り込むこともできる。
ＮＶＲＡＭ２０３は、操作パネル２１０からのモード指示の内容などを記憶しておく不揮発性メモリである。
【００２４】
プログラムＲＯＭ２０４は、このコントローラの制御プログラムを格納している読み出し専用メモリである。
フォントＲＯＭ２０５は、文字フォントのパターンデータなどを記憶する。
ＲＡＭ２０６は、ＣＰＵ２０１のワークメモリ，入力データのインプットバッファ，プリントデータのページメモリ（フレームバッファ），ビデオバッファ，ダウンロードフォント用のメモリ等に使用するランダムアクセス・メモリである。
【００２５】
エンジンＩ／Ｆ２０７は、実際にプリントを行なうプリンタエンジン２０８と接続されて、コマンド及びステータスや印字データの通信を行なうインタフェースである。
パネルＩ／Ｆ２０９は、操作パネル２１０と接続されて、コマンド及びステータスの通信を行なうインタフェースであり、操作パネル２１０は、使用者に現在のプリンタの状態を表示して知らせたり、使用者がモード指示を行なったりするパネル装置である。
【００２６】
ホストＩ／Ｆ２１１は、ホスト装置であるパーソナルコンピュータ１００と通信を行なうインタフェースであり、通常はセントロニクスＩ／ＦやＲＳ２３２Ｃを使用する。
ディスクＩ／Ｆ２１３は、ディスク装置２１４と通信を行なうためのディスクインタフェースである。ディスク装置２１４は、フォントデータやプログラム、あるいは印字データなどの種々のデータを記憶しておくための外部記憶装置であり、フロッピディスク装置やハードディスク装置などである。
【００２７】
次に、このページプリンタ２００によるページ印刷の動作について説明する。図１は、図５に示したコントローラ基板１９及び６００ＤＰＩのプリンタエンジン２０８による、ページ印刷の処理に係わる部分の機能構成を示すブロック図である。そのＰＳインタープリタ２１と圧縮部２２及び伸長部２５は、図５のＣＰＵ２０１等による機能、圧縮メモリ２３と非圧縮メモリ２４はＲＡＭ２０６のメモリ領域、ビデオ出力部２７はエンジンＩ／Ｆ２０７の機能をそれぞれ示している。
【００２８】
図６は、この発明によるデータ圧縮・伸長方法を実施して１ページ分の印刷を行なう際の動作フロー図である。そこで、この図６のフローに沿って、図１を参照しながらページ印刷の動作を説明する。
図２に示したパーソナルコンピュータ１００内のプリンタドライバ１０１が、印刷すべき文書等の画像データをページ毎にポストスクリプト（以下、ＰＳと記す）ファイルに変換してページプリンタ２００へ送る。
【００２９】
ページプリンタ２００がそのＰＳファイルを受信すると、図１に示したＰＳインタープリタ２１が、それをプリンタエンジン２０８の性能による印刷の解像度と同じ６００ＤＰＩの解像度であるので、ある大きさのブロック単位でラスタライズし、そのラスタライズしたデータに対して、圧縮部２２がそのブロック単位で可変長可逆圧縮処理を試みる。このブロック単位については追って詳述する。
【００３０】
そして圧縮できれば、その結果の圧縮コードを圧縮メモリ２３へストアする。この圧縮メモリ２３は、３００ＤＰＩで１ページ分に相当する容量を持つページメモリで、図５に示したＲＡＭ２０６のメモリ領域を使用する。
圧縮できなかったら、ラスタライズされた６００ＤＰＩのデータを非圧縮メモリ２４へストアする。実際には、この非圧縮メモリ２４は圧縮メモリ２３を兼用することができるので、ＲＡＭ２０６のメモリ容量を増加させる必要はない。
なお、この圧縮メモリ２３と非圧縮メモリ２４を含むページメモリは、その１ページ分の領域をＮ個に分割した各領域に、上記圧縮コード及び非圧縮のデータを順次格納していく。
【００３１】
１ページ分の処理が終了したら、圧縮画像の伸長及びビデオ信号出力を行なう。すなわち、圧縮メモリ２３へストアした圧縮コードをページの左上から順番に伸長部２５で伸長（解凍処理ともいう）し、６００ＤＰＩの画像データに復元して、ビデオ出力部２７内のビデオバッファにビットマップ展開する。非圧縮メモリ２４にストアした６００ＤＰＩの非圧縮画像データは、そのままビデオバッフアの後述する圧縮データテーブル（ＣＤＴ）によって指定されたアドレスに展開する。
【００３２】
そして、このビデオバッファに展開された画像データを、ビデオ出力部２７がシリアルなビデオ信号として、プリンタエンジン２０８へ送出して印刷させる。このときのビデオ出力部２７内のビデオバッファは、図５のＲＡＭ２０６あるいは別のメモリに確保した１ページ分のフレームメモリ領域を使用する。その具体例は後述する。
あるいは１ページ分のフレームメモリの１／Ｎの大きさのメモリ領域を使用し、１ページ分の画像データの展開およびそれによるビデオ信号の出力をＮ回に分けて行なうこともできる。
【００３３】
次に、図１及び図６によって説明したブロック単位の可変長可逆圧縮処理の詳細について図７乃至図１４を参照して説明する。
ＰＳファイルをラスタライズするデータのブロック単位を、図７に示すようにｔドット（ｄｏｔ）  のブロックワードＢＷとする。そして、図７の（ａ）又は（ｂ）に示すように、このｔドット（ｄｏｔ）  のブロックワードＢＷが主走査方向（ａ）あるいは副走査方向（ｂ）にｕ個分連続して１ユニット（ｕｎｉｔ）を構成している。
すなわち、１ユニット（ｕｎｉｔ）＝ｕ＊ＢＷである。
【００３４】
そして、図５に示したＣＰＵ２０１は、図１のＰＳインタープリタ２１としての機能によってＰＳファイルをラスタライズ（描画）した際、その１ユニットのデータが全て白ドットか否かを調べ、全て白の場合には圧縮部２２を使用せずに直接圧縮メモリ２３のホワイトマップテーブルＷＭＴをＮＵＬＬ（0xffffffff）にする。これを特定コードと称する。黒ドットが１つでもあると、そのユニットを構成する各ブロックワードＢＷ毎に、圧縮部２２に圧縮処理を行なわせる。
【００３５】
図８はそのブロックワードＢＷ及びユニットの具体例を示し、ＰＳファイルをラスタライズしたデータに対して、６４ドット（ｄｏｔ）  からなるブロックワードＢＷの８ライン（ｌｉｎｅ）分を１ユニットとする。すなわち、
１ユニット（ｕｎｉｔ）＝８＊ＢＷ＝８＊６４（ｄｏｔ）とする。
【００３６】
さらに、各ユニットに対して図９に示すように、３２ｂｉｔ  のホワイトマップテーブル（Ｗｈｉｔｅ  Ｍａｐ  Ｔａｂｌｅ：以下ＷＭＴと略称する）を用意する。そして、１ユニットのデータが全て白ドットなら、ＷＭＴをホワイトＮＵＬＬ（０ｘｆｆｆｆｆｆｆｆ）とし、もし、黒ドットが１つ以上存在するなら、図１０に示す３２ｂｉｔの圧縮データテーブル（Ｃｏｍｐｒｅｓｓｉｏｎ  Ｄａｔａ  Ｔａｂｌｅ：以下ＣＤＴと略称する）の実アドレス（ＣＤＴアドレス）を格納する。
【００３７】
なお、ＣＤＴアドレスが示すレコードの長さは、図１１に示すように
８＊ＣＤＴ＝８＊３２ビット（ｂｉｔ）＝３２バイト（ｂｙｔｅ）  とする。ＣＤＴは１つのブロックワードＢＷに対応し、後述の圧縮方式を試みて、もし圧縮可能であったら、図１０に示す圧縮データテーブルＣＤＴのｂｉｔ２９〜ｂｉｔ０に、その圧縮コードを格納する。また、もし圧縮不可能であったら、ｂｉｔ３１＝１とし、ｂｉｔ３０〜ｂｉｔ０に非圧縮時のデータ格納メモリアドレス（Ｕｕｃｏｍｐｒｅｓｓｉｏｎ  Ｄａｔａ  Ｔａｂｌｅ
Ａｄｄｒｅｓｓ：ＵＤＴアドレス）を格納する（図１２）。
【００３８】
今回使用した圧縮方式は、次に示す２ステップからなる。まず始めに、対象となるブロックワードＢＷが全部白ドットか、全部黒ドットかを調べる。もし、そうであったらＷＭＴのＣＤＴアドレスをそれぞれ、０ｘ００００００００  又は  ０ｘ７ｆｆｆｆｆｆｆとする。もし、そうでない場合には、先頭ドットが白ドットか黒ドットか（図１０に示したＣＤＴの  ｂｉｔ３０にて“０”か“１”で指定）に応じて、白ドットあるいは黒ドットのランレングスを図１３に示すハフマン・コードで記述する。
【００３９】
例えば、図１４の（ａ）に示す６４ドットのブロックワードＢＷは、同図（ｂ）に示す圧縮コードに変換される。なお、最後の白ドット（ランレングス＝１０）は、圧縮コードに含まれないが、最後の黒ドット（ランレングス＝１９）の後ろが全て白ドットである事で復元が可能である。また、ＣＤＴの余った領域には、１を書き込むようにする。
【００４０】
したがって、ラスタライズされたデータに対するこの可変長可逆圧縮処理を、図７に示したｔドットのブロックワードＢＷが主走査方向又は副走査方向にｕ個並んだユニットを基本単位として行なう場合の処理は、次の各ステツプによる。印刷すべきデータを１ページ分ずつラスタライズするために必要なページバッファを上記ユニット単位に分割するステップ。
その分割した各ユニットのデータが全白であるかどうかをチェックし、その結果をｍビット（図９では３２ビット）のホワイトマップテーブルに保存するステップ。
【００４１】
各ユニット毎にそのデータが全白でない場合に、ホワイトマップテーブルで指定されるアドレス領域にｕブロック分のｎビット（図１０では３２ビット）の圧縮データテーブル（ＣＤＴ）を用意し、ｕ個分のブロック毎のデータの圧縮処理結果を格納するステップ。
各ブロック毎の圧縮処理が不可能な場合に、圧縮データテーブル（ＣＤＴ）で指定されるアドレス領域にｔビットの非圧縮データテーブル（ＵＤＴ）を用意し、圧縮処理が不可能なブロックのデータをそのまま格納するステップ。
【００４２】
さらに、図１の圧縮メモリ２３に用意するＷＭＴには、各ユニット毎にその描画データが全白又は全黒の場合にその状態を示す特定情報を含むユニットレコードを格納する。
その各ユニットのデータ圧縮におけるＷＭＴ内のユニットレコードの構成を図１５に示す。このユニットレコードは３２ビットからなり、そのうちのｋビット（この例では上位４ビット）をブラックＮＵＬＬ（ヌル）カウント用として、ユニット内のデータが全て黒（全黒）のブロックワード（ＢＷ）の計数情報を格納するために使用し、残りの２８ビットをＣＤＴアドレスポインタ用に使用する。
一般的なプリンタのメモリシステムにおいては、アドレスポインタ情報としては２８ビットあれば充分である。
【００４３】
ブラックＮＵＬＬカウントは、ＷＭＴの初期化時には全て“０”である。各ユニットに対する圧縮動作前の判断において、新規に全黒と判断されたブロックワードがある場合は、ブラックＮＵＬＬカウントを全黒となったブロックワードの数だけカウントアップし、全黒状態から他の状態になったブロックワードがある場合は、ブラックＮＵＬＬカウントを全黒でなくなったブロックワードの数だけカウントダウンする。
【００４４】
図８に示した例のように、１ユニットが１６個のブロックワード（ＢＷ）によって構成されている場合は、ブラックＮＵＬＬカウントのカウントアップにおいて、「１５」を計数した後のカウントアップ、つまり１６個全てのブロックワードが全黒となった場合に、ユニットレコードのビット内容を全て“１”とし、ＣＤＴに使用していたメモリ領域を開放する。
【００４５】
ここで、この実施形態においては、ユニット内の全てのドットが白、つまりホワイトＮＵＬＬの場合は、ユニットレコードのビット内容は全て“０”、ユニット内の全てのドットが黒、つまりブラックＮＵＬＬの場合は、ユニットレコードのビット内容は全て“１”と定義する。
【００４６】
次に、この実施形態における「圧縮画像の伸長，ビデオ信号出力」の処理について、図１６および図１７によって説明する。
図１６は、図１における圧縮メモリ２３，非圧縮メモリ２４及びビデオバッファのメモリ領域を有するＲＡＭ２０６と、伸長部２５及びビデオ出力部２７と、プリンタエンジン２０８との関係を模式的に示すブロック図であり、ビデオ出力部２７とプリンタエンジン２０８との間に、図１では図示を省略したＦＩＦＯメモリ２８を設けている。２９は、伸長（解凍）部２５及びビデオ出力部２７からＲＡＭ２０６をアクセスするためのメモリバスである。
【００４７】
図１７は、その伸長部２５による（実際には図５のＣＰＵ２０１によって制御される）圧縮画像の伸長処理を示すフローチャートである。
このフローチャートに従って、図１６に示す伸長（解凍）部２５による処理を説明する。
【００４８】
まず、ＲＡＭ２０６の第１の記憶部としての圧縮メモリ領域（ホワイトマップテーブルＷＭＴや圧縮データテーブルＣＤＴ及び非圧縮データテーブルＵＤＴが格納されているエリア）の中のＷＭＴのユニットレコード（図１７では単に「レコード」と略記している）を読み出す。それをユニット毎にホワイトＮＵＬＬ又はブラックＮＵＬＬか否かを判断する。このデータがホワイトＮＵＬＬ又はブラックＮＵＬＬの場合、そのユニット（例：６４ｄｏｔｓ  ×  １６ｌｉｎｅｓ）が全て白データ又は黒データであることを示している。
【００４９】
この実施例では、伸長部２５に第３の記憶部としてＮＵＬＬテーブル３０を設けており、ＮＵＬＬテーブル３０は１個のＷＭＴのユニットレコードに対して２ビット（ホワイトＮＵＬＬ用とブラックＮＵＬＬ用に各１ビット）を持ち、最低１スキャンライン分の特定情報を保持する。
そして、ユニットレコードがホワイトＮＵＬＬであれば、ＮＵＬＬテーブル３０のホワイトビットをＯＮ（“１”）にし、ブラックＮＵＬＬであればブラックビットをＯＮ（“１”）にする。そのいずれでもない場合には、ＮＵＬＬテーブル３０のホワイトビットとブラックビットをクリア（“０”に）する。
【００５０】
そして、ＷＭＴのユニットレコードの読み出しを１スキャンライン分行なった後、ラインカウントをｕにして、各ユニット毎に順次ＮＵＬＬテーブル３０のホワイトビット又はブラックビットがＯＮか否かを判断する。
伸長部２５はそのいずれかのビットがＯＮのユニットに対しては圧縮データの読み込み（読み出し）と伸長処理を行なわず、いずれのビットもＯＮでないユニットに対しては、第１の記憶部から圧縮データを読み出して伸長（解凍）処理を行ない、その画像データをメモリバス２９を通してＲＡＭ２０６内の第２の記憶部であるビデオバッファＶＢに転送し、そこに順次格納する。
【００５１】
この処理を１スキャンライン分行なう毎にラインカウントを−１して、繰り返し実行する。そして、ラインカウントの値が「０」になるまで、すなわち副走査方向のｕライン分繰り返す。
したがって、ユニット内の各ブロックのデータが全て白又は黒のユニットに対してはメモリのアクセスを行なわないので、アクセス回数を大幅に削減して、圧縮データの伸長処理を効率よく行なうことができる。
【００５２】
先に発明したページプリンタにおけるデータ圧縮・伸長方法では、圧縮データを伸長する際に、全てのユニットの全てのブロックワード毎に、すなわち毎スキャンラインの圧縮データ読み出しをしなければならないが、上述のようにすることにより、メモリバス２９のアクセス回数を大幅に削減できる。
【００５３】
例えば、６００ＤＰＩの解像度で、１スキャンラインが４８６４ドットであり、１ブロックワードＢＷが６４ドットで１ユニットが１６ラインとすると、１スキャンラインが全てが白データ及び／又は黒データであった場合、従来の方法だとその１６ライン分について約１２００回のメモリバスアクセスが必要なのに対して、この発明によれば約７０回のアクセスで済む計算になる。
【００５４】
そして、上述の伸長（解凍）処理済みのデータは、第２の記憶部として図１６の例ではＲＡＭ２０６内に確保したビデオバッファＶＢに一旦格納される。そして、その格納されたデータは、再びメモリバス２９を通してページの開始位置から順次ビデオ出力部２７へ転送され、そのビデオキュー３１からＦＩＦＯメモリ２８を介してビデオ信号をプリンタエンジン２０８へ送出する。
【００５５】
その際にも、従来のページプリンタでは全てのデータをビデオバッファＶＢに転送して、その後にビデオバッファＶＢから再びメモリバス２９を通してビデオ出力部２７へ転送するが、この実施例では伸長部２５のＮＵＬＬテーブル３０のホワイトビット又はブラックビットが“１”であるユニットに対するデータはビデオバッファＶＢに転送しない。
【００５６】
そして、そのデータ（全白のデータ又は全黒のデータ）はビデォバッファＶＢからの読み出しは行なわずに、ビデオキュー３１から直接全白又は全黒のビデオ信号をＦＩＦＯメモリ２８を介してプリンタエンジン２０８に送出する。
したがって、メモリバス２９のアクセス回数をさらに削減でき、処理効率をさらに高めることができ、パフォーマンスの向上を計ることができる。
【００５７】
【発明の効果】
以上説明してきたように、この発明によれば、ページプリンタのメモリ容量を節減でき、低価格化と高解像度化を可能にすると共に、圧縮データの伸長（解凍）時にメモリバスのアクセス回数を大幅に削減し、処理効率を高めパフォーマンスの向上を計ることができる。
【図面の簡単な説明】
【図１】図２乃至図４に示したページプリンタ２００におけるＰＳファイルの画像データを印刷するための処理に係わる部分の機能構成を示すブロック図である。
【図２】この発明を適用したページプリンタを用いた画像形成システムの構成例を示す図である。
【図３】図２におけるページプリンタの一例を示す外観図である。
【図４】同じくその内部機構の概略を示す縦断面図である。
【図５】図４におけるコントローラ基板１９の構成を示すブロック図である。
【図６】図１に示した各部により１ページ分の印刷を行なう際の動作フロー図である。
【図７】ＰＳフアイルをラスタライズしたデータの１ユニット（ｕｎｉｔ）の構成を示す図である。
【図８】同じくそのブロックワードＢＷのドット数及び１ユニットのライン数の具体例を示す図である。
【図９】各ユニットに対するホワイトマップテーブル（ＷＭＴ）のサイズを示す図である。
【図１０】図１２のＷＭＴに格納する圧縮データテーブル（ＣＤＴ）の構成を示す図である。
【図１１】図１３に示したＣＤＴの実アドレス（ＣＤＴアドレス）のレコードの長さを示す図である。
【図１２】非圧縮時のデータ格納メモリアドレス（ＵＤＴアドレス）をＢＷに格納する場合の説明図である。
【図１３】白ドットあるいは黒ドットのランレングスを記述するハフマン・コードの説明図である。
【図１４】圧縮コードの変換例を示す図である。
【図１５】ホワイトマップテーブル（ＷＭＴ）内のユニットレコードの構成を示す説明図である。
【図１６】この発明による図６における圧縮画像の伸長およびビデオ信号出力の処理に係わる部分の説明に供するブロック図である。
【図１７】図１６に示す伸長部２５による圧縮画像の伸長処理を示すフロー図である。
【符号の説明】
１０：感光体ドラム    １１：帯電部
１２：光書込部        １３：現像部
１４：転写部          １５：定着部
１９：コントローラ基板
２０：エンジンドライバ基板
２１：ホストスクリプト（ＰＳ）インタープリタ
２２：圧縮部          ２３：圧縮メモリ
２４：非圧縮メモリ    ２５：伸長部
２７：ビデオ出力部    ２８：ＦＩＦＯメモリ
２９：メモリバス      ３０：ＮＵＬＬテーブル
３１：ビデオキュー
１００：パーソナルコンピュータ
１０１：プリンタドライバ
２００：ページプリンタ      ２０１：ＣＰＵ
２０６：ＲＡＭ        ２０８：プリンタエンジン
ＶＢ：ビデオバッファ
【図１】
0003606985.tif 000002
【図２】
0003606985.tif 000003
【図３】
0003606985.tif 000004
【図４】
0003606985.tif 000005
【図５】
0003606985.tif 000006
【図６】
0003606985.tif 000007
【図７】
0003606985.tif 000008
【図８】
0003606985.tif 000009
【図９】
0003606985.tif 000010
【図１０】
0003606985.tif 000011
【図１１】
0003606985.tif 000012
【図１２】
0003606985.tif 000013
【図１３】
0003606985.tif 000014
【図１４】
0003606985.tif 000015
【図１５】
0003606985.tif 000016
【図１６】
0003606985.tif 000017
【図１７】
0003606985.tif 000018