Ich versuche, Wasserstraßen anhand von Luftbildern zu erkennen (z. B. aus Google Maps). Kommunalverwaltungen verfügen häufig über GIS-Daten, aus denen hervorgeht, wo sich die Wasserstraßen (und Straßen, Gebäude usw.) befinden. Die darin enthaltenen Wasserdaten sind jedoch häufig etwas ungenau, und wir können sie möglicherweise mithilfe von Luftbildern verbessern. Wir haben also bereits einige Daten, denen man nicht immer vertrauen kann.
Ich weiß, wie man eine grundlegende Bildverarbeitung für die Daten durchführt (leider habe ich hier noch keine Beispielbilder, ich versuche mir vorzustellen, wie ich das machen könnte, noch kein funktionierender Code):
Ich kann einige Farbwerte mithilfe von Wasserstraßen in Bildern erfassen und herausfinden, welche Pixel diesen Farben am nächsten kommen, möglicherweise auch für andere Arten von Merkmalen (Gras, Straßen, Gebäude usw.). Wenn ich einen Schwellenwert festlege, bei dem die Pixel "nah genug" sind, erhalte ich eine Reihe von Pixeln, bei denen es sich wahrscheinlich um Wasserstraßen handelt (aber es wird viel Rauschen geben).
Ich kann das Bild in Graustufen umwandeln und mithilfe eines Standard-Kantenerkennungsalgorithmus herausfinden, wo sich die Kanten befinden. Auch dies gibt mir eine Reihe von Pixeln mit ähnlichen Grenzen, aber es wird Rauschen geben und Kanten werden zu denken und / oder Lücken haben.
Was ich als Ausgabe haben möchte, ist eine Reihe von Polygonen , die die wahrscheinlichen Wasserstraßen umreißen.
Intuitiv möchte ich die erkannten Kanten verwenden, um Polygone zu erstellen, und die Farbinformationen, um zu entscheiden, welche davon Wasser sind, wobei möglicherweise die bereits vorhandenen Regierungsdaten verwendet werden.
Gibt es einen bekannten Weg, um vom Ergebnis eines Kantenerkennungsalgorithmus zu einem schönen Satz geschlossener Polygone zu gelangen? Oder andere Tipps, wie Sie dieses Problem angreifen können, wenn es einen besseren Weg gibt?