(57)【要約】【課題】入力ストロークの入力中に、当該入力ストロークがユーザの意図したストロークに変換されるか否かをユーザに把握させることができるストローク処理装置、方法及びプログラムを提供する。【解決手段】実施形態のストローク処理装置は、判定部と、変換部と、第２更新部と、表示制御部と、を備える。判定部は、部分ストロークと類似する図形パターンが存在するか否かを判定する。変換部は、図形パターンが存在する場合、部分ストロークを構成する２以上の第１座標を、それぞれ、図形パターンを構成する２以上の変換座標に変換する。第２更新部は、部分ストロークを構成する第１座標それぞれに対応付けられた第２座標の値を、第１座標の変換座標の値に更新し、取得された第１座標、及び値が変換座標の値である第２座標を対応付けて記憶部に記憶する。表示制御部は、記憶部に記憶されている複数の第２座標を用いて表示ストロークを表示させる。【選択図】図１
2015064663.tif 000002
【特許請求の範囲】
【請求項１】
入力ストロークを構成する第１座標を逐次取得する取得部と、
前記第１座標毎に、前記入力ストロークの表示用の表示ストロークの第２座標を対応付けて記憶する記憶部と、
前記取得部により前記第１座標が取得される毎に、前記記憶部から時系列の新しい順に前記第１座標を所定数取得し、前記取得部により取得された前記第１座標に前記所定数の第１座標の少なくともいずれかを加えた２以上の第１座標で構成される部分ストロークと類似する図形パターンが存在するか否かを判定する判定部と、
前記図形パターンが存在しない場合、前記所定数の第１座標それぞれの値で、当該第１座標に対応付けられた前記第２座標の値を更新し、前記取得部により取得された前記第１座標、及び値が当該第１座標の値である第２座標を対応付けて前記記憶部に記憶する第１更新部と、
前記図形パターンが存在する場合、前記部分ストロークを構成する前記２以上の第１座標を、それぞれ、前記図形パターンを構成する２以上の変換座標に変換する変換部と、
前記図形パターンが存在する場合、前記所定数の第１座標のうち前記部分ストロークを構成する第１座標それぞれに対応付けられた前記第２座標の値を、当該第２座標に対応付けられた前記第１座標の前記変換座標の値に更新し、前記取得部により取得された前記第１座標、及び値が当該第１座標の前記変換座標の値である第２座標を対応付けて前記記憶部に記憶する第２更新部と、
前記記憶部に記憶されている前記複数の第２座標を用いて前記表示ストロークを表示部に表示させる表示制御部と、
を備えるストローク処理装置。
【請求項２】
前記記憶部は、前記第１座標毎に、前記第２座標が前記第１座標であるか前記変換座標であるかを示す属性情報を更に対応付けて記憶し、
前記判定部は、前記記憶部から時系列が最新の前記第１座標に対応付けられた前記属性情報を更に取得し、当該属性情報が前記第１座標であることを示す場合、前記部分ストロークと類似する図形パターンが存在するか否かを判定し、
前記第１更新部は、前記図形パターンが存在しない場合、前記所定数の前記第１座標に対応付けられた前記属性情報が前記第１座標であることを示すように更に更新し、前記取得部により取得された前記第１座標に、前記第１座標であることを示す属性情報を更に対応付けて前記記憶部に記憶し、
前記第２更新部は、前記図形パターンが存在する場合、前記所定数の第１座標のうち前記部分ストロークを構成する第１座標に対応付けられた前記属性情報が前記変換座標であることを示すように更に更新し、前記取得部により取得された前記第１座標に、前記変換座標であることを示す属性情報を更に対応付けて前記記憶部に記憶する請求項１に記載のストローク処理装置。
【請求項３】
前記記憶部は、前記第１座標毎に、前記第２座標が前記第１座標であるか前記変換座標であるかを示す属性情報を更に対応付けて記憶し、
前記判定部は、前記記憶部から時系列が最新の前記第１座標に対応付けられた前記属性情報を更に取得し、当該属性情報が前記変換座標であることを示す場合、前記部分ストロークが、前回の判定で類似すると判定された前図形パターンと類似するか否かを判定し、
前記第１更新部は、前記前図形パターンと類似しない場合、前記所定数の第１座標それぞれの値で、当該第１座標に対応付けられた前記第２座標の値を更新し、前記所定数の前記第１座標に対応付けられた前記属性情報が前記第１座標であることを示すように更新し、前記取得部により取得された前記第１座標、値が当該第１座標の値である第２座標、及び前記第１座標であることを示す属性情報を対応付けて前記記憶部に記憶し、
前記変換部は、前記前図形パターンと類似する場合、前記部分ストロークを構成する前記２以上の第１座標を、それぞれ、前記前図形パターンを構成する２以上の変換座標に変換し、
前記第２更新部は、前記前図形パターンと類似する場合、前記所定数の第１座標のうち前記部分ストロークを構成する第１座標それぞれに対応付けられた前記第２座標の値を、当該第２座標に対応付けられた前記第１座標の前記変換座標の値に更新し、前記所定数の第１座標のうち前記部分ストロークを構成する第１座標に対応付けられた前記属性情報が前記変換座標であることを示すように更新し、前記取得部により取得された前記第１座標、値が当該第１座標の前記変換座標の値である第２座標、及び前記変換座標であることを示す属性情報を対応付けて前記記憶部に記憶する請求項１に記載のストローク処理装置。
【請求項４】
前記判定部は、前記前図形パターンと類似しない場合、前記部分ストロークと類似する図形パターンが存在するか否かを更に判定し、
前記第１更新部は、前記図形パターンが存在しない場合、前記所定数の前記第１座標に対応付けられた前記属性情報が前記第１座標であることを示すように更に更新し、前記取得部により取得された前記第１座標に、前記第１座標であることを示す属性情報を更に対応付けて前記記憶部に記憶し、
前記第２更新部は、前記図形パターンが存在する場合、前記所定数の第１座標のうち前
記部分ストロークを構成する第１座標に対応付けられた前記属性情報が前記変換座標であることを示すように更に更新し、前記取得部により取得された前記第１座標に、前記変換座標であることを示す属性情報を更に対応付けて前記記憶部に記憶する請求項３に記載のストローク処理装置。
【請求項５】
前記判定部は、前記部分ストロークとの誤差が閾値以下となる図形パターンが存在するか否かを判定する請求項１に記載のストローク処理装置。
【請求項６】
前記判定部は、複数の部分ストロークが前記図形パターンと類似する場合、構成する第１座標の数が最も多い部分ストロークが前記図形パターンと類似すると判定する請求項１に記載のストローク処理装置。
【請求項７】
前記図形パターンは、直線である請求項１に記載のストローク処理装置。
【請求項８】
ストローク処理装置で実行されるストローク処理方法であって、
前記ストローク処理装置は、
第１座標毎に、入力ストロークの表示用の表示ストロークの第２座標を対応付けて記憶する記憶部を備え、
前記入力ストロークを構成する第１座標を逐次取得する取得ステップと、
前記取得ステップにより前記第１座標が取得される毎に、前記記憶部から時系列の新しい順に前記第１座標を所定数取得し、前記取得ステップにより取得された前記第１座標に前記所定数の第１座標の少なくともいずれかを加えた２以上の第１座標で構成される部分ストロークと類似する図形パターンが存在するか否かを判定する判定ステップと、
前記図形パターンが存在しない場合、前記所定数の第１座標それぞれの値で、当該第１座標に対応付けられた前記第２座標の値を更新し、前記取得ステップにより取得された前記第１座標、及び値が当該第１座標の値である第２座標を対応付けて前記記憶部に記憶する第１更新ステップと、
前記図形パターンが存在する場合、前記部分ストロークを構成する前記２以上の第１座標を、それぞれ、前記図形パターンを構成する２以上の変換座標に変換する変換ステップと、
前記図形パターンが存在する場合、前記所定数の第１座標のうち前記部分ストロークを構成する第１座標それぞれに対応付けられた前記第２座標の値を、当該第２座標に対応付けられた前記第１座標の前記変換座標の値に更新し、前記取得ステップにより取得された前記第１座標、及び値が当該第１座標の前記変換座標の値である第２座標を対応付けて前記記憶部に記憶する第２更新ステップと、
前記記憶部に記憶されている前記複数の第２座標を用いて前記表示ストロークを表示部に表示させる表示制御ステップと、
を含むストローク処理方法。
【請求項９】
入力ストロークを構成する第１座標を逐次取得する取得部と、
前記第１座標毎に、前記入力ストロークの表示用の表示ストロークの第２座標を対応付けて記憶する記憶部と、
前記取得部により前記第１座標が取得される毎に、前記記憶部から時系列の新しい順に前記第１座標を所定数取得し、前記取得部により取得された前記第１座標に前記所定数の第１座標の少なくともいずれかを加えた２以上の第１座標で構成される部分ストロークと類似する図形パターンが存在するか否かを判定する判定部と、
前記図形パターンが存在しない場合、前記所定数の第１座標それぞれの値で、当該第１座標に対応付けられた前記第２座標の値を更新し、前記取得部により取得された前記第１座標、及び値が当該第１座標の値である第２座標を対応付けて前記記憶部に記憶する第１更新部と、
前記図形パターンが存在する場合、前記部分ストロークを構成する前記２以上の第１座標を、それぞれ、前記図形パターンを構成する２以上の変換座標に変換する変換部と、
前記図形パターンが存在する場合、前記所定数の第１座標のうち前記部分ストロークを構成する第１座標それぞれに対応付けられた前記第２座標の値を、当該第２座標に対応付けられた前記第１座標の前記変換座標の値に更新し、前記取得部により取得された前記第１座標、及び値が当該第１座標の前記変換座標の値である第２座標を対応付けて前記記憶部に記憶する第２更新部と、
前記記憶部に記憶されている前記複数の第２座標を用いて前記表示ストロークを表示部に表示させる表示制御部と、
してコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ストローク処理装置、方法及びプログラムに関する。
【背景技術】
【０００２】
ユーザが手書き入力した入力ストロークを表示用の表示ストロークに変換して出力する技術が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第１５４１９５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述したような従来技術では、入力ストロークの表示ストロークへの変換は、ストロークの入力完了後に行われる。このため、ユーザは、入力ストロークの入力中に、当該入力ストロークがユーザの意図したストロークに変換されるか否かを把握できない。
【０００５】
本発明が解決しようとする課題は、入力ストロークの入力中に、当該入力ストロークがユーザの意図したストロークに変換されるか否かをユーザに把握させることができるストローク処理装置、方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態のストローク処理装置は、取得部と、記憶部と、判定部と、第１更新部と、変換部と、第２更新部と、表示制御部と、を備える。取得部は、入力ストロークを構成する第１座標を逐次取得する。記憶部は、前記第１座標毎に、前記入力ストロークの表示用の表示ストロークの第２座標を対応付けて記憶する。判定部は、前記取得部により前記第１座標が取得される毎に、前記記憶部から時系列の新しい順に前記第１座標を所定数取得し、前記取得部により取得された前記第１座標に前記所定数の第１座標の少なくともいずれかを加えた２以上の第１座標で構成される部分ストロークと類似する図形パターンが存在するか否かを判定する。第１更新部は、前記図形パターンが存在しない場合、前記所定数の第１座標それぞれの値で、当該第１座標に対応付けられた前記第２座標の値を更新し、前記取得部により取得された前記第１座標、及び値が当該第１座標の値である第２座標を対応付けて前記記憶部に記憶する。変換部は、前記図形パターンが存在する場合、前記部分ストロークを構成する前記２以上の第１座標を、それぞれ、前記図形パターンを構成する２以上の変換座標に変換する。第２更新部は、前記図形パターンが存在する場合、前記所定数の第１座標のうち前記部分ストロークを構成する第１座標それぞれに対応付けられた前記第２座標の値を、当該第２座標に対応付けられた前記第１座標の前記変換座標の値に更新し、前記取得部により取得された前記第１座標、及び値が当該第１座標の前記変換座標の値である第２座標を対応付けて前記記憶部に記憶する。表示制御部は、前記記憶部に記憶されている前記複数の第２座標を用いて前記表示ストロークを表示部に表示させる。
【図面の簡単な説明】
【０００７】
【図１】本実施形態のストローク処理装置の例を示す構成図。
【図２】本実施形態の記憶部に記憶される情報の例を示す図。
【図３】本実施形態の変換座標への変換手法の一例の説明図。
【図４】本実施形態の表示ストロークの表示例を示す図。
【図５】本実施形態の表示ストロークの表示例を示す図。
【図６】本実施形態の表示ストロークの表示例を示す図。
【図７】本実施形態の表示ストロークの表示例を示す図。
【図８】本実施形態の処理例を示すフローチャート。
【図９】本実施形態の他の処理例を示すフローチャート。
【図１０】本実施形態のストローク処理装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【０００８】
以下、添付図面を参照しながら、実施形態を詳細に説明する。
【０００９】
図１は、本実施形態のストローク処理装置１０の一例を示す構成図である。図１に示すように、ストローク処理装置１０は、入力部１１と、取得部１３と、記憶部１５と、判定部１７と、第１更新部１９と、変換部２１と、第２更新部２３と、表示制御部２５と、表示部２７とを、備える。
【００１０】
入力部１１は、タッチパネル、タッチパッド、マウス、及び電子ペンなどの手書き入力可能な入力装置により実現できる。取得部１３、判定部１７、第１更新部１９、変換部２１、第２更新部２３、及び表示制御部２５は、例えば、ＣＰＵ（Central  Processing  Unit）などの処理装置にプログラムを実行させること、即ち、ソフトウェアにより実現してもよいし、ＩＣ（Integrated  Circuit）などのハードウェアにより実現してもよいし、ソフトウェア及びハードウェアを併用して実現してもよい。記憶部１５は、例えば、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、メモリカード、光ディスク、ＲＯＭ（Read  Only  Memory）、及びＲＡＭ（Random  Access  Memory）などの磁気的、光学的、又は電気的に記憶可能な記憶装置により実現できる。表示部２７は、例えば、タッチパネルディスプレイや液晶ディスプレイなどの表示装置により実現できる。
【００１１】
入力部１１は、ユーザが手書きした入力ストローク（筆跡）をストローク処理装置１０に入力する。入力ストロークは、ユーザが手書した筆跡などの１画、例えば、スタイラスペンや指がタッチパネルの入力面に接してから離れるまで（ペンダウンからペンアップまで）の軌跡を示すデータである。
【００１２】
入力ストロークは、例えば、｛（ｘ（１），ｙ（１））、（ｘ（２），ｙ（２））、…｝のような、スタイラスペンや指と入力面との接点の時系列の２次元座標を含むベクトルデータとして表される。例えば、時刻ｉ（ｉは、自然数）での入力ストロークの座標は、（ｘ（ｉ），ｙ（１））となる。
【００１３】
取得部１３は、入力部１１により入力された入力ストロークを構成する座標である第１座標を逐次取得する。例えば、取得部１３は、時刻１の時点では、入力ストロークの第１座標（ｘ（１），ｙ（１））を取得し、時刻２の時点では、入力ストロークの第１座標（ｘ（２），ｙ（２））を取得し、時刻ｉの時点では、入力ストロークの第１座標（ｘ（ｉ），ｙ（ｉ））を取得する。
【００１４】
記憶部１５は、第１座標毎に、入力ストロークの表示用の表示ストロークの座標である第２座標を対応付けて記憶する。詳細には、記憶部１５は、第１座標毎に、第２座標が第１座標であるか後述の変換部２１により第１座標を変換した変換座標であるかを示す属性情報を更に対応付けて記憶する。
【００１５】
図２は、本実施形態の記憶部１５に記憶される情報の一例を示す図である。図２に示す例では、記憶部１５は、第１座標と、第２座標と、属性情報とを、対応付けた組（レコード）を時系列の順で記憶している。なお、記憶部１５への第１座標、第２座標、及び属性情報の書き込みや更新は、後述の第１更新部１９及び第２更新部２３により行われる。
【００１６】
判定部１７は、取得部１３により第１座標が取得される毎に、記憶部１５から時系列の新しい順に第１座標を所定数取得し、取得部１３により取得された第１座標に所定数の第１座標の少なくともいずれかを加えた２以上の第１座標で構成される部分ストロークと類似する図形パターンが存在するか否かを判定する。詳細には、判定部１７は、部分ストロークとの誤差が閾値以下となる図形パターンが存在するか否かを判定する。なお判定部１７は、複数の部分ストロークが図形パターンと類似する場合、構成する第１座標の数が最も多い部分ストロークが図形パターンと類似すると判定する。
【００１７】
具体的には、判定部１７は、記憶部１５から時系列が最新の第１座標に対応付けられた属性情報を更に取得し、当該属性情報が第１座標であることを示す場合、部分ストロークと類似する図形パターンが存在するか否かを判定し、当該属性情報が変換座標であることを示す場合、部分ストロークが、前回の判定で類似すると判定された前図形パターンと類似するか否かを判定する。
【００１８】
例えば、判定部１７は、取得部１３により第１座標（ｘ（ｉ），ｙ（ｉ））が取得されると、記憶部１５から、時系列の新しい順に所定数の第１座標｛（ｘ（ｋ），ｙ（ｋ））、（ｘ（ｋ＋１），ｙ（ｋ＋１））、…（ｘ（ｉ−１），ｙ（ｉ−１））｝を取得する。この所定数の第１座標は、時系列が連続しており、（ｘ（ｉ−１），ｙ（ｉ−１））が最も新しく、（ｘ（ｋ），ｙ（ｋ））が最も古い。
【００１９】
そして判定部１７は、｛（ｘ（ｋ），ｙ（ｋ））、（ｘ（ｋ＋１），ｙ（ｋ＋１））、…（ｘ（ｉ−１），ｙ（ｉ−１））｝に（ｘ（ｉ），ｙ（ｉ））を用いて、（ｘ（ｉ），ｙ（ｉ））を含み、かつ時系列が連続した座標列を生成し、それぞれの座標列で構成される部分ストロークと類似する図形パターンが存在するか否かを判定する。
【００２０】
この場合に生成される座標列は、｛（ｘ（ｉ−１），ｙ（ｉ−１））、（ｘ（ｉ），ｙ（ｉ））｝、｛（ｘ（ｉ−２），ｙ（ｉ−２））、（ｘ（ｉ−１），ｙ（ｉ−１））、（ｘ（ｉ），ｙ（ｉ））｝、…、｛（ｘ（ｋ＋１），ｙ（ｋ＋１））、…，（ｘ（ｉ−１），ｙ（ｉ−１））、（ｘ（ｉ），ｙ（ｉ））｝、｛（ｘ（ｋ），ｙ（ｋ））、（ｘ（ｋ＋１），ｙ（ｋ＋１））、…，（ｘ（ｉ−１），ｙ（ｉ−１））、（ｘ（ｉ），ｙ（ｉ））｝のｉ−ｋ個の座標列である。
【００２１】
例えば、判定対象の図形パターンが直線の場合、判定部１７は、ｉ−ｋ個のそれぞれの座標列を最小二乗法による回帰直線で近似し、ｉ−ｋ個の座標列のうち近似誤差が閾値以内に収まっている座標列を直線と類似すると判定する。なお判定部１７は、近似誤差が閾値以内に収まっている座標列が複数存在する場合、例えば、座標の個数ｉ−ｋ＋１が最も大きい座標列を直線と類似すると判定する。
【００２２】
直線をｙ＝ａｘ＋ｂと表記した場合、ｋからｉまでの座標時系列に関する回帰問題は、数式（１）を最小にする（ａ，ｂ)という２つの直線パラメータを求める問題となる。
【００２３】
ｓ（ａ，ｂ)＝Σ（ｙ（ｉ）−ａｘ（ｉ）−ｂ）＾２      …（１）
【００２４】
なおΣはｉ＝１からＮまでの総和を表す。
【００２５】
この問題は、数式（２）及び数式（３）のときに、Ｓ（ｋ，Ｉ；ａ，ｂ）が最小になる。
【００２６】
ａ＿ｍｉｎ（ｋ，ｉ）＝（Σ（ｘ（ｊ）＊ｙ（ｊ））−（Σｘ（ｊ）＊Σｙ（ｊ））／Ｎ）／（Σ（ｘ（ｊ）＾２）−（Σｘ（ｊ）＊Σｘ（ｊ））／Ｎ）      …（２）
【００２７】
ｂ＿ｍｉｎ（ｋ，ｉ）＝（Σｙ（ｊ）−ａ＿ｍｉｎ＊Σｘ（ｊ））／Ｎ      …（３）
【００２８】
この時、近似誤差Ｓ（ｋ，Ｉ；ａ＿ｍｉｎ（ｋ，Ｉ），ｂ＿ｍｉｎ（ｋ，Ｉ））が予め設定した閾値を下回るとき、座標列を直線と類似すると判定する。より詳細には、ｋ＝…，ｉ−３，ｉ−２，ｉ−１それぞれの直線の近似誤差…，Ｓ（ｉ−３，Ｉ；ａ，ｂ)，Ｓ（ｉ−２，Ｉ；ａ，ｂ），Ｓ（ｉ−１，Ｉ；ａ，ｂ）を計算し、近似誤差が閾値を下回るｋを選択する。但し、座標の個数ｉ−ｋ＋１が小さいときに近似誤差がたまたま小さな値になることがあるので、ｉ−ｋ＋１が一定値以上であるという制限を加えてもよい。複数のｋで直線と類似すると判定された場合には、座標の個数ｉ−ｋ＋１が最も大きいｋを選択すればよい。
【００２９】
なお、部分ストロークと類似する図形パターンが存在するか否かではなく、部分ストロークが、前回の判定で類似すると判定された前図形パターンと類似するか否かを判定する場合、新たに時刻ｉでの近似誤差Ｓ（ｋ，Ｉ；ａ，ｂ）を最小にする直線パラメータを計算する代わりに、時刻ｉ−１にて（ｘ（ｉ−１），ｙ（ｉ−１））が追加された時に近似した直線パラメータ（ａ＿ｍｉｎ（ｋ，ｉ−１），ｂ＿ｍｉｎ（ｋ，ｉ−１））をそのまま用いてもよい。
【００３０】
この時に、時刻ｉ−１での近似直線パラメータ（ａ＿ｍｉｎ（ｋ，ｉ−１），ｂ＿ｍｉｎ（ｋ，ｉ−１））で近似できないと判定した場合には、新たに時刻ｉでの直線パラメータ（ａ＿ｍｉｎ（ｋ’，ｉ−１），ｂ＿ｍｉｎ（ｋ’，ｉ−１））を計算して新たな近似図形を計算してもよい。
【００３１】
なお、直線をｙ＝ａｘ＋ｂと表記とすると、直線の傾きが大きく直線が垂直に近づくと誤差が大きくなる傾向がある。これを防ぐために、各座標点に対して直線の方向が水平方向になるような回転処理を加えてもよい。
【００３２】
第１更新部１９は、判定部１７により部分ストロークと類似する図形パターンが存在しないと判定された場合、又は判定部１７により部分ストロークが前図形パターンと類似しないと判定された場合、所定数の第１座標それぞれの値で、当該第１座標に対応付けられた第２座標の値を更新し、所定数の第１座標に対応付けられた属性情報が第１座標であることを示すように更新し、取得部１３により取得された第１座標、値が当該第１座標の値である第２座標、及び第１座標であることを示す属性情報を対応付けて記憶部１５に記憶する。
【００３３】
例えば、第１更新部１９は、判定部１７により部分ストロークと類似する図形パターンが存在しないと判定された場合、（Ｘ（ｋ），Ｙ（ｋ））、（Ｘ（ｋ＋１），Ｙ（ｋ＋１））、…、（Ｘ（ｉ−１），Ｙ（ｉ−１））それぞれを（ｘ（ｋ），ｙ（ｋ））、（ｘ（ｋ＋１），ｙ（ｋ＋１））、…、（ｘ（ｉ−１），ｙ（ｉ−１））で更新し、これらの属性情報が第１座標であることを示すように更新する。また第１更新部１９は、第１座標（ｘ（ｉ），ｙ（ｉ））、第２座標（ｘ（ｉ），ｙ（ｉ））、属性情報（第１座標）を対応付けて記憶部１５に記憶する。
【００３４】
変換部２１は、判定部１７により部分ストロークと類似する図形パターンが存在すると判定された場合、部分ストロークを構成する２以上の第１座標を、それぞれ、図形パターンを構成する２以上の変換座標に変換する。また変換部２１は、判定部１７により部分ストロークが前図形パターンと類似すると判定された場合、部分ストロークを構成する２以上の第１座標を、それぞれ、前図形パターンを構成する２以上の変換座標に変換する。
【００３５】
例えば、変換部２１は、図３に示すように、部分ストローク１０１を構成する２以上の第１座標｛（ｘ（ｋ），ｙ（ｋ））、（ｘ（ｋ＋１），ｙ（ｋ＋１））、…，（ｘ（ｉ−１），ｙ（ｉ−１））、（ｘ（ｉ），ｙ（ｉ））｝を、図形パターン（図３に示す例では、直線１０２）を構成する２以上の変換座標｛（Ｘ（ｋ），Ｙ（ｋ））、（Ｘ（ｋ＋１），Ｙ（ｋ＋１））、…，（Ｘ（ｉ−１），Ｙ（ｉ−１））、（Ｘ（ｉ），Ｙ（ｉ））｝に変換する。この場合、変換座標（例えば、（Ｘ（ｉ），Ｙ（ｉ）））は、第１座標（例えば、（ｘ（ｉ），ｙ（ｉ）））から直線１０２へ垂線を下した交点となる。
【００３６】
第２更新部２３は、判定部１７により部分ストロークと類似する図形パターンが存在すると判定された場合、又は判定部１７により部分ストロークが前図形パターンと類似すると判定された場合、所定数の第１座標のうち部分ストロークを構成する第１座標それぞれに対応付けられた第２座標の値を、当該第２座標に対応付けられた第１座標の変換座標の値に更新し、所定数の第１座標のうち部分ストロークを構成する第１座標に対応付けられた属性情報が変換座標であることを示すように更新し、取得部１３により取得された第１座標、値が当該第１座標の変換座標の値である第２座標、及び変換座標であることを示す属性情報を対応付けて記憶部１５に記憶する。
【００３７】
例えば、第１更新部１９は、判定部１７により部分ストロークと類似する図形パターンが存在しないと判定された場合、第２座標を（Ｘ（ｋ），Ｙ（ｋ））、（Ｘ（ｋ＋１），Ｙ（ｋ＋１））、…、（Ｘ（ｉ−１），Ｙ（ｉ−１））で更新し、これらの属性情報が第２座標であることを示すように更新する。また第２更新部２３は、第１座標（ｘ（ｉ），ｙ（ｉ））、第２座標（Ｘ（ｉ），Ｙ（ｉ））、属性情報（第２座標）を対応付けて記憶部１５に記憶する。
【００３８】
表示制御部２５は、記憶部１５に記憶されている複数の第２座標を用いて表示ストロークを表示部２７に表示させる。例えば、表示制御部２５は、記憶部１５に記憶されている複数の第２座標をつないで表示ストロークを表示部２７に表示させる。なお表示制御部２５は、スプライン補間して表示ストロークを表示部２７に表示させてもよい。また表示制御部２５は、表示ストロークに付随して入力ストロークを表示部２７に表示させてもよい。この場合、表示制御部２５は、入力ストロークを、表示ストロークと異なる色や線の種類で表示することが好ましい。
【００３９】
本実施形態によれば、図４に示すように、入力ストローク１１１に座標１１３が追加される前の時点では、表示ストローク１１４の先端部分は、フリーハンドで描かれたストロークのままだが、図５に示すように、入力ストローク１１１に座標１１３が追加された後の時点では、表示ストローク１１４の先端部分１１５は、直線に置換されている。
【００４０】
また図６に示すように、入力ストローク１２１に座標１２３が追加される前の時点では、表示ストローク１２２の先端部分は、直線に置換されているが、図７に示すように、入力ストローク１２１に座標１２３が追加された後の時点では、表示ストローク１２４の先端部分１２５は、フリーハンドで描かれたストロークに置換されている。
【００４１】
このように本実施形態によれば、入力ストロークの入力中に、当該入力ストロークをユーザが意図したと思われる表示ストロークに変換するため、入力ストロークの入力中に、当該入力ストロークがユーザの意図したストロークに変換されるか否かをユーザに把握させることができる。
【００４２】
図８は、本実施形態のストローク処理装置１０で行われる処理の手順の流れの一例を示すフローチャートである。
【００４３】
まず、取得部１３は、入力部１１により入力された入力ストロークを構成する座標である第１座標を取得する（ステップＳ１０１）。
【００４４】
続いて、判定部１７は、取得部１３により第１座標が取得されると、記憶部１５から時系列の新しい順に第１座標を所定数取得し（ステップＳ１０３）、記憶部１５から時系列が最新の第１座標に対応付けられた属性情報を取得する（ステップＳ１０５）。
【００４５】
そして判定部１７は、属性情報が第１座標であることを示す場合（ステップＳ１０７でＹｅｓ）、部分ストロークと類似する図形パターンが存在するか否かを判定する（ステップＳ１０９）。
【００４６】
類似する図形パターンが存在しない場合（ステップＳ１０９でＮｏ）、第１更新部１９は、所定数の第１座標それぞれの値で、当該第１座標に対応付けられた第２座標の値を更新し、所定数の第１座標に対応付けられた属性情報が第１座標であることを示すように更新する（ステップＳ１１１）。
【００４７】
続いて、第１更新部１９は、取得部１３により取得された第１座標、値が当該第１座標の値である第２座標、及び第１座標であることを示す属性情報を対応付けて記憶部１５に記憶する（ステップＳ１１３）。
【００４８】
続いて、表示制御部２５は、記憶部１５に記憶されている複数の第２座標を用いて表示ストロークを表示部２７に表示させ（ステップＳ１３３）、ステップＳ１０１へ戻る。
【００４９】
なお、類似する図形パターンが存在する場合（ステップＳ１０９でＹｅｓ）、変換部２１は、部分ストロークを構成する２以上の第１座標を、それぞれ、図形パターンを構成する２以上の変換座標に変換する（ステップＳ１１５）。
【００５０】
続いて、第２更新部２３は、所定数の第１座標のうち部分ストロークを構成する第１座標それぞれに対応付けられた第２座標の値を、当該第２座標に対応付けられた第１座標の変換座標の値に更新し、所定数の第１座標のうち部分ストロークを構成する第１座標に対応付けられた属性情報が変換座標であることを示すように更新する（ステップＳ１１７）。
【００５１】
続いて、第２更新部２３は、取得部１３により取得された第１座標、値が当該第１座標の変換座標の値である第２座標、及び変換座標であることを示す属性情報を対応付けて記憶部１５に記憶する（ステップＳ１１９）。
【００５２】
続いて、表示制御部２５は、記憶部１５に記憶されている複数の第２座標を用いて表示ストロークを表示部２７に表示させ（ステップＳ１３３）、ステップＳ１０１へ戻る。
【００５３】
一方、判定部１７は、属性情報が変換座標であることを示す場合（ステップＳ１０７でＮｏ）、部分ストロークが前図形パターンと類似するか否かを判定する（ステップＳ１２１）。
【００５４】
前図形パターンと類似しない場合（ステップＳ１２１でＮｏ）、第１更新部１９は、所定数の第１座標それぞれの値で、当該第１座標に対応付けられた第２座標の値を更新し、所定数の第１座標に対応付けられた属性情報が第１座標であることを示すように更新する（ステップＳ１２３）。
【００５５】
続いて、第１更新部１９は、取得部１３により取得された第１座標、値が当該第１座標の値である第２座標、及び第１座標であることを示す属性情報を対応付けて記憶部１５に記憶する（ステップＳ１２５）。
【００５６】
続いて、表示制御部２５は、記憶部１５に記憶されている複数の第２座標を用いて表示ストロークを表示部２７に表示させ（ステップＳ１３３）、ステップＳ１０１へ戻る。
【００５７】
なお、前図形パターンと類似する場合（ステップＳ１２１でＹｅｓ）、変換部２１は、部分ストロークを構成する２以上の第１座標を、それぞれ、前図形パターンを構成する２以上の変換座標に変換する（ステップＳ１２７）。
【００５８】
続いて、第２更新部２３は、所定数の第１座標のうち部分ストロークを構成する第１座標それぞれに対応付けられた第２座標の値を、当該第２座標に対応付けられた第１座標の変換座標の値に更新し、所定数の第１座標のうち部分ストロークを構成する第１座標に対応付けられた属性情報が変換座標であることを示すように更新する（ステップＳ１２９）。
【００５９】
続いて、第２更新部２３は、取得部１３により取得された第１座標、値が当該第１座標の変換座標の値である第２座標、及び変換座標であることを示す属性情報を対応付けて記憶部１５に記憶する（ステップＳ１３１）。
【００６０】
続いて、表示制御部２５は、記憶部１５に記憶されている複数の第２座標を用いて表示ストロークを表示部２７に表示させ（ステップＳ１３３）、ステップＳ１０１へ戻る。
【００６１】
図９は、本実施形態のストローク処理装置１０で行われる処理の手順の流れの他の例を示すフローチャートである。
【００６２】
図９に示す例では、判定部１７は、部分ストロークが前図形パターンと類似しないと判定した場合（ステップＳ２２１でＮｏ）、ステップＳ２０９へ移行し、部分ストロークと類似する図形パターンが存在するか否かを判定する（ステップＳ２０９）。
【００６３】
なお、ステップＳ２０１〜Ｓ２１９、及びＳ２２７〜Ｓ２３３は、それぞれ、図８に示すフローチャートのステップＳ１０１〜Ｓ１１９、及びＳ１２７〜Ｓ１３３と同様である。
【００６４】
以上のように本実施形態によれば、入力ストロークの入力中に、当該入力ストロークをユーザが意図したと思われる表示ストロークに変換するため、入力ストロークの入力中に、当該入力ストロークがユーザの意図したストロークに変換されるか否かをユーザに把握させることができる。
【００６５】
特に本実施形態によれば、入力ストロークの入力中に、部分的な線分や折れ線の有無を判定し、判定結果に合わせて当該部分的な線分や折れ線を直線で変換して表示するので、入力ストロークの入力中に、部分的な線分や折れ線がユーザの意図したとおり変換されるか否かをユーザに把握させることができる。
【００６６】
（ハードウェア構成）
図１０は、本実施形態のストローク処理装置１０のハードウェア構成の一例を示すブロック図である。図１０に示すように、本実施形態のストローク処理装置１０は、ＣＰＵなどの制御装置９０１と、ＲＯＭ（Read  Only  Memory）やＲＡＭ（Random  Access  Memory）などの記憶装置９０２と、ＨＤＤやＳＳＤなどの外部記憶装置９０３と、ディスプレイなどの表示装置９０４と、マウスやキーボードなどの入力装置９０５と、通信Ｉ／Ｆなどの通信装置９０６とを、備えており、通常のコンピュータを利用したハードウェア構成で実現できる。
【００６７】
本実施形態のストローク処理装置１０で実行されるプログラムは、ＲＯＭ等に予め組み込んで提供される。また、本実施形態のストローク処理装置１０で実行されるプログラムを、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、ＣＤ−Ｒ、メモリカード、ＤＶＤ、フレキシブルディスク（ＦＤ）等のコンピュータで読み取り可能な記憶媒体に記憶されて提供するようにしてもよい。また、本実施形態のストローク処理装置１０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。
【００６８】
本実施形態のストローク処理装置１０で実行されるプログラムは、上述した各部をコンピュータ上で実現させるためのモジュール構成となっている。実際のハードウェアとしては、例えば、制御装置９０１が外部記憶装置９０３からプログラムを記憶装置９０２上に読み出して実行することにより、上記各部がコンピュータ上で実現されるようになっている。
【００６９】
以上説明したとおり、本実施形態によれば、入力ストロークの入力中に、当該入力ストロークがユーザの意図したストロークに変換されるか否かをユーザに把握させることができる。
【００７０】
なお本発明は、上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【００７１】
例えば、上記実施形態のフローチャートにおける各ステップを、その性質に反しない限り、実行順序を変更し、複数同時に実施し、あるいは実施毎に異なった順序で実施してもよい。
【符号の説明】
【００７２】
１０  ストローク処理装置
１１  入力部
１３  取得部
１５  記憶部
１７  判定部
１９  第１更新部
２１  変換部
２３  第２更新部
２５  表示制御部
２７  表示部
【図１】
2015064663.tif 000003
【図２】
2015064663.tif 000004
【図３】
2015064663.tif 000005
【図４】
2015064663.tif 000006
【図５】
2015064663.tif 000007
【図６】
2015064663.tif 000008
【図７】
2015064663.tif 000009
【図８】
2015064663.tif 000010
【図９】
2015064663.tif 000011
【図１０】
2015064663.tif 000012