另一个OpenCV问题;
不用我实现两个版本,有人能告诉我cvPOSTIT和cvFindExtrinsicCameraParams2之间的区别以及每个方法的优势吗?
输入和输出似乎是相同的。
另一个OpenCV问题;
不用我实现两个版本,有人能告诉我cvPOSTIT和cvFindExtrinsicCameraParams2之间的区别以及每个方法的优势吗?
输入和输出似乎是相同的。
从我的经验来看,cvFindExtrinsicCameraParams2()适用于共面点(因此它可能是http://dl.acm.org/citation.cfm?id=228149的实现),而cvPOSIT()不适用。但我并不100%确定。
我已经使用过cvPOSIT了。它只适用于物体上的三维非共面点。因为它基于“DAVIS,D.F.D.A.L.S.1995年的25行代码中的基于模型的对象姿态算法”。所以你必须找到一个解决共面特征的方法。
使用cvFindExtrinsicCameraParams2(),它也适用于平面特征,使用cvFindHomography解决变换,然后通过Levenberg-Marquardt逼近来优化结果。对于非共面点,预处理是通过不同的方法DLT(直接线性变换)完成的(不再是“.. 25行代码”文章)
我不太确定它们的表现,哪一个更快。据我所知,“.. 25行代码”非常快,适用于实时视觉。
看起来 cvPOSIT()
只存在于 OpenCV 的旧 C API 中,而不在新的 C++ API 中。相反,cvFindExtrinsicCameraParams2()
在两者中都有。虽然这并不是一个完美的指标,但我最好的猜测是它们都实现了 POSIT 算法,并进行了轻微的修改,前者仅出于遗留原因存在。
除此之外,你的猜测和我的一样好。如果你想要一个明确的答案,我建议在 OpenCV 邮件列表上询问。