SLAM建图(2)--------高斯分布的深度滤波器介绍

在上一篇的极限搜索与块匹配中,提到了深度滤波器这个概念,下面我来详细的记录一下关于高斯分布的深度滤波器的相关内容。

高斯分布的深度滤波器

   对像素点深度的估计,本身亦可建模为一个状态估计问题,于是就自然存在滤波器非线性优化两种求解思路。虽然非线性优化效果较好,但是在SLAM这种实时性要求较强的场合,考虑到前端已经占据不少的计算量,建图方面则通常采用计算量较少的滤波器方式了。

   在比较简单的假设条件下,假设深度值服从高斯分布,得到一种类卡尔曼式的方法。而有些文献中,也采用了均匀-高斯混合分布的假设,推导了另一种形式更为复杂的深度滤波器。

下面先来介绍较为简单的高斯分布假设下的深度滤波器:

 设某个像素的深度d服从:

P(d)=N(\mu ,\sigma ^{2})

当新数据来时,我们都会观测到它的深度。假设这次观测也是一个高斯分布:

P(d_{obs})=N(\mu _{obs},\sigma _{obs}^{2})

于是,我们的问题是,如何使用观测的信息更新原先d的分布。这正是一个信息融合问题。设融合后的d的分布为N(\mu _{fuse},\sigma _{fuse}^{2})

根据高斯分布的乘积:\mu _{fuse}=\frac{\sigma _{obs}^{2}\mu +\sigma ^{2}\mu _{obs}}{\sigma ^{2}+\sigma _{obs}^{2}},  \sigma _{fuse}^{2}=\frac{\sigma ^{2}\sigma _{obs}^{2}}{\sigma ^{2}+\sigma_{obs}^{2}}

由于我们仅有观测方程而没有运动方程,所以这里深度仅用到了信息融合部分。而无须像完整的卡尔曼那样进行预测和更新。可以看到融合的方程确实比较浅显易懂。不过仍有一个问题:如何确定观测到深度的分布?即如何计算\mu _{obs},\sigma _{obs}呢?

   如果只考虑由几何关系带来的不确定性(不考虑光度不确定性等)。考虑某次极线搜索,我们找到了p1对应的p2点,从而观测到了p1的深度值,认为p1对应的三维点为P。假设极线l2上存在着一个像素大小的误差,那么这会产生多大的差距呢?这部分推导还是直接上图吧:(来自SLAM十四讲)

综上所述,给出了一个估计稠密深度的一个完整的过程;

1.假设所有像素的深度满足某个初始的高斯分布。

2.当新数据产生时,通过极线搜索和块匹配确定投影点位置。

3.根据几何关系计算三角化后的深度及不确定性。

4.将当前观测融合进上一次的估计中。若收敛则停止计算,否则返回第2步。

猜你喜欢

转载自blog.csdn.net/weixin_39568744/article/details/88556082