[置顶] Elastic fusion 与 Kintinous 在线对比效果(奥比中光相机)——实验(一)
2017-03-04 16:22
351 查看
大家好,最近在研究 使用rgbd 相机实时三维重建,使用到大名鼎鼎的efusion 与 Kintinous ,发现在回环测试方便efusion 效果更好,之前看过清华-高翔 做的ORB-SLAM 增加pointcloud 模块 ,可惜是稠密部分没有回环,阴影重叠太过明显。 那个代码我自己做了修改,关键帧上筛选,最后结束时,会做重做一次icp ,效果会好点。
本身github 上的代码测试 klg 格式的,我测试了KinectV2效果,由于他的深度图使用的是512*424 (好像是这个,我忘了),如果使用需要修改这个size ,不然初始话会出问题 。
1、算法原理介绍:
付大神 已经介绍的很消息了,如果有需要的可以关注他的博客:http://blog.csdn.net/fuxingyin/article/details/51436430
我简单说下,回环部分,efusion 有局部回环和全局回环,可能理解有所偏差,请不吝赐教。
局部回环:
其实回环的 非常关键的,如果检测不到回环的话,重建出来的效果就会出现重影,就算后期用点云处理软件处理起来也是非常麻烦的。
如图,当相机向左边移动,当回到以前经过的地方(ii),本文用一个活动区域 和非活动区域 ,可以认为是重建时间先后的关系。当有重叠部分 ,存在回环的话,计算两帧的点云,将这两帧进行配准。
抽取两帧点云, 需要满足下面约束的条件:
H为 活动区域与非活动区域投影的配准计算得到的位置矩阵,Pt为当前帧和surfels之间的位姿,p(u,Dat)表示输入图像(投影得到的图像),Titu(u)和t代表点云的时间。
局部回环有跟局部BA 很像,都是用到投影误差。
全局回环检测:
上图中的(x),当相机从活动区域移动非活动区域,出现漂移,出现没有对准的情况,在(VII)用红色箭头显示等效点,触发全局回环闭合,同样是由活动区域对准非活动区域,非活动区域被激活,回环采用的算法是Randomized Ferns(这部分付大神已经有人介绍过了,这是不多介绍了)。
同样的也有个约束条件:
全局和局部回环的区别:
有人会问既然有局部回环 ,为什么还用使用用全局回环?
全局的目的在与消除之前因为移动过大,角度过大,产生的累计误差,起到消除累计误差的作用。全局情况,也就是大闭环前提不是在因为交叠起作用的,活动区域与非互动区域对应点没有出现交叠,也不能用重投影的方法来消除误差。
光有全局回环,没有局部回环是否可以行呢?
我觉得不太可行,局部回环的目的在于消除重叠,通过投影出的点来计算位姿,如果不使用重定位,就做个做个大闭环,最后通过全局回环检测来消除因漂移过大导致的误差,这个的方式也不太靠谱,全局回环会把误差平均到每个帧上,有些部分是误差很小,最后反而误差变大了。
2、实验效果:
数据测试效果(略)
在线测试效果:
Ubuntu14.04
相机:奥比中光
全局图显示看下:
Kintinous实验效果:
由于 efusion 只能适用小场景,多小算小呢 其实就是一个房间差不多,其实跟你内存有关的。
下面看下kintinous 效果:
总结:
总的来讲,效果还是很不错,efusion 回环效果 更好些,缺点只能是小场景。Kintinous回环有点问题,不知道是不是好的那部分代码没有开源出来把,有时候测数据集闭环效果也不是特别好。
----------------------------------------------------------------------
原创内容,商业行为、转载、转发请注明出处》》》》》》》
本身github 上的代码测试 klg 格式的,我测试了KinectV2效果,由于他的深度图使用的是512*424 (好像是这个,我忘了),如果使用需要修改这个size ,不然初始话会出问题 。
1、算法原理介绍:
付大神 已经介绍的很消息了,如果有需要的可以关注他的博客:http://blog.csdn.net/fuxingyin/article/details/51436430
我简单说下,回环部分,efusion 有局部回环和全局回环,可能理解有所偏差,请不吝赐教。
局部回环:
其实回环的 非常关键的,如果检测不到回环的话,重建出来的效果就会出现重影,就算后期用点云处理软件处理起来也是非常麻烦的。
如图,当相机向左边移动,当回到以前经过的地方(ii),本文用一个活动区域 和非活动区域 ,可以认为是重建时间先后的关系。当有重叠部分 ,存在回环的话,计算两帧的点云,将这两帧进行配准。
抽取两帧点云, 需要满足下面约束的条件:
H为 活动区域与非活动区域投影的配准计算得到的位置矩阵,Pt为当前帧和surfels之间的位姿,p(u,Dat)表示输入图像(投影得到的图像),Titu(u)和t代表点云的时间。
局部回环有跟局部BA 很像,都是用到投影误差。
全局回环检测:
上图中的(x),当相机从活动区域移动非活动区域,出现漂移,出现没有对准的情况,在(VII)用红色箭头显示等效点,触发全局回环闭合,同样是由活动区域对准非活动区域,非活动区域被激活,回环采用的算法是Randomized Ferns(这部分付大神已经有人介绍过了,这是不多介绍了)。
同样的也有个约束条件:
全局和局部回环的区别:
有人会问既然有局部回环 ,为什么还用使用用全局回环?
全局的目的在与消除之前因为移动过大,角度过大,产生的累计误差,起到消除累计误差的作用。全局情况,也就是大闭环前提不是在因为交叠起作用的,活动区域与非互动区域对应点没有出现交叠,也不能用重投影的方法来消除误差。
光有全局回环,没有局部回环是否可以行呢?
我觉得不太可行,局部回环的目的在于消除重叠,通过投影出的点来计算位姿,如果不使用重定位,就做个做个大闭环,最后通过全局回环检测来消除因漂移过大导致的误差,这个的方式也不太靠谱,全局回环会把误差平均到每个帧上,有些部分是误差很小,最后反而误差变大了。
2、实验效果:
数据测试效果(略)
在线测试效果:
Ubuntu14.04
相机:奥比中光
全局图显示看下:
Kintinous实验效果:
由于 efusion 只能适用小场景,多小算小呢 其实就是一个房间差不多,其实跟你内存有关的。
下面看下kintinous 效果:
总结:
总的来讲,效果还是很不错,efusion 回环效果 更好些,缺点只能是小场景。Kintinous回环有点问题,不知道是不是好的那部分代码没有开源出来把,有时候测数据集闭环效果也不是特别好。
----------------------------------------------------------------------
原创内容,商业行为、转载、转发请注明出处》》》》》》》
相关文章推荐
- [置顶] 【实验-视频过程】ORACLE EXPDP IMPDP导入导出同EXP IMP命令详细对比
- 实验记录-BLDC六步法驱动-高侧全斩波与半斩波驱动效果对比
- Not In 不等号对比, 用exits代替in效果更好
- [置顶] ios 网页中图片点击放大效果demo
- [置顶] 最小二乘法与岭回归的介绍与对比
- 在线购物系统-实验1
- 在线地图数据准确性对比
- 图数据库与关系数据库的实验对比——意大利商会 InfoCamere 案例
- [置顶] Hibernate实验手册
- iOS 三种侧滑菜单效果对比详解
- 利用ASP实现在线生成电话图片效果脚本附演示
- 数据文件offline,未归档的非活动在线日志或当前在线日志损坏,在线修复(实验系列)
- [置顶] 【实验-视频过程】闪回数据库Flashback database
- [置顶]Future 和 ExecutorCompletionService 对比和使用
- PHP非常实用的上传类,上传效果在线演示
- 在线预览Office文件【效果类似百度文库】(转载)
- 如何实现列表滑动标签置顶效果(以天天动听、网易云音乐、虾米音乐的歌手页为例)
- [置顶] iOS-UIImage imageWithContentsOfFile 和 imageName 对比
- [置顶] [实验-视频过程]常用的oracle数据字典
- 自制Camera例子——相机效果