本发明实施例涉及计算机技术领域,特别涉及一种位姿确定方法、装置及存储介质。
背景技术:
ar(augmentedreality,增强现实)技术是一种实时地追踪相机的位置和姿态,并结合虚拟的图像、视频或者三维模型进行显示的技术,能够将虚拟场景与实际场景结合显示,是目前计算机视觉领域的重要研究方向之一。ar技术中最重要的问题在于如何准确确定相机的位置和姿态。
相关技术提出了一种通过追踪模板(marker)图像中的特征点来确定相机位置和姿态的方法,先预先定义好一个模板图像,提取模板图像中的特征点,随着相机的位置或姿态的变化对提取的特征点进行追踪,每当相机当前拍摄到一个图像时,在当前图像中识别模板图像的特征点,从而能够将特征点在当前图像中的位置和姿态与特征点在模板图像中的位置和姿态进行对比,得到特征点的位姿参数,进而得到当前图像相对于模板图像的位姿参数,如旋转参数和位移参数,该位姿参数可以表示相机拍摄当前图像时的位置和姿态。
在实现本发明实施例的过程中,发明人发现上述相关技术至少存在以下问题:相机发生旋转时特征点在图像中的深度会发生变化,对位姿参数造成影响,然而,上述确定位姿参数的方法未考虑特征点在图像中的深度,导致相机的追踪精确度不高。
技术实现要素:
本发明实施例提供了一种位姿确定方法、装置及存储介质,可以解决相关技术的问题。所述技术方案如下:
第一方面,提供了一种位姿确定方法,所述方法包括:
基于标记图像相对于指定坐标系的单应性矩阵,在相机拍摄图像的过程中追踪所述标记图像的特征点,获取所述相机拍摄的指定图像相对于所述指定坐标系的单应性矩阵;
根据旋转位移矩阵应满足的约束条件和所述特征点的深度应满足的深度假设条件,对所述单应性矩阵进行分解,得到所述指定图像相对于所述标记图像的旋转位移矩阵,所述深度假设条件为所述标记图像的特征点在所述指定坐标系的水平面上的深度相同,所述指定坐标系的水平面根据所述指定坐标系的x轴和y轴确定;
从所述旋转位移矩阵中获取所述指定图像相对于所述标记图像的位姿参数。
第二方面,提供了一种位姿确定装置,所述装置包括:
第一获取模块,用于基于标记图像相对于指定坐标系的单应性矩阵,在相机拍摄图像的过程中追踪所述标记图像的特征点,获取所述相机拍摄的指定图像相对于所述指定坐标系的单应性矩阵;
分解处理模块,用于根据旋转位移矩阵应满足的约束条件和所述特征点的深度应满足的深度假设条件,对所述单应性矩阵进行分解,得到所述指定图像相对于所述标记图像的旋转位移矩阵,所述深度假设条件为所述标记图像的特征点在所述指定坐标系的水平面上的深度相同,所述指定坐标系的水平面根据所述指定坐标系的x轴和y轴确定;
第二获取模块,用于从所述旋转位移矩阵中获取所述指定图像相对于所述标记图像的位姿参数。
第三方面,提供了一种位姿确定装置,所述位姿确定装置包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由所述处理器加载并具有以实现如第一方面所述的位姿确定方法中所具有的操作。
第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述指令、所述程序、所述代码集或所述指令集由处理器加载并具有以实现如第一方面所述的位姿确定方法中所具有的操作。
本发明实施例提供的技术方案带来的有益效果至少包括:
本发明实施例提供的方法、装置及存储介质,通过设置更符合真实情况的深度假设条件:标记图像的特征点在指定坐标系的水平面上的深度相同,在相机拍摄图像的过程中,获取指定图像相对于指定坐标系的单应性矩阵,以指定坐标系作为基准坐标系,根据旋转位移矩阵应满足的约束条件和特征点的深度应满足的深度假设条件,对单应性矩阵进行分解得到指定图像相对于标记图像的旋转位移矩阵,从旋转位移矩阵中获取位姿参数。在分解单应性矩阵时考虑到了特征点的深度对追踪过程的影响,以特征点在指定坐标系的水平面上的深度相同的条件获取指定图像相对于标记图像的位姿参数,从而确定相机的位置和姿态,提高了相机的追踪精度。
并且,当拍摄的图像不满足特征点追踪条件时切换标记图像,既能够避免追踪失败,也不会引入误差。
并且,通过根据imu测量的多个旋转参数以及对应的时间戳进行插值得到旋转参数曲线,根据旋转参数曲线可以进行数据对齐,从而根据指定图像的时间戳和旋转参数曲线,获取指定图像的旋转参数,提高了精确度,无需依赖于imu的参数,避免了imu的标定问题,并且考虑到了智能设备计算能力低的问题,通过imu获取旋转参数可以降低计算量,提高计算速度。另外,将噪声项删除,可以提高数据的准确性,进一步提高精确度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的场景界面的显示示意图;
图2是本发明实施例提供的另一场景界面的显示示意图;
图3是本发明实施例提供的一种位姿确定方法的流程图;
图4是本发明实施例提供的一种拍摄图像示意图;
图5是本发明实施例提供的一种拍摄图像示意图;
图6是本发明实施例提供的一种位姿确定方法的流程图;
图7是本发明实施例提供的一种位姿确定装置的结构示意图;
图8是本发明实施例提供的一种终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种位姿确定方法,应用于智能设备追踪相机的位置和姿态的场景下,尤其是在ar场景下,智能设备采用ar技术进行显示时,需要追踪相机的位置和姿态,如ar游戏、ar视频等。
其中,智能设备配置有相机和显示单元,相机用于拍摄现实场景的图像,显示单元用于显示由现实场景与虚拟场景结合构成的场景界面。智能设备随着相机的运动可以追踪相机的位置和姿态的变化,还可以拍摄现实场景的图像,按照相机的位置和姿态的变化依次显示当前拍摄到的多个图像,从而模拟出显示三维界面的效果。并且,在显示的图像中可以添加虚拟元素,如虚拟图像、虚拟视频或者虚拟三维模型等,随着相机的运动,可以按照相机的位置和姿态的变化,以不同的方位显示虚拟元素,从而模拟出显示三维虚拟元素的效果。现实场景的图像与虚拟元素结合显示,构成了场景界面。
例如,参见图1和参见图2,智能设备在拍摄到的包含桌子和茶杯的图像中添加了一个虚拟人物形象,随着相机的运动,拍摄到的图像发生变化,虚拟人物形象的拍摄方位也发生变化,模拟出了虚拟人物形象在图像中相对于桌子和茶杯静止不动,而相机随着位置和姿态的变化同时拍摄桌子、茶杯和虚拟人物形象的效果,为用户呈现了一幅真实立体的画面。
图3是本发明实施例提供的一种位姿确定方法的流程图,该位姿确定方法的执行主体为智能设备,该智能设备可以为配置有相机的手机、平板电脑等终端或者为配置有相机的ar眼镜、ar头盔等ar设备。参见图3,该方法包括:
301、智能设备确定标记图像。
本发明实施例中,为了追踪相机的位置和姿态的变化,需要以标记图像作为基准,在相机拍摄至少一个图像的过程中追踪标记图像的特征点来确定相机的位姿参数。因此,智能设备先设置标记图像。
在一种可能实现方式中,在未设置标记图像的情况下,智能设备可以通过相机拍摄图像,将当前拍摄的图像设置为初始标记图像,从而实现标记图像的初始化。后续智能设备继续拍摄其他图像的过程中,可以通过追踪标记图像的特征点来获取每个图像的位姿参数,并且还可以根据需求切换其他的标记图像,追踪切换后的标记图像的特征点来获取后续拍摄的每个图像的位姿参数。
其中,设置好初始标记图像后,可以将初始标记图像中特征点的深度s设置为1,将初始标记图像的旋转参数矩阵设置为单位矩阵,将初始标记图像的平移矩阵设置为[0,0,s],将初始标记图像的单应性矩阵设置为单位矩阵。
其中,相机可以按照预设周期进行拍摄,每隔一个预设周期拍摄一个图像,该预设周期可以为0.1秒或者0.01秒等。
在一种可能实现方式中,为了防止标记图像中特征点数量较少而导致追踪失败,当获取到拍摄的图像后,可以先从该图像中提取特征点,判断提取到的特征点数量是否达到预设数量,当从该图像中提取到的特征点数量达到预设数量时,再将该图像设置为标记图像,而当从该图像中提取到的特征点数量未达到预设数量时,可以不将该图像设置为标记图像,而是获取相机拍摄的下一个图像,直至获取到提取的特征点数量达到预设数量的图像时,将该提取的特征点数量达到预设数量的图像设置为标记图像。
其中,提取特征点时采用的特征提取算法可以为fast(featuresfromacceleratedsegmenttest,加速段测试特征点)检测算法、shi-tomasi(史托马西)角点检测算法、harriscornerdetection(harris角点检测)算法等,预设数量可以根据对追踪精确度的需求确定。
需要说明的是,本发明实施例中随着相机的运动可能会切换标记图像,为了统一衡量标准,准确确定相机的位置和姿态的变化,将以初始标记图像作为基准,每个图像相对于初始标记图像的位姿参数即可作为相应图像的位姿参数,以该位姿参数来表示相机拍摄相应图像时的位置和姿态。而本发明实施例所示的标记图像可以为初始标记图像,也可以为初始标记图像之后切换的其他标记图像。
302、智能设备基于标记图像相对于指定坐标系的单应性矩阵,在相机拍摄图像的过程中追踪标记图像的特征点,获取相机拍摄的指定图像相对于指定坐标系的单应性矩阵。
确定标记图像后,将标记图像中的特征点作为要追踪的目标特征点,该特征点可以包括从初始标记图像中提取的特征点,也可以包括相机在初始标记图像之后拍摄的图像中提取的特征点。随着相机的位置或姿态的变化,智能设备通过相机拍摄至少一个图像,并且通过在该至少一个图像中追踪特征点,得到每个图像相对于标记图像的位姿参数。
追踪特征点时,对于相机拍摄的相邻两个图像,使用从上一图像中提取的该特征点进行光流,从而找到上一图像与下一图像之间匹配的特征点,并得到匹配的特征点在相邻两个图像中的二维坐标。进行光流时采用的算法可以为lucas-kanade(卢卡斯-卡纳德)光流算法或者其他算法,除光流外,也可以采用描述子或者直接法对特征点进行匹配。
本发明实施例中,通过单应性矩阵来获取位姿参数,该单应性矩阵是表示图像中的特征点与标记图像中的相应特征点之间的转换关系的矩阵,因此具有以下关系:
xc=hca*xa;
其中,xc表示图像c中特征点的二维坐标对应的齐次坐标,xa表示图像a中相应特征点的二维坐标对应的齐次坐标,hca表示图像c相对于图像a的单应性矩阵。
由于特征点的二维坐标对应的齐次坐标均为3*1的向量,因此单应性矩阵为3*3的矩阵,可以表示为
因此,通过追踪多个特征点获取到多个特征点分别在两个图像中的二维坐标对应的齐次坐标,根据获取到的坐标利用上述关系即可计算出两个图像之间的单应性矩阵。其中,单应性矩阵中包括9个元素,将其中一个设置为1后具有8个未知量,因此为了取得单应性矩阵的唯一解,至少获取4个特征点在两个图像中的二维坐标对应的齐次坐标。
并且,本发明实施例为了提高位姿追踪的准确性,基于真实三维空间内的点在拍摄的图像中的深度的特点,设置了深度假设条件,该深度假设条件为标记图像的特征点在指定坐标系的水平面上的深度相同,指定坐标系包括x轴、y轴和z轴,水平面根据指定坐标系的x轴和y轴确定。这样可以保证,基于该深度假设条件,以指定坐标系作为基准坐标系,将相机在标记图像之后拍摄的任一图像中的特征点转换到指定坐标系上,均需在满足特征点在指定坐标系的水平面上的深度相同的条件下,获取图像相对于指定坐标系的旋转位移矩阵,进而获取图像的位姿参数。
在一种可能实现方式中,该指定坐标系为世界坐标系投影到世界坐标系的水平面上形成的虚拟相机坐标系,也即是在世界坐标系中虚拟一个从上往下观测的相机坐标系,作为指定坐标系。同一特征点在该指定坐标系中的x轴坐标和y轴坐标分别与世界坐标系中的x轴坐标和y轴坐标相等,而特征点在该指定坐标系中的z轴坐标为1。
该世界坐标系有以下特点:
1、x轴使用向量积来定义的,在智能设备当前的位置上与地面相切,并指向东方。
2、y轴在智能设备当前的位置上与地面相切,且指向地磁场的北极。
3、z轴指向天空,并垂直于地面。
该深度假设条件为g-equal条件:标记图像的特征点在世界坐标系的水平面上的深度相同。
在另一种可能实现方式中,该指定坐标系为相机拍摄初始标记图像时的相机坐标系,指定坐标系的水平面即为相机拍摄初始标记图像时的成像平面。改相机坐标系具有以下特点:
相机坐标系的原点为相机的光心,x轴与图像的x轴平行,y轴与图像的y轴平行,z轴为相机的光轴,与x轴和y轴构成的成像平面垂直。
该深度假设条件为z-equal条件:标记图像的特征点在相机拍摄初始标记图像时的成像平面上的深度相同。
g-equal条件适用于相机在垂直于重力方向的水平面上进行拍摄的场景,例如在ar游戏中在真实场景中位于水平面的物体(如桌子)上创建虚拟物品,用户使用ar设备与虚拟物体进行互动的场景下。
z-equal条件比g-equal条件的通用性更强,可以适用于多种场景。不过,相机在水平面上进行拍摄的场景下,g-equal条件比z-equal条件的精确度更高。
相应地,以获取指定图像的位姿参数的过程为例,该指定图像为相机在标记图像之后拍摄的任一图像,该步骤302包括:
3021、获取标记图像相对于指定坐标系的单应性矩阵。
在一种可能实现方式中,基于上述g-equal条件,指定坐标系为世界坐标系投影到水平面上形成的虚拟相机坐标系,则智能设备可以在相机拍摄标记图像时,通过imu(inertialmeasurementunit,惯性测量单元)获取标记图像相对于世界坐标系的旋转参数矩阵,作为标记图像相对于指定坐标系的旋转参数矩阵。
其中,智能设备配置有陀螺仪和地磁传感器,通过陀螺仪和地磁传感器,可以得到智能设备在世界坐标系中唯一的旋转参数。且智能设备还可以提供获取旋转参数的接口:rotation-vector(旋转矢量)接口,按照imu的采样频率调用rotation-vector接口,可以通过陀螺仪和地磁传感器获取到智能设备相对于世界坐标系的旋转参数矩阵。
智能设备独立地通过imu获取旋转参数,不会因为切换标记图像而引入误差。
考虑到图像的拍摄频率与imu的采样频率可能不匹配,无法直接得到相机拍摄标记图像时的旋转参数,此时,可以通过imu获取相机的多个旋转参数以及对应的时间戳,根据多个旋转参数以及对应的时间戳进行插值得到旋转参数曲线,根据旋转参数曲线可以进行数据对齐,当相机拍摄到标记图像时,获取标记图像的时间戳,并获取该时间戳在旋转参数曲线中对应的旋转参数,作为标记图像的旋转参数。获取标记图像的旋转参数的过程与下述图6所示实施例中获取指定图像的旋转参数的过程类似,在此暂不做详细说明。
在另一种可能实现方式中,基于上述z-equal条件,智能设备可以初始化初始标记图像相对于指定坐标系的旋转参数矩阵,例如将该旋转参数矩阵设置为单位矩阵。后续拍摄的图像可以基于初始标记图像相对于指定坐标系的旋转参数矩阵,通过追踪特征点来进行迭代处理,得到该图像相对于指定坐标系的旋转参数矩阵。
则针对初始标记图像之后切换的标记图像,在从初始标记图像的下一个图像至标记图像的每个图像中追踪初始标记图像的特征点,获取每个图像相对于上一个图像的旋转参数矩阵,基于初始标记图像相对于指定坐标系的旋转参数矩阵,对每个图像相对于上一个图像的旋转参数矩阵进行迭代处理,得到标记图像相对于指定坐标系的旋转参数矩阵。
智能设备获取到标记图像相对于指定坐标系的旋转参数矩阵之后,根据标记图像相对于指定坐标系的旋转参数矩阵的逆矩阵,将标记图像中任一个特征点与指定坐标系中的相应特征点建立映射,可以得到如下映射关系:
其中,xd表示特征点在指定坐标系中的二维坐标,xa表示相应特征点在标记图像中的二维坐标,rad表示标记图像相对于指定坐标系的旋转参数矩阵,
同时,标记图像中任一个特征点与指定坐标系中的相应特征点具有以下映射关系:
xa=had*xd;had表示标记图像相对于指定坐标系的单应性矩阵;
因此联立可得:had=p*rad*p-1。也即是,根据标记图像相对于指定坐标系的旋转参数矩阵,采用该公式即可获取标记图像相对于指定坐标系的单应性矩阵。
3022、在从标记图像的下一个图像至指定图像的每个图像中追踪标记图像的特征点,获取每个图像相对于上一个图像的单应性矩阵。
3023、基于标记图像相对于指定坐标系的单应性矩阵,对每个图像相对于上一个图像的单应性矩阵进行迭代处理,得到指定图像相对于指定坐标系的单应性矩阵。
例如,在迭代得到指定图像c的前一个图像b相对于标记图像的单应性矩阵hba后,获取指定图像c相对于图像b的单应性矩阵hcb,并采用以下公式,获取指定图像c相对于指定坐标系的单应性矩阵hcd:
hcd=hcb*hba*had。
303、智能设备将指定坐标系向z轴的负方向平移一个单位,得到第一坐标系,根据约束条件对单应性矩阵进行分解,得到指定图像相对于第一坐标系中的标记图像的旋转位移矩阵。
由于特征点在指定坐标系的水平面上具有相同的深度,因此可以将指定坐标系统一向z轴的负方向平移一个单位,形成一个新的坐标系,作为第一坐标系,该第一坐标系可以辅助分解单应性矩阵而得到指定图像相对于第一坐标系中的标记图像的旋转位移矩阵。其中,特征点在指定坐标系中的x轴坐标和y轴坐标分别和特征点在第一坐标系中的x轴坐标和y轴坐标相同,而z轴坐标相差1。
其中,该旋转位移矩阵包括指定图像相对于第一坐标系中的标记图像的旋转参数矩阵和位移参数矩阵,且旋转参数矩阵中的元素即为指定图像相对于第一坐标系中的标记图像的旋转参数,位移参数矩阵中的元素即为指定图像相对于第一坐标系中的标记图像的位移参数。该旋转位移矩阵所满足的约束条件为旋转位移矩阵中旋转参数矩阵的列向量为单位矩阵,且旋转参数矩阵的第一列与第二列的乘积等于第三列。
本发明实施例中,在二维上,指定图像中的特征点与指定坐标系中的相应特征点之间具有如下转换关系:
xc=hcd*xd;
而在三维上,指定图像中的特征点与指定坐标系中的相应特征点之间还具有如下转换关系:
其中,
因此可以确定
并且由于第一坐标系中特征点的z轴坐标均为0,因此旋转位移矩阵中的第三列为0,将第三列删去可以确定:
上述公式中单应性矩阵已知,p已知,而根据旋转参数矩阵的列向量为单位矩阵的条件可以计算出归一化因子g,进而求出旋转参数矩阵的第一列和第二列,将第一列和第二列叉乘后求出第三列,从而计算出旋转参数矩阵rcm,根据归一化因子g和单应性矩阵的第三列可以计算出位移参数矩阵tcm。
另外,针对位移参数矩阵tcm的正负,可以计算标记图像在相机中的位置,由于标记图像一定是位于相机的前方,因此标记图像的位移参数与标记图像在指定坐标系中的纵坐标的乘积小于0,根据此约束条件可以确定位移参数矩阵tcm的正负。
304、智能设备根据第一坐标系与标记图像的图像坐标系之间的转换关系,对指定图像相对于第一坐标系中的标记图像的旋转位移矩阵进行转换,得到指定图像相对于标记图像的旋转位移矩阵。
即采用如下公式进行转换,得到指定图像相对于标记图像的旋转位移矩阵:
其中,rca表示指定图像相对于标记图像的旋转参数矩阵,tca表示指定图像相对于标记图像的位移参数矩阵。
305、智能设备从旋转位移矩阵中获取指定图像相对于标记图像的位姿参数。
计算出旋转位移矩阵后,即可从旋转位移矩阵中获取指定图像相对于标记图像的旋转参数和位移参数。
在步骤305之后,还可以根据指定图像相对于标记图像的位姿参数以及标记图像的位姿参数,获取指定图像的位姿参数。在一种可能实现方式中,在获取到指定图像相对于标记图像的旋转位移矩阵后,根据指定图像相对于标记图像的旋转位移矩阵,以及标记图像的旋转位移矩阵,采用以下公式,获取指定图像的旋转位移矩阵,从旋转位移矩阵中获取指定图像的旋转参数和位移参数:
r_final表示指定图像的旋转参数矩阵,t_final表示指定图像的位移参数矩阵;rca表示指定图像相对于标记图像的旋转参数矩阵,tca表示指定图像相对于标记图像的位移参数矩阵;r_first表示标记图像的旋转参数矩阵,t_first表示标记图像的位移参数矩阵。
需要说明的是,基于设置的深度假设条件,还可以获取特征点在每个图像中的深度。以标记图像为例,对于标记图像的任一特征点,可以采用以下公式,计算特征点在标记图像中的深度:
其中,xd表示特征点在指定坐标系中的三维坐标,且xd在指定坐标系的z轴坐标为1,s表示特征点在标记图像中的深度。通过xd的z轴坐标为1可以反解出深度s。
另外,随着相机的移动和旋转,在多个图像中追踪特征点时,可能会产生误差。因此,为了避免继续追踪误差较大的特征点,可以对特征点进行检验,排除位姿变化不合理的特征点。例如,对于标记图像的任一特征点,获取该特征点在标记图像中的二维坐标以及计算出的深度,采用以下公式,计算特征点在标记图像中的三维坐标:
xa=s*p-1*xa,xa表示特征点在标记图像中的三维坐标;
根据特征点在标记图像中的三维坐标,以及指定图像相对于标记图像的旋转位移矩阵进行迭代,得到特征点在指定图像中的估计三维坐标,相当于模拟了特征点从标记图像到指定图像的位置和姿态的变化情况,对特征点在指定图像中的估计三维坐标进行变换,得到特征点在指定图像中的估计二维坐标;如果特征点在指定图像中的估计二维坐标与实际二维坐标之间的距离大于预设距离,则删除特征点。
相应地,对特征点在指定图像中的估计三维坐标进行变换得到估计二维坐标时,可以根据上述公式的逆转换关系进行,即采用以下公式,将估计三维坐标变换为估计二维坐标:
xa=p*s-1*xa。
需要说明的是,在追踪特征点的过程中,随着相机的位置和姿态的变化,拍摄的图像中包含的特征点的数量可能会减少,且通过上述检验方式会排除一部分特征点。当特征点的数量过少时,很可能会导致追踪失败。因此,在指定图像之后,智能设备拍摄到每个图像时,可以判断该图像是否满足特征追踪条件,从而确定是否要切换标记图像。
在一种可能实现方式中,特征点追踪条件可以为追踪到的特征点的数量达到预设数量,则当某一图像中追踪到的特征点的数量达到预设数量时,确定该图像满足特征点追踪条件,否则,确定该图像不满足特征点追踪条件。
当确定拍摄的图像不满足特征点追踪条件时,可以将该图像的上一个图像作为切换后的标记图像,从切换后的标记图像中提取特征点,继续追踪特征点,根据相机拍摄的图像相对于当前标记图像的旋转位移矩阵,以及每个标记图像相对于前一个标记图像的旋转位移矩阵,获取图像的旋转位移矩阵,从而得到凸显改的位姿参数。通过切换标记图像的方式也可以避免由于相机的位置或姿态变化过多而导致的追踪失败。
本发明实施例提供的方法,通过设置更符合真实情况的深度假设条件:标记图像的特征点在指定坐标系的水平面上的深度相同,在相机拍摄图像的过程中,获取指定图像相对于指定坐标系的单应性矩阵,以指定坐标系作为基准坐标系,根据旋转位移矩阵应满足的约束条件和特征点的深度应满足的深度假设条件,对单应性矩阵进行分解得到指定图像相对于标记图像的旋转位移矩阵,从旋转位移矩阵中获取位姿参数。在分解单应性矩阵时考虑到了特征点的深度对追踪过程的影响,以特征点在指定坐标系的水平面上的深度相同的条件获取指定图像相对于标记图像的位姿参数,从而确定相机的位置和姿态,提高了相机的追踪精度,即使在切换标记图像时也不会引入误差。本发明实施例提供的方法,轻量简单,没有复杂的后端优化,因此计算速度很快,甚至可以做到实时追踪。
相对于传统的slam(simultaneouslocalizationandmapping,即时定位与地图构建)算法,本发明实施例提供的方法稳定性更高、鲁棒性更强,可以达到非常高的追踪精度。
并且,如果假设特征点在确定的标记图像中的深度相同,当切换为新的标记图像时,会从新的标记图像中提取新的特征点,并假设新的特征点在新的标记图像中的深度相同。但是,当相机在两个标记图像之间发生旋转时,如果特征点在前一个标记图像中的深度相同,则新的特征点在新的标记图像中的深度不会相同,违背了上述假设条件。也即是,上述假设条件出现矛盾,引入了误差。在追踪过程中如果多次切换标记图像会引入更大的误差,影响追踪精度。而相对于上述假设条件来说,本发明实施例改进了上述假设条件,所设置的深度假设条件更为合理,更符合真实情况,避免了在切换标记图像引入的误差,因此追踪精度更高。
本发明实施例提供了一套相机姿态追踪算法,将相机的运动过程看做是对标记图像的特征点的追踪过程。通过设置深度假设条件,并追踪匹配得到相机相对于标记图像的位移参数,两者结合得到相对于初始场景的位置和姿态变化,从而实现了一套真实自然场景下稳定、快速、鲁棒的相机姿态跟踪系统,不依赖于预先给定的标记图像,在提高计算速度的同时增强了系统的鲁棒性,相机定位精度很高。同时避免了复杂的imu和图像融合算法,也降低了对参数的敏感性。本发明实施例提供的方法能在移动端流畅运行,且不需要精确的标定。
本发明实施例提出了两种深度假设条件:
第一种、g-equal条件:标记图像的特征点在世界坐标系的水平面上的深度相同。
相机拍摄的多个图像如图4所示,追踪过程包括以下步骤:
1、相机拍摄得到标记图像a。
2、相机拍摄多个图像,并追踪标记图像a的特征点,直至拍摄到图像c。
3、通过imu获取标记图像a相对于虚拟相机坐标系d的旋转参数矩阵rad,将标记图像a的图像坐标系转换到虚拟相机坐标系d中,再向z轴的负方向平移一个单位,转换到坐标系m。则对图像c相对于虚拟相机坐标系d的单应性矩阵进行分解,得到图像c相对于坐标系m中标记图像a的旋转平移矩阵[rcm/tcm]。
4、根据坐标系m与标记图像a的图像坐标系之间的转换关系,对图像c相对于坐标系m中的标记图像a的旋转位移矩阵[rcm/tcm]进行转换,得到图像c相对于标记图像a的旋转位移矩阵[rca/tca]。
第二种、z-equal条件:标记图像的特征点在初始标记图像的相机坐标系的水平面上的深度相同。
相机拍摄的多个图像如图5所示,追踪过程包括以下步骤:
1、相机拍摄得到标记图像a。
2、相机拍摄多个图像,并追踪标记图像a的特征点,直至拍摄到图像c。
3、根据标记图像a相对于初始标记图像的相机坐标系d的旋转参数矩阵rad,将标记图像a的图像坐标系转换到相机坐标系d中,再向z轴的负方向平移一个单位,转换到坐标系m。则对图像c相对于相机坐标系d的单应性矩阵进行分解,得到图像c相对于坐标系m中标记图像a的旋转平移矩阵[rcm/tcm]。
4、根据坐标系m与标记图像a的图像坐标系之间的转换关系,对图像c相对于坐标系m中的标记图像a的旋转位移矩阵[rcm/tcm]进行转换,得到图像c相对于标记图像a的旋转位移矩阵[rca/tca]。
本发明实施例中,位姿参数可以包括位移参数和旋转参数,位移参数用于表示相机的位移情况,可以确定相机在三维空间内位置的变化,而旋转参数用于表示相机的旋转角度的变化,可以确定相机在三维空间内姿态的变化。通过执行上述步骤可以获取到相机的位移参数和旋转参数。或者,通过执行上述步骤可以获取到相机的位移参数而不获取旋转参数,相机的旋转参数的获取过程详见下述实施例。
图6是本发明实施例提供的一种位姿确定方法的流程图,该位姿确定方法的执行主体为智能设备,该智能设备可以为配置有相机的手机、平板电脑等终端或者为配置有相机的ar眼镜、ar头盔等ar设备,参见图6,该方法包括:
601、通过imu(inertialmeasurementunit,惯性测量单元)获取智能设备的多个旋转参数以及对应的时间戳。
其中,每个旋转参数对应的时间戳是指获取该旋转参数时的时间戳。
602、根据多个旋转参数以及对应的时间戳进行插值得到旋转参数曲线。
其中,插值算法可以采用slerp(sphericallinearinterpolation,球面线性插值)算法或者其他算法。
根据多个旋转参数以及对应的时间戳进行插值得到旋转参数曲线,该旋转参数曲线可以表示相机的旋转参数随拍摄时间的变化规律。
603、当相机拍摄到指定图像时,获取指定图像的时间戳,并获取该时间戳在旋转参数曲线中对应的旋转参数,作为指定图像的旋转参数。
由于图像的拍摄频率与imu的采样频率不匹配,因此通过插值得到旋转参数曲线,根据旋转参数曲线可以进行数据对齐,从而得到指定图像对应的旋转参数。
智能设备配置有陀螺仪和地磁传感器,通过陀螺仪和地磁传感器,可以得到智能设备在世界坐标系中唯一的旋转参数。且智能设备还可以提供获取旋转参数的接口:rotation-vector接口,按照imu的采样频率调用rotation-vector接口,可以通过陀螺仪和地磁传感器获取到智能设备相对于世界坐标系的旋转参数。
通过该世界坐标系得到的旋转参数可以认为没有误差,而且无需依赖于imu的参数,避免了imu的标定问题,可以兼容多种类型的设备。
智能设备可以将获取到多个旋转参数以及对应的时间戳均存储至imu队列中,通过读取imu队列中的数据进行插值得到旋转参数曲线。或者,考虑到上述数据可能会存在噪声,因此为了保证数据的准确性,可以计算获取到的旋转参数与上一个旋转参数之间的角度差,如果该角度差大于预设阈值,可以认为获取到的旋转参数为噪声项,则将该旋转参数删除。通过上述检测可以删除噪声项,仅将通过检测的旋转参数及其对应的时间戳存储至imu队列中。
本发明实施例提供的方法,通过根据imu测量的多个旋转参数以及对应的时间戳进行插值得到旋转参数曲线,根据旋转参数曲线可以进行数据对齐,从而根据指定图像的时间戳和旋转参数曲线,获取指定图像的旋转参数,提高了精确度,无需依赖于imu的参数,避免了imu的标定问题,并且考虑到了智能设备计算能力低的问题,通过imu获取旋转参数可以降低计算量,提高计算速度。另外,将噪声项删除,可以提高数据的准确性,进一步提高精确度。
图7是本发明实施例提供的一种位姿确定装置的结构示意图。参见图7,该装置应用于智能设备中,该装置包括:
第一获取模块701,用于执行上述实施例中获取相机拍摄的指定图像相对于指定坐标系的单应性矩阵的步骤;
分解处理模块702,用于执行上述实施例中对单应性矩阵进行分解的步骤;
第二获取模块703,用于执行上述实施例中从旋转位移矩阵中获取指定图像相对于标记图像的位姿参数的步骤。
可选地,第一获取模块701包括:
第一获取单元,用于执行上述实施例中获取标记图像相对于指定坐标系的单应性矩阵的步骤;
第二获取单元,用于执行上述实施例中通过追踪标记图像的特征点,获取每个图像相对于上一个图像的单应性矩阵的步骤;
迭代单元,用于执行上述实施例中对每个图像相对于上一个图像的单应性矩阵进行迭代处理,得到指定图像相对于指定坐标系的单应性矩阵的步骤。
可选地,第一获取单元,用于执行上述实施例中获取标记图像相对于指定坐标系的旋转参数矩阵,采用以下公式,获取标记图像相对于指定坐标系的单应性矩阵的步骤:
had=p*rad*p-1。
可选地,第一获取单元,用于执行上述实施例中当指定坐标系为世界坐标系投影到世界坐标系的水平面上形成的虚拟相机坐标系时,通过惯性测量单元imu获取标记图像相对于指定坐标系的旋转参数矩阵的步骤。
可选地,第一获取单元,用于执行上述实施例中当指定坐标系为相机拍摄初始标记图像时的相机坐标系时,通过追踪初始标记图像的特征点,获取每个图像相对于上一个图像的旋转参数矩阵,对每个图像相对于上一个图像的旋转参数矩阵进行迭代处理,得到标记图像相对于指定坐标系的旋转参数矩阵的步骤。
可选地,分解处理模块702,包括:
坐标系转换单元,用于执行上述实施例中将指定坐标系向z轴的负方向平移一个单位,得到第一坐标系的步骤;
分解处理单元,用于执行上述实施例中根据约束条件对单应性矩阵进行分解,得到指定图像相对于第一坐标系中的标记图像的旋转位移矩阵的步骤;
坐标系转换单元,还用于执行上述实施例中对指定图像相对于第一坐标系中的标记图像的旋转位移矩阵进行转换,得到指定图像相对于标记图像的旋转位移矩阵的步骤。
可选地,分解处理单元,还用于执行上述实施例中采用以下公式,对单应性矩阵进行分解后计算旋转参数矩阵rcm和位移参数矩阵tcm的步骤:
可选地,坐标系转换单元,还用于执行上述实施例中采用如下公式进行转换,得到指定图像相对于标记图像的旋转位移矩阵的步骤:
可选地,该装置还包括:
深度获取模块,用于执行上述实施例中采用以下公式,计算特征点在标记图像中的深度的步骤:
可选地,该装置还包括:
三维坐标获取模块,用于执行上述实施例中采用以下公式,计算特征点在标记图像中的三维坐标的步骤:
xa=s*p-1*xa;
迭代处理模块,用于根据特征点在标记图像中的三维坐标,以及指定图像相对于标记图像的旋转位移矩阵进行迭代,得到特征点在指定图像中的估计三维坐标;
变换模块,用于对特征点在指定图像中的估计三维坐标进行变换,得到特征点在指定图像中的估计二维坐标;
删除模块,用于如果特征点在指定图像中的估计二维坐标与实际二维坐标之间的距离大于预设距离,则删除特征点。
可选地,该装置还包括:
第三获取模块,用于执行上述实施例中采用以下公式,获取指定图像的旋转位移矩阵后,从旋转位移矩阵中获取指定图像的位姿参数的步骤:
可选地,位姿参数包括位移参数,该装置还包括:
插值处理模块,用于执行上述实施例中通过惯性测量单元imu,进行插值得到旋转参数曲线的步骤;
旋转参数获取模块,用于执行上述实施例中获取第一图像的时间戳在旋转参数曲线中对应的旋转参数,作为第一图像的旋转参数的步骤。
需要说明的是:上述实施例提供的位姿确定装置在确定位姿参数时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将智能设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的位姿确定装置与位姿确定方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图8示出了本发明一个示例性实施例提供的终端800的结构框图,终端800用于执行上述方法实施例中智能设备所执行的步骤。
该终端800可以是便携式移动终端,比如:智能手机、平板电脑、mp3播放器(movingpictureexpertsgroupaudiolayeriii,动态影像专家压缩标准音频层面3)、mp4(movingpictureexpertsgroupaudiolayeriv,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑,也可以是ar眼镜、ar头盔等ar设备。终端800还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端800包括有:处理器801和存储器802。
处理器801可以包括一个或多个处理核心,比如4核心处理器、5核心处理器等。处理器801可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器801所具有以实现本申请中方法实施例提供的位姿确定方法。
在一些实施例中,终端800还可选包括有:外围设备接口803和至少一个外围设备。处理器801、存储器802和外围设备接口803之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口803相连。具体地,外围设备包括:射频电路804、触摸显示屏805、摄像头806、音频电路807、定位组件808和电源808中的至少一种。
外围设备接口803可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器801和存储器802。在一些实施例中,处理器801、存储器802和外围设备接口803被集成在同一芯片或电路板上;在一些其他实施例中,处理器801、存储器802和外围设备接口803中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路804用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路804通过电磁信号与通信网络以及其他通信设备进行通信。射频电路804将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路804包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路804可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2g、3g、4g及13g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路804还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏805用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏805是触摸显示屏时,显示屏805还具有采集在显示屏805的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器801进行处理。此时,显示屏805还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏805可以为一个,设置终端800的前面板;在另一些实施例中,显示屏805可以为至少两个,分别设置在终端800的不同表面或呈折叠设计;在再一些实施例中,显示屏805可以是柔性显示屏,设置在终端800的弯曲表面上或折叠面上。甚至,显示屏805还可以设置成非矩形的不规则图形,也即异形屏。显示屏805可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。
摄像头组件806用于采集图像或视频。可选地,摄像头组件806包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端800的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件806还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路807可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器801进行处理,或者输入至射频电路804以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端800的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器801或射频电路804的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路807还可以包括耳机插孔。
定位组件808用于定位终端800的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件808可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源808用于为终端800中的各个组件进行供电。电源808可以是交流电、直流电、一次性电池或可充电电池。当电源808包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端800还包括有一个或多个传感器810。该一个或多个传感器810包括但不限于:加速度传感器811、陀螺仪传感器812、压力传感器813、指纹传感器814、光学传感器815以及接近传感器816。
加速度传感器811可以检测以终端800建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器811可以用于检测重力加速度在三个坐标轴上的分量。处理器801可以根据加速度传感器811采集的重力加速度信号,控制触摸显示屏805以横向视图或纵向视图进行用户界面的显示。加速度传感器811还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器812可以检测终端800的机体方向及转动角度,陀螺仪传感器812可以与加速度传感器811协同采集用户对终端800的3d动作。处理器801根据陀螺仪传感器812采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器813可以设置在终端800的侧边框和/或触摸显示屏805的下层。当压力传感器813设置在终端800的侧边框时,可以检测用户对终端800的握持信号,由处理器801根据压力传感器813采集的握持信号进行左右手识别或快捷操作。当压力传感器813设置在触摸显示屏805的下层时,由处理器801根据用户对触摸显示屏805的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器814用于采集用户的指纹,由处理器801根据指纹传感器814采集到的指纹识别用户的身份,或者,由指纹传感器814根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器801授权该用户具有相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器814可以被设置终端800的正面、背面或侧面。当终端800上设置有物理按键或厂商logo时,指纹传感器814可以与物理按键或厂商标志集成在一起。
光学传感器815用于采集环境光强度。在一个实施例中,处理器801可以根据光学传感器815采集的环境光强度,控制触摸显示屏805的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏805的显示亮度;当环境光强度较低时,调低触摸显示屏805的显示亮度。在另一个实施例中,处理器801还可以根据光学传感器815采集的环境光强度,动态调整摄像头组件806的拍摄参数。
接近传感器816,也称距离传感器,通常设置在终端800的前面板。接近传感器816用于采集用户与终端800的正面之间的距离。在一个实施例中,当接近传感器816检测到用户与终端800的正面之间的距离逐渐变小时,由处理器801控制触摸显示屏805从亮屏状态切换为息屏状态;当接近传感器816检测到用户与终端800的正面之间的距离逐渐变大时,由处理器801控制触摸显示屏805从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图8中示出的结构并不构成对终端800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本发明实施例还提供了一种位姿确定装置,该位姿确定装置包括处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,指令、程序、代码集或指令集由处理器加载并具有以实现上述实施例的位姿确定方法中所具有的操作。
本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,该指令、该程序、该代码集或该指令集由处理器加载并具有以实现上述实施例的位姿确定方法中所具有的操作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。