Detección de señales de tráfico

ITS Juan Carlos Espinosa Ceniceros

jc.espinosa.ceniceros@gmail.com

FIME - UANL

Propósito

El propósito es la creación de un sistema para la detección y clasificación de señales de tráfico en tiempo real utilizando técnicas básicas de visión computacional.

Justificación

Actualmente existen múltiples investigaciones orientadas a la creación de un automóvil inteligente, principalmente en la autonomía del mismo. Así mismo, existen diversos medios que sirven de asistentes para los conductores que les ayudan a trazar sus recorridos, evitar accidentes, evitar embotellamientos y proporcionar su ubicación en tiempo real.

Sin embargo, no existen asistentes que le indiquen a un conductor las reglas que deben seguir al conducir por una calle, avenida o carretera.

Es por ello que se decidió implementar un sistema de detección de señales de tráfico que sirva como base para la creación de un asistente para el conductor. Los objetivos detrás de éste proyecto están orientados a la seguridad de los automovilistas y a convertir las tráfico de una ciudad en un tráfico inteligente, algunos de dichos objetivos son:

Un asistente de éste tipo se considera necesario ya que con ello se puede contribuir a:

Diseño del software

Flujo de procesos del sistema

El sistema hace uso de técnicas sencillas de visión computacional para el preprocesamiento del video, la entrada de datos pueden ser de 3 tipos:

Lo que se hace primeramente en tomar uno a uno los frames del video y  cada uno se le aplican los siguientes tratamientos:

El paso anterior nos regresará el frame dividido en 3, uno por cada color filtrado. Éste es el paso más importante del sistema, filtrar correctamente los colores nos permitirá identificar rápidamente las señales ya que los rangos de las máscaras coinciden con los colores de las señales más comunes. Gracias a la modularidad del código es posible en éste paso agregar más máscaras para filtrar más colores o ajustar los rangos para que sean compatibles con señales de tráfico de otros lugares.

Una vez que se hace la identificación, los contornos detectados se convierten en un Bounding Rectangle, dicho rectángulo nos permite encerrar todo el objeto de una sola vez.

La zona dentro del rectángulo se conoce como ROI (Region of interest).

La detección de características es un método lento, ya que se necesitan tener las firmas de cada tipo de señal.

El sistema contiene un programa que permite extraer almacenar las características en archivos de numpy (*.npy), los archivos se pueden cargar posteriormente para entrenar el algoritmo KNN y obtener la firma de cada señal.

El sistema prepara cada una de las firmas al iniciar y las almacena en memoria por lo que no es muy eficiente en ese aspecto, además, cada región de interés se compara con las firmas disponibles una a una lo que consume mucho tiempo de ejecución.

Opcionalmente se pueden aplicar filtros de suavizado a la imagen para reducir el ruido en la misma, con ello se puede tener una detección más limpia y confiable. Se recomiendan dos tipos de filtros, incluidos ya en el sistema:

A continuación se puede ver un frame, el original y los demás postprocesados en cada uno de los pasos antes descritos:

Imagen original

Espacio HSV

Suavizado

Objetos rojos

Objetos amarillos

Objetos azules

Visualización de los diferentes tratamientos que reciben los frames

Regiones de interés

Extracción de las características principales de una imágen,

en éste caso, una señal de alto

Librerías Utilizadas

Las librerías necesarias para que el sistema funcione correctamente son:

Evaluación del desempeño

Para las pruebas se utilizó un equipo Acer 5742G-6426, las especificaciones técnicas de interés son:

Se realizaron pruebas adicionales en un equipo alternativo, cuyas especificaciones son:

Es de esperarse que el desempeño del video se vea afectado por características del equipo que se está utilizando, así como la resolución de los frames a procesar.

Aún existen problemas con el filtrado de los colores, las señales pueden encontrarse obstruidas o despintadas lo que evita que no se filtren correctamente los colores.

Trabajo a futuro

Se quiere probar cual de las tres opciones anteriores resulta la más óptima para el sistema,.

El objetivo es mejorar los tiempos de procesamiento y el desempeño en general

Referencias

Rahman, Abid. (June 2012). Countours. OpenCV Python Tutorials. Recuperado en Mayo de 2013 desde: http://opencvpython.blogspot.mx/2012/06/hi-this-article-is-tutorial-which-try.html

Sinha, Utkarsh. (July 2010). Tracking colored objects in OpenCV. AI Shack. Recuperado en Mayo de 2013 desde: http://www.aishack.in/2010/07/tracking-colored-objects-in-opencv/