面向SPAD图像传感器的超高速目标定位处理器
2022-11-26姚春赫杨旭赵明心刘剑吴南健刘力源
姚春赫,杨旭,赵明心,刘剑,吴南健,3,刘力源
(1 中国科学院半导体研究所半导体超晶格国家重点实验室,北京 100083)(2 中国科学院大学 材料与光电研究中心,北京 100049)(3 中国科学院脑科学与智能技术卓越创新中心,北京 100083)
0 引言
超高速物体定位在观察发动机的燃烧过程、打印机喷墨过程和燃料喷射过程等民用或科学研究等众多应用中有很重要的价值[1]。传统的图像传感器由于读出电路以及一些其他因素的限制,很难达到较高帧率[2]。而脉冲频率调制图像传感器[3-5]和单光子雪崩二极管图像传感器[6-8]等新型脉冲图像传感器可以通过较低的数据率来达到更高的帧率,尤其是单光子雪崩二极管(Single Photon Avalanche Diode,SPAD)图像传感器具有高光子计数效率和高时间分辨率的突出优势[9]。SPAD器件内的热激发或隧道效应引起的图像噪声[10]会严重干扰背景减除法的处理效果[11]。因此,为了提高定位性能,超高速目标定位处理器应包括降噪电路。
目前,已经有许多用于目标定位的处理电路被提出,一部分工作是基于深度学习的处理电路[12]13],而另一部分则是基于传统算法的处理电路,例如局部二值模式(Local Binary Pattern,LBP)算法[14][15]和Hough Transform算法[16]。这些处理电路主要是基于传统图像传感器的灰度图像,受限于存储和计算复杂度,这些处理电路难以满足与SPAD图像传感器高帧率相匹配的超高速物体定位需求。尽管有一些对超高速定位硬件电路的尝试[17-20],但它们面向的场景极为简单,或付出了巨大的硬件代价。另一方面,在超高速物体定位的应用场景中,相邻两帧内的背景通常可以认为是静态的,因此可以采用背景减除法。背景减除法运算简单,使其更易于硬化为超高速处理器。
针对上述问题,本文提出了一种基于高斯滤波和背景减除法的SPAD脉冲图像传感器的超高速目标定位处理器,并在现场可编程门阵列(Field Programmable Gate Array,FPGA)开发板上验证了其性能。本文主要内容包括:1)提出了一种用于脉冲图像传感器的高斯滤波和背景减法方法,通过重构高斯滤波方程去除了高斯滤波中的乘法操作,并通过初始化背景图去除了背景减除过程中的减法操作,通过这两种方法减少脉冲图像中的噪声并以超高速定位运动物体;2)提出了一种基于上述高斯滤波和背景减除法的超高速目标定位处理器;3)本文设计的目标定位电路可以复用到降噪和背景减除处理中来节省资源。该处理器可以进行超高速物体定位,在处理128×128分辨率的SPAD脉冲图像时,可以达到100 Kfps的速度,在超高速定位应用中表现出了其应用的优势。实验所得处理帧频受限于所使用的SPAD图像传感器,若忽略传感器帧频限制,该处理器的峰值处理帧率可达到1605 Kfps。
1 处理器设计
在实际使用中,超高速目标定位对处理器的延时有着相当苛刻的要求,处理器的延时直接决定了目标定位所能达到的最高帧率。同时为了兼顾处理器体积以及可能存在的后续处理需求,处理器的硬件成本也应尽可能小。为了确保低延时,本文提出的方法以及电路结构中,尽可能提高了运算的并行度,避免了迭代运算造成的额外延时。同时通过简化高斯滤波以及背景减除法,消除了乘法运算,进一步降低了延时并减少了硬件资源消耗。本节将详细描述处理器架构,并分别阐述每个部分的关键设计。
1.1 处理器架构
超高速目标定位处理器如图1所示。它从SPAD图像传感器接收图像数据,并进行目标定位操作。SPAD图像传感器采用行滚动曝光,每次产生一行N个像素输出,图像传感器的输出格式为仅包含“1”和“0”的单比特脉冲图像,并可以通过积累复原为灰度图像。处理器包含了一个处理单元(Processing Element,PE)阵列、一个Y特征向量生成器、一个位置计算器、两个先入先出(First Input First Output,FIFO)缓存以及一个存储器。PE阵列包含N个处理单元,可对成像输出进行实时的行并高斯滤波、背景减除法以及X特征向量的生成。PE阵列与Y特征向量生成器和位置计算器共同完成物体的定位操作。PE阵列中的每个PE单元都包含了一个支持高斯滤波和背景减除法的预处理模块和一个支持目标定位的X特征向量生成器。预处理模块还可以被复用完成固定模式噪声(Fix Pattern Noise,FPN)去除。处理器中还包含两个FIFO,其中一个主要用于进行跨时钟域逻辑并输出当前帧数据,另一个主要用来存储和输出过去帧来进行高斯滤波操作。整个处理器以全流水线形式运行。
图1处理器架构图Fig.1 Location processor architecture
图2 是目标定位处理器的所有处理操作的完整过程。输入图像被同时存入当前帧FIFO以及过去帧FIFO中。当前帧FIFO中读取到的最新帧图像以及过去帧FIFO中读取到的最早帧图像会被一同送入预处理模块,进行高斯滤波和背景减除的处理。结果被继续送入定位器中,直至最终输出目标的坐标。
图2 处理器流程Fig.2 Processing flow
1.2 预处理电路
在图1中,每个PE单元都可以从它的两个相邻PE中获取当前和最早的两帧图像数据。同时,在每个PE中都有用来存储当前卷积计算窗口内脉冲数据的寄存器。通常,卷积计算窗口为3×3,因此每个PE单元中包含了9个ALU用于处理高斯滤波以及背景减除法。每个ALU的结构如图3所示。当图像传感器发送相应的数据时,当前帧数据、最早帧数据和卷积核在PE的处理窗口中的每个ALU中通过补码逻辑以及异或门进行计算,然后将滤波窗口与存储器中的数据进行累加,从而得到滤波结果。结果将会被存储回存储器中以供下一帧处理使用。
图3 处理单元示意图(Comp为补码模块)Fig.3 ALU circuits(Comp denotes complement)
1.3 目标定位电路
目标定位模块由特征向量生成器和位置计算器组成。每个PE单元中包含了一个私有的X特征向量生成器,所有PE单元共享一个Y特征向量生成器,它们分别由累加器和加法树实现。每个X特征向量生成器对一列图像进行累加;随后,Y特征向量生成器立即输出当前加载行的前景图像求和结果作为Y的特征向量的一个元素。在每帧结束时,特征生成器可输出一行X和一列Y特征向量。位置计算器将特征向量与阈值的比较,并输出目标的坐标位置。X位置计算器基于二分查找的方案逐位或操作计算X位置,图4(a)以xmax为例介绍了计算方法。它会找到比较结果中最高和最低的非零位置,其索引值记录为xmax和xmin。Y位置计算器以串行的方式处理比较结果,其输出大于阈值的第一个和最后一个元素的位置,记为ymin和ymax,如图4(b)所示。
图4 定位器坐标输出计算示意图Fig.4 Coordinate calculation of the locator
2 图像处理流程
处理器通过执行高斯滤波来对SPAD图像传感器输出的脉冲图像重建为实数灰度图并进行降噪,之后进行背景减除操作。此节首先简要描述帧恢复方法,并基于此方法提出改进的高斯滤波和背景减除法。
2.1 灰度图像重建
SPAD传感器在每个时间步长会输出一帧单比特脉冲图像,传感器接收来自成像目标的反射光,并输出与入射光强成正比的脉冲速率编码序列。在一段时间窗口内,累积脉冲图像即可将脉冲成像结果重建为灰度图像[7]。当使用划窗积累方法[21]进行图像复原时,两个相邻的时间窗口内包含了部分项交叠的相同脉冲图像。相比于非交叠时间窗口,交叠滑窗方式避免了帧率损失。为简化设计,当进行当前时间窗口内图像恢复时,本文通过累加当前传入的脉冲图像帧并减除上一时间窗口内最早的一帧脉冲图像,这样可快速完成滑动窗口内图像累加。
2.2 高斯滤波加速
传统的高斯滤波方法包含大量的乘法运算,增加了电路的复杂性。考虑到以上采用了基于滑动窗口的方式对按固定时间间隔恢复的SPAD输入帧进行滤波处理,而高斯滤波所使用的卷积核的参数为固定值,且卷积本身为一种线性运算。因此在时间上,所积累的这些SPAD输入帧包含了大量相同的计算可以被复用。同时借助SPAD图像单比特的特性,可进一步简化乘累加运算为纯加法运算,从而大幅简化设计。为此,本文提出了一种高斯滤波加速方法。具体来说,传统的高斯滤波公式可以经过如下变换
图5 简化的高斯滤波过程Fig.5 Accelerated Gaussian filtering procedure
2.3 背景减除法
背景减除法是从静止的摄影机拍摄的画面上检测运动物体的一种广泛使用的方法[22]。在实际场景中,首先以没有物体的静态场景为背景,对图像进行积累并应用上文中的高斯滤波方法,得到一张背景图。然后将背景图的负值,也就是其补码,视为SPAD帧累加的最初的部分和,接下来包含运动物体的目标图像都会基于这个初始部分和来进行高斯滤波操作。这样,包含运动物体的所有目标图像在经过了高斯滤波后都可以视为减除了积累的背景图。通过这种方法,本文实现了背景减除算法,同时也避免了在背景减除算法数据路径中的减法器。
2.4 固定噪声减除
在SPAD图像传感器生成的脉冲图像中还存在固定模式噪声[23],这些固定模式噪声随着温度、光密度以及其他环境因素而变化。固定噪声可通过获取固定模式噪声图像并将它从实际成像的图像中减除的方式来减少,其近似公式表示为
2.5 超高速目标定位
由于SPAD图像传感器以超高的帧率进行成像,因此和快速运动的物体相比,其背景可以视为静态的。为了在完成背景减除法后的前景图像中定位目标,本文在水平和垂直方向上对像素值进行积累来获得X和Y方向的累积特征向量。使用式(3)~(5)来计算目标的四个角点坐标。
式中,STx,STy是x和y方向的阈值,由经验确定。arg{min,max}表示对输入数据计算最小值(最大值)的索引值。P(1,…,4)是目标框的四个角点。具体如图6所示,图中所有标注与式(3)~(5)相同。
图6 目标定位方法示意图Fig.6 Object location procedure
整个定位处理流程为
1)使用高斯滤波和背景减除模块对输入图像处理得到前景图像;
2)将前景图像发送到X特征向量生成器得到Sx,然后在每个脉冲图像帧末尾将其与预设阈值进行比较,并将二值结果发送到X位置计算器,得到xmax和xmin。
3)与第2)步的同时,将前景图像发送到Y特征向量生成器,然后将每个生成器输出的Y特征向量传输到Y位置计算器。在每个脉冲图像帧末尾,输出ymax和ymin。
3 实验
基于FPGA开发板本文实现了处理器,并使用了一款128×128 SPAD图像传感器构建了目标定位系统。所使用的SPAD图像传感器的最高帧率为100000帧/s。实验中,背景减除法采用公式(2)中使用α=1方案。
3.1 SPAD图像传感器及FPGA开发板
本文使用的SPAD图像传感器实物图如图7(a)所示,分辨率为128×128,采取滚动曝光的方式,其主时钟为80 MHz。外部通过低频时钟配置图像传感器内部的参数寄存器来控制其曝光时间、帧率等参数,帧率最高可以达到100000帧/s。SPAD图像传感器由帧同步(vsync)信号与列同步(hsync)信号控制,逐行输出像素曝光结果:帧同步信号脉冲指示一帧图像开始输出,列同步信号指示一列像素开始输出。另外,图像传感器进行了并串转换,将一列共128个像素输出分4周期读出。图像传感器工作于100000帧/s时的输出波形如图8(a)所示。在本文的实际处理中,首先将并串转换后的一列像素输出恢复为完整的列输出形式后再送入处理器。
图7 实验硬件环境照片Fig.7 Photo of experimental hardware environment
本文基于Xilinx VCU118 FPGA开发板搭建了功能验证平台,如图7(b)所示。SPAD图像传感器与FPGA开发板通过FMC接口相连,FPGA开发板用于处理器实现,并将定位后的坐标输出给上位机。为了排除由于功能验证平台中FPGA的制程优势造成的假性性能优势,在Kintex-7 FPGA开发板上对处理器性能进行了评估,如图7(c)所示。在Kintex-7上综合频率可以达到220 MHz,不考虑SPAD图像传感器帧率限制,即假设图像传感器的成像速度可以匹配处理速度,则图像处理帧率可以达到1605000帧/s,在该速率下输出波形如图8(b)所示。
图8 实验环境波形图Fig.8 Waveform of experiments
3.2 高斯滤波和固定模式噪声减除
测试场景如图9(a)所示,在静态背景前放置一个转速为2200 r/min的风扇。成像测试结果如图9所示,可见高斯滤波和固定噪声减除明显提升了图像质量。为了评估滤波前后图像的质量改善,本文采用广泛使用的基于BRISQUE的无参考指标进行了定量比较[24],结果见表1。显而易见,滤波和固定模式噪声减除后的图像的得分低于未滤波的图像,表明其图像质量更好。同时在图中放大了一些局部的图像区域来说明其滤波的图像增强效果。
表1 降噪结果(分数越低,效果越好)Table1 Denoise comparison(the less the score,the better)
图9 高斯滤波和固定噪声减除结果(左:滤波前,右:滤波后)Fig.9 Gaussian filtering result(left:before processing,right:processed)
3.3 超高速目标定位
本文利用可以发射软子弹的玩具枪来构建高速场景。在100000帧/s的成像帧率下,SPAD图像传感器捕捉到的包含软子弹的图像共有350帧。累积的灰度图像和定位结果如图10所示。值得注意的是,由于在目标定位模式下,背景减除的结果并不会传回计算机,因此在进行图像展示时,将SPAD图像传感器的直接成像结果进行累积,在得到的灰度图上面绘制了目标的边界框,而不是在处理器实际处理的滤波后背景减除的图像上。在图10中可以看出,累积得到的灰度图像在快速飞行的软子弹后面有一个明显的拖尾阴影,这种现象表明软子弹的运动速度相当高。尽管如此,本文提出的定位处理器仍然在所有这些连续的图像帧中捕捉到了运动物体的轨迹,证明了这种方法的有效性。
图10 目标定位结果(左:处理前。右:处理后)Fig.10 Object location result(left:before processing,right:processed)
3.4 与其他工作对比
本文选择了几项超高速目标定位的相关研究进行比较,比较结果如表2所示。本文在Kintex-7 FPGA芯片上实现了定位处理器,在128×128分辨率下处理器的处理帧率峰值可以达到1605000帧/s。由于本文所使用的SPAD图像传感器输出图像速率的限制,目标定位系统的速度为100000帧/s。HANCHINAMANI R等在图像的背景减除法前后添加了高斯滤波并做了硬件实现,但他们没有简化乘法操作,从而导致了更多的资源占用[17]。LI J等采用了梯度直方图和SVM来定位目标,但这种方式付出了额外的硬件消耗和时间,难以匹配SPAD图像传感器的高帧率[18]。HE W等将高斯滤波器和统一的纹理动态压缩特征相结合,但是它们的并行度较低[19]。因此虽然它们的硬件消耗并不高,但是其吞吐率也相对较低。XU J等提出了一种简单的脉冲积累方法来跟踪目标,可以实现相对较快的速度和较低的资源,但这种方法需要纯黑色背景,同时需要一个确定的目标大小,还非常容易受到噪声的干扰,是一个非常严苛的实验环境[20]。
除了本文自身的工作外,为了验证本文所提出的优化的高斯滤波电路其资源占用与延时减少,本文评估了采用乘法操作的高斯滤波原始电路的处理器的表现性能,如表2 Original algorithm列所示。结果表明,本文采取了优化方法的电路,其综合频率可以比原始处理器高31.8%,在硬件资源占用上比原处理器减少了72.4%。与这些工作相比,本文在处理的算法复杂度和硬件资源占用之间取得了有利的折衷,尤其是本文在我们的应用场景下实现了最低的执行时间,这表明它在与其他基于脉冲的成像系统的比较中具有一定的优势。
4 结论
提出了一种用于SPAD图像传感器的专用目标定位器。该处理器包含了PE阵列、Y特征向量生成器和位置计算器,可以完成降噪和目标定位操作。提出了一个免乘法的高斯滤波和免减法的背景减除模块的优化设计,显著提高了速度,节省了硬件资源。处理器的目标定位电路可以复用到降噪和背景减除当中,进一步减少了硬件资源。本文在FPGA开发板上实现了该处理器,在进行128×128的目标定位处理时帧率可以达到1605000帧/秒,在处理来自一款SPAD图像传感器的图像时其速度可以匹配其最高帧率100000帧/秒。此外,该处理器对其输入的数据格式没有特殊限制,可以扩展支持其他脉冲型图像传感器,搭建对应的传感处理系统。