以下に、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。
本実施の形態においては、本発明にかかる画像処理装置がパーソナルコンピュータ(以下、PC)において実現されるものとして説明する。
図1は、画像処理装置として機能する、本実施の形態にかかるPC1およびその周辺機器の構成概念の具体例を示す図である。図1を参照して、PC1は、操作入力手段であるマウス11およびキーボード12と、画像出力手段であるモニタ13と、画像形成装置であるプリンタ15と、画像読込手段であるスキャナ16と、記憶手段の1つである外部記憶装置14とに接続されている。PC1は、その内部に入出力インタフェース(I/F)100を含んで、接続されたこれら周辺機器と情報の受け渡しを行なう。さらにPC1はその内部に演算手段であるCPU(Central Processing Unit)101と、記憶手段の1つである記憶装置102とを含む。記憶装置102には画像処理ソフトが記憶されており、CPU101が画像処理ソフトを読出して実行することによって、PC1が本発明にかかる画像処理装置として機能する。
本発明にかかる画像処理装置を実現する装置はPCに限定されず、その他の装置であってもよい。その他の装置として代表的な装置は、たとえばMFP(Multi Function Peripheral)などである画像形成装置が挙げられる。図2は、他の例として本発明にかかる画像処理装置がMFPで実現されるとした場合の、画像処理装置として機能するMFP2の構成概念の具体例を示す図である。図2を参照して、MFP2は、操作入力手段である操作パネル部21と、画像読込手段であるスキャナ部22と、画像出力手段であるプリンタ部23とを含んで構成される。さらにMFP2はその内部に画像処理部201を含む。画像処理部201が処理を実行することによって、MFP2が本発明にかかる画像処理装置として機能する。
図3は、本実施の形態にかかるPC1のハードウェア構成およびその機能の具体例を示すブロック図である。図3を参照して、PC1は、先述のように、その内部に入出力I/F100と、CPU101と、記憶装置102とを含む。
入出力I/F100は、マウス11およびキーボード12と接続されて、マウス11および/またはキーボード12から入力されるユーザ指示を受取る。また、モニタ13と接続されて、モニタ13に対して表示用の画像データを渡す。また、スキャナ16と接続されて、スキャナ16でスキャンされて得られたスキャン画像(スキャンデータ)を受取る。また、プリンタ15に接続されて、プリンタ15に対してプリント用の画像データを渡す。
記憶装置102は、先述の画像処理ソフトとオペレーションソフトとを記憶する。これらソフトウェアの少なくとも一部が、外部記憶装置14に記憶されていてもよい。CPU101はその内部にメモリを含み、記憶装置102から読出したソフトウェアを内部のメモリに展開しつつ実行する。その際、入出力I/F100を介して入力されたデータを用いたり、処理によって生成されたデータを入出力I/F100を介して他の装置に出力したりする。
CPU101が記憶装置102に記憶される画像処理ソフトを実行することで実現される画像処理装置は、スキャナ16で原稿画像を読取って得られる画像データや、PC1内のアプリケーションソフトウェアなどの実行によって作成される画像データ(たとえば文書作成ソフトウェアの実行によって作成される文書データ)などの画像データを符号化し、圧縮するための処理を施す。以降の説明において、圧縮される前の画像データのことを「原稿画像データ」と称する。
図4は、原稿画像データを圧縮する際の、PC1の機能構成の具体例を示すブロック図である。図4に示される各機能は、主に、CPU101が記憶装置102に記憶される画像処理ソフトを実行することでCPU101に構成される機能である。また、図2に示されたハードウェア構成を用いて実現されてもよい。
図4を参照して、PC1の上記機能は、原稿画像データ入力部301、第1圧縮部303、第2圧縮部305、および圧縮データ出力部307を含む。第2圧縮部305は、さらに、代表値圧縮部305Aおよびインデックス圧縮部305Bを含む。
原稿画像データ入力部301は、スキャナ16において原稿画像がスキャンされて入出力I/F100を介して入力される原稿画像データを受け付ける。または、原稿画像データ入力部301には図示しないPC1内のアプリケーションソフトウェアなどの実行手段が含まれ、上記アプリケーションソフトウェアなどの実行によって作成される画像データを取得する。原稿画像データ入力部301は第1圧縮部303に接続され、入力された原稿画像データを第1圧縮部303に対して出力する。第1圧縮部303は入力された原稿画像データに一次圧縮処理を施す。第1圧縮部303はさらに第2圧縮部305に接続され、一次圧縮された画像データを第2圧縮部305に対して出力する。第2圧縮部305は、入力された、一次圧縮された画像データに二次圧縮処理を施す。その際、第2圧縮部305に含まれる代表値圧縮部305Aは、一次圧縮された画像データのうちの後述する代表色を表わす代表値部分について二次圧縮処理を施し、インデックス圧縮部305Bは、一次圧縮された画像データのうちのインデックスを表わす部分について二次圧縮処理を施す。第2圧縮部305はさらに圧縮データ出力部307に接続されて、二次圧縮された代表値部分、および二次圧縮されたインデックスを表わす部分を、圧縮データ出力部307に対して出力する。圧縮データ出力部307は、二次圧縮された代表値部分および二次圧縮されたインデックスを表わす部分の対応関係を表わす情報を生成し、当該情報と共に画像データをモニタ13などに対して出力する。
図5は、第1圧縮部303の詳細な構成の具体例を示すブロック図である。図5を参照して、第1圧縮部303は、色数判断部501、分割部503、代表値算出部505、および第1圧縮データ生成部507を含む。
分割部503は、入力された原稿画像データを、たとえば8×8画素などの、予め規定された所定サイズのブロックに分割し、ブロック内の各画素を、最大4色に塗り分ける。その際、色数判断部501は、該ブロックが1色のみか否か判断し、その結果を分割部503および第1圧縮データ生成部507に入力する。分割部503は色数判断部501での判断結果に応じてブロックの領域分割を繰り返す。代表値算出部505は後述する該ブロック内の各領域についての代表値を算出し、その値を第1圧縮データ生成部507に入力する。第1圧縮データ生成部507は色数判断部501での判断結果および代表値算出部505での算出結果に基づいて画像データを一次圧縮し、一次圧縮データを生成する。圧縮された画像データには、色数判断部501での判断結果である、後述する色数モードを示す情報が付加されている。
図6は、第2圧縮部305の詳細な構成の具体例を示すブロック図である。第2圧縮部305に含まれる代表値圧縮部305Aおよびインデックス圧縮部305Bは、いずれも同じ、図6に示される構成である。図6を参照して、第2圧縮部303に含まれる代表値圧縮部305Aおよびインデックス圧縮部305Bは、いずれも、ステータス記憶701、ステータス更新部703、判別部705、前ブロック情報記憶部707、カウント部709、カウンタ111、および第2圧縮データ生成部713を含む。
ステータス記憶部701は、後述する、最新の処理ステータスを記憶する。前ブロック情報記憶部707は、現在処理中のブロックに隣接する、直前に処理したブロック(前ブロックと称する)の情報として、前ブロックの色数モードと代表値とを記憶する。カウンタ711は、処理ステータスごとのカウンタを含む。
判別部705は、一次圧縮データが(ライン方向に1ブロック分ずつ)入力されるごとに、該ブロックの色数モードおよび前ブロックの色数モード、ならびに該ブロックの代表値および前ブロックの代表値、を比較し、比較結果をステータス更新部703、カウント部709および/または二次圧縮データ生成部713に入力する。ステータス更新部703は、上記比較結果に応じてステータス記憶部701に記憶されている最新の処理ステータスを更新する。カウント部709は、上記比較結果に応じてカウンタ711の対応するカウンタをインクリメントする。
二次圧縮データ生成部713は、上記比較結果およびカウンタ711に基づいて、一次圧縮データを二次圧縮し、二次圧縮データを生成する。
図7は、PC1において原稿画像データを圧縮する処理の具体例を示すフローチャートである。図7のフローチャートは、CPU101が記憶装置102に記憶される画像処理ソフトを実行することによって実現される。
図7を参照して、ステップS10で埋込データ入力部305は、マウス11やキーボード12などから入出力I/F100を介して埋込データの入力を受け付ける。ステップS10で入力された原稿画像データは、ステップS20で第1圧縮部303において一次圧縮され、その後、ステップS30で第2圧縮部305において二次圧縮された後、上記ステップS40で圧縮データ出力部307より出力される。
図8は、上記ステップS20での、一次圧縮処理の具体例を示すフローチャートである。図8を参照して、ステップS101で分割部503は、原稿画像データを予め規定された所定サイズのブロックに分割する。変数nを初期化した後(ステップS103)、1インクリメントし(ステップS105)、ステップS106,S108で色数判断部501は、ステップS107,S109,S110での領域分割前に、変数nに対応するブロック内に1色しかないか否か、2色しかないか否かを判断する。1色しかないと判断された場合には(ステップS106でYES)、以降の領域分割処理をスキップする。1色よりも多い色数があると判断された場合(ステップS106でNO)、ステップS107で分割部503は、当該ブロックに対して第1の領域分割処理を実行する。変数nに対応するブロック内に2色しかないと判断された場合には(ステップS108でYES)、上記ステップS107で第1の領域分割処理がなされた時点で、以降の領域分割処理をスキップする。2色よりも多い色数があると判断された場合(ステップS108でNO)、ステップS109,S110で分割部503は、さらに、当該ブロックに対して第2の領域分割処理、第3の領域分割処理を実行する。第1の領域分割処理、第2の領域分割処理、および第3の領域分割処理については、後の具体例を挙げて説明する。
その後、ステップS111で代表値算出部505において当該ブロックの各領域について先述の代表値が算出され、ステップS113で第1圧縮データ生成部507が、当該ブロック内の各画素を算出された代表値で置き換えて一次圧縮データを生成し、出力する。第1圧縮部303では以上の処理が、ステップS101で分割されたブロック数Nに達するまで(ステップS115でYES)、各ブロックについて実行される。
以上の一次圧縮方法について、原稿画像データの具体例を挙げて説明する。
上記ステップS10で入力された原稿画像データを所定サイズ(ここでは、8×8画素)に分割した、処理対象である1つのブロックが図9(A)に示される単色(1色)のみからなるとする。当該ブロックは、具体的に第1の色(たとえば赤色)1色のみが施されているとする。このとき、上記ステップS116で色数判別部501は、当該ブロックに1色しかないことを判断し、当該ブロックの色数モードを1色モードと決定する。色が同じであるか否かの、色の同一性は、画素値がまったく同一か否かで判断されてもよいし、RGBのチャンネルごとに、差が所定(たとえば2)以下であれば同じ色と判断されてもよい。この、色の同一性の判断方法は、以降の処理においても同様とする。処理対象のブロックが1色モードである場合には領域分割処理がすべてなされず、ブロック全体として1つの領域とされる。ステップS111において、代表値算出部505でブロック全体である領域0の代表値が算出される。ここで、先述のように、第1の色が赤色であるとすると、代表値である赤色の色値は、図9(B)に示されるように、具体的にRGB値として、以下のように示される:
領域0:(R,G,B)=(252,224,234)。
処理対象である1つのブロックが図10(A)に示される2色からなるとする。当該ブロックは、具体的に、全体に第1の色(たとえば赤色)が施され、略中央部に、縦方向に第2の色(たとえば青色)が施されているものとする。このとき、上記ステップS116で色数判別部501は、当該ブロックに2色しかないことを判断し、当該ブロックの色数モードを2色モードと決定する。処理対象のブロックが2色モードである場合には1回の領域分割処理である第1の領域分割処理(S107)がなされ、以降の領域分割処理はなされない。
上記ステップS107の第1の領域分割処理の具体例として、分割部503は、図10(A)のブロック内の各画素を示すRGB各色の画像データについて当該ブロック内における色値のばらつきを検出し、最も色値のばらつきの大きな色の画像データを特定する。さらに特定された画像データの色値の平均値を算出し、当該平均値よりも色値の大きい領域と小さい領域とに分割する。図10(B)は、図10(A)のブロックに対して第1の領域分割処理がなされた後を表わしている。上述の第1の領域分割処理がなされることで、第2の色が施されている領域が領域0、第1の色が施されている領域が領域1として分割される。そして、ステップS111において、代表値算出部505で領域0および領域1の代表値が算出される。ここで、先述のように、第1の色が赤色、第2の色が青色であるとすると、各領域の代表値は、図11に示されるように、具体的にRGB値として、以下のように示される:
領域0:(R,G,B)=( 15, 38,240)、
領域1:(R,G,B)=(252,224,234)。
処理対象である1つのブロックが図12(A)に示される3色以上からなるとする。当該ブロックは、具体的に、矩形の原稿の左上から右下に向かって対角方向に第1の色(たとえば赤色)の濃度が濃くなるグラデーションが施され、略中央部に、縦方向に第2の色(たとえば青色)が施されているものとする。このとき、上記ステップS116で色数判別部501は、当該ブロックに3色以上あることを判断し、当該ブロックの色数モードを、3回領域分割処理を行なうことを考慮した4色モードと決定する。処理対象のブロックが4色モードである場合には3回の領域分割処理である第3の領域分割処理(S110)まで実行される。
図12(B)は、図12(A)のブロックに対して第1の領域分割処理がなされた後を表わしている。上述の第1の領域分割処理がなされることで、第2の色が施されている領域が領域0、第1の色が施されている領域が領域1として分割される。
第1の領域分割処理がなされた後の、図12(B)の状態のブロックに対して、上記ステップS109で、同様にして、第2の領域分割処理が行なわれる。すなわち、上記領域0、領域1内の色の平均値として、各々、色番号00,01で表わされている色値が算出される。さらに、本実施の形態では、分割部503は、領域0,領域1のうち、色値のばらつきが大きい方の領域について、第1の領域分割処理と同様に、当該平均値よりも色値の大きい領域と小さい領域とに分割する。図13(A)が、図12(B)の状態のブロックに対してさらに第2の領域分割処理がなされた後を表わしている。上述の第2の領域分割処理がなされることで、第1の色がグラデーションをなしている領域1が、さらに、グラデーションの薄い側の領域である領域1と、濃い側の領域である領域2とに分割される。
第2の領域分割処理がなされた後の、図13(A)の状態のブロックに対して、上記ステップS110で、同様にして、第3の領域分割処理が行なわれる。すなわち、上記領域0〜領域2内の色の平均値として、各々、色番号00,01,10で表わされている色値が算出される。さらに、本実施の形態では、分割部503は、領域0,領域1,領域2のうち、色値のばらつきが大きい領域について、第1の領域分割処理と同様に、当該平均値よりも色値の大きい領域と小さい領域とに分割する。図13(B)が、図13(A)の状態のブロックに対してさらに第3の領域分割処理がなされた後を表わしている。上述の第3の領域分割処理がなされることで、グラデーションの濃い側の領域である領域2が、さらに、グラデーションの薄い側の領域である領域2と、濃い側の領域である領域3とに分割される。
そして、ステップS111において、代表値算出部303で各領域の代表値として色値の平均値が算出される。ここで、先述のように、第1の色が赤色であり、第2の色が青色である場合、領域0,領域1,領域2,領域3の代表色を示す代表値は、図14に示されるように、具体的にRGB値として、以下のように示される:
領域0:(R,G,B)=( 15, 38,240)、
領域1:(R,G,B)=(252,224,234)、
領域2:(R,G,B)=(247,140,191)、
領域3:(R,G,B)=(232, 71,127)。
図15(A)、図15(B)、および図15(C)は、上記ステップS113で出力される1ブロック分の一次圧縮データのデータ構成の具体例を示す図である。一次圧縮データは固定長(たとえば256ビット)のデータであって、最初2ビットで色数モードを識別するための識別フラグを示し、その後に、各領域0〜3の代表色を示す情報である代表値が含まれ、必要に応じて、当該ブロックを構成する64画素の各々について、いずれの領域に属するかを示す情報であるインデックスがさらに含まれる。代表値は、RGBのチャンネルごとに各8ビットで表わされ、1つの領域の代表値は24ビットで表わされる。インデックスは、ブロックの64画素に対して、左上から右へ8画素分記述し、1つ下段のラインに移る、の繰り返しで表現される。2色モードの代表値は、64画素の各々について、領域0か領域1かのいずれかが1ビットで示され、2色モードのインデックスは64ビットで表わされる。4色モードの代表値は、64画素の各々について、領域0〜3のいずれかが2ビットで示され、4色モードのインデックスは128ビットで表わされる。
詳しくは、図15(A)はブロックが1色モードである場合の一次圧縮データの構成、図15(B)はブロックが2色モードである場合の一次圧縮データの構成、および図15(C)はブロックが4色モードである場合の一次圧縮データの構成の具体例を示す図である。図15(A)を参照して、1色モードである場合には領域分割処理が行なわれないため領域は1つのみである(領域0)。そのため、一次圧縮データには、識別フラグと、領域0の代表値とのみが含まれ、後の領域にはデータが格納されていない。図15(B)を参照して、2色モードである場合には、1回領域分割処理が行なわれるために、一次圧縮データには、識別フラグに加えて、2領域(領域0,1)各々の代表値と、インデックスとが含まれ、後の領域にはデータが格納されていない。図15(C)を参照して、4色モードである場合には、3回領域分割処理が行なわれるために、一次圧縮データには、識別フラグに加えて、4領域(領域0〜3)各々の代表値と、インデックスとが含まれ、後の領域にはデータが格納されていない。
図16は、上記ステップS30での、二次圧縮処理のうち、代表値圧縮部305Aでの二次圧縮処理の具体例を示すフローチャートである。代表値圧縮部305Aは一次圧縮されたブロックのうちの代表値部分について、ブロック間の連続性を考慮して二次圧縮を行なう。後述するように、インデックス圧縮部305Bでも同様の二次圧縮を行なう。そのために、第1圧縮部303から第2圧縮部305へは、上記ステップS113で出力された1ブロックごとに一次圧縮データが入力される。そこで、ステップS201で変数nが初期化された後にステップS203で変数nが1インクリメントされて、ステップS205で第2圧縮部305は、第1圧縮部303から上記ステップS113で出力された1ブロック分の一次圧縮データを変数2に対応するブロックとして受け付ける。ステップS207で判別部705において、ステップS205で入力されたブロックの色数モードが判別されて、ステップS209〜S213で、後述する、色数モードに応じた処理が施される。以上の処理が、上記ステップS101で分割されたブロック数Nに達するまで(ステップS215でYES)、ブロックごとに実行される。
ここで、ステップS217での出力、およびステップS209〜S213の各色数モード用の処理を説明する前に、処理ステータスについて説明する。処理ステータスは、ブロックの色数モードを考慮して関連あるブロックの連続数をカウントする処理における、前ブロックから現ブロックへの関連性を示す情報である。具体的に、現ブロックの処理状態について、「1色連続中」、「2色連続中」、および「連続中以外」の3つの処理ステータスに分類される。「1色連続中」は、一次圧縮データで1色モードとされたブロックの連続数をカウントしている処理状態を指す。「2色連続中」は、一次圧縮データで2色モードとされたブロックの連続数をカウントしている処理状態を指す。「連続中以外」は何もカウントしていない処理状態を指す。
上記ステップS203〜S213の処理が上記ステップS101で分割されたブロック数Nに達すると(ステップS215でYES)、ステップS217で第2圧縮部305は、処理ステータスが「連続中以外」以外の処理ステータスである場合には、ステータス記憶部701に記憶されている最新の処理ステータスでのブロックの連続数のカウント結果に、当該処理ステータスに応じた連続性モード、および代表値を付加して出力し、二次圧縮処理を終了する。具体的には、第2圧縮データ生成部713は、二次圧縮データとして、カウント結果に各処理ステータスに応じた以下の連続性モードを示す情報を出力する:
処理ステータスが「1色連続中」である場合:「2次1色モード」、
処理ステータスが「2色連続中」である場合:「2次2色モード」。
判別部705は、第1圧縮部303から一次圧縮されたブロックが入力されるたびに、当該ブロックの処理を行なう状態が上記いずれの状態に該当するかを判別し、処理ステータスを決定する。処理開始後は、「連続中以外」以外のいずれかの処理ステータスが決定される。決定された処理ステータスは最新の処理ステータスとしてステータス記憶部701に記憶される。
図17は、上記ステップS209の、代表値圧縮部305Aでの1色モード用の処理の具体例を示すフローチャートである。図17を参照して、第1圧縮部303から入力された一次圧縮されたブロックが1色モードであると判断した場合、判別部705は、ステータス記憶部701に記憶されている最新の処理ステータスを確認する。さらに、前ブロック情報記憶部707に記憶されている、前ブロックの代表値と当該ブロックの代表値とを比較する。
最新の処理ステータスが「1色連続中」で、当該ブロックの色を示す代表値が1色モードである前ブロックの代表値と一致しているとする(ステップS301でYES)。その場合、ステップS303でカウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。また、ステータス変更部703はステータス記憶部701に記憶されている最新の処理ステータスを変更せず、最新の処理ステータスを「1色連続中」のままとする。
最新の処理ステータスが「1色連続中」であっても当該ブロックの代表値が1色モードである前ブロックの代表値と一致していない場合、または最新の処理ステータスが「1色連続中」以外の他の処理ステータスであった場合には(ステップS301でNO)、ステップS313で第2圧縮データ生成部713は、「連続中以外」以外の処理ステータスである場合には、ステータス記憶部701に記憶されている最新の処理ステータスでのブロックの連続数のカウント結果に、当該処理ステータスに応じた連続性モード、および代表値を付加して代表値の二次圧縮データを生成し、出力する。具体的には、第2圧縮データ生成部713は、二次圧縮データとして、カウント結果に各処理ステータスに応じた以下の連続性モードを示す情報、および代表値を付加して、後述する図20のフォーマットで二次圧縮データを生成し、出力する:
処理ステータスが「1色連続中」である場合:「2次1色モード」、
処理ステータスが「2色連続中」である場合:「2次2色モード」。
処理ステータスが「連続中以外」である場合には、上記ステップS313をスキップし、この段階で二次圧縮データが生成されない。上記ステップS313で出力される二次圧縮データの具体的なデータ構成については、後に具体例を挙げて説明する。
その後、ステップS315で判別部705は、最新の処理ステータスを「1色連続中」とし、カウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。
図18は、上記ステップS211の、代表値圧縮部305Aでの2色モード用の処理の具体例を示すフローチャートである。図18を参照して、第1圧縮部303から入力された一次圧縮されたブロックが2色モードであると判断した場合、判別部705は、ステータス記憶部701に記憶されている最新の処理ステータスを確認する。さらに、前ブロック情報記憶部707に記憶されている、前ブロックの代表値と当該ブロックの代表値とを比較する。
最新の処理ステータスが「2色連続中」で、当該ブロックの両方の色を示す代表値が2色モードである前ブロックの両方の色を示す代表値と一致しているとする(ステップS401でYES)。その場合、ステップS403でカウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。また、ステータス変更部703はステータス記憶部701に記憶されている最新の処理ステータスを変更せず、最新の処理ステータスを「2色連続中」のままとする。
いずれか一方の色でも一致していない場合、または「2色連続中」以外の他の処理ステータスであった場合には(ステップS401でNO)、ステップS405で第2圧縮データ生成部713は、「連続中以外」以外の処理ステータスである場合には、ステータス記憶部701に記憶されている最新の処理ステータスでのブロックの連続数のカウント結果に、当該処理ステータスに応じたモード、および代表値を付加して代表値の二次圧縮データを生成し、出力する。各処理ステータスとモードとの対応は、上記ステップS313で説明された対応と同じである。なお、処理ステータスが「連続中以外」である場合には、上記ステップS313をスキップし、この段階で二次圧縮データが生成されない。
その後、ステップS407で判別部705は、最新の処理ステータスを「2色連続中」とし、カウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。
図19は、上記ステップS213の、代表値圧縮部305Aでの4色モード用の処理の具体例を示すフローチャートである。図19に示されるように、第1圧縮部303から入力された一次圧縮されたブロックが4色モードであると判断された場合には代表値圧縮部305Aは当該モードのブロックの連続数をカウントしないものとする。これは、実際の原稿画像においては、4色で再現することが必要な領域で、同じ4色が含まれるブロックが連続することがほぼないと、との考えに基づくものである。そこで、第1圧縮部303から入力された一次圧縮されたブロックが4色モードであると判断された場合には、図19を参照して、ステップS501で代表値圧縮部305Aは、「連続中以外」以外の処理ステータスである場合には、当該処理ステータスに応じた連続性モードに代表値を付加して出力する。各処理ステータスとモードとの対応は、上記ステップS313で説明された対応と同じである。なお、処理ステータスが「連続中以外」である場合には、上記ステップS501をスキップし、この段階で二次圧縮データが生成されない。
その後さらに、ステップS503で第2圧縮データ生成部713は、入力された4色モードのブロックに「2次4色モード」を示す情報を付加して代表値の二次圧縮データを生成し、出力する。
図20(A)、図20(B)、および図20(C)は、上記ステップS313、S405、S501で生成され、出力される、1ブロック分の、代表値の二次圧縮データのデータ構成の具体例を示す図であり、図20(A)は「2次1色モード」とされた代表値の二次圧縮データのデータ構成、図20(B)は「2次2色モード」とされた代表値の二次圧縮データのデータ構成、および図20(C)は「2次4色モード」とされた代表値の二次圧縮データのデータ構成の具体例を示している。
図20(A)を参照して、「2次1色モード」とされた代表値の二次圧縮データは合計32ビットで構成されて、図15(A)に示された、ブロックが1色モードである場合の一次圧縮データの、最初の2ビットで表現された当該一次圧縮データの色数モードを示す識別フラグが、二次圧縮データの連続性モードを示す識別フラグ「0」に置き換えられている。続く、一次圧縮データの空き領域であった38ビットのうちの先頭の1ビットで、代表色を示す情報である代表値が付加された二次圧縮データであるか否かを示すフラグである代表値出力フラグが表現されている。ここでは、当該フラグに、代表値が付加された二次圧縮データであることを示す「1」が立てられている。代表値出力フラグについては、後の変形例においてさらに説明する。続く5ビットで、当該連続性モードに対応する処理ステータスである「1色連続中」においてカウントされた、一次圧縮データであるブロックの連続数を示す情報が表現されている。一次圧縮データに含まれる各8ビットで表現された1色分の代表値は、代表値の二次圧縮データにそのまま残されている。一次圧縮データにおいて、上の38ビットのうちの残りの空き領域、および代表値に続く空き領域であった192ビットは、代表値の二次圧縮データには含まれていない。
図20(B)を参照して、「2次2色モード」とされた代表値の二次圧縮データは合計56ビットで構成されて、図15(B)に示された、ブロックが2色モードである場合の一次圧縮データの、最初の2ビットで表現された当該一次圧縮データの色数モードを示す識別フラグが、二次圧縮データの連続性モードを示す識別フラグ「1」に置き換えられている。続く、一次圧縮データの空き領域であった6ビットのうちの先頭の1ビットで代表値出力フラグが表現され、ここでは、当該フラグに、代表値が付加された二次圧縮データであることを示す「1」が立てられている。続く5ビットで、当該連続性モードに対応する処理ステータスである「2色連続中」の処理ステータスにおいてカウントされた、一次圧縮データであるブロックの連続数を示す情報が表現されている。一次圧縮データに含まれる各8ビットで表現された2色分の代表値は、代表値の二次圧縮データにそのまま残されている。64ビットで表現されたインデックス、一次圧縮データにおいてインデックスに続く空き領域であった128ビット、および2つの代表値の間の空き領域であった8ビットは、代表値の二次圧縮データには含まれていない。
図20(C)を参照して、「2次4色モード」とされた代表値の二次圧縮データは合計104ビットで構成されて、図15(C)に示された、ブロックが4色モードである場合の一次圧縮データの、最初の2ビットで表現された当該一次圧縮データの色数モードを示す識別フラグが、二次圧縮データの連続性モードを示す識別フラグ「2」に置き換えられている。続く、一次圧縮データの空き領域であった6ビットのうちの先頭の1ビットで代表値出力フラグが表現され、ここでは、当該フラグに、代表値が付加された二次圧縮データであることを示す「1」が立てられている。続く5ビットの空き領域、および一次圧縮データに含まれる各8ビットで表現された4色分の代表値は、代表値の二次圧縮データにそのまま残されている。128ビットで表現されたインデックス、および4つの代表値の間の空き領域であった各8ビットは、代表値の二次圧縮データには含まれていない。
上記ステップS30での、二次圧縮処理のうち、インデックス圧縮部305Bでの二次圧縮処理も、図16〜図19に示された処理と同様である。すなわち、インデックス圧縮部305Bは一次圧縮されたブロックのうちのインデックス部分について、ブロック間の連続性を考慮して、第1圧縮部303から入力されたブロックの色数モードに応じた処理が施される。
インデックス圧縮部305Bでの1色モード用の処理もまた、図17に示された処理とほぼ同様である。すなわち、第1圧縮部303から入力された一次圧縮されたブロックが1色モードであると判断した場合、インデックス圧縮部305Bの判別部705は、ステータス記憶部701に記憶されている最新の処理ステータスを確認する。さらに、前ブロック情報記憶部707に記憶されている、前ブロックのインデックスと当該ブロックのインデックスとを比較する。
最新の処理ステータスが「1色連続中」で、当該ブロックのインデックスが前ブロックのインデックスと一致している場合には(ステップS301でYES)、ステップS303でカウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。また、ステータス変更部703はステータス記憶部701に記憶されている最新の処理ステータスを変更せず、最新の処理ステータスを「1色連続中」のままとする。
最新の処理ステータスが「1色連続中」であっても当該ブロックのインデックスが前ブロックのインデックスと一致していない場合、または最新の処理ステータスが「1色連続中」以外の他の処理ステータスであった場合には(ステップS301でNO)、ステップS313で第2圧縮データ生成部713は、「連続中以外」以外の処理ステータスである場合には、ステータス記憶部701に記憶されている最新の処理ステータスでのブロックの連続数のカウント結果に、当該処理ステータスに応じた連続性モード、およびインデックスを付加してインデックスの二次圧縮データを生成し、出力する。具体的には、第2圧縮データ生成部713は、二次圧縮データとして、カウント結果に各処理ステータスに応じた以下の連続性モードを示す情報を付加して二次圧縮データを生成し、出力する:
処理ステータスが「1色連続中」である場合:「2次1色モード」、
処理ステータスが「2色連続中」である場合:「2次2色モード」。
処理ステータスが「連続中以外」である場合には、上記ステップS313をスキップし、この段階で二次圧縮データが生成されない。その後、ステップS315で判別部705は、最新の処理ステータスを「1色連続中」とし、カウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。
インデックス圧縮部305Bでの2色モード用の処理もまた、図18に示された処理とほぼ同様である。すなわち、第1圧縮部303から入力された一次圧縮されたブロックが2色モードであると判断した場合、インデックス圧縮部305Bの判別部705は、ステータス記憶部701に記憶されている最新の処理ステータスを確認する。さらに、前ブロック情報記憶部707に記憶されている、前ブロックのインデックスと当該ブロックのインデックスとを比較する。
最新の処理ステータスが「2色連続中」で、当該ブロックのインデックスが前ブロックのインデックスと一致している場合には(ステップS401でYES)、ステップS403でカウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。また、ステータス変更部703はステータス記憶部701に記憶されている最新の処理ステータスを変更せず、最新の処理ステータスを「2色連続中」のままとする。
インデックスが一致していない場合、または「2色連続中」以外の他の処理ステータスであった場合には(ステップS401でNO)、ステップS405で第2圧縮データ生成部713は、「連続中以外」以外の処理ステータスである場合には、ステータス記憶部701に記憶されている最新の処理ステータスでのブロックの連続数のカウント結果に、当該処理ステータスに応じたモード、およびインデックスを付加してインデックスの二次圧縮データを生成し、出力する。各処理ステータスとモードとの対応は、上記ステップS313で説明された対応と同じである。なお、処理ステータスが「連続中以外」である場合には、上記ステップS313をスキップし、この段階で二次圧縮データが生成されない。
その後、ステップS407で判別部705は、最新の処理ステータスを「2色連続中」とし、カウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。
インデックス圧縮部305Bでの4色モード用の処理もまた、図19に示された処理とほぼ同様である。すなわち、第1圧縮部303から入力された一次圧縮されたブロックが4色モードであると判断された場合にはインデックス圧縮部305Bは当該モードのブロックの連続数をカウントしないものとする。これは、実際の原稿画像においては、4色で再現することが必要な領域で、画素に対する4色の配置が同じであるブロック、すなわちインデックスが同じブロックが連続することがほぼないと、との考えに基づくものである。そこで、第1圧縮部303から入力された一次圧縮されたブロックが4色モードであると判断された場合には、ステップS501で第2圧縮データ生成部713は、「連続中以外」以外の処理ステータスである場合には、当該処理ステータスに応じた連続性モードにインデックスを付加してインデックスの二次圧縮データを生成し、出力する。各処理ステータスとモードとの対応は、上記ステップS313で説明された対応と同じである。なお、処理ステータスが「連続中以外」である場合には、上記ステップS501をスキップし、この段階で二次圧縮データが生成されない。
その後さらに、ステップS503で第2圧縮データ生成部713は、入力された4色モードのブロックに「2次4色モード」を示す情報を付加してインデックスの二次圧縮データを生成し、出力する。
図21(A)、図21(B)、および図21(C)は、上記ステップS313、S405、S501で出力される、1ブロック分の、インデックスの二次圧縮データのデータ構成の具体例を示す図であり、図21(A)は「2次1色モード」とされたインデックスの二次圧縮データのデータ構成、図21(B)は「2次2色モード」とされたインデックスの二次圧縮データのデータ構成、および図21(C)は「2次4色モード」とされたインデックスの二次圧縮データのデータ構成の具体例を示している。
図21(A)を参照して、「2次1色モード」とされたインデックスの二次圧縮データは合計8ビットで構成されて、最初の2ビットで二次圧縮データの連続性モードを示す識別フラグが表現されている。ここでは、「2次1色モード」であることを示す「0」が立てられている。続く6ビットで、当該連続性モードに対応する処理ステータスである「1色連続中」においてカウントされた、一次圧縮データであるブロックの連続数を示す情報が表現されている。1色モードである場合には、当該ブロックのすべての画素に同じ色が配置されているために各画素の属する色領域を指定するインデックスは不要となる。そのため、「2次1色モード」とされたインデックスの二次圧縮データには具体的なインデックスは含まれない。
図21(B)を参照して、「2次2色モード」とされたインデックスの二次圧縮データは合計72ビットで構成されて、図15(B)に示された、ブロックが2色モードである場合の一次圧縮データの、最初の2ビットで表現された当該一次圧縮データの色数モードを示す識別フラグが、二次圧縮データの連続性モードを示す識別フラグ「1」に置き換えられている。続く、一次圧縮データの空き領域であった6ビットのうちの先頭の1ビットで、インデックスが付加された二次圧縮データであるか否かを示すフラグであるインデックス出力フラグが表現されている。ここでは、当該フラグに、インデックスが付加された二次圧縮データであることを示す「1」が立てられている。続く5ビットで、当該連続性モードに対応する処理ステータスである「2色連続中」の処理ステータスにおいてカウントされた、一次圧縮データであるブロックの連続数を示す情報が表現されている。一次圧縮データに含まれる64ビットで表現されたインデックスは、インデックスの二次圧縮データにそのまま残されている。一次圧縮データにおいて各8ビットで表現された2色分の代表値、インデックスに続く空き領域であった128ビット、および2つの代表値の間の空き領域であった8ビットは、インデックスの二次圧縮データには含まれていない。
図21(C)を参照して、「2次4色モード」とされたインデックスの二次圧縮データは合計1136ビットで構成されて、図15(C)に示された、ブロックが4色モードである場合の一次圧縮データの、最初の2ビットで表現された当該一次圧縮データの色数モードを示す識別フラグが、二次圧縮データの連続性モードを示す識別フラグ「2」に置き換えられている。続く、一次圧縮データの空き領域であった6ビットのうちの先頭の1ビットでインデックス出力フラグが表現され、ここでは、当該フラグに、インデックスが付加された二次圧縮データであることを示す「1」が立てられている。続く5ビットの空き領域、および128ビットで表現されたインデックスは、インデックスの二次圧縮データにそのまま残されている。一次圧縮データに含まれる各8ビットで表現された4色分の代表値、および4つの代表値の間の空き領域であった各8ビットは、インデックスの二次圧縮データには含まれていない。
上記ステップS40で、上のようにして生成された代表値の二次圧縮データおよびインデックスの二次圧縮データは圧縮データ出力部307より出力され、たとえば記憶装置102や外部記憶装置14などの、所定の記憶領域に各々書き込まれる。その際、圧縮データ出力部307は、同じブロックから生成された代表値の二次圧縮データとインデックスの二次圧縮データとについて、各々が書き込まれた記憶領域上の位置を対応付ける情報を生成し、これらの二次圧縮データと共に出力する。これにより、画像形成装置において二次圧縮データを復元する際に、記憶領域の異なる位置に書き込まれた1つのブロックについての代表値の二次圧縮データとインデックスの二次圧縮データとを対応付けることが可能となる。
図22を用いて、二次圧縮処理の具体例を説明する。図22は、一次圧縮後のブロックの連続の二次圧縮処理を説明する図である。図22(A)は、第1圧縮部303から第2圧縮部305に順に入力された、一次圧縮されたブロック群の具体例を示しており、横方向(行方向)に8ブロック連続したブロック群が示されている。以降の説明のために、これらブロックを、左から順にaブロック、bブロック、…、hブロックと称する。これらのブロック群は、文字画像の1行を想定したブロック群であり、aブロックの先頭からbブロックの途中まで、cブロックの途中からdブロックの途中まで、およびgブロックの途中からhブロックの末尾まで、白色地に黒色が配置されている。
図22(B)は、図22(A)のブロック群を、代表値圧縮部305Aで二次圧縮処理した結果得られる代表値の二次圧縮データの具体例を示す図である。代表値圧縮部305Aでは、aブロック〜dブロック、gブロック、およびhブロックの代表値に対しては図18に示された2色モード用の二次圧縮処理が施され、eブロックおよびfブロックの代表値に対しては図17に示された1色モード用の二次圧縮処理が施される。aブロック〜dブロックの代表値およびgブロックとhブロックとの代表値は、いずれも、白色および黒色である。また、eブロックおよびfブロックの代表値は同じ白色である。従って代表値の二次圧縮処理の結果、図22(B)に示されるように、aブロック〜dブロックの代表値は、連続数を4とした、図20(B)に示されたデータ構造の「2次2色モード」の代表値の二次圧縮データに圧縮され、eブロックおよびfブロックの代表値は、連続数を2とした、図20(A)に示されたデータ構造の「2次1色モード」の代表値の二次圧縮データに圧縮され、gブロックおよびhブロックの代表値は、連続数を2とした、図20(B)に示されたデータ構造の「2次2色モード」の代表値の二次圧縮データに圧縮される。
図22(C)は、図22(A)のブロック群を、インデックス圧縮部305Bで二次圧縮処理した結果得られるインデックスの二次圧縮データの具体例を示す図である。インデックス圧縮部305Bでも、aブロック〜dブロック、gブロック、およびhブロックのインデックスに対しては図18に示された2色モード用の二次圧縮処理が施され、eブロックおよびfブロックのインデックスに対しては図17に示された1色モード用の二次圧縮処理が施される。図22(A)に示された各ブロックのインデックスは異なっているため、インデックスの二次圧縮処理の結果、図22(C)に示されるように、aブロック〜dブロック、gブロック、およびhブロックのインデックスは、各々、図21(B)に示されたデータ構造の「2次2色モード」のインデックスの二次圧縮データに圧縮され、eブロックおよびfブロックのインデックスは、各々、図21(A)に示されたデータ構造の「2次1色モード」のインデックスの二次圧縮データに圧縮される。
図22(A)の例ではいずれのブロックも代表値およびインデックスの双方が一致してはいないために、これら双方の一致するブロックの連続性を考慮した圧縮方法では、これらブロック群は連続性がないものとして二次圧縮される。それに対して、PC1における圧縮方法では、代表値については、aブロック〜dブロック、gブロック、およびhブロックの一致が考慮され、aブロック〜dブロックの代表値の連続性、およびgブロックとhブロックとの代表値の連続性を考慮して二次圧縮処理がなされる。従って、代表値に関する情報については、圧縮率を向上させることができる。
通常、文字画像は白色と黒色とから構成される2色のブロック、またはいずれか1色のブロックが連続することが多い。そのため、同じ代表値のブロックが連続することは多いが、インデックスは連続しないことが多い。PC1においては、上述のように、代表値とインデックスとを別個に二次圧縮処理を行なうため、インデックスが異なっていても代表値が同じブロックについては連続性を考慮して圧縮することができる。そのため、特に文字画像のような特定の色で構成される画像については、代表値およびインデックスの双方の一致するブロックの連続性を考慮した圧縮よりも、より圧縮効率を向上させることができる。
なお、以上の説明では、第2圧縮部305が代表値圧縮部305Aとインデックス圧縮部305Bとの両圧縮部を含んで、上記ステップS30で、一次圧縮されたブロックのうちの代表値部分と、インデックス部分とを、各々二次圧縮処理するものとしている。しかしながら、本実施の形態にかかる二次圧縮処理は代表値部分とインデックス部分との両方を二次圧縮する処理に限定されず、いずれか一方のみを二次圧縮する処理も含まれる。上述のように、処理対象の画像が文字画像である場合には、一次圧縮されたブロックのうちの代表値部分のみ連続性を考慮して二次圧縮する処理であっても、代表値およびインデックスの双方の一致するブロックの連続性を考慮した通常の圧縮よりも圧縮効率を向上させることができる。同様に、一次圧縮されたブロックのうちの代表値部分についての圧縮処理は具体的には限定されずにどのような処理であってもよいものとして、インデックス部分のみ連続性を考慮して二次圧縮する処理であっても圧縮効率の向上に寄与し得る。
[変形例1]
変形例1において、前ブロック情報記憶部707は、直前のブロックの情報のみならず、各連続性モードについて、少なくとも前回出力された当該連続性モードでの代表値およびインデックスを記憶する。すなわち、「2次1色モード」、「2次2色モード」、および「4色モード」の各連続性モードについて、少なくとも前回当該モードとして二次圧縮データが出力された際に付加された代表値およびインデックスを記憶する。
図23は、変形例1における代表値圧縮部305Aでの二次圧縮処理において、上記ステップS313、S405、またはS501で第2圧縮データ生成部713が、連続性モードを示す情報として「2次1色モード」を付加した代表値の二次圧縮データを生成する際の処理の具体例を示す図である。
すなわち、上記ステップS313、S405、またはS501で、前ブロックまでの処理の処理ステータスが「1色連続中」であって、前ブロックまでのカウント結果を「2次1色モード」として出力する場合、図23を参照して、代表値圧縮部305Aの判別部705は、さらに、現ブロックの代表値と、前ブロック情報記憶部707に記憶されている前回の「2次1色モード」で出力された二次圧縮データの代表値とを比較する(ステップS601)。その結果、これらの代表値が一致している場合(ステップS601でYES)、第2圧縮データ生成部713は、上述の代表値出力フラグを、代表値が付加されていない二次圧縮データであることを示す「0」として、カウント結果に各処理ステータスに応じた連続性モードを示す情報を付加し、代表値を付加せずに二次圧縮データを生成し、出力する(ステップS603)。
ステップS601での比較の結果、現ブロックの代表値と前回の「2次1色モード」で出力された二次圧縮データの代表値とが異なっている場合(ステップS601でNO)、ステータス変更部703はステータス記憶部701に記憶されている、前回「2次1色モード」として二次圧縮データが出力された際に付加された代表値を、現ブロックの代表値に更新する(ステップS605)。この場合、第2圧縮データ生成部713は、上述した処理と同様に代表値出力フラグを、代表値が付加されている二次圧縮データであることを示す「1」として、カウント結果に各処理ステータスに応じた連続性モードを示す情報、および代表値を付加して二次圧縮データを生成し、出力する(ステップS603)。
図24は、変形例1における代表値圧縮部305Aでの二次圧縮処理において、上記ステップS313、S405、またはS501で第2圧縮データ生成部713が、連続性モードを示す情報として「2次2色モード」を付加した代表値の二次圧縮データを生成する際の処理の具体例を示す図である。
すなわち、上記ステップS313、S405、またはS501で、前ブロックまでの処理の処理ステータスが「2色連続中」であって、前ブロックまでのカウント結果を「2次2色モード」として出力する場合、図24を参照して、代表値圧縮部305Aの判別部705は、さらに、現ブロックの代表値と、前ブロック情報記憶部707に記憶されている前回の「2次2色モード」で出力された二次圧縮データの代表値とを比較する(ステップS701)。その結果、これらの代表値がすべて一致している場合(ステップS701でYES)、第2圧縮データ生成部713は、上述の代表値出力フラグを、代表値が付加されていない二次圧縮データであることを示す「0」として、カウント結果に各処理ステータスに応じた連続性モードを示す情報を付加し、代表値を付加せずに二次圧縮データを生成し、出力する(ステップS703)。
ステップS701での比較の結果、現ブロックの代表値と前回の「2次2色モード」で出力された二次圧縮データの代表値とが1色でも異なっている場合には(ステップS701でNO)、ステータス変更部703はステータス記憶部701に記憶されている、前回「2次2色モード」として二次圧縮データが出力された際に付加された代表値を、現ブロックの代表値に更新する(ステップS705)。この場合、第2圧縮データ生成部713は、上述した処理と同様に代表値出力フラグを、代表値が付加されている二次圧縮データであることを示す「1」として、カウント結果に各処理ステータスに応じた連続性モードを示す情報、および代表値を付加して二次圧縮データを生成し、出力する(ステップS703)。
図25は、変形例1における代表値圧縮部305Aでの二次圧縮処理において、上記ステップS503で第2圧縮データ生成部713が、連続性モードを示す情報として「2次4色モード」を付加した代表値の二次圧縮データを生成する際の処理の具体例を示す図である。
すなわち、上記ステップS503で判別部705は、さらに、現ブロックの代表値と、前ブロック情報記憶部707に記憶されている前回の「2次4色モード」で出力された二次圧縮データの代表値とを比較する(ステップS801)。その結果、これらの代表値がすべて一致している場合(ステップS801でYES)、第2圧縮データ生成部713は、上述の代表値出力フラグを、代表値が付加されていない二次圧縮データであることを示す「0」として、カウント結果に各処理ステータスに応じた連続性モードを示す情報を付加し、代表値を付加せずに二次圧縮データを生成し、出力する(ステップS803)。
ステップS801での比較の結果、現ブロックの代表値と前回の「2次4色モード」で出力された二次圧縮データの代表値とが1色でも異なっている場合には(ステップS801でNO)、ステータス変更部703はステータス記憶部701に記憶されている、前回「2次4色モード」として二次圧縮データが出力された際に付加された代表値を、現ブロックの代表値に更新する(ステップS805)。この場合、第2圧縮データ生成部713は、上述した処理と同様に代表値出力フラグを、代表値が付加されている二次圧縮データであることを示す「1」として、カウント結果に各処理ステータスに応じた連続性モードを示す情報、および代表値を付加して二次圧縮データを生成し、出力する(ステップS803)。
図26(A)、図26(B)、および図26(C)は、上記ステップS603、S703、S803で生成され、出力される、代表値が付加されていない代表値の二次圧縮データのデータ構造の具体例を示す図であり、図26(A)は「2次1色モード」とされた代表値の二次圧縮データのデータ構成、図26(B)は「2次2色モード」とされた代表値の二次圧縮データのデータ構成、および図26(C)は「2次4色モード」とされた代表値の二次圧縮データのデータ構成の具体例を示している。これらの二次圧縮データは、各々、代表値を付加して出力する例として図20(A)、図20(B)、および図20(C)い示されたデータ構造のうちの代表値が含まれていないデータ構造となっている。つまり、変形例1にかかる二次圧縮処理が行なわれることで、現ブロックの代表値が前回の同じモードでの代表値と同じである場合には、「2次1色モード」である場合には1色分の24ビット少ない8ビットで構成される二次圧縮データが生成され、「2次2色モード」である場合には2色分の48ビット少ない8ビットで構成される二次圧縮データが生成され、「2次4色モード」である場合には4色分の96ビット少ない8ビットで構成される二次圧縮データが生成される。
具体的に、図22(A)に示される一次圧縮されたブロック群に対して変形例1にかかる二次圧縮処理が施される場合、aブロック〜dブロックの代表値と、gブロックおよびhブロックの代表値とは同じ白色および黒色であるため、図27に示されるように、図22(B)に示された代表値の二次圧縮データのうち、eブロックおよびfブロックの代表値が、連続数を2とし、代表値が付加されない、図26(B)に示されたデータ構造の「2次2色モード」の代表値の二次圧縮データに圧縮される。すなわち、代表値については、図22(B)に示された代表値の二次圧縮データよりも、「2次2色モード」の代表値のデータ量である48ビット分圧縮効率を向上させることができる。
上述のように、文字画像は白色と黒色とから構成される2色のブロック、またはいずれか1色のブロックが連続することが多く、かつ、その連続が繰り返し現われることが多い。そのため、変形例1のように、先に出力した二次圧縮データとの関連性もさらに考慮することで、特に文字画像のような特定の色で構成される画像については、より圧縮効率を向上させることができる。
なお、上の例では代表値圧縮部305Aでの二次圧縮処理について具体的に示されているが、インデックス圧縮部305Bでも、同様に、先に出力した二次圧縮データとの関連性をさらに考慮した二次圧縮を行なうことができる。
[変形例2]
変形例2として、代表値圧縮部305Aにおいて、代表値の色成分ごとの連続性を考慮した二次圧縮処理が行なわれてもよい。具体的には、代表値がCMYK値で表わされる場合、代表値圧縮部305Aは、成分値別に、C値についての代表値の二次圧縮、M値についての代表値の二次圧縮、Y値についての代表値の二次圧縮、およびK値についての代表値の二次圧縮を実行し、成分値別に二次圧縮データを生成する。この場合、たとえば第1ブロックの代表値が(C,M,Y,K)=(0,0,0,0)で表わされる白色であり、第2ブロックの代表値が(C,M,Y,K)=(0,0,0,255)で表わされる黒色である場合には、CMY成分値は0が連続するために、これらブロックの代表値のCMY成分の二次圧縮データは連続数2として、各々、1つの二次圧縮データとすることができる。上述のように、文字画像は白色と黒色とから構成される2色のブロック、またはいずれか1色のブロックが連続することが多いために、K成分以外は0が連続する可能性が高い。なお、代表値がRGB値で表現されている場合にも、上述の圧縮処理を適用することができる。そのため、変形例2のように、代表値の成分ごとに二次圧縮データを生成することで、特に文字画像のような特定の色で構成される画像については、より圧縮効率を向上させることができる。
以上の例は、原稿画像データの圧縮処理を、図1に示されたPC1で行なうものとしている。しかしながら、同様にして、図2に示されたMFP2で行なってもよい。また、PC1またはMFP2の少なくとも一部の機能が、他の装置に含まれて、PC1またはMFP2が当該他の装置と通信を行ないながら上述の処理を実行するようにしてもよい。さらに、上述の処理をコンピュータに実行させるためのプログラムを提供することもできる。このようなプログラムは、コンピュータに付属するフレキシブルディスク、CD−ROM(Compact Disk-Read Only Memory)、ROM(Read Only Memory)、RAM(Random Access Memory)およびメモリカードなどのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
なお、本発明にかかるプログラムは、コンピュータのオペレーティングシステム(OS)の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずOSと協働して処理が実行される。このようなモジュールを含まないプログラムも、本発明にかかるプログラムに含まれ得る。
また、本発明にかかるプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本発明にかかるプログラムに含まれ得る。
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
1 PC、2 MFP、11 マウス、12 キーボード、13 モニタ、14 外部記憶装置、15 プリンタ、16 スキャナ、21 操作パネル部、22 スキャナ部、23 プリンタ部、100 入出力I/F、101 CPU、102 記憶装置、201 画像処理部、301 原稿画像データ入力部、303 第1圧縮部、305 第2圧縮部、305A 代表値圧縮部、305B インデックス圧縮部、307 圧縮データ出力部、501 色数判断部、503 分割部、505 代表値算出部、507 第1圧縮データ生成部、701 ステータス記憶、703 ステータス更新部、705 判別部、707 前ブロック情報記憶部、709 カウント部、111 カウンタ、713 第2圧縮データ生成部。