获得pnp或posit的2d-3d点对应关系

时间:2012-11-25 22:23:12

标签: image-processing pattern-matching pose-estimation

我正在尝试根据它的图像来估计卫星的姿势和位置。我有一个卫星的3D模型。当我自己选择点对应时,使用PnP求解器或POSIT很有效,但是我需要找到一种自动匹配点的方法。使用角点检测器(我目前发现的最好的一个是基于轮廓)我可以在图像中找到所有相关点以及一些虚假点。但是,我需要将图像中的给定点与3D模型中的正确点匹配。我在这个主题上读到的文章似乎总是假设我们已经找到了点对而没有详细说明如何这样做。

是否有任何方法可以根据某些不变特征确定这些对应关系?或者我应该采用不基于角点的不同方法?

2 个答案:

答案 0 :(得分:1)

您可以查看SoftPOSIT算法,该算法确定3D-2D对应关系,然后执行POSIT算法。据我所知,Matlab代码可用于SoftPOSIT。

答案 1 :(得分:0)

您必须使用RANSAC进行PnP,请参阅openCV代码solvePnPRansac()。这种方法可以容忍高比例的不匹配,因此您不需要精确匹配所有匹配,但只需要一定百分比的正确匹配(即使低至30%)。当然,最小数量的正确对应关系是4。

说到不变特征 - 如果相邻帧之间的旋转量很小,则不需要使用不变特征。即使是一小块灰色强度也足以找到匹配。唯一的问题是您必须更新描述符,甚至根据模型旋转在模型上选择不同的特征点。后者可能很难做到,因为你必须知道每个特征的3D坐标。