(57)【要約】【課題】多段階圧縮された圧縮データの展開時、メモリアクセス回数が少なくて済み、且つ回路規模も大きくなりすぎない画像処理装置を提供する。【解決手段】本発明では、Ｎ回目の符号化によって得られた代表色を展開すべき位置を、１〜Ｎ回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号手段と、Ｍ回目（Ｍは１〜Ｎのいずれかの整数）の符号化によって得られた補間色を展開すべき位置を、１〜Ｍ回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記Ｍ回目の符号化によって得られた補間色を展開するＮ個の補間色復号手段とを設け、前記代表色復号手段と前記Ｎ個の補間色復号手段はそれぞれ独立して動作するように構成する。【選択図】  図１３
2012095227.tif 000002
【特許請求の範囲】
【請求項１】
画像データを２×２画素サイズのブロックごとに分割し、当該分割された各ブロックにおける所定の位置の画素の画素値を代表色、前記各ブロックにおける代表色以外の画素値を補間色、前記各ブロックにおける前記代表色と前記補間色の配置パターンを配置情報として取得し、前記代表色と前記補間色と前記配置情報とをそれぞれ異なる記憶領域に記憶する符号化手段により、Ｎ−１回目（Ｎは２以上の整数）の符号化により得られた代表色からなる画像データに対してＮ回目の符号化を行うことで得られた圧縮データを復号する画像処理装置であって、
前記符号化手段によるＮ回目の符号化によって得られた代表色を展開すべき位置を、前記符号化手段による１〜Ｎ回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号手段と、
前記符号化手段によるＭ回目（Ｍは１〜Ｎのいずれかの整数）の符号化によって得られた補間色を展開すべき位置を、前記符号化手段による１〜Ｍ回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記Ｍ回目の符号化によって得られた補間色を展開するＮ個の補間色復号手段と
を有し、
前記代表色復号手段と、前記Ｎ個の補間色復号手段は、それぞれ独立して動作することを特徴とする画像処理装置。
【請求項２】
前記代表色復号手段は、
前記符号化手段によるＮ回の符号化によって取得された前記配置情報それぞれを用いて、展開後の画像における前記代表色を展開すべき位置を特定する第一特定手段と、
前記第一特定手段にて特定した前記代表色を展開すべき位置に対応する、前記展開後の画像のデータが格納される展開領域のメモリアドレスを算出する第一メモリアドレス算出手段と、
前記第一メモリアドレス算出手段にて算出した展開領域のメモリアドレスに前記代表色を格納する第一格納手段と
を有することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記Ｍ回目の符号化によって得られた補間色を展開する補間色復号手段は、
前記符号化手段による１〜Ｍ回の符号化によって取得された前記配置情報それぞれを用いて、展開後の画像における前記補間色を展開すべき位置を特定する第二特定手段と、
前記第二特定手段によって特定した前記補間色を展開すべき位置に対応する、前記展開後の画像のデータが格納される展開領域のメモリアドレスを算出する第二メモリアドレス算出手段と、
前記第二メモリアドレス算出手段にて算出した展開領域のメモリアドレスに前記Ｍ回目の符号化によって得られた補間色を格納する第二格納手段と
を有することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
画像データを２×２画素サイズのブロックごとに分割し、当該分割された各ブロックにおける所定の位置の画素の画素値を代表色、前記各ブロックにおける代表色以外の画素値を補間色、前記各ブロックにおける前記代表色と前記補間色の配置パターンを配置情報として取得し、前記代表色と前記補間色と前記配置情報とをそれぞれ異なる記憶領域に記憶する符号化手段により、Ｎ−１回目（Ｎは２以上の整数）の符号化により得られた代表色からなる画像データに対してＮ回目の符号化を行うことで得られた圧縮データを復号する画像処理方法であって、
代表色復号手段が、前記符号化手段によるＮ回目の符号化によって得られた代表色を展開すべき位置を、前記符号化手段による１〜Ｎ回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号工程と、
Ｎ個の補間色復号手段それぞれが、前記符号化手段によるＭ回目（Ｍは１〜Ｎのいずれかの整数）の符号化によって得られた補間色を展開すべき位置を、前記符号化手段による１〜Ｍ回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記Ｍ回目の符号化によって得られた補間色を展開する補間色復号工程と
を有し、
前記代表色復号手段により実行される前記代表色復号工程と、前記Ｎ個の補間色復号手段により実行される前記補間色復号工程は、それぞれ独立して行われることを特徴とする画像処理方法。
【請求項５】
画像データを２×２画素サイズのブロックごとに分割し、当該分割された各ブロックにおける所定の位置の画素の画素値を代表色、前記各ブロックにおける代表色以外の画素値を補間色、前記各ブロックにおける前記代表色と前記補間色の配置パターンを配置情報として取得し、前記代表色と前記補間色と前記配置情報とをそれぞれ異なる記憶領域に記憶する符号化手段により、Ｎ−１回目（Ｎは２以上の整数）の符号化により得られた代表色からなる画像データに対してＮ回目の符号化を行うことで得られた圧縮データを復号するために、
コンピュータを、
前記符号化手段によるＮ回目の符号化によって得られた代表色を展開すべき位置を、前記符号化手段による１〜Ｎ回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号手段、
前記符号化手段によるＭ回目（Ｍは１〜Ｎのいずれかの整数）の符号化によって得られた補間色を展開すべき位置を、前記符号化手段による１〜Ｍ回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記Ｍ回目の符号化によって得られた補間色を展開するＮ個の補間色復号手段
として機能させ、
前記代表色復号手段と、前記Ｎ個の補間色復号手段は、それぞれ独立して動作させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を所定のブロック単位に圧縮する技術とブロック単位に圧縮された画像の画像処理や復号化処理を行う技術に関する。
【背景技術】
【０００２】
従来、高解像度のカラー画像への需要は高く、それらの高画質化への要望へ応えるべくデジタル複合機では１２００ｄｐｉやそれを超える解像度の画像を扱うことが多くなってきている。画像の高解像度化が進むにつれて、画像処理を必要とする画素数が飛躍的に増え、その処理負荷が増大しているという課題がある。デジタル複合機に限らず、デジタルカメラやファクシミリ装置などの画像処理装置では、メモリ／ハードディスク量の節約やそれらへの書き込み時間を短縮するために、カラー画像データの圧縮を行い、低コスト化や高速化を実現している。
【０００３】
カラー静止画像の圧縮方式には、離散コサイン変換を利用したＪＰＥＧ方式やＷａｖｅｌｅｔ変換を利用した方式が多く使われている。この種の符号化方式は、一般的に画像を所定のブロック（例えば８×８や１６×１６画素単位）に符号化し、離散コサイン変換、量子化及びエントロピー符号化を行うことで高い圧縮効率を達成している。この種の符号化方式は、可変長符号化方式であるので、符号化対象の画像毎に符号量が変化するものである。これらの画像圧縮を用いた場合、その画素データを参照し、その画素データを変換するには、圧縮データの復号処理が必要になる。つまり、圧縮データのままで画像処理を行うことはできず、必ず復号処理が必要になり、高解像度データ全ての画素に対して画素単位に処理を行う必要が出てしまい、処理時間の増大を招く。
【０００４】
圧縮処理を行う技術としては、画素データとその連続数を記憶する公知のランレングス圧縮方式やブロック単位でエッジを検出し、そのエッジの持つ２色を記憶することで圧縮する技術が開示されている（例えば、特許文献１、特許文献２）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２７１０４６号公報
【特許文献２】特開平１０−２５７４８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１においては、ブロック内を２色化し、その２色の配置に関する形状情報と２色の色情報を記憶していた。これに対し、さらなる高画質化、処理高速化を図るため、本願出願人による先願である特願２００９−２２１４４４では、２以上の色数を持つブロックの画質を落とさずに高圧縮化を実現している。特願２００９−２２１４４４では、まず、画像データをブロック（例えば２×２画素サイズのブロック）毎に分割する。そして、ブロック内の各画素の色データを比較することにより、注目ブロックに含まれる色データの配置パターン情報と、注目ブロックに含まれる色数分の色データ情報とを出力する。そして、出力された色データ情報のうち、各ブロックの予め決められた特定位置の画素に対応する第１の色データ情報と、その他の色データ情報（２×２画素ブロックの場合は第２〜４色の色データ情報）とに分けて、それぞれ異なるメモリ領域にまとめて格納する。したがって、メモリ領域には、配置パターン情報と、第１色の色データ情報と、その他の色データ情報とがそれぞれまとめて格納されることになる。これにより、特定位置の間引き画像データ（すなわち第１色の色データ情報）を連続メモリ領域に置くことになるので、第１色の色データ情報を読み出すだけで、複雑な復号化処理を必要とせずに、半分の解像度の低解像度画像を扱える。
【０００７】
一方で、特願２００９−２２１４４４では、該圧縮技術で圧縮されたデータを展開処理する方法についても述べられている。例えば、図１９に示すように、まず注目ブロックの配置パターン情報と第１の色データ情報をメモリから読み込み、更に、配置パターン情報に基づいて、必要な色数分だけその他の色データ情報（第２〜４色の色データ情報）を読込む。そして、配置パターン情報にしたがって、第１の色データ情報とその他の色データ情報とをメモリ上に配置することで、データの展開（復号化）を行う。
【０００８】
また、本出願人は、特願２００９−２２１４４４で提案している圧縮技術を複数回繰り返し適用することにより、多段階圧縮することも考えている。多段階圧縮の手法については、後述する実施形態で詳述するが、簡単に説明すると次のようになる。すなわち、元の画像データに対して上述した圧縮処理（１段階目の圧縮処理）を適用することにより、１段階目の配置パターン情報と、第１色の色データ情報と、その他の色データ情報とに変換する。そして、更に、１段階目の圧縮処理で得られた第１色の色データ情報を次の処理対象画像として、２段階目の圧縮処理を行う。このような多段階圧縮を行えば、１段階目の圧縮処理で得た第１色の色データ情報が、２段階目の圧縮処理による２段階目の配置パターン情報と２段階目の第１色の色データ情報と２段階目のその他の色データ情報に置き換えられることになる。例えば、ブロックのサイズを２×２画素とした場合、その他の色データ情報は第２〜４色の色データ情報で表わされるため、上述した圧縮処理を２段階繰り返し行うと、図１４（ｂ）に示されるような圧縮データが得られる。
【０００９】
一方、１つの展開部を用いて、上述したように多段階圧縮されたデータを圧縮時と逆順で段階的に展開するように構成した場合、以下のような課題が生じると考えられる。第１に、多段階展開時、メモリアクセス回数が多くなることでメモリ帯域が圧迫される。例えば、１６ブロックの処理対象画像（２×２画素サイズのブロックが４×４個存在する画像）に対して第１段階の圧縮処理後の第１色の色データ情報は、４ブロックの画像（２×２画素サイズのブロックが２×２個存在する画像）で構成されることになる。さらに、この４ブロックの画像に対して第２段階の圧縮処理を行った後の第１色の色データ情報は、１ブロックの画像になる。この１ブロックに圧縮された圧縮データを２段階展開して元の画像に展開する場合、まず、第２段階圧縮データの展開処理（２段階目の配置パターン情報に従って、２段階目の第１色の色データ情報と第２〜４色の色データ情報とを展開する処理）で、少なくとも１ブロックの色データ読み出しと４ブロックの色データ書き込みを行う。さらに、そのデータを処理対象として第１段階圧縮データの展開処理を行った場合、少なくとも４ブロックの色データ読み出しと１６ブロックの色データ書き込みを行う。したがって、メモリアクセス回数が大きくなり、メモリ帯域を圧迫する。
【００１０】
また、多段階展開のスループットを上げるために、上述した展開部を複数設けてパイプライン化して、段階的に展開するように構成した場合、第１と第２の展開部の間に配置する中間バッファや、展開部の数が多くなることで、回路規模が増大する。例えば、第２段階圧縮データの展開を行う展開部での展開によって、１ブロックの情報は４ブロック分に増加する。したがって、第２段階圧縮データの展開部でのスループットと同じスループットで、第１段階圧縮データの展開部が展開処理するためには、第１段階圧縮データの展開を行う４つの展開部が必要となり、４ブロック分の中間バッファも必要となる。そのため、全体として展開部は５つ必要となり、中間バッファも含め、回路規模は増加する。さらに、３段階以上圧縮されたデータの展開を行う場合、必要な展開部の数は指数関数的に増加し、回路規模が増加するため、実装が難しくなるといった課題がある。
【００１１】
つまり、多段階圧縮された圧縮データを、１つの展開部で段階的に展開しようとすると、メインメモリへのアクセス回数が多くなり、メモリ帯域を圧迫する。また、複数の展開部をパイプライン化して段階的に展開を行う場合、中間バッファ等、回路規模が増加してしまい、実装が困難となる。
【課題を解決するための手段】
【００１２】
上記課題を解決するために本発明は以下の構成を有する。すなわち、画像データを２×２画素サイズのブロックごとに分割し、当該分割された各ブロックにおける所定の位置の画素の画素値を代表色、前記各ブロックにおける代表色以外の画素値を補間色、前記各ブロックにおける前記代表色と前記補間色の配置パターンを配置情報として取得し、前記代表色と前記補間色と前記配置情報とをそれぞれ異なる記憶領域に記憶する符号化手段により、Ｎ−１回目（Ｎは２以上の整数）の符号化により得られた代表色からなる画像データに対してＮ回目の符号化を行うことで得られた圧縮データを復号する画像処理装置であって、前記符号化手段によるＮ回目の符号化によって得られた代表色を展開すべき位置を、前記符号化手段による１〜Ｎ回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号手段と、前記符号化手段によるＭ回目（Ｍは１〜Ｎのいずれかの整数）の符号化によって得られた補間色を展開すべき位置を、前記符号化手段による１〜Ｍ回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記Ｍ回目の符号化によって得られた補間色を展開するＮ個の補間色復号手段とを有し、前記代表色復号手段と、前記Ｎ個の補間色復号手段は、それぞれ独立して動作することを特徴とする。
【発明の効果】
【００１３】
多段階圧縮データの展開時にメモリアクセス回数が少なく、かつ回路規模を増加させることなく高速化のための実装が容易な復号化方法を提供する。
【図面の簡単な説明】
【００１４】
【図１】本発明に係るＭＦＰシステムの概要示した図。
【図２】本発明に係るコントローラの概要を示した図。
【図３】画像をブロック分割した際にそのブロックのパターンを列挙した図。
【図４】ブロックのパターンとその識別子を列挙した図。
【図５】第一実施形態に係る画像圧縮のフローを示した図。
【図６】第一実施形態に係る１段階圧縮処理に対する入力と出力の関係を示した図。
【図７】第一実施形態に係る１段階圧縮データのメモリ空間上でのレイアウトを示す図。
【図８】第一実施形態に係る２段階圧縮データのメモリ空間上でのレイアウトを示す図。
【図９】本発明に係る展開部２１１の詳細なブロック図を示す図。
【図１０】本発明に係る１段階圧縮データの展開処理フローを示す図。
【図１１】１段階圧縮データのメモリ空間上でのレイアウトの一例を示す図。
【図１２】１段階圧縮データの展開時に出力される展開画素位置を示す図。
【図１３】本発明に係る２段階圧縮データの展開処理フローを示す図。
【図１４】２段階圧縮データのメモリ空間上でのレイアウトの一例を示す図。
【図１５】１段階圧縮データの展開時に出力される展開画素位置を示す図。
【図１６】従来構成と本発明との展開部によるメモリアクセス量の比較を示す図。
【図１７】従来構成と本発明との展開部を並列化して行う場合のブロック図。
【図１８】本発明に係る展開部を並列化して行う場合のブロック図。
【図１９】従来構成の展開部の詳細なブロック図。
【図２０】従来構成の展開部に係る１段階圧縮データの展開処理フローを示す図。
【図２１】第二実施形態に係るリピートフラグの画像例を示す図。
【図２２】第二実施形態に係るリピートフラグを適用した場合の２段階圧縮データのメモリ空間上でのレイアウトの一例を示した図。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下に示す構成は本発明を実現するための一例であり、構成はこれに限定するものではない。本実施形態では、画像処理装置として、スキャン、プリント、コピーなどの複数の機能を有するデジタル複合機（ＭＦＰ：ＭｕｌｔｉＦｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）を例に説明する。
【００１６】
［第一実施形態］
図１に示すように、コントローラ１０１は、画像入力機器であるスキャナ１０２や画像出力機器であるプリンタ１０３と接続される。また、コントローラ１０１はＬＡＮや公衆回線（ＷＡＮ）などのネットワーク１０４と接続することで、画像情報やデバイス情報の入出力、ＰＤＬデータのイメージ展開を行う。ＣＰＵ１０５は、後述するＨＤＤ記憶部１０７に格納されたプログラムを実行することにより、ＭＦＰ全体を制御するプロセッサである。メモリ１０６は、ＣＰＵ１０５が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。ＨＤＤ記憶部１０７は、ハードディスクドライブであり、システムソフトウェアやプログラム、画像データなどを格納する。
【００１７】
次に、図２に示すコントローラ１０１の構成例を参照してコントローラ１０１の各部の詳細な処理を説明する。まず、スキャナ１０２によってスキャンされた画像データを読み込む場合を説明する。スキャナ１０２で読み取られたＲＧＢ（レッド、グリーン、ブルー）３色の画像データ（ラスタ画像）をスキャナ用画像処理部２０１が受け取る。そして、その画像データに対してシェーディング処理やフィルタ処理等の画像処理を行い、圧縮部２０２で圧縮（符号化）処理を行う。そして、圧縮部２０２で圧縮されたデータ（圧縮データ）は、画像メモリバスを介してメモリ１０６に格納される。
【００１８】
次に、スキャンされた画像データをプリントする場合、メモリ１０６に格納された圧縮データを、画像メモリバスを介して展開部２１１へ転送する。展開部２１１は、圧縮部２０２で圧縮されたデータを展開（復号化）し、色処理部２１２へ転送する。そして、色処理部２１２がＣＭＹＫ（シアン、マゼンタ、イエロー、ブラック）色空間へ変換する。その後、更に色処理部２１２がＣＭＹＫの各値に対して濃度調整やプリンタガンマ補正などの色処理を行った後、該色処理後のデータを、圧縮部２０２に転送して改めて圧縮処理を行い、画像メモリバスを介してメモリ１０６に再度格納する。その後、プリント用の画像処理を行うために、メモリ１０６に格納されているラスタ画像データを、画像メモリバスを介して展開部２１１、プリント用画像処理部２２１の順に転送し、展開処理とプリント用画像処理を行う。プリント用画像処理部２２１は、入力されたラスタのＣＭＹＫ画像データを、ディザ法や誤差拡散法による面積階調処理を行い、プリンタ１０３へ出力する。ここでの面積階調処理については、上記に述べた方法に限定するものではなく、本発明を適用可能であれば他の手法による面積階調処理を適用しても構わない。
【００１９】
また、スキャンされた画像データをネットワークへ送信する場合、メモリ１０６に格納されている圧縮データを、画像メモリバスを介して展開部２１１に転送する。そして展開されたラスタデータを、色処理部２１２へ転送する。色処理部２１２は、ディスプレイガンマ調整や用紙地色調整等を行った後、ＹＣｂＣｒ（輝度、ＢＬＵＥ色差、ＲＥＤ色差）色空間へ変換する。そして、色処理部２１２で処理されたデーを、圧縮部２０２に転送して改めて圧縮し、再度画像メモリバスを介してメモリ１０６に格納する。その後、送信用の画像処理を行うために、画像メモリバスを介してメモリ１０６に格納されている圧縮データを展開部２１１へ転送する。そして、展開部２１１が圧縮データをラスタ画像データに展開する。その後、ラスタのＹＣｂＣｒ画像データに対して送信処理部２３３がカラー画像送信であればＪＰＥＧ圧縮処理を行い、モノクロの２値画像送信であればＹデータに対して２値化を行ってＪＢＩＧ圧縮等を行い、ネットワーク１０４へ出力する。
【００２０】
また、スキャンされた画像データを保存する場合、メモリ１０６に格納されている圧縮データを、画像メモリバスを介してディスクスプール高圧縮／展開部２４２へ転送する。ディスクスプール高圧縮／展開部２４２では、ＨＤＤへの書き込みスピードがメモリへの書き込みスピードに対して遅いため、更に高圧縮のＪＰＥＧ圧縮を施す。その後、ディスクアクセスコントローラ２４３を介してＨＤＤ記憶部１０７へ圧縮データを保存する。また、ＨＤＤ記憶部１０７に保存されている圧縮データをメモリ１０６に再度転送する場合には、上述した処理を逆に行えば良い。
【００２１】
ここで、図１に示すネットワーク１０４を介して接続された他の装置から送られてきたＰＤＬデータをメモリ１０６へ書き込む場合を説明する。図２にはＰＤＬ解釈部が図示されていないが、ＰＤＬ解釈部として機能するＣＰＵ１０５がＰＤＬデータを解釈し、その結果のディスプレイリストをメモリ１０６に出力する。その後、メモリ１０６に格納されているディスプレイリストをレンダリング部２５３がラスタのＲＧＢ画像データとしてレンダリングを行い、圧縮部２０２が当該レンダリングされたＲＧＢ画像データ（ラスタ画像データ）に対して画像圧縮処理を行う。そして、画像圧縮処理された後の圧縮データを、画像メモリバスを介してメモリ１０６に格納する。尚、ＰＤＬデータをプリント、ネットワークへ送信、保存する処理は、スキャンされた画像データの場合と同様の処理を行うことで実現可能である。
【００２２】
［圧縮処理］
次に、ラスタ画像データの符号化による圧縮処理を詳細に説明する。なお、本実施形態において、すべての圧縮処理は、圧縮部２０２にて行われるものとするが、この構成に限るものではない。例えば、図２のようにすべての圧縮処理を圧縮部２０２で行うのではなく、複数の圧縮処理部を設けて、画像パスごとに圧縮部を分散して使用するように構成しても構わない。本実施形態では、まずページ単位のラスタ画像データを、２×２画素単位のブロック毎に分割し、分割して抽出されたブロックを単位にデータの圧縮処理を行う。
【００２３】
ここで本実施形態における圧縮処理を説明する前に、２×２画素からなるブロックの中に占める色数に応じてその組み合わせの場合の数を考える。ここで、ブロックに含まれる画素数が４画素なので、各ブロック内に占める色数は最大４色になり、ブロック内では高々１色〜４色の組み合わせしか存在しない。図３は、色数が１色〜４色のそれぞれの場合に、生じうるブロック内の色の配置パターンを示す図である。
【００２４】
まず、ブロック内の色数が１色の場合、４画素がすべて同色で構成されていることになるので、その組み合わせは１通りである。
【００２５】
次に、ブロック内の色数が２色の場合を考える（各色を第１色と第２色と呼ぶこととする）。ブロック内の予め決められた所定の位置の画素（本実施形態ではブロック内の左上の画素とする）の色データを第１色として考えると、左上画素以外の残りの３画素へ第１色もしくは第２色が入るので、４画素同色の場合を除くと、７通りの組み合わせが考えられる。
【００２６】
次に、ブロック内の色数が３色（第１色〜第３色）の場合を考える。３色が４画素内にレイアウトされる場合の組み合わせは、３色のうち１色だけ２度使われる場合の数と言い換えることが可能であり、４画素の座標のうち、２画素が同じ色になる場合の数を求めれば良い。つまり、３色の場合の組み合わせの数は、４つの座標から２つの座標を取る組み合わせとなり、全部で６通りとなる。また、ブロック内の色数が４色（第１色〜第４色）の場合の組み合わせは１通りである。
【００２７】
以上により、２×２画素からなるブロック内の色数が１色〜４色の全ての場合の組み合わせ数を合計すると、全部で１５通りの配置パターンが考えられる。また、これら全てのパターンを識別するためにフラグ（識別子）を付与することを考えると、フラグのデータ量としては４ビット必要となる。この１５通りのパターンとフラグとの関係を図４に示すように定義し、以下、この配置情報を示すフラグを「パターンフラグ」と呼ぶ。また、第１色をそのブロックにおける「代表色」、第２色、第３色、第４色（すなわち、代表色以外の色）をまとめて「補間色」とも呼ぶ。なお、ブロックを構成する画素数は２×２画素に限定されるものではなく、このサイズよりも大きくても構わない。なお、その場合には配置パターンの組み合わせ数が増えるので、４ビットで表現していたパターンフラグのビット数も増加する。
【００２８】
［圧縮処理フロー］
上述のように、２×２画素のブロック内において取り得る組み合わせ（色の配置パターン）を踏まえ、圧縮部２０２で行われる処理を、圧縮部２０２の圧縮処理フロー（図５）を用いて説明する。本実施形態における入力としては、例えばＲＧＢそれぞれ８ビットの２５６階調とし、またデータとしては８ビットデータの点順次で１画素当たり２４ビットの色値（画素値）を有する画像データとして説明する。本実施形態において、圧縮部２０２は、図２で示したようにコントローラ１０１内に存在するものであり、電子回路等のハードウェア（ＡＳＩＣなど）で構成されるものとする。しかし、別の構成として、ＣＰＵがプログラムを実行することによりその一部または全部の機能を実現するようにしても構わない。
【００２９】
まず、本処理が開始され、２×２画素サイズのブロック毎に分割された画像が、前段のスキャナ用画像処理部２０１もしくはレンダリング部２５３から入力される（Ｓ５０１）。そして、圧縮部２０２は、２×２画素ブロック内の色の減色処理とパターンフラグの算出処理とを行う（Ｓ５０２）。Ｓ５０２における減色処理は、２×２画素の中に色が近い画素値を有する複数の画素が存在した場合に、それらを同一の色（画素値）に変更することで、本圧縮処理の圧縮効率を高めるために行う。ここでの減色処理については、特に限定せず、本発明が適用可能であれば、いずれの方法を用いても構わない。そして、減色処理後の２×２画素からなるブロックの色データを比較することにより、そのブロックにおける減色後の色数と色の配置パターンとを示すパターンフラグが算出される。
【００３０】
次に、Ｓ５０２で算出されたパターンフラグに基づいて、圧縮部２０２は、ブロック内の色数と配置パターンを判定して、各色の色データを抽出する（Ｓ５０３）。図４に示したように、４ビットのパターンフラグに対して、ブロック内を構成する色数と、各色の配置パターンが対応づけられているので、パターンフラグから各ブロックにおける色数と各色の色データを特定することができる。
【００３１】
ここで、本実施形態の図４では、全てのパターンにおいて、左上の画素の色（画素値）が第１色（１番目の色データ）となるように定義している。パターンフラグが“０”の場合は、色数が１なので、左上の画素の色（画素値）を第１色として抽出する。また、パターンフラグが１〜７の場合は、色数が２なので、左上の画素の色（画素値）を第１色として抽出し、更に、各パターンフラグに応じて定義されている第２色（２番目の色データ）が存在する位置の画素の色（画素値）を抽出する。例えば、パターンフラグが“１”の場合は、ブロックにおける右上の画素の色を第２色（２番目の色データ）として抽出する。
【００３２】
また、パターンフラグが８〜Ｄの場合は、色数が３であるので、ブロックにおける左上の画素の色（画素値）を第１色として抽出する。更に各パターンフラグに応じて定義されている第２色（２番目の色データ）及び第３色（３番目の色データ）が存在する位置の画素の色（画素値）を抽出する。例えば、パターンフラグが“８”の場合は、ブロックにおける左上の画素の色を第１色、右上の画素の色（画素値）を第２色、右下の画素の色（画素値）を第３色として抽出する。
【００３３】
また、パターンフラグが“Ｅ”の場合は、色数が４であるので、ブロックにおける左上の画素の色を第１色、右上の画素の色を第２色、左下の画素の色を第３色、右下の画素の色を第４色として抽出する。
【００３４】
すなわち、パターンフラグに基づいて、圧縮部２０２は、ブロック内を構成する色数を特定し（Ｓ５０４、Ｓ５０６、Ｓ５０８）、当該特定した色数それぞれに応じて、パターンフラグと色データとを出力する（Ｓ５０５、Ｓ５０７、Ｓ５０９、Ｓ５１０）。そして、本処理フローを終了する。
【００３５】
この出力されるデータを、図６を用いて説明する。ここで、入力データは、２×２画素それぞれが２４ビット（ＲＧＢ各色８ビット）の画素値を有し、１ブロックあたり９６ビットのデータ量となる。これに対し、図６に示すように、例えばパターンフラグが“０”（すなわちブロックの４画素が１色で構成されている）の場合（図５のＳ５０４でＹＥＳ）、２色目以降の色データは存在しない。従って、パターンフラグの４ビットと１色目の画素値（２４ビット分の色データ）とが出力される（図５のＳ５０５）。すなわち、パターンフラグが“０”のブロックは、２８ビットのデータ量のデータを出力する。また、パターンフラグが１〜７（即ち４画素が２色で構成されている）の場合（図５のＳ５０６でＹＥＳ）、２色目が存在する画素の座標をパターンフラグから求め、パターンフラグの４ビットと２色分の画素値（４８ビット分の色データ）とを出力する（図５のＳ５０７）。すなわち、パターンフラグが１〜７のブロックは、５２ビットのデータ量のデータを出力する。
【００３６】
また、パターンフラグが８〜Ｄ（即ち３色）の場合（図５のＳ５０８でＹＥＳ）、１色目と２色目と３色目とが存在する画素の位置をパターンフラグに基づいて求め、パターンフラグの４ビットと３色分の画素値（７２ビット分の色データ）とが出力される（図５のＳ５０９）。すなわち、パターンフラグが８〜Ｄのブロックは、７６ビットのデータ量のデータを出力する。
【００３７】
そして、パターンフラグが“Ｅ”（即ち４色）の場合（図５のＳ５０８でＮＯ）、パターンフラグの４ビットと４色分の画素値（９６ビット分の色データ）とが出力される（図５のＳ５１０）。すなわち、パターンフラグが“Ｅ”のブロックは、１００ビットのデータ量のデータを出力する。
【００３８】
言い換えると、各ブロックから出力される色データは、ブロック内の位置順（左上から右上、左下、右下の順に１、２、３、４とする）に走査した場合に、それまでに出現していなかった色データが現れるたびに順に出力していくことに相当する。
【００３９】
このように、２×２画素からなるブロックの４色分の色データ（９６ビット）を、４ビットのパターンフラグと、当該ブロックに存在する色数分の画素値のデータ（色データ）として出力する。その結果、簡単な処理により出力データ量を削減することが可能になる。特に、２×２画素からなるブロック内で同色の画素が存在するブロック（即ち各ブロック内の色数が少ないブロック）が多いラスタ画像の場合は、出力されるデータ量の圧縮率も大きくなる。また、パターンフラグを参照することで、そのブロック内の色数およびその配置パターンを特定することが可能になる。このような処理を画像ブロック全てに対して行うことで、画像全面をデータ圧縮することが可能になる。
【００４０】
［格納方式］
以上に述べた方法による圧縮部２０２で求めて出力されたパターンフラグと色データとは、メモリ１０６に書き込まれる（メモリ格納処理）。このとき、圧縮部２０２は、メモリ１０６におけるパターンフラグと、第１色のデータと、第２色、第３色、第４色のデータとの書き込み位置を変更する。圧縮部２０２は、パターンフラグ書き込みのためのメモリ先頭アドレスと、第１色データの書き込みのためのメモリ先頭アドレスと、第２〜４色データの書き込みのためのメモリ先頭アドレスとの、３つのアドレスを指定する。すなわち、各ブロックのパターンフラグはメモリ１０６上のパターンフラグ格納部（パターンフラグを格納するためのメモリ領域）にまとめて格納されることになる。また、各ブロックの第１色（１色目）の色データは、メモリ１０６上の第１色格納部（各ブロックの１色目の色データを格納するためのメモリ領域）にまとめて格納されることになる。更に、各ブロックの第２〜４色目の色データは、メモリ１０６上の第２，３，４色格納部（各ブロックの２〜４色目の色データを格納するためのメモリ領域）にまとめて格納されることになる。
【００４１】
図７は、圧縮部２０２によって圧縮された画像データのメモリ空間への書き込み例を示す図である。尚、サイズがＭ×Ｎ画素のＲＧＢ各色８ビットの画像を圧縮部へ２×２画素のブロックごとに入力する場合、パターンフラグのデータが格納されるパターンフラグ格納部のデータサイズは、（Ｍ×Ｎ／２／２×４／８）バイトとなる。また、第１色のデータが格納される第１色格納部のデータサイズは、（Ｍ×Ｎ／２／２×２４／８）バイトとなる。また、第２色、第３色、第４色のデータが格納される第２，３，４色格納部のデータサイズは、処理対象となるラスタ画像に応じて異なる。これは、第２，３，４色が存在するブロックの数が画像によって異なるためである。つまり、各ブロックに含まれる色数はそのパターンにより異なるため、ブロック数に対して、パターンフラグおよび第１色は必ず１つに特定されるが、第２，３，４色の数は変動する。よって、圧縮部２０２で圧縮処理された出力データサイズの大小は、メモリ１０６上の第２，３，４色格納部に格納されるデータ量に依存する。また、第１色書き込み先頭アドレス以降のメモリ領域（第１色格納部、及び第２，３，４色格納部）に関しては、画素の色データがそのままのビット数で格納されている。従って、例えばＬＵＴ（ルックアップテーブル）を用いた色変換やガンマ補正処理、行列演算を用いた色空間変換処理等の１画素入力と１画素出力で完結する色処理を行う場合、圧縮データをデコード（復号化）して元のラスタ画像に戻さなくても、圧縮データ中の該当する色データを処理することが可能である。つまり、図７のようにメモリの第１色格納部と第２〜４色格納部に格納されているデータに対して、該当する画素値（色データ）の部分を直接処理することが可能である。
【００４２】
また、図７に示すように、画像データ７００を、パターンフラグと第１色とその他の色（第２,３,４色）とに分け、離散的にメモリ１０６上の記憶領域へ格納している。従って、第１色格納部には、ラスタ画像を２×２画素からなるブロックに分割して、各ブロックの左上の画素をサンプリングした場合の画素値（色データ）がメモリ上に連続して存在することになる。
【００４３】
［多段階圧縮］
次に、上述した圧縮方式で多段階圧縮を行った場合について説明する。ここでの多段階圧縮とは、同じ画像データに対し、複数回（Ｎ回：Ｎは２以上の整数）の圧縮処理を施すことを意味する。例えば、２段階圧縮とは、入力された画像データに対し、１回目の圧縮処理を施したのち、当該生成された各代表色のみの画像データ（第１色格納部に格納される第１色のデータ）を次の圧縮処理対象画像として２回目の圧縮処理を行うことを意味する。よって、Ｎ回目の圧縮処理では、Ｎ−１回目の圧縮処理によって得られた代表色で構成される画像データを用いて圧縮処理を行う。上述した圧縮方式によれば、１回目の圧縮処理後の第１色格納部には、圧縮率の高低によらず、図７の白色で示される部分の画素の色データがラスタ順に格納されている。つまり、元の画像データが縦横２画素ごとに間引かれたデータが格納されている。多段階圧縮は、この間引かれて生成された画像データをさらに２×２画素ごとにブロック化して、再度上述した圧縮処理を適用する。
【００４４】
すなわち、図８（ａ）に示すように、第１段階の圧縮処理によって圧縮された画像データのうち、第１色格納部に格納されたデータに注目する。図８（ａ）の第１段階圧縮処理後のメモリの第１色格納部に格納されている色データは、画像データ８００の白色と黒色で示された位置の画素データである。そして、第１色格納部に格納されている画像データ（第１段階圧縮処理後の第１色の色データ）をさらに２×２画素ごとにブロック化し、上述した圧縮処理を行う。この結果、第１段階の圧縮処理結果の第１色の色データは、第２段階の圧縮処理結果のパターンフラグと、第２段階の第１色の色データと、第２段階の第２，３，４色の色データとに圧縮変換される。したがって、図８（ｂ）の第２段階圧縮時メモリ空間に示すような圧縮結果が得られる。ここで、図８（ｂ）に示すように、メモリ空間において、第２段階圧縮時の第１色格納部には、画像データ８００の白色で示された位置の色データが格納される。また、第２段階圧縮時の第２，３，４色格納部には、画像データ８００の黒色で示された位置の画素に基づいて求めた第１色以外の色データが格納される。ただし、第２段階圧縮時の第２，３，４色格納部には、２×２画素中に存在する同一の色データは複数格納されることはない。このように多段階圧縮されたデータは、図８（ｂ）のように入れ子構造の形式でデータ格納される。なお、他の格納方法として、同一のメモリ領域ではなく、別のメモリ領域を新たに確保して第２段階圧縮データを格納しても良い。
【００４５】
［展開処理］
次に、本発明の中核をなす展開部２１１を説明する。展開部２１１では、上述したような圧縮処理で生成されたパターンフラグと色データとを、元のラスタ画像データへ戻す処理を行う。図９に本発明における展開部２１１の詳細なブロック図を示す。本実施形態における展開部２１１は、図２で示したようにコントローラ１０１内に存在するものであり、３つのデータ展開部９００，９１０，９２０で構成されるものとする。なお、本実施形態の展開部２１１は、電子回路等のハードウェア（ＡＳＩＣなど）で構成されるものとするが、ＣＰＵがプログラムを実行することによりその一部または全部の機能を実現するようにしても構わない。
【００４６】
まず、１段階の圧縮処理がなされている圧縮データが展開対象である場合について、展開部２１１の詳細な処理を、図１０に示すフローチャートと、図１１の圧縮画像例とを用いて説明する。
【００４７】
本実施形態では、説明を簡単にするため、図１１（ａ）に示されるような４×４画素からなる画像データの圧縮データを例として、当該圧縮データを展開する場合について述べる。メモリ１０６の圧縮データ格納に関する一部のメモリマップを抽出したものを図１１（ｂ）に示し、さらにメモリ内部のデータ領域を詳細にしたものを図１１（ｃ）に示す。画像データ１１０１は、それぞれ同じパターン（斜線部、白色部、縦線部、格子線部）で表わされた画素は、同一の画素値を有する画素を示している。
【００４８】
図１１（ａ）に示した画像データ１１０１に対して１段階の圧縮処理を適用した場合、該画像データ１１０１は２×２画素ごとのブロックで黒太線のように分割され、圧縮される。そして、圧縮された結果の各ブロックのパターンフラグ、第１色の色データ、第２〜４色の色データが図１１（ｂ）に示すメモリ１０６上のパターンフラグ格納部１１０２、第１色格納部１１０３、第２,３,４色格納部１１０４にそれぞれ格納されている。画像データ１１０１の各ブロックのパターンフラグは、図４に示した割り当てにより、左上ブロック、右上ブロック、左下ブロック、右下ブロックの順に、“Ｂ”、“５”、“１”、“Ｅ”となる。これらの値がパターンフラグ格納部１１０２に格納され、図１１（ｃ）のアドレス０ｘ００，０ｘ０１のように配置されている。
【００４９】
また、第１色格納部１１０３には、各ブロックの左上の画素値データが連続して格納される。したがって、図１１（ｃ）のアドレス０ｘ１０−０ｘ１Ｂのように、画素００，０２，２０，２２の画素値が格納されている。ただし、本実施形態においては、８ｂｉｔのＲＧＢ画像を扱っているものとし、１画素データのサイズは２４ｂｉｔ（３Ｂｙｔｅ）である。また、図１１（ｃ）に示す各アドレスのデータ量は、８ｂｉｔ（１Ｂｙｔｅ）である。
【００５０】
なお、図１１（ｃ）において、横方向の値が第１の位のメモリアドレスの値を示し、縦方向の値が第２の位のメモリアドレスの値を指す。すなわち、図１１（ｂ）にて示された第１色格納部１１０３の先頭アドレスである“０ｘ１０”は、図１１（ｃ）において、横方向の“００”と縦方向の“１０”とが交わるアドレスを意味する。
【００５１】
最後に、第２,３,４色格納部１１０４には、各ブロックの左上画素以外の画素値（第１色と異なる色の色データ）が格納されている。ただし、同一ブロックに同色の色が存在した場合、重複して格納はされない。例えば図１１（ａ）に示す画像データ１１０１の左上ブロックの画素０１と画素１０は同色であるため、画素０１と画素１１の画素値（すなわち第１色と異なる色の色データ）だけが第２,３,４色格納部に格納されている。また、同様にして、画像データ１１０１の右上ブロックの画素０２と画素０３と画素１３は同色（第１色）であるため、画素１２の画素値だけが、第２,３,４色格納部に格納されている。したがって、図１１の画像データ１１０１の例において、第２,３,４色格納部に格納される画素値は、画素０１，１１，１２，２１，２３，３２，３３の画素値（色データ）であるため、図１１（ｃ）のアドレス０ｘ４０−０ｘ５４のように格納されている。
【００５２】
本実施形態において、図１１のように１段階の圧縮処理がなされている圧縮データの展開処理は、図９の３つあるデータ展開部９００，９１０，９２０のうちの２つを使用して行われる。ここでは、データ展開部９００が第１色データの展開を行い、データ展開部９１０が第２，３，４色データの展開を行うものとする。すなわち、データ展開部９００は、展開するラスタ画像において、パターンフラグに基づき圧縮データ内の第１色データによって塗りつぶされている画素のみを特定する。そして、読み込んだ第１色データによって当該特定した画素を塗りつぶす。また、データ展開部９１０は、展開するラスタ画像において、パターンフラグに基づき圧縮データ内の第２，３，４色データによって塗りつぶされている画素のみを特定する。そして、読み込んだ第２，３，４色データによって、当該特定した画素それぞれを塗りつぶす処理を行う。ここで塗りつぶす処理とは、画像データの展開領域（展開用のメモリ領域）において、各画素の値に色データの値を適用する処理を意味する。
【００５３】
まず、第１色データを展開するデータ展開部９００の動作について図１０（ａ）を用いて説明する。以下、データ出力部９０４、９１４、９２４が１回の展開処理で注目するブロックを注目ブロックと呼ぶ。１段階の圧縮処理がなされている圧縮データの展開処理においては、注目ブロックは、画像データ１１０１の２×２画素単位のブロックとなる。
【００５４】
パターンフラグＤＭＡＣ９０１は、パターンフラグ格納部１１０２の先頭アドレスと画像サイズとが設定され、当該設定されたアドレス（例えば０ｘ００）から順番にパターンフラグを読み込んで、データ出力部９０４に順次転送する処理を行う（Ｓ１００１）。並行して、データＤＭＡＣ９０３は、第１色格納部１１０３の先頭アドレスと画像サイズが設定され、当該設定されたアドレス（例えば０ｘ１０）から順番に第１色データを読み込んで、データ出力部９０４に順次転送する処理を行う（Ｓ１００２）。データ出力部９０４は、パターンフラグ格納部１１０２から取得するパターンフラグに基づいて、同時に取得する第１色データで塗りつぶす画素位置を特定する（Ｓ１００３）。
【００５５】
例えば、データ出力部９０４は、パターンフラグ格納部１１０２から最初に読み込んだパターンフラグ“Ｂ”に対しては、図４に示す対応表から、左上画素の画素００だけを、当該ブロックの第１色の色データで塗りつぶすと判定する。また、次に読みこんだパターンフラグ“５”に対しては、同じく図４に示す対応表から、左上画素、右上画素、右下画素の画素０２，画素０３，画素１３を、当該ブロックの第１色の色データで塗りつぶすと判定する。
【００５６】
次に、注目ブロックに塗りつぶす画素がある場合（Ｓ１００４にてＹｅｓ）、データ出力部９０４は、予めデータ出力部９０４に設定されたラスタ展開後の画像を格納する先頭アドレス、および展開画像のサイズ情報から、第１色の色データで塗りつぶす画素に対応するメモリアドレスを算出する（Ｓ１００５）。そして、データＤＭＡＣ９０３から受信した第１色データを、算出したアドレスのメモリ領域に書き込む（Ｓ１００６）。
【００５７】
Ｓ１００４〜Ｓ１００６の処理は、１ブロックの中で、第１色データを書き込む画素数分、繰り返し実行される。すなわち、画像データ１１０１の左上ブロックにおいては、第１色データを書き込む画素は１画素分なので、Ｓ１００４〜Ｓ１００６の処理は１回行われる。また、画像データ１１０１の右上ブロックにおいては、第１色データを書き込む画素は３画素分なので、Ｓ１００４〜Ｓ１００６の処理は３回行われる。このようにして１ブロック分の処理が終わると、Ｓ１００４において、データ出力部９０４は、塗りつぶす画素がなくなったと判定し（Ｓ１００４のＮｏ）、注目ブロックの展開処理を完了する。
【００５８】
以上の処理によって、展開用のメモリ上で、各ブロックの第１色の色データが画素値として書き込まれた画素は、図１２（ａ）の斜線部で表わされる。言い換えれば、図１２（ａ）の斜線部で表わされる画素の画素値が、データ展開部９００によって展開されることになる。
【００５９】
次に、第２，３，４色データを展開するデータ展開部９１０の動作について図１０（ｂ）を用いて説明する。パターンフラグＤＭＡＣ９１１は、パターンフラグ格納部１１０２の先頭アドレスと画像サイズが設定され、当該設定されたアドレス（例えば０ｘ００）から順番にパターンフラグを読み込んで、データ出力部９１４に順次転送する処理を行う（Ｓ１０２１）。並行して、データＤＭＡＣ９１３は、第２,３,４色格納部１１０４の先頭アドレスと画像サイズが設定され、当該設定されたアドレス０ｘ４０から順番に第２，３，４色データを読み込んで、データ出力部９１４に順次転送する処理を行う（Ｓ１０２２）。データ出力部９１４は、パターンフラグ格納部１１０２から取得する注目ブロックのパターンフラグに基づいて、まず、当該注目ブロックに第２,３,４色データがあるか否かを判定する（Ｓ１０２３）。
【００６０】
例えば、パターンフラグ“０”を有するブロックがあった場合、その注目ブロックは第１色データのみで構成されるブロックであるので、当該注目ブロックに第２,３,４色データは存在しない（Ｓ１０２３にてＮｏ）。そのため、データ展開部９１０は、注目ブロックの第２，３，４色の色データによる画素塗りつぶし処理は行わず、次のブロックの処理に移る。それ以外のパターンフラグが読み込まれた場合は、少なくとも第２色データが存在するブロックであると判定される（Ｓ１０２３にてＹｅｓ）。
【００６１】
次に、少なくとも第２色データが存在するブロックであり（Ｓ１０２３にてＹｅｓ）、かつ注目ブロックにまだ塗りつぶす画素がある場合（Ｓ１０２４にてＹｅｓ）、データ出力部９１４は、読み込んだ第２，３，４色データによって塗りつぶされる画素位置を、パターンフラグに基づいて特定する（Ｓ１０２５）。データＤＭＡＣは１ブロック内の第２，３，４色データをデータ出力部９１４に順次転送してくるため、データ出力部９１４は、第２色データで塗りつぶす画素、第３色データで塗りつぶす画素、第４色データで塗りつぶす画素を別々に特定する。さらに、データ出力部９１４は、予めデータ出力部９１４に設定されたラスタ展開後の画像を格納する先頭アドレス、展開画像のサイズ情報から、第２，３，４色の色データそれぞれで塗りつぶす画素に対応するメモリアドレスを算出する（Ｓ１０２６）。
【００６２】
そして、データ出力部９１４は、データＤＭＡＣ９１３から受信した第２，３，４色データを、算出したそれぞれのアドレスのメモリ領域に書き込む（Ｓ１０２７）。Ｓ１０２４〜Ｓ１０２６の処理は、１ブロックの中で、第２，３，４色データを書き込む画素数分繰り返される。すなわち、画像データ１１０１の左上ブロックにおいては、書き込む第２，３，４色データは３画素分なので、Ｓ１０２４〜Ｓ１０２６の処理は３回行われる。また、画像データ１１０１の右上ブロックにおいては、書き込む第２，３，４色データは１画素分なので、Ｓ１０２４〜Ｓ１０２６の処理は１回行われる。このようにして１ブロック分の処理が終わると、Ｓ１０２４において、データ出力部９１４は、塗りつぶす画素がなくなったと判定し（Ｓ１０２４にてＮｏ）、注目ブロックの展開処理を終了する。以上の処理によって、展開用のメモリ上で、各ブロックの第２，３，４色の色データが画素値として書き込まれた画素は、図１２（ｂ）の斜線部で示される。言い換えれば、図１２（ｂ）の斜線部で示される画素の画素データが、データ展開部９１０によって展開されることになる。
【００６３】
１段階圧縮されたデータは、以上のような方法により、展開部２１１により展開される。なお、各ＤＭＡＣについては、データ読み出しの効率を上げるために使用しているものであり、ＤＭＡＣを削除して、各データ出力部が必要なデータに順次アクセスするような構成を採用しても構わない。
【００６４】
［２段階圧縮データに対する展開処理］
次に、２段階の圧縮処理がなされている圧縮データが展開対象である場合について、展開部２１１の詳細な処理を、図１３に示すフローチャートと、図１４の圧縮画像例とを用いて説明する。すなわち、図１１（ａ）に示される４×４画素からなる画像データ１１０１を２段階圧縮した２段階圧縮データ（図１４（ｂ））を展開する場合について述べる。
【００６５】
画像データ１１０１は２段階圧縮されると、図１４（ｂ）、（ｃ）で示されるような圧縮データとしてメモリ１０６上に格納される。まずは、この伸張する２段階圧縮データが生成される仕組みについて説明しておく。
【００６６】
メモリ１０６の圧縮データ格納に関する一部のメモリマップを抽出したものを図１４（ｂ）に示し、さらにメモリ内部のデータ領域を詳細にしたものを図１４（ｃ）に示す。なお、図１４（ｃ）において、横方向の値が第１の位のメモリアドレスの値を示し、縦方向の値が第２の位のメモリアドレスの値を指す。すなわち、図１４（ｂ）にて示された第２段階第１色格納部１４０４の先頭アドレスである“０ｘ１８”は、図１４（ｃ）において、横方向の“０８”と縦方向の“１０”とが交わるアドレスを意味する。
【００６７】
第１段階パターンフラグ格納部１４０２と、第１段階第２，３，４色格納部１４０６に格納されているデータ及びその生成方法は、図１１（ｂ）のパターンフラグ格納部１１０２と、第２，３，４色格納部１１０４とに格納されているデータ及びその生成方法と同じである。よって、説明は割愛する。第１段階の圧縮処理によって、第１色格納部１１０３に格納された第１色データは、画像データ１１０１の各ブロックの左上画素が格納されている。つまり、主走査方向、副走査方向それぞれに２画素ごとに間引いた画像データ１４０１（図１４（ａ））が格納されていることと同義である。
【００６８】
そこで、第２段階圧縮は、第１段階圧縮によって間引いて得られた画像データ１４０１に対して、圧縮処理を行う。このとき、図４に示す割り当てにより、画像データ１４０１のブロックのパターンフラグは“２”となる。これが第２段階パターンフラグ格納部１４０３に格納され、図１４（ｃ）のアドレス０ｘ１０のように配置されている。また、第２段階第１色格納部１４０４には、第２段階圧縮の処理対象ブロックの左上画素の画素値（色データ）が格納される。従って、図１４（ｃ）のアドレス０ｘ１８−０ｘ１Ａのように、画素００の画素データが格納される。
【００６９】
最後に、第２段階第２，３，４色格納部１４０５には、第２段階圧縮の処理対象の注目ブロックにおける左上画素の色データ（第１色）以外の色データ（第２〜４色）が格納されている。ただし、同一ブロック内に同色の色が存在した場合、その色のデータは重複して格納されない。例えば、画像データ１４０１のブロックの画素００と画素２２は同色の値（第１色の色データ）を有し、かつ、画素０２と画素２０は同色の値（第２色の色データ）を有するため、画素０２の画素値（第２色データ）だけが第２段階第２，３，４色格納部１４０５に格納される。従って、画像データ１４０１の中で第２段階第２，３，４色格納部１４０５に格納される画素データは、画素０２のみであるため、図１４（ｃ）のアドレス０ｘ２０−０ｘ２２のように格納されている。
【００７０】
２段階の圧縮処理がなされている圧縮データ（図１４（ｂ）、（ｃ））の展開処理は、図９に示された３つのデータ展開部９００，９１０，９２０をすべて使用して行う。ここでは、データ展開部９００が第２段階第１色データの展開を行い、データ展開部９１０が第２段階第２，３，４色データの展開を行い、データ展開部９２０が第１段階第２，３，４色データの展開を行うものとする。すなわち、データ展開部９００は、展開後のラスタ画像において、圧縮データ内の第２段階第１色データによって、展開後のデータサイズにおいて塗りつぶされる画素を第２段階パターンフラグと第１段階パターンフラグとに基づいて特定する。そして、読み込んだ第２段階第１色データによって当該特定した画素を塗りつぶす。また、データ展開部９１０は、展開後のラスタ画像において、圧縮データ内の第２段階第２，３，４色データによって塗りつぶされる画素を第２段階パターンフラグと第１段階パターンフラグとに基づいて特定する。そして、読み込んだ第２段階第２，３，４色データによって当該特定した画素を塗りつぶす処理を行う。さらに、データ展開部９２０は、展開後のラスタ画像において、圧縮データ内の第１段階第２，３，４色データによって塗りつぶされる画素を第１段階パターンフラグに基づいて特定する。そして、読み込んだ第１段階第２，３，４色データによって当該特定した画素を塗りつぶす処理を行う。
【００７１】
まず、第２段階第１色データを展開するデータ展開部９００の動作について図１３（ａ）を用いて説明する。ここで、前述の１段階の圧縮処理がなされている圧縮データの展開処理時とは異なり、２段階の圧縮処理がなされている圧縮データの展開処理において、１回の展開処理で注目する注目ブロックは、画像データ１１０１における４×４画素単位に相当する。また、以下の説明において、Ｓ１３０１〜Ｓ１３０３の処理は並行して行われるものとして記載されているが、図１３（ａ）に示すように、順番に処理を行うことも可能である。
【００７２】
パターンフラグＤＭＡＣ９０１は、第１段階パターンフラグ格納部１４０２の先頭アドレスと画像サイズが設定され、当該設定されたアドレス（０ｘ００）からパターンフラグを読み込んで、データ出力部９０４に順次転送する（Ｓ１３０１）。並行して、パターンフラグＤＭＡＣ９０２は、第２段階パターンフラグ格納部１４０３の先頭アドレスと画像サイズが設定され、当該設定されたアドレス（０ｘ１０）からパターンフラグを読み込み、データ出力部９０４に順次転送する（Ｓ１３０２）。
【００７３】
さらに並行して、データＤＭＡＣ９０３は、第２段階第１色格納部１４０４の先頭アドレスと画像サイズが設定され、当該設定されたアドレス（０ｘ１８）から順に第２段階第１色データを読み込んで、データ出力部９０４に順次転送する（Ｓ１３０３）。
【００７４】
データ出力部９０４は、取得した第１段階パターンフラグと第２段階パターンフラグとに基づいて、展開後の４×４画素サイズの画像データにおいて第２段階第１色データで塗りつぶす画素位置を特定する（Ｓ１３０４）。これにより、第一特定手段を実現する。具体的にいうと、図１４（ｃ）の圧縮データの例では、まず、第２段階パターンフラグ（“２”）に基づき、画素００，０２，２０，２２のうち、第２段階第１色データで塗りつぶす画素位置として、画素００，２２を特定できる。更に、データ出力部９０４は、第２段階パターンフラグに基づいて第２段階第１色データで塗りつぶすと特定された画素位置が含まれる第１段階圧縮のブロックについて、第１段階パターンフラグに基づき、第２段階第１色データで塗りつぶす画素位置を特定する。図１４（ｃ）の例では、画素００が含まれる第１段階圧縮のブロックにおける第１段階パターンフラグが“Ｂ”であり、また、画素２２が含まれる第１段階圧縮のブロックにおける第１段階パターンフラグが“Ｅ”である。したがって、画素００，２２が含まれるブロック（画像データ１１０１の左上ブロックと右下ブロックに相当するブロック）の画素００，２２以外の画素位置に対して、第２段階第１色データで塗りつぶす画素は存在しないと判定する。よって、図１４（ｃ）の圧縮データの例では、展開後の４×４画素サイズの画像データにおいて第２段階第１色データで塗りつぶす画素位置は画素００，２２のみであると特定できる。
【００７５】
次に、Ｓ１３０４で特定された画素のうち、まだ第２段階第１色データの塗りつぶし処理（書き込み処理）を行っていない画素があれば（Ｓ１３０５にてＹｅｓ）、当該未処理の画素の１つを処理対象としてＳ１３０６の処理に進む。データ出力部９０４は、予めデータ出力部９０４に設定されたラスタ展開後の画像を格納する先頭アドレス、展開画像のサイズ情報、当該処理対象の画素の画素位置から、第２段階第１色データで塗りつぶす画素に対応するメモリアドレスを算出する（Ｓ１３０６）。これにより、第一メモリアドレス算出手段を実現する。
【００７６】
そして、データ出力部９０４は、データＤＭＡＣ９０３から受信した第２段階第１色データを、算出したアドレスのメモリ領域に書き込む（Ｓ１３０７）。これにより、第一格納手段を実現する。
【００７７】
Ｓ１３０６〜Ｓ１３０７の処理は、１ブロックの中で、第２段階第１色データを書き込む画素数分繰り返される。図１４（ｃ）の例では、展開後の４×４画素サイズの画像データにおいて、第２段階第１色データは、画素００，２２の２画素分書き込まれるので、Ｓ１３０６〜Ｓ１３０７の処理は２回行われる。
【００７８】
以上のようにして、１つの注目ブロック分（２段階圧縮のため、４×４画素に相当）の処理が終わると、Ｓ１３０５において、データ出力部９０４は、第２段階第１色データの塗りつぶし対象画素がなくなった（塗りつぶし処理が終了した）と判定し（Ｓ１３０５にてＮｏ）、注目ブロックに対する処理を終了する。以上の処理によって、図１４（ｃ）の圧縮データの場合、メモリ上に展開された画像データにおいて、第２段階第１色データが書き込まれる画素は、図１５（ａ）の斜線部で表される。言い換えれば、図１５（ａ）の斜線部で表される画素の画素データが、データ展開部９００によって展開されることになる。
【００７９】
次に、第２段階第２，３，４色データを展開するデータ展開部９１０の動作について図１３（ｂ）を用いて説明する。なお、以下の説明において、Ｓ１３２１〜Ｓ１３２３の処理は並行して行われるものとして記載されているが、図１３（ｂ）に示すように、順番に処理を行うことも可能である。
【００８０】
パターンフラグＤＭＡＣ９１１は、第１段階パターンフラグ格納部１４０２の先頭アドレスと画像サイズが設定され、当該設定されたアドレス（０ｘ００）からパターンフラグを読み込んで、データ出力部９１４に順次転送する（Ｓ１３２１）。この処理に並行して、パターンフラグＤＭＡＣ９１２は、第２段階パターンフラグ格納部１４０３の先頭アドレスと画像サイズが設定され、当該設定されたアドレス（０ｘ１０）からパターンフラグを読み込んで、データ出力部９１４に順次転送する（Ｓ１３２２）。
【００８１】
さらに並行して、データＤＭＡＣ９１３は、第２段階第２，３，４色格納部１４０５の先頭アドレスと画像サイズが設定され、当該設定されたアドレス（０ｘ２０）から第２段階第２，３，４色データを読み込んで、データ出力部９１４に順次転送する（Ｓ１３２３）。
【００８２】
データ出力部９１４は、第２段階パターンフラグ格納部１４０３から取得する第２段階パターンフラグに基づいて、まず、第２段階第２，３，４色データがあるか否かを判定する（Ｓ１３２４）。例えば、第２段階パターンフラグ“０”のブロックについては、当該注目ブロックの第２段階第２，３，４色データは存在しないと判定される（Ｓ１３２４にてＮｏ）。そのため、データ展開部９１０は、当該注目ブロックについて、第２段階第２，３，４色データによる画素塗りつぶし処理は行わず、次のブロック処理に移る。それ以外の第２段階パターンフラグが読み込まれた場合は、少なくとも第２段階第２色データが存在するブロックであると判定される（Ｓ１３２４にてＹｅｓ）。
【００８３】
データ展開部９１０が、当該注目ブロックについて、第２段階第２，３，４色データが存在すると判定した場合（Ｓ１３２４にてＹｅｓ）、データ展開部９１０は、注目ブロックに未処理の第２段階第２，３，４色データがあるかどうかを判定する（Ｓ１３２５）。注目ブロックに未処理の第２段階第２，３，４色データがあると判定した場合（Ｓ１３２５にてＹｅｓ）、データ展開部９１０は、未処理の第２段階第２，３，４色データのうちの１つを処理対象にする。更に、データ展開部９１０は、第２段階パターンフラグと第１段階パターンフラグとに基づいて、展開後の４×４画素サイズの画像データにおいて、当該処理対象にした色データで塗りつぶす画素位置を特定する（Ｓ１３２６）。これにより、第二特定手段を実現する。
【００８４】
データＤＭＡＣ９１３は、１ブロック内の第２段階第２，３，４色データをデータ出力部９１４に順次転送するため、データ出力部９１４は、第２段階第２色データで塗りつぶす画素、第３色データで塗りつぶす画素、第４色データで塗りつぶす画素を別々に特定する。したがって、Ｓ１３２６では、未処理の色データのうち、第２段階の第２色データから順に処理対象にしていくものとする。
【００８５】
このＳ１３２４〜Ｓ１３２６の処理に関して、図１４ならびに図１１に基づいて、具体的に説明を行う。まず第２段階パターンフラグとして“２”が読み込まれ、図４を参照すれば分かるように、第２色データが存在する配置パターンであると判定される。すなわち、注目ブロックの第２段階圧縮を行った際の配置パターンが画像データ１４０１のようなパターンだということが判定される。したがって、第２段階第２，３，４色格納部１４０５には第２色データだけが格納されているため、データ出力部９１４は、データＤＭＡＣ９１３から受信した第２色データで、どこの画素を塗りつぶすかを算出する。つまり、データ出力部９１４は、第２段階パターンフラグのパターン“２”に基づき、画素０２と画素２０とを、データＤＭＡＣ９１３から読み込んだ第２色データで塗りつぶす対象の画素であると判定する。
【００８６】
更に、画素０２と画素２０はそれぞれ、画像データ１１０１の右上ブロックおよび左下ブロックの第１色データでもある。よって、これと対応する第１段階パターンフラグのパターン“５”、“１”に基づいて、データ出力部９１４は、画像データ１１０１の画素０３，１３，３０，３１も塗りつぶし対象画素であると判定する。すなわち、図１４（ｃ）の圧縮データの例では、以上で示した画素０２，０３，１３，２０，３０，３１の６画素分を、Ｓ１３２４〜Ｓ１３２６のフローの中で、第２段階第２色データで塗りつぶす対象の画素位置であると特定する（図１５（ｂ））。
【００８７】
図１３（ｂ）の処理フローの説明に戻る。塗りつぶす画素位置が特定されると、予めデータ出力部９１４に設定されたラスタ展開後の画像データを格納する展開領域の先頭アドレス、展開画像のサイズ情報、当該塗りつぶし対象画素の位置から、データ出力部９１４は第２段階第２，３，４色データで塗りつぶす画素に対応するメモリアドレスを算出する（Ｓ１３２７）。これにより、第二メモリアドレス算出手段を実現する。
【００８８】
そして、データ出力部９１４は、データＤＭＡＣ９１３から受信した第２，３，４色データのうち、Ｓ１３２６で処理対象にした色データを、算出したアドレスのメモリ領域に書き込む（Ｓ１３２８）。これにより第二格納手段を実現する。Ｓ１３２５〜Ｓ１３２８の処理は、注目ブロックの中で、第２，３，４色データを書き出す画素数分繰り返される。すなわち、図１４（ｃ）の圧縮データの例では、第２段階第２色データで図１５（ｂ）のように６画素分塗りつぶすことになるため、Ｓ１３２５〜Ｓ１３２８の処理は６回行われる。
【００８９】
このようにして１つの注目ブロック分の処理が終わると、Ｓ１３２５において、データ出力部９１４は、塗りつぶす画素がなくなったと判定し（Ｓ１３２５にてＮｏ）、注目ブロックに対する処理を終了する。以上の処理によって、図１４（ｃ）の圧縮データの場合、メモリ上に展開された画像データにおいて、第２段階第２色データが書き込まれる画素は、図１５（ｂ）の斜線部で表わされる。言い換えれば、図１５（ｂ）の斜線部で表される画素の画素値が、データ展開部９１０によって展開されることになる。
【００９０】
最後に、第１段階第２，３，４色データを展開するデータ展開部９２０の動作について図１３（ｃ）を用いて説明する。なお、以下の説明において、Ｓ１３４１〜Ｓ１３４２の処理は並行して行われるものとして記載されているが、図１３（ｃ）に示すように、順番に処理を行うことも可能である。なお、第１段階第２，３，４色データを展開する場合は、第２段階パターンフラグは使用しないので、パターンフラグＤＭＡＣ９２２は省略しても構わない。
【００９１】
パターンフラグＤＭＡＣ９２１は、第１段階パターンフラグ格納部１４０２の先頭アドレスと画像サイズが設定され、当該設定されたアドレス（０ｘ００）から第１段階パターンフラグを読み込んで、データ出力部９１４に順次転送する（Ｓ１３４１）。並行して、データＤＭＡＣ９２３は、第１段階第２，３，４色格納部１４０６の先頭アドレスと画像サイズが設定され、当該設定されたアドレス（０ｘ４０）から第１段階第２，３，４色データを読み込んで、データ出力部９２４に順次転送する（Ｓ１３４２）。
【００９２】
データ出力部９２４は、第１段階パターンフラグ格納部１４０２から取得する第１段階パターンフラグに基づいて、まず、第１段階第２，３，４色データがあるか否かを判定する（Ｓ１３４３）。例えば、本第１段階パターンフラグ“０”のブロックについては、当該注目ブロックの第１段階第２，３，４色データは存在しないと判定される（Ｓ１３４３にてＮｏ）。そのため、データ展開部９２０は、当該注目ブロックについて、第１段階第２，３，４色データによる画素塗りつぶし処理は行わず、次のブロック処理に移る。それ以外の第１段階パターンフラグが読み込まれた場合は、データ展開部９２０は、少なくとも第１段階第２色データが存在するブロックであると判定する（Ｓ１３４３にてＹｅｓ）。
【００９３】
データ展開部９２０が、当該注目ブロックについて、第１段階第２，３，４色データが存在すると判定した場合（Ｓ１３４３にてＹｅｓ）、データ出力部９２４は、注目ブロック内に未処理の第１段階第２，３，４色データが存在するかを判定する（Ｓ１３４４）。注目ブロック内に未処理の第１段階第２，３，４色データが存在すると判定した場合（Ｓ１３４４にてＹｅｓ）、データ出力部９２４は、未処理の第１段階第２，３，４色データのうちの１つを処理対象にする。更に、データ出力部９２４は、第１段階パターンフラグに基づいて、展開後の画像データにおいて、当該処理対象にした色データで塗りつぶす画素位置を特定する（Ｓ１３４５）。
【００９４】
データＤＭＡＣ９２３は、１ブロック内の第１段階第２，３，４色データをデータ出力部９２４に順次転送してくるため、データ出力部９２４は、第１段階第２色データで塗りつぶす画素、第１段階第３色データで塗りつぶす画素、第１段階第４色データで塗りつぶす画素を別々に特定する。
【００９５】
このＳ１３４３〜Ｓ１３４５の処理に関して、図１４ならびに図１１に基づいて、具体的に説明を行う。まず第１段階パターンフラグとして、最初にパターン“Ｂ”が読み込まれた場合、図４を参照すれば分かるように、第２色データと第３色データとが存在する配置パターンであると判定される。すなわち、注目ブロックの第１段階圧縮を行った際の配置パターンは、まず画像データ１１０１の左上ブロックのようなパターンであると判定される。したがって、第１段階第２，３，４色格納部１４０６には、第２色データと第３色データが格納されているので、データＤＭＡＣ９２３から受信した第２色データと第３色データで、どの画素を塗りつぶすかが算出される。つまり、データ出力部９２４は、第１段階パターンフラグのパターン“Ｂ”に基づいて、画素０１と画素１０とを、データＤＭＡＣ９２３から読み込んだ第２色データによって塗りつぶす対象の画素であると判定する。また、画素１１は、同じくデータＤＭＡＣ９２３から読み込んだ第３色データによって塗りつぶす対象の画素であると判定される。
【００９６】
図１３（ｃ）のフローの説明に戻る。塗りつぶす画素位置が特定されると、予めデータ出力部９２４に設定されたラスタ展開後の画像を格納する先頭アドレス、展開画像のサイズ情報、当該塗りつぶし対象画素の位置から、データ出力部９２４は、第１段階第２，３，４色データで塗りつぶす画素に対応するメモリアドレスを算出する（Ｓ１３４６）。
【００９７】
そして、データ出力部９２４は、データＤＭＡＣ９２３から受信した第２，３，４色データのうち、Ｓ１３４５で処理対象にした色データを、算出したアドレスのメモリ領域に転送して書き込む（Ｓ１３４７）。Ｓ１３４４〜Ｓ１３４７の処理は、注目ブロックの中で、第１段階第２，３，４色データを書き出す画素数分繰り返される。
【００９８】
このようにして１ブロック分の処理が終わると、Ｓ１３４４において、データ出力部９２４は、塗りつぶす画素がなくなったと判定し（Ｓ１３４４にてＮｏ）、注目ブロックに対する展開処理を終了する。以上の処理によって、図１４（ｃ）の圧縮データの場合、メモリ１０６上に展開された画像データにおいて、第１段階第２，３，４色データが書き込まれる画素は、展開後の各ブロックにおいて図１５（ｃ）の斜線部で表わされる。言い換えれば、図１５（ｃ）の斜線部で表される画素の画素値が、データ展開部９２０によって展開される。
【００９９】
［アクセス数における対比］
本発明の展開部２１１の特徴として、データ展開部９００、９１０、９２０のように並列に配置して、それぞれを独立して動作させることができ、メモリアクセスを効率化できる点にある。
【０１００】
２段階圧縮データの展開処理に必要なメモリアクセス量について、展開部２１１を上記の本発明に基づいた構成にした場合（図９）と、特願２００９−２２１４４４で述べた図１９のような構成で圧縮時と逆順で段階的に展開するように構成した場合（以下では従来構成と呼ぶ）とを、それぞれ図１６（ａ）、（ｂ）に示す。また、従来構成としての処理フローを図２０に示す。図１６（ａ）は、画像データ１１０１が２段階圧縮されたデータ（図１４（ｂ））を、本発明の展開部（図９）によってラスタデータに展開する時のメモリアクセス量を示す。また、図１６（ｂ）は、画像データ１１０１が２段階圧縮されたデータ（図１４（ｂ））を、従来構成の展開部（図１９）によってラスタデータに展開する時のメモリアクセス量を示す。図１６（ａ）に示す本発明と図１６（ｂ）に示す従来構成とのアクセス種の差分として、本発明においては「第１段階第１色データ読み込み（図１６（ｂ）の１６１３に対応）」の処理が不要であるため、その項目が無くなっている。
【０１０１】
まず、本発明の展開部２１１は、第２段階第１色データ、第２段階第２，３，４色データ、第１段階第２，３，４色データをそれぞれデータＤＭＡＣ９０３、９１３、９２３にて読み込む。それぞれの読み込むトータルのデータ量は、図１４（ｃ）の圧縮データ例の場合、それぞれ３ｂｙｔｅ（１６０３）、３ｂｙｔｅ（１６０４）、２１ｂｙｔｅ（１６０２）である。また、第１段階パターンフラグは、パターンフラグＤＭＡＣ９０１、９１１、９２１それぞれによって読み込まれ、第２段階パターンフラグは、パターンフラグＤＭＡＣ９０２、９１２によって読み込まれる。それぞれの読み込むデータ量は、図１４（ｃ）の圧縮データ例の場合、それぞれ２ｂｙｔｅが３モジュール分（１６００）、１ｂｙｔｅが２モジュール分（１６０１）である。また、出力データの書き込みは、データ出力部９０４、９１４、９２４のトータルで、画像データ１１０１のラスタデータ量分となるため、３ｂｙｔｅの１６画素分（１６０５）となる。総計のメモリアクセス量（読み込みと書き込みのデータ量）は、８３ｂｙｔｅとなる。
【０１０２】
一方、従来構成の展開部１９００の場合、まず第２段階圧縮データを第１段階圧縮データに展開する最初の段階と、その後、当該第１段階圧縮データを更にラスタデータに展開する次の段階とに分けて展開することになる。よって、展開時の最初の段階では、第２段階パターンフラグと、第２段階第１色データと、第２段階第２，３，４色データとを読み込む。図１４（ｃ）の圧縮データ例の場合、それぞれのメモリアクセス量は、１ｂｙｔｅ（１６１１）、３ｂｙｔｅ（１６１４）、３ｂｙｔｅ（１６１５）となる。また、第２段階圧縮データを１段階展開した後の第１段階圧縮データは、図１１（ｃ）のようになる。そのため、この第１段階圧縮データをラスタデータに展開する次の展開段階では、第１段階パターンフラグと、第１段階第１色データと、第１段階第２，３，４色データとを読み込む。図１１（ｃ）の圧縮データ例の場合、それぞれのメモリアクセス量は、２ｂｙｔｅ（１６１０）、３ｂｙｔｅの４画素分（１６１２）、２１ｂｙｔｅ（１６１３）となる。
【０１０３】
また、出力データの書き込みは、第２段階圧縮データを展開した結果を第１色格納部１１０３に書き込む処理と、第１段階圧縮データを展開した結果のラスタデータを書き込む処理の２段階で行われ、それぞれ画像データ１４０１、画像データ１１０１のラスタデータ量分、データ出力されるのに等しい。そのため、それぞれのメモリアクセス量は、３ｂｙｔｅの４画素分と、３ｂｙｔｅの１６画素分となる（１６１６）。よって、総計のメモリアクセス量（読み込みと書き込みのデータ量）は、１０２ｂｙｔｅとなる。なお、従来構成においては、本発明のようなメモリにアクセスするそれぞれ部位ごとの役割分担は特定せず、総じて展開部１９００が行っているものとする。
【０１０４】
図９の展開部は、複数のデータ展開部で同一のパターンフラグを読み込んで使用する。したがって、図１９の展開部よりもパターンフラグに関するメモリアクセス量が増加している（１６００、１６０１、１６１０、１６１１）。一方で、本実施形態では、２段階圧縮データを直接ラスタデータに展開してメモリに書き戻す。そのため、第２段階の圧縮データから第１段階への圧縮データへ展開して出力する時のメモリへのデータ書き戻しと、第１段階への圧縮データの読み込みが一部不要になる（１６１２、１６０５、１６１６）。パターンフラグのデータ量と比較して、画素データのデータ量は大きいため、図９の本実施形態によるトータルのメモリアクセス量は、図１９のように段階的に展開する場合のメモリアクセス量よりも２０％削減されることがわかる。
【０１０５】
また、第２段階圧縮データの第１段階圧縮データへの展開用と、第１段階圧縮データのラスタデータへの展開用とで、図１９の展開部を複数用意し、その間に中間バッファを設けるように構成すれば、システムメモリへのメモリアクセス回数を減らせる。しかしながら、このような構成にすると回路規模が大きくなってしまう。一方で、図９の本実施形態によるデータ展開部９００、９１０、９２０は、２段階圧縮データを直接ラスタ画像に展開できるため、このような中間バッファは必要ない。
【０１０６】
さらに、３段階以上の圧縮データを扱う場合、図１９に示す展開部１９００を使用すると、データ展開の各段階で展開部を必要とするため、ラスタ画像まで効率良く展開するためには、更に多くの展開部と中間バッファを必要とする。例えば３段階圧縮されたデータを展開する場合、図１７（ａ）のように、多くの展開部（１＋４＋１６個）と、その間の中間バッファ（４＋１６個）とを必要とする。一方、本発明では、図９のデータ展開部９００、９１０、９２０に対して、図１７（ｂ）のようにデータ展開部を１つ追加すれば良い。
【０１０７】
より詳細には、図１８のように、各データ圧縮部を３段階圧縮データの展開のために、３段階におけるパターンフラグを読み込めるように変更を行う。そして、データ出力部における内部のアルゴリズムは、パターンフラグによる塗りつぶし画素位置の判定を１段階分増やせば良い。このような変更を行い、第３段階第１色データ、第３段階第２，３，４色データ、第２段階第２，３，４色データ、第１段階第２，３，４色データを、それぞれモジュール（データ展開部）１８０１、１８０２、１８０３、１８０４で処理する。これによって、第３段階圧縮データの展開への拡張が中間バッファの追加を抑えながら可能となる。
【０１０８】
つまり、Ｎ段階の圧縮処理を行った圧縮画像データを展開する場合には、Ｎ＋１個のデータ展開部を備えればよい。この多重化した構成により、Ｎ回目の圧縮処理によって得られた代表色を１〜Ｎ回目の符号化によって得られたパターンフラグを用いて展開するための代表色復号手段と、１〜Ｍ回目（Ｍは１〜Ｎのいずれかの整数）の圧縮処理それぞれによって得られた補間色を用いて展開するためのＮ個の補間色復号手段を実現している。
【０１０９】
また、本発明の展開部においては、画像によっては、一部のデータ展開部に処理が集中する場合がある。このような状況に対し、各データ展開部を同一構成にすれば、いずれのデータ展開部においても使用可能なデータ展開部として機能させることが可能になり、負荷分散するように構成しても構わない。
【０１１０】
［第二実施形態］
第一実施形態においては、各ブロックを圧縮したデータを出力する場合、パターンフラグに加えて、必ず第１色データが出力され、メモリに書き出される。本発明で記載している圧縮形態においては、図４のパターンフラグの定義に加え、リピートフラグというパターンフラグ“Ｆ”を定義して使用することも可能である。これは、ブロック圧縮時に１回前に処理を行ったブロックと同一の色の配置（配置パターン）のブロックに対しては、パターンフラグとしてリピートフラグ“Ｆ”を出力するが、第１色データおよび第２，３，４色データはメモリへ出力しないようにする。
【０１１１】
これによって、圧縮後のメモリ出力するデータ量をさらに削減することができる。なお、ここでの１回前のブロックとは、例えばラスタ順でブロック処理している場合、着目ブロックに隣接した処理済みのブロックとなる。このとき、処理の順番が基準となるため、例えば着目ブロックの上に位置するなど着目ブロックに対していずれの位置にあっても構わない。また、パターンフラグにリピートフラグを追加する場合、本実施形態においてパターンフラグを４ビットで表しているが、通常のパターンフラグ１５種に加え、リピートフラグ１種を加えても、パターンフラグのデータ量（４ビット）に変動は生じない。
【０１１２】
第二実施形態では、このリピートフラグが混在した圧縮データの展開フローについて説明を行う。また、第二実施形態では、圧縮時に、最終圧縮段階においてのみリピートフラグを付加され、且つ、主走査ラインの先頭ブロックにはリピートフラグは付加しないものとする。すなわち、２段階で圧縮するように構成した場合、図２１の画像データ２１００を例とすると、第１段階圧縮した後の第１段階圧縮ブロックである画像データ２１０１にはリピートフラグは設定されない。一方、これを第２段階圧縮（最終段階の圧縮）する際に左隣のブロックと同じ色配置のブロックがあれば、当該ブロックに対するパターンフラグにリピートフラグ“Ｆ”が設定される。例えば、図２１の第２段階圧縮ブロック２１０２で、“Ｒ”と記載されたブロックがリピートフラグ“Ｆ”が設定されたブロックであったとする。すなわち、リピートフラグ“Ｆ”により、ブロックＳ２＿０４はブロックＳ２＿００の繰り返しであることを意味し、また、ブロックＳ２＿４４はブロックＳ２＿４０の繰り返しであることを意味している。ここで、第２段階圧縮ブロックのブロックＳ２＿４４は、第１段階圧縮時に生成された第１色を元にリピートフラグを付与すべきブロックであるか判定される。すなわち、ブロックＳ２＿４０とブロックＳ２＿４４は、図２１の画像データ２１００に示されるように、元の画像パターンが異なるにもかかわらず、第１段階圧縮後の第１色で構成される画像データ２１０１におけるブロックの色配置が同じため、ブロックＳ２＿４４にリピートフラグが設定される。この第２段階圧縮ブロック化された時のメモリ上の圧縮データの状態は図２２（ａ）、（ｂ）のように表される。
【０１１３】
第１段階圧縮時の処理対象となる画像データ２１００において、各ブロックの左上画素の画素値を第１色データとすると、第１段階第２，３，４色データは画素２３，２７，４３，４５，４７，６３，６５，６７の画素値が第１段階第２，３，４色格納部２２０５に格納される。また、第１段階圧縮時のパターンフラグは第１段階パターンフラグ格納部２２０１に格納される。また、第２段階圧縮時の処理対象となる画像データ２１０１において、各ブロックの左上画素の画素値を第１色とするが、左上ブロックと右上ブロックは同じ色配置になっており、左下ブロックと右下ブロックも同じ色配置となっている。したがって、第２段階第１色データは、画素００，４０の画素値のみが第２段階第１色格納部２２０３に格納され、同一色を有しリピートフラグが付与されるブロックの画素０４，４４の画素値は格納されない。
【０１１４】
第２段階第２，３，４色データは、画素２２の画素値は第２段階第２，３，４色格納部２２０４に格納されるが、リピートフラグが付加されるブロックの画素２６の画素値はメモリ格納されない。また、第２段階圧縮時のパターンフラグは第２段階パターンフラグ格納部２２０２に格納され、このとき同じ色配置と判定されたブロックについてはリピートフラグ“Ｆ”が付与される。
【０１１５】
このようにして多段階圧縮された圧縮データを、図９の展開部２１１で展開する時の動作について説明する。なお、フローの説明は、既に説明済みの図１３を元に、差分だけを詳細に説明する。ここで、各データ展開部９００，９１０，９２０は、リピートフラグ処理のために、前に処理されたブロックの画素値を保持するためのバッファを有するものとする。
【０１１６】
まず、第２段階第１色を展開するデータ展開部９００は、Ｓ１３０４の塗りつぶし画素の特定時に、第２段階パターンフラグがリピートフラグか否かを判定し、リピートフラグでなかった場合は、第一実施形態で説明した通常処理を行う。リピートフラグだった場合、データ展開部９００は以下のように動作する。
【０１１７】
第２段階第１色の展開を行うデータ展開部９００は、リピートフラグを受信すると、データＤＭＡＣ９０３から受信したデータではなく、バッファに格納された前ブロックの第１色データをＳ１３０７の転送データとして使用する。第２段階第２，３，４色の展開を行うデータ展開部９１０は、リピートフラグを受信すると、データＤＭＡＣ９１３から受信したデータではなく、バッファに格納された前ブロックの第２，３，４色データをＳ１３２８の転送データとして使用する。一方、第１段階第２，３，４色の展開を行うデータ展開部９２０は、第２段階リピートフラグを読み込まず、それに依存した処理を行わないので、第一実施形態と同じ処理を行う。
【０１１８】
以上の処理によって、リピートフラグが混在する圧縮データに対しても、図９の展開部２１１は圧縮データの展開処理を行うことができる。これにより、第一実施形態と同様の効果を得ることができる。
【０１１９】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2012095227.tif 000003
【図２】
2012095227.tif 000004
【図３】
2012095227.tif 000005
【図４】
2012095227.tif 000006
【図５】
2012095227.tif 000007
【図６】
2012095227.tif 000008
【図７】
2012095227.tif 000009
【図８】
2012095227.tif 000010
【図９】
2012095227.tif 000011
【図１０】
2012095227.tif 000012
【図１１】
2012095227.tif 000013
【図１２】
2012095227.tif 000014
【図１３】
2012095227.tif 000015
【図１４】
2012095227.tif 000016
【図１５】
2012095227.tif 000017
【図１６】
2012095227.tif 000018
【図１７】
2012095227.tif 000019
【図１８】
2012095227.tif 000020
【図１９】
2012095227.tif 000021
【図２０】
2012095227.tif 000022
【図２１】
2012095227.tif 000023
【図２２】
2012095227.tif 000024