• No se han encontrado resultados

Capítulo 3. Procesamiento de imágenes en Sistemas I2DASW

3.1 Detección de carriles

4.1.4 Reconocimiento de líneas de carril

Aquí se detallará el proceso de detección de líneas de carril una vez obtenidos los filtros necesarios a aplicar. En el siguiente paso se conectan entre ellos para definir cuáles son las entradas y las salidas del reconocedor. El primer filtro de realce de bordes de Prewitt (o Sobel, según cómo haya sido configurado), toma como entrada una imagen, que puede

Capítulo 4. Desarrollo

provenir de un mapa de bits. Otra posible entrada para nuestro sistema es un video con extensión .avi, por lo cual, por medio de diferentes eventos, son obtenidos uno a uno los frames del video a medida que el mismo se ejecuta, generando en cada paso un nuevo mapa de bits que será inyectado en el filtro.

La salida de este primer filtro se conecta a la entrada del siguiente, el cual aplicará un umbralado sobre el resultado anterior para resaltar aún más los bordes que nos interesan. En este paso, se genera una salida que será visualizada en pantalla, indicando el resultado de los filtros de detección de bordes. A su vez, esta misma salida es conectada al último filtro que se encargará de aplicar el algoritmo de Hough para finalmente devolver el conjunto de líneas que se están buscando (Figura 4.1.7).

Figura 4.1.7: Reconocedor de líneas de carril.

Así como se explicó en esta sección toda la lógica de detección de carriles, en el capítulo siguiente se detalla todo lo relacionado para la detección de obstáculos.

4.2 Detección de obstáculos

La detección de obstáculos se basó en la selección de un método de extracción de características (features) sobre la imagen. Previo a ejecutar dicho algoritmo sobre cada frame, es necesario aplicar una lógica que permita resaltar las características de los obstáculos y facilitar su detección. Para esto, fue necesario aplicar un umbralado inicial con un valor de umbral en RGB de (50, 50, 50). Este valor de umbral era el que mejor se ajustaba a las imágenes de una carretera y fue logrado luego de realizar diferentes pruebas con distintos colores. Dicho umbral resaltará en color blanco los puntos de interés que posteriormente serán obtenidos (Figuras 4.2.1). A su vez, puede ser configurado con el objetivo de lograr resaltar aquellos obstáculos que dadas ciertas condiciones, como sol de frente, no logran ser detectados.

Capítulo 4. Desarrollo

Figura 4.2.1 - A: Umbralado.

Figura 4.2.1 - B: Umbralado.

Luego del amplio estudio que se realizó de posibles algoritmos para la extracción de obstáculos se optó por el algoritmo de SURF (Speeded Up Robust Features) basado en la extracción de características. El mismo consiste en un detector de alto rendimiento de puntos de interés en una imagen. Es invariante a rotaciones, cambios de escala o de iluminación, por lo cual presenta una gran robustez ante posibles transformaciones de la imagen. SURF utiliza un detector de BLOB (Binary Large Object) basado en el determinante de una matriz hessiana para la localización y la escala de los puntos de interés. La extracción de los mismos se realiza detectando en primer lugar los posibles puntos y su localización dentro de la imagen.

Se conoce la expresión:

como la derivada de segundo orden del filtro de Gauss. Así Lxx (x,σ) es la convolución entre la derivada de segundo orden del filtro de Gauss y la imagen en el punto x=(x,y). Lo mismo ocurre con los otros términos. Estas derivadas se conocen como laplacianas de gausianas. La ventaja del método de SURF es que en vez de usar gausianas para promediar las zonas de la imagen, se usan cuadrados. Estos cuadrados son una aproximación que reduce mucho el costo computacional del algoritmo.

Capítulo 4. Desarrollo

En la siguiente imagen (Figura 4.2.2) se puede observar la representación de la derivada parcial de segundo orden de un filtro gaussiano y la aproximación de la derivada implementada en el caso del descriptor SURF.

Figura 4.2.2: SURF. Aproximación de las derivadas parciales de segundo orden.

Para calcular la localización de todos los puntos de interés en todas las escalas, se procede mediante la eliminación de los puntos que no cumplan la condición de máximo en un vecindario de 3 x 3 x 3, según el ejemplo anterior. La descripción de la vecindad se hace mediante un cuadrado centrado en el píxel en cuestión y orientado según la orientación que se ha calculado previamente. De esta manera, el máximo determinante de la matriz Hessiana es interpolado en la escala y posición de la imagen.

Este algoritmo es ejecutado sobre la imagen previamente filtrada con un umbralado como se mencionó al inicio de la sección, permitiendo resaltar aquellos puntos de interés. Por lo tanto, la imagen umbralada se utilizará como entrada al algoritmo SURF, el cual devuelve el conjunto de regiones que corresponden con los puntos de interés. Los fragmentos obtenidos son englobados en una o varias áreas comunes delimitadas en color azul como muestra las imágenes (Figura 4.2.3).

Figura 4.2.3: Regiones obtenidas tras aplicar SURF.

Se determinan estas áreas como posibles obstáculos, y se calcula la posición con respecto al actual carril por el que se está transitando, y la distancia a las mismas. La distancia al obstáculo se deduce a partir de dividir en rangos el eje Y de la imagen, y de acuerdo a la posición Y del objeto en qué sector se posicione, tendrá asignando un valor fijo expresado en metros.

Capítulo 4. Desarrollo

La posición permite definir si el obstáculo se encuentra sobre el mismo carril que el vehículo. Se logra determinar si el objeto se encuentra en el mismo carril (O3), en el carril izquierdo o banquina (O1), en el límite del carril izquierdo (O2), en el límite del carril derecho (O4), en el carril derecho o banquina (O5) o si la posición del obstáculo está por fuera del contexto del vehículo (O6). Para determinar esto, se trazó una línea horizontal a partir del obstáculo (línea roja) para obtener la intersección con las dos líneas que delimitan el carril por donde se está circulando. Una vez obtenidos los puntos de intersección, comparamos la posición respecto del eje X de estos puntos y el objeto para conocer el lugar relativo que ocupa el mismo (Figura 4.2.4).

Figura 4.2.4: Determinación del carril de conducción.

Para esto sería necesario desde el reconocedor de obstáculos, tener conocimiento acerca de las líneas detectadas por el reconocedor de carriles para lograr detectar el carril de conducción. Dado que no se busca lograr un acoplamiento entre ambos reconocedores, sino que ambos funcionen en paralelo y disparen eventos, se tendrá en cuenta el histórico para utilizar la información de los carriles obtenidos en el frame anterior. En el caso de estar procesando el primer frame, se supondrá por defecto que el carril es el actual.

A modo de intentar descartar la mayor cantidad de falsos positivos, como ocurre al detectar árboles o sombras en la imagen, se limita la búsqueda al área visualizada en rojo en la siguiente imagen de muestra (Figura 4.2.5).

Capítulo 4. Desarrollo

Al igual que se mencionó en la explicación de la detección de carriles, aquí también se estableció una configuración inicial que permite la utilización de los datos históricos obtenidos de frames anteriores para lograr descartar falsos positivos generados principalmente por la aparición de sobras o grietas en el pavimento. En este caso, la lógica se basa en el supuesto de que si existe un obstáculo detectado en un frame, y a una distancia considerable, entonces el mismo obstáculo debe haber sido detectado en el frame anterior sobre el mismo carril.

A continuación (Figura 4.2.6) se muestra cómo la configuración del sistema, con sus entradas y sus salidas, al igual que se explicó en la sección anterior para el reconocimiento de líneas:

Figura 4.2.6: Reconocedor de obstáculos.

Documento similar