Linienerkennung auf einem Musiktabellenbild in Android

8

Ich arbeite an Android Project über optische Musikerkennung. Ich mache ein Foto von Noten mit einer mobilen Kamera und versuche die Noten und Symbole zu erkennen. Ich bin mit der Methodik nach der Vorverarbeitung sehr vertraut, aber diese Art von Arbeit wird normalerweise mit Hilfe von Scanner durchgeführt. (stattdessen muss ich eine mobile Kamera verwenden)

Intuitiv nutzte ich die Transformation zuerst, um Notenzeilen (Notenlinien) zu erkennen, berechnete dann den Winkel zwischen ihnen und der horizontalen Achse und rotierte das Bild genauso wie den Winkel. Dies könnte theoretisch funktionieren, findet aber Liniensegmente und der Winkel dieser Segmente ist nicht konsistent. Also hat es nicht funktioniert (vielleicht wegen der Wirkung der Perspektive)

Danach habe ich viele Kantenerkennungs- und Liniensuchalgorithmen ausprobiert, aber keiner von ihnen arbeitete stabil. (einschließlich Frequenzdomänenrotation und Liniensegmentdetektoren)

Jetzt denke ich an einen neuen Ansatz ähnlich den Dokumentenscannern auf Android. Ich versuche, mein Bild in ein Formular wie ein gescanntes Dokument zu konvertieren. Ich möchte mein Bild mit der horizontalen Achse ausrichten und den Effekt aufgrund von Neigung und Perspektive beseitigen.

Ich frage mich, ob jemand eine Vorstellung davon hat, wie man dieses "Scannen von Dokumenten" erreichen kann. Oder wenn Sie eine Idee über das Ausrichten des Dokuments oder die Erkennung einer stabilen Linie haben, wäre das für meine zukünftige Arbeit mehr als hilfreich. Danke.

    
Osman Yildiz 10.04.2012, 21:54
quelle

2 Antworten

3

Sie können einfach die Höhe der oberen oder unteren Strebe links und rechts vom Blatt messen und daraus den Winkel berechnen. Die einzige Schwierigkeit besteht darin, einen guten Punkt zu finden, um die Höhe automatisch zu messen (d. H. Zu finden, welche Spalte für den Stab vertikal abgetastet werden soll). Eine Möglichkeit, es robust zu machen, wäre, nach 6 zu suchen, oder wie viele aufeinanderfolgende schwarze Pixel durch weiße Zonen von nahezu konstanter Breite getrennt sind. Wenn Sie das finden, sind Sie sicher, dass es keine streunende Note oder kein Symbol gab, das die Messung abbricht.

    
dvhamme 11.04.2012 12:01
quelle
2

Sie sollten zuerst die Kameraverzerrungen entfernen:

Ссылка

Als nächstes können Sie nach der Art der Implementierung von openOMR den folgenden Codeabschnitt verwenden, um FFT durchzuführen, um den Winkel zu finden, um den das gesamte Bild verschoben ist:

Ссылка

    
Ben 20.06.2012 23:09
quelle