APP下载

结合单高斯与光流法的无人机运动目标检测①

2019-04-10范长军文凌艳毛泉涌祝中科

计算机系统应用 2019年2期
关键词:光流高斯聚类

范长军,文凌艳,毛泉涌,祝中科

(中国电子科技集团公司第五十二研究所,杭州 310012)

随着无人机技术的发展和广泛应用,通过无人机航拍视频进行运动目标检测与跟踪,已成为计算机视觉、图像处理以及模式识别领域备受关注的研究热点[1].无人机场景下运动目标检测与其他普通视频检测任务一样面临着遮挡、阴影、易受环境干扰等难题,但是又具有独有的特点,面临着特殊的挑战.比如,无人机所载重量有限,需要在受限的计算资源条件下,实现近乎实时的检测效果.此外,在无人机视频监控场景中,不仅待检测目标是运动的,摄像机也是运动的,容易造成前景与背景的混淆.并且,由于摄像机的运动、天气的变化等因素,光照条件极易发生改变(甚至突变),这进一步增加了目标检测的难度.

在无人机视频监控场景中,当前用于动态背景的运动目标检测方法主要有两类,分别为背景运动补偿和光流法[2].

背景运动补偿的目的是将摄像机运动导致的背景运动去除.利用相邻帧图像中背景对应的特征点匹配来估计背景运动模型的参数[3],并根据计算得到的全局运动参数计算出当前帧中每个像素的移动速度,预测该像素在下一帧图像中的位置,将目标的检测转化到静止背景条件下.文献[4-7]通过建模从前一帧到当前帧的背景模型,来适应由相机运动造成的背景动态变化,分别取得了不错的效果,但是它们都没有考虑所需的计算资源,很难在无人机平台上达到实时的效果.在此基础上,文献[8,9]提出了改进的方法,减少了检测时间,但仍无法满足移动计算平台的实时性要求.文献[10]进一步通过利用单高斯模型对图像块进行背景建模的方法来降低时间开销,有效地提高了运动目标检测的效率,但是对光照变化较为敏感,当光照条件发生变化时,检测效果大打折扣.

光流法通过估计并分割光流场,实现运动目标检测.文献[11,12]通过稠密光流场的方法来检测运动相机所拍视频中的运动目标,但由于需要计算的光流场的像素点太多,性能受到很大影响.文献[13]采用了一种结合运动边界和稀疏光流的运动目标检测方法,达到了实时的效果,但是没有充分考虑相机运动的情况.

针对以上问题,在文献[10]改进的单高斯模型的基础上,本文提出了一种结合单高斯与光流法的无人机视频运动目标检测方法.该方法首先通过改进的单高斯模型来进行背景建模,获得前景图像,然后将此前景图像作为掩模,提取稀疏特征点,并进行光流检测;最后对检测跟踪到的特征点进行层次聚类,并将运动目标框出.

1 总体流程框架

改进的单高斯模型能有效应对运动相机场景下背景模型被前景像素干扰的问题,并具有实时的建模效率,但经过实验发现,该方法对光照变化比较敏感.相对地,光流法对光照变化有一定的鲁棒性,但由于机载相机是运动的,仅使用光流轨迹聚类进行目标检测时,会出现大量背景像素被误检为前景目标的情况,并且航拍视频往往对比度不高,检测到的特征点在前景目标上分布较少.本文考虑将改进的单高斯模型与光流法相结合,使其在一定程度上实现优势互补.

总体的流程框架如图1所示.针对每一帧视频图像,首先通过空间高斯滤波器和均值滤波器进行预处理;随后,将图像划分为若干块,对每块图像通过改进的单高斯模型来进行背景建模,以降低计算开销;接着,将计算得到的前景图像作为掩模,执行稀疏特征点的提取与光流检测;最后,对检测跟踪到的特征点进行层次聚类,勾画出运动目标的外边框.

图1 总体流程框架

2 改进的单高斯模型

2.1 单高斯模型的生命值

单高斯(Single Gaussion Model,SGM)背景模型基于一个基本假设,在一段时间内,图像序列中的背景像素值应服从高斯概率分布.为了判断t时刻对应图像中某个点是否为前景点,需要基于前t-1帧图像计算高斯背景模型的各个参数,包括均值和方差.静止相机的目标检测往往具有固定的学习率,也即将一个像素的第一个观测值作为无穷更新模型的均值,这对于需要运动补偿的运动相机而言是不合理的.为此,引入生命值l来逐帧更新SGM参数,以应对随着时间的推移背景像素产生的变化.

为了减少计算负载以达到实时效果,将每帧图像划分为了若干N×N大小的块,以块为单位进行SGM背景建模.定义第i块图像在t时刻的像素集合为Sit,则其包含像素的数目为将其中第j个像素在t时刻的强度表示为Itj,此块对应的均值表示为µti,方差为σti,生命值为lti,则对应SGM的参数更新公式如下:

2.2 单高斯模型的选择

采用上述单高斯模型对背景建模容易造成背景模型被前景像素污染的问题,当有大物体缓缓略过视场时,现象较为明显.由式(1)~(5)可知,背景建模从l=1时开始,在初始阶段,学习率较大,如第二帧的学习率为0.5,随后每一帧的学习率逐渐下降,初始阶段学习率的快速变化加剧了上述污染问题的严重性.为此,采用了两个单高斯模型来建模每帧图像,一个是当前背景模型(Current SGM,简称CSGM),一个是备选背景模型(Optional SGM,简称OSGM),然后按照参数更新的频率确定每帧图像真实的当前背景模型.

将一帧图像第i块在t时刻的CSGM和OSGM模型的参数,包括均值、方差和生命值,分别表示为对应的观测均值表示为Uit,则如果满足式(6),则更新CSGM的各项参数,如果满足式(7),则更新OSGM的各项参数,并且当满足式(8),即OSGM的更新频率大于CSGM的更新频率时,则将OSGM模型作为新的CSGM,并重新初始化OSGM.

上述方法能够从两个SGM中自动选择合适的背景模型,即便其中几帧图像的前景像素对背景模型造成了影响,随着时间的推移,更贴近真实背景的SGM模型更新次数变多,又会变成当前背景模型,有效避免了前景的不利影响.

2.3 运动补偿

对于运动相机而言,t-1时刻的SGM无法直接用于t时刻的目标检测,需要进行运动补偿.由于每个SGM对应于一个图像块,直接运动插值的方法在此处不适用,为此,采用融合t-1时刻SGM模型的方法来补偿t时刻的模型.

将每帧图像划分成大小为2 4×18的多个网格,针对每个网格中的角点,先通过KLT[14]算法进行t-1时刻到t时刻的跟踪,然后根据跟踪的结果采用RANSAC[15]算法计算得到单应矩阵Ht:t-1,通过单应矩阵就可以计算得到t和t-1时刻两帧图像之间各点的对应关系.

假设t时刻第i块图像的中心点坐标为Cit,则可通过Ht:t-1映射得到其在t-1时刻的位置坐标以为中心的虚拟块与t-1时刻的多个真实块相重叠,通过融合此t-1时刻各块的SGM的各项参数,可得到t-1时刻的各参数以实现运动补偿.

重叠块的集合用Gti表示,融合所用到的权重用ωk(k∈Gti)表示,则模型融合的相关公式如下:

其中,权重ωk满足一下条件:

当得到了t时刻的SGM模型后,通过计算某个像素点属于背景模型的概率,即可分辨此像素点是前景还是背景.

3 稀疏光流分析

上述改进的单高斯模型检测运动目标具有较好的效果,但容易受到光照变化的影响,当前后帧图像的光照条件发生变化时,容易导致检测出“假前景”.为此在检测的前景基础上,通过光流法做进一步分析,排除因光照变化造成的前景误判.为了降低光流运算量,此处采用稀疏光流分析法,它是基于特征点的跟踪方法,在提取特征点时,采用上述检测的前景图像作为掩模.

为了进一步节省计算时间,采用毫秒级别的FAST特征提取方法.FAST(Features from Accelerated Segment Test)角点探测算法[15]于2006年被提出,该算法检测的角点满足以下特点: 在像素点的周围邻域内有足够多的像素点与该点处于不同的灰度区域.领域通常选择以角点为中心、半径为3的离散化圆形区域,如图2所示.一个候选点是否为角点需通过如下角点响应函数来判断,即

式中,o为中心像素点(即候选角点),p为以o为中心的圆周上的任意一点,I(o)为中心像素点的图像灰度值,I(p)为圆周上点的图像灰度值,ξ为给定的阈值,提取的角点数目与 ξ 负相关,ξ越小,角点数目越多.根据上述角点响应函数,统计圆周上满足式(13)的像素点个数N.若N大于给定的阈值,就可以确定该候选点为角点.通常阈值取12,此阈值可以很快排除伪角点.

图2 角点探测模板示意图

在检测到特征点以后就可以运用LK光流法匹配两帧图像之间的特征点得到光流图.LK光流算法是由Lucas和Kanade于1981年提出的,由于算法易于应用在输入图像中的一组点上,成为了求稀疏光流的一种重要方法.LK光流算法能够求解出两帧图像之间精确的稀疏光流,最初运用于图像配准领域并逐渐应用于目标跟踪.

由于LK光流法的跟踪过程需要一个大的窗口来捕捉大的运动,而大窗口往往会违背运动连贯的假设,导致检测效果不太理想.金字塔LK光流法最初在较大的空间尺度上进行跟踪,然后通过对图像金字塔自顶向下直到图像像素的处理来修正初始运动速度的假定,有效解决了这个问题.也即,在图像金字塔的最高层计算光流,用得到的运动估计结果作为下一层金字塔的起始点,重复这个过程直到金字塔最底层.

稀疏光流分析法的总体算法流程如下:

1)读入一帧图像,对其进行灰度化操作,若当前处理的是第一帧图像,只初始化相应参数,否则转步骤2);

2)采用FAST算法计算得到前一帧图像的特征点集合PreFeaturePtSet,获取原跟踪点的运动轨迹在前一帧的位置集合PreTrackPtSet;

3)计算PreFeaturePtSet集合中的特征点与PreTrackPtSet集合中的各跟踪点之间是否存在欧式距离小于阈值的情况,如果不存在,则认为该特征点是新出现的需要跟踪的点,将其加入PreTrackPtSet集合中;

4)对PreTrackPtSet中的跟踪点在前一帧和当前帧图像间进行LK金字塔光流检测,得到在当前帧的位置集合CurTrackPtSet;

5)根据检测的结果依次处理各类跟踪点.对已存在运动轨迹的原跟踪点,如果检测到光流,则更新跟踪点在当前帧的位置为CurTrackPtSet中的对应点,并更新其last_update_index为当前帧序号;如果没有检测到光流,则继承上一帧的跟踪结果,不更新其last_update_index.对检测到光流的新跟踪点,为其建立运动轨迹对应的数据结构,并按上述方法更新;

6)判断每个跟踪点的last_update_index与当前帧序号之间的差值大小,若大于阈值,意味着该点对应的运动轨迹长时间没有被更新,则删除;

7)统计各跟踪点运动轨迹对应在每帧图像的位置变动,若随着时间推移,该跟踪点在每帧图像间的位置变动不大,则删除.继续执行步骤1).

4 层次聚类

检测到的每一帧图像的特征点是稀疏的局部运动像素点,这些点可能属于一个或多个运动目标.为了有效检测并区分出不同的运动目标,需要对其做进一步聚类处理.聚类的算法种类繁多,常用的有k-means[16,17]等.但k-means方法需要人为设定k值和初始化聚类中心点,不适用于多运动目标检测的场景.为了避免这些问题,此处选择一种比较实用的聚类算法—层次聚类.

层次聚类算法有凝聚和分裂两种方式,取决于层次分解是自底向上(合并)还是以自顶向下(分裂)的.凝聚的层次聚类方法使用自底向上的策略,开始时每个对象都是一个独立的类(N个),然后逐次找出两个距离最近的类进行合并,所以最多进行N次迭代就将所有对象合并到一起了.分裂的层次聚类方法使用自顶向下的策略,开始时所有对象都在同一个类中,然后不断的划分成多个更小的类,直到最小的类都足够凝聚或者只包含一个对象.

本文采用凝聚的层次聚类算法,将属于同一运动目标的稀疏特征点聚成一类,并在对应帧图像上画出运动目标的外边框.凝聚的层次聚类算法原理:

输入: 给定要聚类的N个特征点以及N×N的距离矩阵(或者是相似性矩阵)

步骤:

1)将每个特征点归为一类,共得到N类,每类仅包含一个特征点,类与类之间的距离就是它们所包含的特征点之间的距离;

2)找到距离最近的两个类并合并成一类,于是类别个数减一;

3)重新计算合并的新类与所有旧类之间的距离;

4)重复步骤2)和步骤3),直到两类间的距离不小于距离阈值;

根据步骤3)的不同,可将层次聚类方法分为: 单连接算法、全连接算法以及平均连接算法.其中单连接采用的是最小距离,全连接采用的是最大距离,平均连接采用的是平均距离,各距离公式的定义如下,其中|p-p'|是两个特征点p和p'之间的距离.

5 实验结果与分析

为验证本文提出算法的有效性,主要采用了两个无人机视频数据集,分别是VIVID-PETS 2005[18]和Stanford Drone Dataset[19].前者由运动的无人机采集得到,相机的运动速度较快,所以背景也存在快速地运动,并包含有光线变化的样本集;后者是无人机在校园高空拍摄所得,无人机处于盘旋的状态,背景的运动较小,目标也很小.下述实验的运行平台是处理器为Intel Core i7-6700 3.4 GHz,内存为DDR4 16 G的PC机.

图3所示为金字塔LK光流法、改进的单高斯方法以及本文方法在VIVID-PETS 2005的egtest05数据集上的对比效果.从数据集第257帧原图中可以看到,无人机在运动过程中,拍摄到地面上有两辆汽车正在行驶(其中一辆被树遮挡,仅漏出一小块表面).由于树的遮挡、背景的运动等原因,在不使用掩模的情况下,光流法检测到的前景有大量的误检,如图3(b)所示;通过改进的高斯方法对运动背景进行建模,并分离出前景目标图像,得到图3(c)所示结果,可看到由于光照的变化,该方法也检测出了一些“假前景”;当将上述两种方法结合起来,即将后者分离得到的前景图像作为前者特征提取的掩模后,较好的检测出了两个运动目标,并排除了大量的虚警,如图3(d)所示.

为了考察光照变化以及大目标缓慢运动对检测效果的影响,采用了光线剧烈变化的LIMU[20]室内部分数据集.在此数据集上,先通过改进的单高斯模型进行前景的提取(如图4(c)~(d)),然后通过本文提出的方法检测图中的运动目标(如图4(e)~(f)),并对两种方法进行比较.

图3 三种方法运动目标检测效果对比

图4 光线变化对目标检测效果的影响

从图4中可以看到,从数据集的第59帧到第60帧,房间的光线变暗了,由此导致了直接采用改进的单高斯模型提取的前景图像效果变差,出现了大量的误检测点,如图4(d)所示.但是采用本文提出的方法,仍然得到了较为理想的检测结果,如图4(f)所示.

表1中是在VIVID-PETS 2005和Stanford Drone Dataset的部分数据集上,执行本文的运动目标检测算法后,每帧图像的计算耗时,以及与运动相机场景下两种近似实时的运动目标检测算法(文献[9]和文献[10])的性能比较,三者的测试结果分别对应表中的方法1、2、3.其中,本文方法图像块的大小N设置为4,表中时间的单位为毫秒(ms).

表1 各运动目标检测算法耗时情况对比

从表中可以看出,由于本文的方法整合了改进的单高斯模型和金字塔LK光流法,因此耗时比文献[10]略高,但是比文献[9]的方法仍然有很大优势,能够在存在运动背景的场景下快速准确地进行运动目标检测,满足无人机平台的实时性要求.

6 总结

本文设计了一种结合了改进单高斯与光流分析的算法,以进行无人机航拍视频图像的运动目标检测.该方法使用改进的单高斯模型来进行背景建模和运动补偿,并计算得到前景图像;然后将其作为掩模,采用FAST算法提取稀疏特征点,并采用金字塔LK光流法进行光流检测和跟踪;最后,通过层次聚类将属于同一个运动目标的前景图像归为一类,勾画出运动目标的外边框.通过实验验证与分析,该方法能有效地处理运动相机造成的前景对背景模型的干扰,背景建模速度快,对光照变化具有一定的容忍度,检测出的目标接近真实目标.

猜你喜欢

光流高斯聚类
利用掩膜和单应矩阵提高LK光流追踪效果
一种傅里叶域海量数据高速谱聚类方法
基于改进Cycle-GAN的光流无监督估计方法
一种多尺度光流预测与融合的实时视频插帧方法
一种改进K-means聚类的近邻传播最大最小距离算法
AR-Grams:一种应用于网络舆情热点发现的文本聚类方法
基于自适应纹理复杂度的仿生视觉导航方法研究
数学王子高斯
天才数学家——高斯
基于Spark平台的K-means聚类算法改进及并行化实现