JP4130106B2 - 手書き文字認識装置、手書き文字認識方法及び手書き文字認識プログラム - Google Patents
手書き文字認識装置、手書き文字認識方法及び手書き文字認識プログラム Download PDFInfo
- Publication number
- JP4130106B2 JP4130106B2 JP2002242551A JP2002242551A JP4130106B2 JP 4130106 B2 JP4130106 B2 JP 4130106B2 JP 2002242551 A JP2002242551 A JP 2002242551A JP 2002242551 A JP2002242551 A JP 2002242551A JP 4130106 B2 JP4130106 B2 JP 4130106B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- line width
- character recognition
- width
- storage device
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Character Input (AREA)
- Character Discrimination (AREA)
Description
【発明の属する技術分野】
本発明は、手書き文字認識装置、手書き文字認識方法及び手書き文字認識プログラムに係り、特に複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置、手書き文字認識方法及び手書き文字認識プログラムに関する。
【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】
【課題を解決するための手段】
本発明に係る手書き文字認識装置は、ストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、前記ストロークデータを構成する、始点と終点の二つの座標データを結ぶ直線の角度を算出し、該算出した直線の角度が、予め定められた水平に近い所定の範囲の角度であるならば前記所定幅より細い線幅に前記直線の幅を設定し、予め定められた垂直に近い所定の範囲の角度であるならば前記所定幅より太い線幅に前記直線の幅を設定する線幅変更手段と、前記ストロークデータに基づいて、前記線幅変更手段によって設定された線幅で手書き文字画像を生成する画像生成手段と、前記画像生成手段で生成された手書き文字画像に対して文字認識処理を行う文字認識手段と、を備えることを特徴とする。
【0017】
また、本発明に係る手書き文字認識装置の一形態では、前記所定幅を規定する値を記憶する第一記憶装置と、所定の値を記憶する第二記憶装置とを更に有し、前記線幅変更手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算し、その減算した値に基づいて前記直線の幅を決定することを特徴とする。
【0018】
また、本発明に係る手書き文字認識装置の一形態では、前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記線幅変更手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算しないことを特徴とする。
【0019】
また、本発明に係る手書き文字認識装置の一形態では、前記所定幅を規定する値を記憶する第一記憶装置と、1未満の所定の値を記憶する第三記憶装置とを更に有し、前記線幅変更手段は、前記第一記憶装置に記憶されている値に前記第三装置に記憶されている値を乗算し、その乗算した値に基づいて前記直線の幅を決定することを特徴とする。
【0020】
また、本発明に係る手書き文字認識装置の一形態では、前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記線幅変更手段は、前記第一記憶装置に記憶されている値に前記第三記憶装置に記憶されている値を乗算しないことを特徴とする。
【0021】
また、本発明に係る手書き文字認識装置の一形態では、前記所定幅を規定する値を記憶する第一記憶装置と、所定の値を記憶する第四記憶装置とを更に有し、前記線幅変更手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算し、その加算した値に基づいて前記直線の幅を決定することを特徴とする。
【0022】
また、本発明に係る手書き文字認識装置の一形態では、前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記線幅変更手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算しないことを特徴とする。
【0023】
また、本発明に係る手書き文字認識装置の一形態では、前記所定幅を規定する値を記憶する第一記憶装置と、1を超える所定の値を記憶する第五記憶装置とを更に有し、前記線幅変更手段は、前記第五記憶装置に記憶されている値に前記第二記憶装置に記憶されている値を乗算し、その乗算した値に基づいて前記直線の幅を決定することを特徴とする。
【0024】
また、本発明に係る手書き文字認識装置の一形態では、前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記線幅変更手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算しないことを特徴とする。
【0025】
本発明に係る手書き文字認識装置は、ストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、前記各ストロークデータを構成する、始点と終点の二つの座標データを結ぶ直線において、隣接する直線間が前記座標データに基づいて平行と判定された場合に該直線間の最小距離を算出し、該算出された最小距離に応じて前記直線の幅を設定する線幅変更手段と、前記ストロークデータに基づいて、前記線幅変更手段によって設定された線幅で手書き文字画像を生成する画像生成手段と、前記画像生成手段で生成された手書き文字画像に対して文字認識処理を行う文字認識手段と、を備えることを特徴とする。
【0026】
また、本発明に係る手書き文字認識装置の一形態では、前記線幅変更手段は、当該ストロークデータから生成された前記直線の幅を規定する値及び記憶装置に記憶されている所定の線幅を規定する値のうちどちらか一方、小さい方の値を選択して前記直線の幅を決定することを特徴とする。
【0027】
また、本発明に係る手書き文字認識装置の一形態では、前記ストロークデータから生成された前記直線の幅は、当該直線と隣接する直線との距離の2分の1未満であることを特徴とする。
【0028】
また、本発明に係る手書き文字認識装置の一形態では、当該直線と隣接する直線との距離と角度を算出する距離・角度算出手段を更に有し、該距離・角度算出手段により算出された距離に基づいて、前記ストロークデータから生成された前記直線の幅を決めることを特徴とする。
【0036】
本発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手段を有することによって、より精度の高い文字認識を行うことができる。
【0037】
本発明によれば、前記線幅変更手段は、前記所定幅を細くする細線化手段を有することによって、漢字等のある範囲内のデータが多い文字においても、より精度の高い文字認識を行うことができる。
【0038】
本発明によれば、前記所定幅を規定する値を記憶する第一記憶装置と、所定の値を記憶する第二記憶装置とを更に有し、前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算し、その減算した値に基づいて線幅を決定することによって、簡単な構成で線幅を細くすることができる。
【0039】
本発明によれば、前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算しないことによって、第一記憶装置に記憶されている値が所定の値より小さければ、それ以上線幅を細くすることを防ぐことができる。
【0040】
本発明によれば、前記所定幅を規定する値を記憶する第一記憶装置と、1未満の所定の値を記憶する第三記憶装置とを更に有し、前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することによって、簡単な構成で線幅を細くすることができる。
【0041】
本発明によれば、前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記細線化手段は、前記第一記憶装置に記憶されている値に前記第三記憶装置に記憶されている値を乗算しないことによって、第一記憶装置に記憶されている値が所定の値より小さければ、それ以上線幅を細くすることを防ぐことができる。
【0042】
本発明によれば、前記線幅変更手段は、前記所定幅を太くする太線化手段を有することによって、文字の偏とつくりを分離して文字認識をしないようになり、より精度の高い文字認識を行うことができる。
【0043】
本発明によれば、前記所定幅を規定する値を記憶する第一記憶装置と、所定の値を記憶する第四記憶装置とを更に有し、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算し、その加算した値に基づいて線幅を決定することによって、簡単な構成で線幅を太くすることができる。
【0044】
本発明によれば、前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算しないことにより、第一記憶装置に記憶されている値が所定の値より大きければ、それ以上線幅を太くすることを防ぐことができる。
【0045】
本発明によれば、前記所定幅を規定する値を記憶する第一記憶装置と、1を超える所定の値を記憶する第五記憶装置とを更に有し、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算し、その乗算した値に基づいて線幅を決定することによって、簡単な構成で線幅を太くすることができる。
【0046】
本発明によれば、前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記太線化手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算しないことにより、第一記憶装置に記憶されている値が所定の値より大きければ、それ以上線幅を太くすることを防ぐことができる。
【0047】
本発明によれば、前記線幅変更手段は、前記所定幅を細くする細線化手段と、前記所定幅を太くする太線化手段とを有することによって、ストロークデータの方向に基づいて、線幅を細くしたり太くしたりすることができる。
【0048】
本発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手段を有することによって、文字認識率を向上することができる。
【0049】
本発明によれば、前記線幅変更手段は、当該ストロークデータから生成された線幅を規定する値及び記憶装置に記憶されている所定の線幅を規定する値のうちどちらか一方、小さい方の値を選択して線幅を決定することによって、より最適な線幅で文字画像を生成することができる。
【0050】
本発明によれば、前記ストロークデータから生成された線幅は、当該ストロークデータと隣接するストロークデータとの距離の2分の1未満であることによって、隣接するストロークと接触しない線幅を得ることができる。
【0051】
本発明によれば、当該ストロークデータと隣接するストロークデータとの距離と角度を算出する距離・角度算出手段を更に有し、該距離・角度算出手段により算出された距離に基づいて、前記ストロークデータから生成された線幅を決めることによって、位置関係に応じた最適な線幅を得ることができる。
【0052】
本発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更段階を有することによって、品質の良い文字画像を作製して、より精度の高い文字認識を行う文字認識方法を提供することができる。
【0053】
本発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更段階を有することによって、品質の良い文字画像を作製して、より精度の高い文字認識を行う文字認識方法を提供することができる。
【0054】
本発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、前記所定幅を当該ストロークデータの方向に基づいて変更する線幅変更手順をコンピュータに実行させることによって、品質の良い文字画像を作製して、より精度の高い文字認識を行う文字認識プログラムを提供することができる。
【0055】
本発明によれば、複数のストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、前記所定幅を隣接するストロークデータの位置関係に基づいて変更する線幅変更手順をコンピュータに実行させることによって、品質の良い文字画像を作製して、より精度の高い文字認識を行う文字認識プログラムを提供することができる。
【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 比較器
Claims (17)
- ストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、
前記ストロークデータを構成する、始点と終点の二つの座標データを結ぶ直線の角度を算出し、該算出した直線の角度が、予め定められた水平に近い所定の範囲の角度であるならば前記所定幅より細い線幅に前記直線の幅を設定し、予め定められた垂直に近い所定の範囲の角度であるならば前記所定幅より太い線幅に前記直線の幅を設定する線幅変更手段と、
前記ストロークデータに基づいて、前記線幅変更手段によって設定された線幅で手書き文字画像を生成する画像生成手段と、
前記画像生成手段で生成された手書き文字画像に対して文字認識処理を行う文字認識手段と、を備えることを特徴とする手書き文字認識装置。 - 前記所定幅を規定する値を記憶する第一記憶装置と、
所定の値を記憶する第二記憶装置とを更に有し、
前記線幅変更手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算し、その減算した値に基づいて前記直線の幅を決定することを特徴とする請求項1記載の手書き文字認識装置。 - 前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記線幅変更手段は、前記第一記憶装置に記憶されている値から前記第二記憶装置に記憶されている値を減算しないことを特徴とする請求項2記載の文字認識装置。 - 前記所定幅を規定する値を記憶する第一記憶装置と、
1未満の所定の値を記憶する第三記憶装置とを更に有し、
前記線幅変更手段は、前記第一記憶装置に記憶されている値に前記第三装置に記憶されている値を乗算し、その乗算した値に基づいて前記直線の幅を決定することを特徴とする請求項1記載の手書き文字認識装置。 - 前記第一記憶装置に記憶されている値が所定の値より小さいかどうかを判定する第一判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第一判定器の判定により、前記所定の値より小さいと判定された場合は、前記線幅変更手段は、前記第一記憶装置に記憶されている値に前記第三記憶装置に記憶されている値を乗算しないことを特徴とする請求項4記載の文字認識装置。 - 前記所定幅を規定する値を記憶する第一記憶装置と、
所定の値を記憶する第四記憶装置とを更に有し、
前記線幅変更手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算し、その加算した値に基づいて前記直線の幅を決定することを特徴とする請求項5記載の手書き文字認識装置。 - 前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記線幅変更手段は、前記第一記憶装置に記憶されている値に前記第四記憶装置に記憶されている値を加算しないことを特徴とする請求項6記載の文字認識装置。 - 前記所定幅を規定する値を記憶する第一記憶装置と、
1を超える所定の値を記憶する第五記憶装置とを更に有し、
前記線幅変更手段は、前記第五記憶装置に記憶されている値に前記第二記憶装置に記憶されている値を乗算し、その乗算した値に基づいて前記直線の幅を決定することを特徴とする請求項1記載の手書き文字認識装置。 - 前記第一記憶装置に記憶されている値が所定の値より大きいかどうかを判定する第二判定器を更に有し、
前記第一記憶装置に記憶されている値が、前記第二判定器の判定により、前記所定の値より大きいと判定された場合は、前記線幅変更手段は、前記第一記憶装置に記憶されている値に前記第五記憶装置に記憶されている値を乗算しないことを特徴とする請求項8記載の文字認識装置。 - ストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識装置において、
前記各ストロークデータを構成する、始点と終点の二つの座標データを結ぶ直線において、隣接する直線間が前記座標データに基づいて平行と判定された場合に該直線間の最小距離を算出し、該算出された最小距離に応じて前記直線の幅を設定する線幅変更手段と、
前記ストロークデータに基づいて、前記線幅変更手段によって設定された線幅で手書き文字画像を生成する画像生成手段と、
前記画像生成手段で生成された手書き文字画像に対して文字認識処理を行う文字認識手段と、を備えることを特徴とする手書き文字認識装置。 - 前記線幅変更手段は、当該ストロークデータから生成された前記直線の幅を規定する値及び記憶装置に記憶されている所定の線幅を規定する値のうちどちらか一方、小さい方の値を選択して前記直線の幅を決定することを特徴とする請求項10記載の手書き文字認識装置。
- 前記ストロークデータから生成された前記直線の幅は、当該直線と隣接する直線との距離の2分の1未満であることを特徴とする請求項11記載の手書き文字認識装置。
- 当該直線と隣接する直線との距離と角度を算出する距離・角度算出手段を更に有し、
該距離・角度算出手段により算出された距離に基づいて、前記ストロークデータから生成された前記直線の幅を決めることを特徴とする請求項12記載の手書き文字認識装置。 - ストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、
前記ストロークデータを構成する、始点と終点の二つの座標データを結ぶ直線の角度を算出し、該算出した直線の角度が、予め定められた水平に近い所定の範囲の角度であるならば前記所定幅より細い線幅に前記直線の幅を設定し、予め定められた垂直に近い所定の範囲の角度であるならば前記所定幅より太い線幅に前記直線の幅を設定する線幅変更手順と、
前記ストロークデータに基づいて、前記線幅変更手順によって設定された線幅で手書き文字画像を生成する画像生成手順と、
前記画像生成手順で生成された手書き文字画像に対して文字認識処理を行う文字認識手順と、を備えることを特徴とする手書き文字認識方法。 - ストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識方法において、
前記各ストロークデータを構成する、始点と終点の二つの座標データを結ぶ直線において、隣接する直線間が前記座標データに基づいて平行と判定された場合に該直線間の最小距離を算出し、該算出された最小距離に応じて前記直線の幅を設定する線幅変更手順と、
前記ストロークデータに基づいて、前記線幅変更手順によって設定された線幅で手書き文字画像を生成する画像生成手順と、
前記画像生成手順で生成された手書き文字画像に対して文字認識処理を行う文字認識手順と、を備えることを特徴とする手書き文字認識方法。 - ストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、
コンピュータに、
前記ストロークデータを構成する、始点と終点の二つの座標データを結ぶ直線の角度を算出し、該算出した直線の角度が、予め定められた水平に近い所定の範囲の角度であるならば前記所定幅より細い線幅に前記直線の幅を設定し、予め定められた垂直に近い所定の範囲の角度であるならば前記所定幅より太い線幅に前記直線の幅を設定する線幅変更手順と、
前記ストロークデータに基づいて、前記線幅変更手順によって設定された線幅で手書き文字画像を生成する画像生成手順と、
前記画像生成手順で生成された手書き文字画像に対して文字認識処理を行う文字認識手順と、を実行させるための手書き文字認識プログラム。 - ストロークデータで表された手書き文字列から生成された所定幅の線の手書き文字画像の文字認識を行う手書き文字認識プログラムにおいて、
コンピュータに、
前記各ストロークデータを構成する、始点と終点の二つの座標データを結ぶ直線において、隣接する直線間が前記座標データに基づいて平行と判定された場合に該直線間の最小距離を算出し、該算出された最小距離に応じて前記直線の幅を設定する線幅変更手順と、
前記ストロークデータに基づいて、前記線幅変更手順によって設定された線幅で手書き文字画像を生成する画像生成手順と、
前記画像生成手順で生成された手書き文字画像に対して文字認識処理を行う文字認識手順と、を実行させるための手書き文字認識プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002242551A JP4130106B2 (ja) | 2002-08-22 | 2002-08-22 | 手書き文字認識装置、手書き文字認識方法及び手書き文字認識プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002242551A JP4130106B2 (ja) | 2002-08-22 | 2002-08-22 | 手書き文字認識装置、手書き文字認識方法及び手書き文字認識プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004086256A JP2004086256A (ja) | 2004-03-18 |
JP4130106B2 true JP4130106B2 (ja) | 2008-08-06 |
Family
ID=32051604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002242551A Expired - Fee Related JP4130106B2 (ja) | 2002-08-22 | 2002-08-22 | 手書き文字認識装置、手書き文字認識方法及び手書き文字認識プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4130106B2 (ja) |
-
2002
- 2002-08-22 JP JP2002242551A patent/JP4130106B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004086256A (ja) | 2004-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109614944B (zh) | 一种数学公式识别方法、装置、设备及可读存储介质 | |
CN111931710B (zh) | 一种联机手写文字识别方法、装置、电子设备及存储介质 | |
US8204310B2 (en) | Feature design for HMM based Eastern Asian character recognition | |
CN1121662C (zh) | 以直线段为主的手写体字符的预处理方法和手写体识别设备 | |
JP2006512663A (ja) | 3次元手書き認識の方法及びシステム | |
JP5205283B2 (ja) | 手書きパターンの認識方法及び認識モジュール | |
JP6055065B1 (ja) | 文字認識プログラム、文字認識装置 | |
EP3828685B1 (en) | Gesture stroke recognition in touch-based user interface input | |
JP3054682B2 (ja) | 画像処理方法 | |
TWM623309U (zh) | 英文字體影像辨識系統 | |
JP4130106B2 (ja) | 手書き文字認識装置、手書き文字認識方法及び手書き文字認識プログラム | |
JPH1166238A (ja) | 手書き文字認識方法 | |
CN115359502A (zh) | 一种图像处理方法、装置、设备以及存储介质 | |
CN115100748A (zh) | 一种基于签名笔画序列的单字提取方法及系统 | |
JP4350228B2 (ja) | パターン認識方法および装置 | |
Yin et al. | Lexicon-driven recognition of one-stroke character strings in visual gesture | |
JP3897999B2 (ja) | 手書き文字認識方法 | |
KR101730711B1 (ko) | 스트로크 입력 순서의 복원 방법 및 장치 | |
JP4037164B2 (ja) | 手書き文字の対応点マッチング方法、装置及びプログラム | |
Inuganti et al. | Recognition of online handwritten Telugu stroke by detected dominant points using curvature estimation | |
JP5867227B2 (ja) | 文字認識用学習データ生成装置、文字認識装置、およびプログラム | |
KR20230141582A (ko) | 2차원 도면 이미지로부터 도면 정보를 그래프 구조로 추출하는 방법 및 하나의 도면 이미지와 다른 하나의 도면 이미지를 비교하는 방법 | |
CN113128603A (zh) | 一种文本分类方法、装置、设备和存储介质 | |
JP4011859B2 (ja) | 単語画像正規化装置,単語画像正規化プログラム記録媒体および単語画像正規化プログラム | |
JP6437208B2 (ja) | 手書き音楽記号認識装置及び手書き音楽記号認識プログラム |
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 |