一种基于Spike Camera的彩色脉冲相机仿真
2022-08-20马雪山
马雪山,刘 斌,杨 静,田 娟,马 雷
(1.克拉玛依职业技术学院,克拉玛依 834000;2.北京大学数字媒体研究所,北京 100871)
0 引言
与传统的基于帧的相机不同,受到生物启发的视觉传感器有着不同视觉处理机制,在过去的10年间,各种神经形态视觉传感器被开发出来,具有代表性的神经形态视觉传感包括动态视觉传感器(DVS)、基于异步时间的图像传 感 器(ATIS)及 动 态 主 动 成 像 传 感 器(DAVIS)等。在众多原理各异的神经形态视觉传感器中,DVS能以微秒级时间分辨率响应像素级亮度相对变化,实现高速运动的捕捉,但是无法重构场景完整的纹理。ATIS在DVS的基础上引入了基于时间间隔的光强测量电路来实现图像重构。DAVIS在像素级上结合了动态视觉传感器(DVS)和有源像素传感器(APS)的优点,实现对所有像素的光强测量。但无论ATIS还是DAVIS,虽然都是对DVS的改进,仍然不能很好地解决高速运动场景的重建问题。
受视网膜神经元信号处理的启发,2017年北京大学数字媒体所黄铁军教授的团队研究出一种新型的仿视网膜中央凹的脉冲阵列式视觉传感器Spike Camera。该传感器空间分辨率为400×250,可以实现40 KHz的超高速率采样。相比传统相机和之前的神经形态传感器,能够实现超高速运动场景的精细纹理重建,在无人驾驶等高速场景的视觉任务中具有巨大的潜力。
基于神经形态视觉传感器的脉冲神经网络在目标检测领域有明显的速度优势,但是由于缺乏相应的脉冲数据集,影响了基于此类视觉类传感器的神经网络的发展和应用。本文根据Spike Camera传感器的原理设计并实现了一种脉冲相机的仿真方法,通过每个像素异步独立的工作,可以将一段视频转化为Spike Camera的脉冲数据集,从而实现对数据集的扩充。
目前大部分的神经形态视觉传感器都基于灰度模式,在目标检测、识别和跟踪等任务中可以实现很好的效果。但是彩色信息在计算机视觉中也是非常重要的,比如在图像分割和目标识别等领域。已经有人在这方面开始了探索,如基于DAVIS的彩色事件相机SDAVIS192和Color-DAVIS346。目前第一代的Spike Camera还是以灰度模式工作的,因此本文通过仿真脉冲相机的工作模式探索在Spike Camera上实现彩色信息的脉冲编码方法。实验表明,使用RGB三通道的脉冲可以有效地编码彩色信息,而基于拜尔阵列的RGB单通道脉冲编码是一种有效的有损编码,在损失很少的图像信息的情况下,可以极大地减小脉冲带宽,并且节省存储和传输脉冲数据的空间。本文所列举仿真方法与实验结果对设计下一代彩色模式的脉冲相机具有重要参考意义。
1 Spike Camera模型
1.1 基于仿视网膜中央凹的视觉采样模型
Spike Camera通过模拟视网膜中央凹区域的细胞连接结构和信号处理机制,建立一个仿真神经元的“积分发放模型”,如图1所示,包含一个光感受器,一个积分器和阈值比较单元。
图1 脉冲信号的“积分发放模型”
光感受器负责将光信号转化为电信号传到积分器,积分器对电信号进行累积,如公式(1)所示,代表光亮强度,代表积分时间,代表发放阈值。当累积的强度值达到脉冲发放的阈值时,输出一个脉冲信号,同时积分器复位到0。
由这样一组“积分发放模型”的像素单元共同组成一个二维阵列,阵列中的每个像素单元独立地进行从光强接收到脉冲发放的过程。
传感器生成的脉冲数据由0和1组成。每个像素在一个采样时刻用一个比特表示脉冲的发放,如果有脉冲发放用1表示,没有脉冲用0表示,这样同一时刻所有像素的脉冲发放情况构成了一个只有0和1的二值脉冲矩阵。
1.2 重构图片的算法
因为每个像素独立地发放脉冲,所以脉冲信号具有异步性,亮度高的像素发送脉冲的频率高于亮度低的像素。通过分析这个脉冲的序列,可以重建每个采样时刻的视觉纹理。针对不同任务的场景,几种视觉场景重建的算法被提出,其中TFP(Texture from Playback)和TFA(Texture from Adaptive threshold)适合重建静态场景的纹理。文献[14]提出了一种三层神经脉冲模型,在高速和静态场景中都能很好地重建图像纹理。
本文使用TFI(Texture from ISI)方法重建图像纹理。脉冲间隔(ISI)指的是两次脉冲之间的相邻间隔,如图2所示,光强与脉冲间隔成反比,光强高的像素产生的脉冲间隔小,而光强低的像素产生的脉冲间隔则较大。如公式(2)所示,只需要使用两次脉冲之间的间隔,就可以重建光强的亮度。基于脉冲间隔的图像重构算法TFI适合高速场景的图像重构。
图2 不同亮度像素产生脉冲间隔的示意图
其中P代表在t时刻重建的像素值,代表最大的动态范围,Δt表示两次脉冲的间隔。
2 脉冲相机仿真
基于“积分发放模型”的原理,本文实现了Spike Camera脉冲相机的仿真。图3是仿真脉冲相机生成脉冲数据的基本流程。
图3 仿真脉冲相机的基本流程
仿真脉冲相机的核心部分是脉冲生成器,它由400×250个脉冲生成单元组成,其中每个脉冲生成单元与传感器的一个像素单元对应。仿真脉冲相机输入数据是一组连续的图像帧序列,输出数据是一个只包含0和1的二值脉冲矩阵序列。
获取输入的图像帧序列有两种方式,一种是使用传统的高速镜头拍摄运动的场景,然后将拍摄的视频流转换为连续的图像帧;第二种是直接使用计算机生成的动画,模拟高速的运动场景。
在生成仿真脉冲的过程中,首先将输入图像帧的分辨率调整至与Spike Camera传感器同样的分辨率,分辨率为400×250。将每一图像帧作为一个采样时刻,用图像帧中像素的亮度值模拟传感器中到达的光子数,送入对应的脉冲生成单元中。
脉冲生成单元包括累加器、阈值比较器和脉冲生成器。累加器保存着每次采样结束后的像素累加值。在一个采样时刻,当采样的像素值(光子数)到达后,先送往累加器中进行累加,然后将累加结果送入阈值比较器,与设定的阈值进行比较。当累积的像素值(光子数)超过设定的阈值时,在生成的脉冲矩阵数据中,将对应坐标标记为1,表示脉冲生成器发放一个脉冲,同时将累加器重置到值为0的初始状态;如果没有超过设定的阈值,脉冲矩阵对应的坐标标记为0,表示此时没有发放脉冲。
每个脉冲生成单元独立进行脉冲的生成,在一个采样时刻结束后,仿真脉冲相机生成一个由0,1组成的二值矩阵。如图3所示,在连续时间的采样后,仿真脉冲相机将连续的图像帧序列转化为对应的脉冲矩阵序列。
像素单元的脉冲生成算法
输入:一个采样时刻的像素值p,累加器保存的状态值s,脉冲发放阈值
输出:1或0,1表示发放一个脉冲,0表示没有发放脉冲
1 s←s+p
2 IF s>=
3 s←0
4 RETURN 1
5 ELSE
6 RETURN 0
7 ENDIF
3 彩色脉冲编码
3.1 RGB三通道彩色脉冲
位于视网膜上的光感受器细胞负责将接收到的光信号转换成为电信号。人类的光感受器细胞是由杆细胞和锥细胞组成,其中杆细胞的功能是亮度感知,不具有颜色的感知能力,而锥细胞能够对物体的细节进行感知,并且具有颜色的感知能力。根据杨-赫的三原色理论,彩色信息可以通红、绿、蓝三种色彩混合相加形成,在视网膜上存在L、M、S三种锥细胞,分别对红色、绿色和蓝色光最为敏感。
Spike Camera传感器本身是基于灰度模式的,如果要传输彩色场景的信息,可以使用三种颜色的传感器代替三种锥细胞,将一个彩色的场景分解为R、G、B三个通道,如图4所示,彩色场景中的每个像素用R、G、B的三个值表示。
图4 RGB三通道彩色脉冲的过程
在R、G、B三个通道中,分别应用Spike Camera的积分发放模型,对每个像素进行脉冲的发放,根据亮度的累计产生脉冲信号。在一个采样时刻生成的原始脉冲数据应当包括R、G、B三个通道的脉冲数据。
使用脉冲数据重建彩色图像时,首先使用重构图片的TFI算法分别恢复R、G、B三个通道,得到每个通道任一采样时刻的重构图。再对每个像素利用重建后的亮度值(R’G’B’)合并成一个通道,最终重建彩色图像。
在彩色的脉冲编码中,如果采用三通道分别传输RGB的亮度信息,每个像素需要对应三个脉冲生成单元,产生的脉冲带宽达到原来的3倍,生成的脉冲数据规模也变为3倍,这对传递、保存脉冲数据和重构图像都带来了更大的存储空间和性能的要求。
3.2 RGB单通道彩色脉冲
为了减少脉冲数据的产生,本文在脉冲的发放前,先将三个通道的R、G、B值编码在一个通道中,如图5所示,本文使用拜耳阵列对彩色场景进行编码。在传感器上规律分布绿色、红色和蓝色的像素,因为人眼对绿光最敏感,这里绿色的像素是其他颜色的两倍,具体的排列方式是奇数行为GRGR,偶数行为BGBG。每个像素只保留对应颜色的亮度值,通过脉冲生成器分别进行亮度的积分和脉冲的发放。产生的脉冲数据只包含一个通道,传输的带宽和数据减少到原来的三分之一。
图5 RGB单通道彩色脉冲的过程
使用单通道的脉冲数据重构图片时,会得到一个三种颜色的马赛克图像,每个像素只有一种颜色的信息。然后对每个像素利用周围像素的颜色信息,使用边缘自适应彩色插值的方法,推导出像素缺失的其他两种颜色,将这个图像重新解码成三个通道,最后合并成一个彩色图像。
与彩色的RGB三通道编码相比,这种方式每个像素只使用一个脉冲生成单元,在脉冲编码时也只占用了一个通道,极大节省了存储和传输的空间,重建图像纹理时的效率也有很大提升。在硬件实现上,通过传感器直接采集彩色的RGB信息,每个像素需要有限的空间中有三块完全对齐的三色滤镜,技术难度比较大。而使用拜耳阵列的颜色滤镜,每个像素只需要一种颜色的滤镜,相比起来是更高效的方案。
3.3 YUV的彩色脉冲
YUV是在电视、计算机视频和图像领域常用的一种颜色空间,本文也尝试了YUV颜色空间中进行彩色脉冲的编码。YUV是一种常见的颜色编码格式,具有易压缩性,方便颜色信息的处理和传输。Y代表亮度信息,U和V代表色度信息,描述是像素的色彩及饱和度。
使用YUV颜色空间对彩色脉冲编码也可以分为三通道编码和单通道编码两种方式。YUV三通道彩色脉冲编码与RGB三通道彩色脉冲类似,Y、U、V三个通道独立进行脉冲的生成和发放。
YUV单通道的彩色脉冲编码,在生成脉冲之前,先对色度即U、V通道下采样,然后将Y、U、V的值编码在一个通道中,先保存所有的Y值,依次再保存U值、V值,从而有效降低脉冲带宽。本文使用YUV420采样方式对彩色信息进行编码,在亮度Y通道上不变,在色度U、V通道上分别进行垂直下采样和水平下采样,每个四像素的Y值共享一组U、V值。因此存储U、V值的数量分别只有Y的四分之一,压缩比可以达到50%。
4 实验与讨论
4.1 仿真脉冲相机
本文使用Python和OpenCV实现了Spike Camera的工作模式仿真。在传感器的仿真中,大量的运算是对三维矩阵和二维矩阵的操作。NumPy是Python的一个用于定义多维数据的库,提供一个强大的N维数组对象ndarray,支持大量的数组与矩阵的运算。使用NumPy库,可以极大地提升仿真传感器处理多维数组的能力和性能。仿真脉冲传感器的分辨率为400*250,发放脉冲的阈值为360。
首先测试在灰度模式下工作的仿真脉冲相机,使用一段计算机生成动画作为数据集,动画的每一帧为灰度图,动画内容是一枚旋转硬币。将每一帧作为一个采样时刻,用像素的亮度值模拟到达的光子数,每个像素单元独立累积到达的光子数。当累积的光子数超过阈值时,发送一个脉冲并重置到初始状态。
如图6所示,动画的原始帧首先生成为脉冲阵列数据,与图像帧类似,这里使用脉冲帧描述一个采样时刻产生脉冲的情况,白点表示此时像素单元产生了一个脉冲。最后再使用重构算法从脉冲数据中重建图像帧。通过计算,灰度模式下重构图像帧与原始帧的PSNR值达到了32。
图6 原始帧、脉冲帧和重构帧
4.2 彩色脉冲仿真
基于仿真传感器,本文分别在多个彩色场景的数据集上进行了RGB颜色空间上三通道和单通道彩色脉冲编码和YUV颜色空间上的三通道和单通道彩色脉冲编码的仿真实验。彩色场景的数据集如图7所示,第一个数据集是计算机生成的动画,内容是一枚旋转的硬币,第二、第三个数据集是使用高速镜头拍摄的场景,分别是飞行的鸟类和奔跑的豹子。
图7 彩色脉冲编码使用的彩色场景数据集
分别在每个数据集上连续采样500个彩色帧,使用同样硬件环境和重建帧算法,使用不用的颜色编码方式生成脉冲数据并重构彩色的图像帧。以原始图像帧作为参考,使用峰值信噪比PSNR和结构相似性SSIM等度量指标对比每种彩色脉冲编码的重构图像质量,实验结果如表1和图8、图9所示。
表1 彩色脉冲编码重构图像质量的对比
图8 彩色脉冲编码重构图像PSNR对比
图9 彩色脉冲编码重构图像SSIM对比
本文同时还对比了500次采样后,生成的脉冲数据带宽、脉冲数据大小、算法平均的重建时间等性能指标,实验结果如表2所示。实验结果表明,与YUV颜色空间相比,在RGB颜色空间中可以更有效地编码彩色脉冲信息。分析YUV颜色空间上的三通道彩色脉冲编码,计算Y、U、V三个通道重构的PSNR值,对比后得出U、V通道重构质量明显低于Y通道,表明在YUV空间上的脉冲编码,相比亮度信息,颜色信息损失较大。
表2 彩色脉冲编码性能的对比
在RGB颜色空间上,虽然重构图片的部分运动细节有所丢失,但是颜色信息得到了很好的重构。采用RGB三通道的彩色脉冲编码的重构图像质量最好,而采用RGB单通道的彩色脉冲编码在损失很少的性能下极大地压缩了脉冲数据,减少了传输带宽。
5 结语
新型的神经形态视觉传感器Spike Camera,相比传统相机和之前的神经形态传感器,在超高速场景的视觉任务中有巨大的潜力。本文基于Spike Camera的原理,通过设计与实现Spike Camera的仿真相机,探索了在Spike Camera上的彩色脉冲编码方法。实验结果表明,采用单通道的RGB彩色脉冲编码能在损失很少的图像信息的情况下,极大地压缩脉冲数据,减少传输带宽,为下一代的彩色脉冲相机在硬件实现上提供了重要设计参考。
致 谢:本文为作者在北大访学期间完成,非常感谢北京大学视觉感知研究中心黄铁军教授,马雷副研究员在科研方法、研究思路和实验设计过程中提供了宝貴的指导意见,在此表示诚挚谢意!