激光雷达角点检测 c语言,一种基于事件帧的角点检测方法与流程
本发明属于图像处理领域,用于解决基于事件相机的SLAM项目的角点检测。
背景技术:
在过去几十年里,由于计算机视觉算法的研究与发展,人们对机器人感知的兴趣也日益增加。这种传统相机能够捕获相机周围环境的高信息内容,并且因为其低成本,普遍的特点而在各种应用中变得最流行。
同时定位与地图构建(Simultaneous Localization,SLAM)是机器人感知领域最重要的里程碑之一,并且在过去30年取得了瞩目的成就。然而,传统的基于帧的相机在设计上表现出一些限制,一方面,它以固定得帧速率输出图像,无论每个图像中存在的新得信息量如何,因此,传入的信息通常是有大量的冗余的,这些冗余的数据会浪费宝贵的计算资源。另一方面,高动态场景或相机运动会给传统图像帧带来运动模糊,并且会使续帧之间缺乏足够的重叠信息,因此基于传统相机的角点检测和跟踪效果变得很差,这也限制了SLAM的进一步发展。尽管近些年来出现了一些新型的传感器,如激光雷达,深度相机,结构光传感器以及立体相机,然而现有的SLAM算法在机器人运动或环境过于复杂时还是容易失效。
事件相机或动态视觉传感器(Dynamic Vision Sensor,DVS)作为一个新的方案,有望克服基于传统相机框架中的一些问题,从而引起了越来越多的关注。它通过模拟视网膜,并响应由于运动引起的照明中的像素级变化而产生的脉冲。更具体的说,在tj时刻,uj=(xj,yj)像素位置上的亮度增量达到阈值±c(c>0),那么一个事件ej=(xj,yj,tj,pj)将被触发,pj∈{+1,-1}表示事件的极性正号表示亮度增加,负号表示亮度减小,因此事件相机输出的是异步事件流,如附图图1所示,并且由于事件仅仅记录增量变化,所以场景的绝对亮度值不再是直接可见的。与传统的基于帧的相机相比,事件相机可以以几乎无限的帧速率捕捉亮度变化,并记录特定时间点和图像位置的事件。特别是对于移动场景,事件相机在数据速率、速度和动态范围方面具有很大的优势,有望解决现有SLAM系统中运动过快而失效的问题
现有的基于事件相机的SLAM项目按对事件流的处理方式不同,大致可分为两类。一类是直接在事件流上进行检测和跟踪,如“Low-latency visual odometry using event-based feature tracks”文章所述,另一类是沿时间轴累积事件压缩成事件帧,然后在事件图像上运用现有的传统的Fast角点检测算法,如“Real-time Visual-Inertial Odometry for Event Cameras using Keyframe-based Nonlinear Optimization”文章所述。
然而直接在事件图像上使用传统Fast角点检测忽视了事件帧本身的特点(像素值不连续),如附图2所示,使得检测和跟踪的质量较差,如附图3所示,Fast将一些孤立像素点检测为角点,这种不稳定的角点,在跟踪过程中不仅容易丢失,而且还会影响跟踪的准确性。另外,Fast角点检测出的角点集中在图像中部,靠近边缘处,几乎没有角点,这是由事件图像成像特点决定的,事件图像通过累积事件得到,在图像边缘处,事件较少,相应的事件图像上的灰度值也较图像中部小,而Fast角点检测依据灰度值的大小进行判断,因此在相同的Fast阈值下,图像边缘会不满足Fast阈值,所以检测不到角点。
技术实现要素:
本发明针对现有的基于事件相机的SLAM项目中直接在事件图像上使用Fast角点检测的不足,提出一种针对事件图像成像特点的角点检测方法。该方法先把事件流沿时间轴按事件的点数累积压缩成事件图像,然后遍历整个事件图像,如果像素值小于设定阈值,此像素点不是角点。当满足像素值阈值时,以当前像素位置为中心定义一个半径为R的圆,当圆上有连续L个像素位置的像素值高于其他像素位置,则中心像素被视为角点。
本发明提供的技术方案为一种基于事件帧的角点检测方法,包括如下步骤:
步骤1,输入事件图像,设置阈值p,半径R,Lmin,Lmax,遍历事件图像E中每个像素位置;
步骤2,对于当前像素位置(x,y),如果像素值E(x,y)小于等于p,此像素不是角点;
步骤3,如果E(x,y)大于p,以(x,y)为中心初始化一个半径为R的圆C,具体实现如下,
步骤3.1,初始化Anew为圆C上像素值最大的像素点,初始化Ecw为Anew顺时针相邻的像素点,初始化Eccw为Anew逆时针相邻的像素点;
步骤3.2,判断Ecw和Eccw的位置是否相等,如果Ecw位置不等于Eccw;
步骤3.2.1,当Ecw大于Eccw时,如果Anew中最小值小于Ecw或者Anew中像素点个数小于Lmin,则扩展Anew直到包含Ecw,更新Ecw为顺时针下一个像素点,否则不扩展Anew只更新Ecw;
步骤3.2.2,当Ecw小于Eccw时,如果Anew中最小值小于Eccw或者Anew中像素点个数小于Lmin,则扩展Anew直到包含Eccw,更新Eccw为逆时针下一个像素,否则不扩展Anew只更新Eccw。
步骤3.3,重复步骤3.2,直到Ecw等于Eccw;
步骤4,如果Anew中像素点个数大于等于Lmin小于等于Lmax,或者Anew的互补圆环中像素点个数大于等于Lmin小于等于Lmax,那么此像素点是角点,否则不是角点。
进一步的,设置p=30,R=4,Lmin=3,Lmax=6。
本发明针将事件图像成像过程中像素值不连续,图像边缘处像素值较中部较小的特点考虑在内,避免了直接在事件图像上使用Fast角点检测把孤立的像素点检测为角点,在图像边缘处检测不到角点的情况。在跟踪过程中使用本发明提出的角点检测方法能够得到较好的跟踪质量。
附图说明
图1是传统相机和DVS相机数据对比。
图2是事件图像的像素值,其中(a)为具体的像素位置处像素值大小,(b)为像素值的三维视图。
图3角点检测结果的对比,其中(a)为使用传统Fast角点检测结果,(b)为使用本发明角点检测结果。
图4是一个具体实施的例子,其中(a)为一个待检测像素点周围半径为4的圆上的像素点,(b)为Anew、Ecw和Eccw的初始位置,(c)为检测过程中将Anew扩展到最小长度时的状态,(d)为最终Anew的状态。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实例仅仅用于解释本发明,并不用于限定本发明。
本发明实施例提供的一种基于事件帧的角点检测方法,具体步骤如下:
输入:事件图像,阈值p,半径R,Lmin,Lmax;
(1)遍历事件图像E中每个像素位置。
(2)对于当前像素位置(x,y),如果E(x,y)小于等于p,此像素不是角点。
(3)如果E(x,y)大于p,以(x,y)为中心初始化一个半径为R的圆C。
(3-1)初始化Anew(即圆上较高像素值区域)为圆C上像素值最大的像素点,初始化Ecw为Anew顺时针相邻的像素点,初始化Eccw为Anew逆时针相邻的像素点。
(3-2)如果Ecw位置不等于Eccw。
(3-2-1)当Ecw大于Eccw时,如果Anew中最小值小于Ecw或者Anew中像素点个数小于Lmin,则扩展Anew直到包含Ecw,更新Ecw为顺时针下一个像素点,否则不扩展Anew只更新Ecw。
(3-2-2)当Ecw小于Eccw时,如果Anew中最小值小于Eccw或者Anew中像素点个数小于Lmin,则扩展Anew直到包含Eccw,更新Eccw为逆时针下一个像素,否则不扩展Anew只更新Eccw。
(3-3)重复(3-2)步骤,直到Ecw等于Eccw。
(4)如果Anew中像素点个数大于等于Lmin小于等于Lmax,或者Anew的互补圆环中像素点个数大于等于Lmin小于等于Lmax,那么此像素点是角点,否则不是角点。
下面以一个具体是例子进行说明。
一个待检测的图像E,设置p=30,R=4,Lmin=3,Lmax=6。对于当前像素位置(x,y),如附图4中中间的灰色像素点,此像素位置的像素值E(x,y)>30,满足阈值要求,接着判断此像素点是不是角点。
以(x,y)为中心初始化一个半径为4的圆,如图4(a)所示。
初始化Anew(即圆上较高像素值区域)为C中最大值即图4(b)中像素值为15处,初始化Ecw为Anew顺时针相邻的像素点即图4(b)中像素值为14处,初始化Eccw为Anew逆时针相邻的像素点即图4(b)中像素值为4处。
首先由于Ecw大于Eccw时,并且Anew中像素点个数小于Lmin,因此沿顺时针扩展Anew,更新Ecw的位置到像素值12处,此时Anew中包含两个像素点。同理,由于此时Ecw大于Eccw,并且Anew中像素点个数小于Lmin,因此沿顺时针扩展Anew,更新Ecw的位置到像素值10处,此时Anew中包含三个像素点如图4(c)所示。接着由于Ecw大于Eccw,但是Anew中最小值12大于Ecw,因此不扩展Anew,只更新Ecw的位置到像素值13处。此时Ecw大于Eccw,并且Anew中最小值12小于Ecw,因此扩展Anew到Ecw,更新Ecw的位置到像素值14处。此时Ecw大于Eccw,并且Anew中最小值10小于Ecw,因此扩展Anew到Ecw,更新Ecw的位置到像素值8处,得到图4(d)。接着由于Anew中最小值10一直大于Ecw和Eccw,因此不再扩展Anew,只更新Ecw或者Eccw直到Ecw和Eccw位置重合。
最终,Anew中像素点个数为6,满足设定的范围,因此当前像素点是一个角点。
图3(a)为在三个数据集场景下,在事件图像上使用fast检测的结果,(b)为使用本发明检测的结果,白色圆圈为检测的角点。通过对比可以发现,fast将一些孤立的点检测为角点,并且在图像边缘处fast检测不到角点,角点集中在图像中部,而本发明的检测方法成功的避免了这两种情况。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
激光雷达角点检测 c语言,一种基于事件帧的角点检测方法与流程相关推荐
- python小波分析法检测火焰_一种基于小波分析的网络流量异常检测方法
一种基于小波分析的网络流量异常检测方法 杜臻 ; 马立鹏 ; 孙国梓 [期刊名称] <计算机科学> [年 ( 卷 ), 期] 2019(046)008 [摘要] 对大量网络流量数据进行高质 ...
- linux ipmitool检测内存,一种基于ipmitool工具循环侦测内存的方法与流程
本发明涉及服务器技术领域,具体的说是一种基于ipmitool工具循环侦测内存的方法. 背景技术: 随着计算机技术的发展,计算机已经广泛应用于生活.工作中各个领域,对计算机计算处理能力和存储能力也提出了 ...
- aes子密钥生成c语言_一种基于流密码算法的子密钥生成方法与流程
本发明涉及一种用于分组加解密算法的子密钥的生成方法. 背景技术: 随着信息技术的发展,信息安全性的问题却愈来愈显得突出,保证信息安全的一个重要技术就是密码学.密码学在信息安全技术中扮演着基础的角色,是 ...
- arcgis android gif,一种基于动态地图符号的移动GIS可视化方法与流程
本发明具体涉及一种基于动态地图符号的移动GIS可视化方法动态地图符号的技术领域 背景技术: 随着移动设备的高度集成化和处理器的快速发展,终端设备的计算和处理能力不断增强,移动GIS的应用领域越来越广泛 ...
- 基于linux火焰识别算法,一种基于深度学习模型的火焰识别方法与流程
本发明属于通信领域,具体涉及一种基于深度学习模型的火焰识别方法. 背景技术: 随着我国工业化与城镇水平的不断提高,现代设施大型公共建筑朝着空间大.进深广功能复杂的多元化方向发展,这对于防烟火朝着空间大 ...
- 电容屏物体识别_一种基于触摸屏触摸点的物体识别方法与流程
本发明涉及触摸屏触摸点物体识别技术领域,具体为一种基于触摸屏触摸点的物体识别方法. 背景技术: 多触点触摸屏支持多个触点同时输入,通过触摸屏的点的特征,进行物体识别是一个成熟的技术,以下简称物体识别为 ...
- 机器人测钢卷直径_一种基于关节机器人的冷轧钢卷卷芯焊接方法与流程
本发明涉及冶金技术领域,特别涉及一种基于关节机器人的冷轧钢卷卷芯焊接方法. 背景技术: 在冷轧罩式退火工序,钢卷采用立式吊具吊运,为防止钢卷卷芯松动导致卷芯钢带损坏和抽芯故障,必须将钢卷卷芯内圈焊接固 ...
- python应用如何实现升级_一种基于Python实现BMC批量升级的方法与流程
本发明涉及BMC批量升级,尤其涉及一种基于Python实现BMC批量升级的方法. 背景技术: 随着现代服务器主板技术的发展,主板设计形态复杂多变.无论是设计成本还是后期使用过程中的维护成本都很高.如何 ...
- 直播弹幕 html5,一种基于HTML5的弹幕播放器及其方法与流程
本发明涉及互联网技术领域,具体涉及一种基于HTML5的弹幕播放器及其方法. 背景技术: 弹幕是指一种在观看视频时,大量以字幕(有且不限于文字和图片)形式呈现的评论与视频同在一个画面的现象.在视频上方大 ...
最新文章
- 这组动画完美演绎了一个程序员从接手新项目到交货的复杂心情
- 稳扎稳打Silverlight(17) - 2.0数据之详解DataGrid, 绑定数据到ListBox
- vue Cli 脚手架的搭建
- Oracle 把触发器说透
- Kafka解惑之时间轮(TimingWheel)
- mysql 主键 下一个值_INNODB自增主键的一些问题 vs mysql获得自增字段下一个值
- 关于某些人和某些事的断想
- 2014 网选 5007 Post Robot(暴力或者AC_自动机(有点小题大作了))
- python获取文件修改时间与创建时间
- [转载] Python3 open()函数
- java实习周记_java程序员的实习周记
- Word文字怎么居中对齐
- 两个经纬度偏角_转载:经纬度和方位角之间的关系
- 计算机专业 在职跨英语,英语在职研究生跨专业可以吗?
- 屏幕录像专家录制超清视频教程-王西猛-专题视频课程
- 英语中学生测试软件,初中生免费学英语的软件哪个好
- Faces Verbatim 组件
- 关于傅立叶变换的频率分辨率,采样时间,采样率关系
- 如何优雅的整合定时批量任务(荣耀典藏版)
- 怎样让您的电脑待机耗电等于零?
热门文章
- 锤子os与鸿蒙os,当贝OS和华为鸿蒙系统哪个好?与当贝OS比有哪些差距
- 出身寒门,逆袭为身家过百亿的谷歌 CEO,劈柴哥传奇
- 使用Calendar根据当前日期算前一年、前一月、前一天
- 万向锁问题详解,以Unity为例
- DIY装机之视频接口基本原理及应用
- Ubuntu如何安装rpm软件包,ubuntu安装输入法、WPS软件
- 我的计算机没有本地用户名,我的电脑没有本地连接怎么办
- 教师职称计算机武汉市,2017年教师职称改革:好老师不再被外语和计算机难倒...
- Linux下的设置静态IP命令详解
- Qt Quick Qml 之QML与C++ 混合编程学习