(57)【要約】【課題】文字を構成する文字画素を精度良く特定する。【解決手段】画像処理装置は、対象画像を示す対象画像データを取得する画像取得部と、対象画像データを用いて、文字を構成する文字画素の候補である複数個の文字候補画素を抽出する候補画素抽出部と、対象画像データを用いて、対象画像上に配置される複数個のブロックのそれぞれが文字を示す文字ブロックであるか否かをブロックごとに判断する判断部であって、ブロックごとの判断は、文字を示す複数個の文字画像データと文字を示さない複数個の非文字画像データとを用いてトレーニングされた機械学習モデルを用いて実行される、判断部と、判断部による判断結果を用いて、複数個の文字候補画素の中から、文字を示す複数個の文字画素を特定する文字画素特定部と、を備える。【選択図】  図２
2019114927.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置であって、
対象画像を示す対象画像データを取得する画像取得部と、
対象画像データを用いて、文字を構成する文字画素の候補である複数個の文字候補画素を抽出する候補画素抽出部と、
前記対象画像データを用いて、前記対象画像上に配置される複数個のブロックのそれぞれが文字を示す文字ブロックであるか否かをブロックごとに判断する判断部であって、前記ブロックごとの判断は、文字を示す複数個の文字画像データと文字を示さない複数個の非文字画像データとを用いてトレーニングされた機械学習モデルを用いて実行される、前記判断部と、
前記判断部による判断結果を用いて、前記複数個の文字候補画素の中から、文字を示す複数個の文字画素を特定する文字画素特定部と、
を備える画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記候補画素抽出部は、前記対象画像データに対して前記対象画像内のエッジの強度を調整するエッジ調整処理を実行することなく、前記複数個の文字候補画素を抽出する、画像処理装置。
【請求項３】
請求項１または２に記載の画像処理装置であって、
前記対象画像データは、複数個の画素の色値を含み、
前記色値は、複数個の成分値を含み、
前記候補画素抽出部は、
前記対象画像データを用いて、前記複数個の画素の色値に対応する複数個の第１値を含む第１画像データであって、前記複数個の第１値のそれぞれは、対応する前記色値の複数個の成分値のうちの最小値および最大値のいずれかに基づく値である、前記第１の画像データを生成しと、
前記第１画像データを用いて前記複数個の文字候補画素を抽出する、画像処理装置。
【請求項４】
請求項１〜３のいずれかに記載の画像処理装置であって、
前記候補画素抽出部は、
前記対象画像データを用いて、前記対象画像内の複数個の画素のうちの対応する画素の輝度を示す複数個の第２値を含む第２画像データを生成し、
基準よりも高い輝度を有する画素を前記文字候補画素として抽出するように、前記第２画像データを二値化する、画像処理装置。
【請求項５】
請求項１〜４のいずれかに記載の画像処理装置であって、
前記候補画素抽出部は、
第１の抽出処理を実行して、複数個の第１の前記文字候補画素を抽出し、
前記第１の抽出処理とは異なる第２の抽出処理を実行して、複数個の第２の前記文字候補画素を抽出し、
前記文字特定部は、
前記判断部による判断結果を用いて、前記複数個の第１の文字候補画素の中から、複数個の第１の画素を特定し、
前記判断部による判断結果を用いて、前記複数個の第２の文字候補画素の中から、複数個の第２の画素を特定し、
前記複数個の第１の画素と前記複数個の第２の画素とを含む前記複数個の文字画素を特定する、画像処理装置。
【請求項６】
請求項５に記載の画像処理装置であって、
前記判断部は、
第１の前記機械学習モデルを用いて、前記複数個のブロックのそれぞれが前記文字ブロックあるか否かをブロックごとに判断し、
前記第１の機械学習モデルとは異なる第２の前記機械学習モデルを用いて、前記複数個のブロックのそれぞれが前記文字ブロックあるか否かをブロックごとに判断し、
前記文字特定部は、
前記第１の機械学習モデルを用いた判断結果を用いて、前記複数個の第１の画素を特定し、
前記第２の機械学習モデルを用いて判断結果を用いて、前記第２の画素を特定する、画像処理装置。
【請求項７】
請求項６に記載の画像処理装置であって、
前記第１の機械学習モデルは、複数個の第１の前記文字画像データと、複数個の第１の前記非文字画像データと、を用いてトレーニングされた前記機械学習モデルであり、
前記第２の機械学習モデルは、前記複数個の第１の文字画像とは異なる複数個の第２の前記文字画像データと、前記複数個の第１の非文字画像とは異なる複数個の第２の前記非文字画像データと、を用いてトレーニングされた前記機械学習モデルである、画像処理装置。
【請求項８】
請求項７に記載の画像処理装置であって、
前記対象画像データは、複数個の画素の色値を含み、
前記色値は、複数個の成分値を含み、
前記第１の抽出処理は、
前記対象画像データを用いて、前記複数個の画素の色値に対応する複数個の第１値を含む第１画像データであって、前記複数個の第１値のそれぞれは、対応する前記色値の複数個の成分値のうちの最小値および最大値のいずれかに基づく値である、前記第１の画像データを生成する処理と、
前記第１画像データを二値化することによって前記複数個の第１の画素を特定する処理と、
を含み、
前記第２の抽出処理は、
前記対象画像データを用いて、前記対象画像内の複数個の画素のうちの対応する画素の輝度を示す複数個の第２値を含む第２画像データを生成する処理と、
基準よりも高い輝度を有する画素を前記文字候補画素として特定するように、前記第２画像データを二値化することによって前記複数個の第２の画素を特定する処理と、
を含み、
前記第１の機械学習モデルは、背景よりも輝度が低い文字である第１の文字を示す前記複数個の第１の文字画像データと、前記第１の文字を示さない前記複数個の第１の非文字画像データと、を用いてトレーニングされた前記機械学習モデルであり、
前記第２の機械学習モデルは、背景よりも輝度が高い文字である第２の文字を示す前記複数個の第２の文字画像データと、前記第２の文字を示さない前記複数個の第２の非文字画像データと、を用いてトレーニングされた前記機械学習モデルである、画像処理装置。
【請求項９】
請求項１〜８のいずれかに記載の画像処理装置であって、
前記対象画像データのうち、特定済みの前記複数個の文字画素の値に対して第１の画像処理を実行し、前記複数個の文字画素とは異なる画素の値に対して前記第１の画像処理とは異なる第２の画像処理を実行して、画像処理済みの前記対象画像データを生成する画像処理部を備える、画像処理装置。
【請求項１０】
請求項９に記載の画像処理装置であって、
前記画像処理済みの前記対象画像データを用いて、印刷データを生成する印刷データ生成部を備える、画像処理装置。
【請求項１１】
コンピュータプログラムであって、
対象画像を示す対象画像データを取得する画像取得機能と、
対象画像データを用いて、文字を構成する文字画素の候補である複数個の文字候補画素を抽出する候補画素抽出機能と、
前記対象画像データを用いて、前記対象画像上に配置される複数個のブロックのそれぞれが文字を示す文字ブロックであるか否かをブロックごとに判断する判断機能であって、前記ブロックごとの判断は、文字を示す複数個の文字画像データと文字を示さない複数個の非文字画像データとを用いてトレーニングされた機械学習モデルを用いて実行される、前記判断機能と、
前記判断機能による判断結果を用いて、前記複数個の文字候補画素の中から、文字を示す複数個の文字画素を特定する文字画素特定機能と、
をコンピュータに実現させるコンピュータプログラム。
【請求項１２】
画像処理方法であって、
対象画像を示す対象画像データを取得する画像取得工程と、
対象画像データを用いて、文字を構成する文字画素の候補である複数個の文字候補画素を抽出する候補画素抽出工程と、
前記対象画像データを用いて、前記対象画像上に配置される複数個のブロックのそれぞれが文字を示す文字ブロックであるか否かをブロックごとに判断する判断工程であって、前記ブロックごとの判断は、文字を示す複数個の文字画像データと文字を示さない複数個の非文字画像データとを用いてトレーニングされた機械学習モデルを用いて実行される、前記判断工程と、
前記判断工程における判断結果を用いて、前記複数個の文字候補画素の中から、文字を示す複数個の文字画素を特定する文字画素特定工程と、
を備える画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、画像データに対する画像処理に関し、特に、画像内の文字画素を特定するための画像処理に関する。
【背景技術】
【０００２】
画像データ、例えば、イメージセンサを用いて印刷物を読み取ることによって生成される画像データでは、該画像データによって示される画像内に、印刷物に含まれる網点が現れる。このような網点を構成する画素は、画像内の文字画素を特定する際に、文字画素として誤って特定されやすい。
【０００３】
特許文献１に開示された画像処理装置は、画素ごとにエッジであるか否かを判定するエッジ判定と、画素ごとに網点であるかを判定する網点判定と、を実行する。画像処理装置は、エッジであり、かつ、網点ではない画素を、文字を示す画素として特定する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−１６４９２８号公報
【特許文献２】特開２０１６−３８７３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
このように、対象画像内において、文字を構成する文字画素を精度良く特定できる技術が求められていた。
【０００６】
本明細書は、対象画像内の文字画素を精度良く特定できる技術を開示する。
【課題を解決するための手段】
【０００７】
本明細書に開示された技術は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の適用例として実現することが可能である。
【０００８】
［適用例１］画像処理装置であって、対象画像を示す対象画像データを取得する画像取得部と、対象画像データを用いて、文字を構成する文字画素の候補である複数個の文字候補画素を抽出する候補画素抽出部と、前記対象画像データを用いて、前記対象画像上に配置される複数個のブロックのそれぞれが文字を示す文字ブロックであるか否かをブロックごとに判断する判断部であって、前記ブロックごとの判断は、文字を示す複数個の文字画像データと文字を示さない複数個の非文字画像データとを用いてトレーニングされた機械学習モデルを用いて実行される、前記判断部と、前記判断部による判断結果を用いて、前記複数個の文字候補画素の中から、文字を示す複数個の文字画素を特定する文字画素特定部と、を備える画像処理装置。
【０００９】
上記構成によれば、機械学習モデルを用いて文字ブロックであるか否かがブロックごとに判断される判断結果を用いて、複数個の文字候補画素の中から、複数個の文字画素が特定される。この結果、対象画像内の文字画素を精度良く特定できる。
【００１０】
なお、本明細書に開示される技術は、種々の形態で実現することが可能であり、例えば、複合機、スキャナ、プリンタ、画像処理方法、これら装置の機能または上記方法を実現するためのコンピュータプログラム、そのコンピュータプログラムを記録した記録媒体、等の形態で実現することができる。
【図面の簡単な説明】
【００１１】
【図１】画像処理装置の一例である複合機２００の構成を示すブロック図である。
【図２】画像処理のフローチャートである。
【図３】画像処理で用いられる画像の一例を示す第１の図である。
【図４】文字特定処理で用いられる画像の一例を示す図である。
【図５】第１の二値画像データ生成処理のフローチャートである。
【図６】スキャンデータの最小成分値と最大成分値の説明図である。
【図７】画像処理に用いられる画像の一例を示す第２の図である。
【図８】第２の二値画像データ生成処理のフローチャートである。
【図９】ブロック判定処理のフローチャートである。
【図１０】スキャン画像ＳＩ上に配置される複数個のブロックＢＬの説明図である。
【図１１】ブロックＢＬごとの判断の一例を示す図である。
【図１２】ブロック判定データにおける画素の値の設定の一例を示す図である。
【図１３】実施例の効果について説明する図である。
【発明を実施するための形態】
【００１２】
Ａ．実施例：
Ａ−１：複合機２００の構成
実施の形態を実施例に基づき説明する。図１は、画像処理装置の一例である複合機２００の構成を示すブロック図である。複合機２００は、画像処理装置を制御するプロセッサであるＣＰＵ２１０と、ＤＲＡＭなどの揮発性記憶装置２２０と、フラッシュメモリやハードディスクドライブなどの不揮発性記憶装置２３０と、液晶ディスプレイなどの表示部２４０と、液晶ディスプレイと重畳されたタッチパネルやボタンを含む操作部２５０と、ユーザの端末装置１００などの外部装置と通信を行うためのインタフェース（通信ＩＦ）２７０と、印刷実行部２８０と、読取実行部２９０と、を備えている。
【００１３】
読取実行部２９０は、ＣＰＵ２１０の制御に従って、一次元イメージセンサを用いて原稿を光学的に読み取ることによってスキャンデータを生成する。印刷実行部２８０は、ＣＰＵ２１０の制御に従って、複数種類のトナー、具体的には、シアン（Ｃ）、マゼンタ（Ｍ）、イエロ（Ｙ）、ブラック（Ｋ）のトナーを、色材として用いて、レーザ方式で用紙などの印刷媒体に画像を印刷する。具体的には、印刷実行部２８０は、感光ドラムを露光して静電潜像を形成し、該静電潜像にトナーを付着させてトナー像を形成する。印刷実行部２８０は、感光ドラム上に形成されたトナー像を用紙に転写する。なお、変形例では、印刷実行部２８０は、色材としてのインクを吐出して、用紙上に画像を形成するインクジェット方式の印刷実行部であっても良い。
【００１４】
揮発性記憶装置２２０は、ＣＰＵ２１０が処理を行う際に生成される種々の中間データを一時的に格納するバッファ領域を提供する。不揮発性記憶装置２３０には、コンピュータプログラムＰＧが格納されている。コンピュータプログラムＰＧは、ＣＰＵ２１０に複合機２００の制御を実現させる制御プログラムである。本実施例では、コンピュータプログラムＰＧは、複合機２００の製造時に、不揮発性記憶装置２３０に予め格納される形態で提供される。これに代えて、コンピュータプログラムＰＧは、サーバからダウンロードされる形態で提供されても良く、ＤＶＤ−ＲＯＭなどに格納される形態で提供されてもよい。ＣＰＵ２１０は、コンピュータプログラムＰＧを実行することにより、後述する画像処理を実行することができる。
【００１５】
Ａ−２：画像処理
図２は、画像処理のフローチャートである。この画像処理は、例えば、ユーザが、読取実行部２９０の原稿台に、原稿を載置して、コピーの実行指示を入力した場合に実行される。この画像処理は、原稿を、読取実行部２９０を用いて読み取ることによって生成されるスキャンデータを取得し、該スキャンデータを用いて、原稿を示す印刷データを生成することで、いわゆる原稿のコピーを実現する処理である。
【００１６】
Ｓ１０では、ＣＰＵ２１０は、ユーザが原稿台に設置した原稿を、読取実行部２９０を用いて読み取ることによって、対象画像データとしてのスキャンデータを生成する。原稿は、例えば、複合機２００、あるいは、図示しないプリンタによって画像が印刷された印刷物である。生成されたスキャンデータは、揮発性記憶装置２２０（図１）のバッファ領域に格納される。スキャンデータは、複数個の画素の値を含み、複数個の画素の値のそれぞれは、画素の色をＲＧＢ表色系の色値（ＲＧＢ値とも呼ぶ）で表す。すなわち、スキャンデータは、ＲＧＢ画像データである。１個の画素のＲＧＢ値は、例えば、赤色（Ｒ）と緑色（Ｇ）と青色（Ｂ）との３個の色成分の値（以下、Ｒ値、Ｇ値、Ｂ値とも呼ぶ）を含んでいる。本実施例では、各成分値の階調数は、２５６階調である。
【００１７】
ＲＧＢ画像データであるスキャンデータは、ＲＧＢ表色系を構成する３個の色成分に対応する３個の成分画像データ（Ｒ成分画像データ、Ｇ成分画像データ、Ｂ成分画像データ）を含んでいると言うことができる。各成分画像データは、１種類の色成分の値を、画素の値とする画像データである。
【００１８】
図３は、画像処理で用いられる画像の一例を示す第１の図である。図３（Ａ）には、スキャンデータによって示されるスキャン画像ＳＩの一例が示されている。スキャン画像ＳＩは、複数個の画素を含む。該複数個の画素は、第１方向Ｄ１と、第１方向Ｄ１と直交する第２方向Ｄ２と、に沿って、マトリクス状に配置されている。
【００１９】
図３（Ａ）のスキャン画像ＳＩは、原稿の用紙の地色を示す白色の背景Ｂｇ１と、３個の文字とは異なるオブジェクトＯｂ１〜Ｏｂ３と、４個の文字Ｏｂ４〜Ｏｂ７と、４個の文字Ｏｂ４〜Ｏｂ７の背景Ｂｇ２、Ｂｇ３と、を含んでいる。文字とは異なるオブジェクトは、例えば、写真である。背景Ｂｇ２、Ｂｇ３は、白色とは異なる色を有する均一な画像である。背景Ｂｇ２上の文字Ｏｂ４、Ｏｂ５は、背景Ｂｇ２よりも濃い色を有する文字、すなわち、背景Ｂｇ２よりも輝度が低い文字である。背景Ｂｇ３上の文字Ｏｂ６、Ｏｂ７は、背景Ｂｇ３よりも薄い色を有する文字、すなわち、背景Ｂｇ３よりも輝度が高い文字である。
【００２０】
Ｓ２０では、ＣＰＵ２１０は、スキャンデータに対して、文字特定処理を実行する。文字特定処理は、スキャン画像ＳＩ内の複数個の画素を、文字を示す複数個の文字画素と、文字を示さない複数個の非文字画素と、に分類することによって、文字画素を特定する処理である。
【００２１】
文字特定処理によって、例えば、文字画素の値が「１」とされ、非文字画素の値が「０」とされた二値画像データ（文字特定データとも呼ぶ）が生成される。図３（Ｂ）には、文字特定データによって示される文字特定画像ＴＩの一例が示されている。この文字特定画像ＴＩには、スキャン画像ＳＩ内の４個の文字Ｏｂ４〜Ｏｂ７を構成する複数個の画素が、文字画素Ｔｐ４〜Ｔｐ７として、特定されている。文字特定処理の詳細は、後述する。
【００２２】
Ｓ３０では、ＣＰＵ２１０は、スキャンデータに対して、網点平滑化処理を実行して、平滑化画像を示す平滑化画像データを生成する。具体的には、ＣＰＵ２１０は、スキャンデータに含まれる複数個の非文字画素の値のそれぞれに対して、ガウスフィルタなどの平滑化フィルタを用いた平滑化処理を実行して、平滑化処理済みの複数個の非文字画素の値を算出する。平滑化処理の対象となる非文字画素は、Ｓ２０の分類処理によって生成された文字特定データを参照して特定される。ＣＰＵ２１０は、スキャンデータに含まれる複数個の文字画素の値と、平滑化処理済みの複数個の非文字画素の値と、を含む平滑化画像データを生成する。
【００２３】
図３（Ｃ）には、平滑化画像データによって示される平滑化画像ＧＩが示されている。平滑化画像ＧＩは、白色の背景Ｂｇ１ｇと、スキャン画像ＳＩ内のオブジェクトＯｂ１〜Ｏｂ７、背景Ｂｇ２、Ｂｇ３が平滑化されたオブジェクトＯｂ１ｇ〜Ｏｂ７ｇ、背景Ｂｇ２ｇ、Ｂｇ３ｇと、を含んでいる。これらのオブジェクトＯｂ１ｇ〜Ｏｂ７ｇ、背景Ｂｇ２ｇ、Ｂｇ３ｇのうち、文字Ｏｂ４ｇ〜Ｏｂ７ｇ以外の部分（非文字部分とも呼ぶ）は、スキャン画像ＳＩと比較して、平滑化されている。
【００２４】
Ｓ４０では、ＣＰＵ２１０は、平滑化画像データに対して、文字鮮鋭化処理を実行して、処理済み画像データを生成する。具体的には、ＣＰＵ２１０は、平滑化画像データに含まれる複数個の文字画素の値のそれぞれに対して、アンシャープマスク処理や鮮鋭化フィルタを適用する処理などの鮮鋭化処理を実行して、鮮鋭化処理済みの複数個の文字画素の値を算出する。鮮鋭化処理の対象となる文字画素は、Ｓ２０の分類処理によって生成された文字特定データを参照して特定される。そして、ＣＰＵ２１０は、平滑化画像データに含まれる複数個の非文字画素の値（平滑化処理済みの複数個の非文字画素の値）と、鮮鋭化処理済みの複数個の文字画素の値と、を含む処理済み画像データを生成する。平滑化画像データに含まれる複数個の文字画素の値は、平滑化処理の対象ではないので、スキャンデータに含まれる複数個の文字画素の値と同じである。したがって、本ステップの文字鮮鋭化処理は、スキャンデータに含まれる複数個の文字画素の値に対して実行される、とも言うことができる。
【００２５】
図３（Ｄ）には、処理済み画像データによって示される処理済み画像ＦＩが示されている。処理済み画像ＦＩは、白色の背景Ｂｇ１ｆと、スキャン画像ＳＩ内のオブジェクトＯｂ１〜Ｏｂ７、背景Ｂｇ２、Ｂｇ３に対応するオブジェクトＯｂ１ｆ〜Ｏｂ７ｆ、背景Ｂｇ２ｆ、Ｂｇ３ｆを含んでいる。これらのオブジェクトＯｂ１ｆ〜Ｏｂ７ｆ、背景Ｂｇ２ｆ、Ｂｇ３ｆのうち、文字Ｏｂ４ｆ〜Ｏｂ７ｆのエッジは、スキャン画像ＳＩ内の文字Ｏｂ４〜Ｏｂ７や、平滑化画像ＧＩ内の文字Ｏｂ４ｇ〜Ｏｂ７ｇと比較して、鮮鋭化されている。また、文字以外のオブジェクトＯｂ１ｆ〜Ｏｂ３ｆ、背景Ｂｇ２ｆ、Ｂｇ３ｆのエッジは、鮮鋭化されていない。
【００２６】
以上の説明から解るように、処理済み画像ＦＩ内のオブジェクトＯｂ１ｆ〜Ｏｂ７ｆ、背景Ｂｇ２ｆ、Ｂｇ３ｆは、鮮鋭化された文字と、平滑化された非文字を含む。
【００２７】
Ｓ５０では、ＣＰＵ２１０は、処理済み画像データを用いて印刷データを生成する印刷データ生成処理を実行する。具体的には、ＲＧＢ画像データである処理済み画像データに対して色変換処理が実行されて、印刷に用いられる色材に対応する色成分（Ｃ、Ｍ、Ｙ、Ｋの成分）を有する色値であるＣＭＹＫ値で画素ごとの色を示すＣＭＹＫ画像データが生成される。色変換処理は、例えば、公知のルックアップテーブルを参照して実行される。ＣＭＹＫ値画像データに対して、ハーフトーン処理が実行されて、印刷に用いられる色材ごと、かつ、画素ごとに、ドットの形成状態を示すドットデータが生成される。ドットの形成状態は、例えば、ドット有、ドット無の２種類の状態や、大ドット、中ドット、小ドット、ドット無の４種類の状態を取り得る。ハーフトーン処理は、例えば、ディザ法や、誤差拡散法に従って実行される。該ドットデータは、印刷時に用いられる順に並べ替えられ、該ドットデータに、印刷コマンドが付加されることによって、印刷データが生成される。
【００２８】
Ｓ６０では、ＣＰＵ２１０は、印刷処理を実行して、画像処理を終了する。具体的には、ＣＰＵ２１０は、印刷データを印刷実行部２８０に供給して、印刷実行部２８０に処理済み画像を印刷させる。
【００２９】
以上説明した画像処理によれば、スキャンデータのうち、特定済みの複数個の文字画素の値に対して第１の画像処理（具体的には、エッジ鮮鋭化処理）が実行され（Ｓ４０）、複数個の非文字画素の値に対して第１の画像処理とは異なる第２の画像処理（具体的には、網点平滑化処理）が実行され（Ｓ３０）、処理済み画像データが生成される。この結果、文字画素の値と、文字画素とは異なる画素の値と、に対して、互いに異なる画像処理が実行されるので、スキャンデータに対する適切な画像処理を実現できる。なお、変形例では、Ｓ４０の文字鮮鋭化処理が先に実行され、その後に、Ｓ３０の網点平滑化処理が実行されても良い。
【００３０】
より具体的には、鮮鋭化処理済みの複数個の文字画素の値と、平滑化処理済みの複数個の非文字画素の値と、を含む処理済み画像データが生成される（Ｓ３０、Ｓ４０）。この結果、見栄えの良い処理済み画像ＦＩを示す処理済み画像データを生成することができる。
【００３１】
例えば、図３（Ｄ）の処理済み画像ＦＩに示すように、処理済み画像データでは、文字画素の値には、鮮鋭化処理済みの値が用いられている。この結果、処理済み画像ＦＩの文字がシャープに見えるので、例えば、印刷される処理済み画像ＦＩの見栄えを向上することができる。
【００３２】
また、処理済み画像データでは、処理済み画像ＦＩ内の背景Ｂｇ２や、写真などの文字とは異なるオブジェクトを構成する非文字画素の値には、平滑化処理済みの値が用いられている。この結果、処理済み画像ＦＩの文字とは異なる部分に、例えば、モアレの原因となる網点が表れることを抑制できるので、印刷される処理済み画像ＦＩにモアレなどの不具合が発生することを抑制できる。この結果、印刷される処理済み画像ＦＩの見栄えを向上することができる。また、写真内のエッジが過度に強調されることが抑制されるので、画像ＦＩのさらに印刷される処理済み画像ＦＩの見栄えを向上することができる。
【００３３】
例えば、スキャンデータの生成に用いられた原稿は、画像が印刷された印刷物である。このため、例えば、原稿内の白とは異なる色を有する背景Ｂｇ２などの均一な部分は、画像を形成するドットレベルでみると、網点を形成している。網点は、複数個のドットと、ドットが配置されていない部分（原稿の地色を示す部分）と、を含む。このために、スキャン画像ＳＩ内の背景Ｂｇ２、Ｂｇ３を示す領域には、画素レベルでみると、網点が示されている。網点内のドットは、原稿の印刷時に用いられるディザマトリクスなどの影響によって、周期性を持って並んでいる。このためにスキャンデータを用いて印刷を行うと、ハーフトーン処理前の元画像（スキャン画像ＳＩ）内に存在している網点のドットの周期成分と、印刷画像を構成する網点のドットの周期成分と、が干渉して、モアレが表れやすい。本実施例の処理済み画像ＦＩでは、平滑化処理によって、元画像（スキャン画像ＳＩ）内のエッジとは異なる部分のドットの周期成分が低減される。この結果、処理済み画像データを用いて、処理済み画像ＦＩを印刷する場合に、例えば、印刷される処理済み画像ＦＩにモアレが発生することを抑制できる。
【００３４】
特に、上記画像処理では、処理済み画像データを用いて、印刷データが生成される（Ｓ５０）ので、例えば、印刷される処理済み画像ＦＩに発生しやすいモアレを抑制可能な適切な印刷データを生成することができる。
【００３５】
Ａ−３：文字特定処理
図２のＳ２０の文字特定処理について説明する。Ｓ２１では、ＣＰＵ２１０は、スキャンデータを用いて、第１の二値画像データ生成処理を実行して、第１の二値画像データを生成する。第１の二値画像データは、文字候補画素と、文字候補画素とは異なる画素と、を示す二値データである。文字候補画素は、文字特定処理にて特定すべき文字画素の候補である。ここで、第１の二値画像データによって示される文字候補画素を第１の文字候補画素とも呼ぶ。
【００３６】
図４は、文字特定処理で用いられる画像の一例を示す図である。図４（Ａ）には、第１の二値画像データによって示される第１の二値画像ＣＩ１の一例が示されている。第１の二値画像ＣＩ１において黒色の部分は、文字候補画素として特定された画素を示し、白色の部分は、文字候補画素とは異なる画素を示す。
【００３７】
第１の二値画像ＣＩ１では、スキャン画像ＳＩ内の文字とは異なるオブジェクトＯｂ１〜Ｏｂ３を構成する複数個の画素Ｃｐ１〜Ｃｐ３と、文字Ｏｂ４、Ｏｂ５を構成する複数個の画素Ｃｐ４、Ｃｐ５と、背景Ｂｇ３と文字Ｏｂ６、Ｏｂ７との全体を構成する画素Ｃｐｂと、が、第１の文字候補画素として特定されている。また、第１の二値画像ＣＩ１では、文字Ｏｂ６、Ｏｂ７を構成する画素が、背景Ｂｇ３から分離されて特定されてはいない。このように、特定される第１の文字候補画素は、文字とは異なるオブジェクトや背景を構成する画素を含み得る。これは、１種類の二値化処理だけでは、全ての文字候補画素を抽出することは困難であり、また、文字を構成しない画素を排除することも困難であるためである。第１の二値画像データ生成処理の詳細は、後述する。本実施例では、第１の二値画像データ生成処理では、背景よりも輝度が低い文字を構成する文字画素を含む第１の文字候補画素が抽出される。
【００３８】
Ｓ２２では、ＣＰＵ２１０は、スキャンデータに対して、第１のブロック判定処理を実行して、文字を示す文字ブロックと、文字を示さない非文字ブロックと、を示す二値画像データ（第１のブロック判定データとも呼ぶ）を生成する。第１のブロック判定データは、文字ブロックを構成する画素の値が「１」とされ、非文字ブロックを個性する画素の値が「０」とされた二値データである。第１のブロック判定処理は、スキャンデータを用いて、スキャン画像ＳＩ内に配置される複数個のブロックのそれぞれが、文字を示す文字ブロックであるか否かをブロックごとに判断する処理である。１個のブロックは、Ｎ個（Ｎは２以上の整数）の画素を含む矩形の領域である。第１のブロック判定処理の詳細は後述する。
【００３９】
図４（Ｂ）には、第１のブロック判定データによって示される第１のブロック判定画像ＢＩ１の一例が示されている。この第１のブロック判定画像ＢＩ１には、スキャン画像ＳＩ内の文字Ｏｂ４、Ｏｂ５が配置された領域に対応する文字ブロックＢｋ４、Ｂｋ５が特定されている。このように、第１のブロック判定データによって特定される文字ブロックは、文字とは異なるオブジェクトを含む領域に対応するブロックを含まない。第１のブロック判定データによって特定される文字ブロックは、背景よりも輝度が低い文字を示すブロックである。このために、第１のブロック判定画像ＢＩ１では、背景よりも輝度が高い文字Ｏｂ６、Ｏｂ７が配置された領域に対応する文字ブロックＢｋ６、Ｂｋ７（図４（Ｄ））が特定されていない。
【００４０】
Ｓ２３では、ＣＰＵ２１０は、Ｓ２１にて生成済みの第１の二値画像データと、Ｓ２２にて生成済みの第１のブロック判定データと、を用いて、論理積合成処理を実行する。これによって、複数個の第１の文字画素を示す第１の文字特定データが生成される。具体的には、ＣＰＵ２１０は、第１の二値画像データと、第１のブロック判定データと、の各画素の論理積を取ることによって、第１の文字特定データとしての二値画像データを生成する。換言すれば、ＣＰＵ２１０は、スキャン画像ＳＩ内の複数個の画素のうち、Ｓ２１において第１の文字候補画素として特定され、かつ、Ｓ２２において特定済みの文字ブロック内に位置する画素を、第１の文字画素として特定する。ＣＰＵ２１０は、スキャン画像ＳＩ内の複数個の画素のうち、第１の文字候補画素として特定されない画素と、非文字ブロック内の画素とを、第１の文字画素として特定しない。
【００４１】
図４（Ａ）の第１の二値画像ＣＩ１に示すように、第１の二値画像データによって特定される複数個の第１の文字候補画素は、スキャン画像ＳＩ内の文字Ｏｂ４、Ｏｂ５を構成する画素Ｃｐ４、Ｃｐ５の他に、他のオブジェクトＯｂ１〜Ｏｂ３や背景Ｂｇ３を構成する画素Ｃｐ１〜Ｃｐ３、Ｃｐｂを含んでいる。図４（Ｂ）の第１のブロック判定画像ＢＩ１に示すように、第１の二値画像データと第１のブロック判定データとの論理積を取ることで、第１の文字特定データでは、スキャン画像ＳＩ内の文字Ｏｂ４、Ｏｂ５を構成する画素Ｃｐ４、Ｃｐ５が、選択的に第１の文字画素として特定される。すなわち、複数個の第１の文字画素は、スキャン画像ＳＩ内の文字Ｏｂ４、Ｏｂ５を構成する画素Ｃｐ４、Ｃｐ５を含み、他のオブジェクトＯｂ１〜Ｏｂ３や背景Ｂｇ３を構成する画素Ｃｐ１〜Ｃｐ３、Ｃｐｂを含まない
【００４２】
Ｓ２４では、ＣＰＵ２１０は、スキャンデータを用いて、第２の二値画像データ生成処理を実行して、第２の二値画像データを生成する。第２の二値画像データは、文字候補画素と、文字候補画素とは異なる画素と、を示す二値データである。ここで、第２の二値画像データによって示される文字候補画素を第２の文字候補画素とも呼ぶ。
【００４３】
図４（Ｃ）には、第２の二値画像データによって示される第２の二値画像ＣＩ２の一例が示されている。第２の二値画像ＣＩ２において黒色の部分は、第２の文字候補画素として特定された画素を示し、白色の部分は、文字候補画素とは異なる画素を示す。図４（Ｃ）についても同様である。
【００４４】
第２の二値画像ＣＩ２では、背景Ｂｇ３よりも輝度が高い文字Ｏｂ６、Ｏｂ７と、背景Ｂｇ１ｇを構成するＣｐ８と、が、第２の文字候補画素として特定されている。また、第１の二値画像ＣＩ１では、文字Ｏｂ４、Ｏｂ５を構成する画素が特定されていない。このように、第２の文字候補画素は、第１の文字候補画素と同様に、文字とは異なるオブジェクトや背景を構成する画素を含み得る。第２の二値画像データ生成処理の詳細は、後述する。本実施例では、第２の二値画像データ生成処理では、背景よりも輝度が高い文字を構成する文字画素を含む第２の文字候補画素が抽出される。
【００４５】
Ｓ２５では、ＣＰＵ２１０は、スキャンデータに対して、第２のブロック判定処理を実行して、文字を示す文字ブロックと、文字を示さない非文字ブロックと、を示す二値画像データ（第２のブロック判定データとも呼ぶ）を生成する。第２のブロック判定データは、第１のブロック判定データと同様に、文字ブロックを構成する画素の値が「１」とされ、非文字ブロックを個性する画素の値が「０」とされた二値データである。第２のブロック判定処理は、第１のブロック判定処理と同様に、スキャンデータを用いて、スキャン画像ＳＩ内に配置される複数個のブロックのそれぞれが、文字を示す文字ブロックであるか否かをブロックごとに判断する処理である。第２のブロック判定処理の詳細は後述する。
【００４６】
図４（Ｄ）には、第２のブロック判定データによって示される第２のブロック判定画像ＢＩ２の一例が示されている。この第２のブロック判定画像ＢＩ２には、スキャン画像ＳＩ内の文字Ｏｂ６、Ｏｂ７が配置された領域に対応する文字ブロックＢｋ６、Ｂｋ７が特定されている。このように、第２のブロック判定データによって特定される文字ブロックは、文字とは異なるオブジェクトを含む領域に対応するブロックを含まない。第２のブロック判定データによって特定される文字ブロックは、背景よりも輝度が高い文字を示すブロックである。このために、第２のブロック判定画像ＢＩ２では、背景よりも輝度が低い文字Ｏｂ４、Ｏｂ５が配置された領域に対応する文字ブロックＢｋ４、Ｂｋ５（図４（Ｂ））が特定されていない。
【００４７】
Ｓ２６では、ＣＰＵ２１０は、Ｓ２４にて生成済みの第２の二値画像データと、Ｓ２５にて生成済みの第２のブロック判定データと、を用いて、論理積合成処理を実行する。これによって、複数個の第２の文字画素を示す第２の文字特定データが生成される。具体的には、ＣＰＵ２１０は、第２の二値画像データと、第２のブロック判定データと、の各画素の論理積を取ることによって、第２の文字特定データとしての二値画像データを生成する。換言すれば、ＣＰＵ２１０は、スキャン画像ＳＩ内の複数個の画素のうち、Ｓ２４において第２の文字候補画素として特定され、かつ、Ｓ２５において特定済みの文字ブロック内に位置する画素を、第２の文字画素として特定する。ＣＰＵ２１０は、スキャン画像ＳＩ内の複数個の画素のうち、第２の文字候補画素として特定されない画素と、非文字ブロック内の画素とを、第２の文字画素として特定しない。
【００４８】
図４（Ｃ）の第２の二値画像ＣＩ２に示すように、第２の二値画像データによって特定される複数個の第２の文字候補画素は、スキャン画像ＳＩ内の文字Ｏｂ６、Ｏｂ７を構成する画素Ｃｐ６、Ｃｐ７の他に、背景Ｂｇ１などを構成する画素Ｃｐ８を含んでいる。図４（Ｄ）の第２のブロック判定画像ＢＩ２に示すように、第２の二値画像データと第２のブロック判定データとの論理積を取ることで、第２の文字特定データでは、スキャン画像ＳＩ内の文字Ｏｂ６、Ｏｂ７を構成する画素Ｃｐ６、Ｃｐ７が、選択的に第２の文字画素として特定される。すなわち、複数個の第２の文字画素は、スキャン画像ＳＩ内の文字Ｏｂ６、Ｏｂ７を構成する画素Ｃｐ６、Ｃｐ７を含み、背景Ｂｇ１などを構成する画素Ｃｐ８を含まない。
【００４９】
Ｓ２７では、ＣＰＵ２１０は、Ｓ２３にて生成済みの第１の文字特定データと、Ｓ２６にて生成済みの第２の文字特定データと、を用いて、論理和合成処理を実行する。これによって、最終的に特定すべき複数個の文字画素を示す文字特定データが生成される。換言すれば、ＣＰＵ２１０は、第１の文字特定データによって特定される複数個の第１の文字画素と、第２の文字特定データによって特定される複数個の第２の文字画素と、を含む画素群であって、第１の文字画素とも第２の文字画素とも異なる画素を含まない画素群を、最終的に、複数個の文字画素として特定する。この結果、第１の文字特定データと第２の文字特定データとを用いて、スキャン画像ＳＩ内の複数個の文字画素の特定漏れを効果的に低減できる。例えば、図４（Ｂ）に示す文字特定画像ＴＩのように、最終的な文字特定データによって特定される複数個の文字画素は、スキャン画像ＳＩ内の文字Ｏｂ４〜Ｏｂ７を構成する複数個の文字画素Ｔｐ４〜Ｔｐ７を含み、他のオブジェクトや背景を構成する画素を含んでいない。
【００５０】
Ａ−４：第１の二値画像データ生成処理
図２のＳ２１の第１の二値画像データ生成処理について説明する。図５は、第１の二値画像データ生成処理のフローチャートである。Ｓ１００では、ＣＰＵ２１０は、スキャンデータを用いて、最小成分データを生成する。具体的には、ＣＰＵ２１０は、スキャンデータに含まれる複数個の画素の値（ＲＧＢ値）のそれぞれから、最小成分値Ｖｍｉｎを取得する。最小成分値Ｖｍｉｎは、ＲＧＢ値に含まれる複数個の成分値（Ｒ値、Ｇ値、Ｂ値）のうちの最小値である。ＣＰＵ２１０は、これらの最小成分値Ｖｍｉｎを複数個の画素の値とする画像データを、最小成分データとして生成する。最小成分データは、スキャン画像ＳＩと同じサイズの画像を示す画像データである。最小成分データに含まれる複数個の画素の値のそれぞれは、スキャンデータの対応する画素の値（ＲＧＢ値）の最小成分値Ｖｍｉｎである。
【００５１】
図６は、スキャンデータの最小成分値と最大成分値の説明図である。図６（Ａ）〜図６（Ｅ）には、ＲＧＢ値の一例として、シアン（Ｃ）、マゼンタ（Ｍ）、イエロ（Ｙ）、黒（Ｋ）、白（Ｗ）のＲＧＢ値が、棒グラフで図示されている。図６に示すように、Ｃ、Ｍ、Ｙ、Ｋ、ＷのＲＧＢ値（Ｒ、Ｇ、Ｂ）は、それぞれ、（０、２５５、２５５）、（２５５、０、２５５）（２５５、２５５、０）、（０、０、０）、（２５５、２５５、２５５）である。
【００５２】
これらのＲＧＢ値の輝度Ｙは、上述したように、例えば、Ｙ＝０．２９９×Ｒ＋０．５８７×Ｇ＋０．１１４×Ｂの式を用いて算出できる。Ｃ、Ｍ、Ｙ、Ｋ、Ｗの輝度（０〜２５５の値で表す）は、約１８６、１１３、２２６、０、２５５であり、それぞれに異なる値となる（図６）。これに対して、Ｃ、Ｍ、Ｙ、Ｋ、Ｗの最小成分値Ｖｍｉｎは、図６に示すように、０、０、０、０、２５５となり、白（Ｗ）を除いて同じ値となる。
【００５３】
図７は、画像処理に用いられる画像の一例を示す第２の図である。図７（Ａ）は、スキャン画像ＳＩのうち、上述した網点領域の拡大図である。例えば、図７（Ａ）の例では、スキャン画像ＳＩ内の網点領域は、複数個のＭドットＭＤと、複数個のＹドットＹＤと、を含んでいる。ここでは、説明のために、ＭドットＭＤを示す画像は、マゼンタの原色を有する均一な画像であり、ＹドットＹＤを示す画像は、イエロの原色を有する均一な画像であるとする。
【００５４】
図７（Ｂ）には、最小成分データによって示される最小成分画像ＭＮＩの一例が示されている。この最小成分画像ＭＮＩは、図７（Ａ）のスキャン画像ＳＩに対応している。最小成分画像ＭＮＩでは、スキャン画像ＳＩのＹドットＭＤに対応する領域ＭＤｂ内の画素の値と、ＹドットＹＤに対応する領域ＹＤｂ内の画素の値と、は互いに同じとなる。図７（Ｃ）には、比較例として、各画素の輝度を示す輝度画像データによって示される輝度画像ＹＩが示されている。この輝度画像ＹＩは、図７（Ａ）のスキャン画像ＳＩに対応している。輝度画像ＹＩでは、最小成分画像ＭＮＩとは異なり、スキャン画像ＳＩのＭドットＭＤに対応する領域ＭＤｄ内の画素の値と、ＹドットＹＤに対応する領域ＹＤｄ内の画素の値と、は互いに異なる。
【００５５】
以上の説明から解るように、最小成分画像ＭＮＩでは、スキャン画像ＳＩにおいて、原稿内のＣ、Ｍ、Ｙ、Ｋドットが形成された部分に対応する複数個の画素の値の間の差が、輝度画像ＹＩよりも小さくなる。そして、最小成分画像ＭＮＩでは、スキャン画像ＳＩにおいて、原稿内の地色（用紙の白色）を示す領域に対応する地色領域の画素の値が、ドットが形成された部分に対応する画素の値よりも大きくなる。
【００５６】
Ｓ１１０では、ＣＰＵ２１０は、生成された最小成分データに対して、二値化処理を実行して、二値画像データを生成する。本ステップにて生成される二値画像データが、第１の二値画像データである。例えば、ＣＰＵ２１０は、最小成分データにおいて、画素の値が閾値（例えば、１２８）以下である画素を、第１の文字候補画素に分類し、画素の値が閾値より大きな値である画素を、第１の文字候補画素に分類しない。二値画像データでは、上述したように、第１の文字候補画素の値は、「１」とされ、それ以外の画素の値は、「０」とされる。
【００５７】
以上説明した第１の二値画像データ生成処理によれば、最小成分データを用いて、第１の二値画像データが生成される。一般的に、背景よりも輝度が低い（すなわち、色が濃い）文字は、主としてドットで構成され、背景は、主として用紙の白色で構成される場合が多い。最小成分データでは、図７を参照して説明したように、原稿内の地色（用紙の白色）を示す領域に対応する地色領域の画素の値が、ドットが形成された部分に対応する画素の値よりも大きくなるので、第１の二値画像データにおいて、背景よりも輝度が低い（すなわち、色が濃い）文字を構成する画素の特定漏れを抑制できる。
【００５８】
例えば、イエロ（Ｙ）は、Ｃ、Ｍ、Ｋと比較して濃度が低い（輝度が高い）。このために、用紙の地色（白）の背景に、イエロの文字がある場合には、例えば、輝度を示す輝度画像データを二値化しても、該イエロの文字を構成する文字画素を、適切に文字候補画素として特定できない場合がある。本実施例では、このような場合でも該イエロの文字を構成する文字画素を、適切に文字候補画素として特定できる。このために、最小成分データを用いて、背景よりも輝度が低い文字を構成する文字画素の特定を実行することで、例えば、輝度画像データだけでは特定できない文字を特定し得る。この結果、スキャン画像ＳＩ内の文字候補画素の特定精度を向上できる。
【００５９】
Ａ−５：第２の二値画像データ生成処理
図２のＳ２４の第２の二値画像データ生成処理について説明する。図８は、第２の二値画像データ生成処理のフローチャートである。Ｓ２００では、ＣＰＵ２１０は、スキャンデータを用いて、輝度画像データを生成する。具体的には、ＣＰＵ２１０は、スキャンデータから取得される各画素のＲ値、Ｇ値、Ｂ値を用いて、各画素の輝度Ｙを算出する。輝度Ｙは、例えば、上記３成分の加重平均であり、具体的には、Ｙ＝０．２９９×Ｒ＋０．５８７×Ｇ＋０．１１４×Ｂの式を用いて算出できる。このように、輝度画像データの複数個の画素の値は、スキャン画像ＳＩ内の複数個の画素のうちの対応する画素の輝度Ｙを示す。
【００６０】
Ｓ２１０では、ＣＰＵ２１０は、生成された輝度画像データに対して、二値化処理を実行して、二値画像データを生成する。例えば、ＣＰＵ２１０は、輝度画像データにおいて、画素の値（すなわち、輝度）が閾値（例えば、１２８）以上である画素を、文字候補画素に分類し、画素の値が閾値未満である画素を、文字候補画素とは異なる画素に分類する。二値画像データでは、上述したように、文字候補画素の値は、「１」とされ、文字候補画素とは異なる画素の値は、「０」とされる。そして、Ｓ２１０にて生成される二値画像データが、第２の二値画像データである。第２の二値画像データでは、上述したように背景より輝度が高い（すなわち、色が薄い）文字を構成する文字画素を含む第２の文字候補画素が特定される。
【００６１】
以上説明した第２の二値画像データ生成処理によれば、輝度画像データを用いて、第２の二値画像データが生成される。文字の読みやすさのために、文字の色と背景の色とは、輝度に比較的大きな差があることが多い。このために、輝度画像データを用いることで、文字画素の特定漏れを抑制することができる。
【００６２】
さらに、第２の二値画像データと、第１の二値画像データとは、互いに異なる文字画素を特定し得る。例えば、上述したように、第２の二値画像データは、背景より輝度が高い文字を構成する画素を文字候補画素として特定できるのに対して、第１の二値画像データは、背景より輝度が低い文字を構成する画素を文字候補画素として特定できる。また、第１の二値画像データは、例えば、印刷に用いられるＣ、Ｍ、Ｙ、Ｋの原色の背景上に位置し、かつ、Ｃ、Ｍ、Ｙ、Ｋの別の原色あるいは用紙の白色を有する文字を構成する文字画素を特定し難いのに対して、第２の二値画像データは、このような文字を構成する文字画素を特定し得る。このために、第１の二値画像データと第２の二値画像データとを併用することで、さらに、文字候補画素の特定漏れを抑制することができる。
【００６３】
Ａ−６：ブロック判定処理
図２のＳ２２の第１のブロック判定処理およびＳ２５の第２のブロック判定処理について説明する。これらのブロック判定処理は、文字を示す複数個の文字画像データと文字を示さない複数個の非文字画像データとを用いてトレーニングされた機械学習モデルを用いて実行される。第１のブロック判定処理と第２のブロック判定処理とでは、用いられる機械学習モデルが互いに異なる。第１のブロック判定処理で用いられる機械学習モデルを第１の機械学習モデルと呼び、第２のブロック判定処理で用いられる機械学習モデルを第２の機械学習モデルと呼ぶ。本実施例では、第１のブロック判定処理と第２のブロック判定処理とでは、用いられる機械学習モデルを除いた処理は同一であり、１つのフローチャートを用いて説明する。
【００６４】
図９は、ブロック判定処理のフローチャートである。図１０は、スキャン画像ＳＩ上に配置される複数個のブロックＢＬの説明図である。ブロック判定処理は、上述したように、ブロック判定データを、スキャン画像ＳＩ内に配置される複数個のブロックＢＬのそれぞれが文字を示す文字ブロックであるか否かをブロックＢＬごとに判断することによって生成する処理である。
【００６５】
Ｓ４００では、ＣＰＵ２１０は、ブロック判定データを生成するためのキャンバスデータをメモリ（具体的には、揮発性記憶装置２２０のバッファ領域）に準備する。キャンバスデータによって示されるキャンバス（初期画像）は、スキャン画像ＳＩと同じサイズの画像、すなわち、同じ画素数の画像である。キャンバスデータの各画素の値は、所定の初期値（例えば、０）である。
【００６６】
Ｓ４０５では、ＣＰＵ２１０は、スキャン画像ＳＩに、注目ブロックを設定する。最初の注目ブロックは、本実施例では、図１０の左上のブロックＢＬ（１）である。１個のブロックは、Ｎ個（Ｎは２以上の整数）の画素を含む矩形の領域である。ここで、図１０において、スキャン画像ＳＩ上にマトリクス状に配置された破線で示される複数個の升目は、サブブロックＳＢを示している。１個のサブブロックＳＢは、ｋ個（ｋは、１≦ｋ＜Ｎをを満たす整数）の画素を含む矩形の領域である。本実施例では、サブブロックＳＢは、縦Ｍ画素×横Ｍ画素（Ｍは、１以上の整数）の領域である（ｋ＝（Ｍ×Ｍ））。例えば、１個のブロックＢＬは、本実施例では、縦Ｌ個×横Ｌ個（Ｌは、２以上の整数）のサブブロックＳＢを含む領域である。すなわち、本実施例の各ブロックＢＬは、縦（Ｌ×Ｍ）画素×横（Ｌ×Ｍ）画素の領域である。本実施例では、Ｍ＝１０、Ｌ＝５であるので、各ブロックＢＬは、縦５０画素×横５０画素の領域である（Ｎ＝２５００）。
【００６７】
Ｓ４１０では、ＣＰＵ２１０は、機械学習モデルを用いて、注目ブロック内の画像が文字を示す確率（文字確率Ｔｘｒと呼ぶ）を算出する。
【００６８】
機械学習モデルは、ＣＮＮ（Convolutional Neural Network）を用いたモデルである。このような機械学習モデルとしては、例えば、ＬｅＮｅｔやＡｌｅｘＮｅｔが用いられる。
ＬｅＮｅｔは、例えば、「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.」に開示されている。ＡｌｅｘＮｅｔは、例えば、「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」に開示されている。
【００６９】
機械学習モデルの入力は、注目ブロック内のＮ個の画素の値（例えば、ＲＧＢ値や輝度値）を、各画素の注目ブロック内での位置に応じた順序で並べた行列である。すなわち、注目ブロック内のＮ個の画素の値が、注目ブロック内における当該画素の位置と対応付けて入力される。機械学習モデルの出力は、上述した文字確率Ｔｘｒである。
【００７０】
例えば、文字確率Ｔｘｒは、０〜１００％の数値で表される。ＣＰＵ２１０は、後述するＳ４１５〜Ｓ４３０に示すように、文字確率Ｔｘｒに基づいて、注目ブロックが、文字を示す文字ブロック、文字を示さない非文字ブロック、文字を示すか不明である不明ブロックのいずれであるかを判断する。ＣＰＵ２１０は、文字確率Ｔｘｒが、ＴＨ１≦Ｔｘｒである場合には、注目ブロックは、文字ブロックであると判断する。ＣＰＵ２１０は、文字確率Ｔｘｒが、ＴＨ２≦Ｔｘｒ＜ＴＨ１である場合には、注目ブロックは、不明ブロックであると判断する。ＣＰＵ２１０は、文字確率Ｔｘｒが、Ｔｘｒ＜ＴＨ２である場合には、注目ブロックは、非文字ブロックであると判断する。閾値ＴＨ１は、例えば、７５％であり、閾値ＴＨ２は、例えば、２５％である。
【００７１】
このように、Ｎ個の画素の値の組みあわせが同じ画像であっても、どの画素の値が、注目ブロック内のどの位置にあるかが異なっていれば、異なる文字確率Ｔｘｒが出力され、該文字確率Ｔｘｒに基づいて、注目ブロックについての判断が行われる。このように、注目ブロックが、文字ブロック、非文字ブロック、不明ブロックのいずれであるかは、注目ブロック内のＮ個の画素の位置とＮ個の画素の値とに応じて判断されることが解る。
【００７２】
機械学習モデルは、例えば、文字を示す所定個数（例えば、３０００個）の文字画像データと、文字を示さない所定個数の（例えば、３０００個）の非文字画像データと、を用いてトレーニングされている。これらのトレーニング用の文字画像データおよび非文字画像データは、Ｎ個の画素を含むブロックＢＬと同じサイズの画像である。非文字画像は、文字とは異なるオブジェクト（例えば、写真）やベタ塗りの背景などを示す画像である。
【００７３】
ここで、第１のブロック判定処理に用いられる第１の機械学習モデルと、第２のブロック判定処理に用いられる第２の機械学習モデルと、では、トレーニングに用いられる文字画像データおよび非文字画像データのセットが異なる。第１の機械学習モデルは、背景よりも輝度が低い文字を示す複数個の第１の文字画像データと、背景よりも輝度が低い文字を示さない複数個の第１の非文字画像データと、を用いてトレーニングされている。第２の機械学習モデルは、背景よりも輝度が高い文字を示す複数個の第２の文字画像データと、背景よりも輝度が高い文字を示さない複数個の第２の非文字画像データと、を用いてトレーニングされている。このために、第１のブロック判定処理では、背景よりも輝度が低い文字を示すブロックは、文字ブロックであると判断されるが、背景よりも輝度が高い文字を示すブロックは、文字ブロックであると判断されない。そして、第２のブロック判定処理では、背景よりも輝度が低い文字を示すブロックは、文字ブロックであると判断されず、背景よりも輝度が高い文字を示すブロックは、文字ブロックであると判断される。以下の図１１では、処理の動作の説明のために、白の背景に黒の文字が例示されているが、この例示は、第１のブロック判定処理のための例示である。第２のブロック判定処理では、図１１と同様の文字であって、黒の背景に白の文字である例で、同様の動作になる。
【００７４】
図１１は、ブロックＢＬごとの判断の一例を示す図である。例えば、図１１（Ａ）のブロックＢＬ（１）や図１１（Ｂ）のブロックＢＬ（２）が注目ブロックである場合には、注目ブロック内の比較的広い範囲を文字が占めているので、注目ブロックは、文字ブロックであると判断される。例えば、図１１（Ｃ）のブロックＢＬ（３）が注目ブロックである場合には、注目ブロック内に文字が含まれているものの、文字が占める範囲は比較的狭いので、注目ブロックは、不明ブロックであると判断される。例えば、図１１（Ｄ）のブロックＢＬ（４）が注目ブロックである場合には、注目ブロック内に文字が含まれていないので、注目ブロックは、非文字ブロックであると判断される。以下、Ｓ４１５〜Ｓ４３０の処理を具体的に説明する。
【００７５】
Ｓ４１５では、ＣＰＵ２１０は、Ｓ４１０にて算出された文字確率Ｔｘｒが閾値ＴＨ１以上であるか否かを判断する。文字確率Ｔｘｒが閾値ＴＨ１以上である場合には（Ｓ４１５：ＹＥＳ）、注目ブロックは文字ブロックであると判断される。このために、この場合には、Ｓ４２０にて、ＣＰＵ２１０は、注目ブロック内の全画素の値を、文字を示す値に設定する。文字確率Ｔｘｒが閾値ＴＨ１未満である場合には（Ｓ４１５：ＮＯ）、Ｓ４２０はスキップされる。
【００７６】
図１２は、ブロック判定データにおける画素の値の設定の一例を示す図である。図１２（Ａ）〜（Ｄ）には、ブロック判定データによって示されるブロック判定画像ＢＩが概念的に示されている。図１１（Ａ）のブロックＢＬ（１）や図１１（Ｂ）のブロックＢＬ（２）が注目ブロックである場合には、注目ブロックは文字ブロックであると判断されるので、ブロック判定画像ＢＩにおいても、図１２（Ａ）、（Ｂ）に示すように、ブロックＢＬ（１）、ＢＬ（２）内の全ての画素の値が、文字を示す値「１」に設定される。
【００７７】
Ｓ４２５では、ＣＰＵ２１０は、文字確率Ｔｘｒが閾値ＴＨ２未満であるか否かを判断する。文字確率Ｔｘｒが閾値ＴＨ２未満である場合には（Ｓ４２５：ＹＥＳ）、注目ブロックは非文字ブロックであると判断される。このために、この場合には、Ｓ４３０にて、ＣＰＵ２１０は、注目ブロック内の全画素の値を非文字を示す値に設定する。文字確率Ｔｘｒが閾値ＴＨ２以上である場合には（Ｓ４２５：ＮＯ）、Ｓ４３０はスキップされる。
【００７８】
図１１（Ｄ）のブロックＢＬ（４）が注目ブロックである場合には、注目ブロックは非文字ブロックであると判断されるので、ブロック判定画像ＢＩにおいても、図１２（Ｄ）に示すように、ブロックＢＬ（４）内の全ての画素の値が、非文字を示す値「２」に設定される。
【００７９】
なお、文字確率Ｔｘｒが閾値ＴＨ２以上であり、かつ、閾値ＴＨ１未満である場合には（Ｓ４１５：ＮＯ、かつ、Ｓ４２５：ＮＯ）、注目ブロックは、不明ブロックであると判断される。このために、この場合には、注目ブロック内の全ての画素の値は変更されない。すなわち、この時点で、文字を示す値「１」を有する画素は、文字を示す値のまま維持され、非文字を示す値「２」を有する画素は、非文字を示す値のまま維持され、不明を示す値「０」を有する画素は、不明を示す値のまま維持される。
【００８０】
図１１（Ｃ）のブロックＢＬ（３）が注目ブロックである場合には、注目ブロックは不明ブロックであると判断されるので、ブロック判定画像ＢＩにおいて、図１２（Ｃ）に示すように、ブロックＢＬ（４）内の全ての画素の値は、変更されることなく、維持される。
【００８１】
Ｓ４３５では、ＣＰＵ２１０は、注目ブロックを右方向にＭ画素だけ移動する。すなわち、注目ブロックは、右方向に１個のサブブロックＳＢ分だけ移動される。例えば、図１０のブロックＢＬ（１）が注目ブロックである場合には、ブロックＢＬ（２）が新たな注目ブロックに設定される。図１０のブロックＢＬ（ｑ−１）が注目ブロックである場合には、ブロックＢＬ（ｑ）が新たな注目ブロックに設定される。
【００８２】
Ｓ４４０では、ＣＰＵ２１０は、注目ブロックを右方向にＭ画素だけ移動した結果、注目ブロックの右端は、スキャン画像ＳＩの右端よりも右側に移動したか否かを判断する。すなわち、移動後の新たな注目ブロックが、スキャン画像ＳＩの右側にはみ出したか否かを判断する。例えば、新たな注目ブロックが、図１０のブロックＢＬ（ｑ）やブロックＢＬ（ｅ）である場合には、注目ブロックの右端は、スキャン画像ＳＩの右端よりも右側に移動したと判断される。
【００８３】
注目ブロックの右端が、スキャン画像ＳＩの右端よりも右側に移動していない場合には（Ｓ４４０：ＮＯ）、ＣＰＵ２１０は、Ｓ４１０に戻る。このように、例えば、注目ブロックを右方向にＭ画素ずつずらしながら、順次に、ブロックごとの判断（Ｓ４１０〜Ｓ４３０）が行われる。図１０の例では、ブロックＢＬ（１）、ＢＬ（２）、ＢＬ（３）の順に、各ブロックＢＬが、文字ブロック、非文字ブロック、不明ブロックのいずれであるかが判断される。
【００８４】
注目ブロックの右端が、スキャン画像ＳＩの右端よりも右側に移動した場合には（Ｓ４４０：ＹＥＳ）、Ｓ４４５にて、ＣＰＵ２１０は、注目ブロックをスキャン画像ＳＩの左端に移動し、Ｓ４５０にて、注目ブロックを下方向にＭ画素だけ移動する。
【００８５】
Ｓ４５５では、ＣＰＵ２１０は、注目ブロックを下方向にＭ画素だけ移動した結果、注目ブロックの下端は、スキャン画像ＳＩの下端よりも下側に移動したか否かを判断する。すなわち、移動後の新たな注目ブロックが、スキャン画像ＳＩの下側にはみ出したか否かを判断する。例えば、新たな注目ブロックが、図１０のブロックＢＬ（ｅ＋１）である場合には、注目ブロックの下端は、スキャン画像ＳＩの下端よりも下側に移動したと判断される。例えば、移動後の新たな注目ブロックが、図１０のブロックＢＬ（ｅ＋１）である場合には、注目ブロックの下端は、スキャン画像ＳＩの下端よりも下側に移動したと判断される。
【００８６】
注目ブロックの下端が、スキャン画像ＳＩの下端よりも下側に移動していない場合には（Ｓ４５５：ＮＯ）、ＣＰＵ２１０は、Ｓ４１０に戻る。このように、例えば、注目ブロックを下方向にＭ画素ずつずらしながら、順次に、左端から右端までの１行分のブロックＢＬの判断が、一行ずつ行われる。例えば、図１０の右端のブロックＢＬ（ｑ−１）の次に、判断の対象となる注目ブロックは、Ｍ画素だけ下側の行の左端のブロックＢＬ（ｑ＋１）である。
【００８７】
注目ブロックの下端が、スキャン画像ＳＩの下端よりも下側に移動した場合には（Ｓ４５５：ＹＥＳ）、全てのブロックＢＬの判断が終了したので、ＣＰＵ２１０は、Ｓ４６０に処理を進める。
【００８８】
Ｓ４６０では、ＣＰＵ２１０は、ブロック判定データに、不明を示す値「０」が残っているか否かを判断する。不明を示す値が残っている場合には、Ｓ４６５にて、ＣＰＵ２１０は、不明を示す値を、文字を示す値「１」に設定する。この結果、ブロック判定データの各画素の値は、文字を示す値「１」と非文字を示す値「２」とのいずれかとなる。
【００８９】
Ｓ４７０では、ＣＰＵ２１０は、非文字を示す値「２」を「０」に変更して、ブロック判定データを「１」と「０」のいずれかの値をとる二値画像データに変換する。この結果、文字を値、すなわち、上述した文字ブロックを構成する画素であることを示す値「１」と、非文字を示す値、すなわち、上述した非文字ブロックを構成する画素であることを示す値「０」と、のいずれかの値を画素ごとに有するブロック判定データが生成される。
【００９０】
以上説明した本実施例によれば、対象画像データとしてのスキャンデータを用いて、複数個の文字候補画素が抽出され（図２のＳ２１、Ｓ２４）、スキャンデータを用いて、スキャン画像ＳＩ上に配置される複数個のブロックＢＬのそれぞれが文字を示す文字ブロックであるか否かをブロックごとに判断される（図２のＳ２２、Ｓ２５）。ブロックＢＬごとの判断は、複数個の文字画像データと複数個の非文字画像データとを用いてトレーニングされた機械学習モデルを用いて実行される（図９のＳ４１０）。そして、ブロックごとの判断結果を用いて、複数個の文字候補画素の中から、複数個の文字画素が特定される（図２のＳ２３、Ｓ２６、Ｓ２７）。この結果、この結果、スキャン画像ＳＩ内の文字画素を精度良く特定できる。
【００９１】
図１３は、実施例の効果について説明する図である。図１３（Ａ）〜（Ｄ）には、スキャンデータによって示されるスキャン画像ＳＩ、第１の二値画像データによって示される第１の二値画像ＣＩ１、第１のブロック判定データによって示される第１のブロック判定画像ＢＩ１、第１の文字特定データによって示される第１の文字特定画像ＴＩ１のそれぞれの一例が、概念的に示されている。図１３において、これらの画像ＳＩ、ＣＩ１、ＢＩ１、ＴＩ１の破線で示す升目は、それぞれ、画素Ｐｘを示している。
【００９２】
スキャン画像ＳＩには、文字Ｔｘとともに、文字以外のオブジェクト（例えば、写真）や色付きの背景が含まれ得る。図１３（Ａ）の例では、スキャン画像ＳＩには、文字Ｔｘとともに、構成する網点ＤＴが含まれ得る。これは、上述したように、スキャンデータが、印刷物を読み取ることによって生成されたデータであるためである。このような場合に、文字画素のみを特定することは比較的困難である。例えば、網点ＤＴを誤って特定しないように、スキャンデータに対して、画像を平滑化する平滑化処理を行い、平滑化処理済みのスキャンデータに対して画像内のエッジ画素を抽出するエッジ抽出処理を行う方法が考えられる。この方法では、抽出されたエッジ画素が文字画素として特定される。この方法では、網点ＤＴを十分に平滑化できない場合には、網点ＤＴのエッジが誤って文字画素として特定され得る。また、網点ＤＴを十分に平滑化するために、過度に画像を平滑化すると、文字のエッジが過度にぼけてしまうために、文字画素の特定精度が低下してしまう。このために、例えば、図１３（Ｂ）の第１の二値画像ＣＩ１に示すように、第１の二値画像データにおいて、文字Ｔｘを構成する画素Ｃｐｔだけでなく、網点ＤＴを構成する画素Ｃｐｄも第１の文字候補画素として特定されてしまい得る。
【００９３】
これに対して、本実施例のＳ２２やＳ２５のブロック判定処理では、ブロックＢＬごとに、ブロック内のＮ個の画素の位置とＮ個の画素の値とに応じて、文字ブロックか否かを含む判断が行われるので、画素ごとの判断と比較して、空間的な分解能は粗くなるものの、判断の誤りは比較的少なくなる。さらに、本実施例では、ブロックＢＬごとの判断を機械学習モデルを用いて実行するので、該機械学習モデルを十分にトレーニングしておくことで、各ブロックが文字ブロックであるか否かは、十分に高い精度で判断できる。このために、例えば、図１３（Ｃ）の第１のブロック判定画像ＢＩ１では、例えば、文字Ｔｘを含む領域は、文字ブロックＴＢとして特定され、網点ＤＴを含む領域は、非文字ブロックＯＢとして特定される。
【００９４】
この結果、第１の文字特定データと、第１のブロック判定データと、の論理積を取って第１の文字特定データを生成すれば、文字画素を適切に特定することができる。例えば、図１３（Ｄ）の文字特定画像ＴＩ１に示すように、文字Ｔｘを構成する画素が文字画素として特定され、かつ、網点ＤＴを示す画素が文字画素として特定されない。第２の二値画像データと第２のブロック判定データと、これらのデータの論理積を取って得られる第２の文字特定データについても同様である。
【００９５】
さらに、本実施例によれば、ＣＰＵ２１０は、第１の二値画像データ生成処理や第２の二値画像データ生成処理において、対象画像データに対して、画像内のエッジの強度を調整するエッジ調整処理を実行することなく、複数個の文字候補画素を抽出する（図５、図８）。この結果、複数個の文字候補画素を精度良く抽出することができる。エッジ調整処理は、画像を平滑化して画像内のエッジの強度を低くする平滑化処理および画像内のエッジの強度を強くするエッジ強調処理を含む。平滑化処理は、例えば、単純平均のフィルタを用いる処理やガウシアンフィルタを用いる処理を含む。エッジ強調処理は、例えば、アンシャープマスク処理、ラプラシアンフィルタを用いる処理を含む。例えば、仮に、スキャンデータに対して、上述したように、平滑化処理を行って網点ＤＴを消去することや、平滑化処理後に、さらに、エッジ強調処理を行って、ぼけた文字のエッジを強調したりするとする。こうすれば、網点ＤＴを構成する画素が誤って文字画素として特定される不都合を低減し得るが、文字のエッジも変化してしまうために、文字の太さの変化などが生じ得る。この結果、スキャン画像ＳＩ内の文字よりも太い文字を構成するように文字画素が特定される不都合や、スキャン画像ＳＩ内の文字よりも細い文字を構成するように文字画素が特定される不都合が発生して、文字画素の特定精度が低下し得る。例えば、小さな文字が潰れてしまった状態で特定されることや、文字の線画途切れた状態で特定されることが発生し得る。本実施例では、第１の二値画像データや第２の二値画像データと、ブロック判定データとの論理積を取ることで、網点ＤＴなどの文字以外のオブジェクトや背景を構成する画素を排除している。このために、第１の二値画像データや第２の二値画像データでは、網点ＤＴを構成する画素が文字候補画素として誤って特定されていても問題がない。このために、第１の二値画像データ生成処理や第２の二値画像データ生成処理において、対象画像データに対して、平滑化処理やエッジ強調処理を実行する必要がない。この結果、文字のエッジを変化させないので、複数個の文字候補画素を精度良く抽出することができる。
【００９６】
さらに、本実施例の第１の二値画像データ生成処理では、ＣＰＵ２１０は、スキャンデータを用いて、最小成分データを生成する（図５のＳ１００）。最小成分データの複数個の画素の値のそれぞれは、対応するスキャンデータのＲＧＢ値の３個の成分値のうちの最小値に基づく値である。そして、該最小成分データを用いて複数個の第１の文字候補画素が抽出される（図５のＳ１１０）。この結果、対象画像データをそのまま二値化する場合には抽出され難い文字候補画素を抽出し得る。例えば、上述したように、用紙の地色（白）の背景に、イエロの文字がある場合であっても、該文字を構成する画素を含む文字候補画素を抽出できる。
【００９７】
さらに、本実施例の第２の二値画像データ生成処理では、ＣＰＵ２１０は、スキャンデータを用いて、輝度画像データを生成する（図８のＳ２００）。ＣＰＵ２１０は、輝度画像データを用いて、基準よりも高い輝度を有する画素を文字候補画素として抽出する（図８のＳ２１０、Ｓ２２０）。この結果、対象画像データをそのまま二値化する場合には抽出され難い比較的輝度が高い文字候補画素を抽出し得る。例えば、上述したように、背景より輝度が高い文字を構成する文字を構成する画素を含む文字候補画素を抽出できる。
【００９８】
さらに、本実施例では、ＣＰＵ２１０は、第１の二値画像データ生成処理を実行して、複数個の第１の文字候補画素を抽出し（図２のＳ２１）、第２の二値画像データ生成処理を実行して、複数個の第２の文字候補画素を抽出する（図２のＳ２４）。そして、ＣＰＵ２１０は、ブロックＢＬごとの判断結果を用いて、複数個の第１の文字候補画素の中から、複数個の第１の文字画素を特定し（図２のＳ２３）、ブロックＢＬごとの判断結果を用いて、複数個の第２の文字候補画素の中から、複数個の第２の文字画素を特定し、複数個の第１の文字画素と複数個の第２の文字画素とを含む複数個の画素を、最終的に文字画素として特定する（図２のＳ２７）。この結果、文字画素の特定漏れを抑制することができる。
【００９９】
さらに、本実施例の第１のブロック判定処理（図２のＳ２２）では、ＣＰＵ２１０は、第１の機械学習モデルを用いて、複数個のブロックＢＬのそれぞれが文字ブロックあるか否かをブロックごとに判断する（図９）。第２のブロック判定処理（図２のＳ２５）では、ＣＰＵ２１０は、第１の機械学習モデルとは異なる第２の機械学習モデルを用いて、複数個のブロックＢＬのそれぞれが文字ブロックあるか否かをブロックごとに判断する（図９）。ＣＰＵ２１０は、第１の機械学習モデルを用いた判断結果を用いて、複数個の第１の文字画素を特定し（図２のＳ２３）第２の機械学習モデルを用いて判断結果を用いて、第２の文字画素を特定する（図２のＳ２６）。このように、第１の文字画素を特定する際と、第２の文字画素を特定する際とで、互いに異なる機械学習モデルを用いた判定結果を用いるので、第１の文字画素と第２の文字画素とをそれぞれ適切に特定し得る。
【０１００】
さらに、本実施例では、第１のブロック判定処理（図２のＳ２２）で用いられる第１の機械学習モデルは、複数個の第１の文字画像データと複数個の第１の非文字画像データとを用いてトレーニングされた機械学習モデルであり、第２のブロック判定処理（図２のＳ２５）で用いられる第２の機械学習モデルは、複数個の第１の文字画像データとは異なる複数個の第２の文字画像データと、複数個の第１の非文字画像データとは異なる複数個の第２の非文字画像データと、を用いてトレーニングされた機械学習モデルである。このように、第１の機械学習モデルと第２の機械学習モデルとは、それぞれ、互いに異なる画像を用いてトレーニングされたモデルである。この結果、第１の文字画素（本実施例では、背景よりも輝度が低い文字を構成する画素）と第２の文字画素（本実施例では背景よりも輝度が高い文字を構成する画素）とをそれぞれより適切に特定することができる。
【０１０１】
以上の説明から解るように、上記実施例の最小成分データは、第１画像データの例であり、輝度画像データは、第２画像データの例である。また、第１の二値画像データ生成処理は、第１の抽出処理の例であり、第２の二値画像データ生成処理は、第２の抽出処理の例である。
【０１０２】
Ｂ．変形例：
【０１０３】
（１）上記実施例では、第１のブロック判定処理（図２のＳ２１）と第２のブロック判定処理（図２のＳ２４）とで、互いに異なる機械学習モデルを用いている。これに代えて、第１のブロック判定処理と第２のブロック判定処理とで同一の機械学習モデルが用いられても良い。例えば、実施例における、背景よりも輝度が低い文字を示す複数個の第１の文字画像と、背景よりも輝度が高い文字を示す第２の文字画像データと、背景よりも輝度が低い文字と背景よりも輝度が高い文字とのいずれも示さない複数個の非文字画像データと、を用いてトレーニングされて機械学習モデルが、２つのブロック判定処理で用いられても良い。
【０１０４】
（２）記実施例では、第１のブロック判定処理で用いられる第１の機械学習モデルと、第２のブロック判定処理で用いられる第２の機械学習モデルとで、互いに異なる文字画像データおよび非文字画像データを用いてトレーニングされている。これに代えて、第１の機械学習モデルと第２の機械学習モデルとは、互いに同じ文字画像データおよび非文字画像データを用いてトレーニングされていても良い。この場合に、第１の機械学習モデルと第２の機械学習モデルとは、例えば、畳み込み層の数やプーリング層の数などのニューラスネットワークの構造が互いに異なっていても良い。
【０１０５】
（３）上記実施例では、第１の二値画像データと、第２の二値画像データと、の両方を用いて、最終的な文字画素を特定している。これに代えて、第１の二値画像データと、第２の二値画像データと、の一方だけを用いて、文字画素を特定しても良い。例えば、第１の二値画像データのみを用いる場合には、図２のＳ２４〜Ｓ２７は、省略されても良い。
【０１０６】
（４）第２の二値画像データ生成処理（図８）では、輝度画像データが用いられる（Ｓ２００）。これに代えて、例えば、スキャンデータの対応する画素のＲＧＢ値に含まれる３個の成分値（Ｒ値、Ｇ値、Ｂ値）の平均値を、各画素の値とする平均成分値画像データが用いられても良い。
【０１０７】
（５）上記実施例の第１の二値画像データ生成処理（図５）では、最小成分データが用いられる（Ｓ１００）。これに代えて、最大成分データや反転最小成分データが用いられても良い。
【０１０８】
最大成分データは、スキャンデータに含まれる複数個の画素に対応する複数個の値を含み、該複数個の値のそれぞれは、スキャンデータの対応する画素の最大成分値Ｖｍａｘである。最大成分値Ｖｍａｘは、スキャンデータの対応する画素のＲＧＢ値に含まれる複数個の成分値（Ｒ値、Ｇ値、Ｂ値）のうちの最大値である。
【０１０９】
反転最小成分データは、以下のように、取得される。先ず、スキャンデータに含まれる複数個の画素の値（ＲＧＢ値）のそれぞれについて、複数個の成分値（Ｒ値、Ｇ値、Ｂ値）が反転された反転済みの色値が生成される。反転前のＲＧＢ値を（Ｒｉｎ、Ｇｉｎ、Ｂｉｎ）とすると、反転済みのＲＧＢ値（Ｒｏｕｔ、Ｇｏｕｔ、Ｂｏｕｔ）は、以下の式（１）〜（３）で表される。
【０１１０】
Ｒｏｕｔ＝Ｒｍａｘ−Ｒｉｎ          …（１）
Ｇｏｕｔ＝Ｇｍａｘ−Ｇｉｎ          …（２）
Ｂｏｕｔ＝Ｂｍａｘ−Ｂｉｎ          …（３）
【０１１１】
ここで、Ｒｍａｘ、Ｇｍａｘ、Ｂｍａｘは、それぞれ、Ｒ値、Ｇ値、Ｂ値が取り得る値の最大値であり、本実施例では、Ｒｍａｘ＝Ｇｍａｘ＝Ｂｍａｘ＝２５５である。これらの反転済みのＲＧＢ値を複数個の画素の値とする画像データが、反転画像データとして生成される。そして、反転画像データを用いて、反転最小成分データが生成される。具体的には、反転画像データに含まれる複数個の反転済みのＲＧＢ値のそれぞれから、反転最小成分値ＶＲｍｉｎが取得される。反転最小成分値ＶＲｍｉｎは、該反転済みのＲＧＢ値に含まれる複数個の成分値（Ｒ値、Ｇ値、Ｂ値）のうちの最小値である。反転最小成分データは、これらの反転最小成分値ＶＲｍｉｎを、複数個の画素の値とする画像データである。
【０１１２】
反転最小成分値ＶＲｍｉｎは、最大成分値の反転値であり、ＶＲｍｉｎ＝（２５５−Ｖｍａｘ）の関係が成り立つ。このために、最大成分データと反転最小成分データとは、両方とも、スキャンデータの各画素の値に含まれる複数個の成分値のうちの最大値に基づく値（最大値の反転値、あるいは、最大値そのもの）を、画素の値とする画像データである、と言うことができる。
【０１１３】
図６に示すように、Ｃ、Ｍ、Ｙ、Ｋ、Ｗの最大成分値Ｖｍａｘは、２５５、２５５、２５５、０、２５５となり、黒（Ｋ）を除いて同じ値となる。したがって、最大成分データや反転最小成分データにおいては、網点領域を構成する５種類の要素、すなわち、Ｃ、Ｍ、Ｙ、Ｋの各ドットと、用紙の地色（白）と、のうちの４種類の要素（Ｃ、Ｍ、Ｙのドットと、用紙の地色（白））を示す画素間の値の差が抑制される。この結果、最大成分データや反転最小成分データを用いる場合には、最小成分データを用いる場合と同様に、網点を構成する画素が、文字候補画素として特定されることを抑制できる。
【０１１４】
（６）上記実施例の第１の二値画像データ生成処理（図５）では、最小成分データが用いられる（Ｓ１００）。これに代えて、例えば、輝度画像データが用いられても良い。すなわち、第１の二値画像データ生成処理では、背景よりも輝度が低い文字を構成する文字画素を特定するために、反転処理が行われない輝度画像データが用いられ、第２の二値画像データ生成処理では、背景よりも輝度が高い文字を構成する文字画素を特定するために、反転処理が行われた輝度画像データが用いられても良い。
【０１１５】
（７）上記各実施例では、文字画素に対して、文字鮮鋭化処理が実行され（図２のＳ４０）、非文字画素に対して、網点平滑化処理が実行される（図２のＳ３０）。これに代えて、文字画素に対しては、文字の見栄えを向上するためのアンチエイリアス処理が実行されても良い。また、非文字画素に対しては、例えば、印刷時の色材の使用量を減らすために、色を飛ばす処理（白に変換する処理）が実行されても良い。一般的には、文字画素と、非文字画素と、に互いに異なる画像処理が実行されることが好ましい。あるいは、文字画素と非文字画素のいずれか一方に対して、特定の画像処理が実行され、他方に対して、該特定の画像処理が実行されなくても良い。
【０１１６】
（８）上記実施例の図９のブロック判定処理では、全てのブロックＢＬについての判断の後に、ブロック判定データに、不明を示す値が残っている場合には（Ｓ４６０：ＹＥＳ）、ＣＰＵ２１０は、Ｓ４６５にて、不明を示す値を、文字を示す値に設定する。これは、文字画素の一部が、誤って非文字画素として特定されることを抑制して、文字の一部がぼけるなどの不都合を避けるためである。例えば、非文字画素の一部が、誤って文字画素として特定されることを抑制して、網点が目立つなどの不都合を避けることを重視する場合には、ＣＰＵ２１０は、Ｓ４６５にて、不明を示す値を、非文字を示す値に設定しても良い。
【０１１７】
（９）上記実施例では、第１の二値画像データと、第２の二値画像データと、を用いて、最終的に、文字特定データが生成される（図２のＳ２１〜Ｓ２７）。これに代えて、第１の二値画像データと、第２の二値画像データと、第３の二値画像データと、を用いて、文字特定データが生成されても良い。例えば、図２のＳ２６とＳ２７の間で、上述した最大成分データを用いて生成され、該最大成分データが二値化されて、第３の二値画像データが生成される。そして、第３の二値画像データと、Ｓ２２で生成された第１のブロック判定処理と、の論理積をとることによって、第３の文字特定データが生成される。そして、図２のＳ２７では、第１の二値画像データを用いて生成された第１の文字特定データ（図２のＳ２３）と、第２の二値画像データを用いて生成された第２の文字特定データ（図２のＳ２６）と、第３の二値画像データを用いて生成された第３の文字特定データと、の論理和を取ることによって、最終的な文字特定データが生成されても良い。これによって、文字画素の特定漏れをさらに抑制することができる。
【０１１８】
（１０）上記実施例のブロック判定処理では、縦（Ｌ×Ｍ）画素×横（Ｌ×Ｍ）画素の注目ブロックを、Ｍ画素ずつずらしながら、文字ブロックであるか否かを判断するので、スキャン画像ＳＩ上に配置される複数個のブロックは互いに重複している（図１０）。これに代えて、複数個のブロックが互いに重複しないように、スキャン画像ＳＩ上に複数個のブロックが配置されても良い。
【０１１９】
（１１）上記実施例のブロック判定処理では、ＣＰＵ２１０は、注目ブロックが、文字ブロック、非文字ブロック、不明ブロックのいずれであるかを判断している。これに代えて、ＣＰＵ２１０は、注目ブロックが、文字ブロックと非文字ブロックとのいずれであるかを判断しても良い。この場合には、例えば、Ｓ４１５で用いる閾値ＴＨ１と、Ｓ４２５で用いる閾値ＴＨ２と、を同じ値にすれば良い。例えば、ＴＨ１＝ＴＨ２＝５０％とすれば良い。
【０１２０】
（１２）上記実施例では、上述したように、図９のＳ４２０、Ｓ４３０に示すように、注目ブロックが文字ブロックまたは非文字ブロックであると判断されると、ブロック判定データにおいて、注目ブロック内の全ての画素の値が、判断結果に応じて設定される。これに代えて、ブロック判定データにおいて、注目ブロック内のＮ個の画素のうち、不明を示す値を有する画素の値だけが、判断結果に応じて設定されても良い。すなわち、互いに重複する第１のブロックと第２のブロックとの両方が、不明ブロック以外のブロック（すなわち、文字ブロックまたは非文字ブロック）であると判断されるとする。この場合には、第１のブロックと第２のブロックの重複領域については、第１のブロックと第２のブロックとのうち、判断の処理順序が先のブロックについての判断結果が優先されても良い。
【０１２１】
（１３）上記実施例では、対象画像データは、スキャンデータであるが、これに限られない。対象画像データは、２次元イメージセンサを備えるデジタルカメラによって印刷物を読み取ることによって生成されても良い。また、対象画像データは、描画作成や文書作成などのアプリケーションプログラムを用いて作成された画像データであっても良い。
【０１２２】
（１４）図２の画像処理を実現する画像処理装置は、複合機２００に限らず、種々の装置であってよい。例えば、スキャナやデジタルカメラが、自身で生成された画像データを用いて、プリンタに供給するための印刷データを生成するために、図２の画像処理を実行しても良い。また、例えば、スキャナやプリンタと通信可能な接続される端末装置（例えば、端末装置１００）やサーバ（図示省略）が、スキャナから取得したスキャンデータを用いて、図２の画像処理を実行して、印刷データを生成し、該印刷データをプリンタに供給しても良い。また、ネットワークを介して互いに通信可能な複数個のコンピュータ（例えば、クラウドサーバ）が、画像処理に要する機能を一部ずつ分担して、全体として、画像処理を実行してもよい。この場合、複数個のコンピュータの全体が、画像処理装置の例である。
【０１２３】
（１５）上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図９のＳ４１０の機械学習モデルを用いて文字確率Ｔｘｒを算出する処理は、ＡＳＩＣなどの専用のハードウェアによって、実行されても良い。
【０１２４】
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨並びに特許請求の範囲を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。
【符号の説明】
【０１２５】
１００…端末装置、２００…複合機、２１０…ＣＰＵ、２２０…揮発性記憶装置、２３０…不揮発性記憶装置、２４０…表示部、２５０…操作部、２７０…通信ＩＦ、２８０…印刷実行部、２９０…読取実行部、Ｖｍｉｎ…最小成分値、Ｖｍａｘ…最大成分値、ＶＲｍｉｎ…反転最小成分値、Ｄ１…第１方向、Ｄ２…第２方向、ＳＢ…サブブロック、ＴＢ…文字ブロック、ＯＢ…非文字ブロック、ＰＧ…コンピュータプログラム、ＴＩ…文字特定画像、ＧＩ…平滑化画像、ＦＩ…処理済み画像、ＹＩ…輝度画像、ＢＩ…ブロック判定画像、ＳＩ…スキャン画像、ＢＬ…ブロック、ＤＴ…網点、Ｐｘ…画素、Ｔｘ…文字、Ｏｂ１〜Ｏｂ７…オブジェクト、ＭＮＩ…最小成分画像、Ｂｇ１〜Ｂｇ３…背景
【図１】
2019114927.tif 000003
【図２】
2019114927.tif 000004
【図３】
2019114927.tif 000005
【図４】
2019114927.tif 000006
【図５】
2019114927.tif 000007
【図６】
2019114927.tif 000008
【図７】
2019114927.tif 000009
【図８】
2019114927.tif 000010
【図９】
2019114927.tif 000011
【図１０】
2019114927.tif 000012
【図１１】
2019114927.tif 000013
【図１２】
2019114927.tif 000014
【図１３】
2019114927.tif 000015