(57)【特許請求の範囲】
【請求項１】
手書き文字列をストローク単位で取得する取得部と、
前記手書き文字列から、前記ストローク毎に固有の第１の特徴量を抽出する特徴抽出部と、
前記ストロークを少なくとも文字領域を含む集合と文字領域以外の領域を含む集合とのいずれかに統合する統合部と、
前記ストロークが前記文字領域に属する場合または前記ストロークが前記文字領域以外の領域に属する場合の少なくとも一方の場合に、前記ストロークの属する前記集合に関する第２の特徴量を前記ストローク毎に付与する特徴量付与部と、
前記ストロークそれぞれの前記第１の特徴量及び前記第２の特徴量を用いて検索を実行する検索部とを備える、手書き文字検索装置。
【請求項２】
手書き文字列をストローク単位で取得する取得部と、
前記手書き文字列から、前記ストローク毎に固有の第１の特徴量を抽出する特徴抽出部と、
前記ストロークそれぞれを少なくとも２つの集合のいずれかに属するように統合する統合部と、
前記ストローク毎に前記統合の結果に基づく第２の特徴量を付与する特徴量付与部と、
前記ストロークそれぞれの前記第１の特徴量及び前記第２の特徴量を用いて検索を実行する検索部とを備える手書き文字検索装置。
【請求項３】
前記統合部は、前記手書き文字列を、少なくとも文字領域と文字領域以外の領域とに分類する、請求項２に記載の手書き文字検索装置。
【請求項４】
前記統合部は、前記文字領域以外の領域として図形領域と表領域とを含む集合に統合する、請求項１または請求項３に記載の手書き文字検索装置。
【請求項５】
前記取得部は、オンラインで手書き文字列をストローク単位で取得する、請求項１ないし４のいずれか１項に記載の手書き文字検索装置。
【請求項６】
前記取得部は、予め蓄積されている手書き文字列のうちでユーザにより指定されたものを取得する、請求項１ないし５のいずれか１項に記載の手書き文字検索装置。
【請求項７】
前記取得部は、各々の前記集合に対応して予め用意されたストローク列のテンプレート群を使用して形成された手書き文字列を取得する、請求項１ないし６のいずれか１項に記載の手書き文字検索装置。
【請求項８】
前記検索部による検索結果を表示する表示部を更に含む請求項１ないし７のいずれか１項に記載の手書き文字検索装置。
【請求項９】
前記検索部は、取得された前記手書き文字に類似するストローク列を含む手書き文書を検索する、請求項１ないし８のいずれか１項に記載の手書き文字検索装置。
【請求項１０】
検索結果を表示するにあたっては、前記ストローク列を含む手書き文書を表示するとともに、前記ストローク列を強調表示する、請求項９に記載の手書き文字検索装置。
【請求項１１】
手書き文書検索装置の手書き文字検索方法において、
手書き文字列をストローク単位で取得するステップと、
前記手書き文字列から、前記ストローク毎に固有の第１の特徴量を抽出するステップと、
前記ストロークを少なくとも文字領域を含む集合と文字領域以外の領域を含む集合とのいずれかに統合するステップと、
前記ストロークが前記文字領域に属する場合または前記ストロークが前記文字領域以外の領域に属する場合の少なくとも一方の場合に、前記ストロークの属する前記集合に関する第２の特徴量を前記ストローク毎に付与するステップと、
前記ストロークそれぞれの前記第１の特徴量及び前記第２の特徴量を用いて検索を実行するステップとを含む、手書き文字検索方法。
【請求項１２】
手書き文書検索装置の手書き文字検索方法において、
手書き文字列をストローク単位で取得するステップと、
前記手書き文字列から、前記ストローク毎に固有の第１の特徴量を抽出するステップと、
前記ストロークそれぞれを少なくとも２つの集合のいずれかに属するように統合するステップと、
前記ストローク毎に前記統合の結果に基づく第２の特徴量を付与するステップと、
前記ストロークそれぞれの前記第１の特徴量及び前記第２の特徴量を用いて検索を実行するステップとを含む、手書き文字検索方法。
【請求項１３】
コンピュータを手書き文書検索装置として機能させるためのプログラムであって、
手書き文字列をストローク単位で取得する取得部と、
前記手書き文字列から、前記ストローク毎に固有の第１の特徴量を抽出する特徴抽出部と、
前記ストロークを少なくとも文字領域を含む集合と文字領域以外の領域を含む集合とのいずれかに統合する統合部と、
前記ストロークが前記文字領域に属する場合または前記ストロークが前記文字領域以外の領域に属する場合の少なくとも一方の場合に、前記ストロークの属する前記集合に関する第２の特徴量を前記ストローク毎に付与する特徴量付与部と、
前記ストロークそれぞれの前記第１の特徴量及び前記第２の特徴量を用いて検索を実行する検索部とをコンピュータに実現させるためのプログラム。
【請求項１４】
コンピュータを手書き文書検索装置として機能させるためのプログラムであって、
手書き文字列をストローク単位で取得する取得部と、
前記手書き文字列から、前記ストローク毎に固有の第１の特徴量を抽出する特徴抽出部と、
前記ストロークそれぞれを少なくとも２つの集合のいずれかに属するように統合する統合部と、
前記ストローク毎に前記統合の結果に基づく第２の特徴量を付与する特徴量付与部と、
前記ストロークそれぞれの前記第１の特徴量及び前記第２の特徴量を用いて検索を実行する検索部とをコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、手書き文字検索装置、方法及びプログラムに関する。
【背景技術】
【０００２】
ユーザが入力あるいは指定した手書きのクエリーに類似またはマッチする手書き文書をデータベースから検索する文書検索装置が知られている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Cheng Cheng, Bilan Zhu, Masaki Nakagawa: "A Discriminative Model for On-line Handwritten Japanese Text Retrieval", International Conference on Document Analysis and Recognition, 2011
【非特許文献２】Pasitthideth LUANGVILAY, Bilan ZHU, Masaki NAKAGAWA: "An On-line Handwritten Text Search Method based on Directional Feature Matching", International Conference on Document Analysis and Recognition, 2011
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、より的確な手書き文字検索を可能にする手書き文字検索装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、取得部、特徴抽出部、統合部、特徴量付与部、検索部を備える。取得部は、手書き文字列をストローク単位で取得する。特徴抽出部は、前記手書き文字列から、前記ストローク毎に固有の第１の特徴量を抽出する。統合部は、前記ストロークを複数の集合に統合する。特徴量付与部は、前記ストローク毎に前記統合の結果に基づく第２の特徴量を付与する。検索部は、前記第１の特徴量及び前記第２の特徴量に基づいて検索を実行する。
【図面の簡単な説明】
【０００６】
【図１】本実施形態に係る手書き文字検索装置の構成例を示す図である。
【図２】本実施形態に係る手書き文字検索装置の処理例を示すフローチャートである。
【図３】インクデータのフォーマットの一例を示す図である。
【図４】ストロークデータの入力について説明するための図である。
【図５】ストロークデータのサンプリングについて説明するための図である。
【図６】特徴量データベースについて説明するための図である。
【図７】ストロークデータの統合について説明するための図である。
【図８】ストロークデータの統合について説明するための図である。
【図９】ストロークデータの統合について説明するための図である。
【図１０】統合部の一例を示す図である。
【図１１】領域による特徴量を用いた検索について説明するための図である。
【図１２】領域による特徴量を用いた検索について説明するための図である。
【図１３】検索結果表示の一例を示す図である。
【図１４】ハードウェア構成例について説明するための図である。
【図１５】ネットワークを伴う構成例について説明するための図である。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら本発明の実施形態に係る手書き文字検索装置について詳細に説明する。なお、以下の実施形態では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。
【０００８】
本実施形態では、予め筆記された（例えば大量の）手書き文書から、ユーザが手書きした手書き文字列をクエリーとして、検索を行うものである。本実施形態では主に文字列を例に説明するが、クエリーはユーザが描画した線やマークであってもよい。また、ユーザが手書き文字列を指定する方法には、どのような方法を使用しても良い。例えば、ユーザが実際に文字列を手書きすることによって、クエリーを指定するようにしても良い。既存の手書き文書の中からユーザがクエリーとして用いる部分を選択するようにしても良い。クエリー用のテンプレートの中からユーザがクエリーとして用いるものを選択するようしても良い。それらの組み合わせであっても良い。
【０００９】
また、本実施形態では、クエリーと手書き文字列との類似度の判定に、ストローク単体に固有の特徴量に加えて、ストローク群の集合に基づく特徴量を使用する。なお、ストロークとは手書き入力された筆画であり、ペン等が入力面に接してから離れるまでの軌跡を表す。
【００１０】
また、本実施形態では、クエリーに類似またはマッチした手書き文字列を含む手書き文書を、検索結果として提示するものとする。
【００１１】
図１に、本実施形態の手書き文字検索装置の構成例を示す。図１に示されるように、本実施形態の手書き文字検索装置は、取得部１、統合部２、統合情報付与部３、特徴抽出部５、検索部７、結果表示部８、インクデータデータベース（インクデータＤＢ）１１、特徴量データベース（特徴量ＤＢ）１２を備えている。
【００１２】
インクデータＤＢ１１は、ストロークを文書単位で統合したインクデータを記憶する。
【００１３】
特徴量ＤＢ１２は、個々のストローク単体に固有の特徴量（第１の特徴量）及び個々のストロークの属する集合に基づく特徴量（第２の特徴量）を記憶する。ここで、集合とは、個々のストロークは１又は複数のストローク（以下ストローク群と称する）により形成されるものである。
【００１４】
取得部１は、クエリーとして用いる手書き文字列を取得するためのものである。
【００１５】
ここでは、ユーザが筆記するストロークを取得する場合を中心に説明を行う。なお、この手書き入力の方法には、タッチパネル上でペンにより入力する方法、タッチパネル上で指により入力する方法、タッチパッド上で指により入力する方法、マウスを操作して入力する方法、電子ペンによる方法など、種々の方法を用いることができる。
【００１６】
ユーザが筆記したストローク群は、例えば、ユーザが文書を書き終わる際或いは保存する際などに、インクデータＤＢ１１として蓄積される。インクデータは、文書単位等でストローク群を格納するためのデータ構造である。
【００１７】
特徴抽出部５は、各ストロークから、（当該ストローク単体に固有の）特徴を記述した特徴量（第１の特徴量）を抽出する。
【００１８】
統合部２は、インクデータに関してストロークを複数の集合に統合、統合情報を抽出する。統合情報は、各々のストロークの属する１又は複数の集合を示す情報である。例えば、統合情報は、各集合について、統合した結果の種類を示す分類ラベルと、その集合が位置する領域データを含む。領域データとは、対角指定した矩形と、回転角で表現する。
【００１９】
統合情報付与部３は、各ストロークの特徴量（第１の特徴量）に、統合部２により得られた集合情報（第２の特徴量）を付与する。
【００２０】
検索部７は、複数のストロークで構成される文字列をクエリーとして記憶してある特徴量を用いて類似する文字列を検索する。
【００２１】
結果提示部８は、検索結果を提示する。
【００２２】
図２に、本実施形態の手書き文字検索装置の処理の一例を示す。
【００２３】
ステップＳ１において、取得部１が、クエリーとして用いるべき手書き文書或いは文字列（手書きストローク列）を取得する。
【００２４】
ステップＳ２において、統合部２が、該取得されたインクデータに対して統合情報を抽出（統合処理を実行）する。
【００２５】
ステップＳ３において、特徴抽出部５が、該取得されたインクデータに対して特徴抽出処理を実行する。
【００２６】
ステップＳ４において、統合情報付与部３が、統合部２による統合処理の結果に基づいて、該取得されたインクデータに対して統合情報付与処理を実行する。
【００２７】
ステップＳ５において、検索部７が、特徴抽出部５により得られた第１の特徴量及び統合情報付与部３により得られた第２の特徴量をもとに、検索を実行する。
【００２８】
ステップＳ６において、結果表示部８が、検索部７により得られた検索結果を表示する。
【００２９】
なお、上記の処理において、ステップＳ３は、ステップＳ１とステップＳ５の間の任意のタイミングで実行可能である。同様に、ステップＳ２，Ｓ４（ただし、ステップＳ４はステップＳ２の後に行われるものとする）は、ステップＳ１とステップＳ５の間の任意のタイミングで実行可能である。また、ステップＳ３と、ステップＳ２，Ｓ４とを並列処理しても良い。更に、ステップＳ３は、ステップＳ１とともに実行することが可能である。
【００３０】
次に、図３を参照しながら、インクデータのデータ構造及びストロークデータのデータ構造について説明する。
【００３１】
通常、ストロークは所定のタイミングで（例えば一定周期で）軌跡上の点がサンプリングされる。従ってストロークは、サンプリングされた点の系列により表現される。
【００３２】
図３（ｂ）の例において、１ストローク分（すなわち、１画分）のストローク構造は、ペンが移動した平面上の座標値の集合（点構造）で表現され、具体的には、そのストロークを形成する点の個数を示す「点総数」、「開始時刻」、「外接図形」、点総数に相当する個数の「点構造」の配列を含む構造体である。ここで、開始時刻は、そのストロークにおいてペンが入力面に接して書き出された時刻を示す。外接図形は、文書平面上においてそのストロークの軌跡に対する外接図形（好ましくは、文書平面上においてそのストロークを内包する最小面積の矩形）を示す。
【００３３】
点の構造は、入力デバイスに依存し得る。図３（ｃ）の例では、１点の構造は、その点がサンプリングされた座標値ｘ，ｙ、筆圧並びに初期点（例えば上記の「開始時刻」）からの時間差の４値を持つ構造体である。
【００３４】
なお、座標は文書平面の座標系であり、左上の隅の原点として右下の隅になるほど値が大きくなる正の値で表現しても良い。
【００３５】
また、入力デバイスが筆圧を取得できない場合或いは筆圧を取得できても以降の処理で筆圧を使用しない場合には、図３（ｃ）の筆圧を省いても良いし或いは筆圧に無効を示すデータを記述しても良い。
【００３６】
なお、図３（ｂ），（ｃ）の例において、ストローク構造における個々の点構造の領域に、座標値ｘ，ｙ等の実データを記載しても良いし、あるいは、ストローク構造のデータと点構造のデータとを別々に管理するものとして、ストローク構造における個々の点構造の領域に、対応する点構造へのリンク情報を記載しても良い。
【００３７】
図４に、取得されるストロークの例を示す。ここでは、ストローク内のサンプル点のサンプリング周期が一定である場合を例にとって説明する。図４（ａ）は、サンプリングした点の座標を示しており、図４（ｂ）は、時間的に連続する点構造を線形補間して示している。サンプリング点の座標間隔が異なるのは、筆速の違いによるものである。サンプリング点数は、個々のストロークにより異なり得る。
【００３８】
図３（ａ）の例において、インクデータのデータ構造は、その文書の全領域に含まれるストローク構造の個数を示す「ストローク総数」、ストローク総数に相当する個数の「ストローク構造」の配列を含む構造体である。
【００３９】
なお、図３（ａ），（ｂ）の例において、インクデータ構造における個々のストローク構造の領域に、図３（ｂ）のデータを記載しても良いし、あるいは、インクデータ構造のデータと、図３（ｂ）のストロークのデータ構造とを別々に管理するものとして、インクデータ構造における個々のストロークのデータ構造の領域に、対応する図３（ｂ）のデータへのリンク情報を記載しても良い。
【００４０】
入力デバイスを用いてユーザが筆記したストロークデータは、例えば図３に示すようなインクデータ構造によりメモリ上に展開される。インクデータは、例えば文書として保存される際などに、インクデータＤＢ１１として蓄積される。
【００４１】
なお、複数の文書を蓄積する場合に、それら文書を識別するための文書ＩＤを、各インクデータに対応付けて保存しても良い。また、個々のストロークを識別するために、各ストローク構造にストロークＩＤを付与しても良い。
【００４２】
次に、特徴抽出部５について説明する。
【００４３】
特徴抽出部５は、個々のストロークからそれぞれ、ストローク単体に固有の特徴量（第１の特徴量）を抽出する。ここでは、ストローク単体の情報だけで処理が可能であるため、ストロークデータが入力されると、インクデータのデータ構造に追加されるのと並行して、特徴抽出を行っても良い。ただし、インクデータの取得が完了した後に、まとめて第１の特徴量の抽出を行っても良い。
【００４４】
ところで、ストロークデータは、サンプリングされた座標値の集合で記述されるが、たとえ同一の形状を筆記しても筆速により得られる座標値が異なるため、固定数のサンプル点へ再度サンプリングするリサンプリングを行うことで、筆速を正規化するのが好ましい。
【００４５】
例えば、ここでのリサンプリング処理は、ストローク長を固定数Ｎのサンプリング点で一定間隔に再サンプリングすることとし、オリジナルのサンプリング点の近傍２点から線形補間で座標値を算出する。ここでは、Ｎ＝１２８としリサンプリングする。図５の（ａ）と（ｂ）にそれぞれリサンプリング前と後のデータを例示する。
【００４６】
ストローク単体に固有の特徴量として、種々の特徴量を利用することが可能である。
【００４７】
以下では、そのような特徴量の一例について説明する。
【００４８】
まず、図５（ｂ）のようなリサンプリング後のストロークデータについて、外接矩形の長辺を１辺の長さとする正方形により、ストローク群の領域（ストローク領域）を設定する。その際、外接矩形の中心が、ストローク領域の中央に位置するようにする。ストローク領域の中央とは、例えば複数の点の座標を平均した位置である。そして、ストローク領域をｘ方向とｙ方向に関してそれぞれＳ個に均等分割し、Ｓ２個の局所領域を求める。ここで、Ｓは分割数のパラメータであり、奇数とするのが望ましい。ここでは、具体例としてＳ＝７とする（この場合、図５（ｂ）の領域が、縦横にそれぞれ７分割される）。
【数１】
0006030172.tif 000002
【００４９】
【数２】
0006030172.tif 000003
【００５０】
【数３】
0006030172.tif 000004
【００５１】
具体例としてＳ＝７の場合、全４９個の局所領域についてそれぞれヒストグラムが得られる。
【００５２】
ここで、floor ( )は、床関数を意味する。δ(i,j)は、ｉとｊが一致する場合は１を返し、それ以外の場合は０を返す関数とする。Ｄは、３６０度（２πラジアン）の勾配方向の分類数（量子化数）を示すパラメータであり、偶数とするのが望ましい。ここでは、具体例としてＤ＝１６とする（この場合、勾配方向が１６種類に分類される）。
【００５３】
次に、ストロークの表記ゆれに対しロバスト化するため、量子化した勾配方向（例えばＤ＝１６）と局所領域（例えばＳ２＝４９）に関して、周辺の値を平均することで平滑化を行う。
【００５４】
まず、勾配方向に関してガウシアンフィルタを用いてＤ´にダウンサンプリングする。例えば、Ｄ´＝Ｄ／２である。
【００５５】
具体例として、Ｄ´＝Ｄ／２、Ｄ＝１６とすると、Ｄ´＝Ｄ／２＝８であり、この場合、勾配方向の分類数（量子化数）が１６個から８個になる。
【００５６】
以下に、勾配方向に関するガウシアンフィルタの一例を示す。
【数４】
0006030172.tif 000005
【００５７】
ここで、勾配方向は、周期関数で表現できるので、ｂｉｎ´＝Ｄ／２の場合は、上記式における第３項にＨｉｓｔｌ（０）を用いる。
【００５８】
続いて、上記のように勾配方向を平滑化されたヒストグラムＨｉｓｔ´を用いて、更に、周辺の局所領域間での平滑化を行って、Ｈｉｓｔ´´を求める。勾配方向と同様にガウシアンフィルタを用いて、ｘ方向とｙ方向にそれぞれＳ´個にダウンサンプリングする。例えば、Ｓ´＝（Ｓ−１）／２である。
【００５９】
具体例として、Ｓ´＝（Ｓ−１）／２、Ｓ＝７とすると、Ｓ´＝（Ｓ−１）／２＝３であり、この場合、ｘ方向とｙ方向にそれぞれ３個にダウンサンプリングされる（すなわち、局所領域の数が、４９個から９個になる）。
【００６０】
以下に、局所領域に関するガウシアンフィルタの一例を示す。
【数５】
0006030172.tif 000006
【００６１】
以上のようにして、Ｓ´×Ｓ´個の局所領域のそれぞれについてＤ´次元のヒストグラムＨｉｓｔ´´l(x´,y´)が得られる。
【００６２】
最終的に、上記のようにして得られたヒストグラムＨｉｓｔ´´l(x´,y´)を１本のベクトルとしてラスタスキャンして並べ、ストロークの次元の特徴量として出力する。すなわち、第１の特徴量として、Ｓ´×Ｓ´×Ｄ´次元の特徴量ベクトルが得られる。
【００６３】
上記具体例の場合には、３×３×８＝７２次元の特徴量ベクトルになる。
【００６４】
以上のようにして特徴抽出部５により抽出された特徴量は、「ストローク固有の特徴量」として特徴量ＤＢ１２として蓄積される。
【００６５】
図６に、ストローク単体に対する特徴量ＤＢ１２の内容の一例を示す。特徴量ＤＢ１２には、ストローク固有の特徴量とストロークの集合に基づく特徴量（第２の特徴量）とを蓄積する。なお、「ストロークの集合に基づく特徴量（第２の特徴量）」、例えば図形領域、表領域、文字域の分類については、後述する。
【００６６】
なお、インクデータＤＢ１１に蓄積されている個々のストロークと、特徴量ＤＢ１２に蓄積されている個々のストロークに対する特徴量とは、例えば、ストロークＩＤにより関連付けられても良い。あるいは、インクデータＤＢ１１中に（例えば図３（ｂ）の個々のストローク構造の中に）、特徴量へのリンク情報を記載しても良い。あるいは、インクデータＤＢ１１中に（例えば図３（ｂ）の個々のストローク構造の中に）特徴量を記載することによって、インクデータＤＢ１１と特徴量ＤＢ１２とを一つのデータベースとして蓄積することも可能である。
【００６７】
次に、統合部２について説明する。
【００６８】
統合部２は、蓄積されたインクデータに対して、文書平面上でのストロークの位置関係と属性から複数の集合に統合する統合処理を実行する。
【００６９】
インクデータに対しストロークを統合するにあたって、いくつかの集合に統合する。
【００７０】
ここで、図７〜図９を参照しながら、ストロークの群の例について説明する。ストロークの群は、例えば、文字領域と、文字領域以外の領域に分類される。好ましくは、図７に示されるように、ストローク群は、大きく３つの領域、すなわち、「文字領域」、「図形領域」、「表領域」の単位に分類される。更に、「文字領域」は、その下位に、階層構造を有することができ、例えば、「段落ブロック」、その下位の「行ブロック」を有し得る。更に、図８に示すように「行ブロック」の下位に「単語ブロック」、「単語ブロック」の下位に「文字ブロック」を有し得る。また更に、図９に示すように「文字ブロック」の下位に「部首ブロック」を有し得る。これらすべてを使用した場合には、８種類の集合が存在するが、それらのうちから適宜選択した一部のみを使用することも可能である。
【００７１】
次に、図１０を参照しながら、統合処理の例について説明する。図１０は、統合部２の内部機能ブロック又は内部処理の構成例である。
【００７２】
まず、筆記されたストロークの属性情報として、文字領域と図形領域と表領域の単位に分類（統合）する（領域分類部又は領域分類処理２１）。
【００７３】
例えば、各ストロークが文字と図形と表とのいずれに属するかを判定するように予め学習された識別器を用いて、ストロークに対して尤度を算出し、文書平面上での空間的な近さと連続性を加味するためマルコフ確率場（Markov random field；ＭＲＦ）で表現し、最も分離のよい領域を推定することによって、文字領域と図形領域と表領域に領域分割しても良い（例えば、“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.”を参照）。
【００７４】
なお、文字領域と図形領域と表領域の分類は、上記手法に制限されない。
【００７５】
インクデータを文字領域と図形領域と表領域に統合した後、文字領域に関して更に詳細な領域に統合する。
【００７６】
まず、本実施形態では、行ブロックの領域に統合する（行ブロック統合部又は行ブロック統合処理２２）。
【００７７】
各ストロークデータには、筆記された時間情報が含まれるため、例えば、筆記順に並べ替えたストローク列に関して、連続するストロークの外接矩形間の距離が閾値未満ならば、同一の行ブロックに属すると判定し、閾値以上ならば、異なる行ブロックに属すると判定しても良い。
【数６】
0006030172.tif 000007
【００７８】
上記の式は、ｉ番目のストロークが直前のストロークと同一の行であるかを判定する関数である。ＳＲｉは、ストロークの外接矩形を示し、Dist(r1,r2)は、外接矩形ｒ１とｒ２の距離を返す関数とする。ここでの外接矩形間の距離は、外接矩形の重心点間のユークリッド距離とする。また、閾値thresholdlineは、予め定められたパラメータであり、筆記可能な文書平面の範囲に連動する。文字列等のストローク位置データのｘ軸方向が大幅に変化したことが分かればよく、例えば、対象インクデータのｘ軸の範囲の３０％などとすればよい
ところで、行領域は軸と平行に筆記されているとは限らないので、表記の回転を吸収するため、右から左か、上から下か、左から右かの３種類の方向に正規化しても良い。文書平面上において、行ブロックの主成分分析により第一主成分を求め、その固有ベクトルと上記の３種類の方向とを比較して、上記の３種類の方向のうちで最も近い方向に、行ブロックを回転させる。なお、筆記されている言語が限定できる場合は、正規化する方向を限定することができる。例えば、アラビア語であるならば、左から右への方向のみに限定し、あるいは、日本語であるならば、右から左への方向と、上から下への方向の２方向に限定するなどが考えられる。
【００７９】
なお、行ブロックの統合は、上記手法に制限されない。
【００８０】
次に、段落ブロックの構造に統合する（段落ブロック統合部又は段落ブロック統合処理２３）。
【００８１】
例えば、文書平面上において、行ブロックの領域の短辺の方向に関して全てのストロークを射影し、一定区間中のストローク頻度を算出したヒストグラムを求める。求めたヒストグラムは多峰性を有し、その各峰を１つの段落ブロックとして統合する。峰の総数が未知であるため、頻度の凝縮性と射影軸上での距離を用いてクラスタリングすることによって、分峰することができる（例えば、“今井, 藤村, 黒田, ヒストク゛ラム値による重み付き逐次ファシ゛ィクラスタリンク゛に基づく多峰性ヒストク゛ラムの分峰手法, 映像情報メテ゛ィア学会誌, 映像メテ゛ィア61(4), pp. 550-553, 2007.”を参照）。
【００８２】
なお、段落ブロックの統合は、上記手法に制限されない。
【００８３】
次に、文字ブロックの領域に統合する（文字ブロック統合部又は文字ブロック統合処理２４）。
【００８４】
例えば、上記の手法で統合した行の領域の外接矩形における短辺の中央値を１文字のサイズとして、各行領域に対して統合を行う。筆記順にストロークの外接矩形のＡＮＤ処理を行い、結合した矩形を求める。このとき、結合後の矩形が行構造の長辺方向に文字サイズより大きくなるならば、対象のストロークは直前のそれと異なる文字ブロックの領域に属すると判定し、そうでないならば、同一の文字ブロックの領域に属すると判定しても良い。
【００８５】
なお、文字ブロックの統合は、上記手法に制限されない。
【００８６】
次に、単語ブロックの領域に統合する（単語ブロック統合部又は単語ブロック統合処理２５）。
【００８７】
なお、ここでの単語とは、例えば形態素解析を行い品詞ごとに分割された単語ではなく、行ブロックよりも詳細で文字ブロックよりも大まかな領域を表す。正確に単語として統合するには文字認識が必須であるため、テキスト情報として意味のある単語になるとは限らない。単語ブロックの構造は、例えば、行ブロックの領域に対して文字ブロックの領域の外接矩形の座標値に関してクラスタリングすることによって、ｋ個のクラスタに分類し、その各クラスタを単語ブロックの領域とすることによって、算出しても良い。
【００８８】
なお、単語ブロックの統合は、上記手法に制限されない。
【００８９】
次に、漢字などの複数ストロークで１文字を構成する場合に、さらに詳細な領域に統合するため、部首ブロックに統合する（部首ブロック統合部又は部首ブロック統合処理２６）。
【００９０】
上記の手法で統合した文字ブロック構造に対して、閾値による文字ブロック統合と同様の処理を行う。
【００９１】
なお、部首ブロックの統合は、上記手法に制限されない。
【００９２】
なお、上記の処理例において、段落ブロックの統合と、文字ブロック・単語ブロック・部首ブロックの統合とは、独立して実行可能である（上記の説明とは異なる順序で又は並列的に実行し得る）。また、単語ブロックの統合と、部首ブロックの統合とは、独立して実行可能である（上記の説明とは異なる順序で又は並列的に実行し得る）。
【００９３】
次に、統合情報付与部３について説明する。
【００９４】
さて、個々のストロークは、上記のようにして抽出された１又は複数の集合に属することになる。
【００９５】
統合情報付与部３は、個々のストロークについて、特徴量ＤＢ１２に蓄積されている、特徴抽出部５により抽出されたストローク単体に固有の特徴量（第１の特徴量）に対して、当該ストロークの属する個々の集合について、その集合に属するストロークの総数を求め、それらを第２の特徴量として追加するものである。追加される第２の特徴量の次元数は、統合する単位の数であり、例えば上記した手法を全て用いると８次元となる。
【００９６】
図６は、この場合の個々のストロークの特徴量（特徴量ベクトル）について例示したものである。すなわち、当該ストロークが図形領域に属する場合には、その図形領域に属するストロークの総数が図６の図形領域の欄に記述され、当該ストロークが表領域に属する場合には、その表領域に属するストロークの総数が図６の表領域の欄に記述され、当該ストロークが文字域に属する場合には、その文字域に属するストロークの総数が図６の文字領域の欄に記述される。当該ストロークが文字域に属する場合には、更に、当該ストロークの属する段落、行、単語、文字及び部首ブロックにそれぞれ属するストロークの総数が、それぞれ、図６の対応する欄に記述される。
【００９７】
なお、第１の特徴量（例えば、３×３×８＝７２次元の特徴ベクトル）と、第２の特徴量（例えば、８次元の特徴ベクトル）との重みを調整するため、それぞれベクトル長を１に正規化した後に結合しても良い。また、いずれかの特徴量を優先する場合は、正規化するベクトル長を変動させることで実現が可能になる。
【００９８】
ここで、図１１及び図１２の具体例を用いて説明する。
【００９９】
例えば、第１の特徴量のみを用いる場合に、本来は区別したいストローク列同士であっても、区別できない場合がある。例えば、図１１（ａ）に示すストローク列（二分の一）と、図１１（ｂ）に示すストローク列（一マイナス二）との類似度は、統合情報を用いない場合（第１の特徴量のみを用いる場合）、ほぼ１の値を示すため、それらを区別することができない。
【０１００】
ここで、統合情報付与部３により、第２の特徴量として、少なくとも文字ブロックのストローク数が追加されるものとする。この場合、図１１（ａ）については、例えば、統合により、“１”と“−”と“２”が１つの文字ブロックを形成するものと判定され、図１２（ａ）に示すように、“１”と“−”と“２”の「文字ブロックのストローク総数」としてそれぞれ３ストロークが記述される。これに対して、図１１（ｂ）に示すストローク列（一マイナス二）については、例えば、統合により、“１”と“−”と“２”が１つの文字ブロックを形成しないものと判定され（それぞれが、１つの文字ブロックを形成するものと判定され）、図１２（ｂ）に示すように、“１”と“−”と“２”の「文字ブロックのストローク総数」としてそれぞれ１ストロークが記述される。従って、この場合には、第２の特徴量によって、図１１（ａ）に示すストローク列（二分の一）と、図１１（ｂ）に示すストローク列（一マイナス二）とを分別することが可能になる。
【０１０１】
なお、これまでは、各ストロークについて、当該ストロークが属する集合に含まれるストロークの総数を、第２の特徴量として追加する場合について説明したが、集合を利用する特徴量として、上記した特徴量の代わりに又は上記した特徴量に加えて、他の特徴量を用いることも可能である。
【０１０２】
例えば、各ストロークについて、当該ストロークが属する集合に含まれる全ストロークに対して、それら全ストロークに対して、第１の特徴量の算出方法と同一の算出方法を適用することによって、追加する特徴量を算出することも可能である。
【０１０３】
次に、検索部７について説明する。
【０１０４】
検索部７は、例えばこれまで説明したような手法により抽出された特徴量（特徴ベクトル）を用いて、ユーザが指定する複数のストロークで構成されるストローク列に類似するストローク列を検索する。  
複数の特徴ベクトル列同士のマッチングには、種々の方法を利用することができる。
【０１０５】
例えば、ＤＰマッチング（ＤＰ；Ｄynamic Programming、動的計画法）を利用しても良い。特徴ベクトル間の類似度も同様に、種々の方法を利用することができる。例えば、正規化相互相関を利用して良い。ところで、ユーザが指定するストローク列のストローク数と、ユーザが所望するストローク列のストローク数とは、必ずしも同じにはならない可能性がある。なぜならば、例えば筆記者によっては同じ文字の２画分を１画で筆記することなどがあり、同じ意味を有する文字列であっても、筆記者によって異なる画数で筆記される可能性があるからである。通常、ストロークに関するＤＰマッチングは、１ストローク対１ストロークの対応のみを扱い、２つのストローク列間の伸縮を許容した最適な対応付けを行う手法である。そこで、ここでは、例えば、１ストローク対Ｎストロークの対応も考慮したＤＰマッチングを用いることによって、筆画変動にロバストなマッチングが可能となる（例えば、“増田, 内田, 迫江, オンライン文字認識におけるDPマッチンク゛の実験的最適化, 電気関係学会九州支部連合大会, H.17. http://human.ait.kyushu-u.ac.jp/~uchida/Papers/masuda-shibu2005.pdf”を参照）。
【０１０６】
ここでは、例えば、マッチングの対象となるストローク列に含まれる全てのストロークを始点として、ユーザが指定するクエリーであるストローク列との対応付けを行った後、ストローク列間の類似度を算出する。そして、各始点からの類似度を算出した後、降順にソートする。全てのストロークを始点とするため、オーバーラップした結果が得られる。その後、ピーク検出を行って、オーバーラップしたストロークの範囲を統合する。
【０１０７】
なお、上記の他にも、種々のマッチング方法が可能である。
【０１０８】
検索部７が、結果表示部８へ検索結果を与える場合に、全ての結果を出力しても良いが、その代わりに、例えば、類似度で上位Ｋ個の結果を出力としても良いし、あるいは、類似度が閾値以上である結果を出力としても良いし、上限をＫ個として、類似度が閾値以上である結果を出力としても良いし、他の方法を用いても良い。
【０１０９】
次に、結果表示部８について説明する。
【０１１０】
結果表示部８は、検索部７から与えられた検索結果を、ユーザに提示する。
【０１１１】
検索結果の表示方法には、種々の方法が可能である。
【０１１２】
例えば、図１３に例示するように、表示デバイスの画面をタイル状に分割し、各タイルに縮小した文書のサムネイルを表示させるようにしても良い。
【０１１３】
その際に、表示順として、例えば、検索結果の類似度の高いストローク列を含む順に、文書のサムネイルを並べるようにしても良い。
【０１１４】
また、サムネイルにおいて、検索結果のストローク列を強調表示するようにしても良い。
【０１１５】
以下、本実施形態のバリエーションについて説明する。
【０１１６】
本実施形態の手書き文字検索装置の検索部７は、手書き文字検索装置の内部に蓄積されている手書き文書群を検索対象としても良いし、手書き文字検索装置がイントラネット及び／又はインターネット等のネットワークに接続可能である場合に、ネットワークを介してアクセス可能な手書き文書群を検索対象としても良いし、手書き文字検索装置に接続されたリムーバブル・メモリ内に蓄積された手書き文書群を検索対象としても良いし、それらの任意の組み合わせであっても良い。なお、それら手書き文書は、少なくとも本実施形態の検索において使用する特徴量と同じ特徴量が対応付けられて、蓄積されているのが望ましい。
【０１１７】
本実施形態の手書き文字検索装置は、スタンドアローンの装置として構成することも、ネットワークを介して通信可能な複数のノードに分散した形で構成することも可能である。
【０１１８】
また、本実施形態の手書き文字検索装置は、デスクトップ型又はラップトップ型の汎用計算機、携帯型の汎用計算機、その他の携帯型の情報機器、タッチパネルを有する情報機器、スマートフォン、その他の情報処理装置など、様々なデバイスによって実現可能である。
【０１１９】
図１４に、本実施形態の手書き文字検索装置を実現するハードウェアの構成例を示す。図中、２０１はＣＰＵ、２０２は所定の入力デバイス、２０３は所定の出力デバイス、２０４はＲＡＭ、２０５はＲＯＭ、２０６は外部メモリ・インタフェース、２０７は通信インタフェースである。例えば、タッチパネルを使用する場合には、例えば液晶パネルとペンと液晶パネル上に設けられたストローク検出装置等が利用される（図中、２０８参照）。
【０１２０】
また、例えば、図１の構成の一部分をクライアント上に設け、図１の構成の残りの部分をサーバ上に設けることも可能である。
【０１２１】
例えば、図１５は、イントラネット及び／又はインターネット等のネットワーク３０２上にサーバ３０１が存在し、各クライアント３０３，３０４がネットワーク３０２を介してそれぞれサーバ３０１と通信することによって、本実施形態の手書き文字検索装置が実現する様子を例示している。
【０１２２】
なお、クライアント３０３は、無線通信を介してネットワーク３０２に接続され、クライアント３０４は、有線通信を介してネットワーク３０２に接続される場合を例示している。
【０１２３】
クライアント３０３，３０４は、通常、ユーザ装置である。サーバ３０１は、例えば、企業内ＬＡＮ等のＬＡＮ上に設けられたものであっても良いし、インターネット・サービス・プロバイダ等が運営するものであっても良い。また、サーバ３０１がユーザ装置であって、あるユーザが他のユーザに機能を提供するものであっても良い。
【０１２４】
図１の構成を、クライアントとサーバに分散する方法として、種々の方法が考えられる。
【０１２５】
例えば、図１中、１０２で示す範囲をクライアント側に搭載し、それ以外の範囲をサーバ側に搭載しても良いし、検索部７のみをサーバ側に搭載し、それ以外の範囲をクライアント側に搭載しても良い。
【０１２６】
なお、図１の１０１の範囲を備えた装置、あるいは、図１の１０１から取得部１を場外した範囲を備えた装置を実現しても良い。この場合、当該装置は、スストローク列から、特徴量を抽出する機能を有するものである。また、例えば、図１中の１０２で示す範囲をクライアント側に搭載し、検索部７を第１のサーバに搭載し、１０１から取得部１を除いた範囲を第２のサーバに搭載しても良い。
【０１２７】
また、これら以外の分散方法も可能である。
【０１２８】
以上説明してきたように、本実施形態によれば、より的確な手書き文字検索が可能になる。より具体的には、例えば、各ストローク単体から特徴を抽出するだけでなく、取得したストローク列を行ブロック及び文字ブロックのような集合に統合し、その集合中のストローク群全体からも特徴を抽出し、それらを組み合わせて検索を行う。これによって、より多くの情報量が獲得できるため、検索性能が向上する。
【０１２９】
なお、上述の実施形態の中で示した処理手順に示された指示は、ソフトウェアであるプログラムに基づいて実行されることが可能である。汎用の計算機システムが、このプログラムを予め記憶しておき、このプログラムを読み込むことにより、上述した実施形態の手書き文字検索装置による効果と同様な効果を得ることも可能である。上述の実施形態で記述された指示は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ±Ｒ、ＤＶＤ±ＲＷなど）、半導体メモリ、またはこれに類する記録媒体に記録される。コンピュータまたは組み込みシステムが読み取り可能な記録媒体であれば、その記憶形式は何れの形態であってもよい。コンピュータは、この記録媒体からプログラムを読み込み、このプログラムに基づいてプログラムに記述されている指示をＣＰＵで実行させれば、上述した実施形態の手書き文字検索装置と同様な動作を実現することができる。もちろん、コンピュータがプログラムを取得する場合または読み込む場合はネットワークを通じて取得または読み込んでもよい。  
また、記録媒体からコンピュータや組み込みシステムにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワーク等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行してもよい。  
さらに、本実施形態における記録媒体は、コンピュータあるいは組み込みシステムと独立した媒体に限らず、ＬＡＮやインターネット等により伝達されたプログラムをダウンロードして記憶または一時記憶した記録媒体も含まれる。  
また、記録媒体は１つに限られず、複数の媒体から本実施形態における処理が実行される場合も、本実施形態における記録媒体に含まれ、媒体の構成は何れの構成であってもよい。
【０１３０】
なお、本実施形態におけるコンピュータまたは組み込みシステムは、記録媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するためのものであって、パソコン、マイコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。  
また、本実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本実施形態における機能を実現することが可能な機器、装置を総称している。
【０１３１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３２】
１…取得部、２…統合部、３…統合情報付与部、５…特徴抽出部、７…検索部、８…結果表示部、１１…インクデータＤＢ、１２…特徴量ＤＢ、２０１…ＣＰＵ、２０２…入力デバイス、２０３…出力デバイス、２０４…ＲＡＭ、２０５…ＲＯＭ、２０６…外部メモリ・インタフェース、２０７…通信インタフェース、３０１…サーバ、３０２…ネットワーク、３０３，３０４…クライアント。
【図１】
0006030172.tif 000008
【図２】
0006030172.tif 000009
【図３】
0006030172.tif 000010
【図４】
0006030172.tif 000011
【図５】
0006030172.tif 000012
【図６】
0006030172.tif 000013
【図７】
0006030172.tif 000014
【図８】
0006030172.tif 000015
【図９】
0006030172.tif 000016
【図１０】
0006030172.tif 000017
【図１１】
0006030172.tif 000018
【図１２】
0006030172.tif 000019
【図１３】
0006030172.tif 000020
【図１４】
0006030172.tif 000021
【図１５】
0006030172.tif 000022