1.本发明涉及导航技术,尤其涉及导航中的地图构建技术。
背景技术:2.确定图像中的动态区域对于地图构建具有重要意义。当前的方法,对于如何准确确定出图像中动态区域,还有提高的空间。
技术实现要素:3.本发明鉴于现有技术的情况作出,用于克服现有技术中存在的一种或更多种的问题,至少提供一种有益的选择。
4.根据本发明的一个方面,提供了一种动态区域检测方法,包括:获得当前帧图像和当前帧图像的前帧图像这前后两帧图像间的单应矩阵,所述前帧图像为当前帧的前一帧或前预定帧的图像;利用单应矩阵对当前帧的图像进行变换;针对变换后的当前帧图像,计算光流场;以及对光流场进行二值化,确定动态区域。
5.本发明还涉及一种存储介质,存储计算机程序,所述计算机程序在被处理器执行时,可以实现所要求的保护的方法。
6.本发明的实施方式充分考虑和克服了获取图像用的相机自身运动造成的影响,能够准确地确定动态区域。
附图说明
7.结合附图可以更好地理解本发明。附图只是示意性的,不是对本发明的保护范围的限制,附图也不是按照比例绘制的,没有示出对于理解本发明没有帮助的部件。
8.图1是示出了依据本发明的一种实施方式的动态区域检测方法的示意性流程图。
9.图2示出了依据本发明的一种实施方式的计算前后两帧图像间的单应矩阵的示意性流程图。
10.图3示出了根据一种实施方式,计算当前帧图像的光流场的示意性流程图。
具体实施方式
11.下面结合附图对本发明的具体实施方式进行说明。这些说明都是示例性的,旨在使本领域技术人员能够实现本发明的实施方式,不是对本发明的保护范围的限制。说明中也没有描述对于实际实施不可缺少,但是对于理解本发明无关的内容。
12.本发明的发明人经过研究发现,现有技术之所以不能够准确确定出图像中动态区域,重要原因是因为没能充分考虑获取图像用的相机自身运动造成的影响。当相机自身存在运动时,静止物体和背景在图像中的位置会出现变化,从而导致的光流场变化。
13.图1是示出了依据本发明的一种实施方式的动态区域检测方法的示意性流程图。如图1所示,依据本发明的一种实施方式的动态区域检测方法首先在步骤s100计算前后两
帧图像间的单应矩阵。前后两帧图像即当前帧图像和当前帧图像的前帧图像,该前帧图像为当前帧的前一帧或前预定帧的图像。然后,在步骤s200,利用单应矩阵对当前帧的图像进行变换。接着,在步骤s300,针对变换后的当前帧图像,计算光流场。然后,在步骤s400,对光流场进行二值化,确定动态区域。根据一种实施方式,还包括在步骤,500,对动态区域做腐蚀、膨胀处理。下面这些步骤进行更详细的说明。
14.图2示出了依据本发明的一种实施方式的计算前后两帧图像间的单应矩阵的示意性流程图。如图2所示,依据本发明的一种实施方式,首先,在步骤s110,获得前后两帧图像,例如相邻的两帧图像,或间隔预定帧数的两帧图像。接着,在步骤s120,获得该两帧图像的匹配特征点。获得匹配特征点可以采用本领域技术人员现在知道和未来知悉的各种方法。例如,暴力匹配法或快速近似最近邻算法。然后,在s130对匹配特征点联立线性方程组,求解获得单应矩阵。
15.根据一种实施方式,使用奇异值分解法来求解获得单应矩阵。具体而言,前后两帧图像i
curr
和i
prev
中一对匹配好的特征点p1和p2,假定具有如下公式1中的关系,
16.p2=h*p1ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
17.将多对特征点联立线性方程组,即可求解出单应矩阵h。
18.另外,根据本发明的一种实施方式,在前后两帧图像中匹配点的数量大于4对的情况,可利用ransac(随机抽样一致算法)方法来求解单应矩阵。
19.根据一种实施方式,获得三阶的单应矩阵,例如可以表示如下:
[0020][0021]
上式中,h
ij
为单应矩阵参数。
[0022]
在获得单应矩阵之后,在步骤s200,利用单应矩阵对当前帧的图像(即前后两帧图像中的后一帧图像)进行变换。根据一种实施方式,利用单应矩阵对图像src(x,y)通过下式进行图像变换。
[0023][0024]
上式中,函数src是指取灰度,src(x,y)就是指图像x,y处的灰度。
[0025]
单应矩阵对当前帧的图像进行变换后的图像表示为dst(x,y)。
[0026]
采用三阶单应矩阵,并采用上述的公式进行图像变换,能够缩减运算量并能够充分利用单应矩阵的参数信息,从而在降低运算负担的同时确保精度。
[0027]
然后返回图1,在步骤s300,针对变换后的当前帧图像,计算光流场。
[0028]
图3示出了根据一种实施方式,计算当前帧图像的光流场的示意性流程图。
[0029]
在步骤s310,对该当前帧和前帧图像进行预定次数的缩放,获得不同分辨率下的多个图像,构建当前帧图像金字塔和前帧图像金字塔。
[0030]
根据一种实施方式,对原始图像进行三次缩放,构成图像金字塔,原始图像置于金字塔底层,最低分辨率图像置于金字塔顶层,金字塔总层数为4。图像金字塔中每一次对应的缩放系数分别为1.0,0.5,0.25,0.125。采用这样的办法以及缩放系数,可以更好地计算
光流,适应相机运动过快或移动目标运功过快的情况。在以上的实例中,相邻层的缩放系数相差2倍,但是也可以相差1.75倍到3倍之间,仍能适应相机运动过快或移动目标运功过快的情况。一般各相邻层采用相同的缩放系数相差倍数,例如在缩放3次的情况下,缩减系数不采用1.0、0.5、0.2、0.1这种。另外,可以进行更多次的缩放,但是进行6次基本上就可以了,更多次的缩放对计算能力要求更高,而提升的效果并不明显。
[0031]
构建当前帧图像金字塔的方法和构建前帧图像金字塔的方法相同。
[0032]
然后,在步骤s320,利用当前帧图像金字塔和前帧图像金字塔,针对该当前帧图像金字塔中的各图像,分别计算光流,最终获得各像素的像素水平光流值fu和垂直光流值fv。根据一种实施方式,使用上一层计算的光流结果,作为下一层光流的初始值。
[0033]
根据一种实施方式,假定前帧图像金字塔的l层图像在时刻t处的像素(x,y)的像素灰度与当前帧图像金字塔l层的图像在t+dt时刻所在的像素(x+dx,y+dy)的像素灰度相等,即,满足以下的公式(3):
[0034][0035]
并如下地获得各个像素的像素水平光流值fu和垂直光流值fv:
[0036]
从图像金字塔顶层开始,
[0037]
(1)根据以下公式(4),得到各个像素位置(x,y)的光流,
[0038][0039]
上式中,dx为像素水平光流值,dy为像素垂直光流值,d
l
为当前l层其光流的向量表示,(u,v)为当前所求位置的像素坐标,n为邻域范围大。
[0040]
(2)判断层数l是否为最底层,如果层数l已经是最底层,则采用以下的公式(5)确定最后的像素水平光流值fu和垂直光流值fv[0041][0042]
上式中,g
l
表示为l层光流的初始值,首层光流初始值g1=[00]
t
。
[0043]
然后,将像素水平光流值dx记为fu,像素垂直光流值dy记为fv,并结束程序。
[0044]
如果层数l不是最底层,则
[0045]
利用以下公式(6),获得下一层光流的初始值
[0046]gl+1
=2(g
l
+d
l
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)
[0047]
然后令l=l+1,返回步骤(1),针对各个像素继续计算像素水平光流值。dx,dy为像素在水平和竖直方向运动的距离,单位与x,y相同,均为像素坐标。在计算时,通过dx,dy表示光流。
[0048]
接着在步骤s330,通过像素水平光流值fu和垂直光流值fv计算各像素的光流幅值f。
[0049]
根据一种实施方式,如下地计算光流幅值f
[0050]
[0051]
当前帧图像的所有像素的光流幅值的集合,即构成了该当前帧图像的光流场。
[0052]
然后,在步骤s400,对光流场进行二值化,从而确定动态区域。根据一种实施方式,可以使用动态光流阈值θ来进行光流场的二值化。光流幅值超过该阈值即为运动区域,光流幅值低于该阈值即为静态区域。
[0053]
根据一种实施方式,如下地确定动态光流阈值θ。首先将已知的数据集(例如德国慕尼黑工业大学发布的tum rgb-d中的数据集)中的动态场景作为实验数据。然后,通过不断修改动态阈值,获得在不同动态阈值下动态区域的检测结果,将不同动态阈值下动态区域的检测结果与真实动态区域(例如先前人工标记出的动态区域)计算交并比,选择交并比最大时对应的动态阈值作为动态光流阈值。
[0054]
在运动场景中,如果运动目标的速度过快,两张图像的差异较为明显,单层光流很容易达到局部最优,无法正确追踪。根据本发明的实施方式,通过对同一个图像进行缩放,获得不同分辨率下的图像,构成图像金字塔。在计算光流时,使用上一层计算的光流结果,作为下一层光流的初始值。通过这种由粗至精的方式计算光流,可以有效解决物体运动不确定对光流的影响。
[0055]
根据本发明的实施方式,对当前图像进行单应变换后,相当于在空间上对图像进行的旋转和平移。通过单应矩阵对当前帧进行变换后,静止物体、背景在前后两帧中未知变化就会减小,再采用由粗至精的方式计算前后两帧的光流,这种配合的方式可以较好的检测动态区域,并且对于各种相机运动情况都会有很好的效果,进一步克服了单纯利用图像金字塔的方法在某种情况下动态区域检测效果不很明显的问题。
[0056]
在现有技术中,在相机自身运动较大的情况,随着相机的运动,静止物体及背景在图像中的位置均发生变化。虽然静止物体及背景在实际空间中并未发生运动,但由于相机的运动导致图像整体的光流幅值整体较大,从而无法有效的区分动静区域。另外,在现有技术中,如果相机运动的速度与运动目标一致,在空间中相机与目标保持相对静止,导致实际运动区域的光流幅值很小,反而由于相机的运动导致静态物体及背景区域的光流幅值非常大,使得无法有效的对动态区域进行检测。
[0057]
最后,可以在步骤s500对二值化后的动态区域做腐蚀处理和膨胀处理。二值化后的图像像素值只有0和1,像素值为0的区域表示为静止区域,像素值为1的区域为动态区域。
[0058]
腐蚀处理例如以预定大小(优选地,卷积核为3*3大小或5*5大小,边长为奇数)的卷积核对二值化后的图像进行卷积,取卷积核区域内的像素最小值并赋值给卷积核中心像素,即若卷积核范围内存在静态区域则卷积核中心像素为静态区域。
[0059]
膨胀处理与腐蚀相反,选择卷积核区域内最大值并赋值给卷积核中心像素,即若卷积核范围内存在动态区域则卷积核中心像素为动态区域。
[0060]
对动态区域先进行腐蚀处理然后进行膨胀处理,既减小了由于相机运动产生的噪声,又能更好地剔除落在运动区域边界的特征点,两者配合,减小了由于相机自身运动而导致静止物体和背景的光流场变化,使得最后的结果更加准确。
[0061]
采用相同的卷积核,选择卷积核区域最小值来进行腐蚀,取最大值进行膨胀,使得结果更加准确。
[0062]
根据本发明的方法,减小了由于相机自身运动而导致静止物体和背景的光流场变化,可以有效检测出动态区域。
[0063]
本领域技术人员容易理解,可以利用以上对方法的说明来理解本发明的装置,并且不同的实施方式之间可以进行组合。
[0064]
本领域技术人员容易理解,本发明的方法还可以包括与本发明的装置所完成的功能对应的其他步骤。以上的这些步骤也可以进行精简。
[0065]
本发明对单元和步骤的标号仅仅是为了说明的方便,除非上下文中有相反的说明,否则不代表其执行的顺序。
[0066]
本领域的技术人员应该理解,上述的各单元可以由软件或专门的硬件来实现,例如现场可编程门阵列、单片机、或微芯片等,或者也可以通过软件结合硬件的方式来实现。
[0067]
本发明还提供了一种电子设备,包括:处理器;用于存储所述处理器可执行指令的存储器;其中,所述处理器被配置为执行所述指令,以实现本发明的方法。
[0068]
本发明还涉及一种计算机软件,该计算机软件在被计算装置(例如单片机、电脑、cpu等)执行时,可以实现本发明的方法。
[0069]
本发明还涉及一种计算机软件存储装置,例如硬盘、软盘、闪存等,该计算机软件存储装置存储有上述的计算机软件。
[0070]
本发明对方法或步骤的说明可以用于理解对单元或装置的说明,对单元或装置的说明也可以用于理解本发明的方法或步骤。
[0071]
以上说明仅仅是示意性的,不是对本发明的保护范围的限制,在本发明的构思范围内的任何改变、替换均在本发明的保护范围内。
技术特征:1.一种动态区域检测方法,其特征在于,包括:获得当前帧图像和当前帧图像的前帧图像这前后两帧图像间的单应矩阵,所述前帧图像为当前帧的前一帧或前预定帧的图像;利用单应矩阵对当前帧的图像进行变换;针对变换后的当前帧图像,计算光流场;以及对光流场进行二值化,确定动态区域。2.根据权利要求1所述的动态区域检测方式,其特征在于,所述单应矩阵为三阶矩阵,表示如下:并根据以下公式利用单应矩阵对当前帧的图像进行变换:上式中,函数src是指取灰度,src(x,y)就是指图像的像素(x,y)处的灰度,变换后的图像表示为dst(x,y),x,y分别是像素在图像中的横坐标和纵坐标。3.根据权利要求1所述的动态区域检测方式,其特征在于,如下地计算当前帧图像的光流场:对该当前帧和所述前帧图像进行预定次数的缩放,获得不同分辨率下的多个图像,构建当前帧图像金字塔和前帧图像金字塔;基于当前帧图像金字塔和前帧图像金字塔,针对该当前帧图像金字塔中的各图像,逐层计算计算光流,使用上一层计算的光流结果,作为下一层光流的初始值,最终获得各像素的像素水平光流值f
u
和垂直光流值f
v
;通过像素水平光流值f
u
和垂直光流值f
v
计算各像素的光流幅值f。4.根据权利要求3所述的动态区域检测方式,其特征在于,如下地构建当前帧图像金字塔:对原始当前帧图像进行不少于3次的缩放,构成图像金字塔,相邻的缩放系数相差1.75倍到3倍;将原始当前帧图像置于金字塔底层,最低分辨率图像置于金字塔顶层。5.根据权利要求4所述的动态区域检测方法,其特征在于,假定前帧图像金字塔l层的图像在时刻t处的像素(x,y)的像素灰度与当前帧图像金字塔l层的当前帧图像在t+dt时刻所在的像素(x+dx,y+dy)的像素灰度相等,并如下地获得各像素的像素水平光流值f
u
和垂直光流值f
v
:从当前帧图像金字塔顶层开始,(1)根据以下公式(4),得到各个像素位置(x,y)的光流,
上式中,dx为像素水平光流值,dy为像素垂直光流值,d
l
为当前l层图像的光流的向量表示,(u,v)为当前所求位置的像素坐标,n为邻域范围大小,(2)判断层数l是否为最底层,如果层数l已经是最底层,则采用以下的公式(5)确定最后的像素水平光流值f
u
和垂直光流值f
v
上式中,g
l
表示为l层光流的初始值,首层光流初始值g1=[00]
t
,然后,将像素水平光流值dx记为f
u
,像素垂直光流值dy记为f
v
,作为对应像素的最终像素水平光流值f
u
和像素垂直光流值f
v
,如果层数l不是最底层,则利用以下公式(6),获得下一层光流的初始值g
l+1
=2(g
l
+d
l
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(6)然后令l=l+1,返回步骤(1),针对各个像素继续计算像素水平光流值和像素垂直光流值。6.根据权利要求1所述的动态区域检测方法,其特征在于,使用动态光流阈值来进行光流场的二值化,所述动态光流阈值如下获得:将已知的数据集中的动态场景作为实验数据,不断修改动态阈值,获得所述实验数据中不同动态阈值下动态区域的检测结果;计算不同动态阈值下动态区域的检测结果与该实验数据的真实动态区域之间的交并比,选择交并比最大时对应的动态阈值作为对应的动态场景的动态光流阈值。7.根据权利要求4所述的动态区域检测方法,其特征在于,对原始当前帧图像进行4次缩放构成图像金字塔,对应的缩放系数分别为1.0,0.5,0.25,0.125。8.根据权利要求1所述的动态区域检测方法,其特征在于,如下地获得单应矩阵:获得当前帧图像和前帧图像;获得该两帧图像的匹配特征点;对匹配特征点联立线性方程组,求解获得单应矩阵。9.根据权利要求1所述的动态区域检测方法,其特征在于,所述方法还包括以预定大小的卷积核对二值化后确定的所述动态区域进行卷积,取卷积核区域内的最小值更新动态区域范围,并随后选择卷积核区域内的最大值来再次更新动态区域范围。10.一种存储介质,存储计算机程序,所述计算机程序在被处理器执行时,可以实现权利要求1-9中任一项所述的方法。
技术总结本发明涉及动态区域检测方法和存储介质。该动态区域检测方法包括:获得当前帧图像和当前帧图像的前帧图像这前后两帧图像间的单应矩阵,所述前帧图像为当前帧的前一帧或前预定帧的图像;利用单应矩阵对当前帧的图像进行变换;针对变换后的当前帧图像,计算光流场;以及对光流场进行二值化,确定动态区域。确定动态区域。确定动态区域。
技术研发人员:危双丰 李澔
受保护的技术使用者:北京建筑大学
技术研发日:2022.07.22
技术公布日:2022/11/1