CN111868786A - 跨设备监控计算机视觉系统 - Google Patents
跨设备监控计算机视觉系统 Download PDFInfo
- Publication number
- CN111868786A CN111868786A CN201980018922.6A CN201980018922A CN111868786A CN 111868786 A CN111868786 A CN 111868786A CN 201980018922 A CN201980018922 A CN 201980018922A CN 111868786 A CN111868786 A CN 111868786A
- Authority
- CN
- China
- Prior art keywords
- mdd
- point cloud
- camera
- determining
- transformation
- 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.)
- Granted
Links
- 238000012544 monitoring process Methods 0.000 title abstract description 7
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims description 169
- 230000009466 transformation Effects 0.000 claims description 93
- 238000012545 processing Methods 0.000 claims description 72
- 230000004807 localization Effects 0.000 claims description 26
- 238000004891 communication Methods 0.000 claims description 21
- 230000003190 augmentative effect Effects 0.000 claims description 14
- 238000013459 approach Methods 0.000 claims description 7
- 230000007423 decrease Effects 0.000 claims description 6
- 230000002829 reductive effect Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 description 37
- 238000010586 diagram Methods 0.000 description 16
- 230000002085 persistent effect Effects 0.000 description 16
- 238000004590 computer program Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 239000013598 vector Substances 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 6
- 230000001427 coherent effect Effects 0.000 description 5
- 230000002787 reinforcement Effects 0.000 description 5
- 238000000844 transformation Methods 0.000 description 5
- 230000003247 decreasing effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 238000012935 Averaging Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 3
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 description 2
- 238000004883 computer application Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000011478 gradient descent method Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000032258 transport Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000035807 sensation Effects 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 210000003813 thumb Anatomy 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/20—Linear translation of whole images or parts thereof, e.g. panning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/73—Determining position or orientation of objects or cameras using feature-based methods
- G06T7/74—Determining position or orientation of objects or cameras using feature-based methods involving reference images or patches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/70—Determining position or orientation of objects or cameras
- G06T7/77—Determining position or orientation of objects or cameras using statistical methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/20—Scenes; Scene-specific elements in augmented reality scenes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20076—Probabilistic image processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/30—Subject of image; Context of image processing
- G06T2207/30244—Camera pose
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Multimedia (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Life Sciences & Earth Sciences (AREA)
- Processing Or Creating Images (AREA)
- Image Processing (AREA)
Abstract
监控计算机视觉(CV)系统可以包括与移动设备上的原始CV系统以并行方式运行的辅助CV系统。辅助CV系统被配置为以低于原始CV系统的频率运行。然后,在这些频率较低的样本图像上运行CV算法,从而生成将设备本地化到参考点云(例如,可通过网络提供),和用于在原始CV系统的本地点云和参考点云之间进行变换的信息。接着,可将AR内容相对于会聚CV系统的坐标空间一致地定位,并在移动设备的显示器上将其可视化。多种相关算法有助于该系统的高效运行。
Description
交叉引用
本申请根据35U.S.C.§119(e)要求2018年1月11日提交的序列号为62/616,366的美国临时专利申请、2018年1月11日提交的序列号为62/616,368的美国临时专利申请以及2018年3月26日提交的序列号为62/648,241的美国临时专利申请的优先权,出于全部目的,上述申请的全部内容通过引用合并于此。
技术领域
本公开涉及用于计算机视觉(Computer Vision,CV)和增强现实(AugmentedReality,AR)的系统和方法。更具体地,涉及用于以改善的精度和准确性跨设备和平台定位由计算机生成的增强现实内容的系统和方法。
发明内容
本公开提供了与计算机视觉和增强现实有关的系统、装置和方法。
在一些实施方案中,一种用于显示增强现实(AR)内容的计算机实现的方法可以包括:由移动数字设备(Mobile Digital Device,MDD)通过计算机网络接收与环境中的可跟踪特征对应的参考点云和AR内容项,其中AR内容项包括相对于参考点云定义的AR定位信息,并且MDD设置在环境中;使用MDD的相机和计算机视觉(CV)系统确定该MDD相对于参考点云的位置和方向;以及使用所确定的位置和方向在MDD的显示器上将AR内容项可视化;其中确定该MDD相对于参考点云的位置和方向包括使用处理逻辑执行加权随机采样一致性(Random Sample Consensus,RANSAC)方法以估计相机的姿态,其中加权RANSAC方法包括:执行RANSAC算法以确定当前估计姿态,使用内点距离阈值确定内点并基于所计算的多个点的权重来选择对应关系;根据每个点与当前内点距离阈值之间的相应关系,更新所计算的多个点的权重;根据当前内点距离阈值和当前合格作为内点的点的数量,确定当前估计姿态的强度;以及重复地执行RANSAC算法、更新所计算的权重以及确定当前估计姿态的强度,并随每次迭代自动减小内点距离阈值。
在一些实施方案中,一种用于观看增强现实(AR)内容的系统可以包括:设置在环境中并与计算机网络通信的移动数字设备(MDD),该MDD包括相机、显示器和处理逻辑,其被配置为:通过计算机网络从服务器接收与环境中的可跟踪特征对应的参考点云和AR内容项,其中AR内容项包括相对于参考点云定义的AR定位信息;以及使用MDD的计算机视觉(CV)系统和相机,确定该MDD相对于参考点云的位置和方向;其中确定该MDD相对于参考点云的位置和方向包括使用处理逻辑执行加权随机采样一致性(RANSAC)方法以估计相机的姿态,其中加权RANSAC方法包括:执行RANSAC算法以确定当前估计姿态,使用内点距离阈值确定内点并基于所计算的多个点的权重选择候选对应关系;根据每个点与当前内点距离阈值之间的相应关系,更新所计算的多个点的权重;根据当前内点距离阈值和当前内点的数量,确定当前估计姿态的强度;以及重复地执行RANSAC算法、更新所计算的权重以及确定当前估计姿态的强度,并随每次迭代自动减小内点距离阈值。
本公开的特征、功能和优点可以在本公开的各实施方案中独立地实现,或者可以在其它实施方案中进行组合,进一步的细节可以参考以下描述和附图。
附图说明
图1为包括在环境中操作的多个移动数字设备(MDD)的说明性会聚(convergent)CV系统的示意图。
图2为描绘一种说明性会聚CV方法的步骤的流程图,其示出了运行根据本教导的运行会聚CV系统的MDD上的AR内容的显示概况。
图3为说明一种用于显示AR内容的方法的步骤的示意图。
图4为说明一种用于显示AR内容的方法的第二步骤的示意图。
图5为说明一种用于显示AR内容的方法的第三步骤的示意图。
图6为描绘根据本公开的一种用于执行迭代加权RANSAC的说明性方法的步骤的流程图。
图7为在两个不同姿态下由相机观察到的点云的示意图,其示出了参考点云以及相机姿态的相应变换。
图8为根据本公开的一种用于执行带约束的束调整(constrained bundleadjustment,CBA)的说明性方法的步骤的流程图。
图9为适合与本公开的各方面一起使用的一种数据处理系统(AKA计算机)的示意图。
具体实施方式
在下文描述并在相关附图中说明了与跨设备监控(Supervisory)计算机视觉(CV)系统有关的方法和系统的多个方面和实例,包括与所描述的点云有关的图像的本地化以及增强现实(AR)内容的本地化和定位。除非另有说明,否则根据本教导的监控CV系统和/或其多种组件可包含在本文中描述、说明和/或并入的结构、组件、功能和/或变型中的至少一种。此外,除非明确地排除,否则其它类似的设备和方法可以包括结合本教导而在本文中描述、说明和/或并入的工艺步骤、结构、组件、功能和/或变型,且可包括在公开的实施方案之间的互换。以下多个实例的描述本质上仅是说明性的,而非限制本公开以及其应用或用途。另外,由以下描述的实例和实施方案提供的优点本质上是说明性的,并且并非所有实例和实施方案都可以提供相同的优点或相同程度的优点。
本具体实施方式随后包括以下章节:(1)定义;(2)概述;(3)实例、组件和替选方案;以及(5)结论。其中“实例、组件和替选方案”章节进一步分为A小节至E小节,每个小节均相应标记。
定义
除非另外指出,否则以下定义在本文中适用。
“基本上”是指或多或少地符合由该术语修饰的特定尺寸、范围、形状、概念或其它方面,所以特征或组件不需要精确地符合。例如,“基本上圆柱形”的对象意味着该对象类似于圆柱体,但是可能与真实圆柱体有一个或多个偏差。
“包括”,“包含”和“具有”(及其变形)可互换使用,以表示包括但不必限于此,并且它们是开放式术语,而不排除其它未引用的元素或方法步骤。
诸如“第一”、“第二”和“第三”之类的术语用于区分或标识组中的各个成员等,并且不旨在示出顺序序列或数值数字限制。
“AKA”意为“也称为”,可以用于指示给定单个或多个元素的别称或对应术语。
“耦合(coupled)”是指通过中间组件直接或间接地、永久性或可释放地连接的,并且不必然限于物理连接。
“处理逻辑”是指用于通过执行一个或多个逻辑和/或算术运算(例如,执行编码指令)来处理数据的任何合适的设备或硬件。例如,处理逻辑可以包括一个或多个处理器(例如,中央处理单元(Central Processing Unit,CPU)和/或图形处理单元(GraphicsProcessing Unit,GPU))、微处理器、处理核心集群、FPGA(Field-Programmable GateArray,现场可编程门阵列)、人工智能(Artificial Intelligence,AI)加速器、数字信号处理器(Digital Signal Processor,DSP)和/或逻辑硬件的任何其它适当的组合。
“AR技术”指的是许多技术的组合,包括所有形式的计算机视觉、结构化光(例如红外光和激光)、惯性测量单元(inertial measurement unit,IMU)(例如陀螺仪、指南针、加速度计)、不可见波(例如声纳)、运动库(例如行人航位推算(Pedestrian Dead Reckoning,PDR))和/或这样的技术:其可以关联或根据点或位置来确定几何形状——该点或位置用于将AR内容(例如插图(artwork))或AR事件与具有AR功能的视觉设备的任何观看者或用户附近的几何空间现实或本地物理环境对齐。
“可跟踪(物)(trackable)”是指这样的特征(例如,现实世界环境中的物理特征或对象)或(可以利用AR技术进行跟踪的)特征集,该特征或特征集已被辨识并且已具有这样的数据:该数据使移动设备能够识别该特征并计算该特征相对于所记录或存储的移动设备的位置。在一些情况下,该数据包括估计的或实际的地理坐标位置,例如下文所述的WGS坐标或基于单元格的坐标。可跟踪物可以向移动数字设备(MDD)提供相对位置和姿态信息。
“AR内容(AR content)”包括由用户或开发者通过任意数量的计算设备创建的任何将要在AR中体验的视觉、听觉、触觉或其他感官事件。这些事件可包括图像、动画、实景镜头、程序、代码、声音或触觉反馈(例如,模拟触感所施加的振动或力),以及可以构造这些事件的对象层级(包括但不限于着色器、粒子、光、体素、替身、脚本、程序、程序对象、图像或视觉效果)。
“AR应用程序(AR application)”是配置为显示(或以其他方式呈现)叠加在现实世界环境的实时视图上(或并入其中)的AR内容的任何合适的计算机应用程序。AR应用程序可以存储在计算机设备中,该计算机设备包括至少一个本地存储设备以存储计算机应用程序和用户数据。
概述
通常,根据本教导的监控或“会聚”CV系统可以包括在每个所连接的设备上与主要或“原始(native)”CV系统以并行方式运行的辅助CV系统。会聚CV系统的辅助CV系统配置为比原始CV系统运行得慢(例如,每30帧而不是每帧对图像进行采样)。然后,在这些频率较低的样本图像上运行计算机视觉算法,从而生成信息以将设备本地化到参考点云(例如,通过网络提供),以及在原始CV系统的本地点云和参考点云之间进行变换。通过网络访问和共享相关数据的会聚CV系统软件的单个独立实例可以在成为整个系统一部分的每个设备上运行。这种设置可以促进甚至单个设备的重新本地化,从而可以在跨设备的基础上实现持久性的内容。通常,在会聚CV系统的点云坐标空间和原始CV系统的本地坐标空间之间计算变换。然后,可将AR内容相对于会聚CV系统的坐标空间一致地定位,并在移动设备的显示器上实现其可视化。本文描述了多种相关算法,以促进该系统的有效运行。
例如,两种改进的算法有助于简化此方案,每种算法可以单独使用,也可以彼此联合使用。首先,可以使用迭代加权RANSAC(“随机采样一致性”)方法在相机相对于大的点云的位置本地化中提供出色的鲁棒性。该改进的算法在本文中称为加权RANSAC或WRANSAC(Weighted RANSAC)。第二,在本文中称为带约束的束调整(CBA)方法的改进束调整方法采用了相机位置(例如,来自WRANSAC方法)和原始CV的姿态,并改善了相对于点云的位置,以创建用于将AR内容相对于会聚系统的云进行定位(例如,在辅助系统的频率较低的帧之间)的优化变换。
除了提高准确性和精度之外,本公开的系统和方法还解决了已知系统的以下方面的问题:(a)无法将不同的CV系统独立地重新本地化到同一空间,其中“本地化”是指确定对象相对于特定坐标系的姿态;(b)难以将具有不同CV系统的两个设备定位在同一空间中,即理解它们的相对位置;以及(c)甚至无法将两个具有相同CV类型(例如ARKit,ARCore)的设备在同一空间相对于彼此进行重新本地化。
本文公开了以改进的精度和准确性来跨设备和平台定位由计算机生成的增强现实内容的技术方案。所公开的系统和方法解决了与计算机视觉和AR技术有关的技术问题。在本文中公开的系统和方法通过(除其它方面外)实现用于本地化、内容定位以及跨设备和/或平台的协调的改进算法来解决该技术问题。因此,所公开的系统和方法不仅列举了一些已知方法的性能,还要求在计算机上执行该方法。确切地说,它们提供了必须来源于计算机技术的解决方案以克服计算机领域中具体出现的问题。
本文描述的会聚CV系统的各方面可以体现为计算机方法、计算机系统或计算机程序产品。因此,会聚CV系统的各方面可以采取处理逻辑实施方案、完全硬件实施方案、完全软件实施方案(包括固件、驻留软件、微代码等)或软件和硬件组合实施方案的形式,所有这些实施方案形式在本文中通常都可以称为“电路”、“模块”或“系统”。此外,该会聚CV系统的各方面可以采取在计算机可读介质中体现的计算机程序产品的形式,该计算机可读介质具有体现在其上的计算机可读程序代码/指令。
计算机可读介质的任意组合都可以利用。计算机可读介质可以是计算机可读信号介质和/或计算机可读存储介质。
计算机可读存储介质可以包括电子、磁性、光学、电磁、红外和/或半导体系统、装置或设备,或以上的任何适当组合。计算机可读存储介质的更具体实例可以包括以下内容:具有一根或多根电线的电连接器、便携式计算机磁盘、硬盘或固态驱动器、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、光纤、便携式光盘只读存储器(CD-ROM)、光学存储设备、磁存储设备和/或任何以上和/或类似物的适当组合。在本公开的上下文中,计算机可读存储介质可以包括包含或存储供指令执行系统、装置或设备使用或与其结合使用的程序的任何合适的非暂时性有形介质。
另一方面,计算机可读信号介质可以包括例如在基带中或作为载波的一部分传播的数据信号,该传播的数据信号具有体现在其中的计算机可读程序代码。这样所传播的信号可以采取多种形式中的任何一种形式,包括但不限于电磁、光学和/或其任何合适的组合。计算机可读信号介质可以包括非计算机可读存储介质并且能够通信、传播或传输供指令执行系统,装置或设备使用或与其结合使用的程序的任何计算机可读介质。
可以使用任何适当的介质来传输在计算机可读介质上体现的程序代码,包括但不限于无线、有线、光缆、RF等,和/或以上内容的任何适当的组合。
可以用合适的编程语言中的一种或任意组合来编写用于执行会聚CV系统各方面的操作的计算机程序代码,包括Java、C++和/或其它面向对象的编程语言,以及例如C语言的常规程序编程语言。可以使用任何适当的语言(包括前面提到的语言)以及Objective-C、Swift、C#、HTML5等来开发移动应用程序。程序代码可以作为独立软件包完全地在用户计算机上、部分地在用户计算机上、部分地在用户计算机上并且部分地在远程计算机上、或者完全地在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络(包括局域网(LAN)或广域网(WAN))连接到用户计算机,和/或可以与外部计算机建立连接(例如,通过互联网服务提供商的互联网)。
下面参考方法、装置、系统和/或计算机程序产品的流程图和/或框图描述会聚CV系统的各方面。流程图和/或框图中的每个方框和/或方框的组合可以由计算机程序指令来实现。可将计算机程序指令提供给相关的处理逻辑,例如通用计算机、专用计算机或其它可编程数据处理设备的处理器,以组成机器,从而由通过计算机的处理器或其它可编程数据处理装置执行的指令创建用于实现流程图和/或框图方框中指定的功能/动作的设备。在一些实例中,可将机器可读指令编程到例如现场可编程门阵列(FPGA)的可编程逻辑设备上。
这些计算机程序指令还可以存储在计算机可读介质(例如,计算机可读存储介质)中,该计算机可读介质可以指导计算机、其它可编程数据处理装置和/或其它设备以特定方式运行,从而使存储在计算机可读介质中的指令形成包括指令的制品,其中该指令可实现在流程图和/或框图方框中指定的功能/动作。
还可将计算机程序指令加载到计算机、其它可编程数据处理装置和/或其它设备上,以通过在该所述设备上执行一系列操作步骤产生由计算机实现的流程,从而使得在计算机或其它可编程装置上执行的指令提供用于实现流程图和/或框图方框中指定的功能/动作的流程。
附图中的任何流程图和/或框图旨在说明根据会聚CV系统的多方面的系统、方法和计算机程序产品可能实现的架构、功能和/或操作。就这一点而言,每个方框可以代表模块、段或代码的一部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些实施方式中,方框中指出的功能可以不按附图中指出的顺序发生。例如,取决于所涉及的功能,实际上可以基本上同时执行连续示出的两个方框,或者可以以相反的顺序执行这些方框。每个方框和/或方框的组合可以由执行指定功能或动作的基于专用硬件的系统(或专用硬件和计算机指令的组合)实现。
实例、组件和替选方案
以下各章节描述了示例性会聚CV系统以及相关系统和/或方法的所选方面。这些章节中的实例旨在说明而不应解释为限制本公开的范围。每个章节可以包括一个或多个不同的实施方案或实例和/或上下文或相关的信息、功能和/或结构。
A.说明性会聚CV系统
如图1-5所示,该章节描述了说明性监控或会聚计算机视觉(CV)系统100和相关方法。该系统100是上文概述章节中描述的会聚系统的实例。
图1是描述了根据本教导的一种利用会聚CV系统100的说明性AR系统的框图。在该实例中,移动数字设备(MDD)102(例如,智能电话)的一个或多个实施方案用于接收关于AR内容的信息并且(即,在MDD的显示器104上)向用户选择性地显示AR内容。在该实例中,机载AR系统106包括AR应用程序108和渲染模块110,其可由机载处理逻辑112(例如中央处理单元(CPU)和/或图形处理单元(GPU))执行。数据通过计算机网络与服务器130交换,并且使用MDD的机载存储器124进行存储。
MDD包括配置为与MDD的相机128以全速(例如30fps或60fps)运行的原始CV系统114,以及作为CV系统100的一部分与相机128一起发挥作用的并行辅助CV系统116。在某些实例中,CV系统114和116统称为MDD的CV系统。尽管本公开的系统是相对于相机126描述的,但是可以使用任何合适的MDD 102的传感器,其中相机128仅仅是一个实例。
AR平台120通过网络在例如服务器130上进行操作,以提供协调和其它特性。查询服务器130的数据存储装置132以返回描述本地环境中的AR内容(对象、可跟踪对象等)的数据(例如,元数据)。该AR数据包括基于所选坐标系的每个AR项目的坐标。AR内容信息以适合于渲染的格式(例如,通过MDD的处理逻辑112)存储(例如,在存储器124中)。渲染模块110使用下载的坐标和其它数据来渲染AR内容。数据存储装置132也可以用于存储关于会聚CV系统的点云的信息。然后可以与任何给定的MDD 102共享该参考点云数据。其它业务逻辑软件126和相关模块可存在于服务器130上。
图2示出了通过使用例如系统100之类的会聚CV系统,在设备之间显示AR内容的说明性方法200的步骤,图3-5提供了方法200的所选方面的视觉表示。本文其它各处所描述的系统的各方面可以在下文所述的方法步骤中使用。在适当的情况下,可以参考可在执行每个步骤时使用的组件和系统。这些参考仅用于说明,而无意限制执行该方法的任何特定步骤的可能的方式。
图2为一种说明性方法中执行的步骤的流程图,并且未列举该方法的完整过程或所有步骤。尽管在下文描述并在图2中描绘了方法200的多个步骤,但是这些步骤不必然全部执行,并且在某些情况下,这些步骤可以同时执行或以与所示顺序不同的顺序执行。
在步骤202,所涉及的MDD从会聚CV系统网络的服务器接收参考点云。
在步骤204,使用MDD(例如,MDD的相机)来观察与参考点云对应的目标。由原始CV系统识别出相应的本地点云。在一些实例中,识别本地点云包括例如使用相机和原始CV系统,基于观察来生成、辨认和/或更新原始CV系统的点云模型。如上文所讨论的,该步骤以第一频率(例如,由原始CV系统定义的标准每秒帧速率)执行。在一些实例中,每帧执行至少一次步骤204。图3描绘了此操作的实例,并示出了原始点云及其原始坐标系和原点。
在每个第N帧(例如,每10到60帧一次,更具体地每30帧一次,等等),步骤206包括使用安装在MDD上的会聚CV系统捕获帧(例如,使用相同或不同的相机)。随后,在步骤208,系统确定MDD相对于参考点云的位置。该步骤可以包括使用WRANSAC方法(如下所述)。在步骤210,系统接着确定从原始点云到参考点云的变换。步骤210可以包括使用CBA方法(如下所述)。图4示出了参考点云及其对应的坐标系和原点的实例,以及具有相对于会聚CV参考坐标系定义的位置的说明性AR内容项。
在步骤212,在MDD的显示器上显示AR内容(例如,图4-5中所示),其中AR内容的位置是通过将在步骤210中确定的变换应用于原始(即通过原始CV系统)确定的位置来确定的。参见图5。因此,步骤210中的变换用于“校正”AR内容的位置。由于耦合到网络的所有MDD都可以访问参考点云,因此可以在跨设备的基础上为所有此类MDD在一致的现实世界位置中显示AR内容。步骤212由原始CV系统使用最新的变换以第一频率(例如,每帧)执行。如上所述,以较低的第二频率(例如,每30帧一次)更新系统所使用的变换。
B.说明性加权RANSAC方法
本章节描述了用于相对于所描述的点云进行图像的本地化的一种说明性加权RANSAC(随机采样一致性)方法600的步骤;参见图6。该方法600可以通过一个或多个便携式设备(例如,MDD)和/或具有网络连接的服务器(例如,服务器130)的处理逻辑来执行。可以在以下描述的方法步骤中利用上述系统和方法的各方面。在适当的情况下,可以参考可在执行每个步骤时使用的组件和系统。这些参考仅用于说明,而无意限制执行该方法的任何特定步骤的可能方式。
通常,与缩小、加权、迭代RANSAC方法有关的系统和方法可以包括计算机视觉有关的应用程序(软件和/或硬件/处理逻辑)或与之相关联。这些系统和方法(在迭代和缩小的意义上)利用新的迭代加权RANSAC(WRANSAC)方法进行迭代以确定模型参数。WRANSAC方法600用于将相机的位置本地化到参考点云,其也可以推广到其它用途。本地化至大的数据集是一个难题,而数据集越大,难度越高。
标准RANSAC是一种迭代技术,用于根据包含外点(由于噪声等)的观测数据集来估算数学模型的参数。RANSAC是一种不确定性算法,其只能以一定的概率产生合理的结果。概率会随着迭代次数而增加。
在CV系统环境下,已知的RANSAC方法的操作如下所述。从可能的对应关系云中,该方法选择一个较小的数字,通常为三种。然后,该方法假定这三种对应关系正确,并为这三种对应关系创建最佳相机姿态。接着将所有点重投影回屏幕。之后通过使用截止阈值(例如3个像素),该方法确定哪些对应关系是“内点”(即正确的),哪些是“外点”。然后对一个一组的对应关系重复先前步骤,直至找到满足某些现有标准(例如,具有最内点)的对应关系。然后运行最后的透视n点(Perspective-n-Point,PnP)算法以估计相机的姿态。
该基础RANSAC算法的性能无法随点云的大小而缩放。这是因为,随着云规模的增加,在任意的随机对应关系集中找到内点的机会出现指数级恶化。换句话说,随着外点百分比的增加,找到较好的姿态所花费的时间会大幅增加。由于较大的点云通常具有较高百分比的“不良”数据,因此基础RANSAC解决方案不够充分。
本公开的WRANSAC方法通过缩小的方式进行运作,以在即使具有噪声数据的多个点的大子集的情况下也能快速找到相干姿态。这些方法以两种方式解决上述问题。首先,不是随机选择三个(或许多)点对,而是进行加权随机选择,从而使某些点比其它点被更频繁地被选择到。其次,不是从头开始并且每次都从完整的点池中进行选择,而是利用了多个阶段,其中在每个阶段会比内点池去除更多的外点池部分。因此,内点值与外点值之间的比率会随着时间提高。
图6为说明了在一种说明性方法中执行的步骤的流程图,其未列举该方法的完整过程或所有步骤。尽管下文描述并在图6中描绘了方法600的多个步骤,但是这些步骤不必然全部执行,并且在某些情况下,这些步骤可以同时执行或以与所示顺序不同的顺序执行。
在步骤602,从相对较大的内点距离(例如280px)开始计算内点距离阈值。每迭代一次,此内点距离阈值都会计算得更小。
然后,在步骤604,使用WRANSAC方法估计相机的姿态。具体地,步骤604A包括选择预定数量(例如3)的点对。此选择首先基于先验知识考虑点的权重(基于适应度),然后随着整个方法的迭代进行更新。该权重指示了给定点成为内点的可能性。例如,初始点加权可以基于与数据相关联的已知跟踪误差(例如,跟踪误差的倒数的函数)和/或配置为近似内点状态的可能性的适当因子的任意组合。在一些实例中,该点与例如ORB的描述符相匹配,并且可以将初始权重设置为倒数匹配距离的函数,以使那些“更近”的点的权重更大。在一些实例中,初始权重可以是包含给定3D点的帧数量函数(指示在其它帧中存在的可能性)。在一些实例中,初始加权可以是随机的或伪随机的,这取决于改善适应度近似性的随后的迭代。
无论初始加权方法如何,点的权重都会影响每个点在步骤604A中被选择的可能性。然后,步骤604B包括在假定这些点对有效的情况下计算相机的姿态。步骤604C包括使用该相机姿态来重投影三维(3D)点,并基于在步骤602中确定的距离来确定内点。步骤604D包括以最大次数重复步骤604A至604C或直到找到满意的姿态。此过程可以返回具有最大内点数量的姿态。
在步骤606,通过(重新)计算每个点的适应度来更新点的权重。使用来自步骤604的假定相干姿态,将所有点重投影,并将这些点与步骤602的内点距离阈值进行比较。基于它们与内点距离阈值之间的关系,为每个点赋予新的权重。例如,可以为选定阈值或截止点以上的所有点赋予最小的非零权重,同时在曲线上对阈值内的所有点进行加权。应注意的是,在给定的迭代中,对超出阈值的点赋予非零权重。这确保了(a)当只有一个或两个点在阈值限制内时该方法不会结束,并且确保了(b)尽管机会很小,但是所有点都有机会在下一轮被选中。
在步骤608,进一步加强落入当前内点距离阈值内的点。每次迭代都会返回与特定姿态一致的多个内点。赋予这些内点额外的权重(例如乘以2)。在一些实例中,该加强因子可以随每次迭代(即,随着内点距离阈值降低)而增加。
为了找到尽可能小的内点距离阈值,同时还具有可接受数量的内点,该方法进行检查以确保在两者之间保持理想的平衡。例如,在步骤610中,基于内点的数量和当前内点距离阈值,计算当前姿态的强度。与先前的迭代相比,此强度或适应度量度用于监测当前迭代产生的姿态更好还是更差。因此,步骤612包括恢复至先前的姿态。同时,步骤614包括如果适应度没有变差,则将最佳的已知姿态更新为当前姿态。
返回到步骤602,然后自动减小内点距离阈值。例如,内点距离可以在每次迭代中减半。
以下是与方法600基本相似的说明性WRANSAC方法的伪代码描述,后面是伪代码描述多个方面的注释:
var权重,先前相机,内点
补充权重(权重)
for(int迭代次数=0;迭代次数<i的结束值;迭代次数++):
内点距离=距离函数(迭代次数,i的开始值)
解出PnP加权RANSAC(3D点,2D点,权重,相机,内点距离,内点)
计算新权重(权重,3D点,2D点,相机,内点距离)
加强(内点,权重)
var强度=计算强度(内点,内点距离)
if(强度<先前强度):
return先前相机
先前相机=相机
return相机
通过将点的最终权重用作第二帧的初始权重(实质上从竞争中删除了许多权重),可以将上述函数扩展到两帧本地化而不是单帧本地化。在一些实例中,可以完全移除权重低于阈值(动态或静态)的点。
加强(加强())
加强会增加点的特定子集的权重。加强的一种实现方式是将所有内点的权重乘以固定数(例如2)。由于内点是所发现的最大相干内点集,因此这提高了收敛为较大的相干集的速度。
加强曲线(加强(内点、权重、迭代次数))
除了具有固定的乘数之外,加强还可以在曲线上进行操作,以根据经过了多少次迭代来增加或减少加强量。在一些实例中,加强可以基于先前已经对某个点进行了何种加强而变化。
距离函数
距离函数用于计算给定迭代次数使用的内点距离。默认的内点距离曲线从特定的数字开始(例如280个像素),然后对于每次连续的迭代将其除以2(140、70、35等),从而以迭代的方式缩小内点距离。
适应度(计算新权重:
适应度(即每个点新计算的权重)旨在接近给定点处于最终相干姿态的概率。
该算法的工作原理是从点集中以加权方式随机选择三个点,从这三个点计算出理想的相机姿态,然后重投影3D点,并查看3D点中有多少内点。重复此过程,直到找到“良好”的匹配(或达到迭代上限)。因此,可将给定点成为内点的次数可(在一些实例中)用于其作为内点的总体可能性的粗略近似,并由此代替其处于最终相干姿态的可能性。
在一些实例中,将重投影误差之和的倒数而不是内点的数量用于每个姿态,该倒数是较为连续的数字。可以限制重投影误差的大小,以避免误差量级掩盖其它因子的情况。在一些实例中,该上限可以设置为内点距离的两倍。
在一些实例中,可以通过从每次迭代获取相干姿态,将多个点重投影到该姿态中,然后将重投影误差的倒数(或补数)用作权重来生成适应度。与上述方法类似,这需要设置上限。如果使用倒数,则将指定最小重投影误差,以避免除以很小的数字。如果将方法改为从选定的数字中减去重投影误差以获得权重,则可以将要减去的所选数字设置为内点距离的两倍。需要将其限制在零以上,以避免负权重。
通过使用上述方法,集合有时可能会退化,这是因为一个或两个点的权重变为无穷大,或者除该一个或两个点之外的所有权重都变为零。这意味着标准加权选择算法将不合理地占用较长的时间。尽管可以使用非标准算法,但简单地将任何权重的下限设置为较小的数字(例如0.5或最高值的百分之一)会更有利。
停止标准和强度
与普通的RANSAC不同,由于内点距离是单调递减的,因此无法简单地选择内点数量最多的结果。相反地,“强度”得分是考虑内点距离和内点数量而计算得到的。例如,该强度得分可以通过以下方式确定:sigmoid=-1/(1+2^(-(内点距离-20)/6))+1,其中如果内点数量高于75,则强度=(24.265*Sigmoid),否则强度=(内点数量–内点数量^1.45)*sigmoid。
C.说明性带约束的束调整方法
本章节描述了如上所述的用于确定原始坐标系和参考坐标系之间的优化数学变换的说明性带约束的束调整(CBA)方法800的步骤;参见图8。可以在下文描述的方法步骤中利用上述系统和方法的各方面。在适当的情况下,可以参考可在执行每个步骤时使用的组件和系统。这些参考仅用于说明,而无意限制执行该方法的任何特定步骤的可能方式。
通常,带约束的束调整(CBA)(在本文中也称为双目标束调整或多目标束调整)是对标准束调整算法的新扩展,以向最小化的函数添加其它约束或组成部分。通常使用已知的束调整(BA)方法将两个相机空间上的重投影误差最小化。在给定姿态列表、点云中的3D点列表以及投影矩阵列表的情况下,基本BA方法的目标是同时重新调整相机的姿态和3D点,以便将它们在屏幕上的重投影误差最小化。常规BA的最小化函数基于重投影误差。然后应用例如梯度下降或Levenberg Marquardt之类的方法使重投影误差最小化,同时优化多个点的3D位置和相机的姿态。
更具体地,可以如下描述基本的BA方法。BA方法通常尝试同时优化初始相机和结构参数估计集,以找到可准确预测可用图像集中观察点的位置的参数集。具体地,对于所有3D点和相机参数,BA方法使“总重投影误差”函数最小化(例如,使用梯度下降等)。这可以用如下数学公式表示:
其中在m个视图中可以看到n个三维点;xij是第i个点在图像j上的投影;vij是二进制变量,如果在图像j中可以看见点i,其设置为1,否则设置为0;每个相机j通过向量aj参数化;每个三维点由矢量bi参数化,Q(aj,bi)是点i在图像j上的投影;d(x,y)是向量x和y表示的图像点之间的欧几里得距离。
本公开解决的问题在于存在第二组相机,我们需要找出两组相机之间的变换。常规BA可以用于姿态不同的一台相机。但是,此处的目标是找出在第一相机(原始CV)和第二相机(会聚CV)之间转换的变换。CBA的解决方案包括为误差(最小化了的)添加一个或多个附加参数,以及为最小化函数本身添加一个或多个附加项。具体地说,在CBA的此实例中,附加参数是原始CV和会聚CV相机位置之间的变换T,而附加项是变换后相机的结果之间的差异。
具有相当精确的本地定位系统(例如使用旋转编码器、本地计算机视觉系统等的PDR)和用于相对于现有描述的点云定位设备位置的CV系统(例如会聚CV系统)的设备可以使用CBA来提高相对于云的定位精度以及云本身的精度,并且可以计算本地定位系统坐标空间与所描述的点云的坐标空间之间的精确变换。
大体上,CBA包括首先获取多个相对于云的设备位置(以及在这些时间时的2D-3D点的对应关系等),以及这些时间时本地空间中的设备的位置。然后在本地位置和云位置之间计算初始变换。接着通过运行CBA扩展最小化函数,以包括变换后的原始相机(此处为相机的位置+方向)和云相机之间的“误差”,并且扩展待优化的参数,以包括变换系数(旋转和平移矩阵的元素)。之后,可以在两个空间之间进行精确的变换,并且使用本地定位系统提供的附加定位信息对相机相对于云的位置加以改善(根据常规BA,3D点也已经被改善)。
如上文关于系统100所描述的,如图7所示,将第一设备本地化至某些点,然后使用会聚CV系统计算该设备的空间和参考点云的坐标空间之间的变换。AR内容相对于参考点云具有已知位置(例如,使用相同的坐标系)。因此,首先可以将AR内容转换到设备的坐标系,然后渲染该内容,从而利用该变换在第一设备上显示该AR内容。之后,第二设备到达并将其本地化到相同的参考点云。因此,例如,无需知道或存在第一设备,就可以在第二设备上准确地渲染出相同的AR内容。但是,由于会聚CV系统的运行频率低于原始CV系统,因此它变成限制变换精度的因素。此外,由于点云构建涉及由三角测量误差等引起的已知的误差,因此,在某些实例中,需要不断地重新计算和更新变换。这种情况可以通过CBA产生的高级变换解决。
图8为说明了在一种说明性方法中执行的步骤的流程图,并且可能未列举该方法的完整过程或所有步骤。尽管在下文描述并在图8中描绘了方法800的多个步骤,但是这些步骤不必然全部执行,并且在某些情况下,这些步骤可以同时执行或以与所示顺序不同的顺序执行。
在步骤802,两次或更多次(即,n次,其中n>1)地获得设备位置(或姿态)。这些位置包括相对于参考点云定义的参考位置(PR)和相对于本地空间定义的原始位置(PN)。
在步骤804,计算位置PR和PN之间的初始变换T。可以使用任何合适的方法来计算该变换。在一些实例中,该步骤包括获取每对相机之间的旋转差异(伪代码:云相机旋转.转置()*本地相机旋转),并将它们求平均值以产生旋转变换。然后,通过此变换旋转本地相机的3D位置。接着计算每对3D位置之间的差异(伪代码:云相机位置-本地相机位置)并取平均值,以产生平移变换。通过使用更多的位置-对来处理,结果将更加准确。
在步骤806,运行带约束的束调整(CBA)算法以优化变换T。具体地,CBA算法包括如下修改的标准束调整。在步骤806A中,将最小化的函数扩展为包括原始相机(PN)和变换后的参考相机(T(PR))之间的增量。可以将该增量计算为增量(i)的总和,其中增量(i)是在时间i时PN与T(PR)之间的差,并且i=1至n。
在步骤806B,被优化的参数还包括变换T的变换系数。根据以上对BA的解释,步骤806通常可与以下内容对应:
其中αj是每个相机的比例因子,T是仿射变换,t(T,bj)将仿射变换应用于相机bj,其中c是“原始”相机外部向量,并且diff()为函数,其用于计算两个相机外部向量之间的差异量度(与计算重投影的点与屏幕点之间的差异的d()非常类似)。例如,diff()函数可包括相机位置之间差异的范数。在一些实例中,可以将其扩展为相机位置的差异的范数加由罗德里格斯旋转公式使用的矢量之间的差的范数(例如,乘以比例因子)。与束调整方法的所有实施方式一样,本算法的实施方案与该解决方案接近而未进行明显的计算。
在步骤808,通过使用设备相对于参考点云的已知当前位置,相对于参考点云定位AR内容。换句话说,优化后的变换用于在坐标系之间进行转换,并确保将AR内容适当地放置在CV系统和参与设备之间。
一旦计算出设备相对于参考云的当前位置,即可显著简化相对于云放置的AR内容的可视化。另外,参考云定位系统的运行速度比本地/原始定位系统慢(例如,每秒一次而不是一帧一次),并且可以将为最近关键帧的所计算的变换应用于本地定位以产生相对于云的更新更频繁的位置。由于此变换会定期更新而不是连续更新,因此该方法可能会导致AR内容的定位发生“跳跃”。这可以通过几个帧上的旧变换和新变换之间的lerp(线性插值)来解决。处理此问题的其它合适方法可以为卡尔曼滤波器等其它形式。
在一些实例中,不直接使用由CBA计算的变换,而是在本地/原始位置和后CBA的云-相机(会聚CV系统)位置之间计算新的变换,并将其向更近的关键帧加权。这以与计算初始变换(见上文)类似的方式进行,但是会将相关的分量乘以权重,然后将总和除以权重之和。
本文所述的CBA方法使得原始和会聚CV系统相机相互更一致,并使其与点云以及与从原始CV系统收集的实际定位数据更加一致。相机的相对位置用作束调整过程的约束。以三维空间来约束多个相机,从而减少了纵向误差的问题。
D.说明性数据处理系统
如图9所示,该实例描述了根据本公开的各方面的数据处理系统900(也称为计算机、计算系统和/或计算机系统)。在该实例中,数据处理系统900是适合实现本文描述的会聚CV系统的各方面的说明性数据处理系统。更具体地说,在一些实例中,移动数字设备(MDD)可以包括数据处理系统(例如,智能电话、平板电脑、个人计算机)的实施方案。在一些实例中,服务器和其它计算系统可以包括本章节中描述的数据处理系统的实施方案。
在该说明性实例中,数据处理系统900包括系统总线902(也称为通信框架)。系统总线902可以在处理器单元904(也称为处理器)、存储器906、持久性存储装置908、通信单元910、输入/输出(I/O)单元912、编解码器930和/或显示器914之间提供通信。存储器906、持久性存储装置908、通信单元910、输入/输出(I/O)单元912、显示器914和编解码器930是处理器单元904可以通过以下方式经系统总线902访问的资源的实例。
处理器单元904用于运行可以加载到存储器906中的指令。处理器单元904可以包括多个处理器、多处理器核和/或特定类型的一个或多个处理器(例如,中央处理单元(CPU))、图形处理单元(GPU)等),这取决于特定的实现方式。此外,可以使用多个异构处理器系统来实现处理器单元904,其中主处理器与辅助处理器一起设置在单芯片上。作为另一个说明性实例,处理器单元904可以是包含多个相同类型的处理器的对称多处理器系统。
存储器906和持久性存储装置908是存储设备916的实例。存储设备在临时或永久的基础上可以包括能够存储例如数据、函数形式的程序代码和/或其它合适的信息(例如,数字信息)的任何合适的硬件。
也可以将存储设备916称为计算机可读存储设备或计算机可读介质。存储器906可以包括易失性存储器940和非易失性存储器942。在一些实例中,基本输入/输出系统(BIOS)包含用于例如在启动期间在数据处理系统900内的元件之间传递信息的基本例程,并存储在非易失性存储器942中。持久性存储装置908可以采用各种形式,这取决于特定的实现方式。
持久性存储装置908可以包含一个或多个组件或设备。例如,持久性存储装置908可以包括诸如磁盘驱动器(也称为硬盘驱动器或HDD)、固态盘(SSD)、软盘驱动器、磁带驱动器、闪存卡、存储棒和/或其它设备中的一个或多个,或这些设备的任意组合。这些设备中的一个或多个可以是可移动的和/或便携式的,例如,可移动硬盘驱动器。持久性存储装置908可以单独地或与其它存储介质组合地包括一个或多个存储介质,包括例如压缩盘ROM设备(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)和/或数字多功能盘ROM驱动器(DVD-ROM)和其它光盘驱动器。为了方便地将持久性存储装置908连接到系统总线902,通常使用可移动或不可移动接口,例如接口928。
输入/输出(I/O)单元912允许与连接到数据处理系统900的其它设备(即,输入设备和输出设备)进行数据的输入和输出。例如,输入设备932可以包括例如键盘、鼠标、轨迹球、触控笔、触摸板或触摸屏、麦克风、操纵杆、游戏板、卫星碟形天线、扫描仪、电视调谐器卡、数码相机、数码摄像机以及网络相机等的一个或多个指向和/或信息输入设备。这些和其它输入设备可以经由接口端口936通过系统总线902连接到处理器单元904。接口端口936可以包括例如串行端口、并行端口、游戏端口和/或通用串行总线(USB)。
输出设备934可以使用一些相同类型的端口,并且在某些情况下使用相同的实际端口作为输入设备932。例如,USB端口可以用于向数据处理系统900提供输入并将信息从数据处理系统900输出到输出设备934。设置输出适配器938来说明存在一些需要特殊适配器的输出设备934(例如,监视器、扬声器和打印机等)。输出适配器938可以包括例如提供输出设备934和系统总线902之间的连接方式的视频卡和声卡。其它设备和/或设备系统可以同时提供输入和输出功能,例如远程计算机960。显示器914可以包括任何合适的人机接口或其它配置为向用户显示信息的机构,例如CRT、LED或LCD监视器或屏幕等。
通信单元910是指用于与其它数据处理系统或设备的通信的任何合适的硬件和/或软件。尽管将通信单元910示为在数据处理系统900内部,但是在一些实例中它可以至少部分地设置在数据处理系统900外部。通信单元910可以包括内部和外部技术,例如调制解调器(包括常规电话级调制解调器、电缆调制解调器以及DSL调制解调器)、ISDN适配器和/或有线和无线以太网卡、集线器、路由器等。数据处理系统900可以使用与一台或多台远程计算机960逻辑连接在联网的环境中操作。远程计算机960可以包括个人计算机(PC)、服务器、路由器、网络PC、工作站、基于微处理器电器、对等设备、智能电话、平板电脑以及其它网络笔记等。远程计算机960通常包括相对于数据处理系统900描述的许多元件。远程计算机960可以通过网络接口962以逻辑方式连接到数据处理系统900,其中该网络接口经由通信单元910连接到数据处理系统900。网络接口962包括有线和/或无线通信网络,例如局域网(LAN)、广域网(WAN)和蜂窝网络。LAN技术可以包括光纤分布式数据接口(FDDI)、铜缆分布式数据接口(CDDI)、以太网、令牌环和/或其它技术。WAN技术包括点对点链路、电路交换网络(例如,综合业务数字网(ISDN)及其上的变形)、分组交换网络和数字用户线(DSL)。
编解码器930可以包括编码器、解码器或同时包括两者,并包括硬件、软件或硬件和软件的组合。编解码器930可以包括任何合适的设备和/或软件,其配置为对数据流或信号进行编码、压缩和/或加密从而对其进行传输和存储,并通过对数据流或信号进行解码、解压缩和/或解密来对其进行解码(例如,用于播放或编辑视频)。尽管将编解码器930描述为单独的组件,但编解码器930可以被包含或实现在存储器(例如非易失性存储器942)中。
非易失性存储器942可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪存等,或它们的任意组合。易失性存储器940可以包括随机存取存储器(RAM),其可以用作外部缓冲存储器。RAM可以包括静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)等,或它们的任意组合。
用于操作系统、应用程序和/或程序的指令可以位于存储设备916中,该存储设备通过系统总线902与处理器单元904通信。在这些说明性实例中,这些指令以函数形式存在于持久性存储装置908中。可以将这些指令加载到存储器906中由处理器单元904执行。本公开的一个或多个实施方案的流程可以由处理器单元904使用位于例如存储器906的存储器中的由计算机实现的指令来执行。
这些指令指的是由处理器单元904中的处理器执行的程序指令、程序代码、计算机可用程序代码或计算机可读程序代码。不同实施方案中的程序代码可以体现在例如存储器906或持久性存储装置908的不同的物理或计算机可读存储介质上。程序代码918可以以函数形式位于计算机可读介质920上,其中该计算机可读介质920可选择性地移除,并且将其加载或传送到数据处理系统900由处理器单元904执行。在这些实例中,程序代码918和计算机可读介质920组成计算机程序产品922。在一实例中,计算机可读介质920可以包括计算机可读存储介质924或计算机可读信号介质926。
计算机可读存储介质924可以包括例如光盘或磁盘,其中将该光盘或磁盘插入或放置在作为持久性存储装置908的一部分的驱动器或其它设备中,以传送到例如硬盘驱动器的存储设备上,其中该存储设备作为持久性存储装置908的一部分。计算机可读存储介质924也可以采用连接到数据处理系统900的持久性存储装置的形式,例如硬盘驱动器、拇指驱动器或闪存。在一些情况下,计算机可读存储介质924可能无法从数据处理系统900中移除。
在这些实例中,计算机可读存储介质924是用于存储程序代码918的非暂时的、物理或有形的存储设备,而不是传播或传输程序代码918的介质。计算机可读存储介质924也被称为计算机可读的有形存储设备或计算机可读的物理存储设备。换句话说,计算机可读存储介质924是可以被人触摸的介质。
可选地,可以使用计算机可读信号介质926例如通过网络将程序代码918远程地传送到数据处理系统900。计算机可读信号介质926可以是例如包含程序代码918的所传播的数据信号。例如,计算机可读信号介质926可以是电磁信号、光信号和/或任何其它合适类型的信号。这些信号可以通过例如无线通信链路、光纤电缆、同轴电缆、电线和/或任何其它合适类型的通信链路来传输。换句话说,在说明性实例中,通信链路和/或连接可以是物理的或无线的。
在一些说明性实施方案中,可通过计算机可读信号介质926借助网络将程序代码918从另一设备或数据处理系统下载到持久性存储装置908,从而在数据处理系统900内使用。例如,可借助网络将存储在服务器数据处理系统的计算机可读存储介质中的程序代码从服务器下载到数据处理系统900。提供程序代码918的计算机可以是服务器计算机、客户端计算机或其它能够存储和传输程序代码918的设备。
在一些实例中,程序代码918可以包括操作系统(OS)950。可以存储在持久性存储装置908上的操作系统950可控制和分配数据处理系统900的资源。一个或多个应用程序952通过程序模块954和存储在存储设备916上的程序数据956使用操作系统的资源管理。OS950可以包括任何合适的软件系统,其配置为管理和公开计算机900的硬件资源以供应用程序952共享和使用。在一些实例中,OS950提供应用程序编程接口(APIs),以促进不同类型的硬件的连接和/或提供应用程序952对硬件和OS服务的访问。在一些实例中,例如与所谓的“中间件”类似,某些应用程序952可以提供供其它应用程序952使用的其它服务。本公开的各方面可相对各种操作系统或操作系统的组合来实现。
针对数据处理系统900说明的不同组件并不意味着对实现不同实施方案的方式的架构限制。本公开的一个或多个实施方案可以在数据处理系统中实现,该数据处理系统包括更少的组件或者包括除了和/或取代计算机900的组件之外的组件。图9中所示的其它组件可以与描述的实例不同。可以使用能够运行程序代码的任何硬件设备或系统来实现不同的实施方案。作为一个实例,数据处理系统900可以包括与无机组件集成的有机组件和/或可以完全由有机组件(不包括人类)组成。例如,存储设备可以包括有机半导体。
在一些实例中,处理器单元904可以采取具有硬件电路的硬件单元的形式,其中该硬件电路被专门制造或配置为用于特定用途,或者用于产生特定结果或进度。这种类型的硬件可以执行操作,而无需将程序代码918从存储设备加载到存储器中以执行操作。例如,处理器单元904可以是电路系统、专用集成电路(ASIC)、可编程逻辑设备或某种其它合适类型的硬件,其配置为(例如,预先配置或重新配置)执行许多操作。例如,对于可编程逻辑设备,将该设备配置为执行多个操作,并且在以后的时间可以重新配置该设备。可编程逻辑设备的实例包括可编程逻辑阵列、现场可编程逻辑阵列、现场可编程门阵列(FPGA)和其它合适的硬件设备。通过这种实现方式,可执行的指令(例如,程序代码918)例如可以以下方式实现为硬件:使用硬件描述语言(HDL)来指定FPGA配置,然后使用生成的二进制文件来(重新)配置FPGA。
在另一实例中,可将数据处理系统900实现为基于FPGA(或在某些情况下基于ASIC)的专用状态机集(例如,有限状态机(FSM)),其可以隔离关键任务并在自定义硬件上对其进行运行。可以将例如CPU的处理器描述为执行给其提供指令的共享通用状态机,而基于FPGA的状态机则是为特殊目的构造的,并且可以执行硬件编码的逻辑而无需共享资源。这种系统通常用于与安全有关的关键型任务。
在又一说明性实例中,可以使用在计算机和硬件单元中的处理器的组合来实现处理器单元904。处理器单元904可以具有多个硬件单元和被配置为运行程序代码918的多个处理器。通过描述的实例,一些流程可以以多个硬件单元来实现,而其它流程可以以多个处理器来实现。
在另一实例中,系统总线902可以包括一个或多个总线,例如系统总线或输入/输出总线。当然,可以使用在附接到总线系统的不同组件或设备之间提供数据传送的任何适当类型的架构来实现总线系统。系统总线902可以包括几种类型的总线结构,包括存储器总线或存储器控制器、外围总线或外部总线和/或使用任何可用总线架构的本地总线(例如,工业标准架构(ISA)、微通道架构(MSA)、扩展ISA(EISA)、智能驱动电子(IDE)、VESA本地总线(VLB)、外围组件互连(PCI)、卡总线、通用串行总线(USB)、高级图形端口(AGP)、个人计算机存储卡国际协会总线(PCMCIA)、火线(IEEE 1394)和小型计算机系统接口(SCSI)。
另外,通信单元910可以包括发送数据、接收数据或者同时发送和接收数据的多个设备。通信单元910可以是例如调制解调器或网络适配器、两个网络适配器或其某种组合。此外,存储器可以是例如存储器906或缓存,例如系统总线902中的接口和存储控制器集线器内的缓存。
D.说明性组合和其它实例
本章节以一系列的段落描述了会聚CV系统和相关方法的另一些方面和特征,但不限于此,为清晰和有效起见,可以用字母数字的方式表示一些或全部的段落。这些段落中的每一段可以以任何适当的方式与一个或多个其它段落组合,和/或与本申请中其它地方公开的内容相组合。下文的某些段落明确地引用了并进一步限制了其它段落,以提供一些合适组合的实例,但不限于此。
A0,一种用于显示增强现实(AR)内容的计算机实现的方法,该方法包括:
由移动数字设备(MDD)通过计算机网络接收AR内容项以及与环境中的可跟踪特征对应的参考点云,其中AR内容项包括相对于参考点云定义的AR定位信息,并且MDD设置在环境中;
使用MDD的相机(或其它传感器)和原始CV系统来识别与可跟踪特征对应的本地点云;
使用MDD的第二CV系统和相机来确定MDD相对于参考点云的位置和方向;
确定本地点云与参考点云之间的变换;以及
通过将变换应用于AR定位信息,使用原始CV系统,在MDD的显示器上将AR内容项可视化;
其中确定本地点云和参考点云之间的变换包括:使用处理逻辑来执行带约束的束调整(BA)方法以优化变换,其中带约束的BA方法包括将误差函数最小化,该误差函数包括重投影误差加上原始相机位置和变换后的相机位置之间的差异的量度。
A1,根据段落A0的方法,其中将误差函数最小化包括使用梯度下降方法。
A2,根据段落A0至A1中任一项的方法,其中将误差函数最小化包括使用LevenbergMarquardt方法。
A3,根据段落A0至A2中任一项的方法,其中在将误差函数最小化的同时优化的参数包括相机矢量、三维点的矢量以及包括变换的变换系数的矢量。
A4,根据段落A0至A3中任一项的方法,其中确定本地点云和参考点云之间的变换包括:计算初始变换以输入到带约束的BA方法中,并且计算初始变换包括:
取得各对原始相机位置和辅助相机位置之间的旋转差异,并对旋转差异求平均以生成旋转变换;
将旋转变换应用于原始相机位置的三维(3D)位置;以及
确定每对3D原始相机位置和3D辅助相机位置之间的差异并对其求平均,以产生平移变换。
A5,根据段落A0至A4中任一项的方法,其中MDD的第二CV系统的运行频率低于原始CV系统,并且原始CV系统使用相同版本的变换直到第二CV系统对变换的版本进行更新。
A6,根据段落A5的方法,其中相对于来自相机的输入,第二CV系统每10到60帧运行一次(例如,每30帧一次),并且原始CV系统每帧运行至少一次。
A7,根据段落A5的方法,其中第二CV系统在第一时间确定较早的变换,在第二时间确定较晚的变换,并且通过将变换应用于AR定位信息,使用原始CV系统在MDD的显示器上将AR内容项可视化包括:使用第一时间和第二时间之间的插值以从较早的变换过渡到较晚的变换。
A8,根据段落A0至A7中任一项的方法,其中MDD包括执行带约束的BA方法的处理逻辑。
A9,根据段落A0至A8中任一项的方法,其中识别本地点云包括使用MDD的相机和原始CV系统生成或更新本地点云。
A10,根据段落A0至A9中任一项的方法,其中MDD是第一MDD,该方法还包括:
由第二MDD通过计算机网络接收与环境中的可跟踪特征对应的参考点云以及包括AR定位信息的AR内容项;
使用第二MDD的相机(或其它传感器)和原始CV系统来识别与可跟踪特征对应的第二本地点云;
使用第二MDD的第二CV系统和第二MDD的相机来确定第二MDD相对于参考点云的位置和方向;
确定第二本地点云与参考点云之间的第二变换;以及
通过将第二变换应用于AR定位信息,使用第二MDD的原始CV系统,在第二MDD的显示器上将AR内容项可视化。
B0,一种用于观看增强现实(AR)内容的系统,该系统包括:
设置在环境中并与计算机网络通信的移动数字设备(MDD),该MDD包括相机、显示器和处理逻辑,其配置为使用相机和原始计算机视觉(CV)系统的输入来确定MDD的位置和方向,
其中MDD还包括独立于原始CV系统的第二CV系统,处理逻辑还被配置为:
通过计算机网络从服务器接收AR内容项以及与环境中的可跟踪特征对应的参考点云,其中AR内容项包括相对于参考点云定义的AR定位信息;
使用相机和原始CV系统来识别与可跟踪特征对应的本地点云;
使用第二CV系统和相机来确定MDD相对于参考点云的位置和方向;
确定本地点云和参考点云之间的变换;以及
通过将变换应用于AR定位信息,使用原始CV系统在MDD的显示器上将AR内容项可视化;
其中确定本地点云和参考点云之间的变换包括执行带约束的束调整(BA)方法以优化变换,其中带约束的BA方法包括将误差函数最小化,该误差函数包括重投影误差加上原始和变换后相机位置之间的差异的量度。
B1,根据段落B0的系统,其中最小化误差函数包括使用梯度下降方法。
B2,根据段落B0至B1中任一项的系统,其中将误差函数最小化包括使用LevenbergMarquardt方法。
B3,根据段落B0至B2中任一项的系统,其中在最小化误差函数的同时所优化的参数包括相机矢量、三维点的矢量以及包括变换的变换系数的矢量。
B4,根据段落B0至B3中任一项的系统,其中确定本地点云和参考点云之间的变换包括:计算初始变换并输入到带约束的BA方法中,并且计算初始变换包括:
取得各对原始相机位置和辅助相机位置之间的旋转差异,并对旋转差异求平均以生成旋转变换;
将旋转变换应用于原始相机位置的三维(3D)位置;以及
确定每对3D原始相机位置和3D辅助相机位置之间的差异并对其求平均,以产生平移变换。
B5,根据段落B0至B4中任一项的系统,其中MDD的第二CV系统的运行频率低于原始CV系统,并且原始CV系统使用相同版本的变换,直到第二CV系统对变换的版本进行更新。
B6,根据段落B5的系统,其中相对于来自相机的输入,第二CV系统每10至60帧运行一次(例如,每30帧一次),并且原始CV系统每帧运行至少一次。
B7,根据段落B5的系统,其中第二CV系统在第一时间确定较早的变换,在第二时间确定较晚的变换,并且通过将变换应用于AR定位信息,使用原始CV系统在MDD的显示器上将AR内容项可视化包括使用第一时间和第二时间之间的插值以从较早的变换过渡到较晚的变换。
B8,根据段落B0至B7中任一项的系统,其中识别本地点云包括使用MDD的相机和原始CV系统生成本地点云。
B9,根据段落B0至B8中任一项的系统,其中MDD是第一MDD,该系统还包括:
设置在环境中并与计算机网络通信的第二MDD,该第二MDD包括相机、显示器和处理逻辑,其配置为使用来自第二MDD的相机和原始计算机视觉(CV)系统的输入来确定第二MDD的位置和方向;
其中第二MDD还包括独立于第二MDD的原始CV系统的第二CV系统,并且第二MDD的处理逻辑还配置为:
通过计算机网络接收包括AR定位信息的AR内容项以及与环境中的可跟踪特征对应的参考点云;
使用第二MDD的相机和原始CV系统来识别与可跟踪特征对应的第二本地点云;
使用第二MDD的第二CV系统和第二MDD的相机来确定第二MDD相对于参考点云的位置和方向;
确定第二本地点云与参考点云之间的第二变换;以及
通过将第二变换应用于AR定位信息,使用第二MDD的原始CV系统,在第二MDD的显示器上将AR内容项可视化。
C0,一种用于显示增强现实(AR)内容的计算机实现的方法,该方法包括:
由移动数字设备(MDD)通过计算机网络接收AR内容项以及与环境中的可跟踪特征对应的参考点云,其中AR内容项包括相对于参考点云定义的AR定位信息,并且MDD设置在环境中;
使用MDD的相机(或其它传感器)和原始CV系统来识别与可跟踪特征对应的本地点云;
使用MDD的第二CV系统和相机来确定MDD相对于参考点云的位置和方向;
确定本地点云与参考点云之间的变换;以及
通过将变换应用于AR定位信息,使用原始CV系统,在MDD的显示器上将AR内容项可视化。
C1,根据段落C0的方法,其中识别本地点云包括使用MDD的相机和原始CV系统生成本地点云。
C2,根据段落C0的方法,其中MDD是第一MDD,该方法还包括:
由第二MDD通过计算机网络接收与环境中的可跟踪特征对应的参考点云以及包括AR定位信息的AR内容项;
使用第二MDD的相机和原始CV系统识别与可跟踪特征对应的第二本地点云;
使用第二MDD的第二CV系统和第二MDD的相机确定第二MDD相对于参考点云的位置和方向;
确定第二本地点云与参考点云之间的第二变换;以及
通过将第二变换应用于AR定位信息,使用第二MDD的原始CV系统在第二MDD的显示器上将AR内容项可视化。
D0,一种用于显示增强现实(AR)内容的计算机实现的方法,该方法包括:
由移动数字设备(MDD)通过计算机网络接收AR内容项以及与环境中的可跟踪特征对应的参考点云,其中AR内容项包括相对于参考点云定义的AR定位信息,并且MDD设置在环境中;
使用MDD的相机(或其它传感器)和计算机视觉(CV)系统来确定MDD相对于参考点云的位置和方向;以及
使用所确定的位置和方向在MDD的显示器上将AR内容项可视化;
其中确定MDD相对于参考点云的位置和方向包括使用处理逻辑执行加权随机采样一致性(RANSAC)方法以估计相机的姿态,其中加权RANSAC方法包括:
执行RANSAC算法以确定当前估计姿态,使用内点距离阈值确定内点并基于所计算的多个点的权重选择对应关系;
根据每个点与当前内点距离阈值之间的相应关系,更新所计算的多个点的权重;
根据当前内点距离阈值和当前合格作为内点的点的数量,确定当前估计姿态的强度;以及
重复地执行RANSAC算法、更新所计算的权重以及确定当前估计姿态的强度,并随每次迭代自动减小内点距离阈值。
D1,根据段落D0的方法,其中加权RANSAC方法还包括加强所计算的当前合格作为内点的点的权重,使得当前内点更有可能在随后的迭代中被选择。
D2,根据段落D1的方法,其中加强所计算的当前内点的权重包括将每个内点各自的权重乘以一因子。
D3,根据段落D2的方法,其中因子为2。
D4,根据段落D0至D3段中任一项的方法,其中重复地执行RANSAC算法、更新所计算的权重以及确定当前估计姿态的强度,直到当前估计姿态的强度小于先前估计姿态的强度,然后恢复先前估计姿态并退出加权RANSAC方法。
D5,根据段落D0至D4中任一项的方法,其中CV系统包括原始CV系统和第二CV系统,该方法还包括:
使用MDD的相机和原始CV系统来生成与可跟踪特征对应的本地点云;以及
确定本地点云与参考点云之间的变换;
其中通过将变换应用于AR定位信息,使用原始CV系统在MDD的显示器上将AR内容项可视化。
D6,根据段落D5的方法,其中MDD的第二CV系统的运行频率低于原始CV系统,并且原始CV系统使用相同版本的变换,直到第二CV系统对变换的版本进行更新。
D7,根据段落D6的方法,其中相对于来自相机的输入,第二CV系统每10至60帧运行一次,并且原始CV系统每帧运行至少一次。
D8,根据段落D0至D7中任一项的方法,其中内点距离阈值随每次迭代自动减半。
D9,根据段落D0至D8中任一项的方法,其中更新所计算的多个点的权重包括:
确定每个点的重投影误差与当前内点距离阈值之间的关系;
向所具关系在所选第二阈值之上的任何点分配低的非零权重;以及
向所具关系在所选第二阈值之下的任何点分配较高权重。
D10,根据段落D0至D9中任一项的方法,其中将分配给所选第二阈值之下的每个点的较高权重分配在曲线上,以在该关系接近所选第二阈值时降低该较高权重。
D11,根据段落D0至D10中任一项的方法,其中MDD是第一MDD,该方法还包括:
由第二MDD通过计算机网络接收与环境中的可跟踪特征对应的参考点云以及包括AR定位信息的AR内容项;
使用第二MDD的相机和原始CV系统来识别与可跟踪特征对应的第二本地点云;
使用第二MDD的第二CV系统和第二MDD的相机来确定第二MDD相对于参考点云的位置和方向;
确定第二本地点云与参考点云之间的第二变换;以及
通过将第二变换应用于AR定位信息,使用第二MDD的原始CV系统,在第二MDD的显示器上将AR内容项可视化。
E0,一种用于观看增强现实(AR)内容的系统,该系统包括:
设置在环境中并与计算机网络通信的移动数字设备(MDD),该MDD包括相机(和/或其它传感器)、显示器和处理逻辑,其被配置为:
通过计算机网络从服务器接收AR内容项以及与环境中的可跟踪特征对应的参考点云,其中AR内容项包括相对于参考点云定义的AR定位信息;以及
使用MDD的计算机视觉(CV)系统和相机来确定MDD相对于参考点云的位置和方向;
其中确定MDD相对于参考点云的位置和方向包括使用处理逻辑执行加权随机采样一致性(RANSAC)方法以估计相机的姿态,其中加权RANSAC方法包括:
执行RANSAC算法以确定当前估计姿态,使用内点距离阈值确定内点并基于所计算的多个点的权重选择候选对应关系;
根据每个点与当前内点距离阈值之间的相应关系,更新所计算的多个点的权重;
根据当前的内点数量和当前的内点距离阈值来确定当前估计姿态的强度;以及
重复地执行RANSAC算法、更新所计算的权重以及确定当前估计姿态的强度,并随每次迭代自动减小内点距离阈值。
E1,根据段落E0的系统,其中加权RANSAC方法还包括:加强所计算的当前合格作为内点的点的权重,使得当前内点更有可能在随后的迭代中被选择。
E2,根据段落E1的系统,其中加强所计算的当前和各位内点的点的权重包括将每个内点各自的权重乘以一因子。
E3,根据段落E2的系统,其中因子为2。
E4,根据段落E0至E3中任一项的系统,其中重复地执行RANSAC算法、更新所计算的权重以及确定当前估计姿态的强度,直到当前估计姿态的强度小于先前估计姿态的强度,然后恢复至先前估计姿态并退出加权RANSAC方法。
E5,根据段落E0到E4的任一项的系统,其中MDD的CV系统包括原始CV系统和独立于原始CV系统的第二CV系统,并且处理逻辑还被配置为:
使用相机和原始CV系统来生成与可跟踪特征对应的本地点云;
确定本地点云和参考点云之间的数学变换;
通过将变换应用于AR定位信息,使用原始CV系统,在MDD的显示器上将AR内容项可视化。
E6,根据段落E5的系统,其中MDD的第二CV系统的运行频率低于原始CV系统,并且原始CV系统使用相同版本的变换,直到第二CV系统对变换的版本进行更新。
E7,根据段落E6的系统,其中相对于来自相机的输入,第二CV系统每10至60帧运行一次,并且原始CV系统每帧运行至少一次。
E8,根据段落E0至E7中任一项的系统,其中内点距离阈值随每次迭代减半。
E9,根据段落E0至E8的任一项的系统,其中更新所计算的多个点的权重包括:
确定每个点与当前内点距离阈值之间的关系;
向所具关系在所选第二阈值之上的任何点分配低的非零权重;以及
向所具关系在第二阈值之下的任何点分配较高权重。
E10,根据段落E9的系统,其中将分配给所选第二阈值之下的每个点的较高权重分配在曲线上,以在该关系接近所选第二阈值时降低较高权重。
E11,根据段落E0至E10中任一项的系统,其中MDD是第一MDD,该系统还包括:
设置在环境中并与计算机网络通信的第二MDD,该第二MDD包括相机、显示器、原始计算机视觉(CV)系统、独立于原始CV系统的第二CV系统以及处理逻辑,其被配置为:
通过计算机网络接收包括AR定位信息的AR内容项以及与环境中的可跟踪特征对应的参考点云;
使用第二MDD的相机和原始CV系统来识别与可跟踪特征对应的第二本地点云;
使用第二MDD的第二CV系统和第二MDD的相机来确定第二MDD相对于参考点云的位置和方向;
确定第二本地点云与参考点云之间的第二变换;以及
通过将第二变换应用于AR定位信息,使用第二MDD的原始CV系统,在第二MDD的显示器上将AR内容项可视化。
结论
以上公开的内容可以包括涵盖独立效果的多个不同的实例。尽管已经以其优选形式公开了这些实例中的每一个,但是因为可以具有多种变化,所以不应将本文公开和说明的具体实施方案认定为限制性的。根据本公开中使用的章节标题,该标题仅用于组织目的。本公开的主题包括本文公开的多种元件、特征、功能和/或特性的所有新颖的和非显而易见的组合和子组合。下列权利要求特别指出了被认为是新颖且非显而易见的某些组合和子组合。可在要求本申请或相关申请优先权的其它申请中要求保护以上特征、功能、元素和/或特性的其它组合和子组合。具有比原始权利要求更宽、更窄、相同或不同的范围的权利要求都包括在本公开的主题范围之内。
Claims (24)
1.一种用于显示增强现实AR内容的计算机实现方法,所述方法包括:
由移动数字设备MDD通过计算机网络接收AR内容项以及与环境中的可跟踪特征对应的参考点云,其中所述AR内容项包括相对于所述参考点云定义的AR定位信息,并且所述MDD设置在所述环境中;
使用所述MDD的相机和计算机视觉CV系统来确定所述MDD相对于所述参考点云的位置和方向;以及
使用所确定的位置和方向,在所述MDD的显示器上,将所述AR内容项可视化;
其中确定所述MDD相对于所述参考点云的位置和方向包括:使用处理逻辑来执行加权随机采样一致性RANSAC方法以估计所述相机的姿态,其中所述加权RANSAC方法包括:
执行RANSAC算法以确定当前估计姿态,使用内点距离阈值确定内点并基于所计算的多个点的权重选择对应关系;
根据每个点与当前内点距离阈值之间的相应关系,更新所计算的所述多个点的权重;
根据当前内点距离阈值和当前合格作为内点的点的数量,确定当前估计姿态的强度;以及
重复地执行RANSAC算法、更新所计算的权重以及确定当前估计姿态的强度,并随每次迭代自动减小所述内点距离阈值。
2.根据权利要求1所述的方法,其中所述加权RANSAC方法还包括:加强所计算的当前合格作为内点的点的权重,从而在后续迭代中更有可能选择当前内点。
3.根据权利要求2所述的方法,其中加强所计算的当前内点的权重包括将每个内点各自的权重乘以一因子。
4.根据权利要求3所述的方法,其中所述因子是2。
5.根据权利要求1所述的方法,其中重复地执行RANSAC算法、更新所计算的权重以及确定当前估计姿态的强度,直到当前估计姿态的强度小于先前估计姿态的强度,然后恢复至先前估计姿态并退出加权RANSAC方法。
6.根据权利要求1所述的方法,其中所述CV系统包括原始CV系统和第二CV系统,所述方法还包括:
使用所述MDD的所述相机和所述原始CV系统来生成与所述可跟踪特征对应的本地点云;以及
确定所述本地点云与所述参考点云之间的变换;
其中通过将所述变换应用于所述AR定位信息,使用所述原始CV系统,在MDD的所述显示器上将所述AR内容项可视化。
7.根据权利要求6所述的方法,其中所述MDD的所述第二CV系统的运行频率低于所述原始CV系统,并且所述原始CV系统使用相同版本的所述变换,直到所述第二CV系统对所述变换的版本进行更新。
8.根据权利要求7所述的方法,其中相对于来自所述相机的输入,所述第二CV系统每10至60帧运行一次,并且所述原始CV系统每帧运行至少一次。
9.根据权利要求1所述的方法,其中所述内点距离阈值随每次迭代自动减半。
10.根据权利要求1所述的方法,其中更新所计算的多个点的权重包括:
确定每个点的重投影误差与当前内点距离阈值之间的关系;
向所具关系在所选第二阈值之上的任何点分配低的非零权重;以及
向所具关系在所选第二阈值之下的任何点分配较高权重。
11.根据权利要求10所述的方法,其中将分配给所述所选第二阈值之下的每个点的所述较高权重分配在曲线上,以在所述关系接近所选第二阈值时降低所述较高权重。
12.根据权利要求1所述的方法,其中所述MDD是第一MDD,所述方法还包括:
由第二MDD通过所述计算机网络接收包括所述AR定位信息的所述AR内容项,以及与所述环境中的所述可跟踪特征对应的所述参考点云;
使用所述第二MDD的相机和原始CV系统来识别与所述可跟踪特征对应的第二本地点云;
使用所述第二MDD的第二CV系统和所述第二MDD的所述相机,确定所述第二MDD相对于所述参考点云的位置和方向;
确定所述第二本地点云与所述参考点云之间的第二变换;以及
通过将所述第二变换应用于所述AR定位信息,使用所述第二MDD的所述原始CV系统,在所述第二MDD的显示器上将所述AR内容项可视化。
13.一种用于观看增强现实AR内容的系统,所述系统包括:
设置在环境中并与计算机网络通信的移动数字设备MDD,所述MDD包括相机、显示器和处理逻辑,所述处理逻辑被配置为:
通过所述计算机网络从服务器接收AR内容项以及与所述环境中的可跟踪特征对应的参考点云,其中所述AR内容项包括相对于所述参考点云定义的AR定位信息;以及
使用所述MDD的计算机视觉CV系统和所述相机,确定所述MDD相对于所述参考点云的位置和方向;
其中确定所述MDD相对于所述参考点云的所述位置和所述方向包括:使用处理逻辑来执行加权随机采样一致性RANSAC方法以估计所述相机的姿态,其中所述加权RANSAC方法包括:
执行RANSAC算法以确定当前估计姿态,使用内点距离阈值确定内点并基于所计算的多个点的权重选择候选对应关系;
根据每个点与当前内点距离阈值之间的相应关系,更新所计算的所述多个点的权重;
根据当前内点距离阈值和当前合格作为内点的点的数量,确定当前估计姿态的强度;以及
重复地执行RANSAC算法、更新所计算的权重以及确定当前估计姿态的强度,并随每次迭代自动减小所述内点距离阈值。
14.根据权利要求13所述的系统,其中所述加权RANSAC方法还包括:加强所计算的当前作为内点的点的权重,以在后续迭代中更有可能选择当前内点。
15.根据权利要求14所述的系统,其中加强所计算的当前内点的权重包括将每个内点各自的权重乘以一因子。
16.根据权利要求15所述的系统,其中所述因子是2。
17.根据权利要求13所述的系统,其中重复地执行RANSAC算法、更新所计算的权重以及确定当前估计姿态的强度,直到当前估计姿态的强度小于先前估计姿态的强度,然后恢复至先前估计姿态并退出加权RANSAC方法。
18.根据权利要求13所述的系统,其中所述MDD的所述CV系统包括原始CV系统和独立于所述原始CV系统的第二CV系统,并且所述处理逻辑还被配置为:
使用所述相机和所述原始CV系统来生成与所述可跟踪特征对应的本地点云;
确定所述本地点云和所述参考点云之间的数学变换;
通过将所述变换应用于所述AR定位信息,使用所述原始CV系统,在所述MDD的所述显示器上将所述AR内容项可视化。
19.根据权利要求18所述的系统,其中所述MDD的所述第二CV系统的运行频率低于所述原始CV系统,并且所述原始CV系统使用相同版本的所述变换,直到所述第二CV系统对所述变换的版本进行更新。
20.根据权利要求19所述的系统,其中相对于来自所述相机的输入,所述第二CV系统每10至60帧运行一次,并且所述原始CV系统每帧运行至少一次。
21.根据权利要求13所述的系统,其中所述内点距离阈值随每次迭代减半。
22.根据权利要求13所述的系统,其中更新所计算的多个点的权重包括:
确定每个点与当前内点距离阈值之间的关系;
向所具关系在所选第二阈值之上的任何点分配低的非零权重;以及
向所具关系在第二阈值之下的任何点分配较高权重。
23.根据权利要求22所述的系统,其中将分配给所选阈值之下的每个点的较高权重分配在曲线上,以在所述关系接近所述第二阈值时降低所述较高权重。
24.根据权利要求13所述的系统,其中所述MDD是第一MDD,所述系统还包括:
设置在所述环境中并与所述计算机网络通信的第二MDD,所述第二MDD包括相机、显示器、原始计算机视觉CV系统、独立于所述原始CV系统的第二CV系统以及处理逻辑,所述处理逻辑被配置为:
通过所述计算机网络接收包括所述AR定位信息的所述AR内容项以及与所述环境中的所述可跟踪特征对应的所述参考点云;
使用所述第二MDD的所述相机和所述原始CV系统来识别与所述可跟踪特征对应的第二本地点云;
使用所述第二MDD的所述第二CV系统和所述第二MDD的所述相机,确定所述第二MDD相对于所述参考点云的位置和方向;
确定所述第二本地点云与所述参考点云之间的第二变换;以及
通过将所述第二变换应用于所述AR定位信息,使用所述第二MDD的所述原始CV系统,在所述第二MDD的显示器上将所述AR内容项可视化。
Applications Claiming Priority (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862616368P | 2018-01-11 | 2018-01-11 | |
US201862616366P | 2018-01-11 | 2018-01-11 | |
US62/616,368 | 2018-01-11 | ||
US62/616,366 | 2018-01-11 | ||
US201862648241P | 2018-03-26 | 2018-03-26 | |
US62/648,241 | 2018-03-26 | ||
PCT/US2019/013328 WO2019140282A1 (en) | 2018-01-11 | 2019-01-11 | Cross-device supervisory computer vision system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111868786A true CN111868786A (zh) | 2020-10-30 |
CN111868786B CN111868786B (zh) | 2024-05-28 |
Family
ID=
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106504275A (zh) * | 2016-10-12 | 2017-03-15 | 杭州深瞳科技有限公司 | 一种惯性定位与点云配准耦合互补的实时三维重建方法 |
GB201716533D0 (en) * | 2017-10-09 | 2017-11-22 | Nokia Technologies Oy | Methods and apparatuses for depth rectification processing |
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106504275A (zh) * | 2016-10-12 | 2017-03-15 | 杭州深瞳科技有限公司 | 一种惯性定位与点云配准耦合互补的实时三维重建方法 |
GB201716533D0 (en) * | 2017-10-09 | 2017-11-22 | Nokia Technologies Oy | Methods and apparatuses for depth rectification processing |
Also Published As
Publication number | Publication date |
---|---|
CN111868738A (zh) | 2020-10-30 |
US11508098B2 (en) | 2022-11-22 |
US20200020073A1 (en) | 2020-01-16 |
CN111868738B (zh) | 2023-09-26 |
US20200020137A1 (en) | 2020-01-16 |
US20210327102A1 (en) | 2021-10-21 |
US11049288B2 (en) | 2021-06-29 |
WO2019140282A1 (en) | 2019-07-18 |
WO2019140295A1 (en) | 2019-07-18 |
US20200342680A1 (en) | 2020-10-29 |
US10614594B2 (en) | 2020-04-07 |
US10614548B2 (en) | 2020-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10304244B2 (en) | Motion capture and character synthesis | |
JP6663926B2 (ja) | DeepStereo:実世界の画像から新たなビューを予測するための学習 | |
CN111868738B (zh) | 跨设备监控计算机视觉系统 | |
US10565792B2 (en) | Approximating mesh deformations for character rigs | |
CN109754417A (zh) | 从图像中无监督学习几何结构的系统与方法 | |
EP3698323A1 (en) | Depth from motion for augmented reality for handheld user devices | |
US9881417B2 (en) | Multi-view drawing apparatus of three-dimensional objects, and method | |
CN112819971B (zh) | 虚拟形象的生成方法、装置、设备和介质 | |
KR20070095040A (ko) | 카메라 보정 방법 및 이를 이용한 3차원 물체 재구성 방법 | |
EP2880633A1 (en) | Animating objects using the human body | |
WO2017019811A1 (en) | Robust attribute transfer for character animation | |
CN107851332B (zh) | 经由拓扑知晓表面跟踪的一致细分 | |
Sheng et al. | A lightweight surface reconstruction method for online 3D scanning point cloud data oriented toward 3D printing | |
US10909764B2 (en) | Providing augmented reality target images in a web browser | |
CN114998433A (zh) | 位姿计算方法、装置、存储介质以及电子设备 | |
CN113766117B (zh) | 一种视频去抖动方法和装置 | |
CN110378948B (zh) | 3d模型重建方法、装置及电子设备 | |
KR20090075399A (ko) | 영상 시퀀스로부터 선택된 중요 영상을 이용한 3차원모델의 재구성 방법 | |
CN111868786B (zh) | 跨设备监控计算机视觉系统 | |
CN115409949A (zh) | 模型训练方法、视角图像生成方法、装置、设备及介质 | |
CN116385643B (zh) | 虚拟形象生成、模型的训练方法、装置及电子设备 | |
CN116229583B (zh) | 驱动信息生成、驱动方法、装置、电子设备以及存储介质 | |
WO2022264519A1 (ja) | 情報処理装置、情報処理方法及びコンピュータプログラム | |
US20240054657A1 (en) | Frame rate up-conversion using optical flow | |
WO2022221080A1 (en) | Image animation |
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 | ||
GR01 | Patent grant |