以下、実施の形態について図面を参照して説明する。
図1は、一実施形態に係る電子機器の外観を示す斜視図である。電子機器は、例えば、ペンまたは指によって手書き入力可能な携帯型電子機器である。電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、PDA(personal digital assistant)等として実現され得る。以下では、電子機器がタブレットコンピュータ10として実現されている場合を例にして説明する。タブレットコンピュータ10は、タブレットまたはスレートコンピュータとも称される携帯型電子機器であり、図1に示すように、本体11とタッチスクリーンディスプレイ17とを備える。本体11は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ17は、本体11の上面に重ね合わせるように取り付けられている。
タッチスクリーンディスプレイ17には、フラットパネルディスプレイと、フラットパネルディスプレイの画面上のペンまたは指の接触位置を検出するように構成されたセンサとが組み込まれている。フラットパネルディスプレイは、例えば、液晶表示装置(LCD)であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザなどを使用することができる。以下では、デジタイザとタッチパネルの2種類のセンサの双方がタッチスクリーンディスプレイ17に組み込まれている場合を想定する。
デジタイザは、例えば、フラットパネルディスプレイの画面の下側に配置される。タッチパネルは、例えば、フラットパネルディスプレイの画面上に配置される。このタッチスクリーンディスプレイ17は、指を使用した画面に対するタッチ操作のみならず、ペン100を使用した画面に対するタッチ操作も検出することができる。ペン100は例えば電磁誘導ペンであってもよい。ユーザは、外部オブジェクト(ペン100又は指)を使用してタッチスクリーンディスプレイ17上で手書き入力操作を行うことができる。手書き入力操作中においては、画面上の外部オブジェクト(ペン100又は指)の動きの軌跡、つまり手書き入力操作によって手書きされるストロークの軌跡(筆跡)がリアルタイムに描画され、これによって各ストロークの軌跡が画面上に表示される。外部オブジェクトが画面に接触されている間の外部オブジェクトの動きの軌跡が1ストロークに相当する。手書きされた文字または図形などに対応する多数のストロークの集合、つまり多数の軌跡(筆跡)の集合が手書き文書を構成する。
本実施形態では、手書き文書は、イメージデータではなく、各ストロークの軌跡の座標データ列とストローク間の順序関係を示す時系列情報として記憶媒体に保存される。時系列情報の詳細は図4を参照して後述する。時系列情報は、複数のストロークが手書きされた順を示し、且つ複数のストロークにそれぞれ対応する複数のストロークデータを含む。換言すれば、時系列情報は、複数のストロークにそれぞれ対応する時系列のストロークデータの集合を意味する。各ストロークデータは、ある一つのストロークに対応し、このストロークの軌跡上の点それぞれに対応する座標データ系列(時系列座標)を含む。複数のストロークデータの並びの順序は、ストロークそれぞれが手書きされた順序つまり筆順に相当する。
タブレットコンピュータ10は、記憶媒体から既存の任意の時系列情報(手書き文書)を読み出し、この時系列情報に対応する手書き文書、つまりこの時系列情報によって示される複数のストロークそれぞれに対応する軌跡を画面上に表示することができる。さらに、タブレットコンピュータ10は編集機能を有している。この編集機能は、「消しゴム」ツール、範囲指定ツール、及び他の各種ツール等を用いたユーザによる編集操作に応じて、表示中の手書き文書内の任意のストロークまたは任意の手書き文字等を削除または移動することができる。さらに、この編集機能は、幾つかの手書き操作の履歴を取り消す機能も含んでいる。
さらに、タブレットコンピュータ10は、筆跡検索(ストローク検索)機能も有している。筆跡検索は、検索キー(クエリストローク)として手書きされる1以上のストローク(クエリストローク)を用いて、クエリストロークに対応する1以上のストロークを任意の手書き文書から検索できればどのようなものであっても良い。筆跡検索は、1以上のクエリストロークに対応する1以上のストロークを含む手書き文書を記憶媒体から検索することもできる。1以上のクエリストロークに対応する1以上のストロークは、例えば、1以上のクエリストロークに類似する1以上のストロークであってもよい。筆跡検索では、例えば、クエリストロークと手書き文書内の複数のストロークそれぞれとの間のマッチング(ストロークマッチング)によって、クエリストロークの特徴量に類似する特徴量を有する1以上のストロークが手書き文書から検索される。検索キー(クエリストローク)として複数のストロークが手書きによって入力される場合には、クエリストローク群内のストローク毎に上述のストロークマッチングが実行される。
あるストロークの特徴量としては、このストロークの手書き特徴を表すことができる任意の特徴を使用することができる。例えば、特徴量としては、ストロークの形状、ストロークの筆画方向、ストロークの傾斜、等を表す特徴量データを使用しても良い。
筆跡検索の機能は、ユーザが過去に作成した多数の手書き文書から所望の手書き文書を容易に見つけ出すことを可能にし、またユーザがある手書き文書内から所望の手書き部分を容易に見つけ出すことを可能にする。筆跡検索は、手書き文字だけでなく、手書きの図形、手書きのマーク等を検索することもできる。
本実施形態では、上述の時系列情報(手書き文書)は、1つまたは複数のページとして管理されうる。この場合、時系列情報(手書き文書)を1つの画面に収まる面積単位で区切ることによって、1つの画面に収まる時系列情報のまとまりを1つのページとして記録してもよい。あるいは、ページのサイズを可変できるようにしてもよい。この場合、ページのサイズは1つの画面のサイズよりも大きい面積に広げることができるので、画面のサイズよりも大きな面積の手書き文書を一つのページとして扱うことができる。1つのページ全体をディスプレイに同時に表示できない場合は、そのページを縮小してするようにしてもよいし、縦横スクロールによってページ内の表示対象部分を移動するようにしてもよい。
図2は、タブレットコンピュータ10と外部装置との連携動作の例を示している。タブレットコンピュータ10は、パーソナルコンピュータ1やクラウドと連携することができる。すなわち、タブレットコンピュータ10は、無線LANなどの無線通信デバイスを備えており、パーソナルコンピュータ1との無線通信を実行することができる。さらに、タブレットコンピュータ10は、インターネット上のサーバ2との通信を実行することもできる。サーバ2はオンラインストレージサービス、他の各種クラウドコンピューティングサービスを実行するサーバであってもよい。
パーソナルコンピュータ1はハードディスクドライブ(HDD)のようなストレージデバイスを備えている。タブレットコンピュータ10は、時系列情報(手書き文書)を、ネットワークを通じてパーソナルコンピュータ1に送信して、パーソナルコンピュータ1のHDDに記録することができる(アップロード)。タブレットコンピュータ10とパーソナルコンピュータ1との間のセキュアな通信を確保するために、通信開始時には、パーソナルコンピュータ1がタブレットコンピュータ10を認証するようにしてもよい。この場合、タブレットコンピュータ10の画面上にユーザに対してIDまたはパスワードの入力を促すダイアログを表示してもよいし、タブレットコンピュータ10のIDなどを自動的にタブレットコンピュータ10からパーソナルコンピュータ1に送信してもよい。
これにより、タブレットコンピュータ10内のストレージの容量が少ない場合でも、タブレットコンピュータ10が多数の時系列情報(手書き文書)あるいは大容量の時系列情報(手書き文書)を扱うことが可能となる。
さらに、タブレットコンピュータ10は、パーソナルコンピュータ1のHDDに記録されている任意の1以上の手書き文書を読み出し(ダウンロード)、その読み出した手書き文書によって示されるストロークそれぞれの軌跡をタブレットコンピュータ10のディスプレイ17の画面に表示することができる。この場合、複数の手書き文書それぞれのページを縮小することによって得られるサムネイルの一覧をディスプレイ17の画面上に表示してもよいし、これらサムネイルから選ばれた1ページをディスプレイ17の画面上に通常サイズで表示してもよい。
さらに、タブレットコンピュータ10が通信する先はパーソナルコンピュータ1ではなく、上述したように、ストレージサービスなどを提供するクラウド上のサーバ2であってよい。タブレットコンピュータ10は、手書き文書をネットワーク越しにサーバ2に送信して、サーバ2のストレージデバイス2Aに記録することができる(アップロード)。さらに、タブレットコンピュータ10は、サーバ2のストレージデバイス2Aに記録されている任意の手書き文書を読み出して(ダウンロード)、その手書き文書によって示されるストロークそれぞれの軌跡をタブレットコンピュータ10のディスプレイ17の画面に表示することができる。
このように、本実施形態では、手書き文書が格納される記憶媒体は、タブレットコンピュータ10内のストレージデバイス、パーソナルコンピュータ1内のストレージデバイス、サーバ2のストレージデバイスの何れであってもよい。
また、上述の筆跡検索を実行可能な本実施形態のシステムは、タブレットコンピュータ10内で実現されるローカルなシステムであってもよいが、1以上のサーバから構成されるシステム(サーバシステム)であってもよい。この場合、タブレットコンピュータ10は、クエリストローク群をサーバシステムに送信する処理と、検索結果をサーバシステムから受信してタブレットコンピュータ10の画面上に検索結果を表示する処理とを実行可能なクライアント端末として機能してもよい。
次に、図3及び図4を参照して、ユーザによって手書きされたストローク(文字、マーク、図形、表など)と手書き文書との関係について説明する。図3は、ペン100などを使用してタッチスクリーンディスプレイ17上に手書きされるストロークの例を示している。
図3では、塗り潰した図形を表すストローク(以下、塗り潰し部分と表記する場合がある)と、「Subject」の文字列を表すストロークが手書きされた例を示している。図3に示す塗り潰し部分のストロークは、例えば上下にストローク方向が繰り返し変更されたストロークと、左右にストローク方向が繰り返し変更されたストロークとが重ね合わされている。2つのストロークが重ね合わされることにより、黒四角の図形が表現されている。
塗り潰し部分のストロークや文字のストロークは、例えば等時間間隔でリアルタイムにサンプリングされ、時系列座標データが得られる。例えば、最初に入力されたストロークについては、時系列座標データSD11、SD12、…SD1aが取得され、次に入力されたストロークについては、時系列座標データSD21、SD22、…SD2bが得られる。
図4は、図3の手書きストローク列に対応する時系列情報200を示している。時系列情報200は、複数のストロークデータSD1、SD2、…、SD7を含む。時系列情報200内においては、これらストロークデータSD1、SD2、…、SD7は、筆跡順に、つまり複数のストロークが手書きされた順に時系列に並べている。
各ストロークデータは、一つのストロークに対応する座標データ系列(時系列座標)、つまり一つのストローク上の複数の点に対応する複数の座標データを含む。各ストロークデータにおいては、複数の座標データはストロークが書かれた順に時系列に並べられている。例えば、図4に示す塗り潰し部分に対応する、最初のストロークに対応するストロークデータSD1は、ストロークの軌跡上の点に対応する座標データ系列(時系列座標)、つまりa個の座標データSD11、SD12、…SD1aを含み、次のストロークに対応するストロークデータSD2は、同様にして、b個の座標データSD21、SD22、…SD2bを含む。手書き文字「S」のに対応するストロークデータSD3は、c個の座標データSD31、SD32、…SD3cを含む。なお、1つのストロークに対応する座標データの数は、等時間間隔でリアルタイムにサンプリングされるので、ストロークが手書きされる時間によって異なる。すなわち、ストロークが手書きされる時間が長いほど、座標データの数は増加する。
ストロークデータ中の座標データは、ストロークの軌跡上の1点に対応するX座標及びY座標を示す。例えば、座標データSD11は、最初のストロークの始点座標(X11,Y11)を示し、座標データSD1aは、最初のストロークの終点座標(X1a,Y1a)を示す。
手書き文書は、イメージまたは文字認識結果ではなく、時系列のストロークデータの集合として記憶されるので、手書き文字の言語に依存せずに手書き文字を扱うことができる。よって、本実施形態の手書き文書(時系列情報200)の構造は、使用言語の異なる世界中の様々な国で共通に使用できる。
また、時系列情報200には、ストロークデータ毎に、ストロークが塗り潰し部分であるか否かを示すラベル201を付加する。ストロークが塗り潰し部分であるか否かは、後述する塗り潰し判定処理によって判定される。塗り潰し判定処理によって、塗り潰し部分のストロークと判定されたストロークには、面ストロークを示すラベル「面」を付加し、塗り潰し部分のストロークではないと判定されたストロークには、線ストロークを示すラベル「線」を付加する。
また、1つの塗り潰し部分が複数のストロークで表されている場合には、ストローク毎に付加されたラベルをマージして、複数のストロークに対応するラベルを付加することもできる。例えば、図4は、塗り潰し部分を表す2つのストロークに対して、マージしたラベル202(ラベル「面」)を付加した例を示す。
マージ対象となるストロークは、例えば図4に示すストロークSD1,SD2のように、少なくとも何れか1つが面ストロークであり、それぞれのストロークデータに含まれる座標データの一部が重複するストロークとすることができる。この場合、3つ以上のストロークをマージしてラベル「面」を付加しても良いし、面ストロークと線ストロークの組み合わせをマージしてラベル「面」を付加しても良い。
また、座標データが重複する複数のストロークをマージするだけでなく、座標データが近接する複数のストロークをマージしても良い。例えば、塗り潰した図形(例えば、黒四角形)を手書きする場合、図形の輪郭線を手書きした後に、輪郭線内を塗り潰すことがある。こうした場合、塗り潰した図形は、輪郭線を表すストロークと、塗り潰し部分に対応するストロークとから構成されるため、輪郭線と塗り潰し部分のストロークをマージしてラベル「面」を付加する。なお、近接するストロークの判別は、例えば2つのストロークの座標データが予め決められた一定距離内(一致している場合を含む)にあり、この一定距離内にある座標データが予め決められた数以上ある場合に、ストロークが近接していると判別する。
図5は、タブレットコンピュータ10のシステム構成を示す。
タブレットコンピュータ10は、図5に示すように、CPU101、システムコントローラ102、主メモリ103、グラフィクスコントローラ104、BIOS−ROM105、不揮発性メモリ106、無線通信デバイス107、エンベデッドコントローラ(EC)108等を備える。
CPU101は、タブレットコンピュータ10内の各種モジュールの動作を制御するプロセッサである。CPU101は、ストレージデバイスである不揮発性メモリ106から主メモリ103にロードされる各種ソフトウェアを実行する。これらソフトウェアには、オペレーティングシステム(OS)103a、及び各種アプリケーションプログラムが含まれている。アプリケーションプログラムには、手書き入力アプリケーションプログラム103bが含まれている。手書き入力アプリケーションプログラム103bは、上述の手書き文書を作成及び表示する機能、手書き文書を編集する機能、筆跡検索機能、及び認識機能等を有している。
また、CPU101は、BIOS−ROM105に格納された基本入出力システム(BIOS)も実行する。BIOSは、ハードウェア制御のためのプログラムである。
システムコントローラ102は、CPU101のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ102には、主メモリ103をアクセス制御するメモリコントローラも内蔵されている。また、システムコントローラ102は、シリアルバスなどを介してグラフィクスコントローラ104との通信を実行する機能も有している。
グラフィクスコントローラ104は、本タブレットコンピュータ10のディスプレイモニタとして使用されるLCD17Aを制御する表示コントローラである。このグラフィクスコントローラ104によって生成される表示信号はLCD17Aに送られる。LCD17Aは、表示信号に基づいて画面イメージを表示する。このLCD17A上にはタッチパネル17B及びデジタイザ17Cが配置されている。タッチパネル17Bは、LCD17Aの画面上で入力を行うための静電容量式のポインティングデバイスである。指が接触される画面上の接触位置及び接触位置の動き等はタッチパネル17Bによって検出される。デジタイザ17CはLCD17Aの画面上で入力を行うための電磁誘導式のポインティングデバイスである。ペン100が接触される画面上の接触位置及び接触位置の動き等はデジタイザ17Cによって検出される。
無線通信デバイス107は、無線LANまたは3G移動通信などの無線通信を実行するように構成されたデバイスである。EC108は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。EC108は、ユーザによるパワーボタンの操作に応じて本タブレットコンピュータ10を電源オンまたは電源オフする機能を有している。
次に、図6を参照して、手書き入力アプリケーションプログラム103bの機能構成について説明する。
手書き入力アプリケーションプログラム103bは、ペン軌跡表示処理部301、時系列情報生成部302、編集処理部303、ページ保存処理部304、ページ取得処理部305、手書き文書表示処理部306、クエリストローク入力部307、検索処理部308、塗り潰し判定部309等の機能を備える。
手書き入力アプリケーションプログラム103bは、タッチスクリーンディスプレイ17を用いて入力されるストロークデータを使用することによって、手書き文書(手書きデータ)の作成、表示、編集等を行う。タッチスクリーンディスプレイ17は、「タッチ」、「移動(スライド)」、「リリース」等のイベントの発生を検出するように構成されている。「タッチ」は、画面上に外部オブジェクトが接触したことを示すイベントである。「移動(スライド)」は、画面上に外部オブジェクトが接触されている間に接触位置が移動されたことを示すイベントである。「リリース」は、画面から外部オブジェクトが離されたことを示すイベントである。
ペン軌跡表示処理部301及び時系列情報生成部302は、タッチスクリーンディスプレイ17によって発生される「タッチ」または「移動(スライド)」のイベントを受信し、これによって手書き入力操作を検出する。「タッチ」イベントには、接触位置の座標データが含まれている。「移動(スライド)」イベントにも、移動先の接触位置の座標データが含まれている。従って、ペン軌跡表示処理部301及び時系列情報生成部302は、タッチスクリーンディスプレイ17から、接触位置の動きの軌跡に対応する座標データ列を受信することができる。
ペン軌跡表示処理部301は、タッチスクリーンディスプレイ17から座標データ列を受信し、この座標データ列に基づいて、ペン100等を使用した手書き入力操作によって入力される複数のストロークの軌跡をタッチスクリーンディスプレイ17のLCD17Aの画面に表示する。このペン軌跡表示処理部301により、画面にペン100が接触している間のペン100の軌跡、つまり各ストロークの軌跡がLCD17Aの画面に描かれる。
時系列情報生成部302は、ユーザにより手書き入力操作がされた場合に、タッチスクリーンディスプレイ17から出力される座標データ列を受信し、この座標データ列に基づいて、ストロークデータ(時系列情報)を生成する。ストロークデータ(時系列情報)は、作業メモリ401に一時保存してもよい。
ページ保存処理部304は、複数のストロークに対応する複数のストロークデータを記憶媒体402に保存する。記憶媒体402は、上述したように、タブレットコンピュータ10内のストレージデバイス、パーソナルコンピュータ1内のストレージデバイス、サーバ2のストレージデバイスの何れであってもよい。
ページ取得処理部305は、記憶媒体402に記憶されている手書き文書を読み出す。読み出された手書き文書は手書き文書表示処理部306に送られる。手書き文書表示処理部306は、手書き文書を解析し、この解析結果に基づいて、手書き文書内の複数のストロークデータによって示される複数のストローク(軌跡)を画面に手書きページとして表示する。
編集処理部303は、現在表示中の手書き文書(手書きページ)を編集するための処理を実行する。すなわち、編集処理部303は、タッチスクリーンディスプレイ17上でユーザによって行われる編集操作に応じて、表示されている複数のストローク内の1以上のストロークを削除または移動等するための編集処理を実行する。さらに、編集処理部303は、編集処理の結果を表示中の手書き文書に反映するためにこの手書き文書を更新する。
ユーザは、「消しゴム」ツール等を使用して、表示されている複数のストローク内の任意のストロークを削除することができる。また、ユーザは、画面上の任意の部分を丸または四角によって囲むための「範囲指定」ツールを使用して、表示されている手書きページ内の任意の部分を範囲指定することができる。
塗り潰し判定部309は、時系列情報生成部302により生成されたストロークデータ(時系列情報)に対して塗り潰し判定処理を実行して、ストロークが塗り潰し部分を表すストローク(面ストローク)であるか否かを判定する。塗り潰し判定部309は、各ストロークについての判定結果に応じて、ページ保存処理部304によって記憶媒体402に記憶されたストロークデータ(時系列情報200)に対して、ストロークが塗り潰し部分であるか否かを示すラベル201を付加する。また、塗り潰し判定部309は、筆跡検索のために入力されたクエリストロークに対しても、同様にして塗り潰し判定処理を実行して、塗り潰し部分を表すストロークを判定する。
クエリストローク入力部307は、検索処理部308による検索処理(筆跡検索)において、検索キーとして使用されるクエリストロークを入力し、クエリストロークを用いた検索処理を検索処理部308に実行させる。クエリストロークとしては、手書き入力アプリケーションプログラム103bによって表示される筆跡検索画面に、ユーザの手書き入力操作によって入力される1以上のストロークを使用することができる。また、ユーザによる手書き入力操作によって、手書きページ内から選択される1以上のストロークを、クエリストロークとして使用することもできる。また、クエリストローク入力部307は、クエリストロークに対する塗り潰し判定部309による判定結果に応じて、クエリストローク中の塗り潰し部分を指定して、検索処理部308により検索処理を実行させる。
検索処理部308は、筆跡検索を実行するために、ストローク検索部310、図検索部311、ストローク分割部312、及び外接ストローク作成部313を備える。
ストローク検索部310は、クエリストローク入力部307によって入力されるクエリストロークを使用して筆跡検索を実行する。ストローク検索部310は、塗り潰し判定部309によって線ストロークとして判定されたストロークを対象として、クエリストロークに対応するストローク群を手書き文書から検索する筆跡検索を実行する。例えば、ストローク検索部310は、クエリストロークの特徴量と類似する特徴量を有するストローク群を手書き文書から検索してもよい。クエリストロークは、1以上のストロークを含み、検索される各ストローク群も1以上のストロークを含む。上述したように、各ストロークの特徴量としては、ストロークの形状、ストロークの筆画方向、ストロークの傾斜、等を使用しても良い。
ストローク間の類似度の計算方法としては、様々な方法を使用することができる。例えばストローク検索部310は、各ストロークをベクトルとして扱って類似度を計算する。この場合、全てのストロークが同じ点の数(サンプル数)を有するように、各ストロークを元のストロークデータに基づいて再サンプリングしてもよい。
さらに、各ストロークの相対的な位置関係を正規化するために、各ストロークのベクトルを差分ベクトルに変換してもよい。例えば、あるストロークが(x1,y1)、(x2,y2)、(x3,y3)という座標データ列を含む場合、この座標データ列を(0,0)、(x2−x1,y2−y1)、(x3−x1,y3−y1)という座標データ列に変換してもよい。このような変換により全てのストロークを原点から書いたストロークとみなすことができるので、各ストロークが書かれた手書きページ内の位置に関係なく、筆跡検索を行うことが可能となる。なお、座標データ列の変換には、各ストロークの相対的な位置関係を正規化することが可能な任意の変換方法を使用し得る。
またさらに、各ストロークの大きさを正規化するために、個々のストロークの最大幅または最大高さで個々のストロークのベクトル座標を割ってもよい。
そして、比較対象のベクトル(差分ベクトル)同士の類似度を計算するために、それら比較対象のベクトル(差分ベクトル)間の内積を比較対象のベクトル(差分ベクトル)間の類似度として算出してもよい。
また、計算の負荷を軽減するために、手書き文書内の各ストロークの特徴量を表す特徴量データ(特徴量ベクトル)を予め算出し、この特徴量データをデータベースに蓄積しても良い。この場合、ストローク検索部310は、クエリストロークの特徴量を算出し、クエリストロークの特徴量とデータベース内の各ストロークの特徴量データとを使用して、クエリストロークの特徴量に類似する特徴量を有するストローク群を検索することができる。また、計算量を削減するために、特徴量ベクトルの次元を削減するための処理を行っても良い。
一般には、クエリストロークは1ストロークではなく、複数のストロークを含むストローク列である場合が多い。この場合、クエリストローク群(クエリストローク列)に含まれるストローク毎に、このストロークと手書き文書内の複数のストロークそれぞれとの間の類似度が求められる。そして、クエリストローク列の筆順を考慮して、このクエリストローク列に類似するクエリストローク列が手書き文書から検索される。ストローク列間の類似度の算出においては、DP(Dynamic Programming)マッチングを使用してもよい。
筆跡検索では、前述したように、ストロークをベクトルとして扱うことによって類似度を計算する。クエリストロークと手書き文書中のストロークとが、それぞれ同じ文字を表す場合には、ストロークをベクトルとして扱って類似度を計算すると高い類似度を示す。これに対して、クエリストロークと手書き文書中のストロークとが、黒丸や黒四角など塗り潰した図形等を表す場合には、見かけ上、同等であったとしても高い類似度を示さない場合が多い。すなわち、塗り潰し部分を手書き入力する場合、その都度、ストロークの長さや向きが異なったり、複数のストロークを組み合わせたりするなど、ストロークが安定しない。このため、見かけ上、同じ塗り潰しを表すストロークであっても、ストロークを示すベクトルが異なるため、高い類似度を示さなくなる。
このため、本実施形態のストローク検索部310は、塗り潰し判定部309によって面ストロークとして判定されなかったストローク、すなわち線ストロークとして判定されたストロークを対象として、クエリストロークに対応するストローク群を手書き文書から検索する筆跡検索を実行する。ストローク検索部310は、クエリストローク(検索キー)に塗り潰し部分に対応するストロークが含まれる場合に、クエリストロークのうち塗り潰し部分に対応するストロークを除くストロークを用いて、手書き文書から、検索キーに対応するストロークに関する情報を取得することができる。塗り潰し判定部309により塗り潰し部分と判定されたストローク(面ストローク)については、図検索部311により検索処理をすることができる。
図検索部311は、クエリストローク入力部307によって入力されるクエリストロークを使用して筆跡検索を実行する。図検索部311は、塗り潰し判定部309によって面ストロークとして判定されたストロークを対象として、クエリストロークに対応するストローク群を手書き文書から検索する筆跡検索を実行する。図検索部311は、ストローク検索部310によるストロークをベクトルとして扱い、ストローク間の類似度を算出する方法とは異なる方法により、塗り潰し部分の検索を実行する。
ストローク分割部312は、手書き文書中のストロークあるいはクエリストロークについて、1つのストロークを塗り潰し部分を表す面ストロークと、面ストローク以外の線ストロークとに分割する。各ストロークを面ストロークと線ストロークとに分割することにより、ストローク検索部310と図検索部311によりそれぞれに対応する検索処理を実行することができる。
外接ストローク作成部313は、塗り潰し判定部309によって面ストロークとして判定されたストローク、すなわち塗り潰し部分を表すストロークを、外接するストロークに変換する。例えば、黒丸図形を表すストロークを、黒丸図形に外接するストロークに変換する。この場合、外接するストロークは、塗り潰されていない丸図形に置き換えられる。これにより、面ストロークが線ストロークに変換されるため、ストローク検索部310による検索処理が可能となる。
次に、本実施形態におけるタブレットコンピュータ10の動作について説明する。
本実施形態における手書き入力アプリケーションプログラム103bは、筆跡検索のために入力されるクエリストロークに、黒丸や黒四角などの塗り潰し部分を表すストロークが含まれる場合に、この塗り潰し部分について、塗り潰し部分以外のストロークとは異なる処理をすることで、手書き文書を効率よく検索することができるようにする。
まず、図7に示すフローチャートを参照しながら、実施形態における手書き文書の作成手順の一例について説明する。
ユーザがペン100を用いてタッチスクリーンディスプレイ17上で手書き入力操作をすると、ペン軌跡表示処理部301及び時系列情報生成部302は、タッチスクリーンディスプレイ17から、接触位置の動きの軌跡に対応する座標データ列を入力する(ステップA1)。
ペン軌跡表示処理部301は、タッチスクリーンディスプレイ17から入力する座標データ列に基づいて、手書き入力されたストロークの軌跡をタッチスクリーンディスプレイ17(LCD17A)に表示する。また、時系列情報生成部302は、タッチスクリーンディスプレイ17から入力する座標データ列に基づいて、ストロークデータ(時系列情報)を生成する(ステップA2)。例えば、時系列情報生成部302は、入力する座標データを一定時間間隔でサンプリングして、サンプル点(座標データ)を記録することでベクトルデータに変換する。入力されるストロークデータの例としては、文字、グラフ、図、記号などがある。ページ保存処理部304は、図4に示すように、複数のストロークに対応する複数のストロークデータを、手書き文書(手書きページ)として記憶媒体402に保存する。
一方、塗り潰し判定部309は、系列情報生成部302により生成されたストロークデータ(時系列情報)に対して塗り潰し判定処理を実行する(ステップA3)。塗り潰し判定処理では、ストロークが塗り潰し部分を表すストローク(面ストローク)であるか否かを判定する。なお、塗り潰し判定処理は、1ストローク分のストロークデータが生成される毎に実行しても良いし、1ページ分など複数のストロークデータについてまとめて実行しても良い。例えば、ユーザによる指示に応じてストロークデータの保存処理をする時に、1ページ分毎に塗り潰し判定処理を実行する。以下では、1ページ毎に塗り潰し判定処理を実行するものとして説明する。
図8は、実施形態における塗り潰し判定処理の一例を示すフローチャートである。
まず、塗り潰し判定部309は、時系列情報生成部302により生成された複数のストロークデータから、判定対象とするストロークデータを選択する(ステップB1)。なお、ステップB2に示すストローク分割処理は、必須の処理ではないので、詳細については後述する。
次に、塗り潰し判定部309は、ストロークデータをもとに、ストロークに対して外接図形を設定し(ステップB3)、外接図形の面積を算出する(ステップB4)。
図9に示すストローク例500は、例えば四角形に塗り潰すために入力されたストローク501と、ストローク501に対して設定された外接図形502の例を示している。外接図形502は、ストローク501の外周に沿って、ストローク501から一定の距離に形成する。ストローク501の場合では、ストローク501が閉領域を形成していないため、ストローク501に沿って外接図形を設定した結果、図9に示すように、ストローク501を囲む外接図形502が形成される。
図10に示すストローク例510は、例えば円形に塗り潰すために入力されたストローク511と、ストローク511に対して設定された外接図形512の例を示している。ストローク511は、閉領域を形成しているため、外周を形成するストロークに沿った外接図形512が設定される。
図11に示すストローク例520は、一般的な文字等を表すストローク521と、ストローク521に対して設定された外接図形522の例を示している。ストローク例520に示すように、塗り潰し部分を表さないストローク521の場合では、ストローク521に沿った外接図形522が設定される。
次に、塗り潰し判定部309は、ストロークに対して設定した外接図形の面積が、予め設定された面積に対する第1閾値より大きいかを判別する。第1閾値は、塗り潰しを意図して入力されたストロークであるか、一般の文字や図形を意図して入力されたストロークであるかを、ストロークに対して設定した外接図形の面積をもとに判別するために決められている。
例えば、図9と図10に示すストローク501,511は、塗り潰しを意図して入力されたストロークである。従って、ストローク501,511に対応する外接図形502,512の面積は、比較的大きくなる。これに対して、図11に示す一般的なストローク521に対して設定された外接図形522の面積は、外接図形502,512と異なり、比較的小さくなる。
塗り潰し判定部309は、外接図形の面積が第1閾値より大きくない場合(ステップB5、No)、判定対象とするストロークが塗り潰しを表すストロークではないと判定する(ステップB10)。
一方、塗り潰し判定部309は、外接図形の面積が第1閾値より大きい場合(ステップB5、Yes)、外接図形内のストロークの密度を算出する(ステップB6)。例えば、ストロークデータがサンプル点によるベクトルデータに変換されているため、塗り潰し判定部309は、判別対象とするストロークのサンプル点の個数を数えて、外接図形の面積で割り、単位面積当たりのサンプル点の個数を密度とする。
次に、塗り潰し判定部309は、ストロークの密度が、予め設定されたストロークの密度に対する第2閾値より大きいかを判別する。第2閾値は、塗り潰しを意図して入力されたストロークであるか、一般の文字や図形を意図して入力されたストロークであるかを、外接図形内のストロークの面積をもとに判別するために決められている。
塗り潰し判定部309は、ストロークの密度が第2閾値より大きくない場合(ステップB7、No)、判定対象とするストロークが塗り潰しを表すストロークではないと判定する(ステップB10)。
一方、塗り潰し判定部309は、ストロークの密度が第2閾値より大きい場合(ステップB7、Yes)、判定対象とするストロークが塗り潰し部分を表すストロークであると判定する(ステップB8)。なお、ステップB9に示すストローク作成処理は、必須の処理ではないので、詳細については後述する。
塗り潰し判定部309は、全ストロークの判定を終了したか判断し、判定が終了していないストロークデータがあれば(ステップB11、No)、他のストロークデータを判定対象として選択して(ステップB1)、前述と同様の処理を実行する(ステップB2〜B11)。全てのストロークについての判定が終了した場合(ステップB11、Yes)、塗り潰し判定部309は、塗り潰し判定処理を終了する。
なお、前述した説明では、ストローク501,511,521に対して外接図形502,512,522を設定しているが、外接矩形を設定するようにしても良い。例えば、塗り潰し判定部309は、ストロークデータに含まれる座標データ(サンプル点)のx座標とy座標のそれぞれについて最大値と最小値とを求め、外接矩形を設定することができる。
図9に示すストローク例505には、ストローク501に対して設定した外接矩形503を示している。同様にして、図10に示すストローク例515は、ストローク511に設定した外接矩形513を示し、図11に示すストローク例525は、ストローク521に設定した外接矩形523を示している。
図11に示す外接矩形523は、第1閾値よりも面積が大きくなるが、ストローク密度が小さくなるため、外接図形522を設定した場合と同様にして、塗り潰し部分を表すストロークではないと判定される。
ページ保存処理部304は、塗り潰し判定部309による塗り潰し判定処理が終了すると、ストロークデータ(時系列情報200)に対してストロークが塗り潰し部分であるか否かを示すラベル201を付加して、ストロークデータを記憶媒体402に記録する(ステップA4)。すなわち、ページ保存処理部304は、塗り潰し部分のストロークと判定されたストロークには、面ストロークを示すラベル「面」を付加し、塗り潰し部分のストロークではないと判定されたストロークには、線ストロークを示すラベル「線」を付加する(図4参照)。
さらに、ページ保存処理部304は、ストローク毎のラベル201の他に、塗り潰し部分を表す複数のストロークに対して、マージしたラベル202(ラベル「面」)を付加することができる。例えば、塗り潰し判定部309は、複数のストロークのうち、少なくとも何れか1つが面ストロークであり、それぞれのストロークデータに含まれる座標データの一部が重複する場合に、該当する複数のストロークに対して、マージしたラベルを付加可能であると判定する。ページ保存処理部304は、塗り潰し判定部309による判定結果に応じて、複数のストロークに対して、マージしたラベル「面」を付加する。
図12は、複数のストロークにより塗り潰しを表す図形が手書きされる例を示している。図12では、2つのストローク530,531が重ね合わされることにより、黒四角の図形を表すストローク532が手書きされている。ストローク530は、上下にストローク方向が繰り返し変更されたパターンを有し、ストローク531は、左右にストローク方向が繰り返し変更されたパターンを有している。
このように、塗り潰した図形等を作成するために重ね合わされた2つのストローク530,531については、マージしたラベル202を付加する。
また、図12に示すように、複数の面ストロークが重ね合わされた場合だけでなく、面ストロークと線ストロークとが重ね合わされて手書きされた場合にマージしたラベル202を付加することもできる。
図13は、線ストロークに相当するストローク540と、面ストロークに相当する複数のストローク541により塗り潰しを表す図形542が手書きされる例を示している。図13では、図形の輪郭線(例えば、星形)が手書きされた後、輪郭線内を塗り潰すように複数のストロークが手書き入力されている。
塗り潰し判定部309は、ストローク540,541について、2つのストロークの座標データが予め決められた一定距離内(一致している場合を含む)にあり、この一定距離内にある座標データが予め決められた数以上ある場合に、ストローク540,541が塗り潰しを表す図形542を構成すると判定する。ページ保存処理部304は、ストローク540,541に対して、マージしたラベル「面」を付加する。これにより、線ストロークのストローク540についても、面ストロークと同様に扱うことができる。
次に、本実施形態における第1の検索処理について、図14に示すフローチャートを参照しながら説明する。
図15は、手書き入力アプリケーションプログラム103bによってユーザに提示される筆跡検索画面600の一例を示す図である。
筆跡検索画面600は、検索キー入力領域551、検索ボタン551A、クリアボタン551Bを表示する。検索キー入力領域551は、検索キーとすべきストローク(クエリストローク)を手書きするための入力領域である。検索ボタン551Aは、筆跡検索処理の実行を指示するためのボタンである。クリアボタン551Bは、検索キー入力領域551に手書きされた文字列または図形の削除(クリア)を指示するためのボタンである。
筆跡検索画面600は、さらに、複数の手書きページサムネイル601を表示してもよい。図15の例においては、9個の手書き文書それぞれに対応する9個の手書きページサムネイル601が表示されている。
ここでは、図16に示すように、検索キー入力領域551に例えば塗り潰し図形を表すストロークと「Subject」の文字列を表すストロークとがクエリストロークとして入力されている状態で、検索ボタン551A上で行われるジェスチャ(例えばタップジェスチャ等)が検出されたものとする。手書き入力アプリケーションプログラム103bは、クエリストロークに特徴量が類似するストローク群を、例えば9個の手書きページサムネイル601に対応する手書き文書から検索するための筆跡検索を開始する。
塗り潰し判定部309は、時系列情報生成部302によりクエリストロークのストロークデータが生成されると(ステップC1)、クエリストローク中の各ストロークについて塗り潰し処理を実行し、塗り潰し部分を表す面ストロークと、その他の線ストロークとに判定する(ステップC2)。塗り潰し処理は、前述と同様に実行するものとして詳細な説明を省略する(図8に示すフローチャート参照)。
クエリストローク入力部307は、クエリストロークデータを入力して、このクエリストロークデータを検索キーとする検索処理を検索処理部308に実行させる。また、クエリストローク入力部307は、塗り潰し判定部309により判定された、クエリストローク中の塗り潰し部分を指定する。
検索処理部308のストローク検索部310は、クエリストロークに含まれる塗り潰し部分(面ストローク)を除外したストローク(線ストローク)に該当するストローク群、すなわち塗り潰し部分を除外したストロークの特徴量との類似度が予め設定された判定基準より高いストローク群を検索対象とする手書き文書から検索する(ステップC3)。ストロークの検索は、例えば、ストローク単位で、ベクトル同士の類似度を求め、複数のストロークのクエリのためにDPマッチングによりクエリとマッチするストロークを検索すればよい。また、検索処理部308は、手書き文書から検索されたストローク群を筆跡検索画面600において表示する(ステップC5)。なお、図14に示すステップC4の処理については後述する。
図16に示す筆跡検索画面600には、類似度が判定基準より高いクエリストロークを含む手書き文書の手書きページサムネイルが検索結果として表示される。図16においては、9個の手書きページのうち5個の手書きページからクエリストロークに対応するストローク群が検索された場合について示している。5個の手書きページサムネイルでは、クエリストロークに対応するストローク群を強調表示する。強調表示としては、例えば検索されたストローク群に矩形枠602を付加したり、検索されたストローク群の表示色を他のストロークと異なる色(例えば、赤色)にしたり、ストローク群の表示形態を反転表示などの他の形態にしたりすることができる。
さらに、筆跡検索画面600から手書きページサムネイルの1つがユーザによって選択された場合、検索処理部308は、図17に示すように、選択された手書きページサムネイル601に対応する手書きページを、通常のサイズで筆跡検索画面600に表示する。図17に示す例では、検索キー入力領域551に入力された文字列「Subject」を表すクエリストロークをもとに検索した結果、ストローク群602A,602B,602Cが検索されたことを示している。ストローク群602A,602Bには、それぞれ左側に塗り潰し部分を表すストローク605A,605B,605Cが存在しているが、この塗り潰し部分を除外して検索が実行される。このため、ストローク605A,605Bの影響を受けずに、文字列「Subject」を表すクエリストロークに該当するストローク群602A,602Bを精度良く検索することができる。また、塗り潰し部分のストロークは、文字等を表すストロークよりも長いことが多いため、ストローク間の類似度計算に要する時間が、文字のストローク間の類似度計算よりも比較的長くなる。しかし、塗り潰し部分のストロークを除外して検索(類似度計算)をすることで、検索処理の速度を向上させることができる。
なお、前述した検索処理では、クエリストロークに含まれる塗り潰し部分(面ストローク)を除外して検索をしているが、塗り潰し部分(面ストローク)を利用して、検索結果とするストローク群を絞り込むことができる。
すなわち、ストローク検索部310は、図14に示すステップC3の処理によって検索されたストローク群を対象として、塗り潰し部分のストロークを含めて検索する(ステップC4)。
例えば、検索キー入力領域551に入力された文字列「Subject」を表すクエリストロークをもとに検索した結果、図17に示すように、ストローク群602A,602B,602Cが検索される。検索キー入力領域551において、塗り潰し部分と判定されたストロークに続いて、検索に使用した「Subject」を表すストロークが存在しているため、ストローク検索部310は、塗り潰し部分が前に存在するストローク群を、ストローク群602A,602B,602Cから選択する。図17に示す例では、ストローク群602A,602Bの前に、それぞれ塗り潰し部分605A,605Bが存在するため、検索結果としてストローク群602A,602Bを選択する。ストローク群602Cは、クエリストローク中の塗り潰し部分を除くストロークにのみ対応するため選択されない。
このように、クエリストローク中の塗り潰し部分を利用することにより、より精度良く検索処理を実行することができる。また、本実施形態では、塗り潰し部分を表すストロークについて、例えば黒四角あるいは黒丸のように、文字あるいは図形として認識しないので、認識処理に要する処理付加を増大させることなく、塗り潰し部分を利用した検索処理が可能となる。
次に、本実施形態における第2の検索処理について、図18に示すフローチャートを参照しながら説明する。
第1の検索処理では、塗り潰し部分のストロークについては、クエリストロークと手書き文書中のストロークとの類似度を算出していないが、第2の検索処理では、塗り潰し部分のストロークについても、文書中のストロークとの類似関係を示す評価値を算出して検索処理に反映させる。
図18に示すステップD1,D2の処理は、図14に示すステップC1,C2と同様に実行されるものとして詳細な説明を省略する。
ストローク検索部310は、クエリストローク中の塗り潰し部分と判定されないストローク(線ストローク)については、第1の検索処理と同様にして、ストローク検索を実行する。すなわち、手書き文書等の線ストロークを示すラベルが付加されたストロークを対象にして、ストローク検索を行う(ステップD4)。
一方、図検索部311は、クエリストローク中の塗り潰し部分と判定されたストローク(面ストローク)については、このストロークを図形化して、手書き文書中のストロークとの類似関係を示す評価値を算出する(ステップD5)。以下、この処理を図検索と称する。
図19は、図検索の処理内容を説明するための図である。図19には、クエリストロークの面ストローク700と、手書き文書中の面ストローク710を示している。図検索部311は、クエリストロークの面ストローク700と、検索対象とする手書き文書中の面ストローク710のそれぞれについて外接正方形701,711をそれぞれ設定し、外接正方形701,711が同じサイズとなるように、面ストローク700,710を拡大あるいは縮小する。図19では、外接正方形701を縮小することにより外接正方形702を求め、外接正方形711を縮小することにより外接正方形702と同じサイズの外接正方形712を求めている。
次に、図検索部311は、面ストローク700を縮小した面ストローク703と、面ストローク710を拡大した面ストローク713のそれぞれについて外接図形を算出し、この外接図形の内側を完全に塗潰したそれぞれの図形との類似関係を算出する。例えば、図検索部311は、比較する図形どうしを重ね合わせ、重複する部分の面積の大きさの割合をスコアとして評価すればよい。
図19には、面ストローク703の外接図形に対応する図形715(クエリ図形A)と、面ストローク713の外接図形に対応する図形705(検索対象図形B)とを重ね合わせた状態を示している。図検索部311は、クエリ図形Aの面積をSa、検索対象図形Bの面積をSbとし、クエリ図形Aと検索対象図形Bとを重ね合わせた時の重複部分の面積をSabとしたとき、スコアSをS=2(Sab)/(Sa+Sb)で求める。スコアSが大きいほど、クエリ図形Aと検索対象図形Bとは類似していると評価することができる。このスコアSが、クエリ図形Aで検索したときの検索対象図形Bの一致度になる。もしクエリストローク中に塗り潰し部分が複数ある場合には、図検索部311は、それぞれの塗り潰し部分について前述した処理を繰り返す。
こうして、クエリストロークに含まれる塗り潰し部分とそれ以外の部分に分けて、ストローク検索(ステップD4)と図検索(ステップD5)とを完了すると、ストローク検索部310は、それぞれの検索結果を併合する(ステップD6)。例えば、ストローク検索部310は、図検索において算出される評価値(スコアS)を、ストローク検索において算出される類似度に換算し、ストローク検索の場合と同様にして、ストロークが記述された順序に従い、DPマッチングを行う。これにより、記憶媒体402に手書き文書中のストロークの内、クエリストロークにマッチするストロークを検索することができる。
なお、クエリストローク(線ストローク)と手書き文書中のストロークとの類似度は、例えば(−1〜+1)の範囲で算出される。同じ形状の同じストローク方向のストローク同士では類似度が+1となり、同じ形状のストローク方向が正反対のストローク同士では類似度が−1となる。図検索では、例えばスコアSが0〜+1の範囲で算出される。この場合、図検索のスコアSをストローク検索の類似度0〜+1に換算する。
検索処理部308は、手書き文書から検索されたストローク群を、前述した第1の検索処理と同様にして筆跡検索画面600において表示する(ステップD7)。
このようにして、第2の検索処理では、クエリストロークとして塗り潰し部分を含むストロークが入力された場合だけでなく、塗り潰し部分のみのストロークが入力された場合であっても、検索処理をすることができる。また、線ストロークと面ストロークとが混在する図形についても検索することができる。例えば、フェルマータマーク、ト音記号、八分音符マークなど、線と点を組み合わせたマークや図形において、点が黒丸の塗り潰しによって手書きされた場合でも検索することができる。
次に、塗り潰し判定処理の応用例について説明する。
まず、図8のステップB2に示すストローク分割処理について説明する。
前述した塗り潰し部分の判定処理では、ストローク単位で判定するとしているが、ここでは、1本のストロークに塗り潰し部分とそれ以外の部分が含まれる場合に、塗り潰し部分とそれ以外の部分のサブストロークに分割する。
ストローク分割部312は、手書き文書の作成時に入力されたストローク、及び検索処理のために入力されたクエリストロークのストロークデータをもとに、サブストロークを生成する。
図20は、1本のストロークが手書き入力される様子を示している。図20は、四分音符を表すストロークが手書き入力される例を示しており、黒丸部分が先に入力されてから線部分が入力されている。
ストローク分割部312は、1本のストロークのストロークデータをもとに、サンプル点の最初からある程度大きなn個のサンプル点までを対象として外接図形(計算の簡単のため外接矩形でもよい)を設定し、外接図形内のストロークのサンプル点数と外接図形の面積をもとにサンプル点の密度(ストロークの密度)を求める。密度が閾値Thより大きい時に、さらにn(サンプル点数)を大きくし、密度が下がるまでnを大きくする。ストローク分割部312は、サンプル点の密度が閾値Th以下となる(あるいは密度が最大になる)ときのn個目のサンプル点においてストロークを分割して、サブストロークを生成する。
例えば、図20では、黒丸部分がストローク801,802,803に示すように手書き入力された例を示している。ストローク801,802,803には、それぞれ外接矩形811,812,813が設定される。外接矩形811,812,813は、塗り潰し部分のストロークに対して設定されているためサンプル点の密度が高くなる。その後、ストローク814に示すように棒部分が手書き入力されると、ストローク814に対する外接矩形814の面積が大きくなるためサンプル点密度が低くなる。最終的に四分音符を表すストローク805が入力されると、外接矩形815が設定されてサンプル点密度が最も低くなる。
図21は、手書きされるストロークのサンプル点数と、サンプル点密度との関係を示す図である。図21に示すように、四分音符の線部分が入力されることによりサンプル点密度が大きく下がる。ストローク分割部312は、図22に示すように、図20に示す1本のストローク805を、サブストローク805A,805Bの2本のストロークに分割する。
さらに、線部分のストロークが先に入力されてから黒丸部分が入力された場合に対応するため、ストロークデータの最後のサンプル点から前述のように外接図形を順次設定して、サンプル密度の変化を調べて、ストロークを分割するようにしても良い。
このようにして、ストローク分割部312によって、1本のストロークを塗り潰し部分のストローク(面ストローク)と、塗り潰し部分以外のストローク(線ストローク)とに分割することができる。サブストロークを他のストロークと同様に扱うことで、1本ストロークで塗り潰し部分とそれ以外の部分が混在する場合であっても、前述と同様の塗り潰し判定処理、第1の検索処理、第2の検索処理を実行することが可能となる。
次に、図8のステップB9に示すストローク作成処理について説明する。
ストローク作成処理では、塗り潰し部分と判定された面ストロークを、線ストロークに置き換える。外接ストローク作成部313は、塗り潰し部分と判定された面ストロークに対して外接図形を設定し、この外接図形を新たな線ストロークとする。
図23には、塗り潰し部分と判定された面ストローク900の一例を示している。外接ストローク作成部313は、面ストローク900に対して外接図形901を設定し、この外接図形901を表す線を線ストローク902に変換する。線ストローク902は、他の線ストロークと同様にして扱う。
このようにして、塗り潰し部分のストロークを外接図形に対応するストロークに置き換えることで、例えば黒丸の塗り潰しを表すストロークが白丸を表すストロークに置き換えられ、黒四角の塗り潰しを表すストロークが白四角を表すストロークに置き換えられる。従って、例えばクエリストロークとして白四角を表すストロークが入力された場合に、手書き文書の作成時に入力された黒四角の塗り潰し部分を検索することができる。また、面ストロークを線ストロークに置き換えることで、第2の検索処理において図検索が不要となる。
なお、図23に示す例では、面ストローク900を外接図形に対応するストロークに置き換えているが、外接図形に相当する図形を細線化することで線ストロークに置き換えることもできる。
図24には、塗り潰し部分と判定された面ストローク910の一例を示している。外接ストローク作成部313は、面ストローク910に対して外接図形911を設定し、この外接図形901に対して細線化処理することで線分912を生成する。線ストローク902は、線分912を線ストローク913に変換する。このように細線化処理を利用することで、面ストロークを線ストロークに置き換えることができる。
なお、本実施形態の手書き文書に対する各種処理はコンピュータプログラムによって実現することができるので、このコンピュータプログラムを格納したコンピュータ読み取り可能な記憶媒体を通じてこのコンピュータプログラムをコンピュータにインストールして実行するだけで、本実施形態と同様の効果を容易に実現することができる。
また、上述したように、本実施形態の筆跡検索処理の機能はタブレットコンピュータ10内のローカルなシステムによって実現しても良いが、1以上のサーバから構成されるサーバシステムであってもよい。あるいは、筆跡検索処理の機能の一部をタブレットコンピュータ10によって実行し、残りの部分を1以上のサーバによって実行するというシステム構成を利用してもよい。
また、本実施形態では、タブレットコンピュータを使用する場合を例示して説明したが、本実施形態の手書き文書処理機能は、通常のデスクトップパーソナルコンピュータに適用することもできる。この場合、手書き入力のための入力デバイスであるタブレット等をデスクトップパーソナルコンピュータに接続すれば良い。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。