我需要将lidar(x / y / height)记录的路径匹配到地图图块(像素高度字段)
我可以假设问题是2.5D(即每个点的唯一高度,没有洞穴),并且该区域足够小以使网格均匀(不需要考虑曲率)。当然,赛道数据很嘈杂,而且我事先没有任何已知的位置。
不是基于完整的基于3D点的迭代最近点是否有任何简单的表面路径匹配算法我应该看看?
具体来说,它似乎是一个图像处理问题(x,y,高度=强度)所以某种蛇匹配算法?
答案 0 :(得分:0)
不是强力(计算每个起点的完整路径的误差),而是只能扩展最佳点并可能节省大量工作。
规格化:
查找pathMaxX,pathMaxY,gridMaxX,gridMaxY。
deltaMaxX = gridMaxX - pathMaxX,deltaMaxY = gridMaxY - pathMaxY。
为deltaX和deltaY的所有组合创建一个包含(deltaMaxX + 1)*(deltaMaxY + 1)节点的数组或列表。每个节点都必须包含以下信息:
按错误排序数组。
当arr [0] .error< = arr [1] .error:
删除节点0并将其插入正确的位置,以便数组再次排序。
重复步骤6.和7.直到找到解决方案。
如果你首先将路径中的点按极端高度排序(首先是最低点和最高点,然后朝着网格的平均高度移动,例如,你应该(我认为值得)你可以进一步改进算法,例如按abs(height - averageGridHeight)降序排序。像这样大的错误是早期产生的,因此分支可以提前减少。
答案 1 :(得分:0)
纯粹是理论上的,但是如果你将3D数据编码为灰度图像(3D路径作为灰度图像,高度图已经可能就是这样,只需要确保尺度有意义)。
如果您将3D路径作为灰度图像并将高度图作为灰度图像,那么您可以使用计算机视觉技术在干草堆搜索中进行搜索。例如,在OpenCV中,有一些技术可以在更大的图像中查找子图像: