以下、図面を参照しながら発明を実施するための形態について詳細に説明する。本実施形態では、画像処理装置として、スキャン、プリント、コピーなどの複数の機能を有するデジタル複合機(MFP)を例に説明する。
[デジタル複合機(MFP)の構成]
図1に示すように、コントローラ101は、画像入力機器であるスキャナ102や画像出力機器であるプリンタ103と接続される。また、コントローラ101はLANや公衆回線(WAN)などのネットワーク104と接続することで、画像情報やデバイス情報の入出力、PDLデータのイメージ展開を行う。
CPU105は、後述するHDD記憶部107に格納されたプログラムに従ってMFP全体を制御するプロセッサである。メモリ106は、CPU105が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。HDD記憶部107は、ハードディスクドライブであり、システムソフトウェアやプログラム、画像データなどを格納する。
次に、図2に示すコントローラ101の構成例を参照してコントローラ101の各部の詳細な処理を説明する。まず、スキャナ102によってスキャンされた画像データを読み込む場合を説明する。スキャナ102で読み取られたRGB(レッド、グリーン、ブルー)3色の画像データをスキャナ用画像処理部201が受け取り、その画像データに対してシェーディング処理やフィルタ処理等の画像処理を行い、圧縮部202が画像圧縮処理を行う。そして、圧縮されたデータ(圧縮データ)をDMAC(ダイレクトメモリアクセスコントローラ)203が画像メモリバスを介してメモリ106に格納する。
次に、スキャンされた画像データをプリントする場合、メモリ106に格納された圧縮データをDMAC211が画像メモリバスを介して色処理部212へ転送する。そして、色処理部212がCMYK(シアン、マゼンタ、イエロー、ブラック)色空間へ変換する。その後、更に色処理部212がCMYKの各値に対して濃度調整やプリンタガンマ補正などの色処理を行った後、該色処理後のデータをDMAC211が画像メモリバスを介して再度メモリ106に格納する。その後、プリント用の画像処理を行うために、DMAC221が画像メモリバスを介してメモリ106に格納されている圧縮データを読み込み、展開部222がラスタ画像データに展開する。そして、ラスタのCMYK画像データをプリント用画像処理部223が入力し、ディザ法や誤差拡散法による面積階調処理を行い、プリンタ103へ出力する。
また、スキャンされた画像データをネットワークへ送信する場合、メモリ106に格納されている圧縮データをDMAC211が画像メモリバスを介して色処理部212へ転送する。そして、色処理部212がディスプレイガンマ調整や用紙地色調整等を行った後、YCbCr(輝度、BLUE色差、RED色差)色空間へ変換する。そして、当該色処理部212で処理されたデータを再度DMAC211が画像メモリバスを介してメモリ106に格納する。その後、送信用の画像処理を行うために、DMAC231が画像メモリバスを介してメモリ106に格納されている圧縮データを展開部232へ転送する。そして、展開部232が圧縮データをラスタ画像データに展開する。その後、ラスタのYCbCr画像データに対して送信処理部233がカラー画像送信であればJPEG圧縮処理を行い、モノクロ2値画像送信であればYデータに対して2値化を行い、JBIG圧縮等を行い、ネットワーク104へ出力する。
また、スキャンされた画像データを保存する場合、メモリ106に格納されている圧縮データをDMAC241が画像メモリバスを介してディスクスプール高圧縮/展開部242へ転送する。ディスクスプール高圧縮/展開部242では、HDDの書き込みスピードがメモリに対して遅いため、更に高圧縮のJPEG圧縮を施す。その後ディスクアクセスコントローラ243を介してHDD記憶部107へ圧縮データを保存する。また、HDD記憶部107に保存されている圧縮データを再度メモリ106に転送する場合には、上述した処理を逆に行えば良い。
ここで、図1に示すネットワーク104を介して接続された他の装置から送られてきたPDLデータをメモリ106へ書き込む場合を説明する。図2にはPDL解釈部が図示されていないが、PDL解釈部として機能するCPU105がPDLデータを解釈し、その結果のディスプレイリストをメモリ106に出力する。その後、メモリ106に格納されているディスプレイリストをレンダリング部251がラスタのRGB画像データへレンダリングを行い、圧縮部252が画像圧縮処理を行う。そして、圧縮データをDMAC253が画像メモリバスを介してメモリ106に格納する。
尚、PDLデータをプリント、ネットワークへ送信、保存する処理は、スキャンされた画像データの場合と同様の処理を行うことで実現可能である。
次に、本発明の特徴であるラスタ画像データの圧縮処理を詳細に説明する。尚、本実施形態において、圧縮部252ではPDLデータから生成されたラスタ画像を圧縮し、圧縮部202ではスキャンで得たラスタ画像を圧縮するものとするが、このような構成に限るものではない。例えば、図2のように圧縮部202、252を個別に設けるのではなく、共通の圧縮部を設けるように構成しても構わない。
本実施形態では、まずページ単位のラスタ画像データを、2×2画素単位のブロック毎に分割し、分割して抽出されたブロックを単位にデータの圧縮処理を行う。ここで、圧縮処理を説明する前に、2×2の4画素データの中に占める色数に応じて、その組み合わせの場合の数を考える。この場合、画素数が4画素なので、そこに占める色数は最大4色になり、ブロック内で高々1色〜4色の組み合わせしか存在しない。その4色のパターンの取り得る組み合わせの場合の数を図3に示す。
まず、ブロック内が1色の場合、4画素が同色で構成されていることになるので、その組み合わせは1通りである。次に、ブロック内が2色の場合を考える。図3に示すように、2色が4画素内にレイアウトされる場合の組み合わせの数は、所定位置の画素(本実施例では左上の画素とする)の色を第1色(代表色)とし、その第1色と異なる色を第2色として考える。すると、左上画素以外の残りの3画素へ第1色もしくは第2色が入るので、4画素同色の場合を除くと、全部で7通りの組み合わせが考えられる。
次に、ブロック内が3色の場合を考える。3色が4画素内にレイアウトされる場合の数は、3色のうち1色だけ2度使われる場合の数と言い換えることが可能であり、4画素の座標のうち、2画素が同じ色になる場合の数を求めれば良い。つまり、3色の場合の数は、4つの座から2つの座標を取る組み合わせとなり、全部で6通りとなる。そして最後に、ブロック内が4色で構成される場合は1通りしか存在しない。
1色〜4色の全ての場合の数を合計すると、全部で15通りのパターンが考えられる。また、これら全てのパターンを識別するためにフラグ(識別子)を付与することを考えると、フラグのデータ量としては4ビット必要となる。この15通りのパターンとフラグとの関係を図4に示すように定義し、以下、このフラグを「パターンフラグ」と呼ぶ。
前述したように、特願2009−221444で提案している技術では、画像データを2×2画素サイズのブロックに分割し、当該分割された各ブロックに含まれる色データの配置パターン情報をこの15通りのパターンフラグ(4bit)を用いて出力する。更に各ブロックに含まれる色数分の色データ情報を、ブロックにおける予め決められた位置の画素(例えば左上の画素)に対応する色の情報(第1の色データ情報)と、それ以外の色データ情報(第2〜4の色データ情報(補間データ情報))とに分けて出力する。そして、画像データ内の各ブロックから出力された配置パターン情報と、第1の色データ情報と、第2〜4の色データ情報とをそれぞれ異なるメモリ領域に纏めて格納する。
一方、MFPが実際に扱うことの多い文書画像などの場合、2×2画素ブロック単位では、殆どのブロックが2色以内で構成されることが多い。そこで、本実施形態では、タイル(64×64画素)内が3色以内で且つその中の2×2画素ブロック全てが2色以内で構成されているタイルに適した圧縮方法について説明する。尚、画像データを64×64画素サイズのタイルに分割し、当該分割されたタイルごとに、当該タイル内が3色以内で且つその中の2×2画素ブロック全てが2色以内で構成されているか判別する。その判別結果に応じてタイル毎に圧縮処理を切り替えるように構成するのが望ましい。すなわち、タイル内が3色以内で且つその中の2×2画素ブロック全てが2色以内で構成されている場合は後述する圧縮手法で圧縮し、そうでなければ、上述した特願2009−221444で提案している圧縮手法で圧縮するよう構成するのが望ましい。
次に、タイル内が3色以内で且つその中の2×2画素ブロックの全てが2色以内で構成されている場合に適した本実施形態の圧縮方式について説明する。2×2画素ブロックにおいて、色数が2色までのパターンで取り得る組み合わせは、図3に示す全画素同色の1通りと、2色の7通りの合計8通りである。これら8通りの配置パターンを表現するパターンフラグは、図4に示すように0〜7までの8種類のみであるため、3ビットのフラグ識別することが可能である。
ここで、2色までで構成される2×2画素ブロックが取り得る色の配置パターンの一部を図5の(A)に示す。図5の(A)において、各イメージに対するパターンフラグ、代表色(第1色)、補間色(第2色)の関係を示している。図5の(A)において、黒丸印の位置(左上の画素)の色が代表色(第1色)を示している。
本実施形態では、画像メモリバスへ転送する際に、予め定められた画素数(64×64画素)のブロックを単位(以下「タイル単位」と呼ぶ。)とし、タイル単位において構成される色数は3色までとする。この例の代表色と補間色との関係を図5の(B)に示す。すなわち、64×64のタイル内に存在する色数が3色以内、且つ、2×2のブロック内に存在する色数が2色以内であったとする。このとき、図5の(B)に示すように、代表色がタイル内の3色のうちのいずれかであるので、代表色以外で取り得る補間色は残りの2色のうちのいずれかである。したがって、2×2画素のブロック内における代表色を特定できれば、補間色が残り2色のいずれであるかを識別するための補間色選択ビット(1bit)を設けることで、当該2×2画素のブロック内における補間色を選択することが可能である。
3ビットのパターンフラグ(2色以内の配置パターンを特定するための第1のパターン情報)と、1ビットの補間色選択ビット(選択情報)と、各ブロックの代表色と、タイル内の3色とを使用して表現される色パターンの一部を図5の(C)に示す。このように、タイル内の色数が3色で且つ2×2画素ブロック内の色数が2色以内の場合、3ビットのパターンフラグと補間色選択ビットと各ブロックの代表色の色データと当該タイル内の3色の色データとを保持すれば、各ブロックの色の配置を特定できる。すなわち、ブロック毎に補間色(第2色)の色データを保持しておかなくても、補間色選択ビットを参照することにより、タイル内の3色の色データ中から補間色を特定することができるようになる。補間色選択ビットの詳細については図15を用いて後述する。
[パケット生成]
本実施形態における画像処理装置は、ラスタ画像データの圧縮処理のランダムアクセスを高めるために、ラスタ画像データを64×64画素サイズのタイル単位で切り出し、圧縮して画像メモリバスへ転送する。
圧縮部202、252で実行されるパケット生成方法の詳細を、図6を用いて説明する。まず、図7に示すページ単位にラスタ画像データを入力する(S601)。そして、画像データのページ単位に1画素のページ背景画素を設定する(S602)。これは、圧縮処理時の初期記憶ブロックとして用いるための画素データで、通常は白(RGB各色8ビット画像であれば255、CMYK画像であれば0)が用いられる。次に、圧縮部202、252の入力となる画像データを所定の大きさ(64×64画素)のタイル単位に分割し、未処理のタイルの1つを処理対象にする(S603)。この例では、1つのタイルの中には、2×2画素ブロックが32×32個存在することになる。図7は、1ページと64×64画素のタイルと2×2画素のブロックとの関係を示す図である。
次に、処理対象のタイルに所定の固定長のヘッダ情報を付与する(S604)。このヘッダ情報は、ページID、タイル座標、色空間、画素データのビット数、タイルのデータサイズ、属性情報の有無、圧縮フラグ等の情報である。ここで、ページIDは、ページ単位に付与されるユニークなID番号である。タイル座標は、このタイルがページ単位のラスタ画像上どの位置にあるかを示す座標情報である。図7に示すようにタイル座標は、X座標及びY座標を用いて記述される。色空間は、このタイルが、RGB画像なのかCMYK画像なのかGRAY−SCALE画像なのかを識別するための識別子を示す情報である。画素データのビット数は、タイル内の1画素当たりのビット長を示す情報である。データサイズは、このタイルの第1色のデータサイズと第2、3、4色のデータのデータサイズとを示すバイト単位の情報である。属性情報の有無は、画像データに文字や写真といった属性情報が画素単位で付与されているか否かを示す情報である。圧縮フラグは、このタイルが圧縮されたデータか、非圧縮のデータかを示すフラグの情報であり、後述するS607,S609で設定される。
次に、上述のタイル単位に圧縮処理を適用する(S605)。この圧縮処理の詳細は後述する。
次に、圧縮処理されたタイルデータのデータサイズを算出する。これはパターンフラグサイズ、第1色データサイズ、第2、3、4色データサイズの合計になる。パターンフラグを必ず付与するので、必ずしもオリジナルの画像データよりデータサイズが圧縮される保証はない。そのため、もし圧縮処理後のタイルデータのデータサイズがオリジナルのタイルデータのデータサイズを超えてしまった場合には、オリジナルの画像データを出力する方がトータルとしてメモリ効率が良い。従って、圧縮処理後のデータサイズとオリジナルのデータサイズとを比較し(S606)、オリジナルのデータサイズを超えていれば、ヘッダの圧縮フラグを“0”にセットし(S607)、超えていなければ圧縮フラグを“1”にセットする(S609)。
そして、上述の比較の結果を受けて圧縮されたタイルデータ若しくはオリジナルのタイルデータを、当該タイルのヘッダ情報と一緒に1つのデータにパッキングする(S608、S610)。このパッキングされたデータのデータ構造を図8に示す。これ以降、上述のヘッダを含むデータの単位を「パケット」と呼ぶ。このようなパケットにするには、タイル単位で圧縮処理が終了し、データサイズが確定した後、第1色格納部と第2、3、4色格納部の間を詰めた状態でデータをパッキングする。その後、DMACを経由してメモリ上へ出力する(S611)。次に、このパケットの座標とサイズとをリストとして列挙し、パケット管理テーブルとして作成する(S612)。このパケット管理テーブルの一例を図9に示す。上述の処理を最後のタイルまで繰り返すことで(S613でYES)、ページ単位のラスタ画像の圧縮処理を終了する。
尚、上述のタイル単位でパケットデータをメモリへ書き出すと、図10に示すように、パケット毎にサイズが異なり、それぞれのパケットの先頭アドレスが飛び飛びになる。そのため、図9に示すパケット管理テーブルを用いて任意の座標のパケットの先頭アドレスを探索する。従って、先頭パケットの書き込みアドレスが既知であれば、パケット管理テーブルに記載されている座標までのデータサイズをオフセットとして任意のパケットの先頭アドレスを求めることが可能になる。例えば、図10に示す第3パケットを読み込む場合は、第1、第2パケットのサイズ合計をパケット管理テーブルより求め、先頭パケットのアドレスに対してオフセットをかけることで第3パケットアドレスを算出する。そして、そこからデータを読み込むことで第3パケットのデータを取得することが可能になる。
このように、タイル単位に任意のデータへのアクセスが可能になるので、画像の部分的な処理が可能になる。例えば、画像の一部の領域を抽出して処理したい場合は、当該領域に対応するパケットのデータを取得して処理すれば良い。
上述した圧縮処理に対して、展開部222、232で実行される展開処理は、パケット毎にヘッダが付与されているので、各ヘッダに記載されている情報を用いて処理される。まず、圧縮フラグが非圧縮を示している場合には、ヘッダを取り除いたデータを出力し、圧縮を示している場合には、展開処理を行う。展開処理では、ヘッダよりパターンフラグ格納位置、第1色のデータ格納位置、及び第2、3、4色格納位置を求め、後は順次前述した実施形態と同様に、タイルの画像データへ展開する。
例えば、パターンフラグの位置は固定長のヘッダなので、オフセットすることで求めることができる。第1色のデータは、タイルのサイズが64×64画素であれば、パターンフラグのサイズが64×64ビットで固定になり、パターンフラグ位置からオフセットを掛けることで求める。第2、3、4色のデータは、ヘッダに記載されている第1色サイズを参照し、第1色のデータ位置からオフセットを掛けることで求める。
[圧縮処理]
次に、上述したステップS605の圧縮処理の詳細について、図11〜図13を用いて説明する。図12は、ステップS605の圧縮処理を実行する圧縮部202(又は252)内の構成を示すブロック図である。
圧縮部202、252は、まず入力された64×64画素サイズのタイル画像をタイルバッファ1201に格納する。ピース抽出部1202がタイルバッファ1201に格納されたタイル画像から、2×2画素単位のブロック画像(以下、2×2画素のブロックをピースと呼ぶ)を切り出す。そして、インデックス生成部1203が、切り出された各ピース内の各画素の色データを比較することにより、図4を用いて説明したように、当該各ピースに含まれる色データの配置パターンを示すパターンフラグ(4ビット)を特定する。ここで、パターンフラグ(4ビット)を第2のパターン情報とも呼ぶ。
パターンフラグ(4ビット)は、図4に示す全部で15通りのパターンが存在し、それぞれのパターンと比較することにより特定される。そして、ピースの予め決められた位置(例えば左上)の画素に対応する色データを第1色の色データ情報として抽出する。更に、当該ピースに含まれる色数が2〜4のいずれかであると判断した場合は、当該特定されたパターンフラグで定義されている配置パターンに対応する第2色の色データ情報〜第4色の色データ情報を抽出する。
このようにして抽出された各ピースに含まれる色数分の色データ情報を、ブロックにおける予め決められた位置(例えば左上)の画素に対応する第1色の色データ情報と、それ以外の第2色〜第4色の色データ情報とに分けて出力する。第1色の色データ情報を代表色と呼び、また第2色の色データ情報〜第4色の色データ情報を補間色と呼ぶ。
尚、本実施形態において、各ピースにおける色データの配置を特定するための情報をインデックスと呼ぶこととし、インデックス生成部1203は、この時点では上述したように4ビットのパターンフラグをインデックスとして出力するものとする。
インデックス生成部1203で生成されたインデックス、代表色、及び補間色のデータは、パケット生成部1208と、構成色数判定手段1204とに読み込まれる。パケット生成部1208では、インデックス生成部1203で各ピースから出力されるインデックス、代表色、補間色の情報とを、パケットバッファ1209内のそれぞれ異なるメモリ領域に纏めて格納する。更に、ページID、タイル座標、タイル/パケットのデータサイズ、圧縮フラグ等の情報を含むヘッダ情報を付加することにより、パケットデータを生成する。一方、構成色数判定部1204では、インデックス、代表色、補間色の情報の情報に基づいて、処理対象のタイル画像内が3色以内で且つ当該タイル画像を構成するピース(2×2画素ブロック)全てが2色以内で構成されているか判定する。そして、構成色数判定部1204でそのように構成されていると判定した場合は、ヘッダ修正部1210と補間色置換部1211とインデックス書換部1212が、パケット生成部1208で生成したパケットデータを修正する。詳細は後述する。
次に、構成色数判定部1204において実行される構成色数判定処理について、図11を用いて説明する。構成色数判定処理では、前述の構成色数(タイル内3色以下、且つブロック全てが2色以内)のタイル画像であるか否かの判定及び当該タイル画像を構成する3色分以下の色データをバッファに格納する処理を行う。この判定において、該当しないタイルの場合は、構成色オーバー検出信号“1”を生成する。
まず、前述したように、構成色数判定部1204は、インデックス生成部1203で生成されたインデックス、代表色、及び補間色のデータを読み込む(S1101)。次に、構成色数判定部1204が2×2画素ブロック(ピース)の1つを着目ピースとし、読み込んだインデックスを参照して、当該着目したピースを構成する色の配置情報を解析し、色数を調べる(S1102)。インデックスは図4に示されるパターンフラグ(4ビット)値で表現されるので、パターンフラグ値が“0”の場合は、構成色数は1色であり、パターンフラグ値が“1〜7のいずれか”の場合は、構成色数は2色である。またパターンフラグ値が“8〜Dのいずれか”の場合は、構成色数は3色であり、パターンフラグ値が“E”の場合は、構成色数は4色であることを示している。
まず構成色数が1色であるか否かを判定する(S1103)。判定の結果、1色の場合(パターンフラグ値が“0”)、代表色の1色のみで2×2画素ブロックが表現され補間データは無いので、置換補間色バッファ1205〜1207への書き込みを行わずに、S1116へ進み、それ以外の場合はS1104へ進む。
次に、構成色数が2色であるか3〜4色であるかを判定する(S1104)。ここで、2色の場合(パターンフラグ値が“1”〜“7”の場合)はS1105へ進み、2×2画素ブロックを構成する色数が3又は4色である場合(パターンフラグ値が8〜Eの場合)は、S1117へ進む。2色と判定された場合には、2色の色データを格納するために、置換補間色バッファ1205〜1207に空きが2つ以上あるか否かを判定する(S1105)。置換補間色バッファ1205〜1207の空き情報は、図14に示されるような置換補間色バッファ1〜3空きフラグテーブルによって管理される。デフォルト時、各置換補間色バッファ1205〜1207は、全て空き状態である為、置換補間色バッファ1〜3空きフラグには、空き状態を示す“1”がセットされる。S1105において、置換補間色バッファ1〜3空きフラグが“1”である数を計数し、合計が2以上であれば、バッファ空き数が2以上あると判断して、S1106へ進み、それ以外の場合にはS1107へ進む。そして、2つ分の空きが存在する場合、代表色と補間色を置換補間色バッファ1205〜1207の空いているバッファにそれぞれ書き込む。そして書き込んだバッファに対応する空きフラグに“0”をセットする。(S1106)。
また、2つ以上の空きが存在しない場合には、1つ分の空きがあるか否かを判定する(S1107)。S1105における置換補間色バッファ1〜3空きフラグが“1”である数を計数した合計が1であれば、1つ分の空きがあると判断してS1108へ進み、それ以外の場合にはS1113へ進む。1つ分の空きが存在する場合には、バッファ済みの2つの補間色データを置換補間色バッファ1205〜1207より読み出す(S1108)。次に、読み出した2つの補間色データの画素値と、着目中ブロックの2色のデータ(代表色と補間色)の画素値とを比較する(S1109)。そして、2色とも読み出した補間色データと一致しているか否かを判定する(S1110)。一致している場合には、既に2色ともバッファに書き込み済みであるため、空きバッファへの書き込みは不要と判断してS1116へ進み、一致していない場合にはS1111へ進む。
また、2色とも一致していない場合には、どちらか1色のみ一致しているか否かを判定する(S1111)。1色のみ一致している場合には、一致していない方の色データを空いているバッファへ書き込む(S1112)。そして書き込んだバッファに対応する空きフラグに“0”をセットする。一方、1色も一致していない場合には、置換補間色バッファ1205〜1207に格納されている2色分のデータ以外の色が、着目している2×2画素ブロック内に2色存在していることを示している。つまりタイルの構成色数が4色以上であり、補間色置き換え処理の対象外のタイルであることを示している為、S1117へ進む。
S1107で、置換補間色バッファの空きが全くない場合には、バッファ済みの3つの補間色データを置換補間色バッファ1205〜1207より読み出す(S1113)。そして、読み出した3つの補間色データの画素値と、着目中ブロックの2色のデータ(代表色と補間色)の画素値とを比較する(S1114)。ブロックの2色ともが、読み出した補間色データのいずれかと一致しているか否かを判定する(S1115)。判定した結果、一致している場合には、既に2色ともバッファに書き込み済みであるため、バッファへの書き込みは不要と判断してS1116へ進む。一方、一致していない場合には、置換補間色バッファ1205〜1207に格納されている3色分のデータ以外の色が、着目している2×2画素ブロック内に存在していることを示している。つまり、タイルの構成色数が4色以上であり、補間色置き換え処理の対象外のタイルであることを示しているため、S1117へ進む。S1117では、着目する2×2画素ブロックの構成色数が3色もしくは4色(S1304で“NO”)、もしくは着目するタイルの構成色数が4色以上(S1111又はS1115で“NO”)と前ステップで判定される。つまり、補間色置き換え処理の対象外のタイルであるとの判断を行う。この場合、構成色数判定手段1204は、構成色数オーバーと判定してヘッダ修正部1210、補間色置換部1211、インデックス変換部1212に通知する(S1117)。
上述の処理をタイル内の最後のピースまで繰り返し行ったか判定し(S1116)、まだ着目していないピースがあれば、当該ピースを処理対象としてS1102の処理に戻る。一方、全ピースに対する判定が終了したと判定した場合は、補間色置換処理対象のタイルであると判定する。すなわち、タイル画像内が3色以内で且つその中のピース(2×2画素ブロック)全てが2色以内で構成されていれば、S1116でYESと判定されることになる。尚、ページ画像を構成する各タイルごとに図11の処理が行われる。
尚、タイル画像内のピース全てが2色以内で構成され、且つ2色のピース全てにおける色の種類がタイル内で3色以内である場合もS1116でYESと判定される。これは、1色で構成されているピースの代表色が2色で構成されているピースの色と異なっていてもよいことになる。そのような条件を満たす画像の場合も本発明を適用することは可能である。但し、その異なる色の画素の位置が1色のピースの位置に合致している必要があるため、そのような条件を満たす画像が出現することは稀である。したがって、S1116でYESと判定される大抵のタイル画像は、タイル画像内が3色以内で且つその中のピース全てが2色以内で構成されているものになる。
次に、タイル内が3色以内で且つその中の2×2画素ブロック全てが2色以内で構成されていると構成色数判定部1204で判定した場合に、当該タイル画像に対して実行する補間色データ置換処理、インデックス書換処理について、図13を用いて説明する。
すなわち、前述の構成色数判定処理で補間色置換処理対象のタイルと判定された場合、次の処理を実行する。補間色置換部1211が、パケットバッファに格納されている補間色データ(第2〜4色データ)を置換補間色バッファ1205〜1207に保持されている色データで置き換える処理を実行する。そしてインデックス書換部1212が、2×2画素ブロック単位での補間色選択ビットを生成してインデックスを書き換える処理(各ピースのパターンフラグ(4ビット)→パターンフラグ(3ビット)+補間色選択ビット(1ビット))とを行う。
まず構成色数判定部1204から構成色数をオーバーしているという通知を受けたかを判定する(S1301)。前述の構成色数判定処理のS1117において、構成色数オーバーと判定されている場合には、着目タイルの処理は終了して、次のタイルの処理に移行する。オーバーしていない場合にはインデックス生成部1203が、ピース単位での画像データのインデックス、代表色、補間色の読み込みを行う(S1302)。そして、読み込んだインデックス値より、当該読み込んだピースの構成色数が2色であるか否かの判定を行う(S1303)。S1303において、2色でないと判定された場合には、補間色データがないので、補間色データの置き換え処理の対象外のピースと判断し、S1312へ進む。この場合は、3色以上の場合はS1301でYESと判定されているので、ここでは1色(パターンフラグ値が“0”)と判定された場合である。また、インデックス(4ビットパターンフラグ)値が“0”なので、展開時は3ビットパターンフラグが“0”で且つ補間色選択ビットが“0”と見なして展開できるので、インデックス値を書き換える必要はない。
一方、S1303において構成色数が2色と判定された場合(パターンフラグ値が1〜7のいずれか)、補間色データの置換処理対象のピースと判断して、S1304に進み、補間色データを置き換えるために、補間色選択ビットを生成する処理に移る。
S1304では、置換補間色バッファ1205、1206、1207に格納されている色と、代表色及び補間色との画素値をそれぞれ比較する(S1304)。図15に置換補間色バッファ1205、1206、1207に格納されている色と、生成する補間色選択ビットの関係図を示す。参照している着目中ピースの代表色、補間色が、置換補間色バッファ1205、1206、1207(以降バッファ1、2、3)のうち、どのバッファに格納されている色と一致しているかによって、補間色選択ビットを切り換える。補間色選択ビットを1ビットのみで表現させる為に、補間色が代表色が格納されているバッファ以外の残り2つのバッファのうち、どちらのバッファに格納されているかにより、“0”、“1”を割り当てるよう動作する。図15に示す通り、代表色と異なる色が格納されている残り2つのバッファのうち、小さい番号のバッファに補間色データが格納されている場合には、補間色選択ビットとして“0”を生成する。大きい番号のバッファに補間色データが格納されている場合には、補間色選択ビットとして“1”を生成する。以降詳細について説明する。
まず置換補間色バッファ1205(バッファ1)に格納されている色が前記着目中ピースの代表色と一致するか否かを判定する(S1305)。一致する場合にはS1306へ進み、一致していない場合にはS1309へ進む。
S1306では、置換補間色バッファ1206(バッファ2)に格納されている色が前記着目中ピースの補間色と一致するか否かを判定する。一致する場合にはS1307へ進み、一致していない場合には、補間色が置換補間色バッファ1207(バッファ3)に格納されていると判断してS1308へ進む。
S1309では、置換補間色バッファ1206(バッファ2)に格納されている色が前記着目中ピースの代表色と一致するか否かを判定する(S1309)。一致する場合にはS1310へ進み、一致していない場合には代表色が置換補間色バッファ1207(バッファ3)に格納されていると判断してS1311へ進む。
S1310では、置換補間色バッファ1205(バッファ1)に格納されている色が前記着目中ピースの補間色と一致するか否かを判定する。一致する場合にはS1307へ進み、一致していない場合には補間色は置換補間色バッファ1207(バッファ3)に格納されていると判断してS1308へ進む。
S1311では、置換補間色バッファ1205(バッファ1)に格納されている色が前記着目中ピースの補間色と一致するか否かを判定する。一致する場合にはS1307へ進み、一致していない場合には補間色は置換補間色バッファ1206(バッファ2)に格納されていると判断してS1308へ進む。
S1307では、前記着目中ピースの補間色が、代表色が格納されているバッファ以外の残り2つのバッファのうち、小さい番号のバッファに格納されているので、補間色選択ビットとして“0”を生成する。一方、S1308では前記着目中ピースの補間色が、代表色が格納されているバッファ以外の残り2つのバッファのうち、大きい番号のバッファに格納されているので、補間色選択ビットとして“1”を生成する。
S1312では、タイル内の最後のピースまで補間色選択ビットの生成が終了したか否かを判定する。まだ最後のピースではない場合には、S1302に戻り、次のピースを処理対象の着目ピースとして、前述した処理を繰り返す。一方、最後のピースである場合には、S1313へ進む。
S1313では、パケット生成部1208によってパケットバッファ1209に格納されたパケットデータの修正を行う(パケットデータ修正処理)。パケットデータ修正処理では、補間色置換部1211が補間色データを置き換え、インデックス書換部1212がインデックスを書き換え、ヘッダ修正部1210がヘッダ情報を修正する。
尚、パケット生成部1208は、パケットデータをパケットバッファ1209に格納したときに、ヘッダ修正部1210と補間色置換部1211とインデックス書換部1212へ、当該生成したパケットデータの格納アドレスを通知するものとする。ヘッダ修正部1210と補間色置換部1211とインデックス書換部1212は、この通知された格納アドレスに基づいて、当該格納されているパケットデータの修正を行う。
補間色置換部1211は、当該タイル画像に関するパケットデータの第2、3、4色格納部に格納されている補間色を、置換補間色バッファ1205、1206、1207(バッファ1、2、3)に格納されている3色分のデータで置換する。
インデックス書換部1212は、各ピースに対してインデックス生成部1203で生成された4ビットのパターンフラグ値(0〜7)を、3ビットのパターンフラグ値(0〜7)に書き換える。この書き換えと共に、S1307とS1308で設定された補間色選択ビット(1ビット)を設定する。すなわち、各ピースに対する4ビットのパターンフラグ値を、1ビットの補間色選択ビットと3ビットのパターンフラグ値とで書き換える。
ヘッダ修正部1210は、ヘッダ情報に保持されている第2、3、4色格納部のデータサイズ情報を9バイトに修正し、補間色データ置換フラグに、置き換えが行われたことを示す“1”をセットする。
図16は、本発明によるパケットデータ修正前の第1のパケットデータ(図16(a))と修正後の第2のパケットデータ(図16(b))それぞれのデータ構造とヘッダ情報の例である。図16は、色空間がRGBで、画素データのビット数が8ビットの場合の一例を示している。図16(a)に示すように、パケットデータ修正前の第2、3、4色格納部に必要な領域は、64×64画素タイル内の全ピース(1024ピース)が、各ピース内の4画素全て異なる色(4色)で構成されていると想定すれば、最大9216バイト必要になる。また、全てのピースについて、各ピース内の4画素が全て同じ色であれば、各ピースに第2色〜第4色は存在しないことになるので、第2、3、4色格納部は最小0バイトである。すなわち、パケットデータ修正前の第2、3、4色格納部は0〜9216バイトのサイズとなっている。
一方、図16(b)に示すように、補間色データの置き換え対象のタイル画像(タイル画像が3色以下で且つ各ピースは2色以下)に対してパケットデータ修正処理を行った後では、次にようになる。第2,3,4色格納部には3色分の補間色データを格納するので、9バイト分のデータが格納されることになる。そして、ヘッダ情報の修正としては、第2、3、4色格納部のデータサイズ情報を9バイトに変換する修正と、補間色データ置換フラグに置き換えが行われたことを示す設定とが行われる。
図17に、S1313で補間色置換処理を行った後の、パケットデータの第2、3、4色格納部における3色の補間色の割り当ての関係を示す。図17に示すように、補間色置換部1211は、置換補間色バッファ1205〜1207に格納されている補間色データを順に読み出し、パケットデータの第2、3、4色格納部ベースアドレスのアドレス位置から始まる第2、3、4色格納部に格納する。
インデックス書換処理では、図5の(A)に示すような4ビットのパターンフラグを、図5の(C)に示すような3ビットのパターンフラグと1ビットの補間色選択ビットとで表されるインデックスで書き換える。前述のS1307及びS1308で生成された補間色選択ビットは、4ビットのパターンフラグの下位3ビットの情報と一緒に不図示の内部バッファの各ピース座標に対応するアドレスに格納される。ここで、上位1ビットの情報は、構成色が2色以下の場合には使用しない。つまり、インデックス書換部1212は、内部バッファより各ピースに対応する書き換え後のインデックス値(パターンフラグ(3ビット)+補間色選択ビット(1ビット))を読み出し、パケットバッファ1209のパターンフラグ格納部に書き込む処理を行う。
上述のパケットデータの修正が終了すると、パケットバッファ1209に格納されているパケットデータは、画像メモリバスを介してメモリ106に格納される。以降、残りのタイル画像についても同様にパケットデータの生成、及び補間データの置き換え処理を行い、全タイルに対して上述した処理を繰り返す。
[展開処理]
最後に、パケットデータをタイル画像に展開する手法について、図18、19を用いて説明する。図18は、展開部222、232の内部構成を示すブロック図である。
展開対象のパケットデータをパケットバッファ1901に格納し、ヘッダ解析部1902は当該格納したパケットデータのヘッダ情報の補間色データ置換フラグを解析して、補間色の置き換えが行われたパケットデータであるか判定する。補間色の置き換えが行われたパケットデータの場合、置換済みパケットデータ展開部1903は、各ピースに関して、インデックスと代表色と3色の補間色データとに基づいて第2色を特定し、各ピースの配色を再現する。ここで、インデックスは3ビットのパターンフラグと補間色選択ビットである。
また、補間色の置き換えが行われていないパケットデータの場合、非置換パケットデータ展開部1904は、各ピースに関して、インデックスと代表色(第1色の色データ情報)と補間色(第2〜4色の色データ情報)とを読み出し、各ピースの配色を再現する。インデックスは4ビットのパターンフラグである。再現された各ピースは、ピース書き込み部1905によってタイルバッファ1906に順次書き込まれる。当該パケットデータに含まれる全てのピースが再現されると、タイルバッファに格納された画像データはタイル画像として出力される。尚、ページ画像を再現する場合は、全てのパケットデータに対して順番にタイル画像の展開処理が行われるようにすればよい。
図19は、パケットデータの展開処理の詳細を示すフローチャートである。
S2001において、展開部222(又は232)は、メモリ106に格納されているパケットデータの中から、展開対象のパケットデータをパケットバッファ1901に読み込む。
ヘッダ解析部1902は、当該読み込んだパケットデータのヘッダ情報を解析し(S2002)、補間色データ置換フラグが1であるか否か判定する(S2003)。
補間色データ置換フラグが1(すなわち置換済みパケットデータである)と判定した場合は、S2004に進み、置換済みパケットデータ展開部1903は、最初のピースに関してインデックスデータを読み出す。更に、置換済みパケットデータ展開部1903は、パケットデータの第1色格納部から当該ピースの代表色を読み出し(S2005)、第2,3,4色格納部から3色の補間色データを読み出す(S2006)。そして、当該読み出した3色の補間色データと当該ピースの代表色とを比較し、代表色に一致する補間色データと、代表色に一致しない2色の補間色データを特定する(S2007)。次に、読み出したインデックスデータに含まれる当該ピースの補間色選択ビットが0か1か判定する(S2008)。当該ピースの補間色選択ビットが0であると判定した場合は、当該ピースの代表色に一致しない2色の補間色データのうち、ベースアドレスに近い方の補間色データを、当該ピースにおける第2色の色データとして特定する(S2009)。
一方、当該ピースの補間色選択ビットが1であると判定した場合は、当該ピースの代表色に一致しない2色の補間色データのうち、ベースアドレスから遠い方の補間色データを、当該ピースにおける第2色の色データとして特定する(S2010)。この結果、置換済みパケットデータ展開部1903は、当該処理対象のピースに関してインデックスデータに含まれる3ビットのパターンフラグ、代表色(第1色の色データ情報)、補間色(第2色の色データ情報)を特定でき、当該ピースの配色を再現する。ピース書き込み部1905は、当該ピースの再現された配色をタイルバッファ1906に書き込む(S2011)。当該パケットデータに含まれる全てのピースについて処理したか判定し(S2012)、未処理のピースがあると判定した場合は、次のピースを処理対象としてS2004に戻る。一方、全てのピースについて処理したと判定した場合は、S2013に進み、タイルバッファ1906に書き込まれたタイル画像を出力する。
尚、補間色置換済みパケットデータは、図16(b)や図17で示したように、第2,3,4色格納部には、置換補間色バッファ1205〜1207(図15のバッファ1〜3に相当)に格納されていた色データが順番に格納されている。したがって、図15を参照すれば分かるように、S2009では、第2,3,4色格納部のベースアドレスに近い方の補間色データが第2色として選択され、S2010ではベースアドレスから遠い方の補間色データが第2色として選択されることになる。
一方、S2003において、補間色データ置換フラグが0(すなわち非置換パケットデータである)と判定した場合は、S2014に進み、非置換パケットデータ展開部1903は、最初の処理対象ピースに関するインデックスデータを読み出す。更に、非置換パケットデータ展開部1904は、パケットデータの第1色格納部から当該処理対象ピースの代表色を読み出す(S2015)。更に、当該処理対象のピースのインデックス(4ビットのパターンフラグ)が示す色数が2〜4色の場合、非置換パケットデータ展開部1904は第2,3,4色格納部から当該ピースに関する補間色データ(第2〜4色の色データ)を読み出す(S2016)。その結果、非置換パケットデータ展開部1904は、当該処理対象のピースに関して、インデックスデータに含まれる4ビットのパターンフラグ、代表色(第1色の色データ情報)、補間色(第2〜4色の色データ情報)を特定でき、当該ピースの配色を再現する。ピース書き込み部1905は、当該ピースの再現された配色をタイルバッファ1906に書き込む(S2017)。当該パケットデータに含まれる全てのピースについて処理したか判定し(S2018)、未処理のピースがあると判定した場合は、次のピースを処理対象としてS2014に戻る。一方、全てのピースについて処理したと判定した場合は、S2013に進み、タイルバッファ1906に書き込まれたタイル画像を出力する。
尚、上述した展開処理は元の解像度の画像を得るための処理であるが、半分の解像度の画像データ得たい場合は、第1色格納部に格納されている色データを抽出するだけでよい。これは、第1色格納部に各ピースの代表色がラスタ順に格納されているためである。
本実施形態によれば、オフィスで使用される文書画像はタイル単位で見ても、2色から3色で構成されることが殆どであることに着目し、各タイルの補間データを圧縮することで、圧縮率を向上させることができる。
また、圧縮率を向上することにより、データ量の増大を抑制してシステム効率の低下を低減を図ると共に、メモリなどの容量の増大によるコストアップや高解像度化による画像処理システムの処理速度の低下を抑えることができる。
[他の実施形態]
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。