运动目标的检测方法、设备以及存储介质与流程

文档序号:29814183发布日期:2022-04-27 09:22阅读:123来源:国知局
运动目标的检测方法、设备以及存储介质与流程

1.本技术涉及图像处理计算领域,尤其涉及一种运动目标的检测方法、设备以及存储介质。


背景技术:

2.运动目标跟踪是一种常见且必要的图像处理技术,传统动态目标跟踪方法主要针对静态背景下的运动目标检测,如背景差分法,帧差法以及光流法。背景差分法是指事先将背景图像存储下来,再与观测图像进行差分运算,实现对运动区域的检测方法。背景差分法虽然能得到较为完整的运动目标信息,但背景图像必须随着外部条件比如光照等的变化而不断更新,背景模型的获取和更新较为麻烦。帧差法是指通过直接比较相邻两帧图像对应像点的灰度值的不同,然后通过阈值来提取序列图像中的运动区域的方法。帧差法更新速度快,算法简单易实现,适应性强,不需要获取背景图像,但是背景与运动目标间需要有一定程度的灰度差,否则可能在目标内部产生空洞,不能完整的提取出运动目标。
3.传统的针对静态背景下的运动目标检测方法对于动态背景下的动态目标跟踪有很大的局限性,并且,在一些手持的移动设备上,若实现动态背景下的动态目标追踪则要求更高,既要考虑到追踪的效果,又要考虑机器有限的性能,这对于用传统方法实现是一个很大的挑战。
4.目前,基于动态背景下的动态目标检测的一种实现方法是运用运动估计法,用特征点匹配算法来实现,即通过在图像中找到基准图像的每一特征点的唯一匹配点,通过两帧间点位置的变化求出其位移矢量,再将所有运动信息带入运动模型求出背景的全局运动参数,最后,利用全局运动参数来稳定前后帧图像,再进行帧间差法找到动态目标。基于动态背景下的动态目标检测的另一种现有实现方法是基于深度学习的动态目标检测方法,其主要是利用svm(support vector machines,支持向量机)或者神经网络,对图像中的动态目标进行标注然后进行训练,从而够达到跟踪动态目标的效果。然而,利用匹配点算法计算全局运动参数,复杂度较高,会占用很大一部分计算资源,而对于深度学习方法,由于不是所有的设备都会支持深度学习加速,因此应用面范围受限。此外,基于红外成像的特点,现有的针对红外设备上动态目标的识别方法是默认动态目标与周围环境相比有较高的温度,利用温度最高点来追踪目标。在红外场景中利用温度最高点进行目标追踪的方法虽然实现简单,但是在一些场景中的某些物体(例如经日光照射的岩石),往往会有比目标更高的温度。因此,对于红外设备上的动态目标而言,只检测温度最高点的办法也存在较大局限性。


技术实现要素:

5.为解决存在的技术问题,本技术提供一种能够减小占用算力资源的运动目的标检测方法、设备以及存储介质。
6.一种运动目标检测方法,包括:
7.获取当前图像以及与所述当前图像关联的在先图像;
8.根据所述当前图像和在先图像中对应的第一检测窗口内像素进行梯度计算,并根据梯度计算结果确定所述当前图像的原始光流矩阵;
9.根据设定的合并步长对所述原始光流矩阵进行合并,得到合并光流矩阵;
10.根据所述合并光流矩阵确定光流场变化区域,以及根据所述光流场变化区域确定所述当前图像中的运动目标的位置。
11.一种运动目标的检测设备,包括存储器和处理器;
12.所述处理器在运行所述存储器中存储的计算机程序指令时,执行所述的检测方法的步骤。
13.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程指令;
14.所述计算机程序指令被处理器执行时,实现所述的检测方法的步骤。
15.由上可见,在本技术提供的运动目标检测方法中,根据所述当前图像和在先图像中对应的第一检测窗口内像素进行梯度计算,并根据梯度计算结果确定所述当前图像的原始光流矩阵,计算光流的方法相对简化,所占的算力资源较小。此外,利用设定的合并步长对原始光流矩阵进行合并,以获得光流场的稳定表示,使得根据合并光流矩阵确定的光流场的变化区域进行的运动目标定位具有较高的精准度。
附图说明
16.附图仅用于示出实施方式,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
17.图1为基于光流场进行运动目标检测的原理示意图;
18.图2为依据本技术一些实施例提供的运动目标的检测方法流程示意图;
19.图3为依据本技术一些实施例提供的第一检测窗口在对应滑动步的示意图;
20.图4为依据本技术另一些实施例提供的运动目标的检测方法流程示意图;
21.图5为依据本技术一些实施例提供的运动目标的检测装置示意图;
22.图6为依据本技术一些实施例提供的运动目标的检测设备结构示意图。
具体实施方式
23.以下结合说明书附图及具体实施例对本技术技术方案做进一步的详细阐述。
24.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中在本技术的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术的实现方式。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
25.在本技术的描述中,需要理解的是,术语“中心”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“行”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本技术和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本技术的限制。在本技术的描述中,除非另有说明,“多个”的含义是两个或两个以上。
26.在本技术的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可
以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本技术中的具体含义。
27.为了解决现有的运动目标检测算法复杂度高以及应用于红外图像检测时的局限性问题,本技术提供了新的运动目标检测方法。本技术一些实施例提供的新的运动目标检测方法可解决动态场景下的红外运动目标检测,能够在动态场景中有相似或更高温度的静态物体的情况下,检测出运动目标的位置,并加以标注让用户更容易观察到运动目标。本技术一些实施例提供的新的运动目标检测方法除了可应用于对红外图像中的运动目标检测外,也可应用于可见光图像中具有明显运动特征的运动目标的检测。
28.本技术的一些实施例提供的运动目标检测方法主要是基于光流法实现的,光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到在先图像跟当前图像之间存在的对应关系,从而计算出前后图像之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。图像上的光流是可以被看作是物体或者场景的运动轨迹,在某一瞬时时刻存在大小和方向,是一个二维矢量。光流是基于像素点定义的,所有光流的集合称为光流场。光流场是一个二维矢量场,它反映了图像上每一点灰度的变化趋势,可看成是带有灰度的像素点在图像平面上运动而产生的瞬时速度场,它包含的信息即是各像点的瞬时运动速度矢量信息。
29.horn

schunck光流计算算法(后续简称hs光流计算算法)是基于物体运动的光学特性的两个假设获得的一种光流计算方法。所述两个假设为:
30.1、运动物体的灰度在很短的间隔时间内保持不变;
31.2、给定邻域内的速度向量场变化是缓慢的。
32.基于上述假设,如图1所示,在一个没有动态目标的场景下,若场景整体运动,则其图像上的光流的大小和方向应该是一致的,若场景中存在目标,只要目标和场景发生相对位移,则其光流矢量就和整体场景的光流向量不一致,这样就可以通过寻找不一致的光流矢量区域(光流场的变化区域)来寻找运动目标所处的位置。
33.下面介绍一下hs光流计算算法的推导过程:
34.由上述第一个假设,可得如下等式(1):
35.i(x,y,t)=i(x+δx,y+δy,t+δt)
ꢀꢀ
(1)
36.等式(1)中i(x,y,t)表示运动物体的灰度函数,δx、δy分别为δt时间内像素在x、y轴方向上的位移量。将公式(1)右边在x,y处泰勒展开,得如下等式(2):
[0037][0038]
等式(2)中ε是包含有δx、δy和δt的二阶和更高阶项,将等式(2)两边减去i(x,y,t),再除以δt,得如下等式(3):
[0039][0040]
等式(3)中,o(δt)是含δt的一个小量,在极限中当δt-》0,即δt从0的左右两侧趋向于0时,等式(3)可变为如下等式(4):
[0041][0042]
进一步的,另以及则等式(4)变为如下等式(5):
[0043]ix
u+iyv+i
t
=0
ꢀꢀꢀ
(5)
[0044]
等式(5)即为光流约束方程,它反映了灰度与速度的一个对应关系。当等式(5)中有u、v两个变量,显然不能将速度解出,因此需要引入上述第二个假设,即光流的全局平滑约束条件,并将第二个假设引入平滑项,具体如下等式(6)所示:
[0045][0046]
对于所有像素点,需要满足等式(5)和等式(6)的和最小,因此,可建立如下等式(7):
[0047]
ζ2=∫∫α2ζ2+(i
x
u+iyv+i
t
)2dxdy
ꢀꢀ
(7)
[0048]
等式(7)中α表示平滑权重系数,表示速度光滑项所占的权重,由于需要满足等式(5)和等式(6)的和最小,则需要最小化如下等式(8):
[0049][0050]
针对等式(8)采用变分计算,根据欧拉方程,可获得如下等式(9)、(10):
[0051][0052][0053]
并由等式(9)、(10)进一步转换运算,获得如下等式(11)、(12):
[0054][0055][0056]
将等式(11)、(12)中的拉普拉斯算子用某一点的速度与其周围速度平均值之差来近似,获得如下等式(13)、(14):
[0057][0058][0059]
化简等式(13)、(14),可得如下等式(15)、(16):
[0060]
[0061][0062]
利用迭代算法根据上述等式(15)、(16)计算对应的u、v,从而获得图像的光流场。
[0063]
本技术的发明人在研究的过程中,认为根据现有的hs光流计算算法进行运动目标的检测,在检测的过程中需要用到迭代计算,会占用很大一部分计算资源,不适合利用计算和存储资源本就不是太多的移动设备上,如fpga(现场可编程逻辑门阵列,field programmable gate array)实现。
[0064]
基于上述问题,本技术一些实施例中提供的运动目标检测方法的方法流程示意图如图2所示,本实施例提供的运动目标检测方法包括s2、s4、s6以及s8。本实施例提供的运动目标检测方法在如图5所示的运动目标检测装置或如图6所示的运动目标检测设备上实现。
[0065]
s2:获取当前图像以及与所述当前图像关联的在先图像。
[0066]
具体的,s2可以由图5所示的运动目标检测装置中的图像获取模块11实现,或者由图6所示的运动目标检测设备中的存储器21存储图像获取程序,再由图6所示的运动目标检测设备中的处理器22在执行所述存储器21存储的图像获取程序时实现。
[0067]
在一些实施例中,可以通过从视频图像序列中获取当前图像以及所述当前图像的在先图像,以作为两幅待检测图像。在另一些实施例中,所述在先图像与当前图像也可以为图像拍摄装置(如摄像头)先后采集的图像。所述在先图像可以是与所述当前图像相邻的前一图像,也可以为与所述当前图像相距移动时间间隔的在先图像。
[0068]
由于光流法是基于时间轴上前后两幅不同的图像中的运动信息,来计算光流场的,需要获取当前图像以及所述在先图像。因此,在一些实施例中,依据本技术提供的运动目标检测方法在从视频图像序列中获取当前帧图像与在先帧图像之前,需要先定义一个缓存帧,以用于存储在先帧图像。具体的,所述在先帧图像为所述当前帧图像的相邻的前一帧图像。在执行所述运动目标检测方法的最开始时,缓存帧是空白的,但是由于在进行光流的计算过程中需要用到缓存帧的数据,所以在检测到当前帧图像为视频图像序列中的第一帧时,需要初始化缓存帧。初始化缓存帧的方法为将为所述第一帧的当前帧图像进行复制,以作为缓存帧的初始值。然后在后续的循环过程中,需要更新缓存帧中的内容,更新的方式为,将当前帧图像作为缓存帧,则在下一帧开始时,前一个所述当前帧图像则作为下一帧图像的前一帧图像,而下一帧图像则作为现在的当前帧图像。
[0069]
s4:根据所述当前图像和在先图像中对应的第一检测窗口内像素进行梯度计算,并根据梯度计算结果确定所述当前图像的原始光流矩阵。
[0070]
s4可以由图5所示的运动目标检测装置中的原始光流计算模块12实现,或者由图6所示的运动目标检测设备中的存储器21存储原始光流计算程序,再由图6所示的运动目标检测设备中的处理器22在执行所述存储器21存储的原始光流计算程序时实现。
[0071]
具体的,在s4中利用第一检测窗口获取当前图像和在先图像对应位置处的子图像(第一检测窗口框住的区域),然后计算当前图像和在先图像对应位置处的子图像之间的梯度,并根据梯度的计算结果确定当前图像和原始图像的光流矩阵,即根据每一对子图像(当前图像和在先图像对应的子图像)之间的梯度值可计算获得原始光流矩阵中的一个光流矢量。
[0072]
具体的,s4进一步包括:
[0073]
s41:采用设定大小的第一检测窗口分别依序滑动遍历所述当前图像和所述在先图像。
[0074]
s42:根据所述第一检测窗口的每一滑动步对应的所述当前图像和所述在先图像中所述第一检测窗口内包含的像素进行梯度计算。
[0075]
s43:根据梯度计算结果确定所述第一检测窗口的每一滑动步对应的光流矢量,进而确定所述当前图像的原始光流矩阵。
[0076]
在一些实施例中,所述第一检测窗口的长与宽相等,利用所述第一检测窗口遍历所述当前图像fr2以及所述在先图像fr1时,可以是用所述第一检测窗口同时同步依序遍历所述当前图像fr2以及所述在先图像fr1。所述的依序滑动遍历是指,所述第一检测窗口在所述当前图像fr2以及所述在先图像fr1中的遍历路径是相同的,如可以均从所述当前图像fr2以及所述在先图像fr1的第一个像素点开始从左至右,从上至下进行遍历,也可以均从所述当前图像fr2以及所述在先图像fr1的最后像素点开始从右至左,从下至上进行遍历。
[0077]
在其它实施例中,所述第一检测窗口遍历所述当前图像fr2与遍历所述在先图像fr1的时间不同步,可以为先后关系,则在根据对应所述第一检测窗口中的像素进行梯度计算前,需要根据所述当前图像fr2中的第一检测窗口的位置确定所述在先图像中的第一检测窗口的对应位置。即所述第一组像素与所述第二组像素是所述当前图像fr2以及所述在先图像fr1中处于相同滑动位置的所述第一检测窗口中对应的像素。
[0078]
根据所述第一组像素与第二组像素进行梯度计算,是指根据所述第一组像素以及所述第二组像素计算所述当前图像fr2中的所述第一检测窗口与所述在先图像fr1中的所述第一检测窗口之间的像素梯度。在所述第一检测窗口的每一滑动步,所述在先图像fr1中的所述第一检测窗口则相当于所述在先图像fr1的第一子图像fr11,所述当前图像fr2中的所述第一检测窗口相当于所述当前图像fr2中的第二子图像fr21,所述第二子图像fr21在所述当前图像fr2中的位置与所述第一子图像fr11在所述在先图像fr1中的位置相同。则根据所述第一组像素与所述第二组像素进行梯度计算是计算所述第二子图像fr21与所述第一子图像fr11之间的图像梯度。在获得所述第一检测窗口在各个滑动步对应的图像梯度后,便可基于梯度法计算对应的光流矢量。在基于图像梯度计算光流矢量时,与hs光流计算方法一样,需要设定如下两个约束条件:
[0079]
1、运动物体的灰度在很短的间隔时间内保持不变;
[0080]
2、给定邻域内的速度向量场变化是缓慢的。
[0081]
基于图像梯度的计算结果以及上述两个约束条件计算对应的光流矢量。根据所述第一检测窗口的各个滑动步对应的光流矢量确定所述当前图像的原始光流矩阵是指,所述原始光流矩阵中的各个元素为所述光流矢量,对应的光流矢量在所述原始光流矩阵中的位置根据对应的所述第一检测窗口在所述当前图像中的位置确定。所述第一检测窗口可选择行数与列数相同的矩阵,为了减小运动目标检测过程中的计算算力,所述第一检测窗口可以设置为2
×
2的最小检测单元矩阵。
[0082]
此外,需要说明的是,上述计算的光流矢量包括x轴方向的第一分量u,以及y轴的第二分量v,则光流矢量包括u和v。在一些实施例中,所述原始光流矩阵中的各个原始光流矢量可以为(u,v),即原始光流矩阵为一个包含第一分量和第二分量的矩阵。在另一些实施
例中,所述原始光流矩阵包括第一分量原始矩阵和第二分量原始矩阵。其中,第一分量原始矩阵中的各个元素为对应的各个所述第一分量,所述第二分量原始矩阵中的各个元素为对应的各个所述第二分量。因此,在一些实施例中,在确定所述原始光流矩阵前,所述运动检测方法还需要分别定义第一分量原始矩阵u和第二分量原始矩阵v,然后将计算获得各个所述第一分量和第二分量分别对应的填充到定义好的所述第一分量原始矩阵u和第二分量原始矩阵v中,以确定所述原始光流矩阵。
[0083]
在本技术提供的一些实施例中,利用预设大小的第一检测窗口分别滑动遍历所述当前图像fr2和所述在先图像fr1,在所述第一检测窗口的每一滑动步,所述当前图像fr2和所述先在图像fr1中对应位置的第一检测窗口均可分别截取所述当前图像fr2的第二子图像fr21以及所述在先图像fr1的第一子图像fr11,然后根据所述第二子图像fr21和所述第一子图像fr11计算图像梯度,并根据图像梯度计算每一滑动步对应的光流矢量。由于计算各个子图像的图像梯度相对简单,因此基于各个子图像之间的图像梯度进行光流矢量的计算过程所占用计算资源较小,可在计算和存储资源较小的移动设备上(如fpga)实现。
[0084]
s6:根据原始光流矩阵和设定的合并步长,对所述原始光流矩阵进行合并,得到合并光流矩阵。
[0085]
具体的,s6可以由图5所示的运动目标检测装置中的合并光流计算模块13实现,或者由图6所示的运动目标检测设备中的存储器21存储合并光流计算程序,再由图6所示的运动目标检测设备中的处理器22在执行所述存储器21存储的合并光流计算程序时实现。
[0086]
为了避免原始光流矩阵因敏感性高而易受到图像变化的影响给后续的光流场变化区域的计算造成误差较大的问题,需要对原始光流场矩阵进行合并,以获得稳定的光流矩阵表示。在进行合并之前,需要先定义一个合并步长。这里的步长包括对应行方向(x轴方向)合并的第一步长step1,以及对应列方向(y轴方向)合并的第二步长step2。然后根据预设的步长对原始光流矩阵进行合并,所获得合并光流矩阵的行数为所述原始光流矩阵的行数的除以step1,合并光流矩阵的列数为所述原始光流矩阵的列数的除以step2。需要说明的是,与原始光流矩阵对应,若原始光流矩阵中的各个元素为对应的(u,v),则合并光流矩阵中的各个元素也为相应的(u,v)。若原始光流矩阵由上述第一分量原始矩阵u和第二分量原始矩阵v构成,则所述合并光流矩阵也包括第一分量合并矩阵us以及第二分量合并矩阵vs。其中,us行数为u的行数的除以step1,us的列数为u的列数的除以step2,vs行数为v的行数的除以step1,vs的列数为v的列数的除以step2。合并光流矩阵中的各个元素可以为各个合并步长内原始光流矩阵中各个原始的平均值。
[0087]
对原始光流场进行合并可获得更稳定的光流矢量,提高了检测的精准度,同时也可以减少检测算法的计算量。
[0088]
s8:根据所述合并光流矩阵确定光流场变化区域,以及根据所述光流场变化区域确定所述当前图像中的运动目标的位置。
[0089]
s8可以由图5所示的运动目标检测装置中的运动目标位置确定模块14实现,或者由图6所示的运动目标检测设备中的存储器21存储运动目标确定程序,再由图6所示的运动目标检测设备中的处理器22在执行所述存储器21存储的原运动目标确定程序时实现。
[0090]
由图1所示的基于光流法的运动目标检测原理图可得,在当前图像对应的光流场的表示(合并光流矩阵)确定后,便可根据光流场变化区域,进而根据光流场的变化区域确
定运动目标所在的位置。根据光流场的变化确定运动目标所在的位置的运动目标检测方法可适应于红外图像中的运动目标检测,克服了现有的只检测红外图像中温度最高点的方法来进行运动目标定位的局限性。
[0091]
由上可见,在本技术提供的运动目标检测方法中,根据所述当前图像和在先图像中对应的第一检测窗口内像素进行梯度计算,并根据梯度计算结果确定所述当前图像的原始光流矩阵,计算光流的方法相对简化,所占的算力资源较小。此外,利用设定的合并步长对原始光流矩阵进行合并,以获得光流场的稳定表示,使得根据合并光流矩阵确定的光流场的变化区域进行的运动目标定位具有较高的精准度。
[0092]
在一些实施例中,为了加快s4中对当前图像fr2以及在先图像fr1的遍历速度,降低运动目标检测的运算数据量。所述当前图像fr2以及所述在先图像fr1并非是图像拍摄装置采集的源图像,而是对应原始图像的缩略图像。则s2具体包括:获取图像拍摄装置先后采集的源图像,然后对各源图像进行缩略处理,以获得缩略的当前图像fr2以及所述当前图像关联的在先图像fr1。例如将对应的各源图像缩略至1/2,以获得对应的所述当前图像fr1以及所述在先图像fr2。在一些实施例中,所述在先图像对应的源图像为与所述当前图像对应的源图像的相邻的前一图像。
[0093]
在一些实施例中,s42进一步包括:
[0094]
s421:获取所述第一检测窗口在所述当前图像和所述在先图像中同步滑动过程中,每一滑动步对应的所述当前图像中所述第一检测窗口内包含的第一组像素以及所述在先图像中所述第一检测窗口内包含的第二组像素。
[0095]
在本实施例中,利用所述第一检测窗口同时遍历所述当前图像fr2以及所述在先图像fr1,即所述第一检测窗口在所述当前图像fr2以及所述在先图像fr1同步滑动,即所述当前图像fr2中第一检测窗口与所述在先图像fr1中的第一检测窗口同时滑动,且滑动的频率相同,且每滑动一步,所述当前图像fr2中第一检测窗口与所述在先图像fr1中的第一检测窗口在各自图像中所处的位置对应相同。
[0096]
获取所述每一滑动步对应的所述第一组像素以及所述第二组像素是指将每一滑动步对应的所述当前图像fr2中第一检测窗口与所述在先图像fr1中的第一检测窗口中的像素取出,并按取出的各个像素在其所属图像中的像素坐标进行编号。所述第一组像素对应上述第二子图像fr21中的各个像素,所述第二组像素对应上述第一子图像fr11中的各个像素。
[0097]
为了更清楚描述s421以及后续各个相关步骤,本技术以所述第一检测窗口为2
×
2的矩阵为例对各个步骤进行举例说明,但是在其它实施例中所述第一检测窗口的大小并不局限于2
×
2。
[0098]
如图3所示,其左侧窗口为某一滑动步的所述在先图像fr1中的第一检测窗口,即第一子图像fr11,右侧窗口为与左侧对应滑动步的所述当前图像fr2中的第一检测窗口,即第二子图像fr21。其中,第一子图像fr11中的像素为所述在先图像fr1中的第i行、第i+1行和第j列、第j+1列交错的位置,并依据所述第一组像素与第二组像素中的各个像素在图像中的对应位置对第一组像素和第二组像素中的各个像素进行编号标识。例如,第一组像素包括在先图像fr1中的第i行第j列的像素t1、第i行第j+1列的像素t3、第i+1行第j列的像素t5、第i+1行第j+1列的像素t7;第二组像素包括当前图像fr2中的第i行第j列的像素t2、第i
行第j+1列的像素t4、第i+1行第j列的像素t6、第i+1行第j+1列的像素t8。
[0099]
s422:根据所述第一组像素和所述第二组像素分别进行图像间梯度计算、行间梯度计算以及列间梯度计算,以分别确定对应的时间方向梯度、行方向梯度以及列方向梯度。
[0100]
在获取所述第二子图像fr21对应的所述第一组像素和所述第一子图像fr11对应的第二组像素后,便可根据对应的像素进行图像间梯度计算、行间梯度计算以及列间梯度计算,以分别获得各个子图像对应的图像梯度,该图像梯度包括与所述第二子图像fr21和所述第一子图像fr11之间的图像间梯度对应的时间方向梯度gi、与所述第二子图像fr21和所述第一子图像fr11各行之间的行间梯度对应的行方向梯度gh以及与所述第二子图像fr21和所述第一子图像fr11各列之间的列间梯度对应的列方向梯度gw。
[0101]
在一些实施例中,基于上述提供的第一检测窗口的具体示例进一步描述s422的具体步骤,其进一步包括s4221、s4222以及s4223。但是需要说明的是,s4221、s4222以及s4223的先后顺序在本技术中并不做特别限定,此外除非特别说明外,本技术中其它各步骤的先后顺序也不做特别限定。
[0102]
s4221:计算所述第一组像素与所述第二组像素中对应的各个像素之间的平均像素差值,以获得所述时间方向梯度。
[0103]
由上述示例描述可得,所述第一组像素中的像素t1在所述当前图像fr2中的位置与所述第二组像素中的像素t2在所述在先图像fr1中的位置相同,则第一组像素中的像素t1与第二组像素中的像素t2为对应的像素。同理,第一组像素中的像素t3与第二组像素中的像素t4为对应的像素,第一组像素中的像素t5与第二组像素中的像素t6为对应的像素,第一组像素中的像素t7与第二组像素中的像素t8为对应的像素。所述时间方向梯度gi根据如下等式(17)进行计算:
[0104]gi
=[(t2-t1)+(t4-t3)+(t6-t5)+(t8-t7)]/4
ꢀꢀ
(17)
[0105]
s4222:计算所述第一组像素以及所述第二组像素中后一行的各个像素与前一行对应的各个像素之间的平均像素差值,以获得所述行方向梯度。
[0106]
由上述示例描述可得,所述第一组像素中的像素t5、t7和所述第二组像素中的像素t6、t8均为其所属图像中的第i+1行的像素,所述第一组像素中的像素t1、t3和所述第二组像素中的像素t2、t4均为其所属图像中的第i行的像素。此外,且像素t1和t5属于同一列,则t5对应的前一行中的像素为t1,同理,t7对应的前一行中的像素为t3、t6对应的前一行中的像素为t2、t8对应的前一行中的像素为t4。所述行方向梯度gh根据如下等式(18)进行计算:
[0107]gh
=[(t5-t1)+(t7-t3)+(t6-t2)+(t8-t4)]/4
ꢀꢀ
(18)
[0108]
s4223:计算所述第一组像素以及所述第二组像素中后一列的各个像素与前一列对应的各个像素之间的平均像素差值,以获得所述列方向梯度。
[0109]
由上述示例描述可得,所述第一组像素中的像素t3、t7和所述第二组像素中的像素t4、t8均为其所属图像中的第j+1列的像素,所述第一组像素中的像素t1、t5和所述第二组像素中的像素t2、t6均为其所属图像中的第j列的像素。此外,且像素t1和t3属于同一行,则t3对应的前一列中的像素为t1,同理,t7对应的前一列中的像素为t5、t4对应的前一列中的像素为t2、t8对应的前一列中的像素为t6。所述行方向梯度gw根据如下等式(19)进行计算:
[0110]gw
=[(t3-t1)+(t7-t5)+(t4-t2)+(t8-t6)]/4
ꢀꢀꢀ
(19)
[0111]
由上述对hs光流计算方法的过程描述可得,hs光流算法需要依据等式(15)、(16)进行复杂的迭代计算才能获得光流矢量,这样的计算方法所占的算力资源较大。对此,本技术的发明人在此基础上提出了一种简化的hs光流算法,即在基于时间方向梯度、行方向梯度以及列方向梯度计算光流矢量时,去掉(i
x
*u+iy*v+i
t
)里面的ix*u+iy*v,只保留i
t
作为参数,且去掉了迭代过程,即将等式(15)、(16)第一项和第二项均忽略掉了,从而将等式(15)、(16)分别转化为如下等式(20)、(21):
[0112][0113][0114]
等式(20)、(21)中的i
t
相当于上述描述的时间方向梯度gi,i
x
相当于上述描述的行方向梯度gh,iy相当于上述描述的列方向梯度gw。
[0115]
因此,在一些实施例中,利用本技术提供的简化后的hs光流计算方法,基于所述时间方向梯度gi、所述行方向梯度gh以及所述列方向梯度gw计算每一滑动步对应的光流矢量,进而确定原始光流矩阵的步骤,即s43进一步包括s431、s432以及s433。
[0116]
s431:根据所述时间方向梯度、所述行方向梯度以及所述列方向梯度进行计算,以获得第一中间参量,所述第一中间参量的大小随所述时间方向梯度成正比,且与第二中间参量成反比,所述第二中间参量为预设缩放系数、所述行方向梯度的平方以及所述列方向梯度的平方之和。
[0117]
具体的,所述第一中间参量δ可以如下等式(22)获得:
[0118]
δ=gi/(α+g
h2
+g
w2
)
ꢀꢀ
(22)
[0119]
其中,等式中的α为缩放系数,用于将后续获得的光流矢量固定在一个合适的区间里,这个区间是根据实际情况,依据经验值而定的,等式(22)中的g
h2
+g
w2
为所述第二中间分量。
[0120]
s432:根据所述第一中间参量与所述行方向梯度进行计算,以获得所述光流矢量在行方向的第一分量,所述第一分量的大小与所述第一中间参量以及所述行方向梯度的乘积成正比。
[0121]
在一些实施例中,根据上述等式(20),获得每一滑动步对应的第一分量u(i,j),其计算等式如下等式(23)所示:
[0122][0123]
显然,上述等式(23)与简化后的hs计算方法获得的等式(20)对应。
[0124]
s433:根据所述第一中间参量与所述列方向梯度进行计算,以获得所述光流矢量在列方向的第二分量,所述第二分量的大小与所述第一中间参量以及所述列方向梯度的乘积成正比。
[0125]
在一些实施例中,根据上述等式(21),获得每一滑动步对应的第二分量v(i,j),其计算等式如下等式(24)所示:
[0126][0127]
显然,上述等式(24)与简化后的hs计算方法获得的等式(21)对应。
[0128]
由于本技术一些实施例中是基于简化后的hs光流算法获得的光流矢量,其敏感性较高,容易受到图像变化的影响,若直接用来进行后续确定光流场变化区域的话,会产生较大的误差,从而使得最终检测的运动目标的位置不准确。因此,需要对s4中计算获得的原始光流矩阵进行合并,以获得所述当前图像对应的稳定光流场表示,即s6中获得的合并光流矩阵。
[0129]
在一些实施例中,s6进一步包括:利用设定大小的第二检测窗口遍历所述原始光流矩阵,根据所述第二检测窗口的每一滑动步对应的所述第二检测窗口中各个所述光流矢量的平均值,确定所述第二检测窗口的每一滑动步对应的合并光流矢量,以及根据所述合并光流矢量确定合并光流矩阵。
[0130]
具体的,在对所述原始光流矩阵进行合并之前,还需要先定义合并步长,即定义一个预定大小的第二检测窗口。所述第二检测窗口的行数为step1,列数为step2,所述第二预设窗口为一个step1
×
step2的矩阵。在一些实施例中,step1与step2可以设置为相等,在另一些实施例中step1与step2也可以为不相等。
[0131]
根据所述第二检测窗口的每一滑动步对应的所述第二检测窗口中各个所述光流矢量的平均值是指,每滑动一步所述第二检测窗口,将对应的所述第二检测窗口中的各个光流矢量相加后再取平均值,以获得合并光流矢量,并将计算获得的平均值存放在新的矩阵中对应的位置处,以获得所述合并光流矩阵。
[0132]
若原始光流矩阵由上述第一分量原始矩阵u和第二分量原始矩阵v构成,则需要采用所述第二检测窗口分别遍历第一分量原始矩阵u以及第二分量原始矩阵v,然后根据所述第二检测窗口的每一滑动步对应的第一分量原始矩阵u中所述第二检测窗口中各个所述光流矢量的平均值以及第二分量原始矩阵u中所述第二检测窗口中各个所述光流矢量的平均值,分别确定第一分量合并矩阵us和第二分量合并矩阵vs。其中,us行数为u的行数的除以step1,us的列数为u的列数的除以step2,vs行数为v的行数的除以step1,vs的列数为v的列数的除以step2。合并光流矩阵中的各个元素可以为各个合并步长内原始光流矩阵中各个原始的平均值。
[0133]
如图1所示的基于光流场变化区域确定运动目标的位置的原理图所示,若整个场景发生移动,则场景中的静态物体的光流向量虽然会有所不同,但从理论上说其大致的方向和大小相差不会很大;而动态的目标因为自身的移动和在图像上的形变,其对周围的光流向量会造成很大的扰动。因此,在一些实施例中,可利用简单的方差法判断光流场变化最剧烈的位置,即s8中的所述根据所述合并光流矩阵确定光流场变化区域(s81)进一步包括:利用设定大小的第三检测窗口遍历所述合并光流矩阵,根据所述第三检测窗口的每一滑动步对应的所述第三检测窗口中的中间合并光流矢量与相邻的各个所述合并光流矢量之间的方差,根据所述方差的大小确定光流场变化区域。
[0134]
进一步的,s81中的根据所述方差的大小确定光流场变化区域(s811)包括:判断所述方差是否大于或等于预设阈值,若是,则在与所述合并光流矩阵具有相同大小的空白矩阵中与所述中间合并光流矢量对应的位置点进行标记,以获得标记矩阵,再根据所述标记
矩阵中的标记点所在的区域,确定所述光流场变化区域。
[0135]
以合并光流矩阵包括第一分量合并矩阵us和第二分量合并矩阵vs,以及所述第三检测框为一个3
×
3的矩阵为例来进一步清楚阐述s61中基于方差法确定光流场变化区域过程,具体如下:
[0136]
利用3
×
3的第三检测窗口分别对us,vs进行遍历。以对us遍历为例,每滑动一次所述第三检测窗口时,计算位于第三检测窗口内中间点(i,j)和其周围的8个向量分量的方差是否大于一个预设阈值threshold,若是,则认为当前的中间点很可能是动态目标的候选点。则将当前的中间点在一个与us相同大小的空白矩阵tmp中做出标记,以形成与第一分量合并矩阵对应的第一分量标记矩阵。对于vs遍历,同样也是将对应的作为候选点中间点在一个与vs相同大小的空白矩阵tmp中做出标记,以形成与第二分量合并矩阵对应的第二分量标记矩阵。标记矩阵中的各个标记点确定的区域即为光流场的变化区域。
[0137]
在一些实施例中,s8中的所述根据所述光流场变化区域确定所述当前图像中的运动目标的位置(s82)具体包括s821以及s822。
[0138]
s821:利用图像膨胀算法连通所述光流场变化区域。
[0139]
遍历完成合并矩阵中所有的点以后,对应的标记矩阵中的标记点所在的区域极有可能是动态目标所在的区域,通过一图像膨胀算法将这些区域的空白进行补齐,则基本可以将不连续的区域连接起来,以获得连通的光流场变化区域。
[0140]
s822:利用空间连通域寻找算法寻找连通后的所述光流场变化区域的边界,并描出对应的边界框,根据所述边界框的位置确定所述当前图像中的运动目标的位置。
[0141]
光流场变化区域的边界框所在的位置即为最终输出的表示所述运动目标位置。依据本技术提供的运动目标检测算法,最终获得表示运动目标位置的边界框不一定是一个矩形框,若运动物体形状比较复杂,那么最终的标记区域描出的边界框是带有锯齿的不规则形状。
[0142]
本技术提供的运动目标检测方法中的上述描述的各个步骤的先后顺序不做限定,为了让本公众更清楚的了解本技术提供的运动目标检测方法,下面提供一种依据本技术提供的运动目标检测方法的具体实施例。
[0143]
如图4所示,在本实施例中所述的运动目标检测方法先后包括以下步骤:
[0144]
s01:图像缩放。获取图像拍摄装置先后采集的当前源图像和当前源图像的前一源图像,并对两幅源图像分别进行缩略处理,以将源图像缩略至1/2,以获得当前图像fr2以及与所述当前图像的前一图像fr1。即当前图像fr2的大小为当前源图像的1/2,前一图像fr1的大小为前一源图像的1/2。在进行s01之前,还需要先定义一个存储前一源图像的缓存帧。这里的图像拍摄装置可以为红外摄像头也可以为可见光摄像头。
[0145]
s02:计算原始光流场。对缩略后获得的当前图像以及前一图像同时采用2
×
2的第一检测窗口进行遍历,每次滑动一次第二检测窗口,需要取出图像中相邻的四个像素,以进行后续的梯度计算,取像素的方式图3所示,即分别取出当前图像和在先图像中对应位置的第一检测窗口中的像素构成8个像素,并对这8个像素分别进行编号,如图3中的t1、t2、t3、t4、t5、t6、t7以及t8。由于前面已经针对图3做了详细的介绍,在此不再累述。然后根据取出的各个像素按如下公式组计算对应的时间方向梯度(图像间梯度)、行方向梯度以及列方向梯度。
[0146][0147]
然后将计算的梯度结果代入如下公式组,以获得对应的原始光流矢量,并将原始光流矢量存放至预先定义好的原始光流矩阵中。其中,原始光流矩阵包括用于存放原始光流矢量的第一分量u的第一分量原始光流矩阵u和用于存放原始光流矢量的第二分量v的第二分量原始光流矩阵v。
[0148][0149]
s03:合并原始光流场。所以这一步骤将原始光流场的向量进行合并(加和并取平均值),以获取稳定的向量表示。在合并原始光流场之前,先定义的step1
×
step2矩阵作为第二检测窗口,即定义合并的检测窗口的边长。此步骤将需要将u,v矩阵分别进行遍历,每一个step1*step2大小的第二检测窗口下的值,都会被加和并取平均值,分别存放到预先定义的新的us,vs矩阵中,其中us的长为u的长除以step1,us的宽为u的宽除以step2。同理,vs的长为v的长除以step1,vs的宽为v的宽除以step2,step1=step2。
[0150]
s04:遍历光流场,判断光流扰动程度。这一步就是要利用简单的方差法判断光流场变化最剧烈的位置。即分别利用3
×
3的第三检测窗口对us,vs进行遍历,每滑动一步第三检测窗口,计算第三检测窗口内的中间点(i,j)和周围的8个对应分量的方差,以根据所述方差判断光流扰动程度,方差越大,表示光流扰动越大。
[0151]
s05:标记光流场中扰动大的区域。若位于中间的中间点(i,j)和其周围的8个向量分量的方差大于一个阈值threshold,表明该点的光流扰动程度较大,则认为当前点很可能是动态目标的候选点,需要在一个和us相同大小的空白矩阵tmp中做出标记。
[0152]
s06:画边界框。遍历完成合并光流矩阵中的所有点以后,标记矩阵中的标记点所在的区域极有可能是动态目标所在的区域,则进一步通过一图像膨胀算法将这些区域的空白进行补齐,可基本可以将不连续的区域连接起来,以获得连通的光流场变化区域。然后对这些区域进行空间连通域寻找算法,找到其边界,描出对应的边界框,所述边界框所在的位置即为运动目标的检测位置。
[0153]
由上述各部分描述可见,在本技术各个实施例提供的运动目标检测方法中巧妙地利用了场景和运动目标的相对运动,使用传统的并简化后的hs光流法进行运动目标检测,可有效地减少检测算法需要占用的算力资源。进一步的,对原始光流场进行合并,可获得更稳定的光流矢量,提高了检测的精准度,同时也可以减少检测算法的计算量。此外,根据运动目标周围光流向量的不规则性,利用方差来衡量检测区域的不规则性,找到动态目标所在的位置,使得本技术提供的运动目标检测方法适用于环境信息复杂且运动目标物体形状不规则的户外场景中。而且,本技术提供的运动目标检测方法在计算过程中利用了缩小后的图像进行计算,在保证检测准确性的前提下可最大限度地减少了计算量。从而可以采用算力资源相对较少的fpga实现本技术提供的运动目标检测方法,在降低成本的同时又能提供实时的动态目标的标记。
[0154]
在一些实施例中,本技术还提供了一种运动目标的检测装置,具体如图5所示,其包括图像获取模块11、原始光流计算模块12、合并光流计算模块13以及运动目标位置确定模块14。其中,所述图像获取模块11主要用于获取当前图像以及与所述当前图像关联的在先图像。所示原始光流计算模块12主要用于采用设定大小的第一检测窗口分别依序遍历所述当前图像和所述在先图像,以及根据所述第一检测窗口滑动过程中,每一滑动步对应的所述当前图像中所述第一检测窗口内包含的第一组像素以及所述在先图像中所述第一检测窗口内包含的第二组像素进行梯度计算,以及根据梯度计算的结果确定所述第一检测窗口的每一滑动步对应的光流矢量,以及根据所述第一检测窗口的各个滑动步对应的光流矢量确定所述当前图像的原始光流矩阵。合并光流计算模块13用于根据原始光流矩阵和设定的合并步长,对所述原始光流矩阵进行合并,得到合并光流矩阵。运动模块位置确定模块14主要用于根据所述合并光流矩阵确定光流场变化区域,以及根据所述光流场变化区域确定所述当前图像中的运动目标的位置。
[0155]
如图6所示,在一些实施例,本技术还提供了一种运动目标的检测设备,其包括存储器21和处理器22。其中,所述处理器22在运行所述存储器21中存储的计算机程序指令时,执行依据本技术任意一实施例提供的所述的检测方法的步骤。由于本技术提供的运动检测方法的计算量相对较小,因此所示处理器22可以采用fpga处理器实现。
[0156]
此外,本技术还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程指令;所述计算机程序指令被处理器执行时,实现依据本技术任意一实施例提供的项所述的检测方法的步骤。
[0157]
上述处理器可能是cpu(中央处理器,central processing unit),或者是asic(特殊应用集成电路,application specific integrated circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。运动目标的检测设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic或fpga。
[0158]
上述存储器可能包含高速ram(随机存取存储器,random access memory),也可能还包括nvm(非易失性存储器,non-volatile memory),例如至少一个磁盘存储器。
[0159]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围之内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1