APP下载

基于事件相机的雨滴检测算法

2023-09-27杨君宇龙镇南

计算机应用 2023年9期
关键词:雨滴条纹正确率

杨君宇,董 岩,龙镇南,杨 新,韩 斌*

(1.华中科技大学 机械科学与工程学院,武汉 430074;2.广东省智能机器人研究院,广东 东莞 523000)

0 引言

在执行定位、跟踪、目标检测等视觉任务时,多采用视觉传感器获取环境信息。然而视觉图像易受到极端环境影响,如雨天中被雨滴覆盖的图像会出现模糊、对比度下降、场景变形泛白、背景物体被雨滴完全遮挡等问题[1-3]。近些年来,随着人工智能[4-5]、无人驾驶[6]等技术的快速发展,雨滴检测与图像除雨逐渐成为计算机视觉领域的重要研究课题。

传统基于帧的相机(Frame-based Camera)受制于采样频率,无法获取雨滴连续的下落过程,这使基于图像或视频流的除雨算法无法有效利用雨滴下落的时间信息,难以取得较好的除雨效果。

事件相机(Event Camera)是一种受生物启发的新型传感器[7]。与以恒定频率拍摄图像的传统相机不同,事件相机每个像素点独立地感受光强变化,并在某一像素的亮度变化超过阈值时输出一个事件(Event),这种特性使它非常适用于捕获和分析高速运动的目标,并能够与传统相机融合实现目标检测[8]和跟踪[9-10]等任务。使用事件相机可高效获取雨滴运动造成的像素亮度变化,且完整获取雨滴下落过程中的连续图像,更好地进行雨滴区域检测(如图1)。

图1 基于事件相机的雨滴检测Fig.1 Event camera based rain detection

本文采用事件相机进行雨滴检测工作,主要工作如下:

1)通过分析雨滴的运动学特性与光学特性,从理论上推导了事件相机视野下的雨滴事件生成模型;

2)基于雨滴事件生成模型,提出一种基于雨滴事件时空关联性的雨滴检测算法,能计算出每个事件是雨滴的概率;

3)提出基于检测正确率与误检率的雨滴事件检测评价标准。在不同场景与运动模式下进行实验,验证了本文提出的雨滴检测算法的有效性;

4)构建并发布一个事件相机下雨数据集,并人工对雨滴的位置进行标注[11],以促进事件相机相关领域的研究。

1 相关工作

1.1 视频除雨算法

Garg 等[1-2]通过分析雨滴的运动特征和光学特征,提出第一个针对视频的雨滴识别算法,但是该方法在大雨环境下不能稳定清除雨条纹,且无法区分雨滴和摄像机附近快速运动的物体;Zhang 等[3]在Garg 等[1-2]工作的基础上,引入K均值聚类算法,在大雨环境下也能取得较好的检测效果,检测准确率仍然很高,不足之处在于计算过程中对时间求平均值,容易使背景图像变得模糊。为了解决这一问题,Park等[12]采用卡尔曼滤波,使图像质量得到增强。Bekkerman等[13]引入斑点跟踪算法,通过斑点检测寻找雨滴下落过程中形成的雨条纹,并通过斑点的形状区分雨滴与非雨滴。这一方法在降雨不大,没有形成雨滴重叠时,有良好的识别效果。Bossu 等[14]使用基于高斯混合模型(Gaussian Mixture Model,GMM)的平滑分段先验算法,使背景的运动和相机本身的运动均可以得到处理。Barnum 等[15-16]从雨条纹出现的频率和时空统计规律出发,得到了一个基于模糊高斯模型(Blurred Gaussian Model,BGM)的雨条纹识别算法,但该算法只能处理降雨不大的场景。

近年来,机器学习、深度学习开始被广泛地应用于雨滴识别与去除工作。Kim 等[17]通过支持向量机(Support Vector Machine,SVM)评估每个像素点是否属于雨条纹,与其他方法相比,这一处理方法需要提供额外的降雨视频作为训练集以达到良好的识别效果。Chen 等[18]使用超像素对视频进行分割,然后以超像素为基本单元,通过卷积神经网络(Convolutional Neural Network,CNN)实现雨条纹的去除。与传统方法相比,这一工作在处理大降雨量与不透明障碍物场景时,准确率大幅提升。Liu 等[19]则采用了循环神经网络(Recurrent Neural Network,RNN)作为处理工具,对视频中的雨条纹进行分类与识别。

1.2 图像除雨算法

Xu 等[20-21]和Hou 等[22]基于雨条纹的光学性质,首先制作一张无雨的基准图片,然后以这张图片为标准,通过导向滤波来识别出与雨滴、雪花有关的像素点;Zheng 等[23]将有雨图像分解为高频和低频部分,利用雨滴的动力学特征设计多引导滤波器,从而实现图像除雨;Fu 等[24]通过形态成分分析(Morphological Component Analysis,MCA)将除雨问题转化为图像分解问题,通过字典学习和稀疏编码,将分解出的含雨图像分解为雨条纹和背景两部分,叠加背景部分与上一步骤分解出的不含雨图像即可得到除雨后的图像。近年来,基于先验信息的图像除雨算法[25-27]开始得到广泛关注,先用先验信息给出一个原图像与目标图像之间的约束条件,再通过优化算法求解得到除雨后的目标图像。

Eigen 等[28]率先使用CNN 去除图像中附着在窗户和镜头上的雨滴,但这一方法并不适用于空中的雨条纹。Fu等[29]设计了一种基于RNN 的网络结构DerainNet,通过学习大量含雨图像和相对应的不含雨图像之间的关系,最后应用于目标降雨图像,实现除雨并输出除雨后的图像。Yang等[30]在构建降雨的物理模型时,考虑大气层的漫反射与透射,得到一个全新的物理模型,并采用RNN 作为处理工具,通过多次循环达到良好的除雨效果,并在此基础上进一步提出了增强版本[31]。丁宇阳等[32]以光场图像作为除雨对象,利用光场图像不同于普通2D 图像,能记录三维场景的丰富结构信息等特点,提出一种基于长短期记忆(Long Short-Term Memory,LSTM)网络的光场图像去雨算法。

2 基于事件相机的雨滴检测算法

2.1 雨滴的物理特征

雨滴接近地表时的运动速度由雨滴的大小决定[2]。不考虑风的影响,理想情况下最终速度竖直向下,大小可近似表示为:

其中:v0为雨滴下落的最终速度大小;ρ为雨滴密度;g为重力加速度;d为雨滴直径;μ为空气粘滞系数。

雨滴水平方向上的速度u与竖直方向上的速度v的比值以及雨条纹的倾斜角θ满足以下关系[15]:

其中:f为相机焦距;z为雨滴与相机镜头间的距离。

将t时刻图像中没有雨滴覆盖的区域称为背景区域(记作ℜbg),有雨滴覆盖的区域称为前景区域(记作ℜfg),对应的图像灰度值(intensity)分别记为Ib(x,t),Ir(x,t),真实物理世界的辐射值(radiance)记为Lb(x,t),Lr(x,t)。为保证简洁性,在不产生歧义的情况下,后文省略(x,t)。此时有[33]:

其中:F、Δt分别为相机光圈、曝光时间;zm为距离阈值,即当雨滴与镜头距离为zm时恰好覆盖一个像素。完整图像灰度值记为I(x,t),为前景区域与背景区域的叠加,即:

φ(x,t)表示前景区域的示性函数:

定义雨滴造成的灰度值增量Irb(x,t):

2.2 雨滴事件生成模型

与传统相机的工作模式不同,事件相机当且仅当某个像素点的亮度变化累计达到一定阈值时,会输出一个数据,即一个“事件”。t时刻,图像上位于x处的像素点的亮度变化ΔI的绝对值达到阈值C时,相机会记录下一个事件e≜(x,t,p),此时:

其中,p∈{ +1,-1} 表示事件的极性。对于极短的时间Δt,有:

假设极短时间内辐照恒定,雨滴在静止相机下的像素速度为vr,相机运动时相机像素运动速度为vc,可以得出:

可见,降雨场景下的事件由雨滴运动产生的亮度变化、相机运动时雨滴覆盖区域内产生的亮度变化、相机运动时背景区域内产生的亮度变化共同生成。当场景中没有雨滴时,式(17)退化为:

式(17)即经典事件相机事件生成模型[33]。由此可见,本文提出的雨滴事件生成模型符合最基本的事件生成模型,且为事件生成模型的扩展。

2.3 雨滴事件概率计算方法

将事件相机一段时间内拍摄的事件数据流记为ξ=,定义事件ek的时空窗口(Spatial-Temporal Window)为(Sx,Sy,T)[34],包含该事件发生前T时间内坐标与该事件像素坐标x方向上距离小于Sx,y方向上距离小于Sy的全部事件的集合,即:

其中,{e1,e2,…,eM}按时间顺序由前到后排列,(Sx,Sy,T)为时空窗口大小。

1)雨滴事件基本假设。综合前文对雨滴运动特征与光学特征的讨论,给出以下基本假设。

假设1 图像中,雨滴近似匀速直线运动,且竖直方向上速度分量朝向图像下方,水平方向位移与竖直方向位移比值满足式(3)。

假设2 雨滴是连续的,一个雨滴事件附近一定尺寸时空窗口内发生的下一个事件有极大的概率仍为雨滴造成。

2)雨滴事件关联性。对于事件相机中先后发生的两个事件ei、ej,用Corr(ei,ej)表示两个事件由同一个雨滴产生的关联性,取决于时空关联性、极性关联性和速度关联性。

时空关联性记为γ1(ei,ej)。根据假设1,若事件位于事件ei和ej所确定的时空窗口STWej(Sx,Sy,T)中,则认为这两个事件具有时空关联性,即:

极性关联性记为γ2(ei,ej)。由雨滴的光学特征与式(9),同一个雨滴形成的两个雨滴事件的极性一致,即:

3)雨滴事件概率计算。本文通过一个新事件和上一个位于新事件时空口STWek(2Sx,2Sy,2T)内的前一事件,判断新事件是雨滴造成的概率。若两个事件符合雨滴事件关联性,则新事件有一定概率是雨滴;同时,若前一事件是雨滴的概率越大,则新事件也有较大的概率是雨滴造成。为此,雨滴事件概率由雨滴事件关联性和前一事件的雨滴概率共同决定,即事件ek是雨滴事件概率P(ek)为:

其中,α为平衡前一时刻事件雨滴概率与两事件雨滴事件关联性的权重,也可以视为雨滴事件概率在时间上的传递,因此称α为雨滴概率传递系数。雨滴概率传递系数可以充分利用事件相机拍摄雨滴在时间上是连续的这一特性,有效提升了雨滴检测的准确率。

本文算法计算出了每个像素发生的事件是雨滴的概率,充分利用了事件相机的数据异步、不依赖图像的特性。完整的雨滴事件检测算法如算法1 所示。

算法1 基于事件相机的雨滴检测算法。

输入 事件流数据ξ,α,参数Sx,Sy,T;

3 实验与结果分析

3.1 事件相机降雨数据集

本文使用Prophesee Gen4[35]事件相机进行数据采集,芯片分辨率为1 280×720,镜头焦距为5 mm,视角(Field of View,FoV)为82°,相机参数设置见表1。

表1 相机参数设置Tab.1 Camera parameter setting

在不同场景与相机运动模式下,采用metavision player 录制多段降雨数据,并将数据拆分成多段持续时间30 ms 的数据序列。从每个场景和相机运动模式随机选取100 个序列,构建事件相机降雨数据集[11]。场景与运动模式具体如下。

1)static100:包含100 个相机静止且场景中无运动物体时的降雨数据序列。相机固定在三脚架上,拍摄无运动物体的场景。除噪声外,事件相机数据全部由雨滴下落造成。

2)dynamic100:共包含100 个相机静止且场景中有运动物体的降雨数据序列。使用固定在三脚架的相机拍摄有行人和车辆来往的道路,此时相机将同时记录下由雨滴运动和背景物体运动形成的事件,如行人、车辆、树叶等。

3)moving100:共包含100 个相机运动时的降雨数据序列。手持相机随机晃动,此时相机与场景发生相对运动状态,产生大量的事件。

3 种场景与运动模式下获取的事件如图2(a)所示。相机静止场景(static100 与dynamic100)每个序列平均事件数(ev/seq)较少,且所有序列之间,事件数的标准差(var)也较小;而相机运动时(moving100)产生的事件显著增加。完整事件相机降雨数据集基本统计情况见表2。

表2 事件相机降雨数据集的基本统计信息Tab.2 Basic statistics of rainfall datasets based on event camera

图2 降雨数据集场景与标注Fig.2 Scenes and labeling of rainfall datasets

为了得到雨滴事件的真实位置,人工对雨滴进行标注。本文通过绘制每个数据序列的时间表面图(Time-Surface Graph)[36],将图中按时间发生颜色渐变的线条认为是雨条纹,采用最小外接矩形框标注出雨滴条纹的位置并记录矩形框的坐标,如图2(b)所示。

3.2 雨滴检测评价方法与实验结果

由于针对传统目标检测的评价指标无法直接作用于事件相机数据,本文对传统图像目标检测的评价指标进行了范式转化。当雨滴概率大于某一阈值P0时,将该事件对应的像素标记为雨滴;反之标记为非雨滴。参考文献[37],采用检测正确率(True Positive Rate,TPR)和误检率(False Positive Rate,FPR)评价雨滴检测的有效性,用RTP、RFP表示。

正确率为被检测出的雨条纹数与标记出的真实雨条纹数的比值:

其中:N0表示标注出雨条纹的总数量,即标注出的矩形框数目;N1表示所有记录下的矩形框中,被检测为雨条纹的矩形框的数量,若雨滴标注框内检测出的雨滴事件数大于标注的矩形框高度的1/10,则认为该矩形框代表的雨条纹被检出。

误检率为误检雨滴事件数与所有标记为雨滴事件数的比值,认为误检雨滴事件为所有不在雨滴标注矩形框内的事件:

其中,n1为准确检出雨滴事件的数量,n2为误检雨滴事件的数量。具体计算方式如下:

其中:card{⋅}表示集合中元素的数目;GT表示所有被标注出的矩形框内部的事件的集合。

由于事件相机数据量较大,难以实现逐像素人工标注,且凭肉眼无法严格准确区分雨滴造成的事件与背景物体造成的事件,所以采用雨滴最小矩形框进行标注是一种平衡了工作量与准确性的方法,这种标注方法也直接导致了评价时,正确率采用雨滴条纹数量而误检率采用像素数量进行计算。两个指标虽然存在不一致,但仍不失为一种有效的雨滴检测评价方法。

3.3 实验结果

实验中将雨滴概率传递系数α设置为0.8,时空窗口设置为(4 px,10 px,2 000 µs)。在不同的概率阈值P0下,正确率和误检率变化趋势如图3。

图3 TPR和FPR在不同概率阈值下的变化曲线Fig.3 Changing curves of TPR and FPR under different possibility thresholds

可以看出,当概率阈值P0从0.1 到1 逐渐增加时,检测的正确率不断下降,同时误检率也下降。当概率阈值P0设置为0.6 时,三种场景的检测正确率可达95%以上;static100与dynamic100 上的误检率低于2%与5%;而moving100 由于存在大量背景数据,误检率接近20%。当概率阈值P0超过0.6 时,检测正确率显著下降而误检率没有明显改善,因此概率阈值P0设置为0.6 比较合适。3 类场景的检测结果如图4 所示,可以看出本文算法有效检出了雨滴造成的事件。

图4 三类场景下的雨滴检测结果Fig.4 Rain detection results in three scenes

3.4 时空窗口对检测的影响

本文的雨滴检测算法需要选取每个事件的时空窗口,因此时空窗口的大小影响了雨滴检测的结果。本节探究时空窗口对检测结果的影响,实验中设置α=0.8,P0=0.6 不变,改变时空窗口(Sx,Sy,T)的大小。根据式(3),决定时空窗口相关参数时有Sx:Sy=0.4,因此仅探究Sx与T的影响。3 类场景下,不同空间窗口参数Sx与时间窗口参数T对应的正确率、误检率如表3 所示。

当空间窗口参数Sx取4 px,时间窗口T取2 000 µs 时,本文算法在static100 和dynamic100 上达到了最高的正确率和较低误检率。空间窗口和时间窗口参数减小时,虽然在一定程度上降低了误检率,但正确率下降严重;反之,空间窗口和时间窗口参数增加时,正确率的提升有限但误检率大幅增加;同时可以看出moving100 的正确率和误检率易受时空窗口大小的影响,需要根据实际的任务需求选取合适的参数。

3.5 算法的局限性

从3.3 和3.4 节可以看出,本文算法在相机静止时可以取得不错的检测效果,而相机运动时正确率有所降低。这是因为相机运动时产生大量的数据导致了雨滴事件关联性的降低与雨滴概率传递的失败,同时不规则的运动造成部分背景事件不可避免地符合了雨滴事件的关联性假设,因此也造成误检率显著上升。本文团队将进一步改善算法,提升在不同相机运动模式下雨滴检测效果。

4 结语

本文分析了雨滴的动力学与光学特征,建立了雨滴的事件生成模型,该模型为经典事件生成模型的扩展。提出一种基于事件关联性的雨滴检测算法与评价事件数据雨滴检测准确率的评价指标,在真实数据上验证了算法在不同相机运动方式和静态动态场景下的有效性,并对相关参数的影响进行了分析。由于事件相机的输出无需等待传统相机的曝光,算法能够在获取传统相机图像前精准预测雨滴在图像中的覆盖区域,从而简化现有图像除雨算法的计算量,提高图像除雨速度。作者将进一步探究事件相机与传统相机融合的除雨方法,旨在实现移动机器人平台的实时除雨。

猜你喜欢

雨滴条纹正确率
小雨滴
门诊分诊服务态度与正确率对护患关系的影响
可爱的小雨滴
谁是穷横条纹衣服的人
别急!丢了条纹的斑马(上)
别急!丢了条纹的斑马(下)
小雨滴
生意
品管圈活动在提高介入手术安全核查正确率中的应用
生意