JP2004086256A - Device, method and program for recognizing handwritten character - Google Patents

Device, method and program for recognizing handwritten character Download PDF

Info

Publication number
JP2004086256A
JP2004086256A JP2002242551A JP2002242551A JP2004086256A JP 2004086256 A JP2004086256 A JP 2004086256A JP 2002242551 A JP2002242551 A JP 2002242551A JP 2002242551 A JP2002242551 A JP 2002242551A JP 2004086256 A JP2004086256 A JP 2004086256A
Authority
JP
Japan
Prior art keywords
value
line width
storage device
character recognition
handwritten character
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.)
Granted
Application number
JP2002242551A
Other languages
Japanese (ja)
Other versions
JP4130106B2 (en
Inventor
Sadao Takahashi
高橋 禎郎
Nobuyuki Doi
土井 信幸
Hirofumi Horikawa
堀川 裕文
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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2002242551A priority Critical patent/JP4130106B2/en
Publication of JP2004086256A publication Critical patent/JP2004086256A/en
Application granted granted Critical
Publication of JP4130106B2 publication Critical patent/JP4130106B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Character Input (AREA)
  • Character Discrimination (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To highly accurately recognize a character. <P>SOLUTION: In a device 30 for recognizing a handwritten character, the character of a handwritten character image of a line in prescribed width which is generated from a handwritten character string represented by a plurality of pieces of stroke data, is recognized. The device is provided with a line width change means 33 changing prescribed width, based on a direction of stroke data. <P>COPYRIGHT: (C)2004,JPO

Description

【0001】
【発明の属する技術分野】
本発明は、手書き文字認識装置、手書き文字認識方法及び手書き文字認識プログラムに係り、特に複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置、手書き文字認識方法及び手書き文字認識プログラムに関する。
【0002】
【従来の技術】
手書き文字の認識を行うことが従来より行われている。例えば、「特開平9―2682203号公報」では、手書き文字画像から特徴量を求めた後に、神経回路網を用いて識別を行う文字認識方法について述べられている。文字認識の実行時に文字認識の確からしさ(確信度)が低い場合、認識パラメータを変更して再度文字認識を行うことにより確信度が高くなるような、つまり精度の高い文字認識が可能な構成となっている。
【0003】
手書き入力装置を用いた従来の文字認識の処理方法を以下に示す。図1は、ビットマップデータ読み取り方式による従来の文字認識装置10の構成である。従来装置(その1)は、文字認識装置10と、手書き入力装置11とから構成され、文字認識装置10は、通信部12と、画像作成部13と、文字認識部14と、蓄積部15とから構成される。
【0004】
手書き入力装置11は、加筆箇所の座標情報を(x、y)を取得する装置であり、作業者の加筆と同時に加筆箇所の座標情報を取得する。
【0005】
通信部12は、手書き入力装置11から座標情報(x、y)を受信する。画像作成部13は、加筆情報として前記通信部12から取り出す座標情報(X、Y)を基に所定の線幅の文字の文字画像を作成する。文字認識部14は、前記画像作成部13が作成した文字画像中の文字を認識する。蓄積部15は、前記文字認識部14が認識した文字の認識結果を蓄積する。
【0006】
図2は、時系列座標データ読み取り方式による従来の文字認識装置20の構成である。従来装置(その2)は、文字認識装置20と、手書き入力装置21とから構成され、文字認識装置20は、通信部22と、文字認識部23と、蓄積部24とから構成される。
【0007】
手書き入力装置21は、一文字入力を行う領域を有する手書き入力装置であって、加筆箇所の座標情報(x、y)を取得して、作業者の加筆と同時に加筆箇所の座標情報を取得する。
【0008】
通信部22は、前記手書き入力装置21から座標情報(x、y)を受信する。文字認識部23は、一文字に相当する座標情報列から文字を認識する。この際、座標情報列は時系列情報も有するので、筆順の情報を文字認識に利用できる。蓄積部24は、前記文字認識部23が認識した文字認識の結果を蓄積する。
【0009】
【発明が解決しようとする課題】
しかしながら、前記「特開平9―2682203号公報」に記載された発明では、文字画像に最適な文字認識パラメータを設定することにより、精度の高い文字認識を行うことを目的としており、処理対象の基となる文字画像の品質が悪ければ、おのずとその認識率には限界がある。
【0010】
また、前記図1に示した手書き入力装置を用いた従来の方式においては、所定の線幅で文字画像を構成している。この線幅が文字の大きさと比較して細ければ図3(a)のように「加」という1文字が、「カロ」という2文字に分離されて認識されてしまうと言う問題がある。この問題を解決するためには、図3(b)に示すように、太線で文字画像を作成することにより、「加」として文字が認識される。
【0011】
ところで、線幅が文字の大きさと比較して太すぎると、隣接する線とつながってしまい、文字が潰れることがある。
【0012】
図4は、手書きした座標データを基に文字画像を作成して文字認識させる一例を「東」を用いて説明するための図である。図4(a)は、細線で文字画像を作成して文字認識させた場合を表しており、図4(b)は、太線で文字画像を作成して文字認識させた場合を表している。図4(b)に示すように線幅を文字と比較して太くすれば隣接する線とつながって「東」という文字が「束」と認識される場合がある。
【0013】
従って、従来の方法では、「加東」という文字列が線幅によって「カロ東」や「加束」という字に誤認識されてしまうことがある。
【0014】
更には、前記図2に示した手書き入力装置を用いた従来の方式においては、筆記者の筆順が間違っている場合には認識精度が低下する。
【0015】
本発明は、上記の点に鑑みなされたもので、より精度の高い文字認識を行うことを目的とする。
【0016】
【課題を解決するための手段】
そこで、上記問題を解決するため、請求項1記載の発明は、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手段を有することを特徴とする。
【0017】
また、請求項2記載の発明は、前記線幅変更手段は、前記所定幅を細くする細線化手段を有することを特徴とする。
【0018】
また、請求項3記載の発明は、前記所定幅を規定する値を記憶する第一記憶装置と、所定の値を記憶する第二記憶装置とを更に有し、前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算し、その減算した値に基づいて線幅を決定することを特徴とする。
【0019】
また、請求項4記載の発明は、前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算しないことを特徴とする。
【0020】
また、請求項5記載の発明は、前記所定幅を規定する値を記憶する第一記憶装置と、1未満の所定の値を記憶する第三記憶装置とを更に有し、前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することを特徴とする。
【0021】
また、請求項6記載の発明は、前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三記憶装置に記憶されている値を乗算しないことを特徴とする。
【0022】
また、請求項7記載の発明は、前記線幅変更手段は、前記所定幅を太くする太線化手段を有することを特徴とする。
【0023】
また、請求項8記載の発明は、前記所定幅を規定する値を記憶する第一記憶装置と、所定の値を記憶する第四記憶装置とを更に有し、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算し、その加算した値に基づいて線幅を決定することを特徴とする。
【0024】
また、請求項9記載の発明は、前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算しないことを特徴とする。
【0025】
また、請求項10記載の発明は、前記所定幅を規定する値を記憶する第一記憶装置と、1を超える所定の値を記憶する第五記憶装置とを更に有し、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することを特徴とする。
【0026】
また、請求項11記載の発明は、前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算しないことを特徴とする。
【0027】
また、請求項12記載の発明は、前記線幅変更手段は、前記所定幅を細くする細線化手段と、前記所定幅を太くする太線化手段とを有することを特徴とする。
【0028】
また、請求項13記載の発明は、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手段を有することを特徴とする。
【0029】
また、請求項14記載の発明は、前記線幅変更手段は、当該ストロークデータから生成された線幅を規定する値及び記憶装置に記憶されている所定の線幅を規定する値のうちどちらか一方、小さい方の値を選択して線幅を決定することを特徴とする。
【0030】
また、請求項15記載の発明は、前記ストロークデータから生成された線幅は、当該ストロークデータと隣接するストロークデータとの距離の2分の1未満であることを特徴とする。
【0031】
また、請求項16記載の発明は、当該ストロークデータと隣接するストロークデータとの距離と角度を算出する距離・角度算出手段を更に有し、該距離・角度算出手段により算出された距離に基づいて、前記ストロークデータから生成された線幅を決めることを特徴とする。
【0032】
また、請求項17記載の発明は、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更段階を有することを特徴とする。
【0033】
また、請求項18記載の発明は、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更段階を有することを特徴とする。
【0034】
また、請求項19記載の発明は、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手順をコンピュータに実行させることを特徴とする。
【0035】
また、請求項20記載の発明は、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手順をコンピュータに実行させることを特徴とする。
【0036】
請求項1記載の発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手段を有することによって、より精度の高い文字認識を行うことができる。
【0037】
請求項2記載の発明によれば、前記線幅変更手段は、前記所定幅を細くする細線化手段を有することによって、漢字等のある範囲内のデータが多い文字においても、より精度の高い文字認識を行うことができる。
【0038】
請求項3記載の発明によれば、前記所定幅を規定する値を記憶する第一記憶装置と、所定の値を記憶する第二記憶装置とを更に有し、前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算し、その減算した値に基づいて線幅を決定することによって、簡単な構成で線幅を細くすることができる。
【0039】
請求項4記載の発明によれば、前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算しないことによって、第一記憶装置に記憶されている値が所定の値より小さければ、それ以上線幅を細くすることを防ぐことができる。
【0040】
請求項5記載の発明によれば、前記所定幅を規定する値を記憶する第一記憶装置と、1未満の所定の値を記憶する第三記憶装置とを更に有し、前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することによっ7、簡単な構成で線幅を細くすることができる。
【0041】
請求項6記載の発明によれば、前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三記憶装置に記憶されている値を乗算しないことによって、第一記憶装置に記憶されている値が所定の値より小さければ、それ以上線幅を細くすることを防ぐことができる。
【0042】
請求項7記載の発明によれば、前記線幅変更手段は、前記所定幅を太くする太線化手段を有することによって、文字の偏とつくりを分離して文字認識をしないようになり、より精度の高い文字認識を行うことができる。
【0043】
請求項8記載の発明によれば、前記所定幅を規定する値を記憶する第一記憶装置と、所定の値を記憶する第四記憶装置とを更に有し、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算し、その加算した値に基づいて線幅を決定することによって、簡単な構成で線幅を太くすることができる。
【0044】
請求項9記載の発明によれば、前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算しないことにより、第一記憶装置に記憶されている値が所定の値より大きければ、それ以上線幅を太くすることを防ぐことができる。
【0045】
請求項10記載の発明によれば、前記所定幅を規定する値を記憶する第一記憶装置と、1を超える所定の値を記憶する第五記憶装置とを更に有し、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することによって、簡単な構成で線幅を太くすることができる。
【0046】
請求項11記載の発明によれば、前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算しないことにより、第一記憶装置に記憶されている値が所定の値より大きければ、それ以上線幅を太くすることを防ぐことができる。
【0047】
請求項12記載の発明によれば、前記線幅変更手段は、前記所定幅を細くする細線化手段と、前記所定幅を太くする太線化手段とを有することによって、ストロークデータの方向に基づいて、線幅を細くしたり太くしたりすることができる。
【0048】
請求項13記載の発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手段を有することによって、文字認識率を向上することができる。
【0049】
請求項14記載の発明によれば、前記線幅変更手段は、当該ストロークデータから生成された線幅を規定する値及び記憶装置に記憶されている所定の線幅を規定する値のうちどちらか一方、小さい方の値を選択して線幅を決定することによって、より最適な線幅で文字画像を生成をすることができる。
【0050】
請求項15記載の発明によれば、前記ストロークデータから生成された線幅は、当該ストロークデータと隣接するストロークデータとの距離の2分の1未満であることによって、隣接するストロークと接触しない線幅を得ることができる。
【0051】
請求項16記載の発明によれば、当該ストロークデータと隣接するストロークデータとの距離と角度を算出する距離・角度算出手段を更に有し、該距離・角度算出手段により算出された距離に基づいて、前記ストロークデータから生成された線幅を決めることによって、位置関係に応じた最適な線幅を得ることができる。
【0052】
請求項17記載の発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更段階を有することによって、品質の良い文字画像を作製して、より精度の高い文字認識を行う文字認識方法を提供することができる。
【0053】
請求項18記載の発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更段階を有することによって、品質の良い文字画像を作製して、より精度の高い文字認識を行う文字認識方法を提供することができる。
【0054】
請求項19記載の発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手順をコンピュータに実行させることによって、品質の良い文字画像を作製して、より精度の高い文字認識を行う文字認識プログラムを提供することができる。
【0055】
請求項20記載の発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手順をコンピュータに実行させることによって、品質の良い文字画像を作製して、より精度の高い文字認識を行う文字認識プログラムを提供することができる。
【0056】
【発明の実施の形態】
(文字認識装置)
以下、本発明の実施の形態について図面に基づいて説明する。図5に本発明による文字認識装置30の一例を示す。図5の構成図では、説明に必要な構成を表し、説明に必要の無い構成を省略してある。以下の図においても同様である。
【0057】
文字認識装置30は、画像作成器31と、文字認識器34と、蓄積器35とから構成される。また、画像作成器31は、画像生成器32と、線幅変更器33とから構成される。
【0058】
文字認識装置30は、画像作成器31を用いて入力されたストロークデータから画像を作成する。全てのストロークデータに対して画像作成の処理を行うと、文字認識装置30は、文字認識器34を用いて、上記作成した画像の文字認識を行い、認識結果を蓄積部35に蓄積する。
【0059】
画像生成器32の詳細は、図7及び図16を用いて後述する。
【0060】
また、文字認識装置30の入力データとしてのストロークデータは、電磁誘導方式、超音波方式、静電方式等の2次元の手書き入力装置で得られるデータである。
【0061】
(ストロークデータのフォーマット)
図6は、ストロークデータのフォーマットである。ストロークデータは、座標の順序を表すシーケンスと、X座標と、Y座標と、座標を取得した時間を表すタイムスタンプと、筆記中であるか否かを表すペンアップ/ダウン(ペンダウンが筆記中)との5つから構成される。これが一座標を表すデータブロックであり、このデータブロックの集合がストロークデータである。
【0062】
図5における、画像作成器31は、入力された前記ストロークデータを用いてストローク画像を構成する。前記ストローク画像は、文字認識器34に入力され、文字認識器34は文字認識を行い、認識結果は蓄積器35に蓄積される。なお、文字認識は例えば「特開平10―171927号公報」に記載されている装置を利用することができる。
【0063】
(画像生成器(その1))
図7に図5の画像生成器32の構成を説明するための図(その1)を示す。図7は、図5の画像生成器32の一例である。画像生成器32は、領域判定器41と、バッファ42と、アドレス生成器43と、画像メモリ44と、レジスタ45とから構成されている。
【0064】
領域判定器41は、前記ストロークデータのX座標、Y座標それぞれの最大値及び最小値を検出し、文字が筆記されている矩形領域を検出する。検出した矩形領域の座標はレジスタ45へ転送され、文字認識器34で文字認識を行う際に利用される。
【0065】
バッファ42は、一座標を示すデータを一時的に記憶する遅延バッファである。領域判定器41から転送されてきた前記ストロークデータと、バッファ42で遅延されたストロークデータは、線幅変更器33に入力される。
【0066】
線幅変更器33は、入力された二つの座標((x1、y1)、(x2、y2))を基に、前記二つの座標を結ぶ直線の方向を算出し、その方向に基づいて前記二つの座標を結ぶ直線の線幅を変更する。なお、線幅変更器33の詳細は、図8を用いて後述する。
【0067】
アドレス生成器43は、線幅変更器33により指定された線幅と、領域判定器41から転送されたストロークデータと、バッファ42で遅延されたストロークデータとから、前記二つの座標((x1、y1)、(x2、y2))を結ぶ直線を描く座標を計算し、それに応じたアドレスを生成して画像メモリ44に書き込む。なお、アドレス生成器43の詳細は、図14を用いて後述する。
【0068】
画像メモリ44へのストロークデータの書き込みが終了すると、文字認識器34が動作を開始し、レジスタ45に格納されているストロークの存在する利用域情報を読み出して、文字認識に必要なデータを画像メモリ44から読み出して文字認識を行う。
【0069】
画像生成器32の動作を以下に説明する。画像生成器32は、領域判定器41を用いて、入力されたストロークデータのX座標、Y座標それぞれの最大値及び最小値を検出し、文字が筆記されている矩形領域を検出する。また、領域判定器41は、検出した矩形領域の座標をレジスタ45に転送する。転送された矩形領域の座標は、文字認識器34で文字認識を行う際に利用される。
【0070】
バッファ42は、一座標を示すデータを一時的に記憶し、データを遅延させる。画像生成器32入力されたストロークデータと、バッファ42で遅延されたストロークデータとを、線幅変更器33に入力する。線幅変更器33は、入力された二つの座標((x1、y1)、(x2、y2))を基に、前記二つの座標を結ぶ直線の方向を算出し、その方向に基づいて前記二つの座標を結ぶ直線の線幅を変更する。
【0071】
アドレス生成器43は、変更した線幅の値と、ストロークデータとから、画像メモリ44に書き込むためのアドレスを生成して、画像メモリ44に書き込む。
【0072】
画像メモリ44へのストロークデータの書き込みが終了すると、文字認識器34が動作を開始し、レジスタ45に格納されているストロークの存在する利用域情報を読み出して、文字認識に必要なデータを画像メモリ44から読み出して文字認識を行う。
【0073】
(線幅変更器)
図8に図7の線幅変更器33の構成を説明するための図を示す。線幅変更器33は、方向判定器51と、線幅演算器52と、レジスタ53とから構成される。なお、二つのストロークデータの構成要素である座標データをそれぞれ座標1、座標2とする。
【0074】
方向判定器51は、前記座標1、2を用いて座標1、2を結ぶ直線の方向を算出する。線幅演算器52は、方向判定器51が算出した方向に基づいて、座標1、2を結ぶ直線の線幅を演算する。レジスタ53には。線幅の初期値が設定されており、その値を増減させることにより線幅の変更を実現する。変更された線幅はアドレス生成器43へ入力される。なお、方向判定器51の詳細は、図9を用いて後述する。また、線幅演算器52の詳細は、図10、図11、図12、図13を用いて後述する。
【0075】
線幅変更器33の動作例を以下に示す。線幅変更器33は、方向判定器51を用いて、入力された座標1と座標2と結ぶ直線の方向を算出する。方向の算出が終了すると線幅変更器33は、線幅演算器52を用いて前記算出した方向に基づいてレジスタ53に設定されている線幅の初期値を増減させることにより変更する。
【0076】
(方向判定器)
図9に図8の方向判定器51の詳細な説明をするための図を示す。図9(a)は、方向判定器51の構成を説明するための図である。図9(b)は、角度算出器の角度算出方法の式である。図9(c)は、角度変換表テーブルである。
【0077】
方向判定器51は、角度算出器61と、角度変換器62とから構成されている。角度算出器61は、座標1(x1、y1)と、座標2(x2、y2)とが入力され、図9(b)に示される角度算出方法の式を用いて座標1(x1、y1)と座標2(x2、y2)とを結ぶ直線の角度θを算出する。
【0078】
角度変換器62は、角度算出器61で算出された角度θを、傾きの度合いを表す0〜3の値(傾き度合いθt)に変換する。角度θから傾き度合いθtへの変換は図9(c)のテーブルを実現する回路(図示せず)によって実行される。
【0079】
図9の動作例を以下に示す。方向判定器51は、入力された座標1(x1、y1)と座標2(x2、y2)とを結ぶ直線の角度θを角度算出器61を用いて、算出する。算出された角度θは、角度変換器62によって、傾き度合いθt(0〜3)に変更され、方向判定器51の出力となる。
【0080】
例えば、座標1(x1、y1)と座標2(x2、y2)とを結ぶ直線の角度が0度であったならば、角度変換器62は、図9(c)の角度変換表テーブルに基づいて、角度0度を傾き度合い2に変換して、方向判定器の出力とする。同様に、座標1(x1、y1)と座標2(x2、y2)とを結ぶ直線の角度が60度ならば、方向判定器の出力は1となり、座標1(x1、y1)と座標2(x2、y2)とを結ぶ直線の角度が90度ならば、方向判定器の出力は0となる。
【0081】
(線幅演算器52(その1))
図10に、図8の線幅演算器52の構成を説明するための図(その1)を示す。図10(a)は、図8の線幅演算器52の一例である。図10(b)は、傾き度合いθtと前記選択した線幅との関係を説明するための図である。
【0082】
図10(a)の線幅演算器52は、レジスタ71と、レジスタ72と、加算器73と、減算器74と、セレクタ75とから構成される。
【0083】
線幅演算器52には、図8のレジスタ53より、所定の線幅が初期値として入力される。
【0084】
加算器73は、図8のレジスタ53より取得した線幅の初期値に、レジスタ71より取得した値を加算して、セレクタ75へ入力する。
【0085】
減算器74は、図8のレジスタ53より取得した線幅の初期値からレジスタ72より取得した値を減算して、セレクタ75へ入力する。
【0086】
セレクタ75には、図8のレジスタ53より入力された線幅の初期値と、加算器73によって加算された線幅の値と、減算器74によって減算された線幅の値とが入力される。また、セレクタ75には、図8の方向判定器51によって判定された前記傾き度合いθtの値が入力される。
【0087】
セレクタ75は、入力された前記傾き度合いθtの値を基に、入力された前記3つの線幅の値(初期値と、加算された線幅の値と、減算された線幅の値)の中から1つの線幅を選択して、アドレス生成器43へ出力する。傾き度合いθtと選択する線幅との関係を以下、図10(b)を用いて説明する。
【0088】
図10(b)は、傾き度合いθtと前記選択した線幅との関係を説明するための図である。セレクタ75は、ストロークが水平(θt=2)に近ければ、減算した線幅(増減なしも含む)を選択する。ストロークが垂直(θt=0)に近ければ、加算した線幅(増減なしも含む)を選択する。上記以外の角度では、線幅の加算、減算を行っていない線幅を選択する。
【0089】
例えば、前記図10のセレクタ75は、θt=2ならば、減算器74からの入力値を選択して、θt=0ならば、加算器73からの入力値を選択する。θtが上記以外の値ならば、レジスタ53からの入力値を選択する。
【0090】
以下に図10(a)の線幅演算器52の動作例を示す。ここで、一例として図8のレジスタ53に設定されてある線幅の値を10、レジスタ71に設定されている値を5、レジスタ72に設定されている値を5とする。
【0091】
線幅演算器52は、図8のレジスタ53に設定されている線幅の値10を取得して、加算器73を用いてレジスタ71に設定されている値5を、前記線幅の値10に加算して、値15をセレクタ73に入力する。また、線幅演算器52は、減算器74を用いてレジスタ72に設定されている値5を、前記線幅の値10から減算して、値5をセレクタ73に入力する。
【0092】
セレクタ75には、図8のレジスタ53に設定されている線幅の値10と、加算器73により加算された値15及び減算器74により減算された値5が入力される。
【0093】
セレクタ75は、図9の方向判定器51から取得した前記θtの値が0、つまり図8の例では、座標1(x1、y1)と座標2(x2、y2)とを結ぶ直線の角度が90度だったならば、加算器73により加算された値15を選択して、図8のアドレス生成器43に出力する。
【0094】
また、図9の方向判定器51から取得した前記θtの値が1、つまり図8の例では、座標1(x1、y1)と座標2(x2、y2)とを結ぶ直線の角度が60度だったならば、図8のレジスタ53に設定されている線幅の値10を選択して、図8のアドレス生成器43に出力する。
【0095】
また、図9の方向判定器51から取得した前記θtの値が2、つまり図8の例では、座標1(x1、y1)と座標2(x2、y2)とを結ぶ直線の角度が0度だったならば、減算器74により減算された値5を選択して、図8のアドレス生成器43に出力する。
【0096】
(線幅演算器(その2))
図11に、図8の線幅演算器52の構成を説明するための図(その2)を示す。図11は、図8の線幅演算器52のその他の実施例である。
【0097】
線幅演算器52は、レジスタ81と、レジスタ82と、加算器83と、減算器84と、セレクタ85と、比較器86と、比較器87と、セレクタ88と、セレクタ89とから構成されている。
【0098】
図11の線幅演算器52は、図10において説明した「線幅演算器(その1)」に比べて比較器86と、比較器87と、セレクタ88と、セレクタ89とが新たに設けられている。
【0099】
図11の線幅演算器52は、図8のレジスタ53に設定されてある線幅の初期値と、閾値1と、閾値2(閾値1<閾値2)とを比較して、初期値として図8のレジスタ53に設定されてある線幅が、初めからある値(閾値2)より太ければ、加算器83で初期値の線幅にレジスタ81に設定されてある値を加算せず、初期値の線幅を加算器83からの出力とする。また、初期値として図8のレジスタ53に設定されてある線幅が、初めからある値(閾値1)より細ければ、減算器84で初期値の線幅からレジスタ82に設定されてある値を減算せず、初期値の線幅を減算器84からの出力とする。
【0100】
比較器86は、レジスタ53より入力された線幅の初期値と閾値1とを比較して、比較した結果をセレクタ88及びセレクタ89に入力する。同様に比較器87は、レジスタ53より入力された線幅の初期値と閾値2(閾値1<閾値2)とを比較して、比較した結果をセレクタ88及びセレクタ89に入力する。
【0101】
セレクタ88は、前記入力された比較結果を基に線幅の初期値が閾値1と閾値2との間の値ならば、レジスタ81の値を選択して加算器83へ出力する。同様に、線幅の初期値が閾値1より小さい値ならば、レジスタ81の値を選択して加算器83へ出力する。一方、線幅の初期値が閾値2より大きい値ならば、0の値を選択して加算器83へ出力する。
【0102】
セレクタ89は、前記入力された比較結果を基に線幅の初期値が閾値1と閾値2との間の値ならば、レジスタ82の値を選択して減算器84へ出力する。同様に、線幅の初期値が閾値2より大きい値ならば、レジスタ82の値を選択して減算器84へ出力する。一方、線幅の初期値が閾値1より小さい値ならば、0の値を選択して減算器84へ出力する。
【0103】
加算器83、減算器84、セレクタ85はそれぞれ図10の加算器73、減算器74、セレクタ75と同等の機能を有する。
【0104】
よって、図11の線幅演算器52は、図8のレジスタ53に設定されてある線幅の初期値と、閾値1と、閾値2(閾値1<閾値2)とを比較して、初期値として図8のレジスタ53に設定されてある線幅の値が、初めからある値(閾値2)より太ければ、加算器83で初期値の線幅の値にレジスタ81に設定されてある値を加算せず、初期値の線幅の値を加算器83からの出力とする。
【0105】
また、初期値として図8のレジスタ53に設定されてある線幅の値が、初めからある値(閾値1)より細ければ、減算器84で初期値の線幅の値からレジスタ82に設定されてある値を減算せず、初期値の線幅の値を減算器84からの出力とする。
【0106】
初期値として図8のレジスタ53に設定されてある線幅の値が、適切な線幅の範囲(閾値1以上、閾値2未満)にあるならば、加算器83で初期値の線幅の値にレジスタ81の値を加算して加算器83からの出力とする。また、減算器84では初期値の線幅の値からレジスタ82の値を減算して減算器84からの出力とする。
【0107】
以下に図11の線幅演算器52の動作例を示す。一例として、閾値1の値を8、閾値2の値を12、レジスタ81に設定されている値を5、レジスタ82に設定されている値を5とする。
【0108】
図11の線幅演算器52は、図8のレジスタ53に設定されてある初期値の線幅の値を取得する、例えば一例をして、該取得した値が10の場合、線幅演算器52は、比較器86及び比較器87を用いて、前記初期値の線幅の値10と、閾値1の値8及び閾値2の値12と比較する。セレクタ88は、前記初期値の値10が閾値1の値8以上閾値2の値12未満である場合、レジスタ81に設定されてある値5を取得して、加算器83に出力する。また、セレクタ89は、前記初期値の値10が閾値1の値8以上閾値2の値12未満である場合、レジスタ82に設定されてある値5を取得して、減算器84に出力する。
【0109】
加算器83は、前記初期値の値10にセレクタ88より取得した値5を加算して、値15をセレクタ85に出力する。減算器84は、前記初期値の値10からセレクタ89より取得した値5を減算して、値5をセレクタ85に出力する。
【0110】
セレクタ85には、前記初期値の値10と、加算器83が出力した値15及び減算器84が出力した値5が入力される。セレクタ85は、図10のセレクタ75と同等の機能を有する。
【0111】
また、図8のレジスタ53に設定されてある初期値の線幅の値が5だった場合、線幅演算器52は、比較器86及び比較器87を用いて、前記初期値の線幅の値5と、閾値1の値8及び閾値2の値12と比較する。セレクタ88は、前記初期値の値5が閾値1の値8未満である場合、レジスタ81に設定されている値5を取得して、加算器83に出力する。一方、セレクタ89は、前記初期値の値5が閾値1の値8未満である場合、0を減算器84に出力する。
【0112】
加算器83は、前記初期値の値5にセレクタ88より取得した値5を加算して、値10をセレクタ85に出力する。減算器84は、前記初期値の値5からセレクタ89より取得した値0を減算して、値5をセレクタ85に出力する。
【0113】
セレクタ88には、前記初期値の値5と、加算器84が出力した値10及び減算器84が出力した値5が入力される。上記と同様セレクタ88は、図10のセレクタ75と同等の機能を有する。
【0114】
また、図8のレジスタ53に設定されている初期値の線幅の値が15だった場合、線幅演算器52は、比較器86及び比較器87を用いて、前記初期値の線幅の値15と、閾値1の値8及び閾値2の値12と比較する。セレクタ88は、前記初期値の値15が閾値2の値12より大きい場合、0の値を加算器83に出力する。一方、セレクタ89は、前記初期値の値15が閾値2の値12より大きい場合、レジスタ82に設定されている値5を取得して、減算器84に出力する。
【0115】
加算器83は、前記初期値の値15にセレクタ88より取得した値0を加算して、値15をセレクタ85に出力する。減算器84は、前記初期値の値15からセレクタ89より取得した値5を減算して、値10をセレクタ85に出力する。
【0116】
セレクタ85には、前記初期値の値15と、加算器83が出力した値15及び減算器84が出力した値10が入力される。上記と同様セレクタ85は、図10のセレクタ75と同等の機能を有する。
【0117】
(線幅演算器(その3))
図12に、図8の線幅演算器52の構成を説明するための図(その3)を示す。図12は、図8の線幅演算器52のその他の実施例である。線幅演算器52は、レジスタ91と、レジスタ92と、乗算器93と、乗算器94と、セレクタ95とから構成される。
【0118】
図12の線幅演算器52は、図10を用いて説明した「線幅演算器(その1)」に比べて、図10の加算器73及び減算器74が、乗算器93及び乗算器94に置き換わっている。
【0119】
線幅演算器52には、図8のレジスタ53より、所定の線幅が初期値として入力される。
【0120】
乗算器93は、図8のレジスタ53より取得した線幅の初期値に、レジスタ91より取得した1を超える値を乗算して得た値をセレクタ95へ入力する。乗算器93は、図10の加算器73と同様に線幅の値を増加させる機能を有する。
【0121】
乗算器94は、図8のレジスタ53より取得した線幅の初期値に、レジスタ92より取得した0より大きく1未満の値を乗算して得た値をセレクタ95へ入力する。乗算器94は、図10の減算器74と同様に線幅の値を減少させる機能を有する。
【0122】
セレクタ95は、図10のセレクタ75と同等の機能を有する。
【0123】
以下に図12の線幅演算器52の動作例を示す。ここで、一例として図8のレジスタ53に設定されてある線幅の値を10、レジスタ91に設定されている値を1.5、レジスタ92に設定されている値を0.5とする。
【0124】
線幅演算器52は、図8のレジスタ53に設定されている線幅の値10を取得して、乗算器93を用いてレジスタ91に設定されている値1.5を、前記線幅の値10に乗算して、値15をセレクタ95に入力する。また、線幅演算器52は、乗算器94を用いてレジスタ92に設定されている値0.5を、前記線幅の値10に乗算して、値5をセレクタ95に入力する。
【0125】
セレクタ95には、図8のレジスタ53に設定されている線幅の値10と、乗算器93により乗算された値15及び乗算器94により乗算された値5が入力される。セレクタ95は、図10のセレクタ75と同等の機能を有する。
【0126】
(線幅演算器(その4))
図13に、図8の線幅演算器52の構成を説明するための図(その4)を示す。図13は、図8の線幅演算器52のその他の実施例である。線幅演算器52は、レジスタ101と、レジスタ102と、乗算器103と、乗算器104と、セレクタ105と、比較器106と、比較器107と、セレクタ108と、セレクタ109とから構成されている。
【0127】
図13の線幅演算器52は、図11を用いて説明した「線幅演算器(その2)」に比べて、図11の加算器83及び減算器84が、乗算器103及び乗算器104に置き換わっている。
【0128】
図13の線幅演算器52は、図8のレジスタ53に設定されてある線幅の初期値と、閾値1と、閾値2(閾値1<閾値2)とを比較して、初期値として図8のレジスタ53に設定されてある線幅が、初めからある値(閾値2)より太ければ、乗算器103で初期値の線幅に1を乗算して、初期値の線幅を乗算器103からの出力とする。また、初期値として図8のレジスタ53に設定されてある線幅が、初めからある値(閾値1)より細ければ、乗算器104で初期値の線幅に1を乗算して、初期値の線幅を乗算器104からの出力とする。
【0129】
以下に図13の線幅演算器52の動作例を示す。一例として、閾値1の値を8、閾値2の値を12、レジスタ101に設定されている値を1.5、レジスタ102に設定されている値を0.5とする。
【0130】
図13の線幅演算器52は、図8のレジスタ53に設定されてある初期値の線幅の値を取得する、例えば一例をして、該取得した値が10だった場合、線幅演算器52は、比較器106及び比較器107を用いて、前記初期値の線幅の値10と、閾値1の値8及び閾値2の値12と比較する。セレクタ108は、前記初期値の値10が閾値1の値8以上閾値2の値12未満である場合、レジスタ101に設定されてある値1.5を取得して、乗算器103に出力する。また、セレクタ109は、前記初期値の値10が閾値1の値8以上閾値2の値12未満である場合、レジスタ102に設定されてある値0.5を取得して、乗算器104に出力する。
【0131】
乗算器103は、前記初期値の値10にセレクタ108より取得した値1.5を乗算して、値15をセレクタ105に出力する。乗算器104は、前記初期値の値10にセレクタ109より取得した値0.5を乗算して、値5をセレクタ105に出力する。
【0132】
セレクタ105には、前記初期値の値10と、乗算器103が出力した値15及び乗算器104が出力した値5が入力される。セレクタ105は、図10のセレクタ75と同等の機能を有する。
【0133】
また、図8のレジスタ53に設定されてある初期値の線幅の値が5だった場合、線幅演算器52は、比較器106及び比較器107を用いて、前記初期値の線幅の値5と、閾値1の値8及び閾値2の値12と比較する。セレクタ108は、前記初期値の値5が閾値1の値8未満である場合、レジスタ101に設定されている値1.5を取得して、乗算器103に出力する。一方、セレクタ109は、前記初期値の値5が閾値1の値8未満である場合、1を乗算器104に出力する。
【0134】
乗算器103は、前記初期値の値5にセレクタ108より取得した値1.5を乗算して、値7.5をセレクタ105に出力する。乗算器104は、前記初期値の値5からセレクタ109より取得した値1を乗算して、値5をセレクタ105に出力する。
【0135】
セレクタ105には、前記初期値の値5と、乗算器103が出力した値7.5及び乗算器104が出力した値5が入力される。上記と同様セレクタ105は、図10のセレクタ75と同等の機能を有する。
【0136】
また、図8のレジスタ53に設定されている初期値の線幅の値が15だった場合、線幅演算器52は、比較器106及び比較器107を用いて、前記初期値の線幅の値15と、閾値1の値8及び閾値2の値12と比較する。セレクタ108は、前記初期値の値15が閾値2の値12より大きい場合、1の値を乗算器103に出力する。一方、セレクタ109は、前記初期値の値15が閾値2の値12より大きい場合、レジスタ102に設定されている値0.5を取得して、乗算器104に出力する。
【0137】
乗算器103は、前記初期値の値15にセレクタ108より取得した値1を乗算して、値15をセレクタ105に出力する。乗算器104は、前記初期値の値15にセレクタ109より取得した値0.5を乗算して、値7.5をセレクタ105に出力する。
【0138】
セレクタ105には、前記初期値の値15と、乗算器103が出力した値15及び乗算器104が出力した値7.5が入力される。上記と同様セレクタ105は、図10のセレクタ75と同等の機能を有する。
【0139】
(アドレス生成器(その1))
図14に、図8のアドレス生成器43の構成を説明するための図を示す。アドレス生成器43は、ペンダウン判定器111と、ペンダウン判定器112と、AND回路113と、描画座標生成器114と、エンコーダ115とから構成される。
【0140】
アドレス生成器43には、座標1(始点)と、座標2(終点)と、線幅の値が入力される。ペンダウン判定器111は、座標1が筆記中のデータかどうかを判定する。同様にペンダウン判定器112は、座標2が筆記中のデータかどうかを判定する。例えば、図6に示した如く、ストロークデータにはペンアップ/ペンダウンの情報を現すデータが含まれているため、ペンダウン判定器111及びペンダウン判定器112は、筆記中のデータかどうかを判定することができる。
【0141】
エンコーダ115は、前記両座標が筆記中ならば、有効となり画像メモリ44へのデータの書き込みが可能となる。前記両座標が筆記中でないならば、無効となって画像メモリ44へのデータの書き込みはできなくなる。
【0142】
描画座標生成器114は、座標1、座標2、線幅の値を入力データとして、線を書くべき座標を計算する。
【0143】
(描画座標生成器)
図15は、図14の描画座標生成器114の動作例を説明するための図である。図15では、座標1と座標2との間を線幅の値3の直線で画像を描く場合を例にとって説明を行う。
【0144】
描画座標生成器114は、座標1(始点)と座標2(終点)とを直線で結び、通過する座標を算出する(図15における、点線で描かれた枠線)。前記算出された座標を中心として3×3画素の大きさの領域(図15における、網掛け部分)の座標を始点(座標1)から終点(座標2)までのすべての通過する座標(図15における、点線で描かれた枠線)に対して算出し、エンコーダ115へ出力する。
【0145】
図14のエンコーダ115は、入力された座標の値から書き込むべき画像メモリのアドレスを算出して、画像メモリへ値を書き込むためのアドレスをふる。
【0146】
(画像生成器(その2))
図16は、図5の画像生成器32の構成を説明するための図(その2)である。画像生成器32は、領域判定器41と、メモリ121と、アドレス生成器122と、画像メモリ44と、レジスタ45とから構成されている。ここで、図7の画像作成器32と同一部分には同一番号を付して説明を省略する。
【0147】
図7の画像作成器32は、ストロークデータの方向に基づいて画像を作成したが、図16の画像作成器32は、隣接するストロークデータとの位置関係に基づいて画像を作成する。図16の画像作成器32は、線幅の値の変更を、アドレス作成器122で行っている。
【0148】
メモリ121には、画像生成器32に入力される全てのストロークデータが一旦記憶される。また、必要に応じてアドレス生成器122から、メモリ121に記憶されているストロークデータが読み出される。
【0149】
アドレス生成器122は、メモリ121に記憶されているストロークデータを読み出して、複数のストロークデータの相対的な位置関係から文字を構成する線幅を決定して、画像メモリ44に書き込むためのアドレスを生成する。アドレス生成器122の詳細は、図17を用いて後述する。
【0150】
画像生成器32の動作を以下に説明する。画像生成器32は、領域判定器41を用いて、入力されたストロークデータのX座標、Y座標それぞれの最大値及び最小値を検出し、文字が筆記されている矩形領域を検出する。また、領域判定器41は、検出した矩形領域の座標をレジスタ45に転送する。転送された矩形領域の座標は、文字認識器34で文字認識を行う際に利用される。
【0151】
また、画像生成器32は、領域判定器41を用いて、入力された全てのストロークデータを、一旦メモリ121に保存する。画像生成器32は、アドレス生成器122を用いて、メモリ121からストロークデータを読み出して、該読み出したストロークデータと他のストロークデータとの相対的な位置関係から文字を構成する線幅を決定する。アドレス生成器122は、決定した線幅の値と、ストロークデータとから、画像メモリ44に書き込むためのアドレスを生成して、画像メモリ44に書き込む。
【0152】
画像メモリ44へのストロークデータの書き込みが終了すると、文字認識器34が動作を開始し、レジスタ45に格納されているストロークの存在する利用域情報を読み出して、文字認識に必要なデータを画像メモリ44から読み出して文字認識を行う。
【0153】
(アドレス生成器(その2))
図17は、図16のアドレス生成器122の構成を説明するための図である。アドレス生成器122は、データ読み出し器130と、ペンダウン判定器131と、ペンダウン判定器132と、AND回路133と、ペンダウン判定器134と、ペンダウン判定器135と、AND回路136と、平行・距離判定器137と、レジスタ138と、1/3器139と、最小値セレクタ140と、描画座標生成器141と、エンコーダ142とから構成されている。
【0154】
アドレス生成器122は、図6に示されるストロークデータの座標情報、タイムスタンプ情報及びペンアップ/ダウン情報を用いてi番目のストロークデータ(座標i1と座標i2)とその他の全てのストロークデータとの位置関係を調べて、i番目のストロークデータの線幅を決定する。また、アドレス生成器122は、線幅の決定後、描画する座標を生成して、該生成した座標に応じた画像メモリ44のアドレスを生成して、画像メモリ44に値を書き込む。
【0155】
データ読み出し器130は、図16に示したメモリ121に記憶されているストロークデータを読み出す。i番目のストロークデータ(座標i1と座標i2)と、j番目のストロークデータ(座標j1と座標j2)とが読み出される。
【0156】
ペンダウン判定器131、132、134、135は、それぞれ座標i1、i2、j1、j2がペンダウン(筆記中)かどうかを調べて全ての座標においてペンダウンであるならば、平行・距離判定器137を有効にする。
【0157】
平行・距離判定器137は、二つのストローク(座標i1から座標i2へのストロークと、座標j1から座標j2へのストローク)が平行かどうかを判定し、平行と判定されたならば、二つのストロークの距離を計算する。平行・距離判定器137は、i=jでない全てのjに対して距離の計算を行って、その内の最小の距離を出力する。平行・距離判定器137の詳細は、図18を用いて後述する。
【0158】
1/3器139は、平行・距離判定器137が出力した二つのストローク間の距離の最小値を1/3にする。最小値セレクタ140は、前記1/3にされた距離か、レジスタ138に記憶されている線幅の初期値かどちらか小さいほうを選択して取得する。
【0159】
描画座標生成器141は、最小値セレクタ140に選択された線幅と、座標i1と、座標i2とを用いてストローク画像の描画に用いる座標を生成する。なお、描画座標生成器141は、図14の描画座標生成器114と同等の機能を有する。
【0160】
エンコーダ142は、描画座標生成器141で生成された座標から画像メモリ44に書き込むためのアドレスを生成する。
【0161】
アドレス生成器122の動作例を以下に示す。アドレス生成器122は、データ読み出し器130を用いてi番目のストロークデータ(座標i1と座標i2)と、j番目のストロークデータ(座標j1と座標j2)とを図16に示したメモリ121から読み出す。
【0162】
アドレス生成器122は、ペンダウン判定器131、132、134、135を用いて、前記読み出した座標i1、i2、j1、j2がそれぞれペンダウン(筆記中)かどうかを調べて全ての座標においてペンダウンであるならば、平行・距離判定器137を有効にする。
【0163】
平行・距離判定器137は、二つのストローク(座標i1から座標i2へのストロークと、座標j1から座標j2へのストローク)が平行かどうかを判定し、平行と判定されたならば、二つのストロークの距離を計算する。平行・距離判定器137は、i=jでない全てのjに対して距離の計算を行って、その内の最小の距離を出力する。
【0164】
出力された最小の距離は、1/3器139によって1/3にされ、最小値セレクタ140は、前記1/3にされた距離とレジスタ138に記憶されている値とを比較して、小さいほうの値を線幅として描画座標生成器に入力する。
【0165】
描画座標生成器141は、最小値セレクタ140に選択された線幅と、座標i1と、座標i2とを用いてストローク画像の描画に用いる座標を生成する。アドレス生成器122は、座標の生成後、エンコーダ142を用いて該生成した座標に応じた画像メモリ44のアドレスを生成して、画像メモリ44に値を書き込む。
【0166】
(平行・距離判定器)
図18に、図17の平行・距離判定器137の構成を説明するための図を示す。平行・距離判定器137は、角度算出器151と、角度算出器152と、減算器153と、比較器154と、距離算出器155と、距離算出器156と、距離算出器157と、距離算出器158と、最小値算出器159と、レジスタ160と、比較器161と、AND回路162とから構成されている。
【0167】
角度算出器151は、座標i1と、座標i2とを結ぶ直線の傾き(角度)θiを計算する。同様に角度算出器152は、座標j1と、座標j2とを結ぶ直線の傾き(角度)θjを計算する。角度算出器151と、角度算出器152とは、図9の角度算出器61と同等の機能を有する。
【0168】
減算器153は、前記θiとθjとの差分、|θi―θj|を算出する。比較器154は、減算器153で算出された差分と所定の閾値とを比較する。比較器154は、前記差分(|θi―θj|)の方が閾値より小さければ平行を、そうでなければ非平行を表す信号を出力する。
【0169】
距離算出器155は、座標i1と座標j1との距離を、距離算出器156は、座標i1と座標j2との距離を、距離算出器157は、座標i2と座標j1との距離を、距離算出器158は、座標i2と座標j2との距離をそれぞれ算出する。
【0170】
最小値算出器159は、前記算出した4つの距離の内、最小の距離を出力する。
【0171】
比較器161は、最小値算出器159より算出された距離の最小値とレジスタ160に記憶されている現時点での最小値とを比較する。比較器161は、最小値算出器159で算出した距離の方がレジスタ160の記憶されている値より小さく、且つAND回路162を用いて平行であるという判定がなされれば、最小値算出器159で算出された距離で、レジスタ160の値を更新する。レジスタ160の値は、平行・距離判定器137の出力値となる。
【0172】
平行・距離判定器137の動作例を以下に示す。平行・距離判定器137は、角度算出器151を用いて、座標i1と、座標i2とを結ぶ直線の傾き(角度)θiを計算する。同様に、平行・距離判定器137は、角度算出器152を用いて、座標j1と、座標j2とを結ぶ直線の傾き(角度)θjを計算する。
【0173】
続いて平行・距離判定器137は、減算器153を用いて、前記θiとθjとの差分、|θi―θj|を算出する。また比較器154では、減算器153で算出された差分と所定の閾値とを比較する。比較器154は、前記差分(|θi―θj|)の方が閾値より小さければ平行を、そうでなければ非平行を表す信号を出力する。
【0174】
例えば、閾値を角度5度とした場合、前記θiとθjとの差分、|θi―θj|が5度より小さければ、二つのストロークデータは、平行であると判定し、5度以上であれば二つのストロークデータは非平行である判定する。
【0175】
また、平行・距離判定器137は、距離算出器155、156、157、158を用いて、それぞれ、座標i1と座標j1との距離、座標i1と座標j2との距離、座標i2と座標j1との距離、座標i2と座標j2との距離を算出する。続いて、平行・距離判定器137は、最小値算出器159を用いて前記算出した距離の最小値を出力する。
【0176】
平行・距離判定器137の動作例を以下に示す。平行・距離判定器137は、比較器161を用いて、最小値算出器159より算出された距離の最小値とレジスタ160に記憶されている現時点での最小値とを比較する。比較器161は、最小値算出器159で算出した距離の方がレジスタ160の記憶されている値より小さく、且つAND回路162を用いて平行であるという判定がなされれば、最小値算出器159で算出された算出された距離で、レジスタ160の値を更新する。レジスタ160の値は、平行・距離判定器137の出力値となる。
【0177】
(画像作成器における画像作成処理のフローチャート(その1))
以下では、画像生成処理の一例を、フローチャートを用いて説明する。図19は、図7の画像作成器32における画像生成処理の一例を、フローチャートを用いて説明するための図である。
【0178】
図19において、ステップS1では、図7の画像作成器32はストロークの始点である座標1を取得する。ステップS1に引き続きステップS2に進み、ステップS2では、図7の画像作成器32は、ストロークの終点である座標2を取得する。
【0179】
ステップS2に引き続き、ステップS3に進み、ステップS3では、図7の領域判定器41が、前記座標1と前記座標2とのX座標、Y座標それぞれの最大値及び最小値を検出し、前記座標1と前記座標2とを包含する矩形領域を算出する。
【0180】
ステップS3に引き続き、ステップS4に進み、ステップS4では、図7の線幅変更器33が、前記座標1と前記座標2とを結ぶ直線の方向に基づいて、線幅を変更する。なお、本ステップの詳細は、図20を用いて後述する。
【0181】
ステップS4に引き続き、ステップS5に進み、ステップS5では、図7のアドレス生成器43が、前記座標1と、前記座標2と、前記線幅とより、ストローク画像の生成を行う。
【0182】
ステップS5に引き続き、ステップS6に進み、ステップS6では、全ての座標に対して処理が終了したかどうかを判定する。処理が終了したと判定すると(ステップS6においてYES)、ステップS7に進み、処理が終了していないと判定すると(ステップS6においてNO)、ステップS8に進む。
【0183】
ステップS7では、図7の文字認識装置34が、文字認識を行って、終了する。ステップS8では、前記座標1と前記座標2とを置き換えて前記ステップS2からの処理を繰り返す。なお、ステップS7は、例えば、「特開平4―2055281号公報」「文字認識方法」や、「特開平4―47486号公報」「文字認識方法」等の方法を用いて文字認識を行う。
【0184】
(線幅変更器における線幅変更処理のフローチャート)
図20に図8の線幅変更器33における線幅変更処理(前記ステップS4)の一例を、フローチャートを用いて説明するための図を示す。
【0185】
図20において、ステップS11では、図8の方向判定器51が、ストロークの方向を算出する。なお、本ステップの詳細は、図21を用いて後述する。
【0186】
ステップS11に引き続き、ステップS12に進み、ステップS12では、図8の線幅演算器52が、前記ステップS11にて算出した方向に基づいて線幅の変更を行う。なお、本ステップの詳細は、図22、図23、図24及び図25を用いて後述する。
【0187】
(方向判定器における方向判定処理のフローチャート)
図21に、図9の方向判定器51における方向判定処理(前記ステップS11)の一例を、フローチャートを用いて説明するための図を示す。図21において、ステップS21では、図9の方向判定器51が座標1(x1、y1)と、座標2(x2、y2)とを取得する。
【0188】
ステップS21に引き続き、ステップS22に進み、ステップS22では、図9の角度算出器61が、前記ステップS21にて入力された座標1(x1、y1)と、座標2(x2、y2)とを結ぶ直線の角度θを、図9(b)で示した角度算出方法の式を用いて算出する。
【0189】
ステップS22に引き続き、ステップS23に進み、ステップS23では、図9の角度変換器62が、前記ステップS21にて算出した角度θを、図9(c)に示した角度変換表テーブルを用いて傾き度合いθt(0〜3の整数値)に変換する。
【0190】
(線幅演算器における線幅演算処理のフローチャート(その1))
図22に、図10の線幅演算器52における線幅演算処理(前記ステップS12)の一例を、フローチャートを用いて説明するための図を示す。
【0191】
図22において、ステップS31では、図8のレジスタ53より、線幅演算器52に線幅の初期値が入力される。ステップS31に引き続きステップS32に進み、ステップS32では、図8の方向判定器51より、線幅演算器52に前記傾き度合いθtが入力される。
【0192】
ステップS32に引き続き、ステップS33に進み、ステップS33では、図10のセレクタ75が、前記θtが0(ゼロ)かどうかを判定する。θtが0であると判定すると(ステップS33においてYES)、ステップS35に進み、θtが0でないと判定すると(ステップS33においてNO)、ステップS34に進む。
【0193】
ステップS34では、図10の加算器73が、所定の値を線幅に加算して、前記線幅を増加させて線幅演算処理を終了する。
【0194】
ステップS35では、図10のセレクタ75が、前記θtが2かどうかを判定する。θtが2であると判定すると(ステップS35においてYES)、ステップS36に進み、θtが2でないと判定すると(ステップS35においてNO)、線幅演算処理を終了する。
【0195】
ステップS36では、図10の減算器74が、前記線幅から所定の値を減算して(減算結果の下限値を1とする)、前記線幅を減少させて線幅演算処理を終了する。
【0196】
(線幅演算器における線幅演算処理のフローチャート(その2))
図23に、図11の線幅演算器52における線幅演算処理(前記ステップS12)の他の例を、フローチャートを用いて説明するための図を示す。
【0197】
図23において、ステップS41では、図8のレジスタ53より、図11の線幅演算器52に線幅の初期値が入力される。ステップS41に引き続きステップS42に進み、ステップS42では、図8の方向判定器51より、図11の線幅演算器52に前記傾き度合いθtが入力される。
【0198】
ステップS42に引き続き、ステップS43に進み、ステップS43では、図11の比較器86及び比較器87が、図8のレジスタ53より取得した線幅の初期値が所定の範囲内(閾値1以上、閾値2以下)にあるかどうかを判定する。前記線幅の初期値が所定の範囲内にあると判定すると(ステップS43においてYES)、ステップS44に進み、前記線幅の初期値が所定の範囲内にないと判定すると(ステップS43においてNO)、ステップS48に進む。
【0199】
ステップS44では、図11のセレクタ85が、前記θtが0(ゼロ)かどうかを判定する。前記θtが0であると判定すると(ステップS44においてYES)、ステップS45に進み、前記θtが0でないと判定すると(ステップS44においてNO)、ステップS46に進む。
【0200】
ステップS45では、加算器83が、前記線幅に所定の値を加算して、前記線幅を増加させて線幅演算処理を終了する。
【0201】
ステップS46では、図11のセレクタ85が、前記θtが2かどうかを判定する。前記θtが2であると判定すると(ステップS46においてYES)、ステップS47に進み、前記θtが2ではないと判定すると(ステップS46においてNO)、線幅演算処理を終了する。
【0202】
ステップS47では、図11の減算器84が、前記線幅の初期値から所定の値を減算して、線幅を減少させて線幅演算処理を終了する。
【0203】
ステップS48では、比較器86が、前記線幅の初期値が所定の範囲より大きいかどうかを判定する。前記線幅の初期値が所定の範囲より大きいと判定すると(ステップS48においてYES)、ステップS49に進み、前記線幅が所定の範囲より大きくないと判定すると(ステップS48においてNO)、ステップS51に進む。
【0204】
ステップS49では、図11のセレクタ85が、前記θtが2かどうかを判定する。前記θtが2であると判定すると(ステップS49においてYES)、ステップS50に進み、前記θtが2ではないと判定すると(ステップS49においてNO)、線幅演算処理を終了する。
【0205】
ステップS50では、図11の減算器84が、前記線幅の初期値から所定の値を減算して、線幅を減少させて線幅演算処理を終了する。
【0206】
ステップS51では、図11のセレクタ85が、前記θtが0(ゼロ)かどうかを判定する。前記θtが0であると判定すると(ステップS51においてYES)、ステップS52に進み、前記θtが0でないと判定すると(ステップS51においてNO)、線幅演算処理を終了する。
【0207】
ステップS52では、図11の加算器83が、前記線幅の初期値に所定の値を加算して、線幅を増加させて線幅演算処理を終了する。
【0208】
(線幅演算器における線幅演算処理のフローチャート(その3))
図24に、図12の線幅演算器52における線幅演算処理(前記ステップS12)の一例を、フローチャートを用いて説明するための図を示す。
【0209】
図24において、ステップS61では、図8のレジスタ53より、図12の線幅演算器52線幅の初期値が入力される。ステップS61に引き続きステップS62に進み、ステップS62では、図8の方向判定器51より、図12の線幅演算器52に前記傾き度合いθtが入力される。
【0210】
ステップS62に引き続き、ステップS63に進み、ステップS63では、図12のセレクタ前記θtが0(ゼロ)かどうかを判定する。θtが0であると判定すると(ステップS63においてYES)、ステップS65に進み、θtが0でないと判定すると(ステップS63においてNO)、ステップS64に進む。
【0211】
ステップS64では、図12の乗算器93が、1より大きい所定の値を前記線幅の初期値に乗算して、線幅を増加させて線幅演算処理を終了する。
【0212】
ステップS65では、図12のセレクタ95が、前記θtが2かどうかを判定する。θtが2であると判定すると(ステップS65においてYES)、ステップS66に進み、θtが2でないと判定すると(ステップS65においてNO)、線幅演算処理を終了する。
【0213】
ステップS66では、図12の乗算器94が、1より小さい所定の値を前記線幅の初期値に乗算して(乗算結果の下限値を1とする)、線幅を減少させて線幅演算処理を終了する。
【0214】
(線幅演算器における線幅演算処理のフローチャート(その4))
図25に、図13の線幅演算器52における線幅演算処理(前記ステップS12)の一例を、フローチャートを用いて説明するための図を示す。
【0215】
図25において、ステップS71では、図8のレジスタ53より、図13の線幅演算器52に線幅の初期値が入力される。ステップS71に引き続きステップS72に進み、ステップS72では、図8の方向判定器51より、図13の線幅演算器52に前記傾き度合いθtが入力される。
【0216】
ステップS72に引き続き、ステップS73に進み、ステップS73では、図13の比較器106及び比較器107が、前記線幅の初期値が所定の範囲内(閾値1以上閾値2以下)にあるかどうかを判定する。前記線幅の初期値が所定の範囲内にあると判定すると(ステップS73においてYES)、ステップS74に進み、前記線幅が所定の範囲内にないと判定すると(ステップS73においてNO)、ステップS78に進む。
【0217】
ステップS74では、図13のセレクタ105が、前記θtが0(ゼロ)かどうかを判定する。前記θtが0であると判定すると(ステップS74においてYES)、ステップS75に進み、前記θtが0でないと判定すると(ステップS74においてNO)、ステップS76に進む。
【0218】
ステップS75では、図13の乗算器103が、前記線幅の初期値に1より大きい所定の値を乗算して、線幅を増加させて線幅演算処理を終了する。
【0219】
ステップS76では、図13のセレクタ105が、前記θtが2かどうかを判定する。前記θtが2であると判定すると(ステップS76においてYES)、ステップS77に進み、前記θtが2ではないと判定すると(ステップS76においてNO)、線幅演算処理を終了する。
【0220】
ステップS77では、図13の乗算器104が、前記線幅の初期値に1より小さい所定の値を乗算して、線幅を減少させて線幅演算処理を終了する。
【0221】
ステップS78では、図13の比較器107が、前記線幅の初期値が所定の範囲(閾値2)より大きいかどうかを判定する。前記線幅が所定の範囲より大きいと判定すると(ステップS78においてYES)、ステップS79に進み、前記線幅が所定の範囲より大きくないと判定すると(ステップS78においてNO)、ステップS81に進む。
【0222】
ステップS79では、図13のセレクタ105が、前記θtが2かどうかを判定する。前記θtが2であると判定すると(ステップS79においてYES)、ステップS80に進み、前記θtが2ではないと判定すると(ステップS79においてNO)、線幅演算処理を終了する。
【0223】
ステップS80では、図13の乗算器104が、前記線幅に1より小さい所定の値を乗算して、前記線幅を減少させて線幅演算処理を終了する。
【0224】
ステップS81では、図13のセレクタ105が、前記θtが0(ゼロ)かどうかを判定する。前記θtが0であると判定すると(ステップS81においてYES)、ステップS82に進み、前記θtが0でないと判定すると(ステップS81においてNO)、線幅演算処理を終了する。
【0225】
ステップS82では、図13の乗算器103が、前記線幅の初期値に1より大きい所定の値を乗算して、前記線幅を増加させて線幅演算処理を終了する。
【0226】
(アドレス生成器におけるストローク画像生成処理のフローチャート)
図26に図14のアドレス生成器43におけるストローク画像生成処理(前記ステップS5)の一例を、フローチャートを用いて説明するための図を示す。
【0227】
図26において、ステップS91では、ペンダウン判定器111とペンダウン判定器112とが前記座標1と前記座標2とが共にペンダウン(筆記中)であるかどうかを判定する。ペンダウンであると判定すると(ステップS92においてYES)、ステップS92に進み、ペンダウンでないと判定すると(ステップS92においてNO)、ストローク画像生成処理を終了する。
【0228】
ステップS92では、描画座標生成器114が描画座標を生成する。ステップS92に引き続いて、ステップS93に進み、ステップS93では、エンコーダ115が、前記ステップS92において生成した座標の値から画像メモリ44に書き込むべきアドレスを算出して、アドレスをふる。
【0229】
ステップS93に引き続いて、ステップS94に進み、ステップS94では、前記ステップS93においてふったアドレスに値を書き込む。
【0230】
(画像生成器における画像生成処理のフローチャート(その2))
図27に、図16の画像生成器32における画像生成処理の一例を、フローチャートを用いて説明するための図を示す。
【0231】
図27において、ステップS101では、図16の領域判定器41が、ストロークデータから、全座標のX座標及びY座標の最小値、最大値を求める。
【0232】
ステップS101に引き続き、ステップS102に進み、ステップS102では、図16の領域判定器41が、前記ステップS101において算出した全座標データを前記メモリ121に一旦保存する。
【0233】
ステップS102に引き続き、ステップS103に進み、ステップS103では、図16のアドレス生成器122が、前記ステップS102において、保存した全画像データを読み出して、ストローク画像の生成を行う。
【0234】
ステップS103に引き続き、ステップS104に進み、ステップS104では、図16の文字認識装置34が、前記ステップS103において作成したストローク画像の文字認識を行う。なお、ステップS104における文字認識は上述した如く、「特開平 4―2055281号公報」又は「特開平 4―47486号公報」等の記載されている方法を用いて行う。
【0235】
(アドレス生成器におけるストローク画像生成処理のフローチャート)
図28に図17のアドレス生成器122におけるストローク画像生成処理(前記ステップS103)の一例を、フローチャートを用いて説明するための図を示す。
【0236】
図28において、ステップS111では、変数iに1を代入する。ステップS111に引き続き、ステップS112に進み、ステップS112では、図17のデータ読み出し器130が、メモリ121に記憶されているi番目と(i+1)番目の座標データ(ストローク1)を読み出す。
【0237】
ステップS112に引き続き、ステップS113に進み、ステップS113では、図17のペンダウン判定器131とペンダウン判定器132とが、前記読み出したi番目の座標と、(i+1)番目の座標とが共にペンダウン(筆記中)であるかどうかを判定する。共にペンダウンであると判定すると(ステップS113においてYES)、ステップS116に進み、どちらか一方でもペンダウンでないと判定すると(ステップS113においてNO)、ステップS114に進む。
【0238】
ステップS114では、図17の描画座標生成器141が、処理すべき前記ストローク1の画像生成処理が終了したかどうかを判定する。終了したと判定すると(ステップS114においてYES)、ストローク画像生成処理を終了して、終了していないと判定すると(ステップS114においてNO)、ステップS115に進む。ステップS115では、変数iをインクリメントして、前記ステップS112からの処理を再び繰り返す。
【0239】
ステップS116では、変数jに1を代入する。ステップS116に引き続きステップS117に進み、ステップS117では、図17のデータ読み出し器130が、図16のメモリ121に記憶されているi=jでないj番目と(j+1)番目の座標データ(ストローク2)を読み出す。
【0240】
ステップS117に引き続き、ステップS118に進み、ステップS118では、図17のペンダウン判定器134と、ペンダウン判定器135とが、前記読み出したj番目の座標と、(j+1)番目の座標とが共にペンダウン(筆記中)であるかどうかを判定する。共にペンダウンであると判定すると(ステップS118においてYES)、ステップS119に進み、どちらか一方でもペンダウンでないと判定すると(ステップS118においてNO)、ステップS121に進む。
【0241】
ステップS119では、図17の平行・距離判定器137が、前記ストローク1と前記ストローク2とが平行かどうかを判定する。平行であると判定すると(ステップS119においてYES)、ステップS120に進み、平行でないと判定すると(ステップS119においてNO)、ステップS121に進む。
【0242】
ステップS120では、図17の平行・距離判定器137が、前記ストローク1と前記ストローク2との距離を算出して、ストローク1と他のストロークとの最小距離の更新を行う。
【0243】
ステップS121では、処理すべき前記ストローク2の画像生成処理が終了したかどうかを判定する。終了したと判定すると(ステップS121においてYES)、ステップS123に進み、終了していないと判定すると(ステップS121においてNO)、ステップS122に進む。ステップS122では、変数jをインクリメントして、前記ステップS117からの処理を再び繰り返す。
【0244】
ステップS123では、図17の1/3器139が、線幅を前記ストローク1と他のストロークとの最小距離の1/3とする。ここで、前記ストローク1に平行なストロークが存在しない場合は、前記ステップS120を実行していないので、最小距離を算出することができないが、図17のレジスタ138等に予め所定の値を最小距離の初期値として設定しておくことで、この値を最小距離とすることができる。
【0245】
ステップS123に引き続き、ステップS124に進み、ステップS124では、図17の描画座標生成器141が、前記ストローク1の描画座標を生成する。ステップS124に引き続き、ステップS125に進み、ステップS125では、図17のエンコーダ142が、前記ステップS123にて生成した描画座標から、画像メモリ44に書き込むためのアドレスを生成する。
【0246】
ステップS125に引き続き、ステップS126に進み、ステップS126では、図17のエンコーダ142が、前記ステップS125で生成したアドレスにストローク画像を書き込む。
【0247】
ステップS126に引き続き、ステップS127に進み、ステップS127では、図17の描画座標生成器141が、処理すべき前記ストローク1の画像生成処理が終了したかどうかを判定する。終了したと判定すると(ステップS127においてYES)、ストローク画像生成処理を終了して、終了していないと判定すると(ステップS127においてNO)、前記ステップS115に進む。
【0248】
(平行・距離判定器における平行判定処理のフローチャート)
図29に、図18の平行・距離判定器137における平行判定処理(前記ステップS120)の一例を、フローチャートを用いて説明するための図を示す。
【0249】
図29において、ステップS131では、図18の平行・距離判定器137が、座標iと座標(i+1)とを取得する。ステップS131に引き続き、ステップS132に進み、ステップS132では、図18の角度算出器151が、前記ステップS131において取得した両座標、座標iと座標(i+1)とを結ぶ直線の傾き(角度)θiを算出する。なお、角度θiは、図9(b)で示した角度算出方法の式を用いて算出する。
【0250】
ステップS132に引き続き、ステップS133に進み、ステップS133では、図18の平行・距離判定器137が、座標jと座標(j+1)とを取得する。ステップS133に引き続き、ステップS134に進み、ステップS134では、図18の角度算出器152が、前記ステップS133において取得した両座標、座標jと座標(j+1)とを結ぶ直線の傾き(角度)θjを算出する。なお、角度θjも同様に、図9(b)で示した角度算出方法の式を用いて算出する。
【0251】
ステップS134に引き続き、ステップS135に進み、ステップS135では、図18の減算器153が、前記角度θiと、前記角度θjとの角度差|θi−θj|を算出する。
【0252】
ステップS135に引き続き、ステップS136に進み、ステップS136では、図18の比較器154が、前記ステップS135にて算出した前記角度差|θi−θj|が所定の角度より小さいかどうかを判定する。角度より小さいと判定すると(ステップS136においてYES)、前記2つの直線は平行であるとし、角度より大きいと判定すると(ステップS136においてNO)、前記2つの直線は非平行であるとする。
【0253】
(平行・距離判定器における距離算出処理のフローチャート)
図30に、図18の平行・距離判定器137における距離算出処理(前記ステップS120)の一例を、フローチャートを用いて説明するための図を示す。
【0254】
図30において、ステップS141では、図18の平行・距離判定器137が、座標iと座標(i+1)とを取得する。ステップS141に引き続き、ステップS142に進み、ステップS142では、図18の平行・距離判定器137が、座標jと座標(j+1)とを取得する。
【0255】
ステップS142に引き続き、ステップS143に進み、ステップS143では、図18の距離算出器155が、前記座標iと前記座標jとの距離を計算する。ステップS143に引き続き、ステップS144に進み、ステップS144では、図18の距離算出器156が、前記座標iと前記座標(j+1)との距離を計算する。ステップS144に引き続き、ステップS145に進み、ステップS145では、図18の距離算出器157が、前記座標(i+1)と前記座標jとの距離を計算する。ステップS145に引き続き、ステップS146に進み、ステップS146では、図18の距離算出器158が、前記座標(i+1)と前記座標(j+1)との距離を計算する。
【0256】
ステップS146に引き続き、ステップS147に進み、ステップS147では、図18の最小値算出器159が、前記それぞれ計算した4つの距離の内、最小値を算出する。
【0257】
ステップS147に引き続き、ステップS148に進み、ステップS148では、図18の比較器161が、前記ステップS147において算出した距離の最小値と、図18のレジスタ160に記憶されている現時点での最小値とを比較する。前記ステップS147において算出した距離の最小値の方が小さいと判断すると(ステップS148においてYES)、ステップS149に進み、レジスタ160に記憶されている現時点での最小値の方が小さいと判断すると(ステップS148においてNO)、距離算出処理を終了する。
【0258】
ステップS149では、図18の比較器161が、前記ステップS147において算出した距離の最小値を、レジスタ160に代入して、レジスタ160の値を更新する。
【0259】
【発明の効果】
上述の如く、本発明によれば、精度の高い文字認識を行うことができる。
【0260】
【図面の簡単な説明】
【図1】ビットマップデータ読み取り方式による従来の文字認識装置の構成図である。
【図2】時系列座標データ読み取り方式による従来の文字認識装置の構成図である。
【図3】手書きした座標データを基に文字画像を作成して文字認識させる一例を「加」の文字を用いて説明するための図である。
【図4】手書きした座標データを基に文字画像を作成して文字認識させる一例を「東」の文字を用いて説明するための図である。
【図5】本発明による文字認識装置の一例を示す図である。
【図6】ストロークデータのフォーマットを示す図である。
【図7】画像生成器の構成を説明するための図(その1)である。
【図8】線幅変更器の構成を説明するための図である。
【図9】方向判定器の詳細な説明をするための図である。
【図10】線幅演算器の構成を説明するための図(その1)である。
【図11】線幅演算器の構成を説明するための図(その2)である。
【図12】線幅演算器の構成を説明するための図(その3)である。
【図13】線幅演算器の構成を説明するための図(その4)である。
【図14】アドレス生成器の構成を説明するための図(その1)である。
【図15】描画座標生成器の動作例を説明するための図である。
【図16】画像生成器の構成を説明するための図(その2)である。
【図17】アドレス生成器の構成を説明するための図(その2)である。
【図18】平行・距離判定器の構成を説明するための図である。
【図19】画像生成器における画像生成処理の一例を、フローチャートを用いて説明するための図である。
【図20】線幅変更器における線幅変更処理(ステップS4)の一例を、フローチャートを用いて説明するための図である。
【図21】方向判定器における方向判定処理(ステップS11)の一例を、フローチャートを用いて説明するための図である。
【図22】線幅演算器における線幅演算処理(ステップS12)の一例を、フローチャートを用いて説明するための図(その1)である。
【図23】線幅演算器における線幅演算処理(ステップS12)の一例を、フローチャートを用いて説明するための図(その2)である。
【図24】線幅演算器における線幅演算処理(ステップS12)の一例を、フローチャートを用いて説明するための図(その3)である。
【図25】線幅演算器における線幅演算処理(ステップS12)の一例を、フローチャートを用いて説明するための図(その4)である。
【図26】アドレス生成器におけるストローク画像生成処理(ステップS5)の一例を、フローチャートを用いて説明するための図である。
【図27】画像生成器における画像生成処理の一例を、フローチャートを用いて説明するための図である。
【図28】アドレス生成器におけるストローク画像生成処理(ステップS103)の一例を、フローチャートを用いて説明するための図である。
【図29】平行・距離判定器における平行判定処理(ステップS120)の一例を、フローチャートを用いて説明するための図である。
【図30】平行・距離判定器における距離算出処理(ステップS120)の一例を、フローチャートを用いて説明するための図である。
【符号の説明】
10  文字認識装置
11  手書き入力装置
12  通信部
13  画像形成部
14  文字認識部
15  蓄積部
20  文字認識装置
21  手書き入力装置
22  通信部
23  文字認識部
24  蓄積部
30  文字認識装置
31  画像作成器
32  画像生成器
33  線幅変更器
34  文字認識器
35  蓄積部
41  領域判定器
42  バッファ
43  アドレス生成器
44  画像メモリ
45  レジスタ
51  方向判定器
52  線幅演算器
53  レジスタ
61  角度算出器
62  角度変換器
71  レジスタ
72  レジスタ
73  加算器
74  減算器
75  セレクタ
81  レジスタ
82  レジスタ
83  加算器
84  減算器
85  セレクタ
86  比較器
87  比較器
88  セレクタ
89  セレクタ
91  レジスタ
92  レジスタ
93  乗算器
94  乗算器
95  セレクタ
101  レジスタ
102  レジスタ
103  乗算器
104  乗算器
105  セレクタ
106  比較器
107  比較器
108  セレクタ
109  セレクタ
111  ペンダウン判定器
112  ペンダウン判定器
113  AND回路
114  描画座標生成器
115  エンコーダ
121  メモリ
122  アドレス生成器
130  データ読み出し器
131  ペンダウン判定器
132  ペンダウン判定器
133  AND回路
134  ペンダウン判定器
135  ペンダウン判定器
136  AND回路
137  平行・距離判定器
138  レジスタ
139  1/3器
140  最小値セレクタ
141  描画座標生成器
142  エンコーダ
151  角度算出器
152  角度算出器
153  減算器
154  比較器
155  距離算出器
156  距離算出器
157  距離算出器
158  距離算出器
159  最小値算出器
160  レジスタ
161  比較器
[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a handwritten character recognition device, a handwritten character recognition method, and a handwritten character recognition program, and more particularly to character recognition of a handwritten character image of a line having a predetermined width generated from a handwritten character string represented by a plurality of stroke data. The present invention relates to a handwritten character recognition device, a handwritten character recognition method, and a handwritten character recognition program.
[0002]
[Prior art]
Conventionally, recognition of handwritten characters has been performed. For example, Japanese Unexamined Patent Application Publication No. 9-2682203 describes a character recognition method in which a feature amount is obtained from a handwritten character image, and then identification is performed using a neural network. If the certainty (confidence) of the character recognition is low at the time of performing the character recognition, the recognition parameter is changed and the character recognition is performed again to increase the certainty. Has become.
[0003]
A conventional character recognition processing method using a handwriting input device will be described below. FIG. 1 shows a configuration of a conventional character recognition device 10 using a bitmap data reading method. The conventional device (part 1) includes a character recognition device 10 and a handwriting input device 11, and the character recognition device 10 includes a communication unit 12, an image creation unit 13, a character recognition unit 14, a storage unit 15, Consists of
[0004]
The handwriting input device 11 is a device that obtains (x, y) the coordinate information of the position to be rewritten, and obtains the coordinate information of the position to be rewritten at the same time as rewriting by the operator.
[0005]
The communication unit 12 receives the coordinate information (x, y) from the handwriting input device 11. The image creating unit 13 creates a character image of a character having a predetermined line width based on coordinate information (X, Y) extracted from the communication unit 12 as additional information. The character recognition unit 14 recognizes characters in the character image created by the image creation unit 13. The storage unit 15 stores recognition results of the characters recognized by the character recognition unit 14.
[0006]
FIG. 2 shows a configuration of a conventional character recognition device 20 using a time-series coordinate data reading method. The conventional device (part 2) includes a character recognition device 20 and a handwriting input device 21, and the character recognition device 20 includes a communication unit 22, a character recognition unit 23, and a storage unit 24.
[0007]
The handwriting input device 21 is a handwriting input device having an area for performing one-character input, and acquires coordinate information (x, y) of a retouched portion and obtains coordinate information of the retouched portion at the same time as rewriting by an operator.
[0008]
The communication unit 22 receives the coordinate information (x, y) from the handwriting input device 21. The character recognition unit 23 recognizes a character from a coordinate information sequence corresponding to one character. At this time, since the coordinate information sequence also has time-series information, the stroke order information can be used for character recognition. The storage unit 24 stores the result of the character recognition recognized by the character recognition unit 23.
[0009]
[Problems to be solved by the invention]
However, the invention described in Japanese Patent Application Laid-Open No. 9-2682203 aims at performing highly accurate character recognition by setting an optimum character recognition parameter for a character image. If the quality of the character image becomes poor, the recognition rate is naturally limited.
[0010]
In the conventional method using the handwriting input device shown in FIG. 1, a character image is formed with a predetermined line width. If the line width is smaller than the size of the character, there is a problem that one character “A” is separated and recognized as two characters “Caro” as shown in FIG. 3A. In order to solve this problem, as shown in FIG. 3B, by creating a character image with a thick line, the character is recognized as “add”.
[0011]
By the way, if the line width is too thick compared to the size of the character, the line may be connected to an adjacent line and the character may be crushed.
[0012]
FIG. 4 is a diagram for describing an example of creating a character image based on handwritten coordinate data and performing character recognition using “east”. FIG. 4A shows a case where a character image is created by thin lines and character recognition is performed, and FIG. 4B shows a case where a character image is created and character recognition is performed by thick lines. As shown in FIG. 4B, if the line width is made thicker than the character, the character may be connected to an adjacent line and the character "East" may be recognized as "bundle".
[0013]
Therefore, according to the conventional method, the character string “Kato” may be erroneously recognized as the character “Karo Higashi” or “Kagashi” depending on the line width.
[0014]
Further, in the conventional method using the handwriting input device shown in FIG. 2, if the stroke order of the writer is incorrect, the recognition accuracy is reduced.
[0015]
The present invention has been made in view of the above points, and has as its object to perform more accurate character recognition.
[0016]
[Means for Solving the Problems]
Therefore, in order to solve the above problem, an invention according to claim 1 is directed to a handwritten character recognition device that performs character recognition of a handwritten character image of a line having a predetermined width generated from a handwritten character string represented by a plurality of stroke data. And line width changing means for changing the predetermined width based on the direction of the stroke data.
[0017]
The invention according to claim 2 is characterized in that the line width changing means has a thinning means for reducing the predetermined width.
[0018]
Further, the invention according to claim 3 further comprises a first storage device for storing a value defining the predetermined width, and a second storage device for storing a predetermined value, wherein the thinning means includes: It is characterized in that the value stored in the second storage device is subtracted from the value stored in one storage device, and the line width is determined based on the subtracted value.
[0019]
Further, the invention according to claim 4 further includes a first determiner for determining whether a value stored in the first storage device is smaller than a predetermined value, and If the value that is present is determined to be smaller than the predetermined value by the determination of the first determiner, the thinning unit transfers the value stored in the first storage device to the second storage device. The stored value is not subtracted.
[0020]
The invention according to claim 5 further comprises a first storage device for storing a value defining the predetermined width, and a third storage device for storing a predetermined value less than 1; Multiplying a value stored in the first storage device by a value stored in the third device, and determining a line width based on the multiplied value.
[0021]
The invention according to claim 6 further includes a first determiner that determines whether a value stored in the first storage device is smaller than a predetermined value, and the first determination device determines whether a value stored in the first storage device is smaller than a predetermined value. If the determined value is determined by the first determiner to be smaller than the predetermined value, the thinning unit stores the value stored in the first storage device in the third storage device. It is characterized in that the stored value is not multiplied.
[0022]
Further, the invention according to claim 7 is characterized in that the line width changing means includes a thickening means for increasing the predetermined width.
[0023]
The invention according to claim 8 further comprises a first storage device for storing a value defining the predetermined width, and a fourth storage device for storing a predetermined value, wherein the thickening means includes A value stored in the fourth storage device is added to a value stored in the one storage device, and a line width is determined based on the added value.
[0024]
The invention according to claim 9 further includes a second determiner for determining whether a value stored in the first storage device is larger than a predetermined value, and If the value that is stored is determined to be larger than the predetermined value by the determination of the second determiner, the thickening unit stores the value stored in the first storage device in the fourth storage device. The stored value is not added.
[0025]
The invention according to claim 10 further comprises a first storage device for storing a value defining the predetermined width, and a fifth storage device for storing a predetermined value exceeding 1; Multiplying a value stored in the first storage device by a value stored in the fifth storage device, and determining a line width based on the multiplied value.
[0026]
The invention according to claim 11 further includes a second determiner that determines whether a value stored in the first storage device is larger than a predetermined value, and the second determination device determines whether a value stored in the first storage device is larger than a predetermined value. If the value that is stored is determined to be larger than the predetermined value by the determination of the second determiner, the thickening unit stores the value stored in the first storage device in the fifth storage device. It is characterized in that the stored value is not multiplied.
[0027]
Further, the twelfth aspect of the present invention is characterized in that the line width changing means has a thinning means for reducing the predetermined width and a thickening means for increasing the predetermined width.
[0028]
According to a thirteenth aspect of the present invention, there is provided a handwritten character recognition apparatus for performing character recognition of a handwritten character image of a line having a predetermined width generated from a handwritten character string represented by a plurality of stroke data. A line width changing means for changing the stroke width based on the positional relationship of the stroke data is provided.
[0029]
According to a fourteenth aspect of the present invention, the line width changing means is one of a value defining a line width generated from the stroke data and a value defining a predetermined line width stored in a storage device. On the other hand, a line width is determined by selecting a smaller value.
[0030]
According to a fifteenth aspect of the present invention, the line width generated from the stroke data is less than half the distance between the stroke data and adjacent stroke data.
[0031]
Further, the invention according to claim 16 further comprises a distance / angle calculating means for calculating a distance and an angle between the stroke data and the adjacent stroke data, and based on the distance calculated by the distance / angle calculating means. , A line width generated from the stroke data is determined.
[0032]
According to a seventeenth aspect of the present invention, there is provided a handwritten character recognition method for performing character recognition of a handwritten character image of a line having a predetermined width generated from a handwritten character string represented by a plurality of stroke data. The method further includes a line width changing step of changing the line width based on the direction of the data.
[0033]
The invention according to claim 18 is a method for recognizing a handwritten character image of a handwritten character image of a line having a predetermined width generated from a handwritten character string represented by a plurality of stroke data. The method has a line width changing step of changing based on the positional relationship of the stroke data.
[0034]
According to a nineteenth aspect of the present invention, there is provided a handwritten character recognition program for performing character recognition of a handwritten character image of a line having a predetermined width generated from a handwritten character string represented by a plurality of stroke data. The computer is caused to execute a line width changing procedure for changing the line width based on the direction of the data.
[0035]
According to a twentieth aspect of the present invention, in the handwritten character recognition program for performing character recognition of a handwritten character image of a line having a predetermined width generated from a handwritten character string represented by a plurality of stroke data, The computer is caused to execute a line width changing procedure for changing the stroke width based on the positional relationship of the stroke data.
[0036]
According to the first aspect of the present invention, in the handwritten character recognition device for performing character recognition of a handwritten character image of a line having a predetermined width generated from a handwritten character string represented by a plurality of stroke data, By having the line width changing means for changing based on the direction of the data, more accurate character recognition can be performed.
[0037]
According to the second aspect of the present invention, the line width changing unit includes a thinning unit that narrows the predetermined width, so that even a character having a large amount of data in a certain range, such as a kanji character, has a higher accuracy. Recognition can be performed.
[0038]
According to the third aspect of the present invention, the apparatus further includes a first storage device that stores a value that defines the predetermined width, and a second storage device that stores a predetermined value, wherein the thinning unit includes the first storage device. Subtracting the value stored in the second storage device from the value stored in one storage device and determining the line width based on the subtracted value, thereby reducing the line width with a simple configuration. Can be.
[0039]
According to the invention described in claim 4, there is further provided a first determiner for determining whether a value stored in the first storage device is smaller than a predetermined value, If the value that is present is determined to be smaller than the predetermined value by the determination of the first determiner, the thinning unit transfers the value stored in the first storage device to the second storage device. By not subtracting the stored value, if the value stored in the first storage device is smaller than a predetermined value, it is possible to prevent the line width from being further reduced.
[0040]
According to the invention as set forth in claim 5, further comprising a first storage device for storing a value defining the predetermined width and a third storage device for storing a predetermined value less than 1; 7, the value stored in the first storage device is multiplied by the value stored in the third device, and the line width is determined based on the multiplied value. Can be made thinner.
[0041]
According to the invention as set forth in claim 6, further comprising a first determiner for determining whether a value stored in the first storage device is smaller than a predetermined value, If the determined value is determined by the first determiner to be smaller than the predetermined value, the thinning unit stores the value stored in the first storage device in the third storage device. By not multiplying the stored value, if the value stored in the first storage device is smaller than a predetermined value, it is possible to prevent the line width from being further reduced.
[0042]
According to the seventh aspect of the present invention, the line width changing unit includes the thick line forming unit for increasing the predetermined width, so that the character recognition is not performed by separating the bias and the formation of the character. Character recognition can be performed.
[0043]
According to the invention of claim 8, further comprising: a first storage device that stores a value that defines the predetermined width; and a fourth storage device that stores a predetermined value. Adding the value stored in the fourth storage device to the value stored in one storage device and determining the line width based on the added value, thereby increasing the line width with a simple configuration. Can be.
[0044]
According to the ninth aspect of the present invention, there is further provided a second determiner for determining whether a value stored in the first storage device is larger than a predetermined value, If the value that is stored is determined to be larger than the predetermined value by the determination of the second determiner, the thickening unit stores the value stored in the first storage device in the fourth storage device. By not adding the stored values, if the value stored in the first storage device is larger than a predetermined value, it is possible to prevent the line width from being further increased.
[0045]
According to the tenth aspect of the present invention, there is further provided a first storage device for storing a value defining the predetermined width and a fifth storage device for storing a predetermined value exceeding 1; By multiplying the value stored in the first storage device by the value stored in the fifth storage device and determining the line width based on the multiplied value, the line width can be reduced with a simple configuration. Can be thicker.
[0046]
According to the invention of claim 11, further comprising a second determiner that determines whether the value stored in the first storage device is greater than a predetermined value,
If the value stored in the first storage device is determined by the second determiner to be larger than the predetermined value, the thickening means is stored in the first storage device. By not multiplying the value stored in the fifth storage device by the value stored in the fifth storage device, if the value stored in the first storage device is larger than a predetermined value, it is possible to prevent the line width from being further increased. it can.
[0047]
According to the twelfth aspect of the present invention, the line width changing means includes a thinning means for reducing the predetermined width and a thickening means for increasing the predetermined width. , The line width can be reduced or increased.
[0048]
According to the thirteenth aspect of the present invention, in the handwritten character recognition device for performing character recognition of a handwritten character image of a line having a predetermined width generated from a handwritten character string represented by a plurality of stroke data, the predetermined width is adjacent to the predetermined width. The character recognition rate can be improved by having a line width changing unit that changes based on the positional relationship of the stroke data.
[0049]
According to the fourteenth aspect of the invention, the line width changing means is one of a value defining a line width generated from the stroke data and a value defining a predetermined line width stored in a storage device. On the other hand, by selecting the smaller value and determining the line width, a character image can be generated with a more optimal line width.
[0050]
According to the fifteenth aspect of the present invention, the line width generated from the stroke data is less than half the distance between the stroke data and the adjacent stroke data, so that the line that does not contact the adjacent stroke is obtained. You can get the width.
[0051]
According to the sixteenth aspect of the present invention, there is further provided a distance / angle calculating means for calculating a distance and an angle between the stroke data and the adjacent stroke data, based on the distance calculated by the distance / angle calculating means. By determining the line width generated from the stroke data, an optimum line width according to the positional relationship can be obtained.
[0052]
According to the seventeenth aspect of the present invention, in the handwritten character recognition method for performing character recognition of a handwritten character image of a line of a predetermined width generated from a handwritten character string represented by a plurality of stroke data, By including the line width changing step of changing based on the direction of the data, it is possible to provide a character recognition method for producing a high-quality character image and performing more accurate character recognition.
[0053]
According to the eighteenth aspect of the present invention, in the handwritten character recognition method for performing character recognition of a handwritten character image of a line of a predetermined width generated from a handwritten character string represented by a plurality of stroke data, By including the line width changing step of changing based on the positional relationship of the stroke data, it is possible to provide a character recognition method for producing a high-quality character image and performing more accurate character recognition.
[0054]
According to the invention described in claim 19, in the handwritten character recognition program for performing character recognition of a handwritten character image of a line having a predetermined width generated from a handwritten character string represented by a plurality of stroke data, By causing a computer to execute a line width changing procedure for changing the line width based on the direction of data, a character image with good quality can be produced and a character recognition program for performing more accurate character recognition can be provided.
[0055]
According to the twentieth aspect of the present invention, in the handwritten character recognition program for performing character recognition of a handwritten character image of a line having a predetermined width generated from a handwritten character string represented by a plurality of stroke data, By causing a computer to execute a line width changing procedure for changing the stroke width based on the positional relationship of the stroke data, it is possible to provide a character recognition program that produces a high-quality character image and performs more accurate character recognition.
[0056]
BEST MODE FOR CARRYING OUT THE INVENTION
(Character recognition device)
Hereinafter, embodiments of the present invention will be described with reference to the drawings. FIG. 5 shows an example of the character recognition device 30 according to the present invention. In the configuration diagram of FIG. 5, components required for description are shown, and components not required for description are omitted. The same applies to the following drawings.
[0057]
The character recognition device 30 includes an image creator 31, a character recognizer 34, and a storage 35. The image creator 31 includes an image generator 32 and a line width changer 33.
[0058]
The character recognition device 30 creates an image from the stroke data input using the image creating device 31. When the image creation processing is performed on all the stroke data, the character recognition device 30 performs character recognition on the created image using the character recognizer 34, and stores the recognition result in the storage unit 35.
[0059]
Details of the image generator 32 will be described later with reference to FIGS.
[0060]
Stroke data as input data of the character recognition device 30 is data obtained by a two-dimensional handwriting input device such as an electromagnetic induction system, an ultrasonic system, and an electrostatic system.
[0061]
(Stroke data format)
FIG. 6 shows a format of the stroke data. The stroke data includes a sequence indicating the order of coordinates, an X coordinate, a Y coordinate, a time stamp indicating the time at which the coordinates were obtained, and a pen up / down indicating whether or not writing is in progress (pen down is writing). And five. This is a data block representing one coordinate, and a set of this data block is stroke data.
[0062]
The image creator 31 in FIG. 5 forms a stroke image using the input stroke data. The stroke image is input to a character recognizer 34, which performs character recognition, and the recognition result is stored in a storage 35. For character recognition, for example, an apparatus described in Japanese Patent Application Laid-Open No. 10-171927 can be used.
[0063]
(Image generator (1))
FIG. 7 is a diagram (part 1) for explaining the configuration of the image generator 32 in FIG. FIG. 7 is an example of the image generator 32 of FIG. The image generator 32 includes an area determiner 41, a buffer 42, an address generator 43, an image memory 44, and a register 45.
[0064]
The area determining unit 41 detects the maximum value and the minimum value of each of the X coordinate and the Y coordinate of the stroke data, and detects a rectangular area where a character is written. The coordinates of the detected rectangular area are transferred to the register 45, and are used when the character recognizer 34 performs character recognition.
[0065]
The buffer 42 is a delay buffer that temporarily stores data indicating one coordinate. The stroke data transferred from the area determiner 41 and the stroke data delayed by the buffer 42 are input to the line width changer 33.
[0066]
The line width changer 33 calculates the direction of a straight line connecting the two coordinates based on the input two coordinates ((x1, y1), (x2, y2)), and based on the direction, calculates the two directions. Change the width of the line connecting the two coordinates. The details of the line width changer 33 will be described later with reference to FIG.
[0067]
Based on the line width specified by the line width changer 33, the stroke data transferred from the area determiner 41, and the stroke data delayed by the buffer 42, the address generator 43 calculates the two coordinates ((x1, The coordinates that draw a straight line connecting y1) and (x2, y2)) are calculated, an address corresponding to the coordinates is generated, and written to the image memory 44. The details of the address generator 43 will be described later with reference to FIG.
[0068]
When the writing of the stroke data into the image memory 44 is completed, the character recognizer 34 starts operating, reads the usage area information where the stroke exists stored in the register 45, and stores the data necessary for character recognition in the image memory. Character recognition is performed by reading the character from the reference numeral 44.
[0069]
The operation of the image generator 32 will be described below. The image generator 32 detects the maximum value and the minimum value of each of the X coordinate and the Y coordinate of the input stroke data by using the area determination unit 41, and detects a rectangular area where a character is written. In addition, the area determination unit 41 transfers the coordinates of the detected rectangular area to the register 45. The coordinates of the transferred rectangular area are used when character recognition is performed by the character recognizer 34.
[0070]
The buffer 42 temporarily stores data indicating one coordinate, and delays the data. The stroke data input to the image generator 32 and the stroke data delayed by the buffer 42 are input to the line width changer 33. The line width changer 33 calculates the direction of a straight line connecting the two coordinates based on the input two coordinates ((x1, y1), (x2, y2)), and based on the direction, calculates the two directions. Change the width of the line connecting the two coordinates.
[0071]
The address generator 43 generates an address for writing to the image memory 44 from the changed line width value and the stroke data, and writes the address to the image memory 44.
[0072]
When the writing of the stroke data into the image memory 44 is completed, the character recognizer 34 starts operating, reads the usage area information where the stroke exists stored in the register 45, and stores the data necessary for character recognition in the image memory. Character recognition is performed by reading the character from the reference numeral 44.
[0073]
(Line width changer)
FIG. 8 is a diagram for explaining the configuration of the line width changer 33 in FIG. The line width changer 33 includes a direction determiner 51, a line width calculator 52, and a register 53. Note that coordinate data, which are constituent elements of the two stroke data, are referred to as coordinate 1 and coordinate 2, respectively.
[0074]
The direction determiner 51 uses the coordinates 1 and 2 to calculate the direction of a straight line connecting the coordinates 1 and 2. The line width calculator 52 calculates the line width of a straight line connecting the coordinates 1 and 2, based on the direction calculated by the direction determiner 51. In the register 53. An initial value of the line width is set, and the line width is changed by increasing or decreasing the value. The changed line width is input to the address generator 43. The details of the direction determiner 51 will be described later with reference to FIG. The details of the line width calculator 52 will be described later with reference to FIGS. 10, 11, 12, and 13.
[0075]
An operation example of the line width changer 33 will be described below. The line width changer 33 uses the direction determiner 51 to calculate the direction of a straight line connecting the input coordinates 1 and 2. When the calculation of the direction is completed, the line width changer 33 changes the line width by using the line width calculator 52 to increase or decrease the initial value of the line width set in the register 53 based on the calculated direction.
[0076]
(Direction judgment device)
FIG. 9 is a diagram for describing the direction determiner 51 of FIG. 8 in detail. FIG. 9A is a diagram for explaining the configuration of the direction determiner 51. FIG. 9B is an equation of an angle calculation method of the angle calculator. FIG. 9C is an angle conversion table.
[0077]
The direction determiner 51 includes an angle calculator 61 and an angle converter 62. The angle calculator 61 receives the coordinates 1 (x1, y1) and the coordinates 2 (x2, y2), and calculates the coordinates 1 (x1, y1) using the angle calculation method shown in FIG. 9B. Then, the angle θ of the straight line connecting the coordinate 2 (x2, y2) is calculated.
[0078]
The angle converter 62 converts the angle θ calculated by the angle calculator 61 into a value of 0 to 3 representing the degree of inclination (inclination degree θt). The conversion from the angle θ to the inclination degree θt is executed by a circuit (not shown) that realizes the table of FIG.
[0079]
The operation example of FIG. 9 is shown below. The direction determiner 51 calculates an angle θ of a straight line connecting the input coordinates 1 (x1, y1) and coordinates 2 (x2, y2) using the angle calculator 61. The calculated angle θ is changed by the angle converter 62 to the degree of inclination θt (0 to 3), and is output from the direction determiner 51.
[0080]
For example, if the angle of the straight line connecting the coordinates 1 (x1, y1) and the coordinates 2 (x2, y2) is 0 degree, the angle converter 62 determines the angle based on the angle conversion table shown in FIG. Then, the angle of 0 degree is converted into the degree of inclination 2 and is output from the direction determiner. Similarly, if the angle of the straight line connecting the coordinates 1 (x1, y1) and the coordinates 2 (x2, y2) is 60 degrees, the output of the direction determiner becomes 1, and the coordinates 1 (x1, y1) and the coordinates 2 ( If the angle of the straight line connecting x2 and y2) is 90 degrees, the output of the direction determiner becomes 0.
[0081]
(Line width calculator 52 (part 1))
FIG. 10 is a diagram (part 1) for explaining the configuration of the line width calculator 52 in FIG. FIG. 10A is an example of the line width calculator 52 of FIG. FIG. 10B is a diagram for explaining a relationship between the inclination degree θt and the selected line width.
[0082]
The line width calculator 52 of FIG. 10A includes a register 71, a register 72, an adder 73, a subtractor 74, and a selector 75.
[0083]
A predetermined line width is input as an initial value to the line width calculator 52 from the register 53 of FIG.
[0084]
The adder 73 adds the value obtained from the register 71 to the initial value of the line width obtained from the register 53 in FIG.
[0085]
The subtracter 74 subtracts the value obtained from the register 72 from the initial value of the line width obtained from the register 53 in FIG.
[0086]
The initial value of the line width input from the register 53 of FIG. 8, the value of the line width added by the adder 73, and the value of the line width subtracted by the subtractor 74 are input to the selector 75. . The value of the degree of inclination θt determined by the direction determiner 51 in FIG. 8 is input to the selector 75.
[0087]
The selector 75 determines the input three line width values (the initial value, the added line width value, and the subtracted line width value) based on the input value of the inclination degree θt. One of the line widths is selected and output to the address generator 43. The relationship between the inclination degree θt and the selected line width will be described below with reference to FIG.
[0088]
FIG. 10B is a diagram for explaining a relationship between the inclination degree θt and the selected line width. If the stroke is close to horizontal (θt = 2), the selector 75 selects the subtracted line width (including no increase or decrease). If the stroke is close to vertical (θt = 0), the added line width (including no increase or decrease) is selected. For angles other than those described above, a line width for which addition and subtraction of the line width are not performed is selected.
[0089]
For example, the selector 75 in FIG. 10 selects the input value from the subtractor 74 if θt = 2, and selects the input value from the adder 73 if θt = 0. If θt is a value other than the above, the input value from the register 53 is selected.
[0090]
An example of the operation of the line width calculator 52 shown in FIG. Here, as an example, assume that the line width value set in the register 53 of FIG. 8 is 10, the value set in the register 71 is 5, and the value set in the register 72 is 5.
[0091]
The line width calculator 52 acquires the value 10 of the line width set in the register 53 of FIG. 8 and uses the adder 73 to convert the value 5 set in the register 71 into the value 10 of the line width. And the value 15 is input to the selector 73. The line width calculator 52 subtracts the value 5 set in the register 72 from the line width value 10 using a subtractor 74 and inputs the value 5 to the selector 73.
[0092]
The value 75 of the line width set in the register 53 of FIG. 8, the value 15 added by the adder 73, and the value 5 subtracted by the subtractor 74 are input to the selector 75.
[0093]
The selector 75 determines that the value of θt obtained from the direction determiner 51 in FIG. 9 is 0, that is, in the example of FIG. 8, the angle of the straight line connecting the coordinates 1 (x1, y1) and the coordinates 2 (x2, y2) is If it is 90 degrees, the value 15 added by the adder 73 is selected and output to the address generator 43 in FIG.
[0094]
The value of θt obtained from the direction determiner 51 of FIG. 9 is 1, that is, in the example of FIG. 8, the angle of the straight line connecting the coordinates 1 (x1, y1) and the coordinates 2 (x2, y2) is 60 degrees. If so, the line width value 10 set in the register 53 of FIG. 8 is selected and output to the address generator 43 of FIG.
[0095]
The value of θt obtained from the direction determiner 51 in FIG. 9 is 2, that is, in the example of FIG. 8, the angle of the straight line connecting the coordinates 1 (x1, y1) and the coordinates 2 (x2, y2) is 0 degree. If so, the value 5 subtracted by the subtractor 74 is selected and output to the address generator 43 in FIG.
[0096]
(Line width calculator (Part 2))
FIG. 11 is a diagram (part 2) for explaining the configuration of the line width calculator 52 in FIG. FIG. 11 shows another embodiment of the line width calculator 52 of FIG.
[0097]
The line width calculator 52 includes a register 81, a register 82, an adder 83, a subtractor 84, a selector 85, a comparator 86, a comparator 87, a selector 88, and a selector 89. I have.
[0098]
The line width calculator 52 in FIG. 11 is different from the “line width calculator (No. 1)” described in FIG. 10 in that a comparator 86, a comparator 87, a selector 88, and a selector 89 are newly provided. ing.
[0099]
The line width calculator 52 of FIG. 11 compares the initial value of the line width set in the register 53 of FIG. 8 with the threshold value 1 and the threshold value 2 (threshold value 1 <threshold value 2). 8 is larger than a certain value (threshold value 2) from the beginning, the adder 83 does not add the value set in the register 81 to the initial value line width. The line width of the value is output from the adder 83. If the line width set as an initial value in the register 53 of FIG. 8 is smaller than a certain value (threshold 1) from the beginning, the subtractor 84 sets the value set in the register 82 based on the initial line width. Is not subtracted, and the line width of the initial value is used as the output from the subtractor 84.
[0100]
The comparator 86 compares the initial value of the line width input from the register 53 with the threshold value 1 and inputs the result of the comparison to the selector 88 and the selector 89. Similarly, the comparator 87 compares the initial value of the line width input from the register 53 with the threshold 2 (threshold 1 <threshold 2), and inputs the comparison result to the selectors 88 and 89.
[0101]
The selector 88 selects the value of the register 81 and outputs the value to the adder 83 if the initial value of the line width is a value between the threshold value 1 and the threshold value 2 based on the input comparison result. Similarly, if the initial value of the line width is smaller than the threshold value 1, the value of the register 81 is selected and output to the adder 83. On the other hand, if the initial value of the line width is a value larger than the threshold value 2, a value of 0 is selected and output to the adder 83.
[0102]
The selector 89 selects the value of the register 82 and outputs it to the subtractor 84 if the initial value of the line width is a value between the threshold 1 and the threshold 2 based on the input comparison result. Similarly, if the initial value of the line width is a value larger than the threshold value 2, the value of the register 82 is selected and output to the subtractor 84. On the other hand, if the initial value of the line width is smaller than the threshold value 1, a value of 0 is selected and output to the subtractor 84.
[0103]
The adder 83, the subtractor 84, and the selector 85 have the same functions as the adder 73, the subtractor 74, and the selector 75 in FIG. 10, respectively.
[0104]
Therefore, the line width calculator 52 of FIG. 11 compares the initial value of the line width set in the register 53 of FIG. 8 with the threshold value 1 and the threshold value 2 (threshold value 1 <threshold value 2), and If the value of the line width set in the register 53 of FIG. 8 is larger than a certain value (threshold value 2) from the beginning, the adder 83 sets the value of the line width of the initial value in the register 81 Is not added, and the value of the initial line width is used as the output from the adder 83.
[0105]
If the value of the line width set as an initial value in the register 53 of FIG. The subtracted value is not subtracted, and the initial value of the line width is used as the output from the subtractor 84.
[0106]
If the value of the line width set as the initial value in the register 53 of FIG. 8 is within an appropriate line width range (threshold 1 or more, less than threshold 2), the adder 83 sets the initial value of the line width To the output of the adder 83. Further, the subtractor 84 subtracts the value of the register 82 from the initial value of the line width to obtain an output from the subtractor 84.
[0107]
Hereinafter, an operation example of the line width calculator 52 of FIG. 11 will be described. As an example, assume that the value of the threshold 1 is 8, the value of the threshold 2 is 12, the value set in the register 81 is 5, and the value set in the register 82 is 5.
[0108]
The line width calculator 52 in FIG. 11 acquires the line width value of the initial value set in the register 53 in FIG. 8. For example, if the acquired value is 10, the line width calculator 52 52 compares the line width value 10 of the initial value with the threshold value 8 and the threshold value 12 using the comparator 86 and the comparator 87. The selector 88 acquires the value 5 set in the register 81 and outputs the acquired value to the adder 83 when the initial value 10 is equal to or greater than the threshold 1 of 8 and less than the threshold 2 of 12. When the value of the initial value 10 is equal to or more than the value of the threshold value 1 and less than the value of the threshold value 2, the selector 89 acquires the value 5 set in the register 82 and outputs the value to the subtractor 84.
[0109]
The adder 83 adds the value 5 obtained from the selector 88 to the value 10 of the initial value, and outputs the value 15 to the selector 85. The subtractor 84 subtracts the value 5 obtained from the selector 89 from the value 10 of the initial value, and outputs the value 5 to the selector 85.
[0110]
The selector 85 receives the initial value 10, the value 15 output from the adder 83, and the value 5 output from the subtractor 84. The selector 85 has the same function as the selector 75 of FIG.
[0111]
When the value of the line width of the initial value set in the register 53 of FIG. 8 is 5, the line width calculator 52 uses the comparator 86 and the comparator 87 to calculate the line width of the initial value. The value 5 is compared with the value 1 of the threshold 1 and the value 12 of the threshold 2. The selector 88 acquires the value 5 set in the register 81 and outputs the acquired value to the adder 83 when the initial value 5 is less than the threshold value 8. On the other hand, when the value 5 of the initial value is smaller than the value 8 of the threshold value 1, the selector 89 outputs 0 to the subtractor 84.
[0112]
The adder 83 adds the value 5 obtained from the selector 88 to the value 5 of the initial value, and outputs a value 10 to the selector 85. The subtractor 84 subtracts the value 0 obtained from the selector 89 from the value 5 of the initial value, and outputs the value 5 to the selector 85.
[0113]
The selector 88 receives the value 5 of the initial value, the value 10 output from the adder 84, and the value 5 output from the subtractor 84. As described above, the selector 88 has the same function as the selector 75 of FIG.
[0114]
When the line width of the initial value set in the register 53 of FIG. 8 is 15, the line width calculator 52 uses the comparator 86 and the comparator 87 to calculate the line width of the initial value. The value 15 is compared with the value 8 of the threshold 1 and the value 12 of the threshold 2. The selector 88 outputs a value of 0 to the adder 83 when the initial value 15 is larger than the threshold 2 of 12. On the other hand, when the value 15 of the initial value is larger than the value 12 of the threshold value 2, the selector 89 acquires the value 5 set in the register 82 and outputs it to the subtractor 84.
[0115]
The adder 83 adds the value 0 obtained from the selector 88 to the value 15 of the initial value, and outputs the value 15 to the selector 85. The subtractor 84 subtracts the value 5 obtained from the selector 89 from the value 15 of the initial value, and outputs the value 10 to the selector 85.
[0116]
The selector 85 receives the value 15 of the initial value, the value 15 output from the adder 83, and the value 10 output from the subtractor 84. As described above, the selector 85 has the same function as the selector 75 in FIG.
[0117]
(Line width calculator (Part 3))
FIG. 12 is a diagram (part 3) for explaining the configuration of the line width calculator 52 in FIG. FIG. 12 shows another embodiment of the line width calculator 52 of FIG. The line width calculator 52 includes a register 91, a register 92, a multiplier 93, a multiplier 94, and a selector 95.
[0118]
The line width calculator 52 of FIG. 12 is different from the “line width calculator (No. 1)” described with reference to FIG. 10 in that the adder 73 and the subtractor 74 of FIG. Has been replaced by
[0119]
A predetermined line width is input as an initial value to the line width calculator 52 from the register 53 of FIG.
[0120]
The multiplier 93 inputs a value obtained by multiplying the initial value of the line width obtained from the register 53 of FIG. The multiplier 93 has a function of increasing the value of the line width similarly to the adder 73 in FIG.
[0121]
The multiplier 94 inputs a value obtained by multiplying the initial value of the line width obtained from the register 53 of FIG. 8 by a value greater than 0 and less than 1 obtained from the register 92 to the selector 95. The multiplier 94 has a function of reducing the value of the line width similarly to the subtractor 74 of FIG.
[0122]
The selector 95 has the same function as the selector 75 in FIG.
[0123]
Hereinafter, an operation example of the line width calculator 52 of FIG. 12 will be described. Here, as an example, assume that the line width value set in the register 53 of FIG. 8 is 10, the value set in the register 91 is 1.5, and the value set in the register 92 is 0.5.
[0124]
The line width calculator 52 obtains the value 10 of the line width set in the register 53 of FIG. 8 and uses the multiplier 93 to change the value 1.5 set in the register 91 to the value of the line width. The value is multiplied by 10 and the value 15 is input to the selector 95. Further, the line width calculator 52 multiplies the line width value 10 by the value 0.5 set in the register 92 using the multiplier 94 and inputs the value 5 to the selector 95.
[0125]
The selector 95 receives the line width value 10 set in the register 53 of FIG. 8, the value 15 multiplied by the multiplier 93, and the value 5 multiplied by the multiplier 94. The selector 95 has the same function as the selector 75 in FIG.
[0126]
(Line width calculator (Part 4))
FIG. 13 is a diagram (part 4) for explaining the configuration of the line width calculator 52 in FIG. FIG. 13 shows another embodiment of the line width calculator 52 of FIG. The line width calculator 52 includes a register 101, a register 102, a multiplier 103, a multiplier 104, a selector 105, a comparator 106, a comparator 107, a selector 108, and a selector 109. I have.
[0127]
The line width calculator 52 of FIG. 13 is different from the “line width calculator (part 2)” described with reference to FIG. 11 in that the adder 83 and the subtractor 84 of FIG. Has been replaced by
[0128]
The line width calculator 52 in FIG. 13 compares the initial value of the line width set in the register 53 of FIG. 8 with the threshold value 1 and the threshold value 2 (threshold value 1 <threshold value 2), and sets them as initial values. If the line width set in the register 53 is larger than a certain value (threshold value 2) from the beginning, the multiplier 103 multiplies the initial line width by 1 and multiplies the initial line width by the multiplier. 103. If the line width set as the initial value in the register 53 of FIG. 8 is smaller than a certain value (threshold 1) from the beginning, the multiplier 104 multiplies the initial value line width by 1 to obtain the initial value. Is the output from the multiplier 104.
[0129]
An operation example of the line width calculator 52 in FIG. 13 will be described below. As an example, assume that the value of the threshold 1 is 8, the value of the threshold 2 is 12, the value set in the register 101 is 1.5, and the value set in the register 102 is 0.5.
[0130]
The line width calculator 52 in FIG. 13 obtains the value of the line width of the initial value set in the register 53 in FIG. 8, for example, if the obtained value is 10, the line width calculation The comparator 52 compares the line width value 10 of the initial value with the threshold value 8 and the threshold value 12 using the comparator 106 and the comparator 107. The selector 108 acquires the value 1.5 set in the register 101 and outputs the value to the multiplier 103 when the initial value 10 is equal to or larger than the threshold 1 of 8 and less than the threshold 2 of 12. When the initial value 10 is equal to or greater than the threshold value 1 of 8 and less than the threshold value 2 of 12, the selector 109 acquires the value 0.5 set in the register 102 and outputs the value to the multiplier 104. I do.
[0131]
The multiplier 103 multiplies the value of the initial value 10 by the value 1.5 obtained from the selector 108 and outputs the value 15 to the selector 105. The multiplier 104 multiplies the initial value 10 by the value 0.5 obtained from the selector 109 and outputs the value 5 to the selector 105.
[0132]
The selector 105 receives the initial value 10, the value 15 output from the multiplier 103, and the value 5 output from the multiplier 104. The selector 105 has the same function as the selector 75 of FIG.
[0133]
When the value of the line width of the initial value set in the register 53 of FIG. 8 is 5, the line width calculator 52 uses the comparators 106 and 107 to calculate the line width of the initial value. The value 5 is compared with the value 1 of the threshold 1 and the value 12 of the threshold 2. The selector 108 acquires the value 1.5 set in the register 101 and outputs the value to the multiplier 103 when the initial value 5 is less than the threshold value 8. On the other hand, the selector 109 outputs 1 to the multiplier 104 when the initial value 5 is less than the threshold 1 value 8.
[0134]
The multiplier 103 multiplies the value 5 of the initial value by the value 1.5 obtained from the selector 108, and outputs a value 7.5 to the selector 105. The multiplier 104 multiplies the value 5 of the initial value by the value 1 obtained from the selector 109, and outputs the value 5 to the selector 105.
[0135]
The selector 105 receives the initial value 5, the value 7.5 output from the multiplier 103, and the value 5 output from the multiplier 104. Similar to the above, the selector 105 has the same function as the selector 75 of FIG.
[0136]
When the value of the line width of the initial value set in the register 53 of FIG. 8 is 15, the line width calculator 52 uses the comparators 106 and 107 to calculate the line width of the initial value. The value 15 is compared with the value 8 of the threshold 1 and the value 12 of the threshold 2. The selector 108 outputs a value of 1 to the multiplier 103 when the initial value 15 is larger than the threshold 2 of 12. On the other hand, when the initial value 15 is larger than the threshold 2 of 12, the selector 109 acquires the value 0.5 set in the register 102 and outputs the value to the multiplier 104.
[0137]
The multiplier 103 multiplies the value 15 of the initial value by the value 1 obtained from the selector 108, and outputs the value 15 to the selector 105. The multiplier 104 multiplies the value 15 of the initial value by the value 0.5 obtained from the selector 109, and outputs a value 7.5 to the selector 105.
[0138]
The selector 105 receives the value 15 of the initial value, the value 15 output from the multiplier 103, and the value 7.5 output from the multiplier 104. Similar to the above, the selector 105 has the same function as the selector 75 of FIG.
[0139]
(Address generator (Part 1))
FIG. 14 is a diagram for explaining the configuration of the address generator 43 in FIG. The address generator 43 includes a pen-down determiner 111, a pen-down determiner 112, an AND circuit 113, a drawing coordinate generator 114, and an encoder 115.
[0140]
The address generator 43 receives the coordinates 1 (start point), the coordinates 2 (end point), and the value of the line width. The pen down determiner 111 determines whether or not the coordinate 1 is data being written. Similarly, the pen-down determiner 112 determines whether the coordinate 2 is the data being written. For example, as shown in FIG. 6, since the stroke data includes data representing pen-up / pen-down information, the pen-down determiner 111 and the pen-down determiner 112 determine whether the data is being written. Can be.
[0141]
The encoder 115 is enabled when both coordinates are being written, and the data can be written to the image memory 44. If the coordinates are not being written, the data becomes invalid, and data cannot be written to the image memory 44.
[0142]
The drawing coordinate generator 114 uses the values of the coordinates 1, the coordinates 2, and the line width as input data to calculate the coordinates at which a line is to be drawn.
[0143]
(Drawing coordinate generator)
FIG. 15 is a diagram for explaining an operation example of the drawing coordinate generator 114 in FIG. In FIG. 15, an example will be described in which an image is drawn by a straight line having a line width of 3 between coordinates 1 and 2.
[0144]
The drawing coordinate generator 114 connects the coordinates 1 (start point) and the coordinates 2 (end point) with a straight line, and calculates passing coordinates (a frame drawn by a dotted line in FIG. 15). With respect to the coordinates of an area having a size of 3 × 3 pixels (the hatched portion in FIG. 15) with the calculated coordinates as the center, all the passing coordinates from the start point (coordinate 1) to the end point (coordinate 2) (FIG. , A frame line drawn by a dotted line), and outputs the result to the encoder 115.
[0145]
The encoder 115 in FIG. 14 calculates the address of the image memory to be written from the input coordinate value, and assigns the address for writing the value to the image memory.
[0146]
(Image generator (Part 2))
FIG. 16 is a diagram (part 2) for describing the configuration of the image generator 32 in FIG. The image generator 32 includes an area determiner 41, a memory 121, an address generator 122, an image memory 44, and a register 45. Here, the same parts as those of the image creator 32 in FIG.
[0147]
Although the image creator 32 in FIG. 7 creates an image based on the direction of the stroke data, the image creator 32 in FIG. 16 creates an image based on the positional relationship with adjacent stroke data. The image creator 32 in FIG. 16 changes the value of the line width by the address creator 122.
[0148]
The memory 121 temporarily stores all stroke data input to the image generator 32. Further, the stroke data stored in the memory 121 is read from the address generator 122 as needed.
[0149]
The address generator 122 reads the stroke data stored in the memory 121, determines the line width of the character from the relative positional relationship of the plurality of stroke data, and sets the address for writing to the image memory 44. Generate. Details of the address generator 122 will be described later with reference to FIG.
[0150]
The operation of the image generator 32 will be described below. The image generator 32 detects the maximum value and the minimum value of each of the X coordinate and the Y coordinate of the input stroke data by using the area determination unit 41, and detects a rectangular area where a character is written. In addition, the area determination unit 41 transfers the coordinates of the detected rectangular area to the register 45. The coordinates of the transferred rectangular area are used when character recognition is performed by the character recognizer 34.
[0151]
Further, the image generator 32 temporarily stores all the input stroke data in the memory 121 by using the area determining unit 41. The image generator 32 reads the stroke data from the memory 121 using the address generator 122, and determines the line width of the character from the relative positional relationship between the read stroke data and other stroke data. . The address generator 122 generates an address for writing to the image memory 44 from the determined line width value and the stroke data, and writes the address to the image memory 44.
[0152]
When the writing of the stroke data into the image memory 44 is completed, the character recognizer 34 starts operating, reads the usage area information where the stroke exists stored in the register 45, and stores the data necessary for character recognition in the image memory. Character recognition is performed by reading the character from the reference numeral 44.
[0153]
(Address generator (Part 2))
FIG. 17 is a diagram for explaining the configuration of the address generator 122 of FIG. The address generator 122 includes a data reader 130, a pen down determiner 131, a pen down determiner 132, an AND circuit 133, a pen down determiner 134, a pen down determiner 135, an AND circuit 136, and a parallel / distance determination. 137, a register 138, a 1/3 unit 139, a minimum value selector 140, a drawing coordinate generator 141, and an encoder 142.
[0154]
The address generator 122 converts the i-th stroke data (coordinates i1 and i2) and all other stroke data using the coordinate information, time stamp information, and pen up / down information of the stroke data shown in FIG. By examining the positional relationship, the line width of the i-th stroke data is determined. After determining the line width, the address generator 122 generates coordinates to be drawn, generates an address of the image memory 44 corresponding to the generated coordinates, and writes a value to the image memory 44.
[0155]
The data reader 130 reads the stroke data stored in the memory 121 shown in FIG. The i-th stroke data (coordinates i1 and i2) and the j-th stroke data (coordinates j1 and j2) are read.
[0156]
The pen down determiners 131, 132, 134, and 135 check whether the coordinates i1, i2, j1, and j2 are pen down (while writing), and if all the coordinates are pen down, the parallel / distance determiner 137 is enabled. To
[0157]
The parallel / distance determiner 137 determines whether two strokes (a stroke from the coordinate i1 to the coordinate i2 and a stroke from the coordinate j1 to the coordinate j2) are parallel. If the two strokes are determined to be parallel, the two strokes are determined. Calculate the distance of The parallel / distance determiner 137 calculates distances for all js other than i = j, and outputs the minimum distance among them. The details of the parallel / distance determiner 137 will be described later with reference to FIG.
[0158]
The 1/3 unit 139 reduces the minimum value of the distance between the two strokes output by the parallel / distance determination unit 137 to 1/3. The minimum value selector 140 selects and acquires the smaller one of the distance reduced by 1/3 or the initial value of the line width stored in the register 138.
[0159]
The drawing coordinate generator 141 uses the line width selected by the minimum value selector 140, the coordinates i1, and the coordinates i2 to generate coordinates used for drawing a stroke image. The drawing coordinate generator 141 has the same function as the drawing coordinate generator 114 in FIG.
[0160]
The encoder 142 generates an address for writing to the image memory 44 from the coordinates generated by the drawing coordinate generator 141.
[0161]
An operation example of the address generator 122 will be described below. The address generator 122 reads out the i-th stroke data (coordinates i1 and i2) and the j-th stroke data (coordinates j1 and j2) from the memory 121 shown in FIG. 16 using the data reader 130. .
[0162]
The address generator 122 checks whether or not the read coordinates i1, i2, j1, and j2 are pen-down (while writing) by using the pen-down determiners 131, 132, 134, and 135, and all the coordinates are pen-down. If so, the parallel / distance determiner 137 is enabled.
[0163]
The parallel / distance determiner 137 determines whether two strokes (a stroke from the coordinate i1 to the coordinate i2 and a stroke from the coordinate j1 to the coordinate j2) are parallel. If the two strokes are determined to be parallel, the two strokes are determined. Calculate the distance of The parallel / distance determiner 137 calculates distances for all js other than i = j, and outputs the minimum distance among them.
[0164]
The outputted minimum distance is reduced to 1/3 by the 1/3 divider 139, and the minimum value selector 140 compares the distance reduced to 1/3 with the value stored in the register 138, and determines a smaller value. This value is input to the drawing coordinate generator as a line width.
[0165]
The drawing coordinate generator 141 uses the line width selected by the minimum value selector 140, the coordinates i1, and the coordinates i2 to generate coordinates used for drawing a stroke image. After generating the coordinates, the address generator 122 generates an address of the image memory 44 corresponding to the generated coordinates by using the encoder 142 and writes a value to the image memory 44.
[0166]
(Parallel / distance detector)
FIG. 18 is a diagram for explaining the configuration of the parallel / distance determiner 137 of FIG. The parallel / distance determiner 137 includes an angle calculator 151, an angle calculator 152, a subtractor 153, a comparator 154, a distance calculator 155, a distance calculator 156, a distance calculator 157, and a distance calculator. 158, a minimum value calculator 159, a register 160, a comparator 161, and an AND circuit 162.
[0167]
The angle calculator 151 calculates the inclination (angle) θi of a straight line connecting the coordinates i1 and the coordinates i2. Similarly, the angle calculator 152 calculates the inclination (angle) θj of a straight line connecting the coordinate j1 and the coordinate j2. The angle calculator 151 and the angle calculator 152 have the same function as the angle calculator 61 in FIG.
[0168]
The subtractor 153 calculates the difference between θi and θj, | θi−θj |. The comparator 154 compares the difference calculated by the subtractor 153 with a predetermined threshold. The comparator 154 outputs a signal indicating parallel if the difference (| θi−θj |) is smaller than the threshold, and outputs a signal indicating non-parallel otherwise.
[0169]
The distance calculator 155 calculates the distance between the coordinates i1 and j1, the distance calculator 156 calculates the distance between the coordinates i1 and j2, and the distance calculator 157 calculates the distance between the coordinates i2 and j1. The unit 158 calculates the distance between the coordinate i2 and the coordinate j2.
[0170]
The minimum value calculator 159 outputs the minimum distance among the four calculated distances.
[0171]
The comparator 161 compares the minimum value of the distance calculated by the minimum value calculator 159 with the current minimum value stored in the register 160. If the distance calculated by the minimum value calculator 159 is smaller than the value stored in the register 160 and the comparator 161 determines that the distance is parallel using the AND circuit 162, the comparator 161 determines that the distance is smaller. The value of the register 160 is updated with the distance calculated in step (1). The value of the register 160 is the output value of the parallel / distance determiner 137.
[0172]
An operation example of the parallel / distance determiner 137 will be described below. The parallel / distance determiner 137 uses the angle calculator 151 to calculate the inclination (angle) θi of a straight line connecting the coordinates i1 and the coordinates i2. Similarly, the parallel / distance determiner 137 uses the angle calculator 152 to calculate the inclination (angle) θj of a straight line connecting the coordinates j1 and the coordinates j2.
[0173]
Subsequently, the parallel / distance determiner 137 calculates the difference between θi and θj, | θi−θj |, using the subtractor 153. The comparator 154 compares the difference calculated by the subtractor 153 with a predetermined threshold. The comparator 154 outputs a signal indicating parallel if the difference (| θi−θj |) is smaller than the threshold, and outputs a signal indicating non-parallel otherwise.
[0174]
For example, assuming that the threshold value is 5 degrees, if the difference between θi and θj, | θi−θj |, is smaller than 5 degrees, the two stroke data are determined to be parallel. It is determined that the two stroke data are non-parallel.
[0175]
The parallel / distance determiner 137 uses the distance calculators 155, 156, 157, and 158 to calculate the distance between the coordinate i1 and the coordinate j1, the distance between the coordinate i1 and the coordinate j2, and the coordinate i2 and the coordinate j1, respectively. , And the distance between the coordinate i2 and the coordinate j2 are calculated. Subsequently, the parallel / distance determiner 137 outputs the minimum value of the calculated distance using the minimum value calculator 159.
[0176]
An operation example of the parallel / distance determiner 137 will be described below. The parallel / distance determiner 137 uses the comparator 161 to compare the minimum value of the distance calculated by the minimum value calculator 159 with the current minimum value stored in the register 160. If the distance calculated by the minimum value calculator 159 is smaller than the value stored in the register 160 and the comparator 161 determines that the distance is parallel using the AND circuit 162, the comparator 161 determines that the distance is smaller. The value of the register 160 is updated with the calculated distance calculated in step (1). The value of the register 160 is the output value of the parallel / distance determiner 137.
[0177]
(Flowchart of image creation processing in image creator (part 1))
Hereinafter, an example of the image generation processing will be described using a flowchart. FIG. 19 is a diagram for describing an example of an image generation process in the image creator 32 of FIG. 7 using a flowchart.
[0178]
In FIG. 19, in step S1, the image creator 32 in FIG. 7 acquires the coordinate 1 which is the starting point of the stroke. After step S1, the process proceeds to step S2. In step S2, the image creator 32 shown in FIG.
[0179]
After step S2, the process proceeds to step S3. In step S3, the area determiner 41 shown in FIG. 7 detects the maximum value and the minimum value of the X coordinate and the Y coordinate of the coordinate 1 and the coordinate 2, respectively. A rectangular area including the coordinates 1 and the coordinates 2 is calculated.
[0180]
Proceeding to step S4 following step S3, in step S4, the line width changer 33 in FIG. 7 changes the line width based on the direction of the straight line connecting the coordinates 1 and the coordinates 2. The details of this step will be described later with reference to FIG.
[0181]
Proceeding to step S5 following step S4, in step S5, the address generator 43 of FIG. 7 generates a stroke image from the coordinates 1, the coordinates 2, and the line width.
[0182]
After step S5, the process proceeds to step S6. In step S6, it is determined whether the processing has been completed for all coordinates. If it is determined that the process has been completed (YES in step S6), the process proceeds to step S7. If it is determined that the process has not been completed (NO in step S6), the process proceeds to step S8.
[0183]
In step S7, the character recognition device 34 of FIG. 7 performs character recognition, and ends. In step S8, the coordinates 1 and the coordinates 2 are replaced, and the processing from step S2 is repeated. In step S7, for example, character recognition is performed using a method such as "Japanese Patent Laid-Open No. 4-2055281""character recognition method" or "Japanese Patent Laid-Open No. 4-47486""character recognition method".
[0184]
(Flow chart of the line width changing process in the line width changing device)
FIG. 20 is a diagram for explaining an example of the line width changing process (step S4) in the line width changing unit 33 of FIG. 8 using a flowchart.
[0185]
20, in step S11, the direction determiner 51 in FIG. 8 calculates the direction of the stroke. The details of this step will be described later with reference to FIG.
[0186]
After step S11, the process proceeds to step S12. In step S12, the line width calculator 52 in FIG. 8 changes the line width based on the direction calculated in step S11. The details of this step will be described later with reference to FIGS. 22, 23, 24, and 25.
[0187]
(Flow chart of the direction determination process in the direction determiner)
FIG. 21 is a diagram for explaining an example of the direction determination process (step S11) in the direction determiner 51 of FIG. 9 using a flowchart. 21, in step S21, the direction determiner 51 in FIG. 9 acquires coordinates 1 (x1, y1) and coordinates 2 (x2, y2).
[0188]
After step S21, the process proceeds to step S22. In step S22, the angle calculator 61 of FIG. 9 connects the coordinate 1 (x1, y1) input in step S21 and the coordinate 2 (x2, y2). The angle θ of the straight line is calculated using the equation of the angle calculation method shown in FIG.
[0189]
After step S22, the process proceeds to step S23. In step S23, the angle converter 62 shown in FIG. 9 uses the angle conversion table shown in FIG. Is converted to a degree θt (an integer value of 0 to 3).
[0190]
(Flow chart of line width calculation processing in line width calculator (No. 1))
FIG. 22 is a diagram for explaining an example of the line width calculation process (step S12) in the line width calculator 52 of FIG. 10 using a flowchart.
[0191]
In FIG. 22, in step S31, the initial value of the line width is input to the line width calculator 52 from the register 53 of FIG. Proceeding to step S32 following step S31, the inclination degree θt is input to the line width calculator 52 from the direction determiner 51 in FIG.
[0192]
After step S32, the process proceeds to step S33. In step S33, the selector 75 in FIG. 10 determines whether or not θt is 0 (zero). If it is determined that θt is 0 (YES in step S33), the process proceeds to step S35, and if it is determined that θt is not 0 (NO in step S33), the process proceeds to step S34.
[0193]
In step S34, the adder 73 in FIG. 10 adds a predetermined value to the line width, increases the line width, and ends the line width calculation process.
[0194]
In step S35, the selector 75 of FIG. 10 determines whether or not the aforementioned θt is 2. If it is determined that θt is 2 (YES in step S35), the process proceeds to step S36, and if it is determined that θt is not 2 (NO in step S35), the line width calculation process ends.
[0195]
In step S36, the subtractor 74 in FIG. 10 subtracts a predetermined value from the line width (the lower limit of the subtraction result is set to 1), reduces the line width, and ends the line width calculation process.
[0196]
(Flowchart of line width calculation processing in line width calculator (part 2))
FIG. 23 is a view for explaining another example of the line width calculation process (the step S12) in the line width calculator 52 of FIG. 11 using a flowchart.
[0197]
23, in step S41, the initial value of the line width is input from the register 53 of FIG. 8 to the line width calculator 52 of FIG. Proceeding to step S42 following step S41, the inclination degree θt is input from the direction determiner 51 in FIG. 8 to the line width calculator 52 in FIG.
[0198]
After step S42, the process proceeds to step S43. In step S43, the comparator 86 and the comparator 87 in FIG. 11 determine that the initial value of the line width obtained from the register 53 in FIG. 2 or less). If it is determined that the initial value of the line width is within a predetermined range (YES in step S43), the process proceeds to step S44, and if it is determined that the initial value of the line width is not within a predetermined range (NO in step S43). The process proceeds to step S48.
[0199]
In step S44, the selector 85 of FIG. 11 determines whether or not the aforementioned θt is 0 (zero). If it is determined that θt is 0 (YES in step S44), the process proceeds to step S45. If it is determined that θt is not 0 (NO in step S44), the process proceeds to step S46.
[0200]
In step S45, the adder 83 adds a predetermined value to the line width to increase the line width, and ends the line width calculation process.
[0201]
In step S46, the selector 85 of FIG. 11 determines whether or not the aforementioned θt is 2. If it is determined that θt is 2 (YES in step S46), the process proceeds to step S47, and if it is determined that θt is not 2 (NO in step S46), the line width calculation process ends.
[0202]
In step S47, the subtractor 84 in FIG. 11 subtracts a predetermined value from the initial value of the line width to reduce the line width, and ends the line width calculation process.
[0203]
In step S48, the comparator 86 determines whether the initial value of the line width is larger than a predetermined range. If it is determined that the initial value of the line width is larger than the predetermined range (YES in step S48), the process proceeds to step S49. If it is determined that the line width is not larger than the predetermined range (NO in step S48), the process proceeds to step S51. move on.
[0204]
In step S49, the selector 85 of FIG. 11 determines whether or not the aforementioned θt is 2. If it is determined that θt is 2 (YES in step S49), the process proceeds to step S50, and if it is determined that θt is not 2 (NO in step S49), the line width calculation process ends.
[0205]
In step S50, the subtractor 84 in FIG. 11 subtracts a predetermined value from the initial value of the line width to reduce the line width, and ends the line width calculation process.
[0206]
In step S51, the selector 85 of FIG. 11 determines whether or not θt is 0 (zero). If it is determined that θt is 0 (YES in step S51), the process proceeds to step S52. If it is determined that θt is not 0 (NO in step S51), the line width calculation process ends.
[0207]
In step S52, the adder 83 of FIG. 11 adds a predetermined value to the initial value of the line width, increases the line width, and ends the line width calculation process.
[0208]
(Flowchart of line width calculation processing in line width calculator (part 3))
FIG. 24 is a diagram for explaining an example of the line width calculation process (step S12) in the line width calculator 52 of FIG. 12 using a flowchart.
[0209]
24, in step S61, the initial value of the line width of the line width calculator 52 of FIG. 12 is input from the register 53 of FIG. Proceeding to step S62 following step S61, the inclination degree θt is input to the line width calculator 52 in FIG. 12 from the direction determiner 51 in FIG.
[0210]
After step S62, the process proceeds to step S63, in which it is determined whether the selector θt in FIG. 12 is 0 (zero). If it is determined that θt is 0 (YES in step S63), the process proceeds to step S65. If it is determined that θt is not 0 (NO in step S63), the process proceeds to step S64.
[0211]
In step S64, the multiplier 93 in FIG. 12 multiplies the initial value of the line width by a predetermined value greater than 1 to increase the line width, and ends the line width calculation process.
[0212]
In step S65, the selector 95 in FIG. 12 determines whether or not the aforementioned θt is 2. If it is determined that θt is 2 (YES in step S65), the process proceeds to step S66. If it is determined that θt is not 2 (NO in step S65), the line width calculation process ends.
[0213]
In step S66, the multiplier 94 of FIG. 12 multiplies the initial value of the line width by a predetermined value smaller than 1 (the lower limit of the multiplication result is set to 1), reduces the line width, and calculates the line width. The process ends.
[0214]
(Flowchart of line width calculation processing in line width calculator (No. 4))
FIG. 25 is a diagram for explaining an example of the line width calculation process (step S12) in the line width calculator 52 of FIG. 13 using a flowchart.
[0215]
25, in step S71, the initial value of the line width is input from the register 53 of FIG. 8 to the line width calculator 52 of FIG. Proceeding to step S72 following step S71, the inclination degree θt is input from the direction determiner 51 in FIG. 8 to the line width calculator 52 in FIG.
[0216]
Proceeding to step S73 following step S72, in step S73, the comparator 106 and the comparator 107 in FIG. 13 determine whether the initial value of the line width is within a predetermined range (threshold 1 or more and threshold 2 or less). judge. If it is determined that the initial value of the line width is within the predetermined range (YES in step S73), the process proceeds to step S74, and if it is determined that the line width is not within the predetermined range (NO in step S73), step S78 is performed. Proceed to.
[0217]
In step S74, the selector 105 in FIG. 13 determines whether or not θt is 0 (zero). If it is determined that θt is 0 (YES in step S74), the process proceeds to step S75. If it is determined that θt is not 0 (NO in step S74), the process proceeds to step S76.
[0218]
In step S75, the multiplier 103 in FIG. 13 multiplies the initial value of the line width by a predetermined value larger than 1 to increase the line width, and ends the line width calculation process.
[0219]
In step S76, the selector 105 in FIG. 13 determines whether or not the aforementioned θt is 2. If it is determined that θt is 2 (YES in step S76), the process proceeds to step S77. If it is determined that θt is not 2 (NO in step S76), the line width calculation process ends.
[0220]
In step S77, the multiplier 104 in FIG. 13 multiplies the initial value of the line width by a predetermined value smaller than 1 to reduce the line width, and ends the line width calculation process.
[0221]
In step S78, the comparator 107 in FIG. 13 determines whether the initial value of the line width is larger than a predetermined range (threshold 2). If it is determined that the line width is larger than the predetermined range (YES in step S78), the process proceeds to step S79. If it is determined that the line width is not larger than the predetermined range (NO in step S78), the process proceeds to step S81.
[0222]
In step S79, the selector 105 of FIG. 13 determines whether or not the aforementioned θt is 2. If it is determined that θt is 2 (YES in step S79), the process proceeds to step S80, and if it is determined that θt is not 2 (NO in step S79), the line width calculation process ends.
[0223]
In step S80, the multiplier 104 of FIG. 13 multiplies the line width by a predetermined value smaller than 1, reduces the line width, and ends the line width calculation process.
[0224]
In step S81, the selector 105 in FIG. 13 determines whether or not θt is 0 (zero). If it is determined that θt is 0 (YES in step S81), the process proceeds to step S82, and if it is determined that θt is not 0 (NO in step S81), the line width calculation process ends.
[0225]
In step S82, the multiplier 103 in FIG. 13 multiplies the initial value of the line width by a predetermined value larger than 1 to increase the line width, and ends the line width calculation process.
[0226]
(Flowchart of stroke image generation processing in address generator)
FIG. 26 is a diagram for explaining an example of the stroke image generation process (the step S5) in the address generator 43 of FIG. 14 using a flowchart.
[0227]
In FIG. 26, in step S91, the pen down determiner 111 and the pen down determiner 112 determine whether both the coordinates 1 and 2 are pen down (during writing). If it is determined that the pen is down (YES in step S92), the process proceeds to step S92, and if it is determined that the pen is not down (NO in step S92), the stroke image generation process ends.
[0228]
In step S92, the drawing coordinate generator 114 generates drawing coordinates. Subsequent to step S92, the process proceeds to step S93. In step S93, the encoder 115 calculates an address to be written in the image memory 44 from the coordinate value generated in step S92, and assigns an address.
[0229]
Subsequent to step S93, the process proceeds to step S94. In step S94, a value is written to the address mentioned in step S93.
[0230]
(Flowchart of image generation processing in image generator (part 2))
FIG. 27 is a diagram illustrating an example of an image generation process in the image generator 32 of FIG. 16 using a flowchart.
[0231]
27, in step S101, the area determination unit 41 in FIG. 16 obtains the minimum and maximum values of the X and Y coordinates of all the coordinates from the stroke data.
[0232]
After step S101, the process proceeds to step S102. In step S102, the area determination unit 41 in FIG. 16 temporarily stores all the coordinate data calculated in step S101 in the memory 121.
[0233]
After step S102, the process proceeds to step S103. In step S103, the address generator 122 in FIG. 16 reads out all the image data stored in step S102, and generates a stroke image.
[0234]
After step S103, the process proceeds to step S104. In step S104, the character recognition device 34 in FIG. 16 performs character recognition of the stroke image created in step S103. As described above, the character recognition in step S104 is performed by using a method described in Japanese Patent Application Laid-Open No. 4-205,281 or Japanese Patent Application Laid-Open No. 4-47486.
[0235]
(Flowchart of stroke image generation processing in address generator)
FIG. 28 is a view for explaining an example of the stroke image generation processing (the above-described step S103) in the address generator 122 of FIG. 17 using a flowchart.
[0236]
In FIG. 28, in a step S111, 1 is substituted for a variable i. After step S111, the process proceeds to step S112. In step S112, the data reader 130 in FIG. 17 reads the i-th and (i + 1) -th coordinate data (stroke 1) stored in the memory 121.
[0237]
After step S112, the process proceeds to step S113. In step S113, the pen-down determiner 131 and the pen-down determiner 132 shown in FIG. Is determined. If both are determined to be pen down (YES in step S113), the process proceeds to step S116, and if it is determined that neither of them is pen down (NO in step S113), the process proceeds to step S114.
[0238]
In step S114, the drawing coordinate generator 141 in FIG. 17 determines whether or not the image generation processing of the stroke 1 to be processed has been completed. If it is determined that the process has been completed (YES in step S114), the stroke image generation process is completed. If it is determined that the process has not been completed (NO in step S114), the process proceeds to step S115. In step S115, the variable i is incremented, and the processing from step S112 is repeated again.
[0239]
In step S116, 1 is substituted for a variable j. Proceeding to step S117 following step S116, in step S117, the data reader 130 of FIG. 17 stores the j-th and (j + 1) -th coordinate data (stroke 2) not i = j stored in the memory 121 of FIG. Read out.
[0240]
After step S117, the process proceeds to step S118. In step S118, the pen-down determiner 134 and the pen-down determiner 135 in FIG. 17 determine that both the j-th coordinate and the (j + 1) -th coordinate read out with the pen-down ( Is determined). If both are determined to be pen down (YES in step S118), the process proceeds to step S119, and if it is determined that one of them is not pen down (NO in step S118), the process proceeds to step S121.
[0241]
In step S119, the parallel / distance determiner 137 of FIG. 17 determines whether or not the stroke 1 and the stroke 2 are parallel. If it is determined that they are parallel (YES in step S119), the process proceeds to step S120. If it is determined that they are not parallel (NO in step S119), the process proceeds to step S121.
[0242]
In step S120, the parallel / distance determiner 137 in FIG. 17 calculates the distance between the stroke 1 and the stroke 2, and updates the minimum distance between the stroke 1 and another stroke.
[0243]
In step S121, it is determined whether the image generation processing of the stroke 2 to be processed has been completed. If it is determined that the process has been completed (YES in step S121), the process proceeds to step S123. If it is determined that the process has not been completed (NO in step S121), the process proceeds to step S122. In step S122, the variable j is incremented, and the processing from step S117 is repeated again.
[0244]
In step S123, the 1/3 device 139 in FIG. 17 sets the line width to 1/3 of the minimum distance between the stroke 1 and another stroke. Here, if there is no stroke parallel to the stroke 1, the step S120 is not executed, and the minimum distance cannot be calculated. However, a predetermined value is previously stored in the register 138 of FIG. By setting this value as the initial value, this value can be set as the minimum distance.
[0245]
After step S123, the process proceeds to step S124. In step S124, the drawing coordinate generator 141 of FIG. 17 generates the drawing coordinates of the stroke 1. After step S124, the process proceeds to step S125. In step S125, the encoder 142 in FIG. 17 generates an address to be written in the image memory 44 from the drawing coordinates generated in step S123.
[0246]
After step S125, the process proceeds to step S126. In step S126, the encoder 142 in FIG. 17 writes the stroke image at the address generated in step S125.
[0247]
After step S126, the process proceeds to step S127. In step S127, the drawing coordinate generator 141 in FIG. 17 determines whether the image generation processing of the stroke 1 to be processed has been completed. If it is determined that the process has been completed (YES in step S127), the stroke image generation process is completed. If it is determined that the process has not been completed (NO in step S127), the process proceeds to step S115.
[0248]
(Flowchart of parallel determination processing in parallel / distance determiner)
FIG. 29 is a view for explaining an example of the parallel determination process (step S120) in the parallel / distance determiner 137 of FIG. 18 using a flowchart.
[0249]
29, in step S131, the parallel / distance determination unit 137 in FIG. 18 acquires the coordinates i and the coordinates (i + 1). After step S131, the process proceeds to step S132. In step S132, the angle calculator 151 of FIG. 18 calculates the inclination (angle) θi of the straight line connecting the coordinates i and the coordinates (i + 1) acquired in step S131. calculate. Note that the angle θi is calculated using the equation of the angle calculation method shown in FIG.
[0250]
After step S132, the process proceeds to step S133. In step S133, the parallel / distance determiner 137 in FIG. 18 acquires the coordinates j and the coordinates (j + 1). After step S133, the process proceeds to step S134. In step S134, the angle calculator 152 in FIG. 18 calculates the inclination (angle) θj of the straight line connecting the coordinates j and the coordinates (j + 1) acquired in step S133. calculate. Similarly, the angle θj is calculated using the equation of the angle calculation method shown in FIG.
[0251]
After step S134, the process proceeds to step S135. In step S135, the subtractor 153 of FIG. 18 calculates an angle difference | θi−θj | between the angle θi and the angle θj.
[0252]
After step S135, the process proceeds to step S136. In step S136, the comparator 154 in FIG. 18 determines whether the angle difference | θi−θj | calculated in step S135 is smaller than a predetermined angle. If it is determined that the angle is smaller than the angle (YES in step S136), the two straight lines are determined to be parallel. If it is determined that the angle is greater than the angle (NO in step S136), the two straight lines are determined to be non-parallel.
[0253]
(Flowchart of distance calculation processing in parallel / distance determiner)
FIG. 30 is a view for explaining an example of the distance calculation processing (step S120) in the parallel / distance determiner 137 of FIG. 18 using a flowchart.
[0254]
In FIG. 30, in step S141, the parallel / distance determination unit 137 in FIG. 18 acquires the coordinates i and the coordinates (i + 1). After step S141, the process proceeds to step S142. In step S142, the parallel / distance determiner 137 in FIG. 18 acquires the coordinates j and the coordinates (j + 1).
[0255]
After step S142, the process proceeds to step S143. In step S143, the distance calculator 155 of FIG. 18 calculates the distance between the coordinates i and the coordinates j. After step S143, the process proceeds to step S144. In step S144, the distance calculator 156 of FIG. 18 calculates a distance between the coordinate i and the coordinate (j + 1). After step S144, the process proceeds to step S145. In step S145, the distance calculator 157 in FIG. 18 calculates the distance between the coordinate (i + 1) and the coordinate j. After step S145, the process proceeds to step S146. In step S146, the distance calculator 158 of FIG. 18 calculates a distance between the coordinates (i + 1) and the coordinates (j + 1).
[0256]
After step S146, the process proceeds to step S147. In step S147, the minimum value calculator 159 in FIG. 18 calculates the minimum value among the four distances calculated above.
[0257]
After step S147, the process proceeds to step S148. In step S148, the comparator 161 of FIG. 18 compares the minimum value of the distance calculated in step S147 with the current minimum value stored in the register 160 of FIG. Compare. If it is determined that the minimum value of the distance calculated in step S147 is smaller (YES in step S148), the process proceeds to step S149, and if it is determined that the current minimum value stored in register 160 is smaller (step S148). (NO in S148), ends distance calculation processing.
[0258]
In step S149, the comparator 161 in FIG. 18 updates the value in the register 160 by substituting the minimum value of the distance calculated in step S147 into the register 160.
[0259]
【The invention's effect】
As described above, according to the present invention, highly accurate character recognition can be performed.
[0260]
[Brief description of the drawings]
FIG. 1 is a configuration diagram of a conventional character recognition device using a bitmap data reading method.
FIG. 2 is a configuration diagram of a conventional character recognition device using a time-series coordinate data reading method.
FIG. 3 is a diagram for explaining an example of creating a character image based on handwritten coordinate data and performing character recognition using a character “A”;
FIG. 4 is a diagram for explaining an example in which a character image is created based on handwritten coordinate data and character recognition is performed using the character “East”;
FIG. 5 is a diagram showing an example of a character recognition device according to the present invention.
FIG. 6 is a diagram showing a format of stroke data.
FIG. 7 is a diagram (part 1) for describing the configuration of an image generator;
FIG. 8 is a diagram illustrating a configuration of a line width changer.
FIG. 9 is a diagram for describing a direction determiner in detail.
FIG. 10 is a diagram (part 1) for describing the configuration of a line width calculator;
FIG. 11 is a diagram (part 2) for explaining the configuration of the line width calculator;
FIG. 12 is a diagram (part 3) for explaining the configuration of the line width calculator;
FIG. 13 is a diagram (part 4) for explaining the configuration of the line width calculator;
FIG. 14 is a diagram (part 1) for describing the configuration of an address generator;
FIG. 15 is a diagram for describing an operation example of a drawing coordinate generator.
FIG. 16 is a diagram (part 2) for explaining the configuration of the image generator;
FIG. 17 is a diagram (part 2) for describing the configuration of the address generator;
FIG. 18 is a diagram illustrating a configuration of a parallel / distance determination device.
FIG. 19 is a diagram illustrating an example of an image generation process in the image generator using a flowchart.
FIG. 20 is a diagram illustrating an example of a line width changing process (step S4) in the line width changing device, using a flowchart.
FIG. 21 is a diagram illustrating an example of a direction determination process (step S11) in a direction determiner using a flowchart.
FIG. 22 is a diagram (part 1) for describing an example of a line width calculation process (step S12) in the line width calculator using a flowchart.
FIG. 23 is a diagram (part 2) illustrating an example of a line width calculation process (step S12) in the line width calculator using a flowchart.
FIG. 24 is a diagram (part 3) for describing an example of the line width calculation process (step S12) in the line width calculator using a flowchart.
FIG. 25 is a diagram (part 4) for describing an example of the line width calculation process (step S12) in the line width calculator using a flowchart.
FIG. 26 is a diagram illustrating an example of a stroke image generation process (step S5) in the address generator using a flowchart.
FIG. 27 is a diagram illustrating an example of an image generation process in the image generator using a flowchart.
FIG. 28 is a diagram illustrating an example of a stroke image generation process (step S103) in the address generator using a flowchart.
FIG. 29 is a diagram illustrating an example of a parallel determination process (step S120) in the parallel / distance determiner using a flowchart.
FIG. 30 is a diagram illustrating an example of a distance calculation process (step S120) in the parallel / distance determiner using a flowchart.
[Explanation of symbols]
10 Character recognition device
11 Handwriting input device
12 Communication unit
13 Image forming unit
14 Character Recognition Unit
15 Storage unit
20 character recognition device
21 Handwriting input device
22 Communication unit
23 Character recognition unit
24 storage unit
30 character recognition device
31 Image Creator
32 Image Generator
33 Line width changer
34 character recognizer
35 storage unit
41 area judgment device
42 buffers
43 Address Generator
44 Image memory
45 registers
51 Direction judgment device
52 Line width calculator
53 registers
61 Angle calculator
62 Angle converter
71 registers
72 registers
73 adder
74 Subtractor
75 Selector
81 registers
82 registers
83 adder
84 Subtractor
85 Selector
86 comparator
87 comparator
88 selector
89 Selector
91 registers
92 registers
93 Multiplier
94 Multiplier
95 Selector
101 Register
102 registers
103 Multiplier
104 Multiplier
105 Selector
106 comparator
107 comparator
108 Selector
109 Selector
111 Pen-down detector
112 Pen down detector
113 AND circuit
114 Drawing coordinate generator
115 encoder
121 memory
122 address generator
130 Data reader
131 Pen down judgment device
132 Pen down judgment device
133 AND circuit
134 Pen Down Judge
135 pen down judgment device
136 AND circuit
137 Parallel / Distance Judge
138 registers
139 1/3 container
140 Minimum value selector
141 Drawing coordinate generator
142 encoder
151 Angle calculator
152 Angle calculator
153 Subtractor
154 comparator
155 Distance calculator
156 Distance calculator
157 Distance calculator
158 Distance calculator
159 Minimum value calculator
160 registers
161 comparator

Claims (20)

複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、
前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手段を有することを特徴とする手書き文字認識装置。
In a handwritten character recognition device for performing character recognition of a handwritten character image of a line of a predetermined width generated from a handwritten character string represented by a plurality of stroke data,
A handwritten character recognition device comprising a line width changing means for changing the predetermined width based on the direction of the stroke data.
前記線幅変更手段は、前記所定幅を細くする細線化手段を有することを特徴とする請求項1記載の手書き文字認識装置。2. The handwritten character recognition device according to claim 1, wherein the line width changing unit includes a thinning unit that narrows the predetermined width. 前記所定幅を規定する値を記憶する第一記憶装置と、
所定の値を記憶する第二記憶装置とを更に有し、
前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算し、その減算した値に基づいて線幅を決定することを特徴とする請求項2記載の手書き文字認識装置。
A first storage device that stores a value that defines the predetermined width,
A second storage device for storing a predetermined value,
The thinning means subtracts a value stored in the second storage device from a value stored in the first storage device, and determines a line width based on the subtracted value. The handwritten character recognition device according to claim 2.
前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算しないことを特徴とする請求項3記載の文字認識装置。
Further comprising a first determiner to determine whether the value stored in the first storage device is smaller than a predetermined value,
When the value stored in the first storage device is determined by the first determiner to be smaller than the predetermined value, the thinning unit is stored in the first storage device. 4. The character recognition device according to claim 3, wherein the value stored in the second storage device is not subtracted from the stored value.
前記所定幅を規定する値を記憶する第一記憶装置と、
1未満の所定の値を記憶する第三記憶装置とを更に有し、
前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することを特徴とする請求項2記載の手書き文字認識装置。
A first storage device that stores a value that defines the predetermined width,
A third storage device that stores a predetermined value less than 1.
The thinning means multiplies a value stored in the first storage device by a value stored in the third device, and determines a line width based on the multiplied value. Item 2. The handwritten character recognition device according to Item 2.
前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三記憶装置に記憶されている値を乗算しないことを特徴とする請求項5記載の文字認識装置。
Further comprising a first determiner to determine whether the value stored in the first storage device is smaller than a predetermined value,
When the value stored in the first storage device is determined by the first determiner to be smaller than the predetermined value, the thinning unit is stored in the first storage device. 6. The character recognition device according to claim 5, wherein the value stored is not multiplied by the value stored in the third storage device.
前記線幅変更手段は、前記所定幅を太くする太線化手段を有することを特徴とする請求項1記載の手書き文字認識装置。2. The handwritten character recognition device according to claim 1, wherein the line width changing unit includes a thick line changing unit that increases the predetermined width. 前記所定幅を規定する値を記憶する第一記憶装置と、
所定の値を記憶する第四記憶装置とを更に有し、
前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算し、その加算した値に基づいて線幅を決定することを特徴とする請求項7記載の手書き文字認識装置。
A first storage device that stores a value that defines the predetermined width,
A fourth storage device for storing a predetermined value,
The thick line adding means adds a value stored in the fourth storage device to a value stored in the first storage device, and determines a line width based on the added value. The handwritten character recognition device according to claim 7.
前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算しないことを特徴とする請求項8記載の文字認識装置。
Further comprising a second determiner to determine whether the value stored in the first storage device is greater than a predetermined value,
If the value stored in the first storage device is determined by the second determiner to be greater than the predetermined value, the thickening means is stored in the first storage device. 9. The character recognition device according to claim 8, wherein the value stored in the fourth storage device is not added to the value.
前記所定幅を規定する値を記憶する第一記憶装置と、
1を超える所定の値を記憶する第五記憶装置とを更に有し、
前記太線化手段は、前記第五記憶装置に記憶されている値に前記第二記憶装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することを特徴とする請求項7記載の手書き文字認識装置。
A first storage device that stores a value that defines the predetermined width,
A fifth storage device for storing a predetermined value exceeding 1;
The thickening means multiplies a value stored in the fifth storage device by a value stored in the second storage device, and determines a line width based on the multiplied value. The handwritten character recognition device according to claim 7.
前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算しないことを特徴とする請求項10記載の文字認識装置。
Further comprising a second determiner to determine whether the value stored in the first storage device is greater than a predetermined value,
If the value stored in the first storage device is determined by the second determiner to be greater than the predetermined value, the thickening means is stored in the first storage device. 11. The character recognition device according to claim 10, wherein a value stored is not multiplied by a value stored in the fifth storage device.
前記線幅変更手段は、
前記所定幅を細くする細線化手段と、
前記所定幅を太くする太線化手段とを有することを特徴とする請求項1記載の手書き文字認識装置。
The line width changing means,
Thinning means for narrowing the predetermined width;
2. The handwritten character recognition device according to claim 1, further comprising a thickening unit that increases the predetermined width.
複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、
前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手段を有することを特徴とする手書き文字認識装置。
In a handwritten character recognition device for performing character recognition of a handwritten character image of a line of a predetermined width generated from a handwritten character string represented by a plurality of stroke data,
A handwritten character recognition device comprising a line width changing means for changing the predetermined width based on a positional relationship between adjacent stroke data.
前記線幅変更手段は、当該ストロークデータから生成された線幅を規定する値及び記憶装置に記憶されている所定の線幅を規定する値のうちどちらか一方、小さい方の値を選択して線幅を決定することを特徴とする請求項13記載の手書き文字認識装置。The line width changing means selects a smaller one of a value defining a line width generated from the stroke data and a value defining a predetermined line width stored in a storage device, and 14. The handwritten character recognition device according to claim 13, wherein the line width is determined. 前記ストロークデータから生成された線幅は、当該ストロークデータと隣接するストロークデータとの距離の2分の1未満であることを特徴とする請求項14記載の手書き文字認識装置。15. The handwritten character recognition device according to claim 14, wherein a line width generated from the stroke data is less than half a distance between the stroke data and an adjacent stroke data. 当該ストロークデータと隣接するストロークデータとの距離と角度を算出する距離・角度算出手段を更に有し、
該距離・角度算出手段により算出された距離に基づいて、前記ストロークデータから生成された線幅を決めることを特徴とする請求項14記載の手書き文字認識装置。
Further having a distance and angle calculation means for calculating the distance and angle between the stroke data and adjacent stroke data,
15. The handwritten character recognition device according to claim 14, wherein a line width generated from the stroke data is determined based on the distance calculated by the distance / angle calculation unit.
複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、
前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更段階を有することを特徴とする手書き文字認識方法。
In a handwritten character recognition method for performing character recognition of a handwritten character image of a line of a predetermined width generated from a handwritten character string represented by a plurality of stroke data,
A method for recognizing handwritten characters, comprising a step of changing the predetermined width based on a direction of the stroke data.
複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、
前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更段階を有することを特徴とする手書き文字認識方法。
In a handwritten character recognition method for performing character recognition of a handwritten character image of a line of a predetermined width generated from a handwritten character string represented by a plurality of stroke data,
A method for recognizing handwritten characters, comprising a line width changing step of changing the predetermined width based on a positional relationship between adjacent stroke data.
複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、
前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手順をコンピュータに実行させることを特徴とする手書き文字認識プログラム。
In a handwritten character recognition program for performing character recognition of a handwritten character image of a line of a predetermined width generated from a handwritten character string represented by a plurality of stroke data,
A program for causing a computer to execute a line width changing procedure of changing the predetermined width based on the direction of the stroke data.
複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、
前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手順をコンピュータに実行させることを特徴とする手書き文字認識プログラム。
In a handwritten character recognition program for performing character recognition of a handwritten character image of a line of a predetermined width generated from a handwritten character string represented by a plurality of stroke data,
A program for causing a computer to execute a line width changing procedure for changing the predetermined width based on a positional relationship between adjacent stroke data.
JP2002242551A 2002-08-22 2002-08-22 Handwritten character recognition device, handwritten character recognition method, and handwritten character recognition program Expired - Fee Related JP4130106B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002242551A JP4130106B2 (en) 2002-08-22 2002-08-22 Handwritten character recognition device, handwritten character recognition method, and handwritten character recognition program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002242551A JP4130106B2 (en) 2002-08-22 2002-08-22 Handwritten character recognition device, handwritten character recognition method, and handwritten character recognition program

Publications (2)

Publication Number Publication Date
JP2004086256A true JP2004086256A (en) 2004-03-18
JP4130106B2 JP4130106B2 (en) 2008-08-06

Family

ID=32051604

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002242551A Expired - Fee Related JP4130106B2 (en) 2002-08-22 2002-08-22 Handwritten character recognition device, handwritten character recognition method, and handwritten character recognition program

Country Status (1)

Country Link
JP (1) JP4130106B2 (en)

Also Published As

Publication number Publication date
JP4130106B2 (en) 2008-08-06

Similar Documents

Publication Publication Date Title
JP2012203458A (en) Image processor and program
US10579868B2 (en) System and method for recognition of objects from ink elements
US20230008529A1 (en) Gesture stroke recognition in touch-based user interface input
JP6055065B1 (en) Character recognition program and character recognition device
JP2000235619A (en) Surface image processor and its program storage medium
US20210365179A1 (en) Input apparatus, input method, program, and input system
JP4565396B2 (en) Image processing apparatus and image processing program
JP2002207964A (en) Device and method for image processing for generating binary image from multi-valued image
TWM623309U (en) English font image recognition system
JP2940956B2 (en) Line figure feature extraction method
CN115359502A (en) Image processing method, device, equipment and storage medium
CN113392820B (en) Dynamic gesture recognition method and device, electronic equipment and readable storage medium
JP2006227824A (en) Drawing recognition method and device
JP2004086256A (en) Device, method and program for recognizing handwritten character
WO2020080300A1 (en) Input apparatus, input method, program, and input system
JP4350228B2 (en) Pattern recognition method and apparatus
JP2000076378A (en) Character recognizing method
JP6503850B2 (en) Range specification program, range specification method and range specification apparatus
JP3577191B2 (en) Image processing method and apparatus
EP4086744A1 (en) Gesture stroke recognition in touch-based user interface input
JP2010092159A (en) Image data decision device, image data decision system and program
KR101730711B1 (en) Method and apparatus for restoring drawing order of stroke
JP2755299B2 (en) Image processing method
JP2022176360A (en) Recognition processing device, recognition processing program, recognition processing method, and recognition processing system
CN113128603A (en) Text classification method, device, equipment and storage medium

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20071220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080307

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: 20080422

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080520

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110530

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120530

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120530

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130530

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130530

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees