KinectFusion: Real-Time Dense Surface Mapping and Tracking

13 篇文章 0 订阅

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

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

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

所以 R k ( u ) R_k(u) Rk(u) D k ( u ) D_k(u) Dk(u)用mm为单位, V k ( u ) V_k(u) Vk(u) N k ( u ) N_k(u) Nk(u)用m为单位

所以公式(3)在我们这里为
V k ( u ) = K − 1 u ˙ D k ( u ) 1000 V_k(u) = K^{-1}\dot{u}\frac{D_k(u)}{1000} Vk(u)=K1u˙1000Dk(u)

3)

3.3 t g , k t_{g,k} tg,k 为第k帧相机的位置
1 / λ 1/ \lambda 1/λ converts the ray distance to p p p to a depth
λ = ∥ K − 1 x ˙ ∥ \lambda = \|K^{-1}\dot{x} \| λ=K1x˙
这里 x ˙ \dot{x} x˙以像素为单位

k = [ f x 0 c x 0 f y c y 0 0 1 ] k = \begin{bmatrix}f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} k=fx000fy0cxcy1
k − 1 = [ 1 / f x 0 − c x / f x 0 1 / f y − c y / f y 0 0 1 ] k^{-1} = \begin{bmatrix}1/f_x & 0 & -c_x/f_x \\ 0 & 1/f_y & -c_y/f_y \\ 0 & 0 & 1 \end{bmatrix} k1=1/fx0001/fy0cx/fxcy/fy1

公式(8)
π ( K T g , k − 1 p ) = π ( K p k ) = π ( u ˙ D ( u ) / 1000 ) = u \pi(KT^{-1}_{g,k}p)=\pi(Kp_k)=\pi(\dot{u}D(u)/1000)=u π(KTg,k1p)=π(Kpk)=π(u˙D(u)/1000)=u
注意u是以pixel为单位

4) T ~ k − 1 , k z \tilde{T}^z_{k-1,k} T~k1,kz 其中z为pyramid level,从第 k k k帧的camera view转到第 k − 1 k-1 k1帧的camera view
T ~ k − 1 , k z = T g , k − 1 − 1 T ~ g , k z \tilde{T}^z_{k-1,k}=T^{-1}_{g,k-1}\tilde T^z_{g,k} T~k1,kz=Tg,k11T~g,kz
注意 T ~ g , k z \tilde T^z_{g,k} T~g,kz会从初值迭代逐步优化

  1. u ~ = π ( K T ~ k − 1 , k V ˙ k ( u ) ) \tilde{u} = \pi(K\tilde{T}_{k-1,k}\dot{V}_k(u)) u~=π(KT~k1,kV˙k(u)), 这个是从第k帧的image space 转到第k-1帧的image space. 注意加上一点是齐次坐标下的等价表达

  2. V ~ k g ( u ) = T ~ g , k z − 1 V ˙ k ( u ) \tilde V^g_k(u) = \tilde T ^ {z-1}_{g,k}\dot{V}_k(u) V~kg(u)=T~g,kz1V˙k(u)
    这里 V ~ k g ( u ) \tilde V^g_k(u) V~kg(u) z − 1 z-1 z1层的全局坐标

  3. 公式(16) V k − 1 V_{k-1} Vk1, N k − 1 N_{k-1} Nk1都是在第k-1帧的坐标系下的坐标, V k V_k Vk是在k帧坐标系下的坐标,但是右上角有个g, 说明在不同的坐标系下, 最终都会转到global坐标系下面.

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

[ 1 α − γ t x − α 1 β t y γ − β 1 t z ] ∗ [ x y z 1 ] = [ 0 − z y 1 0 0 z 0 − x 0 1 0 − y x z 0 0 1 ] ∗ [ β γ α t x t y t z ] + [ x y z ] \begin{bmatrix}1 & \alpha & -\gamma & t_x \\ -\alpha & 1 & \beta & t_y\\ \gamma & -\beta & 1 & t_z \end{bmatrix} * \begin{bmatrix}x\\ y\\ z\\ 1 \end{bmatrix}=\begin{bmatrix}0 & -z & y & 1 & 0 & 0 \\ z & 0 & -x & 0 & 1 & 0\\ -y & x & z & 0 & 0 & 1 \end{bmatrix} * \begin{bmatrix}\beta\\ \gamma\\ \alpha\\ t_x \\ t_y\\ t_z \end{bmatrix} +\begin{bmatrix}x\\ y\\ z \end{bmatrix} 1αγα1βγβ1txtytzxyz1=0zyz0xyxz100010001βγαtxtytz+xyz

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值