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

时间:2017-06-14 06:47:38

标签: 3d kinect camera-calibration kinect-v2

我想匹配彩色相机和Kinect v2的深度相机的图像。 所以,我想试试下面网站的方法, 有些事情我不明白。

Kinect RGB & depth camera calibration

enter image description here

我想知道如何使用“gml c ++相机校准工具箱”工具获取“rgb_M_world”,“ir_M_world”。

此工具输出外部参数。 但是,我能否认为这个外在参数意味着该网站的rgb_M_worldir_M_world

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

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

1 个答案:

答案 0 :(得分:2)

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

然后你得到了这个集合的外在词,换句话说就是他们拍摄的相机。因此,如果您使用红外图像集,则会得到 <body> <div id="wrapper"> <h1 align="center" >Tickets - Informática</h1> <table class="tablesorter" id="keywords" cellspacing="0" cellpadding="0"> <thead> <tr> <th class="lalign">#</th> <th>Nome</th> <th>Idade</th> <th>Peso</th> </tr> </thead> <tbody> <?php $serverName = "asfdasasx-fsadasd"; $options = array( "UID" => "safs", "PWD" => "fsadas", "Database" => "demo"); $conn = sqlsrv_connect($serverName, $options); if( $conn ) { $sql="SELECT * FROM cliente"; $aResult=sqlsrv_query($conn, $sql); while($rows = sqlsrv_fetch_array($aResult)) { $id = $rows['id']; $nome = $rows['nome']; $idade = $rows['idade']; $peso = $rows['peso']; ?> <p> <td align="center"><b><?php echo $id;?></b></td> <td align="center"><b><?php echo $nome;?></b></td> <td align="center"><b><?php echo $idade;?></b></td> <td align="center"><b><?php echo $peso;?></b></td> </p> </tbody> ,并且内在函数通常是针孔相机模型中使用的相机矩阵

ir_M_World

其中s p = K [R|T] P 是缩放值,s是2d同原点,p是相机矩阵,K是extrinsics矩阵(旋转和平移)和{ {1}}是一个3D点。

现在,您需要了解这种校准方法的工作原理。首先你有一个点网格(在你的情况下是棋方格的交点。这些点必须以3D坐标表示。因为通常你不关心这些点的位置(除非你有一个固定的坐标系你想要以下几点如下:

[R|T]

[0,0,0]点可能位于网格的中心,点之间的步长可以是实际的cm / mm / m测量值,但为方便起见,它就是这样。然后你得到我们创建的假点云到一个摄像机然后到另一个摄像机的距离。由于您距离同一个地方有两个距离,因此可以按照博客文章中的说明进行关联。

回到你的问题:

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