TL;DR:是否有 RANSAC 的 C++ 实现或其他可自由用于任意二维点集的鲁棒对应算法?
我知道存在许多包含或使用对应算法的实现,例如 RANSAC(随机采样共识)。它们通常用于计算机视觉应用程序,并在OpenCV、PCL等库中找到。通用算法是众所周知的,并且各个站点列出了不同的步骤。
现在,我发现的所有“高级”实现(为 OpenCV、PCL 等完成)都是针对特定类型的问题以及一组基础假设。在 OpenCV 中,您想要找到第一张图像和第二张图像的一部分之间的单应矩阵(本例)。在 PCL 中,您处于 3D 点云领域,并且(据我所知)您只能匹配特定的、已定义的形状(线、球体等)。
我“简单地”想要做的是获取任意 2D 点集(可能包含一些噪声)并在更大的 2D 点集(也包含一些噪声和其他点)中找到对应关系。除了输入两组点之外,它不需要特定的模型训练。我正在用 C++ 自己实现它,但是:
我绝不是一个经验丰富的程序员,我需要快速执行整个事情;我之前对众所周知的算法(边缘检测、高斯模糊等)的实现已被证明比经过验证的实现慢得多(>10 倍)。
简单地撕掉一个已经存在的开源实现(例如 OpenCV 的)已被证明超出了我目前的能力(太多的依赖和虚拟实现模板等等......)
所以,如果有人知道我错过的可自由使用(类似 BSD)和经过验证的 C++ 实现......