一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种具有动态目标检测功能的双目视觉里程计方法与流程

2022-02-23 00:51:07 来源:中国专利 TAG:


1.本发明涉及计算机视觉技术领域。具体涉及一种具有动态目标检测功能的双目视觉里程计方法。


背景技术:

2.在计算机视觉领域,slam(同步定位与建图)和目标检测都是非常重要的任务。传统上,大多数的视觉slam系统都具有静态环境的假设。这一假设降低了slam系统的鲁棒性和可拓展性。近年来,有大量的研究者开始研究动态环境下的slam技术。这类方法的主要工作集中于如何处理动态目标。
3.针对动态目标,目标的研究主要有两类处理方法,这两类处理方法都可以提高slam系统位姿估计的准确性,但这两类方法的对动态目标的处理方法不一样。
4.第一类处理方法是在slam系统中不使用场景的先验模型。仅仅使用如ransac算法、几何约束、重投影误差等方法来获得动态目标的特征点。针对动态点,一种处理方法是直接剔除,这种处理方法适用于存在少量动态特征点的情况,能提高位姿估计的准确性。另一种处理方法是将动态点也纳入slam系统位姿估计的框架,这种处理方法能处理存在这大量动态目标的环境,能提高slam系统在这类环境下的鲁棒性。但这类处理方法丢失了动态目标的运动和位置信息。在很多场景中,如高速公路、城市,动态目标的运动信息是很重要的一类信息。
5.第二类处理方法是在slam系统中使用场景的先验模型。近年来,随着卷积神经网络等复杂的图像处理方法的快速发展。大量的高精度模型被用于slam系统,如目标检测,背景建模等。这类场景先验模型往往能提供动态目标的先验信息。对于先验模型,一种处理方法是使用先验模型来处理动态特征点,准确地估计位姿,这种方法估计的位姿往往精度很高。另一种处理方法是利用先验模型处理动态点的同时,还用于获取动态目标的运动信息。如估计动态目标的运动速度等。然而,先验模型的计算过程非常复杂,且不能在cpu上实时地运行。


技术实现要素:

6.本发明的目的是为了解决现有技术中的上述缺陷,提供一种具有动态目标检测功能的双目视觉里程计方法。
7.本发明的目的可以通过采取如下技术方案达到:
8.一种具有动态目标检测功能的双目视觉里程计方法,所述方法包括如下步骤:
9.s1、在双目相机采集的当前帧的左目图像i利用进行边缘检测,检测过程采用canny边缘检测算子,具体检测步骤如下:首先对左目图像i进行高斯平滑,进一步采用sobel算子计算左目图像的梯度并计算梯度幅值和方向,然后量化梯度方向,对每一个像素沿着梯度方向进行非极大值抑制,获得细化的边缘,最后使用双阈值算法检测和连接边缘,获得左目图像最终的边缘,通过随机采样边缘,获得边缘特征点,将采样得到的边缘特征点
与上一帧的左目图像和当前帧的右目图像进行lucas-kanade(l-k)光流匹配,lucas-kanada光流匹配是通过计算图像像素点的光流场实现的,具体步骤如下:首先对左目图像进行缩放和插值,构建图像金字塔,然后基于灰度不变假设,对图像金字塔的顶层的每个边缘特征点建立光流约束方程,其次基于某一个窗口内的像素具有相同的运动假设,构建关于边缘特征点运动的超定线性方程,最后使用高斯-牛顿迭代求解图像金字塔顶层的光流场,将求解得到的光流场作为金字塔下一层光流场的初值,重复以上步骤,迭代计算金字塔底层图像的光流场,最终获得边缘特征点的运动,通过lucas-kanada光流匹配,获得边缘特征点在前、后帧之间的匹配点对和视差;
10.s2、根据当前帧获得的匹配点对,利用perspective-n-point算法估计相机位姿,结合随机抽样一致算法,获得包含动态点和错误点的点集,该点集表示为:p={p1,...,pn},n为点集中边缘特征点的数量,pn为第n个边缘特征点,其中,perspective-n-point算法是通过若干边缘特征点在世界坐标系和图像坐标系下的坐标求解相机位姿的,详细求解过程见文献:lepetit v,moreno-noguer f,fua p.epnp:an accurate o(n)solution to the pnp problem[j].international journal of computer vision,2009,81(2):155-166,估计相机位姿时,结合随机抽样一致算法获得点集p,具体分为如下四个步骤:首先,随机抽取4对匹配点,利用perspective-n-point算法估计初始相机位姿t,其次,计算所有边缘特征点在位姿t下的重投影误差,当重投影误差大于给定的阈值时,该边缘特征点被划为外点,否则,该点被划为内点,然后,统计相机位姿为t时所有的外点和内点的数量,最后,重复以上三个步骤,得到内点数量最多时的初始相机位姿,该位姿即所求得的相机位姿,该位姿下所有的外点构成的集合即为点集p;
[0011]
s3、根据事先指定的像素距离,对左目图像i划分为若干个行块和列块,统计落在每个行块和列块中对应特征点以及数量,获得数量直方图;
[0012]
s4、根据数量直方图,设定约束条件,对满足约束条件的行块和列块以及对应的特征点集分别取交集,获得含有高密度的图像块以及对应的特征点集;
[0013]
s5、计算获取到的高密度特征点的光流角度,根据一定的角度区间长度,获得光流角分布每个区间内的特征点以及数量,计算光流角度直方图;
[0014]
s6、利用光流角度直方图去除角度分布异常的边缘特征点,得到的动态点集中只包含动态点;
[0015]
s7、根据动态目标距离相机的距离与动态目标占据图像像素量的大小近似成比例,以及动态目标距离相机的距离与视差成比例,获得动态点占据图像的像素量与视差之间的关系,将动态点占据图像的像素量作为膨胀量,得到视差模型,利用视差模型计算每个动态点的膨胀量,获得膨胀矩阵;
[0016]
s8、通过提取左目图像i的fast角点特征,获取m个fast角点,fast角点特征是通过比较图像中某点与该点的圆形窗口上的16个像素的灰度值提取的,通过给定阈值,若圆形窗口上有连续的若干像素的灰度值均大于或小于中心点的灰度值,则中心点是fast角点,根据膨胀矩阵,在每个fast角点处进行图像膨胀,获得动态目标的二值分割图,使用opencv库开源的轮廓检测算法获得动态目标的检测框,该轮廓检测算法具体步骤见文献:suzuki s,be k.topological structural analysis of digitized binary images by border following[j].computer vision graphics&image processing,1985,30(1):32-46。
[0017]
进一步地,所述步骤s3过程如下:
[0018]
s31、针对左目图像i,设定行块的高度h,列块的宽度w,获得nr个行块,nc个列块,记第i个行块为第j个列块为设中的所有的特征点为p
ir
,表示为:
[0019]
中的所有的特征点为p
jc
,表示为:
[0020]
其中是第i个行块中特征点的数量,是第j个列块中特征点的数量,是第i个行块中第个特征点,是第j个行块中第个特征点;
[0021]
图像被划分为若干行块和列块,得到每一个图像块内边缘特征点的数量,边缘特征点的数量能反应图像块内特征点的密集程度,因此,边缘特征点的数量分布特征为计算数量直方图提供了依据。
[0022]
s32、根据获得的行块和列块以及对应的特征点集,计算数量直方图hr、hc,表示为:
[0023][0024][0025]
其中,是第nr个行块中特征点的数量,是第nc个列块中特征点的数量;
[0026]
数量直方图在行的方向和列的方向统计每一个图像块内边缘特征点的数量,定量地表达了边缘特征点分布的密集程度。
[0027]
进一步地,所述步骤s4过程如下:
[0028]
s41、设定取交操作的约束条件,表示为:s41、设定取交操作的约束条件,表示为:其中t1为给定的特征点数量的阈值;
[0029]
设定阈值t1,获得含有高密度特征点的行块和列块,同时,为了获得尽可能多的动态点,这些行块和列块的若干相邻图像块也被认为含有动态点。
[0030]
s42、将满足约束条件的行块和列块以及对于的特征点集求交集,获得高密度动态区域和对应的特征点集表示为:表示为:其中,δ为和相邻图像块的数量,记n
ij
为点集的大小,t2为给定点集内边缘特征点数量的阈值,当n
ij
≥t2时,为包含大量动态点的集合;
[0031]
取交集确定了高密度动态区域的具体位置,在满足取交操作的约束条件的情况下,高密度特征点在行块或列块内可能呈带状分布,此时动态区域对应的特征点集仅包含少量动态点,为了避免该情况,通过设定阈值t2,判断高密度动态区域是否包含大量动态点。进一步地,所述步骤s5过程如下:
[0032]
s51、对点集内的每个特征点m=1,...,n
ij
,计算对应的光流角m=1,...,n
ij
,,表示为:其中,δy和δx是边缘特征点光流的水平和垂直偏移量,的取值区间是[0
°
,360
°
];
[0033]
光流角表达边缘特征点的运动方向,这是进一步获取动态点的基础。
[0034]
s52、对光流角的取值范围[0
°
,360
°
]划分为s个区间,每个区间的范围为δθ,表示为:
[0035]
s53、依照光流角,统计每一个角度区间内特征点的数量,计算每一个高密度区域点集内的光流角度直方图表示为:其中k=1,...,s为角度区间[kδθ,(k 1)δθ]内边缘特征点的数量;
[0036]
光流角度直方图定量地描述了高密度区域点集内特征点的运动方向,δθ取值越小,光流角区间划分地越多,点集内特征点的运动方向表达地更加准确。
[0037]
进一步地,所述步骤s6过程如下:
[0038]
s61、根据光流角度直方图计算直方图的最大值n
max
,根据最大值判断内是否包含动态点,表示为:其中,ts为度量边缘特征点光流角分布集中程度的阈值,当n
max
>ts时,则认为内包含动态点,否则,则认为均为错误点;
[0039]
光流角度直方图的最大值n
max
描述光流角集中在某一个区间内特征点的数量,当内包含动态点时,动态点的光流角大致相等并集中于某几个区间,光流角度直方图在这些区间处取得最大值n
max
,设定阈值ts,判断内特征点光流角分布的集中程度,从而判断内是否包含动态点。
[0040]
s62、根据光流角,去除点集中角度分布异常的点,过程如下:判断是否成立,其中α是0到1之间的常数,如果成立则认定该点角度分布异常并进行去除,否则,认定该点角度分布无异常。
[0041]
当内包含动态点时,光流角度直方图取值在[α,α
·nmax
]内的区间被认为分布了大量动态点,其他区间分布了错误点并进行去除,这种去除方法充分利用了动态点的光流角特征,有效地去除了错误点。
[0042]
进一步地,所述步骤s7如下:
[0043]
s71、根据视差模型,计算左目图像i中每个点的膨胀量,获得膨胀矩阵w,视差模型表示如下:w
p
=β λd
p
[0044]
p是经过数量直方图滤除后的边缘特征点,β,λ为调整w
p
与d
p
之间偏差的常数,d
p
是边缘特征点p的视差,给定正方形区域,该正方形区域以p点为中心,[w
p
]为边长,[w
p
]代表对w
p
向上取整,同时认定正方形区域内每个点的膨胀量均为w
p

[0045]
视差模型定量地描述了动态目标距离相机的距离与动态目标占据像素量之间的关系,这种定量关系为进一步构建膨胀矩阵提供理论基础。
[0046]
s72、假设左目图像i中每个边缘特征点的初始膨胀量均为0,对同一个位置而处于不同的正方形区域,膨胀量取平均值,通过计算图像中每一个点的膨胀量,获得膨胀矩阵w,
膨胀矩阵w中存储每个像素点的膨胀量;
[0047]
膨胀矩阵可看作动态目标的先验信息,是下一步的二值分割的基础,膨胀矩阵的大小与坐目图像的大小一致,大部分元素为0,只有动态目标处的元素是通过视差模型计算得到的。
[0048]
进一步地,所述步骤s8过程如下:
[0049]
s81、提取左目图像的m个fast角点,以动态点为中心进行图像膨胀,获取动态目标的二值分割图,膨胀过程如下:
[0050]im
(x
±
w(x,y),y
±
w(x,y))=1,w(x,y)≠0
[0051]im
为待分割的二值图像,初值为0,(x,y)为fast角点l=1,...,m的位置,w(x,y)为膨胀矩阵w在(x,y)处的值,当w(x,y)≠0时,对二值图像im内的点(x
±
w(x,y),y
±
w(x,y))置1,即im(x
±
w(x,y),y
±
w(x,y))=1;
[0052]
对左目图像提取的fast角点能描述图像中动态目标轮廓的转折处,基于膨胀矩阵,只有动态目标处的fast角点对应的膨胀量不为0,其他位置的膨胀量均为0,因此,膨胀过程的计算量小,仅对若干图像块取反,获得二值分割图。
[0053]
s82、根据opencv库开源的轮廓检测算法,检测im的轮廓,获得动态目标的边界框。
[0054]
opencv库开源的轮廓检测算法能快速地检测二值图像的轮廓并计算包围该轮廓的最小矩形框。
[0055]
本发明相对于现有技术具有如下的优点及效果:
[0056]
(1)针对传统的slam方法着重于解决动态环境下的定位问题,本发明提出了一种基于光流直方图检测和多特征融合机制用于检测动态点并获得动态目标的边界框,这一机制提高了视觉里程计定位精度的同时,还能检测动态目标的位置,提高了slam方法的可拓展性。
[0057]
(2)针对不使用先验模型的slam方法,这些方法有效去除动态目标的影响的同时,丢失了动态目标的位置和运动信息。针对使用先验模型的slam方法,这些方法都需要计算复杂的先验模型,利用先验模型去除动态目标的影响,部分方法进一步获取了动态目标的运动和位置信息。但先验模型的计算开销非常大,无法在cpu上实时地运行。在本发明中,使用ransac方法去除动态目标影响的同时也获得了大量的外点,这些外点中包含着动态特征点和错误点。在本发明中,这些外点的光流特征被用于检测动态目标,一种光流直方图检测机制用于获得动态点集,一种融合了fast特征与canny边缘特征的动态目标检测机制被用于获得动态目标的二值分割图像,最后通过轮廓检测算法获得了动态目标的边界框。
附图说明
[0058]
图1是本发明公开的一种具有动态目标检测功能的视觉里程计方法的流程图;
[0059]
图2是本发明实施例中在某引用场景下的内点和外点示意图;
[0060]
图3是本发明实施例中在某引用场景下经过光流直方图算法处理后的动态点示意图;
[0061]
图4是本发明实施例中在某引用场景下的动态目标处的fast角点示意图;
[0062]
图5是本发明实施例中在某引用场景下的动态目标边界框示意图;
[0063]
图6是本发明实施例中运动轨迹对比图;
[0064]
图7是本发明实施例中动态目标检测效果图。
具体实施方式
[0065]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0066]
实施例
[0067]
如图1所示,本实施例具体公开了一种具有动态目标检测功能的双目视觉里程计,方法包括以下步骤:
[0068]
s1、在双目相机采集的当前帧的左目图像i利用进行canny边缘检测,canny边缘检测器是一种边缘检测最优的算法,通过随机采样边缘,获得边缘特征点,将采样得到的边缘特征点与上一帧的左目图像和当前帧的右目图像进行lucas-kanade(l-k)光流匹配,获得边缘特征点在前、后帧之间的匹配点对和视差;
[0069]
在前后帧匹配过程中,如果上一帧跟踪到的匹配点较少,则随机采样更多的边缘特征点;
[0070]
s2、根据当前帧获得的匹配点对,利用perspective-n-point(pnp)算法估计相机位姿,结合随机抽样一致算法,获得包含动态点和错误点的点集,该点集表示为:p={p1,...,pn},其中,n为点集中边缘特征点的数量,p
n pn为第n个边缘特征点;
[0071]
由于采集的边缘点数量多,大量的近处点和远处点都用于迭代估计位姿,因此,位姿计算精确度较高;
[0072]
s3、根据事先指定的像素距离,对左目图像i划分为若干个行块和列块,统计落在每个行块和列块中对应特征点以及数量,获得数量直方图;
[0073]
通过划分图像块,所有的边缘特征点被划分为若干个点集,由于不同图像块中边缘特征点分布的密集程度不一样,当边缘特征点分布密集时,对应图像块中边缘特征点的数量更多;
[0074]
在本实施例中,步骤s3过程如下:
[0075]
s31、针对左目图像i,设定行块的高度h,列块的宽度w,获得nr个行块,nc个列块,记第i个行块为第j个列块为设中的所有的边缘特征点为p
ir
,表示为:
[0076]
中的所有的边缘特征点为p
jc
,表示为:
[0077]
其中是第i个行块中边缘特征点的数量,是第j个列块中边缘特征点的数量,是第i个行块中第个边缘特征点,是第j个行块中第个边缘特征点;
[0078]
s32、根据获得的行块和列块以及对应的特征点集,计算数量直方图hr、hc,表示为:
[0079]
[0080][0081]
其中,是第nr个行块中边缘特征点的数量,是第nc个列块中边缘特征点的数量;
[0082]
为了获得分布密集的边缘特征点所在的图像块,需要进一步对行块和列块以及对应的边缘特征点集取交集,获得分布密集的特征点所在的矩形区域。
[0083]
s4、根据数量直方图,设定约束条件,对满足约束条件的行块和列块以及对应的特征点集分别取交集,获得含有高密度的图像块以及对应的特征点集;
[0084]
数量直方图反应了边缘特征点在每个行块和列块中分布的密集程度,通过设定阈值,获得含有高密度特征点的行块和列块,进一步对这些行块和列块取交集,获得高密度边缘特征点所在的矩形区域;
[0085]
在本实施例中,步骤s4过程如下:
[0086]
s41、设定取交操作的约束条件,表示为:s41、设定取交操作的约束条件,表示为:其中t1为事先给定的特征点数量的阈值,通过设定阈值t1,可以先获取具有高密度密度特征点的行块和列块,避免对所有的图像块取交操作,降低了计算的复杂度;
[0087]
s42、将满足约束条件的行块和列块以及对于的特征点集求交集,获得高密度动态区域和对应的特征点集表示为:表示为:其中,δ为和相邻图像块的数量,记n
ij
为点集的大小,t2为给定点集内边缘特征点数量的阈值,当n
ij
≥t2时,为包含大量动态点的集合。
[0088]
设定δ的目的是为了获取完整的动态点,因为具有高密度特征点的图像块的相邻图像块也被认为分布着一定数量的动态点,这是因为动态目标上的边缘特征点通常是随着图像块的位置逐渐减少的;
[0089]
s5、计算获取到的高密度特征点的光流角度,根据一定的角度区间长度,获得光流角分布每个区间内的特征点以及数量,计算光流角度直方图;
[0090]
动态点的光流角代表了动态目标相对相机的运动方向,对同一个动态目标,对应动态点的光流角是大致相同的,通过一个区域内边缘特征点的光流角度直方图,可以观察这个区域内边缘特征点的运动方向;
[0091]
在本实施例中,步骤s5过程如下:
[0092]
s51、对点集内的每个特征点计算对应的光流角表示为:其中,δy和δx是边缘特征点光流的水平和垂直偏移量,的取值区间是[0
°
,360
°
];
[0093]
s52、对光流角的取值范围[0
°
,360
°
]划分为s个区间,每个区间的范围为δθ,表示为:
[0094]
s53、依照光流角,统计每一个角度区间内特征点的数量,计算每一个高密度区域
点集内的光流角度直方图表示为:其中为角度区间[kδθ,(k 1)δθ]内边缘特征点的数量;
[0095]
这样,每一个高密度区域点集都对应着一个光流角度直方图由于动态点的光流角代表了动态目标相对相机的运动方向,而错误点的光流角度分布是杂乱无章的,因此,可以利用光流角度特征进一步去除错误点;
[0096]
s6、利用光流角度直方图去除角度分布异常的边缘特征点,得到的动态点集中只包含动态点;
[0097]
在本实施例中,步骤s6过程如下:
[0098]
s61、根据光流角度直方图计算直方图的最大值n
max
,根据最大值判断内是否包含动态点,表示为:其中,ts为度量边缘特征点光流角分布集中程度的阈值,当n
max
>ts时,则认为内包含动态点,否则,则认为均为错误点;
[0099]
由于动态点的数量一定占大多数,因此光流角也会集中在某几个区间,若的特征点的光流角分布异常,则认为内大部分都是错误点;
[0100]
s62、根据光流角,去除点集中角度分布异常的点,过程如下:判断是否成立,其中α是0到1之间的常数,如果成立则认定该点角度分布异常并进行去除,否则,认定该点角度分布无异常。当点集合存在大量动态点时,假设动态点的数量和动态点的光流角是呈现高斯分布的,这样做的目的是为了获取光流角度分布集中的边缘特征点,这样的边缘特征点最后被划分为动态点,如图3所示;
[0101]
s7、由于动态目标距离相机的距离与动态目标占据图像像素量的大小近似成比例,而动态目标距离相机的距离与视差成比例,因此可以获得动态点占据图像的像素量与视差之间的关系,将动态点占据图像的像素量作为膨胀量,便得到了视差模型,利用视差模型,计算每个动态点的膨胀量,获得膨胀矩阵;
[0102]
在本实施例中,步骤s7过程如下:
[0103]
s71、根据视差模型,计算左目图像i中每个点的膨胀量,获得膨胀矩阵w,视差模型表示如下:w
p
=β λd
p

[0104]
p是经过数量直方图滤除后的边缘特征点,β,λ为调整w
p
与d
p
之间偏差的常数,d
p
是边缘特征点p的视差,给定正方形区域,该正方形区域以p点为中心,[w
p
]为边长,[w
p
]代表对w
p
向上取整,同时认定正方形区域内每个点的膨胀量均为w
p

[0105]
s72、假设左目图像i中每个边缘特征点的初始膨胀量均为0,对同一个位置而处于不同的正方形区域,膨胀量取平均值,通过计算图像中每一个点的膨胀量,获得膨胀矩阵w,膨胀矩阵w中存储每个像素点的膨胀量。
[0106]
s8、为了快速地计算并获取动态目标的轮廓,通过提取左目图像i的fast角点特征,根据膨胀矩阵,在每个fast角点处进行图像膨胀,获得动态目标的二值分割图,使用
opencv库开源的轮廓检测算法获得动态目标的检测框。
[0107]
如图4所示,fast角点代表着动态目标轮廓的转角处,能用于定位动态目标并进一步获取动态目标的边界框;
[0108]
在本实施例中,步骤s8过程如下:
[0109]
s81、提取左目图像的m个fast角点,以动态点为中心进行图像膨胀,获取动态目标的二值分割图,膨胀过程如下:
[0110]im
(x
±
w(x,y),y
±
w(x,y))=1,w(x,y)≠0
[0111]im
为待分割的二值图像,初值为0,(x,y)为fast角点的位置,w(x,y)为膨胀矩阵w在(x,y)处的值,当w(x,y)≠0时,对二值图像im内的点(x
±
w(x,y),y
±
w(x,y))置1,即im(x
±
w(x,y),y
±
w(x,y))=1;
[0112]
表1.本发明的定位精度对比表
[0113][0114]
s82、根据opencv库开源的轮廓检测算法,检测im的轮廓,获得动态目标的边界框(如图5所示);
[0115]
本实施例在已公开的kitti数据集上对算法的性能进行了评估。所有的评估都在联想台式电脑上进行,该电脑配备了英特尔酷睿i7-7700cpu和8gbram,不使用gpu进行加速,系统为ubuntu18.04。本发明使用kitti数据集的序列01,03,04,05,06,07,09,10,12;图像序列与orb-slam2进行比较。图6为本发明与orb-slam2(关闭局部优化和回环检测线程)的运行轨迹对比图,从图6和表1可以看出,与orb-slam2相比,本发明的运行轨迹更加接近真实轨迹。
[0116]
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献