您需要多久进行一次ArUco相机校准?

时间:2018-11-13 03:39:49

标签: opencv aruco android-augmented-reality

为ArUco进行相机校准有多重要?如果我不校准相机怎么办?如果我使用其他摄像机的校准数据怎么办?如果相机焦距发生变化,是否需要重新校准?针对消费者应用进行校准的实际方法是什么?

1 个答案:

答案 0 :(得分:1)

在回答您的问题之前,让我介绍一些与相机校准有关的一般概念。相机是捕捉3D世界并将其投影为2D图像的传感器。这是相机执行的从3D到2D的转换。紧随OpenCV文档之后,可以很好地了解此过程的工作原理以及其中涉及的相机参数。您可以在以下document中找到详细的AruCo文档。

通常,主库使用的相机模型是针孔模型。在此模型的简化形式(不考虑径向变形)中,使用以下公式(来自OpenCV docs)表示摄像机的变换:

enter image description here

以下图片(来自OpenCV doc)说明了整个投影过程:

enter image description here

总结:

P_im = K・R・T ・P_world

位置:

  • P_im :图像中注入了2D点
  • P_world :来自世界的3D点
  • K 是相机的 intrinsics 矩阵(取决于相机镜头的参数。每次更改相机的焦点以获取焦点时,此矩阵更改时的 fx fy 值距离)
  • R T 是摄像机的 外部 。它们分别代表摄像机的旋转和平移矩阵。这些基本上是代表相机在3D世界中的位置/方向的矩阵。

现在,让我们一一解答您的问题:

  

为ArUco进行相机校准有多重要?

相机校准在ArUco(或任何其他AR库)中很重要,因为您需要了解相机如何将3d映射到2d世界,以便将增强对象投影到物理世界上。 / p>

  

如果我不校准相机怎么办?

相机校准是获取相机参数的过程:内在和外在参数。第一个通常是固定的,并且取决于相机的物理参数,除非您更改某些参数作为焦点(例如)。在这种情况下,您必须重新计算它们。否则,如果您使用具有固定焦距的相机,则只需计算一次即可。

第二个取决于相机在世界上的位置/方向。每次移动摄像机时,RT矩阵都会改变,因此您必须重新计算它们。在这里,当使用ArUco之类的库时,因为使用了标记,您可以自动获得这些值。

简而言之,如果不计算相机,您将无法在物理世界上的确切位置上投影对象(这对AR至关重要)。

  

如果我使用其他摄像机的校准数据怎么办?

它将不起作用,这类似于使用未经校准的相机。

  

如果相机对焦发生变化,是否需要重新校准?

是的,您必须重新计算固有参数,因为在这种情况下焦距会发生变化。

为消费者应用进行校准的实际方法是什么?

这取决于您的应用程序,但是通常您必须提供一些手动重新校准的方法。还有使用某些3D图案进行自动校准的方法。