首页> 中国专利> 确定视频中目标点的运动速度的方法以及装置

确定视频中目标点的运动速度的方法以及装置

摘要

公开了一种确定视频中目标点的运动速度的方法,包括:在当前帧图像中确定预设目标点所在的第一图像区域并预测所述预设目标点在所述当前帧图像的下一帧图像中的第二图像区域;确定所述第一检测区域的亮度梯度集、所述第一图像区域对应的第一插值区域以及所述第二图像区域对应的第二插值区域;确定所述第一插值区域和所述第二插值区域之间的差值图像;确定第一插值区域的自相关结果以及所述第一插值区域与所述第二插值区域的互相关结果;基于所述第一插值区域自相关结果以及第一插值区域与第二插值区域的互相关结果,确定目标点的运动速度。本公开将计算视频中的物体运动速度中,利用目标点边缘的像素信息,准确计算目标点的运动速度。

著录项

  • 公开/公告号CN112308871A

    专利类型发明专利

  • 公开/公告日2021-02-02

    原文格式PDF

  • 申请/专利权人 地平线(上海)人工智能技术有限公司;

    申请/专利号CN202011199942.9

  • 发明设计人 姚猛;

    申请日2020-10-30

  • 分类号G06T7/13(20170101);G06T7/246(20170101);G06T7/254(20170101);G06T7/269(20170101);G06T3/40(20060101);

  • 代理机构11667 北京兰亭信通知识产权代理有限公司;

  • 代理人陈晓瑜

  • 地址 200120 上海市浦东新区南汇新城镇环湖西二路888号c楼

  • 入库时间 2023-06-19 09:46:20

说明书

技术领域

本公开涉及机器视觉技术领域,具体的说是涉及一种确定视频中目标点的运动速度的方法、装置、可读存储介质以及电子设备。

背景技术

在确定视频中的物体运动速度时,可以选用的处理方法有多种,例如,基于梯度的方法、基于匹配的方法、基于能量的方法和基于相位的方法等,上述的各方法中,其计算过程通常会较为复杂,同时,由于其约束条件较为宽松,导致其计算的物体运动速度难以得到精确值。

发明内容

为了解决上述技术问题,提出了本公开。本公开的实施例提供了一种确定视频中目标点的运动速度的方法、装置、可读存储介质以及电子设备。本公开将计算视频中的物体运动速度中,利用目标点边缘的像素信息,准确计算目标点的运动速度。

根据本公开的一个方面,提供了一种确定视频中目标点的运动速度的方法,包括:

在当前帧图像中确定预设目标点所在的第一图像区域并预测所述预设目标点在所述当前帧图像的下一帧图像中的第二图像区域;

确定所述第一检测区域的亮度梯度集、所述第一图像区域对应的第一插值区域以及所述第二图像区域对应的第二插值区域;

确定所述第一插值区域和所述第二插值区域之间的差值图像;

确定第一插值区域的自相关结果以及所述第一插值区域与所述第二插值区域的互相关结果;

基于所述第一插值区域自相关结果以及第一插值区域与第二插值区域的互相关结果,确定目标点的运动速度。

根据本公开的第二方面,提供一种确定视频中目标点的运动速度的装置,包括:

窗口确定模块,用于在当前帧图像中确定预设目标点所在的第一图像区域并预测所述预设目标点在所述当前帧图像的下一帧图像中的第二图像区域;

第一指令执行模块,用于确定所述第一检测区域的亮度梯度集、所述第一图像区域对应的第一插值区域以及所述第二图像区域对应的第二插值区域;

第二指令执行模块,用于确定所述第一插值区域和所述第二插值区域之间的差值图像;

第三指令执行模块,用于确定第一插值区域的自相关结果以及所述第一插值区域与所述第二插值区域的互相关结果;

第四指令执行模块,用于基于所述第一插值区域自相关结果以及第一插值区域与第二插值区域的互相关结果,确定目标点的运动速度。

根据本公开的第三方面,提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述任一所述的确定视频中目标点的运动速度的方法。

根据本申请的第四方面,提供一种电子设备,所述电子设备包括:

处理器;

用于存储所述处理器可执行指令的存储器;

所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现上述任一所述的确定视频中目标点的运动速度的方法。

在本公开提供的技术方案中,以包含了预设目标点的第一图像区域和第二图像区域进行计算,在计算过程中,首先计算了第一插值区域和第二插值区域,得到第一检测区域和第二检测区域对应第一图像区域与第二图像区域中的像素的位置的像素亮度,确保计算结果的准确,然后计算差值图像,并依据差值图像计算自相关结果和互相关结果,由于自相关结果和互相关结果包含了预设目标点的边缘信息,确保了目标点移动速度的准确性。

附图说明

通过结合附图对本公开实施例进行更详细的描述,本公开的上述以及其他目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。

图1是本公开一示例性实施例确定视频中目标点的运动速度的方法的流程示意图。

图2是本公开一示例性实施例确定视频中目标点的运动速度的方法计算亮度梯度集、第一插值区域和第二插值区域的流程示意图。

图3是本公开一示例性实施例确定视频中目标点的运动速度的方法计算第一检测区域和第二检测区域的流程示意图。

图4是本公开一示例性实施例确定视频中目标点的运动速度的方法计算第一插值区域和第二插值区域的流程示意图。

图5是本公开一示例性实施例确定视频中目标点的运动速度的方法计算亮度梯度集的流程示意图。

图6是本公开一示例性实施例确定视频中目标点的运动速度的方法计算运动速度的流程示意图。

图7是本公开一示例性实施例确定视频中目标点的运动速度的方法计算差值图像的流程示意图。

图8是本公开一示例性实施例确定视频中目标点的运动速度的方法计算自相关结果和互相关结果的流程示意图。

图9是本公开一示例性实施例确定视频中目标点的运动速度的方法中计算第一图像区域与第一检测区域对应的示意图;

图10是本公开一示例性实施例确定视频中目标点的运动速度的方法中计算插值的示意图。

图11是本公开一示例性实施例确定视频中目标点的运动速度的装置的模块示意图。

图12是本公开一示例性实施例确定视频中目标点的运动速度的装置的第一指令执行模块的模块示意图。

图13是本公开一示例性实施例确定视频中目标点的运动速度的装置的检测区域子模块的模块示意图。

图14是本公开一示例性实施例确定视频中目标点的运动速度的装置的插值区域子模块的模块示意图。

图15是本公开一示例性实施例确定视频中目标点的运动速度的装置的亮度梯度集子模块的模块示意图。

图16是本公开一示例性实施例确定视频中目标点的运动速度的装置的第四指令执行模块的模块示意图。

图17是本公开一示例性实施例确定视频中目标点的运动速度的装置的第二指令执行模块的模块示意图。

图18是本公开一示例性实施例确定视频中目标点的运动速度的装置的第三指令执行模块的模块示意图。

图19是本公开一示例性实施例提供的处理器架构。

图20是本公开一示例性实施例提供的电子设备的结构图。

具体实施方式

下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。

申请概述

在确定视频中的物体运动速度时,可以选用的处理方法有多种,例如,基于梯度的方法、基于匹配的方法、基于能量的方法和基于相位的方法等,上述的各方法中,其计算过程通常会较为复杂,同时,由于其约束条件较为宽松,导致其计算的物体运动速度难以得到精确值。本公开的实施例中,提供了一种确定视频中目标点的运动速度的方法,包括:

在当前帧图像中确定预设目标点所在的第一图像区域并预测所述预设目标点在所述当前帧图像的下一帧图像中的第二图像区域;

确定所述第一检测区域的亮度梯度集、所述第一图像区域对应的第一插值区域以及所述第二图像区域对应的第二插值区域;

确定所述第一插值区域和所述第二插值区域之间的差值图像;

确定第一插值区域的自相关结果以及所述第一插值区域与所述第二插值区域的互相关结果;

基于所述第一插值区域自相关结果以及第一插值区域与第二插值区域的互相关结果,确定目标点的运动速度。

在本公开提供的技术方案中,以包含了预设目标点的第一图像区域和第二图像区域进行计算,在计算过程中,计算了第一插值区域和第二插值区域,得到第一检测区域和第二检测区域对应第一图像区域与第二图像区域中的像素的位置的像素亮度,确保计算结果的准确。然后计算差值图像,并依据差值图像计算自相关结果和互相关结果,由于自相关结果和互相关结果包含了预设目标点的边缘信息,确保了目标点移动速度的准确性。。

示例性方法

图1是本公开一示例性实施例提供的确定视频中目标点的运动速度的方法。本实施例可应用在电子设备上,如图1所示,包括如下步骤:

步骤100,在当前帧图像中确定预设目标点所在的第一图像区域并预测所述预设目标点在所述当前帧图像的下一帧图像中的第二图像区域;

在一些实施例中,当前帧可以指待处理视频中任意一帧图像,待处理视频可以是实时拍摄的视频,也可以是在存储设备中存储的视频。下一帧图像是指在当前帧图像之后且与下一帧图像相邻的一帧图像。预设目标点是指需要求取运动速度的目标点,例如视频中运动车辆的角点,奔跑的动物的的角点等。第一图像区域是指在当前帧图像内以预设目标点为中心点,以与中心点距离在指定距离以内的像素点确定的图像区域。该指定距离可以依据例如视频中的物体大小或视频焦距的远近等条件确定。第二图像区域是指在下一帧图像内以预测的目标点为为中心点,以与中心点距离在指定距离以内的像素点确定的图像区域。在预测下一帧图像中的第二图像区域时,例如可以选取与当前帧图像中第一图像区域位置相同的区域,也可以依据当前帧图像中的目标点与前一帧图像中的目标点的偏移向量进行预测。

步骤200,确定所述第一检测区域的亮度梯度集、所述第一图像区域对应的第一插值区域以及所述第二图像区域对应的第二插值区域;

在一些实施例中,亮度梯度集是指第一图像区域内相邻像素之间的亮度差值,第一插值区域是指将第一图像区域进行缩放,对缩放得到的第一检测区域进行插值得到的第一插值区域,同理,第二插值区域是指对第二图像区域进行缩放,对缩放得到的第二检测区域进行插值得到的第二插值区域。其中,对第一图像区域或第二图像区域的缩放例如可以采用对图像进行降采样或上采样的方式进行缩放,对第一检测区域获第二检测区域进行插值例如可以采用最近邻插值、双线性插值、双平方插值或双立方插值的方式进行插值。

步骤300,确定所述第一插值区域和所述第二插值区域之间的差值图像;

在一些实施例中,差值图像的确定过程中,首先将第一插值区域的各像素亮度与第二插值区域的对应位置的像素亮度的做差值运算,得到第一插值区域与第二插值区域对应位置的像素亮度差值,然后将像素亮度差值作为对应位置的像素亮度组成的差值图像。

步骤400,确定第一插值区域的自相关结果以及所述第一插值区域与所述第二插值区域的互相关结果;

在一些实施例中,将亮度梯度集中的各元素进行乘累加运算,得到第一插值区域的自相关结构,第一插值区域的自相关结果是用于表征第一插值区域内沿竖直方向和水平方向的像素亮度的变化规律。将差值图像与亮度梯度进行乘累加运算,得到第一插值区域与第二插值区域的互相关结果,第一插值区域与第二插值区域的互相关结果是用于表征第二插值区域相对于第一插值区域来说在水平方向和水平方向上的像素亮度变化规律。

步骤500,基于所述第一插值区域自相关结果以及第一插值区域与第二插值区域的互相关结果,确定目标点的运动速度。

在一些实施例中,由于图像自相关结果表征了第一插值区域在水平方向和竖直方向上的像素亮度变化规律,而互相关结果表征了第一插值区域和第二插值区域之间在水平方向和竖直方向上的像素亮度变化规律,将自相关结果作为目标点移动一个像素的像素亮度变化程度,将互相关结果作为目标点第一插值区域和第二插值区域之间总的像素亮度变化程度,依据自相关结果和互相关结果,在自相关结果中确定的像素亮度变化程度与互相关中像素亮度变化程度相似的方向,即大致确定第二插值区域相对于第一插值区域的偏移方向。使第二插值区域沿该偏移方向移动,直到第一插值区域和第二插值区域之间的像素亮度差值最小时,即可确定第一插值区域与第二插值区域之间的偏移向量,此时,由于两帧图像之间为相邻的图像,可以将该偏移向量作为目标点的运动速度。

在本实施例提供的技术方案中,以包含了预设目标点的第一图像区域和第二图像区域进行计算,在计算过程中,首先计算了第一插值区域和第二插值区域,得到第一检测区域和第二检测区域对应第一图像区域与第二图像区域中的像素的位置的像素亮度,确保计算结果的准确,然后计算差值图像,并依据差值图像计算自相关结果和互相关结果,由于自相关结果和互相关结果包含了预设目标点的边缘信息,确保了目标点移动速度的准确性。

如图2所示,在图1所示的实施例的基础上,步骤200可以包括如下步骤:

步骤210,分别对所述第一图像区域与所述第二图像区域按照预定尺度进行缩放,得到第一检测区域和第二检测区域;

在一些实施例中,预定尺度是依据目标点运动速度计算方法设定的,与计算过程中的约束条件有关,例如,以目标点运动速度计算方法具体为L-K光流算法为例进行示例性说明,在该L-K光流算法中,其约束条件是以目标点在相邻两帧图像之间进行小位移移动,从而,目标点周围的像素亮度在相邻两帧图像中的亮度是接近恒定的,当目标点在当前帧图像与下一帧图像中不满足小位移移动时,需要将当前帧图像以及下一帧图像进行缩放,直到目标点在当前帧图像与下一帧图像中满足小位移移动的约束条件。如图9所示,以4*4的第一图像区域缩放为2*2的第一检测区域为例,可以将附图中11,12,13,14四个像素的亮度进行加权计算,得到附图中位置1的像素值,在加权计算过程中,例如可以将11,12,13,14四个像素的亮度求平均值,将该平均值作为位置1的像素值。

步骤220,基于所述第一检测区域的各像素亮度,确定所述第一检测区域的亮度梯度集;

在一些实施例中,在确定第一检测区域的亮度梯度集时,在第一检测区域中的确定预定像素亮度以及与预定像素在位于同一纵向坐标且与所述预定像素相邻的水平相邻像素亮度,将预定的像素亮度与水平相邻像素亮度相减检测区域即得到水平方向的亮度梯度,在第一检测区域中确定预定的像素亮度以及与预定像素位于同一水平坐标且与预定像素相邻的竖直相邻像素亮度,将预定的像素亮度与竖直相邻像素亮度检测区域相减即得到竖直方向的亮度梯度。竖直方向的亮度梯度和水平方向的亮度梯度即构成了亮度梯度集。

步骤230,分别对第一检测区域与第二检测区域按照各自对应的预设插值权重进行插值,得到第一插值区域与第二插值区域。

在一些实施例中,由于在缩放过程中,第一图像区域和第二图像区域边界也会进行缩放,在缩放完成后,第一图像区域和第二图像区域中的各像素可能会对应于第一检测区域和第二检测区域的非整数坐标上,因此,需要对第一检测区域和第二检测区域进行插值,得到第一检测区域和第二检测区域对应第一图像区域与第二图像区域中的像素的位置的像素亮度。预设的差值权重是依据具体的插值方法进行设定的,例如,采用线性插值的方式进行插值时,依据插值位置与相邻两个像素的距离确定插值权重,距离插值位置进的像素权重值较高,距离插值位置远的像素权重值较低。如图10所示,以第一图像区域中的预定像素,例如目标点对应的像素,对应在第一检测区域的301处的圆点位置为例,该圆点301在水平方向上与像素1和3距离较近,在竖直方向上距离像素3和4较近。在插值时,可以先进行水平方向的差值,以像素4乘以较高的权重值,以像素3乘以较低的权重值,并将结果相加,得到302位置的像素亮度;以像素1乘以较高的权重值,以像素2乘以较低的权重值,并将结果相加,得到303位置的像素亮度;再以303的像素亮度乘以较低的权重值,以302的像素亮度乘以较高的权重值,并将结果相加,得到303位置的像素亮度。

上述实施例中,上述实施例中,将第一图像区域和第二图像区域进行缩放,得到尺寸较小的第一检测区域和第二检测区域,减小第一图像区域中的目标点与第二区域中的目标点的间隔的像素个数,使得第一图像区域和第二图像区域能够满足计算视频中目标点的运动速度的约束条件。

在上述图2所示的实施例基础上,如图3所示,步骤220还可以包括如下的步骤:

步骤221,基于所述第一图像区域,确定预定的第一缩放权重向量;

在一些实施例中,确定预定的第一缩放权重向量包括确定第一缩放权重向量的元素个数以及各元素的值,元素的个数依据第一图像区域的尺度以及第一检测区域的预定尺度进行确定;各元素的值依据缩放过程中所采用的采样方式进行确定,例如,当对图像进行缩小处理时,可以采用高斯核进行实现,将高斯核作为第一缩放权重向量与第一图像区域进行相乘运算,得到缩小后的图像区域。

步骤222,依据所述第一缩放权重向量对所述第一图像区域进行缩放,确定所述第一检测区域;

在一些实施例中,依据第一缩放权重向量对第一图像区域进行缩放的过程是将第一缩放权重向量与第一图像区域的像素亮度所构成的矩阵相乘的过程,即是一个向量与矩阵相乘的过程,相乘之后会得到一个新的矩阵,将得到的新的矩阵中的元素作为像素亮度,即得到第一检测区域。例如,以一个16*16的第一图像区域缩放至8*8的第一检测区域的过程为例,在缩放过程中,将16*16的第一图像区域划分为64个2*2的子区域,以每个子区域中的像素亮度的平均值作为缩放后的像素亮度,此时,第一缩放权重向量包括两个权重向量,每个权重向量包括两个元素,每个元素都为1/4;将缩放权重向量与子区域点乘,得到子区域中的四个像素亮度的平均值,然后将该平均值作为缩放后的第一检测区域的像素亮度,将该像素亮度填充在该子区域对应第一图像区域的位置。对多个子区域进行上述的计算后,即将16*16的第一图像区域缩放至第一检测区域。

步骤223,基于所述第二图像区域,确定预定的第二缩放权重向量;

在一些实施例中,确定预定的第二缩放权重向量包括确定第二缩放权重向量的元素个数以及各元素的值,元素的个数依据第二图像区域的尺度以及第二检测区域的预定尺度进行确定;各元素的值依据缩放过程中所采用的插值方式进行确定,例如,可以采用与步骤221中预设插值权重的方式进行确定。

步骤224,依据所述第二缩放权重向量对所述第二图像区域进行缩放,确定所述第二检测区域。

在一些实施例中,依据第二缩放权重向量对第二图像区域进行缩放的过程是将第二缩放权重向量与第二图像区域的像素亮度所构成的矩阵相乘的过程,即是一个向量与矩阵相乘的过程,相乘之后会得到一个新的矩阵,将得到的新的矩阵中的元素作为像素亮度,即得到第二检测区域。具体的缩放过程例如可以按照步骤222中的计算将一个16*16的第一图像区域缩放至8*8的第一检测区域的方式进行计算。

上述实施例中,采用权重向量与第一图像区域和第二图像区域相乘,得到第一检测区域和第二检测区域,其计算过程简单快捷。

在上述图2所示的实施例的基础上,如图4所示,步骤230还可以包括如下步骤:

步骤231,基于所述第一检测区域,确定预定的第一插值权重向量;

在一些实施例中,确定预定的第一插值权重向量包括确定第一插值权重向量的元素个数以及各元素的值,元素的个数依据第一检测区域的尺度以及第一插值区域的预定尺度进行确定;例如,以双线性插值的方法进行插值,即在水平方向和竖直方向各进行一次线性插值,插值权重是依据插值位置与相邻的四个像素点的距离,例如,当第一检测区域的尺寸为第一图像区域的尺寸的1/16时,第一图像区域中的目标点的坐标为(3,3),在缩放之后,目标点对应第一检测区域中的坐标为(3/16,3/16);此时,坐标为(3/16,3/16)的位置周围的四个像素的坐标分别为(0,0),(0,1),(1,0)和(1,1),此时,依据四个像素的坐标与目标点对应的位置的距离,从而确定水平方向的插值向量包括两个元素,两个元素分别为3/16和13/16,竖直方向的差值向量包括两个元素,两个元素分别为3/16和13/16。

步骤232,基于所述第一插值权重向量对所述第一图像区域进行插值,确定第一插值区域;

在一些实施例中,依据第一插值权重向量对第一检测区域进行插值的过程是将第一插值权重向量与第一检测区域的像素亮度所构成的矩阵相乘的过程,即是一个向量与矩阵相乘的过程,相乘之后会得到一个新的矩阵,将得到的新的矩阵中的元素作为像素亮度,即得到第一插值区域。例如,仍以步骤231中的双线性插值的方法进行计算,在计算过程中,首先进行水平方向的插值,以坐标分别为(0,0),(0,1),(1,0)和(1,1)的像素亮度分别为X

步骤233,基于所述第二检测区域,确定预定的第二插值权重向量;

在一些实施例中,确定预定的第二插值权重向量包括确定第二插值权重向量的元素个数以及各元素的值,元素的个数依据第二检测区域的尺度以及第二插值区域的预定尺度进行确定;各元素的值依据插值过程中所采用的插值方式进行确定,例如,可以采用与步骤231中预设插值权重的方式进行确定。

步骤234,基于所述第二插值权重向量对所述第二检测区域进行插值,确定第二插值区域。

在一些实施例中,依据第二插值权重向量对第二检测区域进行插值的过程是将第二插值权重向量与第二检测区域的像素亮度所构成的矩阵相乘的过程,即是一个向量与矩阵相乘的过程,相乘之后会得到一个新的矩阵,将得到的新的矩阵中的元素作为像素亮度,即得到第二插值区域。例如可以采用与步骤232中相似的方式进行计算。

在上述的实施例中,由于对第一图像区域和第二图像区域进行缩放后得到第一检测区域和第二检测区域,此时,第一图像区域和第二图像区域中的像素在第一检测区域和第二检测区域中可能会对应在非整数的坐标值上,为了确保计算结果的准确性,需要对目标点所在的坐标值位置进行插值,得到第一插值区域和第二插值区域。

在上述图2所示的实施例基础上,如图5所示,步骤210还可以包括如下步骤:

步骤211,基于所述第一检测区域,确定预定的梯度提取权重向量;

在一些实施例中,梯度提取权重向量是为了计算第一检测区域的水平方向或竖直方向上的亮度梯度,即使相邻两行像素求差值或使相邻两列像素求差值,因此,其元素主要是以1和-1为主;当然,也可以采用现有的权重向量,例如Sobel算子中的权重向量。

步骤212,将所述梯度提取权重向量与所述第一图像区域的各像素亮度形成的矩阵相乘,确定所述第一检测区域的亮度梯度集。

在一些实施例中,依据梯度提取权重向量对第一图像区域的各像素亮度形成的矩阵相乘,相乘之后会得到一个新的矩阵,将得到的新的矩阵中的元素作为像素亮度,即得到亮度梯度集。

在本实施例中,亮度梯度集表征了当前的第一检测区域移动一个像素距离时的像素亮度变化程度,计算亮度梯度集能够为后续计算偏移向量的过程提供计算基础,大大简化偏移向量的计算过程。

在上述图1所示的实施例基础上,如图6所示,步骤500还可以包括如下的步骤:

步骤510,基于所述第一插值区域的自相关结果以及第一插值区域与第二插值区域的互相关结果,确定所述目标点的偏移向量;

在一些实施例中,由于图像自相关结果表征了第一插值区域在水平方向和竖直方向上的像素亮度变化规律,而互相关结果表征了第一插值区域和第二插值区域之间在水平方向和竖直方向上的像素亮度变化规律,将自相关结果作为目标点移动一个像素的像素亮度变化程度,将互相关结果作为目标点第一插值区域和第二插值区域之间总的像素亮度变化程度,计算互相关结果与自相关结果的倍数关系即可可以依据自相关结果和互相关结果大致确定第二插值区域相对于第一插值区域偏移方向以及距离。

步骤520,基于所述偏移向量,确定所述目标点在下一帧图像中的预测位置;

在一些实施例中,基于偏移向量,使第二插值区域沿该偏移向量移动,在移动过程中,偏移向量的起点是第二插值区域的当前的位置,第二插值区域的终点是第二插值区域新的预测位置,在下一帧图像中的得到新的预测位置,基于新的预测位置,确定一个新的第二插值区域。

步骤530,基于所述当前帧图像中的目标点位置与所述预测位置,确定所述当前帧图像中的目标点位置与所述预测位置的像素的亮度差值;

在一些实施例中,基于步骤520中预测位置确定的第二插值区域,计算当前帧图像中的目标点位置与预测位置的像素的亮度差值时,无论对于是当前帧图像中的目标点位置还是下一帧图像中的预测位置的像素,周围的像素都是包含了边缘信息的像素,因此,在计算的过程中,通常采用第一插值区域与第二插值区域的像素亮度差值来表征目标点位置与预测位置的像素的亮度差值。

步骤540,基于所述亮度差值、预定的阈值以及偏移向量,确定所述目标点的运动速度。

在一些实施例中,在计算过程中,如果像素亮度差值小于预定的阈值,即可将当前的预测位置作为下一帧图像中的目标点位置,依据下一帧图像中的目标点位置与当前帧图像中的目标点位置,确定一个偏移向量,该偏移向量的方向是以当前帧图像中的目标点位置指向下一帧图像中的目标点位置。由于当前帧图像与下一帧图像是相邻的两帧图像,因此,可以采用该偏移向量直接作为目标点的移动速度。在上述的预定阈值是依据目标点运动速度计算方法设定的,与计算过程中的约束条件有关,例如,以L-K光流算法为例,在该算法中,其约束条件是以目标点在相邻两帧图像之间进行小位移移动,从而,目标点周围的像素亮度在相邻两帧图像中的亮度是接近恒定的,在选择预定的阈值时,可以依据该约束条件中亮度接近恒定的约束方式进行选择,例如,当亮度差值低于5是认为亮度是接近恒定的,此时,选择预定阈值为5。

本实施方式中,依据亮度差值与设定的阈值进行比较,当亮度差值小于预定阈值时,即可确定目标点的移动速度,其计算过程简便快捷,同时在计算亮度差值时,以第一插值区域和第二插值区域进行计算,包含了目标点的边缘信息,能够更加准确的计算目标点的移动速度。

在上述图1所示的实施例的基础上,如图7所示,步骤300还可以包括如下步骤:

步骤310,基于第一插值区域与第二插值区域,确定第一插值区域的像素亮度对应的第一矩阵和第二插值区域的像素亮度对应的第二矩阵;

在一些实施例中,将第一插值区域的像素亮度值作为元素填充值与第一插值区域对应的位置中,得到与第一插值区域的尺寸相同的第一矩阵,将第二插值区域的像素亮度值作为元素填充值与第二插值区域对应的位置中,得到与第二插值区域的尺寸相同的第二矩阵。

步骤320,将所述第二矩阵与第一矩阵相减,确定第三矩阵;

在一些实施例中,将第二矩阵中的元素与第一矩阵中对应的元素相减,然后再将相减的结果作为元素填充值与第一矩阵和第二矩阵的尺寸相同的矩阵中,即可形成第三矩阵。例如,以第二矩阵中第一行第一列的元素与第一矩阵中的第一行第一列相减,相减得到的结果即为第三矩阵的一个元素,将该元素填充至第三矩阵位置为第三矩阵的第一行第一列。依次计算并填充第三矩阵的全部元素即可得到第三矩阵。

步骤330,基于所述第三矩阵,确定所述第一插值区域和所述第二插值区域之间的差值图像。

在一些实施例中,将第三矩阵中的元素作为像素的亮度值,并将像素亮度值填充到与第三矩阵尺寸相同的图像区域内,即形成差值图像。

上述实施例中,采用矩阵相减的方式计算差值图像,该计算方式中,采用第一插值区域和第二插值区域的亮度亮度作为第一矩阵和第二矩阵的元素,由于第一插值区域和第二插值区域中的像素包括了目标点周围的像素,因此,第一矩阵中和第二矩阵中的元素也包含了目标点的边缘信息,通过本步骤进行计算得到的差值图像,包含了目标点的边缘信息,有利于后续对于目标点运动速度的精确计算。

在上述图1所示的实施例基础上,所述亮度梯度集包括水平方向亮度梯度矩阵和竖直方向亮度梯度矩阵;如图8所示,步骤400还可以包括如下步骤:

步骤410,基于所述水平方向亮度梯度矩阵和竖直方向亮度梯度矩阵进行第一乘累加运算;

在一些实施例中,第一乘累加运算按照如下的方式进行计算:

A11=sum(Ix*Ix);A12=sum(Ix*Iy);A12=sum(Iy*Iy);

其中,Ix为同一竖直坐标上的相邻的像素之间亮度的差值;

Iy为同一水平坐标上的相邻的像素之间亮度的差值;

A11为Ix的乘累加结果;A12为Ix和Iy的乘结果;A12为Iy的乘累加结果。

步骤420,基于所述第一乘累加运算的结果,确定所述第一插值区域的自相关结果;

在一些实施例中,采用如下的方式计算第一插值区域的自相关结果:

其中,A11、A12和A12为步骤410计算的结果;

D为第一插值区域的自相关结果。

步骤430,基于所述水平方向亮度梯度矩阵、竖直方向亮度梯度矩阵和差值图像进行第二乘累加运算;

在一些实施例中,第二乘累加运算按照如下的方式进行计算:

b1=sum(diff*Ix);b2=sum(diff*Iy)

其中,Ix为同一竖直坐标上的相邻的像素之间亮度的差值;

Iy为同一水平坐标上的相邻的像素之间亮度的差值;

diff为第一插值区域与第二插值区域的差值图像;

b1为差值图像与Ix的乘累加结果,

b2为差值图像与Iy的乘累加结果。

步骤440,基于所述第二乘累加运算的结果,确定第一插值区域与第二插值区域的互相关结果。

在一些实施例中,互相关结果按照如下的方式进行计算:

其中,b1和b2为步骤430中计算的结果;B为第一插值区域与第二插值区域的互相关结果。

在上述实施例中,计算了当前帧图像中的第一插值区域的自相关结果,从而标定了第一插值区域移动一个像素的距离时的像素亮度变化程度,计算了第一插值区域和第二插值区域的互相关结果,得到了第二插值区域相对于第一插值区域的像素亮度变化程度。为后续计算偏移向量提供了基础。

如图17所示,在本公开的一种示例性实施例中,提供了一种按照本公开的确定视频中的物体运动速度的方法设计的一种指令集架构,该指令集架构中包括指令控制模块17200,第一指令执行模块9200,第二指令执行模块9300,第三指令执行模块9400,第四指令执行模块9500以及存储模块17100。其中,第一指令执行模块9200主要包括计算矩阵与向量的乘法的电路,其中,第一指令执行模块9200在计算矩阵与向量的乘法时,可以对矩阵或向量的元素个数以及各元素的数值等参数进行配置。第二指令执行模块9300主要包括计算矩阵减法的电路,第三指令执行模块9400主要包括计算乘累加运算的电路,第四指令执行模块9500主要包括进行标量计算的电路,例如加法器、减法器或比较器等。指令控制模块17200用于控制数据由存储模块17100中载入芯片的寄存器中,数据载入后,控制第一指令执行模块9200,第二指令执行模块9300,第三指令执行模块9400或第四指令执行模块9500对该数据进行处理,并将处理完毕后的数据存储至存储模块17100。例如,载入第一插值权重向量和第一检测区域的像素亮度构成的矩阵分别载入到向量寄存器和矩阵寄存器中,然后控制第一指令执行模块9200对向量寄存器和矩阵寄存器中第一插值权重向量和第一检测区域进行向量与矩阵相乘的运算,从而得到一个新的矩阵,该将得到的新的矩阵中的元素作为像素亮度,即得到第二插值区域。同理,还可以控制第一指令执行模块9200完成亮度梯度集计算、第一检测区域的计算、第二检测区域的计算和第二插值区域的计算。又例如,载入第一插值区域和第二插值区域的像素亮度形成的矩阵,再控制第二指令执行模块9300完成两个矩阵相减的计算,得到第三个矩阵,依据该第三个矩阵中的元素确定像素亮度,即可得到差值图像。又例如,将水平亮度梯度形成的矩阵和竖直亮度梯度形成的矩阵载入到矩阵寄存器中,再控制第三指令执行模块9400进行矩阵点乘的计算,即可完成自相关计算,同理,可以完成互相关计算。又例如,控制第四指令执行模块9500将预测的第二插值区域和第一插值区域的像素亮度相减,将相减结果与前一次相减结果相比较或者与预定阈值比较,从而确定下一帧图像中第二插值区域的位置,第四指令执行模块9500均是进行的标量计算,包括加法、减法以及比较等。上述的计算过程中,将同一种类型的计算集中在同一个指令执行模块中,即,在电路设计过程中,每种计算类型可以设计一个指令执行模块,采用四个指令执行模块即可分别计算四种类型的计算,能够简化硬件电路的设计,并且,由于每个指令模块执行一种类型的计算,可以适用于多种包含上述计算类型的算法。

如图11所示,本实施例提供了一种确定视频中目标点的运动速度的装置,包括:

窗口确定模块9100,用于在当前帧图像中确定预设目标点所在的第一图像区域并预测所述预设目标点在所述当前帧图像的下一帧图像中的第二图像区域;

在一些实施例中,当前帧可以指待处理视频中任意一帧图像,待处理视频可以是实时拍摄的视频,也可以是在存储设备中存储的视频。下一帧图像是指在当前帧图像之后且与下一帧图像相邻的一帧图像。预设目标点是指需要求取运动速度的目标点,例如视频中运动车辆的角点,奔跑的动物的的角点等。第一图像区域是指在当前帧图像内以预设目标点为中心点,以与中心点距离在指定距离以内的像素点确定的图像区域。该指定距离可以依据例如视频中的物体大小或视频焦距的远近等条件确定。第二图像区域是指在下一帧图像内以预测的目标点为为中心点,以与中心点距离在指定距离以内的像素点确定的图像区域。在预测下一帧图像中的第二图像区域时,例如可以选取与当前帧图像中第一图像区域位置相同的区域,也可以依据当前帧图像中的目标点与前一帧图像中的目标点的偏移向量进行预测。

第一指令执行模块9200,用于确定所述第一检测区域的亮度梯度集、所述第一图像区域对应的第一插值区域以及所述第二图像区域对应的第二插值区域;

在一些实施例中,亮度梯度集是指第一图像区域内相邻像素之间的亮度差值,第一插值区域是指将第一图像区域进行缩放,对缩放得到的第一检测区域进行插值得到的第一插值区域,同理,第二插值区域是指对第二图像区域进行缩放,对缩放得到的第二检测区域进行插值得到的第二插值区域。其中,对第一图像区域或第二图像区域的缩放例如可以采用对图像进行降采样或上采样的方式进行缩放,对第一检测区域获第二检测区域进行插值例如可以采用最近邻插值、双线性插值、双平方插值或双立方插值的方式进行插值。

第二指令执行模块9300,用于确定所述第一插值区域和所述第二插值区域之间的差值图像;

在一些实施例中,差值图像的确定过程中,首先将第一插值区域的各像素亮度与第二插值区域的对应位置的像素亮度的做差值运算,得到第一插值区域与第二插值区域对应位置的像素亮度差值,然后将像素亮度差值作为对应位置的像素亮度组成的差值图像。

第三指令执行模块9400,用于确定第一插值区域的自相关结果以及所述第一插值区域与所述第二插值区域的互相关结果;

在一些实施例中,将亮度梯度集中的各元素进行乘累加运算,得到第一插值区域的自相关结构,第一插值区域的自相关结果是用于表征第一插值区域内沿竖直方向和水平方向的像素亮度的变化规律。将差值图像与亮度梯度进行乘累加运算,得到第一插值区域与第二插值区域的互相关结果,第一插值区域与第二插值区域的互相关结果是用于表征第二插值区域相对于第一插值区域来说在水平方向和水平方向上的像素亮度变化规律。

第四指令执行模块9500,用于基于所述第一插值区域自相关结果以及第一插值区域与第二插值区域的互相关结果,确定目标点的运动速度。

在一些实施例中,由于图像自相关结果表征了第一插值区域在水平方向和竖直方向上的像素亮度变化规律,而互相关结果表征了第一插值区域和第二插值区域之间在水平方向和竖直方向上的像素亮度变化规律,将自相关结果作为目标点移动一个像素的像素亮度变化程度,将互相关结果作为目标点第一插值区域和第二插值区域之间总的像素亮度变化程度,依据自相关结果和互相关结果,在自相关结果中确定的像素亮度变化程度与互相关中像素亮度变化程度相似的方向,即大致确定第二插值区域相对于第一插值区域的偏移方向。使第二插值区域沿该偏移方向移动,直到第一插值区域和第二插值区域之间的像素亮度差值最小时,即可确定第一插值区域与第二插值区域之间的偏移向量,此时,由于两帧图像之间为相邻的图像,可以将该偏移向量作为目标点的运动速度。

在本实施例提供的技术方案中,以包含了预设目标点的第一图像区域和第二图像区域进行计算,在计算过程中,首先计算了第一插值区域和第二插值区域,得到第一检测区域和第二检测区域对应第一图像区域与第二图像区域中的像素的位置的像素亮度,确保计算结果的准确,然后计算差值图像,并依据差值图像计算自相关结果和互相关结果,由于自相关结果和互相关结果包含了预设目标点的边缘信息,确保了目标点移动速度的准确性。

如图12所示,在图11所示的实施例的基础上,所述第一指令执行模块9200包括:

检测区域子模块9210,用于分别对所述第一图像区域与所述第二图像区域按照预定尺度进行缩放,得到第一检测区域和第二检测区域;

在一些实施例中,预定尺度是依据目标点运动速度计算方法设定的,与计算过程中的约束条件有关,例如,以目标点运动速度计算方法具体为L-K光流算法为例进行示例性说明,在该L-K光流算法中,其约束条件是以目标点在相邻两帧图像之间进行小位移移动,从而,目标点周围的像素亮度在相邻两帧图像中的亮度是接近恒定的,当目标点在当前帧图像与下一帧图像中不满足小位移移动时,需要将当前帧图像以及下一帧图像进行缩放,直到目标点在当前帧图像与下一帧图像中满足小位移移动的约束条件。如图9所示,以4*4的第一图像区域缩放为2*2的第一检测区域为例,可以将附图中11,12,13,14四个像素的亮度进行加权计算,得到附图中位置1的像素值,在加权计算过程中,例如可以将11,12,13,14四个像素的亮度求平均值,将该平均值作为位置1的像素值。

亮度梯度集子模块9220,用于基于所述第一检测区域的各像素亮度,确定所述第一检测区域的亮度梯度集;

在一些实施例中,在确定第一检测区域的亮度梯度集时,在第一检测区域中的确定预定像素亮度以及与预定像素在位于同一纵向坐标且与所述预定像素相邻的水平相邻像素亮度,将预定的像素亮度与水平相邻像素亮度相减检测区域即得到水平方向的亮度梯度,在第一检测区域中确定预定的像素亮度以及与预定像素位于同一水平坐标且与预定像素相邻的竖直相邻像素亮度,将预定的像素亮度与竖直相邻像素亮度检测区域相减即得到竖直方向的亮度梯度。竖直方向的亮度梯度和水平方向的亮度梯度即构成了亮度梯度集。

插值区域子模块9230,用于分别对第一检测区域与第二检测区域按照各自对应的预设插值权重进行插值,得到第一插值区域与第二插值区域。

在一些实施例中,由于在缩放过程中,第一图像区域和第二图像区域边界也会进行缩放,在缩放完成后,第一图像区域和第二图像区域中的各像素可能会对应于第一检测区域和第二检测区域的非整数坐标上,因此,需要对第一检测区域和第二检测区域进行插值,得到第一检测区域和第二检测区域对应第一图像区域与第二图像区域中的像素的位置的像素亮度。预设的差值权重是依据具体的插值方法进行设定的,例如,采用线性插值的方式进行插值时,依据插值位置与相邻两个像素的距离确定插值权重,距离插值位置进的像素权重值较高,距离插值位置远的像素权重值较低。如图10所示,以第一图像区域中的预定像素,例如目标点对应的像素,对应在第一检测区域的301处的圆点位置为例,该圆点301在水平方向上与像素1和3距离较近,在竖直方向上距离像素3和4较近。在插值时,可以先进行水平方向的差值,以像素4乘以较高的权重值,以像素3乘以较低的权重值,并将结果相加,得到302位置的像素亮度;以像素1乘以较高的权重值,以像素2乘以较低的权重值,并将结果相加,得到303位置的像素亮度;再以303的像素亮度乘以较低的权重值,以302的像素亮度乘以较高的权重值,并将结果相加,得到303位置的像素亮度。

上述实施例中,上述实施例中,将第一图像区域和第二图像区域进行缩放,得到尺寸较小的第一检测区域和第二检测区域,减小第一图像区域中的目标点与第二区域中的目标点的间隔的像素个数,使得第一图像区域和第二图像区域能够满足计算视频中目标点的运动速度的约束条件。

在上述图12所示的实施例基础上,如图13所示,所述检测区域子模块9220包括:

第一缩放向量单元9221,用于基于所述第一图像区域,确定预定的第一缩放权重向量;

在一些实施例中,确定预定的第一缩放权重向量包括确定第一缩放权重向量的元素个数以及各元素的值,元素的个数依据第一图像区域的尺度以及第一检测区域的预定尺度进行确定;各元素的值依据缩放过程中所采用的采样方式进行确定,例如,当对图像进行缩小处理时,可以采用高斯核进行实现,将高斯核作为第一缩放权重向量与第一图像区域进行相乘运算,得到缩小后的图像区域。

第一缩放运算单元9222,用于依据所述第一缩放权重向量对所述第一图像区域进行缩放,确定所述第一检测区域;

在一些实施例中,依据第一缩放权重向量对第一图像区域进行缩放的过程是将第一缩放权重向量与第一图像区域的像素亮度所构成的矩阵相乘的过程,即是一个向量与矩阵相乘的过程,相乘之后会得到一个新的矩阵,将得到的新的矩阵中的元素作为像素亮度,即得到第一检测区域。例如,以一个16*16的第一图像区域缩放至8*8的第一检测区域的过程为例,在缩放过程中,将16*16的第一图像区域划分为64个2*2的子区域,以每个子区域中的像素亮度的平均值作为缩放后的像素亮度,此时,第一缩放权重向量包括两个权重向量,每个权重向量包括两个元素,每个元素都为1/4;将缩放权重向量与子区域点乘,得到子区域中的四个像素亮度的平均值,然后将该平均值作为缩放后的第一检测区域的像素亮度,将该像素亮度填充在该子区域对应第一图像区域的位置。对多个子区域进行上述的计算后,即将16*16的第一图像区域缩放至第一检测区域。

第二缩放向量单元9223,用于基于所述第二图像区域,确定预定的第二缩放权重向量;

在一些实施例中,确定预定的第二缩放权重向量包括确定第二缩放权重向量的元素个数以及各元素的值,元素的个数依据第二图像区域的尺度以及第二检测区域的预定尺度进行确定;各元素的值依据缩放过程中所采用的插值方式进行确定,例如,可以采用与插值区域子模块9230中预设插值权重的方式进行确定。

第二缩放运算单元9224,用于依据所述第二缩放权重向量对所述第二图像区域进行缩放,确定所述第二检测区域。

在一些实施例中,依据第二缩放权重向量对第二图像区域进行缩放的过程是将第二缩放权重向量与第二图像区域的像素亮度所构成的矩阵相乘的过程,即是一个向量与矩阵相乘的过程,相乘之后会得到一个新的矩阵,将得到的新的矩阵中的元素作为像素亮度,即得到第二检测区域。具体的缩放过程例如可以按照第一缩放运算单元9222中的计算将一个16*16的第一图像区域缩放至8*8的第一检测区域的方式进行计算。

上述实施例中,采用权重向量与第一图像区域和第二图像区域相乘,得到第一检测区域和第二检测区域,其计算过程简单快捷。

在图12所示的实施例基础上,如图14所示,所述插值区域子模块9230包括:

第一插值向量单元9231,用于基于所述第一检测区域,确定预定的第一插值权重向量;

在一些实施例中,确定预定的第一插值权重向量包括确定第一插值权重向量的元素个数以及各元素的值,元素的个数依据第一检测区域的尺度以及第一插值区域的预定尺度进行确定;例如,以双线性插值的方法进行插值,即在水平方向和竖直方向各进行一次线性插值,插值权重是依据插值位置与相邻的四个像素点的距离,例如,当第一检测区域的尺寸为第一图像区域的尺寸的1/16时,第一图像区域中的目标点的坐标为(3,3),在缩放之后,目标点对应第一检测区域中的坐标为(3/16,3/16);此时,坐标为(3/16,3/16)的位置周围的四个像素的坐标分别为(0,0),(0,1),(1,0)和(1,1),此时,依据四个像素的坐标与目标点对应的位置的距离,从而确定水平方向的插值向量包括两个元素,两个元素分别为3/16和13/16,竖直方向的差值向量包括两个元素,两个元素分别为3/16和13/16。

第一插值运算单元9232,用于基于所述第一插值权重向量对所述第一图像区域进行插值,确定第一插值区域;

在一些实施例中,依据第一插值权重向量对第一检测区域进行插值的过程是将第一插值权重向量与第一检测区域的像素亮度所构成的矩阵相乘的过程,即是一个向量与矩阵相乘的过程,相乘之后会得到一个新的矩阵,将得到的新的矩阵中的元素作为像素亮度,即得到第一插值区域。例如,仍以第一插值向量单元9231中的双线性插值的方法进行计算,在计算过程中,首先进行水平方向的插值,以坐标分别为(0,0),(0,1),(1,0)和(1,1)的像素亮度分别为X

第二插值向量单元9233,用于基于所述第二检测区域,确定预定的第二插值权重向量;

在一些实施例中,确定预定的第二插值权重向量包括确定第二插值权重向量的元素个数以及各元素的值,元素的个数依据第二检测区域的尺度以及第二插值区域的预定尺度进行确定;各元素的值依据插值过程中所采用的插值方式进行确定,例如,可以采用与第一插值向量单元9231中预设插值权重的方式进行确定。

第二插值运算单元9234,用于基于所述第二插值权重向量对所述第二检测区域进行插值,确定第二插值区域。

在一些实施例中,依据第二插值权重向量对第二检测区域进行插值的过程是将第二插值权重向量与第二检测区域的像素亮度所构成的矩阵相乘的过程,即是一个向量与矩阵相乘的过程,相乘之后会得到一个新的矩阵,将得到的新的矩阵中的元素作为像素亮度,即得到第二插值区域。例如可以采用与第一插值运算单元9232中相似的方式进行计算。

在上述的实施例中,由于对第一图像区域和第二图像区域进行缩放后得到第一检测区域和第二检测区域,此时,第一图像区域和第二图像区域中的像素在第一检测区域和第二检测区域中可能会对应在非整数的坐标值上,为了确保计算结果的准确性,需要对目标点所在的坐标值位置进行插值,得到第一插值区域和第二插值区域。

在上述图12所示的实施例基础上,如图15所示,其中,所述亮度梯度集子模块9210包括:

梯度提取向量单元9211,用于基于所述第一检测区域,确定预定的梯度提取权重向量;

在一些实施例中,梯度提取权重向量是为了计算第一图像区域的水平方向或竖直方向上的亮度梯度,即使相邻两行像素求差值或使相邻两列像素求差值,因此,其元素主要是以1和-1为主;当然,也可以采用现有的权重向量,例如Sobel算子中的权重向量。

梯度提取运算单元9212,用于将所述梯度提取权重向量与所述第一图像区域的各像素亮度形成的矩阵相乘,确定所述第一检测区域的亮度梯度集。

在一些实施例中,依据梯度提取权重向量对第一图像区域的各像素亮度形成的矩阵相乘,相乘之后会得到一个新的矩阵,将得到的新的矩阵中的元素作为像素亮度,即得到亮度梯度集。

在本实施例中,亮度梯度集表征了当前的第一检测区域移动一个像素距离时的像素亮度变化程度,计算亮度梯度集能够为后续计算偏移向量的过程提供计算基础,能够使得偏移向量的计算过程简单快捷。

在上述图11所示的实施例的基础上,如图16所示,所述第四指令执行模块9500包括:

偏移向量子模块9510,用于基于所述第一插值区域的自相关结果以及第一插值区域与第二插值区域的互相关结果,确定所述目标点的偏移向量;

在一些实施例中,由于图像自相关结果表征了第一插值区域在水平方向和竖直方向上的像素亮度变化规律,而互相关结果表征了第一插值区域和第二插值区域之间在水平方向和竖直方向上的像素亮度变化规律,将自相关结果作为目标点移动一个像素的像素亮度变化程度,将互相关结果作为目标点第一插值区域和第二插值区域之间总的像素亮度变化程度,计算互相关结果与自相关结果的倍数关系即可可以依据自相关结果和互相关结果大致确定第二插值区域相对于第一插值区域偏移方向以及距离。

预测位置子模块9520,用于基于所述偏移向量,确定所述目标点在下一帧图像中的预测位置;

在一些实施例中,基于偏移向量,使第二插值区域沿该偏移向量移动,在移动过程中,偏移向量的起点是第二插值区域的当前的位置,第二插值区域的终点是第二插值区域新的预测位置,在下一帧图像中的得到新的预测位置,基于新的预测位置,确定一个新的第二插值区域。

亮度差值子模块9530,用于基于所述当前帧图像中的目标点位置与所述预测位置,确定所述当前帧图像中的目标点位置与所述预测位置的像素的亮度差值;

在一些实施例中,基于预测位置子模块9520中预测位置确定的第二插值区域,计算当前帧图像中的目标点位置与预测位置的像素的亮度差值时,无论对于是当前帧图像中的目标点位置还是下一帧图像中的预测位置的像素,周围的像素都是包含了边缘信息的像素,因此,在计算的过程中,通常采用第一插值区域与第二插值区域的像素亮度差值来表征目标点位置与预测位置的像素的亮度差值。

运动速度子模块9540,用于基于所述亮度差值、预定的阈值以及偏移向量,确定所述目标点的运动速度。

在一些实施例中,在计算过程中,如果像素亮度差值小于预定的阈值,即可将当前的预测位置作为下一帧图像中的目标点位置,依据下一帧图像中的目标点位置与当前帧图像中的目标点位置,确定一个偏移向量,该偏移向量的方向是以当前帧图像中的目标点位置指向下一帧图像中的目标点位置。由于当前帧图像与下一帧图像是相邻的两帧图像,因此,可以采用该偏移向量直接作为目标点的移动速度。在上述的预定阈值是依据目标点运动速度计算方法设定的,与计算过程中的约束条件有关,例如,以L-K光流算法为例,在该算法中,其约束条件是以目标点在相邻两帧图像之间进行小位移移动,从而,目标点周围的像素亮度在相邻两帧图像中的亮度是接近恒定的,在选择预定的阈值时,可以依据该约束条件中亮度接近恒定的约束方式进行选择,例如,当亮度差值低于5是认为亮度是接近恒定的,此时,选择预定阈值为5。

本实施方式中,依据亮度差值与设定的阈值进行比较,当亮度差值小于预定阈值时,即可确定目标点的移动速度,其计算过程简便快捷,同时在计算亮度差值时,以第一插值区域和第二插值区域进行计算,包含了目标点的边缘信息,能够更加准确的计算目标点的移动速度。

在上述图11所示的实施例的基础上,如图17所述第二指令执行模块9300包括:

矩阵确定子模块9310,用于基于第一插值区域与第二插值区域,确定第一插值区域的像素亮度对应的第一矩阵和第二插值区域的像素亮度对应的第二矩阵;

在一些实施例中,将第一插值区域的像素亮度值作为元素填充值与第一插值区域对应的位置中,得到与第一插值区域的尺寸相同的第一矩阵,将第二插值区域的像素亮度值作为元素填充值与第二插值区域对应的位置中,得到与第二插值区域的尺寸相同的第二矩阵。

相减运算子模块9320,用于将所述第二矩阵与第一矩阵相减,确定第三矩阵;

在一些实施例中,将第二矩阵中的元素与第一矩阵中对应的元素相减,然后再将相减的结果作为元素填充值与第一矩阵和第二矩阵的尺寸相同的矩阵中,即可形成第三矩阵。例如,以第二矩阵中第一行第一列的元素与第一矩阵中的第一行第一列相减,相减得到的结果即为第三矩阵的一个元素,将该元素填充至第三矩阵位置为第三矩阵的第一行第一列。依次计算并填充第三矩阵的全部元素即可得到第三矩阵。

差值图像子模块9330,用于基于所述第三矩阵,确定所述第一插值区域和所述第二插值区域之间的差值图像。

在一些实施例中,将第三矩阵中的元素作为像素的亮度值,并将像素亮度值填充到与第三矩阵尺寸相同的图像区域内,即形成差值图像。

上述实施例中,采用矩阵相减的方式计算差值图像,该计算方式中,采用第一插值区域和第二插值区域的亮度亮度作为第一矩阵和第二矩阵的元素,由于第一插值区域和第二插值区域中的像素包括了目标点周围的像素,因此,第一矩阵中和第二矩阵中的元素也包含了目标点的边缘信息,通过本步骤进行计算得到的差值图像,包含了目标点的边缘信息,有利于后续对于目标点运动速度的精确计算。

在上述图11所示的实施例的基础上,所述亮度梯度集包括水平方向亮度梯度矩阵和竖直方向亮度梯度矩阵;如图18所示,所述第三指令执行模块9400包括:

第一乘累加子模块9410,用于基于所述水平方向亮度梯度矩阵和竖直方向亮度梯度矩阵进行第一乘累加运算;

在一些实施例中,第一乘累加运算按照如下的方式进行计算:

A11=sum(Ix*Ix);A12=sum(Ix*Iy);A12=sum(Iy*Iy);

其中,Ix为同一竖直坐标上的相邻的像素之间亮度的差值;

Iy为同一水平坐标上的相邻的像素之间亮度的差值;

A11为Ix的乘累加结果;A12为Ix和Iy的乘结果;A12为Iy的乘累加结果。

自相关运算子模块9420,用于基于所述第一乘累加运算的结果,确定所述第一插值区域的自相关结果;

在一些实施例中,采用如下的方式计算第一插值区域的自相关结果:

其中,A11、A12和A12为第一乘累加子模块9410计算的结果;

D为第一插值区域的自相关结果。

第二乘累加子模块9430,用于基于所述水平方向亮度梯度矩阵、竖直方向亮度梯度矩阵和差值图像进行第二乘累加运算;

在一些实施例中,第二乘累加运算按照如下的方式进行计算:

b1=sum(diff*Ix);b2=sum(diff*Iy)

其中,Ix为同一竖直坐标上的相邻的像素之间亮度的差值;

Iy为同一水平坐标上的相邻的像素之间亮度的差值;

diff为第一插值区域与第二插值区域的差值图像;

b1为差值图像与Ix的乘累加结果,

b2为差值图像与Iy的乘累加结果。

互相关运算子模块9440,用于基于所述第二乘累加运算的结果,确定第一插值区域与第二插值区域的互相关结果。

在一些实施例中,互相关结果按照如下的方式进行计算:

其中,b1和b2为第二乘累加子模块9430中计算的结果。

B为第一插值区域与第二插值区域的互相关结果。

在上述实施例中,计算了当前帧图像中的第一插值区域的自相关结果,从而标定了第一插值区域移动一个像素的距离时的像素亮度变化程度,计算了第一插值区域和第二插值区域的互相关结果,得到了第二插值区域相对于第一插值区域的像素亮度变化程度。为后续计算偏移向量提供了基础。

如图17所示,在本公开的一种示例性实施例中,提供了一种按照本公开的确定视频中的物体运动速度的方法设计的一种指令集架构,该指令集架构中包括指令控制模块17200,第一指令执行模块9200,第二指令执行模块9300,第三指令执行模块9400,第四指令执行模块9500以及存储模块17100。其中,第一指令执行模块9200主要包括计算矩阵与向量的乘法的电路,其中,第一指令执行模块9200在计算矩阵与向量的乘法时,可以对矩阵或向量的元素个数以及各元素的数值等参数进行配置。第二指令执行模块9300主要包括计算矩阵减法的电路,第三指令执行模块9400主要包括计算乘累加运算的电路,第四指令执行模块9500主要包括进行标量计算的电路,例如加法器、减法器或比较器等。指令控制模块17200用于控制数据由存储模块17100中载入芯片的寄存器中,数据载入后,控制第一指令执行模块9200,第二指令执行模块9300,第三指令执行模块9400或第四指令执行模块9500对该数据进行处理,并将处理完毕后的数据存储至存储模块17100。例如,载入第一插值权重向量和第一检测区域的像素亮度构成的矩阵分别载入到向量寄存器和矩阵寄存器中,然后控制第一指令执行模块9200对向量寄存器和矩阵寄存器中第一插值权重向量和第一检测区域进行向量与矩阵相乘的运算,从而得到一个新的矩阵,该将得到的新的矩阵中的元素作为像素亮度,即得到第二插值区域。同理,还可以控制第一指令执行模块9200完成亮度梯度集计算、第一检测区域的计算、第二检测区域的计算和第二插值区域的计算。又例如,载入第一插值区域和第二插值区域的像素亮度形成的矩阵,再控制第二指令执行模块9300完成两个矩阵相减的计算,得到第三个矩阵,依据该第三个矩阵中的元素确定像素亮度,即可得到差值图像。又例如,将水平亮度梯度形成的矩阵和竖直亮度梯度形成的矩阵载入到矩阵寄存器中,再控制第三指令执行模块9400进行矩阵点乘的计算,即可完成自相关计算,同理,可以完成互相关计算。又例如,控制第四指令执行模块9500将预测的第二插值区域和第一插值区域的像素亮度相减,将相减结果与前一次相减结果相比较或者与预定阈值比较,从而确定下一帧图像中第二插值区域的位置,第四指令执行模块9500均是进行的标量计算,包括加法、减法以及比较等。上述的计算过程中,将同一种类型的计算集中在同一个指令执行模块中,即,在电路设计过程中,每种计算类型可以设计一个指令执行模块,采用四个指令执行模块即可分别计算四种类型的计算,能够简化硬件电路的设计,并且,由于每个指令模块执行一种类型的计算,可以适用于多种包含上述计算类型的算法。

图20图示了根据本公开实施例的电子设备的框图。

如图20所示,电子设备20包括一个或多个处理器111和存储器112。

处理器111可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备20中的其他组件以执行期望的功能。

存储器112可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器111可以运行所述程序指令,以实现上文所述的本公开的各个实施例的确定视频中目标点运动速度的方法以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。

在一个示例中,电子设备20还可以包括:输入装置113和输出装置114,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。

此外,该输入设备113可以包括例如键盘、鼠标等等。

该输出装置114可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出设备114可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。

当然,为了简化,图20中仅示出了该电子设备20中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备20还可以包括任何其他适当的组件。

除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的确定视频中目标点的运动速度的方法中的步骤。

所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的确定视频中的目标点的运动速度的方法中的步骤。

所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。

以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。

本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。

还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。

提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。

为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号