CN118339424A - 用于真实世界测绘的物体和相机定位系统以及定位方法 - Google Patents

用于真实世界测绘的物体和相机定位系统以及定位方法 Download PDF

Info

Publication number
CN118339424A
CN118339424A CN202280078811.6A CN202280078811A CN118339424A CN 118339424 A CN118339424 A CN 118339424A CN 202280078811 A CN202280078811 A CN 202280078811A CN 118339424 A CN118339424 A CN 118339424A
Authority
CN
China
Prior art keywords
real
image
dimensional
cuboid
dimensional space
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202280078811.6A
Other languages
English (en)
Inventor
N·古普塔
S·克利须纳
L·托马斯
D·C·米尔斯
N·M·可汗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aowei Co ltd
Original Assignee
Aowei Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US17/494,585 external-priority patent/US11417069B1/en
Application filed by Aowei Co ltd filed Critical Aowei Co ltd
Publication of CN118339424A publication Critical patent/CN118339424A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Image Analysis (AREA)

Abstract

一种用于真实世界测绘的物体和相机定位系统以及定位方法。该测绘能够实时或接近实时地完成,以通过用于捕获物体的一个或多个图像的相机设备检测真实物体。该定位方法能够用于生成图像中的物体的物体标签和物体的边界框。该定位方法能够用于在物体的真实三维空间的真实世界坐标中生成锚点、物体的长方体和长方体的质心。能够生成虚拟三维地图,该虚拟三维地图包含真实物体在真实世界坐标中的位置和姿态。

Description

用于真实世界测绘的物体和相机定位系统以及定位方法
对相关申请的引用
本申请要求于2021年10月5日提交的第17/494,585号美国专利申请的优先权,该申请的全部内容通过引用并入本文。本申请还是于2021年10月5日提交的第17/494,585号美国专利申请的部分继续申请,该申请的全部内容通过引用并入本文。
技术领域
示例性实施方式涉及交互式三维测绘应用的真实物体和相机定位。
背景技术
可以制作虚拟三维地图来表示真实世界环境。一种形式的虚拟三维地图是点云地图(又被称为点云)。点云地图是空间中的一组点。这些点可以表示三维形状或物体,还可以表示背景环境和固定基础设施。表示点云地图的一种方法是为每个点赋予三维空间中的一组笛卡尔坐标。例如,物体可以由代表该物体的多个点来表示。
在某些产品中,可以使用LiDAR扫描仪捕获物体的点云,将该点云被期望为随后转换为物体的虚拟版本。然后可以通过显示设备查看物体的虚拟版本。当物体被表示为点云时,可能需要大量数据来传送点云。当传送彩色信息时,问题变得更加复杂,与灰度或黑白版本相比,彩色信息可能需要多得多的数据。
对于实时定位应用,获取和传送点云所需的大量数据传输可能会妨碍或阻滞物体的实时虚拟表示。
提供一种用于真实世界的实时测绘的物体和相机定位系统以及定位方法将是有利的。
减少生成真实世界的实时地图所需的数据传输量将是有利的。
在真实世界的实时地图中跟踪相机的位置将是有利的。
提供基于规则的模块以产生物体定位和相机定位将是有利的。
提供机器学习模型以产生物体定位和相机定位将是有利的。
通过阅读下文中的详细说明,能够理解常规定位和测绘系统的其它难题。
发明内容
示例性实施方式涉及一种用于真实世界中的真实物体和用户的测绘的定位系统和定位方法。该测绘能够通过由相机设备对真实物体进行检测而实时地或接近实时地完成。该定位方法的一示例可以应用于用户希望跟踪真实物体的数字孪生体的场景。用户能够在虚拟现实(VR)、增强现实(AR)、混合现实(MR)或其它三维环境中与数字孪生体进行交互。
该定位方法的一示例可以应用于方便和自动化的真实世界测绘场景。可以使用相机设备捕获物体的一个或多个图像。该定位方法可以用于计算物体的长方体和质心。相机设备能够发送质心的位置,而无需发送物体的整个三维模型(例如点云地图)。当物体移动时,该定位方法能够使用质心、长方体或锚点来跟踪长方体的移动,以确定物体的新位置。可以生成纳入了物体的新位置的三维地图。该定位方法的一个优点是,在该定位方法的每个阶段,相机设备不需要传送整个三维模型或点云。
在另一示例性实施方式中,从第三方地图服务(例如谷歌地图TM)接收图像、相机位置和相机取向。该定位方法可以用于从图像、相机位置和相机取向生成物体在真实世界中的位置和姿态,以生成虚拟三维地图,该虚拟三维地图包含具有相应位置和姿态的物体的三维模型。
在另一个示例性实施方式中,可以使用相机设备捕获真实世界中具有已知位置和已知姿态的静止真实物体的图像。从所述一个或多个图像生成静止真实物体的视点姿态。利用所述一个或多个图像和静止真实物体的视点姿态,使用该定位方法确定相机设备在真实世界的三维坐标中的位置。
另一示例性实施方式是一种定位方法,该定位方法包括:接收至少一个包含物体的图像;使用定位模块为每个图像生成真实三维(3D)空间的真实世界坐标中的相机位置、相机取向以及相机到物体的距离;使用图像二维物体检测模块和每个图像生成i)在该图像中检测到的物体的物体标签、ii)该图像中的物体的边界框、以及iii)该图像中的特征点;使用长方体生成器、每个图像的边界框、每个图像的相机位置、每个图像的相机取向以及每个图像的相机到物体的距离生成真实三维空间的真实世界坐标中的长方体,该长方体在真实三维空间的真实世界坐标中界定物体;使用锚点生成器、所述至少一个图像的特征点和长方体生成包含在长方体中的物体的真实三维空间的真实世界坐标中的锚点;并且使用物体标签、锚点、以及真实三维空间的真实世界坐标中的长方体、长方体的质心或物体的边界框中的至少一者和该图像中的至少一个,生成虚拟三维空间中的三维地图,该三维地图包含位于真实世界坐标中的物体。
另一示例性实施方式是一种定位方法,该定位方法包括:接收至少一个包含物体的图像;使用定位模块为每个图像生成真实三维(3D)空间的真实世界坐标中的相机位置、相机取向以及相机到物体的距离;使用图像二维物体检测模块和每个图像生成:i)在该图像中检测到的物体的物体标签、ii)该图像中的物体的边界框、以及iii)该图像中的特征点;使用长方体生成器、每个图像的边界框、每个图像的相机位置、每个图像的相机取向以及每个图像的相机到物体的距离,生成真实三维空间的真实世界坐标中的长方体,该长方体在真实三维空间的真实世界坐标中界定物体;使用锚点生成器、所述至少一个图像的特征点和长方体生成包含在长方体中的物体的真实三维空间的真实世界坐标中的锚点;并且与所述图像中的至少一个一起输出物体标签、锚点、以及以下中的至少一个:真实三维空间的真实世界坐标中的长方体、长方体的质心或物体的边界框,以生成虚拟三维空间中的三维地图,该三维地图包含位于真实世界坐标中的物体。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用质心生成器和长方体生成该长方体在真实三维空间的真实世界坐标中的质心。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用长方体生成器、所述至少一个图像、该图像的边界框、该图像的相机位置、该图像的相机取向、该图像的相机到物体的距离,生成该物体的真实三维空间的真实世界坐标中的至少一个消失点;并且其中,生成真实三维空间的真实世界坐标中的长方体还使用物体的真实三维空间的真实世界坐标中的所述至少一个消失点。
在上述定位方法中的任一定位方法的一示例性实施方式中,生成真实三维空间的真实世界坐标中的长方体包括将该长方体从相机三维坐标变换到真实三维空间的真实世界坐标。
在上述定位方法中的任一定位方法的一示例性实施方式中,生成真实三维空间的真实世界坐标中的锚点包括将相应图像中的特征点变换为相机三维坐标中的锚点,并将相机三维坐标中的锚点变换为真实三维空间的真实世界坐标。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:检测地板的平面,生成从相机设备到地板的高度,并且其中,将相机三维坐标中的锚点变换为真实三维空间的真实世界坐标包括基于相机设备到地板的高度缩放物体。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用姿态估计模块、所述至少一个图像、相机位置、相机取向、相机到物体的距离以及每个图像中的物体的边界框,生成物体在真实三维空间的真实世界坐标中的姿态;并且输出物体的姿态,以生成虚拟三维空间中的三维地图,该三维地图包含具有真实世界坐标中的姿态的物体。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用正面检测模块、物体标签、每个图像的边界框和所述至少一个图像生成物体的正面识别信息;并且其中,生成物体在真实三维空间的真实世界坐标中的姿态还使用物体的正面识别信息。
在上述定位方法中的任一定位方法的一示例性实施方式中,该正面识别信息包括:物体的三维模型的视点、物体的正面的正面边界框、物体的正面的图像、仅物体的正面的三维模型或点云地图、物体的正面的锚点、或物体的正面的描述性文字。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用物体标签和物体数据库检索物体的正面识别信息;并且其中,生成物体在真实三维空间的真实世界坐标中的姿态还使用物体的正面识别信息。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用姿态估计器模块、物体标签、所述至少一个图像、以及每个图像中的物体的边界框,生成从相机位置与物体之间的视线观察的物体的视点姿态;并且其中,生成物体在真实三维空间的真实世界坐标中的姿态还使用物体的视点姿态。
在上述定位方法中的任一定位方法的一个示例性实施方式中,三维地图的生成包括使用测绘模块确定姿态的变化,并使用姿态的变化更新已存在于三维地图中的物体。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:确定该姿态不同于物体的存储的姿态,并且输出指令以将真实三维空间中的物体移动至存储的姿态。
在上述定位方法中的任一定位方法的一示例性实施方式中,生成物体在真实三维空间的真实世界坐标中的姿态还使用包含在长方体中的物体的真实三维空间的真实世界坐标中的锚点。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用正面检测模块生成正面识别信息,该正面识别信息将长方体的一面识别为物体的正面;并且其中,生成三维地图使用物体的正面识别信息。
在上述定位方法中的任一定位方法的一示例性实施方式中,所述至少一个图像、相机位置和相机取向是从第三方地图服务接收的。
在上述定位方法中的任一定位方法的一示例性实施方式中,该图像包括静止真实物体,其中生成相机位置和相机取向包括:使用图像二维物体检测模块和该图像生成:i)在该图像中检测到的静止真实物体的第二物体标签、以及ii)该图像中的静止真实物体的第二边界框;使用姿态估计器模块、该图像、第二物体标签和第二边界框生成静止真实物体的视点姿态;使用第二物体标签检索静止真实物体的真实三维空间的真实世界坐标中的已知长方体和静止真实物体的三维空间中的已知姿态;并且使用定位模块、该图像、第二物体标签、第二边界框、视点姿态、真实三维空间的真实世界坐标中的已知长方体以及真实三维空间的真实世界坐标中的已知姿态,生成真实三维空间的真实世界坐标中的相机位置以及真实三维空间的真实世界坐标中的相机取向。
在上述定位方法中的任一定位方法的一示例性实施方式中,所述输出不输出物体的三维模型或点云地图。
在上述定位方法中的任一定位方法的一示例性实施方式中,所述至少一个图像包括多个图像。
在上述定位方法中的任一定位方法的一示例性实施方式中,所述物体标签对于物体是唯一的。
在上述定位方法中的任一定位方法的一示例性实施方式中,所述定位模块包括全球定位系统(GPS)、本地定位系统(LPS)和/或光探测和测距(LiDAR)扫描仪。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用测绘模块、物体标签、锚点、以及物体的长方体、质心或边界框中的至少一者和所述至少一个图像中的至少一个,执行虚拟三维空间中的三维地图的生成,该三维地图包含位于真实世界坐标中的物体。
在上述定位方法中的任一定位方法的一示例性实施方式中,三维地图的生成包括测绘模块确定长方体或质心的位置变化,并且测绘模块利用位置变化更新已存在于三维地图中的物体。
在上述定位方法中的任一定位方法的一示例性实施方式中,三维地图的生成包括测绘模块使用物体标签检索物体的三维模型;其中,该三维地图包含真实世界坐标中的物体在虚拟三维空间中的三维模型。
在上述定位方法中的任一定位方法的一示例性实施方式中,所述测绘模块位于捕获所述至少一个图像的相机设备中。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:确定该长方体或该质心不同于物体的存储的长方体或存储的质心的位置,并且输出指令以将真实三维空间中的物体移动至存储的长方体或存储的质心的位置。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:在显示设备上显示三维地图。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法是由捕获所述至少一个图像的相机设备执行的。
在上述定位方法中的任一定位方法的一示例性实施方式中,所述定位模块包括定位模型,该定位模型包括第一卷积神经网络(CNN);和/或所述图像二维物体检测模块包括图像二维物体检测器模型,该图像二维物体检测器模型包含第二CNN。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法是由捕获所述至少一个图像的相机设备执行的。
另一示例性实施方式是一种定位方法,该定位方法包括:接收至少一个包含物体的图像;使用定位模块为每个图像生成真实三维(3D)空间的真实世界坐标中的相机位置、相机取向以及相机到物体的距离;使用扫描仪或摄影测量生成物体的点云地图;使用图像二维物体检测模块和每个图像生成:i)在该图像中检测到的物体的物体标签、ii)该图像中的物体的边界框、以及iii)该图像中的特征点;使用长方体生成器、每个图像的边界框、每个图像的相机位置、每个图像的相机取向以及每个图像的相机到物体的距离生成真实三维空间的真实世界坐标中的长方体,该长方体在真实三维空间中界定物体;使用锚点生成器、所述至少一个图像的特征点和长方体生成包含在长方体中的物体的真实三维空间的真实世界坐标中的锚点;在物体数据库中存储物体标签、长方体、锚点、以及点云地图或从点云地图生成的物体的三维模型中的至少一者;并且在地图数据库中存储物体标签、长方体和锚点。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用质心生成器和长方体生成长方体的质心;并且在地图数据库中存储质心。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用姿态估计模块、所述至少一个图像、相机位置、相机取向、相机到物体的距离以及每个图像中的物体的边界框,生成物体在真实三维空间的真实世界坐标中的姿态;并且在地图数据库中存储物体的姿态。
另一示例性实施方式是一种定位方法,该定位方法包括:接收包含静止真实物体的图像;使用图像二维物体检测模块和该图像生成:i)在该图像中检测到的静止真实物体的物体标签、以及ii)该图像中的静止真实物体的边界框;使用姿态估计器模块、该图像、物体标签和边界框生成静止真实物体的视点姿态;使用物体标签检索静止真实物体的真实三维(3D)空间的真实世界坐标中的已知长方体和静止真实物体的真实三维空间的真实世界坐标中的已知姿态;并且使用定位模块、该图像、物体标签、边界框、视点姿态、真实三维空间的真实世界坐标中的已知长方体以及真实三维空间的真实世界坐标中的已知姿态,生成真实三维空间的真实世界坐标中的相机位置以及真实三维空间的真实世界坐标中的相机取向。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用物体标签检索已知长方体的已知质心;使用该图像生成静止真实物体的质心;并且其中真实三维空间的真实世界坐标中的相机位置和真实三维空间的真实世界坐标中的相机取向的生成,使用已知长方体的已知质心。
在上述定位方法中的任一定位方法的一示例性实施方式中,真实三维空间的真实世界坐标中的相机位置和真实三维空间的真实世界坐标中的相机取向的生成,不需要除相机设备之外的传感器。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用图像二维物体检测模块和该图像生成iii)图像的特征点;使用锚点生成器、该图像、图像的特征点、静止真实物体的物体标签和边界框生成相机三维坐标中的锚点;使用物体标签检索物体的真实三维空间的真实世界坐标中的已知锚点;并且其中真实三维空间的真实世界坐标中的相机位置和真实三维空间的真实世界坐标中的相机取向的生成还使用相机三维坐标中的锚点和物体的真实三维空间的真实世界坐标中的已知锚点。
在上述定位方法中的任一定位方法的一示例性实施方式中,接收图像包括接收用于生成静止真实物体的视点姿态的单个图像。
另一示例性实施方式是一种定位方法,该定位方法包括:从相机设备接收i)真实物体的物体标签、ii)真实物体的真实三维空间的真实世界坐标中的锚点、iii)真实三维空间的真实世界坐标中的长方体、长方体的质心或真实物体的相应边界框中的至少一者和至少一个图像;使用物体标签检索真实物体的三维模型;使用测绘模块、真实物体的三维模型、锚点、以及真实三维空间的真实世界坐标中的长方体、长方体的质心或真实物体的相应边界框中的至少一者和所述至少一个图像,生成用于沉浸式扩展现实(XR)应用的三维地图,该三维地图包含位于真实世界坐标中的真实物体在虚拟三维空间中的三维模型。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:从相机设备接收真实物体的姿态;其中生成三维地图使用该姿态;并且其中该三维地图包含具有该姿态的真实物体在虚拟三维空间中的三维模型。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用测绘模块确定姿态的变化;并且使用测绘模块用变化的姿态更新已存在于三维地图中的真实物体的三维模型。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:使用测绘模块确定长方体或质心的真实三维空间的真实世界坐标中的位置的变化;并且使用测绘模块用位置的变化更新已存在于三维地图中的真实物体的三维模型。
在上述定位方法中的任一定位方法的一示例性实施方式中,从相机设备进行接收不包括真实物体的三维模型。
另一示例性实施方式是一种定位方法,该定位方法包括:接收包含物体的图像;在二维空间中生成图像的屏幕法线;使用图像二维物体检测模块和该图像生成:i)在图像中检测到的物体的物体标签、ii)在图像中检测到的物体的各个边缘的二维空间中的线段、以及iii)物体的二维空间中的边界框;使用长方体生成器、该图像和图像的边界框生成:i)在二维空间中界定物体的多个候选长方体、ii)所述多个候选长方体中的每一个候选长方体的相应消失点、iii)相应消失点的相应消失点中心、以及iv)二维空间中从屏幕中心到相应消失点中心的相应消失点角度;对于所述多个候选长方体中的每一个长方体,计算二维空间中相应消失点角度与屏幕法线之间的角度差;选择在二维空间中具有在角度阈值之内的角度差的候选长方体;对于选定的候选长方体中的每一个长方体,使用长方体生成器为图像生成i)二维空间中的选定的候选长方体在真实三维空间的真实世界坐标、以及ii)真实三维空间的真实世界坐标中的选定的候选长方体与真实三维空间中的物体之间的相应成本函数值;并且将物体与i)物体标签和ii)真实三维空间的真实世界坐标中具有最优的相应成本函数值的选定的候选长方体相关联。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括跟踪具有最优的相应成本函数值的选定的候选长方体。
在上述定位方法中的任一定位方法的一示例性实施方式中,该定位方法还包括:在真实三维空间的真实世界坐标中生成与检测的平面正交的三维法线;为选定的候选长方体中的每一个候选长方体生成相应的质心和从相机位置到相应的质心的相应质心角度;并且为选定的候选长方体中的每一个候选长方体进行第二计算,以计算在真实三维空间的真实世界坐标中相应质心角度与三维之间的第二角度差,其中选择还包括从选定的候选长方体中选择在真实三维空间的真实世界坐标中具有在第二角度阈值之内的第二角度差的候选长方体的第二选择。
在上述定位方法中的任一定位方法的一示例性实施方式中,使用快速线检测器功能生成线段。
在上述定位方法中的任一定位方法的一示例性实施方式中,所述成本函数值基于距离误差、角度对准误差或形状误差。
在上述定位方法中的任一定位方法的一示例性实施方式中,所述成本函数值基于距离误差、角度对准误差和形状误差中的全部。
在上述定位方法中的任一定位方法的一示例性实施方式中,所述角度阈值是20度或大约20度。
另一示例性实施方式是一种定位系统,该定位系统包括:至少一个处理器;以及包含指令的存储器,该指令在被所述至少一个处理器执行时使得处理器执行上述定位方法中的任一定位方法。
另一示例性实施方式是一种相机设备,该相机设备包括:相机;至少一个处理器;以及包含指令的存储器,该指令在被所述至少一个处理器执行时使得处理器执行上述定位方法中的任一定位方法。
另一示例性实施方式是一种包含指令的非暂时性存储器,该指令在被至少一个处理器执行时使得所述至少一个处理器执行上述定位方法中的任一定位方法。
另一示例性实施方式是一种由机器学习训练过程产生的计算机程序产品,该计算机程序产品包含存储在非暂时性计算机可读介质中的指令,该指令在被至少一个处理器执行时使得所述至少一个处理器执行上述定位方法中的任一定位方法。
附图说明
现在将参考示出示例性实施方式的附图通过示例的方式进行说明,在附图中:
图1示出了根据一示例性实施方式的示例性定位系统和定位方法的框图;
图2A示出了根据一示例性实施方式的图1的定位系统和定位方法的示意图;
图2B示出了根据一示例性实施方式的由相机设备捕获并由图2A的定位方法处理的示例性图像的示意图;
图2C示出了根据一示例性实施方式的通过图2A的定位方法将相机三维坐标变换为真实世界三维坐标的示意图;
图3示出了根据一示例性实施方式的用于图1的定位系统的测绘设备的详细框图;
图4示出了根据一示例性实施方式的用于图1的定位系统的显示设备的详细框图;
图5示出了根据一示例性实施方式的用于图1的定位系统的相机设备的框图;
图6A示出了根据一示例性实施方式的由定位系统执行的定位方法的示例性详细框图,该定位方法用于初始定位物体并生成物体的三维模型;
图6B示出了用于执行图6A的定位方法的测绘设备的测绘模块的详细示例;
图7A示出了根据一示例性实施方式的由定位系统执行的定位方法的详细示例,该定位方法用于后续定位图6A的物体;
图7B示出了用于执行图7A的定位方法的测绘设备的测绘模块的详细示例;
图8A示出了根据一示例性实施方式的定位方法的姿态估计模块的详细示例;
图8B示出了根据一示例性实施方式的姿态估计模块的实例姿态估计器的示意图;
图9A示出了根据一示例性实施方式的用于定位方法的长方体生成器的示意性示例;
图9B示出了根据一示例性实施方式的用于定位方法的替代示例性长方体生成器的示意性示例;
图10A示出了根据一示例性实施方式的由定位系统执行的定位方法的示意图,该定位方法用于定位相机设备和物体;
图10B示出了根据一示例性实施方式的由相机设备捕获并由图10A的定位方法处理的示例性图像;
图10C示出了根据一示例性实施方式的由定位系统执行的图10A的定位方法的示例性详细框图,该定位方法用于定位相机设备;
图11示出了根据一示例性实施方式的用于由定位系统执行的定位方法的卷积神经网络(CNN)模型的示例性详细框图;
图12A示出了根据一示例性实施方式的由定位方法使用的来自第三方地图服务的示例性地图;
图12B和12C示出了根据一示例性实施方式的由定位方法使用的从图12的示例性地图的不同视点观察的示例性图像;
图13示出了根据一示例性实施方式的由相机设备执行的用于定位真实物体的定位方法的示例性详细框图;
图14示出了根据一示例性实施方式的由相机设备执行的用于真实物体的初始测绘和三维建模的定位方法的示例性详细框图;
图15示出了根据一示例性实施方式的由相机设备执行的用于定位相机设备的定位方法的示例性详细框图;
图16示出了根据一示例性实施方式的由测绘设备执行的用于真实物体的测绘和三维建模的定位方法的示例性详细框图;和
图17示出了根据一示例性实施方式的由测绘设备执行的用于生成真实物体的长方体的定位方法的示例性详细框图。
在不同的附图中可能使用相同的附图标记表示相同的部件。
具体实施方式
示例性实施方式涉及一种用于真实世界中的真实物体和相机设备的实时测绘的定位系统和定位方法。
术语“真实”用于指真实或物理世界中的任何事物或位置,例如真实物体、真实位置。术语“虚拟”用于指数字或虚拟世界中的任何事物或位置,例如虚拟物体、虚拟位置。“数字孪生体”是与真实事物对应的虚拟事物。虚拟事物具有虚拟外观和虚拟位置,该虚拟外观和虚拟位置指示具有真实外观和真实位置的对应真实事物。位置可以包括真实世界坐标中的经度和纬度或北距和东距。在一些实例中,位置还可以包括真实世界坐标中的高度。一旦知道了位置的大致经度和纬度,该位置就可以具有参考该位置内的本地坐标的更精确的细节。数字孪生体可以是真实物体的虚拟物体。数字孪生体可以是真实位置(环境)的虚拟位置(环境)。真实世界的数字孪生体可以是真实物体和真实位置(环境)的虚拟物体和虚拟位置(环境)。
物体的数字孪生体也可以镜像物体的真实孪生体的姿态,即,真实孪生体在真实世界中面对的方向。在一示例中,方向可以包括俯仰(陀螺仪和/或加速度计)、偏转(罗盘)和滚转(陀螺仪和/或加速度计)。在姿态的另一示例性坐标方案中,方向可以包括方位方向(罗盘)和仰角方向。姿态可以在真实世界的真实世界坐标中。数字孪生体也可以镜像真实孪生体的状态或其它特征。在一些示例中,数字孪生体被持续更新,以反映真实孪生体。在一些示例中,真实孪生体被持续更新,以反映对数字孪生体所做的改变。数字孪生体可以包括真实孪生体的最后已知属性。所提及的“已知”可以包括存储在存储器或数据库(例如物体数据库或地图数据库)中的真实物体的最后已知属性。
所述定位方法的一示例可以应用于真实世界物体的方便并且自动化的测绘场景。可以使用相机设备捕获物体的一个或多个图像,并生成物体的物体标签、每个图像中的物体的边界框、以及每个图像中的特征点。所述定位方法可以用于计算物体的三维空间中的长方体和长方体的质心。所述定位方法可以用于使用特征点和长方体,生成包含在三维空间中的长方体中(与之重叠)的三维空间中的锚点。相机设备能够发送物体标签和质心位置,而无需发送整个三维模型(或点云地图)。当物体移动时,所述定位方法能够跟踪质心的移动,以确定物体的新位置。可以生成纳入了物体的新位置的新虚拟地图。在一些示例性实施方式中,点云最初由相机设备捕获以进行物体的定位,之后质心可用于定位。所述定位方法的优点在于,当真实物体的位置发生变化时,不需要通过相机设备传送三维模型(和点云)来生成三维地图。
在示例性实施方式中,虚拟地图在扩展现实(XR)平台(例如虚拟现实(VR)、增强现实(AR)或混合现实(MR)平台)中使用,以获悉每个物体在虚拟地图中所处的位置。该XR平台可以包括沉浸式三维地图,在该沉浸式三维地图中,用户从三维地图内的视点(POV)观看三维地图或在三维地图中导航。
在一些实施例中,物体的姿态由所述定位方法确定,例如物体所面对的真实世界中的方向。生成的三维地图还可以表示物体的姿态以及物体姿态的任何变化。在示例性实施方式中,XR平台中的虚拟地图包含物体在虚拟三维地图中的姿态。所述定位方法的优点在于,当真实物体的姿态发生变化时,不需要通过相机设备传送三维模型(和点云)来生成三维地图。
所述定位方法的一示例可应用于需要在特定位置安装真实物体、舞台、座位、桌子、视听设备等的活动场所布置场景。当特定的真实物体被移动时,活动组织者可能希望使用相机设备捕获物体的图像,以实时跟踪真实物体和真实物体的数字孪生版本。同样,活动组织者可能希望有方便的XR(例如AR或MR)平台,以通过将相机设备指向场所来获悉在活动布置中每个物体应处的位置,并且相机设备显示物体在AR或MR中的布置。此外,所述定位方法可用于识别特定人员在活动期间的预定时间应处的位置。在另一示例中,虚拟三维地图(包括物体)优先于真实世界。当真实物体位置不同于虚拟物体位置时,向用户、机器或物体发送指令,以使真实物体返回到期望的位置,从而与虚拟物体位置相符。所述定位方法还可用于跟踪可能需要处于特定位置(例如,该位置在特定时间可能不同)的人或活动表演者。
所述定位方法的一示例可应用于机器人领域,例如工业自动化作业或制造场景。例如,为了进行作业或制造,可能需要物体(例如正在制造的产品的组成部分)和组装设备(例如机器人,该机器人可以包括机械臂和机器人设备)在特定时间处于特定位置。当特定物体或机器人被移动时,制造商可能希望使用相机设备捕获物体的图像,以实时跟踪真实物体和真实物体的数字孪生版本。此外,制造商可能希望有方便的XR平台,以获悉每个物体在工业自动化作业或制造的布置中应处的位置。
所述定位方法的一个实施例可以应用于游戏和体育竞技场景。例如,可以跟踪诸如游戏元素和各个参与者(玩家或运动员)等物体以进行三维测绘和分析。当特定物体被移动时,通过使用相机设备捕获物体的图像,能够实时跟踪物理物体,并且能够在三维地图中可视化物理物体的数字孪生版本。可以基于物体的特定位置(例如球进入球门、玩家处于终点线)自动计算游戏和竞技结果。此外,玩家、观众和教练可能希望有方便的XR平台,以获悉每个物体的位置。类似的应用可能应用于其它体育竞技、游戏和投机应用。
所述定位方法的一示例可应用于道路测绘场景,例如用于自动车辆驾驶或GPS测绘目的。例如,自动驾驶或GPS导航需要真实世界的实时三维地图才能进行准确和安全的导航。例如,可能需要跟踪诸如交通灯、障碍物、车道标志和其它车辆等物体,以进行精确的测绘和导航。当特定物体被移动时,用于车辆操作的实时测绘可能需要实时跟踪真实物体和真实物体的数字孪生版本。为了实时测绘的目的,可以使用相机设备来捕获物体的图像。在一些示例中,相机设备可以位于自动驾驶车辆上,例如集成或安装在仪表板。在一些示例中,相机设备可以不在自动驾驶车辆上,例如作为街道级摄像头、航空卫星摄像头或无人机摄像头等。
在另一个示例性实施方式中,相机设备生成相机设备的位置,这也被称为相机跟踪。例如,可以使用相机设备捕获在真实世界坐标中具有已知位置和姿态的静止真实物体的图像。从所述一个或多个图像确定静止真实物体的姿态。使用静止真实物体的图像和姿态以及静止真实物体的已知长方体,利用定位方法生成相机设备的位置。在上述示例性场景中的任何一个场景中,可以为交互式和沉浸式三维应用跟踪相机设备的位置,例如用于显示从相机设备观察的视点(POV)或者在虚拟世界中将虚拟相机设备显示为化身。
另一示例性实施方式是一种定位方法,该定位方法包括:接收包含物体的至少一个图像;使用定位模块为每个图像生成真实三维(3D)空间的真实世界坐标中的相机位置、相机取向以及相机到物体的距离;使用图像二维物体检测模块和每个图像生成:i)在该图像中检测到的物体的物体标签、ii)该图像中的物体的边界框、以及iii)该图像中的特征点;使用长方体生成器、每个图像的边界框、每个图像的相机位置、每个图像的相机取向以及每个图像的相机到物体的距离,生成真实三维空间的真实世界坐标中的长方体,该长方体在真实三维空间的真实世界坐标中界定物体;使用锚点生成器、所述至少一个图像的特征点和长方体生成包含在长方体中的物体的真实三维空间的真实世界坐标中的锚点;并且使用物体标签、锚点、以及物体在真实三维空间的真实世界坐标中的长方体、长方体的质心或边界框中的至少一者和该图像中的至少一个,生成虚拟三维空间中的三维地图,该三维地图包含位于真实世界坐标中的物体。
另一示例性实施方式是一种定位方法,该定位方法包括:接收至少一个包含物体的图像;使用定位模块为每个图像生成真实三维(3D)空间的真实世界坐标中的相机位置、相机取向以及相机到物体的距离;使用图像二维物体检测模块和每个图像生成:i)在该图像中检测到的物体的物体标签、ii)该图像中的物体的边界框、以及iii)该图像中的特征点;使用长方体生成器、每个图像的边界框、每个图像的相机位置、每个图像的相机取向以及每个图像的相机到物体的距离,生成真实三维空间的真实世界坐标中的长方体,该长方体在真实三维空间的真实世界坐标中界定物体;使用锚点生成器、所述至少一个图像的特征点和长方体生成包含在长方体中的物体的真实三维空间的真实世界坐标中的锚点;并且与图像中的至少一个一起输出物体标签、锚点、以及以下中的至少一个:真实三维空间的真实世界坐标中的长方体、长方体的质心或物体的边界框,以生成虚拟三维空间中的三维地图,该三维地图包含位于真实世界坐标中的物体。
另一示例性实施方式是一种定位方法,该定位方法包括:接收至少一个包含物体的图像;使用定位模块为每个图像生成真实三维(3D)空间的真实世界坐标中的相机位置、相机取向以及相机到物体的距离;使用扫描仪或摄影测量生成物体的点云地图;使用图像二维物体检测模块和每个图像生成:i)在该图像中检测到的物体的物体标签、ii)该图像中的物体的边界框、以及iii)该图像中的特征点;使用长方体生成器、每个图像的边界框、每个图像的相机位置、每个图像的相机取向以及每个图像的相机到物体的距离,生成真实三维空间的真实世界坐标中的长方体,该长方体在真实三维空间中界定物体;使用锚点生成器、所述至少一个图像的特征点和长方体生成包含在长方体中的物体的真实三维空间的真实世界坐标中的锚点;在物体数据库中存储物体标签、长方体、锚点、以及点云地图或从点云地图生成的物体的三维模型中的至少一者;并且在地图数据库中存储物体标签、长方体和锚点。
另一示例性实施方式是一种定位方法,该定位方法包括:接收包含静止真实物体的图像;使用图像二维物体检测模块和该图像生成:i)在该图像中检测到的静止真实物体的物体标签、以及ii)该图像中的静止真实物体的边界框;使用姿态估计器模块、该图像、物体标签和边界框生成静止真实物体的视点姿态;使用物体标签检索静止真实物体的真实三维(3D)空间的真实世界坐标中的已知长方体和静止真实物体的真实三维空间的真实世界坐标中的已知姿态;并且使用定位模块、该图像、物体标签、边界框、视点姿态、真实三维空间的真实世界坐标中的已知长方体以及真实三维空间的真实世界坐标中的已知姿态,生成真实三维空间的真实世界坐标中的相机位置以及真实三维空间的真实世界坐标中的相机取向。
图1示出了根据一示例性实施方式的示例性定位系统100和定位方法的框图。通常,定位系统100可用于定位真实世界物体并生成真实世界物体的虚拟物体。可以使用三维空间中的真实世界坐标表示真实世界(例如地球)。适当的坐标包括如图所示的笛卡尔坐标(X,Y,Z)、或经度/纬度与高度(Z)、或适当坐标方案的组合。Z坐标可以相对于海平面或当地地面。虚拟三维地图包括与真实世界坐标对应的三维空间中的虚拟坐标。真实世界坐标可以用于标识虚拟三维地图中的虚拟物体的位置、姿态和其它信息。可以将虚拟物体放置在虚拟世界的虚拟三维地图中。在一些替代实施例中,可能不需要Z坐标,例如对于始终在地面上的物体来说。
如图1所示,定位系统100可以包括:一个或多个相机设备104(示出了一个)、一个或多个显示设备106、以及测绘设备108。相机设备104可以用于从真实世界捕获图像102。相机设备104还可以用于执行所述定位方法的多个方面,包括真实世界中的物体的定位和相机设备104本身的定位。所述定位方法还可以用于执行物体和相机设备的跟踪,这是在不同时间的定位。相机设备104可以包括基于规则的模型,以执行所述定位方法。相机设备104还可以包括机器学习模型,该机器学习模型可以包括一个或多个神经网络(NN),例如卷积神经网络(CNN)。显示设备106可以被配置成向用户显示三维地图和三维地图中的三维物体。三维地图可以是采用沉浸式扩展现实(XR)的虚拟三维地图,其中用户从虚拟三维地图内的视点(POV)观看三维地图或在三维地图中导航。
测绘设备108可以用于生成地图,例如表示真实世界的真实地图的虚拟三维地图。例如,真实三维空间中的真实世界(例如地球)的真实世界坐标由虚拟三维空间中的虚拟世界坐标(即,相同的真实世界坐标)来表示(匹配)。测绘设备108可用于执行所述定位方法的各个方面,包括真实世界中的物体的定位。测绘设备108可以用于执行相机设备104的定位和相机设备104的移动跟踪。该测绘设备生成真实世界的虚拟三维地图,该虚拟三维地图可以包含与真实坐标相符的虚拟坐标中的物体和相机设备104(例如,虚拟世界中的虚拟坐标等同于真实世界的真实坐标)。如图1所示,测绘设备108可以包含物体数据库110、地图数据库112和测绘模块114。测绘设备108还可以包含机器学习模型,该机器学习模型可以包括一个或多个NN,该NN可以包括CNN。
在实施例中,相机设备104、显示设备106和测绘设备108可以通过通信链路和通信会话进行通信。通信链路可以是无线的或有线的。在一示例中,每个通信链路可以包括WebSocket协议,以提供连续的双向通信。
在一示例中,测绘设备108是相机设备104的一部分。在一示例中,测绘设备108是显示设备106的一部分。在一示例中,测绘设备108是与相机设备104和显示设备106分开的独立设备。
图2A示出了根据一个示例性实施方式的图1的用于物体202的定位系统100和定位方法的示意图。图2B示出了根据一个示例性实施方式的由相机设备104捕获并由图2A的定位方法处理的示例性图像102的示意图。现在将关于真实世界中的一个真实物体202(例如图2A中所示的椅子)来说明示例。应理解,所述定位方法可以应用于多个物体202。例如,可以通过所述定位方法同时处理每个物体,或者,可以通过所述定位方法独立地处理每个单独物体,以便每次检测和定位每个单独物体实例。所述定位方法用于确定真实世界中的真实物体202的真实位置和真实姿态,并生成包含真实物体202的虚拟物体202的虚拟三维地图,该虚拟三维地图具有真实位置的虚拟位置和真实姿态的虚拟姿态。
在一些示例中,所述虚拟三维地图是众包的,因为多个相机设备104可以向测绘设备108发送关于物体的信息,以生成虚拟三维地图中的物体的位置的更新。在一示例中,相机设备104之间进行实时协作,以执行所述定位方法。在一示例中,所述实时协作可以通过点对点方式执行,而无需处理服务器,例如在测绘设备108由一个或多个相机设备104执行的情况下。在一示例中,所述实时协作可以利用客户端/服务器关系执行,例如,测绘设备108是与相机设备104通信的服务器。
在一个实施例中,相机设备104是单个固定相机或位于真实世界的同一真实三维空间中的不同位置处的多个固定相机。例如,所述定位方法可以使用一个固定相机或多个固定相机来执行深度估计。所述定位方法可以同步固定相机,以通过比较同一场景的帧来估计深度信息。在一个示例性场景中,固定相机被安装在房间的天花板上。在一个示例性场景中,固定相机安装在房间的两个或更多个角落处。在一些示例中,这样的固定相机具有诸如平移、缩放和/或倾斜等特征,以提供具有不同深度信息的附加图像来执行所述定位方法的示例。
在图2A中,相机设备104可以由拍摄真实世界中的物体202(例如真实的椅子)的图像102的用户或机器操作。在图2A的示例中,相机设备104拍摄物体202的三个图像102,相机设备104的位置被示为第一位置、第二位置和第三位置。请参考图2B,第一图像102(1)是由相机设备104从第一位置捕获的,第二图像102(2)是由相机设备104从第二位置捕获的,第三图像102(3)是由相机设备104从第三位置捕获的。基于相机设备104捕获图像102的位置,图像102都会具有同一物体202的不同POV。在一些示例中,可以在相机设备104的同一取向在到物体202的不同变焦距离(例如光学变焦、数字变焦或手动移动相机设备104)处捕获多个图像。可以拍摄比图2A所示的图像更多或更少的物体202的图像102。在一些示例中,相机设备104捕获物体202的视频,因此为所述定位方法生成多个图像102。
如图2B所示,对于每个图像102,相机设备104能够对第一图像102(1)执行图像二维物体检测以识别物体202,生成物体202的边界框204,并生成第一图像102(1)中的特征点。相机设备104能够通过使用一个或所有图像102生成物体标签来识别物体202。相机设备104还能够生成表示物体标签的概率或置信度分数的物体分数。相机设备104还能够生成第一图像102(1)中的特征点,如白色圆圈所示。边界框204是界定物体202在图像102中的图像实例的矩形。虽然在图2B中未示出,但是还为来自第二位置的第二图像102(2)和来自第三位置的第三图像102(3)生成物体202的物体标签、特征点和相应的边界框204。对于同一个物体202,物体标签在第一图像102(1)、第二图像102(2)和第三图像102(3)中应是相同的。共识的规则和/或物体分数可用于解决物体标签中的任何冲突。图像102的相应边界框204相对于地面或物体202的正面不一定是直线的,并且可以从各种角度、POV和距离拍摄。质心208被示为较大的白色圆圈。
特征点是由相机设备104在图像中检测到的特征,由白色圆圈表示。特征点又被称为特征边缘点、卡纳德-卢卡斯-托马西(KLT)角或哈里斯角,它是从图像102中检测到的特定边缘的被识别的视觉特征。在一示例中,使用Google ARCore来生成特征点。如图2B所示,可以为物体202(在边界框204内)生成特征,还可以为物体和边界框204之外的环境和其它物体生成特征。为了清楚起见,在显示边界框外的特征点时没有显示环境的图像。
请参考图2A,在示例性实施方式中,相机设备104能够确定相机设备104的真实世界位置(坐标),这在本文中更详细地说明,例如,如图5和图10A-10C所示。在示例性实施方式中,使用图像102、图像102的相应边界框204、以及用于捕获每个图像102的相机设备104的相应位置,相机设备104能够在物体202的三维空间中生成长方体206。长方体206是三维空间中的矩形棱柱,该矩形棱柱界定物体202。
在示例性实施方式中,使用长方体206,相机设备104能够生成或计算长方体206的质心208。质心208是三维空间中的长方体206的中心。质心208可以由真实世界坐标和相同的虚拟世界坐标来表示。在示例性实施方式中,使用质心208和物体标签,所述定位方法能够生成三维地图,该三维地图包含位于与真实世界中的真实物体202完全相同(在适当的阈值内)的虚拟位置的虚拟物体202。例如,显示设备106可以用于实时查看三维地图中的虚拟物体202并与之交互。质心208可以用于与虚拟物体202的最后已知质心208进行比较,并且可以相应地生成或更新虚拟物体202的三维地图。在一些示例中,可以使用质心208的移动的距离阈值来确定真实物体202是否已经实际移动,其中该距离阈值可以根据应用、真实物体202的大小或特定的真实世界环境而变化。
在一些示例中,出于一致性目的,可以将长方体206定义成使得物体202的正面是长方体206的垂直于水平地面的正面,并且物体202的底部是长方体206的平行于水平地面的底面。在其它示例中,使用物体202的任意面来生成长方体206。例如,对于确定真实物体202的已知质心208是否已经移动(或没有移动)的实际目的而言,同一个物体202的不同角度的不同长方体206可以具有基本上不变的质心208。例如,在物体202没有移动的情况下,长方体206和相关质心208的定义中的任何变化仍会使质心208在距离阈值之内。
在一些示例中,使用相机设备104在特征点的三维空间中生成锚点(又被称为锚)。锚点在图像102的特定特征点的(真实世界的真实三维空间的)真实世界坐标中。在一些示例中,一个锚点表示从不同图像102生成的重叠特征点,因为这些特征点实际上是从相机设备104的不同取向拍摄的相同特征。可以将锚点表示为三维空间中的球体(例如白色球体)或点。在一示例中,可以通过相机设备104使用来自AR Foundation的ARAnchorManager来生成锚点。在一些示例中,物体的每个锚点是能够单独跟踪的。在多个示例中,可以使用锚点来跟踪物体或物体的一部分的移动。
在一示例中,对物体进行跟踪包括在物体移动的三维空间中生成路径。在一示例中,对物体进行跟踪还包括生成物体的移动方向。在一示例中,对物体进行跟踪还包括生成物体的移动速度(例如当前速度和/或平均速度)。在一示例中,测绘模块114或定位方法可以使用跟踪来预测物体的未来位置。
在一些示例中,使用相机设备104确定物体202的姿态。该姿态是真实物体202的正面在真实世界中所面对的方向或取向。在一示例中,该姿态可以包括俯仰、偏转(罗盘)和滚转。在其它示例中,该姿态可以包括方位方向(罗盘)和仰角方向。
例如,相机设备104可以从一个或多个图像102中生成正面识别信息,这将在本文中更详细地说明,例如,如图8A所示。根据正面识别信息、图像102中的至少一个图像、三维空间中的相应边界框以及物体标签,相机设备104能够生成真实世界中的物体202的姿态,该姿态然后被测绘设备108用于生成虚拟地图中的虚拟物体的虚拟姿态。
确定真实姿态的示例性实施方式在此一般是结合识别物体202的正面(前面)来说明的。应理解,也可以使用除正面之外的其它面来确定姿态,例如使用背面(例如当跟随在物体(例如移动机器人)之后时)、顶面(例如当相机设备104在头顶上时)或底面(例如在起飞、飞行和着陆期间从地面跟踪飞行器)等。
在一些示例中,使用相机设备104确定视点(POV)姿态和从相机设备104的POV到物体202的POV距离。例如,该POV姿态是当相机设备104捕获图像102时从相机设备104的POV观察的姿态,并且可以包括俯仰、偏转(罗盘)和滚转。在多个示例中,该POV姿态与相机的坐标相关,例如,从相机直接向前是零度。例如,该POV距离是当相机设备104捕获图像102时物体与相机设备104之间的距离。例如,该距离在物体202距相机设备104最近的点处的垂直平面(边界框)与相机设备104之间。
在一些示例中,边界框内的锚点用于生成从相机设备104的POV观察的物体202的POV姿态。相机设备104能够使用相机设备的位置和取向生成真实世界中的物体202的姿态,该姿态然后被测绘设备108用于生成虚拟地图中的虚拟物体的虚拟姿态。
在一些示例中,相机设备104使用视频捕捉来捕获图像102。视频可以包含多个视频帧,这些视频帧是图像102。例如,用户或机器可以激活相机设备104的视频录制功能,并将相机设备104移动至第一位置、第二位置和第三位置(和/或其它位置)。然后可以通过提取图像102(视频帧)来使用视频,然后所述定位方法使用图像102来执行物体202的定位。可以录制视频,然后该视频稍后被定位方法处理,或者可以被实时处理。在一些示例中,来自视频的音频可以用于辅助定位方法,以生成物体标签,该音频例如是动物噪声、人声、车辆声等。
图2C示出了根据一个示例性实施方式的通过定位方法将相机三维坐标变换为真实世界三维坐标的示意图。例如,该变换可以是由相机设备104执行的变换方法。例如,如本领域中所理解的,可以使用transToWorld功能。transToWorld功能是用于从相机三维坐标到真实世界三维坐标的变换方法的变换矩阵(旋转和位移)。该变换方法还可以用于将一个或多个消失点(VP)从相机三维坐标变换到真实世界三维坐标。在一个示例中,该变换方法包括检测地板的平面,生成从相机设备到地板的高度。将相机三维坐标中的VP和锚点变换到真实三维空间包括基于相机设备104到地板的高度确定检测的物体的比例。
坐标系可以包括相机三维坐标系(在图2C中以虚线示出)和真实世界坐标系(在图2C中以实线示出)。相机三维坐标系被定义为:x向右,y向上,z向前。真实世界坐标系被定义为:x向右,y向前,z向上。在一些示例中,相机始终平行于地面。
坐标对齐如下:Xworld=Xcamera;Yworld=Zcamera;Zworld=Ycamera
transToWorld是一个4×4矩阵,表示为:
第1行:X分量:(_arCameraManager.transform.right.x,_arCameraManager.transform.right.y,_arCameraManager.transform.right.z,0f);
第2行:Y分量:(_arCameraManager.transform.forward.x,_arCameraManager.transform.forward.y,_arCameraManager.transform.forward.z,0f);
第3行:Z分量:(_arCameraManager.transform.up.x,_arCameraManager.transform.up.y,_arCameraManager.transform.up.z,l_camToFloor);
第4行:(0f,0f,0f,1f);
在该4×4矩阵中,变量1_camToFloor表示相机高度,_arCameraManager是由ARFoundation的ARCameraManager管理的ARCamera组件。
在其它实施例中,例如,当使用除ARFoundation外的其它软件时,transToWorld是一个4×4矩阵,表示为:
第1行:X分量:(camera.right.x,camera.right.y,camera.right.z,0f);
第2行:Y分量:(camera.forward.x,camera.forward.y,camera.forward.z,0f);
第3行:Z分量:(camera.up.x,camera.up.y,camera.up.z,l_camToFloor);
第4行:(0f,0f,0f,1f);
在一个示例中,通过使相机设备104指向(例如从屏幕或相机522的中心射出一条光线)地板上的检测平面(水平地面)来计算(生成)相机高度。例如,相机高度由ARFoundation的ARPlaneManager或其它软件生成。
请再次参考图1,在定位方法的一示例性实施方式中,相机设备104能够生成相机设备104的定位和取向。相机设备104被配置成从图像102和相机设备104的位置确定:物体202的物体标签、图像中的物体的边界框、物体的锚点、物体的长方体(在三维空间中)、物体202的长方体的质心位置(在三维空间中)、以及物体202的姿态。相机设备104向测绘设备108传送物体标签、锚点、姿态、以及长方体、质心或图像中的边界框(及图像)中的至少一者或全部。测绘设备108被配置成使用测绘模块114利用物体标签、锚点和剩余信息,生成真实物体202的虚拟物体202。例如,可以从物体数据库110中检索物体202的三维模型,例如点云或其它适当形式。测绘设备108被配置成以三维模型(点云或其它适当形式)生成虚拟三维地图,该虚拟三维地图包含具有与真实物体202的真实坐标相同的虚拟坐标的虚拟物体202。
测绘设备108将虚拟三维地图发送至(一个或多个)显示设备106,该显示设备能够以交互方式显示虚拟三维地图。在多个示例中,该虚拟三维地图是沉浸式三维虚拟地图,这意味着显示设备160从视点显示三维地图,如同用户在三维地图内一样。在显示设备106上查看三维地图的用户可以导航到与真实物体202的真实坐标相同的虚拟坐标,以便查看虚拟物体202。虚拟物体202具有与真实物体202的真实姿态相同的虚拟姿态(例如俯仰、偏转(相对于虚拟罗盘方向(例如虚拟正北))、滚转)。
在定位方法的一示例性实施方式中,测绘模块114在接收到物体标签、锚点和剩余信息后,可以从地图数据库112确定物体的最后已知质心(或长方体)位置或最后已知姿态是否有任何变化。如果质心(或长方体)位置或姿态没有变化,那么不需要为物体202更新虚拟三维地图。如果质心(或长方体)位置或姿态发生了变化,那么可以更新虚拟三维地图以适应虚拟三维地图中的这种差异,以由显示设备106显示。
因此,请再次参考图1,相机设备104从物体202的图像102生成:真实世界中的物体202的物体标签、锚点、长方体、质心、边界框和姿态。相机设备104向测绘设备108发送物体标签、锚点、姿态、以及长方体、质心或图像中的边界框(及图像)中的至少一者或全部。测绘设备108能够使用物体标签从物体数据库110中检索虚拟物体202(以适当的三维模型格式,例如点云地图)。测绘设备108从物体标签、物体的三维模型和剩余的接收信息生成虚拟世界中的三维地图,该三维地图包含具有质心或长方体位置以及姿态的虚拟物体202。在一示例中,锚点被测绘设备用作参考点,以确定物体的位置(例如质心或长方体位置)是否已经改变。测绘设备108将虚拟三维地图发送至显示设备106,该显示设备显示虚拟三维地图。在一些示例中,虚拟三维地图可以是交互式和沉浸式虚拟三维地图。例如,用户可以通过显示设备106导航至虚拟物体202的虚拟位置,以查看虚拟物体202。虚拟物体202具有与真实物体202的真实姿态相同的虚拟姿态。虚拟物体202也可以被称为真实物体202的数字孪生体。
在一些示例中,测绘设备108将物体202的质心或长方体位置和姿态与地图数据库112中包含的物体202的最后已知质心或长方体位置和姿态进行比较。在一些示例中,测绘设备108向测绘设备108或显示设备106上的三维渲染器发送新的质心或长方体位置和/或姿态,该三维渲染器更新三维地图中的虚拟物体202的位置和/或姿态。
应理解,对于这个阶段的定位方法,相机设备104不需要将真实物体的整个点云地图发送至测绘设备108或显示设备106。
在一些示例中,可以使用相机设备104初始生成三维物体202的三维模型(例如全点云),这在本文中参照图6A更详细地说明。简而言之,相机设备104可以拍摄多个图像102,并且例如使用真实物体202的光探测和测距(LiDAR)来进行扫描。物体202的完整点云地图被生成,并与图像102一起被从相机设备104发送至物体数据库110。相机设备104能够确定真实物体202的三维空间中的锚点、三维空间中的姿态、三维空间中的长方体和三维空间中的质心,并发送至地图数据库112。因此,地图数据库112能够存储虚拟物体202的三维空间中的锚点、虚拟姿态、虚拟长方体和虚拟质心。在多个示例中,存储在地图数据库112中的这些虚拟数据也可以被称为“已知”数据。应理解,在最初时将物体202的三维模型(例如全点云)从相机设备104发送至物体数据库110之后,相机设备104随后不需要发送物体202的全点云地图。相反,利用质心或长方体位置以及在一些示例中利用姿态,能够将物体标签和物体位置从相机设备104发送至测绘设备108,以便测绘设备108生成或更新带有三维物体的三维地图,而无需发送物体202的点云地图。在多个示例中,可以生成除点云外的其它格式的三维模型,例如基于矢量的模型、图元模型、多边形模型、计算机辅助设计(CAD)模型、实体模型、线框模型等。
在一些示例中,测绘模块114和三维模型生成器116被组合在同一个模块中。
图3示出了根据一示例性实施方式的测绘设备108的详细框图。图3所示的测绘设备包括至少一个存储器302(示出了一个)、至少一个处理器304(示出了一个)和至少一个通信接口306(示出了一个)。在存储器302、处理器304和通信接口306之间实现通信连接,例如使用总线或其它通信链路实现。处理器304被配置成从存储在存储器302中的应用程序和模块执行定位方法的步骤。
存储器302可以是只读存储器(ROM)、静态存储装置、动态存储装置或随机存取存储器(RAM)。存储器302可以存储程序,例如测绘模块114和三维模型生成器116。存储器302可以是非暂时性存储器。模块(例如测绘模块114和三维模型生成器116)可以包括存储在存储器302中的软件、硬件、或软件和硬件的组合。存储器302可以存储一个或多个数据库,例如物体数据库110和地图数据库112。物体数据库110可以为每个物体存储:1)物体标签、2)三维模型、3)正面识别信息、4)锚点、5)物体的长方体、6)物体的质心。在多个示例中,存储在物体数据库110中的这些虚拟数据也可以被称为“已知”数据。三维模型是代表相应的真实物体的虚拟物体。在多个示例中,三维模型包括点云,该点云是真实物体的虚拟物体表示。物体数据库110可以存储物体的长方体和/或长方体的质心。在一些示例中,长方体在以真实世界坐标(例如使用对角坐标)表示的三维空间中。在一些示例中,长方体不在真实世界的坐标中,而是在长方体的维度中,其中使用正面识别信息将长方体的一个面指示为正面。类似地,在一示例中,长方体的质心可以在以真实世界坐标表示的三维空间中。质心也可以相对于长方体定义(例如相对于长方体的一个角坐标),而不是以真实世界坐标定义。锚点还包含关于物体位置、大小和姿态的相关信息,并且可以由测绘模块114用来生成物体位置和/或姿态的任何变化。例如,在从相机设备104接收到物体的锚点时,测绘模块114可以将该锚点与已知锚点进行比较(例如使用物体的部分或全部锚点)。在一示例中,例如,当测绘模块114没有接收到长方体或质心时,测绘模块114可以使用接收到的锚点在物体的三维空间中生成长方体,例如通过在三维空间中生成紧密包围锚点的长方体来生成。测绘模块114还可以从长方体生成(例如计算)质心。
在一示例中,测绘模块114能够使用物体标签来检索物体的已知长方体,并且,能够使用从相机设备104接收的锚点和/或长方体来确定已知长方体是否已经移动。测绘模块114能够使用物体标签来检索物体的已知质心,并且,能够使用从相机设备104接收的锚点和/或质心(或者从接收的长方体计算质心)确定已知质心是否已经移动。测绘模块114能够使用物体标签来检索物体的已知姿态,并且,能够使用锚点和/或从相机设备104接收的姿态来确定已知姿态是否已经改变。
在一些示例中,物体数据库110存储每个物体的三维空间中的已知锚点。
在一些示例中,物体数据库110存储每个物体的正面识别信息。该正面识别信息可用于确定物体的姿态。在一示例中,该正面识别信息可以是物体的三维模型的特定POV。正面识别信息的另一示例是物体正面的图像。正面识别信息的另一示例是仅物体正面的三维模型或点云地图。正面识别信息的另一示例是物体正面的描述性文字,例如人的“脸”或“鼻子”、或者汽车的“发动机罩”。在一示例中,该正面识别信息可以是物体正面的特定锚点的标识。在其它示例中,除正面外的其它面被存储在物体数据库110中,并且可以用于生成取向,例如背面、顶面、底面、左面或右面等。为了清楚和方便起见,相对于所指示的正面说明示例性实施方式。
物体标签是物体的名称。在一些示例中,由定位方法捕获的真实世界中的每个真实物体在物体数据库110中都具有唯一的物体标签(以及相关联的三维模型)。在一些示例中,物体标签和三维模型可以用于不止一个真实世界物体,例如用于活动场所中的活动规划目的的一排相同的椅子。在后一示例中,可能不需要将两把相同椅子的交换来反映在虚拟世界的虚拟地图中,并且为这些真实物体(例如椅子)赋予相同的物体标签“椅子”和相同的三维模型。但是,在其它示例中,相同的椅子可以具有唯一的物体标签,并且具有存储在物体数据库110中的各自唯一的三维模型,用于通过定位方法进行单独地跟踪。在一示例中,这种唯一的物体标签可以存储在物体数据库110和地图数据库112中的元数据中。在一示例中,该元数据包含表明相机设备102何时捕获到物体图像的时间标记。该元数据还可以用于相机设备102、测绘设备108和显示设备106中的任何一个之间的通信消息。
物体数据库110和地图数据库112还可以存储相机设备104的位置和取向(POV)。例如,三维地图可以包含具有与真实相机设备104相同的位置和取向的虚拟相机设备104的三维模型。三维模型可以是类似于相机设备104或类似于用户的标记、化身或点云。
地图数据库112还能够存储位置和姿态信息的历史信息,例如真实世界和虚拟世界中每个物体在不同时间的位置和姿态,这也被称为跟踪。历史信息可以包括相机设备104的位置和取向。历史信息可以包括由虚拟三维地图的(一个或多个)显示设备106在不同时间显示的特定POV方向。地图数据库112能够存储物体的已知长方体、质心和锚点(在真实世界坐标的三维空间中)。
在一些示例(未示出)中,地图数据库112和物体数据库110可以是同一个数据库。在一些示例中,姿态也可以存储在物体数据库110中。
处理器304可以是通用中央处理单元(CPU)、微处理器、专用集成电路(ASIC)、图形处理单元(GPU)、张量处理单元(TPU)或一个或多个集成电路。处理器304可以是具有信号处理能力的集成电路芯片。在实现过程中,在本文中说明的定位方法的步骤可以由处理器304中的硬件形式的集成逻辑电路或软件形式的指令执行。此外,处理器304可以是通用处理器、数字信号处理器(DSP)、ASIC、现场可编程门阵列(FPGA)或另一种可编程逻辑器件、分立门或晶体管逻辑器件或分立硬件组件。处理器304能够实施或执行在示例性实施方式中说明的方法、步骤和逻辑框图。通用处理器可以是微处理器,或者该处理器可以是任何常规处理器等。参照示例性实施方式说明的定位方法的步骤可以由硬件解码处理器直接执行,或者可以通过使用解码处理器中的硬件和软件模块的组合执行。软件模块可以位于本领域中的成熟存储介质中,例如随机存取存储器、闪存、只读存储器、可编程只读存储器、电可擦除可编程存储器或寄存器。存储介质位于存储器302中。处理器304从存储器302读取信息,并通过使用处理器304中的硬件完成所述定位方法的一些或所有步骤。
测绘模块114和三维模型生成器116可以各自包含机器学习模型。在一些示例中,该机器学习模型包括一个或多个神经网络(NN)。在一些示例中,该NN包括CNN。在一些示例中,测绘模块114和三维模型生成器116使用基于规则的模型。在一些示例中,测绘模块114和三维模型生成器116对来自用户的手动反馈做出响应。
通信接口306通过使用无线或有线通信实现测绘设备108与另一个设备或通信网络之间的通信。在一些示例中,可以通过使用通信接口306获得训练数据。
在一示例中,具有通信接口306的处理器304执行实时数据应用程序接口(API),以与馈送源和第三方服务(例如更新的真实世界地图、更新的物体三维模型库)通信。
应注意,虽然在图3中的测绘设备108中示出了存储器302、处理器304和通信接口306,但是在特定的实现过程中,本领域技术人员应理解,测绘设备108还可以包括实现正常运行所必需的其它部件。此外,本领域技术人员应理解,基于特定需要,测绘设备108还可以包括实现其它附加功能的硬件部件。此外,本领域技术人员应理解,测绘设备108可以仅包括实现实施方式所需的部件,而不需要包括图3所示的所有部件。在其它示例中,测绘设备108在本地计算机、相机设备104或显示设备106上执行,这被称为边缘处理。
在一些示例中,测绘设备108包括服务器或云服务器。在一些示例中,测绘设备108包括第三方机器学习处理服务和云存储设备,例如亚马逊网络服务(AWS)TM、微软AzureTM和谷歌云TM。例如,物体数据库110和/或地图数据库112可以在独立的存储服务器或云存储设备上。在其它示例(未示出)中,测绘模块114或三维模型生成器由相机设备104或显示设备106或其它设备执行。
图4示出了根据一示例性实施方式的显示设备106的详细框图。显示设备106可以是电子设备或用户设备,用于用户查看包含三维物体的三维地图。显示设备106可以是台式机、膝上型计算机、机顶盒或移动通信设备,例如智能电话或平板电脑。显示设备106可以与相机设备104相同或不同(例如用于AR目的)。显示设备106的用户可以与相机设备104的用户相同或不同。
图4中的示例性显示设备106包括至少一个存储器402(示出了一个)、至少一个处理器404(示出了一个)、至少一个通信接口406(示出了一个)和I/O接口设备408。存储器402、处理器404、通信接口406可以类似于结合图3的测绘设备108所说明的那些装置。存储器402可以存储由处理器404执行的三维显示模块410。显示设备106的模块(例如三维显示模块410)可以包括存储在存储器402中的软件、硬件、或软件和硬件的组合。显示设备106包括显示器412,该显示器可以是360度显示器。I/O接口设备408可以包括但不限于触摸屏、键盘、相机、麦克风、扬声器、鼠标、手势反馈设备(通过相机或加速度计)和/或触觉反馈设备。
三维显示模块410能够从测绘设备108接收三维地图以在显示器412上显示。三维地图的特定格式可以是三维模型、点云地图或用于三维显示模块410重建三维地图的数据(这可以包括从其它源或物体数据库110检索三维物体模型或数据)。在一些示例中,从测绘设备108接收的数据可以包括虚拟物体的变化,例如位置或姿态的变化,并且三维显示模块410可以基于该数据在虚拟世界中移动虚拟物体。因此,在一些示例中,对于这种变化,不需要将整个点云地图传送至显示设备106。
在一些示例中,三维显示模块410由特定平台执行,例如三维视频平台,例如移动平台、流媒体平台、网络平台、游戏平台、应用插件等。显示设备106可以包括用于与用户交互的输入/输出(I/O)接口设备408。例如,用户可以手动地与三维地图交互并操纵三维地图。
在一示例性实施方式中,显示器412是计算机监视器。例如,包含一个或多个虚拟物体的三维地图的直线子集视图(帧)被输出至计算机监视器,并且用户可以使用输入设备(I/O接口设备408之一)改变在显示器412上显示的视图。在一些示例中,显示设备106从测绘设备108接收三维地图,并在显示器412上显示特定的直线子集视图(帧)。在其它示例中,显示设备106仅从测绘设备108接收特定的直线子集视图(帧),该视图是显示器412的特定POV。
根据一示例性实施方式,显示器412是360度显示器。例如,如图1所示,根据示例性实施方式,该360度显示器是头戴式显示器。例如,该头戴式显示器具有罩、衬垫和带。用户可以通过将衬垫放在用户眼睛周围并用带将其固定在适当的位置来戴上该头戴式显示器。根据示例性实施方式,该头戴式显示器在罩内具有屏幕和传感器。显示器412基于用户头部的位置和姿态显示三维地图的一部分以及一个或多个层。该传感器可以包括指南针和/或加速度计,以确定该360度显示器的取向。
根据一示例性实施方式,用户可以使用输入设备来虚拟地导航到虚拟物体的虚拟位置。该虚拟位置具有与世界(例如地球)中的真实世界坐标对应的虚拟世界坐标。在一些示例中,用户可以在佩戴显示设备106的同时行走以改变虚拟位置。在一些示例中,用户可以在360度VR跑步机(在此处未示出)上行走以改变虚拟位置。根据显示设备106相对于虚拟三维地图的虚拟位置和虚拟取向,例如相对于虚拟物体的虚拟位置和虚拟姿态,三维地图的特定POV被显示在显示器412上。
根据一示例性实施方式,显示设备106可以用于增强现实(AR)。例如,可以使用Google ARCore。在AR的一示例中,用户可以物理地移动至与真实物体相同的真实位置。当显示设备106面向真实世界中的真实物体时,显示器412显示或确认虚拟物体。显示器412可以在360度显示器上显示附加的增强信息,该增强信息覆盖或修饰360度显示器或三维地图的直线子集视图上的物体。在一些示例中,例如,对于AR,相机设备104是与显示设备106相同的设备(有时也是与测绘设备108相同的设备)。
360度显示器的另一示例是在弯曲的一面墙壁或多面墙壁上有投影的房间,这也被称为“洞穴投影”。用户沉浸在房间中,可以通过转动头部或控制房间前方的所需视图来查看不同的POV角度。在各种示例中,投影的POV可以通过输入设备来选择(导航),或者可以是与相机设备104的位置相同的POV。洞穴投影还能够显示正在显示的POV的特定位置的坐标,例如使用真实世界的经纬度坐标(以及可选的高度坐标)来显示。
图5示出了根据一示例性实施方式的相机设备104的框图。相机设备104可以是电子设备或用户设备。相机设备104可以是移动相机设备104。相机设备104可以由用户或机器人操作。相机设备104包括相机522,该相机可用于捕获真实世界和真实物体的图像。示例性的相机设备104包括至少一个存储器502(示出了一个)、至少一个处理器504(示出了一个)和至少一个通信接口506(示出了一个)。存储器502、处理器504、通信接口506可以类似于结合图3的测绘设备108或图4的显示设备106所说明的那些装置。相机设备104可以包括输入或输出(I/O)接口设备508,包括但不限于触摸屏、显示屏、键盘、麦克风、扬声器、鼠标、手势反馈设备(通过相机522)和/或触觉反馈设备。在一些示例中,相机设备104的存储器502例如可以从测绘设备108或从云存储设备访问物体数据库110和地图数据库112,或者可以包含存储器502中的镜像副本。
在多个示例中,相机设备104包括用于检测来自真实世界的信息的传感器520。在一示例中,传感器520可以用于确定相机设备104的位置和取向(例如俯仰、滚转、偏转)。传感器520可以包括:全球定位系统(GPS)、本地定位系统(LPS)、用于确定相机到物体或物体的点的距离的测距指示器或扫描仪(例如LiDAR)、用于确定相机设备104的高度(Z轴)的气压传感器、用于确定相机设备104相对于正北的取向的罗盘和/或用于确定相机设备104的取向的加速度计。GPS和/或LPS可用于生成相机设备104的位置。距离检测器可用于确定相机设备104与由相机522捕获的物体之间的距离。
相机设备104可以使用诸如LiDAR等距离指示器来确定相机到物体或物体的点的距离。例如,该距离在物体距相机设备104最近的点处的垂直平面(边界框)与相机设备104之间。
在一些示例中,相机设备104不需要距离检测器,并且相机设备104与物体之间的距离可以改为使用摄影测量来生成,例如:使用物体数据库110获悉物体的大小或长方体大小,和/或计算物体的消失点。在一些示例中,可以使用Google ARCore。在一些示例中,定位模块518可以使用摄影测量和传感器520中的至少一个传感器的组合来确定距离。
在一些示例中,可以使用Google ARCore确定从相机设备104到图像中的特定特征点的距离(例如为了在特征点的三维空间中生成锚点)。在一些示例中,可以使用距离检测器来确定从相机设备104到图像中的特定特征点的距离。
定位模块518可以用于生成相机设备104的位置和取向。在一些示例中,定位模块518使用来自传感器520的数据。在一些示例中,定位模块518使用来自GPS和/或LPS的数据。在一些示例中,用户被定位并被假定为处于与相机设备104相同的位置并且可选地处于与相机设备104相同的取向,即,用户正握着相机设备104,并且可选地,用户的姿态与相机设备104相同。
在另一示例中,可以在不使用GPS、LPS和/或指南针(或者除相机522外的任何传感器520)的情况下生成相机设备104的位置和取向。例如,从地图数据库112获悉静止真实物体的位置和姿态。相机设备104能够捕获静止真实物体的一个或多个图像。相机设备104能够生成相机设备104与静止真实物体之间的POV距离和POV姿态。相机设备104能够使用静止真实物体的已知位置和已知姿态以及POV距离和POV姿态来生成相机设备104的真实位置和真实取向。
在示例性实施方式中,存储器502可以存储由处理器504执行的模块,包括:图像二维物体检测模块510、长方体生成器512、质心生成器514、姿态估计模块516、定位模块518和锚点生成器524。这些模块可以包括存储在存储器502中的软件、硬件、或软件和硬件的组合。在一些示例中,相机设备104的模块包含机器学习模型,该机器学习模型可以包括NN,例如CNN。例如,图像二维物体检测模块510可以包括包含CNN的图像二维物体检测器模型。姿态估计模块516可以包括包含CNN的姿态估计模型。
长方体生成器512用于生成图像中的物体的长方体。质心生成器514被配置成生成长方体的质心。
锚点生成器524用于使用相机设备104的位置和取向在特征点的三维空间中生成锚点。例如,在相机三维坐标中生成锚点,然后将其转换为真实世界的三维坐标。可以将在真实三维空间中与边界框重叠的锚点用于定位方法,并且可以去除剩余的锚点。
在一些示例中,一个或多个模块由其它设备执行,例如由测绘设备108或云服务器执行。
在一些示例中,相机522和由相机522捕获的图像是第三方地图服务(例如谷歌地图TM)的一部分。使用API或其它软件应用程序接收或解析来自第三方地图服务的图像(和/或可以从第三方地图服务的三维视图中提取)。在这样的示例中,第三方地图服务通常还提供相机522的三维坐标(至少经度/纬度)和特定取向。用于生成物体在真实世界坐标中的位置和姿态的定位方法可以使用来自第三方地图服务的图像的摄影测量以及物体的位置和相机522的取向,而不需要任何传感器520。可以为定位方法连续解析第三方地图服务以生成最新的三维地图信息,该三维地图信息包含物体的位置和姿态。
相机设备104、测绘设备108和显示设备106的应用程序和模块可用于执行根据示例性实施方式的定位方法的各个方面。图6A和6B示出了根据定位方法的一示例性实施方式的最初定位物体并生成物体的三维模型。图7A和7B示出了根据定位方法的一示例性实施方式的随后定位物体。图8A和8B示出了由定位方法的姿态估计模块516执行的示例性姿态估计。图9A和9B示出了由定位方法的长方体生成器512执行的示例性长方体生成。图10A、10B和10C示出了根据定位方法的一示例性实施方式的使用静止真实物体定位相机设备104。
图6A示出了根据一示例性实施方式的由定位系统100执行的定位方法的示例,该定位方法用于初始定位物体并且初始生成物体的三维模型。相机522通过捕获来自真实世界的光(以及可选的不可见辐射)生成一个或多个图像102。传感器520从真实世界生成传感器信息。传感器520可以包括诸如LiDAR之类的扫描仪,以创建包含在每个图像中的感兴趣的真实物体的点云地图,该点云地图通常是在与从相机522捕获图像102相同的位置捕获的(虽然不一定必须如此)。在一些示例中,如本领域中所理解的,相机设备104的LiDAR扫描仪可以配有点地图生成器,该点地图生成器将来自相机设备104的在不同位置进行的各种扫描拼接在一起。LiDAR扫描仪从每个图像的点云地图创建物体的点云地图。物体的各种图像还可用于生成点云地图的颜色信息。在一些示例中,相机设备104或测绘设备108可以被配置成随后从每个图像的单独点云地图生成物体的点云地图(具有使用图像生成的颜色信息)。在一些其它示例中,定位模块518使用来自各种图像102(不使用LiDAR扫描仪)的摄影测量以生成点云地图。例如,可以使用Google ARCoreTM生成感兴趣的真实物体的点云地图。
在一示例中,定位模块518还可以包含ARCore。ARCore包含可用于相机取向估计的移动增强现实库,该移动增强现实库在大多数安卓TM设备或智能手机上都随时可用。ARCore是由谷歌TM产生的库,该库使用来自惯性测量单元(IMU)传感器(例如加速度计、磁力计和陀螺仪)的数据以及图像特征点,用于利用同步定位和测绘(SLAM)算法跟踪相机设备104的相机取向。ARCore能够实时执行相机取向估计。就此而言,为了跟踪相机设备104的移动,可以在Unity3D环境、Unreal环境或其它交互式三维环境中开发使用ARCore的安卓应用程序(即,定位模块518),用于捕获RGB图像以及相机设备104的真实世界位置。定位模块518可以为每个图像102生成或确定相机设备104在真实世界中的三维坐标系中的位置和相机取向。定位模块518可以为每个图像102生成或确定从相机设备104到真实世界中的三维坐标系中的物体的距离。
LiDAR扫描仪还可以用作距离检测器,以检测相机设备104与物体之间的距离。传感器520可以包含GPS或LPS,以在真实世界的三维坐标中定位相机设备104,从而生成相机位置。传感器520可以包括罗盘和/或加速度计,以生成相机设备104的取向。定位模块518使用传感器信息生成:i)相机位置、ii)相机取向、以及iii)相机到物体的距离。
作为使用一些或所有传感器信息的替代方案,在一示例中,定位模块518还可以使用来自静止真实物体的图像的摄影测量来定位相机设备104。在此结合图10A、10B和10C说明这种定位方法。
在图6A的定位方法中,图像二维物体检测模块510使用图像102为每个图像102生成:i)物体标签、ii)边界框、以及iii)图像中的特征点。在多个示例中,图像二维物体检测模块510是能够从图像中检测物体和特征点的图像二维物体检测器。生成物体标签的示例性实施方式还可以生成物体分数(标记物体的概率或置信度),但是为了清楚起见,在此没有示出。边界框是界定由图像二维物体检测模块510在图像102中检测到的物体的矩形。图像二维物体检测模块510可以包括CNN,例如,如本文中参照图11所述。在一示例中,如本领域中所理解的,图像二维物体检测模块510可以包括ResNET主干。
在一示例中,向真实世界中的每个物体唯一地分配物体标签。例如,当最初从相机设备104检测到物体时,可以最初为该物体分配唯一的物体标签。如果有多个相似的物体,那么可以为那些物体中的每一个物体分配唯一的物体标签。
在其它示例中,物体标签可以对于特定模型是特定的,并用于多个物体,例如,对于一排相同模型的椅子,可以为每把椅子分配相同的物体标签,并且两把真实椅子的交换不需要对相同的两把虚拟椅子的虚拟三维地图进行任何改变。在一些示例中,物体标签可能已经存在于物体库(例如物体数据库110)中,并且该物体标签最初被分配给该物体。
在图6A的定位方法中,姿态估计模块516使用图像102、物体标签、每个图像102中的边界框、相机位置、相机取向以及到物体的距离生成:i)物体的正面识别信息、以及ii)物体的姿态。该姿态是真实世界坐标中的真实姿态,例如俯仰、偏转(罗盘方向)、滚转。
正面识别信息可用于确定物体的姿态。正面识别信息的一示例是物体正面的图像或物体正面的边界框。正面识别信息的另一示例是物体正面的描述性文字,例如人的“脸”或“鼻子”、汽车的“发动机罩”。在其它示例中,出于生成姿态的目的,生成除正面之外的其它面,例如背面、顶面、底面、左面或右面等。正面识别信息的另一示例是物体正面的锚点。
姿态估计模块516可以包含CNN,例如,如本文中结合图8A和8B所述。如本领域中所理解的,姿态估计模块516可以包含ResNET主干。
在图6A的定位方法中,长方体生成器512使用图像102、物体标签、每个图像102中的边界框、相机位置、相机取向以及到物体的距离,为每个边界框生成三维空间中的长方体(例如由真实世界坐标中的对角部限定)。
在一些示例中,出于一致性目的,可以将长方体定义成使得物体的正面是长方体的垂直于水平地面的正面,并且物体的底面是长方体的平行于水平地面的底面。可以使用其它定义和标志来限定长方体。在其它示例中,使用物体的任意面来限定长方体。
在此结合图9A和图9B说明长方体发生器512的多个示例。在一示例中,长方体生成器512可以基于规则来生成长方体,例如基于三维空间中的边界框的拼接、估计和/或平均来生成。在一示例中,长方体生成器512可以包括长方体生成器模型,该长方体生成器模型包含CNN,以生成长方体。
在图6A的定位方法中,质心生成器514使用长方体生成质心。质心是长方体中心在三维空间中的位置。在一示例中,质心生成器514是基于规则的。例如,对于具有(X1,Y1,Z1)和(X2,Y2,Z2)对角线的长方体,该长方体的质心可以计算为((X2+X1)/2,(Y2+Y1)/2,(Z2+Z1)/2)。在其它示例中,质心生成器514包含质心生成器模型,该质心生成器模型包含用于使用长方体生成质心的CNN。
在其它示例中,质心生成器514包含质心生成器模型,该质心生成器模型包含使用图像102来估计质心的CNN。例如,质心生成器514的CNN不需要长方体或长方体生成器512,而是使用图像102、物体标签、图像中的物体的边界框、相机位置、相机取向和相机到物体的距离生成物体的质心。
锚点生成器524生成锚点,这些锚点是三维空间中的特征点。锚点生成器524使用特征点、相机位置、相机取向和到物体的距离来生成三维空间中的锚点。锚点生成器524还使用三维空间中的长方体来生成位于长方体内的锚点(例如在三维空间中重叠或包含在长方体内的锚点)。
联接模块530用于联接和输出任何生成的数据和任何传递的数据。例如,联接模块530用于向测绘设备108输出数据,以便测绘设备108最初生成物体的三维模型并测绘物体(位置和姿态)。在图6A的定位方法中,联接模块530联接并输出:i)物体的图像102、ii)物体标签、iii)三维空间中的锚点;iv)物体的长方体;v)长方体的质心;vi)正面识别信息;vii)姿态;以及viii)物体的点云地图(例如来自LiDAR扫描仪或摄影测量)。可以将联接模块530的输出发送至测绘设备108,用于存储物体的位置和姿态,并且用于生成和存储物体的三维模型。
图6B示出了用于图6A的定位方法的测绘模块114的一个详细实施例。测绘模块114可以被配置成生成和存储物体的定位、姿态和三维模型,以用于三维测绘目的。在相机设备104最初从相机设备104检测到物体之后,测绘模块114可以生成并存储物体的三维模型(例如点云地图)和物体的锚点。可以为后续的三维测绘目的检索三维模型,例如用于交互式和沉浸式三维地图,例如VR和AR。当最初检测到物体时,测绘模块114可以使用与真实世界的真实世界坐标对应的虚拟世界的虚拟坐标来存储物体的初始位置、姿态和锚点。对于后续的物体检测和定位,测绘设备108可以检测物体的质心或长方体以及姿态的变化,以更新三维地图。例如,测绘设备108不需要接收物体的整个点云地图来更新三维地图。
在图6B的定位方法中,测绘设备108从相机设备104(例如联接模块530的输出)接收以下数据:i)物体的图像102;ii)物体标签;iii)锚点;iv)长方体;v)质心;vi)正面识别信息;vii)姿态;以及viii)物体的点云地图。
三维模型生成器116使用物体的点云地图生成物体的三维模型。三维模型生成器116将物体的三维模型存储到物体数据库110中。三维模型可以是各种格式,例如基于矢量的模型、图元模型、多边形模型、计算机辅助设计(CAD)模型、实体模型、线框模型等。在一些示例中,三维模型生成器116将点云地图存储到物体数据库110中。
三维模型生成器116能够将从相机设备104接收的正面识别信息存储到物体数据库中。三维模型生成器116能够使用物体的正面识别信息和点云地图生成附加的正面识别信息,并将该附加的正面识别信息存储到物体数据库110中。例如,该附加的正面识别信息可以是三维模型的特定POV和/或表示物体正面的点云地图。例如,该附加的正面识别信息可以是物体正面的图像(渲染的或实际的)。例如,该附加的正面识别信息可以是物体正面的锚点。
在多个示例中,测绘模块114将物体的剩余信息存储到物体数据库110中,例如物体标签、锚点、长方体和质心。长方体可以是表示真实物体的大小和尺寸的矩形棱柱,并且在一些示例中可以包括独立于三维空间中的真实世界坐标的长方体。长方体不一定需要与三维空间中的三维坐标一起存储在物体数据库110中,虽然这样的实施方式是可能的。质心可以是三维空间中的长方体的中心。质心可以是长方体的中心,并且不一定需要与三维空间中的三维坐标一起存储在物体数据库110中,虽然这样的实施方式是可能的。同样,质心可以存储在物体数据库110中,或者可以根据需要计算。可以相对于三维空间的坐标或相对于三维模型(没有三维空间的坐标)存储锚点。
在一些示例中,长方体被调整或与三维模型的图像和物体的点云地图配准,例如,长方体的正面可以与物体的正面配准。长方体的底面可以与物体的底面配准。可以使用物体库或手动调整来丰富该调整或配准。
因此,物体数据库110包含物体的三维模型(以及其它特征),随后可以从物体数据库110中检索该三维模型,用于生成物体的虚拟三维地图。
在此示例中,请仍然参考图6B,当最初从相机设备104检测到物体时,测绘模块114向地图数据库112中存储:i)物体标签;ii)三维空间中的锚点;iii)三维空间中的质心;iv)三维空间中的长方体;以及iv)物体的姿态。地图数据库112可用于生成物体的虚拟三维地图。在多个示例中,当存在质心或姿态的后续位置时,地图数据库112可用于比较和检查位置或姿态是否有任何变化。如果有变化,那么可以为该物体更新虚拟三维地图。如果没有变化,那么不需要为该物体更新虚拟三维地图。三维空间中的长方体为物体的任何变化提供附加的比较信息。三维空间中的锚点为物体的任何变化提供附加的比较信息。
图7A示出了由定位系统100执行的定位方法的一详细示例,该定位方法用于随后定位在图6A和6B中被初始定位和三维建模的物体。例如,根据图6A和6B中的定位方法,测绘设备108将物体的三维模型存储在物体数据库110中,并将物体的位置和姿态存储在地图数据库112中。
相机522通过捕获来自真实世界的光(可选的不可见辐射)生成一个或多个图像102。传感器520从真实世界生成传感器信息。
LiDAR还可以用作距离检测器,以检测相机设备104与物体之间的距离。传感器520可以包含GPS或LPS,以在真实世界的三维坐标中定位相机设备104,从而生成相机位置。传感器520可以包括磁力计(例如指南针)、陀螺仪和/或加速度计,以生成相机设备104的取向。定位模块518使用传感器信息生成:i)相机位置、ii)相机取向、以及iii)相机到物体的距离。
作为使用一些或所有传感器信息的替代方案,在一示例中,定位模块518还可以使用来自静止真实物体的图像的摄影测量来定位相机设备104。在此结合图10A、图10B和图10C说明这种定位方法。
在图7A的定位方法中,图像二维物体检测模块510使用图像102为每个图像102生成:i)物体标签、ii)图像中的物体的边界框、iii)图像中的特征点。图像二维物体检测模块510可以包括CNN,例如,如本文中参照图11所述。如本领域中所理解的,图像二维物体检测模块510可以包括ResNET主干。在一示例中,图像二维物体检测模块510被训练成识别物体的正确物体标签。物体标签可以是先前从图6A的定位方法生成的,或者可以是从具有物体标签的物体库中获得的。在一些示例中,物体标签对于物体是唯一的。在其它示例中,物体标签对于特定模型可以是特定的,并用于该特定模型的多个物体,例如,对于一排相同模型的椅子,可以为每把椅子分配相同的物体标签。
在一些示例中,图像二维物体检测模块510还使用来自定位模块518的相机位置和来自地图数据库112的物体的最后已知位置。图像二维物体检测模块510可以将具有最后已知“接近”相机位置或在相机位置的距离阈值内的质心位置的任何物体生成为具有较高的物体分数。例如,当在活动场所内时,最后已知位于活动场所内的椅子比最后已知位于真实世界中的另一把椅子更有可能是同一把椅子(并且被赋予较高的物体分数)。
在图7A的定位方法中,姿态估计模块516使用图像102、物体标签、每个图像102中的边界框、相机位置、相机取向以及相机到物体的距离,生成i)物体的正面识别信息、以及ii)物体的姿态。该姿态是真实世界坐标中的真实姿态,例如俯仰、偏转(罗盘方向)、滚转。
姿态估计模块516可以使用正面识别信息确定物体的姿态。姿态估计模块516可以包含CNN,例如,如本文中结合图8A和图8B所述。如本领域中所理解的,姿态估计模块516可以包含ResNET主干。
在一些示例中,姿态估计模块516可以仅使用一个图像估计物体的姿态。
在图7A的定位方法中,长方体生成器512使用图像102、物体标签、每个图像102中的边界框、相机位置、相机取向以及到物体的距离,为每个边界框生成三维空间中的边界框(例如由真实世界坐标中的相对对角部限定)。长方体生成器512从三维空间中的边界框生成三维空间中的长方体(例如由真实世界坐标中的相对对角部限定)。三维空间中的边界框可以位于物体距相机设备104最近的点处的垂直平面上。
在一些示例中,出于一致性目的,可以将长方体定义成使得物体的正面是长方体的垂直于水平地面的正面,并且物体的底面是长方体的平行于水平地面的底面。可以使用其它定义和标志来限定长方体。
在其它示例中,使用物体的任意面来限定长方体。换句话说,由图7A中的长方体生成器512生成的长方体可能与由图6A中的长方体生成器512生成的长方体略有不同(处于不同角度)。不同时间的质心位置的差异通常可以在可接受的阈值内,以确定物体是静止的。
在一些示例中,长方体生成器512可以仅使用一个图像生成物体的长方体。
在此结合图9A和图9B说明长方体发生器512的示例。在一示例中,长方体生成器512可以基于规则生成长方体,例如使用消失点(VP)和摄影测量来生成。长方体生成器512例如可以基于三维空间中的边界框的拼接、估计和/或平均。在一示例中,长方体生成器512可以包含CNN,以生成长方体。
在图7A的定位方法中,质心生成器514使用长方体生成质心。质心是长方体中心在三维空间中的位置。在这个示例中,质心生成器514是基于规则的,或者可以包含机器学习模型,例如CNN。
在其他示例中,质心生成器514的CNN不需要长方体或长方体生成器512,而是使用图像、物体标签、图像中的物体的边界框、相机位置、相机取向和相机到物体的距离生成物体的质心。
锚点生成器524生成锚点,这些锚点是三维空间中的特征点。锚点生成器524使用特征点、相机位置、相机取向和到物体的距离来生成三维空间中的锚点。锚点生成器524还使用三维空间中的长方体仅生成长方体内的锚点(例如与三维空间中的长方体重叠或包含在该长方体中的锚点)。
联接模块530用于联接和输出任何生成的数据和任何传递的数据。例如,联接模块530用于向测绘设备108输出数据,以便测绘设备108为了三维测绘的目的确定物体(位置和姿态)是否有变化。在图7A的定位方法中,联接模块530联接并输出:i)物体标签;ii)长方体中的物体的三维空间中的锚点;iii)长方体的质心;iv)长方体;v)边界框;vi)(一个或多个)图像。在其它示例(未示出)中,联接模块530可以输出i)物体标签;ii)长方体中的物体的锚点;vii)姿态以及iii)长方体的质心、iv)长方体、或v)边界框以及vi)(一个或多个)图像中的至少一项或多项,这些信息中的任何一项或全部信息可以被测绘设备108用作附加信息,用于生成三维地图。
在一些示例(未示出)中,图像二维物体检测模块510还从每个图像102生成图像102的掩膜。掩膜是用像素值代替图像中的物体的二进制图像。在一些示例中,姿态估计模块516可以将掩膜用作附加数据。同样,长方体生成器512可以将掩膜用作附加数据。
图7B示出了用于图7A的定位方法的测绘模块114的一个详细示例。对于后续的物体检测和定位,测绘设备108可以检测物体的位置(质心或长方体)以及姿态的变化,以更新三维地图。例如,在这个阶段,测绘设备108不需要接收物体的整个点云地图来更新三维地图。
在图7B的定位方法中,测绘模块114从相机设备104(例如联接模块530的输出)接收以下数据:i)物体标签;ii)长方体中的物体的三维空间中的锚点;iii)长方体的质心;iv)长方体;v)边界框;vi)(一个或多个)图像;以及vii)姿态。在其它示例(未示出)中,联接模块530可以输出i)物体标签;ii)长方体中的物体的锚点;vii)姿态以及iii)长方体的质心、iv)长方体、或v)边界框以及vi)(一个或多个)图像中的至少一项或多项,这些信息中的任何一项或全部信息可以被测绘设备108用作附加信息,用于生成三维地图。
测绘模块114使用物体标签来查询最后已知位置(质心位置或长方体位置)、物体的已知锚点和物体的已知姿态的地图数据库112。作为响应,地图数据库112向测绘模块114返回最后已知的位置、已知的锚点和已知的姿态。地图数据库112还返回最后已知的位置处的适用的真实世界坐标的虚拟三维地图,该虚拟三维地图通常没有物体,但是包含背景、环境、地形,并且有时包含静止真实物体。
当测绘模块114确定位置(质心或长方体)、锚点或姿态有变化(或者变化超过相应的距离或角度阈值)时,测绘模块114还用新的变化后位置(质心或长方体)、新的锚点(变化后锚点)或新的姿态(变化后姿态)更新地图数据库112。测绘模块114可以使用物体标签来查询物体数据库110。作为响应,物体数据库110返回物体的三维模型(例如如图6B所示的生成并存储在物体数据库110中的模型),该三维模型可以包含已知的锚点。测绘模块114使用物体三维模型、物体位置(质心或长方体)、锚点、姿态和三维地图,生成带有该物体的三维地图。测绘设备108可以输出带有该物体的三维地图,例如通过传送至显示设备106来输出。在一些示例中,关于物体位置(质心或长方体)或姿态的变化的信息被发送至显示设备106,并且三维显示模块410(图4)在向显示器412输出三维地图时考虑质心或姿态的变化。
测绘模块114还可以使用三维空间中的长方体和来自相机设备104的图像作为附加信息来确定物体的位置或姿态是否有变化。例如,可以将长方体的面中的一个识别(例如正面识别信息)为物体的正面,并且可以将其用于生成物体的姿态。
当位置(质心或长方体)或姿态没有变化(或在相应的距离或角度阈值之内)时,三维地图中的物体不会变化。例如,向显示设备106输出未改变的三维地图并且不需要更新/刷新,或者向显示设备106输出表明物体的位置和姿态未改变并且因而不需要更新/刷新三维地图的消息。当三维空间中的长方体没有变化时,可以实施类似的。
可以理解,如图7A所示,测绘设备108生成包含物体的三维地图可以接近实时地与相机设备104捕获(一个或多个)图像102一起执行。例如,对于图7A和7B的定位方法,测绘设备108不需要接收物体或环境的三维点云地图,该三维点云地图是数据密集型的。相反,测绘设备108可以接收物体标签、锚点以及长方体或质心和姿态,以确定物体是否已经移动,从而更新三维地图。
在一示例中,测绘模块114(其可以在测绘设备108和/或相机设备104中)执行物体的跟踪。在一示例中,测绘模块114通过跟踪物体的以下特征来进行跟踪:i)长方体的八个角部、ii)长方体的质心、以及iii)物体的二维边界框中的特征点。如果定位方法发现这些特征处于与这些特征在先前时间的先前位置相同的位置(或在阈值之内),那么物体的位置是相同的。如果定位方法发现这些特征处于与这些特征在先前时间的先前位置不同的位置(或超出阈值),那么物体的位置已经改变,并且物体在地图数据库112中的位置被相应地更新。在一示例中,测绘模块114不需要接收三维点云地图以跟踪物体。
应认识到,为每个图像中的每个检测到的物体估计长方体可能导致诸如抖动和计算模糊等问题。为了减少这种问题的发生,可以将测绘模块114配置成减少对每个图像执行图像二维物体检测的需要,并且测绘模块114不需要为每个图像生成长方体。相反,对物体的特征进行跟踪,例如:i)长方体的八个角部、ii)长方体的质心、以及iii)二维边界框中的特征点。
这种跟踪通过最初时检索被检测物体的边界框的当前已知的二维坐标而使得定位方法更高效。定位方法用于在每经过一帧时、或在每经过多个设定帧时、或在确定的时间间隔之后、或仅当在未来的图像帧中检测到新物体时更新物体的位置。跟踪二维边界框中的特征点可以为跟踪结果提供更高的稳定性,以降低结果对不利状况的敏感性,例如视点变化、遮挡、噪声等。
如果姿态已经改变,那么还更新姿态,如在本文中结合定位方法的示例所述的。
在另一示例中,数字三维地图(包含物体)优先于真实世界。当真实物体位置不同于虚拟物体位置时,测绘设备108向用户、机器或物体本身发送指令,以使物体返回期望的真实位置,从而与虚拟物体位置相符。一示例可以应用于活动场所规划场景。椅子可能具有用于场所设置的期望位置。虚拟三维地图存储期望的虚拟位置。椅子可能被意外移动了。测绘设备108使用定位方法确定真实位置不同于虚拟位置。作为响应,测绘设备108向用户、机器或椅子本身(如果是电动的)发送指令,以返回期望的虚拟位置。可以对真实物体再次执行图7A和图7B的定位方法,以确定物体已经移动至期望的位置和姿态。在一些示例中,AR应用使得虚拟椅子的期望位置和姿态被叠加在显示设备106的显示输出中。
图8A示出了根据一个示例性实施方式的定位方法的姿态估计模块516的详细示例。正面检测模块802用于从图像生成正面识别信息。最初时可以生成或计算姿态,作为从相机设备104的POV观察的POV姿态814,例如相对于从相机设备104到物体的视线的姿态。可以使用三维空间转换器830将POV姿态814转换成三维空间816中的真实世界姿态(在本文中也被简称为“姿态”),其中三维空间转换器830使用数学或NN(例如CNN)。
图8B示出了根据一个示例性实施方式的姿态估计模块516的实例姿态估计器806的示意图。具体而言,实例姿态估计器806从相应边界框中的物体的每个图像生成相应姿态。如图8B所示,姿态可以包括偏转602、俯仰604和滚转606的姿态角。每个姿态角可以是角度值,例如度、弧度或其它适当的标度。
真实和虚拟姿态角可以使用世界的公共参考点,例如偏转602的真实正北和虚拟正北,例如,0度是正北。滚转606和俯仰604可以使用真实地面和虚拟地面作为公共参考点,例如,0度平行于地面。在一示例中,正角度值遵循左手定则,其中拇指指向相应的轴线。在一示例中,检测至少一个但不是所有的特定姿态角。例如,在一些情况下,仅检测偏转602(罗盘方向)。在其它示例中,可以为姿态使用其它坐标方案,例如罗盘方向角(偏转602)和仰角(俯仰604)。
请再次参考图8A,正面检测模块802使用至少一个图像102、物体标签和每个图像中的边界框生成正面识别信息。正面检测模块802可以包含正面检测模型,该正面检测模型包含NN,例如CNN。例如,可以对CNN进行训练,以返回表示正面识别信息的向量。在一示例中,正面识别信息可以仅包含图像正面的边界框。在一示例中,正面识别信息是物体正面的锚点。在一示例中,正面识别信息可以包含描述性文字,例如人的“脸”或“鼻子”、或汽车的“发动机罩”。在一示例中,正面检测模块802可以查询物体数据库110,以检索以下示例性正面识别信息中的任何一项:描述性文字、物体的三维模型的正面的POV、物体的正面的图像、或物体的仅正面的三维模型或点云地图。
姿态估计模块516包括实例姿态估计器806,该实例姿态估计器确定物体在三维空间816中的姿态。实例姿态估计器806包含偏转CNN 808、俯仰CNN 810和滚转CNN。实例姿态估计器806接收i)图像102、ii)正面识别信息、iii)物体标签、以及iv)每个图像中的边界框。偏转CNN 808生成POV姿态814中的偏转(相机设备104的视角)。俯仰CNN 810生成POV姿态814中的俯仰822(相机设备104的视角)。滚转CNN 812生成POV姿态814中的滚转(相机设备104的视角)。三维空间转换器830使用POV姿态814、相机位置、相机取向、以及相机设备到物体的距离生成三维空间中的姿态816。三维空间转换器830使用数学或NN,例如CNN。姿态估计模块516可以使用更多图像102为三维空间816中的姿态提供更好的精度。在一些示例中,仅使用一个图像102生成三维空间816中的姿态。
图9A示出了根据一个示例性实施方式的用于定位方法的长方体生成器512的示意性示例。长方体生成器512生成三维空间中的长方体,该长方体可以由长方体的两条相对对角线的真实世界坐标限定,例如(X1,Y1,Z1)和(X2,Y1,Z2)。三维空间中的长方体从图像102中界定物体。例如,在图9A中,长方体生成器512从一个或多个图像102和它们各自的边界框204生成物体的一个或更多个消失点(VP)。对于三维物体,可以使用三个VP点来完全限定物体的长方体。在一些示例中,可以使用一个或两个VP。在图9A中,长方体生成器512使用一个或多个VP和相机位置、相机取向、以及到物体的距离生成三维空间中的长方体。
由Yang等人在《IEEE机器人学汇刊》35.4(2019)的第925-938页发表的“Cubeslam:Monocular 3-d object slam(Cubeslam:单目三维物体即时定位与地图构建)”中说明了生成一个或多个VP的实施例,该文献通过引用并入本文。在一示例中,长方体的目标是使得三维长方体的投影角部应紧密适配二维边界框。一般的三维长方体可以由9个自由度(DoF)参数表示:3DoF位置=t=[tx,ty,tz];3DoF旋转R;以及3DoF尺寸=d=[dx,dy,dz]。
为了完全约束所有9个参数,需要更多信息以及被检测物体的二维边界框。在一些示例中,使用提供或预测的物体尺寸和取向。在这个实施例中,VP点不是依赖于预测的尺寸,而是用于改变和减少回归参数,以便对一般物体起作用。VP是在投影到透视图像上后平行线的交点。三维长方体具有三个正交轴,并且可以在投影后根据相对于相机框架的物体旋转矩阵R和校准矩阵K形成三个VP:
VPi=KRcol(i)i∈{1,2,3},其中Rcol(i)是R的第i列。
VP由物体旋转矩阵R确定。
为定位方法生成长方体的另一个示例性实施方式使用VP,并且选择(过滤)在给定的角度阈值内与二维空间中的屏幕法线有角度差的那些长方体。例如,对于一个检测到的二维边界框,生成许多候选长方体(建议长方体)。然后使用如下给出的成本函数对这些候选长方体进行排序:
E(C|I)=dist(C,I)+wt1angle(C,I)+wt2shape(O) (1)
其中图像被表示为I,候选长方体被表示为C,物体被表示为O。考虑的三种成本是:
1)距离误差(dist):测量二维空间中的长方体边缘与图像边缘的对准;
2)角度对准误差(angle):测量长线段的角度是否与消失点对准;和
3)形状误差(shape):处理相似的二维长方体角部可能产生很大不同的三维长方体的事实。在一示例中,wt1和wt2是权重参数,例如,设置为wt1=0.8,wt2=1.5。
在一示例中,使用快速线检测器(FLD)功能(来自Lee,J.等人在IEEE于2014年举行的《2014年IEEE机器人与自动化国际会议(ICRA)》的会刊的第5550-5557页发表的“OutdoorPlace Recognition in Urban Environments Using Straight Lines(在城市环境中使用直线进行户外地点识别)”,其全部内容通过引用并入本文)来检测线段,而不是使用Yang等人所用的线段检测器(LSD)功能(见上文)。例如,与LSD相比,FLD更快,而没有明显的性能下降(参见Luo等人在IEEE Access 2019第7卷第185108-185120页上发表的“Accurate linereconstruction for point and line-based stereo visual odometry(基于点和线的立体视觉里程计的精确线重构)”,其全部内容通过引用并入本文)。
在一示例中,通过使用式(1)中的成本函数来对候选长方体进行排序。在另一示例中,长方体生成器512可以使用检测到的三维空间中的平面法线(3D_normal)和投影在屏幕空间上并且相对于屏幕空间的屏幕法线(例如二维空间中的屏幕法线)(screen_normal,也被称为camera_normal)在应用式(1)的成本函数之前最大限度地减少候选长方体的数量,因为式(1)的成本函数可能是计算密集型的,因为它是用于三维空间的。在一示例中,检测的平面是水平地面,并且三维法线与水平地面正交。
例如,将成本函数的距离(dist)和角度(angle)成本应用在二维图像空间中(例如从屏幕视点)。因此,在应用这两个成本之前,长方体生成器512使用screen_normal减少候选长方体的数量。测绘设备108使用下式评估由屏幕法线与二维图像空间中的x轴构成的角度θscreen
θ=atan2(y2d,x2d ) (2)
其中点(x2d,y2d)表示投影的屏幕法线。长方体生成器512还使用同一个公式(式(2))计算投影在二维图像空间中的消失点中心(消失点的中心)相对于屏幕中心的角度(θvp_screen)。接下来,长方体生成器512计算这两个角度之间的角度差,并且,对于将被选择以进行进一步处理的特定候选长方体,该角度差的值不超过给定的角度阈值(或在给定的角度阈值内)。不选择超过角度阈值的候选长方体。在一示例中,该角度阈值是20°或大约20°(例如在用不同的值进行实验之后选择)。在一示例中,该角度差是相对于x轴计算的。
在一示例中,长方体生成器512使用3D_normal进一步最大限度地减少候选长方体的数量。该3D_normal是使用ARCore从检测的平面(水平地面)计算的。为三维法线计算的方向角是α、β和γ,它们分别代表法线与正x、y和z轴形成的角度,并如下给出:
α=cos-1(x3d/mag_P3d);
β=cos-1(y3d/mag_P3d);
γ=cos-1(z3d/mag_P3d);(3)
其中P3d(x3d,y3d,z3d)表示3D_normal,mag_P3d表示法向量的幅值。长方体生成器512使用同一个公式(式(3))计算候选长方体与正x、y和z轴构成的方向角。生成(在二维空间中选择或过滤的)每个候选长方体的相应质心。生成从相机位置到每个质心的相应质心角。接下来,计算三维空间中的三维法线(三个笛卡尔坐标)的相应方向角和质心角之间的角度差。选择那些具有在角度阈值之内的(一个或多个)角度差的候选长方体,用于进一步计算式(1)的成本函数。不选择那些超过角度阈值的候选长方体。在多个示例中,用于这种情况的角度阈值也是20°(例如在用不同的值进行实验之后)。对于特定的候选长方体,如果角度差值保持在角度阈值之内,那么选择该候选长方体,并根据如式(1)中定义的成本函数对其进行排序。在一示例中,所有三个笛卡尔坐标都必须在角度阈值之内才能被选择用于成本函数。
在另一示例中,使用其它优化方法和/或NN来优化式(1),以便为图像中的物体选择(生成)最佳长方体。
在图17中详细示出了用于定位方法1700的一个实施例的这种长方体生成的示例。图17示出了根据一个示例性实施方式的由测绘设备108执行的用于生成真实物体的长方体的定位方法1700的示例性详细框图。通常,测绘设备108生成多个候选长方体,并选择使成本函数(例如式(1))最优的候选长方体作为该物体的长方体。可以将该长方体存储在物体数据库110和地图数据库112中,并用于后续的物体跟踪。在另一示例中,定位方法1700由相机设备104执行,该相机设备能够生成所选择的长方体并将其发送至测绘设备108。
在一示例中,在步骤1702处,测绘设备108接收包含物体的图像。在步骤1704处,测绘设备108在二维空间中生成图像的屏幕法线(又被称为相机法线)。在步骤1706处,测绘设备108使用图像二维物体检测模块和该图像生成:i)在图像中检测到的物体的物体标签、ii)在图像中检测到的物体的各个边缘的二维空间中的线段、以及iii)物体的二维空间中的边界框。在步骤1708处,测绘设备108使用长方体生成器、该图像和该图像的边界框生成:i)在二维空间中界定物体的多个候选长方体、ii)多个候选长方体中的每一个的相应消失点、iii)消失点的相应消失点角度。在步骤1710处,测绘设备108选择具有在角度阈值(例如20度)之内的角度差(从屏幕中心到二维空间中的相应消失点中心)的候选长方体。在步骤1712处,测绘设备108进一步从选定的候选长方体中选择(第二选择)那些在真实三维空间中具有在第二角度阈值(在一示例中也是20度)之内的第二角度差(在相应的质心角与三维法线之间)的选定的候选长方体。在步骤1714处,对于来自步骤1712的每个选定的候选长方体,测绘设备108使用长方体生成器为该图像生成:i)二维空间中的选定的候选长方体在真实三维空间的真实世界坐标、以及ii)真实三维空间的真实世界坐标中的选定的候选长方体与真实三维空间中的物体之间的相应成本函数值。在步骤1716处,测绘设备108将物体与i)物体标签和ii)真实三维空间的真实世界坐标中具有最优的相应成本函数值的选定的候选长方体相关联。测绘设备108可以被配置成将物体标签和选定的候选长方体存储到物体数据库110和地图数据库112中。物体标签和选定的候选长方体可以随后用于在本文中说明的定位方法以及用于在真实三维空间的真实世界坐标中跟踪物体。
在一些示例中,在步骤1712中,为笛卡尔三维坐标中的每一个计算第二角度差,并且候选长方体的所有第二角度差必须在第二角度阈值内才能被选择用于下一个步骤1714。
在一些示例中,步骤1712是可选的。
在一示例中,定位方法1700还包括由测绘设备108或相机设备104跟踪具有最优的相应成本函数值的选定的候选长方体。
在一示例中,使用快速线检测器功能生成线段。
在一示例中,成本函数值基于距离误差、角度对准误差和/或形状误差。
图9B示出了根据一个示例性实施方式的用于定位方法的替代示例性长方体生成器512的示意性示例。长方体生成器512生成三维空间中的长方体,该长方体可以由长方体的两条相对对角线的真实世界坐标限定,例如(X1,Y1,Z1)和(X2,Y1,Z2)。三维空间中的长方体从图像102中界定物体。
如前文所述,可以从相机设备104的POV与物体202之间的各种取向和距离拍摄图像102(1)、102(2)、102(3)。在图9B中,长方体生成器512使用每个图像102(1)、102(2)、102(3)中的边界框204、相机位置、相机取向和相机到物体的距离生成三维空间中的边界框204(1)、204(2)、204(3)、204(4)。为了简单和清楚起见,三维空间中的边界框204(1)、204(2)、204(3)、204(4)被示为直线的,并且,在大多数情况下,将从包括相对于物体202的倾斜角在内的多种角度拍摄三维空间中的边界框204(1)、204(2)、204(3)、204(4)。长方体生成器512使用三维空间中的边界框204(1)、204(2)、204(3)、204(4)生成三维空间中的长方体。长方体生成器512使用数学或NN,例如CNN。该数学可以包括对三维空间中的边界框204(1)、204(2)、204(3)、204(4)进行平均和估计。该数学可以包括进行成本优化以选择最佳长方体。长方体生成器512可以使用更多图像102为三维空间中的长方体提供更好的精度。
在一些示例中,仅使用一个图像102生成三维空间中的长方体。例如,长方体生成器512使用物体标签、来自姿态估计模块的姿态、使用物体标签从物体数据库110检索的已知长方体尺寸、相机位置、相机取向和相机到物体的距离,生成三维空间中的长方体(未示出此方法)。
图10A示出了根据一个示例性实施方式的由相机设备104执行的用于定位相机设备104的定位方法的示意图。在一个示例性实施方式中,使用具有已知位置和姿态的静止真实物体1000在三维空间中的真实世界坐标中定位相机设备104。例如,先前已经使用如图6A和6B所示的定位方法对静止真实物体1000进行初始扫描以生成三维模型,并将该三维模型存储在物体数据库110和地图数据库112中。
在一示例中,如图10A所示,相机设备104具有POV 1002,该POV具有能够看到物体202和静止真实物体1000的视野。在其它示例(在此未示出)中,相机设备104可以首先具有对静止真实物体1000的POV 1002以定位相机设备104,然后用户(或机器)可以在同一位置枢转相机设备104以具有对物体202的POV,以便随后使用相机设备104的现在已知位置来定位物体202。在一些示例中,所述定位方法仅用于使用静止真实物体1000来定位相机设备104的位置和取向,并且不存在需要定位的物体202。
在一些示例中,图10A、10B和10C的定位方法不需要GPS或LPS。在一些示例中,不需要LiDAR扫描仪。在一些示例中,不需要罗盘、(一个或多个)陀螺仪和(一个或多个)加速度计。因此,在一些示例中,不需要传感器520(除了用于捕获图像102的相机522之外)。
图10B示出了根据一个示例性实施方式的由相机设备104捕获并由图10A的定位方法处理的示例性图像102。在图2B中,相机设备104捕获包含物体202和静止真实物体1000的图像102。相机设备104对图像102进行图像二维物体检测以识别静止真实物体1000,生成真实物体1000的边界框1004,并生成图像中的特征点。图像102是从相机设备104的特定POV1002捕获的。相机设备104可以通过使用图像102生成真实物体1000的物体标签来识别静止真实物体1000。根据物体标签,相机设备104可以检索关于静止真实物体1000的已知信息,以便生成相机设备104的位置和取向。
图10C示出了根据一示例性实施方式的由相机设备104执行的图10A的定位方法的示例性详细框图,该定位方法用于生成相机设备104的位置和取向。相机522通过捕获来自真实世界的光来生成真实的静止真实物体1000的图像102。在图10C的定位方法中,图像二维物体检测模块510使用图像102生成:i)真实的静止真实物体1000的物体标签、ii)图像中的真实的静止真实物体1000的边界框、iii)图像中的特征点。锚点生成器524生成特征点的锚点。锚点位于相机三维坐标中,是从相机的POV观察的。锚点生成器524使用物体标签、边界框和特征点生成锚点。
姿态估计模块516使用图像102、物体标签和边界框生成:i)正面识别信息。已经参照图8A详细说明了正面识别信息,例如,正面识别信息是使用正面检测模块802生成的。姿态估计模块516(例如图8A中的实例姿态估计器806)进一步使用正面识别信息生成:ii)POV姿态814。POV姿态814是静止真实物体1000相对于相机设备104的视野1002的姿态。例如,POV姿态814可以是图像102中的相对于从相机设备104到静止真实物体1000的视线的姿态。在一些示例中,特征点也用于生成正面识别信息。
定位模块518使用物体标签从地图数据库112中检索存储的静止真实物体1000的三维空间中的长方体1006和存储的静止真实物体1000的三维空间中的姿态。在一示例中,存储的三维空间中的长方体1006的一个面被指示为静止真实物体1000的正面(前面)。应注意,存储的三维空间中的长方体1006固有地具有静止真实物体1000的真实世界矩形尺寸。应注意,三维空间中的姿态处于静止真实物体1000的正面(正面识别信息)所面对的位置。
定位模块518使用图像、物体标签、图像中的边界框、POV姿态814、正面识别信息、相机三维坐标中的锚点、存储的三维空间中的锚点、存储的静止真实物体1000的三维空间中的长方体1006和/或存储的静止真实物体1000的三维空间中的姿态,生成i)真实世界坐标的三维空间中的相机位置、以及ii)真实世界坐标的三维空间中的相机取向。在一些示例中,图2C的平移方法可用于将POV姿态814平移至真实世界坐标的三维空间。
在一些示例中,定位模块518使用物体标签从地图数据库112中检索静止真实物体1000的质心的最后已知的三维坐标。定位模块518还从图像102生成或估计静止真实物体1000的质心。定位模块518进一步使用该质心和已知质心(除了图10C中所示的信息之外)来生成i)三维空间中的相机位置、以及ii)三维空间中的相机取向。
在一些示例中,定位模块518使用物体标签从地图数据库112中检索静止真实物体1000的三维坐标中的锚点。定位模块518将相机三维坐标中的锚点与已知锚点进行比较,以生成i)三维空间中的相机位置、以及ii)三维空间中的相机取向。在一些示例中,锚点是能够单独跟踪的。在一些示例中,物体正面的特定锚点被跟踪,并用于生成三维空间中的相机位置和三维空间中的相机取向。
在多个示例中,定位模块518可以使用规则(数学)或者可以包含定位模型,该定位模型包含NN,例如CNN。
在一些示例中,在图10C的定位方法中不需要传感器520以用于相机设备104来确定相机设备104的位置和姿态。
请再次参考图10B,相机位置和相机取向现在是已知的。相机设备104与物体202之间的距离可以使用摄影测量来生成,例如,生成物体202的消失点,以确定相机设备104与物体202之间的距离。在一些示例中,物体202的尺寸是已知的(通过从物体数据库110中查询长方体1006或尺寸),因此可以使用摄影测量(例如透视尺寸)来生成相机设备104与物体202之间的距离。在一些示例中,可以使用Google ARCore。
在其它示例中,可以使用LiDAR来确定相机设备104与物体202之间的距离。现在可以使用结合图7A说明的定位方法并利用i)相机位置、ii)相机取向、以及iii)相机到物体的距离的知识对其进行适当修改,来确定物体202的位置和姿态。
图11示出了根据一示例性实施方式的在由定位系统100执行的定位方法中使用的CNN模型的示例性详细框图。例如,所说明的模块或应用程序中的至少一个或多个可以包含CNN。CNN是具有卷积结构的深度神经网络,并且是一种深度学习架构。该深度学习架构指示通过使用机器学习算法在不同的抽象层执行多层学习。作为一种深度学习架构,CNN是一种前馈(feed-forward)人工神经网络。该前馈人工神经网络中的每个神经细胞能够对输入给该神经细胞的图像做出响应。
如图11所示,CNN 1100可以包括输入层1110、卷积层/池化层1120(该池化层是可选的)和全连接网络层1130。在多个示例中,输入层1110能够接收图像102,并且能够接收其它信息(取决于特定模块或模型)。
图11所示的卷积层/池化层1120例如可以包括层1122(1)、1122(2)、......、1122(n)。例如:在一种实现方案中,层1122(1)是卷积层,层1122(2)是池化层,层1122(3)是卷积层,层1122(4)是池化层,层1122(5)是卷积层,层122(6)是池化层,等等。在另一种实现方案中,层1122(1)和1122(2)是卷积层,层1122(3)是池化层,层1122(4)和1122(5)是卷积层,层1122(6)是池化层。在实施例中,来自卷积层的输出可以用作后面的池化层的输入,或者可以用作另一个卷积层的输入,以继续卷积运算。
下面使用层1122(1)作为卷积层1122(1)的实例来说明卷积层的内部工作原理。卷积层1122(1)可以包括多个卷积算子。卷积算子也被称为内核。卷积算子在图像处理中的作用相当于从输入图像矩阵中提取特定信息的过滤器。在本质上,卷积算子可以是权重矩阵。权重矩阵通常是预定义的。在对图像执行卷积运算的过程中,根据输入图像的水平方向的步长值,通常以逐个像素的方式(或每两个像素的方式)处理权重矩阵,以从图像中提取特定特征。权重矩阵的大小需要与图像的大小相关。应注意,权重矩阵的深度尺寸与输入图像的深度尺寸相同。在卷积运算过程中,权重矩阵扩展到输入图像的整个深度。因此,在对单个权重矩阵执行卷积之后,输出具有单个深度尺寸的卷积输出。但是,在大多数情况下不是使用单个权重矩阵,而是使用具有相同尺寸(行×列)的多个权重矩阵,换句话说,多个相同模型的矩阵。所有权重矩阵的输出被堆叠以形成卷积图像的深度尺寸。可以理解,在此的尺寸由前述的“多个”确定。不同的权重矩阵可以用于从图像中提取不同的特征。例如,一个权重矩阵用于提取图像边缘信息,另一个权重矩阵用于提取图像的特定颜色,再一个权重矩阵用于模糊图像中不需要的噪声,等等。多个权重矩阵具有相同的大小(行×列)。在通过具有相同尺寸的多个权重矩阵执行提取之后获得的特征图也具有相同的大小,并且,具有相同大小的多个提取的特征图被组合以形成卷积运算的输出。
在实际应用中,权重矩阵中的权重值需要通过大量的训练来获得。由通过训练获得的权重值形成的权重矩阵可以用于从输入图像中提取信息,从而CNN 1100执行准确的预测。
当CNN 1100具有多个卷积层时,初始卷积层(例如1122(1))通常提取较大量的公共特征。公共特征也可以被称为低级特征。随着CNN 1100的深度增大,通过更深的卷积层(例如1122(6)或1122(n))提取的特征变得更加复杂,例如,具有高级语义的特征等。具有较高级语义的特征更适用于待解决的问题。
还说明了池化层的一个实施例。由于通常需要减少训练参数的数量,因此池化层通常需要周期性地跟随卷积层。具体而言,在层1122(1)、......、1122(n)处,一个池化层可以跟随一个卷积层,或者一个或更多个池化层可以跟随多个卷积层。在图像处理过程中,池化层的作用是减少图像的空间大小。池化层可以包括平均池化算子和/或最大池化算子,以对输入图像进行采样,从而获得较小尺寸的图像。平均池化算子可以计算图像中的特定范围内的像素值,以生成平均值,作为平均池化结果。最大池化算子可以获得在特定范围内具有最大值的像素,作为最大池化结果。此外,就像卷积层中的权重矩阵的大小需要与图像的大小相关一样,池化层的运算符也需要与图像的大小相关。由池化层处理后输出的图像的尺寸可能小于向池化层输入的图像的尺寸。由池化层输出的图像中的每个像素表示与向池化层输入的图像对应的子区域的平均值或最大值。
现在说明全连接网络层1130。在图像被卷积层/池化层1120处理之后,CNN 110000仍然不能输出期望的输出信息。如上文所述,卷积层/池化层1120仅提取特征,并减少由输入图像带来的参数。但是,为了生成最终的输出信息(期望的类别信息或其它相关信息),CNN 1100需要通过使用全连接网络层1130来生成一个或一组期望类别的量的输出。因此,全连接网络层1130可以包括多个隐藏层(例如图11中的1132(1)、1132(2)、......、1132(n))和输出层1140。包含在所述多个隐藏层中的参数可以通过基于特定任务类型的相关训练数据执行预训练来获得。例如,任务类型可以包括图像识别、图像分类、图像超分辨率重建等。
输出层1140跟随所述多个隐藏层1132(1)、1132(2)、......、1132(n)。换句话说,输出层1140是整个CNN 1100中的最后一层。输出层1140具有类似于类别交叉熵的损失函数,并且专门用于计算预测误差。一旦在整个CNN 1100中完成前向传播(在图11中从1110到1140的方向的传播是前向传播),就开始后向传播(在图11中从1140到1110的方向的传播是后向传播),以更新前面的层的权重值和偏移量,从而通过使用输出层来减少CNN 1100的损失以及理想结果与由CNN 1100输出的结果之间的误差。
应注意,图11所示的CNN 1100仅用作CNN的一个示例。在实际应用中,CNN可能以另一种网络模型的形式存在。
图12A、12B和12C示出了根据一个示例性实施方式的由定位方法使用的来自第三方地图服务(例如谷歌地图)的示例性信息和图像。图12B示出了包含使用定位方法定位的物体(例如自行车1204)的街道视图的第一POV。图12C示出了街道视图和物体的第二视点图。定位方法可以使用来自另外的POV或变焦距离的附加图像。
在一些示例中,请再次参考图7A以及图12A、图12B和图12C的示例性信息和图像,相机522来自第三方地图服务(例如谷歌地图TM),并且由相机522捕获的图像是第三方地图服务(例如谷歌地图TM)的一部分。例如,第三方地图服务(例如谷歌地图)能够提供诸如街景(直线立面图或鱼缸图)和卫星图等视点(POV)的世界图像。还可能有其它POV可用。所述定位方法使用API或其它软件应用程序接收或解析来自第三方地图服务的图像(和/或可以从第三方地图服务的三维视图中提取)。在这样的示例中,定位模块518从第三方地图服务获得从相机522的POV的三维坐标(X,Y,Z,或者,当图像被假定在地平面上时,至少有经度/纬度)和相机522的特定取向。图7A和7B中的定位方法的其余部分保持与上述内容相同,并可用于从第三方地图服务的图像连续更新物体的位置和姿态。例如,长方体生成器512使用物体的图像在三维空间中生成物体的长方体。质心生成器514使用长方体生成三维空间中的物体的质心。姿态估计模块516使用物体的图像生成物体在三维空间中的姿态。测绘模块114可以使用质心和姿态确定物体是否需要在三维地图中更新。因此,可以在三维地图中方便地自动更新世界中的物体的数字孪生体。在多个示例中,传感器520不是必需的。相机设备104和测绘设备108可以连续使用(解析)来自第三方地图服务的图像,以生成最新的三维地图,该三维地图包含物体的位置和姿态。该三维地图可以用于XR(例如VR或AR)应用。
图12A示出了由谷歌地图提供的真实世界位置的地图视图。该地图视图包含建筑物1200,该建筑物是静止物体。由谷歌地图提供的大楼1200的位置名称为“加拿大银行大楼”,其真实世界坐标1202(位置)为纬度43.65029,经度-79.38680。第三方地图应用还可以提供相机位置的坐标。图12B和12C示出了来自谷歌地图的在建筑物1200的真实世界坐标1202处捕获的示例性街道视图图像。图12B示出了从相机522到建筑物1200的第一POV的第一图像1210,其中第一图像1210包含自行车1204(为了清楚起见,在边界框中示出)。图12C示出了从相机522到建筑物1200和自行车1204的第二POV(不同位置和取向)的第二图像1212。如图12B和12C所示,谷歌地图还提供相机522的特定POV的罗盘方向1206。使用地面作为参考,第一图像和第二图像中的相机522的Z方向近似为零。在其它实施例中,相机522的高度是如上文中结合图2C所说明的那样生成的,并且可以用于确定检测的物体的比例。
请再次参考图7A,在一些示例中,从谷歌地图接收第一图像1210和第二图像1212,用于图像二维物体检测模块510和姿态估计模块516。图像二维物体检测模块510和姿态估计模块516可以使用从更远的POV或变焦距离得到的附加图像。图像二维物体检测模块510在每个图像1210、1212中生成自行车1204的物体标签和边界框。建筑物1200和自行车1204被预先测绘并三维建模,并存储在物体数据库110和地图数据库112中,例如使用图6A和图6B的摄影测量和/或定位方法进行。定位模块518还从谷歌地图接收POV的真实世界坐标1202和罗盘方向1206,以生成相机位置和相机取向。到物体(自行车1204)的距离可以使用摄影测量法生成,例如利用来自物体数据库110的自行车1204和/或建筑物1200的尺寸的知识来生成,如上文所述。
图7A和图7B中的定位方法的其余部分保持与上述内容相同,并可用于从谷歌地图的图像不断更新自行车1204的位置和姿态。例如,长方体生成器512使用自行车1204的图像1210、1212在三维空间中生成自行车1204的长方体。质心生成器514使用长方体在三维空间中生成自行车1204的质心。姿态估计模块516使用自行车1204的图像1210、1212生成自行车1204在三维空间中的姿态。测绘模块114可以使用质心和姿态确定自行车1204是否需要在三维地图中更新。因此,可以在三维地图中方便和自动地更新真实世界中的自行车1204的数字孪生体。图7A和图7B的定位方法可以连续使用(解析和接收)来自谷歌地图的图像,以生成最新的三维地图,该三维地图包含自行车1204的位置和姿态。该三维地图可用于XR应用。
如图12B和图12C所示,谷歌地图可用于从相机522的特定视点放大或缩小。例如,可以从相机522的相同取向和到物体的不同变焦距离(相对于相机522)拍摄多个图像。定位方法可以使用相同取向和不同变焦距离的多个图像来提供更高的精度。类似的示例适用于操作相机设备104的用户使用相机设备104的镜头或数字变焦功能在相机522的相同取向和不同距离(物理地移动相机设备104)或不同变焦距离从相机522捕获图像。
图13示出了根据一个示例性实施方式的由相机设备104执行的用于定位真实物体的定位方法1300的示例性详细框图。在步骤1302处,相机设备104接收至少一个包含物体的图像。例如,从相机522接收至少一个图像。在步骤1304处,相机设备104使用定位模块518为每个图像生成真实三维空间的真实世界坐标中的相机位置、相机取向和相机到物体的距离。在步骤1306处,相机设备104使用图像二维物体检测模块510和每个图像生成:i)在该图像中检测到的物体的物体标签、ii)该图像中的物体的边界框、以及iii)该图像中的特征点。在步骤1308处,相机设备104使用长方体生成器512、每个图像的边界框、每个图像的相机位置、每个图像的相机取向、每个图像的相机到物体的距离生成真实三维空间的真实世界坐标中的长方体,该长方体在真实三维空间中界定物体。在步骤1310处,相机设备104使用锚点生成器524、至少一个图像的特征点和长方体生成包含在长方体中的物体的真实三维空间的真实世界坐标中的锚点。在步骤1312处,相机设备104输出(例如向测绘设备输出)物体标签、锚点、以及真实三维空间的真实世界坐标中的长方体、长方体的质心或物体的边界框中的至少一者和该图像中的至少一个,以生成虚拟三维空间中的三维地图,该三维地图包含位于真实世界坐标中的物体。响应于从步骤1312接收到输出,在步骤1314处,(测绘设备108的)测绘模块114通过使用已经存储在物体数据库110中的物体的三维模型来生成三维地图,该三维包含位于与真实物体相同的位置的虚拟物体,例如使用接收的锚点、质心和/或长方体来生成。在一些示例中,相机设备104包括用于生成包含物体的三维地图的测绘模块114。
在一些示例中,例如,当测绘模块114和/或测绘设备104在相机设备104中时,不需要步骤1312,并且相机设备104的测绘模块114如下执行步骤1314:使用测绘模块114、物体标签、锚点、以及物体在真实三维空间的真实世界坐标中的长方体、长方体的质心或边界框中的至少一者和该图像中的至少一个生成三维地图,该三维地图包含位于真实三维空间的真实世界坐标中的物体。例如,测绘模块114通过使用已经存储在物体数据库110中的物体的三维模型来生成三维地图,并在与物体的位置相同的虚拟位置处插入物体的三维模型。
图14示出了根据一个示例性实施方式的由相机设备104执行的用于真实物体的初始测绘和三维建模的定位方法1400的示例性详细框图。在步骤1402处,相机设备104接收至少一个包含物体的图像。例如,从相机522接收至少一个图像。在步骤1404处,相机设备104使用定位模块518为每个图像生成真实三维空间的真实坐标中的相机位置、相机取向和相机到物体的距离。在步骤1406处,相机设备104使用扫描仪(例如LiDAR扫描仪)或摄影测量(例如ARCore)生成物体的点云地图。在步骤1408处,相机设备104使用图像二维物体检测模块510和每个图像生成:i)在该图像中检测到的物体的物体标签、ii)该图像中的物体的边界框、以及iii)该图像中的特征点。在步骤1410处,相机设备104使用长方体生成器512、每个图像的边界框、每个图像的相机位置、每个图像的相机取向、每个图像的相机到物体的距离,生成真实三维空间的真实世界坐标中的长方体,该长方体在真实三维空间中界定物体。在步骤1412处,相机设备104使用锚点生成器524、至少一个图像的特征点和长方体,生成包含在长方体中的物体的真实三维空间的真实世界坐标中的锚点。在步骤1414处,相机设备104在物体数据库110中存储(例如直接存储或通过发送至测绘设备108来存储):物体标签、长方体、锚点、以及点云地图或从点云地图生成的物体的三维模型中的至少一者。在步骤1416处,相机设备104在地图数据库112中存储(例如直接存储或通过发送至测绘设备108来存储):物体标签、真实三维空间的真实世界坐标中的长方体、以及锚点。
图15示出了根据一个示例性实施方式的由相机设备104执行的用于定位相机设备104的定位方法1500的示例性详细框图。在步骤1502处,相机设备104接收包含静止真实物体的图像。例如,从相机522接收至少一个图像。在步骤1504处,相机设备104使用图像二维物体检测模块510和该图像生成:i)在该图像中检测到的静止真实物体的物体标签、以及ii)该图像中的静止真实物体的边界框。在步骤1506处,相机设备104使用姿态估计器模块516、该图像、物体标签和边界框生成静止真实物体的视点姿态。在步骤1508处,相机设备104使用物体标签检索静止真实物体的真实三维空间的真实世界坐标中的已知长方体和静止真实物体的真实三维空间的真实世界坐标中的已知姿态。在步骤1510处,相机设备104使用定位模块518、该图像、物体标签、边界框、视点姿态、真实三维空间的真实世界坐标中的已知长方体以及真实三维空间的真实世界坐标中的已知姿态,生成真实三维空间的真实世界坐标中的相机位置以及真实三维空间的真实世界坐标中的相机取向。在一些其它示例中,定位方法1500是由测绘设备108执行的。
图16示出了根据一个示例性实施方式的由测绘设备108执行的用于真实物体的测绘和三维建模的定位方法1600的示例性详细框图。在步骤1602处,测绘设备108从相机设备接收:i)真实物体的真实三维空间的真实世界坐标中的质心、以及ii)真实物体的物体标签。在步骤1604处,测绘设备108使用物体标签检索真实物体的三维模型。在步骤1606处,测绘设备108使用测绘模块114、真实物体的三维模型、锚点、以及物体在真实三维空间的真实世界坐标中的长方体、长方体的质心或边界框中的至少一者和所述至少一个图像,生成三维地图,该三维地图包含位于真实世界坐标中的真实物体在虚拟三维空间中的三维模型。在步骤1608处,测绘设备108将该三维地图输出至显示设备106(其可以包括360度显示器)和/或直接输出至显示器412(其可以包括360度显示器)。定位方法1600还可以包括从相机设备104接收真实物体的姿态,其中在步骤1606处生成三维地图使用该姿态,其中该三维地图包含具有该姿态的真实物体在虚拟三维空间中的三维模型。在一示例中,该三维地图是用于扩展现实(XR)应用的沉浸式三维地图。在一些其它示例中,定位方法1600是由相机设备104执行的。在一些其它示例中,定位方法1600是由显示设备106执行的。
所述定位方法的一示例可应用于需要在特定位置安装真实物体、舞台、座位、视听设备等的活动场所布置场景。在一示例中,椅子的数字孪生体具有物理对应的真实椅子,其中该真实椅子的位置被从真实世界中的一排移出。在一示例中,预定义的规则可以根据物理椅子在虚拟三维地图中的数字孪生体的布置来设置物理椅子在场所中的位置。因此,当椅子被从场所中的一排椅子中移走时,所述定位方法能够自动地或通过人工干预输出指令,以将椅子移回虚拟三维地图中指定的其数字孪生体的位置。类似的示例性场景可以应用于当真实椅子的姿态已经被手动改变时的场景,所述定位方法能够输出指令,以将椅子移回虚拟三维地图中指定的其数字孪生体的姿态。另一个示例性实施方式是真实世界中的任何变化被优先考虑为所期望的变化,并且数字孪生体的位置被自动更新以使其与真实世界物体位置一致。类似的示例性场景可以对真实椅子的姿态的任何变化进行镜像。
在示例性实施方式中,应理解,所说明的定位系统100、定位方法、相机设备104、显示设备106和测绘设备108可以以其它方式实施。例如,所说明的相机设备104仅是一种示例性实施方式。例如,单元划分仅是逻辑功能划分,并且在其它示例中可以是另一种类型的划分。例如,可以将多个单元或部件组合或集成到另一个系统中,或者可以忽略或不执行某些特征。此外,所示或所论述的相互耦接或直接耦接或通信连接可以通过使用某些接口来实现。单元之间的间接耦接或通信连接可以通过电子、机械或其它形式实现。在一些示例中,测绘设备108可以设置在相机设备104或显示设备106上。
被描述为独立部分的单元可以是物理上独立的或可以不是物理上独立的,并且被示为单元的部分可以是物理单元或可以不是物理单元,可以位于一个位置,或者可以分布在多个网络单元上。可以根据实际要求选择一些或所有单元,以实现实施方式的方案的目标。
此外,可以将示例性实施方式中的功能单元集成到一个处理单元中,或者每个单元可以在物理上单独存在,或者可以将两个或更多个单元集成到一个单元中。
当功能以软件功能单元的形式实现并且作为独立产品销售或使用时,功能可以存储在计算机可读存储介质中。基于这样的理解,示例性实施方式的技术方案可以以软件产品的形式实现。该软件产品存储在存储介质中,并且包含若干指令,这些指令用于指示计算机设备(可以是个人计算机、服务器或网络设备)执行在示例性实施方式中说明的方法的所有或一些步骤。前述存储介质包括能够存储程序代码的任何介质,例如通用串行总线(USB)闪存、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM)、磁盘或光盘。在一示例中,软件产品可以是从机器学习训练过程生成的推理模型。
在所说明的方法或框图中,方框可以代表事件、步骤、功能、过程、模块、消息和/或基于状态的操作等。虽然一些示例性实施方式被描述为按特定顺序发生,但是一些步骤或过程可以按不同的顺序执行,只要任何改变后的给定步骤顺序的结果不会阻止或损害后续步骤的发生。此外,在其它实施方式中可以移除或组合所说明的一些消息或步骤,并且,在其它实施方式中,可以将在本文中说明的一些消息或步骤分成多个子消息或子步骤。此外,可以根据需要重复一些或所有步骤。被描述为方法或步骤的元素同样适用于系统或子部件,反之亦然。对诸如“发送”或“接收”之类的词语的引用可以根据特定设备的角度互换使用。
所说明的实施方式应被认为是示例性的,而非限制性的。被描述为方法的示例性实施方式会类似地适用于系统或设备,反之亦然。
各种示例性实施方式仅是示例性的,并非意味着限制示例性实施方式的范围。对于本领域普通技术人员来说,在本文中说明的创新的变化是显而易见的,这种变化在示例性实施方式的预期范围之内。具体而言,可以选择来自一个或多个示例性实施方式的特征来产生由可能未明确说明的特征的子组合组成的替代实施方式。此外,可以选择和组合来自一个或多个所述示例性实施方式的特征,以产生由可能未明确说明的特征的组合组成的替代示例性实施方式。对于本领域技术人员来说,适合用于这些组合和子组合的特征是显而易见的。在本文中说明的主题意图涵盖所有适当的技术变化。

Claims (59)

1.一种定位方法,包括:
接收至少一个包含物体的图像;
使用定位模块为每个图像生成:
真实三维(3D)空间的真实世界坐标中的相机位置、相机取向以及相机到所述物体的距离;
使用图像二维物体检测模块和每个图像生成:
i)在所述图像中检测到的所述物体的物体标签、ii)所述图像中的所述物体的边界框、以及iii)所述图像中的特征点;
使用长方体生成器、每个图像的所述边界框、每个图像的所述相机位置、每个图像的所述相机取向以及每个图像的所述相机到所述物体的距离,生成所述真实三维空间的所述真实世界坐标中的长方体,所述长方体在所述真实三维空间的所述真实世界坐标中界定所述物体;
使用锚点生成器、所述至少一个图像的所述特征点和所述长方体,生成包含在所述长方体中的所述物体的所述真实三维空间的所述真实世界坐标中的锚点;并且
与所述图像中的至少一个一起输出所述物体标签、所述锚点、以及以下中的至少一个:所述真实三维空间的所述真实世界坐标中的所述长方体、所述长方体的质心或所述物体的边界框,以生成虚拟三维空间中的三维地图,所述三维地图包含位于所述真实世界坐标中的所述物体。
2.根据权利要求1所述的定位方法,还包括:
使用质心生成器和所述长方体生成:
在所述真实三维空间的真实坐标中的所述长方体的所述质心。
3.根据权利要求1所述的定位方法,还包括:
使用所述长方体生成器、所述至少一个图像、所述图像的所述边界框、所述图像的所述相机位置、所述图像的所述相机取向、所述图像的所述相机到所述物体的距离,生成所述物体的所述真实三维空间的所述真实世界坐标中的至少一个消失点;并且
其中,生成所述真实三维空间的所述真实世界坐标中的所述长方体还使用所述物体的所述真实三维空间的所述真实世界坐标中的所述至少一个消失点。
4.根据权利要求1所述的定位方法,其中,生成所述真实三维空间的所述真实世界坐标中的所述长方体包括将所述长方体从相机三维坐标变换到所述真实三维空间的所述真实世界坐标。
5.根据权利要求1所述的定位方法,其中,生成所述真实三维空间的所述真实世界坐标中的所述锚点包括将相应图像中的所述特征点变换为相机三维坐标中的所述锚点,并将所述相机三维坐标中的所述锚点变换为所述真实三维空间的所述真实世界坐标。
6.根据权利要求5所述的定位方法,还包括检测地板的平面,生成从相机设备到所述地板的高度,并且其中,将所述相机三维坐标中的所述锚点变换为所述真实三维空间的所述真实世界坐标包括基于所述相机设备到所述地板的高度来缩放所述物体。
7.根据权利要求1所述的定位方法,还包括:
使用姿态估计模块、所述至少一个图像、所述相机位置、所述相机取向、所述相机到所述物体的距离以及每个图像中的所述物体的所述边界框,生成所述物体在所述真实三维空间的所述真实世界坐标中的姿态;并且
输出所述物体的所述姿态,以用于生成所述虚拟三维空间中的所述三维地图,所述三维地图包含具有所述真实世界坐标中的所述姿态的所述物体。
8.根据权利要求7所述的定位方法,还包括:
使用正面检测模块、所述物体标签、每个图像的所述边界框和所述至少一个图像,生成所述物体的正面识别信息;并且
其中,生成所述物体在所述真实三维空间的所述真实世界坐标中的所述姿态还使用所述物体的所述正面识别信息。
9.根据权利要求8所述的定位方法,其中,所述正面识别信息包括:所述物体的三维模型的视点、所述物体的正面的正面边界框、所述物体的正面的图像、所述物体的仅正面的三维模型或点云地图、所述物体的正面的所述锚点、或所述物体的正面的描述性文字。
10.根据权利要求7所述的定位方法,还包括:
使用所述物体标签和物体数据库检索所述物体的正面识别信息;并且
其中,生成所述物体在所述真实三维空间的所述真实世界坐标中的所述姿态还使用所述物体的所述正面识别信息。
11.根据权利要求7所述的定位方法,还包括:
使用所述姿态估计器模块、所述物体标签、所述至少一个图像、以及每个图像中的所述物体的所述边界框,生成从所述相机位置与所述物体之间的视线观察的所述物体的视点姿态;并且
其中,生成所述物体在所述真实三维空间的所述真实世界坐标中的所述姿态还使用所述物体的所述视点姿态。
12.根据权利要求7所述的定位方法,其中,所述三维地图的生成包括使用测绘模块确定所述姿态的变化,并使用所述姿态的变化更新已经存在于所述三维地图中的所述物体。
13.根据权利要求7所述的定位方法,还包括确定所述姿态不同于所述物体的存储的姿态,并且输出指令以将所述真实三维空间中的所述物体移动至所述存储的姿态。
14.根据权利要求7所述的定位方法,其中,生成所述物体在所述真实三维空间的所述真实世界坐标中的所述姿态还使用包含在所述长方体中的所述物体的所述真实三维空间的所述真实世界坐标中的所述锚点。
15.根据权利要求1所述的定位方法,还包括:
使用正面检测模块生成正面识别信息,所述正面识别信息将所述长方体的一面识别为所述物体的正面;并且
其中,生成所述三维地图使用所述物体的所述正面识别信息。
16.根据权利要求1所述的定位方法,其中,所述至少一个图像、所述相机位置和所述相机取向是从第三方地图服务接收的。
17.根据权利要求1所述的定位方法,其中,所述图像包含静止真实物体,其中,生成所述相机位置和所述相机取向包括:
使用所述图像二维物体检测模块和所述图像生成:i)在所述图像中检测到的所述静止真实物体的第二物体标签、以及ii)所述图像中的所述静止真实物体的第二边界框;
使用姿态估计器模块、所述图像、所述第二物体标签和所述第二边界框生成所述静止真实物体的视点姿态;
使用所述第二物体标签检索所述静止真实物体的所述真实三维空间的所述真实世界坐标中的已知长方体和所述静止真实物体的所述三维空间中的已知姿态;并且
使用所述定位模块、所述图像、所述第二物体标签、所述第二边界框、所述视点姿态、所述真实三维空间的所述真实世界坐标中的所述已知长方体以及所述真实三维空间的所述真实世界坐标中的所述已知姿态,生成所述真实三维空间的所述真实世界坐标中的所述相机位置以及所述真实三维空间的所述真实世界坐标中的所述相机取向。
18.根据权利要求1所述的定位方法,其中,所述输出不输出所述物体的三维模型或点云地图。
19.根据权利要求1所述的定位方法,其中,所述至少一个图像包括多个图像。
20.根据权利要求1所述的定位方法,其中,所述物体标签对于所述物体是唯一的。
21.根据权利要求1所述的定位方法,其中,所述定位模块包括全球定位系统(GPS)、本地定位系统(LPS)和/或光探测和测距(LiDAR)扫描仪。
22.根据权利要求1所述的定位方法,还包括使用测绘模块、所述物体标签、所述锚点、以及所述长方体、所述质心或所述物体的边界框中的至少一个和所述至少一个图像中的至少一个,执行所述虚拟三维空间中的所述三维地图的生成,所述三维地图包含位于所述真实世界坐标中的所述物体。
23.根据权利要求22所述的定位方法,其中,所述三维地图的生成包括:所述测绘模块确定所述边界框中的所述长方体或所述质心或所述特征点的位置变化;并且所述测绘模块使用所述位置变化更新已存在于所述三维地图中的所述物体。
24.根据权利要求23所述的定位方法,其中,确定所述位置变化是针对所述边界框中的所述长方体、所述质心和所述特征点中的全部确定的。
25.根据权利要求22所述的定位方法,其中,生成所述三维地图包括所述测绘模块使用所述物体标签检索所述物体的三维模型;其中,所述三维地图包含所述真实世界坐标中的所述物体在所述虚拟三维空间中的所述三维模型。
26.根据权利要求22所述的定位方法,其中,所述测绘模块在捕获所述至少一幅图像的相机设备中。
27.根据权利要求1所述的定位方法,还包括确定所述长方体或所述质心不同于所述物体的存储的长方体或存储的质心的位置,并且输出指令以将所述真实三维空间中的所述物体移动至所述存储的长方体或所述存储的质心的位置。
28.根据权利要求1所述的定位方法,还包括在显示设备上显示所述三维地图。
29.根据权利要求1所述的定位方法,其中:
所述定位模块包含定位模型,所述定位模型包含第一卷积神经网络(CNN);和/或
所述图像二维物体检测模块包括图像二维物体检测器模型,所述图像二维物体检测器模型包含第二CNN。
30.根据权利要求1所述的定位方法,其中,所述图像中的第一图像是从第一相机设备捕获的,所述图像中的第二图像是从第二相机设备捕获的。
31.根据权利要求30所述的定位方法,其中,所述第一相机设备和所述第二相机设备均是固定相机设备。
32.根据权利要求1所述的定位方法,其中所述定位方法是由捕获所述至少一幅图像的相机设备执行的。
33.根据权利要求1所述的定位方法,其中所述定位方法是由至少一个处理器执行的。
34.一种定位方法,包括:
接收至少一个包含物体的图像;
使用定位模块为每个图像生成真实三维(3D)空间的真实世界坐标中的相机位置、相机取向以及相机到所述物体的距离;
使用扫描仪或摄影测量生成所述物体的点云地图;
使用图像二维物体检测模块和每个图像生成:
i)在所述图像中检测到的所述物体的物体标签、ii)所述图像中的所述物体的边界框、以及iii)所述图像中的特征点;
使用长方体生成器、每个图像的所述边界框、每个图像的所述相机位置、每个图像的所述相机取向以及每个图像的所述相机到所述物体的距离,生成所述真实三维空间的所述真实世界坐标中的长方体,所述长方体在所述真实三维空间中界定所述物体;
使用锚点生成器、所述至少一个图像的所述特征点和所述长方体生成包含在所述长方体中的所述物体的所述真实三维空间的所述真实世界坐标中的锚点;
在物体数据库中存储所述物体标签、所述长方体、所述锚点、以及所述点云地图或从所述点云地图生成的所述物体的三维模型中的至少一者;并且
在地图数据库中存储所述物体标签、所述长方体和所述锚点。
35.根据权利要求34所述的定位方法,还包括:
使用质心生成器和所述长方体生成所述长方体的质心;并且
在所述地图数据库中存储所述质心。
36.根据权利要求34所述的定位方法,还包括:
使用姿态估计模块、所述至少一个图像、所述相机位置、所述相机取向、所述相机到所述物体的距离以及每个图像中的所述物体的所述边界框,生成所述物体在所述真实三维空间的所述真实世界坐标中的姿态;并且
在所述地图数据库中存储所述物体的所述姿态。
37.一种定位方法,包括:
接收包含静止真实物体的图像;
使用图像二维物体检测模块和所述图像生成i)在所述图像中检测到的所述静止真实物体的物体标签、以及ii)所述图像中的所述静止真实物体的边界框;
使用姿态估计器模块、所述图像、所述物体标签和所述边界框生成所述静止真实物体的视点姿态;
使用所述物体标签检索所述静止真实物体的真实三维(3D)空间的真实世界坐标中的已知长方体和所述静止真实物体的所述真实三维空间的所述真实世界坐标中的已知姿态;并且
使用定位模块、所述图像、所述物体标签、所述边界框、所述视点姿态、所述真实三维空间的所述真实世界坐标中的所述已知长方体以及所述真实三维空间的所述真实世界坐标中的所述已知姿态,生成所述真实三维空间的所述真实世界坐标中的相机位置以及所述真实三维空间的所述真实世界坐标中的相机取向。
38.根据权利要求37所述的定位方法,还包括:
使用所述物体标签检索所述已知长方体的已知质心;
使用所述图像生成所述静止真实物体的质心;并且
其中,生成所述真实三维空间的所述真实世界坐标中的所述相机位置和所述真实三维空间的所述真实世界坐标中的所述相机取向使用所述已知长方体的所述已知质心。
39.根据权利要求37所述的定位方法,其中,生成所述真实三维空间的所述真实世界坐标中的所述相机位置和所述真实三维空间的所述真实世界坐标中的所述相机取向不需要除相机设备外的传感器。
40.根据权利要求37所述的定位方法,还包括:
使用所述图像二维物体检测模块和所述图像生成iii)所述图像的特征点;
使用锚点生成器、所述图像、所述图像的所述特征点、所述静止真实物体的所述物体标签和所述边界框,生成相机三维坐标中的锚点;
使用所述物体标签检索所述物体的所述真实三维空间的所述真实世界坐标中的已知锚点;并且
其中,生成所述真实三维空间的所述真实世界坐标中的所述相机位置和所述真实三维空间的所述真实世界坐标中的所述相机取向还使用所述相机三维坐标中的所述锚点和所述物体的所述真实三维空间的所述真实世界坐标中的所述已知锚点。
41.根据权利要求37所述的定位方法,其中,接收所述图像包括接收用于生成所述静止真实物体的所述视点姿态的单个图像。
42.一种定位方法,包括:
从相机设备接收i)真实物体的物体标签、ii)所述真实物体的真实三维空间的真实世界坐标中的锚点、iii)所述真实三维空间的所述真实世界坐标中的长方体、所述长方体的质心或所述真实物体的相应边界框中的至少一者和至少一个图像;
使用所述物体标签检索所述真实物体的三维模型;
使用测绘模块、所述真实物体的所述三维模型、所述锚点、以及所述真实三维空间的所述真实世界坐标中的所述长方体、所述长方体的所述质心或所述真实物体的相应边界框中的至少一者和所述至少一个图像,生成用于沉浸式扩展现实(XR)应用的三维地图,所述三维地图包含位于所述真实世界坐标中的所述真实物体在虚拟三维空间中的所述三维模型。
43.根据权利要求42所述的定位方法,还包括:
从所述相机设备接收所述真实物体的姿态;
其中所述生成所述三维地图使用所述姿态;并且
其中所述三维地图包含具有所述姿态的所述真实物体在所述虚拟三维空间中的所述三维模型。
44.根据权利要求43所述的定位方法,还包括:
使用所述测绘模块确定所述姿态的变化;并且
使用所述测绘模块用变化的姿态更新已存在于所述三维地图中的所述真实物体的所述三维模型。
45.根据权利要求42所述的定位方法,还包括:
使用所述测绘模块确定所述长方体或所述质心的所述真实三维空间的所述真实世界坐标中的位置变化;并且
使用所述测绘模块利用所述位置变化更新已存在于所述三维地图中的所述真实物体的所述三维模型。
46.根据权利要求42所述的定位方法,其中,从所述相机设备进行的接收不包括所述真实物体的三维模型。
47.一种定位方法,包括:
接收包含物体的图像;
在二维空间中生成所述图像的屏幕法线;
使用图像二维物体检测模块和所述图像生成i)在所述图像中检测到的所述物体的物体标签、ii)在所述图像中检测到的所述物体的各个边缘的所述二维空间中的线段、以及iii)所述物体的所述二维空间中的边界框;
使用长方体生成器、所述图像和所述图像的所述边界框生成i)在所述二维空间中界定所述物体的多个候选长方体、ii)所述多个候选长方体中的每一个候选长方体的相应消失点、iii)所述相应消失点的相应消失点中心、以及iv)所述二维空间中从屏幕中心到所述相应消失点中心的相应消失点角度;
对于所述多个候选长方体中的每一个长方体,计算所述二维空间中所述相应消失点角度与所述屏幕法线之间的角度差;
选择在所述二维空间中具有在角度阈值之内的所述角度差的所述候选长方体;
对于选定的候选长方体中的每一个长方体,使用所述长方体生成器为所述图像生成:i)所述二维空间中的所述选定的候选长方体在真实三维空间的真实世界坐标、以及ii)所述真实三维空间的所述真实世界坐标中的所述选定的候选长方体与所述真实三维空间中的所述物体之间的相应成本函数值;并且
将所述物体与i)所述物体标签和ii)所述真实三维空间的所述真实世界坐标中的具有最优的相应成本函数值的选定的候选长方体相关联。
48.根据权利要求47所述的定位方法,还包括跟踪具有最优的相应成本函数值的选定的候选长方体。
49.根据权利要求47所述的定位方法,其中,计算所述角度差与笛卡尔坐标的x轴相关联,其中,所述角度阈值与所述x轴相关联。
50.根据权利要求47所述的定位方法,还包括:
在所述真实三维空间的所述真实世界坐标中生成与检测的平面正交的三维法线;
为选定的候选长方体中的每一个候选长方体生成相应的质心和从相机位置到所述相应的质心的相应质心角度;并且
为所述选定的候选长方体中的每一个候选长方体,进行在所述真实三维空间的所述真实世界坐标中所述相应的质心角度与所述三维法线之间的第二角度差的第二计算,
其中,选择还包括从所述选定的候选长方体中进行第二选择,以选择在所述真实三维空间的所述真实世界坐标中具有在第二角度阈值之内的所述第二角度差的候选长方体。
51.根据权利要求50所述的定位方法,其中,第二角度差的第二计算是针对三个笛卡尔坐标进行的,并且所述第二角度阈值针对所述三个笛卡尔坐标。
52.根据权利要求50所述的定位方法,其中,第二角度阈值是20度或大约20度。
53.根据权利要求47所述的定位方法,其中,所述线段是使用快速线检测器功能生成的。
54.根据权利要求47所述的定位方法,其中,所述成本函数值基于距离误差、角度对准误差或形状误差。
55.根据权利要求54所述的定位方法,其中,所述成本函数值基于所述距离误差、所述角度对准误差和所述形状误差中的全部。
56.根据权利要求47所述的定位方法,其中,所述角度阈值是20度或大约20度。
57.根据权利要求47所述的定位方法,其中,所述检测的平面是水平地面。
58.一种定位系统,包括:
至少一个处理器;和
包含指令的存储器,所述指令在由所述至少一个处理器执行时使得所述至少一个处理器执行根据权利要求1至57中任一项所述的定位方法。
59.一种包含指令的非暂时性存储器,所述指令在由至少一个处理器执行时使得所述至少一个处理器执行根据权利要求1至57中任一项所述的定位方法。
CN202280078811.6A 2021-10-05 2022-07-06 用于真实世界测绘的物体和相机定位系统以及定位方法 Pending CN118339424A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/494,585 US11417069B1 (en) 2021-10-05 2021-10-05 Object and camera localization system and localization method for mapping of the real world
US17/494,585 2021-10-05
PCT/CA2022/051063 WO2023056544A1 (en) 2021-10-05 2022-07-06 Object and camera localization system and localization method for mapping of the real world

Publications (1)

Publication Number Publication Date
CN118339424A true CN118339424A (zh) 2024-07-12

Family

ID=85785382

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202280078811.6A Pending CN118339424A (zh) 2021-10-05 2022-07-06 用于真实世界测绘的物体和相机定位系统以及定位方法

Country Status (2)

Country Link
CN (1) CN118339424A (zh)
CA (1) CA3172195A1 (zh)

Also Published As

Publication number Publication date
CA3172195A1 (en) 2023-04-05

Similar Documents

Publication Publication Date Title
US11417069B1 (en) Object and camera localization system and localization method for mapping of the real world
US11544867B2 (en) Mapping optimization in autonomous and non-autonomous platforms
US11501527B2 (en) Visual-inertial positional awareness for autonomous and non-autonomous tracking
US11721067B2 (en) System and method for virtual modeling of indoor scenes from imagery
US10769440B1 (en) Visual-inertial positional awareness for autonomous and non-autonomous tracking
US10977818B2 (en) Machine learning based model localization system
US11948369B2 (en) Visual-inertial positional awareness for autonomous and non-autonomous mapping
US10390003B1 (en) Visual-inertial positional awareness for autonomous and non-autonomous device
US10366508B1 (en) Visual-inertial positional awareness for autonomous and non-autonomous device
EP3815398B1 (en) Multi-sync ensemble model for device localization
CN105143907B (zh) 定位系统和方法
CN109298629B (zh) 在未绘制地图区域中引导移动平台的系统及方法
CN104748751B (zh) 姿态矩阵的计算方法及基于姿态矩阵的定位导航方法
US9646384B2 (en) 3D feature descriptors with camera pose information
JP2019536170A (ja) 仮想的に拡張された視覚的同時位置特定及びマッピングのシステム及び方法
CN109255749B (zh) 自主和非自主平台中的地图构建优化
US10838515B1 (en) Tracking using controller cameras
US20230400327A1 (en) Localization processing service and observed scene reconstruction service
TWI750822B (zh) 用於為目標設置可呈現的虛擬對象的方法和系統
US20180350216A1 (en) Generating Representations of Interior Space
WO2023088127A1 (zh) 室内导航方法、服务器、装置和终端
US11200741B1 (en) Generating high fidelity spatial maps and pose evolutions
CN118339424A (zh) 用于真实世界测绘的物体和相机定位系统以及定位方法
US11776206B1 (en) Extended reality system and extended reality method with two-way digital interactive digital twins
CN113228117B (zh) 创作装置、创作方法和记录有创作程序的记录介质

Legal Events

Date Code Title Description
PB01 Publication