在orb-slam2的基础上添加了mask R-CNN分割,对图像进行分割,分割出人,动物等实例。对于monocular和stereo的情况,直接滤除掉这些部分然后再做slam。对于rgb-D的情况,不光滤除到mask R-CNN分割出可以移动的实例,还要使用多视角几何进一步滤除可以移动的实例。多视角滤除的原理是,对于当前帧和之前的一帧上匹配的点,如果两者之间的夹角大于30°,计算这个land mark 在当前帧视角下的深度,如果这个深度与rgb-D的深度之间的差别大于特定的阈值也认为这个点是移动的landmark。
这个使用multi-view剔除外点的方法只能应用于rgb图像。具体的步骤是首先找一些overlap高且图像夹角小于30°的图像对。把一张图像上观测到的三维点投影到另外一张图像上,计算投影深度,同时再取出对应位置的深度,当深度的差别小于0.4m则认为是静态的,反之则认为是动态的。如何把这种方法应用到stereo的图像上?
Idea:类似于上面的思路,假设存在图像夹角小于30°,overlap又比较大的图像对,假设为Kf1和Kf2,两者都是包含左右目的图像对。对于Kf1的观测到的land mark,我们可以使用stereo的方法恢复出深度,如果姿态已知,可以把这个land mark 投影到图像二,这时,我们可以恢复投影位置的深度,比较两者深度的差别即可。这样就可以实现动态物体的识别。