【文献】
広瀬克昌、外3名,レイアウト解析と文字認識に基づく文書画像のメディアコンバージョン,電子情報通信学会技術研究報告,社団法人電子情報通信学会,2000年 2月21日,Vol.99,No.648,pp.39〜46(PRMU99−224)
(58)【調査した分野】(Int.Cl.,DB名)
前記取得部は、各々の前記集合に対応して予め用意されたストローク列のテンプレート群を使用して形成された手書き文字列を取得する、請求項1ないし6のいずれか1項に記載の手書き文字検索装置。
【発明を実施するための形態】
【0007】
以下、図面を参照しながら本発明の実施形態に係る手書き文字検索装置について詳細に説明する。なお、以下の実施形態では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。
【0008】
本実施形態では、予め筆記された(例えば大量の)手書き文書から、ユーザが手書きした手書き文字列をクエリーとして、検索を行うものである。本実施形態では主に文字列を例に説明するが、クエリーはユーザが描画した線やマークであってもよい。また、ユーザが手書き文字列を指定する方法には、どのような方法を使用しても良い。例えば、ユーザが実際に文字列を手書きすることによって、クエリーを指定するようにしても良い。既存の手書き文書の中からユーザがクエリーとして用いる部分を選択するようにしても良い。クエリー用のテンプレートの中からユーザがクエリーとして用いるものを選択するようしても良い。それらの組み合わせであっても良い。
【0009】
また、本実施形態では、クエリーと手書き文字列との類似度の判定に、ストローク単体に固有の特徴量に加えて、ストローク群の集合に基づく特徴量を使用する。なお、ストロークとは手書き入力された筆画であり、ペン等が入力面に接してから離れるまでの軌跡を表す。
【0010】
また、本実施形態では、クエリーに類似またはマッチした手書き文字列を含む手書き文書を、検索結果として提示するものとする。
【0011】
図1に、本実施形態の手書き文字検索装置の構成例を示す。
図1に示されるように、本実施形態の手書き文字検索装置は、取得部1、統合部2、統合情報付与部3、特徴抽出部5、検索部7、結果表示部8、インクデータデータベース(インクデータDB)11、特徴量データベース(特徴量DB)12を備えている。
【0012】
インクデータDB11は、ストロークを文書単位で統合したインクデータを記憶する。
【0013】
特徴量DB12は、個々のストローク単体に固有の特徴量(第1の特徴量)及び個々のストロークの属する集合に基づく特徴量(第2の特徴量)を記憶する。ここで、集合とは、個々のストロークは1又は複数のストローク(以下ストローク群と称する)により形成されるものである。
【0014】
取得部1は、クエリーとして用いる手書き文字列を取得するためのものである。
【0015】
ここでは、ユーザが筆記するストロークを取得する場合を中心に説明を行う。なお、この手書き入力の方法には、タッチパネル上でペンにより入力する方法、タッチパネル上で指により入力する方法、タッチパッド上で指により入力する方法、マウスを操作して入力する方法、電子ペンによる方法など、種々の方法を用いることができる。
【0016】
ユーザが筆記したストローク群は、例えば、ユーザが文書を書き終わる際或いは保存する際などに、インクデータDB11として蓄積される。インクデータは、文書単位等でストローク群を格納するためのデータ構造である。
【0017】
特徴抽出部5は、各ストロークから、(当該ストローク単体に固有の)特徴を記述した特徴量(第1の特徴量)を抽出する。
【0018】
統合部2は、インクデータに関してストロークを複数の集合に統合、統合情報を抽出する。統合情報は、各々のストロークの属する1又は複数の集合を示す情報である。例えば、統合情報は、各集合について、統合した結果の種類を示す分類ラベルと、その集合が位置する領域データを含む。領域データとは、対角指定した矩形と、回転角で表現する。
【0019】
統合情報付与部3は、各ストロークの特徴量(第1の特徴量)に、統合部2により得られた集合情報(第2の特徴量)を付与する。
【0020】
検索部7は、複数のストロークで構成される文字列をクエリーとして記憶してある特徴量を用いて類似する文字列を検索する。
【0021】
結果提示部8は、検索結果を提示する。
【0022】
図2に、本実施形態の手書き文字検索装置の処理の一例を示す。
【0023】
ステップS1において、取得部1が、クエリーとして用いるべき手書き文書或いは文字列(手書きストローク列)を取得する。
【0024】
ステップS2において、統合部2が、該取得されたインクデータに対して統合情報を抽出(統合処理を実行)する。
【0025】
ステップS3において、特徴抽出部5が、該取得されたインクデータに対して特徴抽出処理を実行する。
【0026】
ステップS4において、統合情報付与部3が、統合部2による統合処理の結果に基づいて、該取得されたインクデータに対して統合情報付与処理を実行する。
【0027】
ステップS5において、検索部7が、特徴抽出部5により得られた第1の特徴量及び統合情報付与部3により得られた第2の特徴量をもとに、検索を実行する。
【0028】
ステップS6において、結果表示部8が、検索部7により得られた検索結果を表示する。
【0029】
なお、上記の処理において、ステップS3は、ステップS1とステップS5の間の任意のタイミングで実行可能である。同様に、ステップS2,S4(ただし、ステップS4はステップS2の後に行われるものとする)は、ステップS1とステップS5の間の任意のタイミングで実行可能である。また、ステップS3と、ステップS2,S4とを並列処理しても良い。更に、ステップS3は、ステップS1とともに実行することが可能である。
【0030】
次に、
図3を参照しながら、インクデータのデータ構造及びストロークデータのデータ構造について説明する。
【0031】
通常、ストロークは所定のタイミングで(例えば一定周期で)軌跡上の点がサンプリングされる。従ってストロークは、サンプリングされた点の系列により表現される。
【0032】
図3(b)の例において、1ストローク分(すなわち、1画分)のストローク構造は、ペンが移動した平面上の座標値の集合(点構造)で表現され、具体的には、そのストロークを形成する点の個数を示す「点総数」、「開始時刻」、「外接図形」、点総数に相当する個数の「点構造」の配列を含む構造体である。ここで、開始時刻は、そのストロークにおいてペンが入力面に接して書き出された時刻を示す。外接図形は、文書平面上においてそのストロークの軌跡に対する外接図形(好ましくは、文書平面上においてそのストロークを内包する最小面積の矩形)を示す。
【0033】
点の構造は、入力デバイスに依存し得る。
図3(c)の例では、1点の構造は、その点がサンプリングされた座標値x,y、筆圧並びに初期点(例えば上記の「開始時刻」)からの時間差の4値を持つ構造体である。
【0034】
なお、座標は文書平面の座標系であり、左上の隅の原点として右下の隅になるほど値が大きくなる正の値で表現しても良い。
【0035】
また、入力デバイスが筆圧を取得できない場合或いは筆圧を取得できても以降の処理で筆圧を使用しない場合には、
図3(c)の筆圧を省いても良いし或いは筆圧に無効を示すデータを記述しても良い。
【0036】
なお、
図3(b),(c)の例において、ストローク構造における個々の点構造の領域に、座標値x,y等の実データを記載しても良いし、あるいは、ストローク構造のデータと点構造のデータとを別々に管理するものとして、ストローク構造における個々の点構造の領域に、対応する点構造へのリンク情報を記載しても良い。
【0037】
図4に、取得されるストロークの例を示す。ここでは、ストローク内のサンプル点のサンプリング周期が一定である場合を例にとって説明する。
図4(a)は、サンプリングした点の座標を示しており、
図4(b)は、時間的に連続する点構造を線形補間して示している。サンプリング点の座標間隔が異なるのは、筆速の違いによるものである。サンプリング点数は、個々のストロークにより異なり得る。
【0038】
図3(a)の例において、インクデータのデータ構造は、その文書の全領域に含まれるストローク構造の個数を示す「ストローク総数」、ストローク総数に相当する個数の「ストローク構造」の配列を含む構造体である。
【0039】
なお、
図3(a),(b)の例において、インクデータ構造における個々のストローク構造の領域に、
図3(b)のデータを記載しても良いし、あるいは、インクデータ構造のデータと、
図3(b)のストロークのデータ構造とを別々に管理するものとして、インクデータ構造における個々のストロークのデータ構造の領域に、対応する
図3(b)のデータへのリンク情報を記載しても良い。
【0040】
入力デバイスを用いてユーザが筆記したストロークデータは、例えば
図3に示すようなインクデータ構造によりメモリ上に展開される。インクデータは、例えば文書として保存される際などに、インクデータDB11として蓄積される。
【0041】
なお、複数の文書を蓄積する場合に、それら文書を識別するための文書IDを、各インクデータに対応付けて保存しても良い。また、個々のストロークを識別するために、各ストローク構造にストロークIDを付与しても良い。
【0042】
次に、特徴抽出部5について説明する。
【0043】
特徴抽出部5は、個々のストロークからそれぞれ、ストローク単体に固有の特徴量(第1の特徴量)を抽出する。ここでは、ストローク単体の情報だけで処理が可能であるため、ストロークデータが入力されると、インクデータのデータ構造に追加されるのと並行して、特徴抽出を行っても良い。ただし、インクデータの取得が完了した後に、まとめて第1の特徴量の抽出を行っても良い。
【0044】
ところで、ストロークデータは、サンプリングされた座標値の集合で記述されるが、たとえ同一の形状を筆記しても筆速により得られる座標値が異なるため、固定数のサンプル点へ再度サンプリングするリサンプリングを行うことで、筆速を正規化するのが好ましい。
【0045】
例えば、ここでのリサンプリング処理は、ストローク長を固定数Nのサンプリング点で一定間隔に再サンプリングすることとし、オリジナルのサンプリング点の近傍2点から線形補間で座標値を算出する。ここでは、N=128としリサンプリングする。
図5の(a)と(b)にそれぞれリサンプリング前と後のデータを例示する。
【0046】
ストローク単体に固有の特徴量として、種々の特徴量を利用することが可能である。
【0047】
以下では、そのような特徴量の一例について説明する。
【0048】
まず、
図5(b)のようなリサンプリング後のストロークデータについて、外接矩形の長辺を1辺の長さとする正方形により、ストローク群の領域(ストローク領域)を設定する。その際、外接矩形の中心が、ストローク領域の中央に位置するようにする。ストローク領域の中央とは、例えば複数の点の座標を平均した位置である。そして、ストローク領域をx方向とy方向に関してそれぞれS個に均等分割し、S
2個の局所領域を求める。ここで、Sは分割数のパラメータであり、奇数とするのが望ましい。ここでは、具体例としてS=7とする(この場合、
図5(b)の領域が、縦横にそれぞれ7分割される)。
【数1】
【0051】
具体例としてS=7の場合、全49個の局所領域についてそれぞれヒストグラムが得られる。
【0052】
ここで、floor ( )は、床関数を意味する。δ(i,j)は、iとjが一致する場合は1を返し、それ以外の場合は0を返す関数とする。Dは、360度(2πラジアン)の勾配方向の分類数(量子化数)を示すパラメータであり、偶数とするのが望ましい。ここでは、具体例としてD=16とする(この場合、勾配方向が16種類に分類される)。
【0053】
次に、ストロークの表記ゆれに対しロバスト化するため、量子化した勾配方向(例えばD=16)と局所領域(例えばS
2=49)に関して、周辺の値を平均することで平滑化を行う。
【0054】
まず、勾配方向に関してガウシアンフィルタを用いてD´にダウンサンプリングする。例えば、D´=D/2である。
【0055】
具体例として、D´=D/2、D=16とすると、D´=D/2=8であり、この場合、勾配方向の分類数(量子化数)が16個から8個になる。
【0056】
以下に、勾配方向に関するガウシアンフィルタの一例を示す。
【数4】
【0057】
ここで、勾配方向は、周期関数で表現できるので、bin´=D/2の場合は、上記式における第3項にHist
l(0)を用いる。
【0058】
続いて、上記のように勾配方向を平滑化されたヒストグラムHist´を用いて、更に、周辺の局所領域間での平滑化を行って、Hist´
´を求める。勾配方向と同様にガウシアンフィルタを用いて、x方向とy方向にそれぞれS´個にダウンサンプリングする。例えば、S´=(S−1)/2である。
【0059】
具体例として、S´=(S−1)/2、S=7とすると、S´=(S−1)/2=3であり、この場合、x方向とy方向にそれぞれ3個にダウンサンプリングされる(すなわち、局所領域の数が、49個から9個になる)。
【0060】
以下に、局所領域に関するガウシアンフィルタの一例を示す。
【数5】
【0061】
以上のようにして、S´×S´個の局所領域のそれぞれについてD´次元のヒストグラムHist´
´l(x´,y´)が得られる。
【0062】
最終的に、上記のようにして得られたヒストグラムHist´
´l(x´,y´)を1本のベクトルとしてラスタスキャンして並べ、ストロークの次元の特徴量として出力する。すなわち、第1の特徴量として、S´×S´×D´次元の特徴量ベクトルが得られる。
【0063】
上記具体例の場合には、3×3×8=72次元の特徴量ベクトルになる。
【0064】
以上のようにして特徴抽出部5により抽出された特徴量は、「ストローク固有の特徴量」として特徴量DB12として蓄積される。
【0065】
図6に、ストローク単体に対する特徴量DB12の内容の一例を示す。特徴量DB12には、ストローク固有の特徴量とストロークの集合に基づく特徴量(第2の特徴量)とを蓄積する。なお、「ストロークの集合に基づく特徴量(第2の特徴量)」、例えば図形領域、表領域、文字域の分類については、後述する。
【0066】
なお、インクデータDB11に蓄積されている個々のストロークと、特徴量DB12に蓄積されている個々のストロークに対する特徴量とは、例えば、ストロークIDにより関連付けられても良い。あるいは、インクデータDB11中に(例えば
図3(b)の個々のストローク構造の中に)、特徴量へのリンク情報を記載しても良い。あるいは、インクデータDB11中に(例えば
図3(b)の個々のストローク構造の中に)特徴量を記載することによって、インクデータDB11と特徴量DB12とを一つのデータベースとして蓄積することも可能である。
【0068】
統合部2は、蓄積されたインクデータに対して、文書平面上でのストロークの位置関係と属性から複数の集合に統合する統合処理を実行する。
【0069】
インクデータに対しストロークを統合するにあたって、いくつかの集合に統合する。
【0070】
ここで、
図7〜
図9を参照しながら、ストロークの群の例について説明する。ストロークの群は、例えば、文字領域と、文字領域以外の領域に分類される。好ましくは、
図7に示されるように、ストローク群は、大きく3つの領域、すなわち、「文字領域」、「図形領域」、「表領域」の単位に分類される。更に、「文字領域」は、その下位に、階層構造を有することができ、例えば、「段落ブロック」、その下位の「行ブロック」を有し得る。更に、
図8に示すように「行ブロック」の下位に「単語ブロック」、「単語ブロック」の下位に「文字ブロック」を有し得る。また更に、
図9に示すように「文字ブロック」の下位に「部首ブロック」を有し得る。これらすべてを使用した場合には、8種類の集合が存在するが、それらのうちから適宜選択した一部のみを使用することも可能である。
【0071】
次に、
図10を参照しながら、統合処理の例について説明する。
図10は、統合部2の内部機能ブロック又は内部処理の構成例である。
【0072】
まず、筆記されたストロークの属性情報として、文字領域と図形領域と表領域の単位に分類(統合)する(領域分類部又は領域分類処理21)。
【0073】
例えば、各ストロークが文字と図形と表とのいずれに属するかを判定するように予め学習された識別器を用いて、ストロークに対して尤度を算出し、文書平面上での空間的な近さと連続性を加味するためマルコフ確率場(Markov random field;MRF)で表現し、最も分離のよい領域を推定することによって、文字領域と図形領域と表領域に領域分割しても良い(例えば、“X.-D. Zhou, J.-L. Yu, C.-L. Liu, T. Nagasaki, and K. Marukawa, "Online Handwritten Japanese Character String Recognition Incorporating Geometric Context, " Proc. Ninth Int’l Conf. Document Analysis and Recognition, Curitiba, Brazil, pp. 48-52, 2007.”を参照)。
【0074】
なお、文字領域と図形領域と表領域の分類は、上記手法に制限されない。
【0075】
インクデータを文字領域と図形領域と表領域に統合した後、文字領域に関して更に詳細な領域に統合する。
【0076】
まず、本実施形態では、行ブロックの領域に統合する(行ブロック統合部又は行ブロック統合処理22)。
【0077】
各ストロークデータには、筆記された時間情報が含まれるため、例えば、筆記順に並べ替えたストローク列に関して、連続するストロークの外接矩形間の距離が閾値未満ならば、同一の行ブロックに属すると判定し、閾値以上ならば、異なる行ブロックに属すると判定しても良い。
【数6】
【0078】
上記の式は、i番目のストロークが直前のストロークと同一の行であるかを判定する関数である。SR
iは、ストロークの外接矩形を示し、Dist(r1,r2)は、外接矩形r1とr2の距離を返す関数とする。ここでの外接矩形間の距離は、外接矩形の重心点間のユークリッド距離とする。また、閾値threshold
lineは、予め定められたパラメータであり、筆記可能な文書平面の範囲に連動する。文字列等のストローク位置データのx軸方向が大幅に変化したことが分かればよく、例えば、対象インクデータのx軸の範囲の30%などとすればよい
ところで、行領域は軸と平行に筆記されているとは限らないので、表記の回転を吸収するため、右から左か、上から下か、左から右かの3種類の方向に正規化しても良い。文書平面上において、行ブロックの主成分分析により第一主成分を求め、その固有ベクトルと上記の3種類の方向とを比較して、上記の3種類の方向のうちで最も近い方向に、行ブロックを回転させる。なお、筆記されている言語が限定できる場合は、正規化する方向を限定することができる。例えば、アラビア語であるならば、左から右への方向のみに限定し、あるいは、日本語であるならば、右から左への方向と、上から下への方向の2方向に限定するなどが考えられる。
【0079】
なお、行ブロックの統合は、上記手法に制限されない。
【0080】
次に、段落ブロックの構造に統合する(段落ブロック統合部又は段落ブロック統合処理23)。
【0081】
例えば、文書平面上において、行ブロックの領域の短辺の方向に関して全てのストロークを射影し、一定区間中のストローク頻度を算出したヒストグラムを求める。求めたヒストグラムは多峰性を有し、その各峰を1つの段落ブロックとして統合する。峰の総数が未知であるため、頻度の凝縮性と射影軸上での距離を用いてクラスタリングすることによって、分峰することができる(例えば、“今井, 藤村, 黒田, ヒストク゛ラム値による重み付き逐次ファシ゛ィクラスタリンク゛に基づく多峰性ヒストク゛ラムの分峰手法, 映像情報メテ゛ィア学会誌, 映像メテ゛ィア61(4), pp. 550-553, 2007.”を参照)。
【0082】
なお、段落ブロックの統合は、上記手法に制限されない。
【0083】
次に、文字ブロックの領域に統合する(文字ブロック統合部又は文字ブロック統合処理24)。
【0084】
例えば、上記の手法で統合した行の領域の外接矩形における短辺の中央値を1文字のサイズとして、各行領域に対して統合を行う。筆記順にストロークの外接矩形のAND処理を行い、結合した矩形を求める。このとき、結合後の矩形が行構造の長辺方向に文字サイズより大きくなるならば、対象のストロークは直前のそれと異なる文字ブロックの領域に属すると判定し、そうでないならば、同一の文字ブロックの領域に属すると判定しても良い。
【0085】
なお、文字ブロックの統合は、上記手法に制限されない。
【0086】
次に、単語ブロックの領域に統合する(単語ブロック統合部又は単語ブロック統合処理25)。
【0087】
なお、ここでの単語とは、例えば形態素解析を行い品詞ごとに分割された単語ではなく、行ブロックよりも詳細で文字ブロックよりも大まかな領域を表す。正確に単語として統合するには文字認識が必須であるため、テキスト情報として意味のある単語になるとは限らない。単語ブロックの構造は、例えば、行ブロックの領域に対して文字ブロックの領域の外接矩形の座標値に関してクラスタリングすることによって、k個のクラスタに分類し、その各クラスタを単語ブロックの領域とすることによって、算出しても良い。
【0088】
なお、単語ブロックの統合は、上記手法に制限されない。
【0089】
次に、漢字などの複数ストロークで1文字を構成する場合に、さらに詳細な領域に統合するため、部首ブロックに統合する(部首ブロック統合部又は部首ブロック統合処理26)。
【0090】
上記の手法で統合した文字ブロック構造に対して、閾値による文字ブロック統合と同様の処理を行う。
【0091】
なお、部首ブロックの統合は、上記手法に制限されない。
【0092】
なお、上記の処理例において、段落ブロックの統合と、文字ブロック・単語ブロック・部首ブロックの統合とは、独立して実行可能である(上記の説明とは異なる順序で又は並列的に実行し得る)。また、単語ブロックの統合と、部首ブロックの統合とは、独立して実行可能である(上記の説明とは異なる順序で又は並列的に実行し得る)。
【0093】
次に、統合情報付与部3について説明する。
【0094】
さて、個々のストロークは、上記のようにして抽出された1又は複数の集合に属することになる。
【0095】
統合情報付与部3は、個々のストロークについて、特徴量DB12に蓄積されている、特徴抽出部5により抽出されたストローク単体に固有の特徴量(第1の特徴量)に対して、当該ストロークの属する個々の集合について、その集合に属するストロークの総数を求め、それらを第2の特徴量として追加するものである。追加される第2の特徴量の次元数は、統合する単位の数であり、例えば上記した手法を全て用いると8次元となる。
【0096】
図6は、この場合の個々のストロークの特徴量(特徴量ベクトル)について例示したものである。すなわち、当該ストロークが図形領域に属する場合には、その図形領域に属するストロークの総数が
図6の図形領域の欄に記述され、当該ストロークが表領域に属する場合には、その表領域に属するストロークの総数が
図6の表領域の欄に記述され、当該ストロークが文字域に属する場合には、その文字域に属するストロークの総数が
図6の文字領域の欄に記述される。当該ストロークが文字域に属する場合には、更に、当該ストロークの属する段落、行、単語、文字及び部首ブロックにそれぞれ属するストロークの総数が、それぞれ、
図6の対応する欄に記述される。
【0097】
なお、第1の特徴量(例えば、3×3×8=72次元の特徴ベクトル)と、第2の特徴量(例えば、8次元の特徴ベクトル)との重みを調整するため、それぞれベクトル長を1に正規化した後に結合しても良い。また、いずれかの特徴量を優先する場合は、正規化するベクトル長を変動させることで実現が可能になる。
【0098】
ここで、
図11及び
図12の具体例を用いて説明する。
【0099】
例えば、第1の特徴量のみを用いる場合に、本来は区別したいストローク列同士であっても、区別できない場合がある。例えば、
図11(a)に示すストローク列(二分の一)と、
図11(b)に示すストローク列(一マイナス二)との類似度は、統合情報を用いない場合(第1の特徴量のみを用いる場合)、ほぼ1の値を示すため、それらを区別することができない。
【0100】
ここで、統合情報付与部3により、第2の特徴量として、少なくとも文字ブロックのストローク数が追加されるものとする。この場合、
図11(a)については、例えば、統合により、“1”と“−”と“2”が1つの文字ブロックを形成するものと判定され、
図12(a)に示すように、“1”と“−”と“2”の「文字ブロックのストローク総数」としてそれぞれ3ストロークが記述される。これに対して、
図11(b)に示すストローク列(一マイナス二)については、例えば、統合により、“1”と“−”と“2”が1つの文字ブロックを形成しないものと判定され(それぞれが、1つの文字ブロックを形成するものと判定され)、
図12(b)に示すように、“1”と“−”と“2”の「文字ブロックのストローク総数」としてそれぞれ1ストロークが記述される。従って、この場合には、第2の特徴量によって、
図11(a)に示すストローク列(二分の一)と、
図11(b)に示すストローク列(一マイナス二)とを分別することが可能になる。
【0101】
なお、これまでは、各ストロークについて、当該ストロークが属する集合に含まれるストロークの総数を、第2の特徴量として追加する場合について説明したが、集合を利用する特徴量として、上記した特徴量の代わりに又は上記した特徴量に加えて、他の特徴量を用いることも可能である。
【0102】
例えば、各ストロークについて、当該ストロークが属する集合に含まれる全ストロークに対して、それら全ストロークに対して、第1の特徴量の算出方法と同一の算出方法を適用することによって、追加する特徴量を算出することも可能である。
【0104】
検索部7は、例えばこれまで説明したような手法により抽出された特徴量(特徴ベクトル)を用いて、ユーザが指定する複数のストロークで構成されるストローク列に類似するストローク列を検索する。
複数の特徴ベクトル列同士のマッチングには、種々の方法を利用することができる。
【0105】
例えば、DPマッチング(DP;Dynamic Programming、動的計画法)を利用しても良い。特徴ベクトル間の類似度も同様に、種々の方法を利用することができる。例えば、正規化相互相関を利用して良い。ところで、ユーザが指定するストローク列のストローク数と、ユーザが所望するストローク列のストローク数とは、必ずしも同じにはならない可能性がある。なぜならば、例えば筆記者によっては同じ文字の2画分を1画で筆記することなどがあり、同じ意味を有する文字列であっても、筆記者によって異なる画数で筆記される可能性があるからである。通常、ストロークに関するDPマッチングは、1ストローク対1ストロークの対応のみを扱い、2つのストローク列間の伸縮を許容した最適な対応付けを行う手法である。そこで、ここでは、例えば、1ストローク対Nストロークの対応も考慮したDPマッチングを用いることによって、筆画変動にロバストなマッチングが可能となる(例えば、“増田, 内田, 迫江, オンライン文字認識におけるDPマッチンク゛の実験的最適化, 電気関係学会九州支部連合大会, H.17. http://human.ait.kyushu-u.ac.jp/~uchida/Papers/masuda-shibu2005.pdf”を参照)。
【0106】
ここでは、例えば、マッチングの対象となるストローク列に含まれる全てのストロークを始点として、ユーザが指定するクエリーであるストローク列との対応付けを行った後、ストローク列間の類似度を算出する。そして、各始点からの類似度を算出した後、降順にソートする。全てのストロークを始点とするため、オーバーラップした結果が得られる。その後、ピーク検出を行って、オーバーラップしたストロークの範囲を統合する。
【0107】
なお、上記の他にも、種々のマッチング方法が可能である。
【0108】
検索部7が、結果表示部8へ検索結果を与える場合に、全ての結果を出力しても良いが、その代わりに、例えば、類似度で上位K個の結果を出力としても良いし、あるいは、類似度が閾値以上である結果を出力としても良いし、上限をK個として、類似度が閾値以上である結果を出力としても良いし、他の方法を用いても良い。
【0109】
次に、結果表示部8について説明する。
【0110】
結果表示部8は、検索部7から与えられた検索結果を、ユーザに提示する。
【0111】
検索結果の表示方法には、種々の方法が可能である。
【0112】
例えば、
図13に例示するように、表示デバイスの画面をタイル状に分割し、各タイルに縮小した文書のサムネイルを表示させるようにしても良い。
【0113】
その際に、表示順として、例えば、検索結果の類似度の高いストローク列を含む順に、文書のサムネイルを並べるようにしても良い。
【0114】
また、サムネイルにおいて、検索結果のストローク列を強調表示するようにしても良い。
【0115】
以下、本実施形態のバリエーションについて説明する。
【0116】
本実施形態の手書き文字検索装置の検索部7は、手書き文字検索装置の内部に蓄積されている手書き文書群を検索対象としても良いし、手書き文字検索装置がイントラネット及び/又はインターネット等のネットワークに接続可能である場合に、ネットワークを介してアクセス可能な手書き文書群を検索対象としても良いし、手書き文字検索装置に接続されたリムーバブル・メモリ内に蓄積された手書き文書群を検索対象としても良いし、それらの任意の組み合わせであっても良い。なお、それら手書き文書は、少なくとも本実施形態の検索において使用する特徴量と同じ特徴量が対応付けられて、蓄積されているのが望ましい。
【0117】
本実施形態の手書き文字検索装置は、スタンドアローンの装置として構成することも、ネットワークを介して通信可能な複数のノードに分散した形で構成することも可能である。
【0118】
また、本実施形態の手書き文字検索装置は、デスクトップ型又はラップトップ型の汎用計算機、携帯型の汎用計算機、その他の携帯型の情報機器、タッチパネルを有する情報機器、スマートフォン、その他の情報処理装置など、様々なデバイスによって実現可能である。
【0119】
図14に、本実施形態の手書き文字検索装置を実現するハードウェアの構成例を示す。図中、201はCPU、202は所定の入力デバイス、203は所定の出力デバイス、204はRAM、205はROM、206は外部メモリ・インタフェース、207は通信インタフェースである。例えば、タッチパネルを使用する場合には、例えば液晶パネルとペンと液晶パネル上に設けられたストローク検出装置等が利用される(図中、208参照)。
【0120】
また、例えば、
図1の構成の一部分をクライアント上に設け、
図1の構成の残りの部分をサーバ上に設けることも可能である。
【0121】
例えば、
図15は、イントラネット及び/又はインターネット等のネットワーク302上にサーバ301が存在し、各クライアント303,304がネットワーク302を介してそれぞれサーバ301と通信することによって、本実施形態の手書き文字検索装置が実現する様子を例示している。
【0122】
なお、クライアント303は、無線通信を介してネットワーク302に接続され、クライアント304は、有線通信を介してネットワーク302に接続される場合を例示している。
【0123】
クライアント303,304は、通常、ユーザ装置である。サーバ301は、例えば、企業内LAN等のLAN上に設けられたものであっても良いし、インターネット・サービス・プロバイダ等が運営するものであっても良い。また、サーバ301がユーザ装置であって、あるユーザが他のユーザに機能を提供するものであっても良い。
【0124】
図1の構成を、クライアントとサーバに分散する方法として、種々の方法が考えられる。
【0125】
例えば、
図1中、102で示す範囲をクライアント側に搭載し、それ以外の範囲をサーバ側に搭載しても良いし、検索部7のみをサーバ側に搭載し、それ以外の範囲をクライアント側に搭載しても良い。
【0126】
なお、
図1の101の範囲を備えた装置、あるいは、
図1の101から取得部1を場外した範囲を備えた装置を実現しても良い。この場合、当該装置は、スストローク列から、特徴量を抽出する機能を有するものである。また、例えば、
図1中の102で示す範囲をクライアント側に搭載し、検索部7を第1のサーバに搭載し、101から取得部1を除いた範囲を第2のサーバに搭載しても良い。
【0127】
また、これら以外の分散方法も可能である。
【0128】
以上説明してきたように、本実施形態によれば、より的確な手書き文字検索が可能になる。より具体的には、例えば、各ストローク単体から特徴を抽出するだけでなく、取得したストローク列を行ブロック及び文字ブロックのような集合に統合し、その集合中のストローク群全体からも特徴を抽出し、それらを組み合わせて検索を行う。これによって、より多くの情報量が獲得できるため、検索性能が向上する。
【0129】
なお、上述の実施形態の中で示した処理手順に示された指示は、ソフトウェアであるプログラムに基づいて実行されることが可能である。汎用の計算機システムが、このプログラムを予め記憶しておき、このプログラムを読み込むことにより、上述した実施形態の手書き文字検索装置による効果と同様な効果を得ることも可能である。上述の実施形態で記述された指示は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フレキシブルディスク、ハードディスクなど)、光ディスク(CD−ROM、CD−R、CD−RW、DVD−ROM、DVD±R、DVD±RWなど)、半導体メモリ、またはこれに類する記録媒体に記録される。コンピュータまたは組み込みシステムが読み取り可能な記録媒体であれば、その記憶形式は何れの形態であってもよい。コンピュータは、この記録媒体からプログラムを読み込み、このプログラムに基づいてプログラムに記述されている指示をCPUで実行させれば、上述した実施形態の手書き文字検索装置と同様な動作を実現することができる。もちろん、コンピュータがプログラムを取得する場合または読み込む場合はネットワークを通じて取得または読み込んでもよい。
また、記録媒体からコンピュータや組み込みシステムにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワーク等のMW(ミドルウェア)等が本実施形態を実現するための各処理の一部を実行してもよい。
さらに、本実施形態における記録媒体は、コンピュータあるいは組み込みシステムと独立した媒体に限らず、LANやインターネット等により伝達されたプログラムをダウンロードして記憶または一時記憶した記録媒体も含まれる。
また、記録媒体は1つに限られず、複数の媒体から本実施形態における処理が実行される場合も、本実施形態における記録媒体に含まれ、媒体の構成は何れの構成であってもよい。
【0130】
なお、本実施形態におけるコンピュータまたは組み込みシステムは、記録媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するためのものであって、パソコン、マイコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。
また、本実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本実施形態における機能を実現することが可能な機器、装置を総称している。
【0131】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。