小套2D点的简单配准算法

6 opencv 2d point registration point-clouds

我正在尝试找到一种简单的算法来查找两组2D点(注册)之间的对应关系。一组包含我要查找的对象的模板,第二组主要包含属于感兴趣对象的点,但是它可能很嘈杂(缺少点以及不属于该对象的其他点) 。两组都包含约40个2D点。第二组是第一组的单应性(平移,旋转和透视变换)。

我对寻找一种注册算法以获取点对应感兴趣。我将使用此信息来查找两组之间的转换(所有这些都在OpenCV中)。

谁能建议可以完成这项工作的算法,库或少量代码?当我处理小集合时,不必对其进行超级优化。目前,我的方法是类似于RANSAC的算法:

  1. 从集合1和集合2中选择4个随机点。
  2. 计算变换矩阵H(使用openCV getPerspective())
  3. 使用H扭曲第一组点并测试它们如何与第二组点对齐
  4. 重复1-3 N次,然后根据某种度量标准(例如平方和)选择最佳变换。

有任何想法吗?感谢您的输入。

Hum*_*awi 0

你可能只使用cv::findHomography. 这是一种基于 RANSAC 的方法cv::getPerspectiveTransform

auto H = cv::findHomography(srcPoints, dstPoints, CV_RANSAC,3);
Run Code Online (Sandbox Code Playgroud)

其中 3 是重投影阈值。

  • `cv::findHomography` 要求两个点集(这里的 srcPoints 和 dstPoints)相对应。我有兴趣了解如何找到该对应关系,即源点云中的哪些点对应于目标点云中的哪些点。RANSAC 方法仍然需要合理数量的内点。简单地传递两个不协调的点云是行不通的。 (3认同)