(57)【要約】【課題】手書き入力されることにより多くのベクトルが生成された記号を認識する際に必要な演算量を削減できるようにする。【解決手段】入力手段が画面に触れてから離れるまで、前記入力手段が移動するごとにその位置情報を取得するタッチ情報取得手段と、前記タッチ情報取得手段から得た位置情報から前記入力手段の移動を示すベクトル情報を作成し、前記入力手段が画面に触れてから完全に離れるまでの一連のベクトルを１つのストローク情報として記憶するストローク情報記憶手段と、一連の１乃至は複数のベクトル情報が記憶されたストローク情報を、１乃至は複数記憶するオブジェクト情報記憶手段と、前記ベクトル情報から、そのストロークの特徴量を算出するストローク特徴量算出手段と、前記複数のベクトルのうち、所定個数のベクトルを１つのベクトルにするまとめ処理を行い、ベクトル数を圧縮するデータ圧縮手段とを有する。【選択図】図５
2015191581.tif 000002
【特許請求の範囲】
【請求項１】
入力手段が画面に触れてから離れるまで、前記入力手段が移動するごとにその位置情報を取得するタッチ情報取得手段と、
前記タッチ情報取得手段から得た位置情報から前記入力手段の移動を示すベクトル情報を作成し、前記入力手段が画面に触れてから完全に離れるまでの一連のベクトルを１つのストローク情報として記憶するストローク情報記憶手段と、
一連の１乃至は複数のベクトル情報が記憶されたストローク情報を、１乃至は複数記憶するオブジェクト情報記憶手段と、
前記ベクトル情報から、そのストロークの特徴量を算出するストローク特徴量算出手段と、
前記複数のベクトルのうち、所定個数のベクトルを１つのベクトルにするまとめ処理を行い、ベクトル数を圧縮するデータ圧縮手段とを有することを特徴とする手書き音楽記号認識装置。
【請求項２】
前記まとめ処理とは、最初のベクトルの始点と最終ベクトルの終点を結ぶ直線の距離が規定値以内であれば、連続した短いベクトルを複数まとめて１つのベクトルを生成する処理であることを特徴とする請求項１に記載の手書き音楽記号認識装置。
【請求項３】
前記まとめ処理とは、最初のベクトルの始点と最終ベクトルの終点を結ぶ直線を求め、ベクトルの終点から前記求めた直線までの距離が規定値以内であれば、複数のベクトルをまとめて１つのベクトルを生成する処理であることを特徴とする請求項１に記載の手書き音楽記号認識装置。
【請求項４】
前記まとめ処理とは、ベクトルを方向別に分類し、同じ種類のベクトルが連続した場合は、それらのベクトルまとめて１つのベクトルを生成する処理であることを特徴とする請求項１に記載の手書き音楽記号認識装置。
【請求項５】
前記まとめ処理とは、ベクトルを方向別に分類するときに、互いに隣り合うベクトルか否かを判断し、互いに隣り合うベクトルの場合、それらの閾値となる角度の上限角度と下限角度を算出し、共に上限角度と下限角度の範囲内である場合は、それらのベクトルまとめて１つのベクトルを生成する処理であることを特徴とする請求項１に記載の手書き音楽記号認識装置。
【請求項６】
入力手段が画面に触れてから離れるまで、前記入力手段が移動するごとにその位置情報を取得するタッチ情報取得処理と、
前記タッチ情報取得処理から得た位置情報から前記入力手段の移動を示すベクトル情報を作成し、前記入力手段が画面に触れてから完全に離れるまでの一連のベクトルを１つのストローク情報として記憶するストローク情報記憶処理と、
一連の１乃至は複数のベクトル情報が記憶されたストローク情報を、１乃至は複数記憶するオブジェクト情報記憶処理と、
前記ベクトル情報から、そのストロークの特徴量を算出するストローク特徴量算出処理と、
前記複数のベクトルのうち、所定個数のベクトルを１つのベクトルにするまとめ処理を行い、ベクトル数を圧縮するデータ圧縮処理とをコンピュータに実行させることを特徴とする手書き音楽記号認識プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は手書き音楽記号認識装置及び手書き音楽記号認識プログラムに関し、特に、タブレット端末（タッチ対応ＰＣ含む）などで、手書き（ペン使用含む）で楽譜を作成する場合に、手書きした記号を認識するために用いて好適な技術に関する。
【背景技術】
【０００２】
手書きに対応したタブレット端末は、指が画面に触れてから離れるまで、指の移動がある度にその位置情報を取得するＡＰＩを備えている。一連の位置情報の変化を複数のベクトルとして記憶し、そのベクトルから指の動きの特徴を抽出し、描かれた記号を認識する。
【０００３】
実際のＡＰＩ動作は、指が画面に触れてから離れるまで、微小な位置情報の変化を数多く取得する。したがって小さなベクトルが数多く生成される。
そのままでは指の動きの特徴が掴みにくい上、演算量が多くなってしまう。
【０００４】
このような問題点を解決するために、特許文献１において、入力された座標データから直線成分を抽出する直線成分抽出方法が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１−９６７７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１で提案された技術は、入力された複数の座標データが所定の直線化範囲内にあれば、始点座標と終点座標を結ぶ直線データとする技術である。順次直線成分の確認を行いながら、入力された座標データが直線化範囲外であると判断された場合に、該座標データの前のデータと始点データとを直線成分として抽出し記憶する。このため、入力された記号の全体を認識するために必要な演算量が多くなってしまう問題点があった。
本発明は前述の問題点に鑑み、手書き入力されることにより多くのベクトルが生成された記号を認識する際にデータを圧縮して必要な演算量を削減できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明の手書き音楽記号認識装置は、入力手段が画面に触れてから離れるまで、前記入力手段が移動するごとにその位置情報を取得するタッチ情報取得手段と、前記タッチ情報取得手段から得た位置情報から前記入力手段の移動を示すベクトル情報を作成し、前記入力手段が画面に触れてから完全に離れるまでの一連のベクトルを１つのストローク情報として記憶するストローク情報記憶手段と、一連の１乃至は複数のベクトル情報が記憶されたストローク情報を、１乃至は複数記憶するオブジェクト情報記憶手段と、前記ベクトル情報から、そのストロークの特徴量を算出するストローク特徴量算出手段と、前記複数のベクトルのうち、所定個数のベクトルを１つのベクトルにするまとめ処理を行い、ベクトル数を圧縮するデータ圧縮手段とを有することを特徴とする。
本発明の手書き音楽記号認識プログラムは、入力手段が画面に触れてから離れるまで、前記入力手段が移動するごとにその位置情報を取得するタッチ情報取得処理と、前記タッチ情報取得処理から得た位置情報から前記入力手段の移動を示すベクトル情報を作成し、前記入力手段が画面に触れてから完全に離れるまでの一連のベクトルを１つのストローク情報として記憶するストローク情報記憶処理と、一連の１乃至は複数のベクトル情報が記憶されたストローク情報を、１乃至は複数記憶するオブジェクト情報記憶処理と、前記ベクトル情報から、そのストロークの特徴量を算出するストローク特徴量算出処理と、前記複数のベクトルのうち、所定個数のベクトルを１つのベクトルにするまとめ処理を行い、ベクトル数を圧縮するデータ圧縮処理とをコンピュータに実行させることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、手書き入力されることにより多くのベクトルが生成された記号を認識する際に必要な演算量を削減することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施形態に係る手書き音楽記号認識装置の構成例を示すブロック図である。
【図２】ベクトルを９つの種類に分類する例を示す図である。
【図３】当該ベクトルから次のベクトルへの回転角度の変化例を示す図である。
【図４】第１の実施形態における、微小なベクトルをまとめて、ある程度の大きさの１つのベクトルに変換する例を示す図である。
【図５】第１の実施形態における、演算量を圧縮する処理手順を説明フローチャートである。
【図６】第２の実施形態における、始点と終点を結ぶ直線からの距離が規定値以内であれば、１つのベクトルにまとめる例を説明する図である。
【図７】第２の実施形態における、処理手順を説明するフローチャートである。
【図８】第３の実施形態における、ベクトルを方向別にグルーピングし、同じグループのベクトルが連続した場合は、それらを１つにまとめる例を示す図である。
【図９】第３の実施形態における、処理手順を説明するフローチャートである。
【図１０】第４の実施形態における、傾きの閾値付近のベクトルをまとめる例を示す図である。
【図１１】第４の実施形態における、処理手順を説明するフローチャートである。
【図１２】第４の実施形態における、ベクトル配列からまとめるべきベクトルのＩｎｄｅｘの配列を生成する処理手順を説明するフローチャートである。
【図１３】記憶するIDとｘ軸フラグとの関係を示す図である。
【図１４】ｘ軸フラグと一時記憶ベクトルIDに応じて、ベクトルの閾値角度を決定するための図である。
【発明を実施するための形態】
【００１０】
まず、図面を参照しながら本発明の実施形態に係る手書き音楽記号認識装置におけるデータ圧縮方法の実施形態を説明する。
【００１１】
以下、図面を参照しながら本発明の手書き音楽記号認識装置を説明する。
図１は、手書き音楽記号認識装置１０の概略構成を示すブロック図であり、手書き音楽記号認識装置１０はタブレット端末（タッチ対応ＰＣを含む）により構成されている。
【００１２】
図１において、１１はバス、１２はＲＯＭ、１３はＲＡＭ、１４はＣＰＵ、１５はフラッシュメモリ、１６はネットワークインターフェイス、１７はタッチディスプレイ、１８はオーディオ出力装置、１９はＭＩＤＩ出力装置である。
【００１３】
手書き音楽記号認識装置１０の全体動作を制御するプログラムはフラッシュメモリ１５に記憶されており、これを読み出してＲＡＭ１３に展開し、ＣＰＵ１４が実行することにより動作する。
タッチ情報取得手段は、タッチディスプレイ１７、ＲＡＭ１３、ＣＰＵ１４、フラッシュメモリ１５などにより構成され、指やタッチペンなどの入力手段が画面に触れてから離れるまで、前記入力手段が移動するごとにその位置情報を取得する。
【００１４】
ストローク情報記憶手段、オブジェクト情報記憶手段は、ＲＡＭ１３で構成される。ストローク情報記憶手段は、入力手段が画面に触れてから完全に離れるまでの一連のベクトルを１つのストローク情報として記憶する。
オブジェクト情報記憶手段は、一連の１乃至は複数のベクトル情報が記憶されたストローク情報を、１乃至は複数記憶する。
ストローク特徴量算出手段、ストローク認識手段、オブジェクト認識手段は、ＲＡＭ１３、ＣＰＵ１４、フラッシュメモリ１５、で構成される。ストローク特徴量算出手段は、入力手段の移動を示すベクトル情報から、そのストロークの特徴量を算出する。
【００１５】
ネットワークインターフェイス１６は、認識した音楽記号情報をファイルとして他のハードウェアに保存、または保存済の音楽記号情報ファイルを読み込むためのものである。
オーディオ出力装置１８は、認識した音楽記号から音楽演奏情報を作成し、音響出力できるようにするために設けられている。
ＭＩＤＩ出力装置１９は、認識した音楽記号からＭＩＤＩ情報を作成し、ＭＩＤＩ出力できるようにするために設けられている。
【００１６】
本実施形態のベクトルＩＤのつけ方を説明する。
本実施形態においては、処理を簡略化するために、ベクトルを９つの種類に分類する。
図２に示すように、ベクトルの始点（x1,ｙ1）、終点（x2,ｙ2）から傾きａを式（１）より求める。
そして、x1,ｙ1,x2,ｙ2の位置関係を考慮してベクトルＩＤを決める。ｙ軸は下側が「＋」である。
【００１７】
【数１】
2015191581.tif 000003
【００１８】
|ａ|＞２
ｙ２＜ｙ１：下→上
ｙ２＞ｙ１：下→上
−２≦ａ＜−０．５
ｘ２＜ｘ１：左下→右上
ｘ２＞ｘ１：右上→左下
|ａ|≦０．５
ｘ２＞ｘ１：左→右
ｘ２＜ｘ１：右→左
０．５＜ａ≦２
ｘ２＞ｘ１：左上→右下
ｘ２＜ｘ１：右下→左上
ｘ１＝ｘ２
ｙ２＜ｙ１：下→上
ｙ２＞ｙ１：下→上
ｘ１＝ｘ２  かつ  ｙ１＝ｙ２
点
となる。
【００１９】
＜各特徴量の説明＞
（始点終点距離）
この距離が規定値よりも小さい場合は、円のように閉じた図形と考えられ、大きい場合は弧線のように閉じていない図形と考えられる。
先頭ベクトルの始点座標を（x1,ｙ1）、最終ベクトルの終点座標を（x2,ｙ2）とすると、始点終点距離Ｄseは、次の式（２）で求める。
【００２０】
【数２】
2015191581.tif 000004
【００２１】
（接続タイプ）
記号が滑らかどうか、角はあるかどうか、などを判断するために用いる。
当該ベクトルのＩＤと次のベクトルのＩＤから決める。本実施形態においては、鈍角か、直角か、鋭角かに分けられる。
【００２２】
（回転方向）
回転方向が変わった点は、記号を特定する手がかりとして重要である。
例えば、「ｆ」の１画目は、「Ｓ」のように滑らかにベクトルが連続しており、始点と終点が離れているが、「Ｓ」には回転方向が変わる点が１か所あるので、区別することができる。これも、当該ベクトルのＩＤと、次のベクトルのＩＤより決定する。
【００２３】
（回転角度）
図３に、当該ベクトルから次のベクトルへの回転角度の変化例を示す。この累計で、記号が円であるか多重円であるかを判別できる。
当該ベクトルの始点を（x11,ｙ11）、終点を（x12,ｙ12）とし、次のベクトルの始点を（x21,ｙ21）、終点を（x22,ｙ22）とすると、２つのベクトルのなす角Ｄｅｇ（°）は、以下の式で求まる。
【００２４】
【数３】
2015191581.tif 000005
【００２５】
（左右移動方向及び上下移動方向）
単純に上から下、左から右に描かれた線分のような記号かどうかを判定する。
ベクトルＩＤより求める。ベクトルＩＤが下→上であれば、左右移動方向はなし、上下移動方向は上である。また、ベクトルＩＤが右下→左上であれば、左右移動方向は左、上下移動方向は上となる。
【００２６】
本発明の手書き音楽記号認識装置におけるデータ圧縮方法は、複数のベクトルのうち、所定個数のベクトルを１つのベクトルにするまとめ処理を行い、ベクトル数を圧縮する。
以下、本発明の手書き音楽記号認識装置におけるデータ圧縮方法について、図面を参照しながら詳細に説明する。
【００２７】
（第１の実施形態）
本実施形態においては、微小ベクトルをまとめてある程度の大きさのベクトルに変換するベクトル変換処理について説明する。
図４（ａ）に示す１０の微小なベクトルａ１〜ａ１０をまとめて、図４（ｂ）に示すように、ある程度の大きさの２つのベクトルｂ１、ｂ２に変換する例を説明する。
ストロークデータには、
・APIから取得した位置情報から生成したベクトルデータを記憶する、ベクトル配列１と、
・変換対象となる微小ベクトルを記憶する、ベクトル配列２と、
・変換されたベクトルを記憶する、ベクトル配列３をもつ。
【００２８】
図５のフローチャートを参照しながら、本実施形態の処理手順を説明する。このフローチャートの処理は、フラッシュメモリ１５に記憶されたプログラムをＲＡＭ１３に展開し、ＣＰＵ１４が実行することにより実現する。
Ｓ５１では、ベクトル配列１からベクトル配列２へ、１つのベクトルをコピーする。
Ｓ５２では、ベクトル配列２の先頭ベクトルの始点を始点、ベクトル配列２の最後のベクトルの終点を終点とするベクトル（テストベクトル）を生成し、その大きさを求める。
Ｓ５３では、テストベクトルの大きさが規定値以上か否かを判断する大きさ規定値判定処理を行う。規定値以上であれば、Ｓ５４へ移行する。規定値未満であれば、Ｓ５１の処理へ戻り、次のベクトルをベクトル配列１からベクトル配列２へコピーする。
【００２９】
さらに、最初のベクトルの始点を始点、今回追加されたベクトルの終点を終点とするテストベクトルを生成し、その大きさを求める。その大きさが規定値を超えるまで、Ｓ５１〜Ｓ５３の処理が繰り返し行われる。
【００３０】
Ｓ５４では、生成されたテストベクトルを、ベクトル配列３に登録し、ベクトル配列２をクリアする。
Ｓ５５では、ベクトル配列１に未処理のベクトルがあるか否かを判断し、未処理のベクトルがなければ処理を終了し、未処理のベクトルがあれば処理Ｓ５１へ戻る。
【００３１】
Ｓ５１〜Ｓ５５の処理を行うことにより、微小なベクトルをまとめて、ある程度の大きさのベクトルに変換することができる。これにより、データ圧縮を行うことができるとともに、記号の特徴を掴みやすくすることができる。
【００３２】
（第２の実施形態）
本実施形態においては、直線ベクトルのゆらぎ補正する処理を説明する。
人間が指で直線を書くとき、線が揺らいでしまう場合がある。この揺らぎを吸収し、１つの直線にする処理をしないと、正しくは直線と判定すべきものを、弧線と誤判定する場合がある。
【００３３】
本実施形態においては、図６(ａ)に示すように、始点と終点を結ぶ直線からの距離が規定値以内であれば、図６(ｂ)に示すように、１つのベクトルにまとめる。以下、図７のフローチャートを参照しながら、本実施形態の処理手順を説明する。このフローチャートの処理は、フラッシュメモリ１５に記憶されたプログラムをＲＡＭ１３に展開し、ＣＰＵ１４が実行することにより実現する。
Ｓ７１では、最初のベクトルの始点と最後のベクトルの終点を結ぶ直線の方程式を求める。
Ｓ７２では、ベクトルの終点から、Ｓ７１で求めた直線に垂線を下ろし、その交点とベクトルの終点との距離を求める。
【００３４】
Ｓ７３では、Ｓ７２で求めた距離が、規定値内か否かを判断するずれ幅規定値判定処理を行う。規定値外であれば処理を終了し、規定値内であればＳ７４の処理へ移る。
Ｓ７４では、未処理のベクトルの有無を判断する。未処理のベクトルがあれば、Ｓ７２へ戻って次のベクトルの処理を行い、未処理のベクトルがなければＳ７５に進む。
【００３５】
Ｓ７５では、ベクトル配列の最初のベクトルの始点を始点、最後のベクトルの終点を終点とするベクトルを生成する。そして、ベクトル配列の全てのベクトルを削除し、生成したベクトルをベクトル配列に記憶する。
【００３６】
このような処理を行うことにより、複数の微小なベクトルが入力された際に、複数の微小なベクトルにおいて、最初のベクトルの始点と最終ベクトルの終点を結ぶ直線からの距離が規定値以内であれば、１つのベクトルにまとめることができる。これにより、データ圧縮を行うことができるとともに、記号の特徴を掴みやすくすることができる。
【００３７】
（第３の実施形態）
本実施形態においては、ベクトルを方向別にグルーピングし、同じグループのベクトルが連続した場合は、それらを１つにまとめる場合を説明する。
図８(ａ)に示すように、ベクトルの傾きをもとに、ベクトルを９つにグルーピングする。
【００３８】
本実施形態においては、グルーピングとは、点、下→上、左下→右上、左→右、左上→右下、上→下、右上→左下、右→左、右下→左上の９つのＩＤのうち、１つのＩＤをベクトルに与えることである。ＩＤの与え方は、図２を参照しながら前述したとおりである。
【００３９】
図８(ｂ)に示すように、ｂ１〜ｂ６の６つのベクトルで構成されたストロークを例にして説明する。
最初の３つのベクトルｂ１、ｂ２、ｂ３は、ＩＤが左→右である。この場合、図８（ｃ）に示すように、最初のベクトルｂ１の始点を始点とし、３つ目のベクトルｂ３の終点を終点とするベクトルｃ１を生成し、この３つのベクトルと置き換える。さらに４つ目から６つ目のベクトルｂ４、ｂ５、ｂ６は、ＩＤが上→下である。この場合も４つ目のベクトルｂ４の始点を始点とし、６つ目のベクトルｂ６の終点を終点とするベクトルｃ２を生成し、この３つのベクトルと置き換える。
【００４０】
図９のフローチャートを参照しながら、ベクトルを置き換える処理手順を説明する。このフローチャートの処理は、フラッシュメモリ１５に記憶されたプログラムをＲＡＭ１３に展開し、ＣＰＵ１４が実行することにより実現する。
Ｓ９１では、ｎ個目のベクトルを基準ベクトルとしてコピーする。ｎの初期値は１である。
Ｓ９２では、基準ベクトルと、ｎ＋ｍ個目のベクトルのベクトルＩＤが同じか否かを比較する。ｍの初期値は１である。ＩＤが同じであれば、Ｓ９３へ移行し、異なればＳ９４へ移行する。
【００４１】
Ｓ９３では、基準ベクトルの終点を、ｎ＋ｍ個目のベクトルの終点に変更して、基準ベクトルのベクトルＩＤを計算し直し、ｍを「＋１」する。その後、Ｓ９５へ移る。
Ｓ９４では、基準ベクトルを、処理済みベクトル配列に記憶する。ｎ＝ｎ＋ｍとする。Ｓ９６へ移行する。
【００４２】
Ｓ９５では、全てのベクトルの処理が終了しているか否かを判断する。終了していれば、処理を完了する。全てのベクトルの処理が終了していなければＳ９３に戻って前述した処理を行う。
Ｓ９６では、全てのベクトルの処理が終了しているか否かを判断する。終了していれば、処理を完了する。全てのベクトルの処理が終了していなければＳ９１に戻って前述した処理を行う。
【００４３】
このような処理を行うことにより、複数の微小なベクトルが入力された際に、ベクトルの傾きをもとにグルーピングし、同じグループのベクトルが連続した場合には、それらのベクトルを１つのベクトルにまとめることができる。これにより、データ圧縮を行うことができるとともに、記号の特徴を掴みやすくすることができる。
【００４４】
（第４の実施形態）
本実施形態においては、傾きの閾値付近のベクトルをまとめる例を説明する。
ベクトルを方向別に分類するときに、ベクトルの傾きによって分類を行う。このとき、傾きの閾値に近い直線を書こうとすると、手のブレなどで、あるベクトルは閾値を超えたＩＤ、別のベクトルは閾値以下のＩＤを与えられ、実際には同じＩＤとしたいベクトルが異なるＩＤになってしまい、前述した第３の実施形態の方法でベクトルをまとめることができない場合がある。
【００４５】
このような問題点を解消するために、本実施形態では傾きの閾値付近のベクトルをまとめるようにした。
ベクトルの傾きが
-2.0未満の場合、そのベクトルのＩＤは、下→上となり、
-2.0〜-0.5の場合、そのベクトルのＩＤは、左下→右上となり、
-0.5以上の場合、そのベクトルのＩＤは、左→右
になるとする（図２を参照）。
【００４６】
この場合の例を、図１０を参照しながら説明する。
（ａ）に示すように、傾き-2.0に近いベクトルａ１及びベクトルａ２は、ベクトルａ３に示すように１つにまとめる。
（ｂ）に示すように、傾きの閾値付近のベクトルをまとめると、ベクトルｂ１、ベクトルｂ２、ベクトルｂ３は１つのベクトルｂ７になり、ベクトルｂ４、ベクトルｂ５、ベクトルｂ６は１つのベクトルｂ８になる。
【００４７】
次に、図１１のフローチャートを参照しながら、本実施形態の処理手順を説明する。このフローチャートの処理は、フラッシュメモリ１５に記憶されたプログラムをＲＡＭ１３に展開し、ＣＰＵ１４が実行することにより実現する。
Ｓ１１１では、ベクトル配列からまとめるべきベクトルのIndexの配列を生成する。この処理の詳細は、図１２のフローチャートを参照しながら後述する。
Ｓ１１２では、Ｓ１１１で作成したリストにおいて、Index配列の有無を判断する。Indexが空の場合は処理を終了する。IndexがあればＳ１１３へ移行する。
【００４８】
Ｓ１１３では、Index配列の最初のIndexのベクトルの始点を始点とし、Index配列の最後のベクトルの終点を終点とするまとめベクトルを生成する。
Ｓ１１４では、ベクトル配列からIndex配列のIndexのベクトルを削除する。
Ｓ１１５では、ベクトル配列の最初のIndexの位置にまとめベクトルを挿入する。その後、Ｓ１１１へ戻り、前述したまとめるベクトル配列を生成する。
【００４９】
前述のように、傾きの閾値付近のベクトルをまとめることにより、傾きの閾値に近い直線が書かれる際に、手のブレなどで、あるベクトルは閾値を超えたＩＤ、別のベクトルは閾値以下のＩＤが与えられたりする問題点を解消することが可能となる。
【００５０】
次に、Ｓ１１１で行われるベクトル配列からまとめるべきベクトルのIndexの配列を生成する処理の内容を図１２のフローチャートを参照しながら説明する。図１２のフローチャートの処理は、フラッシュメモリ１５に記憶されたプログラムをＲＡＭ１３に展開し、ＣＰＵ１４が実行することにより実現する。
【００５１】
Ｓ１２１では、ベクトルnとベクトルｎ＋１のＩＤ（方向）を調べ、互いに隣り合うか否かを判断する。互いに隣り合うベクトルであれば、その組み合わせに応じて、ベクトルｎまたはベクトルｎ＋１のIDを一時記憶ベクトルIDとして記憶するとともに、その隣り合うベクトルIDの閾値が、ｘ軸に近い傾きかどうかを示すｘ軸フラグをセットする。
記憶するIDとｘ軸フラグは、図１３のようになる。
【００５２】
Ｓ１２２では、一時記憶ベクトルIDと、前回の一時記憶ベクトルIDに応じて処理の文息を行う。
・一時記憶ベクトルIDが方向無でなければ、Ｓ１２３へ移る（ケース1）。
・一時記憶ベクトルIDが方向無、で前回の一時記憶ベクトルIDも方向無なら、S121へ戻る（ケース２）。
・一時記憶ベクトルIDが方向無、で前回の一時記憶ベクトルIDが方向無以外なら、処理を終了する（ケース３）。
【００５３】
Ｓ１２３では、前回の一時記憶ベクトルIDと今回の一時記憶ベクトルIDとを比較し、同じであれば、処理を終了し、異なっていれば、Ｓ１２４へ移る。
Ｓ１２４では、ｘ軸フラグと一時記憶ベクトルIDに応じて、ベクトルの閾値角度を決定する。これは、図１４の様に決定する。さらに、ベクトルｎ、ベクトルｎ＋１の角度を求めて、Ｓ１２５へ移る。
【００５４】
Ｓ１２５では、ベクトルｎおよびｎ＋１の角度がともに閾値内であれば、まとめベクトルのIndex配列にベクトルｎ＋１のIndexを登録する。ｎ＝０であれば、ベクトルｎのIndexを登録してから、ｎ＋１のIndexを登録してＳ１２６に進む。
ベクトルｎまたはｎ＋１の角度が閾値外であれば、一時記憶ベクトルIDを方向無に変更してＳ１２６に進む。
【００５５】
Ｓ１２６では、今回と前回の一時記憶ベクトルIDを調べる。前回の一時記憶ベクトルIDが方向無ではなく、今回の一時記憶ベクトルIDと異なる場合（ケース１）は処理を終了し、それ以外（ケース2）であればＳ１２７へ移る。
Ｓ１２７では、前回の一時記憶ベクトルIDに今回の一時記憶ベクトルIDを代入して、Ｓ１２１へ戻る。
【００５６】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、前述した実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種のコンピュータ読み取り可能な記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００５７】
１０  手書き音楽記号認識装置
１１  バス
１２  ＲＯＭ
１３  ＲＡＭ
１４  ＣＰＵ
１５  フラッシュメモリ
１６  ネットワークインターフェイス
１７  タッチディスプレイ
１８  オーディオ出力装置
１９  ＭＩＤＩ出力装置
【図１】
2015191581.tif 000006
【図２】
2015191581.tif 000007
【図３】
2015191581.tif 000008
【図４】
2015191581.tif 000009
【図５】
2015191581.tif 000010
【図６】
2015191581.tif 000011
【図７】
2015191581.tif 000012
【図８】
2015191581.tif 000013
【図９】
2015191581.tif 000014
【図１０】
2015191581.tif 000015
【図１１】
2015191581.tif 000016
【図１２】
2015191581.tif 000017
【図１３】
2015191581.tif 000018
【図１４】
2015191581.tif 000019