gpt4 book ai didi

c++ - 任意二维集的类 RANSAC 实现

转载 作者:可可西里 更新时间:2023-11-01 16:28:37 31 4
gpt4 key购买 nike

TL;DR:是否有 RANSAC 或其他可自由用于任意二维点集的稳健对应算法的 C++ 实现?

我知道存在许多包含或使用对应算法(例如 RANSAC(随机抽样共识))的实现。它们通常用于计算机视觉应用程序,并可在 OpenCV 等库中找到。 , PCL等。通用算法是众所周知的,各种网站lists不同的步骤。

现在,我发现的所有“高级”实现(为 OpenCV、PCL 等完成)都是针对具有一组基本假设的特定类型的问题。在 OpenCV 中,您想要找到第一张图像和第二张图像的一部分之间的单应矩阵 (this example)。在 PCL 中,您处于 3D 点云领域,并且(据我所知)您只能匹配特定的、已定义的形状 (a line, a sphere, etc.)。

我“简单地”想做的是获取一组任意的二维点(可能包含一些噪声)并在更大的一组二维点(其中也包含一些噪声和其他点)中找到对应关系。除了输入两组点之外,它不需要任何特定的模型训练。我正在用 C++ 自己实现它,但是:

  • 我绝不是一个经验丰富的程序员,我需要整个过程执行得相当快;之前由我自己完成的众所周知的算法(边缘检测、高斯模糊等)的实现已被证明比已验证的实现慢得多(>10 倍)。

  • 事实证明,简单地窃取一个已经存在的开源实现(例如 OpenCV 的)超出了我目前的能力范围(太多的依赖和虚拟实现模板等等......)

因此,如果有人知道我错过的可免费使用(类似 BSD)且经过验证的 C++ 实现...

最佳答案

很难找到流行的、轻量级的、通用的 RANSAC C++ 实现。我刚刚在 MIT 许可下发布了我的通用 RANSAC 实现。

https://github.com/drsrinathsridhar/GRANSAC

GRANSAC 是通用的、模板化的、仅 header 的和多线程的。用户必须实现一个继承 AbstractModel 的类。然后可以对任何类型的模型(例如:2D 线、3D 平面)进行 RANSAC 估计。

我只针对 2D 线拟合测试了它,但也应该适用于其他问题。很乐意添加更多功能(例如自动选择迭代次数等)

enter image description here

关于c++ - 任意二维集的类 RANSAC 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29777238/

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