史上最全事件相机DVS/Event-based Camera的介绍和分析综述文章

这篇具有很好参考价值的文章主要介绍了史上最全事件相机DVS/Event-based Camera的介绍和分析综述文章。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近本人在看一些事件相机的论文和研究。下面将看的基础内容整理一下,先是一些基本的event camera原理和发展的介绍,后面介绍算法。欢迎讨论!

1. DVS 的一些介绍

模拟生物视网膜特性的仿生相机——事件相机DVS(Dynamic Vision Sensor),该相机具有更宽的动态范围,输出较传统相机而言更稀疏、更快。一种快匹配自适应光流算法和完全通过FPGA完成的基于DVS相机的硬件实现与其功耗和计算速度方面的优势,最后介绍了该项研究在自动驾驶领域的广阔应用前景。

2. 基于事件的视觉传感器发展现状与趋势

目前被广泛应用的事件相机可大致分成3类:动态视觉传感器(DVS)、基于异步时间的图像传感器(ATIS)、动态主动像素视觉传感器(DAVIS,Dynamic and Active Pixel Vision Sensor)。DVS是最基本的也是最先发展的一种事件相机。ATIS像素结构分成两个部分(A和B),包含两个感光器,能够在提供事件信息的同时还能提供一定灰度信息的需求。DAVIS相机将DVS相机和传统的有源像素传感器(APS)相机结合起来,能够同时输出场景事件和灰度信息。

3. 事件相机的动态范围:

事件相机具有高动态范围,相对于传统相机一般只有70dB,事件相机能够达到140dB或更高。

信噪比

Signal to Noise Ratio (SNR),描述传感器所产生的信号与噪声的强度,计算方法是看计算电压还是功率。对于电压信噪比计算,公式为:SNR=10*log(S/N)。其中log为log10,单位是dB。如果噪声是2mV,电压是3V,则信噪比是31.7dB。
log(3000/2)=3.17
对于图像计算来说,一般找一个“精准的”相机拍摄一个基准,再和需要计算的图像进行比较。但基准一般难找,另一种常用的方式是,多次拍摄同一个信号后“求平均值和标准差的比值”。
然而140dB并不是指“信噪比”,但确实和信噪比有关。

动态范围DR

动态范围,Dynamic Range (DR),指“传感器能够分辨的最强的信号和最弱的信号的比值”,计算公式是20log(S/N)。比如说某个电压传感器最高能够测到3V,最小能够测量2mv,则DR是63.4dB。
那么DR和SNR有什么关系么?有关系,SNR和DR的下限有关。如果SNR较差,意味着噪声相对较强,则DR的下界会高,导致DR较小。但SNR和DR的上界无关,DR的上界可以理解为“饱和”的情况。事件相机所说的140dB指的是这个“动态范围”。

结论

140dB指的是动态范围DR,而不是信噪比SNR;

若想真正达到“高动态范围HDR”,必然会有大量的噪声。厂商基本上没有说在动态范围内某个值时噪声怎么样。可以这样理解140dB:“我能够看到很多,但不一定看得清”;

实际使用时,应该结合具体任务,判断特定场景/参数/算法下,能够检测的动态范围。
Source: 事件相机的“140dB”指的到底是什么?

4. 新型相机DVS/Event-based camera的发展及应用

神经拟态视觉传感器使用基于事件驱动的方式来捕捉场景中的动态变化。与传统相机不同,神经拟态视觉传感器没有 “帧” 的概念。当现实场景中发生变化时,神经拟态视觉传感器会产生一些像素级的输出(即事件),一个事件具体包括(t, x, y, p),这里的 x, y 为事件在2D空间的像素坐标,t为事件的时间戳,p为事件的极性。事件的极性代表场景的亮度变化: 上升(positive) or 下降 (negative)。神经拟态视觉传感器对数据存储和计算资源的需求非常小,并且其具有非常低的延迟,可以达到微秒级!!!传统相机在固定频率下产生一系列帧图片,其关键问题是在相邻俩帧之间会丢失掉很多关键信息,并且传统相机在内存,能量损耗以及延迟方面需求过大,这直接导致了很多算法的实时性非常低。以深度学习为例,为了实现目标检测等环境感知任务,不得不利用昂贵的硬件(GPUs)平台为其提供算力支撑。所以神经拟态视觉传感器的研究还是有一定前景的。

  • 工作原理分析
    史上最全事件相机DVS/Event-based Camera的介绍和分析综述文章
    事件相机的工作原理是对于每个像素的光照对数的变化,根据每个像素的变化,若当前像素的亮度信息变化超过阈值C且为增大,则记为on,若为减小,则记为off事件。对于图中的位置信息设 X = ( x , y ) T X=(x,y)^T X=(x,y)T ,其中 X X X为2维向量,事件可以抽象为3D的函数 E = l o g I ( X , t ) E=logI(X,t) E=logI(X,t) ,或者4D函数 E = l o g I ( X , t , p ) E=log I(X,t,p) E=logI(X,t,p) 其中 p = 1 p=1 p=1 表示ON 信号, p = − 1 p=−1 p=1 表示OFF信号, p p p代表事件的极性(Polarity)。

  • 事件输出Demo
    史上最全事件相机DVS/Event-based Camera的介绍和分析综述文章

应用点

特征跟踪、SLAM、捕猎机器人,包括物联网(超低功耗监控和智慧城市)、自动驾驶(车辆测距、SLAM和乘员监控)、机器人技术(场景理解与定位)、工业视觉(过程监控和基础设施检测)等。

参考文献:https://www.sohu.com/a/300758196_100007727

传统相机的缺点

帧率低、运动模糊、动态范围低。
传统相机,无论是CMOS传感器,还是CCD传感器,亦或是RGBD相机,都有一个参数:帧率。它们是以恒定的频率拍摄获取图像。这样,即使帧率能够达到1KHz,那也具有1ms的延时。所以传统相机存在一定的延迟问题。
除此之外,传统相机需要通过一定时间的曝光,使感光器件积累一定的光子,那么在曝光时间之内如果物体在高速运动,则会产生模糊,这也是传统相机的一个问题。
另外,传统相机的动态范围较低,具体表现为在光线极差或者亮度极高时,相机获取的信息有限。
以上三点,是由于相机自身硬件的限制,即使高性能相机能够一定程度减小这些问题,但由于相机原理,这些问题无法避免。这些问题极大地限制了一些应用场景。而事件相机完全不存在这些问题。

这意味着有大量的冗余信息和大量不必要的计算需要,导致大的带宽。

事件相机的优点

低延迟、高动态范围、数据量小、极低功耗。
由于事件相机的成像原理,我们可以发现只要亮度一有变化就会输出,且仅输出变化的数据占用了很小的带宽,同时由于事件相机更擅长捕捉亮度变化,所以在较暗和强光场景下也能输出有效数据。事件相机具有低延迟(<𝟏𝝁𝒔)、高动态范围(𝟏𝟒𝟎𝒅𝑩)、极低功耗(𝟏𝒎𝑾)等特性。

相较于传统相机,事件相机是基于神经形态视觉,其基本理念是受生物系统工作方式的启发,检测场景动态的变化,而不是连续分析整个场景。这意味着让单个像素决定它们是否看到了相关的东西。与固定频率的系统采集相比,这种基于事件的方法可以节省大量的功耗,并减少延迟。

Mobile robot systems need to quickly understand rapid motion in dynamic environments, e.g., Forests, Kitchens, Roads.
However, current sensor based-solutions are not suited for the energy and computational needs of micro mobile robot systems. Like active sensors: IR Depth Camera, LIDAR, Radar. Whereas, DVS has low latency sensing and energy consumption are attractive for mobile robot collision avoidance.

5. 事件相机在无人驾驶中的应用

Event-based Camera in Autonomous Driving

在自动驾驶发展的历程中,视觉算法的应用已经成为不可或缺的一部分。但当前的视觉算法仍然存在着一些局限性:一方面,相机容易受到光线明暗突变、逆光等影响;另一方面,相机在运行时,产生的数据量非常大,因而对算力的要求特别高。

如今,市场上出现一种新型相机传感器,或可以有效解决上述这些痛点,那就是事件相机。事件相机具备极快的响应速度、减少无效信息、带宽小、降低算力和功耗、高动态范围等优势可以帮助自动驾驶车辆降低信息处理的复杂度、提高车辆的行驶安全,并能够在极亮或者极暗环境下正常工作。事件相机是相比于传统的帧相机而言的:帧相机是以固定帧率输出一帧一帧的图片,并最终组成视频流;而事件相机只记录亮度变化的像素点。

  1. 高动态范围

通俗点说,高动态范围指的是相机在极端光强变化下也能保持图像的清晰度。帧相机的动态范围通常只能达到60dB,而事件相机的动态范围能达到120dB,甚至会更高。高动态范围可以帮助事件相机在光线极暗、曝光过度、光线突变等情况下,依然能够保持有效的工作,为自动驾驶增添了一份安全冗余。

工作原理:当对应像素坐标点的光强变化量超过了预先设定的阈值时,事件相机就会以微秒级分辨率标记时间戳,并输出异步事件流。所有像素是异步的,不是同步的输出。

  1. 与传统相机的差异
  • 感光机制不同

  • 读出机制不同:帧相机的读出电路是行列扫描的方式,是一种矩阵数据整体读出的形式,在像素坐标轴上记录像素点的RGB信息;而事件相机是通过AER的编码方式,仅将事件以时间戳和坐标的数据形式,按照事件产生的先后顺序异步传出。

  • 电路设计不同

  1. 产品类型
  • DVS(动态视觉传感器)

    优势:电路设计简单,像素面积小。

    挑战:纯事件数据的可视化程度较低,无法提供精细化的图像。

  • ATIS(基于异步时间的图像传感器)

    优势:能提供灰度信息,功耗相对DAVIS较低。在启动后,由于直接发放了一次脉冲,可以直接获取到相机前方的所有灰度信息,然后根据运动区域内,将在产生的脉冲信号上不断更新相应灰度信息。

    挑战:不适用在环境亮度变化不频繁的场景。比如在高速运动场景下,由于光强测量结果是在脉冲信号产生后的一段时间内的平均光强,所以存在事件与灰度信息重构更新不匹配的情况。

  • DAVIS(动态和有源像素视觉传感器)

    优势:DAVIS与ATIS一样,也可以提供灰度信息;同时,DAVIS由于共用一个感光器,像素面积相对ATIS更小。

    挑战:APS电路的采样速度远不如DVS电路,导致二者无法做到精准同步。再者,APS电路在高速场景下存在拖影现象。

产业链中的不同之处主要是在图像传感器芯片、算法软件,比如更适合事件相机的芯片是类脑芯片、更适合的算法则是脉冲神经网络。

下图给出各类事件相机的对比。
史上最全事件相机DVS/Event-based Camera的介绍和分析综述文章

技术层面的挑战

(1)无法识别具体目标物

帧相机输出的是帧图像,并且已拥有了成熟的应用和标定数据库;而事件相机只能给出比较原始的数据信息,比如目标物的外部轮廓,并且也没有一个自己独立的数据库来匹配这些轮廓信息。

(2)缺少适合的芯片和算法

当前事件相机使用的是原来帧相机的一整套架构体系(比如所使用的芯片类型、算法模型等),但基于帧图像的架构并不能完全处理好事件流,而现有的大部分事件相机产品只是做了简单的架构平移。第一,较适合事件相机的芯片将会是类脑芯片。第二,较适合事件相机的算法为脉冲神经网络。

工程层面挑战

(1)阈值设定难度高

阈值大小的设定是决定事件相机是否能在自动驾驶中用好的关键一步,这需要大量场景数据的积累、算法的优化、设备运行时动态地调整阈值。

(2)数据处理效率低

(3) 与其它传感器融合的挑战

由于事件相机无法单独提供深层次的数据,比如测距、测速、表面具体颜色等,只能获取到物体的轮廓,所以单纯地使用一个事件相机是无法给到自动驾驶车辆足够的冗余安全,与其他传感器的融合才是更好的感知方案。在与其它传感器融合时,需要把事件流与其它传感器的信号进行同步匹配。

以事件相机与激光雷达的融合为例,事件相机与激光雷达都有帧的概念,激光雷达也是以某一恒定帧率发射点云。若想要把这两个传感器同步起来,就需要做到两个方面:一方面,时间戳的一一对应;另一方面,需要在做好标定的基础上,将事件相机的像素点云映射到激光雷达的点云上。

6. 相关资源/论文

1. CVPR 2021 Workshop on Event-based Vision

2. Event-based Vision Resources

3. 国内事件相机研究团队

4. 一文谈谈事件相机在自动驾驶领域的应用前景

中文论文资料:文章来源地址https://www.toymoban.com/news/detail-410191.html

  1. 基于事件相机的连续光流估计
  2. 基于事件相机的合成孔径成像
  3. 基于事件相机的定位与建图算法: 综述
  4. 基于事件相机的机器人感知与控制综述

到了这里,关于史上最全事件相机DVS/Event-based Camera的介绍和分析综述文章的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 史上最全ThreadLocal 详解(二)

    ThreadLocal 内存泄露的原因及处理方式 目录 1、ThreadLocal 使用原理 2、ThreadLocal 内存泄露的原因 3、 为什么不将key设置为强引用 3.1 、key 如果是强引用 3.2、key 如果是强引用 3.3  那么为什么 key 要用弱引用 3.4 如何正确的使用ThreadLocal        前文我们讲过ThreadLocal的主要用途是

    2024年02月02日
    浏览(57)
  • 史上最全Oracle语法合集

    查询 排序 集合 并集: 交集 :intersect 差集 :minus 联合查询 : 子查询 : 分页SQL: 创建表空间: 修改表空间: 修改原有数据文件大小: 临时表空间 创建用户: 修改用户: 系统权限: 对象权限: 删除用户: 创建表: 删除表: 约束: 给表添加列 删除表中的一个列 修改一

    2024年02月14日
    浏览(38)
  • spring security (史上最全)

    一般意义来说的应用访问安全性,都是围绕认证(Authentication)和授权(Authorization)这两个核心概念来展开的。 即: 首先需要确定用户身份, 再确定这个用户是否有访问指定资源的权限。 认证这块的解决方案很多,主流的有 CAS 、 SAML2 、 OAUTH2 等(不巧这几个都用过-_-),

    2024年02月06日
    浏览(43)
  • .NET 6 史上最全攻略

    欢迎使用.NET 6。今天的版本是.NET 团队和社区一年多努力的结果。C# 10 和F# 6 提供了语言改进,使您的代码更简单、更好。性能大幅提升,我们已经看到微软降低了托管云服务的成本。.NET 6 是第一个原生支持Apple Silicon (Arm64) 的版本,并且还针对Windows Arm64 进行了改进。我们构

    2024年02月04日
    浏览(59)
  • C#事件event

    事件模型的5个组成部分 事件拥有者(event source)(类对象)(有些书将其称为事件发布者) 事件成员(event)(事件拥有者的成员)(事件成员就是事件本身,事件不会主动发生,其只会在事件拥有者的内部逻辑的触发下发生。) 事件响应者(event subscriber)(类对象)(有

    2024年02月09日
    浏览(52)
  • c#事件(event)

    C#中的事件是一种特殊的委托,它用于实现观察者模式,允许对象在特定事件发生时通知其他对象。 以下是使用C#事件的示例: 首先,定义一个包含事件的类: 在上面的代码中,我们定义了一个EventPublisher类,其中包含一个名为MyEvent的事件。该事件基于EventHandler委托类型,它

    2024年02月10日
    浏览(46)
  • adb 获取日志命令-史上最全

    adb logcat 获取的是日志buffer中从头到尾的日志,并且最新的日志会持续写入。历史日志多少取决于缓冲区大小,并且我们可以通过参数过滤掉无用的日志。可以使用xlog框架将历史日志保存(可以研究下源码)。 日志打印不了 插拔重启 日志缓冲区修改最大 usb驱动查看 adb重启

    2024年02月04日
    浏览(40)
  • Python知识点(史上最全)

    Python期末考试知识点(史上最全) python简介 type()不会认为子类是一种父类类型。 isinstance()会认为子类是一种父类类型 基础语法 运算符: 算术运算符: 多了一个**,代表 幂方 5**5 就是5的5次方 还多了一个 // 整数除法 逻辑运算符: and,or,not 与,或,非 赋值运算符: 没有+

    2024年02月02日
    浏览(42)
  • 史上最全面的敏感信息收集方案

    介绍一款目录渗透工具: ffuf ffuf Fast web fuzzer written in Go,速度快,自定义性高,非常好用 这里贴出一个我常用的脚本:(这里注意域名或IP后面要加上 /FUZZ ) 语雀( http://yuque.com )是一个企业级协作服务,提供文档、表格、项目管理等协作工具,帮助企业沉淀、整理内部信

    2024年02月05日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包