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と、4個の文字Ob4〜Ob7と、4個の文字Ob4〜Ob7の背景Bg2、Bg3と、を含んでいる。文字とは異なるオブジェクトは、例えば、写真である。背景Bg2、Bg3は、白色とは異なる色を有する均一な画像である。背景Bg2上の文字Ob4、Ob5は、背景Bg2よりも濃い色を有する文字、すなわち、背景Bg2よりも輝度が低い文字である。背景Bg3上の文字Ob6、Ob7は、背景Bg3よりも薄い色を有する文字、すなわち、背景Bg3よりも輝度が高い文字である。
S20では、CPU210は、スキャンデータに対して、文字特定処理を実行する。文字特定処理は、スキャン画像SI内の複数個の画素を、文字を示す複数個の文字画素と、文字を示さない複数個の非文字画素と、に分類することによって、文字画素を特定する処理である。
文字特定処理によって、例えば、文字画素の値が「1」とされ、非文字画素の値が「0」とされた二値画像データ(文字特定データとも呼ぶ)が生成される。図3(B)には、文字特定データによって示される文字特定画像TIの一例が示されている。この文字特定画像TIには、スキャン画像SI内の4個の文字Ob4〜Ob7を構成する複数個の画素が、文字画素Tp4〜Tp7として、特定されている。文字特定処理の詳細は、後述する。
S30では、CPU210は、スキャンデータに対して、網点平滑化処理を実行して、平滑化画像を示す平滑化画像データを生成する。具体的には、CPU210は、スキャンデータに含まれる複数個の非文字画素の値のそれぞれに対して、ガウスフィルタなどの平滑化フィルタを用いた平滑化処理を実行して、平滑化処理済みの複数個の非文字画素の値を算出する。平滑化処理の対象となる非文字画素は、S20の分類処理によって生成された文字特定データを参照して特定される。CPU210は、スキャンデータに含まれる複数個の文字画素の値と、平滑化処理済みの複数個の非文字画素の値と、を含む平滑化画像データを生成する。
図3(C)には、平滑化画像データによって示される平滑化画像GIが示されている。平滑化画像GIは、白色の背景Bg1gと、スキャン画像SI内のオブジェクトOb1〜Ob7、背景Bg2、Bg3が平滑化されたオブジェクトOb1g〜Ob7g、背景Bg2g、Bg3gと、を含んでいる。これらのオブジェクトOb1g〜Ob7g、背景Bg2g、Bg3gのうち、文字Ob4g〜Ob7g以外の部分(非文字部分とも呼ぶ)は、スキャン画像SIと比較して、平滑化されている。
S40では、CPU210は、平滑化画像データに対して、文字鮮鋭化処理を実行して、処理済み画像データを生成する。具体的には、CPU210は、平滑化画像データに含まれる複数個の文字画素の値のそれぞれに対して、アンシャープマスク処理や鮮鋭化フィルタを適用する処理などの鮮鋭化処理を実行して、鮮鋭化処理済みの複数個の文字画素の値を算出する。鮮鋭化処理の対象となる文字画素は、S20の分類処理によって生成された文字特定データを参照して特定される。そして、CPU210は、平滑化画像データに含まれる複数個の非文字画素の値(平滑化処理済みの複数個の非文字画素の値)と、鮮鋭化処理済みの複数個の文字画素の値と、を含む処理済み画像データを生成する。平滑化画像データに含まれる複数個の文字画素の値は、平滑化処理の対象ではないので、スキャンデータに含まれる複数個の文字画素の値と同じである。したがって、本ステップの文字鮮鋭化処理は、スキャンデータに含まれる複数個の文字画素の値に対して実行される、とも言うことができる。
図3(D)には、処理済み画像データによって示される処理済み画像FIが示されている。処理済み画像FIは、白色の背景Bg1fと、スキャン画像SI内のオブジェクトOb1〜Ob7、背景Bg2、Bg3に対応するオブジェクトOb1f〜Ob7f、背景Bg2f、Bg3fを含んでいる。これらのオブジェクトOb1f〜Ob7f、背景Bg2f、Bg3fのうち、文字Ob4f〜Ob7fのエッジは、スキャン画像SI内の文字Ob4〜Ob7や、平滑化画像GI内の文字Ob4g〜Ob7gと比較して、鮮鋭化されている。また、文字以外のオブジェクトOb1f〜Ob3f、背景Bg2f、Bg3fのエッジは、鮮鋭化されていない。
以上の説明から解るように、処理済み画像FI内のオブジェクトOb1f〜Ob7f、背景Bg2f、Bg3fは、鮮鋭化された文字と、平滑化された非文字を含む。
S50では、CPU210は、処理済み画像データを用いて印刷データを生成する印刷データ生成処理を実行する。具体的には、RGB画像データである処理済み画像データに対して色変換処理が実行されて、印刷に用いられる色材に対応する色成分(C、M、Y、Kの成分)を有する色値であるCMYK値で画素ごとの色を示すCMYK画像データが生成される。色変換処理は、例えば、公知のルックアップテーブルを参照して実行される。CMYK値画像データに対して、ハーフトーン処理が実行されて、印刷に用いられる色材ごと、かつ、画素ごとに、ドットの形成状態を示すドットデータが生成される。ドットの形成状態は、例えば、ドット有、ドット無の2種類の状態や、大ドット、中ドット、小ドット、ドット無の4種類の状態を取り得る。ハーフトーン処理は、例えば、ディザ法や、誤差拡散法に従って実行される。該ドットデータは、印刷時に用いられる順に並べ替えられ、該ドットデータに、印刷コマンドが付加されることによって、印刷データが生成される。
S60では、CPU210は、印刷処理を実行して、画像処理を終了する。具体的には、CPU210は、印刷データを印刷実行部280に供給して、印刷実行部280に処理済み画像を印刷させる。
以上説明した画像処理によれば、スキャンデータのうち、特定済みの複数個の文字画素の値に対して第1の画像処理(具体的には、エッジ鮮鋭化処理)が実行され(S40)、複数個の非文字画素の値に対して第1の画像処理とは異なる第2の画像処理(具体的には、網点平滑化処理)が実行され(S30)、処理済み画像データが生成される。この結果、文字画素の値と、文字画素とは異なる画素の値と、に対して、互いに異なる画像処理が実行されるので、スキャンデータに対する適切な画像処理を実現できる。なお、変形例では、S40の文字鮮鋭化処理が先に実行され、その後に、S30の網点平滑化処理が実行されても良い。
より具体的には、鮮鋭化処理済みの複数個の文字画素の値と、平滑化処理済みの複数個の非文字画素の値と、を含む処理済み画像データが生成される(S30、S40)。この結果、見栄えの良い処理済み画像FIを示す処理済み画像データを生成することができる。
例えば、図3(D)の処理済み画像FIに示すように、処理済み画像データでは、文字画素の値には、鮮鋭化処理済みの値が用いられている。この結果、処理済み画像FIの文字がシャープに見えるので、例えば、印刷される処理済み画像FIの見栄えを向上することができる。
また、処理済み画像データでは、処理済み画像FI内の背景Bg2や、写真などの文字とは異なるオブジェクトを構成する非文字画素の値には、平滑化処理済みの値が用いられている。この結果、処理済み画像FIの文字とは異なる部分に、例えば、モアレの原因となる網点が表れることを抑制できるので、印刷される処理済み画像FIにモアレなどの不具合が発生することを抑制できる。この結果、印刷される処理済み画像FIの見栄えを向上することができる。また、写真内のエッジが過度に強調されることが抑制されるので、画像FIのさらに印刷される処理済み画像FIの見栄えを向上することができる。
例えば、スキャンデータの生成に用いられた原稿は、画像が印刷された印刷物である。このため、例えば、原稿内の白とは異なる色を有する背景Bg2などの均一な部分は、画像を形成するドットレベルでみると、網点を形成している。網点は、複数個のドットと、ドットが配置されていない部分(原稿の地色を示す部分)と、を含む。このために、スキャン画像SI内の背景Bg2、Bg3を示す領域には、画素レベルでみると、網点が示されている。網点内のドットは、原稿の印刷時に用いられるディザマトリクスなどの影響によって、周期性を持って並んでいる。このためにスキャンデータを用いて印刷を行うと、ハーフトーン処理前の元画像(スキャン画像SI)内に存在している網点のドットの周期成分と、印刷画像を構成する網点のドットの周期成分と、が干渉して、モアレが表れやすい。本実施例の処理済み画像FIでは、平滑化処理によって、元画像(スキャン画像SI)内のエッジとは異なる部分のドットの周期成分が低減される。この結果、処理済み画像データを用いて、処理済み画像FIを印刷する場合に、例えば、印刷される処理済み画像FIにモアレが発生することを抑制できる。
特に、上記画像処理では、処理済み画像データを用いて、印刷データが生成される(S50)ので、例えば、印刷される処理済み画像FIに発生しやすいモアレを抑制可能な適切な印刷データを生成することができる。
A−3:文字特定処理
図2のS20の文字特定処理について説明する。S21では、CPU210は、スキャンデータを用いて、第1の二値画像データ生成処理を実行して、第1の二値画像データを生成する。第1の二値画像データは、文字候補画素と、文字候補画素とは異なる画素と、を示す二値データである。文字候補画素は、文字特定処理にて特定すべき文字画素の候補である。ここで、第1の二値画像データによって示される文字候補画素を第1の文字候補画素とも呼ぶ。
図4は、文字特定処理で用いられる画像の一例を示す図である。図4(A)には、第1の二値画像データによって示される第1の二値画像CI1の一例が示されている。第1の二値画像CI1において黒色の部分は、文字候補画素として特定された画素を示し、白色の部分は、文字候補画素とは異なる画素を示す。
第1の二値画像CI1では、スキャン画像SI内の文字とは異なるオブジェクトOb1〜Ob3を構成する複数個の画素Cp1〜Cp3と、文字Ob4、Ob5を構成する複数個の画素Cp4、Cp5と、背景Bg3と文字Ob6、Ob7との全体を構成する画素Cpbと、が、第1の文字候補画素として特定されている。また、第1の二値画像CI1では、文字Ob6、Ob7を構成する画素が、背景Bg3から分離されて特定されてはいない。このように、特定される第1の文字候補画素は、文字とは異なるオブジェクトや背景を構成する画素を含み得る。これは、1種類の二値化処理だけでは、全ての文字候補画素を抽出することは困難であり、また、文字を構成しない画素を排除することも困難であるためである。第1の二値画像データ生成処理の詳細は、後述する。本実施例では、第1の二値画像データ生成処理では、背景よりも輝度が低い文字を構成する文字画素を含む第1の文字候補画素が抽出される。
S22では、CPU210は、スキャンデータに対して、第1のブロック判定処理を実行して、文字を示す文字ブロックと、文字を示さない非文字ブロックと、を示す二値画像データ(第1のブロック判定データとも呼ぶ)を生成する。第1のブロック判定データは、文字ブロックを構成する画素の値が「1」とされ、非文字ブロックを個性する画素の値が「0」とされた二値データである。第1のブロック判定処理は、スキャンデータを用いて、スキャン画像SI内に配置される複数個のブロックのそれぞれが、文字を示す文字ブロックであるか否かをブロックごとに判断する処理である。1個のブロックは、N個(Nは2以上の整数)の画素を含む矩形の領域である。第1のブロック判定処理の詳細は後述する。
図4(B)には、第1のブロック判定データによって示される第1のブロック判定画像BI1の一例が示されている。この第1のブロック判定画像BI1には、スキャン画像SI内の文字Ob4、Ob5が配置された領域に対応する文字ブロックBk4、Bk5が特定されている。このように、第1のブロック判定データによって特定される文字ブロックは、文字とは異なるオブジェクトを含む領域に対応するブロックを含まない。第1のブロック判定データによって特定される文字ブロックは、背景よりも輝度が低い文字を示すブロックである。このために、第1のブロック判定画像BI1では、背景よりも輝度が高い文字Ob6、Ob7が配置された領域に対応する文字ブロックBk6、Bk7(図4(D))が特定されていない。
S23では、CPU210は、S21にて生成済みの第1の二値画像データと、S22にて生成済みの第1のブロック判定データと、を用いて、論理積合成処理を実行する。これによって、複数個の第1の文字画素を示す第1の文字特定データが生成される。具体的には、CPU210は、第1の二値画像データと、第1のブロック判定データと、の各画素の論理積を取ることによって、第1の文字特定データとしての二値画像データを生成する。換言すれば、CPU210は、スキャン画像SI内の複数個の画素のうち、S21において第1の文字候補画素として特定され、かつ、S22において特定済みの文字ブロック内に位置する画素を、第1の文字画素として特定する。CPU210は、スキャン画像SI内の複数個の画素のうち、第1の文字候補画素として特定されない画素と、非文字ブロック内の画素とを、第1の文字画素として特定しない。
図4(A)の第1の二値画像CI1に示すように、第1の二値画像データによって特定される複数個の第1の文字候補画素は、スキャン画像SI内の文字Ob4、Ob5を構成する画素Cp4、Cp5の他に、他のオブジェクトOb1〜Ob3や背景Bg3を構成する画素Cp1〜Cp3、Cpbを含んでいる。図4(B)の第1のブロック判定画像BI1に示すように、第1の二値画像データと第1のブロック判定データとの論理積を取ることで、第1の文字特定データでは、スキャン画像SI内の文字Ob4、Ob5を構成する画素Cp4、Cp5が、選択的に第1の文字画素として特定される。すなわち、複数個の第1の文字画素は、スキャン画像SI内の文字Ob4、Ob5を構成する画素Cp4、Cp5を含み、他のオブジェクトOb1〜Ob3や背景Bg3を構成する画素Cp1〜Cp3、Cpbを含まない
S24では、CPU210は、スキャンデータを用いて、第2の二値画像データ生成処理を実行して、第2の二値画像データを生成する。第2の二値画像データは、文字候補画素と、文字候補画素とは異なる画素と、を示す二値データである。ここで、第2の二値画像データによって示される文字候補画素を第2の文字候補画素とも呼ぶ。
図4(C)には、第2の二値画像データによって示される第2の二値画像CI2の一例が示されている。第2の二値画像CI2において黒色の部分は、第2の文字候補画素として特定された画素を示し、白色の部分は、文字候補画素とは異なる画素を示す。図4(C)についても同様である。
第2の二値画像CI2では、背景Bg3よりも輝度が高い文字Ob6、Ob7と、背景Bg1gを構成するCp8と、が、第2の文字候補画素として特定されている。また、第1の二値画像CI1では、文字Ob4、Ob5を構成する画素が特定されていない。このように、第2の文字候補画素は、第1の文字候補画素と同様に、文字とは異なるオブジェクトや背景を構成する画素を含み得る。第2の二値画像データ生成処理の詳細は、後述する。本実施例では、第2の二値画像データ生成処理では、背景よりも輝度が高い文字を構成する文字画素を含む第2の文字候補画素が抽出される。
S25では、CPU210は、スキャンデータに対して、第2のブロック判定処理を実行して、文字を示す文字ブロックと、文字を示さない非文字ブロックと、を示す二値画像データ(第2のブロック判定データとも呼ぶ)を生成する。第2のブロック判定データは、第1のブロック判定データと同様に、文字ブロックを構成する画素の値が「1」とされ、非文字ブロックを個性する画素の値が「0」とされた二値データである。第2のブロック判定処理は、第1のブロック判定処理と同様に、スキャンデータを用いて、スキャン画像SI内に配置される複数個のブロックのそれぞれが、文字を示す文字ブロックであるか否かをブロックごとに判断する処理である。第2のブロック判定処理の詳細は後述する。
図4(D)には、第2のブロック判定データによって示される第2のブロック判定画像BI2の一例が示されている。この第2のブロック判定画像BI2には、スキャン画像SI内の文字Ob6、Ob7が配置された領域に対応する文字ブロックBk6、Bk7が特定されている。このように、第2のブロック判定データによって特定される文字ブロックは、文字とは異なるオブジェクトを含む領域に対応するブロックを含まない。第2のブロック判定データによって特定される文字ブロックは、背景よりも輝度が高い文字を示すブロックである。このために、第2のブロック判定画像BI2では、背景よりも輝度が低い文字Ob4、Ob5が配置された領域に対応する文字ブロックBk4、Bk5(図4(B))が特定されていない。
S26では、CPU210は、S24にて生成済みの第2の二値画像データと、S25にて生成済みの第2のブロック判定データと、を用いて、論理積合成処理を実行する。これによって、複数個の第2の文字画素を示す第2の文字特定データが生成される。具体的には、CPU210は、第2の二値画像データと、第2のブロック判定データと、の各画素の論理積を取ることによって、第2の文字特定データとしての二値画像データを生成する。換言すれば、CPU210は、スキャン画像SI内の複数個の画素のうち、S24において第2の文字候補画素として特定され、かつ、S25において特定済みの文字ブロック内に位置する画素を、第2の文字画素として特定する。CPU210は、スキャン画像SI内の複数個の画素のうち、第2の文字候補画素として特定されない画素と、非文字ブロック内の画素とを、第2の文字画素として特定しない。
図4(C)の第2の二値画像CI2に示すように、第2の二値画像データによって特定される複数個の第2の文字候補画素は、スキャン画像SI内の文字Ob6、Ob7を構成する画素Cp6、Cp7の他に、背景Bg1などを構成する画素Cp8を含んでいる。図4(D)の第2のブロック判定画像BI2に示すように、第2の二値画像データと第2のブロック判定データとの論理積を取ることで、第2の文字特定データでは、スキャン画像SI内の文字Ob6、Ob7を構成する画素Cp6、Cp7が、選択的に第2の文字画素として特定される。すなわち、複数個の第2の文字画素は、スキャン画像SI内の文字Ob6、Ob7を構成する画素Cp6、Cp7を含み、背景Bg1などを構成する画素Cp8を含まない。
S27では、CPU210は、S23にて生成済みの第1の文字特定データと、S26にて生成済みの第2の文字特定データと、を用いて、論理和合成処理を実行する。これによって、最終的に特定すべき複数個の文字画素を示す文字特定データが生成される。換言すれば、CPU210は、第1の文字特定データによって特定される複数個の第1の文字画素と、第2の文字特定データによって特定される複数個の第2の文字画素と、を含む画素群であって、第1の文字画素とも第2の文字画素とも異なる画素を含まない画素群を、最終的に、複数個の文字画素として特定する。この結果、第1の文字特定データと第2の文字特定データとを用いて、スキャン画像SI内の複数個の文字画素の特定漏れを効果的に低減できる。例えば、図4(B)に示す文字特定画像TIのように、最終的な文字特定データによって特定される複数個の文字画素は、スキャン画像SI内の文字Ob4〜Ob7を構成する複数個の文字画素Tp4〜Tp7を含み、他のオブジェクトや背景を構成する画素を含んでいない。
A−4:第1の二値画像データ生成処理
図2のS21の第1の二値画像データ生成処理について説明する。図5は、第1の二値画像データ生成処理のフローチャートである。S100では、CPU210は、スキャンデータを用いて、最小成分データを生成する。具体的には、CPU210は、スキャンデータに含まれる複数個の画素の値(RGB値)のそれぞれから、最小成分値Vminを取得する。最小成分値Vminは、RGB値に含まれる複数個の成分値(R値、G値、B値)のうちの最小値である。CPU210は、これらの最小成分値Vminを複数個の画素の値とする画像データを、最小成分データとして生成する。最小成分データは、スキャン画像SIと同じサイズの画像を示す画像データである。最小成分データに含まれる複数個の画素の値のそれぞれは、スキャンデータの対応する画素の値(RGB値)の最小成分値Vminである。
図6は、スキャンデータの最小成分値と最大成分値の説明図である。図6(A)〜図6(E)には、RGB値の一例として、シアン(C)、マゼンタ(M)、イエロ(Y)、黒(K)、白(W)のRGB値が、棒グラフで図示されている。図6に示すように、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であり、それぞれに異なる値となる(図6)。これに対して、C、M、Y、K、Wの最小成分値Vminは、図6に示すように、0、0、0、0、255となり、白(W)を除いて同じ値となる。
図7は、画像処理に用いられる画像の一例を示す第2の図である。図7(A)は、スキャン画像SIのうち、上述した網点領域の拡大図である。例えば、図7(A)の例では、スキャン画像SI内の網点領域は、複数個のMドットMDと、複数個のYドットYDと、を含んでいる。ここでは、説明のために、MドットMDを示す画像は、マゼンタの原色を有する均一な画像であり、YドットYDを示す画像は、イエロの原色を有する均一な画像であるとする。
図7(B)には、最小成分データによって示される最小成分画像MNIの一例が示されている。この最小成分画像MNIは、図7(A)のスキャン画像SIに対応している。最小成分画像MNIでは、スキャン画像SIのYドットMDに対応する領域MDb内の画素の値と、YドットYDに対応する領域YDb内の画素の値と、は互いに同じとなる。図7(C)には、比較例として、各画素の輝度を示す輝度画像データによって示される輝度画像YIが示されている。この輝度画像YIは、図7(A)のスキャン画像SIに対応している。輝度画像YIでは、最小成分画像MNIとは異なり、スキャン画像SIのMドットMDに対応する領域MDd内の画素の値と、YドットYDに対応する領域YDd内の画素の値と、は互いに異なる。
以上の説明から解るように、最小成分画像MNIでは、スキャン画像SIにおいて、原稿内のC、M、Y、Kドットが形成された部分に対応する複数個の画素の値の間の差が、輝度画像YIよりも小さくなる。そして、最小成分画像MNIでは、スキャン画像SIにおいて、原稿内の地色(用紙の白色)を示す領域に対応する地色領域の画素の値が、ドットが形成された部分に対応する画素の値よりも大きくなる。
S110では、CPU210は、生成された最小成分データに対して、二値化処理を実行して、二値画像データを生成する。本ステップにて生成される二値画像データが、第1の二値画像データである。例えば、CPU210は、最小成分データにおいて、画素の値が閾値(例えば、128)以下である画素を、第1の文字候補画素に分類し、画素の値が閾値より大きな値である画素を、第1の文字候補画素に分類しない。二値画像データでは、上述したように、第1の文字候補画素の値は、「1」とされ、それ以外の画素の値は、「0」とされる。
以上説明した第1の二値画像データ生成処理によれば、最小成分データを用いて、第1の二値画像データが生成される。一般的に、背景よりも輝度が低い(すなわち、色が濃い)文字は、主としてドットで構成され、背景は、主として用紙の白色で構成される場合が多い。最小成分データでは、図7を参照して説明したように、原稿内の地色(用紙の白色)を示す領域に対応する地色領域の画素の値が、ドットが形成された部分に対応する画素の値よりも大きくなるので、第1の二値画像データにおいて、背景よりも輝度が低い(すなわち、色が濃い)文字を構成する画素の特定漏れを抑制できる。
例えば、イエロ(Y)は、C、M、Kと比較して濃度が低い(輝度が高い)。このために、用紙の地色(白)の背景に、イエロの文字がある場合には、例えば、輝度を示す輝度画像データを二値化しても、該イエロの文字を構成する文字画素を、適切に文字候補画素として特定できない場合がある。本実施例では、このような場合でも該イエロの文字を構成する文字画素を、適切に文字候補画素として特定できる。このために、最小成分データを用いて、背景よりも輝度が低い文字を構成する文字画素の特定を実行することで、例えば、輝度画像データだけでは特定できない文字を特定し得る。この結果、スキャン画像SI内の文字候補画素の特定精度を向上できる。
A−5:第2の二値画像データ生成処理
図2のS24の第2の二値画像データ生成処理について説明する。図8は、第2の二値画像データ生成処理のフローチャートである。S200では、CPU210は、スキャンデータを用いて、輝度画像データを生成する。具体的には、CPU210は、スキャンデータから取得される各画素のR値、G値、B値を用いて、各画素の輝度Yを算出する。輝度Yは、例えば、上記3成分の加重平均であり、具体的には、Y=0.299×R+0.587×G+0.114×Bの式を用いて算出できる。このように、輝度画像データの複数個の画素の値は、スキャン画像SI内の複数個の画素のうちの対応する画素の輝度Yを示す。
S210では、CPU210は、生成された輝度画像データに対して、二値化処理を実行して、二値画像データを生成する。例えば、CPU210は、輝度画像データにおいて、画素の値(すなわち、輝度)が閾値(例えば、128)以上である画素を、文字候補画素に分類し、画素の値が閾値未満である画素を、文字候補画素とは異なる画素に分類する。二値画像データでは、上述したように、文字候補画素の値は、「1」とされ、文字候補画素とは異なる画素の値は、「0」とされる。そして、S210にて生成される二値画像データが、第2の二値画像データである。第2の二値画像データでは、上述したように背景より輝度が高い(すなわち、色が薄い)文字を構成する文字画素を含む第2の文字候補画素が特定される。
以上説明した第2の二値画像データ生成処理によれば、輝度画像データを用いて、第2の二値画像データが生成される。文字の読みやすさのために、文字の色と背景の色とは、輝度に比較的大きな差があることが多い。このために、輝度画像データを用いることで、文字画素の特定漏れを抑制することができる。
さらに、第2の二値画像データと、第1の二値画像データとは、互いに異なる文字画素を特定し得る。例えば、上述したように、第2の二値画像データは、背景より輝度が高い文字を構成する画素を文字候補画素として特定できるのに対して、第1の二値画像データは、背景より輝度が低い文字を構成する画素を文字候補画素として特定できる。また、第1の二値画像データは、例えば、印刷に用いられるC、M、Y、Kの原色の背景上に位置し、かつ、C、M、Y、Kの別の原色あるいは用紙の白色を有する文字を構成する文字画素を特定し難いのに対して、第2の二値画像データは、このような文字を構成する文字画素を特定し得る。このために、第1の二値画像データと第2の二値画像データとを併用することで、さらに、文字候補画素の特定漏れを抑制することができる。
A−6:ブロック判定処理
図2のS22の第1のブロック判定処理およびS25の第2のブロック判定処理について説明する。これらのブロック判定処理は、文字を示す複数個の文字画像データと文字を示さない複数個の非文字画像データとを用いてトレーニングされた機械学習モデルを用いて実行される。第1のブロック判定処理と第2のブロック判定処理とでは、用いられる機械学習モデルが互いに異なる。第1のブロック判定処理で用いられる機械学習モデルを第1の機械学習モデルと呼び、第2のブロック判定処理で用いられる機械学習モデルを第2の機械学習モデルと呼ぶ。本実施例では、第1のブロック判定処理と第2のブロック判定処理とでは、用いられる機械学習モデルを除いた処理は同一であり、1つのフローチャートを用いて説明する。
図9は、ブロック判定処理のフローチャートである。図10は、スキャン画像SI上に配置される複数個のブロックBLの説明図である。ブロック判定処理は、上述したように、ブロック判定データを、スキャン画像SI内に配置される複数個のブロックBLのそれぞれが文字を示す文字ブロックであるか否かをブロックBLごとに判断することによって生成する処理である。
S400では、CPU210は、ブロック判定データを生成するためのキャンバスデータをメモリ(具体的には、揮発性記憶装置220のバッファ領域)に準備する。キャンバスデータによって示されるキャンバス(初期画像)は、スキャン画像SIと同じサイズの画像、すなわち、同じ画素数の画像である。キャンバスデータの各画素の値は、所定の初期値(例えば、0)である。
S405では、CPU210は、スキャン画像SIに、注目ブロックを設定する。最初の注目ブロックは、本実施例では、図10の左上のブロックBL(1)である。1個のブロックは、N個(Nは2以上の整数)の画素を含む矩形の領域である。ここで、図10において、スキャン画像SI上にマトリクス状に配置された破線で示される複数個の升目は、サブブロックSBを示している。1個のサブブロックSBは、k個(kは、1≦k<Nをを満たす整数)の画素を含む矩形の領域である。本実施例では、サブブロックSBは、縦M画素×横M画素(Mは、1以上の整数)の領域である(k=(M×M))。例えば、1個のブロックBLは、本実施例では、縦L個×横L個(Lは、2以上の整数)のサブブロックSBを含む領域である。すなわち、本実施例の各ブロックBLは、縦(L×M)画素×横(L×M)画素の領域である。本実施例では、M=10、L=5であるので、各ブロックBLは、縦50画素×横50画素の領域である(N=2500)。
S410では、CPU210は、機械学習モデルを用いて、注目ブロック内の画像が文字を示す確率(文字確率Txrと呼ぶ)を算出する。
機械学習モデルは、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」に開示されている。
機械学習モデルの入力は、注目ブロック内のN個の画素の値(例えば、RGB値や輝度値)を、各画素の注目ブロック内での位置に応じた順序で並べた行列である。すなわち、注目ブロック内のN個の画素の値が、注目ブロック内における当該画素の位置と対応付けて入力される。機械学習モデルの出力は、上述した文字確率Txrである。
例えば、文字確率Txrは、0〜100%の数値で表される。CPU210は、後述するS415〜S430に示すように、文字確率Txrに基づいて、注目ブロックが、文字を示す文字ブロック、文字を示さない非文字ブロック、文字を示すか不明である不明ブロックのいずれであるかを判断する。CPU210は、文字確率Txrが、TH1≦Txrである場合には、注目ブロックは、文字ブロックであると判断する。CPU210は、文字確率Txrが、TH2≦Txr<TH1である場合には、注目ブロックは、不明ブロックであると判断する。CPU210は、文字確率Txrが、Txr<TH2である場合には、注目ブロックは、非文字ブロックであると判断する。閾値TH1は、例えば、75%であり、閾値TH2は、例えば、25%である。
このように、N個の画素の値の組みあわせが同じ画像であっても、どの画素の値が、注目ブロック内のどの位置にあるかが異なっていれば、異なる文字確率Txrが出力され、該文字確率Txrに基づいて、注目ブロックについての判断が行われる。このように、注目ブロックが、文字ブロック、非文字ブロック、不明ブロックのいずれであるかは、注目ブロック内のN個の画素の位置とN個の画素の値とに応じて判断されることが解る。
機械学習モデルは、例えば、文字を示す所定個数(例えば、3000個)の文字画像データと、文字を示さない所定個数の(例えば、3000個)の非文字画像データと、を用いてトレーニングされている。これらのトレーニング用の文字画像データおよび非文字画像データは、N個の画素を含むブロックBLと同じサイズの画像である。非文字画像は、文字とは異なるオブジェクト(例えば、写真)やベタ塗りの背景などを示す画像である。
ここで、第1のブロック判定処理に用いられる第1の機械学習モデルと、第2のブロック判定処理に用いられる第2の機械学習モデルと、では、トレーニングに用いられる文字画像データおよび非文字画像データのセットが異なる。第1の機械学習モデルは、背景よりも輝度が低い文字を示す複数個の第1の文字画像データと、背景よりも輝度が低い文字を示さない複数個の第1の非文字画像データと、を用いてトレーニングされている。第2の機械学習モデルは、背景よりも輝度が高い文字を示す複数個の第2の文字画像データと、背景よりも輝度が高い文字を示さない複数個の第2の非文字画像データと、を用いてトレーニングされている。このために、第1のブロック判定処理では、背景よりも輝度が低い文字を示すブロックは、文字ブロックであると判断されるが、背景よりも輝度が高い文字を示すブロックは、文字ブロックであると判断されない。そして、第2のブロック判定処理では、背景よりも輝度が低い文字を示すブロックは、文字ブロックであると判断されず、背景よりも輝度が高い文字を示すブロックは、文字ブロックであると判断される。以下の図11では、処理の動作の説明のために、白の背景に黒の文字が例示されているが、この例示は、第1のブロック判定処理のための例示である。第2のブロック判定処理では、図11と同様の文字であって、黒の背景に白の文字である例で、同様の動作になる。
図11は、ブロックBLごとの判断の一例を示す図である。例えば、図11(A)のブロックBL(1)や図11(B)のブロックBL(2)が注目ブロックである場合には、注目ブロック内の比較的広い範囲を文字が占めているので、注目ブロックは、文字ブロックであると判断される。例えば、図11(C)のブロックBL(3)が注目ブロックである場合には、注目ブロック内に文字が含まれているものの、文字が占める範囲は比較的狭いので、注目ブロックは、不明ブロックであると判断される。例えば、図11(D)のブロックBL(4)が注目ブロックである場合には、注目ブロック内に文字が含まれていないので、注目ブロックは、非文字ブロックであると判断される。以下、S415〜S430の処理を具体的に説明する。
S415では、CPU210は、S410にて算出された文字確率Txrが閾値TH1以上であるか否かを判断する。文字確率Txrが閾値TH1以上である場合には(S415:YES)、注目ブロックは文字ブロックであると判断される。このために、この場合には、S420にて、CPU210は、注目ブロック内の全画素の値を、文字を示す値に設定する。文字確率Txrが閾値TH1未満である場合には(S415:NO)、S420はスキップされる。
図12は、ブロック判定データにおける画素の値の設定の一例を示す図である。図12(A)〜(D)には、ブロック判定データによって示されるブロック判定画像BIが概念的に示されている。図11(A)のブロックBL(1)や図11(B)のブロックBL(2)が注目ブロックである場合には、注目ブロックは文字ブロックであると判断されるので、ブロック判定画像BIにおいても、図12(A)、(B)に示すように、ブロックBL(1)、BL(2)内の全ての画素の値が、文字を示す値「1」に設定される。
S425では、CPU210は、文字確率Txrが閾値TH2未満であるか否かを判断する。文字確率Txrが閾値TH2未満である場合には(S425:YES)、注目ブロックは非文字ブロックであると判断される。このために、この場合には、S430にて、CPU210は、注目ブロック内の全画素の値を非文字を示す値に設定する。文字確率Txrが閾値TH2以上である場合には(S425:NO)、S430はスキップされる。
図11(D)のブロックBL(4)が注目ブロックである場合には、注目ブロックは非文字ブロックであると判断されるので、ブロック判定画像BIにおいても、図12(D)に示すように、ブロックBL(4)内の全ての画素の値が、非文字を示す値「2」に設定される。
なお、文字確率Txrが閾値TH2以上であり、かつ、閾値TH1未満である場合には(S415:NO、かつ、S425:NO)、注目ブロックは、不明ブロックであると判断される。このために、この場合には、注目ブロック内の全ての画素の値は変更されない。すなわち、この時点で、文字を示す値「1」を有する画素は、文字を示す値のまま維持され、非文字を示す値「2」を有する画素は、非文字を示す値のまま維持され、不明を示す値「0」を有する画素は、不明を示す値のまま維持される。
図11(C)のブロックBL(3)が注目ブロックである場合には、注目ブロックは不明ブロックであると判断されるので、ブロック判定画像BIにおいて、図12(C)に示すように、ブロックBL(4)内の全ての画素の値は、変更されることなく、維持される。
S435では、CPU210は、注目ブロックを右方向にM画素だけ移動する。すなわち、注目ブロックは、右方向に1個のサブブロックSB分だけ移動される。例えば、図10のブロックBL(1)が注目ブロックである場合には、ブロックBL(2)が新たな注目ブロックに設定される。図10のブロックBL(q−1)が注目ブロックである場合には、ブロックBL(q)が新たな注目ブロックに設定される。
S440では、CPU210は、注目ブロックを右方向にM画素だけ移動した結果、注目ブロックの右端は、スキャン画像SIの右端よりも右側に移動したか否かを判断する。すなわち、移動後の新たな注目ブロックが、スキャン画像SIの右側にはみ出したか否かを判断する。例えば、新たな注目ブロックが、図10のブロックBL(q)やブロックBL(e)である場合には、注目ブロックの右端は、スキャン画像SIの右端よりも右側に移動したと判断される。
注目ブロックの右端が、スキャン画像SIの右端よりも右側に移動していない場合には(S440:NO)、CPU210は、S410に戻る。このように、例えば、注目ブロックを右方向にM画素ずつずらしながら、順次に、ブロックごとの判断(S410〜S430)が行われる。図10の例では、ブロックBL(1)、BL(2)、BL(3)の順に、各ブロックBLが、文字ブロック、非文字ブロック、不明ブロックのいずれであるかが判断される。
注目ブロックの右端が、スキャン画像SIの右端よりも右側に移動した場合には(S440:YES)、S445にて、CPU210は、注目ブロックをスキャン画像SIの左端に移動し、S450にて、注目ブロックを下方向にM画素だけ移動する。
S455では、CPU210は、注目ブロックを下方向にM画素だけ移動した結果、注目ブロックの下端は、スキャン画像SIの下端よりも下側に移動したか否かを判断する。すなわち、移動後の新たな注目ブロックが、スキャン画像SIの下側にはみ出したか否かを判断する。例えば、新たな注目ブロックが、図10のブロックBL(e+1)である場合には、注目ブロックの下端は、スキャン画像SIの下端よりも下側に移動したと判断される。例えば、移動後の新たな注目ブロックが、図10のブロックBL(e+1)である場合には、注目ブロックの下端は、スキャン画像SIの下端よりも下側に移動したと判断される。
注目ブロックの下端が、スキャン画像SIの下端よりも下側に移動していない場合には(S455:NO)、CPU210は、S410に戻る。このように、例えば、注目ブロックを下方向にM画素ずつずらしながら、順次に、左端から右端までの1行分のブロックBLの判断が、一行ずつ行われる。例えば、図10の右端のブロックBL(q−1)の次に、判断の対象となる注目ブロックは、M画素だけ下側の行の左端のブロックBL(q+1)である。
注目ブロックの下端が、スキャン画像SIの下端よりも下側に移動した場合には(S455:YES)、全てのブロックBLの判断が終了したので、CPU210は、S460に処理を進める。
S460では、CPU210は、ブロック判定データに、不明を示す値「0」が残っているか否かを判断する。不明を示す値が残っている場合には、S465にて、CPU210は、不明を示す値を、文字を示す値「1」に設定する。この結果、ブロック判定データの各画素の値は、文字を示す値「1」と非文字を示す値「2」とのいずれかとなる。
S470では、CPU210は、非文字を示す値「2」を「0」に変更して、ブロック判定データを「1」と「0」のいずれかの値をとる二値画像データに変換する。この結果、文字を値、すなわち、上述した文字ブロックを構成する画素であることを示す値「1」と、非文字を示す値、すなわち、上述した非文字ブロックを構成する画素であることを示す値「0」と、のいずれかの値を画素ごとに有するブロック判定データが生成される。
以上説明した本実施例によれば、対象画像データとしてのスキャンデータを用いて、複数個の文字候補画素が抽出され(図2のS21、S24)、スキャンデータを用いて、スキャン画像SI上に配置される複数個のブロックBLのそれぞれが文字を示す文字ブロックであるか否かをブロックごとに判断される(図2のS22、S25)。ブロックBLごとの判断は、複数個の文字画像データと複数個の非文字画像データとを用いてトレーニングされた機械学習モデルを用いて実行される(図9のS410)。そして、ブロックごとの判断結果を用いて、複数個の文字候補画素の中から、複数個の文字画素が特定される(図2のS23、S26、S27)。この結果、この結果、スキャン画像SI内の文字画素を精度良く特定できる。
図13は、実施例の効果について説明する図である。図13(A)〜(D)には、スキャンデータによって示されるスキャン画像SI、第1の二値画像データによって示される第1の二値画像CI1、第1のブロック判定データによって示される第1のブロック判定画像BI1、第1の文字特定データによって示される第1の文字特定画像TI1のそれぞれの一例が、概念的に示されている。図13において、これらの画像SI、CI1、BI1、TI1の破線で示す升目は、それぞれ、画素Pxを示している。
スキャン画像SIには、文字Txとともに、文字以外のオブジェクト(例えば、写真)や色付きの背景が含まれ得る。図13(A)の例では、スキャン画像SIには、文字Txとともに、構成する網点DTが含まれ得る。これは、上述したように、スキャンデータが、印刷物を読み取ることによって生成されたデータであるためである。このような場合に、文字画素のみを特定することは比較的困難である。例えば、網点DTを誤って特定しないように、スキャンデータに対して、画像を平滑化する平滑化処理を行い、平滑化処理済みのスキャンデータに対して画像内のエッジ画素を抽出するエッジ抽出処理を行う方法が考えられる。この方法では、抽出されたエッジ画素が文字画素として特定される。この方法では、網点DTを十分に平滑化できない場合には、網点DTのエッジが誤って文字画素として特定され得る。また、網点DTを十分に平滑化するために、過度に画像を平滑化すると、文字のエッジが過度にぼけてしまうために、文字画素の特定精度が低下してしまう。このために、例えば、図13(B)の第1の二値画像CI1に示すように、第1の二値画像データにおいて、文字Txを構成する画素Cptだけでなく、網点DTを構成する画素Cpdも第1の文字候補画素として特定されてしまい得る。
これに対して、本実施例のS22やS25のブロック判定処理では、ブロックBLごとに、ブロック内のN個の画素の位置とN個の画素の値とに応じて、文字ブロックか否かを含む判断が行われるので、画素ごとの判断と比較して、空間的な分解能は粗くなるものの、判断の誤りは比較的少なくなる。さらに、本実施例では、ブロックBLごとの判断を機械学習モデルを用いて実行するので、該機械学習モデルを十分にトレーニングしておくことで、各ブロックが文字ブロックであるか否かは、十分に高い精度で判断できる。このために、例えば、図13(C)の第1のブロック判定画像BI1では、例えば、文字Txを含む領域は、文字ブロックTBとして特定され、網点DTを含む領域は、非文字ブロックOBとして特定される。
この結果、第1の文字特定データと、第1のブロック判定データと、の論理積を取って第1の文字特定データを生成すれば、文字画素を適切に特定することができる。例えば、図13(D)の文字特定画像TI1に示すように、文字Txを構成する画素が文字画素として特定され、かつ、網点DTを示す画素が文字画素として特定されない。第2の二値画像データと第2のブロック判定データと、これらのデータの論理積を取って得られる第2の文字特定データについても同様である。
さらに、本実施例によれば、CPU210は、第1の二値画像データ生成処理や第2の二値画像データ生成処理において、対象画像データに対して、画像内のエッジの強度を調整するエッジ調整処理を実行することなく、複数個の文字候補画素を抽出する(図5、図8)。この結果、複数個の文字候補画素を精度良く抽出することができる。エッジ調整処理は、画像を平滑化して画像内のエッジの強度を低くする平滑化処理および画像内のエッジの強度を強くするエッジ強調処理を含む。平滑化処理は、例えば、単純平均のフィルタを用いる処理やガウシアンフィルタを用いる処理を含む。エッジ強調処理は、例えば、アンシャープマスク処理、ラプラシアンフィルタを用いる処理を含む。例えば、仮に、スキャンデータに対して、上述したように、平滑化処理を行って網点DTを消去することや、平滑化処理後に、さらに、エッジ強調処理を行って、ぼけた文字のエッジを強調したりするとする。こうすれば、網点DTを構成する画素が誤って文字画素として特定される不都合を低減し得るが、文字のエッジも変化してしまうために、文字の太さの変化などが生じ得る。この結果、スキャン画像SI内の文字よりも太い文字を構成するように文字画素が特定される不都合や、スキャン画像SI内の文字よりも細い文字を構成するように文字画素が特定される不都合が発生して、文字画素の特定精度が低下し得る。例えば、小さな文字が潰れてしまった状態で特定されることや、文字の線画途切れた状態で特定されることが発生し得る。本実施例では、第1の二値画像データや第2の二値画像データと、ブロック判定データとの論理積を取ることで、網点DTなどの文字以外のオブジェクトや背景を構成する画素を排除している。このために、第1の二値画像データや第2の二値画像データでは、網点DTを構成する画素が文字候補画素として誤って特定されていても問題がない。このために、第1の二値画像データ生成処理や第2の二値画像データ生成処理において、対象画像データに対して、平滑化処理やエッジ強調処理を実行する必要がない。この結果、文字のエッジを変化させないので、複数個の文字候補画素を精度良く抽出することができる。
さらに、本実施例の第1の二値画像データ生成処理では、CPU210は、スキャンデータを用いて、最小成分データを生成する(図5のS100)。最小成分データの複数個の画素の値のそれぞれは、対応するスキャンデータのRGB値の3個の成分値のうちの最小値に基づく値である。そして、該最小成分データを用いて複数個の第1の文字候補画素が抽出される(図5のS110)。この結果、対象画像データをそのまま二値化する場合には抽出され難い文字候補画素を抽出し得る。例えば、上述したように、用紙の地色(白)の背景に、イエロの文字がある場合であっても、該文字を構成する画素を含む文字候補画素を抽出できる。
さらに、本実施例の第2の二値画像データ生成処理では、CPU210は、スキャンデータを用いて、輝度画像データを生成する(図8のS200)。CPU210は、輝度画像データを用いて、基準よりも高い輝度を有する画素を文字候補画素として抽出する(図8のS210、S220)。この結果、対象画像データをそのまま二値化する場合には抽出され難い比較的輝度が高い文字候補画素を抽出し得る。例えば、上述したように、背景より輝度が高い文字を構成する文字を構成する画素を含む文字候補画素を抽出できる。
さらに、本実施例では、CPU210は、第1の二値画像データ生成処理を実行して、複数個の第1の文字候補画素を抽出し(図2のS21)、第2の二値画像データ生成処理を実行して、複数個の第2の文字候補画素を抽出する(図2のS24)。そして、CPU210は、ブロックBLごとの判断結果を用いて、複数個の第1の文字候補画素の中から、複数個の第1の文字画素を特定し(図2のS23)、ブロックBLごとの判断結果を用いて、複数個の第2の文字候補画素の中から、複数個の第2の文字画素を特定し、複数個の第1の文字画素と複数個の第2の文字画素とを含む複数個の画素を、最終的に文字画素として特定する(図2のS27)。この結果、文字画素の特定漏れを抑制することができる。
さらに、本実施例の第1のブロック判定処理(図2のS22)では、CPU210は、第1の機械学習モデルを用いて、複数個のブロックBLのそれぞれが文字ブロックあるか否かをブロックごとに判断する(図9)。第2のブロック判定処理(図2のS25)では、CPU210は、第1の機械学習モデルとは異なる第2の機械学習モデルを用いて、複数個のブロックBLのそれぞれが文字ブロックあるか否かをブロックごとに判断する(図9)。CPU210は、第1の機械学習モデルを用いた判断結果を用いて、複数個の第1の文字画素を特定し(図2のS23)第2の機械学習モデルを用いて判断結果を用いて、第2の文字画素を特定する(図2のS26)。このように、第1の文字画素を特定する際と、第2の文字画素を特定する際とで、互いに異なる機械学習モデルを用いた判定結果を用いるので、第1の文字画素と第2の文字画素とをそれぞれ適切に特定し得る。
さらに、本実施例では、第1のブロック判定処理(図2のS22)で用いられる第1の機械学習モデルは、複数個の第1の文字画像データと複数個の第1の非文字画像データとを用いてトレーニングされた機械学習モデルであり、第2のブロック判定処理(図2のS25)で用いられる第2の機械学習モデルは、複数個の第1の文字画像データとは異なる複数個の第2の文字画像データと、複数個の第1の非文字画像データとは異なる複数個の第2の非文字画像データと、を用いてトレーニングされた機械学習モデルである。このように、第1の機械学習モデルと第2の機械学習モデルとは、それぞれ、互いに異なる画像を用いてトレーニングされたモデルである。この結果、第1の文字画素(本実施例では、背景よりも輝度が低い文字を構成する画素)と第2の文字画素(本実施例では背景よりも輝度が高い文字を構成する画素)とをそれぞれより適切に特定することができる。
以上の説明から解るように、上記実施例の最小成分データは、第1画像データの例であり、輝度画像データは、第2画像データの例である。また、第1の二値画像データ生成処理は、第1の抽出処理の例であり、第2の二値画像データ生成処理は、第2の抽出処理の例である。
B.変形例:
(1)上記実施例では、第1のブロック判定処理(図2のS21)と第2のブロック判定処理(図2のS24)とで、互いに異なる機械学習モデルを用いている。これに代えて、第1のブロック判定処理と第2のブロック判定処理とで同一の機械学習モデルが用いられても良い。例えば、実施例における、背景よりも輝度が低い文字を示す複数個の第1の文字画像と、背景よりも輝度が高い文字を示す第2の文字画像データと、背景よりも輝度が低い文字と背景よりも輝度が高い文字とのいずれも示さない複数個の非文字画像データと、を用いてトレーニングされて機械学習モデルが、2つのブロック判定処理で用いられても良い。
(2)記実施例では、第1のブロック判定処理で用いられる第1の機械学習モデルと、第2のブロック判定処理で用いられる第2の機械学習モデルとで、互いに異なる文字画像データおよび非文字画像データを用いてトレーニングされている。これに代えて、第1の機械学習モデルと第2の機械学習モデルとは、互いに同じ文字画像データおよび非文字画像データを用いてトレーニングされていても良い。この場合に、第1の機械学習モデルと第2の機械学習モデルとは、例えば、畳み込み層の数やプーリング層の数などのニューラスネットワークの構造が互いに異なっていても良い。
(3)上記実施例では、第1の二値画像データと、第2の二値画像データと、の両方を用いて、最終的な文字画素を特定している。これに代えて、第1の二値画像データと、第2の二値画像データと、の一方だけを用いて、文字画素を特定しても良い。例えば、第1の二値画像データのみを用いる場合には、図2のS24〜S27は、省略されても良い。
(4)第2の二値画像データ生成処理(図8)では、輝度画像データが用いられる(S200)。これに代えて、例えば、スキャンデータの対応する画素のRGB値に含まれる3個の成分値(R値、G値、B値)の平均値を、各画素の値とする平均成分値画像データが用いられても良い。
(5)上記実施例の第1の二値画像データ生成処理(図5)では、最小成分データが用いられる(S100)。これに代えて、最大成分データや反転最小成分データが用いられても良い。
最大成分データは、スキャンデータに含まれる複数個の画素に対応する複数個の値を含み、該複数個の値のそれぞれは、スキャンデータの対応する画素の最大成分値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)の関係が成り立つ。このために、最大成分データと反転最小成分データとは、両方とも、スキャンデータの各画素の値に含まれる複数個の成分値のうちの最大値に基づく値(最大値の反転値、あるいは、最大値そのもの)を、画素の値とする画像データである、と言うことができる。
図6に示すように、C、M、Y、K、Wの最大成分値Vmaxは、255、255、255、0、255となり、黒(K)を除いて同じ値となる。したがって、最大成分データや反転最小成分データにおいては、網点領域を構成する5種類の要素、すなわち、C、M、Y、Kの各ドットと、用紙の地色(白)と、のうちの4種類の要素(C、M、Yのドットと、用紙の地色(白))を示す画素間の値の差が抑制される。この結果、最大成分データや反転最小成分データを用いる場合には、最小成分データを用いる場合と同様に、網点を構成する画素が、文字候補画素として特定されることを抑制できる。
(6)上記実施例の第1の二値画像データ生成処理(図5)では、最小成分データが用いられる(S100)。これに代えて、例えば、輝度画像データが用いられても良い。すなわち、第1の二値画像データ生成処理では、背景よりも輝度が低い文字を構成する文字画素を特定するために、反転処理が行われない輝度画像データが用いられ、第2の二値画像データ生成処理では、背景よりも輝度が高い文字を構成する文字画素を特定するために、反転処理が行われた輝度画像データが用いられても良い。
(7)上記各実施例では、文字画素に対して、文字鮮鋭化処理が実行され(図2のS40)、非文字画素に対して、網点平滑化処理が実行される(図2のS30)。これに代えて、文字画素に対しては、文字の見栄えを向上するためのアンチエイリアス処理が実行されても良い。また、非文字画素に対しては、例えば、印刷時の色材の使用量を減らすために、色を飛ばす処理(白に変換する処理)が実行されても良い。一般的には、文字画素と、非文字画素と、に互いに異なる画像処理が実行されることが好ましい。あるいは、文字画素と非文字画素のいずれか一方に対して、特定の画像処理が実行され、他方に対して、該特定の画像処理が実行されなくても良い。
(8)上記実施例の図9のブロック判定処理では、全てのブロックBLについての判断の後に、ブロック判定データに、不明を示す値が残っている場合には(S460:YES)、CPU210は、S465にて、不明を示す値を、文字を示す値に設定する。これは、文字画素の一部が、誤って非文字画素として特定されることを抑制して、文字の一部がぼけるなどの不都合を避けるためである。例えば、非文字画素の一部が、誤って文字画素として特定されることを抑制して、網点が目立つなどの不都合を避けることを重視する場合には、CPU210は、S465にて、不明を示す値を、非文字を示す値に設定しても良い。
(9)上記実施例では、第1の二値画像データと、第2の二値画像データと、を用いて、最終的に、文字特定データが生成される(図2のS21〜S27)。これに代えて、第1の二値画像データと、第2の二値画像データと、第3の二値画像データと、を用いて、文字特定データが生成されても良い。例えば、図2のS26とS27の間で、上述した最大成分データを用いて生成され、該最大成分データが二値化されて、第3の二値画像データが生成される。そして、第3の二値画像データと、S22で生成された第1のブロック判定処理と、の論理積をとることによって、第3の文字特定データが生成される。そして、図2のS27では、第1の二値画像データを用いて生成された第1の文字特定データ(図2のS23)と、第2の二値画像データを用いて生成された第2の文字特定データ(図2のS26)と、第3の二値画像データを用いて生成された第3の文字特定データと、の論理和を取ることによって、最終的な文字特定データが生成されても良い。これによって、文字画素の特定漏れをさらに抑制することができる。
(10)上記実施例のブロック判定処理では、縦(L×M)画素×横(L×M)画素の注目ブロックを、M画素ずつずらしながら、文字ブロックであるか否かを判断するので、スキャン画像SI上に配置される複数個のブロックは互いに重複している(図10)。これに代えて、複数個のブロックが互いに重複しないように、スキャン画像SI上に複数個のブロックが配置されても良い。
(11)上記実施例のブロック判定処理では、CPU210は、注目ブロックが、文字ブロック、非文字ブロック、不明ブロックのいずれであるかを判断している。これに代えて、CPU210は、注目ブロックが、文字ブロックと非文字ブロックとのいずれであるかを判断しても良い。この場合には、例えば、S415で用いる閾値TH1と、S425で用いる閾値TH2と、を同じ値にすれば良い。例えば、TH1=TH2=50%とすれば良い。
(12)上記実施例では、上述したように、図9のS420、S430に示すように、注目ブロックが文字ブロックまたは非文字ブロックであると判断されると、ブロック判定データにおいて、注目ブロック内の全ての画素の値が、判断結果に応じて設定される。これに代えて、ブロック判定データにおいて、注目ブロック内のN個の画素のうち、不明を示す値を有する画素の値だけが、判断結果に応じて設定されても良い。すなわち、互いに重複する第1のブロックと第2のブロックとの両方が、不明ブロック以外のブロック(すなわち、文字ブロックまたは非文字ブロック)であると判断されるとする。この場合には、第1のブロックと第2のブロックの重複領域については、第1のブロックと第2のブロックとのうち、判断の処理順序が先のブロックについての判断結果が優先されても良い。
(13)上記実施例では、対象画像データは、スキャンデータであるが、これに限られない。対象画像データは、2次元イメージセンサを備えるデジタルカメラによって印刷物を読み取ることによって生成されても良い。また、対象画像データは、描画作成や文書作成などのアプリケーションプログラムを用いて作成された画像データであっても良い。
(14)図2の画像処理を実現する画像処理装置は、複合機200に限らず、種々の装置であってよい。例えば、スキャナやデジタルカメラが、自身で生成された画像データを用いて、プリンタに供給するための印刷データを生成するために、図2の画像処理を実行しても良い。また、例えば、スキャナやプリンタと通信可能な接続される端末装置(例えば、端末装置100)やサーバ(図示省略)が、スキャナから取得したスキャンデータを用いて、図2の画像処理を実行して、印刷データを生成し、該印刷データをプリンタに供給しても良い。また、ネットワークを介して互いに通信可能な複数個のコンピュータ(例えば、クラウドサーバ)が、画像処理に要する機能を一部ずつ分担して、全体として、画像処理を実行してもよい。この場合、複数個のコンピュータの全体が、画像処理装置の例である。
(15)上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図9のS410の機械学習モデルを用いて文字確率Txrを算出する処理は、ASICなどの専用のハードウェアによって、実行されても良い。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。