2012-04-10 24 views
8

Pracuję nad Androidem Project dotyczącym Optical Music Recognition. Wykonuję zdjęcie nuty za pomocą kamery mobilnej i staram się rozpoznać notatki i symbole. Jestem bardzo zaznajomiony z metodologią po wstępnym przetwarzaniu, ale tego rodzaju praca jest zwykle wykonywana za pomocą skanera. (zamiast tego muszę użyć kamery mobilnej)Wykrywanie linii na muzycznym obrazie arkusza w Androidzie

Intuicyjnie użyłem transformacji hough, aby najpierw wykryć pięciolinie (linie prętów), następnie obliczyć kąt między nimi a osią poziomą i obrócić obraz tak, jak kąt. Mogłoby to działać teoretycznie, ale pojawienie się segmentów linii i kąt tych segmentów nie są spójne. Tak więc to nie zadziałało (być może z powodu efektu perspektywy).

Potem próbowałem wielu algorytmów rozpoznawania krawędzi i liniowego, ale żaden z nich nie działał stabilnie. (w tym obracanie domeny częstotliwości i detektory segmentów linii)

Teraz mam na myśli nowe podejście podobne do skanerów dokumentów na Androida. Próbuję przekształcić mój obraz w formę, taką jak zeskanowany dokument. Chcę dopasować mój obraz do osi poziomej i pozbyć się efektu z powodu nachylenia i perspektywy.

Zastanawiam się, czy ktoś ma pojęcie o tym, jak osiągnąć to "skanowanie dokumentów". Lub jeśli masz jakieś pojęcie o wyrównywaniu dokumentu lub stabilnym wykrywaniu linii, byłoby to więcej niż pomocne dla mojej przyszłej pracy. Dziękuję Ci.

+0

[blog] (http://gaut.am/making-an-ocr-android-app-using-tesseract/) może lub nie może być pomocne –

+0

Jeśli jesteś chętny do korzystania z Javy, możesz sprawdzić http://audiveris.kenai.com/, silnik Open Optical Music Recognition (ujawnienie: od dawna byłem krótko współpracownikiem). – btown

+0

@JasonRobinson: Byłoby pomocne dla projektu OCR, ale nie dla tego, wierzę, dziękuję i tak. –

Odpowiedz

3

Można po prostu zmierzyć wysokość górnej lub dolnej pięciolinii po lewej i prawej stronie arkusza i obliczyć kąt od tego. Jedyną trudnością może być znalezienie punktu, który automatycznie zmierzy wysokość (tj. Znaleźć kolumnę, która będzie skanować pionowo dla pięciolinii). Jednym ze sposobów na to, aby był solidny, byłoby sprawdzenie 6 lub wielu kolejnych czarnych pikseli oddzielonych białymi strefami o niemal stałej szerokości. Kiedy to odkryjesz, jesteś pewien, że nie było żadnej bezpańskiej notatki lub symbolu wyrzucającego pomiar.

+0

Próbowałem bardzo podobnego podejścia, ale nie działało dla wielu przypadków z dwóch powodów. Po pierwsze, linia nie zawsze jest linią ze względu na światło, rozdzielczość itp. Druga perspektywa sprawia, że ​​zdjęcie wygląda na wyrównane, ale w rzeczywistości nie jest wyrównane. –

+0

Nie musisz znajdować rzeczywistej linii jako takiej, wystarczy wykreślić lokalne maksima (być może po średnim filtrowaniu) i sprawdzić, czy ich odstępy są regularne. Ponieważ jest tak wiele linii, powinno być dość solidne. Nie jestem do końca pewien, co masz na myśli przez kwestię perspektywy. – dvhamme

Powiązane problemy