CN116848493A - 使用极线约束的光束平差 - Google Patents

使用极线约束的光束平差 Download PDF

Info

Publication number
CN116848493A
CN116848493A CN202180093587.3A CN202180093587A CN116848493A CN 116848493 A CN116848493 A CN 116848493A CN 202180093587 A CN202180093587 A CN 202180093587A CN 116848493 A CN116848493 A CN 116848493A
Authority
CN
China
Prior art keywords
image
headset
camera
beam adjustment
error
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
CN202180093587.3A
Other languages
English (en)
Inventor
M·苏艾
A·古普塔
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.)
Magic Leap Inc
Original Assignee
Magic Leap Inc
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
Application filed by Magic Leap Inc filed Critical Magic Leap Inc
Publication of CN116848493A publication Critical patent/CN116848493A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/10Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration
    • G01C21/12Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning
    • G01C21/16Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning by integrating acceleration or speed, i.e. inertial navigation
    • G01C21/165Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning by integrating acceleration or speed, i.e. inertial navigation combined with non-inertial navigation instruments
    • G01C21/1656Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 by using measurements of speed or acceleration executed aboard the object being navigated; Dead reckoning by integrating acceleration or speed, i.e. inertial navigation combined with non-inertial navigation instruments with passive imaging devices, e.g. cameras
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/20Instruments for performing navigational calculations
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/38Electronic maps specially adapted for navigation; Updating thereof
    • G01C21/3804Creation or updating of map data
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/0093Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00 with means for monitoring data relating to the user, e.g. head-tracking, eye-tracking
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0179Display position adjusting means not related to the information to be displayed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/011Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
    • G06F3/012Head tracking input arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/579Depth or shape recovery from multiple images from motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/80Analysis of captured images to determine intrinsic or extrinsic camera parameters, i.e. camera calibration
    • G06T7/85Stereo camera calibration
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0101Head-up displays characterised by optical features
    • G02B2027/0138Head-up displays characterised by optical features comprising image capture systems, e.g. camera
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/0179Display position adjusting means not related to the information to be displayed
    • G02B2027/0187Display position adjusting means not related to the information to be displayed slaved to motion of at least a part of the body of the user, e.g. head, eye
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • G06T2207/10021Stereoscopic video; Stereoscopic image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose

Abstract

用于使用极线约束执行光束平差的方法、系统和装置。方法包括从特定姿势的头戴式装置接收图像数据。图像数据包括来自头戴式装置的第一相机的第一图像和来自头戴式装置的第二相机的第二图像。方法包括识别环境的三维模型中的在第一图像和第二图像中被至少部分地表示的至少一个关键点并且执行光束平差。通过联合优化针对至少一个关键点的重投影误差和针对至少一个关键点的极线误差来执行光束平差。光束平差的结果用于执行以下中的至少一个:(i)更新三维模型,(ii)确定头戴式装置在特定姿势下的位置,或(iii)确定第一相机和第二相机的外在参数。

Description

使用极线约束的光束平差
技术领域
本说明书通常涉及扩展现实系统(例如,虚拟、混合或增强现实系统)中的图像处理。
背景技术
增强现实(“AR”)和混合现实(“MR”)设备可以包括多个传感器。传感器的一些示例,相机、加速度计、陀螺仪、全球定位系统接收器、以及磁力计(例如,指南针)。
AR设备可以接收来自多个传感器的数据,并将数据组合以确定用于用户的输出。例如,AR设备可以从各个传感器接收陀螺仪和相机数据,并使用接收到的数据在显示器上呈现内容。AR设备可以使用传感器数据(例如,相机数据)生成环境地图,并且使用环境地图在显示器上呈现内容。
发明内容
计算机视觉系统可以使用传感器数据生成设备(例如,计算机视觉系统)所在环境的环境模型,以估计设备在环境中的位置,或两者兼而有之。例如,计算机视觉系统可以使用来自多个传感器的数据来生成设备所在环境的环境模型。传感器可以包括深度传感器、相机、惯性测量单元、或这些中的两个或多个的组合。
增强现实头戴式装置可以使用环境的地图或三维(“3D”)模型来提供与环境视图相对应的3D信息。计算机视觉系统可以使用同时定位和地图构建(“SLAM”)过程来更新环境模型并确定设备在环境中的估计位置。设备的位置可以包括位置数据、取向数据或两者。作为SLAM过程的一部分,计算机视觉系统可以使用光束平差(bundle adjustment)、集合成员(set-membership)过程、统计过程、或其他适当的过程。例如,作为SLAM过程的一部分,计算机视觉系统可以确定环境模型中三维点的位置,其表示环境中的可观察点。可观察点可以表示环境中的对象的一部分。然后,计算机视觉系统可以使用光束平差来细化三维点在环境模型中的位置,例如,使用附加数据、更新数据或两者来对可观察点的位置进行更准确的预测。
光束平差是使用来自不同视点的一组图像来同时细化环境的3D模型、捕获图像的相机的姿势位置、和/或相机的外在参数(extrinsic)的过程。在光束平差中,用于相机的数据之间的误差被最小化,例如重投影误差。
在任何基于相机的SLAM系统中,使用极线约束的光束平差可用于执行相机传感器外在参数的高精度在线校准。当作为光束平差的一部分执行在线校准时,可能会受到用于校正外在参数的加权方案的影响。极线约束可用于将变形的概率估计为两个相机之间或一个相机与参考点之间的旋转和平移的叉积。因此,可以恢复变形误差,以便实现更高的精度、效率或两者,例如,具有更高的更新率。
使用极线约束的光束平差可用于更准确地估计柔性(flexible)设备上的多个相机传感器之间的变形。随着时间的推移,轻型且可穿戴的增强现实设备(例如,头戴式装置)可能会发生微小但快速的变形。将极线约束应用于光束平差可以解决基于几何约束以有效方式估计变形的问题。估计的变形可以用于生成更新的相机参数,例如外在参数。经更新的相机参数可以用于基于多相机三角测量的SLAM系统。
当用户使用增强现实系统时,所描述的系统可以使用极线约束执行光束平差。例如,光束平差可以与系统捕获图像数据、生成扩展现实输出数据、以及在头戴式装置或其他显示器上显示输出数据同时针对系统(例如,扩展现实系统)进行。一些扩展的(例如,增强的)现实系统包括或被提供为可穿戴设备,诸如安装有相机和其他传感器的头戴式装置。因此,这些系统在使用期间经常随着用户走路、转头、或做出其他运动而移动。这些运动经常改变设备上的力和应力,这可能导致可穿戴设备的临时和/或永久变形。当增强现实系统被佩戴和运动时,如果系统确定有必要,光束平差可以被自动执行。这可以提高高度可变形系统的性能,该系统可能经历大量弯曲、旋转、以及其他运动。
使用极线约束执行光束平差可以提高增强现实头戴式装置的相机校准的精度。通过应用极线约束,系统可以考虑当相机从一个姿势移动到另一个姿势时相机之间的变形。因此,可以在光束平差中考虑相机之间的相对位置或相对旋转的变化。
在一个一般方面,方法包括:从头戴式装置接收用于头戴式装置的特定姿势的图像数据,该图像数据包括(i)来自头戴式装置的第一相机的第一图像和(ii)来自头戴式装置的第二相机的第二图像;识别环境的三维模型中的在第一图像和第二图像中被至少部分地表示的至少一个关键点;通过联合优化(i)基于第一图像和第二图像的针对至少一个关键点的重投影误差和基于第一图像和第二图像的针对至少一个关键点的极线误差,使用第一图像和第二图像执行光束平差;以及使用光束平差的结果来执行以下中的至少一个:(i)更新三维模型,(ii)确定头戴式装置在特定姿势处的位置,或者(iii)确定第一相机和第二相机的外在参数。
在一些实施方式中,该方法包括:基于更新的三维模型提供输出以供头戴式装置显示。
在一些实施方式中,极线误差是头戴式装置的变形导致与头戴式装置的校准的差异的结果。
在一些实施方式中,该方法包括:基于第一图像和第二图像,确定用于第一相机和第二相机的一组外在参数。
在一些实施方式中,外在参数包括平移和旋转,它们共同指示第一相机或第二相机相对于头戴式装置上的参考位置的关系。
在一些实施方式中,该方法包括:沿着头戴式装置的移动路径从第一和第二相机接收在多个不同姿势中的每个姿势下的图像;以及使用涉及极线误差的优化结果,对于不同姿势中的至少一些姿势,确定用于第一和第二相机的不同的外在参数。
在一些实施方式中,该方法包括:识别环境的三维模型中的在第一图像和第二图像中被至少部分地表示的多个关键点;以及联合优化跨多个关键点中的每个关键点的误差。
在一些实施方式中,联合优化误差包括:最小化跨多个关键点中的每个关键点的总误差,总误差包括重投影误差和极线误差的组合。
在一些实施方式中,该方法包括:从头戴式装置接收用于头戴式装置的多个姿势的第二图像数据,识别环境的三维模型中的在第二图像数据中至少部分地被表示的至少一个第二关键点;通过联合优化(i)基于第二图像数据的针对至少一个关键点的重投影误差和(ii)基于第二图像数据的针对至少一个关键点的极线误差,对多个姿势中的每个姿势执行光束平差;以及使用针对多个姿势中的每个姿势的光束平差的结果来执行以下中的至少一个(i)更新三维模型,(ii)确定头戴式装置在多个姿势的每个姿势下的另一位置,或(iii)确定第一相机和第二相机在多个姿势的每个姿势下的其他外在参数。
在一些实施方式中,该方法包括:从头戴式装置接收用于头戴式装置的第一姿势的第一图像数据和用于头戴式装置的第二姿势的第二图像数据,其中,头戴式装置的变形发生在头戴式装置的第一姿势与头戴式装置的第二姿势之间;识别环境的三维模型中的在第一图像数据和第二图像数据中被至少部分地表示的至少一个关键点;通过联合优化至少(a)用于至少一个关键点的(b)表示在头戴式装置的第一姿势与第二次姿势之间发生的头戴式装置的变形的极线误差,使用第一图像数据和第二图像数据执行光束平差;以及使用光束平差的结果来执行以下中的至少一个(i)更新三维模型、(ii)确定头戴式装置在第一姿势下的第一位置或头戴式装置在第二姿势下的第二位置、或(iii)确定第一相机和第二相机在第一姿势下的第一外在参数,或第一相机和第二相机在第二姿势下的第二外在参数。
在一些实施方式中,该方法包括:通过联合优化(i)基于第一图像和第二图像的针对至少一个关键点的重投影误差,(ii)基于第一图像和第二图像的针对至少一个关键点的极线误差,以及(iii)基于用于头戴式装置的工厂校准数据的误差,使用第一图像和第二图像来执行光束平差。
在一些实施方式中,该方法包括:使用光束平差的结果,更新头戴式装置的一系列姿势。
在一些实施方式中,使用光束平差的结果包括:更新三维模型,包括更新一个或多个关键点在三维模型中的位置。
在一些实施方式中,使用光束平差的结果包括:确定特定姿势的位置,包括确定头戴式装置相对于三维模型的位置。
在一些实施方式中,第一图像和第二图像大致同时被捕获。
这些方面的其他实施例包括编码在计算机存储设备上的相应的系统、装置和计算机程序,其配置为执行方法的动作。一个或多个计算机的系统可以通过安装在系统上的软件、固件、硬件或它们的组合来配置,在操作中,这些软件、固件和硬件或它们的组合使系统执行动作。一个或多个计算机程序可以通过具有指令而被如此配置,指令在由数据处理装置执行时使得装置执行动作。
本说明书中描述的主题可以在各种实施例中实现,并可能导致以下一个或多个优点。在一些实施方式中,与其他系统相比,本文档中描述的光束平差过程更快,使用更少的计算机资源,例如处理器周期或存储器或两者,或它们的组合。在一些实施方式中,本文档中描述的相机校准过程可以进行调整以考虑包括相机的设备的变形。这些调整可以提高针对设备执行的计算的准确性,例如,可以提高设备所在环境的三维模型的准确性、设备在环境内的预测位置、设备中包括的相机的外在参数、或这些的组合。
本说明书中描述的主题的一个或多个实施方式的细节在附图和以下描述中阐述。本主题的其他特征、方面和优点将从说明书、附图和权利要求中变得显而易见。
附图说明
图1描述了示例系统,其中设备使用具有极线约束的光束平差来更新环境的模型。
图2描绘了在增强现实设备上投影关键点的示例。
图3描绘了增强现实设备的被跟踪姿势的示例。
图4描绘了用于使用极线约束执行光束平差的示例系统。
图5是用于使用具有极线约束的光束平差来更新环境的模型的过程的流程图。
不同附图中的相同的参考数字和名称表示相同的元件。
具体实施方式
图1描绘了示例系统100,其中设备使用具有极线约束的光束平差来更新环境的模型。虽然图1是参考增强现实头戴式装置102作为设备来描述的,但是可以使用任何其他适当的计算机视觉系统来代替增强现实头戴式装置102,或者除了增强现实头戴式装置102之外。例如,增强现实头戴式装置102可以是任何其他适当类型的扩展现实头戴式装置,例如混合现实头戴式装置。
增强现实头戴式装置102或另一设备可以使用光束平差来更新各种数据,包括增强现实头戴式装置102所在的物理环境的三维(“3D”)模型122、增强现实头戴式装置102的相机的外在参数、增强现实头戴式装置102在物理环境中的估计位置、或者这些的任意组合。通过执行光束平差,增强现实头戴式装置102可以确定更准确的3D模型122、更准确的外在参数、更准确的估计的设备位置、或者这些的任意组合。
光束平差是使用来自不同视点的一组图像来同时细化环境的3D模型、捕获图像的相机的姿势、和/或相机的外在参数的过程。在光束平差中,相机之间的误差被最小化,例如重投影误差。
增强现实头戴式装置102可以针对增强现实头戴式装置102的多个物理位置或姿势基于所接收的相机数据来重复生成更新的外在参数的过程。例如,当增强现实头戴式装置102沿着路径移动通过物理环境时,头戴式装置102可以针对沿着路径的多个位置来生成更新的外在参数、对3D模型122的更新、经更新的估计的设备位置、或者这些的组合。
增强现实头戴式装置102包括右相机104和左相机106。增强现实头戴式装置102可以可选地包括中心相机105、深度传感器108、或两者。当增强现实头戴式装置102移动穿过物理环境时,增强现实头戴式装置102接收由相机104、106捕获的图像数据110。例如,当增强现实头戴式装置102在物理环境中的特定物理位置或姿势时,相机104、106可以捕获对于特定物理位置的特定图像数据110。图像数据110可以是任何适当的图像数据,例如由相机104捕获的第一图像和由相机106捕获的第二图像,或者表示由相应相机捕获的图像的其他数据。在一些实施方式中,图像数据110是视频图像序列中的图像。例如,图像数据110可以是视频序列中的帧。
在图1中,变形101发生在头戴式装置102中。变形101可以例如在头戴式装置102从第一姿势移动到第二姿势时发生。在一些示例中,头戴式装置102从第一姿势到第二姿势的运动可以引起变形101。在一些示例中,例如基于舍入误差(rouding error)的计算漂移可以随时间发生并且引起变形101。变形可以导致相机参数与头戴式装置的校准的差异。例如,变形的结果是随着时间的推移,对于头戴式装置的校准参数不再代表头戴式装置的实际校准。
变形101可以引起相机104与头戴式装置102上的参考位置之间的相对位置的变化。参考位置可以是例如右相机104、中心相机105、左相机106、或深度传感器108。在第一姿势,相机104可以位于第一位置103,在图1中由圆虚线表示。当增强现实头戴式装置102移动到第二姿势时,相机104可以移动到第二位置,由圆实线表示。因此,增强现实头戴式装置102的移动引起头戴式装置102的变形101,无论是物理变形101还是计算漂移变形。该变形可以导致相机104与参考位置(例如,相机106)之间的相对位置的变化。
增强现实头戴式装置102可以是被实现为一个或多个位置中的一个或多个计算机上的计算机程序的系统,其中实现了本文档中描述的系统、组件和技术。在一些实施方式中,参考增强现实头戴式装置102所描述的一个或多个组件可以被包括在单独的系统中,例如在使用网络与增强现实头戴式装置102通信的服务器上。网络(未示出)可以是局域网(“LAN”)、广域网(“WAN”)、互联网、或其组合。单独的系统可以使用单个服务器计算机或彼此协同操作的多个服务器计算机,包括例如部署为云计算服务的一组远程计算机。
增强现实头戴式装置102可以包括若干不同的功能组件,包括光束平差模块116。光束平差模块116可以包括一个或多个数据处理装置。例如,光束平差模块116可以包括一个或多个数据处理器以及使得该一个或多个数据处理器执行本文所讨论的操作的指令。
增强现实头戴式装置102的各种功能组件可以作为单独的功能组件或作为同一功能组件的不同模块被安装在一哥或多个计算机上。例如,光束平差模块116可以被实现为安装在通过网络耦合在一起的一个或多个位置中的一个或多个计算机上的计算机程序。例如,在基于云的系统中,这些组件可以由分布式计算系统的各个计算节点来实现。
头戴式装置102的相机104、106捕获图像数据110。图像数据110和工厂校准数据112(例如,粗粒度的外在参数)被输入到光束平差模块116中。光束平差模块116执行光束平差以联合最小化头戴式装置102跨多个关键点的误差。光束平差模块116应用极线约束来更新相机外在参数120。光束平差模块116还可以生成对3D模型122、对头戴式装置102的估计位置或两者的更新。光束平差模块116可以输出更新的3D模型122。更新的3D模型或者更新的3D模型的一部分可以呈现在头戴式装置102的显示器上。
光束平差模块116可以例如响应于数据的接收或头戴式装置的变化,或者以预定间隔(例如,时间、物理距离或帧)执行光束平差。例如,光束平差模块116可以对视频的每个图像帧、每隔一个图像帧、每第三个图像帧、每第十个帧等执行光束平差。在一些示例中,光束平差模块116可以对于多个姿势基于接收的图像数据110来执行光束平差。在一些示例中,光束平差模块116可以基于头戴式装置102在阈值距离上的移动来执行光束平差。在一些示例中,光束平差模块116可以基于头戴式装置的位置从环境的一个区域到环境的另一区域的改变来执行光束平差。例如,当头戴式装置102从物理位置的一个房间移动到物理位置的另一房间时,光束平差模块116可以执行光束平差。头戴式装置102可以基于例如应用SLAM技术来确定头戴式装置102在环境内的位置而确定移动量。
在一些示例中,光束平差模块116可以响应于误差的检测来执行光束平差。例如,头戴式装置102可以检测相机104、106之间的变形误差。响应于头戴式装置102检测到大于指定阈值的变形误差,光束平差模块116可以执行光束平差。
图2描绘了在增强现实头戴式装置102上投影关键点的示例。头戴式装置102包括右相机104和左相机106。相机104、106的图像平面在图2中被示为矩形。相机104、106各自捕获描绘关键点x1的环境的图像。相机104、106可以同时或大约同时捕获环境的图像。尽管图2中示出为仅具有两个相机,但在一些实施方式中,头戴式装置可以包括额外的相机。
关键点xl 206表示环境中的点。例如,关键点x1 206可以表示一件家具的边缘上的点,或者门口拐角处的点。关键点x1 206可以是对应的二维(“2D”)观察、关键点的视觉描述符的坐标或任何几何属性。
系统可以将关键点xl 206的表示投影到相机104、106上,例如,如3D模型中所表示的相机的图像平面。关键点x1 206投影到左相机106的点y1上,以及投影到右相机104的点z1上。点y1和z2可以各自表示相应相机的像素。
外在参数θ是相机外部的并且可以相对于参考点(例如,另一个相机)改变的相机参数。外在参数θ定义相机相对于参考点的位置和取向。图2中的外在参数θ指示例如当相机104、106之一是参考点时相机104、106之间的位置变换。例如,外在参数可以指示相机104与相机106之间的平移和旋转关系。
头戴式装置102可以沿着头戴式装置的移动的路径从相机104、106捕获在不同姿势下的图像。在一些示例中,设备可以从相机104、106接收针对头戴式装置的第一姿势的第一图像数据以及针对头戴式装置的第二姿势的第二图像数据。变形可能发生在头戴式装置的第一姿势与头戴式装置的第二姿势之间。参考图3描述示例。
图3描绘了增强现实头戴式装置102的跟踪姿势302a-b的示例。在图3的示例中,增强现实头戴式装置102从第一姿势302a移动到第二姿势302b。在第一姿势302a处,头戴式装置102具有外在参数θa。在第二姿势302b处,头戴式装置102具有外在参数θb。θa与θb之间的差指示头戴式装置102的变形。变形可以由头戴式装置102从第一姿势302a到第二姿势320b的移动、计算漂移、或其他类型的变形(无论是物理的还是计算的)引起。
在第一姿势302a处,头戴式装置102具有外在参数θa。右相机104和左相机106分别捕获包括关键点xi的环境的图像,其中i表示每个关键点的索引号。关键点xi包括关键点x1。关键点x1的表示在第一姿势302a处投影到相机104、106上。关键点x1投影到左相机106的点y1a上,并投影到右相机104的点z1a上。
头戴式装置102从第一姿势302a移动到第二姿势302b,由平移T表示。平移T可以包括头戴式装置102的平移运动、旋转运动、或两者。例如,佩戴头戴式装置的用户可以移动到不同的位置,可以向上或向下旋转头戴式装置,并且可以在第一姿势302a与第二姿势302b之间倾斜或旋转头戴式装置。头戴式装置102的这种移动由平移T表示。
在第二姿势302b处,头戴式装置102具有外在参数θb。θa与θb之间的差异或变形可以由平移T引起。在第二姿势302b处,右相机104和左相机106捕获包括至少一些关键点xi(包括关键点x1)的环境的图像。关键点x1投影到左相机106的点y1b上,并投影到右相机104的点z1b上。
对于要在校准两个相机(例如相机104和相机106)中使用的点,该点应该在两个相机的视场内。例如,相机104的视场中的点可以沿着相机106的视场中的线落下。该线可以被认为是该点的极线。相机106的视场中的极线与其在相机104的视场中的对应点之间的距离是极线误差。
对于姿势302a和302b基于外在参数θ和图像平面点y、z,诸如极线误差之类的极线约束可以被应用于光束平差。极线约束可用于表示捕获同一投影点的两个相机之间的变换。这样,共享点的观察可用于校正相机的外在参数θ。
作为示例,关键点x2投影到姿势302b处的左相机106的点y2b上。关键点x2从位置x2’投影到姿势302b处的右相机104的点z2b上。相机104的视场中的关键点x2’沿着线304从点z2b落到例如关键点x2’。极线误差可以根据线304和关键点x2之间的距离来确定,其是关键点x2’的实际位置。
可以为具有索引i的每个关键点定义极线误差ei,如下面的等式1所示。
ei=yiEzi (1)
在等式1中,yi表示具有索引i的关键点在第一相机上的投影,以及zi表示具有索引i的关键点在第二相机上的投影。符号E表示由外在参数组成的本质矩阵。本质矩阵E可由下面的等式2定义。
在等式2中,符号表示第一姿势与第二姿势之间的平移矩阵。符号R表示第一姿势与第二姿势之间的旋转矩阵。当外在参数准确时,极线误差ei为零。例如,当头戴式装置的经校准的外在参数指示头戴式装置的物理组件之间的实际关系时,外在参数是准确的。当极线误差ei为零时,下面的等式3成立。
每个关键点xi可以投影到姿势302a处的点yia、zia,以及投影到姿势302b处的点yib、zib。在光束平差期间,对于每个关键点xi的极线误差可以用作约束,以细化姿势、校准的外在参数、环境的3D模型、或这些中的两个或多个的组合。光束平差可用于最小化一组投影点xi和观察像素yi、zi的总误差。参考图4描述了使用极线约束来执行光束平差的示例过程。
图4描绘了用于使用极线约束来执行光束平差的示例系统400。在系统400中,头戴式装置102使用光束平差模块116来执行光束平差。在一些实施方式中,另一设备或设备的组合可以使用光束平差模块116来执行光束平差。
在系统400中,右相机104和左相机106捕获环境的图像。右相机104将图像数据110a输出到光束平差模块116。左相机104将图像数据110b输出到光束平差模块116。图像数据110a和图像数据110b可以是表示在大约在同一时间捕获的环境的图像的图像数据。光束平差模块116接收图像数据110a、110b作为输入。光束平差模块还可以接收环境的3D模型122作为输入。
光束平差模块116可以基于图像数据110a、110b和3D模型122来确定重投影误差。重投影误差ri可以由下面的等式4表示。
ri=Π(θT(xi))-zi (4)
在等式4中,ri表示针对3D点xi的重投影误差。项Π(θT(xi))表示基于3D模型122的3D点xi的预期投影。项zi表示3D点xi的实际投影。
在一些实施方式中,系统400可以将等式(1)、(3)或(4)中的一个或多个与来自不同相机的值一起使用,例如,当xi表示由右相机捕获的图像中描绘的点的值,以及yi表示由左相机捕获的图像中描绘的点的值时。例如,系统可以使用这些等式中的一个或多个,其中yi的值被xi的值替换。在一些示例中,系统可以使用这些等式中的一个或多个,其中xi的值被yi的值替换。
在一些实施方式中,系统400可以使用不同的等式来确定不同相机的对应值。例如,对于索引i,系统可以使用重投影误差ri来确定对于右相机的重投影误差,并且可以使用下面的等式5来确定对于左相机的重投影误差ryi
ryi=‖Π(xi)-yi2 (5)
在等式5中,Π(xi)表示具有索引i的3D点xi在右相机上的投影。yi表示在投影3d点xi的左图像中的2D观察。
在一些实施方式中,系统400可以确定两个相机的重投影误差。例如,系统400可以确定对于第一相机(例如,右相机)的重投影误差ri和对于第二不同相的机(例如,左相机)的重投影误差ryi
重投影误差可以通过量化3D模型点的估计在多大程度上重新创建该点在环境中的真实投影来提供准确的测量。重投影误差是在3D模型122中检测到的关键点的投影与投影到同一图像上的真实世界环境中的关键点的对应投影之间的距离。
除了图像数据110a、110b之外,光束平差模块116还可以接收工厂校准数据112作为输入。工厂校准数据112可以包括右相机104和左相机106的粗粒度的外在参数。
相机的粗粒度的外在参数可以指示特定相机与参考位置之间的初始平移和旋转。参考位置可以是例如头戴式装置102上的参考位置。参考位置可以是参考传感器,例如参考相机或参考深度传感器,或者是头戴式装置102上的另一适当的参考位置。用于工厂校准数据的数据项u可以由下面的等式6表示。
在等式4中,θ0代表相机的工厂校准外在参数。符号θ表示计算出的相机的外在参数。
光束平差模块116还可以接收所跟踪的头戴式装置姿势412作为输入。所跟踪的头戴式装置姿势412可以是例如第一姿势302a和第二姿势302b在环境中的估计位置。所跟踪的头戴式装置姿势可以包括沿着头戴式装置的移动路径的多个姿势。
光束平差模块116可以使用图像数据110a、110b、工厂校准数据112和所跟踪的头戴式装置姿势412作为光束平差过程的输入。在光束平差过程中,光束平差模块116可以基于接收到的输入来执行多个潜在误差源的联合优化420。具体地,光束平差模块可以对重投影误差、基于极线约束的误差(例如极线误差)和工厂校准误差执行联合优化。这三个误差源的联合优化以确定总误差e(T,X,θ)可以由下面的等式7表示。
等式7中的每个求和表示跨一组i个关键点的求和的误差源。具体地,第一总和代表重投影误差,第二总和代表工厂校准误差,以及第三总和代表极线误差。可以通过最小化跨多个关键点的组合误差e(T,X,θ)来执行联合优化。
通过在联合优化中包括一个或多个极线约束,系统可以提高误差计算的准确性。极线约束项可以依赖于来自关键点的像素投影的原始观察来校正头戴式装置102的变形。因此,极线约束项可以通过最小化否则不会被考虑,被忽略,或者两者的误差源来增强光束平差模块。
通过针对旋转R和平移T插入估计并获得等式7的输出,可以优化组合误差e(T,X,θ),例如最小化组合误差e(T,X,θ)。光束平差模块116可以选择导致最小组合误差的旋转和平移矩阵作为对于所有关键点的优化旋转和平移。换句话说,光束平差的目标是找到旋转R和平移T的值,使对于一组关键点中的关键点的所有平移矩阵和旋转矩阵上的误差最小化。
在优化误差时,光束平差模块116可以使用优化的旋转和平移矩阵来更新头戴式装置102的值、参数或两者。例如,光束平差模块116可以输出对环境416的3D模型的更新、经更新的校准的外在参数414、输出对头戴式装置418(例如,在环境中)的位置的更新,或者这些的任意组合。
例如,光束平差模块116可以将对环境416的3D模型的更新应用于3D模型122。更新3D模型可以包括更新一个或多个关键点在3D模型中的位置。更新的3D模型或更新的3D模型的一部分然后可以呈现在头戴式装置102的显示器422上。
光束平差模块116还可以更新头戴式装置102的特定姿势的位置。更新头戴式装置102的位置可以包括确定头戴式装置102相对于3D模型122的位置。在一些示例中,光束平差模块116可以基于光束平差来更新头戴式装置102的姿势的系列或路径。
光束平差模块116可以更新右相机104、左相机106或两者的外在参数。光束平差模块116可以针对每个相机确定不同的外在参数。光束平差模块116可以输出或以其他方式使用对于多个不同姿势的外在参数。
由光束平差模块116确定的更新的参数,例如更新的外在参数414,可以应用于由相机104、106捕获的未来图像数据。例如,可以将更新的外在参数提供给SLAM系统以便将来用于确定头戴式装置102在环境中的位置。在一些示例中,更新的外在参数414可以用于覆盖头戴式装置102的当前外在参数。更新的外在参数414可以对于头戴式装置102的每个位置或姿势是特定的。
利用更新的外在参数414,可以提高3D模型、头戴式装置姿势或两者的准确性。由于使用极线约束的光束平差,可以在头戴式装置102的每个姿势的所有关键点上优化更新的外在参数。因此,与其他系统相比,在沿着光束平差问题的优化过程期间最小化极线约束可以导致头戴式装置的更高的在线准校准确度。
图5是用于使用极线约束来执行光束平差的过程500的流程图。例如,过程500可以由诸如来自系统100的增强现实头戴式装置102之类的设备使用。
设备从头戴式装置接收用于头戴式装置的特定姿势的图像数据,该图像数据包括(i)来自头戴式装置的第一相机的第一图像和(ii)来自头戴式装置的第二相机的第二图像(502)。在一些示例中,设备可以沿着头戴式装置的移动路径从第一相机和第二相机接收在多个不同姿势中的每个姿势下的图像。在一些示例中,设备可以从头戴式装置接收用于头戴式装置的第一姿势的第一图像数据和用于头戴式装置的第二姿势的第二图像数据。变形可能发生在头戴式装置的第一姿势与头戴式装置的第二姿势之间。
设备可以从一个或多个相机接收图像数据。一个或多个相机可以被集成到设备或另一设备中。在一些示例中,设备可以从第一相机接收图像数据的第一部分,以及从不同的第二相机接收图像数据的不同的第二部分。第一图像和第二图像可以分别由第一相机和第二相机同时或近似同时捕获。这可以实现第一图像和第二图像的同步。在一些实施方式中,可以在从捕获第一图像起的阈值时间段内捕获第二图像。
设备识别环境的三维模型中的在第一图像和第二图像中被至少部分地表示的至少一个关键点(504)。在一些示例中,设备可以识别多个关键点。设备可以通过接收例如从另一设备或系统接收的指示至少一个关键点的数据来识别至少一个关键点。设备可通过执行一个或多个计算来识别至少一个关键点以识别关键点。例如,设备可以分析一个图像或多个图像,并确定该图像或多个图像中的每个图像中所描绘的点。图像可以是第一图像或第二图像。多个图像可以包括第一图像和第二图像。
该设备通过联合优化(i)基于第一图像和第二图像的针对至少一个关键点的重投影误差和(ii)基于第一图像和第二图像的针对至少一个关键点的极线误差,使用第一图像和第二图像执行光束平差(506)。在一些示例中,极线误差表示头戴式装置导致与头戴式装置的校准的差异的变形。
在一些示例中,设备可以识别多个关键点并且联合优化跨多个关键点中的每个关键点的误差。联合优化跨多个关键点的误差可以包括最小化跨多个关键点中的每个关键点的总误差。总误差可以包括针对多个关键点中的两个或更多个关键点的重投影误差和极线误差的组合。总误差可以包括工厂校准误差。
在一些示例中,设备可以通过联合优化(i)基于第一图像和第二图像的针对至少一个关键点的重投影误差,(ii)基于第一图像和第二图像的针对至少一个关键点的极线误差,以及(iii)基于头戴式装置的工厂校准的误差,使用第一图像和第二图像执行光束平差。
设备使用光束平差的结果来执行以下中的至少一个:(i)更新三维模型,(ii)确定头戴式装置在特定姿势下的位置,或(iii)确定第一相机和第二相机的外在参数(508)。确定特定姿势的位置可以包括确定头戴式装置相对于三维模型的位置。
在一些示例中,设备可以使用光束平差的结果来更新三维模型,并且可以基于更新的三维模型提供输出以供头戴式装置显示。在一些示例中,更新模型包括更新模型中的一个或多个关键点的位置。
在一些示例中,设备可以基于第一图像和第二图像确定用于特定姿势的一组外在参数。该设备可以使用涉及极线误差的优化来针对多个不同姿势中的至少一些来确定第一相机和第二相机的不同外在参数。设备可以基于光束平差来更新头戴式装置的姿势的系列或路径。
设备可以使用光束平差的结果来确定头戴式装置在多个姿势中的每个姿势下的位置、确定第一相机和第二相机在多个姿势中的每个姿势下的外在参数、或两者。例如,设备可以确定第一相机和第二相机在第一姿势下的第一外在参数,以及第一相机和第二相机在第二姿势下的第二外在参数。第一外在参数可以与第二外在参数不同。在一些示例中,第一外在参数与第二外在参数之间的差异可能是由于在第一姿势与第二姿势之间发生的头戴式装置的变形所致。
在一些示例中,外在参数包括指示第一相机或第二相机相对于头戴式装置上的参考位置的关系的平移和旋转。参考位置可以是例如与正在确定外在参数的相机不同的另一相机、深度传感器、惯性测量单元、或头戴式装置上的另一适当位置。在一些实施方式中,每个相机的外在参数是相对于头戴式装置上的相同参考位置。在一些实施方式中,至少一些相机的外在参数是相对于头戴式装置上的不同参考位置。
设备可以提供更新的相机外在参数以用作同时定位和地图构建过程的输入,其确定对环境的环境模型的更新以及设备在环境内的估计位置。
上述过程500中的步骤的顺序仅是说明性的,并且可以以不同的顺序来执行光束平差。在一些实施方式中,过程500可以包括额外的步骤、更少的步骤,或者一些步骤可以被分成多个步骤。例如,设备可以接收图像数据,识别至少一个关键点,并且在不使用光束平差的结果的情况下执行光束平差。在这些示例中,当设备是执行光束平差的一个或多个计算机的系统的一部分时,设备可以将光束平差的结果提供给另一设备,例如头戴式装置。
已经描述了多种实施方式。然而,应当理解,在不脱离本公开的精神和范围的情况下可以做出各种修改。例如,可以使用上面所示的流程的各种形式,其中步骤被重新排序、添加或删除。
本说明书中描述的主题和功能操作的实施例可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件中实现,包括本说明书中公开的结构及其结构等同物,或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上的一个或多个计算机程序指令模块,用于由数据处理装置执行或控制数据处理装置的操作。替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以对信息进行编码以传输到合适的接收器装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储设备、或者它们中的一种或多种的组合。
术语“数据处理装置”指的是数据处理硬件并且涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、或者多个处理器或计算机。该装置还可以是或者进一步包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还可以可选地包括为计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统、或者它们中的一个或多个的组合的代码。
计算机程序也可以被称为或描述为程序、软件、软件应用、模块、软件模块、脚本或代码,可以以任何形式的编程语言(包括编译语言或解释性语言或声明性或过程性语言)来编写,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其他单元。计算机程序可以但不一定对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本、专用于所讨论的程序的单个文件中、或多个协调文件中,例如,存储一个或多个模块、子程序或部分代码的文件。计算机程序可以部署为在一台计算机或多台计算机上执行,这些计算机位于一个站点或分布在多个站点并通过通信网络互连。
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机来执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程还可以由专用逻辑电路来执行,并且装置也可以被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适合于执行计算机程序的计算机包括例如通用或专用微处理器或两者,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储设备。通常,计算机还将包括或可操作地耦合以从一个或多个用于存储数据的大容量存储设备接收数据或向其传输数据,或两者,例如磁盘、磁光盘或光盘。然而,计算机不需要有这样的设备。此外,计算机可以嵌入到另一设备中,例如移动电话、智能电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器、或便携式存储设备,例如通用串行总线(USB)闪存驱动器,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,包括例如半导体存储设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内置硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。处理器和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有用于向用户显示信息的显示设备(例如,LCD(液晶显示器)、OLED(有机发光二极管)或其他监视器),以及键盘和指点设备,例如鼠标或轨迹球,用户可以通过键盘和指点设备向计算机提供输入。其他类型的设备也可用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;来自用户的输入可以以任何形式接收,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档以及从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收到的请求将网页发送到用户设备上的网络浏览器。
本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面或网络浏览器的客户端计算机,用户可以通过其与本说明书中描述的主题的实施方式进行交互,或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如互联网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系是通过运行在各自的计算机上并且彼此具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器向用户设备发送数据,例如超文本标记语言(HTML)页面,例如用于向与用户设备交互的用户显示数据并从用户设备接收用户输入,该用户设备充当客户端。可以在服务器处从用户设备接收在用户设备处生成的数据,例如用户交互的结果。
虽然本说明书包含许多具体的实现细节,但是这些不应被解释为对可要求保护的范围的限制,而是对可能特定于特定实施例的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地或以任何合适的子组合来实现。此外,虽然上面可能将特征描述为在某些组合中起作用,甚至最初如此要求保护,但在某些情况下,可以从该组合中删除所要求保护的组合中的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变体。
类似地,虽然在附图中以特定顺序描绘了操作,但这不应被理解为要求以所示的特定顺序或连续的顺序来执行此类操作,或者执行所有所示的操作,以实现期望的效果。在某些情况下,多任务处理和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这样的分离,并且应该理解,所描述的程序组件和系统通常可以集成在单个软件产品或打包成多个软件产品。
已经描述了本发明的具体实施例。其他实施例在所附权利要求的范围内。例如,权利要求中记载的、说明书中描述的、或附图中描绘的步骤可以以不同的顺序执行并且仍然实现期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。

Claims (20)

1.一种方法,包括:
从头戴式装置接收用于所述头戴式装置的特定姿势的图像数据,所述图像数据包括(i)来自所述头戴式装置的第一相机的第一图像和(ii)来自所述头戴式装置的第二相机的第二图像;
识别环境的三维模型中的在所述第一图像和所述第二图像中被至少部分地表示的至少一个关键点;
通过联合优化(i)基于所述第一图像和所述第二图像的针对所述至少一个关键点的重投影误差和(ii)基于所述第一图像和所述第二图像的针对所述至少一个关键点的极线误差,使用所述第一图像和所述第二图像执行光束平差;以及
使用所述光束平差的结果来执行以下中的至少一个:(i)更新所述三维模型,(ii)确定所述头戴式装置在所述特定姿势下的位置,或(iii)确定所述第一相机和所述第二相机的外在参数。
2.根据权利要求1所述的方法,包括:基于更新的三维模型,提供输出以供所述头戴式装置显示。
3.根据权利要求1所述的方法,其中,所述极线误差是所述头戴式装置的变形导致与所述头戴式装置的校准的差异的结果。
4.根据权利要求1所述的方法,包括:基于所述第一图像和所述第二图像,确定用于所述第一相机和所述第二相机的一组外在参数。
5.根据权利要求1所述的方法,其中,所述外在参数包括平移和旋转,所述平移和旋转共同指示所述第一相机或所述第二相机相对于所述头戴式装置上的参考位置的关系。
6.根据权利要求1所述的方法,包括:
沿着所述头戴式装置的移动路径从所述第一相机和所述第二相机接收在多个不同姿势中的每个姿势下的图像;以及
使用涉及所述极线误差的所述优化的结果,对于所述不同姿势中的至少一些姿势,确定用于所述第一相机和所述第二相机的不同的外在参数。
7.根据权利要求1所述的方法,包括:
识别所述环境的所述三维模型中的多个关键点,每个关键点在所述第一图像和所述第二图像中被至少部分地表示;以及
联合优化跨所述多个关键点中的每个关键点的误差。
8.根据权利要求7所述的方法,其中,联合优化所述误差包括:最小化跨所述多个关键点中的每个关键点的总误差,所述总误差包括所述重投影误差和所述极线误差的组合。
9.根据权利要求1所述的方法,包括:
从所述头戴式装置接收用于所述头戴式装置的多个姿势的第二图像数据;
识别所述环境的所述三维模型中的在所述第二图像数据中被至少部分地表示的至少一个第二关键点;
通过联合优化(i)基于所述第二图像数据的针对所述至少一个关键点的重投影误差和(ii)基于所述第二图像数据的针对所述至少一个关键点的极线误差,对于所述多个姿势中的每个姿势执行光束平差;以及
使用针对所述多个姿势中的每个姿势的所述光束平差的结果来执行以下中的至少一个:(i)更新所述三维模型,(ii)确定所述头戴式装置在所述多个姿势中的每个姿势下的另一位置,或(iii)确定所述第一相机和所述第二相机在所述多个姿势中的每个姿势下的其他外在参数。
10.根据权利要求1所述的方法,包括:
从所述头戴式装置接收用于所述头戴式装置的第一姿势的第一图像数据和用于所述头戴式装置的第二姿势的第二图像数据,其中,所述头戴式装置的变形发生在所述头戴式装置的所述第一姿势与所述头戴式装置的所述第二姿势之间;
识别所述环境的所述三维模型中的在所述第一图像数据和所述第二图像数据中被至少部分地表示的至少一个第二关键点;
通过联合优化至少(a)用于所述至少一个第二关键点的(b)表示在所述头戴式装置的所述第一姿势与所述第二姿势之间发生的所述头戴式装置的所述变形的所述极线误差,使用所述第一图像数据和所述第二图像数据来执行所述光束平差;以及
使用所述光束平差的结果来执行以下中的至少一个:(i)更新所述三维模型,(ii)确定所述头戴式装置在所述第一姿势下的第一位置或所述头戴式装置在所述第二姿势下的第二位置,或者(iii)确定所述第一相机和所述第二相机在所述第一姿势下的第一外在参数,或所述第一相机和所述第二相机在所述第二姿势下的第二外在参数。
11.根据权利要求1所述的方法,包括:通过联合优化(i)基于所述第一图像和所述第二图像的针对所述至少一个关键点的所述重投影误差,(ii)基于所述第一图像和所述第二图像的针对所述至少一个关键点的所述极线误差,以及(iii)基于用于所述头戴式装置的工厂校准数据的误差,使用所述第一图像和所述第二图像来执行光束平差。
12.根据权利要求1所述的方法,包括:使用所述光束平差的所述结果来更新所述头戴式装置的一系列姿势。
13.根据权利要求1所述的方法,其中,使用所述光束平差的所述结果包括:更新所述三维模型,所述更新包括更新所述三维模型中的一个或多个关键点的位置。
14.根据权利要求1所述的方法,其中,使用所述光束平差的所述结果包括:确定所述头戴式装置在所述特定姿势下相对于所述三维模型的位置。
15.根据权利要求1所述的方法,其中,大约同时捕获所述第一图像和所述第二图像。
16.一种编码有指令的非暂时性计算机存储介质,所述指令在由一个或多个计算机执行时使得所述一个或多个计算机执行包括以下的操作:
从头戴式装置接收用于所述头戴式装置的特定姿势的图像数据,所述图像数据包括(i)来自所述头戴式装置的第一相机的第一图像和(ii)来自所述头戴式装置的第二相机的第二图像;
识别环境的三维模型中的在所述第一图像和所述第二图像中被至少部分地表示的至少一个关键点;
通过联合优化(i)基于所述第一图像和所述第二图像的针对所述至少一个关键点的重投影误差和(ii)基于所述第一图像和所述第二图像的针对所述至少一个关键点的极线误差,使用所述第一图像和所述第二图像执行光束平差;以及
使用所述光束平差的结果来执行以下中的至少一个:(i)更新所述三维模型,(ii)确定所述头戴式装置在特定姿势下的位置,或(iii)确定所述第一相机和所述第二相机的外在参数。
17.根据权利要求16所述的计算机存储介质,包括:基于更新的三维模型,提供输出以供所述头戴式装置显示。
18.根据权利要求16所述的计算机存储介质,其中,所述极线误差是所述头戴式装置的变形导致与所述头戴式装置的校准的差异的结果。
19.根据权利要求16所述的计算机存储介质,包括:基于所述第一图像和所述第二图像,确定用于所述第一相机和所述第二相机的一组外在参数。
20.一种系统,包括一个或多个计算机和一个或多个存储设备,在所述一个或多个存储设备上存储有指令,所述指令可操作以在由所述一个或多个计算机执行时使得所述一个或多个计算机执行包括以下的操作:
从头戴式装置接收用于所述头戴式装置的特定姿势的图像数据,所述图像数据包括(i)来自所述头戴式装置的第一相机的第一图像和(ii)来自所述头戴式装置的第二相机的第二图像;
识别环境的三维模型中的在所述第一图像和所述第二图像中被至少部分地表示的至少一个关键点;
通过联合优化(i)基于所述第一图像和所述第二图像的针对所述至少一个关键点的重投影误差和(ii)基于所述第一图像和所述第二图像的针对所述至少一个关键点的极线误差,使用所述第一图像和所述第二图像执行光束平差;以及
使用所述光束平差的结果来执行以下中的至少一个:(i)更新所述三维模型,(ii)确定所述头戴式装置在特定姿势下的位置,或(iii)确定所述第一相机和所述第二相机的外在参数。
CN202180093587.3A 2020-12-14 2021-12-03 使用极线约束的光束平差 Pending CN116848493A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063125137P 2020-12-14 2020-12-14
US63/125,137 2020-12-14
PCT/US2021/061805 WO2022132464A1 (en) 2020-12-14 2021-12-03 Bundle adjustment using epipolar constraints

Publications (1)

Publication Number Publication Date
CN116848493A true CN116848493A (zh) 2023-10-03

Family

ID=82058041

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180093587.3A Pending CN116848493A (zh) 2020-12-14 2021-12-03 使用极线约束的光束平差

Country Status (5)

Country Link
US (1) US20240085977A1 (zh)
EP (1) EP4260162A1 (zh)
JP (1) JP2023554001A (zh)
CN (1) CN116848493A (zh)
WO (1) WO2022132464A1 (zh)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017129567A (ja) * 2016-01-20 2017-07-27 キヤノン株式会社 情報処理装置、情報処理方法、プログラム
US10705598B2 (en) * 2017-05-09 2020-07-07 Microsoft Technology Licensing, Llc Tracking wearable device and handheld object poses
US10437065B2 (en) * 2017-10-03 2019-10-08 Microsoft Technology Licensing, Llc IPD correction and reprojection for accurate mixed reality object placement

Also Published As

Publication number Publication date
US20240085977A1 (en) 2024-03-14
WO2022132464A1 (en) 2022-06-23
EP4260162A1 (en) 2023-10-18
JP2023554001A (ja) 2023-12-26

Similar Documents

Publication Publication Date Title
CN110322500B (zh) 即时定位与地图构建的优化方法及装置、介质和电子设备
CN108700947B (zh) 用于并发测距和建图的系统和方法
CN107748569B (zh) 用于无人机的运动控制方法、装置及无人机系统
CN108700946B (zh) 用于并行测距和建图的故障检测和恢复的系统和方法
CN109461208B (zh) 三维地图处理方法、装置、介质和计算设备
JP2021120844A (ja) 車両の位置特定に用いられる方法、装置、電子デバイス及び記憶媒体
CN110595494A (zh) 地图误差确定方法和装置
CN110349212B (zh) 即时定位与地图构建的优化方法及装置、介质和电子设备
JP2015513662A (ja) 深度カメラを使用した頭部姿勢トラッキング
JP7422105B2 (ja) 路側計算装置に用いる障害物3次元位置の取得方法、装置、電子デバイス、コンピュータ可読記憶媒体、及びコンピュータプログラム
CN105431708A (zh) 图像处理装置、图像处理方法以及程序
WO2022188334A1 (zh) 定位初始化方法和装置、设备、存储介质、程序产品
US11620755B2 (en) Method and system for tracking trajectory based on visual localization and odometry
JP7351892B2 (ja) 障害物検出方法、電子機器、路側機器、及びクラウド制御プラットフォーム
JP2022130588A (ja) 自動運転車両の位置合わせ方法、装置、電子機器及び車両
CN112731503B (zh) 一种基于前端紧耦合的位姿估计方法及系统
CN111783611B (zh) 无人车的定位方法、装置、无人车及存储介质
CN112085842B (zh) 深度值确定方法及装置、电子设备和存储介质
WO2023140990A1 (en) Visual inertial odometry with machine learning depth
CN114187509B (zh) 对象定位方法、装置、电子设备以及存储介质
Calloway et al. Three tiered visual-inertial tracking and mapping for augmented reality in urban settings
CN116848493A (zh) 使用极线约束的光束平差
JP2023020877A (ja) ポーズを推定する方法及び装置
CN112880675B (zh) 用于视觉定位的位姿平滑方法、装置、终端和移动机器人
US11847750B2 (en) Smooth object correction for augmented reality devices

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination