Reconocimiento de señales de tráfico para un sistema de ayuda a la conducción 3 Detalles de implementación 3.1 Hardware y software El sistema analiza el video capturado con una cámara GoPro Hero 3 a una resolución de 1280 x 720 pixeles, pudiendo operar también a 1920 x 1080 pixeles. La lente de esta cámara es asférica. En las lentes esféricas, los rayos de luz que inciden en la periferia convergen a puntos focales distintos de los que entran por el centro, produciendo imágenes suaves y de bajo contraste (fenómeno conocido como aberración esférica). Las lentes asféricas, mediante una lente de forma no esférica, hacen que tanto los rayos que inciden en la periferia como los que inciden en el centro converjan en un punto focal único, obteniéndose así imágenes con una nitidez y claridad más uniforme en todas las zonas de la imagen. Figura 7: Cámara GoPro Hero 3 (izq.) y diferencia entre lente esférica y asférica (der.). Esto es particularmente útil cuando se usan objetivos angulares, que es el caso de esta cámara. Además posee un angular ultra ancho (170 grados), lo cual es una característica interesante para esta aplicación ya que permite ver la periferia del vehículo a poca distancia del eje óptico. La lente tiene una distorsión acusada precisamente en la periferia, pero esto no será un problema para el reconocimiento de señales. El procesamiento de las imágenes se realiza con el software Halcon de la empresa MVTec. A modo de resumen este software proporciona: 11 Detalles de implementación • • • • • • Un entorno de desarrollo propio (HDevelop) Alto rendimiento, soporte completo para procesadores de varios núcleos, soporte para las instrucciones SSE2 y AVX y aceleración por GPU (mediante OpenCL). Una librería con más de 1800 operadores para análisis blob, morfología, emparejamiento (matching), medición, identificación, visión tridimensional, etc. La librería se puede utilizar en los lenguajes C, C++, C#, Visual Basic y Delphi. Soporte para los sistemas operativos Windows, Linux y OS X, en sus versiones de 32 y 64 bits. Proporciona interfaces para cientos de cámaras industriales y capturadoras, y para los estándares GenICam, GigE Vision y IIDC1394. Además existe una versión para sistemas empotrados, Halcon Embedded. 3.2 Módulos de la aplicación La aplicación se divide en dos módulos, uno se encarga del procesamiento de las imágenes capturadas y el otro de interpretar la información que le proporciona el primero. El módulo de procesamiento de imagen se ha programado en el lenguaje propio de Halcon y se ejecuta en HDevelop, mientras que para el módulo que analiza la escena se ha elegido un lenguaje de programación orientado a objetos (c#), que permite crear estructuras de datos más complejas y apropiadas para los cálculos que tiene que realizar. Ambos módulos se comunican mediante un socket TCP en la misma máquina. Notar que esta configuración en dos módulos sería también apropiada si se quisiera instalar el sistema en un vehículo: el módulo de procesamiento de imagen se ejecutaría en un hardware dedicado (un DSP) mientras que el analizador de escena se podría ejecutar en algún procesador ya existente en el vehículo, puesto que no supone mucha carga computacional. 12