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階調である。
RGB画像データであるスキャンデータは、RGB表色系を構成する3個の色成分に対応する3個の成分画像データ(R成分画像データ、G成分画像データ、B成分画像データ)を含んでいると言うことができる。各成分画像データは、1種類の色成分の値を、画素の値とする画像データである。
図3は、画像処理で用いられる画像の一例を示す第1の図である。図3(A)には、スキャンデータによって示されるスキャン画像SIの一例が示されている。スキャン画像SIは、複数個の画素を含む。該複数個の画素は、第1方向D1と、第1方向D1と直交する第2方向D2と、に沿って、マトリクス状に配置されている。
図3(A)のスキャン画像SIは、原稿の用紙の地色を示す白色の背景Bg1と、3個の文字とは異なるオブジェクトOb1~Ob3と、2個の文字Ob4、Ob5と、2個の文字Ob4、Ob5の背景Bg2と、を含んでいる。文字とは異なるオブジェクトは、例えば、写真である。背景Bg2は、白色とは異なる色を有する均一な画像である。
S20では、CPU210は、スキャンデータに対して、文字特定処理を実行する。文字特定処理は、スキャン画像SI内の複数個の画素を、文字を示す複数個の文字画素と、文字を示さない複数個の非文字画素と、に分類することによって、文字画素を特定する処理である。
文字特定処理によって、例えば、文字画素の値が「1」とされ、非文字画素の値が「0」とされた二値画像データ(文字特定データとも呼ぶ)が生成される。図3(B)には、文字特定データによって示される文字特定画像TIの一例が示されている。この文字特定画像TIには、スキャン画像SI内の2個の文字Ob4、Ob5のエッジを構成する複数個の画素が、文字画素Tp4、Tp5として、特定されている。なお、比較的大きな文字については、文字のエッジを構成する画素が文字画素として特定され、比較的小さな文字については、文字を構成する画素の全体が文字画素として特定される。文字特定処理の詳細は、後述する。
S30では、CPU210は、スキャンデータに対して、網点平滑化処理を実行して、平滑化画像を示す平滑化画像データを生成する。具体的には、CPU210は、スキャンデータに含まれる複数個の非文字画素の値のそれぞれに対して、ガウスフィルタなどの平滑化フィルタを用いた平滑化処理を実行して、平滑化処理済みの複数個の非文字画素の値を算出する。平滑化処理の対象となる非文字画素は、S20の分類処理によって生成された文字特定データを参照して特定される。CPU210は、スキャンデータに含まれる複数個の文字画素の値と、平滑化処理済みの複数個の非文字画素の値と、を含む平滑化画像データを生成する。
図3(C)には、平滑化画像データによって示される平滑化画像GIが示されている。平滑化画像GIは、白色の背景Bg1gと、スキャン画像SI内のオブジェクトOb1~Ob5、背景Bg2が平滑化されたオブジェクトOb1g~Ob5g、背景Bg2gを含んでいる。これらのオブジェクトOb1g~Ob5g、背景Bg2gのうち、文字Ob4g、Ob5g以外の部分(非文字部分とも呼ぶ)は、スキャン画像SIと比較して、平滑化されている。
S40では、CPU210は、平滑化画像データに対して、文字鮮鋭化処理を実行して、処理済み画像データを生成する。具体的には、CPU210は、平滑化画像データに含まれる複数個の文字画素の値のそれぞれに対して、アンシャープマスク処理や鮮鋭化フィルタを適用する処理などの鮮鋭化処理を実行して、鮮鋭化処理済みの複数個の文字画素の値を算出する。鮮鋭化処理の対象となる文字画素は、S20の分類処理によって生成された文字特定データを参照して特定される。そして、CPU210は、平滑化画像データに含まれる複数個の非文字画素の値(平滑化処理済みの複数個の非文字画素の値)と、鮮鋭化処理済みの複数個の文字画素の値と、を含む処理済み画像データを生成する。平滑化画像データに含まれる複数個の文字画素の値は、平滑化処理の対象ではないので、スキャンデータに含まれる複数個の文字画素の値と同じである。したがって、本ステップの文字鮮鋭化処理は、スキャンデータに含まれる複数個の文字画素の値に対して実行される、とも言うことができる。
図3(D)には、処理済み画像データによって示される処理済み画像FIが示されている。処理済み画像FIは、白色の背景Bg1fと、スキャン画像SI内のオブジェクトOb1~Ob5、背景Bg2に対応するオブジェクトOb1f~Ob5f、背景Bg2fを含んでいる。これらのオブジェクトOb1f~Ob5f、背景Bg2fのうち、文字Ob4f、Ob5fのエッジは、スキャン画像SI内の文字Ob4、Ob5や、平滑化画像GI内の文字Ob4g、Ob5gと比較して、鮮鋭化されている。また、文字以外のオブジェクトOb1f~Ob3f、背景Bg2fのエッジは、鮮鋭化されていない。
以上の説明から解るように、処理済み画像FI内のオブジェクトOb1f~Ob5f、背景Bg2fは、鮮鋭化された文字と、平滑化された非文字を含む。
S50では、CPU210は、処理済み画像データを用いて印刷データを生成する印刷データ生成処理を実行する。具体的には、RGB画像データである処理済み画像データに対して色変換処理が実行されて、印刷に用いられる色材に対応する色成分(C、M、Y、Kの成分)を有する色値であるCMYK値で画素ごとの色を示すCMYK画像データが生成される。色変換処理は、例えば、公知のルックアップテーブルを参照して実行される。CMYK値画像データに対して、ハーフトーン処理が実行されて、印刷に用いられる色材ごと、かつ、画素ごとに、ドットの形成状態を示すドットデータが生成される。ドットの形成状態は、例えば、ドット有、ドット無の2種類の状態や、大ドット、中ドット、小ドット、ドット無の4種類の状態を取り得る。ハーフトーン処理は、例えば、ディザ法や、誤差拡散法に従って実行される。該ドットデータは、印刷時に用いられる順に並べ替えられ、該ドットデータに、印刷コマンドが付加されることによって、印刷データが生成される。
S60では、CPU210は、印刷処理を実行して、画像処理を終了する。具体的には、CPU210は、印刷データを印刷実行部280に供給して、印刷実行部280に処理済み画像を印刷させる。
以上説明した画像処理によれば、画像処理部としてのCPU210は、スキャンデータのうち、特定済みの複数個の文字画素の値に対して第1の画像処理(具体的には、エッジ鮮鋭化処理)を実行し(S40)、複数個の非文字画素の値に対して第1の画像処理とは異なる第2の画像処理(具体的には、網点平滑化処理)を実行し(S30)、処理済み画像データを生成する。この結果、文字画素の値と、文字画素とは異なる画素の値と、に対して、互いに異なる画像処理が実行されるので、スキャンデータに対する適切な画像処理を実現できる。なお、変形例では、S40の文字鮮鋭化処理が先に実行され、その後に、S30の網点平滑化処理が実行されても良い。
より具体的には、鮮鋭化処理済みの複数個の文字画素の値と、平滑化処理済みの複数個の非文字画素の値と、を含む処理済み画像データが生成される(S30、S40)。この結果、見栄えの良い処理済み画像FIを示す処理済み画像データを生成することができる。
例えば、図3(D)の処理済み画像FIに示すように、処理済み画像データでは、文字画素の値には、鮮鋭化処理済みの値が用いられている。この結果、処理済み画像FIの文字がシャープに見えるので、例えば、印刷される処理済み画像FIの見栄えを向上することができる。
また、処理済み画像データでは、処理済み画像FI内の背景Bg2や、写真などの文字とは異なるオブジェクトを構成する非文字画素の値には、平滑化処理済みの値が用いられている。この結果、処理済み画像FIの文字とは異なる部分に、例えば、モアレの原因となる網点が表れることを抑制できるので、印刷される処理済み画像FIにモアレなどの不具合が発生することを抑制できる。この結果、印刷される処理済み画像FIの見栄えを向上することができる。また、写真内のエッジが過度に強調されることが抑制されるので、画像FIの見栄えを向上することができる。
例えば、スキャンデータの生成に用いられた原稿は、画像が印刷された印刷物である。このため、例えば、原稿内の白とは異なる色を有する背景Bg2などの均一な部分は、画像を形成するドットレベルでみると、網点を形成している。網点は、複数個のドットと、ドットが配置されていない部分(原稿の地色を示す部分)と、を含む。このために、スキャン画像SI内の背景Bg2を示す領域には、画素レベルでみると、網点が示されている。網点内のドットは、原稿の印刷時に用いられるディザマトリクスなどの影響によって、周期性を持って並んでいる。このためにスキャンデータを用いて印刷を行うと、ハーフトーン処理前の元画像(スキャン画像SI)内に存在している網点のドットの周期成分と、印刷画像を構成する網点のドットの周期成分と、が干渉して、モアレが表れやすい。本実施例の処理済み画像FIでは、平滑化処理によって、元画像(スキャン画像SI)内のエッジとは異なる部分のドットの周期成分が低減される。この結果、処理済み画像データを用いて、処理済み画像FIを印刷する場合に、例えば、印刷される処理済み画像FIにモアレが発生することを抑制できる。
特に、上記画像処理では、印刷データ生成部としてのCPU210は、処理済み画像データを用いて、印刷データを生成する(S50)ので、例えば、印刷される処理済み画像FIに発生しやすいモアレを抑制可能な適切な印刷データを生成することができる。
A-3:文字特定処理
図2のS20の文字特定処理について説明する。S22では、CPU210は、スキャンデータを用いて、第1の二値画像データ生成処理を実行して、第1の二値画像データを生成する。第1の二値画像データは、エッジ画素と非エッジ画素とを示す二値データである。ここで、第1の二値画像データによって示されるエッジ画素を第1のエッジ画素とも呼び、第1の二値画像データによって示される非エッジ画素を第1の非エッジ画素とも呼ぶ。第1の二値画像データ生成処理の詳細は、後述する。
S24では、CPU210は、スキャンデータを用いて、第2の二値画像データ生成処理を実行して、第2の二値画像データを生成する。第2の二値画像データは、第1の二値画像データと同様に、エッジ画素と非エッジ画素とを示す二値データである。第2の二値画像データは、第1の二値画像データとは異なる処理によって生成され、第1の二値画像データとは異なるデータである。ここで、第2の二値画像データによって示されるエッジ画素を第2のエッジ画素とも呼び、第2の二値画像データによって示される非エッジ画素を第2の非エッジ画素とも呼ぶ。第2の二値画像データ生成処理の詳細は、後述する。
S26では、CPU210は、S22にて生成された第1の二値画像データと、S24にて生成された第2の二値画像データと、を合成する論理和合成処理を実行して、最終的に特定されるエッジ画素と非エッジ画素とを示す二値画像データ(エッジ特定データとも呼ぶ)を生成する。具体的には、CPU210は、第1の二値画像データと、第2の二値画像データと、の各画素の論理和を取ることによって、エッジ特定データとしての二値画像データを生成する。
換言すれば、第1の特定部としてのCPU210は、第1の二値画像データによって特定される複数個の第1のエッジ画素と、第2の二値画像データによって特定される複数個の第2のエッジ画素と、を含む画素群であって、第1のエッジ画素とも第2のエッジ画素とも異なる画素を含まない画素群を、最終的に、複数個のエッジ画素(文字候補画素)として特定する。この結果、第1の二値画像データと第2の二値画像データとを用いて、対象画像内の画素がエッジ画素であるか否かを精度良く判断することができる。例えば、スキャン画像SI内のエッジ画素の特定漏れを効果的に低減できる。
エッジ特定データによって特定されるエッジ画素は、文字画素の候補となる画素であり、文字候補画素とも呼ぶ。例えば、エッジ特定データは、文字候補画素(本実施例ではエッジ画素)の値が「1」とされ、文字候補画素ではない画素(本実施例では、非エッジ画素)の値が「0」とされた二値画像データである。
図4は、文字特定処理で用いられる画像の一例を示す図である。図4(A)には、エッジ特定データによって示されるエッジ特定画像EIの一例が示されている。このエッジ特定画像EIには、スキャン画像SI内のオブジェクトOb1~Ob5のエッジEg1~Eg5を構成する複数個のエッジ画素と、背景Bg1と背景Bg2との境界のエッジEg8を構成する複数個のエッジ画素とが、文字候補画素として特定されている。このように、文字候補画素によって示されるエッジは、文字のエッジを含む。また、該エッジは、文字とは異なるオブジェクト(例えば、写真)に含まれる細線などのエッジを含む。
S28では、CPU210は、スキャンデータに対して、ブロック判定処理を実行して、ブロックごとに、文字を含む文字ブロックと、文字を含まない非文字ブロックと、を示す二値画像データ(ブロック判定データとも呼ぶ)を生成する。ブロック判定処理は、スキャンデータを用いて、スキャン画像SI内に配置される複数個のブロックのそれぞれが、文字ブロックであるか否かをブロックごとに判断する処理である。1個のブロックは、N個(Nは2以上の整数)の画素を含む矩形の領域である。ブロック判定データは、文字ブロックを構成する画素の値が「1」とされ、非文字ブロックを構成する画素の値が「0」とされた二値画像データである。
図4(B)には、ブロック判定データによって示されるブロック判定画像BIの一例が示されている。このブロック判定画像BIには、スキャン画像SI内の文字Ob4、Ob5が配置された領域を示す文字ブロックBk4、Bk5が特定されている。
S29では、CPU210は、S26にて生成されたエッジ特定データと、S28にて生成されたブロック判定データと、を合成する論理積合成処理を実行して、文字画素と非文字画素とを示す上述した文字特定データ(図3(B)参照)を生成する。具体的には、CPU210は、エッジ特定データと、ブロック判定データと、の各画素の論理積を取ることによって、文字特定データとしての二値画像データを生成する。換言すれば、CPU210は、エッジ特定データによって特定される複数個の候補画素のうち、ブロック判定データによって特定される文字ブロック内に位置する画素を、文字画素として特定する。CPU210は、スキャン画像SI内の複数個の画素のうち、エッジ特定データによって特定される複数個の候補画素とは異なる画素、および、ブロック判定データによって特定される文字ブロックとは異なるブロック内に位置する画素を、非文字画素として特定する。文字特定データが生成されると、文字特定処理は、終了される。
A-4:第1の二値画像データ生成処理
図2のS22の第1の二値画像データ生成処理について説明する。図5は、第1の二値画像データ生成処理のフローチャートである。S100では、CPU210は、スキャンデータに含まれる3個の成分画像データ、すなわち、R成分画像データ、G成分画像データ、B成分画像データのそれぞれに対して、平滑化処理を実行する。これによって、3個の平滑化済みの成分画像データ、すなわち、平滑化済みのR成分画像データ、平滑化済みのG成分画像データ、平滑化済みのB成分画像データが生成される。
平滑化処理は、処理対象の成分画像データによって示される成分画像を平滑化する処理である。本実施例の平滑化処理は、処理対象の成分画像データの各画素の値に対して、所定の平滑化フィルタを適用して、平滑化済みの各画素の値を算出する処理である。平滑化フィルタには、例えば、縦7画素×横7画素のサイズのガウスフィルタが用いられる。
S110では、3個の平滑化済みの成分画像データのそれぞれに対して、エッジ強調処理を実行して、3個のエッジ強調済みの成分画像データ、すなわち、エッジ強調済みのR成分画像データ、エッジ強調済みのG成分画像データ、エッジ強調済みのB成分画像データを生成する。
図6は、エッジ強調処理のフローチャートである。ここでは、平滑化済みのR成分画像データが処理対象であるとして説明する。平滑化済みのG成分画像データおよび平滑化済みのB成分画像データに対しても同様の処理が行われる。
S200では、CPU210は、エッジ強調済みのR成分画像データを生成するためのキャンバスデータをメモリ(具体的には、揮発性記憶装置220のバッファ領域)に準備する。キャンバスデータによって示されるキャンバス(初期画像)は、スキャン画像SIと同じサイズの画像、すなわち、同じ画素数の画像である。キャンバスデータの各画素の値は、所定の初期値(例えば、0)である。
S205では、CPU210は、平滑化済みのR成分画像データによって示される平滑化済みのR成分画像内の複数個の画素から1個の注目画素を選択する。
S210では、CPU210は、注目画素に対応するマスク値MVを算出する。マスク値MVは、注目画素の値TVと、注目画素に対して上下左右に隣接する4個の画素を含む所定個数の周辺画素の値と、を用いて、注目画素の値TVを平滑化する処理によって算出される。このために、マスク値MVを、平滑値とも呼ぶ。具体的には、注目画素を中心とする縦10画素×横10画素の矩形の範囲内の100個の画素の値の平均値が、注目画素に対応するマスク値MVとして算出される。
S220では、CPU210は、注目画素の値TVと、注目画素に対応するマスク値MVと、の差分ΔVを算出する(ΔV=(TV-MV))。
S230では、CPU210は、差分ΔVは、基準以上であるか否かを判断する。具体的には、差分ΔVが、予め定められた閾値TH以上であるか否かが判断される。閾値THは、成分値が、0~255の範囲の256階調の値である場合に、例えば、20~30程度の値である。
差分ΔVが基準以上である場合には(S230:YES)、S240にて、CPU210は、注目画素の値TVと、注目画素に対応する差分ΔVと、の和(TV+ΔV)を、処理済みの値として算出する。差分ΔVが基準未満である場合には(S230:NO)、CPU210は、S240をスキップする。
S245では、CPU210は、注目画素の値を、S200にて準備されたキャンバスデータに記録する。S240が実行された場合には、S240にて算出された注目画素の値TVと、注目画素に対応する差分ΔVと、の和が、処理済みの値としてキャンバスデータに記録される。S240がスキップされた場合には、平滑化済みのR成分画像データの注目画素の値が、そのまま、キャンバスデータに記録される。
S250では、CPU210は、R成分画像内の全ての画素を注目画素として処理したか否かを判断する。未処理の画素がある場合には(S250:NO)、CPU210は、S205に戻って、未処理の画素を注目画素として選択する。全ての画素が処理された場合には(S250:YES)、CPU210は、エッジ強調処理を終了する。この時点でエッジ強調済みのR成分画像データが生成されている。
図7は、平滑化済みのR成分画像データと、エッジ強調済みのR成分画像データと、の説明図である。図7(A)には、図5のS100の平滑化処理前のR成分画像データを概念的に示すグラフが図示されている。図7(B)、図7(C)には、それぞれ、平滑化処理済みのR成分画像データ、および、エッジ強調済みのR成分画像データを概念的に示すグラフが図示されている。各グラフのうち、左側の部分には、網点を示す網点領域が概念的に示され、右側の部分には、文字などのオブジェクトのエッジを示すエッジ領域が概念的に示されている。各グラフの縦軸は、R成分の値を示し、横軸は、所定の方向(例えば、図3の第1方向D1)の位置を示す。
平滑化処理前のR成分画像データには、例えば、網点領域において、複数個の網点と、該網点間の複数個の隙間と、に対応する複数個の谷部C1~C3と、複数個の山部P1、P2と、が現れる(図7(A))。このような谷部C1~C3と、複数個の山部P1、P2と、の間のR成分の値の差が大きいまま残存していると、後述するS150の二値化処理において、該R成分の値の差に起因して、網点を示すエッジ画素が特定されやすい。網点領域は、画素レベルの視点(網点を認識できる程度のミクロの視点)でみれば、網点を含むが、観察者の視点(網点を認識できない程度のマクロの視点)でみれば、均一な領域である。このため、本実施例では、網点領域内において、網点に起因するエッジ画素は、特定されるべきではない。網点領域は、図2のS30で平滑化されることが好ましく、S40にて、鮮鋭化されるべきではないからである。仮に、網点のエッジが鮮鋭化されると、網点の周期性が目立つために、該画像を印刷する場合に、モアレが目立ちやすくなるからである。例えば、スキャン画像SI内の背景Bg2などの均一な部分や、オブジェクトのエッジとは異なる部分において、エッジ画素は、特定されるべきではない。
平滑化済みのR成分画像データでは、平滑化処理によって、例えば、網点領域において、複数個の谷部C1a~C3aと、複数個の山部P1a、P2aと、のR成分の値の差が、平滑化処理前のR成分画像データと比較して十分に小さくなっている(図7(B))。
ここで、本実施例のエッジ強調処理では、注目画素の値TVと、注目画素に対応するマスク値MVと、の差分ΔVと、が大きいほど、エッジ強調の効果が大きくなる。このために、図7(B)の網点領域のように、比較的R成分の値の差が小さく平坦になっている領域では、エッジ強調の効果が小さくなる。また、本実施例のエッジ強調処理では、差分ΔVが基準未満である場合には、エッジ強調が行われずに、平滑化済みのR成分画像データの画素の値がそのまま採用される(図6のS230)。この結果、エッジ強調済みのR成分画像データでは、エッジ強調処理が行われたにも関わらずに、例えば、網点領域において、複数個の谷部C1b~C3bと、複数個の山部P1b、P2bと、のR成分の値の差は、平滑化処理済みのR成分画像データと比較して大きくなってはいない(図7(C))。すなわち、平滑化済みのR成分画像データと同様に、エッジ強調済みのR成分画像データでは、複数個の谷部C1b~C3bと、複数個の山部P1b、P2bと、のR成分の値の差が、平滑化処理前のR成分画像データ(図7(A))と比較して十分に小さくなっている(図7(C))。
平滑化処理前のR成分画像データには、例えば、文字などのオブジェクトのエッジを示すエッジ領域において、該エッジに対応してR成分の値が急激に変化する変動部E1が現れる(図7(A))。このような変動部E1において、値の変化が大きいほど、後述するS150の二値化処理において、該R成分の値の差に起因して、オブジェクトのエッジを示すエッジ画素が特定されやすい。
平滑化済みのR成分画像データでは、平滑化処理によって、例えば、エッジ領域において、変動部E1aにおける値の変化が、平滑化処理前のR成分画像データと比較して小さくなっている(緩やかになっている)(図7(B))。
しかしながら、文字などのオブジェクトのエッジに対応する変動部E1aにおける値の変化は、網点領域における値の変化よりは十分に大きいので、エッジ強調処理によって、再度、急激な変化に戻される。この結果、エッジ強調済みのR成分画像データでは、エッジ領域において、変動部E1bのR成分の値の変化は、平滑化処理済みのR成分画像データと比較して大きくなっている(図7(C))。このため、エッジ強調済みのR成分画像データでは、エッジ領域において、変動部E1bにおける値の変化が、平滑化処理前のR成分画像データと比較して、同程度、もしくは、急激になっている(図7(C))。
以上の説明から解るように、本実施例では、各成分画像データに対して、平滑化処理(S100)と、エッジ強調処理(S110)とを、この順序で実行するので、網点のエッジを示すエッジ画素が特定されることを抑制することができ、かつ、文字などのオブジェクトのエッジを示すエッジ画素が特定されることを促進することができる。この結果、スキャン画像SI内の複数個のエッジ画素を適切に特定することができる。
R、G、Bの3個の色成分に対応する3個の強調処理済みの成分画像データが生成されると、図5の120では、該3個の強調処理済みの成分画像データを用いて、輝度画像データを生成する。輝度画像データは、該3個の強調処理済みの成分画像データによって示される強調済画像内の複数個の画素の輝度を示すデータである。具体的には、CPU210は、該3個の強調処理済みの成分画像データから取得される各画素のR値、G値、B値を用いて、各画素の輝度Yを算出する。輝度Yは、例えば、上記3成分の加重平均であり、具体的には、Y=0.299×R+0.587×G+0.114×Bの式を用いて算出できる。輝度画像データは、1種類の成分値(輝度を示す値)で構成される単成分画像データである。輝度成分データは、スキャンデータの対応する画素の値(RGB値)に基づく輝度Yを画素ごとに含んでいる。輝度成分データは、第1の画像データの例である。
S130では、CPU210は、生成された輝度画像データに対して、当該輝度画像データによって示される輝度画像内のエッジを抽出するエッジ抽出処理を実行して、エッジ抽出データを生成する。具体的には、CPU210は、輝度画像データの各画素の値に、公知のエッジ抽出フィルタ、例えば、ソーベルフィルタ(Sobel filter)を適用して、各画素のエッジ強度を算出する。CPU210は、これらのエッジ強度を、複数個の画素の値とするエッジ抽出データを生成する。
S140では、CPU210は、エッジ抽出データに対して、レベル補正処理を実行して、補正処理済みのエッジ抽出データを生成する。レベル補正処理は、エッジ抽出データの画素の値が取り得る階調値の範囲(本実施例では、0~255の範囲)内の特定範囲を拡大する補正処理である。
図8は、レベル補正処理のためのトーンカーブの一例を示す図である。具体的には、CPU210は、エッジ抽出データの各画素に対して、図8のトーンカーブを適用する。この結果、閾値Vb(例えば、245)以上の値は、全て最大値(255)に変換されるとともに、閾値Va(例えば、10)以下の値は、全て最小値(0)に変換される。そして、閾値Vaより大きく、かつ、閾値Vb未満の範囲は、0から255の範囲に拡大される。このように、後述するS150の二値化処理の前に、二値化閾値を含む範囲(図8の閾値Vaより大きく、かつ、閾値Vb未満の範囲)を拡大するので、二値化の精度を向上できる。
S150では、CPU210は、補正処理済みのエッジ抽出データに対して、二値化処理を実行して、二値画像データを生成する。例えば、CPU210は、エッジ画像データにおいて、画素の値(すなわち、エッジ強度)が閾値(例えば、128)以上である画素を、エッジ画素に分類し、画素の値が閾値未満である画素を、非エッジ画素に分類する。二値画像データでは、上述したように、エッジ画素の値は、「1」とされ、非エッジ画素の値は、「0」とされる。
以上説明した第1の二値画像データ生成処理によれば、図7を参照して説明したように、複数個の成分画像データのそれぞれに対して平滑化処理を実行することで、スキャン画像SI内に現れる網点の特徴を低減できる。さらに、図7を参照して説明したように、複数個の平滑化済みの成分画像データのそれぞれに対して、エッジ強調処理を実行することで、平滑化処理によって平滑化されたスキャン画像SI内のエッジを適切に強調できる。この結果、網点に起因するエッジ画素が特定されることを抑制しつつ、スキャン画像SI内のエッジ画素の適切に特定できる。
さらに、単成分画像データとして、輝度画像データが用いられるので、スキャン画像SI内の複数個のエッジ画素をより適切に特定できる。例えば、網点は、印刷に用いられるC、M、Yの原色を有することが多いが、このような複数種の原色間の差は、R、G、Bの各成分画像データにおいて比較的大きくなるが、輝度画像データでは、比較的小さくなる。このために、輝度画像データを用いることで、網点に起因するエッジ画素が特定されることを適切に抑制できる。また、文字の読みやすさのために、文字の色と背景の色とは、輝度に比較的大きな差があることが多い。このために、輝度画像データを用いることで、文字をはじめとするオブジェクトのエッジを示すエッジ画素を適切に特定できる。
さらに、図6のエッジ強調処理では、注目画素に対応するマスク値(平滑値とも呼ぶ)の算出(S210)と、注目画素の値TVと注目画素に対応するマスク値との差分ΔVの算出(S220)と、注目画素の値TVと対応する差分ΔVとの和(TV+ΔV)の算出(S240)と、を含むいわゆるアンシャープマスク処理が実行される。この結果、スキャン画像SIのエッジを適切に強調できるので、特定すべきエッジ画素の特定漏れを抑制できる。この結果、スキャン画像SI内のエッジ画素をより適切に特定できる。
さらに、図6のエッジ強調処理では、スキャン画像SI内の複数個の画素のうち、対応する差分ΔVが基準以上である画素については、アンシャープマスク処理の対象とされ、該差分ΔVが基準未満である画素については、アンシャープマスク処理の対象とされない(S230、240)。この結果、図7を参照して説明したように、スキャン画像SIの網点に起因する画素間の値の差が強調されることをさらに抑制できるので、網点に起因するエッジ画素の特定をさらに抑制できる。そして、文字などのオブジェクトのエッジについては適切に強調できる。したがって、スキャン画像SI内のエッジ画素をさらに適切に特定できる。
A-5:第2の二値画像データ生成処理
図2のS24の第2の二値画像データ生成処理について説明する。図9は、第2の二値画像データ生成処理のフローチャートである。S300では、CPU210は、スキャンデータを用いて、最小成分データを生成する。具体的には、CPU210は、スキャンデータに含まれる複数個の画素の値(RGB値)のそれぞれから、最小成分値Vminを取得する。最小成分値Vminは、RGB値に含まれる複数個の成分値(R値、G値、B値)のうちの最小値である。CPU210は、これらの最小成分値Vminを複数個の画素の値とする画像データを、最小成分データとして生成する。最小成分データは、スキャン画像SIと同じサイズの画像を示す画像データである。最小成分データに含まれる複数個の画素の値のそれぞれは、スキャンデータの対応する画素の値(RGB値)の最小成分値Vminである。
図10は、スキャンデータの最小成分値と最大成分値の説明図である。図10(A)~図10(E)には、RGB値の一例として、シアン(C)、マゼンタ(M)、イエロ(Y)、黒(K)、白(W)のRGB値が、棒グラフで図示されている。図10に示すように、C、M、Y、K、WのRGB値(R、G、B)は、それぞれ、(0、255、255)、(255、0、255)(255、255、0)、(0、0、0)、(255、255、255)である。
これらのRGB値の輝度Yは、上述したように、例えば、Y=0.299×R+0.587×G+0.114×Bの式を用いて算出できる。C、M、Y、K、Wの輝度(0~255の値で表す)は、約186、113、226、0、255であり、それぞれに異なる値となる(図10)。これに対して、C、M、Y、K、Wの最小成分値Vminは、図10に示すように、0、0、0、0、255となり、白(W)を除いて同じ値となる。
図11は、画像処理に用いられる画像の一例を示す第2の図である。図11(A)は、スキャン画像SIのうち、上述した網点領域の拡大図である。例えば、図11(A)の例では、スキャン画像SI内の網点領域は、複数個のMドットMDと、複数個のYドットYDと、を含んでいる。ここでは、説明のために、MドットMDを示す画像は、マゼンタの原色を有する均一な画像であり、YドットYDを示す画像は、イエロの原色を有する均一な画像であるとする。
図11(B)には、最小成分データによって示される最小成分画像MNIの一例が示されている。この最小成分画像MNIは、図11(A)のスキャン画像SIに対応している。最小成分画像MNIでは、スキャン画像SIのYドットMDに対応する領域MDb内の画素の値と、YドットYDに対応する領域YDb内の画素の値と、は互いに同じとなる。図11(C)には、比較例として、各画素の輝度を示す輝度画像データによって示される輝度画像YIが示されている。この輝度画像YIは、図11(A)のスキャン画像SIに対応している。輝度画像YIでは、最小成分画像MNIとは異なり、スキャン画像SIのMドットMDに対応する領域MDd内の画素の値と、YドットYDに対応する領域YDd内の画素の値と、は互いに異なる。
以上の説明から解るように、最小成分画像MNIでは、スキャン画像SIにおいて、原稿内のC、M、Y、Kドットが形成された部分に対応する複数個の画素の値の間の差が、輝度画像YIよりも小さくなる。そして、最小成分画像MNIでは、スキャン画像SIにおいて、原稿内の地色(用紙の白色)を示す領域に対応する地色領域の画素の値が、ドットが形成された部分に対応する画素の値よりも大きくなる。
S310では、CPU210は、生成された最小成分データに対して、該最小成分データによって示される最小成分画像MNIを平滑化する平滑化処理を実行して、平滑化済みの最小成分データを生成する。具体的には、CPU210は、最小成分データの各画素の値に、所定の平滑化フィルタ、本実施例では、縦5画素×横5画素のガウスフィルタを適用することによって、平滑化済みの各画素の値を算出する。平滑化済みの最小成分データは、スキャンデータの対応する画素の値(RGB値)に基づいて上述した処理で生成された平滑化済みの値を画素ごとに含んでいる。平滑化済みの最小成分データは、第2の画像データの例である。
S320では、CPU210は、平滑化済みの最小成分データに対して、当該平滑化済みの最小成分データによって示される平滑化済みの最小成分画像MNI内のエッジを抽出するエッジ抽出処理を実行して、エッジ抽出データを生成する。具体的には、CPU210は、平滑化済みの最小成分データの各画素の値に、図5のS130の処理と同一のソーベルフィルタを適用して、エッジ強度を算出する。CPU210は、これらのエッジ強度を、複数個の画素の値とするエッジ抽出データを生成する。
S330では、CPU210は、エッジ抽出データに対して、レベル補正処理を実行して、補正処理済みのエッジ抽出データを生成する。レベル補正処理は、図5のS140の処理と同一である。S340では、CPU210は、補正処理済みのエッジ抽出データに対して、図5のS150の処理と同様の二値化処理を実行して、二値画像データを生成する。二値画像データでは、上述したように、エッジ画素の値は、「1」とされ、非エッジ画素の値は、「0」とされる。
以上説明した第2の二値画像データ生成処理によれば、最小成分データに対してエッジ抽出処理が実行され、エッジ抽出データが生成される(S320)。そして、該エッジ抽出データを二値化する処理(S340)を含むエッジ画素特定処理が実行することによって、スキャン画像SIの複数個のエッジ画素が特定される(S330、S340、図2のS26)。最小成分データでは、図11を参照して説明したように、網点領域において、画素間の値の差を抑制できるので、その後に、エッジ画素を特定する際に、網点に起因するエッジ画素が特定されることを抑制できる。したがって、スキャン画像SI内のエッジ画素を適切に特定できる。
より具体的に説明すると、網点領域を構成する要素は、C、M、Y、Kの各ドットと、用紙の地色(白)と、の5種類である。最小成分データでは、これらの要素のうち、4種類の要素を示す画素の間の値の差を抑制できる。この結果、最小成分データを用いる場合には、網点のエッジを示すエッジ画素が特定されることを抑制することができる。
一方で、文字の色と背景の色とは、一方が、濃い色を有し、他方が薄い色を有する場合が多い。このために、文字と背景のうち、一方は、用紙の地色(白)を示す部分を比較的多く含み、他方は、C、M、Y、Kのドットを示す部分を比較的多く含む場合が多い。図10に示すように、最小成分データでは、C、M、Y、Kのドットを示す部分の画素の値と、用紙の地色(白)を示す部分の画素の値と、の間で、大きな差がある。このために、最小成分データを用いて、エッジ画素を特定すると、文字のエッジを構成するエッジ画素は、適切に特定できる可能性が高い。特に、イエロ(Y)は、C、M、Kと比較して濃度が低い(輝度が高い)。このために、用紙の地色(白)の背景に、イエロの文字がある場合には、輝度画像データを二値化しても、該イエロの文字のエッジを構成するエッジ画素を、適切に特定できない場合がある。本実施例では、このような場合でも該イエロの文字のエッジを構成するエッジ画素を、適切に特定できる。このために、輝度画像データを用いたエッジ画素の特定に加えて、最小成分データを用いたエッジ画素の特定を実行することで、輝度画像データだけでは、特定できない文字などのエッジ画素を特定し得る。この結果、スキャン画像SI内のエッジ画素の特定精度を向上できる。
さらに、最小成分データに対して、エッジ抽出処理の前に平滑化処理が実行される(S310)。この結果、平滑化処理によって、最小成分画像MNI内の網点領域おいて、画素間の値の差を、さらに抑制できる。例えば、スキャン画像SI内の網点領域において、C、M、Y、Kのドットの重なりや、読取実行部290での読取時のぼけなどによって、ドットを示す部分は、必ずしもC、M、Y、Kの原色を有している訳ではない。このために、最小成分画像MNI内では、C、M、Y、Kの各ドットを示す複数個の画素の間の値が、小さくなってはいるものの、ゼロではない。平滑化処理によって、該画素の間の値の差をさらに小さくすることができる。この結果、網点に起因するエッジ画素が特定されることを、さらに抑制できる。また、第2の二値画像データ生成処理においても、第1の二値画像データ生成処理と同様に、レベル補正処理(S330)が実行されるので、スキャン画像SI内のエッジ画素の特定精度を向上できる。
以上説明したように、上記実施例では、2種類の単成分画像データ、すなわち、輝度画像データと、最小成分データと、を用いて、最終的にエッジ画素が特定される(図2のS22~S26)。このように互いに異なる処理を用いて生成される2種類の単成分画像データを用いて、スキャン画像SI内の複数個のエッジ画素が特定されるので、スキャン画像SI内の複数個のエッジ画素の特定漏れを抑制できる。例えば、白の背景にイエロの文字がある場合には、白とイエロの輝度の差は比較的小さいので、輝度画像データを用いて、該文字のエッジを構成するエッジ画素を特定することは困難である。これに対して、図10(C)、(E)から解るように、最小成分データでは、白とイエロとの差が大きく現れるので、白の背景にイエロの文字がある場合には、最小成分データを用いて、該文字のエッジを構成するエッジ画素を特定することは容易である。また、例えば、マゼンタの背景にイエロの文字がある場合には、最小成分データには、マゼンタとイエロとの差が現れないので、最小成分データを用いて、該文字のエッジを構成するエッジ画素を特定することは困難である。これに対して、マゼンタの背景にイエロの文字がある場合には、マゼンタとイエロの輝度の差は、比較的大きいので、輝度画像データを用いて、該文字のエッジを構成するエッジ画素を特定することは容易である。
また、輝度画像データに加えて用いられる単成分画像データは、最小成分データであるので、上述の通り、スキャン画像SI内の網点に起因するエッジ画素が特定されることは、抑制できる。
A-6:ブロック判定処理
図2のS28のブロック判定処理について説明する。図12、図13は、第1実施例のブロック判定処理のフローチャートである。図14は、スキャン画像SI上に配置される複数個のブロックBLの説明図である。ブロック判定処理は、上述したように、スキャンデータを用いて、スキャン画像SI内に配置される複数個のブロックBLのそれぞれが、文字ブロックであるか否かを判断することによって、ブロック判定データを生成する処理である。
S400では、CPU210は、ブロック判定データを生成するためのキャンバスデータをメモリ(具体的には、揮発性記憶装置220のバッファ領域)に準備する。キャンバスデータによって示されるキャンバス(初期画像)は、スキャン画像SIと同じサイズの画像、すなわち、同じ画素数の画像である。キャンバスデータの各画素の値は、所定の初期値(例えば、0)である。
S402では、CPU210は、スキャン画像SI上に複数個のブロックBLを設定する。例えば、図14に示すように、スキャン画像SIは、マトリクス状に配置された縦P行×横Q列のブロックBLに分割される(P、Qは2以上の整数)。1個のブロックBLは、縦m×横n個の(m×n)個の画素を含む矩形の領域である(m、nは2以上の整数)。例えば、m、nは、それぞれ、20である。
S404では、CPU210は、スキャン画像SIにおいて設定された複数個のブロックBLから、1個の注目ブロックを選択する。
S405では、CPU210は、公知の変換式を用いて、注目ブロックの各画素のRGB値をHSV表色系の色値(HSV値とも呼ぶ)に変換する。各HSV値は、3個の成分値、すなわち、色相を示すH値と、彩度を示すS値と、明度を示すV値と、を含む。H値は、0度~360度の範囲の値を取る。S値は、0%~100%の範囲の値を取り、0%は無彩色を示す。V値は、0%~100%の値を取り、0%は黒、100%は白を示す。
S407では、CPU210は、注目ブロック内の各画素を8個の基本色のいずれかに分類する。8個の基本色は、K、C、M、Y、R、G、B、Wの8色である。例えば、S値が所定の基準値(例えば、20%)未満であり、かつ、V値が50%未満の画素は、Kの画素に分類される。S値が所定の基準値未満であり、かつ、V値が50%以上の画素は、Wの画素に分類される。S値が所定の基準値以上である画素は、H値(色相)に応じて、有彩色であるC、M、Y、R、G、Bのいずれかに分類される。C、M、Y、R、G、Bに対応するH値の範囲は、予め定められている。
S410では、CPU210は、注目ブロックの最頻色を、注目ブロックの代表色(ブロック色とも呼ぶ)に決定する。注目ブロックの最頻色は、8個の基本色のうち、S407にて最も多数の画素が分類された色である。本実施例では、スキャン画像SIの背景Bg1の色として、スキャンされた用紙の色である白(W)が想定されている。このために、背景Bg1を主に含むブロックBLのブロック色は、Wに決定され、背景Bg1とは異なるオブジェクトを主に含むブロックBLの代表色は、そのオブジェクトの色に応じて、C、M、Y、K、R、G、Bのいずれかに決定される。
S415では、CPU210は、スキャン画像SI内の全てのブロックBLを注目ブロックとして処理したか否かを判断する。未処理のブロックBLがある場合には(S415:NO)、CPU210は、S404に処理を戻す。全てのブロックBLが処理された場合には(S415:YES)、CPU210は、S420に処理を進める。
S420では、CPU210は、横方向(図14の第1方向D1)のカラーランレングス情報RLcを生成する。カラーランレングス情報RLcは、第1方向D1に沿って、背景色(本実施例ではW)を代表色とするブロックBL(背景ブロックとも呼ぶ)が連続する個数(連続数とも呼ぶ)と、背景色とは異なる色(本実際例では、C、M、Y、K、R、G、B)を代表色とするブロックBL(非背景ブロックとも呼ぶ)の連続数と、が記録された情報である。カラーランレングス情報RLcは、図14のスキャン画像SIの左端から右端まで伸びる1行分のブロック群(例えば、図14のブロック群BG1)ごとに生成される。本実施例では、スキャン画像SIに縦P行×横Q列のブロックBLが配置されるので、1行分のブロック群は、Q個のブロックBLを含む。そして、P行のブロック群に対応するP個のカラーランレングス情報RLcが生成される。
図15は、ランレングス情報の説明図である。図15(A)には、1行分のブロック群BGcの一例が示されている。各ブロックBL内のアルファベットは、そのブロックBLの代表色を示す。図15(A)にて、ハッチングされたブロックは非背景ブロックであり、ハッチングされていないブロックは、背景ブロックである。図15(B)には、カラーランレングス情報RLcの一例が示されている。カラーランレングス情報RLcは、5個の連続数情報Lc1~Lc5を含んでいる。これらの連続数情報Lc1~Lc5は、それぞれ、図15(A)のブロック群BGcのうち、4個の連続する背景ブロックA1、5個の連続する非背景ブロックA2、2個の連続する背景ブロックA3、3個の連続する非背景ブロック群A4、3個の連続する背景ブロックA5に対応している。
S430では、CPU210は、注目非背景ブロックを選択する。具体的には、カラーランレングス情報RLcを参照して、スキャン画像SIに配置された複数個のブロックBLの中から、第1方向D1に連続する1組の非背景ブロックを、注目非背景ブロックとして選択される。例えば、図14の例では、スキャン画像SI内の文字TX1、TX2の一部に対応する非背景ブロックAa、Abと、横線LNに対応する非背景ブロックAcと、文字TX1、TX2より大きな文字BTの一部に対応する非背景ブロックAdと、写真PCの一部に対応する非背景ブロックAeと、が例示されている。これらの非背景ブロックが、注目非背景ブロックとして一組ずつ選択される。
S435は、CPU210は、カラーランレングス情報RLcを参照して、注目非背景ブロックの連続数は、閾値TH1未満であるか否かを判断する。一般的に、小さな文字は、背景上に配置される細線で構成されることが多いために、小さな文字が配置された文字領域では、背景色を有する領域と非背景色(文字色)を有する領域とが短い間隔で繰り返される場合が多い。これに対して、写真などが配置された網点領域は、比較的大きな矩形の領域であり、該領域の全体、もしくは、ほとんどの部分が非背景色(写真内の様々な色)を有する。このために、文字に対応する非背景ブロックの連続数は、網点領域に対応する非背景ブロックの連続数と比較して小さくなる。閾値TH1は、例えば、小さな文字が配置された文字領域と、写真などが配置された網点領域と、を判別できるように、サンプル画像を用いて予め実験的に決定される。
注目非背景ブロックの連続数が閾値TH1未満である場合には(S435:YES)、S445にて、CPU210は、注目非背景ブロックを、文字ブロックに決定する。注目非背景ブロックの連続数が閾値TH1以上である場合には(S435:NO)、S450にて、CPU210は、注目非背景ブロックを、網点ブロックの候補である網点候補ブロックに決定する。
S455では、CPU210は、スキャン画像SI内の全ての非背景ブロックを注目ブロックとして処理したか否かを判断する。未処理の非背景ブロックがある場合には(S455:NO)、CPU210は、S430に処理を戻す。全ての非背景ブロックが処理された場合には(S455:YES)、CPU210は、S460に処理を進める。
S460の時点で、スキャン画像SI内の複数個のブロックBLは、背景ブロックと、文字ブロックと、網点候補ブロックと、のいずれかに分類されている。図16は、スキャン画像SI上に特定される各種のブロックの説明図である。図16の例では、スキャン画像SI内の文字TX1、TX2に対応する複数個のブロックBA1、BA2は、文字ブロックに分類される。横線LNに対応する複数個のブロックBA3と、大きな文字BTに対応する複数個のブロックBA4と、写真PCに対応する複数個のブロックBA5は、網点候補ブロックに分類される。これらのブロックBA1~BA5とは異なるブロックBLは、背景ブロックに分類される。
ここで、横線LNは、文字と同様にエッジが強調された方が見栄えが向上する。また、大きな文字BTは、文字であるのでエッジが強調された方が見栄えが向上する。このために、本来は、横線LNや大きな文字BTに対応するブロックBLは、文字ブロックとして特定されることが好ましく、網点候補ブロックとして特定されることは好ましくない。この段階では、横線LNや大きな文字BTに対応するブロックBLは、網点候補ブロックとして特定されているので、これらのブロックBLを文字ブロックとして特定するように、特定結果を修正することが好ましい。そこで、本実施例では、以下に説明する図13のS460~S515が実行される。
S460では、CPU210は、網点候補ブロックに対してラベリングを実行して、1以上の連続する網点候補ブロックから成る網点候補領域を特定する。ラベリングは、第1方向D1や第2方向D2に連続する1以上の網点候補ブロックで構成される連続な1つの領域に、1つの識別子を割り当て、網点候補ブロックで構成される互いに離れた領域に、互いに異なる識別子を割り当てる処理である。図16の例では、上述した複数個のブロックBA3と、複数個のブロックBA4と、複数個のブロックBA5と、に対応する3個の網点候補領域が特定される。
S465では、CPU210は、S460にて特定された1以上の網点候補領域から1個の注目網点候補領域を選択する。
S470では、CPU210は、注目網点候補領域を構成する各ブロックBLを、エッジブロックと、非エッジブロックと、のいずれかに分類する。具体的には、CPU210は、図2のS22の第1の二値画像データ生成処理(図5)にて生成された第1の二値画像データを参照して、各ブロックBLに含まれる第1のエッジ画素の個数をカウントする。CPU210は、第1のエッジ画素の個数が所定の閾値THe以上であるブロックBLをエッジブロックに分類し、第1のエッジ画素の個数が所定の閾値THe未満であるブロックBLを非エッジブロックに分類する。変形例では、図2のS24の第2の二値画像データ生成処理(図9)にて生成された第2の二値画像データを参照して、第2のエッジ画素の個数に基づいて、エッジブロックと非エッジブロックとに分類しても良い。第1のエッジ画素、第2のエッジ画素は、いずれも文字候補画素の一部である。あるいは、図2のS26の論理和合成処理にて生成されたエッジ特定データを参照して、エッジ画素(文字候補画素)の個数に基づいて、エッジブロックと非エッジブロックとに分類しても良い。
図16において、網点候補領域となる複数個のブロックBA3~BA5において、クロスハッチングが付されたブロックBLは、エッジブロックであり、クロスハッチングが付されていないブロックBLは、非エッジブロックである。例えば、横線LNに対応する網点候補領域(複数個のブロックBA3)では、全てのブロックBLがエッジブロックに分類されている。大きな文字BTに対応する網点候補領域(複数個のブロックBA4)では、大きな文字BTの外縁に対応するブロックBLだけがエッジブロックに分類されている。写真PCに対応する網点候補領域(複数個のブロックBA5)では、外縁に対応するブロックBLと、内部の一部のブロックBLと、がエッジブロックに分類されている。写真PCの内部は、一般的に、滑らかな部分とエッジが存在する部分とが分散して混在している。このために、写真PCに対応する網点候補領域では、写真PCの内部にエッジブロックと非エッジブロックとが分散して混在している。
S475では、CPU210は、注目網点候補領域について横方向(図16の第1方向D1)のエッジランレングス情報RLeを生成する。横方向のエッジランレングス情報RLeは、第1方向D1に沿って、エッジブロックが連続する個数(連続数とも呼ぶ)と、非エッジブロックの連続数と、が記録された情報である。横方向のエッジランレングス情報RLeは、注目網点候補領域(例えば、図16の複数個のブロックBA5から成る領域)について、左端から右端まで伸びる1行分のブロック群(例えば、図16のブロック群BG2)ごとに生成される。例えば、注目網点候補領域がK行分(Kは1以上の整数)のブロック群を含む場合には、K行のブロック群に対応するK個の横方向のエッジランレングス情報RLeが生成される。
図15(C)には、網点候補領域の1行分のブロック群BGeの一例が示されている。ブロック群BGeにおいて、「E」が付されたブロックBLは、エッジブロックであり、空欄のブロックBLは、非エッジブロックである。図15(D)には、エッジランレングス情報RLeの一例が示されている。エッジランレングス情報RLeは、6個の連続数情報Le1~Lc6を含んでいる。これらの連続数情報Le1~Lc6は、それぞれ、図15(C)のブロック群BGeのうち、1個のエッジブロックB1、3個の連続する非エッジブロックB2、1個のエッジブロックB3、2個の連続する非エッジブロックB4、2個の連続するエッジブロックB5、2個の連続する非エッジブロックB6に対応している。
S480では、CPU210は、注目網点候補領域について縦方向(図16の第2方向D2)のエッジランレングス情報RLeを生成する。縦方向のエッジランレングス情報RLeは、第2方向D2に沿って、エッジブロックの連続数と、非エッジブロックの連続数と、が記録された情報である。縦方向のエッジランレングス情報RLeは、注目網点候補領域(例えば、図16の複数個のブロックBA5から成る領域)について、上端から下端まで伸びる1列分のブロック群(例えば、図16のブロック群BG3)ごとに生成される。例えば、注目網点候補領域がL列分(Lは1以上の整数)のブロック群を含む場合には、L列のブロック群に対応するL個の縦方向のエッジランレングス情報RLeが生成される。
S485では、CPU210は、注目網点候補領域における非エッジブロックの最大連続数Vmxを特定する。具体的には、横方向および縦方向のエッジランレングス情報RLeを参照して、非エッジブロックの横方向および縦方向の連続数のうちの最大値が、最大連続数Vmxとして特定される。
S490では、CPU210は、注目網点候補領域におけるエッジブロックが占める割合Erを算出する。割合Erは、注目網点候補領域におけるエッジブロックの個数を、注目網点候補領域の総ブロック数で除した値である。
S495では、CPU210は、エッジブロックが占める割合Erが、所定の閾値TH2以上であるか否かを判断する。横線LN(図16)などの線(例えば、横線や縦線や斜めの線)に対応する網点候補領域では、ほとんどのブロックがエッジブロックに分類されると考えられる。このために、線に対応する網点候補領域では、エッジブロックが占める割合Erが、写真などに対応する網点候補領域と比較して高くなる。閾値TH2は、例えば、線に対応する網点候補領域と写真に対応する網点候補領域と、を判別できるように、サンプル画像を用いて予め実験的に決定される。閾値TH2は、例えば、80%である。
エッジブロックが占める割合Erが所定の閾値TH2以上である場合には(S495:YES)、S505にて、CPU210は、注目網点候補領域を構成する全てのブロックBLを、文字ブロックに決定する。これによって、線に対応するブロックBL(例えば、図16の複数個のブロックBA3)は、最終的に、文字ブロックとして特定される。エッジブロックが占める割合Erが所定の閾値TH2未満である場合には(S495:NO)、CPU210は、S500に処理を進める。
S500では、CPU210は、非エッジブロックの最大連続数Vmxは、所定の閾値TH3以上であるか否かを判断する。大きな文字BTは、一般的に、ベタ塗りのオブジェクトである。このために、大きな文字BTの外縁にはエッジが存在するが、内部にはエッジはほとんど存在しない。これに対して写真PCでは、外縁だけでなく、内部にも分散してエッジが存在する。このために、大きな文字BTに対応する網点候補領域では、非エッジブロックの最大連続数Vmxが、写真などに対応する網点候補領域と比較して大きくなる。閾値TH3は、例えば、大きな文字BTに対応する網点候補領域と写真に対応する網点候補領域と、を判別できるように、サンプル画像を用いて予め実験的に決定される。
非エッジブロックの最大連続数Vmxが所定の閾値TH3以上である場合には(S500:YES)、S505にて、CPU210は、注目網点候補領域を構成する全てのブロックBLを、文字ブロックに決定する。これによって、大きな文字BTに対応するブロックBL(例えば、図16の複数個のブロックBA4)は、最終的に、文字ブロックとして特定される。非エッジブロックの最大連続数Vmxが所定の閾値TH3未満である場合には(S500:NO)、S510にて、CPU210は、注目網点候補領域を構成する全てのブロックBLを、網点ブロックに決定する。これによって、写真PCに対応するブロックBL(例えば、図16の複数個のブロックBA5)は、最終的に、網点ブロックとして特定される。
S515では、CPU210は、スキャン画像SI内の全ての網点候補領域を注目網点候補領域として処理したか否かを判断する。未処理の網点候補領域がある場合には(S515:NO)、CPU210は、S465に処理を戻す。全ての網点候補領域が処理された場合には(S515:YES)、CPU210は、S520に処理を進める。
S520の時点で、スキャン画像SI内の全てのブロックBLは、文字ブロックと、網点ブロックと、背景ブロックと、のいずれかに分類されている。S520では、CPU210は、文字ブロックと、非文字ブロック(網点ブロックまたは背景ブロック)と、を示す二値画像データを、ブロック判定データとして生成する。
以上説明した本実施例によれば、画像取得部としてのCPU210は、印刷物を読み取ることによって生成されるスキャンデータを対象画像データとして取得する(図2のS10)。第1の特定部としてのCPU210は、スキャンデータを用いてスキャン画像SI内の複数個の画素の中から複数個の文字候補画素を特定する(図2のS22~S26)。連続数特定部としてのCPU210は、スキャン画像SI上に配置される複数個のブロックBLのうちの非背景ブロックの連続数を特定する(図12のS420)。第2の特定部としてのCPU210は、該連続数に基づいて複数個のブロックBLから文字ブロックを特定する(図12、図13のS430~S515)。第3の特定部としてのCPU210は、文字候補画素の特定結果と、文字ブロックの特定結果と、に基づいて、スキャン画像SI内の複数個の文字画素を特定する(図2のS29)。
背景とは異なるオブジェクトは、文字や写真などの種類に応じて特徴の連続性が異なる。例えば、上述のように、文字を含む領域では、背景と細線とが交互に現れるため非背景ブロックの連続数は写真PCの領域よりも小さくなりやすい。本実施例によれば、非背景ブロックの連続数に基づいて文字ブロックが特定されるので、上述した特徴の連続性を考慮して適切に文字ブロックを特定できる。したがって、文字候補画素の特定結果と文字ブロックの特定結果とに基づいて、スキャン画像SI内の文字画素を精度良く特定できる。例えば、写真PC内のオブジェクトのエッジや網点のエッジを、文字画素として誤って特定する不都合を低減できる。
さらに、本実施例によれば、第3の特定部としてのCPU210は、特定された複数個の文字候補画素のうち、特定された文字ブロック内に位置する画素を、文字画素として特定する(図2のS29)。この結果、複数個の文字候補画素の中から、精度良く文字画素を特定できる。
さらに、本実施例によれば、各ブロックBLの特徴値としてとして、複数個のブロックの色に関する値、具体的には、各ブロックBLの代表色(8個の値(C、M、Y、K、R、G、B、W)のいずれか)が用いられる。そして、非背景ブロックは、スキャン画像SIの背景色(W)とは異なる色を有するブロックである。背景色とは異なる色を有するオブジェクトは、文字や写真などの種類に応じて色の連続性が異なる。例えば、文字を含む領域では、背景と細線とが交互に現れることに対応して、背景色とは異なる色(文字色)の領域と背景色の領域とが交互に現れる。これに対して写真PCの領域では、背景色とは異なる色の領域が連続しやすい。このために、文字を含む領域では、背景色とは異なる色を有する非背景ブロックの連続数が、写真PCの領域よりも小さくなりやすい。本実施例によれば、このような文字と写真との間の色に関する特徴の違いを利用して、精度良く文字ブロックを特定できる。
さらに、本実施例によれば、第2の特定部としてのCPU210は、連続する一組の非背景ブロックの連続数が所定の閾値TH1(第1の基準とも呼ぶ)未満である場合に(図12のS435にてYES)、該一組の非背景ブロックを文字ブロックとして特定する(図12のS445)。上述したように、文字は背景上に配置された細線で構成されるので、文字に対応する非背景ブロック(文字を構成する線に対応する)の連続数は比較的小さくなる可能性が高い。本実施例では、このような特性を利用して精度良く文字ブロックを特定できる。
本実施例によれば、第2の特定部としてのCPU210は、連続する一組の非背景ブロックの連続数が閾値TH1以上である場合に(図12のS435にてNO)、該一組の非背景ブロック(網点候補領域を構成するブロックBL)のそれぞれについて、非背景ブロックに含まれる文字候補画素(例えば、第1のエッジ画素)に関する指標値(例えば、最大連続数Vmxや割合Er)を算出し、該指標値が特定条件を満たす場合に、該一組の非背景ブロックを前記文字ブロックとして特定する(図13のS460~S515)。
一組の非背景ブロックの連続数が閾値TH1以上であっても、その非背景ブロックに含まれる文字候補画素に関する分布等によっては、これらのブロックBLに対応するオブジェクトは、写真PCではなく、大きな文字BTもしくは文字と同様の画像処理を施すべき線(例えば、横線LN)である可能性がある。本実施例によれば、このような場合であっても非背景ブロックに含まれる文字候補画素に関する指標値を用いて、精度良く文字ブロックを特定できる。
より具体的には、第2の特定部としてのCPU210は、連続数が閾値TH1以上である一組の非背景ブロック、すなわち、網点候補領域を構成する複数個のブロックBLのそれぞれについて、閾値THe(基準個数とも呼ぶ)以上の個数の第1のエッジ画素(文字候補画素の一部である)を含むエッジブロックであるか否かを判断し(図13のS470)、一組の非背景ブロックに占めるエッジブロックの割合Erを指標値として算出する(図13のS490)。CPU210は、エッジブロックの割合Erが所定の閾値TH2(基準割合とも呼ぶ)以上である場合に(図13のS495にてYES)、一組の非背景ブロックを文字ブロックとして特定する(図13のS505)。上述のように、線に対応する非背景ブロックでは、該線のエッジに対応するエッジブロックの割合が比較的高くなる。本実施例では、このような特性を利用して、線に対応する非背景ブロックを文字ブロックとして精度良く特定することができる。
さらに、第2の特定部としてのCPU210は、連続数が閾値TH1以上である一組の非背景ブロック、すなわち、網点候補領域を構成する複数個のブロックBLのそれぞれについて、閾値THe未満の個数の第1のエッジ画素(文字候補画素の一部である)を含む非エッジブロックであるか否かを判断し(図13のS470)、一組の非背景ブロック(網点候補領域)において非エッジブロックが横方向または縦方向に連続する最大連続数Vmxを指標値として算出する(図13のS485)。CPU210は、最大連続数Vmxが所定の閾値TH3(第3の基準とも呼ぶ)以上である場合に(図13の500にてYES)、一組の非背景ブロックを文字ブロックとして特定する(図13のS505)。上述のように、大きな文字BTに対応する非背景ブロックでは、最大連続数Vmxが、写真PCなどに対応する非背景ブロックよりも大きくなる。本実施例では、このような特性を利用して、大きな文字BTに対応する一組の非背景ブロックを文字ブロックとして精度良く特定することができる。
B.第2実施例
第2実施例では、図2のS28のブロック判定処理の内容が第1実施例とは異なる。第2実施例のその他の処理および構成は、第1実施例と同一である。図17は、第2実施例のブロック判定処理のフローチャートである。図17のブロック判定処理では、図13のS460~S515の処理は実行されない。その代わりに、図17のブロック判定処理では、S435の後にS440Bの処理が追加されている。
図17のブロック判定処理のS400~S420の処理は、図12のS400~S420の処理と同一である。S430では、図12のS430と同様に、CPU210は、注目非背景ブロックを選択する。S435では、図12のS435と同様に、CPU210は、カラーランレングス情報RLcを参照して、注目非背景ブロックの連続数は、閾値TH1未満であるか否かを判断する。
注目非背景ブロックの連続数が閾値TH1未満である場合には(S435:YES)、S445にて、図12のS445と同様に、CPU210は、注目非背景ブロックを、文字ブロックに決定する。注目非背景ブロックの連続数が閾値TH1以上である場合には(S435:NO)、S440Bにて、CPU210は、注目非背景ブロックの色数は所定の閾値THc未満であるか否かを判断する。注目非背景ブロックは、閾値TH1以上の個数のブロックBLで構成されており、これらの各ブロックの代表色は、C、M、Y、K、R、G、Bのいずれかに決定されている(S410)。注目非背景ブロックを構成する閾値TH1以上の個数のブロックBLに含まれる代表色の数が色数として特定される。該色数が所定の閾値THc未満であるか否かが判断される。
一般的に、大きな文字BTや横線LNなどの線は、一色でベタ塗りされていることが多い。これに対して、写真PCは、様々な色を含むことが多い。このために、注目非背景ブロックが大きな文字BTや横線LNなどの線に対応する場合には、注目非背景色ブロックの色数は、注目非背景ブロックが写真PCに対応する場合よりも少なくなる。閾値THcは、例えば、大きな文字や線に対応する非背景ブロックと、写真などが配置された非背景ブロックと、を判別できるように、サンプル画像を用いて予め実験的に決定される。閾値THcは、例えば、1である。
注目非背景ブロックの色数が所定の閾値THc未満である場合には(S440B:YES)、S445にて、CPU210は、注目非背景ブロックを構成する全てのブロックBLを、文字ブロックに決定する。これによって、線に対応するブロックBLおよび大きな文字に対応するブロックBLは、文字ブロックとして特定される。注目非背景ブロックの色数が所定の閾値THc以上である場合には(S440B:NO)、S450Bにて、CPU210は、注目非背景ブロックを構成する全てのブロックBLを、網点ブロックに決定する。これによって、写真PCに対応するブロックBLは、網点ブロックとして特定される。
S455では、CPU210は、スキャン画像SI内の全ての非背景ブロックを注目ブロックとして処理したか否かを判断する。未処理の非背景ブロックがある場合には(S455:NO)、CPU210は、S430に処理を戻す。全ての非背景ブロックが処理された場合には(S455:YES)、CPU210は、S520に処理を進める。
S520の時点で、スキャン画像SI内の複数個のブロックBLは、背景ブロックと、文字ブロックと、網点ブロックと、のいずれかに分類されている。S520では、図13のS520と同様に、CPU210は、文字ブロックと、非文字ブロック(網点ブロックまたは背景ブロック)と、を示す二値画像データを、ブロック判定データとして生成する。
以上説明した第2実施例によれば、第2の特定部としてのCPU210は、連続する一組の非背景ブロック(注目非背景ブロック)の連続数が閾値TH1(第1の基準とも呼ぶ)以上であり(図16のS435にてNO)、かつ、一組の非背景ブロックの色数が閾値THc(第2の基準とも呼ぶ)未満である場合に(図16のS440BにてYES)、該一組の非背景ブロックを文字ブロックとして特定する(図16のS445)。
一組の非背景ブロックの連続数が閾値TH1以上であっても色数が少ない場合には、これらのブロックBL内のオブジェクトは、写真ではなく、大きな文字BTもしくは文字と同様の画像処理を施すべき線(例えば、横線LN)である可能性が高い。本実施例によれば、このような色数の特性を利用して、大きな文字BTや線に対応する非背景ブロックを文字ブロックとして精度良く特定することができる。
C.変形例:
(1)上記実施例では、ブロックBLの特徴値として代表色を示す値(CMYKRGBWの8値のいずれか)が採用され、代表色が白(W)であるブロックBLが背景ブロックとして特定され、代表色が白以外の色であるブロックBLが非背景ブロックとして特定される(図12のS404~S420)。これに限らず、例えば、白以外の用紙の原稿が用いられる場合には、当該用紙の色を示す特徴値(例えば、平均色値)を有するブロックBLが背景ブロックとして特定され、当該用紙の色とは異なる色を示す特徴値を有するブロックBLが非背景ブロックとして特定されても良い。
また、ブロックBLの特徴値として平均明度や平均輝度や画素値のバラツキなどが採用されても良い。例えば、平均明度や平均輝度が基準以上であるブロックBLが背景ブロックとして特定され、平均明度や平均輝度が基準未満であるブロックBLが非背景ブロックとして特定されても良い。また、画素値のバラツキが基準未満であるブロックBLが背景ブロックとして特定され、画素値のバラツキが基準以上であるブロックBLが非背景ブロックとして特定されても良い。
(2)上記実施例では、図2のS26にて特定された複数個の文字候補画素のうち、図2のS28にて特定された文字ブロック内に位置する画素を、文字画素として特定している(図2のS29)。これに限らず、文字候補画素の特定結果と、文字ブロックの特定結果と、に基づく他の手法で、最終的に文字画素が特定されても良い。例えば、文字ブロックに含まれる文字候補画素は、文字である可能性がある比較的広い範囲の色(例えば、黒、赤、青、黄など)を有していれば、文字画素として特定され、非文字ブロックに含まれる文字候補画素は、文字である可能性が高い色(例えば、黒のみ)を有する場合に限り、文字画素として特定されても良い。
(3)上記実施例では、一組の非背景ブロックの連続数が閾値TH1未満である場合には、一組の非背景ブロックを文字ブロックとして特定している。これに代えて、例えば、設定されるブロックBLのサイズが、特定すべき文字のサイズの下限と比較して、大幅に小さい場合には、一組の非背景ブロックの連続数が、所定の下限値以上、かつ、所定の上限値未満である場合に限り、該一組の非背景ブロックを文字ブロックとして特定しても良い。
(4)第1の二値画像データ生成処理(図5)では、単成分画像データとして、輝度画像データが用いられる(S120)。これに代えて、スキャンデータの対応する画素のRGB値に含まれる3個の成分値(R値、G値、B値)の平均値を、各画素の値とする平均成分値画像データが用いられても良い。
(5)上記実施例の第2の二値画像データ生成処理(図9)では、単成分画像データとして、最小成分データが用いられる(S300)。これに代えて、最大成分データや反転最小成分データが用いられても良い。
最大成分データは、スキャンデータに含まれる複数個の画素に対応する複数個の値を含み、該複数個の値のそれぞれは、スキャンデータの対応する画素の最大成分値Vmaxである。最大成分値Vmaxは、スキャンデータの対応する画素のRGB値に含まれる複数個の成分値(R値、G値、B値)のうちの最大値である。
反転最小成分データは、以下のように、取得される。先ず、スキャンデータに含まれる複数個の画素の値(RGB値)のそれぞれについて、複数個の成分値(R値、G値、B値)が反転された反転済みの色値が生成される。反転前のRGB値を(Rin、Gin、Bin)とすると、反転済みのRGB値(Rout、Gout、Bout)は、以下の式(1)~(3)で表される。
Rout=Rmax-Rin …(1)
Gout=Gmax-Gin …(2)
Bout=Bmax-Bin …(3)
ここで、Rmax、Gmax、Bmaxは、それぞれ、R値、G値、B値が取り得る値の最大値であり、本実施例では、Rmax=Gmax=Bmax=255である。これらの反転済みのRGB値を複数個の画素の値とする画像データが、反転画像データとして生成される。そして、反転画像データを用いて、反転最小成分データが生成される。具体的には、反転画像データに含まれる複数個の反転済みのRGB値のそれぞれから、反転最小成分値VRminが取得される。反転最小成分値VRminは、該反転済みのRGB値に含まれる複数個の成分値(R値、G値、B値)のうちの最小値である。反転最小成分データは、これらの反転最小成分値VRminを、複数個の画素の値とする画像データである。
反転最小成分値VRminは、最大成分値の反転値であり、VRmin=(255-Vmax)の関係が成り立つ。このために、最大成分データと反転最小成分データとは、両方とも、スキャンデータの各画素の値に含まれる複数個の成分値のうちの最大値に基づく値(最大値の反転値、あるいは、最大値そのもの)を、画素の値とする画像データである、と言うことができる。
図10に示すように、C、M、Y、K、Wの最大成分値Vmaxは、255、255、255、0、255となり、黒(K)を除いて同じ値となる。したがって、最大成分データや反転最小成分データにおいては、網点領域を構成する5種類の要素、すなわち、C、M、Y、Kの各ドットと、用紙の地色(白)と、のうちの4種類の要素(C、M、Yのドットと、用紙の地色(白))を示す画素間の値の差が抑制される。この結果、最大成分データや反転最小成分データを用いる場合には、最小成分データを用いる場合と同様に、網点に起因するエッジ画素が特定されることを抑制できる。
(6)上記実施例の図2の画像処理において、S24の第2の二値画像データ生成処理およびS26の論理和合成処理は省略されても良い。すなわち、S22の第1の二値画像データ生成処理において生成される第1の二値画像データが、最終的なエッジ特定データであっても良い。逆に、S22の第1の二値画像データ生成処理およびS26の論理和合成処理は省略されても良い。すなわち、S24の第2の二値画像データ生成処理において生成される第2の二値画像データが、最終的なエッジ特定データであっても良い。
(7)上記実施例では、文字画素に対して、文字鮮鋭化処理が実行され(図2のS40)、非文字画素に対して、網点平滑化処理が実行される(図2のS30)。これに代えて、文字画素に対しては、文字の見栄えを向上するためのアンチエイリアス処理が実行されても良い。また、非文字画素に対しては、例えば、印刷時の色材の使用量を減らすために、色を飛ばす処理(白に変換する処理)が実行されても良い。一般的には、文字画素と、非文字画素と、に互いに異なる画像処理が実行されることが好ましい。あるいは、文字画素と非文字画素のいずれか一方に対して、特定の画像処理が実行され、他方に対して、該特定の画像処理が実行されなくても良い。
(8)上記実施例では、図5のS130や図9のS320のエッジ抽出処理において、ソーベルフィルタ(Sobel filter)が用いられている。これに代えて、これらエッジ抽出処理では、ロバーツフィルタや、ラプラシアンフィルタなどの他のエッジ抽出フィルタが用いられても良い。
(9)上記実施例では、対象画像データは、スキャンデータであるが、これに限られない。対象画像データは、2次元イメージセンサを備えるデジタルカメラによって印刷物を読み取ることによって生成されても良い。
(10)上記実施例では、第1の二値画像データと、第2の二値画像データと、の論理和を取ることによって、エッジ特定データが生成される(図2のS26)。これに代えて、第1の二値画像データと、第2の二値画像データと、第3の二値画像データと、の論理和を取ることによって、エッジ特定データが生成されても良い。第3の二値画像データには、例えば、上述した最大成分データを用いて生成される二値画像データが用いられても良い。これによって、文字などのエッジの特定漏れをさらに抑制することができる。
(11)上記実施例の第1の二値画像データ生成処理(図5)や第2の二値画像データ生成処理(図9)は、適宜に変更可能である。例えば、図5のS110、S140の処理の全部または一部は、省略可能である。また、図9のS310、S330のうちの全部または一部は、省略可能である。
(12)図2の画像処理を実現する画像処理装置は、複合機200に限らず、種々の装置であってよい。例えば、スキャナやデジタルカメラが、自身で生成された画像データを用いて、プリンタに供給するための印刷データを生成するために、図2の画像処理を実行しても良い。また、例えば、スキャナやプリンタと通信可能な接続される端末装置(例えば、端末装置100)やサーバ(図示省略)が、スキャナから取得したスキャンデータを用いて、図2の画像処理を実行して、印刷データを生成し、該印刷データをプリンタに供給しても良い。また、ネットワークを介して互いに通信可能な複数個のコンピュータ(例えば、クラウドサーバ)が、画像処理に要する機能を一部ずつ分担して、全体として、画像処理を実行してもよい。この場合、複数個のコンピュータの全体が、画像処理装置の例である。
(13)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図2のS26の論理和合成処理やS29の論理積合成処理は、ASICなどの専用のハードウェアによって、実行されても良い。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。