Estoy escribiendo una aplicación que puede detectar carriles en un simulador de conducción. El entorno es relativamente simple, sus carreteras son en su mayoría rectas de varios carriles y casi no tienen curvatura. Por el momento, puedo detectar con éxito las líneas usando la Transformada Hough (clásica), pero el problema es que el HT naturalmente también detecta líneas que no son carriles.Detección de carril en un entorno artificial
¿Cómo puedo ser más selectivo? No dibujar líneas horizontales ya, pero todavía algunas líneas de fluencia en. Idealmente, me gustaría para detectar los límites de carril que el vehículo está viajando. La siguiente es una imagen típica del medio ambiente
Esto es lo que estoy haciendo hasta ahora:
-
1. Como el entorno es más o menos el mismo en todos los lugares donde conduzco, configuro la región de interés (RoI) para excluir el horizonte y todo lo que esté sobre él.
-
2. Umbral de la imagen (voy a explicar mi razón de umbral en un momento)
-
3. Canny Edge Detección
-
4. Aplicar una transformada de Hough
-
5. Dibuje el detectados líneas que excluyen las que tienen un gradiente de 0.0 o casi 0.0
El motivo del umbral de las imágenes es el siguiente. Si echas un vistazo a la fotografía del entorno vinculada anteriormente, verás una línea grisácea que corre paralela a la carretera. Debido a que es una línea continua, a diferencia de los marcadores de carril, la HT termina detectándola. No puedo excluirlo en función del gradiente ya que tiene el mismo gradiente que los marcadores de carril. Con el umbral, puedo eliminar eso y, por lo tanto, solo detectar líneas que son los marcadores de carril reales.
Este es el resultado de las operaciones anteriores
Entiendo que hay muchas soluciones a este problema y he leído innumerables artículos sobre esto, pero todos ellos parecen estar manejando entornos mucho más complicado que esto y/o simplemente están muy por encima de mi cabeza. Por lo que vale, hace poco más de un mes, no tenía experiencia en ComputerVision y todo esto es muy nuevo para mí.
ACTUALIZACIÓN 1:
supongo que para poner esto en mejores condiciones, estoy buscando una manera de modelar los carriles de modo que las líneas que no encajan en el modelo no se incluyen. Lamentablemente, no tengo ni idea de por dónde empezar con los modelos. ¿Alguna sugerencia?
Por lo que vale, he logrado identificar los carriles por los que viaja el vehículo y puedo excluir las líneas adicionales que no son parte del carril "activo", por así decirlo. Con suerte esta foto ayudará
No es perfecto, pero es algo que supongo. Mi objetivo final, después del modelado, es generar un rumbo/posición del vehículo. Pero solo quiero obtener una detección de carril relativamente robusta al principio.Espero que haya una técnica simple relativamente que puede ayudar a lograr esto (algo que no depende de los parámetros del sistema, como la distancia focal del campo de visión).
Lamentablemente, no puedo averiguar la altura de la cámara y otros parámetros del simulador de conducción. Sin embargo, el entorno se ve exactamente como la foto superior al 95% del tiempo. ¿Valdría la pena investigar ese método? – saad
Si conoce el campo de visión de la cámara, puede determinar la inclinación desde la coordenada y del punto de fuga. Si conoce la inclinación (inclinación) y el ancho del carril, puede determinar la altura de la cámara. – ssegvic
¿Hay alguna manera de que pueda encontrar el campo de visión empíricamente? Sin saber la distancia focal. El problema es que la simulación de manejo no fue programada por mí y de hecho es de otra compañía completamente. Si bien trataré de preguntarles sobre tales cosas, ¡no creo que contestar esas preguntas sería una prioridad en su lista de prioridades! – saad