(57)【要約】  固定幅であっても可変幅であっても同一の復号方法によりデジタルインクを復号可能であり、かつ、ストロークの少なくとも一部を固定幅にする場合に、ストロークの全部を可変幅にする場合と比べてデジタルインクのビット数を削減できるデジタルインクの符号化を実現する。本発明によるデジタルインクの符号化方法は、スタイラスの動作に伴って取得されたＮ個の位置データＰを符号化することによって、一連のｘ座標データ及びｙ座標データの組を示す第１のバイナリを取得するステップＳ８と、Ｎ個の位置データＰそれぞれの位置における幅を決定するＭ個（Ｍは１以上Ｎ以下の整数）の幅データＷを符号化することによって、第１のバイナリから全体として分離されてなる第２のバイナリを取得するステップＳ９と、第１及び第２のバイナリを互いに異なる領域に含むバイナリストリームＢｉｎＩｎｋを生成するシリアライズステップＳ１３と、を含む。
2018124209.tif 000002
【特許請求の範囲】
【請求項１】
デジタルインクの符号化方法であって、  ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたそれぞれｘ座標データ及びｙ座標データの組を含んでなるＮ個の位置データを符号化することによって、一連のｘ座標データ及びｙ座標データの組を示す第１のバイナリを取得する座標符号化ステップと、  前記Ｎ個の位置データそれぞれの位置における幅を決定するＭ個（Ｍは１以上Ｎ以下の整数）の幅データを符号化することによって、前記第１のバイナリから全体として分離されてなる第２のバイナリを取得する幅符号化ステップと、  前記第１及び第２のバイナリを互いに異なる領域に含むバイナリストリームを生成するシリアライズステップと、  を含むデジタルインクの符号化方法。
【請求項２】
前記幅データは、前記Ｍが１である場合に、前記Ｎ個の位置データにより示される軌跡の幅が固定値であることを示し、前記Ｍが２以上前記Ｎ以下である場合に、前記Ｎ個の位置データにより示される軌跡の幅が可変であることを示す、  請求項１に記載のデジタルインクの符号化方法。
【請求項３】
前記Ｎ個の位置データはそれぞれ、ｘ座標データ、ｙ座標データ、及びｚ座標データの組を含んでなり、  前記第１のバイナリは、一連のｘ座標データ、ｙ座標データ、及びｚ座標データの組を示すバイナリであり、  前記Ｍ個の幅データはそれぞれ、前記Ｎ個の位置データの位置における所定の形状の面積に対応するデータである、  請求項１に記載のデジタルインクの符号化方法。
【請求項４】
前記所定の形状の面積に対応するデータは、球の径を示すデータである、  請求項３に記載のデジタルインクの符号化方法。
【請求項５】
前記Ｎ個の位置データの精度を示す精度データを符号化することによって第３のバイナリを生成する精度データ符号化ステップをさらに含み、  前記座標符号化ステップは、前記精度データを用いて前記Ｎ個の位置データを符号化し、  前記シリアライズステップは、復号順で前記第２のバイナリより前に前記第３のバイナリが含まれるように、前記第１乃至第３のバイナリを互いに異なる領域に含む前記バイナリストリームを生成する、  請求項１に記載のデジタルインクの符号化方法。
【請求項６】
前記ポインティングデバイスは、第１及び第２のポインティングデバイスを含み、  前記バイナリストリームは、前記第３のバイナリとして、前記第１のポインティングデバイスについて取得される位置データの精度を示す第１の精度データ、及び、前記第２のポインティングデバイスについて取得される位置データの精度を示す第２の精度データを含み、  前記座標符号化ステップは、前記第１のポインティングデバイスについて取得される一連の位置データを前記第１の精度データを用いて符号化する一方、前記第２のポインティングデバイスについて取得される一連の位置データを前記第２の精度データを用いて符号化する、  請求項５に記載のデジタルインクの符号化方法。
【請求項７】
符号化されたデジタルインクを含むバイナリストリームからポインティングデバイスの軌跡を再現するためのデジタルインクの復号方法であって、  前記ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたＮ個の位置データを、前記バイナリストリームの第１の領域から復号する位置データ復号ステップと、  前記Ｎ個の座標データの位置での幅を決定するＭ個（Ｍは１以上Ｎ以下の整数）の幅データを、前記バイナリストリームのうち前記第１の領域とは異なる第２の領域から復号する幅データ復号ステップと、  前記Ｍ個が前記Ｎ個より少ない場合に、前記Ｍ個の幅データのうちのいずれかにより、前記Ｎ個の位置データのうちのＮ−Ｍ個それぞれの位置における幅を補完する幅補完ステップと、  を含むデジタルインクの復号方法。
【請求項８】
前記幅データは、前記Ｍが１である場合に、前記Ｎ個の位置データにより示される軌跡の幅が固定値であることを示し、前記Ｍが２以上前記Ｎ以下である場合に、前記Ｎ個の位置データにより示される軌跡の幅が可変であることを示す、  請求項７に記載のデジタルインクの復号方法。
【請求項９】
デジタルインクのデータ構造であって、  ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたＮ個の位置データを符号化することによって得られる第１のバイナリと、前記Ｎ個の位置データそれぞれの位置における幅を決定するＭ個（Ｍは１以上Ｎ以下の整数）の幅データを符号化することによって得られる第２のバイナリとを、互いに異なる領域に含み、  前記デジタルインクの復号方法を実行するコンピュータにおいて、  前記第１のバイナリから前記Ｎ個の座標データを復元し、  前記第２のバイナリから前記Ｍ個の幅データを復元し、  前記Ｍ個の幅データを前記Ｎ個の座標データに対応付ける処理に用いられる、  デジタルインクのデータ構造。
【請求項１０】
符号化されたデジタルインクを含むファイルの生成方法であって、  ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたＮ個の位置データを第１の符号化方法により符号化することによってバイナリストリームを取得する第１の符号化ステップと、  前記バイナリストリームに付与すべきメタデータを取得し、該メタデータを含む第１のＸＭＬデータを第２の符号化方法により符号化することによって第１のＸＭＬファイルを生成する第１のメタデータバイナリ生成ステップと、  前記バイナリストリームを示すターゲットＩＤと、該バイナリストリームに関連付ける前記メタデータとの関係を示す第２のＸＭＬデータを生成し、該第２のＸＭＬデータを前記第２の符号化方法により符号化することによって第２のＸＭＬファイルを生成する第２のメタデータバイナリ生成ステップと、  前記バイナリストリームと、前記第１及び第２のＸＭＬファイルとを一つのパッケージファイルにアーカイブするパッケージ生成ステップと、  を含むデジタルインクを含むファイルの生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、デジタルインクの符号化方法、デジタルインクの復号方法、デジタルインクのデータ構造、及び、デジタルインクを含むファイルの生成方法に関する。
【背景技術】
【０００２】  インクの充填されたペンや絵の具の付いた毛筆を紙の上で動かすことにより、インクや絵の具が紙に吸収あるいは堆積され軌跡が描かれる。このように紙に描かれた手書きの軌跡（ストローク）を模擬するように、電子ペンやスタイラスなどの指示体をタブレット等の座標検出装置の上で動かした軌跡を電子データ化したデータがデジタルインクである。特許文献１，２には、このようなデジタルインクの例が開示されている。【０００３】  デジタルインクは通常、特許文献１に示されるように、手書きの軌跡を再現するためのベクターデータ及びその軌跡の描画スタイルを記述するデータを含み構成される。デジタルインクの具体的なフォーマットとしては、非特許文献１に開示されるＳＶＧ(Scalable Vector Graphics)、非特許文献２に開示されるＷｉｎｄｏｗｓ  Ｉｎｋ、非特許文献３に開示されるＩｎｋＭＬ(Ink Markup Language)、非特許文献４に開示されるＯｆｆｉｃｅ  Ｏｐｅｎ  ＸＭＬなどが知られている。これらはいずれも、多様な環境の下（様々なＯＳで動作する描画アプリケーションや文書作成アプリケーションなど）で利用できるように標準化されたデータフォーマットである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１５／０７５９３０号
【特許文献２】米国特許出願公開第２０１７／０２３６０２１号明細書
【非特許文献】
【０００５】
【非特許文献１】"ＳＶＧ  １．１（Ｓｅｃｏｎｄ  Ｅｄｉｔｉｏｎ）"、[online]、平成２３年８月１６日、ワールド・ワイド・ウェブ・コンソーシアム、［平成２９年１２月６日検索］、インターネット<URL:http://www.w3.org/TR/SVG/paths.html>
【非特許文献２】"．ＮＥＴ  Ｆｒａｍｅｗｏｒｋ  Ｃｌａｓｓ  Ｌｉｂｒａｒｙ"、[online]、マイクロソフト・コーポレイション、［平成２９年１２月６日検索］、インターネット<URL:https://msdn.microsoft.com/en-us/library/system.windows.ink.stroke(v=vs.110).aspx>
【非特許文献３】"Ｉｎｋ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ  （ＩｎｋＭＬ）"、[online]、平成２３年９月２０日、ワールド・ワイド・ウェブ・コンソーシアム、［平成２９年１２月６日検索］、インターネット<URL:https://www.w3.org/TR/InkML/>
【非特許文献４】"ＩＳＯ／ＩＥＣ  ２９５００−２：２０１２"、[online]、平成２４年９月１日、国際標準化機構、［平成２９年１２月１３日検索］、インターネット<URL: http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html>
【発明の概要】
【発明が解決しようとする課題】
【０００６】  固定幅であっても可変幅であっても同一の復号方法によりデジタルインクを復号可能であり、かつ、ストロークの少なくとも一部を固定幅にする場合に、ストロークの全部を可変幅にする場合と比べてデジタルインクのビット数を削減できるデジタルインクの符号化を実現する。【０００７】  また、座標検出装置やスタイラスごとに異なり得る位置データの精度データに基づき、ストローク単位で位置データを符号化ないし復号可能とする。これにより、１つのデジタルインク内に、互いに精度の異なる複数の位置データを配置することを可能にする。【０００８】  さらに、ストロークを構成する一連の位置データを符号化することによって生成されたバイナリストリームに対し、ＸＭＬ等の汎用の記述法によりメタデータを付与可能にする。
【課題を解決するための手段】
【０００９】  本発明によるデジタルインクの符号化方法は、ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたそれぞれｘ座標データ及びｙ座標データの組を含んでなるＮ個の位置データを符号化することによって、一連のｘ座標データ及びｙ座標データの組を示す第１のバイナリを取得する座標符号化ステップと、前記Ｎ個の位置データそれぞれの位置における幅を決定するＭ個（Ｍは１以上Ｎ以下の整数）の幅データを符号化することによって、前記第１のバイナリから全体として分離されてなる第２のバイナリを取得する幅符号化ステップと、前記第１及び第２のバイナリを互いに異なる領域に含むバイナリストリームを生成するシリアライズステップと、を含む。【００１０】  上記デジタルインクの符号化方法においては、前記Ｎ個の位置データの精度を示す精度データを符号化することによって第３のバイナリを生成する精度データ符号化ステップをさらに含み、前記座標符号化ステップは、前記精度データを用いて前記Ｎ個の位置データを符号化し、前記シリアライズステップは、復号順で前記前記第２のバイナリより前に前記第３のバイナリが含まれるように、前記第１乃至第３のバイナリを互いに異なる領域に含む前記バイナリストリームを生成する、こととしてもよい。【００１１】  本発明によるデジタルインクの復号方法は、符号化されたデジタルインクを含むバイナリストリームからポインティングデバイスの軌跡を再現するためのデジタルインクの復号方法であって、前記ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたＮ個の位置データを、前記バイナリストリームの第１の領域から復号する位置データ復号ステップと、前記Ｎ個の座標データの位置での幅を決定するＭ個（Ｍは１以上Ｎ以下の整数）の幅データを、前記バイナリストリームのうち前記第１の領域とは異なる第２の領域から復号する幅データ復号ステップと、前記Ｍ個が前記Ｎ個より少ない場合に、前記Ｍ個の幅データのうちのいずれかにより、前記Ｎ個の位置データのうちのＮ−Ｍ個それぞれの位置における幅を補完する幅補完ステップと、を含む。【００１２】  本発明によるデジタルインクのデータ構造は、ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたＮ個の位置データを符号化することによって得られる第１のバイナリと、前記Ｎ個の位置データそれぞれの位置における幅を決定するＭ個（Ｍは１以上Ｎ以下の整数）の幅データを符号化することによって得られる第２のバイナリとを異なる領域に含み、前記デジタルインクの復号方法を実行するコンピュータにおいて、前記第１のバイナリから前記Ｎ個の座標データを復元し、前記第２のバイナリから前記Ｍ個の幅データを復元し、前記Ｍ個の幅データを前記Ｎ個の座標データに対応付ける処理に用いられる。【００１３】  本発明による符号化されたデジタルインクを含むファイルの生成方法は、符号化されたデジタルインクを含むファイルの生成方法であって、ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイ��の動作に伴い取得されたＮ個の位置データを第１の符号化方法により符号化することによってバイナリストリームを取得する第１の符号化ステップと、前記バイナリストリームに付与すべきメタデータを取得し、該メタデータを含む第１のＸＭＬデータを第２の符号化方法により符号化することによって第１のＸＭＬファイルを生成する第１のメタデータバイナリ生成ステップと、前記バイナリストリームを示すターゲットＩＤと、該バイナリストリームに関連付ける前記メタデータとの関係を示す第２のＸＭＬデータを生成し、該第２のＸＭＬデータを前記第２の符号化方法により符号化することによって第２のＸＭＬファイルを生成する第２のメタデータバイナリ生成ステップと、前記バイナリストリームと、前記第１及び第２のＸＭＬファイルとを一つのパッケージファイルにアーカイブするパッケージ生成ステップと、を含むデジタルインクを含む。
【発明の効果】
【００１４】  本発明によるデジタルインクの符号化方法、復号方法、及びデータ構造によれば、一連のｘ座標データ及びｙ座標データ（並びにｚ座標データ）の組が１つのバイナリ（第１のバイナリ）を形成するようにシリアライズを実行しつつも、その組により示される位置における幅データについては、第１のバイナリから全体として分離されてなる第２のバイナリにシリアライズを実行するので、固定幅（Ｍ＝１）であっても可変幅（１＜Ｍ≦Ｎ）であっても同一の復号方法によりデジタルインクを復号可能となり、かつ、ストロークの少なくとも一部を固定幅にする場合（１≦Ｍ＜Ｎ）に、ストロークの全部を可変幅にする場合（Ｍ＝Ｎ）と比べてデジタルインクのビット数を削減できる。【００１５】  また、本発明によるデジタルインクの符号化方法、復号方法、及びデータ構造によれば、座標検出装置ごとに異なり得る位置データの精度データに基づき、ストローク単位で位置データを符号化ないし復号可能となる。したがって、１つのデジタルインク内に、互いに精度の異なる複数の位置データを配置することが可能になる。【００１６】  また、本発明によるデジタルインクを含むファイルの生成方法によれば、ストロークを構成する一連の位置データを符号化することによって生成されたバイナリストリームに対し、ＸＭＬ等の汎用の記述法によりメタデータを付与することが可能になる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施の形態による座標検出装置１のシステム構成を示す図である。
【図２】本発明の実施の形態によるデジタルインク１００のデータのモデルを示すＥＲ(Entity-Relationship)図である。
【図３】Ｎ個の位置データＰ１〜ＰＮにより構成されるパスデータＰＡと、このパスデータＰＡに包含されるＮ−１個のセグメントＳ１〜ＳＮ−１との幾何上の関係を示す図である。
【図４】図３に示したパスデータＰＡに含まれる幅データＷの例を示す図である。
【図５】図３に示したパスデータＰＡに含まれる幅データＷの他の例を示す図である。
【図６】図２に示したスタートパラメータ１０４及びエンドパラメータ１０５を説明する図である。
【図７】図６に示したセグメントＳｉ，Ｓｉ＋１のそれぞれと、ＧＰＵ４０によって描画されるキャットマル−ロム曲線との関係を示す図である。
【図８】本発明の実施の形態によるデジタルインク１００の符号化処理を示すフロー図である。
【図９】本発明の実施の形態による位置データＰ及び幅データＷの符号化処理のフロー図である。
【図１０】１つのパスデータＰＡを符号化することによって得られるパスメッセージＢｉｎＰａｔｈのスキーマの例を示す図である。
【図１１】本発明の実施の形態によるデジタルインク１００の復号処理を示すフロー図である。
【図１２】本発明の実施の形態によるデジタルインク１００の復号処理を示すフロー図である。
【図１３】本発明の実施の形態による位置データＰ及び幅データＷの復号処理のフロー図である。
【図１４】本発明の実施の形態によるコンテナファイルＣＦを構成するエンティティを説明するＥＲ図である。
【図１５】本発明の実施の形態によるコンテナファイルＣＦ内にアーカイブされるファイル群の構成例を示す図である。
【図１６】（ａ）は、関係ファイル４０１の具体的な内容の例を示す図である。（ｂ）は、ＸＭＬファイル４１１の具体的な内容の例を示す図であり、（ｃ）は、ＸＭＬファイル４１２の具体的な内容の例を示す図である。
【図１７】（ａ）は、関係ファイル４２２の具体的な内容の例を示す図であり、（ｂ）は、ＳＶＧファイル４２３の具体的な内容の例を示す図である。
【図１８】本発明の実施の形態によるコンテナファイルＣＦの生成方法のフロー図である。
【発明を実施するための形態】
【００１８】  以下、添付図面を参照しながら、本発明の実施の形態について詳細に説明する。
【００１９】  図１は、本発明の実施の形態による座標検出装置１のシステム構成を示す図である。同図には、座標検出装置１への入力装置として機能するスタイラス２（ポインティングデバイス）も図示している。
【００２０】  図１に示すように、座標検出装置１は、電極群１１に接続されたセンサコントローラ１０と、センサコントローラ１０に接続された入出力部２３、ＣＰＵ２１、ＲＡＭ２２、及び、ＧＰＵ３０を含み構成されるコンピュータである。図示していないが、座標検出装置１には、液晶ディスプレイなどの表示部も設けられる。具体的な例では、座標検出装置１はタブレット端末又はスマートフォンである。
【００２１】  電極群１１は、座標検出装置１に設けられるパネル面（平面）に平行に面を形成するように配設された各複数の電極１１ｘ，１１ｙを含んで構成される。複数の電極１１ｘ，１１ｙはそれぞれ、上記表示部の表示面上（又は裏側）に配置された透明な導体である。図１に示すように、複数の電極１１ｘは、それぞれｙ方向（パネル面内の方向）に延設され、かつ、ｘ方向（パネル面内でｙ方向に直交する方向）に等間隔で配置される。また、複数の電極１１ｙは、それぞれｘ方向に延設され、かつ、ｙ方向に等間隔で配置される。
【００２２】  センサコントローラ１０は、電極群１１を用いて、ポインティングデバイスとしてのスタイラス２がパネル面に接触したか（図１に示す「ＤＯＷＮ」）、又は、離間したか（図１に示す「ＵＰ」）を検出する機能と、パネル面内におけるスタイラス２の位置を示す位置データＰを導出する機能と、スタイラス２から筆圧値ＷＰを受信する機能とを有する。ここで、位置データＰは、パネル面内の位置を示す２次元の座標（すなわち、ｘ座標データ及びｙ座標データの組（ｘ，ｙ））によって表されてもよいし、パネル面内の位置及びパネル面とスタイラス２のペン先との間の距離を示す３次元の座標（すなわち、ｘ座標データ、ｙ座標データ、及びｚ座標データの組（ｘ，ｙ，ｚ））によって表されてもよい。また、筆圧値ＷＰは、スタイラス２のペン先がパネル面から受ける力を示す値であり、スタイラス２内に設けられるセンサによって検出される。
【００２３】  センサコントローラ１０は、スタイラス２の状態によって決まる所定の期間内におけるスタイラス２の動作に伴って、一連の位置データの取得を行う。具体的には、例えば位置データＰが２次元の座標によって表される場合であれば、センサコントローラ１０は、例えばスタイラス２がパネル面にダウンされてからパネル面からアップされるまでの間、スタイラス２の位置データＰの導出を周期的に行えばよい。また、位置データＰが３次元の座標によって表される場合であれば、センサコントローラ１０は、例えばスタイラス２がパネル面に一旦ダウンされてからユーザによってスタイラス２のボタン（スタイラス２の側面又は端部に配置される押しボタン）が押下されるまでの間、又は、ユーザによってスタイラス２のボタンが押下されてから再度ユーザによってスタイラス２のボタンが押下されるまでの間、スタイラス２の位置データＰの導出を周期的に行えばよい。こうして導出された一連の位置データＰは、それぞれ筆圧値ＷＰと対応付けて、スタイラスデータとして入出力部２３に供給される。
【００２４】  ＣＰＵ２１、ＲＡＭ２２、及び入出力部２３は、デジタルインク１００についての各種の処理を実行するデジタルインク処理部２０を構成する。具体的に説明すると、ＣＰＵ２１は、センサコントローラ１０から入出力部２３に供給されたスタイラスデータに基づいてＲＡＭ２２内にデジタルインク１００を生成し、生成したデジタルインク１００を後述する図８に示す符号化方法によって符号化する処理を実行する。また、ＣＰＵ２１は、符号化したデジタルインク１００を含むバイナリストリームＢｉｎＩｎｋを、後述する図１８に示す方法によって所定形式のコンテナファイルＣＦ内にアーカイブし、外部に出力する処理を実行する。
【００２５】  ここで、コンテナファイルＣＦの出力先は、他のコンピュータであってもよいし、座標検出装置１自身であってもよい。また、コンテナファイルＣＦ内にアーカイブされていない状態のバイナリストリームＢｉｎＩｎｋを直接、外部に出力することとしてもよい。この場合、バイナリストリームＢｉｎＩｎｋの断片化によって得られる各断片を、互いに異なるパケットのペイロードに含めて通信することとしてもよい。
【００２６】  ＣＰＵ２１はまた、符号化したデジタルインク１００を含むバイナリストリームＢｉｎＩｎｋがアーカイブされたコンテナファイルＣＦ（又は、コンテナファイルＣＦ内にアーカイブされていない状態のバイナリストリームＢｉｎＩｎｋ）の入力を受け付け、その中に含まれるデジタルインク１００を後述する図１１及び図１２に示す復号方法によって復号することにより、デジタルインク１００をＲＡＭ２２内に復元する処理を実行する。
【００２７】  ＧＰＵ４０は、ＲＡＭ２２内に生成又は復元されたデジタルインク１００のレンダリングを実行し、その結果をパネル面（表示部）に供給する機能を有する。これにより、デジタルインク１００の描画が実行される。
【００２８】  デジタルインク１００について説明する。デジタルインク１００は、インクペンや鉛筆等の筆記具を用いて紙媒体等に残されたインクあるいは鉛筆粉等により表現される筆跡を模擬するデータである。デジタルインク１００には、少なくとも１つのパスデータＰＡが含まれる。パスデータＰＡは、スタイラス２などのポインティングデバイスを動かすことにより生成されるデータであり、例えば、スタイラス２がパネル面にタッチしてから（図１のＤＯＷＮ）、パネル面上を摺動した後、パネル面から離れる（図１のＵＰ）までにパネル面上で動いた軌跡（ｔｒａｊｅｃｔｏｒｙ、ｐａｔｈ、ｓｔｒｏｋｅ等と称される）の幾何形状（２次元グラフィックス上での特徴）を表現している。
【００２９】  なお、本明細書では、このように手書きの軌跡を表現するデータを「パスデータ」と称するが、これは非特許文献１の用語に従ったものであり、他の用語を用いても差し支えない。例えば、非特許文献２において使用される「ストローク(Stroke)」、デジタルインクの標準の１つとして知られる非特許文献３において使用される「トレース(trace)」などの用語を、パスデータの代わりに用いてもよい。
【００３０】  パスデータＰＡには、軌跡の幅を示す幅データ、軌跡の色・透明度を示すカラーデータなどのメタデータや、その他のデータ（例えば画像データ）が関連付けられ得る。パスデータＰＡのレンダリングは、関連付けられたレンダリング方法によって実行される。このレンダリング方法は、形状の全てをベクターベースでレンダリングする、というものであってもよいし、ビットマップ等ピクセルデータを一部利用することによりピクセルベースの処理を用いてレンダリングする、というものであってもよいし、これら２つの方法を混合させた方法を用いてレンダリングする、というものであってもよい。
【００３１】  図２は、デジタルインク１００のデータのモデルを示すＥＲ(Entity-Relationship)図である。同図において、矩形はエンティティを示し、楕円はエンティティの属性を示している。図２に示すように、デジタルインク１００は、パスクラス１０１及びセグメントクラス１１０という２つのエンティティを含んで構成される。上述したパスデータＰＡは、パスクラス１０１のインスタンスである。また、以下では、セグメントクラス１１０のインスタンスをセグメントＳと称する。
【００３２】  図２の菱形は、エンティティ間の関係を示している。菱形の両側にある記号は多重度(cardinality)を示すもので、図２の例では、１以上のパスクラス１０１のインスタンス（＝パスデータＰＡ）のそれぞれに、０個以上のセグメントクラス１１０のインスタンス（＝セグメントＳ）が包含される、という関係（１対０以上の関係）が示されている。
【００３３】  パスクラス１０１は、デジタルインク１００の核となるエンティティであり、スタイラス２をパネル面にダウンさせてからアップさせるまでのパネル面上におけるスタイラス２の移動の軌跡（ＳＶＧにおける「パスストローク」）を記述するために使用される。パスクラス１０１のインスタンスであるパスデータＰＡは複数の位置データＰを含んで構成され、１つの軌跡が生成される都度新たに生成される。パスクラス１０１の属性には、ストロークカラー１０２及びストローク幅１０３という２つのスタイル属性と、スタートパラメータ１０４及びエンドパラメータ１０５という２つの幾何属性と、精度データ１０６とが含まれる。
【００３４】  セグメントクラス１１０は、パスデータＰＡを構成する複数の位置データＰによって表される軌跡を分割してなるセグメントを示すエンティティであり、キャットマル−ロム曲線などの所定の補間曲線に関連付けて使用される。以下では、この補間曲線がキャットマル−ロム曲線である場合を例にとって説明を続ける。この場合、セグメントクラス１１０のインスタンスであるセグメントＳには、属性として４つの位置１１１が含まれる。各位置１１１は補間曲線のコントロールポイントを表すもので、キャットマル−ロム曲線の場合には、それぞれがパスデータＰＡを構成する複数の位置データＰのいずれかに対応する。この点については、後ほど図６及び図７を参照しながら詳しく説明する。
【００３５】  なお、パスクラス１０１及びセグメントクラス１１０といったエンティティの名前自体は、非特許文献１に記載されるＳＶＧのパス仕様(Path Specification)のサブセット（Ｐａｔｈ  ｄａｔａ、ＳＶＧＰａｔｈＳｅｇ等）を踏襲したものであるが、図２に示す各属性は、本発明のデジタルインク１００のために拡張されたものである。
【００３６】  図３は、Ｎ個の位置データＰ１〜ＰＮにより構成されるパスデータＰＡと、このパスデータＰＡに包含されるＮ−１個のセグメントＳ１〜ＳＮ−１との幾何上の関係を示す図である。同図に示すように、セグメントＳｋ（ｋは１〜Ｎ−１までの整数）は、位置データＰｋと位置データＰｋ＋１との間に形成される曲線を表すデータとなる。
【００３７】  図２に戻り、ストロークカラー１０２は、パスデータＰＡをレンダリングする際に用いられる色及び透明度を示す属性である。ストロークカラー１０２によって示される色及び透明度は、１つのパスデータＰＡにつき１つ（１つのＲＧＢ値及び１つの透明度Ａ。固定カラー）としてもよいし、１つのパスデータＰＡにつきＭ個（Ｍ個のＲＧＢ値及びＭ個の透明度Ａ。可変カラー）としてもよい。また、１つのパスデータＰＡに対し、１つのＲＧＢ値及びＭ個の透明度Ａを示すストロークカラー１０２を対応付けることとしてもよい。ただし、Ｍは、１以上Ｎ以下の整数である。以下では、ストロークカラー１０２についての説明は特に行わないが、デジタルインク処理部２０は、後述するストローク幅１０３についての処理と同様の処理により、ストロークカラー１０２の符号化及び復号を行うよう構成される。
【００３８】  ストローク幅１０３は、パスデータＰＡを構成する複数の位置データそれぞれの位置における軌跡の幅を示す属性である。デジタルインク処理部２０は、センサコントローラ１０から供給される筆圧値ＷＰ（図１を参照）に基づいて、ストローク幅１０３の具体的な値（幅データＷ）を決定する。ストロークカラー１０２と同様に、ストローク幅１０３によって示される幅は、１つのパスデータＰＡにつき１つ（固定幅）としてもよいし、１つのパスデータＰＡにつきＭ個（可変幅）としてもよい。なお、Ｍの具体的な値は、ストロークカラー１０２とストローク幅１０３とで同じであってもよいし、異なっていてもよい。
【００３９】  図４は、図３に示したパスデータＰＡに含まれる幅データＷの例を示す図である。同図には、パスデータＰＡを構成するＮ個の位置データＰ１〜ＰＮがそれぞれ２次元の座標によって表される例を示している。また、図４（ａ）にはＭ＝Ｎの場合を示し、図４（ｂ）にはＭ＜Ｎの場合を示している。
【００４０】  初めに図４（ａ）を参照すると、この場合のパスデータＰＡには、Ｎ個の位置データＰ１〜ＰＮそれぞれの位置における軌跡の幅を示すＮ個の幅データＷ１〜ＷＮが含まれる。図１に示したＧＰＵ４０を用いたレンダリングにおいては、このＮ個の幅データＷ１〜ＷＮに従ってＮ個の位置データＰ１〜ＰＮそれぞれの位置における軌跡の幅が決定され、決定された幅を直径とする円をなめらかに包絡することによって、軌跡の描画が実行される。上掲した特許文献２には、この描画の詳細が記載されている。
【００４１】  なお、軌跡の描画のために用いる図形としては、円ではなく楕円を用いることとしてもよい。この場合における幅データＷは楕円の長径又は短径などを示すデータとなり、ＧＰＵ４０は、Ｎ個の位置データＰ１〜ＰＮそれぞれの位置における軌跡の幅を決定する際に、各位置における楕円の向きを決定する必要がある。各位置における楕円の向きによって描画結果が変わってくるからである。これに対し、円を用いる場合には、円が等方性を有することから、この向きを決定するステップを省略することができる。
【００４２】  次に図４（ｂ）を参照すると、この場合のパスデータＰＡには、Ｍ個の位置データＰ１〜ＰＭそれぞれの位置における軌跡の幅を示すＭ個の幅データＷ１〜ＷＭが含まれる。ただし、同図においてはＭ＜Ｎである。Ｎ−Ｍ個の位置データＰＭ＋１〜ＰＮそれぞれの位置における軌跡の幅を示す幅データＷは、パスデータＰＡに含まれない。
【００４３】  この場合、図１に示したＧＰＵ４０によるレンダリングにおいては、まずＭ個の幅データＷ１〜ＷＭに従ってＭ個の位置データＰ１〜ＰＭそれぞれの位置における軌跡の幅が決定され、次いで、Ｍ個の幅データＷ１〜ＷＭのうちのいずれか（図４（ｂ）の例では、幅データＷＭ）に従って、残りのＮ−Ｍ個の位置データＰＭ＋１〜ＰＮそれぞれの位置における軌跡の幅が決定される。そして、こうして決定された幅を直径とする円をなめらかに包絡することによって、軌跡の描画が実行される。
【００４４】  なお、図４（ｂ）についての説明から理解されるように、Ｍ＝１である場合には、図１に示したＧＰＵ４０によるレンダリングにおいて、１個の幅データＷ１に従ってＮ個の位置データＰ１〜ＰＮそれぞれの位置における軌跡の幅が決定されることになる。したがって、固定幅で軌跡の描画が実行されることになる。
【００４５】  図５は、図３に示したパスデータＰＡに含まれる幅データＷの他の例を示す図である。同図には、パスデータＰＡを構成するＮ個の位置データＰ１〜ＰＮがそれぞれ３次元の座標によって表される例を示している。ただし、図５においては、Ｎ＝５としている。
【００４６】  図５に示すように、位置データＰ１〜ＰＮがｚ座標データを含む３次元の座標によって表される場合、幅データＷは、球ＳＨの径（例えば直径又は半径）を示すデータであるとすることが好適である。この場合のレンダリングにおいては、Ｎ個の幅データＷ１〜ＷＮによりＮ個の位置データＰ１〜ＰＮそれぞれの位置を中心とする球ＳＨの直径が決定され、さらに、位置データＰの進行方向（例えば、位置データＰ１〜ＰＮを補間してなる補間曲線の各位置における接線の延在方向）に対して鉛直な面内に位置する球ＳＨの大円（図５に網掛けで示した図形）が決定される。そして、各大円をなめらかに通過するように軌跡の描画が実行される。
【００４７】  なお、位置データＰが３次元の座標によって表される場合の幅データＷは、軌跡を通過させる所定の形状の輪郭あるいは面積に対応するデータであればよい。上述した球ＳＨの直径を示す幅データＷは、このような幅データＷの一例である。また、所定の形状としては、球ＳＨの大円ではなく、楕円や正方形を用いることとしてもよい。ただし、この場合におけるＧＰＵ４０は、軌跡の描画の際に、進行方向に対して鉛直な面内に配置される所定の形状の輪郭の座標位置を得るために、上記鉛直な面内における楕円や正方形の向きを決定する必要がある。大円を用いる場合には、大円が上記鉛直な面内で等方性を有することから、１つのパラメータで輪郭の座標位置が決定されるため、向きを決定するためのステップを省略することができる。
【００４８】  図２に戻り、スタートパラメータ１０４は、１つのパスデータＰＡを構成する１以上のセグメントＳのうち、先頭に対応する開始セグメントＳｓｔａｒｔの描画開始位置を示す属性である。また、エンドパラメータ１０５は、１つのパスデータＰＡを構成する１以上のセグメントＳのうち、末尾に対応する終了セグメントＳｅｎｄの描画終了位置を示す属性である。
【００４９】  図６は、スタートパラメータ１０４及びエンドパラメータ１０５を説明する図である。同図に示したパスデータＰＡ及び各セグメントＳは、図３及び図４に示したものと同じものである。同図では、上述したキャットマル−ロム曲線についても詳しく説明する。
【００５０】  スタートパラメータ１０４は、開始セグメントＳｓｔａｒｔ（＝Ｓ１）のｔ値によって表される。ｔ値は、図６に併記したセグメントＳｉの拡大図に示すように、０以上１以下の値をとるセグメントの内分点である。スタートパラメータ１０４によれば、位置データＰ１により示される位置と位置データＰ２により示される位置との間の任意の位置を、表示処理を開始する位置として指定することができる。
【００５１】  スタートパラメータ１０４の初期値は０である（後述する図１０の２行目「ｄｅｆａｕｌｔ＝０」を参照）。この初期値０は、パスデータＰＡのレンダリングが開始セグメントＳｓｔａｒｔの先頭から開始されることを示している。参考のために、図６には、スタートパラメータ１０４の値が０．５である場合において開始セグメントＳｓｔａｒｔの表示が開始される位置ＳＰを示している。
【００５２】  エンドパラメータ１０５は、終了セグメントＳｅｎｄ（＝ＳＮ−１）のｔ値によって表される。エンドパラメータ１０５によれば、位置データＰＮ−１により示される位置と位置データＰＮにより示される位置との間の任意の位置を、表示処理を終了する位置として指定することができる。
【００５３】  エンドパラメータ１０５の初期値は１である（後述する図１０の３行目「ｄｅｆａｕｌｔ＝１」を参照）。この初期値１は、パスデータＰＡのレンダリングが終了セグメントＳｅｎｄの末尾まで実行されることを示している。参考のために、図６には、エンドパラメータ１０５の値が０．７である場合において終了セグメントＳｅｎｄの表示が終了する位置ＥＰを示している。
【００５４】  なお、開始セグメントＳｓｔａｒｔでも終了セグメントＳｅｎｄでもないセグメントＳｉにおいては、すべての区間で表示処理が実行されるため、ｔ値は特段の意味を有さない。スタートパラメータ１０４及びエンドパラメータ１０５は、１つのパスデータＰＡに１つずつ存在するものである。
【００５５】  キャットマル−ロム曲線について、説明する。キャットマル−ロム曲線によるセグメントＳｉは、属性である位置１１１（図２を参照）として、その両端に位置する２つの位置データＰｉ，Ｐｉ＋１と、さらにその外側に位置する２つの位置データＰｉ−１，Ｐｉ＋２とを含んで構成される。図１に示したＧＰＵ４０は、これら４つの位置データＰｉ−１〜Ｐｉ＋２の座標をキャットマル−ロム曲線のコントロールポイントとして用いることにより、セグメントＳｉの具体的な形状を決定するよう構成される。
【００５６】  図７は、図６に示したセグメントＳｉ，Ｓｉ＋１のそれぞれと、ＧＰＵ４０によって描画されるキャットマル−ロム曲線との関係を示す図である。同図中段には、４つの位置データ｛Ｐｉ−１，Ｐｉ，Ｐｉ＋１，Ｐｉ＋２｝の組によって、位置データＰｉ，Ｐｉ＋１のそれぞれにより示される位置の間に存在するセグメントＳｉの具体的な形状が定義されることを示している。また、同図下段には、４つの位置データ｛Ｐｉ−１，Ｐｉ，Ｐｉ＋１，Ｐｉ＋２｝の組を１つ右にスライドしてなる４つの位置データ｛Ｐｉ，Ｐｉ＋１，Ｐｉ＋２，Ｐｉ＋３｝の組によって、位置データＰｉ＋１，Ｐｉ＋２のそれぞれにより示される位置の間に存在するセグメントＳｉ＋１の具体的な形状が定義されることを示している。
【００５７】  なお、開始セグメントＳｓｔａｒｔを構成する曲線の形状は、パスデータＰＡの始点に対応する位置データＰ１と同じ位置に設定した位置データＰ０を含む４つの位置データ｛Ｐ０，Ｐ１，Ｐ２，Ｐ３｝の組によって定義される。同様に、終了セグメントＳｅｎｄを構成する曲線の形状は、パスデータＰＡの終点に対応する位置データＰＮと同じ位置に設定した位置データＰＮ＋１を含む４つの位置データ｛ＰＮ−２，ＰＮ−１，ＰＮ，ＰＮ＋１｝の組によって定義される。ただし、位置データＰ０に位置データＰ１と異なる位置を示す値を設定してもよく、位置データＰＮ＋１に位置データＰＮと異なる位置を示す値を設定してもよい。
【００５８】  図２に戻り、精度データ１０６は、パスデータＰＡを符号化する際に用いる符号化の精度を示す属性であり、値が大きいほど、図９を参照して後述する変換処理（ステップＳ２１）の結果として得られる整数型データの精度が細かいことを示す。精度データ１０６は、１つのパスデータＰＡに対して１つ割り当てられる。このようにパスデータＰＡごとに精度データ１０６が割り当てられるのは、パスデータＰＡを生成する際に使用されたスタイラス２の種類や座標検出装置１の種類などによって、位置データＰや幅データＷの取得精度が異なる可能性があるためである。
【００５９】  以下、図８〜図１３を参照しながら、図１に示したデジタルインク処理部２０によって実行されるデジタルインク１００の符号化及び復号処理について、詳しく説明する。
【００６０】  図８は、デジタルインク１００の符号化処理を示すフロー図である。同図に示すように、デジタルインク処理部２０は、デジタルインク１００の中に含まれるパスデータＰＡの数（Ｚ個とする）だけ、ステップＳ２〜Ｓ１２の処理を繰り返すよう構成される（ステップＳ１）。この繰り返しにより、各パスデータＰＡが順次符号化される。詳しくは後述するが、符号化された各パスデータＰＡはそれぞれパスメッセージＢｉｎＰａｔｈを構成し、各パスメッセージＢｉｎＰａｔｈは、１つのバイナリストリームＢｉｎＩｎｋ内に区別可能な状態で順次追加される。なお、図８及び後掲の図においては、ｊ番目のパスデータＰＡをパスデータＰＡ［ｊ］と表すことにする。
【００６１】  ｊ番目のパスデータＰＡ［ｊ］に関して、デジタルインク処理部２０はまず、図２に示したスタートパラメータ１０４、エンドパラメータ１０５、及び精度データ１０６を取得する（ステップＳ２）。デジタルインク処理部２０は通常、スタートパラメータ１０４及びエンドパラメータ１０５の値として、それぞれの初期値０，１を取得する。ただし、パスデータＰＡ［ｊ］がユーザ操作等による他のパスデータＰＡの切断の結果として生成されたものである場合、スタートパラメータ１０４又はエンドパラメータ１０５が初期値とは異なる値になることがある。また、デジタルインク処理部２０は、精度データ１０６の値として、バスデータＰＡ［ｊ］を生成するために使用されたスタイラス２及び座標検出装置１の組み合わせに対応して予め定められた値を取得する。
【００６２】  次にデジタルインク処理部２０は、パスデータＰＡ［ｊ］に含まれるＮ個の位置データＰ１〜ＰＮの符号化処理を実行することにより、Ｎ個の符号化位置データＥＰ１〜ＥＰＮを取得する（ステップＳ３）。
【００６３】  図９は、位置データＰの符号化処理のフロー図である。後ほど説明するが、この符号化処理は幅データＷの符号化においても使用される。同図に示すように、この符号化処理は、１以上の入力データＤｉ（ｉ≧１）のそれぞれについて繰り返し実行される（ステップＳ２０）。この符号化処理がステップＳ３で呼び出される場合、１以上の入力データＤｉはＮ個の位置データＰ１〜ＰＮとなる。
【００６４】  ｉ番目の入力データＤｉに関して、デジタルインク処理部２０はまず、図８のステップＳ２で取得した精度データ１０６を用いて、浮動小数型である入力データＤｉを整数型データＩＮＴＤｉに変換する処理を行う（ステップＳ２１）。この処理を行うことにより、入力データＤｉのビット数を削減できるとともに、後述する図８のステップＳ８，Ｓ９で行う可変長符号化の結果として生成されるバイナリデータのビット数をも削減することが可能になる。
【００６５】  次にデジタルインク処理部２０は、入力データＤｉを符号化してなる符号化データＥＤｉを導出する。具体的には、ｉが１に等しいか否かを判定し（ステップＳ２２）、等しいと判定した場合には、整数型データＩＮＴＤｉを符号化データＥＤｉとして出力する（ステップＳ２３）。一方、等しくないと判定した場合には、整数型データＩＮＴＤｉから１つ前の整数型データＩＮＴＤｉ−１を減じてなる値ＩＮＴＤｉ−ＩＮＴＤｉ−１（差分値）を符号化データＥＤｉとして出力する（ステップＳ２４）。ステップＳ３においては、こうして出力された符号化データＥＤｉが、符号化位置データＥＰｉとして取得される。
【００６６】  図８に戻る。デジタルインク処理部２０は続いて、パスデータＰＡ［ｊ］に含まれるＭ個の幅データＷ１〜ＷＭを１以上の入力データＤｉとして図９に示す符号化処理を実行することにより、Ｍ個の符号化幅データＥＷ１〜ＥＷＭを取得する（ステップＳ４）。符号化処理の詳しい内容については、図９を参照して説明したとおりである。
【００６７】  この後に実行されるステップＳ５〜Ｓ１２の処理は、パスデータＰＡ［ｊ］を構成する各データを所定のスキーマに従って符号化することによって、バイナリストリームＢｉｎＩｎｋに追加するためのパスメッセージＢｉｎＰａｔｈ［ｊ］を生成する処理である。
【００６８】  図１０は、１つのパスデータＰＡを符号化することによって得られるパスメッセージＢｉｎＰａｔｈのスキーマ（デジタルインク１００のデータ構造）の例を示す図である。このスキーマは、図８に示す符号化処理によってパスメッセージＢｉｎＰａｔｈを生成する目的の他、後述する図１１及び図１２に示す復号処理においてパスデータＰＡを構成する各データを復号するためにも用いられる。なお、図１０においては、スキーマを記述するために、インタフェース記述言語(Interface Definition Language)を用いている。
【００６９】  図１０に示すように、本実施の形態によるパスメッセージＢｉｎＰａｔｈのスキーマにおいては、２行目にスタートパラメータ１０４のフィールド（ｓｔａｒｔＰａｒａｍｅｔｅｒ）が定義され、３行目にエンドパラメータ１０５のフィールド（ｅｎｄＰａｒａｍｅｔｅｒ）が定義され、４行目に精度データ１０６のフィールド（ｄｅｃｉｍａｌＰｒｅｃｉｓｉｏｎ。第３のバイナリ）が定義され、５行目に位置データＰのフィールド（Ｐｏｓｉｔｉｏｎｓ。第１のバイナリ）が定義され、６行目に幅データＷのフィールド（ｓｔｒｏｋｅＷｉｄｔｈｓ。第２のバイナリ）が定義され、７行目にカラーデータのフィールド（ｓｔｒｏｋｅＣｏｌｏｒ）が定義される。なお、カラーデータは、ストロークカラー１０２の具体的な値である。各フィールドは、パスメッセージＢｉｎＰａｔｈ内の互いに異なる領域に格納される。例えば、幅データＷのフィールドは、一連のｘ座標データ、ｙ座標データ、及びｚ座標データの組を示す位置データＰ（ただし、ｚ座標データは３次元の場合のみ）のフィールドから全体として分離されている。
【００７０】  各フィールドの名称に付加された「ｏｐｔｉｏｎａｌ」の文字は、そのフィールドが省略可能であることを示している。また、「ｒｅｐｅａｔｅｄ」の文字は、そのフィールドが複数の値を持ち得ることを示している。さらに、「ｆｌｏａｔ」は浮動小数点型、「ｕｉｎｔ３２」は３２ビット符号なし整数型、「ｓｉｎｔ３２」は３２ビット符号あり整数型をそれぞれ示している。また、各フィールドの等号の直後に記載される数値はフィールドを識別するためのタグの値を示し、「ｄｅｆａｕｌｔ」により示される値はそのフィールドの初期値を示している。「ｐａｃｋｅｄ＝ｔｒｕｅ」は、そのフィールドに格納されているデータが圧縮されたものであることを示している。ここでいう圧縮されたものとは、図９に示した符号化処理を経たデータであることを意味する。
【００７１】  図８に戻り、ステップＳ５において、デジタルインク処理部２０は、タグの値に１を設定する。そして、タグの値の判定を行う（ステップＳ６）。タグの値が１，２，３のいずれかである場合、デジタルインク処理部２０は、タグの値と、対応するデータとを固定長符号化する処理を行う（ステップＳ７）。
【００７２】  ステップＳ７で符号化の対象となるのは、ステップＳ２で取得したスタートパラメータ１０４、エンドパラメータ１０５、精度データ１０６である。タグの値が１である場合、デジタルインク処理部２０はスタートパラメータ１０４を固定長符号化することによって浮動小数点型のデータを生成し、パスメッセージＢｉｎＰａｔｈ［ｊ］に追加する（ステップＳ１０）。また、タグの値が２である場合、デジタルインク処理部２０はエンドパラメータ１０５をすることによって浮動小数点型のデータを生成し、パスメッセージＢｉｎＰａｔｈ［ｊ］に追加する（ステップＳ１０）。さらに、タグの値が３である場合、デジタルインク処理部２０は精度データ１０６を固定長符号化することによって３２ビット符号なし整数型のデータ（第３のバイナリ）を生成し（精度データ符号化ステップ）、パスメッセージＢｉｎＰａｔｈ［ｊ］に追加する（ステップＳ１０）。
【００７３】  ここで、精度データ１０６のタグの値として、位置データＰ、幅データＷ、及びカラーデータよりも小さい値を付与しているのは、後述する図１１及び図１２に示す復号処理において、精度データ１０６がこれらのデータよりも先に復号されるようにするためである。精度データ１０６を先に復号することで、位置データＰ、幅データＷ、及びカラーデータを正しく復号することが可能になる。
【００７４】  ステップＳ１０で各データをパスメッセージＢｉｎＰａｔｈ［ｊ］に追加したデジタルインク処理部２０は、現在のタグの値が５であるか否かを判定し（ステップＳ１１）、５でなければタグの値を１インクリメントし（ステップＳ１２）、処理をステップＳ６に戻す。なお、カラーデータの符号化を考慮する場合、ステップＳ１１の判定は、タグの値が６であるか否かの判定となる。タグの値が５であると判定した場合の処理については、後述する。
【００７５】  ステップＳ６でタグの値が４であると判定した場合、デジタルインク処理部２０は、タグの値４と、ステップＳ３で取得したＮ個の符号化位置データＥＰ１〜ＥＰＮのそれぞれとを可変長符号化することにより、一連のｘ座標データ、ｙ座標データ、及びｚ座標データの組を示す第１のバイナリ（ただし、ｚ座標データは３次元の場合のみ）を生成し（ステップＳ８。座標符号化ステップ）、生成した第１のバイナリをパスメッセージＢｉｎＰａｔｈ［ｊ］に追加する（ステップＳ１０）。可変長符号化の具体的な方式としては、符号化の対象となる値の絶対値が小さいほど符号化の結果として得られる値のビット数が少なくなるものであれば、特に限定されない。例えば、指数ゴロム符号や、グーグルプロトコルバッファで用いられるｓｉｎｔ３２などを利用することが可能である。
【００７６】  ここで、スタイラス２の動きにより取得される位置データＰの値は、連続した２つの値が近い値をとる傾向がある。これはスタイラス２が物理的に１つしかなく、これがパネル面をなぞるように動かされるためである。したがって、図９を参照して説明したように、連続する２つの位置データＰ間の差分値を符号化対象値とし、この値の符号化に可変長符号を用いることにより発生確率が比較的高い値を短いビット数の符号にすることができ、それによってデジタルインク１００のビット数を削減することが可能になる。
【００７７】  ステップＳ６でタグの値が５であると判定した場合、デジタルインク処理部２０は、タグの値５と、ステップＳ４で取得したＭ個の符号化幅データＥＷ１〜ＥＷＭのそれぞれとを可変長符号化することにより、第１のバイナリから全体として分離されてなる第２のバイナリを生成し（ステップＳ９。幅符号化ステップ）、生成した第２のバイナリをパスメッセージＢｉｎＰａｔｈ［ｊ］に追加する（ステップＳ１０）。可変長符号化の具体的な方式としては、ステップＳ８と同様に、符号化の対象となる値の絶対値が小さいほど符号化の結果として得られる値のビット数が少なくなるものであれば、特に限定されない。例えば、指数ゴロム符号や、グーグルプロトコルバッファで用いられるｓｉｎｔ３２などを利用することが可能である。
【００７８】  ここで、位置データＰの場合と同様、幅データＷについても、連続した２つの値が近い値をとる傾向がある。これは、幅データＷが上述したように筆圧値ＷＰから決定されるものであり、筆圧値ＷＰは、スタイラス２を物理的に押し付ける力をサンプリングして得られる値であるためである。したがって、この場合にも、連続する２つの幅データＷ間の差分値を符号化対象値とし、この値の符号化に可変長符号を用いることにより発生確率が比較的高い値を短いビット数の符号にすることができ、それによってデジタルインク１００のビット数を削減することが可能になる。
【００７９】  ステップＳ９の後のステップＳ１０が終了すると、処理中のパスデータＰＡに関する各データがパスメッセージＢｉｎＰａｔｈ［ｊ］内にすべてシリアライズされることになる。なお、カラーデータの符号化を考慮する場合には、処理中のパスデータＰＡに関する各データがパスメッセージＢｉｎＰａｔｈ［ｊ］内にすべてシリアライズされるのは、さらにカラーデータについての処理も終了した後となる。
【００８０】  こうして生成されたパスメッセージＢｉｎＰａｔｈ［ｊ］は、復号順で第２のバイナリより前に第３のバイナリが含まれるように、第１乃至第３のバイナリを互いに異なる領域に含むバイナリデータとなる。デジタルインク処理部２０は、ステップＳ１１でタグの値が５（カラーデータの符号化を考慮する場合には６）であると判定した場合、パスメッセージＢｉｎＰａｔｈ［ｊ］が完成したと判断し、パスメッセージＢｉｎＰａｔｈ［ｊ］のビット長と、パスメッセージＢｉｎＰａｔｈ［ｊ］とを順次バイナリストリームＢｉｎＩｎｋに追加する処理を行う（ステップＳ１３。シリアライズステップ）。
【００８１】  デジタルインク処理部２０が以上の処理をデジタルインク１００内のＺ個のパスデータＰＡのそれぞれについて実行することにより、各パスデータＰＡのパスメッセージＢｉｎＰａｔｈをシリアライズしてなるバイナリストリームＢｉｎＩｎｋが完成する。
【００８２】  表１は、以上の処理の結果として生成されるバイナリストリームＢｉｎＩｎｋの構成を示している。この表に示すように、バイナリストリームＢｉｎＩｎｋは、パスメッセージＢｉｎＰａｔｈのビット長とパスメッセージＢｉｎＰａｔｈの実体との組み合わせを、パスデータＰＡの個数分、繰り返し含んで構成される。なお、パスメッセージＢｉｎＰａｔｈには、図１０のスキーマに示した｛タグの値、バイナリ｝のペアが含まれる。
【００８３】
【表１】
2018124209.tif 000003
【００８４】  次に、図１１及び図１２は、デジタルインク１００の復号処理を示すフロー図である。同図に示すように、デジタルインク処理部２０は、まず初めにバイナリストリームＢｉｎＩｎｋを含むコンテナファイルＣＦ、又は、バイナリストリームＢｉｎＩｎｋがフラグメント化されてなる通信パケットから、デジタルインク１００を含むバイナリストリームＢｉｎＩｎｋを抽出する処理を行う（ステップＳ３０）。
【００８５】  次にデジタルインク処理部２０は、変数ｊに０を代入し（ステップＳ３１）、ステップＳ３０で抽出したバイナリストリームＢｉｎＩｎｋからパスメッセージＢｉｎＰａｔｈ［ｊ］のビット長及びパスメッセージＢｉｎＰａｔｈ［ｊ］の抽出を試みる（ステップＳ３２）。その結果、抽出できた場合には図１２のステップＳ３４に処理を移し、抽出できなかった場合には処理を終了する。
【００８６】  ステップＳ３４以降の処理は、図１０に示したスキーマに従って、パスメッセージＢｉｎＰａｔｈ［ｊ］内に格納されている各データ（スタートパラメータ１０４、エンドパラメータ１０５、精度データ１０６、位置データＰ、幅データＷ、カラーデータ）を復号する処理である。
【００８７】  具体的に説明すると、デジタルインク処理部２０はまず、パスメッセージＢｉｎＰａｔｈの未だ復号していない部分に最初に含まれるタグの復号を試みる（ステップＳ３４）。そして、復号できたか否かを判定し（ステップＳ３５）、できなかったと判定した場合には、変数ｊの値を１インクリメントしたうえで（ステップＳ３６）、処理を図１１のステップＳ３２に戻す。これにより、次のパスメッセージＢｉｎＰａｔｈ［ｊ］についての処理が開始されることになる。
【００８８】  一方、ステップＳ３５で復号できたと判定した場合には、復号したタグの値の判定を行う（ステップＳ３７）。その結果、タグの値が１，２，３のいずれかであると判定した場合、デジタルインク処理部２０は、それぞれのタグの後方領域に格納されている固定長のバイナリ列から、対応する固定長の各データを復号する処理を行う（ステップＳ３８）。こうして復号されるデータは、タグの値が１の場合にはスタートパラメータ１０４、タグの値が２の場合にはエンドパラメータ１０５、タグの値が３の場合には精度データ１０６となる。デジタルインク処理部２０は、あるタグの値についてステップＳ３８が終了した場合には、その都度、ステップＳ３４に処理を戻し、次のタグの値の復号を実施する。
【００８９】  次に、ステップＳ３７でタグの値が４であると判定した場合、デジタルインク処理部２０は、４であるタグの後方領域（第１の領域）に格納されているバイナリ列からＮ個の位置データＰ１〜ＰＮを復号する処理を行う（ステップＳ３９，Ｓ４０。位置データ復号ステップ）。
【００９０】  具体的に説明すると、デジタルインク処理部２０はまず、ステップＳ３９において、符号化されたバイナリ列（第１のバイナリ）からＮ個の整数値型の符号化対象値を可変長復号する。この処理は図８に示したステップＳ８の処理の逆処理であり、結果としてＮ個の符号化位置データＥＰ１〜ＥＰＮが取得される。
【００９１】  続いてデジタルインク処理部２０は、ステップＳ４０において、Ｎ個の符号化位置データＥＰ１〜ＥＰＮから浮動小数点型のＮ個の位置データＰ１〜ＰＮを復元するための復号処理を行う。
【００９２】  図１３は、位置データＰの復号処理のフロー図である。後ほど説明するが、この復号処理は幅データＷの復号においても使用される。同図に示すように、この復号処理は、１以上の入力データＥＤｉ（ｉ≧１）のそれぞれについて繰り返し実行される（ステップＳ５０）。この復号処理がステップＳ４０で呼び出される場合、１以上の入力データＥＤｉはＮ個の符号化位置データＥＰ１〜ＥＰＮとなる。
【００９３】  ｉ番目の入力データＥＤｉに関して、デジタルインク処理部２０はまず、ｉが１に等しいか否かを判定し（ステップＳ５１）、等しいと判定した場合には、入力データＥＤｉを整数型データＩＮＴＤｉとして取得する（ステップＳ５２）。一方、等しくないと判定した場合には、入力データＥＤｉに１つ前の整数型データＩＮＴＤｉ−１を加算してなる値ＥＤｉ＋ＩＮＴＤｉ−１を整数型データＩＮＴＤｉとして取得する（ステップＳ５３）。
【００９４】  次にデジタルインク処理部２０は、図１２のステップＳ３８で復号済みの精度データ１０６を用いて、整数型データＩＮＴＤｉを浮動小数型のデータＤｉに変換して出力する処理を行う（ステップＳ５４）。ステップＳ４０においては、こうして出力されたデータＤｉが位置データＰｉとして取得されることになる。
【００９５】  図１２に戻る。ステップＳ４０の処理を終えたデジタルインク処理部２０は、ステップＳ３４に処理を戻し、次のタグの値の復号を実施する。
【００９６】  次に、ステップＳ３７でタグの値が５であると判定した場合、デジタルインク処理部２０は、５であるタグの後方領域（第１の領域とは異なる第２の領域）に格納されているバイナリ列からＭ個の幅データＷ１〜ＷＭを復号する処理を行う（ステップＳ４１，Ｓ４２。幅データ復号ステップ）。
【００９７】  具体的に説明すると、デジタルインク処理部２０はまず、ステップＳ４１において、符号化されたバイナリ列（第２のバイナリ）からＮ個の整数値型の符号化対象値を可変長復号する。この処理は図８に示したステップＳ９の処理の逆処理であり、結果としてＭ個の符号化幅データＥＷ１〜ＥＷＭが取得される。
【００９８】  続いてデジタルインク処理部２０は、ステップＳ４２において、Ｍ個の符号化幅データＥＷ１〜ＥＷＭを１以上の入力データＥＤｉとして図１３に示す復号処理を実行することにより、浮動小数点型のＭ個の幅データＷ１〜ＷＭを復元する。復号処理の詳しい内容については、図１３を参照して説明したとおりである。
【００９９】  Ｍ個の幅データＷ１〜ＷＭを復元したデジタルインク処理部２０は、ＭとＮの値を比較する（ステップＳ４３）。その結果、ＭがＮより小さくない（又は、ＭがＮに等しい）と判定した場合、デジタルインク処理部２０は、ステップＳ３４に処理を戻し、次のタグの値の復号を試みる。一方、ＭがＮより小さいと判定したデジタルインク処理部２０は、例えばＭ番目の幅データＷＭにより、Ｍ＋１番目〜Ｎ番目の幅データＷＭ＋１〜ＷＮを補完する処理を行う（ステップＳ４４。幅補完ステップ）。具体的には、幅データＷＭ＋１〜ＷＮに幅データＷＭの値を代入する。これにより、ＭがＮより小さく、すべての位置データＰに対応する幅データＷが存在しない場合にも、すべての位置データＰに幅データＷを対応付けることが可能になる。なお、代入する幅データＷは、必ずしも幅データＷＭでなくてもよく、幅データＷ１〜ＷＭのいずれかであればよい。ステップＳ４４の完了後、デジタルインク処理部２０は、ステップＳ３４に処理を戻し、次のタグの値の復号を試みる。
【０１００】  以上説明したように、本実施の形態によるデジタルインクの符号化方法、復号方法、及びデータ構造によれば、固定幅（Ｍ＝１）であっても可変幅（１＜Ｍ≦Ｎ）であっても、同一の復号方法によりデジタルインクを復号できるようになる。また、ストロークの少なくとも一部を固定幅にする場合（１≦Ｍ＜Ｎ）には、Ｎ個未満の幅データを付加すれば足りることになるので、ストロークの全部を可変幅にする場合（Ｍ＝Ｎ）と比べてデジタルインクのビット数を削減することが可能になる。
【０１０１】  また、本実施の形態によるデジタルインクの符号化方法、復号方法、及びデータ構造によれば、座標検出装置１又はスタイラス２ごとに異なり得る精度データ１０６に基づき、ストローク単位で位置データＰを符号化ないし復号可能となる。したがって、１つのデジタルインク１００内に、互いに精度の異なる複数の位置データＰを配置することが可能になる。幅データＷ及びカラーデータについても同様である。
【０１０２】  例えば、本実施の形態によるデジタルインクの符号化方法、復号方法、及びデータ構造によれば、スタイラス２が第１及び第２のスタイラス（第１及び第２のポインティングデバイス）を含む場合、バイナリストリームＢｉｎＩｎｋは、第３のバイナリとして、第１のスタイラスについて取得される位置データＰの精度を示す第１の精度データと、第２のスタイラスについて取得される位置データＰの精度を示す第２の精度データとを含む。そしてこの場合、図９のステップＳ２１においては、第１のスタイラスについて取得される一連の位置データＰを第１の精度データを用いて符号化する一方、第２のスタイラスについて取得される一連の位置データＰを第２の精度データを用いて符号化する。したがって、第１のスタイラスによるストロークを構成する一連の位置データＰと、第２のスタイラスによるストロークを構成する一連の位置データＰとが、異なる精度データ１０６に基づいて符号化される。
【０１０３】  次に、図１４〜図１８を参照しながら、図１に示したデジタルインク処理部２０によって実行されるコンテナファイルＣＦの生成処理について、詳しく説明する。なお、以下では、非特許文献４に記載されるＯＰＣ(OpenPackagingConvention)のフォーマットに従ったファイルの生成方法を説明する。ＯＰＣは、ＸＭＬファイル群及び非ＸＭＬファイル群（ＳＶＧファイル、及び、バイナリストリームＢｉｎＩｎｋ等）がＺＩＰアーカイブされてなるコンテナファイルＣＦのフォーマットである。
【０１０４】  図１４は、コンテナファイルＣＦを構成するエンティティを説明するＥＲ図である。ＥＲ図の表記方法及び多重度は図２と同じであるが、図中に矩形で示す各エンティティは、上述したＯＰＣの「パッケージ」と、その中に含まれる「ＯＰＣパーツ」とに対応している。
【０１０５】  図１４に示すように、コンテナファイルＣＦ内には、エンティティとしてパッケージ３０１、コア情報３０２、アプリ情報３０３、ＳＶＧセクション情報３０４、バイナリストリーム３０５が含まれる。
【０１０６】  コア情報３０２は、コンテナファイルＣＦに関する一般的な情報と、このパッケージ全体に含まれる各ファイルについてのメタデータとを含む情報であり、パッケージ３０１と１対１に対応する（関係ｒｅｌ１）。アプリ情報３０３は、コンテナファイルＣＦを生成するために用いられたオリジナルアプリケーションを示す情報を含む情報であり、パッケージ３０１と１対１に対応する（関係ｒｅｌ２）。
【０１０７】  ＳＶＧセクション情報３０４は、ＳＶＧに従って符号化されたマルチメディアコンテンツを含む情報であり、パッケージ３０１との間に１対０以上の関係ｒｅｌ３を有する。バイナリストリーム３０５は、本発明によるデジタルインクの符号化方法により生成されたバイナリストリームＢｉｎＩｎｋであり、ＳＶＧセクション情報３０４との間に１対０以上の関係ｒｅｌ４を有する。
【０１０８】  なお、パッケージ３０１、コア情報３０２、及びこれらの関係ｒｅｌ１は、非特許文献４に記載されるＯＰＣに規定されるものである。これに対し、その他のエンティティ及びこれらに関する関係ｒｅｌ２〜ｒｅｌ４（破線で囲った部分）は、本発明によるＯＰＣの拡張に相当する。
【０１０９】  図１５は、コンテナファイルＣＦ内にアーカイブされるファイル群の構成例を示す図である。同図において、長方形はディレクトリを示し、平行四辺形はファイルを示している。同図に示すように、パッケージ３０１は実体としてはディレクトリであり、関係ディレクトリ４００（＿ｒｅｌｓ）、プロパティディレクトリ４１０（ｐｒｏｐ）、セクションディレクトリ４２０（ｓｅｃｔｉｏｎｓ）という３つのディレクトリを含んで構成される。
【０１１０】  関係ディレクトリ４００には、パッケージ３０１とパッケージ３０１に含まれる各パーツとの関係（図１４に示した関係ｒｅｌ１〜ｒｅｌ３）を示す関係ファイル４０１（．ｒｅｌｓ）が含まれる。
【０１１１】  図１６（ａ）は、関係ファイル４０１の具体的な内容の例を示す図である。同図に示す「／ｐｒｏｐｓ／ｃｏｒｅ．ｘｍｌ」はコア情報３０２のＵＲＩ(Uniform Resource Identifier)であり、「／ｐｒｏｐｓ／ａｐｐ．ｘｍｌ」はアプリ情報３０３のＵＲＩであり、「／ｓｅｃｔｉｏｎｓ／ｓｅｃｔｉｏｎ０．ｓｖｇ」は１番目のＳＶＧセクション情報３０４のＵＲＩである。同図に示すように、関係ファイル４０１には、コア情報３０２、アプリ情報３０３、ＳＶＧセクション情報３０４のそれぞれについて、後にコンテナファイルＣＦを参照するコンピュータがその情報を識別するための識別情報（Ｉｄ）と、その情報のタイプを示す情報（Ｔｙｐｅ）と、その情報のＵＲＩとが対応付けて格納される。なお、関係ファイル４０１並びに後述する関係ファイル４２２及びＳＶＧファイル４２３は、ＸＭＬに従って記述されたＸＭＬデータがＵＴＦ−８等のテキストの符号化方法によってバイナリ列化されてなるＸＭＬファイルである。
【０１１２】  例えば、図１６（ａ）の例による関係ファイル４０１には、対応するパッケージ３０１に「ｓｅｃｔｉｏｎ０」という識別情報が付与されたセクション（並びにコンテンツ）が存在し、そのＵＲＩが「／ｓｅｃｔｉｏｎｓ／ｓｅｃｔｉｏｎ０．ｓｖｇ」あるいはその位置から派生する位置であることが記載されており、さらに、そのセクションには、「／ｐｒｏｐｓ／ｃｏｒｅ．ｘｍｌ」の位置に示されるメタデータが付与されることが記載されている。
【０１１３】  図１５に戻り、プロパティディレクトリ４１０には、コア情報３０２が記述されてなるＸＭＬファイル４１１（ｃｏｒｅ．ｘｍｌ）と、アプリ情報３０３が記述されてなるＸＭＬファイル４１２（ａｐｐ．ｘｍｌ）とが含まれる。図１６（ｂ）は、ＸＭＬファイル４１１の具体的な内容の例を示し、図１６（ｃ）は、ＸＭＬファイル４１２の具体的な内容の例を示している。例えば図１６（ｂ）に示した「Ａｕｔｈｏｒ＿ｎａｍｅ＿０００１」は、コンテナファイルＣＦの作成者の情報を示している。
【０１１４】  セクションディレクトリ４２０には、関係ディレクトリ４２１（＿ｒｅｌｓ）と、それぞれＳＶＧセクション情報３０４が記述されてなる１以上のＳＶＧファイル４２３（ｓｅｃｔｉｏｎ０．ｓｖｇ，ｓｅｃｔｉｏｎ１．ｓｖｇ）と、メディアディレクトリ４２４（ｍｅｄｉａ）とが含まれる。なお、図１５には２つのＳＶＧファイル４２３を示しているが、これは例示であり、ＳＶＧファイル４２３の数は２つに限定されない。
【０１１５】  メディアディレクトリ４２４には、それぞれ本発明によるデジタルインクの符号化方法によって符号化されたバイナリストリーム３０５（バイナリストリームＢｉｎＩｎｋ）である１以上のバイナリファイル４２５（ｐａｔｈｓ０．ｐｒｏｔｏｂｕｆ，ｐａｔｈｓ１．ｐｒｏｔｏｂｕｆ）が含まれる。なお、図１５には２つのバイナリファイル４２５を示しているが、これは例示であり、バイナリファイル４２５の数は２つに限定されない。また、関係ディレクトリ４２１には、１以上のＳＶＧファイル４２３のそれぞれに対応して、１以上のバイナリファイル４２５との関係（図１４に示した関係ｒｅｌ４）を示す関係ファイル４２２（ｓｅｃｔｉｏｎ０．ｓｖｇ．ｒｅｌ，ｓｅｃｔｉｏｎ１．ｓｖｇ．ｒｅｌ）が格納される。
【０１１６】  図１７（ａ）は、関係ファイル４２２の具体的な内容の例を示す図である。例えば、この例においては、「ｐａｔｈｓ０．ｐｒｏｔｏｂｕｆ」であるバイナリファイル４２５を示すターゲットＩＤ「ｓｔｒｏｋｅｓ０」が記述されており、これにより、「ｐａｔｈｓ０．ｐｒｏｔｏｂｕｆ」がこの関係ファイル４２２に対応するものであることが示されている。また、図１７（ｂ）は、ＳＶＧファイル４２３の具体的な内容の例を示す図である。
【０１１７】  図１８は、以上で説明した構造を有するコンテナファイルＣＦの生成方法のフロー図である。以下、この図１８を参照しながら、図１に示したデジタルインク処理部２０によるコンテナファイルＣＦの生成処理について、詳しく説明する。
【０１１８】  コンテナファイルＣＦの生成処理は、まず、図８に示したデジタルインク１００の符号化処理を行ってバイナリストリームＢｉｎＩｎｋを得ることから開始される。すなわち、デジタルインク処理部２０はまず、スタイラス２（図１を参照）が平面にダウンされてから、該平面からアップされるまでの動作に伴い取得されたＮ個の位置データＰを第１の符号化方法（図８のステップＳ３，Ｓ４，Ｓ７〜Ｓ９において実行される符号化方法の総体）により符号化することによって、バイナリストリームＢｉｎＩｎｋを取得する（ステップＳ６０。第１の符号化ステップ）。
【０１１９】  次にデジタルインク処理部２０は、バイナリストリームＢｉｎＩｎｋに付与すべきメタデータ（図１６（ｂ）に示した「Ａｕｔｈｏｒ＿ｎａｍｅ＿０００１」に対応する作成者の情報など）を取得し（ステップＳ６１）、該メタデータを含むコア情報３０２（第１のＸＭＬデータ）を第２の符号化方法（ＵＴＦ−８等）により符号化することによって、図１５に示したＸＭＬファイル４１１（Ｃｏｒｅ．ｘｍｌ。第１のＸＭＬファイル）を生成する（ステップＳ６２。第１のメタデータバイナリ生成ステップ）。
【０１２０】  続いてデジタルインク処理部２０は、ステップＳ６０で取得したバイナリストリームＢｉｎＩｎｋを示すターゲットＩＤと、ステップＳ６２で生成したＸＭＬファイル４１１との関係を示すＸＭＬデータ（第２のＸＭＬデータ）を生成し（ステップＳ６３）、該ＸＭＬデータを上記第２の符号化方法により符号化することによって、図１５に示した関係ファイル４０１（．ｒｅｌｓ。第２のＸＭＬファイル）を生成する（ステップＳ６４。第２のメタデータバイナリ生成ステップ）。
【０１２１】  そして最後に、デジタルインク処理部２０は、ステップＳ６０で取得したバイナリストリームＢｉｎＩｎｋと、ステップＳ６２，Ｓ６４で生成したＸＭＬファイル４１１及び関係ファイル４０１とを、１つのコンテナファイルＣＦ（パッケージ）内にアーカイブする（ステップＳ６５。パッケージ生成ステップ）。
【０１２２】  以上説明したように、本実施の形態によるデジタルインクを含むファイルの生成方法によれば、ストロークを構成する一連の位置データを符号化することによって生成されたバイナリストリームに対し、ＸＭＬ等の汎用の記述法によりメタデータを付与し、それぞれを１つのコンテナファイルＣＦ内にアーカイブすることが可能になる。これにより、例えば本発明に係る符号化方法により生成されたバイナリストリームＢｉｎＩｎｋを復号できないアプリケーションであっても、ＯＰＣ形式のコンテナファイルＣＦに格納されたＸＭＬファイルを解釈することが可能であれば、そのメタデータを得ることが可能になる。
【０１２３】  以上、本発明の好ましい実施の形態について説明したが、本発明はこうした実施の形態に何等限定されるものではなく、本発明が、その要旨を逸脱しない範囲において、種々なる態様で実施され得ることは勿論である。
【符号の説明】
【０１２４】１                  座標検出装置２                  スタイラス１０                センサコントローラ１１                電極群１１ｘ，１１ｙ      電極２０                デジタルインク処理部２１                ＣＰＵ２２                ＲＡＭ２３                入出力部３０                ＧＰＵ１００              デジタルインク１０１              パスクラス１０２              ストロークカラー１０３              ストローク幅１０４              スタートパラメータ１０５              エンドパラメータ１０６              精度データ１１０              セグメントクラス１１１              位置３０１              パッケージ３０２              コア情報３０３              アプリ情報３０４              セクション情報３０５              バイナリストリーム４００，４２１      関係ディレクトリ４０１，４２２      関係ファイル４１０              プロパティディレクトリ４１１，４１２      ＸＭＬファイル４２０              セクションディレクトリ４２３              ＳＶＧファイル４２４              メディアディレクトリ４２５              バイナリファイルＢｉｎＩｎｋ        バイナリストリームＢｉｎＰａｔｈ      パスメッセージＣＦ                コンテナファイルＥＰ                符号化位置データＥＷ                符号化幅データＩＮＴＤ            整数型データＰ                  位置データＰＡ                パスデータＳ                  セグメントＷ                  幅データＷＰ                筆圧値ｒｅｌ１〜ｒｅｌ３  関係
【図１】
2018124209.tif 000004
【図２】
2018124209.tif 000005
【図３】
2018124209.tif 000006
【図４】
2018124209.tif 000007
【図５】
2018124209.tif 000008
【図６】
2018124209.tif 000009
【図７】
2018124209.tif 000010
【図８】
2018124209.tif 000011
【図９】
2018124209.tif 000012
【図１０】
2018124209.tif 000013
【図１１】
2018124209.tif 000014
【図１２】
2018124209.tif 000015
【図１３】
2018124209.tif 000016
【図１４】
2018124209.tif 000017
【図１５】
2018124209.tif 000018
【図１６】
2018124209.tif 000019
【図１７】
2018124209.tif 000020
【図１８】
2018124209.tif 000021
【手続補正書】
【提出日】平成30年4月16日(2018.4.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デジタルインクの符号化方法であって、
ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたそれぞれｘ座標データ及びｙ座標データの組を含んでなるＮ個の位置データを符号化することによって、一連のｘ座標データ及びｙ座標データの組を示す第１のバイナリを取得する座標符号化ステップと、
前記Ｎ個の位置データそれぞれの位置における幅を決定するＭ個（Ｍは１以上Ｎ以下の整数）の幅データを符号化することによって、前記第１のバイナリから全体として分離されてなる第２のバイナリを取得する幅符号化ステップと、
前記第１及び第２のバイナリを互いに異なる領域に含むバイナリストリームを生成するシリアライズステップと、
を含むデジタルインクの符号化方法。
【請求項２】
前記幅データは、前記Ｍが１である場合に、前記Ｎ個の位置データにより示される軌跡の幅が固定値であることを示し、前記Ｍが２以上前記Ｎ以下である場合に、前記Ｎ個の位置データにより示される軌跡の幅が可変であることを示す、
請求項１に記載のデジタルインクの符号化方法。
【請求項３】
前記Ｎ個の位置データはそれぞれ、ｘ座標データ、ｙ座標データ、及びｚ座標データの組を含んでなり、
前記第１のバイナリは、一連のｘ座標データ、ｙ座標データ、及びｚ座標データの組を示すバイナリであり、
前記Ｍ個の幅データはそれぞれ、前記Ｎ個の位置データの位置における所定の形状の面積に対応するデータである、
請求項１に記載のデジタルインクの符号化方法。
【請求項４】
前記所定の形状の面積に対応するデータは、球の径を示すデータである、
請求項３に記載のデジタルインクの符号化方法。
【請求項５】
前記Ｎ個の位置データの精度を示す精度データを符号化することによって第３のバイナリを生成する精度データ符号化ステップをさらに含み、
前記座標符号化ステップは、前記精度データを用いて前記Ｎ個の位置データを符号化し、
前記シリアライズステップは、復号順で前記第２のバイナリより前に前記第３のバイナリが含まれるように、前記第１乃至第３のバイナリを互いに異なる領域に含む前記バイナリストリームを生成する、
請求項１に記載のデジタルインクの符号化方法。
【請求項６】
前記ポインティングデバイスは、第１及び第２のポインティングデバイスを含み、
前記バイナリストリームは、前記第３のバイナリとして、前記第１のポインティングデバイスについて取得される位置データの精度を示す第１の精度データ、及び、前記第２のポインティングデバイスについて取得される位置データの精度を示す第２の精度データを含み、
前記座標符号化ステップは、前記第１のポインティングデバイスについて取得される一連の位置データを前記第１の精度データを用いて符号化する一方、前記第２のポインティングデバイスについて取得される一連の位置データを前記第２の精度データを用いて符号化する、
請求項５に記載のデジタルインクの符号化方法。
【請求項７】
符号化されたデジタルインクを含むバイナリストリームからポインティングデバイスの軌跡を再現するためのデジタルインクの復号方法であって、
前記ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたＮ個の位置データを、前記バイナリストリームの第１の領域から復号する位置データ復号ステップと、
前記Ｎ個の位置データの位置での幅を決定するＭ個（Ｍは１以上Ｎ以下の整数）の幅データを、前記バイナリストリームのうち前記第１の領域とは異なる第２の領域から復号する幅データ復号ステップと、
前記Ｍ個が前記Ｎ個より少ない場合に、前記Ｍ個の幅データのうちのいずれかにより、前記Ｎ個の位置データのうちのＮ−Ｍ個それぞれの位置における幅を補完する幅補完ステップと、
を含むデジタルインクの復号方法。
【請求項８】
前記幅データは、前記Ｍが１である場合に、前記Ｎ個の位置データにより示される軌跡の幅が固定値であることを示し、前記Ｍが２以上前記Ｎ以下である場合に、前記Ｎ個の位置データにより示される軌跡の幅が可変であることを示す、
請求項７に記載のデジタルインクの復号方法。
【請求項９】
デジタルインクのデータ構造であって、
ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたＮ個の位置データを符号化することによって得られる第１のバイナリと、前記Ｎ個の位置データそれぞれの位置における幅を決定するＭ個（Ｍは１以上Ｎ以下の整数）の幅データを符号化することによって得られる第２のバイナリとを、互いに異なる領域に含み、
前記デジタルインクの復号方法を実行するコンピュータにおいて、
前記第１のバイナリから前記Ｎ個の位置データを復元し、
前記第２のバイナリから前記Ｍ個の幅データを復元し、
前記Ｍ個が前記Ｎ個より少ない場合に、前記Ｍ個の幅データのうちのいずれかにより、前記Ｎ個の位置データのうちのＮ−Ｍ個それぞれの位置における幅を補完する処理に用いられる、
デジタルインクのデータ構造。
【請求項１０】
符号化されたデジタルインクを含むファイルの生成方法であって、
ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたＮ個の位置データを第１の符号化方法により符号化することによってバイナリストリームを取得する第１の符号化ステップと、
前記バイナリストリームに付与すべきメタデータを取得し、該メタデータを含む第１のＸＭＬデータを第２の符号化方法により符号化することによって第１のＸＭＬファイルを生成する第１のメタデータバイナリ生成ステップと、
前記バイナリストリームを示すターゲットＩＤと、該バイナリストリームに関連付ける前記メタデータとの関係を示す第２のＸＭＬデータを生成し、該第２のＸＭＬデータを前記第２の符号化方法により符号化することによって第２のＸＭＬファイルを生成する第２のメタデータバイナリ生成ステップと、
前記バイナリストリームと、前記第１及び第２のＸＭＬファイルとを一つのパッケージファイルにアーカイブするパッケージ生成ステップと、
を含むデジタルインクを含むファイルの生成方法。
【手続補正書】
【提出日】平成30年7月5日(2018.7.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
デジタルインクの符号化方法であって、
ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたそれぞれｘ座標データ及びｙ座標データの組を含んでなるＮ個の位置データを符号化することによって、一連のｘ座標データ及びｙ座標データの組を示す第１のバイナリを取得する座標符号化ステップと、
前記Ｎ個の位置データそれぞれの位置における幅を決定するＭ個（Ｍは１以上Ｎ以下の整数）の幅データを符号化することによって、前記第１のバイナリから全体として分離されてなる第２のバイナリを取得する幅符号化ステップと、
前記第１及び第２のバイナリを互いに異なる領域に含むバイナリストリームを生成するシリアライズステップと、
を含むデジタルインクの符号化方法。
【請求項２】
前記幅データは、前記Ｍが１である場合に、前記Ｎ個の位置データにより示される軌跡の幅が固定値であることを示し、前記Ｍが２以上前記Ｎ以下である場合に、前記Ｎ個の位置データにより示される軌跡の幅が可変であることを示す、
請求項１に記載のデジタルインクの符号化方法。
【請求項３】
前記Ｎ個の位置データはそれぞれ、ｘ座標データ、ｙ座標データ、及びｚ座標データの組を含んでなり、
前記第１のバイナリは、一連のｘ座標データ、ｙ座標データ、及びｚ座標データの組を示すバイナリであり、
前記Ｍ個の幅データはそれぞれ、前記Ｎ個の位置データの位置における所定の形状の面積に対応するデータである、
請求項１に記載のデジタルインクの符号化方法。
【請求項４】
前記所定の形状の面積に対応するデータは、球の径を示すデータである、
請求項３に記載のデジタルインクの符号化方法。
【請求項５】
前記Ｎ個の位置データの精度を示す精度データを符号化することによって第３のバイナリを生成する精度データ符号化ステップをさらに含み、
前記座標符号化ステップは、前記精度データを用いて前記Ｎ個の位置データを符号化し、
前記シリアライズステップは、復号順で前記第２のバイナリより前に前記第３のバイナリが含まれるように、前記第１乃至第３のバイナリを互いに異なる領域に含む前記バイナリストリームを生成する、
請求項１に記載のデジタルインクの符号化方法。
【請求項６】
前記ポインティングデバイスは、第１及び第２のポインティングデバイスを含み、
前記バイナリストリームは、前記第３のバイナリとして、前記第１のポインティングデバイスについて取得される位置データの精度を示す第１の精度データ、及び、前記第２のポインティングデバイスについて取得される位置データの精度を示す第２の精度データを含み、
前記座標符号化ステップは、前記第１のポインティングデバイスについて取得される一連の位置データを前記第１の精度データを用いて符号化する一方、前記第２のポインティングデバイスについて取得される一連の位置データを前記第２の精度データを用いて符号化する、
請求項５に記載のデジタルインクの符号化方法。
【請求項７】
符号化されたデジタルインクを含むバイナリストリームからポインティングデバイスの軌跡を再現するためのデジタルインクの復号方法であって、
前記ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたＮ個の位置データを、前記バイナリストリームの第１の領域から復号する位置データ復号ステップと、
前記Ｎ個の位置データの位置での幅を決定するＭ個（Ｍは１以上Ｎ以下の整数）の幅データを、前記バイナリストリームのうち前記第１の領域とは異なる第２の領域から復号する幅データ復号ステップと、
前記Ｍ個が前記Ｎ個より少ない場合に、前記Ｍ個の幅データのうちのいずれかにより、前記Ｎ個の位置データのうちのＮ−Ｍ個それぞれの位置における幅を補完する幅補完ステップと、
を含むデジタルインクの復号方法。
【請求項８】
前記幅データは、前記Ｍが１である場合に、前記Ｎ個の位置データにより示される軌跡の幅が固定値であることを示し、前記Ｍが２以上前記Ｎ以下である場合に、前記Ｎ個の位置データにより示される軌跡の幅が可変であることを示す、
請求項７に記載のデジタルインクの復号方法。
【請求項９】
符号化されたデジタルインクを含むファイルの生成方法であって、
ポインティングデバイスの状態によって決まる所定の期間内における該ポインティングデバイスの動作に伴い取得されたＮ個の位置データを第１の符号化方法により符号化することによってバイナリストリームを取得する第１の符号化ステップと、
前記バイナリストリームに付与すべきメタデータを取得し、該メタデータを含む第１のＸＭＬデータを第２の符号化方法により符号化することによって第１のＸＭＬファイルを生成する第１のメタデータバイナリ生成ステップと、
前記バイナリストリームを示すターゲットＩＤと、該バイナリストリームに関連付ける前記メタデータとの関係を示す第２のＸＭＬデータを生成し、該第２のＸＭＬデータを前記第２の符号化方法により符号化することによって第２のＸＭＬファイルを生成する第２のメタデータバイナリ生成ステップと、
前記バイナリストリームと、前記第１及び第２のＸＭＬファイルとを一つのパッケージファイルにアーカイブするパッケージ生成ステップと、
を含むデジタルインクを含むファイルの生成方法。
【国際調査報告】
2018124209.tif 000022
2018124209.tif 000023
2018124209.tif 000024
2018124209.tif 000025