我试图将多条线段拟合到2D点列表中。我的点数量非常少(16或32个)。这些点来自于带有激光测距仪的机器人模拟环境。如果这些点位于一条直线上,这意味着它们检测到了一堵墙;否则,它们检测到了一个障碍物。我正在尝试检测墙壁并计算它们的交点,为此我认为最好的想法是在数据集上拟合线段。
对一组点进行一次线性拟合不是问题,如果我们知道所有这些点都在一条线上或周围。
我的问题是我不知道如何检测应将哪些点集归类为适合在同一条线上拟合,以及每条线上的点数。此外,我甚至不知道线上的点数,而自然地,最好检测到最长可能的线段。
您会如何解决这个问题?例如,如果我查看所有32个点的5点组的所有可能性,则会得到32个选择5 = 201376种可能性。我认为尝试所有可能性并尝试将线条拟合到所有5元组需要太多时间。
那么什么样的更好的算法会运行得更快呢?我可以连接限制内的点并创建折线。但是即使连接这些点也很困难,因为边缘距离甚至在一条线上也会发生变化。
您是否认为可以对离散数据集进行Hough变换?请注意:如果此问题太难解决,我正在考虑使用传感器的顺序进行过滤。这样,算法可能会更简单,但是如果墙前有一个小障碍物,它将分散线条的连续性,从而将墙壁分成两半。