(58)【調査した分野】(Int.Cl.,DB名)
前記処理手段は、前記1以上の第1ストロークの中の一部の第1ストロークの第1属性を、選択される第2ストローク列の属性を決定するために使用する請求項1に記載の電子機器。
前記選択される第2ストローク列を表示することは、前記1以上の第1ストロークの中の一部の第1ストロークの第1属性を、選択される第2ストローク列の属性を決定するために使用することを含む請求項6に記載の方法。
前記処理手段は、前記1以上の第1ストロークの中の一部の第1ストロークの第1属性を、選択される第2ストローク列の属性を決定するために使用する請求項11に記載のプログラム。
【発明を実施するための形態】
【0008】
以下、実施の形態について図面を参照して説明する。
【0009】
図1は、一実施形態に係る電子機器の外観を示す斜視図である。この電子機器は、例えば、ペン(スタイラス)または指によって手書き入力可能なペン・ベースの携帯型電子機器である。この電子機器は、タブレットコンピュータ、ノートブック型パーソナルコンピュータ、スマートフォン、PDA等として実現され得る。以下では、この電子機器がタブレットコンピュータ10として実現されている場合を想定する。タブレットコンピュータ10は、タブレットまたはスレートコンピュータとも称される携帯型電子機器である。タブレットコンピュータ10は、
図1に示すように、本体11とタッチスクリーンディスプレイ17とを備える。本体11は、薄い箱形の筐体を有している。タッチスクリーンディスプレイ17は、本体11の上面に重ね合わさるように取り付けられている。
【0010】
タッチスクリーンディスプレイ17には、フラットパネルディスプレイと、センサとが組み込まれている。センサは、フラットパネルディスプレイの画面上のペンまたは指の接触位置を検出するように構成されている。フラットパネルディスプレイは、例えば、液晶表示装置(LCD)であってもよい。センサとしては、例えば、静電容量方式のタッチパネル、電磁誘導方式のデジタイザなどを使用することができる。以下では、デジタイザとタッチパネルの2種類のセンサの双方がタッチスクリーンディスプレイ17に組み込まれている場合を想定する。
【0011】
デジタイザは、例えば、フラットパネルディスプレイの画面の下側に配置される。タッチパネルは、例えば、フラットパネルディスプレイの画面上に配置される。このタッチスクリーンディスプレイ17は、指を使用した画面に対するタッチ操作のみならず、ペン100を使用した画面に対するタッチ操作も検出することができる。ペン100は例えばデジタイザペン(電磁誘導ペン)であってもよい。ユーザは、外部オブジェクト(ペン100または指)を使用してタッチスクリーンディスプレイ17上で手書き入力操作を行うことができる。手書き入力操作中においては、画面上の外部オブジェクトの動きの軌跡、つまり手書きによって入力されるストロークの軌跡がリアルタイムに描画され、これによって各ストロークの軌跡が画面上に表示される。外部オブジェクトが画面に接触されている間の外部オブジェクトの動きの軌跡が1ストロークに相当する。手書きされた文字または図形などに対応する多数のストロークの集合、つまり多数の軌跡(筆跡)の集合が手書き文書を構成する。
【0012】
本実施形態では、この手書き文書は、イメージデータではなく、各ストロークの軌跡の座標列とストローク間の順序関係とを示す時系列情報として記憶媒体に保存される。この時系列情報の詳細は
図4を参照して後述するが、この時系列情報は、複数のストロークが手書きされた順を示し、かつ複数のストロークにそれぞれ対応する複数のストロークデータを含む。換言すれば、この時系列情報は、複数のストロークにそれぞれ対応する時系列のストロークデータの集合を意味する。各ストロークデータは、ある1つのストロークに対応し、このストロークの軌跡上の点それぞれに対応する座標データ系列(時系列座標)を含む。これらストロークデータの並びの順序は、ストロークそれぞれが手書きされた順序つまり筆順に相当する。
【0013】
タブレットコンピュータ10は、記憶媒体から既存の任意の時系列情報(手書き文書情報)を読み出し、この時系列情報に対応する手書き文書、つまりこの時系列情報によって示される複数のストロークそれぞれに対応する軌跡を画面上に表示することができる。さらに、タブレットコンピュータ10は編集機能を有している。この編集機能は、「消しゴム」ツール、「範囲指定」ツールおよび他の各種ツール等を用いたユーザによる編集操作に応じて、表示中の手書き文書内の任意のストロークまたは任意の手書き文字等を削除または移動することができる。さらに、この編集機能は、いくつかの手書き操作の履歴を取り消す機能も含んでいる。
【0014】
さらに、タブレットコンピュータ10は、筆跡補完(ストローク推薦)機能も有している。この筆跡補完機能は、多くの文字列を手書きによって容易に入力できるようにするために、ユーザの手書き入力操作を補助するための機能である。
【0015】
図2は、タブレットコンピュータ10と外部装置との連携動作の例を示している。タブレットコンピュータ10は、パーソナルコンピュータ1やクラウドと連携することができる。すなわち、タブレットコンピュータ10は、無線LANなどの無線通信デバイスを備えており、パーソナルコンピュータ1との無線通信を実行することができる。さらに、タブレットコンピュータ10は、インターネット上のサーバ2との通信を実行することもできる。サーバ2はオンラインストレージサービス、他の各種クラウドコンピューティングサービスを実行するサーバであってもよい。
【0016】
パーソナルコンピュータ1はハードディスクドライブ(HDD)のようなストレージデバイスを備えている。タブレットコンピュータ10は、時系列情報(手書き文書)をネットワーク越しにパーソナルコンピュータ1に送信して、パーソナルコンピュータ1のHDDに記録することができる(アップロード)。
【0017】
これにより、タブレットコンピュータ10内のストレージの容量が少ない場合でも、タブレットコンピュータ10が多数の時系列情報(手書き文書)あるいは大容量の時系列情報(手書き文書)を扱うことが可能となる。
【0018】
さらに、タブレットコンピュータ10は、パーソナルコンピュータ1のHDDに記録されている任意の1以上の手書き文書を読み出すことができる(ダウンロード)。タブレットコンピュータ10は、この読み出した手書き文書によって示されるストロークそれぞれの軌跡をタブレットコンピュータ10のタッチスクリーンディスプレイ17の画面に表示することができる。この場合、複数の時系列情報それぞれのページを縮小することによって得られるサムネイルの一覧をタッチスクリーンディスプレイ17の画面上に表示してもよいし、これらサムネイルから選ばれた1ページをタッチスクリーンディスプレイ17の画面上に通常サイズで表示してもよい。
【0019】
さらに、タブレットコンピュータ10が通信する先はパーソナルコンピュータ1ではなく、前述したように、ストレージサービスなどを提供するクラウド上のサーバ2であってよい。タブレットコンピュータ10は、手書き文書をネットワーク越しにサーバ2に送信して、サーバ2のストレージデバイス2Aに記録することができる(アップロード)。さらに、タブレットコンピュータ10は、サーバ2のストレージデバイス2Aに記録されている任意の手書き文書を読み出すことができる(ダウンロード)。タブレットコンピュータ10は、この読み出した手書き文書によって示されるストロークそれぞれの軌跡をタブレットコンピュータ10のタッチスクリーンディスプレイ17の画面に表示することができる。
【0020】
このように、本実施形態では、手書き文書が格納される記憶媒体は、タブレットコンピュータ10内のストレージデバイス、パーソナルコンピュータ1内のストレージデバイス、サーバ2のストレージデバイスのいずれであってもよい。
【0021】
次に、
図3および
図4を参照して、ユーザによって手書きされたストローク(文字、マーク、図形(線図)、表など)と手書き文書との関係について説明する。
図3は、ペン100などを使用してタッチスクリーンディスプレイ17上に手書きされる手書き文字列の例を示している。
【0022】
手書き文書では、一旦手書きされた文字や図形などの上に、さらに別の文字や図形などが手書きされるというケースが多い。
図3においては、「ABC」の手書き文字列が「A」、「B」、「C」の順番で手書きされ、この後に、手書きの矢印が、手書き文字「A」のすぐ近くに手書きされた場合が想定されている。
【0023】
手書き文字「A」は、ペン100などを使用して手書きされる2つのストローク(「∧」形状の軌跡、「−」形状の軌跡)によって、つまり2つの軌跡によって表現される。最初に手書きされる「∧」形状のペン100の軌跡は例えば等時間間隔でリアルタイムにサンプリングされ、これによって「∧」形状のストロークの時系列座標SD11、SD12、…SD1nが得られる。同様に、次に手書きされる「−」形状のペン100の軌跡も等時間間隔でリアルタイムにサンプリングされ、これによって「−」形状のストロークの時系列座標SD21、SD21、…SD2nが得られる。
【0024】
手書き文字「B」は、ペン100などを使用して手書きされた2つのストローク、つまり2つの軌跡によって表現される。手書き文字「C」は、ペン100などを使用して手書きされた1つのストローク、つまり1つの軌跡によって表現される。手書きの「矢印」は、ペン100などを使用して手書きされた2つのストローク、つまり2つの軌跡によって表現される。
【0025】
図4は、
図3の手書き文字列に対応する時系列情報200を示している。時系列情報200は、複数のストロークデータSD1、SD2、…、SD7を含む。時系列情報200内においては、これらストロークデータSD1、SD2、…、SD7は、筆跡順に、つまり複数のストロークが手書きされた順に時系列に並べられている。
【0026】
時系列情報200において、先頭の2つのストロークデータSD1、SD2は、手書き文字「A」の2つのストロークをそれぞれ示している。3番目と4番目のストロークデータSD3、SD4は、手書き文字「B」を構成する2つのストロークをそれぞれ示している。5番目のストロークデータSD5は、手書き文字「C」を構成する1つのストロークを示している。6番目と7番目のストロークデータSD6、SD7は、手書き「矢印」を構成する2つのストロークをそれぞれ示している。
【0027】
各ストロークデータは、1つのストロークに対応する座標データ系列(時系列座標)、つまり1つのストロークの軌跡上の複数の点それぞれに対応する複数の座標を含む。各ストロークデータにおいては、複数の座標はストロークが書かれた順に時系列に並べられている。例えば、手書き文字「A」に関しては、ストロークデータSD1は、手書き文字「A」の「∧」形状のストロークの軌跡上の点それぞれに対応する座標データ系列(時系列座標)、つまりn個の座標データSD11、SD12、…SD1nを含む。ストロークデータSD2は、手書き文字「A」の「−」形状のストロークの軌跡上の点それぞれに対応する座標データ系列、つまりn個の座標データSD21、SD22、…SD2nを含む。なお、座標データの数はストロークデータ毎に異なっていてもよい。すなわち、ペン100の軌跡は等時間間隔でリアルタイムにサンプリングされるので、ストロークの長さが長いほど、あるいはストロークの手書き速度が遅いほど、座標データの数は増加する。
【0028】
各座標データは、対応する軌跡内のある1点に対応するX座標およびY座標を示す。例えば、座標データSD11は、「∧」形状のストロークの始点のX座標(X11)およびY座標(Y11)を示す。SD1nは、「∧」形状のストロークの終点のX座標(X1n)およびY座標(Y1n)を示す。
【0029】
さらに、各座標データは、その座標に対応する点が手書きされた時点に対応するタイムスタンプ情報Tを含んでいてもよい。手書きされた時点は、絶対時間(例えば、年月日時分秒)またはある時点を基準とした相対時間のいずれであってもよい。例えば、各ストロークデータに、ストロークが書き始められた絶対時間(例えば、年月日時分秒)をタイムスタンプ情報として付加し、さらに、ストロークデータ内の各座標データに、絶対時間との差分を示す相対時間をタイムスタンプ情報Tとして付加してもよい。
【0030】
このように、各座標データにタイムスタンプ情報Tが追加された時系列情報を使用することにより、ストローク間の時間的関係をより精度よく表すことができる。
【0031】
さらに、各座標データには、筆圧を示す情報(Z)を追加してもよい。
【0032】
図4で説明したような構造を有する時系列情報200は、個々のストロークの筆跡だけでなく、ストローク間の時間的関係も表すことができる。したがって、この時系列情報200を使用することにより、
図3に示すようにたとえ手書き「矢印」の先端部が手書き文字「A」上に重ねてまたは手書き文字「A」に近接して書かれたとしても、手書き文字「A」と手書き「矢印」の先端部とを異なる文字または図形として扱うことが可能となる。なお、タイムスタンプ情報Tはオプション情報として使用してもよく、各々がタイムスタンプ情報Tを有さない複数のストロークデータを上述の時系列情報として使用しても良い。
【0033】
さらに、本実施形態では、前述したように、手書き文書は、イメージまたは文字認識結果ではなく、時系列のストロークデータの集合として構成されるので、手書き文字の言語に依存せずに手書き文字を扱うことができる。よって、本実施形態の時系列情報200の構造は、使用言語の異なる世界中の様々な国で共通に使用できる。
【0034】
図5は、タブレットコンピュータ10のシステム構成を示す図である。
【0035】
タブレットコンピュータ10は、
図5に示されるように、CPU101、システムコントローラ102、主メモリ103、グラフィクスコントローラ104、BIOS−ROM105、不揮発性メモリ106、無線通信デバイス107、エンベデッドコントローラ(EC)108等を備える。
【0036】
CPU101は、タブレットコンピュータ10内の各種モジュールの動作を制御するプロセッサである。CPU101は、ストレージデバイスである不揮発性メモリ106から主メモリ103にロードされる各種コンピュータプログラムを実行する。これらプログラムには、オペレーティングシステム(OS)201および各種アプリケーションプログラムが含まれている。アプリケーションプログラムには、手書きノートアプリケーションプログラム202が含まれている。この手書きノートアプリケーションプログラム202は、前述の手書き文書を作成および表示する機能、手書き文書を編集する機能および筆跡補完機能等を有している。
【0037】
また、CPU101は、BIOS−ROM105に格納された基本入出力システム(BIOS)も実行する。BIOSは、ハードウェア制御のためのプログラムである。
【0038】
システムコントローラ102は、CPU101のローカルバスと各種コンポーネントとの間を接続するデバイスである。システムコントローラ102には、主メモリ103をアクセス制御するメモリコントローラも内蔵されている。また、システムコントローラ102は、PCI EXPRESS規格のシリアルバスなどを介してグラフィクスコントローラ104との通信を実行する機能も有している。
【0039】
グラフィクスコントローラ104は、タブレットコンピュータ10のディスプレイモニタとして使用されるLCD17Aを制御する表示コントローラである。このグラフィクスコントローラ104によって生成される表示信号はLCD17Aに送られる。LCD17Aは、表示信号に基づいて画面イメージを表示する。このLCD17A上にはタッチパネル17Bおよびデジタイザ17Cが配置されている。タッチパネル17Bは、LCD17Aの画面上で入力を行うための静電容量式のポインティングデバイスである。指が接触される画面上の接触位置および接触位置の動き等はタッチパネル17Bによって検出される。デジタイザ17CはLCD17Aの画面上で入力を行うための電磁誘導式のポインティングデバイスである。ペン100が接触される画面上の接触位置および接触位置の動き等はデジタイザ17Cによって検出される。
【0040】
無線通信デバイス107は、無線LANまたは3G移動通信などの無線通信を実行するように構成されたデバイスである。EC108は、電力管理のためのエンベデッドコントローラを含むワンチップマイクロコンピュータである。EC108は、ユーザによるパワーボタンの操作に応じてタブレットコンピュータ10を電源オンまたは電源オフする機能を有している。
【0041】
次に、
図6を参照して、手書きノートアプリケーションプログラム202の機能構成について説明する。
【0042】
手書きノートアプリケーションプログラム202は、ペン設定部301、ペン軌跡表示処理部302、時系列情報生成部303、ページ保存処理部304、ページ取得処理部305、手書き文書表示処理部306、編集処理部307および筆跡補完処理部308等を備える。
【0043】
手書きノートアプリケーションプログラム202は、タッチスクリーンディスプレイ17を用いて入力されるストロークデータを使用することによって、手書き文書の作成、表示、編集等を行う。タッチスクリーンディスプレイ17は、「タッチ」、「移動(スライド)」、「リリース」等のイベントの発生を検出するように構成されている。「タッチ」は、画面上に外部オブジェクトが接触したことを示すイベントである。「移動(スライド)」は、画面上に外部オブジェクトが接触されている間に接触位置が移動されたことを示すイベントである。「リリース」は、画面から外部オブジェクトが離されたことを示すイベントである。
【0044】
手書きノートアプリケーションプログラム202は、手書き文書の作成、表示、編集を行うためのページ編集画面500をタッチスクリーンディスプレイ17上に表示する。
図7は、手書きノートアプリケーションプログラム202によって表示されるページ編集画面500の一例を示す図である。
【0045】
図7に示すページ編集画面500において、破線で囲まれた矩形の領域500Aが手書き入力可能な手書き入力エリアである。手書き入力エリア500Aにおいては、デジタイザ17Cからの入力イベントはストロークの表示(描画)のために使用され、タップ等のジェスチャを示すイベントとしては使用されない。一方、手書き入力エリア500A以外の領域においては、デジタイザ17Cからの入力イベントはタップ等のジェスチャを示すイベントとしても使用され得る。
【0046】
また、ページ編集画面500において、タッチパネル17Bからの入力イベントは、ストロークの軌跡の表示(描画)には使用されず、タップ等のジェスチャを示すイベントとして使用される。
【0047】
ページ編集画面500は、さらに、3種類のペン501〜503と、範囲選択ペン504、消しゴムペン505とを含むクイックセレクトメニューを表示する。ユーザは、ペン100または指でクイックセレクトメニュー内のあるペン(ボタン)をタップすることにより、使用するペンの種類を切り替えることができる。例えば、黒ペン501、赤ペン502、マーカー503がユーザによって登録されているものと想定する。この場合、例えば、黒ペン501がユーザによるペン100または指を使用したタップジェスチャによって選択された状態で、ペン100を用いた手書き入力操作がページ編集画面500上で行われると、手書きノートアプリケーションプログラム202は、ペン100の動きに合わせて黒色のストロークの軌跡をページ編集画面500上に表示する。クイックセレクトメニュー内の3種類のペン501〜503の各々には、よく使うペンの色やペンの太さ等の組み合わせを設定することができる。
【0048】
ページ編集画面500は、さらに、メニューボタン511を表示する。メニューボタン511はメニューを表示するためのボタンである。メニューボタン511を操作することにより、ユーザは、ページ編集画面500上にソフトウェアボタン群をメニューとして表示させることができる。このソフトウェアボタン群の1つに、クイックセレクトメニュー内の3種類のペン501〜503の各々の色や太さ等の組み合わせを設定するためのペン設定画面600を呼び出すためのボタンが存在する。
【0049】
図8は、手書きノートアプリケーションプログラム202によって表示されるペン設定画面600の一例を示す図である。
【0050】
ペン設定画面600は、ペンの種類を設定するためのフィールド601、線の色を設定するためのフィールド602、線の太さを設定するためのフィールド603、線の透明度を設定するためのフィールド604を備えている。このペン設定画面600によって、ユーザは、クイックセレクトメニュー内の3種類のペン501〜503の各々の色や太さ等の組み合わせを設定することができる。なお、線の透明度は、背景色の透過度であり、線の透明度を設定することは、線の濃さを設定することと同義である。
【0051】
ペン設定部301は、ページ編集画面500上のクイックセレクトメニュー内の3種類のペン(ボタン)501〜503に対するユーザの操作、および、ペン設定画面600上でのユーザの操作に応じて、ストロークの彩色等、ストロークの軌跡の表示(描画)の形態を設定する。
【0052】
ペン軌跡表示処理部302および時系列情報生成部303は、タッチスクリーンディスプレイ17によって発生される「タッチ」または「移動(スライド)」のイベントを受信し、これによって手書き入力操作を検出する。「タッチ」イベントには、接触位置の座標が含まれている。「移動(スライド)」イベントにも、移動先の接触位置の座標が含まれている。したがって、ペン軌跡表示処理部302および時系列情報生成部303は、タッチスクリーンディスプレイ17から、接触位置の動きの軌跡に対応する座標列を受信することができる。
【0053】
ペン軌跡表示処理部302は、手書きによって入力されるストロークをタッチスクリーンディスプレイ17の画面上に表示するように構成された表示処理部として機能する。ペン軌跡表示処理部302は、タッチスクリーンディスプレイ17から座標列を受信する。また、ペン軌跡表示処理部302は、タッチスクリーンディスプレイ17から筆圧に関する情報を受信する。ペン軌跡表示処理部302は、タッチスクリーンディスプレイ17から受信する座標列および筆圧に関する情報と、ペン設定部301で設定される線の色や太さ等の組み合わせに関する情報とに基づき、ペン100等を使用した手書き入力操作によって入力される複数のストロークの軌跡をタッチスクリーンディスプレイ17内のLCD17Aの画面上に表示する。
【0054】
時系列情報生成部303は、タッチスクリーンディスプレイ17から出力される座標列を受信する。この座標列に基づいて、時系列情報生成部303は、前述の複数のストロークに対応する複数のストロークデータ(時系列情報)を生成する。これらストロークデータ、つまり各ストロークの各点に対応する座標および各ストロークのタイムスタンプ情報は作業メモリ401に一時保存してもよい。また、タッチスクリーンディスプレイ17から出力される筆圧に関する情報と、ペン設定部301で設定される線の色や太さ等の組み合わせに関する情報とが、このストロークデータに属性情報として含まれる。
【0055】
ページ保存処理部304は、複数のストロークに対応する複数のストロークデータを含む手書き文書情報を記憶媒体402内の手書きノートデータベース402Aに保存する。記憶媒体402は、前述したように、タブレットコンピュータ10内のストレージデバイス、パーソナルコンピュータ1内のストレージデバイス、サーバ2のストレージデバイスのいずれであってもよい。
【0056】
ページ取得処理部305は、記憶媒体402から任意の手書き文書情報を読み出す。読み出された手書き文書情報は手書き文書表示処理部306に送られる。手書き文書表示処理部306は、手書き文書情報を解析し、この解析結果に基づいて、手書き文書情報内の複数のストロークデータによって示される複数のストロークの軌跡を画面上に手書きページとして表示する。
【0057】
編集処理部307は、現在表示中の手書き文書(手書きページ)を編集するための処理を実行する。すなわち、編集処理部307は、タッチスクリーンディスプレイ17上でユーザによって行われる編集操作に応じて、表示されている複数のストローク内の1以上のストロークを削除または移動等するための編集処理を実行する。さらに、編集処理部307は、編集処理の結果を表示中の手書き文書に反映するために、この手書き文書を更新する。
【0058】
ユーザは、「消しゴム」ツール等を使用して、表示されている複数のストローク内の任意のストロークを削除することができる。また、ユーザは、画面上の任意の部分を丸または四角によって囲むための「範囲指定」ツールを使用して、表示されている手書きページ内の任意の部分を範囲指定することができる。
【0059】
筆跡補完処理部308は、前述の筆跡補完機能を実行するように構成された処理部である。筆跡補完処理部308は、推薦ストローク検索部308Aとストローク属性決定部308Bとを有する。筆跡補完処理において、筆跡補完処理部308は、手書きによって入力されるストロークに対応する1以上のストローク列(手書き文字列)を、推薦ストローク検索部308Aにより、過去に入力されたストロークの集合(手書き文書情報)から取得する。筆跡補完処理部308は、取得された1以上のストローク列を、入力可能なストロークの候補(推薦ストローク)として画面上に表示するための処理を実行する。
【0060】
換言すれば、筆跡補完処理部308は、入力されるストロークと手書き文書情報とに基づいて、ユーザが手書きしようとしているストローク列(手書き文字列)を予測する。そして、筆跡補完処理部308は、予測によって得られるいくつかのストローク列(手書き文字列)を推薦ストローク(候補手書き文字列)としてユーザに提示する。
【0061】
例えば、ストローク(手書き文字列)「a」が手書きによって入力された場合には、手書きの語「add」または「access」のような候補がユーザに提示されてもよい。もしユーザによって手書きの語「access」が選択されたならば、この手書きの語「access」が、入力された手書き文字列となる。よって、ユーザは、手書きの語「access」のストローク列を容易に入力することができる。また、筆跡補完処理部308は、ストローク属性決定部308Bにより、この手書きの語「access」の属性を決定する。ストローク属性決定部308Bの働きについては後述する。
【0062】
手書き文書情報に格納される手書き文字列の言語はどのような言語であってもよい。利用可能な言語の例は、英語、日本語、中国語および他の様々な言語を含む。英語の文字列に関しては、ストローク列(手書き文字列)は、ブロック体の文字列に対応するストローク列であってもよいし、筆記体の文字列に対応するストローク列であってもよい。筆記体で手書きされた単語は1つのストロークから構成される場合がある。したがって、筆跡補完処理において手書き文書情報から取得されるストローク列は、必ずしも複数のストロークを含んでいる必要はなく、1つのストロークであってもよい。
【0063】
入力されたストロークに対応するストローク列の例には、入力されたストロークに類似するストロークを含む複数のストロークや、入力されたストロークに類似するストローク部分を含む1つのストロークがある。例えば、先頭のストローク(または先頭のストローク部分)が、入力されたストロークに類似しているストローク列が手書き文書情報から取得される。
【0064】
入力されたストロークに対応するストローク列を手書き文書情報から容易に取得できるようにするために、筆跡補完処理部308は、手書きノートデータベース402Aに格納されているストロークの集合(手書き文書情報)に基づいて、候補ストロークデータベース402Bを作成しても良い。
【0065】
この候補ストロークデータベース402Bにおいては、例えば、単語のような意味のある文字列単位で、ストローク列(ストロークデータ群)と、このストロークデータ群に対応する文字認識結果(文字列)とが格納されていても良い。
【0066】
この場合、筆跡補完処理部308は、まず、ユーザによって入力されたストロークを文字認識してもよい。そして、筆跡補完処理部308は、候補ストロークデータベース402Bを参照し、この入力されたストロークの文字認識結果(文字列)に前方一致する文字列を見つけ出す。筆跡補完処理部308は、見つけ出した文字列に対応するストローク列(ストロークデータ群)を、入力されたストロークに対応するストローク列として候補ストロークデータベース402Bから取得する。
【0067】
あるいは、候補ストロークデータベース402Bにおいては、例えば、単語のような意味のある文字列単位で、ストローク列(ストロークデータ群)と、このストロークデータ群に対応する各ストロークの特徴量とが格納されていても良い。あるストロークの特徴量としては、このストロークの手書き特徴を表すことができる任意の特徴を使用することができる。例えば、特徴量としては、ストロークの形状、ストロークの筆画方向、ストロークの傾斜、等を表す特徴量データを使用しても良い。この場合、筆跡補完処理部308は、入力されたストロークの特徴量に類似する特徴量を有するストローク列を候補ストロークデータベース402Bから取得してもよい。また、この場合、例えば文字の一部が入力された時点で、筆跡補完処理部308は、推薦ストローク(候補手書き文字列)を検索して提示することができる。
【0068】
あるいは、候補ストロークデータベース402Bにおいては、例えば、単語のような意味のある文字列単位で、ストローク列(ストロークデータ群)と、このストロークデータ群に対応する文字認識結果(文字列)と、このストロークデータ群に対応する各ストロークの特徴量とが格納されていても良い。
【0069】
筆跡補完処理部308は、入力されたストロークと、候補ストロークデータベース402Bとに基づいて、ユーザが入力しようとしているストローク列を予測する。この予測の処理では、筆跡補完処理部308は、入力されたストロークに対応するいくつかのストローク列(手書き文字列等)を候補ストロークデータベース402Bから取得する。そして、筆跡補完処理部308は、これらストローク列を、入力が予測される手書き文字列の候補(推薦ストローク)として画面上に表示するための処理を実行する。
【0070】
図9は、入力されるストロークに対応する候補(推薦ストローク)の例を示す第1の図である。
【0071】
ここでは、ページ編集画面500上での手書き入力操作によって、手書き文字「a」に対応するストローク711が入力された場合が想定されている。
【0072】
ストローク711が手書きによって入力された場合、筆跡補完処理部308は、この入力されたストローク711(ここでは手書き文字「a」)に対応するいくつかのストローク列(推薦ストローク)を候補ストロークデータベース402Bから取得する。そして、筆跡補完処理部308は、これらストローク列それぞれをページ編集画面500上の推薦ストロークリスト701上に表示する。
【0073】
入力されたストローク711は「未確定ストローク(または仮ストローク)」として扱われる。「未確定ストローク」は手書きページにまだ反映されていないストロークを意味する。「未確定ストローク」は筆跡補完対象のストロークであり、このストロークに基づいて予測されるストロークが推薦ストロークとしてユーザに提示される。入力されたストローク611が「未確定ストローク(仮ストローク)」であることがユーザに分かるように、ストローク711は、例えば、現在選択されているペン色とは異なる色で表示されるようにしても良い。
【0074】
図9においては、推薦ストロークリスト701上に、4つのストローク列が推薦ストロークとして提示された場合が想定されている。ここでは、4つのストローク列は、手書き文字列「ability」、手書き文字列「access」、手書き文字列「adaptor」、手書き文字列「add」を含む。
【0075】
このように、先頭の手書き文字が「a」で始まるいくつかのストローク列(手書き文字列)がユーザに提示される。これらストローク列は、過去にユーザによって手書き入力されたストローク列(手書き文字列)である。
【0076】
図10は、入力されるストロークに対応する候補(推薦ストローク)の例を示す第2の図である。
【0077】
ここでは、ページ編集画面500上での手書き入力操作によって、手書き文字「a」に対応するストローク711が入力された後に、手書き文字「p」に対応するストローク712、713がさらに入力された場合が想定されている。この場合、推薦ストロークリスト701の内容が更新される。
【0078】
すなわち、筆跡補完処理部308は、入力されたストローク711、712、713(手書き文字列「ap」)に対応するいくつかのストローク列(推薦ストローク)を候補ストロークデータベース402Bから取得する。そして、筆跡補完処理部308は、これらストローク列それぞれをページ編集画面500上の推薦ストロークリスト701上に表示する。
【0079】
図10では、推薦ストロークリスト701上に、4つの手書きストローク列、つまり手書き文字列「application」、手書き文字列「aperture」、手書き文字列「apex」、手書き文字列「apology」が、推薦ストロークとして提示された場合が想定されている。
【0080】
このように、「ap」で始まるいくつかの手書き文字列がユーザに提示される。
【0081】
ユーザによって推薦ストロークリスト701上のある推薦ストロークが選択された場合、筆跡補完処理部308は、選択された推薦ストロークに対応するストローク列をページ編集画面500上に表示する。換言すれば、筆跡補完処理部308は、入力された手書きストロークを、選択された推薦ストロークに対応するストローク列で補完する。これにより、ユーザは目的の単語の一部を手書きによって入力するだけで、目的の単語を容易に入力することができる。
【0082】
また、漢字のように複数のストロークから構成される文字に関しては、ユーザは、これら複数のストロークの一部を手書きによって入力するだけで、この文字を入力することができる。
【0083】
また筆記体の文字列に関しては、ユーザは、この文字列を構成する1つのストロークの先頭の一部分を手書きによって入力するだけで、この筆記体の文字列を入力することができる。
【0084】
図11は、入力された手書きストロークを補完する例を示す図である。
【0085】
ここでは、推薦ストロークリスト701上の手書き文字列「application」が選択された場合が想定されている。手書き文字列「application」がペン100または指によってタップされると、筆跡補完処理部308は、ペン軌跡表示処理部302または手書き文書表示処理部306と協働して、選択された手書き文字列「application」をページ編集画面500上に表示するための処理を実行する。この場合、入力されたストローク(
図10のストローク711、712、713)は選択された手書き文字列「application」で補完される。換言すれば、表示処理部は、入力されたストローク(
図10のストローク711、712、713)の代わりに、選択された手書き文字列「application」をページ編集画面500上に表示する。
【0086】
そして、選択された手書き文字列「application」は確定ストロークとなり、編集中の手書きページに反映される。つまり、候補ストロークデータベース402Bから取得された「application」のストロークデータ群が手書きページに加えられる。なお、もし手書き文字列「application」が筆記体で記述されたストローク列である場合には、手書き文字列「application」に対応する1個のストロークデータが手書きページに加えられる。
【0087】
このように、筆跡補完処理においては、手書きによって入力されたストローク(仮ストローク)に対応するいくつかの手書き文字列が推薦ストロークとしてユーザに提示される。そして、選択された推薦ストローク(手書き文字列)が仮ストロークに代えてページ編集画面500上に表示される。
【0088】
しかし、各推薦ストロークは過去に手書きによって入力されたストローク列(手書き文字列)であるので、各推薦ストローク(手書き文字列)の色や太さ等は、ユーザが書こうとしている文字列の色や太さ等と異なる場合がある。したがって、選択された推薦ストロークをページ編集画面500上に単純に表示したならば、ユーザにとって違和感のある色や太さを有する推薦ストローク(手書き文字列)が入力されてしまう可能性がある。
【0089】
そこで、本実施形態では、筆跡補完処理部308は、ストローク属性決定部308Bにより、仮ストローク(
図10の721)の属性(筆圧、使用されたペンの設定情報[線の色や太さ等の組み合わせに関する情報])と、選択された推薦ストロークの属性との両方に基づき、仮ストロークに代えてページ編集画面500上に表示する、選択された推薦ストローク(
図11の722)の属性を決定する。以下、このストローク属性決定部308Bの働きについて詳述する。
【0090】
まず、
図12および
図13を参照して、手書きノートアプリケーションプログラム202がストロークの軌跡を表示(描画)する基本原理について説明する。
【0091】
前述したように、ユーザは、ページ編集画面500上に表示されるクイックセレクトメニュー内のペン501〜503をタップすることにより、使用するペンの種類を切り替えることができ、また、クイックセレクトメニュー内のペン501〜503の各々の色や太さ等の組み合わせをペン設定画面600により設定することができる。ここでは、ペンの種類として「毛筆」が設定されたペンが選択された状態でペン100による手書き入力操作が行われた場合と、ペンの種類として「サインペン」が設定されたペンが選択された状態でペン100による手書き入力操作が行われた場合とを想定し、ストロークの軌跡がどのように表示(描画)されるかを説明する。
【0092】
図12中、(A)は、ペン設定画面600のフィールド601でペンの種類として「毛筆」が設定された場合におけるストロークの軌跡の表示(描画)パターンの一例を示しており、(B)は、ペンの種類として「サインペン」が設定された場合におけるストロークの軌跡の表示(描画)パターンの一例を示している。
【0093】
ペンの種類として「毛筆」が設定されると、
図12(A)に示すように、ストロークの彩色に関するパラメータとして、中心部から端部へなだらかに色を変化(濃→淡)させる「毛筆」用のパラメータが適用される。この「毛筆」用のパラメータは、ペン設定画面600のフィールド603での太さの設定に応じて、中心部から端部までの距離が伸縮し、また、ペン設定画面600のフィールド604での透明度の設定に応じて、濃さのピーク値が上下する。また、この「毛筆」用のパラメータは、筆圧が高まるにつれて、太さおよび濃さの双方が増加する特性をもつ。なお、言うまでも無いが、ストロークの色は、ペン設定画面600のフィールド602で設定される色が採用される。
【0094】
ペンの種類として「サインペン」が設定されると、
図12(B)に示すように、ストロークの彩色に関するパラメータとして、中心部から端部まで色の変化が生じない「サインペン」用のパラメータが適用される。つまり、色の変化の度合いは、ペンの種類によって異なっている。この「サインペン」用のパラメータは、ペン設定画面600のフィールド603での太さの設定に応じて、中心部から端部までの距離が伸縮し、また、ペン設定画面600のフィールド604での透明度の設定に応じて、濃さのレベルが全体的に上下する。また、この「サインペン」用のパラメータは、筆圧が高まるにつれて、太さのみが増加する特性をもつ。勿論、ストロークの色は、ペン設定画面600のフィールド602で設定される色が採用される。
【0095】
そして、手書きノートアプリケーションプログラム202は、このように各々が固有の特性をもつパラメータに基づき、
図13に示すように、手書きされたストロークの軌跡上の座標データのサンプリング点Pnそれぞれで円を表示(描画)することにより、ストロークの軌跡を表示(描画)する。例えば「毛筆」の場合、中心部から端部へなだらかに色を変化(濃→淡)させるので、にじみのような視覚的効果を上げることができる。
図13の例は、一定の筆圧でストロークが手書き入力された場合を想定しているが、筆圧が変化した場合、表示(描画)される円の大きさや濃さが適応的に変化する。
【0096】
この基本原理を踏まえて、再び、前述した、選択された推薦ストロークを仮ストロークに代えてページ編集画面500上に表示する場合について考える。
【0097】
例えば、
図10の手書き文字「ap」、つまり仮ストロークの手書き入力時に設定されているペンの色が赤色であり、
図10の推薦ストロークリスト701上に表示される手書き文字列「application」、つまり推薦ストロークの手書き入力時に設定されるペンの色が黒色であった場合を想定する。そして、この手書き文字列「application」がユーザによって選択された場合に、もし、それまでにユーザが手書きした手書き文字「ap」の赤色とは異なる黒色で手書き文字列「application」を表示(描画)したならば、ユーザに違和感を与えることは避けられない。そこで、ストローク属性決定部308Bは、ユーザが赤色で「ap」を手書き入力しているならば、推薦ストロークである手書き文字列「application」の色が赤色とは異なる黒色であったとしても、この手書き文字列「application」が赤色で表示(描画)されるように当該手書き文字列「application」の属性を決定する。
【0098】
また、ストローク属性決定部308Bは、色と同様、ペンの種類、太さ、透明度についても、現在使用中のペンの属性に基づき、仮ストロークに代えてページ編集画面500上に表示する推薦ストロークの属性を決定する。換言すれば、
図12に例示した、ストロークの彩色に関するパラメータを(必要ならば)変更する。よって、例えば、仮ストロークが「毛筆」で手書きされている一方で、推薦ストロークが「サインペン」で手書きされていたとしても、同じ太さ、透明度の「毛筆」で手書きされたように、(「サインペン」で手書きされた)推薦ストロークをページ編集画面500上に表示することができる。
図13に示したにじみも、仮ストロークに準じて表現されることになる。
【0099】
また、前述したように、ストロークの軌跡の線の太さや濃さは、筆圧によって変化し得る。そこで、ストローク属性決定部308Bは、仮ストロークの筆圧と、推薦ストロークの筆圧との両方に基づき、仮ストロークに代えてページ編集画面500上に表示する推薦ストロークの属性を決定する。
【0100】
具体的に説明すると、ストローク属性決定部308Bは、まず、仮ストロークの筆圧の平均値を計算する。なお、平均値の計算に用いるストロークは、推薦ストロークを検索する根拠となる仮ストローク全体であってもよいし、仮ストロークのうち、直近のストロークから遡って閾値数のストロークのみであってもよい。仮ストローク数が閾値数に満たない場合は仮ストローク全体を用いればよい。ここで計算される平均値をPmとする。
【0101】
次に、ストローク属性決定部308Bは、(仮ストロークに代えてページ編集画面500上に表示する)推薦ストロークの筆圧の平均値を計算する。ここで計算される平均値をPsとする。さらに、平均値Pmおよび平均値Psの両方を計算すると、ストローク属性決定部308Bは、平均値のずれPdを、Pd=Pm−Psの計算式で計算する。
【0102】
そして、ストローク属性決定部308Bは、推薦ストロークの各サンプル点の筆圧に平均値のずれPdを加える。平均値Pmより平均値Psの方が大きい場合には、筆圧を減らすことになる。
【0103】
これにより、推薦ストロークの手書き入力時の筆圧の変化に起因する線の太さや濃さの変化を活かしつつ、仮ストロークの手書き入力時の筆圧に整合させて、推薦ストロークをページ編集画面500上に表示することができる。
【0104】
このように、本実施形態では、ストローク属性決定部308Bの働きにより、ユーザに違和感を与えることのない手書き入力の補助が実現される。
【0105】
なお、前述したように、手書き文書情報に格納される手書き文字列の言語はどのような言語であってもよい。従って、
図14に示すように、日本語の「東京」という文字が手書きされた場合に、この「東京」(仮ストローク821)を根拠に、「東京都港区」、「東京都世田谷区」、「東京都杉並区」といった文字列を推薦ストロークリスト701上に表示することができる。また、例えば「東京都港区」という文字列が選択された場合、仮ストロークである手書き文字「東京」の属性と、推薦ストロークリスト701上に表示される文字列「東京都港区」の属性との両方に基づき、
図15に示すように、「東京」までを手書きしたユーザに違和感を与えることなく、選択された文字列「東京都港区」(推薦ストローク822)を表示することができる。
【0106】
図16は、手書きノートアプリケーションプログラム202が実行する筆跡補完処理の手順を示すフローチャートである。
【0107】
筆跡補完処理部308は、手書き入力されたストロークを時系列情報生成部302を介して入力する(ブロックA1)。筆跡補完部処理部308は、この入力したストロークを基に、推薦ストローク検索部308Aにより、候補ストロークデータベース402Bから推薦ストロークを検索する(ブロックA2)。検索された推薦ストロークは、推薦ストロークリスト701としてページ編集画面500上に表示される。
【0108】
推薦ストロークリスト701上のいずれかの推薦ストロークが選択されると(ブロックA3)、筆跡補完処理部308は、手書き入力されたストロークの属性と、選択された推薦ストロークの属性とに基づき、ストローク属性決定部308Bにより、手書き入力されたストロークに代えてページ編集画面500上に表示する、選択された推薦ストロークの属性を決定する(ブロックA4)。
【0109】
そして、筆跡補完処理部308は、決定された属性に基づき、手書き入力されたストロークに代えて、選択された推薦ストロークをページ編集画面500上に表示する(ブロックA5)。
【0110】
以上のように、本タブレットコンピュータ10は、ユーザに違和感を与えることのない手書き入力の補助を実現する。
【0111】
本実施形態の動作手順は全てソフトウェアによって実現することができるので、このソフトウェアをコンピュータ読み取り可能な記憶媒体を通じて通常のコンピュータに導入することにより、本実施形態と同様の効果を容易に実現することができる。
【0112】
ここで説明したシステムの様々なモジュールは、ソフトウェアアプリケーション、ハードウェアおよび/またはソフトウェアのモジュール、あるいは、サーバのような1つ以上のコンピュータ上のコンポーネントとして実現することができる。様々なモジュールを別々に示したが、これらは、同一の根本的なロジックまたはコードのいくつかまたはすべてを共有することが可能である。
【0113】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。