Event cameras (DVS)

事件相机,即动态视觉传感器(Dynamic Vision Sensor, DVS),是一种仿生相机,其中每个像素都独立且异步地工作。它不以固定速率捕捉完整的亮度帧,而是每个像素持续监测其位置处的对数亮度,一旦变化超过对比度阈值就会触发一个事件。其输出不是一系列图像,而是一个稀疏、连续的事件流,具有微秒级的时间分辨率。

事件生成模型

每个事件是一个元组

ek=(xk,tk,pk)e_k = (\mathbf{x}_k, t_k, p_k)

其中 xk=(uk,vk)\mathbf{x}_k = (u_k, v_k) 是像素坐标,tkt_k 是时间戳(微秒级分辨率),pk{+1,1}p_k \in \{+1, -1\} 是极性——表示亮度是增大还是减小。触发条件为:

ΔL(x,t)=L(x,t)L(x,tlast)+C    p=+1\Delta L(\mathbf{x}, t) = L(\mathbf{x}, t) - L(\mathbf{x}, t_{\text{last}}) \geq +C \;\Rightarrow\; p = +1 ΔL(x,t)=L(x,t)L(x,tlast)C    p=1\Delta L(\mathbf{x}, t) = L(\mathbf{x}, t) - L(\mathbf{x}, t_{\text{last}}) \leq -C \;\Rightarrow\; p = -1

其中 L=logL = \log 亮度,C0.1C \approx 0.10.50.5 是传感器固件中设定的对比度阈值。由于比较是在对数空间中进行的,传感器响应的是相对亮度变化,这正是其具有巨大动态范围的原因。

事件从何而来?移动的边缘

在很小的时间间隔内,某像素处的亮度变化可以通过对亮度恒定假设进行线性化来很好地近似:

ΔL(x)L(x)v(x)Δt\Delta L(\mathbf{x}) \approx -\nabla L(\mathbf{x}) \cdot \mathbf{v}(\mathbf{x})\, \Delta t

即变化量等于图像梯度与光流的点积。对这一方程的两种解读推动了基于事件视觉领域的大部分研究:

设计带来的实际影响

帧相机与事件相机对比

特性帧相机事件相机(DVS)
输出固定速率下的完整图像稀疏异步事件流
时间分辨率约10–100毫秒约1微秒
动态范围约60 dB140 dB以上
运动模糊有(曝光造成)
绝对亮度无(仅有变化量)
数据速率恒定(分辨率×帧率)随场景活跃程度变化

硬件现状

常见硬件包括iniVation的DAVIS系列以及Prophesee的Metavision传感器(包括由索尼代工的IMX636系列)。DAVIS的设计对SLAM尤为重要,因为它在同一块芯片上通过共享光学系统,将DVS与标准帧传感器(APS)以及IMU集成在一起——从单一设备提供完全对齐的事件、帧和惯性数据。这正是Ultimate-SLAM这类融合系统以及EKLT这类混合跟踪器所依赖的硬件前提。

对于没有硬件条件想要入门的读者:Gallego 2020综述是标准读物,Event Camera Dataset以及MVSEC/DSEC是标准基准数据集,而诸如ESIM和v2e这样的仿真器可以从普通视频生成合成事件数据——这也是DEVO等学习式系统所采用的训练数据获取路径。社区维护的Awesome-Event-based-Vision仓库对以上所有资源都做了索引。

对SLAM的意义

事件相机恰好能应对基于帧的视觉SLAM会失效的那些情形:快速运动(运动模糊)、高动态范围场景(饱和)以及弱光环境。其微秒级延迟还使状态估计能够以远超30-60 Hz的速率运行,这对四旋翼这类敏捷机器人尤为重要。然而,其完全不同的输出格式意味着经典的SLAM前端无法直接应用——围绕这种传感器,必须开发出一整套全新的算法家族(EVO、ESVO、EKLT、Ultimate-SLAM、DEVO)。

相关条目