本科低年级曾经做过一个提取道路线的题目。
提供的数据:老师给我们了一幅学校周边地区的影像,包括RGB+Infrared四个波段。
一开始使用的方法:当时尚青涩的我和小伙伴们一起使用KMEANS、阈值分割等等方法试图将那道路从影像中分离出来。
遇到的问题:道路是用沥青或水泥做的,楼房也是如此,因此二者光谱信息相似(异物同谱)。只利用光谱信息,楼房和道路难以分辨。
当时的解决方案:当时我希望用形态学的开运算将楼房慢慢删去,值得庆幸得是学校周围的房子都比较小,开运算几次就可以去除,而且不会对道路造成太严重的影响。同时我们也试图通过道路和楼房的几何信息来分类:道路是细长的,而楼房的长宽比没那么夸张。于是我们采用opencv提供的 提取小斑块 的算法,希望来删掉找到的小斑块(楼房)。有一定效果,但是需要手动设定若干参数,一点点调整。每套参数只对一幅图有效。
遥感解译课程学到的 解决方案: 使用MBI算法可以将亮度值相比周围环境比较高的楼房高亮出来。将MBI的结果作为一个波段,使用RGB+Infrared+MBI进行分类,可以将道路和楼房很好地区分开来。[论文原文是直接取阈值进行楼房提取,因为当一个特征足够强大时,可以直接用取阈值的方法将图像进行二分类]
MBI的代码详见我的GITHUB:Priority-At-Next-Intersection/MBI
MBI的论文:https://ieeexplore.ieee.org/document/6056582 Published on IEEE Journal of Selected Topics in Applied Earth Observations and Remote Sensing in 2011.
注意:这是一个非机器学习方法。