Reconocimiento de vías fluviales en una fotografía aérea: polígonos de imágenes de detección de bordes

9

Estoy tratando de reconocer vías fluviales a partir de fotografías aéreas (por ejemplo, de Google Maps). Los gobiernos locales a menudo tienen datos SIG que dicen dónde están las vías fluviales (y carreteras, edificios, etc.), pero los datos del agua en ellos a menudo son algo inexactos, y podríamos mejorarlos usando imágenes aéreas. Así que ya tenemos algunos datos que no siempre son confiables.

Sé cómo hacer un procesamiento básico de imágenes en los datos (desafortunadamente todavía no tengo imágenes de muestra para mostrar aquí, estoy tratando de imaginar cómo podría hacer esto, aún no hay código de trabajo):

  • Puedo recopilar algunos conjuntos de valores de color usando trozos de vía fluvial en las imágenes y averiguar qué píxeles están más cerca de estos colores, posiblemente también para otros tipos de características (césped, carreteras, edificios, etc.). Si establezco un umbral en el que los píxeles están "lo suficientemente cerca", obtengo un conjunto de píxeles que probablemente son vías fluviales (pero habrá mucho ruido).

  • Puedo convertir la imagen en escala de grises y usar un algoritmo de detección de bordes estándar para averiguar dónde están los bordes. Una vez más, esto me da un conjunto de píxeles de límites similares, pero habrá ruido y los bordes serán demasiado pensativos y / o tendrán huecos.

Lo que quiero tener como salida es un conjunto de polígonos que delineen las vías fluviales probables.

Intuitivamente, me gustaría usar los bordes detectados para crear polígonos y la información de color para decidir cuáles de ellos son agua, posiblemente haciendo uso de los datos gubernamentales que ya tenemos.

¿Hay alguna forma conocida de llegar del resultado de un algoritmo de detección de bordes a un buen conjunto de polígonos cerrados? ¿O algún otro consejo sobre cómo atacar este problema, si hay una mejor manera?

RemcoGerlich
fuente
1
Nota al margen: ¡Tenga en cuenta que la licencia de Google no permite hacer esto! Openstreetmap tiene el mismo problema . OSM tiene un acuerdo para usar imágenes de Bing.
PiTheNumber

Respuestas:

6

Esto es difícil de hacer solo con información de color. Las variaciones de color entre (o incluso dentro) de imágenes aéreas y satelitales pueden ser enormes. Idealmente, querrá imágenes hiperespectrales o al menos infrarrojas ( consulte este documento ).

Suponiendo que su detección de bordes puede ajustarse a los límites de píxeles, puede tomar los bordes de cada píxel como un polígono cerrado y unirlos para formar un polígono (dependiendo de la implementación de su unión, puede terminar con un polígono con anillos o agujeros internos) o una colección de polígonos El Java topología suite y otras implementaciones de la geometría computacional puede hacer esto mucho más fácil para usted. Si desea utilizar límites de subpíxeles, deberá tener mucho cuidado de tener un buen valor de épsilon establecido para poder ajustar bordes que estén muy cerca pero que no se toquen exactamente.

Si desea tomar los bordes y combinarlos usted mismo, querrá construir un gráfico de bordes que se crucen e implementar código que atraviese el gráfico (por ejemplo, en sentido antihorario) para encontrar dónde se cierra en sí mismo para formar un polígono. Así es como funcionan algunas de las implementaciones de unión de polígonos.

kevin42
fuente