JP6786973B2 - 画像解析装置 - Google Patents

画像解析装置 Download PDF

Info

Publication number
JP6786973B2
JP6786973B2 JP2016175442A JP2016175442A JP6786973B2 JP 6786973 B2 JP6786973 B2 JP 6786973B2 JP 2016175442 A JP2016175442 A JP 2016175442A JP 2016175442 A JP2016175442 A JP 2016175442A JP 6786973 B2 JP6786973 B2 JP 6786973B2
Authority
JP
Japan
Prior art keywords
pixel
line
group
pixel group
line pixel
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2016175442A
Other languages
English (en)
Other versions
JP2018041304A (ja
Inventor
康輔 森
康輔 森
良平 小澤
良平 小澤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP2016175442A priority Critical patent/JP6786973B2/ja
Priority to US15/640,631 priority patent/US10424051B2/en
Publication of JP2018041304A publication Critical patent/JP2018041304A/ja
Application granted granted Critical
Publication of JP6786973B2 publication Critical patent/JP6786973B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/70Denoising; Smoothing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10024Color image
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30176Document

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Image Processing (AREA)
  • Facsimile Image Signal Circuits (AREA)

Description

本明細書では、原稿の読取りによって生成される読取画像データを利用して、解析処理を実行する画像解析装置を開示する。
下記の特許文献1には、画像データから微小な黒点であるノイズを除去するノイズ除去装置が開示されている。ノイズ除去装置は、画像データ内の1個の黒画素を着目点として特定し、着目点から例えば3画素以内の近傍領域に所定数以上の黒画素が存在すれば、着目点がノイズでないと判断し、近傍領域に所定数以上の黒画素が存在しなければ、着目点がノイズであると判断する。
特開2005−196282号公報 特開2006−72839号公報
ところで、画像データは、通常、第1方向(例えば上下方向)に沿って並ぶ複数本のライン画素グループを含み、複数本のライン画素グループのそれぞれは、第1方向に直交する第2方向(例えば左右方向)に沿って並ぶ複数個の画素によって構成される。そして、通常、第1方向の第1側から第2側に向かって、複数本のライン画素グループのそれぞれが順次特定され、ライン画素グループ毎に処理が実行される。上記の特許文献1の技術では、1本のライン画素グループに含まれる着目点がノイズであるのか否かを判断するために、当該1本のライン画素グループのみならず、当該1本のライン画素グループの上側に存在する3本分のライン画素グループと、当該1本のライン画素グループの下側に存在する3本分のライン画素グループと、をチェックしなければならない。従って、7本のライン画素グループをメモリ内のワーク領域に記憶させた状態で、着目点がノイズであるのか否かが判断される。
本明細書では、対象グループの周辺の所定領域内に対象グループに隣接しない第1種の画素が存在するのか否かを、少ないメモリ使用量で判断し得る技術を提供する。
本明細書によって開示される画像解析装置は、原稿の読取りによって生成される読取画像データを取得する取得部と、前記読取画像データを利用して、第1の解析処理を実行する第1の解析部であって、前記第1の解析処理は、第1方向の第1側から第2側に向かって、前記読取画像データを用いて得られるM本(前記Mは2以上の整数)のライン画素グループのそれぞれを順次特定する第1のライン特定処理であって、前記M本のライン画素グループのそれぞれは、前記第1方向に直交する第2方向に沿って並ぶ複数個の画素によって構成され、前記複数個の画素のそれぞれは、第1種の画素と第2種の画素とのどちらかである、前記第1のライン特定処理と、前記M本のライン画素グループのうちのm1番目(前記m1は2以上M以下の各整数)のライン画素グループが特定される場合に、前記M本のライン画素グループのうちの(m1−1)番目のライン画素グループに対応する(m1−1)番目の画素情報と、前記(m1−1)番目のライン画素グループに対応する(m1−1)番目の第1の距離情報と、を利用して、前記m1番目のライン画素グループに対応するm1番目の第1の距離情報を生成する第1の距離情報生成処理であって、前記画素情報は、対応するライン画素グループを構成する複数個の画素のそれぞれが、前記第1種の画素と前記第2種の画素とのどちらであるのかを示す情報であり、前記第1の距離情報は、対応するライン画素グループを構成する複数個の画素のそれぞれについて、当該画素と、当該画素の前記第1側に存在する最も近い前記第1種の画素と、の間の距離を示す情報である、前記第1の距離情報生成処理と、前記m1番目のライン画素グループが、前記第2方向に沿って連続する1個以上の前記第1種の画素である第1の対象グループを含む場合に、前記m1番目のライン画素グループの前記第1側の各ライン画素グループを利用せずに、前記m1番目の第1の距離情報を利用して、前記第1の対象グループの周辺の第1の所定領域内に、前記第1の対象グループに隣接しない前記第1種の画素が存在するのか否かを判断する第1の判断処理と、を含む、前記第1の解析部と、前記第1の解析処理の結果に応じて、前記第1の対象グループを含むオブジェクトであって、互いに隣接する1個以上の前記第1種の画素によって構成される前記オブジェクトに対応する所定処理を実行する所定処理実行部と、を備える。
上記の構成によると、画像解析装置は、m1番目の第1の距離情報を生成するので、それを利用して、第1の対象グループの周辺の第1の所定領域内に第1種の画素が存在するのか否かを判断することができる。従って、画像解析装置は、m1番目のライン画素グループの第1側の各ライン画素グループを利用しなくても、上記の判断を実行することができ、この結果、少ないメモリ使用量で上記の判断を実行し得る。
上記の画像解析装置を実現するための制御方法、コンピュータプログラム、及び、当該コンピュータプログラムを格納するコンピュータ読取可能記録媒体も新規で有用である。
実施例のハードウェア構成を模式的に示す。 スキャナによって実行される処理のフローチャートを示す。 解析処理のフローチャートを示す。 オブジェクトデータを生成する処理のフローチャートを示す。 オブジェクトデータを更新する処理のフローチャートを示す。 x方向情報、y方向情報、及び、オブジェクトデータを説明するための説明図を示す。 第1及び第2の解析処理を説明するための説明図を示す。 第1及び第2の解析処理の結果を示す。 比較例及び第2実施例を説明するための説明図を示す。 第3実施例を説明するための説明図を示す。
(第1実施例)
(スキャナ10の構成;図1)
スキャナ10は、LAN(Local Area Networkの略)を介して、PC(Personal Computerの略)50と通信可能に接続されている。スキャナ10は、操作部12と、表示部14と、ネットワークインターフェース16と、スキャンエンジン18と、制御部30と、を備える。操作部12は、複数個のキーによって構成される。ユーザは、操作部12を操作することによって、様々な指示をスキャナ10に入力することができる。表示部14は、様々な情報を表示するためのディスプレイである。表示部14は、いわゆるタッチパネルとして機能する。即ち、表示部14は、操作部としても機能する。ネットワークインターフェース16は、LANに接続されている。スキャンエンジン18は、CCD、CID等のスキャン機構を備える。
制御部30は、CPU32とメモリ34とを備える。メモリ34は、ROM(Read Only Memoryの略)、RAM(Random Access Memoryの略)等によって構成される。CPU32は、メモリ34に格納されているプログラム36に従って、様々な処理(例えば後述の図2の処理)を実行するプロセッサである。メモリ34は、処理の過程で一時的に情報を記憶するためのRAM内のワーク領域38を備える。
CPU32は、ネットワークインターフェース16を介して、PC50からスキャン指示100を取得する。スキャン指示100は、読取解像度、原稿のサイズ等の読取設定を含む。これにより、CPU32は、読取設定に従った原稿の読取りをスキャンエンジン18に実行させて、スキャンエンジン18からスキャンデータを取得する。スキャンデータによって表わされるスキャン画像110は、写真を示すオブジェクト112、文字を示すオブジェクト116,118等を含み得る。
例えば、原稿にゴミが付着している場合、原稿が載置されるスキャナ10の透明板(図示省略)にゴミが付着している場合等には、スキャン画像110は、当該ゴミを表わすオブジェクト114(以下では「孤立点」と呼ぶ)を含み得る。本実施例では、CPU32は、孤立点114を除去するための補正処理を実行して、補正済み画像120を表わす補正済み画像データ130を生成する。そして、CPU32は、ネットワークインターフェース16を介して、補正済み画像データ130をPC50に供給する。これにより、高画質の画像120を表わす画像データ130をPC50に供給することができる。
(スキャナ処理;図2)
続いて、図2を参照して、CPU32が、上記のスキャン指示100を取得する場合に、プログラム36に従って実行する処理の内容を説明する。
S10では、CPU32は、原稿の読取りをスキャンエンジン18に指示して、スキャンエンジン18からスキャンデータを取得する。スキャンデータは、x方向(例えば図1のスキャン画像110内の左右方向)に沿って並ぶ複数個の画素と、y方向(例えばスキャン画像110内の上下方向)に沿って並ぶ複数個の画素と、によって構成される。換言すると、スキャンデータは、y方向に沿って並ぶ複数本の読取ラインによって構成される。1本の読取ラインは、x方向に沿って並ぶ複数個の画素によって構成される。各画素は、256階調(即ち「0〜255」)の画素値(具体的には、R値、G値、及び、B値)を示す。なお、本実施例では、100dpiの読取解像度で原稿が読取られることを想定している。
より具体的には、S10では、CPU32は、スキャンエンジン18から複数本の読取ラインのそれぞれを順次取得する。CPU32は、1本の読取ラインを取得する毎に、当該読取ラインを圧縮して圧縮済みラインを生成し、圧縮済みラインをメモリ34内のワーク領域38に格納する。これにより、複数本の圧縮済みラインによって構成される圧縮済みスキャンデータがワーク領域38に格納される。スキャンデータが圧縮された状態でワーク領域38に格納されるので、ワーク領域38の使用量を抑えることができる。
S20では、CPU32は、圧縮済みスキャンデータを利用して、第1の解析処理を実行する。第1の解析処理では、スキャンデータを構成する複数本の読取ラインのそれぞれがy方向の上側から下側に向かって順次解析される。
S30では、CPU32は、圧縮済みスキャンデータを利用して、第2の解析処理を実行する。第2の解析処理では、スキャンデータを構成する複数本の読取ラインのそれぞれがy方向の下側から上側に向かって順次解析される。
S40では、CPU32は、S20の第1の解析処理の結果とS30の第2の解析処理の結果とを利用して、孤立点を特定する特定処理を実行する。
S50では、CPU32は、圧縮済みスキャンデータのうち、S40で特定された孤立点を表わす各画素を、スキャン画像110の背景色(本実施例では白色)を表わす画素に補正する。これにより、CPU32は、補正済み画像120を表わす補正済み画像データ130を生成することができる。そして、図示省略しているが、CPU32は、補正済み画像データ130をPC50に供給する。S50が終了すると、図2の処理が終了する。
(第1の解析処理;図3)
続いて、図3を参照して、図2のS20で実行される第1の解析処理の内容を説明する。S100では、CPU32は、処理対象の読取ラインを示すポインタmを「0」に設定することによって、m番目(即ち0番目)の読取ラインを特定する。上述したように、第1の解析処理では、スキャンデータを構成する複数本の読取ラインのそれぞれがy方向の上側から下側に向かって順次解析される。従って、0番目の読取ラインは、複数本の読取ラインのうちの最も上側に存在する読取ラインである。より具体的には、S100では、CPU32は、圧縮済みスキャンデータを構成する複数本の圧縮済みラインのうちの最も上側に存在する圧縮済みラインを解凍して、0番目の読取ライン(即ちx方向に沿って並ぶ複数個の画素)をワーク領域38に書き込む。特に、CPU32は、S100を開始する際に、ワーク領域38内に第1のワーク領域と第2のワーク領域とを確保する。そして、CPU32は、0番目の読取ラインを第1のワーク領域に書き込む。第1のワーク領域内の情報は、ライン毎に処理が実行される過程で順次消去される。第2のワーク領域内の情報は、ライン毎に処理が実行される過程で消去されず、後述のS50の処理が終了した後に消去される。
S102では、m番目の読取ラインに対する輝度値変換処理を実行する。具体的には、CPU32は、m番目の読取ラインを構成する複数個の画素のそれぞれについて、当該画素が示す画素値(即ちR値とG値とB値)をS102内の数式に従って輝度値(即ちY値)に変換して、256階調の輝度値(即ち「0〜255」)を示す新たな画素を生成する。そして、CPU32は、輝度値を示す複数個の画素によって構成されるライン(以下では「輝度ライン」と呼ぶ)をワーク領域38内の第1のワーク領域に書き込む。本実施例では、読取対象の原稿は、白色(即ちR=G=B=255)の背景を有する。従って、原稿の背景を示す輝度値(即ちY値)は、通常、255になり、原稿の背景以外を示す輝度値は、通常、255未満の値になる。CPU32は、S102でm番目の輝度ラインを第1のワーク領域に書き込む際に、m番目の読取ラインを第1のワーク領域から消去する。
S104では、CPU32は、S102で生成された輝度ラインに対する二値化処理を実行する。具体的には、CPU32は、輝度ラインを構成する複数個の画素のそれぞれについて、当該画素が示す輝度値を「1」又は「0」に変換して、「1」又は「0」を示す新たな画素を生成する。より具体的には、CPU32は、輝度値が予め決められている閾値(例えば200)以下である場合には、「1」を示す画素を生成し、輝度値が閾値以下である場合には、「0」を示す画素を生成する。即ち、原稿の背景を表わす画素が「0」で表現され、原稿の背景以外を表わす画素が「1」で表現される。そして、CPU32は、「0」又は「1」を示す複数個の画素によって構成されるライン(以下では「二値ライン」と呼ぶ)を第1のワーク領域に書き込む。以下では、「1」を示す画素、「0」を示す画素を、それぞれ、「ON画素」、「OFF画素」と呼ぶ。CPU32は、S104でm番目の二値ラインを第1のワーク領域に書き込む際に、m番目の輝度ラインを第1のワーク領域から消去する。
S110では、CPU32は、S104で生成されたm番目の二値ラインを利用して、m番目のx方向情報を第1のワーク領域に書き込む。x方向情報は、m番目の二値ラインに含まれるON画素及びOFF画素の配列を示す情報であり、1本の二値ラインの画素数に等しい個数の数字(即ち数字列)によって表現される。例えば、m番目の二値ラインが連続する1個以上のON画素を含む場合には、CPU32は、当該1個以上のON画素のうちの右端のON画素から左側に向かうにつれて、各ON画素に対応する各数字として、「1」、「2」、「3」・・・を割り当てる。また、例えば、m番目の二値ラインが連続する1個以上のOFF画素を含む場合には、当該1個以上のOFF画素のうちの右端のOFF画素から左側に向かうにつれて、各OFF画素に対応する各数字として、「−1」、「−2」、「−3」・・・を割り当てる。
図6は、y方向に沿って並ぶ複数本(即ち11本)の二値ラインの一例を示す。なお、実際には、複数本の二値ラインが第1のワーク領域に同時的に格納されている状態はあり得ず、1本の二値ラインのみが第1のワーク領域に格納される。この図では、1本の二値ラインはx方向に沿って並ぶ26個の画素によって構成され、矩形がON画素を示し、矩形以外の領域がOFF画素を示す。なお、矩形内の値は、後で説明するラベル値を示す。例えば、「y=0」に対応する0番目の二値ラインは、26個のOFF画素のみによって構成される。この場合、CPU32は、x方向情報として、右側から左側へ向かう順で数字列「−1、−2・・・−26」を生成する。また、例えば、「y=1」に対応する1番目の二値ラインは、右側から左側に向かって、3個のOFF画素200、3個のON画素202、9個のOFF画素204、6個のON画素206、及び、5個のOFF画素208によって構成される。この場合、CPU32は、x方向情報として、右側から左側へ向かう順で数字列「−1、−2、−3、1、2、3、−1、−2・・・−9、1、2・・・6、−1、−2・・・−5」を生成する。
CPU32は、図3のS110でm番目のx方向情報を第1のワーク領域に書き込む際に、m番目の二値ラインを第1のワーク領域から消去する。即ち、第1のワーク領域内の二値ラインは、次の二値ラインが第1のワーク領域に書き込まれる前に、第1のワーク領域から消去される。この結果、2本の二値ラインが第1のワーク領域内に同時的に存在することがないので、少ないメモリ使用量で処理を実行することができる。なお、変形例では、(m−1)番目の二値ラインが第1のワーク領域に書き込まれている状態で、m番目の二値ラインが第1のワーク領域にさらに書き込まれてもよい。そして、S110において、m番目のx方向情報が第1のワーク領域に書き込まれる際に、(m−1)番目の二値ラインが第1のワーク領域から消去されてもよい。即ち、第1のワーク領域内の二値ラインは、次の二値ラインが第1のワーク領域に書き込まれた後に、第1のワーク領域から消去されてもよい。
S112では、CPU32は、(m−1)番目のx方向情報と(m−1)番目のy方向情報とを利用して、m番目のy方向情報を第1のワーク領域に書き込む。y方向情報は、m番目の二値ラインを構成する複数個の画素のそれぞれについて、当該画素と、当該画素のy方向の上側に存在する最も近いON画素と、の間の距離(即ち画素数)を示す情報であり、1本の二値ラインの画素数に等しい個数の数字(即ち数字列)によって表現される。以下では、m番目の二値ラインに含まれる1個の画素のことを「注目画素」と呼び、(m−1番目)の二値ラインのうち、注目画素に隣接する画素(即ち注目画素の直上の画素)のことを「参照画素」と呼ぶ。CPU32は、まず、(m−1)番目のx方向情報から、参照画素に対応する数字(以下では「第1の数字」と呼ぶ)を読み込む。第1の数字がプラスの値であるということは、注目画素にON画素である参照画素が隣接していることを意味し、注目画素と、注目画素の上側に存在する最も近いON画素と、の間の距離がゼロであることを意味する。従って、CPU32は、m番目のy方向情報における注目画素に対応する数字として「0」を割り当てる。また、第1の数字がマイナスの値である場合には、注目画素にOFF画素である参照画素が隣接していることを意味する。この場合、CPU32は、(m−1)番目のy方向情報から、参照画素に対応する数字(以下では「第2の数字」と呼ぶ)を読み込む。第2の数字が「−1」である場合には、注目画素の上側にON画素が全く存在しないことを意味する。従って、CPU32は、m番目のy方向情報における注目画素に対応する数字として「−1」を割り当てる。また、第2の数字がゼロ以上である場合には、注目画素の上側に距離を隔ててON画素が存在することを意味する。従って、CPU32は、m番目のy方向情報における注目画素に対応する数字として、第2の数字に「1」が加算された値を割り当てる。
例えば、図6において、(y=0)に示される0番目(即ちm=0)のy方向情報が生成される際には、(m−1)番目のx方向情報と(m−1)番目のy方向情報とがまだ存在しない。この場合、CPU32は、0番目のy方向情報として、予め決められている数字列「−1、−1・・・−1」を生成する。(y=1)に示される1番目のy方向情報が生成される際には、0番目のx方向情報において、全ての参照画素に対応する数字がマイナスの値であり、0番目のy方向情報において、全ての参照画素に対応する数字が「−1」である。従って、CPU32は、1番目のy方向情報として、数字列「−1、−1・・・−1」を生成する。(y=2)に示される2番目のy方向情報が生成される際には、1番目のx方向情報において、各参照画素200,204,208に対応する数字がマイナスの値であり、1番目のy方向情報において、各参照画素200,204,208に対応する数字が「−1」である。従って、CPU32は、2番目のy方向情報において、各注目画素210,214,218に対応する数字として「−1」を割り当てる。また、1番目のx方向情報において、各参照画素202,206に対応する数字202x,206xがプラスの値である。従って、CPU32は、2番目のy方向情報において、各注目画素212,216に対応する数字212y,216yとして「0」を割り当てる。
上記と同様に、3番目のy方向情報が生成される。この際には、2番目のx方向情報において、各参照画素216aに対応する数字216xaがプラスの値である。従って、CPU32は、3番目のy方向情報において、各参照画素216aに隣接する各注目画素(符号省略)に対応する数字220として「0」を割り当てる。また、2番目のx方向情報において、各参照画素212,216bに対応する数字212x,216xbがマイナスの値であり、かつ、2番目のy方向情報において、各参照画素212,216bに対応する数字212y,216yが「0」である。従って、CPU32は、3番目のy方向情報において、各参照画素212,216bに隣接する各注目画素(符号省略)に対応する数字222,224として、「0」に「1」が加算された値「1」を割り当てる。上記と同様に、4番目以降の各y方向情報が生成される。
図3のS116では、CPU32は、(m−1)番目のx方向情報と(m−1)番目のy方向情報とを第1のワーク領域から消去する。これにより、少ないメモリ使用量でS120以降の各処理を実行することができる。なお、変形例では、(m−1)番目のy方向情報にm番目のy方向情報が上書きされるように、S112が実行されてもよい。この場合、m番目のy方向情報の書き込みと、(m−1)番目のy方向情報の消去と、が同時的に実行される。また、別の変形例では、S112の直後にS116が実行されなくてもよく、例えば、第1のワーク領域内の空き容量が閾値未満になった際に、不要な情報が第1のワーク領域から消去されてもよい。即ち、m番目の情報(即ちx方向情報及びy方向情報)が第1のワーク領域に書き込まれる際に、(m−1)番目の情報が第1のワーク領域から消去されなくてもよい。
S120では、CPU32は、m番目のx方向情報を利用して、S130〜S134の処理が未だに実行されていないON画素グループがm番目の二値ライン内に存在するのか否かを判断する。ここで、ON画素グループは、連続する1個以上のON画素を意味する。図6の例では、0番目の二値ラインはOFF画素のみによって構成される。従って、CPU32は、0番目のx方向情報を利用して、ON画素グループが0番目の二値ライン内に存在しないと判断し(S120でNO)、S140に進む。また、1番目の二値ラインは、2個のON画素グループ202,206を含む。従って、CPU32は、1番目のx方向情報を利用して、未処理のON画素グループ206が1番目の二値ライン内に存在すると判断し(S120でYES)、ON画素グループ206を処理対象として特定して、S130に進む。なお、ここでは、m番目の二値ライン内の左側から右側に向かって、未処理の各ON画素グループが順に特定される。
S130では、CPU32は、m番目のy方向情報を利用して、処理対象のON画素グループが解析済みのオブジェクトに隣接するのか否かを判断する。解析済みのオブジェクトは、0番目から(m−1)番目までの各二値ライン内のON画素グループであって、後述のS132又はS134においてオブジェクトとして解析されたON画素グループである。具体的には、CPU32は、m番目のy方向情報から処理対象のON画素グループに対応する各数字を特定し、特定済みの各数字の中に「0」が存在しない場合には、解析済みのオブジェクトに隣接しないと判断して(S130でNO)、S132に進む。また、CPU32は、上記の特定済みの各数字の中に「0」が存在する場合には、解析済みのオブジェクトに隣接すると判断して(S130でYES)、S134に進む。
例えば、図6の1番目の二値ライン内のON画素グループ206が処理対象である場合には、1番目のy方向情報において、ON画素グループ206に対応する各数字が「−1」である。この場合、CPU32は、S130でNOと判断して、S132に進む。また、2番目の二値ライン内のON画素グループ216aが処理対象である場合には、2番目のy方向情報において、ON画素グループ216aに対応する各数字216yが「0」である。この場合、CPU32は、S130でYESと判断して、S134に進む。
S132では、CPU32は、新たなオブジェクトデータを第2のワーク領域内に生成する(後述の図4参照)。一方、S134では、CPU32は、第2のワーク領域に存在するオブジェクトデータを更新する(後述の図5参照)。S132又はS134が終了すると、S120に戻る。これにより、例えば、図6の1番目の二値ライン内のON画素グループ206が処理対象として特定された結果としてS132が終了した後に、S120において、ON画素グループ202が処理対象として特定される。そして、ON画素グループ202についてS132が終了すると、S120でNOと判断され、S140に進む。
S140では、CPU32は、現在のmが最大値であるのか否かを判断する。最大値は、スキャンデータのy方向の画素数である。CPU32は、現在のmが最大値でないと判断する場合(S140でNO)には、S142において、現在のmに「1」を加算して新たなmを算出し、新たな読取ラインを第1のワーク領域に書き込んで、S102に戻る。CPU32は、現在のmが最大値であると判断する場合(S140でYES)には、S150に進む。
S150では、CPU32は、S132及びS134で生成された1個以上のオブジェクトデータの中に、S152の処理が未だに実行されていないオブジェクトデータが存在するのか否かを判断する。CPU32は、未処理のオブジェクトデータが存在すると判断する場合(S150でYES)には、S152において、当該オブジェクトデータに対して大サイズフラグを追加して、S150に戻る。一方、CPU32は、未処理のオブジェクトデータが存在しないと判断する場合(S150でNO)には、第1の解析処理(図2のS20の処理)を終了する。
(オブジェクトデータの生成処理;図4)
続いて、図4を参照して、図3のS132において、新たなオブジェクトデータを生成する処理の内容を説明する。オブジェクトデータは、互いに隣接する1個以上のON画素によって構成されるオブジェクトを表わすデータである。図6に示されるように、オブジェクトデータは、ラベル値と座標と幅と高さと周辺フラグとが対応付けられているデータである。ラベル値は、オブジェクトをラべリング(即ち識別)するための値である。座標は、オブジェクトに外接する外接矩形の左上の隅の座標を示す。幅、高さは、それぞれ、上記の外接矩形のx方向の画素数、y方向の画素数を示す。周辺フラグは、オブジェクトの周囲の所定領域内に他のオブジェクトが存在することを示す「ON」と、当該所定領域内に他のオブジェクトが存在しないことを示す「OFF」と、のどちらかの値である。
図4のS200では、CPU32は、まず、第1の解析処理で既に書き込まれている最大のラベル値に「1」を加算することによって新たなラベル値を算出し、当該新たなラベル値を第2のワーク領域に書き込む。例えば、図6のON画素グループ206が処理対象である場合には、ラベル値「1」が書き込まれる。
S210では、CPU32は、S200で書き込まれたラベル値に対応付けて、処理対象のON画素グループのうちの左端のON画素である左端画素の座標を第2のワーク領域に書き込む。例えば、図6のON画素グループ206が処理対象である場合には、左端画素の座標(5,1)が書き込まれる。
S212では、CPU32は、S200で書き込まれたラベル値に対応付けて、処理対象のON画素グループの幅及び高さを第2のワーク領域に書き込む。ここで、高さは、「1」である。また、幅は、処理対象のON画素グループの画素数であり、m番目のx方向情報から得られる。例えば、図6のON画素グループ206が処理対象である場合には、1番目のx方向情報のうち、ON画素グループ206に対応する数字206xから、ON画素グループ206の幅「6」が得られる。
S220では、CPU32は、上記の左端画素の周囲の所定領域内に他のオブジェクト(即ち処理対象のON画素グループに隣接しないON画素)が存在するのか否かを判断する。所定領域は、x方向において、左端画素の右側の20画素分かつ左端画素の左側の20画素分の領域である。また、所定領域は、y方向において、左端画素の上側の20画素分の領域であり、左端画素の下側の領域を含まない。例えば、図7の画素400が左端画素である場合には、ハッチングで示された領域が所定領域である。なお、変形例では、上記の「20画素」とは異なる値が利用されてもよい。例えば、300dpiの読取解像度で原稿が読取られる場合には、60画素が利用されてもよい。
具体的には、S220では、CPU32は、まず、m番目のx方向情報を利用して、左端画素の右側の20画素分かつ左端画素の左側の20画素分の領域内に他のオブジェクトが存在するのか否かを判断する。例えば、図6のON画素グループ206が処理対象である場合には、CPU32は、1番目のx方向情報を利用して、左端画素(即ち数字「6」に対応する画素)の右側の20画素分の領域内に3個のON画素202(即ち数字202xに対応する各画素)が存在すると判断する(S220でYES)。また、CPU32は、m番目のy方向情報を利用して、左端画素の上側の20画素分の領域内に他のオブジェクトが存在するのか否かを判断する。例えば、図6のON画素グループ230が処理対象である場合には、CPU32は、9番目のy方向情報を利用して、左端画素(即ち数字「10」に対応する画素)の上側の20画素分の領域内に複数個のON画素216a等(即ち数字「6」及び「7」に対応する各画素)が存在すると判断する(S220でYES)。なお、変形例では、S220で所定領域の基準となる画素は、左端画素でなくてもよく、例えば、処理対象のON画素グループの中央の画素、右端の画素等であってもよい。
CPU32は、所定領域内に他のオブジェクトが存在すると判断する場合(S220でYES)には、S222において、S200で書き込まれたラベル値に対応付けて、周辺フラグ「ON」を書き込む。一方、CPU32は、所定領域内に他のオブジェクトが存在しないと判断する場合(S220でNO)には、S224において、S200で書き込まれたラベル値に対応付けて、周辺フラグ「OFF」を書き込む。S222又はS224が終了すると、新たなオブジェクトデータが完成し、図4の処理が終了する。例えば、図6のON画素グループ206が処理対象である場合には、新たなオブジェクトデータ300が完成し、ON画素グループ202が処理対象である場合には、新たなオブジェクトデータ310が完成する。
(オブジェクトデータの更新処理;図5)
続いて、図5を参照して、図3のS134において、オブジェクトデータを更新する処理の内容を説明する。
S240では、CPU32は、更新対象のオブジェクトデータを特定する。上述したように、例えば、図6のON画素グループ216aが処理対象である場合には、ON画素グループ216aが解析済みのオブジェクトに隣接すると判断される(図3のS130でYES)。この場合、CPU32は、ON画素グループ216aの上側に隣接する少なくとも1個の画素の座標(例えば(7,1))を特定する。また、CPU32は、第2のワーク領域内のオブジェクトデータ300に含まれる座標(5,1)、幅「6」、及び、高さ「1」を利用して、オブジェクトデータ300によって表わされるオブジェクト(即ちON画素グループ206)に外接する外接矩形内を特定する。そして、CPU32は、特定済みの座標(7,1)が特定済みの外接矩形内に含まれるので、オブジェクトデータ300を更新対象として特定する。なお、複数個のオブジェクトデータが第2のワーク領域内に存在する場合には、CPU32は、複数個のオブジェクトデータのそれぞれについて外接矩形を特定し、特定済みの座標がどの外接矩形内に存在するのかを確認することによって、更新対象のオブジェクトデータを特定する。
S250では、CPU32は、更新対象のオブジェクトデータから特定される外接矩形と、処理対象のON画素グループと、を利用して、新たな外接矩形を特定する。例えば、図6のON画素グループ216aが処理対象である場合には、新たな外接矩形250が特定される。そして、CPU32は、更新対象のオブジェクトデータに含まれる座標が新たな外接矩形の左上の隅の座標が一致しない場合には、前者の座標を後者の座標に更新する。例えば、図6のON画素グループ216aが処理対象である場合には、新たな外接矩形250の左上の隅の座標は、更新対象のオブジェクトデータ310に含まれる座標(5,1)に一致する。この場合、座標の更新が実行されない。
S252では、CPU32は、更新対象のオブジェクトデータに含まれる幅がS250で特定された新たな外接矩形の幅に一致しない場合には、前者の幅を後者の幅に更新する。さらに、CPU32は、更新対象のオブジェクトデータに含まれる高さを、当該高さに「1」を加算して得られる新たな高さに更新する。例えば、オブジェクトデータ300が更新対象である場合には、高さ「1」が高さ「2」に更新される。
S260では、CPU32は、更新対象のオブジェクトデータに含まれる周辺フラグが「OFF」であるのか否かを判断する。CPU32は、周辺フラグが「OFF」であると判断する場合(S260でYES)には、S270に進む。一方、CPU32は、周辺フラグが「ON」であると判断する場合(S260でNO)には、S270,S272をスキップして、図5の処理を終了する。オブジェクトの周辺の所定領域内に他のオブジェクトが存在することが既に判明しているので、S270,S272の処理を実行する必要がないからである。
S270は、S220と同様である。CPU32は、所定領域内に他のオブジェクトが存在すると判断する場合(S270でYES)には、S272に進み、更新対象のオブジェクトデータに含まれる周辺フラグを「OFF」から「ON」に更新する。S272が終了すると、図5の処理が終了する。一方、CPU32は、所定領域内に他のオブジェクトが存在しないと判断する場合(S270でNO)には、S272をスキップして、図5の処理を終了する。
上記の図4及び図5の処理が実行されることにより、図6の例では、ON画素グループ206,216aによって構成されるオブジェクトを表わすオブジェクトデータ302が生成される。また、ON画素グループ202によって構成されるオブジェクトを表わすオブジェクトデータ310と、ON画素グループ230によって構成されるオブジェクトを表わすオブジェクトデータ320と、が生成される。
(図3のS152の処理の詳細)
S152では、CPU32は、オブジェクトデータに対して大サイズフラグを追加する。具体的には、CPU32は、オブジェクトデータに含まれる幅及び高さの少なくとも一方が4画素以上である場合には、当該オブジェクトデータに対して大サイズフラグ「ON」を追加する。一方、CPU32は、オブジェクトデータに含まれる幅及び高さのどちらも4画素未満である場合には、当該オブジェクトデータに対して大サイズフラグ「OFF」を追加する。図6の例では、CPU32は、各オブジェクトデータ302,320に対して大サイズフラグ「ON」を追加し、オブジェクトデータ310に対して大サイズフラグ「OFF」を追加する。なお、変形例では、上記の「4画素」とは異なる閾値が利用されてもよい。例えば、300dpiの読取解像度で原稿が読取られる場合には、「12画素」が閾値として利用されてもよい。
(第2の解析処理;図3)
続いて、図3を参照して、図2のS30で実行される第2の解析処理の内容を説明する。第2の解析処理では、スキャンデータを構成する複数本の読取ラインのそれぞれがy方向の下側から上側に向かって順次解析される点を除くと、第1の解析処理とほぼ同様である。第1の解析処理と異なる点を説明しておく。
S100では、0番目の読取ラインとして、y方向の最も下側に存在する読取ラインが特定される。S142では、新たな読取ラインとして、y方向の下側から上側に向かって読取ラインが順次特定される。S112で生成されるm番目のy方向情報は、m番目の二値ラインに含まれる複数個の画素のそれぞれについて、当該画素と、当該画素のy方向の下側に存在する最も近いON画素と、の間の距離(即ち画素数)を示す情報である。図4のS220及び図5のS270では、所定領域は、y方向において、左端画素の下側の20画素分の領域であり、左端画素の上側の領域を含まない。
図7は、第1の解析処理の結果及び第2の解析処理の結果の一例を示す。この例では、アルファベット「i」が、1個のON画素400と、互いに隣接する5個のON画素402と、によって表現されている。第1の解析処理では、y方向の上側から下側に向かって解析が実行され、ON画素400に対応するオブジェクトデータ410と、5個のON画素402に対応するオブジェクトデータ420と、が生成される。オブジェクトデータ410が生成される際には、ON画素400の上側の所定領域(即ちハッチングの領域)内に他のオブジェクト(即ちON画素)が存在するのか否かが判断される(図4のS220)。この例では、他のオブジェクトが存在しないと判断されるので(S220でNO)、周辺フラグとして「OFF」が書き込まれる(S224)。また、大サイズフラグとして「OFF」が書き込まれる(図3のS152)。仮に、第1の解析処理が実行されるが第2の解析処理が実行されない構成を採用すると、オブジェクトデータ410によると、ON画素400によって構成される対象オブジェクトの周囲に他のオブジェクトが存在せず、かつ、対象オブジェクトが小さいサイズを有することしかわからない。従って、対象オブジェクトが孤立点として特定され得るので、スキャンデータからアルファベット「i」の一部が削除され得る。即ち、実際には削除されるべきでないオブジェクトが削除され得る。
これに対し、本実施例では、第2の解析処理において、さらに、y方向の下側から上側に向かって解析が実行され、5個のON画素402に対応するオブジェクトデータ430と、ON画素400に対応するオブジェクトデータ440と、が生成される。オブジェクトデータ440が生成される際には、ON画素400の下側の所定領域(即ちハッチングの領域)内に他のオブジェクトが存在するのか否かが判断される(図4のS220)。この例では、他のオブジェクト(即ちON画素402)が存在すると判断されるので(S220でYES)、周辺フラグとして「ON」が書き込まれる(S222)。オブジェクトデータ430によると、ON画素400によって構成される対象オブジェクトの周囲に他のオブジェクトが存在することがわかるので、対象オブジェクトが孤立点として特定されることを抑制することができる。即ち、除去されるべきでないオブジェクトが除去されるのを抑制することができる。
(図2のS40の特定処理の詳細)
CPU32は、S40の特定処理において、S20の第1の解析処理の結果とS30の第2の解析処理の結果とを利用して、孤立点を特定する。具体的には、CPU32は、まず、第1の解析処理で得られる1個以上のオブジェクトデータの中から、周辺フラグ「OFF」及び大サイズフラグ「OFF」を含むオブジェクトデータ(以下では「第1注目データ」と呼ぶ)を特定する。次いで、CPU32は、第2の解析処理で得られる1個以上のオブジェクトデータの中から、第1注目データに含まれる座標、幅、及び、高さに一致する情報を含むオブジェクトデータ(以下では「第2注目データ」と呼ぶ)を特定する。そして、CPU32は、第2注目データに含まれる周辺フラグが「OFF」である場合に、第1注目データによって表わされるオブジェクト(即ち第2注目データによって表わされるオブジェクト)を孤立点として特定する。
図8は、第1の解析処理の結果と第2の解析処理の結果の一例を示す。オブジェクト450は孤立点であり、オブジェクト460,470はアルファベット「i」であり、オブジェクト480はアルファベット「A」である。この例では、CPU32は、まず、第1の解析処理の結果から、2個のオブジェクト450,460に対応する2個の第1注目データ450a,460aを特定する。次いで、CPU32は、第2の解析処理の結果から、オブジェクト450に対応する第1注目データ450aに含まれる座標、幅、及び、高さに一致する情報を含む第2注目データ450bを特定する。そして、CPU32は、オブジェクト450に対応する第2注目データ450bに含まれる周辺フラグが「OFF」であるので、オブジェクト450を孤立点として特定する。また、CPU32は、第2の解析処理の結果から、オブジェクト460に対応する第1注目データ460aに含まれる座標、幅、及び、高さに一致する情報を含む第2注目データ460bを特定する。そして、CPU32は、オブジェクト460に対応する第2注目データ460bに含まれる周辺フラグが「ON」であるので、オブジェクト460を、孤立点として特定せずに、文字、図表、写真等の一部を構成するオブジェクトであると特定する。この結果、アルファベット「i」の一部を構成するオブジェクト460が除去されるのを抑制することができる。また、第1の解析処理の結果では、2個のオブジェクト470,480に対応する2個のオブジェクトデータ470a,480bのそれぞれは、大サイズフラグ「ON」を含む。従って、CPU32は、各オブジェクト470,480を、孤立点として特定せずに、文字、図表、写真等のオブジェクトであると特定する。この結果、除去されるべきでないオブジェクト470,480が除去されるのを抑制することができる。本実施例によると、オブジェクトの特性(即ち、孤立点、文字等の一部を構成するオブジェクト、文字等のオブジェクト)を適切に特定することができ、除去されるべきオブジェクトを適切に除去することができる。
(図2のS50の補正処理の詳細)
S50では、CPU32は、S40で孤立点として特定されたオブジェクトに対応するオブジェクトデータに含まれる座標、幅、及び、高さを利用して、当該オブジェクトに外接する外接矩形を特定する。次いで、CPU32は、圧縮済みスキャンデータのうち、特定済みの外接矩形内の領域を含む1本以上の圧縮済みラインを解凍して、1本以上の読取ラインを生成する。そして、CPU32は、当該1本以上の読取ラインを構成する複数個の画素のうち、特定済みの領域に対応する1個以上の画素を、白色の画素値(即ちR=G=B=255)を示す画素に補正する。これにより、孤立点を除去することができる。なお、変形例では、CPU32は、公知の手法を利用して、スキャン画像の背景色を表わす画素値を算出し、当該画素値に補正してもよい。
(第1実施例の効果)
本実施例によると、スキャナ10は、m番目のy方向情報を生成するので(図3のS112)、それを利用して、処理対象のON画素グループの周辺の所定領域内に、当該ON画素グループに隣接しない他のON画素が存在するのか否かを判断することができる(図4のS220、図5のS270)。従って、スキャナ10は、m番目の二値ラインの上側の各二値ラインを利用しなくても(即ち当該各二値ラインがワーク領域38に書き込まれている状態でなくても)、上記の判断を実行せずに済み、この結果、少ないメモリ使用量で上記の判断を実行することができる。
また、スキャナ10は、第1の解析処理(図2のS20)における図4のS220又は図5のS270において、m番目の二値ラインの下側に存在する各二値ラインを利用せずに(即ち当該各二値ラインがワーク領域38に書き込まれていない状態で)、処理対象のON画素グループの周辺の所定領域内に、当該ON画素グループに隣接しない他のON画素が存在するのか否かを判断する。また、スキャナ10は、第2の解析処理(図2のS30)における図4のS220又は図5のS270において、m番目の二値ラインの上側に存在する各二値ラインを利用しなくても(即ち当該各二値ラインがワーク領域38に書き込まれていない状態で)、上記の判断を実行する。従って、スキャナ10は、少ないメモリ使用量で上記の判断を実行することができる。
(対応関係)
スキャナ10が、「画像解析装置」の一例である。ワーク領域38内の第1のワーク領域、第2のワーク領域が、それぞれ、「第1の特定領域」、「第2の特定領域」の一例である。y方向、x方向が、それぞれ、「第1方向」、「第2方向」の一例である。上側、下側が、それぞれ、「第1側」、「第2側」の一例である。圧縮済みスキャンデータ、複数本の二値ラインが、それぞれ、「読取画像データ」、「M本のライン画素グループ」の一例である。ON画素、OFF画素が、それぞれ、「第1種の画素」、「第2種の画素」の一例である。x方向情報、第1の解析処理で生成されるy方向情報、第2の解析処理で生成されるy方向情報が、それぞれ、「画素情報」、「第1の距離情報」、「第2の距離情報」の一例である。図6のON画素グループ206、ON画素グループ216aが、それぞれ、「第1の対象グループ」、「第2の対象グループ」の一例である。図7の第1の解析処理で利用される所定領域(即ちハッチングの領域)、第2の解析処理で利用される所定領域(即ちハッチングの領域)が、それぞれ、「第1の所定領域」、「第2の所定領域」の一例である。図2のS50の補正処理が、「所定処理」の一例である。オブジェクトデータに含まれる座標、幅、及び、高さが、「特定情報」の一例である。オブジェクトデータに含まれる周辺フラグが、「結果情報」の一例である。
(第2実施例;図9)
第2実施例を説明する前に、比較例の処理を説明しておく。図9は、文字「X」を表わすオブジェクトを示す。1番目の二値ラインについて図3のS110〜S134の処理が実行される際に、S120において、ON画素グループ500が処理対象として特定されると、図4のS220において、ON画素グループ500の周辺の所定領域内にON画素グループ502が存在すると判断される(S220でYES)。従って、周辺フラグ「ON」を含むオブジェクトデータ510が生成される(S222)。次いで、図3のS120において、ON画素グループ502が処理対象として特定されると、図4のS220において、ON画素グループ502の周辺の所定領域内にON画素グループ500が存在すると判断される(S220でYES)。従って、周辺フラグ「ON」を含むオブジェクトデータ512が生成される(S222)。
その後、2番目の二値ラインについて図3のS110〜S134の処理が実行される際に、S120において、ON画素グループ504が処理対象として特定されると、S130において、ON画素グループ504が2個のON画素グループ500,502の双方に隣接すると判断される。即ち、各ON画素グループ500〜504が同じオブジェクト(即ち文字「X」)を構成することが判明する。この際に、2個のオブジェクトデータ510,512を1個のオブジェクトに対応する1個のオブジェクトデータ514に統合する構成を想定する。この場合、2個のオブジェクトデータ510,512では、周辺フラグとして「ON」が書き込まれているので、オブジェクトデータ514でも、周辺フラグとして「ON」が書き込まれ得る。即ち、実際には、オブジェクトの周辺に他のオブジェクトが存在しないにも関わらず、周辺フラグとして「ON」が書き込まれ得る。この場合、オブジェクトの特性(即ち、孤立点、文字等の一部を構成するオブジェクト、文字等のオブジェクト)を適切に特定することができない。
第2実施例では、オブジェクトの特性を適切に特定するために、図4のS220及び図5のS270で利用される所定領域が、第1実施例とは異なる。即ち、図9に示されるように、第1の解析処理で利用される所定領域(即ちハッチングの領域)は、左端画素の左側、右側、及び、上側の4画素分の領域を含まない。また、図示省略しているが、第2の解析処理で利用される所定領域は、左端画素の左側、右側、及び、下側の4画素分の領域を含まない。即ち、所定領域は、左端画素から4画素分以内の領域を含まず、左端画素から4画素分以上であって20画素分以内の領域を含む。なお、変形例では、上記の「4画素」とは異なる閾値が利用されてもよい。例えば、300dpiの読取解像度で原稿が読取られる場合には、「12画素」が閾値として利用されてもよい。
本実施例によると、ON画素グループ500の右側の4画素が所定領域から除外されているので、ON画素グループ500の周辺の所定領域内にON画素グループが存在しないと判断され(図4のS220でNO)、周辺フラグ「OFF」を含むオブジェクトデータ520が生成される(S222)。また、ON画素グループ502の左側の4画素が所定領域から除外されているので、ON画素グループ502の周辺の所定領域内にON画素グループが存在しないと判断されるので(S220でNO)、周辺フラグ「OFF」を含むオブジェクトデータ522が生成される(S222)。即ち、同じオブジェクトを構成する2個のON画素グループ500,502のうちの一方のON画素グループについて、他方のON画素グループが周辺に存在すると判断されるのを抑制することができる。その後、CPU32は、図3のS130において、ON画素グループ504が2個のON画素グループ500,502の双方に隣接すると判断し、図5のS240〜S252において、2個のオブジェクトデータ520,522を1個のオブジェクトデータ524に統合する。2個のオブジェクトデータ520,522では周辺フラグとして「OFF」が書き込まれているので、CPU32は、オブジェクトデータ524においても、周辺フラグとして「OFF」を適切に書き込むことができる。
本実施例によると、周辺フラグが適切に書き込まれるので、オブジェクトの特性(即ち、孤立点、文字等の一部を構成するオブジェクト、文字等のオブジェクト)を適切に特定することができる。本実施例では、処理対象のON画素グループのうちの左端画素が、「対象画素」の一例である。また、4画素、20画素が、それぞれ、「第1の所定距離」、「第2の所定距離」の一例である。
(第3実施例;図10)
第2実施例と同様に、本実施例では、図10に示されるように、図4のS220及び図5のS270で利用される所定領域(即ちハッチングの領域)は、左端画素から4画素分以内の領域を含まず、左端画素から4画素分以上であって20画素分以内の領域を含む。図10の例では、左端画素の上側にON画素600,602が存在する。この場合、22番目のy方向情報は、左端画素に対応する数字として、左端画素とON画素600との間の距離である「2」を含む。即ち、22番目のy方向情報は、ON画素602に関する情報を含まない。この結果、CPU32は、仮に、22番目のy方向情報のみを利用して、S220及びS270の判断を実行すると、ON画素600が所定領域に含まれておらず、かつ、ON画素602の存在が不明であるので、所定領域内にON画素が存在しないと判断する。即ち、実際には、所定領域内にON画素602が存在するにも関わらず、誤った判断を実行してしまう。
本実施例では、上記の誤った判断を避けるために、図3のS114において、CPU32は、補助情報を生成する。ここで、補助情報は、(m−4)番目のy方向情報である。上記の「4」は、所定領域から除外される左端画素の周囲の画素数である。具体的には、S114では、CPU32は、S102〜S112と同様に、(m−4)番目の二値ラインを利用して、(m−4)番目のx方向情報と、(m−4)番目のy方向情報である補助情報と、を生成する。特に、CPU32は、(m−5)番目のx方向情報と(m−5)番目のy方向情報とを利用して、(m−4)番目のy方向情報である補助情報を生成する。
図4のS220及び図5のS270では、CPU32は、さらに、(m−4)番目のy方向情報である補助情報を利用して、左端画素の上側の所定領域内にON画素が存在するのか否かを判断する。図10の例では、18番目のy方向情報である補助情報は、x方向において左端画素と同じ位置に存在するOFF画素604に対応する数字として、OFF画素604とON画素602との間の距離である「4」を含む。従って、CPU32は、補助情報を利用すれば、左端画素の上側の所定領域内にON画素602が存在することを適切に判断することができる。本実施例では、(m−5)番目のx方向情報、(m−5)番目のy方向情報が、それぞれ、「(k−1)番目の画素情報」、「(k−1)番目の第1の距離情報」である。
以上、本発明の具体例を詳細に説明したが、これらは例示にすぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には以上に例示した具体例を様々に変形、変更したものが含まれる。上記の実施例の変形例を以下に列挙する。
(変形例1)上記の各実施例では、図2のS40において、CPU32は、孤立点であるオブジェクトを特定するが、それに代えて、文字であるオブジェクトを特定してもよい。この場合、図3のS152において、大サイズフラグ「ON」及び「OFF」を区別するための閾値は、2cmに対応する画素数であってもよい。当該画素数は、読取解像度に依存する。そして、図2のS40では、CPU32は、大サイズフラグ「OFF」を含むオブジェクトデータであって、第1の解析処理及び第2の解析処理のうちの少なくとも一方の結果として周辺フラグ「ON」を含むオブジェクトデータを特定する。文字は、通常、2cm以下の幅及び高さを有し、さらに、文字の周辺には、通常、他の文字が存在する。従って、大サイズフラグ「OFF」及び周辺フラグ「ON」を含むオブジェクトデータは、通常、文字であるオブジェクトを表わすデータである。図2のS50では、CPU32は、文字として特定された各オブジェクトに対してOCR(Optical Character Recognitionの略)を実行する。即ち、CPU32は、文字として特定されていない各オブジェクトに対してOCRを実行せずに済むので(即ちスキャン画像の全体に対してOCRを実行せずに済むので)、OCRを迅速に実行することができる。本実施例では、2cmに対応する画素数、OCRが、それぞれ、「第2の閾値」、「所定処理」の一例である。
(変形例2)図3のS110において、x方向情報が生成されなくてもよい。この場合、S112では、CPU32は、(m−1)番目のx方向情報に代えて、(m−1)番目の二値ラインを利用して、m番目のy方向情報を生成してもよい。本変形例では、二値ラインそのものが、「画素情報」の一例である。
(変形例3)図2のS30の第2の解析処理が実行されなくてもよい。この場合、S40では、CPU32は、第1の解析処理の結果のみを利用して、孤立点であるオブジェクトを特定してもよい。
(変形例4)例えば、黒色のベタ画像内に白色の文字が配置されている原稿の読取りが実行される場合には、黒色のベタ画像内に白色の文字とは異なる白色の孤立点が形成され得る。このような孤立点を除去するために、CPU32は、図3のS120において、処理対象のOFF画素グループを特定し、図4のS220及び図5のS270において、処理対象のOFF画素グループのうちの左端画素の周辺の所定領域内に他のOFF画素が存在するのか否かを判断してもよい。そして、図2のS50において、CPU32は、孤立点であるオブジェクトに対応する各画素を、黒色を表わす画素に補正してもよい。本変形例では、OFF画素、ON画素が、それぞれ、「第1種の画素」、「第2種の画素」の一例である。
(変形例5)例えば、文字列のみを含む原稿の読取りが実行される状況を想定する。文字の周囲には、通常、他の文字が存在するので、大サイズフラグがなくても、周辺フラグ「ON」に対応するオブジェクトを文字として特定可能である。即ち、大サイズフラグがなくても、周辺フラグ「OFF」に対応するオブジェクトを孤立点として特定可能である。従って、上記の各実施例において、オブジェクトのサイズが考慮されなくてもよい。
(変形例6)例えば、図2のS10では、原稿に対していわゆる二値スキャンが実行されることによって、ON画素及びOFF画素によって構成される二値画像を表わす圧縮済みスキャンデータが生成されてもよい。本変形例では、図3のS102及びS104を省略可能である。
(変形例7)図2の各処理は、PC10にインストールされるスキャナドライバによって実行されてもよい。即ち、「画像解析装置」は、スキャナに限られず、画像の解析を実行可能なあらゆる装置(例えば、PC、サーバ、多機能機、スマートフォン等)を含む。
(変形例8)上記の実施例では、スキャナ10のCPU32がプログラム36(即ちソフトウェア)を実行することによって、図2〜図10の各処理が実現される。これに代えて、図2〜図10の各処理のうちの少なくとも1つの処理は、論理回路等のハードウェアによって実現されてもよい。
また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時請求項記載の組合せに限定されるものではない。また、本明細書または図面に例示した技術は複数目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つものである。
10:スキャナ、12:操作部、14:表示部、16:ネットワークインターフェース、18:スキャンエンジン、30:制御部、32:CPU、34:メモリ、36:プログラム、50:PC、100:スキャン指示、110:スキャン画像、120:補正済み画像、130:補正済み画像データ、202,206,216a,230:ON画素グループ、400,402:ON画素

Claims (12)

  1. 画像解析装置であって、
    原稿の読取りによって生成される読取画像データを取得する取得部と、
    前記読取画像データを利用して、第1の解析処理を実行する第1の解析部であって、前記第1の解析処理は、
    第1方向の第1側から第2側に向かって、前記読取画像データを用いて得られるM本(前記Mは2以上の整数)のライン画素グループのそれぞれを順次特定する第1のライン特定処理であって、前記M本のライン画素グループのそれぞれは、前記第1方向に直交する第2方向に沿って並ぶ複数個の画素によって構成され、前記複数個の画素のそれぞれは、第1種の画素と第2種の画素とのどちらかである、前記第1のライン特定処理と、
    前記M本のライン画素グループのうちのm1番目(前記m1は2以上M以下の各整数)のライン画素グループが特定される場合に、前記M本のライン画素グループのうちの(m1−1)番目のライン画素グループに対応する(m1−1)番目の画素情報と、前記(m1−1)番目のライン画素グループに対応する(m1−1)番目の第1の距離情報と、を利用して、前記m1番目のライン画素グループに対応するm1番目の第1の距離情報を生成する第1の距離情報生成処理であって、前記画素情報は、対応するライン画素グループを構成する複数個の画素のそれぞれが、前記第1種の画素と前記第2種の画素とのどちらであるのかを示す情報であり、前記第1の距離情報は、対応するライン画素グループを構成する複数個の画素のそれぞれについて、当該画素と、当該画素の前記第1側に存在する最も近い前記第1種の画素と、の間の距離を示す情報である、前記第1の距離情報生成処理と、
    前記m1番目のライン画素グループが、前記第2方向に沿って連続する1個以上の前記第1種の画素である第1の対象グループを含む場合に、前記m1番目のライン画素グループの前記第1側の各ライン画素グループを利用せずに、前記m1番目の第1の距離情報を利用して、前記第1の対象グループの周辺の第1の所定領域内に、前記第1の対象グループに隣接しない前記第1種の画素が存在するのか否かを判断する第1の判断処理と、を含む、前記第1の解析部と、
    前記第1の解析処理の結果に応じて、前記第1の対象グループを含むオブジェクトであって、互いに隣接する1個以上の前記第1種の画素によって構成される前記オブジェクトに対応する所定処理を実行する所定処理実行部と、
    を備える画像解析装置。
  2. 前記第1のライン特定処理では、
    前記(m1−1)番目のライン画素グループが前記画像解析装置のメモリ内の第1の特定領域に書き込まれることによって、前記(m1−1)番目のライン画素グループが特定され、
    前記m1番目のライン画素グループが前記第1の特定領域に書き込まれる前に、前記特定領域から前記(m1−1)番目のライン画素グループが消去され、
    前記第1の距離情報生成処理では、
    前記m1番目の第1の距離情報が前記第1の特定領域に書き込まれることによって、前記m1番目の第1の距離情報が生成され、
    前記m1番目の第1の距離情報が前記第1の特定領域に書き込まれる際に、前記第1の特定領域から前記(m1−1)番目の第1の距離情報が消去される、請求項1に記載の画像解析装置。
  3. 前記第1の解析処理は、さらに、
    前記第1の対象グループを利用して、前記オブジェクトのサイズを特定するサイズ特定処理を含み、
    前記所定処理実行部は、前記第1の解析処理の結果と、前記オブジェクトの前記サイズと、に応じて、前記オブジェクトに対応する前記所定処理を実行する、請求項1又は2に記載の画像解析装置。
  4. 前記所定処理実行部は、前記第1の対象グループに対する前記第1の判断処理において、前記第1の所定領域内に前記第1種の画素が存在しないと判断され、かつ、前記オブジェクトの前記サイズが第1の閾値未満である場合に、前記読取画像データのうち、前記オブジェクトに対応する各画素を、前記原稿の背景色を表わす画素に補正する前記所定処理を実行する、請求項1から3のいずれか一項に記載の画像解析装置。
  5. 前記所定処理実行部は、前記第1の対象グループに対する前記第1の判断処理において、前記第1の所定領域内に前記第1種の画素が存在すると判断され、かつ、前記オブジェクトの前記サイズが第2の閾値未満である場合に、前記オブジェクトが文字であると判断して、前記文字に関係する前記所定処理を実行する、請求項1から3のいずれか一項に記載の画像解析装置。
  6. 前記第1の所定領域は、前記第1の対象グループに含まれる対象画素から第1の所定距離以内の領域を含まず、前記対象画素から前記第1の所定距離以上であって第2の所定距離以内の領域を含む、請求項1から5のいずれか一項に記載の画像解析装置。
  7. 前記第1の解析処理は、さらに、
    前記m1番目のライン画素グループが特定される場合に、前記M本のライン画素グループのうちの(k−1)番目のライン画素グループに対応する(k−1)番目の前記画素情報と、前記(k−1)番目のライン画素グループに対応する(k−1)番目の前記第1の距離情報と、を利用して、前記M本のライン画素グループのうちのk番目のライン画素グループに対応するk番目の前記第1の距離情報である補助情報を生成する補助情報生成処理であって、前記kは、前記m1から前記第1の所定距離に相当する値が減算された値である、前記補助情報生成処理を含み、
    前記第1の判断処理では、前記m1番目の第1の距離情報と前記k番目の第1の距離情報とを利用して、前記判断が実行される、請求項6に記載の画像解析装置。
  8. 前記第1の所定領域は、前記第1の対象グループの前記第2側の領域を含まない、請求項1から7のいずれか一項に記載の画像解析装置。
  9. 前記画像解析装置は、さらに、
    前記読取画像データを利用して、第2の解析処理を実行する第2の解析部を備え、
    前記第2の解析処理は、
    前記第1方向の前記第2側から前記第1側に向かって、前記M本のライン画素グループのそれぞれを順次特定する第2のライン特定処理と、
    前記M本のライン画素グループのうちのm2番目(前記m2は2以上M以下の各整数)のライン画素グループが特定される場合に、前記M本のライン画素グループのうちの(m2−1)番目のライン画素グループに対応する(m2−1)番目の前記画素情報と、前記(m2−1)番目のライン画素グループに対応する(m2−1)番目の第2の距離情報と、を利用して、前記m2番目のライン画素グループに対応するm2番目の第2の距離情報を生成する第2の距離情報生成処理であって、前記第2の距離情報は、対応するライン画素グループに含まれる複数個の画素のそれぞれについて、当該画素と、当該画素の前記第2側に存在する最も近い前記第1種の画素と、の間の距離を示す情報である、前記第2の距離情報生成処理と、
    前記m2番目のライン画素グループが前記第1の対象グループを含む場合に、前記m2番目のライン画素グループの前記第2側の各ライン画素グループを利用せずに、前記m2番目の第2の距離情報を利用して、前記第1の対象グループの周辺の第2の所定領域内に、前記第1の対象グループに隣接しない前記第1種の画素が存在するのか否かを判断する第2の判断処理と、を含み、
    前記所定処理実行部は、前記第1の解析処理の結果と前記第2の解析処理の結果とに応じて、前記オブジェクトに対応する前記所定処理を実行する、請求項1から8のいずれか一項に記載の画像解析装置。
  10. 前記第1の解析処理は、さらに、
    前記m1番目のライン画素グループが特定される場合に、前記オブジェクトの位置及びサイズを特定するための特定情報と、前記第1の対象グループに対する前記第1の判断処理の結果を示す結果情報と、を対応付けて、前記画像解析装置のメモリに記憶させる記憶制御処理と、
    前記M本のライン画素グループのうちの(m1+1)番目のライン画素グループが特定され、かつ、前記(m1+1)番目のライン画素グループが、前記第1方向に沿って連続する1個以上の前記第1種の画素である第2の対象グループであって、前記第1の対象グループに隣接する前記第2の対象グループを含む場合に、前記特定情報を更新する第1の更新処理と、
    前記第1の対象グループに対する前記第1の判断処理において、前記第1の所定領域内に前記第1種の画素が存在しないと判断され、かつ、前記第2の対象グループに対する前記第1の判断処理において、前記第1の所定領域内に前記第1種の画素が存在すると判断される場合に、前記特定情報に対応付けられている前記結果情報を更新する第2の更新処理と、
    を含む、請求項1から9のいずれか一項に記載の画像解析装置。
  11. 前記第1のライン特定処理では、
    前記(m1−1)番目のライン画素グループが前記画像解析装置のメモリ内の第1の特定領域に書き込まれることによって、前記(m1−1)番目のライン画素グループが特定され、
    前記m1番目のライン画素グループが前記第1の特定領域に書き込まれる前に、前記特定領域から前記(m1−1)番目のライン画素グループが消去され、
    前記第1の距離情報生成処理では、
    前記m1番目の第1の距離情報が前記第1の特定領域に書き込まれることによって、前記m1番目の第1の距離情報が生成され、
    前記m1番目の第1の距離情報が前記第1の特定領域に書き込まれる際に、前記第1の特定領域から前記(m1−1)番目の第1の距離情報が消去され、
    前記第1の解析処理は、さらに、
    前記m1番目のライン画素グループが特定される場合に、前記オブジェクトの位置及びサイズを特定するための特定情報と、前記第1の対象グループに対する前記第1の判断処理の結果を示す結果情報と、を対応付けて、前記画像解析装置のメモリ内の第2の特定領域に記憶させる記憶制御処理を含み、
    前記第2の特定領域内の前記特定情報及び前記結果情報は、前記第1の解析処理が終了した後に消去される、請求項1から10のいずれか一項に記載の画像解析装置。
  12. 画像解析装置のためのコンピュータプログラムであって、
    前記画像解析装置に搭載されるコンピュータを、
    原稿の読取りによって生成される読取画像データを取得する取得部と、
    前記読取画像データを利用して、第1の解析処理を実行する第1の解析部であって、前記第1の解析処理は、
    第1方向の第1側から第2側に向かって、前記読取画像データを用いて得られるM本(前記Mは2以上の整数)のライン画素グループのそれぞれを順次特定する第1のライン特定処理であって、前記M本のライン画素グループのそれぞれは、前記第1方向に直交する第2方向に沿って並ぶ複数個の画素によって構成され、前記複数個の画素のそれぞれは、第1種の画素と第2種の画素とのどちらかである、前記第1のライン特定処理と、
    前記M本のライン画素グループのうちのm1番目(前記m1は2以上M以下の各整数)のライン画素グループが特定される場合に、前記M本のライン画素グループのうちの(m1−1)番目のライン画素グループに対応する(m1−1)番目の画素情報と、前記(m1−1)番目のライン画素グループに対応する(m1−1)番目の第1の距離情報と、を利用して、前記m1番目のライン画素グループに対応するm1番目の第1の距離情報を生成する第1の距離情報生成処理であって、前記画素情報は、対応するライン画素グループを構成する複数個の画素のそれぞれが、前記第1種の画素と前記第2種の画素とのどちらであるのかを示す情報であり、前記第1の距離情報は、対応するライン画素グループを構成する複数個の画素のそれぞれについて、当該画素と、当該画素の前記第1側に存在する最も近い前記第1種の画素と、の間の距離を示す情報である、前記第1の距離情報生成処理と、
    前記m1番目のライン画素グループが、前記第2方向に沿って連続する1個以上の前記第1種の画素である第1の対象グループを含む場合に、前記m1番目のライン画素グループの前記第1側の各ライン画素グループを利用せずに、前記m1番目の第1の距離情報を利用して、前記第1の対象グループの周辺の第1の所定領域内に、前記第1の対象グループに隣接しない前記第1種の画素が存在するのか否かを判断する第1の判断処理と、を含む、前記第1の解析部と、
    前記第1の解析処理の結果に応じて、前記第1の対象グループを含むオブジェクトであって、互いに隣接する1個以上の前記第1種の画素によって構成される前記オブジェクトに対応する所定処理を実行する所定処理実行部と、
    して機能させる、コンピュータプログラム。
JP2016175442A 2016-09-08 2016-09-08 画像解析装置 Active JP6786973B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2016175442A JP6786973B2 (ja) 2016-09-08 2016-09-08 画像解析装置
US15/640,631 US10424051B2 (en) 2016-09-08 2017-07-03 Image analyzing apparatus and non-transitory storage medium storing instructions executable by the image analyzing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016175442A JP6786973B2 (ja) 2016-09-08 2016-09-08 画像解析装置

Publications (2)

Publication Number Publication Date
JP2018041304A JP2018041304A (ja) 2018-03-15
JP6786973B2 true JP6786973B2 (ja) 2020-11-18

Family

ID=61280847

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016175442A Active JP6786973B2 (ja) 2016-09-08 2016-09-08 画像解析装置

Country Status (2)

Country Link
US (1) US10424051B2 (ja)
JP (1) JP6786973B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3672217B1 (en) * 2017-09-29 2021-12-22 Panasonic Intellectual Property Management Co., Ltd. Placement detection system
US11587323B2 (en) * 2019-06-28 2023-02-21 Raytheon Company Target model broker

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6561980B1 (en) * 2000-05-23 2003-05-13 Alpha Intervention Technology, Inc Automatic segmentation of prostate, rectum and urethra in ultrasound imaging
US7187785B2 (en) * 2001-08-28 2007-03-06 Nippon Telegraph And Telephone Corporation Image processing method and apparatus
AU2003209447B8 (en) * 2002-03-01 2008-10-23 Immunomedics, Inc. RS7 antibodies
WO2005067319A1 (ja) * 2003-12-25 2005-07-21 Brother Kogyo Kabushiki Kaisha 画像表示装置および信号処理装置
JP3927171B2 (ja) 2003-12-26 2007-06-06 キヤノンマーケティングジャパン株式会社 ノイズ除去装置及び方法、プログラム、並びに記録媒体
JP2006072839A (ja) 2004-09-03 2006-03-16 Ricoh Co Ltd 画像処理方法、画像処理装置、画像処理プログラム及び記録媒体
US8139897B2 (en) * 2007-03-15 2012-03-20 Ricoh Company, Limited Detecting tilt in an image having different resolutions in different directions
JP4570670B2 (ja) * 2008-06-30 2010-10-27 シャープ株式会社 画像処理装置、画像読取装置、画像形成装置、画像処理方法、画像処理プログラム、記録媒体
JP5455611B2 (ja) * 2009-12-24 2014-03-26 キヤノン株式会社 画像処理装置、画像処理方法及びプログラム
JP2011136061A (ja) * 2009-12-28 2011-07-14 Brother Industries Ltd 刺繍データ作成装置及び刺繍データ作成プログラム
JP5755089B2 (ja) * 2011-09-08 2015-07-29 株式会社Pfu 画像処理装置、画像処理方法、画像処理プログラム及び画像処理システム
JP6086663B2 (ja) * 2012-06-19 2017-03-01 オリンパス株式会社 画像処理装置、内視鏡装置及び孤立点ノイズ補正方法
JP6160168B2 (ja) * 2013-03-28 2017-07-12 ブラザー工業株式会社 画像処理装置、および、コンピュータプログラム

Also Published As

Publication number Publication date
US10424051B2 (en) 2019-09-24
JP2018041304A (ja) 2018-03-15
US20180068421A1 (en) 2018-03-08

Similar Documents

Publication Publication Date Title
US7796817B2 (en) Character recognition method, character recognition device, and computer product
JP6808330B2 (ja) 情報処理装置、情報処理方法、及びプログラム
JP3142550B2 (ja) 図形処理装置
JP5838984B2 (ja) 画像処理装置、および、コンピュータプログラム
JP6786973B2 (ja) 画像解析装置
JP2013147033A (ja) プリント装置、プリントシステムおよびトナー飛散補償を行う方法
JP5335581B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP6790601B2 (ja) 画像解析装置
JP2009251872A (ja) 情報処理装置及び情報処理プログラム
JP6870247B2 (ja) 画像解析装置
JP2005045799A (ja) 部分的テンプレート照合を用いた画質向上
US20230071008A1 (en) Computer-readable, non-transitory recording medium containing therein image processing program for generating learning data of character detection model, and image processing apparatus
JP2010176414A (ja) 画像処理装置及び画像処理プログラム
JP2018147199A (ja) 画像処理装置、および、コンピュータプログラム
JP2003046746A (ja) 画像処理方法及び画像処理装置
JP6107270B2 (ja) 画像処理装置およびコンピュータプログラム
JP6974791B2 (ja) 画像処理装置、および、コンピュータプログラム
JP4692315B2 (ja) 画像処理装置、および画像処理方法、並びにコンピュータ・プログラム
JP4803001B2 (ja) 画像処理装置及び画像処理プログラム
JP2008269131A (ja) 画像処理装置及び画像処理プログラム
JP2006072839A (ja) 画像処理方法、画像処理装置、画像処理プログラム及び記録媒体
JP2002300404A (ja) 画像処理方法及び画像処理装置
JP6841254B2 (ja) 画像処理装置、および、コンピュータプログラム
JP5062076B2 (ja) 情報処理装置及び情報処理プログラム
JP6173715B2 (ja) 文字認識装置、文字認識方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190827

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200916

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200929

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20201012

R150 Certificate of patent or registration of utility model

Ref document number: 6786973

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150