読者です 読者をやめる 読者になる 読者になる

今日も学校で仕事。で、家に帰ってからは、id:hms_hermes と、色々しながら、
豊臣秀吉の朝鮮遠征から日清戦争までの歴史を教えてもらったり、
統計学について教えてもらった。

そもそも、楽譜を認識させるためには、五線譜の情報を読み出す必要があり、
それを読み出すためには、スキャンした画像を垂直に読み取り、
白と黒の中で一番頻度が大きいやつが、五線の黒の幅である。

ということなのだが、この頻度はガウス分布するはずなので、
それらの平均をとってやる方がよいかんじがした。
でも、横幅をどうやってとったらいいかわからない。

id:hms_hermes が言うには、

全体でRMSをとって、
最頻値から+-RMSの範囲でMeanを出して、
そのMeanを中心に、さっきのRMSの範囲で
もう一度RMSを出す。
この処理を収束するまで再帰させるか、
適当に2,3回すればOK.

というわけでこの方法で実装してみたら、惜しいところまではいくが・・・・。
というところ。やはり横幅が整数で、その幅が小さいところがきいてしまっている。
doubleをintでcastしてしまっているところが痛い。
でも、実用上うまくいきそうなので、この問題はチョン。

で、次にヒストグラムから画像をBitmapで返す機能を付け加えちゅうで、眠いので
今日はここまで。ぶっちゃけた話、OpenCVにHistogramクラスがあるので、
それを使えばよい気がしないでもないようなないきがするが、
OpenCVDotNetというちょっとよくわからないラッパを使っているので、
いまいちOpenCVに依存したくない。

眠い。