我正在使用新的Kinect v2,并且正在获取Kinect的深度图。得到深度图后,我将深度数据从深度空间转换为相机空间。据我所知,通过将每个像素的所有X,Y坐标转换为Camera Space +将深度值添加为Z坐标(Kinect还提供了以毫米为单位的深度值,因此它也转换为保持米)。因此,点云实际上位于使用深度值扩展的2D网格上。可视化也证实了这一点,因为很容易注意到由于上述对话,这些点在网格中是有序的。
为了进行可视化,我使用的是OpenGL的旧方式(glBegin(...)和glEnd())。我想在这些点之外创建一个网格。我可以用GL_TRIANGLES做到这一点,但是后来我有很多重复的顶点和边。因此,我认为我应该使用GL_TRIANGLE_STRIP创建更好的三角剖分,但是我被困在这里,因为我无法提出一种可以通过2D网格传递给GL_TRIANGLE_STRIP的好的算法,因此它创建了一个表面不错。
问题:
对于每个三角形的顶点,我正在检查Z坐标。如果超过某个阈值,我将忽略三角形=>,这可能会在2D网格中产生孔。
一些深度值是NaN,因为Kinect无法“看到”任何东西(例如,对象太远或太近)=>这还会在2D网格中创建孔。
有人建议解决该问题的最佳方法是什么?
如果能够使用点云库,则可以使用类pcl :: OrganizedFastMesh <PointInT>。
http://docs.pointclouds.org/trunk/classpcl_1_1_organized_fast_mesh.html
我用它对完整的深度框架进行三角测量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句