基于图像块二值化哈希表示的实时的稠密光流计算方法与流程

文档序号:21995675发布日期:2020-08-25 19:37阅读:337来源:国知局
基于图像块二值化哈希表示的实时的稠密光流计算方法与流程

本发明涉及计算机视觉技术领域,特别涉及一种基于图像块二值化哈希表示的实时稠密光流计算方法。



背景技术:

光流计算的计算机视觉领域中一个基本且重要的问题。求解光流即求解图像序列中像素点的瞬时运动,在目标跟踪、运动预测、三维重建、机器人导航等任务中,起到十分重要的作用。

现有的光流算法可大体分为基于区域匹配的方法、基于梯度的方法、基于相位的方法和基于能量的方法。根据光流估计结果的稠密性又可分为稀疏光流和稠密光流。稀疏光流往往针对图像中少量的特征点计算,而稠密光流则需要计算图像中所有像素的光流。对于稠密光流的估计而言,基于区域匹配的方法较为常用。相较于其他光流算法,基于区域匹配的方法运算速度更快,且对于偏移量较大的光流往往能够给出更准确的估计结果。

在barnes等人于2009年提出patchmatch算法中,通过构建并优化最近邻场nnf(nearest-neighborfield),得到两幅包含同一场景的不同图像i1和i2的像素对应关系。nnf是一个定义在图像i1上的映射函数f:若f(a)=b,其中a、b分别为图像i1、i2中某个图像块中心坐标,则表示b对应的图像块为图像i2中与a最相似的图像块。因此,通过求解nnf即可得到稠密的像素对应关系。经典的patchmatch算法,包含以下步骤:

1、以[-rmax,rmax]×[-rmax,rmax]平面上均匀分布随机初始化nnf映射,其中rmax为最大偏移量。

2、在未达到收敛条件时,执行以下过程:

(a)考虑nnf通常具有较强的平滑性,若f(x-1,y)或f(x,y-1)处存在关联性较好的映射,可向f(x,y)进行传播。f(x,y)处的映射取argminf{d(f(x,y)),d(f(x-1,y)),d(f(x,y-1))},其中d(·)表示在特定映射关系下两图像块的距离。算法中,一般需要更换传播方向,例如在第偶数次迭代中,取argminf{d(f(x,y)),d(f(x+1,y)),d(f(x,y+1))},将映射从右下向左上传播。

(b)在相邻图像块之间进行映射传播后,还需要在更大地范围内进行随机搜索。令v0=f(x,y),则在以v0为中心,不同的搜索半径下,随机寻找更好的映射关系,搜索位置取ui=v0+wαiri,其中ri为[-1,1]×[-1,1]这一二维平面上的均匀采样,w为最大搜索半径,α为指数衰减系数,取i=0,1,2,…,直到搜索半径wαi小于一个像素。

相关的众多光流算法方法,尤其是稠密光流算法通常耗时过长,鲜有算法能够达到较高的实时性,因此限制了光流估计在机器人导航、实时三维重建等对算法实时性要求较高的场景中的应用。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的目的在于提出一种基于图像块二值化哈希表示的实时稠密光流计算方法,该方法提高了图像块特征提取和相似性计算的效率,实现了高实时性的稠密光流计算。

为达到上述目的,本发明实施例提出了基于图像块二值化哈希表示的实时稠密光流计算方法,包括以下步骤:步骤s1,输入两帧连续的图像,将所述两帧连续的图像转换为两帧连续的灰度图;步骤s2,根据所述两帧连续的灰度图构建图像金字塔;步骤s3,通过编码函数处理所述图像金字塔,得到各个图像块的二值化哈希表示;步骤s4,根据所述各个图像块的二值化哈希表示选取所述图像金字塔中的最小尺寸图像,并在所述最小尺寸图像上随机初始化nnf映射;步骤s5,在所述最小图像尺寸上运行分块式patchmatch算法,得到所述最小图像尺寸所在层次的nnf映射;步骤s6,借助上一层图像金字塔中计算得到的nnf映射,对当前层nnf映射进行初始化;步骤s7,在当前层上运行所述分块式patchmatch算法,优化当前层nnf映射;步骤s8,循环执行所述步骤s6和所述步骤s7直至原始图像尺寸,得到最终光流估计结果。

本发明实施例的基于图像块二值化哈希表示的实时稠密光流计算方法,提高了图像块的特征提取和特征对比的速度,同时使用分块式的patchmatch算法,有利于实现gpu并行计算,进一步提高算法效率。

另外,根据本发明上述实施例的基于图像块二值化哈希表示的实时稠密光流计算方法还可以具有以下附加的技术特征:

进一步地,在本发明的一个实施例中,所述各个图像块的二值化哈希表示通过预先训练得到的编码函数实现,将图像块压缩为若干位二进制码,通过二进制码之间的汉明距离衡量对应图像块之间的相似性。

进一步地,在本发明的一个实施例中,所述步骤s3中的编码函数为hk(x)=δ(xwk),k=0,1,…,c,其中,为图像块展开得到的向量,wk为维空间中的一个超平面对应系数所构成的向量,δ(x)为阶跃函数,即当x≤0时δ(x)=0,否则δ(x)=1。

进一步地,在本发明的一个实施例中,所述编码函数中的wk通过迭代量化法itq得到。

进一步地,在本发明的一个实施例中,所述编码函数通过gpu上的神经网络运算库cudnn加速处理所述图像金字塔的速度。

进一步地,在本发明的一个实施例中,所述步骤s5和所述步骤s7的分块式patchmatch算法中,通过将图像分割为更小的图像区域,在对各个小图像区域内独立地运行分块式patchmatch算法。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为根据本发明一个实施例的基于图像块二值化哈希表示的实时稠密光流计算方法的流程图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参照附图描述根据本发明实施例提出的基于图像块二值化哈希表示的实时稠密光流计算方法。

图1是本发明一个实施例的基于图像块二值化哈希表示的实时稠密光流计算方法的流程图。

如图1所示,该基于图像块二值化哈希表示的实时稠密光流计算方法包括以下步骤:

在步骤s1中,输入两帧连续的图像,将所述两帧连续的图像转换为两帧连续的灰度图。

在步骤s2中,根据所述两帧连续的灰度图构建图像金字塔。

举例而言,对两帧图像i1和i2分别构建k层图像金字塔,每层金字塔降采样比例为η=0.5,得到其中l∈{0,1,…,k-1}。在本发明的一个实施例中,对640×480分辨率的输入图像取金字塔层数k=5。

在步骤s3中,通过编码函数处理所述图像金字塔,得到各个图像块的二值化哈希表示。

具体而言,对于两张图像的金字塔分别通过编码函数计算w×w大小的图像块的二值化压缩表示。在本发明的一个实施例中,对640×480分辨率的输入图像取图像块大小取9×9,每个像素的特征描述子通过以该像素为中心的图像块计算。特别地,对于图像边缘的像素,其图像块通过重复图像边缘像素的方式进行填充。

通过编码函数可以将图像块从维度压缩到b∈{0,1}c空间,其中c为二值化哈希码的长度。编码函数hk(x)=δ(xwk),k=0,1,…,c,其中δ(x)为阶跃函数,即当x≤0时δ(x)=0,否则δ(x)=1,wk为维空间中的一个超平面对应系数所构成的向量。在本发明的一个实施例中,取c=64,因此可将任意一个图像块通过64个不同的编码函数压缩为64位二进制数,总体上可使用unsignedlonglongint类型进行存储,具有较高的存储效率。

在本发明的一个实施例中,采用迭代量化法itq(iterativequantization)训练编码函数,该方法基于主成分分析实现,通过引入旋转矩阵r对原始投影方向进行修正,使得信息相对均匀地分布在压缩空间的各个维度,同时缩小了从连续空间压缩到离散空间这一过程带来的信息损失。具体步骤如下:

1、将图像块去中心化,即图像块中的每个像素的灰度值均减去整个图像块灰度平均值。随后采用主成分分析方法得到对图像块数据压缩的投影矩阵w,投影后的数据为v=wx。

2、随机初始化正交矩阵r。

3、执行以下迭代步骤,直到二值化编码b不再变化或达到迭代次数上限:

(a)保持r不变,将投影后的矩阵分配到距离最近的超立方体顶点上,得到b,为保证此处的编码仍然为零均值,b中的数值取{-1,1}。

(b)保持b不变,优化r。计算矩阵btv的svd分解,得到

通过二值化哈希表示,在哈希码之间可以使用汉明距离,即两串二值化哈希码之间不同的位数作为距离度量。在最新的gpu架构上,通过__procll()函数可以在o(1)时间内实现对64位的unsingedlonglongint数据之间的汉明距离的计算,从而大大提高了图像块之间距离计算的效率,有利于实现算法的高实时性。此外,学习得到的编码函数,可以保留图像块维度上的数据相似性,即对于相似的图像块,其对应二值化哈希码之间的汉明距离会是相对更小的。

由于编码器实际上可等同于一个与图像块大小相同的c个卷积核,因此可以利用nvidiacuda中的神经网络运算库cudnn进行加速计算。

在本发明的实施例中,在进行图像块的去均值计算时,图像块的均值的计算通过引入一个额外的卷积核实现,该卷积核与图像块大小相同,数值均为通过该卷积核可计算各个图像块灰度值的平均值,该卷积计算与编码计算中的卷积可同时进行。

在步骤s4中,根据所述各个图像块的二值化哈希表示选取所述图像金字塔中的最小尺寸图像,并在所述最小尺寸图像上随机初始化nnf映射。

根据上述举例,步骤s4也就是,对图像金字塔中的第l=k-1层,即最小尺寸图像,随机初始化nnf映射关系fk-1

在步骤s5中,在所述最小图像尺寸上运行分块式patchmatch算法,得到所述最小图像尺寸所在层次的nnf映射。

也就是说,使用分块式patchmatch算法进行迭代更新,优化fk-1

在步骤s6中,借助上一层图像金字塔中计算得到的nnf映射,对当前层nnf映射进行初始化。

具体地,对图像金字塔中的第0≤l<k-1层,由于l+1层已经对光流给出的一个粗略的估计,可通过l+1层的nnf映射进行初始化,即

在步骤s7中,在当前层上运行所述分块式patchmatch算法,优化当前层nnf映射。

也就是说,运行分块式patchmatch算法,优化fl

在步骤s8中,循环执行所述步骤s6和所述步骤s7直至原始图像尺寸,得到最终光流估计结果。

也就是说,重复步骤s6、s7,直到原始图像大小,得到最终的nnf映射,即直到l=0,可得到最终的光流估计。

不同于经典的patchmatch算法的是,在本发明的实施例中,对图像进行了分块处理。例如,对于640×480分辨率的图像,若以η=0.5的降采样比例构建5层金字塔,记原图像分辨率为第0层,则第l层被切分为(32×0.5l)×(32×0.5l)个20×15像素大小的图像区域。本发明的实施例中,每个小图像区域内分别运行patchmatch,由于各个图像区域内的算法运行相互独立,因此可以并行地在gpu中运行,大大提高了算法的运行效率和并行性。

根据本发明实施例提出的基于图像块二值化哈希表示的实时稠密光流计算方法,提高了图像块的特征提取和特征对比的速度,同时使用分块式的patchmatch算法,有利于实现gpu并行计算,进一步提高算法效率。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1