Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... ·...

26
Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador Capítulo 2. Solución existente 2.1 Introducción El objetivo de este capítulo es realizar un análisis minucioso de la solución existente hasta el momento en lo que se refiere al software de detección de patrones para el aterrizaje de helicópteros mediante control por computador. Esta solución se basa en detectar un patrón situado justo en la zona en la que la aeronave deberá tomar tierra. Para ello, hace uso de una cámara que está situada en la parte inferior del aparato. Cuando la imagen se ha obtenido, se procesa con técnicas de visión por computador para determinar la existencia y posición del patrón correcto. El software del procedimiento implementado para la detección del patrón consiste básicamente en seis fases: 1. Captación de la imagen: Mediante una cámara del tipo firewire se obtienen las imágenes que posteriormente serán procesadas. 2. Umbralización de la imagen captada: Dependiendo del nivel de luminosidad general de la imagen obtenida con la cámara, se consigue un umbral determinado. El proceso de binarizado, es decir de establecer sólo los colores blanco y negro en la imagen, se realiza centrándose en el valor de umbral obtenido. 3. Selección de patrones candidatos: Dentro de la imagen en blanco y negro obtenida previamente, se buscan todas las regiones susceptibles a ser el patrón correcto. 7

Transcript of Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... ·...

Page 1: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

Capítulo 2. Solución existente

2.1 Introducción

El objetivo de este capítulo es realizar un análisis minucioso de la solución existente hasta el momento en lo que se refiere al software de detección de patrones para el aterrizaje de helicópteros mediante control por computador.

Esta solución se basa en detectar un patrón situado justo en la zona en la que la aeronave deberá tomar tierra. Para ello, hace uso de una cámara que está situada en la parte inferior del aparato. Cuando la imagen se ha obtenido, se procesa con técnicas de visión por computador para determinar la existencia y posición del patrón correcto.

El software del procedimiento implementado para la detección del patrón consiste básicamente en seis fases:

1. Captación de la imagen: Mediante una cámara del tipo firewire se obtienen las imágenes que posteriormente serán procesadas.

2. Umbralización de la imagen captada: Dependiendo del nivel de luminosidad general de la imagen obtenida con la cámara, se consigue un umbral determinado. El proceso de binarizado, es decir de establecer sólo los colores blanco y negro en la imagen, se realiza centrándose en el valor de umbral obtenido.

3. Selección de patrones candidatos: Dentro de la imagen en blanco y negro obtenida previamente, se buscan todas las regiones susceptibles a ser el patrón correcto.

7

Page 2: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

4. Verificación del patrón elegido: Se evalúan cada uno de estos candidatos, y gracias a las propiedades geométricas que posee el patrón, se comprueba si el candidato examinado es realmente el patrón que se está buscando.

5. Extracción de las esquinas del patrón: Se pretende situar sobre la imagen la posición exacta de las esquinas del patrón. Para ello, se usa una aproximación poligonal del contorno exterior al patrón y se calculan las coordenadas de sus cuatro esquinas.

6. Eliminación de la distorsión: Para finalizar el proceso de la detección se debe eliminar la distorsión que provoca la cámara. Con los parámetros de calibración de la cámara que se usa y que se obtienen previamente a todo este proceso, se consigue una mayor precisión para las coordenadas de las cuatro esquinas del patrón.

Para el desarrollo del software se ha utilizado el lenguaje de programación C++ complementado con las librerías específicas para la visión por computador de OpenCV de Intel. Estas librerías proporcionan un marco de trabajo de alto nivel para el desarrollo de aplicaciones de visión por computador en tiempo real: estructuras de datos, procesamiento y análisis de imágenes, análisis estructural, etc. Este marco de trabajo facilita en gran parte la implementación de distintas técnicas de visión por computador, aislando al desarrollador de las peculiaridades de los distintos sistemas de visión.

2.1.1 Patrón

Para el diseño del software de detección, se ha utilizado el mismo patrón que se utiliza en el artículo de Courtney S. Sharp, Omid Shakernia y S. Shankar Sastry, “A Vision System for Landing an Unmanned Aerial Vehicle”, de la Universidad de California Berkeley, el cual forma parte de las actas de la Conferencia Internacional sobre Robótica y Automática (ICRA) celebrada en Seúl en 2001.

El patrón a detectar está formado por un cuadrado negro principal que en su interior contiene otros seis cuadrados blancos, de los cuales existe uno de ellos que es cinco veces más grande que el resto y está situado en la esquina superior derecha. Los otros cinco cuadrados del interior tienen el mismo tamaño y están distribuidos por la parte izquierda y por la parte inferior. Además, el cuadrado negro principal está rodeado por un marco de color blanco.

Las propiedades geométricas y la distribución de colores que posee el patrón son fundamentales para poder encontrarlo y situarlo correctamente dentro de la imagen que se procesa.

8

Page 3: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

2.2 Descripción del procedimiento de detección

En este apartado se analiza y explica la estructura y el funcionamiento del software desarrollado para la detección del patrón con un mayor nivel de detalle.

Como se ha explicado anteriormente, el procedimiento tiene seis procesos diferenciados:

1. Captación de la imagen2. Umbralización de la imagen captada.3. Selección de patrones candidatos.4. Verificación del patrón elegido.5. Extracción de las esquinas del patrón.6. Eliminación de la distorsión.

9

Figura 2.1. Patrón utilizado para el proceso de detección

Page 4: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

2.2.1 Captación de la imagen.

Para obtener la secuencia de imágenes se dota al aparato de una cámara digital del tipo firewire (estándar IEEE 1394). El objetivo de utilizar este tipo de cámara es porque sus características permiten una entrada y salida de datos en serie a gran velocidad y la obtención de imágenes directamente.

En los experimentos que se han realizado en el proyecto, se ha utilizado una cámara digital que puede operar a una velocidad de unos 30Hz y de esta forma, se pueden obtener más de 100 imágenes por segundo. En la figura 2.3 se muestra una imagen tomada desde la cámara firewire para la realización del proyecto.

10

Figura 2.2. Diagrama del proceso de detección de un patrón

3.Selección de patronescandidatos

4.Verificación del patrónelegido

5.Extracción de las esquinasdel patrón

2.Umbralización de la imagen

1.Captación de la imagen

6. Eliminación de ladistorsión

Page 5: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

Las imágenes captadas por la cámara tienen una resolución de 640 píxeles de ancho por 480 píxeles de alto y se almacena en el formato “JPG”. La extensión “.JPG” es la más conocida de todas las extensiones que se utilizan para los algoritmos de compresión que posee el formato “JPEG”.

El formato “JPEG” es uno de los formatos gráficos más usados y conocidos. Su principal cualidad es la gran tasa de compresión que ofrece en imágenes de 24 bits. Por contra, su mayor defecto es el algoritmo de comprensión que usa, ya que introduce pérdidas de calidad en la imagen, es decir, la imagen grabada no será idéntica a la original. En la mayoría de los casos esta pérdida no es apreciable visualmente, pero en algunas aplicaciones en las que se requiera una calidad especial, no es conveniente utilizarlas. Las pérdidas que se producen al utilizar este formato se pueden ajustar mediante un factor de calidad: cuanta más calidad se requiera, más ocupará, y viceversa.

Para el proyecto se utiliza este formato ya que posee una calidad de imagen bastante buena y además permite que las fotografías tomadas tengan un tamaño muy pequeño. Las imágenes almacenadas que se han utilizado para realizar los experimentos del proyecto tienen un tamaño aproximado de 71,0 KB

En la figura se muestra una de las imágenes captada por la cámara. Realmente, la imagen mostrada no es la que se utiliza para el procesamiento posterior durante la ejecución del programa. La fotografía de color únicamente se utilizará para mostrar en ella el contorno del patrón si finalmente es encontrado.

11

Figura 2.3. Ejemplo de imagen tomada por la cámara de tipo firewire

Page 6: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

En la ilustración siguiente se puede ver la imagen en escala de grises tomada de la imagen de color que es la que utiliza el programa para empezar a realizar el proceso de detección del patrón.

2.2.2 Umbralización de la imagen captada.

Una vez se ha obtenido la imagen de la zona deseada, y antes de buscar dentro de ella el patrón que delimita la zona de aterrizaje, se realiza un binarizado de la instantánea para facilitar el procesamiento posterior.

Previamente se calcula la media de la luminosidad, que viene determinada por el nivel general de ésta en la imagen que se va a procesar. Este valor se obtiene basándose en un porcentaje fijo,el 50%, de entre los niveles mínimo y máximo de la imagen en escala de grises obtenida con la cámara.

12

Figura 2.5. Ejemplo de histograma de una imagen en escala de grises

Figura 2.4. Ejemplo de imagen en escala de grises para el procesamiento.

Page 7: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

El valor del umbral que se utiliza como parámetro final corresponde a la mitad de la suma de la media empírica de la luminancia, 65, más la suma de la media de la luminosidad de la imagen que se está tratando (calculada anteriormente), resultando la ecuación:

Umbral = (65 + (0.5 x media_luminosidad))

Cuando se obtiene el parámetro del umbral, se procede al binarizado de la imagen. Ahora se tiene una imagen en escala de blanco y negro en lugar de tenerla en escala de grises.

Sin embargo, en la implementación del programa se ha hecho un “binarizado inverso” en lugar del normal. El hecho de invertir los colores una vez binarizada la imagen se ha considerado con el objetivo de facilitar procesamientos posteriores. En definitiva, todos los valores de los píxeles por debajo del umbral pasan a ser blancos (en lugar de negros que es el valor que se conseguiría con el binarizado “normal”) y por el contrario, los valores que estén por encima del umbral, pasan a ser de color negro.

La diferencia entre ambos métodos se puede comprobar comparando la figura 2.6 que presenta un “binarizado normal” con la figura 2.7 que posee un “binarizado inverso”. Como se ha comentando anteriormente, es este tipo de binarizado el que se utiliza en el software para detectar el patrón.

13

Figura 2.6. Ejemplo de imagen en blanco y negro con

“Binarizado Normal”

Page 8: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

2.2.3 Selección de patrones candidatos.

El proceso de detección del patrón dentro de la imagen obtenida continúa haciendo una búsqueda de todos los contornos que existen dentro de ella. Para tal misión se hace uso de la función específica de la librería de OpenCV llamada “cvFindContours”.

La función “cvFindContours” devuelve una estructura jerárquica de contornos en una imagen binaria, tomando las regiones blancas como formas, y las negras como fondo o huecos. Ésta es la razón de haber realizado previamente un invertido de la imagen umbralizada, ya que en última instancia, se pretende detectar las esquinas del cuadrado negro del patrón.

En la figura 2.8 mostrada a continuación, se puede ver un ejemplo de los contornos que la función ha encontrado dentro de la imagen, destacados en color rojo.

14

Figura 2.7. Ejemplo de imagen en blanco y negro con

“Binarizado Inverso”

Page 9: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

Entre todos los contornos, sólo se consideran patrones candidatos aquellos que un su interior contengan exactamente seis huecos, o lo que es lo mismo, seis contornos interiores, debido a las características propias que posee el patrón. Estos contornos pasarán a la siguiente fase del proceso para comprobar si realmente son el patrón correcto.

En la figura 2.9 que se muestra seguidamente, se puede ver un ejemplo en el que aparecen en rojo los contornos candidatos a ser el patrón correcto. Se comprueba que en su interior tiene efectivamente otros seis contornos.

15

Figura 2.8. Ejemplo de contornos hallados dentro de la imagen.

Page 10: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

2.2.4 Verificación del patrón elegido.

En este paso se evalúan todos los contornos que en la fase anterior han sido catalogados como patrones candidatos. Aprovechando las propiedades geométricas que posee el patrón, se hace pasar al contorno por una serie de pruebas. El contorno evaluado será el patrón que se está buscando, si consigue superar todas las pruebas a las que se ve sometido. Sin embargo, si no es capaz de superar alguna de ellas, se descarta la posibilidad de que sea el patrón buscado.

Para esta fase, se nombran los cuadrados que se encuentran en el interior del patrón de una forma determinada para poder diferenciarlos a la hora de realizar las pruebas. Los nombres de cada uno de estos cuadrados se muestran en la figura 2.10.

16

Figura 2.9. Ejemplo de imagen con patrones candidatos

134 5 6

2

Page 11: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

2.2.4.1 Pruebas sobre el patrón candidato

Las pruebas que debe superar el contorno son las siguientes:

1. Relaciones entre el área y el perímetro: Se debe comprobar que cada contorno interior, es efectivamente un cuadrado. Para ello, aplicamos la relación geométrica del área de un cuadrado que es igual al valor de uno de sus lados elevado al cuadrado:

A = l²

Por otro lado, se tiene que el perímetro de un cuadrado es igual a la suma de todos sus lados:

p = l+l+l+l ó p = 4 x l

Finalmente, relacionamos ambos valores siendo el área igual al perímetro al cuadrado dividido entre 16:

A = p² / 16

Si se cumple ésta última relación, admitiendo un cierto rango de margen de error, el contorno habrá superado la primera de las pruebas y se pasará a la siguiente.

Para realizar esta primera prueba, se utilizan las funciones de librería de OpenCV “cvContourMoments” y “cvContourPerimeter”.

2. Color de regiones interiores: El color de las regiones que poseen los contornos interiores del patrón debe ser opuesto al color de la región que los engloba, es decir, al del patrón en sí. Para el caso del patrón estudiado, debido a la umbralización inversa que se ha realizado en las fases anteriores, los contornos interiores deben

17

Figura 2.10. Patrón utilizado con nombres especificados

Page 12: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

encerrar regiones de color negro sobre el patrón de color blanco como se mostró anteriormente en la figura 2.7.

Para esta fase, se ha utilizado la información de la que se dispone sobre los centros de gravedad obtenidos a partir de los resultados de la función de OpenCV “cvContourMoments”.

3. Relaciones entre las áreas de cuadrados interiores: Se debe comprobar que de los seis contornos interiores que existen dentro del patrón, uno de ellos es aproximadamente cinco veces mayor que el resto. Este contorno mayor que los cinco restantes es nombrado como “A” dentro de la nomenclatura definida anteriormente.

Para los otros cinco contornos pequeños, debe existir también una relación de tamaño entre ellos. El área de éstos debe ser similar, admitiendo un rango de valores por el error que se podría introducir al tomar la imagen.

4. Colinealidad y perpendicularidad: Se comprueba la colinealidad y la perpendicularidad mediante las parejas de vectores que unen los centros de gravedad de los contornos interiores. Siguiendo la nomenclatura asignada a los huecos dentro del patrón, los vectores “BC” y “BD” deben ser colineales, y perpendiculares a los vectores “DE” y “DF”, siendo estos últimos colineales entre sí. En la figura 2.11 se puede ver la orientación de los vectores citados.

5. Relación de distancias de vectores: Se verifica que las distancias “DB” y “DF” sean similares, así como las distancias “DC” y “DE”. De la misma forma que antes, se admite un cierto rango de margen de error.

18

Figura 2.11. Vectores definidos sobre el patrón

BC

BD

DE DF

Page 13: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

A medida que se van realizando las pruebas sobre el patrón, el programa va asignando internamente el nombre a los contornos interiores a éste.

Se identifican los contornos interiores de manera que:

El cuadrado “A” es el de mayor área.

El cuadrado “D” es el más alejado al cuadrado A.

Los cuadrados “B” y “F” son los más alejados al cuadrado “D”, descartando previamente al cuadrado “A” a sabiendas de que es el que tiene mayor área. Ambos se diferencian por el signo del producto vectorial de “DA x DB” y “DA x DF”.

Los cuadrados “C” y “E” son los más cercanos al cuadrado “D”, y se diferencian también por el signo del producto vectorial, esta vez entre “DA x DC” y “DA x DE”.

2.2.5 Extracción de las esquinas del patrón.

Dentro del programa, la misma función que realiza las pruebas para verificar que se ha encontrado el patrón correcto, identifica las esquinas del cuadrado exterior, es decir, las esquinas propias del patrón, lo que en definitiva se está buscando.

Para tal tarea se usa una aproximación poligonal del contorno exterior. Mediante la función de librería “cvApproxPoly”, y variando uno de sus parámetros, se obtienen las coordenadas de los cuatro puntos que se corresponden con los vértices del cuadrado.

La asignación de qué vértice es cada uno de los cuatro encontrados se realiza calculando las distancias a los centros de gravedad de los cuadrados interiores identificados previamente como “A”, “B”, “D” y “F”.

Los nombres que se van a utilizar con objetivo de definir su orientación, son los siguientes:

Esquina superior derecha: Orientación Noreste “NE”. Se determina por ser la esquina más próxima al hueco interior “A”.

Esquina superior izquierda: Orientación Noroeste “NW”. Se diferencia por estar más próxima al cuadrado interior nombrado como “B”.

Esquina inferior derecha: Orientación Sudeste “SE”: Es el vértice más cercano al polígono “F”.

Esquina inferior izquierda: Orientación Suroeste “SW”: Es la esquina más cercana a “D”.

19

Page 14: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

La figura 2.12 muestra la distribución de las etiquetas sobre el patrón de manera que queda determinada la orientación de éste. Las esquinas que interesa tener localizadas son las correspondientes al patrón negro.

El procedimiento termina con una última verificación. Para que el patrón encontrado sea el correcto, debe ocurrir que dos de los lados que forman este cuadrado sean paralelos al vector “DB”, en concreto a los segmentos “NW-SW” y “NE-SE”. Los otros dos lados, “NW-NE” y “SW-SE”, deben a su vez ser paralelos al vector DF. Para su realización de una manera más estricta, en el software se ha implementado utilizando la recta que mejor se aproxime por mínimos cuadrados a los puntos “B”, “C” y “D” por un lado, y por el otro a “D”, “E” y “F”. Para este último trabajo se ha utilizado la función de librería “cvFitLine2D”.

2.2.6 Eliminación de la distorsión.

Como se ha comentado anteriormente, la cámara introduce una distorsión al capturar las imágenes y esta distorsión puede variar en gran medida de una imagen a otra. Sin embargo, utilizando las herramientas adecuadas se puede eliminar la malformación producida en la imagen a través de una correcta calibración de la cámara.

En las figuras siguientes se muestran ejemplos de cómo afecta la distorsión a las imágenes y junto a ellas, como deberían verse con la correspondiente corrección.

20

Figura 2.12. Patrón utilizado en el proyecto con las esquinas identificadas

NENW

SW SE

Figura 2.13. Ejemplo de la distorsión provocada por la lente y su corrección.

Page 15: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

Para el calibrado de la cámara se ha utilizado un "toolbox" especial para el programa MATLAB. Se han obtenido los parámetros intrínsecos de la cámara, que han permitido corregir las coordenadas del contorno exterior del patrón.

La función de librería de OpenCV “UnDistortCorners“ es la que se ha utilizado en el programa para la calibración y ésta a su vez, se ayuda del contenido de la función “cvUnDistortOnce”.

Una vez realizada la disminución de la distorsión, se corrigen las posiciones de los puntos del contorno exterior. Para ello, el contorno exterior se vuelve a aproximar por un polígono usando la función “cvApproxPoly”. Con esto finalmente se obtienen las coordenadas de los nuevos cuatro vértices sin distorsión y cada uno se corresponderá con el antiguo vértice más cercano.

21

Figura 2.14. Ejemplo de la distorsión de perspectiva y su corrección.

Figura 2.15. Distorsión del patrón provocada por la cámara.

Page 16: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

2.2.7 Otras consideraciones sobre el software

El programa muestra las imágenes por pantalla a medida que las va procesando. Una vez se ha realizado el proceso de detección del patrón siguiendo el proceso anterior, y en el caso de que se haya obtenido un resultado satisfactorio, se dibuja sobre la imagen original de color el contorno exterior del patrón. Además junto al contorno, aparecen dibujadas las etiquetas identificativas para cada una de sus esquinas, como se puede ver en la figura 2.16.

Por el contrario, si no se detectara el patrón correctamente o hubiera algún tipo de error durante el proceso, la imagen a mostrar sería la original, sin ningún tipo de dibujo.

Esta última parte del programa resulta muy útil para determinar, no sólo si se ha encontrado el patrón, sino para distinguir a simple vista si la detección de éste ha sido correcta o tiene algún tipo de error que el programa no ha detectado

22

Figura 2.16. Ejemplo de imagen procesada por el software de la solución

existente

Page 17: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

2.3 Resultados experimentales

2.3.1 Introducción a los experimentos

En los siguientes apartados se presentan una serie de experimentos diseñados con el objetivo de comprobar el comportamiento y la fiabilidad del software desarrollado. Para su realización se ha simulado una maniobra de aproximación y aterrizaje de un helicóptero, y también escenas en las que el patrón aparece y desaparece de la imagen súbitamente.

Se ha usado una cámara firewire para la captura de una secuencia de imágenes del patrón a pequeña escala. En total se han guardado 1317 fotografías que serán utilizadas tanto en la prueba del software actual como en todos los experimentos posteriores de las soluciones alternativas que se propondrán en los siguientes capítulos. La resolución que tiene cada una de las imágenes empleadas es de 640 píxeles de ancho por 480 píxeles de alto y su tamaño es de aproximadamente 71,0 KB.

Con el objetivo de poder comparar los resultados de la solución ya expuesta en el presente capítulo y de las diferentes alternativas que se propondrán posteriormente, se pretende establecer una serie de parámetros para evaluarlos:

1. Menor tiempo en detectar el patrón de una imagen. Tmin.2. Tiempo medio en detectar el patrón . Tmedio.3. Número total de imágenes encontradas con patrón: Npatrón.4. Número total de positivos reales encontrados: Npositivos.5. Número total de falsos positivos encontrados. Nfalsos_positivos.6. Número total de positivos no encontrados. Npositivos_no_encontrados.

Para el último de los parámetros, el número total de positivos no encontrados, es difícil establecer el criterio de decisión que determine si una imagen tiene el patrón o realmente es indistinguible. Esto ocurre porque algunas de las imágenes de la secuencia aparecen “movidas” y aunque el ojo humano puede adivinar que podría ser el patrón, mediante el uso de la visión por computador no es tan obvio determinarlo.

Por este motivo, el criterio que se tomará será el de considerar para el cómputo de éste parámetro (Npositivos_no_encontrados) únicamente las imágenes que no estén “movidas” o que sólo estén levemente “movidas”. De esta forma, se establece de manera precisa las imágenes que son consideradas sin patrón. Este criterio lo extrapolaremos a los demás experimentos que se realicen.

23

Page 18: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

En la figura 2.17 se puede ver una imagen con el patrón levemente “movido”. Este tipo de imágenes contará para la evaluación del parámetro de patrones no encontrados en el caso de que el software no sea capaz de detectarlo. Sin embargo, en la figura 2.18 se muestran dos fotografías que no se considerarán para tal efecto. En la imagen de la izquierda es imposible, incluso para el ojo humano, determinar la existencia del patrón. En cambio, el la fotografía de la derecha de la figura 2.18, para el ojo humano es posible interpretarlo, aunque en realidad no se puede considerar como patrón válido ya que ha perdido sus propiedades geométricas y demás características que poseía.

Para cada uno de los experimentos, se realizarán cinco ejecuciones del programa. De esta manera se conseguirán unos datos más fiables de los que se podrían obtener de una sola ejecución. Concretamente, la razón principal de tomar los datos de los experimentos de varias ejecuciones es debido a que los tiempos durante el procesamiento pueden variar de una ejecución a otra.

24

Figura 2.17. Imagen levemente “movida” con patrón válido

Figura 2.18. Imágenes consideradas sin patrón

Page 19: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

Sin embargo, en lo referente a la detección del patrón, se sabe a priori que siempre que se utilice la misma versión del software, se va a obtener un mismo resultado de patrones encontrados. Esto ocurre debido a que para cada una de las ejecuciones que se realizarán en los experimentos se utilizarán la misma colección de imágenes. De cualquier forma, durante los experimentos se verificará esta suposición.

Además de lo expuesto en los párrafos anteriores, se pretende determinar el tiempo de procesamiento necesario para realizar cada una de las fases en las que se divide la detección del patrón. La finalidad es analizar los resultados para así mejorar la solución existente, proponiendo diferentes alternativas. Para ello, en cada ejecución, se toma al azar una de las imágenes en las que se haya encontrado el patrón, y cuyo tiempo de procesamiento sea similar al tiempo medio que se ha obtenido en los experimentos previos.

2.3.2 Experimentos

A continuación se exponen los resultados que se han obtenido con la ejecución del software de la solución existente para posteriormente proceder a su análisis y comprobación de sus aspectos positivos y negativos.

2.3.2.1 Duración del procesamiento

En la tabla 2.1 se muestran los tiempos que se han obtenido en las diferentes ejecuciones del programa correspondientes a la solución existente. Los valores que se han tomado, son siempre de imágenes en las que se ha encontrado el patrón correctamente, ya que las imágenes sin patrón no se van a tener en cuenta.

En la primera fila, se muestra el tiempo medio que se que tarda en procesar una imagen en cada una de las ejecuciones. Por otro lado, en la segunda fila, se muestra el tiempo correspondiente a la imagen en la que se ha encontrado el patrón y que además se ha procesado más rápido durante la ejecución de todo el programa, es decir, la que menor tiempo ha tardado en procesarse. En esta misma fila, se presenta un valor obtenido de cada una de las ejecuciones efectuadas en los experimentos.

25

Tabla 2.1. Resultados del tiempo obtenido en cada una de las 5 ejecuciones

del software de la solución existente.

Ejecución 1 Ejecución 2 Ejecución 3 Ejecución 4 Ejecución 5 MEDIA

Tmedio (ms) 4,68395 4,79654 4,62084 4,60480 4,63489 4,66820

Tmin (ms) 3,53954 3,60940 3,79416 3,68340 3,59606 3,64451

Page 20: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

Además en la última columna de la tabla, aparecen los valores medios de sus correspondientes filas.

Como se puede comprobar en la tabla anterior, la imagen que menor tiempo ha tardado para su procesamiento, a necesitado 3,60 milisegundos. El tiempo que el software emplea de media en el proceso de cada una de las imágenes en las que se encuentra el patrón es de 4,66 milisegundos.

2.3.2.2 Duración de cada fase

En este apartado se analiza el tiempo de ejecución que necesita el programa para cada uno de las fases en la detección del patrón. Para ello, se van a mostrar los tiempos correspondientes a:

1. Tiempo de binarizado de la imagen (Umbralización)2. Tiempo en encontrar los contornos3. Tiempo en comprobar los contornos4. Tiempo en eliminar la distorsión5. Tiempo en dibujar el contorno del patrón

Además de dichos parámetros, se va a valorar el tiempo total invertido por el software en la realización de la detección del patrón, incluyendo la fase de dibujo, y el tiempo de procesamiento de otras funciones propias del software, así como el tiempo total que se ha utilizado para procesar la imagen completa.

En la tabla 2.2 y en la tabla 2.3 se puede ver detalladamente el tiempo que tarda una imagen en ser procesada por el programa y el tiempo que se tarda en cada una de las fases por las que pasa. Para la obtención de estos datos se ha tomado una imagen de cada ejecución que se ha realizado en el apartado anterior (2.3.2.1). Para hacer una mejor comparación entre los tiempos obtenidos se indica también su porcentaje. Al igual que en el anterior apartado, el tiempo se mide en milisegundos.

26

Page 21: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

El tiempo correspondiente a la variable Ttotal_imagen es un dato que lo proporciona el programa y se refiere al tiempo total que tarda en procesar una imagen. Su porcentaje, como no podía ser de otra manera, es del 100%. A partir de este dato, se obtienen el resto de porcentajes.

Sin embargo, la variable Ttotal_detección no se obtiene directamente de la ejecución del programa, sino sumando los valores de la parte superior de la tabla, es decir, la suma de las fases correspondientes a la detección del patrón más el tiempo que se invierte en dibujar el patrón sobre la imagen.

27

Tabla 2.2. Resultados del tiempo obtenido en las tres primeras fases de la

solución existente.

Tabla 2.3. Resultados del tiempo obtenido en las dos últimas fases y la

media total de la solución existente.

Muestra 1 % Muestra 2 % Muestra 3 %

Tbinarizado (ms) 1,079120 22,50 0,852482 18,23 0,852692 17,85

Tencot_cont (ms) 3,054930 63,70 2,966930 63,45 2,937660 61,49

Tcomp_cont (ms) 0,083879 1,75 0,106088 2,27 0,106788 2,24

Tquitar_dist (ms) 0,131092 2,73 0,246400 5,27 0,357238 7,48

Tdibujar (ms) 0,154140 3,21 0,187873 4,02 0,193880 4,06

Ttotal_deteccion (ms) 4,503161 93,90 4,359773 93,23 4,448258 93,11

Totros_procesos (ms) 0,292349 6,10 0,316447 6,77 0,329162 6,89

Ttotal_imagen 4,795510 100,00 4,676220 100,00 4,777420 100,00

Muestra 4 % Muestra 5 % MEDIA %

Tbinarizado (ms) 0,875671 18,57 1,118090 22,02 0,955611 19,87

Tencot_cont (ms) 2,975660 63,10 2,705160 53,27 2,928068 60,89

Tcomp_cont (ms) 0,107626 2,28 0,121035 2,38 0,105083 2,19

Tquitar_dist (ms) 0,262184 5,56 0,641702 12,64 0,327723 6,82

Tdibujar (ms) 0,192134 4,07 0,187454 3,69 0,183096 3,81

Ttotal_deteccion (ms) 4,413275 93,58 4,773441 94,01 4,499582 93,57

Totros_procesos (ms) 0,302615 6,42 0,304299 5,99 0,308974 6,43

Ttotal_imagen 4,715890 100,00 5,077740 100,00 4,808556 100,00

Page 22: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

Por último, el parámetro Totros_procesos se refiere al tiempo invertido en realizar otros procesos ajenos al de detección, pero a su vez necesarios en la ejecución del software. El valor se corresponde con la resta de los dos parámetros explicados anteriormente: Ttotal_imagen - Ttotal_detección.

En la tabla 2.3 además se incluyen los datos correspondientes a las medias de los distintos valores de cada una de las muestras que se han tomado.

Observando el resultado mostrado en las tablas anteriores, se puede comprobar que las fases que más tiempo consumen son las destinadas a encontrar los contornos con un 60% aproximadamente y el correspondiente al empleado en binarizar la imagen, que posee un porcentaje alrededor del 20%.

2.3.2.3 Patrones detectados

Durante las ejecuciones efectuadas para los experimentos, se ha corroborado que en lo referente a la detección del patrón, en todas las ejecuciones del programa, el resultado es idéntico.

En la tabla 2.4 se muestra un resumen de los patrones detectados por el software. De entre estos valores se puede destacar, que en seis de las imágenes utilizadas en los experimentos, se encuentra el patrón de manera errónea, es decir, lo encuentra en una imagen que efectivamente lo tiene, pero sin embargo, no lo dibuja correctamente. Normalmente este hecho ha ocurrido cuando el patrón aparece parcialmente en la imagen y se muestra

28

Tabla 2.4. Resultado de los patrones detectados en la solución existente.

VALOR

Img, con patrón 739

Img, sin patrón 578

Total imágenes 1317

Patrón correcto 733

Patrón incorrecto 6

Patrón no encont. 19

Page 23: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

la mayor parte de éste. En el presente caso el programa lo reconoce como válido y realmente no lo es. En las siguientes figuras se muestran ejemplos de los patrones detectados erróneamente.

29

Figura 2.19. Patrón encontrado erróneamente

Figura 2.20. Patrón encontrado erróneamente

Page 24: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

Otro dato destacable de las tablas son las 19 imágenes en las que no se ha detectado el patrón y realmente, esas imágenes si lo tienen. Normalmente este hecho es debido a que la imagen está levemente movida como se mostraba en la figura 2.17.

2.4 Conclusiones

Tras realizar los experimentos, se han obtenido resultados satisfactorios en la detección del patrón y la determinación de las esquinas. De las 758 imágenes que se han considerado como que en su interior tienen el patrón, se han detectado correctamente 733, es decir, un 96,7% del total. Si lo comparamos frente a las 6 imágenes erróneas, que corresponden a un porcentaje del 0,79%, y de las fotografías en las que no se ha detectado el patrón aunque existía, que son un total de 19 y su porcentaje es del 2,51%, se puede decir que el software tiene un buen comportamiento. No obstante, aunque el resultado es muy bueno, no tiene la fiabilidad que se desea obtener.

Respecto a los tiempos que invierte el sistema en el procesamiento de las imágenes, se pueden calificar de excelentes, ya que el menor tiempo empleado es de tan sólo 3,53 milisegundos y de media unos 4,66 milisegundos. Por tanto, en este aspecto, es más difícil encontrar una mejora aceptable, aunque también será uno de los objetivos a desarrollar en los siguientes capítulos del proyecto.

Los tiempos que proporciona la aplicación haciendo referencia a cada una de las fases de la detección, proporcionan mucha información de calidad a la hora de mejorar el programa. La mayor parte del tiempo dedicado a la detección del patrón se destina a encontrar los contornos de la imagen. En realizar esta tarea tarda alrededor del 60% del tiempo total, unos 3 milisegundos. Este hecho hace que esta fase sea una de las candidatas a ser mejorada.

La fase correspondiente a la umbralización y binarizado de la imagen también se lleva gran parte del tiempo, alrededor del 20%, es decir, unos 0,9 milisegundos. Por tanto, también es uno de los objetivos del proyecto a mejorar.

El tiempo invertido en el resto de las fases juntas, apenas llega al 10% del total invertido en la detección. Por este motivo, no va a ser prioridad a la hora de mejorar el software.

30

Page 25: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

Desarrollo de software para la ayuda en el aterrizaje autónomo mediante visión por computador

2.4.1 Ventajas

Las ventajas que se pueden encontrar en la solución existente son:

Tiempo de procesamiento bastante bajo.

Buena fiabilidad a la hora de encontrar patrón.

2.4.2 Inconvenientes

Los inconvenientes del software son:

Realiza todo el proceso para cada imagen, no aprovechando los datos que se tienen de la imagen anterior.

Se invierte la mayor parte del tiempo en encontrar los contornos de la imagen.

Depende de la luminosidad que tenga la imagen.

2.5 Posibles mejoras

Una vez se ha analizado detenidamente la solución existente y se han realizado los experimentos correspondientes, se pueden proponer una serie de mejoras para intentar paliar las debilidades que presenta la actual solución.

2.5.1 Función de seguimiento

La primera de las soluciones consiste en aprovechar la información que se tiene de las imagen anterior en el caso de que se haya detectado el patrón. De esta manera, se evitará realizar el proceso completo en todas las imágenes.

Para esta alternativa, se creará una nueva función de seguimiento que recibirá los datos proporcionados por la anterior imagen. Después de recorrer la función de seguimiento, no será necesario realizar todas las comprobaciones ya que se tendrá toda la información sobre las esquinas y por tanto, la función que le sigue, la correspondiente a verificar el patrón, deberá tardar menos que la original.

31

Page 26: Capítulo 2. Solución existentebibing.us.es › proyectos › abreproy › 11871 › fichero... · 2.2.1 Captación de la imagen. Para obtener la secuencia de imágenes se dota al

2. Solución existente

2.5.2 Máscara

La segunda de las soluciones pretende dar una alternativa con una solución integral a todos los inconvenientes de la solución existente. Para ello, se dotará de una función de seguimiento, al igual que en la primera de las alternativas con la que se conseguirá no tener que realizar todo el proceso de detección completo. Además, se dibujará alrededor del patrón una máscara.

El propósito de esta alternativa es dejar al patrón aislado en la imagen, de manera que sólo aparezca éste y a lo sumo, los alrededores colindantes. Con ello se pretende emplear menor tiempo en el binarizado de la imagen, ya que se realizará de una manera totalmente diferente a la propuesta en la solución original. Además, gracias a que el patrón se rodea con una “máscara” negra, la fotografía queda limitada y por tanto, el número de contornos que contiene la imagen debería ser mucho menor, lo que conllevaría a la reducción del tiempo de detección de contornos.

2.5.3 Correlación

Esta última alternativa pretende dar una solución con una filosofía totalmente diferente a la solución original y a las dos primeras propuestas. En ella se pierde el concepto de contorno y ahora se va a centrar en las esquinas del patrón.

Esta solución no pretende encontrar el contorno que contenga al patrón deseado, sino que buscará los puntos pertenecientes a las esquinas del patrón que se quieren encontrar. Para ello se usará, al igual que en la primera solución, una función de seguimiento que proporcione los puntos del patrón encontrados en la imagen anterior. Estos se guardarán como matrices para hacer una correlación parcial con la fotografía de la imagen en la que se quiere encontrar el patrón. De esta manera, se encontrarán las esquinas,la información que realmente interesa.

32