martes, 12 de febrero de 2013

OCR-CB


En esta entrada vamos a realizar el reconocimiento de un código de barras, un código Qr, y reconocimiento de texto mediante OCR.
Para ello vamos a emplear una Web-cam que hemos adquirido en un comercio, la cual cuenta con las siguientes características:

- Resolucion Hardware de 1600x1200 real.
- Resolución fotográfica de hasta 8 Mpxls
- Frame rate: maximo 30 fps.

¿Como generar el código de barras y el Qr?

Simplemente, podemos acceder a Google y en el buscador, introducimos "generar qr o código de barras", donde nos van a aparecer muchas web para la generación de los mismos. 
Una vez que tenemos los códigos generados, los descargaremos e imprimiremos en un folio, ademas de un pequeño texto para poder realizar el reconocimiento de texto OCR.
Una vez impreso este será el resultado




Creación del algoritmo en Vision Builder

En primer lugar establecemos la Web cam que vamos a emplear, para ello seleccionamos la opción "Adquire an image from the selected IEEE".
Dentro de Main, podemos encontrar dos dispositivos, el primero que es la web cam integrada del Pc, y el segundo que es nuestra web cam externa. Tomamos la Web cam externa y configuramos el modo de vídeo  que en este caso hemos seleccionado 640x480 30fps.



En la pestaña "Attributes", podemos modificar las opciones de nuestra cámara. Como por ejemplo: regular el brillo, contraste, autofocus,...



Por último para terminar con la adquisición de imagen, podemos opcionalmente realizar una calibración de la cámara.



Inserción del paso para lectura Código de barras

A continuación en el siguiente paso, será la inserción de la lectura del código de barras. Para ello seleccionamos la pestaña Inspection Steps: Identify parts, y seleccionamos la opción Read 1D Barcode. Dentro del mismo, en la primera pestaña, establecemos el nombre, que en este caso hemos dejado "Read 1D Barcode 1".



En settings configuraremos el tipo de código de barras, en función de como lo hayamos generado antes. En nuestro caso fué un código de 128. Opcionalmente podemos modificar la puntuación mínima, que hemos dejado en 700.




Segunda adquisición de imagen y extracción RGB

Una vez hayamos terminado, hacemos click en ok, y pasaremos a insertar otra adquisición de imagen, para poder detectar el código Qr. Igual que la primera vez, seleccionaremos la camara y la configuraremos a nuestro gusto.
Una vez que hemos terminado pasaremos a realizar una extracción RGB, para ello entramos en Vision Assistant y editamos el asistente, seleccionando Edit..  Como en nuestro caso ya lo teníamos hecho, podemos ver la extracción de RGB-Red Plane 1, dentro de "Image Processiong steps".

Si hacemos click en Edit... podemos ver los pasos que hemos tomado en Vision Assistant para la extracción RGB.



Inserción paso lectura QR

A continuación pasaremos a insertar el paso para realizar la detección del código Qr. Simplemente nos dirigimos a la pestaña "Inspection Steps: Identify parts." y seleccionamos Read 2D Barcode.
Donde estableceremos el nombre del paso, el tipo de código(Qr) y el ROI, donde utilizaremos el mismo que en el código de barras.




Dentro de "Settings" podemos modificar los parámetros de nuestro Qr, así como el tipo de búsqueda que se va a realizar del mismo, etc.



Reconocimiento OCR

Una vez terminado con el Qr, pasaremos a trabajar con el OCR, es decir el reconocimiento óptico de caracteres. Para ello igual que antes, nos dirigmos a la pestaña "Inspection Steps: Identify parts" y seleccionamos la opción "Read/Verify Text"



Como siempre en Main, establecemos el nombre del paso y el ROI que vamos a usar.En este caso, hemos seleccionado uno diferente, expresamente para el reconocimiento de caracteres.



En la siguiente pestaña, Mode, es donde vamos a crear el fichero que podríamos decir que es el diccionario, es decir en esta parte es donde vamos a comenzar con el entrenamiento, para que el sistema nos reconozca los propios caracteres.
Estableceremos la ruta donde se encontrará el archivo, y hacemos click en "Edit Character Set File..."




Nos tiene que haber aparecido una nueva ventana, donde realizaremos el propio entrenamiento de caracteres, así como estableceremos la configuración de reconocimiento.
Para facilitar el proceso de entrenamiento, hemos impreso el abecedario en tamaño Arial 26.
Simplemente seleccionaremos cada letra que queramos añadir y si nos reconoce la letra correctamente, nos tiene que aparecer la misma con un cuadro rojo alrededor. Una vez que tenemos nuestra letra, introducimos la misma en el campo "Correct String" y hacemos click en Train.
Abajo podemos configurar el modo de reconocimiento(en la opción Threshold), que hemos establecido como lineal y los caracteres de oscuro a claro.



Dentro de "Edit character set File" podemos ver los caracteres que hemos insertado.



Dentro de la pestaña Read Options, como su nombre indica podemos configurar las opciones de lectura. Hemos configurado una estrategia de lectura Agresiva, alta resolución y nivel de aceptación de 650 puntos.



En "Results", podemos encontrarnos los caracteres encontrados, así como la posición,  dimensiones de cada uno y las puntuaciones.



Una vez que hemos terminado con el entrenamiento, guardaremos el archivo, que hemos llamado como "arial_26_beta.abc" y volveremos a las opciones de Read/Verify Text. Podemos observar que se nos han establecido la configuración que hemos creado en el entrenador, no obstante si queremos lo podemos volver a modificar, aunque no es muy recomendable ya que hemos insertado el abecedario en unas condiciones.



El paso posterior ha sido la inserción de un calculador lógico. El objeto de esto ha sido establecer una comparación booleana para la lectura del texto. En la imagen podemos ver la configuración establecida.


Custom Overlay

Por último y para terminar, hemos añadido el Custom Overlay, donde utilizamos unos indicadores Booleanos para que se nos confirme cuando se produce la lectura, así como texto para adornar el entorno que vamos a visualizar.




En la imagen podemos ver los elementos que hemos insertado.



Tenemos la opción de añadir en la visualización los datos reconocidos . Para ello si hacemos click en "Select Inspection data", el icono de abajo a la derecha, nos aparecerá una nueva ventana donde podemos insertar las medidas que queremos mostrar. En nuestro caso hemos añadido:
- Read 1D Barcode: ID
- Read 2D Barcode: Data
- Read Text: Character



El Resultado

Una vez hemos terminado, si hacemos "Run contínuo", y no hay texto, podemos ver como los indicadores Booleanos nos muestran que no hay ningún dato. Tampoco se muestra ningún tipo de dato de lectura.



En el momento que el Código de Barras se encuentre dentro del ROI, nos avisará el indicador booleano y ademas podemos ver la información leída en nuestra pantalla.



Si movemos el folio e introducimos el código QR dentro del ROI, de igual forma nos indicará que la lectura es correcta y que ha detectado código y ademas nos mostrará la información leida en el mismo, que en este caso es la dirección del Blog.




Por último el reconocimiento OCR, donde veremos el reconocimiento de texto, al cuadrar el mismo dentro del ROI. Se puede observar como reconoce las palabras "practica estamos".




En este vídeo podemos ver todo el proceso de reconocimiento en tiempo real.





1 comentario:

  1. Geniales explicaciones, gracias.

    Sería fantástico que hicieras un tutorial para contar coches en un vídeo, que es algo bastante buscado por google ;)

    ResponderEliminar