(第1実施形態)
以下、第1実施形態について図面を参照して説明する。
第1実施形態に係る区分装置は、パターン認識のためのパラメータを更新するものである。たとえば、認識対象となるパターンは、文字、記号或いはコードなどの情報である。たとえば、パラメータは、二値化パラメータ、処理対象座標、文字幅パラメータ及びカラーパラメータなどである。第1実施形態では、パターンとしての文字を用いた文字認識処理を行う区分装置について説明するものとする。
第1実施形態に係る区分装置は、最適化部、パターン認識部およびコーディング部などの機能を含むシステムである。本実施形態に係る区分装置は、紙葉類あるいは物品などの区分対象物に文字で記載されている区分情報に基づいて、区分対象物を区分処理する。区分装置は、紙葉類あるいは物品などの区分対象物に記載された区分情報としての文字を認識する文字認識機能を有する。区分装置は、文字認識処理による認識結果として得られる区分情報あるいは後述するビデオコーディング処理により入力される区分情報によって、紙葉類あるいは物品などの区分対象物を区分する。
第1実施形態に係る区分装置は、区分機本体における辞書記録部が記録する文字認識用辞書を用いた文字認識処理で認識できなかった区分情報としての文字情報を人が入力するビデオコーディングシステム(以降、VCSと略称する)を有する。VCSは、複数のコーディング装置を有する。各コーディング装置は、区分機本体の文字認識処理で認識できなかった区分情報を含む画像を表示画面に表示し、その表示画面を見た人物(オペレータ)が当該文字画像に含まれる文字情報としての区分情報を入力する。また、第1実施形態に係るコーディング装置は、人物が入力した文字情報としての区分情報を区分機本体に返す。
第1実施形態に係る区分装置は、VCSから供給される区分情報などに基づいてパラメータを最適化(調整)する最適化部を有する。最適化部は、人物が入力した文字情報に基づいて、パラメータ記録部に記憶されているパターン認識のためのパラメータを最適化する。最適化部は、区分装置とは別に設けた装置であっても良い。
なお、第1実施形態に係る区分装置は、郵便物などの紙葉類を区分する紙葉類処理装置(例えば郵便区分装置)、梱包品や貨物(たとえば、小包、宅配便)などの物品を区分する物品区分装置、あるいは、物品に付与されたタグなどに記載された区分情報により物品を仕分けする物品仕分け装置などが想定される。以下の説明では、区分装置の一例として、文字で記載された区分情報としての住所情報により紙葉類を区分する紙葉類処理装置を想定して説明するものとする。
図1は、第1実施形態に係る最適化装置、パターン認識装置およびコーディング装置などの機能を有する区分装置としての紙葉類処理装置の構成例を概略的に示すブロック図である。
紙葉類処理装置1(区分装置)は、たとえば、郵便物あるいは帳票等の紙葉類に記載された住所などの文字で表現された区分情報を文字認識し、その文字認識の結果に基づいて当該紙葉類を区分処理する。図1に示す構成例おいて、紙葉類処理装置1は、区分機本体3及びビデオコーディングシステム(以降、VCSと略称する)4などから構成される。区分機本体3及びVCS4は、互いに通信可能なように接続されている。
まず、区分機本体3について説明する。
図1が示す紙葉類処理装置の区分機本体3は、紙葉類を区分情報としての住所情報により区分処理するものである。区分機本体3のパターン認識部は、文字認識用辞書を参照して、スキャナにより読み取った紙葉類の画像における住所情報らしい各文字を認識する。また、パターン認識部18は、文字認識の結果と辞書記録部19が格納する住所データベースに記憶されている住所情報とを参照して、紙葉類に記載されている住所情報を判定する。紙葉類処理装置の区分機本体3は、住所情報が認識(特定)できなかった紙葉類の画像をVCS4へ送る。VCS4は、紙葉類の画像における住所情報をオペレータが入力し、その入力結果を区分機本体3へ返す。区分機本体3は、VCS4で入力された住所情報に基づいて住所情報が認識できなかった紙葉類を区分処理する機能も有する。
区分機本体3は、オペレーションパネル10、供給部11、主搬送路12、バーコードリーダ(以下、BCR)13、スキャナ14、バーコードライタ(以下、BCW)15、区分部16、制御部17、パターン認識部18、辞書記録部19、パラメータ記録部20、最適化部20a及び画像記録部20bなどを備える。
制御部17は、紙葉類処理装置1の各部の動作を統合的に制御する。制御部17は、CPU、バッファメモリ、プログラムメモリ、及び不揮発性メモリなどを備える。CPUは、種々の演算処理を行う。バッファメモリは、CPUにより行われる演算の結果を一時的に記憶する。プログラムメモリ及び不揮発性メモリは、CPUが実行する種々のプログラム及び制御データなどを記憶する。制御部17は、CPUによりプログラムメモリに記憶されているプログラムを実行することにより、種々の処理を行うことができる。
オペレーションパネル10は、オペレータ(操作員)が処理モードを指定したり、処理開始を指定したりする入力部である。また、オペレーションパネル10は、紙葉類処理装置1の動作状態などを表示したりする表示部でもある。オペレーションパネル10は、タイミング入力部10a及びパラメータ入力部10bなどを備える。オペレーションパネル10は、タッチパネルであってもよいし、キーボード又はテンキーなどであってもよい。
タイミング入力部10aは、同一のフォーマットで文字(住所)が記載されている大量の区分対象物(バルク)(たとえば、同一のフォーマットの伝票が張り付けられている多数の郵便物など)が区分機本体3に投入される場合に、バルクが投入されるタイミングをオペレータによって入力される。また、タイミング入力部10aは、バルクの投入が終了するタイミングをオペレータによって入力される。タイミング入力部10aは、オペレーションパネル10に表示されるアイコンなどであってもよい。
パラメータ入力部10bは、バルクに記載されている文字を認識するためのパラメータをオペレータによって入力される。入力されるパラメータは、パラメータ記録部20に記録される。パターン認識部18は、パラメータ記録部20が記録するパラメータを用いてバルクに記載されている文字を認識する。パラメータ入力部10bは、オペレーションパネル10に表示されるアイコンなどであってもよい。
オペレータが入力するパラメータは、パターン認識部18がバルクに記載されている文字を認識するために利用される。パラメータは、バルクに応じて決定される。バルクが同一のフォーマットに従って住所を記載されているので、オペレータは、当該フォーマットに従って記載されている住所を認識するのに適したパラメータを選択し、選択されたパラメータをパラメータ入力部10bに入力する。オペレータが適切なパラメータをパラメータ入力部10bに入力することで、パターン認識部18は、バルクに記載されている住所を効率的に認識することができる。
供給部11は、紙葉類処理装置1に取り込む紙葉類をストックする。供給部11は、重ねられた状態の紙葉類をまとめて受け入れる。供給部11は、紙葉類を1つずつ主搬送路12へ供給する。たとえば、供給部11は、分離ローラを備える。分離ローラは、供給部11に紙葉類が投入された場合、投入された紙葉類の集積方向の下端に接する。分離ローラは、回転することにより、供給部11にセットされた紙葉類を集積方向の下端から1枚ずつ主搬送路12へ一定のピッチで供給する。
主搬送路12は、紙葉類を紙葉類処理装置1内の各部に搬送する搬送部である。主搬送路12は、搬送ベルト及び駆動プーリなどを備える。主搬送路12は、駆動モータにより駆動プーリを駆動する。搬送ベルトは、駆動プーリにより動作する。主搬送路12上には、バーコードリーダ13、スキャナ14、バーコードライタ15、および、区分部16などが設けられている。
BCR13は、主搬送路12上を搬送される紙葉類に印字されているIDバーコードあるいは宛先バーコードなどのバーコードを読取るものである。BCR13は、バーコードの画像を読取る読取部と、読取画像におけるバーコードを認識する認識部を有する。読取部は、バーコードを読み取ると、当該バーコードの画像を認識部へ供給する。認識部は、供給された当該バーコード画像を処理し、当該バーコードに含まれるデータを認識する。認識されたデータは、制御部17へ供給される。
スキャナ14は、主搬送路12により搬送される紙葉類から画像を取得する。スキャナ14は、例えば、照明と光学センサとを備える。照明は、主搬送路12により搬送される紙葉類に対して光を照射する。光学センサは、Charge Coupled Device(CCD)などの受光素子と光学系(レンズ)とを備える。光学センサは、紙葉類で反射した反射光を光学系により受光し、CCDに結像させ、電気信号(画像)を取得する。スキャナ14は、主搬送路12により搬送される紙葉類から連続して画像を取得することにより、紙葉類の全体の画像を取得する。スキャナ14は、取得した画像をパターン認識部18に供給する。なお、スキャナ14は、ビデオカメラなどにより構成しても良い。
パターン認識部18は、スキャナ14により読み取った紙葉類の画像に含まれるパターンとしての文字を認識するパターン認識部として機能する。パターン認識部18は、スキャナ14により読取った紙葉類の画像(住所画像)から住所情報を構成する各文字らしい文字画像の領域(文字候補領域)を抽出する。パターン認識部18は、抽出した文字候補領域の画像における各文字を辞書記録部19が格納する文字認識用辞書を参照して認識する。たとえば、パターン認識部18は、文字候補領域における文字(パターン)としての特徴パラメータと文字認識用辞書に辞書データとして記憶されている各文字の特徴パラメータ(各文字の辞書パターン)との類似度を算出し、算出した類似度により文字認識結果を判定する。
文字認識用辞書は、各文字の特徴をデータ化した特徴パラメータなどの辞書データを記憶する。文字認識用辞書は、パターン認識部18による文字認識処理(OCR処理)に使用される。たとえば、文字認識用辞書は、各文字の特徴を示す辞書データとして、各文字の特徴パラメータを記憶する。ここで、文字の特徴パラメータとは、文字の画像における特徴を数値化したものである。たとえば、文字認識用辞書に辞書データとして文字の特徴パラメータは、文字の画像をぼかした後の輝度勾配情報を128次元ベクトルとして抽出したものなどであっても良い。また、文字認識用辞書に辞書データとして記憶する文字の特徴パラメータは、平均m、共分散行列Σを有するガウス分布であっても良い。
たとえば、パターン認識部18は、抽出した特徴パラメータと文字認識用辞書に格納されている「あ」の特徴パラメータとを比較して、文字候補領域に記載されている文字が「あ」である確率(或いは類似度)を計算する。さらに、パターン認識部18は、「い」、「う」、・・・などの各文字について、順に類似度(確率)を計算する。パターン認識部18は、計算した各文字に対する類似度(確率)から文字候補領域に含まれる文字を特定する。
パターン認識部18は、パターン認識部18による文字認識結果と辞書記録部19が格納する住所データベースに記憶されている住所情報とを比較することにより、紙葉類に記載されている住所情報を特定(認識)する。たとえば、パターン認識部18による文字認識結果として各文字候補領域について複数の文字候補が得られた場合、パターン認識部18は、得られた文字候補の組合せと住所データベースが記憶する住所情報とを比較して住所情報を特定する。住所情報が特定(認識)できた場合、パターン認識部18は、特定した住所情報を制御部17へ供給する。住所情報が特定(認識)できなかった場合、パターン認識部18は、紙葉類の画像、および、文字認識結果を含むビデオコーディング用の情報(コーディングデータ)を画像蓄積分配装置21へ送信する。
辞書記録部19は、文字認識用辞書及び住所データベースを記録する。辞書記録部19は、パターン認識部18からの指示に基づいて、文字認識用辞書の辞書データ及び住所データベースの住所情報をパターン認識部18へ供給する。
パラメータ記録部20は、パターン認識部18が文字認識をするために利用するパラメータを記録する。パラメータ記録部20は、オペレータがパラメータ入力部10bに入力したパラメータを記録する。また、パラメータ記録部20は、最適化部20aが最適化したパラメータを記録する。最適化部20aが最適化したパラメータを記録する場合、パラメータ記録部20は、これまで記録していたパラメータを削除してもよいし、過去のパラメータとして残しておいてもよい。パラメータ記録部20は、パターン認識部18からの指示に基づいて、パラメータを示す情報をパターン認識部18へ供給する。
最適化部20aは、パラメータ記録部20が記録するパラメータを最適化する。最適化部20aは、パターン認識部18のバルクの住所認識率が低下すると(即ち、パラメータが適切でないと)、パラメータを最適化する。最適化部20aは、画像記録部20bが記録する住所画像と住所画像に対応する正解住所情報とからパラメータを最適化する。最適化部20aの動作は、後に詳述する。
画像記録部20bは、住所画像と住所画像に対応する正解住所情報とを対応付けて格納する。正解住所情報は、住所画像に記載される住所情報である。正解住所情報は、パターン認識部18が識別に成功した住所情報又はVCS4でオペレータが入力した住所情報である。即ち、画像記録部20bは、パターン認識部18からの住所情報又はVCS4からの住所情報を記録する。画像記録部20bは、タイミング入力部10aにオペレータがバルクの投入を開始することを入力すると、住所画像と住所画像に対応する正解住所情報との記録を開始する。画像記録部20bは、最適化部20aの指示に基づいて、住所画像及び正解住所情報を最適化部20aへ供給する。
BCW15は、必要に応じて紙葉類にIDバーコード、あるいは、宛先バーコードを印刷する。たとえば、BCW15は、パターン認識部18により住所情報が認識できた紙葉類に対し、認識結果としての住所情報をバーコード化した宛先バーコードを印刷する。また、BCW15は、パターン認識部18により住所情報が認識できなかった紙葉類に対し、制御部17から与えられる識別情報(IDコード)をバーコード化したIDバーコードを印刷する。つまり、BCW15は、住所情報が認識できた紙葉類にはその認識結果を宛先バーコードとして印刷し、住所情報が認識できなかった紙葉類にはIDバーコードを印刷する。すなわち、宛先バーコードは、住所情報そのものを示すバーコードであり、IDバーコードは、当該紙葉類を識別するための識別情報を示すバーコードである。IDバーコードで示す紙葉類の識別情報は、VCS4において打鍵入力された住所情報と紙葉類とを対応づけるための情報である。言い換えると、IDバーコードが印刷された紙葉類は、VCS4による処理対象となる紙葉類である。
BCW15の紙葉類の搬送方向の下流側には、紙葉類が住所情報に応じて区分される区分部16が設けられている。この区分部16は、複数の段、複数の列に区画された複数の区分ポケット(図示しない)から構成されている。各ポケットは、区分先ごとに対応して設定されており、住所情報あるいは機械コードに基づいて、紙葉類が住所情報に対応したポケットに順次集積される。
また、区分部16には、区分先が認識できなかった紙葉類が集積されるVCS排除ポケット(図示しない)が設けられている。このVCS排除ポケットに集積された紙葉類は、住所情報がVCS4にて入力された後に、供給部11に再供給される。供給部11に再供給された紙葉類は、当該紙葉類に印刷されたIDコードとVCS4にて入力された住所情報とに基づいて再区分される。制御部17は、区分情報としての住所情報に基づいて紙葉類を区分部16の各ポケットに区分する。
次に、VCS4について説明する。
VCS4は、画像蓄積分配装置21および複数のビデオコーディングディスク(以降、VCDと略称する)22などから構成されている。画像蓄積分配装置21は、制御部、記憶部、および各種インターフェースなどを有するコンピュータで実現される。VCD22は、たとえば、表示部、VCS入力部、制御部、記憶部、および各種インターフェースなどを有するコンピュータで実現される。
画像蓄積分配装置21には、区分機本体3と各VCD22とが接続される。画像蓄積分配装置21は、区分機本体3内のパターン認識部18により住所情報が認識できなかった紙葉類の画像(住所画像)を含むビデオコーディング用の情報(コーディングデータ)を区分機本体3から受信する。画像蓄積分配装置21は、各VCD22の稼働状況などを監視し、各VCD22の稼働状況などに応じて区分機本体3から受信した紙葉類の画像を含むコーディングデータを各VCD22へ配信する。
各VCD22は、画像蓄積分配装置21から配信されたコーディングデータに含まれる紙葉類の画像を表示部27に表示し、オペレータに正しい住所情報(文字情報)の入力を促す。VCD22は、紙葉類の画像を表示部27に表示した状態において、オペレータが入力した住所情報として文字情報を含む入力情報を画像蓄積分配装置21へ返す。画像蓄積分配装置21は、各VCD22から取得した入力情報を区分機本体3へ返す処理を行なう。
図1が示す構成例において、VCD22は、CPU23、不揮発性メモリ24、RAM25、ROM26、表示部27及びVCS入力部28などを有する。
CPU23は、VCD22全体の制御を司る制御部として機能する。CPU23は、ROM26あるいは不揮発性メモリ24に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。たとえば、CPU23は、オペレーティングシステムのプログラムを実行することにより、VCD22の基本的な動作制御を行う。なお、各種の機能のうちの一部は、ハードウェア回路により実現されるものであっても良い。
不揮発性メモリ24は、例えば、EEPROM、フラッシュROM、HDD(ハードディスクドライブ)、あるいは、SSD(Solid State Disk)などのデータの書き込み及び書換えが可能な不揮発性のメモリにより構成される。不揮発性メモリ24は、VCD22の運用用途に応じて制御プログラム、制御データ、および、種々のデータを格納する。たとえば、不揮発性メモリ24は、画像蓄積分配装置21から供給されるビデオコーディング用の画像(文字画像を含む画像)を含むコーディングデータを保存する。また、不揮発性メモリ24は、オペレータが入力する入力情報などを記憶するようにしても良い。
RAM25は、揮発性のメモリである。RAM25は、CPU23の処理中のデータなどを一時的に格納する。たとえば、RAM25は、表示用の画像データを格納したり、オペレータが入力する入力情報などを格納したりする。ROM26は、予め制御用のプログラム及び制御データなどが記憶される書換え不可の不揮発性メモリである。
表示部27は、液晶ディスプレイなどにより構成する。たとえば、表示部27は、画像蓄積分配装置21から供給されるビデオコーディング用の画像などを表示する。表示部27には、ビデオコーディング用の画像としての紙葉類の画像(住所画像)だけでなく、区分機本体3側で認識できた範囲の情報も表示するようにしても良い。VCS入力部28は、表示部27に表示された画像に含まれる住所情報としての文字情報をオペレータが入力するためのデバイスである。たとえば、VCS入力部28は、キーボードおよびポインティングデバイスなどにより構成される。
次に、最適化部20aの動作例について説明する。
最適化部20aは、タイミング入力部10aよりタイミングが入力され、画像記録部20bに住所画像と住所画像に対応する正解住所情報が所定の数だけ蓄積された時に実行され、パラメータ記録部20が記録するパラメータを更新する。以下、詳細に説明する。
図2は、最適化部20aの動作例を説明するためのフローチャートである。
まず、最適化部20aは、画像記録部20bが住所画像及び区分情報を所定の個数蓄積したか判定する(ステップS1)。
画像記録部20bが住所画像を所定の枚数蓄積していないと判定すると(ステップS1、NO)、最適化部20aは、ステップS1へ戻る。
画像記録部20bが住所画像を所定の枚数蓄積したと判定すると(ステップS1、YES)、最適化部20aは、画像記録部20bからバルクの住所画像と住所画像の正解住所情報との組み合わせのデータ(最適化用データ)を所定の枚数取得する(ステップS2)。
最適化用データを取得すると、最適化部20aは、取得された複数の最適化用データに基づいて、パターン認識部18が住所認識を行うのに最適なパラメータを選択する(ステップS3)。即ち、最適化部20aは、複数の最適化用データの住所画像に対して住所認識処理を行った場合に最も正解住所情報を得られるパラメータを選択する。たとえば、最適化部20aは、パラメータを順次変更し、複数の最適化用データの住所画像に対して住所認識処理を行う。最適化部20aは、住所認識処理によって得られた住所情報と当該住所画像の正解住所情報とを照合し、正解住所情報を得られたか判定する。最適化部20aは、最も高い確率で正解住所情報を得られたパラメータを最適なパラメータとして選択する。
最適なパラメータを選択すると、最適化部20aは、選択されたパラメータを設定する(ステップS4)。即ち、最適化部20aは、選択されたパラメータを最適なパラメータとしてパラメータ記録部20へ送信する。パラメータ記録部20は、最適化部20aが送信するパラメータをパターン認識部18が住所認識に使用するパラメータとして記録する。
選択されたパラメータを設定すると、最適化部20aは、パラメータの最適化処理を終了する。
なお、パラメータ記録部20は、バルクの種類と過去に当該バルクに最適化されたパラメータとを対応付けて格納してもよい。この場合、オペレーションパネル10は、バルクの種類の入力を受け付けるようにしてもよい。パラメータ記録部20は、入力されたバルクの種類に応じてパターン認識部18へパラメータを供給してもよい。
以上のように構成された紙葉類処理装置は、オペレータがバルクに応じた適正なパラメータの入力をしなかった場合であっても、バルクに応じてパラメータを最適化することができる。これにより、紙葉類処理装置は、オペレータが再度パラメータを調節することなく、バルクに記載されている住所を適切に認識することができる。
(第2実施形態)
次に、第2実施形態について説明する。
図3は、第2実施形態に係る区分装置である。
第2実施形態における区分装置は、パターン認識部(パターン認識装置)18が複数幅抽出部31及び単独幅抽出部32を備える点で第1実施形態と異なる。したがって、その他の点については同一の符号を付して詳細な説明を省略する。
複数幅抽出部31は、住所画像に記載されている文字を形成する線の幅を抽出する。即ち、複数幅抽出部31は、ある幅を持つ線を抽出した画像を形成する。また、複数幅抽出部31は、異なる幅の線を同時に抽出することができる。
図4は、複数幅抽出部31の構成例を示すブロック図である。
図4が示すように、複数幅抽出部31は、データ取得部41、未確定バッファ部42、未確定バッファ操作部43、幅位置記憶部44、幅位置登録部45及び出力画像作成部46などを備える。
データ取得部41は、住所画像から1行分(即ち、横方向に1行分)のデータ値又は1列分(即ち、縦方向に1列分)のデータ値(画像信号値)を取得する。データ値(画像信号値)は、線がある部分において高い値を示し、線がない部分において低い値を示す信号値である。たとえば、データ値(画像信号値)は、ドットのノードを示す値又はドットの輝度を示す値であってもよい。なお、ある信号値が線がある部分において低い値を示し線がない部分において高い値を示す場合、画像信号値は、所定の値から当該信号値を減算した値であってもよい。ここでは、データ値(画像信号値)は、当該ポイントの輝度を示すものとする。即ち、データ値v(i)は、i番目のドットの輝度を示す値である。
図5は、データ取得部41が取得するデータの位置の例を示す図である。
例えば、データ取得部41が第a行のデータを取得する場合、データ取得部41は、第a行目の輝度データを1行分取得する。データ値v(i)は、画像の左からi番目の輝度を示す値である。即ち、データ値v(i)は、上からa行目であって左からi番目であるドット(座標(i、a))の輝度を示す値である。
また、データ取得部41が第b列目のデータを取得する場合、データ取得部41は、第b列目の輝度データを1列分取得する。データv(i)は、画像の上からi番目の輝度を示す値である。即ち、データ値v(i)は、左からb列目であって上からi番目であるドット(座標(b、i))の輝度を示す値である。
未確定バッファ部42は、線の幅を抽出している間に、位置データを一時的に記録する。即ち、未確定バッファ部42は、所定の条件を満たす位置データを記録する。未確定バッファ部42は、複数幅抽出部31が注目している位置との間にそのデータ値より小さいデータ値(即ち、輝度値)を持つ位置「i」が存在しない位置を示す位置データを格納する。即ち、未確定バッファ部42は、データ値(輝度値)が上昇し始める上昇開始位置(線開始位置)を格納する。
図6は、データ取得部41が取得した輝度データの例である。
横軸は位置を示し、縦軸は位置のデータ値(即ち、輝度値)を示す。
図6の例において、未確定バッファ部42が格納する位置データについて説明する。
ここでは、複数幅抽出部31は、位置「10」に注目しているものとする。
まず、位置「1」が未確定バッファ部42に記録されるか検討する。
位置「1」のデータ値は、位置「2」のデータ値よりも大きい。したがって、位置「1」と位置「10」との間に、位置「1」のデータ値よりも小さいデータ値を持つ位置「2」が存在する。よって、位置「1」は、未確定バッファ部42に格納されない。
同様に、位置「2」が未確定バッファ部42に格納されるか検討する。
位置「2」のデータ値は、位置「3」から位置「9」までのデータ値のいずれのデータ値よりも小さい。したがって、位置「2」と位置「10」との間に、位置「2」のデータ値よりも小さいデータ値を持つ位置は存在しない。よって、位置「2」は、未確定バッファ部42に格納される。
同様に、位置「3」が未確定バッファ部42に格納されるか検討する。
位置「3」のデータ値は、位置「4」のデータ値よりも大きい。したがって、位置「3」と位置「10」との間に、位置「3」のデータ値よりも小さいデータ値を持つ位置「4」が存在する。よって、位置「3」は、未確定バッファ部42に格納されない。
同様に、位置「4」が未確定バッファ部42に格納されるか検討する。
位置「4」のデータ値は、位置「5」から位置「9」までのデータ値のいずれのデータ値よりも小さい。したがって、位置「4」と位置「10」との間に、位置「4」のデータ値よりも小さいデータ値を持つ位置は存在しない。よって、位置「4」は、未確定バッファ部42に格納される。
同様に、位置「5」及び位置「6」が未確定バッファ部42に格納されるか検討する。
位置「5」及び位置「6」の各データ値は、それぞれから位置「9」までのデータ値のいずれのデータ値よりも小さい。したがって、位置「5」及び位置「6」は、未確定バッファ部42に格納される。
同様に、位置「7」が未確定バッファ部42に格納されるか検討する。
位置「7」のデータ値は、位置「8」のデータ値より大きい。したがって、位置「7」と位置「10」との間に、位置「7」のデータ値よりも小さいデータ値を持つ位置「8」が存在する。よって、位置「7」は、未確定バッファ部42に格納されない。
同様に、検討すると、位置「8」は、未確定バッファ部42に格納される。また、位置「9」は、未確定バッファ部42に格納される。
以上のように、複数幅抽出部31が位置「10」に注目している時点では、未確定バッファ部42は、位置「2」、位置「4」、位置「5」、位置「6」、位置「8」及び位置「9」を格納する。
未確定バッファ部42は、以下の条件を満たす位置「j」を格納する。
j<k<iを満たすすべてのkについてv(j)<v(k) ・・・(1)
ここで、iは、複数幅抽出部31が注目している位置を示す。即ち、複数幅抽出部31が位置「i」に注目している場合に、未確定バッファ部42が格納している位置「j」は、式(1)を満たす。
未確定バッファ操作部43は、未確定バッファ部42に記録されている位置データを削除したり、位置データを追加したりする機能を有する。未確定バッファ操作部43は、式(1)を満たす位置「j」を未確定バッファ部42に格納する。
幅位置記憶部44は、線情報として、複数幅抽出部31が抽出した線の始点座標、幅及びデータ値を互いに対応付けて格納する。たとえば、図6において、幅位置登録部45が位置「5」から位置「10」の間に文字の線がある(即ち、線は、位置「6」から位置「9」までにある)と判定すると、幅位置記憶部44は、始点座標として「5」、幅として「4」及びデータ値としてv(10)を格納する。格納されるデータ値は、線を挟む両側のデータ値(ここでは、v(5)及びv(10))のうちで大きい方の値である。即ち、格納されるデータ値は、線がある位置のいずれのデータ値よりも小さい。上記の例においては、v(5)<v(10)であるので、幅位置記憶部44は、v(10)をデータ値として格納する。また、格納されるデータ値であるv(10)は、線がある位置のデータ値であるv(6)、v(7)、v(8)及びv(9)よりも小さい。
幅位置登録部45は、幅位置記憶部44に線情報を追記する。即ち、幅位置登録部45は、確定された線の始点座標、幅及びデータ値を互いに対応付けて幅位置記憶部44に追加的に格納する。線を抽出する方法については後述する。
出力画像作成部46は、幅位置登録部45が格納する線の情報に基づいて、特定の幅の線を抽出した画像を生成する。生成方法については後述する。
次に、複数幅抽出部31が線を抽出する手順について説明する。
ここでは、線は、黒地に白で書かれているものとする。また、線は、データ値(輝度値)が山形になっている部分をいう。即ち。線は、データ値が上昇し下降する区間にあるものとする。以下の説明において、図6が示すデータ値の例をもとに説明する。ここでは、複数幅抽出部31は、位置「10」に注目しているものとし、未確定バッファ部42は、上記の例の位置データを格納しているものとする。また、複数幅抽出部31は、第a行目について幅抽出を行うものとする。
まず、未確定バッファ操作部43は、注目される位置「i」(注目位置)のデータ値v(i)と未確定バッファ部42が格納する末尾の位置データ(即ち、最も大きい値である位置データ)(位置「n」)のデータ値(v(n))とを比較する。上記の例において、未確定バッファ操作部43は、v(10)(注目される位置「10」のデータ値)とv(9)(未確定バッファ部42が格納する末尾の位置データのデータ値)と比較する。
v(i)<v(n)である場合(即ち、注目される位置のデータ値が末尾の位置データのデータ値よりも小さい場合)、未確定バッファ操作部43は、未確定バッファ部42から末尾の位置データ(n)を削除する。上記の例において、v(10)<v(9)であるので、未確定バッファ操作部43は、未確定バッファ部42から末尾の位置データである位置「9」を削除する。
末尾の位置データを削除すると、未確定バッファ操作部43は、再度、注目される位置「i」のデータ値v(i)と未確定バッファ部42が格納する末尾の位置データ(位置「n」)のデータ値(v(n))とを比較する。上記の例において、未確定バッファ操作部43は、v(10)とv(8)とを比較する。
上記のとおり、v(i)<v(n)である場合(即ち、注目される位置のデータ値が末尾の位置データ(位置「n」)のデータ値よりも小さい場合)、未確定バッファ操作部43は、未確定バッファ部42から末尾の位置データ(n)を削除する。上記の例において、v(10)<v(8)であるので、未確定バッファ操作部43は、未確定バッファ部42から末尾の位置データである位置「8」を削除する。
未確定バッファ操作部43が末尾の位置データを削除すると、幅位置登録部45は、削除した位置「n」と注目される位置「i」との間に1つ以上のドットが存在するか判定する。即ち、幅位置登録部45は、n<i−1であるか判定する。
削除された位置「n」と注目される位置「i」との間に1つ以上のドットが存在する場合、幅位置登録部45は、両者の間に存在するデータ値がv(n)及びv(i)よりも大きな値であることを認識する。なぜなら、未確定バッファ部42が格納する位置データは、条件(1)を満たし、注目される位置「i」との間により小さいデータ値を持つ位置kが存在しないからである。したがって、幅位置登録部45は、注目される位置「i」と削除された位置「n」との間にデータ値のピークが存在する(即ち、データ値が山形である)ことを認識することができる。即ち、幅位置登録部45は、位置「n」がデータ値(輝度値)の下降が終了した下降終了位置であると判定する。よって、幅位置登録部45は、注目される位置「i」と削除された位置「n」との間に線が存在すると判定する。
上記の例において、注目される位置「10」と削除された位置「8」との間には、位置「9」が存在するので、幅位置登録部45は、v(9)がv(8)及びv(10)のいずれよりも大きい値であることを認識する。したがって、幅位置登録部45は、位置「8」と位置「10」との間に線が存在すると判定する。
線が存在すると判定すると、幅位置登録部45は、線情報として、線の始点座標、幅及びデータ値を幅位置記憶部44に格納する。即ち、幅位置登録部45は、削除された位置「n」を始点座標とし、「i−n−1」を幅とし、v(n)をデータ値として、互いに対応付けて幅位置記憶部44に格納する。ここでは、v(n)>v(i)であるので、線情報のデータ値としてv(n)が格納される。上記の例において、幅位置登録部45は、位置「8」を始点座標とし、「1」(10−8−1)を幅とし、v(8)をデータ値として、互いに対応付けて幅位置記憶部44に格納する。
幅位置登録部45が幅位置記憶部44に線情報を格納すると、未確定バッファ操作部43は、再度、注目される位置「i」のデータ値v(i)と未確定バッファ部42が格納する末尾の位置データ(即ち、最も大きい値である位置データ)のデータ値(v(n))とを比較する。上記の例において、未確定バッファ操作部43は、v(10)とv(6)と比較する。
v(10)<v(6)であるので、前述のとおり、未確定バッファ操作部43は、未確定バッファ部42から末尾の位置データである位置「6」を削除する。
注目される位置「10」と削除された位置「6」との間には、位置「7」、位置「8」及び位置「9」が存在するので、前述のとおり、幅位置登録部45は、v(7)、v(8)及びv(9)がv(6)及びv(10)のいずれよりも大きい値であることを認識する。したがって、幅位置登録部45は、位置「6」と位置「10」との間に線が存在すると判定する。
位置「6」と位置「10」との間に線が存在すると判定すると、幅位置登録部45は、位置「6」を始点座標とし、「3」(10−6−1)を幅とし、v(6)をデータ値として、互いに対応付けて幅位置記憶部44に格納する。
幅位置登録部45が線情報を幅位置記憶部44に格納すると、未確定バッファ操作部43は、再度、注目される位置「i」のデータ値v(i)と未確定バッファ部42が格納する末尾の位置データのデータ値(v(n))とを比較する。上記の例において、未確定バッファ操作部43は、v(10)とv(5)と比較する。
v(i)>v(n)である場合(即ち、注目される位置「i」のデータ値が末尾の位置データ(位置「n」)のデータ値よりも大きい場合)、幅位置登録部45は、注目される位置「i」と末尾の位置データ(位置「n」)との間に存在するデータ値がv(n)及びv(i)よりも大きな値であることを認識する。なぜなら、前述のように、未確定バッファ部42が格納する位置データは、条件(1)を満たし、注目される位置「i」との間により小さいデータ値を持つ位置kが存在しないからである。したがって、幅位置登録部45は、注目される位置「i」と末尾の位置データ(位置「n」)との間にデータ値のピークが存在する(即ち、データ値が山形である)ことを認識することができる。即ち、幅位置登録部45は、位置「n」がデータ値(輝度値)の下降が終了した下降終了位置であると判定する。よって、幅位置登録部45は、注目される位置「i」と末尾の位置データ(位置「n」)との間に線が存在すると判定する。
上記の例において、注目される位置「10」と末尾の位置「5」との間には、位置「6」、位置「7」、位置「8」及び位置「9」が存在するので、幅位置登録部45は、v(6)、v(7)、v(8)及びv(9)がv(5)及びv(10)のいずれよりも大きい値であることを認識する。したがって、複数幅抽出部31は、位置「5」と位置「10」との間に線が存在すると判定する。
線が存在すると判定すると、幅位置登録部45は、線情報として、線の始点座標、幅及びデータ値を幅位置記憶部44に格納する。即ち、幅位置登録部45は、末尾の位置データ(位置「n」)を始点座標とし、「i−h−1」を幅とし、v(i)をデータ値として、互いに対応付けて幅位置記憶部44に格納する。ここでは、v(i)>v(n)であるので、線情報のデータ値としてv(i)が格納される。上記の例において、幅位置登録部45は、位置「5」を始点座標とし、「4」(10−5−1)を幅とし、v(10)をデータ値として、互いに対応付けて幅位置記憶部44に格納する。
幅位置登録部45が線情報を幅位置記憶部44に格納すると、未確定バッファ操作部43は、位置「i」を未確定バッファ部42へ格納する。上記の例において、未確定バッファ操作部43は、位置「10」を未確定バッファ部42へ格納する。
未確定バッファ操作部43が位置「i」を未確定バッファ部42へ格納すると、複数幅抽出部31は、位置「i」に注目した幅抽出を終了する。位置「i」に注目した幅抽出を終了すると、複数幅抽出部31は、位置「i+1」に注目した幅抽出を行う。上記の例において、位置「10」に注目した幅抽出を終了すると、複数幅抽出部31は、位置「11」に注目した幅抽出を行う。複数幅抽出部31は、すべての位置において幅抽出を行う。
図7は、幅位置記憶部44が格納する線情報テーブルの例を示す図である。
図7が示すように、幅位置記憶部44は、線情報を複数個格納する。前述のとおり、線情報は、始点座標、幅及びデータ値を対応付けた情報である。幅位置記憶部44は、複数幅抽出部31が線を特定し線情報を生成するたびに、新たに生成された線情報を追加的に記録する。図7が示す例において、たとえば、幅位置記憶部44は、始点座標として「5」、幅として「7」、及びデータ値として「39」を格納する。したがって、幅位置記憶部44は、位置「6」から位置「12」までに少なくともデータ値が39以上の線が存在することを示す。
線情報テーブルは、行及び列ごとに生成される。
すべての位置において幅抽出を行うと、複数幅抽出部31は、第a+1行目について幅抽出を行う。複数幅抽出部31は、同様にすべての行について幅抽出を行う。すべての行について幅抽出を行うと、複数幅抽出部31は、すべての列について同様の幅抽出を行う。
幅抽出を終了すると、複数幅抽出部31は、特定の幅の線を抽出した画像(出力画像)を生成する。即ち、複数幅抽出部31は、線の幅を示すパラメータcを用いて、幅がcである線を抽出した画像を生成する。また、複数幅抽出部31は、パラメータcを1から最大幅まで変化させ、各パラメータcに応じた画像を生成する。即ち。複数幅抽出部31は、すべての線の幅について、それぞれの幅の線を抽出した画像を生成する。なお、最大幅は、予め決められてもよいし、複数幅抽出部31が確定した線の最大幅としてもよい。
以下、出力画像を生成する手順について説明する。
ここでは、幅がcである線を抽出した出力画像を生成する手順について説明する。
複数幅抽出部31の出力画像作成部46は、第a行目の線情報テーブルから幅がcである線情報を取得する。たとえば、cが「7」である場合、図7が示す例において、出力画像作成部46は、開始座標「5」、幅「7」およびデータ値「39」を取得する。幅位置記憶部44が他にも幅が「7」である線情報を保有する場合、出力画像作成部46は、当該線情報も取得する。
幅がcである線情報を取得すると、出力画像作成部46は、取得された線情報に基づいて、幅がcである線がある部分のデータ値を線の両端のデータ値(即ち、線の両端のうちデータ値が高い一端のデータ値)にそろえたデータ値列を生成する。即ち、開始座標をs、データ値をuとすると、出力画像作成部46は、第a行目のデータ値列から、位置s+1から位置s+cまでのデータ値をuに書き換えたデータ値列(中間画像データ値列)を生成する。上記の例において、出力画像作成部46は、第a行目のデータ値列から、位置「6」から位置「12」までのデータ値を39に書き換えた中間画像データ値列を生成する。幅位置記憶部44が他にも幅が「7」である線情報を保有する場合、出力画像作成部46は、生成された中間画像データ値列からさらに当該線情報が示す線の位置についてもデータ値を書き換え、書き換えたデータ値列を中間画像データ値列とする。
出力画像作成部46は、同様の処理をすべての行について行う。したがって、出力画像作成部46は、すべての行に対応する中間画像データ値列を生成する。すべての行に対応する中間画像データ値列を生成すると、出力画像作成部46は、すべての中間画像データ値列を統合した画像(中間画像)を生成する。即ち、出力画像作成部46は、第a行目の中間画像データ値列を第a行目の中間画像のドット列とすることで、中間画像を生成する。中間画像は、元の画像(住所画像)を、幅がcである線のデータ値を線の両端の高さ(即ち、線の両端のうちデータ値が高い一端の高さ)にそろえた画像である。
中間画像を生成すると、出力画像作成部46は、生成された中間画像を元の画像(住所画像)から減算し、出力画像を生成する。即ち、出力画像作成部46は、元の画像の各ドットのデータ値から、生成された中間画像の対応するドットのデータ値を減算し、減算された値を対応するドットのデータ値とする出力画像を生成する。中間画像が幅がcである線のデータ値を線の両端の高さにそろえた画像であるので、出力画像は、幅がcである線の位置にデータ値が存在する(データ値が0でない)画像である。即ち、出力画像は、幅がcである線が輝度値を持つ画像である。
しがたって、出力画像は、幅がcである線を抽出した画像であるといえる。
出力画像作成部46は、すべてのc(即ち、1から最大幅まで)について出力画像を生成する。
以上の処理によって、出力画像作成部46は、幅が1から最大幅までの線を抽出した画像を生成することができる。
なお、出力画像作成部46は、列に注目して同様の処理を行ってもよい。この場合、出力画像作成部46は、列から生成された中間画像データ値列に基づいて中間画像を生成する。
次に、複数幅抽出部31の動作例について説明する。
図8は、複数幅抽出部31の動作例を説明するためのフローチャートである。
まず、複数幅抽出部31は、変数aに0を代入する(ステップS11)。変数aは、複数幅抽出部31が線の幅を抽出する行を示す。即ち、複数幅抽出部31は、第a行目について線の幅を抽出する。
変数aに0を代入すると、複数幅抽出部31は、住所画像の第a行目のデータ値列を取得する(ステップS12)。即ち、複数幅抽出部31は、データ取得部41へ住所画像の第a行目のすべてのデータ値を格納する。
第a行目のデータ値列を取得すると、複数幅抽出部31は、第a行目について線の幅を抽出する処理を行う(ステップS13)。線の幅を抽出する処理については後述する。
線の幅を抽出する処理を行うと、複数幅抽出部31は、すべての行について線の幅を抽出する処理を行ったか判定する(ステップS14)。即ち、複数幅抽出部31は、aが住所画像の最後の行を示す値であるかを判定する。
すべての行について線の幅を抽出する処理を行っていないと判定すると(ステップS14、NO)、複数幅抽出部31は、aをインクリメントする(ステップS15)。即ち、複数幅抽出部31は、aに1を加える。
aをインクリメントすると、複数幅抽出部31は、ステップ12へ戻る。
すべての行について線の幅を抽出する処理を行ったと判定すると(ステップS14、YES)、複数幅抽出部31は、変数bに0を代入する(ステップS16)。変数bは、複数幅抽出部31が線の幅を抽出する列を示す。即ち、複数幅抽出部31は、第b列目について線の幅を抽出する。
変数bに0を代入すると、複数幅抽出部31は、住所画像の第b列目のデータ値列を取得する(ステップS17)。即ち、複数幅抽出部31は、データ取得部41に住所画像の第b列目のすべてのデータ値を格納する。
第b列目のデータ値列を取得すると、複数幅抽出部31は、第b列目について線の幅を抽出する処理を行う(ステップS18)。
線の幅を抽出する処理を行うと、複数幅抽出部31は、すべての列について線の幅を抽出する処理を行ったか判定する(ステップS19)。即ち、複数幅抽出部31は、bが住所画像の最後の列を示す値であるかを判定する。
すべての列について線の幅を抽出する処理を行っていないと判定すると(ステップS19、NO)、複数幅抽出部31は、bをインクリメントする(ステップS20)。即ち、複数幅抽出部31は、bに1を加える。
bをインクリメントすると、複数幅抽出部31は、ステップ17へ戻る。
すべての列について線の幅を抽出する処理を行ったと判定すると(ステップS19、YES)、複数幅抽出部31は、変数cに1を代入する(ステップS21)。変数cは、複数幅抽出部31が抽出する線の幅を示す線幅パラメータである。即ち、複数幅抽出部31は、幅がcである線を示す出力画像を生成する。
変数cに1を代入すると、複数幅抽出部31は、線幅パラメータcに対応する中間画像を生成する(ステップS22)。中間画像の生成方法は、前述のとおりである。なお、複数幅抽出部31は、行を用いて生成した線情報テーブルに基づいて中間画像を生成してもよいし、列を用いて生成した線情報テーブルに基づいて中間画像を生成してもよい。また、複数幅抽出部31は、その両者を生成してもよい。また、複数幅抽出部31は、行を用いて生成した線情報テーブルと列を用いて生成した線情報テーブルの両方を用いて一つの中間画像を生成してもよい。
線幅パラメータcに対応する中間画像を生成すると、複数幅抽出部31は、幅がcである線を抽出した出力画像を生成する(ステップS23)。即ち、複数幅抽出部31は、元の住所画像の各ドットのデータ値から中間画像の対応するドットのデータ値を減算することで、出力画像を生成する。
幅がcである線を抽出した出力画像を生成すると、複数幅抽出部31は、すべての線幅パラメータcで出力画像を生成したか判定する(ステップS24)。即ち、複数幅抽出部31は、cが最大幅であるか判定する。
すべての線幅パラメータcで出力画像を生成していないと判定すると(ステップS24、NO)、複数幅抽出部31は、cをインクリメントする(ステップS25)。即ち、複数幅抽出部31は、cに1を加える。
cをインクリメントすると、複数幅抽出部31は、ステップ22へ戻る。
すべての線幅パラメータcで出力画像を生成したと判定すると(ステップS24、YES)、複数幅抽出部31は、出力画像の生成動作を終了する。
次に、複数幅抽出部31が幅を抽出する動作例(ステップS13及びステップS18)について説明する。
図9は、複数幅抽出部31が幅を抽出する動作例を説明するためのフローチャートである。
まず、複数幅抽出部31は、変数iに0を代入する(ステップS31)。変数iは、複数幅抽出部31が注目する位置を示す。即ち、複数幅抽出部31は、位置「i」に注目して線の幅を抽出する。
変数iに0を代入すると、複数幅抽出部31は、位置「i」のデータ値であるv(i)を取得する(ステップS32)。
v(i)を取得すると、複数幅抽出部31は、未確定バッファ部42が空であるか判定する(ステップS33)。未確定バッファ部42が空であるのは、複数幅抽出部31が幅抽出を開始したときである。
未確定バッファ部42が空でないと判定すると(ステップS33、NO)、複数幅抽出部31は、未確定バッファ部42が格納する末尾の位置データ(位置「n」)のデータ値v(n)がv(i)より小さいが判定する(ステップS34)。
v(n)よりv(i)が小さくないと判定すると(ステップS34、NO)、複数幅抽出部31は、未確定バッファ部が格納する末尾の位置データ(位置「n」)を削除する(ステップS35)。
未確定バッファ部が格納する末尾の位置データ(位置「n」)を削除すると、複数幅抽出部31は、未確定バッファ部42が格納する末尾の位置データ(位置「n」)が位置「i−1」であるか判定する(ステップS36)。即ち、複数幅抽出部31は、位置「n」が位置「i」の直前の位置であるか判定する。
末尾の位置データ(位置「n」)が位置「i−1」でないと判定すると(ステップS36、NO)、複数幅抽出部31は、幅位置記憶部44に線情報を記録する(ステップS37)。即ち、複数幅抽出部31は、開始座標として位置「n」、幅として「i−n−1」、及びデータ値としてv(n)を互いに対応付けて幅位置記憶部44に記録する。
末尾の位置データ(位置「n」)が位置「i−1」であると判定した場合(ステップS36、YES)、又は、幅位置記憶部44に線情報を記録した場合(ステップS37)、複数幅抽出部31は、ステップS33へ戻る。
v(n)よりv(i)が小さいと判定すると(ステップS34、YES)、複数幅抽出部31は、未確定バッファ部42が格納する末尾の位置データ(位置「n」)が位置「i−1」であるか判定する(ステップS38)。即ち、複数幅抽出部31は、位置「n」が位置「i」の直前の位置であるか判定する。
末尾の位置データ(位置「n」)が位置「i−1」でないと判定すると(ステップS38、NO)、複数幅抽出部31は、幅位置記憶部44に線情報を記録する(ステップS39)。即ち、複数幅抽出部31は、開始座標として位置「n」、幅として「i−n−1」、及びデータ値としてv(i)を互いに対応付けて幅位置記憶部44に記録する。
未確定バッファ部42が空であると判定した場合(ステップS33、YES)、末尾の位置データ(位置「n」)が位置「i−1」であると判定した場合(ステップS39、YES)、又は、幅位置記憶部44に線情報を記録した場合(ステップS39)、複数幅抽出部31は、未確定バッファ部42の末尾に位置「i」を記録する(ステップS40)。即ち、複数幅抽出部31は、未確定バッファ部42が格納する位置データに位置「i」を追加的に記録する。
未確定バッファ部42の末尾に位置「i」を記録すると、複数幅抽出部31は、すべての位置に注目して線の幅を抽出したか判定する(ステップS41)。即ち、複数幅抽出部31は、iが最後の位置座標であるか判定する。
すべての位置に注目して線の幅を抽出していないと判定すると(ステップS41、NO)、複数幅抽出部31は、iをインクリメントする(ステップS42)。即ち、複数幅抽出部31は、iに1を加える。
iをインクリメントすると、複数幅抽出部31は、ステップS32へ戻る。
すべての位置に注目して線の幅を抽出したと判定すると(ステップS41、YES)、複数幅抽出部31は、幅抽出動作を終了する。
パターン認識部18は、複数幅抽出部31が生成した出力画像を利用して文字を認識する。パターン認識部18が出力画像を利用して文字を認識する方法は、特定の方法に限定されるものではない。
なお、複数幅抽出部31は、特定のいくつかの線幅パラメータcについて出力画像を生成してもよい。複数幅抽出部31が生成する出力画像の枚数又は使用される線幅パラメータcなどは、特定の構成に限定されるものではない。
また、幅がcである線を抽出する方法を説明したが、幅がc以下である線を抽出するように変更することも可能である。幅位置記憶部44にから幅がcである線情報でなく、c以下である線情報を全て取得し、中間画像を生成すればよい。
次に、単独幅抽出部32について説明する。
単独幅抽出部32は、住所画像に記載されている文字を形成する線を抽出する。即ち、単独幅抽出部32は、特定の幅以下の線を抽出した画像を形成する。単独幅抽出部32は、特定の幅以下の線を抽出することができる。
図10は、単独幅抽出部32の構成例を示すブロック図である。
図10が示すように、単独幅抽出部32は、データ取得部51、未確定バッファ部52、未確定バッファ操作部53、確定データ記憶部54、確定データ登録部55及び出力画像作成部56などを備える。
データ取得部51は、複数幅抽出部31のデータ取得部41と同様である。したがって、データ取得部51の詳細な説明は省略する。
未確定バッファ部52は、線の幅を抽出している間に、位置データを一時的に記録する。即ち、未確定バッファ部52は、条件を満たす位置データを記録する。未確定バッファ部52は、単独幅抽出部32が注目している位置(位置「i」)との間によりその位置のデータ値より小さいデータ値(即ち、輝度値)を持つ位置が存在せず(条件1)、かつ、位置「i」から抽出する幅分座標を遡った位置(線候補位置)との間にその位置のデータ値より小さいデータ値を持つ位置が存在する(条件2)位置を示す位置データを格納する。なお、条件1は、複数幅抽出部31の未確定バッファ部42が格納する位置データの条件と同一である。即ち、未確定バッファ部52は、位置「i−h」から位置「i」までの間でデータ値(輝度値)の上昇が開始する上昇開始位置を格納する。
図11は、データ取得部51が取得した輝度データの例である。
横軸は位置を示し、縦軸は位置のデータ値(即ち、輝度値)を示す。
図11の例において、未確定バッファ部52が格納する位置データについて説明する。ここでは、単独幅抽出部32が抽出する線の幅hは、8であるものとする。また、単独幅抽出部32は位置「11」に注目しているものとする。
まず、位置「1」が未確定バッファ部52に格納されるか検討する。
位置「1」のデータ値は、位置「2」のデータ値より大きい。即ち、v(1)よりv(2)が小さい。したがって、位置「1」は、条件1を満たさない。よって、位置「1」は、未確定バッファ部52に格納されない。
次に、位置「2」が未確定バッファ部52に格納されるか検討する。
位置「2」のデータ値は、位置「3」から位置「10」までのデータ値のいずれのデータ値よりも小さい。即ち、v(2)は、v(3)乃至v(10)のいずれよりも小さい。したがって、位置「2」は、条件1を満たす。位置「2」は、位置「11」から抽出される線幅h遡った位置「3」の外の座標である。したがって、位置「2」は、条件2を満たさない。よって、位置「2」は、未確定バッファ部52に格納されない。
次に、位置「3」が未確定バッファ部52に格納されるか検討する。
位置「3」のデータ値は、位置「4」のデータ値より大きい。条件1を満たさない。したがって、位置「3」は、未確定バッファ部52に格納されない。
次に、位置「4」が未確定バッファ部52に格納されるか検討する。
位置「4」のデータ値は、位置「5」から位置「10」までのデータ値のいずれのデータ値よりも小さい。したがって、位置「4」は、条件1を満たす。位置「4」は、位置「3」との間に位置「4」のデータ値よりも小さいデータ値を持つ位置が存在しない位置である。したがって、位置「4」は、条件2を満たさない。よって、位置「4」は、未確定バッファ部52に格納されない。
次に、位置「5」が未確定バッファ部52に格納されるか検討する。
位置「5」のデータ値は、位置「6」から位置「10」までのデータ値のいずれのデータ値よりも小さい。したがって、位置「5」は、条件1を満たす。位置「5」のデータ値は、位置「4」のデータ値より大きい。したがって、位置「5」は、位置「3」との間に位置「5」のデータ値よりも小さいデータ値を持つ位置が存在する位置である。したがって、位置「5」は、条件2を満たす。よって、位置「5」は、未確定バッファ部52に格納される。
次に、位置「6」、位置「7」、位置「8」及び位置「9」が未確定バッファ部52に格納されるか検討する。
位置「6」、位置「7」、位置「8」及び位置「9」のデータ値は、位置「10」のデータ値より大きい。したがって、位置「6」、位置「7」、位置「8」及び位置「9」は、条件1を満たさない。よって、位置「6」、位置「7」、位置「8」及び位置「9」は、未確定バッファ部52に格納されない。
次に、位置「10」が未確定バッファ部52に格納されるか検討する。
位置「10」と位置「11」とは隣接しているので、両者の間に位置「10」のデータ値より小さいデータ値を持つ位置がない。したがって、位置「10」は、条件1を満たす。位置「10」のデータ値は、位置「3」、位置「4」及び位置「5」のデータ値より大きい。したがって、位置「10」は、位置「3」との間に位置「10」のデータ値よりも小さいデータ値を持つ位置が存在する位置である。したがって、位置「10」は、条件2を満たす。よって、位置「10」は、未確定バッファ部52に格納される。
以上のように、単独幅抽出部32が位置「11」に注目している時点では、未確定バッファ部52は、位置「5」及び位置「10」を格納する。
未確定バッファ部52は、以下の条件を満たす位置「j」を格納する。
j<k<iを満たすすべてのkについてv(j)<v(k) ・・・(1)
i−h<m<jかつv(m)<v(j)を満たすmが少なくとも1つ存在する ・・・(2)
ここで、iは、単独幅抽出部32が注目している位置を示す。即ち、単独幅抽出部32が位置「i」に注目している場合に、未確定バッファ部52が格納している位置「j」は、条件(1)(条件1に対応)及び条件(2)(条件2に対応)を満たす。
図12は、未確定バッファ部52が格納する位置データの例を示す。
図12は、単独幅抽出部32が位置「11」に注目している場合に未確定バッファ部52が格納する位置データである。前述のとおり、未確定バッファ部52は、位置「5」及び位置「10」を格納する。
未確定バッファ部52は、単独幅抽出部32が注目している位置を変更するたびに式(1)及び式(2)を満たす位置を格納する。即ち、未確定バッファ部52は、単独幅抽出部32が注目している位置を変更するたびに書き換えられる。
未確定バッファ操作部53は、未確定バッファ部52に記録されている位置データを削除したり、位置データを追加したりする機能を有する。未確定バッファ操作部53は、式(1)及び式(2)を満たす位置「j」を未確定バッファ部42に格納する。
確定データ記憶部54は、単独幅抽出部32が確定したデータ値を格納する。即ち、確定データ記憶部54は、単独幅抽出部32が確定するデータ値を随時追加的に記録される。
確定データ記憶部54が格納するデータ値列は、線幅パラメータhに対応する中間画像データ値列である。即ち、確定データ記憶部54が格納するデータ値列は、幅がh以下である線がある部分のデータ値を線の両端の高さ(即ち、線の両端のうちデータ値が高い一端の高さ)にそろえたデータ値列である。
確定データ登録部55は、確定データ記憶部54にデータを追記する。即ち、確定データ登録部55は、単独幅抽出部32が確定したデータ値を確定データ記憶部54に追加的に格納する。データ値を確定する方法については後述する。
出力画像作成部56は、確定データ登録部55が格納する中間画像データ値列に基づいて、特定の幅の線を抽出した画像を生成する。即ち、出力画像作成部56は、確定データ登録部55から中間画像データ値列を取得し、中間画像を生成する。出力画像作成部56は、生成される中間画像に基づいて出力画像を生成する。
次に、単独幅抽出部32が線を抽出する手順について説明する。
まず、単独幅抽出部32は、線幅パラメータhに対応する中間画像を生成する。以下、単独幅抽出部32が中間画像データ値列を生成する手順について説明する。
ここでは、単独幅抽出部32が位置「11」に注目しているものとする。また、単独幅抽出部32は、図11が示すデータ値列をもとに中間画像データ値列を生成するものとし、未確定バッファ部52は、上記の位置データを格納しているものとする。また、単独幅抽出部32が抽出する線の幅hは、8であるものとする。
まず、未確定バッファ操作部53は、未確定バッファ部52の末尾の位置データ(位置「n」)のデータ値(v(n))と位置「i」のデータ値(v(i))を比較する。上記の例において、未確定バッファ操作部53は、v(10)(未確定バッファ部52の末尾の位置データのデータ値)とv(11)(単独幅抽出部32が注目している位置のデータ値)を比較する。
v(i)<v(n)である場合(即ち、注目される位置のデータ値が末尾の位置データのデータ値よりも小さい場合)、未確定バッファ操作部53は、未確定バッファ部52から末尾の位置データ(n)を削除する。上記の例において、v(11)<v(10)であるので、未確定バッファ操作部53は、未確定バッファ操作部53を通じて未確定バッファ部52から末尾の位置データである位置「10」を削除する。
末尾の位置データを削除すると、未確定バッファ操作部53は、再度、注目される位置「i」のデータ値v(i)と未確定バッファ部42が格納する末尾の位置データ(位置「n」)のデータ値(v(n))とを比較する。上記の例において、未確定バッファ操作部53は、v(11)とv(5)とを比較する。
上記のとおり、v(i)<v(n)である場合(即ち、注目される位置のデータ値が末尾の位置データ(位置「n」)のデータ値よりも小さい場合)、未確定バッファ操作部53は、未確定バッファ部52から末尾の位置データ(n)を削除する。上記の例において、v(10)<v(5)であるので、未確定バッファ操作部53は、未確定バッファ部52から末尾の位置データである位置「5」を削除する。これで、未確定バッファ部52は、空になる。
未確定バッファ部52が空になると、確定データ登録部55は、注目される位置「i」のデータ値(v(i))と位置「i」から幅h+1遡った位置(位置「i−h−1」)のデータ値(v(i−h−1))と比較する。上記の例において、確定データ登録部55は、v(11)とv(2)とを比較する。
v(i)>v(i−h−1)である場合、確定データ登録部55は、データ値の山がまだ下がり終わっておらず、幅がh以下である線がないと判定する。即ち、確定データ登録部55は、位置「i」が線の端ではないと判定する。したがって、確定データ登録部55は、位置「i」から位置「i−h−1」の間に線がない(即ち、位置「i−h」から位置「i」までが線ではない)と認識する。また、確定データ登録部55は、位置「i−h−1」のデータ値が中間画像データ値であると判定する。即ち、確定データ登録部55は、位置「i−h−1」のデータ値が減算されることなく中間画像データ値となると判定する。位置「i−h−1」のデータ値が中間画像データ値であると判定すると、確定データ登録部55は、位置「i−h−1」のデータ値(v(i−h−1))を確定データ記憶部54に格納する。
上記の例において、v(11)>v(2)であるので、確定データ登録部55は、位置「11」と位置「2」との間に線(即ち、幅が8である線)がないと認識する。また、確定データ登録部55は、位置「2」のデータ値(v(2))が中間画像データ値として確定したと認識する。確定データ登録部55は、v(2)を中間画像データ値列の位置「2」のデータ値として確定データ記憶部54に格納する。
確定データ登録部55がv(i−h−1)を確定データ記憶部54に格納すると、未確定バッファ操作部53は、位置「i」を未確定バッファ部52に追加的に格納する。上記の例において、未確定バッファ操作部53は、位置「11」を未確定バッファ部52に追加的に格納する。
未確定バッファ操作部53が位置「i」を未確定バッファ部52に追加的に格納すると、単独幅抽出部32は、位置「i」に対する幅抽出処理を終了する。位置「i」に対する幅抽出処理を終了すると、単独幅抽出部32は、位置「i+1」に対する幅抽出処理を開始する。上記の例において、単独幅抽出部32は、位置「12」に対して幅抽出処理を開始する。
次に、単独幅抽出部32が図13が示すデータ値列をもとに中間画像データ値列を生成する場合について検討する。未確定バッファ部52は、上記の位置データを格納しているものとする。また、単独幅抽出部32が抽出する線の幅hは、8であるものとする。また、単独幅抽出部32は、位置「11」に注目しているものとする。
同様に、未確定バッファ操作部53は、未確定バッファ部52から位置「5」及び位置「10」を削除する。これで、未確定バッファ部52に空になる。
未確定バッファ部52が空になると、同様に、確定データ登録部55は、注目される位置「i」のデータ値(v(i))と位置「i」から幅h+1遡った位置(位置「i−h−1」)のデータ値(v(i−h−1))と比較する。上記の例において、確定データ登録部55は、v(11)とv(2)とを比較する。
v(i)<v(i−h−1)である場合、確定データ登録部55は、位置「i」でデータ値の山が下がり終わり、幅がh以下である線があると判定する。即ち、確定データ登録部55は、位置「i」が線の端であると判定する。したがって、単独幅抽出部32は、位置「i」から位置「i−h−1」の間に線がある(即ち、位置「i−h」から位置「i」までが線である)と認識する。上記の例において、v(11)<v(2)であるので、確定データ登録部55は、位置「i−h−1」と位置「i」との間に幅が8である線があると認識する。
中間画像データ値列は線がある位置のデータ値を線の両端のデータ値(即ち、線の両端のうちデータ値が高い一端のデータ値)にそろえたデータ値列である。したがって、確定データ登録部55は、v(i−h−1)を、中間画像データ値列の位置「i−h−1」から位置「i−1」までのデータ値として確定データ記憶部54に格納する。即ち、確定データ記憶部54が格納する中間画像データ値列の位置「i−h−1」から位置「i−1」までのデータ値は、すべてv(i−h−1)となる。上記の例において、確定データ登録部55は、v(2)を、中間画像データ値列の位置「2」から位置「10」までのデータ値として確定データ記憶部54に格納する。
確定データ登録部55がv(i−h−1)を確定データ記憶部54に格納すると、未確定バッファ操作部53は、位置「i」を未確定バッファ部52に追加的に格納する。上記の例において、未確定バッファ操作部53は、位置「11」を通じて未確定バッファ部52に追加的に格納する。
未確定バッファ操作部53が位置「i」を未確定バッファ部52に追加的に格納すると、単独幅抽出部32は、位置「i」に対する幅抽出処理を終了する。位置「i」に対する幅抽出処理を終了すると、単独幅抽出部32は、位置「i+1」に対する幅抽出処理を開始する。上記の例において、単独幅抽出部32は、位置「12」に対して幅抽出処理を開始する。
次に、単独幅抽出部32が図14が示すデータ値列をもとに中間画像データ値列を生成する場合について検討する。未確定バッファ部52は、上記の位置データを格納しているものとする。また、単独幅抽出部32が抽出する線の幅hは、8であるものとする。また、単独幅抽出部32は、位置「11」に注目しているものとする。
同様に、未確定バッファ操作部53は、未確定バッファ部52から位置「10」を削除する。
未確定バッファ操作部53が末尾の位置データを削除すると、未確定バッファ操作部53は、再度、注目される位置「i」のデータ値v(i)と未確定バッファ部42が格納する末尾の位置データ(位置「n」)のデータ値(v(n))とを比較する。上記の例において、未確定バッファ操作部53は、v(11)とv(5)とを比較する。
v(i)>v(n)である場合(即ち、注目される位置のデータ値が末尾の位置データ(位置「n」)のデータ値よりも大きい場合)、確定データ登録部55は、データ値の山がまだ下がり終わっておらず、幅がh以下である線がないと判定する。即ち、確定データ登録部55は、位置「i」が線の端ではないと判定する。したがって、確定データ登録部55は、位置「i」から位置「i−h−1」の間に線(即ち、幅がh以下である線)がないと認識する。また、確定データ登録部55、位置「i−h−1」のデータ値が中間画像データ値であると判定する。即ち、確定データ登録部55は、位置「i−h−1」のデータ値が減算されることなく中間画像データ値となると判定する。位置「i−h−1」のデータ値が中間画像データ値であると判定すると、確定データ登録部55は、位置「i−h−1」のデータ値(v(i−h−1))を確定データ記憶部54に格納する。
上記の例において、v(11)>v(5)であるので、確定データ登録部55は、位置「11」と位置「2」との間に線(即ち、幅が8である線)がないと認識する。また、確定データ登録部55は、位置「2」のデータ値(v(2))が中間画像データ値として確定したと認識する。確定データ登録部55は、v(2)を中間画像データ値列の位置「2」のデータ値として確定データ記憶部54に格納する。
確定データ登録部55がv(i−h−1)を確定データ記憶部54に格納すると、未確定バッファ操作部53は、位置「i」を未確定バッファ部52に追加的に格納する。上記の例において、未確定バッファ操作部53は、位置「11」を未確定バッファ部52に追加的に格納する。
未確定バッファ操作部53が位置「i」を未確定バッファ部52に追加的に格納すると、単独幅抽出部32は、位置「i」に対する幅抽出処理を終了する。位置「i」に対する幅抽出処理を終了すると、単独幅抽出部32は、位置「i+1」に対する幅抽出処理を開始する。上記の例において、単独幅抽出部32は、位置「12」に対して幅抽出処理を開始する。
単独幅抽出部32は、すべての位置において幅抽出処理を行い、中間画像データ値列を生成する。
単独幅抽出部32は、同様の処理をすべての行及びすべての列について行う。したがって、単独幅抽出部32は、すべての行及びすべての列に対応する中間画像データ値列を生成する。
出力画像作成部56は、すべての行及びすべての列に対応する中間画像データ値列に基づいて、すべての行の中間画像データ値列を統合した画像(中間画像)及びすべての列の中間画像データ値列を統合した画像(中間画像)を生成する。即ち、出力画像作成部56は、第a行目の中間画像データ値列を第a行目の中間画像のドット列とすることで、中間画像を生成する。同様に、出力画像作成部56は、第b列目の中間画像データ値列を第b列目の中間画像のドット列とすることで、中間画像を生成する。
中間画像を生成すると、出力画像作成部56は、生成された中間画像を元の画像(住所画像)から減算し、出力画像を生成する。即ち、出力画像作成部56は、元の画像の各ドットのデータ値から、生成された中間画像の対応するドットのデータ値を減算し、減算された値を対応するドットのデータ値とする出力画像を生成する。中間画像が幅がh以下である線のデータ値を線の両端の高さにそろえた画像であるので、出力画像は、幅がh以下である線の位置にデータ値が存在する(データ値が0でない)画像である。即ち、出力画像は、幅がh以下である線が輝度値を持つ画像である。
しがたって、出力画像は、幅がh以下である線を抽出した画像であるといえる。なお、出力画像作成部56は、行の中間画像データ値列から生成される中間画像に基づいて出力画像を生成してもよいし、列の中間画像データ値列から生成される中間画像に基づいて出力画像を生成してもよい。また、出力画像作成部56は、両者の中間画像を生成してもよい。
以上の処理によって、単独幅抽出部32は、幅がh以下である線を抽出した画像を生成することができる。
次に、単独幅抽出部32の動作例について説明する。
図15は、単独幅抽出部32の動作例を説明するためのフローチャートである。
まず、単独幅抽出部32は、変数aに0を代入する(ステップS51)。変数aは、単独幅抽出部32が線の幅を抽出する行を示す。
変数aに0を代入すると、単独幅抽出部32は、住所画像の第a行目のデータ値列を取得する(ステップS52)。即ち、単独幅抽出部32は、データ取得部51に住所画像の第a行目のすべてのデータ値を格納する。
第a行目のデータ値列を取得すると、単独幅抽出部32は、第a行目について線を抽出する処理を行う(ステップS53)。ここでは、単独幅抽出部32は、幅がhの線を抽出する。線の幅を抽出する処理については後述する。
線を抽出する処理を行うと、単独幅抽出部32は、すべての行について線を抽出する処理を行ったか判定する(ステップS54)。即ち、複数幅抽出部31は、aが住所画像の最後の行を示す値であるかを判定する。
すべての行について線を抽出する処理を行っていないと判定すると(ステップS54、NO)、単独幅抽出部32は、aをインクリメントする(ステップS55)。
aをインクリメントすると、単独幅抽出部32は、ステップ52へ戻る。
すべての行について線を抽出する処理を行ったと判定すると(ステップS54、YES)、単独幅抽出部32は、変数bに0を代入する(ステップS56)。変数bは、複数幅抽出部31が線の幅を抽出する列を示す。
変数bに0を代入すると、複数幅抽出部31は、住所画像の第b列目のデータ値列を取得する(ステップS57)。即ち、複数幅抽出部31は、データ取得部51に住所画像の第b列目のすべてのデータ値を格納する。
第b列目のデータ値列を取得すると、単独幅抽出部32は、第b列目について線を抽出する処理を行う(ステップS58)。
線を抽出する処理を行うと、単独幅抽出部32は、すべての列について線を抽出する処理を行ったか判定する(ステップS59)。即ち、複数幅抽出部31は、bが住所画像の最後の列を示す値であるかを判定する。
すべての列について線を抽出する処理を行っていないと判定すると(ステップS59、NO)、単独幅抽出部32は、bをインクリメントする(ステップS20)。
bをインクリメントすると、単独幅抽出部32は、ステップ57へ戻る。
すべての列について線を抽出する処理を行ったと判定すると(ステップS59、YES)、中間画像を生成する(ステップS61)。中間画像の生成方法は、前述のとおりである。
線幅パラメータcに対応する中間画像を生成すると、単独幅抽出部32は、幅がh以下である線を抽出した出力画像を生成する(ステップS23)。即ち、複数幅抽出部31は、元の住所画像の各ドットのデータ値から中間画像の対応するドットのデータ値を減算することで、出力画像を生成する。
幅がh以下である線を抽出した出力画像を生成すると、複数幅抽出部31は、出力画像の生成動作を終了する。
次に、単独幅抽出部32が幅がh以下である線を抽出する動作例(ステップS53及びステップS58)について説明する。
図16は、単独幅抽出部32が幅がh以下である線を抽出する動作例を説明するためのフローチャートである。
まず、単独幅抽出部32は、変数iに0を代入する。変数iは、単独幅抽出部32が注目している位置を示す。
変数iに0を代入すると、単独幅抽出部32は、位置「i」のデータ値であるv(i)を取得する。
v(i)を取得すると、単独幅抽出部32は、未確定バッファ部52が空であるか判定する(ステップS73)。
未確定バッファ部52が空でないと判定すると(ステップS73、NO)、単独幅抽出部32は、未確定バッファ部52の末尾の位置データ(位置「n」)のデータ値(v(n))がv(i)よりも小さいか判定する(ステップS74)。
未確定バッファ部52の末尾の位置データ(位置「n」)のデータ値(v(n))がv(i)よりも小さくないと判定すると(ステップS74、NO)、単独幅抽出部32は、未確定バッファ部52から未確定バッファ部52の末尾データ(位置「n」)を削除する(ステップS75)。
未確定バッファ部52の末尾データを削除すると、単独幅抽出部32は、ステップS73へ戻る。
未確定バッファ部52の末尾の位置データ(位置「n」)のデータ値(v(n))がv(i)よりも小さいと判定すると(ステップS74、YES)、単独幅抽出部32は、i>hであるか判定する(ステップS76)。即ち、単独幅抽出部32は、位置「i」から幅h+1遡った位置が存在するか判定する。単独幅抽出部32は、位置「i」から幅h+1遡った位置が存在しない場合は、中間画像データ値を確定しない。
i>hであると判定すると(ステップS76、YES)、単独幅抽出部32は、位置「i−h−1」のデータ値(v(i−h−1))を中間画像データ値として確定データ記憶部54に格納する(ステップS77)。
未確定バッファ部52が空でないと判定すると(ステップS73、NO)、単独幅抽出部32は、i>hであるか判定する(ステップS78)。
i>hであると判定すると(ステップS78、YES)、単独幅抽出部32は、位置「i−h−1」のデータ値(v(i−h−1))がv(i)より大きいか判定する(ステップS79)。
位置「i−h−1」のデータ値(v(i−h−1))がv(i)より大きくないと判定すると(ステップS79、NO)、単独幅抽出部32は、ステップS77へ進む。
位置「i−h−1」のデータ値(v(i−h−1))がv(i)より大きいと判定すると(ステップS79、YES)、単独幅抽出部32は、v(i−h−1)を、位置「i−h−1」から位置「i」までの中間画像データ値として確定データ記憶部54に格納する(ステップS80)。
i>hでないと判定した場合(ステップS76、NO)、データ値(v(i−h−1))を確定データ記憶部54に格納した場合(ステップS77)、i>hでないと判定した場合(ステップS78、NO)、又は、v(i−h−1)を確定データ記憶部54に格納した場合(ステップS80)、単独幅抽出部32は、位置「i」を未確定バッファ部52へ格納する(ステップS81)。
位置「i」の未確定バッファ部52へ格納すると、単独幅抽出部32は、データが終了したか判定する(ステップS82)。即ち、単独幅抽出部32は、位置「i」が最後の位置座標であるか判定する。
データが終了していないと判定する(ステップS82、NO)、単独幅抽出部32は、iをインクリメントする(ステップS83)。iをインクリメントすると、単独幅抽出部32は、ステップS72へ戻る。
データが終了したと判定すると(ステップS82、YES)、単独幅抽出部32は、幅抽出動作を終了する。
パターン認識部18は、単独幅抽出部32が生成した出力画像を利用して文字を認識する。パターン認識部18が出力画像を利用して文字を認識する方法は、特定の方法に限定されるものではない。
なお、白地に黒文字が記載されている場合、複数幅抽出部31及び単独幅抽出部32は、データ値を逆転させて幅抽出処理を行ってもよい。
以上のように構成されたパターン認識部は、効率的に特定の幅を持つ線から構成される文字画像(出力画像)を得ることができる。その結果、パターン認識部は、効率的に文字認識を行うことができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。