基于我得到的结果以及我得出的结论,我得出的结论是,使用非平面钻机的校准在OPENCV中不起作用(它们在很大程度上取决于初始猜测)。根据他们对功能calibrateCamera
该算法执行以下步骤:
- 计算初始内在参数(仅可用选项 对于平面校准模式)或从输入中读取它们 参数。失真系数最初都设置为零 除非某些cv_calib_fix_k?指定。
- 估计最初 相机姿势好像已经知道了固有参数。 这是使用solvepnp
完成的- 运行全球Levenberg-Marquardt 优化算法以最大程度地减少再投影误差,即 观察到的特征点之间的平方距离总和 图像点和投影(使用相机的当前估计值 参数和姿势)对象点对象点。看 详细信息项目点。
在强制性的情况下,如果您使用非平面钻机作为输入,则需要提供内在的初始估计,从而确认第一点。
所以,我的问题是,是否有任何可用的库(任何语言)可以实现非平面钻机的内在(或可能与外部设备一起)?
如果您可以访问MATLAB,或者可以理解MATLAB语法并将其转换为您喜欢的一个(从MATLAB到Python,并且您可以获得OpenCV Integration)。您可以看一下他们的非平面钻机。此代码基于Heikkilä的作品:
"使用圆形控制点的几何摄像头校准",《图案分析与机器智能的IEEE交易》,第1卷。22,第10页,第1066-1077页,2000年10月。
包括此类校准的示例,这些链接包含相应的代码:
http://www.vision.caltech.edu/bouguetj/calib_doc/htmls/example3.html
http://www.ee.oulu.fi/~jth/calibr/
我希望这个广泛的答案很有用。
MVTEC的halcon允许您指定任何校准钻机的3D坐标。http://www.halcon.com/download/reference/camera_calibration.html