(57)【特許請求の範囲】
【請求項１】
第１の画像データを２×２画素のサイズのブロックに分割し、分割された当該ブロックそれぞれを順に第１の処理対象にし、当該第１の処理対象のブロック内の各画素の色データを比較することにより、当該ブロックに含まれる色データの配置パターンを示す第１のパターンフラグを特定する第１特定手段と、
前記２×２画素のサイズのブロックの予め定義された位置の画素に対応する色データを第１色の色データとして抽出し、更に、前記第１の処理対象のブロックに含まれる色数が２〜４のいずれかである場合、特定された前記第１のパターンフラグで定義されている配置パターンに対応する第２〜４色の色データを抽出する第１抽出手段と、
前記第１特定手段で特定された各ブロックの第１のパターンフラグと、前記第１抽出手段で抽出された各ブロックの前記第１色の色データと、前記第１抽出手段で抽出された各ブロックの第２〜４色の色データとを出力する第１出力手段と、
前記第１出力手段で出力された第１色の色データで構成される第２の画像データを２×２画素のサイズのブロックに分割し、分割された当該ブロックそれぞれを順に第２の処理対象にし、当該第２の処理対象のブロックを構成する各画素に対応する前記第１のパターンフラグに基づいて各画素値に重み付けを行うことにより、当該第２の処理対象のブロックに対する減色処理を行う第２減色手段と、
前記第２減色手段で減色処理を行った後の前記第２の処理対象のブロックにおける各画素の色データを比較することにより、当該第２の処理対象のブロックに含まれる色データの配置パターンを示す第２のパターンフラグを特定する第２特定手段と、
前記第２減色手段で減色処理を行った後の前記２×２画素のサイズのブロックの予め定義された位置の画素に対応する色データを第１色の色データとして抽出し、更に、前記第２の処理対象のブロックに含まれる色数が２〜４のいずれかである場合、特定された前記第２のパターンフラグに定義された配置パターンに対応する第２〜４色の色データを抽出する第２抽出手段と、
前記第２特定手段で特定された各ブロックの第２のパターンフラグと、前記第２抽出手段で抽出された各ブロックの前記第１色の色データと、前記第２抽出手段で抽出された各ブロックの第２〜４色の色データとを出力する第２出力手段と、
を有することを特徴とする画像処理装置。
【請求項２】
前記第２減色手段は、当該第２の処理対象のブロックを構成する各画素を展開した場合に影響する画素数が多いほど重み付けが大きくなるように、当該第２の処理対象のブロックを構成する各画素に対応する前記第１のパターンフラグに基づいて各画素値に重み付けを行って減色後の画素値を計算することにより、当該第２の処理対象のブロックに対する減色処理を行うことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第１の画像データを２×２画素のサイズのブロックに分割し、分割された当該ブロックそれぞれを順に第１の処理対象にし、当該第１の処理対象のブロックに対する減色処理を行う第１減色手段を更に有し、
前記第１特定手段は、前記第１減色手段で減色処理を行った後の第１の処理対象のブロックにおける各画素の色データを比較することにより、当該ブロックに含まれる色データの配置パターンを示す第１のパターンフラグを特定することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
前記第１出力手段で出力された第１のパターンフラグおよび第２〜４色の色データと、前記第２出力手段で出力された第２のパターンフラグおよび第１色の色データおよび第２〜４色の色データとを格納する格納手段を更に有することを特徴とする請求項１乃至３のいずれか一項に記載の画像処理装置。
【請求項５】
処理対象のブロックの１つ前に処理対象となったブロックにおける各画素の色データを記憶しておく記憶手段を更に有し、
前記第２特定手段は、前記第２の処理対象のブロックにおける各画素の色データと、前記記憶手段に記憶された各画素の色データとの差異が所定の閾値より小さい場合、当該第２の処理対象のブロックが１つ前に処理対象となったブロックの繰り返しであることを示すパターンフラグを出力することを特徴とする請求項１乃至４のいずれか一項に記載の画像処理装置。
【請求項６】
画像データを予め定められた画素数のブロックごとに処理対象の着目ブロックとして圧縮処理する画像処理装置であって、
前記着目ブロックに対して減色処理を行う減色手段と、
前記着目ブロックにおける各画素の間の色データを比較することにより、当該着目ブロックに含まれる色データの配置パターンを特定する特定手段と、
前記ブロックにおける予め定義された位置の画素に対応する色データを第１色の色データとして抽出し、更に、前記ブロックに含まれる第１色以外の色データを抽出する抽出手段と、
前記特定手段で特定された前記配置パターンと、前記抽出手段で抽出された第１色の色データと第１色以外の色データとを出力する出力手段と、
前記出力手段で出力された第１色の色データで構成される第２の画像データを予め定められた画素数のブロックごとに処理対象の着目ブロックとして、前記減色手段による減色処理を実行するように制御し、更に、前記減色手段によって減色された前記着目ブロックに対し、前記特定手段と前記抽出手段と前記出力手段とによる処理を再実行するように制御する制御手段と、
を有し、
前記減色手段は、前記出力手段で出力された第１色の色データで構成される前記第２の画像データを予め定められた画素数のブロックごとに処理対象の着目ブロックとして前記減色処理を実行する場合、前記特定手段で特定された前記配置パターンに基づいて、当該処理対象の着目ブロックに含まれる画素の画素値に重み付けを行いながら前記減色処理を行うことを特徴とする画像処理装置。
【請求項７】
前記減色手段は、前記色データの間で同色と見なして減色するか否か判定する際に用いる閾値を受け付ける設定手段を更に有することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記着目ブロックよりも前に処理対象となったブロックの色データを記憶しておく記憶手段を更に有し、
前記出力手段は、前記着目ブロックの色データと、前記記憶手段に記憶された色データとの差異が所定の閾値より小さい場合は、当該着目ブロックの色データの代わりに、前記記憶手段に記憶された色データに対応するブロックの繰り返しを示す情報を出力することを特徴とする請求項６または７に記載の画像処理装置。
【請求項９】
前記出力手段は、前記ブロックにおける各画素に対して、前記画像データの属性を示す属性情報が付与されている場合に、当該属性情報を加えて出力することを特徴とする請求項６乃至８のいずれか一項に記載の画像処理装置。
【請求項１０】
前記画像データを複数の前記ブロックからなるタイルに分割する分割手段を更に有し、当該タイルに含まれるブロックを順に前記着目ブロックとして処理することを特徴とする請求項６乃至８のいずれか一項に記載の画像処理装置。
【請求項１１】
前記タイルは、３２×３２画素のサイズであることを特徴とする請求項１０に記載の画像処理装置。
【請求項１２】
前記ブロックは、２×２画素のサイズであることを特徴とする請求項６乃至１１のいずれか一項に記載の画像処理装置。
【請求項１３】
前記第１色の色データは、前記ブロックのうち、左上の端の位置にある画素の値であることを特徴とする請求項１乃至１２のいずれか一項に記載の画像処理装置。
【請求項１４】
第１特定手段が、第１の画像データを２×２画素のサイズのブロックに分割し、分割された当該ブロックそれぞれを順に第１の処理対象にし、当該第１の処理対象のブロック内の各画素の色データを比較することにより、当該ブロックに含まれる色データの配置パターンを示す第１のパターンフラグを特定する第１特定工程と、
第１抽出手段が、前記２×２画素のサイズのブロックの予め定義された位置の画素に対応する色データを第１色の色データとして抽出し、更に、前記第１の処理対象のブロックに含まれる色数が２〜４のいずれかである場合、特定された前記第１のパターンフラグで定義されている配置パターンに対応する第２〜４色の色データを抽出する第１抽出工程と、
第１出力手段が、前記第１特定工程にて特定された各ブロックの第１のパターンフラグと、前記第１抽出工程にて抽出された各ブロックの前記第１色の色データと、前記第１抽出工程にて抽出された各ブロックの第２〜４色の色データとを出力する第１出力工程と、
第２減色手段が、前記第１出力工程にて出力された第１色の色データで構成される第２の画像データを２×２画素のサイズのブロックに分割し、分割された当該ブロックそれぞれを順に第２の処理対象にし、当該第２の処理対象のブロックを構成する各画素に対応する前記第１のパターンフラグに基づいて各画素値に重み付けを行うことにより、当該第２の処理対象のブロックに対する減色処理を行う第２減色工程と、
第２特定手段が、前記第２減色工程にて減色処理を行った後の前記第２の処理対象のブロックにおける各画素の色データを比較することにより、当該第２の処理対象のブロックに含まれる色データの配置パターンを示す第２のパターンフラグを特定する第２特定工程と、
第２抽出手段が、前記第２減色工程にて減色処理を行った後の前記２×２画素のサイズのブロックの予め定義された位置の画素に対応する色データを第１色の色データとして抽出し、更に、前記第２の処理対象のブロックに含まれる色数が２〜４のいずれかである場合、特定された前記第２のパターンフラグに定義された配置パターンに対応する第２〜４色の色データを抽出する第２抽出工程と、
第２出力手段が、前記第２特定工程にて特定された各ブロックの第２のパターンフラグと、前記第２抽出工程にて抽出された各ブロックの前記第１色の色データと、前記第２抽出工程にて抽出された各ブロックの第２〜４色の色データとを出力する第２出力工程と、
を有することを特徴とする画像処理方法。
【請求項１５】
画像データを予め定められた画素数のブロックごとに処理対象の着目ブロックとして圧縮処理する画像処理方法であって、
減色手段が、前記着目ブロックに対して減色処理を行う減色工程と、
特定手段が、前記着目ブロックにおける各画素の間の色データを比較することにより、当該着目ブロックに含まれる色データの配置パターンを特定する特定工程と、
抽出手段が、前記ブロックにおける予め定義された位置の画素に対応する色データを第１色の色データとして抽出し、更に、前記ブロックに含まれる第１色以外の色データを抽出する抽出工程と、
出力手段が、前記特定手段で特定された前記配置パターンと、前記抽出手段で抽出された第１色の色データと第１色以外の色データとを出力する出力工程と、
制御手段が、前記出力工程で出力された第１色の色データで構成される第２の画像データを予め定められた画素数のブロックごとに処理対象の着目ブロックとして、前記減色工程による減色処理を実行するように制御し、更に、前記減色工程によって減色された前記着目ブロックに対し、前記特定工程と前記抽出工程と前記出力工程とによる処理を再実行するように制御する制御工程と、
を有し、
前記減色工程にて、前記出力工程で出力された第１色の色データで構成される前記第２の画像データを予め定められた画素数のブロックごとに処理対象の着目ブロックとして前記減色処理を実行する場合、前記特定工程で特定された前記配置パターンに基づいて、当該処理対象の着目ブロックに含まれる画素の画素値に重み付けを行いながら前記減色処理を行うことを特徴とする画像処理方法。
【請求項１６】
コンピュータを、請求項１乃至１３のいずれか一項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像を所定のブロック単位に圧縮する技術とブロック単位に圧縮された画像の画像処理や復元処理を行う技術に関する。
【背景技術】
【０００２】
従来、デジタル複合機に限らず、デジタルカメラやファクシミリ装置などの画像処理装置では、メモリ／ハードディスク量の節約やそれらへの書き込み時間を短縮するために、カラー画像データの圧縮を行い、低コスト化や高速化を実現している。カラー静止画像の圧縮方式には、離散コサイン変換を利用したＪＰＥＧ方式やＷａｖｅｌｅｔ変換を利用した方式が多く使われている。この種の符号化方式は、一般的に画像を所定のブロック（例えば８×８や１６×１６画素単位）に符号化し、離散コサイン変換、量子化及びエントロピー符号化を行うことで高い圧縮効率を達成している。これら方式では、ブロック単位での可変長符号化方式を取っているため、小さなエリア参照のためのランダムアクセスが難しい。そのアクセスには符号量が画像により不定なので、復号対象ブロックの位置（メモリアドレス）が不定になり、その位置を知る何らかの方法が必要になる他、ブロック単位での復号化処理が必要となる。また、ＪＰＥＧでの離散コサイン変換ではブロックサイズとして、通常８×８画素必要としている。このブロック単位での離散コサイン変換処理を高速に行うには、高速演算器や専用ハードウェアが必要な上、バッファ用のメモリが必要となる。これらランダムアクセス性や処理の複雑度の課題に対するアプローチとして、ブロックサイズが小さい圧縮率固定の画像圧縮技術（例えば、特許文献１）が開示されている。
【０００３】
また、高解像度化が進むにつれて画像処理を必要とする画素数が飛躍的に増え、その処理負荷が増大しているという課題もある。上述した画像圧縮を用いた場合、その画素データを参照し、その画素データを変換するには、圧縮データの復号処理が必要になってくる。つまり、圧縮データのままで画像処理を行うことはできず、必ず復号処理が必要になり、高解像度データ全ての画素に対して画素単位に処理を行う必要が出てしまい、処理時間の増大を招く。画素データの符号化を行わずに圧縮処理を行う技術としては、画素データとその連続数を記憶する公知のランレングス圧縮方式やブロック単位でエッジを検出し、そのエッジの持つ２色を記憶することで圧縮する技術（例えば、特許文献２）が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−１０４６２１号公報
【特許文献２】特開平１０−２５７４８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
離散コサイン変換を利用したＪＰＥＧ方式やＷａｖｅｌｅｔ変換を用いる方式の場合、そのブロック毎に必要とされる計算量が多く、処理時間が掛かると共に、処理ハードウェアが高価になってしまうという問題がある。また、圧縮されたデータに対する画像処理には必ず復号処理が必要となり、処理すべき画素数次第では膨大な処理時間が掛かってしまうという問題もある。例えば、画像データの用途次第では高解像度データが必ずしも必要とはならないが、低解像度データを得るためには、高解像度データを低解像度データへ縮小する必要があった。すなわち、ＪＰＥＧ等で圧縮符号化された高解像度データから低解像度データを作成するためには、必ず復号処理と別途縮小処理が必要になってしまう。
【０００６】
また、画像の画素値を持つのではなく、隣接画素との一致情報のみ保持し画像圧縮を行う圧縮方式（例えば上述のランレングス圧縮方式）において、減色し、非可逆圧縮を行う場合を考える。ランレングス圧縮方式において色が似ている場合、同色のランとみなしてその連続数をカウントし符号化する非可逆ランレングス圧縮方式の場合、オリジナルとの色差が複数画素に伝搬する事があり画像劣化が課題になる。この劣化はランレングス圧縮方式に限らず隣接画素との一致情報による圧縮と減色処理を組み合わせる場合の共通の課題となる。
【０００７】
本発明は、処理コストを抑えつつ、画像データの圧縮を行う場合に、減色による画像劣化を最小限に抑えかつ高効率な圧縮を行える装置及び方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記課題を鑑みてなされたものであり、以下の構成を有する。本発明の画像処理装置は、第１の画像データを２×２画素のサイズのブロックに分割し、分割された当該ブロックそれぞれを順に第１の処理対象にし、当該第１の処理対象のブロック内の各画素の色データを比較することにより、当該ブロックに含まれる色データの配置パターンを示す第１のパターンフラグを特定する第１特定手段と、前記２×２画素のサイズのブロックの予め定義された位置の画素に対応する色データを第１色の色データとして抽出し、更に、前記第１の処理対象のブロックに含まれる色数が２〜４のいずれかである場合、特定された前記第１のパターンフラグで定義されている配置パターンに対応する第２〜４色の色データを抽出する第１抽出手段と、前記第１特定手段で特定された各ブロックの第１のパターンフラグと、前記第１抽出手段で抽出された各ブロックの前記第１色の色データと、前記第１抽出手段で抽出された各ブロックの第２〜４色の色データとを出力する第１出力手段と、前記第１出力手段で出力された第１色の色データで構成される第２の画像データを２×２画素のサイズのブロックに分割し、分割された当該ブロックそれぞれを順に第２の処理対象にし、当該第２の処理対象のブロックを構成する各画素に対応する前記第１のパターンフラグに基づいて各画素値に重み付けを行うことにより、当該第２の処理対象のブロックに対する減色処理を行う第２減色手段と、前記第２減色手段で減色処理を行った後の前記第２の処理対象のブロックにおける各画素の色データを比較することにより、当該第２の処理対象のブロックに含まれる色データの配置パターンを示す第２のパターンフラグを特定する第２特定手段と、前記第２減色手段で減色処理を行った後の前記２×２画素のサイズのブロックの予め定義された位置の画素に対応する色データを第１色の色データとして抽出し、更に、前記第２の処理対象のブロックに含まれる色数が２〜４のいずれかである場合、特定された前記第２のパターンフラグに定義された配置パターンに対応する第２〜４色の色データを抽出する第２抽出手段と、前記第２特定手段で特定された各ブロックの第２のパターンフラグと、前記第２抽出手段で抽出された各ブロックの前記第１色の色データと、前記第２抽出手段で抽出された各ブロックの第２〜４色の色データとを出力する第２出力手段と、を有することを特徴とする。
【０００９】
また、本発明の画像処理装置は、画像データを予め定められた画素数のブロックごとに処理対象の着目ブロックとして圧縮処理する画像処理装置であって、前記着目ブロックに対して減色処理を行う減色手段と、前記着目ブロックにおける各画素の間の色データを比較することにより、当該着目ブロックに含まれる色データの配置パターンを特定する特定手段と、前記ブロックにおける予め定義された位置の画素に対応する色データを第１色の色データとして抽出し、更に、前記ブロックに含まれる第１色以外の色データを抽出する抽出手段と、前記特定手段で特定された前記配置パターンと、前記抽出手段で抽出された第１色の色データと第１色以外の色データとを出力する出力手段と、前記出力手段で出力された第１色の色データで構成される第２の画像データを予め定められた画素数のブロックごとに処理対象の着目ブロックとして、前記減色手段による減色処理を実行するように制御し、更に、前記減色手段にて減色された前記着目ブロックに対し、前記特定手段と前記抽出手段と前記出力手段とによる処理を再実行するように制御する制御手段と、を有し、前記減色手段は、前記出力手段で出力された第１色の色データで構成される前記第２の画像データを予め定められた画素数のブロックごとに処理対象の着目ブロックとして前記減色処理を実行する場合、前記特定手段で特定された前記配置パターンに基づいて、当該処理対象の着目ブロックに含まれる画素の画素値に重み付けを行いながら前記減色処理を行うことを特徴とする。
【発明の効果】
【００１０】
本発明によれば、処理コストを抑えつつ、減色による画像劣化を最小限に抑え画像データの圧縮を行うことが可能となる。本発明により圧縮されたデータを用いることにより、処理コストを抑えられるため、画像処理も容易に行うことができる。
【図面の簡単な説明】
【００１１】
【図１】実施形態における画像処理装置の構成の一例を示すブロック図。
【図２】図１に示すコントローラの構成例を示す図。
【図３】ブロックにおけるパターンの取り得る組み合わせを示す図。
【図４】図３に示すパターンとパターンフラグの関係を示す図。
【図５】異なる画素とパターンフラグを特定する処理を示すフローチャートを示す図。
【図６】画素値が異なる画素の位置を判定する処理を説明するための図。
【図７】ＤＭＡＣによる画像データのメモリ空間への書き込み例を示す図。
【図８】第１の実施形態における圧縮処理を示すフローチャートを示す図。
【図９】２段での圧縮処理を独立に行った場合の画像データの推移を示す図。
【図１０】２段の圧縮処理を１段目を踏まえて行った場合の画像データを示す図。
【図１１】２段の圧縮処理を１段目を踏まえて行った場合の画像データを示す図。
【図１２】新たなパターンフラグを追加した入出力の関係を示す図。
【図１３】第２の実施形態における圧縮処理を示すフローチャートを示す図。
【図１４】第２の実施形態での画像データのメモリ空間への書き込み例を示す図。
【図１５】第３の実施形態における圧縮処理を示すフローチャートを示す図。
【図１６】ページとタイルとブロックとの関係を示す図。
【図１７】パッキングされたデータのデータ構造を示す図。
【図１８】パケット管理テーブルの構成の一例を示す図。
【図１９】メモリ空間に書き込まれた各パケットのアドレスを示す図。
【図２０】第３の実施形態における多段の圧縮処理を示すフローチャートを示す図。
【図２１】多段圧縮を行った際のパッキングされたデータのデータ構造を示す図。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら発明を実施するための形態について詳細に説明する。本実施形態では、画像処理装置として、スキャン、プリント、コピーなどの複数の機能を有するデジタル複合機（ＭＦＰ）を例に説明する。
【００１３】
［第１の実施形態］
図１に示すように、コントローラ１０１は、画像入力機器であるスキャナ１０２や画像出力機器であるプリンタ１０３と接続される。また、コントローラ１０１はＬＡＮや公衆回線（ＷＡＮ）などのネットワーク１０４と接続することで、画像情報やデバイス情報の入出力、ＰＤＬデータのイメージ展開を行う。ＣＰＵ１０５は、ＨＤＤ記憶部１０７に格納されたプログラムに従ってＭＦＰ全体を制御するプロセッサである。メモリ１０６は、ＣＰＵ１０５が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。ＨＤＤ記憶部１０７は、ハードディスクドライブであり、システムソフトウェアやプログラム、画像データなどを格納する。
【００１４】
次に、図２に示すコントローラ１０１の構成例を参照してコントローラ１０１の各部の詳細な処理を説明する。まず、スキャナ１０２によってスキャンされた画像データを読み込む場合を説明する。スキャナ１０２で読み取られたＲＧＢ（レッド、グリーン、ブルー）の３色の画像データをスキャナ用画像処理部２０１が受け取り、その画像データに対してシェーディング処理やフィルタ処理等の画像処理を行い、圧縮部２０２が画像圧縮処理を行う。そして、圧縮されたデータ（圧縮データ）をＤＭＡＣ（ダイレクトメモリアクセスコントローラ）２０３が画像メモリバスを介してメモリ１０６に格納する。
【００１５】
次に、スキャンされた画像データをプリントする場合、メモリ１０６に格納された圧縮データをＤＭＡＣ２１１が画像メモリバスを介して色処理部２１２へ転送する。そして、色処理部２１２がＣＭＹＫ（シアン、マゼンタ、イエロー、ブラック）色空間へ変換する。その後、更に色処理部２１２がＣＭＹＫの各値に対して濃度調整やプリンタガンマ補正などの色処理を行った後、該色処理後のデータをＤＭＡＣ２１１が画像メモリバスを介して再度メモリ１０６に格納する。その後プリント用の画像処理を行うために、ＤＭＡＣ２２１が画像メモリバスを介してメモリ１０６に格納されている圧縮データを読み込み、展開部２２２がラスタ画像データに展開する。そして、ラスタのＣＭＹＫ画像データをプリント用画像処理部２２３が入力し、ディザ法や誤差拡散法による面積階調処理を行い、プリンタ１０３へ出力する。
【００１６】
また、スキャンされた画像データをネットワークへ送信する場合、メモリ１０６に格納されている圧縮データをＤＭＡＣ２１１が画像メモリバスを介して色処理部２１２へ転送する。そして、色処理部２１２がディスプレイガンマ調整や用紙地色調整等を行った後、ＹＣｂＣｒ（輝度、ＢＬＵＥ色差、ＲＥＤ色差）色空間へ変換する。そして、当該色処理部２１２で処理されたデータを再度ＤＭＡＣ２１１が画像メモリバスを介してメモリ１０６に格納する。その後、送信用の画像処理を行うために、ＤＭＡＣ２３１が画像メモリバスを介してメモリ１０６に格納されている圧縮データを展開部２３２へ転送する。そして、展開部２３２が圧縮データをラスタ画像データに展開する。その後、ラスタのＹＣｂＣｒ画像データに対して送信処理部２３３がカラー画像送信であればＪＰＥＧ圧縮処理を行い、モノクロ２値画像送信であればＹデータに対して２値化を行い、ＪＢＩＧ圧縮等を行い、ネットワーク１０４へ出力する。
【００１７】
また、スキャンされた画像データを保存する場合、メモリ１０６に格納されている圧縮データをＤＭＡＣ２４１が画像メモリバスを介してディスクスプール高圧縮／展開部２４２へ転送する。ディスクスプール高圧縮／展開部２４２では、ＨＤＤの書き込みスピードがメモリに対して遅いため、更に高圧縮のＪＰＥＧ圧縮を施す。その後ディスクアクセスコントローラ２４３を介してＨＤＤ記憶部１０７へ圧縮データを保存する。また、ＨＤＤ記憶部１０７に保存されている圧縮データを再度メモリ１０６に転送する場合には、上述した処理を逆に行えば良い。
【００１８】
ここで、図１に示すネットワーク１０４を介して接続された他の装置から送られてきたＰＤＬデータをメモリ１０６へ書き込む場合を説明する。図２にはＰＤＬ解釈部が図示されていないが、ＰＤＬ解釈部として機能するＣＰＵ１０５がＰＤＬデータを解釈し、その結果のディスプレイリストをメモリ１０６に出力する。その後、メモリ１０６に格納されているディスプレイリストをレンダリング部２５１がラスタのＲＧＢ画像データへレンダリングを行い、圧縮部２５２が画像圧縮処理を行う。そして、圧縮データをＤＭＡＣ２５３が画像メモリバスを介してメモリ１０６に格納する。尚、ＰＤＬデータをプリント、ネットワークへ送信、保存する処理は、スキャンされた画像データの場合と同様の処理を行うことで実現可能である。
【００１９】
［圧縮処理］
次に、本発明の特徴であるラスタ画像データの圧縮処理を詳細に説明する。なお、本実施例において、圧縮部２５２ではＰＤＬデータから生成されたラスタ画像を圧縮し、圧縮部２０２ではスキャンで得たラスタ画像を圧縮するものとするが、このような構成に限るものではない。例えば、図２のように圧縮部２０２と２５２を個別に設けるのではなく、共通の圧縮部を設けるように構成しても構わない。
【００２０】
本実施形態では、まずページ単位のラスタ画像データを、２×２画素単位のブロックに分割し、分割して抽出されたブロック単位にデータの圧縮処理を行う。ここで圧縮処理を説明する前に、２×２の４画素データの中に占める色数に応じてその組み合わせの場合の数を考える。画素数が４画素なので、そこに占める色数は最大４色になり、ブロック内で高々１色〜４色の組み合わせしか存在しない。その４色のパターンの取り得る組み合わせの場合の数を図３に示す。
【００２１】
まず、ブロック内が１色の場合、４画素が同色で構成されていることになるので、その組み合わせは１通りである。次に、ブロック内が２色の場合を考える。図３に示すように、２色が４画素内にレイアウトされる場合の数は、左上の画素を第１色、他方を第２色として考えると、左上以外残りの３画素へ第１色もしくは第２色が入るので、４画素同色の場合を除くと、全部で７通りの組み合わせが考えられる。
【００２２】
次に、ブロック内が３色の場合を考える。３色が４画素内にレイアウトされる場合の数は、３色のうち１色だけ２度使われる場合の数と言い換えることが可能であり、４画素の座標のうち、２画素が同じ色になる場合の数を求めれば良い。つまり、３色の場合の数は、４つの座標から２つの座標を取る組み合わせとなり、全部で６通りとなる。そして最後に、ブロック内が４色の場合は１色の場合と同様で１パターンしか存在しない。
【００２３】
１色〜４色全ての場合の数を合計すると、全部で１５通りのパターンが考えられる。また、これら全てのパターンを識別するためにフラグ（識別子）を付与することを考えると、フラグのデータ量としては４ビット必要となる。この１５通りのパターンとフラグとの関係を図４に示すように定義し、以下、このフラグを「パターンフラグ」と呼ぶ。
【００２４】
［処理フロー］
上述のように、２×２画素の取り得る組み合わせを踏まえて、圧縮部２０２、２５２で行われる処理フローを、図５を用いて説明する。入力としては、例えばＲＧＢそれぞれ８ビットの２５６階調を持っており、またデータとしては８ビットデータの点順次で１画素当たり２４ビットの画像として説明する。
【００２５】
まず、２×２画素のブロックを入力し（Ｓ５０１）、そのブロックにおける全ての２画素の組み合わせに対して２４ビットのコンペアを取る（Ｓ５０２）。ここでコンペアを取った結果、全ビット一致していた場合には"１"を、不一致の場合には"０"を出力する。ここで、２×２画素内の左上から右上、左下、右下の画素の位置順に、座標１、２、３、４とする（図４に示す４０１）。２画素の組み合わせの座標は、１−２、１−３、１−４、２−３、２−４、３−４の全部で６通り（図４に示す４０２）あるので、６回コンペアを取る必要があり、結果は６ビット出力される。図４に示すコンペア結果のように、全画素が同色であれば、全てのコンペア結果が１を出力し、逆に４画素が全てバラバラの画素値を持っていれば、全てのコンペア結果が０を出力する。
【００２６】
この例では、４画素で色の一致から出現し得るパターンの数は１５通りなので、図４に示すように、６ビットのコンペア結果に応じて、４ビットのパターンフラグを特定する（Ｓ５０３）。次に、４画素内で出現した色数及び色データを抽出する（Ｓ５０４）。図４に示したように、４ビットのパターンフラグ（または６ビットのコンペア結果）に対して、ブロック内での各色の配置を示す各パターンが対応づけられているので、各ブロックにおける色数と色データを特定することができる。なお、本実施形態の図４では、全てのパターンにおいて、左上の画素の色（画素値）が第１色（１番目の色データ）となるように定義している。パターンフラグが０の場合は、色数１で、左上の画素の色（画素値）を第１色として抽出する。また、パターンフラグが１〜７の場合は、色数２で、左上の画素の色（画素値）を第１色として抽出し、更に、各パターンフラグに応じて定義されている第２色（２番目の色データ）が存在する位置の画素の色（画素値）を抽出する。例えば、パターンフラグが１の場合は、右上の画素の色を第２色として抽出する。また、パターンフラグが８〜Ｄの場合は、色数３で、左上の画素の色（画素値）を第１色として抽出し、更に、各パターンフラグに応じて定義されている第２色（２番目の色データ）および第３色（３番目の色データ）が存在する位置の画素の色（画素値）を抽出する。例えば、パターンフラグが８の場合は、右上の画素の色（画素値）を第２色として抽出し、右下の画素の色（画素値）を第３色として抽出する。また、パターンフラグがＥの場合は、左上の画素の色を第１色、右上の画素の色を第２色、左下の画素の色を第３色、右下の画素の色を第４色として抽出する。
【００２７】
すなわち、パターンフラグ（またはコンペア結果）に基づいて、ブロックの色数が特定され（Ｓ５０５、Ｓ５０７、Ｓ５０９）、それぞれに応じたパターンフラグと色データとを出力する（Ｓ５０６、Ｓ５０８、Ｓ５１０、Ｓ５１１）。この出力されるデータを、図６を用いて説明する。
【００２８】
図６に示すように、例えばパターンフラグが０（すなわち４画素内が１色で構成されている）の場合には（Ｓ５０５でＹＥＳ）、２色目以降は存在しないので、パターンフラグの４ビットと１色目の画素値（２４ビット分の色データ）とを出力する（Ｓ５０６）。また、パターンフラグが１〜７（すなわち４画素が２色で構成されている）の場合（Ｓ５０７でＹＥＳ）には、２色目が存在する画素の座標をパターンフラグより算出する。そして、パターンフラグの４ビットと２色分の画素値（４８ビット分の色データ）を出力する（Ｓ５０８）。また、パターンフラグが８〜Ｄ（すなわち３色）の場合（Ｓ５０９でＹＥＳ）、パターンフラグの４ビットと３色分の画素値（７２ビット分の色データ）とを出力する（Ｓ５１０）。そして、パターンフラグがＥ（すなわち４色）の場合（Ｓ５０９でＮＯ）、パターンフラグの４ビットと４色分の画素値（９６ビット分の色データ）とを出力する（Ｓ５１１）。言い換えると、各ブロックから出力される色データは、ブロック内の座標（左上から右上、左下、右下の順に１、２、３、４）順に走査した場合に、出現していなかった色データが第１色から順に出力されることに相当する。
【００２９】
このように、２×２画素のブロックにおける４色（９６ビット）の入力データを４ビットのパターンフラグと、そこに存在する色数だけ画素値を出力することで、比較的簡単な処理で出力データ量を削減することが可能になる。特に、２×２画素のブロック内で同色の画素が存在するブロック（すなわち各ブロック内の色数が少ないブロック）が多いラスタ画像の場合は、出力されるデータ量の圧縮率も大きくなる。また、パターンフラグを参照することで、そのブロック内の色数を特定することが可能になる。このような処理を画像ブロック全てに対して行うことで、画像全面をデータ圧縮することが可能になる。この時ブロック内の画素が数レベルの違いしかないのであれば同色と見なして、各ブロックで減色処理を行うことで、４色と判定されるブロックを減らし、圧縮率の向上を図る。この場合、同色とみなすための閾値は、予めメモリ１０６等に保持しておいても良いし、ネットワーク１０４を介して、ユーザからの指定を受け付けても良い。ユーザからの指定を受け付ける場合には、そのためのユーザインタフェースを提供し、指定手段を実現する。
【００３０】
各ブロックの減色処理を行った後、２×２画素の取りうる組み合わせを踏まえて、画像圧縮を行う処理を、図８を用いて説明する。まず、処理対象となる２×２画素のブロックを入力し（Ｓ８０１）、４画素の画素値から１色へと減色処理を行う（Ｓ８０２）。ここでは、例えば４画素の平均画素値を算出することで１色への減色を実現する。そして、その減色した画素値と入力の４画素の画素値との差分を算出する（Ｓ８０３）。そして、誤差の大小を判定する（Ｓ８０４）。例えば、各ブロックにおいて、入力された各画素の画素値と減色後のＲＧＢ値との差の絶対値の和を取り、その和が閾値以下である場合には差が小さいと判定できる。即ち、差が小さいと判定された場合には、１色に減色すると判定し、パターンフラグを０に特定する（Ｓ８０５）。そして、その減色した１色の画素値と当該特定したパターンフラグとを出力する（Ｓ８０６）。
【００３１】
また、誤差が大きいと判定された場合には、続いて２色へ減色処理を行う（Ｓ８０７）。ここでは、例えば４画素のうちＲＧＢ値の差が最も大きい２画素Ａ、Ｂを抽出し、残りの２画素がＡ、Ｂどちらに近いかでクラスタリングする。そして、その各クラスタにおいて平均値を求めることで、２色化する。続いて、その２色化した画素値と入力の４画素の画素値との差分を計算する（Ｓ８０８）。そして、その結果に基づいて誤差の大小を判定する（Ｓ８０９）。ここで、差が小さいと判定された場合には、第１の実施形態と同様に図４のような対応関係に基づき、２色に減色した場合の画素値の位置に応じてパターンフラグを特定する（Ｓ８１０）。そして、減色した２色の画素値と当該特定したパターンフラグとを出力する（Ｓ８１１）。
【００３２】
また、ここでも誤差が大きいと判定された場合には、続いて３色への減色処理を行う（Ｓ８１２）。ここでは、例えば４画素のうち最もＲＧＢ値の差の小さい２画素を抽出し、その２画素の値の平均値を求め、それ以外の２画素の画素値と合わせて３色へ減色する。そして、その３色化した画素値と入力の４画素の画素値との差分を計算する（Ｓ８１３）。そして、その結果に基づいて誤差の大小を判定する（Ｓ８１４）。判定した結果、差が小さいと判定された場合には、第１の実施形態と同様に図４のような対応関係に基づき、３色に減色した場合の画素値の位置に応じてパターンフラグを特定する（Ｓ８１５）。そして、減色した３色の画素値と当該特定したパターンフラグとを出力する（Ｓ８１６）。
【００３３】
更に、ここでも誤差が大きいと判定された場合には、減色すると視覚的に問題が出るブロックと判定し、パターンフラグをＥに特定する（Ｓ８１７）。そして、４画素全ての画素値と当該特定したパターンフラグを出力する（Ｓ８１８）。
【００３４】
以上により、入力時の画素値と減色をする候補の色数にて減色をした場合の画素値の差分を順次比較し、減色する色数を決定することとなる。
【００３５】
［メモリ格納処理］
次に、このようにして求めたパターンフラグと色データとを、ＤＭＡＣ２０３、２５３がメモリに書き込む処理（メモリ格納処理）を行う。このとき、ＤＭＡＣ２０３、２５３ではパターンフラグと第１色のデータと第２色、第３色、第４色のデータとの書き込み位置を変える。ＤＭＡＣにはパターンフラグ書き込みのためのメモリ先頭アドレスと、第１色データの書き込みのためのメモリ先頭アドレスと、第２色以降のデータを書き込むためのメモリ先頭アドレスそれぞれを示す３つのアドレスを指定する。すなわち、各ブロックのパターンフラグはメモリ上のパターンフラグ格納部（パターンフラグを格納するためのメモリ領域）にまとめて格納されることになる。また、各ブロックの第１色（１色目）の色データは、メモリ上の第１色格納部（各ブロックの１色目の色データを格納するためのメモリ領域）にまとめて格納されることになる。更に、各ブロックの第２〜４色目の色データは、メモリ上の第２、３、４色格納部（各ブロックの２〜４色目の色データを格納するためのメモリ領域）にまとめて格納されることになる。
【００３６】
図７は、ＤＭＡＣによる画像データのメモリ空間への書き込み例を示す図である。尚、サイズがＭ×Ｎ画素のＲＧＢ各色８ビットの画像を圧縮部へ入力する場合、パターンフラグのデータが格納されるパターンフラグ格納部のデータサイズは、（Ｍ×Ｎ×４／８）バイトとなる。また、第１色のデータが格納される第１色格納部のデータサイズは、（Ｍ×Ｎ×２４／８）バイトとなる。また、第２色、第３色、第４色のデータ（つまり、第１色以外の色データ）が格納される第２、３、４色格納部のデータサイズは、処理対象となるラスタ画像に応じて異なる。これは、第２、３、４色が存在するブロック数が画像によって異なるためである。
【００３７】
ここで、第１色書き込み先頭アドレス以降のメモリ領域（第１色格納部、および第２、３、４色格納部）に関しては、画素の色データがそのままのビット数で格納されている。すなわち、ＪＰＥＧ等の圧縮データとは異なり、圧縮データをデコードしてラスタ画像に戻さなくても、各画素の色（画素値）を特定することができる。従って、１画素入力／１画素出力で完結する色処理、例えばＬＵＴを用いた色変換やガンマ補正処理、行列演算を用いた色空間変換処理等を行う場合は、元のラスタ画像に戻す必要はなく、図７のように格納されているデータに対して直接処理を行うことができる。図２に示した色処理部２１２で画素単位の画像処理を行う場合は、メモリ１０６上の第１色書き込み先頭アドレス以降の画素データをＤＭＡＣ２１１経由で読み込み、画素単位での処理を済ませた後に、メモリ１０６上へ書き戻す。このとき、何らかの画素単位処理によって画素のビット数が変わらない場合には、メモリ１０６上の同じ場所へ上書きすることでメモリ１０６の節約も可能である。
【００３８】
このように、圧縮データを直接用いることで、メモリバス上の転送効率が向上し、かつオリジナルのラスタ画像の画素数よりも少ない数の色データに対して処理することになり、高速処理が可能になる。
【００３９】
［データ構造の活用例］
また、図７に示すように、画像データを、パターンフラグと第１色とその他の色とに分類し、離散的にメモリ上へ格納している。したがって、第１色格納部には、ラスタ画像を２×２画素のブロックに分割して、各ブロックにおける左上の座標の画素をサンプリングした場合の画素値（色データ）がメモリ上に連続して存在することになる。
【００４０】
ＭＦＰにおいては、蓄積したＰＤＬ画像データやスキャン画像データのプレビュー表示、上述したネットワーク送信などの機能も有している。例えば、プリント解像度が６００ｄｐｉであったとしても、プレビューや送信時にそこまでの解像度は通常必要とされず、３００ｄｐｉやそれ以下で十分な場合が多い。このように、縮小データを得る必要がある場合は、第１色格納部に格納されている第１色の色データのみをまとめて抽出することで、簡単に半分のサイズのラスタ画像を得ることができる。
【００４１】
例えば、６００ｄｐｉのラスタ画像が図７のようなデータに変換されて蓄積されていた場合の縮小送信時を説明する。送信する画像の解像度として３００ｄｐｉが指定された場合は、第１色格納部に格納されているデータをそのまま抽出して送信すればよい。また、解像度として４００ｄｐｉなど、第１色格納部にサンプリングされている３００ｄｐｉより大きい解像度が指定されている場合には、次のように処理する。すなわち、パターンフラグ格納部と第１色格納部と第２、３、４色格納部とに格納されているデータに基づき、圧縮データを一度展開し、公知の変倍処理を用いて変倍し、当該変倍された画像を送信する。また、３００ｄｐｉより小さい送信解像度指定がされている場合には、第１色格納部のデータのみを用いて、指定の解像度へ変倍処理を行う。このように、必要な画像サイズに応じて切り替えながらデータの読み込みを行うようにすればよい。
【００４２】
このようにオリジナルの１／２サイズの画像（第１色格納部に格納されているデータ）を得ることができるのであれば、その１／２サイズの画像を入力として同様の圧縮を再度実行すること（多段階圧縮）も可能である。入力の画像データが高解像度になればなるほど隣接する画素は同じ画素値と判断される可能性が高くなる。したがって、そのような高解像度画像の縮小画像には冗長性が残っており、多段で圧縮処理を行った場合の圧縮率も十分期待できる。例えば、２段階で圧縮処理を行った場合、１段目の処理結果の第１色格納部に格納されているデータを、２段目の圧縮処理の結果のデータで置き換えるようにすることで、更にデータ量を小さくすることが期待できる。この場合、元の入力された画像データを第１の画像データとすると、一度圧縮処理をされた画像データを第２の画像データとする。また、第１の画像データにおけるブロックを第１の処理対象としてのブロック、第２の画像データにおけるブロックを第２の処理対象としてのブロックとする。１段目の処理結果のパターンフラグ（第１のパターンフラグ）、２段目の処理結果のパターンフラグ（第２のパターンフラグ）、２段目の処理結果の第１色の色データ、２段目の処理結果の第２〜４色の色データ、１段目の処理結果の第２〜４色の色データが出力される。処理についても同様に、第１の画像データに対する圧縮処理の工程はそれぞれ、第１減色工程第１特定工程、第１抽出工程、第１出力工程となり、第２の画像データに対する圧縮処理の工程は、第２減色工程、第２特定工程、第２抽出工程、第２出力工程とも示すことができる。
【００４３】
［多段階圧縮に係る問題］
しかしながら、上述したような減色を伴う非可逆の圧縮を多段階続けて行うことで、以下に説明するような問題が起こる。図９を用いて具体的に説明する。説明を簡単にするため、図９では、各画素の画素値が０〜２５５で表されるものとして説明する。なお、実際には、ＲＧＢ色空間の画素値を用いて平均や誤差などの計算を行うことになる。
【００４４】
まず図９（ａ）のような４ｘ４画素（つまり２ｘ２画素のブロック４つ）が入力された場合、１段目の圧縮処理により、各ブロックにおける色の配置を示すパターンフラグと色情報（第１色〜第４色の色データ）とが得られる。なお、１段目の圧縮処理時に、減色処理を行っても良いが、図９（ａ）の画素の場合は、誤差が大きくなるため減色されない（減色処理を適用しても画素値は変化しない）。
【００４５】
そして、１段目の圧縮処理の結果から各ブロックの第１色の色データを抽出する（１／２サイズの画像を得る）と、図９（ｂ）のような２ｘ２画素のブロックが出力される。このブロックはそれぞれ入力の２ｘ２ブロックにおける左上の画素をサンプリングしたものに相当し、それぞれ図９（ｂ）に示すような画素値を持つものとする。ここで再度、このブロックを入力として２段目の圧縮処理を行う事を考える。まず入力のブロックに対して前述したように減色処理を行う。例えば、各ブロックにおいて、この減色の際に発生する入力との誤差の総和を４５まで許容するような閾値を取った場合、１段目の圧縮が終了した２ｘ２ブロック（ｂ）が入力された場合には２色への減色が可能と判定される。その結果、左上、右上、左下の３画素の平均値が算出され、結果として図９（ｃ）に示されるような２ｘ２ブロックに減色される。その際の誤差は、３６となる。そして２色のパターンフラグと右下の画素の画素値と共に左上の画素の画素値（ｄ）が２段目の圧縮結果として出力される。しかしながらこのデータを展開した場合、まず図９（ｃ）のように展開され、更に図９（ｃ）を展開すると、図９（ｅ）のようになる。すなわち、最終的な４ｘ４画素では図９（ｅ）のようになり各ブロックのオリジナルとの誤差は総和として、左上のブロックで７２、右上で１４、左下で４、右下で０となり、左上のブロックで許容値を超えてしまう。また入力に対する誤差はトータルで９０となる。これは２段目の圧縮の際に２ｘ２の各画素を同じ重みで処理したことにより起こっている。１段目の圧縮の際に図９（ａ）の左上のブロックと右下のブロックでは１色ブロックとなり、それをサンプリングした図９（ｂ）の左上の画素の値と右下の画素の値をパターンフラグに基づいて展開すると、図９（ａ）のように４画素にコピー、伝播される。しかしながら、２段目の圧縮時に減色処理を行うと、図９（ｃ）のように減色されているので、これをパターンフラグに基づいて展開すると図９（ｅ）のようになる。すなわち図９（ｃ）の左上の画素と右下の画素の画素値は４画素に展開されることになるので、減色時の誤差が伝播する面積も４画素になる。したがって、減色による誤差の影響範囲が広くなっている。
【００４６】
［多段階圧縮処理］
そこで、本発明では、１段目でどのような圧縮がされた画素かどうかを判定（すなわち、画素のオリジナルサイズでの実占有面積を判定）し、減色の影響がどこまで広がるか考慮しながら２段目の減色・圧縮処理を行う。図１０を用いて具体的に説明する。入力として４ｘ４画素の図１０（ａ）は図９（ａ）と同じであり、１段目の圧縮画像の図１０（ｂ）も図９（ｂ）と同じになる。２段目の圧縮の際に減色処理を行うがその際１段目で各画素がどれだけの範囲に影響を及ぼすかを考慮しながら減色値を求める。
【００４７】
具体的には図１０（ｂ）において、左上の画素は４画素、右上は１画素、左下は１画素、そして右下の画素は４画素へそれぞれ影響を及ぼす。これは１段目のパターンフラグを参照すれば判定が可能になっており、左上、右下の画素には“０”のパターンフラグが付与されている（全ての画素が同一）。また、右上、左下の画素には“４”のパターンフラグが付いていることから判定可能である。このように、図１０（ｂ）の左上、右下の画素は展開時の影響が大きいことが判定できるので、これらの画素に対して平均値を算出する場合は４倍の重みを付けて減色処理を行う。なお、ここでは、展開時に影響する画素数が多くなるほど重みが大きくなるようにして重み付き平均を求める（４画素に展開される画素は４倍、３画素に展開される画素は３倍、２画素に展開される画素は２倍）。このとき、図１０（ｂ）は２色へ減色可能と判定され、その平均値算出結果は図９（ｃ）と異なり、図１０（ｃ）のようになる。これは右下を除く３画素の平均値を算出する際に左上の画素に４倍の重みを掛けて求めたためである。このとき、その誤差は４５となり許容閾値に収まる。そして図９（ｄ）の場合と同様に、左上の画素の画素値（図１０（ｄ））を第１色として、パターンフラグ（２色を示すパターンフラグ６）と第２色（右下の画素の画素値）と共に最終的に出力される。図１０（ｄ）のデータを展開した場合、まず図１０（ｃ）のように展開され、更に図１０（ｃ）を展開すると、図１０（ｅ）のようになる。このとき、各ブロックのオリジナルとの誤差は総和として、左上のブロックで３６、右上で２３、左下で１３、右下で０となり、許容値を超えるものは無くなる。また入力に対する誤差は、トータルで７２となり、図９のものに比べ減っている。
【００４８】
つまり、圧縮された画素が復号された場合に、いくつの画素に影響するかをパターンフラグにより判定する。そして、影響される画素の数に応じて、圧縮された画素の値に重み付けを行って平均値を算出することにより減色した画像を、再度の圧縮時の画素値として用いる。
【００４９】
次に、前述の例では許容誤差の閾値を４５としていたが、許容する値を下げ、より画質にシビアにした場合について、図１１を用いて説明する。この場合、２段目の減色で２色への減色したときに許容誤差閾値を超えてしまうと、２色への減色ができなくなる。オリジナルの画像である図１１（ａ）は前述の例と同じで、同様に１段目の結果である図１１（ｂ）も図１０（ｂ）と同様になる。続いて２段目の減色処理になるが、前例と同様に１段目で各画素がどの程度の広さに影響を及ぼすか考慮したうえで減色を行う。この場合、許容誤差閾値を４５より小さく設定する（例えば４０）と、３色までの減色しか許容されない。図１１（ｂ）を３色へ減色した場合、図１１（ｃ）のようになる。３色へ減色したブロックである図１１（ｃ）の誤差は総和として１０となり最終的には、この左上の画素から得た画素値（第１色画素値）（図１１（ｄ））と、パターンフラグ（３色を示すパターンフラグＢ）と、第２・第３色画素値とを出力する。このデータを展開した場合、まず図１１（ｃ）に展開され、更に図１１（ｅ）のように展開されることになる。４ｘ４画素である図１１（ｅ）へ展開した場合の各ブロックのオリジナルとの誤差は、左上で０、右上で５、左下で５、右下で０となり入力に対するトータルの誤差は１０となる。データとしては４ｘ４の画素に対して１画素のデータ増で誤差を減らすことが可能になる。
【００５０】
１段目の圧縮処理に対し２段目の圧縮処理は、解像度として半分の画像を扱うことになり、その画像劣化に対する許容度は１段目の圧縮処理より２段目の圧縮処理の方が小さい。つまり劣化に対する許容度を、段数を追うごとに制限することで劣化が広域に広がることを防ぐことができる。
【００５１】
このように２段目以降の圧縮の際にそれ以前でその画素がどの程度周囲に対して影響を及ぼしているのか考慮したうえで、減色処理を行うことでデータ量の増分が発生する場合もあるが、画像劣化を最小限に抑えることが可能になる。
【００５２】
［展開処理］
次に、圧縮部２０２、２５２と対になる展開部２２２、２３２を説明する。尚、展開部２２２、２３２では、上述したようなパターンフラグと色データを、ラスタ画像データへ戻す処理を行う。メモリ１０６上に図７に示すように配置されている圧縮データのパターンフラグ書き込み先頭アドレス、第１色書き込み先頭アドレス、及び第２、３、４色書き込み先頭アドレスの３つのアドレスをＤＭＡＣ２２１、２３１へ指定する。ＤＭＡＣ２２１、２３１は３つのアドレスからデータを読み出し、展開部２２２、２３２へ転送する。
【００５３】
展開部２２２、２３２では、まず４ビットのパターンフラグを解釈し、そのブロック内の色数を算出する。第１色データに加え、色数に応じて第２、３、４色データを読み出し、各パターンフラグに対して予め定義されている色データの配置パターン（図４）にしたがって、第１色ならびに第２〜４色の色データを再配置する。以上の流れにより、２×２画素ブロックを展開、復号する。
【００５４】
また、画像サイズが１／２の画像を得たい場合、展開部２２２、２３２では、上述したように、パターンフラグと２、３、４色データを必要としないので、ＤＭＡＣ２２１、２３１には第１色書き込み先頭アドレスのみ指定する。これにより、メモリ１０６から第１色データのみの読み込みが行われ、画像が構成される。このように処理することで、メモリバスの帯域を節約することが可能になる。
【００５５】
以上、第１の実施形態によれば、比較的単純な圧縮方式でメモリ容量やメモリバス帯域の節約が可能になるだけでなく、画素単位での画像処理や縮小変倍を行う場合の処理負荷も削減することが可能になる。尚、第１の実施形態では、色データの配置を示すパターンとパターンフラグとを図４のように対応付けたが、これに限るものではない。例えば、２×２画素ブロックの右下画素の画素値が第１色となるように、色データの配置を示すパターンとパターンフラグとを対応付けて予め定義しても構わない。また、第１の実施形態では、ブロックのサイズとして２×２画素のサイズを用いて説明してきたが、これに限るものではない。また、圧縮の説明の際に画像データとしてＲＧＢ８ビットを例に説明してきたが、ＣＭＹＫの色空間を取るものやＧＲＡＹスケールのデータ、或いは８ビット以外の画素値をとるものでも良い。
【００５６】
また第１の実施形態で説明した減色処理時にＲＧＢの平均値を用いる方法は一例であり、他の公知の減色処理を用いて実施することも可能である。例えば、公知の色差を求める別の手法で代替することも可能である（ただし、このとき、前述したように上段の圧縮（１段目の圧縮）による影響を考慮して所定の基準で重みをつけるようにする）。また、第１の実施形態では、圧縮の段数を２段階までで説明しているが、それに限るものではない。
【００５７】
これまで説明してきたようにＭＦＰにおいては画像の入力手段として、スキャナを用いたものやネットワークからのものなど多岐にわたり、その解像度も様々である。またその使用用途によっても種類が増える。例えば同じスキャナからの入力であっても、コピー用途のスキャンであれば６００ｄｐｉといった比較的高い解像度となるが、ネットワークの送信やＦＡＸであれば３００ｄｐｉ以下であることもある。またＰＤＬの入力であればそのプリンタ解像度に応じてドライバからユーザが複数選択可能であり、通常６００ｄｐｉや１２００ｄｐｉなどが選べる。このようにさまざまな解像度に応じて圧縮時の圧縮段数を切り替え最適化させることで処理速度やデータサイズ、画質を最適化させることが可能になる。
【００５８】
ＰＤＬを例にとると、ワープロソフトで作成されたドキュメントを６００ｄｐｉでプリントする場合と１２００ｄｐｉでプリントする場合でその画像サイズは４倍の差がある。しかし実際のコンテンツは同じものであり、１２００ｄｐｉの画像データには６００ｄｐｉのそれに対し冗長性が高い。そのため１２００ｄｐｉの画像が入力の場合には３段階の圧縮を行い、３００ｄｐｉまで圧縮を行い、６００ｄｐｉの画像の場合には２段階で止める。圧縮回数が多いことで画質の劣化やパフォーマンスに差は生まれるが、通常前述したように１２００ｄｐｉのデータは冗長性が高いため、同じＰＤＬデータであればこの両者でそれほどデータサイズに差は生まれない。
【００５９】
同様にスキャンの場合、６００ｄｐｉであれば２段階、送信用の３００ｄｐｉスキャンであれば１段階で止めるなどその入力解像度に応じて圧縮の段階数を切り替えることにより、データサイズとパフォーマンスの最適化を行うことが可能になる。
【００６０】
なお、本実施形態では、図４で説明したように、パターンフラグを定義する際に、左上の画素が第１色となるようにしたが、これに限るものではない。その他の位置の画素（例えば右下の画素）が第１色となるようにパターンフラグと配置パターンの対応付けを行っても構わない。
【００６１】
［第２の実施形態］
次に、図面を参照しながら本発明に係る第２の実施形態を詳細に説明する。第２の実施形態では、第１の実施形態で説明したラスタ画像データを圧縮する別の処理を説明する。尚、第２の実施形態でも、画像処理装置として、第１の実施形態と同様に、ＭＦＰを例に説明する。
【００６２】
前述した実施形態における圧縮方法で高圧縮になることが期待される画像は、画像内で隣接画素値が同色ないし減色を行い同じとみなせるだけ十分近いレベルしか違わないような領域が多い画像である。そういった画像領域に着目すると、２×２画素のブロック内部だけでなく、隣接する２×２画素のブロックも含めて同色、もしくは十分同色とみなせるだけ差が小さい場合が多い。
【００６３】
そこで、第２の実施形態では、これまでの実施形態で説明したブロック内で閉じた圧縮方法に加え、隣接ブロックの類似性も含めて着目した圧縮方法を説明する。すでに述べたように図４では、２×２のブロックが取り得るパターンフラグの場合の数を１５通りのパターンとして４ビットで表現している。４ビットパターンフラグでは１６通りまで表現可能なので、１通りまだ記述できる余地がある。そこで、現在処理しているブロックの一つ前のブロックの画素値を記憶しておき、現在のブロックと全画素一致（若しくは減色した際に十分近い）と判定できる場合、そのブロックの画素値（色データ）は出力せず、前ブロックと同じというフラグだけ立てる。ここで十分に近いと判定する場合には、所定の閾値を予め保持しておくか、ユーザにより指定させるものとする。このパターンフラグに４ビットの残りの１通りを割り当てることにより、前述した実施形態で説明したパターンフラグのビット数を変化させることなく、データの更なる圧縮が可能になる。
【００６４】
図１２は、新たなパターンフラグとして、前のブロックと同じパターンであることを示すフラグ（以下、リピートフラグと称する）を追加した場合のビット数を示す図である。この例では、パターンフラグとして前ブロックと一致（新たに画素値出力しない）を表す“Ｆ”を追加している。図１２に示すように、パターンフラグＦのブロックはパターンフラグの４ビットで表現することが可能となる。すなわち、パターンフラグがＦのブロックは、前のブロックの画素値（色データ）とパターンフラグとを参照して展開することが可能となるので、画素値（色データ）を格納しなくて済み、圧縮率が向上する。
【００６５】
ここで、第２の実施形態における圧縮処理を、図１３を用いて詳細に説明する。まず、ラスタ画像データを入力する（Ｓ１３０１）。そして、入力された画像データから２×２画素のブロックを切り出す（Ｓ１３０２）。次に、最初のブロックであれば過去に処理をしたブロックはないので（Ｓ１３０３でＹＥＳ）、前述した第１の実施形態と同様に圧縮処理を行う（Ｓ１３０７）。一方、Ｓ１３０３で最初のブロックでないと判定された場合（Ｓ１３０３でＮＯ）、１つ前に処理し、記憶していたブロックとの差分を算出する（Ｓ１３０４）。この処理は、例えば同じ座標位置での画素値の差における絶対値の和を求めることで可能である。ここで、差分が閾値より小さい場合は、１つ前に記憶した前のブロックと同じデータを使用可能であると判定する（Ｓ１３０５でＹＥＳ）。そして、前ブロックと同じであることを示すパターンフラグＦに特定する（Ｓ１３０６）。この場合、画素値（色データ）の出力は省略する。すなわち、処理対象のブロックとその前に処理対象となったブロックとの差異が小さいと判定した場合は、当該処理対象ブロックに対しては、前のブロックの繰り返しを示すパターンフラグＦ（リピートフラグ）を出力する。
【００６６】
また、Ｓ１３０５で差分が閾値より小さくない場合（Ｓ１３０５でＮＯ）、前ブロックとの差が大きいため前ブロックのデータの再利用はできないと判定し、前述した実施形態と同様の圧縮処理を行う（Ｓ１３０７）。その後、そのデータの展開を行い（Ｓ１３０８）。そして、その展開された２×２画素のブロックを前のブロックのデータとして記憶更新しておく（Ｓ１３０９）。なお、本実施形態では、Ｓ１３０７で圧縮処理を行った後に、Ｓ１３０８〜Ｓ１３０９で前ブロックのデータを更新するようにしているが、これに限るものではない。例えば、Ｓ１３０７で圧縮処理を行う前に、当該処理対象のブロックの画素値を用いて前ブロックのデータを更新するようにしても構わない。
【００６７】
次に、記憶ブロックとの差分が閾値より小さくないブロックに対してはＳ１３０７で圧縮処理を行った結果のパターンフラグと色データとを出力し、また小さいブロックに対しては、パターンフラグＦのみ出力する（Ｓ１３１０）。この処理を最後のブロックまで繰り返すことで（Ｓ１３１１でＹＥＳ）、画像全体の圧縮処理を終了する。
【００６８】
［データに対する追加の処理］
上記フローを適用することで、パターンフラグのビット数が４ビットと増えていないため、前述した第１の実施形態に比べて確実に圧縮率を向上させることが可能である。しかし、第１色の画像サイズも、第２、３、４色データと同様に不定（画像によって異なる）になってしまう。従って、図１４に示すように、第１色データと連続したメモリ空間に第２、３、４色のデータを格納することができず、第１色と、第２、３、４色のデータを離散的に持たせる必要がある。前述した図２に示す色処理部２１２では、メモリ１０６上の第１色書き込み先頭アドレス以降の画素データをＤＭＡＣ２１１経由で読み込み、画素単位で処理を済ませた後にメモリ１０６上へ書き戻せた。しかしながら、第２の実施形態では、第１色と、第２、３、４色が連続していないので、第１色のアドレスに加えて第２、３、４色の書き込み先頭アドレスも含めて色処理部２１２のＤＭＡＣ２１１に指定する必要がある。
【００６９】
このように前のブロックとの一致も含めたパターンフラグを付与し、圧縮処理を行うことで圧縮率の向上こそ望めるが、オリジナルの１／２サイズの画像を取得するためには一部の展開処理が必要になる。つまり第１色データを読み取るのと併せてパターンフラグデータも読み取る。そして、その中で前のブロックの繰り返しを示すパターンフラグＦが読み取られた場合には、そのときの第１色を繰り返すことでオリジナルの１／２サイズの画像を取得することができる。処理としては第１色データに加えてパターンフラグ中のＦを読み取るだけで、第２、３、４色データは不要である。このようにして一度展開した１／２サイズの画像に対して再度圧縮をかけることが可能になる。
【００７０】
しかしながら、多段で圧縮する場合には、その最終段以外の圧縮に対しては上述した展開処理が不必要に発生してしまう。そこで、多段の圧縮を行うことがはじめからわかっている場合には最終段以外の圧縮の際には前述したような前ブロックとの一致による圧縮は行わず、最終段の圧縮でこれまで述べたような前ブロックとの隣接も含めた圧縮を行う。こうすることで、１／２サイズの画像取得の手間を軽減することができる。
【００７１】
ここでは、着目ブロックに対し、１つ左に位置するブロックを前ブロックと定義し、そのブロックとの一致、不一致を状態として保持しているが、これに限るものではない。例えば、着目ブロックに対し、上に位置するブロックとの一致やパターンフラグのビット数を拡張することで、より広いエリアとの一致を規定できる。
【００７２】
［展開処理］
次に、圧縮処理と対になる展開処理を説明する。展開処理は、前述したようなパターンフラグ、画素データからラスタ画像データに戻す処理である。メモリ１０６上に図１１に示すように配置されている圧縮データのパターンフラグ書き込み先頭アドレス、第１色書き込み先頭アドレス、第２、３、４色書き込み先頭アドレスの３つのアドレスをＤＭＡＣ２２１、２３１へ指定する。パターンフラグを参照して、前ブロックと同じと識別された際は、その注目ブロックの出力は前ブロックの出力そのものを用い、それ以外のフラグの場合は前述した方法で展開が可能である。尚、この際に１ブロック分は次ブロックで利用する可能性があるのでバッファする必要がある。
【００７３】
しかしながら、展開処理で画像サイズを１／２にする場合には、前述したようにメモリ１０６から第１色データのみ読み込みを行い、画像を構成するだけでは隣接ブロックとの一致データを展開することができない。そのため、第２の実施形態の展開処理では、パターンフラグを参照しながら、第１色のデータに基づいて１／２サイズの画像を復元する。ここで、第２、３、４色のデータは使用せずに済む。具体的には、パターンフラグを参照した際、前ブロックと同じと識別された場合は、第１色データ中の前の色データを繰り返し出力することで展開が可能になる。これにより、メモリバスの帯域を節約することが可能になる。
【００７４】
第２の実施形態によれば、隣接ブロック間の類似性に着目することでブロック間の冗長性を少なくでき、圧縮率を高めることが可能となり、前述した実施形態で説明した１画素入力、１画素出力で完結する色処理の実施と同様な効果が得られる。
【００７５】
［第３の実施形態］
次に、図面を参照しながら本発明に係る第３の実施形態を詳細に説明する。第３の実施形態では、前述した実施形態におけるラスタ画像データの圧縮処理を、ランダムアクセス性を高めたものである。なお、第３の実施形態でも、画像処理装置として、第１の実施形態と同様に、ＭＦＰを例に説明する。
【００７６】
前述したように、圧縮処理は画像データに依存し、その圧縮データサイズが変わる可変長圧縮処理である。そのため、圧縮データに対してのランダムアクセス性はなく、画像の一部だけ切り出して処理するなどといった目的には向かない。
【００７７】
そこで、これまでの実施形態で説明した方法に対して、よりランダムアクセス性を高めることに着目した圧縮方法を、図１５を用いて詳細に説明する。まず、図１６に示すページ単位にラスタ画像データを入力する（Ｓ１５０１）。そして、画像データのページ単位に１画素のページ背景画素を設定する（Ｓ１５０２）。これは圧縮処理時の初期記憶ブロックとして用いるための画素データで、通常、白（ＲＧＢ各色８ビット画像であれば２５５、ＣＭＹＫ画像であれば０）が用いられる。次に、圧縮部２０２の入力となる画像データを所定の大きさに分割する（Ｓ１５０３）。第３の実施形態では、３２×３２画素とする。以下の説明では、これまでの２×２画素のブロックと区別するために、この分割された画素のことを「タイル」と呼ぶ。１つのタイル中には、２×２画素ブロックが１６×１６個存在することになる。図１６は、ページと３２×３２画素のタイルと２×２画素のブロックとの関係を示す図である。
【００７８】
次に、タイルに所定の固定長のヘッダ情報を付与する（Ｓ１５０４）。このヘッダ情報は、ページＩＤ、タイル座標、色空間、画素データのビット数、タイルのデータサイズ、属性情報の有無、圧縮フラグ等の情報である。ここで、ページＩＤは、ページ単位に付与されるユニークなＩＤ番号である。タイル座標は、このタイルがページ単位のラスタ画像上どの位置にあるかを示す座標情報である。ここには、Ｘ座標とＹ座標の２次元で座標が記述される。座標情報は、図１６にて示したＸ座標、Ｙ座標に対応している。色空間は、このタイルが、ＲＧＢ画像なのかＣＭＹＫ画像なのかＧＲＡＹ−ＳＣＡＬＥ画像なのかを識別するための識別子を示す情報である。画素データのビット数は、タイル内の１画素当たりのビット長を示す情報である。データサイズは、このタイルの第１色のデータサイズと第２、３、４色のデータのデータサイズとを示すバイト単位の情報である。属性情報の有無は、画像データに文字や写真といった属性情報が画素単位で付与されているか否かを示す情報である。圧縮フラグは、このタイルが圧縮されたデータか、非圧縮のデータかまたそのとき何段回の圧縮が施されているかを示すフラグの情報である。尚、この圧縮フラグに関しては、更に詳述する。
【００７９】
次に、上述のタイル単位に圧縮処理を適用する（Ｓ１５０５）。この圧縮処理は、前述した実施形態で説明した圧縮処理と同様であり、その説明は割愛する。尚、最初の２×２画素ブロックを圧縮する際には記憶ブロックとして初期記憶ブロックを定義し、背景画素で埋められたブロックを用いる。これにより、タイル単位に最初の２×２画素ブロックの画素データを出力しないで済む可能性があり、その分のデータ量を削減できる。その可能性がもっとも高いのは、通常の原稿画像であれば白であり、上記で述べたように背景画素を白に設定したのはデータ量削減の可能性を踏まえたためである。
【００８０】
次に、圧縮処理されたタイルデータのデータサイズを算出する。これはパターンフラグサイズ、第１色データサイズ、第２、３、４色データサイズの合計になる。パターンフラグを必ず付与するので、必ずしもオリジナルの画像データよりデータサイズが圧縮される保証はない。そのため、もし圧縮後のタイルデータのデータサイズがオリジナルのタイルデータのデータサイズを超えてしまった場合には、オリジナルの画像データを出力する方がトータルとしてメモリ効率が良い。従って、圧縮後のデータサイズとオリジナルのデータサイズとを比較する（Ｓ１５０６）。そして、圧縮後のデータサイズがオリジナルのデータサイズを超えていれば（Ｓ１５０６ＹＥＳ）、ヘッダの圧縮フラグの値は変更しない。これに対し、圧縮後のデータサイズがオリジナルのデータサイズを超えていなければ（Ｓ１５０６ＮＯ）、フラグの値に１を加える（Ｓ１５０８）。
【００８１】
そして、上述の比較の結果を受けて、Ｓ１５０８の処理の後には、圧縮されたタイルデータを当該タイルのヘッダ情報と一緒に１つのデータにパッキングする（Ｓ１５０９）。これに対し、比較の結果、圧縮後のデータサイズがオリジナルのデータサイズを超えていれば（Ｓ１５０６ＹＥＳ）、オリジナルのタイルデータを、当該タイルのヘッダ情報と一緒に１つのデータにパッキングする（Ｓ１５０７）。このパッキングされたデータのデータ構造を図１７に示す。これ以降、上述のヘッダを含むデータの単位を「パケット」と呼ぶ。このようなパケットにするために、タイル単位で圧縮処理が終了し、データサイズが確定した後、第１色格納部と第２、３、４色格納部の間を詰めた状態でデータをパッキングする。そして、Ｓ１５０７もしくはＳ１５０９の処理の後、ＤＭＡＣを経由してメモリ上へ出力する（Ｓ１５１０）。次に、このパケットの座標とサイズとをリストとして列挙し、パケット管理テーブルとして作成する（Ｓ１５１１）。このパケット管理テーブルの一例を図１８に示す。上述の処理を最後のタイルまで繰り返すことで（Ｓ１５１２）、ページ単位のラスタ画像の圧縮処理を終了する。
【００８２】
尚、上述のタイル単位でデータをメモリへ書き出すと、図１９に示すように、パケット毎にサイズが異なり、それぞれのパケットの先頭アドレスがパケットのサイズに応じた位置になる。そのため、図１８に示すパケット管理テーブルを用いて、タイルにおける任意の座標のパケットに対応する先頭アドレスを探索する。従って、先頭パケットの書き込みアドレスが既知であれば、パケット管理テーブルに記載されている座標までのデータサイズをオフセットとして任意のパケットに対応する先頭アドレスを求めることが可能になる。例えば、図１９に示す第３パケットを読み込む場合は、第１、第２パケットのサイズ合計をパケット管理テーブルより求め、先頭パケットのアドレスに対してオフセットを掛けることで第３パケットアドレスを算出する。そして、そこからデータを読み込むことで第３パケットのデータを取得することが可能になる。
【００８３】
このように、タイル単位に任意のデータへのアクセスが可能になるので、画像の部分的な処理が可能になる。例えば、画像の一部の領域を抽出して処理したい場合は、当該領域に対応するパケットのデータを取得して処理すればよい。
【００８４】
また、タイル単位で多段の圧縮を施すことも可能である。そのときのパケット単位のフローを、図２０を用いて説明する。まず３２ｘ３２画素のタイルデータを入力する（Ｓ２００１）。次に、前述したとおり背景色を設定する（Ｓ２００２）。そして、パケットから１色目のデータを取り出す（Ｓ２００３）。このとき最初の１段目の圧縮においては、３２ｘ３２画素すべてが対象となる。この１色目の画像に対し、前述のように圧縮処理（Ｓ２００４）を行う。その後、その圧縮サイズをオリジナルデータのサイズと比較する。この結果オリジナルを超えたと判定された場合（Ｓ２００５でＹＥＳ）には、パケットヘッダ中の圧縮フラグに対しては変更せず、生データここでは１色目のデータそのものをパケットにパッキングする（Ｓ２００６）。そして、当該パケットを出力する（Ｓ２０１０）。
【００８５】
圧縮の結果、オリジナルデータに対して圧縮したデータサイズが超えていないと判定された場合（Ｓ２００５でＮＯ）は、パケットヘッダ中の圧縮フラグに対して１を加える（Ｓ２００７）。つまりこの圧縮フラグで示される数字の分だけ圧縮の段数が進んだことを意味する。Ｓ２００７の後、その圧縮データ、つまり第１色とそのパターンフラグ、そして第２、３、４色データをパケットにパッキングする（Ｓ２００８）。このときその圧縮の際に発生した第１色のデータ量および第２、３、４のデータ量を段数毎ヘッダに記載する。そして、その第１色のデータ量が２ｘ２画素以上あった場合（Ｓ２００９でＹＥＳ）には、Ｓ２００３へ戻り、再度この第１色データに対して圧縮処理を施す。第１色のデータ量が２ｘ２画素を下回った場合（Ｓ２０１０でＮＯ）、すなわち１画素しかデータが残っていない場合にはもう圧縮するだけのデータが残っていないので、パケットを出力する（Ｓ２０１０）。そして、パケット管理テーブルにパケットの座標とサイズを記録し（Ｓ２０１１）、パケット単位の処理を終了する。
【００８６】
３２ｘ３２画素のタイルを入力とする場合に、この圧縮のループは最大で５回（３２ｘ３２、１６ｘ１６、８ｘ８、４ｘ４、２ｘ２）繰り返されることになる。このときのパケットのデータ構造としては図２１のようになり、第１色格納部に対してデータが入れ子になる。
【００８７】
また、展開処理は、パケット毎にヘッダが付与されているので、各ヘッダに記載されている情報を用いて処理を行う。まず、圧縮フラグが非圧縮を示している場合にはヘッダを取り除いたデータを出力し、そうでない場合には展開処理を行う。展開処理では、ヘッダよりパターンフラグ格納位置、第１色のデータ格納位置、及び第２、３、４色格納位置を求め、後は順次前述した実施形態と同様に、タイルの画像データへ展開する。
【００８８】
例えば、パターンフラグの位置は固定長のヘッダなので、オフセットすることで求めることができる。第１色のデータは、タイルのサイズが３２×３２画素であれば、パターンフラグのサイズが３２×３２ビットで固定になり、パターンフラグ位置からオフセットを掛けることで求める。最後に、第２、３、４色のデータは第１色のデータが不定長なので、ヘッダに記載されている第１色サイズを参照し、第１色のデータ位置からオフセットを掛けることで求める。
【００８９】
第１色のデータがさらに圧縮されている場合には、その段数毎ヘッダに記載されている次のデータサイズを参照し、そのサイズ分オフセットしながらデータを読み出す。そして、展開処理を、段を追って行う。
【００９０】
第３の実施形態によれば、画像データに依存して、その圧縮データサイズが変わる可変長圧縮処理でも、圧縮データに対してのランダムアクセス性を高め、タイル単位で画像の一部だけ切り出して処理することが可能になる。
【００９１】
［他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005393574.tif 000002
【図２】
0005393574.tif 000003
【図３】
0005393574.tif 000004
【図４】
0005393574.tif 000005
【図５】
0005393574.tif 000006
【図６】
0005393574.tif 000007
【図７】
0005393574.tif 000008
【図８】
0005393574.tif 000009
【図９】
0005393574.tif 000010
【図１０】
0005393574.tif 000011
【図１１】
0005393574.tif 000012
【図１３】
0005393574.tif 000013
【図１４】
0005393574.tif 000014
【図１５】
0005393574.tif 000015
【図１６】
0005393574.tif 000016
【図１７】
0005393574.tif 000017
【図１８】
0005393574.tif 000018
【図１９】
0005393574.tif 000019
【図２０】
0005393574.tif 000020
【図２１】
0005393574.tif 000021
【図１２】
0005393574.tif 000022