
技术摘要:
本发明属于计算机视觉处理技术领域,公开了一种变分光流FPGA实现方法、系统、存储介质、终端,对两帧输入图像的预处理,包括图像色彩空间转换和图像去噪,输出为两幅预处理后的图像;预处理后的图通过图像邻域像素计算出当前像素的水平方向梯度、垂直方向梯度;同时, 全部
背景技术:
目前,计算机视觉是一门主要研究如何利用图像进行表达的学科。作为计算机视 觉的分支,光流估计是一种广泛应用的像素运动表示方法,是计算机视觉领域最基础、最广 泛的问题之一。目前主流的光流估计方法是基于变分优化技术的光流算法。变分优化技术 将光流估计问题描述为目标能量函数的最小化问题,通过对目标能量函数的求解,将最终 的问题转化为一个超大型线性方程的求解问题。典型的变分光流技术通常包括预处理、线 性方程组构建、方程求解等步骤,这些步骤计算复杂度相当高。常见的的变分光流实现主要 基于C/C 、Matlab等高级语言进行实现,由于变分光流极高的计算复杂度导致基于高级语 言的实现运行速度慢,从而应用场景受限。针对采用高级语言实现的变分光流算法速度慢 的问题,通常将算法分为多个模块,在通用处理器上采用多线程技术实现多个模块的同时 运行,以提高处理器利用率。FPGA(FieldProgrammable GateArray可编程逻辑门阵列)能够 有效实现多个模块的并行加速,是硬件加速很好的选择。但是对于变分光流技术来说,传统 的FPGA开发方式实现难度高,架构设计困难,难以满足算法的快速更新迭代。针对以上问 题,目前需要一种新的方法,使之能很方便地提高变分光流算法的运算速度,并且能够快速 进行算法的实现。 通过上述分析,现有技术存在的问题及缺陷为: (1)目前的变分光流技术通的计算复杂度相当高,基于高级语言的实现运行速度 慢,应用场景受限。 (2)传统的FPGA开发方式实现难度高,架构设计困难,难以满足算法的快速更新迭 代。 解决以上问题及缺陷的难度为: (1)基于高级语言设计的算法通常以帧为单位进行处理,而基于FPGA实现的算法 通常以像素为单位进行处理,需要将基于帧处理的算法转化为基于像素流处理的算法。 (2)传统的多线程加速方式需要将算法分解成可并行化的多个步骤,然后用多个 线程同时进行运算。而FPGA基于寄存器、逻辑电路来描述基于数据流结构的算法,相当于采 用更多的线程来同时计算,需要将算法分解为更加精细的计算步骤。 (3)传统的FPGA开发采用硬件描述语言来描述算法的硬件结构,而FPGA开发需要 经验丰富的硬件工程师来实现,通常FPGA开发工程师与算法工程师之间的沟通需要浪费大 量的时间。 解决以上问题及缺陷的意义为: (1)直接地,将变分光流算法应用到FPGA硬件上,能够拓展变分光流算法在嵌入式 场景的应用范围。 4 CN 111583092 A 说 明 书 2/7 页 (2)间接地,变分光流算法的FPGA实现能够加速一些需要光流计算结果的计算机 视觉算法在嵌入式场景的应用范围。 (3)另外,采用基于模型设计的方法实现光流算法在FPGA上的实现,能够很容易地 进行算法的仿真、调试,并能自动生成高效的硬件描述代码,避免了手工编写代码过程中大 意出错的问题。同时,采用基于模型设计的方法对于其他计算机视觉算法的FPGA硬件实现 能够提供有益参考。
技术实现要素:
针对现有技术存在的问题,本发明提供了一种变分光流FPGA实现方法、系统、存储 介质、终端。 本发明是这样实现的,一种变分光流FPGA实现方法,所述变分光流FPGA实现方法 包括: 第一步,对两帧输入图像的预处理,包括图像色彩空间转换和图像去噪,输出为两 幅预处理后的图像; 第二步,预处理后的图通过图像邻域像素计算出当前像素的水平方向梯度、垂直 方向梯度;同时,通过两帧图像中对应位置的像素计算出时间方向的梯度; 第三步,根据图像预处理模型、图像梯度计算模型的输出,计算出变分光流计算所 需的大型线性方程组的参数; 第四步,通过迭代计算模型对最终的光流输出进行求解。 进一步,所述第一步包括:当输入是彩色图像经过色彩空间转换模块转换为灰度 图像,若输入图像本身是灰度图像保持原始输入;通过图像行缓存模块实现窗口列向量的 提取,然后由延迟缓存单元缓存多拍列向量后输出当前像素对应的滑动窗口,得到滑动窗 口后,通过矩阵乘法单元实现窗口像素与滤波器模板像素的点乘,之后通过累加求和单元 实现所有点乘结果的所有元素的累加和即为该窗口对应像素的最终输出。 进一步,所述第二步包括:图像梯度计算实现两帧图像的水平x方向梯度、垂直y方 向梯度、时间t方向梯度,x方向的梯度由延迟单元实现左右相邻像素的灰度值相减进行计 算;y方向梯度由行缓存单元实现上下相邻像素的提取后相减进行计算。 进一步,所述第三步包括:参数计算实现变分光流计算所需构建的大型线性方程 组的参数的计算,变分光流计算过程中需要计算Ψ函数的值,以Ix表示图像x方向梯度Iy表 示y方向梯度It表示时间方向梯度u表示初始化的x方向光流v表示初始化的y方向光流,ε表 示常数,则Ψ公式表示为: 变分光流最终所需的线性方程共5组系数分别是A11、A12、A22、B1、B2,公式表示为: 5 CN 111583092 A 说 明 书 3/7 页 Ψ函数作为参数计算模块中一个独立单元,其他参数通过信号线连接到一起通过 计算后输出,其所需参数包括Ix、Iy、It、u、v。 进一步,所述第四步包括:光流解算需要Φ函数的计算值,计算需要用到初始光流 值的梯度值,假定当前光流初始值(u,v)在x和y方向上的梯度分别表示为ux、uy、vx、vy,则Φ 函数公式表示为: 进一步,光流求解实现对构建的大型线性方程组进行求解,将参数计算模块计算 的A11、A12、A22、B1、B2、Φ作为参数数对方程进行求解;采用的求解算法是红黑法SOR,基于红 黑法SOR分组运算的原理,将SOR计算模型设计为配置为奇数组计算模型和偶数组计算模 型;选定模型参与奇数组运算,则当像素流通过该模块时判断像素是否为组内像素;若当前 像素为组内像素则更新输出的当前迭代值,否则将保持输入值不变并进行相应延迟后输 出;将奇数组计算模型与偶数组计算模型首尾相连则组成完整的单次迭代模型。 进一步,所述变分光流FPGA实现方法通过单次迭代模型实现多次迭代模型有两种 形式: (1)采用一个单次迭代模型和一个存储控制器,单次迭代的输出直接通过存储控 制器存储到存储器中,并在下一循环从存储器读出后通过计算模块实现一次迭代,在存储 控制器的控制下,实现方程的迭代求解; (2)将多个单次迭代模型级联实现多次迭代运算,一次迭代的输出直接接入下一 次迭代模块的输入。 本发明的另一目的在于提供一种接收用户输入程序存储介质,所存储的计算机程 序使电子设备执行权利要求任意一项所述包括下列步骤: 第一步,对两帧输入图像的预处理,包括图像色彩空间转换和图像去噪,输出为两 幅预处理后的图像; 第二步,预处理后的图通过图像邻域像素计算出当前像素的水平方向梯度、垂直 方向梯度;同时,通过两帧图像中对应位置的像素计算出时间方向的梯度; 第三步,根据图像预处理模型、图像梯度计算模型的输出,计算出变分光流计算所 需的大型线性方程组的参数; 第四步,通过迭代计算模型对最终的光流输出进行求解。 本发明的另一目的在于提供一种实施所述变分光流FPGA实现方法的变分光流 FPGA实现系统,所述变分光流FPGA实现系统包括: 图像预处理模块,用于完成对两帧输入图像的预处理功能,包括图像色彩空间转 换模块和图像去噪模块,模型输出为两幅预处理后的图像; 图像梯度计算模块,包含图像窗口提取模块、梯度计算模块,用于通过图像邻域像 6 CN 111583092 A 说 明 书 4/7 页 素计算出当前像素的水平方向梯度、垂直方向梯度;同时,通过两帧图像中对应位置的像素 计算出时间方向的梯度; 参数计算模块,用于根据图像预处理模型、图像梯度计算模型的输出,计算出变分 光流计算所需的大型线性方程组的参数; 光流解算模块,用于通过迭代计算模型对最终的光流输出进行求解。 本发明的另一目的在于提供一种计算机视觉终端,所述计算机视觉终端搭载所述 的变分光流FPGA实现系统。 结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明采用基于 模型的FPGA设计方法,通过代码生成的方式生成目标FPGA平台的硬件描述代码,能够极大 地缩短光流算法在FPGA硬件上的应用开发时间。本发明采用模块化设计方法,对每个所述 模块采用统一的数据接口,各个模块相互独立,易于裁剪、扩充和维护。本发明的模型采用 流水线结构设计,能够极大地提高变分光流算法的运算速度,能够达到实时应用的目的。 附图说明 为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使 用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的 附图。 图1是本发明实施例提供的变分光流FPGA实现方法流程图。 图2是本发明实施例提供的变分光流FPGA实现系统的结构示意图; 图中:1、图像预处理模块;2、图像梯度计算模块;3、参数计算模块;4、光流解算模 块。 图3是本发明实施例提供的变分光流FPGA实现方法实现流程图。 图4是本发明实施例提供的一种