(57)【特許請求の範囲】
【請求項１】
使用者の手指を撮像する撮像手段と、
使用者の所定動作に応じ、文字を筆記する入力期間と次文字に移る移行期間とを検出する入力期間検出手段と、
手指の移動を移動ベクトルとして検出する移動検出手段と、
前記入力期間中、前記移動検出手段で検出した前記移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した筆記コードデータを取得する筆記コードデータ取得手段と、
各文字を筆記した場合に発生する前記移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した辞書コードデータを記憶する辞書コードデータ記憶手段と、
前記筆記コードデータと前記辞書コードデータとを比較して使用者が筆記した文字を特定する特定手段とを備え、
前記筆記コードデータ取得手段は、前記移動ベクトルの移動量が所定の閾値以下の時に静止状態と判定し、前記所定の閾値より大きい場合に移動方向に従って移動ベクトルをコード化し、前記所定の閾値は、移動量の履歴に基づいて変更されることを特徴とする、
文字認識装置。
【請求項２】
前記入力期間検出手段は、前記撮像手段によって撮像した手指の形状を検出する形状検出手段を備えたことを特徴とする、
請求項１に記載の文字認識装置。
【請求項３】
前記入力期間検出手段は、前記形状検出手段の検出結果に基づいて前記入力期間と前記移行期間とを検出し、
前記移動検出手段は、前記撮像手段によって撮像した手指の位置を検出する位置検出手段を備え、前記位置検出手段が検出する手指の位置変化から前記移動ベクトルを検出することを特徴とする、請求項２に記載の文字認識装置。
【請求項４】
前記辞書コードデータ記憶手段は、各文字に対応する前記辞書コードデータを複数個備え、正しい書き順および筆運びで筆記した場合に加え、正しくない書き順および筆運びで筆記した場合に対応する辞書コードデータを少なくとも1つ備えることを特徴とする、
請求項１〜３のいずれかに記載の文字認識装置。
【請求項５】
前記筆記コードデータ取得手段は、前記移動ベクトルが二つの方向を繰り返す時には繰り返し部分を削除してコード化することを特徴とする、請求項１〜４のいずれかに記載の文字認識装置。
【請求項６】
コンピュータを、
使用者の所定動作に応じ、文字を筆記する入力期間と次文字に移る移行期間とを検出する入力期間検出手段、
手指の移動を移動ベクトルとして検出する移動検出手段、
前記入力期間中、前記移動検出手段で検出した前記移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した筆記コードデータを取得する筆記コードデータ取得手段、
前記筆記コードデータと予め準備された辞書コードデータとを比較して使用者が筆記した文字を特定する特定手段として機能させ、
前記筆記コードデータ取得手段は、前記移動ベクトルの移動量が所定の閾値以下の時に静止状態と判定し、前記所定の閾値より大きい場合に移動方向に従って移動ベクトルをコード化し、前記所定の閾値を移動量の履歴に基づいて変更することを特徴とする、
文字認識プログラム。
【請求項７】
前記入力期間検出手段は、撮像手段によって撮像した手指の形状を検出する形状検出手段を備えたことを特徴とする、
請求項６に記載の文字認識プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は文字認識装置と文字認識プログラムに関するものであり、特に手書き文字を認識し、認識した文字をコンピュータなどに入力する入力装置に適用される文字認識装置と文字認識プログラムに関する。
【背景技術】
【０００２】
従来のこの種の文字認識装置の一例は特許文献１に開示される。特許文献１によれば、個人認証装置は手書きデータ入力装置と署名照合装置とを備える。利用者は、手書きデータ入力装置に備えられる撮像手段を手で保持し空中で動かすことによって、空中に所定の文字を書く。手書きデータ入力装置に備えられる軌跡算出手段は、撮像手段の空中における位置変化である移動軌跡を手書きデータ（署名データ）として求める。署名照合装置は、その手書きデータと予め記憶手段に記憶してある参照データ（本人の署名データ）とを比較照合して、同一人による署名データであるかどうかを判断する。
【０００３】
また、文字認識装置の他の例は特許文献２に開示される。特許文献２によれば、空中で書いた文字を認識するためにスイッチ手段のオン／オフで筆記中か否かを判断し、筆記中と筆記中でないときのそれぞれの移動方向に基づいて手書き文字を認識するため、文字の画数に拘わらず文字を認識する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２５９０４５号公報
【特許文献２】特開２００７−２００１８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１の個人認証装置では、移動軌跡そのものを軌跡算出手段で算出して参照データと照合するため、移動軌跡や参照データの情報量が大きくなり、比較照合手段の演算量が大きく処理時間が長くなるという問題があった。また、基本的には一筆書きによるデータ入力および個人認証であり、複数の画数からなる文字を認識することはできない。
【０００６】
この点、特許文献２に開示された技術では、空中に書いた２以上の画数の文字であっても認識可能である。しかし、使用者は筆記中か否かを示すために筆のアップダウンを意識してスイッチのオンオフ操作を行う必要があり、素早く文字を書くことができなかったり筆記動作とスイッチ操作のタイミングがずれるという問題があった。
【０００７】
上述の問題点に鑑み、本発明は演算量と処理時間を低減し、連続的に複数の画数からなる文字を筆記することが可能であり、筆記する場所や大きさや速度の制限が無い文字認識装置と文字認識プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の文字認識装置は、使用者の手指を撮像する撮像手段と、使用者の所定動作に応じ、文字を筆記する入力期間と次文字に移る移行期間とを検出する入力期間検出手段と、手指の移動を移動ベクトルとして検出する移動検出手段と、入力期間中、移動検出手段で検出した移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した筆記コードデータを取得する筆記コードデータ取得手段と、各文字を筆記した場合に発生する移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した辞書コードデータを記憶する辞書コードデータ記憶手段と、筆記コードデータと辞書コードデータとを比較して使用者が筆記した文字を特定する特定手段とを備え、筆記コードデータ取得手段は、移動ベクトルの移動量が所定の閾値以下の時に静止状態と判定し、所定の閾値より大きい場合に移動方向に従って移動ベクトルをコード化し、所定の閾値は、移動量の履歴に基づいて変更されることを特徴とする。
【０００９】
又、本発明の文字認識プログラムは、コンピュータを、使用者の所定動作に応じ、文字を筆記する入力期間と次文字に移る移行期間とを検出する入力期間検出手段、手指の移動を移動ベクトルとして検出する移動検出手段、入力期間中、移動検出手段で検出した移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した筆記コードデータを取得する筆記コードデータ取得手段、筆記コードデータと予め準備された辞書コードデータとを比較して使用者が筆記した文字を特定する特定手段として機能させ、筆記コードデータ取得手段は、移動ベクトルの移動量が所定の閾値以下の時に静止状態と判定し、所定の閾値より大きい場合に移動方向に従って移動ベクトルをコード化し、所定の閾値を移動量の履歴に基づいて変更することを特徴とする。
【発明の効果】
【００１０】
本発明の文字認識装置は、使用者の手指を撮像する撮像手段と、使用者の所定動作に応じ、文字を筆記する入力期間と次文字に移る移行期間とを検出する入力期間検出手段と、手指の移動を移動ベクトルとして検出する移動検出手段と、入力期間中、移動検出手段で検出した移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した筆記コードデータを取得する筆記コードデータ取得手段と、各文字を筆記した場合に発生する移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した辞書コードデータを記憶する辞書コードデータ記憶手段と、筆記コードデータと辞書コードデータとを比較して使用者が筆記した文字を特定する特定手段とを備え、筆記コードデータ取得手段は、移動ベクトルの移動量が所定の閾値以下の時に静止状態と判定し、所定の閾値より大きい場合に移動方向に従って移動ベクトルをコード化し、所定の閾値は、移動量の履歴に基づいて変更されることを特徴とする。これにより、使用者は連続的に複数の画数からなる文字を筆記することが可能であり、演算量と処理時間が低減され、筆記する場所や大きさや速度に拘らず文字を認識することが出来る。
【００１１】
又、本発明の文字認識プログラムは、コンピュータを、使用者の所定動作に応じ、文字を筆記する入力期間と次文字に移る移行期間とを検出する入力期間検出手段、撮像した手指の形状を検出する形状検出手段、手指の移動を移動ベクトルとして検出する移動検出手段、入力期間中、移動検出手段で検出した移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した筆記コードデータを取得する筆記コードデータ取得手段、筆記コードデータと予め準備された辞書コードデータとを比較して使用者が筆記した文字を特定する特定手段として機能させ、筆記コードデータ取得手段は、移動ベクトルの移動量が所定の閾値以下の時に静止状態と判定し、所定の閾値より大きい場合に移動方向に従って移動ベクトルをコード化し、所定の閾値を移動量の履歴に基づいて変更することを特徴とする。これにより、使用者は連続的に複数の画数からなる文字を筆記することが可能であり、演算量と処理時間が低減され、筆記する場所や大きさや速度に拘らず文字を認識することが出来る。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１の入力システムの構成図である。
【図２】実施の形態１の文字入力装置の構成図である。
【図３】方向コードデータを説明する図である。
【図４】筆記コードデータを説明する図である。
【図５】筆記コードデータと辞書コードデータの類似度の導出過程を説明する図である。
【図６】ＲＡＭのメモリマップを示す図である。
【図７】ＲＡＭの評価用テーブルデータを示す図である。
【図８】入力システムの動作を示すフローチャートである。
【図９】実施の形態２の入力システムの構成図である。
【図１０】実施の形態２の文字入力装置の構成図である。
【図１１】手の位置や形状を検出する方法を示す図である。
【発明を実施するための形態】
【００１３】
（実施の形態１）
＜構成＞
図１は、本実施の形態の入力システム１０の構成図である。図１を参照して、入力システム１０は文字入力装置１２を含み、文字入力装置１２は文字認識プログラムを記憶し、文字認識装置としても機能する。この文字入力装置１２は、ペン型の筐体（ケース）１４を備えるとともに、このケース１４の一部から操作部が露出するように配置されたスイッチ１６を備える。又、入力システム１０はコンピュータ２０を備え、文字入力装置１２とコンピュータ２０とがケーブル（ＵＳＢケーブルやＩＥＥＥ１３９４ケーブルなど）１８を用いて接続される。
【００１４】
なお、本実施の形態では、ケーブル１８を用いて文字入力装置１２とコンピュータ２０とを接続するようにしてあるが、これに限定される必要はなく、無線通信にて接続することも、文字入力装置１２とコンピュータ２０とが一体的に形成された入力システム１０として構成することもできる。また、コンピュータ２０としては、汎用のコンピュータ（デスクトップ、ラップトップ、ＰＤＡなど）は当然のこと、携帯電話機、車載ナビゲーション、ＡＶ商品から電子辞書まで内部にＣＰＵを持つあらゆる製品が該当する。
【００１５】
したがって、入力システム１０を構成する文字入力装置１２とコンピュータ２０とのハードウェアおよびソフトウェアの切り分け方は一体型を含めて色々と考えられるが、以下では、一例として、文字入力装置１２は手書き文字を１文字単位で判定して、その候補或いは結果をコンピュータ２０に送信するだけの機能を有し、コンピュータ２０は、かな文字変換機能や予測機能等を有し、その操作を含めて全体を制御する構成として説明することにする。
【００１６】
図２は文字入力装置１２の電気的な構成を示すブロック図である。図２を参照して、文字入力装置１２はＣＰＵ３０を含み、ＣＰＵ３０は、内部バス３２を介して、ＲＯＭ３４、ＲＡＭ３６および入出力（Ｉ／Ｏ）インターフェイス（以下、単に「インターフェイス」という。）３８に接続される。また、文字入力装置１２は、カメラ４０および上述したスイッチ１６を含み、このカメラ４０およびスイッチ１６はインターフェイス３８および内部バス３２を介してＣＰＵ３０に接続される。このような回路コンポーネントがケース１４に収納される。詳細な図示は省略するが、カメラ４０は、そのレンズ部分がケース１４の先端部１４ａ（文字入力装置１２の先端部）に露出するようにケース１４内に配置される。また、図２では、スイッチ１６がケース１４に収納されるように記載してあるが、上述したように、スイッチ１６はその操作部がケース１４から露出するように配置される。さらに、図２では省略するが、上述したケーブル１８の一方端がインターフェイス３８に接続され、その他方端がコンピュータ２０に接続される。
【００１７】
＜動作＞
例えば、使用者がペンを持つように文字入力装置１２を手指で把持し、文字（本実施の形態では、ひらがな）を書く。すると、文字入力装置１２は使用者が書いた文字を認識し、認識した文字をコンピュータ２０に入力する。以下、文字入力装置１２における文字の認識方法について詳細に説明する。
【００１８】
＜文字の認識方法＞
文字入力装置１２では、カメラ４０からの画像データがインターフェイス３８およびバス３２を介してＣＰＵ３０に与えられる。本実施の形態では、ＣＰＵ３０は、カメラ４０からの画像データを所定時間（１フレーム：１／３０秒）毎に検出し、フレーム間（１つ手前のフレームと現フレームとの間）の動きベクトルを計算する。動きベクトルを計算する方法は既に周知であるため、ここでは詳細な説明は省略する。
【００１９】
ＣＰＵ３０は、計算した動きベクトルを用いるなどして、文字入力装置１２の移動に関する情報（移動情報）を生成する。この情報は、図６に示すＲＡＭ３６のデータ記憶領域に記憶される。本実施の形態では、移動情報は使用者が書いた文字についてのコードデータ（筆記コードデータ５２４）である。具体的には、ＣＰＵ３０はスイッチ１６のオン／オフを検出し、文字単位で筆記中であるか否かを判断する。ＣＰＵ３０は、スイッチ１６を押した状態（オン状態）では、文字単位で筆記中の入力期間であると判断してコード化を続け、スイッチ１６を押していない状態（オフ状態）では、文字単位の筆記が完了し次文字に移る移行期間であると判断して、コード化を停止し入力文字の特定処理に入る。このように、ＣＰＵ３０は入力期間と移行期間を検出する入力期間検出手段として動作する。
【００２０】
ここでＣＰＵ３０は、スイッチ１６がオンである場合には、カメラ４０からの画像データに基づいて計算した動きベクトルを筆記中の方向として検出する移動検出手段として動作する。なお、ここで用いる情報はスイッチ１６がオンになった位置を原点にして原点からの距離と方向に基づくのではなく、フレーム間の動きベクトル情報そのものであり、それらを時系列に従って記述した筆記コードデータ５２４（移動情報）を生成する。本実施の形態では、図３に示すような方向コードデータ５２２を用意し、これを参照して、方向コードデータに変化が生じた時のみ方向コードを追加するように符号化（コード化）する。
【００２１】
図３に示す方向コードデータ５２２は、２次元方向を上下左右と斜め方向とを含む８つの方向（動き有りの方向）に分け、動きベクトルをその方向に応じてアルファベットに符号化するためのデータである。
【００２２】
具体的には、動き有りの方向としては、上方向に「ｈ」が割り当てられ、この上方向から時計回りに４５度回転した右斜め上方に「ａ」が割り当てられる。また、右方向に「ｂ」が割り当てられ、この右方向から時計回りに４５度回転した右斜め下方に「ｃ」が割り当てられる。さらに、下方向に「ｄ」が割り当てられ、この下方向から時計回りに４５度回転した左斜め下方向に「ｅ」が割り当てられる。そして、左方向に「ｆ」が割り当てられ、この左方向から時計回りに時計回りに４５度回転した左斜め上方に「ｇ」が割り当てられる。
【００２３】
また、動きが少ない動きベクトルについては、動きなしとして「Ｓ」が割り当てられる。ここで、「動きが少ない」とは、動きベクトルのスカラが所定の閾値（所定距離）未満であることを意味し、閾値は文字入力装置１２の開発者や設計者によって設定される。ただし、動きベクトルは隣接するフレームの画像データに基づいて算出され、１フレームのような短い期間に人間が手指を動かす距離は非常に短いと考えられるため、所定値は比較的小さい値に設定される。また、本実施の形態では、動きが少ないのみならず、画像データから検出した動きベクトルの信頼性が低いと判定される場合にも、「Ｓ」に符号化する。
【００２４】
なお、一般的に単一色の壁や床においても多少の信号レベル差があるため、これらに文字入力装置１２（カメラ４０のレンズ）を向けて文字を書いた場合でも、正確に動きベクトルを検出することができる。しかし、極端に暗すぎたり明るすぎる場合や、規則的な繰り返しパターンの画像データの場合には動きベクトルを誤検出する可能性がある。ただし、検出した動きベクトルの信頼性は、その検出のための演算の過程において概ね判定することができる。
【００２５】
ここで、使用者が書いた文字に応じた筆記コードデータ５２４の生成方法について説明する。辞書コードデータ５２０の生成方法については、正しい書き順および筆（本実施の形態では、文字入力装置１２）運びで、文字を書いた場合に生成される筆記コードデータ５２４の生成方法と同じであるため、重複した説明は省略する。ただし、辞書コードデータ５２０は、実際に文字を書くことなく正しい書き順および筆運びに従って筆記中方向コードデータ５２２の符号を並べることにより、生成するようにしてもよい。
【００２６】
たとえば、使用者が、図４に示すように、正しい書き順および筆運びで、ひらがなの「あ」を書く場合について説明する。「あ」は本来（１）と（３）と（５）の３画のストロークで構成されるが、筆のアップダウン操作を不要にするため、各ストローク間の（２）と（４）の筆運びが加わる。まず、スイッチ１６をオンした状態で、（１）で示すように、横棒が書かれる。この時は、横棒の書き始めから書き終わりまで右方向或いはほぼ右方向であり、筆記中方向コードデータ５２２を参照することによって、「ｂ」に符号化される。したがって、使用者が横棒を書き終えると、横棒の書き始めと書き終わりの筆記速度が低下した部分が「Ｓ」に符号化され、符号「ＳｂＳ」のデータが筆記コードデータ５２４としてＲＡＭ３６に記憶される。ここで、符号（アルファベット）はその符号が変化しない限り、つまり移動方向（動きベクトル）または移動速度が変化しない限り、追加的にＲＡＭ３６に記憶されることはない。
【００２７】
次に、（２）で示すストローク（１）の終了点からストローク（３）の開始点まで筆を運ぶと、移動方向は左斜め上であり、移動方向コードデータ５２２を参照することによって「ｇ」のコードが追加され、ストローク（３）の開始点で筆が止まった時点では「Ｓ」のコードが追加されるため、筆記コードデータ５２４として、符号列「ＳｂＳｇＳ」のデータがＲＡＭ３６に記憶される。
【００２８】
次に、ストローク（３）の縦棒を筆記すると、縦棒の書き始めから書き終わりまで下向き或いはほぼ下向きであるため、方向コードデータ５２２を参照することによって、「ｄ」に符号化される。このため、縦棒を書き終えた時点では、筆記コードデータ５２４として符号列「ＳｂＳｇＳｄＳ」のデータがＲＡＭ３６に記憶される。
【００２９】
次に、縦棒のストローク（３）の終了点からストローク（５）の開始点までの（４）の筆の運びでは、方向が右斜め上方であり、移動方向コードデータ５２２を参照して、「ａ」に符号化される。したがって、ストローク（５）の開始点で筆が止まった時点では「Ｓ」のコードが追加されるため、筆記コードデータ５２４として、符号列「ＳｂＳｇＳｄＳａＳ」のデータがＲＡＭ３６に記憶される。
【００３０】
最後に、使用者がストローク（５）を筆記している間は、移動方向が左斜め下方、左方、左斜め上方、上方、右斜め上方、右方、右斜め下方、下方、左斜め下の順で変化する。したがって、方向コードデータ５２２を参照することにより、「ｅ」、「ｆ」、「ｇ」、「ｈ」、「ａ」、「ｂ」、「ｃ」、「ｄ」、「ｅ」の順に符号化される。したがって、ストローク（５）を書き終えると、筆記コードデータ５２４として符号列「ＳｂＳｇＳｄＳａＳｅｆｇｈａｂｃｄｅＳ」のデータがＲＡＭ３６に記憶される。このようにしてＣＰＵ３０及びＲＡＭ３６は、移動ベクトルをコード化し、時系列にしたがって圧縮した筆記コードデータ５２４を取得する筆記コードデータ取得手段として機能する。
【００３１】
上述のように筆記コードデータ５２４は生成され、使用者が一文字の入力が終わったところでスイッチ１６をオフにすると、その時点で筆記コードデータ５２４は一文字の最終的なコードデータとして、辞書コードデータ５２０（図６参照）に含まれる複数の文字についてのコードデータ（辞書コードデータ５２０ａ，５２０ｂ，５２０ｃ，…）の各々と比較され、その結果最も類似する辞書コードデータ５２０が示す文字に特定される。このようにして、使用者が書いた文字が認識される。
【００３２】
ここで、辞書コードデータ５２０は、複数の辞書コードデータ５２０ａ，５２０ｂ，５２０ｃ，…を含む。以下、この明細書においては、単に「辞書コードデータ５２０」という場合には、辞書コードデータ５２０ａ，５２０ｂ，５２０ｃ，…の各々を指す場合と、辞書コードデータ５２０ａ，５２０ｂ，５２０ｃ，…をまとめて指す場合とがある。各辞書コードデータ５２０ａ，５２０ｂ，５２０ｃ，…は、文字入力装置１２を用いて各文字を正しい書き順および筆運びで書いた場合に、時系列に従って検出される移動方向が、移動方向コードデータ５２２が参照されることによって符号化され、生成される。
【００３３】
ただし、本実施の形態では、辞書コードデータ５２０は後述するように、１文字に対して１つの辞書コードデータ５２０を記憶するようにしてあるが、１文字に対して複数の辞書コードデータ５２０を記憶するようにしてもよい。これは、たとえば「も」のように、使用者によって書き順が異なる文字に対応し、さらに文字の認識率を高めるためでもある。また、辞書コードデータ５２０は、例えば、使用前に使用者がすべて登録するようにしても良いし、学習する構成にしても良い。さらに、「い」と「り」、「こ」と「て」、「う」と「ち」と「ら」のように良く似た文字の辞書コードデータは、区別がつきやすいよう違いを強調したコードに修正しても良い。このようにＣＰＵ３０及びＲＡＭ３６は、辞書コードデータを作成し記憶する辞書コードデータ記憶手段として機能する。
【００３４】
＜類似度の評価方法＞
次に、本実施の形態における、筆記コードデータ５２４と辞書コードデータ５２０ａ，５２０ｂ，５２０ｃ，…との類似度の評価方法について図５を用いて説明する。類似度の評価には、時系列データに対して時間伸縮を含めたマッチングに適した方法として、例えばＤＰマッチングを利用することができる。
【００３５】
ＤＰマッチングの一例として、使用者が文字を書いたことにより筆記コードデータ５２４として符号列「ＳｄｃＳａＳｃｄＳ」のデータが得られた場合について説明する。また、簡単のために、「い」の辞書コードデータを「ＳｄＳａＳｃｄＳ」、「し」の辞書コードデータを「ＳｄｃｂａＳ」、として説明する。
【００３６】
まず、図５（Ａ）に示す筆記コードデータ５２４が得られると、図５（Ｂ）に示すように、筆記コードデータ５２４と各辞書コードデータ５２０から各コードデータ間の類似度を示す局所マトリックスを作成する。ここで、類似度は「０」が「合致」で、値が小さいほど類似していることを意味する。一般的に単純なＤＰマッチングの場合には、局所マトリクスは、例えば一致しない場合に「３」、一致する場合に「０」などが与えられる。しかしながら、方向コード「ａ」と「ｂ」の方向差よりも「ａ」と「ｃ」の方向差の方が大きく類似度は小さいため、単に一致／不一致のみを表現するのではなく方向コードの組合せに応じた類似度を与えることによって、より正確なマッチングが実現できると考えられる。
【００３７】
次に、図５（Ｃ）で示した式にしたがって、経路（連続性）を含む類似度を示す累積マトリクス（図５（Ｄ））をＰ（０，０）から順次計算して行き、累積マトリックス計算の最後の値（図５（Ｅ））が各辞書コードデータとの類似度として得られる。「い」との類似度が「３」、「し」との類似度が「１８」という結果になったことから、入力パターンは「し」よりも「い」に類似していることがわかる。同様に全ての文字の候補と類似度を算出して評価することで入力された文字を特定することができる。このようにして、ＣＰＵ３０は筆記コードデータと辞書コードデータを比較して使用者が筆記した文字を特定する特定手段として機能する。
【００３８】
すなわち、実施の形態１の文字認識装置は、使用者の所定動作に応じ、文字を筆記する入力期間と次文字に移る移行期間とを検出する入力期間検出手段と、手指の移動を移動ベクトルとして検出する移動検出手段と、入力期間中、移動検出手段で検出した移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した筆記コードデータ５２４を取得する移動情報取得手段と、各文字を正しい書き順および筆運びで筆記した場合に発生する移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した辞書コードデータを記憶する辞書コードデータ記憶手段と、移動情報取得手段が取得した筆記コードデータと辞書コードデータとを比較して使用者が筆記した文字を特定する特定手段と、を備える。移動ベクトルをコード化することにより、演算量と処理時間を低減することが出来る。又、次画への移行部分を含めてコード化することによって、連続的に複数の画数からなる文字を筆記することができ、筆記する場所や大きさや速度の制限が無い文字認識装置となる。
【００３９】
＜プログラム＞
図６は、図１に示したＲＡＭ３６のメモリマップを示す図解図である。ただし、ＲＡＭ３６に記憶されるプログラムや一部のデータはＲＯＭ３４からロードされる。図６に示すように、ＲＡＭ３６はプログラム記憶領域５０とデータ記憶領域５２を含む。プログラム記憶領域５０は、文字認識プログラムと文字入力プログラム５０８を記憶する。文字認識プログラムは、メイン処理プログラム５００、手指の動き検出プログラム５０２、コード化プログラム５０４および文字特定プログラム５０６によって構成される。
【００４０】
メイン処理プログラム５００は、本実施の形態の文字認識のメインルーチンを処理するためのプログラムである。手指の動き検出プログラム５０２は、カメラ４０からの画像を所定時間（たとえば、１フレーム）毎に検出し、１フレーム前の画像と現フレームの画像とを比較して手指の動きベクトルを検出（算出）するためのプログラムである。コード化プログラム５０４は、使用者が文字入力装置１２を用いて空中で文字を書くときにその移動ベクトルを使用者の手指の移動方向に従って符号化し、符号を時系列に並べてコード化するためのプログラムである。
【００４１】
文字特定プログラム５０６は、使用者が書いた文字を特定するためのプログラムである。簡単に説明すると、使用者が書いた文字についてのコードデータ（筆記コードデータ５２４）と、辞書として予め登録してある各文字についてのコードデータ（辞書コードデータ５２０ａ，５２０ｂ，５２０ｃ，…）とを比較し、筆記コードデータ５２４と最も類似した（評価値が最も小さい）辞書コードデータ５２０に対応する文字を特定（決定）する。これにより、使用者が書いた文字が認識される。文字入力プログラム５０８は、文字特定プログラム５０６で特定（認識）された文字をコンピュータ２０に入力（送信）するためのプログラムである。
【００４２】
データ記憶領域５２には、辞書コードデータ５２０、方向データ５２２、筆記コードデータ５２４および評価用テーブルデータ５２６のようなデータが記憶されるとともに、筆記中フラグ５２８のようなフラグが記憶される。
【００４３】
辞書コードデータ５２０は、複数の辞書コードデータ５２０ａ，５２０ｂ，５２０ｃ，…を含む。辞書コードデータ５２０ａは、ひらがなの「あ」を正しい書き順および筆運びで書いたときのコードデータであり、例えば符号列「ＳｂＳｇＳｄＳａＳｅｆｇｈａｂｃｄｅＳ」のデータで表わされる。また、辞書コードデータ５２０ｂは、ひらがなの「い」を正しい書き順および筆運びで書いたときのコードデータであり、例えば符号列「ＳｄＳａＳｃｄＳ」のデータで表わされる。辞書コードデータ５２０ｃは、ひらがなの「う」を正しい書き順および筆運びで書いたときのコードデータであり、というように以下は省略するが、他のひらがなについての辞書コードデータ５２０も記憶される。ただし、ひらがなに加えて、数字（０〜９）またはアルファベット（ａ〜ｚ，Ａ〜Ｚ）或いはその両方についての辞書コードデータ５２０を記憶してもよい。また、文字以外の「バックスペース」、「エンターキー」や「方向キー」等の操作に対応したパターンを登録および記憶するようにしてもよい。
【００４４】
方向データ５２２は、例えば図３に示した方向コードデータ５２２である。上述したように、例えばスイッチ１６がオンして使用者が一筆書きで文字を書くとき、その移動情報が方向コードデータ５２２を参照して符号化される。
【００４５】
筆記コードデータ５２４は、使用者が一筆書きで文字を書いたときに文字入力装置１２自体の移動方向が時系列に従って符号化されたコードデータである。なお、詳細な説明は省略するが、コンピュータ２０が１文字の入力は終了した（次の文字を入力する）と判定したり、文字がキャンセル（訂正）された場合に、コンピュータ２０からのコマンドにしたがって筆記コードデータ５２４はリセット（消去）される。
【００４６】
評価用テーブルデータ５２６は、辞書コードデータ５２０に登録された文字毎に評価値を記述できるように構成されたテーブルについてのデータであり、使用者が書いた文字を特定（認識）する場合に用いられる。具体的には、図７に示すように、候補文字が１文字ずつ記述され、筆記コードデータ５２４と各候補文字に対応する辞書コードデータ５２０との評価値が計算されると、計算された評価値が該当する候補文字に対応して記述される。ただし、評価用テーブルデータ５２６は文字が特定される毎にリセットされ、すべての評価値が消去される。
【００４７】
図６に戻って、筆記中フラグ５２８は筆記中か否かを判断するためのフラグであり、たとえば１ビットのレジスタで構成される。本実施の形態では、スイッチ１６がオンであれば筆記中であり、一方、スイッチ１６がオフであれば筆記中でない例を説明したが、スイッチをトグル動作にしたり、オンオフのスイッチを別に設けたり、ジェスチャー操作等でスイッチの代わりにすることが可能である。いずれにせよ筆記中か否かを判断し、文字単位の入力の開始から終了までの期間（入力期間）を示す。
【００４８】
具体例としては、ＣＰＵ３０が図８に示すメインルーチン（全体処理）を実行する。ＣＰＵ３０は全体処理を開始すると、動きベクトルを生成する（ステップＳ１）。つまり、カメラ４０から入力される画像データを１フレーム毎に検出し、直前のフレームの画像と現フレームの画像との動き（移動方向および移動量）を検出する。
【００４９】
次に、筆記中フラグ５２８がオンの時にステップＳ１で検出した動きベクトルから文字入力装置１２の移動方向を検出して筆記コードデータ５２４を作成し（コード化処理）、コードが変化した時に筆記コードデータ５２４にコードを追加する（ステップＳ２）。そして、得られた筆記コードデータ５２４と各辞書コードデータ５２０との類似度を比較して入力された文字を特定する文字特定処理を実行する（ステップＳ３）。ステップＳ３で特定された文字はコンピュータ２０に入力する（ステップＳ４）。なお、全体処理すなわちステップＳ１−Ｓ４のスキャンタイムが１フレームであり、この全体処理が繰り返し実行されることにより、動きベクトルは１フレーム毎に算出（検出）される。
【００５０】
なお、本実施の形態では、カメラ４０をケース１４の先端部１４ａに配置してカメラ４０の画像から動きベクトルを検出することで文字入力装置１２の移動を検出したが、他のセンサ、例えば加速度センサや角速度センサを搭載して文字入力装置１２の移動を検出してもよい。
【００５１】
すなわち、実施の形態１に係る文字認識プログラムは、コンピュータを、使用者の所定動作に応じ、文字を筆記する入力期間と次文字に移る移行期間とを検出する入力期間検出手段、手指の移動を移動ベクトルとして検出する移動検出手段、入力期間中、移動検出手段で検出した前記移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した移動情報を取得する移動情報取得手段、移動情報取得手段が取得した移動情報と予め準備された辞書コードデータとを比較して使用者が筆記した文字を特定する特定手段、として機能させる。移動ベクトルをコード化することにより、演算量と処理時間を低減することが出来る。又、次画への移行部分を含めてコード化することによって、連続的に複数の画数からなる文字を筆記することができ、筆記する場所や大きさや速度の制限が無い文字認識プログラムとなる。
【００５２】
＜コードデータ検出精度の向上＞
次に、筆記コードデータ５２４の検出精度の向上について説明する。動きベクトルの移動量（スカラ）が所定値未満であるときにコード「Ｓ」と符号化し、静止状態（動き量が少ない）と判定するが、この所定値（閾値）を適切に制御することが、検出精度を向上させるための第一の方法である。空中に文字を書く場合、状況や人によって文字の大きさや速度は大きく変動すると考えられる。大きな文字を書く場合や早く書く場合には、一旦筆を静止させたつもりでも動いていると判定する一方、小さい文字を書く場合やゆっくりと書いた場合には、筆を動かしているつもりでも静止状態であると誤検出することがある。そこで、大きな状況変化がない場合に使用者が書く速度や文字の大きさは、一般的に直前に書いた速度や文字の大きさや速度に近いと考える。そこで、直前の数文字分の文字を書く速度（フレーム間の移動量）の最大値と最小値および平均値を算出し、その値に基づいて静止状態であるか否かの閾値を変更することにより、上述の誤検出が削減できる。具体的には文字を書く速度が高い時には閾値を大きく、文字を書く速度が低い時には閾値を小さくするように適応的に制御を行う。
【００５３】
すなわち、筆記コードデータ取得手段は、移動ベクトルの移動量が所定の閾値以下の時に静止状態と判定し、前記所定の閾値より大きい場合に移動方向に従って移動ベクトルをコード化し、当該所定の閾値は移動量の履歴に基づいて変更される。これにより、筆記スピードや文字の大小の個人差を考慮され、筆記コードデータ５２４の検出精度が向上する。
【００５４】
第二の検出精度向上は、方向ベクトルの境界点でのハンチングの回避である。ＣＰＵ３０は、筆記コードデータ５２４に変化がない場合には新たにコードを追加しないため、例えば使用者が右方向に横棒を書くと、「ｂｂｂ・・・」と同一の方向コードが連続し、結果として「ｂ」とのみコード化される。一方、横棒を書いた時に少し傾いてしまうと、方向コードがｂとｃの境界付近になり「ｂｃｂｃｂｃ」と検出されてしまい、同一の方向コードの連続でないためそのまま「ｂｃｂｃｂｃ」とコード化されることになる。この場合、使用者は同じ横棒を書こうとしたにも拘らずコード化の結果が大きく異なり、誤検出となる。そこで、「ｂｃｂ」の後に「ｃ」が検出されてもコードを追加しない処理（ハンチング回避）を行う。この時「ａ」が検出された場合は普通通りコードを追加することで、「ふ」や「む」等に含まれるＳ字カーブ状の軌跡は正確に表現できる。
【００５５】
すなわち、筆記コードデータ取得手段は、移動ベクトルが二つの方向を繰り返す時には繰り返し部分を削除してコード化する。これにより、ハンチングを回避でき筆記コードデータ５２４の検出精度が向上する。
【００５６】
＜効果＞
実施の形態１の文字認識装置１２によれば、既に述べた通り以下の効果を奏する。すなわち、文字認識装置は、使用者の所定動作に応じ、文字を筆記する入力期間と次文字に移る移行期間とを検出する入力期間検出手段と、手指の移動を移動ベクトルとして検出する移動検出手段と、入力期間中、移動検出手段で検出した移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した筆記コードデータ５２４を取得する移動情報取得手段と、各文字を正しい書き順および筆運びで筆記した場合に発生する移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した辞書コードデータを記憶する辞書コードデータ記憶手段と、移動情報取得手段が取得した筆記コードデータと辞書コードデータとを比較して使用者が筆記した文字を特定する特定手段と、を備える。移動ベクトルをコード化することにより、演算量と処理時間を低減することが出来る。又、次画への移行部分を含めてコード化することによって、連続的に複数の画数からなる文字を筆記することができ、筆記する場所や大きさや速度の制限が無い文字認識装置となる。
【００５７】
又、筆記コードデータ取得手段は、移動ベクトルの移動量が所定の閾値以下の時に静止状態と判定し、前記所定の閾値より大きい場合に移動方向に従って移動ベクトルをコード化し、当該所定の閾値は移動量の履歴に基づいて変更される。これにより、筆記スピードや文字の大小の個人差を考慮され、筆記コードデータ５２４の検出精度が向上する。
【００５８】
さらに、筆記コードデータ取得手段は、移動ベクトルが二つの方向を繰り返す時には繰り返し部分を削除してコード化する。これにより、ハンチングを回避でき筆記コードデータ５２４の検出精度が向上する。
【００５９】
又、実施の形態１の文字認識プログラムによれば、既に述べた通り以下の効果を奏する。すなわち、文字認識プログラムは、コンピュータを、使用者の所定動作に応じ、文字を筆記する入力期間と次文字に移る移行期間とを検出する入力期間検出手段、手指の移動を移動ベクトルとして検出する移動検出手段、入力期間中、移動検出手段で検出した前記移動ベクトルを次画への移行部分を含めてコード化し、時系列にしたがって圧縮した移動情報を取得する移動情報取得手段、移動情報取得手段が取得した移動情報と予め準備された辞書コードデータとを比較して使用者が筆記した文字を特定する特定手段、として機能させる。移動ベクトルをコード化することにより、演算量と処理時間を低減することが出来る。又、次画への移行部分を含めてコード化することによって、連続的に複数の画数からなる文字を筆記することができ、筆記する場所や大きさや速度の制限が無い文字認識プログラムとなる。
【００６０】
（実施の形態２）
＜構成＞
実施の形態１では、使用者が文字入力装置１２のペン型の筐体１４を手に持って空中に文字を書き、文字入力装置１２がこれを認識したが、実施の形態２では、使用者はハンドフリーにて空中に文字を書き、文字入力装置がその文字を認識する。
【００６１】
図９は、実施の形態２の入力システム９０の使用例を示す図である。図９を参照して、入力システム９０は文字入力装置９２と表示部９４を備えている。文字入力装置９２は入力システム９０に組み込まれており、例えば、同一筐体に内蔵され一体化している。文字入力装置９２はカメラで使用者の手を撮像し、手の動きや形状から使用者が空中に書いた文字を認識する。文字入力装置９２の認識結果は入力システム９０に送信され、かな文字変換機能や予測機能を有する入力システム９０は、表示部９４の表示や操作を含めて全体を制御する。
【００６２】
なお、本実施の形態では、文字入力装置９２は入力システム９０に内蔵され一体化するようにしてあるが、これに限定される必要はなく、実施の形態１のように分離されて有線や無線で通信するように構成してもよい。いずれにしても、文字入力装置９２は手に持つのではなく、環境に設置して外から手の動きや形状を検出する構成とする。また、入力システム９０としては、汎用のコンピュータ（デスクトップ、ラップトップ、ＰＤＡなど）は当然のこと、携帯電話機、車載ナビゲーション、ＡＶ商品から電子辞書まで内部にＣＰＵを持つあらゆる製品が該当し、上位システムの入力システム９０と下位コンポーネントの文字入力装置９２の切り分けや構成も製品により色々と考えられる。
【００６３】
図１０は文字入力装置９２の電気的な構成を示すブロック図である。この図１０を参照して、文字入力装置９２はＣＰＵ３０を含み、ＣＰＵ３０は、内部バス３２を介してＲＯＭ３４、ＲＡＭ３６および入出力（Ｉ／Ｏ）インターフェイス（以下、単に「インターフェイス」という。）３８に接続される。また、文字入力装置９２はカメラ４０を含み、このカメラ４０はインターフェイス３８と内部バス３２を介してＣＰＵ３０に接続される。ただし、カメラ４０は、そのレンズ部分が使用者側を向いて使用者の手を撮像するように配置される（詳細な図示は省略）。
【００６４】
＜動作＞
たとえば、使用者が文字入力装置９２の前に手を出し、手を握ることで文字入力を開始し、手を握ったまま空中に一筆書きで文字を書いて、一文字が書き終われば手を開く動作を行う。すると文字入力装置９２は、カメラ４０で撮像した使用者の手の形から一文字を書く入力期間の開始と終了のタイミングを検出し、さらに筆記中の使用者の手の位置から筆跡を検出する。即ち、実施の形態１では、文字単位の入力期間の開始と終了の検出をスイッチ１６のＯＮ／ＯＦＦによって検出していたが、実施の形態２では、カメラ４０で撮像した手指の形からこれを検出する。又、実施の形態１では、カメラ４０で撮像した画像全体の動きベクトルから筆記の方向を検出していたが、実施の形態２では、カメラで撮影した画像から手の位置を検出し、この手の動きから筆記の方向を検出する。その他の処理については、実施の形態１と同様の処理によって文字が認識できるので、カメラ４０の撮像画像から手の形と動きを検出する方法について次に説明する。
【００６５】
＜手の形と動きの検出＞
まず、前に出した手を検出する方法として、肌色情報を利用する手法がある。これは、一般的に手は肌色であるという前提に基づいて撮像画像から肌色に近い領域を抜き出し２値化するものである。原理上、使用者が手袋をしており手の色が肌色でない場合や、後ろに人の顔など肌色に近いものが存在する場合に誤検出してしまうという問題があるが、手が速く動く場合でも検出することが出来る。
【００６６】
また別の方法としては、赤外線ＬＥＤの発光制御と、被写体との距離が近いほど赤外線の反射レベルが大きくなることを利用し、距離画像から前に出した手の領域を２値化画像として検出することが出来る。この方法では速い手の動きを検出することが苦手であるが、背景に人の顔など肌色に近い物が存在する場合でも正しく手を検出できるという利点がある。
【００６７】
図１１は、上記の様な手法を用いて前に出した手を検出した２値化画像である。図１１（Ａ）のような２値化画像を検出すると、これから筆記の方向を検出するために手のひらの位置検出処理を行い、さらに筆記の開始から終了までの入力期間を検出するために手の形状判定処理を行う。以下、これらの処理について説明する。
【００６８】
手のひらの位置検出には重心が利用されることが多いが、腕が露出している場合には腕の伸びた方向に重心が移動してしまうため、正確な手のひらの位置を検出することが出来ない。そこで、一般的に前に出した手のひらの２値化領域は腕の２値化領域の幅よりも広くなることを利用する。例えば、図１１（Ｂ）のように２値化領域の端からの距離が最大となる点を求め、この位置を手のひらの中心とする。そして、手のひら中心の移動ベクトルをコード化して筆記コードデータ５２４とする。このようにＣＰＵ３０は、手指の位置を検出する位置検出手段として機能する。
【００６９】
手の形状判定処理では、一例として手を握った状態と開いた状態を判定する。上述の方法で検出した手のひらの中心を利用し、図１１（Ｃ）に示すように、手のひら中心の位置より上側にある２値化領域に対して評価パラメータを求める。評価パラメータは、２値化領域の面積や２値化領域に外接する矩形又は円の面積、２値化領域の周囲長などである。手を握ると、手を開いた時に比べて（外接面積／２値化面積）や（周囲長／２値化面積）が小さくなるため、これらのパラメータを評価することによって形状判定が可能である。このように、ＣＰＵ３０は手指の形状を検出する形状検出手段としての機能も有し、手指の形状から入力期間と移行期間を検出する。
【００７０】
すなわち、実施の形態２の文字認識装置は、使用者の手指を撮像する撮像手段（カメラ４０）をさらに備え、入力期間検出手段は、撮像手段によって撮像した手指の形状を検出する形状検出手段を備え、形状検出手段の検出結果に基づいて入力期間と前記移行期間とを検出し、移動検出手段は、前記撮像手段によって撮像した手指の位置を検出する位置検出手段を備え、位置検出手段が検出する手指の位置変化から移動ベクトルを検出する。使用者は手にデバイスを持たずに空中に文字を筆記し、環境側に設置したカメラを利用して文字を認識するため、デバイスを持つ場合に比べてさらに自由度が高く便利な空中手書き入力が実現できる。
【００７１】
なお、実施の形態１，２の文字認識装置は種々の用途に応用できる。例えば本発明をナビゲーションシステム等の車載機器に応用すると、運転者がハンドル横に手をかざし空中で一筆書きしたその動きをカメラで検出することによって文字入力が実現され、目的地設定や地名検索に利用できる。そのため、従来は５０音で表示したタッチパネルを押すために視線をタッチパネルに向ける必要があったが、視線をそらすことなく文字入力が簡単かつ安全に行える。また、本発明をＡＶ機器に応用すると、空中で一筆書きした動きをカメラで検出することにより文字入力が実現でき、予約番組検索や記録コンテンツ検索さらにはインターネット検索等に利用できる。そのため、従来の５０音が表示されたアイコンを上下左右ボタンの操作で設定する方法や携帯電話で用いられる入力方法等に比べ、一筆書きで字を書くことから直感的で使い易い文字入力が実現できる。また、リモコンに本発明を適用すれば、カメラ内蔵のリモコンを机などに置き、その前で手を動かすことによって入力したり、リモコン自体を手で持って一筆書きすることにより入力することも可能である。これらの文字入力は、過去の履歴やコンテクストを利用した推論機能と組み合わせることにより、さらに効果を発揮する。
【００７２】
＜効果＞
実施の形態２の文字認識装置によれば、既に述べたとおり以下の効果を奏する。すなわち、文字認識装置は、使用者の手指を撮像する撮像手段（カメラ４０）をさらに備え、入力期間検出手段は、撮像手段によって撮像した手指の形状を検出する形状検出手段を備え、形状検出手段の検出結果に基づいて入力期間と前記移行期間とを検出し、移動検出手段は、前記撮像手段によって撮像した手指の位置を検出する位置検出手段を備え、位置検出手段が検出する手指の位置変化から移動ベクトルを検出する。使用者は手にデバイスを持たずに空中に文字を筆記し、環境側に設置したカメラを利用して文字を認識するため、デバイスを持つ場合に比べてさらに自由度が高く便利な空中手書き入力が実現できる。
【符号の説明】
【００７３】
１０，９０  入力システム、１２，９２  文字入力装置、１４  筐体、１６  スイッチ、３０  ＣＰＵ、３６  ＲＡＭ、４０  カメラ、５００  メイン処理プログラム、５０２  手指の動き検出プログラム、５０４  コード化プログラム、５０６  文字特定プログラム、５０８  文字入力プログラム、５２０  辞書コードデータ、５２２  方向データ、５２４  筆記コードデータ、５２６  評価用テーブルデータ、５２８  筆記中フラグ。
【図１】
0005495657.tif 000002
【図２】
0005495657.tif 000003
【図３】
0005495657.tif 000004
【図４】
0005495657.tif 000005
【図５】
0005495657.tif 000006
【図６】
0005495657.tif 000007
【図７】
0005495657.tif 000008
【図８】
0005495657.tif 000009
【図９】
0005495657.tif 000010
【図１０】
0005495657.tif 000011
【図１１】
0005495657.tif 000012