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