光流估算方法、电子设备及存储介质
文献发布时间:2024-01-17 01:27:33
技术领域
本申请实施例涉及光流估算技术领域,尤其涉及一种光流估算方法、电子设备及存储介质。
背景技术
光流是空间运动物体在观察成像平面上的像素运动的瞬时速度,是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。通常采用稀疏光流专门针对图像上稀疏的点进行图像匹配,也就是在参考图上给定若干个点(一般为角点),找到其在当前图像中的对应点。
目前,计算光流基本方法包括基于梯度的方法、基于匹配的方法、基于能量的方法或基于相位的方法,现有光流计算法存在下面的缺点:有时即使没有发生运动,在外部照明发生变化时,也可以观测到光流;另外,在缺乏足够的灰度等级变化的区域,实际运动也往往观测不到,导致光流估算准确度低等问题。
发明内容
本申请实施例主要解决的技术问题是提供一种光流估算方法、电子设备及存储介质,能够提高光流估算的准确度,有益于图像匹配。
为解决上述技术问题,第一方面,本申请实施例中提供给了一种光流估算方法,包括:
获取第一图像帧和第二图像帧,第一图像帧和第二图像帧是视频流中间隔预设帧数的图像帧且包括同一目标物;
获取第一图像帧上的N个第一特征点;
构建第一图像帧对应的第一图像金字塔,以及构建第二图像帧对应的第二图像金字塔;
在第二图像金字塔中逐层匹配N个第一特征点映射于第一图像金字塔中的特征点,确定第二图像帧上与N个第一特征点分别匹配对应的N个第二特征点;
根据N个第一特征点和N个第二特征点,确定目标物的光流。
在一些实施例中,第一图像金字塔包括m层图像,第一图像金字塔的第0层图像为第一图像帧,第二图像金字塔包括m层图像,第二图像金字塔的第0层图像为第二图像帧;
前述在第二图像金字塔中逐层匹配N个第一特征点映射于第一图像金字塔中的特征点,确定第二图像帧上与N个第一特征点分别匹配对应的N个第二特征点,包括:
获取N个第一特征点分别映射在第一图像金字塔中各层图像上的第一对应点;
确定第一图像金字塔中第m-1层图像上的N个第一对应点分别在第二图像金字塔中第m-1层图像上的第二对应点;
根据第一图像金字塔中各层图像上的第一对应点和第二图像金字塔中第m-1层图像上的第二对应点,确定第一图像金字塔中第j层图像上的第一对应点分别在第二图像金字塔中第j层图像上的第二对应点,其中,1≤j≤m-2;
将第二图像金字塔中第0层图像上的N个第二对应点作为N个第二特征点。
在一些实施例中,前述确定第一图像金字塔中第m-1层图像上的N个第一对应点分别在第二图像金字塔中第m-1层图像上的第二对应点,包括:
对第一图像金字塔中各层图像进行census编码,得到第一编码图像金字塔;
对第二图像金字塔中各层图像进行census编码,得到第二编码图像金字塔;
根据第一编码图像金字塔的第m-1层编码图像和第二编码图像金字塔的第m-1层编码图像,确定第二图像金字塔中第m-1层图像上的第二对应点。
在一些实施例中,前述根据第一编码图像金字塔的第m-1层编码图像和第二编码图像金字塔的第m-1层编码图像,确定第二图像金字塔中第m-1层图像上的第二对应点,包括:
根据第一编码图像金字塔的第m-1层编码图像,获取第一图像金字塔中第m-1层图像上的N个第一对应点的第一编码;
在第二编码图像金字塔的第m-1层编码图像中搜索出与第一图像金字塔中第m-1层图像上的N个第一对应点的第一编码匹配的第二编码,将第二编码图像金字塔的第m-1层编码图像中的N个第二编码对应的像素点作为第二图像金字塔中第m-1层图像上的第二对应点。
在一些实施例中,前述在第二编码图像金字塔的第m-1层编码图像中搜索出与第一图像金字塔中第m-1层图像上的N个第一对应点的第一编码匹配的第二编码,将第二编码图像金字塔的第m-1层编码图像中的N个第二编码对应的像素点作为第二图像金字塔中第m-1层图像上的第二对应点,包括:
在第二编码图像金字塔的第m-1层编码图像中,以第一图像金字塔中第m-1层图像上的第一对应点分别为圆心,获取第m-1半径内的像素点的第二编码;
计算第m-1半径内的像素点的第二编码分别与对应的第一对应点的第一编码之间的汉明距离;
将第m-1半径内汉明距离最小的像素点作为第二图像金字塔中第m-1层图像上的第二对应点。
在一些实施例中,前述根据第一图像金字塔中各层图像上的第一对应点和第二图像金字塔中第m-1层图像上的第二对应点,确定第一图像金字塔中第j层图像上的第一对应点分别在第二图像金字塔中第j层图像上的第二对应点,包括:
根据第二图像金字塔中第j+1层图像上的第二对应点,获取第二图像金字塔中第j层图像上的初始对应点;
在第二图像编码金字塔的第j层编码图像中,以初始对应点为圆心,获取第j半径内的像素点的第二编码;
计算第j半径内的像素点的第二编码分别与对应的第一对应点的第一编码之间的汉明距离;
将第j半径内汉明距离最小的像素点作为第二图像金字塔中第j层图像上的第二对应点。
在一些实施例中,前述构建第一图像帧对应的第一图像金字塔,以及构建第二图像帧对应的第二图像金字塔,包括:
采用高斯金字塔算法对第一图像帧进行处理,得到第一图像金字塔;
采用高斯金字塔算法对第二图像帧进行处理,得到第二图像金字塔。
在一些实施例中,N个第一特征点包括harris角点、fast特征点、orb特征点或surf特征点
为解决上述技术问题,第二方面,本申请实施例中提供给了一种电子设备,包括存储器以及一个或多个处理器,一个或多个处理器用于执行存储在存储器中的一个或多个计算机程序,一个或多个处理器在执行一个或多个计算机程序时,使得电子设备实现如上第一方面的方法。
为解决上述技术问题,第三方面,本申请实施例中提供给了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时使处理器执行如上第一方面的方法。
本申请实施例的有益效果:区别于现有技术的情况,本申请实施例提供的光流估算方法,首先,获取第一图像帧和第二图像帧,第一图像帧和第二图像帧是视频流中间隔预设帧数的图像帧且包括同一目标物。然后,构建第一图像帧对应的第一图像金字塔,以及构建第二图像帧对应的第二图像金字塔;获取第一图像帧上的N个第一特征点。然后,在第二图像金字塔中逐层匹配N个第一特征点映射于第一图像金字塔中的特征点,确定第二图像帧上与N个第一特征点分别匹配对应的N个第二特征点。最后,根据N个第一特征点和N个第二特征点,确定所述目标物的光流。在上述方法中,由于第一图像金字塔顶层的图像和第二图像金字塔顶层的图像分辨率较小,从而,可以在第二图像金字塔中从分辨率较小的顶层图像开始逐层搜索匹配出N个第一特征点映射于第一图像金字塔中的特征点,即从第二图像金字塔中分辨率最小的顶层图像搜索匹配出N个像素点逐层映射至第二图像帧中,获得N个第二特征点。这样,相比于在第二图像帧中直接搜索,每层的搜索计算量少,能够有效减少匹配耗时,并且,从特征粒度小的顶层图像逐层映射至特征粒度大的底层图像(第二图像帧),使得N个第二特征点与N个第一特征点能够匹配准确,在此基础上,基于N个第一特征点和N个第二特征点确定的目标物的光流更加准确,有益于实现准确匹配图像。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1为本申请一些实施例中智能移动设备的示意图;
图2为本申请一些实施例中光流估算方法的流程示意图;
图3为本申请一些实施中图像金字塔的示意图;
图4为本申请一些实施例中census编码的示意图;
图5为本申请一些实施例中电子设备的结构示意图。
具体实施方式
下面结合具体实施例对本申请进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本申请,但不以任何形式限制本申请。应当指出的是,对本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进。这些都属于本申请的保护范围。
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,如果不冲突,本申请实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。此外,本文所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。
除非另有定义,本说明书所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本说明书中在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是用于限制本申请。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
此外,下面所描述的本申请各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
智能移动设备是脱离人的直接控制,采用遥控、自主或半自主等方式进行运动的设备,例如,依靠自身的智能系统自主导航,躲避障碍物,独立完成各种任务。
根据应用场景不同,智能移动设备可以为无人机、无人驾驶车或机器人、飞行拍摄设备等。在此,不对智能移动设备进行任何限制,满足自行移动的电子设备即可。
可以理解的是,如图1所示,图1中以智能移动设备100为无人机为例进行示例性说明,智能移动设备100上设置有相机10,作为智能移动设备100的视觉系统,该视觉系统能够完成类似人眼的基本功能,为目标跟踪提供可靠的视觉信息。目标物的跟踪是其中的关键部分。在包含同一个目标物的两幅图像中,目标可能发生移动、旋转或者形变。通过图像匹配,可以找到两幅图像中同一个目标的运动关系,实现目标物的跟踪。
通常采用光流法专门针对图像上稀疏的特征点进行图像匹配,也就是在参考图上给定若干个点(一般为角点),找到其在当前图像中的对应点。
三维物体的运动投影到二维图像的亮度变化,本身由于部分信息的丢失而使光流法存在孔径问题和遮挡问题,用光流法估算二维运动场是不确定的,需要附加的假设模型来模拟二维运动场的结构。在准确分割时,光流法还需要利用颜色、灰度、边缘等空域特征来提高分割精度,同时由于光流法采用迭代的方法,计算复杂耗时,如果没有特殊的硬件支持,很难应用于视频序列的实时检测。
在计算机视觉中,Lucas–Kanade光流算法是一种两帧差分的光流估计算法。Lucas-Kanade光流的假设条件:
(1)亮度恒定,就是同一点随着时间的变化,其亮度不会发生改变。这是基本光流法的假定(所有光流法变种都必须满足),用于得到光流法基本方程;
(2)小运动,这个也必须满足,就是时间的变化不会引起位置的剧烈变化,这样灰度才能对位置求偏导。也就是说,小运动情况下才能用前后帧之间单位位置变化引起的灰度变化去近似灰度对位置的偏导数,这也是光流法不可或缺的假定。
(3)空间一致,一个场景上邻近的点投影到图像上也是邻近点,且邻近点速度一致。因为光流法基本方程约束只有一个,而要求x,y方向的速度,有两个未知变量。假定特征点邻域内做相似运动,就可以连立n多个方程求取x,y方向的速度(n为特征点邻域总点数包括该特征点)。
从上述可知,Lucas–Kanade光流算法有以下缺点:计算复杂耗时,如果没有特殊的硬件支持,很难应用于视频序列的实时检测;对亮度不一致的图片,光流估算的准确度较差。
有鉴于此,本申请实施例提供了一种光流估算方法,首先,获取第一图像帧和第二图像帧,第一图像帧和第二图像帧是视频流中间隔预设帧数的图像帧且包括同一目标物。然后,构建第一图像帧对应的第一图像金字塔,以及构建第二图像帧对应的第二图像金字塔;获取第一图像帧上的N个第一特征点。然后,在第二图像金字塔中逐层匹配N个第一特征点映射于第一图像金字塔中的特征点,确定第二图像帧上与N个第一特征点分别匹配对应的N个第二特征点。最后,根据N个第一特征点和N个第二特征点,确定所述目标物的光流。在上述方法中,由于第一图像金字塔顶层的图像和第二图像金字塔顶层的图像分辨率较小,从而,可以在第二图像金字塔中从分辨率较小的顶层图像开始逐层搜索匹配出N个第一特征点映射于第一图像金字塔中的特征点,即从第二图像金字塔中分辨率最小的顶层图像搜索匹配出N个像素点,逐层映射至第二图像帧中,获得N个第二特征点,这样,相比于在第二图像帧中直接搜索,每层的搜索计算量少,能够有效减少匹配耗时,并且,从特征粒度小的顶层图像逐层映射至特征粒度大的底层图像(第二图像帧),使得N个第二特征点与N个第一特征点能够匹配准确,在此基础上,基于N个第一特征点和N个第二特征点确定的目标物的光流更加准确,即能够实现较为准确的光流估算。
以下对本申请实施例提供的光流估算方法进行详细说明,请参阅图2,该方法S100包括但不限制于以下步骤:
S10:获取第一图像帧和第二图像帧。
第一图像帧和第二图像帧是视频流中间隔预设帧数的图像帧且包括同一目标物。其中,视频流可以是上述相机拍摄获取的,视频流包括多个按预设频率拍摄的时间上连续的图像帧,从而,视频流能够反映目标物的运动过程,为对目标物的跟踪提供基础。
在一些实施例中,第一图像帧和第二图像帧可以是视频流中的相邻帧、间隔帧或间隔预设帧数的图像帧,第一图像帧和第二图像帧上包括同一目标物,例如,均包括同一辆汽车等。可以理解的的是,预设帧数可以由本领域技术人员根据实际情况而设置,例如间隔0帧、1帧、2帧或3帧等。
随着目标物的运动,第一图像帧和第二图像帧上目标物所占的像素不完全相同,为了实现对目标物的跟踪,需要在第一图像帧上给定的特征点,找到这些特征点在第二图像帧中的对应点,即通过图像匹配实现跟踪。进而,可以通过特征点在两帧图像上的像素位移变化计算出光流(速度矢量)。
S20:获取第一图像帧上的N个第一特征点。
该N个第一特征点是第一图像帧上的稀疏的特征点,不是连续的,从而,对这些稀疏的第一特征点进行跟踪,能够减少计算成本,跟踪快速且可靠。可以理解的是,N个第一特征点可以是目标物的关键点,例如,当目标物为人物时,N个第一特征点可以是第一图像帧上人物的面部轮廓点。
在一些实施例中,N个第一特征点包括harris角点、fast特征点、orb特征点或surf特征点。其中,harris角点是harris角点检测算法利用移动的窗口在第一图像帧中计算灰度变化值得到的像素点,具体地,灰度变化值大的像素点即为harris角点,harris角点也可以理解为目标物的轮廓点。fast特征点是由fast特征点检测算法对第一图像帧进行检测得到的像素点。orb特征点是由orb特征点检测算法对第一图像帧进行检测得到的像素点。surf特征点是由surf特征点检测算法对第一图像帧进行检测得到的像素点。其中,harris角点检测算法、fast特征点检测算法、orb特征点检测算法和surf特征点检测算法均是本领域现有的特征点提取算法,在此对它们不再详细说明。
为了实现光流估算,需要在第二图像帧中搜索找到与这N个第一特征点匹配对应的N个第二特征点。这N个第二特征点即为N个第一特征点在第二图像帧中的像素点。
可以理解的是,若直接在第二图像帧中搜索N个第二特征点,所述范围比较大,计算量大,为了减少搜索计算量,采用以下步骤S30构建第一图像金字塔和第二图像金字塔。
S30:构建第一图像帧对应的第一图像金字塔,以及构建第二图像帧对应的第二图像金字塔。
图像金字塔是通过下采样得到的一系列分辨率逐渐减小的图像。如图3所示,在图像金字塔中,各层的图像分辨率从顶层到底层是以降采样系数2增加,最底层是原图像。图像金字塔可以跨越很大的分辨率范围,各层图像之间基于下采样关系,存在特征关联,分辨率小的图像反映的特征粒度小,分辨率大的图像反映的特征粒度大。从而,在金字塔图像的顶层开始搜索,每层的搜索计算量少,能够有效减少匹配耗时。
在一些实施例中,前述步骤S30具体包括:
S31:采用高斯金字塔算法对第一图像帧进行处理,得到第一图像金字塔。
具体地,采用现有的高斯金字塔算法对第一图像帧进行卷积操作,得到m层的第一图像金字塔。例如,将第一图像帧作为第一图像金字塔的第0层图像,采用高斯核(5x5)对第一图像帧进行卷积操作,这里的卷积主要处理掉的是偶数行与列,然后得到上一层图像,即第一图像金字塔的第1层图像,在针对该第1层图像重复卷积操作,得到第2层图像,反复执行下去,即可得到第一图像金字塔的各层图像。每次操作之后,都会将A×B图像变成A/2*B/2图像,即减少一半。在此实施例中,第一图像金字塔为高斯图像金字塔。
在一些实施例中,也可以采用现有的拉普拉斯金字塔算子对第一图像帧进行卷积操作,得到第一图像金字塔,处理过程不再详细介绍。在此实施例中,该第一图像金字塔为拉普拉斯图像金字塔。
可以理解的是,图像金字塔包括m层图像层,第0层图像为第一图像帧,分辨率最大,从第0层图像层至第m-1层图像,分辨率越来越小,从而,使得该第一图像金字塔能够携带不同层次的特征信息。
S32:采用高斯金字塔算法对第二图像帧进行处理,得到第二图像金字塔。
同理,采用现有的高斯金字塔算法对第二图像帧进行卷积操作,得到m层的第二图像金字塔。例如,将第二图像帧作为第二图像金字塔的第0层图像,采用高斯核(5x5)对第二图像帧进行卷积操作,这里的卷积主要处理掉的是偶数行与列,然后得到上一层图像,即第二图像金字塔的第1层图像,在针对该第1层图像重复卷积操作,得到第2层图像,反复执行下去,即可得到第二图像金字塔的各层图像。每次操作之后,都会将A×B图像变成A/2*B/2图像,即减少一半。在此实施例中,第二图像金字塔为高斯图像金字塔。
在一些实施例中,也可以采用现有的拉普拉斯金字塔算子对第二图像帧进行卷积操作,得到第二图像金字塔,处理过程不再详细介绍。在此实施例中,该第二图像金字塔为拉普拉斯图像金字塔。
可以理解的是,图像金字塔包括m层图像层,第0层图像为第二图像帧,分辨率最大,从第0层图像层至第m-1层图像,分辨率越来越小,从而,使得该第二图像金字塔能够携带不同层次的特征信息。
可以理解的是,第一图像帧和第二图像帧的分辨率相同,第一图像金字塔和第二图像金字塔相同层的图像分辨率相同,例如第一图像金字塔中第j层图像和第二图像金字塔中第j层图像的分辨率相同。
S40:在第二图像金字塔中逐层匹配N个第一特征点映射于第一图像金字塔中的特征点,确定第二图像帧上与N个第一特征点分别匹配对应的N个第二特征点。
由于第一图像金字塔顶层的图像和第二图像金字塔顶层的图像分辨率较小,从而,可以在第二图像金字塔中从分辨率较小的顶层图像开始逐层搜索匹配出N个第一特征点映射于第一图像金字塔中的特征点,即从第二图像金字塔中分辨率最小的顶层图像搜索匹配出N个像素点逐层映射至第二图像帧中,获得N个第二特征点。这样,相比于在第二图像帧中直接搜索,每层的搜索计算量少,能够有效减少匹配耗时,并且,从特征粒度小的顶层图像逐层映射至特征粒度大的底层图像(第二图像帧),使得N个第二特征点与N个第一特征点能够匹配准确,即能够实现准确匹配图像。
S50:根据N个第一特征点和N个第二特征点,确定目标物的光流。
基于N个第一特征点和N个第二特征点是同一目标物分别在第一图像帧和第二图像帧上的像素点,第一图像帧和第二图像帧是视频流中间隔预设帧数的图像帧,从而,可以获取第一图像帧至第二图像帧的间隔时间。根据N个第一特征点的像素坐标和N个第二特征点的像素坐标之间的坐标变化,以及上述间隔时间,即可获取目标物在时间域(间隔时间)上的速度,从而,得到该目标物的光流。通过上述方式,使得目标物的光流更加准确,有益于实现准确匹配图像。
在一些实施例中,第一图像金字塔包括m层图像,第一图像金字塔的第0层图像为第一图像帧,第二图像金字塔包括m层图像,第二图像金字塔的第0层图像为第二图像帧。
例如,第一图像帧用prevFrame表示,在第一图像帧prevFrame上提取n个第一特征点prevPt
第二图像帧用currFrame表示,图像匹配的目的是在第二图像帧currFrame中找到和prevPt
在第一图像金字塔中,图像从第0层到第m-1层分别用prevFrame
在第二图像金字塔中,图像从第0层到第m-1层分别用currFrame
前述步骤S40具体包括:
S41:获取N个第一特征点分别映射在第一图像金字塔中各层图像上的第一对应点。
在获取到N个第一特征点prevPt
各层图像中的第一对应点可以采用如下方式表示:
例如,若在第一图像金字塔中相邻图像层的分辨率的降采样系数为2,即第1层图像的分辨率为第0层图像的分辨率的一半,第2层图像的分辨率为第1层图像的分辨率的一半,依次类推,第m-1层图像的分辨率为第m-2层图像的分辨率的一半。对于N个第一特征点中任意一个第一特征点prevPt
S42:确定第一图像金字塔中第m-1层图像上的N个第一对应点分别在第二图像金字塔中第m-1层图像上的第二对应点。
可以理解的是,第一图像金字塔中第m-1层图像即为顶层图像,分辨率最小,根据第一图像金字塔中第m-1层图像上的N个第一对应点
可以理解的是,N个第一对应点
在一些实施例中,前述步骤S42具体包括:
S421:对第一图像金字塔中各层图像进行census编码,得到第一编码图像金字塔。
S422:对第二图像金字塔中各层图像进行census编码,得到第二编码图像金字塔。
S423:根据第一编码图像金字塔的第m-1层编码图像和第二编码图像金字塔的第m-1层编码图像,确定第二图像金字塔中第m-1层图像上的第二对应点。
这里,首先介绍census编码的原理:在图像中选取任一像素点,以该像素点点为中心划出一个例如3*3的矩形,矩形中除中心像素点之外的每一像素点都与中心像素点进行比较,灰度值小于中心像素点的灰度值则记为1,灰度值大于中心像素点的灰度值则记为0,从而得到长度为8的包括0和1的序列,该序列作为中心像素点的census序列,即中心像素点的灰度值被census序列替换。
如图4所示,矩形1#中有一个3*3像素点,进行census编码后,得到cencus序列{11010101},矩形2#中有一个3*3像素点,进行census编码后,得到cencus序列{10100111}。
可以理解的是,将任意一个图像进行census编码,可以得到一个编码图像。在编码图像中,每个像素点用长度为8且只包括0和1的census序列表示。
基于上述census编码的原理,对第一图像金字塔中m层图像进行census编码,得到m层第一编码图像,m层第一编码图像构成第一编码图像金字塔,该第一编码图像金字塔可以表示为{prevCensus
之后,基于第一编码图像金字塔的第m-1层编码图像prevCensus
在一些实施例中,前述步骤S423具体包括:
S4231:根据第一编码图像金字塔的第m-1层编码图像,获取第一图像金字塔中第m-1层图像上的N个第一对应点的第一编码。
S4232:在第二编码图像金字塔的第m-1层编码图像中搜索出与第一图像金字塔中第m-1层图像上的N个第一对应点的第一编码匹配的第二编码,将第二编码图像金字塔的第m-1层编码图像中的N个第二编码对应的像素点作为第二图像金字塔中第m-1层图像上的第二对应点。
这里,第一编码即为第一图像金字塔中第m-1层图像上的N个第一对应点在第一编码图像金字塔的第m-1层编码图像prevCensus
第二编码为第二编码图像金字塔的第m-1层编码图像currCensus
从而,将第二编码图像金字塔的第m-1层编码图像currCensus
在此实施例中,将图像中像素点的灰度值转化为census序列,然后通过比较census序列确定匹配的像素点,基于census序列既保留了像素点的位置特征,并且,对亮度偏差较为鲁棒,使得能够减少光照差异引起的误匹配,受亮度影响较小。
在一些实施例中,前述步骤S4232具体包括:
S42321:在第二编码图像金字塔的第m-1层编码图像中,以第一图像金字塔中第m-1层图像上的第一对应点分别为圆心,获取第m-1半径内的像素点的第二编码。
S42322:计算第m-1半径内的像素点的第二编码分别与对应的第一对应点的第一编码之间的汉明距离;
S42323:将第m-1半径内汉明距离最小的像素点作为第二图像金字塔中第m-1层图像上的第二对应点。
在第一编码图像金字塔的第m-1层编码图像prevCensus
其中,汉明距离是两个像素点的相似度的度量方式,比较两个图像中两个像素点的相似度,可以将两个像素点的census序列,即第一对应点
可以理解的是,汉明距离越小,两个像素点的相似度越高。由于第一编码和第二编码均包括了对应的像素点周围的8个像素点的信息,所以,汉明距离也反映了两个像素点及周边像素点之间的整体差异,不受亮度变化影响,能够准确表征两个像素点之间的相似度,有利于像素点匹配的准确性。
在此实施例中,通过在第m-1半径内搜索汉明距离最小的第二编码,进而确定第二图像金字塔中第m-1层图像上的第二对应点
S43:根据第一图像金字塔中各层图像上的第一对应点和第二图像金字塔中第m-1层图像上的第二对应点,确定第一图像金字塔中第j层图像上的第一对应点分别在第二图像金字塔中第j层图像上的第二对应点,其中,1≤j≤m-2。
在确定第二图像金字塔中第m-1层图像上的N个第二对应点后,可以基于第二图像金字塔中各层图像之间的特征映射关系,在第二图像金字塔的第m-2层图像中确定初步的对应点,然后在初步的对应点周围搜索与第一图像金字塔第m-2层图像中第一对应点
在一些实施例中,前述步骤S43具体包括:
S431:根据第二图像金字塔中第j+1层图像上的第二对应点,获取第二图像金字塔中第j层图像上的初始对应点。
S432:在第二图像编码金字塔的第j层编码图像中,以初始对应点为圆心,获取第j半径内的像素点的第二编码。
S433:计算第j半径内的像素点的第二编码分别与对应的第一对应点的第一编码之间的汉明距离。
S434:将第j半径内汉明距离最小的像素点作为第二图像金字塔中第j层图像上的第二对应点。
这里,以第二图像金字塔中第j+1层图像上的第二对应点(即上一层上的第二对应点)为参考,获取第二图像金字塔中第j层图像(即当前图像)的初始对应点。在一些实施例中,通过下采样系数和第j+1层的第二对应点
其中,scale为下采样系数,一般为2。
在第一编码图像金字塔的第j层编码图像prevCensus
具体地,搜索范围是以初始对应点
如此,遍历第j层图像prevFrame
重复上述步骤S431至S434,直到j=0,得到第一图像帧prevFrame
在此实施例中,在确定第二图像金字塔中第j+1层图像上的N个第二对应点后,可以基于第二图像金字塔中各层图像之间的特征映射关系,在第二图像金字塔的第j层图像中确定初始对应点,然后在初始对应点周围搜索与第一图像金字塔第j层图像中第一对应点
S44:将第二图像金字塔中第0层图像上的N个第二对应点作为N个第二特征点。
这里,将第二图像金字塔中第0层图像上的N个第二对应点
综上所述,本申请实施例提供的光流估算方法,首先,获取第一图像帧和第二图像帧,第一图像帧和第二图像帧是视频流中间隔预设帧数的图像帧且包括同一目标物。然后,构建第一图像帧对应的第一图像金字塔,以及构建第二图像帧对应的第二图像金字塔;获取第一图像帧上的N个第一特征点。最后,根据第一图像金字塔和第二图像金字塔,确定第二图像帧上与N个第一特征点分别匹配对应的N个第二特征点。在上述方法中,由于第一图像金字塔顶层的图像和第二图像金字塔顶层的图像分辨率较小,从而,可以在第二图像金字塔中从分辨率较小的顶层图像中搜索匹配出N个像素点,逐层映射至第二图像帧中,获得N个第二特征点,这样,相比于在第二图像帧中直接搜索,每层的搜索计算量少,能够有效减少匹配耗时,并且,从特征粒度小的顶层图像逐层映射至特征粒度大的底层图像(第二图像帧),使得N个第二特征点与N个第一特征点能够匹配准确,即能够实现准确匹配图像。
以上介绍了本申请的方法,为了更好地实施本申请的各方法,接下来介绍本申请的设备。
请参阅图5,为本申请实施例提供的一种电子设备60的硬件结构图,具体的,如图5所示,电子设备60包括通信连接的至少一个处理器61和存储器62(图5中以总线连接、一个处理器为例)。
其中,处理器61用于提供计算和控制能力,以控制电子设备60执行相应任务,控制电子设备60执行上述实施例提供的任意一种光流估算方法。
可以理解的是,处理器61可以是通用处理器,包括中央处理器(CentralProcessing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
存储器62作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态性计算机可执行程序以及模块,如本发明实施例中光流估算方法对应的程序指令/模块。处理器61通过运行存储在存储器62中的非暂态软件程序、指令以及模块,可以实现上述实施例提供的任意一种光流估算方法。具体地,存储器62可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器62还可以包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被计算机执行时使计算机执行如前述任意一种光流估算方法。
需要说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
- 存储方法、存储系统、电子设备及存储介质
- 引导电子设备系统开机的方法,电子设备,可读存储介质
- 电子设备的操作响应方法、电子设备及存储介质
- 电子设备的显示控制方法、装置、电子设备和存储介质
- 电子设备控制方法及装置、电子设备及存储介质
- 电子设备、光流追踪方法、装置及存储介质
- 光流预测方法、装置、电子设备及存储介质