Próbuję rozpoznać drogi wodne na podstawie zdjęć lotniczych (powiedzmy z Google Maps). Władze lokalne często dysponują danymi GIS, które wskazują, gdzie znajdują się drogi wodne (i drogi, budynki itp.), Ale dane na ich temat są często nieco niedokładne i możemy być w stanie je poprawić za pomocą zdjęć lotniczych. Mamy już pewne dane, którym nie zawsze można ufać.
Wiem, jak wykonać podstawowe przetwarzanie obrazu na danych (niestety nie mam tutaj jeszcze przykładowych zdjęć, próbuję sobie wyobrazić, jak to zrobić, jeszcze nie działający kod):
Potrafię zebrać pewien zestaw wartości kolorów za pomocą fragmentów drogi wodnej na obrazach i dowiedzieć się, które piksele są najbliższe tym kolorom, być może również w przypadku innych rodzajów obiektów (trawa, drogi, budynki itp.). Jeśli ustawię próg, na którym piksele są „wystarczająco blisko”, otrzymam zestaw pikseli, które prawdopodobnie są drogami wodnymi (ale będzie dużo hałasu).
Mogę zmienić obraz w skalę szarości i użyć standardowego algorytmu wykrywania krawędzi, aby dowiedzieć się, gdzie są krawędzie. Znów daje mi to zestaw pikseli o podobnych granicach, ale będzie hałas, a krawędzie będą zbyt przemyślane i / lub będą miały luki.
To, co chcę mieć jako wynik, to zestaw wielokątów, które przedstawiają prawdopodobne drogi wodne.
Intuicyjnie chciałbym użyć wykrytych krawędzi do tworzenia wielokątów i informacji o kolorze, aby zdecydować, która z nich jest wodą, prawdopodobnie wykorzystując dane rządowe, które już mamy.
Czy istnieje znany sposób przejścia od wyniku algorytmu wykrywania krawędzi do ładnego zestawu zamkniętych wielokątów? Lub jakieś inne wskazówki, jak zaatakować ten problem, jeśli istnieje lepszy sposób?