用于创建虚拟3D模型的方法和系统与流程

文档序号:17583402发布日期:2019-05-03 21:06阅读:324来源:国知局
用于创建虚拟3D模型的方法和系统与流程



背景技术:

根据一系列2d图像观察理解世界的3d结构,并且特别是根据2d图像序列产生3d重建,是计算机视觉领域中的重要任务。根据图像数据创建虚拟3d模型在许多领域中具有应用,所述领域诸如但不限于机器人技术、自动驾驶汽车和增强现实。增强现实涉及将虚拟对象投影到我们周围的物理(真实)世界。可以根据真实对象创建虚拟对象,使得它们可以投影到这些空间中。其次,对于机器人技术、自动驾驶汽车和增强现实等,能够知道设备(电话、无人机、汽车)在世界上的位置可能是重要的,而环境的3d模型可能很有帮助。

现有方法趋向于分为两类中的一类:几何方法和深度学习方法。

正如r.hartley和a.zisserman在剑桥大学出版社(cambridgeuniversitypress),2003年出版的“multipleviewgeometryincomputervision”一书中所讨论的那样,现有的几何方法基于多视图几何原理。假设在位置t1、t2、...tn∈se3处取得两个或更多图像i1、i2、…in并且这些图像之间的像素对应,可以对图像像素的3d位置进行三角测量。为了确定这些对应关系,可以提取像素周围的图像块(片)并沿着极线执行穷举搜索,找到不同图像中类似块的位置。如果对每个像素进行此操作,则可以产生2.5d深度图像,其包含关于每个像素的深度信息,例如,相应图像中每个像素到相机的距离。

要计算完整的3d模型,必须将几个2.5d深度图像并置在一起,或者替代地将它们融合到单个体积模型中。在后一种方法的情况下,将3d空间分割成体素网格,并且通过以下规则计算每个体素的内容:如果在某个点处在比对应像素深度更近的距离观察到体素,被认为是自由空间的一部分。否则,它可以被认为是被占用的。

然而,这种类型的系统受到错误的像素对应,这导致不正确的深度计算。而且,以上述方式将深度图像融合到单个体积模型中是耗时的,并且消耗计算机资源。

第二种已知方法是使用所谓的“深度学习”,例如如以下所讨论的:c.b.choy,d.xu,j.gwak,k.chen和s.savarese的文章“3d-r2n2:aunifiedapproachforsingleandmulti-view3dobjectreconstruction”arxivpreprintarxiv:1604.00449,2016以及d.j.rezende,s.eslami,s.mohamed,p.battaglia,m.jaderberg和n.heess的文章“unsupervisedlearningof3sstructurefromimages”arxivpreprintarxiv:1607.00662,2016。在这种方法中,深度生成的模型直接以输入图像为条件。该方法的基本原理是,首先,将各个2d输入图像压缩成总结图像的内容的1d特征向量。这些1d特征向量随后作为输入传递给长短期记忆(longshort-termmemory,lstm)网络,长短期记忆网络的输出用于生成模型。

这种方法适用于“成像”已知对象的缺失部分,但在建模新的未知的观察对象时往往会导致一般化问题。

因此,需要一种资源密集性更低、耗时更少并且能够提供未知的观察对象的更好模型的方法。本公开描述了这种方法。



技术实现要素:

在独立权利要求中阐述了一种方法和系统。在从属权利要求中阐述了可选特征。

根据一方面,提供了一种用于创建体素占用模型的方法。体素占用模型表示可以使用三维体素阵列描述的空间区域。空间区域包含对象的至少一部分。该方法包括接收第一图像数据,第一图像数据表示对象的至少一部分的第一视图并且包括第一图像方位数据,以及接收第二图像数据,第二图像数据表示对象的至少一部分的第二视图并且包括第二图像方位数据。该方法还包括确定第一描述符,第一描述符描述在第一图像数据中体素阵列的第一体素的投影的属性,以及确定第二描述符,第二描述符描述在第二图像数据中第一体素的投影的属性。该方法还包括基于第一描述符和第二描述符向第一体素分配占用值,占用值表示第一体素是否被对象的至少一部分占用。

在一些实施方式中,该方法还包括接收一组图像数据,该组图像数据中的每个相应成员表示对象的至少一部分的视图并且包括图像方位数据。该方法还可以包括针对该组图像数据的每个成员确定描述符,所得到的多个描述符中的每个描述符描述该组图像数据的每个对应成员中的体素阵列的第一体素的投影的属性。该方法还可以包括基于所确定的描述符向第一体素分配占用值。

在一些实施方式中,该方法还包括为体素阵列的每个体素确定相应的多个描述符,并基于所确定的描述符向每个体素分配占用值。

在一些实施方式中,第一投影的属性是第一图像数据中第一体素的投影的2d方位,并且第二投影的属性是第二图像数据中第一体素的投影的2d方位。

在一些实施方式中,第一图像数据和第二图像数据都是从相机接收的,该相机被布置成相对于对象的至少一部分移动。

在一些实施方式中,从第一相机接收第一图像数据,并且从第二相机接收第二图像数据,第一相机和第二相机相对于对象的至少一部分定位在相应的方位处。

在一些实施方式中,第一图像方位数据表示第一图像的姿态,并且第二图像方位数据表示第二图像的姿态。

在一些实施方式中,该方法还包括输出体素占用模型,该体素占用模型包括为已被分配占用值的每个体素所分配的占用值。

在一些实施方式中,该方法还包括根据体素占用模型生成对象的至少一部分的视觉表示。

在一些实施方式中,第一图像数据包括表示从第一视图获取的第一图像的第一编码图像数据,其中第一编码图像数据描述第一图像的多个像素中的每个像素的属性。在一些实施方式中,第二图像数据包括表示从第二视图获取的第二图像的第二编码图像数据,其中第二编码图像数据描述第二图像的多个像素中的每个像素的属性。

在一些实施方式中,属性包括亮度值、强度值、图案、纹理、颜色值或图像特征,诸如图像角或梯度。

在一些实施方式中,使用神经网络确定描述符。

在一些实施方式中,将描述符输入到神经网络中,并且基于神经网络的输出确定占用值。

根据一方面,提供了一种系统,系统包括处理器,该处理器被配置为执行如上所述和如本文所公开的方法。

根据一方面,提供了一种包括计算机可执行指令的计算机可读介质,在被执行时计算机可读介质执行如上所述和如本文所公开的方法。

附图说明

现在参考附图描述特定实施方式,在附图中:

图1描绘了3d建模过程的示意图;

图2描绘了3d建模装置的示意图;

图3描绘了3d建模过程的流程图;

图4描绘了3d建模过程的流程图;

图5a描绘了在观察对象的表面后面的体素的观察;

图5b描绘了在观察对象的表面前方的体素的观察。

具体实施方式

本发明旨在提供一种用于创建对象的虚拟3d模型的改进的方法和系统。虽然下面描述了本发明的各种实施方式,但是本发明不限于这些实施方式,并且这些实施方式的变化可以完全落入本发明的范围内,本发明的范围本身仅由所附权利要求限定。

根据本发明的实施方式,图1示出了3d建模过程的示意图。对象105位于空间区域中。在图1中,作为示例,对象105是大教堂的模型。可以使用体素阵列120来描述空间区域,其中体素阵列中的每个体素vj描述物理空间的小元素,“j”是对应于特定体素的索引,如本领域技术人员将理解的。出于建模过程的目的,如果对象105的一部分位于体素内,则称特定体素vj“被占用”。如果对象105的任何部分都不位于体素内,则特定体素vj可以被认为是自由空间的一部分,并因此未被占用。

总的来说,本文描述的过程涉及从对象105周围的多个方位t获取对象105的多个图像li。与每个图像li相关联的图像数据115i包括表示图像li的数据,并且还包括与以下相关联的数据ti:每个图像的姿态,即在位置ti处相机的方位和角度定向。图像数据经历“投影池化(联合,汇聚,pooling)”过程,利用神经网络合并来自各个图像的池化输出,以允许产生空间区域的虚拟3d模型/体素占用模型150。占用模型150描述了对象105的3d模型140。

相机101可围绕对象105移动,并因此可布置成从对象105周围的各个方位ti捕获图像。图1中示出两个不同的相机方位ta和tb。图1示出了从方位ta获取的对象105的图像ia。因此,可以产生第一图像数据115a。第一图像数据115a还包括关于图像姿态的信息,例如,相机在方位ta处的视点的方位和角度。如将被理解的,第一图像ia是对象105在第一方位ta处的相机101的平面中的投影。

类似地,从方位tb获得对象105的图像1b。因此,可以产生第二图像数据115b。第二图像数据115b包括关于在相机方位tb处的图像姿态的信息。如将被理解的,第二图像1b是对象105在第二方位tb处的相机101的平面中的投影。

从对象105周围的各个视点和方位ti获取对象105的多个这样的图像。在优选实施方式中,相机101围绕对象105以圆周运动移动,从而从对象105的所有侧(面)捕获“n”个图像。这产生在位置t1、t2...tn处获取的一系列连续图像i1,i2,...in。可以对图像li进行编码,例如,每个图像li可以被转换为空间上可索引的描述符di,如下面将更详细描述的。

可以使用多个图像,并且特别是与每个图像li相关联的图像数据115i,所述图像数据包括关于每个图像的姿态的信息,以确定体素阵列120的特定体素130是否被观察对象105占用。

体素位置可以标记为vj。为了确定位于3d位置qj处的体素vj的占用计算每个图像li中的子像素的方位:

其中ti是图像方位数据,即图像姿态数据。

更详细地,通过以下找到特定体素到第i图像li中的3d投影w=[wx,wy,wz]:

w=tioqj(2)

将空间区域的经变换的3d点投影到图像中,并通过投影π找到对应的子像素方位

ux=fx·wx/wz+cx(3)

uy=fy·wy/wz+cz(4)

对于固有相机校准参数fx、fy、cx、cy,其中fx和fy是焦点,并且cx和cy是主要点的坐标。

注意到这是相机校准的可能选择的一个示例。存在许多模型,例如用于鱼眼、广角和微距镜头,或用于不同的传感器类型的模型。选择fx、fy、cx、cy来描述相机校准的一种选择。这里其他模型可以替代。

然后可以考虑围绕该投影位置的局部图像块局部图像块是位置周围的图像的区域。局部图像块可以采用该位置周围区域的任何大小或形状。

如下所述,可以通过分析投影体素方位的位置处的图像流来确定体素占用。

图2描绘了适合于实现根据本发明实施方式的3d建模过程的3d建模装置的示意图。本系统可以直接根据与图像方位数据相关联的图像序列分类体素占用。可以使用神经网络架构将该想法在单个相干网络中实施。该网络能够对例如大小m×m×m体素的体积网格的占用进行分类。该过程可包括如下所述的四个部分。

总的来说,该过程具有以下输入:体素位置qj,图像方位数据ti,即图像姿态数据,以及相应的图像ii,并且具有虚拟3d模型/体素占用模型150的输出。

n个图像i1,…n形成一组图像。将主要考虑图像i1的处理,并且应当理解,每个图像li经历基本相似的过程。图像i1由处理设备201(1)编码。由处理设备201(1)执行的编码步骤的输出是编码图像数据。编码图像数据描述图像i1的每个像素的属性。例如,属性可以是亮度值、颜色值、强度值、图案、纹理或图像特征,诸如图像角或梯度,但是如本领域技术人员所理解的,可以在编码步骤中使用像素的任何局部属性。

每个输入图像li被转换为空间上可索引的编码图像数据描述符:

di=enc(ii)(5)

这样,di的特定部分对应于图像li的区域。该过程将输入图像转换为空间上可索引的描述符通过长度为k的描述符描述每个像素的局部邻域。如本领域技术人员所理解的,该步骤可以通过简单的多层卷积神经网络来实现,不需要池化以保持与图像i1相同的分辨率。为了支持检测不同分辨率下的光流所需的大的感受野,可以使用扩张卷积。感受野是影响特定描述符值的图像部分。扩张卷积是一种特殊形式的卷积。卷积是将感受野内的信息组合起来以有助于特定描述符的操作。

第二步是由处理设备202(1)执行的“投影池化”步骤。进入处理设备202(1)的输入是编码图像数据描述符d1,对应图像方位数据/图像姿态数据t1和体素方位qj。编码图像数据描述符d1和图像方位数据t1一起包括第一图像数据。类似地,编码图像数据d2和图像方位数据t2包括第二图像数据等。

在由处理设备202执行的投影池化阶段,为每个体素图像对确定空间描述符

通过首先使用等式1将体素vj投影到每个图像中,独立地为每个体素池化每个图像的编码图像数据描述符di。然后,在给定的子像素方位处对编码图像数据描述符di进行双线性插入。这可以并行完成,从而得到每个体素的池化描述符d∈rm×m×m×k。

以这种方式,可以确定第一描述符第一描述符描述了图像i1中的体素v1的投影的属性。这对应于体素v1在第一图像数据中的投影。在优选实施方式中,第一描述符表示第一图像中第一体素的投影方位。

还可以通过以类似方式相对于体素v1处理图像i2来确定第二描述符以这种方式,可以为该组图像数据的每个成员确定体素v1的多个描述符。所得到的多个描述符可以标记为该多个描述符描述了体素v1与每个图像li之间的关系。简单来说,可以说多个描述符描述体素v1可见的所有图像li中的各个区域。可以针对体素阵列120的每个体素vj确定相应的多个描述符。

下一阶段是由处理设备203执行的“体积融合”阶段。该阶段涉及将连续的体素测量结果通过递归神经网络聚集到隐藏的表示h:

h=rnn(d1,d2,..dn)(7)

使用递归神经网络2013合并来自各个图像的池化输出。可以使用诸如3d长短期记忆(longshort-termmemory,lstm)网络之类的递归神经网络来执行该任务,其中隐藏状态的大小hi∈rm×m×m×l。

最后,处理设备204对最终的体积占用模型进行解码,其可以表示如下:

o=dec(h)(8)

在这个阶段,递归网络202的输出被馈送到解码器203,实现为简单的多层3d卷积网络,将最终隐藏状态hn减少到描述每个体素的占用概率的网络输出o∈rm×m×m中。在此阶段,可以使用诸如条件随机场作为递归神经网络(conditionalrandomfields-as-recurrentneuralnetworks,crf-as-rnn)之类的附加机制来获得更高的质量结果。

图3示出了本文描述的方法的实施方式的流程图。

在302处,从对象周围的各种不同方位t获取对象的一组图像i。

在304处,对图像i进行编码以产生编码图像描述符d。描述符d和t一起包括图像数据。

在306处,将编码图像数据d,图像方位t和体素位置q作为输入提供到“投影池化”神经网络中。可以说编码阶段是输出潜在图像表示。

在308处,“投影池化”神经网络确定每个体素图像对的空间描述符投射池化阶段可以说是池化潜在图像表示。

在310处,如上所述,使用递归神经网络来聚集空间描述符此阶段可以描述为聚集池化的表示。

在312处,将聚集的描述符解码为体积3d模型,例如,体素占用模型。一些实施方式可以包括使用体素占用模型生成和/或输出对象的视觉表示的另一步骤。

图4示出了本文描述的方法的实施方式的流程图。流程图中描绘的方法可以由在诸如处理器或计算机网络的处理装置上实现的处理器、计算机或神经网络来执行。该方法可用于创建体素占用模型,体素占用模型表示可使用三维体素阵列描述的空间区域,其中空间区域包含对象的至少一部分。

在402处,接收第一图像数据。第一图像数据(例如d1+t1)表示对象的至少一部分的第一视图,并且包括第一图像方位数据。

在404,接收第二图像数据。第二图像数据(例如d2+t2)表示对象的至少一部分的第二视图,并且包括第二图像方位数据。

在406,确定第一描述符。第一描述符描述第一图像数据中的体素阵列的第一体素的投影的属性。

在408处,确定第二描述符。第二描述符描述第二图像数据中的第一体素的投影的属性。

在410处,基于第一描述符和第二描述符向第一体素分配占用值。占用值表示第一体素是否被对象的至少一部分占用。

应当理解,在本文描述的方法的实施方式中,可以针对表示对象的每个可用图像的图像数据重复该过程,以便建立第一体素是否被占用的更精确的估计。还应当理解,可以针对每个体素重复该过程。这个和/或这些过程可以通过一个或多个神经网络并行执行。关于描述空间区域的多个体素中的任何特定体素的占用的预测的集合可以被描述为体素占用模型。

在可选步骤412中,输出对象的视觉表示,视觉表示基于占用值或体素占用模型。代替生成视觉表示,可以将占用模型传递给机器人,以允许所述机器人以精确的方式导航或与对象交互。

图5a和5b描绘了在投影池化阶段202期间神经网络可以使用的机制。

图5a和5b示出了对象105的一部分。对象105的一部分具有表面505,其由相机101从相应的方位tc、td和te成像。对象105在其表面505上具有三个点x1、x2和x3。虚线箭头表示相机的移动。在图5a中,被考虑的体素v1在对象105的表面505“后面”,因此可以说体素v1被对象105占用。在图5b中,被考虑的体素v2位于对象105的表面505的前面,因此体素v2可以说是自由空间的一部分,即不被对象105占用。

在此阶段,观察局部光流的方向。光流可以描述为图像1c、1d和1e之间的对象105的表面505的明显运动。该明显运动是由相机101和对象105的表面505之间的相对移动引起的。局部图像块uc、ud和ue中的局部光流与体素v1和观察表面505的相对位置直接相关。实线箭头表示光流方向。应当理解,如果体素在表面后面,如图5a所示,光流的方向与相机运动相反。如果体素位于表面前方,如图5b所示,则光流的方向与相机运动一致。流的速度取决于从体素到表面和相机的相对距离,并且当体素远离表面时更高,而当体素接近时更低。

光流的观察和分析允许确定体素占用。如果在一系列图像中检测到正光流,即确定光流方向与相机运动的方向大致相同,则证明给定的体素是自由的。相反,如果观察到负光流,则可以认为体素被占用。

卷积神经网络可用于分析图像块uc、ud和ue的相似性。卷积和递归神经网络的组合可用于检测和分类图像块,如下面更详细描述的。

本文描述的方法(和系统)是有利的,因为它比先前的方法和系统资源密集性更低,耗时更少,并且可以提供更好的未知观察对象的模型。此外,本文描述的方法和系统可能实现更高质量的模型并且还可以更好地概括已知系统。也就是说,在给定一定量的训练数据的情况下,它可以创建比其他方法更多种类的对象的模型。如本文所述的方法和系统可以在诸如移动电话之类的消费者级设备上实时运行。如本文所述的方法和系统也不太可能遭受图像之间的错误的像素对应,错误的像素对应是已知方法的缺点。另外,本文描述的方法和系统不像其他一些方法那样需要深度传感器。

由于所有单独的步骤都是可区分的,因此可以使用标准的反向传播梯度下降来训练整个网络。如果提供微分渲染器,将来也可以以非监督的方式完成。在这种情况下,不需要地面真实体素占用的知识,并且与训练2d图像相比训练是由射线投射模型的精度误差驱动的。

应当理解,特定实施方式的以上描述仅是示例性的,并不旨在限制本公开的范围。设想现在描述的所描述的实施方式的许多修改并且旨在落入本公开的范围内。

应当理解,可以使用多种不同类型的相机。虽然已经描述了具有单个移动相机的实施方式,但是同样可以使用定位在对象周围的不同位置处的多个相机以便获得图像li。类似地,在固定相机阵列或固定相机环或立体相机设置的情况下,相机的姿态可以是已知的并且总是恒定的,如本领域技术人员将理解的。类似地,所使用的相机投影模型是针孔相机的模型,但是也可以结合诸如或鱼眼之类的全方向相机模型。

计算编码图像数据描述符di的编码神经网络201的结构可以是任意的,诸如但不限于卷积网络或深度残留网络。

递归神经网络202的结构可以是任意的,诸如但不限于lstm、gru或它们的3d变体。

图像的数量可以是恒定的-在这种情况下,更准确地将递归神经网络代替称为神经网络,在这种情况下对于每个图像的编码器网络201(等式(5))可以不同。

解码网络203等式(8)的结构可以是任意的,诸如但不限于深度生成网络或去卷积网络。

如果使用微分体积渲染器,则可以对训练过程进行半监督。

除了池化信息之外,递归网络202(rnn,等式(7))可以直接连接到预处理的输入图像以合并全局图像内容,而不仅仅是本地池化信息。

池化的描述符di也可以以相反的顺序计算:首先计算位置然后从图像li中提取给定方位处的显式图像块然后将它们独立地通过编码网络201enc(等式(5))。在这种情况下,不会发生显式池化,但结果信息的内容类似,因为它描述了关于方位处的图像的信息。

本文描述的方法和系统可以输出每个体素被占用的概率。然而,系统可以输出任意级别的占用或简单地输入或输出(例如1/0)的二进制级别而不是概率。系统的输出可以包括模型的颜色信息。这类似地实现-代替或除了体素占用之外,网络产生单独的体素颜色。类似地训练这样的网络在预测中的反向传播误差。

在递归神经网络202的每个步骤之后使用解码器模块203并且使用其输出作为rnn202的下一步骤的附加输入,可以来改进对递归神经网络202的训练。

本文描述的方法可以由包括处理器/计算机的系统执行,并且还可以体现在计算机可读介质上,所述计算机可读介质可以是非暂时性计算机可读介质。该计算机可读介质携带计算机可读指令,所述计算机可读指令布置用于在处理器上执行,以便使处理器执行本文描述的任何或所有方法。

本文使用的术语“计算机可读介质”是指存储用于使处理器以特定方式操作的数据和/或指令的任何介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质可包括例如光盘或磁盘。易失性介质可以包括动态存储器。示例性形式的存储介质包括软盘、柔性盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质、cd-rom、任何其他光数据存储介质、任何具有一个或多个孔图案的物理介质、ram、prom、eprom、lash-eprom、nvram以及任何其他存储器芯片或盒式磁带。

结合上面公开的方法和系统,本文公开了以下项目:

一种用于使用神经网络进行实时3d重建的计算机实现的方法,该方法包括:

接收相机图像流和相应的相机姿态;

将输入图像编码成潜在图像表示;

投影池化潜在图像表示;

聚集池化表示;以及

将聚集信息解码为得到的体积3d模型。

当仅将一个图像输入到处理设备201时,也可以应用本文描述的方法和系统,尽管与使用表示对象的多个视图的数据的系统相比,得到的体素占用模型可能相对粗糙。为了实现这一点,一种用于创建体素占用模型的方法,体素占用模型表示可以使用三维体素阵列描述的空间区域,其中空间区域包含对象的至少一部分,所述方法可以包括:

接收第一图像数据,第一图像数据表示对象的至少一部分的第一视图并且包括第一图像方位数据;

确定第一描述符,第一描述符描述第一图像数据中的体素阵列的第一体素的投影的属性。

基于第一描述符向第一体素分配占用值,占用值表示第一体素是否被对象的至少一部分占用。

还提供了一种包括处理器的系统,所述处理器能够实现计算机可读指令,当由处理器执行时,所述计算机可读指令执行用于创建体素占用模型的方法,所述体素占用模型表示可以使用三维体素阵列来描述的空间区域,其中空间区域包含对象的至少一部分,所述方法包括:

接收第一图像数据,第一图像数据表示对象的至少一部分的第一视图并且包括第一图像方位数据;

接收第二图像数据,第二图像数据表示对象的至少一部分的第二视图并且包括第二图像方位数据;

确定第一描述符,第一描述符描述第一图像数据中体素阵列的第一体素的投影的属性;

确定第二描述符,第二描述符描述第二图像数据中第一体素的投影的属性。

基于第一描述符和第二描述符向第一体素分配占用值,占用值表示第一体素是否被对象的至少一部分占用。

还提供了一种包括计算机可执行指令的非暂时性计算机可读介质,所述计算机可执行指令在被执行时执行如下方法:

接收第一图像数据,第一图像数据表示对象的至少一部分的第一视图并且包括第一图像方位数据;

接收第二图像数据,第二图像数据表示对象的至少一部分的第二视图并且包括第二图像方位数据。

确定第一描述符,第一描述符描述第一图像数据中体素阵列的第一体素的投影的属性。

确定第二描述符,第二描述符描述第二图像数据中第一体素的投影的属性。

基于第一描述符和第二描述符向第一体素分配占用值,占用值表示第一体素是否被对象的至少一部分占用。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1