2012-04-10 11 views
8

Estoy trabajando en el proyecto de Android sobre reconocimiento de música óptica. Tomo una foto de una partitura a través de una cámara móvil y trato de reconocer las notas y los símbolos. Estoy muy familiarizado con la metodología después del preprocesamiento, pero este tipo de trabajo generalmente se realiza con la ayuda de un escáner. (en cambio tengo que usar una cámara móvil)Detección de línea en una imagen de hoja musical en Android

Intuitivamente, usé primero la transformada de hough para detectar pentagramas (líneas del pentagrama), luego calculo el ángulo entre ellos y el eje horizontal y giro la imagen tanto como el ángulo. Esto podría funcionar teoraticamente pero encuentra segmentos de linea y el angulo de estos segmentos no son consistentes. Así que no funcionó. (Tal vez por el efecto de la perspectiva)

Después de eso, probé muchos algoritmos de detección de bordes y búsqueda de líneas, pero ninguno de ellos funcionó estable. (incluida la rotación del dominio de frecuencia y los detectores del segmento de línea)

Ahora estoy pensando en un nuevo enfoque similar al de los escáneres de documentos en Android. Intento convertir mi imagen en un formulario como documento escaneado. Quiero alinear mi imagen con el eje horizontal y deshacerme del efecto debido a la inclinación y la perspectiva.

Me pregunto si alguien tiene alguna idea sobre cómo lograr este "escaneo de documentos". O si tiene alguna idea sobre cómo alinear el documento o la detección de línea estable, sería más que útil para mi trabajo futuro. Gracias.

+0

[este blog] (http://gaut.am/making-an-ocr-android-app-using-tesseract/) puede o no ser útil –

+0

Si eres dispuesto a usar Java, es posible que desee consultar http://audiveris.kenai.com/, un motor de reconocimiento óptico de música de código abierto (divulgación: hace poco tiempo fui colaborador). – btown

+0

@JasonRobinson: Sería útil para un proyecto de OCR, pero no para este creo, gracias de todos modos. –

Respuesta

3

Puede simplemente medir la altura de la barra superior o inferior a la izquierda y la derecha de la hoja, y calcular el ángulo a partir de esa. La única dificultad puede ser encontrar un buen punto para medir la altura automáticamente (es decir, encontrar qué columna escanear verticalmente para el pentagrama). Una forma de hacerlo más robusto sería verificar 6 o cuántos píxeles negros consecutivos estén separados por zonas blancas de ancho casi constante. Cuando lo encuentre, está seguro de que no hubo notas sueltas o símbolos que arrojen la medición.

+0

Intenté un enfoque muy similar, pero no funcionó en muchos casos por dos razones. Primero, una línea no siempre es una línea debido a la luz, la resolución, etc. En segundo lugar, la perspectiva hace que una foto parezca alineada, pero en realidad no está alineada. –

+0

No necesita encontrar una línea real per se, solo necesita trazar los máximos locales (quizás después del filtrado promedio) y ver si sus intervalos son regulares. Como hay tantas líneas, debería ser bastante robusto. No estoy del todo seguro de lo que quieres decir con el tema de la perspectiva. – dvhamme

Cuestiones relacionadas