gpt4 book ai didi

algorithm - 碎片化线拟合

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:48:36 25 4
gpt4 key购买 nike

我想将一条线拟合到线片段,即大约属于该线的少量(通常少于 10 个)线段。这条线有一个小坡度。但也有异常值:线外的段(通常较小)。下图显示了一个典型案例。 block 之间没有水平重叠。

enter image description here

我宁愿避免尝试对分割的所有子集进行拟合并保留最好的。我也不会依赖 RANSAC,因为样本太小。

有什么建议吗?


更新:

我现在计划将问题重铸为在点上拟合线的问题,即各个线段上的点的无限大,假设线性密度恒定。通过以积分形式重写最小二乘方程,可以看出我们可以认为线段集中在它们的中间,权重等于它们的长度;还有一个额外的术语考虑了它们的斜率。这为分段拟合提供了良好的基础。

现在我仍然需要合并离群值检测。受 RANSAC 的启发,我可以选择最长的段并单独或成对使用它们来获得候选行。对于每一行,评估总误差,并保留给出最小值的行。从那里开始,一些标准(尚未找到)应该允许拒绝异常值并对异常值执行最终的最小二乘法拟合。

最佳答案

我猜斜率将大约是线片段斜率的平均值乘以等于片段长度的因子(或片段长度的平方,具体取决于外围片段的长度比较)。然后最适合该斜率的直线。

所以取线片段,将斜率转换为角度 (arctan2(y1-y0,x1-x0)) 乘以长度,将它们全部相加,除以(所有片段的总长度)。对位置(线片段的中点位置 * 片段的长度)/(所有片段的总长度)做同样的事情,然后确保具有该斜率的线截取具有该值的点。

更新:

如果我们不考虑太多关于斜率的问题,我们应该根据不同段的影响在位置上最好地拟合线,我们再次根据它们的长度加权。

找出片段的总长度。迭代片段,直到片段总长度的 1/3。这将是你的第一点的 x。然后选择一些任意小的值并再次遍历片段,以您选择的速率采样。然后,该样本的影响是给定的 y 乘以 x 到 x 1/3 的线性距离,通过所有片段,所有片段都通过所有片段的线性距离的总和归一化。对 2/3 的方式执行相同的操作。并在两个结果点之间画一条线。

关于algorithm - 碎片化线拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36682067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com