(57)【特許請求の範囲】
【請求項１】
入力された楽譜画像データから各種記号を認識して、演奏情報に変換する楽譜認識装置において、
楽譜画像データを五線と垂直方向に走査し、連続する白および黒画素の長さを求めて、長さ毎の頻度分布データを作成する頻度分布データ作成手段と、
前記頻度分布データ作成手段により作成された頻度分布データから五線の線幅および間幅を求める幅検出手段と、
線幅および間幅データから、入力された楽譜画像データの解像度および濃度の少なくとも一方を画質情報として算出して出力する画質検出手段とを備えたことを特徴とする楽譜認識装置。
【請求項２】
更に、前記画質検出手段から出力される画質情報を表示する表示手段を備えたことを特徴とする請求項１の楽譜認識装置。
【請求項３】
更に、前記画質検出手段から出力される画質情報に基づき、スキャナから適切な画質で楽譜画像データが入力されるように、該スキャナを制御する制御手段を備えたことを特徴とする請求項１または２の楽譜認識装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は楽譜認識装置に関し、特に入力された楽譜画像データの解像度や濃度を検出することが可能な楽譜認識装置に関するものである。
【０００２】
【従来の技術】
従来の楽譜認識装置においては、例えばスキャナによって読み込んだ楽譜画像データについて、まず五線を認識し、これに基づいて音符や各種記号を認識して、ＭＩＤＩファイルデータ等の演奏データを生成するものがあった。
【０００３】
【発明が解決しようとする課題】
楽譜をスキャナ等で読み込み、認識する楽譜認識装置において、取り込む画像の解像度や、白黒画像を取り込む際の２値化のしきい値、原稿の傾き等は、認識率に重大な影響を及ぼす場合が多い。しかし、これらの条件を全て良い状態に保って画像の取り込みを行うのは難しく、様々な条件で画像データが取り込まれることになる。ところが、従来の楽譜認識装置の演奏データ生成処理においては、これらの条件を一切考慮せずに認識処理を行っていた。その結果、時間のかかる楽譜認識処理を行った後に、認識率が非常に悪いので、再度楽譜データを読み込ませる処理からやり直さざるを得ないという事態が発生するという問題点があった。
本発明の目的は、前記のような従来技術の問題点を解決し、時間のかかる楽譜認識処理を行う前に、簡単に画像の取り込み状態を判別することが可能な楽譜認識装置を提供することにある。
【０００４】
【課題を解決するための手段】
本発明は、入力された楽譜画像データから各種記号を認識して、演奏情報に変換する楽譜認識装置において、楽譜画像データを五線と垂直方向に走査し、連続する白および黒画素の長さを求めて、長さ毎の頻度分布データを作成する頻度分布データ作成手段と、前記頻度分布データ作成手段により作成された頻度分布データから五線の線幅および間幅を求める幅検出手段と、線幅および間幅データから、入力された楽譜画像データの解像度および濃度の少なくとも一方を画質情報として算出して出力する画質検出手段とを備えたことを特徴とする。
【０００５】
本発明はこのような構成により、簡単な処理で、予め画像の状態が判別できるので、例えば、楽譜画像データの解像度や濃度が、認識に必要な所定の範囲から外れている場合に、該情報を表示するなどして、利用者に画像データの再取り込みを行わせることにより、時間のかかる楽譜認識処理を行った後で、画質のせいで認識率が落ちていたことが判別するといった無駄を防止でき、結果として処理時間が短縮され、認識率も向上し、効率良く楽譜認識を行う事ができる。
【０００６】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して詳細に説明する。図１は本発明の楽譜認識装置の一実施例の構成を示すブロック図である。この装置は、パソコン等の一般的な計算機システムにスキャナやＭＩＤＩインターフェース回路を付加したものである。ＣＰＵ１は、ＲＯＭ２あるいはＲＡＭ３に格納されるプログラムに基づき、楽譜認識装置全体の制御を行う中央処理装置である。また、予め設定された所定の周期でＣＰＵ１に割り込みをかけるタイマ回路を内蔵している。ＲＡＭ３はプログラムエリアの他、画像データバッファ、ワークエリア等として使用される。ハードディスク装置ＨＤＤ４およびフロッピディスク装置ＦＤＤ５は、プログラムおよび画像データ、演奏データ等を格納する。ＣＲＴ６はＣＰＵ１の制御に基づき、ＣＲＴインターフェース回路７から出力される映像情報を表示し、キーボード８から入力された情報は、キーボードインターフェース回路９を経てＣＰＵ１に取り込まれる。プリンタ１０は、ＣＰＵ１の制御に基づき、プリンタインターフェース回路１１から出力される印字情報を印字する。
【０００７】
スキャナ１２は、（印刷された）楽譜を光学的に走査して、２値あるいはグレイスケールの画像データに変換するものであり、フラットベッド型、ハンディ型、フィーダー型等任意のタイプのものを使用できる。スキャナ１２によって読み取られた画像情報は、スキャナインターフェース回路１３を介して、ＲＡＭ３あるいはＨＤＤ４に取り込まれる。ＭＩＤＩインターフェース回路１４は、音源モジュール等の外部のＭＩＤＩ機器との間でＭＩＤＩデータの送受信を行う回路である。バス１５は楽譜認識装置内の各回路を接続している。なお、この他にマウス等のポインティングデバイス、ＲＳ２３２Ｃ等のシリアルインターフェース回路等を備えていてもよい。
【０００８】
図３は、ＣＰＵ１のメイン処理を示すフローチャートである。ステップＳ１においては、スキャナ１２によって楽譜のイメージをＲＡＭ３に取り込む。画像は２値の画像として取り込む。ステップＳ２においては、かすれやドットノイズなどを軽減するために、図形融合などの画質平滑化処理を行う。具体的には、例えば各黒画素について、上下左右の４点（４連結）あるいは更に斜め方向も含めた周囲の８点（８連結）を黒画素にする膨張処理を行い、その後、各黒画素の内、上下左右の４点あるいは周囲の８点が黒であるもののみを黒画素として残す収縮処理を行うことにより、例えば黒領域中に１画素だけ白が存在するような場合には全て黒画素に修正され、また収縮処理を行った後に膨張処理を行うことにより、１画素だけ黒であるような点が白に修正される。
【０００９】
ステップＳ３においては、解像度と濃度の情報を得ると共に、後段における五線検出の基準データを得るために、後述する画質チェック処理を行う。楽譜の認識処理においては、解像度および濃度が所定の範囲から外れると認識率が低下してしまうので、ステップＳ３においては、これらの値が、所定の範囲内に入っているか否かがチェックされる。ステップＳ４においては、ステップＳ３におけるチェック結果が画質ＯＫであるか否か（後述する変数ｇａｓｉｔｕがＯＫであるか否か）が判定され、結果がＯＫでない場合にはステップＳ１に戻って、解像度や濃度を変えて再取り込みを行う。
【００１０】
ステップＳ５においては、五線認識を行う。五線認識処理は、大きく五線走査開始位置検出処理と、五線シフト量の検出処理に分かれる。五線走査開始位置検出処理の概略を述べると、ｘ軸方向のある位置で、黒画素と白画素の幅を順に求め、求められた線幅と間幅が五線状に並んでいる位置を、ある程度の誤差を考慮して検出する。そして、加線（五線からはみ出した音符を記載するために付加した横線）の影響を除くために、五線状の並びの両側に間幅より大きな白画素幅があるという条件を加える。この条件に合う白黒画素の並びがあるｘ位置の各黒ランの中点を五線走査開始位置とする。
【００１１】
つぎに、五線シフト量の検出処理の概略を述べると、求められたｘ位置の五線走査開始位置（５点の黒画素位置）から、１ドットずつ位置を左右に変えていき、５点の内、黒画素が所定の個数（例えば３あるいは４個）以下になった場合に、ｙ座標を黒画素の割合が高くなる方向へシフトする。そして開始位置からのシフト量を五線のシフト量とする。五線走査開始位置から左右に、黒画素個数が０になる位置まで走査することにより五線の検出を行う。
【００１２】
ステップＳ６においては、段落認識処理を行う。この処理は、大きく、段落認識処理と、大かっこ認識処理に分かれる。段落認識処理においては、画像全体で五線を検出し、五線同士で左端がほぼ同じ場所にある五線の組を探し、五線の端同士が、黒画素で結ばれているかどうかを検査し段落を認識する。ステップＳ７においては、段落の認識結果を表示して、段落認識結果が正しいか否かを利用者にチェックさせることにより、ＯＫか否かが判定され、結果がＯＫでない場合にはステップＳ８に移行して、段落認識結果の修正が行われる。
【００１３】
なお、五線認識が失敗した場合には、その後の処理が行えないので、倍率や濃度を変更して再度画像を取り込む必要がある。従って、ステップＳ７においては、まず五線の認識結果を表示し、正しいか否かを利用者に判定させ、もし正しくない場合には、Ｓ１に戻ってイメージの再取り込みを行い、また五線が正しく認識されている場合には、段落認識結果を表示し、チェックさせるようにしてもよい。
【００１４】
ステップＳ９においては、処理矩形の決定処理が行われる。求められた五線を含むある程度広い矩形を採り、これを認識処理矩形とする。矩形の大きさは、その五線に関係する音楽記号が存在する最大領域以上で、かつ五線傾き補正により、必要な記号が消えない様な大きさにする。これ以降の認識はこの矩形内で行う。
【００１５】
ステップＳ１０においては、五線傾き補正処理を行う。概略を述べると、先に求めた五線シフト量に基づいて矩形画像の列ごとに画素列を上下にシフトする。この後、矩形の上下端に接した図形ラベル（独立した黒画素領域）は上下のパートの構成要素として削除する。最後に、上下端の空白部分を検出して、矩形を縮小する。
【００１６】
ステップＳ１１〜Ｓ１５においては、各種記号の認識処理が行われる。ステップＳ１１においては、五線に対して定位置にある記号として、音部記号と拍子記号を認識する。該処理においては、まず、求められた五線を含む矩形領域で縦に黒画素のヒストグラムを取っていき、黒画素量があるしきい値以上の帯域を、記号が存在する可能性のある場所としてマッチングの対象とする。マッチングは、五線間の数箇所について横方向のペリフェラル特徴によって行う。ペリフェラル特徴とは、マッチング対象となる記号のみを含む矩形領域の左右端から五線間の数箇所の白画素領域を内方向に走査し、黒画素領域に達するまでの距離を１次（最初）あるいは数次（２回目以降）まで求めたものである。認識された記号は画像データから削除する。
【００１７】
ステップＳ１２においては音符認識を行う。まず、矩形領域を横に走査して、所定の長さ以下の黒ランを検出し、分離する。分離された画像データは、横が細い部分であるので、ここから符尾や小節線の候補になる縦線を検出する。次に、縦に所定の長さ以下の黒ランを検出し分離する。分離された画像データは細い横線を構成する部分なので、ここから加線やクレッシェンドなどの候補になる横線を検出する。最後に、元の画像データから検出された縦横の細ランを消せば、画像中の太い部分（以下太ラベル）が抽出できる。楽譜の場合、４部音符より短い音符の符頭（以下黒玉符頭）や連鉤（複数の音符をつなぐ帯）が分離できる。
【００１８】
黒玉符頭は、太ラベルの境界線についての座標チェーンデータを求め、この座標データから公知の方法により楕円式を計算し、この形や太ラベルとのマッチング度をとって認識する。２部音符、全音符の符頭（以下白抜き符頭）は、画像の穴の座標チェーンから楕円式を計算する。
【００１９】
最後に、先に求めた符尾候補と結合して音符を検出する。連鉤は、これまでに求められた旗を考えない音符の符尾の周辺に存在する太ラベルを検出し、これの形状から連鉤の本数を計算する。また、この連鉤に連結している他の音符も検出する。連結する他の音符が無い場合には単独の旗を持つ音符と考える。連鉤の本数により、音符の情報を変更する。この後、分離した横線を使って音の高さ（加線）やクレッシェンド、横線と縦線を使ってくり返しかっこ等を認識する。残った縦線から小節線を認識する。そして、認識された記号は画像から削除する。
【００２０】
ステップＳ１３においては、定型記号認識が行われる。この処理においては、まず、公知の輪郭線荷重方向指数を取り、辞書の各記号データについてラベルのサイズと荷重方向指数のマッチング度を計算して、各マッチング度を正規化し、統合した結果が最も高い記号を出力する。認識された記号は画像から削除する。
【００２１】
ステップＳ１４においては、文字列認識を行う。速度記号などの文字列を認識するために、定型記号認識で認識されたアルファベットその他の記号を使い、その記号を囲む矩形が文字列状に並んでいるものを抽出し、これと文字列辞書のマッチングをとることで、文字列状の記号を、それぞれの構成文字が多少間違っていても認識できるようにする。
【００２２】
ステップＳ１５においては、スラー、タイ認識を行う。この処理においては、残ったラベルのうち、検出された音符の周りのラベルに関して、これを細線化し、これを多円弧近似する。そして、以前に消された記号により線が切れている場合があるので、求められた多円弧同士の連結を行う。最後に、求められた円弧の形や元画像の図の太さ、音符との関係などからスラー、タイを認識する。これが認識で最後のルーチンなので、認識された記号は画像から削除しなくても良いが、認識したスラー、タイを削除し、この後で再度定型記号認識を行うようにすれば、スラー、タイと接触した記号を認識することができるようになる。
【００２３】
ステップＳ１６においては、例えば認識結果に基づき、楽譜画像データを合成して表示し、正しいか否かを利用者にチェックさせることにより、ＯＫか否かが判定され、結果がＯＫでない場合にはステップＳ１７に移行して、マウス、キーボード等を用いて、手動により認識結果の修正が行われる。ステップＳ１８においては、演奏データ作成処理が行われる。該処理においては、認識した各種の記号や音符情報に基づき、例えば公知の演奏データ形式であるＭＩＤＩファイルデータを生成する。
【００２４】
図２（ａ）は、図３のステップＳ３の画質チェック処理における楽譜画像データの走査例を示す説明図である。なお、楽譜の音符や各種記号は図示していないが存在する。画質チェック処理においては、解像度と濃度の情報を得ると共に、後段における五線検出の基準データを得るために、まず五線の線幅と五線の各線間の間幅を検出する必要がある。そのために、画像上の横（ｘ）方向の数箇所（図２においては５箇所）において、画像を縦（ｙ）方向に走査し、黒ラン（連続する黒画素の長さ）と白ランの長さを全て求めて、画素の種類ごとに頻度分布（ヒストグラム）データを作成する。
【００２５】
図２（ｂ）、（ｃ）はそれぞれ黒ラン長および白ラン長のヒストグラム例を示す説明図である。それぞれのヒストグラムにおいて横軸はラン長（画素数）であり、縦軸はランの個数である。楽譜上で最も多い記号は五線であるので、作成された黒ラン長ヒストグラムと、白ラン長ヒストグラムのピークを検出することで、五線の線幅、間幅が推定できる。例えば図２の例においては、黒ラン長のピークは４であり、また白ラン長のピークは３０である。従って、五線の線幅は４画素長であり、間幅は３０画素長であることが推定できる。そして、画像データの解像度は、例えば間幅、間幅＋線幅、あるいは五線幅等から推定可能であり、また、濃度は線幅と間幅の比から推定することができる。
【００２６】
図４は、ステップＳ３の画質チェック処理の詳細を示すフローチャートである。ステップＳ２０においては、図２（ａ）に示すように、画像上の数カ所において、五線と直角方向に画像データを走査し、白画素および黒画素のラン長データを求める。ステップＳ２１においては、図２（ｂ）、（ｃ）に示すように、白および黒画素のラン長ヒストグラムを作成する。ステップＳ２２においては、黒ラン長のピークから五線の線幅ｔｈｉｃｋ  を、また白ラン長のピークから五線の間幅ｂｌａｎｋ  を求める。ピーク値としては、ヒストグラム中の最大値を示すラン長を採用してもよいし、個数があるレベル以上のラン長の加重平均を取ってもよい。
【００２７】
ステップＳ２３においては、五線幅ｈｅｉｇｈｔを求める。五線の幅は、ｈｅｉｇｈｔ＝（ｔｈｉｃｋ  ×４）  ＋  （ｂｌａｎｋ  ×４）となる。解像度はこのｈｅｉｇｈｔから判別する。ステップＳ２４においては、２値化しきい値（濃度）を求める。２値化しきい値は、例えば、（ｔｈｉｃｋ    ×  ｋ）  ／  ｈｅｉｇｈｔ    などから判別する。なおｋ  は適当な定数である。ステップＳ２５においては、求めた五線幅が、楽譜認識処理に必要な解像度範囲に対応する所定の長さ範囲内であるか否かが判定され、結果が否定の場合にはステップＳ２８に移行するが、肯定の場合にはステップＳ２６に移行する。ステップＳ２６においては、ステップＳ２４で求めた濃度値が所定の範囲内か否かが判定され、結果が否定の場合にはステップＳ２８に移行するが、肯定の場合にはステップＳ２７に移行する。ステップＳ２７においては、変数ｇａｓｉｔｕに定数ＯＫを代入し、またステップＳ２８においては、変数ｇａｓｉｔｕに定数ＮＧを代入する。この変数ｇａｓｉｔｕはステップＳ４の判定において参照される。
以上のような処理によって、五線という楽譜特有の画像から解像度および濃度を検出し、画質をチェックすることができる。また、この処理によって検出された五線の線幅および間幅は後段の五線検出時の基準データとして利用される。
【００２８】
以上、実施例を説明したが、次のような変形例も考えられる。実施例においては、画質チェック結果がＯＫか否かのみが判定される例を開示したが、例えば解像度は、低すぎる、良い、高すぎる、濃度は、薄い、良い、濃いの３段階で判別するようにしても良いし、更に段階を多くしてもよい。また、解像度、２値化しきい値の２つを統合して取り込みの適切さを判別する、即ち解像度が適切であれば、ＯＫと判定する濃度範囲をある程度広くし、解像度が適切でない場合には狭くする等の方法が考えられる。
【００２９】
判定結果を表示するようにしてもよい。ＮＧである場合には、解像度が低すぎる（画像が小さすぎる）というようなＮＧの原因となる事項を表示すれば、再読み込み時の参考になる。更に、現在よりもどの程度解像度（倍率）を上げればよいか、あるいは濃度をどの程度変更すればよいかを表示するようにしてもよい。判定結果を使用して、再読み込み時にスキャナを制御してもよい。例えば五線幅が適切な値の半分しかなかった場合には、スキャナの解像度あるいは倍率を倍に上げるようにスキャナを制御し、再読み込みを実行する。濃度に関して制御してもよい。判定結果に基づき、その後の処理を実行するか否かを決定する替わりに、チェック結果を表示して、使用者の判断を待つようにしてもよい。
【００３０】
五線全体がある程度以上傾いていると、ステップＳ９において矩形を切り出すことが困難となり、ステップＳ１０の傾き補正では補正できなくなる。従って、画質チェック処理において、ステップＳ５における五線認識を行い、任意の五線の内の一つを検出し、その縦方向のシフト量（ずれ）を計算して、シフト量の最大幅から、原稿の傾きを判別するようにしてもよい。この場合には、シフト量の最大幅をｍａｘｇａｐ、検出された五線の横方向の長さをｓｔａｆｆｌｅｎｇｔｈ  とすると、（ｍａｘｇａｐ  ×  ｋ）／ｈｅｉｇｈｔ、（ｍａｘｇａｐ  ×  ｋ）／ｓｔａｆｆｌｅｎｇｔｈ  、あるいは（ｍａｘｇａｐ  ×  ｋ）／（ｓｔａｆｆｌｅｎｇｔｈ    ×  ｈｅｉｇｈｔ）（ｋ  は適当な定数）などの値を求めて、この値が所定値以上である場合にはＮＧとしてもよい。この場合、Ｓ５の五線認識とは異なり、求める五線は１本で良いので、処理コストも低く、かつ検出結果は後段で利用可能である。
【００３１】
五線の傾きを検出する他の方法として、横軸方向の黒画素数のヒストグラムから傾きをある程度は推定可能である。傾きが全く無い場合には、ヒストグラムには五線の位置に５本のピークが現れるが、傾きが大きくなるに連れてピーク値が低くなる。また、五線間の空白部分は傾きが大きくなるに連れて縮小し、消滅する。従って、ヒストグラムにおけるピーク値や空白部の長さによって傾きを判定してもよい。
【００３２】
【発明の効果】
以上述べたように、本発明は、楽譜認識装置において、連続する白および黒画素の長さを求めて、頻度分布データを作成し、該頻度分布データから五線の線幅および間幅を求め、線幅および間幅データから入力された楽譜画像データの解像度あるいは濃度を算出するので、簡単な処理で、予め画像の状態が判別できる。従って、楽譜画像データの解像度や濃度が、認識に必要な所定の範囲から外れている場合に、該情報を表示するなどして、利用者に画像データの再取り込みを行わせることにより、時間のかかる楽譜認識処理を行った後で、画質のせいで認識率が落ちていたことが判別するといった無駄を防止でき、結果として処理時間が短縮され、認識率も向上し、効率良く楽譜認識を行う事ができるという効果がある。
【図面の簡単な説明】
【図１】本発明の楽譜認識装置の実施例の構成を示すブロック図である。
【図２】画質チェック処理における楽譜画像データの走査例およびヒストグラムを示す説明図である。
【図３】ＣＰＵ１のメイン処理を示すフローチャートである。
【図４】Ｓ３の画質チェック処理の詳細を示すフローチャートである。
【符号の説明】
１…ＣＰＵ、２…ＲＯＭ、３…ＲＡＭ、４…ハードディスク装置、５…フロッピディスク装置、６…ＣＲＴディスプレイ装置、７…ＣＲＴインターフェース回路、８…キーボード、９…キーボードインターフェース回路、１０…プリンタ、１１…プリンタインターフェース回路、１２…スキャナ、１３…スキャナインターフェース回路、１４…ＭＩＤＩインターフェース回路、１５…バス
【図１】
0003613356.tif 000002
【図２】
0003613356.tif 000003
【図３】
0003613356.tif 000004
【図４】
0003613356.tif 000005