另一个OpenCV问题;
没有我必须实现2个版本-谁能告诉我cvPOSTIT和cvFindExtrinsicCameraParams2之间的差异,也许每个的优势。
输入和输出看起来是相同的。
根据我的经验,cvFindExtrinsicCameraParams2()适用于共面点(因此它可能是http://dl.acm.org/citation.cfm?id=228149的实现),而cvPOSIT()则没有。但我不能百分之百确定。
似乎cvPOSIT()
只存在于OpenCV的旧C API中,而不存在于新的c++ API中。相反,cvFindExtrinsicCameraParams2()
在两者中。虽然不是一个完美的指标,但我最好的猜测是,它们都通过微小的修改实现了POSIT算法,而前者仅因遗留原因而存在。
我已经使用了cvPOSIT。它只适用于物体上的3D非共面点。因为它基于"DAVIS, d.f.d.a.l.s. 1995"中的算法。基于模型的对象姿态在25行代码"。所以你必须找到一种方法来解决共面特征
使用cvFindExtrinsicCameraParams2(),它也适用于平面特征,使用cvFindHomography解决转换,然后通过levenberg-marquardt近似改进结果。对于非共面点,预处理由不同的方法DLT(直接线性变换)完成(而不是"…25行代码"文章)
我不太确定他们的性能,哪一个更快。据我所知,"……"25行代码"的速度非常快,适合目前的实时视觉。