JP3812835B2 - 楽譜認識装置 - Google Patents
楽譜認識装置 Download PDFInfo
- Publication number
- JP3812835B2 JP3812835B2 JP2003030970A JP2003030970A JP3812835B2 JP 3812835 B2 JP3812835 B2 JP 3812835B2 JP 2003030970 A JP2003030970 A JP 2003030970A JP 2003030970 A JP2003030970 A JP 2003030970A JP 3812835 B2 JP3812835 B2 JP 3812835B2
- Authority
- JP
- Japan
- Prior art keywords
- staff
- width
- run
- detected
- detection means
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V30/00—Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
- G06V30/10—Character recognition
- G06V30/30—Character recognition based on the type of data
- G06V30/304—Music notations
Landscapes
- Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Theoretical Computer Science (AREA)
- Auxiliary Devices For Music (AREA)
- Image Analysis (AREA)
- Character Discrimination (AREA)
Description
【発明の属する技術分野】
本発明は楽譜認識装置に関し、特に楽譜内の五線の位置を確実に検出するとともに五線の線幅および間隔を精度良く検出し、かつずれを修正することが可能な楽譜認識装置に関するものである。
【0002】
【従来の技術】
従来の楽譜認識装置においては、例えばスキャナによって読み込んだ楽譜画像データについて、横(X軸)方向の1走査線上にある黒画素(白い用紙に黒で五線が記載されている場合)数を計数し、これを縦(Y軸)方向に並べた頻度分布図(ヒストグラム)を求め、そのピーク値の位置から五線を検出していた。
【0003】
【発明が解決しようとする課題】
従来の楽譜認識装置の五線検出処理においては、読み込んだ画像データが走査線に対して傾いていると、頻度分布図のピークがなまって、五線位置の正確な検出ができないという問題点があった。このために、五線検出の前に、何らかの方法で画像データの傾きを検出し、画像全体を回転させて傾きを補正する必要があった。しかし、高価なフラットベッド型のスキャナの場合には画像データのずれは回転により補正可能であるが、安価なハンディスキャナの場合には部分的な上下のずれが生じ、このずれは回転しても補正できないという問題点があった。本発明の目的は、前記のような従来技術の問題点を解決し、上下のずれのある楽譜画像データからでも五線を確実に検出するとともに五線の線幅および間隔を精度良く検出し、かつずれの補正を行うことが可能な楽譜認識装置を提供することにある。
【0004】
【課題を解決するための手段】
本発明は、入力された楽譜画像データから各種記号を認識する楽譜認識装置において、楽譜画像データを五線と直角方向に走査し、黒画素および白画素のラン幅を順に検出するラン幅検出手段と、ラン幅検出手段によって検出された黒画素および白画素のラン幅がそれぞれ、黒画素の基準ラン幅および白画素の基準ラン幅に対してそれぞれ第1の所定の誤差内および第2の所定の誤差内で一致して五線状に並んでいることを検出するとともに、白画素の基準ラン幅に対して第2の所定の誤差内で一致するラン幅より大きい所定のラン幅を超えるラン幅の白画素のランが存在することを検出して五線位置とする検出手段と、検出手段により検出された五線位置で、五線の線幅および間隔を検出する線幅・間隔検出手段とを備えたことを特徴とする。また、上記構成に加えて、五線位置とされた位置に含まれる複数の座標点を始点として、五線と並行方向に隣接する座標点の画素を順に走査し、五線上であることを示す画素の割合が所定値以下になった場合には、割合が最大となるように座標点を上あるいは下にシフトさせると共に、シフト量を記録するシフト量検出手段と、前記シフト量に基づき、楽譜画像データを修正する傾き補正手段とを含むことを特徴とする。
【0005】
本発明はこのような構成により、例えば、ハンディスキャナで楽譜画像データを取り込み、楽譜画像データの一部が上下にずれているような場合であっても、確実に五線位置を検出するとともに五線の線幅および間隔を精度良く検出することが可能となる。また五線の各部において上下へのシフト量を検出し、該シフト量に基づき楽譜画像データを修正するので、ハンディスキャナによる部分的な上下のずれを含む楽譜画像データを正確に修正することができる。
【0006】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して詳細に説明する。図1は本発明の楽譜認識装置の一実施例の構成を示すブロック図である。この装置は、パソコン等の一般的な計算機システムにスキャナやMIDIインターフェース回路を付加したものである。CPU1は、ROM2あるいはRAM3に格納されるプログラムに基づき、楽譜認識装置全体の制御を行う中央処理装置である。また、予め設定された所定の周期でCPU1に割り込みをかけるタイマ回路を内蔵している。RAM3はプログラムエリアの他、画像データバッファ、ワークエリア等として使用される。ハードディスク装置HDD4およびフロッピディスク装置FDD5は、プログラムおよび画像データ、演奏データ等を格納する。CRT6はCPU1の制御に基づき、CRTインターフェース回路7から出力される映像情報を表示し、キーボード8から入力された情報は、キーボードインターフェース回路9を経てCPU1に取り込まれる。プリンタ10は、CPU1の制御に基づき、プリンタインターフェース回路11から出力される印字情報を印字する。
【0007】
スキャナ12は、例えば(印刷された)楽譜を光学的に走査して、2値あるいはグレイスケールの画像データに変換するものであり、フラットベッド型、ハンディ型、フィーダー型等任意のタイプのスキャナを使用できる。スキャナ12によって読み取られた画像情報は、スキャナインターフェース回路13を介して、RAM3あるいはHDD4に取り込まれる。MIDIインターフェース回路14は、音源モジュール等の外部のMIDI機器との間でMIDIデータの送受信を行う回路である。バス15は楽譜認識装置内の各回路を接続している。なお、この他にマウス等のポインティングデバイス、RS232C等のシリアルインターフェース回路等を備えていてもよい。
【0008】
図3は、CPU1のメイン処理を示すフローチャートである。ステップS1においては、スキャナ12によって楽譜の画像をRAM3に取り込む。画像は2値の画像として取り込む。ステップS2においては、かすれやドットノイズなどを軽減するために、図形融合などの画質平滑化処理を行う。ステップS3においては、画質チェック処理を行う。該処理においては、倍率と濃度の情報を得ると共に、後段における五線検出の基準データを得るために、まず五線の線幅と五線の各線間の間幅を検出する。そして、画像データの倍率は、例えば間幅から推定可能であり、また、濃度は線幅と間幅の比から推定することができる。従って、ステップS3においては、これらの値が、所定の範囲内に入っているか否かがチェックされる。ステップS4においては、ステップS3におけるチェック結果が画質OKであるか否かが判定され、結果がOKでない場合にはステップS1に戻って、倍率や濃度を変えて再取り込みを行う。
【0009】
ステップS5においては、後述する五線認識を行う。五線認識処理においては、五線走査開始位置検出処理と五線シフト量の検出処理が行われる。ステップS6においては、段落認識処理を行う。この処理は、大きく、段落認識処理及び大かっこ認識処理に分かれる。段落認識処理においては、画像全体で五線を検出し、五線同士で左端がほぼ同じ場所にある五線の組を探し、五線の端同士が黒画素で結ばれているかどうかを検査し、段落を認識する。段落を囲む矩形が左右に並んでいた場合には、これも時系列になるように処理を行う。なお、予め、x軸、y軸方向に黒画素のヒストグラムを取り、これの空白部分を検出することによって段落の存在を推定しても良い。
【0010】
五線同士が大かっこで結ばれていた場合には、五線同士にまたがる音符等が存在する場合があるので、大かっこで結ばれた五線は1つの単位で処理を行った方が良い。大かっこ認識においては、段落線の左の所定の範囲で、後述する定型記号認識と同様の手法で認識を行う。なお、この認識においては、大かっこおよび大弧線が認識できれば良い。
【0011】
ステップS7においては、段落の認識結果を表示して、段落認識結果が正しいか否かを利用者にチェックさせることにより、OKか否かが判定され、結果がOKでない場合にはステップS8に移行して、段落認識結果の修正が行われる。スコア譜においては、各段落のパート構成が等しいものの他に、途中でパートの省略や追加があったり、同じパートで単独譜表と大譜表が段落ごとに変化する場合もある。このようなパートの対応は、大かっこの対比等で行うが、パートの対応が一意に決められない場合もあるので、予め段落認識結果の修正を行えるようにする。
【0012】
なお、五線認識が失敗した場合には、その後の処理が行えないので、倍率や濃度を変更して再度画像を取り込む必要がある。従って、ステップS7においては、まず五線の認識結果を表示し、正しいか否かを利用者に判定させ、もし正しくない場合には、S1に戻って画像の再取り込みを行い、また五線が正しく認識されている場合には、段落認識結果を表示し、チェックさせるようにしてもよい。
【0013】
ステップS9においては、処理矩形の決定処理が行われる。求められた五線、(大譜表の場合には、譜表中の五線)を含む、ある程度広い矩形を採り、これを認識処理矩形とする。矩形の大きさは、その五線に関係する音楽記号が存在する最大領域以上で、かつ五線傾き補正により、必要な記号が消えない様な大きさにする。これ以降の認識はこの矩形内で行う。
【0014】
ステップS10においては、後述する五線傾き補正処理を行う。概略を述べると、先に求めた五線シフト量に基づいて矩形画像の列ごとに画素列を上下にシフトする。なお、五線ごとにシフト量を計算し、矩形画像内でシフト補正を行った方がより正確であるが、シフト量は、取り込み画像全体で1つ計算し、画像全体をシフトしても良い。この後、矩形の上下端に接した図形ラベル(独立した黒画素領域)は上下のパートの構成要素として削除する。最後に、上下端の空白部分を検出して、矩形を縮小する。
【0015】
ステップS11〜S15においては、各種記号の認識処理が行われる。楽譜記号は、形、位置に関して大まかに以下の3つの種類がある。(1)定型で、上下位置がほぼ決まっているもの(音部記号、拍子記号等)。(2)定型で、上下位置は自由度があるもの(臨時記号、休符等)。(3)不定型かつ位置も不定のもの(音符、スラー、タイ等)。これらをそれぞれに適した方式で、音部記号、拍子認識、音符認識、定型記号認識、文字列認識、スラー、タイ認識の順に認識する。
【0016】
音部記号、拍子認識を最初に行うのは、処理コストの低い認識を最初に行って、この記号を削除することによって、後の認識の処理コストを軽減するためと、最初により確実なものを認識することで、後の認識での誤認識を減らすためである。また、音符認識の後に定型記号認識を行うのは、ラベルの接触に影響されにくい認識方式である音符認識を行って、この音符を削除することで、音符に接触した臨時記号等の認識を可能にするためである。スラー、タイ認識が最後になっているのは、処理コストの高いスラー認識の対象になるラベルをなるべく少なくするためである。また、先に検出された音符の周りのラベルだけをスラー、タイ認識の対象にすることによって、更にスラー、タイ認識の処理コストを下げ、かつ、スラー、タイの誤認識も減らすことができる。
【0017】
ステップS11においては、五線に対して定位置にある記号として、音部記号と拍子記号を認識する。該処理においては、まず、求められた五線を含む矩形領域で縦に黒画素のヒストグラムを取っていき、黒画素量があるしきい値以上の帯域を、記号が存在する可能性のある場所としてマッチングの対象とする。マッチングは、五線間の数箇所について横方向のペリフェラル特徴によって行う。ペリフェラル特徴とは、マッチング対象となる記号のみを含む矩形領域において、左右端から五線間の数箇所の白画素領域を内方向に走査し、黒画素領域に達するまでの距離を1次(最初)あるいは数次(2回目以降)まで求めたものである。また、マッチングに失敗した場合には、隣接した帯域を併合して再度認識を行う。そして、認識された記号は画像データから削除する。
【0018】
ステップS12においては音符認識を行う。まず、矩形領域を横に走査して、所定の長さ以下の黒ランを検出し、分離する。分離された画像データは、横が細い部分であるので、ここから符尾や小節線の候補になる縦線を検出する。次に、縦に所定の長さ以下の黒ランを検出し分離する。分離された画像データは細い横線を構成する部分なので、ここから加線(五線からはみ出した音符を記載するために付加した横線)やクレッシェンドなどの候補になる横線を検出する。最後に、元の画像データから検出された縦横の細ランを消せば、画像中の太い部分(以下太ラベル)が抽出できる。楽譜の場合、4分音符より短い音符の符頭(以下黒玉符頭)や連鉤(複数の音符をつなぐ帯)が分離できる。
【0019】
黒玉符頭は、太ラベルの境界線についての座標チェーンデータを求め、この座標データから公知の方法により楕円式を計算し、この形や太ラベルとのマッチング度をとって認識する。和音への対応として、まず横方向に並んだ和音を認識するために、符尾候補の縦線により太ラベルを切断する。また縦方向の和音への対応は、太ラベルのくぼみを検出し、左右のくぼみ同士の組を作って、これを結ぶ線で太ラベルを切断する。画像がつぶれている場合など、くぼみが1つ、あるいは全く見つからなかった場合には、くぼみの位置を推定する。
【0020】
2分音符、全音符の符頭(以下白抜き符頭)は、画像の穴の座標チェーンから楕円式を計算する。音符が線上にあるものに対しては、2つの座標チェーンを結合したものから楕円式を計算する。なお、楕円式を計算して認識する代わりに、ペリフェラル特徴等で認識しても良いし、和音対策のために太ラベルを切断せずに、そのままの太ラベルを辞書に持っておいても良い。
【0021】
最後に、先に求めた符尾候補と結合して音符を検出する。連鉤は、これまでに求められた旗を考えない音符の符尾の周辺に存在する太ラベルを検出し、これの形状から連鉤の本数を計算する。また、この連鉤に連結している他の音符も検出する。連結する他の音符が無い場合には単独の旗を持つ音符と考える。連鉤の本数により、音符の情報を変更する。この後、分離した横線を使って音の高さ(加線)やクレッシェンド、横線と縦線を使ってくり返しかっこ等を認識する。残った縦線から小節線を認識する。そして、認識された記号は画像から削除する。
【0022】
ステップS13においては、定型記号認識が行われる。この処理においては、まず、公知の輪郭線荷重方向指数を取り、辞書の各記号データについてラベルのサイズと荷重方向指数のマッチング度を計算して、各マッチング度を正規化し、統合した結果が最も高い記号を出力する。なお、サイズと荷重方向指数の他に、ペリフェラルなどの他の特徴を使っても良い。また、五線消去によりラベルが切れたものの対策として、五線消去によって切れたラベルを辞書に登録し、この記号であると認識された場合には、その周りのラベルを結合して再認識する。認識された記号は画像から削除する。
【0023】
ステップS14においては、文字列認識を行う。速度記号などの文字列を認識するために、定型記号認識で認識されたアルファベットその他の記号を使い、その記号を囲む矩形が文字列状に並んでいるものを抽出し、これと文字列辞書のマッチングをとることで、文字列状の記号を、それぞれの構成文字が多少間違っていても認識できるようにする。
【0024】
ステップS15においては、スラータイ認識を行う。この処理においては、残ったラベルのうち、検出された音符の周りのラベルに関して、これを細線化し、これを多円弧近似する。そして、以前に消された記号により線が切れている場合があるので、求められた多円弧同士の連結を行う。最後に、求められた円弧の形や元画像の図の太さ、音符との関係などからスラー、タイを認識する。これが認識で最後のルーチンなので、認識された記号は画像から削除しなくても良いが、認識したスラー、タイを削除し、この後で再度定型記号認識を行うようにすれば、スラー、タイと接触した記号を認識することができるようになる。
【0025】
ステップS16においては、例えば認識結果に基づき、楽譜画像データを合成して表示し、正しいか否かを利用者にチェックさせることにより、OKか否かが判定され、結果がOKでない場合にはステップS17に移行して、マウス、キーボード等を用いて、手動により認識結果の修正が行われる。ステップS18においては、演奏データ作成処理が行われる。該処理においては、認識した各種の記号や音符情報に基づき、例えば公知の演奏データ形式であるMIDIファイルデータを生成する。
【0026】
図6は、図3のステップS3〜S5の処理を詳細に示すフローチャートである。ステップS90においては、倍率と濃度の情報を得ると共に、後段における五線検出の基準データを得るために、まず五線の線幅と五線の各線間の間幅を検出する。線幅、間幅を求めるためには、まず、画像上の横(x)方向の数箇所において縦(y)方向に走査し、黒ラン(連続する黒画素)と白ランの長さを全て求めて、長さ毎に頻度分布(ヒストグラム)データを作成する。楽譜上で最も多い記号は五線であるので、作成された黒ラン長ヒストグラムと、白ラン長ヒストグラムのピークを検出することで、五線の線幅、間幅が推定できる。
【0027】
ステップS91においては、画質のチェックを行う。画像データの倍率は、例えば間幅から推定可能であり、また、濃度は線幅と間幅の比から推定することができる。楽譜の認識処理においては、倍率および濃度が所定の範囲から外れると認識率が低下してしまうので、ステップS91においては、これらの値が、所定の範囲内に入っているか否かがチェックされる。ステップS92においては、ステップS91におけるチェック結果が画質OKであるか否かが判定され、結果がOKでない場合にはステップS93に移行して、倍率あるいは濃度が不適当であることを表示し、ステップS1に戻って、倍率や濃度を自動であるいは手動により変更して再取り込みを行う。
【0028】
ステップS94においては、五線検出時の誤差レベルの初期値として、変数level に0を設定し、ステップS95においては、後述する五線走査開始位置検出処理が行われる。図2は、五線走査開始位置の検出動作を示す説明図である。図2を参照して、該処理の概略を述べると、x軸方向の例えば中点位置で、y軸方向に黒画素と白画素のラン幅を順に求め、求められた線幅と間幅が、図2右側に示すように五線状に並んでいる位置を、ある程度の誤差を考慮して検出する。そして、加線の影響を除くために、五線状の並びの両側に間幅より大きな白画素幅があるという条件を加える。この条件に合う白黒画素の並びがあるx位置の各黒ランの中点を五線走査開始位置とする。音符等が存在するために、下端まで走査しても五線が検出されない場合には、x座標を左右にシフトして検出動作を繰り返す。
【0029】
ステップS96においては、後述する五線シフト量検出処理が行われる。図8は、五線シフト量検出動作を示す説明図である。図8を参照して、該処理の概略を述べると、求められたx位置の五線走査開始位置(5点の黒画素位置)から、1ドットずつ位置を右および左に変えて、黒画素数の合計をチェックしていく。そして、5点の内、黒画素がある個数(例えば3あるいは4個)以下になった場合(図8においてはx座標がx+n+1の位置で黒画素が0個になっている)には、5点を上下にずらして黒画素数をチェックし、y座標を黒画素の割合が高くなる方向へシフトする(図8においては、5点を下にシフトする)。そして開始位置からのシフト量を五線のシフト量とする。五線走査開始位置から左右に、黒画素個数が0になる位置まで走査することにより五線の検出を行う。
【0030】
図4、5は、図6のステップS95の五線走査開始位置検出処理を示すフローチャートである。ステップS20においては、五線検出を行うx座標を示す変数xに矩形のx座標の中点の値(xstart)をセットし、またy軸方向の走査の向きを示す変数xflag に定数XPLUS (例えば1)をセットする。またその他の変数も初期化する。ステップS21においては、画素パターンのポインタである変数ptr に0を、直前(上)の画素値を表す変数cpに定数BACKGROUND(例えば0:白)を、現在の画素のラン長を示すlengthに定数THR3(例えば間幅の2倍)に1を加算した値をセットする。ステップS22においては、五線検出を行うy座標の初期値として、図2に示すように矩形上端の値(0)をセットする。
【0031】
ステップS23においては、座標(x,y)の画素値を変数cにセットする。ステップS24においては、cと上の画素値cpとが等しいか否か、即ち色の変化が無いか否かが判定され、結果が肯定の場合にはステップS25に移行して、変数lengthに1を加算し、ステップS28に移行する。しかし判定結果が否定の場合にはステップS26に移行し、後述するラン状態のチェック処理が行われる。ステップS27においては、チェックの結果、五線が検出されたか否かが判定され、結果が肯定の場合には図5のステップS42に移行するが、否定の場合にはステップS28に移行する。ステップS28においては、変数yが矩形の下端まで達したか否かが判定され、結果が否定の場合にはステップS29においてyに1が加算され、ステップS23に戻って処理を繰り返すが、肯定の場合にはステップS30に移行する。
【0032】
ステップS30〜35の処理は、矩形の下端あるいはその近傍に五線が存在した場合においても、五線を確実に検出するための処理である。ステップS30においては、cの値が定数FOREGROUND(例えば1:黒)であるか否かが判定され、結果が肯定の場合にはステップS31のラン状態のチェック処理に移行する。ステップS31においては、所定範囲内の黒ラン長が存在した場合には、後述する処理により、画素パターンのポインタptr が1だけ歩進する。ステップS32においては、五線が検出されたか否かが判定され、結果が否定の場合にはステップS33に移行する。ステップS33においては、cpにBACKGROUNDをセットし、lengthに定数THR3に1を加算した値をセットする。これは、矩形の下端より下に広い白領域が存在するものと仮定して五線検出を試みるためである。ステップS34においては、再度ラン状態のチェック処理が行われ、ステップS35においては、五線が検出されたか否かが判定され、結果が肯定の場合には図5のステップS42に移行するが、否定の場合にはステップS36に移行する。
【0033】
ステップS36〜41は、下端まで走査しても五線が検出されなかった場合に、五線検出を行うx座標を左右に移動する処理を行う。ステップS36においては、xflag がXPLUS と等しいか否かが判定され、結果が肯定の場合には、ステップS37でxに1を加算し、ステップS38に移行する。ステップS38においては、xの値が矩形の右端より大きいか否かが判定され、結果が肯定の場合にはステップS39に移行して、xflag に定数XMINUS(例えば0)を、xに(xstart−1)をセットし、ステップS21に戻る。ステップS36において判定結果が否定の場合には、ステップS40に移行してxから1を減算し、ステップS41においては、xが矩形の左端より小さいか否かが判定され、結果が否定の場合にはステップS21に戻るが、肯定の場合には、xを左右に移動しても五線が検出されなかったので、図5のステップS48に移行する。
【0034】
図5に移行して、ラン状態のチェックにより、五線が検出された場合に移行するステップS42においては、検出された五線の上端と矩形画像の上端とのy幅が定数THR4より大きいか否かが判定され、結果が肯定の場合にはステップS43に移行する。なお、THR4は、五線が検出された後、残りの矩形中に更に五線を検出できるほどの縦方向の隙間があるかどうかを判別するためのしきい値であり、例えば五線全体の幅(height = thick×4 + blank ×4 )の2倍程度の値としてもよい。
【0035】
ステップS43においては、五線検出を行う矩形を五線より上の部分に縮小し、ステップS44においては、図4、5に示す五線走査位置検出処理を再帰的に呼び出す。従って、ステップS44においては、ステップS43において縮小された矩形領域において五線検出処理を行うことになり、この処理の中で更に再帰呼び出しが行われる可能性もある。ステップS45においては、検出された五線と矩形画像の下端とのy幅がTHR4より大きいか否かが判定され、結果が肯定の場合にはステップS46に移行する。ステップS46においては、五線検出を行う矩形を五線より下の部分に縮小し、ステップS47においては、五線走査位置検出処理を再帰的に呼び出す。以上のような再帰呼び出し処理により、全ての五線が検出される。
【0036】
x座標を左右に移動して走査しても五線が検出されなかった場合には、図4のステップS41から図5のステップS48に移行する。ステップS48においては、線幅や間幅を検出する際の誤差のレベルを示す変数level が0(誤差が小さい)であるか否かが判定され、結果が肯定の場合にはステップS49に移行し、level を1にセットする。そして、ステップS50において、再帰的に五線走査開始位置検出処理を呼び出し、大きな誤差まで許容する五線検出を行う。
また、この五線検出後に、求められた五線位置で、線幅および間幅とを再計算(例えば五線全体の幅から間幅を求める)することにより、後の認識でのしきい値の基準となる五線の線幅および間幅の精度を上げる。
【0037】
図7は、図4のステップS26他のラン状態のチェック処理を示すフローチャートである。ステップS60においては、CPがFOREGROUND、即ち黒画素であるか否かが判定され、結果が肯定の場合にはステップS61に移行する。ステップS61においては、lengthと五線の線幅thick との差の絶対値を変数error にセットする。ステップS62においては、error 値が現在のlevel 値によって参照される定数THR1(level) 以下であるか否かが判定され、結果が肯定の場合にはステップS63に移行し、変数kindに線を意味する定数LIN がセットされる。しかし、結果が否定の場合にはステップS64に移行し、変数kindに五線以外の領域を意味する定数ELS がセットされる。
【0038】
ステップS60における判定結果が否定の場合にはステップS65に移行する。ステップS65においては、lengthと五線の間幅blank との差の絶対値を変数error にセットする。ステップS66においては、error 値が現在のlevel 値によって参照される定数THR2(level) 以下であるか否かが判定され、結果が肯定の場合にはステップS67に移行し、変数kindに線間を意味する定数SPC がセットされる。しかし、結果が否定の場合にはステップS68に移行する。
ステップS68においては、lengthが定数THR3より大きいか否かが判定され、結果が肯定の場合にはステップS69に移行して、変数kindに長い白ランを意味する定数LNG がセットされる。しかし、結果が否定の場合にはステップS70に移行し、変数kindに五線以外の領域を意味する定数ELS がセットされる。なお、定数THR1(level) 、THR2(level) 、THR3の値は例えば、THR1(0)=THR2(0)=thick 、THR1(1)=THR2(1)=thick ×2、THR3=blank×2であってもよい。
【0039】
ステップS71においては、kindがELS であるか否かが判定され、結果が肯定の場合には五線以外の領域であるので、ステップS78に移行してポインタptr を0にセットし、ステップS79に移行する。ステップS72においては、kindと、ポインタptr によって参照されるデータアレイstaffarray(ptr) の値とが等しくないか否かが判定され、結果が肯定の場合にはステップS78に移行するが、否定の場合にはステップS73に移行する。staffarray(ptr) は、五線走査開始位置になる白ラン、黒ランの並びを検出するための辞書配列であり、staffArray(11) = (LNG,LIN,SPC,LIN,SPC,LIN,SPC,LIN,SPC,LIN,LNG)のようなデータ配列を取る。なお、LNG は充分広い白ラン、LIN は線と考えられる黒ラン、SPC は線間と考えられる白ランに対応する。
【0040】
ステップS73においては、kindがLIN に等しいか否かが判定され、結果が肯定の場合にはステップS74に移行し、五線位置(直前の黒画素ランの中点座標)を仮の五線位置バッファに格納する。ステップS75においては、ポインタptr に1を加算し、ステップS76においては、ptr が11になったか否かが判定される。そして、結果が肯定の場合には、ステップS77に移行し、五線検出フラグdetectを1にセットするが、否定の場合にはステップS79に移行する。ステップS79においては、lengthを0にセットし、cの画素値をcpにセットする。ステップS80においては、detectを0にセットする。図2右側に示すような五線を走査した場合には、画素の色が変化する度に図7に示すラン状態のチェック処理が呼び出され、各画素のラン状態がstaffarray(ptr) と一致するので、ptr がカウントアップし、11に達すると五線が検出されたものと判断される。
【0041】
本発明では、後の認識でのしきい値の基準となる五線の線幅および間幅の精度を上げるために、五線検出後に、求められた五線位置で、線幅および間幅とを再計算(例えば五線全体の幅から間幅を求める)している。
以上、実施例を説明したが、次のような変形例も考えられる。五線シフト量の検出処理においては、5点のうちの、黒画素である点の割り合いをチェックしているが、それぞれの点の上下近傍に黒画素が存在する点の割り合いを求めるようにしてもよい。
【0042】
実施例においては、完全な五線のパターンを検出したときのみ、五線検出と判断する例を開示したが、例えば五線の配列の内の3本(LIN,SPC,LIN,SPC,LIN )以上の線の配列によって五線があると判断し、上下の広い余白の間の距離が五線幅と一致した場合には加線や記号が無いと判断できるので、これから五線を検出してもよい。五線のシフト量の検出処理の始点としては、各黒ランの中点とする例を開示したが、偶然に、始点の線幅が太くあるいは細くなっていた場合には始点座標が不適切な位置になってしまう。従って、検出した五線幅の中を線幅および間幅データに基づいて均等に分割した点を始点としてもよい。
【0043】
【発明の効果】
以上述べたように、本発明は、ハンディスキャナで楽譜画像データを取り込み、楽譜画像データの一部が上下にずれて、五線の傾きが直線状でない場合であっても、またかすれやつぶれがあっても確実に五線位置を検出するとともに五線の線幅および間隔を精度良く検出することが可能となるという効果がある。更に、五線の各部において上下へのシフト量を検出し、該シフト量に基づき画像データを修正するので、ハンディスキャナによる上下のずれを含む画像データを正確に修正することができるという効果がある。
【図面の簡単な説明】
【図1】本発明の楽譜認識装置の実施例の構成を示すブロック図である。
【図2】五線走査開始位置の検出動作を示す説明図である。
【図3】CPU1のメイン処理を示すフローチャートである。
【図4】五線走査開始位置検出処理を示すフローチャート(1)である。
【図5】五線走査開始位置検出処理を示すフローチャート(2)である。
【図6】図3のS3〜S5の処理を詳細に示すフローチャートである。
【図7】S26のラン状態のチェック処理を示すフローチャートである。
【図8】五線シフト量検出動作を示す説明図である。
【符号の説明】
1…CPU、2…ROM、3…RAM、4…ハードディスク装置、5…フロッピディスク装置、6…CRTディスプレイ装置、7…CRTインターフェース回路、8…キーボード、9…キーボードインターフェース回路、10…プリンタ、11…プリンタインターフェース回路、12…スキャナ、13…スキャナインターフェース回路、14…MIDIインターフェース回路、15…バス
Claims (4)
- 入力された楽譜画像データから各種記号を認識する楽譜認識装置において、
前記楽譜画像データを五線と直角方向に走査し、黒画素および白画素のラン幅を順に検出するラン幅検出手段と、
前記ラン幅検出手段によって検出された黒画素および白画素のラン幅がそれぞれ、黒画素の基準ラン幅および白画素の基準ラン幅に対してそれぞれ第1の所定の誤差内および第2の所定の誤差内で一致して五線状に並んでいることを検出するとともに、前記白画素の基準ラン幅に対して前記第2の所定の誤差内で一致するラン幅より大きい所定のラン幅を超えるラン幅の白画素のランが存在することを検出して五線位置とする検出手段と、
前記検出手段により検出された五線位置で、五線の線幅および間隔を検出する線幅・間隔検出手段とを備えることを特徴とする楽譜認識装置。 - 更に、前記五線位置とされた位置に含まれる複数の座標点を始点として、五線と並行方向に隣接する座標点の画素を順に走査し、五線上であることを示す黒画素の割合が所定値以下になった場合には、割合が最大となるように前記座標点を上あるいは下にシフトさせると共に、シフト量を記録するシフト量検出手段と、
前記シフト量に基づき、前記楽譜画像データを修正する傾き補正手段とを含むことを特徴とする請求項1に記載の楽譜認識装置。 - 前記シフト量検出手段は、前記五線位置における五線幅の中を線幅および間隔に基づいて均等に分割した複数の座標点を始点とすることを特徴とする請求項2に記載の楽譜認識装置。
- 前記検出手段は、前記五線位置とされた位置が検出されなかった場合には、前記第1の所定の誤差および前記第2の所定の誤差の値を大きくして再度検出を試みることを特徴とする請求項1に記載の楽譜認識装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003030970A JP3812835B2 (ja) | 2003-02-07 | 2003-02-07 | 楽譜認識装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003030970A JP3812835B2 (ja) | 2003-02-07 | 2003-02-07 | 楽譜認識装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27513495A Division JP3411736B2 (ja) | 1995-09-29 | 1995-09-29 | 楽譜認識装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003203199A JP2003203199A (ja) | 2003-07-18 |
JP3812835B2 true JP3812835B2 (ja) | 2006-08-23 |
Family
ID=27656190
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003030970A Expired - Fee Related JP3812835B2 (ja) | 2003-02-07 | 2003-02-07 | 楽譜認識装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3812835B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106558282A (zh) * | 2017-02-09 | 2017-04-05 | 广州动创信息科技有限公司 | 一种带有浏览量统计的商场广告机 |
-
2003
- 2003-02-07 JP JP2003030970A patent/JP3812835B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106558282A (zh) * | 2017-02-09 | 2017-04-05 | 广州动创信息科技有限公司 | 一种带有浏览量统计的商场广告机 |
Also Published As
Publication number | Publication date |
---|---|
JP2003203199A (ja) | 2003-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5154886B2 (ja) | 楽譜認識装置及びコンピュータプログラム | |
JP5030144B2 (ja) | 楽譜認識装置およびプログラム | |
JP2761467B2 (ja) | 画像切り出し装置及び文字認識装置 | |
US6947596B2 (en) | Character recognition method, program and recording medium | |
JP2003242438A (ja) | 楽譜認識装置 | |
JP3608674B2 (ja) | 楽譜認識装置 | |
JP3812835B2 (ja) | 楽譜認識装置 | |
JP3812836B2 (ja) | 楽譜認識装置 | |
JP3445039B2 (ja) | 楽譜認識装置 | |
JP3709991B2 (ja) | 楽譜認識装置 | |
US6046394A (en) | Music score recognizing method and computer-readable recording medium storing music score recognizing program | |
JP3411736B2 (ja) | 楽譜認識装置 | |
JP3613356B2 (ja) | 楽譜認識装置 | |
JP2002077566A (ja) | 画像補正装置 | |
JP5770445B2 (ja) | 楽譜認識装置及びコンピュータプログラム | |
US6580805B1 (en) | Method and recognizing music and computer-readable recording medium having music-recognizing program recorded therein | |
JP4070486B2 (ja) | 画像処理装置、画像処理方法及び同方法の実行に用いるプログラム | |
JP3558834B2 (ja) | 楽譜認識方法及び楽譜認識プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP5248074B2 (ja) | 楽譜認識装置、楽譜認識方法、及びコンピュータプログラム | |
JP4329226B2 (ja) | 基準マーク検出方法、基準マーク検出装置及び光学式文字読取装置 | |
JP3597354B2 (ja) | 楽譜認識方法及び楽譜認識プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
JP5116073B2 (ja) | 楽譜認識装置およびプログラム | |
JPH11250179A (ja) | 文字認識装置および文字認識方法 | |
JPH07160814A (ja) | 光学式文字認識方法 | |
JPH1040334A (ja) | パターン抽出装置及びパターン領域の切り出し方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060518 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060524 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060525 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100609 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100609 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110609 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120609 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130609 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |