从物体的不同角度寻找一个好的单应性

Find a good homography from different point of view of objects?

本文关键字:一个 单应性 寻找      更新时间:2023-10-16

我正在使用特征提取(sift,orb)进行对象检测。

我想从对象(训练图像)的不同角度提取ORB特征,然后将所有这些特征与查询图像进行匹配。

我面临的问题是:我如何从图像的不同角度创建一个好的单应性,这些关键点当然有不同的尺寸?

编辑

我想为每个火车图像创建一个单应性,比如3-4个匹配,然后计算一些"平均"单应性。。。

例如,当你从每个火车图像中只有1-2个匹配时,问题就会出现,在这一点上,你甚至不能创建1个单应

创建单应性的代码

  //> For each train images with at least some good matches ??
  H = findHomography( train, scene, CV_RANSAC );
  perspectiveTransform( trainCorners, sceneCorners, H);

我认为这样做没有意义,因为当你谈论单应性时,一对图像a和B与一对图像B和C无关。你会得到不同的好匹配集和不同的单应性,但单应性是不相关的,没有误差最小化是有意义的。

所有最小化都必须在匹配、关键点和描述符内,只考虑图像对。

有一个想法类似于你在FREAK描述符中所问的。您可以使用一组图像训练选定的配对。这意味着FREAK将根据一组图像来决定提取描述符的最佳模式。经过这个训练,你应该找到更强大的数学,这将给你一个更好的单应性。

要找到一个好的单应性,你需要关键点的精确匹配。你需要4场比赛。

最常见的方法是DLT结合RANSAC。DLT是一种线性变换,它可以找到将关键点投影到场景中的单应性3x3矩阵。RANSAC找到满足数学模型的最佳内/外点集,因此它将找到最佳的4个点作为DLT的输入。

编辑

您需要找到稳健的关键点。SIFT可以做到这一点,规模和视角不变。我认为你不需要用不同的图像来训练。寻找平均单应性是没有意义的。你需要为检测到的对象找到唯一的单应性,而单应性将是标记和检测到的物体之间的变换。同态是精确的,找一个均值是没有意义的。

您是否尝试过从对象视图中获取关键点的方法:train_kps_1、train_kps_2……然后将这些数组与场景进行匹配,然后从这些数组中选择最佳匹配,从而获得一个良好匹配的数组。最后用这个结果来寻找单应性作为"火车"。

这里的关键是如何选择最佳匹配,这是一个不同的问题,你可以在这里找到一个很好的答案:

http://answers.opencv.org/question/15/how-to-get-good-matches-from-the-orb-feature/

也许在这里:

http://answers.opencv.org/question/2493/best-matches/