(57)【要約】【課題】手書きオブジェクトの上下関係を考慮して処理できるようにすること。【解決手段】実施形態によれば、ストローク取得部、ストローク群生成部、上下関係判定部を備える。ストローク取得部とは、ストロークデータを取得する。ストローク群生成部は、前記ストロークデータをもとに、所定の基準を満たす１又は複数のストロークからなるストローク群を生成する。上下関係判定部は、レイヤ情報を生成するために、複数の前記ストローク群の上下関係を判定する。【選択図】図１
2014038385.tif 000002
【特許請求の範囲】
【請求項１】
ストロークデータを取得するストローク取得部と、
前記ストロークデータをもとに、所定の基準を満たす１又は複数のストロークからなるストローク群を生成するストローク群生成部と、
レイヤ情報を生成するために、複数の前記ストローク群の上下関係を判定する上下関係判定部とを備えたことを特徴とする手書き描画装置。
【請求項２】
前記上下関係判定部は、前記ストローク群の文字又は図形としての尤度を求め、該尤度に基づいて、前記上下関係を判定することを特徴とする請求項１記載の手書き描画装置。
【請求項３】
前記尤度は前記ストローク群の複雑度であり、該複雑度が閾値より高い場合には、上位レイヤを割り当てることを特徴とする請求項２記載の手書き描画装置。
【請求項４】
前記複雑度が該閾値より低い場合には、該複雑度が高いほど下位のレイヤを割り当てることを特徴とする請求項３記載の手書き描画装置。
【請求項５】
前記上下関係判定部は、二つの前記ストローク群が包含関係を有する場合に、包含される前記ストローク群に、上位レイヤを割り当てることを特徴とする請求項１記載の手書き描画装置。
【請求項６】
前記レイヤ情報に基づいて操作対象とするレイヤを特定し、該特定されたレイヤに対応する前記ストローク群に対し処理を実行することを特徴とする請求項１記載の手書き描画装置。
【請求項７】
前記処理は、図形に対する整形処理、編集処理又は描画処理であることを特徴とする請求項６の手書き描画装置。
【請求項８】
複数の前記ストローク群と、前記レイヤ情報により示される前記上下関係との対応を表示する表示部を更に備えたことを特徴とする請求項１記載の手書き描画装置。
【請求項９】
複数の前記ストローク群のうち、上位レイヤを割り当てられたストローク群に交差し、下位レイヤを割り当てられたストローク群について、当該下位レイヤを割り当てられたストローク群の一部を補間する補間部を更に備えたことを特徴とする請求項１記載の手書き描画装置。
【請求項１０】
前記補間部は、予め用意された図形テンプレートを利用して、前記補間を行うことを特徴とする請求項９記載の手書き描画装置。
【請求項１１】
手書き描画装置の手書き描画方法において、
ストロークデータを取得するステップと、
前記ストロークデータをもとに、所定の基準を満たす１又は複数のストロークからなるストローク群を生成するステップと、
レイヤ情報を生成するために、複数の前記ストローク群の上下関係を判定するステップとを有することを特徴とする手書き描画方法。
【請求項１２】
コンピュータを手書き描画装置として機能させるためのプログラムであって、
ストロークデータを取得するストローク取得部と、
前記ストロークデータをもとに、所定の基準を満たす１又は複数のストロークからなるストローク群を生成するストローク群生成部と、
レイヤ情報を生成するために、複数の前記ストローク群の上下関係を判定する上下関係判定部とをコンピュータに実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、手書き描画装置、方法及びプログラムに関する。
【背景技術】
【０００２】
予め形状が特定された複数のオブジェクトの重なり状態を判定する文書処理装置が知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２２５７３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、複数の手書きオブジェクトの上下関係を考慮してオブジェクトを処理することのできる手書き描画装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
実施形態によれば、ストローク取得部、ストローク群生成部、上下関係判定部を備える。ストローク取得部は、ストロークデータを取得する。ストローク群生成部は、前記ストロークデータをもとに、所定の基準を満たす１又は複数のストロークからなるストローク群を生成する。上下関係判定部は、レイヤ情報を生成するために、複数の前記ストローク群の上下関係を判定する。
【図面の簡単な説明】
【０００６】
【図１】本実施形態に係る手書き描画装置の構成例を示す図である。
【図２】本実施形態に係る手書き描画装置の処理例を示すフローチャートである。
【図３】本実施形態に係る手書き描画装置の処理例を示すフローチャートである。
【図４】インクデータのフォーマットの一例を示す図である。
【図５】ストロークデータの入力について説明するための図である。
【図６】属性及びレイヤについて説明するための図である。
【図７】ストローク群データのフォーマットの一例を示す図である。
【図８】本実施形態に係る手書き描画装置の処理例を示すフローチャートである。
【図９】レイヤ情報のフォーマットの一例を示す図である。
【図１０】レイヤ処理の例を説明するための図である。
【図１１】レイヤ処理の例を説明するための図である。
【図１２】レイヤ処理の例を説明するための図である。
【図１３】レイヤ処理の例を説明するための図である。
【図１４】レイヤ処理の例を説明するための図である。
【図１５】本実施形態に係る手書き描画装置の処理例を示すフローチャートである。
【図１６】本実施形態に係る手書き描画装置の処理例を示すフローチャートである。
【図１７】レイヤストローク群の処理の例を説明するための図である。
【図１８】レイヤストローク群の処理の例を説明するための図である。
【図１９】レイヤストローク群の処理の例を説明するための図である。
【図２０】レイヤストローク群の処理の例を説明するための図である。
【図２１】レイヤストローク群の処理の例を説明するための図である。
【図２２】レイヤストローク群の処理の例を説明するための図である。
【図２３】レイヤストローク群の処理の例を説明するための図である。
【図２４】レイヤストローク群の処理の例を説明するための図である。
【図２５】ハードウェア構成例について説明するための図である。
【図２６】ネットワークを伴う構成例について説明するための図である。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら本発明の実施形態に係る手書き描画装置について詳細に説明する。なお、以下の実施形態では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。
【０００８】
図１に、本実施形態の手書き描画装置の構成例を示す。図１に示されるように、本実施形態の手書き描画装置は、ストローク取得部１、ストローク群データ生成部２、ストローク群処理部３、操作部４、表示部５、インクデータデータベース（インクデータＤＢ）１１、ストローク群データベース（ストローク群ＤＢ）１２、レイヤ情報データベース（レイヤ情報ＤＢ）１３を備えている。
【０００９】
ストローク取得部１は、ストロークを取得する。なお、ストロークとは手書き入力された筆画である。具体的には、ペン等が文書の記載を行う面に接してから離れるまでの軌跡を表す。所定の場所を原点とした座標を記録して用いるものであればよく、タッチパネル式の入力面にペンや指等で記載した軌跡を用いてもよいし、紙に記載し手書きの軌跡を記録して用いてもよい。
【００１０】
インクデータＤＢ１１は、ストロークを所定単位でまとめたインクデータを記憶する。所定単位とは、電子機器上で設定されたページや文書などを指す。
【００１１】
ストローク群データ生成部２は、インクデータから、ストローク群のデータを生成する。また、複数のストローク群の間の上下関係を示すレイヤ情報を生成する。例えば、手書き文書の表示面に重なった場合、表示面に近いほど上位に位置することを意味する。なお、本実施形態では、レイヤ情報は、局所的な上下関係ごとに保持することを想定しているが、これに加えて又はその代わりに、文書中のグローバルなレイヤ情報を設けても良い。
【００１２】
ストローク群ＤＢ１２は、個々のストローク群のデータを記憶する。１つのストローク群は、一纏まりとなる１又は複数のストロークからなる。詳しくは後述するが、例えば、手書き文字について、行又は単語などをストローク群とすることができる。また、例えば、図形について、フローチャートの要素図形、表、イラストなどをストローク群とすることができる。本実施形態では、ストローク群が、処理の基本的な単位となる。これらストローク群をオブジェクトと呼ぶ。
【００１３】
レイヤ情報ＤＢ１３は、レイヤ情報を記憶する。
【００１４】
ストローク群処理部３は、ストローク群に関する処理を行う。
【００１５】
操作部４は、ストローク群に関する処理のために、ユーザが操作するためのものである。操作部４は、ＧＵＩを提供しても良い。
【００１６】
表示部５は、ストロークに関する情報、オブジェクトに関する情報、レイヤに関する情報、オブジェクトに対する処理の結果、レイヤに対する処理の結果などを提示する。
【００１７】
なお、ストローク取得部１と操作部４と表示部５の全部又は一部を、（例えばＧＵＩとして）統合して構成しても良い。
【００１８】
詳しくは後述するが、ストローク群データ生成部２は、ストローク群生成部２１、属性抽出部２２、上下関係判定部２３、オブジェクト要素補間部２４を含んでも良い。
【００１９】
また、ストローク群処理部３は、複数のオブジェクトの間のレイヤに関する処理（操作）を行うレイヤ処理部３１と、指定されたオブジェクトに対する所定の処理を実行する実行部３２を含んでも良い。
【００２０】
なお、レイヤに関する処理には、例えば、  
・重なった文字列・図形の選択、  
・重なった文字列・図形への上下関係の付与、  
・重なった文字列・図形の上下関係の変更、  
・重なった図形の隠れた部分の補完、  
・上下関係の提示、  
などがある（ただし、これらに制限されない）。
【００２１】
ただし、本実施形態の手書き描画装置は、必ずしも図１中の全要素を備えなくても良い。
【００２２】
図２に、本実施形態の手書き描画装置の処理の一例を示す。
【００２３】
ステップＳ１において、ストローク取得部１が、ストロークデータを取得する。前述の通り、ストロークデータを所定単位でまとめたインクデータを取得して用いてもよい。
【００２４】
ステップＳ２において、ストローク群データ生成部２（ストローク群生成部２１）が、該インクデータから、ストローク群のデータを生成する。
【００２５】
ステップＳ３において、ストローク群データ生成部２（属性抽出部２２）が、属性を抽出する。
【００２６】
ステップＳ４において、ストローク群データ生成部２（上下関係判定部２３）が、付加情報を生成する。
【００２７】
ステップＳ５において、表示部５が、ストローク群と、属性／レイヤ情報との対応を提示する。
【００２８】
なお、ステップＳ２〜Ｓ４を上記とは異なる順序で実行しても良い。
【００２９】
また、ステップＳ４の後で、ストローク群データ生成部２（オブジェクト要素補間部２４）が、オブジェクト要素を補間しても良い。
【００３０】
また、ステップＳ６において、一部のデータの提示を省いても良い。また、ステップＳ６を省いても良いし、ステップＳ６の代わりに又はステップＳ６に加えて、ストローク群／属性／レイヤ情報の全部又は一部を表示装置以外の装置へ向けて出力しても良い。
【００３１】
図３に、本実施形態の手書き描画装置の処理の他の例を示す。
【００３２】
ステップＳ１１〜Ｓ１４は、図２のステップＳ１〜Ｓ４と同様である。
【００３３】
ステップＳ１５において、ストローク群処理部３（レイヤ処理部３１）が、処理対象となるレイヤを特定する。
【００３４】
ステップＳ１６において、ストローク群処理部３（実行部３２）が、特定されたレイヤ又は該特定されたレイヤに対応するオブジェクトに対する処理を実行する。
【００３５】
ステップＳ１７において、表示部５が、処理結果を提示する。
【００３６】
なお、ステップＳ１７の代わりに又はステップＳ１７に加えて、処理結果を表示装置以外の装置へ向けて出力しても良い。
【００３７】
なお、図２及び図３は例であり、これらの他にも様々な処理手順が可能である。
【００３８】
ストローク取得部１及びインクデータＤＢ１１について説明する。
【００３９】
ストローク取得部１は、手書きストロークを取得するためのものである。
【００４０】
ここでは、ユーザが筆記するストロークを取得する場合を中心に説明を行う。なお、この手書き入力の方法には、タッチパネル上でペンにより入力する方法、タッチパネル上で指により入力する方法、タッチパッド上で指により入力する方法、マウスを操作して入力する方法、電子ペンによる方法など、種々の方法を用いることができる。
【００４１】
ユーザが筆記したストローク群は、例えば、ユーザが文書を書き終わる際或いは保存する際などに、インクデータＤＢ１１として蓄積される。インクデータは、文書単位等でストローク群を格納するためのデータ構造である。
【００４２】
次に、図４を参照しながら、インクデータのデータ構造及びストロークデータのデータ構造について説明する。
【００４３】
通常、ストロークは、所定のタイミングで（例えば一定周期で）軌跡上の点がサンプリングされる。従って、サンプリングされた点の系列により表現される。
【００４４】
図４（ｂ）の例において、１ストローク分（すなわち、１画分）のストローク構造は、ペンが移動した平面上の座標値の集合（点構造）で表現される。具体的には、そのストロークを形成する点の個数を示す「点総数」、「開始時刻」、「外接図形」、点総数に相当する個数の「点構造」の配列を含む構造体である。ここで、開始時刻は、そのストロークにおいてペンが入力面に接して書き出された時刻を示す。外接図形は、文書平面上においてそのストロークの軌跡に対する外接図形（好ましくは、文書平面上においてそのストロークを内包する最小面積の矩形）を示す。
【００４５】
点の構造は、入力デバイスに依存し得る。図４（ｃ）の例では、１点の構造は、その点がサンプリングされた座標値ｘ，ｙ、筆圧並びに初期点（例えば上記の「開始時刻」）からの時間差の４値を持つ構造体である。
【００４６】
なお、座標は文書平面の座標系であり、左上の隅の原点として右下の隅になるほど値が大きくなる正の値で表現しても良い。
【００４７】
また、入力デバイスが筆圧を取得できない場合或いは筆圧を取得できても以降の処理で筆圧を使用しない場合には、図４（ｃ）の筆圧を省いても良いし或いは筆圧に無効を示すデータを記述しても良い。
【００４８】
なお、図４（ｂ），（ｃ）の例において、ストローク構造における個々の点構造の領域に、座標値ｘ，ｙ等の実データを記載しても良いし、あるいは、ストローク構造のデータと点構造のデータとを別々に管理するものとして、ストローク構造における個々の点構造の領域に、対応する点構造へのリンク情報を記載しても良い。
【００４９】
図５に、取得されるストロークの例を示す。ここでは、ストローク内のサンプル点のサンプリング周期が一定である場合を例にとって説明する。図５（ａ）は、サンプリングした点の座標を示しており、図５（ｂ）は、時間的に連続する点構造を線形補間して示している。サンプリング点の座標間隔が異なるのは、筆速の違いによるものである。サンプリング点数は、個々のストロークにより異なり得る。
【００５０】
図４（ａ）の例において、インクデータのデータ構造は、その文書の全領域に含まれるストローク構造の個数を示す「ストローク総数」、ストローク総数に相当する個数の「ストローク構造」の配列を含む構造体である。
【００５１】
なお、図４（ａ），（ｂ）の例において、インクデータ構造における個々のストローク構造の領域に、図４（ｂ）のデータを記載しても良いし、あるいは、インクデータ構造のデータと、図４（ｂ）のストロークのデータ構造とを別々に管理するものとして、インクデータ構造における個々のストロークのデータ構造の領域に、対応する図４（ｂ）のデータへのリンク情報を記載しても良い。
【００５２】
入力デバイスを用いてユーザが筆記したストロークデータは、例えば図４に示すようなインクデータ構造によりメモリ上に展開される。インクデータは、例えば文書として保存される際などに、インクデータＤＢ１１として蓄積される。
【００５３】
なお、複数の文書を蓄積する場合に、それら文書を識別するための文書ＩＤを、各インクデータに対応付けて保存しても良い。また、個々のストロークを識別するために、各ストローク構造にストロークＩＤを付与しても良い。
【００５４】
次に、ストローク群データ生成部２（ストローク群生成部２１、属性抽出部２２、上下関係判定部２３、オブジェクト要素補間部２４）及びストローク群ＤＢ１２について説明する。
【００５５】
ストローク群生成部２１は、手書き文書（インクデータ）から、一纏まりとなる１又は複数のストロークからなるストローク群を生成する（あるいは、複数のストロークを「文字」又は「図形」などを表すオブジェクトに分割する）。１つのストロークは、いずれか１つのストローク群に属する。
【００５６】
なお、所定の基準或いはストローク群生成方法は、適宜設定又は選択等し得る。例えば、文字について、行、単語、文字のいずれをストローク群とするかに応じて選択できる。また、図形について、例えば、一つの表の罫線全体を一つのストローク群とするか、一つの表の個々の罫線（線分）をそれぞれ１つのストローク群とするかに応じて選択できる。また、交差する２つの線分を全体で１つのストローク群とするか、交差する２つの線分を２つのストローク群とするかに応じて選択できる。その他にも、様々な目的等に応じて、ストローク群生成方法を変えることができる。
【００５７】
また、ストローク群を生成する契機には、様々な方法がある。例えば、１ページの文書の入力が完了した際に、あるいは、過去に入力された１ページの文書に対して、ストローク群を生成する処理を行っても良い。また、例えば、ユーザが、ストローク群を生成する指示を与えても良い。また、例えば、所定の時間の間、ストロークが入力されなかったことを契機として、ストローク群を生成する処理を開始しても良い。また、ある領域にストロークが入力されていた場合に、その領域から所定の範囲内について、所定の時間の間、ストロークが入力されなかったことを契機として、その領域内のストローク群を生成する処理を開始しても良い。
【００５８】
属性抽出部２２は、個々のストローク群に固有の属性を抽出する。抽出された属性は、ストローク群に対して付与される。属性は、例えば、文字又は図形である。属性の更なる例は、表、イラスト、数式などである。
【００５９】
なお、ストローク群生成部２１と属性抽出部２２が、統合されても良い。すなわち、ストローク群と属性が同時に得られる方法を用いても良い。
【００６０】
ストローク群を生成する方法には、様々な方法が利用可能である。
【００６１】
例えば、以下のような方法が考えられる。
【００６２】
（１）一定の時間内に入力された１又は複数のストロークの集合を、１つのストローク群とする。
【００６３】
（２）ストローク間の距離が、予め定められた閾値以下である１又は複数のストロークの集合を、１つのストローク群とする。ストローク間の距離とは、例えば、ストローク位置の重心の間の距離、あるいは、ストロークに外接する図形（例えば矩形などの多角形又は円若しくは楕円など）の重心点の間の距離である。
【００６４】
（３）隣接する線分構造に着目し、ストロークの頂点数と連続する頂点間の線分の種別から、図形作成の上で基本となる基本図形を構成する要素群を抽出し、さらに、抽出した基本図形の相対位置関係から、一つの図形を構成するストローク群に分割する（例えば、児島 治彦:隣接線分構造解析法によるオンライン手書き図形入力方式, 情報処理学会研究報告ヒューマンコンピュータインタラクション  26,P1-9,（1986）を参照）。
【００６５】
（４）これらを組み合わせた手法。
【００６６】
上記は例であり、利用可能なストローク群生成方法は、これに限定されない。また、公知の手法を利用しても構わない。
【００６７】
なお、ストローク群を連鎖的に拡張しても良い。例えば、ストロークａとストロークｂが１つのストローク群となる条件を満たし、ストロークｂとストロークｃが１つのストローク群となる条件を満たす場合には、ストロークａとストロークｃが１つのストローク群となる条件を満たすか否かにかかわらずに、ストロークａとストロークｂとストロークｃを、１つのストローク群としても良い。
【００６８】
また、孤立したストロークは、それ自身を１つのストローク群として扱ってもよい。
【００６９】
属性抽出部２２は、上記生成された個々のストローク群に固有の属性を抽出する。
【００７０】
属性の抽出には、種々の方法がある。
【００７１】
属性抽出部２２は、例えば、ストローク群を文字認識し、その尤度から、該ストローク群が文字であるか否か判定し、文字であると判定された場合に、該ストローク群の属性を文字としても良い。同様に、属性抽出部２２は、例えば、ストローク群を図形認識し、その尤度から、該ストローク群が図形であるか否か判定し、図形であると判定された場合に、該ストローク群の属性を図形としても良い。あるいは、属性抽出部２２は、例えば、「閾値以上のストローク長を有するストロークを含むストローク群については、属性を図形とする」というようなルールを用意し適用しても良い。
【００７２】
なお、文字とも図形とも認識されなかったストローク群の扱いについては、種々の方法が考えられる。文字とも図形とも認識されなかったストローク群には、例えば、予め定められた属性（例えば図形）を属性として付与しても良い。あるいは、例えば、周辺のストローク群から属性を推定しても良い。例えば、周辺のストローク群の属性の多数が文字である場合には属性を文字とし、周辺のストローク群の属性の多数が図形である場合には属性を図形としても良い。また、例えば、「属性が図形であるストローク群に囲まれているストローク群の属性を文字とする」というようなルールを用意し適用しても良い。
【００７３】
ここで、図６を参照しながら、ストローク群及び属性の例について説明する。
【００７４】
図６の（ａ）は、手書き文書（ストローク列）の例である。例えば、図６の（ａ）のストローク列から、（ｂ）のように、１００１〜１００３の３つのストローク群が生成される。１００１のストローク群には属性「文字」が付与され、１００２と１００３のストローク群には属性「図形」が付与される。
【００７５】
次に、ストローク群のデータ構造について説明する。
【００７６】
ストローク群のデータ構造としては、種々のものが考えられる。
【００７７】
図７に、個々のストローク群のデータ構造の例を示す。図７の例では、１つのストローク群のデータは、「ストローク群ＩＤ」、「ストロークのデータ」、「属性」を含む。
【００７８】
「ストローク群ＩＤ」（以下、オブジェクトＩＤとも呼ぶ。）は、当該文書中でストローク群を識別する識別子である。
【００７９】
「ストロークのデータ」は、当該ストローク群を構成する１又は複数のストロークを特定可能とするデータである。「ストロークのデータ」には、当該ストローク群を構成する個々のストロークに対応するストローク構造（図４（ａ）参照）を保持しても良いし、当該ストローク群を構成する個々のストロークに対応するストロークＩＤを保持しても良い。
【００８０】
「属性」は、いずれのストローク群にも少なくとも１つ付与される。
【００８１】
また、ストローク群のデータには、他の種々の情報を保持しても良い。他の情報とは、オブジェクトの位置や位置関係を表す。また閉じた図形か否かなどの属性も含む。
【００８２】
次に、上下関係判定部２３及びオブジェクト要素補間部２４について説明する。
【００８３】
上下関係判定部２３は、所定の関係（例えば、包含関係又は交差関係）にある複数のストローク群について、オブジェクト間の上下関係を判定する。
【００８４】
例えば、図６の例において、（ｃ）のように、最上位レイヤに１００３の属性「文字」のストローク群、次のレイヤに１００２の「閉じた図形の」のストローク群、そして、次のレイヤに１００３の「開いた図形の」のストローク群が割り当てられる。
【００８５】
なお、所定の関係には、例えば、一方のストローク群が他のストローク群の内部に包含する包含関係、２つのストローク群が部分的にオーバーラップする交差関係、２つのストローク群が接続する接続関係、２つのストローク群が隣接する隣接関係がある。なお、位置的に離れた２つのストローク群は、上記のいずれの関係性も持たない。
【００８６】
本実施形態では、のいずれの関係性も持たないオブジェクト間については、レイヤ関係を扱わなくても良い。
【００８７】
さて、例えば、図６（ａ）において、ストロークデータだけでは、１００１のストロークと１００２のストロークには関係がなく、上下関係も規定されない。本実施形態では、例えばオブジェクトの尤度などから上下関係を判定することで、ユーザの意図した重なりを再現することができる。
【００８８】
例えば、対象オブジェクトの形が規定されていないストロークデータを入力とする場合も、文字・図形等のオブジェクトを構成する要素群に分類する。そして、ストロークでは重なり関係が判定できないものの重なりを、オブジェクトの属性から判定する。ストロークデータを入力とし、ストロークデータを文字または図形等の１オブジェクトを構成するストローク群に分類する。分類したストローク群に対し尤度を算出する。尤度は、例えば文字らしさを表す文字尤度、図形らしさを表す図形尤度などであり、後述する複雑度を算出して用いてもよい。複雑度がしきい値以上の場合の複雑度を文字尤度とし、図形尤度を０とする。しきい値以下の場合、複雑度の逆数を図形尤度、文字尤度を０とする。各ストローク群を文字・図形尤度が高いストローク群ほどディスプレイ面に対する上下関係（レイヤ）が上位となるよう、入力されたストローク群の関係を判定する。これによって、ストロークデータでも同じように重なったオブジェクトを操作することができる（操作したい対象オブジェクトを事前知識なく簡易かつ直感的に操作できる）。
【００８９】
上下関係の判定には、種々の方法が考えられる。
【００９０】
例えば、ストローク群に含まれる屈曲点を、ストローク群の複雑度として算出する。算出した複雑度がしきい値以上の場合、複雑度をオブジェクト尤度とする。
【００９１】
しきい値以下の場合は、複雑度の逆数をオブジェクト尤度とする。各ストローク群をオブジェクト尤度が高いストローク群ほどディスプレイ面に対する上下関係（レイヤ）が上位となるように、入力されたストローク群の関係を決定する。
【００９２】
あるいは、例えば、各ストローク群が文字や図形などの予め規定したオブジェクトのいずれに属するかを判定するように予め学習された識別器を用いて、オブジェクト尤度を算出しても良い。
【００９３】
図８に、上下関係判定の手順例を示す。
【００９４】
ステップＳ２１において、オブジェクトを構成するストローク群に分類する。
【００９５】
ステップＳ２２において、オブジェクトの複雑度を算出する。
【００９６】
ステップＳ２３において、複雑度がしきい値以上か判定する。複雑度がしきい値以上ならば、ステップＳ２４に進み、そうでなければ、ステップＳ２５に進む。
【００９７】
ステップＳ２４において、最上位レイヤに登録する。
【００９８】
ステップＳ２５において、複雑度が低くかつもっとも近いレイヤの下位に登録する。
【００９９】
なお、上記は一例であり、これに制限されるものではない。
【０１００】
判定された上下関係は、ストローク群のデータ中で保持しても良いが、これに加えて又はその代わりに、ストローク群のデータとは独立した、オブジェクト間の上下関係を示すレイヤ情報データベースを保持しても良い。図１は、レイヤ情報データベース（レイヤ情報ＤＢ）１３を備える場合を例示している。
【０１０１】
図９に、レイヤ情報の一例を示す。
【０１０２】
例えば、図６の例において、第１層に、１００３のオブジェクトのオブジェクトＩＤ、第２層に、１００２のオブジェクトのオブジェクトＩＤ、第３層に、１００３のオブジェクトのオブジェクトＩＤが登録される。
【０１０３】
オブジェクト要素補間部２４は複数のストローク群が所定の関係にある場合に、オブジェクトの一部を補間する。複数のストローク群の所定の関係は、例えば、包含関係又は交差関係、隣接関係等である。例えば、相対的に下位にあるオブジェクトの一部分が相対的に上位にある他のオブジェクトに隠れている場合を想定する。ストローク群は交差関係または隣接関係であるが、この場合、相対的に下位にあるオブジェクトの隠れた部分は、ユーザにとって矩形等を意味する場合が多い。即ち、ストロークデータの一部が存在しない状態になる。オブジェクト要素補間部２４は隠れている部分を補間する。即ち、当該一部分のデータを生成する。
【０１０４】
より具体的には図６の例において、（ｂ）のように、１００３のオブジェクトのうち、１００２のオブジェクトに隠れた部分が補間され、１００３のオブジェクトは矩形として扱われる。
【０１０５】
以下、上下関係判定の基準の例について説明する。
【０１０６】
上下関係判定の基準には、種々のものが考えられる。また、複数の基準のうちから、ユーザが任意に選択できるようにしても良い。
【０１０７】
例えば、  
・入力時間が遅いオブジェクトを、上位レイヤとする。  
・内包されているオブジェクトを、上位レイヤとする。  
・ストロークの屈曲点数により規定される形状の複雑度がしきい値以上なら、文字として上位レイヤとし、しきい値以下のオブジェクトは図形と判断し、複雑度が高い順に下位レイヤとする。  
・文字尤度が高いほど、上位レイヤとする。  
・図形尤度が高いほど、上位レイヤとする。  
・閉じた図形のオブジェクトを、開いた図形のオブジェクトより、上位レイヤにする。  
・閉じた図形のオブジェクトに対して両端点が接続される図形のオブジェクトを、閉じた図形のオブジェクトより下位レイヤにする。  
などが考えられる。
【０１０８】
図１０に、上下関係判定の例を示す。（ａ）は、手書きされたオブジェクトであり、（ｂ）はレイヤ情報を示す。
【０１０９】
（ａ）のように、閉じた図形のオブジェクトが、閉じた図形のオブジェクトを内包する場合に、（ｂ）のように、内包されるオブジェクトを上位レイヤとする。
【０１１０】
図１１に、上下関係判定の他の例を示す。
【０１１１】
（ａ）のように、文字のオブジェクトと、閉じた図形のオブジェクトと、開いた図形のオブジェクトとが重なり合う場合に、（ｂ）のように、複雑度が閾値以上のオブジェクトがあれば、そのオブジェクト（図１１の例では、文字のオブジェクト）を最上位レイヤとし、複雑度が閾値以下のものについては、複雑度が低いオブジェクトほど、上位にする。
【０１１２】
また、文字尤度・図形尤度をあらかじめ学習した識別器で算出しても良い。
【０１１３】
図１２に、上下関係判定の他の例を示す。
【０１１４】
（ａ）のように、文字のオブジェクトと、閉じた図形のオブジェクトと、開いた図形のオブジェクトとが重なり合う場合に、（ｂ）のように、文字尤度が高いオブジェクトを上位レイヤとし、それ以外を下位にする。
【０１１５】
図１３に、上下関係判定の他の例を示す。
【０１１６】
（ａ）のように、閉じた図形のオブジェクトと、開いた図形のオブジェクトとが重なり合う場合に、（ｂ）のように、図形尤度が高いオブジェクト（この例では、閉じた図形のオブジェクト）ほど、上位レイヤとする。
【０１１７】
また、例えば、上下関係の判定の際に、文字・図形尤度ともに、オブジェクト間の関係を用いるようにしても良い。例えば、オブジェクト間に包含又は交差の関係がある場合、当該関係にあるオブジェクトのレイヤを隣接させるようにしても良い。
【０１１８】
図１２に、上下関係判定及びレイヤ情報の例を示す。
【０１１９】
例えば、「・りんご」の文字オブジェクトと、「・みかん」の文字オブジェクトが存在する場合に、（ａ）のように、「・りんご」の文字オブジェクトを囲う枠が手書きされた場合に（１４０１参照）、新たなストローク群として、該「・りんご」の文字オブジェクトを囲う枠を示す図形オブジェクトが生成される。このとき、１４０２のように、新たな図形オブジェクトに最下位レイヤを割り当てると、それらが離れたレイヤになっています。そこで、新たな図形オブジェクトは、「・りんご」の文字オブジェクトと、包含又は交差の関係をもつことにより、（ｂ）の１４０３のように、関係の強い「・りんご」の文字オブジェクトの直ぐ下のレイヤに新たな図形オブジェクトを挿入するようにしても良い。
【０１２０】
以下、ストローク群の生成及び属性の抽出方法の他の例を説明する。
【０１２１】
手書き文書は、まず、文字領域と図形領域に分類される。
【０１２２】
各々の「文字領域」の内包領域は、更に複数の領域に分類し得る。  次に、分類処理の例について説明する。手書き文書は、文字領域と図形領域と表領域の単位に分類する  例えば、各ストロークが文字と図形と表とのいずれに属するかを判定するように予め学習された識別器を用いて、ストロークに対して尤度を算出し、文書平面上での空間的な近さと連続性を加味するためマルコフ確率場（Markov random field；ＭＲＦ）で表現し、最も分離のよい領域を推定することによって、文字領域と図形領域と表領域に領域分割しても良い（例えば、“X.-D. Zhou, J.-L. Yu, C.-L. Liu, T. Nagasaki, and K. Marukawa, “Online Handwritten Japanese Character String Recognition Incorporating Geometric Context,” Proc. Ninth Int’l Conf. Document Analysis and Recognition, Curitiba, Brazil, pp. 48-52, 2007.”を参照）。
【０１２３】
なお、文字領域と図形領域と表領域の分類は、上記手法に制限されない。
【０１２４】
これまで、インクデータからストローク群のデータの生成を中心に説明してきたが、以下では、ストローク群に対する処理を中心に説明する。なお、処理の対象とするストローク群は、例えば、図１のストローク群データ生成部２により生成されたものであっても良いし、外部から取得したものであっても良い。
【０１２５】
次に、ストローク群処理部３について説明する。
【０１２６】
ストローク群処理部３は、オブジェクト（ストローク群）に関する処理を行う１又は複数の種々の処理部を含むことができる。図１では、例として、複数のオブジェクトの間のレイヤに関する処理を行うレイヤ処理部３１と、指定されたオブジェクトに対する所定の処理を実行する実行部３２を示している（ただし、本実施形態は、これに制限されるものではない）。
【０１２７】
ストローク群に対する所定の処理には、様々なものがある。例えば、整形処理、編集処理、描画処理、補間処理、検索処理などがある。
【０１２８】
レイヤ処理部３１は、包含関係又は交差関係にある複数のオブジェクトのレイヤに関する処理を行う。例えば、包含関係又は交差関係にある複数のオブジェクトのうちで、指定されたオブジェクトを特定する処理、それら複数のオブジェクトの上下関係を変更する処理などがある。
【０１２９】
実行部３２は、指定されたオブジェクトに対する所定の処理を実行する。
【０１３０】
なお、ストローク群処理部３は、必要に応じて、図１の上下関係判定部２３及びオブジェクト要素補間部２４を利用しても良い。あるいは、ストローク群処理部３は、独自に上下関係判定部及びオブジェクト要素補間部を含んでも良い。
【０１３１】
以下、ストローク群処理部３の幾つかの処理手順例を示す。
【０１３２】
図１５に、ストローク群処理部３の処理の一例を示す。
【０１３３】
ステップＳ３１で、ユーザの操作を受け付け、ステップＳ３２で、ユーザ操作から、処理対象となるレイヤを特定し、ステップＳ２３で、特定されたレイヤに関する情報を提示する。
【０１３４】
図１６に、ストローク群処理部３の処理の一例を示す。
【０１３５】
ステップＳ４１で、ユーザの操作を受け付け、ステップＳ４２で、ユーザ操作から、処理対象となるレイヤを特定し、ステップＳ４３で、特定されたレイヤに対する処理を実行し、ステップＳ４４で、処理結果を提示する。
【０１３６】
なお、図１５，１９は例であり、これらの他にも様々な処理手順が可能である。
【０１３７】
以下では、ストローク群に対する処理の幾つかの例について説明する。
【０１３８】
＜図形整形の例＞
図１７に、図形整形の例を示す。
【０１３９】
（ａ）のように、手書きストロークが入力されたとする。
【０１４０】
このストロークから、図形オブジェクトと、文字オブジェクトが判別・生成される。また、それら、図形オブジェクトと文字オブジェクトのディスプレイ面に対する上下関係が判定される。文字オブジェクトに上位レイヤが割り当てられ、レイヤ情報が保持される。更に、整形処理が行われる。この結果を（ｂ）に示す。整形処理されたデータは、他のアプリケーションソフトウェア用にフォーマット変換されても良い。
【０１４１】
また、文字オブジェクトが図形オブジェクトに内包される関係であることが判別してもよい。内包関係が明らかである場合には、文字オブジェクトを上位レイヤに当てはめることが容易になるため良い。
【０１４２】
例えば、上記データが２次利用されても良い。例えば、下位レイヤの図形オブジェクトに色付けがなされても、（ｃ）のように、上位レイヤの文字オブジェクトが隠れないようになる。
【０１４３】
＜図形編集図形整形の例＞
図１８に、図形編集図形整形の例を示す。
【０１４４】
例えば、・（部分）レイヤ関係表示
ストロークの重なりがなくとも、認識したオブジェクトの面が重なりを有するときは、表示する。
【０１４５】
例えば、図１８のように、ユーザが、重なり合うオブジェクトの領域を操作しようとする場合に、ユーザにレイヤ関係を提示しても良い。
【０１４６】
レイヤ関係の提示の仕方には、種々の方法が考えられる。例えば、図１４のようにレイヤ情報を表示しても良いし、また、例えば、図１８のように、関係するオブジェクトを３次元的に表示しても良い。
【０１４７】
＜図形編集図形整形の例＞
図１９に、図形編集図形整形の例を示す。
【０１４８】
例えば、（ａ）の図形オブジェクトの内部に、更に（ｂ）のようにユーザが図形オブジェクトを手書きする場合に（１９０１参照）、（ｃ）のように上位レイヤの図形オブジェクトを色付けすることによって、ユーザにレイヤ関係を提示することができる。なお、この色付けは、一時的でも良い。
【０１４９】
＜図形編集・描画の例＞
図２０に、図形編集・描画の例を示す。
【０１５０】
例えば、（ａ）のように、閉じた図形オブジェクトと、開いた図形オブジェクトが重なっているとする。そして、（ｂ）のように、閉じた図形オブジェクトに上位レイヤが割り当てられる。
【０１５１】
この場合に、下位レイヤ図形の隠れた部分を、上位レイヤがオーバーレイする部分以外の領域を用いて判別あるいは推定するようにしても良い。
【０１５２】
例えば、開いた図形オブジェクトの欠けた部分（２００１参照）を、図形テンプレート（２００２参照）を利用して、補間しても良い。例えば、（ｃ）のように、矩形になるように補間される（２００３参照）。
【０１５３】
このように、下位レイヤ図形のストロークを自動的に補間することができる。これによって、（ｃ）のように、上位レイヤが移動しても、下位レイヤ図形の隠れていた部分が補間されて、出現する。
【０１５４】
＜図形描画の例＞
図２１に、図形描画の例を示す。
【０１５５】
例えば、（ａ）のように、図形オブジェクトが他の図形オブジェクトを内包している場合に、（ｂ）（ｃ）のように順次色付けするものとする（２１０１，２１０２参照）。この場合、下位の図形の面を維持（補間）しても良い。すなわち、下位レイヤの図形オブジェクトの隠れている部分も、色付けしても良い。（ｄ）のように、ユーザが上入レイヤのオブジェクトを移動しても、下位レイヤの図形オブジェクトの現れた部分は、色付けが済んでいる。
【０１５６】
＜図形描画（オンライン）の例＞
図２２に、図形描画（オンライン）の例を示す。
【０１５７】
例えば、一つの図形オブジェクトがあり、その下位レイヤにもう一つの図形オブジェクトを書きたい場合には、例えば、（ａ）のように、下位レイヤにしたい図形を、その一部の両端点が既存の図形に接続するように書くことによって（２２０１参照）、（ｂ）のように、追加した図形に下位レイヤを割り当てるとともに、隠れて書かれた部分を補間することができる（２２０２参照）。一般に、図形の一部が上位レイヤの図形に隠れることによって、当該図形が相対的に下位レイヤの図形であることが分かる。相対的に下位に位置するレイヤを利用する場合、隠れた部分を上述のように補間することで、ユーザが意図した図形を提示することが可能になる。
【０１５８】
図２３に、図形描画の他の例を示す。
【０１５９】
図２２（ａ）の状態で、更に、上位レイヤに図形オブジェクトを追加したい場合には、例えば、図２３（ａ）のように、重ねたい図形の上に、閉じた図形を描く（２３０１参照）。これによって、（ｂ）のように、後から追記され、完全に書かれた図形を最上位レイヤに登録することができる。
【０１６０】
＜編集の例＞
図２４に、編集の例を示す。
【０１６１】
例えば、（ａ）のように、「・りんご」の文字オブジェクトと、「・みかん」の文字オブジェクトと、「・りんご」に対する取り消し線を示す図形オブジェクトが存在するとする。従来、「・りんご」と「取り消し線」の部分を、電子消しゴム（２４０１）で消すと、「・りんご」と「取り消し線」の部分が同時に消去される。本実施形態によれば、「・りんご」又は「取り消し線」が異なるレイヤに登録されているので、操作対象とするレイヤを選択することによって、「・りんご」又は「取り消し線」のいずれかのみを消去することができる。また、（ｃ）のように、操作対象とするレイヤを選択することによって、「・りんご」又は「取り消し線」のいずれかのみを移動することもできる。
【０１６２】
以下、本実施形態のバリエーションについて説明する。
【０１６３】
本実施形態の手書き描画装置のストローク群処理部３は、手書き描画装置の内部に蓄積されている手書き文書群を対象としても良いし、手書き描画装置がイントラネット及び／又はインターネット等のネットワークに接続可能である場合に、ネットワークを介してアクセス可能な手書き文書群を対象としても良いし、手書き描画装置に接続されたリムーバブル・メモリ内に蓄積された手書き文書群を対象としても良いし、それらの任意の組み合わせであっても良い。なお、それら手書き文書は、少なくとも本実施形態において使用する尤度と同じ尤度が対応付けられて、蓄積されているのが望ましい。
【０１６４】
本実施形態の手書き描画装置は、スタンドアローンの装置として構成することも、ネットワークを介して通信可能な複数のノードに分散した形で構成することも可能である。
【０１６５】
また、本実施形態の手書き描画装置は、デスクトップ型又はラップトップ型の汎用計算機、携帯型の汎用計算機、その他の携帯型の情報機器、タッチパネルを有する情報機器、スマートフォン、その他の情報処理装置など、様々なデバイスによって実現可能である。
【０１６６】
図２５に、本実施形態の手書き描画装置を実現するハードウェアの構成例を示す。図中、２０１はＣＰＵ、２０２は所定の入力デバイス、２０３は所定の出力デバイス、２０４はＲＡＭ、２０５はＲＯＭ、２０６は外部メモリ・インタフェース、２０７は通信インタフェースである。例えば、タッチパネルを使用する場合には、例えば液晶パネルとペンと液晶パネル上に設けられたストローク検出装置等が利用される（図中、２０８参照）。
【０１６７】
また、例えば、図１の構成の一部分をクライアント上に設け、図１の構成の残りの部分をサーバ上に設けることも可能である。
【０１６８】
例えば、図２６は、イントラネット及び／又はインターネット等のネットワーク３０２上にサーバ３０１が存在し、各クライアント３０３，３０４がネットワーク３０２を介してそれぞれサーバ３０１と通信することによって、本実施形態の手書き描画装置が実現する様子を例示している。
【０１６９】
なお、クライアント３０３は、無線通信を介してネットワーク３０２に接続され、クライアント３０４は、有線通信を介してネットワーク３０２に接続される場合を例示している。
【０１７０】
クライアント３０３，３０４は、通常、ユーザ装置である。サーバ３０１は、例えば、企業内ＬＡＮ等のＬＡＮ上に設けられたものであっても良いし、インターネット・サービス・プロバイダ等が運営するものであっても良い。また、サーバ３０１がユーザ装置であって、あるユーザが他のユーザに機能を提供するものであっても良い。
【０１７１】
図１の構成を、クライアントとサーバに分散する方法として、種々の方法が考えられる。
【０１７２】
例えば、図１中、１０２で示す範囲をクライアント側に搭載し、それ以外の範囲をサーバ側に搭載しても良いし、ストローク群処理部３のみをサーバ側に搭載し、それ以外の範囲をクライアント側に搭載しても良い。
【０１７３】
なお、図１の１０１の範囲を備えた装置、あるいは、図１の１０１からストローク取得部１を除外した範囲を備えた装置を実現しても良い。この場合、当該装置は、ストローク列から、ストローク群のデータを生成する機能を有するものである。また、例えば、図１中の１０２で示す範囲をクライアント側に搭載し、ストローク群処理部３を第１のサーバに搭載し、１０１からストローク取得部１を除いた範囲を第２のサーバに搭載しても良い。
【０１７４】
また、これら以外の分散方法も可能である。
【０１７５】
以上説明してきたように、本実施形態によれば、複数の手書きオブジェクトの上下関係を考慮することによって、より効果的にオブジェクトを処理することができる。
【０１７６】
なお、上述の実施形態の中で示した処理手順に示された指示は、ソフトウェアであるプログラムに基づいて実行されることが可能である。汎用の計算機システムが、このプログラムを予め記憶しておき、このプログラムを読み込むことにより、上述した実施形態の手書き描画装置による効果と同様な効果を得ることも可能である。上述の実施形態で記述された指示は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ±Ｒ、ＤＶＤ±ＲＷなど）、半導体メモリ、またはこれに類する記録媒体に記録される。コンピュータまたは組み込みシステムが読み取り可能な記録媒体であれば、その記憶形式は何れの形態であってもよい。コンピュータは、この記録媒体からプログラムを読み込み、このプログラムに基づいてプログラムに記述されている指示をＣＰＵで実行させれば、上述した実施形態の手書き描画装置と同様な動作を実現することができる。もちろん、コンピュータがプログラムを取得する場合または読み込む場合はネットワークを通じて取得または読み込んでもよい。  
また、記録媒体からコンピュータや組み込みシステムにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワーク等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行してもよい。  
さらに、本実施形態における記録媒体は、コンピュータあるいは組み込みシステムと独立した媒体に限らず、ＬＡＮやインターネット等により伝達されたプログラムをダウンロードして記憶または一時記憶した記録媒体も含まれる。  
また、記録媒体は１つに限られず、複数の媒体から本実施形態における処理が実行される場合も、本実施形態における記録媒体に含まれ、媒体の構成は何れの構成であってもよい。
【０１７７】
なお、本実施形態におけるコンピュータまたは組み込みシステムは、記録媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するためのものであって、パソコン、マイコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。  
また、本実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本実施形態における機能を実現することが可能な機器、装置を総称している。
【０１７８】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１７９】
１…ストローク取得部、２…ストローク群データ生成部、３…ストローク群処理部、４…操作部、５…表示部、１１…インクデータデータベース、１２…ストローク群データベース、１３…レイヤ情報データベース、２０…ブロック生成部、２１…ストローク群生成部、２２…属性抽出部、２３…上下関係判定部、２４…オブジェクト要素補間部、３１…レイヤ処理部、３２…実行部、２０１…ＣＰＵ、２０２…入力デバイス、２０３…出力デバイス、２０４…ＲＡＭ、２０５…ＲＯＭ、２０６…外部メモリ・インタフェース、２０７…通信インタフェース、３０１…サーバ、３０２…ネットワーク、３０３，３０４…クライアント。
【図１】
2014038385.tif 000003
【図２】
2014038385.tif 000004
【図３】
2014038385.tif 000005
【図４】
2014038385.tif 000006
【図５】
2014038385.tif 000007
【図６】
2014038385.tif 000008
【図７】
2014038385.tif 000009
【図８】
2014038385.tif 000010
【図９】
2014038385.tif 000011
【図１０】
2014038385.tif 000012
【図１１】
2014038385.tif 000013
【図１２】
2014038385.tif 000014
【図１３】
2014038385.tif 000015
【図１４】
2014038385.tif 000016
【図１５】
2014038385.tif 000017
【図１６】
2014038385.tif 000018
【図１７】
2014038385.tif 000019
【図１８】
2014038385.tif 000020
【図１９】
2014038385.tif 000021
【図２０】
2014038385.tif 000022
【図２１】
2014038385.tif 000023
【図２２】
2014038385.tif 000024
【図２３】
2014038385.tif 000025
【図２４】
2014038385.tif 000026
【図２５】
2014038385.tif 000027
【図２６】
2014038385.tif 000028