如何通过 gml c++ 相机校准工具箱进行 Kinect RGB 和深度相机校准

How to Kinect RGB & depth camera calibration by gml c++ camera calibration toolbox

我想匹配Kinect v2的彩色摄像头和深度摄像头的图像。 所以,我想试试下面网站的方法, 有些东西我不明白。

Kinect RGB & depth camera calibration

我想知道如何使用 "gml c++ camera calibration toolbox" 工具获得“rgb_M_world”、“ir_M_world”。

此工具输出外部参数。 但是,我可以认为这个外部参数意味着该站点的 rgb_M_worldir_M_world 吗?

GML工具在哪里指定世界坐标? 此外,红外相机和彩色相机的世界坐标必须匹配, 如何使用GML工具匹配红外相机和彩色相机的世界坐标?

如果你能给我一些建议,我将不胜感激。

在您链接到的博客中说您将应用程序用于每组图像(或至少一个图像),一组来自红外摄像机,另一组来自 RGB 摄像机。

然后你得到这个集合的外在因素,换句话说,就是他们被拍摄的相机。所以,如果你使用红外图像集,你会得到 ir_M_World 并且内在函数通常是针孔相机模型中使用的相机矩阵

s p = K [R|T] P

其中s是缩放值,p是二维齐次点,K是相机矩阵,[R|T]是外部矩阵(旋转和平移) P 是一个 3D 点。

现在,您需要稍微了解一下这种校准方法的工作原理。首先你有一个点网格(在你的情况下是国际象棋方块的交点。这些点必须用 3D 坐标表示。因为通常你不关心这些点在哪里(除非你有一个固定的坐标系你想follow)取分如下:

[0,0,0] [1,0,0] ... [n, 0,0]
[0,1,0]     ...       ...
  ...       ...       ...
[0,m,0]     ...     [n, m, 0]

[0,0,0]点可以在网格的中心,点与点之间的步长可以是真实的cm/mm/m测量,但为了方便就这样了。然后你得到从我们创建的这个假点云到一个相机然后到另一个相机的距离。由于您与同一个地方有两个距离,您可以按照博客 post 中的说明将它们联系起来。

回到你的问题:

我没有使用过 GML 工具箱,但我想如果不能手动设置(有时只能设置点之间的步长),他们会使用与我上面解释的相同的想法。他们似乎也只使用棋盘图案。如果这个过程是全自动的,他们每次都使用相同的 3D 点,所以你可以关联两个相机。希望对你有帮助。