CN102509071B - 光流计算***和方法 - Google Patents
光流计算***和方法 Download PDFInfo
- Publication number
- CN102509071B CN102509071B CN201110311228.9A CN201110311228A CN102509071B CN 102509071 B CN102509071 B CN 102509071B CN 201110311228 A CN201110311228 A CN 201110311228A CN 102509071 B CN102509071 B CN 102509071B
- Authority
- CN
- China
- Prior art keywords
- pixel
- module
- row
- input picture
- characteristic
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 230000003287 optical effect Effects 0.000 title claims abstract description 44
- 238000000034 method Methods 0.000 title abstract description 43
- 230000001186 cumulative effect Effects 0.000 claims description 40
- 238000009825 accumulation Methods 0.000 claims description 30
- 238000004364 calculation method Methods 0.000 claims description 14
- 238000000605 extraction Methods 0.000 abstract description 8
- 230000033001 locomotion Effects 0.000 abstract description 6
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 20
- 230000008569 process Effects 0.000 description 18
- 238000004422 calculation algorithm Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 6
- 238000009415 formwork Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000005070 sampling Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000009499 grossing Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Landscapes
- Image Analysis (AREA)
Abstract
本发明公开了一种光流计算***和方法,所述光流计算***包括:特征提取模块,依次计算输入图像的像素点对应的特征值;特征匹配模块,依次计算输入图像的像素点对应的光流信息;特征监控模块,将像素点对应的特征值和像素点对应的光流信息进行同步,并基于一像素点对应的特征值来确定是否输出该像素点的光流信息。在本发明中采用了流式的硬件计算方式来实现输入图像的像素点的特征匹配和特征提取,随着图像每个像素点的输入,每个像素点对应的特征值和光流信息都可流水完成,因此可以提供稠密的光流信息。并且由于有特征值的指示,只有具有良好特征的像素点的光流才会被输出,这样可以较好地反应目标的真实运动情况。
Description
【技术领域】
本发明涉及图像处理和计算机视觉领域,尤其涉及光流计算***和方法。
【背景技术】
众所周知,光流场是空间中物体运动的运动场在图像平面上的对应体现,它可用来对空间中的真实运动场做近似估计,而且适用于相机运动的情况。光流场不仅携带了物体的运动信息,还携带了有关景物三维结构的信息。通过光流场计算能够在不知道场景信息的情况下检测出运动对象。因此光流场计算方法(或光流法)在模式识别、计算机视觉以及其他图像处理领域具有极其重要的基础地位。
但目前光流法最大的不足在于计算耗时、实时性很差,无法用于对响应时间有要求的嵌入式领域。主要原因是几乎所有的光流法,如由布瑞斯.D.卢卡斯(BruceD.Lucas)和塔柯欧.卡纳德(TakeoKanade)提出的Lucas-Kanade算法、由浩恩(Horn)和舒恩柯(Schunck)提出的Horn-Schunck算法等都基于像素点灰度守恒以及其它一些类似假设条件。而长期以来由于相机、传输接口、处理器等硬件技术的限制,单位时间内能够获取和处理的视频数据的帧频和分辨率(时间/空间采样率)都有限,导致假设条件很多情况下无法很好满足。因此现有方法通过提升算法以在假设条件不足时仍然能得到可接受的效果。比如通过平滑处理使得目标在两帧图像之间的位移更小;通过金字塔型多级结构提供更好的全局搜索等。上述方法虽然提升了算法的适应性,但同时也使得计算更为复杂,更难适用于硬件结构简单的嵌入式***。
随着社会快速进入“物联网”时代,各种智能设备的嵌入式计算部件将越来越多地替代人进行信息获取和处理。而人类在获取外部信息时约70%来自视觉,这意味着物联网***中将会有大量的嵌入式视觉装置获取和处理外部信息。这种趋势说明光流法更大的应用空间将在嵌入式环境。
但嵌入式环境下光流场计算的困难在于:1、嵌入式***需要实时处理视频数据,而通用***经常将数据存储后慢慢处理。因此嵌入式***下提高算法复杂度会影响数据的及时处理进而影响假设条件,而通用***不会;2、嵌入式***由于受功耗、体积、成本等限制,其通用计算能力往往不高;3、多数嵌入式处理器浮点计算能力有限,对需要大量采用浮点计算的光流法不能很好支持;4、采用算法弥补假设条件的光流法容易导致算法复杂,不利于采用硬件加速。
上述因素导致在嵌入式环境下直接采用通用平台下的思路容易陷入一种负性循环:及时处理和利用的视频数据有限→假设条件被削弱→更复杂的算法→及时处理能力更差,因此必须采用新的思路解决上述问题。
因此,有必要开发出一种可以改进的光流计算方案来克服上述问题。
【发明内容】
本发明要解决的技术问题之一在于提供一种流式光流计算***,其可以实现对稠密光流场的实时计算。
本发明要解决的技术问题之一在于提供一种流式光流计算方法,其可以实现对稠密光流场的实时计算。
为了解决上述问题,根据本发明的一个方面,本发明提供了一种光流计算***,其包括:特征提取模块,依次计算输入图像的像素点对应的特征值;特征匹配模块,依次计算输入图像的像素点对应的光流信息;特征监控模块,将来自所述特征提取模块的像素点对应的特征值和来自所述特征匹配模块的像素点对应的光流信息进行同步,并基于一像素点对应的特征值来确定是否输出该像素点的光流信息。
进一步的,所述特征提取模块、所述特征匹配模块和所述特征监控模块工作于同一时钟下,所述特征提取模块每N个时钟周期输出一个像素点对应的特征值,所述特征匹配模块每N个时钟周期输出一个像素点对应的光流信息,所述特征监控模块每N个时钟周期基于一个像素点的特征值来确定是否输出该像素点的光流信息,其中N为大于等于1的自然数。
更进一步的,所述特征提取模块包括水平梯度计算模块、垂直梯度计算模块、第一乘法单元、第二乘法单元、第三乘法单元、第一累积单元、第二累积单元、第三累积单元和特征值计算模块,其中所述水平梯度计算模块依次计算输入图像的像素点的水平梯度;所述垂直梯度计算模块依次计算输入图像的像素点的垂直梯度;第一乘法单元依次计算来自所述水平梯度计算模块的像素点的水平梯度的平方值,并将计算结果输出给第一累积单元;第二乘法单元依次计算来自所述水平梯度计算模块的像素点的水平梯度和来自所述垂直梯度计算模块的对应像素点的垂直梯度的乘积,并将计算结果输出给第二累积单元;第三乘法单元依次计算来自所述垂直梯度计算模块的像素点的垂直梯度的平方值,并将计算结果输出给第三累积单元;第一累积单元累计所述输入图像的以一个像素点为中心的窗口内的所有像素点的水平梯度的平方值的和,第二累积单元累计所述输入图像的以一个像素点为中心的窗口内的所有像素点的水平梯度和垂直梯度的乘积的和,第三累积单元累计所述输入图像的以一个像素点为中心的窗口内的所有像素点的垂直梯度的平方值的和;所述特征值计算模块根据第一累积单元、第二累积单元和第三累积单元的针对同一窗口的累计结果计算该窗口的特征值,并将该窗口的特征值作为该窗口的中心像素点对应的特征值。
再进一步的,所述特征提取模块中的各个模块或单元工作于同一时钟下,各个模块或单元每N个时钟周期输出一个计算结果。
进一步的,所述特征匹配模块还包括像素差值计算模块、多个图像块差值计算模块和最小值选择模块,所述像素差值计算模块计算当前帧输入图像的一个像素点与该像素点在上一帧输入图像中对应的所有候选位置的像素点的像素值差,并将该像素点与每个候选位置的像素点的像素值差输出给对应的一个图像块差值计算模块;每个图像块差值计算模块累计当前帧输入图像的以一个像素点为中心的图像块内的所有像素点对应的像素值差的和;所述最小值选择模块从各个图像块差值计算模块累计的当前帧输入图像的同一图像块内的所有像素点对应的像素值差的和中找到最小值,将该最小值对应的图像块差值计算模块对应的候选位置作为当前帧输入图像的该图像块的中心像素点在上一帧输入图像中的像素位置,进而得到当前帧输入图像的该图像块的中心像素点对应的光流信息。
更进一步的,所述特征匹配模块还包括第一存储组件和第二存储组件,当前帧输入图像存储于其中的一个存储组件中,下一帧输入图像则会存储于另一个存储组件中,这样其中的一个存储组件存储的是当前帧输入图像,另一个存储组件存储上一帧输入图像。
再进一步的,第一存储组件包括第一存储模块和第一缓存模块,第二存储组件包括第二存储模块和第二缓存模块,所述存储组件中的缓存模块为先进先出存储器,其存储预定行的像素点的像素值,所述存储组件中的存储模块存储一帧图像的其余行的像素点的像素值,存储上一帧输入图像的存储组件中的存储模块将存储的像素点的像素值依次输出同组的缓存模块中,所述像素差值计算模块从存储上一帧输入图像的存储组件中的缓存模块中获取与当前帧输入图像的像素点在上一帧输入图像中对应的所有候选位置的像素点的像素值。
更进一步的,所述图像块差值计算模块包括行累积模块、列缓冲模块和列累积模块,所述行累积模块累计当前帧输入图像的以一个像素点为行中心的最新的M个像素点对应的像素值差的和,并将累计结果当作所述行中心像素点对应的行累计结果输出给列缓冲模块;所述列缓冲模块为先进先出存储器,其缓存L行像素点的行累计结果;所述列累积模块计算以一个像素点为列中心的一列L个像素点的行累计结果的和,并将累计结果当作所述列中心像素点对应的列累计结果输出,该列中心像素点对应的列累计结果就是以该列中心像素点为中心的M个像素宽L个像素高的图像块内的所有像素点对应的像素值差的和,L和M为大于等于3的奇数。
根据本发明的一个方面,本发明提供了一种光流计算方法,其包括:依次计算输入图像的像素点对应的特征值;依次计算输入图像的像素点对应的光流信息;将所述像素点对应的特征值和所述像素点对应的光流信息进行同步,并基于一像素点对应的特征值来确定是否输出该像素点的光流信息。
进一步的,每N个时钟周期输出一个像素点对应的特征值,每N个时钟周期输出一个像素点对应的光流信息,对像素点对应的特征值的计算和对像素点对应的光流信息的计算是并行的,每N个时钟周期基于一个像素点的特征值来确定是否输出该像素点的光流信息,其中N为大于等于1的自然数。
与现有技术相比,在本发明中采用了流式的硬件计算方式来实现输入图像的像素点的特征匹配和特征提取,随着图像每个像素点的输入,每个像素点对应的特征值和光流信息都可流水完成,因此可以提供稠密的光流信息。并且由于有特征值的指示,只有具有良好特征的像素点的光流才会被输出,这样可以较好地反应目标的真实运动情况。
关于本发明的其他目的,特征以及优点,下面将结合附图在具体实施方式中详细描述。
【附图说明】
结合参考附图及接下来的详细描述,本发明将更容易理解,其中同样的附图标记对应同样的结构部件,其中:
图1为本发明中的光流计算***在一个实施例中的结构方框示意图;
图2为本发明中的光流计算***中的特征提取模块在一个实施例中的结构方框示意图;
图3为图2中的水平梯度计算模块在一个实施例中的结构方框示意图;
图4为本发明中的行缓冲模块在一个实施例中的结构方框示意图;
图5为本发明中的列缓冲模块在一个实施例中的结构方框示意图;
图6为图2中的乘法模块在一个实施例中的结构方框示意图;
图7为图2中的行列累积模块中的一个累积单元在一个实施例中的结构方框示意图;
图8为图7中的行累积模块在一个实施例中的结构方框示意图;
图9为图2中的特征值计算模块在一个实施例中的结构方框示意图;
图10为本发明中的光流计算***中的特征匹配模块在一个实施例中的结构方框示意图;
图11为图10中的一个缓存模块在一个实施例中的结构方框示意图;
图12为图10中的一个图像块差值计算模块在一个实施例中的结构方框示意图;
图13为图10中的最小值选择模块在一个实施例中的结构方框示意图;和
图14为本发明中的光流计算方法在一个实施例中的流程示意图。
【具体实施方式】
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明的详细描述主要通过程序、步骤、逻辑块、过程或其他象征性的描述来呈现,其直接或间接地模拟本发明中的技术方案的运作。所属领域内的技术人员使用此处的这些描述和陈述向所属领域内的其他技术人员有效的介绍他们的工作本质。
此处所称的“一个实施例”或“实施例”是指与所述实施例相关的特定特征、结构或特性至少可包含于本发明至少一个实现方式中。在本说明书中不同地方出现的“在一个实施例中”并非必须都指同一个实施例,也不必须是与其他实施例互相排斥的单独或选择实施例。此外,表示一个或多个实施例的方法、流程图或功能框图中的模块顺序并非固定的指代任何特定顺序,也不构成对本发明的限制。
请参阅图1,其示出了本发明提出的光流计算***10在一个实施例中的结构方框示意图,所述光流计算***10包括特征提取模块100、特征匹配模块200和特征监控模块300。所述特征提取模块100依次计算视频输入图像的像素点对应的特征值,所述特征匹配模块200依次计算视频输入图像的像素点对应的光流信息,所述特征监控模块300将来自所述特征提取模块100的像素点对应的特征值和来自所述特征匹配模块200的像素点对应的光流信息进行同步,并基于一像素点对应的特征值来确定是否输出该像素点的光流信息。这样,从而可知道每一像素点是否是具有良好特征,避免不具有良好特征的像素点对整体光流场计算效果的影响。视频是由一系列连续的图像帧组成,也就是说,一系列连续的图像帧依次输入给所述光流计算***10进行光流计算。
所述特征提取模块100、所述特征匹配模块200和所述特征监控模块300工作于同一时钟下,所述特征提取模块每N个时钟周期输出一个像素点对应的特征值,所述特征匹配模块每N个时钟周期输出一个像素点对应的光流信息,所述特征监控模块每N个时钟周期基于一个像素点的特征值来确定是否输出该像素点的光流信息,其中N为大于等于1的自然数,下文中都以N为1为例进行介绍。本***结构实现简单、便于扩展,可以以高达100-200帧/秒的速率对图像的大部分或所有的像素点进行稠密的光流场计算,从而为嵌入式实时环境下利用光流法进行快速运动目标识别与跟踪提供技术手段。基于该发明的产品可广泛应用于视频监控、医疗图像处理、自动导航、电影特效等众多领域。
由于图像传感及数据传输技术已能够为视觉处理***提供过采样视频数据,因此本发明所提出的光流计算***10通过对更高帧频、更高分辨率的视频数据进行实时处理并利用其提供的过采样信息。从而导向这样的正向循环:能够及时处理并利用高帧频/分辨率的视频数据→假设条件得到强化→算法得到简化→便于硬件加速→可及时处理更高帧频/分辨率的数据。为嵌入式实时环境下基于光流法进行运动目标识别与跟踪提供有效的技术手段。
请参阅图2,其示出了本发明中的光流计算***10中的特征提取模块100在一个实施例中的结构方框示意图,所述特征提取模块100包括水平梯度计算模块110、垂直梯度计算模块120、乘法模块130、行列累积模块140和特征值计算模块150。所述特征提取模块100中的各个模块或单元工作于同一时钟下,各个模块或单元每N个时钟周期输出一个计算结果,比如N=1。
所述水平梯度计算模块110依次计算输入图像的像素点的水平梯度G_x。所述垂直梯度计算模块120依次计算输入图像的像素点的垂直梯度G_y。水平和垂直梯度的计算是同时并行处理的,为了节约资源,在一个实施例可以采用x方向(或称为行方向)、y方向(或称为列方向)分别进行一维卷积的计算来替代二维卷积计算。图3示出了所述水平梯度计算模块110在一个实施例中的结构示意图。如图3所示,所述水平梯度计算模块110包括行缓存模块111、行卷积处理模块112、水平行模板模块113、列缓存模块114、列卷积处理模块115和水平列模板模块116。
所述水平行模板模块113中存储有进行行卷积处理的水平行模板(或称水平梯度的x方向的卷积核),所述水平行模板包括M1个元素。所述行缓存模块111如图4所示,其包括M1个缓存单元40,每个缓存单元40存储一个像素点的像素值,M1为大于等于3的奇数,在图4的示例中M1=11,所述行缓存模块111为先进先出存储器。所述行卷积处理模块112利用所述水平行模板对所述行缓存模块111中的一行像素点(M1个)的像素值进行行卷积得到M1个缓存像素点(H1至H11)的中心像素点H6的行方向卷积结果,并输出给列缓存模块114。
所述水平列模板模块116中存储有进行列卷积处理的水平列模板(或称水平梯度的y方向的卷积核),所述水平列模板包括L1个元素。所述列缓存模块114如图5所示,其包括有L1个缓存单元50,每个缓存单元50可以存储一行像素点的行方向卷积结果值,L1为大于等于3的奇数,在图5的示例中L1=11,所述列缓存模块114为先进先出存储器,其内存储的数据可以依次向后移动,其可以提供一列对齐的像素点(V1至V11)。所述列卷积处理模块115利用所述水平列模板对所述列缓存模块114中的一列像素点(L1个)的行方向卷积结果值进行列卷积得到L1个缓存像素点(V1至V11)的中心像素点V6的列方向卷积结果,此卷积结果表示像素点V6的水平梯度G_x。
每个时钟周期就有一个输入图像的像素点的像素值被输送至所述行缓存模块111,经过初始若干周期(比如M1-1)的延时后,之后每个时钟周期所述行缓存模块111都可以为一个像素为中心的x方向卷积提供所需的所有像素。同样的,经过若干周期的延时(比如L1*W-1,其中W为所述输入图像的列数),之后每个周期可以为一个像素为中心的y方向卷积提供所需的所有像素。由于可同时获得卷积所需的全部像素,将其与滤波器对应参数分别相乘可同时得到多个乘积,再通过加法模块将其累计即可得到卷积结果。因此经过若干周期延时后,所述水平梯度计算模块110每个时钟周期可以获得一个像素对应的窗口(M1个像素宽L1个像素高)的卷积结果。
所述垂直梯度计算模块120的具体结构和工作原理与所述水平梯度计算模块110大部分相同,唯一的区别在于:其在进行行卷积时使用的是垂直行模板(或称垂直梯度的x方向的卷积核),其在进行列卷积时使用的是垂直列模板(或称垂直梯度的y方向的卷积核)。
如图6所示,其示出了所述乘法模块130在一个实施例中的结构示意图,所述乘法模块130包括第一乘法单元131、第二乘法单元132和第三乘法单元133。所述行列累积模块140包括第一累积单元、第二累积单元和第三累积单元。第一乘法单元131依次计算来自所述水平梯度计算模块110的像素点的水平梯度G_x的平方值G_x2,并将计算结果输出给第一累积单元。第二乘法单元132依次计算来自所述水平梯度计算模块110的像素点的水平梯度G_x和来自所述垂直梯度计算模块120的对应像素点的垂直梯度G_y的乘积G_x*G_y,并将计算结果输出给第二累积单元。第三乘法单元133依次计算来自所述垂直梯度计算模块120的像素点的垂直梯度G_y的平方值G_y2,并将计算结果输出给第三累积单元。经过若干周期的延时,以后每个周期可以得到一个像素所对应的水平梯度的平方G_x2,水平梯度和垂直梯度的乘积G_x*G_y,垂直梯度的平方G_y2,其中G_x2、G_x*G_y、G_y2都可以被称为像素点的梯度积。
第一累积单元累计所述输入图像的以一个像素点为中心的窗口内的所有像素点的水平梯度的平方值G_x2的和gx2,第二累积单元累计所述输入图像的以一个像素点为中心的窗口内的所有像素点的水平梯度和垂直梯度的乘积G_x*G_y的和gxgy,第三累积单元累计所述输入图像的以一个像素点为中心的窗口内的所有像素点的垂直梯度的平方值的和gy2,其中所述窗口的大小可以为M2*L2,M2为窗口的像素宽,L2为所述窗口的像素高,M2和L2均为大于3的奇数。
累计一个窗口的梯度积可以用二维卷积实现,但每个时钟周期完成一个窗口的二维卷积需要大量的乘法单元并行工作。因此本发明采用行列分别累计模块完成梯度积的和计算。请参阅图7,其示出了所述行列累积模块140的一个累积单元在一个实施例中的结构示意图,所述累积单元包括行累积模块141、列缓存模块142和列累积模块143。
请参阅图8,其示出了所述行累积模块141在一个实施例中的结构示意图,所述行累积模块141包括加法器1411、寄存器1412、减法器1413和先进先出缓存器1414,所述先进先出缓存器1414可以缓存M2个像素点的梯度积(G_x2、G_x*G_y和G_y2中的一个)。具体累计原理所属领域内的技术人员在结合上下文以及图8可以得知,此处不再赘述。这样,所述行累积模块141可以累计所述输入图像的以一个像素点为行中心的最新的M2个像素点对应的梯度积的和,并将累计结果当作所述行中心像素点对应的行梯度积累计结果输出给列缓存模块142。所述列缓存模块142的结构可参考图5所示的列缓存模块,其包括L2个缓存单元,每个缓存单元可以存储一行像素点的行梯度积累计结果值。所述列累积模块143累计所述列缓存模块142中的以一个像素点为列中心的一列L2个像素点(比如图5中的V1至V11,此时L2=11)的行梯度积累计结果的和,并将累计结果当作所述列中心像素点对应的列梯度累计结果输出,该列中心像素点对应的列梯度积累计结果就是以该列中心像素点为中心的M2个像素宽L2个像素高的窗口内的所有像素点的梯度积的和。经过若干周期的延时,以后每个周期可以每个累积单元均会得到以一个像素为中心的窗口的梯度积的和。
所述特征值计算模块150根据第一累积单元、第二累积单元和第三累积单元的针对同一窗口的累计结果gx2,gyx,gy2计算该窗口的特征值,并将该窗口的特征值作为该窗口的中心像素点对应的特征值。在一个实施例中,所述特征值计算模块150根据下述公式计算一个窗口的特征值:
所述特征值计算模块150的具体的流水线结构如图9所示,其包括两个加法器151、两个减法器152、三个乘法器153、若干个缓存单元154、一个求根运算器155和一个除法器156。具体计算方式就是流水式的完成上述公式的计算,每一个像素所代表窗口的特征值经过若干时钟周期后可以计算出来,而且在第一个特征值计算出之后,每个时钟周期可以得到一个后续像素所代表窗口的特征值。
因此,采用附图2所示的特征提取结构,每个模块都含有一个初始的延时,在初始延时之后,每个时钟周期可以计算出相应的结果。总体来讲,随着一帧图像的输入,经过一定的初始延时后,特征提取模块每个时钟周期就可以计算出一个像素所代表窗口的特征值了。因此针对一帧图像进行特征提取所需的时间也就是一帧图像所有像素的输入时间。
在其他实施里中,所述特征提取模块还可以采用其他结构,比如采用SIFT(尺度不变特征变换)、Horris等特征点提取算法来实现,只要能够实现每个时钟周期计算出一个像素所代表窗口的特征值就可以了。
多数现有的图像块匹配算法如KLT(Kanade-Lucas-Tomasi)的做法是:已知某一特定图像块(以某一像素为中心)在上一帧中的位置,从而通过匹配寻找其在当前帧中的位置。由于存在多个可能的位置,因此需要将当前帧接收并存储后才能进行相应匹配计算。此外,由于现有的特征匹配算法多数是针对通用计算平台设计的,由于并行计算能力有限,往往采用一些先进的算法避免对所有可能区域的遍历搜索,以降低算法的复杂度。
本发明中的特征匹配模块200则从与现有特征匹配算法相反的角度考虑该问题,即以正在输入的图像(当前帧输入图像)的每个像素(其所代表的图像块)为出发点,判断其在上一帧输入图像中的可能位置。这样避免了当前帧输入图像接收并存储后才能开始匹配计算,而是在当前帧图像输入的同时可以针对每个像素进行匹配计算。为了每个时钟周期完成一个像素(所代表的图像块)的匹配运算,本发明充分利用硬件的并行性对其多个可能位置进行并行计算,而不采用现有算法的多次迭代方法。该结构可以在当前帧图像输入的过程中,针对每个像素(所代表的图像块)计算其在上一帧图像中的位置。
请参阅图10,其示出了本发明中的光流计算***10中的特征匹配模块200在一个实施例中的结构方框示意图,所述特征匹配模块200包括第一存储组件210、第二存储组件220、边界去除模块230、像素差值计算模块240、多个图像块差值计算模块250和最小值选择模块260。
所述第一存储组件210包括第一存储模块211和第一缓存模块212,第二存储组件220包括第二存储模块221和第二缓存模块222。如果一帧输入图像存储于第一存储组件中,那么下一帧输入图像则会存储于第二个存储组件中,再下一帧输入图像又会存储入第一存储组件中,如此循环往复。所述存储组件中的缓存模块为先进先出存储器,其存储L3行的像素点的像素值,所述存储组件中的存储模块存储一帧图像的其余行(比如H-L3,其中H为输入图像的列数)的像素点的像素值,存储上一帧输入图像的存储组件中的存储模块将存储的像素点的像素值依次输出同组的缓存模块中,其中L3为大于等于3的奇数。
所述边界去除模块230可以去除掉当前帧输入图像的不可处理的边界像素点,由于在进行后续计算时需要用到周边像素,因此当前帧输入图像的有些边界像素点是不可以进行后续计算的,因此可以事先去除。
所述像素差值计算模块240计算当前帧输入图像的一个像素点与该像素点在上一帧输入图像中对应的所有候选位置的像素点的像素值差,并将该像素点与每个候选位置的像素点的像素值差输出给对应的一个图像块差值计算模块250,其中所述像素差值计算模块240从存储上一帧输入图像的存储组件中的缓存模块中获取与当前帧输入图像的像素点在上一帧输入图像中对应的所有候选位置的像素点的像素值,当前帧输入图像的像素点与上一帧图像的所有可能像素的差值同时产生。
图11为图10中的一个缓存模块在一个实施例中的结构方框示意图。所述缓存模块包括L3个缓存单元60,每个缓存单元可以缓存一行像素点的像素值,在图11的示例中L3=5,每个缓存单元60的最左侧M3(M3为大于等于3的奇数,在图11的示例中M3=5)个像素点为当前帧输入图像的像素点在上一帧输入图像中对应的候选位置的像素点,该行的其余像素点存储在缓存单元60的其它缓存部分61。该缓存单元60也为先进先出存储器,其内存储的数据可以依次向后移动。如图11所示,当前帧输入图像的像素点R33在上一帧图像中对应的所有候选位置的像素点分别为R11至R15,R12至R25,R31至R35,R41至R45,R51至R55,所有候选位置的像素点数为L3*M3=25。
需要注意的是,在像素差值计算模块240对当前帧输入图像的像素点进行差值计算的同时,当前帧输入图像的像素点也会被存储到此时的存储当前帧图像的存储组件中,以供下一帧图像输入过程中计算像素点差值时作为其上一帧图像使用。
相邻像素差值计算的结果是单个像素点的灰度值与其可能移动到的位置(候选位置)上像素点的灰度值之间的差值,而单个像素点的灰度是不稳定的,因此需要计算以每个像素点为中心的图像块与上一帧中可能位置的图像块内所有像素之间的差值的累计和。为了保持流水的处理,本发明中采用多个图像块累计模块对多个可能位置像素的差值进行并行累计,从而可同时得到一个图像块所有可能位置的差值。所述图像块差值计算模块250的个数与所述候选位置的个数相同,每个图像块差值计算模块250对应一个候选位置,每个图像块差值计算模块累计当前帧输入图像的以一个像素点为中心的图像块内的所有像素点对应的像素值差的和。
图12为图10中的一个图像块差值计算模块250在一个实施例中的结构方框示意图。如图12所示,所述图像块差值计算模块250包括行累积模块251、列缓冲模块252和列累积模块253。
行累积模块251可以采用图8示出的行累积结构,所述行累积模块251累计当前帧输入图像的以一个像素点为行中心的最新的M4个像素点对应的像素值差的和,并将累计结果当作所述行中心像素点对应的行累计结果输出给列缓冲模块252。所述列缓冲模块252可以采用图5示出的列缓冲结构,其包括L4个缓存单元,每个缓存单元可以存储一行像素点的行累计结果值。所述列累积模块253计算以一个像素点为列中心的一列L4个像素点的行累计结果的和,并将累计结果当作所述列中心像素点对应的列累计结果输出,该列中心像素点对应的列累计结果就是以该列中心像素点为中心的M4个像素宽L4个像素高的图像块内的所有像素点对应的像素值差的和,其中M4和L4为大于等于3的奇数。
经过初始延时后,所述图像块差值计算模块250每个时钟周期可完成一个像素所在图像块的差值累计。多个图像块差值累计模块250同时给出当前帧的当前像素所在图像块在上一帧图像中所有可能的位置,差值最小的则说明该像素所在图像块是由上一帧中的该位置移动而来的。
所述最小值选择模块260从各个图像块差值计算模块250累计的当前帧输入图像的同一图像块内的所有像素点对应的像素值差的和中找到最小值,将该最小值对应的图像块差值计算模块对应的候选位置作为当前帧输入图像的该图像块的中心像素点在上一帧输入图像中的像素位置,进而得到当前帧输入图像的该图像块的中心像素点对应的光流信息,所述光流信息可以包括上一帧中的像素点的坐标、当前帧中像素点的坐标,图像块的差值等信息。
最小值选择模块260如图13所示,其包括多个比较器251和多个缓存单元252。具体计算方式就是流水式的完成将所有可能位置的图像块差值结果SSD1-SSDn进行两两比较最后找到最小值,经过若干周期延时后,所述最小值选择模块260每个周期可给出一个像素对应的光流信息。
因此,采用附图10所示的特征匹配结构,每个模块都含有一个初始的延时,在初始延时之后,每个时钟周期可以计算出相应的结果。总体来讲,随着一帧图像的输入,经过一定的初始延时后,特征匹配模块每个时钟周期就可以计算出一个像素所代表窗口或图像块的光流信息了。
由于不具有良好特征的图像块的匹配结果可能会产生干扰信息,优选的,可以只输出具有良好特征的图像块的光流信息(或称一个像素点所代表的图像块的光流信息)。所述特征监控模块300用来根据当前像素(其代表所在的图像块)的特征值决定是否输出其对应的光流信息,比如在特征值大于一个特征阈值时则输出对应的光流信息,否则不输出对应的光流信息。为了使当前像素对应的光流信息与对应的特征值相同步,所述特征监控模块250采用一组先入先出缓冲队列将较早产生的结果延时若干个周期后输出以和另一组结果同步。
在一个实施例中,由于特征提取的结果滞后于特征匹配的结果,因此将特征匹配的结果保存在先入先出缓冲中,以特征匹配结果有效的信号作为写信号,而以比特征提取结果有效信号提前一个周期的信号作为读信号。因此使得每个像素对应的特征值和匹配结果同步出现。
总体来讲,随着输入图像每个像素点的输入,每个像素点所代表的窗口或图像块的特征值提取和光流匹配都可流水完成,但由于有特征值的指示,只有具有良好特征的窗口或图像块的光流才会被输出。因此,最终可以知道每个具有良好特征的窗口所在像素的光流,可以较好地反应目标的真实运动情况。这样,可以以高帧率对图像的大部分或所有的像素点进行稠密的光流场计算,为后继应用提供基础。
本发明提出的光流计算方案也可以实现为一种方法。图14为本发明中的光流计算方法20在一个实施例中的流程示意图。如图14所示,所述光流计算方法20包括如下步骤:
步骤400,依次计算输入图像的像素点对应的特征值;
步骤500,依次计算输入图像的像素点对应的光流信息;
步骤600,将所述像素点对应的特征值和所述像素点对应的光流信息进行同步,并基于一像素点对应的特征值来确定是否输出该像素点的光流信息。
具体的,每N个时钟周期输出一个像素点对应的特征值,每N个时钟周期输出一个像素点对应的光流信息,对像素点对应的特征值的计算和对像素点对应的光流信息的计算是并行的,每N个时钟周期基于一个像素点的特征值来确定是否输出该像素点的光流信息,其中N为大于等于1的自然数。
关于计算输入图像的像素点对应的特征值和光流信息可以参考上文中的相应部分,此处不再赘述。
本文中的“和/或”表示和或者或,比如A、B和/或C,包括A、B、C、AB、AC、BC、ABC几种情况。本文中的“包括”均表示“包括但不限于”。本文中的“步骤”和“方法”在有些情况下是可以替换的,一个方法的一个步骤也可以被称为另一个方法。本文中的“若干”为两个或两个以上,“多个”为两个或两个以上。
上文对本发明进行了足够详细的具有一定特殊性的描述。所属领域内的普通技术人员应该理解,实施例中的描述仅仅是示例性的,在不偏离本发明的真实精神和范围的前提下做出所有改变都应该属于本发明的保护范围。本发明所要求保护的范围是由所述的权利要求书进行限定的,而不是由实施例中的上述描述来限定的。
Claims (2)
1.一种光流计算***,其特征在于,其包括:
特征提取模块,依次计算输入图像的像素点对应的特征值;
特征匹配模块,依次计算输入图像的像素点对应的光流信息;
特征监控模块,将来自所述特征提取模块的像素点对应的特征值和来自所述特征匹配模块的像素点对应的光流信息进行同步,并基于一像素点对应的特征值来确定是否输出该像素点的光流信息,
所述特征提取模块、所述特征匹配模块和所述特征监控模块工作于同一时钟下,
所述特征提取模块每N个时钟周期输出一个像素点对应的特征值,
所述特征匹配模块每N个时钟周期输出一个像素点对应的光流信息,
所述特征监控模块每N个时钟周期基于一个像素点的特征值来确定是否输出该像素点的光流信息,其中N为大于等于1的自然数,
所述特征匹配模块还包括像素差值计算模块、多个图像块差值计算模块和最小值选择模块,
所述像素差值计算模块计算当前帧输入图像的一个像素点与该像素点在上一帧输入图像中对应的所有候选位置的像素点的像素值差,并将该像素点与每个候选位置的像素点的像素值差输出给对应的一个图像块差值计算模块;
每个图像块差值计算模块累计当前帧输入图像的以一个像素点为中心的图像块内的所有像素点对应的像素值差的和;
所述最小值选择模块从各个图像块差值计算模块累计的当前帧输入图像的同一图像块内的所有像素点对应的像素值差的和中找到最小值,将该最小值对应的图像块差值计算模块对应的候选位置作为当前帧输入图像的该图像块的中心像素点在上一帧输入图像中的像素位置,进而得到当前帧输入图像的该图像块的中心像素点对应的光流信息,
所述图像块差值计算模块包括行累积模块、列缓冲模块和列累积模块,
所述行累积模块累计当前帧输入图像的以一个像素点为行中心的最新的M个像素点对应的像素值差的和,并将累计结果当作所述行中心像素点对应的行累计结果输出给列缓冲模块;
所述列缓冲模块为先进先出存储器,其缓存L行像素点的行累计结果;
所述列累积模块计算以一个像素点为列中心的一列L个像素点的行累计结果的和,并将累计结果当作所述列中心像素点对应的列累计结果输出,
该列中心像素点对应的列累计结果就是以该列中心像素点为中心的M个像素宽L个像素高的图像块内的所有像素点对应的像素值差的和,L和M为大于等于3的奇数,
所述特征提取模块包括水平梯度计算模块、垂直梯度计算模块、第一乘法单元、第二乘法单元、第三乘法单元、第一累积单元、第二累积单元、第三累积单元和特征值计算模块,其中
所述水平梯度计算模块依次计算输入图像的像素点的水平梯度;
所述垂直梯度计算模块依次计算输入图像的像素点的垂直梯度;
第一乘法单元依次计算来自所述水平梯度计算模块的像素点的水平梯度的平方值,并将计算结果输出给第一累积单元;
第二乘法单元依次计算来自所述水平梯度计算模块的像素点的水平梯度和来自所述垂直梯度计算模块的对应像素点的垂直梯度的乘积,并将计算结果输出给第二累积单元;
第三乘法单元依次计算来自所述垂直梯度计算模块的像素点的垂直梯度的平方值,并将计算结果输出给第三累积单元;
第一累积单元累计所述输入图像的以一个像素点为中心的窗口内的所有像素点的水平梯度的平方值的和,第二累积单元累计所述输入图像的以一个像素点为中心的窗口内的所有像素点的水平梯度和垂直梯度的乘积的和,第三累积单元累计所述输入图像的以一个像素点为中心的窗口内的所有像素点的垂直梯度的平方值的和;
所述特征值计算模块根据第一累积单元、第二累积单元和第三累积单元的针对同一窗口的累计结果计算该窗口的特征值,并将该窗口的特征值作为该窗口的中心像素点对应的特征值,
所述特征匹配模块还包括第一存储组件和第二存储组件,当前帧输入图像存储于其中的一个存储组件中,下一帧输入图像则会存储于另一个存储组件中,这样其中的一个存储组件存储的是当前帧输入图像,另一个存储组件存储上一帧输入图像,
第一存储组件包括第一存储模块和第一缓存模块,第二存储组件包括第二存储模块和第二缓存模块,所述存储组件中的缓存模块为先进先出存储器,其存储预定行的像素点的像素值,所述存储组件中的存储模块存储一帧图像的其余行的像素点的像素值,存储上一帧输入图像的存储组件中的存储模块将存储的像素点的像素值依次输出至同组的缓存模块中,
所述像素差值计算模块从存储上一帧输入图像的存储组件中的缓存模块中获取与当前帧输入图像的像素点在上一帧输入图像中对应的所有候选位置的像素点的像素值。
2.根据权利要求1所述的光流计算***,其特征在于,所述特征提取模块中的各个模块或单元工作于同一时钟下,各个模块或单元每N个时钟周期输出一个计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110311228.9A CN102509071B (zh) | 2011-10-14 | 2011-10-14 | 光流计算***和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110311228.9A CN102509071B (zh) | 2011-10-14 | 2011-10-14 | 光流计算***和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102509071A CN102509071A (zh) | 2012-06-20 |
CN102509071B true CN102509071B (zh) | 2016-04-13 |
Family
ID=46221152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110311228.9A Expired - Fee Related CN102509071B (zh) | 2011-10-14 | 2011-10-14 | 光流计算***和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102509071B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103247058B (zh) * | 2013-05-13 | 2015-08-19 | 北京工业大学 | 一种基于误差分布式多层网格的快速光流场计算方法 |
CN104159114A (zh) * | 2013-05-13 | 2014-11-19 | 哈尔滨点石仿真科技有限公司 | 一种计算图像帧间大运动速度的光流方法 |
CN104978728B (zh) * | 2014-04-08 | 2017-11-14 | 南京理工大学 | 一种光流法的图像匹配*** |
CN107924567A (zh) * | 2015-07-31 | 2018-04-17 | 深圳市大疆创新科技有限公司 | 构建光流场的***和方法 |
WO2017210868A1 (zh) | 2016-06-07 | 2017-12-14 | 深圳市大疆创新科技有限公司 | 数据处理方法、装置及*** |
CN108040217B (zh) * | 2017-12-20 | 2020-01-24 | 深圳岚锋创视网络科技有限公司 | 一种视频解码的方法、装置及相机 |
CN111275746B (zh) * | 2020-01-19 | 2023-05-23 | 浙江大学 | 一种基于fpga的稠密光流计算***及方法 |
CN112991381B (zh) * | 2021-03-15 | 2022-08-02 | 深圳市慧鲤科技有限公司 | 图像处理方法及装置、电子设备和存储介质 |
CN115359097A (zh) * | 2022-10-20 | 2022-11-18 | 湖北芯擎科技有限公司 | 稠密光流生成方法、装置、电子设备及可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101765022A (zh) * | 2010-01-22 | 2010-06-30 | 浙江大学 | 一种基于光流与图像分割的深度表示方法 |
CN101901481A (zh) * | 2010-08-11 | 2010-12-01 | 深圳市蓝韵实业有限公司 | 一种图像拼接方法 |
-
2011
- 2011-10-14 CN CN201110311228.9A patent/CN102509071B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101765022A (zh) * | 2010-01-22 | 2010-06-30 | 浙江大学 | 一种基于光流与图像分割的深度表示方法 |
CN101901481A (zh) * | 2010-08-11 | 2010-12-01 | 深圳市蓝韵实业有限公司 | 一种图像拼接方法 |
Non-Patent Citations (2)
Title |
---|
基于光流场的视频运动检测研究;向川平;《中国优秀硕士学位论文全文数据库》;20110501;第1-2,36-37页 * |
空间域超分辨率图像重建技术研究;张艳;《中国博士学位论文全文数据库》;20070414;第13-14,35-38页 * |
Also Published As
Publication number | Publication date |
---|---|
CN102509071A (zh) | 2012-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102509071B (zh) | 光流计算***和方法 | |
JP6771018B2 (ja) | 二次元配列プロセッサの性能向上 | |
CN110637461B (zh) | 计算机视觉***中的致密光学流处理 | |
Cambuim et al. | An FPGA-based real-time occlusion robust stereo vision system using semi-global matching | |
Puglia et al. | Real-time low-power FPGA architecture for stereo vision | |
Sanchez-Ferreira et al. | Background subtraction algorithm for moving object detection in FPGA | |
US11682212B2 (en) | Hierarchical data organization for dense optical flow processing in a computer vision system | |
Li et al. | High throughput hardware architecture for accurate semi-global matching | |
Tang et al. | FPGA‐Based Real‐Time Moving Target Detection System for Unmanned Aerial Vehicle Application | |
Tomasi et al. | Real-time architecture for a robust multi-scale stereo engine on FPGA | |
KR20210051707A (ko) | 드론 정지 비행을 위한 영상 기반 특징점 추적 장치 및 그 방법 | |
CN108282597A (zh) | 一种基于fpga的实时目标追踪***和方法 | |
Akin et al. | Dynamically adaptive real-time disparity estimation hardware using iterative refinement | |
Park et al. | A vision processor with a unified interest-point detection and matching hardware for accelerating a stereo-matching algorithm | |
Ding et al. | Improved real-time correlation-based FPGA stereo vision system | |
Arias-Estrada et al. | An FPGA co-processor for real-time visual tracking | |
CN112182042A (zh) | 基于fpga的点云特征匹配方法、***和路径规划*** | |
Seo et al. | A new parallel hardware architecture for high-performance stereo matching calculation | |
Long et al. | Detail preserving residual feature pyramid modules for optical flow | |
MacLean et al. | Leveraging cost matrix structure for hardware implementation of stereo disparity computation using dynamic programming | |
Kalomiros et al. | Comparative study of local SAD and dynamic programming for stereo processing using dedicated hardware | |
KR101460699B1 (ko) | 고성능 스테레오 정합 연산을 위한 병렬 스테레오 정합 연산 장치 | |
Vemulapati et al. | ORB-based SLAM accelerator on SoC FPGA | |
Qamar et al. | Design space exploration of a stereo vision system using high-level synthesis | |
CN109427071A (zh) | 一种全搜索块匹配方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170315 Address after: 214028 Jiangsu province Wuxi Zhenze New District Wu Road No. 18, block A 511 cancer Patentee after: JIANGSU HUJIACHONG COMPUTER TECHNOLOGY CO.,LTD. Address before: 1800 No. 214122 Jiangsu city of Wuxi Province Li Lake Avenue Patentee before: Jiangnan University |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160413 |