网站大量收购闲置独家精品文档,联系QQ:2885784924

DynaSLAM源码笔记-检测动态物体部分梳理.pdf

DynaSLAM源码笔记-检测动态物体部分梳理.pdf

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DynaSLAM源码笔记-检测动态物体部分梳理 按照main函数向下细分的顺序⼤概记录 下rgbd情况下,动态物体去除 (inpaint的部分本篇不涉及)的源码的写法,并对应 下论⽂, 关 于ORB-SLAM2本⾝的部分不会太涉及到。 安装⽅法见 : 论⽂笔记见 : 如果有什么不同的理解或者本⽂存在什么错误,欢迎评论交流讨论 ! . rgbd_tum.cc 新增了 个命名空间和类来进⾏关于MaskRCNN的处理,先进⾏这个对象的初始化,把相关参数和⽹络都弄好。 // Initialize Mask R-CNN DynaSLAM::SegmentDynObject *MaskNet ; if (argc==6 || argc== ) { cout Loading Mask R-CNN. This could take a while... endl; MaskNet = new DynaSLAM::SegmentDynObject() ; cout Mask R-CNN loaded ! endl; } 下⽅代码中,执⾏ MaskNet-GetSegmentation() 函数,得到每 帧图⽚对应的分割结果。分割结果 (变量maskRCNN)中,1表⽰先验的动 态物体,0表⽰其他部分。注意,这⾥还对MaskRCNN分割的结果多进⾏了 次Dilate处理,也就是说要扣去的⼈的范围⽐神经⽹络的结果 再⼤ 点。 关于Dilate,个⼈觉得如果不想混淆这个概念,最重要的就是清楚它的本质 :取邻域的最⼤值 (是和像素值有关的) // Segment out the images 在这⾥使⽤MAskRCNN找到mask cv ::Mat mask = cv ::Mat ::ones(480,640,CV_8U) ; if (argc == 6 || argc == ) { cv ::Mat maskRCNN; // 这⾥的maskRCNN数值在0- 1之间, 动态物体的mask对应像素值 1 maskRCNN = MaskNet-GetSegmentation(imRGB,string(argv[5]),vstrImageFilenamesRGB[ni].replace(0,4,)) ; // vstrImageFilenamesRGB ni] 的结果类似于rgb/ 134 184664 7.80224 7.png, replace是把前⾯四个字符去掉 cv ::Mat maskRCNNdil = maskRCNN.clone() ; //这⾥做了 个形态学的处理,扩⼤maskRCNN上动态物体轮廓的范围 cv ::dilate(maskRCNN,maskRCNNdil, kernel) ; mask = mask - maskRCNNdil; //求了个差, 1表⽰静态物体 } // Pass the image to the SLAM system // 把Mask的Mat传进系统中 // 如果argc==7,说明需要的6个参数都在终端给了,要进⾏inpaint就执⾏if成⽴后的步骤,其他情况都执⾏else后的内容 if (argc == ){SLAM.TrackRGBD(imRGB,imD,mask,tframe,imRGBOut,imDOut,maskOut) ;} else {SLAM.TrackRGBD(imRGB,imD,mas

文档评论(0)

181****7662 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档