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

基于稀疏表示在增强现实会话中的表面检测和追踪的制作方法

2022-09-08 07:22:13 来源:中国专利 TAG:

基于稀疏表示在增强现实会话中的表面检测和追踪


背景技术:

1.增强现实(augmented reality,ar)将虚拟内容叠加在真实世界的用户视图上。随着ar软件开发工具包(software development kit,sdk)的发展,移动行业将智能手机ar引入主流。ar sdk通常提供六自由度(six degrees-of-freedom,6dof)追踪能力。用户可以使用智能手机的摄像头扫描环境,智能手机实时执行视觉惯性里程计(visual inertial odometry,vio)。在连续追踪摄像头姿势后,即可将虚拟物体放置到ar场景中,以创造一种真实物体和虚拟物体融合在一起的错觉。
2.将虚拟物体呈现在ar场景中可以涉及检测要放置虚拟物体的表面平面。可以随时间追踪这种表面平面,以更新虚拟物体的相对位置。


技术实现要素:

3.本发明一般涉及用于在ar会话中检测和追踪表面平面的方法和系统。
4.在示例中,在ar会话中通过计算机系统实现一种方法。该方法包括确定属于表面平面的多个点,上述表面平面基于真实世界环境的第一多维表示进行检测,上述第一多维表示基于上述真实世界环境的第一图像在上述ar会话中生成。该方法还包括确定上述真实世界环境的第二多维表示,上述第二多维表示基于上述真实世界环境的第二图像在上述ar会话中生成,上述第二图像在上述第一图像之后生成。该方法还包括确定还包括在上述第二多维表示中的上述点的数量。该方法还包括比较上述数量与阈值,以及在上述数量大于上述阈值时,基于上述第二多维表示,在ar会话中追踪上述表面平面。
5.在示例中,上述第一多维表示包括第一点云,上述第一点云对应于在上述真实世界环境中检测到的特征。每个点对应于一个特征且与一个点标识符相关联。在该示例中,确定上述多个点的数量包括:确定属于上述表面平面的第一点与第一点标识符相关联;基于上述第一点标识符,确定上述第一点包括在第二点云中,上述第二点云与上述第二多维表示对应;在确定上述第一点包括在上述第二点云中时,将上述多个点的上述数量加1。在该示例中,该方法还可以包括:在第一特征检测迭代中,基于上述第一图像和第一惯性测量单元(imu)数据检测上述特征;基于检测到的上述特征生成上述第一点云;以及为上述第一点云中的每个点分配不同的点标识符。此外,该方法还可以包括:在第二特征检测迭代中,基于上述第二图像和第二imu数据检测上述特征中的第一特征;在上述第二特征检测迭代中,基于上述第二图像和上述第二imu数据,检测在上述第一特征检测迭代中未检测到的第二特征;生成第二点云,上述第二点云包括与上述第一特征对应的第一点和与上述第二特征对应的第二点,上述第一点还包括在上述第一点云中;保持分配给上述第一点的第一点标识符;以及将第二点标识符分配给上述第二点。
6.在示例中,该方法还包括:基于同时定位与建图(slam)过程的执行生成上述第一多维表示,其中,上述第一图像被输入到上述slam过程;以及将上述第一多维表示输入随机采样一致性(ransac)过程。上述表面平面基于使用上述第一多维表示的上述ransac过程的执行进行检测。在该示例中,该方法还可以包括:为上述第一多维表示中的每个点分配不同
的点标识符;确定上述第一多维表示中的第一点属于上述表面平面;以及将上述表面平面与上述第一点的第一点标识符相关联。此外,确定上述多个点的上述数量包括:基于上述第一点标识符,确定上述第一点包括在上述第二多维表示中;以及在确定上述第一点包括在上述第二多维表示中时,将上述多个点的上述数量加1。
7.在示例中,追踪上述表面平面包括:从属于上述表面平面的上述多个点中确定第一点集,其中,上述第一点集存在于上述第二多维表示中;以及基于上述第一点集更新上述表面平面的平面函数。在该示例中,追踪上述表面平面还包括:确定属于上述表面平面的第二点集,上述第二点集在上述第二多维表示中,但不在上述第一多维表示中;以及将上述第二点集与上述表面平面相关联。
8.在示例中,一种计算机系统包括一个或多个处理器以及一个或多个存储器,存储有计算机可读指令,当由上述一个或多个处理器执行时,上述指令配置上述计算机系统执行操作。该操作包括确定属于表面平面的多个点,上述表面平面基于真实世界环境的第一多维表示进行检测,上述第一多维表示基于上述真实世界环境的第一图像在增强现实(ar)会话中生成。该操作还包括确定上述真实世界环境的第二多维表示,上述第二多维表示基于上述真实世界环境的第二图像在上述ar会话中生成,上述第二图像在上述第一图像之后生成。该操作还包括确定还包括在上述第二多维表示中的上述多个点的数量。该操作还包括比较上述数量与阈值,以及在上述数量大于上述阈值时,基于上述第二多维表示,在ar会话中追踪上述表面平面。
9.在示例中,上述计算机可读指令还被执行以配置上述计算机系统:从上述第二多维表示中确定属于上述表面平面的多个第二点;确定上述真实世界环境的第三多维表示,上述第三多维表示基于上述真实世界环境的第三图像在上述ar会话中生成,上述第三图像在上述第一图像之后生成;确定还包括在上述第一多维表示中的上述多个第二点的第二数量;比较上述第二数量与上述阈值;基于上述第二数量小于上述阈值,确定不再在上述ar会话中追踪上述表面平面。在该示例中,上述计算机可读指令还被执行以配置上述计算机系统:确定基于与上述阈值的比较进行追踪的平面表面的总数小于第二阈值;以及基于上述总数小于上述第二阈值,通过至少将上述第三多维表示输入随机采样一致性(ransac)过程来检测第二表面平面。此外,上述第二表面平面基于上述ransac过程的一组约束进行检测,上述一组约束指定了上述第三多维表示中的点的最小数量。此外,上述一组约束还指定了属于上述第二平面表面的点和上述计算机系统的摄像头之间的最大距离,其中,上述摄像头用于生成上述第三图像。
10.在示例中,一个或多个非暂时性计算机存储介质存储有指令,当在计算机系统上执行时,上述指令使上述计算机系统执行操作。该操作包括确定属于表面平面的多个点,上述表面平面基于真实世界环境的第一多维表示进行检测,上述第一多维表示基于上述真实世界环境的第一图像在增强现实(ar)会话中生成。该操作还包括确定上述真实世界环境的第二多维表示,上述第二多维表示基于上述真实世界环境的第二图像在上述ar会话中生成,上述第二图像在上述第一图像之后生成。该操作还包括确定还包括在上述第二多维表示中的上述多个点的数量。该操作还包括比较上述数量与阈值,以及在上述数量大于上述阈值时,基于上述第二多维表示,在ar会话中追踪上述表面平面。
11.在示例中,该操作还包括基于同时定位与建图(slam)过程的执行生成上述第一多
维表示,其中,上述第一图像被输入到上述slam过程;以及将上述第一多维表示输入随机采样一致性(ransac)过程。上述表面平面基于使用上述第一多维表示的上述ransac过程的执行进行检测。在该示例中,该操作还包括:为上述第一多维表示中的每个点分配不同的点标识符;确定上述第一多维表示中的第一点属于上述表面平面;以及将上述表面平面与上述第一点的第一点标识符相关联。此外,确定上述多个点的上述数量包括:基于上述第一点标识符,确定上述第一点包括在上述第二多维表示中;以及在确定上述第一点包括在上述第二多维表示中时,将上述多个点的上述数量加1。
12.在示例中,上述阈值设置为大于或等于3的值。
13.与传统技术相比,本发明具有许多优点。例如,本公开的实施例涉及用于表面检测和跟踪技术的方法和系统,其中,这些技术提供了相对于传统技术的实质性处理改进。取决于实现本公开的技术的计算机系统的配置,与表面平面的检测和跟踪相关的延迟可以减少两倍或更多。
附图说明
14.将参考附图描述根据本公开的各种实施例,其中:
15.图1示出了根据本公开至少一个实施例的用于ar应用的计算机系统的示例,该计算机系统包括摄像头和惯性测量单元(imu)。
16.图2示出了根据本公开至少一个实施例的追踪表面平面的示例。
17.图3示出了根据本公开至少一个实施例的用于检测和追踪表面平面的计算组件的示例。
18.图4示出了根据本公开至少一个实施例的ar会话中初始表面检测和追踪迭代的示例。
19.图5示出了根据本公开至少一个实施例的ar会话中当前表面检测和追踪迭代的示例。
20.图6示出了根据本公开至少一个实施例的基于点标识符以及与表面平面的关联的表面平面追踪的示例。
21.图7示出了根据本公开至少一个实施例的确定是否重复表面检测过程的示例。
22.图8示出了根据本公开至少一个实施例的表面平面检测和追踪的流程的示例。
23.图9示出了根据本公开至少一个实施例的计算机系统的组件的示例。
具体实施方式
24.在以下描述中,将描述各种实施例。出于解释的目的,阐述了具体配置和细节以便提供对实施例的透彻理解。然而,对于本领域技术人员来说显而易见的是,实施例也可以在没有这些具体细节的情况下实施。此外,为了不混淆所描述的实施例,可以省略或简化众所周知的特征。
25.本公开的实施例尤其涉及在增强现实(augmented reality,ar)会话中检测和追踪表面平面。在示例中,计算机系统包括摄像头、惯性测量单元(inertial measurement unit,imu)传感器和ar模块。ar模块负责特征检测和追踪过程、表面检测过程、以及表面追踪过程。在ar会话期间,摄像头生成真实世界环境的图像。该图像的图像数据和由imu传感
器生成的imu数据输入到特征检测和追踪过程,特征检测和追踪过程进而输出真实世界环境的多维表示(multi-dimensional representation)。该真实世界环境的多维表示输入到表面检测过程,表面检测过程进而输出标识检测到的表面平面的数据。该数据包括上述多维表示中属于上述平面的多个点。追踪过程将检测到的平面与点的标识符相关联。这样的标识符在本文中被称为点标识符。随后,生成下一个图像,并与下一imu数据一起输入到特征检测和追踪过程,特征检测和追踪过程进而输出真实世界环境的下一个多维表示。通过使用点标识符,追踪过程确定先前被确定为属于上述表面平面并且存在于该下一个多维表示中的特定点。如果此类特定点的数量超过第一预定义阈值,则追踪系统基于该下一个多维表示更新上述表面平面的平面函数。否则,表面追踪过程输出不再追踪上述表面平面的决定。在这种情况下,更新被追踪的表面平面的总数(例如,减少至少一个)并与第二预定义阈值进行比较。仅当小于第二预定义阈值时,才将下一个多维表示输入到表面检测过程,以对一个或多个表面平面进行新的检测。
26.说明性地,考虑一个真实世界环境的示例,其包括具有四个水平搁板的开放柜子。在智能手机上执行的ar会话中,表示书本、花瓶、和/或其他物品的不同虚拟物体将被放置在这些搁板上。由ar会话的摄像头生成的图像可以按照20-30帧/秒(frame per second,fps)的帧率输入到同时定位与建图(simultaneous localization and mapping,slam)过程。slam过程是特征检测和追踪过程的示例。每个输入图像的处理对应于一次表面检测和追踪迭代(例如,表面检测和追踪迭代具有同样的20-30次迭代/秒的速率(iterations per second,its))。在初始表面检测和追踪迭代中,slam过程输出真实世界环境的初始点云。该初始点云是真实世界环境的稀疏三维表示的示例,并包括与开放柜子的特征对应的点。初始点云中的点的数量可以在一百到一千之间。每个点被分配有点标识符,点标识符是唯一地标识该点的字符串。初始点云被输入到随机采样一致性(random sample consensus,ransac)过程,ransac过程是特征检测和追踪过程的示例。ransac过程输出定义了四个水平表面平面的参数,每个水平表面平面对应于四个搁板之一。对于每个水平表面平面,识别属于该水平表面平面的点,并且将这些点的点标识符关联到该水平表面平面。在下一个表面检测和追踪迭代中(例如,使用下一图像输入的一次迭代),slam过程输出真实世界环境的下一点云。slam过程追踪上述开放柜子的特征。先前检测到的特征中的一些特征会被再次检测到。先前检测到的特征中的一些特征不再被检测到。此外,当前会检测到一些先前未被检测到的新特征。因此,下一点云中的一些点对应于先前检测到的特征,并且具有已有的点标识符。下一点云中的其余点对应于新检测到的特征,并且被分配新的点标识符。而初始点云中的一些点不再存在于下一点云中。对于每个水平表面平面,表面追踪过程确定与该水平表面平面关联的点标识符,将这些点标识符与下一点云中的点的点标识符对比,并确定匹配。如果匹配的点标识符的数量(例如,匹配点是在初始表面检测和追踪迭代被确定为属于该水平表面平面、并且包括在下一个点云中的点)超过第一个预定义阈值(例如,五个),则表面追踪过程使用匹配点更新该水平表面平面的平面函数。属于该水平表面平面的点的新点标识符被关联到该水平表面平面。然而,如果匹配点标识符的数量小于第一预定义阈值,则不再追踪该水平表面平面。在这种情况下,如果在下一次表面检测和追踪迭代中要追踪的水平表面平面总数下降到第二预定义阈值(例如,三个)以下,则将下一点云输入到ransac过程,以进行新的表面平面检测。重复表面检测和追踪迭代,其中每次迭代的输入和
输出取决于是否继续使用点标识符来追踪表面平面或是否要再次执行ransac过程。
27.本公开的实施例提供了相对于检测和追踪表面的常规技术的许多技术优势。通过使用真实世界环境的多维表示,尤其是点云等稀疏表示作为表面检测过程(如ransac过程)的输入,大幅减少了检测表面平面的处理。此外,通过使用点标识符智能地确定何时执行表面检测过程并在不必要时避免其执行,可以节省额外的处理。例如,根据实现本公开的技术的计算机系统的配置,与表面平面的检测和追踪相关联的延迟可以减少两倍或更多。已观察到至少减少了五倍。
28.图1示出了根据本公开至少一个实施例的计算机系统110的示例,计算机系统110包括用于ar应用的摄像头112和惯性测量单元(imu)传感器114。ar应用可以由计算机系统110的ar模块116实现。通常,摄像头112生成真实世界环境的图像,真实世界环境例如包括真实世界物体130。摄像头112还可以包括深度传感器,深度传感器生成关于真实世界环境的深度数据,其中,该数据包括例如显示真实世界物体130的深度(例如,深度传感器和真实世界物体130之间的距离)的深度图。imu传感器114可以包括陀螺仪和加速度计以及其他组件,并且可以输出imu数据,imu数据例如包括计算机系统110的方向。在ar会话中由摄像头112生成的图像的图像数据和在ar会话中由imu传感器114生成的imu数据可用于确定计算机系统110相对于真实世界环境的6dof姿势(例如,沿x、y和z轴的位置以及围绕以上每个轴的旋转)。
29.在ar会话的初始化(其中该初始化可以包括校准和追踪)之后,ar模块116在ar会话中渲染真实世界环境的ar场景120,其中该ar场景120可以呈现在计算机系统110的显示器上的图形用户界面(graphical user interface,gui)。ar场景120显示了真实世界物体130的真实世界物体表示122。此外,ar场景120还显示不存在于真实世界环境中的虚拟物体124。为了以适当的方式将虚拟物体124放置在真实世界物体表示122上,ar模块116可以检测对应于真实世界物体表示122的表面平面126,并相对于表面平面126定位虚拟物体(例如,将虚拟物体124放置在表面平面126上)。表面平面126可以是水平平面、垂直平面或任何其他可以成角度并且可以对应于真实世界物体130的可见表面的平面。
30.在示例中,计算机系统110表示合适的用户设备,除了摄像头112和imu传感器114之外,用户设备还包括一个或多个图形处理单元(graphical processing unit,gpu)、一个或多个通用处理器(general purpose processor,gpp)和一个或多个存储计算机可读指令的存储器,这些指令可由至少一个处理器执行以执行本公开的实施例的各种功能。例如,计算机系统110可以是智能手机、平板电脑、ar耳机或可穿戴ar设备中的任何一种。
31.ar模块116可以实现为专用硬件和/或硬件和软件的组合(例如,通用处理器和存储在存储器中并且可由通用处理器执行的计算机可读指令)。除了初始化ar会话和执行vio,ar模块116还可以检测真实世界环境的特征,基于检测到的特征检测表面平面,并追踪检测到的特征和检测到的表面平面以正确渲染ar场景120。例如,ar模块116将特征检测和追踪过程、表面检测过程和表面追踪过程实现为一组程序代码。
32.图2示出了根据本公开至少一个实施例的追踪表面平面202的示例。如图所示,基于在ar会话中生成的不同图像来追踪表面平面202。第一图像210显示表面平面202。第二图像220也显示表面平面202,但表面平面202被另一个物体部分地遮挡。在第三图像230中,表面平面202被另一物体完全或几乎完全地遮挡。
33.可以使用不同的技术来追踪表面平面202。在一种技术中,可以对图像210-230中的每一个图像执行表面检测过程。换言之,对图像210-230中的每一个图像重复表面检测过程。然而,因为不断地重复表面检测过程,这种技术可能需要大量的处理。此外,一些处理可能是浪费的,因为例如表面平面202在第三图像230中被完全遮挡而不需要被追踪。
34.在另一示例技术中,可以对第一图像210执行表面检测过程以检测表面平面202。从该时刻起,可以从剩余的图像220-230生成真实世界环境的高分辨率表示,以追踪表面平面202。这种高分辨率表示通常不是特征检测和追踪过程的输出(相反,其输出低分辨率表示)。因此,仍然可能需要大量的处理。
35.与之相比,本公开的实施例允许重用特征检测和追踪过程的低分辨率表示来检测表面平面202,并将点标识符与表面平面202相关联。点标识符用于追踪表面平面。因此,在表面平面202的检测和追踪中节省了大量处理。
36.图3示出了根据本公开至少一个实施例的用于检测和追踪表面平面的计算组件的示例。计算组件可以实现为计算机系统的ar模块(例如图1的ar模块116)中的程序代码。
37.如图所示,计算组件包括特征检测和追踪过程310、表面检测过程320、和表面追踪过程330。特征检测和追踪过程310检测和追踪真实世界环境的特征。表面检测过程320检测表面平面。表面追踪过程330追踪检测到的表面平面。
38.在示例中,特征检测和追踪过程310的输入包括图像数据和imu数据。特征检测和追踪过程310的输出包括真实世界环境的稀疏多维表示(例如,三维表示),例如点云。例如,特征检测和追踪过程310被实现为slam过程,slam过程涉及粒子滤波器、扩展卡尔曼滤波器、协方差交叉和/或其他slam算法。
39.表面检测过程320的输入包括从特征检测和追踪过程310输出的稀疏多维表示。表面检测过程320的输出包括检测到的表面平面的参数。例如,表面平面被定义为具有以下方程的平面函数:ax by cz d=0,并且输出包括a、b、c、d参数。在示例中,表面检测过程320被实现为ransac过程,ransac过程涉及对这些参数的迭代估计。具体而言,ransac过程从稀疏多维表示中选择三个点(例如x、y和z)作为候选表面平面,求解平面函数方程以确定a、b、c和d参数,并计算稀疏多维表示的其余每个点到候选表面平面的距离。对于距离小于预定义阈值距离的点,这些点被认为属于候选表面平面。如果属于候选表面平面的点的数量超过最小数量(可以设置为ransac过程的约束),例如5或其他值,则将该候选表面平面声明为检测到的表面平面。否则,将该候选表面平面从候选表面平面集合中移除,该表面平面不被声明为检测到的表面平面。
40.表面追踪过程330的输入包括特征检测和追踪过程310的输出(例如,稀疏多维表示)和表面检测过程320的输出(例如,检测到的表面平面的参数)。表面追踪过程330的输出包括稀疏多维表示中的点的点标识符、一些点标识符与检测到的表面平面的关联、以及指示是否要使用关联的点标识符或通过再次执行表面检测过程来追踪检测到的表面平面的追踪决策。结合下图进一步描述表面追踪过程330的示例实施方式。
41.图4示出了根据本公开至少一个实施例的ar会话中的初始表面检测和追踪迭代400的示例。这里,可以使用特征检测和追踪过程310、表面检测过程320、和表面追踪过程330。
42.在初始表面检测和追踪迭代400之前,在ar会话中尚未检测到真实世界环境的任
何特征。在初始表面检测和追踪迭代400结束时,基于检测到的特征检测到一个或多个表面平面。
43.在示例中,生成真实世界环境的图像,并将其输入到特征检测和追踪过程310(在图4中该输入显示为图像数据402)。imu数据404也被输入到特征检测和追踪过程310。特征检测和追踪过程310生成并输出真实世界环境的稀疏三维(three-dimensional,3d)表示412,例如包括一百到一千个点的点云。每个点对应于一个检测到的特征。表面追踪过程330(或ar会话的另一个过程)将点标识符分配给稀疏3d表示412中的每个点。例如,点标识符可以与对应特征的标识符(在本文中称为特征标识符)相同,或可以从对应的特征标识符推导出,其中,特征标识符由特征检测和追踪过程用于在后续迭代中追踪检测到的特征。
44.稀疏3d表示412被输入到表面检测过程320和表面追踪过程330。表面检测过程320基于稀疏3d表示412中的点检测一个(或多个)表面平面,并输出每个检测到的表面平面的平面函数422(例如,a、b、c和d参数)。平面函数422被输入到表面追踪过程330。
45.表面追踪过程330(或ar会话的另一个过程)确定属于表面平面并且包括在稀疏3d表示412中的点,确定这些点的点标识符,并将点标识符与表面平面相关联(在图4中示出为表面平面和点标识符关联432)。例如,点标识符和a、b、c和d参数存储在数据结构中,其中,该数据结构的条目指示关联432(例如,使用表格,表格的一行通过列出点标识符和a、b、c和d参数来指示关联432)。
46.图5示出了根据本公开至少一个实施例的ar会话中的当前表面检测和追踪迭代500的示例。当前表面检测和追踪迭代500是在先前表面检测和追踪迭代(例如初始表面检测和追踪迭代400)之后的迭代。这里,可以继续使用特征检测和追踪过程310、表面检测过程320、以及表面追踪过程330。
47.在当前表面检测和追踪迭代500开始之前,在先前表面检测和追踪迭代中已检测到一个(或类似的多个)表面平面。同样在迭代500开始之前,表面平面与先前稀疏3d表示(例如,稀疏3d表示412)中属于该表面平面的点的点标识符之间已经存在关联。
48.当前表面检测和追踪迭代500可以开始于将图像数据502和imu数据504输入到特征检测和追踪过程310,特征检测和追踪过程310进而输出真实世界环境的稀疏3d表示512(例如点云,其中每个点对应于一个检测到的特征)。如上所述,表面检测和追踪迭代可以在对应于fps速率的特定its速率下执行。图像数据502和imu数据以fps速率输入。
49.稀疏3d表示512被输入到表面追踪过程330。对于先前已由特征检测和追踪过程310检测到并具有已有特征标识符的特征,表面追踪过程330确定对应的点及其点标识符(例如,这些点存在于3d表示412中,并且仍然存在于3d表示512)。对于由特征检测和追踪过程310在当前表面检测和追踪迭代500中新检测到的特征,表面追踪过程330确定稀疏3d表示512中对应的新点(例如,这些点不存在于3d表示412中,并且现在出现在3d表示512中),并将新的点标识符分配给这些新点。这些新的点标识符尚未与表面平面关联。表面追踪过程330继续使用点标识符(来自先前和当前表面检测和追踪迭代)和与表面平面的已有关联(例如,来自先前表面检测和追踪迭代)执行表面平面追踪532,这将在下图进一步示出。
50.图6示出了根据本公开至少一个实施例的基于点标识符和与表面平面的关联进行表面平面追踪的示例。表面平面追踪可以由表面追踪过程330执行,以在当前表面检测和追踪迭代(例如,当前表面检测和追踪迭代500)中追踪表面平面(或类似地,多个表面平面)。
特别地,多个数据被输入到表面追踪过程330。第一输入包括当前表面检测和追踪迭代中的真实世界环境的当前稀疏3d表示(例如,当前表面检测和追踪迭代500中的稀疏3d表示512)。为了解释清楚起见,属于当前稀疏3d表示的点及其关联的点标识符在本文中分别称为当前点和当前点标识符。第二输入包括来自先前表面检测和追踪迭代的表面平面和点标识符关联620(例如,来自初始表面检测和追踪迭代400的表面平面和点标识符关联432),该关联620指示表面平面和与来自先前表面检测和追踪迭代的先前稀疏3d表示(例如,来自初始表面检测和追踪迭代400的稀疏3d表示412)中包括的点对应的点标识符之间的已有关联。为了解释清楚起见,属于先前稀疏3d表示的点及其点标识符在本文中分别称为先前点和先前点标识符。与属于表面平面的先前点对应的先前点标识符已经与该表面平面相关联,为了解释清楚起见,在此将其称为已有关联。
51.在示例中,表面追踪过程330基于输入执行点追踪630。特别地,点追踪630涉及确定属于表面平面并且包括在当前稀疏3d表示(例如,也是当前点)中的已有点的数量。例如,点追踪630初始化计数器并使用点标识符。点追踪630确定先前点标识符是否与当前点标识符之一匹配,其中,先前点标识符与表面平面具有已有关联(从而指示在先前表面检测和追踪迭代中,对应的先前点被确定为属于该表面平面)。如果存在匹配,则点追踪630将计数器加一。如果不存在匹配,则计数器不递增,并且点追踪630确定对应的先前点不再存在于当前稀疏3d表示中。对与表面平面具有已有关联的先前点标识符重复进行匹配过程。在匹配结束时,计数器的值指示属于该表面并且仍然存在于当前3d稀疏表示中(例如,也是当前点)的先前点的数量。
52.表面追踪过程330执行该数量(例如,计数器的值)与预定义阈值(例如,设置为至少是3的值;在特定示例中,预定义阈值设置为5)的比较640。如果该数量大于(大于表示高于或等于)预定义阈值,则表面追踪过程330确定在当前表面检测和追踪迭代中要追踪该表面平面,并相应地执行表面平面更新650。否则,表面追踪过程330确定在当前表面检测和追踪迭代中不需要再追踪该表面平面,并因此移除对该表面平面的追踪。在这种情况下,确定是否要重复表面检测过程,这将在图7中进一步描述。
53.表面平面更新650可以包括更新表面平面的平面函数。例如,表面追踪过程330执行多次点确定。第一点确定与先前点有关。特别地,某个先前点(或类似地,多个先前点)不再存在于当前稀疏3d表示中,因此不再属于该表面平面。对于该先前点(以及类似的其他先前点,如适用),表面平面更新650涉及移除表面平面与对应于先前点的先前点标识符之间的已有关联(例如,参考上文结合图4所描述的数据结构,从数据结构中删除先前点标识符)。第二点确定涉及新点。特别地,新点是不存在于先前稀疏3d表示中、但包含在当前稀疏3d表示中的当前点(例如,或类似地,多个当前点)。新点具有新的点标识符,其中,新点标识符尚未与表面平面相关联。对于这个新点(例如,或类似地,多个新点),表面追踪过程330确定该新点是否属于该表面平面(例如,基于新点到该表面平面的距离小于预定义阈值)。如果是,则表面追踪过程330生成新点标识符和表面平面之间的新关联(例如,参考上文结合图4描述的数据结构,将新点标识符添加到数据结构中)。
54.在示例中,在第一点确定之后、第二点确定之前,表面平面更新650可以涉及基于被确定为仍属于该表面平面的其余先前点来更新该表面平面的平面函数(例如,a、b、c和d参数)。附加地或替代地,在第二点确定之后,表面平面更新650可以涉及基于被确定为属于
该表面平面的新点和/或基于被确定为属于该表面平面的所有点(例如,先前点和新点)来更新平面函数。
55.图7示出了根据本公开至少一个实施例的确定是否要重复表面检测过程的示例。在结合图6描述的当前表面检测和追踪迭代中,当移除对表面平面的追踪时,表面追踪过程330可以确定是否重复进行表面检测过程。如果在当前表面检测和追踪迭代中没有移除表面平面,则表面追踪过程330不需要进行上述确定。通常,如果在当前表面检测中移除对其的追踪的表面平面的总数低于预定义阈值,则重复表面检测过程。否则,不重复表面检测过程。
56.如图所示,使用多个输入。第一输入包括当前表面检测和追踪迭代710中的当前稀疏3d表示710。第二输入包括从先前表面检测和追踪迭代检测到的表面平面(在图7中示为先前的表面平面720),例如,表面平面的平面函数。基于输入,表面追踪过程330执行表面平面追踪730。
57.表面平面追踪730涉及维持一个计数器,该计数器指示在当前表面检测和追踪迭代中要追踪的表面平面的总数。特别地,计数器的值等于在先前表面检测和追踪迭代中追踪的表面平面的总数。图6中执行的确定的输出指示在当前表面检测和追踪迭代中是否要移除对各个表面平面的追踪。对于要移除的每个表面平面,表面平面追踪730将计数器减一。计数器的结果值指示在当前检测和追踪迭代中要追踪的表面平面的总数。表面追踪过程330执行该总数(例如,计数器的结果值)与预定义阈值的比较740。该阈值可以设置为上次执行该过程320时由表面检测过程320检测到的表面平面的总数的百分比(例如,百分之八十)。如果大于预定义阈值,则表面追踪过程330确定不需要重复表面检测过程320。在这种情况下,表面追踪过程330将要追踪的先前表面平面设置为当前表面平面750(并且这些当前表面平面750可以如图6所述地更新)。否则,表面追踪过程330可以忽略先前表面平面720,并通过重复表面检测过程320继续触发760新的表面检测。因此,可以将3d表示710输入到表面检测过程320。
58.在示例中,当重复表面检测过程320时,可以对该过程320施加一组约束。例如,该组约束包括第一约束,该第一约束指定了若表面检测过程320要将一候选表面平面设置为检测到的表面平面,则稀疏3d表示710中应属于该候选表面平面的点的最小数量(例如,五个点)。该组约束包括第一约束,该第一约束指定了属于候选表面平面的点与计算机系统的摄像头之间的最大距离,其中,该摄像头(例如摄像头112)生成对应于稀疏3d表示710的图像。
59.图8示出了根据本公开至少一个实施例的用于表面平面检测和追踪的流程的示例。结合计算机系统来描述该流程,该计算机系统是图1的计算机系统110的示例。该流程的一些或全部操作可以通过计算机系统上的特定硬件实现,和/或可以实现为存储在计算机系统的非暂时性计算机可读介质上的计算机可读指令。如所存储的,计算机可读指令表示可编程模块,可编程模块包括可由计算机系统的处理器执行的代码。此类指令的执行将计算机系统配置为执行相应的操作。与处理器结合的每个可编程模块表示用于执行相应操作的装置。尽管以特定顺序示出了操作,但应当理解,该特定顺序不是必要的,并且可以省略、跳过、并行执行、和/或重新排序一个或多个操作。
60.在示例中,该流程开始于操作802,其中,计算机系统在ar会话中生成真实世界环
境的初始多维表示。例如,计算机系统的摄像头生成真实世界环境的图像。该图像的图像数据和计算机系统的imu系统的imu数据被输入到计算机系统的ar模块的特征检测和追踪过程(例如,slam过程)。在初始表面检测和追踪迭代中,特征检测和追踪过程输出真实世界环境的稀疏3d表示,例如点云,作为初始多维表示的示例。
61.在示例中,该流程包括操作804,其中,计算机系统分配点标识符。例如,初始多维表示中包含的每个点对应于真实世界环境中包含的并由特征检测和追踪过程检测到的特征。对应于特征的点被分配点标识符,其中,点标识符是从特征的特征标识符导出的。
62.在示例中,该流程包括操作806,其中,计算机系统检测表面平面(或类似地,多个表面平面)。例如,初始多维表示被输入到表面检测过程,例如ransac过程。该过程的输出指示表面平面的平面函数。
63.在示例中,该流程包括操作808,其中,计算机系统将表面平面(或类似地,多个表面平面)与点标识符相关联。例如,对于属于表面平面并包括在初始多维表示中的每个点,计算机将对应的点标识符与表面平面相关联。这种关联可以存储在数据结构中。
64.在示例中,该流程包括操作810,其中,计算机系统生成当前多维表示。该操作类似于操作802,不同之处在于,新图像和新imu数据被输入到特征检测和追踪过程,并且对应于当前表面检测和追踪迭代。
65.在示例中,该流程包括操作812,其中,计算机系统追踪当前多维表示中的点标识符。追踪涉及确定先前(例如,初始)多维表示中的特征是否不再包括在当前多维表示中(例如,被移除特征)或仍然包括在当前多维表示中(例如,剩余特征)。追踪还涉及确定先前多维表示中未包含的特征是否包含在如今多维表示中(例如,新特征)。与被移除特征对应的点(例如,被移除点)的点标识符也被移除。与剩余特征对应的点(例如,剩余点)的点特征被保留。新的点标识符被分配给与新特征相对应的点(例如,新点)。
66.在示例中,该流程包括操作814,其中,计算机系统确定属于表面平面(或类似地,属于在先前表面检测和追踪迭代中检测到的每一个表面平面)并且包括在当前多维表示中的点的数量。例如,将与表面平面相关联的点标识符和与当前多维表示的点对应的点标识符进行匹配。匹配的总数表示上述点的数量。
67.在示例中,该流程包括操作816,其中,计算机系统将点的数量与第一预定义阈值进行比较。如果该数量大于第一预定义阈值,则执行操作818。否则,执行操作820。
68.在示例中,该流程包括操作818,其中,计算机系统更新表面平面(或类似地,在先前表面检测和追踪迭代中检测到的多个表面平面,如适用)。例如,计算机系统确定属于表面平面并且被移除的点、属于表面平面并且被保留的点、以及现在属于表面平面的新点。对于先前属于表面平面的被移除点的点标识符,移除其与表面平面的关联。对于属于表面平面的新点的点标识符,添加其与表面平面的关联。
69.在示例中,该流程包括操作820,其中,计算机系统在当前表面检测和追踪迭代中停止追踪该表面平面。因此,不执行表面平面更新。
70.在示例中,该流程包括操作822,其中,计算机系统确定在当前表面检测和追踪迭代中追踪的表面平面的总数。例如,每次如操作816所示地确定不再追踪一表面平面时,递减表示该总数的计数器。
71.在示例中,该流程包括操作824,其中,计算机系统将该总数与第二预定义阈值进
行比较。如果该数量大于第二预定义阈值,则如循环回到操作810所指示的,计算机系统基于点标识符继续追踪表面平面。否则,如循环回到操作806所指示的,计算机系统重复表面检测过程。
72.图9示出了根据本公开至少一个实施例的计算机系统900的组件的示例。计算机系统900是上文描述的计算机系统的示例。尽管这些组件被示为属于同一计算机系统900,但是计算机系统900也可以是分布式的。
73.计算机系统900至少包括处理器902、存储器904、存储设备906、输入/输出(input/output,i/o)外围设备908、通信外围设备910和接口总线912。接口总线912用于在计算机系统900的各种组件之间通信、发送和传输数据、控制和命令。存储器904和存储设备906包括计算机可读存储介质,例如ram、rom、电可擦可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、硬盘驱动器、cd-rom、光存储设备、磁存储设备、电子非易失性计算机存储设备(例如闪存)、以及其他有形存储介质。任何这样的计算机可读存储介质都可以用于存储实施本公开的各个方面的指令或程序代码。存储器904和存储设备906还包括计算机可读信号介质。计算机可读信号介质包括传播的数据信号,其中包含计算机可读程序代码。这种传播的信号采用多种形式中的任何一种,包括但不限于电磁、光学或其任何组合。计算机可读信号介质包括不是计算机可读存储介质并且可以通信、传播或传输用于与计算机系统900结合使用的程序的任何计算机可读介质。
74.此外,存储器904包括操作系统、程序和应用程序。处理器902用于执行存储的指令,并且包括例如逻辑处理单元、微处理器、数字信号处理器和其他处理器。存储器904和/或处理器902可以被虚拟化并且可以托管在例如云网络或数据中心的另一个计算机系统中。i/o外围设备908包括用户界面,例如键盘、屏幕(例如,触摸屏)、麦克风、扬声器、其他输入/输出设备,以及计算组件,例如图形处理单元、串行端口、并行端口、通用串行总线和其他输入/输出外围设备。i/o外围设备908通过耦合到接口总线912的任何端口连接到处理器902。通信外围设备910用于促进计算机系统900和其他计算机系统之间通过通信网络的通信,并且包括例如网络接口控制器、调制解调器、无线和有线接口卡、天线和其他通信外围设备。
75.尽管本主题已针对其特定实施例进行了详细描述,但应当理解,本领域技术人员在获得对前述内容的理解后,可以容易地产生对这些实施例的改变、变化和等价物。因此,应当理解,本公开是为了示例而不是限制的目的而呈现的,并且不排除包含对于普通技术人员来说显而易见的对本主题的修改、变化和/或添加。本领域的技能。实际上,本文描述的方法和系统可以以多种其他形式体现。此外,在不背离本公开的精神的情况下,可以对本文描述的方法和系统的形式进行各种省略、替换和改变。所附权利要求及其等价物旨在覆盖落入本公开的范围和精神内的此类形式或修改。
76.除非另有明确说明,否则应理解,本说明书的讨论中使用诸如“处理”、“计算”、“确定”和“识别”等术语是指计算机系统(例如一台或多台计算机或类似的电子计算机系统或设备)的动作或过程,该计算机系统操纵或转换在计算平台的存储器、寄存器或其他信息存储设备、传输设备或显示设备中表示为物理电子或磁量的数据。
77.这里讨论的一个或多个系统不限于任何特定的硬件架构或配置。计算机系统可以包括提供以一个或多个输入为条件的结果的任何合适的组件布置。合适的计算机系统包括
基于微处理器的多用途计算机系统,多用途计算机系统访问存储的软件,存储的软件对计算机系统进行编程或配置,将该计算机系统从通用计算装置编程或配置为实现本主题的一个或多个实施例的专用计算装置。任何合适的编程、脚本或其他类型的语言或语言的组合可用于在用于编程或配置计算机系统的软件中实施本文中包含的教导。
78.本文公开的方法的实施例可以在这样的计算机系统的操作中执行。以上示例中呈现的块的顺序可以改变,例如,块可以被重新排序、组合和/或分解成子块。某些块或过程可以并行执行。
79.本文使用的条件性语言,例如“可以”、“可”、“可能”、“例如”等,除非另有明确说明,或在所使用的上下文中以其他方式理解,否则通常旨在传达某些示例包括而其他示例不包括某些特征、元素和/或步骤。因此,这种条件性语言通常并不意味着一个或多个示例以任何方式需要特征、元素和/或步骤,或者一个或多个示例必须包括用于在有或没有作者输入或提示的情况下决定这些特征、元素和/或步骤是否被包括或将在任何特定示例中执行。
80.术语“包括”、“具有”等是同义词,并且以开放式的方式包容性地使用,并且不排除其他元素、特征、动作、操作等。此外,术语“或”以其包容性(而不是排他性)使用,例如,当用于连接元素列表时,术语“或”表示其中的一个、一些或全部列表中的元素。此处使用的“用于”或“配置为”是指开放和包容性的语言,不排除用于或配置为执行附加任务或步骤的设备。此外,“基于”的使用意味着开放和包容,因为“基于”一个或多个列举的条件或值的过程、步骤、计算或其他动作实际上可能基于附加条件或超出所列举的值。类似地,“至少部分基于”的使用意味着开放和包容,因为“至少部分基于”一个或多个列举的条件或值的过程、步骤、计算或其他动作在实践中可以基于所列举的之外的附加条件或值。此处包括的标题、列表和编号仅是为了便于解释,并不意味着限制。
81.上述各种特征和过程可以彼此独立地使用,或者可以以各种方式组合使用。所有可能的组合和子组合旨在落入本公开的范围内。此外,在一些实现中可以省略某些方法或过程块。这里描述的方法和过程也不限于任何特定的顺序,并且与其相关的块或状态可以以其他适当的顺序来执行。例如,所描述的块或状态可以以不同于具体公开的顺序执行,或者多个块或状态可以组合在单个块或状态中。示例块或状态可以串行、并行或以某种其他方式执行。可以将块或状态添加到所公开的示例中或从所公开的示例中删除。类似地,本文描述的示例系统和组件可以被配置为与所描述的不同。例如,与所公开的示例相比,可以添加、移除或重新排列元素。
再多了解一些

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

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

相关文献