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

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

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

所以,问题是:

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

  • 通过使用玻璃,GML 相机校准工具箱(基于 OpenCV)报告的校准参数变得更加准确。 (它有任何意义吗?)但是这种方法有一个小缺点——不需要的反射,尤其是来自光源的反射。

    最佳答案

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

    既然练习的重点是保证目标的平整度,别无他法,不妨把纸的图案反面粘上,免得这一切麻烦。是的,随着时间的推移,图案会变脏和磨损,需要更换。因此,您只需将其刮掉并更换即可:打印棋盘很便宜。

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

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

    如果你真的想完成这个练习,我建议在 Google Ceres bundle adjuster 之上编写求解器,它支持 AD 等等。

    关于computer-vision - 用玻璃覆盖的棋盘校准相机,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15419659/

    10-13 09:16