CN105453139B - 用于3d表面重建的稀疏gpu体素化 - Google Patents

用于3d表面重建的稀疏gpu体素化 Download PDF

Info

Publication number
CN105453139B
CN105453139B CN201480040344.3A CN201480040344A CN105453139B CN 105453139 B CN105453139 B CN 105453139B CN 201480040344 A CN201480040344 A CN 201480040344A CN 105453139 B CN105453139 B CN 105453139B
Authority
CN
China
Prior art keywords
voxel
list
individual
predetermined condition
output
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.)
Expired - Fee Related
Application number
CN201480040344.3A
Other languages
English (en)
Other versions
CN105453139A (zh
Inventor
C·T·卢普
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
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 Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of CN105453139A publication Critical patent/CN105453139A/zh
Application granted granted Critical
Publication of CN105453139B publication Critical patent/CN105453139B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/52Parallel processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

在本文中所描述的过程和系统使计算设备能够利用并行图形硬件来执行基于体素的三维(3D)重建建模。计算设备可以生成初始的低分辨率体素列表。体素列表中的体素可以表示为与体素网格内的单元(cell)的3D空间位置相对应的索引三元组(例如,{ix,iy,iz})。基于与对象相关联的输入图像的信息,计算设备可以移除与对象表面不相交的某些体素。剩余的体素可以并行地被一次或多次细分成为一定数量的子体素,以生成新的体素列表。可以再一次测试新生成的体素列表以确定与对象表面不相交的体素。可以部分地重复该过程。输出体素可以被渲染为投影的图像。

Description

用于3D表面重建的稀疏GPU体素化
背景技术
体素(voxel)是用于表示三维(3D)表面几何的体积元素。体素在概念上和像素相似,但体素用于表示3D空间中的对象,而像素用于表示二维(2D)图像中的对象。体素化是将体素表示的对象进行合成的过程,并且是3D图形学中常用的技术。体素通常与指示体素是“开”(例如,可见)还是“关”(例如,不可见)的数据一起被存储。对于“开”的体素的指定指示固体材料的存在,而对于“关”的体素的指定指示空白空间。体素也可以包括诸如颜色、纹理、表面法线、或其它属性数据的属性。
类似于图像,体素的网格(“体素网格”)特征在于其分辨率(例如,在高、宽、和深的维度中的体素的数量)。网格中的体素的总数量是网格的高、宽、和深的乘积。存储体素网格所需的计算存储器的量与网格中的体素的总数成正比。由此,随着体素网格的分辨率在各个维度上线性增长,对其进行存储所需的存储器的量立方地增长。这使得使用高分辨率的体素网格变得不现实。
一种方法是形成层级树结构,该层级树结构开始于对应于体素网格的整个体积的根节点的。通过消除某些子树的体素来实现空间节省。尽管该方法可以降低表示体素网格所需的存储器的量,但是所述方法要求大量的指针解引用用于随机存取。这极大地削弱了所述方法的价值。
发明内容
在本文中所描述的是用于利用并行图形硬件来重建实时3D模型的技术和系统。该公开的实施例涉及体素表示和对体素信息的并行处理。
该公开的各种实施例包括,基于输入图像,通过交换系统生成包括多个体素的体素列表。对于体素列表中的个体体素而言,计算设备可以至少部分地基于来自输入图像的信息来确定个体体素的可移除性。计算系统可以基于个体体素的可移除性,在与图形处理单元(GPU)线程标识符(ID)相对应的位置中生成序列列表,并且生成与序列列表相对应的输出列表。在一些实施例中,计算系统可以执行一个或多个迭代以细分体素列表中的体素,从而生成新的体素列表。在这些实例中,新的体素列表可以被再一次处理以将体素从体素列表中移除,并且更新与序列列表相对应的输出体素。当迭代完成时,可以压缩输出体素,并且可以将输出体素渲染为重建的图像。
提供了该发明内容从而以简化的形式介绍在以下的具体实施方式中进一步描述的挑选出的概念。该发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
附图说明
参考附图描述了具体实施方式。在图中,附图标记最左边的数字表示在其中第一次出现该附图标记的图。不同的图中的相同的附图标记表示相似或相同的项。
图1是包括用于基于输入图像而重建3D模型的计算架构的说明性方案的示图。
图2是用于基于输入图像而重建3D模型的说明性过程的流程图。
图3是使得能够利用并行图形硬件对3D模型进行重建的说明性计算架构的示意图。
图4是用于基于输入图像而生成输出体素的说明性过程的流程图。
图5是用于基于输入图像而生成输出体素的说明性过程的另一流程图。
图6是示出了与针对体素处理的确定相关联的各种说明性考虑的示例方框图。
具体实施方式
概述
在本公开中描述的过程和系统使计算设备能够利用并行图形硬件来执行基于体素的三维(3D)重建建模。计算设备可以从与输入图像相关联的一系列2D投影中重建3D模型。为了重建3D模型,计算设备可以利用初始的低分辨率生成体素,从而创建包括生成的体素的体素列表。体素列表中的体素可以被表示为索引三元组,其与体素网格内的体素角(corner)的3D坐标(例如,{ix,iy,iz})相对应。索引三元组可以被写入至与由图形处理单元(GPU)分配的线程标识符(ID)相对应的体素列表的位置,并且作为线程ID的函数被计算。之后,计算设备可以移除某些体素,例如,基于对输入图像的分析与对象表面不相交的体素。剩余的体素可以一次或多次并行地被细分成为一定数量的子体素以生成新的体素列表。新生成的体素列表可以再次被测试以确定与对象表面不相交的体素。可以重复该过程直到满足预先确定的条件为止。输出体素可以被渲染为投影的图像。
说明性环境
图1是说明性方案100的示图,其包括用于利用并行图形硬件来重建3D模型的计算架构。方案100包括计算系统102。计算系统102可以包括服务器或分布式配置(例如,云计算服务器、服务器机群(server farm)等)或非分布式配置的一批服务器。
根据各种实施例,在基本配置中,计算系统102可以包括图像模块104、建模应用程序106、以及呈现模块108,依次对每个进行讨论。
图像模块104可以接收与对象112相关联的图像数据110。在一些实施例中,图像数据110可以包括一组实时图像流。在这些实例中,对于任何给定的时间,图像数据110可以包括捕获对象112的不同的观察点和视角的图像114(1)、…、114(N)(例如,红绿蓝(RGB)图像等)。在一些实例中,可以经由多个成像传感器从关于对象的各种角度捕获图像114。例如,图像114(1)是由相机在对象112前方捕获的,并且图像114(N)是由相机在对象112侧面捕获的。在一些实施例中,图像数据110可以包括经过滤和/或经校准的剪影图像。在一些实施例中,图像数据110可以由一个或多个深度传感器捕获。在这些实例中,图像数据110可以包括深度传感器图像数据。
建模应用程序106可以利用初始的低分辨率来生成体素以创建作为针对对图像数据110进行建模的基础的体素列表。在一些实施例中,建模应用程序106可以将体素列表中的体素表示为与3D网格内的体素角的坐标相对应的无符号整型三元组{ix,iy,iz}的阵列。建模应用程序106可以为每个体素分配单个线程,并且将体素索引写入到与GPU的线程ID相对应的位置。体素的索引可以作为线程ID的函数来进行计算。建模应用程序106可以接着移除某些体素,例如,与对象112的表面不相交的体素。
在一些实施例中,建模应用程序106可以细分剩余体素(例如,没有被移除的体素)中的体素,以生成新的体素列表。建模应用程序106可以接着测试新的体素列表,以确定新的体素列表中的体素是否与对象112的表面相交,直到满足预先确定的条件从而终止额外的迭代的使用为止。例如,可以执行多个迭代直到投影的体素的分辨率达到在传统显示器中使用的标准像素的通常的分辨率为止。建模应用程序106可以生成用于图像渲染的输出体素。
呈现模块108可以基于输出体素来渲染重建的图像118。重建的图像118可以包括被建模的对象120(1)、…、120(N)。在一些实施例中,呈现模块108可以将输出体素绘制成渲染目标,并且将目标着色为输出体素到一组经校准的RGB图像的投影的加权的组合。在一些实施例中,呈现模块108可以对输出体素116进行编码以生成体素流,并且发送体素流以引起实时的自由观察点观察。
说明性过程
图2是用于基于输入图像来重建3D模型的说明性过程200的流程图。将过程200示出为逻辑流程图中的一批方框,这些方框表示可以在硬件、软件、或其组合中实现的一系列的操作。在软件的上下文中,方框表示计算机可执行指令,当所述可执行指令由一个或多个处理器执行时,使得一个或多个处理器执行所记载的操作。通常而言,计算机可执行指令包括执行特定的功能或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在被解释为限制,并且可以按照任何顺序组合任何数量的描述的方框和/或并行以实现过程。除了过程200之外,还应当相应地解释该公开通篇描述的其它过程(例如,过程400和500)。参考方案100描述了过程200。然而,可以利用其它方案、环境、和/或计算架构来实现过程200。
在202处,图像模块104可以接收与对象112相关联的图像数据110。在一些实施例中,图像数据110可以包括由成像设备(例如,相机等)捕获的一组实时图像流(例如,RGB图像、剪影图像、红外图像等)。在一些实施例中,图像数据110可以包括深度传感器图像数据。图像数据110可以与成像设备的已知的位置相关联,以提供关于从所述位置记录的对象的视角的信息。图像数据110也可以包括配置信息和/或描述与图像的捕获有关的信息的其它元数据。
在204处,建模应用程序106可以生成一系列的体素。在一些实施例中,建模应用程序106可以生成初始体素。在这些实例中,初始体素可以被表示为体素索引三元组的列表,并且额外的属性(例如,颜色、表面信息等)数据可以被存储为在相同的索引范围上的列表。
在206处,建模应用程序106可以基于来自输入图像(例如,图像数据110)和经校准的变换从列表中移除体素,其中该经校准的变换是基于与图像相关联的位置信息与输入图像相关联的。建模应用程序106可以基于剩余的体素,生成包括输出体素116的新的体素列表。
在208处,呈现模块108可以基于输出体素116渲染图像。在一些实施例中,呈现模块108可以对输出体素116进行编码以生成体素流并且发送体素流,以引起在显示器上的实时的自由观察点观察。
说明性架构
图3是使得能够利用并行图形硬件对3D模型进行重建的说明性计算架构300的示意图。计算架构300示出了计算系统102的额外的细节,其可以包括额外的模块、内核、数据、和/或硬件。
计算架构300可以包括处理器302和存储器304。存储器304可以存储各种模块、应用、程序、或其它数据。存储器304可以包括当被执行时使处理器302执行在本文中所描述的针对计算系统102的操作的指令。处理器302可以包括一个或多个图形处理单元(GPU)和一个或多个中央处理单元(CPU)。
计算系统102可以具有额外的特征和/或功能。例如,计算系统102也可以包括额外的数据存储设备(可移动的或不可移动的)。计算机可读介质至少可以包括两种类型的计算机可读介质,即计算机存储介质和通信介质。计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块、程序数据、或其它数据的信息的任何方法或技术实现的易失性的和非易失性的、可移动的和不可移动的介质。系统存储器、可移动存储设备和不可移动存储设备都是计算机存储介质的示例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪速存储器或其它存储器技术、CD-ROM、数字化通用光盘(DVD)、或其它光学存储设备、盒式磁带、磁带、磁盘存储设备、或其它磁存储设备、或者可以用于存储期望的信息并且可以由计算系统102来访问的任何其它介质。任何这样的计算机存储介质可以是计算系统102的一部分。此外,计算机可读介质可以包括当由处理器执行时,执行在本文中所描述的各种功能和/或操作的计算机可执行指令。
与此相反,通信介质可以实施计算机可读指令、数据结构、程序模块、或已调制的数据信号中的其它数据,例如,载波、或其它机制。如在本文中所定义的,计算机存储介质不包括通信介质。
存储器304可以存储操作系统306以及图像模块104、建模应用程序106、和呈现模块108。
建模应用程序106可以包括各种组件(例如,模块和内核),例如,生成内核308、决策内核310、扫描内核312、确定模块314、细分内核316、以及压缩内核318。
生成内核308可以生成包括多个体素的体素列表。在一些实施例中,多个体素(例如,V)可以被表示为无符号整型三元组{ix,iy,iz}的阵列,其与维度是2k×2k×2k的3D网格内的体素角的坐标相对应,其中k是体素层级(Vk)内的等级。在一些实例中,体素层级内的每个体素都可以由坐标和体素的等级来定义。
在一些实施例中,可以不分配针对网格的23k个体素的空间。在这些实例中,体素的存在可以由体素层级Vk内的体素的索引的出现来确定。在一些实例中,所存储的体素的数量(例如,|Vk|)可以与对象(例如,对象112)的表面面积成正比。例如,程序数据320可以存储体素,并且存储的所存储的体素的数量可以不同于用于以传统的体素网格来表示对象的体素的数量。在一些实施例中,层级的等级(例如,Vk的深度)的最大数可以由用于每个无符号整型坐标的比特数量确定。
尽管体素的整型坐标在内部存储,但是建模应用程序106可以经由利用方程(1)的变换将体素的整型坐标转换成归一化的体素坐标(NVC)。
nx=σkix-1,ny=σkiy-1,nz=σkiz-1 方程(1)
这里,σk=21-k是与等级k相关联的缩放因数,并且NVC体素网格覆盖(spans)立方[-1,1]3。在一些实施例中,NVC立方可以用作世界坐标系。在这些实例中,计算系统102可以维持多个传感器并且观察关于这些坐标的变换。NVC立方可以被虚拟地置于目标主体周围,并且接着可见的表面可以在封闭的空间内被体素化。
在一些实施例中,生成内核308可以生成初始的低分辨率的体素的列表。例如,生成内核308可以从等级k=4开始,并且创建包括4096个体素的163的网格。又例如,生成内核308可以从具有单个体素的等级k=0开始。在该实例中,在所有可用的GPU的核心被完全利用之前,要求一定的迭代(例如,重复)。
在一些实施例中,每个GPU线程可以将唯一的体素索引写入至与体素的线程ID相对应的位置。这些索引可以作为线程ID的函数被计算,如说明性算法(1)所示出的。
算法(1)
在一些实施例中,决策内核310可以生成与体素列表相对应的体素剔除(例如,移除)决策的序列列表。例如,决策内核310可以基于图像数据和与NVC立方相关联的坐标来确定体素列表中的一些体素的可移除性。决策内核也可以将体素分成两组:剔除的(例如,可移除的)和保留的(例如,不可移除的)。在一些实施例中,当针对序列列表使用时,用于执行的GPU的个体线程可以映射至个体体素。然而,可以利用其它方式(例如,哈希表)实现个体线程和个体体素之间的映射。
在一些实例中,决策内核310可以决定是否应该将给定的体素从体素列表中移除。决策内核310可以具有对图像数据110以及将NVC体素投影至图像像素的相关联的坐标变换的访问。在一些实例中,决策内核310可以将零(剔除)或一(保留)写入至列表中与体素的线程标识符(ID)相对应的位置中,其在下文的说明性实施例中进行更加细节地讨论。
在由决策核心310实现了可移除性决策之后所得到的体素列表可以被传递至扫描内核312。扫描内核312可以将输入列表一对一地并行映射至输出列表。在位置i处的输出列表的值可以被定义为输入列表中的所有小于i的元素的总和(例如,排他扫描)。在一些实例中,对于每个保留的体素,扫描输出列表提供了保留的体素的序列列表内的体素的位置。因此,可以将可移除的体素从体素列表中独立地并且并行地消除。
确定模块314可以确定对图像数据110建模的迭代的次数。在一些实施例中,确定模块314可以确定是否满足预先确定的条件。例如,预先确定的条件可以与图像数据110(例如,分辨率和/或类型)、体素层级(例如,多个等级)、重建的图像118(例如,期望的分辨率)、3D网格(例如,大小)等相关联。
在一些实施例中,响应于确定迭代的次数小于预先确定的值(或者满足或不满足另一条件),细分内核316可以将体素细分成多个子体素以创建新的体素列表。可以由决策内核相应地来处理新的体素列表。例如,细分内核316可以将每个体素细分成八个子体素以创建分辨率在三个维度上都翻倍的体素列表。可以通过将体素索引加倍并且在所有八个组合中加入零或一来标识(identify)新的子体素的索引。可以在被标识为扫描输出列表在与线程ID相对应的位置的值的八倍的位置处,将这八个新的子体素索引写入至新的体素列表中,如说明性算法(2)所示出。
算法(2)
在一些实施例中,响应于确定迭代的次数不小于预先确定的值(或者满足或不满足另一条件),压缩内核318可以将可移除(例如,剔除)的体素从体素列表中移除。体素的索引可以被写入至新的列表中与扫描输出列表中的与线程ID相对应的位置处的值相对应的位置处,如说明性算法(3)所示出。
算法(3)
呈现模块108可以包括渲染模块332和编码器324。在一个或多个可能的迭代之后,压缩内核318的输出可以生成与期望的表面相交的最终的体素列表。渲染模块322可以基于图像数据110渲染重建的图像118。在一些实施例中,最终的体素列表的投影大体上可以是像素的大小。渲染模块322可以利用图形管线将这些体素渲染成与轴对齐的、屏幕空间边界矩形相对应的贴图(splat)。在一些实施例中,编码器324可以对输出体素116进行编码以生成体素流并且发送体素流,从而引起在显示器上的实时的自由观察点观察。
说明性过程
图4和图5包括参考方案100和计算架构300描述的过程。然而,可以利用其它方案、环境、和/或计算架构来实现这些过程。过程400和500中的每个都被示出为逻辑流程图中的一批方框,这些方框表示可以在硬件、软件、或其组合中来实现的一系列操作。在软件的上下文中,方框表示当由一个或多个处理器执行时,使得一个或多个处理器执行所记载的操作的计算机可执行指令。通常而言,计算机可执行指令包括执行特定的功能或实现特定的抽象数据类型的例程、程序、对象、组件、数据结构等。所述操作被描述的顺序不旨在被解释为限制,并且可以将任何数量的描述的方框按照任何顺序组合和/或并行以实现过程。
图4是用于基于输入图像来生成输出体素的说明性过程400的流程图。在402处,建模应用程序106可以生成包括多个体素的体素列表。在一些实施例中,体素列表可以最初包括预先确定的数量的体素。在一些实例中,初始的体素列表可以处于低分辨率。例如,建模应用程序106可以开始于包括4096个体素的16×16×16的体素网格。
在404处,建模应用程序可以将体素分配至GPU的可用的线程以执行并行的处理。在一些实例中,可以基于实时的硬件信息(例如,多个GPU的核心和与核心相关联的当前的状态)来确定体素列表中的体素的数量。例如,可以确定体素的数量使得在预先确定的时间段内可以完全使用GPU的所有可用的核心。在一些实施例中,建模应用程序106可以为每个体素分配单个线程,并且将体素索引写入至与线程ID相对应的位置。可以将索引作为线程ID的函数来计算。
在406处,建模应用程序106可以基于图像数据110而从体素列表中移除体素。建模应用程序106可以确定体素是否应该从表示中被移除。建模应用程序106具有对多种图像数据和相关联的变换的访问。这些变换将体素映射至图像像素。
在408处,建模应用程序106可以响应于移除而更新体素列表。更新的体素列表可以被渲染为重建的图像118。在一些实施例中,建模应用程序106也可以响应于某个条件而对多个体素中的个体体素进行划分,这在图5中进行了详细讨论。在这些实例中,可以再一次确定更新的列表中的个体体素的可移除性。
图5是用于基于输入图像来生成输出体素的说明性过程500的另一流程图。502处,生成核心308可以生成包括预先确定的数量的体素的体素列表。
在504处,决策内核可以基于图像数据110来确定体素列表中的个体体素的可移除性。可以基于可用的图像数据的性质而以各种方式来实现决策内核310。数据可以包括颜色、深度、剪影图像、和/或其它因素。
在506处,决策内核310可以基于个体体素的可移除性而生成序列列表。在一些实施例中,决策内核310可以将零(剔除)或一(不剔除)写入至序列列表的与线程ID相对应的位置中。
在508处,决策内核310也可以生成与序列列表相对应的输出列表。由决策内核310生成的序列列表(例如,体素可移除性决策的列表)可以接着被发送至扫描内核312中。扫描内核312可以是前缀和(prefix sum)扫描内核。在一些实施例中,扫描内核312可以被实现为并行编程功能(其被实现为库调用)。扫描内核可以生成大小与输入列表相同的输出列表。输出列表在位置i处的值可以被定义为输入列表中小于i的所有元素的总和。在以下的操作中使用所得到的输出列表。
在510处,确定模块314可以确定是否对体素进行细分,并且因此确定是否执行过程500的部分的迭代。例如,确定模块314可以确定所执行的迭代的次数是否达到预先确定的值(例如,在达到最大迭代之后没有进一步的细分),并且因此防止进一步的迭代。在一些实施例中,确定模块314可以确定是否满足预先确定的条件(例如,在满足条件后没有细分、细分直到满足条件为止等),这在图6中进行细地讨论。当确定模块314确定对体素进行细分时(即,决策操作510的“是”分支),则过程500可以前进至操作512。
在512处,细分内核316可以将体素列表中的体素细分成预先确定的数量的体素。例如,细分内核316可以将每个体素细分成八个子体素,从而创建了分辨率在所有三个维度上都加倍的新的网格。可以通过将体素索引加倍并且在所有八个组合中加入零或一来标识(identify)新的子体素的索引。可以在被标识为扫描输出列表在与线程ID相对应的位置的值的八倍的位置处,将这八个新的子体素索引写入至新的体素列表中。接着操作512,过程可以返回操作504以允许另一可移除性确定和扫描过程。
当确定模块314确定不对体素进行细分或对体素进行进一步的细分时(即,操作512的“否”分支),过程500可以前进至操作514。
在514处,压缩内核318可以机会主义地从体素列表中移除(例如,提出)体素。例如,如从输入图像的分析中确定的,当一个或多个体素与对象的表面在特定的视图中不相交时,该体素可以被移除。
在516处,压缩内核318可以将体素的索引写入至新的列表中在与扫描的输出列表中与线程ID相对应的位置中的值相对应的位置处。
图6是示出了与在图5中的操作510处的确定(其确定是否细分或进一步细分体素)相关联的各种说明性考虑的示例方框图。确定模块314可以基于考虑602中的一个或多个来确定满足或者不满足预先确定的条件。可以将这些考虑602分成多个类别。在一些实施例中,可以将考虑602分成硬件考虑604、视觉考虑606、以及环境考虑608。确定模块314可以基于来自一个或多个类别中的考虑602中的一个或多个来确定满足条件还是不满足条件。
硬件考虑604可以是与计算系统102相关联的硬件的状态。例如,硬件考虑604可以包括当前的存储器用量610、GPU处理器能力612、以及其它硬件考虑(例如,容量、规格等)。视觉考虑606可以与输入图像114(例如,分辨率和/或类型)、重建的图像118(例如,期望的分辨率)、3D网格614(例如,体素层级的等级)、以及其它可能的视觉考虑相关联。环境考虑608可以与处理时间616相关联以完成过程500(包括任何迭代)、用户交互618的结果(例如,用户输入、图像的用户操纵、对象的运动等)、以及其它可能的环境考虑。例如,更少的过程500的迭代可以降低渲染输出体素116所要求的时间。用户交互618可以与是否接收到用户输入相关联。例如,计算系统102可以检测连续的用户输入,计算系统102可以执行更少的迭代以降低渲染输出体素116的时间。
说明性实施例
以下是如上文所公开的稀疏体素化的实现的非限定性示例。尽管在下文中提供了一个示例,但是可以利用与上文中所提供的框架一致的其它具体技术、方程、以及或算法,来执行稀疏体素化。
计算系统102可以将与由一批n个传感器(例如,相机)捕获的对象的平滑的可视外壳相对应的对象表面体素化。该表面可以形成为n个经滤波的剪影图像的乘积。假设Ii表示从相机i捕获到的经滤波的剪影图像。此外,假设Ci是从NVC空间到与相机i相关联的图像空间的投影变换。因此,可以利用方程(2)来形成剪影图像的乘积。
S(p)=ΠiIi(Ci(p)) 方程(2)
这里,P是NVC空间中的点。体素化的表面是此外,梯度垂直于S(p)。如果剪影图像Ii是平滑的,那么上提供平滑垂直场。
剪影图像获得和滤波
色度键控可以用于分割前景和背景像素。可以向前景像素分配值零,而可以向背景像素分配值一。在一些实施例中,每帧可以将原始的拜耳(Bayer)模式数据上传至GPU,并且可以将这些数据存储在2D纹理阵列中。由于拜耳模式数据每像素仅8比特,因此降低了重要的相机总线和CPU/GPU数据带宽。可以调用单个计算内核以同时从图像数据中移除径向镜头变形、去马赛克、和色度键从而产生经校准的剪影图像。
接着,可以利用具有单位积分的可分离的高斯内核对这些图像进行滤波。通过增加该内核的宽度可以增加剪影图像中模糊的量,从而导致更平滑的表面S(p)。尽管可分离性不是必须的,但是由于利用每行/列的线程方框的策略整个图像行/列可以适应于共享的存储器中,因此可分离性将极大地增加GPU上的卷积性能。
做出可视外壳决策
决策内核310可以为每个体素分配单个线程,并且每个体素剔除决策可以独立于任何其它决策。决策内核310具有对n个经滤波的剪影图像以及加速并且限制体素/剪影覆盖范围查询n个mip金字塔的访问。此外,决策内核310了解从NVC空间到剪影图像空间的n个坐标变换,以及从NVC空间到针对当前正在被生成的新的观察的屏幕空间的坐标变换。
决策内核310基于给定的体素是否与表面相交而做出二进制的剔除决策。由此,如果并且对于体素内的一些点p1和p2 则体素将与表面相交。可以在体素内的所有点p上来标识关于S(p)的值的界限。这可以通过找到关于体素到每个经滤波的剪影图像Li的投影的界限,并且取这些界限的乘积来实现。可以利用mip金字塔在图像内标识这些界限。如在以下的说明性算法(4)中所示出的,这些是用于实现函数sampleSilhouette(v,i)的,该函数将返回包含关于体素v向图像I的投影的保守界限的float2值。
算法(4)
这里,bounds.x和bounds.y是期望的界限的下限和上限。此外,float2变量的乘积是其分量的乘积,并且如果体素v位于新的示图的检视范围外部,则函数outsideFrustum(v)返回真。
为了加速处理,决策内核310可以按照分层并且以由粗到细的方式运行。为了促成这一点,并且避免丢失小的特征或导入孔,可以利用每个剪影图像上的mip金字塔来开发加速结构。
分层的体素化加速结构
在一些实施例中,在每个金字塔等级处,通过找到在下一个较低等级的4个纹素的可能的最小和最大值来确定两个通道纹素。由此,可以快速地找到v的投影上的Li上的保守界限。在函数sampleSilhouette(v,i)中,v的8个NVC空间角可以被投影到剪影图像空间中。接着,轴对齐的边界矩形可以被标识为minX、minY、maxX和maxY。可以利用以下的说明性算法(5)来确定剪影图像mip金字塔中的采样等级。
算法(5)
在该等级,v的边界矩形可以覆盖至多纹素的2×2的方框。这些纹素可以在轴对齐的边界矩形的角处被采样。对于体素内的所有p,这些值中最小和最大值表示关于值Ii(Ci(p))的保守界限。对于体素内的所有p,通过取图像上最小值(相似地,最大值)的乘积,可以获得关于值S(p)的保守界限。这意味着在体素化中可以不漏掉小的特征或创建孔,这是由于界限是保守地正确的。此外,剪影图像空间加速结构极大地降低了决策内核310所需要的用于针对给定的体素做出剔除决策的计算和数据访问的量。可以由在剪影图像平滑后立即启动的计算内核来生成n个图像金字塔。
体素渲染
可以将体素渲染成屏幕空间的边界矩形贴图。可以将体素投影至屏幕空间,其中,可以标识它们的轴对齐的边界矩形,并且接着可以将这些四方形作为一对三角形来进行渲染。对于包括捕获主体的上身和头的通常的示图来说,千兆体素分辨率贴图大约投影成HD分辨率的像素的大小。在一些实施例中,GPU光栅化可以针对这样的单个像素四方形进行优化。
计算系统102可以通过对体素至彩色图像中的每个的投影的贡献进行加权来对体素贴图添加纹理。加权可以被确定为两个权重项的乘积:视点相关的权重、以及正交相关的权重。以下的算法示出了如何计算这些权重。如在以下的说明性算法(6)中所示出的,变量VtoEye表示从体素中心到新的眼视点的单位矢量,Normal是在体素中心处的表面的单位法线,并且VtoCamera[i]是从体素中心到相机I的位置的单位矢量。
算法(6)
最终,通过除以其总和而将权重值归一化。在以上的代码中对pow()的调用帮助降低在主导纹理间转换的伪迹(artifacts)。
结论
尽管已经用特定于结构特征和/或方法行为的文字描述了主题,但是应当理解的是,在所附权利要求中所限定的主题不是必须限于上文中所描述的具体的特征或行为。相反,公开了具体的特征和行为作为实现权利要求的示例形式。

Claims (8)

1.一种计算机实现的用于三维3D模型重建的方法,所述方法包括:
接收包括对象的来自各个视角的多个二维2D图像的输入图像;
生成体素列表,所述体素列表包括多个体素,所述体素至少部分地基于所述对象的所述输入图像来重建所述对象的3D模型;
将所述多个体素中的个体体素分配至与图形处理单元GPU相关联的线程标识符ID,其中,所述个体体素的索引与对应于其线程标识符ID的体素列表的位置相关联;
迭代地执行以下步骤直到满足预先确定的条件为止:
基于所述多个体素中的个体体素根据对所述输入图像的分析而被标识为与所述对象的表面不相交,确定所述个体体素是可移除的;
将对所述个体体素的可移除性的指定存储在与所述体素列表相对应的序列列表中,对可移除性的所述指定指示所述个体体素要被移除;以及
确定所述预先确定的条件是否被满足,所述预先确定的条件基于以下中的一项或多项:GPU处理能力、所述体素列表中的体素层级的等级、以及与所述对象的所述3D模型的用户交互;
响应于确定满足所述预先确定的条件,将一个或多个体素从所述体素列表中移除,以生成排除在具有所存储的对可移除性的指定的所述序列列表中的每个个体体素的输出体素;并且
利用所述输出体素渲染所述3D模型。
2.根据权利要求1所述的计算机实现的方法,其中,所述多个体素被表示为与3D网格内的体素角的坐标相对应的整型三元组的列表。
3.根据权利要求1所述的计算机实现的方法,其中,所述预先确定的条件是至少基于所述GPU处理能力的。
4.根据权利要求1所述的计算机实现的方法,还包括:
响应于确定不满足预先确定的条件,将所述个体体素的至少一部分细分成预先确定的数量的体素,以更新所述体素列表。
5.根据权利要求1所述的计算机实现的方法,还包括在将所述个体体素从所述体素列表中移除之前,利用前缀和扫描来更新所述序列列表。
6.根据权利要求1所述的计算机实现的方法,还包括:
对所述输出体素进行编码;并且
发送经编码的输出体素以引起自由观察点显示。
7.一种计算系统,包括:
一个或多个处理器;以及
用于存储计算机可执行指令的存储器,当所述指令在所述一个或多个处理器上执行时,使得所述一个或多个处理器执行以下操作,所述操作包括:
生成包括多个体素的体素列表,所述多个体素中的个体体素与由图形处理单元GPU分配的线程ID相对应,其中,所述个体体素的索引与对应于其线程ID的体素列表的位置相关联;
迭代地执行以下步骤直到满足预先确定的条件为止:
基于所述多个体素中的至少一个体素是否与关联于多个输入图像的对象的表面相交来确定所述至少一个体素的可移除性;
将对所述个体体素的可移除性的指定存储在与所述体素列表相对应的序列列表中,对可移除性的所述指定指示所述个体体素要被移除;以及
确定所述预先确定的条件是否被满足,所述预先确定的条件基于以下中的一项或多项:GPU处理能力、所述体素列表中的体素层级的等级、以及与所述对象的3D模型的用户交互;
响应于确定满足所述预先确定的条件,将所述至少一个体素从所述体素列表中移除,从而生成输出体素,所述输出体素排除在具有所存储的对可移除性的指定的所述序列列表中的每个个体体素。
8.根据权利要求7所述的系统,其中,所述操作还包括:
将被确定为与所述对象的所述表面相交的体素细分成预先确定的数量的更小的体素,从而更新所述体素列表。
CN201480040344.3A 2013-07-17 2014-07-15 用于3d表面重建的稀疏gpu体素化 Expired - Fee Related CN105453139B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361847445P 2013-07-17 2013-07-17
US61/847,445 2013-07-17
US14/256,880 US9984498B2 (en) 2013-07-17 2014-04-18 Sparse GPU voxelization for 3D surface reconstruction
US14/256,880 2014-04-18
PCT/US2014/046584 WO2015009651A2 (en) 2013-07-17 2014-07-15 Sparse gpu voxelization for 3d surface reconstruction

Publications (2)

Publication Number Publication Date
CN105453139A CN105453139A (zh) 2016-03-30
CN105453139B true CN105453139B (zh) 2019-06-25

Family

ID=52343216

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480040344.3A Expired - Fee Related CN105453139B (zh) 2013-07-17 2014-07-15 用于3d表面重建的稀疏gpu体素化

Country Status (5)

Country Link
US (1) US9984498B2 (zh)
EP (1) EP3022715A2 (zh)
KR (1) KR20160033128A (zh)
CN (1) CN105453139B (zh)
WO (1) WO2015009651A2 (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2509369B (en) 2012-11-02 2017-05-10 Imagination Tech Ltd On demand geometry processing for 3-d rendering
US10769849B2 (en) 2015-11-04 2020-09-08 Intel Corporation Use of temporal motion vectors for 3D reconstruction
WO2017100543A1 (en) 2015-12-09 2017-06-15 Idac Holdings, Inc. Anchoring internet protocol multicast services in information centric networks
CN109076148B (zh) 2016-04-12 2021-02-05 奎蒂安特有限公司 日常场景重建引擎
EP3350776B1 (en) 2016-04-20 2021-09-22 Shanghai United Imaging Healthcare Co., Ltd. System and method for image reconstruction
US10347014B2 (en) 2016-08-02 2019-07-09 Shanghai United Imaging Healthcare Co., Ltd. System and method for image reconstruction
CN106296764B (zh) * 2016-08-02 2023-03-17 上海联影医疗科技股份有限公司 图像重建方法及系统
US11308662B2 (en) 2016-08-02 2022-04-19 Shanghai United Imaging Healthcare Co., Ltd. System and method for image reconstruction
US10748326B2 (en) 2016-08-19 2020-08-18 Movidius Ltd. Rendering operations using sparse volumetric data
CN106600671A (zh) * 2016-10-21 2017-04-26 上海拆名晃信息科技有限公司 一种网格模型的体素化方法及装置
WO2018123611A1 (ja) * 2016-12-28 2018-07-05 ソニー株式会社 情報処理装置および方法
EP3602503A4 (en) * 2017-07-10 2020-11-18 Hewlett-Packard Development Company, L.P. ASSOCIATION OF OBJECT PROPERTY DATA WITH LOCATIONS
WO2019027415A1 (en) * 2017-07-31 2019-02-07 Hewlett-Packard Development Company, L.P. TREATMENT OR EXCLUSIVE VOXELS OF MODELS IN THREE DIMENSIONS
CA3075119A1 (en) 2017-09-07 2019-03-14 Cmte Development Limited Spatial data processing system and method
CN107527322B (zh) * 2017-09-27 2020-08-04 杭州群核信息技术有限公司 结合卷积神经网络的渲染方法、装置、引擎及存储介质
CN111727462A (zh) 2017-10-16 2020-09-29 莫维迪厄斯有限公司 针对体积数据的密度坐标散列
EP3729376A4 (en) * 2017-12-22 2021-01-20 Magic Leap, Inc. PROCESS OF RENDERING OF OCCLUSION USING A RAY THROWING AND ACTUAL DEPTH
WO2019190449A1 (en) * 2018-03-26 2019-10-03 Hewlett-Packard Development Company, L.P. Generation of kernels based on physical states
CA3097202A1 (en) 2018-05-02 2019-11-07 Quidient, Llc A codec for processing scenes of almost unlimited detail
US10706611B2 (en) * 2018-06-15 2020-07-07 Beijing Jingdong Shangke Information Technology Co., Ltd. Three-dimensional representation by multi-scale voxel hashing
US11238641B2 (en) * 2019-09-27 2022-02-01 Intel Corporation Architecture for contextual memories in map representation for 3D reconstruction and navigation
CN110826122B (zh) * 2019-10-12 2023-02-28 中广核工程有限公司 一种核电三维布置设计模型体素化方法及系统
US11682142B2 (en) * 2019-12-20 2023-06-20 Raytheon Company Information weighted rendering of 3D point set
JP2023515577A (ja) * 2020-02-27 2023-04-13 マジック リープ, インコーポレイテッド 大規模環境再構築のためのクロスリアリティシステム
CN111402422B (zh) * 2020-03-16 2024-04-16 京东方科技集团股份有限公司 三维表面重建方法、装置和电子设备
US11436761B2 (en) * 2020-03-18 2022-09-06 International Business Machines Corporation Preventing feature loss when compressing images
US11727635B2 (en) * 2020-10-22 2023-08-15 Faro Technologies, Inc. Hybrid photogrammetry

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6990228B1 (en) * 1999-12-17 2006-01-24 Canon Kabushiki Kaisha Image processing apparatus
US6864887B2 (en) * 2002-03-19 2005-03-08 Intel Corporation Classifying a voxel
US6930683B2 (en) * 2002-04-19 2005-08-16 Hewlett-Packard Development Company, L.P. Three-dimensional reconstruction method utilizing reprojective optimization
JP4001600B2 (ja) * 2002-06-28 2007-10-31 富士通株式会社 3次元イメージ比較プログラム、3次元イメージ比較方法、および3次元イメージ比較装置
US7023433B2 (en) * 2002-10-14 2006-04-04 Chung Yuan Christian University Computer-implemented method for constructing and manipulating a three-dimensional model of an object volume, and voxels used therein
GB2405776B (en) * 2003-09-05 2008-04-02 Canon Europa Nv 3d computer surface model generation
CA2544909A1 (en) * 2003-11-28 2005-06-09 Bracco Imaging S.P.A. Method and system for distinguishing surfaces in 3d data sets ("dividing voxels")
GB0329534D0 (en) * 2003-12-20 2004-01-28 Ibm Method for determining the bounding voxelisation of a 3d polygon
GB2418827B (en) * 2004-09-28 2010-11-10 British Broadcasting Corp Method and system for providing a volumetric representation of a 3-Dimensional object
US20060187221A1 (en) * 2005-02-22 2006-08-24 Sarang Lakare System and method for identifying and removing virtual objects for visualization and computer aided detection
JP3932303B2 (ja) * 2005-05-13 2007-06-20 独立行政法人放射線医学総合研究所 臓器動態の定量化方法、装置、臓器位置の予測方法、装置、放射線照射方法、装置及び臓器異常検出装置
US7889194B2 (en) * 2006-03-30 2011-02-15 Siemens Medical Solutions Usa, Inc. System and method for in-context MPR visualization using virtual incision volume visualization
US7640284B1 (en) * 2006-06-15 2009-12-29 Nvidia Corporation Bit reversal methods for a parallel processor
US8897528B2 (en) * 2006-06-26 2014-11-25 General Electric Company System and method for iterative image reconstruction
US8217938B2 (en) * 2007-05-31 2012-07-10 Ford Global Technologies, Llc Method and apparatus for determining item orientation
US8151084B2 (en) * 2008-01-23 2012-04-03 Oracle America, Inc. Using address and non-address information for improved index generation for cache memories
AU2009234284A1 (en) * 2008-04-11 2009-10-15 Terraspark Geosciences, Llc Visulation of geologic features using data representations thereof
TW200949755A (en) * 2008-05-30 2009-12-01 Asustek Comp Inc Method of controlling operation mode of graphic processing unit
US8106924B2 (en) * 2008-07-31 2012-01-31 Stmicroelectronics S.R.L. Method and system for video rendering, computer program product therefor
US8217939B1 (en) * 2008-10-17 2012-07-10 Ngrain (Canada) Corporation Method and system for calculating visually improved edge voxel normals when converting polygon data to voxel data
EP2597615A1 (en) * 2008-11-25 2013-05-29 Algotec Systems Ltd. Method and system for segmenting medical imaging data according to a skeletal atlas
GB0910138D0 (en) * 2009-06-12 2009-07-29 Siemens Medical Solutions Combination of MIP and anatomical information
US9324175B2 (en) * 2009-09-11 2016-04-26 Nvidia Corporation Memory coherency in graphics command streams and shaders
US8867820B2 (en) * 2009-10-07 2014-10-21 Microsoft Corporation Systems and methods for removing a background of an image
US8655033B2 (en) * 2009-10-28 2014-02-18 General Electric Company Iterative reconstruction
US8503754B2 (en) * 2010-06-07 2013-08-06 Calgary Scientific Inc. Parallel process for level set segmentation of volume data
US8587583B2 (en) 2011-01-31 2013-11-19 Microsoft Corporation Three-dimensional environment reconstruction
US8694832B2 (en) * 2011-03-03 2014-04-08 International Business Machines Corporation Assist thread analysis and debug mechanism
US9329988B2 (en) * 2011-08-19 2016-05-03 Nvidia Corporation Parallel dynamic memory allocation using a nested hierarchical heap
US9311744B2 (en) * 2012-01-09 2016-04-12 Fca Us Llc System and method for generating an outer layer representation of an object
KR101849373B1 (ko) * 2012-01-31 2018-04-17 한국전자통신연구원 인체의 관절구조를 추정하기 위한 장치 및 방법
US9245363B2 (en) * 2012-12-21 2016-01-26 Nvidia Corporation System, method, and computer program product implementing an algorithm for performing thin voxelization of a three-dimensional model
US20140267264A1 (en) * 2013-03-14 2014-09-18 Nvidia Corporation Generating anti-aliased voxel data

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
《Generalized Voxel Coloring》;W. Bruce Culbertson等;《Vision Algorithms: Theory and Practice》;20001231;100-115
《Interactive Hierarchical Space Carving with Projector-based Calibrations》;Martin Granger-Piche等;《Vision, Modeling, & Visualization Conference》;20041116;159-166
《Parallel Prefix Sum (Scan) with CUDA》;Mark Harris等;《GPU Gems 3》;20090331;第851-876页

Also Published As

Publication number Publication date
WO2015009651A2 (en) 2015-01-22
EP3022715A2 (en) 2016-05-25
CN105453139A (zh) 2016-03-30
WO2015009651A3 (en) 2015-08-06
US9984498B2 (en) 2018-05-29
KR20160033128A (ko) 2016-03-25
US20150022521A1 (en) 2015-01-22

Similar Documents

Publication Publication Date Title
CN105453139B (zh) 用于3d表面重建的稀疏gpu体素化
CN113706714B (zh) 基于深度图像和神经辐射场的新视角合成方法
Loop et al. Real-time high-resolution sparse voxelization with application to image-based modeling
JP3981302B2 (ja) 3次元の静止した又は動くオブジェクトの階層イメージベース表現並びに該表現をオブジェクトのレンダリングに使用する方法及び装置
JP3840150B2 (ja) 3次元客体およびアニメートされた3次元客体のイメージベースの表現とレンダリング方法
Herling et al. Advanced self-contained object removal for realizing real-time diminished reality in unconstrained environments
EP3649618A1 (en) Systems and methods for providing non-parametric texture synthesis of arbitrary shape and/or material data in a unified framework
US10217259B2 (en) Method of and apparatus for graphics processing
CN107509067B (zh) 一种高速高质量的自由视点图像合成方法
JPH11504452A (ja) 2次元投影図に基づいて3次元の対象物を再現し、取り扱うための装置と方法
Liu et al. Creating simplified 3D models with high quality textures
Park et al. Arbitrary view generation from multiple cameras
CN110060325A (zh) 屏幕空间渲染方法及装置
US11367262B2 (en) Multi-dimensional acceleration structure
GB2592604A (en) Image generation system and method
CN113450435B (zh) 顶点动画的处理方法及装置
Chen et al. A quality controllable multi-view object reconstruction method for 3D imaging systems
Chen et al. Mesh2NeRF: Direct Mesh Supervision for Neural Radiance Field Representation and Generation
Blasco et al. Non-Uniform Spherical Light Fields
Shegeda et al. A gpu-based real-time algorithm for virtual viewpoint rendering from multi-video
Li et al. Hybrid Modeling Graphic Images to Urban Scene
CN117541755A (zh) 一种基于rgb-d三维重建的刚性物体虚实遮挡方法
Maunder et al. Virtual View Synthesis using Visual Hulls
Wang et al. Realistic and interactive image-based rendering of ancient chinese artifacts using a multiple camera array
Orman GPU Optimization of an Existing Free-Viewpoint Video System

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190625

Termination date: 20200715

CF01 Termination of patent right due to non-payment of annual fee