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