网上有很多关于Kinect Fusion 的详细介绍,包括各个部分的算法,思路,以及应用上的限制和优化。 在此就不多介绍了。
KinectFusion 提供了非常基础的用RGB-D 相机实现的 Dense mapping algorithm. 在实验初期我也阅读了很多次。 最近由于实验上遇到了非常棘手的问题, 又把之前的资料拿出来再次仔细的阅读,希望能有新的发现。
1。 pcl::kinfu 和 pcl::kinfuLS.
找了相关的Libs 和 网上资料,但是并没有找到合适的代码资料和 demo code。
2。 ICP in KinFu
KinFu 使用point-to-plane ICP。
无论是Point-to-point 还是 Point-to-plane, 它都包括2个主要的步骤。
1。 find the corresponding points in adjacent frames.
2. establish and optimize the error func iteratively.
由于需要确定 corresponding points pair, KinFu 使用了另外两个约束方程:
1. 两帧图像上相关点的 T < transformation threshold.
2. 两帧图像上相关点的 Normal difference < Normal corresponding threshold.
正是由于这种找corresponding points 的算法, Kinfu 的ICP 只能用于运动距离比较小的tracking 应用。
所以,它提供的思路和算法并不能用于我的实验。
3。 TSDF Voxel model
由于我一直在用PCL::PointCloud, 所以在计算上我只用了CPU。 并且由于深度图像并不精确,每一帧深度点云存在很多误差。
所以我在思考能否用TSDF model 来优化我得到的3D 点云,并用RAYCAST 来计算摄像机的位移。
需要注意的是, 如果使用RAYCAST 投影点云, pcl::gpu::raycaster 提供的算法是应用于 3D voxel volume上的。
所以还是需要depth / 3d PCD -> 3D TSDF Voxel Volume -> Raycasted current View.
4。 点云边缘
PCL 提供的点云边缘是否能用于我的实验, 来优化追踪效果。
原文地址:https://www.cnblogs.com/RobotDyan900511/p/10358633.html