A.実施例:
A-1:複合機200の構成
次に、実施の形態を実施例に基づき説明する。図1は、画像処理装置の一例である複合機200の構成を示すブロック図である。複合機200は、画像処理装置を制御するプロセッサであるCPU210と、DRAMなどの揮発性記憶装置220と、フラッシュメモリやハードディスクドライブなどの不揮発性記憶装置230と、液晶ディスプレイなどの表示部240と、液晶ディスプレイと重畳されたタッチパネルやボタンを含む操作部250と、ユーザの端末装置100などの外部装置と通信を行うためのインタフェース(通信IF)270と、印刷実行部280と、一次元イメージセンサを備える読取実行部290と、を備えている。
読取実行部290は、CPU210の制御に従って、一次元イメージセンサを用いて原稿を光学的に読み取ることによって対象画像データとしてのスキャンデータを生成する。印刷実行部280は、CPU210の制御に従って、複数種類のトナー、具体的には、シアン(C)、マゼンタ(M)、イエロ(Y)、黒(K)のトナーを、色材として用いて、レーザ方式で用紙などの印刷媒体に画像を印刷する。具体的には、印刷実行部280は、感光ドラムを露光して静電潜像を形成し、該静電潜像にトナーを付着させてトナー像を形成する。印刷実行部280は、感光ドラム上に形成されたトナー像を用紙に転写する。なお、変形例では、印刷実行部280は、色材としてのインクを吐出して、用紙上に画像を形成するインクジェット方式の印刷実行部であっても良い。
揮発性記憶装置220は、CPU210が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置230には、コンピュータプログラムPGが格納されている。コンピュータプログラムPGは、CPU210に複合機200の制御を実現させる制御プログラムである。本実施例では、コンピュータプログラムPGは、複合機200の製造時に、不揮発性記憶装置230に予め格納される形態で提供される。これに代えて、コンピュータプログラムPGは、サーバからダウンロードされる形態で提供されても良く、DVD-ROMなどに格納される形態で提供されてもよい。CPU210は、コンピュータプログラムPGを実行することにより、後述する画像処理を実行することができる。
A-2:画像処理
図2は、画像処理のフローチャートである。この画像処理は、例えば、ユーザが、読取実行部290の原稿台に、原稿を載置して、コピーの実行指示を入力した場合に実行される。この画像処理は、原稿を、読取実行部290を用いて読み取ることによって生成されるスキャンデータを取得し、該スキャンデータを用いて、原稿を示す印刷データを生成することで、いわゆる原稿のコピーを実現する処理である。
S10では、CPU210は、ユーザが原稿台に設置した原稿を、読取実行部290を用いて読み取ることによって、対象画像データとしてのスキャンデータを生成する。これによって、CPU210は、取得部として、対象画像データを取得する。原稿は、例えば、複合機200、あるいは、図示しないプリンタによって画像が印刷された印刷物である。生成されたスキャンデータは、揮発性記憶装置220(図1)のバッファ領域に格納される。スキャンデータは、複数個の画素の値を含み、複数個の画素の値のそれぞれは、画素の色をRGB表色系の色値(RGB値とも呼ぶ)で表す。すなわち、スキャンデータは、RGB画像データである。1個の画素のRGB値は、例えば、赤(R)と緑(G)と青(B)との3個の色成分の値(以下、R値、G値、B値とも呼ぶ)を含んでいる。本実施例では、各成分値の階調数は、256階調である。なお、各成分値の階調数は、256階調に限らず、3以上の階調数、例えば、64階調、128階調であっても良い。
図3は、画像処理で用いられる画像の一例を示す第1の図である。図3(A)には、スキャンデータによって示されるスキャン画像SIの一例が示されている。スキャン画像SIは、複数個の画素を含む。該複数個の画素は、第1方向D1と、第1方向D1と直交する第2方向D2と、に沿って、マトリクス状に配置されている。
図3(A)のスキャン画像SIは、原稿の用紙の地色を示す白色の背景Bg1と、3個の文字とは異なるオブジェクトOb1~Ob3と、4個の文字Ob4~Ob7と、2個の文字Ob4、Ob5の背景Bg2と、を含んでいる。文字とは異なるオブジェクトは、例えば、写真や描画である。文字Ob5、Ob6は、黒色の文字である。文字Ob4、Ob7は、黒色とは異なる色、例えば、青色や赤色の文字である。背景Bg2は、白色とは異なる色を有する均一な画像である。
S15では、CPU210は、スキャンデータに対して、エッジ画素特定処理を実行する。エッジ画素特定処理は、スキャン画像SI内の複数個の画素の中から、スキャン画像SI内のエッジを構成する複数個のエッジ画素を特定する処理である。エッジ画素特定処理によって、例えば、エッジを構成するエッジ画素の値が「1」とされ、エッジを構成しない非エッジ画素の値が「0」とされた二値画像データが生成される。
具体的には、CPU210は、スキャンデータを用いて、スキャン画像SI内の複数個の画素の輝度を示す輝度画像データを生成する。輝度Yは、各画素のRGB値(R、G、B)を用いて、例えば、Y=0.299×R+0.587×G+0.114×Bの式によって算出される。CPU210は、輝度画像データの各画素の値に、いわゆるソーベルフィルタ(Sobel filter)を適用して、エッジ強度Seを算出する。CPU210は、これらのエッジ強度Seを複数個の画素の値とするエッジ抽出データを生成する。
以下に、エッジ強度の算出式(1)を示す。式(1)の階調値P(x,y)は、輝度画像内の特定の画素位置(x,y)の階調値を表している。位置xは、第1方向D1の画素位置を示し、位置yは、第2方向D2の画素位置を示している。輝度画像内の画素位置(x,y)におけるエッジ強度Se(x,y)は、その画素位置(x,y)を中心とし隣り合う3行3列の9つの画素の値を用いて算出される。算出式の第1項および第2項は、9つの位置の画素の階調値に、対応する係数をそれぞれ乗じた値の和の絶対値である。第1項は、第1方向D1の階調値の微分(すなわち、横方向の微分)であり、第2項は、第2方向D2の階調値の微分(すなわち、縦方向の微分)である。算出されるエッジ強度Se(x,y)は、0~255の範囲の256階調の値に正規化される。
CPU210は、エッジ抽出データに対して、二値化処理を実行して、二値画像データを生成する。例えば、CPU210は、エッジ画像データにおいて、画素の値(すなわち、エッジ強度)が閾値(例えば、128)以上である画素を、エッジ画素に分類し、画素の値が閾値未満である画素を、非エッジ画素に分類する。これによって、スキャン画像SI内の複数個のエッジ画素が特定される。
図3(B)には、二値画像データによって示される二値画像BIの一例が示されている。この二値画像BIには、スキャン画像SI内のオブジェクトOb1~Ob7のエッジEg1~Eg7を構成する複数個のエッジ画素と、背景Bg1と背景Bg2との間のエッジEg8を構成する複数個のエッジ画素と、が特定されている。このように、エッジは、例えば、主として文字のエッジを含む。また、エッジは、文字とは異なるオブジェクト(例えば、描画や写真)に含まれる細線などのエッジを含む。
S20では、CPU210は、生成された二値画像データに対して、膨張・収縮処理を実行して、膨張・収縮処理済みの二値画像データを生成する。膨張・収縮処理は、二値画像BI内において、特定済みの複数個のエッジ画素によって構成されるエッジを膨張させる膨張処理と、膨張処理済みの該エッジを収縮させる収縮処理と、を含む。なお、膨張処理と収縮処理は、所定回数ずつ(例えば、2回ずつ)実行される。
図4は、膨張処理と収縮処理とを説明する図である。図4(A)には、二値画像BI(図3(B))の部分画像PI1が示されている。部分画像PI1は、膨張処理前のエッジEgA、EgBを含んでいる。2個のエッジEgA、EgBは、隙間NTによって分離されている。また、エッジEgAには、欠けCRが生じており、エッジEgBには、孤立した非エッジ画素IPが含まれている。また、ある程度太い文字の場合には、文字の内部に非エッジ画素の領域ができる(図3(B))。本来、1個の連続した線や文字に対応するエッジが、このような隙間NT、欠けCR、非エッジ画素IPを含んでいる場合には、詳細は後述するが、S25の文字画素特定処理のために、これらを除去することが好ましい。膨張処理と収縮処理は、これらの隙間NT、欠けCR、非エッジ画素を除去するために、実行される。
膨張処理は、例えば、所定サイズのフィルタ、図4(A)の例では、縦3画素×横3画素のサイズのフィルタFI1を用いて、二値画像BIを示す二値画像データに対して実行される。具体的には、CPU210は、フィルタFI1を、二値画像データに対して適用して、膨張処理済みの二値画像データを生成する。すなわち、CPU210は、注目画素に、フィルタFI1の中心位置CC1(図4(A)参照)が重なるように、フィルタFI1を、部分画像PI1を含む二値画像BI上に配置する。CPU210は、フィルタFI1の範囲内に、エッジ画素が1個でも存在する場合には、注目画素に対応する膨張処理済みの二値画像(図示省略)内の画素をエッジ画素に設定する。CPU210は、フィルタFI1の範囲内に、エッジ画素が1つもない場合、すなわち、フィルタFI1の範囲内の9個の画素が、非エッジ画素である場合には、注目画素に対応する膨張処理済みの二値画像内の画素を非エッジ画素に設定する。CPU210は、二値画像BIの全ての画素を注目画素として、膨張処理済みの二値画像内の対応する画素を、エッジ画素および非エッジ画素のいずれかに設定することによって、膨張処理済みの二値画像を表す膨張処理済みの二値画像データを生成する。
図4(B)には、膨張処理済みの二値画像のうちの、図4(A)の部分画像PI1に対応する膨張処理済みの部分画像PI2が示されている。膨張処理済みの部分画像PI2では、上述の隙間NT、欠けCR、孤立した非エッジ画素IPが除去されていることが解る。また、膨張処理済みの部分画像PI2では、図4(A)の部分画像PI1のエッジEgA、EgBに対応する1個のエッジEgCは、エッジEgA、EgBと比較して、太くなっている(膨張している)。
収縮処理は、例えば、所定サイズのフィルタ、図4(B)の例では、縦3画素×横3画素のサイズのフィルタFI2を用いて、膨張処理済みの二値画像データに対して実行される。具体的には、CPU210は、フィルタFI2を、膨張処理済みの二値画像を表す二値画像データに対して適用して、収縮処理済みの二値画像データを生成する。すなわち、CPU210は、注目画素に、フィルタFI2の中心位置CC2(図4(B)参照)が重なるように、フィルタFI2を膨張処理済みの二値画像BI上に配置する。CPU210は、フィルタFI2の範囲内に、非エッジ画素が1個でも存在する場合には、注目画素に対応する収縮処理済みの二値画像内の画素を非エッジ画素に設定する。そして、CPU210は、フィルタFI2の範囲内に、非エッジ画素が1つもない場合、すなわち、フィルタFI2の範囲内の9個の画素が、全てエッジ画素である場合には、注目画素に対応する収縮済みの二値画像内の画素をエッジ画素に設定する。CPU210は、膨張処理済みの二値画像の全ての画素を注目画素として、収縮処理済みの二値画像内の対応する画素を、非エッジ画素およびエッジ画素のいずれかに設定することによって、収縮処理済みの二値画像を示す収縮処理済みの二値画像データを生成する。
図4(C)には、収縮済みの二値画像のうちの、図4(A)の部分画像PI1に対応する収縮処理済みの部分画像PI3が示されている。収縮処理済みの部分画像PI3には、上述の隙間NT、欠けCR、孤立した非エッジ画素IPは、現れていない。そして、図4(A)の部分画像PI1のエッジEgA、EgBに対応する1個のエッジEgDは、エッジEgA、EgBと同じ程度の太さまで、収縮している。このような膨張処理と収縮処理が複数回繰り返されると、比較的小さな文字、例えば、12ポイント以下の文字を構成する画素は、概ね全てエッジ画素として特定される。例えば、図3(B)の二値画像BIでは、スキャン画像SI内の文字Ob4~Ob7の内部はエッジ画素として特定されていないが、膨張・縮小処理後には、これらの文字の全体がエッジ画素として特定されるものとする。
なお、上述したフィルタFI1、FI2のサイズ、すなわち、膨張処理による膨張の程度、および、収縮処理による収縮の程度は、一例である。例えば、フィルタFI1、FI2は、例えば、縦5画素×横5画素のフィルタであっても良いし、縦7画素×横7画素のフィルタであっても良い。なお、最終的に生成される膨張・収縮処理済みの二値画像データは、文字などのエッジにおけるぼけた部分を構成する複数個の画素が、漏れなく、エッジ画素として特定されるように、膨張・収縮処理前の二値画像データエッジよりも、エッジが膨張された状態であることが好ましい。
以上の膨張・収縮処理済みの二値画像データを、以下では、単に、二値画像データと呼び、膨張・収縮処理済みの二値画像データにおいて特定されているエッジ画素を、単に、エッジ画素と呼ぶ。
図2のS25では、CPU210は、二値画像データに対して、二値画像BI内のエッジ領域を特定する領域特定処理を実行する。具体的には、二値画像データに対してラベリング処理が実行される。例えば、CPU210は、連続する一つながりの複数個のエッジ画素を含む画素群に、1個の識別子を割り当て、互いに離れた複数個のエッジ画素をそれぞれ含む複数個の画素群に、互いに異なる識別子を割り当てる。1個の識別子が割り当てられた画素群は、1個のエッジ領域として特定される。図3(B)の例では、二値画像BIにおいて、図3(A)のスキャン画像SI内の7個のオブジェクトOb1~Ob7と、二値画像BI内の8個の符号Eg1~Eg8に対応する8個のエッジ領域が特定される。例えば、文字は、1文字ずつ離れているので、文字ごとに異なるエッジ領域が特定される。
S30では、CPU210は、S25にて特定された複数個のエッジ領域から、1個のエッジ領域を注目領域として選択する。
S35では、CPU210は、注目領域に対して、文字・背景色特定処理を実行する。文字・背景色特定処理は、注目領域が文字に対応する場合に、当該文字の色(以下、文字色とも呼ぶ)と、当該文字の背景の色(以下、背景色とも呼ぶ)と、を特定する処理である。注目領域が文字に対応しない場合、例えば、注目領域が描画や写真に対応する場合には、文字色と背景色とは特定されない。文字・背景色特定処理の詳細は、後述する。なお、文字・背景色特定処理は、色特定部により実行される処理の一例である。
S40では、CPU210は、注目領域について、文字色と背景色とを特定できたか否かを判断する。文字色と背景色が特定できた場合には(S40:YES)、CPU210は、文字を鮮明にするためのS45~S55の処理を実行する。文字色と背景色が特定できない場合には(S40:NO)、CPU210は、S45~S55の処理をスキップする。
S45では、CPU210は、文字画素特定処理を実行する。文字画素特定処理は、注目領域に対応するスキャン画像SI内の複数個の画素から、後述する文字・背景画素置換処理(S55)にて、文字色に置換されるべき文字画素を特定する処理である。文字画素特定処理の詳細は、後述する。
S50では、CPU210は、背景画素特定処理を実行する。背景画素特定処理は、注目領域に対応するスキャン画像SI内の複数個の画素から、後述する文字・背景画素置換処理(S55)にて、背景色に置換されるべき背景画素を特定する処理である。例えば、文字画素の周囲のぼけた色を有する画素が背景画素として特定される。背景画素特定処理の詳細は、後述する。なお、背景画素特定処理は、第2特定部により実行される処理の一例である。
S55では、CPU210は、スキャンデータに対して文字・背景画素置換処理を実行する。具体的には、CPU210は、スキャンデータにおいて、スキャン画像SI内の複数個の画素のうち、S45にて特定済みの文字画素の値を、S35にて特定済みの文字色を示す値に置換し、S50にて特定済みの背景画素の値を、S35にて特定済みの背景色を示す値に置換する。なお、文字・背景画素置換処理は、置換処理の一例である。
S60では、CPU210は、全てのエッジ領域を注目領域として処理したか否かを判断する。未処理のエッジ領域がある場合には(S60:NO)、CPU210は、S30に処理を戻す。全てのエッジ領域が処理された場合には(S60:YES)、CPU210は、S65に処理を進める。
S65では、CPU210は、文字・背景画素置換処理後のスキャンデータに対して、網点平滑化処理を実行して、平滑化画像を示す平滑化画像データを生成する。具体的には、CPU210は、スキャンデータに含まれる複数個の非エッジ画素の値のそれぞれに対して、ガウスフィルタなどの平滑化フィルタを用いた平滑化処理を実行して、平滑化処理済みの複数個の非エッジ画素の値を算出する。平滑化処理の対象となる非エッジ画素は、S15のエッジ画素特定処理によって生成された二値画像データを参照して特定される。CPU210は、スキャンデータに含まれる複数個のエッジ画素の値と、平滑化処理済みの複数個の非エッジ画素の値と、を含む平滑化画像データを生成する。
図3(C)には、平滑化画像データによって示される平滑化画像GIが示されている。平滑化画像GIは、白色の背景Bg1gと、スキャン画像SI内のオブジェクトOb1~Ob7、背景Bg2が平滑化されたオブジェクトOb1g~Ob7g、背景Bg2gを含んでいる。これらのオブジェクトOb1g~Ob7g、背景Bg2gのエッジ以外の部分(非エッジ部分とも呼ぶ)は、スキャン画像SI内のオブジェクトOb1~Ob7、背景Bg2と比較して、平滑化されている。
S70では、CPU210は、平滑化画像データに対して、エッジ鮮鋭化処理を実行して、処理済画像データを生成する。具体的には、CPU210は、平滑化画像データに含まれる複数個のエッジ画素の値のそれぞれに対して、アンシャープマスク処理や、鮮鋭化フィルタを適用する処理などの鮮鋭化処理を実行して、鮮鋭化処理済みの複数個のエッジ画素の値を算出する。鮮鋭化処理の対象となるエッジ画素は、S15のエッジ画素特定処理によって生成された二値画像データを参照して特定される。CPU210は、平滑化画像データに含まれる複数個の非エッジ画素の値(平滑化処理済みの複数個の非エッジ画素の値)と、鮮鋭化処理済みの複数個のエッジ画素の値と、を含む処理済画像データを生成する。
図3(D)には、処理済画像データによって示される処理済画像FIが示されている。処理済画像FIは、白色の背景Bg1fと、スキャン画像SI内のオブジェクトOb1~Ob7、背景Bg2に対応するオブジェクトOb1f~Ob7f、背景Bg2fを含んでいる。これらのオブジェクトOb1f~Ob7f、背景Bg2fのエッジは、スキャン画像SI内のオブジェクトOb1~Ob7、背景Bg2のエッジや、平滑化画像GI内のオブジェクトOb1g~Ob7g、背景Bg2gのエッジと比較して、鮮鋭化されている、すなわち、シャープになっている。なお、S55からS70の処理済画像データを生成する処理は、生成部により実行される処理の一例である。
S75では、CPU210は、処理済画像データを用いて印刷データを生成する印刷データ生成処理を実行する。具体的には、RGB画像データである処理済画像データに対して色変換処理が実行されて、印刷に用いられる色材に対応する色成分(C、M、Y、Kの成分)を有する色値であるCMYK値で画素ごとの色を示すCMYK画像データが生成される。色変換処理は、例えば、公知のルックアップテーブルを参照して実行される。CMYK値画像データに対して、ハーフトーン処理が実行されて、印刷に用いられる色材ごと、かつ、画素ごとに、ドットの形成状態を示すドットデータが生成される。ドットの形成状態は、例えば、ドット有、ドット無の2種類の状態や、大ドット、中ドット、小ドット、ドット無の4種類の状態を取り得る。ハーフトーン処理は、例えば、ディザ法や、誤差拡散法に従って実行される。該ドットデータは、印刷時に用いられる順に並べ替えられ、該ドットデータに、印刷コマンドが付加されることによって、印刷データが生成される。
S80では、CPU210は、印刷処理を実行して、画像処理を終了する。具体的には、CPU210は、印刷データを印刷実行部280に供給して、印刷実行部280に処理済画像を印刷させる。
以上説明した画像処理によれば、S55では、CPU210は、スキャンデータに対して、文字・背景画素置換処理が実行されるので、文字色と背景色との境界を鮮明にすることができる。例えば、文字・背景画素置換処理によって、図3(A)のスキャン画像SI内の文字Ob4~Ob7のうちの背景とのエッジ部分の画素の色が、その文字の色に変更される。また、スキャン画像SIの背景Bg1、Bg2うち、文字Ob4~Ob7のエッジ部分に位置する画素の色が、その背景の色に変更される。この結果、最終的に印刷される処理済み画像FIにおいて、これらの文字色と背景色との境界が鮮明になる。この結果、処理済み画像FIにおいて文字の見栄えを向上できる。
例えば、スキャン画像SI内の文字Ob4~Ob7を構成する画素は、原稿上では、均一な色を有するので、該所定の色を有するべき画素である。また、これらの文字の背景Bg1、Bg2の色は、原稿上では、均一な色を有する。しかしながら、スキャンデータのようにイメージセンサを用いて生成される画像データによって示される画像では、特に、エッジの部分に、いわゆる「ぼけ」が発生する。このために、スキャン画像SI上では、例えば、文字Ob4~Ob7を構成する複数個の画素のうち、特に、エッジに位置する画素は、原稿上の色ではなく、例えば、原稿上の文字の色より明るく、原稿上の背景の色よりも暗い別の色を有し得る。本実施例では、処理済み画像FIにおいて、そのような文字のエッジのぼけが低減され、これらの文字色と背景色との境界が鮮明になる。
また、処理済画像データでは、背景Bg2fなどの均一な部分や、オブジェクトのエッジとは異なる部分を構成する非エッジ画素の値には、平滑化処理済みの値が用いられている。この結果、処理済画像のエッジとは異なる部分に、例えば、モアレの原因となる網点が表れることを抑制できるので、印刷される処理済画像にモアレなどの不具合が発生することを抑制できる。この結果、印刷される処理済画像の見栄えを向上することができる。
例えば、スキャンデータの生成に用いられた原稿は、画像が印刷された印刷物である。このため、例えば、原稿内の白とは異なる色を有する背景Bg2などの均一な部分は、画像を形成するドットレベルでみると、網点を形成している。網点は、複数個のドットと、ドットが配置されていない部分(原稿の地色を示す部分)と、を含む。このために、スキャン画像SI内の背景Bg2を示す領域には、画素レベルでみると、網点が示されている。網点内のドットは、原稿の印刷時に用いられるディザマトリクスなどの影響によって、周期性を持って並んでいる。このためにスキャンデータを用いて印刷を行うと、ハーフトーン処理前の元画像(スキャン画像SI)内に存在している網点のドットの周期成分と、印刷画像を構成する網点のドットの周期成分と、が干渉して、モアレが表れやすい。本実施例の処理済画像では、平滑化処理によって、元画像(スキャン画像SI)内のエッジとは異なる部分のドットの周期成分が低減される。この結果、処理済画像データを用いて、処理済画像を印刷する場合に、例えば、印刷される処理済画像にモアレが発生することを抑制できる。
さらに、スキャンデータの複数個のエッジ画素の値に対して、エッジ鮮鋭化処理が実行され(S70)、複数個のエッジ画素とは異なる複数個の画素に対して、網点平滑化処理(S65)が実行される。この結果、エッジを構成しない部分が平滑化され、かつ、文字色と背景色との境界が適切に鮮明にされ、かつ、他のエッジ(例えば、オブジェクトOb1f~Ob3fのエッジ)が強調された処理済み画像FIを示す処理済画像データを生成することができる。エッジ鮮鋭化処理は、文字・背景画素置換処理によって、文字色と背景色との境界を鮮明にした後に実行されるため、より処理済み画像FIにおいて文字の見栄えを向上できる。また、文字・背景色特定処理により、注目領域において文字色と背景色とが特定されない場合であっても、エッジ鮮鋭化処理は実行されるため、複数の背景色上の文字(例えば写真の中の文字)に対してもエッジが強調された処理済み画像データを生成することができる。
A-3.文字・背景色特定処理
図2のS35の文字・背景色特定処理について説明する。図5は、文字・背景色特定処理のフローチャートである。S120では、CPU210は、代表色特定処理を実行する。代表色特定処理は、シアン(C)、マゼンタ(M)、イエロ(Y)、赤(R)、緑(G)、青(B)、黒(K)、白(W)の8個の基本色の中から、注目領域の2つの代表色を特定する処理である。注目領域が文字に対応する場合には、文字色と背景色に対応する2つの代表色を決定できる。
図6は、代表色特定処理のフローチャートである。図7は、代表色特定処理の説明図である。S200では、CPU210は、注目領域に外接する矩形領域SA(特定領域の一例)を設定する。図7(A)には、スキャン画像SIの文字Ob7(図3(A))に対応するエッジ画素Eg7(図3(B))によって構成されるエッジ領域EAが注目領域である場合の例が示されている。図7(A)にてクロスハッチングされている領域がエッジ領域EAを示している。図7(A)に示すように、図2のS20の膨張・収縮処理によって、スキャン画像SIの文字Ob7の内部を含めた全体に対応する領域がエッジ領域EA(エッジ画素Eg7)として特定されている。図7(A)には、エッジ領域EAに外接する矩形領域SAが図示されている。
S210では、CPU210は、二値画像BIにおいて、注目領域に外接する矩形領域SAを複数個のブロックBLに分割する。例えば、図7(A)の例では、矩形領域SAは、横8×縦10のマトリクス状に配置された80個のBLに分割されている。1個のブロックBLは、例えば、縦m×横n個の(m×n)個の画素を含んでいる(m、nは2以上の整数)。
S220では、CPU210は、二値画像BIにおいて設定された複数個のブロックBLから、1個の注目ブロックを選択する。
S230では、CPU210は、注目ブロック内の複数個の画素を8個の基本色のいずれかに分類する。図7(B)には、RGB色空間CPが示されている。立法体のRGB色空間CCの8個の頂点は、8個の基本色に対応している。すなわち、8個の頂点は、K点Vk(0,0,0)、R点Vr(255,0,0)、G点Vg(0,255,0)、B点Vb(0,0,255)、C点Vc(0,255,255)、M点Vm(255,0,255)、Y点Vy(255,255,0)、W点Vw(255,255,255))である。括弧内の数字は、(R、G、B)の各色成分の値である。RGB色空間CPは、3枚の平面F1~F3によって、8個の基本色C、M、Y、R、G、B、K、Wに対応する8個の立方体の空間CSc、CSm、CSy、CSr、CSg、CSb、CSk、CSwに分割できる。平面F1は、R軸AXrと垂直で、R軸AXrの中点Mr(128、0、0)を通る平面である。平面F2は、G軸AXgと垂直で、G軸AXgの中点Mg(0、128、0)を通る平面である。平面F3は、B軸AXbと垂直で、B軸AXbの中点Mb(0、0、128)を通る平面である。例えば、図7(B)でハッチングされた空間CScは、シアン(C)に対応する空間である。例えば、注目ブロック内の複数個の画素のうち、スキャン画像SI内の対応するRGB値がCに対応する空間CSc内に位置する画素は、Cに分類される。
S240では、CPU210は、注目ブロックの最頻色を、注目ブロックのブロック色に決定する。注目ブロックの最頻色は、8個の基本色のうち、S230にて最も多数の画素が分類された色である。S250では、CPU210は、8個の基本色のうち、決定された注目ブロックに対応する基本色の頻度を1だけ加算する。
S260では、CPU210は、注目領域に外接する矩形領域SA内の全てのブロックBLを注目ブロックとして処理したか否かを判断する。未処理のブロックBLがある場合には(S260:NO)、CPU210は、S220に処理を戻す。全てのブロックBLが処理された場合には(S260:YES)、CPU210は、S270に処理を進める。
S270では、CPU210は、閾値TH以上の頻度を有する1以上の基本色を注目領域の代表色として決定する。図7(C)には、8個の基本色のそれぞれの頻度を示すヒストグラムである。図7(C)の例では、8個の基本色C、M、Y、R、G、B、K、Wのうち、C(シアン)とB(青)との頻度が閾値TH1以上である。このために、図7(C)の例では、CとBとが注目領域の代表色として決定される。決定される代表色の数は、2色に限らず、1色あるいは3色以上である場合がある。閾値TH1は、例えば、注目領域に外接する矩形領域SAに設定されたブロックBLの総数の20%程度に設定される。
代表色特定処理が終了すると、図5のS130では、CPU210は、決定された注目領域の代表色の数は、2色であるか否かを判断する。一般的に、原稿上の1個の文字は1色で表現され、文字の背景も1色である可能性が高いために、注目領域が文字に対応する場合には、代表色の数は、文字色と背景色とに対応する2色である。注目領域が文字とは異なるオブジェクト(例えば、写真)に対応する場合には、当該オブジェクトは文字より多数の色を含み得るので、代表色の数は、2色とは異なる数になり得る。
注目領域の代表色の数が2色でない場合には(S130:NO)、注目領域が文字とは異なるオブジェクトに対応する可能性が高いため、注目領域は、図2のS45~S55の対象とする必要がない。このために、この場合には、CPU210は、文字色や背景色を決定することなく、文字・背景色特定処理を終了する。
注目領域の代表色の数が2色である場合には(S130:YES)、S140にて、CPU210は、注目領域を構成する複数個のエッジ画素(オブジェクト画素の一例)を、8個の基本色のいずれかに分類する。分類の方法には、図6のS230にて説明した方法が用いられる。
S150では、エッジ画素の最頻色は、S120にて決定された2個の代表色の一方と一致するか否かを判断する。エッジ画素の最頻色は、8個の基本色のうち、S140にて最も多数のエッジ画素が分類された色である。注目領域が文字に対応する場合には、エッジ画素の大部分はスキャン画像SI内の文字を構成する画素に対応するので、エッジ画素の最頻色は文字色に対応する。上述のように、注目領域が文字に対応する場合には、2個の代表色は、文字色と背景色とに対応する2色である。したがって、注目領域が文字に対応する場合には、エッジ画素の最頻色は2個の代表色の一方と一致する。注目領域が文字とは異なるオブジェクトに対応する場合には、エッジ画素の最頻色は、2個の代表色のいずれとも一致しない場合がある。
エッジ画素の最頻色が2個の代表色のいずれとも一致しない場合には(S150:NO)、注目領域が文字とは異なるオブジェクトに対応する可能性が高いため、注目領域は、図2のS45~S55の対象とする必要がない。このために、この場合には、CPU210は、文字色や背景色を決定することなく、文字・背景色特定処理を終了する。
エッジ画素の最頻色が2個の代表色の一方と一致する場合には(S150:YES)、S160にて、CPU210は、複数個のエッジ画素の平均色を文字色として特定する。具体的には、CPU210は、複数個のエッジ画素のR値の平均値Rav1と、G値の平均値Gav1と、B値の平均値Bav1と、から成るRGB値(Rav1、Bav1、Bav1)を、文字色を示すRGB値として算出する。このように、矩形領域SAにて特定される文字を構成する複数個のエッジ画素の値を用いて、文字色が特定される。この結果、精度良く文字色を特定することができる。変形例としては、CPU210は、エッジ画素の最頻色を文字色として特定しても良い。この場合には、C、M、Y、R、G、B、K、Wの8個の基本色のいずれかが文字色として特定される。
S170では、CPU210は、注目領域に外接する矩形領域SA内の複数個の画素のうち、エッジ画素を除いた複数個の画素(非エッジ画素)の平均色を背景色として特定する。具体的には、CPU210は、複数個の非エッジ画素のR値の平均値Rav2と、G値の平均値Gav2と、B値の平均値Bav2と、から成るRGB値(Rav2、Bav2、Bav2)を、背景色を示すRGB値として算出する。このように、矩形領域SAにて特定される文字を構成しない複数個の非エッジ画素の値を用いて、背景色が特定される。この結果、精度良く背景色を特定することができる。変形例としては、CPU210は、上述した2個の代表色のうち、エッジ画素の最頻色とは異なる色を背景色として特定しても良い。この場合には、8個の基本色のうちの文字色とは異なるいずれかの色が、背景色として特定される。文字色と背景色とが特定されると、CPU210は、文字・背景色特定処理を終了する。
以上説明した文字・背景色特定処理によれば、スキャン画像SI内の特定の文字(例えば、文字Ob7)に対応する矩形領域SAが複数個のブロックBLに分割される(図6のS210)。該複数個のブロックBLのそれぞれの複数個の画素の値を用いて、複数個のブロックBLに対応する複数個のブロック色が代表色として決定される(図6のS230、S240)。閾値TH以上の個数のブロックBLに対応するブロック色に基づいて文字色と背景色とが特定される(図6のS270、図5のS140~S170)。この結果、複数個のブロック色を用いて、文字色と背景色とを適切に特定できる。
さらに、CPU210は、複数個のエッジ領域に対応する矩形領域SAのそれぞれについて、閾値TH以上の個数のブロックBLに対応するブロック色(代表色)の個数が2であるか否かを判断する(図5のS130)。CPU210は、代表色の個数が2である矩形領域SAについて文字色と背景色とを決定し(図5のS160、S170)、代表色の個数が2とは異なる矩形領域SAについて文字色と背景色とを特定しない。この結果、オブジェクトが文字である場合には、文字色が特定され、オブジェクトが文字でない場合には、文字色が特定され難い。したがって、オブジェクトが文字である場合に、該文字において文字色と背景色とを鮮明にすることができ、オブジェクトが文字でない場合には、該オブジェクトに文字のための処理(例えば、図2のS45~S55の処理)が誤って実行されることを抑制できる。
さらに、矩形領域SA内の複数個のエッジ画素の値を用いて、矩形領域SA内のオブジェクト(例えば、文字、写真)の色が、2個の代表色のいずれかに対応(実施例では一致)するか否かが判断される(図5のS150)。オブジェクトの色が2個の代表色のいずれかに対応する場合には、文字色が特定され、オブジェクトの色が2個の代表色のいずれにも対応しない場合には、文字色が特定されない(図5のS150、160)。同様に、オブジェクトの色が2個の代表色のいずれかに対応する場合には、背景色が特定され、オブジェクトの色が2個の代表色のいずれにも対応しない場合には、背景色が特定されない(図5のS150、170)。この結果、オブジェクトが文字である場合には、文字色が特定でき、オブジェクトが文字でない場合には、文字色がより特定され難い。したがって、オブジェクトが文字である場合に、該文字において文字色と背景色とを鮮明にすることができ、オブジェクトが文字でない場合には、該オブジェクトに文字のための処理(例えば、図2のS45~S55の処理)が誤って実行されることをさらに抑制することができる。
A-4:文字画素特定処理
図2のS45の文字画素特定処理について説明する。図8は、文字画素特定処理のフローチャートである。S400では、CPU210は、フラグデータを初期化する。初期化されたフラグデータの複数個のフラグの値は、初期値、具体的には、文字画素でも背景画素でもないことを示す値(本実施例では、「0」)を有する。
S405では、CPU210は、注目領域に対応するスキャン画像SI内の複数個のエッジ画素の中から、所定の処理順序で1個の注目画素を選択する。本実施例の処理順では、例えば、図7(A)の第1方向D1と平行な複数本のラスタラインのうち、第2方向D2の上流側(図7(A)の上側)から下流側に向かって順次に処理対象となる。そして、1本のラスタライン上の複数個のエッジ画素の中では、第1方向D1の上流側(図7(A)の左側)から下流側に向かって順次に処理対象となる。すなわち、第1方向D1の位置が同じ複数個のエッジ画素は、第2方向D2の上流側のエッジ画素が、下流側のエッジ画素よりも先に選択される。また、第2方向D2の位置が同じ複数個のエッジ画素は、第1方向D1の上流側のエッジ画素が、下流側のエッジ画素よりも先に選択される。第1方向D1(図3(A)の左から右に向かう方向)、および、第2方向D2(図3(A)の上から下に向かう方向)を、処理方向とも呼ぶ。
CPU210は、図2のS15の膨張・収縮処理後の二値画像データを参照して、注目領域内の複数個のエッジ画素から、上述した処理順で順次に注目画素を選択する。
S415では、CPU210は、注目画素の値(RGB値)は、第1文字色範囲内であるか否かを判断する。第1文字色範囲は、図2のS35の文字・背景色特定処理によって特定された文字色を含む予め定められた範囲であり、文字色を示すRGB値を(Rt、Gt、Bt)とする場合に、RGBの各成分値(R、G、B)が、以下の式(2)を満たす範囲である。
|R-Rt|≦TH1、かつ、|G-Gt|≦TH1、かつ、|B-Bt|≦TH1
…(2)
閾値TH1は、各成分値が、0~255の範囲の階調値である場合に、例えば、50である。注目画素の値が、第1文字色範囲内である場合は、注目画素は、背景色よりも文字色に近い色を有すると考えられる。以下では、S415にて判断される条件、すなわち、「注目画素の値が、第1文字色範囲内であること」を、判断条件Aと呼ぶ。
判断条件Aが満たされる場合には(S415:YES)、CPU210は、S420に処理を進める。判断条件Aが満たされない場合には(S415:NO)、CPU210は、S450に処理を進める。
S420では、CPU210は、注目画素の値が第2文字色範囲内であり、かつ、周囲領域内の複数個の画素の値の平均値が第3文字色範囲内であるか否かを判断する。第2文字色範囲は、文字色を含む予め定められた範囲であり、第1文字色範囲より狭い範囲である。具体的には、第2文字色範囲は、RGBの各成分値(R、G、B)が、以下の式(3)を満たす範囲である。
|R-Rt|≦TH2、かつ、|G-Gt|≦TH2、かつ、|B-Bt|≦TH2
…(3)
閾値TH2は、閾値TH1より小さな値であり、各成分値が、0~255の範囲の階調値である場合に、例えば、10である。
周囲領域は、本実施例では、注目画素を中心とした縦5画素×横5画素の矩形の領域である。CPU210は、該周囲領域内の25個の画素のRGB値の平均値(Rav、Gav、Bav)を算出する。第3文字色範囲は、文字色を示すRGB値を(Rt、Gt、Bt)とする場合に、RGB値の平均値(Rav、Gav、Bav)が、以下の式(4)を満たす範囲である。
|Rav-Rt|≦TH3、かつ、|Gav-Gt|≦TH3、|Gav-Gt|≦TH3 …(4)
閾値TH3は、例えば、20である。該平均値が、第3文字色範囲内である場合は、周囲領域内の画素の色は、文字色に比較的近い色であると考えられる。以下では、S420にて判断される条件、すなわち、「注目画素の値が第2文字色範囲内であり、かつ、周囲領域内の複数個の画素の値の平均値が第3文字色範囲内であること」を、判断条件Bと呼ぶ。
判断条件Bが満たされる場合には(S420:YES)、CPU210は、S445に処理を進める。判断条件Bが満たされない場合には(S420:NO)、CPU210は、S425に処理を進める。
S425では、CPU210は、注目画素の上側に隣接する画素が文字画素であり、かつ、注目画素の2個下の画素の値が背景色範囲内であるか否かを判断する。フラグデータにおいて、注目画素の上側に隣接する画素に対応するフラグが、文字画素を示す値である場合には、該隣接する画素は、文字画素であると判断される。
背景色範囲は、図2のS35の文字・背景色特定処理によって特定された背景色を含む予め定められた範囲である。背景色範囲は、例えば、図2のS35にて特定された背景色を示すRGB値を(Rb、Gb、Bb)とする場合に、以下の式(5)を満たす範囲である。
|R-Rb|≦TH4、かつ、|G-Gb|≦TH4、かつ、|B-Bb|≦TH4
…(5)
閾値TH4は、例えば、0~255の範囲の階調値である場合に、例えば、20である。注目画素の値が、背景色範囲内である場合には、注目画素は、背景色に近い色を有すると考えられる。以下では、S425にて判断される条件、すなわち、「注目画素の上側に隣接する画素が文字画素であり、かつ、注目画素の2個下の画素の値が背景色範囲内であること」を、判断条件Cと呼ぶ。
判断条件Cが満たされる場合には(S425:YES)、CPU210は、S445に処理を進める。判断条件Cが満たされない場合には(S425:NO)、CPU210は、S430に処理を進める。
S430では、CPU210は、注目画素の左側に隣接する画素が文字画素であり、かつ、注目画素の2個右の画素の値が背景色範囲内であるか否かを判断する。左側に隣接する画素が文字画素であるか否かは、S425と同様に、フラグデータを参照して判断される。背景色範囲は、S425で用いられる背景色範囲と同じである。以下では、S430にて判断される条件、すなわち、「注目画素の左側に隣接する画素が文字画素であり、かつ、注目画素の2個右の画素の値が背景色範囲内であること」を、判断条件Dと呼ぶ。
判断条件Dが満たされる場合には(S430:YES)、CPU210は、S445に処理を進める。判断条件Dが満たされない場合には(S430:NO)、CPU210は、S435に処理を進める。
S435では、CPU210は、注目画素の下側に隣接する画素の値が第2文字色範囲内であり、かつ、該下側に隣接する画素の周囲領域内の複数個の画素の値の平均値が第3文字色範囲内であるか否かを判断する。第2文字色範囲は、上記式(3)を満たす範囲である。周囲領域は、上述した注目画素の周囲領域と同様に、該下側に隣接する画素を中心とする縦5画素×横5画素の矩形の領域である。第3文字色範囲は、上記式(4)を満たす範囲である。以下では、S435にて判断される条件、すなわち、「注目画素の下側に隣接する画素の値が第2文字色範囲内であり、かつ、該下側に隣接する画素の周囲領域内の複数個の画素の値の平均値が第3文字色範囲内であること」を、判断条件Eと呼ぶ。
判断条件Eが満たされる場合には(S435:YES)、CPU210は、S445に処理を進める。判断条件Eが満たされない場合には(S435:NO)、CPU210は、S440に処理を進める。
S440では、CPU210は、注目画素の右側に隣接する画素の値が第2文字色範囲内であり、かつ、該右側に隣接する画素の周囲領域内の複数個の画素の値の平均値が第3文字色範囲内であるか否かを判断する。第2文字色範囲は、上記式(3)を満たす範囲である。周囲領域は、上述した注目画素の周囲領域と同様に、該右側に隣接する画素を中心とする縦5画素×横5画素の矩形の領域である。第3文字色範囲は、上記式(4)を満たす範囲である。以下では、S440にて判断される条件、すなわち、「注目画素の右側に隣接する画素の値が第2文字色範囲内であり、かつ、該右側に隣接する画素の周囲領域内の複数個の画素の値の平均値が第3文字色範囲内であること」を、判断条件Fと呼ぶ。
判断条件Fが満たされる場合には(S440:YES)、CPU210は、S445に処理を進める。判断条件Fが満たされない場合には(S440:NO)、CPU210は、S450に処理を進める。
S445では、CPU210は、注目画素を文字画素として特定する。このために、この場合には、CPU210は、フラグデータにおいて、注目画素に対応するフラグの値を、文字画素を示す値(本実施例では、「1」)に更新する。
S450では、CPU210は、注目領域を構成する全てのエッジ画素を注目画素として処理したか否かを判断する。未処理のエッジ画素がある場合には(S450:NO)、CPU210は、S405に戻って、未処理のエッジ画素を注目画素として選択する。全てのエッジ画素が処理された場合には(S450:YES)、CPU210は、文字画素特定処理を終了する。
以上の説明から解るように、文字画素特定処理において、注目画素が、膨張・収縮処理後の二値画像データにおいて、エッジ画素として特定されている場合、すなわち、注目画素は、判断条件A~Fの少なくとも一部の判断対象とされる。そして、判断条件A~Fについて、以下の(1)~(5)の場合に、該注目画素は、文字画素として特定される。
(1)判断条件Bを少なくとも満たす場合
(2)判断条件A、Cの両方を少なくとも満たす場合
(3)判断条件A、Dの両方を少なくとも満たす場合
(4)判断条件A、Eの両方を少なくとも満たす場合
(5)判断条件A、Fの両方を少なくとも満たす場合
なお、第2文字色範囲は、第1文字色範囲より狭いので、判断条件Bを満たす場合には、判断条件Aは、必ず満たされる。また、判断条件Aが満たされない場合には、判断条件Bも満たされない。したがって、判断条件Aが満たされない場合には、上記(1)~(5)のいずれにも該当しない。
以下、具体例を説明する。図9は、文字画素特定処理の第1の説明図である。図9(A)には、特定された背景色を有する背景上に位置する特定された文字色を有する文字(例えば、図3(A)の文字Ob6)を構成する左右方向(第1方向D1)に延びる線の下側のエッジ(下エッジとも呼ぶ)の拡大図が示されている。下エッジの近傍の領域は、内側領域TAと、外側領域BAと、中間領域MAと、を含んでいる。内側領域TAは、文字側の領域である。外側領域BAは、背景側の領域である。中間領域MAは、内側領域TAと外側領域BAとの間の領域である。内側領域TA内の画素は、文字色に近似した色を有している。外側領域BA内の画素は、背景色に近似した色を有している。中間領域MA内の画素は、文字色と背景色との中間の色を有している。中間領域MAは、いわゆる「ぼけ」が生じている領域である。これらの領域TA、BA、MA内の複数個の画素は、膨張・収縮済みの二値画像データにおいて、エッジ画素として特定されている。このために、これらの領域TA、BA、MA内の複数個のエッジ画素に対応するエッジ領域が注目領域である場合には、これらのエッジ画素が、注目画素として順次に選択される(S405)。
内側領域TA内の画素TP1の色は、文字色に近似している。このために、画素TP1が注目画素である場合には、画素TP1の値は、第1文字色範囲内であると判断される(S415:YES)。そして、画素TP1の値は、第2文字色範囲内であると判断される。また、周囲範囲AA1は内側領域TAの画素を多く含むので、周囲範囲AA1の複数個の画素の値の平均値は文字色に近い。このために、該平均値は、第3文字色範囲内であると判断される(S420:YES)。したがって、画素TP1は、上記判断条件Bを満たすので、文字画素として特定される(S445)。
中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素TP2の色は、背景色よりも文字色に近いが、内側領域TA内の画素の色ほど文字色に近くない。このために、画素TP2が注目画素である場合には、画素TP2の値は、第1文字色範囲内であると判断される(S415:YES)が、第2文字色範囲内ではないと判断される(S420:NO)。すなわち、画素TP2の値は、判断条件Aを満たすが、判断条件Bを満たさない。
画素TP2の上側に隣接する画素SP1は、内側領域TA内の画素である。画素SP1は、画素TP2が注目画素として選択される前に、注目画素として選択されて文字画素として特定される。画素TP2の2個下の画素SP2は、外側領域BA内の画素である。外側領域BA内の画素SP2の色は、背景色に近似している。このために、画素SP2の上側に隣接する画素は、文字画素であり、かつ、注目画素の2個下の画素の値は、背景色範囲内であると判断される(S425:YES)。したがって、画素TP1は、上記判断条件A、Cの両方を満たすので、文字画素として特定される(S445)。
中間領域MAのうち、内側領域TAよりも外側領域に近い画素TP3の色は、文字色よりも背景色に近い。このために、画素TP3が注目画素である場合には、画素TP2の値は、第1文字色範囲内でないと判断される(S415:NO)。したがって、画素TP3は、上記判断条件Aを満たさないので、文字画素として特定されない。
外側領域BA内の画素TP4は、背景色に近似している。このために、画素TP4が注目画素である場合には、画素TP4の値は、第1文字色範囲内でないと判断される(S415:NO)。したがって、画素TP4は、上記判断条件Aを満たさないので、文字画素として特定されない。
図9(B)には、図9(A)に示すスキャン画像SI内の領域に対応するフラグデータが示されている。このフラグデータは、文字画素特定処理が終了した時点におけるフラグデータである。図9(B)に示すように、下エッジの近傍では、文字画素特定処理によって、内側領域TA内の画素(例えば、画素TP1)と、中間領域MAのうち、外側領域BAよりも内側領域TAに近い領域内の画素(例えば、画素TP2)と、が文字画素として特定される。中間領域MAのうち、内側領域TAよりも外側領域BAに近い領域内の画素(例えば、画素TP3)と、外側領域BA内の画素(例えば、画素TP4)と、は、文字画素として特定されない。
図10は、文字画素特定処理の第2の説明図である。図10(A)には、文字色を有する文字を構成する上下方向(第2方向D2)に延びる線の右側のエッジ(右エッジとも呼ぶ)の拡大図が示されている。右エッジの近傍の領域は、図9(A)の下エッジと同様に、内側領域TAと、外側領域BAと、中間領域MAと、を含んでいる。これらの領域TA、BA、MA内の複数個のエッジ画素に対応するエッジ領域が注目領域である場合には、これらのエッジ画素が順次に注目画素として選択される(S405)。
内側領域TA内の画素TP5の色は、文字色に近似している。また、画素TP5の周囲範囲AA2は、内側領域TAの画素を多く含むので、周囲範囲AA2の複数個の画素の値の平均値は、文字色に近い。このために、画素TP5は、図9(A)の画素TP1と同様に、判断条件Bを満たす(S415:YES、かつ、S420:YES)ので、文字画素として特定される(S445)。
中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素TP6の色は、背景色よりも文字色に近いが、内側領域TA内の画素の色ほど文字色に近くない。このために、画素TP6は、図9(A)の画素TP2と同様に、判断条件Aを満たす(S415:YES)が、判断条件Bを満たさない(S420:NO)。
画素TP6の上側に隣接する画素SP3は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP3は、画素TP6が注目画素として選択される前に、注目画素として選択されて文字画素として特定される。そして、画素TP6の2個下の画素SP4は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP4の色は、背景色に近似していない。このために、画素TP6は、判断条件Cを満たさないと判断される(S425:NO)。
さらに、画素TP6の左側に隣接する画素SP5は、内側領域TA内の画素である。画素SP5は、画素TP6が注目画素として選択される前に、注目画素として選択されて文字画素として特定される。画素TP6の2個右の画素SP6は、外側領域BA内の画素である。外側領域BA内の画素SP6の色は、背景色に近似している。このために、画素SP6は、判断条件Dを満たすと判断される(S430:YES)。したがって、画素TP6は、判断条件A、Dの両方を満たすので、文字画素として特定される(S445)。
中間領域MAのうち、内側領域TAよりも外側領域に近い画素TP7の色は、文字色よりも背景色に近い。また、外側領域BA内の画素TP8は、背景色に近似している。このために、図9(A)の画素TP3、TP4と同様に、これらの画素TP7、TP8は、判断条件Aを満たさないので(S415:NO)、文字画素として特定されない。
図10(B)には、図10(A)に示すスキャン画像SI内の領域に対応するフラグデータが示されている。このフラグデータは、文字画素特定処理が終了した時点におけるフラグデータである。図10(B)に示すように、右エッジの近傍では、下エッジの近傍と同様に、文字画素特定処理によって、内側領域TA内の画素(例えば、画素TP5)と、中間領域MAのうち、外側領域BAよりも内側領域TAに近い領域内の画素(例えば、画素TP6)と、が文字画素として特定される。中間領域MAのうち、内側領域TAよりも外側領域BAに近い領域内の画素(例えば、画素TP7)と、外側領域BA内の画素(例えば、画素TP8)と、は、文字画素として特定されない。
図11は、文字画素特定処理の第3の説明図である。図11(A)には、文字色の文字を構成する左右方向(第1方向D1)に延びる線の上側のエッジ(上エッジとも呼ぶ)の拡大図が示されている。上エッジの近傍の領域は、図9(A)の下エッジと同様に、内側領域TAと、外側領域BAと、中間領域MAと、を含んでいる。これらの領域TA、BA、MA内の複数個のエッジ画素に対応するエッジ領域が注目領域である場合には、これらのエッジ画素が順次に注目画素として選択される(S405)。
内側領域TA内の画素TP9の色は、文字色に近似している。また、画素TP9の周囲範囲AA3は、内側領域TAの画素を多く含むので、周囲範囲AA3の複数個の画素の値の平均値は、文字色に近い。このために、画素TP9は、図9(A)の画素TP1と同様に、判断条件Bを満たす(S415:YES、かつ、S420:YES)ので、文字画素として特定される(S445)。
中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素TP10の色は、背景色よりも文字色に近いが、内側領域TA内の画素の色ほど文字色に近くない。このために、画素TP10は、図9(A)の画素TP2と同様に、判断条件Aを満たす(S415:YES)が、判断条件Bを満たさない(S420:NO)。
画素TP10の上側に隣接する画素SP7は、中間領域MAのうち、内側領域TAよりも外側領域BAに近い画素である。このために、画素SP7は、画素TP10が注目画素として選択される前に、注目画素として選択されているが、文字画素として特定されていない。このために、画素TP10は、判断条件Cを満たさないと判断される(S425:NO)。
そして、画素TP10の左側に隣接する画素SP8は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP8は、画素TP10が注目画素として選択される前に、注目画素として選択されて文字画素として特定される。画素TP10の2個右の画素SP9は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP9の色は、背景色に近似していない。このために、画素TP10は、判断条件Dを満たさないと判断される(S430:NO)。
画素TP10の下側に隣接する画素SP10は、内側領域TA内の画素である。このために、画素SP10の色は、文字色に近似している。また、画素TP10の周囲範囲AA4は、内側領域TAの画素を多く含むので、周囲範囲AA4の複数個の画素の値の平均値は、文字色に近い。このために、画素TP10は、判断条件Eを満たすと判断される(S435:YES)。したがって、画素TP10は、判断条件A、Eの両方を満たすので、文字画素として特定される(S445)。
中間領域MAのうち、内側領域TAよりも外側領域に近い画素TP11の色は、文字色よりも背景色に近い。また、外側領域BA内の画素TP12は、背景色に近似している。このために、図9(A)の画素TP3、TP4と同様に、これらの画素TP11、TP12の値は、判断条件Aを満たさないので(S415:NO)、文字画素として特定されない。
図11(B)には、図11(A)に示すスキャン画像SI内の領域に対応するフラグデータが示されている。このフラグデータは、文字画素特定処理が終了した時点におけるフラグデータである。図11(B)に示すように、上エッジの近傍では、下エッジの近傍と同様に、文字画素特定処理によって、内側領域TA内の画素(例えば、画素TP9)と、中間領域MAのうち、外側領域BAよりも内側領域TAに近い領域内の画素(例えば、画素TP10)と、が文字画素として特定される。中間領域MAのうち、内側領域TAよりも外側領域BAに近い領域内の画素(例えば、画素TP11)と、外側領域BA内の画素(例えば、画素TP12)と、は、文字画素として特定されない。
図12は、文字画素特定処理の第4の説明図である。図12(B)には、文字色の文字を構成する上下方向(第2方向D2)に延びる線の左側のエッジ(左エッジとも呼ぶ)の拡大図が示されている。左エッジの近傍の領域は、図9(A)の下エッジと同様に、内側領域TAと、外側領域BAと、中間領域MAと、を含んでいる。これらの領域TA、BA、MA内の複数個の画素のいずれかが、注目画素である場合には、S410にて、該注目画素は、エッジ画素であると判断される(S410:YES)。
内側領域TA内の画素TP13の色は、文字色に近似している。また、画素TP13の周囲範囲AA5は、内側領域TAの画素を多く含むので、周囲範囲AA5の複数個の画素の値の平均値は、文字色に近い。このために、画素TP13は、図9(A)の画素TP1と同様に、判断条件Bを満たす(S415:YES、かつ、S420:YES)ので、文字画素として特定される(S445)。
中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素TP14の色は、背景色よりも文字色に近いが、内側領域TA内の画素の色ほど文字色に近くない。このために、画素TP14は、図9(A)の画素TP2と同様に、判断条件Aを満たす(S415:YES)が、判断条件Bを満たさないと判断される(S420:NO)。
画素TP14の上側に隣接する画素SP11は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP11は、画素TP14が注目画素として選択される前に、注目画素として選択されて文字画素として特定される。そして、画素TP10の2個下の画素SP12は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP12の色は、背景色に近似していない。このために、画素TP14は、判断条件Cを満たさないと判断される(S425:NO)
そして、画素TP14の左側に隣接する画素SP13は、中間領域MAのうち、内側領域TAよりも外側領域BAに近い画素である。このために、画素SP13は、画素TP10が注目画素として選択される前に、注目画素として選択されるが、文字画素として特定されない。このために、画素TP14は、判断条件Dを満たさないと判断される(S430:NO)。
画素TP14の下側に隣接する画素SP14は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP14の色は、背景色よりも文字色に近いが、内側領域TA内の画素の色ほど文字色に近くない。このために、画素TP14は、判断条件Eを満たさないと判断される(S435:NO)。
画素TP14の右側に隣接する画素SP15は、内側領域TA内の画素である。このために、画素SP15の色は、文字色に近似している。また、画素TP15の周囲範囲AA6は、内側領域TAの画素を多く含むので、周囲範囲AA6の複数個の画素の値の平均値は、文字色に近い。このために、画素TP14は、判断条件Fを満たすと判断される(S440:YES)。したがって、画素TP14は、判断条件A、Fの両方を満たすので、文字画素として特定される(S445)。
図12(B)には、図12(A)に示すスキャン画像SI内の領域に対応するフラグデータが示されている。このフラグデータは、文字画素特定処理が終了した時点におけるフラグデータである。図12(B)に示すように、上エッジの近傍では、下エッジの近傍と同様に、文字画素特定処理によって、内側領域TA内の画素(例えば、画素TP13)と、中間領域MAのうち、外側領域BAよりも内側領域TAに近い領域内の画素(例えば、画素TP14)と、が文字画素として特定される。中間領域MAのうち、内側領域TAよりも外側領域BAに近い領域内の画素(例えば、画素TP15)と、外側領域BA内の画素(例えば、画素TP16)と、は、文字画素として特定されない。
以上の図9~図12の説明から解るように、背景色を有する背景上に位置する文字色を有する文字において、内側領域TA内の画素、および、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素は、上記(1)~(5)の場合のうちのいずれかに該当するために、文字画素として特定される。また、外側領域BA内の画素、および、中間領域MA、内側領域TAよりも外側領域BAに近い画素は、上記(1)~(5)の場合のうちのいずれかにも該当しないために、文字画素として特定されない。この結果、文字画素を適切に特定することができる。なお、文字色以外の文字のエッジ近傍の画素は、第1文字色範囲、および、第2文字色範囲内の画素の値を有さないので、判断条件A、Bを満たさないので、文字画素として特定されない。また、文字色の文字であっても、背景が背景色でない文字のエッジ近傍の画素は、周囲領域の画素の平均値が文字色に近似しない、あるいは、外側に2個離れた画素の色が背景色に近似しない。このために、当該エッジ近傍の画素は、文字画素として特定されない。
以上説明した図8の文字画素特定処理によれば、第1方向D1に並ぶ画素SP5、TP6、SPa(図10(A))についての処理、および、第1方向D1に並ぶ画素SP13、TP14、SP15(図12(A))についての処理から解るように、対象画素A(例えば、画素SP5、SP13)が、対象画素Aに対して第1方向D1に隣接する対象画素B(例えば、画素TP6、TP14)や、対象画素Bに対して第1方向D1に隣接する対象画素C(例えば、画素SPa、SP15)よりも先に注目画素とされる。このため、先ず、CPU210は、対象画素A(例えば、画素SP5、SP13)が文字画素であるか否かを特定する(S415~S445)。そして、その後に、対象画素B(例えば、画素TP6、TP14)が注目画素とされた際に、CPU210は、対象画素Aが文字画素として特定されたことを含む判断条件Dを満たすか否かを判断し(S430)、判断条件Dが満たされる場合に(S430:YES、図10(A))、対象画素B(例えば、画素TP6)を文字画素として特定する(S445、図10(A))。そして、判断条件Dが満たされない場合に(S430:NO)、CPU210は、対象画素C(例えば、画素SP15)の値が、第2文字色範囲内であることを含む判断条件Fを満たすか否かを判断する(S440)。CPU210は、判断条件Fが満たされる場合に(S440:YES)、対象画素B(例えば、画素TP14)を、文字画素として特定する(S445)。この結果、判断条件Dが満たされる場合には、判断条件Fについて判断することなく、対象画素Bを文字画素として特定できる。この結果、対象画素Aが文字画素として特定された場合には、対象画素Aが文字画素として特定されたことに基づいて、対象画素Bを、文字画素として効率良く特定することができる。換言すれば、既に文字画素であるか否かを判断済みの対象画素A(例えば、画素SP5)の特定結果を用いて、対象画素B(例えば、画素TP6)を文字画素として特定可能である場合には、未判断の対象画素C(例えば、画素SPa)について、何ら条件を判断することなく、対象画素Bを文字画素として特定可能であるので、対象画素Bを、文字画素として効率良く特定することができる。
同様にして、第2方向D2に並ぶ画素SP1、TP2、SPb(図9(A))についての処理、および、第2方向D2に並ぶ画素SP7、TP10、SP10(図11(A))についての処理から解るように、対象画素D(例えば、画素SP1、SP7)が、対象画素Dに対して第2方向D2に隣接する対象画素E(例えば、画素TP2、TP10)や、対象画素Eに対して第2方向D2に隣接する対象画素F(例えば、画素SPb、SP10)よりも先に注目画素とされる。このため、先ず、CPU210は、対象画素D(例えば、画素SP1、SP7)が文字画素であるか否かを特定する(S4150~S145)。そして、その後に、対象画素E(例えば、画素TP2、TP10)が注目画素とされた際に、CPU210は、対象画素Dが文字画素として特定されたことを含む判断条件Cを満たすか否かを判断し(S425)、判断条件Cが満たされる場合に(S425:YES、図9(A))、対象画素E(例えば、画素TP2)を文字画素として特定する(S445、図9(A))。そして、判断条件Cが満たされない場合に(S425:NO)、CPU210は、対象画素F(例えば、画素SP10)の値が、第2文字色範囲内であることを含む判断条件Eを満たすか否かを判断する(S435)。CPU210は、判断条件Eが満たされる場合に(S435:YES)、対象画素E(例えば、画素TP10)を、文字画素として特定する(S445)。この結果、判断条件Cが満たされる場合には、判断条件Eについて判断することなく、対象画素Eを文字画素として特定できる。この結果、対象画素Dが文字画素として特定された場合には、対象画素Dが文字画素として特定されたことに基づいて、対象画素Eを、文字画素として効率良く特定することができる。換言すれば、既に文字画素であるか否かを判断済みの対象画素D(例えば、画素SP1)の特定結果を用いて、対象画素E(例えば、画素TP2)を文字画素として特定可能である場合には、未判断の対象画素C(例えば、画素SPb)について、何ら条件を判断することなく、対象画素Eを文字画素として特定可能であるので、対象画素Eを、文字画素として効率良く特定することができる。
さらに、上記文字画素特定処理によれば、CPU210は、複数個のエッジ画素のそれぞれを注目画素として、該注目画素の値が、第1文字色範囲内であることを含む判断条件Aを満たすか否かを判断する(図8のS415)。CPU210は、該注目画素が、判断条件Aを満たす場合に(S415:YES)、周囲領域内の画素などの周辺画素の値に基づく条件を含む判断条件B~Fの少なくとも1つを満たすか否かを判断する(S420~S440)。CPU210は、該注目画素が、判断条件B~Fの少なくとも1つを満たす場合に(S420~S440のいずれかにてYES)、該注目画素を、文字画素として特定する(S445)。CPU210は、該注目画素が、判断条件Aを満たさない場合に(S415:NO)、判断条件B~Fのいずれも判断しない。判断条件Aを満たさない場合、すなわち、注目画素の値が、第1文字色範囲内でない場合には、注目画素は、文字画素として特定すべきでないことは明らかである。このために、上述のように、判断条件Aを、他の判断条件B~Fよりも先に判断して、該判断条件Aを満たさない場合には、他の判断条件B~Fについては、何ら判断を行うことなく、文字画素として特定しないことによって、効率良く、文字画素を特定できる。
A-5.背景画素特定処理
図2のS30の背景画素特定処理について説明する。図13は、背景画素特定処理のフローチャートである。S500では、CPU210は、スキャンデータの第1方向D1および第2方向D2の読取解像度(単位は、dpi(dot per inch))に応じて、確認画素数Mの値を設定する。確認画素数Mは、注目画素から、確認方向に向かって、背景画素として特定するか否かの確認を行う画素の個数であり、1以上の自然数である。本実施例では、第1方向D1の読取解像度に応じた確認画素数M1と、第2方向D2の読取解像度に応じた確認画素数M2と、をそれぞれ設定する。確認画素数Mは、読取解像度が高いほど、大きな値に設定される。例えば、確認画素数Mは、読取解像度をR(単位は、dpi)とした場合に、(R/300)の値の小数点以下を切り捨てた値に決定される。例えば、確認画素数Mは、読取解像度が600dpiである場合には、「2」に設定され、読取解像度が1200dpiである場合には、「4」に設定される。
S505では、CPU210は、注目領域を構成する複数個のエッジ画素のうち、文字画素特定処理において特定された2以上の文字画素から、1個の注目画素を選択する。
文字画素であるか否かは、文字画素特定処理で作成されたフラグデータを参照して判断される。
S515では、CPU210は、上下左右の4方向の中から、1つの確認方向を選択する。S530では、CPU210は、注目画素から確認方向にM個先の画素は、文字画素であるか否かを判断する。M個先の画素が文字画素であるか否かは、文字画素特定処理で作成されたフラグデータを参照して判断される。
図14は、背景画素特定処理の第1の説明図である。図14(A)には、図9(A)と同様の下エッジの拡大図が示されている。図14(B)には、図14(A)に示すスキャン画像SI内の領域に対応するフラグデータが示されている。このフラグデータは、背景画素特定処理が終了した時点におけるフラグデータである。
確認方向が図14(A)の左方向(第1方向D1の反対方向)または右方向(第1方向D1)である場合には、確認画素数Mの値は、第1方向D1の確認画素数M1である。確認方向が図14(A)の上方向(第2方向D2の反対方向)または下方向(第2方向D2)である場合には、確認画素数Mの値は、第2方向D2の確認画素数M2である。ここでは、図14(A)には、確認画素数M1、M2の両方が、「2」である場合を示している。
注目画素が、画素TP17であり、確認方向が上方向である場合には、画素SP16が文字画素であるか否かが判断される。同様に、注目画素が、画素TP17であり、確認方向が下方向、左方向、右方向である場合には、それぞれ、画素SP17、SP18、SP19が文字画素であるか否かが判断される。図14(A)の例では、注目画素が、画素TP17であり、確認方向が上方向、左方向、右方向である場合には、M個(図14(A)の例では2個)先の画素SP16、SP18、SP19は、それぞれ、文字画素であると判断される。注目画素が、画素TP17であり、確認方向が下方向である場合に、M個先の画素SP17は、文字画素でないと判断される。
M個先の画素は、文字画素である場合には(S530:YES)、CPU210は、S555に処理を進める。M個先の画素が、文字画素でない場合には(S530:NO)、CPU210は、S535に処理を進める。
S535では、CPU210は、注目画素から確認方向にM個先の画素の値は、背景色範囲内であるか否かを判断する。背景色範囲は、上述した式(5)を満たす範囲である。該画素SP17は、外側領域BA内の画素であるので、背景色に近似している。このために、M個先の画素が、図14(A)の画素SP17である場合には、該画素SP17の値は、背景色範囲内であると判断される。
M個先の画素の値が、背景色範囲内である場合には(S535:YES)、CPU210は、S540に処理を進める。M個先の画素の値が、背景色範囲内でない場合には(S535:NO)、CPU210は、S555に処理を進める。
S540では、CPU210は、注目画素から確認方向にM個先の画素を背景画素として特定する。このために、この場合には、CPU210は、フラグデータにおいて、注目画素に対応するフラグの値を、背景画素を示す値(本実施例では、「2」)に更新する。M個先の画素が、図14(A)の画素SP17である場合には、画素SP17は、背景画素として特定される。
S545では、CPU210は、注目画素と、注目画素から確認方向にM個先の画素と、の間に、文字画素とは異なる画素があるか否かを判断する。注目画素が、図14(A)の画素TP17であり、M個先の画素が、画素SP17である場合には、該画素TP17と画素SP17との間には、1個の画素SP20がある。画素SP20は、文字画素として特定されていない(図14(B))ので、文字画素とは異なる画素があると判断される。仮に、確認画素数Mが「4」である場合には、注目画素と、4個先の画素と、の間には、3個の画素がある。一般的には、注目画素と、確認方向にM個先の画素と、の間には、確認方向に沿って並ぶ(M-1)個の画素がある。本ステップでは、該(M-1)個の画素に、少なくとも1個の文字画素とは異なる画素があるか否かが判断される。
注目画素とM個先の画素との間に、文字画素とは異なる画素がある場合には(S545:YES)、CPU210は、S550に処理を進める。注目画素とM個先の画素との間に、文字画素とは異なる画素がない場合には(S545:NO)、S555に処理を進める。
S550では、CPU210は、注目画素とM個先の画素との間の文字画素とは異なる画素を背景画素として特定する。このために、この場合には、CPU210は、フラグデータにおいて、注目画素とM個先の画素との間の文字画素とは異なる画素に対応するフラグの値を、背景画素を示す値(本実施例では、「2」)に更新する。M個先の画素が、図14(A)の画素SP17である場合には、画素SP17は、背景画素として特定される。注目画素が、図14(A)の画素TP17であり、M個先の画素が、画素SP17である場合には、該画素TP17と画素SP17との間の1個の画素SP20が、背景画素として特定される。
S555では、CPU210は、上下左右の4方向を全て確認したか否かを判断する。未確認の方向がある場合には(S555:NO)、CPU210は、S515に戻って、未確認の方向を確認方向に設定する。4方向を確認した場合には(S555:YES)、CPU210は、S560に処理を進める。
S560では、CPU210は、注目領域内の全ての文字画素を注目画素として処理したか否かを判断する。未処理の文字画素がある場合には(S560:NO)、CPU210は、S505に戻って、未処理の文字画素を注目画素として選択する。全ての文字画素が処理された場合には(S560:YES)、CPU210は、背景画素特定処理を終了する。
以上の説明から解るように、背景画素特定処理において、文字画素から所定の確認方向にM個先の画素(例えば、図14(A)の画素SP17)が、文字画素でなく、かつ、その値が背景色範囲内である場合に、背景画素として特定される(S530~S540)。換言すれば、M個先の画素が、文字画素とは異なる色を有するべき画素であり、かつ、文字色よりも背景色に近い色を有する場合に、該M個先の画素は、背景画素として特定される。この結果、文字画素の周辺の画素の中から適切に背景画素を特定することができる。例えば、文字のエッジ上の文字画素の周辺の背景を示す画素を適切に背景画素として特定することができる。
文字画素と、背景画素と、の間の画素が、背景画素とも文字画素とも異なる画素であると、文字色と背景色との境界が鮮明にならない可能性がある。本実施例では、文字画素からM個先の画素、すなわち、文字画素から特定方向にM個(Mは、2以上の整数)の画素分だけ離れた画素が背景画素として特定された場合には、該特定方向に沿って該文字画素と、該M個の画素分だけ離れた画素と、の間に位置する(M-1)個の中間画素は、その画素が、文字画素でない場合に、該中間画素の値に関わらずに、背景画素として特定される(S545、S550)。この結果、文字画素と、背景画素と、の間の画素が、背景画素とも文字画素とも異なる画素であると判断されることを抑制できる。したがって、文字色と背景色との境界をより効果的に強調できる。
このように、文字画素の周辺画素、具体的には、文字画素との距離がM画素以内の画素は、該画素が文字画素でないことを含む特定条件を満たすか否かが判断され、該特定条件を満たす場合には、背景画素として特定される。一方、文字画素に対して上記周辺画素よりも離れた位置にある複数個の遠方画素(例えば、図14(A)の画素SP21)、具体的には、文字画素との距離がM画素を超える画素は、該特定条件については判断されない。
この結果、図14(B)に示すように、中間領域MAのうち、内側領域TAより外側領域BAに近い複数個の画素(例えば、図14(A)の画素SP20)が、背景画素として特定される(対応するフラグ=2)。これらの画素は、中間領域MA内の複数個の画素のうち、文字画素に隣接する画素であって、文字画素として特定されていない画素である。また、外側領域BAのうち、中間領域MAと隣接する複数個の画素(例えば、図14(A)の画素SP17)が、背景画素として特定される(対応するフラグ=2)。また、外側領域BAのうち、文字画素から3画素以上離れた複数個の画素(例えば、図14(A)の画素SP21)は、背景画素にも文字画素にも特定されない(対応するフラグ=0)。
図15を参照して、さらに、具体例を説明する。図15は、背景画素特定処理の第2の説明図である。図15(A)には、図11(A)と同様の下エッジの拡大図が示されている。図15(B)には、図16(A)に示すスキャン画像SI内の領域に対応するフラグデータが示されている。下エッジについても同様に、例えば、文字画素である画素TP18が注目画素である場合には、4方向にM個(図15(A)では2個)先の画素SP22~SP25のうち、文字画素でなく、かつ、その値が背景色範囲内である画素SP22が、背景画素として特定される(S530~S540)。そして、画素TP18と、画素SP22と、の間に位置する画素SP26は、文字画素ではないので、背景画素として特定される。画素TP18から3画素離れた画素SP27は、遠方画素であるので、上記特定条件について判断されずに、背景画素として特定されない。したがって、図15(B)に示すように、中間領域MAのうち、内側領域TAより外側領域BAに近い複数個の画素(例えば、図15(A)の画素SP22)が、背景画素として特定される(対応するフラグ=2)。また、外側領域BAのうち、中間領域MAと隣接する複数個の画素(例えば、図15(A)の画素SP26)が、背景画素として特定される(対応するフラグ=2)。また、外側領域BAのうち、文字画素から3画素以上離れた複数個の画素(例えば、図15(A)の画素SP27)は、背景画素にも文字画素にも特定されない(対応するフラグ=0)。
図示は省略するが、右エッジ(図10(A))および左エッジ(図12(A))においても、中間領域MAのうち、内側領域TAより外側領域BAに近い複数個の画素と、外側領域BAのうち、中間領域MAと隣接する複数個の画素と、が背景画素として特定される。文字画素から3画素以上離れた複数個の画素は、背景画素にも文字画素にも特定されない。
図16は、処理済画像の説明図である。図16(A)、(B)には、それぞれ、図14(A)の下エッジ、図15(A)の上エッジに対応する処理済画像OIの拡大図が示されている。上述した文字画素および背景画素の特定結果を用いて、図2のS45の文字・背景画素置換処理が実行された場合には、図16(A)、(B)の処理済画像OIを示す処理済画像データが生成される。この処理済画像OIにおいて、黒い画素は、スキャン画像SI内の特定済みの文字画素に対応する画素であり、文字色に置換された画素(文字色置換画素とも呼ぶ)である。処理済画像OIにおいて、丸印が付された白い画素は、特定済みの背景画素に対応する画素であり、背景色に置換された画素(背景色置換画素とも呼ぶ)である。処理済画像OIにおいて、丸印が付されていない白い画素は、遠方画素(背景画素にも文字画素にも特定されていない画素)に対応する対応遠方画素である。このように、処理済画像OIは、複数個の文字色置換画素と、複数個の背景色置換画素と、を含む。この結果、処理済画像OIにおいて、文字色と背景色との境界を鮮明にすることができる。さらに、図2のS35にて、スキャンデータを用いて、文字色と背景色が特定され、特定された文字色と背景色についてS55の文字・背景画素置換処理が行われる。この結果、例えば、白背景上の黒文字に限らず、様々な文字色および背景色の組み合わせについて、文字色と背景色との境界を鮮明にすることができる。
さらに、印刷画像OIは、複数個の対応遠方画素と、を含む。複数個の遠方画素は、処理済画像FI(図3(D))の対応する画素の値を有するので、背景色とも文字色とも異なる色を有し得る。この結果、文字色と背景色との境界を鮮明にするために、文字色と背景色との境界から離れた遠方の部分が、過度に影響を受けることを抑制できる。例えば、スキャン画像SIにおいて、背景Bg1が、完全な白色でなく、例えば、薄い模様や薄い色を含んでいる場合に、処理済画像OIにおいて、背景Bg1の模様や色が失われて画質が低下することを抑制できる。また、スキャン画像SIにおいて、文字の近傍に、例えば、薄い色のオブジェクト(例えば、描画など)が含まれる場合に、該オブジェクトの一部が背景色に置換されて該オブジェクトの見栄えが低下することを抑制できる。
さらに、上記実施例では、二値画像データによって特定される複数個のエッジ画素の中から文字画素が特定される(図8のS405)。すなわち、図2のS15のエッジ画素特定処理にて特定されたスキャン画像SI内の複数個のエッジ画素を含み、かつ、複数個のエッジ画素とは異なる複数個の画素の少なくとも一部を含まない画素群の中から文字画素が特定される。この結果、エッジと異なる部分、例えば、スキャン画像SI内の均一な色を有する部分の色を変更することなく、文字色と背景色との境界を構成するエッジを鮮明にすることができる。例えば、スキャン画像SI内のエッジとは異なる部分の色が変更されてしまうことに起因する画質の低下を抑制できる。
さらには、図2のS20にて膨張・収縮処理が実行され、膨張・収縮処理後の二値データによって特定される複数個のエッジ画素の中から、文字画素が特定される。この結果、さらに適切な複数個のエッジ画素の中から、文字画素が特定されるので、文字色と背景色との境界をより適切に鮮明にできる。例えば、図4を参照して説明したように、特定されたエッジに欠けCRや隙間NTなどがあると、文字画素として特定すべき画素が特定できない可能性があるが、膨張・収縮処理が実行されることで、このような不都合を抑制できるので、文字色と背景色との境界をより適切に鮮明にできる。
一般に、解像度が高いほど、文字の周囲において、ぼけた領域の画素数が増加すると考えられる。このために、解像度が高いほど、文字の周囲において多数の画素を背景色に置換することが好ましいと考えられる。上記実施例によれば、確認画素数Mの値は、スキャンデータの特定方向の解像度が、第1解像度(例えば、600dpi)である場合には、第1値(例えば、「2」)に決定され、該特定方向の解像度が、第1解像度よりも高い第2解像度(例えば、1200dpi)である場合には、第1値よりも大きな第2値(例えば、「4」)に決定される(S500)。この結果、スキャンデータの解像度に応じて、文字色と背景色との境界を構成するエッジを適切に強調できる。
B.変形例:
(1)印刷を前提とする場合には、第1色と第2色との組み合わせは、印刷に用いられる複数種類の色材の色と、印刷に用いられる用紙の地色と、の中から選択される2色であることが好ましい。例えば、第1色と第2色との組み合わせは、印刷に用いられる色材の色であるシアン、マゼンタ、イエロ、黒と、用紙の地色である白と、から成る5色の中から選択される2色であることが好ましい。この場合には、処理済画像データに対してハーフトーン処理を実行して得られる印刷画像(網点画像)においても、第1色と第2色との境界は、鮮明のままで維持される。
(2)図9の文字画素特定処理では、二値画像データによって特定される複数個のエッジ画素の中から、文字画素が特定される(図8のS405)。これに代えて、例えば、非エッジ画素を含む全ての画素の中から、文字画素が特定されても良い。例えば、図9のS405では、注目領域に外接する矩形領域SA内の全ての画素が注目画素として選択されても良い。110は省略されても良い。
(3)図9の文字画素特定処理において、文字画素として特定するための条件は、一例であり、これに限られない。例えば、実施例の第2文字色範囲よりも狭く、かつ、文字色を含む範囲内の画素の値を有する画素は、全て文字画素として特定されても良い。
(4)図13の背景画素特定処理において、背景画素として特定するための条件は、一例であり、これに限られない。例えば、文字画素の4方向に隣接する画素のうち、文字画素でなく、かつ、最も背景に近い画素を、背景画素として特定しても良い。また、上記実施例の確認画素数Mの値は、スキャンデータの読取解像度に関わらずに、一定の値(例えば、2)であっても良い。
(5)上記実施例では、スキャンデータの各画素の値は、RGB値であるが、他の表色系の色値であっても良い。例えば、スキャンデータの各画素の値は、C、M、Yの3個の成分値を含むCMY表色系の色値であっても良い。
(6)上記実施例では、エッジ画素に対して、エッジ鮮鋭化処理が実行され(図2のS70)、非エッジ画素に対して、網点平滑化処理が実行される(図2のS65)。これに代えて、エッジ画素に対しては、文字の見栄えを向上するためのアンチエイリアス処理が実行されても良い。また、非エッジ画素に対しては、例えば、印刷時の色材の使用量を減らすために、色を飛ばす処理(白に変換する処理)が実行されても良い。一般的には、エッジ画素と、エッジ画素と、に互いに異なる画像処理が実行されることが好ましい。あるいは、エッジ画素と非エッジ画素のいずれか一方に対して、特定の画像処理が実行され、他方に対して、該特定の画像処理が実行されなくても良い。
(7)上記実施例では、対象画像データは、スキャンデータであるが、これに限られない。対象画像データは、2次元イメージセンサを備えるデジタルカメラによって印刷物を読み取ることによって生成されても良い。
(8)上記実施例では、処理済画像データは、処理済画像を印刷するために用いられている(図2のS75、S80)。これに限らず、処理済画像データは、処理済画像を液晶ディスプレイなどの表示部に表示するために用いられても良い。
(9)図2の画像処理を実現する画像処理装置は、複合機200に限らず、種々の装置であってよい。例えば、スキャナやデジタルカメラが、自身で生成された対象画像データを用いて、プリンタに供給するための印刷データを生成するために、図2の画像処理を実行しても良い。また、例えば、スキャナやプリンタと通信可能な接続される端末装置(例えば、端末装置100)やサーバ(図示省略)が、スキャナから取得したスキャンデータを用いて、図2の画像処理を実行して、印刷データを生成し、該印刷データをプリンタに供給しても良い。また、ネットワークを介して互いに通信可能な複数個のコンピュータ(例えば、クラウドサーバ)が、画像処理に要する機能を一部ずつ分担して、全体として、画像処理を実行してもよい。この場合、複数個のコンピュータの全体が、画像処理装置の例である。
(10)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図2のS55の文字・背景画素置換処理や、S70のエッジ鮮鋭化処理は、ASICなどの専用のハードウェアによって、実行されても良い。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。