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?