(57)【特許請求の範囲】
【請求項１】
画像データの連続した複数ビットの単位（以下、この単位を画像パターンと記す）及びそれに続く少なくとも１のビットが順次入力され、入力された各画像パターン内で閉じるラン長を算出する処理を行う第１の処理手段と、
前記第１の処理手段により算出されたラン長に基づき、繰り返しのないラン長と、繰り返しのあるラン長及びその繰り返し数を求める処理を行う第２の処理手段と、
前記第２の処理手段により求められたラン長及びラン長の繰り返し数に対する符号化処理を、画像パターンに対応したワード毎に行う第３の処理手段と、
前記第２の処理手段により求められたラン長及びラン長の繰り返し数に基づいて、前記第３の処理手段によって符号化されるワードの符号長を算出し、算出した符号長が所定の閾値を超えるか否かの判定を行う第４の処理手段とを有し、
前記第３の処理手段は、前記第４の処理手段によって符号長が前記閾値を超えないと判定されたワードに対する符号化処理では、該ワードにおけるラン長をランレングス符号により、ラン長の繰り返し数を反復符号により、それぞれ符号化するが、前記第４の処理手段によって符号長が前記閾値を超えると判定されたワードに対する符号化処理ではパス符号化を行う、
ことを特徴とする画像圧縮装置。
【請求項２】
画像データの連続した複数ビットの単位（以下、この単位を画像パターンと記す）及びそれに続く少なくとも１のビットが順次入力され、入力された各画像パターン内で閉じるラン長を算出する処理を行う第１の処理手段と、
前記第１の処理手段により算出されたラン長に基づき、繰り返しのないラン長と、繰り返しのあるラン長及びその繰り返し数を求める処理を行う第２の処理手段と、
前記第２の処理手段により求められたラン長及びラン長の繰り返し数に対する符号化処理を、画像パターンに対応したワード毎に行う第３の処理手段と、
前記第２の処理手段により求められたラン長及びラン長の繰り返し数に基づいて、前記第３の処理手段によって符号化されるワードの符号長を算出し、算出した符号長が所定の閾値を超えるか否かの判定を行う第４の処理手段とを有し、
前記第３の処理手段は、前記第４の処理手段によって符号長が前記閾値を超えないと判定されたワードに対する符号化処理では、該ワードにおけるラン長をランレングス符号により、ラン長の繰り返し数を反復符号により、それぞれ符号化するが、前記第４の処理手段によって符号長が前記閾値を超えると判定されたワードに対する符号化処理ではパス符号化を行い、
前記第１の処理手段は、入力された画像パターン内で閉じないラン長を累積加算する手段を備えることにより、複数の画像パターンにまたがるラン長を算出する、
ことを特徴する画像圧縮装置。
【請求項３】
前記第４の処理手段は、前記第２の処理手段により求められたラン長及びラン長の繰り返し数に基づき算出した、前記第３の処理手段によって符号化されるワードの符号長を、該ワードにおいて閉じていない途中のラン長及びラン長の繰り返し数の符号の分を含めるように補正する手段を有し、該補正する手段によって補正後の符号長が前記閾値を超えるか否かの判定を行うことを特徴とする請求項1又は２記載の画像圧縮装置。
【請求項４】
さらに、前記第1の処理手段によって算出されたラン長に基づき、前記第３の処理手段によって符号化されるワードの次のワードでパス符号化が行なわれるか否かの判定を行う第５の処理手段を有し、
前記第４の処理手段における前記補正する手段による符号長の補正量が、前記第５の処理手段による判定結果に応じて制御される、
ことを特徴とする請求項３記載の画像圧縮装置。
【請求項５】
画像データを圧縮する請求項１、２、３又は４記載の画像圧縮装置と、
前記画像圧縮装置により圧縮された符号データを記憶する記憶手段と、
前記記憶手段に記憶されている符号データを伸長する画像伸長手段と、
前記画像伸長手段により伸長された画像データを作像する作像手段とを有することを特徴とする画像形成装置。
【請求項６】
画像データの連続した複数ビットの単位（以下、この単位を画像パターンと記す）及びそれに続く少なくとも１のビットが順次入力され、入力された各画像パターン内で閉じるラン長を算出する処理を行う第１の処理工程と、
前記第１の処理工程により算出されたラン長に基づき、繰り返しのないラン長と、繰り返しのあるラン長及びその繰り返し数を求める処理を行う第２の処理工程と、
前記第２の処理工程により求められたラン長及びラン長の繰り返し数に対する符号化処理を、画像パターンに対応したワード毎に行う第３の処理工程と、
前記第２の処理工程により求められたラン長及びラン長の繰り返し数に基づいて、前記第３の処理工程によって符号化されるワードの符号長を算出し、算出した符号長が所定の閾値を超えるか否かの判定を行う第４の処理工程とを有し、
前記第３の処理工程は、前記第４の処理工程によって符号長が前記閾値を超えないと判定されたワードに対する符号化処理では、該ワードにおけるラン長をランレングス符号により、ラン長の繰り返し数を反復符号により、それぞれ符号化するが、前記第４の処理工程によって符号長が前記閾値を超えると判定されたワードに対する符号化処理ではパス符号化を行う、
ことを特徴とする画像圧縮方法。
【請求項７】
画像データの連続した複数ビットの単位（以下、この単位を画像パターンと記す）及びそれに続く少なくとも１のビットが順次入力され、入力された各画像パターン内で閉じるラン長を算出する処理を行う第１の処理工程と、
前記第１の処理工程により算出されたラン長に基づき、繰り返しのないラン長と、繰り返しのあるラン長及びその繰り返し数を求める処理を行う第２の処理工程と、
前記第２の処理工程により求められたラン長及びラン長の繰り返し数に対する符号化処理を、画像パターンに対応したワード毎に行う第３の処理工程と、
前記第２の処理工程により求められたラン長及びラン長の繰り返し数に基づいて、前記第３の処理工程によって符号化されるワードの符号長を算出し、算出した符号長が所定の閾値を超えるか否かの判定を行う第４の処理工程とを有し、
前記第３の処理工程は、前記第４の処理工程によって符号長が前記閾値を超えないと判定されたワードに対する符号化処理では、該ワードにおけるラン長をランレングス符号により、ラン長の繰り返し数を反復符号により、それぞれ符号化するが、前記第４の処理工程によって符号長が前記閾値を超えると判定されたワードに対する符号化処理ではパス符号化を行い、
前記第１の処理工程は、入力された画像パターン内で閉じないラン長を累積加算する工程を含むことにより、複数の画像パターンにまたがるラン長を算出する、
ことを特徴する画像圧縮方法。
【請求項８】
前記第４の処理工程は、前記第２の処理工程により求められたラン長及びラン長の繰り返し数に基づき算出した、前記第３の処理工程によって符号化されるワードの符号長を、該ワードにおいて閉じていない途中のラン長及びラン長の繰り返し数の符号の分を含めるように補正する工程を含み、該補正する工程によって補正後の符号長が前記閾値を超えるか否かの判定を行うことを特徴とする請求項６又は７記載の画像圧縮方法。
【請求項９】
さらに、前記第1の処理工程によって算出されたラン長に基づき、前記第３の処理工程によって符号化されるワードの次のワードでパス符号化が行なわれるか否かの判定を行う第５の処理工程を有し、
前記第４の処理工程における前記補正する工程による符号長の補正量が、前記第５の処理工程による判定結果に応じて制御される、
ことを特徴とする請求項８記載の画像圧縮方法。
【請求項１０】
コンピュータが読み取り可能な記録媒体であって、請求項６又は７記載の画像圧縮方法の各処理工程をコンピュータに実行させるためのプログラムが記録されたことを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像データの圧縮／伸長技術に係り、特に、プリンタやデジタル複写機などの画像形成装置において、フレームバッファ容量を節約するための省メモリ機構に最適な画像圧縮／伸長装置に関する。
【０００２】
【従来の技術】
画像データを保持するためのメモリ量を低減したり、画像データの送信時間を短縮したりする目的で、画像データの圧縮技術が利用されている。
【０００３】
２値画像を圧縮する方法として、１次元圧縮のラン長(ランレングス)符号化、ファクシミリなどに使用されるＭＨ符号化、２次元圧縮方式の国際標準であるＪＢＩＧ（Joint  Bi-level  Image  experts  Group)が広く知られている。また、ＭＨ符号化の改良方式として、ＭＨ符号化を行う時に、直前の白及び黒のラン長(ランレングス)を格納し、ある色のラン長が直前のラン長に一致する場合に所定の反復符号を生成することにより、圧縮率、処理スピードを改善する方式が特開平９-６５１４７公報に開示されている。
【０００４】
しかし、以上の符号化方式は、特定の画像に対しては高い圧縮率が達成できるものの、色が短い周期で頻繁に変化するような画像データに対しは十分な圧縮率を得ることは困難であった。
【０００５】
また、ＪＢＩＧは、エントロピー符号化に算術符号器であるＱＭ＿コーダーを使用しているため、コンテキストメモリやコンテキストを作成するためのラインメモリなどのハードウエアコストが嵩み、また、高速化が難しいという問題点もある。
【０００６】
また、特開平９-６５１４７公報に開示された符号化方式は、ラン長が一致したときの符号語のデータ量が、一致しないときの符号語のデータ量に比べて十分に少ない場合にのみ圧縮率が向上するものである。しかし、反復符号により短い符号語を割り当てることは、相対的に一致しないラン長の符号語を長くすることになるため、色が短い周期で頻繁に変化するような画像データに対しては十分な圧縮率を持つ符号セットを得ることが困難であるという問題がある。また、同公報に記載された実施例によれば符号セットはＭＨ符号に類似するものであるため、複数ビットを並列処理しようとすると大きなゲート数が必要となってしまうため、並列処理による高速性を期待することが困難である。
【０００７】
この問題点を解決する技術として、画像データを走査して得られる色毎の交互のラン長の数値列を、所定の符号列に変換して出力する符号化方法が特開平２０００−２１７００５公報に開示されている。この符号化方法では、所定のラン長数を入力した時に、そのラン長が同色の直前のラン長に一致する場合を一致事象と設定し、一致しない場合を不一致事象と設定し、一致事象が連続する数を反復数と設定し、一致事象または一致事象の連続が発生した場合には反復数に対応する反復数符号を生成し、不一致事象が発生した場合にはラン長の値を示す符号を生成する。
【０００８】
また、ラン長符号を圧縮、伸長する方式として特開平７−２３６０６５公報に述べられているように、１クロックごとに１ビットを比較し、ラン長をカウントアップする方式や、特開平７−２３６０６５公報に述べられているように、同じラン値のマッチングにより高速化する方式が知られている。
【０００９】
しかし、以上の方式は、画像データによっては符号化されたデータが、元データ以上のサイズに膨張することがある。このため、これらの画像圧縮装置を有するシステムは、最悪の圧縮率の場合、つまり圧縮によりデータ量が膨張する場合を考慮したメモリを備えなければならず、メモリコストが増大し、また、メモリアクセスの増加により処理スピードが低下するという問題があった。
【００１０】
このようなデータ量の膨張を防ぐため、特開平５−１８３７６０公報、特開平７−２６４４１７公報に記載されているように、ラインごとに、符号化されたデータと、元データのサイズを比較し、元データのサイズを超えた場合には、元データをメモリに格納する方式が知られている。ライン単位ではなく、ブロック単位で、符号化されたデータが元データ以上のサイズになったことを判断すると、元データをメモリに格納することにより、圧縮によるデータ量の膨張を防ぐ方式が特開平９−２４８９４３公報、特開平１０−１１７２８９公報などに開示されている。
【００１１】
しかし、このような方式は、ライン単位又はブロック単位で、元データと圧縮後のデータを格納するためのラインメモリ又はブロックメモリを必要とし、メモリコストが増加するという問題がある。また、各ラインごと、各ブロックごとに、区切って画像圧縮を行わねばならず、数ラインに渡る空欄もラインごとに初期的なデータ＋そのデータの長さなどの符号データとなるため、圧縮率の低下を招くという問題もある。
【００１２】
【発明が解決しようとする課題】
本発明の目的は、余分なラインメモリやブロックメモリを必要とすることなく、かつ、圧縮率の低下を招くことなく、データ量の膨張を回避し、効率的な画像圧縮処理が可能な画像圧縮装置及び方法と、同画像圧縮装置又は方法による符号化データの効率的な伸長処理が可能な画像伸長装置及び方法を提供することにある。また、本発明のもう１つの目的は、画像の圧縮／伸長処理に必要なメモリ量、画像の符号データの蓄積に必要なメモリ量を削減できるプリンタ、デジタル複写機などの画像形成装置を提供することにある。
【００１３】
【課題を解決するための手段】
上記目的を達成するため、請求項１記載の発明は、画像データを圧縮する画像圧縮装置であって、
画像データの連続した複数ビットの単位（以下、この単位を画像パターンと記す）及びそれに続く少なくとも１のビットが順次入力され、入力された各画像パターン内で閉じるラン長を算出する処理を行う第１の処理手段と、
前記第１の処理手段により算出されたラン長に基づき、繰り返しのないラン長と、繰り返しのあるラン長及びその繰り返し数を求める処理を行う第２の処理手段と、
前記第２の処理手段により求められたラン長及びラン長の繰り返し数に対する符号化処理を、画像パターンに対応したワード毎に行う第３の処理手段と、
前記第２の処理手段により求められたラン長及びラン長の繰り返し数に基づいて、前記第３の処理手段によって符号化されるワードの符号長を算出し、算出した符号長が所定の閾値を超えるか否かの判定を行う第４の処理手段とを有し、
前記第３の処理手段は、前記第４の処理手段によって符号長が前記閾値を超えないと判定されたワードに対する符号化処理では、該ワードにおけるラン長をランレングス符号により、ラン長の繰り返し数を反復符号により、それぞれ符号化するが、前記第４の処理手段によって符号長が前記閾値を超えると判定されたワードに対する符号化処理ではパス符号化を行う、ことを特徴とする。
【００１４】
請求項２記載の発明は、画像データを圧縮する画像圧縮装置であって、
画像データの連続した複数ビットの単位（以下、この単位を画像パターンと記す）及びそれに続く少なくとも１のビットが順次入力され、入力された各画像パターン内で閉じるラン長を算出する処理を行う第１の処理手段と、
前記第１の処理手段により算出されたラン長に基づき、繰り返しのないラン長と、繰り返しのあるラン長及びその繰り返し数を求める処理を行う第２の処理手段と、
前記第２の処理手段により求められたラン長及びラン長の繰り返し数に対する符号化処理を、画像パターンに対応したワード毎に行う第３の処理手段と、
前記第２の処理手段により求められたラン長及びラン長の繰り返し数に基づいて、前記第３の処理手段によって符号化されるワードの符号長を算出し、算出した符号長が所定の閾値を超えるか否かの判定を行う第４の処理手段とを有し、
前記第３の処理手段は、前記第４の処理手段によって符号長が前記閾値を超えないと判定されたワードに対する符号化処理では、該ワードにおけるラン長をランレングス符号により、ラン長の繰り返し数を反復符号により、それぞれ符号化するが、前記第４の処理手段によって符号長が前記閾値を超えると判定されたワードに対する符号化処理ではパス符号化を行い、
前記第１の処理手段は、入力された画像パターン内で閉じないラン長を累積加算する手段を備えることにより、複数の画像パターンにまたがるラン長を算出する、ことを特徴する。
【００１５】
請求項３記載の発明は、請求項１又は２記載の発明に係る画像圧縮装置であって、
前記第４の処理手段は、前記第２の処理手段により求められたラン長及びラン長の繰り返し数に基づき算出した、前記第３の処理手段によって符号化されるワードの符号長を、該ワードにおいて閉じていない途中のラン長及びラン長の繰り返し数の符号の分を含めるように補正する手段を有し、該補正する手段によって補正後の符号長が前記閾値を超えるか否かの判定を行うことを特徴とする。
【００１６】
請求項４記載の発明は、請求項３記載の発明に係る画像圧縮装置であって、
さらに、前記第1の処理手段によって算出されたラン長に基づき、前記第３の処理手段によって符号化されるワードの次のワードでパス符号化が行なわれるか否かの判定を行う第５の処理手段を有し、
前記第４の処理手段における前記補正する手段による符号長の補正量が、前記第５の処理手段による判定結果に応じて制御される、ことを特徴とする。
【００１７】
請求項５記載の発明は、画像形成装置であって、
画像データを圧縮する請求項１、２、３又は４記載の発明に係る画像圧縮装置と、
前記画像圧縮装置により圧縮された符号データを記憶する記憶手段と、
前記記憶手段に記憶されている符号データを伸長する画像伸長手段と、
前記画像伸長手段により伸長された画像データを作像する作像手段とを有することを特徴とする。
【００１８】
請求項６記載の発明は、画像データを圧縮する画像圧縮方法であって、
画像データの連続した複数ビットの単位（以下、この単位を画像パターンと記す）及びそれに続く少なくとも１のビットが順次入力され、入力された各画像パターン内で閉じるラン長を算出する処理を行う第１の処理工程と、
前記第１の処理工程により算出されたラン長に基づき、繰り返しのないラン長と、繰り返しのあるラン長及びその繰り返し数を求める処理を行う第２の処理工程と、
前記第２の処理工程により求められたラン長及びラン長の繰り返し数に対する符号化処理を、画像パターンに対応したワード毎に行う第３の処理工程と、
前記第２の処理工程により求められたラン長及びラン長の繰り返し数に基づいて、前記第３の処理工程によって符号化されるワードの符号長を算出し、算出した符号長が所定の閾値を超えるか否かの判定を行う第４の処理工程とを有し、
前記第３の処理工程は、前記第４の処理工程によって符号長が前記閾値を超えないと判定されたワードに対する符号化処理では、該ワードにおけるラン長をランレングス符号により、ラン長の繰り返し数を反復符号により、それぞれ符号化するが、前記第４の処理工程によって符号長が前記閾値を超えると判定されたワードに対する符号化処理ではパス符号化を行う、ことを特徴とする。
【００１９】
請求項７記載の発明は、画像データを圧縮する画像圧縮方法であって、
画像データの連続した複数ビットの単位（以下、この単位を画像パターンと記す）及びそれに続く少なくとも１のビットが順次入力され、入力された各画像パターン内で閉じるラン長を算出する処理を行う第１の処理工程と、
前記第１の処理工程により算出されたラン長に基づき、繰り返しのないラン長と、繰り返しのあるラン長及びその繰り返し数を求める処理を行う第２の処理工程と、
前記第２の処理工程により求められたラン長及びラン長の繰り返し数に対する符号化処理を、画像パターンに対応したワード毎に行う第３の処理工程と、
前記第２の処理工程により求められたラン長及びラン長の繰り返し数に基づいて、前記第３の処理工程によって符号化されるワードの符号長を算出し、算出した符号長が所定の閾値を超えるか否かの判定を行う第４の処理工程とを有し、
前記第３の処理工程は、前記第４の処理工程によって符号長が前記閾値を超えないと判定されたワードに対する符号化処理では、該ワードにおけるラン長をランレングス符号により、ラン長の繰り返し数を反復符号により、それぞれ符号化するが、前記第４の処理工程によって符号長が前記閾値を超えると判定されたワードに対する符号化処理ではパス符号化を行い、
前記第１の処理工程は、入力された画像パターン内で閉じないラン長を累積加算する工程を含むことにより、複数の画像パターンにまたがるラン長を算出することを特徴する。
【００２０】
請求項８記載の発明は、請求項６又は７記載の発明に係る画像圧縮方法であって、
前記第４の処理工程は、前記第２の処理工程により求められたラン長及びラン長の繰り返し数に基づき算出した、前記第３の処理工程によって符号化されるワードの符号長を、該ワードにおいて閉じていない途中のラン長及びラン長の繰り返し数の符号の分を含めるように補正する工程を含み、該補正する工程によって補正後の符号長が前記閾値を超えるか否かの判定を行うことを特徴とする。
【００２１】
請求項９記載の発明は、請求項８記載の発明に係る画像圧縮方法であって、
さらに、前記第1の処理工程によって算出されたラン長に基づき、前記第３の処理工程によって符号化されるワードの次のワードでパス符号化が行なわれるか否かの判定を行う第５の処理工程を有し、
前記第４の処理工程における前記補正する工程による符号長の補正量が、前記第５の処理工程による判定結果に応じて制御される、ことを特徴とする。
【００２２】
【発明の実施の形態】
以下、図面を参照して、本発明の実施の形態を説明する。ここでは、本発明を多色画像形成装置に適用した例について説明する。
【００２３】
《多色画像形成装置の概略構成》
図１は、本発明を実施した多色画像形成装置の全体的構成の一例を示す概略断面図である。
【００２４】
この多色画像形成装置において、１は像担持体としてのベルト状の感光体であり、この感光体１は回転ローラ２，３により回動可能に支持され、各回転ローラ２，３の駆動により矢示Ａ方向に回動される。感光体１の外周部には、帯電手段としての帯電装置４，除電ランプＬ，感光体１用のクリーニングブレード１５Ａが配置されている。帯電装置４の下流位置には、光書込手段としてのレーザ書き込みユニット５より発せられるレーザ光が照射される光書き込み部がある。
【００２５】
この光書き込み部より下流位置に、複数の現像ユニット（現像手段）が切り換え自在に支持された多色現像装置６が配置されている。この多色現像装置６は、収容するトナーの色毎に、イエロー現像ユニット，マゼンダ現像ユニット，シアン現像ユニットを備えている。多色現像装置６の上部には、黒色トナーを収容したブラック現像ユニット７が備えられている。
【００２６】
これら各現像ユニットのいずれか１つが対応する色の現像タイミングに同期し、現像可能な位置に移動する。多色現像装置６は、円周上１２０度の回転によっていずれかの現像ユニットを選択する機能を有している。そして、これらの現像ユニットが稼動するときには、ブラック現像ユニット７は感光体１より離間した位置に移動する。その移動は、カム４５の回転により行なわれる。
【００２７】
レーザ書き込みユニット５は、図示しないレーザ光源から複数色の画像形成信号（書き込み情報）に応じたレーザ光を順次発生させ、ポリゴンモータ５Ａによって回転させられるポリゴンミラー５Ｂを用いて、そのレーザ光を周期的に偏向させ、ｆθレンズ５Ｃ及びミラー５Ｄなどを経て、帯電された感光体１の表面を走査し、その表面に静電潜像を形成させる。
【００２８】
感光体１の表面に形成される静電潜像は、対応する現像ユニットからのトナーによって現像され、トナー画像が形成・保持される。中間転写ベルト１０は、感光体１に隣接しており、回転ローラ１１，１２により矢示Ｂ方向に回動可能に支持されている。感光体１上のトナー画像は、中間転写ベルト１０の裏側にある転写ブラシ（第１の転写手段）１３により、中間転写ベルト１０の表面に転写される。
【００２９】
感光体１の表面は、１色毎にクリーニングブレード１５Ａによりクリーニングされ、所定色のトナー画像が形成される。そして、その都度、中間転写ベルト１０の１回動毎に、中間転写ベルト１０の表面の同じ位置に感光体１上のトナー画像が転写されるとこにより、中間転写ベルト１０上に複数色のトナー画像が重ね合わせられて保持される。その後、そのトナー画像は用紙やプラスチック等の記録媒体に転写される。
【００３０】
用紙への転写に際しては、給紙装置（給紙カセット）１７に収納されている用紙が給紙ローラ１８によって繰り出されて搬送ローラ１９により搬送され、レジストローラ対２０に付き当てられた状態で一旦停止させられた後、トナー画像の転写位置が正しくなるようにタイミングがとられて中間転写ベルト１０と転写ローラ（第２の転写手段）１４のニップに再搬送される。そして、その用紙は転写ローラ１４の作用により中間転写ベルト１０上の複数色のトナー画像が一括転写された後、定着装置５０に送られ、そこでトナー像が定着された後、排紙ローラ対５１により本体フレーム９の上部の排紙スタック部５２に排出される。
【００３１】
中間転写ベルト１０には、回転ローラ１１の部位に中間転写ベルト１０用のクリーニング装置１６が設けられ、クリーニングブレード１６Ａがクリーニングブレード接離用アーム１６Ｃを介して接離自在の構成となっている。このクリーニングブレード１６Ａは、感光体１からトナー画像を受け取る工程では中間転写ベルト１０から離れ、中間転写ベルト１０より用紙にトナー画像が転写された後に接触し、用紙にトナー画像が転写された後の残留トナーをかきとる。
【００３２】
感光体１用のクリーニングブレード及び中間転写ベルト１０用のクリーニングブレード１６Ａによってかきとられた廃トナーは、回収容器１５に収納される。この回収容器１５は適宜交換される。中間転写ベルト１０用のクリーニング装置１６の内部に設けられたオーガ１６Ｂが、クリーニングブレード１６Ａでかきとられた廃トナーを搬送し、図示しない搬送手段で回収容器１５に送られる。
【００３３】
感光体１，帯電装置４，中間転写ベルト１０，クリーニング装置１６，用紙搬送路を形成する搬送ガイド３０などは、ユニット化されたプロセスカートリッジ３１に一体的に組み込まれ、寿命到来時に交換できるように構成されている。プロセスカートリッジ３１のほかに、多色現像装置６，ブラック現像ユニット７なども寿命到来時に交換するが、その交換やジャム紙の処理を容易にするため、本体の一部の前フレーム８は支軸９Ａを中心に開閉可能に回動できる構造としてある。
【００３４】
多色画像形成装置の内部には電装・制御装置６０も収納され、その上方には、機内の温度過昇防止のために排風するファン５８が備えられている。また、プロセスカートリッジ３１の上方には、給紙装置（給紙カセット）１７とは別に比較的小規模な給紙装置５９が備えられている。なお、この実施形態では、中間転写体として中間転写ベルト１０を使用したが、これに限らず、例えば中間転写ドラムを使用することもできる。
【００３５】
《電装・制御装置６０》
前記多色画像形成装置の電装・制御装置６０について説明する。図２は、電装・制御装置の構成の一例を示すブロック図である。
【００３６】
図２において、１０１は主にメモリ１１０を操作をするメモリアクセラレータである。このメモリアクセラレータ１０１は、ＣＰＵ１０８の制御下で、ネットワークを介してホストコンピュータから画像データを受け取り、その符号化などの処理を行い、結果データをメモリ１１０へ転送し、また、取り込んだ画像データをプリンタエンジンコントローラ１１２へ転送してプリンタエンジン１１３でプリントアウトさせる等の動作を行う。この様な動作の際に、各ホストとの通信、メモリ１１０の制御、パネル１１５から操作された情報の入力、プリンタエンジンコントローラ１１２などの周辺機器とのバスコントロールなどを行う。メモリ１１０は、画像データとその符号データ、ＣＰＵ１０８のプログラムなどの格納に利用される。
【００３７】
メモリアクセラレータ１０１は、バス１１６に接続されたパネルコントローラ１１４、プリンタエンジンコントローラ１１２、その他図示しない周辺機器のコントローラとのバス調停を行うバスコントローラ１０２と、メモリ１１０と内部の各種コントローラ間の調停を行うメモリアービター１０３と、各種のプログラムや文字などのフォント情報を格納しているＲＯＭ１０５などのインターフェースであるローカルインターフェース（I/F）１０４と、ＣＰＵ１０８とのインターフェースであるＣＰＵインターフェース１０７と、メモリ１１０のアクセス制御を行うメモリコントローラ１０９と、ネットワークとの通信の制御を行う通信コントローラ１１１と、メモリ１１０などから取り込んだ画像データ／符号データの圧縮／伸長を行うための本発明による画像圧縮／伸長装置１０６と、メモリアービター１０３に接続された各コントローラ間のダイレクトメモリアクセス（ＤＭＡ）を行うＤＭＡコントローラ１１７などから構成される。パネル１１５は、ユーザが多色画像形成装置に対し操作指示などを入力するために利用される。
【００３８】
圧縮／伸長装置１０６は、圧縮処理のための画像圧縮装置１０６ｅと伸長処理のための画像伸長装置１０６ｄからなる複合装置である。ただし、画像圧縮装置１０６ｅと画像伸長装置１０６ｄのハードウェアが必ずしも完全に独立している必要はなく、一部のハードウェアが圧縮処理と伸長処理に共用されるような構成とすることも可能であることは当然である。
【００３９２】
《画像圧縮装置１０６ｅ》
以下、本発明の画像圧縮装置１０６ｅの一実施例について説明するが、その構成の説明に先立って、符号フォーマットと符号化例について説明する。
【００４０】
本実施例においては、図１１に示すような４ビットごとのフォーマットの符号を出力する（ただし、符号のフォーマットは、これに限られるものではなく、何ビットごとでも良い）。図１１に示すように９種類の符号形式がある。Ｌ１〜Ｌ３はラン長（ランレングス）を表すランレングス符号であり、Ｎ１〜Ｎ３は繰り返し数を表す反復符号である。Ｐ０，Ｐ１はパス(PASS)符号である。本発明においては、最悪圧縮時の符号量の膨張を抑制するため、符号化しようとするワードにおいて、符号量が所定の閾値を越えたるときには、パス(PASS)符号化を行い、ランレングス符号、反復符号に代えてPASS符号を生成する。
【００４１】
ランレングス符号のＬ１符号は、４ビット幅であり、１から８までのラン長を表現する。ただし、Ｌ１符号の表す数値はラン長から１を引いた値である。Ｌ２符号は８ビット幅であり、９から４０までのラン長を表現する。ただし、Ｌ２符号の下位５ビットの表す数値は、ラン長から９を引いた値である。Ｌ３符号は４の倍数ビット（８ビット以上）のビット幅であり、F0〜Fnを連接して表される数値は、ラン長から４０を引いた値である。
【００４２】
反復符号のＮ１符号は４ビット幅であり、繰り返し数１を表す。Ｎ２符号は４ビット幅であり、繰り返し数２を表す。Ｎ３符号は、８ビット以上の４の倍数ビットのビット幅であり、F0〜Fnを連接して表される数値は、繰り返し数から４を引いた値である。繰り返し数３は、Ｎ１符号とＮ２符号の組み合わせによって符号化される（その符号量はＮ３符号による最低符号量と同じである）。
【００４３】
PASS符号のＰ０，Ｐ１符号は、１２ビット幅であり、その５ビット目から８ビット目に８ビット画像データの上位４ビット(LEFT)、９ビット目から１２ビット目に８ビット画像データの下位４ビット(RIGHT)が格納される。
【００４４】
PASS符号化の例を図１２及び図１３に示し説明する。本発明では、ラン長とその繰り返し数を符号化するが、符号量の膨張を防止するため、各ワードにおける符号量（符号長）が所定の閾値(PASS符号化閾値)を越えた場合にPASS符号を生成する。この例では、PASS符号化閾値は８ビットデータの１．５倍としている。
【００４５】
例１では、４番目のワードの符号量が６である。これは、１つの符号は４ビットであるため６×４＝２４ビットであり、８ビットデータの３倍の符号量となるので、下段のようにPASS符号化され、符号量は３に抑えられる。
【００４６】
例２は、PASS符号化するワードをラン長がまたいだ例である。この例でも、４番目のワードの符号量が５であり、これは２０ビットで８ビットデータの２．５倍の符号量となるため、下段のようにPASS符号化される。この時、前のラン長がPASS符号により切断され、前のワードでは新たなラン長”３”が生成される。
【００４７】
例３は、PASS符号化するワードを繰り返しがまたいだ例である。この例でも、４番目のワードの符号量が４であり、これは１６ビットで８ビットデータの２．０倍の符号量となるため下段のようにPASS符号化される。この時、前の繰り返しがPASS符号により切断され、前のワードでは新たな繰り返し数”５”が生成される。
【００４８】
例４は、PASS符号化するワードにより繰り返しが生成された例である。この例でも、４番目のワードの符号量が５であり、これは２０ビットで８ビットデータの２．５倍の符号量となるため、下段のようにPASS符号化される。この時、前のランレングスがPASS符号により切断され、前のワードでは新たな繰り返し数”５”が生成される。
【００４９】
図３を参照する。図３は、画像圧縮装置１０６ｅの全体構成を示すブロック図である。図３において、２０２は画像読み込み部であり、メモリ１１０より、並列処理されるビット数単位で画像データ（２値画像データ）を読み込む。本実施例の画像圧縮装置１０６ｅは、８ビット単位で並列処理するので、画像読み込み部２０２は８ビット単位で画像データを読み込む。本明細書においては、８ビットの画像データを画像パターンもしくは単にパターンとも呼ぶ。なお、カラー画像データを扱う場合には、各色版ごとに別々に処理される。
【００５０】
２０３はラン長処理装置であり、画像読み込み部２０２により読み込まれた画像データを、ラン長（ランレングス）、すなわち０値のラン又は１値のランの長さに変換する。
【００５１】
２０４はNEXTワードチェック処理装置であり、次のワードの符号長や、また全て繰り返しであるかなどの条件を求め、今のワードのPASS符号化の判定における緩和信号を求める。
【００５２】
２０５はPASS判定＆繰り返し処理装置であり、ラン長処理装置２０３より転送されるラン長の繰り返しを計算し、複数の繰り返し数とラン長を求め、求めたラン長と繰り返し数から符号長を求め、その符号長をPASS符号化閾値と比較することによりPASS符号化判定を行う。この時に、NEXTワードチェック処理装置２０４からPASS判定の緩和信号を受け取り、それをPASS符号化判定に反映させる。そして、判定結果と、実データと、求めた複数のラン長と繰り返し数を符号化処理装置２０６へ転送する。符号化処理装置２０６は、PASS判定＆繰り返し処理装置２０５より転送されるラン長と繰り返し数を符号化する。２０７は符号書き込み部であり、符号化処理装置２０６より出力される符号データをメモリ１１０に書き込む。
【００５３】
以下、画像圧縮装置１０６ｅを構成する前記各ブロックについて詳細に説明する。ただし、前述のように、８ビット並列に処理する場合である。
【００５４】
《画像圧縮装置の画像読み込み部２０２》
図４は、画像読み込み部２０２のブロック図である。図４において、２１１はメモリ１１０より読み込んだ８ビットの画像データを格納するレジスタである。２１２はレジスタ２１１にパイプライン接続されたレジスタである。レジスタ２１２に格納されたデータが現在処理されるデータであり、IDOT[7:0]としてラン長処理装置２０３に入力される。レジスタ２１１に格納されたデータは次に処理されるデータであり、そのＭＳＢ（次のデータの最初のビット）がNDOTとしてラン長処理装置２０３へ入力される。２１３はメモリ１１０の読み出しアドレスを生成するアドレス生成器である。
【００５５】
《画像圧縮装置のラン長処理装置２０３》
図５はラン長処理装置２０３のブロック図である。このラン長処理装置２０３は、画像読み込み部２０２から入力される８ビットの画像パターン（IDOT）と次のパターンの最初のビット（NDOT）に基づいて、２つのランカウント２２１，２２２により、IDOTの上位４ビット（IDOT［7:4］）と下位４ビット（IDOT[3:0]）のそれぞれごとに、複数のラン長と、そのラン長が有効か否か（閉じているか否か）を示すマスク値と、次に繰り越されるラン長をそれぞれ求め、それらラン長を、Leftラン値生成装置２２３及びRightラン値生成装置２２４により、８ビットでの８個のラン長の位置へ修正し、さらに、ラン値合成装置２２６により、同じ位置のラン長を加算して１組の８個のラン長を求める。さらに、加算器２２７，２２８からなる累積加算処理装置で、処理対象のパターン（IDOT）での最初のラン長(RUN７)に今まで繰り越されたラン長を加算するか、続けて繰り越すかを判断することにより、閉じた複数のラン長とマスク値を生成する。以下、各部について詳細に説明する。
【００５６】
ランカウント２２１は、現在処理対象となっている８ビットの画像パターンの上位４ビット(IDOT)と、下位４ビットの最初の１ビット(NDOTとして)を受け取り、最大４個のラン長(LRUN3〜LRUN0)と、それら各ラン長が有効か（閉じているか）無効かを示すフラグであるマスク値（LDMASK３〜LDMASK0）を出力する。また、図中では省略されているが、次に繰り越されるラン長(LRUNX)と、４ビット(IDOT)全てが０又は１で、かつ、下位の最初のビット(NDOT)が、それと同じ値であるときに１となるフラグ(LAFL)を出力する。
【００５７】
ランカウント２２２は、現在処理対象となっている８ビットの画像パターンの下位４ビット(IDOT)と、次の画像パターンの最上位の１ビット(NDOTとして)を受け取り、最大４個のラン長(RRUN3〜RRUN0)と、それら各ラン長が有効か無効かを示すフラグであるマスク値（RDMASK３〜RDMASK0）を出力する。また、図中では省略されているが、次に繰り越されるラン長(RRUNX)と、４ビット(IDOT)全てが０又は１で、かつ、次の画像パターンの最上位ビット(NDOT)が、それと同じ値であるときに１となるフラグ(RAFL)を出力する。
【００５８】
各ランカウント２２１，２２２の処理フローを図１５及び図１６に示す。このフローチャートはランカウント２２１，２２２に共通しているため、ラン長、フラグは、その先頭の文字Ｌ，Ｒが除かれた形で表記されている。
【００５９】
各ランカウントは、IDOTの４ビットが”００００”であり、かつ、NDOTの１ビットが”０”であるか判定し（ステップＳ１）、条件が成立するときにはラン長RUN3〜RUN0＝ｘ（ｘは符号を出力しないことを意味する、以下同様）、マスク値DMASK3〜DMASK0＝０（無効）、フラグAFL＝１、繰り越されるラン長RUNX＝４を出力し（ステップＳ２）、現在の４ビットに対する処理を終了（リターン）する。
【００６０】
ステップＳ１で条件が不成立のときには、IDOTの４ビットが”０００１”で、かつ、NDOTの１ビットが”１”であるか判定する（ステップＳ３）。条件が成立したときには、ラン長RUN3＝３、RUN2〜RUN0＝ｘ、マスク値DMASK3＝１、DMASK2〜DMASK0＝０、繰り越されるラン長RUNX＝１、フラグAFL＝０に設定し（ステップＳ４）、処理を終了する。条件が不成立ならばステップＳ５に進み、条件判定を行う。以下、図示の条件判定が条件成立まで順に行われ、成立した条件に対応した処理がなされる。なお、条件の判定順は図示した順に限定されない。
【００６１】
図５に戻り説明を続ける。Leftラン値生成装置２２３は、ランカウント２２１からのラン長LRUN3〜LRUN0、マスク値LDMASK3〜LDMASK0、繰り越されるラン長LRUNX（不図示）及びフラグLAFL（不図示）、並びに、ランカウント２２２からのマスク値RDMASK3〜RDMASK0及びフラグRAFL（不図示）を受け取り、８ビット長での最大８個のラン長の場合の位置を計算し、最大８個のラン長RUN7L〜RUN0Lと繰り越されるラン長RUNLX（不図示）を求め出力する。
【００６２】
Rightラン値生成装置２２４は、同様に、ランカウント２２２からのラン長RRUN3〜RRUN0、マスク値RDMASK3〜RDMASK0、繰り越されるラン長RRUNX（不図示）及びフラグRAFL（不図示）、並びに、ランカウント２２１からのマスク値LDMASK3〜LDMASK0及びフラグLAFL（不図示）を受け取り、８ビット長での最大８個のラン長の場合の位置を計算し、最大８個のラン長RUN7RL〜RUN0Rと繰り越されるラン長RUNRX（不図示）を求めて出力する。また、フラグLAFL,RAFLが共に”１”のときに”１”、それ以外では”０”となるフラグAFL（不図示）も出力する。
【００６３】
Rightラン値生成装置２２４の処理フローを図１９及び図２０に示す。フラグRAFLとフラグLAFLが共に”１”であるか判定する（ステップＳ２０１）。つまり８ビットの画像パターンがオール”０”又は”１”であるか判定する。
【００６４】
この条件が成立するならば、ラン長RUN7R＝８、RUN6R〜RUN0R＝０、繰り越されるラン長RUNRX＝RRUNX、フラグAFL＝１をそれぞれ出力し（ステップＳ２０２）、現在の画像パターンの処理を終了（リターン）する。つまり、ラン長は終端していないため、そのラン長（つまり全ビット数の８）をRUNRXに設定する。
【００６５】
ステップＳ２０１の条件が不成立ならば、ラン長のマスク値LDMASK3〜LDMASK0＝０、かつ、RDMASK3＝１、かつ、RDMASK2〜RDMASK0＝０であるか判定する（ステップＳ２０３）。つまり、上位４ビット(LEFT)にラン長が存在せず、下位４ビット(RIGHT)に１つのラン長が存在することを判定する。
【００６６】
この条件が成立するならば、ラン長RUN7R＝RRUN3、RUN6R〜RUN0R＝０、繰り返されるラン長RUNRX＝RRUNX、フラグAFL＝０をそれぞれ出力し（ステップＳ２０４）、現在の画像パターンの処理を終了（リターン）する。つまり、RIGHTに存在する１つのラン長をRUN7Rに設定し、終端していない途中のラン長の値をRUNRXに設定する。
【００６７】
ステップＳ２０３の条件が不成立ならば、ステップＳ２０５で、LEFTにラン長が存在せず、RIGHTに２つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２０６で、その２つのラン長を設定し、RUNRXに終端していない途中のラン長を設定する。
【００６８】
ステップＳ２０５の条件が成立しないならば、ステップＳ２０７で、LEFTにラン長が存在せず、RIGHTに３つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２０８で、その３つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００６９】
ステップＳ２０７の条件が不成立ならば、ステップＳ２０９で、LEFTにラン長が存在せず、RIGHTに４つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２１０で、その４つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００７０】
ステップＳ２０９の条件が不成立ならば、ステップＳ２１１で、LEFTにラン長が１つ存在し、RIGHTにラン長が存在しないか判定する。この条件が成立するならば、ステップＳ２１２で、その１つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００７１】
ステップＳ２１１の条件が不成立ならば、ステップＳ２１３で、LEFTにラン長が１つ存在し、RIGHTに１つのラン長が存在することを判定する。この条件が成立するならば、ステップＳ２１４で、その１つのラン長を１つおいた位置に設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００７２】
ステップＳ２１３の条件が不成立ならば、ステップＳ２１５で、LEFTにラン長が１つ存在し、RIGHTに２つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２１６で、その２つのラン長を１つおいた位置に設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００７３】
ステップＳ２１５の条件が不成立ならば、ステップＳ２１７で、LEFTにラン長が１つ存在し、RIGHTに３つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２１８で、１つおいた位置に、その３つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００７４】
ステップＳ２１７の条件が不成立ならば、ステップＳ２１９で、LEFTにラン長が１つ存在し、RIGHTに４つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２２０で、１つおいた位置に、その４つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００７５】
ステップＳ２１９の条件が不成立ならば、ステップＳ２２１で、LEFTにラン長が２つ存在し、RIGHTにラン長が存在しないか判定する。この条件が成立するならば、ステップＳ２２２で、RUNRXに終端していない途中のラン長の値を設定する。
【００７６】
ステップＳ２２１の条件が不成立ならば、ステップＳ２２３で、LEFTにラン長が２つ存在し、RIGHTに１つのラン長が存在することを判定し、この条件が成立するならば、ステップＳ２２４で、２つおいた位置に、その１つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００７７】
ステップＳ２２３の条件が不成立ならば、ステップＳ２２５で、LEFTにラン長が２つ存在し、RIGHTに２つのラン長が存在するか判定し、その条件が成立するならば、ステップＳ２２６で、２つおいた位置に、その２つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００７８】
ステップＳ２２５の条件が不成立ならば、ステップＳ２２７で、LEFTにラン長が２つ存在し、RIGHTに３つのラン長が存在するか判定し、この条件が成立するならば、ステップＳ２２８で、２つおいた位置に、その３つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００７９】
ステップＳ２２７の条件が不成立ならば、ステップＳ２２９で、LEFTにラン長が２つ存在し、RIGHTに４つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２３０で、２つおいた位置に、その４つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００８０】
ステップＳ２２９の条件が不成立ならば、ステップＳ２３１で、LEFTにラン長が３つ存在し、RIGHTにラン長が存在しないか判定する。この条件が成立するならば、ステップＳ２３２で、RUNRXに終端していない途中のラン長の値を設定する。
【００８１】
ステップＳ２３１の条件が不成立ならば、ステップＳ２３３で、LEFTにラン長が３つ存在し、RIGHTに１つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２３４で、３つおいた位置に、その１つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００８２】
ステップＳ２３３の条件が不成立ならば、ステップＳ２３５で、LEFTにラン長が３つ存在し、RIGHTに２つのラン長が存在するか判定し、この条件が成立するならば、ステップＳ２３６で、３つおいた位置に、その２つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００８３】
ステップＳ２３５の条件が不成立ならば、ステップＳ２３７で、LEFTにラン長が３つ存在し、RIGHTに３つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２３８で、３つおいた位置に、その３つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００８４】
ステップＳ２３７の条件が不成立ならはせ、ステップＳ２３９で、LEFTにラン長が３つ存在し、RIGHTに４つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２４０で、３つおいた位置に、その４つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００８５】
ステップＳ２３９の条件が不成立ならば、ステップＳ２４１で、LEFTにラン長が４つ存在し、RIGHTにラン長が存在しないか判定する。この条件が成立するならば、ステップＳ２４２で、RUNRXに終端していない途中のラン長の値を設定する。
【００８６】
ステップＳ２４１の条件が不成立ならば、ステップＳ２４３で、LEFTにラン長が４つ存在し、RIGHTに１つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２４４で、４つおいた位置に、その１つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００８７】
ステップＳ２４３の条件が不成立ならば、ステップＳ２４５で、LEFTにラン長が４つ存在し、RIGHTに２つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２４６で、４つおいた位置に、その２つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００８８】
ステップＳ２４５の条件が不成立ならば、ステップＳ２４７で、LEFTにラン長が４つ存在し、RIGHTに３つのラン長が存在するか判定する。この条件が成立するならば、ステップＳ２４８で、４つおいた位置に、その３つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００８９】
ステップＳ２４７の条件が不成立ならば、ステップＳ２４９で、LEFTにラン長が４つ存在し、RIGHTに４つのラン長が存在することを判定する。この条件が成立するならば、ステップＳ２５０で、４つおいた位置に、その４つのラン長を設定し、RUNRXに終端していない途中のラン長の値を設定する。
【００９０】
Leftラン値生成装置２２３の処理内容をフローチャートとして図２１に示す。フラグRAFL,LAFLが共に”１”であるか判定する（ステップＳ３０１）。つまり、現在処理対象の８ビット画像パターンがオール”０”又はオール”１”であるかの判定を行う。ステップ３０１の条件が成立したときには、つまり、上位４ビット(LEFT)には終端するラン長がないときには、ラン長RUN7L〜RUN0L＝０、繰り返されるラン長RUNLX＝０をそれぞれ出力し（ステップＳ３０２）、現在の画像パターンの処理を終了（リターン）する。なお、この４ビットのラン長４がRUNLXに設定されないのは、そのラン長がRightラン値生成装置２２４で処理されるためである。
【００９１】
ステップＳ３０１の条件が不成立ならば、ラン長のマスク値LDMAX3〜LDMAX0＝０であるか判定する（ステップＳ３０３）。条件成立ならば、上位４ビット(LEFT)には終端するラン長がないので、ラン長RUN7L〜RUN0L＝０、繰り返されるラン長RUNLX＝０をそれぞれ出力し（ステップＳ３０４）、現在の画像パターンの処理を終了（リターン）する。
【００９２】
ステップＳ３０３の条件が不成立ならば、マスク値LDMASK3＝１かつLDMASK2〜LDMASK0＝０かつRDMASK3〜RDMASK0＝０であるか判定する（ステップＳ３０５）。つまり、上位４ビット(LEFT)に１つのラン長が存在し、下位４ビット(RIGHT)に終端するラン長が存在しないことを判定している。この条件が成立するならば、ラン長RUN7L＝LRUN3、RUN6L＝LRUNX、RUN5L〜RUN0L＝０、繰り越されるラン長RUNLX＝LRUNXをそれぞれ出力し（ステップＳ３０６）、処理を終了する。
【００９３】
ステップＳ３０５の条件が不成立の場合には、ステップＳ３０７で、LEFTに１つのラン長が存在し、RIGHTに終端するラン長が１つ以上存在することを判定する。この条件が成立したときには、ステップＳ３０８で、１つのラン長を設定し、かつ２つ目のラン長にLEFTの終端していない途中のラン長の値を設定する。
【００９４】
ステップＳ３０７の条件が不成立ならば、ステップＳ３０９で、LEFTに２つのラン長が存在し、RIGHTに終端するラン長が存在しないことを判定する。この条件が成立するならば、ステップＳ３１０で、その２つのラン長を設定し、継続するラン長をRUNLXに設定する。
【００９５】
ステップＳ３０９の条件が不成立ならば、ステップＳ３１１で、LEFTに２つのラン長が存在し、RIGHTに終端するラン長が１つ以上存在することか判定する。この条件が成立するならば、ステップＳ３１２で、その２つのラン長を設定し、かつ、３つ目のラン長にLEFTの終端していない途中のラン長を設定する。
【００９６】
ステップＳ３１１の条件が不成立ならば、ステップＳ３１３で、LEFTに３つのラン長が存在し、RIGHTに終端するラン長が存在しないことを判定する。この条件が成立するならば、ステップＳ３１４で、その３つのラン長を設定し、継続するラン長をRUNLXに設定する。
【００９７】
ステップＳ３１３の条件が不成立ならば、ステップＳ３１５で、LEFTに３つのラン長が存在し、RIGHTに終端するラン長が１つ以上存在することを判定する。この条件が成立するならば、ステップＳ３１６で、その３つのラン長を設定し、かつ、４つ目のラン長にLEFTの終端していない途中のラン長の値を設定する。
【００９８】
ステップＳ３１５の条件が不成立ならば、ステップＳ３１７で、LEFTに１つのラン長が存在し、RIGHTに終端するラン長が存在しないことを判定する。この条件が成立するならば、ステップＳ３１８で、その１つのラン長を設定し、継続するラン長をRUNLXに設定する。
【００９９】
ステップＳ３１７の条件が不成立ならば、ステップＳ３１９で、LEFTに４つのラン長が存在し、RIGHTに終端するラン長が１つ以上存在することを判定する。この条件が成立するならば、ステップＳ３２０で、その４つのラン長を設定し、かつ、５つ目のラン長にLEFTの終端していない途中のラン長の値を設定する。
【０１００】
図５に戻って説明する。２２５はマスク値合成装置であり、ランカウント２２１からのマスク値LDMASK3〜LDMASK0と、ランカウント２２２からのマスク値RDMASK3〜RDMASK0とを合成し、８ビット長での８個のマスク値DMASK7〜DMASK0を求める。このマスク値合成装置２２５には、ランカウント２２１，２２２から出力されるフラグLAFL,RAFL（不図示）も入力される。
【０１０１】
このマスク値合成装置２２５の処理内容をフローチャートとして図１７及び図１８に示す。フラグRAFL,LAFLが共に”１”であるか判定し（ステップＳ１０１）、条件成立ならばマスク値DMASK7〜DMASK0＝０を出力し（ステップＳ１０２）、処理を終了する。条件不成立ならば、LDMASK3＝０かつRDMASK2＝０であるか判定し（ステップＳ１０３）、条件成立ならばDMASK7＝１、DMASK6〜DMASK0＝０を出力し（ステップＳ１０４）、処理を終了する。条件不成立ならば、図示の条件判定が条件成立まで順に行われ、成立した条件に対応した処理がなされる。なお、条件の判定順は図示した順に限定されない。
【０１０２】
再び図５において、ラン値合成装置２２６は、Leftラン値生成装置２２３からの最大８個のラン長RUN7L〜RUN0L、繰り越されるラン長RUNXL（不図示）と、Rightラン値生成装置２２４からの最大８個のラン長RUN7R〜RUN0R、繰り越されるラン長RUNXR（不図示）とから、最大８個のラン長RUN7〜RUN0、繰り越されるラン長RUNXを生成する。このラン長の合成とは、図２２のフローチャートに示すように、対応したラン長同士を単純に加算する処理である。合成されたラン長RUN6〜RUN0はRRUN6〜RRUN0としてレジスタ２２９に格納されるとともに、CRUN6〜CRUN0としてNEXTワードチェック処理装置２０４へ送られる。合成されたラン長RUN7と、繰り越されるラン長RUNXは累積加算処理装置の加算器２２７，２２８の一方の入力へそれぞれ与えられる。Rightラン値生成装置２２４より出力されたフラグAFLは加算器２２８に制御入力として与えられる。
【０１０３】
加算器２２８は、フラグAFLが”１”の場合に、繰り越されるラン長RUNXとレジスタ２２９に格納されている今までの繰越しラン長の合計RBRUN7を加算し、その結果を繰越しラン長の合計としてレジスタ２２９に格納する。フラグAFLが”０”の場合には、加算器２２８を通じて、繰り越されるラン長RUNXが今までの繰越しラン長の合計RBRUN7としてレジスタ２２９に格納される。
【０１０４】
加算器２２７は、最初のランRUN7と今までの繰越しラン長の合計RBRUN7を加算し、今までの繰越しラン長を考慮したラン長を求める。この加算結果は、ラン長RRUN7としてレジスタ２２９に格納されるとともに、CRUN7としてNEXTワードチェック処理装置２０４へ送られる。現在の処理対象の画像パターンの８ビットIDOT、マスク値合成装置２２５により合成されたマスク値DMASK7〜DMASK0も、それぞれODOT、RDMASK7〜RDMASK0としてレジスタ２２２９に格納される。レジスタ２２９の内容は、PASS判定＆繰り返し処理装置２０５へ送られる。
【０１０５】
図１４に、ラン長処理装置２０３の処理例を示し説明する。図１４の最上段は処理されるデータであり、白丸は”０”、黒丸は”１”を表す。このように２値の画像データは、８ビット毎にラン長処理装置２０３に取り込まれ並列に処理される。
【０１０６】
１）は１つ目の画像パターンの処理であり、８ビットの画像パターンを上位４ビット（LEFT）、下位４ビット（RIGHT）に分割し処理を進める。LEFTの４ビットでは、ランカウント２２１により３つのラン長”２”，”１”，”１”が求められ、RIGHTの４ビットでは、ランカウント２２２により１つのラン長”２”が求められる。LEFTのラン長はLeftラン値生成装置２２３により８個のラン長に展開され、RIGHTのラン長はRightラン値生成装置２２４により８個のラン長に展開される。RIGHTのラン長はLEFTのラン長分ずらして作成する。次にラン値合成装置２２６により、LEFT、RIGHTのラン長が加算されて８個のラン長(RUNLENMGS)が生成される。
【０１０７】
２）は２つ目の画像パターンの処理であり、LEFTでは１つのラン長”５”が、RIGHTでは０個のラン長が求められる。次にLeftラン値生成装置２２３によりLEFTの８個のラン長に、Rightラン長生成装置２２４によりRIGHTの８個のラン長に、展開される。RIGHTのラン長はLEFTのラン長分ずらして作成する。次にラン値合成装置２２６によりLEFT、RIGHTのラン長が加算され、８個のラン長が生成される。この例では、１つ前のRIGHTで求められた余りのラン長が今回のLEFTで閉じる。
【０１０８】
３）は３つ目の画像パターンの処理であり、LEFTでは０個のラン長が、RIGHTでは１個のラン長”１１”が求められる。次にLeftラン値生成装置２２３によりLEFTの８個のラン長に、Rightラン値生成装置２２４によりRIGHTの８個のラン長に、それぞれ展開される。RIGHTのラン長はLEFTのラン長分ずらして８個のラン長を作成する。次にラン値合成装置２２６によりLEFT、RIGHTのラン長が加算され、８個のラン長が生成される。この例では、１つ前のRIGHTで求めた余りのラン長が今回のLEFTをとおしRIGHTで閉じる。
【０１０９】
《NEXTワードチェック処理装置２０４》
図６は、NEXTワードチェック処理装置２０４のブロック図である。このNEXTワードチェック処理装置２０４は、現在符号化中のワードの次のワードがすべて繰り返しであるかを判定する。この判定のために最大８個のラン長を受け取り、有効のラン長が、それぞれ２つ前のラン長と全て一致する場合に、その出力であるRELAXFLを”１”にすることにより、PASS判定＆繰り返し処理装置２０５内のPASS判定装置のPSS判定の緩和を制御する。以下、NEXTワードチェック処理装置２０４の各部について説明する。
【０１１０】
図６において、２３１は比較器であり、符号化するワードの最後から２番目のラン長WCRF2と次のワードでの1番目のラン長CRUN7とを比較し、一致するか判定する。ＡＮＤ回路２３２、ＯＲ回路２３３及びインバータ２３４により、CDMASK7の値が”１”の場合に、比較器２３１の判定出力がＡＮＤ回路２６４に送られ、CDMASK7の値が”0”場合は”1”がＡＮＤ回路２６４へ送られる。
【０１１１】
２３５は比較器であり、符号化するワードの最後から１番目のラン長WCRF1と次のワードでの２番目のラン長CRUN6とを比較し、一致するか判定する。ＡＮＤ回路２３６、ＯＲ回路２３７及びインバータ２３８により、CDMASK6が”１”の場合は比較器２３５の判定出力がＡＮＤ回路２６４に送られ、CDMASK6が”０”の場合は”１”がＡＮＤ回路２６４に送られる。
【０１１２】
２３９は比較器であり、符号化するワードの次のワードでの３番目のラン長CRUN5と１番目のラン長CRUN7を比較し、一致するか判定する。ＡＮＤ回路２４０、ＯＲ回路２４１及びインバータ２４２により、CDMASK5が”１”の場合は比較器２３９の判定出力がＡＮＤ回路２６４に送られ、CDMASK5が”０”の場合は”１”がＡＮＤ回路２６４に送られる。
【０１１３】
同様に、次のワードの４番目のラン長CRUN4、５番目のラン長CRUN3、６番目のラン長CRUN2、７番目のラン長CRUN1、８番目のラン長CRUN0についても、対応した比較器２４３，２４７，２５１，２５５，２５９によって比較され、その比較結果は対応したCDMASK4，CDMASK3，CDMASK2，CDMASK1，CDMASK0が”１”のときにＡＮＤ回路２６４に送られる（”１”のときは”１”が送られる）。なお、２４４，２４８，２５２，２５６，２６０はＡＮＤ回路、２４５，２４９，２５３，２５７，２６１はＯＲ回路、２４６，２５０，２５４，２５８，２６２はインバータである。
【０１１４】
２６３はＯＲ回路であり、８個のラン長のマスク値であるCDMASK7〜CDMASK0の論理和をとり、もし、８個のラン長の１つも有効でない場合にＡＮＤ回路２６４に”０”を送る。ＡＮＤ回路２６４は、その全ての入力信号が”１”の場合に、その出力RELAXFLを”１”とする。このRELAXFLはPASS判定＆繰り返し処理装置２０５の内部のPASS判定装置（後述）へ送られる。
【０１１５】
《画像圧縮装置のPASS判定＆繰り返し処理装置２０５》
図７は、PASS判定＆繰り返し処理装置２０５のブロック図である。このPASS判定＆繰り返し処理装置２０５は、ラン長処理装置２０３で求めた複数のラン長と前パターンの後ろから２番目、１番目のラン長から、複数のラン長の繰り返し数を求める。処理の流れとしては、繰り返しフラグ生成装置２７１において、ラン長処理装置２０３で求めた複数のラン長と前パターンの後ろから２番目、１番目のラン長から各ラン長を比較し、ラン長処理装置２０３で求めた複数のラン長が、それぞれ２つ前のラン長と等しいかどうか判断して繰り返しフラグRFL7〜RFL0）を生成し、繰り返し数生成装置２７２において、繰り返しフラグRFL7〜RFL0のパターンと今までの繰り返し数REPから、今までの繰り返し数をどのように継続するか判断し、かつ新しい繰り返し数を計算し、複数の繰り返し数WREP7〜WREP0と、次のパターンへの繰り返し数WREPを求める。
【０１１６】
以下、PASS判定＆繰り返し処理装置２０５の各部について説明する。
【０１１７】
繰り返しフラグ生成装置２７１は、ラン長処理装置２０３からの複数のラン長、そのマスク値、前パターンの２つ前のラン長と１つ前のラン長を受け取り、ラン長処理装置２０３からの各ラン長が２つ前のラン長と一致するか比較判定して繰り返しフラグRFL3〜RFL0を生成する。処理内容の詳細については、図２５を参照して後述する。繰り返し数生成装置２７２は、繰り返しフラグ生成装置２７１からの繰り返しフラグRFL3〜RFL0と、今までの繰り返し数（REP）を受け取り、複数の繰り返し数を生成する。処理内容の詳細は、図２４、図３０乃至図３２を参照して後述する。
【０１１８】
空き領域削除装置２７３は、繰り返し数生成装置２７２から受け取った複数の繰り返し数と複数のラン長から、繰り返し数生成装置２７２により繰り返しと判断され何も情報の入っていない（繰り返し数が０）部分をシフトし、WREP7、WWRUN7寄りに繰り返し数とラン長をつめる。
【０１１９】
２７４はPASS判定装置であり、空き領域削除装置２７３からの最大４個のラン長と最大４個の繰り返し数を受け取り、符号長を計算し、かつ、現在カウント途中のラン長BRUN7と、現在カウント途中の繰り返し数REP0と、NEXTワードチェック処理装置２０４からのPASS判定緩和信号であるRELAXFLを受け取り、符号長補正処理を行い、求めた符号長をPASS符号化の閾値と比較し、閾値より大きい場合にはPASS符号化フラグであるPASSFLを”１”にする。内部構成の詳細及び処理内容の詳細については、図８及び図３３乃至図３５を参照して後述する。
【０１２０】
２７５はマルチプレクサ（MUX）であり、PASSFLが”1”であれば、現在符号化しているワードの１つ前の途中のラン長と途中の繰り返し数とPASSFLをレジスタ２７６へ、つまり符号化処理装置２０６へ送る。また、PASSFLが”0”であれば、現在のワードの最大４個のラン長と最大４個の繰り返し数をレジスタ２７６へ、つまり符号化処理装置２０６へ送る。
【０１２１】
２７７はNEXTラン長生成装置であり、次に入力するパターンの繰り返しフラグの生成のために、今回入力したパターンの後ろから２番目のラン長と後ろから１番目のラン長を求める（処理内容の詳細は図２７を参照して後述する）。このラン長はレジスタ２７８に格納され、次のパターンが入力した時に繰り返しフラグ生成装置２７１で利用される。
【０１２２】
このPASS判定＆繰り返し処理装置２０５における繰り返し処理の例を図２３により説明する。図２３の最上段は処理される画像データであり、白丸は”０”、黒丸は”１”を意味する。この画像データは８ビット単位で並列に処理される。
１）は、１番目の８ビットを並列処理し、繰り返しを求める例である。OUTは、PASS判定＆繰り返し処理装置２０５の出力であるDMASK，REP,RUNの項目番号を示す。DMASKは８つのランの有効フラグとしてのマスク値であり、”１”が有効であり、その項目にラン長、もしくは繰り返し数がある。REPは、繰り返し数であり、”０”はその項目が繰り返しではなくラン長であることを示す。RUNは、ラン長である。WORKは、PASS判定＆繰り返し処理装置２０５の内部の主要信号であるRFL,WREPの項目番号を示す。RFLは、繰り返しフラグ生成装置２７１から出力される繰り返しフラグであり、その項目がラン長であれば０、繰り返しであれば１を、何もなければ２を示す。WREPは、繰り返し数生成装置２７２から出力される繰り返し数である。RF1は前回の最後のラン長であり、RF2はその前のラン長である。ここでは、最初の処理であるため、RF2、RF1は初期値０に設定されている（ラン長の０は有り得ない数値）。この例では、３つのラン長”３”，”２”，”２”があるが、繰り返しはない。
【０１２３】
２）は２つ目の８ビットの処理であり、５つのラン長”２”，”２”，”２”，”２”，”１”が入力されている。ここではまず、最初の”２”のラン長は、RF2の数値と一致し繰り返しと認識され、つぎの”２”のラン長もRF1の数値と一致し繰り返しと認識され、つぎの”２”のラン長も２つ前のラン長”２”と一致し繰り返しと認識され、つぎの”２”のラン長も２つ前のラン長”２”と一致し繰り返しと認識される。そのため、繰り返しフラグRFLは、７，６，５，４の項目において”１”となっている。３の項目は”０”であり、この繰り返しは、終端していることを示している。そのため、WREPに、終端した位置項目４で繰り返し数”４”を示している。つぎに、WREPは、項目７，６，５の空白が存在するので、空き領域削除装置２７３により、項目７，６，５の空白を削除して３つずらし、OUTのREPとRUNのようなる。この空き領域削除処理は、このように空白が生じた場合に、その空白を削除して詰めることにより、次の処理装置へ転送するときのフォーマットの規則を守るようにする。これにより、次工程の処理装置は単純なフォーマットでデータを受け取れるため、ハードウエアのゲート数を減らし、処理スピードの向上を図ることができる。
【０１２４】
３）は３つ目の８ビットの処理であり、６つのラン長”１”，”１”，”１”，”２”，”１”，”２”が入力されている。ここでは最初のラン長”１”はRF2と一致せずラン長と認識されるが、つぎのラン長”１”はRF1と一致し繰り返しと認識される。つぎのラン長”１”は２つ前のラン長”１”と一致し繰り返しと認識され、つぎのラン長”２”は２つ前のラン長”１”と比較され数値が一致しない為に繰り返しとは認識されない。そのため、繰り返しフラグRFLは６，５の項目において”１”となっている。４の項目は”０”であり、この繰り返しは終端していることを示している。そのため、WREPに、終端した位置項目５で繰り返し数”２”を示している。つぎのラン長”１”は２つ前のラン長”１”と一致し繰り返しと認識され、つぎのラン長”２”は２つ前のラン長”２”と一致し繰り返しと認識され、繰り返しフラグRFLは３，２の項目において”１”となっている。しかし、１の項目は”２”であり、この繰り返しはまだ継続していることを示している。そのため、WREPには繰り返し数が出力されない。
【０１２５】
図２５に、繰り返しフラグ生成装置２７１の処理フローを示す。図２５において、ステップＳ５０１でマスク値DMASK7が１であるか判定し、０であれば対応するラン長がないのでステップＳ５０３で繰り返しフラグRFL７に２を設定する。DMASK7が１であれば、ラン長が存在するため、ステップＳ５０２でRUN７と前パターンの後ろから２番目のラン長RF2と比較し、一致すればステップＳ５０５で繰り返しフラグRFL７に１を設定する。一致しなければ、ステップＳ５０５で繰り返しフラグRFL７に０を設定する。以下、DMASK6〜DMASK0、RUN6〜RUN0、RFL6〜RFL0について、同様の判定と、判定結果に応じた設定を行う。
【０１２６】
図２４に繰り返し数生成装置２７２の処理フローを示す。また、図２４中の繰り返し数REPの生成ステップＳ４６７の処理フローを図３０乃至図３２に示す。
【０１２７】
まず、図３０から説明する。繰り返しフラグから複数の繰り返し数を求める処理である。繰り返し数は、それぞれの位置で繰り返しが途絶えた点で繰り返し数となる。
【０１２８】
ステップＳ４０１，Ｓ４０２，Ｓ４０３で、８ビット目の繰り返し数を求める。繰り返しフラグRF7が０であれば繰り返しフラグ生成装置２７１での比較結果が一致しないため、今までの繰り返し数を清算し、ステップＳ４０３で繰り返し数WREP7に今までの繰り返し数REPを代入する。RF7が１であれば、繰り返しが継続しているためステップＳ４０２で繰り返し数WREP7を０にする。
【０１２９】
ステップＳ４０４，Ｓ４０５，Ｓ４０６で、７ビット目の繰り返し数を求める。ステップＳ４０４で、繰り返しフラグRFL7が１、かつRFL6が０であると判定されると、ステップＳ４０６で繰り返し数WREP6に、今までの繰り返し数REPと今回の繰り返し数１（RFL7＝１であるため）を加算した値を設定する。ステップＳ４０４で条件が成立しなければ、ステップＳ４０５で、繰り返し数WREP6を０にする。
【０１３０】
６ビット目の繰り返し数をステップＳ４０７〜Ｓ４１１で求め、５ビット目の繰り返し数をステップＳ４１２〜Ｓ４１８で求め、４ビット目の繰り返し数をステップＳ４１９〜Ｓ４２７で求め、３ビット目の繰り返し数をステップＳ４２８〜Ｓ４３８で求め、２ビット目の繰り返し数をステップＳ４３９〜Ｓ４５１で求め、１ビット目の繰り返し数をステップＳ４５２〜Ｓ４６６で求める。そして、ステップＳ４６７で、次のワードへ繰り越す繰り返し数REPを求める処理を行う。このステップＳ４６７の処理内容は、図３０乃至図３２のフローチャートに示す通りである。
【０１３１】
図３０において、ステップＳ９０１で繰り返しフラグRFL7が２であるか判定する。FL7が２ならば、１番優先順位の高いラン長の値が決まらないため、ステップＳ９０５で今までの繰り返し数REPを保持する。
【０１３２】
RFL7が２でなければ、ステップＳ９０２で、繰り返しフラグRFL7が０、かつ、RFL6が２であるか判定する。この条件が成立するときには、１番優先順位の高いラン長は繰り返しではなく、それ以降にラン長はないため、ステップＳ９０６で繰り返し数REPを０に設定する。
【０１３３】
ステップＳ９０２の条件が成立しないときには、ステップＳ９０３で、繰り返しフラグRFL7が１、かつ、RFL6が２であるか判定する。この条件が成立するならば、１番優先順位の高いラン長は繰り返しであり、それ以降にラン長はないため、ステップＳ９０７で今までの繰り返し数REPに今回の繰り返し数１を加算した値を繰り返し数REPに設定する。
【０１３４】
ステップＳ９０３の条件が不成立ならば、ステップ９０４で、繰り返しフラグRFL6が0、かつ、RFL5が２であるか判定する。この条件が成立するならば、繰り返しフラグRFL7がどのような値でも、有効な終端（ここではRFL5が２であるためRFL6が終端）が０であれば、次パターンへ継続される繰り返し数は０になる。よって、ステップＳ９０８で繰り返し数REPに０を設定する。
【０１３５】
以下同様に、全ての組み合わせについて判定を行い、判定結果に従った繰り返し数の設定を行う。
【０１３６】
図２７に、NEXTランレングス生成装置２７７の処理フローを示す。図２７において、ステップＳ６０１で、優先順位の最も高いマスク値DMASK7が１であるか判定する。１でなければ（０である）、このパターンに閉じたラン長はないため、ステップＳ６０５で、前パターンの後ろから２番目、１番目をそのまま継続する。すなわち、WRF2にRF2の値を代入し、WRF1にRF1の値を代入する。
【０１３７】
DMASK7が１であり、ステップＳ６０２でDMASK6が１でない（０である）と判定された場合は、1つのみラン長が存在するため、ステップＳ６０６で後ろから２つ前のラン長WRF1にRUN7の値を代入し、後ろから１つ前のラン長WRF2に前パターンの後ろから１番目のRF1を代入する。
【０１３８】
DMASK6が１であり、ステップＳ６０３でDMASK5が１でないと判定された場合は、ラン長が２つだけ存在するため、ステップＳ６０７で、後ろから２つ前のラン長WRF1にRUN6の値を代入し、後ろから１つ前のラン長WRF2にRUN7の値を代入する。
【０１３９】
DMASK6が１であり、ステップＳ６０４でDMASK4が１でないと判定された場合は、ラン長が３つだけ存在するため、ステップＳ６０８で、後ろから２つ前のラン長WRF1にRUN5の値を代入し、後ろから１つ前のラン長WRF2にRUN6の値を代入する。
【０１４０】
DMASK4が１であり、ステップＳ６０９でDMASK3が１でないと判定された場合は、ラン長が４つだけ存在するため、ステップＳ６１３で、後ろから２つ前のラン長WRF1にRUN4の値を代入し、後ろから１つ前のラン長WRF2にRUN5の値を代入する。
【０１４１】
DMASK3が１であり、ステップＳ６１０でDMASK2が１でないと判定された場合は、ラン長が５つだけ存在するため、ステップＳ６１４で、後ろから２つ前のラン長にRUN3の値を代入し、後ろから１つ前のラン長にRUN4の値を代入する。
【０１４２】
DMASK2が１であり、ステップＳ６１１で、DMASK1が１でないと判定された場合には、ラン長が６つだけ存在するため、ステップＳ６１５で、後ろから２つ前のラン長にRUN2の値を代入し、後ろから１つ前のラン長にRUN3の値を代入する。
【０１４３】
DMASK1が１であり、ステップＳ６１２でDMASK0が１でないと判定されたならば、ラン長が７つだけ存在するため、ステップＳ６１６で、後ろから２つ前のラン長にRUN1の値を、後ろから１つ前のラン長にRUN2の値を代入する。
【０１４４】
ステップＳ６１２でDMASK0が１であると判定されたならば、ラン長が８つだけ存在するため、ステップＳ６１７で、後ろから２つ前のラン長にRUN0の値を代入し、後ろから１つ前のラン長にRUN1の値を代入する。
【０１４５】
図８は、PASS判定装置２７４のブロック図である。図８において、２８１は符号長処理装置であり、受け取った最大４個のラン長WWRUN3〜WWRUN0と、最大４個の繰り返し数WWREP3〜WWREP0と、それらラン長及び繰り返し数の有効フラグREPFL3〜REPFL0と、オーバーフラグOVERFL（ラン長、繰り返し数が４を越えた場合、符号長を調べるまでもなくオーバーしていることを示すフラグ）を受け取り、符号長を計算する。
【０１４６】
２８２は符号長補正装置２８２であり、符号長処理装置２８１で求められた符号長に、今符号化しているワードの、閉じていない途中のラン長BRUN7と途中の繰り返し数REP0と、NEXTワードチェック処理装置２０４からの抑制緩和フラグRELAXFLを受け取り、符号長の補正を行う。この符号長補正において、今符号化しているワード（この例では８ビット）において、閉じていない途中のラン長や、閉じていない途中の繰り返し数は、次のワードがPASS符号化であれば、ワードの境界で切られ（図１２の例２、図１３の例３と例４を参照）、途中のラン長、途中の繰り返しが閉じたラン長、閉じた繰り返しへ変化する。このため、次のワードの符号長を調べてPASS符号化するか否かを判断する必要があるが、これには次から次へと先のワードがPASS符号化するかを調べる必要があり、際限がない。そこで、基本的に次のワードはPASS符号化すると考え、閉じていない途中のラン長、途中の繰り返し数も符号長に加える符号長補正を行う。しかし、NEXTワードチェック処理装置２０４により、次のワードが、そのワード境界で区切った中でPASS符号にならないことを調べることにより、抑制緩和フラグRELAXFLを生成し、このフラグにより、この符号長補正装置２８２の符号長補正を緩和させることができる。この例では、NEXTワードチェック処理装置２０４は、次のワードが全て繰り返しであるか調べ、繰り返しである場合には次のワードはPASS符号化しないと判断し、抑制緩和フラグRELAXFLを生成している。
【０１４７】
２８３はPASSフラグ生成装置であり、求められた符号長をPASS符号へ変換するか否かの判定のための所定の閾値と比較し、符号長がこの閾値以上であればPASS符号化フラグPASSFLを”１”とする。
【０１４８】
図３３に符号長処理装置２８１の処理フローを示す。図３３において、ステップＳ１１０１で、最初のラン長WWRUN3及び繰り返し数WWREP3が有効であるか調べるため、それらの有効フラグREPFL3の判定を行う。有効であれば、ステップＳ１１０２〜Ｓ１１０６の処理に進む。
【０１４９】
ステップＳ１１０２で、最初の繰り返し数WWREP3を２以上と判定したときには、ステップＳ１１０６で符号フォーマット（図１１参照）に基づき、繰り返し数の符号長２とラン長の符号長１を加えた３を符号長PCNTに設定する。この時、ラン長、繰り返し数は、一度に並列処理されるビット数である８ビットを基準に、８以上のラン長も数値の８のラン長と同じ符号長で考える。
【０１５０】
ステップＳ１１０３で、繰り返し数WWREP3が１であると判定された場合には、ステップＳ１１０５で、符号フォーマット（図１１参照）に基づき、繰り返し数の符号長１とラン長の符号長の１を加えた２を符号長に設定する。
【０１５１】
ステップＳ１１０３で、繰り返し数が０と判定されたときには、ステップＳ１１０４で、ラン長の符号長１を符号長とする。
【０１５２】
次に、ステップＳ１１０７で、次のラン長WWRUN2及び繰り返し数WWREP2が有効であるか調べるため、それらの有効フラグREPFL2の判定を行う。有効であれば、ステップＳ１１０８〜Ｓ１１１２の処理に進む。
【０１５３】
ステップＳ１１０８で繰り返し数が２以上であると判定したならば、ステップＳ１１１２の処理を行い、符号フォーマットに基づき、繰り返し数の符号長２とラン長の符号長１を加えた３を符号長PCNTに加える。
【０１５４】
ステップＳ１１０９で繰り返し数が１であると判定された場合には、ステップＳ１１１１の処理を行い、符号フォーマットに基づき、繰り返し数の符号長１とラン長の符号長の１を加えた２を符号長に加える。
【０１５５】
ステップＳ１１０９で繰り返し数が０と判定されたときには、ステップＳ１１１０でラン長の符号長１を符号長に加える。
【０１５６】
次に、ステップＳ１１１３で、次のラン長WWRUN1及び繰り返し数WWREP1が有効であるか調べるために、それらの有効フラグREPFL1の判定を行う。有効であれば、ステップＳ１１１４〜Ｓ１１１８の処理に進む。
【０１５７】
ステップＳ１１１４で繰り返し数WWREP1が２以上であると判定されたときには、ステップＳ１１１８の処理を行い、符号フォーマットに基づき、繰り返し数の符号長２とラン長の符号長１を加えた３を符号長PCNTに加える。
【０１５８】
ステップＳ１１１５で繰り返し数が１であると判定された場合には、ステップＳ１１１７の処理を行い、符号フォーマットに基づき、繰り返し数の符号長１とラン長の符号長１を加えた２を符号長に加える。
【０１５９】
ステップＳ１１１６で繰り返し数が０と判定された場合には、ラン長の符号長１を符号長に加える。
【０１６０】
次に、ステップＳ１１１９で、次のラン長WWRUN0及び繰り返し数WWREP0が有効であるか調べるため、それらの有効フラグREPFL0の判定を行う。有効であれば、ステップＳ１１２０〜ｓ１１２４の処理に進む。
【０１６１】
ステップＳ１１２０で繰り返し数WWREP0が２以上であると判定したときには、ステップＳ１１２４の処理を行い、符号フォーマットに基づき、繰り返し数の符号長を２とラン長の符号長の１を加えた３を符号長に加える。
【０１６２】
ステップＳ１１２１で繰り返し数WWREP0が１であると判定された場合、ステップＳ１１２３で、繰り返し数の符号長１とラン長の符号長１を加えた２を符号長に加える。
【０１６３】
ステップＳ１１２１で繰り返し数が０と判定されたときには、ステップＳ１１２２でラン長の符号長１を符号長に加える。
【０１６４】
図３４に符号長補正装置２８２の処理フローを示す。図３４において、最初のステップＳ１２０１で抑制緩和フラグが”１”であるかを判定し、”１”でなければ、ステップＳ１２０４に進む。ステップＳ１２０４で、途中の繰り返し数REPが２以上であると判定したならば、ステップＳ１２０８の処理を行い、符号フォーマット（図１１参照）に基づき、繰り返し数の符号長２とラン長の符号長１を加えた３を符号長PCNTに加える。この時、ラン長、繰り返しは一度に並列処理されるビット数である８ビットを基準に、８以上のラン長も８のラン長と同じ符号長で考える。ステップＳ１２０５で途中の繰り返し数が１であると判定された場合には、ステップＳ１２０７で、符号フォーマットに基づき、繰り返し数の符号長１とラン長の符号長１を加えた２を符号長に加える。ステップＳ１２０６で途中のラン長が０以上であると判定したときには、ステップＳ１２０９で、ランレングスの符号長の１を符号長に加える。また、抑制緩和フラグRELAXFLが”１”の場合、ステップＳ１２０２で途中のラン長又は途中の繰り返し数が０以上であると判定したときに、ステップＳ１２０３で符号長に１を加える。
【０１６５】
図３５に、PASSフラグ生成装置２８３の処理フローを示す。図３５において、ステップＳ１２５１で符号長PCNTがPASS符号化閾値より大きいと判定したときに、ステップＳ１２５３でフラグPASSFLを”１”に設定する。そうでないと判定したときには、フラグPASSFLを”０”に設定する。
【０１６６】
《画像圧縮装置の符号化処理装置２０６》
図９は、符号化処理装置２０６の入出力信号を示す。この符号化処理装置２０６は、最大４個のラン長RUN3〜RUN0、繰り返し数REP3〜REP0と、それらのマスク値DMASK3〜DMASK0を受け取り、前述のように図１１に示す４ビットごとのフォーマットの符号CODEを出力する（ただし、符号のフォーマットは、これに限られるものではなく、何ビットごとでも良いことは前述のとおりである）。
【０１６７】
図２６に、この符号化処理装置２０６の全体的な処理フローを示す。図示のように、４つのラン長、繰り返し数が０より大きいか調べ（ステップＳ５５１，Ｓ５５３，Ｓ５５５，Ｓ５５７）、０より大きいラン長、繰り返し数を符号化する（ステップＳ５５２，Ｓ５５４，Ｓ５５６，Ｓ５５８）。
【０１６８】
図１０は、符号化処理装置２０６の内部構成を示すブロック図である。図１０において、２９１は符号化装置であり、ラン長RUN3と繰り返し数REP3の符号化を行う。この符号化装置２９１は、その詳細については図２８に示した処理フローに沿って説明するが、PASS符号化時に、前のワードの途中のラン長と途中の繰り返し数を符号化する。繰り返し数の符号WCODEOUT3Rとその符号長RCLENG3、ラン長の符号WCODEOUT3Nとその符号長NCLENG3を出力する。
【０１６９】
２９２は符号化装置であり、ラン長RUN2と繰り返し数REP2の符号化を行う。この符号化装置２９１は、その詳細については図２９の処理フローに沿って説明するが、PASS符号化時、今のワードのDOT値をPASS符号として符号化する。繰り返し＋ラン長の符号WCODEOUT2と、その符号長CLENG2を出力する。この符号化装置２９２には、ラン長RUN2、繰り返し数REP2のほかに、フラグPASSFL、DOT値も入力される。
【０１７０】
２９３は符号化装置であり、ラン長RUN1と繰り返し数REP1の符号化を行い、繰り返し＋ラン長の符号WCODEOUT1とその符号長CLENG1を出力する。この符号化装置２９３の処理フローを図２８に示す。
【０１７１】
２９４は符号化装置であり、ラン長RUN0と繰り返し数REP0の符号化を行い、繰り返し＋ラン長の符号WCODEOUT0とその符号長CLENG0を出力する。この符号化装置２９４の処理フローを図２８に示す。
【０１７２】
２９５は符号長計算装置であり、各位置の符号を合わせ込むために、各位置の符号の長さWCLENG3R,WCLENG3X,WCLENG2X,CLENG1Xを計算して符号位置合わせ装置２９６，２９７，２９８，２９９へ送り、また、合計の符号長CLENGOXをレジスタ３０１へ送る。
【０１７３】
符号位置合わせ装置２９６は、符号化装置２９１から出力された符号WCODEOUT3Nを、WCLENG3X（＝RCLENG3)だけずらしてＯＲ装置３００へ転送する。符号位置合わせ装置２９７は、符号化装置２９２から出力された符号WCODEOUT2をCLENG3X（＝RCLENG3＋NCLENG3）だけずらしてＯＲ装置３００へ転送する。符号位置合わせ装置２９８は、符号化装置２９３から出力された符号WCODEOUT1を、CLENG2X（＝RCLENG3＋NCLENG3＋CLENG2）だけずらしてＯＲ装置３００へ転送する。符号位置合わせ装置２９９は、符号化装置２９４から出力された符号WCODEOUT0を、CLENG1X（＝RCLENG3＋NCLENG3＋CLENG2＋CLENG1）だけずらしてＯＲ装置３００へ転送する。
【０１７４】
ＯＲ装置は、符号化装置２９１より出力される繰り返し数の符号WCODEOUT3R、符号位置合わせ装置２９６，２９７，２９８，２９９により位置合わせ後の符号をＯＲ演算してレジスタ３０１へ転送する。レジスタ３０１には最大４個の符号を１つにした符号と、その符号の有効長が格納される。このレジスタ３０１の内容が符号化書き込み装置２０７へ転送される。
【０１７５】
図２８に示した符号化装置２９１，２９２，２９４の処理フローについて説明する。なお、このフローチャート中の”CODE=”は、符号としてＤＭＡ転送もしくはメモリ１１０などの記憶装置への書き出しを意味する。
【０１７６】
図２８において、ステップＳ７００でラン長が０でないと判定されたならば、ステップＳ７０１でラン長が８以下であるは調べる。ラン長が８以下であると判定されたならば、ステップＳ７０２で、ラン長から１を引き算した値を符号とする。
【０１７７】
ステップＳ７０３で、ラン長が９以上で４０以下であると判定され、ステップＳ７０４でラン長が２４以下であると判定された場合には、ステップＳ７０７で、ヘッダとして４ビットの”１０１０”を付加し、次にラン長から１１を差し引いた値を符号とする。ステップＳ７０４でラン長が２５以上であると判定された場合には、ステップＳ７０６で、ヘッダとして４ビットの”１０１１”を付加し、次にラン長から１１を差し引いた値を符号とする。
【０１７８】
ステップＳ７０３でラン長が４１以上であると判定された場合には、ステップＳ７０５でヘッダーとして４ビットの”１１００”を付加し、ステップＳ７０８〜Ｓ７１５により、４ビットのデータの４ビット目を終端フラグとする数値表現により、符号長を小さく表現する。
【０１７９】
ステップＳ７００でラン長が０であると判定された場合、ステップＳ７１６で繰り返し数REPが１であると判定されたならば、ステップＳ７１７で符号を１３とする。ステップＳ７１８で繰り返し数REPが２であると判定されたならば、ステップＳ７１７で１４を符号とする。ステップＳ７２０で繰り返し数REPが３であると判定されたならば、ステップＳ７２１で、１３、１４を符号とする。ステップＳ７２２で繰り返し数REPが４であると判定されたならば、ステップＳ７２３で、１４，１４を符号とする。繰り返し数REPが５以上の場合には、ステップＳ７２４でヘッダーとして４ビットの”１１１１”を付加し、ステップＳ７２５〜Ｓ７３２により、４ビットのデータの４ビット目を終端フラグとする数値表現により、符号長を小さく表現する。
【０１８０】
図２９に示した符号化装置２９２の処理フローについて説明する。なお、このフローチャート中の”CODE=”は、符号としてＤＭＡ転送もしくはメモリ１１０などの記憶装置への書き出しを意味する。
【０１８１】
図２９において、ステップ８００で、フラグPASSFLが”１”であると判定した場合には、ステップＳ８０１〜Ｓ８０４のPASS符号化処理を行う。すなわち、次のワードのMSBにより、ヘッダを求め、もしMSBが”１”であればヘッダーを９、”０”であればヘッダを８とする。そして、ステップＳ８０４で、符号化するワードをそのまま符号として貼り付ける。
【０１８２】
フラグPASSFLが”０”であると判定された場合、ステップＳ７０５でラン長が０でないと判定されたならば、ステップＳ８０６でラン長は８以下であるか調べられる。ラン長が８以下であると判定されたならば、ステップＳ８０７で、ラン長から１を引き算した値を符号とする。
【０１８３】
ステップＳ７０８でラン長が９以上、４０以下であると判定された場合には、ステップ８０９によりラン長が２４以下と判定されたならば、ステップＳ８１２で、ヘッダとして４ビットの”１０１０”を付加し、次にラン長から１１を引き算した値を符号とする。ステップＳ８０９でラン長が２７以上と判定されたときには、ステップＳ８１１で、４ビットの”１０１１”をヘッダーとして付加し、次にラン長から１１を引き算した値を符号とする。
【０１８４】
ステップ８０８でラン長が４１以上であると判定された場合は、ステップＳ８１０で、ヘッダーとして４ビットの”１１００”を付加し、ステップＳ８１３〜Ｓ８２０により、４ビットのデータの４ビット目を終端フラグとする数値表現により、符号長を小さく表現する。
【０１８５】
ラン長が０であると判定された場合、ステップＳ８２１で繰り返し数REPが１であると判定されたならば、ステップＳ８２２で１３を符号とする。ステップＳ８２３で繰り返し数REPが２であると判定されたならば、ステップＳ８２４で１４を符号とする。ステップＳ８２５で繰り返し数REPが３であると範囲されたらば、ステップＳ８２６で１３、１４を符号とする。ステップＳ８２７により繰り返し数REPが４であると判定されたならば、ステップＳ８２８で１４，１４を符号とする。繰り返し数REPが５以上の場合、ステップＳ８２９で、ヘッダーとして４ビットの”１１１１”を付加し、ステップＳ８３０〜Ｓ８３７で、４ビットのデータの４ビット目を終端フラグとする数値表現により、符号長を小さく表現する。
【０１８６】
以上の説明から明らかなように、特許請求の範囲に記載の第１の処理手段（第１の処理工程）はラン長処理装置２０３に対応し、第２の処理手段（第２の処理工程）はPASS判定＆繰り返し処理装置２０５の一部に対応し、第３の処理手段（第３の処理工程）は符号化処理装置２０６に対応し、第４の処理手段（第４の処理工程）はPASS＆繰り返し処理装置２０５内のPASS判定装置２７４に対応する。第４の処理手段に含まれる補正する手段（第４の処理工程に含まれる補正する工程）はＰＡＳＳ判定装置２７４内の符号長補正装置２９２（図８）に対応する。第５の処理手段（第５の処理工程）はNEXTワードチェック処理装置２０４に対応する。
【０１８７】
以上の説明においては、８ビット単位で処理したが、それに限定されない。例えば１６ビット単位で処理するのであれば、４ビットごとに処理するランカウントを４つ使用したり、８ビットごとに処理するランカウントを２つ使用したり、あるいは、１６ビットごとに処理するランカウントを１つ使用するなどが可能である。
【０１８８】
《画像伸長装置１０６ｄ》
以下、本発明の画像伸長装置１０６ｄの一実施例について説明する。この画像伸長装置１０６ｄは、以上に説明した本発明の画像圧縮装置１０６ｅにより圧縮された画像の符号データから元の画像を復元する処理を行う。
【０１８９】
図３６は、画像伸長装置１０６ｄの全体構成を示すブロック図である。図３６において、４０２は符号読み込み部であり、メモリ１１０から符号データを読み込む。４０３は符号解釈処理装置であり、符号読み込み部４０２で読み込まれた符号を解釈し、ラン長（０値の長さと１値の長さ）又は繰り返し数に変換してラン長処理部４０４へ転送する。ラン長処理装置４０４は、符号解釈処理装置４０３からラン長と繰り返し数を取り込み、繰り返し数分のラン長へ展開し、必要なだけのラン長をDOT化処理装置４０５へ転送する。DOT化処理装置４０５は、転送されたラン長をDOT化し（画像データに展開する）、画像書き込み部４０６へ送る。画像書き込み部４０６は、その復号された画像データをメモリ１１０に書き込む。
【０１９０】
以下、画像伸長装置１０６ｄの前記各ブロックを詳細に説明する。ここで説明する実施例は、８ビットごとに画像データを並列処理する例である。
【０１９１】
《画像伸長装置の符号読み込み部４０２》
図３７は、符号読み込み部４０２のブロック図である。図３７において、４１１及び４１２は読み込まれた符号データを一時的に格納するためのレジスタ、４１４は符号データを読み込むためのアドレスを発生するアドレス生成部である。読み込まれる符号データは、図１１に示したフォーマットの符号である。４１３はシフタである。このシフタは、符号解釈処理装置４０３から通知される消費した符号長（CODELENG）に従って、４ビット符号を順次シフトしながら符号解釈処理装置４０３へ転送する。また、この符号読み込み部４０２は、ラン長処理装置４０４又はDOT化処理装置４０５のＦＩＦＯ（後述）がフルになったときに、同ＦＩＦＯからのＷＡＩＴ信号により符号の読み込みを中止する。
【０１９２】
《画像伸長装置の符号解釈処理装置４０３》
図３８は、符号解釈処理装置４０３のブロック図である。この符号解釈処理装置４０３は、符号読み込み部４０２から複数の４ビット単位の符号を取り込み、４個のラン長又は繰り返し数と、その数値がラン長か繰り返し数かを示す複数のフラグを求める。
【０１９３】
処理の流れは次の通りである。６個の符号解析装置４２１〜４２６により、図１１に示したフォーマットの符号を解析し、この時、１つの符号解析装置は最大符号長の符号を読めるようにする（図１１のフォーマットでは最大符号長は４ビットコードが８個である）。各符号解析装置は、１つの４ビットコードごとにずらして符号を解析し、ラン長又は繰り返し数（GWWCOL）、ラン長であるか繰り返し数かを示すフラグ（NFL）、有効／無効を示すフラグ（CMDFL）、PASS符号か否かを示すフラグ(PASSFL）、PASS符号時の次のラン長の色情報（NCOL）を出力する。もちろん、符号解析装置は、符号のバウンダリーに合っているものと合っていないものとがあるため、それを有効フラグ生成装置４２７より判断する。この有効フラグ生成装置４２７は、６個の符号解析装置から出力される符号長（CLENG）の値から、それぞれの符号解析装置の解析結果が有効か否かを判断し、有効／無効を示すフラグ（CMDFL）を生成し、空き領域削除装置４２９及び有効データ数生成装置４２８に与える。有効データ数生成装置４２８は、フラグ(CMDF)を長さ（WMLENG）に変換する。空き領域削除装置４２９は、それぞれの符号解析装置が出力するラン長又は繰り返し数（GWWCOL）と、それがラン長であるか繰り返し数かを示すフラグ（NFL）、PASS符号か否かを示すフラグ(PASSFL）、PASS符号時の次のラン長の色情報（NCOL）を受け取り、その各GWWCOLの有効を示すフラグ（CMDFL）に基づいて、後処理を小さなハードウエアで処理することが可能となるように、無効のデータを削除し、最大３個のラン長もしくは繰り返しを求めるための空き領域削除処理を行う。空き領域削除処理後のラン長又は繰り返し数（WWCOL）と、ラン長であるか繰り返し数であるかを示すフラグ（NFL）、PASS符号を示すフラグ（PASSFL），PASS符号時の次のラン長の色情報（NCOL)、有効データ数（MLENG）はレジスタ４３０を介してラン長処理装置４０４へ転送される。また、図３８には示されていないが、解析された合計の符号長つまり消費した符号長（CODELENG）が有効フラグ生成装置４２７で求められ、符号読み込み部４０２のシフタ４１３へ転送される。
【０１９４】
以下、各部を説明する。符号解析装置４２１，４２２，４２３，４２４，４２５，４２６は、図１１のフォーマットの符号を解析し、ラン長、又は繰り返し数とラン長（GWWCOL）、繰り返し数か否かを示すフラグ（NFL）、処理した符号長（CLENG）、PASS符号フラグ（PASSFL），PASS符号時の次のラン長の色情報（NCOL）を出力する。この時、１つの符号解析装置は最大符号長の符号を読めるようにする（図１１のフォーマットでは最大符号長は４ビットコードが８個である）。各符号解析装置は、１つの４BITコードごとにずらして符号を解析する。
【０１９５】
有効フラグ生成装置４２７は、符号解析装置４２１〜４２６から処理した符号長（CLENG）を受け取り、解析結果の有効無効を判断する。符号解析装置４２１が正しい位置にあり正しい符号の解析を行い、処理した符号長が１であれば、符号解析装置４２２は有効であるが、それ以上であれば無効である。符号解析装置４２１の処理した符号長と符号解析装置４２２の処理した符号長（無効であれば０）を加えた数が１又は２であれば、符号解析装置４２３は有効であり、それ以外であれば無効である。符号解析装置４２１の処理した符号長と、符号解析装置４２２の処理した符号長（無効であれば０）と、符号解析装置４２３の処理した符号長（無効であれば０）を加えた数が１、２又は３であれば、符号解析装置４２４は有効であり、それ以外であれば無効である。同様にして、他の符号解析装置２４５，２４６の解析結果の有効／無効を判断する。図４３に有効フラグ生成装置４２７の処理フローを示す。
【０１９６】
有効データ数生成装置４２８は、有効フラグ生成装置４２７からの有効フラグを長さ（MLENG）に変換する。図４４に有効データ数生成装置の処理フローを示す。
【０１９７】
空き領域削除装置４２９は、符号解析装置４２１〜４２６から受け取った複数の繰り返し数又はラン長（GWWCOL）と、有効フラグ生成装置４２７から受け取った有効／無効フラグ（CMDFL）に基づき、何も情報の入っていない部分をシフトし、繰り返し数又はラン長を詰める処理を行う。図４５に空き領域削除装置４２９の処理フローを示す。
【０１９８】
この符号解釈処理装置４０３の処理例を図３９に示し説明する。図３９において、GWWCOLは符号解析装置（４２１〜４２６）が解析した符号のラン長又は繰り返し数であり、CLENGは解析した符号の長さ、NFLはGWWCOLの数値がラン長か繰り返しかを示すフラグである。CMDFLは有効フラグ生成装置４２７が求めた各符号解析装置の解析結果の有効を示すフラグである。MWCOLは最終的に求めたラン長又は繰り返し数であり、MNFLはラン長か繰り返しかを示すフラグである。CODELENGは、有効フラグ生成装置４２７によって求められる、解析された符号の数である。MLENGは出力されたラン長又は繰り返し数の数である。
【０１９９】
図３９に示した最初の処理は符号”２”，”１”，”Ｅ”，”Ｅ”，”０”，”０”，”Ｅ”，”１”，”２”，”０”，”０”を受け取り解析する処理である。この処理において、１番目の符号解析装置４２１は”２”，”１”，”Ｅ”，”Ｅ”，”０”，”０”，”Ｅ”，”１”，”２”，”０”，”０”の符号を受け取り、ラン長３と解析する。この符号数は１である。
【０２００】
２番目の符号解析装置４２２は”１”，”Ｅ”，”Ｅ”，”０”，”０”，”Ｅ”，”１”，”２”の符号を受け取り、ラン長２と解析する。この符号数は１である。
【０２０１】
３番目の符号解析装置４２３は”Ｅ”，”Ｅ”，”０”，”０”，”Ｅ”，”１”，”２”，”０”の符号を受け取り、繰り返し４と解析する。この符号数は２である。
【０２０２】
４番目の符号解析装置４２４は”Ｅ”，”０”，”０”，”Ｅ”，”１”，”２”，”０”，”０”の符号を受け取り、繰り返し２と解析する。この符号数は１である。５番目、６番目の符号解析装置４２５，４２６も同様であるが、図中省略されている（以下同様）。
【０２０３】
次に、有効フラグ生成装置４２７で、各符号解析装置４２１〜４２６から得た符号数から、各符号解析装置が解析したラン長又は繰り返し数の有効性を判断する。この例では、３番目の符号解析装置４２３が求めたラン長／繰り返し数の符号数は２であるため、４番目の符号解析装置４２４が解析した符号は、符号の先頭ではないことが分かる。したがって、４番目の符号解析装置４２４のCMDFL3を無効としている。そして、ここで消費した符号の数は４である。
【０２０４】
次の処理は符号”１”，”Ｅ”，”Ｅ”，”０”，”０”，”Ｅ”，”１”，”２”，”０”，”０”，”２”を受け取り解析する処理である。この処理において、１番目の符号解析装置４２１は”１”，”Ｅ”，”Ｅ”，”０”，”０”，”Ｅ”，”１”，”２”の符号を受け取り、ラン長２と解析する。この符号数は１である。
【０２０５】
２番目の符号解析装置４２２は”Ｅ”，”Ｅ”，”０”，”０”，”Ｅ”，”１”，”２”、”０”の符号を受け取り、繰り返し数４と解析する。この符号数は２である。
【０２０６】
３番目の符号解析装置４２３は”Ｅ”，”０”，”０”，”Ｅ”，”１”，”２”，”０”，”０”の符号を受け取り、繰り返し２と解析する。この符号数は１である。
【０２０７】
４番目の符号解析装置４２４は”０”，”０”，”Ｅ”，”１”，”２”，”０”，”０”，”２”の符号を受け取り、ラン長１と解析する。この符号数は１である。
【０２０８】
次に有効フラグ生成装置４２７で、各符号解析装置４２１〜４２６から得た符号数から、各符号解析装置が解析したラン長／繰り返し数の有効性を判断する。この例では、２番目の符号解析装置４２３が求めたラン長／繰り返し数の符号数は２であるため、３番目の符号解析装置４２３が解析した符号は、符号の先頭ではないことが分かる。したがって、３番目の符号解析装置４２３のCMDFL２を無効としている。
【０２０９】
そして、得られたラン長／繰り返し数に空欄が存在するため、空き領域削除装置４２９により空欄を削除し、つぎの処理装置へ送るデータフォーマットを単純化する。ここで消費した符号の数は４である。
【０２１０】
次に、各符号解析装置４２１〜４２６の処理フローを図４２に示し、説明する。ここに示した処理フローは、図１１に示したフォーマットの符号を復号化するための処理フローである。各符号解析装置は、入力された符号の順番に基づき、符号を解釈していく。
【０２１１】
ステップＳ２２０１で、最初の符号（CODE0）がPASS符号の”８”(1000)又は”９”(1001)であるか判定する。
【０２１２】
PASS符号であれば、ステップＳ２２０２でPASS符号が”８”か判定する。PASS符号が”8”であれば、そのPASS符号の次のラン長は”0”で始まるため、ステップ２２０３で、PASS符号時の次のラン長の色情報を格納するNCOLを”０”に設定する。PASS符号が”９”であれば、次のラン長は”1”で始まるため、ステップＳ２２０４でNCOLを”1”に設定する。そして、ステップＳ２２０５で、求めたラン長もしくは繰り返し数を格納するGWWCOLに、次の符号CODE1,CODE２を画像データとして格納し、また、GWWCOLがPASS符号による画像データであることを示すPASSFLを”1”に設定し、CLENGに消費した符号の長さ”３”を格納する。
【０２１３】
ステップＳ２２０２でPASS符号でないと判定した場合には、ステップＳ２２０６でPASSFLを”0”に設定する。
【０２１４】
次にステップＳ２２０７で、CODE0が８より小さいと判定した場合は、短いラン長符号であるため、ステップＳ２２０８でGWWCOLにCODE1+1の値を格納し、消費した符号数CLENGに”１”を設定し、ラン長か繰り返し数かを示すNFLをラン長を示す”1”に設定する。
【０２１５】
ステップＳ２２０７で８以上と判定した場合には、ステップＳ２２０９でCODE0が”１２”(1100)であるか判定する。”１２”であると判定したならば、長いラン長の符号であるため、図１１のフォーマットに基づき、ステップＳ２２１０〜Ｓ２２１５でラン長を求める。
【０２１６】
ステップＳ２２０９で”１２”ではないと判定された場合、ステップＳ２２１６でCODE0が”６”(101)であるか判定し、そうならば、中度のラン長の符号であるため、ステップＳ２２１７でラン長を求める。
【０２１７】
また、ステップＳ２２１８又はＳ２２２０でCODE0が”１３”(1101)又は”１４”(1110)であると判定した場合には、小さい繰り返し数の反復符号であるため、ステップＳ２２１９又はＳ２２２１で繰り返し値を求め、ラン長か繰り返しかを示すNFLを繰り返しを示す”0”に設定する。
【０２１８】
また、ステップＳ２２２２でCODE0が”１５”(1111)であると判定した場合には、大きい繰り返し数の反復符号であるため、ステップＳ２２２３〜Ｓ２２２８で繰り返し数を求め、またフラグ設定を行う。
【０２１９】
《画像伸長装置のラン長処理装置４０４》
図４０は、画像伸長装置１０６ｄのラン長処理装置４０４のブロック図である。このラン長処理装置４０４は、符号解釈処理装置４０３から、複数のラン長又は繰り返し数WWCOLとその数MLENG、ラン長か繰り返し数かを示す複数のフラグWNFL、PASS符号を示すフラグPASFL、PASS符号時の次のラン長の色情報NCOLを受け取り、毎クロックごとに、８ビットの復号パターンを生成するのに必要な最大８個のラン長(RRUN7〜RRUN0)を生成し、DOT化処理装置４０５へ送ることができる。以下、ラン長処理装置４０４を構成する各部について説明する。
【０２２０】
４４１はFIFOであり、符号解釈処理装置４０３から転送される複数のラン長又は繰り返し数と、その数、それがラン長か繰り返し数かを示す複数のフラグなどを受け取り、順次、格納していく。そして、ラン長生成装置４４４から受け取る消費したデータ数REPSHの分だけ格納データをシフトして、３つのラン長又は繰り返し数GWWcolと、ラン長か繰り返し数かを示す複数のフラグNFLを基準ラン長生成装置４４２と繰り返し数生成装置４４３へ出力する。
【０２２１】
基準ラン長生成装置４４２は、FIFO４４１から複数のラン長又は繰り返し数と、ラン長か繰り返し数かを示す複数のフラグを受け取り、また、ラン長生成装置４４４から前回の最終ラン長
RWWCOL00,RWWCOL01を受け取り、繰り返し処理を行いやすい以下のようなフォーマットへ変換する。
【０２２２】
例えば、ラン長生成装置４４４から受け取った前回の最終ラン長＝５、FIFO４４１から受け取った４つのラン長＝３，２，７、 繰り返し／ラン長フラグ＝０，０，１（３番目が繰り返し）の場合、基準ラン長生成装置４４２の出力は次のようになる。
【０２２３】
ＷＷＣＯＬ        ０  １  ２
カラー        ０：３  ３  ３
１：５  ２  ２
【０２２４】
これをラン長生成装置４４４で以下のように繰り返し処理を行う。
【０２２５】
ＷＷＣＯＬ        ０  １  ２  ３  ４  ５  ６  ７  ８
カラー        ０：３  ３  ３  ３  ３  ３  ３  ３  ３
１：５  ２  ２  ２  ２  ２  ２  ２  ２
【０２２６】
画像は白黒のラン長の繰り返しであり、ラン長は白のものと、黒のもがあり、ラン長の次のカラーが例えば”０”から始まる場合、カラー０、WWCOL０＝３、次にカラー１、WWCOL1=２、カラー０、WWCOL2=３、カラー１、WWCOL３=２、カラー０、WWCOL4=３のように、すなわち、３，２，３，２，３，２，３，２，３．．．．のように千鳥にサーチすることで、ラン長のみに変換できる。
【０２２７】
ここでは、ラン長、繰り返し情報からラン長のみの情報へ変換しやすい、以下のレベルまで行う。
【０２２８】
ＷＷＣＯＬ    ０  １  ２
カラー        ０：３  ３  ３
１：５  ２  ２
【０２２９】
基準ラン長生成装置４４２の処理フローを図４７に示す。
【０２３０】
繰り返し数生成装置４４３は、ＦＩＦＯ４４１から複数のラン長又は繰り返し数と、ラン長か繰り返し数かを示す複数のフラグを受け取り、繰り返し情報WREPを作成する。この繰り返し数生成装置４４３の処理フローを図４８に示す。
【０２３１】
ラン長生成装置４４４は、基準ラン長生成装置４４２に関連して述べたように、基準ラン長生成装置４４２から、繰り返し処理の行いやすい、黒と白のラン長の情報を受け取り、また、繰り返し数生成装置４４３から繰り返し情報を受け取り、ラン長を展開する。例えば、
ＷＷＣＯＬ      ０  １  ２
カラー      ０：３  ３  ３
１：５  ２  ２
ＷＲＥＰ      ：１  １  ７
の場合、
ＷＷＣＯＬ      ０  １  ２  ３  ４  ５  ６  ７  ８
カラー      ０：３  ３  ３  ３  ３  ３  ３  ３  ３
１：５  ２  ２  ２  ２  ２  ２  ２  ２
のように展開し、ラン長のみの情報を３，２，３，２，３，２，３，２，３．．．．のように求める。
【０２３２】
そして、ここでは８ドットを繰り返す図６７に示すような全ての繰り返しのパターン、３つのラン長のみからなる図６８のようなパターンから、入力されたデータの繰り返しパターンを認識し、上記の例のようにラン長を展開し、８個のランを埋めるに十分な数のデータ数をREPSHとしてFIFO４４１へ返し、また、そのランの数WRUNLENGとラン長と、８個のランを埋めて余った、最後の途中繰り返し数をレジスタ４４５へ送る。
【０２３３】
WNREPの補足を行う。例えば、以下のような例では、
ＷＷＣＯＬ      ０  １  ２  ３  ４  ５  ６  ７  ８
カラー      ０：３  ３  ３  ３  ３  ３  ３  ３  ３
１：５  ２  ２  ２  ２  ２  ２  ２  ２
以下の８個のランで十分なため、繰り返しのWREP2の４つの繰り返しは途中の２までの繰り返ししか使用せず、残りの２個の繰り返しはNREPに保持される。このように残りの繰り返しがある場合、それはフラグWNREPFLを立て繰り返し数生成装置４４３へ送られ、次の１番目の繰り返し数として使用される。
【０２３４】
ＷＷＣＯＬ      ０  １  ２
カラー      ０：３  ３  ３
１：５  ２  ２
【０２３５】
このラン長生成装置４４４の処理フローを図４９乃至図５７に示す。
【０２３６】
《画像伸長装置のDOT化処理装置４０５》
図４１は画像伸長装置１０６ｄのDOT化処理装置４０５のブロック図である。このDOT化処理装置４０５は、ＦＩＦＯ４５１、DOT化装置４５２、TOATALラン長生成装置４５３、シフト値生成装置４５４、差分生成装置４５５、RUN0生成装置４５６から構成される。
【０２３７】
DOT化処理装置４０５において、DOT化装置４５２で、ＦＩＦＯ４５１から８個のラン長を受け取り、ラン長のDOT化を行う。その８個のラン長のどこで８ドットを満たすかを判断するため、TOTALラン長生成装置４５３により、８個のランのそれぞれの位置でのラン長の合計を求める。シフト値生成装置４５４により、８ドットを満たすラン長の位置をみつけ、FIFO４５１へ消費したラン長の数を知らせて次の８ドットのためのシフトをさせる。８個のラン長のどれかが８ドットを満たした時の余りを持つ場合、その余りのラン長を求めるため、差分生成装置４５５で、TOTALラン長生成装置４５３からの８個の合計ラン長と値の８値からの差を求める。RUN0生成装置４５６で、実際に使用したランの値をシフト生成装置４５４から受け取ってRUN0を選択し、それをFIFO４５１へ送る。以上の処理を１クロックで行うことにより、毎クロックごとに８個の画素を復号化することができる。
【０２３８】
次に、各部をより詳細に説明する。FIFO４５１は、ラン長処理装置４０４から８個のラン長と、そのラン長の有効数RUNLENGなどを受け取り、順次格納し、DOT化装置４５２とTOTALラン長生成装置４５３へ８個のラン長などを送る。また、８個のラン長のいずれかがが８ドットを満たした時の余りを持つ場合に、DOT化装置４５２より、フラグSTAで余りが有ることを通知され、シフト生成装置４５４より、消費したラン長の数を通知され、RUN0生成装置４５６より、その余りのラン長を通知される。FIFO４５１は、余りがあることを通知されると、通知された余りのラン値RUN0を次の最初のラン値として、指定されたシフトを行うことにより次のデータを出力する。
【０２３９】
DOT化装置４５２は、FIFO４５１から８個のラン値などを受け取り、８個のドットを埋める８個のランの組み合わせ全てを認識し、その最初から幾つかのランを使用して８ドットを埋め込むことにより、８個のドットを生成する。もし、８個のラン長のどれかが、８ドットを満たした時に余りを持つ場合、フラグSTAにて余りがあることをFIFO４５１へ知らせる。
【０２４０】
このDOT化装置４５２の処理フローを図５８に示す。また、図５８中のステップＳ３３０４の詳細内容を図６０に、ステップＳ３０５の詳細内容を図６１に、ステップＳ３３０８の詳細内容を図６２に、ステップＳ３３０９の詳細内容を図６３に、ステップＳ３３０６の詳細内容を図５９に、それぞれ示す。
【０２４１】
図５８において、ステップＳ３３０１で、最初のPASSフラグであるPASSFL0の値が”1”であると判定したならば、PASS処理を行う。すなわち、ステップＳ３３０２で、最初のラン長値の８ビットを画像データとして出力する。次に、ステップＳ３３１０で、次のラン長の値をPASS符号の次のドットのMSB値であるNCOLの最初の値NCOL0に設定する。
【０２４２】
ステップＳ３３０１でPASSFL0の値が”1”でないと判定した場合には、ステップＳ３３０３でラン長の色値が”１”であるか判定する。”１”ならば、ステップＳ３３０５の処理を実行するが、”0”ならばステップＳ３３０４の処理を実行する。ステップＳ３３０４では、画像データの最初の４ビットを、図６０に示すように、各ラン長の値から求める。ステップＳ３３０５では、画像データの最初の４ビットを、図６１に示すように、各ラン長の値から求める。
【０２４３】
次に、ステップＳ３３０６で、図５９に示すように、最大８個のラン長から次の４ビットへ引き続く４つのラン長を求める。
【０２４４】
次に、ステップＳ３３０７で、次の４ビットのラン長の最初の色値が”１”であるか判定し、”１”ならばステップＳ３３０８を実行し、”０”であればステップＳ３３０７の処理を実行する。ステップＳ３３０８では、次の４ビットの画像データを、図６２に示すように、残りのラン長の値から求める。ステップＳ３３０９では、次の４ビットの画像データを、図６３に示すように、残りのラン長の値から求める。
【０２４５】
TOTALラン長生成装置４５３は、８個のラン長(WRUN0〜WRUN7)のどこで８ドットを満たすかを判断するため、８個のランのそれぞれの位置でのラン長の合計ACWRUN0,ACWRUN1,ACWRUN2,ACWRUN3,ACWRUN4,ACWRUN5,ACWRUN6,ACWRUN7を求める。
ここで、
ACWRUN0=WRUN0（ラン長１と等しい）
ACWRUN1=WRUN0+WRUN1（ラン長１とラン長２の合計）
ACWRUN2=WRUN0+WRUN1＋WRUN2（ラン長１とラン長２とラン長３の合計）
ACWRUN3=WRUN0+WRUN1＋WRUN2＋WRUN3
ACWRUN4=WRUN0+WRUN1＋WRUN2＋WRUN3+WRUN4
ACWRUN5=WRUN0+WRUN1＋WRUN2＋WRUN3+WRUN4+WRUN5
ACWRUN6=WRUN0+WRUN1＋WRUN2＋WRUN3+WRUN4+WRUN5+WRUN6
ACWRUN7=WRUN0+WRUN1＋WRUN2＋WRUN3+WRUN4+WRUN5+WRUN6+WRUN7
である。
【０２４６】
このTOATALラン長生成装置４５３の処理フローを図６６に示す。
【０２４７】
シフト値生成装置４５４は、８ドットを満たすラン長の位置をみつけるため、TOTALラン長生成装置４５３から受け取った８個の合計のラン長を最初から優先させて８値以上となる位置をみつけ、それをFIFO４５１及びRUN0生成装置４５６へ知らせる。このシフト値生成装置４５３の処理フローを図６５に示す。
【０２４８】
差分生成装置４５５は、８個のラン長のどれかが、８ドットを満たした時に余りを持つ場合、その余りのラン長を求めるため、TOTALラン長生成装置４５３より受け取った８個の合計ラン長と各ラン長までのトータル値の８値からの差を求め、得られた余りのラン長をＦＩＦＯ４５１へ知らせる。この差分生成装置４５５の処理フローを図６４に示す。
【０２４９】
RUN0生成装置４５６は、実際に使用したランの値をシフト生成装置４５４から受け取り、それに基づいて、差分生成装置４５５より受け取った８個の点での余り値の値を選択し、それを最後のラン長の余りRUN0としてFIFO４５１へ送る。このRUN0生成装置４５６の処理フローを図４６に示す。
【０２５０】
なお、８ビット並列処理の例を説明したが、これ以外のビット数の並列処理も同様に考えることができる。
【０２５１】
また、以上に説明した本発明の画像圧縮方法及び画像伸長方法は、コンピュータでソフトウェアにより実施することも可能である。そのためのプログラムと、同プログラムを記録したコンピュータ読み取り可能な記録媒体も本発明に包含されることは当然である。
【０２５２】
【発明の効果】
以上の説明から明らかなように、（１）請求項１乃至４記載の画像圧縮装置及び請求項６乃至９記載の画像圧縮方法においては、符号化しようとするワードごとにデータ量の膨張を判断し、膨張する場合にパス符号化を行うことにより、符号化によるデータ量の膨張を確実に回避することができ、また、従来技術におけるような余分なラインメモリやブロックメモリを必要とせず、また、ラインごとに又はブロックごとに区切って画像圧縮を行う構成ではないため高い圧縮率で画像圧縮を行うことができ、また、並列処理により、動作クロックの周波数をそれほど上げなくとも高速の画像圧縮を行うことができる。（２）さらに、請求項２記載の画像圧縮装置においては、並列処理ビット数を越えるラン長とその繰り返し数も求めることができるため、長いラン長を効率よく符号化し、一層の圧縮率向上を達成できる。（３）さらに請求項３，４記載の画像圧縮装置及び請求項８，９記載の画像圧縮方法においては、無用なパス符号化を行うことによる圧縮率の低下を回避することができる。（４）請求項５記載の画像形成装置においては、画像圧縮／伸長処理のために余分なラインメモリやブロックメモリが不要であり、圧縮処理によるデータ量の膨張も回避されかつ高い圧縮率での圧縮が可能であるため、符号データの蓄積のためのメモリ量も削減することができ、したがって全体として省メモリ化が可能であり、また、高速な圧縮／伸長処理が可能であるため、画像データの圧縮蓄積にかかる時間の短縮、及び、符号データの伸長・画像形成にかかる時間の短縮を図ることができる等々の効果を得られる。
【図面の簡単な説明】
【図１】  本発明を実施した多色画像形成装置の全体的構成の一例を示す概略断面図である。
【図２】  多色画像形成装置の電装・制御装置の構成の一例を示すブロック図である。
【図３】  画像圧縮装置の全体構成を示すブロック図である。
【図４】  画像圧縮装置の画像読み込み部のブロック図である。
【図５】  画像圧縮装置のラン長処理装置のブロック図である。
【図６】  画像圧縮装置のNEXTワードチェック処理装置のブロック図である。
【図７】  画像圧縮装置のPASS判定＆繰り返し処理装置のブロック図である。
【図８】  画像圧縮装置のPASS判定＆繰り返し処理装置内のPASS判定装置のブロック図である。
【図９】  画像圧縮装置の符号化処理装置の入出力信号を示す図である。
【図１０】  画像圧縮装置の符号化処理装置のブロック図である。
【図１１】  画像圧縮装置の符号フォーマットを示す図である。
【図１２】  画像圧縮装置のPASS符号化の説明図である。
【図１３】  画像圧縮装置のPASS符号化の説明図である。
【図１４】  画像圧縮装置のラン長処理装置の処理例の説明図である。
【図１５】  画像圧縮装置のラン長処理装置内のランカウントの処理フローを示すフローチャートである。
【図１６】  画像圧縮装置のラン長処理装置内のランカウントの処理フローを示すフローチャートである。
【図１７】  画像圧縮装置のラン長処理装置内のマスク値合成装置の処理フローを示すフローチャートである。
【図１８】  画像圧縮装置のラン長処理装置内のマスク値合成装置の処理フローを示すフローチャートである。
【図１９】  画像圧縮装置のラン長処理装置内のRightラン値生成装置の処理フローを示すフローチャートである。
【図２０】  画像圧縮装置のラン長処理装置内のRightラン値生成装置の処理フローを示すフローチャートである。
【図２１】  画像圧縮装置のラン長処理装置内のLeftラン値生成装置の処理フローを示すフローチャートである。
【図２２】  画像圧縮装置のラン長処理装置内のラン値合成装置の処理フローを示すフローチャートである。
【図２３】  画像圧縮装置における繰り返し処理の説明図である。
【図２４】  画像圧縮装置のPASS判定＆繰り返し処理装置内の繰り返し数生成装置の処理フ
ローを示すフローチャートである。
【図２５】  画像圧縮装置のPASS判定＆繰り返し処理装置内の繰り返しフラグ生成装置の処理フローを示すフローチャートである。
【図２６】  画像圧縮装置の符号化処理装置２０６の全体的な処理フローを示すフローチャートである。
【図２７】  画像圧縮装置のPASS判定＆繰り返し処理装置内のNEXTランレングス生成装置の
処理フローを示すフローチャートである。
【図２８】  画像圧縮装置の符号化処理装置内の符号化装置の処理フローを示すフローチャートである。
【図２９】  画像圧縮装置の符号化処理装置内の符号化装置の処理フローを示すフローチャートである。
【図３０】  画像圧縮装置のPASS判定＆繰り返し処理装置内の繰り返し数生成装置の処理フローを示すフローチャートである。
【図３１】  画像圧縮装置のPASS判定＆繰り返し処理装置内の繰り返し数生成装置の処理フローを示すフローチャートである。
【図３２】  画像圧縮装置のPASS判定＆繰り返し処理装置内の繰り返し数生成装置の処理フローを示すフローチャートである。
【図３３】  画像圧縮装置のPASS判定装置内の符号長処理装置の処理フローを示すフローチャートである。
【図３４】  画像圧縮装置のPASS判定装置内の符号長補正装置の処理フローを示すフローチャートである。
【図３５】  画像圧縮装置のPASS判定装置内のPASSフラグ生成装置の処理フローを示すフローチャートである。
【図３６】  画像伸長装置の全体構成を示すブロック図である。
【図３７】  画像伸長装置の符号読み込み部のブロック図である。
【図３８】  画像伸長装置の符号解釈処理装置のブロック図である。
【図３９】  画像伸長装置の符号解釈処理装置の処理例の説明図である。
【図４０】  画像伸長装置のラン長処理装置のブロック図である。
【図４１】  画像伸長装置のDOT化処理装置のブロック図である。
【図４２】  画像伸長装置の符号解釈処理装置内の符号解析装置の処理フローを示すフローチャートである。
【図４３】  画像伸長装置の符号解釈処理装置内の有効フラグ生成装置の処理フローを示すフローチャートである。
【図４４】  画像伸長装置の符号解釈処理装置内の有効データ数生成装置の処理フローを示すフローチャートである。
【図４５】  画像伸長装置の符号解釈処理装置内の空き領域削除装置の処理フローを示すフローチャートである。
【図４６】  画像伸長装置のDOT化処理装置内のRUN0生成装置の処理フローを示すフローチャートである。
【図４７】  画像伸長装置のラン長処理装置内の基準ラン長生成装置の処理フローを示すフローチャートである。
【図４８】  画像伸長装置のラン長処理装置内の繰り返し数生成装置の処理フローを示すフローチャートである。
【図４９】  画像伸長装置のラン長処理装置内のラン長生成装置の処理フローを示すフローチャートである。
【図５０】  画像伸長装置のラン長処理装置内のラン長生成装置の処理フローを示すフローチャートである。
【図５１】  画像伸長装置のラン長処理装置内のラン長生成装置の処理フローを示すフローチャートである。
【図５２】  画像伸長装置のラン長処理装置内のラン長生成装置の処理フローを示すフローチャートである。
【図５３】  画像伸長装置のラン長処理装置内のラン長生成装置の処理フローを示すフローチャートである。
【図５４】  画像伸長装置のラン長処理装置内のラン長生成装置の処理フローを示すフローチャートである。
【図５５】  画像伸長装置のラン長処理装置内のラン長生成装置の処理フローを示すフローチャートである。
【図５６】  画像伸長装置のラン長処理装置内のラン長生成装置の処理フローを示すフローチャートである。
【図５７】  画像伸長装置のラン長処理装置内のラン長生成装置の処理フローを示すフローチャートである。
【図５８】  画像伸長装置のDOT化処理装置内のDOT化装置の処理フローを示すフローチャートである。
【図５９】  画像伸長装置のDOT化処理装置内のDOT化装置の処理フローを示すフローチャートである。
【図６０】  画像伸長装置のDOT化処理装置内のDOT化装置の処理フローを示すフローチャートである。
【図６１】  画像伸長装置のDOT化処理装置内のDOT化装置の処理フローを示すフローチャートである。
【図６２】  画像伸長装置のDOT化処理装置内のDOT化装置の処理フローを示すフローチャートである。
【図６３】  画像伸長装置のDOT化処理装置内のDOT化装置の処理フローを示すフローチャートである。
【図６４】  画像伸長装置のDOT化処理装置内の差分生成装置４５５の処理フローを示すフローチャートである。
【図６５】  画像伸長装置のDOT化処理装置内のシフト値生成装置の処理フローを示すフローチャートである。
【図６６】  画像伸長装置のDOT化処理装置内のTOATALラン長生成装置の処理フローを示すフローチャートである。
【図６７】  繰り返しパターンを示す図である。
【図６８】  繰り返しパターンを示す図である。
【符号の説明】
１０６ｅ  画像圧縮装置
１０６ｄ  画像伸長装置
２０２  画像読み込み部
２０３  ラン長処理装置
２０４  NEXTワードチェック処理装置
２０５  PASS判定＆繰り返し処理装置
２０６  符号化処理装置
２０７  符号書き込み部
２１３  アドレス生成部
２１１，２１２  レジスタ
２２１，２２２  ランカウント
２２３  Leftラン値生成装置
２２４  Rightラン値生成装置
２２５  マスク値合成装置
２２６  ラン値合成装置
２２７，２２８  加算器
２２９  レジスタ
２７１  繰り返しフラグ生成装置
２７２  繰り返し数生成装置
２７３  空き領域削除装置
２７４  PASS判定装置
２７５  マルチプレクサ
２７６  レジスタ
２７７  NEXTランレングス生成装置
２７８  レジスタ
２８１  符号長処理装置
２８２  符号長補正装置
２８３  PASSフラグ生成装置
２９１〜２９４  符号化装置
２９５  符号長計算装置
２９６〜２９９  符号位置合わせ装置
３００  ＯＲ回路
３０１  レジスタ
４０２  符号読み込み部
４０３  符号解釈処理装置
４０４  ラン長処理装置
４０５  DOT化処理装置
４０６  画像書き込み部
４１４  アドレス生成部
４１１，４１２  レジスタ
４１３  シフタ
４２１〜４２６  符号解析装置
４２７  有効フラグ生成装置
４２８  有効データ数生成装置
４２９  空き領域削減装置
４３０  レジスタ
４４１  ＦＩＦＯ
４４２  基準ラン長生成装置
４４３  繰り返し数生成装置
４４４  ラン長生成装置
４４５  レジスタ
４５１  ＦＩＦＯ
４５２  DOT化装置
４５３  Totalラン長生成装置
４５４  シフト値生成装置
４５５  差分生成装置
４５６  RUN0生成装置
【図１】
0003865203.tif 000002
【図２】
0003865203.tif 000003
【図３】
0003865203.tif 000004
【図４】
0003865203.tif 000005
【図５】
0003865203.tif 000006
【図６】
0003865203.tif 000007
【図７】
0003865203.tif 000008
【図８】
0003865203.tif 000009
【図９】
0003865203.tif 000010
【図１０】
0003865203.tif 000011
【図１１】
0003865203.tif 000012
【図１２】
0003865203.tif 000013
【図１３】
0003865203.tif 000014
【図１４】
0003865203.tif 000015
【図１５】
0003865203.tif 000016
【図１６】
0003865203.tif 000017
【図１７】
0003865203.tif 000018
【図１８】
0003865203.tif 000019
【図１９】
0003865203.tif 000020
【図２０】
0003865203.tif 000021
【図２１】
0003865203.tif 000022
【図２２】
0003865203.tif 000023
【図２３】
0003865203.tif 000024
【図２４】
0003865203.tif 000025
【図２５】
0003865203.tif 000026
【図２６】
0003865203.tif 000027
【図２７】
0003865203.tif 000028
【図２８】
0003865203.tif 000029
【図２９】
0003865203.tif 000030
【図３０】
0003865203.tif 000031
【図３１】
0003865203.tif 000032
【図３２】
0003865203.tif 000033
【図３３】
0003865203.tif 000034
【図３４】
0003865203.tif 000035
【図３５】
0003865203.tif 000036
【図３６】
0003865203.tif 000037
【図３７】
0003865203.tif 000038
【図３８】
0003865203.tif 000039
【図３９】
0003865203.tif 000040
【図４０】
0003865203.tif 000041
【図４１】
0003865203.tif 000042
【図４２】
0003865203.tif 000043
【図４３】
0003865203.tif 000044
【図４４】
0003865203.tif 000045
【図４５】
0003865203.tif 000046
【図４６】
0003865203.tif 000047
【図４７】
0003865203.tif 000048
【図４８】
0003865203.tif 000049
【図４９】
0003865203.tif 000050
【図５０】
0003865203.tif 000051
【図５１】
0003865203.tif 000052
【図５２】
0003865203.tif 000053
【図５３】
0003865203.tif 000054
【図５４】
0003865203.tif 000055
【図５５】
0003865203.tif 000056
【図５６】
0003865203.tif 000057
【図５７】
0003865203.tif 000058
【図５８】
0003865203.tif 000059
【図５９】
0003865203.tif 000060
【図６０】
0003865203.tif 000061
【図６１】
0003865203.tif 000062
【図６２】
0003865203.tif 000063
【図６３】
0003865203.tif 000064
【図６４】
0003865203.tif 000065
【図６５】
0003865203.tif 000066
【図６６】
0003865203.tif 000067
【図６７】
0003865203.tif 000068
【図６８】
0003865203.tif 000069