根据我得到的结果和提供的文档,我得出结论,使用非平面钻机的校准在OpenCV中不起作用(它们在很大程度上取决于初始猜测)。根据他们对函数calibrateCamera
该算法执行以下步骤:
- 计算初始内部参数(该选项仅可用 对于平面校准模式)或从输入中读取它们 参数。失真系数最初都设置为零 除非一些CV_CALIB_FIX_K?是指定的。
- 估计最初的 相机姿势好像内在参数已经知道。 这是使用solvePnP
完成的- 运行全球Levenberg-Marquardt 优化算法,以减少重投影错误,即, 观察到的特征点之间的平方距离的总和 imagePoints和投影(使用相机的当前估计值 参数和姿势)对象指向objectPoints。看到 projectPoints了解详情。
同样在强制性中,如果使用非平面钻机作为输入,则需要提供内在的初始估计,从而确认第一点。
所以,我的问题是,是否有任何可用的库(任何语言)都可以为非平面钻机找到内在函数(或者可能与extrinsics一起)?
答案 0 :(得分:1)
如果您可以访问Matlab,或者可以理解Matlab语法并将其翻译成您最喜欢的语法(从Matlab轻松到Python并获得openCV集成)。你可以看看他们的非平面钻机。此代码基于Heikkilä的作品:
并且包括这种校准的示例,这些链接包含相应的代码:
http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/example3.html
http://www.ee.oulu.fi/~jth/calibr/
我希望这个广泛的答案很有用。
答案 1 :(得分:0)
来自MVTec的Halcon允许您指定任何校准装备的3D坐标。 http://www.halcon.com/download/reference/camera_calibration.html