A.実施例:
次に、本発明の実施の形態を実施例に基づき説明する。図1は、本発明の一実施例としての計算機200の構成を示すブロック図である。計算機200は、例えば、パーソナルコンピュータであり、CPU210と、DRAM等を含む揮発性記憶装置240と、フラッシュメモリやハードディスクドライブ等を含む不揮発性記憶装置290と、タッチパネルやキーボード等の操作部270と、外部装置と通信を行うためのインタフェースである通信部280と、を備えている。
計算機200は、通信部280を介して、外部装置(ここでは、スキャナ300と複合機400)に、通信可能に接続されている。スキャナ300は、光学的に対象物(例えば、紙の文書)を読み取ることによってスキャンデータを取得する画像読取装置である。複合機400は、光学的に対象物を読み取ることによってスキャンデータを取得する画像読取部を備えている。
揮発性記憶装置240には、CPU210が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域241が設けられている。不揮発性記憶装置290は、ドライバプログラム291を格納している。
CPU210は、ドライバプログラム291を実行することにより、スキャナドライバ100として機能する。スキャナドライバ100は、画像データ取得部110と、抽出部120と、特定部130と、第1生成部140と、第2生成部150と、領域判定部160と、種類判定部170と、画像調整部180と、を含んでいる。後述するように、スキャナドライバ100は、対象画像データとしてのスキャンデータを利用して、画像処理を実行する。画像処理の結果、対象画像データによって表される対象画像は、複数の領域に分離され、領域毎に領域内のオブジェクトの種類(属性とも呼ぶ)が判定される。
図2と図3とは、画像処理のフローチャートである。図3は、図2の続きの処理を示している。ステップS100では、画像データ取得部110(図1)は、通信部280を介して、スキャンデータを、対象画像データとして、取得する。具体的には、画像データ取得部110は、スキャナ300または複合機400の画像読取部を制御して、スキャンデータを取得する。スキャンデータは、例えば、紙の文書の読み取り結果を表している。また、スキャンデータは、複数の画素毎の色を表すビットマップデータである。
図4は、画像処理の全体の流れを示す概略図である。図4(A)、(B)、(D)、(F)、(G)に示す画像TI、LI1、LI2、LI3、RIは、画像処理の後述する5つの段階における処理結果の例を示している。画像処理は、図4(A)〜図4(G)の順に、進行する。図4(A)の対象画像TIは、スキャンデータによって表される画像の一例である。対象画像TIでは、図示しない複数の画素が、第一方向D1と、第一方向D1と直交する第二方向D2と、に沿って、マトリクス状に配置されている。1つの画素の画素データは、例えば、赤Rと緑Gと青Bとの3つの色成分の階調値(例えば、256階調)を表している。
図4(A)の例では、対象画像TIは、背景画像Bg1と、描画画像Ob1と、写真画像Ob2と、文字画像Ob3と、を表している。ここで、文字画像は、1以上の文字を表す画像である。写真画像は、デジタルカメラによる撮影や動画から静止画を抜き出す等によって得られた画像である。描画画像は、イラスト、表、グラフ、線図、ベクトルグラフィックス、模様等の、描画によって表された画像である。以下、文字画像を、文字オブジェクトとも呼び、写真画像を、写真オブジェクトとも呼び、描画画像を、描画オブジェクトとも呼ぶ。また、文字画像と写真画像と描画画像とを総称して、オブジェクトとも呼ぶ。
対象画像TI内のオブジェクトOb1〜Ob3は、スキャンデータを生成するためのスキャン対象(例えば、紙の文書や原稿等)に記録されていたものである。図4(A)の例では、第1オブジェクトOb1は、枠画像Ob1Fと、枠画像Ob1Fに囲まれた棒グラフと、を表している。枠画像Ob1Fの内部には、背景画像Bg1と同じ色の背景部分Ob1Bと、棒グラフを表す部分と、が配置されている。第2オブジェクトOb2は、写真を表している。第3オブジェクトOb3は、3つの文字(「A」、「B」、「C」)を含む文字列を表している。これらのオブジェクトOb1〜Ob3は、背景画像Bg1上に配置されている。
図2のステップS105〜S115では、抽出部120(図1)は、対象画像TIを複数の領域に分離する。具体的には、ステップS105で、抽出部120は、対象画像TI(スキャンデータ)を解析することによって、エッジ画像データを生成する。図5は、抽出部120による処理の概略図である。図5(A)は、対象画像TIを示し、図5(B)は、エッジ画像データの特徴の概略を表すエッジ画像EIを示している。
エッジ画像EIは、対象画像TI内の各画素位置におけるエッジ強度を表している。エッジ強度は、画像内の位置の変化(隣り合う複数の画素)に対する階調値の変化の大きさを表している。図6は、本実施例におけるエッジ強度の算出式を示している。本実施例では、抽出部120は、いわゆるソーベルオペレータ(Sobel operator)を用いて、赤Rと緑Gと青Bとの3つの色成分毎に、エッジ強度Seを算出する。
図6中の階調値P(x,y)は、対象画像TI内の特定の画素位置(x,y)の階調値を表している。第一方向位置xは、第一方向D1の画素位置を示し、第二方向位置yは、第二方向D2の画素位置を示している。図示するように、対象画像TI内の画素位置(x,y)におけるエッジ強度Se(x,y)は、その画素位置(x,y)を中心とし隣り合う3行3列の9つの画素を用いて算出される。図6の算出式の第1項および第2項は、9つの位置の画素の階調値に、対応する係数をそれぞれ乗じた値の和の絶対値である。第1項は、第一方向D1の階調値の変化の大きさを示し、第2項は、第二方向D2の階調値の変化の大きさを示している。
図5(B)のエッジ画像EIは、各画素位置における、赤Rのエッジ強度と緑Gのエッジ強度と青Bのエッジ強度とを平均化して得られるエッジ強度(参考エッジ強度と呼ぶ)を表している。図中では、参考エッジ強度が小さい画素が白で示され、参考エッジ強度が大きい画素が黒で示されている。エッジ画像EIは、対象画像TIのオブジェクトOb1〜Ob3によって構成されるエッジEgA1〜EgA3を、表している。なお、エッジ画像EI(参考エッジ強度)は、説明の便宜上、示されており、画像処理には要しない。
図2のステップS105で、エッジ画像データを生成した後、ステップS110、S115では、抽出部120(図1)は、複数の画素を含む第1ブロックBL毎に、均一領域(ベタ領域とも呼ぶ)と不均一領域(非ベタ領域とも呼ぶ)とを特定する。図5(B)に示すように、第1ブロックBLは、エッジ画像EI(すなわち、対象画像TI)上にマトリクス状に配置されている。1つの第1ブロックBLは、例えば、BLn行×BLn列(BLnは、2以上の整数)の画素PXのブロックである。BLnの値としては、例えば、10〜50の範囲内の値を採用可能である。
ベタ領域とは、領域が有するエッジ強度が所定の基準未満の領域であり、非ベタ領域とは、領域が有するエッジ強度が所定の基準以上の領域である。抽出部120は、ステップS110で、第1ブロックBL毎に、平均エッジ強度(ERave、EGave、EBave)を算出する。平均エッジ強度(ERave、EGave、EBave)は、赤Rと緑Gと青Bとの3つの色成分毎に、算出される。抽出部120は、処理対象の第1ブロックBLの平均エッジ強度と所定の基準とを比較して、処理対象の第1ブロックBLを、ベタブロックおよび非ベタブロックのいずれかに分類する。ベタブロックは、平均エッジ強度が所定の基準より小さいブロックである。非ベタブロックは、平均エッジ強度が所定の基準以上であるブロックである。本実施例では、抽出部120は、平均エッジ強度(ERave、EGave、EBave)を、色成分ごとに定められた基準値(ETr、ETg、ETb)と比較する。この結果、抽出部120は、ERave<ETr、かつ、EGave<ETg、かつ、EBave<ETbが成立する場合には、処理対象の第1ブロックBLをベタブロックに分類する。ERave≧ETr、および、EGave≧ETg、および、EBave≧ETbのうちの少なくとも一つが成立する場合には、抽出部120は、処理対象の第1ブロックBLを非ベタブロックに分類する。
図5(C)の画像SIは、分類の結果を示している。ハッチングが付された第1ブロックBLが、非ベタブロックであり、ハッチングのない第1ブロックBLが、ベタブロックである。図示するように、連続する(隣り合う)複数の非ベタブロックで構成される3つの領域NA1〜NA3が、それぞれ形成されている。これらの領域NA1〜NA3の間は、ベタブロックによって隔てられている。第1領域NA1は、図5(A)の第1オブジェクトOb1に対応する。図示するように、第1領域NA1の内部には、連続する(隣り合う)複数のベタブロックで構成される2つの領域SA1、SA2が形成されている。第1領域SA1は、枠画像Ob1Fの内部の背景部分Ob1B(図5(A))に対応している。第2領域SA2は、棒グラフの1つの棒Ob1S(図5(A))に対応している。棒Ob1Sは、背景画像Bg1とは色が異なる、おおよそ均一な色の領域である。残りの2つの領域NA2、NA3は、2つのオブジェクトOb2、Ob3に、それぞれ対応する。他のベタブロックは、背景画像Bg1に対応する。このように、一般的には、非ベタブロックは、各画素の階調値が一様ではないオブジェクトを表し、ベタブロックは、背景、または、各画素の階調値がおおよそ一様なオブジェクトを表している。各画素の階調値がおおよそ一様なオブジェクトは、背景の一種であり得る。
図2のステップS110で、ベタブロックと非ベタブロックとを特定した後、ステップS115では、抽出部120(図1)は、対象画像TIにおけるベタ領域と非ベタ領域との特定(ラベリング)を行う。具体的には、抽出部120は、連続する1以上の非ベタブロックで構成される連続な1つの領域に対応する領域を、1つの非ベタ領域として特定し、連続する1以上のベタブロックで構成される連続な1つの領域に対応する領域を、1つのベタ領域として特定する。このように、連続する1以上の非ベタブロックは、1つの非ベタ領域に組み込まれるので、非ベタ領域は、通常は、ベタ領域に囲まれている。
図5(D)の第1ラベル画像LI1は、領域の特定結果を示している。図5(C)の領域NA1〜NA3に対応して、3つの非ベタ領域L101、L104、L105が、特定されている。また、第101領域L101内には、2つのベタ領域L102、L103が、特定されている。残りの領域も、ベタ領域L100である。抽出部120(図1)は、領域L100〜L105に、領域を識別するラベル(例えば、0〜5)を割り当てる。例えば、抽出部120は、対象画像TIの各画素に、どの領域に含まれるのかを表すラベル(識別子)を割り当てる。なお、第1ラベル画像LI1は、図4(B)の第1ラベル画像LI1と同じである。
以上のように、抽出部120は、対象画像TIから、ベタ領域と非ベタ領域とを抽出する。なお、領域に割り当てられた番号(例えば、「第101領域L101」の番号「101」)は、単に複数の領域を区別するための番号に過ぎず、説明の便宜上、領域の総数とは無関係に割り当てられた番号である。後述する他の領域の番号も、同様に、説明の便宜上、割り当てられた番号であり、領域の総数とは無関係に割り当てられている。
図2のステップS115で、対象画像TIにおけるベタ領域と非ベタ領域との特定(ラベリング)を行った後の、ステップS120〜S145では、特定部130(図1)は、非ベタ領域と、その非ベタ領域に囲まれたベタ領域と、の組み合わせを、特定する。1つの領域が全周に亘って他の領域に囲まれている場合には、当該他の領域が当該1つの領域を包含している、ということができる。特定部130は、ステップS120で、隣接条件に基づいて包含関係を特定し、続くステップS125〜S145では、さらに画素位置条件(座標条件とも呼ぶ)に基づいて包含関係を特定する(包含関係を表す包含関係データを生成する)。ステップS150では、第1生成部140は、非ベタ領域がベタ領域を包含する場合に、当該ベタ領域を、当該非ベタ領域に、統合する。このような統合を行う理由については、後述する。
図7は、隣接条件に基づく包含関係の特定(ステップS120)の概略図である。図中には、第1ラベル画像LI1が示されている。第1ラベル画像LI1内には、抽出部(図1)によって抽出された5つの領域L100〜L105が、示されている(オブジェクトの図示は省略されている)。特定部130は、第1ラベル画像LI1の複数の画素を、1ラインずつ順番に走査することによって、領域の切り替わりを検出する。本実施例では、特定部130は、第一方向D1に沿って延びる画素ライン(画素行とも呼ぶ)毎に、走査を行う。具体的には、特定部130は、第一方向D1に沿って延びる1本の画素ライン(画素行)の複数の画素を、左方向の端から右方向の端まで、第一方向D1に沿って1画素ずつ順番に走査する。ここで、図7(A)おける左方向は、第一方向D1の反対方向を意味し、右方向は、第一方向D1を意味している。また、特定部130は、第二方向D2に沿って並ぶ複数の画素ライン(画素行)を、上方向の端から下方向の端まで、第二方向D2に沿って1ラインずつ順番に走査する。ここで、図7(A)おける上方向は、第二方向D2の反対方向を意味し、下方向は、第二方向D2を意味している。上述の上下左右の方向は、後述する説明においても、同じである。
特定部130は、1本の画素ライン上において、走査順がn番目(nは1以上の整数)である画素のラベル(領域の識別子)と、走査順がn+1番目である画素のラベルとを比較する。n番目の画素の識別子(第n識別子と呼ぶ)が、n+1番目の画素の識別子(第n+1識別子と呼ぶ)と異なる場合には、第n識別子の領域が、第n+1識別子の領域を、包含している可能性がある。例えば、図7(A)の第1走査位置SP1においては、第n識別子が、第100領域L100を示し、第n+1識別子が、第101領域L101を示している。図示するように、第100領域L100は、第101領域L101を、包含している。
特定部130は、第n識別子と第n+1識別子との間の切り替わりが検出されることが、初めてである場合に、第n識別子の領域が、第n+1識別子の領域を、包含していると、特定する(以下、包含関係を特定するためのこの条件を、隣接条件と呼ぶ)。1本の画素ライン上では、走査が、対象画像TIの左端から右端へ、進行する。従って、第n識別子と第n+1識別子との間の切り替わりが初めて検出された場合には、通常は、その切り替わりが検出された走査位置は、第n識別子の領域に包含される第n+1識別子の領域の左端を示している。例えば、第1走査位置SP1は、第100領域L100に包含される第101領域L101の左端を示している。
図中には、2つの領域の間の切り替わりが最初に検出される他の走査位置SP2〜SP5も示されている。これらの走査位置SP2〜SP5は、以下の切り替わりを示している。
a)第2走査位置SP2:第101領域L101から第102領域L102への切り替わり
b)第3走査位置SP3:第101領域L101から第103領域L103への切り替わり
c)第4走査位置SP4:第104領域L104から第100領域L100への切り替わり
d)第5走査位置SP5:第100領域L100から第105領域L105への切り替わり
特定部130(図1)は、上記の走査位置SP1〜SP5に従って、包含関係を特定する。図7(B)は、特定される包含関係を示している。図中には、複数の領域L100〜L105と、2つの領域の間をつなぐ矢印と、が示されている。1つの矢印は、2つの領域の間の包含関係を表している。矢印は、包含される領域から、包含する領域へと、向かっている。矢印に付された符号は、その包含関係の特定に利用された走査位置の符号と同じである。例えば、図7(B)の例では、第1走査位置SP1に基づいて、第100領域L100が第101領域L101を包含するという包含関係が特定され、そして、第5走査位置SP5に基づいて、第100領域L100が第105領域L105を包含するという包含関係が特定されている。なお、図4(C)の包含関係は、図7(B)の包含関係と同じである。
なお、隣接条件のみを利用する場合には、特定部130が、誤った包含関係を特定する場合がある。例えば、図7(A)の例では、第104領域L104は、対象画像TIの左端の一部を形成し、第100領域L100は、対象画像TIの端の残りの部分を形成している。従って、2つの領域L100、L104の間には、包含関係が存在しない(一方が他方を包含するという関係が成立しない)。ところが、特定部130は、図7(A)の第4走査位置SP4に基づいて、第104領域L104が第100領域L100を包含する、と特定している(図7(B))。一般には、対象画像TIの端を形成する複数の領域が抽出された場合に、特定部130は、誤った包含関係を特定する可能性がある。このような誤特定を解消するために、特定部130(図1)は、後述するステップS140で、画素位置条件に基づいて、包含関係を再確認する。
図2のステップS120に続くステップS125〜S145では、特定部130(図1)は、隣接条件に基づいてベタ領域が非ベタ領域に包含されると特定された場合に、画素位置条件に基づいて、その包含関係が正しいか否かを判定する。ステップS125では、特定部130は、1つの未処理のベタ領域を、対象ベタ領域SAaとして、選択する(以下、対象ベタ領域SAaを、単に「ベタ領域SAa」とも呼ぶ)。
なお、本実施例では、特定部130は、ステップS125では、非ベタ領域を包含するベタ領域を、対象ベタ領域SAaとして選択せずに、内部に非ベタ領域を包含しないベタ領域を、対象ベタ領域SAaとして選択する。この理由については、後述する。
次いで、ステップS130では、特定部130は、隣接条件の下で、ベタ領域SAaが、非ベタ領域に包含されているか否かを判定する。特定部130は、上述のステップS120で特定された包含関係に基づいて、この判定を、行う。ベタ領域SAaが非ベタ領域に包含されていない場合には(S130:No)、特定部130は、ステップS155に、移行する。
隣接条件の下でベタ領域SAaが非ベタ領域に包含されていると特定された場合には(S130:Yes)、次のステップS135で、特定部130(図1)は、ベタ領域SAaを包含する非ベタ領域を、対象非ベタ領域NAaとして、特定する(以下、対象非ベタ領域NAaを、単に「非ベタ領域NAa」とも呼ぶ)。このとき、特定部130は、上述のステップS120で特定された包含関係に基づいて、非ベタ領域NAaを特定する。次のステップS140では、特定部130は、ベタ領域SAaと非ベタ領域NAaとの間の正しい包含関係を、画素位置条件に基づいて、特定する。
図8は、画素位置条件に基づく包含関係特定処理のフローチャートである。図9は、画素位置条件に基づく特定処理の概略図である。図9(A)は、ベタ領域SAaが、第102領域L102(図5(D))であり、非ベタ領域NAaが、第101領域L101である場合を示している。図9(B)は、ベタ領域SAaが、第100領域L100であり、非ベタ領域NAaが、第104領域L104である場合を示している。
図8の最初のステップS200では、特定部130(図1)は、ベタ領域SAaに外接する最小矩形SAaR(ベタ矩形SAaRと呼ぶ)を特定する。図9(A)、図9(B)中には、ベタ領域SAaのベタ矩形SAaRが示されている。ここで、「領域に外接する最小矩形」は、以下のような矩形である。すなわち、矩形は、第一方向D1と平行な2本の辺と、第二方向D2と平行な2本の辺と、で構成されている。そして、矩形の上辺が、領域の上端と接し、矩形の下辺が、領域の下端と接し、矩形の左辺が、領域の左端と接し、矩形の右辺が、領域の右端と接している。
図9(A)の例では、ベタ領域SAa(第102領域L102)の輪郭が矩形ではないので、ベタ矩形SAaRの輪郭の一部(ここでは、右下部分)は、ベタ領域SAa(第102領域L102)の輪郭の外に配置されている。図9(B)の例では、ベタ領域SAa(第100領域L100)の輪郭が矩形であるので、ベタ矩形SAaRの輪郭は、ベタ領域SAa(第100領域L100)の輪郭と一致する。
図8のステップS200では、特定部130(図1)は、さらに、ベタ矩形SAaRの対角を形成する2つの画素(隅の画素)の位置を特定する。本実施例では、特定部130は、左上隅の画素Ps0の位置(sx0,sy0)と、右下隅の画素Ps1の位置(sx1,sy1)と、を特定する。位置sx0、sx1は、第一方向D1方向の画素位置を示し、位置sy0、sy1は、第二方向D2の画素位置を示している。
次のステップS205では、特定部130は、非ベタ領域NAaに外接する最小矩形NAaR(非ベタ矩形NAaRと呼ぶ)を特定する。そして、特定部130は、さらに、非ベタ矩形NAaRの、左上隅の画素Pn0の位置(nx0,ny0)と、右下隅の画素Pn1の位置(nx1,ny1)と、を特定する。位置nx0、nx1は、第一方向D1方向の画素位置を示し、位置ny0、ny1は、第二方向D2の画素位置を示している。
次のステップS210では、特定部130は、以下の4つの条件B1〜B4が満たされるか否かを判定する。なお、4つの条件B1〜B4の全体が、画素位置条件の例である。
(第1条件B1)sx0>nx0
(第2条件B2)sy0>ny0
(第3条件B3)sx1<nx1
(第4条件B4)sy1<ny1
ここで、図面中(例えば、図9(A)中)の右方向は、第一方向D1であるので、図面中の右方向は、第一方向D1の画素位置が大きくなる方向である。同様に、図面中(例えば、図9(A)中)の下方向は、第二方向D2であるので、図面中の下方向は、第二方向D2の画素位置が大きくなる方向である。従って、条件B1、B2は、ベタ矩形SAaRの左上の画素Ps0が、非ベタ矩形NAaRの左上の画素Pn0よりも、右下に位置していることを示している。条件B3、B4は、ベタ矩形SAaRの右下の画素Ps1が、非ベタ矩形NAaRの右下の画素Pn1よりも、左上に位置していることを示している。
図9(A)に示すように、実際に、非ベタ領域NAaが、ベタ領域SAaを包含する場合には、4つの条件B1〜B4の全てが満たされる。一方、図9(B)に示すように、実際には、非ベタ領域NAaが、ベタ領域SAaを包含していない場合には、4つの条件B1〜B4の少なくとも1つが満たされない。図9(B)の例では、4つの条件B1〜B4の全てが、満たされていない。
4つの条件B1〜B4の全てが満たされる場合には(図8:S210:Yes)、ステップS215で、特定部130(図1)は、非ベタ領域NAaがベタ領域SAaを包含する、と判定する(第1判定結果)。
4つの条件B1〜B4の少なくとも1つが満たされない場合には(図8:S210:No)、ステップS220で、特定部130(図1)は、非ベタ領域NAaがベタ領域SAaを包含していない、と判定する(第2判定結果)。
図8の処理(図2のS140)が終了後、図2のステップS145で、特定部130(図1)は、最終的な判定を行う。本実施例では、図8の第1判定結果が得られた場合には、特定部130は、非ベタ領域NAaがベタ領域SAaを包含する、と判定する(S145:Yes)。例えば、図9(A)のベタ領域SAaと非ベタ領域NAaとの組み合わせに関しては、特定部130は、Yesと判定する。
図8の第2判定結果が得られた場合には、特定部130は、非ベタ領域NAaがベタ領域SAaを包含しない、と判定する(S145:No)。例えば、図9(B)のベタ領域SAaと非ベタ領域NAaとの組み合わせに関しては、特定部130は、Noと判定する。
このように、本実施例では、非ベタ領域NAaがベタ領域SAaを包含すると最終的に判定されるための条件(包含条件)は、隣接条件(図2:S120、S130)と、画素位置条件(図8:S210)と、の両方が満たされることである。
ステップS145でNoと判定された場合には、特定部130は、次のステップS147で、ベタ領域SAaと非ベタ領域NAaとの包含関係を削除して(包含関係データを更新して)、ステップS155に移行する。図10は、包含関係の変化の例を示す概略図である。図10(A)は、更新前の包含関係を示し(図4(C)、図7(B)と同じ)、図10(B)は、更新後の包含関係を示している。図10(B)では、第100領域L100と第104領域L104との間の包含関係が削除されている。図9(B)で説明したように、ベタ領域SAaが、第100領域L100であり、非ベタ領域NAaが、第104領域L104である場合には、特定部130は、ステップS145で、Noと判定する。従って、第100領域L100と第104領域L104との間の包含関係が削除される。
ステップS145でYesと判定された場合には、ステップS150で、第1生成部140(図1)は、ベタ領域SAaを、非ベタ領域NAaに、統合する。そして、第1生成部140は、ベタ領域SAaに関する情報を、削除する。例えば、第1生成部140は、ベタ領域SAa内の画素に割り当てられたラベルを、非ベタ領域NAaのラベルに、置換する。また、特定部130は、ベタ領域SAaに関連する包含関係を削除する(包含関係データを更新する)。
図11は、領域統合の例を示す概略図である。図11(A)は、統合前の3つの領域L101、L102、L103を示している。図11(B)は、統合後の領域を示している。図示するように、第1生成部140(図1)は、第102領域L102を、第101領域L101に統合し、第103領域L103も、第101領域L101に統合する。第1生成部140は、3つの領域L101、L102、L103を統合することによって、3つの領域L101、L102、L103を含む領域を、1つの領域L201(非ベタ領域)として、生成する。図5(A)〜図5(D)に示すように、3つの領域L101、L102、L103は、第1オブジェクトOb1を表す領域から、抽出されている。第1生成部140(図1)は、1つのオブジェクトOb1から抽出された複数の領域を、統合することができる。
図2のステップS150が終了後、処理は、ステップS155に移行する。ステップS155では、特定部130(図1)は、全てのベタ領域に対して、ステップS125〜S150の処理が終了したか否かを判定する。未処理のベタ領域が残っている場合には(S155:No)、特定部130は、ステップS125に戻る。全てのベタ領域の処理が終了した場合には(S155:Yes)、処理は、図3のステップS157に移行する。
図4(D)の第2ラベル画像LI2は、図2のステップS155でYesと判定された段階で特定されている領域を示している。図11で説明したように、図4(B)の3つの領域L101、L102、L103が統合されて、1つの領域L201(非ベタ領域)が生成されている。また、図4(B)の3つの領域L100、L104、L105は、他の領域と統合されずに、3つの領域L200、L202、L203として、それぞれ維持されている。以下、複数の領域が統合されて生成された領域を「統合領域」とも呼ぶ。
図4(E)の包含関係は、図2のステップS155でYesと判定された段階で特定されている領域の包含関係を示している。図10(B)で説明したように、特定部130(図1)は、第200領域L200(元の第100領域L100)と第202領域L202(元の第104領域L104)との間の包含関係を、削除する(図2:S147)。また、図2のステップS150、図11(B)で説明したように、特定部130は、統合されたベタ領域L102、L103に関する包含関係を、削除する。この結果、図4(E)に示すように、第200領域L200が、2つの領域L201、L203を包含する、という包含関係が、特定される。
図3のステップS157〜S172では、領域判定部160(図1)は、図2の処理によって分離された非ベタ領域毎に、非ベタ領域から背景部分を分離する処理を行う。具体的には、ステップS157で、領域判定部160は、1つの未処理の非ベタ領域を、処理対象領域H(非ベタ領域Hとも呼ぶ)として選択する。次いで、ステップS160では、領域判定部160は、処理対象領域Hの周囲を囲むベタ領域SAtの階調値を利用して、処理対象領域Hを二値化するための閾値を決定する。
図12(A)は、非ベタ領域L201(第201領域L201)の処理例を示す概略図であり、図12(B)は、非ベタ領域L203(第203領域L203)の処理例を示す概略図である。図12(A)には、対象画像TIのうちの第201領域L201を含む部分TIaが示され、図12(B)には、対象画像TIのうちの第203領域L203を含む部分TIbが示されている。
以下、第201領域L201が処理対象領域Hである場合について、説明する。領域判定部160(図1)は、第201領域L201の周囲を囲むベタ領域SAtを特定する(ここでは、第200領域L200)。領域判定部160は、図5(D)の第2ラベル画像LI2を解析することによって、第201領域L201の周囲を囲むベタ領域SAtを特定することができる。この代わりに、領域判定部160は、図4(E)の包含関係(包含関係データ)を参照することによって、ベタ領域SAtを特定してもよい。領域判定部160は、特定されたベタ領域SAt(L200)を代表する色CLo1を算出する(以下、第1代表色CLo1と呼ぶ)。第1代表色CLo1のRGB毎の階調値Rr、Gr、Brは、ベタ領域SAt(L200)の全ての画素についての、RGB毎の平均階調値である。
通常は、オブジェクトは背景上に配置される。従って、第201領域L201の周囲を囲むベタ領域L200は、第201領域L201内のオブジェクトの背景を表している。すなわち、ベタ領域L200の代表色CLo1は、第201領域L201の背景の色と、同じである。
次に、領域判定部160は、第1代表色CLo1を利用して、第1閾値群Ctho1を決定する。本実施例では、第1閾値群Ctho1は、色成分毎(RGB毎)の上限値と下限値とを含んでいる。具体的には、以下の6つの閾値R1、R2、G1、G2、B1、B2が、第1閾値群Ctho1として決定される。
赤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は、第1代表色CLo1に近い色の範囲、すなわち、背景の色に近い色の範囲を、定めている。
図3のステップS160で、閾値を決定した後、ステップS165では、領域判定部160(図1)は、ステップS160で決定された閾値を利用して、処理対象領域Hを二値化する(二値画像データを生成する)。具体的には、処理対象領域H内の各画素を、1画素毎に、オブジェクト画素と、非オブジェクト画素とに分類する。二値画像データの画素毎の階調値は、オブジェクト画素を表す値(例えば、「1」)と、非オブジェクト画素を表す値(例えば、「ゼロ」)と、のいずれかに設定される。
領域判定部160は、処理対象領域H内(例えば、第201領域L201内)の画素Pxiの色成分毎(RGB毎)の階調値Ri、Gi、Biの全てが、上記の閾値群R1、R2、G1、G2、B1、B2で定められる色範囲内にある場合に、画素Pxiを非オブジェクト画素に分類する。換言すれば、階調値Ri、Gi、Biは、以下の3つの条件E1〜E3を満たしている場合に、画素Pxiは、非オブジェクト画素に分類される。
(第1条件E1)R1(=Rr−dV)<Ri<R2(=Rr+dV)
(第2条件E2)G1(=Gr−dV)<Gi<G2(=Gr+dV)
(第3条件E3)B1(=Br−dV)<Bi<B2(=Br+dV)
この場合には、画素Pxiの色は、第1代表色CLo1(背景の色)に近いので、画素Pxiは、背景を表している可能性が高い。
一方、領域判定部160は、色成分毎の階調値Ri、Gi、Biの少なくとも1つが、上述の色範囲外にある場合には、画素Pxiをオブジェクト画素に分類する(3つの条件E1〜E3の少なくとも1つが満たされない)。この場合には、画素Pxiの色は、第1代表色CLo1(背景の色)から遠いので、画素Pxiは、背景とは異なる画像(オブジェクト)を表している可能性が高い。
図12(A)の第1色分布CD1は、RGB色空間における、第201領域L201内の画素の色分布例を示している。第1色分布CD1には、第1閾値群Ctho1によって定められる色範囲BA1(すなわち、条件E1〜E3の全てが満たされる範囲)が示されている。この色範囲BA1は、背景の色に近い色の範囲を示している(以下、第1背景色範囲BA1とも呼ぶ)。図中の1つの色点PXcは、1つの画素の色を示している。図示された複数の色点PXcのうちの第1色点群CGt1は、棒グラフを表す画素の色の分布を示し、第2色点群CGb1は、棒グラフを表す画素の周りの背景を表す画素の色の分布を示している。第1色点群CGt1は、第1背景色範囲BA1の外に分布しているので、それらの色点に対応する複数の画素は、オブジェクト画素(棒グラフを表す複数の画素)に分類される。第2色点群CGb1は、第1背景色範囲BA1の内に分布しているので、それらの色点に対応する複数の画素は、非オブジェクト画素(背景を表す複数の画素)に分類される。
図示するように、第1色点群CGt1は、第103領域L103の画素の色を表す色点群C103を含んでいる。第103領域L103は、棒グラフの一部分(棒Ob1S)を表している。従って、棒Ob1Sを表す画素は、オブジェクト画素に分類される。
一方、第2色点群CGb1は、第102領域L102の画素の色を表す色点群C102を含んでいる。第102領域L102は、棒グラフ内の背景部分を表している。従って、棒グラフ内の背景部分を表す画素(第102領域L102の画素を含む)は、非オブジェクト画素に分類される。
図12(A)中の二値部分画像BIaは、二値画像データにおける第201領域L201に対応する部分の一例である。図中のハッチングが付された部分は、オブジェクト画素によって構成される領域を示し、ハッチングの無い部分(白い部分)は、非オブジェクト画素によって構成される領域を示している。図示するように、第201領域L201内においては、棒グラフを表す画素が、オブジェクト画素に分類され、他の画素(背景を表す画素)が、非オブジェクト画素に分類されている。
以下、処理対象領域H内の非オブジェクト画素で表される領域を、非オブジェクト領域HSと呼ぶ。また、処理対象領域H内のオブジェクト画素で表される領域を、オブジェクト領域HNと呼ぶ。
図3のステップS165で処理対象領域Hが二値化された(二値画像データが生成された)後、ステップS170では、第2生成部150(図1)は、二値画像データを利用して、処理対象領域H内の非オブジェクト領域HSを、ベタ領域SAtに統合する。
図12中の画像LI3aは、ステップS170の処理の結果を示している。第2生成部150(図1)は、第201領域L201内の非オブジェクト領域HSと、第201領域L201を囲むベタ領域SAt(L200)と、を含む領域を、1つのベタ領域L300として、生成する。また、第2生成部150は、第201領域L201から非オブジェクト領域HSを除いた残りの部分を、1つの非ベタ領域L301として特定する。この結果、非ベタ領域L201の内部の背景を表す部分(例えば、枠画像Ob1Fの内部の背景部分Ob1Bを表す部分L102)を、非ベタ領域L301ではなく、ベタ領域L300に組み込むことができる。
図3のステップS170が終了した後、ステップS172では、領域判定部160(図1)は、全ての非ベタ領域に対して、ステップS157〜S170の処理が終了したか否かを判定する。未処理の非ベタ領域が残っている場合には(S172:No)、領域判定部160は、ステップS157に戻って、未処理の非ベタ領域に対して、ステップS157〜S170の処理を、上述の第201領域L201の処理と同様に、実行する。全ての非ベタ領域の処理が終了した場合には(S172:Yes)、処理は、ステップS175に移行する。
例えば、第203領域L203については、第2生成部150(図1)と領域判定部160とは、以下のように、処理を行う。図12(B)に示すように、領域判定部160は、第203領域L203の周囲を囲むベタ領域(ここでは、第200領域L200)の代表色CLo2(第2代表色CLo2と呼ぶ)を算出し、第2閾値群Ctho2を決定する。図12(B)中の第2色分布CD2は、第203領域L203内の画素の色分布を示している。図中の第2背景色範囲BA2は、第2閾値群Ctho2によって定められる色の範囲である。図12(B)の例では、ベタ領域SAt(L200)が、図12(A)のベタ領域SAt(L200)と同じであるので、第2背景色範囲BA2(第2閾値群Ctho2)は、第1背景色範囲BA1(第1閾値群Ctho1)と、同じである。ただし、2つのオブジェクトが、互いに色が異なる背景画像上に配置されている場合には、これら2つのオブジェクトのための2つの背景色範囲は、互いに異なり得る。
図中の第1色点群CGt2は、文字を表す画素の色の分布を示し、第2色点群CGb2は、文字の周りと文字の内側(例えば、「B」の文字の内側)との背景を表す画素の色の分布を示している。第1色点群CGt2は、背景色範囲BA2の外に分布しているので、それらの色点に対応する複数の画素は、オブジェクト画素(文字を表す複数の画素)に分類される。第2色点群CGb2は、背景色範囲BA2の内に分布しているので、それらの色点に対応する複数の画素は、非オブジェクト画素(背景を表す複数の画素)に分類される。図12(B)の二値部分画像BIbは、分類結果を示している。処理対象領域H(L203)は、文字を表す画素の領域HNと、背景を表す画素の領域HSと、に分離されている。そして、第2生成部150は、二値部分画像BIbに示す3つの文字の領域HNに対応して、1つの非ベタ領域L303を生成(特定)する(画像LI3b参照)。文字の領域HNの周囲と内部とに配置された非オブジェクト領域HSについては、非オブジェクト領域HSとベタ領域L200とを含む領域が、1つのベタ領域L300として、特定される。
なお、第202領域L202(図4(D))については、領域判定部160(図1)は、第202領域L202を包含するベタ領域を特定することができないので(図4(E)参照)、ステップS160〜S170を、スキップする。この代わりに、領域判定部160と第2生成部150とは、第202領域L202の周囲の一部と接する領域(ここでは、ベタ領域L200)を利用することによって、ステップS160〜S170の処理を実行してもよい。
図4(F)の第3ラベル画像LI3は、図3のステップS172でYesと判定された段階で特定されている領域を示している。図12(A)で説明したように、第201領域L201(図4(D))内の背景を表す画素は、ベタ領域L300に組み込まれている。また、第201領域L201内のグラフを表す画素は、非ベタ領域L301として特定されている。さらに、第203領域L203(図4(D))内の背景を表す画素は、ベタ領域L300に組み込まれている。また、第203領域L203内の文字を表す画素は、非ベタ領域L303として特定されている。さらに、第202領域L202(図4(D))については、第302領域L302として、維持されている。
図3のステップS172でYesと判定された後には、ステップS175、S180で、種類判定部170(図1)は、領域毎に、オブジェクトの種類(属性とも呼ぶ)を判定する。
図13は、種類判定の条件を示すテーブルである。種類判定部170は、色の分布幅Wと色数Cと画素密度Sとに応じて種類を識別する。図3のステップS175では、種類判定部170は、対象画像TIから抽出された領域毎に、分布幅Wと色数Cと画素密度Sとを算出する。以下、これらのパラメータW、C、Sの全体を、特徴パラメータとも呼ぶ。
図14は、分布幅Wと色数Cとの説明図である。図中には、輝度のヒストグラムが示されている。この輝度ヒストグラムは、各領域L300〜L303の内の1つの判定対象の領域(以下、対象領域Kと呼ぶ)内の画素値から算出される輝度のヒストグラムである。本実施例では、各画素の輝度は、各画素の階調値(赤Rと緑Gと青Bの3つの色成分の階調値)から、算出される。算出式としては、例えば、赤R、緑G、青Bの階調値から、YCbCr色空間のY成分(輝度成分)を算出する算出式が、利用される。算出される輝度は、0〜255の整数で表される。対象領域Kが非ベタ領域(オブジェクトを含む領域)である場合には、図3のステップS157〜S172で説明したように、対象領域Kからは、背景を表す部分が除かれている(図3、図12:対象領域K=オブジェクト領域HN=非ベタ領域H−非オブジェクト領域HS)。従って、輝度ヒストグラムは、オブジェクトを表す画素(背景を表す画素を除く)の輝度分布を表している。
色数Cは、度数(画素数)が所定の閾値Th以上である輝度の幅の累積値である。このような色数Cは、度数が閾値Th以上である階級(binとも呼ばれる)の総数に、1つの階級の幅を乗じることによって、算出可能である。例えば、図14のヒストグラムは、閾値Thを越える3つのピークP1、P2、P3を示している。色数Cは、第1ピークP1の閾値Thを越える部分の幅C1と、第2ピークP2の閾値Thを越える部分の幅C2と、第3ピークP3の閾値Thを越える部分の幅C3と、の和である。一般的に、文字は少ない色で表現されることが多いので、対象領域Kが文字画像を表す場合には、色数Cは少なくなる。写真画像は、撮影された被写体の種々の色を表すので、対象領域Kが写真画像を表す場合には、色数Cが多くなる。描画画像は、文字画像と比べて多くの色で表現されることが多いが、写真画像と比べると、利用される色の数は少ないことが多い。従って、対象領域Kが描画画像を表す場合には、色数Cは、文字画像の色数Cよりも多く、写真画像の色数Cよりも少ない傾向がある。
分布幅Wは、度数(画素数)が所定の閾値Th以上である輝度(階級)の最低値と最高値との間の差(幅)である。色数Cの説明と同じ理由により、対象領域Kが文字画像を表す場合には、分布幅Wは小さくなり、対象領域Kが写真画像を表す場合には、分布幅Wが大きくなる。そして、対象領域Kが描画画像を表す場合には、分布幅Wは、文字画像の分布幅Wよりも大きく、写真画像の分布幅Wよりも小さい傾向がある。
画素密度Sは、対象領域Kに外接する最小矩形内における対象領域Kの画素の密度(単位面積当たりの画素数)である。一般的に、文字は、背景上に、背景とは異なる色の細線で、書かれている。また、図3のステップS157〜S172、図12で説明したように、対象領域Kが非ベタ領域(オブジェクトを含む領域)である場合には、対象領域Kから背景を表す部分が既に除かれている。従って、対象領域Kが文字を表す場合には、画素密度Sが小さくなる。写真画像では、ほとんどの部分が、背景とは異なる色で表されている。従って、対象領域Kが写真画像を表す場合には、画素密度Sが大きくなる。描画画像は、文字と同様に、背景上に、背景とは異なる色で表現されている。ただし、文字とは異なり、描画画像は、細線に限らず、太線または塗りつぶされた領域を含み得る。従って、対象領域Kが描画画像を表す場合には、画素密度Sは、文字画像の画素密度Sよりも大きく、撮影画像の画素密度Sよりも小さい傾向がある。
図13の判断条件は、以上の特徴を考慮して、構成されている。具体的には、種類判定部170(図1)は、以下の3つの判断結果の組み合わせに対応付けられた種類を選択する。
判断1)分布幅Wが、所定の分布幅閾値Wth以上であるか否か
判断2)色数Cが、所定の色数閾値Cth以上であるか否か
判断3)画素密度Sが、所定の画素密度閾値Sth以上であるか否か
例えば、分布幅Wが分布幅閾値Wth未満であり、色数Cが色数閾値Cth未満であり、画素密度Sが画素密度閾値Sth未満である場合には、種類判定部170は、対象領域Kの種類が「文字画像」であると判断する。
図3のステップS175では、種類判定部170(図1)は、対象領域K毎に、図14のようなヒストグラムを生成し、ヒストグラムを解析することによって、分布幅Wと色数Cとを算出する。また、種類判定部170は、対象領域Kを解析することによって、画素密度Sを算出する。そして、ステップS180にて、種類判定部170は、算出された分布幅Wと色数Cと画素密度Sとを用いて、対象領域Kの種類を判定する。種類判定部170は、対象画像TIから抽出された全ての領域毎に、画像の種類を判定する。
図4(G)の画像RIは、オブジェクトの種類の判定結果例を示している。第300領域L300の種類は「描画」と判定され、第301領域L301の種類は「描画」と判定され、第302領域L302の種類は「写真」と判定され、第303領域L303の種類は「文字」と判定されている。なお、種類判定部170は、ベタ領域(例えば、第300領域L300)に関しては、特徴パラメータW、C、Sを算出せずに、オブジェクトの種類が「描画」であると判定してもよい。すなわち、種類判定部170は、少なくとも非ベタ領域毎に、特徴パラメータW、C、Sの算出と、特徴パラメータW、C、Sを利用した種類判定と、を行うことが好ましい。また、種類判定部170は、ベタ領域(例えば、第300領域L300)に関しては、ベタ領域を構成する画素の階調値(色)が白色を示す値であるとき(例えば、ベタ領域の全ての画素の階調値から色成分毎に算出される平均階調値が、白色を表す所定の階調値範囲内にあるとき)に限り、ステップS175及びステップS180の処理を省略し、オブジェクトの種類を判定しなくてもよい。
図3のステップS180で全ての領域の種類が判定された後、ステップS185では、画像調整部180(図1)は、判定結果を利用する画像調整を行う。例えば、画像調整部180は、文字画像の領域にシャープネスを強調する処理を行い、写真画像の領域に写真画像が好ましい色で表現されるように予め設定された色調整を行い、描画画像の領域に彩度を高める処理を行う。このように、画像調整部180は、対象画像データに対して、オブジェクト種類の判定結果を利用する画像調整を行うことによって、処理済の画像データを生成する。画像調整部180は、処理済の画像データを、不揮発性記憶装置290に格納する。ユーザは、格納された画像データを、画像の出力(例えば、印刷と表示)等に利用することができる。
なお、本実施例では、第1ブロックBL毎に算出される平均エッジ強度(ERave、EGave、EBave)は、「エッジ強度の程度を表す特徴値」の例である。また、「ERave≧ETr、および、EGave≧ETg、および、EBave≧ETbのうちの少なくとも一つが成立する」ことは、「エッジ強度の程度を表す特徴値が所定の基準以上である」ことの例である。
以上のように、本実施例では、抽出部(図1)は、対象画像TI(図4(A))から、非ベタ領域とベタ領域とを抽出する(例えば、図4(B)の非ベタ領域L101、L104、L105と、ベタ領域L100、L101、L102)。特定部130は、非ベタ領域の1つである第101領域L101と、第101領域L101によって囲まれ、かつ、内部に非ベタ領域を含まないベタ領域L102、L103と、を特定する。第1生成部140は、ベタ領域L102、L103と非ベタ領域L101とを統合することによって、ベタ領域L102、L103と非ベタ領域L101とを含む領域を、非ベタ領域L201として生成する(図4(D))。生成された非ベタ領域L201に対応して、非ベタ領域L301が特定される(図4(F))。新たに特定された非ベタ領域L301は、元の非ベタ領域L201と同じ第1オブジェクトOb1を含んでいる。種類判定部170は、特定された非ベタ領域L301、L302、L303毎に、オブジェクトの種類を判定する(図4(G))。従って、非ベタ領域L101によって表される第1オブジェクトOb1がベタ領域L103を含む場合に、そのベタ領域L103を非ベタ領域L201(最終的には、非ベタ領域L301)の一部として扱うことができるので、非ベタ領域内のオブジェクトの種類の判定に、適切な領域を利用することができる。仮に、オブジェクト種類の判定に利用される非ベタ領域L301が、オブジェクトの一部を表すベタ領域L103を含まない場合には、種類判定部170は、第1オブジェクトOb1の一部を表すベタ領域L103を利用せずに、第1オブジェクトOb1の種類を判定すると、誤判定の可能性がある。例えば、種類判定部170は、ベタ領域L103の色と画素数とをカウントしないので、分布幅Wと画素密度Sとが小さくなり得る。この結果、第1オブジェクトOb1の種類が、誤って「文字」と判定される可能性がある。本実施例では、そのような誤判定の可能性を低減できる。
なお、図12(A)に示すように、第301領域L301は、第201領域L201に、修正(非オブジェクト領域HSの削除)を加えることによって、生成されている。図12(B)に示すように、第303領域L303は、第203領域L203に、修正を加えることによって、生成されている。図4(F)で説明したように、第302領域L302は、第202領域L202と同じである。従って、非ベタ領域L301〜L303は、修正前の非ベタ領域L201〜L203と、それぞれ同じオブジェクトを含んでいる。この結果、修正後の非ベタ領域L301〜L303毎にオブジェクトの種類を判定する種類判定部170は、修正後の非ベタ領域L301〜L303を利用することによって、修正前の非ベタ領域L201〜L203毎にオブジェクトの種類を判定している、ということができる。
また、図4(A)〜図4(F)に示すように、最終的に特定される非ベタ領域L301は、非ベタ領域L101の画素の少なくとも一部と、ベタ領域L103の画素の少なくとも一部と、の両方を含んでいる。そして、種類判定部170(図1)は、非ベタ領域L301の画素を利用して、第1オブジェクトOb1の種類を判定する(図4(G))。このように、種類判定部170は、オブジェクトOb1の一部を表す非ベタ領域L101の画素の階調値と、オブジェクトOb1の一部を表すベタ領域L103の画素の階調値と、の両方を用いて、非ベタ領域L201(最終的には、非ベタ領域L301)に含まれる第1オブジェクトOb1の種類を判定する。従って、種類判定部170は、非ベタ領域L201内のオブジェクトの種類の判定に、適切な領域内の画素の値(例えば、階調値)を利用することができる。
また、図4(A)〜図4(G)、図12(A)に示すように、非ベタ領域L201が、ベタ領域L200によって囲まれる場合には、種類判定部170(図1)は、非ベタ領域L201の特定に利用された元の領域の複数の画素(非ベタ領域L101内の複数の画素とベタ領域L102、L103内の複数の画素)のうちの、非ベタ領域L201を囲むベタ領域L200の画素の階調値(第1代表色CLo1)を含む第1背景色範囲BA1内の画素(第2色点群CGb1の画素)とは異なる画素(第1色点群CGt1の画素。すなわち、非ベタ領域L301の画素)を利用して、非ベタ領域L201に含まれる第1オブジェクトOb1の種類を判定する。従って、ベタ領域L102、L103と非ベタ領域L101とによって表される第1オブジェクトOb1内に、背景の一部(例えば、ベタ領域L102)が含まれる場合に、非ベタ領域L201内の第1オブジェクトOb1の種類の判定に、適切な領域(具体的には、背景を表す領域を除いた残りの領域。すなわち、オブジェクトを表す画素の領域)を利用することができる。仮に、種類判定部170が、背景を表す領域を含む領域(例えば、非ベタ領域L201の全体)を利用して、第1オブジェクトOb1の種類を判定すると仮定する。この場合には、誤判定の可能性がある。例えば、種類判定部170は、背景を表すベタ領域L102の画素数をカウントするので、画素密度Sが大きくなり得る。この結果、第1オブジェクトOb1の種類が、誤って「写真」と判定される可能性がある。本実施例では、そのような誤判定の可能性を低減できる。
また、図3、図12(A)に示すように、領域判定部160(図1)は、ベタ領域L102、L103内の複数の画素と非ベタ領域L101内の複数の画素とのうちの第1背景色範囲BA1内の階調値を示す画素(第2色点群CGb1の画素)によって表される領域を、ベタ領域である、と判定する。従って、第1オブジェクトOb1内に背景の一部が含まれる場合に、領域判定部160は、その背景の一部を表す領域を、適切に、ベタ領域として判定することができる。
特に、第2生成部150は、背景の一部を表す領域(例えば、ベタ領域L102)を、第1オブジェクトOb1を含む非ベタ領域L201の周囲を囲むベタ領域L200と統合することによって、それらの領域を含む領域を、ベタ領域L300として生成する(図4(F))。従って、第1オブジェクトOb1内に背景の一部が含まれる場合に、その背景の一部を表す領域(例えば、ベタ領域L102)と、周囲のベタ領域L200とを、適切に、同じベタ領域L300として利用することができる。
また、図7で説明したように、特定部130は、対象画像TIの複数の画素を1ラインずつ順番に走査する。そして、ベタ領域が非ベタ領域によって囲まれていると判定するための包含条件は、上記の走査において、ベタ領域の画素と非ベタ領域の画素とのうちの一方から他方に切り替わる部分(走査位置)を最初に検出したときの切り替わりが、非ベタ領域の画素からベタ領域の画素への切り替わりである、ことを要する(隣接条件)。従って、特定部130は、非ベタ領域によって囲まれたベタ領域を、容易に特定することができる。
また、包含条件は、図8、図9で説明したように、非ベタ領域NAaの画素の位置と、ベタ領域SAaの画素の位置と、の間の位置関係が、ベタ領域が全周に亘って非ベタ領域に囲まれていることを示す画素位置条件を、要する。従って、図9(B)の例のように、ベタ領域SAaの輪郭の一部と、非ベタ領域NAaの輪郭の一部とが、同じライン上を延びる場合であっても、特定部130は、ベタ領域SAaが非ベタ領域NAaによって囲まれているか否かを適切に判定できる。
ここで、図8、図9で説明したように、画素位置条件は、ベタ領域SAaに外接するベタ矩形SAaRの対角を形成する2つの画素Ps0、Ps1の位置と、非ベタ領域NAaに外接する非ベタ矩形NAaRの対角を形成する2つの画素Pn0、Pn1の位置と、を用いて、ベタ矩形SAaRが非ベタ矩形NAaRの内部に配置されていることを示す条件である。従って、特定部130は、ベタ領域SAaに関する2つの画素Ps0、Ps1の位置と、非ベタ領域NAaに関する2つの画素Pn0、Pn1の位置と、を利用することによって、ベタ領域SAaが非ベタ領域NAaによって囲まれているか否かを適切に判定できる。なお、特定部130は、対角を形成する2つの画素の位置を利用する代わりに、ベタ領域SAa内の全ての画素毎に、ベタ領域SAa内の画素が非ベタ領域NAaの内部に配置されているか否を判定することによって、最終的にベタ領域SAaが非ベタ領域NAaに囲まれているか否かを判定してもよい。
また、特定部130は、隣接条件に基づいて、非ベタ領域と、その非ベタ領域に囲まれたベタ領域と、の組み合わせの候補を特定し、特定された候補のみに対して、画素位置条件に基づく判定を行う。従って、抽出されたベタ領域と抽出された非ベタ領域との全ての組み合わせに関して画素位置条件に基づく判定を行う場合と比べて、処理負担を軽減できる。
また、上記実施例では、図2のステップS125で説明したように、内部に非ベタ領域(内非ベタ領域と呼ぶ)を包含するベタ領域は、当該ベタ領域を囲む非ベタ領域(外非ベタ領域と呼ぶ)に統合されない。この理由は、当該ベタ領域を外非ベタ領域に統合すると、外非ベタ領域と内非ベタ領域との間を隔てるベタ領域が無くなってしまい、外非ベタ領域と内非ベタ領域とを適切に分離することが出来なくなるからである。
B.変形例:
(1)画像処理としては、図2、図3、図8に示す処理に限らず、種々の処理を採用可能である。例えば、図3のステップS170と図1の第2生成部150とを省略してもよい。この場合も、種類判定部170(図1)は、ステップS175、S180で、非ベタ領域内のオブジェクト領域(非オブジェクト領域を除いた残りの領域)を利用することによって、種類を判定することが好ましい。
また、図3のステップS157〜S172の処理を省略してもよい。この場合には、種類判定部170(図1)は、図3のステップS175、S180で、背景を表す部分を含む非ベタ領域の全画素を利用して、種類を判定すればよい。
また、図2のステップS150で、第1生成部140(図1)は、ベタ領域SAaが背景を表す場合には、ベタ領域SAaを非ベタ領域NAaに統合しないこととしてもよい。この場合、領域判定部160が、ベタ領域SAaが背景を表すか否かを判定すればよい。領域判定部160は、図3のステップS157〜S165の処理と同様に、非ベタ領域NAaの周囲を囲むベタ領域の階調値を利用することによって、ベタ領域SAaが背景を表すか否かを判定することができる。
また、図7に示す包含関係の特定処理において、走査されるラインの方向は、第一方向D1ではなく、第二方向D2であってもよい。また、図2のステップS120を省略してもよい。この場合、特定部130(図1)は、ベタ領域と非ベタ領域との全ての組み合わせに関して、画素位置条件に基づく判定を行えばよい。また、特定部130は、包含関係データの生成と更新とを、省略してもよい。例えば、図2のS147を省略してもよい。
(2)エッジ強度の算出式としては、図5の算出式に限らず、階調値の変化の大きさを表す値を算出可能な他の任意の算出式を採用可能である。例えば、エッジ強度は、第一方向D1の変化の大きさの二乗と、第二方向D2の変化の大きさの二乗との合計値であってもよい。また、ソーベルオペレータの代わりに、プレウィットオペレータ(Prewitt operator)、または、ロバーツクロスオペレータ(Roberts Cross operator)など種々のエッジ検出用オペレータを利用可能である。また、エッジ強度は、赤緑青の各色成分に限らず、他の色成分(例えば、輝度)の階調値を用いて算出されてもよい。
(3)抽出部120によって領域分離(領域抽出)に利用される「エッジ強度の程度を表す特徴値」としては、エッジ強度の程度を表す任意の値を採用可能である。例えば、色成分毎の平均エッジ強度(ERave、EGave、EBave)のうちの最大値を、特徴値として採用してもよい。また、輝度値を利用して算出されたエッジ強度を、採用してもよい。
また、「エッジ強度の程度を表す特徴値が所定の基準以上である」ことの判定条件としては、「ERave≧ETr、および、EGave≧ETg、および、EBave≧ETbのうちの少なくとも一つが成立する」ことに限らず、種々の条件を採用可能である。例えば、特徴値が1つの値によって表される場合には、特徴値が特定の閾値以上であることを、採用可能である。
(4)図5(B)に示す第1ブロックBLの縦の長さ(第二方向D2の画素数)は、横の長さ(第一方向D1の画素数)と、異なっていてもよい。また、第1ブロックBLの形状としては、矩形に限らず、他の種々の形状を採用可能である。また、1つの第1ブロックBLに含まれる画素PXの総数としては、種々の値(例えば、U個(Uは2以上の整数))を採用可能である。
(5)図3のステップS160で決定される背景色範囲において、色成分毎の幅が互いに異なっていてもよい。また、背景色範囲は、RGB色空間において、代表色からの距離(ユークリッド距離)が所定値以下の範囲であってもよい。一般には、背景色範囲としては、代表色を含む種々の範囲を採用可能である。
また、代表色(より一般的には、閾値)は、処理対象領域Hの周囲の領域(処理対象領域Hの周囲を囲むベタ領域)内の、処理対象領域Hに近い一部の領域の階調値を利用して、算出されてもよい。例えば、図12の第201領域L201のための第1代表色CLo1は、ベタ領域L200内の、第201領域L201からの距離が所定値以下の領域L200cから、算出されてもよい。この代わりに、代表色(閾値)は、処理対象領域Hの縁部分の階調値を利用して、算出されてもよい。例えば、図12の第201領域L201のための第1代表色CLo1は、第201領域L201内の、第201領域L201の輪郭からの最短距離が所定値以下の領域L201iから、算出されてもよい。また、代表色(閾値)は、処理対象領域Hの周囲の領域の階調値と、処理対象領域Hの縁部分の階調値と、の両方を利用して、算出されてもよい。いずれの場合も、代表色のRGB毎の階調値としては、平均値に限らず、種々の値(例えば、RGB毎の最頻値、RGB毎の中央値等)を採用可能である。
(6)オブジェクトの種類を判定する方法としては、図13、図14に示す方法に限らず、他の任意の方法を採用可能である。例えば、種類判定部170は、処理対象領域毎に、処理対象領域内の画素の階調値を用いて、処理対象領域に含まれるオブジェクトの種類を判定することができる。階調値を用いる判定方法としては、図14の実施例のように階調値から算出される輝度値を用いる方法に限らず、種々の方法を採用可能である。例えば、種類判定部170は、階調値から算出される色相の分布を用いて、オブジェクトの種類を判定してもよい。例えば、色相分布の幅(色相幅と呼ぶ)が第1閾値よりも小さい場合には「文字」が選択され、色相幅が第2閾値(第1閾値よりも大きい)よりも大きい場合には「写真」が選択され、色相幅が第1閾値と第2閾値との間である場合には「描画」が選択される。また、画素の階調値を用いる方法に限らず、種々の判定方法を採用可能である。例えば、予め準備された文字画像とのパターンマッチングを利用して、種類が文字であるか否かを判定してもよい。また、判定され得る種類としては、3つの種類(「文字」「描画」「写真」)に限らず、それら3つ種類から予め任意に選択された1つまたは2つの種類を採用可能である。また、3つの種類のいずれとも異なる他の種類を採用してもよい。
(7)オブジェクトの種類の判定結果を利用する画像処理(図3のS185)としては、シャープネス強調処理や色調整処理に限らず、種々の処理を採用可能である。例えば、画像調整部180(図1)は、文字の領域を比較的高い圧縮率で圧縮し、他の領域を比較的低い圧縮率で圧縮することによって、いわゆる高圧縮PDF(Portable Document Format)データを生成してもよい。また、画像調整部160を省略してもよい。この場合には、種類判定部170は、領域毎の種類を表す画像データ(例えば、図4(G)の画像RIを表す画像データ)を、不揮発性記憶装置290に格納すればよい。格納された画像データは、種々の画像処理に利用可能である。
(8)計算機200のスキャナドライバ100による画像処理機能は、光学的に対象物を読み取ることによって対象物を表す画像データを生成する画像読取部を含む画像処理装置によって実現されてもよい(例えば、複合機400やスキャナ300や図示しないデジタルカメラ)。この場合には、画像処理装置は、自身の画像読取部によって生成された画像データを用いて、画像処理(例えば、図2、図3の処理)を行えばよい。
一般的には、画像処理(例えば、図2、図3の処理)を実現する画像処理装置は、計算機200に限らず、種々の装置であってよい。例えば、プリンタ、デジタルカメラ、スキャナなどの画像関連機器の内部のコンピュータ、汎用のパーソナルコンピュータ、ネットワークに接続されたサーバ等を採用可能である。また、ネットワークを介して互いに通信可能な複数のコンピュータが、画像処理に要する機能を一部ずつ分担して、全体として、画像処理の機能を提供してもよい(このようなコンピュータシステムを利用する技術は、クラウドコンピューティングとも呼ばれる)。この場合、コンピュータシステムの全体が、特許請求の範囲における画像処理装置に対応する。いずれの場合も、対象画像データを取得する画像データ取得部110を、画像処理装置に設けることができる。対象画像データを取得する方法としては、任意の方法を採用可能である。例えば、画像データ取得部110は、画像処理装置内の他の要素(例えば、不揮発性記憶装置290や画像読取部)から対象画像データを取得してもよく、通信路を介して他の装置(例えば、USBメモリやスマートフォン)から、対象画像データを取得してもよい。
(9)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図1の処理部110〜180から任意の選択された一部または全部の処理部の機能を、論理回路を有する専用のハードウェア回路によって実現してもよい。
また、本発明の機能の一部または全部がソフトウェアで実現される場合には、そのソフトウェア(コンピュータプログラム)は、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。また、ソフトウェア(コンピュータプログラム)は、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD−ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含んでいる。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。