在上篇文章中,我们实现了一个使用双 Azure Kinect 的实时重建应用。
首先基于 ArUco 第三方库做关于两个 Azure Kinect 的相对姿态的标定,然后把其中一个 Azure Kinect 输出的点云转换到另一个 Azure Kinect 坐标系中,最后我们仅仅把两者的点云叠加。
这是当时的效果。
最近,我在 Azure Kinect 的官方开源 SDK 所在的 Github 源码 中发现了一个 issue,是其中一个用户在 SDK 提供的 Green Screen 示例代码中发现,两个点云的源码无法完美拼接。
在 Green Screen 示例代码中,官方使用的是 OpenCV 提供的标定方法,使用黑白方格标定板做两个 Azure Kinect 的相对姿态的测定。
如下图所示。
鉴于我上篇文章的结果,我觉得我的做法可能会更好一点,就在这个 issue 中提供了我的解决方案。
然而,不幸的是,我的做法也被发现了问题 [3],甚至比 Green Screen 示例的结果还要差。😂😂
幸好,我之前发现一个很好用的 ICP 算法,Open3D 0.8.0 的 Colored ICP 算法 [1].Open3D Colored ICP 算法源码 https://github.com/intel-isl/Open3D/blob/master/src/Open3D/Registration/ColoredICP