2012-04-10 3 views
8

Sto lavorando ad Android Project per il riconoscimento ottico della musica. Faccio una foto di uno spartito con la fotocamera mobile e cerco di riconoscere le note e i simboli. Conosco molto bene la metodologia dopo la pre-elaborazione, ma in genere questo tipo di lavoro viene svolto con l'aiuto di uno scanner. (invece devo usare una telecamera mobile)Rilevamento della linea su un'immagine di un foglio musicale in Android

Intuitivamente, ho usato prima la trasformazione di hough per rilevare i righi (righe dello staff), quindi calcolare l'angolo tra loro e l'asse orizzontale e ruotare l'immagine tanto quanto l'angolo. Questo potrebbe funzionare teoricamente ma hough trova segmenti di linea e l'angolo di questi segmenti non è coerente. Quindi non ha funzionato. (Forse a causa dell'effetto della prospettiva)

Successivamente ho provato molti algoritmi di rilevamento dei bordi e di individuazione delle linee, ma nessuno di essi ha funzionato correttamente. (compresi i rivelatori del dominio di frequenza e del segmento di linea)

Ora sto pensando ad un nuovo approccio simile a quello degli scanner di documenti su Android. Provo a convertire la mia immagine in un modulo come un documento scansionato. Voglio allineare la mia immagine con l'asse orizzontale e sbarazzarmi dell'effetto a causa di inclinazione e prospettiva.

Mi chiedo se qualcuno ha qualche idea su come ottenere questa "scansione dei documenti". O se hai qualche idea sull'allineamento del documento o sul rilevamento di linee stabili, sarebbe più che utile per il mio lavoro futuro. Grazie.

+0

[questo blog] (http://gaut.am/making-an-ocr-android-app-using-tesseract/) può o non può essere utile –

+0

Se sei disposto ad usare Java, si consiglia di controllare http://audiveris.kenai.com/, un motore di riconoscimento musicale ottico open-source (divulgazione: sono stato brevemente un contributore, molto tempo fa). – btown

+0

@JasonRobinson: Sarebbe utile per un progetto OCR ma non per questo credo, grazie comunque. –

risposta

3

Si potrebbe semplicemente misurare l'altezza del pentagramma superiore o inferiore a sinistra e a destra del foglio e calcolare l'angolo da quello. L'unica difficoltà può essere trovare un buon punto per misurare automaticamente l'altezza (cioè trovare quale colonna scansionare verticalmente per il pentagramma). Un modo per renderlo robusto sarebbe il controllo di 6 o comunque molti ci sono pixel neri consecutivi separati da zone bianche di larghezza quasi costante. Quando lo trovi, sei certo che non ci sono note vaganti o simboli che lanciano la misurazione.

+0

Ho provato un approccio molto simile ma per molti motivi non ha funzionato per due motivi. La prima è che una linea non è sempre una linea a causa di luce, risoluzione ecc. Secondo, la prospettiva rende allineata una foto ma in realtà non è allineata. –

+0

Non è necessario trovare una linea reale di per sé, è sufficiente tracciare i massimi locali (magari dopo il filtraggio medio) e verificare se i loro intervalli sono regolari. Dato che ci sono così tante linee, dovrebbe essere abbastanza robusto. Non sono del tutto sicuro di cosa intendi con il problema della prospettiva. – dvhamme

Problemi correlati