A.第1実施例:
A−1:計算機200の構成
次に、本発明の実施の形態を実施例に基づき説明する。図1は、本発明の一実施例としての計算機200の構成を示すブロック図である。計算機200は、例えば、パーソナルコンピュータであり、CPU210と、DRAM等を含む揮発性記憶装置240と、フラッシュメモリやハードディスクドライブ等を含む不揮発性記憶装置290と、タッチパネルやキーボード等の操作部270と、外部装置と通信を行うためのインタフェースである通信部280と、を備えている。
計算機200は、通信部280を介して、外部装置(ここでは、スキャナ300と複合機400)に、通信可能に接続されている。スキャナ300は、光学的に対象物(例えば、紙の文書)を読み取ることによってスキャンデータを取得する画像読取装置である。複合機400は、光学的に対象物を読み取ることによってスキャンデータを取得する画像読取部(図示省略)を備えている。
揮発性記憶装置240には、CPU210が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域241が設けられている。不揮発性記憶装置290は、ドライバプログラム291と、後述する画像処理にて用いられる判断テーブル292と、を格納している。ドライバプログラム291は、例えば、CD−ROMやDVD−ROMなどに格納された形態で提供される。あるいは、ドライバプログラム291は、ネットワークを介して計算機200に接続されたサーバからダウンロードされる形態で提供される。
CPU210は、ドライバプログラム291を実行することにより、スキャナドライバ100として機能する。スキャナドライバ100は、対象画像データ(例えば、スキャンデータ)に対して後述する画像処理を実行して、圧縮PDFファイルを生成する画像処理機能を備えている。スキャナドライバ100は、当該画像処理機能を実現するための機能部として、取得部110と、特定部120と、低減処理部130と、生成部150と、を備えている。取得部110は、対象画像データを取得する。特定部120は、対象画像データを解析して領域特定を実行する。特定部120は、グレー領域判断処理を行う判断部125を備えている。低減処理部130は、対象画像データのデータサイズを低減するための低減処理を実行する。低減処理部130は、対象画像のうち、文字を表す文字領域に関する処理を行う第1処理部131と、対象画像に含まれる文字とは異なるグレー画像を表すグレー領域に関する処理を行う第2処理部132と、対象画像に含まれる文字とは異なるカラー画像を表すカラー領域に関する処理を行う第3処理部133と、を備えている。生成部150は、低減処理部130によって処理された画像データを用いて圧縮PDFファイルを生成する。これらの各機能部110〜150が実行する処理については後述する。
A−2:画像処理
図2は、画像処理のフローチャートである。ステップS100では、取得部110(図1)は、通信部280を介して、スキャンデータを、対象画像データとして取得し、取得したスキャンデータを、バッファ領域241(図1)に格納する。具体的には、取得部110は、スキャナ300または複合機400の画像読取部を制御して、スキャンデータを取得する。スキャンデータは、例えば、紙の文書(原稿とも呼ぶ)の読み取り結果を表している。また、スキャンデータは、複数の画素毎の色をRGB値で表すビットマップデータである。
図3は、画像領域特定処理(図2のステップS150〜S450の処理)の全体の流れを示す概略図である。図3(A)の対象画像SIは、対象画像データ(例えば、スキャンデータ)によって表される画像の一例である。対象画像SIでは、図示しない複数の画素が、第一方向D1と、第一方向D1と直交する第二方向D2と、に沿って、マトリクス状に配置されている。1個の画素の画素データ(すなわち、RGB値)は、例えば、赤(R)と緑(G)と青(B)との3個の色成分の階調値(以下、成分値とも呼ぶ)を含んでいる。本実施例では、各成分値の階調数は、256階調である。すなわち、対象画像データは、RGBの3個の成分にそれぞれ対応する3個の成分データを含んでいるということができる。成分データは、3個の成分値のうちの1個の成分値で構成される画像データである。
図3(A)の例では、対象画像SIは、背景Bgと、3個の非文字オブジェクトOb1〜Ob3と、4個の文字オブジェクトOb4〜Ob7と、を含んでいる。非文字オブジェクトは、例えば、写真オブジェクトや描画オブジェクトである。写真オブジェクトは、デジタルカメラによる撮影等によって得られる写真を表すオブジェクトである。描画オブジェクトは、イラスト、表、グラフ、線図、ベクトルグラフィックス、模様等の、描画を表すオブジェクトである。本実施例の3個の非文字オブジェクトのうち、2個の非文字オブジェクトOb1、Ob2は、グレー(無彩色)オブジェクトであり、1個の非文字オブジェクトOb3は、カラー(有彩色)オブジェクトである。また、本実施例の4個の文字オブジェクトOb4〜Ob7のうち、3個の文字オブジェクトOb4〜Ob6(E、F、Gの文字)は、互いに同じ色の文字であり、1個の文字オブジェクトOb7(Hの文字)は、他の3個の文字オブジェクトOb4〜Ob6とは、異なる色の文字であるとする。
ここで、グレーオブジェクトは、観察者が通常の観察距離で観察した場合に、グレーに見えるオブジェクトである。例えば、原稿が、CMYの3種類の印刷材を用いて印刷された原稿である場合を例に説明する。当該原稿を読み取って得られるスキャン画像において、通常の観察距離で観察した場合に無彩色に見えるオブジェクトを表す個々の画素は、有彩色を有しているが、当該無彩色に見えるオブジェクトは、本実施例におけるグレーオブジェクトに、含まれる。カラーオブジェクトは、観察者が通常の観察距離で観察した場合に、有彩色に見えるオブジェクトである。
ここで、対象画像SIのうち、文字オブジェクトを表す部分画像を文字画像とも呼び、写真オブジェクトを表す部分画像を写真画像とも呼び、描画オブジェクトを表す部分画像を描画画像とも呼ぶ。写真画像と描画画像とを総称して、非文字画像ともよぶ。また、グレーオブジェクトを表す部分画像をグレー画像とも呼び、カラーオブジェクトを表す部分画像をカラー画像とも呼ぶ。
図2のステップS150では、特定部120(図1)は、対象画像SI(スキャンデータ)を用いて、エッジ画像データを生成して、バッファ領域241に格納する。図3(B)は、エッジ画像データによって表されるエッジ画像EIの概略図である。
エッジ画像EIは、対象画像SI内の各画素位置におけるエッジ強度を表している。エッジ強度は、画像内の位置の変化に対する階調値の変化の大きさ(例えば、微分)、すなわち、互いに隣り合う複数個の画素間の階調値の差分の大きさを表している。図4は、本実施例におけるエッジ強度の算出式を示している。本実施例では、特定部120は、いわゆるソーベルオペレータ(Sobel operator)を用いて、RGBの3個の色成分毎に、エッジ強度Seを算出する。
図4の階調値P(x,y)は、対象画像SI内の特定の画素位置(x,y)の階調値を表している。位置xは、第一方向D1の画素位置を示し、位置yは、第二方向D2の画素位置を示している。図示するように、対象画像SI内の画素位置(x,y)におけるエッジ強度Se(x,y)は、その画素位置(x,y)を中心とし隣り合う3行3列の9つの画素を用いて算出される。図4の算出式の第1項および第2項は、9つの位置の画素の階調値に、対応する係数をそれぞれ乗じた値の和の絶対値である。第1項は、第一方向D1の階調値の微分(すなわち、横方向の微分)であり、第2項は、第二方向D2の階調値の微分(すなわち、縦方向の微分)である。
図3(B)のエッジ画像EIは、各画素位置における、R成分のエッジ強度とG成分のエッジ強度とB成分のエッジ強度とを平均して得られるエッジ強度(以下、参考エッジ強度と呼ぶ)を表している。図3(B)の一点破線Eg1〜Eg7は、参考エッジ強度が比較的大きい画素(エッジ画素とも呼ぶ)の位置を表している。図3(B)のエッジ画像EIは、対象画像SIのオブジェクトOb1〜Ob7にそれぞれ対応するエッジ画素Eg1〜Eg7を含んでいることが解る。
エッジ画像データを生成した後、続くステップS200では、特定部120は、複数個の画素を含むブロックBLをエッジ画像EI上に設定する。図3(B)の破線は、エッジ画像EI上にマトリクス状に配置されたブロックBLを示している。1個のブロックBLは、例えば、BLn行×BLn列(BLnは、2以上の整数)の画素PXで構成されたブロックである。BLnの値には、例えば、10〜50の範囲内の値を採用可能である。エッジ画像EIと対象画像SIとは、互いに同じサイズ(縦横の画素数が等しい)であるので、ブロックBLは、対象画像SI上に設定されていると言うこともできる。
ブロックBLが設定されると、続くステップS250では、特定部120は、ブロックBL単位で、ベタ領域と非ベタ領域とを特定する。ベタ領域は、領域が有するエッジ強度が所定の基準未満の領域であり、非ベタ領域とは、領域が有するエッジ強度が所定の基準以上の領域である。具体的には、特定部120は、ブロックBL毎に、平均エッジ強度(ERave、EGave、EBave)を算出する。平均エッジ強度(ERave、EGave、EBave)は、RGBの3個の色成分毎に、算出される。特定部120は、処理対象のブロックBLの平均エッジ強度と所定の基準とを比較して、処理対象のブロックBLを、ベタブロックおよび非ベタブロックのいずれかに分類する。ベタブロックは、平均エッジ強度が所定の基準より小さいブロックBLである。非ベタブロックは、平均エッジ強度が所定の基準以上であるブロックBLである。本実施例では、特定部120は、平均エッジ強度(ERave、EGave、EBave)を、色成分ごとに定められた基準値(ETr、ETg、ETb)と比較する。この結果、特定部120は、ERave<ETr、かつ、EGave<ETg、かつ、EBave<ETbが成立する場合には、処理対象のブロックBLをベタブロックに分類する。ERave≧ETr、および、EGave≧ETg、および、EBave≧ETbのうちの少なくとも一つが成立する場合には、特定部120は、処理対象のブロックBLを非ベタブロックに分類する。
図3(B)のエッジ画像EIにおいて、非ベタブロックには、ハッチングが付され、ベタブロックには、ハッチングが付されていない。全てのブロックBLを、ベタブロックと非ベタブロックとに分類された後、特定部120は、互いに隣り合う(連続する)1個以上の非ベタブロックに対応する領域を、1個の非ベタ領域として特定する。また、特定部120は、互いに隣り合う1個以上のベタブロックに対応する領域を、1個のベタ領域として特定する。このように、連続する1個以上の非ベタブロックは、1個の非ベタ領域に組み込まれるので、非ベタ領域は、通常は、ベタ領域に囲まれている。図3(B)の例では、対象画像SI(図3(A))の3個の非文字オブジェクトOb1〜Ob3にそれぞれ対応する3個の非ベタ領域L11〜L13が特定されている。また、対象画像SIの2個の文字オブジェクトOb4、Ob5に対応する1個の非ベタ領域L14と、2個の文字オブジェクトOb6、Ob7に対応する1個の非ベタ領域L15と、が特定されている。さらに、対象画像SIの背景Bgに対応する1個のベタ領域L10が特定されている。エッジ画像EIにおいて、ベタ領域と非ベタ領域が特定されることは、対象画像SIにおいて、同様にベタ領域と非ベタ領域が特定されること、と同義である。
続く、ステップS300では、特定部120は、対象画像SI内の各非ベタ領域を二値化するための基準値(以下、二値化基準値とも呼ぶ)を、対象画像SI内の非ベタ領域の周囲を囲むベタ領域内の画素値(言い換えると、色値)を用いて、非ベタ領域L11〜L15毎に決定する。本実施例では、二値化基準値は、RGBの成分毎に決定される。具体的には、非ベタ領域の周囲を囲むベタ領域の全ての画素についての、RGBの各成分値の平均値(Rr、Gr、Br)が、二値化基準値として採用される。図3(B)の例では、全ての非ベタ領域L11〜L15は、背景Bgに対応する1個のベタ領域L10に囲まれているので、全ての非ベタ領域L11〜L15の二値化基準値は、同じ値、すなわち、ベタ領域L10内の各成分値の平均値となる。
二値化基準値(Rr、Gr、Br)が決定されると、次のステップS350では、特定部120は、非ベタ領域L11〜L15毎に、二値画像データを生成して、バッファ領域241に格納する。本実施例では、特定部120は、二値化基準値(Rr、Gr、Br)を用いて算出される6個の閾値R1、R2、G1、G2、B1、B2を用いて二値化処理を実行する。
R成分の下限閾値R1=Rr−dV、R成分の上限閾値R2=Rr+dV
G成分の下限閾値G1=Gr−dV、G成分の上限閾値G2=Gr+dV
B成分の下限閾値B1=Br−dV、B成分の上限閾値B2=Br+dV
ここで、値dVは、予め決められた値である。これらの値R1、R2、G1、G2、B1、B2は、二値化基準値(Rr、Gr、Br)、すなわち、二値化対象のベタ領域を囲むベタ領域の平均色に比較的近い色の範囲、すなわち、背景の色に比較的近い色の範囲を、定めている。
特定部120は、これらの6個の閾値R1、R2、G1、G2、B1、B2を用いて、対象画像SIにおける非ベタ領域内の各画素を、1画素毎に、オブジェクト画素と、非オブジェクト画素とに分類することによって、非ベタ領域の二値画像データを生成する。例えば、生成された二値画像データにおいて、画素値「1」は、オブジェクト画素を示し、画素値「0」は、非オブジェクト画素を示す。
具体的には、非ベタ領域内の画素Pxiの3個の色成分(RGB)の階調値(Ri、Gi、Bi)が、以下の3つの条件を全て満たす場合に、特定部120は、画素Pxiを、非オブジェクト画素に分類し、以下の3つの条件のいずれかを満たさない場合に、画素Pxiをオブジェクト画素に分類する。
(第1条件)R1<Ri<R2
(第2条件)G1<Gi<G2
(第3条件)B1<Bi<B2
このように、ベタ領域内の画素の色を用いて算出された背景の色に比較的近い画素を、非オブジェクト画素に分類し、その他の画素をオブジェクト画素に分類することによって、オブジェクトを構成するオブジェクト画素を精度良く特定した二値画像データを生成することができる。
図3(C)には、生成された二値画像データによって表される二値画像BIが示されている。実際には、上述した非ベタ領域L11〜L15毎に、別々の二値画像データが生成されるが、図3(C)では、1個の二値画像BIで示している。
二値画像データを生成された後、続くステップS400では、特定部120は、は、二値画像データを利用して、オブジェクト領域と非オブジェクト領域とを特定して、特定された領域に識別子を付すラベリングを実行する。ラベリングの結果、例えば、各領域と、識別子とを、対応付けたラベルデータが生成されて、バッファ領域241に格納される。
具体的には、特定部120は、連続する1個以上のオブジェクト画素(すなわち、二値化後の階調値が「1」である画素)で構成される1個の領域を、1個のオブジェクト領域として特定する。また、特定部120は、連続する1個以上の非オブジェクト画素(すなわち、二値化後の階調値が「ゼロ」である画素)で構成される1個の領域を、1個の非オブジェクト領域として特定する。
図3(C)の例では、対象画像SIの6個のオブジェクトOb1〜Ob7(図3(A))にそれぞれ対応する7つのオブジェクト領域L21〜L27と、対象画像SIの背景Bgに対応する1個の非オブジェクト領域L20と、が特定される。特定部120は、特定した領域に、領域を識別する識別子を割り当てる。二値画像BIを構成する各画素は、対象画像SIを構成する各画素と対応しているので、二値画像BIにおいて、領域L20〜L27が特定されることは、図3(D)に示すように、対象画像SIにおいて、同様に、領域L30〜L37が特定されること、と同義である。以下では、基本的に各領域(すなわち、オブジェクト領域および非オブジェクト領域)を表す符号には、図3(D)に示す符号L30〜L37を用いる。また、単にオブジェクト領域に対応する画像と呼ぶときには、対象画像SIの対応する部分画像のことを指し、オブジェクト領域内の画素の画素値とは、対象画像SIの対応する画素の画素値、すなわち、対象画像データに対応する画素値(例えば、RGB値)のことを指すものとする。
ラベリングに続いて、ステップS450では、特定部120は、ラベリングされた複数個のオブジェクト領域のうち、統合条件を満たす複数個のオブジェクト領域を統合する統合処理を実行する。この統合処理は、互いに異なるオブジェクト領域として分離されている複数個の文字の領域を1個のオブジェクト領域として特定する統合するための処理である。
図5は、統合処理のフローチャートである。ステップS4500では、特定部120は、特定部120によって特定された複数個の領域(例えば、図3(D)の領域L30〜L37)の中から、背景領域を選択する。背景領域は、対象画像SI(図3(A))の縁部分に対応するベタ領域である。図3(D)の例では、非オブジェクト領域L30が、背景領域として選択される。この背景領域L30は、統合の対象から外される。
背景領域が選択された後、ステップS4505では、特定部120(図1)は、1個の未処理の領域を、処理対象領域Nとして選択する。次いで、ステップS4510では、特定部120は、処理対象領域Nの画素数が、所定の画素数基準以下であるか否かを判断する。画素数基準は、予め決められている。例えば、画素数基準としては、処理対象領域Nが他の領域と統合すべき文字を表す場合に、処理対象領域Nの画素数が取り得る最大値を若干上回る値を、採用可能である。画素数基準は、処理対象領域Nが1個の文字を表す場合の画素数が取り得る最大値を若干上回る値に、予め設定されている。処理対象領域Nの画素数が画素数基準を超える場合には(ステップS4510:NO)、特定部120は、ステップS4505に戻る、この結果、選択された処理対象領域Nは、統合の対象から外れる。この場合には、現行の処理対象領域Nは、典型的な文字よりも大きいので、文字以外のオブジェクトを表している可能性が高い。この画素数基準を適切に設定されることによって、図3(C)の例では、非文字オブジェクトを表す3個のオブジェクト領域L31〜L33は、統合の対象から外れ、文字オブジェクトを表す4個のオブジェクト領域L34〜L37は、統合の対象とされる。なお、本実施例では、処理対象領域Nの画素数は、対象画像SIにおける、処理対象領域Nに外接する最小矩形に含まれる画素数である。
図6は、2個の領域の統合を示す概略図である。図中には、文字「E」を表す処理対象領域Lnが示されている。図中の矩形LnRは、処理対象領域Lnに外接する最小矩形である。この矩形LnR内に含まれる画素数が、処理対象領域Lnの画素数である。ここで、「領域に外接する最小矩形」は、以下のような矩形である。すなわち、矩形は、第一方向D1と平行な2本の辺と、第二方向D2と平行な2本の辺と、で構成されている。そして、矩形の上辺が、領域の上端と接し、矩形の下辺が、領域の下端と接し、矩形の左辺が、領域の左端と接し、矩形の右辺が、領域の右端と接している。ここで、上辺および上端は、第二方向D2の反対方向側の辺および端であり、下辺および下端は、第二方向D2側の辺および端であり、左辺および左端は、第一方向D1の反対方向側の辺および端であり、右辺および右端は、第一方向D1側の辺および端である。なお、特定部120は、処理対象領域Nの画素のみをカウントすることによって、処理対象領域Nの画素数を算出してもよい。すなわち、特定部120は、外接矩形内の複数個の画素のうちの処理対象領域Nに含まれない画素をカウントせずに、画素数を算出してもよい。
図5のS4510で、処理対象領域Nの画素数が、所定の画素数基準以下である場合(ステップS4510:YES)、ステップS4515では、特定部120は、統合の候補領域Mのリストを初期化する。特定部120は、ステップS4505で処理対象領域Nとして選択されたことがない領域のリストを、生成する。例えば、図3(D)の例では、初めて実行されるステップS4505で領域L31が処理対象領域Nとして選択された場合には、残りの6個の領域L32〜L37が、リストに挙げられる。次回のステップS4505で領域L32が処理対象領域Nとして選択された場合には、残りの5個の領域L33〜L37が、リストに挙げられる。なお、他の領域に統合済の領域は、リストから除かれる。
次いで、ステップS4520では、特定部120は、生成したリストの中から、1個の未選択の領域を、候補領域Mとして選択する。特定部120は、続く3つのステップS4525、S4530、S4535で、候補領域Mを処理対象領域Nに統合するか否かを判断する。各ステップS4525、S4530、S4535では、以下の条件が判断される。
(ステップS4525:第1条件F1)候補領域Mの画素数≦画素数基準
(ステップS4530:第2条件F2)第1距離Dis1≦距離基準、かつ、第2距離Dis2≦距離基準
(ステップS4535:第3条件F3)階調差TD≦階調差基準
候補領域Mが、これら全ての条件F1、F2、F3を満たす場合(ステップS4525:YES、かつ、S4530:YES、かつ、S4535:YES)に、図5のステップS4540で、特定部120は、候補領域Mを処理対象領域Nに統合する。
ステップS4525の第1条件F1は、ステップS4510の条件と同様の条件である。候補領域Mが第1条件F1を満たさない場合には(ステップS4525:NO)、候補領域Mは、文字とは異なる種類のオブジェクトを表している可能性が高い。この場合には、特定部120は、ステップS4540をスキップすることによって、候補領域Mを処理対象領域Nに統合しない。
ステップS4530の第2条件F2は、候補領域Mが処理対象領域Nに比較的近い場合に満たされる条件である。図6は、第2条件F2の第1距離Dis1と第2距離Dis2との概略を示している。図中には、処理対象領域Lnと候補領域Lmとが示されている。対象矩形LnRは、処理対象領域Lnに外接する最小矩形であり、候補矩形LmRは、候補領域Lmに外接する最小矩形である。
第1距離Dis1は、図6(A)に示すように、対象矩形LnRと候補矩形LmRとの間の、第一方向D1に沿った最短距離であり、例えば、画素数で表される。図6(B)に示すように、対象矩形LnRの第一方向D1の位置の範囲(左端PnL〜右端PnR)が、候補矩形LmRの第一方向D1の位置の範囲(左端PmL〜右端PmR)の少なくとも一部と重なる場合には、第1距離Dis1は、ゼロである。
第2距離Dis2は、図6(B)に示すように、対象矩形LnRと候補矩形LmRとの間の、第二方向D2に沿った最短距離であり、例えば、画素数で表される。図6(A)に示すように、対象矩形LnRの第二方向D2の位置の範囲(すなわち、上端PnT〜下端PnBの範囲)が、候補矩形LmRの第二方向D2の位置の範囲(すなわち、上端PmT〜下端PmBの範囲)の少なくとも一部と重なる場合には、第2距離Dis2は、ゼロである。
第2条件F2の距離基準は、予め決められている。例えば、距離基準としては、統合すべき2個の文字の間の距離がとり得る最大値を若干上回る値を、採用可能である。候補領域Mが第2条件F2を満たす場合には、候補領域Mと処理対象領域Nとが、同じ文字列に含まれる文字を表している可能性が高い。候補領域Mが第2条件F2を満たさない場合には(ステップS4530:NO)、候補領域Mは、処理対象領域Nとは関連しないオブジェクトを表している可能性が高い。この場合には、特定部120は、ステップS4540をスキップすることによって、候補領域Mを処理対象領域Nに統合しない。
ステップS4535の第3条件F3は、第3条件F3は、候補領域Mの色が処理対象領域Nと比較的近い場合に満たされる。図7は、第3条件F3の階調差TDの算出式を示している。本実施例では、階調差TDは、RGB色空間における、処理対象領域Nの平均色(すなわち、Rav_n、Gav_n、Bav_n)と、候補領域Mの平均色(すなわち、Rav_m、Gav_m、Bav_m)との間のユークリッド距離の二乗である。第3条件F3の階調差基準は、予め決められている。例えば、階調差基準としては、実質的に同じ色であると、通常の観察者に認識される2つの色の色差の上限値が採用可能である。例えば、2つの色が、2個の文字の色としてそれぞれ用いられた場合に、当該2個の文字を見た通常の観察者が、当該2個の文字の色は互いに同じであると認識する場合に、当該2つの色は、実質的に同じ色であると、判断できる。ここで、第3条件F3を条件としているのは、後述するように、文字画像を圧縮する際に、実質的に異なる色で表現された複数個の文字は、別々に処理する必要があるからである。候補領域Mが第3条件F3を満たさない場合には(ステップS4530:NO)、特定部120は、ステップS4540をスキップすることによって、候補領域Mを処理対象領域Nに統合しない。
図5のステップS4540で、候補領域Mを処理対象領域Nに統合した後、または、ステップS4525、ステップS4530、ステップS4535のいずれかのステップでNOと判断した後、ステップS4545では、特定部120は、リストの全ての候補領域Mの処理が終了したか否かを判断する。未処理の候補領域Mが残っている場合には(ステップS4545:NO)、特定部120は、ステップS4520に戻り、未処理の候補領域Mに対して、ステップS4520〜S4540の処理を実行する。リストの全ての候補領域Mの処理が終了した場合には(ステップS4545:YES)、特定部120は、ステップS4550に処理を移行する。
ステップS4550では、特定部120は、最後にステップS4515が実行された後に、処理対象領域Nが拡張されたか否か、すなわち、処理対象領域Nに統合された候補領域Mの総数が1以上であるか否か、を判断する。処理対象領域Nが拡張された場合には(ステップS4550:YES)、特定部120は、拡張済の処理対象領域Nを利用して、再び、ステップS4515〜S4545の処理を実行する。従って、特定部120は、3個以上の領域を統合し得る。
図8は、4個の領域L34〜L37の統合を示す概略図である。ここでは、統合処理が、図8(A)〜図8(C)の順に、進行する。
図8(A)では、「E」の文字を表す領域L34が、処理対象領域Nである(図5:S4505)。領域L34の隣に配置された「F」の文字を表す領域L35は、上記条件F1〜F3を満たすので、特定部120(図1)は、領域L35を領域L34に統合する(ステップS4540)。また、「G」の文字を表す領域L36と「H」の文字を表す領域L37とは、領域L34からの距離が遠いので、第2条件F2を満たさない。したがって、2つの領域L36、L37は、領域L34に統合されない。
上述したように、領域L35が領域L34に統合された場合、図5のステップS4550では、特定部120は、処理対象領域N(例えば、領域L34)が拡張された、と判断する(S4550:YES)。続くステップS4515では、特定部120は、領域L35を含む拡張済の領域L34B(図8(B))のためのリストを生成する。生成されるリストは、領域L36と領域L37とを含んでいる。
図8(B)では、拡張済の領域L34Bが、処理対象領域Nである。領域L34Bの隣に配置された領域L36は、上記条件F1〜F3を満たすので、特定部120は、領域L36を、領域L34Bに統合する(ステップS4540)。条件F1〜F3の判断には、拡張済の領域L34B(すなわち、「E」の文字と「F」の文字とを表す領域)に外接する最小矩形が利用される。領域L37は、領域L34Bからの距離が遠いので、領域L34Bに統合されない。
上述したように、領域L36が拡張済みの領域L34Bに統合された場合、図5のステップS4550では、特定部120(図1)は、処理対象領域N(この場合には、領域L34B)が拡張された、と判断する(S4550:YES)。続くステップS4515では、特定部120は、領域L36を含む拡張済の領域L34C(図8(C))のためのリストを生成する。生成されるリストは、領域L37を含んでいる。
図8(C)では、拡張済の領域L34Cが、処理対象領域である。領域L34Cの隣に配置された領域L37は、領域L34Cとの距離が比較的近いので、上記条件F1を満たすが、領域L34Cと実質的に色が異なるので、条件F3を満たさない。したがって、特定部120は、領域L37を、領域L34Cには、統合しない。したがって、統合処理後には、図3(D)および図8(A)の3個の文字オブジェクト領域L34〜L36が統合された1個の文字オブジェクト領域L34Cと、文字オブジェクト領域L37と、の2個の文字オブジェクト領域が特定されることになる(図3(D)、図8(C))。
図5のステップS4550にて、処理対象領域Nの拡張がされていない場合には(ステップS4550:NO)、ステップS4555で、特定部120は、全ての領域の処理が完了したか否かを判断する。未処理の領域が残っている場合には(ステップS4555:NO)、特定部120は、ステップS4505に戻る。全ての領域の処理が完了した場合には(ステップS4555:YES)、特定部120は、ステップS4560で、領域の識別子を更新する。具体的には、特定部120は、図2のS400において生成されて、バッファ領域241に格納されたラベルデータを更新する。ラベルデータの更新が終了すると、特定部120は、統合処理を終了する。
統合処理の後、図2のステップS500では、判断部125(図1)は、統合処理後に複数個の領域毎に、画像の種類、すなわち、領域内のオブジェクトの種類が「文字」であるか否かを判断するオブジェクト属性判断処理を実行する。
図9は、判断テーブル292の一例を示す図である。判断部125は、判断テーブル292を参照して、オブジェクト属性判断処理を実行する。判断部125は、色の分布幅Wと色数Cと画素密度Sとに応じて種類を識別する。判断部125は、特定されたオブジェクト領域ごとに、図10に示すようなヒストグラムを生成して、分布幅Wと色数Cと画素密度Sとを算出する。生成されたヒストグラムおよび分布幅Wと色数Cと画素密度Sは、バッファ領域241に格納され、例えば、オブジェクト判断処理後に消去される。
図10は、分布幅Wと色数Cとの説明図である。図中には、輝度のヒストグラムが示されている。この輝度ヒストグラムは、処理対象のオブジェクト領域(以下、対象領域と呼ぶ)内の画素値から算出される輝度のヒストグラムである。本実施例では、各画素の輝度は、各画素の階調値(赤Rと緑Gと青Bの3個の色成分の階調値)から、算出される。算出式としては、例えば、RGBの各階調値から、YCbCr色空間のY成分(輝度成分)を算出する算出式が、利用される。
色数Cは、0〜255までの256個の輝度値のうち、頻度値(すなわち、画素数)が所定の閾値Th以上である輝度値の数である。図10のヒストグラムは、閾値Thを越える3個のピークP1、P2、P3を含んでいる。図10の例では、色数Cは、第1ピークP1の閾値Thを越える部分の幅C1と、第2ピークP2の閾値Thを越える部分の幅C2と、第3ピークP3の閾値Thを越える部分の幅C3と、の和に相当する。一般的に、文字は少ない色で表現されることが多いので、対象領域が文字オブジェクトを表す場合には、色数Cは比較的少なくなる。対象領域が非文字オブジェクトを表す場合には、色数Cは、比較的多くなる。例えば、写真オブジェクトは、撮影された被写体の種々の色を表すので、対象領域が写真オブジェクトを表す場合には、色数Cが比較的多くなる。
分布幅Wは、頻度値(すなわち、画素数)が所定の閾値Th以上である輝度値の最低値と最高値との間の差(幅)である。色数Cの説明と同じ理由により、対象領域が文字オブジェクトを表す場合には、分布幅Wが比較的小さくなり、対象領域が非文字オブジェクトを表す場合には、分布幅Wが比較的大きくなる。
画素密度Sは、対象領域に外接する最小矩形内の総画素数に対するオブジェクト画素の画素数(単位面積当たりの画素数)である。一般的に、文字は、背景上に、背景とは異なる色の細線で、書かれている。対象領域が文字オブジェクトを表す場合には、画素密度Sが比較的小さくなる。対象領域が非文字オブジェクトを表す場合には、画素密度Sが比較的大きくなる。例えば、写真オブジェクトは、外接する最小矩形の大部分を占める可能性が高いので、対象領域が写真オブジェクトを表す場合には、画素密度Sが比較的大きくなる。
図9の判断テーブル292は、上記説明を考慮して、作成されている。具体的には、判断部125は、所定の判断条件が満たされる場合には、対象領域は、文字オブジェクトを表す文字オブジェクト領域であると判断する。判断部125は、所定の判断条件が満たされない場合には、対象領域は、非文字オブジェクトを表す非文字オブジェクト領域であると判断する。
所定の判断条件は、判断テーブル292から解るように、以下の2つの条件のいずれかが満たされることである。
1)分布幅Wが分布幅閾値Wth以上、かつ、色数Cが色数閾値Cth未満、かつ、画素密度Sが画素密度閾値Sth未満であること
2)分布幅Wが分布幅閾値Wth未満、かつ、画素密度Sが画素密度閾値Sth未満であること
図3(D)の例では、オブジェクト領域L31、L32、L33は、非文字オブジェクトを表す領域(以下、非文字オブジェクト領域とも呼ぶ)であると判断され、オブジェクト領域L34C、L37は、それぞれ文字オブジェクトを表す領域(以下、文字オブジェクト領域とも呼ぶ)であると判断される。
オブジェクト属性判断処理に続いて、ステップS550では、判断部125は、グレー判断処理を実行する。
図11は、グレー判断処理のフローチャートである。
ステップS551では、判断部125は、ステップS500で非文字オブジェクト領域であると判断された領域を選択する。図3(D)の例では、3個の非文字オブジェクト領域L31〜L33が順次に選択される。
ステップS552では、選択された非文字オブジェクト領域内の画像を平滑化する平滑化処理を実行する。具体的には、対象画像データのうち、選択された非文字オブジェクト領域に対応する部分画像データに対して、平滑化フィルタFL(図11)を適用する。なお、平滑化フィルタFLは、処理対象の部分画像データに含まれる3個の成分データ(すなわち、R成分データ、G成分データ、B成分データ)のそれぞれに対して適用される。すなわち、判断部125は、処理対象の成分データが表す画像内の注目画素に、平滑化フィルタFLの中心位置FCが重なるように平滑化フィルタFLを配置する。判断部125は、注目画素を中心とした平滑化フィルタFL(例えば、縦5画素×横5画素)内の複数個の成分値の平均値を算出する。判断部125は、注目画素の成分値を、算出された平均値に変更する。判断部125は、各成分データ内のすべての画素を注目画素に設定して、同様の処理を実行する。平滑化処理後の部分画像データは、バッファ領域241に格納される。
平滑化処理の意義について説明する。上述したように、原稿を読み取って得られるスキャンデータによって表される画像において、通常の観察距離で観察した場合に無彩色に見える画像の個々の画素が、有彩色を有している場合がある。例えば、原稿が、CMYの3種類の印刷材を用いて印刷された原稿である場合である。個々の画素が有彩色を有している場合であっても、通常の観察距離で観察した場合にグレーに見える画像(すなわち、領域)は、比較的狭い領域(例えば、通常の観察距離で識別可能な最小の大きさの領域)内の個々の画素の平均色は、無彩色であると考えられる。このために、平滑化処理を行うことによって、無彩色に見える領域内の個々の画素が有彩色を有している場合に、これらの画素の色を無彩色に近づけることができる。したがって、後述するグレー領域であるか否かの判断精度を向上することができる。
平滑化処理に続くステップS553では、判断部125は、機器独立色空間であるCIELAB色空間(以下、単にLaB色空間とも呼ぶ)における*a値と、*b値の分布を表すヒストグラムを作成して、バッファ領域241に格納する。このヒストグラムは、例えば、*a値および*b値毎に、*a値を有する画素数、および、*b値を有する画素数を、カウントしたヒストグラムである。
図12は、ヒストグラムの作成のフローチャートである。
ステップS5531では、判断部125は、対象画像SIにおいて、処理対象の非文字オブジェクト領域内の画素を処理対象画素として選択する。ステップS5532では、判断部125は、処理対象画素に対応する二値画像BI(図3(C))内の画素のエッジ強度EPを算出する。エッジ強度EPは、例えば、図4に示す算出式を用いて算出される。
エッジ強度EPが算出されると、続くステップS5533では、判断部125は、エッジ強度EPは、エッジ基準値Eth以下であるか否かを判断する。エッジ強度EPがエッジ基準値Eth以下である場合には(ステップS5533:YES)、判断部125は、処理対象画素の画素値を用いて、ヒストグラムを更新する。すなわち、判断部125は、処理対象画素の画素値(RGB値)をLab値に変換して、当該Lab値に応じて、上述したヒストグラムを更新する。
エッジ強度EPがエッジ基準値Ethより大きい場合には(ステップS5533:NO)、判断部125は、ステップS5534をスキップする。すなわち、処理対象画素のエッジ強度EPが基準値Etより大きい場合には、処理対象画素は、ヒストグラムの作成には使用されない。
図13は、非文字オブジェクト領域の外縁部の一例を示す図である。図3(C)に示すように、二値画像BIでは、オブジェクト領域の内部の画素値は、全て「1」である(具体的には、図3(C)の黒で表されている)ので、エッジ強度EPが基準値Etより大きい画素は、オブジェクト領域の外縁部分(非オブジェクト領域と接する部分)に現れ、オブジェクト領域のうち、外縁部分を除いた領域には、現れない。したがって、図13に示すように、各非文字オブジェクト領域L31〜L33の各外縁部OE1〜OE3(具体的には、図13においてハッチングされた領域)の画素が、ヒストグラムの作成から除外される。すなわち、非文字オブジェクト領域L31〜L33の各外縁部OE1〜OE3の画素は、後述するステップS554〜S556の処理にて実行される、グレー領域であるか否かの判断には用いられない。
続くステップS5535では、判断部125は、処理対象の非文字オブジェクト領域内の全ての画素を選択したか否かを判断する。判断部125は、全ての画素を選択した場合には(ステップS5535:YES)、ヒストグラムの作成を終了する。判断部125は、未選択の画素がある場合には(ステップS5535:NO)、ステップS5531に戻って、未選択の画素を新たに選択して、上述したステップS5532〜S5535の処理を繰り返す。
ヒストグラムが作成されると、図11のステップS554では、判断部125は、処理対象の非文字オブジェクト領域内の全画素に対する有彩色の画素が占める割合PN(すなわち、有彩色比率)が、グレー判断基準値Nth未満であるか否かを判断する。
図14は、グレー領域とカラー領域の判断について説明する図である。
本実施例では、判断部125は、Lab色空間における無彩色軸(すなわち、*a=*b=0の軸)との距離Rが、所定の基準距離Rth(図14)未満である色は、無彩色であると判断し、Lab色空間における無彩色軸(すなわち、*a=*b=0の軸)との距離Rが、所定の基準距離Rth以上である色は、有彩色であると判断する。ここで、距離Rは、Lab色空間におけるユークリッド距離(具体的には、R2=(*a)2+(*b)2の式で表される。)である。基準距離Rthは、観察者が無彩色であると認識する色と、有彩色であると認識する色と、を分離できる値であって、経験的に定められる。判断部125は、ヒストグラムを参照して、有彩色比率PNを算出して、グレー判断基準値Nth未満であるか否かを判断する。
有彩色比率PNがグレー判断基準値Nth未満である場合には(ステップS554:YES)、判断部125は、処理対象の非文字オブジェクト領域は、グレー領域であると判断する(ステップS555)。有彩色比率PNがグレー判断基準値Nth以上である場合には(ステップS554:NO)、判断部125は、処理対象の非文字オブジェクト領域は、カラー領域であると判断する(ステップS556)。図14(A)は、グレー領域であると判断される非文字オブジェクト領域内の画像の色分布の例を示し、図14(B)は、カラー領域であると判断される非文字オブジェクト領域内の画像の色分布の例を示している。図14(A)の例では、ほとんどの画素の色が、無彩色軸から基準距離Rth内の範囲(無彩色範囲とも呼ぶ)に分布していることが解る。一方、図14(B)の例では、比較的高い割合の画素の色が、無彩色軸から基準距離Rth以上離れた範囲(有彩色範囲とも呼ぶ)に分布していることが解る。なお、グレー判断基準値Nthは、一例として、0.3以下であることが好ましく、0.15以下であることがさらに好ましい。判断部125は、処理対象の非文字オブジェクト領域が、グレー領域であるか、カラー領域であるかを判断すると、平滑化処理後の部分画像データ、および、ヒストグラムデータを、バッファ領域241から消去する。
続くステップS557では、判断部125は、全ての非文字オブジェクト領域を選択したか否かを判断する。判断部125は、全ての非文字オブジェクト領域を選択した場合には(ステップS557:YES)、グレー判定処理を終了する。判断部125は、未選択の非文字オブジェクト領域がある場合には(ステップS557:NO)、ステップS551に戻って、未選択の非文字オブジェクト領域を新たに選択して、上述したステップS552〜S557の処理を繰り返す。
ここで、非文字オブジェクト領域L31〜L33の各外縁部OE1〜OE3の画素を、グレー画像か否かの判断に用いない理由を説明する。これらの外縁部OE1〜OE3は、オブジェクト領域と、非オブジェクト領域(背景領域)との境界に位置する。これらの境界部分は、オブジェクト領域の本来の色とは異なる色を有する場合がある。一般的なスキャナは、イメージセンサの原稿に対する位置を副走査方向に移動させながら、イメージセンサによって原稿からの光を受光して、スキャンデータを生成する。このとき、境界部分の画素データは、原稿のオブジェクト領域からの光と、背景領域からの光との両方に基づいて生成され得る。したがって、本実施例のように、対象画像データがスキャンデータである場合には、境界部分は、オブジェクト領域の本来の色と、背景領域の色との中間色になる場合がある。本実施例では、各外縁部OE1〜OE3の画素を、グレー領域か否かの判断に用いないことによって、オブジェクト領域の本来の色が、無彩色であるか有彩色であるかを精度良く判断することができる。
図11のグレー判断処理によって、図3(D)の例では、2個の非文字オブジェクト領域L31、L32は、グレー領域であると判断され、1個の非文字オブジェクト領域L33は、カラー領域であると判断される。
グレー判断処理が終了すると、図2のステップS600では、低減処理部130は、対象画像データのデータサイズを低減するための低減処理を実行する。
図15は、第1実施例の低減処理のフローチャートである。
低減処理が開始されると、先ず、ステップS605では、処理対象の1個のオブジェクト領域(文字オブジェクト領域または非文字オブジェクト領域)が選択される。図3(D)の例では、5個のオブジェクト領域L31〜L33、L34C、L37が、1個ずつ順次に選択される。
処理対象のオブジェクト領域が選択されると、次のステップS610では、低減処理部130は、処理対象のオブジェクト領域が、文字オブジェクト領域であるか否かを判断する。低減処理部130は、処理対象のオブジェクト領域が、文字オブジェクト領域である場合には(ステップS610:YES)には、低減処理部130の第1処理部131は、処理対象の文字オブジェクト領域内の文字画像の色を表す文字色値TCを決定する(ステップS620)。第1処理部131は、例えば、処理対象の文字オブジェクト領域内の全ての画素についての、RGBの各成分値の平均値(Rave1、Gave1、Bave1)を、文字色値TCとして算出する。第1処理部131は、文字色値TCとして他の値を算出しても良く、例えば、文字オブジェクト領域内の画素のうち、文字オブジェクト領域の外縁部(背景との境界部)を除く画素のみを用いて、文字色値TCを算出しても良い。
文字色値TCが決定されると、続くステップS625では、低減処理部130の第3処理部133は、バッファ領域241に格納された対象画像データにおいて、処理対象の文字オブジェクト領域内の画素の画素値を背景色値BCに変更する。すなわち、第3処理部133は、対象画像SIから処理対象の文字オブジェクト領域の文字画像を消去する。背景色値BCは、例えば、処理対象の文字オブジェクト領域を囲む非オブジェクト領域(背景領域)内の全ての画素についての、RGBの各成分値の平均値(Rave2、Gave2、Bave2)が採用される。図3(D)の例では、文字オブジェクト領域L34C、L37の背景色値BCは、非オブジェクト領域L30内の画素の画素値を用いて算出される。背景色値BCは、他の値が採用されても良く、例えば、第3処理部133は、処理対象の文字オブジェクト領域を囲む非オブジェクト領域内の複数個の画素のうち、文字オブジェクト領域に比較的近い複数個の画素のみを用いて、背景色値BCを算出しても良い。
続くステップS630では、第1処理部131は、処理対象の文字オブジェクト領域に対応する二値画像データを取得して、当該二値画像データを、FLATE圧縮方式により圧縮する。本ステップにおいて、処理対象の文字オブジェクト領域内の文字を表す圧縮済みの文字画像データが生成される。生成された圧縮済みの文字画像データは、後述する圧縮PDFファイルの生成まで(図2:S700)まで、バッファ領域241に格納される。文字オブジェクト領域に対応する二値画像データは、文字オブジェクトに外接する最小矩形に対応する二値画像を表す。例えば、図3(D)の文字オブジェクト領域L34Cに対応する二値画像データによって表される二値画像は、図3(C)における二値画像BI4である。また、図3(D)の文字オブジェクト領域L37に対応する二値画像データによって表される二値画像は、図3(C)における二値画像BI7である。
FLATE圧縮方式は、ZIPファイルの作成などに使用されている可逆圧縮方式であり、比較的階調数の少ない画像の圧縮に適している。FLATE圧縮方式を用いれば、二値画像データを、高い圧縮率で、かつ、解像度を落とすことなく圧縮することができる。文字は、色の再現性よりも読みやすさが優先されると考えられるので、階調性の維持よりも解像度の維持が優先される。このために、本実施例では、圧縮済みの文字画像データを、二値画像データをFLATE圧縮方式で圧縮することによって生成している。FLATE圧縮方式により圧縮済みの文字画像データが生成されると、低減処理部130は、ステップS650に処理を移行する。
上述した図6のステップS610にて、処理対象のオブジェクト領域が、文字オブジェクト領域でない場合には(ステップS610:NO)には、低減処理部130は、処理対象のオブジェクト領域が、グレー領域であるか否かを判断する(ステップS615)。グレー領域は、上述したとおり、非文字オブジェクト領域のうち、グレー判断処理(図2:ステップS550)にて、グレー領域であると判断された領域である。処理対象のオブジェクト領域が、グレー領域でない場合には(ステップS615:NO)、すなわち、処理対象のオブジェクト領域がカラー領域である場合には、低減処理部130は、ステップS650に処理を移行する。
処理対象のオブジェクト領域が、グレー領域である場合には(ステップS615:YES)、低減処理部130の第2処理部132は、処理対象のグレー領域内の画像を表す1個の成分データを取得する(ステップS635)。本実施例では、第2処理部132は、対象画像データのうち、処理対象のグレー領域に対応する部分画像データに含まれる3個の成分データ(すなわち、R成分データ、G成分データ、B成分データ)のうちの1個の成分データを選択する。無彩色(すなわち、グレー)は、3個の成分値が互いに等しいRGB値で表されるから、グレー領域に対応する部分画像データに含まれる3個の成分データは、互いにほぼ等しいと考えられる。したがって、本ステップでは、3個の成分データのうちいずれの成分データが選択されても良い。
続くステップS640では、第3処理部133は、バッファ領域241に格納された対象画像データにおいて、処理対象のグレー領域内の画素の画素値を背景色値BCに変更する。すなわち、第3処理部133は、対象画像SIから処理対象のグレー領域内の画像を消去する。背景色値BCは、上述したステップS625において、文字オブジェクト領域内の文字を消去する際に使用した背景色値BCと同様に、処理対象のグレー領域を囲む非オブジェクト領域(すなわち、背景領域)内の画素の画素値を用いて算出される。
次のステップS645では、第2処理部132は、ステップS635で取得された1個の成分データを、グレー成分データ上に配置する。具体的には、グレー成分データは、対象画像SIと同じ大きさの領域を有する1個の成分データであり、初期状態では、全ての画素値が、白(すなわち、最大輝度値)を表す値、例えば、「255」にされている。先ず、初期状態のグレー成分データがバッファ領域241に準備され、本ステップでは、第2処理部132は、このグレー成分データのうち、処理対象のグレー領域に対応する部分データを、ステップS635で取得された1個の成分データに置換する。
次のステップS647では、第2処理部132は、処理対象のグレー領域に対応する二値画像データを取得して、グレーマスクデータ上に配置する。具体的には、グレーマスクデータは、対象画像SIと同じ大きさの領域、すなわち、グレー成分データと同じ大きさの領域を有する二値画像データであり、初期状態では、全ての画素値が「0」にされている。先ず、初期状態のグレー成分データがバッファ領域241に準備され、本ステップでは、第2処理部132は、このグレーマスクデータのうち、処理対象のグレー領域に対応する部分データを、グレー領域に対応する二値画像データに置換する。グレー領域に対応する二値画像データは、グレー領域(すなわち、非文字オブジェクト)に外接する最小矩形に対応する二値画像を表す。例えば、図3(D)のグレー領域(すなわち、非文字オブジェクト領域)L31に対応する二値画像データによって表される二値画像は、図3(C)における二値画像BI1である。また、図3(D)のグレー領域(すなわち、非文字オブジェクト領域)L32に対応する二値画像データによって表される二値画像は、図3(C)における二値画像BI2である。処理対象のグレー領域に対応する二値画像データを取得して、グレーマスクデータ上に配置すると、低減処理部130は、ステップS650に処理を移行する。
ステップS650では、低減処理部130は、全てのオブジェクト領域を選択したか否かを判断する。低減処理部130は、全てのオブジェクト領域を選択した場合には(ステップS650:YES)、ステップS655に処理を進める。低減処理部130は、未選択のオブジェクト領域がある場合には(ステップS650:NO)、ステップS605に戻って、未選択のオブジェクト領域を新たに選択して、上述したステップS610〜S650の処理を繰り返す。
図16は、第1実施例の低減処理で生成される画像データについて説明する図である。
対象画像SIに対して上記の各処理を終え、ステップS655に移行した時点で、1個のカラー成分データ(図16(A))と、2個の圧縮済みの文字画像データ(図16(B))と、1個のグレー成分データ(図16(C))と、1個のグレーマスクデータ(図16(D))と、が生成され、バッファ領域241に、それぞれ格納されている。
カラー成分データは、低減処理部130の第3処理部133による処理(図15:ステップS625、S640)によって、生成される。ステップS625、S640の処理から解るように、カラー成分データは、対象画像データ内の複数個の画素値のうち、文字オブジェクト領域内の各画素の画素値と、グレー領域内の各画素の画素値とを、背景色値BCに置換して得られる画像データである。カラー成分データは、対象画像データのうち、カラー領域に対応する部分画像データを、含んでいる。したがって、図16(A)に示すように、カラー成分データによって表されるカラー成分画像CIは、対象画像SIの非オブジェクト領域L30(図3(D))に対応する背景Bgと、カラー領域L33(図3(D))に対応するカラーオブジェクトOb3と、を表す部分画像を含んでいる。また、カラー成分データは、対象画像データと同じように、3個の色成分に対応する3個の成分データ(すなわち、R成分データ、G成分データ、B成分データ)を含んでいる。
圧縮済みの文字画像データは、低減処理部130の第1処理部131による処理(すなわち、図15:ステップS630)によって、生成される。ステップS630の処理から解るように、圧縮済みの文字画像データは、対象画像データのうち、文字オブジェクト領域に対応する部分画像データを二値化して得られる二値画像データをFLAT圧縮方式で圧縮したデータである。図16(B)の例では、対象画像SIの文字オブジェクト領域L34C(図3(D))に対応する3個の文字オブジェクトOb4〜Ob6を表す二値画像TI1と、領域L37(図3(D))に対応する1個の文字オブジェクトOb7を表す二値画像TI2と、をそれぞれ表す2個の圧縮済みの文字画像データが生成されている。
グレー成分データは、低減処理部130の第2処理部132による処理(図15:ステップS635、S645)によって、生成される。ステップS635、S645の処理から解るように、グレー成分データは、対象画像SIに含まれる1個以上のグレー領域をそれぞれ表す部分成分データを含んでいる。したがって、図16(C)に示すように、グレー成分データによって表されるグレー成分画像GIは、対象画像SI内の2個のグレー領域L31、L32にそれぞれ対応する2個のグレーオブジェクトOb1、Ob2、を表す2個のグレー部分画像PG1、PG2を含んでいる。また、グレー成分データは、対象画像データとは異なり、1個の成分値から構成された1個の成分データである。
グレーマスクデータは、低減処理部130の第2処理部132による処理(図15:ステップS647)によって、生成される。ステップS647の処理から解るように、グレーマスクデータによって表されるグレーマスク画像MIは、対応するグレー成分画像GI(図16(C))内の2個のグレー部分画像PG1、PG2にそれぞれ対応する2個のマスク部分画像PM1、PM2と、を含んでいる。2個のマスク部分画像PM1、PM2は、対応する2個のグレー部分画像PG1、PG2内のオブジェクト画素の位置を示している。すなわち、グレーマスクデータは、グレー成分画像GI内のオブジェクト画素の位置を表す値「1」と、非オブジェクト画素の位置を表す値「0」と、から構成される二値データである。言い換えれば、グレーマスク画像MIは、グレー成分画像GIが、カラー成分画像CI上に重ねて表示される場合に、表示すべき画素(すなわち、画素値「1」の画素)と、表示しない画素(すなわち、画素値「0」の画素)と、を規定した二値画像である。
ステップS655では、先ず、低減処理部130の第2処理部132は、グレー成分データをJPEG圧縮方式で圧縮する。JPEG圧縮方式は、デジタルカメラで撮影することによって生成された画像データの圧縮などに使用されている不可逆圧縮方式であり、写真のように、比較的階調性が高い画像、すなわち、色数Cが多く、階調の変化が緩やかな画像の圧縮に適している。一方、JPEG圧縮方式は、急激に階調が変化するエッジを大きく劣化させるので、文字のように、読みやすさや見栄えの観点からエッジの再現性が重要な画像の圧縮には不向きである。本ステップにて圧縮されたグレー成分データを、圧縮済みのグレー画像データとも呼ぶ。生成された圧縮済みのグレー画像データは、バッファ領域241に格納され、圧縮前のグレー成分データは消去される。
圧縮済みのグレー画像データが生成されると、次のステップS660では、第2処理部132は、グレーマスクデータをFLATE圧縮方式で圧縮して、圧縮済みのグレーマスクデータを生成する。FLATE圧縮方式は、上述したように、二値データのような階調数が比較的少ない画像の圧縮に適している。生成された圧縮済みのグレーマスクデータは、バッファ領域241に格納され、圧縮前のグレーマスクデータは消去される。
圧縮済みのグレーマスクデータが生成されると、次のステップS665では、低減処理部130の第3処理部133は、カラー成分データをJPEG圧縮方式で圧縮する。カラー成分データは、上述したように、3個の成分データを含んでいるため、3個の成分データがそれぞれ圧縮されることになる。本ステップにて圧縮されたカラー成分データを、圧縮済みのカラー画像データとも呼ぶ。生成された圧縮済みのカラー画像データは、バッファ領域241に格納され、圧縮前のカラー成分データは消去される。圧縮済みのカラー画像データが生成されると、低減処理部130は、低減処理を終了する。
低減処理が終了されると、図2のステップS700では、生成部150は、圧縮済みの文字画像データと、圧縮済みのグレー画像データと、圧縮済みのカラー画像データと、圧縮済みのグレーマスクデータと、を用いて圧縮PDFファイルを生成する。
具体的には、生成部150は、圧縮済みのカラー画像データを、最下層のレイヤーとして表示させる画像データとして、PDFファイルに格納する。
また、生成部150は、圧縮済みの文字画像データを、圧縮済みのカラー画像データより上位層のレイヤーとして表示する画像データとして、PDFファイルに格納する。圧縮済みの文字画像データは、文字色値TCおよび座標値CDと関連付けて、PDFファイルに格納される。文字色値TCは、文字の色を表すRGB値であり、図15のステップS620で算出された値である。座標値CDは、圧縮済みのカラー画像データによって表されるカラー成分画像CIに対して、圧縮済みの文字画像データによって表される二値画像TIが配置されるべき位置を表す情報である。座標値CDは、例えば、二値画像TIに外接する最小矩形の左上の角の画素の座標値(X、Y)で表される。図16(B)の例では、3個の文字オブジェクトOb4〜Ob6を表す二値画像TI1を表す文字画像データには、文字色値TC1(R1、G1、B1)と、座標値CD1(X1、Y1)と、が関連付けられている。また、1個の文字オブジェクトOb7を表す二値画像TI2には、文字色値TC2(R2、G2、B2)と、座標値CD2(X2、Y2)と、が関連付けられている。
また、生成部150は、圧縮済みのグレー画像データを、圧縮済みのカラー画像データより上位層のレイヤーとして表示する画像データとして、PDFファイルに格納する。圧縮済みのグレー画像データは、圧縮済みのグレーマスクデータと関連付けて、PDFファイルに格納される。
圧縮PDFファイルが生成されると、例えば、スキャナドライバ100は、生成されたPDFファイルを、例えば、不揮発性記憶装置290に格納し、バッファ領域241に格納された圧縮済みの文字画像データと、圧縮済みのグレー画像データと、圧縮済みのカラー画像データと、圧縮済みのグレーマスクデータとをそれぞれ消去した後、画像処理を終了する。
PDFファイルは、複数個の異なる形式の画像データを1個のファイルに格納可能であり、当該ファイルを用いて画像を表示する際には、格納された複数個の画像データを重畳して1個の画像として再現可能なように規格が定められている。ステップS700において、生成部150は、PDF規格に従って、各圧縮済みの画像データ(図16)をPDFファイルに格納するので、本実施例にて作成された圧縮PDFファイルは、PDFファイルの閲覧ソフトを用いて表示すると、対象画像SI(図3(A))を、再現することができる。
以上説明した第1実施例によれば、第1処理部131は、対象画像データのうち、文字領域に対応する部分画像データを用いて、圧縮済みの文字画像データを生成する。また、第2処理部132は、対象画像データのうち、グレー領域に対応する部分画像データを用いて、1種類の成分値で構成された圧縮済みのグレー画像データを生成する。第2処理部132は、1種類の成分値で構成されたグレー成分データを取得する処理(図15:ステップS635、S645)と、グレー成分データを圧縮する処理(図15:ステップS655)と、を行うことで圧縮済みのグレー画像データを生成する。第3処理部133は、対象画像データのうち、カラー領域に対応する部分画像データを用いて、複数種類の成分値で構成された圧縮済みのカラー画像データを生成する。第3処理部133は、複数個の成分データを含むカラー成分データを取得する処理(図15:ステップS625、S640)と、カラー成分データを圧縮する処理(図15:ステップS665)と、を行うことで圧縮済みのカラー画像データを生成する。第1処理部131と、第2処理部132と、第3処理部133と、が行う処理は、互いに異なる。この結果、文字、文字とは異なるグレー画像、文字とは異なるカラー画像とにそれぞれ適した処理を実行するので、対象画像データを効果的に圧縮して、圧縮済みの対象画像データを生成することができる。
具体的には、階調性よりエッジの再現性が重要であると考えられる文字領域については、二値画像データをFLATE圧縮方式で圧縮して、圧縮済みの文字画像データを生成する。この結果、圧縮率を高く維持しつつ、かつ、文字の読みやすさを損なわない態様で、文字領域を表す画像を保存することができる。
さらに、エッジの再現性より階調性が重要であると考えられる写真領域を含み得る非文字領域のうち、グレー領域については、1個の成分で構成されたグレー成分データを、JPEG圧縮方式で圧縮して、圧縮済みのグレー画像データを生成する。この結果、1個の成分で構成されたグレー成分データを用いることで、圧縮率を高めることができるとともに、多階調の圧縮に適したJPEG圧縮方式を用いることで、グレーの写真などを含み得るグレー領域の画質(階調性など)を損なわない態様で、グレー領域を表す画像を保存することができる。
さらに、エッジの再現性より階調性が重要であると考えられる写真領域を含み得る非文字領域のうち、カラー領域については、複数種類の色成分(例えば、RGBの3種類)で構成されたカラー成分データを、JPEG圧縮方式で圧縮して、圧縮済みのカラー画像データを生成する。この結果、カラー写真などを含み得るカラー領域の画質(色相や階調性)を損なわない態様で、カラー領域を表す画像を保存することができる。
以上の結果、文字領域と、グレー領域と、カラー領域と、を含む対象画像SIを表す対象画像データを、全体として高い画質を維持しつつ、圧縮率を向上できる形式に変換して保存することができる。
さらに、第2処理部132は、グレー領域に対応する部分画像データに含まれる3個の成分データ(すなわち、R成分データ、G成分データ、B成分データ)のうちの1個の成分データを選択することによって、グレー成分データを生成する(図15:ステップS635)。この結果、グレー成分データを簡単に取得することができる。
さらに、圧縮済みのグレー画像データは、図16(C)に示すグレー成分画像GIを表す画像データであり、図16(C)から解るように対象画像SIの全体に対応する領域を表す1個の画像データである。また、圧縮済みのカラー画像データは、図16(A)に示すカラー成分画像CIを表す画像データであり、図16(A)から解るように、対象画像SIの全体に対応する領域を表す1個の画像データである。この結果、例えば、比較的多数のグレー領域が存在する場合であっても、圧縮済みの画像データの数が過度に増加することを抑制できる。
さらに、判断部125は、判断対象のオブジェクト領域に含まれる複数個の画素のうちの有彩色を表す画素の割合PNがグレー判断基準値Nth以上である場合には、判断対象のオブジェクト領域を、カラー領域であると判断し、有彩色を表す画素の割合PNがグレー判断基準値Nth未満である場合には、判断対象の領域を、グレー領域であると判断する(図11)。したがって、判断部125は、グレー領域であるか、カラー領域であるか、を適切に判断することができる。
さらに、判断部125は、処理対象のオブジェクト領域に含まれる色数C(言い換えれば、色の種類の数)に応じて、文字領域と、グレー領域およびカラー領域を含む非文字領域と、を特定する(図9、図10)。この結果、特定部120は、色数Cで表される領域の階調性の違いを利用して、文字領域と、非文字領域とを、精度良く特定することができる。
さらに、上記実施例では、特定部120は、ラベリングや統合処理(図5)を行うことにより、文字領域を文字の色毎に分離して特定する。そして、文字領域ごとに圧縮された二値データを作成して、各二値データに文字色値TCを関連付けている(図16)。したがって、文字色を再現しつつ、高い圧縮率で圧縮された圧縮PDFファイルを作成することができる。
B.第2実施例
図17は、第2実施例の低減処理のフローチャートである。図17において、第1実施例の低減処理(図15)と同一のステップには、図15と同一の符号を付し、第1実施例の低減処理と異なるステップには、符号の末尾に「A」を付した。
第2実施例の低減処理では、第1実施例におけるステップS645、S647(図15)に代えて、図17に示すステップS645A、S647Aを実行し、第1実施例におけるステップS655、S660を実行しない。
図17のステップS645Aでは、第2処理部132は、ステップS635にて取得されて、バッファ領域241に格納されている処理対象のグレー領域の画像を表す1個の成分データの階調数(例えば、255階調)を低減して、グレー領域の画像を表すグレー成分データを生成する。本実施例では、第2処理部132は、グレー領域の画像を表す1個の成分データを二値データに変換する(階調数を2階調に低減する)。
続くステップS647Aでは、第2処理部132は、ステップS645Aで生成された2階調のグレー成分データを、比較的階調数の少ない画像の圧縮に適したFLATE圧縮方式により圧縮して、圧縮済みのグレー成分データを生成する。本ステップにおいて、処理対象のグレー領域の画像を表す圧縮済みのグレー画像データが生成される。生成された圧縮済みのグレー画像データは、バッファ領域241に格納され、圧縮前の二値化された成分データは、消去される。
以上の説明から解るように、本実施例では、グレー領域毎に、圧縮済みのグレー画像データが生成される。従って、複数個のグレー領域が存在する場合には、複数個の圧縮済みのグレー画像データが生成されて、バッファ領域241に格納される。
第2実施例の低減処理では、グレー領域毎に圧縮済みのグレー画像データが生成されるので、第1実施例のステップS655の処理(1個のグレー成分データを圧縮する処理)は、存在しない。また、第2実施例の低減処理では、圧縮済みのグレー画像データは二値データであるので、カラー成分画像CIと重畳された場合に、表示すべき画素(すなわち、画素値「1」の画素)と、表示しない画素(すなわち、画素値「0」の画素)と、の区別は明らかである。このために、第2実施例の低減処理では、グレーマスクデータ(図16(D))が生成されない。したがって、第2実施例の低減処理では、第1実施例のステップS660の処理は、存在しない。
図18は、第2実施例の低減処理で生成される画像データについて説明する図である。
第2実施例の低減処理では、図3(A)の対象画像SIを表す対象画像データを用いる場合には、図18に示すように、1個の圧縮済みのカラー成分データ(図18(A))と、2個の圧縮済みの文字画像データ(図18(B))と、2個の圧縮済みのグレー成分データ(図18(C))と、が生成されて、バッファ領域241に、それぞれ格納される。
1個の圧縮済みのカラー成分データ(図18(A))と、2個の圧縮済みの文字画像データ(図18(B))とは、第1実施例の同名のデータ(図16(A)、図16(B))と同じである。
圧縮済みのグレー成分データは、グレー領域、すなわち、グレーと判断された非文字オブジェクト領域毎に生成され、グレー領域に外接する最小矩形に対応するサイズを有する二値画像を表すデータである。したがって、図18(C)の例では、2個のグレーオブジェクトOb1、Ob2をそれぞれ表す2個の二値画像GI1、GI2をそれぞれ表す2個の圧縮済みのグレー画像データが生成される。図2のステップS700にて、二値画像GI1を表す圧縮済みのグレー画像データは、座標値CD3(X3、Y3)と関連付けて、PDFファイルに格納され、二値画像GI2を表す圧縮済みのグレー画像データは、座標値CD4(X4、Y4)と関連付けて、PDFファイルに格納される。
以上説明した第2実施例によれば、第1実施例と同様に、文字領域と、グレー領域と、カラー領域と、を含む対象画像SIを表す対象画像データを、全体として高い画質を維持しつつ、圧縮率を向上できる形式に変換して保存することができる。
さらに、第2実施例によれば、第2処理部132は、グレー成分データに含まれる成分値の諧調数を減らす処理を実行する(図17:ステップS645A)。この結果、さらに、グレー成分データのデータ量を低減することができる。
さらに、グレー成分データの階調数を2階調に減らしたことに応じて、グレー成分データを圧縮する圧縮方式に、比較的少ない階調に適したFLATE圧縮方式が採用されている(図17:ステップS647A)。この結果、グレー成分データの階調数に応じて、より圧縮率の向上を図ることができる。
また、圧縮済みのカラー画像データは、対象画像SIの全体に対応する領域(すなわち、カラー成分画像CI(図18(A)))を表す1個の画像データである。そして、圧縮済みのグレー画像データは、対象画像SIの一部分に対応する領域を表す1個以上のグレー成分画像(図18(C)の例では、2個のグレー成分画像GI1、GI2)を表す1個以上の部分画像データである。1個以上の圧縮済みのグレー画像データは、対象画像SI内の位置を表す位置情報(図18の例では、座標値CD1、CD2)と対応付けられている。この結果、例えば、グレー領域が比較的小さい場合に、一部分の領域のグレー画像データを保持すれば良いので、効率的である。
C.変形例:
(1)上記第1および第2実施例では、圧縮済みの文字画像データの生成には、FLATE圧縮方式が採用されているが、これに限られない。例えば、二値画像データの圧縮に適した他の圧縮方式が採用されても良く、例えば、可逆圧縮方式であるMMR(Modified Modified Read)方式(CCITT-G4方式とも呼ばれる。)が採用されても良い。
(2)上記第1実施例では、圧縮済みのグレー画像データの生成および圧縮済みのカラー画像データの生成には、共にJPEG圧縮方式が採用されているが、これに限られない。例えば、GIF(Graphic Interchange Format)形式や、TIFF(Tagged Image File Format)形式の画像ファイルの圧縮に用いられるLZW圧縮などが採用されても良い。
(3)上記第2実施例のステップS645A(図17)では、第2処理部132は、処理対象のグレー領域の画像を表す1個の成分データの階調数(例えば、255階調(8ビット))を2階調(1ビット)に低減しているが、これに限られない。これに代えて、第2処理部132は、グレー領域の画像を表す1個の成分データの階調数を、4階調(2ビット)、8階調(3ビット)、16階調(4ビット)、32階調(5ビット)、64階調(6ビット)、128階調(7ビット)のいずれかに低減しても良い。
(4)スキャナドライバ100は、第1実施例における画像処理の一部の処理と、第2実施例における画像処理の一部の処理と、を組合わせた画像処理を実行しても良い。具体的には、スキャナドライバ100は、第1実施例の低減処理(図15)のステップS635にて取得されたグレー領域内の画像を表す1個の成分データに対して、第2実施例の低減処理(図17)のステップS645Aの階調数を低減する処理を実行しても良い。この場合には、階調数が低減された1個のグレー成分データであって、対象画像SIの全体に対応する領域を表す1個のグレー成分データが生成される。逆に、スキャナドライバ100は、第2実施例の低減処理(図7)において、ステップS645Aの階調数を低減する処理は、省略されても良い。この場合には、階調数が低減されていない、例えば、256階調の成分値で構成された1個以上のグレー成分データであって、対象画像SIの一部分に対応する領域を表す1個以上のグレー成分データが生成される。
(5)上記第1実施例では、ステップS635(図15)において、第2処理部132は、対象画像データのうち、処理対象のグレー領域に対応する部分画像データに含まれる3個の成分データ(すなわち、R成分データ、G成分データ、B成分データ)のうちの1個の成分データを選択することによって、グレー領域を表す1個の成分データを取得している。これに代えて、第2処理部132は、処理対象のグレー領域内の画像を表す1個の成分データを、当該グレー領域に対応する部分画像データに含まれる3個の成分データ(すなわち、R成分データ、G成分データ、B成分データ)を用いて生成しても良い。具体的には、第2処理部132は、当該グレー領域内の複数個の画素のそれぞれの輝度値Yを、以下の式によって算出しても良い。
Y=R×0.29891+G×0.58661+B×0.11448
上記の式のR、G、Bは、3個の成分データの対応する画素の画素値、すなわち、R成分値、G成分値、B成分値である。第2処理部132は、算出された輝度値を各画素の1個の成分値とする1個の成分データを、当該グレー領域内の画像を表す1個の成分データとしても良い。
(6)図2:ステップS150におけるエッジ強度Seの算出や、図12のステップS5532におけるエッジ強度EPの算出の算出式としては、図5のソーベルオペレータを用いた算出法に限らず、他の任意の方法を採用可能である。例えば、プレウィットオペレータ(Prewitt operator)、または、ロバーツクロスオペレータ(Roberts Cross operator)など種々のエッジ検出用オペレータを利用可能である。また、エッジ強度は、RGBの各色成分に限らず、他の色成分(例えば、輝度)の階調値を用いて算出されてもよい。
(7)上記実施例では、判断部125は、各画素の色が有彩色であるか否かの判断を、Lab色空間を用いて行っている。すなわち、判断部125は、当該画素の画素値(言い換えれば、色値)をLab色空間の表色値に変換して、当該表色値とLab色空間の無彩色軸との距離Rが、基準距離Rth未満か否かによって、当該画素の色が有彩色であるか否か判断している。これに限らず、一般的には、判断部125は、無彩色軸を有する任意の色空間、例えば、RGB色空間、Lab色空間、HSV色空間、YCrCb色空間において、無彩色軸に比較的近い色を表す画素を、無彩色を有する画素であると判断し、無彩色軸から比較的遠い色を表す画素を、有彩色を有する画素であると判断すれば良い。
(8)計算機200のスキャナドライバ100による画像処理機能は、光学的に対象物を読み取ることによって対象物を表す画像データを生成する画像読取部を含む画像処理装置によって実現されてもよい(例えば、複合機400やスキャナ300や図示しないデジタルカメラ)。この場合には、画像処理装置は、自身の画像読取部によって生成された画像データを用いて、画像処理(例えば、図2の処理)を行えばよい。
一般的には、画像処理(例えば、図2の処理)を実現する画像処理装置は、計算機200に限らず、種々の装置であってよい。例えば、プリンタ、デジタルカメラ、スキャナなどの画像関連機器の内部のコンピュータ、汎用のパーソナルコンピュータ、ネットワークに接続されたサーバ等を採用可能である。また、ネットワークを介して互いに通信可能な複数個のコンピュータが、画像処理に要する機能を一部ずつ分担して、全体として、画像処理の機能を提供してもよい。この場合、複数個のコンピュータの全体が、特許請求の範囲における画像処理装置に対応する。
(9)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。