(57)【特許請求の範囲】
【請求項１】
検索キーである複数のストロークを含む第１ストローク群を入力し、
前記第１ストローク群に含まれる複数のストロークについて、前記ストロークを含む領域の面積と、前記領域内のストロークの密度とに基づいて、塗り潰し部分を表すか否かを判定し、
前記第１ストローク群に、第１塗り潰し部分に対応する第２ストローク及び第１塗り潰し部分に対応しない第３ストロークが含まれる場合に、前記第１ストローク群のうち前記第３ストロークを用いて、手書き文書から、検索キーに対応するストロークに関する情報を取得する方法。
【請求項２】
前記第３ストロークのみならず、前記第２ストロークに基づいて生成されるストロークをも用いて、手書き文書から、検索キーに対応するストロークに関する情報を取得する請求項１記載の方法。
【請求項３】
前記取得した情報を、前記第２ストロークに基づいて生成されるストロークを用いて絞り込む請求項１記載の方法。
【請求項４】
前記第２ストロークに基づいて生成されるストロークは、前記第２ストロークを図形化して得られるストロークである請求項２記載の方法。
【請求項５】
前記第１ストローク群に含まれる単一のストロークを、第３塗り潰し部分を表す第１サブストロークと、前記第３塗り潰し部分を表さない第２サブストロークに分割する請求項１記載の方法。
【請求項６】
前記第２ストロークを前記第１塗り潰し部分の外接図形を表すストロークに置き換える請求項１記載の方法。
【請求項７】
検索キーである複数のストロークを含む第１ストローク群を入力する入力手段と、
前記第１ストローク群に含まれる複数のストロークについて、前記ストロークを含む領域の面積と、前記領域内のストロークの密度とに基づいて、塗り潰し部分を表すか否かを判定する判定手段と、
前記第１ストローク群に、第１塗り潰し部分に対応する第２ストローク及び第１塗り潰し部分に対応しない第３ストロークが含まれる場合に、前記第１ストローク群のうち前記第３ストロークを用いて、手書き文書から、検索キーに対応するストロークに関する情報を取得する取得手段と
を有する電子機器。
【請求項８】
前記取得手段は、
前記第３ストロークをもとにした第１の検索手段と、
前記第２ストロークをもとにした第２の検索手段とを有し、
前記第１の検索手段と前記第２の検索手段の検索結果をもとに、前記第３ストロークに対応するストロークを手書き文書から検索する請求項７記載の電子機器。
【請求項９】
前記第１ストローク群に含まれる単一のストロークを、第３塗り潰し部分を表す第１サブストロークと、前記第３塗り潰し部分を表さない第２サブストロークに分割する分割手段をさらに有する請求項７記載の電子機器。
【請求項１０】
前記第２ストロークを前記第１塗り潰し部分の外接図形を表すストロークに変換する変換手段をさらに有する請求項７記載の電子機器。
【請求項１１】
コンピュータを、
検索キーである複数のストロークを含む第１ストローク群を入力する入力手段と、
前記第１ストローク群に含まれる複数のストロークについて、前記ストロークを含む領域の面積と、前記領域内のストロークの密度とに基づいて、塗り潰し部分を表すか否かを判定する判定手段と、
前記第１ストローク群に、第１塗り潰し部分に対応する第２ストローク及び第１塗り潰し部分に対応しない第３ストロークが含まれる場合に、前記第１ストローク群のうち前記第３ストロークを用いて、手書き文書から、検索キーに対応するストロークに関する情報を取得する取得手段として機能させるためのプログラム。
【請求項１２】
前記コンピュータを、さらに、
前記第３ストロークをもとにした第１の検索手段と、
前記第２ストロークをもとにした第２の検索手段として機能させ、
前記第１の検索手段と前記第２の検索手段の検索結果をもとに、前記第３ストロークに対応するストロークを手書き文書から検索するための請求項１１記載のプログラム。
【請求項１３】
前記コンピュータを、さらに、
前記第１ストローク群に含まれる単一のストロークを、第３塗り潰し部分を表す第１サブストロークと、前記第３塗り潰し部分を表さない第２サブストロークに分割する分割手段として機能させる請求項１１記載のプログラム。
【請求項１４】
前記コンピュータを、さらに、
前記第２ストロークを前記第１塗り潰し部分の外接図形を表すストロークに変換する変換手段として機能させる請求項１１記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、手書き文書を処理する技術に関する。
【背景技術】
【０００２】
近年、タブレット、ＰＤＡ、スマートフォンといった種々の電子機器が開発されている。この種の電子機器の多くは、ユーザによる入力操作を容易にするために、タッチスクリーンディスプレイを備えている。【０００３】
ユーザは、タッチスクリーンディスプレイ上に表示されるメニューまたはオブジェクトを指などでタッチすることにより、これらメニューまたはオブジェクトに関連づけられた機能の実行を電子機器に指示することができる。また、ユーザは、タッチスクリーンディスプレイ上で、ペンまたは指などで、文字、図形、表などを手書きすることで、複数のストロークが含まれる手書き文書を作成することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０９−２４５１２２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
多数の手書き文書から必要とする文字列等が含まれる手書き文書を効率良く探し出すためには筆跡検索機能が必要となる。しかし、従来では、所望の手書き文書を効率よく検索するための技術が十分ではない。【０００６】
本発明の一形態の目的は、手書き文書を効率よく検索することができる方法及び電子機器を提供することである。
【課題を解決するための手段】
【０００７】
実施形態によれば、方法は、検索キーである複数のストロークを含む第１ストローク群を入力し、前記第１ストローク群に含まれる複数のストロークについて、前記ストロークを含む領域の面積と、前記領域内のストロークの密度とに基づいて、塗り潰し部分を表すか否かを判定し、前記第１ストローク群に、第１塗り潰し部分に対応する第２ストローク及び第１塗り潰し部分に対応しない第３ストロークが含まれる場合に、前記第１ストローク群のうち前記第３ストロークを用いて、手書き文書から、検索キーに対応するストロークに関する情報を取得する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施形態の電子機器の外観を示す例示的な斜視図である。
【図２】図２は、実施形態の電子機器と外部装置との連携動作を示す例示的な図である。
【図３】図３は、実施形態におけるタッチスクリーンディスプレイ上に手書きされる手書き文書の例を示す図である。
【図４】図４は、実施形態における時系列情報の一例を示す図である。
【図５】図５は、実施形態における電子機器のシステム構成を示す例示的なブロック図である。
【図６】図６は、実施形態の電子機器によって実行される手書き入力アプリケーションプログラムの機能構成を示す例示的なブロック図である。
【図７】図７は、実施形態における手書き文書の作成手順の一例について説明するフローチャートである。
【図８】図８は、実施形態における塗り潰し判定処理の一例を示すフローチャートである。
【図９】図９は、実施形態におけるストローク例を示す図である。
【図１０】図１０は、実施形態におけるストローク例をである。
【図１１】図１１は、実施形態におけるストローク例をである。
【図１２】図１２は、実施形態における複数のストロークにより塗り潰しを表す図形が手書きされる例を示す図である。
【図１３】図１３は、実施形態における塗り潰しを表す図形が手書きされる例を示す図である。
【図１４】図１４は、実施形態における第１の検索処理について示すフローチャートである。
【図１５】図１５は、実施形態における筆跡検索画面の一例を示す図である。
【図１６】図１６は、実施形態におけるクエリストロークの入力例を示す図である。
【図１７】図１７は、実施形態における筆跡検索画面の一例を示す図である。
【図１８】図１８は、実施形態における第２の検索処理について示すフローチャートである。
【図１９】図１９は、実施形態における図検索の処理内容を説明するための図である。
【図２０】図２０は、実施形態におけるストロークが手書き入力される様子を示す図である。
【図２１】図２１は、実施形態における手書きされるストロークのサンプル点数とサンプル点密度との関係を示す図である。
【図２２】図２２は、実施形態におけるストロークの分割を示す図である。
【図２３】図２３は、実施形態における面ストロークの一例を示す図である。
【図２４】図２４は、実施形態における面ストロークの一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、実施の形態について図面を参照して説明する。  
図１は、一実施形態に係る電子機器の外観を示す斜視図である。電子機器は、例えば、ペンまたは指によって手書き入力可能な携帯型電子機器である。電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、ＰＤＡ（personal digital assistant）等として実現され得る。以下では、電子機器がタブレットコンピュータ１０として実現されている場合を例にして説明する。タブレットコンピュータ１０は、タブレットまたはスレートコンピュータとも称される携帯型電子機器であり、図１に示すように、本体１１とタッチスクリーンディスプレイ１７とを備える。本体１１は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ１７は、本体１１の上面に重ね合わせるように取り付けられている。
【００１０】
タッチスクリーンディスプレイ１７には、フラットパネルディスプレイと、フラットパネルディスプレイの画面上のペンまたは指の接触位置を検出するように構成されたセンサとが組み込まれている。フラットパネルディスプレイは、例えば、液晶表示装置（ＬＣＤ）であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザなどを使用することができる。以下では、デジタイザとタッチパネルの２種類のセンサの双方がタッチスクリーンディスプレイ１７に組み込まれている場合を想定する。
【００１１】
デジタイザは、例えば、フラットパネルディスプレイの画面の下側に配置される。タッチパネルは、例えば、フラットパネルディスプレイの画面上に配置される。このタッチスクリーンディスプレイ１７は、指を使用した画面に対するタッチ操作のみならず、ペン１００を使用した画面に対するタッチ操作も検出することができる。ペン１００は例えば電磁誘導ペンであってもよい。ユーザは、外部オブジェクト（ペン１００又は指）を使用してタッチスクリーンディスプレイ１７上で手書き入力操作を行うことができる。手書き入力操作中においては、画面上の外部オブジェクト（ペン１００又は指）の動きの軌跡、つまり手書き入力操作によって手書きされるストロークの軌跡（筆跡）がリアルタイムに描画され、これによって各ストロークの軌跡が画面上に表示される。外部オブジェクトが画面に接触されている間の外部オブジェクトの動きの軌跡が１ストロークに相当する。手書きされた文字または図形などに対応する多数のストロークの集合、つまり多数の軌跡（筆跡）の集合が手書き文書を構成する。
【００１２】
本実施形態では、手書き文書は、イメージデータではなく、各ストロークの軌跡の座標データ列とストローク間の順序関係を示す時系列情報として記憶媒体に保存される。時系列情報の詳細は図４を参照して後述する。時系列情報は、複数のストロークが手書きされた順を示し、且つ複数のストロークにそれぞれ対応する複数のストロークデータを含む。換言すれば、時系列情報は、複数のストロークにそれぞれ対応する時系列のストロークデータの集合を意味する。各ストロークデータは、ある一つのストロークに対応し、このストロークの軌跡上の点それぞれに対応する座標データ系列（時系列座標）を含む。複数のストロークデータの並びの順序は、ストロークそれぞれが手書きされた順序つまり筆順に相当する。
【００１３】
タブレットコンピュータ１０は、記憶媒体から既存の任意の時系列情報（手書き文書）を読み出し、この時系列情報に対応する手書き文書、つまりこの時系列情報によって示される複数のストロークそれぞれに対応する軌跡を画面上に表示することができる。さらに、タブレットコンピュータ１０は編集機能を有している。この編集機能は、「消しゴム」ツール、範囲指定ツール、及び他の各種ツール等を用いたユーザによる編集操作に応じて、表示中の手書き文書内の任意のストロークまたは任意の手書き文字等を削除または移動することができる。さらに、この編集機能は、幾つかの手書き操作の履歴を取り消す機能も含んでいる。
【００１４】
さらに、タブレットコンピュータ１０は、筆跡検索（ストローク検索）機能も有している。筆跡検索は、検索キー（クエリストローク）として手書きされる１以上のストローク（クエリストローク）を用いて、クエリストロークに対応する１以上のストロークを任意の手書き文書から検索できればどのようなものであっても良い。筆跡検索は、１以上のクエリストロークに対応する１以上のストロークを含む手書き文書を記憶媒体から検索することもできる。１以上のクエリストロークに対応する１以上のストロークは、例えば、１以上のクエリストロークに類似する１以上のストロークであってもよい。筆跡検索では、例えば、クエリストロークと手書き文書内の複数のストロークそれぞれとの間のマッチング（ストロークマッチング）によって、クエリストロークの特徴量に類似する特徴量を有する１以上のストロークが手書き文書から検索される。検索キー（クエリストローク）として複数のストロークが手書きによって入力される場合には、クエリストローク群内のストローク毎に上述のストロークマッチングが実行される。
【００１５】
あるストロークの特徴量としては、このストロークの手書き特徴を表すことができる任意の特徴を使用することができる。例えば、特徴量としては、ストロークの形状、ストロークの筆画方向、ストロークの傾斜、等を表す特徴量データを使用しても良い。
【００１６】
筆跡検索の機能は、ユーザが過去に作成した多数の手書き文書から所望の手書き文書を容易に見つけ出すことを可能にし、またユーザがある手書き文書内から所望の手書き部分を容易に見つけ出すことを可能にする。筆跡検索は、手書き文字だけでなく、手書きの図形、手書きのマーク等を検索することもできる。
【００１７】
本実施形態では、上述の時系列情報（手書き文書）は、１つまたは複数のページとして管理されうる。この場合、時系列情報（手書き文書）を１つの画面に収まる面積単位で区切ることによって、１つの画面に収まる時系列情報のまとまりを１つのページとして記録してもよい。あるいは、ページのサイズを可変できるようにしてもよい。この場合、ページのサイズは１つの画面のサイズよりも大きい面積に広げることができるので、画面のサイズよりも大きな面積の手書き文書を一つのページとして扱うことができる。１つのページ全体をディスプレイに同時に表示できない場合は、そのページを縮小してするようにしてもよいし、縦横スクロールによってページ内の表示対象部分を移動するようにしてもよい。
【００１８】
図２は、タブレットコンピュータ１０と外部装置との連携動作の例を示している。タブレットコンピュータ１０は、パーソナルコンピュータ１やクラウドと連携することができる。すなわち、タブレットコンピュータ１０は、無線ＬＡＮなどの無線通信デバイスを備えており、パーソナルコンピュータ１との無線通信を実行することができる。さらに、タブレットコンピュータ１０は、インターネット上のサーバ２との通信を実行することもできる。サーバ２はオンラインストレージサービス、他の各種クラウドコンピューティングサービスを実行するサーバであってもよい。
【００１９】
パーソナルコンピュータ１はハードディスクドライブ（ＨＤＤ）のようなストレージデバイスを備えている。タブレットコンピュータ１０は、時系列情報（手書き文書）を、ネットワークを通じてパーソナルコンピュータ１に送信して、パーソナルコンピュータ１のＨＤＤに記録することができる（アップロード）。タブレットコンピュータ１０とパーソナルコンピュータ１との間のセキュアな通信を確保するために、通信開始時には、パーソナルコンピュータ１がタブレットコンピュータ１０を認証するようにしてもよい。この場合、タブレットコンピュータ１０の画面上にユーザに対してＩＤまたはパスワードの入力を促すダイアログを表示してもよいし、タブレットコンピュータ１０のＩＤなどを自動的にタブレットコンピュータ１０からパーソナルコンピュータ１に送信してもよい。
【００２０】
これにより、タブレットコンピュータ１０内のストレージの容量が少ない場合でも、タブレットコンピュータ１０が多数の時系列情報（手書き文書）あるいは大容量の時系列情報（手書き文書）を扱うことが可能となる。
【００２１】
さらに、タブレットコンピュータ１０は、パーソナルコンピュータ１のＨＤＤに記録されている任意の１以上の手書き文書を読み出し（ダウンロード）、その読み出した手書き文書によって示されるストロークそれぞれの軌跡をタブレットコンピュータ１０のディスプレイ１７の画面に表示することができる。この場合、複数の手書き文書それぞれのページを縮小することによって得られるサムネイルの一覧をディスプレイ１７の画面上に表示してもよいし、これらサムネイルから選ばれた１ページをディスプレイ１７の画面上に通常サイズで表示してもよい。
【００２２】
さらに、タブレットコンピュータ１０が通信する先はパーソナルコンピュータ１ではなく、上述したように、ストレージサービスなどを提供するクラウド上のサーバ２であってよい。タブレットコンピュータ１０は、手書き文書をネットワーク越しにサーバ２に送信して、サーバ２のストレージデバイス２Ａに記録することができる（アップロード）。さらに、タブレットコンピュータ１０は、サーバ２のストレージデバイス２Ａに記録されている任意の手書き文書を読み出して（ダウンロード）、その手書き文書によって示されるストロークそれぞれの軌跡をタブレットコンピュータ１０のディスプレイ１７の画面に表示することができる。
【００２３】
このように、本実施形態では、手書き文書が格納される記憶媒体は、タブレットコンピュータ１０内のストレージデバイス、パーソナルコンピュータ１内のストレージデバイス、サーバ２のストレージデバイスの何れであってもよい。
【００２４】
また、上述の筆跡検索を実行可能な本実施形態のシステムは、タブレットコンピュータ１０内で実現されるローカルなシステムであってもよいが、１以上のサーバから構成されるシステム（サーバシステム）であってもよい。この場合、タブレットコンピュータ１０は、クエリストローク群をサーバシステムに送信する処理と、検索結果をサーバシステムから受信してタブレットコンピュータ１０の画面上に検索結果を表示する処理とを実行可能なクライアント端末として機能してもよい。
【００２５】
次に、図３及び図４を参照して、ユーザによって手書きされたストローク（文字、マーク、図形、表など）と手書き文書との関係について説明する。図３は、ペン１００などを使用してタッチスクリーンディスプレイ１７上に手書きされるストロークの例を示している。
【００２６】
図３では、塗り潰した図形を表すストローク（以下、塗り潰し部分と表記する場合がある）と、「Ｓｕｂｊｅｃｔ」の文字列を表すストロークが手書きされた例を示している。図３に示す塗り潰し部分のストロークは、例えば上下にストローク方向が繰り返し変更されたストロークと、左右にストローク方向が繰り返し変更されたストロークとが重ね合わされている。２つのストロークが重ね合わされることにより、黒四角の図形が表現されている。
【００２７】
塗り潰し部分のストロークや文字のストロークは、例えば等時間間隔でリアルタイムにサンプリングされ、時系列座標データが得られる。例えば、最初に入力されたストロークについては、時系列座標データＳＤ１１、ＳＤ１２、…ＳＤ１ａが取得され、次に入力されたストロークについては、時系列座標データＳＤ２１、ＳＤ２２、…ＳＤ２ｂが得られる。
【００２８】
図４は、図３の手書きストローク列に対応する時系列情報２００を示している。時系列情報２００は、複数のストロークデータＳＤ１、ＳＤ２、…、ＳＤ７を含む。時系列情報２００内においては、これらストロークデータＳＤ１、ＳＤ２、…、ＳＤ７は、筆跡順に、つまり複数のストロークが手書きされた順に時系列に並べている。
【００２９】
各ストロークデータは、一つのストロークに対応する座標データ系列（時系列座標）、つまり一つのストローク上の複数の点に対応する複数の座標データを含む。各ストロークデータにおいては、複数の座標データはストロークが書かれた順に時系列に並べられている。例えば、図４に示す塗り潰し部分に対応する、最初のストロークに対応するストロークデータＳＤ１は、ストロークの軌跡上の点に対応する座標データ系列（時系列座標）、つまりａ個の座標データＳＤ１１、ＳＤ１２、…ＳＤ１ａを含み、次のストロークに対応するストロークデータＳＤ２は、同様にして、ｂ個の座標データＳＤ２１、ＳＤ２２、…ＳＤ２ｂを含む。手書き文字「Ｓ」のに対応するストロークデータＳＤ３は、ｃ個の座標データＳＤ３１、ＳＤ３２、…ＳＤ３ｃを含む。なお、１つのストロークに対応する座標データの数は、等時間間隔でリアルタイムにサンプリングされるので、ストロークが手書きされる時間によって異なる。すなわち、ストロークが手書きされる時間が長いほど、座標データの数は増加する。
【００３０】
ストロークデータ中の座標データは、ストロークの軌跡上の１点に対応するＸ座標及びＹ座標を示す。例えば、座標データＳＤ１１は、最初のストロークの始点座標（Ｘ１１，Ｙ１１）を示し、座標データＳＤ１ａは、最初のストロークの終点座標（Ｘ１ａ，Ｙ１ａ）を示す。
【００３１】
手書き文書は、イメージまたは文字認識結果ではなく、時系列のストロークデータの集合として記憶されるので、手書き文字の言語に依存せずに手書き文字を扱うことができる。よって、本実施形態の手書き文書（時系列情報２００）の構造は、使用言語の異なる世界中の様々な国で共通に使用できる。
【００３２】
また、時系列情報２００には、ストロークデータ毎に、ストロークが塗り潰し部分であるか否かを示すラベル２０１を付加する。ストロークが塗り潰し部分であるか否かは、後述する塗り潰し判定処理によって判定される。塗り潰し判定処理によって、塗り潰し部分のストロークと判定されたストロークには、面ストロークを示すラベル「面」を付加し、塗り潰し部分のストロークではないと判定されたストロークには、線ストロークを示すラベル「線」を付加する。
【００３３】
また、１つの塗り潰し部分が複数のストロークで表されている場合には、ストローク毎に付加されたラベルをマージして、複数のストロークに対応するラベルを付加することもできる。例えば、図４は、塗り潰し部分を表す２つのストロークに対して、マージしたラベル２０２（ラベル「面」）を付加した例を示す。
【００３４】
マージ対象となるストロークは、例えば図４に示すストロークＳＤ１，ＳＤ２のように、少なくとも何れか１つが面ストロークであり、それぞれのストロークデータに含まれる座標データの一部が重複するストロークとすることができる。この場合、３つ以上のストロークをマージしてラベル「面」を付加しても良いし、面ストロークと線ストロークの組み合わせをマージしてラベル「面」を付加しても良い。
【００３５】
また、座標データが重複する複数のストロークをマージするだけでなく、座標データが近接する複数のストロークをマージしても良い。例えば、塗り潰した図形（例えば、黒四角形）を手書きする場合、図形の輪郭線を手書きした後に、輪郭線内を塗り潰すことがある。こうした場合、塗り潰した図形は、輪郭線を表すストロークと、塗り潰し部分に対応するストロークとから構成されるため、輪郭線と塗り潰し部分のストロークをマージしてラベル「面」を付加する。なお、近接するストロークの判別は、例えば２つのストロークの座標データが予め決められた一定距離内（一致している場合を含む）にあり、この一定距離内にある座標データが予め決められた数以上ある場合に、ストロークが近接していると判別する。
【００３６】
図５は、タブレットコンピュータ１０のシステム構成を示す。  
タブレットコンピュータ１０は、図５に示すように、ＣＰＵ１０１、システムコントローラ１０２、主メモリ１０３、グラフィクスコントローラ１０４、ＢＩＯＳ−ＲＯＭ１０５、不揮発性メモリ１０６、無線通信デバイス１０７、エンベデッドコントローラ（ＥＣ）１０８等を備える。
【００３７】
ＣＰＵ１０１は、タブレットコンピュータ１０内の各種モジュールの動作を制御するプロセッサである。ＣＰＵ１０１は、ストレージデバイスである不揮発性メモリ１０６から主メモリ１０３にロードされる各種ソフトウェアを実行する。これらソフトウェアには、オペレーティングシステム（ＯＳ）１０３ａ、及び各種アプリケーションプログラムが含まれている。アプリケーションプログラムには、手書き入力アプリケーションプログラム１０３ｂが含まれている。手書き入力アプリケーションプログラム１０３ｂは、上述の手書き文書を作成及び表示する機能、手書き文書を編集する機能、筆跡検索機能、及び認識機能等を有している。
【００３８】
また、ＣＰＵ１０１は、ＢＩＯＳ−ＲＯＭ１０５に格納された基本入出力システム（ＢＩＯＳ）も実行する。ＢＩＯＳは、ハードウェア制御のためのプログラムである。
【００３９】
システムコントローラ１０２は、ＣＰＵ１０１のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ１０２には、主メモリ１０３をアクセス制御するメモリコントローラも内蔵されている。また、システムコントローラ１０２は、シリアルバスなどを介してグラフィクスコントローラ１０４との通信を実行する機能も有している。
【００４０】
グラフィクスコントローラ１０４は、本タブレットコンピュータ１０のディスプレイモニタとして使用されるＬＣＤ１７Ａを制御する表示コントローラである。このグラフィクスコントローラ１０４によって生成される表示信号はＬＣＤ１７Ａに送られる。ＬＣＤ１７Ａは、表示信号に基づいて画面イメージを表示する。このＬＣＤ１７Ａ上にはタッチパネル１７Ｂ及びデジタイザ１７Ｃが配置されている。タッチパネル１７Ｂは、ＬＣＤ１７Ａの画面上で入力を行うための静電容量式のポインティングデバイスである。指が接触される画面上の接触位置及び接触位置の動き等はタッチパネル１７Ｂによって検出される。デジタイザ１７ＣはＬＣＤ１７Ａの画面上で入力を行うための電磁誘導式のポインティングデバイスである。ペン１００が接触される画面上の接触位置及び接触位置の動き等はデジタイザ１７Ｃによって検出される。
【００４１】
無線通信デバイス１０７は、無線ＬＡＮまたは３Ｇ移動通信などの無線通信を実行するように構成されたデバイスである。ＥＣ１０８は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。ＥＣ１０８は、ユーザによるパワーボタンの操作に応じて本タブレットコンピュータ１０を電源オンまたは電源オフする機能を有している。
【００４２】
次に、図６を参照して、手書き入力アプリケーションプログラム１０３ｂの機能構成について説明する。  
手書き入力アプリケーションプログラム１０３ｂは、ペン軌跡表示処理部３０１、時系列情報生成部３０２、編集処理部３０３、ページ保存処理部３０４、ページ取得処理部３０５、手書き文書表示処理部３０６、クエリストローク入力部３０７、検索処理部３０８、塗り潰し判定部３０９等の機能を備える。
【００４３】
手書き入力アプリケーションプログラム１０３ｂは、タッチスクリーンディスプレイ１７を用いて入力されるストロークデータを使用することによって、手書き文書（手書きデータ）の作成、表示、編集等を行う。タッチスクリーンディスプレイ１７は、「タッチ」、「移動（スライド）」、「リリース」等のイベントの発生を検出するように構成されている。「タッチ」は、画面上に外部オブジェクトが接触したことを示すイベントである。「移動（スライド）」は、画面上に外部オブジェクトが接触されている間に接触位置が移動されたことを示すイベントである。「リリース」は、画面から外部オブジェクトが離されたことを示すイベントである。
【００４４】
ペン軌跡表示処理部３０１及び時系列情報生成部３０２は、タッチスクリーンディスプレイ１７によって発生される「タッチ」または「移動（スライド）」のイベントを受信し、これによって手書き入力操作を検出する。「タッチ」イベントには、接触位置の座標データが含まれている。「移動（スライド）」イベントにも、移動先の接触位置の座標データが含まれている。従って、ペン軌跡表示処理部３０１及び時系列情報生成部３０２は、タッチスクリーンディスプレイ１７から、接触位置の動きの軌跡に対応する座標データ列を受信することができる。
【００４５】
ペン軌跡表示処理部３０１は、タッチスクリーンディスプレイ１７から座標データ列を受信し、この座標データ列に基づいて、ペン１００等を使用した手書き入力操作によって入力される複数のストロークの軌跡をタッチスクリーンディスプレイ１７のＬＣＤ１７Ａの画面に表示する。このペン軌跡表示処理部３０１により、画面にペン１００が接触している間のペン１００の軌跡、つまり各ストロークの軌跡がＬＣＤ１７Ａの画面に描かれる。
【００４６】
時系列情報生成部３０２は、ユーザにより手書き入力操作がされた場合に、タッチスクリーンディスプレイ１７から出力される座標データ列を受信し、この座標データ列に基づいて、ストロークデータ（時系列情報）を生成する。ストロークデータ（時系列情報）は、作業メモリ４０１に一時保存してもよい。
【００４７】
ページ保存処理部３０４は、複数のストロークに対応する複数のストロークデータを記憶媒体４０２に保存する。記憶媒体４０２は、上述したように、タブレットコンピュータ１０内のストレージデバイス、パーソナルコンピュータ１内のストレージデバイス、サーバ２のストレージデバイスの何れであってもよい。
【００４８】
ページ取得処理部３０５は、記憶媒体４０２に記憶されている手書き文書を読み出す。読み出された手書き文書は手書き文書表示処理部３０６に送られる。手書き文書表示処理部３０６は、手書き文書を解析し、この解析結果に基づいて、手書き文書内の複数のストロークデータによって示される複数のストローク（軌跡）を画面に手書きページとして表示する。
【００４９】
編集処理部３０３は、現在表示中の手書き文書（手書きページ）を編集するための処理を実行する。すなわち、編集処理部３０３は、タッチスクリーンディスプレイ１７上でユーザによって行われる編集操作に応じて、表示されている複数のストローク内の１以上のストロークを削除または移動等するための編集処理を実行する。さらに、編集処理部３０３は、編集処理の結果を表示中の手書き文書に反映するためにこの手書き文書を更新する。
【００５０】
ユーザは、「消しゴム」ツール等を使用して、表示されている複数のストローク内の任意のストロークを削除することができる。また、ユーザは、画面上の任意の部分を丸または四角によって囲むための「範囲指定」ツールを使用して、表示されている手書きページ内の任意の部分を範囲指定することができる。
【００５１】
塗り潰し判定部３０９は、時系列情報生成部３０２により生成されたストロークデータ（時系列情報）に対して塗り潰し判定処理を実行して、ストロークが塗り潰し部分を表すストローク（面ストローク）であるか否かを判定する。塗り潰し判定部３０９は、各ストロークについての判定結果に応じて、ページ保存処理部３０４によって記憶媒体４０２に記憶されたストロークデータ（時系列情報２００）に対して、ストロークが塗り潰し部分であるか否かを示すラベル２０１を付加する。また、塗り潰し判定部３０９は、筆跡検索のために入力されたクエリストロークに対しても、同様にして塗り潰し判定処理を実行して、塗り潰し部分を表すストロークを判定する。
【００５２】
クエリストローク入力部３０７は、検索処理部３０８による検索処理（筆跡検索）において、検索キーとして使用されるクエリストロークを入力し、クエリストロークを用いた検索処理を検索処理部３０８に実行させる。クエリストロークとしては、手書き入力アプリケーションプログラム１０３ｂによって表示される筆跡検索画面に、ユーザの手書き入力操作によって入力される１以上のストロークを使用することができる。また、ユーザによる手書き入力操作によって、手書きページ内から選択される１以上のストロークを、クエリストロークとして使用することもできる。また、クエリストローク入力部３０７は、クエリストロークに対する塗り潰し判定部３０９による判定結果に応じて、クエリストローク中の塗り潰し部分を指定して、検索処理部３０８により検索処理を実行させる。
【００５３】
検索処理部３０８は、筆跡検索を実行するために、ストローク検索部３１０、図検索部３１１、ストローク分割部３１２、及び外接ストローク作成部３１３を備える。
【００５４】
ストローク検索部３１０は、クエリストローク入力部３０７によって入力されるクエリストロークを使用して筆跡検索を実行する。ストローク検索部３１０は、塗り潰し判定部３０９によって線ストロークとして判定されたストロークを対象として、クエリストロークに対応するストローク群を手書き文書から検索する筆跡検索を実行する。例えば、ストローク検索部３１０は、クエリストロークの特徴量と類似する特徴量を有するストローク群を手書き文書から検索してもよい。クエリストロークは、１以上のストロークを含み、検索される各ストローク群も１以上のストロークを含む。上述したように、各ストロークの特徴量としては、ストロークの形状、ストロークの筆画方向、ストロークの傾斜、等を使用しても良い。
【００５５】
ストローク間の類似度の計算方法としては、様々な方法を使用することができる。例えばストローク検索部３１０は、各ストロークをベクトルとして扱って類似度を計算する。この場合、全てのストロークが同じ点の数（サンプル数）を有するように、各ストロークを元のストロークデータに基づいて再サンプリングしてもよい。
【００５６】
さらに、各ストロークの相対的な位置関係を正規化するために、各ストロークのベクトルを差分ベクトルに変換してもよい。例えば、あるストロークが（ｘ１，ｙ１）、（ｘ２，ｙ２）、（ｘ３，ｙ３）という座標データ列を含む場合、この座標データ列を（０，０）、（ｘ２−ｘ１，ｙ２−ｙ１）、（ｘ３−ｘ１，ｙ３−ｙ１）という座標データ列に変換してもよい。このような変換により全てのストロークを原点から書いたストロークとみなすことができるので、各ストロークが書かれた手書きページ内の位置に関係なく、筆跡検索を行うことが可能となる。なお、座標データ列の変換には、各ストロークの相対的な位置関係を正規化することが可能な任意の変換方法を使用し得る。
【００５７】
またさらに、各ストロークの大きさを正規化するために、個々のストロークの最大幅または最大高さで個々のストロークのベクトル座標を割ってもよい。
【００５８】
そして、比較対象のベクトル（差分ベクトル）同士の類似度を計算するために、それら比較対象のベクトル（差分ベクトル）間の内積を比較対象のベクトル（差分ベクトル）間の類似度として算出してもよい。
【００５９】
また、計算の負荷を軽減するために、手書き文書内の各ストロークの特徴量を表す特徴量データ（特徴量ベクトル）を予め算出し、この特徴量データをデータベースに蓄積しても良い。この場合、ストローク検索部３１０は、クエリストロークの特徴量を算出し、クエリストロークの特徴量とデータベース内の各ストロークの特徴量データとを使用して、クエリストロークの特徴量に類似する特徴量を有するストローク群を検索することができる。また、計算量を削減するために、特徴量ベクトルの次元を削減するための処理を行っても良い。
【００６０】
一般には、クエリストロークは１ストロークではなく、複数のストロークを含むストローク列である場合が多い。この場合、クエリストローク群（クエリストローク列）に含まれるストローク毎に、このストロークと手書き文書内の複数のストロークそれぞれとの間の類似度が求められる。そして、クエリストローク列の筆順を考慮して、このクエリストローク列に類似するクエリストローク列が手書き文書から検索される。ストローク列間の類似度の算出においては、ＤＰ（Dynamic Programming）マッチングを使用してもよい。
【００６１】
筆跡検索では、前述したように、ストロークをベクトルとして扱うことによって類似度を計算する。クエリストロークと手書き文書中のストロークとが、それぞれ同じ文字を表す場合には、ストロークをベクトルとして扱って類似度を計算すると高い類似度を示す。これに対して、クエリストロークと手書き文書中のストロークとが、黒丸や黒四角など塗り潰した図形等を表す場合には、見かけ上、同等であったとしても高い類似度を示さない場合が多い。すなわち、塗り潰し部分を手書き入力する場合、その都度、ストロークの長さや向きが異なったり、複数のストロークを組み合わせたりするなど、ストロークが安定しない。このため、見かけ上、同じ塗り潰しを表すストロークであっても、ストロークを示すベクトルが異なるため、高い類似度を示さなくなる。
【００６２】
このため、本実施形態のストローク検索部３１０は、塗り潰し判定部３０９によって面ストロークとして判定されなかったストローク、すなわち線ストロークとして判定されたストロークを対象として、クエリストロークに対応するストローク群を手書き文書から検索する筆跡検索を実行する。ストローク検索部３１０は、クエリストローク（検索キー）に塗り潰し部分に対応するストロークが含まれる場合に、クエリストロークのうち塗り潰し部分に対応するストロークを除くストロークを用いて、手書き文書から、検索キーに対応するストロークに関する情報を取得することができる。塗り潰し判定部３０９により塗り潰し部分と判定されたストローク（面ストローク）については、図検索部３１１により検索処理をすることができる。
【００６３】
図検索部３１１は、クエリストローク入力部３０７によって入力されるクエリストロークを使用して筆跡検索を実行する。図検索部３１１は、塗り潰し判定部３０９によって面ストロークとして判定されたストロークを対象として、クエリストロークに対応するストローク群を手書き文書から検索する筆跡検索を実行する。図検索部３１１は、ストローク検索部３１０によるストロークをベクトルとして扱い、ストローク間の類似度を算出する方法とは異なる方法により、塗り潰し部分の検索を実行する。
【００６４】
ストローク分割部３１２は、手書き文書中のストロークあるいはクエリストロークについて、１つのストロークを塗り潰し部分を表す面ストロークと、面ストローク以外の線ストロークとに分割する。各ストロークを面ストロークと線ストロークとに分割することにより、ストローク検索部３１０と図検索部３１１によりそれぞれに対応する検索処理を実行することができる。
【００６５】
外接ストローク作成部３１３は、塗り潰し判定部３０９によって面ストロークとして判定されたストローク、すなわち塗り潰し部分を表すストロークを、外接するストロークに変換する。例えば、黒丸図形を表すストロークを、黒丸図形に外接するストロークに変換する。この場合、外接するストロークは、塗り潰されていない丸図形に置き換えられる。これにより、面ストロークが線ストロークに変換されるため、ストローク検索部３１０による検索処理が可能となる。
【００６６】
次に、本実施形態におけるタブレットコンピュータ１０の動作について説明する。  
本実施形態における手書き入力アプリケーションプログラム１０３ｂは、筆跡検索のために入力されるクエリストロークに、黒丸や黒四角などの塗り潰し部分を表すストロークが含まれる場合に、この塗り潰し部分について、塗り潰し部分以外のストロークとは異なる処理をすることで、手書き文書を効率よく検索することができるようにする。
【００６７】
まず、図７に示すフローチャートを参照しながら、実施形態における手書き文書の作成手順の一例について説明する。  
ユーザがペン１００を用いてタッチスクリーンディスプレイ１７上で手書き入力操作をすると、ペン軌跡表示処理部３０１及び時系列情報生成部３０２は、タッチスクリーンディスプレイ１７から、接触位置の動きの軌跡に対応する座標データ列を入力する（ステップＡ１）。
【００６８】
ペン軌跡表示処理部３０１は、タッチスクリーンディスプレイ１７から入力する座標データ列に基づいて、手書き入力されたストロークの軌跡をタッチスクリーンディスプレイ１７（ＬＣＤ１７Ａ）に表示する。また、時系列情報生成部３０２は、タッチスクリーンディスプレイ１７から入力する座標データ列に基づいて、ストロークデータ（時系列情報）を生成する（ステップＡ２）。例えば、時系列情報生成部３０２は、入力する座標データを一定時間間隔でサンプリングして、サンプル点（座標データ）を記録することでベクトルデータに変換する。入力されるストロークデータの例としては、文字、グラフ、図、記号などがある。ページ保存処理部３０４は、図４に示すように、複数のストロークに対応する複数のストロークデータを、手書き文書（手書きページ）として記憶媒体４０２に保存する。
【００６９】
一方、塗り潰し判定部３０９は、系列情報生成部３０２により生成されたストロークデータ（時系列情報）に対して塗り潰し判定処理を実行する（ステップＡ３）。塗り潰し判定処理では、ストロークが塗り潰し部分を表すストローク（面ストローク）であるか否かを判定する。なお、塗り潰し判定処理は、１ストローク分のストロークデータが生成される毎に実行しても良いし、１ページ分など複数のストロークデータについてまとめて実行しても良い。例えば、ユーザによる指示に応じてストロークデータの保存処理をする時に、１ページ分毎に塗り潰し判定処理を実行する。以下では、１ページ毎に塗り潰し判定処理を実行するものとして説明する。
【００７０】
図８は、実施形態における塗り潰し判定処理の一例を示すフローチャートである。  
まず、塗り潰し判定部３０９は、時系列情報生成部３０２により生成された複数のストロークデータから、判定対象とするストロークデータを選択する（ステップＢ１）。なお、ステップＢ２に示すストローク分割処理は、必須の処理ではないので、詳細については後述する。
【００７１】
次に、塗り潰し判定部３０９は、ストロークデータをもとに、ストロークに対して外接図形を設定し（ステップＢ３）、外接図形の面積を算出する（ステップＢ４）。
【００７２】
図９に示すストローク例５００は、例えば四角形に塗り潰すために入力されたストローク５０１と、ストローク５０１に対して設定された外接図形５０２の例を示している。外接図形５０２は、ストローク５０１の外周に沿って、ストローク５０１から一定の距離に形成する。ストローク５０１の場合では、ストローク５０１が閉領域を形成していないため、ストローク５０１に沿って外接図形を設定した結果、図９に示すように、ストローク５０１を囲む外接図形５０２が形成される。
【００７３】
図１０に示すストローク例５１０は、例えば円形に塗り潰すために入力されたストローク５１１と、ストローク５１１に対して設定された外接図形５１２の例を示している。ストローク５１１は、閉領域を形成しているため、外周を形成するストロークに沿った外接図形５１２が設定される。
【００７４】
図１１に示すストローク例５２０は、一般的な文字等を表すストローク５２１と、ストローク５２１に対して設定された外接図形５２２の例を示している。ストローク例５２０に示すように、塗り潰し部分を表さないストローク５２１の場合では、ストローク５２１に沿った外接図形５２２が設定される。
【００７５】
次に、塗り潰し判定部３０９は、ストロークに対して設定した外接図形の面積が、予め設定された面積に対する第１閾値より大きいかを判別する。第１閾値は、塗り潰しを意図して入力されたストロークであるか、一般の文字や図形を意図して入力されたストロークであるかを、ストロークに対して設定した外接図形の面積をもとに判別するために決められている。
【００７６】
例えば、図９と図１０に示すストローク５０１，５１１は、塗り潰しを意図して入力されたストロークである。従って、ストローク５０１，５１１に対応する外接図形５０２，５１２の面積は、比較的大きくなる。これに対して、図１１に示す一般的なストローク５２１に対して設定された外接図形５２２の面積は、外接図形５０２，５１２と異なり、比較的小さくなる。
【００７７】
塗り潰し判定部３０９は、外接図形の面積が第１閾値より大きくない場合（ステップＢ５、Ｎｏ）、判定対象とするストロークが塗り潰しを表すストロークではないと判定する（ステップＢ１０）。
【００７８】
一方、塗り潰し判定部３０９は、外接図形の面積が第１閾値より大きい場合（ステップＢ５、Ｙｅｓ）、外接図形内のストロークの密度を算出する（ステップＢ６）。例えば、ストロークデータがサンプル点によるベクトルデータに変換されているため、塗り潰し判定部３０９は、判別対象とするストロークのサンプル点の個数を数えて、外接図形の面積で割り、単位面積当たりのサンプル点の個数を密度とする。
【００７９】
次に、塗り潰し判定部３０９は、ストロークの密度が、予め設定されたストロークの密度に対する第２閾値より大きいかを判別する。第２閾値は、塗り潰しを意図して入力されたストロークであるか、一般の文字や図形を意図して入力されたストロークであるかを、外接図形内のストロークの面積をもとに判別するために決められている。
【００８０】
塗り潰し判定部３０９は、ストロークの密度が第２閾値より大きくない場合（ステップＢ７、Ｎｏ）、判定対象とするストロークが塗り潰しを表すストロークではないと判定する（ステップＢ１０）。  
一方、塗り潰し判定部３０９は、ストロークの密度が第２閾値より大きい場合（ステップＢ７、Ｙｅｓ）、判定対象とするストロークが塗り潰し部分を表すストロークであると判定する（ステップＢ８）。なお、ステップＢ９に示すストローク作成処理は、必須の処理ではないので、詳細については後述する。
【００８１】
塗り潰し判定部３０９は、全ストロークの判定を終了したか判断し、判定が終了していないストロークデータがあれば（ステップＢ１１、Ｎｏ）、他のストロークデータを判定対象として選択して（ステップＢ１）、前述と同様の処理を実行する（ステップＢ２〜Ｂ１１）。全てのストロークについての判定が終了した場合（ステップＢ１１、Ｙｅｓ）、塗り潰し判定部３０９は、塗り潰し判定処理を終了する。
【００８２】
なお、前述した説明では、ストローク５０１，５１１，５２１に対して外接図形５０２，５１２，５２２を設定しているが、外接矩形を設定するようにしても良い。例えば、塗り潰し判定部３０９は、ストロークデータに含まれる座標データ（サンプル点）のｘ座標とｙ座標のそれぞれについて最大値と最小値とを求め、外接矩形を設定することができる。
【００８３】
図９に示すストローク例５０５には、ストローク５０１に対して設定した外接矩形５０３を示している。同様にして、図１０に示すストローク例５１５は、ストローク５１１に設定した外接矩形５１３を示し、図１１に示すストローク例５２５は、ストローク５２１に設定した外接矩形５２３を示している。
【００８４】
図１１に示す外接矩形５２３は、第１閾値よりも面積が大きくなるが、ストローク密度が小さくなるため、外接図形５２２を設定した場合と同様にして、塗り潰し部分を表すストロークではないと判定される。
【００８５】
ページ保存処理部３０４は、塗り潰し判定部３０９による塗り潰し判定処理が終了すると、ストロークデータ（時系列情報２００）に対してストロークが塗り潰し部分であるか否かを示すラベル２０１を付加して、ストロークデータを記憶媒体４０２に記録する（ステップＡ４）。すなわち、ページ保存処理部３０４は、塗り潰し部分のストロークと判定されたストロークには、面ストロークを示すラベル「面」を付加し、塗り潰し部分のストロークではないと判定されたストロークには、線ストロークを示すラベル「線」を付加する（図４参照）。
【００８６】
さらに、ページ保存処理部３０４は、ストローク毎のラベル２０１の他に、塗り潰し部分を表す複数のストロークに対して、マージしたラベル２０２（ラベル「面」）を付加することができる。例えば、塗り潰し判定部３０９は、複数のストロークのうち、少なくとも何れか１つが面ストロークであり、それぞれのストロークデータに含まれる座標データの一部が重複する場合に、該当する複数のストロークに対して、マージしたラベルを付加可能であると判定する。ページ保存処理部３０４は、塗り潰し判定部３０９による判定結果に応じて、複数のストロークに対して、マージしたラベル「面」を付加する。
【００８７】
図１２は、複数のストロークにより塗り潰しを表す図形が手書きされる例を示している。図１２では、２つのストローク５３０，５３１が重ね合わされることにより、黒四角の図形を表すストローク５３２が手書きされている。ストローク５３０は、上下にストローク方向が繰り返し変更されたパターンを有し、ストローク５３１は、左右にストローク方向が繰り返し変更されたパターンを有している。
【００８８】
このように、塗り潰した図形等を作成するために重ね合わされた２つのストローク５３０，５３１については、マージしたラベル２０２を付加する。
【００８９】
また、図１２に示すように、複数の面ストロークが重ね合わされた場合だけでなく、面ストロークと線ストロークとが重ね合わされて手書きされた場合にマージしたラベル２０２を付加することもできる。
【００９０】
図１３は、線ストロークに相当するストローク５４０と、面ストロークに相当する複数のストローク５４１により塗り潰しを表す図形５４２が手書きされる例を示している。図１３では、図形の輪郭線（例えば、星形）が手書きされた後、輪郭線内を塗り潰すように複数のストロークが手書き入力されている。
【００９１】
塗り潰し判定部３０９は、ストローク５４０，５４１について、２つのストロークの座標データが予め決められた一定距離内（一致している場合を含む）にあり、この一定距離内にある座標データが予め決められた数以上ある場合に、ストローク５４０，５４１が塗り潰しを表す図形５４２を構成すると判定する。ページ保存処理部３０４は、ストローク５４０，５４１に対して、マージしたラベル「面」を付加する。これにより、線ストロークのストローク５４０についても、面ストロークと同様に扱うことができる。
【００９２】
次に、本実施形態における第１の検索処理について、図１４に示すフローチャートを参照しながら説明する。  
図１５は、手書き入力アプリケーションプログラム１０３ｂによってユーザに提示される筆跡検索画面６００の一例を示す図である。
【００９３】
筆跡検索画面６００は、検索キー入力領域５５１、検索ボタン５５１Ａ、クリアボタン５５１Ｂを表示する。検索キー入力領域５５１は、検索キーとすべきストローク（クエリストローク）を手書きするための入力領域である。検索ボタン５５１Ａは、筆跡検索処理の実行を指示するためのボタンである。クリアボタン５５１Ｂは、検索キー入力領域５５１に手書きされた文字列または図形の削除（クリア）を指示するためのボタンである。
【００９４】
筆跡検索画面６００は、さらに、複数の手書きページサムネイル６０１を表示してもよい。図１５の例においては、９個の手書き文書それぞれに対応する９個の手書きページサムネイル６０１が表示されている。
【００９５】
ここでは、図１６に示すように、検索キー入力領域５５１に例えば塗り潰し図形を表すストロークと「Ｓｕｂｊｅｃｔ」の文字列を表すストロークとがクエリストロークとして入力されている状態で、検索ボタン５５１Ａ上で行われるジェスチャ（例えばタップジェスチャ等）が検出されたものとする。手書き入力アプリケーションプログラム１０３ｂは、クエリストロークに特徴量が類似するストローク群を、例えば９個の手書きページサムネイル６０１に対応する手書き文書から検索するための筆跡検索を開始する。
【００９６】
塗り潰し判定部３０９は、時系列情報生成部３０２によりクエリストロークのストロークデータが生成されると（ステップＣ１）、クエリストローク中の各ストロークについて塗り潰し処理を実行し、塗り潰し部分を表す面ストロークと、その他の線ストロークとに判定する（ステップＣ２）。塗り潰し処理は、前述と同様に実行するものとして詳細な説明を省略する（図８に示すフローチャート参照）。
【００９７】
クエリストローク入力部３０７は、クエリストロークデータを入力して、このクエリストロークデータを検索キーとする検索処理を検索処理部３０８に実行させる。また、クエリストローク入力部３０７は、塗り潰し判定部３０９により判定された、クエリストローク中の塗り潰し部分を指定する。
【００９８】
検索処理部３０８のストローク検索部３１０は、クエリストロークに含まれる塗り潰し部分（面ストローク）を除外したストローク（線ストローク）に該当するストローク群、すなわち塗り潰し部分を除外したストロークの特徴量との類似度が予め設定された判定基準より高いストローク群を検索対象とする手書き文書から検索する（ステップＣ３）。ストロークの検索は、例えば、ストローク単位で、ベクトル同士の類似度を求め、複数のストロークのクエリのためにＤＰマッチングによりクエリとマッチするストロークを検索すればよい。また、検索処理部３０８は、手書き文書から検索されたストローク群を筆跡検索画面６００において表示する（ステップＣ５）。なお、図１４に示すステップＣ４の処理については後述する。
【００９９】
図１６に示す筆跡検索画面６００には、類似度が判定基準より高いクエリストロークを含む手書き文書の手書きページサムネイルが検索結果として表示される。図１６においては、９個の手書きページのうち５個の手書きページからクエリストロークに対応するストローク群が検索された場合について示している。５個の手書きページサムネイルでは、クエリストロークに対応するストローク群を強調表示する。強調表示としては、例えば検索されたストローク群に矩形枠６０２を付加したり、検索されたストローク群の表示色を他のストロークと異なる色（例えば、赤色）にしたり、ストローク群の表示形態を反転表示などの他の形態にしたりすることができる。
【０１００】
さらに、筆跡検索画面６００から手書きページサムネイルの１つがユーザによって選択された場合、検索処理部３０８は、図１７に示すように、選択された手書きページサムネイル６０１に対応する手書きページを、通常のサイズで筆跡検索画面６００に表示する。図１７に示す例では、検索キー入力領域５５１に入力された文字列「Ｓｕｂｊｅｃｔ」を表すクエリストロークをもとに検索した結果、ストローク群６０２Ａ，６０２Ｂ，６０２Ｃが検索されたことを示している。ストローク群６０２Ａ，６０２Ｂには、それぞれ左側に塗り潰し部分を表すストローク６０５Ａ，６０５Ｂ，６０５Ｃが存在しているが、この塗り潰し部分を除外して検索が実行される。このため、ストローク６０５Ａ，６０５Ｂの影響を受けずに、文字列「Ｓｕｂｊｅｃｔ」を表すクエリストロークに該当するストローク群６０２Ａ，６０２Ｂを精度良く検索することができる。また、塗り潰し部分のストロークは、文字等を表すストロークよりも長いことが多いため、ストローク間の類似度計算に要する時間が、文字のストローク間の類似度計算よりも比較的長くなる。しかし、塗り潰し部分のストロークを除外して検索（類似度計算）をすることで、検索処理の速度を向上させることができる。
【０１０１】
なお、前述した検索処理では、クエリストロークに含まれる塗り潰し部分（面ストローク）を除外して検索をしているが、塗り潰し部分（面ストローク）を利用して、検索結果とするストローク群を絞り込むことができる。
【０１０２】
すなわち、ストローク検索部３１０は、図１４に示すステップＣ３の処理によって検索されたストローク群を対象として、塗り潰し部分のストロークを含めて検索する（ステップＣ４）。
【０１０３】
例えば、検索キー入力領域５５１に入力された文字列「Ｓｕｂｊｅｃｔ」を表すクエリストロークをもとに検索した結果、図１７に示すように、ストローク群６０２Ａ，６０２Ｂ，６０２Ｃが検索される。検索キー入力領域５５１において、塗り潰し部分と判定されたストロークに続いて、検索に使用した「Ｓｕｂｊｅｃｔ」を表すストロークが存在しているため、ストローク検索部３１０は、塗り潰し部分が前に存在するストローク群を、ストローク群６０２Ａ，６０２Ｂ，６０２Ｃから選択する。図１７に示す例では、ストローク群６０２Ａ，６０２Ｂの前に、それぞれ塗り潰し部分６０５Ａ，６０５Ｂが存在するため、検索結果としてストローク群６０２Ａ，６０２Ｂを選択する。ストローク群６０２Ｃは、クエリストローク中の塗り潰し部分を除くストロークにのみ対応するため選択されない。
【０１０４】
このように、クエリストローク中の塗り潰し部分を利用することにより、より精度良く検索処理を実行することができる。また、本実施形態では、塗り潰し部分を表すストロークについて、例えば黒四角あるいは黒丸のように、文字あるいは図形として認識しないので、認識処理に要する処理付加を増大させることなく、塗り潰し部分を利用した検索処理が可能となる。
【０１０５】
次に、本実施形態における第２の検索処理について、図１８に示すフローチャートを参照しながら説明する。  
第１の検索処理では、塗り潰し部分のストロークについては、クエリストロークと手書き文書中のストロークとの類似度を算出していないが、第２の検索処理では、塗り潰し部分のストロークについても、文書中のストロークとの類似関係を示す評価値を算出して検索処理に反映させる。
【０１０６】
図１８に示すステップＤ１，Ｄ２の処理は、図１４に示すステップＣ１，Ｃ２と同様に実行されるものとして詳細な説明を省略する。  
ストローク検索部３１０は、クエリストローク中の塗り潰し部分と判定されないストローク（線ストローク）については、第１の検索処理と同様にして、ストローク検索を実行する。すなわち、手書き文書等の線ストロークを示すラベルが付加されたストロークを対象にして、ストローク検索を行う（ステップＤ４）。
【０１０７】
一方、図検索部３１１は、クエリストローク中の塗り潰し部分と判定されたストローク（面ストローク）については、このストロークを図形化して、手書き文書中のストロークとの類似関係を示す評価値を算出する（ステップＤ５）。以下、この処理を図検索と称する。
【０１０８】
図１９は、図検索の処理内容を説明するための図である。図１９には、クエリストロークの面ストローク７００と、手書き文書中の面ストローク７１０を示している。図検索部３１１は、クエリストロークの面ストローク７００と、検索対象とする手書き文書中の面ストローク７１０のそれぞれについて外接正方形７０１，７１１をそれぞれ設定し、外接正方形７０１，７１１が同じサイズとなるように、面ストローク７００，７１０を拡大あるいは縮小する。図１９では、外接正方形７０１を縮小することにより外接正方形７０２を求め、外接正方形７１１を縮小することにより外接正方形７０２と同じサイズの外接正方形７１２を求めている。
【０１０９】
次に、図検索部３１１は、面ストローク７００を縮小した面ストローク７０３と、面ストローク７１０を拡大した面ストローク７１３のそれぞれについて外接図形を算出し、この外接図形の内側を完全に塗潰したそれぞれの図形との類似関係を算出する。例えば、図検索部３１１は、比較する図形どうしを重ね合わせ、重複する部分の面積の大きさの割合をスコアとして評価すればよい。
【０１１０】
図１９には、面ストローク７０３の外接図形に対応する図形７１５（クエリ図形Ａ）と、面ストローク７１３の外接図形に対応する図形７０５（検索対象図形Ｂ）とを重ね合わせた状態を示している。図検索部３１１は、クエリ図形Ａの面積をＳａ、検索対象図形Ｂの面積をＳｂとし、クエリ図形Ａと検索対象図形Ｂとを重ね合わせた時の重複部分の面積をＳａｂとしたとき、スコアＳをＳ＝２（Ｓａｂ）／（Ｓａ＋Ｓｂ）で求める。スコアＳが大きいほど、クエリ図形Ａと検索対象図形Ｂとは類似していると評価することができる。このスコアＳが、クエリ図形Ａで検索したときの検索対象図形Ｂの一致度になる。もしクエリストローク中に塗り潰し部分が複数ある場合には、図検索部３１１は、それぞれの塗り潰し部分について前述した処理を繰り返す。
【０１１１】
こうして、クエリストロークに含まれる塗り潰し部分とそれ以外の部分に分けて、ストローク検索（ステップＤ４）と図検索（ステップＤ５）とを完了すると、ストローク検索部３１０は、それぞれの検索結果を併合する（ステップＤ６）。例えば、ストローク検索部３１０は、図検索において算出される評価値（スコアＳ）を、ストローク検索において算出される類似度に換算し、ストローク検索の場合と同様にして、ストロークが記述された順序に従い、ＤＰマッチングを行う。これにより、記憶媒体４０２に手書き文書中のストロークの内、クエリストロークにマッチするストロークを検索することができる。
【０１１２】
なお、クエリストローク（線ストローク）と手書き文書中のストロークとの類似度は、例えば（−１〜＋１）の範囲で算出される。同じ形状の同じストローク方向のストローク同士では類似度が＋１となり、同じ形状のストローク方向が正反対のストローク同士では類似度が−１となる。図検索では、例えばスコアＳが０〜＋１の範囲で算出される。この場合、図検索のスコアＳをストローク検索の類似度０〜＋１に換算する。
【０１１３】
検索処理部３０８は、手書き文書から検索されたストローク群を、前述した第１の検索処理と同様にして筆跡検索画面６００において表示する（ステップＤ７）。
【０１１４】
このようにして、第２の検索処理では、クエリストロークとして塗り潰し部分を含むストロークが入力された場合だけでなく、塗り潰し部分のみのストロークが入力された場合であっても、検索処理をすることができる。また、線ストロークと面ストロークとが混在する図形についても検索することができる。例えば、フェルマータマーク、ト音記号、八分音符マークなど、線と点を組み合わせたマークや図形において、点が黒丸の塗り潰しによって手書きされた場合でも検索することができる。
【０１１５】
次に、塗り潰し判定処理の応用例について説明する。  
まず、図８のステップＢ２に示すストローク分割処理について説明する。  
前述した塗り潰し部分の判定処理では、ストローク単位で判定するとしているが、ここでは、１本のストロークに塗り潰し部分とそれ以外の部分が含まれる場合に、塗り潰し部分とそれ以外の部分のサブストロークに分割する。
【０１１６】
ストローク分割部３１２は、手書き文書の作成時に入力されたストローク、及び検索処理のために入力されたクエリストロークのストロークデータをもとに、サブストロークを生成する。
【０１１７】
図２０は、１本のストロークが手書き入力される様子を示している。図２０は、四分音符を表すストロークが手書き入力される例を示しており、黒丸部分が先に入力されてから線部分が入力されている。
【０１１８】
ストローク分割部３１２は、１本のストロークのストロークデータをもとに、サンプル点の最初からある程度大きなｎ個のサンプル点までを対象として外接図形（計算の簡単のため外接矩形でもよい）を設定し、外接図形内のストロークのサンプル点数と外接図形の面積をもとにサンプル点の密度（ストロークの密度）を求める。密度が閾値Ｔｈより大きい時に、さらにｎ（サンプル点数）を大きくし、密度が下がるまでｎを大きくする。ストローク分割部３１２は、サンプル点の密度が閾値Ｔｈ以下となる（あるいは密度が最大になる）ときのｎ個目のサンプル点においてストロークを分割して、サブストロークを生成する。
【０１１９】
例えば、図２０では、黒丸部分がストローク８０１，８０２，８０３に示すように手書き入力された例を示している。ストローク８０１，８０２，８０３には、それぞれ外接矩形８１１，８１２，８１３が設定される。外接矩形８１１，８１２，８１３は、塗り潰し部分のストロークに対して設定されているためサンプル点の密度が高くなる。その後、ストローク８１４に示すように棒部分が手書き入力されると、ストローク８１４に対する外接矩形８１４の面積が大きくなるためサンプル点密度が低くなる。最終的に四分音符を表すストローク８０５が入力されると、外接矩形８１５が設定されてサンプル点密度が最も低くなる。
【０１２０】
図２１は、手書きされるストロークのサンプル点数と、サンプル点密度との関係を示す図である。図２１に示すように、四分音符の線部分が入力されることによりサンプル点密度が大きく下がる。ストローク分割部３１２は、図２２に示すように、図２０に示す１本のストローク８０５を、サブストローク８０５Ａ，８０５Ｂの２本のストロークに分割する。
【０１２１】
さらに、線部分のストロークが先に入力されてから黒丸部分が入力された場合に対応するため、ストロークデータの最後のサンプル点から前述のように外接図形を順次設定して、サンプル密度の変化を調べて、ストロークを分割するようにしても良い。
【０１２２】
このようにして、ストローク分割部３１２によって、１本のストロークを塗り潰し部分のストローク（面ストローク）と、塗り潰し部分以外のストローク（線ストローク）とに分割することができる。サブストロークを他のストロークと同様に扱うことで、１本ストロークで塗り潰し部分とそれ以外の部分が混在する場合であっても、前述と同様の塗り潰し判定処理、第１の検索処理、第２の検索処理を実行することが可能となる。
【０１２３】
次に、図８のステップＢ９に示すストローク作成処理について説明する。  
ストローク作成処理では、塗り潰し部分と判定された面ストロークを、線ストロークに置き換える。外接ストローク作成部３１３は、塗り潰し部分と判定された面ストロークに対して外接図形を設定し、この外接図形を新たな線ストロークとする。
【０１２４】
図２３には、塗り潰し部分と判定された面ストローク９００の一例を示している。外接ストローク作成部３１３は、面ストローク９００に対して外接図形９０１を設定し、この外接図形９０１を表す線を線ストローク９０２に変換する。線ストローク９０２は、他の線ストロークと同様にして扱う。
【０１２５】
このようにして、塗り潰し部分のストロークを外接図形に対応するストロークに置き換えることで、例えば黒丸の塗り潰しを表すストロークが白丸を表すストロークに置き換えられ、黒四角の塗り潰しを表すストロークが白四角を表すストロークに置き換えられる。従って、例えばクエリストロークとして白四角を表すストロークが入力された場合に、手書き文書の作成時に入力された黒四角の塗り潰し部分を検索することができる。また、面ストロークを線ストロークに置き換えることで、第２の検索処理において図検索が不要となる。
【０１２６】
なお、図２３に示す例では、面ストローク９００を外接図形に対応するストロークに置き換えているが、外接図形に相当する図形を細線化することで線ストロークに置き換えることもできる。
【０１２７】
図２４には、塗り潰し部分と判定された面ストローク９１０の一例を示している。外接ストローク作成部３１３は、面ストローク９１０に対して外接図形９１１を設定し、この外接図形９０１に対して細線化処理することで線分９１２を生成する。線ストローク９０２は、線分９１２を線ストローク９１３に変換する。このように細線化処理を利用することで、面ストロークを線ストロークに置き換えることができる。
【０１２８】
なお、本実施形態の手書き文書に対する各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
【０１２９】
また、上述したように、本実施形態の筆跡検索処理の機能はタブレットコンピュータ１０内のローカルなシステムによって実現しても良いが、１以上のサーバから構成されるサーバシステムであってもよい。あるいは、筆跡検索処理の機能の一部をタブレットコンピュータ１０によって実行し、残りの部分を１以上のサーバによって実行するというシステム構成を利用してもよい。
【０１３０】
また、本実施形態では、タブレットコンピュータを使用する場合を例示して説明したが、本実施形態の手書き文書処理機能は、通常のデスクトップパーソナルコンピュータに適用することもできる。この場合、手書き入力のための入力デバイスであるタブレット等をデスクトップパーソナルコンピュータに接続すれば良い。
【０１３１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【要約】
実施形態によれば、検索方法は、検索キーである少なくとも１つのストロークを含む第１ストロークを入力し、前記第１ストロークに、第１塗り潰し部分に対応する第２ストロークが含まれる場合に、前記第１ストロークのうち前記第２ストロークを除く第３ストロークを用いて、手書き文書から、検索キーに対応するストロークに関する情報を取得する。【図１】
0005666011.tif 000002
【図２】
0005666011.tif 000003
【図３】
0005666011.tif 000004
【図４】
0005666011.tif 000005
【図５】
0005666011.tif 000006
【図６】
0005666011.tif 000007
【図７】
0005666011.tif 000008
【図８】
0005666011.tif 000009
【図９】
0005666011.tif 000010
【図１０】
0005666011.tif 000011
【図１１】
0005666011.tif 000012
【図１２】
0005666011.tif 000013
【図１３】
0005666011.tif 000014
【図１４】
0005666011.tif 000015
【図１５】
0005666011.tif 000016
【図１６】
0005666011.tif 000017
【図１７】
0005666011.tif 000018
【図１８】
0005666011.tif 000019
【図１９】
0005666011.tif 000020
【図２０】
0005666011.tif 000021
【図２１】
0005666011.tif 000022
【図２２】
0005666011.tif 000023
【図２３】
0005666011.tif 000024
【図２４】
0005666011.tif 000025