Я пытаюсь распознать водные пути по аэрофотоснимкам (скажем, из Google Maps). Местные органы власти часто располагают данными ГИС, в которых указано, где находятся водные пути (и дороги, здания и т. Д.), Но данные о них в воде часто несколько неточны, и мы могли бы улучшить их, используя аэрофотоснимки. Итак, у нас уже есть данные, которым не всегда можно доверять.
Я знаю, как выполнить некоторую базовую обработку изображений на данных (к сожалению, у меня пока нет примеров изображений для показа здесь, я пытаюсь представить, как я мог бы это сделать, пока нет рабочего кода):
Я могу собрать некоторый набор значений цвета, используя кусочки водного пути на изображениях, и выяснить, какие пиксели ближе всего к этим цветам, возможно, также для других типов объектов (трава, дороги, здания и т. Д.). Если я установлю порог, на котором пиксели «достаточно близки», я получу набор пикселей, которые, вероятно, являются водными путями (но будет много шума).
Я могу превратить изображение в оттенки серого и использовать стандартный алгоритм обнаружения краев, чтобы выяснить, где находятся края. Опять же, это дает мне набор пикселей с одинаковыми границами, но будет шум, и края будут слишком продуманными и / или будут иметь пропуски.
В качестве результата я хочу получить набор полигонов , очерчивающих вероятные водные пути.
Интуитивно я хотел бы использовать обнаруженные ребра для создания многоугольников и информацию о цвете, чтобы решить, какие из них являются водами, возможно, используя правительственные данные, которые у нас уже есть.
Есть ли известный способ добраться от результата алгоритма обнаружения ребер до хорошего набора замкнутых многоугольников? Или какие-либо другие советы о том, как решить эту проблему, если есть лучший способ?