位姿确定方法、装置及存储介质与流程

文档序号:15696259发布日期:2018-10-19 19:05阅读:168来源:国知局
位姿确定方法、装置及存储介质与流程

本发明实施例涉及计算机技术领域,特别涉及一种位姿确定方法、装置及存储介质。



背景技术:

ar(augmentedreality,增强现实)技术是一种实时地追踪相机的位置和姿态,并结合虚拟的图像、视频或者三维模型进行显示的技术,能够将虚拟场景与实际场景结合显示,是目前计算机视觉领域的重要研究方向之一。ar技术中最重要的问题在于如何准确确定相机的位置和姿态。

相关技术提出了一种通过追踪模板(marker)图像中的特征点来确定相机位置和姿态的方法,先预先定义好一个模板图像,提取模板图像中的特征点,随着相机的位置或姿态的变化对提取的特征点进行追踪,每当相机当前拍摄到一个图像时,在当前图像中识别模板图像的特征点,从而能够将特征点在当前图像中的位置和姿态与特征点在模板图像中的位置和姿态进行对比,得到特征点的位姿参数,进而得到当前图像相对于模板图像的位姿参数,如旋转参数和位移参数,该位姿参数可以表示相机拍摄当前图像时的位置和姿态。

在实现本发明实施例的过程中,发明人发现上述相关技术至少存在以下问题:当相机的位置或姿态的变化过多而导致当前图像中不存在特征点时,无法追踪到特征点,也就无法确定相机的位置和姿态。



技术实现要素:

本发明实施例提供了一种位姿确定方法、装置及存储介质,可以解决相关技术的问题。所述技术方案如下:

第一方面,提供了一种位姿确定方法,所述方法包括:

通过追踪第一特征点,获取相机拍摄的第一图像相对于标记图像的位姿参数,所述第一特征点通过从所述标记图像中提取特征点得到;

当所述第一图像不满足特征点追踪条件时,从所述第一图像中提取第二特征点,所述第二特征点与所述第一特征点不同;

通过追踪所述第一特征点和所述第二特征点,获取所述相机拍摄的第二图像相对于所述标记图像的位姿参数,所述第二图像为所述相机在所述第一图像之后拍摄的图像。

第二方面,提供了一种位姿确定装置,所述装置包括:

第一获取模块,用于通过追踪第一特征点,获取相机拍摄的第一图像相对于标记图像的位姿参数,所述第一特征点通过从所述标记图像中提取特征点得到;

特征点处理模块,用于当所述第一图像不满足特征点追踪条件时,从所述第一图像中提取第二特征点,所述第二特征点与所述第一特征点不同;

第二获取模块,用于通过追踪所述第一特征点和所述第二特征点,获取所述相机拍摄的第二图像相对于所述标记图像的位姿参数,所述第二图像为所述相机在所述第一图像之后拍摄的图像。

第三方面,提供了一种位姿确定装置,所述位姿确定装置包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并具有以实现如第一方面所述的位姿确定方法中所具有的操作。

第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并具有以实现如第一方面所述的位姿确定方法中所具有的操作。

本发明实施例提供的技术方案带来的有益效果是:

本发明实施例提供的方法、装置及存储介质,通过在追踪第一特征点,获取相机拍摄的图像相对于标记图像的位姿参数的过程中,当第一图像不满足特征点追踪条件时,从第一图像中提取第二特征点,通过追踪第一特征点和第二特征点,获取相机拍摄的图像相对于标记图像的位姿参数,从而确定相机的位置和姿态,通过在图像不满足特征点追踪条件时采用提取新特征点的方式,避免了由于相机的位置或姿态的变化过多而导致无法追踪到特征点的的情况,增强了鲁棒性,提高了相机的追踪精度。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的场景界面的显示示意图;

图2是本发明实施例提供的另一场景界面的显示示意图;

图3是本发明实施例提供的一种位姿确定方法的流程图;

图4是本发明实施例提供的一种图像示意图;

图5是本发明实施例提供的一种特征点的分布示意图;

图6是本发明实施例提供的一种位姿确定方法的流程图;

图7是本发明实施例提供的一种操作流程的示意图;

图8是本发明实施例提供的一种位姿确定装置的结构示意图;

图9是本发明实施例提供的一种终端的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种位姿确定方法,应用于智能设备追踪相机的位置和姿态的场景下,尤其是在ar场景下,智能设备采用ar技术进行显示时,需要追踪相机的位置和姿态,如ar游戏、ar视频等。

其中,智能设备配置有相机和显示单元,相机用于拍摄现实场景的图像,显示单元用于显示由现实场景与虚拟场景结合构成的场景界面。智能设备随着相机的运动可以追踪相机的位置和姿态的变化,还可以拍摄现实场景的图像,按照相机的位置和姿态的变化依次显示当前拍摄到的多个图像,从而模拟出显示三维界面的效果。并且,在显示的图像中可以添加虚拟元素,如虚拟图像、虚拟视频或者虚拟三维模型等,随着相机的运动,可以按照相机的位置和姿态的变化,以不同的方位显示虚拟元素,从而模拟出显示三维虚拟元素的效果。现实场景的图像与虚拟元素结合显示,构成了场景界面。

例如,参见图1和参见图2,智能设备在拍摄到的包含桌子和茶杯的图像中添加了一个虚拟人物形象,随着相机的运动,拍摄到的图像发生变化,虚拟人物形象的拍摄方位也发生变化,模拟出了虚拟人物形象在图像中相对于桌子和茶杯静止不动,而相机随着位置和姿态的变化同时拍摄桌子、茶杯和虚拟人物形象的效果,为用户呈现了一幅真实立体的画面。

图3是本发明实施例提供的一种位姿确定方法的流程图,该位姿确定方法的执行主体为智能设备,该智能设备可以为配置有相机的手机、平板电脑等终端或者为配置有相机的ar眼镜、ar头盔等ar设备,参见图3,该方法包括:

301、在未设置标记图像的情况下,智能设备获取相机拍摄的第三图像,将第三图像设置为标记图像。

本发明实施例中,为了追踪相机的位置和姿态的变化,需要以标记图像作为基准,在相机拍摄至少一个图像的过程中,通过追踪标记图像的特征点来确定相机的位姿参数。

为此,在未设置标记图像的情况下,智能设备可以通过相机拍摄图像,获取相机当前拍摄的第三图像,将第三图像设置为标记图像,从而实现标记图像的初始化,后续智能设备继续拍摄其他图像的过程中,即可通过追踪标记图像的特征点来获取每个图像的位姿参数。

其中,相机可以按照预设周期进行拍摄,每隔一个预设周期拍摄一个图像,该预设周期可以为0.1秒或者0.01秒等。

在一种可能实现方式中,为了防止标记图像中特征点数量较少而导致追踪失败,当获取第三图像后,可以先从第三图像中提取特征点,判断提取到的特征点数量是否达到预设数量,当从第三图像中提取到的特征点数量达到预设数量时,再将第三图像设置为标记图像,而当从第三图像中提取到的特征点数量未达到预设数量时,可以不将第三图像设置为标记图像,而是获取相机拍摄的下一个图像,直至提取的特征点数量达到预设数量的图像时,将该提取的特征点数量达到预设数量的图像设置为标记图像。

其中,提取特征点时采用的特征提取算法可以为fast(featuresfromacceleratedsegmenttest,加速段测试特征点)检测算法、shi-tomasi(史托马西)角点检测算法、harriscornerdetection(harris角点检测)算法等,预设数量可以根据对追踪精确度的需求确定。

在另一种可能实现方式中,考虑到不仅要提取足够数量的特征点,而且为了避免提取的特征点集中在同一个区域而导致提供的信息不足,还要提取具有空间分散性的特征点。为此,从标记图像中提取特征点时,先将标记图像划分为多个尺寸相同的栅格区域,并从标记图像中提取特征点,获取提取的每个特征点的权重。在划分出的每个栅格区域中提取一个权重最高的特征点,其他的权重较低的特征点将不再考虑,直至标记图像中的所有栅格区域均提取了特征点或者直至标记图像中提取的特征点数量达到预设数量时为止。

其中,每个栅格区域的尺寸可以根据追踪精度需求以及要求提取的特征点数量确定,特征点的权重用于表示特征点的梯度大小,特征点的权重越大表示梯度越大,越容易追踪,因此采用权重较大的特征点进行追踪会提高追踪精确度。

采用上述栅格区域来筛选特征点,可以保证一个栅格区域中仅包括一个特征点,不会出现多个特征点集中在同一个区域的情况,保证了特征点之间的空间分散性。

初始化标记图像成功后,设置该标记图像的旋转参数和位移参数、初始特征点深度和初始单应性矩阵。例如可以将初始特征点深度s设置为1,将旋转参数矩阵设置为单位矩阵,将初始平移矩阵设置为[0,0,s],将初始单应性矩阵设置为单位矩阵。并且,为了保证算法的统一,需要保证初始特征点深度与初始相机姿态的深度相同。

302、通过追踪第一特征点,获取相机拍摄的第一图像相对于标记图像的位姿参数。

从标记图像中提取特征点,将从标记图像中提取的特征点作为要追踪的目标特征点。随着相机的位置或姿态的变化,智能设备通过相机拍摄至少一个图像,并且通过在该至少一个图像中追踪特征点,得到每个图像相对于标记图像的位姿参数。

本发明实施例以当前追踪第一特征点为例,该第一特征点可以包括从标记图像中提取的特征点,或者,既可以包括从标记图像中提取的特征点,也可以包括相机在标记图像之后拍摄的图像中提取的特征点,具体提取方式与下述步骤中从第一图像中提取特征点的方式类似,在此暂不做赘述。

追踪第一特征点时,对于相机拍摄的相邻两个图像,使用从上一图像中提取的该第一特征点进行光流,从而找到上一图像与下一图像之间匹配的第一特征点,并得到匹配的第一特征点的光流信息,该光流信息用于表示匹配的第一特征点在该相邻两个图像中的运动信息,则根据匹配的第一特征点的光流信息可以确定相邻两个图像中第二个图像相对于第一个图像的位姿参数。进行光流时采用的算法可以为lucas-kanade(卢卡斯-卡纳德)光流算法或者其他算法,除光流外,也可以采用描述子或者直接法对特征点进行匹配。

那么,对于相机在标记图像之后拍摄的第一图像来说,根据从标记图像至该第一图像中的每个图像相对于上一个图像的位姿参数,可以进行迭代,从而确定该第一图像相对于标记图像的位姿参数。其中,该第一图像相对于标记图像的位姿参数可以包括位移参数和旋转参数,该位移参数用于表示相机拍摄该第一图像时的位置与拍摄标记图像时的位置之间的距离,该旋转参数用于表示相机拍摄该第一图像时的旋转角度与拍摄标记图像时的旋转角度之间的角度差。且,该位姿参数可以采用旋转位移矩阵的形式来表示,该旋转位移矩阵由旋转参数矩阵和位移参数矩阵组成,旋转参数矩阵中包括旋转参数,位移参数矩阵中包括位移参数。

例如,从标记图像开始,相机依次拍摄到图像1、图像2、图像3,并获取到了图像1相对于标记图像的位姿参数(r1,t1)、图像2相对于图像1的位姿参数(r2,t2)以及图像3相对于图像2的位姿参数(r3,t3),则根据这些位姿参数可以进行迭代,确定图像3相对于标记图像的位姿参数(r3’,t3’)为:

在一种可能实现方式中,可以通过单应性矩阵来获取位姿参数,也即是该步骤302可以包括以下步骤3021-3022:

3021、通过追踪第一特征点,获取第一图像相对于标记图像的单应性矩阵。

其中,该单应性矩阵是表示第一图像中的特征点与标记图像中的相应特征点之间的转换关系的矩阵,因此具有以下关系:

xc=hca*xa;

其中,xc表示图像c中特征点的二维坐标对应的齐次坐标,xa表示图像a中相应特征点的二维坐标对应的齐次坐标,hca表示图像c相对于图像a的单应性矩阵。

由于特征点的二维坐标对应的齐次坐标均为3*1的向量,因此单应性矩阵为3*3的矩阵,可以表示为

因此,在相机拍摄过程中,可以追踪多个第一特征点,从而获取到多个第一特征点分别在两个图像中的二维坐标对应的齐次坐标,根据获取到的坐标利用上述关系即可计算出两个图像之间的单应性矩阵。其中,单应性矩阵中包括9个元素,将其中一个设置为1后具有8个未知量,因此为了取得单应性矩阵的唯一解,至少获取4个特征点在两个图像中的二维坐标对应的齐次坐标。

针对该标记图像和该第一图像,可以通过在从标记图像的下一个图像至第一图像的每个图像中追踪第一特征点,获取每个图像相对于上一个图像的单应性矩阵,对每个图像相对于上一个图像的单应性矩阵进行迭代处理,得到第一图像相对于标记图像的单应性矩阵。

3022、根据旋转位移矩阵应满足的预设约束条件,对单应性矩阵进行分解得到第一图像相对于标记图像的旋转位移矩阵,从旋转位移矩阵中获取第一图像相对于标记图像的位姿参数。

该步骤3022包括:

(1)将标记图像的图像坐标系向z轴的负方向平移一个单位形成第一坐标系,根据旋转位移矩阵应满足的预设约束条件对单应性矩阵进行分解,得到第一图像相对于第一坐标系中的标记图像的旋转位移矩阵。

其中,该旋转位移矩阵包括第一图像相对于第一坐标系中的标记图像的旋转参数矩阵和位移参数矩阵,且旋转参数矩阵中的元素即为第一图像相对于第一坐标系中的标记图像的旋转参数,位移参数矩阵中的元素即为第一图像相对于第一坐标系中的标记图像的位移参数。该预设约束条件为旋转位移矩阵中旋转参数矩阵的列向量为单位矩阵,且旋转参数矩阵的第一列与第二列的乘积等于第三列。

在一种可能实现方式中,第一图像中的特征点与标记图像中的相应特征点之间还具有如下转换关系:

其中,rcm表示第一图像相对于第一坐标系中的标记图像的旋转参数矩阵,tcm表示第一图像相对于第一坐标系中的标记图像的位移参数矩阵,g表示归一化因子,p表示相机的透视投影参数;

用于对齐非齐次项,用于将标记图像的图像坐标系转换为第一坐标系。

因此可以确定

并且由于第一坐标系中特征点的z轴坐标均为0,因此旋转位移矩阵中的第三列为0,将第三列删去可以确定:

上述公式中单应性矩阵已知,p已知,而根据旋转参数矩阵的列向量为单位矩阵的条件可以计算出归一化因子g,进而求出旋转参数矩阵的第一列和第二列,将第一列和第二列叉乘后求出第三列,从而计算出旋转参数矩阵rcm,根据归一化因子g和单应性矩阵的第三列可以计算出位移参数矩阵tcm。

另外,针对位移参数矩阵tcm的正负,可以计算标记图像在相机中的位置,由于标记图像一定是位于相机的前方,因此标记图像的位移参数与标记图像在相机坐标系中的纵坐标的乘积小于0,根据此约束条件可以确定位移参数矩阵tcm的正负。

(2)根据第一坐标系与标记图像的图像坐标系之间的转换关系,对第一图像相对于第一坐标系中的标记图像的旋转位移矩阵进行转换,得到第一图像相对于标记图像的旋转位移矩阵。

即采用如下公式进行转换,得到第一图像相对于标记图像的旋转位移矩阵:

其中,rca表示第一图像相对于标记图像的旋转参数矩阵,tca表示第一图像相对于标记图像的位移参数矩阵。

计算出旋转位移矩阵后,即可根据该旋转位移矩阵确定第一图像相对于标记图像的旋转参数和位移参数。

举例来说,相机拍摄的多个图像如图4所示,追踪过程包括以下步骤:

1、相机拍摄得到标记图像a。

2、相机拍摄多个图像,并追踪标记图像a的第一特征点,直至拍摄到图像c。

3、将标记图像a的特征点向z轴的负方向平移一个单位,形成坐标系m,对图像c相对于图像a的单应性矩阵进行分解,得到图像c相对于坐标系m中标记图像a的旋转平移矩阵[rcm/tcm]。

4、根据坐标系m与标记图像a的图像坐标系之间的转换关系,对图像c相对于坐标系m中的标记图像a的旋转位移矩阵进行转换,得到图像c相对于标记图像a的旋转位移矩阵[rca/tca]。

在步骤302之后,还可以根据第一图像相对于标记图像的位姿参数以及标记图像的位姿参数,获取第一图像的位姿参数。

基于上述步骤3021-3033,在一种可能实现方式中,在计算出第一图像相对于标记图像的旋转位移矩阵后,根据第一图像相对于标记图像的旋转位移矩阵,以及标记图像的旋转位移矩阵,采用以下公式,获取第一图像的旋转位移矩阵:

s表示第一图像的深度;r_final表示第一图像的旋转参数矩阵,t_final表示第一图像的位移参数矩阵;rca表示第一图像相对于标记图像的旋转参数矩阵,tca表示第一图像相对于标记图像的位移参数矩阵;r_first表示标记图像的旋转参数矩阵,t_first表示标记图像的位移参数矩阵。

303、当第一图像不满足特征点追踪条件时,从第一图像中提取第二特征点,第二特征点与第一特征点不同。

在追踪特征点的过程中,随着相机的位置和姿态的变化,拍摄的图像中包含的第一特征点的数量可能会减少,此时对相邻两个图像包括的第一特征点进行匹配时,会排除掉一部分不匹配的第一特征点。

除此之外,还可以根据第一特征点根据单应性矩阵计算的结果和光流匹配结果进行检测,排除不合理的第一特征点。也即是,针对每个第一特征点,根据提取第一特征点时的图像相对于标记图像的单应性矩阵和第一图像相对于标记图像的单应性矩阵,可以计算出该第一图像与提取第一特征点时的图像之间的单应性矩阵,并根据该第一特征点在从上述两个图像之间的任两个相邻图像之间的光流信息进行迭代,得到该第一特征点在上述两个图像之间的光流信息,将单应性矩阵与光流信息进行对比,如果单应性矩阵与光流信息之间相差较大,表示该第一特征点的运动情况不符合应有的旋转平移关系,误差过大,因此为了避免对后续追踪过程的影响,删除该第一特征点。

当第一特征点的数量过少时,很可能会导致追踪失败。因此,相机拍摄第一图像后,还要判断第一图像是否满足特征点追踪条件。

在一种可能实现方式中,特征点追踪条件可以为追踪到的特征点的数量达到预设数量,则当某一图像中追踪到的特征点的数量达到预设数量时,确定该图像满足特征点追踪条件,否则,确定该图像不满足特征点追踪条件。

相应地,针对第一图像,获取第一图像中追踪到的第一特征点的数量,当该数量达到预设数量时,确定第一图像满足特征点追踪条件。当该数量未达到预设数量时,确定第一图像不满足特征点追踪条件。

当确定第一图像不满足特征点追踪条件时,从第一图像提取与第一特征点不同的第二特征点,将第一图像中追踪到的第一特征点以及新提取的第二特征点均作为要追踪的目标特征点,继续进行追踪,从而增加了特征点的数量。

在一种可能实现方式中,为了防止第一图像中提取的特征点数量较少而导致追踪失败,可以先从第一图像中提取特征点,判断提取到的特征点数量与第一图像中追踪到的第一特征点的数量之和是否达到预设数量,当从第一图像中提取到的特征点数量与第一图像中追踪到的第一特征点的数量之和达到预设数量时,提取特征点完成。

其中,提取特征点时采用的特征提取算法可以为fast(featuresfromacceleratedsegmenttest,加速段测试特征点)检测算法、shi-tomasi(史托马西)角点检测算法、harriscornerdetection(harris角点检测)算法、sift(scale-invariantfeaturetransform,尺度不变特征转换)算法等,预设数量可以根据对追踪精确度的需求确定。

通过补充新的特征点,可以增加特征点的数量,保证追踪过程的顺利进行,避免了特征点数量变少而导致追踪失败,提高了追踪精确度。

另外,随着相机的位置或姿态发生变化,第一图像中即使能够追踪到第一特征点,这些第一特征点也可能集中在同一区域,分布过于密集,导致提供的信息不足,或者分布过于分散,导致提供的信息不够准确,此时的第一特征点不具有当前图像的代表性,会造成计算误差较大。例如,参见图5,左图为初始的标记图像中的第一特征点,右图为第一图像,随着相机的运动,标记图像经过放大以后成为第一图像,导致第一特征点在第一图像中过于分散,不能准确描述第一图像。

考虑到不仅要提取足够数量的特征点,而且为了避免提取的特征点集中在同一个区域,还要提取具有空间分散性的特征点。为此,从第一图像中提取第二特征点时,先将第一图像划分为多个尺寸相同的栅格区域,并从第一图像中提取特征点,获取提取的每个特征点的权重。在划分出的不包括第一特征点的每个栅格区域中提取一个权重最高的特征点,其他的权重较低的特征点将不再考虑,直至第一图像中的所有栅格区域均提取了特征点(第一特征点或第二特征点),或者直至第一图像中提取的特征点数量和第一图像中追踪到的第一特征点的数量之和达到预设数量时为止。

在另一种可能实现方式中,从第一图像中提取第二特征点时,先将第一图像划分为多个尺寸相同的栅格区域,获取第一图像中追踪到的第一特征点之前提取时的权重,在划分出的每个栅格区域提取一个权重最高的第一特征点,从而将集中分布的多个第一特征点中权重较低的第一特征点去除掉。之后从第一图像中提取特征点,获取提取的每个特征点的权重,在不包括第一特征点的每个栅格区域中提取一个权重最高的特征点,其他的权重较低的特征点将不再考虑,直至第一图像中的所有栅格区域均提取了特征点(第一特征点或第二特征点),或者直至第一图像中提取的特征点数量和第一图像中剩余的第一特征点的数量之和达到预设数量时为止。

其中,每个栅格区域的尺寸可以根据追踪精度需求以及要求提取的特征点数量确定,特征点的权重用于表示特征点的梯度大小,特征点的权重越大表示梯度越大,越容易追踪,因此采用权重较大的特征点进行追踪可以提高追踪精确度。

采用上述栅格区域来筛选特征点,可以保证一个栅格区域中仅包括一个特征点,不会出现多个特征点集中在同一个区域的情况,保证了特征点之间的空间分散性。

另外,针对第一图像中新提取的第二特征点会记录下第一图像的单应性矩阵,以便后续根据提取第二特征点时的图像相对于标记图像的单应性矩阵以及光流匹配结果,检测第二特征点的运动情况是否不合理,从而确定是否要删除第二特征点。

304、通过追踪第一特征点和第二特征点,获取相机拍摄的第二图像相对于标记图像的位姿参数,第二图像为相机在第一图像之后拍摄的图像。

增加了第二特征点之后,继续在相机拍摄的图像中追踪第一特征点和第二特征点。

以第二图像为例,根据从标记图像至该第二图像中的每个图像相对于上一个图像的位姿参数,可以进行迭代,从而确定该第二图像相对于标记图像的位姿参数。其中,该该第二图像相对于标记图像的位姿参数可以包括位移参数和旋转参数中的至少一项,该位移参数用于表示相机拍摄该第二图像时的位置与拍摄标记图像时的位置之间的距离,该旋转参数用于表示相机拍摄该第二图像时的旋转角度与拍摄标记图像时的旋转角度之间的角度差。且,该位姿参数可以采用旋转位移矩阵的形式来表示,该旋转位移矩阵由旋转参数矩阵和位移参数矩阵组成,旋转参数矩阵中包括旋转参数,位移参数矩阵中包括位移参数。

在一种可能实现方式中,可以通过单应性矩阵来获取位姿参数,也即是该步骤304可以包括以下步骤3041-3042:

3041、通过追踪第一特征点和第二特征点,获取第二图像相对于标记图像的单应性矩阵。

针对该标记图像和该第二图像,可以通过在从标记图像的下一个图像至第二图像的每个图像中追踪第一特征点和第二特征点,获取每个图像相对于上一个图像的单应性矩阵;对每个图像相对于上一个图像的单应性矩阵进行迭代处理,得到第二图像相对于标记图像的单应性矩阵。

3042、根据旋转位移矩阵应满足的预设约束条件,对单应性矩阵进行分解得到第二图像相对于标记图像的旋转位移矩阵,从旋转位移矩阵中获取第二图像相对于标记图像的位姿参数。

该步骤3042包括:

(1)将第二图像的图像坐标系向z轴的负方向平移一个单位形成第二坐标系,根据旋转位移矩阵应满足的预设约束条件对单应性矩阵进行分解,得到第二坐标系中第二图像相对于标记图像的旋转位移矩阵。

(2)根据第二坐标系与第二图像的图像坐标系之间的转换关系,对第二坐标系中第二图像相对于标记图像的旋转位移矩阵进行转换,得到第二图像相对于标记图像的旋转位移矩阵。

步骤3041-3042的具体过程与上述步骤3021-3022的过程类似,在此不再赘述。

计算出旋转位移矩阵后,即可根据该旋转位移矩阵确定第二图像相对于标记图像的旋转参数和位移参数。

在步骤304之后,还可以根据第二图像相对于标记图像的位姿参数以及标记图像的位姿参数,获取第二图像的位姿参数,具体过程与获取第一图像的位姿参数的过程类似,在此不再赘述。并且,获取到第二图像的位姿参数后,可以采用滤波器对获取到的位姿参数进行平滑后再输出,避免结果出现抖动。该滤波器可以为kalman(卡尔曼)滤波器或者其他滤波器。

需要说明的是,本发明实施例仅是以一个标记图像为例进行说明,在另一实施例中在追踪过程中不仅可以增加特征点,还可以更换标记图像。如当前图像不满足特征点追踪条件时,将当前图像的上一个图像作为更换后的标记图像,基于更换后的标记图像继续进行追踪。通过更换标记图像的方式也可以避免由于相机的位置或姿态变化过多而导致追踪失败。

本发明实施例提供的方法,通过在追踪第一特征点,获取相机拍摄的图像相对于标记图像的位姿参数的过程中,当第一图像不满足特征点追踪条件时,从第一图像中提取第二特征点,通过追踪第一特征点和第二特征点,获取相机拍摄的图像相对于标记图像的位姿参数,从而确定相机的位置和姿态,避免了由于相机的位置或姿态的变化过多而导致无法追踪到特征点的的情况,增强了鲁棒性,提高了相机的追踪精度。本发明实施例提供的方法,轻量简单,没有复杂的后端优化,因此计算速度很快,甚至可以做到实时追踪。相对于传统的slam(simultaneouslocalizationandmapping,即时定位与地图构建)算法,本发明实施例提供的方法鲁棒性更强,可以达到非常高的计算精度。

另外,无需预先给定标记图像,只需拍摄当前的场景得到一个图像,设置为初始标记图像,即可实现标记图像的初始化,摆脱了必须预先给定标记图像的限制,扩展了应用范围。

另外,采用栅格区域来筛选特征点,可以保证一个栅格区域中仅包括一个特征点,不会出现多个特征点集中在同一个区域的情况,保证了特征点之间的空间分散性,从而提高了追踪精确度。

另外,采用分解单应性矩阵的方式来获取位姿参数,避免了复杂的追踪算法,使结果更加的稳定平滑,不会出现抖动,尤其适用于ar场景。

本发明实施例中,位姿参数可以包括位移参数和旋转参数,位移参数用于表示相机的位移情况,可以确定相机在三维空间内位置的变化,而旋转参数用于表示相机的旋转角度的变化,可以确定相机在三维空间内姿态的变化。通过执行上述步骤可以获取到相机的位移参数和旋转参数。或者,通过执行上述步骤可以获取到相机的位移参数而不获取旋转参数,相机的旋转参数的获取过程详见下述实施例。

图6是本发明实施例提供的一种位姿确定方法的流程图,该位姿确定方法的执行主体为智能设备,该智能设备可以为配置有相机的手机、平板电脑等终端或者为配置有相机的ar眼镜、ar头盔等ar设备,参见图6,该方法包括:

601、通过imu(inertialmeasurementunit,惯性测量单元)获取相机的多个旋转参数以及对应的时间戳。

其中,每个旋转参数对应的时间戳是指获取该旋转参数时的时间戳。

602、根据多个旋转参数以及对应的时间戳进行插值得到旋转参数曲线。

其中,插值算法可以采用slerp(sphericallinearinterpolation,球面线性插值)算法或者其他算法。

根据多个旋转参数以及对应的时间戳进行插值得到旋转参数曲线,该旋转参数曲线可以表示相机的旋转参数随拍摄时间的变化规律。

603、当相机拍摄到一个图像时,获取相机拍摄的图像的时间戳,并获取该时间戳在旋转参数曲线中对应的旋转参数,作为相机拍摄的图像的旋转参数。

由于图像的拍摄频率与imu的采样频率不匹配,因此通过插值得到旋转参数曲线,根据旋转参数曲线可以进行数据对齐,从而得到图像对应的旋转参数。

实际应用中,智能设备配置有陀螺仪、加速度计和地磁传感器,通过陀螺仪和地磁传感器,可以得到在地球坐标系中唯一的旋转参数。该地图坐标系有以下特点:

1、x轴使用向量积来定义的,在智能设备当前的位置上与地面相切,并指向东方。

2、y轴在智能设备当前的位置上与地面相切,且指向地磁场的北极。

3、z轴指向天空,并垂直于地面。

通过该地图坐标系得到的旋转参数可以认为没有误差,而且无需依赖于imu的参数,避免了imu的标定问题,可以兼容多种类型的设备。

智能设备提供了获取旋转参数的接口:rotation-vector(旋转矢量)接口,可以按照imu的采样频率调用rotation-vector接口,从而获取到旋转参数。

智能设备可以将获取到多个旋转参数以及对应的时间戳均存储至imu队列中,通过读取imu队列中的数据进行插值得到旋转参数曲线。或者,考虑到上述数据可能会存在噪声,因此为了保证数据的准确性,可以计算获取到的旋转参数与上一个旋转参数之间的角度差,如果该角度差大于预设阈值,可以认为获取到的旋转参数为噪声项,则将该旋转参数删除。通过上述检测可以删除噪声项,仅将通过检测的旋转参数及其对应的时间戳存储至imu队列中。

本发明实施例提供的方法,通过根据imu测量的多个旋转参数以及对应的时间戳进行插值得到旋转参数曲线,根据旋转参数曲线可以进行数据对齐,从而根据所拍摄图像的时间戳和旋转参数曲线,获取图像的旋转参数,提高了精确度,无需依赖于imu的参数,避免了imu的标定问题,并且考虑到了智能设备计算能力低的问题,通过imu获取旋转参数可以降低计算量,提高计算速度。另外,将噪声项删除,可以提高数据的准确性,进一步提高精确度。

本发明实施例的操作流程可以如图7所示,参见图7,将智能设备的各个功能划分为多个模块,操作流程如下:

1、通过模块701读取到imu测量的数据,包括旋转参数和对应的时间戳,通过模块702检测数据是否合理,如果不合理则丢弃该数据,如果合理则通过模块703将数据存储至imu队列中。

2、通过模块704读取拍摄的图像,通过模块705判断当前是否已设置标记图像。如果未设置标记图像,则通过模块706利用当前拍摄的图像初始化一个标记图像,如果已设置标记图像,则直接通过模块707建立与标记图像的连接,追踪标记图像的特征点。

3、通过模块708联合imu队列中的数据以及追踪特征点得到的数据,获取到位移参数和旋转参数,计算出当前图像相对于当前标记图像的旋转位移矩阵。

4、通过模块709检测图像的旋转参数和位移参数是否合理,如果是,则送入模块710,通过模块710从当前的图像中扩展新的特征点,并通过追踪特征点计算相机拍摄图像相对于标记图像的旋转位移矩阵。如果否,返回至模块706,利用当前图像重新进行初始化。

5、通过模块711和712对获得的数据结果进行平滑并输出。平滑时可以采用kalman滤波器或者其他滤波器。

综上所述,本发明实施例提供了一套相机姿态追踪算法,将相机的运动过程看做是对标记图像的特征点的追踪过程,追踪过程中通过补充新的特征点来保持连接。针对智能设备计算能力低的特点,利用imu得到相机相对于初始场景的旋转参数,并将真实场景的图像作为标记图像,通过追踪匹配得到相机相对于标记图像的位移参数,两者结合得到相对于初始场景的位置和姿态变化,从而实现了一套真实自然场景下稳定、快速、鲁棒的相机姿态跟踪系统,不依赖于预先给定的标记图像,在提高计算速度的同时增强了系统的鲁棒性,相机定位精度很高。同时避免了复杂的imu和图像融合算法,也降低了对参数的敏感性。本发明实施例提供的方法能在移动端流畅运行,且不需要精确的标定。

本发明实施例对应于人眼观测三维空间的场景,旋转参数的影响较大,而假设平面上的位移不大。而在ar场景下,用户通常是在平面场景下和虚拟元素进行互动,如茶几桌子等,则可以认为相机在平面上移动,旋转参数的影响较大。因此本发明实施例非常适用于ar场景。

并且,与切换标记图像的方案相比,本发明实施例无需过于频繁地切换标记图像,而是通过实时补充特征点的方式来避免追踪失败,避免了切换标记图像带来的误差,同时保证数据结果更加平滑精确。

图8是本发明实施例提供的一种位姿确定装置的结构示意图。参见图8,该装置应用于智能设备中,该装置包括:

第一获取模块801,用于执行上述实施例中通过追踪第一特征点获取第一图像相对于标记图像的位姿参数的步骤;

特征点处理模块802,用于执行上述实施例中当第一图像不满足特征点追踪条件时,从第一图像中提取第二特征点的步骤;

第二获取模块803,用于执行上述实施例中通过追踪第一特征点和第二特征点,获取第二图像相对于标记图像的位姿参数的步骤。

可选地,该装置还包括:

区域划分模块,用于执行上述实施例中将标记图像划分为多个尺寸相同的栅格区域的步骤;

权重获取模块,用于执行上述实施例中获取从标记图像中提取的每个特征点的权重的步骤;

提取模块,用于执行上述实施例中在划分出的每个栅格区域中提取一个权重最高的特征点的步骤。

可选地,该装置还包括:

数量获取模块,用于执行上述实施例中获取第一图像中追踪到的第一特征点的数量的步骤;

确定模块,用于执行上述实施例中当数量未达到预设数量时,确定第一图像不满足特征点追踪条件的步骤。

可选地,特征点处理模块802用于执行上述实施例中将第一图像划分为多个尺寸相同的栅格区域,获取从第一图像中提取的每个特征点的权重,在不包括第一特征点的栅格区域中提取特征点的步骤。

可选地,第一获取模块801,用于执行上述实施例中通获取第一图像相对于标记图像的单应性矩阵,进行分解得到第一图像相对于标记图像的旋转位移矩阵,从旋转位移矩阵中获取第一图像相对于标记图像的位姿参数的步骤。

可选地,第一获取模块801,用于执行上述实施例中对每个图像相对于上一个图像的单应性矩阵进行迭代处理,得到第一图像相对于标记图像的单应性矩阵的步骤。

可选地,第一获取模块801,用于执行上述实施例中对单应性矩阵进行分解,得到第一图像相对于第一坐标系中的标记图像的旋转位移矩阵的步骤,以及对第一图像相对于第一坐标系中的标记图像的旋转位移矩阵进行转换,得到第一图像相对于标记图像的旋转位移矩阵的步骤。

可选地,该装置还包括:

初始化模块,用于执行上述实施例中将第三图像设置为标记图像的步骤。

可选地,位姿参数包括位移参数,该装置还包括:

插值处理模块,用于通过惯性测量单元imu,获取相机的多个旋转参数以及对应的时间戳,根据多个旋转参数以及对应的时间戳进行插值得到旋转参数曲线;

旋转参数获取模块,用于获取第一图像的时间戳在旋转参数曲线中对应的旋转参数,作为第一图像的旋转参数。

需要说明的是:上述实施例提供的位姿确定装置在确定位姿参数时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将智能设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的位姿确定装置与位姿确定方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图9示出了本发明一个示例性实施例提供的终端900的结构框图,终端900用于执行上述方法实施例中智能设备所执行的步骤。

该终端900可以是便携式移动终端,比如:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑,也可以是ar眼镜、ar头盔等ar设备。终端900还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

通常,终端900包括有:处理器901和存储器902。

处理器901可以包括一个或多个处理核心,比如4核心处理器、5核心处理器等。处理器901可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。

存储器902可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器902还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器902中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器901所具有以实现本申请中方法实施例提供的位姿确定方法。

在一些实施例中,终端900还可选包括有:外围设备接口903和至少一个外围设备。处理器901、存储器902和外围设备接口903之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口903相连。具体地,外围设备包括:射频电路904、触摸显示屏905、摄像头906、音频电路907、定位组件908和电源909中的至少一种。

外围设备接口903可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器901和存储器902。在一些实施例中,处理器901、存储器902和外围设备接口903被集成在同一芯片或电路板上;在一些其他实施例中,处理器901、存储器902和外围设备接口903中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

射频电路904用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路904通过电磁信号与通信网络以及其他通信设备进行通信。射频电路904将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路904包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路904可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及13g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路904还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。

显示屏905用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏905是触摸显示屏时,显示屏905还具有采集在显示屏905的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器901进行处理。此时,显示屏905还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏905可以为一个,设置终端900的前面板;在另一些实施例中,显示屏905可以为至少两个,分别设置在终端900的不同表面或呈折叠设计;在再一些实施例中,显示屏905可以是柔性显示屏,设置在终端900的弯曲表面上或折叠面上。甚至,显示屏905还可以设置成非矩形的不规则图形,也即异形屏。显示屏905可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。

摄像头组件906用于采集图像或视频。可选地,摄像头组件906包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端900的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件906还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

音频电路907可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器901进行处理,或者输入至射频电路904以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端900的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器901或射频电路904的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路907还可以包括耳机插孔。

定位组件908用于定位终端900的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件908可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

电源909用于为终端900中的各个组件进行供电。电源909可以是交流电、直流电、一次性电池或可充电电池。当电源909包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

在一些实施例中,终端900还包括有一个或多个传感器910。该一个或多个传感器910包括但不限于:加速度传感器911、陀螺仪传感器912、压力传感器913、指纹传感器914、光学传感器915以及接近传感器916。

加速度传感器911可以检测以终端900建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器911可以用于检测重力加速度在三个坐标轴上的分量。处理器901可以根据加速度传感器911采集的重力加速度信号,控制触摸显示屏905以横向视图或纵向视图进行用户界面的显示。加速度传感器911还可以用于游戏或者用户的运动数据的采集。

陀螺仪传感器912可以检测终端900的机体方向及转动角度,陀螺仪传感器912可以与加速度传感器911协同采集用户对终端900的3d动作。处理器901根据陀螺仪传感器912采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。

压力传感器913可以设置在终端900的侧边框和/或触摸显示屏905的下层。当压力传感器913设置在终端900的侧边框时,可以检测用户对终端900的握持信号,由处理器901根据压力传感器913采集的握持信号进行左右手识别或快捷操作。当压力传感器913设置在触摸显示屏905的下层时,由处理器901根据用户对触摸显示屏905的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

指纹传感器914用于采集用户的指纹,由处理器901根据指纹传感器914采集到的指纹识别用户的身份,或者,由指纹传感器914根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器901授权该用户具有相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器914可以被设置终端900的正面、背面或侧面。当终端900上设置有物理按键或厂商logo时,指纹传感器914可以与物理按键或厂商标志集成在一起。

光学传感器915用于采集环境光强度。在一个实施例中,处理器901可以根据光学传感器915采集的环境光强度,控制触摸显示屏905的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏905的显示亮度;当环境光强度较低时,调低触摸显示屏905的显示亮度。在另一个实施例中,处理器901还可以根据光学传感器915采集的环境光强度,动态调整摄像头组件906的拍摄参数。

接近传感器916,也称距离传感器,通常设置在终端900的前面板。接近传感器916用于采集用户与终端900的正面之间的距离。在一个实施例中,当接近传感器916检测到用户与终端900的正面之间的距离逐渐变小时,由处理器901控制触摸显示屏905从亮屏状态切换为息屏状态;当接近传感器916检测到用户与终端900的正面之间的距离逐渐变大时,由处理器901控制触摸显示屏905从息屏状态切换为亮屏状态。

本领域技术人员可以理解,图9中示出的结构并不构成对终端900的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

本发明实施例还提供了一种位姿确定装置,该位姿确定装置包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,指令、程序、代码集或指令集由处理器加载并具有以实现上述实施例的位姿确定方法中所具有的操作。

本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,该指令、该程序、该代码集或该指令集由处理器加载并具有以实现上述实施例的位姿确定方法中所具有的操作。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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