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を用いて読み取ることによって、対象画像データとしてのスキャンデータを生成する。原稿は、例えば、複合機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は、白色とは異なる色を有する均一な画像である。
S20では、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が含まれている。本来、1個の連続した線や文字に対応するエッジが、このような隙間NT、欠けCR、孤立した非エッジ画素IPを含んでいる場合には、詳細は後述するが、S25の黒画素特定処理のために、これらを除去することが好ましい。膨張処理と収縮処理は、これらの隙間NT、欠けCR、孤立した非エッジ画素IPを除去するために、実行される。
膨張処理は、例えば、所定サイズのフィルタ、図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ポイント以下の文字を構成する画素は、概ね全てエッジ画素として特定される。
なお、上述したフィルタFI1、FI2のサイズ、すなわち、膨張処理による膨張の程度、および、収縮処理による収縮の程度は、一例である。例えば、フィルタFI1、FI2は、例えば、縦5画素×横5画素のフィルタであっても良いし、縦7画素×横7画素のフィルタであっても良い。なお、最終的に生成される膨張・収縮処理済みの二値画像データは、文字などのエッジにおけるぼけた部分を構成する複数個の画素が、漏れなく、エッジ画素として特定されるように、膨張・収縮処理前の二値画像データエッジよりも、エッジが膨張された状態であることが好ましい。
以上の膨張・収縮処理済みの二値画像データを、以下では、単に、二値画像データと呼び、膨張・収縮処理済みの二値画像データにおいて特定されているエッジ画素を、単に、エッジ画素と呼ぶ。
図2のS25では、CPU210は、膨張・収縮処理済みの二値画像データと、対象画像データと、を用いて、黒画素特定処理を実行する。黒画素特定処理は、スキャン画像SI内の複数個の画素の中から、複数個の黒画素を特定する処理である。
黒画素は、スキャン画像SI内の複数個の画素のうち、白色の背景上に位置する黒色の文字を構成する画素であり、黒色を有するべき画素である。例えば、スキャン画像SI内の黒色の文字Ob5、Ob6を構成する画素は、原稿上では、黒色であるので、黒色を有するべき黒画素である。しかしながら、スキャンデータのようにイメージセンサを用いて生成される画像データによって示される画像では、特に、エッジの部分に、いわゆる「ぼけ」が発生する。このために、スキャン画像SI上では、例えば、黒色の文字Ob5、Ob6を構成する複数個の画素のうち、特に、エッジに位置する画素は、黒色ではなく、例えば、黒色より明るい色や彩度を有する色を有し得る。以上の説明から解るように、本実施例では、黒画素は、実際に黒色を有している場合もあれば、黒色とは異なる色を有している場合もある。本実施例の黒画素特定処理では、特に、白色の背景上の黒色の文字(図3(A)の例では、背景Bg1上の文字Ob6)を構成する複数個のエッジ画素を黒画素として特定する。
黒画素特定処理によって、スキャンデータや二値画像データとは別に、特定済みの複数個の黒画素を示すフラグデータが生成される。フラグデータは、スキャン画像SIの複数個の画素に対応するフラグを含む。フラグデータにおいて、黒画素として特定された画素に対応するフラグの値は、例えば、黒画素を示す値(例えば、「1」)を有する。黒画素特定処理の詳細については、後述する。
図2のS30では、CPU210は、特定済みの複数個の黒画素を示すフラグデータと、対象画像データと、を用いて、白画素特定処理を実行する。白画素特定処理は、スキャン画像SI内の複数個の画素の中から、複数個の白画素を特定する処理である。白画素は、スキャン画像SI内の複数個の画素のうち、白色を有するべき画素を意味する。例えば、原稿の地色を示す白色の背景Bg1を構成する画素は、白色を有するべき画素である。しかしながら、スキャンデータなどの画像では、上述した「ぼけ」のために、例えば、背景Bg1のうち、オブジェクトとのエッジに位置する画素は、白色ではなく、例えば、白色より暗い色や彩度を有する色を有し得る。以上の説明から解るように、本実施例では、白画素は、実際に白色を有している場合もあれば、白色とは異なる色を有している場合もある。本実施例の白画素特定処理は、黒色と白色との境界を構成するエッジを鮮明にすべく上述した黒画素の周辺に位置する複数個の白画素を特定する。例えば、図3(A)の例では、背景Bg1を構成する画素のうち、黒色の文字Ob6とのエッジに沿う画素が白画素として特定される。
白画素特定処理によって、特定済みの複数個の白画素は、上述したフラグデータに記録される。例えば、白画素特定処理後のフラグデータにおいて、白画素として特定された画素に対応するフラグは、例えば、白画素を示す値(例えば、「2」)を有する。白画素特定処理の詳細については、後述する。
S25の黒画素特定処理と、S30の白画素特定処理と、によって、複数個の黒画素と、複数個の白画素と、黒画素でも白画素でもない複数個の画素と、を示すフラグデータが生成される。
S35では、CPU210は、スキャンデータに対して、網点平滑化処理を実行して、平滑化画像を示す平滑化画像データを生成する。具体的には、CPU210は、スキャンデータに含まれる複数個の非エッジ画素の値のそれぞれに対して、ガウスフィルタなどの平滑化フィルタを用いた平滑化処理を実行して、平滑化処理済みの複数個の非エッジ画素の値を算出する。平滑化処理の対象となる非エッジ画素は、S15のエッジ画素特定処理によって生成された二値画像データを参照して特定される。CPU210は、スキャンデータに含まれる複数個のエッジ画素の値と、平滑化処理済みの複数個の非エッジ画素の値と、を含む平滑化画像データを生成する。
図3(C)には、平滑化画像データによって示される平滑化画像GIが示されている。平滑化画像GIは、白色の背景Bg1gと、スキャン画像SI内のオブジェクトOb1〜Ob7、背景Bg2が平滑化されたオブジェクトOb1g〜Ob7g、背景Bg2gを含んでいる。これらのオブジェクトOb1g〜Ob7g、背景Bg2gのエッジ以外の部分(非エッジ部分とも呼ぶ)は、スキャン画像SI内のオブジェクトOb1〜Ob7、背景Bg2と比較して、平滑化されている。
S40では、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のエッジと比較して、鮮鋭化されている、すなわち、シャープになっている。
以上の説明から解るように、鮮鋭化画像FI内のオブジェクトOb1f〜Ob7f、背景Bg2fは、鮮鋭化されたエッジと、平滑化された非エッジ部分を含む。
S45では、CPU210は、鮮鋭化画像データに対して、白黒画素置換処理を実行して、処理済画像を示す処理済画像データを生成する。白黒画素置換処理は、黒画素特定処理による黒画素の特定結果と、白画素特定処理による白画素の特定結果と、を用いて実行される処理である。具体的には、白黒画素置換処理は、鮮鋭化画像FI内の複数個の黒画素の色を、黒色に置換する処理と、鮮鋭化画像FI内の複数個の白画素を、白色に置換する処理と、を含む。鮮鋭化画像FI内の複数個の黒画素は、S25の黒画素特定処理によって特定されたスキャン画像SI内の複数個の黒画素に対応する鮮鋭化画像FI内の複数個の画素である。鮮鋭化画像FI内の複数個の白画素は、S30の白画素特定処理によって特定されたスキャン画像SI内の複数個の白画素に対応する鮮鋭化画像FI内の複数個の画素である。これらの黒画素および白画素は、上述したフラグデータを参照することによって特定される。
具体的には、CPU210は、鮮鋭化画像データの複数個の黒画素の値(RGB値)のそれぞれを、黒色を示すRGB値(R、G、B)=(0、0、0)に置換する。CPU210は、鮮鋭化画像データの複数個の白画素の値のそれぞれを、白色を示すRGB値(R、G、B)=(255、255、255)に置換する。
S50では、CPU210は、処理済画像データを用いて印刷データを生成する印刷データ生成処理を実行する。具体的には、RGB画像データである処理済画像データに対して色変換処理が実行されて、印刷に用いられる色材に対応する色成分(C、M、Y、Kの成分)を有する色値であるCMYK値で画素ごとの色を示すCMYK画像データが生成される。色変換処理は、例えば、公知のルックアップテーブルを参照して実行される。CMYK値画像データに対して、ハーフトーン処理が実行されて、印刷に用いられる色材ごと、かつ、画素ごとに、ドットの形成状態を示すドットデータが生成される。ドットの形成状態は、例えば、ドット有、ドット無の2種類の状態や、大ドット、中ドット、小ドット、ドット無の4種類の状態を取り得る。ハーフトーン処理は、例えば、ディザ法や、誤差拡散法に従って実行される。該ドットデータは、印刷時に用いられる順に並べ替えられ、該ドットデータに、印刷コマンドが付加されることによって、印刷データが生成される。
S60では、CPU210は、印刷処理を実行して、画像処理を終了する。具体的には、CPU210は、印刷データを印刷実行部280に供給して、印刷実行部280に処理済画像を印刷させる。
以上説明した画像処理によれば、S45では、CPU210は、鮮鋭化画像データに対して、白黒画素置換処理が実行されるので、白色と黒色との境界を鮮明にすることができる。例えば、白黒画素置換処理によって、図3(D)の鮮鋭化画像FI内の黒色の文字Ob6fのうちの白色の背景Bg1fとのエッジ部分の画素の色が黒色に変更される。また、鮮鋭化画像FI内の白色の背景Bg1fのうち、黒色の文字Ob6fとのエッジ部分に位置する画素の色が白色に変更される。この結果、処理済画像において、黒色の文字Ob6fのエッジ部分のぼけが低減され、白色の背景Bg1f上にある黒色の文字Ob6fのエッジ、すなわち、背景の白色と、文字の黒色と、の境界(エッジ)が強調されて鮮明になる。この結果、特に、白色の背景Bg1f上にある黒色の文字Ob6fの見栄えを向上できる。以上の説明から解るように、図2のS25〜S45の処理は、白色の背景上に位置する黒色の文字のエッジを強調するエッジ強調処理を含んでいる、と言うことができる。
また、スキャンデータに対して、網点平滑化処理(S35)を含む画像処理(S35、S40)が実行されて、中間画像データ(具体的には、S40にて生成される鮮鋭化画像データ)が生成され、該中間画像データを用いて、処理済画像データが生成される(S45)。この結果、例えば、文字とは異なる領域(例えば、写真や背景などの網点領域)が平滑化され、かつ、黒色と白色との境界が適切に鮮明された処理済画像を示す処理済画像データを生成することができる。
例えば、処理済画像データでは、白色とは異なる色の背景Bg2fなどの均一な部分や、オブジェクトのエッジとは異なる部分を構成する非エッジ画素の値には、平滑化処理済みの値が用いられている。この結果、処理済画像のエッジとは異なる部分に、例えば、モアレの原因となる網点が表れることを抑制できるので、印刷される処理済画像にモアレなどの不具合が発生することを抑制できる。この結果、印刷される処理済画像の見栄えを向上することができる。
例えば、スキャンデータの生成に用いられた原稿は、画像が印刷された印刷物である。このため、例えば、原稿内の白とは異なる色を有する背景Bg2などの均一な部分は、画像を形成するドットレベルでみると、網点を形成している。網点は、複数個のドットと、ドットが配置されていない部分(原稿の地色を示す部分)と、を含む。このために、スキャン画像SI内の背景Bg2を示す領域には、画素レベルでみると、網点が示されている。網点内のドットは、原稿の印刷時に用いられるディザマトリクスなどの影響によって、周期性を持って並んでいる。このためにスキャンデータを用いて印刷を行うと、ハーフトーン処理前の元画像(スキャン画像SI)内に存在している網点のドットの周期成分と、印刷画像を構成する網点のドットの周期成分と、が干渉して、モアレが表れやすい。本実施例の処理済画像では、平滑化処理によって、元画像(スキャン画像SI)内のエッジとは異なる部分のドットの周期成分が低減される。この結果、処理済画像データを用いて、処理済画像を印刷する場合に、例えば、印刷される処理済画像にモアレが発生することを抑制できる。
さらに、スキャンデータの複数個のエッジ画素の値に対して、エッジ鮮鋭化処理が実行され(S40)、複数個のエッジ画素とは異なる複数個の画素に対して、網点平滑化処理(S35)が実行される。この結果、エッジを構成しない部分が平滑化され、エッジ(例えば、黒色とは異なる色の文字Obf4、Ob7fのエッジ)を構成する部分が強調され、かつ、白色と黒色との境界が適切に鮮明にされた処理済画像を示す処理済画像データを生成することができる
A−3:黒色画素特定処理
図2のS25の黒色画素特定処理について説明する。図5は、黒色画素特定処理のフローチャートである。S100では、CPU210は、フラグデータを初期化する。初期化されたフラグデータの複数個のフラグの値は、初期値、具体的には、黒画素でも白画素でもないことを示す値(本実施例では、「0」)を有する。
S102では、CPU210は、スキャン画像SI内の複数個の画素から、所定の処理順に従って、1個の注目画素TPを選択する。本実施例の処理順では、図3(A)の第1方向D1と平行な複数本のラスタラインのうち、第2方向D2の上流側(図3(A)の上側)から下流側に向かって順次に処理対象となる。そして、1本のラスタライン上の複数個の画素の中では、第1方向D1の上流側(図3(A)の左側)から下流側に向かって順次に処理対象となる。すなわち、第1方向D1の位置が同じ複数個の画素は、第2方向D2の上流側の画素が、下流側の画素よりも先に選択される。また、第2方向D2の位置が同じ複数個の画素は、第1方向D1の上流側の画素が、下流側の画素よりも先に選択される。第1方向D1(図3(A)の左から右に向かう方向)、および、第2方向D2(図3(A)の上から下に向かう方向)を、処理方向とも呼ぶ。
S104では、CPU210は、注目画素TPは、エッジ画素であるか非エッジ画素であるかを判断する。CPU210は、注目画素TPが、図2のS15の膨張・収縮処理後の二値画像データにおいて、エッジ画素として特定されている場合には、注目画素TPは、エッジ画素であると判断する。CPU210は、注目画素TPが、該二値画像データにおいて、非エッジ画素として特定されている場合には、注目画素TPは、非エッジ画素であると判断する。
注目画素TPが、エッジ画素である場合には(S104:YES)、CPU210は、S106に処理を進める。注目画素TPが、非エッジ画素である場合には(S104:NO)、CPU210は、S150に処理を進める。
S106では、CPU210は、スキャンデータのうち、注目画素TPを中心とする注目領域TR内のデータ(領域データとも呼ぶ)を取得する。図5に示すように、注目領域TRは、縦7画素×横7画素の矩形の領域である。注目領域TRは、縦M画素×横N画素(M、Nは、2以上の整数)の様々なサイズであって良い。例えば、注目領域TRとしては、縦7画素×横7画素の矩形の領域に代えて、縦5画素×横5画素の矩形の領域や、縦9画素×横9画素の矩形の領域が用いられても良い。
S108では、CPU210は、機械学習モデルを用いて、注目領域TRが文字を示す文字領域であるか否かを判断する。用いられる機械学習モデルは、CNN(Convolutional Neural Network)を用いたモデルである。このような機械学習モデルとしては、例えば、LeNetやAlexNetが用いられる。LeNetは、例えば、「Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner(1998): Gradient-based learning applied to document recognition. Proceedings of the IEEE 86, 11(November 1998),2278-2324.」に開示されている。AlexNetは、例えば、「Alex Krizhevsky, Ilya Sutskever and Geoffrey E. Hinton(2012): ImageNet classification with deep convolutional neural networks In F. Pereira, C. J. C. Burges, L. Bottou, & K. Q. Weinberger, eds. Advances in Neural Information Processing Systems 25. Curran Associates, Inc., 1097-1105.5」に開示されている。
機械学習モデルの入力は、注目領域TR内の49個の画素の値(例えば、RGB値や輝度値)を、各画素の注目領域TR内での位置に応じた順序で並べた行列である。すなわち、注目領域TR内のN個の画素の値が、注目領域TR内における当該画素の位置と対応付けて入力される。機械学習モデルの出力は、上述した注目領域TRが文字領域である確率である文字確率Txrである。
例えば、文字確率Txrは、0〜100%の数値で表される。CPU210は、文字確率Txrに基づいて、注目領域TRが、文字を示す文字領域あるか否かを判断する。CPU210は、文字確率Txrが、TH1≦Txrである場合には、注目領域TRは文字領域であると判断する。CPU210は、文字確率Txrが、Txr<TH1である場合には、注目領域TRは文字領域でないと判断する。閾値TH1は、例えば、50%である。
このように、49個の画素の値の組みあわせが同じ画像であっても、どの画素の値が、注目領域TR内のどの位置にあるかが異なっていれば、異なる文字確率Txrが出力され、該文字確率Txrに基づいて、注目領域TRについての判断が行われる。このように、注目領域TRが、文字領域、非文字領域、不明ブロックのいずれであるかは、注目領域TR内の49個の画素の位置と49個の画素の値とに応じて判断されることが解る。
機械学習モデルは、例えば、白色の背景上の黒色の文字を示す所定個数(例えば、3000個)の文字画像データと、文字を示さない所定個数の(例えば、3000個)の非文字画像データと、を用いてトレーニングされている。これらのトレーニング用の文字画像データおよび非文字画像データは、注目領域TRと同じサイズの画像である。非文字画像データは、文字とは異なるオブジェクト(例えば、写真)やベタ塗りの背景などを示す。本実施例では、スキャンデータを対象画像データとしている。このために、トレーニングに用いられる文字画像データは、例えば、白色の背景上の黒色の文字を含む原稿をイメージセンサを用いて光学的に読み取ることによって得られるスキャンデータのうち、当該黒色の文字を示す部分の部分画像データである。トレーニングに用いられる文字画像データは、例えば、文字とは異なるオブジェクトを含む原稿をイメージセンサを用いて光学的に読み取ることによって得られるスキャンデータのうちの部分画像データである。
S110では、CPU210は、機械学習モデルを用いた判断によって、注目領域TRが文字領域であると判断されたか否かを判断する。注目領域TRが文字領域であると判断された場合には(S110:YES)、CPU210は、S115に処理を進める。注目領域TRが文字領域でないと判断された場合には(S110:NO)、CPU210は、S150に処理を進める。
S115では、CPU210は、注目画素TPの値(RGB値)は、第1黒色範囲内であるか否かを判断する。第1黒色範囲は、黒色を含む予め定められた範囲であり、RGBの各成分値(R、G、B)が、以下の式(2)を満たす範囲である。
R≦TH1、かつ、G≦TH1、かつ、B≦TH1 …(2)
閾値TH1は、各成分値が、0〜255の範囲の階調値である場合に、例えば、130である。注目画素TPの値が、第1黒色範囲内である場合は、注目画素TPは、白色よりも黒色に近い色を有すると考えられる。以下では、S115にて判断される条件、すなわち、「注目画素TPの値が、第1黒色範囲内であること」を、判断条件Aと呼ぶ。
判断条件Aが満たされる場合には(S115:YES)、CPU210は、S120に処理を進める。判断条件Aが満たされない場合には(S115:NO)、CPU210は、S150に処理を進める。
S120では、CPU210は、注目画素TPの値が第2黒色範囲内であり、かつ、周囲領域内の複数個の画素の値の平均値が第3黒色範囲内であるか否かを判断する。第2黒色範囲は、黒色を含む予め定められた範囲であり、第1黒色範囲より狭い範囲である。具体的には、第2黒色範囲は、RGBの各成分値(R、G、B)が、以下の式(3)を満たす範囲である。
R≦TH2、かつ、G≦TH2、かつ、B≦TH2 …(3)
閾値TH2は、閾値TH1より小さな値であり、各成分値が、0〜255の範囲の階調値である場合に、例えば、100である。
周囲領域は、本実施例では、注目画素TPを中心とした縦5画素×横5画素の矩形の領域である。CPU210は、該周囲領域内の25個の画素のRGB値の平均値(Rav、Gav、Bav)を算出する。該平均値の3個の成分値Rav、Gav、Bavのうちの最大値をMAXavとし、最小値をMINavとすると、第3黒色範囲は、以下の式(4)を満たす範囲である。
(MAXav−MINav)≦TH3 …(4)
閾値TH3は、例えば、50である。該平均値が、第3黒色範囲内である場合は、周囲領域内の画素の色は、彩度が比較的低いと考えられる。以下では、S120にて判断される条件、すなわち、「注目画素TPの値が第2黒色範囲内であり、かつ、周囲領域内の複数個の画素の値の平均値が第3黒色範囲内であること」を、判断条件Bと呼ぶ。
判断条件Bが満たされる場合には(S120:YES)、CPU210は、S145に処理を進める。判断条件Bが満たされない場合には(S120:NO)、CPU210は、S125に処理を進める。
S125では、CPU210は、注目画素TPの上側に隣接する画素が黒画素であり、かつ、注目画素TPの2個下の画素の値が白色範囲内であるか否かを判断する。フラグデータにおいて、注目画素TPの上側に隣接する画素に対応するフラグが、黒画素を示す値である場合には、該隣接する画素は、黒画素であると判断される。
白色範囲は、白色を含む予め定められた範囲である。具体的には、CPU210は、2個下の画素の輝度Yを、画素の各成分値(R、G、B)を用いて、上述した式を用いて算出する。白色範囲は、以下の式(5)を満たす範囲である。
Y≧TH4 …(5)
閾値TH4は、例えば、0〜255の範囲の階調値である場合に、例えば、190である。注目画素TPの値が、白色範囲内である場合には、注目画素TPは、白色に近い十分な輝度を有すると考えられる。以下では、S125にて判断される条件、すなわち、「注目画素TPの上側に隣接する画素が黒画素であり、かつ、注目画素TPの2個下の画素の値が白色範囲内であること」を、判断条件Cと呼ぶ。
判断条件Cが満たされる場合には(S125:YES)、CPU210は、S145に処理を進める。判断条件Cが満たされない場合には(S125:NO)、CPU210は、S130に処理を進める。
S130では、CPU210は、注目画素TPの左側に隣接する画素が黒画素であり、かつ、注目画素TPの2個右の画素の値が白色範囲内であるか否かを判断する。左側に隣接する画素が黒画素であるか否かは、S125と同様に、フラグデータを参照して判断される。白色範囲は、S125で用いられる白色範囲と同じである。以下では、S130にて判断される条件、すなわち、「注目画素TPの左側に隣接する画素が黒画素であり、かつ、注目画素TPの2個右の画素の値が白色範囲内であること」を、判断条件Dと呼ぶ。
判断条件Dが満たされる場合には(S130:YES)、CPU210は、S145に処理を進める。判断条件Dが満たされない場合には(S130:NO)、CPU210は、S135に処理を進める。
S135では、CPU210は、注目画素TPの下側に隣接する画素の値が第2黒色範囲内であり、かつ、該下側に隣接する画素の周囲領域内の複数個の画素の値の平均値が第3黒色範囲内であるか否かを判断する。第2黒色範囲は、上記式(3)を満たす範囲である。周囲領域は、上述した注目画素TPの周囲領域と同様に、該下側に隣接する画素を中心とする縦5画素×横5画素の矩形の領域である。第3黒色範囲は、上記式(4)を満たす範囲である。以下では、S135にて判断される条件、すなわち、「注目画素TPの下側に隣接する画素の値が第2黒色範囲内であり、かつ、該下側に隣接する画素の周囲領域内の複数個の画素の値の平均値が第3黒色範囲内であること」を、判断条件Eと呼ぶ。
判断条件Eが満たされる場合には(S135:YES)、CPU210は、S145に処理を進める。判断条件Eが満たされない場合には(S135:NO)、CPU210は、S140に処理を進める。
S140では、CPU210は、注目画素TPの右側に隣接する画素の値が第2黒色範囲内であり、かつ、該右側に隣接する画素の周囲領域内の複数個の画素の値の平均値が第3黒色範囲内であるか否かを判断する。第2黒色範囲は、上記式(3)を満たす範囲である。周囲領域は、上述した注目画素TPの周囲領域と同様に、該右側に隣接する画素を中心とする縦5画素×横5画素の矩形の領域である。第3黒色範囲は、上記式(4)を満たす範囲である。以下では、S140にて判断される条件、すなわち、「注目画素TPの右側に隣接する画素の値が第2黒色範囲内であり、かつ、該右側に隣接する画素の周囲領域内の複数個の画素の値の平均値が第3黒色範囲内であること」を、判断条件Fと呼ぶ。
判断条件Fが満たされる場合には(S140:YES)、CPU210は、S145に処理を進める。判断条件Fが満たされない場合には(S140:NO)、CPU210は、S150に処理を進める。
S145では、CPU210は、注目画素TPを黒画素として特定する。このために、この場合には、CPU210は、フラグデータにおいて、注目画素TPに対応するフラグの値を、黒画素を示す値(本実施例では、「1」)に更新する。
S150では、CPU210は、スキャン画像SI内の全ての画素を注目画素TPとして処理したか否かを判断する。未処理の画素がある場合には(S150:NO)、CPU210は、S102に戻って、未処理の画素を注目画素TPとして選択する。全ての画素が処理された場合には(S150:YES)、CPU210は、黒画素特定処理を終了する。
以上の説明から解るように、黒画素特定処理において、注目画素TPが、膨張・縮小処理後の二値画像データにおいて、エッジ画素として特定されている場合(S104:YES)、注目画素TPは、機械学習モデルを用いて、注目画素TPを含む注目領域TRが、文字領域であるか否かが判断される(S108、S110)。そして、注目領域TRが文字領域である場合には(S110:YES)、注目画素TPは、判断条件A〜Fの少なくとも一部の判断対象とされる。そして、判断条件A〜Fについて、以下の(1)〜(5)の場合に、該注目画素TPは、黒画素として特定される。
(1)判断条件Bを少なくとも満たす場合
(2)判断条件A、Cの両方を少なくとも満たす場合
(3)判断条件A、Dの両方を少なくとも満たす場合
(4)判断条件A、Eの両方を少なくとも満たす場合
(5)判断条件A、Fの両方を少なくとも満たす場合
なお、第2黒色範囲は、第1黒色範囲より狭いので、判断条件Bを満たす場合には、判断条件Aは、必ず満たされる。また、判断条件Aが満たされない場合には、判断条件Bも満たされない。したがって、判断条件Aが満たされない場合には、上記(1)〜(5)のいずれにも該当しない。以上の説明から解るように、判断条件A〜Fで構成される上記(1)〜(5)の条件は、注目画素TPの値を用いて判断される判断条件であって、注目画素TPが黒色を有するべきことを示す特定の判断条件と言うことができる。
以下、具体例を説明する。図6は、黒画素特定処理の第1の説明図である。図6(A)には、白色の背景上の黒色の文字(例えば、図3(A)の文字Ob6)を構成する左右方向(第1方向D1)に延びる線の下側のエッジ(下エッジとも呼ぶ)の拡大図が示されている。下エッジの近傍の領域は、内側領域TAと、外側領域BAと、中間領域MAと、を含んでいる。内側領域TAは、黒色の文字側の領域である。外側領域BAは、白色の背景側の領域である。中間領域MAは、内側領域TAと外側領域BAとの間の領域である。内側領域TA内の画素は、黒に近似した色を有している。外側領域BA内の画素は、白色に近似した色を有している。中間領域MA内の画素は、黒色と白色との中間の色を有している。中間領域MAは、いわゆる「ぼけ」が生じている領域である。これらの領域TA、BA、MA内の複数個の画素は、膨張済みの二値画像データにおいて、エッジ画素として特定されている。このために、これらの領域TA、BA、MA内の複数個の画素のいずれかが、注目画素TPである場合には、S104にて、該注目画素TPは、エッジ画素であると判断される(S104:YES)。
内側領域TA内の画素TP1の色は、黒色に近似している。また、画素TP1の周囲範囲AA1内の複数個の画素は、白色と黒色とのエッジ近傍の画素であるので、彩度は低い。このために、画素TP1が注目画素TPである場合には、画素TP1の値は、第1黒色範囲内であると判断される(S115:YES)。そして、画素TP1の値は、第2黒色範囲内であり、かつ、周囲範囲AA1内の複数個の画素の値の平均値は、第3黒色範囲内であると判断される(S120:YES)。したがって、画素TP1は、上記判断条件Bを満たすので、黒画素として特定される(S145)。
中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素TP2の色は、白色よりも黒色に近いが、内側領域TA内の画素の色ほど黒色に近くない。このために、画素TP2が注目画素TPである場合には、画素TP2の値は、第1黒色範囲内であると判断される(S115:YES)が、第2黒色範囲内ではないと判断される(S120:NO)。すなわち、画素TP2の値は、判断条件Aを満たすが、判断条件Bを満たさない。
画素TP2の上側に隣接する画素SP1は、内側領域TA内の画素である。画素SP1は、画素TP2が注目画素TPとして選択される前に、注目画素TPとして選択されて黒画素として特定される。画素TP2の2個下の画素SP2は、外側領域BA内の画素である。外側領域BA内の画素SP2の色は、白色に近似している。このために、画素SP2の上側に隣接する画素は、黒画素であり、かつ、注目画素TPの2個下の画素の値は、白色範囲内であると判断される(S125:YES)。したがって、画素TP1は、上記判断条件A、Cの両方を満たすので、黒画素として特定される(S145)。
中間領域MAのうち、内側領域TAよりも外側領域に近い画素TP3の色は、黒色よりも白色に近い。このために、画素TP3が注目画素TPである場合には、画素TP2の値は、第1黒色範囲内でないと判断される(S115:NO)。したがって、画素TP3は、上記判断条件Aを満たさないので、黒画素として特定されない。
外側領域BA内の画素TP4は、白色に近似している。このために、画素TP4が注目画素TPである場合には、画素TP4の値は、第1黒色範囲内でないと判断される(S115:NO)。したがって、画素TP4は、上記判断条件Aを満たさないので、黒画素として特定されない。
図6(B)には、図6(A)に示すスキャン画像SI内の領域に対応するフラグデータが示されている。このフラグデータは、黒色画素特定処理が終了した時点におけるフラグデータである。図6(B)に示すように、下エッジの近傍では、黒色画素特定処理によって、内側領域TA内の画素(例えば、画素TP1)と、中間領域MAのうち、外側領域BAよりも内側領域TAに近い領域内の画素(例えば、画素TP2)と、が黒画素として特定される。中間領域MAのうち、内側領域TAよりも外側領域BAに近い領域内の画素(例えば、画素TP3)と、外側領域BA内の画素(例えば、画素TP4)と、は、黒画素として特定されない。
図7は、黒画素特定処理の第2の説明図である。図7(A)には、黒色の文字を構成する上下方向(第2方向D2)に延びる線の右側のエッジ(右エッジとも呼ぶ)の拡大図が示されている。右エッジの近傍の領域は、図6(A)の下エッジと同様に、内側領域TAと、外側領域BAと、中間領域MAと、を含んでいる。これらの領域TA、BA、MA内の複数個の画素のいずれかが、注目画素TPである場合には、S104にて、該注目画素TPは、エッジ画素であると判断される(S104:YES)。
内側領域TA内の画素TP5の色は、黒色に近似している。また、画素TP5の周囲範囲AA2内の複数個の画素は、白色と黒色とのエッジ近傍の画素であるので、彩度は低い。このために、画素TP5は、図6(A)の画素TP1と同様に、判断条件Bを満たす(S115:YES、かつ、S120:YES)ので、黒画素として特定される(S145)。
中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素TP6の色は、白色よりも黒色に近いが、内側領域TA内の画素の色ほど黒色に近くない。このために、画素TP6は、図6(A)の画素TP2と同様に、判断条件Aを満たす(S115:YES)が、判断条件Bを満たさない(S120:NO)。
画素TP6の上側に隣接する画素SP3は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP3は、画素TP6が注目画素TPとして選択される前に、注目画素TPとして選択されて黒画素として特定される。そして、画素TP6の2個下の画素SP4は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP4の色は、白色に近似していない。このために、画素TP6は、判断条件Cを満たさないと判断される(S125:NO)。
さらに、画素TP6の左側に隣接する画素SP5は、内側領域TA内の画素である。画素SP5は、画素TP6が注目画素TPとして選択される前に、注目画素TPとして選択されて黒画素として特定される。画素TP6の2個右の画素SP6は、外側領域BA内の画素である。外側領域BA内の画素SP6の色は、白色に近似している。このために、画素SP6は、判断条件Dを満たすと判断される(S130:YES)。したがって、画素TP6は、判断条件A、Dの両方を満たすので、黒画素として特定される(S145)。
中間領域MAのうち、内側領域TAよりも外側領域に近い画素TP7の色は、黒色よりも白色に近い。また、外側領域BA内の画素TP8は、白色に近似している。このために、図6(A)の画素TP3、TP4と同様に、これらの画素TP7、TP8は、判断条件Aを満たさないので(S115:NO)、黒画素として特定されない。
図7(B)には、図7(A)に示すスキャン画像SI内の領域に対応するフラグデータが示されている。このフラグデータは、黒色画素特定処理が終了した時点におけるフラグデータである。図7(B)に示すように、右エッジの近傍では、下エッジの近傍と同様に、黒色画素特定処理によって、内側領域TA内の画素(例えば、画素TP5)と、中間領域MAのうち、外側領域BAよりも内側領域TAに近い領域内の画素(例えば、画素TP6)と、が黒画素として特定される。中間領域MAのうち、内側領域TAよりも外側領域BAに近い領域内の画素(例えば、画素TP7)と、外側領域BA内の画素(例えば、画素TP8)と、は、黒画素として特定されない。
図8は、黒画素特定処理の第3の説明図である。図8(A)には、黒色の文字を構成する左右方向(第1方向D1)に延びる線の上側のエッジ(上エッジとも呼ぶ)の拡大図が示されている。上エッジの近傍の領域は、図6(A)の下エッジと同様に、内側領域TAと、外側領域BAと、中間領域MAと、を含んでいる。これらの領域TA、BA、MA内の複数個の画素のいずれかが、注目画素TPである場合には、S104にて、該注目画素TPは、エッジ画素であると判断される(S104:YES)。
内側領域TA内の画素TP9の色は、黒色に近似している。また、画素TP9の周囲範囲AA3内の複数個の画素は、白色と黒色とのエッジ近傍の画素であるので、彩度は低い。このために、画素TP9は、図6(A)の画素TP1と同様に、判断条件Bを満たす(S115:YES、かつ、S120:YES)ので、黒画素として特定される(S145)。
中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素TP10の色は、白色よりも黒色に近いが、内側領域TA内の画素の色ほど黒色に近くない。このために、画素TP10は、図6(A)の画素TP2と同様に、判断条件Aを満たす(S115:YES)が、判断条件Bを満たさない(S120:NO)。
画素TP10の上側に隣接する画素SP7は、中間領域MAのうち、内側領域TAよりも外側領域BAに近い画素である。このために、画素SP7は、画素TP10が注目画素TPとして選択される前に、注目画素TPとして選択されているが、黒画素として特定されていない。このために、画素TP10は、判断条件Cを満たさないと判断される(S125:NO)。
そして、画素TP10の左側に隣接する画素SP8は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP8は、画素TP10が注目画素TPとして選択される前に、注目画素TPとして選択されて黒画素として特定される。画素TP10の2個右の画素SP9は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP9の色は、白色に近似していない。このために、画素TP10は、判断条件Dを満たさないと判断される(S130:NO)。
画素TP10の下側に隣接する画素SP10は、内側領域TA内の画素である。このために、画素SP10の色は、黒色に近似している。また、画素SP10の周囲範囲AA4内の複数個の画素は、白色と黒色とのエッジ近傍の画素であるので、彩度は低い。このために、画素TP10は、判断条件Eを満たすと判断される(S135:YES)。したがって、画素TP10は、判断条件A、Eの両方を満たすので、黒画素として特定される(S145)。
中間領域MAのうち、内側領域TAよりも外側領域に近い画素TP11の色は、黒色よりも白色に近い。また、外側領域BA内の画素TP12は、白色に近似している。このために、図6(A)の画素TP3、TP4と同様に、これらの画素TP11、TP12の値は、判断条件Aを満たさないので(S115:NO)、黒画素として特定されない。
図8(B)には、図8(A)に示すスキャン画像SI内の領域に対応するフラグデータが示されている。このフラグデータは、黒色画素特定処理が終了した時点におけるフラグデータである。図8(B)に示すように、上エッジの近傍では、下エッジの近傍と同様に、黒色画素特定処理によって、内側領域TA内の画素(例えば、画素TP9)と、中間領域MAのうち、外側領域BAよりも内側領域TAに近い領域内の画素(例えば、画素TP10)と、が黒画素として特定される。中間領域MAのうち、内側領域TAよりも外側領域BAに近い領域内の画素(例えば、画素TP11)と、外側領域BA内の画素(例えば、画素TP12)と、は、黒画素として特定されない。
図9は、黒画素特定処理の第4の説明図である。図9(B)には、黒色の文字を構成する上下方向(第2方向D2)に延びる線の左側のエッジ(左エッジとも呼ぶ)の拡大図が示されている。左エッジの近傍の領域は、図6(A)の下エッジと同様に、内側領域TAと、外側領域BAと、中間領域MAと、を含んでいる。これらの領域TA、BA、MA内の複数個の画素のいずれかが、注目画素TPである場合には、S104にて、該注目画素TPは、エッジ画素であると判断される(S104:YES)。
内側領域TA内の画素TP13の色は、黒色に近似している。また、画素TP13の周囲範囲AA5内の複数個の画素は、白色と黒色とのエッジ近傍の画素であるので、彩度は低い。このために、画素TP13は、図6(A)の画素TP1と同様に、判断条件Bを満たす(S115:YES、かつ、S120:YES)ので、黒画素として特定される(S145)。
中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素TP14の色は、白色よりも黒色に近いが、内側領域TA内の画素の色ほど黒色に近くない。このために、画素TP14は、図6(A)の画素TP2と同様に、判断条件Aを満たす(S115:YES)が、判断条件Bを満たさないと判断される(S120:NO)。
画素TP14の上側に隣接する画素SP11は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP11は、画素TP14が注目画素TPとして選択される前に、注目画素TPとして選択されて黒画素として特定される。そして、画素TP10の2個下の画素SP12は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP12の色は、白色に近似していない。このために、画素TP14は、判断条件Cを満たさないと判断される(S125:NO)。
そして、画素TP14の左側に隣接する画素SP13は、中間領域MAのうち、内側領域TAよりも外側領域BAに近い画素である。このために、画素SP13は、画素TP10が注目画素TPとして選択される前に、注目画素TPとして選択されるが、黒画素として特定されない。このために、画素TP14は、判断条件Dを満たさないと判断される(S130:NO)。
画素TP14の下側に隣接する画素SP14は、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素である。このために、画素SP14の色は、白色よりも黒色に近いが、内側領域TA内の画素の色ほど黒色に近くない。このために、画素TP14は、判断条件Eを満たさないと判断される(S135:NO)。
画素TP14の右側に隣接する画素SP15は、内側領域TA内の画素である。このために、画素SP15の色は、黒色に近似している。また、画素SP15の周囲範囲AA6内の複数個の画素は、白色と黒色とのエッジ近傍の画素であるので、彩度は低い。このために、画素TP14は、判断条件Fを満たすと判断される(S140:YES)。したがって、画素TP14は、判断条件A、Fの両方を満たすので、黒画素として特定される(S145)。
図9(B)には、図9(A)に示すスキャン画像SI内の領域に対応するフラグデータが示されている。このフラグデータは、黒色画素特定処理が終了した時点におけるフラグデータである。図9(B)に示すように、上エッジの近傍では、下エッジの近傍と同様に、黒色画素特定処理によって、内側領域TA内の画素(例えば、画素TP13)と、中間領域MAのうち、外側領域BAよりも内側領域TAに近い領域内の画素(例えば、画素TP14)と、が黒画素として特定される。中間領域MAのうち、内側領域TAよりも外側領域BAに近い領域内の画素(例えば、画素TP15)と、外側領域BA内の画素(例えば、画素TP16)と、は、黒画素として特定されない。
以上の図6〜図9の説明から解るように、白色の背景上の黒色の文字において、内側領域TA内の画素、および、中間領域MAのうち、外側領域BAよりも内側領域TAに近い画素は、上記(1)〜(5)の場合のうちのいずれかに該当するために、黒画素として特定される。また、外側領域BA内の画素、および、中間領域MA、内側領域TAよりも外側領域BAに近い画素は、上記(1)〜(5)の場合のうちのいずれかにも該当しないために、黒画素として特定されない。この結果、黒画素を適切に特定することができる。なお、黒色以外の文字のエッジ近傍の画素は、第1黒色範囲、および、第2黒色範囲内の画素の値を有さないので、判断条件A、Bを満たさないので、黒画素として特定されない。また、黒色の文字であっても、背景が白色でない文字のエッジ近傍の画素は、周囲領域の画素の平均値の彩度が比較的高くなる、あるいは、外側に2個離れた画素の色が白色に近似しない。このために、当該エッジ近傍の画素は、黒画素として特定されない。
A−4:白色画素特定処理
図2のS30の白色画素特定処理について説明する。図10は、白色画素特定処理のフローチャートである。S200では、CPU210は、スキャンデータの第1方向D1および第2方向D2の読取解像度(単位は、dpi(dot per inch))に応じて、確認画素数Mの値を設定する。確認画素数Mは、注目画素TPから、確認方向に向かって、白画素として特定するか否かの確認を行う画素の個数であり、1以上の自然数である。本実施例では、第1方向D1の読取解像度に応じた確認画素数M1と、第2方向D2の読取解像度に応じた確認画素数M2と、をそれぞれ設定する。確認画素数Mは、読取解像度が高いほど、大きな値に設定される。例えば、確認画素数Mは、読取解像度をR(単位は、dpi)とした場合に、(R/300)の値の小数点以下を切り捨てた値に決定される。例えば、確認画素数Mは、読取解像度が600dpiである場合には、「2」に設定され、読取解像度が1200dpiである場合には、「4」に設定される。
S205では、CPU210は、スキャン画像SI内の複数個の画素から、1個の注目画素TPを選択する。
S210では、CPU210は、黒色画素特定処理で作成されたフラグデータを参照して、注目画素TPが、黒画素であるか否かを判断する。注目画素TPが、黒色画素特定処理にて、黒画素として特定された画素である場合には、注目画素TPは、黒画素であると判断され、黒画素として特定されていない画素である場合には、黒画素でないと判断される。
注目画素TPが黒画素である場合には(S210:YES)、CPU210は、S215に処理を進める。注目画素TPが黒画素でない場合には(S210:NO)、CPU210は、S260に処理を進める。
S215では、CPU210は、上下左右の4方向の中から、1つの確認方向を選択する。S230では、CPU210は、注目画素TPから確認方向にM個先の画素は、黒画素であるか否かを判断する。M個先の画素が黒画素であるか否かは、S210と同様に、黒色画素特定処理で作成されたフラグデータを参照して判断される。
図11は、白色画素特定処理の第1の説明図である。図11(A)には、図6(A)と同様の下エッジの拡大図が示されている。図11(B)には、図11(A)に示すスキャン画像SI内の領域に対応するフラグデータが示されている。このフラグデータは、白色画素特定処理が終了した時点におけるフラグデータである。
確認方向が図11(A)の左方向(第1方向D1の反対方向)または右方向(第1方向D1)である場合には、確認画素数Mの値は、第1方向D1の確認画素数M1である。確認方向が図11(A)の上方向(第2方向D2の反対方向)または下方向(第2方向D2)である場合には、確認画素数Mの値は、第2方向D2の確認画素数M2である。ここでは、図11(A)には、確認画素数M1、M2の両方が、「2」である場合を示している。
注目画素TPが、画素TP17であり、確認方向が上方向である場合には、画素SP16が黒画素であるか否かが判断される。同様に、注目画素TPが、画素TP17であり、確認方向が下方向、左方向、右方向である場合には、それぞれ、画素SP17、SP18、SP19が黒画素であるか否かが判断される。図11(A)の例では、注目画素TPが、画素TP17であり、確認方向が上方向、左方向、右方向である場合には、M個(図11(A)の例では2個)先の画素SP16、SP18、SP19は、それぞれ、黒画素であると判断される。注目画素TPが、画素TP17であり、確認方向が下方向である場合に、M個先の画素SP17は、黒画素でないと判断される。
M個先の画素は、黒画素である場合には(S230:YES)、CPU210は、S255に処理を進める。M個先の画素が、黒画素でない場合には(S230:NO)、CPU210は、S235に処理を進める。
S235では、CPU210は、注目画素TPから確認方向にM個先の画素の値は、白色範囲内であるか否かを判断する。白色範囲は、上述した式(5)を満たす範囲である。該画素SP17は、外側領域BA内の画素であるので、白色に近似している。このために、M個先の画素が、図11(A)の画素SP17である場合には、該画素SP17の値は、白色範囲内であると判断される。
M個先の画素の値が、白色範囲内である場合には(S235:YES)、CPU210は、S240に処理を進める。M個先の画素の値が、白色範囲内でない場合には(S235:NO)、CPU210は、S255に処理を進める。
S240では、CPU210は、注目画素TPから確認方向にM個先の画素を白画素として特定する。このために、この場合には、CPU210は、フラグデータにおいて、注目画素TPに対応するフラグの値を、白画素を示す値(本実施例では、「2」)に更新する。M個先の画素が、図11(A)の画素SP17である場合には、画素SP17は、白画素として特定される。
S245では、CPU210は、注目画素TPと、注目画素TPから確認方向にM個先の画素と、の間に、黒画素とは異なる画素があるか否かを判断する。注目画素TPが、図11(A)の画素TP17であり、M個先の画素が、画素SP17である場合には、該画素TP17と画素SP17との間には、1個の画素SP20がある。画素SP20は、黒画素として特定されていない(図11(B))ので、黒画素とは異なる画素があると判断される。仮に、確認画素数Mが「4」である場合には、注目画素TPと、4個先の画素と、の間には、3個の画素がある。一般的には、注目画素TPと、確認方向にM個先の画素と、の間には、確認方向に沿って並ぶ(M−1)個の画素がある。本ステップでは、該(M−1)個の画素に、少なくとも1個の黒画素とは異なる画素があるか否かが判断される。
注目画素TPとM個先の画素との間に、黒画素とは異なる画素がある場合には(S245:YES)、CPU210は、S250に処理を進める。注目画素TPとM個先の画素との間に、黒画素とは異なる画素がない場合には(S245:NO)、S255に処理を進める。
S250では、CPU210は、注目画素TPとM個先の画素との間の黒画素とは異なる画素を白画素として特定する。このために、この場合には、CPU210は、フラグデータにおいて、注目画素TPとM個先の画素との間の黒画素とは異なる画素に対応するフラグの値を、白画素を示す値(本実施例では、「2」)に更新する。M個先の画素が、図11(A)の画素SP17である場合には、画素SP17は、白画素として特定される。注目画素TPが、図11(A)の画素TP17であり、M個先の画素が、画素SP17である場合には、該画素TP17と画素SP17との間の1個の画素SP20が、白画素として特定される。
S255では、CPU210は、上下左右の4方向を全て確認したか否かを判断する。未確認の方向がある場合には(S255:NO)、CPU210は、S215に戻って、未確認の方向を確認方向に設定する。4方向を確認した場合には(S255:YES)、CPU210は、S260に処理を進める。
S260では、CPU210は、スキャン画像SI内の全ての画素を注目画素TPとして処理したか否かを判断する。未処理の画素がある場合には(S260:NO)、CPU210は、S205に戻って、未処理の画素を注目画素TPとして選択する。全ての画素が処理された場合には(S250:YES)、CPU210は、白画素特定処理を終了する。
以上の説明から解るように、白画素特定処理において、黒画素から所定の確認方向にM個先の画素(例えば、図11(A)の画素SP17)が、黒画素でなく、かつ、その値が白色範囲内である場合に、白画素として特定される(S230〜S240)。換言すれば、M個先の画素が、黒画素とは異なる色を有するべき画素であり、かつ、黒色よりも白色に近い色を有する場合に、該M個先の画素は、白画素として特定される。この結果、黒画素の周辺の画素の中から適切に白画素を特定することができる。例えば、文字のエッジ上の黒画素の周辺の白い背景を示す画素を適切に白画素として特定することができる。
黒画素と、白画素と、の間の画素が、白画素とも黒画素とも異なる画素であると、黒色と白色との境界が鮮明にならない可能性がある。本実施例では、黒画素からM個先の画素、すなわち、黒画素から特定方向にM個(Mは、2以上の整数)の画素分だけ離れた画素が白画素として特定された場合には、該特定方向に沿って該黒画素と、該M個の画素分だけ離れた画素と、の間に位置する(M−1)個の中間画素は、その画素が、黒画素でない場合に、該中間画素の値に関わらずに、白画素として特定される(S245、S250)。この結果、黒画素と、白画素と、の間の画素が、白画素とも黒画素とも異なる画素であると判断されることを抑制できる。したがって、黒色と白色との境界をより効果的に強調できる。
このように、黒画素の周辺画素、具体的には、黒画素との距離がM画素以内の画素は、該画素が黒画素でないことを含む特定条件を満たすか否かが判断され、該特定条件を満たす場合には、白画素として特定される。一方、黒画素に対して上記周辺画素よりも離れた位置にある複数個の遠方画素(例えば、図11(A)の画素SP21)、具体的には、黒画素との距離がM画素を超える画素は、該特定条件については判断されない。
この結果、図11(B)に示すように、中間領域MAのうち、内側領域TAより外側領域BAに近い複数個の画素(例えば、図11(A)の画素SP20)が、白画素として特定される(対応するフラグ=2)。これらの画素は、中間領域MA内の複数個の画素のうち、黒画素に隣接する画素であって、黒画素として特定されていない画素である。また、外側領域BAのうち、中間領域MAと隣接する複数個の画素(例えば、図11(A)の画素SP17)が、白画素として特定される(対応するフラグ=2)。また、外側領域BAのうち、黒画素から3画素以上離れた複数個の画素(例えば、図11(A)の画素SP21)は、白画素にも黒画素にも特定されない(対応するフラグ=0)。
図12を参照して、さらに、具体例を説明する。図12は、白画素特定処理の第2の説明図である。図12(A)には、図8(A)と同様の下エッジの拡大図が示されている。図12(B)には、図13(A)に示すスキャン画像SI内の領域に対応するフラグデータが示されている。下エッジについても同様に、例えば、黒画素である画素TP18が注目画素TPである場合には、4方向にM個(図12(A)では2個)先の画素SP22〜SP25のうち、黒画素でなく、かつ、その値が白色範囲内である画素SP22が、白画素として特定される(S230〜S240)。そして、画素TP18と、画素SP22と、の間に位置する画素SP26は、黒画素ではないので、白画素として特定される。画素TP18から3画素離れた画素SP27は、遠方画素であるので、上記特定条件について判断されずに、白画素として特定されない。したがって、図12(B)に示すように、中間領域MAのうち、内側領域TAより外側領域BAに近い複数個の画素(例えば、図12(A)の画素SP22)が、白画素として特定される(対応するフラグ=2)。また、外側領域BAのうち、中間領域MAと隣接する複数個の画素(例えば、図12(A)の画素SP26)が、白画素として特定される(対応するフラグ=2)。また、外側領域BAのうち、黒画素から3画素以上離れた複数個の画素(例えば、図12(A)の画素SP27)は、白画素にも黒画素にも特定されない(対応するフラグ=0)。
図示は省略するが、右エッジ(図7(A))および左エッジ(図9(A))においても、中間領域MAのうち、内側領域TAより外側領域BAに近い複数個の画素と、外側領域BAのうち、中間領域MAと隣接する複数個の画素と、が白画素として特定される。黒画素から3画素以上離れた複数個の画素は、白画素にも黒画素にも特定されない。
図13は、処理済画像の説明図である。図13(A)、(B)には、それぞれ、図11(A)の下エッジ、図12(A)の上エッジに対応する処理済画像OIの拡大図が示されている。上述した黒画素および白画素の特定結果を用いて、図2のS45の白黒画素置換処理が実行された場合には、図13(A)、(B)の処理済画像OIを示す処理済画像データが生成される。この処理済画像OIにおいて、黒い画素は、スキャン画像SI内の特定済みの黒画素に対応する画素であり、黒色に置換された画素(黒置換画素とも呼ぶ)である。処理済画像OIにおいて、丸印が付された白い画素は、特定済みの白画素に対応する画素であり、白色に置換された画素(白置換画素とも呼ぶ)である。処理済画像OIにおいて、丸印が付されていない白い画素は、遠方画素(白画素にも黒画素にも特定されていない画素)に対応する対応遠方画素である。このように、処理済画像OIは、複数個の黒置換画素と、複数個の白置換画素と、複数個の対応遠方画素と、を含む。この結果、処理済画像OIにおいて、黒色と白色との境界を鮮明にすることができる。複数個の遠方画素は、鮮鋭化画像FI(図3(D))の対応する画素の値を有するので、白色とも黒色とも異なる色を有し得る。この結果、黒色と白色との境界を鮮明にするために、黒色と白色との境界から離れた遠方の部分が、過度に影響を受けることを抑制できる。例えば、スキャン画像SIにおいて、白色の背景Bg1が、完全な白色でなく、例えば、薄い模様や薄い色を含んでいる場合に、処理済画像OIにおいて、背景Bg1の模様や色が失われて画質が低下することを抑制できる。また、スキャン画像SIにおいて、黒色の文字の近傍に、例えば、薄い色のオブジェクト(例えば、描画など)が含まれる場合に、該オブジェクトの一部が白色に置換されて該オブジェクトの見栄えが低下することを抑制できる。
以上説明した本実施例によれば、図2のS25の黒画素特定処理(図5)において、CPU210は、機械学習モデルを用いて、注目領域TRが文字領域であるか否かを判断する(図5のS108、S110)。CPU210は、注目画素TPの値を用いて、注目画素TPが黒色を有するべきことを示す特定の判断条件を満たすか否かを判断する(図5のS120〜S140)。CPU210は、注目領域TRが文字領域であると判断され(S110:YES)、かつ、注目画素TPが黒色を有するべきことを示す特定の判断条件を満たす場合に(図5のS120〜S140のいずれかにてYES)、注目画素TPを黒画素として特定する(図5のS145)。さらに、図2のS30の白画素特定処理(図10)において、CPU210は、特定済みの黒画素の周辺に位置する白画素を特定する。CPU210は、スキャン画像SIにおいて特定済みの黒画素に対応する画素が黒色を有し、特定済みの白画素に対応する画素が白色を有する処理済画像データを生成する(図2のS35〜S45)。この結果、黒色画素特定処理において、機械学習モデルを用いて黒画素を適切に特定できる。したがって、処理済画像データを生成する際に、黒色の文字以外のオブジェクトのエッジが強調されることを抑制できるので、スキャン画像SI内の黒色の文字のエッジを適切に特定し強調できる。
具体的に説明する。仮に、上述した黒色を有するべきことを示す特定の判断条件(図5のS120〜S140)を満たすか否かだけで、黒色画素を特定する場合には、例えば、文字とは異なるオブジェクトOb1〜Ob3に含まれる黒色の画素であって、周囲に白色の画素を有する画素が、黒画素として誤って特定され得る。この場合には、文字とは異なるオブジェクトOb1〜Ob3に含まれる黒色の画素と周囲の白色の画素との境界のエッジが誤って強調され、処理済画像の画質が低下するおそれがある。例えば、写真に含まれる被写体(人や静物)の輪郭などが誤って強調され、写真が不自然な見栄えとなる場合がある。このような被写体の輪郭における画素の値の変化のパターンと、白色の背景上の黒色の文字のエッジにおける画素の値の変化のパターンと、の間には、違いがある。このようなパターンの違いは、上述した判断条件A〜Fのような比較的簡単な数式で表現することは困難であるが、機械学習モデルをトレーニングすることによって機械学習モデルを用いて判断可能である。本実施例では、機械学習モデルを用いて注目画素TPを含む注目領域TRが文字領域であると判断されることが、注目画素TPが黒画素として特定されるための必要条件となっているので、文字以外のオブジェクトのエッジが強調されることを抑制して、黒色の文字のエッジを適切に特定し強調できる。
さらに、本実施例では、CPU210は、注目領域TRが文字領域であると判断される場合に(S110:YES)、注目画素TPが上述の特定の判断条件を満たすか否かを判断し(図5のS120〜S140)、注目領域TRが文字領域でないと判断される場合に(S110:NO)、注目画素TPが特定の判断条件を満たすか否かを判断しない。この結果、無駄に、特定の判断条件を満たすか否かを判断することを抑制できるので、処理済画像データの生成に要する処理負荷を低減できる。
さらに、本実施例では、図2のS15にて、CPU210は、対象画像内の複数個の画素の中から、複数個のエッジ画素を特定する。そして、黒画素特定処理では、これらの複数個のエッジ画素のそれぞれについて、機械学習モデルを用いた判断が実行される(図5のS104:YES、S106)。この結果、全ての画素について機械学習モデルを用いた判断が実行される場合と比較して、処理済画像データの生成に要する処理負荷を低減できる。
さらに、本実施例では、図2のS50にて、処理済画像データを用いて、印刷データを生成するので、印刷画像内の白色の背景上に位置する黒色の文字のエッジを適切に特定し強調することができる。
さらに、本実施例で強調すべき文字の色(黒色)は、印刷実行部280によって用いられる4種類のインクのうちのKインクに対応する色である。インクに対応する色(例えば、シアン、マゼンタ、イエロ、黒のいずれか)のエッジを強調すると、印刷画像上でも該エッジの強調が維持される。このために、エッジ強調処理を行う意義が大きい。例えば、文字の色がインクに対応する色と異なる色である場合には、当該文字のエッジは、S50の印刷データ生成処理にて行われるハーフトーン処理によってドットデータに変換された場合に、崩れやすい。このために、ハーフトーン処理の前にエッジを強調する意義が小さい。本実施例によれば、印刷画像において色材に対応する色の文字のエッジを適切に特定し強調することができる。
さらに本実施例では、対象画像データは、イメージセンサを用いて原稿を読み取ることによって生成されるスキャンデータである。スキャンデータによって示される画像内の文字のエッジは、ぼけていることが多い。上記構成によれば、そのような画像内の文字のエッジを適切に特定し強調することができる。
以上の説明から解るように、本実施例の黒色は、第1の色の例であり、白色は、第2の色の例である。本実施例の黒画素は、第1の画素の例であり、白画素は、第2の画素の例である。処理済画像データは、エッジ強調画像データの例である。また、本実施例の処理済画像データは、エッジ強調画像データの例である。
B.変形例:
(1)上記実施例では、黒色と白色との境界を鮮明にするべく、黒色を有するべき黒画素と、白色を有するべき白画素と、が特定されている(図2のS25、S30)。これに代えて、他の色、例えば、シアンとマゼンタとの境界を鮮明にするべく、シアンを有するべきシアン画素と、マゼンタを有するべきマゼンタ画素と、が特定されても良い。一般的に言えば、第1色を有するべき複数個の第1画素と、第1色とは異なる色を有するべき複数個の第2画素と、が特定されることが好ましい。
ここで、印刷を前提とする場合には、第1色と第2色との組み合わせは、印刷に用いられる複数種類の色材(例えば、インクやトナー)に対応する色と、印刷に用いられる用紙の地色と、の中から選択される2色であることが好ましい。例えば、第1色と第2色との組み合わせは、印刷に用いられる色材の色であるシアン、マゼンタ、イエロ、黒と、用紙の地色である白と、から成る5色の中から選択される2色であることが好ましい。この場合には、処理済画像データに対してハーフトーン処理を実行して得られる印刷画像(網点画像)においても、第1色と第2色との境界は、鮮明のままで維持される。
さらには、背景の色として特定される色(本実施例では白色)は、基準以上の明度を有する色であることが好ましい。例えば、背景の色として特定される色は、完全な黒の明度を0として、完全な白の明度を100とする場合に、70以上の明度を有する色であることが好ましい。この場合には、文字などのオブジェクトの色とのコントラストが高くなりやすい。このために、処理済画像OIにおいて、文字などのオブジェクトと背景との境界が鮮明に見えやすい。
(2)上記実施例の黒画素特定処理(図5)では、S120〜S140の特定の判断条件を判断する処理が実行される前に、S108、S110の機械学習モデルを用いた判断を行っている。これに代えて、S120〜S140の特定の判断条件を判断する処理を行い、注目画素TPが特定の判断条件を満たす場合に、S108、S110の機械学習モデルを用いた判断を行っても良い。
(2)図6の黒画素特定処理では、二値画像データによって特定される複数個のエッジ画素の中から、黒画素が特定される(S104)。これに代えて、例えば、スキャン画像SI内の全ての画素の中から、黒画素が特定されても良い。すなわち、図6のS104は省略されても良い。
(3)図6の黒画素特定処理において、黒色を有するべきことを示す特定の判断条件は、一例であり、これに限られない。例えば、実施例の第2黒色範囲よりも狭く、かつ、黒色を含む範囲内の画素の値を有する画素は、全て黒画素として特定されても良い。
(4)図10の白画素特定処理において、白画素として特定するための条件は、一例であり、これに限られない。例えば、黒画素の4方向に隣接する画素のうち、黒画素でなく、かつ、最も白に近い画素を、白画素として特定しても良い。また、上記実施例の確認画素数Mの値は、スキャンデータの読取解像度に関わらずに、一定の値(例えば、2)であっても良い。
(5)上記実施例では、スキャンデータの各画素の値は、RGB値であるが、他の表色系の色値であっても良い。例えば、スキャンデータの各画素の値は、C、M、Yの3個の成分値を含むCMY表色系の色値であっても良い。
(6)上記実施例では、エッジ画素に対して、エッジ鮮鋭化処理が実行され(図2のS40)、非エッジ画素に対して、網点平滑化処理が実行される(図2のS35)。これに代えて、エッジ画素に対しては、文字の見栄えを向上するためのアンチエイリアス処理が実行されても良い。また、非エッジ画素に対しては、例えば、印刷時の色材の使用量を減らすために、色を飛ばす処理(白に変換する処理)が実行されても良い。一般的には、エッジ画素と、エッジ画素と、に互いに異なる画像処理が実行されることが好ましい。あるいは、エッジ画素と非エッジ画素のいずれか一方に対して、特定の画像処理が実行され、他方に対して、該特定の画像処理が実行されなくても良い。また、図2のS40、S35の処理は省略されて、スキャンデータに対して、S45の白黒画素置換処理が実行されても良い。
(7)上記実施例では、対象画像データは、スキャンデータであるが、これに限られない。対象画像データは、2次元イメージセンサを備えるデジタルカメラによって印刷物を読み取ることによって生成されても良い。また、また、対象画像データは、描画作成や文書作成などのアプリケーションプログラムを用いて作成された画像データであっても良い。
(8)上記実施例では、処理済画像データは、処理済画像を印刷するために用いられている(図2のS50、S55)。これに限らず、処理済画像データは、処理済画像を液晶ディスプレイなどの表示部に表示するために用いられても良い。
(9)図2の画像処理を実現する画像処理装置は、複合機200に限らず、種々の装置であってよい。例えば、スキャナやデジタルカメラが、自身で生成された対象画像データを用いて、プリンタに供給するための印刷データを生成するために、図2の画像処理を実行しても良い。また、例えば、スキャナやプリンタと通信可能な接続される端末装置(例えば、端末装置100)やサーバ(図示省略)が、スキャナから取得したスキャンデータを用いて、図2の画像処理を実行して、印刷データを生成し、該印刷データをプリンタに供給しても良い。また、ネットワークを介して互いに通信可能な複数個のコンピュータ(例えば、クラウドサーバ)が、画像処理に要する機能を一部ずつ分担して、全体として、画像処理を実行してもよい。この場合、複数個のコンピュータの全体が、画像処理装置の例である。
(10)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図4のS45の白黒画素置換処理や、S40のエッジ強調処理は、ASICなどの専用のハードウェアによって、実行されても良い。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。