Title Image

Blog

Aforos de tráfico mediante el reconocimiento automático de matrículas

  |   Transporte y movilidad

El conteo de vehículos es una forma común de obtener datos de tráfico con el que poder para poder determinar la demanda y realizar, por ejemplo, simulaciones micro y macroscópicas del flujo de tráfico en una red, estudios de mercadotecnia, control de accesos a aparcamientos, estudios de origen y destino, tiempos de recorrido, etc.

El objetivo es obtener datos brutos con los que, un vez depurados, poder realizar una modelización de la red de transporte o un control o caracterización en el uso de un servicio. Todo ello con el fin de evaluar el rendimiento de una infraestructura de cara a facilitar tareas de planificación y gestión desde el punto de vista de los operadores del sistema.

Si nos detenemos en los sistemas de gestión de tráfico, aunque existen diferentes métodos con los que asignar la demanda a una red -que en definitiva es introducir vehículos en el modelo con los que poder generar rutas- como pueden ser el uso de matrices origen-destino (O-D), el uso de datos estadísticos (de población, motorización…), la simple generación de viajes aleatorios, etc. por lo general la captura de datos mediante puntos de aforo es uno de los más precisos (y caros). Los recuentos en estos puntos, orígenes y sumideros de vehículos, nos permitiría, por ejemplo, computar rutas.

Estos datos se pueden capturar bien mediante dispositivos de conteo automatizados, como pueden ser tubos neumáticos, bucles de inducción, detectores de radar, equipos de visión artificial, etc. o bien pueden obtenerse mediante conteos manuales. El tipo de información variará dependiendo del método y la tecnología utilizada: desde los sistemas manuales que se llevan a cabo por personal especializado mediante la observación visual, hasta estaciones de aforo con sistemas electrónicos automáticos que permiten recoger información de intensidades, velocidad, tipos de vehículos, etc.

Estación automática de aforo vehicular

Estación de aforo vehicular. Bajo la calzada se disponen espiras electromagnéticas instaladas en cada carril que detectan el paso del vehículo, calculando datos como peso, longitud o velocidad. Suelen instalarse junto a un pequeño panel solar para su alimentación.

En este artículo nos centraremos en cómo hacer uso de sistemas de reconocimiento automático de matrículas (ANPR) como un método asequible y preciso para aforar vehículos basado en la lectura de placas de matrículas mediante técnica OCR (Optical Character Recognition).

En Alter Geosistemas lo hemos venido utilizando de manera satisfactoria para la realización, por ejemplo, de informes periciales en los que es necesario conocer el índice de rotación de plazas de aparcamiento y analizar su demanda. No obstante, esta tecnología también permite recopilar datos específicos sobre el recuento vehículos con los que poder generar matrices O-D con los que poder calibrar y validar modelos de tráfico.

En nuestro caso hemos venido usando OpenALPR, una biblioteca de reconocimiento automático de matrículas de código abierto programada en C ++, pero con bindings en C #, Java, Node.js, Go y Python. En este artículo nos centraremos en la herramienta CLI, que facilita la interacción con la biblioteca mediante línea de comandos. En este ejemplo utilizaré Linux  para su instalación y ejecución, pero también hay disponibles ejecutables para usuarios de Windows. En ambos casos el uso de los comandos será el mismo.

Lo primero es instalar el programa, en mi caso desde Linux Ubuntu:

sudo apt install openalpr openalpr-daemon openalpr-utils libopenalpr-dev

La biblioteca analiza imágenes, secuencias de video o capturas directas de la cámara para identificar matrículas. La salida devuelve la representación de texto de los caracteres de las matrículas, el grado de precisión y la posibles coincidencia con el patrón definido. Debido a que el patrón de detección de matrículas que utiliza OpenALPR para el caso español es muy genérico, en Alter Geosistemas realizamos una mejora de dicho patrón que toma en consideración los números de matrícula del sistema nacional actual y el antiguo sistema provincial alfanumérico (vigente de 1971 a 2000), considerando además los máximos provinciales alcanzados en septiembre del año 2000 en las matrículas de este último sistema. Esto devuelve resultado más acertados.

Detección de matrículas por OpenALPR

La fotografía fue tomada desde el interior de un vehículo en un día lluvioso y sin unas condiciones de luz óptimas. Aún así el OpenALPR ha sido capaz de distinguir la placa matrícula del antiguo sistema provincial español y reconocer su contenido.

El siguiente comando intentará reconocer las matrículas recogidas en la imagen vehiculo.jpg utilizando los datos de reconocimiento de matrículas de tipología europea (eu) y especificando que el patrón de reconocimiento OCR sea el de matrículas españolas (es).

emilio@gerty:~$ alpr --country eu --pattern es vehiculo.jpg 
plate0: 10 results
    - S5526AG    confidence: 86.0918     pattern_match: 1
    - S526AG     confidence: 82.6901     pattern_match: 0
    - SS526AG    confidence: 81.6995     pattern_match: 0
    - SB526AG    confidence: 81.122      pattern_match: 0
    - S556AG     confidence: 81.0435     pattern_match: 0
    - S56AG      confidence: 77.6419     pattern_match: 0
    - 55526AG    confidence: 77.4892     pattern_match: 0
    - S5526A0    confidence: 77.2945     pattern_match: 0
    - SS56AG     confidence: 76.6512     pattern_match: 0
    - SB56AG     confidence: 76.0738     pattern_match: 0

Como podemos apreciar el algoritmo de reconocimiento obtuvo una coincidencia acorde el patrón de matrículas españolas, siendo asimismo el resultado más preciso (86,0918 %).

Pero también es posible procesar un lote completo de imágenes de un directorio, un archivo de vídeo o directamente de un stream de una cámara:

alpr --country ue *.jpg
alpr --country ue video.mp4
alpr --country ue /dev/video0

Por defecto OpenALPR devuelve 10 coincidencias máximas posibles de resultados para cada matrícula junto con su probabilidad. En el siguiente ejemplo se procesa un archivo de vídeo, reduciendo el número de posibles resultados por matrícula a 5:

alpr --country eu --pattern es --topn 5 --json video.mp4 > resultados.json

Además mediante elparámetro opcional –json es posible generar un archivo de resultados en JSON, el cual al ser un formato legible universal  puede ser procesados por otras aplicaciones sin demasiada dificultad.

En este sentido utilizaré opcionalmente jq, un magnífico programa que permite interrogar y manipular archivos JSON (también disponible para Windows). Esto nos facilita convertir estos datos JSON a formato CSV para su importación y análisis posterior en cualquier base de datos:

sudo apt install jq moreutils

jq -r '.results[].candidates[] | map(values) | @csv' resultados.json > resultados.csv

Como vemos los resultados de aforos derivados de datos ANPR son potencialmente precisos y con OpenALPR es posible generar datos en bruto del número de vehículos con los que poder modelizar o caracterizar un infraestructura o servicio. No obstante, también existen factores limitantes inherentes al propio sistema, como pueden ser la resolución y calidad de la imagen, visibilidad, velocidad o ángulo de la toma que deben considerarse previamente en la fase de planificación de los aforos.