martes, 21 de mayo de 2013

Proyecto final: Traduccion braille

Presentación

 

Reporte:

Traducción de braille.

Propósito.

Es la creación de un programa para la detección de puntos braille y posterior traducción de su lenguaje al lenguaje ascii utilizando técnicas de visión computacional.

Justificación.

Este trabajo se realizo para la ayuda de los profesores que cuentan con alumnos con problemas de visión o son ciegos y que utilizan este sistema para entregar trabajos o comunicarse por escrito.

Para darle la sencillez a los maestros de poder revisar esos trabajos sin temor a equivocarse o perjudicar al alumno que tienen estos problemas.

Además el sistema puede ser utilizado en otras áreas que no sean las educativas, también puede servir para la gente que busca entender mejor este tipo de lenguaje ya que cuenta con un amigo o familiar con problemas en la vista y así a ayudarlo a seguir adelante

Librerías utilizadas.

Las librerías necesarias para que este programa realice su funcionamiento son:
  • Python: Como lenguaje de desarllo.
  • Numpy: Para la manipulación de los arreglos de las imágenes.
  • PIL: Para la carga de las imágenes a utilizar ya sea jpg, png, etc.
    • Image: 
    • ImageDraw: Para dibujar puntos de referencia que marquen los puntos braille (como cuadros indicando el punto detectado).
  • sys: argv: Para leer parámetros desde terminal.
  • time: time: Para cronometrar el rendimiento del sistema.

Como trabaja (secuencia).
El programa trabaja de manera sencilla, primero toma la imagen y la transforma a escala de grises dándole un formato como de blanco y negro, después binariza para reforzar el formato anterior y detectar mejor los puntos, lo que sigue es detectar los puntos y marcarlos con un cuadro de color amarillo, después se realiza un tipo grid en la imagen para poder revisar cada parte por separado como la imagen siguiente:


Despues se revisa cada espacio y se manda un 1 o un 0 dependiendo de donde haya un punto marcado esto se toma de la siguiente manera:
Ahora el programa nos mandara la cadena de la letra braille segun los puntos marcados por ejemplo en la anterior imagen seria así:


1011100

El programa mandaría un 1 en posición 1, 0 en posición 2, 1 en posición 3, así hasta completar la cadena, ya al final lo único que se hace es compara con la "base de datos" y encontrar la letra que es
 
Evaluación de desempeño.

Para las pruebas se utilizo un equipo Dell Inspiron mini 1012, las especificaciones de esta computadora son:
  • Procesador: Intel Atom N450 (1667 MHz)
  • RAM: 2 GB DDR2 (667 MHz)
  • Tarjeta de video: Intel GMA 3150
  • Sistema operativo: Ubuntu 12.04

Para analizar el desempeño lo que se realizo fue ver cuanto es lo que se tardaba el programa en identificar la letra braille, lo que se encontró fue lo siguiente:

Las imágenes que se utilizaron para encontrar esto fueron las siguiente:

letra 3
letra 2

Como podemos ver en la imagen de la corrida nos muestra que la que se tardo mas en realizar el proceso fue en la letra 3, pero porque sucede esto si son el mismo tamaño y la misma resolución.

Bueno esto se debe a que en el programa revisa cada espacio del grid que se realiza, como se menciono anteriormente, y tiene que revisar si hay algo en esa posición entonces tiene que pasar por todas las condiciones para poder mandar que si hay algo en dicha posición, con esto llegamos a la conclusión que mientras mas puntos se encuentren pegados mas se va a tardar el programa en realizar este proceso. Como lo es en el caso de la letra 3 donde en la posición 4, 5, 6 tienen un punto.
 
Pruebas.

Imagen original Puntos encontrados Resultado corrida









Como se puede apreciar toma mas tiempo en realizar si los puntos se encuentran mas pegados esto es por que esta checando si esta o no.

Aquí dejo esta imagen para que vean en conjunto con las imágenes anteriores si es que la letra que se dio es la correcta.



Trabajo a futuro.
  • Mejorar la forma de detección de los puntos para poder leer un texto completo.
  • Estaría bien implementarlo a un sistema android o IOS, para que con la cámara puede realizar este proceso.

Liga git:
https://github.com/nightkrowl/Visionfinal

Referencias.
[*] Reconocimiento Automático de Texto Braille, Héctor Ferraro,  http://revista.info.unlp.edu.ar/tesinas/tesis20.pdf

[*] Capítulo 3: O.C.R. para Texto Braille, J. L. Cantón Blanco, X. Fernández Hermida, F. Martín Rodríguez, http://webs.uvigo.es/gpi-rv/ficheros/pub/reports/braille.pdf

2 comentarios:

  1. Como probablemente sabes, lo de README & INSTALL en tu repositorio requiere mejora antes de que se llegue a calificar el código. Son 8 pts por la presentación. Sería muy importante lo de trabajo futuro de recorrer un texto completo letra por letra.

    ResponderEliminar
  2. El reporte tiene detalles de ortografía y la evaluación de desempeño pudiera haber sido más sistemático/estadístico/formal. 8 pts por el reporte.

    La "liga" al Git no es una liga (uno tiene que copiarlo y pegar en el navegador para poder acceder). No convence que el archivo fuente siga llamándose "prueba". Además le falta documentación. 8 pts por el repo también.

    ResponderEliminar