Optical Music Recognition

What?

I have started a java/opencv based OMR solution as a part of my master’s thesis.

If it compiles, it is good; if it boots up detects something, it is perfect.

Currently detects:

  • Staff lines
    detected staff lines
  • Note heads
    Unified notehead bboxes

Also features a nifty JavaFX GUI!

OMR main window

How?

  • Uses some preprocessing magic to clean up the scanned the sheet music (global threshold, morphological smoothing,  scale estimation)
  • Takes a probabilistic Hough transform with some additional magic to get staff lines (Progressive Probabilistic Hough Transform, Zhang-Suen, heuristics…)
  • Pushes the entire sheet to pre-trained SVM to find note heads (linear SVM, IoU)

Gimme

Main repo at bitbucket. Build via “mvn clean install”.