CN105229703B - 用于使用感测的位置数据来生成三维模型的系统和方法 - Google Patents
用于使用感测的位置数据来生成三维模型的系统和方法 Download PDFInfo
- Publication number
- CN105229703B CN105229703B CN201380076539.9A CN201380076539A CN105229703B CN 105229703 B CN105229703 B CN 105229703B CN 201380076539 A CN201380076539 A CN 201380076539A CN 105229703 B CN105229703 B CN 105229703B
- Authority
- CN
- China
- Prior art keywords
- sensing
- camera
- conversion
- image
- calculating
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/20—Perspective computation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformation in the plane of the image
- G06T3/60—Rotation of a whole image or part thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
- G06T7/55—Depth or shape recovery from multiple images
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
- G06T7/55—Depth or shape recovery from multiple images
- G06T7/593—Depth or shape recovery from multiple images from stereo images
-
- 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/75—Determining position or orientation of objects or cameras using feature-based methods involving models
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/20—Image signal generators
- H04N13/204—Image signal generators using stereoscopic image cameras
- H04N13/207—Image signal generators using stereoscopic image cameras using a single 2D image sensor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/08—Indexing scheme for image data processing or generation, in general involving all processing steps from image acquisition to 3D model generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/21—Indexing scheme for image data processing or generation, in general involving computational photography
-
- 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/10004—Still image; Photographic image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2219/00—Indexing scheme for manipulating 3D models or images for computer graphics
- G06T2219/20—Indexing scheme for editing of 3D models
- G06T2219/2016—Rotation, translation, scaling
Abstract
实施例包括一种计算机实现的用于生成三维(3D)模型的方法。该方法包括接收指示相机设备在其被用来分别获取图像对的第一和第二图像的时候或接近此时的位置的感测位置数据的第一和第二集合,使用该感测位置数据的第一和第二集合对于该图像对确定感测的旋转矩阵和/或感测的平移矢量,识别包括计算的平移矢量和旋转矩阵的计算变换,生成包括感测的旋转矩阵和/或感测的平移矢量的感测的相机变换,并且如果感测的相机变换与比计算的相机变换低的误差相关联,则使用其来生成3D模型。
Description
技术领域
本发明的实施例一般地涉及图像建模,更具体地涉及使用与图像相关联的位置数据来生成图像模型。
背景技术
三维(3D)建模是一种开发三维对象的数学表示的过程。该数学表示可以被称作3D模型。例如,立方体的3D模型可以包括该立方体的角、边和面的数学表示,它们能够被用来生成该立方体的各种视图。在计算机环境中,该各种视图能够被渲染以便作为二维图像进行显示,这与用户在从各种有利点观看物体时所看到的相类似。该多个视图的显示能够被用来创建仿真。例如,立方体的各个视图能够被依序显示以生成对用户在它们绕立方体行走时所看到的进行重建的仿真。虽然出于说明的目的描述了立方体,但是将要意识到的是,类似的3D建模技术能够被用来生成任意各种物体的3D模型。例如,业主可以生成其家的3D模型,其能够被用来为预期买主形成他们家的内部和外部的“虚拟游览”。类似的建模技术能够被应用来生成3D模型以便创建虚拟现实仿真等等。
在一些情况下,3D模型使用3D摄影来生成。利用3D摄影,从不同的有利点捕捉物体的多个摄影图像,并且这些图像被组合以生成该物体的3D模型。在用于生成3D模型的传统系统中,使用专用的硬件和软件来捕捉并处理图像以构建3D模型。例如,可以使用专用的3D重建软件来识别物体图像之间的匹配点,并且对该匹配点进行处理以估计点在真实世界中对应于图像中的点的位置(即,真实视觉坐标)。这些点能够被组合以创建物体的3D模型。
不幸的是,常规的3D建模技术是耗时的并且可能不准确。例如,常规的3D建模算法可能依赖于估计和插值,这要求大量处理来生成适当结果并且可能最终生成不准确的结果。此外,常规的3D建模技术无法在用户对于3D模型的当前状态不满意时为他们提供重新捕捉图像视图或者获取附加图像的机会。例如,在常规的批处理技术中,用户可能被要求获取生成3D模型时所使用的所有图像,并且可能对图像批次应用后处理来生成3D模型。不幸的是,在生成3D模型的时候用户可能已经离开了该物体的地点,并且因此可能没有机会返回该地点来捕捉该物体的附加图像。
发明内容
提供了用于生成地理位置的摄影游览的方法和装置的各个实施例。在一些实施例中,提供了一种计算机实现的用于生成三维(3D) 模型的方法。该方法包括接收指示相机设备在其被用来获取第一二维 (2D)图像的时候或者接近此时的定向的感测位置数据的第一集合,该感测位置数据的第一集合由用来获取第一2D图像的相机设备的传感器提供;接收指示相机设备在其被用来获取第二二维(2D)图像的时候或者接近此时的定向的感测位置数据的第二集合,该感测位置数据的第二集合由用来获取第二2D图像的相机设备的传感器提供;使用感测位置数据的第一和第二集合对于包括该第一和第二2D图像的图像对确定感测的旋转矩阵;对于该图像对识别计算的相机变换矩阵,计算的变换包括所述计算的平移矢量和所述计算的旋转矩阵;对于该图像对生成感测的相机变换矩阵,感测的相机变换包括平移矢量和感测的旋转矩阵;识别第一和第二2D图像的匹配点集合;确定与使用感测的相机变换的匹配点集合的变换相关联的第一误差是否小于与使用所述计算的相机变换的匹配点集合的变换相关联的第二误差;以及响应于确定与使用感测的相机变换的匹配点集合的变换相关联的第一误差小于与使用所述计算的相机变换的匹配点集合的变换相关联的第二误差,使用感测的相机变换来生成3D模型,并且将该3D模型存储在3D模型库集中。
在一些实施例中,识别计算的相机变换包括使用第一和第二2D图像的匹配点集合得出多个候选计算变换矩阵,该候选所计算变换矩阵每一个均包括转移分量和所计算的旋转矩阵,识别该多个候选计算变换矩阵中与最低变换误差相关联的一个候选的计算的变换矩阵,并且将与最低变换误差相关联的该候选的计算的变换矩阵识别为计算的相机变换。在一些实施例中,使用匹配点集合得出多个候选的计算的变换矩阵包括使用匹配点集合来计算第一和第二2D图像之间的基础矩阵,基于该基础矩阵来计算本质矩阵,并且经由奇异值分解将该本质矩阵分解为四个候选计算变换矩阵。
在一些实施例中,该匹配点集合包括第一和第二2D图像的匹配点集合的子集。在一些实施例中,该匹配点集合包括第一和第二2D图像的匹配点集合中的5个匹配点。
在一些实施例中,确定与使用感测的相机变换的匹配点集合的变换相关联的第一误差是否小于与使用计算的相机变换的匹配点集合的变换相关联的第二误差包括选择第一和第二2D图像的匹配点集合的子集,确定与使用计算的相机变换的匹配点子集之间的变换相关联的第一误差,确定与使用感测的相机变换的匹配点子集之间的变换相关联的第二误差,并且将该第一误差与第二误差进行比较以确定与使用感测的相机变换的匹配点子集的变换相关联的第一误差是否小于与使用所计算的相机变换的匹配点子集的变换相关联的第二误差。
在一些实施例中,使用感测的相机变换矩阵生成3D模型包括将匹配点集合中的匹配点变换为3D坐标,并且将该3D坐标添加至3D模型。
在一些实施例中,计算的相机变换的平移矢量和感测的相机变换的平移矢量是相同的。在一些实施例中,感测位置数据的第一集合指示相机设备在其被用来捕捉第一二维(2D)图像的时候或者接近此时的位置,感测位置数据的第二集合指示相机设备在其被用来捕捉第二二维(2D)图像的时候或者接近此时的位置,并且该方法进一步包括使用感测位置数据的第一和第二集合对于包括该第一和第二2D图像的图像对确定感测的旋转矩阵,感测的相机变换的平移矢量包括该感测的旋转矩阵,并且所计算的相机变换的平移矢量基于该第一和第二2D 图像的匹配点进行计算。
在一些实施例中,该传感器包括陀螺仪。
在一些实施例中,提供了一种非瞬态的计算机可读介质,其包括存储于其上的程序指令,该程序指令能够被处理器执行而导致用于生成三维(3D)模型的以下步骤。该步骤包括:接收指示相机设备在其被用来获取第一二维(2D)图像的时候或者接近此时的定向的感测位置数据的第一集合,该感测位置数据的第一集合由用来获取第一2D图像的相机设备的传感器提供;接收指示相机设备在其被用来获取第二二维(2D)图像的时候或者接近此时的定向的感测位置数据的第二集合,该感测位置数据的第二集合由用来获取第二2D图像的相机设备的传感器提供;使用感测位置数据的第一和第二集合对于包括该第一和第二2D图像的图像对确定感测的旋转矩阵;对于该图像对识别计算的相机变换矩阵,计算的变换包括计算的平移矢量和计算的旋转矩阵;对于该图像对生成感测的相机变换矩阵,感测的相机变换包括平移矢量和感测的旋转矩阵;识别第一和第二2D图像的匹配点集合;确定与使用感测的相机变换的匹配点集合的变换相关联的第一误差是否小于与使用计算的相机变换的匹配点集合的变换相关联的第二误差;以及响应于确定与使用感测的相机变换的匹配点集合的变换相关联的第一误差小于与使用计算的相机变换的匹配点集合的变换相关联的第二误差,使用感测的相机变换生成3D模型,并且将该3D模型存储在3D模型库集中。
在一些实施例中,提供了一种计算机实现的用于生成三维(3D) 模型的方法。该方法包括:接收指示相机设备在其被用来获取第一二维(2D)图像的时候或者接近此时的位置的感测位置数据的第一集合,该感测位置数据的第一集合由用来获取第一2D图像的相机设备的集成传感器提供;接收指示相机设备在其被用来获取第二二维(2D)图像的时候或者接近此时的位置的定位传感器数据的第二集合,感测位置数据的该第二集合由用来获取第二2D图像的相机设备的集成传感器提供;使用感测位置数据的第一和第二集合来确定第一和第二2D图像之间的感测的旋转矩阵和/或感测的平移矢量;识别包括计算的平移矢量和计算的旋转矩阵的计算的相机变换;生成包括感测的旋转矩阵和/或感测的平移矢量的感测的相机变换;识别第一和第二2D图像的匹配点集合;确定与使用感测的相机变换的匹配点集合的变换相关联的第一误差是否小于与使用计算的相机变换的匹配点集合的变换相关联的第二误差;以及响应于确定与使用感测的相机变换的匹配点集合的变换相关联的第一误差小于与使用计算的相机变换的匹配点集合的变换相关联的第二误差;使用感测的相机变换来生成3D模型,并且将该3D模型存储在3D模型库集中。
附图说明
图1是图示依据本技术的一个或多个实施例的生成物体的三维 (3D)模型的方法的流程图。
图2图示了依据本技术的一个或多个实施例的一个物体以及从绕该物体的各个有利点拍摄的2D图像。
图3图示了依据本技术的一个或多个实施例的图像对的示例性匹配点。
图4是图示依据本技术的一个或多个实施例的建模环境的框图。
图5是图示依据本技术的一个或多个实施例的示例性计算机系统的框图。
具体实施方式
如以下更为详细讨论的,提供了一种用于使用位置数据来生成三维(3D)模型的系统和方法。3D模型可以包括物体的数学表示。在一些情况下,3D模型能够被用来生成与物体相关的各种视图。例如,立方体的3D模型可以包括该立方体的角、边和面的数学表示,它们能够被用来生成该立方体的各种视图。这样的视图能够被用来对用户在从各种有利点观看物体时所看到的进行仿真。3D模型可以包括对应于真实世界中的点(即,真实世界坐标)的3D点(例如,3D坐标)的集合。例如,立方体的3D模型可以包括对应于该立方体的八个角的真实世界位置、沿该立方体的边的各个位置以及该立方体的六个面上的各个位置的3D坐标的集合。
在一些实施例中,使用多个图像来生成3D模型。例如,可以使用从关于物体的不同有利点拍摄的该物体的多个二维(2D)图像来生成该物体的3D模型。在一些实施例中,通过识别多个图像内的匹配点并且将该匹配点变换为用来生成3D模型的3D坐标而生成3D模型。例如,从第一有利点拍摄的第一2D图像(图像A)中描绘立方体的表面上的五个不同位置的五个部分与从接近于该第一图像的有利点的第二有利点拍摄的第二2D图像(图像B)的五个相对应部分匹配。两个图像内的五个匹配点的位置能够被变换以生成五个相对应的3D坐标,它们表示该立方体的表面上的五个不同位置的真实世界位置。
这样的变换能够使用各种2D图像对之间的任意数量的匹配点来进行以生成用于生成3D模型时使用的任意数量的3D坐标。例如,第一和第二图像(图像A和B)之间、第一图像和第三图像(图像A和C)之间、第二和第三图像(图像B和C)等之间的其它匹配点集合能够被识别并且被用来识别另外的3D坐标集合以便包含在该立方体的3D模型中。
在一些实施例中,到3D坐标的变换包括生成图像之间的变换矩阵 (或“变换”)。例如,第一图像(图像A)和第二图像(图像B)之间的五个随机匹配点能够被用来生成变换矩阵(TAB)。该变换矩阵(TAB) 随后能够被用来将图像A和B的点映射至3D/真实世界坐标。
在一些实施例中,用于两个图像的变换矩阵借助于位置数据而生成,上述位置数据指示相机设备在其被用来获取对开发该变换时所使用的图像的时候或者接近此时的定向。例如,对于图像A和B生成变换矩阵可以至少部分基于感测位置数据的第一集合以及感测位置数据的第二集合,该感测位置数据的第一集合指示相机设备在其被用来获取第一二维(2D)图像的时候或者接近此时的定向/位置,该感测位置数据的第二集合指示相机设备在其被用来获取第二二维(2D)图像的时候或者接近此时的定向/位置。用于图像的感测位置数据可以由与用来获取该图像的相机设备相关联的传感器提供。例如,用于图像A的感测位置数据可以包括由所集成的位置传感器提供的位置数据,诸如用来获取图像A的相机的陀螺仪和/或全球定位系统(GPS)传感器。
在一些实施例中,感测位置数据包括定向数据和/或位置数据。定向数据可以指示相机在其被用来获取图像的时候或者接近此时的角度/ 方向。例如,用于图像A的定向数据可以包括指示相机在其被用来获取图像A的时候或者接近此时的视场的目标/方向的矢量。用于图像的位置数据可以指示相机在其被用来获取图像的时候或者接近此时的位置。例如,用于图像A的位置数据可以包括指示相机在其被用来获取图像A的时候或者接近此时的地理位置的地理坐标。
在一些实施例中,对于图像对生成变换矩阵包括(1)基于图像的匹配点计算变换矩阵(“所计算的相机变换”或“所计算的变换”) (Pc)以及(2)生成经修改的变换矩阵(“感测的相机变换”或“经修改的变换”)(PM),其包括感测的旋转矩阵元素(R')和/或感测的平移矢量元素(t')。经修改的变换可以与所计算的变换相同,但是分别用感测的旋转矩阵和/或感测的平移矢量来替换所计算的变换中相对应的所计算的旋转矩阵和/或所计算的平移矢量。例如,感测的旋转矩阵元素(R')和感测的平移矢量元素(t')可以基于定位传感数据的位置数据来生成,包括所计算的旋转矩阵(R)和所计算的平移矢量(t) 所计算的变换Pc=[Rit]可以使用图像A和B的匹配点生成,并且可以通过用感测的旋转矩阵(R')来替换所计算的变换的所计算的旋转矩阵 (R)和/或用感测的平移矢量元素(t')来替换所计算的平移矢量来生成经修改的变换。在一些实施例中,可以基于该替代来生成三个经修改的变换中的一个或多个(例如,PM1=[R’|t]、PM2=[R|t’]、PM3=[R’|t’])。
在一些实施例中,该感测可以对于任意数量的匹配点集合进行重复。例如,在图像A和B具有100个匹配点(即,5个匹配点的20个集合) 的情况下,所计算的变换以及一个或多个经修改的变换能够对于每个点集合所生成,以对于每个点集合生成二十个所计算的变换以及一个或多个经修改的变换。
在一个实施例中,对于图像对所产生的变换的误差互相进行比较以确定哪个变换应当被用作该图像对的变换。例如,可以使用用于图像A和B的匹配点集合对于每个变换确定误差,并且具有最低误差的变换能够被识别为该图像对的变换。所选择的变换能够被用来生成物体的3D/真实世界坐标。该过程能够对于每个图像对以类似方式进行重复,以生成被用来生成/更新该物体的3D模型的3D/真实世界坐标的扩展集合。例如,在存在物体的10个图像的情况下,该过程能够对于相邻图像对A和B、B和C、C和D等进行重复,以生成被添加至该物体的 3D模型的3D/真实世界坐标。
虽然,在某些实施例中,出于说明的目的在诸如立方体或楔形的几何物体的上下文中对建模进行了描述,但是类似的3D建模技术能够被用来生成任意各种物体的3D模型。例如,业主可以生成其家的3D模型,其能够被用来为预期买主形成他们家的内部和外部的“虚拟游览”。此外,该建模技术能够被用以生成3D模型以便创建虚拟现实的仿真,等等。
通过利用能够被用来生成旋转矩阵和平移矢量的感测旋转和平移数据,能够有效执行3D重构,并且在一些实施例中不断地(例如,实时地)提供3D模型的生成。例如,在一些实施例中,物体的3D重构可以使用这里所描述的技术在获取图像的数秒钟内被生成,并且相对应的3D模型可以在用户获取图像时不断地被提供给他们(例如,每隔几秒钟)。这样的快速反馈可以使得用户能够立即查看基于他们已经获取到的图像创建的3D模型,并且在用户对于3D模型的当前状态不满意时为他们提供重新捕捉或拍摄物体的附加照片的机会。这对于在用户对于3D模型的当前状态不满意时无法为他们提供重新捕捉图像视图或获取附加图像的机会的常规处理密集型技术而言会是有利的。
图1是图示生成物体的三维(3D)模型的方法100的流程图。方法 100一般地包括接收物体的图像数据(例如,包括感测的位置数据)(框 102),识别图像对(框104),对于该图像对识别匹配点集合(框106),使用感测的位置数据对于该图像对生成感测的旋转矩阵和/或感测的平移矢量(框108),使用该匹配点集合对于该图像对生成所计算的变换 (框110),使用该图像对的感测的旋转矩阵和/或感测的平移矢量对于该图像对生成感测的(或“经修改的”)变换(框112),并且确定与该变换相关联的误差(框114)。如果需要对于该图像对考虑附加的匹配点,则该方法可以包括重复使用下一个匹配点集合对于该图像对生成所计算的变换矩阵并且使用该图像对的感测的旋转矩阵和/或感测的平移矩阵对于该图像对生成感测的(“经修改的”)变换,并且确定与该变换相关联的误差(框116)。如果不需要对于该图像对考虑附加的匹配点,则该方法可以包括对于该图像对选择变换(例如,使用对于变换所确定的误差)(框118),并且使用对于该图像对所选择的变换来更新该物体的3D模型(例如,使用所选择的模型生成3D坐标并且将它们添加至3D模型)(框120)。如果剩余附加的图像对要处理,则该方法可以对于下一个图像对重复相对应的步骤(框122)。如果没有另外的图像对需要被更新,则可以提供经更新的3D模型(例如,向用户进行显示、存储在存储器中等等)(框124)。
在一些实施例中,接收图像数据(框102)包括接收物体的多个2D 图像。例如,接收图像数据可以包括接收从物体周围的各个有利点拍摄的多个图像,上述物体诸如图2中所描绘的楔形物体200。图2图示了楔形物体(“楔子”)200以及从楔子200周围的各个有利点拍摄的2D 图像(例如,照片)202。图像202可以包括从楔子200周围的各个有利点拍摄的五个2D图像202a-202e。虽然出于说明的目的描绘了五个2D图像,但是可以获取任意数量的图像。例如,图像202可以包括楔子200 的100个照片。在一些实施例中,图像202包括使用2D数码相机或其它数字摄影设备获取的2D数字图像。例如,用户可以使用其智能电话中的数码相机在其绕楔子200先走时获取图像202a-202e。
在一些实施例中,图像200包括数字图像数据。例如,每个图像200 可以包括对应于图像的像素的像素映射数据。图像200每一个均可以包括一个图像文件,诸如JPEG(联合图片专家组)图像文件、位图BMP (Windows位图)图像文件、PNG(可移植网络图形)图像文件、RAW (未处理)图像文件等。接收图像数据可以包括接收未处理图像数据 (例如,像素流)和/或以图像文件格式提供的图像数据。
在一些实施例中,接收图像的图像数据包括接收与该图像相关联的位置数据。例如,接收图像202a-202e中的每一个的图像数据可以包括接收指示从其获取该图像的视角/有利点的位置数据。在一些实施例中,位置数据可以包括与图像相关联的定向和/或位置数据。例如,图像的定向数据可以指示相机在其被用来获取图像的时候或者接近此时的视场的定向(例如,角度/方向)。例如,图像202a-202e中的每一个的定向数据可以包括指示相机在其被用来获取相应图像的时候或者接近此时的目标的矢量。图像的位置数据可以指示相机在其被用来获取图像的时候或者接近此时的位置。例如,图像202a-202e中的每一个的位置数据可以包括指示相机在其被用来获取图像的时候或者接近此时的地理位置的地理坐标。
在一些实施例中,图像的位置数据经由与用来获取该图像的相机相关联的位置传感器来提供。例如,该位置数据可以由相机的集成位置传感器来提供。在一些实施例中,位置传感器包括用于获得定向数据的陀螺仪或类似设备和/或用于获得位置数据的GPS设备或类似设备。例如,集成到用户的电话中的陀螺仪和GPS设备可以分别检测该电话在用户使用该电话的相机获取图像200a的时候或者接近此时的定向和位置,并且该位置数据(例如,定向数据和/或位置数据)可以与图像200a相关联。使用与用来获取图像的相机相关联的一个或多个传感器所获取的位置数据在这里可以被称作该图像的“感测位置数据”(例如,包括用于该图像的“感测定向数据”和/或“感测位置数据”)。
在一些实施例中,位置数据被嵌入在图像文件内。例如,用于图像的感测位置数据可以作为随该图像的图像文件一起被包括的位置元数据来提供。包括定向和/或位置数据的图像文件可以被称作“带位置标签的”图像。包括地理位置数据的图像文件可以被称作“带地理标签的”图像。包括定向数据的图像文件可以被称作“带定向标签的”图像。
方法100可以包括识别图像对(框104)。在一些实施例中,识别图像对包括识别具有相似的位置特征并且因此被预计描述物体的类似有利点的两个图像。在一些实施例中,图像对基于它们被获取的序列来识别。例如,图像可以与其之前和/或之后立即拍摄的图像成对。例如,如果图像202a、202b、202c、202d和202e被依序获取,则图像202a 和202b可以被识别为第一图像对,图像202b和202c可以被识别为第二图像对,图像202c和202d可以被识别为第三图像对等等。在一些实施例中,图像对基于它们相对于彼此的位置来识别。例如,图像202a和 202b可以基于它们的位置处于彼此的阈值距离之内和/或图像具有相似的定向而被识别为图像对,而图像202c和202b则基于它们的位置大于距彼此的阈值距离和/或该图像不具有相似的定向而不会被识别为图像对。
方法100可以包括对于图像对识别匹配点(框106)。在一些实施例中,对于图像对识别匹配点包括识别两个图像内表现为相互匹配的多个点(例如,是图像场景的相同部分的照片表示)。例如,在图像 202a和202b已经被识别为图像对的情况下,对于图像对识别匹配点可以包括识别图像202a和202b内互相匹配的点。图3图示了图像对300的示例性匹配点。图像对300包括图像202a和202b。图像202a的点A、B、 C、D、E、F和G可以被识别为图像202b的匹配点A'、B'、C'、D'、E'、 F'和G'。在一些实施例中,点的匹配可以使用任意适合的图像特征匹配技术来实现,诸如SIFT、FAST等。虽然出于图示的目的描绘了点的七个匹配对,但是图像可以包括任意数量的点匹配对。例如,图像202a 和202b可以包括一千个匹配点。
方法100可以包括使用感测的位置数据对于图像对生成感测的旋转矩阵和/或感测的平移矢量(框108)。旋转矩阵可以是被用来在 Euclidean空间中执行旋转的矩阵。平移矢量可以是能够被用来在 Euclidean空间中将每个点以指定方向移动恒定距离的函数。在一些实施例中,使用感测的位置数据对于图像对生成感测的旋转矩阵和/或感测的平移矢量包括使用所接收的图像数据的感测的位置数据来对于图像对生成感测的旋转矩阵和/或感测的平移矢量。例如,用于包括图像 202a和202b的图像对的感测的旋转矩阵(R')和/或感测的平移矢量(t') 可以基于与图像202a相关联的感测位置数据以及与图像202b相关联的感测位置数据之间的差来生成。图像对的感测旋转矩阵可以基于与该图像相关联的定向数据来生成。例如,包括图像202a和202b的图像对的感测旋转矩阵(R')可以基于由与图像202a相关联的感测定向数据指示的第一定向和由与图像202b相关联的感测定向数据指示的第二定向之间的差来生成。图像对的感测平移矢量可以基于与该图像相关联的位置数据来生成。例如,包括图像202a和202b的图像对的感测平移矢量(t')可以基于由与图像202a相关联的感测位置数据指示的第一位置和由与图像202b相关联的感测位置数据指示的第二位置之间的差来生成。
方法100可以包括使用匹配点集合对于图像对生成所计算的变换 (框110)。在一些实施例中,使用匹配点集合对于图像对生成所计算的变换包括基于图像数据(例如,不使用感测位置数据)生成多个候选变换矩阵,并且将具有最低的相关联误差的候选变换矩阵识别为所计算的变换。在一些实施例中,对于图像对生成所计算变换的过程包括以下:
1)对于图像对中的图像识别匹配点集合;
2)使用匹配点集合对于图像对计算基础矩阵(F);
3)使用以下关系基于基础矩阵(F)对于图像对计算本质矩阵(E)
E=K2 TFK1 (1)
其中K1和K2分别是该图像对中的第一和第二图像的内在校准矩阵;
4)使用以下关系对本质矩阵(E)进行分解:
E=U*diag(1,1,0)*VT (2)
以得出以下四个所计算的变换矩阵
P1=[Ra|t] (3)
P2=[Ra|-t] (4)
P3=[Rb|t] (5)
P4=[Rb|-t] (6)
其中:
Ra=UDVT (7)
Rb=UDTVT (8)
并且其中R是所计算的旋转矩阵并且t是所计算的平移矩阵。
在一些实施例中,对于图像对识别匹配点集合包括识别图像对的匹配点的子集。例如,对于图像对识别匹配点集合可以包括随机识别该图像对中的图像之间的五个匹配点对。例如,图像202a和202b的图像对的匹配点集合可以包括点对A-A'、C-C'、D-D'、F-F'和G-G'。
在一些实施例中,可以对于每个候选的所计算的变换矩阵确定误差,并且具有与之相关联的最低误差的候选的所计算的变换矩阵可以被选择为图像对的所计算的变换矩阵(“所计算的变换”)。在一些实施例中,变换矩阵的误差可以通过向匹配点的已知位置应用变换矩阵以生成点的估计位置并且确定所产生的点的已知和估计位置之间的误差来计算。例如,变换矩阵可以被应用于图像202a中的匹配点集合的已知位置以计算图像202b中的匹配点的估计位置,并且能够基于图像202b中的匹配点的估计位置和已知位置之间的差来确定变换矩阵的误差。可以对于包括图像202a和202b的图像对的四个候选的所计算的变换矩阵中的每一个重复进行误差确定,并且具有最低误差的候选的所计算的变换矩阵可以被识别为该图像对的所计算的变换。
在一些实施例中,在计算变换的误差时可以仅考虑图像对的所有匹配点的子集。例如,变换矩阵可以被应用于图像202a中的匹配点的集合的已知位置B、H、I、J和L以计算图像202b中的匹配点的估计位置 B"、H"、I"、J"和L",并且能够基于图像202b中的匹配点的估计位置B"、 H"、I"、J"和L"和已知位置B'、H'、I'、J'和L'之间的差来确定变换矩阵的误差。在一些实施例中,用来计算误差的匹配点集合可以不同于用来生成基础矩阵(F)的点集合。在一些实施例中,用来计算误差的匹配点集合可以与用来计算基础矩阵(F)的点集合相同。使用比图像对的所有匹配点少的匹配点可以有助于降低处理负荷并且减少识别图像对的变换所需的时间。
方法100可以包括使用用于图像对的感测旋转矩阵和/或的感测平移矢量来对于该图像对生成感测的(或“经修改的”)变换(框112)。在一些实施例中,使用用于图像对的感测旋转矩阵和/或感测平移矢量来对于该图像对生成感测的(或“经修改的”)变换包括用感测的旋转矩阵(R')和/或所感测的平移矢量(t')替换所选择的所计算的变换的旋转矩阵(R)或所计算的平移矢量(t)。例如,在P1(即,P1=[Ra|t]) 被识别为图像202a和202b的所计算的变换的情况下,可以通过用感测的旋转矩阵(R')替换所计算的变换的所计算的旋转矩阵(Ra)和/或用感测的平移矢量(t')替换所计算的平移矢量(t)来生成该图像对的经修改的变换(PM)。因此,该图像对的经修改的变换(PM)可以包括以下中的一个或多个:
PM1=[R'|t] (8)
PM2=[R|t'] (9)
PM3=[R'|t’] (10)
例如,如果仅感测的旋转矩阵被使用(例如,如果感测的平移矩阵不可用或不可靠),则图像对的经修改的变换(PM)可以为等式(8) 所示,即PM1=[R’|t]。
方法100可以包括确定与变换相关联的误差(框114)。在一些实施例中,确定与变换相关联的误差包括确定与经修改的变换矩阵(或多个矩阵)相关联的误差。误差可以以与以上所讨论的相同或相似的方式来计算。例如,经修改的变换矩阵可以被应用于图像202a中的匹配点集合的已知位置B、H、I、J和L以计算图像202b中的匹配点的估计位置B"、H"、I"、J"和L",并且能够基于图像202b中的匹配点的估计位置B"、H"、I"、J"和L"和已知位置B'、H'、I'、J'和L'之间的差来确定变换的误差。在一些实施例中,用来计算误差的匹配点集合可以不同于用来生成基础矩阵(F)的点集合。在一些实施例中,用来计算误差的匹配点集合可以与用来生成基础矩阵(F)的点集合和/或用来计算候选变换矩阵的误差的点集合相同。
如果该过程要求基于多于一个匹配点集合来生成矩阵,则方法100 可以包括对于每个其余匹配点集合重复步骤106至114(框116)。例如,在要求对于五个随机选择点的至少三个集合生成矩阵的情况下(例如,N=3),则步骤106-114可以对于图像对的第二和第三匹配点集合再重复两次。在这样的实施例中,可以生成最少六个变换。例如,如果感测的旋转矩阵(R')或感测的平移矢量(t')中的仅仅一个被替换以生成经修改的变换(例如,参见等式8或等式9),则可以对于三个匹配点集合中的每一个生成所计算的变换和经修改的变换(导致总共六个变换)。例如,如果感测的旋转矩阵(R')和感测的平移矢量(t')都被替代以生成经修改的变换(例如,参见等式(8)、(9)和(10)),则可以对于三个匹配点集合中的每一个生成所计算的变换和三个经修改的变换(导致总共十二个变换)。
如果确定没有附加的匹配点集合需要进行处理,则方法100可以继续进行以选择用于图像对的变换(框118)。在一些实施例中,选择用于图像对的变换包括选择与最低误差相关联的变换。例如,如果基于对三个点集合以及替换仅一个感测的旋转矩阵(R')而总共有六个变换,例如PC1=[R|t]、PC2=[R|t]、PC3=[R|t]、PM1=[R'|t]、PM2=[R'|t]和PM3=[R'|t],并且变换P1M具有与其相关联的最低误差,则变换P1M可以基于其具有六个变换中的最低误差而被选择为用于该图像对的变换。
方法100可以包括对于图像对使用所选择的变换来更新物体的3D 模型(框120)。在一些实施例中,对于图像对使用所选择的变换来更新物体的3D模型包括使用所选择的变换将图像对的匹配点变换为3D/ 真实世界坐标。例如,如果P1M被选择为用于包括图像202a和202b的图像对的变换矩阵,则图像202a和202b的一百个匹配点能够使用P1M被变换为3D/真实世界坐标,并且该3D/真实世界坐标能够被添加至楔子200 的3D模型。
如果确定附加的图像对存在或者已经以其它方式被识别为在生成 3D模型时使用,则方法100可以继续进行以对于每个附加的图像对重复步骤104-120(框122)。例如,如果识别了50个图像对,则步骤104-120 可以对于剩余的49个图像对中的每一个进行重复。
如果确定没有附加的图像对存在或者以其它方式被识别为要在生成3D模型时使用,则方法100可以继续进行以提供物体的3D模型(框 124)。在一些实施例中,提供物体的3D模型包括渲染该3D模型以便进行显示,存储该3D模型,传送该3D模型等。例如,所产生的3D模型可以被渲染以便向用户进行显示。在一些实施例中,在获取图像数据之后很快生成物体的3D重构,并且经更新的3D模型在用户获取在生成3D 模型时使用的图像时被不断地(例如,每隔几秒钟)提供给他们。这可以使得用户能够立即查看基于他们已经获取的图像所创建的3D模型,并且允许用户在他们对于3D模型的当前状态不满意时重新捕捉图像视图或者拍摄附加的图像。例如,如果用户观看3D模型并且确定物体的特定视图没有被充分表示,则用户可以获取该物体的附加图像,并且该附加图像可以如关于方法100所讨论的那样进行处理。
将要理解的是,方法100是可以依据这里所描述的技术所采用的方法的示例性实施例。方法100可以进行修改以促成其实施方式和使用的变化。方法100可以以软件、硬件或者它们的组合来实现。一些或全部的方法100可以由这里所描述的模块/应用中的一个或多个来实现,诸如以下关于图4更为详细描绘和描述的3D模型模块412和/或应用408。方法100中的步骤的顺序可以进行变化,并且可以对各个元素进行增加、重新排序、组合、省略、修改等。
图4是图示3D建模环境400的框图。环境400包括经由网络406通信耦合的服务器402和用户设备404。网络406可以包括电子通信网络,诸如互联网、局域网(LAN)、广域网(WAN)、蜂窝通信网络等。网络406可以包括单个网络或网络的组合。
设备404可以包括各种移动电子设备。例如,设备404可以包括膝上计算机、平板计算机、蜂窝电话、个人数字助理(PDA)、数码相机、具有头戴式显示器/相机的可佩带计算机等。在一些实施例中,设备404包括各种输入/输出(I/O)接口,诸如图形用户接口(例如,显示屏)、图像获取设备(例如,相机409)、可听输出用户接口(例如,扬声器)、可听输入用户接口(例如,麦克风)、键盘、指针/选择设备(例如,鼠标、轨迹球、触摸板、触摸屏、触控笔等)、打印机等。在一些实施例中,设备404包括位置传感器407。位置传感器407可以提供指示设备404的定向/位置的定向/位置数据。位置传感器407可以包括例如能够提供指示设备404的定向/位置的定向/位置数据的集成陀螺仪和/或GPS设备。在一些实施例中,设备404包括通用计算组件和/或利用用于执行特定任务的特定组件优化的嵌入式系统。设备404可以包括应用408。应用408可以包括具有程序指令的一个或多个模块,该指令能够被计算机系统执行以执行这里关于设备404所描述的一些或全部功能。例如,应用408可以包括能够由计算机系统执行以执行方法100的一些或全部步骤的指令。在一些实施例中,设备404包括类似于以下关于至少图5所描述的计算机系统1000的计算机系统。
服务器402可以包括对客户端实体的请求进行服务的网络实体。例如,服务器402可以对设备404的请求进行服务。在一些实施例中,服务器402托管内容站点,诸如网站、文件传输协议(FTP)站点、互联网搜索网站或者网络内容的其它源。在一些实施例中,服务器402包括用于收集、存储和/或派发图像和/或3D模型的图像服务器。在一些实施例中,服务器402包括数据存储410或者能够以其它方式对其进行访问。数据存储410可以包括数据库或类似的数据库集。数据存储410可以包括用于存储图像和/或3D模型的图像库集。
在一些实施例中,服务器402包括3D模型模块412。模块412可以包括能够由计算机系统执行以执行这里关于服务器402所描述的一些或全部功能的程序指令。模块412可以包括能够由计算机系统执行以执行方法100的一些或全部步骤的程序指令。在一个实施例中,服务器402 可以包括类似于以下关于至少图5所描述的计算机系统1000的计算机系统。虽然服务器402由单个框所表示,但是服务器402可以包括单个服务器(或类似系统)或者多个服务器(和/或类似系统)。例如,服务器402可以包括被单独或组合采用以执行这里关于服务器402所描述的一些或全部功能的多个不同服务器(和/或类似系统)。
在一些实施例中,环境400被用来采用这里所描述的技术(例如,方法100的步骤)。例如,用户414可以使用用户设备404的相机407捕捉物体(例如,楔子200)的2D图像416(例如,2D图像202a-202g)。图像416可以从用户设备404传送至服务器402以便由3D模块412进行处理。2D图像416可以包括与其相关联的位置数据418(例如,包括定向数据418a和/或位置数据418b)。位置数据418可以由用户设备402的位置传感器407提供。3D模型模块412可以如关于方法100所描述地对图像 416进行处理以生成该物体的相对应的3D模型。例如,模块412可以接收图像416的图像数据(例如,关于框102所描述的),识别图像对(例如,如关于框104所描述的)的匹配点集合,识别图像对的匹配点集合 (例如,如关于框106所描述的),使用感测的位置数据对于图像对生成感测的旋转矩阵和/或感测的平移矢量(例如,如关于框108所描述的),使用匹配点集合对于图像对生成所计算的变换(例如,如关于框110所描述的),使用用于图像对感测的旋转矩阵和/或感测的平移矢量来对于该图像对生成感测的(或经修改的)变换(例如,如关于框112所描述的),并且确定与匹配点集合的变换相关联的误差(例如,如关于框114所描述的)。如果需要考虑图像对的附加的匹配点,则模块412可以重复以上的步骤:使用匹配点的下一个集合对于图像对生成所计算的变换矩阵并且使用用于图像对的感测的旋转矩阵和/或感测的平移矢量来对于该图像对生成感测的(经修改的)变换(例如,如关于框116所描述的)。如果不需考虑该图像对的附加的匹配点,则模块 412可以选择用于该图像对的变换(例如,基于对于变换确定的误差) (例如,如关于框118所描述的),并且使用所选择的用于图像对的变换来更新物体的3D模型419(例如,使用所选择的模型生成3D坐标并且将它们添加至3D模型)(例如,如关于框120所描述的)。如果附加的图像对剩余要被处理,则模块412 可以对于下一图像对重复相对应的步骤(例如,如关于框122 所描述的)。如果不需要更新附加的图像对,则可以提供所更新的3D模型419(例如,派发给设备404或另一个用户设备以便进行显示,存储在数据存储410中,等等)。虽然模块412被图示为由服务器402来采用,但是实施例可以包括在任意适当设备上实现模块412和/或应用408的一些或全部功能。例如,模块412的一些或全部功能可以在用户设备404上提供(例如,替代或结合应用408),使得该3D建模过程能够由用户设备404来完成。
示例性计算机系统
图5是图示示例性计算机系统1000的框图。这里所描述的系统和方法的各个部分可以包括一个或多个类似于系统1000的计算机系统或者在其上执行。例如,服务器402和/或用户设备404可以包括类似于计算机系统1000的至少一部分的配置。另外,这里所描述的方法/过程/模块 (例如,模块412和/或应用408)可以由类似于计算机系统1000的一个或多个处理系统所执行。
计算机系统1000可以包括经由输入/输出(I/O)接口1050耦合至系统存储器1020、输入/输出I/O设备接口1030和网络接口1040的一个或多个处理器(例如,处理器1010a-1010n)。处理器可以包括单个处理器设备和/或多个处理器设备(例如,分布式处理器)。处理器可以是能够执行/运行指令的任意适当处理器。处理器可以包括执行程序指令以执行计算机系统1000的基本算术、逻辑和输入/输出操作的中央处理器 (CPU)。处理器可以包括为程序指令创建执行环境的代码(例如,处理器固件、协议栈、数据库管理系统、操作系统或者它们的组合)。处理器可以包括可编程处理器。处理器可以包括通用和/或专用微处理器。处理器可以从存储器(例如,系统存储器1020)接收指令和数据。计算机系统1000可以是包括一个处理器(例如,处理器1010a)的单处理器系统,或者包括任意数量的适当处理器(例如,1010a-1010n)的多处理器系统。多个处理器可以被用来提供这里所描述的技术的一个或多个部分的并行和/或顺序执行。这里所描述的过程和逻辑流程可以由执行一个或多个程序以通过对输入数据进行运算并且生成相对应输出而执行功能的一个或多个可编程处理器来执行。在此所述的过程和逻辑流程也能够由例如FPGA(现场可编程门阵列)或ASIC(应用特定集成电路)的专用逻辑电路执行,并且该装置也可以被实现为上述专用逻辑电路。计算机系统1000可以包括采用多个计算机系统(例如,分布式计算机系统)来实现各种处理功能的计算机系统。
I/O设备接口1030可以提供用于将一个或多个I/O设备1060连接至计算机系统1000的接口。I/O设备可以包括用于接收输入(例如,从用户)和/或提供输出(例如,向用户)的任意设备。I/O设备1060例如可以包括图形用户界面显示器(例如,阴极射线管(CRT)或液晶显示器 (LCD)监视器)、指示设备(例如,计算机鼠标或轨迹球)、键盘、小键盘、触摸板、扫描设备、语音识别设备、手势识别设备、指示器、音频扬声器、麦克风、相机等。I/O设备1060可以通过有线或无线连接而连接至计算机系统1000。I/O设备1060可以从远处位置连接至计算机系统1000。位于远程计算机系统上的I/O设备1060例如可以经由网络和/ 或网络接口1040连接至计算机系统1000。
网络接口1040可以包括提供计算机系统1000到网络的连接的网络适配器。网络接口1040可以促成计算机系统1000以及连接至网络的其它设备之间的数据交换。网络接口1040可以支持有线或无线通信。网络可以包括电子通信网络,诸如互联网、局域网(LAN)、广域网(WAN)、蜂窝通信网络等。
系统存储器1020可以被配置为存储程序指令1100和/或数据1110。程序指令1100能够由处理器(例如,处理器1010a-1010n中的一个或多个)执行以实现该技术的一个或多个实施例。指令1100可以包括计算机程序指令的多个模块以便实现这里关于各个处理模块所描述的一种或多种技术。程序指令可以包括计算机程序(也被称作程序、软件、软件应用、脚本或代码)。计算机程序可以以任意形式的编程语言进行编写,包括编译或解释语言或者声明/过程语言。计算机程序可以包括适于在计算环境中使用的单元,包括作为独立程序、模块、组件、子程序。计算机程序可以或可以不对应于文件系统中的文件。程序可以存储在保存有其它的程序或数据(例如,标记语言文档中存储的一个或多个脚本)的文件的一部分、专用于所讨论的程序的单个文件或者多个协调文件(例如,存储一个或多个模块、子程序或者代码部分的文件)之中。计算机程序能够被部署为在位于一个地点本地地或者跨多个远程地点分布并且通过通信网络互连的一个或多个计算机处理器上执行。
系统存储器1020可以包括非瞬态的计算机可读存储介质,诸如机器可读存储设备、机器可读存储基片、存储器设备或者它们的任意组合等。非瞬态的计算机可读存储介质可以包括非易失性存储器(例如,闪存、ROM、PROM、EPROM、EEPROM存储器)、易失性存储器(例如,随机存取存储器(RAM)、静态随机存取存储器(SRAM)、同步动态RAM(SDRAM))、大容量存储存储器(例如,CD-ROM和/ 或DVD-ROM、硬盘)等。系统存储器1020可以包括其上存储有程序指令的非瞬态计算机可读存储介质,上述程序指令能够由计算机处理器 (例如,处理器1010a-1010n中的一个或多个)执行从而形成这里所描述的一些或全部的主题以及功能操作。存储器(例如,系统存储器1020) 可以包括单个存储器设备和/或多个存储器设备(例如,分布式存储器设备)。
I/O接口1050可以被配置为对处理器1010a-1010n、系统存储器020、网络接口1040、I/O设备1060和/或其它外围设备之间的I/O业务进行协调。I/O接口1050可以执行协议、时序或其它数据变换以将数据信号从一个组件(例如,系统存储器1020)转换为适于由另一个组件(例如,处理器1010a-1010n)使用的格式。I/O接口1050可以包括对通过各种类型的外围总线附接的设备的支持,诸如各种外围组件互联(PCI)总线标准或者通用串行总线(USB)标准。
这里所描述的技术的实施例可以使用计算机系统1000的单个实例或者被配置为托管实施例的不同部分或实例的多个计算机系统1000来实现。多个计算机系统1000可以提供这里所描述的技术的一个或多个部分的并行或顺序处理/执行。
本领域技术人员将理解,计算机系统1000仅是说明而并非意在对这里所描述的技术的范围进行限制。计算机系统1000可以包括可以执行或者以其它方式提供这里所描述的技术的执行的设备和/或软件的任意组合。例如,计算机系统1000可以包括台式计算机、膝上计算机、平板计算机、服务器设备、客户端设备、移动电话、个人数字助理 (PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS) 等。计算机系统1000还可以连接至未图示的其它设备,或者可以作为独立系统进行操作。此外,所图示的组件所提供的功能在一些实施例中可以组合成较少组件或者在另外的组件中进行分布。类似地,在一些实施例中,所图示的一些组件的功能可以不被提供和/或有其它另外的功能可用。
本领域技术人员还将理解,虽然各个项被图示为在被使用的同时存储在存储器中或存储上,但是这些项或它们的部分可以出于存储器管理和数据完整性的目的而在存储器和其它存储设备之间进行转移。替选地,在其它实施例中,一些或全部的软件组件也可以在另一设备上的存储器中执行并且经由计算机间通信与所图示的计算机系统通信。系统组件或数据结构中的一些或所有也可以被存储(例如,作为指令或结构化数据)在计算机可访问介质上或者要由适当驱动器进行读取的便携式物品,它们的各个示例在上文中进行了描述。在一些实施例中,存储在与计算机系统1000分离的计算机可访问介质上的指令可以经由传输介质或者信号被传送至计算机系统1000,上述信号诸如是经由诸如网络和/或无线链路之类的通信介质进行传递的电、电磁或数字信号。各个实施例可以进一步包括在计算机可访问介质上接收、发送或存储依据以上描述实现的指令和/或数据。因此,本发明可以利用其它计算机系统配置进行来实践。
应当理解的是,描述和附图不意在将本发明限制为所公开的特定形式,而是与之相反,旨在覆盖落入如所附权利要求所限定的本发明的精神和范围之内的所有修改、等同和替选。本发明的各个方面的另外的修改和替选实施例在考虑到该描述的情况下对于本领域技术人员将是显而易见的。因此,该描述和附图要被理解为仅是说明性的并且是出于教导本领域技术人员执行本发明的一般方式。所要理解的是,这里所示出并描述的多种发明形式要被理解为是实施例的示例。这里所描述并图示的那些元素和材料可以被替换,多个部分和过程可以被反转或省略,并且本发明的某些特征可以被独立采用,所有这些对于通过本发明的描述获益的本领域技术人员都会是显而易见的。可以对这里所描述的元素进行变化而并不背离如所附权利要求中所描述的本发明的精神和范围。这里所使用的标题仅是出于组织的目的而并非意在被用来限制描述的范围。
如贯穿本申请所使用的,术语“可以”以许可的含义使用(即意味着有可能),而不是强制的含义(即意味着必须)。词语“包括”、“包含”和“包括了”意味着包括但不限于。如贯穿本申请所使用的,除非上下文以其它方式明确指示,否则单数形式“一”包括复数形式。因此,例如,对于“元素”的引用可以包括两个或更多元素的组合。除非以其它方式明确指出,否则如从讨论所显而易见的,所要意识到的是,贯穿该说明书的讨论所采用的诸如“处理”、“计算”、“运算”、“确定”等的术语是指诸如专用计算机或类似的专用电子处理/ 计算设备之类的特定装置的动作或过程。在该说明书的上下文中,专用计算机或类似的专用电子处理/计算设备能够对信号进行操控或变换,上述信号通常在存储器、寄存器或专用计算机或类似的专用电子处理/计算设备的其它信息存储设备、传输设备或显示设备内被表示为物理的电子或磁数量。
Claims (21)
1.一种计算机实现的用于生成三维模型的方法,所述方法包括:
接收指示相机设备在其被用来获取第一二维图像时的定向的感测位置数据的第一集合,其中所述感测位置数据的第一集合由用来获取所述第一二维图像的相机设备的传感器来提供;
接收指示相机设备在其被用来获取第二二维图像时的定向的感测位置数据的第二集合,其中所述感测位置数据的第二集合由用来获取所述第二二维图像的相机设备的传感器来提供;
使用所述感测位置数据的第一和第二集合对于包括所述第一和第二二维图像的图像对确定感测的旋转矩阵;
对于所述图像对识别计算的相机变换矩阵,计算的变换包括计算的平移矢量和计算的旋转矩阵;
对于所述图像对生成感测的相机变换矩阵,感测的相机变换包括平移矢量和所述感测的旋转矩阵;
识别所述第一和第二二维图像的匹配点集合;
确定与使用所述感测的相机变换的所述匹配点集合的变换相关联的第一误差是否小于与使用所述计算的相机变换的所述匹配点集合的变换相关联的第二误差;以及
响应于确定与使用所述感测的相机变换的匹配点集合的变换相关联的第一误差小于与使用所述计算的相机变换的所述匹配点集合的变换相关联的第二误差,使用所述感测的相机变换来生成三维模型;以及
将所述三维模型存储在三维模型库集中。
2.根据权利要求1所述的方法,其中,识别计算的相机变换包括:
使用所述第一和第二二维图像的匹配点集合得出多个候选的计算的变换矩阵,其中所述候选的计算的变换矩阵每一个均包括平移分量和计算的旋转矩阵;
识别所述多个候选的计算的变换矩阵中与最低变换误差相关联的候选的计算的变换矩阵;以及
将与所述最低变换误差相关联的所述候选的计算的变换矩阵识别为所述计算的相机变换。
3.根据权利要求2所述的方法,其中,使用匹配点集合得出多个候选的计算的变换矩阵包括:
使用匹配点集合来计算所述第一和第二二维图像之间的基础矩阵;
基于所述基础矩阵来计算本质矩阵;以及
经由奇异值分解将所述本质矩阵分解为四个候选的计算的变换矩阵。
4.根据权利要求2所述的方法,其中,所述匹配点集合包括所述第一和第二二维图像的匹配点集合的子集。
5.根据权利要求4所述的方法,其中,所述匹配点集合包括所述第一和第二二维图像的匹配点集合中的5个匹配点。
6.根据权利要求1所述的方法,其中,确定与使用所述感测的相机变换的所述匹配点集合的变换相关联的第一误差是否小于与使用所述计算的相机变换的所述匹配点集合的变换相关联的第二误差包括:
选择所述第一和第二二维图像的匹配点集合的子集;
确定与使用所述计算的相机变换的匹配点子集之间的变换相关联的第一误差;
确定与使用所述感测的相机变换的匹配点子集之间的变换相关联的第二误差;以及
将所述第一误差与所述第二误差进行比较以确定与使用所述感测的相机变换的匹配点子集的变换相关联的所述第一误差是否小于与使用所述计算的相机变换的匹配点子集的变换相关联的第二误差。
7.根据权利要求1所述的方法,其中,使用所述感测的相机变换矩阵来生成三维模型包括:
将所述匹配点集合中的匹配点变换为三维坐标;以及
将所述三维坐标添加至所述三维模型。
8.根据权利要求1所述的方法,其中,所述计算的相机变换的平移矢量和所述感测的相机变换的平移矢量是相同的。
9.根据权利要求1所述的方法,其中,所述感测位置数据的第一集合指示相机设备在其被用来捕捉第一二维图像时的位置,其中,所述感测位置数据的第二集合指示相机设备在其被用来捕捉第二二维图像时的位置,所述方法进一步包括:
使用所述感测位置数据的第一和第二集合对于包括所述第一和第二二维图像的图像对确定感测的旋转矩阵,其中所述感测的相机变换的平移矢量包括所述感测的旋转矩阵,并且其中所述计算的相机变换的平移矢量基于所述第一和第二二维图像的匹配点来计算。
10.根据权利要求1所述的方法,其中,所述传感器包括陀螺仪。
11.一种非瞬态的计算机可读介质,包括存储于其上的程序指令,所述程序指令能够被处理器执行而导致以下用于生成三维模型的步骤:
接收指示相机设备在其被用来获取第一二维图像时的定向的感测位置数据的第一集合,其中所述感测位置数据的第一集合由用来获取所述第一二维图像的相机设备的传感器来提供;
接收指示相机设备在其被用来获取第二二维图像时的定向的感测位置数据的第二集合,其中所述感测位置数据的第二集合由用来获取所述第二二维图像的相机设备的传感器来提供;
使用所述感测位置数据的第一和第二集合对于包括所述第一和第二二维图像的图像对确定感测的旋转矩阵;
对于所述图像对识别计算的相机变换矩阵,计算的变换包括计算的平移矢量和计算的旋转矩阵;
对于所述图像对生成感测的相机变换矩阵,感测的相机变换包括平移矢量和所述感测的旋转矩阵;
识别所述第一和第二二维图像的匹配点集合;
确定与使用所述感测的相机变换的所述匹配点集合的变换相关联的第一误差是否小于与使用所述计算的相机变换的所述匹配点集合的变换相关联的第二误差;以及
响应于确定与使用所述感测的相机变换的匹配点集合的变换相关联的第一误差小于与使用所述计算的相机变换的所述匹配点集合的变换相关联的第二误差,使用所述感测的相机变换来生成三维模型;以及
将所述三维模型存储在三维模型库集中。
12.根据权利要求11所述的介质,其中,识别计算的相机变换包括:
使用所述第一和第二二维图像的匹配点集合得出多个候选的计算的变换矩阵,其中所述候选的计算的变换矩阵每一个均包括平移分量和计算的旋转矩阵;
识别所述多个候选的计算的变换矩阵中与最低变换误差相关联的候选的计算的变换矩阵;以及
将与所述最低变换误差相关联的所述候选的计算的变换矩阵识别为所述计算的相机变换。
13.根据权利要求12所述的介质,其中,使用匹配点集合得出多个候选的计算的变换矩阵包括:
使用匹配点集合来计算所述第一和第二二维图像之间的基础矩阵;
基于所述基础矩阵来计算本质矩阵;以及
经由奇异值分解将所述本质矩阵分解为四个候选的计算的变换矩阵。
14.根据权利要求12所述的介质,其中,所述匹配点集合包括所述第一和第二二维图像的匹配点集合的子集。
15.根据权利要求14所述的介质,其中,所述匹配点集合包括所述第一和第二二维图像的匹配点集合中的5个匹配点。
16.根据权利要求11所述的介质,其中,确定与使用所述感测的相机变换的所述匹配点集合的变换相关联的第一误差是否小于与使用所述计算的相机变换的所述匹配点集合的变换相关联的第二误差包括:
选择所述第一和第二二维图像的匹配点集合的子集;
确定与使用所述计算的相机变换的匹配点子集之间的变换相关联的第一误差;
确定与使用所述感测的相机变换的匹配点子集之间的变换相关联的第二误差;以及
将所述第一误差与所述第二误差进行比较以确定与使用所述感测的相机变换的匹配点子集的变换相关联的所述第一误差是否小于与使用所述计算的相机变换的匹配点子集的变换相关联的第二误差。
17.根据权利要求11所述的介质,其中,使用所述感测的相机变换矩阵来生成三维模型包括:
将所述匹配点集合中的匹配点变换为三维坐标;以及
将所述三维坐标添加至所述三维模型。
18.根据权利要求11所述的介质,其中,所述计算的相机变换的平移矢量和感测的相机变换的平移矢量是相同的。
19.根据权利要求11所述的介质,其中,所述感测位置数据的第一集合指示相机设备在其被用来捕捉第一二维图像时的位置,其中,所述感测位置数据的第二集合指示相机设备在其被用来捕捉第二二维图像时的位置,所述程序指令进一步能够被所述处理器执行而导致以下用于生成三维模型的步骤:
使用所述感测位置数据的第一和第二集合对于包括所述第一和第二二维图像的图像对确定感测的旋转矩阵,其中所述感测的相机变换的平移矢量包括所述感测的旋转矩阵,并且其中所述计算的相机变换的平移矢量基于所述第一和第二二维图像的匹配点来计算。
20.根据权利要求11所述的介质,其中,所述传感器包括陀螺仪。
21.一种计算机实现的用于生成三维模型的方法,所述方法包括:
接收指示相机设备在其被用来获取第一二维图像时的位置的感测位置数据的第一集合,其中所述感测位置数据的第一集合由用来获取所述第一二维 图像的所述相机设备的集成传感器来提供;
接收指示相机设备在其被用来获取第二二维图像时的位置的定位传感器数据的第二集合,其中所述感测位置数据的第二集合由用来获取所述第二二维图像的所述相机设备的集成传感器来提供;
使用所述感测位置数据的第一和第二集合来确定所述第一和第二二维图像之间的感测的旋转矩阵和/或感测的平移矢量;
识别包括计算的平移矢量和计算的旋转矩阵的计算的相机变换;
生成包括所述感测的旋转矩阵和/或所述感测的平移矢量的感测的相机变换;
识别所述第一和第二二维图像的匹配点集合;
确定与使用所述感测的相机变换的所述匹配点集合的变换相关联的第一误差是否小于与使用所述计算的相机变换的所述匹配点集合的变换相关联的第二误差;以及
响应于确定与使用所述感测的相机变换的所述匹配点集合的变换相关联的第一误差小于与使用所述计算的相机变换的所述匹配点集合的变换相关联的第二误差,使用所述感测的相机变换来生成三维模型;以及
将所述三维模型存储在三维模型库集中。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2013/076171 WO2014186970A1 (en) | 2013-05-23 | 2013-05-23 | Systems and methods for generating three-dimensional models using sensed position data |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105229703A CN105229703A (zh) | 2016-01-06 |
CN105229703B true CN105229703B (zh) | 2018-02-09 |
Family
ID=51932726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380076539.9A Active CN105229703B (zh) | 2013-05-23 | 2013-05-23 | 用于使用感测的位置数据来生成三维模型的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9542773B2 (zh) |
CN (1) | CN105229703B (zh) |
WO (1) | WO2014186970A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106033621B (zh) * | 2015-03-17 | 2018-08-24 | 阿里巴巴集团控股有限公司 | 一种三维建模的方法及装置 |
RU2586566C1 (ru) * | 2015-03-25 | 2016-06-10 | Общество с ограниченной ответственностью "Лаборатория 24" | Способ отображения объекта |
US11080920B2 (en) * | 2015-03-25 | 2021-08-03 | Devar Entertainment Limited | Method of displaying an object |
EP3337418B1 (en) * | 2015-08-17 | 2021-10-13 | Koninklijke Philips N.V. | Simulating breast deformation |
US10447999B2 (en) * | 2015-10-20 | 2019-10-15 | Hewlett-Packard Development Company, L.P. | Alignment of images of a three-dimensional object |
CN109076200B (zh) * | 2016-01-12 | 2021-04-23 | 上海科技大学 | 全景立体视频系统的校准方法和装置 |
US10257505B2 (en) * | 2016-02-08 | 2019-04-09 | Microsoft Technology Licensing, Llc | Optimized object scanning using sensor fusion |
US9868212B1 (en) * | 2016-02-18 | 2018-01-16 | X Development Llc | Methods and apparatus for determining the pose of an object based on point cloud data |
EP3242228A1 (en) * | 2016-05-02 | 2017-11-08 | Artag SARL | Managing the display of assets in augmented reality mode |
US10311593B2 (en) * | 2016-11-16 | 2019-06-04 | International Business Machines Corporation | Object instance identification using three-dimensional spatial configuration |
US20180268614A1 (en) * | 2017-03-16 | 2018-09-20 | General Electric Company | Systems and methods for aligning pmi object on a model |
US10636193B1 (en) | 2017-06-29 | 2020-04-28 | Facebook Technologies, Llc | Generating graphical representation of a user's face and body using a monitoring system included on a head mounted display |
US10636192B1 (en) * | 2017-06-30 | 2020-04-28 | Facebook Technologies, Llc | Generating a graphical representation of a face of a user wearing a head mounted display |
CN109688343A (zh) * | 2017-10-18 | 2019-04-26 | 深圳市掌网科技股份有限公司 | 增强现实演播室的实现方法和装置 |
US10026218B1 (en) * | 2017-11-01 | 2018-07-17 | Pencil and Pixel, Inc. | Modeling indoor scenes based on digital images |
CN108470151A (zh) * | 2018-02-14 | 2018-08-31 | 天目爱视(北京)科技有限公司 | 一种生物特征模型合成方法及装置 |
US11169577B2 (en) * | 2018-04-04 | 2021-11-09 | Microsoft Technology Licensing, Llc | Sensing relative orientation of computing device portions |
US10740983B2 (en) * | 2018-06-01 | 2020-08-11 | Ebay Korea Co. Ltd. | Colored three-dimensional digital model generation |
US10957099B2 (en) * | 2018-11-16 | 2021-03-23 | Honda Motor Co., Ltd. | System and method for display of visual representations of vehicle associated information based on three dimensional model |
EP3848900A1 (en) | 2020-01-10 | 2021-07-14 | Aptiv Technologies Limited | Methods and systems for calibrating a camera |
CN117422610B (zh) * | 2023-12-19 | 2024-03-22 | 上海卫星互联网研究院有限公司 | 一种三维模型轻量化方法、装置及电子设备 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3558104B2 (ja) * | 1996-08-05 | 2004-08-25 | ソニー株式会社 | 3次元仮想物体表示装置および方法 |
EP0901105A1 (en) * | 1997-08-05 | 1999-03-10 | Canon Kabushiki Kaisha | Image processing apparatus |
AU9663098A (en) * | 1997-09-23 | 1999-04-12 | Enroute, Inc. | Generating three-dimensional models of objects defined by two-dimensional image data |
JP3732335B2 (ja) * | 1998-02-18 | 2006-01-05 | 株式会社リコー | 画像入力装置及び画像入力方法 |
JP2008503757A (ja) * | 2004-06-22 | 2008-02-07 | サーノフ コーポレーション | ビジュアル・オドメトリのための方法および装置 |
US7860301B2 (en) * | 2005-02-11 | 2010-12-28 | Macdonald Dettwiler And Associates Inc. | 3D imaging system |
US7605817B2 (en) * | 2005-11-09 | 2009-10-20 | 3M Innovative Properties Company | Determining camera motion |
US8401276B1 (en) * | 2008-05-20 | 2013-03-19 | University Of Southern California | 3-D reconstruction and registration |
US20120299702A1 (en) * | 2011-05-26 | 2012-11-29 | Caterpillar Inc. | Hybrid positioning system |
US9525862B2 (en) | 2011-08-31 | 2016-12-20 | Metaio Gmbh | Method for estimating a camera motion and for determining a three-dimensional model of a real environment |
CN103959308B (zh) | 2011-08-31 | 2017-09-19 | Metaio有限公司 | 以参考特征匹配图像特征的方法 |
US8416240B1 (en) * | 2012-04-02 | 2013-04-09 | Google Inc. | Determining 3D model information from stored images |
CN103021017B (zh) | 2012-12-04 | 2015-05-20 | 上海交通大学 | 基于gpu加速的三维场景重建方法 |
-
2013
- 2013-05-23 WO PCT/CN2013/076171 patent/WO2014186970A1/en active Application Filing
- 2013-05-23 US US14/761,803 patent/US9542773B2/en active Active
- 2013-05-23 CN CN201380076539.9A patent/CN105229703B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US20150363971A1 (en) | 2015-12-17 |
CN105229703A (zh) | 2016-01-06 |
US9542773B2 (en) | 2017-01-10 |
WO2014186970A1 (en) | 2014-11-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105229703B (zh) | 用于使用感测的位置数据来生成三维模型的系统和方法 | |
CN105453559B (zh) | 手持式便携光学扫描器及其使用方法 | |
CN103703758B (zh) | 移动增强现实系统 | |
CN106462997B (zh) | 街道视图和地球视图之间的混合 | |
US11113882B2 (en) | Generating immersive trip photograph visualizations | |
CN103858148A (zh) | 用于移动设备的平面映射和跟踪 | |
CN111524172A (zh) | 建筑施工进度的评估方法、装置及存储介质 | |
JP6353175B1 (ja) | 視覚特徴を使用した画像の自動結合 | |
US11631195B2 (en) | Indoor positioning system and indoor positioning method | |
US11373329B2 (en) | Method of generating 3-dimensional model data | |
CN109754464B (zh) | 用于生成信息的方法和装置 | |
CN111881804A (zh) | 基于联合训练的姿态估计模型训练方法、系统、介质及终端 | |
US8509522B2 (en) | Camera translation using rotation from device | |
Pintore et al. | Mobile mapping and visualization of indoor structures to simplify scene understanding and location awareness | |
To et al. | Automated 3D architecture reconstruction from photogrammetric structure-and-motion: A case study of the One Pilla pagoda, Hanoi, Vienam | |
CN114757822B (zh) | 一种基于双目的人体三维关键点检测方法及系统 | |
CN115880448A (zh) | 基于双目成像的三维测量方法、装置、设备及存储介质 | |
Ancona et al. | Extending a mobile device with low-cost 3d modeling and building-scale mapping capabilities, for application in architecture and archaeology | |
Střelák | Augmented reality tourist guide | |
Miles et al. | A community-built virtual heritage collection | |
Whitehead et al. | The projective vision toolkit | |
Arth et al. | Geospatial management and utilization of large-scale urban visual reconstructions | |
Gava et al. | A generalized structure from motion framework for central projection cameras | |
Hong et al. | A novel Gravity-FREAK feature extraction and Gravity-KLT tracking registration algorithm based on iPhone MEMS mobile sensor in mobile environment | |
Wenkai | Integration of Finite Element Analysis with Mobile Augmented Reality |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: American California Applicant after: Google limited liability company Address before: American California Applicant before: Google Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |