RANSAC 线 3d 拟合 3D 线段
RANSAC line3d fitting by 3d line segments
我有很多 3D 线段。 其中一些几乎是平行的 有些朝向不同的方向。我想避免 异常值并获得最佳线 3d 来表示给定的 3D 线 段。
我有点困惑 RANSAC 方法如何适用于这种情况......
我应该先找到一条随机线,还是应该将其视为给定的 3D 点问题。?
任何人都可以向我发布在 C++ 中暗示这一点时要遵循的结构。
RANSAC 是将数据拟合到模型的好工具。如果您在线段集合中有一条 3D 线,则通过运行 RANSAC 并选择最大化内浮线数量的线就足够了。但是,由于集合中有很多行,因此您应该尝试不同的方法(即使是非 RANSAC 的方法,正如我稍后告诉您的那样(。
例如,您可以先运行 RANSAC,尝试查找与尽可能多的段匹配的线。找到该行后,从集合中删除内嵌段并再次运行 RANSAC。
要创建一条线,您只需要一个线段,因此构建线模型非常容易。
要确定线段是否适合线,您可以使用点积计算两者之间的角度(越接近 0 越好(以及从线段的中点到线的距离。
另请注意,第一步可以过滤掉非常小的细分。您可以稍后保存一些迭代并避免干扰结果。
我也可以想到霍夫变换方法。由于您可以从每个线段创建一条线,因此您可以获取其线的参数(法线或方向矢量以及到原点的距离(,将它们量化为可接受的箱大小,并在矩阵中为这些参数添加投票。最后,你的线位于投票矩阵的峰值。
相关文章:
- 无法将结构注册为增强几何体3D点
- OpenGL大的3D纹理(>2GB)非常慢
- 是什么导致了Unity 3D中的"错误线程异常"?
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 如何使用Qt 3D库加载和显示搅拌机.obj源文件场景
- 如何从 3D 曲面网格中删除自相交三角形?
- 确定将弧转换为线段所需的点数
- CUDA 使用共享内存平铺 3D 卷积实现
- 检查框内的 3D 点
- 如何在 3D OpenGL 场景上绘制 SDL 2D 矩形?
- Frank Luna 在他的书"使用 DirectX12 进行 3D 游戏编程"的介绍中盒子示例的问题
- 使用 C++在 OpenGL 中对 3D 多边形进行纹理处理
- 使用 C++在 OpenGL 中移动自动旋转的 3D 多边形
- 是否可以使用 DirectX 3D 11 绘制由三角形组成的圆?
- 如何使用条件计算 3D 网格中从一个点到另一个点的所有路径
- 在 OpenGL 中使用键盘移动 3D 形状,C++
- 是否可以制作没有内部分割的cgal 3d多多马因网格?
- 3D线段和平面相交 - 续
- RANSAC 线 3d 拟合 3D 线段