¿Alguien sabe de alguna investigación / documentos / software para identificar un sendero (como una línea o curva de punto a punto) en una imagen de una escena forestal (desde la perspectiva de la cámara parada en algún lugar a lo largo del sendero)?
Estoy tratando de encontrar un algoritmo que pueda tomar una imagen como:
y producir una máscara, identificando un probable "rastro", como:
Como puede ver, la imagen original está un poco borrosa, lo cual tiene un propósito. La fuente de la imagen no puede garantizar un enfoque perfecto, por lo que necesito poder manejar una cantidad razonable de ruido y desenfoque.
Lo primero que pensé fue aplicar un desenfoque gaussiano y segmentar la imagen en bloques, comparando los bloques adyacentes en busca de diferencias de color nítidas (lo que indica un "borde" de rastro). Sin embargo, rápidamente me di cuenta de que las sombras y otros cambios en la iluminación lo quitan fácilmente.
Estaba pensando en extraer las funciones SURF, pero solo he tenido éxito con SURF / SIFT cuando la imagen es perfectamente clara y con una iluminación constante.
También he intentado escalar las imágenes y las máscaras a tamaños mucho más pequeños (por ejemplo, 100x75), convirtiéndolas en vectores 1xN y utilizándolas para entrenar una red neuronal basada en FANN (donde la imagen es la entrada y la máscara es la deseada) salida). Incluso en un tamaño tan pequeño, con 1 capa oculta con el 75% del tamaño del vector de entrada, tardó 6 horas en entrenar, y aún no podía predecir ninguna máscara en el conjunto de prueba.
¿Alguien puede sugerir otros métodos o documentos sobre el tema?
Respuestas:
Puede que no sea suficiente por sí solo, pero dado que uno de los problemas tiene que ver con las variaciones de iluminación, un paso de preprocesamiento de eliminación de sombras puede ayudar. La técnica en la que estoy pensando se describe en el siguiente artículo:
La primera parte del proceso produce una imagen de escala de grises invariante de iluminación, que es probablemente lo que desea en este caso. Aquí hay una foto del ejemplo que dan en el periódico:
(fuente: datageist.com )
De hecho, llevar el proceso un paso más allá para producir una imagen de "cromaticidad" puede ser lo que necesita para distinguir limpiamente entre las hojas vivas y muertas. Una vez más, un ejemplo del artículo:
(fuente: datageist.com )
El problema, sin embargo, es que la cámara debe calibrarse primero. Suponiendo que sea posible, alguna combinación de las representaciones que describen probablemente hará que los otros métodos que esté utilizando sean más efectivos.
fuente
No creo que tenga suficiente información en la imagen de origen para producir la imagen de máscara. Puede comenzar segmentando por color, es decir, el verde no es rastro, el gris / marrón sí. Sin embargo, hay regiones grises / marrones en los "bordes del sendero" que no están representadas en su máscara. (Vea el cuadrante inferior izquierdo de su imagen de origen).
La máscara que proporcione implica restricciones estructurales que no son evidentes en la imagen de origen: por ejemplo, quizás sus senderos son de ancho fijo, entonces puede usar esa información para restringir la máscara preliminar devuelta por su reconocedor de patrones.
Continuando con el tema de la estructura: ¿los senderos se fusionan con otros? ¿Están los senderos delineados con ciertas características de suelo / grava? Como humano (¡eso es razonablemente bueno para el reconocimiento de patrones!), Me desafían las características que se muestran en el cuadrante inferior izquierdo: veo regiones grises / marrones que no puedo descartar como "rastro". Tal vez podría hacerlo de manera concluyente si tuviera más información: un mapa y una ubicación conocida, experiencia personal en este camino, o tal vez una secuencia de imágenes que lleven a este punto; tal vez esta vista no sea tan ambigua si el reconocedor "sabe "lo que llevó a esta escena.
Una colección de imágenes es el enfoque más interesante en mi opinión. Continuando con esa línea de pensamiento: una imagen podría no proporcionar suficientes datos, pero una vista panorámica podría desambiguar la escena.
fuente
No existe un algoritmo único que detecte mágicamente los rastros en una imagen aleatoria. Deberá implementar una rutina basada en el aprendizaje automático y "entrenarla" para detectar senderos. Sin entrar en demasiados detalles, aquí hay un resumen de lo que haría en un enfoque de aprendizaje supervisado.
Definiendo un espacio de características , un conjunto de características (un subconjunto de su vector de características de 64 puntos) y un espacio de clase con clases y , usted calcula de tus conjuntos de entrenamiento:X x Y y1=trail y2=forest
Con esto, prueba su imagen (nuevamente, dividiéndola en pedazos más pequeños) y calcula la probabilidad posterior. Usando la teoría de decisión de Bayes, definiría sus criterios de selección binarios (en este caso) algo así como
Tenga en cuenta que esta es una visión general muy simplificada del enfoque. Hay varias cosas a tener en cuenta y la más importante de ellas es elegir el conjunto correcto de características para su problema. También puede hacer cosas más complicadas como usar modelos mixtos y estimaciones de densidad basadas en el núcleo, pero todo eso es demasiado detallado y requiere mucho tiempo para escribir una respuesta.
Para una motivación y confirmación de que vale la pena probar este enfoque, aquí hay un ejemplo de algo que hice hace mucho tiempo como tarea de curso, que es muy similar a lo que está tratando de lograr. El objetivo era detectar al animal de la vegetación de fondo (imagen izquierda). La figura de la derecha muestra la máscara binaria obtenida después de "aprender" a distinguir entre el primer plano y el fondo.
Para obtener más información sobre el aprendizaje automático, es posible que desee ver algunos libros de texto. Uno de los libros de texto bien conocidos y a menudo recomendados en el campo es:
que ahora está disponible como PDF gratuito en el enlace proporcionado. Otro libro decente es:
fuente
¿Es esto de algún interés?
Detección de superficie transitable en tiempo real por fusión de espacio de color y análisis temporal
fuente
Parece un problema para la segmentación de textura (no una segmentación de color). Hay muchos métodos,
a menudo usan wavelets Gabor, como este http://note.sonots.com/SciSoftware/GaborTextureSegmentation.html
Segmentación basada en superpíxeles http://ttic.uchicago.edu/~xren/research/superpixel/
y una segmentación de corte de gráfico similar http://en.wikipedia.org/wiki/Graph_cuts_in_computer_vision
aquí está la descripción general de la wiki http://en.wikipedia.org/wiki/Segmentation_(image_processing)
fuente