事件相机(Event Camera)及相关研究简介
目录
- 事件相机(Event Camera)及相关研究简介
- 一、概述
- 二、事件
- 三、事件相机的优点
- 四、未来,新一代相机?
一、概述
事件相机(Event-based camera)是近几年出现的新型相机,它完全不同于传统相机的数据回传格式,而是一种新型的,异步地(asynchronously),所谓事件(event)。事件相机主要有两种,DVS(Dynamic Vision Sensor)以及DAVIS(Dynamic and Active Pixel Vision Sensor)。DVS是普通的事件相机,而DAVIS就是在回传事件的同时还可以回传灰度图。
有人把事件相机称为下一代相机,事实是这样吗?我只能说有待考验。目前为止我们的确发现了事件相机优于传统相机的地方,但仍有很多地方事件相机未能做到。其实,与其说未能做到,我更愿意说是还没有开发到。现在研究所谓Event-based Vision的人越来越多,相信它的优点将被进一步发掘。今天我写这一篇博文,用意便是将这样一个新兴事物介绍给更多的人,希望在不久的将来我们能够一起去发现它在视觉方面的惊人之处。
详细了解可以前往Gallego以及他的同事的一篇综述:Event-based Vision:A Survey
更多的资源可以前往收录事件视觉领域论文的github:https://github.com/uzh-rpg/event-based_vision_resources
事件相机官网链接:https://inivation.com/
二、事件
我们把事件相机称为一种bio-inspired sensor,研究它的领域称为bio-inspired vision,即“仿生的”。制作事件相机的人的灵感就是来自于仿生。在人的眼睛中,会有一部分视觉细胞对动态的东西特别敏感。设想一下,在你面前有一个静态的房间,你去一点一点地观察它,其实很慢(就像如果让你去找到房间里一个角落放的一本书)。但是,如果突然有一个东西动了起来,我们是视线会立刻被吸引过去。传统的相机呈现在我们眼前的便正是前者,一个静止的空间。而事件相机制作的目的就是:敏感地捕捉到运动的物体。
在介绍事件之前,我们先来看看传统RGB相机。在传统的视觉领域,相机传回的信息是同步的,所谓同步,就是在某一时刻t,相机会进行曝光,把这一时刻所有的像素填在一个矩阵里回传,一张照片就诞生了。一张照片上所有的像素都对应着同一时刻。至于视频,不过是很多帧的图片,相邻图片间的时间间隔可大可小,这便是我们常说的帧率(frame rate),也称为时延(time latency)。这就涉及到了事件相机的优越之处,关于事件相机的优点我们后文再说。
接下来我们说事件。事件相机回传的信息我们称为事件(Event),非常随便的命名(如果是我做出来的我就用我名字命名)。一个事件所具有的格式是一个向量,如下:
ϵ = ( x i , y i , t i , p i ) \epsilon = (x_i,y_i,t_i,p_i) ϵ=(xi,yi,ti,pi)
事件相机便是这样异步地回传如上所示的事件。
何为异步?就是不同于传统相机同时地回传所有像素值,事件相机不同事件回传的时刻是不同的,可以看到上述事件中有一个值 t i t_i ti,便是这个事件发生的时间。
事件相机的工作机制是,当某个像素所处位置的亮度值发生变化时,相机就会回传一个上述格式的事件,其中前两项为事件的像素坐标,第三项为事件发生的时间戳,最后一项取值为极性(polarity)0、1,(或者-1、1)代表亮度是由低到高还是由高到低,也常被称作Positive or Negtive Event,又被称作On or Off Event。
就这样,在整个相机视野内,只要有一个像素值变化,就会回传一个事件,这些所有的事件都是异步发生的(再小的时间间隔也不可能完全同时),所以事件的时间戳均不相同,由于回传很简单,所以和传统相机相比,它具有低时延的特性,可以捕获很短时间间隔内的像素变化。
事件的触发是由复杂电路所确保的,在研究时,通常将其建模如下(看不懂可以跳过,问题不大):
设某一个特征点在某视频中对应的轨迹为 u ⃗ ( t ) \vec u(t) u(t)其中 u ⃗ = ( u , v ) \vec u=(u,v) u=(u,v)也即该点坐标随时间在变化。
假设图片光强值为 I ( u ⃗ ( t ) , t ) I(\vec u(t),t) I(u(t),t),即一个传统视频。
在极短时间内,类似光流基本假设光度不变,在该点轨迹出的光度应该是不变的,由全微分公式可以得到如下方程:
d I ~ d t = < ∇ u I ~ , u ˙ > + ∂ I ~ ∂ t = 0 \frac{d\tilde I}{dt}=<\nabla_u \tilde I,\dot u>+\frac{\partial \tilde I}{\partial t}=0 dtdI~=<∇uI~,u˙>+∂t∂I~=0
其中 < ⋅ , ⋅ > <·,·> <⋅,⋅>表示点乘, ∇ u I ~ = ( ∂ I ~ ∂ u , ∂ I ~ ∂ v ) T \nabla_u \tilde I=(\frac{\partial \tilde I}{\partial u},\frac{\partial \tilde I}{\partial v})^T ∇uI~=(∂u∂I~,∂v∂I~)T是光度值随轨迹变化的梯度, u ⃗ ˙ = ( u ˙ , v ˙ ) T \dot {\vec u}=(\dot u,\dot v)^T u˙=(u˙,v˙)T即为该点的像素运动速度。
DVS中考虑对数域的光度值,即:
I ~ = l o g ( I ) \tilde I=log(I) I~=log(I)
故光度值变化为:
Δ l o g ( I ) ≈ ∂ l o g ( I ) ∂ t Δ t = − < ∇ u l o g ( I ) , u ˙ Δ t > \Delta log(I)\approx\frac{\partial log(I)}{\partial t}\Delta t=-<\nabla_u log(I),\dot u\Delta t> Δlog(I)≈∂t∂log(I)Δt=−<∇ulog(I),u˙Δt>
当光度变化大于某阈值C时,事件触发:
∣ Δ l o g ( I ) ∣ ≈ ∣ < ∇ u l o g ( I ) , u ˙ Δ t > ∣ ≥ C |\Delta log(I)|\approx|<\nabla_u log(I),\dot u\Delta t>|\geq C ∣Δlog(I)∣≈∣<∇ulog(I),u˙Δt>∣≥C
当 Δ l o g ( I ) ≥ C \Delta log(I)\geq C Δlog(I)≥C,触发正事件(p=+1),当 Δ l o g ( I ) ≤ − C \Delta log(I)\leq -C Δlog(I)≤−C时,触发负事件(p=-1)。
下面看一下事件长什么样:
(a)图是画在三维坐标系里的事件,将(a)图每个像素事件累加,压成一张图,便是(b)图(红色和蓝色代表正负事件)
再来几张图:
(部分图片来自网络和他人博客,侵删)
三、事件相机的优点
当你看event相关的论文时,经常遇到的便是low time latency and high dynamic range,即低时延,高动态范围,这大概就是事件相机的主要优点,在这里我再列举一下,可能不全,大家可以在使用中慢慢发现。
1、高动态范围,低时延,相邻Event之间的时间可以小于1微秒,这个前面也说过。
2、由于低时延,在拍摄高速物体时传统相机会发生模糊(由于会有一段曝光时间),而事件相机几乎不会。如下图介绍:
在拍摄一个旋转的圆盘时,如果转速较慢:
而如果转速较快:
可以看到转速较快时传统相机发生了模糊,而事件依然完整地记录运动状态。
3、由于事件相机的特质,在光强较强或较弱的环境下(高曝光和低曝光),传统相机均会“失明”,但像素变化仍然存在,所以事件相机仍能看清眼前的东西。这就能引申到很多方面,比如自动驾驶,在黑夜里行走,可能传统相机已经几乎看不到前方黑暗中的人,但事件相机看得一清二楚。
四、未来,新一代相机?
事件相机确实有优于传统相机的能力,但也有其不足,如数据难以处理,只有轮廓信息缺乏光强信息。在时间域上取值是连续的但在值域的取值是离散的,这一点也有别于常见的数字信号。这样的数据在处理时已经完全不能用传统RGB相机的方法处理了。但是它仍能够完成传统相机所能完成的任务,如光流估计、特征提取、三维重建、模式识别、SLAM等等等等。
我想在未来我们一定是将两种相机各取其长,我相信在我们的手里它一定能发挥它最大的价值。也希望能够有更多的人投入到这个新兴的领域来。
之后我将继续更近对事件相机的介绍,并整理出一些论文笔记。有兴趣的朋友可以一起讨论呀!