KinectFusion: Real-Time Dense Surface Mapping and Tracking

来源:互联网 发布:js实现的字幕滚动 编辑:程序博客网 时间:2024/06/07 23:48

1)
3.1
u以像素单位, u[0,640]×[0,480]

2)
3.2 注意这里Rk(u)Dk(u)的单位, Kinnect采回来的数据是以millimeter (mm), 在论文中没有考虑单位问题, 实际编程的时候,是要考虑的, kinnect采集的时候存成的是mm,
http://wiki.ros.org/depth_image_proc

然后我们算vertex map 和 normal map的时候用meter为单位

所以Rk(u)Dk(u)用mm为单位, Vk(u)Nk(u)用m为单位

所以公式(3)在我们这里为

Vk(u)=K1u˙Dk(u)1000

3)

3.3 tg,k 为第k帧相机的位置
1/λ converts the ray distance to p to a depth
λ=K1x˙
这里x˙以像素为单位

k=fx000fy0cxcy1

k1=1/fx0001/fy0cx/fxcy/fy1

公式(8)
π(KT1g,kp)=π(Kpk)=π(u˙D(u)/1000)=u
注意u是以pixel为单位

4)T~zk1,k 其中z为pyramid level,从第k帧的camera view转到第k1帧的camera view
T~zk1,k=T1g,k1T~zg,k
注意T~zg,k会从初值迭代逐步优化

5) u~=π(KT~k1,kV˙k(u)), 这个是从第k帧的image space 转到第k-1帧的image space

6) V~gk(u)=T~z1g,kV˙k(u)
这里V~gk(u)z1层的全局坐标

公式(20)求第z层的全局坐标

1αγα1βγβ1txtytzxyz1=0zyz0xyxz100010001βγαtxtytz

注意这里求相机的pose, 不是用的ICP的最近点, 而是将当前的帧的image空间转到前一帧的Image空间然后转到前一帧camera空间, 然后找到当前帧的camera空间中的点(位置,法向量)与前一帧空间中的一点(位置,法向量),通过公式(24)来求该点的变换。