【问题标题】:Calibrating camera with a glass-covered checkerboard用玻璃覆盖的棋盘校准相机
【发布时间】:2013-03-03 09:57:49
【问题描述】:

我需要找到单个的内在校准参数。为此,我从不同角度拍摄了几张棋盘图案的图像,然后使用校准软件。

为了使校准图案尽可能平坦,我将其打印在一张纸上并用 3 毫米玻璃盖住。显然图案的图像是经过玻璃修饰的,因为它与空气相比具有不同的折射系数。

外在参数会被玻璃扭曲。这是因为我们看到的棋盘格没有到位。但是,如果已知玻璃的厚度以及玻璃和空气的折射系数,则似乎可以恢复外部参数。

所以,问题是:

  • 是否可以计算外部参数,如果可以,那么如何计算? (现在没有必要,只是一个有趣的理论问题)
  • 从这些图像获得的内在校准参数是否等同于从通常的校准程序(没有盖玻片)获得的参数?

通过使用玻璃,GML Camera Calibration Toolbox(基于 OpenCV)报告的校准参数变得更加准确。 (这有什么意义吗?)但是这种方法有一个小缺点 - 不需要的反射,尤其是来自光源的反射。

【问题讨论】:

  • 查看 GML 项目网页,我看到一个结果表明使用图像中的 2 种模式而不是 1 种模式可以获得更好的准确性。使用玻璃罩时,哪些地方表明他们的结果更好?
  • 不建议这样做,但我用玻璃得到的结果给出了更小的重投影误差和估计参数的更小的不确定性。
  • 我其实有这个代码,如果你还有兴趣我可以贴出来,我有足够的时间呵呵。
  • 安德,我仍然对解决方案感兴趣。把代码贴出来就好了!

标签: computer-vision camera-calibration


【解决方案1】:

我推荐你选择一个非常平坦的支撑(这是我自己推荐的 here)。但是,请原谅我问了一个显而易见的问题,你为什么要用玻璃盖住图案?

由于练习的目的是确保目标的平面度,而不是其他,因此您不妨将与纸张图案相反的一侧粘上,避免所有这些麻烦。是的,随着时间的推移,图案会变脏和磨损,需要更换。因此,您只需将其刮掉并更换即可:打印棋盘很便宜。

如果由于某种原因,您被前面的玻璃卡住了,我建议您先对由于玻璃折射引起的预期光线偏转进行粗略计算,然后检查它是否实际可测量通过您的设备。给定您正在使用的镜头的标称焦距(以毫米为单位)以及传感器的物理宽度和像素密度,您可以轻松地在图像中心进行计算,假设目标相对于焦轴的“极端”旋转角度(例如,45 度)和标称距离。作为第一个近似值,您可以将图案建模为“绘制”在玻璃上,因此忽略第一次折射,只考虑玻璃对空气的折射。

如果上述计算表明效果是可测量的(偏转 >= 1 像素),则需要将玻璃添加到场景模型中,并在捆绑调整阶段求解其参数以及内在和外在参数。首先,我将使用两个参数,厚度和折射系数,并假设两个面都是平面且平行的。它只会使成本函数中角投影的计算变得更加复杂,因为您必须将光线偏转考虑在内。 考虑到成本函数的额外复杂性,我肯定会编写模型的代码以使用Automatic Differentiation (AD)。

如果您真的想完成这个练习,我建议您在支持 AD 的 Google Ceres 捆绑调整器之上编写求解器,以及许多不错的功能。

【讨论】:

  • 用玻璃覆盖的原因是它是确保图案完全平整的最简单方法。但似乎玻璃会产生非线性失真,因此图案上的直线在图像上变得不直。尽管即使在大角度下也几乎看不到这种效果,但它会影响校准。所以,不幸的是,它不起作用。粘合图案仍然是最好的方法。
  • 是的,我建议将目标的背面粘到玻璃上:平面度问题解决了。
猜你喜欢
  • 2019-07-29
  • 1970-01-01
  • 2018-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-03
  • 1970-01-01
  • 2016-09-15
相关资源
最近更新 更多