(57)【要約】【課題】  五線消去を行っても、タブ譜に表記されている数字を従来よりも正確に認識することができるようにする。【解決手段】  矩形ラベル４０１内の画素値を読み取り、読み取った画素値が、辞書マッチングにより認識されるタブ譜上の数字に応じて予め設定された条件のどれに合うかを判定することにより、当該矩形ラベル４０１内の図形がどの数字に該当するかを判別する。したがって、五線消去を行っても、タブ譜（の数字）を従来よりも正確に認識することが、辞書マッチングの手法を変えることなく実現できる。【選択図】  図１
2010102667.tif 000002
【特許請求の範囲】
【請求項１】
紙面の楽譜の情報を含む画像を、画像読み取り手段から取得する取得手段と、
前記取得手段により取得された画像から、タブ譜における、弦に対応する横線を消去する消去手段と、
前記消去手段により横線が消去された後に、前記取得手段により取得された画像のうち、タブ譜の画像に含まれる図形に対してラベルを設定する設定手段と、
前記設定手段により設定されたラベルに含まれる図形と、予め設定されている辞書とをマッチングして当該図形が、どの数字に属するのかを認識する認識手段と、
前記ラベル内の画素の少なくとも一部の画素値を読み取る読み取り手段と、
前記読み取り手段により読み取られた画素値が、前記認識手段により認識される数字に応じて予め設定された条件の何れに該当するのかを判別することによって、前記ラベルに含まれる図形がどの数字に属するのかを判別する判別手段とを有することを特徴とする楽譜認識装置。
【請求項２】
前記読み取り手段により読み取られた画素値に基づいて、前記ラベルに含まれる図形にすき間があるか否かを判定する判定手段と、
前記判定手段により前記ラベルに含まれる図形にすき間があると判定されると、前記読み取り手段により読み取られた画素値に基づいて、前記ラベルに含まれる図形のすき間の位置を導出するすき間位置導出手段とを有し、
前記判別手段は、前記すき間位置導出手段により導出されたすき間の位置に基づいて、前記ラベルに含まれる図形がどの数字に属するのかを判別することを特徴とする請求項１に記載の楽譜認識装置。
【請求項３】
前記判定手段は、前記認識手段により認識された数字が、０、６、８、又は９である場合に、前記読み取り手段により読み取られた画素値に基づいて、前記ラベルに含まれる図形にすき間があるか否かを判定し、
前記判別手段は、前記すき間位置導出手段により導出されたすき間の位置に基づいて、前記ラベルに含まれる図形が、６及び９の何れであるかを判別することを特徴とする請求項２に記載の楽譜認識装置。
【請求項４】
前記判定手段により前記ラベルに含まれる図形にすき間があると判定されると、前記読み取り手段により読み取られた画素値に基づいて、前記ラベルに含まれる図形のすき間の長さを導出するすき間長さ導出手段と、
前記すき間長さ導出手段により導出されたすき間の長さが閾値以上であるか否かを判定するすき間長さ判定手段とを有し、
前記判別手段は、前記すき間長さ判定手段により、すき間の長さが閾値以上であると判定されると、前記すき間位置導出手段により導出されたすき間の位置に基づいて、前記ラベルに含まれる図形がどの数字に属するのかを判別することを特徴とする請求項２又は３に記載の楽譜認識装置。
【請求項５】
前記判定手段は、前記ラベルに含まれる図形の内縁に沿って前記読み取り手段により読み取られた画素値に基づいて、前記ラベルに含まれる図形にすき間があるか否かを判定することを特徴とする請求項２〜４の何れか１項に記載の楽譜認識装置。
【請求項６】
前記読み取り手段により読み取られた画素値に基づいて、前記ラベルに含まれる図形の横方向における内縁間の距離と当該内縁間の距離が存在する位置とを導出する内縁部導出手段を有し、
前記判別手段は、前記内縁部導出手段により導出された内縁間の距離と当該内縁間の距離が存在する位置とに基づいて、前記ラベルに含まれる図形がどの数字に属するのかを判別することを特徴とする請求項１〜５の何れか１項に記載の楽譜認識装置。
【請求項７】
前記内縁部導出手段は、前記認識手段により認識された数字が、０、６、８、又は９である場合に、前記読み取り手段により読み取られた画素値に基づいて、前記ラベルに含まれる図形の横方向における内縁間の距離と当該内縁間の距離が存在する位置とを導出し、
前記判別手段は、前記内縁部導出手段により導出された内縁間の距離と当該内縁間の距離が存在する位置とに基づいて、前記ラベルに含まれる図形が、０及び８の何れであるかを判別することを特徴とする請求項６に記載の楽譜認識装置。
【請求項８】
前記判別手段は、前記判定手段により前記ラベルに含まれる図形にすき間がないと判定されると、前記内縁部導出手段により導出された内縁間の距離が最大となる位置に基づいて、前記ラベルに含まれる図形がどの数字に属するのかを判別することを特徴とする請求項６又は７に記載の楽譜認識装置。
【請求項９】
前記読み取り手段により読み取られた画素値に基づいて、前記ラベルに含まれる図形の横方向における外縁間の距離と、当該外縁間の距離が存在する位置とを導出する外縁部導出手段を有し、
前記判別手段は、前記外縁部導出手段により導出された、前記ラベルに含まれる図形の横方向における外縁間の距離と当該外縁間の距離が存在する位置とに基づいて、前記ラベルに含まれる図形がどの数字に属するのかを判別することを特徴とする請求項１〜８の何れか１項に記載の楽譜認識装置。
【請求項１０】
前記外縁部導出手段は、前記認識手段により認識された数字が、１又は４である場合に、前記読み取り手段により読み取られた画素値に基づいて、前記ラベルに含まれる図形の横方向における外縁間の距離と、当該外縁間の距離が存在する位置とを導出し、
前記判別手段は、前記外縁部導出手段により導出された、前記ラベルに含まれる図形の横方向における外縁間の距離と当該外縁間の距離が存在する位置とに基づいて、前記ラベルに含まれる図形が、１及び４の何れであるかを判別することを特徴とする請求項９に記載の楽譜認識装置。
【請求項１１】
紙面の楽譜の情報を含む画像を、画像読み取り手段から取得する取得ステップと、
前記取得ステップにより取得された画像から、タブ譜における、弦に対応する横線を消去する消去ステップと、
前記消去ステップにより横線が消去された後に、前記取得ステップにより取得された画像のうち、タブ譜の画像に含まれる図形に対してラベルを設定する設定ステップと、
前記設定ステップにより設定されたラベルに含まれる図形と、予め設定されている辞書とをマッチングして当該図形が、どの数字に属するのかを認識する認識ステップと、
前記ラベル内の画素の少なくとも一部の画素値を読み取る読み取りステップと、
前記読み取りステップにより読み取られた画素値が、前記認識ステップにより認識される数字に応じて予め設定された条件の何れに該当するのかを判別することによって、前記ラベルに含まれる図形がどの数字に属するのかを判別する判別ステップとをコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、楽譜認識装置、及びコンピュータプログラムに関し、特に、紙面の楽譜を認識するために用いて好適なものである。
【背景技術】
【０００２】
従来から、スキャナ等を用いて、紙面上の楽譜を読み取り、読み取った楽譜のデータについて、五線、音符、及びその他の各種記号を認識して、ＭＩＤＩファイルデータ等の演奏データや、表示用／印刷用のデータを生成することが行われている。
具体的に各種の音楽記号を認識する場合には、五線及び段落を認識した上で、五線消去を行った後、任意の矩形形状をした読み取り用のラベルを記号毎に設定して、当該ラベルのデータと、予め辞書に登録されているデータとをパターンマッチングするようにしている（特許文献１を参照）。ここで、ラベルとは、モノクロ画像（白黒の２値画像）の場合、例えば、４連結又は８連結している黒画素の一塊をいう。
【０００３】
【特許文献１】特開平１１−１６１７３８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ところで、楽譜には、所謂五線譜の他にタブ譜がある。タブ譜では一般に、弦に対応する横線（以下の説明ではこの線も必要に応じて五線と称する）上に数字が表記される。そこで、このようなタブ譜についても正確に認識できるようにする必要がある。
しかしながら、前述したように楽譜を認識する際には五線消去を行う。したがって、タブ譜の五線上に表記されている数字が、五線消去によって本来の形と異なる形になることがある。そうすると、例えば、認識対象の複数のラベル内の数字が異なるものであっても、それらの差異が小さくなり、それらを同じ数字であると誤認識してしまう虞がある。
以上のように従来の技術では、五線消去を行うと、タブ譜に表記されている数字を正確に認識することができなくなる虞があった。
【０００５】
本発明は、このような問題点に鑑みてなされたものであり、五線消去を行っても、タブ譜に表記されている数字を従来よりも正確に認識することができるようにすることを目的とする。
【課題を解決するための手段】
【０００６】
本発明の楽譜認識装置は、紙面の楽譜の情報を含む画像を、画像読み取り手段から取得する取得手段と、前記取得手段により取得された画像から、タブ譜における、弦に対応する横線を消去する消去手段と、前記消去手段により横線が消去された後に、前記取得手段により取得された画像のうち、タブ譜の画像に含まれる図形に対してラベルを設定する設定手段と、前記設定手段により設定されたラベルに含まれる図形と、予め設定されている辞書とをマッチングして当該図形が、どの数字に属するのかを認識する認識手段と、前記ラベル内の画素の少なくとも一部の画素値を読み取る読み取り手段と、前記読み取り手段により読み取られた画素値が、前記認識手段により認識される数字に応じて予め設定された条件の何れに該当するのかを判別することによって、前記ラベルに含まれる図形がどの数字に属するのかを判別する判別手段とを有することを特徴とする。
【０００７】
本発明のコンピュータプログラムは、紙面の楽譜の情報を含む画像を、画像読み取り手段から取得する取得ステップと、前記取得ステップにより取得された画像から、タブ譜における、弦に対応する横線を消去する消去ステップと、前記消去ステップにより横線が消去された後に、前記取得ステップにより取得された画像のうち、タブ譜の画像に含まれる図形に対してラベルを設定する設定ステップと、前記設定ステップにより設定されたラベルに含まれる図形と、予め設定されている辞書とをマッチングして当該図形が、どの数字に属するのかを認識する認識ステップと、前記ラベル内の画素の少なくとも一部の画素値を読み取る読み取りステップと、前記読み取りステップにより読み取られた画素値が、前記認識ステップにより認識される数字に応じて予め設定された条件の何れに該当するのかを判別することによって、前記ラベルに含まれる図形がどの数字に属するのかを判別する判別ステップとをコンピュータに実行させることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、ラベル内の画素の画素値が、マッチングにより認識される数字に応じて予め設定された条件の何れに該当するのかを判別することによって、ラベルに含まれる図形がどの数字に属するのかを判別するようにした。したがって、タブ譜における数字の誤認識を従来よりも低減することができ、弦に対応する横線（所謂五線）の消去を行っても、タブ譜を従来よりも正確に認識することができる。
【発明を実施するための最良の形態】
【０００９】
（第１の実施形態）
以下、図面を参照しながら、本発明の第１の実施形態について説明する。
図１は、楽譜認識装置の構成の一例を示すブロック図である。
図１において、楽譜認識装置１００は、ＣＰＵ１、ＲＯＭ２、ＲＡＭ３、ＨＤＤ４、ＦＤＤ５、ＭＩＤＩインタフェース回路６、スキャナインタフェース回路７、プリンタインタフェース回路８、キーボードインタフェース回路９、ＣＲＴインタフェース回路１０、及びバス１５を有している。そして、スキャナ１１、プリンタ１２、キーボード１３、及びＣＲＴ１４が楽譜認識装置１００に接続されている。
【００１０】
図１に示すように、本実施形態の楽譜認識装置１００は、パソコン等の一般的な計算機システムに、ＭＩＤＩインタフェース回路６を付加したものである。
ＣＰＵ１は、ＲＯＭ２に格納されたプログラムをＲＡＭ３に展開して実行すること等により、楽譜認識装置１００の全体の制御を行う中央処理装置である。また、楽譜認識装置１００は、予め設定された所定の周期でＣＰＵ１に割り込みをかけるタイマ回路を内蔵している。ＲＡＭ３は、プログラムエリアの他、画像データバッファ、ワークエリア等として使用される。ＨＤＤ（ハードディスクドライブ）４及びＦＤＤ（フレキシブルディスクドライブ）５は、プログラム、画像データ、及び演奏データ等を格納する。
【００１１】
ＣＲＴ１４は、ＣＰＵ１の制御に基づき、ＣＲＴインタフェース回路１０から出力される映像情報を表示する。キーボード１３から入力された情報は、キーボードインタフェース回路９を経てＣＰＵ１に取り込まれる。プリンタ１２は、ＣＰＵ１の制御に基づき、プリンタインタフェース回路８から出力される印字情報を印字する。
【００１２】
スキャナ１１は、紙面に印刷された楽譜を光学的に走査して、２値、グレイスケール、あるいはカラーの画像データに変換するものである。スキャナ１１としては、フラットベッド型、ハンディ型、フィーダー型等任意のタイプのものを使用できる。スキャナ１１によって読み取られた画像情報は、スキャナインタフェース回路７を介して、ＲＡＭ３又はＨＤＤ４に取り込まれる。ＭＩＤＩインタフェース回路６は、音源モジュール等の外部のＭＩＤＩ機器との間でＭＩＤＩデータの送受信を行う回路である。バス１５は、楽譜認識装置１００内の各回路を接続している。尚、この他に、マウス等のポインティングデバイスや、ＲＳ２３２Ｃ等のシリアルインターフェース回路等を楽譜認識装置１００が備えていてもよい。
【００１３】
図２は、ＣＰＵ１の処理の一例を説明するメインフローチャートである。尚、ここでは、本発明の実施形態を説明する上で必要な事項を中心に説明し、その他の事項の詳細な説明を省略する。
まず、ステップＳ１において、ＣＰＵ１は、画像取り込み処理を行う。この画像取り込み処理では、スキャナ１２によって読み取られた楽譜の画像データをＲＡＭ３に取り込む等の処理が行われる。
次に、ステップＳ２において、ＣＰＵ１は、五線認識処理を行う。この五線認識処理では、五線走査開始位置検出処理及び五線シフト量検出処理等が行われる。五線走査開始位置検出処理の概略を述べると、横（ｘ）軸方向のある位置で、黒画素の幅と白画素の幅とを順に求め、求めた幅に基づいて、五線状に並んでいる位置を、ある程度の誤差を考慮して検出する。そして、加線（五線からはみ出した音符を記載するために付加した横線）の影響を除くために、五線状の並びの両側に、五線の間隔より大きな白画素幅があるという条件を加える。この条件に合う白黒画素の並びがある横（ｘ）方向の各黒ランの中点を五線走査開始位置とする。ここで、ランとは、モノクロ画像（白黒の２値画像）の場合、例えば、縦又は横に黒画素又は白画素が連結している長さをいう。
【００１４】
次に、五線シフト量検出処理の概略を述べる。まず、五線走査開始位置（５点の黒画素位置）から、１ドットずつ位置を左右に変えていき、５点の内、黒画素がある個数（例えば３あるいは４個）以下になった場合に、５点を上下にずらして黒画素数をチェックし、縦（ｙ）方向のうち、黒画素の割合が高くなる方向へｙ座標をシフトする。この五線走査開始位置からのシフト量を五線のシフト量とする。そして、五線走査開始位置の左右方向（横方向）に、黒画素の個数が０になる位置まで走査することにより五線の検出を行う。
【００１５】
次に、ステップＳ３において、ＣＰＵ１は、段落認識処理を行う。段落認識処理では、段落認識処理及び大かっこ認識処理等が行われる。段落認識処理においては、画像全体で五線を検出し、五線同士で左端がほぼ同じ場所にある五線の組を探し、五線の端同士が、黒画素で結ばれているかどうかを検査し、段落を認識する。五線同士が大かっこで結ばれていた場合には、五線同士にまたがる音符等が存在する場合があるので、大かっこで結ばれた五線は１つの単位で処理を行った方が良い。大かっこについては、段落線の左の所定の範囲で認識を行う。ここで、段落線とは、同時に進行している複数のパートの五線同士の左端を繋いでいる線をいい、段落とは、段落線で繋がれた複数の五線の一塊をいう。尚、パートが１つの場合には、複数のパートの段落に相当する一塊を段落という。また、大かっことは、特にピアノの楽譜に用いられることが多い音楽記号であり、２つ又は３つの五線を纏めるための「[」で表記される括弧である。
【００１６】
次に、ステップＳ４において、ＣＰＵ１は、パート認識処理を行う。パート認識処理では、五線認識処理及び段落認識処理で認識された結果に基づいて各パートを認識し、各パートが、タブ譜であるか否かを判定する。この判定の結果、タブ譜である場合には、処理矩形決定処理、五線消去処理、音楽記号認識処理、及び認識結果検証処理等を行う。一方、タブ譜以外である場合には、公知の方法で各パート内の音楽記号を認識する。
処理矩形決定処理では、求められた五線を含む、ある程度広い矩形を採り、これを認識処理矩形とする。矩形の大きさは、その五線に関係する音楽記号が存在する最大領域以上で、且つ五線傾き補正により、必要な音楽記号が消えない様な大きさにする。これ以降の認識はこの矩形内で行う。
【００１７】
五線消去処理では、求められた五線のうち、線幅が閾値以下の部分（音楽記号と重なっていない部分）を消去する。
音楽記号認識処理では、五線が消去された楽譜の画像データに対し、連続する黒画素の外縁に接するように矩形ラベルを設定し、当該矩形ラベル内の黒画素のデータと、予め辞書に登録されているデータとのパターンマッチングを行う等して各種の音楽記号を認識する。この音楽記号認識処理により、タブ譜に表記されている数字が認識される。パターンマッチングに際しては、テンプレートマッチングの他に、矩形ラベルのサイズと加重方向指数とを用いたり、ペリフェラル特徴を用いたりすることができる。
認識結果検証処理では、音楽記号認識処理で認識された数字が正しく認識されているか否かを検証する。この認識結果検証処理の詳細については後述する。
【００１８】
次に、ステップＳ５において、ＣＰＵ１は、結合処理を行う。結合処理では、五線認識処理で認識された五線、段落認識処理で認識された段落、パート認識処理で認識されたパートの内容等を結合して、楽譜のデータを生成する等の処理を行う。
次に、ステップＳ６において、ＣＰＵ１は、その他の処理を行う。その他の処理では、ＭＩＤＩファイルデータ等の演奏データを生成する等の処理を行う。
尚、前述したように、実際には、以上の処理の他に様々な処理が実行されるが、ステップＳ４における認識結果検証処理以外の処理は、公知の技術によって実現できるので、ここでは、その詳細な説明を省略する。
【００１９】
次に、図３のフローチャートを参照しながら、認識結果検証処理の一例を説明する。
まず、ステップＳ１１において、ＣＰＵ１は、音楽記号認識処理により、タブ譜の五線上に表記されていると認識された数字が何であるかを判別する。尚、本実施形態では、「２」、「３」、「５」、「７」については、音楽記号認識処理（パターンマッチング）による認識の信頼性が高いものとし、認識された数字が「２」、「３」、「５」又は「７」である場合には、図３のフローチャートによる処理を行わないようにしている。
この判別の結果、認識された数字が「１」又は「４」である場合には、後述するステップＳ２１に進む。
一方、認識された数字が「０」、「６」、「８」又は「９」である場合には、ステップＳ１２に進む。ステップＳ１２に進むと、ＣＰＵ１は、画像走査処理を行う。画像走査処理では、音楽記号認識処理で設定された矩形ラベル内の画素の画素値を順次読み取り、読み取った画素値に基づいて、矩形ラベル内の図形にすき間があるか否かを検出すると共に、当該すき間がなければ当該数字の横方向における内縁間距離を検出する。この画像走査処理の詳細については後述する。
【００２０】
図４は、矩形ラベル４０１内の図形の第１の例を示す図である。具体的に図４（ａ）は「８」を示し、図４（ｂ）は、「０」を示し、図４（ｃ）は「６」を示す図である。
前述したように、本実施形態では、五線消去処理が行われた後に音楽記号認識処理が行われているので、図４（ａ）、図４（ｃ）に示すように、「８」、「６」のうち、五線と重なっていた部分は、白画素となる場合がある。したがって、例えば、図４（ａ）〜図４（ｃ）に示すように、「０」、「６」、「８」の差異が小さくなり、前述したパターンマッチングでは、これらを正確に区別して認識することが困難になる場合がある。そこで、本実施形態では、矩形ラベル４０１内の図形のすき間や、当該図形の内縁間の距離を用いて、数字の認識率を従来よりも向上させるようにしている。
【００２１】
図３の説明に戻り、ステップＳ１３において、ＣＰＵ１は、ステップＳ１２の画像走査処理の結果に基づいて、矩形ラベル４０１内の図形にすき間があるか否かを判定する。図４に示す例では、図４（ａ）、図４（ｂ）ではすき間はなく、図４（ｃ）ではすき間があると判定される。
この判定の結果、すき間がない場合には、後述するステップＳ１７に進む。一方、すき間がある場合には、ステップＳ１４に進む。ステップＳ１４に進むと、ＣＰＵ１は、すき間の長さが閾値以上であるか否かを判定する。この判定の結果、すき間の長さが閾値以上でない場合には、当該すき間は、かすれ等の要因で生じたものであり、数字が本来有しているすき間ではないと判定し、後述するステップＳ１７に進む。
【００２２】
一方、すき間の長さが閾値以上である場合には、ステップＳ１５に進む。ステップＳ１５に進むと、ＣＰＵ１は、画像走査処理によりＲＡＭ３に記憶された"矩形ラベル４０１内におけるすき間の位置"を読み出す。また、ＨＤＤ４には、すき間の位置と数字とが相互に対応付けられたテーブルが記憶されており、ＣＰＵ１は、読み出したすき間の位置とテーブルとを照合し、数字を判別する。例えば、すき間の位置が、右上側の所定の領域のみにある場合には「６」と判別される。また、すき間の位置が、左下側の所定の領域のみにある場合には「９」と判別される。
【００２３】
そして、ステップＳ１６に進み、ＣＰＵ１は、その他の処理を行って、図３のフローチャートによる処理を終了する。
前述したように、ステップＳ１３において、すき間がないと判定された場合と、ステップＳ１４において、すき間の長さが閾値以上でないと判定された場合には、ステップＳ１７に進む。ステップＳ１７に進むと、ＣＰＵ１は、ステップＳ１２の画像走査処理の結果に基づいて、矩形ラベル４０１内の図形の"横方向における内縁間距離"の最大値が、当該数字の縦方向における中央からある閾値以内の距離にあるか否かを判定する。この判定の結果、矩形ラベル４０１内の図形の"横方向における内縁間距離"の最大値が、当該数字の縦方向における中央からある閾値以内の距離にある場合には、ステップＳ１８に進む。ステップＳ１８に進むと、ＣＰＵ１は、矩形ラベル４０１内の図形が「０」であると判別する。そして、ステップＳ１６に進んで、その他の処理が行われた後、図３のフローチャートによる処理を終了する。
【００２４】
一方、矩形ラベル４０１内の図形の"横方向における内縁間距離"の最大値が、当該数字の縦方向における中央からある閾値以内の距離にない場合には、ステップＳ１９に進む。ステップＳ１９に進むと、ＣＰＵ１は、矩形ラベル４０１内の図形の"横方向における内縁間距離"の最大値として同値となるものの数が閾値以上であるか否かを判定する。この判定の結果、矩形ラベル４０１内の図形の"横方向における内縁間距離"の最大値として同値となるものの数が閾値以上である場合には、前述したステップＳ１８に進み、ＣＰＵ１は、矩形ラベル４０１内の図形が「０」であると判別する。図４（ｂ）に示した例では、ステップＳ１７、Ｓ１９、Ｓ１８の処理を経て、矩形ラベル４０１内の図形が「０」であると判別される。そして、ステップＳ１６に進んで、その他の処理が行われた後、図３のフローチャートによる処理を終了する。
【００２５】
一方、矩形ラベル４０１内の図形の"横方向における内縁間距離"の最大値として同値となるものの数が閾値以上でない場合には、ステップＳ２０に進む。ステップＳ２０に進むと、ＣＰＵ１は、矩形ラベル４０１内の図形が「８」であると判別する。図４（ａ）に示した例では、ステップＳ１７、Ｓ１９、Ｓ２０の処理を経て、矩形ラベル４０１内の図形が「８」であると判別される。そして、ステップＳ１６に進んで、その他の処理が行われた後、図３のフローチャートによる処理を終了する。
尚、画像にノイズが含まれることを考慮して、ステップＳ１９の処理を行わないようにしてもよい。すなわち、ステップＳ１７において、矩形ラベル４０１内の図形の"横方向における内縁間距離"の最大値が、当該数字の縦方向における中央からある閾値以内の距離にないと判定された場合には、ステップＳ１９の処理を行わずにステップＳ２０に進み、矩形ラベル４０１内の図形が「８」であると判別するようにしてもよい。
【００２６】
前述したように、ステップＳ１１において、音楽記号認識処理により認識された数字が「１」又は「４」であると判定された場合には、ステップＳ２１に進む。ステップＳ２１に進むと、ＣＰＵ１は、横幅判定処理を行う。横幅判定処理では、音楽記号認識処理で設定された矩形ラベル内の画素の画素値を順次読み取り、読み取った画素値に基づいて、矩形ラベル内の数字の横幅（横方向における外縁間距離）を検出する。この横幅判定処理の詳細については後述する。
【００２７】
図５は、矩形ラベル４０１内の図形の第２の例を示す図である。具体的に図５（ａ）は「１」を示し、図５（ｂ）は、「４」を示す図である。
前述したように、本実施形態では、五線消去処理が行われた後に音楽記号認識処理が行われるが、「４」の白抜きの部分に五線が位置する場合、図５（ｂ）に示すように、その部分の五線が消去されない場合がある。このため、図５（ａ）、図５（ｂ）に示すように、「１」、「４」の差異が小さくなり、前述したパターンマッチングでは、これらを正確に区別して認識することが困難になる場合がある。そこで、本実施形態では、矩形ラベル４０１内の図形の横幅を用いて、数字の認識率を従来よりも向上させるようにしている。
【００２８】
図３の説明に戻り、ステップＳ２２において、ＣＰＵ１は、ステップＳ２１の横幅判定処理の結果に基づいて、矩形ラベル４０１内の図形の横幅の最大値が閾値以上であるか否かを判定する。この判定の結果、矩形ラベル４０１内の図形の横幅の最大値が閾値以上である場合には、ステップＳ２３に進む。ステップＳ２３に進むと、ＣＰＵ１は、矩形ラベル４０１内の図形が「４」であると判別する。図５（ｂ）に示した例では、ステップＳ２２、Ｓ２３の処理を経て、矩形ラベル４０１内の図形が「４」であると判別される。そして、ステップＳ１６に進んで、その他の処理が行われた後、図３のフローチャートによる処理を終了する。
【００２９】
一方、矩形ラベル４０１内の図形の横幅の最大値が閾値以上でない場合には、ステップＳ２４に進む。ステップＳ２４に進むと、ＣＰＵ１は、突起判定処理を行う。ステップＳ２４に進んだ場合には、矩形ラベル４０１内の図形が「１」である可能性が高い。しかしながら、前述した音楽記号認識処理での認識に誤りがあり、「１」であると認識されていたものが、縦線である可能性もある。そこで、本実施形態では、突起判定処理により、矩形ラベル４０１内の図形の突起に関する情報を求めるようにする。この突起判定処理の詳細については後述する。
【００３０】
次に、ステップＳ２５において、ＣＰＵ１は、ステップＳ２４の突起判定処理の結果に基づいて、矩形ラベル４０１内の図形の突起が「１」のものとして妥当な位置にあるか否かを判定する。この判定の結果、矩形ラベル４０１内の図形の突起が「１」のものとして妥当な位置にある場合には、ステップＳ２６に進む。ステップＳ２６に進むと、ＣＰＵ１は、矩形ラベル４０１内の図形が「１」であると判別する。図５（ａ）に示した例では、ステップＳ２２、Ｓ２４、Ｓ２５、Ｓ２６の処理を経て、矩形ラベル４０１内の図形が「１」であると判別される。そして、ステップＳ１６に進んで、その他の処理が行われた後、図３のフローチャートによる処理を終了する。
【００３１】
一方、矩形ラベル４０１内の図形の突起が「１」のものとして妥当な位置にない場合には、ステップＳ２７に進む。ステップＳ２７に進んだ場合には、矩形ラベル４０１内の図形が「１」ではなく、矩形ラベル４０１の上又は下にある符尾候補線と連結されるものである可能性がある。
図６は、符尾の近辺に数字の１が表示されているタブ譜（図６（ａ））と、かすれ等により２つに分離された符尾が表示されているタブ譜（図６（ｂ））とを示す図である。
図６（ａ）に示すように、符尾の横にある縦線は、「１」と認識されるべきものであるが、図６（ｂ）に示すように、符尾の上又は下にある縦線は、符尾に連結されるものと認識されるべきものである。
【００３２】
図３の説明に戻り、矩形ラベル４０１内の図形の突起が「１」のものとして妥当な位置になく、ステップＳ２７に進むと、ＣＰＵ１は、矩形ラベル４０１内の図形と、矩形ラベル４０１から閾値以内の距離にある縦線との位置関係を検出する。そして、ステップＳ２８において、ＣＰＵ１は、矩形ラベル４０１内の図形と、矩形ラベル４０１から閾値以内の距離にある縦線との横方向の位置のずれが閾値以上であるか否かを判定する。
【００３３】
この判定の結果、矩形ラベル４０１内の図形と、矩形ラベル４０１から閾値以内の距離にある縦線との横方向の位置のずれが閾値以上である場合には、前述したようにステップＳ２９に進み、ＣＰＵ１は、矩形ラベル４０１内の図形が「１」であると判別する。図６（ａ）に示す例では、ステップＳ２８、Ｓ２９の処理を経て、矩形ラベル４０１内の図形が「１」であると判別される。そして、ステップＳ１６に進んで、その他の処理が行われた後、図３のフローチャートによる処理を終了する。
【００３４】
一方、矩形ラベル４０１内の図形と、矩形ラベル４０１から閾値以内の距離にある縦線との横方向の位置のずれが閾値以上でない場合には、矩形ラベル４０１内の図形が「１」ではなく、矩形ラベル４０１の上又は下にある符尾候補線と連結されるものであると判定される。そこで、ステップＳ３０に進み、ＣＰＵ１は、矩形ラベル４０１内の図形（縦線）と矩形ラベル４０１の上又は下にある符尾候補線と連結し、連結した縦線を新たな符尾候補線として設定し直す。図６（ｂ）に示す例では、ステップＳ２８、Ｓ３０の処理を経て、矩形ラベル４０１内の図形が符尾に連結されるものであると判別される。そして、ステップＳ１６に進んで、その他の処理が行われた後、図３のフローチャートによる処理を終了する。
【００３５】
次に、図７のフローチャートを参照しながら、図３のステップＳ１２における画像走査処理の一例について説明する。
まず、ステップＳ１０１において、ＣＰＵ１は、画素の走査を行う始点を初期位置に設定する。本実施形態では、矩形ラベル４０１の横方向の中心であって、矩形ラベル４０１内に五線が存在していた位置に始点を設定する。ただし、始点の初期位置はこのようなものに限定されない。
【００３６】
次に、ステップＳ１０２において、ＣＰＵ１は、設定した始点が黒画素（始点の画素値が１）であるか否かを判定する。この判定の結果、ステップＳ１０１で設定した始点が黒画素である場合には、ステップＳ１０３に進む。ステップＳ１０３に進むと、ステップＳ１０１で設定した始点の上下方向の位置をずらし、始点の位置を再設定する。具体的に説明すると、例えば、ステップＳ１０１で設定した始点に最も近い位置であって、未だ設定されていない位置に、ステップＳ１０１で設定した始点の上下方向の位置をずらす。そして、ステップＳ１０２に戻り、設定した始点が白画素（始点の画素値が０）になるまで、ステップＳ１０２、Ｓ１０３を繰り返し行う。
【００３７】
以上のようにして始点が白画素になると、ステップＳ１０４に進む。ステップＳ１０４に進むと、ＣＰＵ１は、設定した始点を基点として横方向（右方向及び左方向）に画素を走査して、各画素の画素値を読み取る。
次に、ステップＳ１０５において、ＣＰＵ１は、矩形ラベル４０１の全てのラインを走査したか否かを判定する。この判定の結果、矩形ラベル４０１のラインを全て走査していない場合には、ステップＳ１０６に進む。ステップＳ１０６に進むと、ＣＰＵ１は、始点の上下方向の位置をずらし、始点の位置を再設定する。
【００３８】
具体的に説明すると、例えば、現在設定されている始点に最も近い位置であって、未だ設定されていない位置に、現在設定されている始点の上下方向の位置をずらす。ただし、始点をずらす先が黒画素である場合には、その黒画素が存在する位置以外に始点をずらすようにする。
そして、ステップＳ１０４に戻り、再設定した始点を基点として横方向（右方向及び左方向）に画素を走査して、各画素の画素値を読み取る。そして、矩形ラベル４０１のラインを全て走査するまで、ステップＳ１０４〜Ｓ１０６を繰り返し行う。
【００３９】
そして、ステップＳ１０５において、矩形ラベル４０１のラインを全て走査したと判定されると、ステップＳ１０７に進む。ステップＳ１０７に進むと、ＣＰＵ１は、矩形ラベル４０１内の各白画素の配置（すなわち画素値）に基づいて、矩形ラベル４０１内の図形にすき間があるか否かを判定する。例えば、始点を基点として、右方向又は左方向に黒画素（画素値が１の画素）が１つもない場合に、矩形ラベル４０１内の図形のすき間があると判定される。この判定の結果、矩形ラベル４０１内の図形にすき間がない場合には、ステップＳ１０８に進む。ステップＳ１０８に進むと、ＣＰＵ１は、矩形ラベル４０１内の各白画素の配置（すなわち画素値）に基づいて、矩形ラベル４０１内の図形の水平方向における内縁間距離と、その位置とを求め、それらを相互に関連付けてＲＡＭ３に記憶する。図４（ａ）、図４（ｂ）に示した例では、例えば、矢印で示している部分が、矩形ラベル４０１内の図形の水平方向における内縁間距離になる。そして、図７のフローチャートによる処理を終了する。
【００４０】
一方、矩形ラベル４０１内の図形にすき間がある場合には、ステップＳ１０９に進む。ステップＳ１０９に進むと、ＣＰＵ１は、矩形ラベル４０１内の図形のすき間の位置と長さを求め、それらを相互に関連付けてＲＡＭ３に記憶する。例えば、始点を基点として、右方向又は左方向に黒画素（画素値が１の画素）が１つもない状態が上下方向に連続している場合、当該上下方向に連続している画素の数がすき間の長さになる。また、当該長さの白画素が上下方向に存在している部分がすき間の位置になる。図４（ｃ）に示した例では、矢印で示している部分が隙間となる。そして、前述したステップＳ１０８に進む。
【００４１】
次に、図８のフローチャートを参照しながら、図３のステップＳ２１における横幅判定処理の一例について説明する。
まず、ステップＳ２０１において、ＣＰＵ１は、画素の走査を行う始点を初期位置に設定する。本実施形態では、矩形ラベル４０１の中心の位置に始点を設定する。ただし、始点の初期位置はこのようなものに限定されない。
次に、ステップＳ２０２において、ＣＰＵ１は、設定した始点を基点として横方向（右方向及び左方向）に画素を走査して、各画素の画素値を読み取る。
【００４２】
次に、ステップＳ２０３において、ＣＰＵ１は、ステップＳ２０２で横方向に走査した画素に黒画素があったか否かを判定する。この判定の結果、黒画素があった場合には、ステップＳ２０４に進む。ステップＳ２０４に進むと、ＣＰＵ１は、矩形ラベル４０１内の図形の"ステップＳ２０２で走査した箇所における横幅（外縁間距離）"とその外縁間距離が存在する位置とを求め、それらを相互に関連付けてＲＡＭ３に記憶する。尚、これらは、ステップＳ２０２で走査した横方向で連続する黒画素の数とそれら黒画素の位置とに基づいて求めることができる。この他、走査した横方向で連続する白画素の数とそれら白画素の位置とに基づいて求めることもできる。図５に示した例では、例えば、白抜きの矢印の部分が、矩形ラベル４０１内の図形の横幅になる。
【００４３】
次に、ステップＳ２０５において、ＣＰＵ１は、矩形ラベル４０１のラインを全て走査したか否かを判定する。この判定の結果、矩形ラベル４０１のラインを全て走査していない場合には、ステップＳ２０６に進む。ステップＳ２０６に進むと、ＣＰＵ１は、始点の上下方向の位置をずらし、始点の位置を再設定する。具体的に説明すると、例えば、現在設定されている始点に最も近い位置であって、未だ設定されていない位置に、現在設定されている始点の上下方向の位置をずらす。そして、ステップＳ２０２に戻り、再設定した始点を基点として横方向（右方向及び左方向）に画素を走査して、各画素の画素値を読み取る。そして、矩形ラベル４０１のラインを全て走査するまで、ステップＳ２０２〜Ｓ２０６を繰り返し行う。こうして、矩形ラベル４０１内の画素を全て走査すると、図８のフローチャートによる処理を終了する。
【００４４】
次に、図９のフローチャートを参照しながら、図３のステップＳ２４における突起判定処理の一例について説明する。
まず、ステップＳ３０１において、ＣＰＵ１は、矩形ラベル４０１を、上下方向で３つの領域に分離する。図１０は、矩形ラベル４０１を分離する様子の一例を示す図である。図１０に示す例では、矩形ラベル４０１は、上下方向で３つの領域４０１ａ〜４０１ｃに分離される。
【００４５】
次に、ステップＳ３０２において、ＣＰＵ１は、ステップＳ３０１で分離した３つの領域４０１ａ〜４０１ｃ毎に、矩形ラベル４０１内の図形の横幅（外縁間距離）の平均値を算出する。この算出は、図８のステップＳ２０４の結果に基づいて行うことができる。そして、図９のフローチャートによる処理を終了する。
前述したように、図３のステップＳ２５では、ステップＳ２４の突起判定処理の結果に基づいて、矩形ラベル４０１内の図形の突起が「１」のものとして妥当な位置にあるか否かを判定する。
【００４６】
このステップＳ２５の処理を具体的に説明すると、例えば、相対的に上側の領域４０１ａにおける横幅の平均値と、相対的に中央の領域４０１ｂにおける横幅の平均値との差が閾値以上であるか否かを判定し、閾値以上である場合に、矩形ラベル４０１内の図形の突起が「１」のものとして妥当な位置にあると判定することができる。また、相対的に上側の領域４０１ａにおける横幅の平均値と、相対的に中央の領域４０１ｂにおける横幅の平均値との差が閾値以上であり、且つ、相対的に下側の領域４０１ｃにおける横幅の平均値と、相対的に中央の領域４０１ｂにおける横幅の平均値との差が閾値以上である場合に、矩形ラベル４０１内の図形の突起が「１」のものとして妥当な位置にあると判定することもできる。
【００４７】
以上のように本実施形態では、矩形ラベル４０１内の画素値を読み取り、読み取った画素値が、辞書マッチングにより認識されるタブ譜上の数字に応じて予め設定された条件のどれに合うかを判定することにより、当該矩形ラベル４０１内の図形がどの数字に該当するかを判別するようにした。したがって、五線消去を行っても、タブ譜（の数字）を従来よりも正確に認識することが、辞書マッチングの手法を変えることなく実現できる。
【００４８】
尚、本実施形態では、図３のステップＳ１７、Ｓ１９において、矩形ラベル４０１内の図形の内縁間距離に基づいて、矩形ラベル４０１内の図形が「０」であるか「８」であるかを判別するようにした。しかしながら、矩形ラベル４０１内の図形の横方向における内縁間距離に代えて（又は加えて）矩形ラベル４０１内の図形の横方向における外縁間距離（又は矩形ラベル４０１の端部から矩形ラベル４０１内の図形の外縁までの横方向における最短距離）に基づいて、矩形ラベル４０１内の図形が「０」であるか「８」であるかを判別するようにしてもよい。
【００４９】
また、本実施形態では、図３のステップＳ１２の画像走査処理において、矩形ラベル４０１のラインの全てを走査してから、矩形ラベル４０１内の図形のすき間と、水平方向における内縁間距離とを一度に求めるようにした（図７のステップＳ１０４〜Ｓ１０９を参照）。しかしながら、必ずしもこのようにする必要はない。例えば、画像走査処理では、矩形ラベル４０１内の図形のすき間の長さと位置だけを求め、ステップＳ１３、Ｓ１４と、ステップＳ１７との間で、矩形ラベル４０１内の図形の水平方向における内縁間距離と、その内縁間距離が存在する位置とを求めるようにしてもよい。このようにした場合、画像走査処理では、黒画素（画素値が１の画素）が存在した時点で横方向（右方向及び左方向）への走査を終了し、始点を上下方向に移動することができる。また、矩形ラベル４０１内の図形の水平方向における内縁間距離を求める際にも、左右両側に黒画素（画素値が１の画素）が存在した時点で横方向（右方向及び左方向）への走査を終了し、始点を上下方向に移動することができる。
【００５０】
また、本実施形態のように、矩形ラベル４０１内の図形のすき間の長さが閾値以上でない場合には、その図形にすき間がないものとして処理を行えば（図３のステップＳ１４、Ｓ１７〜Ｓ２０を参照）、より正確に数字を判別することができ好ましいが、必ずしもステップＳ１４の処理を行う必要はない。
【００５１】
また、本実施形態では、図３のステップＳ２８において、矩形ラベル４０１内の図形と、矩形ラベル４０１から閾値以内の距離にある縦線との横方向の位置のずれが閾値以上である場合には、ステップＳ２９において、矩形ラベル４０１内の図形が「１」であると判別したが、必ずしもこのようにする必要はない。例えば、辞書マッチングにより認識されたタブ譜上の数字の認識結果を破棄するようにしてもよい。
【００５２】
また、図３のステップＳ１７、Ｓ１９と、ステップＳ１８との間で、図７のステップＳ１０２でＹＥＳと判定されたか否かを判定し、図７のステップＳ１０２でＹＥＳと判定された場合には、ステップＳ２０に進み、図７のステップＳ１０２でＮＯと判定された場合にはステップＳ１８に進むようにしてもよい。
【００５３】
また、本実施形態では、図９のステップＳ３０２において、ステップＳ３０１で分離した３つの領域４０１ａ〜４０１ｃ毎に、矩形ラベル４０１内の図形の横幅（外縁間距離）の平均値を算出するようにした。しかしながら、必ずしもこのようにする必要はなく、ステップＳ３０１で分離した３つの領域４０１ａ〜４０１ｃ毎に、矩形ラベル４０１内の図形の横幅（外縁間距離）の最大値を算出するようにしてもよい。
【００５４】
また、本実施形態では、「２」、「３」、「５」、「７」については、音楽記号認識処理（パターンマッチング）による認識の信頼性が高いものとし、認識された数字が「２」、「３」、「５」又は「７」である場合には、図３のフローチャートによる処理を行わないようにした。しかしながら、必ずしもこのようにする必要はない。例えば、「２」、「３」、「５」、「７」についても、ステップＳ１５で判別するようにしてもよい。
【００５５】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。前述した第１の実施形態では、矩形ラベル４０１内の図形にすき間があるか否かを、横方向の走査のみを行って判定する場合を例に挙げて説明した。しかしながら、このようにすると、矩形ラベル４０１内の図形が斜め方向のすき間を有している場合に、当該すき間を検出することができなくなる。図１１は、矩形ラベル４０１内で、斜め方向にすき間がある図形の一例を示す図である。図１１に示す例では、紙面に向かって左斜め上の方向に図形のすき間がある。そこで、本実施形態では、このような斜め方向にすき間がある図形についても当該すき間の有無を判定できるようにする。このように本実施形態と前述した第１の実施形態とは、すき間の有無を判定する際の処理（図３のステップＳ１２の画像走査処理）の一部が主として異なる。したがって、本実施形態の説明において、前述した第１の実施形態と同一の部分については、図１〜図１０に付した符号と同一の符号を付す等して詳細な説明を省略する。
【００５６】
図１２は、図３のステップＳ１２における画像走査処理の一例について説明するフローチャートである。
まず、図１２−１のステップＳ４０１において、ＣＰＵ１は、画素の走査を行う始点を初期位置に設定する。本実施形態でも、矩形ラベル４０１の横方向の中心であって、矩形ラベル４０１内に五線が存在していた位置に始点を設定する。ただし、始点の初期位置はこのようなものに限定されない。
【００５７】
次に、ステップＳ４０２において、ＣＰＵ１は、設定した始点が黒画素（始点の画素値が１）であるか否かを判定する。この判定の結果、ステップＳ４０１で設定した始点が黒画素である場合には、ステップＳ４０３に進む。ステップＳ４０３に進むと、ステップＳ４０１で設定した始点の上下方向の位置を図７のステップＳ１０２で説明したのと同様にしてずらし、始点の位置を再設定する。そして、ステップＳ４０２に戻り、設定した始点が白画素（始点の画素値が０）になるまで、ステップＳ４０２、Ｓ４０３を繰り返し行う。
【００５８】
以上のようにして始点が白画素になると、ステップＳ４０４に進む。ステップＳ４０４に進むと、ＣＰＵ１は、設定した始点を基点として左方向（ここでは、図１１の紙面に向かって左方向とする）に画素を走査して、各画素の画素値を読み取る。このとき、ＣＰＵ１は、ＲＡＭ３やレジスタに記憶される左方向フラグをオンする。
次に、ステップＳ４０５において、ＣＰＵ１は、画素を走査することにより得られた各白画素の配置（画素の画素値）に基づいて、矩形ラベル４０１内の図形にすき間があるか否かを図７のステップＳ１０７で説明したのと同様にして判定する。この判定の結果、矩形ラベル４０１内の図形にすき間がない場合には、後述するステップＳ４１５に進む。
【００５９】
一方、この判定の結果、矩形ラベル４０１内の図形にすき間がある場合には、ステップＳ４０６に進む。ステップＳ４０６に進むと、ＣＰＵ１は、ステップＳ４０４でオンした左方向フラグをオフする。
次に、ステップＳ４０７において、ＣＰＵ１は、設定した始点を基点として右方向に画素を走査して、各画素の画素値を読み取る。このとき、ＣＰＵ１は、ＲＡＭ３やレジスタに記憶される右方向フラグをオンする。
次に、ステップＳ４０８において、ＣＰＵ１は、画素を走査することにより得られた各白画素の配置（すなわち画素値）に基づいて、矩形ラベル４０１内の図形にすき間があるか否かを図７のステップＳ１０７で説明したのと同様にして判定する。この判定の結果、矩形ラベル４０１内の図形にすき間がない場合には、後述する図１２−２のステップＳ４２８に進む。
【００６０】
一方、この判定の結果、矩形ラベル４０１内の図形にすき間がある場合には、ステップＳ４０９に進む。ステップＳ４０９に進むと、ＣＰＵ１は、ステップＳ４０７でオンした右方向フラグをオフする。
次に、ステップＳ４１０において、ＣＰＵ１は、矩形ラベル４０１のラインを全て走査したか否かを判定する。この判定の結果、矩形ラベル４０１のラインを全て走査していない場合には、後述するステップＳ４１４に進む。
【００６１】
一方、矩形ラベル４０１のラインを全て走査した場合には、ステップＳ４１１に進む。ステップＳ４１１に進むと、ＣＰＵ１は、矩形ラベル４０１内の各白画素の配置（すなわち画素値）に基づいて、矩形ラベル４０１内の図形にすき間があるか否かを、図７のステップＳ１０７で説明したようにして判定する。この判定の結果、矩形ラベル４０１内の図形にすき間がある場合には、ステップＳ４１２に進む。ステップＳ４１２に進むと、ＣＰＵ１は、矩形ラベル４０１内の図形のすき間の位置と長さを求め、それらを相互に関連付けてＲＡＭ３に記憶する。そして、ステップＳ４１３に進む。
また、ステップＳ４１１において、矩形ラベル４０１内の図形にすき間がない場合には、ステップＳ４１２を省略してステップＳ４１３に進む。ステップＳ４１３に進むと、ＣＰＵ１は、矩形ラベル４０１内の各画素の画素値に基づいて、矩形ラベル４０１内の図形の水平方向における内縁間距離と、その内縁間距離が存在する位置とを求め、それらを相互に関連付けてＲＡＭ３に記憶する。そして、図１２のフローチャートによる処理を終了する。
【００６２】
前述したように、ステップＳ４１０において、矩形ラベル４０１のラインを全て走査していないと判定された場合には、ステップＳ４１４に進む。ステップＳ４１４に進むと、ＣＰＵ１は、始点の上下方向の位置をステップＳ１０６で説明したのと同様にしてずらし、始点の位置を再設定する。
そして、ＣＰＵ１は、始点の位置を上方向にずらす場合には、ＲＡＭ３やレジスタに記憶される上方向フラグをオンし、始点の位置を下方向にずらす場合には、ＲＡＭ３やレジスタに記憶される下方向フラグをオンする。そして、前述したステップＳ４０４に戻り、再設定した始点の位置からステップＳ４０４以降の処理を行う。
【００６３】
前述したように、ステップＳ４０５において、矩形ラベル４０１内の図形にすき間がないと判定された場合には、ステップＳ４１５に進む。ステップＳ４１５に進むと、ＣＰＵ１は、下方向フラグがオンされているか否かを判定する。この判定の結果、下方向フラグがオンされていない場合には、後述するステップＳ４２２に進む。
一方、下方向フラグがオンされている場合には、ステップＳ４１６に進む。ステップＳ４１６に進むと、ＣＰＵ１は、すき間が存在しないと判定した時点における画素の１つ上の画素に走査点を移動する。
【００６４】
次に、ステップＳ４１７において、ＣＰＵ１は、ステップＳ４１６における走査点の移動が可能であるか否かを判定する。例えば、すき間が存在しないと判定した時点における画素の１つ上の画素が白画素である場合には、走査点の移動が可能であると判定する。一方、すき間が存在しないと判定した時点における画素の１つ上の画素が黒画素である場合には、走査点の移動が不可能であると判定する。尚、ステップＳ４１６、Ｓ４１７の処理の順番を入れ替えてもよい。
この判定の結果、走査点の移動が不可能である場合には、ステップＳ４２１に進み、ＣＰＵ１は、オンされているフラグ（上下左右方向フラグ）を全てオフする。そして、前述したステップＳ４０７に進み、右方向への走査を行う。
【００６５】
一方、走査点の移動が可能である場合には、ステップＳ４１８に進み、ＣＰＵ１は、移動した走査点を基点として左方向に画素を走査して、各画素の画素値を読み取る。
次に、ステップＳ４１９において、画素を走査することにより得られた各白画素の配置（すなわち画素値）に基づいて、矩形ラベル４０１内の図形にすき間があるか否かを判定する。例えば、移動した走査点を基点として左方向に黒画素が１つもない場合に、矩形ラベル４０１内の図形のすき間があると判定される。この判定の結果、矩形ラベル４０１内の図形にすき間がある場合には、ステップＳ４２０を省略して前述したステップＳ４２１に進む。一方、矩形ラベル４０１内の図形にすき間がない場合には、ステップＳ４２０に進む。
【００６６】
ステップＳ４２０に進むと、ＣＰＵ１は、走査点の上下方向の位置が、矩形ラベル４０１内に五線が存在していた位置であるか否かを判定する。この判定の結果、走査点の上下方向の位置が、矩形ラベル４０１内に五線が存在していた位置でない場合には、前述したステップＳ４１６に戻り、走査点の上下方向の位置が、矩形ラベル４０１内に五線が存在していた位置になるまで、ステップＳ４１６〜Ｓ４２０を繰り返し行う。
そして、ステップＳ４２１に進むと、ＣＰＵ１は、オンされているフラグを全てオフする。そして、前述したステップＳ４０７に進み、右方向への走査を行う。
【００６７】
前述したように、ステップＳ４１５において、下方向フラグがオンされていないと判定された場合には、ステップＳ４２２に進む。ステップＳ４２２に進むと、ＣＰＵ１は、上方向フラグがオンされているか否かを判定する。この判定の結果、上方向フラグがオンされている場合には、後述するステップＳ４２３に進む。
一方、上方向フラグがオンされていない場合には、ステップＳ４４１に進む。ステップＳ４４１に進むと、ＣＰＵ１は、走査点を下に１画素ずらすか否かを判定する。例えば、すき間が存在しないと判定した時点における画素の上下の画素のうち、下のみに白画素がある場合に、走査点を下に１画素ずらすと判定する。
【００６８】
この判定の結果、走査点を下に１画素ずらす場合には、ステップＳ４４２に進み、ＣＰＵ１は、すき間が存在しないと判定した時点における画素の１つ下の画素に走査点を移動する。そして、前述したステップＳ４１８に進む。
一方、走査点を下に１画素ずらさない場合には、ステップＳ４４３に進み、ＣＰＵ１は、走査点を上に１画素ずらすか否かを判定する。例えば、すき間が存在しないと判定した時点における画素の上下の画素のうち、上のみに白画素がある場合に、走査点を上に１画素ずらすと判定する。
この判定の結果、走査点を上に１画素ずらす場合には、ステップＳ４４４に進み、ＣＰＵ１は、すき間が存在しないと判定した時点における画素の１つ上の画素に走査点を移動する。そして、後述するステップＳ４２５に進む。一方、走査点を上に１画素ずらさない場合には、前述したステップＳ４０７に進み、始点から右方向への走査を行う。
【００６９】
前述したようにステップＳ４２２の判定の結果、上方向フラグがオンされていると判定された場合には、ステップＳ４２３に進む。ステップＳ４２３に進むと、ＣＰＵ１は、すき間が存在しないと判定した時点における画素の１つ下の画素に走査点を移動する。
【００７０】
次に、ステップＳ４２４において、ＣＰＵ１は、ステップＳ４２３における走査点の移動が可能であるか否かを判定する。例えば、すき間が存在しないと判定した時点における画素の１つ下の画素が白画素である場合には、走査点の移動が可能であると判定する。一方、すき間が存在しないと判定した時点における画素の１つ下の画素が黒画素である場合には、走査点の移動が不可能であると判定する。尚、ステップＳ４２３、Ｓ４２４の処理の順番を入れ替えてもよい。
この判定の結果、走査点の移動が不可能である場合には、前述したステップＳ４２１に進み、ＣＰＵ１は、オンされているフラグ（上下左右方向フラグ）を全てオフする。そして、前述したステップＳ４０７に進み、右方向への走査を行う。
【００７１】
一方、走査点の移動が可能である場合には、ステップＳ４２５に進み、ＣＰＵ１は、移動した走査点を基点として左方向に画素を走査して、各画素の画素値を読み取る。
次に、ステップＳ４２６において、画素を走査することにより得られた白画素の配置（すなわち画素値）に基づいて、矩形ラベル４０１内の図形にすき間があるか否かを判定する。例えば、移動した走査点を基点として左方向に黒画素が１つもない場合に、矩形ラベル４０１内の図形のすき間があると判定される。この判定の結果、矩形ラベル４０１内の図形にすき間がある場合には、ステップＳ４２７を省略して前述したステップＳ４２１に進む。一方、矩形ラベル４０１内の図形にすき間がない場合には、ステップＳ４２７に進む。
【００７２】
ステップＳ４２７に進むと、ＣＰＵ１は、走査点の上下方向の位置が、矩形ラベル４０１内に五線が存在していた位置であるか否かを判定する。この判定の結果、走査点の上下方向の位置が、矩形ラベル４０１内に五線が存在していた位置でない場合には、前述したステップＳ４２３に戻り、走査点の上下方向の位置が、矩形ラベル４０１内に五線が存在していた位置になるまで、ステップＳ４２３〜Ｓ４２７を繰り返し行う。そして、前述したステップＳ４２１に進む。
【００７３】
前述したように、ステップＳ４０８において、矩形ラベル４０１内の図形にすき間がないと判定された場合には、図１２−２のステップＳ４２８に進む。ステップＳ４２８に進むと、ＣＰＵ１は、下方向フラグがオンされているか否かを判定する。この判定の結果、下方向フラグがオンされていない場合には、後述するステップＳ４３５に進む。
一方、下方向フラグがオンされている場合には、ステップＳ４２９に進む。ステップＳ４２９に進むと、ＣＰＵ１は、すき間が存在しないと判定した時点における画素の１つ上の画素に走査点を移動する。
【００７４】
次に、ステップＳ４３０において、ＣＰＵ１は、ステップＳ４２９における走査点の移動が可能であるか否かを判定する。例えば、すき間が存在しないと判定した時点における画素の１つ上の画素が白画素である場合には、走査点の移動が可能であると判定する。一方、すき間が存在しないと判定した時点における画素の１つ上の画素が黒画素である場合には、走査点の移動が不可能であると判定する。尚、ステップＳ４２９、Ｓ４３０の処理の順番を入れ替えてもよい。
この判定の結果、走査点の移動が不可能である場合には、ステップＳ４３４に進み、ＣＰＵ１は、オンされているフラグ（上下左右方向フラグ）を全てオフする。そして、前述したステップＳ４１０に進み、矩形ラベル４０１内の全てのラインを走査したか否かを判定する。
【００７５】
一方、走査点の移動が可能である場合には、ステップＳ４３１に進み、ＣＰＵ１は、移動した走査点を基点として右方向に画素を走査して、各画素の画素値を読み取る。
次に、ステップＳ４３２において、ＣＰＵ１は、画素を走査することにより得られた白画素の配置（すなわち画素値）に基づいて、矩形ラベル４０１内の図形にすき間があるか否かを判定する。例えば、移動した走査点を基点として右方向に黒画素が１つもない場合に、矩形ラベル４０１内の図形のすき間があると判定される。この判定の結果、矩形ラベル４０１内の図形にすき間がある場合には、ステップＳ４３３を省略して前述したステップＳ４３４に進む。一方、矩形ラベル４０１内の図形にすき間がない場合には、ステップＳ４３３に進む。
【００７６】
ステップＳ４３３に進むと、ＣＰＵ１は、走査点の上下方向の位置が、矩形ラベル４０１内に五線が存在していた位置であるか否かを判定する。この判定の結果、走査点の上下方向の位置が、矩形ラベル４０１内に五線が存在していた位置でない場合には、前述したステップＳ４２９に戻り、走査点の上下方向の位置が、矩形ラベル４０１内に五線が存在していた位置になるまで、ステップＳ４２９〜Ｓ４３３を繰り返し行う。
そして、ステップＳ４３４に進むと、ＣＰＵ１は、オンされているフラグを全てオフする。そして、前述したステップＳ４１０に進み、矩形ラベル４０１内の全てのラインを走査したか否かを判定する。
【００７７】
前述したように、ステップＳ４２８において、下方向フラグがオンされていないと判定された場合には、ステップＳ４３５に進む。ステップＳ４３５に進むと、ＣＰＵ１は、上方向フラグがオンされているか否かを判定する。この判定の結果、上方向フラグがオンされている場合には、後述するステップＳ４３５に進む。
一方、上方向フラグがオンされていない場合には、ステップＳ４４５に進む。ステップＳ４４５に進むと、ＣＰＵ１は、走査点を下に１画素ずらすか否かを判定する。例えば、すき間が存在しないと判定した時点における画素の上下の画素のうち、下のみに白画素がある場合に、走査点を下に１画素ずらすと判定する。
【００７８】
この判定の結果、走査点を下に１画素ずらす場合には、ステップＳ４４６に進み、ＣＰＵ１は、すき間が存在しないと判定した時点における画素の１つ下の画素に走査点を移動する。そして、前述したステップＳ４２９に進む。
一方、走査点を下に１画素ずらさない場合には、ステップＳ４４７に進み、ＣＰＵ１は、走査点を上に１画素ずらすか否かを判定する。例えば、すき間が存在しないと判定した時点における画素の上下の画素のうち、上のみに白画素がある場合に、走査点を上に１画素ずらすと判定する。
【００７９】
尚、すき間が存在しないと判定した時点における画素の上下の画素の両方が白画素である場合には、例えば、当該時点における画素の位置が、五線が存在していた位置よりも下である場合には下方向に、上である場合には上方向に走査点を１画素ずらすようにしてもよい。
この判定の結果、走査点を上に１画素ずらす場合には、ステップＳ４４８に進み、ＣＰＵ１は、すき間が存在しないと判定した時点における画素の１つ上の画素に走査点を移動する。そして、後述するステップＳ４３８に進む。一方、走査点を上に１画素ずらさない場合には、前述したステップＳ４１０に進み、矩形ラベル４１０内の全てのラインを走査したか否かを判定する。
【００８０】
前述したようにステップＳ４３５の判定の結果、上方向フラグがオンされていると判定された場合には、ステップＳ４３６に進む。ステップＳ４３６に進むと、ＣＰＵ１は、すき間が存在しないと判定した時点における画素の１つ下の画素に走査点を移動する。
【００８１】
次に、ステップＳ４３７において、ＣＰＵ１は、ステップＳ４３６における走査点の移動が可能であるか否かを判定する。例えば、すき間が存在しないと判定した時点における画素の１つ下の画素が白画素である場合には、走査点の移動が可能であると判定する。一方、すき間が存在しないと判定した時点における画素の１つ下の画素が黒画素である場合には、走査点の移動が不可能であると判定する。尚、ステップＳ４３６、Ｓ４３７の処理の順番を入れ替えてもよい。
この判定の結果、走査点の移動が不可能である場合には、前述したステップＳ４３４に進み、ＣＰＵ１は、オンされているフラグ（上下左右方向フラグ）を全てオフする。そして、前述したステップＳ４１０に進み、矩形ラベル４０１内の全てのラインを走査したか否かを判定する。
【００８２】
一方、走査点の移動が可能である場合には、ステップＳ４３８に進み、ＣＰＵ１は、移動した走査点を基点として右方向に画素を走査して、各画素の画素値を読み取る。
次に、ステップＳ４３９において、ＣＰＵ１は、画素を走査することにより得られた白画素の配置（すなわち画素値）に基づいて、矩形ラベル４０１内の図形にすき間があるか否かを判定する。例えば、移動した走査点を基点として左方向に黒画素が１つもない場合に、矩形ラベル４０１内の図形のすき間があると判定される。この判定の結果、矩形ラベル４０１内の図形にすき間がある場合には、ステップＳ４４０を省略して前述したステップＳ４３４に進む。一方、矩形ラベル４０１内の図形にすき間がない場合には、ステップＳ４４０に進む。
【００８３】
ステップＳ４４０に進むと、ＣＰＵ１は、走査点の上下方向の位置が、矩形ラベル４０１内に五線が存在していた位置であるか否かを判定する。この判定の結果、走査点の上下方向の位置が、矩形ラベル４０１内に五線が存在していた位置でない場合には、前述したステップＳ４３６に戻り、走査点の上下方向の位置が、矩形ラベル４０１内に五線が存在していた位置になるまで、ステップＳ４３６〜Ｓ４４０を繰り返し行う。そして、前述したステップＳ４３４に進む。
【００８４】
ここで、図１１に示した例を用いて、図１２のフローチャートの流れを説明する。まず、図面中央付近において、紙面に向かって左方向に画素を走査している。したがって、ステップＳ４０４において、左方向フラグがオンされる。そして、画素１１１０に達すると、ステップＳ４０５において、すき間がないと判定される。ここでは、上方向フラグも下方向フラグもオンされていないとする。そうすると、ステップＳ４１５、Ｓ４２２を経てステップＳ４４１に進む。ここでは画素１１１０の下のみに白画素があるので、ステップＳ４４１、Ｓ４４２において、走査点が画素１１１０から画素１１１１に移動する。そして、ステップＳ４１８において、移動した走査点を基点として左方向に走査され、画素１１１２に達すると、ステップＳ４１９において、すき間がないと判定される。ここで、画素１１１２の位置は、五線が存在していた位置ではないとする。そうすると、ステップＳ４２０を経てステップＳ４１６に戻り、走査点が画素１１１２から画素１１１３に移動する。以降、ステップＳ４１７以降の処理を行うことにより、図１１の矢印に示すように、矩形ラベル４０１内の図形の内縁に沿って画素を走査して（すなわち画素値を読み出して）すき間の有無が判定される。
【００８５】
ただし、画素１１１０に達した場合には、横方向（右方向及び左方向）への走査を終了し、始点を上下方向に移動するようにしてもよい。例えば、下方向フラグがオンされているとして、このようにする場合の動作の概要の一例を説明する。まず、ステップＳ４０４において、左方向フラグがオンされ、図１１の中央付近から左方向に画素が走査される。そして、走査点が画素１１１０に達すると、ステップＳ４０５において、すき間がないと判定される。ここでは下方向フラグがオンされているので、ステップＳ４１６に進み、ステップＳ４１６、Ｓ４１７において、上方向に走査点を移動させることができないと判定され、ステップＳ４２１でフラグがオフされる。このようにして、画素１１１０に達した場合には、横方向（右方向及び左方向）への走査が終了する。その後、ステップＳ４０７以降の処理を経てステップＳ４０４に戻り、画素１１１０の１つ下の画素が左方向に走査され、画素１１１２に到達する。画素１１１２に到達した後の処理は、前述した通りである。
【００８６】
以上のように本実施形態では、矩形ラベル４０１内の図形の内縁に沿って画素を走査してすき間の有無を判定するようにしたので、前述した第１の実施形態で説明した効果に加え、図形のすき間が斜め方向に存在していた場合でも、当該すき間の有無を検出することができるようになる。
尚、本実施形態では、図形の全ての方向についてすき間の有無を判定する場合を例に挙げて説明したが、必ずしもこのようにする必要はない。例えば、「０」、「６」、「８」、「９」の特徴に鑑み、図形の右斜め下方向にすき間が存在することがないとする場合には、ステップＳ４２８〜Ｓ４３３、Ｓ４４５、Ｓ４４６の処理を省略し、ステップＳ４０８からステップＳ４３５に進むようにすることができる。
【００８７】
また、本実施形態では、画素を走査すると、当該画素の画素値を必ず読み出すようにした場合を例に挙げて説明したが、必ずしもこのようにする必要はない。例えば、既に画素値を読み出した画素に対してフラグをオン、フラグがオンされている画素については、画素値を改めて読み出さないようにすることができる。
この他、本実施形態においても、前述した第１の実施形態で説明した種々の変形例を採用することができる。
【００８８】
以上説明した本発明の各実施形態は、コンピュータがプログラムを実行することによって実現することができる。また、プログラムをコンピュータに供給するための手段、例えばかかるプログラムを記録したＣＤ−ＲＯＭ等のコンピュータ読み取り可能な記録媒体、又はかかるプログラムを伝送する伝送媒体も本発明の実施の形態として適用することができる。また、上記プログラムを記録したコンピュータ読み取り可能な記録媒体などのプログラムプロダクトも本発明の実施の形態として適用することができる。上記のプログラム、コンピュータ読み取り可能な記録媒体、伝送媒体及びプログラムプロダクトは、本発明の範疇に含まれる。
また、前述した各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【００８９】
【図１】本発明の第１の実施形態を示し、楽譜認識装置の構成の一例を示すブロック図である。
【図２】本発明の第１の実施形態を示し、ＣＰＵの処理の一例を説明するメインフローチャートである。
【図３】本発明の第１の実施形態を示し、認識結果検証処理の一例を説明するフローチャートである。
【図４】本発明の第１の実施形態を示し、矩形ラベル内の図形の第１の例を示す図である。
【図５】本発明の第１の実施形態を示し、矩形ラベル内の図形の第２の例を示す図である。
【図６】本発明の第１の実施形態を示し、符尾の近辺に数字の１が表示されているタブ譜と、かすれ等により２つに分離された符尾が表示されているタブ譜とを示す図である。
【図７】本発明の第１の実施形態を示し、図３のステップＳ１２における画像走査処理の一例について説明するフローチャートである。
【図８】本発明の第１の実施形態を示し、図３のステップＳ２１における横幅判定処理の一例について説明するフローチャートである。
【図９】本発明の第１の実施形態を示し、図３のステップＳ２４における突起判定処理の一例について説明するフローチャートである。
【図１０】本発明の第１の実施形態を示し、矩形ラベルを分離する様子の一例を示す図である。
【図１１】本発明の第２の実施形態を示し、矩形ラベル内で、斜め方向にすき間がある図形の一例を示す図である。
【図１２−１】本発明の第２の実施形態を示し、図３のステップＳ１２における画像走査処理の一例について説明するフローチャートである。
【図１２−２】本発明の第２の実施形態を示し、図１２−１に続くフローチャートである。
【符号の説明】
【００９０】
１  ＣＰＵ
２  ＲＯＭ
３  ＲＡＭ
４  ＨＤＤ
５  ＦＤＤ
６  ＭＩＤＩ
７  スキャナインタフェース回路
８  プリンタインタフェース回路
９  キーボードインタフェース回路
１０  ＣＲＴインタフェース回路
１１  スキャナ
１２  プリンタ
１３  キーボード
１４  ＣＲＴ
１００  楽譜認識装置
【図１】
2010102667.tif 000003
【図２】
2010102667.tif 000004
【図３】
2010102667.tif 000005
【図４】
2010102667.tif 000006
【図５】
2010102667.tif 000007
【図６】
2010102667.tif 000008
【図７】
2010102667.tif 000009
【図８】
2010102667.tif 000010
【図９】
2010102667.tif 000011
【図１０】
2010102667.tif 000012
【図１１】
2010102667.tif 000013
【図１２−１】
2010102667.tif 000014
【図１２−２】
2010102667.tif 000015