(57)【要約】【課題】  孤立している第１種の画素を第２種の画素に補正する処理を迅速に実行し得る技術を提供すること。【解決手段】  ＰＣは、参照矩形の外縁を構成する各ＯＦＦ画素について、隣接判断を実行すべきか否かを示す解析テーブルを格納する。ＰＣは、原稿の読取りによって生成される二値画像データ内に参照矩形を設定し（Ｓ３００）、参照矩形内の９個の画素に対するグループ解析処理（Ｓ３１０〜Ｓ３３０，Ｓ３３４）を実行する。グループ解析処理は、解析テーブルから、参照矩形内の９個の画素に対応するフラグ値（１０）を取得する処理（Ｓ３１２）と、フラグ値（１０）において隣接判断を実行すべきことが示されている画素に対する隣接判断を実行する処理（Ｓ３２０）と、隣接判断において隣接しないと判断される場合に、ＯＦＦ画素をＯＮ画素に補正する処理と、を含む。【選択図】図７
2018037869.tif 000002
【特許請求の範囲】
【請求項１】
画像解析装置であって、
複数個の画素配置パターンに対応する複数個の参照データを格納するメモリであって、前記画素配置パターンは、第１方向に沿って並ぶＭ個（Ｍは２以上の整数）の画素と、前記第１方向に直交する第２方向に沿って並ぶＮ個の画素（Ｎは２以上の整数）と、のそれぞれが辺である矩形領域内の（Ｍ×Ｎ）個の画素によって構成される画素グループ内の第１種の画素及び第２種の画素の配置パターンであり、前記参照データは、前記画素グループの外縁を構成するＬ個（Ｌは「Ｌ＝（２×Ｍ）＋（２×Ｎ）−４」を満たす整数）の外縁画素のうちの１個以上の前記第１種の画素のそれぞれについて、当該第１種の画素に対する判断処理を実行すべきか否かを示すデータであり、前記判断処理は、前記外縁画素である前記第１種の画素が前記画素グループ外の前記第１種の画素に隣接するのか否かを判断するための処理である、前記メモリと、
原稿の読取りによって生成される対象画像データを取得する取得部であって、前記対象画像データは、前記第１方向に沿って並ぶ複数個の画素と、前記第２方向に沿って並ぶ複数個の画素と、によって構成される、前記取得部と、
前記対象画像データから、前記第１方向に沿って並ぶＭ個の画素と、前記第２方向に沿って並ぶＮ個の画素と、のそれぞれが辺である矩形領域内の（Ｍ×Ｎ）個の画素によって構成される対象画素グループを特定するグループ特定部と、
前記対象画素グループに対するグループ解析処理を実行する解析部と、を備え、
前記グループ解析処理は、
前記メモリ内の前記複数個の参照データの中から、前記対象画素グループ内の画素配置パターンに対応する対象参照データを特定するデータ特定処理と、
前記対象画素グループの外縁を構成するＬ個の外縁画素のうちの１個以上の対象外縁画素のそれぞれに対する前記判断処理であって、前記１個以上の対象外縁画素のそれぞれは、前記対象参照データにおいて、前記判断処理を実行すべきことが示されている前記第１種の画素である、前記判断処理と、
前記１個以上の対象外縁画素のいずれに対する前記判断処理でも前記対象画素グループ外の前記第１種の画素に隣接しないと判断される場合に、前記対象画素グループに含まれる少なくとも１個の前記第１種の画素を前記第２種の画素に補正する補正処理と、
を含む、画像解析装置。
【請求項２】
前記グループ特定部は、前記対象画像データから、複数個の前記対象画素グループのそれぞれを順次特定し、
前記解析部は、前記複数個の対象画素グループのそれぞれに対する前記グループ解析処理を順次実行する、請求項１に記載の画像解析装置。
【請求項３】
前記複数個の画素配置パターンを有する複数個の前記画素グループのそれぞれは、互いに隣接する２個以上の前記第１種の画素によって構成される注目画素グループを含み、
前記複数個の参照データのそれぞれは、
前記注目画素グループ内の少なくとも１個の前記第１種の画素に対する前記判断処理を実行すべきことを示し、
当該参照データに対応する前記画素配置パターンを有する前記画素グループが、前記注目画素グループ内のいずれの前記第１種の画素にも隣接しない前記第１種の画素である非隣接画素を含む場合に、前記非隣接画素に対する前記判断処理を実行すべきでないことを示す、請求項１又は２に記載の画像解析装置。
【請求項４】
前記隣接は、前記第１方向又は前記第２方向に沿って２個の前記第１種の画素が隣り合うことを含み、前記第１方向と前記第２方向との間の中間方向に沿って２個の前記第１種の画素が隣り合うことを含まない、請求項１から３のいずれか一項に記載の画像解析装置。
【請求項５】
前記対象画像データは、前記第２方向に沿って並ぶ複数本のライン画素グループによって構成され、
前記複数本のライン画素グループのそれぞれは、前記第１方向に沿って並ぶ複数個の画素によって構成され、
前記画像解析装置は、さらに、
前記第２方向の第１側から第２側に向かって、前記対象画像データから、前記複数本のライン画素グループのそれぞれを順次特定するライン特定部を備え、
前記複数本のライン画素グループのうちのｎ番目（ｎは１以上の整数）のライン画素グループが特定され、かつ、前記ｎ番目のライン画素グループが、前記第１種の画素である第１の注目画素を含む第１の場合に、
前記グループ特定部は、前記第２方向の前記第１側の外縁を構成する画素として前記第１の注目画素を含む第１の前記対象画素グループを特定し、
前記解析部は、前記第１の対象画素グループに対する前記グループ解析処理を実行し、
前記複数本のライン画素グループのうちの（ｎ＋１）番目のライン画素グループが特定され、かつ、前記（ｎ＋１）番目のライン画素グループが、前記第１の注目画素に隣接する前記第１種の画素である第２の注目画素を含む第２の場合に、
前記グループ特定部は、前記第２方向の前記第１側の外縁を構成する画素として前記第２の注目画素を含む第２の前記対象画素グループを特定せず、
前記解析部は、前記第２の対象画素グループに対する前記グループ解析処理を実行しない、請求項１から４のいずれか一項に記載の画像解析装置。
【請求項６】
前記複数個の参照データのそれぞれは、
当該参照データに対応する前記画素配置パターンを有する前記画素グループが、前記第２方向の前記第１側の外縁を構成するｍ個（前記ｍは１以上Ｍ以下の整数）の前記第１種の画素を含む場合に、前記ｍ個の第１種の画素のそれぞれについて、当該第１種の画素が、前記第２方向の前記第１側において、前記画素グループ外の前記第１種の画素に隣接するのか否かを判断するための前記判断処理を実行すべきでないことを示す、請求項５に記載の画像解析装置。
【請求項７】
前記解析部は、
前記第１の場合であり、かつ、前記第１の対象画素グループに対する前記グループ解析処理において、前記１個以上の対象外縁画素のいずれに対する前記判断処理でも前記第１の対象画素グループ外の前記第１種の画素に隣接しないと判断される場合に、前記第１の注目画素を前記第２種の画素に補正し、
前記第２の場合であり、かつ、前記第１の対象画素グループに対する前記グループ解析処理において、前記１個以上の対象外縁画素のいずれに対する前記判断処理でも前記第１の対象画素グループ外の前記第１種の画素に隣接しないと判断される場合に、前記第２の対象画素グループに対する前記グループ解析処理が実行されないにも関わらず、前記第２の注目画素を前記第２種の画素に補正する、請求項５又は６に記載の画像解析装置。
【請求項８】
前記グループ特定部は、前記第２方向の第１側の外縁を構成する画素として前記第１種の画素を含む前記対象画素グループを特定し、
前記対象画素グループに含まれる前記１個以上の対象外縁画素のうち、前記第２方向の第２側の外縁を構成する第２側外縁画素に対する前記判断処理において、前記第２側外縁画素が前記第２方向の前記第２側において前記対象画素グループ外の前記第１種の画素に隣接すると判断される場合に、前記対象画素グループに対する前記補正処理は実行されない、請求項１から７のいずれか一項に記載の画像解析装置。
【請求項９】
前記グループ特定部は、前記第１方向の第３側の外縁を構成する画素として前記第１種の画素を含む前記対象画素グループを特定し、
前記対象画素グループに含まれる前記１個以上の対象外縁画素のうち、前記第１方向の第４側の外縁を構成する第４側外縁画素に対する前記判断処理において、前記第４側外縁画素が前記第１方向の前記第４側において前記対象画素グループ外の前記第１種の画素に隣接すると判断される場合に、前記対象画素グループに対する前記補正処理は実行されない、請求項１から８のいずれか一項に記載の画像解析装置。
【請求項１０】
前記グループ特定部は、前記第１方向の第３側の外縁を構成する画素として前記第１種の画素である注目画素を含む前記対象画素グループを特定し、
前記対象画素グループに含まれる前記１個以上の対象外縁画素のうち、前記第１方向の前記第３側の外縁を構成する第３側外縁画素に対する前記判断処理において、前記第３側外縁画素が前記第１方向の前記第３側において前記画素グループ外の前記第１種の画素に隣接すると判断される場合に、
前記対象画素グループに対する前記補正処理は実行されず、
前記グループ特定部は、前記対象画像データから、前記対象画素グループを１個の画素分だけ前記第１方向の前記第３側に移動させることによって得られる新たな対象画素グループを特定し、
前記解析部は、前記新たな対象画素グループに対する前記グループ解析処理を実行して、前記１個以上の対象外縁画素のいずれに対する前記判断処理でも前記新たな対象画素グループ外の前記第１種の画素に隣接しないと判断される場合に、前記新たな対象画素グループに含まれる少なくとも前記注目画素を前記第２種の画素に補正する前記補正処理を実行する、請求項１から９のいずれか一項に記載の画像解析装置。
【請求項１１】
前記第１種の画素は、閾値より大きい輝度値を有する画素であり、
前記第２種の画素は、前記閾値以下の輝度値を有する画素である、請求項１から１０のいずれか一項に記載の画像解析装置。
【請求項１２】
前記メモリは、前記複数個の画素配置パターンのそれぞれについて、当該画素配置パターンが所定の規則に従って数値化された参照値と、当該画素配置パターンに対応する前記参照データと、を関連付けて格納し、
前記グループ解析処理は、さらに、前記所定の規則に従って、前記対象画素グループの画素配置パターンから対象参照値を算出する算出処理を含み、
前記データ特定処理では、前記メモリ内の前記複数個の参照データの中から、前記対象参照値に関連付けられている前記対象参照データを特定する、請求項１から１１のいずれか一項に記載の画像解析装置。
【請求項１３】
画像解析装置のためのコンピュータプログラムであって、
前記画像解析装置は、複数個の画素配置パターンに対応する複数個の参照データを格納するメモリであって、前記画素配置パターンは、第１方向に沿って並ぶＭ個（Ｍは２以上の整数）の画素と、前記第１方向に直交する第２方向に沿って並ぶＮ個の画素（Ｎは２以上の整数）と、のそれぞれが辺である矩形領域内の（Ｍ×Ｎ）個の画素によって構成される画素グループ内の第１種の画素及び第２種の画素の配置パターンであり、前記参照データは、前記画素グループの外縁を構成するＬ個（Ｌは「Ｌ＝（２×Ｍ）＋（２×Ｎ）−４」を満たす整数）の外縁画素のうちの１個以上の前記第１種の画素のそれぞれについて、当該第１種の画素に対する判断処理を実行すべきか否かを示すデータであり、前記判断処理は、前記外縁画素である前記第１種の画素が前記画素グループ外の前記第１種の画素に隣接するのか否かを判断するための処理である、前記メモリを備え、
前記コンピュータプログラムは、前記画像解析装置に搭載されるコンピュータに、以下の各処理、即ち、
原稿の読取りによって生成される対象画像データを取得する取得処理であって、前記対象画像データは、前記第１方向に沿って並ぶ複数個の画素と、前記第２方向に沿って並ぶ複数個の画素と、によって構成される、前記取得処理と、
前記対象画像データから、前記第１方向に沿って並ぶＭ個の画素と、前記第２方向に沿って並ぶＮ個の画素と、のそれぞれが辺である矩形領域内の（Ｍ×Ｎ）個の画素によって構成される対象画素グループを特定するグループ特定処理と、
前記対象画素グループに対するグループ解析処理と、を実行させ、
前記グループ解析処理は、
前記メモリ内の前記複数個の参照データの中から、前記対象画素グループ内の画素配置パターンに対応する対象参照データを特定するデータ特定処理と、
前記対象画素グループの外縁を構成するＬ個の外縁画素のうちの１個以上の対象外縁画素のそれぞれに対する前記判断処理であって、前記１個以上の対象外縁画素のそれぞれは、前記対象参照データにおいて、前記判断処理を実行すべきことが示されている前記第１種の画素である、前記判断処理と、
前記１個以上の対象外縁画素のいずれに対する前記判断処理でも前記画素グループ外の前記第１種の画素に隣接しないと判断される場合に、前記対象画素グループに含まれる少なくとも１個の前記第１種の画素を前記第２種の画素に補正する補正処理と、
を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書では、第１種の画素を第２種の画素に補正する画像解析装置を開示する。
【背景技術】
【０００２】
下記の特許文献１には、ＦＡＸアダプタから復号化された入力シート画情報を受信した際に、他の黒画素が隣接しない黒画素（いわゆる孤立している黒画素）を白画素に変換するイメージ解析装置が開示されている。具体的には、イメージ解析装置は、黒画素を検出すると、当該黒画素に隣接している８個の画素をチェックする。そして、イメージ解析装置は、上記の８個の画素の全てが白画素である場合には、黒画素を白画素に変換する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−３４４３３５号公報
【特許文献２】特開平５−３４２４１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術では、黒画素が孤立しているのか否かを判断するために、当該黒画素に隣接している全ての画素をチェックする必要がある。このために、孤立している黒画素を白画素に変換するための処理に長時間を要する。本明細書では、孤立している第１種の画素を第２種の画素に補正する処理を迅速に実行し得る技術を提供する。
【課題を解決するための手段】
【０００５】
本明細書によって開示される画像解析装置は、複数個の画素配置パターンに対応する複数個の参照データを格納するメモリであって、前記画素配置パターンは、第１方向に沿って並ぶＭ個（Ｍは２以上の整数）の画素と、前記第１方向に直交する第２方向に沿って並ぶＮ個の画素（Ｎは２以上の整数）と、のそれぞれが辺である矩形領域内の（Ｍ×Ｎ）個の画素によって構成される画素グループ内の第１種の画素及び第２種の画素の配置パターンであり、前記参照データは、前記画素グループの外縁を構成するＬ個（Ｌは「Ｌ＝（２×Ｍ）＋（２×Ｎ）−４」を満たす整数）の外縁画素のうちの１個以上の前記第１種の画素のそれぞれについて、当該第１種の画素に対する判断処理を実行すべきか否かを示すデータであり、前記判断処理は、前記外縁画素である前記第１種の画素が前記画素グループ外の前記第１種の画素に隣接するのか否かを判断するための処理である、前記メモリと、原稿の読取りによって生成される対象画像データを取得する取得部であって、前記対象画像データは、前記第１方向に沿って並ぶ複数個の画素と、前記第２方向に沿って並ぶ複数個の画素と、によって構成される、前記取得部と、前記対象画像データから、前記第１方向に沿って並ぶＭ個の画素と、前記第２方向に沿って並ぶＮ個の画素と、のそれぞれが辺である矩形領域内の（Ｍ×Ｎ）個の画素によって構成される対象画素グループを特定するグループ特定部と、前記対象画素グループに対するグループ解析処理を実行する解析部と、を備え、前記グループ解析処理は、前記メモリ内の前記複数個の参照データの中から、前記対象画素グループ内の画素配置パターンに対応する対象参照データを特定するデータ特定処理と、前記対象画素グループの外縁を構成するＬ個の外縁画素のうちの１個以上の対象外縁画素のそれぞれに対する前記判断処理であって、前記１個以上の対象外縁画素のそれぞれは、前記対象参照データにおいて、前記判断処理を実行すべきことが示されている前記第１種の画素である、前記判断処理と、前記１個以上の対象外縁画素のいずれに対する前記判断処理でも前記対象画素グループ外の前記第１種の画素に隣接しないと判断される場合に、前記対象画素グループに含まれる少なくとも１個の前記第１種の画素を前記第２種の画素に補正する補正処理と、を含む。
【０００６】
上記の構成では、メモリは、複数個の画素配置パターンに対応する複数個の参照データを格納している。このために、画像解析装置は、複数個の参照データのうちの対象参照データを利用して、１個以上の対象外縁画素のうちのどの画素に対する判断処理を実行すればよいのかを知ることができる。画像解析装置は、１個以上の対象外縁画素の全てに対する判断処理を実行せずに済み得るので、判断処理を迅速に実行し得る。この結果、画像解析装置は、孤立している第１種の画素を第２種の画素に迅速に補正し得る。
【０００７】
上記の画像解析装置を実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記録媒体も新規で有用である。
【図面の簡単な説明】
【０００８】
【図１】本実施例のハードウェア構成を模式的に示す。
【図２】ＰＣ（Personal Computerの略）によって実行されるドライバ処理のフローチャートを示す。
【図３】二値画像とグループ情報と補正済み画像のそれぞれの一例を示す。
【図４】孤立ＯＦＦ画素補正処理のフローチャートを示す。
【図５】判定処理のフローチャートを示す。
【図６】判定処理の内容を説明するための説明図を示す。
【図７】解析処理のフローチャートを示す。
【図８】解析テーブルの一例とそれを説明するための説明図を示す。
【図９】具体的なケースを示す。
【発明を実施するための形態】
【０００９】
（ＰＣ１０の構成；図１）
ＰＣ１０は、ＬＡＮ（Local Area Networkの略）を介して、スキャナ５０と通信可能に接続されている。ＰＣ１０は、操作部１２と、表示部１４と、ネットワークインターフェース１６と、制御部３０と、を備える。操作部１２は、マウス、キーボード等を含む。ユーザは、操作部１２を操作することによって、様々な指示をＰＣ１０に入力することができる。表示部１４は、様々な情報を表示するためのディスプレイである。ネットワークインターフェース１６は、ＬＡＮに接続されている。
【００１０】
制御部３０は、ＣＰＵ３２とメモリ３４とを備える。メモリ３４は、ＲＯＭ（Read Only Memoryの略）、ＲＡＭ（Random Access Memoryの略）等によって構成される。ＣＰＵ３２は、メモリ３４に格納されている各種のプログラムに従って、様々な処理（例えば後述の図２の処理）を実行するプロセッサである。プログラムは、図示省略のＯＳ（Operating Systemの略）プログラム、ドライバプログラム３６等を含む。
【００１１】
ドライバプログラム３６は、スキャナ５０のベンダによって提供され、スキャナ５０に関連する処理を実行するためのプログラムである。ドライバプログラム３６は、例えば、スキャナ５０と共に出荷されるメディアからＰＣ１０にインストールされてもよいし、スキャナ５０のベンダによって提供されるインターネット上のサーバからＰＣ１０にインストールされてもよい。
【００１２】
ＣＰＵ３２は、ユーザから操作部１２に対するスキャン実行操作を受け付ける場合に、ドライバプログラム３６に従って、原稿の読取りをスキャナ５０に実行させるためのスキャン指示１００をスキャナ５０に供給する。スキャン指示１００は、読取解像度、原稿のサイズ等の読取設定を含む。これにより、スキャナ５０は、読取設定に従って原稿の読取りを実行して、スキャンデータ１１０を生成する。そして、スキャナ５０は、スキャンデータ１１０をＰＣ１０に供給する。この結果、ＣＰＵ３２は、スキャナ５０からスキャンデータ１１０を取得する。
【００１３】
ＣＰＵ３２は、ユーザから、原稿に含まれる一次元バーコードをデコードするためのデコード操作を受け付けることができる。一次元バーコードは、文字、記号等の組合せが複数本のバーによって表現されたものである。一次元バーコードを含む原稿は、例えば、オフィスの書類、病院のカルテ等である。例えば、オフィスの書類に含まれる一次元バーコードは、当該書類を表わすスキャンデータの保存先のフォルダを特定するための文字、記号等に対応する。ＣＰＵ３２は、上記のデコード操作を受け付け、かつ、スキャンデータ１１０を取得する場合に、ドライバプログラム３６に従って、スキャンデータ１１０によって表わされるスキャン画像１１２に含まれるバーコード画像のデコードを実行する。そして、ＣＰＵ３２は、デコード結果に応じた処理を実行する。例えば、ＣＰＵ３２は、デコード結果が示すメモリ３４内のフォルダにスキャンデータ１１０を格納する。なお、図１では、スキャン画像１１２がバーコード画像のみを含むように表現されているが、実際には、スキャン画像１１２は、バーコード画像のみならず、他の画像（例えば、テキスト、写真、図表等）を含む。
【００１４】
本実施例では、特に、ＣＰＵ３２は、バーコード画像のデコードを適切に実行するために、スキャン画像１１２から二値画像１１４を生成し、二値画像１１４を補正して補正済み画像１１６を生成し、補正済み画像１１６に含まれるバーコード画像のデコードを実行する。このような補正は、以下のような原稿がスキャナ５０によってスキャンされる際に有効である。例えば、ディザ法を利用したハーフトーン処理を含む印刷によって生成された原稿では、印刷材が付着した付着領域と印刷材が付着していない非付着領域とがマトリクス状に並ぶことによって、バーコードを構成する各バーが表現され得る。このような原稿の読取りが実行されると、スキャン画像１１２内のバーコード画像において、上記の付着領域に対応する画素（即ち図１の黒色で表現されている画素）と上記の非付着領域に対応する画素（即ち白色で表現されている画素）とがマトリクス状に並ぶ。この場合、バーコード画像のデコードが実行される際に、各バーの太さを適切に認識することができない可能性がある。特に、グレースケール印刷によって原稿が生成される場合、レーザー印刷によって原稿が生成される場合等には、上記の可能性が高まり得る。本実施例によると、ＣＰＵ３２は、二値画像１１４内のバーコード画像において、白色で表現されている画素を黒色で表現されている画素に補正することによって、補正済み画像１１６を生成する。この結果、ＣＰＵ３２は、補正済み画像１１６に含まれるバーコード画像から各バーの太さを適切に認識することができる。なお、変形例では、読取対象の原稿は、誤差拡散法を利用したハーフトーン処理を含む印刷によって生成された原稿であってもよいし、カラー印刷によって生成された原稿であってもよいし、インクジェット印刷によって生成された原稿であってもよい。
【００１５】
（ＰＣ１０のドライバプログラム３６の処理；図２）
続いて、図２を参照して、ＣＰＵ３２が、上記のデコード操作を受け付ける場合に、ドライバプログラム３６に従って実行するドライバ処理の内容を説明する。
【００１６】
Ｓ１０では、ＣＰＵ３２は、スキャナ５０から、ネットワークインターフェース１６を介して、スキャン画像１１２を表わすスキャンデータ１１０を取得する。スキャンデータ１１０は、ｘ方向（即ちスキャン画像１１２内の左右方向）に沿って並ぶ複数個の画素と、ｙ方向（即ちスキャン画像１１２内の上下方向）に沿って並ぶ複数個の画素と、によって構成される。各画素は、２５６階調（即ち「０〜２５５」）の画素値（具体的には、Ｒ値、Ｇ値、及び、Ｂ値）を示す。なお、本実施例では、スキャンデータ１１０は、１００ｄｐｉの読取解像度で原稿が読取られることによって生成されるデータを想定している。
【００１７】
Ｓ１２では、ＣＰＵ３２は、スキャンデータ１１０に対する輝度値変換処理を実行する。具体的には、ＣＰＵ３２は、スキャンデータ１１０を構成する複数個の画素のそれぞれについて、当該画素が示す画素値（即ちＲ値とＧ値とＢ値）をＳ１２内の数式に従って輝度値（即ちＹ値）に変換して、２５６階調の輝度値（即ち「０〜２５５」）を示す新たな画素を生成する。これにより、輝度値を示す複数個の画素によって構成される輝度画像データが生成される。本実施例では、読取対象の原稿は、白色（即ちＲ＝Ｇ＝Ｂ＝２５５）の背景を有する。従って、原稿の背景を示す輝度値（即ちＹ値）は、通常、２５５になり、原稿の背景以外を示す輝度値は、通常、２５５未満の値になる。
【００１８】
Ｓ１４では、ＣＰＵ３２は、Ｓ１２で生成された輝度画像データに対する二値化処理を実行する。具体的には、ＣＰＵ３２は、輝度画像データを構成する複数個の画素のそれぞれについて、当該画素が示す輝度値を「１」又は「０」に変換して、「１」又は「０」を示す新たな画素を生成する。より具体的には、ＣＰＵ３２は、輝度値が予め決められている閾値（例えば２００）以下である場合には、「１」を示す画素を生成し、輝度値が閾値以下である場合には、「０」を示す画素を生成する。即ち、原稿の背景を表わす画素が「０」で表現され、原稿の背景以外を表わす画素が「１」で表現される。これにより、「１」又は「０」を示す複数個の画素によって構成される二値画像データが生成される。以下では、「１」を示す画素、「０」を示す画素を、それぞれ、「ＯＮ画素」、「ＯＦＦ画素」と呼ぶ。図３には、Ｓ１４で生成される二値画像データによって表わされる二値画像２００の一部の例が示されている。二値画像１２０では、ＯＮ画素が塗りつぶしで表現されており、ＯＦＦ画素が白色で表現されている。
【００１９】
Ｓ１６では、ＣＰＵ３２は、Ｓ１４で生成された二値画像データに対する孤立ＯＦＦ画素補正処理を実行して、補正済み画像データを生成する。当該処理は、二値画像データ内の孤立しているＯＦＦ画素（以下では「孤立ＯＦＦ画素」と呼ぶ）をＯＮ画素に補正するための処理である。図３には、Ｓ１６で生成される補正済み画像データによって表わされる補正済み画像３００の一部の例が示されている。補正済み画像３００は、二値画像２００内の参照矩形２００ａに含まれる４個の孤立ＯＦＦ画素Ｇ１〜Ｇ３のそれぞれがＯＮ画素に補正されたものである。孤立ＯＦＦ画素は、ｘ方向に沿って並ぶ３個の画素とｙ方向に沿って並ぶ３個の画素とのそれぞれが辺である参照矩形内に収まるＯＦＦ画素である。なお、変形例では、参照矩形の一辺を構成する画素数は、３でなくてもよく、２又は４以上であってもよい。例えば、３００ｄｐｉの読取解像度で原稿が読取られることによって得られるスキャンデータに対して処理が実行される場合には、参照矩形の一辺を構成する画素数は９であってもよい。また、参照矩形のｘ方向に沿った一辺の画素数（例えば３）とｙ方向に沿った一辺の画素数（例えば４）とが異なっていてもよい。上記の「参照矩形内に収まるＯＦＦ画素」は、参照矩形外のＯＦＦ画素に隣接しないことを意味する。なお、互いに隣接する複数個のＯＦＦ画素が存在し、当該複数個のＯＦＦ画素が参照矩形内に収まる場合には、当該複数個のＯＦＦ画素のそれぞれが孤立ＯＦＦ画素として扱われる。ここで、本実施例では、「隣接」は、ｘ方向又はｙ方向に沿って隣り合うことを含み、ｘ方向とｙ方向との間の中間方向（即ち斜め方向）に沿って隣り合うことを含まない。なお、変形例では、「隣接」は、斜め方向に沿って隣り合うことを含んでいてもよい。
【００２０】
Ｓ１８では、ＣＰＵ３２は、補正済み画像３００に含まれるバーコード画像のデコードを実行する。デコードは、バーコード画像を構成する複数本のバーから文字、記号等の組合せを特定するための処理である。デコードは、公知の様々な手法のいずれかが利用されて実行されてもよい。Ｓ１８が終了すると、図２の処理が終了する。
【００２１】
（孤立ＯＦＦ画素補正処理；図４）
図４を参照して、図２のＳ１６で実行される孤立ＯＦＦ画素補正処理の内容を説明する。Ｓ１００では、ＣＰＵ３２は、処理対象のラインのｙ座標を「１」に設定することによって、ｙ番目（即ち１番目）のラインを特定する。ラインは、二値画像内のｘ方向に沿って並ぶ複数個の画素によって構成される。例えば、図３の二値画像２００では、ｙ方向の上側から下側に向かってｙ座標が大きくなる。この場合、１番目のラインは、最も上に存在するラインである。なお、二値画像２００では、ｘ方向の左側から右側に向かってｘ座標が大きくなる。詳しくは後述するが、ＣＰＵ３２は、「ｙ＝１」に対応する１番目のラインに対応する処理（Ｓ１０２〜Ｓ１４６参照）が終了すると、「ｙ＝２」に対応する２番目のライン、「ｙ＝３」に対応する３番目のライン等を順次特定して（Ｓ１５２参照）、同様の処理を順次実行する。即ち、ＣＰＵ３２は、ｙ方向の上側から下側に向かって、二値画像２００内の複数本のラインのそれぞれを順次特定して（Ｓ１００、Ｓ１５２）、特定済みの各ラインに対応する処理（Ｓ１０２〜Ｓ１４６参照）を順次実行する。
【００２２】
Ｓ１０２では、ＣＰＵ３２は、ｙ番目のラインを構成する複数個の画素を利用して、グループ情報をメモリ３４内のワーク領域内に書き込む（即ち生成する）。ワーク領域は、処理の過程で一時的に情報を記憶するためのＲＡＭ内の領域である。グループ情報は、ｙ番目のラインに含まれるＯＮ画素及びＯＦＦ画素の配列を示す数字列である。具体的には、ＣＰＵ３２は、まず、ｙ番目のラインの左端から連続する１個以上のＯＮ画素の画素数を書き込み、次いで、当該１個以上のＯＮ画素の右端から連続する１個以上のＯＦＦ画素の画素数を書き込み、次いで、当該１個以上のＯＦＦ画素の右端から連続する１個以上のＯＮ画素の画素数を書き込む。ＣＰＵ３２は、この処理を繰り返し実行することによって、グループ情報を書き込む。例えば、図３の二値画像２００内の１番目（即ちｙ＝１）のラインは、３０個のＯＮ画素のみによって構成されている。従って、グループ情報２５０に示されるように、ＣＰＵ３２は、１番目のラインのグループ情報として数字列「３０」を書き込む。また、例えば、二値画像２００内の２番目（即ちｙ＝２）のラインは、左端から順に、４個のＯＮ画素、２個のＯＦＦ画素Ｇ１、５個のＯＮ画素、５個のＯＦＦ画素Ｇ４、７個のＯＮ画素、１個のＯＦＦ画素Ｇ５、及び、６個のＯＮ画素によって構成されている。従って、ＣＰＵ３２は、２番目のラインのグループ情報として数字列「４、２、５、５、７、１、６」を書き込む。なお、ＣＰＵ３２は、処理対象のラインの左端にＯＦＦ画素が存在する場合には、グループ情報の最も左側の数字として「０」を書き込む。例えば、処理対象のラインが３０個のＯＦＦ画素のみによって構成される場合には、ＣＰＵ３２は、グループ情報として数字列「０、３０」を書き込む。
【００２３】
Ｓ１１０では、ＣＰＵ３２は、処理対象のグループのグループ番号ｎを「１」に設定することによって、ｎ番目（即ち１番目）のグループを特定する。グループ番号ｎは、Ｓ１０２で生成されたグループ情報を構成する数字列において、左から順に、「１」、「２」、「３」・・・と昇順に付される番号である。従って、グループ番号ｎによって特定されるグループは、ｙ番目のライン内の連続する１個以上のＯＮ画素又は連続する１個以上のＯＦＦ画素を意味する。例えば、図３のグループ情報２５０に示されるように、１番目のラインのグループ情報として数字列「３０」が記憶される。この場合、１番目（即ちｎ＝１）のグループ（即ち数字「３０」）は、連続する３０個のＯＮ画素である。また、例えば、２番目のラインのグループ情報として数字列「４、２、５、５、７、１、６」が記憶される。この場合、１番目（即ちｎ＝１）のグループ（即ち数字「４」）は、２番目のラインの左端から連続する４個のＯＮ画素であり、２番目（即ちｎ＝２）のグループ（即ち数字「２」）は、当該４個のＯＮ画素の右端から連続する２個のＯＦＦ画素Ｇ１である。
【００２４】
Ｓ１１２では、ＣＰＵ３２は、ｎ番目のグループを構成する各画素のステータスとして初期値「Ｂ」をワーク領域内に書き込む。ここで、ステータス「Ｂ」は、対応する画素がＯＮ画素であることを意味する。例えば、図６に示されるように、二値画像２００内の１番目のラインのグループ情報２５０は、１番目のグループを示す数字「３０」を含む。この場合、Ｓ１１２では、３０個のＯＮ画素のそれぞれのステータスとして初期値「Ｂ」が書き込まれたステータス情報２６１が生成される。なお、ステータス「Ｂ」以外に、ステータス「Ｌ」及びステータス「Ｓ」が存在する。ステータス「Ｌ」、ステータス「Ｓ」は、それぞれ、対応する画素が参照矩形に収まらないＯＦＦ画素、対応する画素が参照矩形に収まるＯＦＦ画素（即ち孤立ＯＦＦ画素）であることを意味する。
【００２５】
Ｓ１２０では、ＣＰＵ３２は、現在のｎが偶数であるのか否かを判断する。ＣＰＵ３２は、ｎが偶数である場合（Ｓ１２０でＹＥＳ）にはＳ１２２に進み、ｎが奇数である場合（Ｓ１２０でＮＯ）にはＳ１２２〜Ｓ１３０をスキップしてＳ１４０に進む。Ｓ１２２〜Ｓ１３０がスキップされるということは、ｎ番目のグループのステータスがＳ１１２で記憶された「Ｂ」に確定することを意味する。
【００２６】
Ｓ１２２では、ＣＰＵ３２は、ｎ番目のグループの画素数が閾値「４」以上であるのか否かを判断する。ここで、閾値「４」は、参照矩形のｘ方向の画素数「３」に「１」が加算された値である。ＣＰＵ３２は、ｎ番目のグループの画素数が閾値「４」以上である場合（Ｓ１２２でＹＥＳ）にはＳ１２４に進み、ｎ番目のグループの画素数が閾値「４」未満である場合（Ｓ１２２でＮＯ）にはＳ１３０に進む。
【００２７】
Ｓ１２４では、ＣＰＵ３２は、ｎ番目のグループのステータスを初期値「Ｂ」から「Ｌ」に変更する。ｎ番目のグループの画素数が４以上である場合には、ｎ番目のグループがｘ方向に沿って連続する４個以上のＯＦＦ画素であるので、ｎ番目のグループが参照矩形に収まらない。このために、ｎ番目のグループのステータスとして「Ｌ」が記憶される。例えば、図６に示されるように、２番目のラインのステータス情報２６２では、二値画像２００内の５個のＯＦＦ画素Ｇ４のそれぞれのステータスとして初期値「Ｂ」に代えて「Ｌ」が書き込まれる。Ｓ１２４が終了すると、Ｓ１４０に進む。
【００２８】
Ｓ１３０では、ＣＰＵ３２は、ｎ番目のグループのステータスを判定して変更するための判定処理を実行する。これにより、ｎ番目のグループのステータスが初期値「Ｂ」から「Ｌ」又は「Ｓ」に変更される。Ｓ１３０が終了すると、Ｓ１４０に進む。
【００２９】
Ｓ１４０では、ＣＰＵ３２は、ｙ番目のラインに含まれる全てのグループについて、Ｓ１１２〜Ｓ１３０の処理を実行したのか否かを判断する。ＣＰＵ３２は、全てのグループについて処理を実行していないと判断する場合（Ｓ１４０でＮＯ）には、Ｓ１４２において、現在のｎに「１」を加算して新たなｎを算出し、Ｓ１１２に戻る。一方、ＣＰＵ３２は、全てのグループについて処理を実行したと判断する場合（Ｓ１４０でＹＥＳ）、即ち、ｙ番目のラインに含まれる全てのグループのステータス情報が完成した場合には、Ｓ１４４に進む。
【００３０】
例えば、後述のＳ１５２で「ｙ＝２」が特定される場合には、２番目のラインのステータス情報が生成される。図６に示されるように、２番目のラインのグループ情報２５０は、７個のグループを示す数字列「４、２、５、５、７、１、６」を含む。この場合、１番目のグループ（即ち数字「４」）については、Ｓ１２０でＮＯと判断されるので、当該グループを構成する４個のＯＮ画素のそれぞれのステータスとして初期値「Ｂ」が維持される（ステータス情報２６２参照）。同様に、３番目、５番目、及び、７番目の各グループ（即ち、数字「５」、「７」、「６」）については、Ｓ１２０でＮＯと判断されるので、各グループのステータスとして初期値「Ｂ」が維持される。一方、２番目のグループ（即ち数字「２」）については、Ｓ１２０でＹＥＳと判断され、Ｓ１２２でＮＯと判断され、Ｓ１３０において、当該グループを構成する２個のＯＦＦ画素Ｇ１のそれぞれのステータスが初期値「Ｂ」から「Ｓ」に変更される。４番目のグループ（即ち数字「５」）については、Ｓ１２２でＹＥＳと判断され、当該グループを構成する５個のＯＦＦ画素Ｇ４のそれぞれのステータスが初期値「Ｂ」から「Ｌ」に変更される。また、６番目のグループ（即ち数字「１」）については、Ｓ１２０でＹＥＳと判断され、Ｓ１２２でＮＯと判断され、Ｓ１３０において、当該グループを構成する１個のＯＮ画素Ｇ５のステータスが初期値「Ｂ」から「Ｌ」に変更される。このようにして、７個のグループのそれぞれのステータスが決定されると、２番目のラインのステータス情報２６２が完成する。同様に、後述のＳ１５２で「ｙ＝３」が特定される場合には、３番目のラインのステータス情報２６３が生成され、「ｙ＝４」が特定される場合には、４番目のラインのステータス情報２６４が生成される。
【００３１】
Ｓ１４４では、ＣＰＵ３２は、Ｓ１０２で書き込まれたｙ番目のラインのグループ情報をワーク領域から削除する。次いで、Ｓ１４６では、ＣＰＵ３２は、（ｙ−１）番目のラインに対応する処理におけるＳ１１２、Ｓ１２４、及び、Ｓ１３０で書き込まれた（ｙ−１）番目のラインのステータス情報をワーク領域から削除する。即ち、ＣＰＵ３２は、ｙ番目のラインのグループ情報と、（ｙ−１）番目のラインのステータス情報と、ｙ番目のラインのステータス情報と、を記憶するための容量をワーク領域内に確保すれば、Ｓ１０２〜Ｓ１４２の処理を実行することができる。従って、少ないメモリ容量で処理を実行することができる。
【００３２】
Ｓ１５０では、ＣＰＵ３２は、二値画像データを構成する全てのラインについて、Ｓ１０２〜Ｓ１４６の処理を実行したのか否かを判断する。ＣＰＵ３２は、全てのラインについて処理を実行していないと判断する場合（Ｓ１５０でＮＯ）には、Ｓ１５２において、現在のｙに「１」を加算して新たなｙを算出し（即ち次のラインを特定し）、Ｓ１０２に戻る。一方、ＣＰＵ３２は、全てのラインについて処理を実行したと判断する場合（Ｓ１５０でＹＥＳ）、即ち、補正済み画像データが完成した場合には、図４の処理を終了する。
【００３３】
（判定処理；図５）
続いて、図５を参照して、図４のＳ１３０で実行される判定処理の内容を説明する。判定処理では、ｙ番目のライン内のｎ番目のグループ（即ち処理対象のグループ）のステータスが判定され、当該グループのステータスが初期値「Ｂ」から「Ｌ」又は「Ｓ」に変更される。
【００３４】
Ｓ２００では、ＣＰＵ３２は、（ｙ−１）番目のラインのステータス情報を利用して、（ｙ−１）番目のライン内の対応グループのステータスを特定する。対応グループは、ｙ番目のライン内のｎ番目のグループ（即ち処理対象のグループ）に隣接するグループである。ここで、（ｙ−１）番目のライン内のグループとｙ番目のライン内のグループとが隣接するとは、（ｙ−１）番目のライン内のグループのうちの少なくとも１個の画素が、ｙ番目のライン内のグループのうちの少なくとも１個の画素に隣接することを意味する。なお、ｙ番目のライン内のグループが（ｙ−１）番目のライン内の２個以上のグループに隣接する場合には、対応グループは、当該２個以上のグループのうち、ＯＦＦ画素によって構成されるグループである。
【００３５】
例えば、図６に示されるように、２番目のライン内の２番目のグループ（即ち２個のＯＦＦ画素Ｇ１）は、１番目のライン内の１番目のグループ（即ち３０個のＯＮ画素）に隣接している。従って、１番目のライン内の１番目のグループが対応グループであり、ＣＰＵ３２は、１番目のラインのステータス情報２６１から、当該対応グループのステータス「Ｂ」を特定する。例えば、３番目のライン内の２番目のグループ（即ち１個のＯＦＦ画素Ｇ２）は、２番目のライン内の２番目のグループ（即ち２個のＯＦＦ画素Ｇ１）に隣接している。従って、２番目のライン内の２番目のグループが対応グループであり、ＣＰＵ３２は、２番目のラインのステータス情報２６２から、当該対応グループのステータス「Ｓ」を特定する。また、例えば、３番目のライン内の４番目のグループ（即ち２個のＯＦＦ画素Ｇ６）は、２番目のライン内の４番目のグループ（即ち１個のＯＦＦ画素Ｇ５）と、２番目のライン内の５番目のグループ（即ち６個のＯＮ画素）と、に隣接している。従って、２番目のライン内の４番目のグループが対応グループであり、ＣＰＵ３２は、２番目のラインのステータス情報２６２から、当該対応グループのステータス「Ｌ」を特定する。
【００３６】
ＣＰＵ３２は、対応グループのステータスとして「Ｌ」を特定する場合（Ｓ２００で「Ｌ」）には、Ｓ２０２において、処理対象のグループのステータスを初期値「Ｂ」から「Ｌ」に変更する。対応グループのステータスが「Ｌ」である場合には、対応グループを構成する複数個のＯＦＦ画素が参照矩形に収まらないことを意味する。従って、対応グループと、対応グループに隣接する処理対象のグループと、の組合せである複数個のＯＦＦ画素も参照矩形に収まらない。従って、Ｓ２０２では、処理対象のグループのステータスとして「Ｌ」が記憶される。Ｓ２０２が終了すると、Ｓ２２０に進む。
【００３７】
ＣＰＵ３２は、対応グループのステータスとして「Ｓ」を特定する場合（Ｓ２００で「Ｓ」）には、Ｓ２０４において、処理対象のグループのステータスを初期値「Ｂ」から「Ｓ」に変更する。対応グループのステータスが「Ｓ」であるということは、対応グループについて後述のＳ２１０の解析処理が実行された際に、対応グループと、対応グループに隣接する処理対象のグループと、の組合せである複数個のＯＦＦ画素が、参照矩形に収まるという解析結果が得られたことを意味する。従って、Ｓ２０４では、処理対象のグループのステータスとして「Ｓ」が記憶される。Ｓ２０４が終了すると、Ｓ２２０に進む。
【００３８】
上述したように、ＣＰＵ３２は、（ｙ−１）番目のラインのステータス情報を利用して、Ｓ２００で「Ｌ」又は「Ｓ」を特定する場合には、Ｓ２１０の解析処理を実行せずに済む。従って、ＣＰＵ３２は、処理対象のグループのステータスを迅速に決定することができる。
【００３９】
ＣＰＵ３２は、対応グループのステータスとして「Ｂ」を特定する場合（Ｓ２００で「Ｂ」）には、Ｓ２１０において、参照矩形を利用して処理対象のグループのステータスを解析するための解析処理を実行する。次いで、Ｓ２１２では、ＣＰＵ３２は、解析結果が「Ｓ」であるのか「Ｌ」であるのかを判断する。そして、ＣＰＵ３２は、解析結果が「Ｓ」であると判断する場合（Ｓ２１２でＹＥＳ）には、Ｓ２１４において、処理対象のグループのステータスを初期値「Ｂ」から「Ｓ」に変更し、解析結果が「Ｌ」であると判断する場合（Ｓ２１２でＮＯ）には、Ｓ２１６において、処理対象のグループのステータスを初期値「Ｂ」から「Ｌ」に変更する。Ｓ２１４又はＳ２１６が終了すると、Ｓ２２０に進む。
【００４０】
Ｓ２２０では、ＣＰＵ３２は、処理対象のグループのステータスが「Ｓ」であるのか否かを判断する。ＣＰＵ３２は、処理対象のグループのステータスが「Ｓ」であると判断する場合（Ｓ２２０でＹＥＳ）には、Ｓ２２２において、処理対象のグループを構成する全てのＯＦＦ画素のそれぞれをＯＮ画素に補正（即ち変更）し、図５の処理を終了する。一方、ＣＰＵ３２は、処理対象のグループのステータスが「Ｌ」であると判断する場合（Ｓ２２０でＮＯ）には、Ｓ２２２をスキップして（即ち補正処理を実行することなく）、図５の処理を終了する。
【００４１】
例えば、図６に示されるように、二値画像２００に含まれる２番目のライン内の２番目のグループ（即ち２個のＯＦＦ画素Ｇ１）のステータスが「Ｓ」であるので、２個のＯＦＦ画素Ｇ１のそれぞれがＯＮ画素に補正され、この結果、補正済み画像２０２が生成される。また、例えば、補正済み画像２０２に含まれる３番目のライン内の２番目のグループ（即ち１個のＯＦＦ画素Ｇ２）のステータスが「Ｓ」であるので、１個のＯＦＦ画素Ｇ２がＯＮ画素に補正され、この結果、補正済み画像２０４が生成される。同様に、図示省略しているが、補正済み画像２０４に含まれる４番目のライン内の２番目のグループ（即ち１個のＯＦＦ画素Ｇ３）のステータスが「Ｓ」であるので、１個のＯＦＦ画素Ｇ３がＯＮ画素に補正される。
【００４２】
（解析処理；図７）
続いて、図７を参照して、図５のＳ２１０で実行される解析処理の内容を説明する。解析処理では、処理対象のグループが参照矩形に収まるのか否かが解析される。
【００４３】
ここで、図７の処理を説明する前に、図８を参照して、解析テーブル３８（図１参照）の内容について説明しておく。符号４００は、左右方向（即ちｘ方向）に沿って並ぶ３個の画素と上下方向（即ちｙ方向）に沿って並ぶ３個の画素とのそれぞれが辺である矩形領域内の９個の画素を示す。当該９個の画素において、ＯＮ画素を「１」と表現し、ＯＦＦ画素を「０」と表現すると、符号４０４に示されるように、「１」又は「０」である９個の数字で表現される。当該９個の数字のうちの上段の３個の数字「１、０、０」、中段の３個の数字「１、１、０」、及び、下段の３個の数字「１、０、１」を並べると、２進数で表現された値「１００１１０１０１」が得られる。以下では、９個の画素のＯＮ画素及びＯＦＦ画素の配置パターンが２進数で表現された値のことを「参照値（２）」と呼ぶ。そして、参照値（２）を１０進数に変換すると、１０進数で表現された参照値（１０）が得られる。符号４００で示される矩形領域内の９個の画素については、参照値（１０）として「３０９」が得られる。
【００４４】
また、符号４００で示される矩形領域内の９個の画素のうち、矩形領域の外縁を構成する８個の外縁画素は、４個のＯＮ画素Ｇ０と、４個のＯＦＦ画素Ｇ１〜Ｇ３と、を含む。図７の解析処理では、参照矩形内に処理対象のグループ（即ちＯＦＦ画素）が収まるのか否かが解析される。即ち、参照矩形内の８個の外縁画素のうちのＯＦＦ画素が、矩形領域外のＯＦＦ画素に隣接するのか否かが判断される（以下では当該判断のことを「隣接判断」と呼ぶ）。そして、８個の外縁画素のそれぞれについて、隣接判断を実行すべきことを示す値「１」と、隣接判断を実行すべきでないことを示す値「０」と、を割り当てることができる。例えば、符号４０２で示されるように、８個の外縁画素のうちのＯＦＦ画素Ｇ２については値「１」が割り当てられるが、他の７個の外縁画素Ｇ０，Ｇ２，Ｇ３については値「０」が割り当てられる。なお、矩形領域内の四隅を構成する各画素については、上下方向に対応する隣接判断を実行すべきか否かを示す値と、左右方向に対応する隣接判断を実行すべきか否かを示す値と、の２個の値が割り当てられる。即ち、８個の外縁画素に対して１２個の値が割り当てられる。そして、符号４０２内の破線の矢印で示される方向に沿って１２個の値を並べると、２進数で表現された値「０００００００１００００」が得られる。以下では、隣接判断を実行すべきか否かを示す１２個の値が２進数で表現された値のことを「フラグ値（２）」と呼ぶ。そして、フラグ値（２）を１０進数に変換すると、１０進数で表現されたフラグ値（１０）が得られる。符号４００で示される９個の画素については、フラグ値（１０）として「１６」が得られる。
【００４５】
同様に、符号４１０で示される９個の画素については、参照値（１０）として「４３９」が得られると共に、フラグ値（１０）として「１６」が得られる。符号４２０で示される９個の画素については、参照値（１０）として「３５８」が得られると共に、フラグ値（１０）として「４８」が得られる。符号４３０で示される９個の画素については、参照値（１０）として「２０４」が得られると共に、フラグ値（１０）として「２２４」が得られる。スキャナ５０のベンダは、上記のようにして、ＯＮ画素及びＯＦＦ画素の様々な配置パターンについて、参照値（１０）とフラグ値（１０）とを予め算出しておき、それらが関連付けられている解析テーブル３８を準備する。このようにして準備された解析テーブル３８が、ドライバプログラム３６がＰＣ１０にインストールされる際に、メモリ３４内に格納される。
【００４６】
次いで、フラグ値（２）がどのようにして決定されるのかついて説明する。まず、ＯＮ画素である外縁画素については、隣接判断を実行すべきでないことを示す値「０」が割り当てられる。例えば、符号４０２に示されるように、４個のＯＮ画素Ｇ０については、隣接判断を実行すべきでないことを示す値「０」が割り当てられる。
【００４７】
また、本実施例では、処理対象のグループ（即ち１個以上のＯＦＦ画素）が矩形内の上段に配置されるように、参照矩形が設定される（図７のＳ３００参照）。例えば、処理対象のグループが２個のＯＦＦ画素Ｇ１である場合には、符号４０２に示されるように、２個のＯＦＦ画素Ｇ１が矩形内の上段に配置されるように、参照矩形が設定される。そして、処理対象のグループの上側には、ＯＮ画素しか隣接していない（図５のＳ２００で「Ｂ」）。従って、上段を構成するＯＦＦ画素については、上側への隣接判断を実行すべきでないことを示す値「０」が割り当てられる。例えば、図８の符号４０２に示されるように、２個のＯＦＦ画素Ｇ１については、上側への隣接判断を実行すべきでないことを示す値「０」が割り当てられる。
【００４８】
また、処理対象のグループ（即ち１個以上のＯＦＦ画素）のうちの右端を構成する画素が矩形内の右上の隅に配置されるように、参照矩形が設定される（図７のＳ３００参照）。例えば、処理対象のグループが２個のＯＦＦ画素Ｇ１である場合には、符号４０２に示されるように、２個のＯＦＦ画素Ｇ１のうちの右側のＯＦＦ画素が矩形内の右上の隅に配置されるように、参照矩形が設定される。従って、右上の隅のＯＦＦ画素の右側にはＯＮ画素が隣接するので、右上の隅のＯＦＦ画素については、右側への隣接判断を実行すべきでないことを示す値「０」が割り当てられる。
【００４９】
また、図７の処理では、処理対象のグループを含む互いに隣接する複数個のＯＦＦ画素が参照矩形内に収まるのか否かについて判断され、当該複数個のＯＦＦ画素に隣接しないＯＦＦ画素である外縁画素が存在する場合には、当該外縁画素について、隣接判断を実行する必要がない。例えば、処理対象のグループが２個のＯＦＦ画素Ｇ１である場合には、符号４０２に示されるように、互いに隣接する３個のＯＦＦ画素Ｇ１，Ｇ２が参照矩形内に収まるのか否かについて判断するために、ＯＦＦ画素Ｇ２について右側への隣接判断が実行される。しかしながら、３個のＯＦＦ画素Ｇ１，Ｇ２に隣接しないＯＦＦ画素Ｇ３については、隣接判断を実行する必要がない。従って、ＯＦＦ画素Ｇ３については、隣接判断を実行すべきでないことを示す値「０」が割り当てられる。特に、ＯＦＦ画素Ｇ３は、斜め方向においてＯＦＦ画素Ｇ２に隣り合うが、ＯＦＦ画素Ｇ２に隣接する画素として扱われない。従って、図１の二値画像１１４に示されるように、斜め方向において複数個のＯＦＦ画素が隣り合う場合にも、それらのＯＦＦ画素のそれぞれを孤立ＯＦＦ画素として扱うことができ、この結果、それらのＯＦＦ画素のそれぞれをＯＮ画素に適切に補正することができる。
【００５０】
上記以外のＯＦＦ画素である外縁画素については、隣接判断を実行すべきであることを示す値「１」が割り当てられる。例えば、符号４０２に示されるように、ＯＦＦ画素Ｇ２については、隣接判断を実行すべきであることを示す値「１」が割り当てられる。
【００５１】
図７のＳ３００では、ＣＰＵ３２は、処理対象のグループを含む参照矩形を設定する。具体的には、Ｓ３００では、処理対象のグループのうちの右端を構成するＯＦＦ画素が矩形内の右上の隅に配置されるように、参照矩形を設定する。
【００５２】
Ｓ３１０では、ＣＰＵ３２は、参照矩形内のＯＮ画素及びＯＦＦ画素の配置パターンを示す参照値（１０）を算出する。例えば、図８の符号４０２が参照矩形である場合には、ＣＰＵ３２は、参照値（２）として値「１００１１０１０１」を特定し、参照値（２）を１０進数に変換して、参照値（１０）として「３０９」を算出する。
【００５３】
Ｓ３１２では、ＣＰＵ３２は、メモリ３４内の解析テーブル３８から、Ｓ３１０で算出された参照値（１０）に関連付けられているフラグ値（１０）を取得することによって、フラグ値（１０）を特定する。例えば、ＣＰＵ３２は、Ｓ３１０で参照値（１０）として「３０９」を算出した場合には、フラグ値（１０）として「１６」を特定する（図８の解析テーブル３８参照）。
【００５４】
Ｓ３１４では、ＣＰＵ３２は、Ｓ３１２で特定されたフラグ値（１０）を２進数に変換して、フラグ値（２）を算出する。例えば、ＣＰＵ３２は、Ｓ３１２でフラグ値（１０）として「１６」を算出した場合には、フラグ値（２）として「０００００００１００００」を算出する。
【００５５】
Ｓ３２０では、ＣＰＵ３２は、Ｓ３１４で算出されたフラグ値（２）を利用して、１個以上のＯＦＦ画素のそれぞれに対する隣接判断を実行する。例えば、ＣＰＵ３２は、図８の符号４０２が参照矩形であり、Ｓ３１４でフラグ値（２）として「０００００００１００００」を算出した場合には、ＯＦＦ画素Ｇ２について、右側への隣接判断を実行する。
【００５６】
Ｓ３２２では、ＣＰＵ３２は、Ｓ３２０で実行されるいずれかの隣接判断において、隣接ありと判断されたのか否かを確認する。ＣＰＵ３２は、いずれの隣接判断でも隣接なしと判断された場合（Ｓ３２２でＮＯ）にはＳ３２４に進み、いずれかの隣接判断で隣接ありと判断された場合（Ｓ３２２でＹＥＳ）にはＳ３２６に進む。
【００５７】
図９には、隣接判断が実行される様々なケースが開示されている。各ケースでは、太線の矩形が参照矩形を示す。例えば、ケースＡでは、ＣＰＵ３２は、隣接なしと判断し（Ｓ３２２でＮＯ）、Ｓ３２４において、ＣＰＵ３２は、解析結果として「Ｓ」を決定する。Ｓ３２４が終了すると、図７の処理が終了する。
【００５８】
一方、例えば、図９のケースＢ〜Ｆでは、ＣＰＵ３２は、隣接ありと判断し（Ｓ３２２でＹＥＳ）、Ｓ３２６において、参照矩形の左側又は下側に隣接するのか否かを判断する。ケースＢ〜Ｆでは、参照矩形内のＯＦＦ画素に隣接する参照矩形外のＯＦＦ画素が丸印で示されている。例えば、ケースＢでは、参照矩形の左側に隣接し、ケースＣでは、参照矩形の下側に隣接する。この場合、ＣＰＵ３２は、Ｓ３２６でＹＥＳと判断し、Ｓ３２８において、解析結果として「Ｌ」を決定する。上述したように、本実施例では、処理対象のグループのうちの右端を構成するＯＦＦ画素が矩形内の右上の隅に配置されるように、参照矩形が設定される。従って、参照矩形外のＯＦＦ画素が参照矩形内のＯＦＦ画素の左側又は下側に隣接する場合には、参照矩形を左側又は下側に移動させたとしても、互いに隣接する複数個のＯＦＦ画素が参照矩形に収まることがない。例えば、ケースＢにおいて、参照矩形を１個の画素分だけ左側に移動させても、互いに隣接する９個のＯＦＦ画素が参照矩形に収まらない。また、例えば、ケースＣにおいて、参照矩形を１個の画素分だけ下側に移動させても、互いに隣接する４個のＯＦＦ画素が参照矩形に収まらない。従って、ＣＰＵ３２は、参照矩形の左側又は下側に隣接する場合（Ｓ３２６でＹＥＳ）には、参照矩形を移動させることなく、解析結果として「Ｌ」を決定する（Ｓ３２８）。Ｓ３２８が終了すると、図７の処理が終了する。
【００５９】
また、図９のケースＤ〜Ｆでは、参照矩形の右側に隣接する。この場合、ＣＰＵ３２は、Ｓ３２６でＮＯと判断し、Ｓ３３０において、参照矩形を２回移動済みであるのか否かを判断する。ここで、「２回」は、参照矩形内のｘ方向の画素数「３」から「１」が減算された値である。ＣＰＵ３２は、参照矩形を２回移動済みでないと判断する場合（Ｓ３３０でＮＯ）には、Ｓ３３２において、参照矩形を１個の画素分だけ右側に移動させ、Ｓ３１０〜Ｓ３３０の処理を再び実行する。例えば、図９のケースＤでは、ＣＰＵ３２は、１回目のＳ３１０〜Ｓ３３０の処理において、参照矩形の右側に隣接すると判断し（Ｓ３２６でＮＯ）、参照矩形を右側に移動させて、２回目の処理を実行する。この際に、ＣＰＵ３２は、参照矩形の左側に隣接すると判断し（Ｓ３２６でＹＥＳ）、解析結果として「Ｌ」を決定する（Ｓ３２８）。ケースＥでは、ＣＰＵ３２は、２回目の処理において、隣接なしと判断し（Ｓ３２２でＮＯ）、解析結果として「Ｓ」を決定する（Ｓ３２４）。
【００６０】
また、ケースＦでは、ＣＰＵ３２は、２回目の処理において、参照矩形の右側に隣接すると判断し（Ｓ３２６でＮＯ）、参照矩形を右側にさらに移動させて、３回目の処理を実行する。この際に、ＣＰＵ３２は、参照矩形の右側に隣接すると判断し（Ｓ３２６でＮＯ）、参照矩形を２回移動済みであると判断する（Ｓ３３０でＹＥＳ）。この場合、Ｓ３３４では、ＣＰＵ３２は、参照矩形を右側にさらに移動させることなく、解析結果として「Ｌ」を決定する（Ｓ３３４）。参照矩形を右側にさらに移動させても、互いに隣接する６個のＯＦＦ画素が参照矩形に収まらないからである。Ｓ３３４が終了すると、図７の処理が終了する。
【００６１】
（実施例の効果）
本実施例によると、メモリ３４は、参照値（１０）とフラグ値（１０）とが関連付けられている解析テーブル３８を格納している。このために、ＰＣ１０は、参照矩形内のＯＮ画素及びＯＦＦ画素の配置パターンに対応するフラグ値（１０）を利用して、参照矩形内のどのＯＦＦ画素に対する隣接判断を実行すればよいのかを知ることができる（図７のＳ３２０）。ＰＣ１０は、参照矩形の外縁を構成する全てのＯＦＦ画素に対する隣接判断を実行せずに済むので、孤立ＯＦＦ画素を迅速に特定することができ、この結果、孤立ＯＦＦ画素をＯＮ画素に迅速に補正することができる。
【００６２】
（対応関係）
ＰＣ１０が、「画像解析装置」の一例である。ｘ方向、ｙ方向が、それぞれ、「第１方向」、「第２方向」の一例である。上側、下側、右側、左側が、それぞれ、「第１側」、「第２側」、「第３側」、「第４側」の一例である。「３」が、「Ｍ」及び「Ｎ」の一例である。ＯＦＦ画素、ＯＮ画素が、それぞれ、「第１種の画素」、「第２種の画素」の一例である。解析テーブル３８内の複数個のフラグ値（１０）が、「複数個の参照データ」の一例である。図７のＳ３１０、Ｓ３１２、Ｓ３２０、図５のＳ２２２が、それぞれ、「算出処理」、「データ特定処理」、「判断処理」、「補正処理」の一例である。
【００６３】
図２のＳ１４で生成される二値画像データが、「対象画像データ」の一例である。参照矩形内の９個の画素が、「対象画素グループ」の一例である。図８の符号４００，４１０，４２０，４３０で示される９個の画素のうちの外縁を構成する８個の画素が、「Ｌ個の外縁画素」の一例である。Ｌは、Ｍ及びＮに依存する値であり、一般的に言うと、「Ｌ＝（２×Ｍ）＋（２×Ｎ）−４」を満たす整数である。当該９個の画素のうちの上段の３個の画素に含まれる１個以上のＯＦＦ画素が、「ｍ個の画素」の一例である。図９の３個のＯＦＦ画素Ｇ１，Ｇ２が、「注目画素グループ」の一例である。ＯＦＦ画素Ｇ３が、「非隣接画素」の一例である。２個のＯＦＦ画素Ｇ１のうちの右側のＯＦＦ画素が、「第１の注目画素」の一例である。ＯＦＦ画素Ｇ２が、「第２の注目画素」の一例である。図９のケースＡの参照矩形内の９個の画素が、「第１の対象画素グループ」の一例である。ケースＣにおいて、丸印が付されたＯＦＦ画素に隣接する参照矩形内のＯＦＦ画素が、「第２側外縁画素」の一例である。ケースＢにおいて、丸印が付されたＯＦＦ画素に隣接する参照矩形内のＯＦＦ画素が、「第４側外縁画素」の一例である。ケースＤ〜Ｆにおいて、丸印が付されたＯＦＦ画素に隣接する参照矩形内のＯＦＦ画素が、「第３側外縁画素」の一例である。ケースＤ〜Ｆにおいて、２回目及び３回目の参照矩形内の９個の画素が、「新たな対象画素グループ」の一例である。
【００６４】
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
【００６５】
（変形例１）読取対象の原稿は、バーコードを含んでいなくてもよい。例えば、原稿に対していわゆる二値スキャンが実行されることによって、ＯＮ画素及びＯＦＦ画素によって構成される二値画像を表わすスキャンデータが生成されることを想定する。このようなスキャンデータに対して図２のＳ１６の処理を実行すると、写真、文字等のオブジェクト内の不要な隙間に相当する孤立ＯＦＦ画素をＯＮ画素に補正することができる。これにより、画質を向上させることができる。本実施例では、二値スキャンによって生成されるスキャンデータが、「対象画像データ」の一例である。
【００６６】
（変形例２）孤立ＯＮ画素をＯＦＦ画素に補正する構成を採用してもよい。この構成では、解析テーブル３８において、参照矩形の外縁を構成する１個以上のＯＮ画素のそれぞれについて、当該ＯＮ画素が参照矩形外のＯＮ画素に隣接するのか否かを判断するための判断処理を実行すべきか否かを示すフラグ値（１０）が割り当てられる。本変形例によると、孤立ＯＮ画素（即ちいわゆる孤立点）を除去することができ、この結果、画質を向上させることができる。本変形例では、ＯＮ画素、ＯＦＦ画素が、それぞれ、「第１種の画素」、「第２種の画素」の一例である。特に、本変形例では、多階調のＲＧＢ画像データであるスキャンデータ内の孤立ＯＮ画素に対応する画素を、背景色を示す画素に補正されてもよい。この場合、多階調のＲＧＢ画像データが、「対象画像データ」の一例である。
【００６７】
（変形例３）図５のＳ２００〜Ｓ２０４を省略して、図５の判定処理において、Ｓ２１０の解析処理が必ず実行されてもよい。一般的に言うと、「第２の場合」に、第２の注目画素を含む第２の対象画素グループが特定され、第２の対象画素グループに対する解析処理が実行されてもよい。
【００６８】
（変形例４）図７のＳ３００において、処理対象のグループのうちの左端を構成するＯＦＦ画素が矩形内の左上の隅に配置されるように、参照矩形が設定されてもよい。この場合、Ｓ３２６では、参照矩形の右側又は下側に隣接するのか否かが判断され、Ｓ３３２では、参照矩形が左側に移動される。また、上記の実施例では、ｙ方向の上側から下側に向かって各ラインが順次特定されるが、ｙ方向の下側から上側に向かって各ラインが順次特定されてもよい。この場合、処理対象のグループが矩形内の下段に配置されるように、参照矩形が設定されてもよい。
【００６９】
（変形例５）解析テーブル３８では、ＯＮ画素及びＯＦＦ画素の様々な配置パターンについて、参照値（２）とフラグ値（２）とが関連付けられていてもよい。本変形例では、参照値（２）、フラグ値（２）が、それぞれ、「参照値」、「参照データ」の一例である。
【００７０】
（変形例６）図２の各処理は、スキャナ５０によって実行されてもよく、Ｓ１８において、デコード結果がスキャナ５０からＰＣ１０に送信されてもよい。即ち、「画像解析装置」は、スキャナであってもよい。一般的に言うと、「画像解析装置」は、画像の解析を実行可能なあらゆる装置（例えば、多機能機、スマートフォン等）を含む。
【００７１】
（変形例７）上記の実施例では、ＰＣ１０のＣＰＵ３２がドライバプログラム３６（即ちソフトウェア）を実行することによって、図２〜図９の各処理が実現される。これに代えて、図２〜図９の各処理のうちの少なくとも１つの処理は、論理回路等のハードウェアによって実現されてもよい。
【００７２】
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
【符号の説明】
【００７３】
１０：ＰＣ、１２：操作部、１４：表示部、１６：ネットワークインターフェース、３０：制御部、３２：ＣＰＵ、３４：メモリ、３６：ドライバプログラム、３８：解析テーブル、５０：スキャナ、１００：スキャン指示、１１０：スキャンデータ、１１２：スキャン画像、１１４：二値画像、１１６：補正済み画像、２００：二値画像、２００ａ：参照矩形、２０２，２０４：補正済み画像、２５０：グループ情報、３００：補正済み画像、Ｇ０：ＯＮ画素、Ｇ１〜Ｇ４：ＯＦＦ画素
【図１】
2018037869.tif 000003
【図２】
2018037869.tif 000004
【図３】
2018037869.tif 000005
【図４】
2018037869.tif 000006
【図５】
2018037869.tif 000007
【図６】
2018037869.tif 000008
【図７】
2018037869.tif 000009
【図８】
2018037869.tif 000010
【図９】
2018037869.tif 000011