以下に、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。
本実施の形態においては、本発明にかかる画像処理装置がパーソナルコンピュータ(以下、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を含んで構成される。
原稿画像データ入力部301は入出力I/F100に接続され、スキャナ16において原稿画像がスキャンされて入出力I/F100を介して入力される原稿画像データを受け付ける。または、原稿画像データ入力部301には図示しないPC1内のアプリケーションソフトウェアなどの実行手段が含まれ、上記アプリケーションソフトウェアなどの実行によって作成される画像データを取得する。原稿画像データ入力部301はさらに第1圧縮部313に接続され、入力された原稿画像データを第1圧縮部313に対して出力する。第1圧縮部313は入力された原稿画像データに一次圧縮処理を施す。第1圧縮部313はさらに第2圧縮部305に接続され、一次圧縮された画像データを第2圧縮部305に対して出力する。第2圧縮部305は、入力された、一次圧縮された画像データに二次圧縮処理を施す。第2圧縮部305はさらに圧縮データ出力部307に接続されて、一次圧縮された画像データを圧縮データ出力部307に対して出力する。圧縮データ出力部307は入出力I/F100に接続され、二次圧縮された画像データをモニタ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の詳細な構成の具体例を示すブロック図である。図6を参照して、第2圧縮部303は、ステータス記憶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圧縮部313において一次圧縮され、その後、ステップS30で第2圧縮部305において二次圧縮された後、上記ステップS40で圧縮データ出力部307より出力される。
図8は、上記ステップS20での、一次圧縮処理の具体例を示すフローチャートである。図8を参照して、ステップS101で分割部503は、原稿画像データを所定サイズのブロックに分割する。変数nを初期化した後(ステップS103)、1インクリメントし(ステップS105)、ステップS107,S108で色数判断部501は、ステップS107,S109,S110での領域分割前に、変数nに対応するブロック内に1色しかないか否か、2色しかないか否かを判断する。1色しかないと判断された場合には(ステップS107でYES)、以降の領域分割処理をスキップする。1色よりも多い色数があると判断された場合(ステップS107で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(C)は、上記ステップS113で出力される1ブロック分の一次圧縮データのデータ構成の具体例を示す図である。一次圧縮データは固定長(たとえば256ビット)のデータであって、最初2ビットで色数モードを識別するための識別フラグを示し、その後に、各領域0〜3の代表色を示す情報が含まれ、必要に応じて、当該ブロックを構成する64画素の各々について、いずれの領域に属するかを示す情報であるインデックスがさらに含まれる。色情報は、RGBのチャンネルごとに各8ビットで表わされ、1つの領域の色情報は24ビットで表わされる。インデックスは、ブロックの64画素に対して、左上から右へ8画素分記述し、1つ下段のラインに移る、の繰り返しで表現される。2色モードでは、64画素の各々について、領域0か領域1かのいずれかが1ビットで示され、インデックスは64ビットで表わされる。4色モードでは、64画素の各々について、領域0〜3のいずれかが2ビットで示され、インデックスは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での、二次圧縮処理の具体例を示すフローチャートである。第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色連続中」、「2色後1色連続中」、および「連続中以外」の4つの処理ステータスに分類される。「1色連続中」は、一次圧縮データで1色モードとされたブロックの連続数をカウントしている処理状態を指す。「2色連続中」は、一次圧縮データで2色モードとされたブロックの連続数をカウントしている処理状態を指す。「2色後1色連続中」は、一次圧縮データで2色モードとされたブロックを処理した後、該ブロックの2色のうちの1色で構成される、1色モードとされたブロックの連続数をカウントしている処理状態を指す。「連続中以外」は何もカウントしていない処理状態を指す。なお、以降の例は、処理ステータスとして上の4つのステータスがあるものとするが、必ずしも処理ステータスに「2色後1色連続中」のステータスが含まれていなくてもよい。なぜなら、2色モードのブロックの後の1色モードのブロックの連続は、2色モードのブロックの連続数が「2色モード連続中」の処理ステータスでカウントされた後、1色モードのブロックの連続数が「1色連続中」の処理ステータスでカウントされてもよいからである。ただ、そのようにすると、二次圧縮後に前者の処理ステータスでカウントされた結果のデータと、後者の処理ステータスでカウントされた結果のデータとの両データが存在することになる。そのため、より二次圧縮の効率を向上させるためには、好ましくはこれら両処理ステータスを1つの処理ステータスにまとめる「2色後1色連続中」の処理ステータスを考慮する。「2色後1色連続中」の処理ステータスを考慮する場合としない場合との二次圧縮の比較については、後に具体例を挙げて示す。
上記ステップS203〜S213の処理が上記ステップS101で分割されたブロック数Nに達すると(ステップS215でYES)、ステップS217で第2圧縮部305は、処理ステータスが「連続中以外」以外の処理ステータスである場合には、ステータス記憶部701に記憶されている最新の処理ステータスでのブロックの連続数のカウント結果に、当該処理ステータスに応じた連続性モードを付加して出力し、二次圧縮処理を終了する。具体的には、第2圧縮データ生成部713は、二次圧縮データとして、カウント結果に各処理ステータスに応じた以下の連続性モードを示す情報を出力する:
処理ステータスが「1色連続中」である場合:「2次1色モード」、
処理ステータスが「2色後1色連続中」である場合:「2次2色モード」、
処理ステータスが「2色連続中」である場合:「2次2色モード」。
判別部705は、第1圧縮部303から一次圧縮されたブロックが入力されるたびに、当該ブロックの処理を行なう状態が上記いずれの状態に該当するかを判別し、処理ステータスを決定する。処理開始後は、「連続中以外」以外のいずれかの処理ステータスが決定される。決定された処理ステータスは最新の処理ステータスとしてステータス記憶部701に記憶される。
図17は、上記ステップ209の1色モード用の処理の具体例を示すフローチャートである。図17を参照して、第1圧縮部303から入力された一次圧縮されたブロックが1色モードであると判断した場合、判別部705は、ステータス記憶部701に記憶されている最新の処理ステータスを確認する。さらに、前ブロック情報記憶部707に記憶されている、前ブロックの色情報と当該ブロックの色情報とを比較する。
最新の処理ステータスが「1色連続中」で、当該ブロックの色が1色モードである前ブロックの色と一致しているとする(ステップS301でYES)。その場合、ステップS303でカウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。また、ステータス変更部703はステータス記憶部701に記憶されている最新の処理ステータスを変更せず、最新の処理ステータスを「1色連続中」のままとする。
最新の処理ステータスが「2色後1色連続中」で、当該ブロックの色が1色モードである前ブロックの色と一致しているとする(ステップS301でNO、かつステップS305でYES)。その場合、ステップS307でカウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。また、ステータス変更部703はステータス記憶部701に記憶されている最新の処理ステータスを変更せず、最新の処理ステータスを「2色後1色連続中」のままとする。
最新の処理ステータスが「2色連続中」で、当該ブロックの色が2色モードである前ブロックの2色のうちの1色と一致しているとする(ステップS301でNO、ステップS305でNO、かつステップS309でYES)。その場合、ステップS311でステータス変更部703は、ステータス記憶部701に記憶されている最新の処理ステータスを変更せず、最新の処理ステータスを「2色連続中」から「2色後1色連続中」に更新し、最新の処理ステータスを移行させる。また、カウント部709がカウンタ711のうちの「2色後1色連続中」に対応するカウンタの連続数を1加算する。
上のいずれでもない場合には(ステップS301,S305,ステップS309でNO)、ステップS313で第2圧縮部305は、「連続中以外」以外の処理ステータスである場合には、ステータス記憶部701に記憶されている最新の処理ステータスでのブロックの連続数のカウント結果に、当該処理ステータスに応じた連続性モードを付加して出力する。具体的には、第2圧縮データ生成部713は、二次圧縮データとして、カウント結果に各処理ステータスに応じた以下の連続性モードを示す情報を後述する図20のフォーマットで出力する:
処理ステータスが「1色連続中」である場合:「2次1色モード」、
処理ステータスが「2色後1色連続中」である場合:「2次2色モード」、
処理ステータスが「2色連続中」である場合:「2次2色モード」。
なお、処理ステータスが「連続中以外」である場合には、上記ステップS313をスキップし、上のような出力がなされない。上記ステップS313で出力される二次圧縮データの具体的なデータ構成については、後に具体例を挙げて説明する。
その後、ステップS315で判別部705は、最新の処理ステータスを「1色連続中」とし、カウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。
図18は、上記ステップ211の2色モード用の処理の具体例を示すフローチャートである。図18を参照して、第1圧縮部303から入力された一次圧縮されたブロックが2色モードであると判断した場合、判別部705は、ステータス記憶部701に記憶されている最新の処理ステータスを確認する。さらに、前ブロック情報記憶部707に記憶されている、前ブロックの色情報と当該ブロックの色情報とを比較する。
最新の処理ステータスが「2色連続中」で、当該ブロックの両方の色が2色モードである前ブロックの両方の色と一致しているとする(ステップS401でYES)。その場合、ステップS403でカウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。また、ステータス変更部703はステータス記憶部701に記憶されている最新の処理ステータスを変更せず、最新の処理ステータスを「2色連続中」のままとする。
いずれか一方の色でも一致していない場合、または「2色連続中」以外の他の処理ステータスであった場合には(ステップS401でNO)、ステップS405で第2圧縮部305は、「連続中以外」以外の処理ステータスである場合には、ステータス記憶部701に記憶されている最新の処理ステータスでのブロックの連続数のカウント結果に、当該処理ステータスに応じたモードを付加して出力する。各処理ステータスとモードとの対応は、上記ステップS313で説明された対応と同じである。なお、処理ステータスが「連続中以外」である場合には、上記ステップS313をスキップし、上のような出力がなされない。
その後、ステップS407で判別部705は、最新の処理ステータスを「2色連続中」とし、カウント部709がカウンタ711のうちの当該処理ステータスに対応するカウンタの連続数を1加算する。
図19は、上記ステップ213の4色モード用の処理の具体例を示すフローチャートである。図19に示されるように、第1圧縮部303から入力された一次圧縮されたブロックが4色モードであると判断された場合には第2圧縮部305は当該モードのブロックの連続数をカウントしないものとする。これは、実際の原稿画像においては、4色で再現することが必要な領域で、同じ4色が含まれるブロックが連続することがほぼないと、との考えに基づくものである。そこで、第1圧縮部303から入力された一次圧縮されたブロックが4色モードであると判断された場合には、図19を参照して、ステップS501で第2圧縮部305は、「連続中以外」以外の処理ステータスである場合には、ステータス記憶部701に記憶されている最新の処理ステータスでのブロックの連続数のカウント結果に、当該処理ステータスに応じた連続性モードを付加して出力する。各処理ステータスとモードとの対応は、上記ステップS313で説明された対応と同じである。なお、処理ステータスが「連続中以外」である場合には、上記ステップS501をスキップし、上のような出力がなされない。
その後さらに、ステップS503で第2圧縮部305は、入力された4色モードのブロックに、「2次4色モード」を示す情報を付加し、そのまま出力する。
図20(A)、図20(B)は、上記ステップS313、S405、S501で出力される二次圧縮データのデータ構成の具体例を示す図であり、図20(A)は「2次1色モード」とされた二次圧縮データのデータ構成、図20(B)は「2次2色モード」とされた二次圧縮データのデータ構成の具体例を示している。
図20(A)を参照して、「2次1色モード」とされた二次圧縮データは、図15(A)に示されたブロックが1色モードである場合の一次圧縮データの、最初の2ビットで表現された当該一次圧縮データの色数モードを示す識別フラグが、二次圧縮データの連続性モードを示す識別フラグに置き換えられている。続く、一次圧縮データの空き領域であった38ビットのうちの14ビットで、当該連続性モードに対応する処理ステータスである「1色連続中」においてカウントされた、一次圧縮データであるブロックの連続数を示す情報が表現されている。当該一次圧縮データに含まれる各8ビットで表現された色情報は、二次圧縮データにそのまま残されている。一次圧縮データにおいて色情報に続く空き領域であった192ビットは、二次圧縮データには含まれていない。
図20(B)を参照して、「2次2色モード」とされた二次圧縮データは、図15(B)に示されたブロックが2色モードである場合の一次圧縮データの、最初の2ビットで表現された当該一次圧縮データの色数モードを示す識別フラグが、二次圧縮データの連続性モードを示す識別フラグに置き換えられている。一次圧縮データの空き領域であった6ビットで、当該連続性モードに対応する処理ステータスである「2色後1色連続中」および「2色連続中」のうちの「2色連続中」の処理ステータスにおいてカウントされた、一次圧縮データであるブロックの連続数を示す情報が表現されている。続いて、当該連続性モードに対応する処理ステータスである上記2ステータスのうちの「2色後1色連続中」の処理ステータスにおいてカウントされた1色モードである一次圧縮されたブロックの色が、後に続く、2色の色情報のうちのいずれであるかを指定する、1ビットで表現される情報、および「2色後1色連続中」の処理ステータスにおいてカウントされた1色モードである一次圧縮されたブロックの連続数を示す、7ビットで表現される情報が、一次圧縮データに追加されている。当該一次圧縮データに含まれる各8ビットで表現された色情報および64ビットで表現されたインデックスは、二次圧縮データにそのまま残されている。一次圧縮データにおいてインデックスに続く空き領域であった128ビットは、二次圧縮データには含まれていない。
二次圧縮された4色モードのブロックのデータ構成は、図15(C)に示された一次圧縮データと同様である。ただ、最初の2ビットで表現された当該一次圧縮データの色数モードを示す識別フラグは、二次圧縮データの連続性モードを示す識別フラグに置き換えられる。
図21〜図27を用いて、二次圧縮処理の具体例を説明する。
図21は、一次圧縮後のブロックの連続の二次圧縮処理を説明する図であって、圧縮方向に直交する方向である、縦方向に連続して変化する縦方向のグラデーションが施された原稿画像を一次圧縮した後のブロックの二次圧縮処理を説明する図である。図21に示される例では、第1行は第1の色と第2の色とが縦方向に並ぶ2色が施されたブロックが横方向(行方向)に4ブロック連続している。これらブロックは、第1圧縮部303においては2色モードと決定され、一次圧縮データには2色モードを示す識別フラグが付加されている。従って、これらブロックが第2圧縮部305に入力されると、第2圧縮部305では2色モード用処理(ステップS211)が実行されて、「2色連続中」の処理ステータスで連続数4がカウントされる。そのため、第1行の二次圧縮が終了すると、図21に示されるように、これら4ブロック分の一次圧縮データが、一次圧縮データのモードを示す識別フラグが「2次2色モード」を示す識別フラグに置き換えられ、空きビットが削除され、連続数を4とした、1ブロック分の一次圧縮データに相当する1つの符号に符号化された、二次圧縮データが生成される。この、第1行の二次圧縮データの具体例は、図22(A)に示される。同様に、第2行のブロックが第1圧縮部303から第2圧縮部305に順に入力されると、第2圧縮部305では1色モード用処理(ステップS209)が実行されて、「1色連続中」の処理ステータスで連続数4がカウントされる。そのため、第2行の二次圧縮が終了すると、図21に示されるように、これら4ブロック分の一次圧縮データが、一次圧縮データのモードを示す識別フラグが「2次1色モード」を示す識別フラグに置き換えられ、空きビットが削除され、連続数を4とした、1ブロック分の一次圧縮データに相当する1つの符号に符号化された、二次圧縮データが生成される。この、第2行の二次圧縮データの具体例は、図22(B)に示される。
PC1において上述のような二次圧縮処理が行なわれることで、図21に示されるような縦方向のグラデーション画像、すなわち圧縮方向に直交する方向のグラデーションが施された原稿画像は、連続数がカウントされるだけで、図21の右側、および図22(A),図22(B)に示されたような1つの符号に符号化され、データ量を大幅に抑えることができる。
図23は、一次圧縮後のブロックの連続の二次圧縮処理を説明する図であって、圧縮方向に一致する方向である、横方向に連続して変化する横方向のグラデーションが施された原稿画像を一次圧縮した後のブロックの二次圧縮処理の第1の例を説明する図である。二次圧縮処理の第1の例では、「2色後1色連続中」の処理ステータスを考慮しない二次圧縮処理が行なわれるとする。図23に示される例では、左端の第1番目のブロックは途中から第1の色が施され、第2番目のブロックから第4番目のブロックまでは第1の色のみが施され、第5番目のブロックは第1の色と第2の色とがこの順に横方向に並んで施され、第6番目のブロックから第9番目のブロックまでは第2の色のみが施されている。
図23に示されるブロックが第2圧縮部305に順に入力されると、第1番目のブロックおよび第5番目のブロックについては、各々、「2色連続中」の処理ステータスで連続数1がカウントされる。第2番目のブロックから第4番目のブロックまで、および第6番目のブロックから第9番目のブロックについては、各々、「1色連続中」の処理ステータスで連続数3,4がカウントされる。
詳しくは、第2番目のブロックが第2圧縮部305に入力された時点で、第1番目のブロックの二次圧縮データが出力される。第1番目のブロックの二次圧縮データは、一次圧縮データの色数モードを示す識別フラグが「2次2色モード」を示す識別フラグに置き換えられ、空きビットが削除され、2色ブロックの連続数が1とされ、1色ブロックの色指定および連続数が共に0とされた、1ブロック分の一次圧縮データに相当する、1つの符号に符号化されている。この、第1番目のブロックの二次圧縮データの具体例は、図24(A)に示される。
次に、第5番目のブロックが第2圧縮部305に入力された時点で、第2番目のブロックから第4番目のブロックまでの二次圧縮データが出力される。第2番目のブロックから第4番目のブロックまでの二次圧縮データは、一次圧縮データの色数モードを示す識別フラグが「2次1色モード」を示す識別フラグに置き換えられ、空きビットが削除され、連続数を3とした、1ブロック分の一次圧縮データに相当する、1つの符号に符号化されている。この、第2番目のブロックから第4番目のブロックまでの二次圧縮データの具体例は、図24(B)に示される。
次に、第6番目のブロックが第2圧縮部305に入力された時点で、第5番目のブロックの二次圧縮データが出力される。第5番目のブロックの二次圧縮データは、一次圧縮データの色数モードを示す識別フラグが「2次2色モード」を示す識別フラグに置き換えられ、空きビットが削除され、2色ブロックの連続数を1とされ、1色ブロックの色指定および連続数が共に0とされた、1ブロック分の一次圧縮データに相当する、1つの符号に符号化されている。この、第6番目のブロックの二次圧縮データの具体例は、図25(A)に示される。
次に、図示されない第10番目のブロックが第2圧縮部305に入力された時点、または第9番目のブロックが当該行の最終ブロックであることが判断された時点などで、第6番目のブロックから第9番目のブロックまでの二次圧縮データが出力される。第6番目のブロックから第9番目のブロックまでの二次圧縮データは、一次圧縮データの色数モードを示す識別フラグが「2次1色モード」を示す識別フラグに置き換えられ、空きビットが削除され、連続数を4とした、1ブロック分の一次圧縮データに相当する、1つの符号に符号化されている。この、第6番目のブロックから第9番目のブロックまでの二次圧縮データの具体例は、図25(B)に示される。
PC1において上述のような第1の例に示された二次圧縮処理が行なわれることで、図22に示されるような横方向のグラデーション画像、すなわち圧縮方向に一致する方向のグラデーションが施された原稿画像は、1色で構成されるブロックごとに連続数がカウントされ、図23の右側、および図24(A),図24(B),図25(A),図25(B)に示されたような1つの符号に符号化され、データ量を抑えることができる。しかしながら、横方向のグラデーションでは、横方向の、同じ1色で構成されるブロックの連続数は大きくはない。そのため、二次圧縮の圧縮効率は、図21,図22(A),図22(B)で説明された縦方向のグラデーションほど向上されない。特に、グラデーションがきつい場合、つまり、1色の幅が狭いグラデーションである場合、2色で構成されるブロックおよび1色で構成されるブロックが細かく繰り返されるために、その連続数が小さくなればなるほど、二次圧縮が進まない。そこで、そういった場合でも二次圧縮の効率を向上させるために、好ましくは、二次圧縮において「2色後1色連続中」の処理ステータスを考慮する。
図26は、一次圧縮後のブロックの連続の二次圧縮処理を説明する図であって、圧縮方向に一致する方向である、横方向に連続して変化する横方向のグラデーションが施された原稿画像を一次圧縮した後のブロックの二次圧縮処理の第2の例を説明する図である。二次圧縮の第1の例では、先述のように、「2色後1色連続中」の処理ステータスを考慮した二次圧縮が行なわれるとする。図26に示される例では、左端の第1番目のブロックは第1の色と第2の色とがこの順に横方向に並んで施され、第2番目のブロックから第4番目のブロックまでは第2の色のみが施され、第5番目のブロックは第2の色と第3の色とがこの順に横方向に並んで施され、第6番目のブロックから第9番目のブロックまでは第3の色のみが施されている。
図26に示されるブロックが第2圧縮部305に順に入力されると、第1番目のブロックおよび第5番目のブロックについては、各々、「2色連続中」の処理ステータスで連続数1がカウントされる。第2番目のブロックから第4番目のブロックまで、および第6番目のブロックから第9番目のブロックについては、各々、「2色後1色連続中」の処理ステータスで連続数3,4がカウントされる。先述のように、「2色連続中」の処理ステータスから「2色後1色連続中」の処理ステータスに移行する場合には、移行時に「2色連続中」の処理ステータスでのカウント結果に基づいて二次圧縮データが出力されず、「2色連続中」でのカウント結果と「2色後1色連続中」でのカウント結果とに基づいて二次圧縮データが出力される。また、いずれの処理ステータスでのカウント結果にも、「2次2色モード」を示す情報が付加される。
詳しくは、第5番目のブロックが第2圧縮部305に入力された時点で、第1番目のブロックから第4番目のブロックまでの二次圧縮データが出力される。第1番目のブロックから第4番目のブロックまでの二次圧縮データは、一次圧縮データの色数モードを示す識別フラグが「2次2色モード」を示す識別フラグに置き換えられ、空きビットが削除され、2色ブロックの連続数が1、1色ブロックの連続数が3とされた、1ブロック分の一次圧縮データに相当する、1つの符号に符号化されている。この、第1番目のブロックから第4番目のブロックまでの二次圧縮データの具体例は、図27(A)に示される。
次に、図示されない第10番目のブロックが第2圧縮部305に入力された時点、または第9番目のブロックが当該行の最終ブロックであることが判断された時点などで、第5番目のブロックから第9番目のブロックまでの二次圧縮データが出力される。第5番目のブロックから第9番目のブロックまでの二次圧縮データは、一次圧縮データの色数モードを示す識別フラグが「2次2色モード」を示す識別フラグに置き換えられ、空きビットが削除され、2色ブロックの連続数が1、1色ブロックの連続数が4とされた、1ブロック分の一次圧縮データに相当する、1つの符号に符号化されている。この、第5番目のブロックから第9番目のブロックまでの二次圧縮データの具体例は、図27(B)に示される。
PC1において上述のような「2色後1色連続中」の処理ステータスを考慮した二次圧縮処理が行なわれることで、図26に示されるような横方向のグラデーション画像、すなわち圧縮方向に一致する方向のグラデーションが施された原稿画像は、2色モードのブロックと、当該ブロックに連続する1色モードのブロックとがまとめて二次圧縮される。横方向のグラデーションでは、1色で構成されるブロックの1色は2色で構成されるブロックの2色のうちの1色と同一であることが多い。そこで、「2色後1色連続中」の処理ステータスを考慮した二次圧縮処理では、2色モードのブロックの後ろに続く1色モードのブロックが、当該2色モードのブロックの2色のうちのいずれの色と一致した色であるかを示す情報と当該1色モードのブロックの連続数とで表現される、1つの符号に符号化される。これにより、図23,図24(A),図24(B),図25(A),図25(B)で説明された、「2色後1色連続中」の処理ステータスを考慮しない二次圧縮よりも、横方向のグラデーションの二次圧縮の効率を大幅に向上させることができる。特に、第2圧縮部305がハードウェア構成によって実現される場合、定型サイズのデータを転送する際の効率を向上させるため、および/またはデータバスの通信量の制限などによって、出力データのサイズを32ビットや64ビットの倍数で定義する必要がある場合がある。PC1では、そのような場合に出力データ内に発生する空きビット部分を活用して二次圧縮データを出力することができる。
以上の例は、原稿画像データの圧縮処理を、図1に示されたPC1で行なうものとしている。しかしながら、同様にして、図2に示されたMFP2で行なってもよい。また、PC1またはMFP2の少なくとも一部の機能(たとえばパターン記憶部309など)が、他の装置に含まれて、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圧縮部、307 圧縮データ出力部、501 色数判断部、503 分割部、505 代表値算出部、507 第1圧縮データ生成部、701 ステータス記憶、703 ステータス更新部、705 判別部、707 前ブロック情報記憶部、709 カウント部、111 カウンタ、713 第2圧縮データ生成部。