本申请涉及即时定位与地图构建领域,特别涉及一种位姿确定方法、装置、设备及存储介质。
背景技术:
增强现实(augmentedreality,ar)是近年来热度较高的技术之一。客户端通过在相机实时采集到的视频帧上叠加显示ar模型,来实现对显示的真实世界“增强”。客户端在显示ar模型时,需要先确定相机在世界坐标系中的位姿。
目前,客户端通常通过使用ios(iphoneoperationsystem)系统提供的arkit开发组件来确定相机的位姿。arkit开发组件基于视觉惯性里程计(visualinertialodometry,vio)技术,能够跟踪相机在所处的现实世界中的位置与姿态,并与相机采集到的的视频帧中的像素点进行匹配,从而实现确定相机在世界坐标系中的位姿。
客户端通过arkit开发组件来确定相机在世界坐标系中的位姿时,由于实现原理的限制,需要移动相机进行系统初始化,才能实现确定相机的位姿。确定位姿的过程较繁琐且时效性较差。
技术实现要素:
本申请提供了一种位姿确定方法、装置、设备及存储介质,可以简化确定位姿的过程从而提升确定位姿的时效性。所述技术方案如下:
根据本申请的一方面,提供了一种位姿确定方法,所述方法包括:
在第一视频帧中确定第一二维平面点,所述第一二维平面点在目标水平面的显示区域内,所述目标水平面是现实世界中的三维水平面在所述第一视频帧中的成像内容;
获取相机在采集所述第一视频帧时的第一姿态信息;
确定所述第一二维平面点在所述现实世界中对应的第一三维空间点在所述相机的相机坐标系中的第一坐标;
根据所述第一姿态信息以及所述第一坐标,确定所述相机在世界坐标系中的位姿,所述世界坐标系的原点为所述第一三维空间点。
根据本申请的另一方面,提供了一种位姿确定装置,所述装置包括:
第一确定模块,用于在第一视频帧中确定第一二维平面点,所述第一二维平面点在目标水平面的显示区域内,所述目标水平面是现实世界中的三维水平面在所述第一视频帧中的成像内容;
获取模块,关于获取相机在采集所述第一视频帧时的第一姿态信息;
第二确定模块,用于确定所述第一二维平面点在所述现实世界中对应的第一三维空间点在所述相机的相机坐标系中的第一坐标;
第三确定模块,用于根据所述第一姿态信息以及所述第一坐标,确定所述相机在世界坐标系中的位姿,所述世界坐标系的原点为所述第一三维空间点。
可选地,所述第一确定模块,包括:
识别子模块,用于在所述第一视频帧中识别所述目标水平面;
确定子模块,用于响应于针对所述第一视频帧的触控操作,在所述目标水平面上确定出与所述触控操作的触控位置对应的所述第一二维平面点。
可选地,所述识别子模块,用于:
采用基于图的平面物体跟踪算法在所述第一视频帧中确定出所述目标水平面。
可选地,所述确定子模块模块,用于:
响应于针对所述目标水平面的单击操作,将所述单击操作在所述目标水平面上的点击位置确定为所述第一二维平面点。
可选地,所述获取模块,用于:
通过惯性测量单元,在所述相机采集所述第一视频帧时获取所述第一姿态信息。
可选地,所述第二确定模块,用于:
根据所述第一姿态信息确定所述三维水平面的描述信息,所述描述信息用于反映所述三维水平面在所述相机坐标系中的姿态;
根据所述描述信息、所述第一二维平面点在所述第一视频帧中的二维位置、所述相机到所述目标水平面的距离以及所述相机的相机内参数,确定所述第一三维空间点的第一深度,所述第一深度用于反映所述第一三维空间点在所述相机坐标系下与所述相机坐标系的原点之间的距离;
根据所述第一深度、所述相机内参数以及所述二维位置,确定所述第一三维空间点在所述相机坐标系中的第一坐标。
可选地,所述装置还包括:
建立模块,用于响应于所述触控操作,以所述触控位置为中心建立第一方形跟踪框,所述第一方形跟踪框的边长为第一边长;
第四确定模块,用于响应于所述第一二维平面点在第二视频帧中发生位移,确定所述第一方形跟踪框在所述第二视频帧中对应的第二方形跟踪框,所述第二方形跟踪框的边长为第二边长,所述第二视频帧为所述第一视频帧的后一个视频帧。
第五确定模块,用于根据所述第二方形跟踪框在所述第二视频帧中确定与所述第一二维平面点对应的第二二维平面点;
第六确定模块,用于根据所述第一边长与所述第二边长的比值以及所述第一深度,确定所述第二二维平面点在所述现实世界中对应的第二三维空间点的第二深度,所述第二深度用于反映所述第二三维空间点在所述相机坐标系下与所述相机坐标系的原点之间的距离;
执行模块,用于根据所述第二二维平面点以及所述第二深度,再次执行确定所述位姿的步骤。
可选地,所述第四确定模块,用于:
响应于所述第一二维平面点在所述第二视频帧中发生位移,跟踪所述第一方形跟踪框在所述第一视频帧中对应的区域内容在所述第二视频帧中所处的目标区域;
将所述目标区域的外边框确定为所述第二方形跟踪框。
可选的,所述第五确定模块,用于:
将所述第二方形跟踪框的中心确定为所述第二二维平面点。
可选地,所述第三确定模块,用于:
根据所述第一姿态信息确定所述位姿中的姿态;
根据所述第一姿态信息以及所述第一坐标,确定所述位姿中的位置。
可选地,所述装置还包括:
显示模块,用于响应于所述触控操作触发的模型显示指令,根据所述位姿在所述第一二维平面点显示增强现实模型。
根据本申请的又一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上方面所述的位姿确定方法。
根据本申请的再一方面,提供了一种计算机可读存储介质,所述可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上方面所述的位姿确定方法。
根据本申请的还一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述方面的各种可选实现方式中提供的位姿确定方法。
本申请提供的技术方案带来的有益效果至少包括:
通过根据相机在采集第一视频帧时的第一姿态信息,以及第一视频帧中的第一二维平面点在现实世界中对应的第一三维空间点在相机坐标系中的第一坐标,能够确定出相机在世界坐标系中的位姿,从而能够根据该位姿在第一视频帧中显示ar模型。在确定该位姿的过程中,无需移动计算机设备对系统进行初始化,简化了确定位姿的过程,提升了确定位姿的时效性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的确定位姿的原理的示意图;
图2是本申请实施例提供的一种位姿确定方法的流程示意图;
图3是本申请实施例提供的另一种位姿确定方法的流程示意图;
图4是本申请实施例提供的确定第一二维平面点的实现过程的示意图;
图5是本申请实施例提供的确定第一二维平面点的第一坐标的实现过程的示意图;
图6是本申请实施例提供的显示增强显示模型的示意图;
图7是本申请实施例提供的确定第二二维平面点的实现过程的示意图;
图8是本申请实施例提供的一种位姿确定装置的框图;
图9是本申请实施例提供的一种第一确定模块的框图;
图10是本申请实施例提供的另一种位姿确定装置的框图;
图11是本申请实施例提供的又一种位姿确定装置的框图;
图12是本申请实施例提供的一种终端的结构示意图。
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
为了便于对本申请实施例提供的方法的理解,首先对本申请实施例中涉及的名词进行介绍:
图像坐标系:图像坐标系是以相机采集到的图像的左上顶点为坐标原点的坐标系。图像坐标系的x轴与y轴为采集到的图像的长宽方向。
相机坐标系:相机坐标系是以相机的聚焦中心为原点,以光轴为z轴建立的三维直角坐标系。其中,相机坐标系的x轴与采集到的图像的图像坐标系的x轴平行,相机坐标系的y轴与采集到的图像的图像坐标系的y轴平行。
世界坐标系:世界坐标系能够描述相机在现实世界中的位置,同样还能够描述相机采集到的图像中的物体在现实世界中的位置。可以通过相机在世界坐标系中的位姿,将相机坐标系转换为世界坐标系。通常,该世界坐标系的x轴水平指向正东方向,y轴水平指向正北方向,z轴竖直向上。
位姿:位姿用于描述相机的位置和姿态。位置可以用相机在世界坐标系中的坐标来表示,姿态指相机在世界坐标系中的朝向,可以用旋转矩阵来表示。
惯性测量单元(inertialmeasurementunit,imu):imu是用于测量物体三轴姿态角(或角速率)以及加速度的装置。imu通常包含三个单轴的加速度计和三个单轴的陀螺,加速度计用于检测物体在载体坐标系统独立三轴的加速度信号,陀螺用于检测载体相对于导航坐标系的角速度信号。imu能够测量物体在三维空间中的角速度和加速度,并以此确定出物体的姿态。
图1是本申请实施例提供的确定位姿的原理的示意图,如图1的(a)所示,ar客户端在安装该ar客户端的计算机设备采集到的第一视频帧101中的目标水平面103的显示区域内获取第一二维平面点104,该第一二维平面点104是根据用户的触控操作的触控位置确定的。该计算机设备上集成有相机。该目标水平面是现实世界中的三维水平面在第一视频帧中的成像内容。该目标水平面103是ar客户端在第一视频帧101中识别出的。
如图1的(b)所示,ar客户端以该第一二维平面点104为中心,建立第一方形跟踪框105,第一方形跟踪框105的边长为第一边长。之后ar客户端根据计算机设备上的imu确定相机在采集该第一视频帧时的第一姿态信息。根据该第一姿态信息确定在相机的相机坐标系111中的目标水平面103在现实世界中对应的三维水平面110的描述信息。ar客户端根据该描述信息、第一二维平面点104在第一视频帧101中的二维位置、该相机到目标水平面的距离(通常设置为1m)以及相机的相机内参数,能够确定出用于反映第一三维空间点108在相机坐标系111下与相机之间的距离的第一深度。该第一三维空间点108为第一二维平面点104在现实世界中的对应点。ar客户端根据该第一深度、相机内参数以及第一二维平面点104在第一视频帧101中的二维位置,确定出第一三维空间点108在相机的相机坐标系111中的第一坐标。之后ar客户端根据相机在采集该第一视频帧101时的第一姿态信息以及第一三维空间点108在相机的相机坐标系111中的第一坐标,确定相机在世界坐标系109中的位姿。该世界坐标系109的原点为第一三维空间点108。ar客户端能够根据该位姿,在第一视频帧101的第一二维平面点104显示ar模型。
如图1的(c)所示,当ar客户端显示第二视频帧102时,根据第一方形跟踪框105在第二视频帧102中,跟踪第一方形跟踪框105在第一视频帧101中对应的区域内容在第二视频帧102中的目标区域,并将该目标区域的外边框确定为第二方形跟踪框107,第二方形跟踪框的边长为第二边长。将第二方形跟踪框107的中心确定为第二二维平面点106。该第二视频帧为第一视频帧的后一个视频帧。ar客户端根据第一边长与第二边长的比值以及第一深度,能够确定出第二二维平面点在现实世界中对应的第二三维空间点的第二深度。ar客户端能够根据该第二二维平面点106以及第二深度,通过上述步骤在第二视频帧102中继续显示ar模型。
根据相机在采集第一视频帧时的姿态以及第一视频帧中的第一二维平面点在现实世界中对应的第一三维空间点在相机坐标系中的第一坐标,能够确定出相机在世界坐标系中的位姿,从而能够根据该位姿在第一视频帧中显示ar模型。通过第一方形跟踪框在第一视频帧之后的第二视频帧中确定出与第一二维平面点对应的第二二维平面点,以及第二二维平面点在现实世界中对应的第二三维空间点的第二深度。根据该第二二维平面点以及第二深度同样能够确定出相机在世界坐标系中的位姿。在确定相机的位姿的过程中,无需移动计算机设备对系统进行初始化,简化了确定位姿的过程,提升了确定位姿的时效性。
图2是本申请实施例提供的一种位姿确定方法的流程示意图。该方法可以用于计算机设备或计算机设备上的ar客户端。如图2所示,该方法包括:
步骤201、在第一视频帧中确定第一二维平面点,第一二维平面点在目标水平面的显示区域内。
可选地,该第一视频帧是安装ar客户端的计算机设备采集到的视频中的任一视频帧。可选地,计算机设备集成有相机,例如集成有摄像头的手机和具备计算能力的数码照相机等,该计算机设备也可称为相机。
该目标水平面是现实世界中的三维水平面在第一视频帧中的成像内容。该目标水平面是ar客户端在该第一视频帧中识别到的。可选地,ar客户端采用基于图的平面物体跟踪算法(gracker),在第一视频帧中识别出该目标水平面。gracker是一种已被人工智能领域的期刊录用的算法。ar客户端通过gracker,能够将需要进行平面识别的图像与已知的现实世界中的平面的图像进行匹配,从而识别出目标水平面。在进行图像的匹配的过程中,gracker能够实现对图像的特征进行匹配,同时还能够估计图像对应的姿态来提升匹配准确度,从而能够有效提升识别目标平面的准确度。例如在第一视频帧中识别出桌面或地面。
在一个示例中,第一二维平面点用于在第一视频帧中显示ar模型。可选地,ar客户端根据针对第一视频帧的触控操作的触控位置确定该第一二维平面点。
步骤202、获取相机在采集第一视频帧时的第一姿态信息。
可选地,该第一姿态信息用于反映相机当前的姿态相较于水平向北时的姿态的变化。示例地,计算机设备为手机,相机为手机上的摄像头,手机水平放置且屏幕朝上,当手机充电口与听筒的连线方向水平朝北时相机水平向北。
可选地,ar客户端通过计算机设备上的imu获取相机在采集第一视频帧时的第一姿态信息。
步骤203、确定第一二维平面点在现实世界中对应的第一三维空间点在相机的相机坐标系中的第一坐标。
该第一坐标用于确定相机在世界坐标系中的位姿中的位置。可选地,ar客户端根据第一姿态信息、第一二维平面点在第一视频帧中的二维位置、相机到目标水平面的距离以及相机的相机内参数,确定该第一坐标。
步骤204、根据第一姿态信息以及第一坐标,确定相机在世界坐标系中的位姿。
该世界坐标系的原点为第一三维空间点。ar客户端能够根据相机的第一姿态信息以及第一三维空间点的第一坐标,确定出相机在世界坐标系中的坐标,从而确定出相机在世界坐标系中的位姿中的位置。
其中,根据第一姿态信息和第一三维空间点能够确定出相机在世界坐标系中的位姿中的姿态,从而确定出相机在世界坐标系中的位姿。
综上所述,本申请实施例提供的位姿确定方法,根据相机在采集第一视频帧时的第一姿态信息,以及第一视频帧中的第一二维平面点在现实世界中对应的第一三维空间点在相机坐标系中的第一坐标,能够确定出相机在世界坐标系中的位姿,从而能够根据该位姿在第一视频帧中显示ar模型。在确定该位姿的过程中,无需移动计算机设备对系统进行初始化,简化了确定位姿的过程,提升了确定位姿的时效性。
图3是本申请实施例提供的另一种位姿确定方法的流程示意图。该方法可以用于计算机设备或计算机设备上的ar客户端。如图3所示,该方法包括:
步骤301、在第一视频帧中确定第一二维平面点,第一二维平面点在目标水平面的显示区域内。
该目标水平面是现实世界中的三维水平面在第一视频帧中的成像内容。该第一二维平面点在第一视频帧中的目标水平面上,指该第一二维平面点所在的像素点,在目标水平面包括的像素点内。
可选地,如图4所示,步骤301的实现过程包括以下步骤3011以及步骤3012:
在步骤3011中,在第一视频帧中识别目标水平面。
可选地,ar客户端采用基于图的平面物体跟踪算法(gracker)在第一视频帧中确定出目标水平面。ar客户端还能够通过easyar中的平面图像跟踪(planarimagetracking)功能,在第一视频帧中确定出目标水平面。easyar是一种目前已广泛应用的ar引擎,easyar提供的平面图像跟踪功能,能够在需要识别平面的图像中追踪已建立的现实世界中的平面的图像,从而实现在第一视频帧中识别出目标水平面。可选地,ar客户端在显示第一视频帧时,能够在第一视频帧中识别出该目标水平面。例如在第一视频帧中识别出桌面和地面等。
在步骤3012中,响应于针对第一视频帧的触控操作,在目标水平面上确定出与触控操作的触控位置对应的第一二维平面点。
可选地,该触控操作包括单击操作、双击操作、滑动操作以及长按操作等。示例地,当用户触摸计算机设备的显示屏时,会在显示屏表面形成电流,该电流会从显示屏的四角上的四个电极中流出。流经四个电极的电流的大小与手指到四角的距离成正比,计算机设备通过流经四个电极的电流的大小的比例,能够确定出触控操作在第一视频帧中的位置,即第一二维平面点的位置。当ar客户端在第一视频帧中识别出至少两个水平面时,ar客户端根据该触控操作,将该触控操作对应的水平面确定为目标水平面。可选地,第一二维平面点用于在第一视频帧中显示ar模型。
可选地,该触控操作为单击操作。ar客户端响应于针对目标水平面的单击操作,将单击操作在目标水平面上的点击位置确定为第一二维平面点。该点击位置指用户单击第一视频帧中的目标水平面时点击的像素点的位置。
步骤302、获取相机在采集第一视频帧时的第一姿态信息。
可选地,该第一姿态信息用于反映相机当前的姿态相较于水平向北时的姿态的变化。可选地,相机的姿态指计算机设备的姿态。安装ar客户端的计算机设备中集成有惯性测量单元。ar客户端通过该惯性测量单元,在相机采集第一视频帧时获取imu的姿态信息,并根据imu的姿态信息以及相机坐标系相对于imu的坐标系的旋转姿态,确定出第一姿态信息。imu的坐标系是在imu在生产时标定的坐标系。
示例地,相机在采集第一视频帧时的第一姿态信息为:
r0=ric-1*rimu,0*ric其中,rimu,0为相机在采集第一视频帧时的imu的姿态信息。ric是已知量,为相机坐标系相对于imu坐标系的旋转姿态。
步骤303、确定第一二维平面点在现实世界中对应的第一三维空间点在相机的相机坐标系中的第一坐标。
相机在采集图像的过程中,会将在现实世界中采集到的信息转换为二维平面中的信息,从而实现图像的采集。第一三维空间点是第一二维平面点在现实世界中的对应点。第一视频帧中的第一三维空间点在相机的相机坐标系中的第一坐标用于确定相机在世界坐标系中的位姿中的位置。
可选地,如图5所示,步骤303的实现过程包括以下步骤3031至3033:
在步骤3031中,根据第一姿态信息确定三维水平面的描述信息,描述信息用于反映三维水平面在相机坐标系中的姿态。
该三维水平面为目标水平面在显示世界中对应的水平面。该第一姿态信息能够反映出相机当前的姿态相较于水平向北时的姿态的变化,则能够根据该第一姿态信息,确定出相机在水平时的姿态信息,也即是三维水平面的描述信息。
示例地,相机的第一姿态信息为r0,三维水平面的描述信息为三维水平面的法向量,三维水平面的描述信息n=r0-1*(0,0,-1)t。
在步骤3032中,根据描述信息、第一二维平面点在第一视频帧中的二维位置、相机到目标水平面的距离以及相机的相机内参数,确定第一三维空间点的第一深度。
可选地,相机到目标水平面的距离通常设置为1m。ar客户端还能够通过计算机设备上的红外测距仪,确定相机到目标水平面的距离。或者,ar客户端通过单目测距算法,确定出相机到目标水平面的距离。第一三维空间点的第一深度用于反映第一三维空间点在相机坐标系下与相机坐标系的原点之间的距离。相机内参数(也称为相机内参矩阵)用于实现相机坐标系与像平面坐标系之间的坐标转换。
示例地,目标水平面的描述信息为n,第一二维平面点的二维位置为p0=(u,v),表示第一二维平面点在第一视频帧对应的图像坐标系下的坐标。相机到目标水平面的距离为d,相机的相机内参数为k。为便于计算,将第一二维平面点的二维位置转换为齐次坐标形式p′0=(u,v,1),则第一三维空间点的第一深度为:
其中,相机的相机内参数为:
在步骤3033中,根据第一深度、相机内参数以及二维位置,确定第一三维空间点在相机坐标系中的第一坐标。
ar客户端根据第一深度、相机内参数以及二维位置,能够确定出第一三维空间点在相机坐标系中,相对于原点的距离以及方向,从而确定出第一三维空间点在相机坐标系中的第一坐标。示例地,第一三维空间点在相机坐标系中的第一坐标为:
p0=s0(k-1p0′)。
步骤304、根据第一姿态信息以及第一坐标,确定相机在世界坐标系中的位姿。
该世界坐标系的原点为第一三维空间点。可选地,ar客户端根据第一姿态信息确定位姿中的姿态。并根据第一姿态信息以及第一坐标,确定位姿中的位置。
示例地,c0表示相机坐标系,w表示相机坐标系。相机的第一姿态信息为r0,第一三维空间点的第一坐标为p0。则相机在世界坐标系中的位姿为:
步骤305、响应于触控操作触发的模型显示指令,根据位姿在第一二维平面点显示增强现实模型。
可选地,针对第一视频帧的触控操作还能够触发模型显示指令,ar客户端根据该模型显示指令,能够根据确定出的相机在世界坐标系中的位姿在第一视频帧中的第一二维平面点显示增强现实模型。
示例地,图6是本申请实施例提供的显示增强显示模型的示意图。如图6的(a)所示,相机采集到的第一视频帧601中包括ar客户端识别出的目标平面602,该目标平面602为地面,第一视频帧中还包括放置在目标平面602上的衣架。在目标平面602中,ar客户端根据触控操作确定出第一二维平面点604。如图6的(b),ar客户端根据基于该第一二维平面点604确定的相机在世界坐标系中的位姿,在第一二维平面点604显示增强现实模型605。该增强现实模型605为鸵鸟的模型。
步骤306、响应于触控操作,以触控位置为中心建立第一方形跟踪框。
该第一方形跟踪框的边长为第一边长。ar客户端根据针对第一视频帧的触控操作,还能够建立该第一跟踪框。该第一方形跟踪框的中心为触控操作的触控位置。该第一方形跟踪框的边长是ar客户端设置的。例如第一方形跟踪框的边长为第一视频帧的窄边长的四分之一。可选地,该第一方形跟踪框还能够为圆形框等。
步骤307、响应于第一二维平面点在第二视频帧中发生位移,确定第一方形跟踪框在第二视频帧中对应的第二方形跟踪框。
该第二方形跟踪框的边长为第二边长。该第二视频帧为第一视频帧的后一个视频帧。可选地,当采集第一视频帧的相机发生位移时,第一二维平面点在第二视频帧中会发生位移。ar客户端能够根据步骤306中建立的第一方形跟踪框,对第一方形跟踪框在第一视频帧中对应的区域内容进行跟踪,从而在第二视频帧中确定与第一方形跟踪框对应的第二方形跟踪框。
可选地,如图7所示,步骤307的实现过程包括以下步骤3071以及步骤3072:
在步骤3071中,响应于第一二维平面点在第二视频帧中发生位移,跟踪第一方形跟踪框在第一视频帧中对应的区域内容在第二视频帧中所处的目标区域。
可选地,ar客户端采用光流法(opticflow),在第二视频帧中检测第一方形跟踪框在第一视频帧中对应的区域内容,从而确定出该区域内容在第二视频帧中所处的目标区域。例如,在第一视频帧中,第一方形跟踪框对应的区域内容包括地面上的纸屑。则在第二视频帧中,ar客户端采用光流法,在第二视频帧中跟踪第一方形跟踪框在第一视频帧中对应的区域内容,即在第二视频帧中跟踪第一视频帧中的地面上的纸屑,从而确定出区域内容在第二视频帧中所处的目标区域。可选地,客户端还能够采用相关滤波跟踪算法(kernelcorrelationfilter,kcf)和tld(tracking-learning-detection)算法,实现跟踪第一方形跟踪框在第一视频帧中对应的区域内容在第二视频帧中所处的目标区域。可选地,当ar客户端显示的第一方形跟踪框中的区域内容出现缩放操作时,即相机移动位置,或用户进行缩放操作。ar客户端会跟踪第一方形跟踪框,实现在第二视频帧中同步对第一方形跟踪框进行缩放得到第二方形跟踪框。
在步骤3072中,将目标区域的外边框确定为第二方形跟踪框。
步骤308、根据第二方形跟踪框在第二视频帧中确定与第一二维平面点对应的第二二维平面点。
可选地,ar客户端将第二方形跟踪框的中心确定为该第二二维平面点。该第二二维平面点用于ar客户端在第二视频帧中继续显示ar模型。
步骤309、根据第一边长与第二边长的比值以及第一深度,确定第二二维平面点在现实世界中对应的第二三维空间点的第二深度。
该第二深度用于反映第二三维空间点在相机坐标系下与相机坐标系的原点之间的距离。示例地,第二三维空间点的第二深度为:
步骤310、根据第二二维平面点以及第二深度,再次执行确定位姿的步骤。
ar客户端根据确定出的第二二维平面点,再次执行确定位姿的步骤,能够确定出相机在采集第二视频帧时,在世界坐标系中的位姿。ar客户端从而能够在第二视频帧中的第二二维平面点继续显示第一视频帧中的ar模型。并且,ar客户端在确定采集第二视频帧之后的视频帧时的位姿时,将需要确认位姿的视频帧作为第二视频帧,将需要确认位姿的视频帧的前一个视频帧作为第一视频帧。ar客户端能够根据上述方法,继续确定相机在采集第二视频帧之后的视频帧时的位姿,并根据位姿显示ar模型。
示例地,第二三维空间点在相机坐标系下的第二坐标为:
p2=s2(k-1p2′),其中p2′为第二二维平面点的齐次坐标形式。
c2表示相机采集第二视频帧时的相机坐标系,w表示世界坐标系。相机的第二姿态信息为r2,该第二姿态信息是ar客户端通过imu在相机采集第二视频帧时获取到的。相机在世界坐标系中的位姿为:
综上所述,本申请实施例提供的位姿确定方法,根据相机在采集第一视频帧时的第一姿态信息,以及第一视频帧中的第一二维平面点在现实世界中对应的第一三维空间点在相机坐标系中的第一坐标,能够确定出相机在世界坐标系中的位姿,从而能够根据该位姿在第一视频帧中显示ar模型。通过第一方形跟踪框在第一视频帧之后的第二视频帧中确定出与第一二维平面点对应的第二二维平面点,以及第二二维平面点在现实世界中对应的第二三维空间点的第二深度。根据该第二二维平面点以及第二深度同样能够确定出相机在世界坐标系中的位姿。在确定该位姿的过程中,无需移动计算机设备对系统进行初始化,简化了确定位姿的过程,提升了确定位姿的时效性。
另外,通过vio技术确定相机的位姿时,vio技术需要通过加速度计的积分计算位姿中的位置,需要依赖高精度的imu。使用本申请实施例提供的位姿确定方法,可以不要求高精度的imu,扩大了兼容的计算机设备的范围,提升了设备覆盖率。通过vio技术确定相机的位姿时,需要重建视频帧中的像素点,对计算机设备的性能要求较高,使用本申请实施例提供的位姿确定方法,计算资源主要消耗在跟踪视频帧中的跟踪框,能够减少计算资源的消耗。本申请实施例提供的位姿确定方法是基于目标平面的,因此也能够将用户的手部作为目标平面,即显示的增强现实模型能够跟随用户的手部进行移动,提供了一种具有趣味性的交互方式。通过跟踪框确定第二二维平面点,能够实现在第二视频帧中自动继续显示增强现实模型,提升了用户体验。
需要说明的是,本申请实施例提供的方法步骤的先后顺序可以进行适当调整,步骤也可以根据情况进行相应增减,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化的方法,都应涵盖在本申请的保护范围之内,因此不再赘述。
图8是本申请实施例提供的一种位姿确定装置的框图。该装置可以用于计算机设备或计算机设备上的ar客户端。如图8所示,该装置80包括:
第一确定模块801,用于在第一视频帧中确定第一二维平面点。第一二维平面点在目标水平面的显示区域内。目标水平面是现实世界中的三维水平面在第一视频帧中的成像内容。
获取模块802,关于获取相机在采集第一视频帧时的第一姿态信息。
第二确定模块803,用于确定第一二维平面点在现实世界中对应的第一三维空间点在相机的相机坐标系中的第一坐标。
第三确定模块804,用于根据第一姿态信息以及第一坐标,确定相机在世界坐标系中的位姿。世界坐标系的原点为第一三维空间点。
可选地,如图9所示,第一确定模块801,包括:
识别子模块8011,用于在第一视频帧中识别目标水平面。
确定子模块8012,用于响应于针对第一视频帧的触控操作,在目标水平面上确定出与触控操作的触控位置对应的第一二维平面点。
可选地,识别子模块8011,用于:
采用基于图的平面物体跟踪算法在第一视频帧中确定出目标水平面。
可选地,确定子模块8012,用于:
响应于针对目标水平面的单击操作,将单击操作在目标水平面上的点击位置确定为第一二维平面点。
可选地,获取模块802,用于:
通过惯性测量单元,在相机采集第一视频帧时获取第一姿态信息。
可选地,第二确定模块803,用于:
根据第一姿态信息确定三维水平面的描述信息。描述信息用于反映三维水平面在相机坐标系中的姿态。
根据描述信息、第一二维平面点在第一视频帧中的二维位置、相机到目标水平面的距离以及相机的相机内参数,确定第一三维空间点的第一深度。第一深度用于反映第一三维空间点在相机坐标系下与相机坐标系的原点之间的距离。
根据第一深度、相机内参数以及二维位置,确定第一三维空间点在相机坐标系中的第一坐标。
可选地,如图10所示,装置80还包括:
建立模块805,用于响应于触控操作,以触控位置为中心建立第一方形跟踪框,第一方形跟踪框的边长为第一边长;
第四确定模块806,用于响应于第一二维平面点在第二视频帧中发生位移,确定第一方形跟踪框在第二视频帧中对应的第二方形跟踪框,第二方形跟踪框的边长为第二边长,第二视频帧为第一视频帧的后一个视频帧。
第五确定模块807,用于根据第二方形跟踪框在第二视频帧中确定与第一二维平面点对应的第二二维平面点;
第六确定模块808,用于根据第一边长与第二边长的比值以及第一深度,确定第二二维平面点在现实世界中对应的第二三维空间点的第二深度,第二深度用于反映第二三维空间点在相机坐标系下与相机坐标系的原点之间的距离;
执行模块809,用于根据第二二维平面点以及第二深度,再次执行确定位姿的步骤。
可选地,第四确定模块806,用于:
响应于第一二维平面点在第二视频帧中发生位移,跟踪第一方形跟踪框在第一视频帧中对应的区域内容在第二视频帧中所处的目标区域;
将目标区域的外边框确定为第二方形跟踪框。
可选的,第五确定模块807,用于:
将第二方形跟踪框的中心确定为第二二维平面点。
可选地,第三确定模块804,用于:
根据第一姿态信息确定位姿中的姿态。
根据第一姿态信息以及第一坐标,确定位姿中的位置。
可选地,如图11所示,装置80还包括:
显示模块810,用于响应于触控操作触发的模型显示指令,根据位姿在第一二维平面点显示增强现实模型。
需要说明的是:上述实施例提供的位姿确定装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的位姿确定装置与位姿确定方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请的实施例还提供了一种计算机设备,该计算机设备包括:处理器和存储器,存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述各方法实施例提供的位姿确定方法。
可选地,该计算机设备上安装有ar客户端,该计算机设备为终端。示例地,图12是本申请实施例提供的一种终端的结构示意图。
通常,终端1200包括有:处理器1201和存储器1202。
处理器1201可以包括一个或多个处理核心,比如4核心处理器、12核心处理器等。处理器1201可以采用dsp(digitalsignalprocessing,数字信号处理)、fpga(field-programmablegatearray,现场可编程门阵列)、pla(programmablelogicarray,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1201也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(centralprocessingunit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1201可以在集成有gpu(graphicsprocessingunit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1201还可以包括ai(artificialintelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
存储器1202可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1202还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1202中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1201所执行以实现本申请中方法实施例提供的位姿确定方法。
在一些实施例中,终端1200还可选包括有:外围设备接口1203和至少一个外围设备。处理器1201、存储器1202和外围设备接口1203之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1203相连。具体地,外围设备包括:射频电路1204、显示屏1205、摄像头组件1206、音频电路1207、定位组件1208和电源1209中的至少一种。
外围设备接口1203可被用于将i/o(input/output,输入/输出)相关的至少一个外围设备连接到处理器1201和存储器1202。在一些实施例中,处理器1201、存储器1202和外围设备接口1203被集成在同一芯片或电路板上;在一些其他实施例中,处理器1201、存储器1202和外围设备接口1203中的任意一个或两个可以在单独的芯片或电路板上实现,本申请实施例对此不加以限定。
射频电路1204用于接收和发射rf(radiofrequency,射频)信号,也称电磁信号。射频电路1204通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1204将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1204包括:天线系统、rf收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1204可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:万维网、城域网、内联网、各代移动通信网络(2g、3g、4g及5g)、无线局域网和/或wifi(wirelessfidelity,无线保真)网络。在一些实施例中,射频电路1204还可以包括nfc(nearfieldcommunication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1205用于显示ui(userinterface,用户界面)。该ui可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1205是触摸显示屏时,显示屏1205还具有采集在显示屏1205的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1201进行处理。此时,显示屏1205还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1205可以为一个,设置终端1200的前面板;在另一些实施例中,显示屏1205可以为至少两个,分别设置在终端1200的不同表面或呈折叠设计;在再一些实施例中,显示屏1205可以是柔性显示屏,设置在终端1200的弯曲表面上或折叠面上。甚至,显示屏1205还可以设置成非矩形的不规则图形,也即异形屏。显示屏1205可以采用lcd(liquidcrystaldisplay,液晶显示屏)、oled(organiclight-emittingdiode,有机发光二极管)等材质制备。
摄像头组件1206用于采集图像或视频。可选地,摄像头组件1206包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端1200的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及vr(virtualreality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1206还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1207可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1201进行处理,或者输入至射频电路1204以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1200的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1201或射频电路1204的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1207还可以包括耳机插孔。
定位组件1208用于定位终端1200的当前地理位置,以实现导航或lbs(locationbasedservice,基于位置的服务)。定位组件1208可以是基于美国的gps(globalpositioningsystem,全球定位系统)、中国的北斗系统或俄罗斯的伽利略系统的定位组件。
电源1209用于为终端1200中的各个组件进行供电。电源1209可以是交流电、直流电、一次性电池或可充电电池。当电源1209包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1200还包括有一个或多个传感器1210。该一个或多个传感器1210包括但不限于:加速度传感器1211、陀螺仪传感器1212、压力传感器1213、指纹传感器1214、光学传感器1215以及接近传感器1216。
加速度传感器1211可以检测以终端1200建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1211可以用于检测重力加速度在三个坐标轴上的分量。处理器1201可以根据加速度传感器1211采集的重力加速度信号,控制触摸显示屏1205以横向视图或纵向视图进行用户界面的显示。加速度传感器1211还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1212可以检测终端1200的机体方向及转动角度,陀螺仪传感器1212可以与加速度传感器1211协同采集用户对终端1200的3d动作。处理器1201根据陀螺仪传感器1212采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变ui)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1213可以设置在终端1200的侧边框和/或触摸显示屏1205的下层。当压力传感器1213设置在终端1200的侧边框时,可以检测用户对终端1200的握持信号,由处理器1201根据压力传感器1213采集的握持信号进行左右手识别或快捷操作。当压力传感器1213设置在触摸显示屏1205的下层时,由处理器1201根据用户对触摸显示屏1205的压力操作,实现对ui界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1214用于采集用户的指纹,由处理器1201根据指纹传感器1214采集到的指纹识别用户的身份,或者,由指纹传感器1214根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1201授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1214可以被设置终端1200的正面、背面或侧面。当终端1200上设置有物理按键或厂商logo时,指纹传感器1214可以与物理按键或厂商logo集成在一起。
光学传感器1215用于采集环境光强度。在一个实施例中,处理器1201可以根据光学传感器1215采集的环境光强度,控制触摸显示屏1205的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1205的显示亮度;当环境光强度较低时,调低触摸显示屏1205的显示亮度。在另一个实施例中,处理器1201还可以根据光学传感器1215采集的环境光强度,动态调整摄像头组件1206的拍摄参数。
接近传感器1216,也称距离传感器,通常设置在终端1200的前面板。接近传感器1216用于采集用户与终端1200的正面之间的距离。在一个实施例中,当接近传感器1216检测到用户与终端1200的正面之间的距离逐渐变小时,由处理器1201控制触摸显示屏1205从亮屏状态切换为息屏状态;当接近传感器1216检测到用户与终端1200的正面之间的距离逐渐变大时,由处理器1201控制触摸显示屏1205从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图12中示出的结构并不构成对终端1200的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请实施例中还提供了一种计算机可读存储介质,该可读存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,当该至少一条指令、至少一段程序、代码集或指令集由计算机设备的处理器加载并执行时,实现上述各方法实施例提供的位姿确定方法。
本申请还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例提供的位姿确定方法。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的可读存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同切换、改进等,均应包含在本申请的保护范围之内。