我们开发了一个可以自动的流程,利用OpenStreetMap(OSM)和SAM完成道路宽度测量。
a) 该过程如何自动生成提示并将其提供给 SAM?
b) 如何测量从航空图像中提取的道路宽度?如图 2 所示,步骤 1 到 4 是问题 a 的解决方案,而步骤 5 和 6 给出了问题 b 的答案。OpenStreetMap在开始时集成到过程中,以生成SAM提示并协助宽度测量。OSM 对于获得正确的宽度结果至关重要,而 SAM 负责道路提取的质量。
点提示:
图5中的线形图表示了图4中对应航拍图像中OSM所示道路的位置,可以起到提示的作用。因此,可以从中选择点,形成提示。点可以是随机的,也可以是有意选择的。根据一些初步的实验结果,我们提出通过在垂直和水平方向上添加虚拟线,将4096x4096图像的正方形空间分成9个大小几乎相等的小块。通过选择位于每个块中的点,我们可以得到整个图像的最多9个点。目的是在避免边界位置的同时保证有效提示均匀分布。图5中的线预计将穿过第一列中的3个虚拟块,因此将根据其点提示选择3个点。从最后一步获得的SAM分割点被自动馈送到SAM中,作为分割所需对象的积极提示。。
宽度测量(不感兴趣不用看,全是后处理操作,不涉及深度学习):
图7:将道路掩模与线图通过插值alpha因子0.8进行混合。在混合图像中,OSM线应该是道路的中心线,因此可以发现部分不对准。混合后的图像通过以下步骤测量宽度:
1)寻找最快路径:将图7中的OSM白线写成一个数组,可以对所有白色像素的位置进行排序,列示为[[0,226]…[228]…[2,230]…]. 为了获得直线所在的最快路径,可以通过从每列中提取中点像素来简化数组,如图9中橙色部分所示。计算中点像素,它们的连接构成最快路径。该方法确保在任何精细增量分析中都不会遗漏道路的微小方向变化,并且在后续计算中仅处理大约五分之一的原始像素即可保持计算效率。
(2)为宽度像素添加垂直线:在上一步中,将OSM线简化为离散像素列表,由该列表中任意两个连续像素组成的向量可以表示一小部分道路的位置和方向。V1由第一中点像素[0,228]和第二中点像素[1,230]组成,表示道路在点[1,230]处的方向。从向量 V2 延伸的线表示点 [1, 230] 处的道路宽度,在图 8 的混合图像中绘制为零宽度的红线。在此图像中,红线穿过道路区域(阴影)的像素数计为 73 作为宽度像素。