gpt4 book ai didi

c++ - RANSAC line3d 由 3d 线段拟合

转载 作者:行者123 更新时间:2023-11-28 07:33:49 29 4
gpt4 key购买 nike

I am having many 3d line segments. some of them are nearly parallel and some are oriented in to different direction. I want to avoid outliers and to get the best line 3d to represent the given 3d line segments.

我有点困惑 RANSAC 方法如何适用于这种情况...

我应该先找到一条随机线还是应该将其视为给定的 3d 点问题?

任何人都可以将在 C++ 中实现时要遵循的结构发给我。谢谢

最佳答案

RANSAC 是将数据拟合到模型中的好工具。如果您在一组线段中有一条 3D 线,通过运行 RANSAC 并选择最大化内点数量的线就足够了。但是,由于集合中有很多行,您应该尝试一种不同的方法(即使是非 RANSAC 方法,我稍后会告诉您)。

例如,您可以先运行 RANSAC,尝试找到与尽可能多的段匹配的行。找到那条线后,从集合中删除内点段并再次运行 RANSAC。

要创建一条线,您只需要一个线段,因此构建线模型非常容易。

要确定线段是否适合一条线,您可以计算点积(越接近 0 越好)和线段中点到线的距离之间的角度。

另请注意,您可以在第一步中过滤掉非常小的片段。您可以稍后保存一些迭代并避免嘈杂的结果。

我也可以想到霍夫变换方法。由于您可以从每个线段创建一条线,因此您可以获取其线的参数(法线或方向 vector 以及到原点的距离),将它们量化为某个可接受的 bin 大小,并为矩阵中的这些参数添加投票。最后,您的线条位于投票矩阵的顶部。

关于c++ - RANSAC line3d 由 3d 线段拟合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17132066/

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