Detección de rastro en imágenes forestales

30

¿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:

texto alternativo

y producir una máscara, identificando un probable "rastro", como:

texto alternativo

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?

Cerin
fuente
1
No mencionaste nada al respecto, pero ¿controlas la adquisición de la cámara / imagen? Las personas usan el índice de vegetación usando imágenes infrarrojas cercanas en una situación similar (considere calcular la cobertura forestal desde un satélite). Si tiene infrarrojo cercano, el problema es fácil de resolver.
carlosdc
Yo sí, un poco. Estoy tomando imágenes con una cámara monocular barata (cámara web / cámara de teléfono celular), pero no creo que almacenen infrarrojos.
Cerin
El uso de varios filtros de color que pueden diferenciar entre los espectros de la vegetación y la suciedad, probablemente sería útil
endolito
Tengo curiosidad si has intentado un enfoque bayesiano para entrenar y detectar. Recibí una respuesta que escribí hace unos días, pero luego la eliminé porque pensé que la había descartado después de intentarlo. Si aún no ha considerado esa opción, me encantaría recuperarla.
Lorem Ipsum
@yoda, ¿qué quieres decir con enfoque bayesiano? Solo estoy familiarizado con Bayesian aplicado a la clasificación discreta y las redes lógicas. No estoy familiarizado con que se aplique a CV. No recuerdo haber visto ninguna publicación tuya.
Cerin

Respuestas:

13

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:

"Sobre la eliminación de sombras de las imágenes", GD Finlayson, SD Hordley, C. Lu y MS Drew, IEEE Pattern Analysis and Machine Intelligence (PAMI), Vol.28, No.1, Jan, 2006, pp.59- 68) http://www.cs.sfu.ca/~mark/ftp/Pami06/pami06.pdf

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:

Remoción de sombras
(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:

Cromaticidad
(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.

Datageist
fuente
12

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.

Retroceso1986
fuente
Sí, los senderos se fusionan con otros. Y sí, los senderos están delineados por las características del suelo / grava en el sentido de que esas características deben ser distintas de las áreas que no son senderos. Estoy de acuerdo, que la imagen puede ser desafiante en algunas secciones, pero todavía creo que hay suficiente información para adivinar dónde está el camino. A pesar de que no está familiarizado con este sendero, parece que no tuvo ningún problema con él (excepto por el área inferior izquierda, que es comprensible).
De hecho, puedo adivinar bastante bien como los límites del sendero. Pero me temo que cuento con más información de la que se presenta en la imagen de origen. "Sé" qué es un sendero, presumiblemente porque he construido un modelo o plantilla de las características más destacadas que comprenden un sendero: a través de la experiencia directa, o viendo senderos bien definidos en imágenes, etc. Para resumir: al reconocer el sendero en la imagen de origen, me baso en mucho más de lo que observo en la imagen de origen.
Hay algunas características del sendero que un sistema de visión podría explotar: presumiblemente podemos asumir que el sendero representa un espacio libre y navegable. Por lo tanto, las características de los árboles, arbustos y rocas se pueden clasificar como "sin rastro". Quizás un análisis de textura podría ayudar a discernir esto Sin embargo, no estoy seguro: el suelo debajo de los árboles (medio a arriba a la izquierda) se parece bastante al camino.
Mi primera idea habría sido referirme a las transformaciones LU o Eigen que dan una alta respuesta cuando la textura es muy rugosa. Sin embargo, aquí la principal característica distintiva entre rastro / no rastro parece ser el color. Entonces, tal vez convertirlo en espacio de color HSV y hacer una máscara a partir de los píxeles que tienen un tono 'terroso', parduzco u ocre, daría una estimación aproximada.
AruniRC
12

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.

  1. Necesitará un conjunto de "ejemplos de capacitación", con lo que me refiero a varias imágenes de senderos en diferentes entornos, en los que usted (el supervisor) ha etiquetado lo que cuenta como "sendero" y cuál es el "bosque" de fondo. Divide las imágenes en secciones más pequeñas (típicamente 8x8) y las transforma en un "espacio de características" tomando la DCT (transformación discreta del coseno) de los bloques. La DCT de cada bloque en este caso le proporciona un "vector de características" de 64 puntos.
  2. 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:XxYy1=traily2=forest

    • las distribuciones condicionales de clase
      • PX|Y(x|trail) , la densidad condicional para las entidades cuando la clase es . trail
      • PX|Y(x|forest) , la densidad condicional para las entidades cuando la clase es . forest
    • las probabilidades de clase o el previo
      • PY(trail) , probabilidad de encontrar un en un bloquetrail
      • PY(forest) , probabilidad de encontrar un en un bloqueforest
  3. 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

    y~i(x)=argmaxyiPX|Y(x|yi) PY(yi)
    donde asigna cada bloque a esa clase que tiene la mayor probabilidad posterior. Esto dará como resultado su máscara binaria.

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.

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

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:

T. Hastie, R. Tibshirani y J. Friedman, Los elementos del aprendizaje estadístico: minería de datos, inferencia y predicción. 2ª Ed., Springer-Verlag (2008)

que ahora está disponible como PDF gratuito en el enlace proporcionado. Otro libro decente es:

RO Duda, PE Hart y DG Stork, Pattern Classification , 2nd Ed., John Wiley & Sons (2001)

Lorem Ipsum
fuente
1
En ese sentido, me gustaría señalar ml-class.org, que es una excelente introducción al aprendizaje automático.
bjoernz
Método interesante Sin embargo, cuando dice que Py (sendero) y Py (bosque) son la "probabilidad de encontrar un sendero en toda la imagen", ¿se refiere a la probabilidad de encontrarlos en un bloque de 8x8 o en toda la imagen? Si fuera la imagen completa, me imagino que ambas serían del 100%, ya que todas las imágenes de entrenamiento tendrán ambas en alguna parte.
Cerin
@Cerin: Lo siento, por Py (trail), me refiero a la probabilidad de encontrarlo en un bloque. Entonces, ese sería el total de todos los bloques que tienen rastro por el número total de bloques en toda la imagen. Lo he editado para corregir eso
Lorem Ipsum
¿Cómo definirías el espacio de características X? ¿Usaría algo como la agrupación de K-Means para reducir la dimensionalidad de los vectores de características de 64 puntos a algo así como 10 características?
Cerin
@Cerin Sí, K-means es uno de los enfoques comunes para reducir la dimensionalidad.
Lorem Ipsum
5

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)

mirror2image
fuente
¡Las segmentaciones de textura de Gabor parecen ser agradables!
nkint