因此,我正在尝试建立3d重建管道以同时进行本地化和映射。我自以为是先尝试对单个深度图像进行重建,只是结果似乎有些变形。
我正在使用这种流行的投影方法,使用固有的相机参数和深度图像(方法可以在“用彩色像素映射深度像素”部分中找到):
http://nicolas.burrus.name/index.php/Research/KinectCalibration
为清晰起见,这是我的看法。
def project(u,v,depth):
z = depth
x = (cam.cx - u) / cam.fx * z
y = (cam.cy - v) / cam.fy * z
return [x, y, z]
现在我希望收到的是一个点云,它在某种程度上与实际3d场景精确匹配。但是,结果是扭曲的,好像它正在逃离精灵的瓶子。我想这是可以预期的,因为更高的depth
值会导致点更靠近图像的中心点。如何减轻这种影响并获得更准确的重建结果?我是否需要一些我不知道的标准化或缩放步骤?
3d重建:https://imgur.com/QNqrKdy
(根据本指南http://anabuilder.free.fr/2D3DSculptor/index.html拍摄的深度图像)