A.実施例:
A−1.画像処理装置の構成:
次に、本発明の実施の形態を実施例に基づき説明する。図1は、実施例における画像処理装置としての計算機200の構成を示すブロック図である。
計算機200は、例えば、パーソナルコンピュータであり、CPU210と、ROMとRAMとを含む内部記憶装置240と、マウスやキーボードなどの操作部270と、外部装置と通信を行うための通信部280と、ハードディスクドライブなどの外部記憶装置290と、を備えている。
計算機200は、通信部280を介して、外部装置であるスキャナ300と複合機400と通信可能に接続されている。スキャナ300は、光学的に原稿を読み取ることによってスキャンデータを取得する画像読取装置である。複合機400は、光学的に原稿を読み取ることによってスキャンデータを取得する画像読取部(図示せず)を備えている。
内部記憶装置240には、CPU210が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域241が設けられている。外部記憶装置290は、ドライバプログラム291と、後述する画像処理において参照される判定テーブル292と、を格納している。ドライバプログラム291は、例えば、CD−ROMやDVD−ROMなどに格納されて提供される。
CPU210は、ドライバプログラム291を実行することにより、後述する画像処理を実行する画像処理機能を含むスキャナドライバ100として機能する。スキャナドライバ100は、取得部110と、選択部115と、平滑化部120と、二値画像データ生成部130と、処理用画像データ生成部140と、処理部150と、を備えている。これらスキャナドライバ100の各機能ブロックは、後述の画像処理を実行する。特に、選択部115と、平滑化部120と、二値画像データ生成部130と、処理用画像データ生成部140とは、後述の網点除去処理を実行する。
A−2.画像処理:
図2は、画像処理のフローチャートである。この画像処理は、スキャンデータが表すスキャン画像に含まれるオブジェクト画像の種類を特定するための処理である。
図2のステップS100では、取得部110は、処理対象とするスキャンデータを取得する。具体的には、スキャナドライバ100は、スキャナ300または複合機400の画像読取部を制御して、スキャンデータを取得する。スキャンデータは、RGB画素データによって構成されたビットマップデータである。RGB画素データは、レッド(R)、グリーン(G)、ブルー(B)の3つの成分値(本実施例の各成分値は、256階調の階調値)を含む画素データである。色成分のうち、レッド成分をR成分とも呼び、グリーン成分をG成分とも呼び、ブルー成分をB成分とも呼ぶ。また、スキャンデータのうち、R成分の画素データから構成される画像データをR成分スキャンデータとも呼ぶ。スキャンデータのうち、G成分の画素データから構成される画像データをG成分スキャンデータとも呼ぶ。スキャンデータのうち、B成分の画素データから構成される画像データをB成分スキャンデータとも呼ぶ。
図3は、スキャンデータが表すスキャン画像SIの一例を示す図である。このスキャン画像SIは、背景画像Bg1と、文字を表す文字オブジェクト画像Ob2と、写真を表す写真オブジェクト画像Ob3と、描画を表す描画オブジェクト画像Ob4とを含んでいる。ここで、描画オブジェクト画像は、イラスト、表、線図、模様などを含む画像である。スキャンデータは面積階調方式で印刷された印刷物(例えば、雑誌)を読み取ることで生成される。従って、スキャン画像SIは、通常の観察者には認識され難い網点を含んでいる。すなわち、スキャン画像SIは、網点で表現された画像であり、網点画像とも呼ぶ。本実施例では、背景画像Bg1は、薄いグレーの網点で形成されている。また、文字オブジェクト画像Ob2は、黒色で示される7つの文字からなる文字群を含んでいる。描画オブジェクト画像Ob4は、3つの球状のイラスト画像CM、CC、CYを含んでいる。イラスト画像CMの色は、マゼンダ色であり、イラスト画像CCの色は、シアン色であり、イラスト画像CYの色は、黄色である。ステップS100で、取得部110によって取得された画像データが、スキャン画像SIを表すスキャンデータであることとして、以下の画像処理を説明する。
図4は、網点除去処理のフローチャートである。図5は、網点除去処理を説明するための説明図である。本実施例では、スキャナドライバ100は、スキャン画像SIに対して、網点除去処理を実行する(ステップS150)。網点除去処理は、スキャン画像SIに含まれるオブジェクト画像のエッジ部分以外の領域の網点を除去する処理である。以下に、網点除去処理について、説明する。
図4のステップS155では、選択部115は、バッファ領域241にスキャン画像SIを表すスキャンデータを格納する。
ステップS157では、選択部115は、スキャンデータのうち、R成分スキャンデータ、G成分スキャンデータ、B成分スキャンデータのいずれかのデータを順次選択する。以下のステップS160〜ステップS175の処理では、ステップS157でB成分スキャンデータが選択された場合を例にして、説明を行う。
図5(a)には、B成分スキャンデータが表す画像中のイラスト画像CCの拡大図(左側)と、拡大図中のA−A画素ライン上の階調値(成分値)の分布状態を表すグラフ(右側)とが、示されている。ステップS157で、選択部115によって、スキャン画像SIを表す画像データのB成分スキャンデータが選択された場合には、黄色で表されるイラスト画像CYのエッジは、表現されない。しかしながら、シアン色で表されるイラスト画像CCは、図5(a)の右図に示すように、濃い濃度で表現される。なお、マゼンダ色で表されるイラスト画像CMのエッジも、濃い濃度で表現され得る。図5(a)には、背景画像Bg1のB成分データであるB成分背景画像Bg1bが示されている。
ステップS160では、平滑化部120は、選択部115によって選択された色成分データ(B成分スキャンデータ)に対して、縦11画素×横11画素の大きさである平滑化フィルタsf(図4参照)を用いた平滑化処理を実行して、部分平滑化画像データを生成する。具体的には、平滑化部120は、B成分スキャンデータが表すB成分スキャン画像の注目画素に、中心位置sfa(図4参照)が重なるように平滑化フィルタsfを配置する。平滑化部120は、注目画素を中心とした平滑化フィルタsf(11画素×11画素)内の階調値(成分値とも呼ぶ)の平均を算出し、当該平均成分値を注目画素の成分値に変更する第1処理を行う。平滑化部120は、B成分スキャン画像のすべての画素を注目画素に設定して、それぞれ第1処理を実行することで、平滑化処理を実現する。
図5(b)には、部分平滑化画像データが表す部分平滑化画像におけるイラスト画像CC1の拡大図(左側)と、拡大図中のB−B画素ライン上の階調値(成分値)の分布状態を表すグラフ(右側)とが示されている。イラスト画像CC1は、イラスト画像CCに対して平滑化処理を行うことにより生成された画像である。図5(b)に示すように、イラスト画像CC1の外側には、部分平滑化画像の一部である背景画像Bg1aが示されている。図5(b)の右図には、イラスト画像CCと背景画像Bg1bとの境界部分に対応する領域の階調値変化が平滑化処理によって滑らかになったことが、示されている。なお、部分平滑化画像データの生成に用いられる平滑化フィルタsfの大きさは、縦11画素×横11画素に限られず、縦Q1(Q1は1以上の整数)画素×横Q2(Q2は1以上の整数)画素の大きさの平滑化フィルタsfを用いてもよい。
ステップS165では、二値画像データ生成部130は、部分平滑化画像データに対して、縦3画素×横3画素の大きさであるsobelフィルタef1、ef2(図4参照)を用いた第1エッジ検出処理を実行して、部分第1エッジ画像データを生成する。具体的には、二値画像データ生成部130は、部分平滑化画像データが表す部分平滑化画像の注目画素(x,y)に、中心位置efa、efbが重なるようにsobelフィルタef1、ef2を配置する。二値画像データ生成部130は、注目画素(x,y)を含む9つの画素の成分値Pを用いて、以下の式1により、エッジ強度S(x,y)を算出する。二値画像データ生成部130は、算出したエッジ強度S(x,y)を注目画素の成分値に変更する第2処理を行う。二値画像データ生成部130は、部分平滑化画像のすべての画素を注目画素に設定して、それぞれ第2処理を実行することで、第1エッジ検出処理を実現する。
...式(1)
ここで、上記式(1)に示すように、9つの画素は、部分第1エッジ画像における画素位置(x,y)に対応する部分平滑化画像における画素位置(x,y)を中心とした隣り合う3行3列の9つの位置の画素である。上記式(1)の第1項および第2項は、9つの位置の画素の成分値に、対応する係数をそれぞれ乗じた値の和の絶対値である。上述したエッジ強度S(x,y)は、注目画素と周辺画素との間の成分値の変化の大きさ(微分値)で表され、式(1)の第1項は、横方向の微分を算出する項であり、第2項は、縦方向の微分を算出する項である。なお、部分第1エッジ画像の生成には、Sobelフィルタに限らず、Prewittフィルタ、Robertsフィルタなど種々のエッジ検出用フィルタが利用できる。
部分第1エッジ画像データが表す部分第1エッジ画像は、エッジが検出され得るエッジ検出領域と、エッジが検出されないエッジ非検出領域とを含む。エッジ検出領域に含まれる各画素の成分値は、それぞれ1以上であり、エッジ非検出領域に含まれる各画素の成分値は、すべて0である。
図5(c)には、部分第1エッジ画像におけるイラスト画像CC2の拡大図(左側)と、拡大図中のC−C画素ライン上の階調値(成分値)の分布状態を表すグラフ(右側)とが示されている。イラスト画像CC2は、イラスト画像CC1に対して第1エッジ検出処理を行うことにより生成された画像である。図5(c)に示すように、イラスト画像CC2の外側には、エッジ非検出領域CC2cが示されている。また、イラスト画像CC2は、図5(c)の左図に示すように、エッジ検出領域CC2a(グレー部分)と、エッジ非検出領域CC2b(グレー部分よりも内側部分)とを含む。図5(c)の右図には、イラスト画像CCと背景画像Bg1bとの境界部分に対応する領域に、エッジ検出領域CC2aが形成されていることが、示されている。
ステップS167では、二値画像データ生成部130は、部分第1エッジ画像データに対して、二値化処理を実行して、部分エッジ二値画像データを生成する。具体的には、二値画像データ生成部130は、部分第1エッジ画像の注目画素の成分値と、所定の閾値Thaとを比較して、注目画素の成分値が、閾値Thaよりも小さければ、注目画素の成分値を0に設定し、注目画素の成分値が、閾値Tha以上であれば、注目画素の成分値を1に設定する第3処理を実行する。二値画像データ生成部130は、部分第1エッジ画像のすべての画素を注目画素に設定して、それぞれ第3処理を実行することで、二値化処理を実現する。成分値が0である画素は、エッジを構成しない非エッジ画素であり第1非エッジ画素と呼ぶ。成分値が1である画素は、エッジを構成するエッジ画素であり第1エッジ画素と呼ぶ。部分エッジ二値画像データが表す部分エッジ二値画像は、第1エッジ画素を含む第1エッジ画素領域と、第1非エッジ画素を含む第1非エッジ画素領域とを含む。
図5(d)には、部分エッジ二値画像データが表す部分エッジ二値画像におけるイラスト画像CC3の拡大図(左側)と、拡大図中のD−D画素ライン上の階調値(成分値)の分布状態を表すグラフ(右側)とが示されている。イラスト画像CC3は、イラスト画像CC2に対して二値化処理を行うことにより生成された画像である。イラスト画像CC3の外側には、図5(d)に示すように、第1非エッジ画素領域CC3cが示されている。また、イラスト画像CC3は、図5(d)の左図に示すように、第1エッジ画素領域CC3a(黒塗り部分)と、第1非エッジ画素領域CC3b(黒塗り部分よりも内側部分)とを含む。図5(d)の右図には、イラスト画像CCと背景画像Bg1bとの境界部分に対応する領域に、第1エッジ画素領域CC3aが形成されていることが、示されている。
ステップS170では、二値画像データ生成部130は、部分エッジ二値画像データに対して、縦7画素×横7画素の大きさであるエッジ太らせフィルタff(図4参照)を用いた太らせ処理を実行して、部分太らせ画像データを生成する。具体的には、二値画像データ生成部130は、部分エッジ二値画像の注目画素に、中心位置ffa(図4参照)が重なるようにエッジ太らせフィルタffを配置する。二値画像データ生成部130は、エッジ太らせフィルタff(縦7画素×横7画素)内で、成分値が1である画素を1つでも検出した場合には、注目画素の成分値を1に設定し、エッジ太らせフィルタff内で、成分値が1である画素を1つも検出しなかった場合には、注目画素の成分値を0に設定する第4処理を実行する。二値画像データ生成部130は、部分エッジ二値画像のすべての画素を注目画素に設定して、それぞれ第4処理を実行することで、太らせ処理を実現する。こうすれば、部分エッジ二値画像に含まれる第1エッジ画素の周囲に位置する第1非エッジ画素を表す第1非エッジ画素データ(周囲非エッジ画素データとも呼ぶ)が、エッジを構成するエッジ画素を表すエッジ画素データに置換される。太らせ処理後のエッジを構成するエッジ画素(第2エッジ画素とも呼ぶ)は、第1エッジ画素と、周囲非エッジ画素データから置換されたエッジ画素データが表すエッジ画素とを含む。この結果、部分エッジ二値画像の第1エッジ画素領域が拡張された部分太らせ画像を表す部分太らせ画像データが、生成される。なお、太らせ処理後のエッジを構成しない非エッジ画素(第2非エッジ画素とも呼ぶ)は、第1非エッジ画素のうち、周囲非エッジ画素データが表す第1非エッジ画素を除いた画素により構成される。部分太らせ画像は、第2エッジ画素を含む第2エッジ画素領域と、第2非エッジ画素を含む第2非エッジ画素領域とを含む。
図5(e)には、部分太らせ画像データにおけるイラスト画像CC4の拡大図(左側)と、拡大図中のE−E画素ライン上の階調値(成分値)の分布状態を表すグラフ(右側)とが示されている。イラスト画像CC4は、イラスト画像CC3に対して太らせ処理を行うことにより生成された画像である。イラスト画像CC4の外側には、図5(e)に示すように、第2非エッジ画素領域CC4cが示されている。また、イラスト画像CC4は、図5(e)に示すように、第2エッジ画素領域CC4a(黒塗り部分)と、第2非エッジ画素領域CC4b(黒塗り部分よりも内側部分)とを含む。図5(d)、(e)に示すように、第2エッジ画素領域CC4aは、第1エッジ画素領域CC3aが拡張されることにより形成されている。従って、第2エッジ画素領域CC4aの幅dbは、第1エッジ画素領域CC3aの幅daよりも広い。
ステップS175では、処理用画像データ生成部140は、B成分スキャンデータと、部分平滑化画像データと、部分エッジ二値画像データとを用いて、合成処理を行い、部分処理用画像データを生成する。具体的には、処理用画像データ生成部140は、合成処理として、部分処理用画像データ内の画素データのうち、部分太らせ画像データ内の第2エッジ画素領域に属するエッジ画素データに対応する画素データ(成分値)を、B成分スキャンデータ内の対応する画素データ(成分値)に設定する処理を行う。また、処理用画像データ生成部140は、合成処理として、第2非エッジ画素領域に属する非エッジ画素データに対応する画素データ(成分値)を、部分平滑化画像データ内の対応する画素データ(成分値)に設定する処理を行う。これにより、部分処理用画像データが生成される。部分処理用画像データが表す部分処理用画像は、エッジを検出し得るエッジ検出領域と、エッジが検出されない非エッジ検出領域とを含む。
図5(f)には、部分処理用画像におけるイラスト画像CC5の拡大図(左側)と、拡大図中のf−f画素ライン上の階調値(成分値)の分布状態を表すグラフ(右側)とが示されている。イラスト画像CC5は、イラスト画像CC4に対して合成処理を行うことにより生成された画像である。イラスト画像CC5の外側には、図5(f)に示すように、非エッジ検出領域CC5cが示されている。イラスト画像CC5は、図5(f)に示すように、エッジ検出領域CC5aと、非エッジ検出領域CC5bとを含む。エッジ検出領域CC5aは、図5(a)および(f)に示すように、イラスト画像CC(スキャン画像SI)の対応部分と同様の成分値濃度である。また、非エッジ検出領域CC5bおよび非エッジ検出領域CC5cは、図5(b)および(f)に示すように、イラスト画像CC1(部分平滑化画像)の対応部分と同様の成分値濃度である。この図から分かるように、部分処理用画像において、非エッジ検出領域CC5bおよび非エッジ検出領域CC5cでは、網点が除去されている。
ステップS180では、選択部115は、すべての色成分に対してステップS160〜ステップS175の処理を実行したか否かを判断する。選択部115は、すべての色成分に対してステップS160〜ステップS175の処理を実行していない場合(ステップS180:No)には、ステップS157の処理にリターンする。選択部115は、すべての色成分に対してステップS160〜ステップS175の処理を実行した場合(ステップS180:Yes)には、R成分、G成分、B成分の処理用画像データを外部記憶装置290に格納し(ステップS185)、網点除去処理を終了する。
図2のステップS200では、スキャナドライバ100の処理部150は、網点除去処理を行ったR、G、B成分の部分処理用画像データを用いて、第2エッジ検出処理を行って、第2エッジ画像EGIを表す第2エッジ画像データを生成する。第2エッジ画像データは、R、G、B成分のデータ、すなわち、R成分の画素データから構成されるR成分エッジ画像データと、G成分の画素データから構成されるG成分エッジ画像データと、B成分の画素データから構成されるB成分エッジ画像データと、から構成される。
具体的には、処理部150は、特定の色成分の部分処理用画像に対して、順番に注目画素を設定し、各注目画素に対して、上述したsobelフィルタを適用し、上記式(1)に基づいて、注目画素ごとのエッジ強度を算出する。処理部150は、算出したエッジ強度をそれぞれ対応する注目画素の成分値に設定する第5処理を行う。処理部150は、他の色成分の部分処理用画像に対しても、それぞれ第5処理を実行することで、第2検出処理を実現する。
図6は、第2エッジ画像データが表す第2エッジ画像EGIの一例を示す図である。図6では、便宜上、エッジ強度が小さい画素を白で、エッジ強度が大きい画素を黒で示している。第2エッジ画像EGIには、スキャン画像SIの各オブジェクト画像Ob2〜Ob4のエッジEg2〜Eg4が含まれていることが分かる。なお、図6の下部には、描画オブジェクト画像Ob4に含まれる3つのイラスト画像CM、CC、CYに対応するエッジEg4m、Eg4c、Eg4yが、色成分ごとに示されている。
図2のステップS300では、処理部150は、第2エッジ画像EGIに対して複数のブロックB(図6)を設定する。ブロックBは、第2エッジ画像EGIに対して格子状に配置されたブロックである。1つのブロックBは、例えば、縦N画素×横N画素(Nは1以上の整数)の大きさを有する。Nの値は、例えば、10〜50程度に設定される。第2エッジ画像EGIとスキャン画像SIとは同じサイズ(縦および横の画素数が同じ)であるので、ブロックBはスキャン画像SIに対して設定されていると言うこともできる。
図2のステップS350では、処理部150は、判定画像BIを設定する。図7は、判定画像BIの一例を示す図である。判定画像BIを構成する画素BPは、上述した複数のブロックBのそれぞれに対応している。判定画像BIの各画素の画素値は、対応するブロックBに関する各種の情報(例えば、後述の識別子)を表す値が用いられる。判定画像BIは、ステップS350の段階では、すべての画素の画素値が0に設定されている。
図2のステップS400では、処理部150は、判定を行って、各ブロックを、ベタブロックと非ベタブロックとに区分する。具体的には、処理部150は、スキャン画像SIにおける各ブロックBの平均エッジ強度(ERave、EGave、EBave)を算出する。平均エッジ強度(ERave、EGave、EBave)は、第2エッジ画像EGIにおけるブロックB内の複数の画素の各成分値(R、G、B)の平均値である。そして、処理部150は、ブロックBの平均エッジ強度と所定の基準値とを比較して、当該ブロックBを、ベタブロックおよび非ベタブロックのいずれかに区分する。ベタブロックは、平均エッジ強度が所定の基準値より小さいブロックである。非ベタブロックは、平均エッジ強度が所定の基準値以上のブロックである。
例えば、処理部150は、平均エッジ強度(ERave、EGave、EBave)を、色成分ごとに定められた基準値(ETr、ETg、ETb)と比較する。この結果、処理部150は、ERave<ETr、かつ、EGave<ETg、かつ、EBave<ETbが成立する場合には、処理対象のブロックBをベタブロックに区分する。逆に、処理部150は、ERave≧ETr、および、EGave≧ETg、および、EBave≧ETbのうちの少なくとも一つが成立する場合には、処理対象のブロックBを非ベタブロックに区分する。
処理部150は、処理対象のブロックBの判定を行う度に、言い換えれば、ブロックBを、ベタブロックまたは非ベタブロックに区分する度に、判定画像BIの対応する画素に判定結果を記載する。処理部150は、処理対象のブロックBをベタブロックに区分した場合には、判定画像BIの対応する画素の画素値を1に更新する。処理部150は、処理対象のブロックBを非ベタブロックに区分した場合には、判定画像BIの対応する画素の画素値を変更しない(すなわち、画素値は0に維持される)。
図4(a)には、処理部150がすべてのブロックBに対して区分を実行した後の判定画像BIが示されている。この段階では、判定画像BIの各画素の画素値は、「0」か「1」となっている。画素値「0」は、その画素に対応するブロックBが非ベタブロックに区分されたことを示している。画素値「1」は、その画素に対応するブロックBがベタブロックに区分されたことを示している。
図2のステップS500では、処理部150は、各ブロックBを複数の領域に分類して、領域ごとに識別子を付すラベリング処理を実行する。具体的には、処理部150は、判定画像BIにおいて、画素値が「0」であり、互いに隣接する非ベタブロックから構成されるブロック群に対応する領域を1つの非ベタ領域として特定する。処理部150は、画素値が「1」であり、互いに隣接するベタブロックから構成されるブロック群に対応する領域を1つのベタ領域として特定する。そして、処理部150は、同じ領域に属する画素が同じ画素値を有し、互いに異なる領域に属する画素が異なる画素値を有するように、判定画像BIの画素値を変更する。この結果、判定画像BIにおいて、同じが素値を有する画素で構成される画像領域が特定される。
図4(b)には、ラベリング処理後の判定画像BIの一例が示されている。図4(b)の例では、4つの画像領域PG1〜PG4が特定されていることがわかる。このように、判定画像BIにおいて特定された画像領域に対応して、ブロックBを最小単位とする画像領域が、スキャン画像SIにおいて特定される。
この結果、スキャン画像SI(図3)において破線で示す領域A2、A3、A4内のブロックBが非ベタ領域として特定され、これらの領域A2、A3、A4を除いた領域A1がベタ領域として特定される。非ベタ領域A2、A3、A4は、それぞれ、オブジェクト画像Ob2、Ob3、Ob4に対応する領域であることが分かる。また、ベタ領域A1は、背景画像Bg1に対応する領域であることが分かる。上述したように互いに隣接する非ベタブロックは、1つの非ベタ領域として特定されるために、非ベタ領域は通常ベタ領域に囲まれている。
図2のステップS600では、処理部150は、所定の基準値(BCR、BCG、BCB)を用いて、各非ベタ領域の二値画像データを生成する。具体的には、処理部150は、スキャン画像SIの非ベタ領域を構成する各画素の画素値を「0」および「1」のいずれかに二値化することによって、当該非ベタ領域を構成する各画素を、「1」に対応するオブジェクト画素と、「0」に対応する非オブジェクト画素とに分類する。処理部150は、非ベタ領域を構成する画素iの成分値(Ri、Gi、Bi)が、以下の式(2)〜式(4)を全て満たす場合には、画素iに対応する二値画像データの画素値を「0」とし、式(2)〜式(4)のいずれかを満たさない場合には、当該画素値を「1」とする。
BCR−ΔV<Ri<BCR+ΔV ...(2)
BCG−ΔV<Gi<BCG+ΔV ...(3)
BCB−ΔV<Bi<BCB+ΔV ...(4)
式(2)〜式(4)から分かるように、所定の基準値(BCR、BCG、BCB)と、当該非ベタ領域の画素iの対応する成分値との差の絶対値が、全ての成分について所定値ΔVより小さい場合に、画素iは、非オブジェクト画素に分類される。そして、少なくとも1つの成分の当該絶対値が、所定値ΔV以上である場合に、画素iは、オブジェクト画素に分類される。
図8は、スキャン画像SI(図3)に対応する二値画像データWIの一例を示す図である。図8の二値画像データWIにおいて黒い部分はオブジェクト画素によって構成される画像を表している。また、図8の二値画像データWIにおいて白い部分は非オブジェクト画素によって構成される画像を表している。図8の二値画像データWIにおいて、オブジェクト画素によって構成される画像(文字二値画像とも呼ぶ)BK1は、非ベタ領域A2の文字オブジェクト画像Ob2と対応する。また、オブジェクト画素によって構成される画像(写真二値画像とも呼ぶ)BK2は、非ベタ領域A3の写真オブジェクト画像Ob3と対応する。さらに、オブジェクト画素によって構成される画像(描画二値画像とも呼ぶ)BK3は、非ベタ領域A4の描画オブジェクト画像Ob4と対応する。
図2のステップS800では、処理部150は、オブジェクト属性判定処理を実行することによって、スキャン画像SIの各オブジェクト画像の属性を判定する。処理部150は、処理対象のオブジェクト画像の画素密度D、分布幅W、色数Cに基づいて、オブジェクト画像の属性を判定する。
画素密度Dは、スキャン画像SI内のオブジェクト画像に占めるオブジェクト画素(対応する二値画像データにおける画素値が「1」である画素)の割合を示す値である。画素密度Dは、D=No/Naで表される。ここで、値Noは、オブジェクト画素の数、値Naは、オブジェクト画像の全ての画素の数である。
ステップS800では、処理部150は、さらに、スキャン画像SI内のオブジェクト画像の輝度分布を算出する。図9は、オブジェクト画像の輝度分布を表すヒストグラムの一例を示す図である。図9のヒストグラムは、横軸に輝度値Y(256階調)を取り、各輝度値を有する画素の数を縦軸にプロットして得られる。輝度値Yは、RGB画素データ(R、G、B)を用いて、例えば、輝度値Y=((0.298912×R)+(0.586611×G)+(0.114478×B))という式で算出される。
分布幅Wは、例えば、有効輝度値の最大値と有効輝度値の最小値との差分である。有効輝度値は、階調数分(例えば、256個)の輝度値Yのうち、基準数Th2以上の画素が有する輝度値Y(図8のハッチングされた領域に対応する輝度値)である(図9)。図9の例では、分布幅Wは、輝度値Y6と、輝度値Y1との差分である。
色数Cは、本実施例では、上述した有効輝度値の数である。輝度値Yが異なれば、その画素の色が異なるので、互いに異なる輝度値Yの数(輝度値Yの種類の数)は、互いに異なる色の数(色の種類の数)を表している。図9の例では、色数Cは、C1とC2とC3との和である(C1=Y2−Y1、C2=Y4−Y3、C3=Y6−Y5)。
処理部150は、上述した画素密度Dと、分布幅Wと、色数Cとに基づいて、オブジェクト画像の属性を判定する。例えば、処理部150は、上述した画素密度D、分布幅W、色数Cのそれぞれが、対応する基準値Dth、Wth、Cth以上であるか否かを判断する。処理部150は、これらの判断結果を用いて、判定テーブル292を参照して、オブジェクト画像の属性を判定する。本実施例では、オブジェクト画像の属性は、「写真」「文字」「描画」のいずれかに判定される。
図10は、判定テーブル292の一例を示す図である。判定テーブル292から分かるように、対象領域の属性が「文字」であると判定される場合は、以下の2つである。
(1−1)色数C<Cth、かつ、画素密度D<Dth
(1−2)分布幅W<Wth、かつ、色数C≧Cth、かつ、画素密度D<Dth
また、対象領域の属性が「描画」であると判定される場合は、以下の1つである。
(2−1)色数C<Cth、かつ、画素密度D≧Dth
また、対象領域の属性が「写真」であると判定される場合は、以下の2つである。
(3−1)分布幅W≧Wth、かつ、色数C≧Cth
(3−2)分布幅W<Wth、かつ、色数C≧Cth、かつ、画素密度D≧Dth
例えば、(1−1)に示す場合に、対象領域の属性を「文字」であると判定するので、色数Cが比較的少なく、画素密度Dが比較的小さいという、典型的な文字の特徴を有する画像領域の属性を、正しく判定することができる。また、(2−1)に示す場合に、対象領域の属性を「描画」であると判定するので、色数Cが比較的少なく、画素密度Dが比較的大きいという、典型的な描画の特徴を有する画像領域の属性を、正しく判定することができる。また、(3−1)に示す場合に、対象領域の属性を「写真」であると判定するので、分布幅Wが比較的大きく、色数Cが比較的多いという、典型的な写真の特徴を有する画像領域の属性を、正しく判定することができる。
分布巾Wが比較的小さく、かつ、色数Cが比較的多く、かつ、画素密度Dが比較的小さい場合には、分布巾Wが比較的小さい点、画素密度Dが比較的小さい点の2点で、「文字」の特徴に合致している。一方、「写真」の特徴に合致している点は、色数Cが比較的多い点だけであり、「描画」の特徴に合致している点は、見られない。本実施例では、上述した(1−2)の場合には、対象領域の属性は、「文字」であると判定するので、典型的ではないものの、特徴の合致点の多さに基づいて、精度良く画像領域の属性を特定することができる。
スキャナドライバ100は、以上の画像処理を行うことによって、スキャンデータが表す画像に含まれるオブジェクト画像が、写真、文字、描画のいずれに属するかを判定することができる。この結果、オブジェクト画像の属性に適した画像処理(例えば、圧縮処理や色補正処理)を実施することができる。
本実施例では、スキャナドライバ100は、部分太らせ画像データ内の非エッジ画素データ(第2非エッジ画素領域CC4bおよび背景画像Bg1d)に対応する画素データ(成分値)を、部分平滑化画像データ内の対応する画素データ(成分値)に設定する(図4:ステップS175)ことにより部分処理画像データを生成する。このようにすれば、部分処理用画像データが表す部分処理用画像では、エッジとなり得る領域以外の領域の網点が除去され得る。従って、部分処理用画像データを用いて、上述の画像処理における第2エッジ検出処理(図2:ステップS200)を実行すれば、エッジとなり得る領域以外の領域でエッジが検出されることを抑制することができ、この結果、第2エッジ検出処理を適切に実行することができる。また、スキャナドライバ100は、部分処理用画像データ内の画素データのうち、第2エッジ画素データ(第2エッジ画素領域CC4a)に対応する画素データ(成分値)を、スキャンデータ内の対応する画素データ(成分値)に設定する(図4:ステップS175)。このようによれば、スキャン画像のエッジとなり得る領域の画素データ(成分値)が、スキャンデータの画素データ(成分値)に設定されるので、スキャンデータの画素データを用いて第2エッジ検出処理を適切に実行することができる。
ここで、背景色が白色(256階調のRGB値で(255、255、255))で、特定のオブジェクト画像が黄色(256階調のRGB値で(255、255、0))である場合に、輝度値Yを用いたエッジ検出処理を実行することを想定する。輝度値Yは、例えば、輝度値Y=((0.298912×R)+(0.586611×G)+(0.114478×B))の式で定義されることから分かるように、黄色と白色との差が生じるB成分の輝度値Yに対する寄与は、R、G成分と比較して、非常に小さい。従って、輝度値Yを用いてエッジ検出をした場合に、黄色のオブジェクト画像のエッジを精度よく検出できない可能性がある。
一方、本実施例では、スキャナドライバ100は、スキャンデータの色成分ごとに、部分平滑化画像データ、部分第1エッジ検出画像データ、および、部分エッジ二値画像データを生成し、合成処理を色成分ごとに行って、色成分ごとの部分処理用画像データを生成する(図4:ステップS157〜S180)。このようにすれば、部分処理用画像データを用いて、エッジ検出処理(例えば、第2エッジ検出処理(図2:ステップS200))を実行した場合に、精度よくエッジを検出することができる。例えば、黄色で形成されるイラスト画像CY(図3)のエッジを検出する場合には、スキャンデータのR成分またはG成分から生成される部分処理用画像データを用いてエッジ検出処理を行えば、図6に示すように、精度よくエッジを検出することができる。
本実施例では、スキャナドライバ100は、部分エッジ二値画像に含まれるエッジ画素の周囲に位置する非エッジ画素を表す非エッジ画素データ(周囲非エッジ画素データ)を、エッジ画素データに置換する、太らせ処理を実行する(図4:ステップS170)。このようにすれば、図4のステップS175で部分処理用画像データを生成する場合に、オブジェクト画像のエッジ検出領域(例えば、図5(f)のエッジ検出領域CC5a)を広くすることができ、第2エッジ検出処理(図2:ステップS200)を精度よく実行することができる。
本実施例では、スキャナドライバ100は、第2エッジ画像データに含まれるR、G、B色成分のデータを用いて、スキャン画像を、エッジ強度が基準値よりも小さいベタブロック(ベタ領域)と、エッジ強度が基準値以上である非ベタブロック(非ベタ領域)とに区分している(図2:ステップS400、ステップS500)。詳しくは、スキャナドライバ100は、ERave≧ETr、および、EGave≧ETg、および、EBave≧ETbで表される条件のうちの少なくとも一つの条件が成立する場合には、処理対象のブロックを、非ベタブロックに区分する。このようにすれば、輝度値Yを用いてエッジ強度を算出し、基準値と比較して、処理対象のブロックをベタブロックと非ベタブロックとに区分する場合と比較して、処理対象のブロックを、精度よくベタブロックと非ベタブロックとに区分することができる。例えば、スキャン画像が白色背景画像と黄色画像(黄色のエッジ)とを有する場合に、白色背景画像と黄色画像とが属する領域(ブロック)を区分する場合を想定する。輝度値Yを用いて平均エッジ強度を算出した場合には、平均エッジ強度が基準値より小さくなり、非ベタ領域(非ベタブロック)に区分されにくい。しかしながら、色成分ごとの平均エッジ強度(ERave、EGave、EBave)を用いれば、EBaveが低く設定されるものの、ERaveまたはEGaveが基準値を超えて、非ベタ領域(ベタブロック)に区分され易くなる。
本実施例において、スキャン画像SIが原画像の例である。sobelフィルタef1、ef2が、エッジ検出フィルタの例である。R成分スキャンデータ、G成分スキャンデータ、および、B成分スキャンデータが、部分原画像データの例である。部分太らせ画像データが、第1の二値画像データの例である。部分エッジ二値画像データが、第2の二値画像データの例である。R成分エッジ画像データ、G成分エッジ画像データ、および、B成分エッジ画像データが、複数の部分エッジ画像データの例である。判定画像BIは、区分画像データの例である。
C.変形例:
(1)上記実施例において、処理部150は、図2のステップ400で、スキャン画像SIの各ブロックごとに、色成分ごとの平均エッジ強度(ERave、EGave、EBave)と、色成分ごとに定められた基準値(ETr、ETg、ETb)とをそれぞれ比較して、各ブロックを、ベタブロックと非ベタブロックとに区分するようにしていたが、これに限られるものではない。処理部150は、スキャン画像SIのブロックごとに、ブロック内の各画素で、3つの色成分のうちの最も高い成分値(最高成分値とも呼ぶ)を特定し、各画素の最高成分値を用いてブロック内の平均エッジ強度を算出する。そして、処理部150は、算出した平均エッジ強度と、所定の基準値とを比較して、各ブロックをベタブロックと非ベタブロックとに区分するようにしてもよい。
一般的に言えば、処理部150は、複数の色成分のエッジ画像データを用いて、スキャン画像を、エッジ強度が基準値よりも小さな領域(ベタブロック)と、エッジ強度が基準値以上である領域(非ベタブロック)とに区分することが好ましい。
(2)上記実施例では、処理用画像データ生成部140は、網点除去処理(図4)のステップS175で、部分処理用画像データ内の画素データのうち、第2エッジ画素データ(第2エッジ画素領域CC4a)に対応する画素データ(成分値)を、スキャンデータ内の対応する画素データ(成分値)に設定するようにしているが、これに限られない。例えば、処理用画像データ生成部140は、部分エッジ二値画像データ内の画素データのうち、第1エッジ画素データ(第1エッジ画素領域CC3a)に対応する画素データ(成分値)を、スキャンデータ内の対応する画素データ(成分値)に設定するようにしてもよい。
また、上記実施例では、処理用画像データ生成部140は、網点除去処理(図4)のステップS175で、部分処理用画像データ内の画素データのうち、第2非エッジ画素データ(第2非エッジ画素領域CC4b、第2非エッジ画素領域CC4c)に対応する画素データ(成分値)を、部分平滑化画像データ内の対応する画素データ(成分値)に設定するようにしているが、これに限られない。例えば、処理用画像データ生成部140は、部分エッジ二値画像データ内の画素データのうち、第1非エッジ画素データ(第1非エッジ画素領域CC3b、第1非エッジ画素領域CC3c)に対応する画素データ(成分値)を、スキャンデータ内の対応する画素データ(成分値)に設定するようにしてもよい。
(3)上記実施例では、スキャナドライバ100の画像処理機能は、計算機200によって実現されているが、これに代えて、複合機、デジタルカメラ、スキャナなどによって実現されてもよい。また、当該画像処理機能は、1つの装置で実現されてもよいし、これに代えて、ネットワークを介して接続される複数の装置によって、実現されても良い。この場合には、当該画像処理機能を実現する複数の装置を備えるシステムが、画像処理装置に相当する。
(4)上記実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部をハードウェアに置き換えるようにしてもよい。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。