我正在尝试从航拍照片中识别出水道(例如Google Maps)。地方政府通常使用GIS数据来说明水路(以及道路,建筑物等)的位置,但是其中的水数据通常有些不准确,我们也许可以使用航拍图像对其进行改进。因此,我们已经有了一些并不总是值得信赖的数据。
我知道如何对数据进行一些基本的图像处理(不幸的是,我这里还没有显示示例图像,我试图想象如何做到这一点,尚无可用的代码):
我可以使用图像中的水道收集一些颜色值集,并找出哪些像素最接近这些颜色,可能还适用于其他类型的要素(草,道路,建筑物等)。如果我设置一个“足够接近”像素的阈值,则会得到一组可能是水道的像素(但会产生很多噪点)。
我可以将图像转换为灰度图像,并使用标准的边缘检测算法来找出边缘在哪里。再次,这给了我一组具有相似边界的像素,但是会产生噪点,边缘也会过分思考和/或存在间隙。
我想要的输出是一组概述可能的水路的多边形。
直观地讲,我想使用检测到的边缘来创建多边形,并使用颜色信息来确定其中哪些是水,这可能要利用我们已经拥有的政府数据。
有没有一种已知的方法可以将边缘检测算法的结果转化为一组漂亮的封闭多边形?如果有更好的方法,或者还有其他有关如何解决此问题的技巧?