作者:程耀
单位:中国移动智慧家庭运营中心
当今,三维重建技术在计算机视觉和计算机图形学领域扮演着越来越重要的角色,它们有助于将物理世界中的实体转换为数字模型。三维重建技术的应用范围非常广泛,包括增强现实、虚拟现实、建筑设计、游戏开发等领域。本文将介绍三维重建技术的概念、方法,重点关注神经辐射场(NeRF)算法。
三维重建的概念
三维重建是一种将物理世界中的实体转换为数字模型的计算机技术。其基本概念是通过对物理世界中的物体或场景进行扫描或拍摄,并使用计算机算法将其转换为三维数字模型。抽象意义上的三维模型指的是:形状和外观的组合,并且可以渲染成不同视角下真实感强烈的RGB图像。
三维重建技术可以应用于许多领域,如建筑设计、游戏开发、虚拟现实等。通过三维重建技术,可以快速、准确地获取物体的几何形状、纹理、颜色等信息,从而实现更高质量的渲染和呈现效果。
三维重建技术的实现方式有很多种,如通过多视角立体重建、激光扫描、结构光扫描等方式进行。近年来,随着深度学习等技术的发展,深度神经网络也被应用于三维重建技术中,取得了令人瞩目的成果。三维重建技术的发展和应用将进一步推动数字化建设的发展和普及。这些突破性进展为三维重建技术的持续演进提供了强大动力,进一步推动了数字化建设的普及和发展。
三维重建的应用
三维重建生成的应用非常广泛,其中一项重要的应用是生成新视角的图片或视频。通过三维重建技术,我们可以从已有的视角获取物体的几何形状和表面纹理等信息,并生成具有真实感的RGB图像及视频。
例如,三维重建技术可以用于视频增强,即从已有的视频中生成新的视角,从而改善视频的观感和交互性。例如,观众可以根据自己的喜好选择不同的视角观看物体、环境,实现全景观看,达成更好的用户交互体验。如下图所示,我们可以从照片中推断出当前的三维环境,供用户从多角度观看,但通常情况下,这需要多张照片。
图1 三维重建的应用
另外,三维重建技术也可以用于视频编辑和特效制作,例如在电影中添加虚拟场景。
三维重建的方法
扫描三维重建和多视角立体重建(Multi-View Stereo, MVS)是常见的两种传统三维重建方法。其流程如下图所示:
图2 三维重建的流程
扫描三维重建是指使用专业扫描仪等设备,对物体进行多角度、高精度的扫描,获取物体表面的点云数据,之后,通过点云重建算法生成物体的三维模型。这种方法对物体形状和细节的重建精度较高,适用于文物保护、工业设计等领域。但是,扫描仪的价格昂贵,需要较高的技术和操作水平,同时扫描过程需要一定的时间,不适用于消费级或工业级产品。
MVS三维重建是指使用多个视角的图像,通过多视角几何原理和图像匹配算法,计算出场景中物体表面的深度和法向信息,最终生成三维模型。这种方法无需特殊设备,只需使用相机等普通设备即可实现,适用于复杂场景的三维重建。但是,MVS方法对图像质量和视角的要求较高,需要处理视角重叠度不足、阴影等问题,同时图像匹配算法的准确度也对重建效果有很大影响。
图3 三维重建示意图(左边为输入图片,右边为生成的三维模型)
除了传统的三维重建方法,三维模型的隐式重建近几年也在不断发展,其主要思想是使用神经网络建立场景或物体的三维模型,从而实现高质量的重建。三维隐式重建并不显性地产生例如三维曲面的模型,而是通过数学表达式来隐式地表达场景中每一个点的颜色、深度。也就是说,隐式重建省略了图1的中间过程,从输入物体照片直接得到了新视角下图片。
三维物体的隐式表达一般有,有向距离函数(SDF,Signed Distance Function)、占用场(OF,Occupancy Field)来表示一个点距离附近三维物体的有向距离或者该点是否在三维物体内部。
与传统的MVS相比,隐式重建可以从较少的观测数据中构建高质量的三维模型,并且可以更好地处理遮挡、反射和光照等复杂情况,重建效果相比MVS更加光滑。另外,相比传统显式重建得到的离散面片构成的三维模型,由于函数的连续性,隐式模型能更好的适应高分辨率的情况。但同时,隐式重建方法需要大量的训练数据,并且它难以处理具有复杂结构和几何形状的物体,无法重现物体的高频特征,在细节方面比较粗糙。
神经辐射场(NeRF,Neural Radiance Field)是另一种隐式三维重建技术,使用一个神经网络来预测从一个视点看到的场景中每个像素的颜色和深度值。这个神经网络使用辐射场以学习从一系列观察视角拍摄的图像中重建场景的表面形状和纹理。基于神经网络输出的编码后的信息,采用体渲染输出指定视角下的二维图片。
相比于另外两种隐式三维重建方法,NeRF只需要少量的二维图像和对应的深度值用于训练,并且在高频特征上具有更好的表现。
NeRF的提出与发展
NeRF的概念首次被提出于2020年,由美国加州大学伯克利分校(UC Berkeley)和谷歌研究的Ben Mildenhall、Pratul P. Srinivasan、Matthew Tancik和Jonathan T. Barron等人在论文《NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis》中阐述。NeRF的核心思想源于物理学、计算机图形学、深度学习等多个领域的结合。他们提出了一种新颖的神经网络架构,通过学习一个连续的三维空间中的辐射场来从有限的二维图像中重建高质量的三维场景。
NeRF自提出后也持续在生成范围、生成效果、所需基础数据上进行改进。例如包含光影变化效果NeRV、动态NeRF HyperNeRF接近实时生成Instant NGP和Instant NeRF全场景NeRF mip NeRF 360。
图4 NeRF示意图
NeRF整体框架
NeRF算法的整体训练架构如下图所示:
图5 NeRF训练框架
首先通过神经网络学习场景的辐射场函数来实现对三维信息的编码,输入为三维空间中的坐标和方向,输出为对应点的颜色和透明度值。
第二步体渲染,首先将场景分成小的体素,然后对每个体素内的光线进行采样,通过对所有采样点的辐射场函数进行加权平均,得到最终的像素颜色值。相当于对体素中的辐射场进行了积分,从而得到了最终的图像。直观来说,一个点的透明度越高,这点在射线下的颜色反应在像素上的权重越小。
NeRF还使用了一些技巧来提高重建质量和效率。例如,位置编码(Positional Encoding)技术将输入坐标进行编码,使得模型可以更好地处理坐标信息。此外,分层体素采样(Hierarchical Volume Sampling)技术通过对采样分层,可以减少渲染时间,提高渲染效率。
辐射场
辐射场是一个五维函数,用来描述辐射在空间中的传播行为和相互作用,在计算机图形学和计算机视觉领域,辐射场常用于表示三维场景中的光照和颜色信息,可以用于实现渲染、重建、纹理合成等任务。
辐射场包含三个空间维度和两个方向维度,分别表示辐射在空间中的位置和光线的方向。辐射场可以用来描述光线在介质中的传播、反射、折射、散射等现象,以及介质中的吸收、发射等能量转换过程。神经辐射场可以看作是从空间位置和视角方向到颜色和透明度的映射。
图6 辐射场示意图
辐射场用数学公式可以表达为:
在NeRF中,辐射场被表示为一个神经网络模型,用于从相机位置和方向计算出每个像素点的颜色和透明度,从而实现高质量的三维重建和渲染。此时函数可以表达为:
其中是一个神经网络模型,是模型参数。
神经网络架构如下图所示,这里采用的是全连接的形式,绿色为输入,红色为输出,其中代表输入位置、角度映射出的维向量,这里我们可以看出,透明度和视角无关而颜色和视角有关:
图7 辐射场神经网络示意图
体渲染
体渲染是一种用于可视化三维数据的方法,将数据中的体素(Voxel)转换为图像,以显示其内部结构和特征。体渲染通常涉及到光线传播、颜色合成和光照计算等过程,可以通过各种算法和技术来实现高质量的体渲染效果。
体渲染中最基本的方法是基于光线投影(Ray Casting)的体积光线渲染(Volume Ray Casting),其核心思想是在三维体素数据上投射光线,并计算沿光线传播过程中体素的透明度和颜色,从而生成渲染图像。
图8 渲染示意图
光线传播过程中,透明度和颜色的计算通常基于体素的密度和光线与体素交点的位置和方向等信息。在体渲染中,常用的透明度传输函数(Opacity Transfer Function)和颜色传输函数(Color Transfer Function)可以用于调整渲染效果。
在NeRF中,体渲染可以用以下公式来表示:
其中代表投影点的颜色,代表光线从物体到观测点沿途的透明度的累和,和分别代表神经辐射场输出的三维空间的颜色和透明度,表示光线与数据集的最大交点,表示光线的方向。
总结
随着智能交互技术的发展,图形学领域近年来发展迅速,从传统的MVS重建到基于神经网络的隐式重建,都在为更好的显示、交互效果不断演变。自NeRF发布以来,基于NeRF的新模型也层出不穷,例如HeadNeRF重建三维人脸,PixelNeRF只需输入极少量的目标图片,即可产生新视角图片。图形学必将为我们带来更好的智能交互体验。