INDICE

INDICE. 2

1.     Introducción. 3

Motivación. 3

Descripción del problema. 3

2.     Desarrollo. 3

Descripción del programa. 3

Adquisición de la imagen. 4

Detección de contornos rectangulares. 4

Identificación de contornos rectangulares. 5

Homografía. 6

Reconocimiento de caracteres. 7

3.     Pruebas y resultados. 9

Algoritmo de detección de contornos rectangulares. 9

Algoritmo de reconocimiento de patrones. 9

 

1.   Introducción

Motivación

La visión por computador es una herramienta de gran utilidad para el control automático y la robótica. Una de las aplicaciones de la visión por computador es el reconocimiento de caracteres, que se puede utilizar para la identificación de matrículas o el procesamiento de documentos escaneados.

En este trabajo se plantea el problema de la identificación de grupos de caracteres numéricos en imágenes tomadas de un vídeo.

Descripción del problema

Se trata de identificar un conjunto de caracteres numéricos de color negro y de unas proporciones determinadas dispuestos sobre un rectángulo blanco. La imagen se toma con una cámara cuya posición y orientación no están relacionadas con el objeto que se desea identificar. Además se desea que este algoritmo sea robusto frente a cambios en la iluminación. Para resolver este problema se plantean los siguientes pasos:

-         Localización del contorno rectangular en la imagen.

-         Homografía de la imagen, considerando el tamaño y la orientación del contorno rectangular.

-          Reconocimiento de los caracteres.

2.   Desarrollo

Descripción del programa

La arquitectura software del programa está formada por dos clases, visión y reconocedor y un bucle principal llamado calisto. En la clase visión se definen los algoritmos de reconocimiento de contornos rectangulares y la homografía. En la clase reconocedor se define el algoritmo de reconocimiento de caracteres, que consulta una base de datos donde se han definido los caracteres.

Figura 1. Diagrama de clases

 

Adquisición de la imagen

Para la captura de la imagen se ha utilizado la interfaz video4linux y las librerías de visión OpenCV. Esta interfaz homogeniza el acceso a las imágenes con independencia de la cámara que se utilice. En esta aplicación se ha utilizado la cámara webcam Logitech Quickcam for Notebooks,  cuya resolución es 640x480 y toma video VGA a 15 frames por segundo.

Detección de contornos rectangulares

La detección de contornos se realiza mediante la aplicación del filtro de Canny a la imagen tomada y transformada a escala de grises.

El filtro de Canny es un algoritmo de detección de contornos que optimiza una serie de condiciones para que, al convolucionar el filtro de Canny con la imagen se produzca un máximo local donde existe un contorno, eliminando el efecto ruido. Dichas condiciones son:

-         Error: se deben detectar todos y sólo los contornos.

-         Localización: la distancia entre el píxel señalado como contorno y el contorno real debe ser tan pequeña como se pueda.

-         Respuesta: no debe identificar varios píxeles como contorno cuando exista sólo un único contorno.

Estas tres condiciones se expresan de forma matemática:

 

 

 

Después de aplicar el filtro de Canny, se hace una dilatación de la imagen para eliminar los agujeros entre los segmentos de los contornos.   

 

 

Identificación de contornos rectangulares

Para la identificación de los contornos rectangulares se aplica un algoritmo basado en el número de vértices lados del contorno y el ángulo entre los lados. Para ello, lo primero que se hace es buscar los contornos cerrados en la imagen resultante de la aplicación del filtro de Canny. A continuación se aproximan los contornos por polígonos. Si los contornos tienen  cuatro vértices después de la aproximación polinomial, su área es mayor que un tamaño determinado (para filtrar el ruido) y son convexos, se consideran candidatos a contornos rectangulares. A continuación se calcula el ángulo entre los lados de cada contorno. Si los ángulos son cercanos a 90º, se consideran contornos rectangulares. El margen de error de la medida de los ángulos debe calcularse para tener un algoritmo suficientemente robusto frente a orientaciones de la cámara. Es importante recordar que uno de lo objetivos de este algoritmo en no ser dependientes de la posición de la cámara y, por tanto, detectar contornos rectangulares en imágenes muy deformadas. Por ello, el margen de error del máximo ángulo entre lados del contorno es de ±30º

Se han utilizado las funciones de la librería OpenCv para visualizar el resultado de la detección de contornos rectangulares.

Homografía

La homografía se realiza teniendo en cuenta que se conoce el tamaño real del rectángulo en el que están dispuestos los caracteres. Cada carácter se encuentra alojado en un rectángulo blanco de tamaño fijo, de manera que la relación entre la anchura y la altura es  de  70/100. Las dimensiones del rectángulo final serán:

-         Altura fija y proporcional a 100

-         Anchura fija y proporcional a 70 x n_caracteres

Como sabemos las dimensiones reales del contorno rectangular, podemos aplicar una homografía a toda la imagen, de manera que obtenemos el dbjuo del carácter en la orientación y posición adecuada.

La homografía que nos da la posición real de los objetos en función de la posición en l imagen responde a la ecuación:

La matriz de M se calcula utilizando los datos de las dimensiones reales del rectángulo y los datos de dónde se encuentra el rectángulo en la imagen. En la figura se puede ver un ejemplo ficticio de cómo se deformaría la imagen al aplicar la homografía al rectángulo que está contenido en ella:

 

 

Una vez obtenida la imagen de magnitudes reales a través de la homografía descrita anteriormente, se recorta la imagen para obtener únicamente la parte correspondiente a los caracteres. Cada carácter ocupa una nueva imagen recortada, a la que se le aplicará el reconocedor.

Reconocimiento de caracteres

El reconocimiento de caracteres se realiza a través de una base de datos de patrones.

Actualmente se dispone de 5 patrones, correspondientes a las 5 primeras cifras, que servirán para determinar la eficiencia del algoritmo.

 

Figura 8. Base de datos

 

 El algoritmo de reconocimiento de caracteres toma las imágenes obtenidas tras aplicar la homografía y recortar las imágenes y las compara con las imágenes de la base de datos.

Para hacer esta comparación, se hace aplica un umbral a la imagen que se quiere comparar y se invierte el resultado. También se invierten los niveles de gris en los patrones. A continuación se hace la correlación entre ambas imágenes, mediante una multiplicación de los niveles de gris en cada píxel de la imagen. A continuación se obtiene la media de los niveles de gris de la imagen resultante de la multiplicación. El patrón que de cómo resultado mayor valor medio será el que más se parece a la imagen real.

3.   Pruebas y resultados

Algoritmo de detección de contornos rectangulares

Los resultados del algoritmo de detección de contornos rectangulares han sido muy satisfactorios. El tiempo medio de ejecución de la aplicación es de 200 milisegundos, resultado bastante satisfactorio, si tenemos en cuenta que la cámara toma imágenes a 15 frames por segundo. El filtro de Canny ha dado un resultado satisfactorio en la detección de contornos, con resultados buenos en diferentes ambiente y con diferentes tipos de luces (luz solar, luz fluorescente, luz halógena). La detección de formas rectangulares mediante el algoritmo basado en el número de vértices del contorno y el ángulo entre los lados ha dado muy buenos resultados.

Algoritmo de reconocimiento de patrones

El algoritmo de reconocimiento de números mediante el uso de la homografía y el reconocimiento de patrones ha acertado en prácticamente el 100% de las pruebas, en los casos de números de uno, dos y tres dígitos. La homografía permite obtener un carácter que se puede comparar fácilmente con los patrones.