三维重建大观!从渲染到3DGS三维高斯泼溅~

点击下方卡片,关注“自动驾驶Daily”公众号

戳我-> 领取近15个自动驾驶方向路线

微信扫描以下二维码,『自动驾驶之心知识星球』国内最专业的技术和求职交流社区,和3500人一起卷赢

一、 背景

最近自动驾驶领域大量使用3DGS技术,比如论文有华中科技大学和地平线的《RAD: Training an End-to-End Driving Policy via Large-Scale 3DGS-based Reinforcement Learning 》,企业有理想的MVGS技术《解析理想汽车MVGS技术:3DGS优化新篇章》。从数据闭环到端到端AD策略(可以理解为端到端自动驾驶大模型)训练,从自动驾驶仿真到实车实时高精建图,无处不在。

如此火热的技术,却有各种各样不同说法,有的说它是渲染,有的说它是三维重建,等等。再加上泼溅这个词的神秘物理含义,是的本来很明确的3DGS显得扑朔迷离。

甚至在写作时,拼音输入法输入pojian,首先出来的是破茧,要搜半天才能正确输入泼溅。可见这个词很不常见。

二、 什么是3DGS

3DGS(3D Gaussian Splatting,3D高斯溅射)本质是用一系列三维概率小球来表示空间中的点,这个点代表的东西的位置,最大概率在小球正中间,最小概率在小球的边缘。除了位置的概率分布之外,这个概率小球还带有颜色等等信息。

高斯的意思就是正态分布(高斯分布)。

如果读者很熟悉物理学的测不准原理,这个概率小球可以类比电子云,反正电子的具体位置我不知道,位置一概率出现在一团电子云中。

图 电子云,来自网络
图 类似橄榄球形状的三维高斯分布,来自网络
图 高斯点云(左边的彩色小球),形状就是三维高斯位置分布,来自网络

而这些正态分布概率意义的点,被称为高斯点;它们的集合,被称为高斯点云,是对实景的每一个点的一种遵循高斯分布的概率性表达,是一种可以从任何角度观察的全息表达。

而且这个点云不同于激光雷达或者其它雷达的点云每个点有确定位置,它是带有概率性的小球的集合。

具体的,高斯点(Gaussian Point)是一种基于高斯函数(正态分布函数)的几何表示方法,用于描述三维空间中物体的形状、光照、透明度等属性。它本质上是一个参数化的三维模型单元,通过一组数学参数来近似表示复杂的几何结构或场景特征。

一个三维高斯点通常包含三种关键参数:

  • 中心坐标(Position)表示高斯点在三维空间中的位置,即中心点坐标 (x, y, z)。

  • 协方差矩阵(Covariance Matrix)描述高斯点在三维空间中的形状和方向,由一个 3* 3的矩阵表示。这个矩阵的对角线元素表示高斯点在 x、y、z 轴上的方差(即 “胖瘦” 或 “长短”)。非对角线元素表示各轴之间的相关性(即高斯点的旋转和扭曲程度)。通过调整协方差矩阵,可以将高斯点 “拉伸” 或 “旋转” 为椭球体,以适应不同形状的物体表面。

  • 辐射强度(Radiance/Opacity)表示高斯点的颜色和透明度,通常包含 RGB 颜色值和不透明度(Alpha 值)。透明度参数使高斯点能融合重叠区域,实现更自然的表面渲染效果。

有些创新就是在多带点其他信息。

高斯点云VS传统点云

特性

高斯点云

传统点云

几何表达

连续高斯分布(含椭球形状、方向)

离散点(仅XYZ坐标)

渲染质量

支持高质量插值,消除空洞

依赖点密度,低密度时出现孔洞

动态支持

通过调整高斯参数实现形变/运动建模

需逐帧配准,计算复杂

应用场景

新视角合成、实时渲染(如3DGS)

测绘、静态场景重建

三维高斯点云的生成是 3DGS 技术的关键环节,通常会结合多视角图像、点云数据等输入,通过一系列算法处理得到。下面从数据获取、处理和优化等阶段,为你详细介绍其生成过程:

  • 数据获取:生成三维高斯点云首先需要采集场景数据,常见方式是使用多个相机从不同角度拍摄场景,获取多视角图像;或者利用激光雷达等设备,直接扫描场景得到初始点云数据。例如在自动驾驶场景重建中,车辆上的环视摄像头和激光雷达,就能同步采集道路、建筑、车辆等环境信息。

  • 初始点云生成与处理:基于图像的点云生成:对于多视角图像,先通过特征提取算法(如 SIFT、SURF )提取图像中的特征点,再利用立体匹配、运动恢复结构(SfM)等技术,计算出特征点在三维空间中的坐标,从而构建初始点云。比如,通过分析不同视角图像中同一物体特征点的视差,就能推算出该点的深度信息和三维坐标。

  • 点云预处理:初始点云可能存在噪声、密度不均匀等问题,需要进行滤波(如高斯滤波、体素滤波)去除噪声点,同时通过下采样或上采样操作调整点云密度,为后续高斯点生成做准备。

  • 高斯点初始化:将处理后的点云作为基础,为每个点或点的局部区域初始化高斯点。每个高斯点被赋予初始参数,包括中心位置(直接采用点云中点的坐标)、协方差矩阵(通常初始化为各向同性,即球形分布)、颜色(从对应图像中采样获取)和不透明度(一般设为默认值) 。

  • 参数优化:通过最小化渲染图像与真实图像之间的差异,对高斯点的参数进行迭代优化。通常采用可微渲染技术,计算渲染结果相对于高斯点参数的梯度,利用梯度下降等优化算法调整参数。比如调整协方差矩阵改变高斯点形状,使其更好地拟合场景几何结构;优化颜色和不透明度,让渲染效果更接近真实场景。

  • 点云生成与调整:经过参数优化后,所有高斯点构成三维高斯点云。在实际应用中,还会根据场景需求进行动态调整,例如在自动驾驶的动态场景中,对于新增或消失的物体,相应地添加或删除高斯点;针对复杂区域,增加高斯点密度以提升细节表达。

三、 什么是渲染

渲染(Rendering) 是指通过计算机算法将三维场景、模型或数据转换为二维图像或视频的过程。它广泛应用于计算机图形学、动画制作、游戏开发、建筑设计、影视特效等领域,本质是模拟光线在虚拟场景中的传播和交互,最终生成人眼可见的视觉结果。

渲染最核心的含义还不是三维转二维,而是计算机世界模拟现实不断地实时转向,每一次转向都是要把三维实景用新角度从新投影到新的二维平面。

渲染速度决定流畅度,强大的显卡是3D游戏必备的。

图 反恐精英的实时渲染,来自网络

在反恐精英中,你稍微抬一下枪口,就有几十次渲染,保证你看到角度变化是流畅的。

当然,渲染并不是投影那么简单,投影只是第一步,具体步骤如下:

  1. 变换与投影

将三维模型从世界坐标系转换为摄像机坐标系,并通过投影变换(正交投影或透视投影)将三维坐标映射到二维图像平面,形成初步的 “几何投影”。

  1. 着色(Shading)

根据物体的材质属性(如颜色、粗糙度、金属度)和光源信息,计算每个像素的颜色值。

常见着色模型包括:

Phong 着色:模拟镜面反射和漫反射,计算简单但效果较粗糙。
PBR(物理 - based Rendering,物理渲染):基于真实物理规律模拟光线与材质的交互,效果更逼真(如金属光泽、次表面散射)。

  1. 光栅化(Rasterization)或光线追踪(Ray Tracing,也就是黄仁勋老是在说的光追)

光栅化是将几何图形(三角形)转换为像素网格,通过插值计算每个像素的颜色和属性(如深度、纹理坐标)。这是游戏实时渲染的主流方法,速度快但对复杂光影模拟有限。

光线追踪是从摄像机向场景发射光线,追踪光线与物体的交点、反射、折射等路径,递归计算最终颜色。能精确模拟全局光照、软阴影、焦散等效果,但计算成本高,常用于离线渲染或高端实时渲染(如 RTX 技术)。

  1. 后处理

对渲染结果进行优化,如抗锯齿(消除像素边缘锯齿)、景深(模拟摄像机聚焦效果)、色调映射(HDR 处理)、运动模糊等,提升图像质量和真实感。

四、 3DGS与渲染和三维重建

已经理解了3DGS的基本数据结构---高斯点云,又知道渲染无非是三维映射到二维。那么3DGS用于多角度渲染,也就是生成不同角度的二维图片平面图像,也就是把三维小球根据当前需求的角度映射到平面上。高斯点云的所有小球按同一角度映射到平面后,这个平面图就是在这个角度下的泼溅。

直观形象就像喷嚜打印机,把不同颜色的墨水滴泼溅到白纸上平面上。

当然,具体泼溅的计算直观比喻复杂。

Splatting的本质是从3D到2D的映射

技术特征

Splatting

传统渲染(三角形光栅化)

输入数据

点云、高斯函数、体素等非结构化数据

多边形网格(三角形/四边形)

投影方式

将3D数据按一定规则(如高斯核)扩散到2D像素

通过顶点插值计算像素覆盖

抗锯齿能力

依赖高斯核或滤波函数平滑边缘

依赖MSAA或超采样

适用场景

动态点云、体积渲染、辐射场(如3D Gaussian Splatting)

静态模型、游戏引擎、CAD

Splatting具体步骤如下:

  1. 初始化3D高斯分布

输入数据:通常从运动结构恢复(SfM)生成的稀疏点云开始,这些点云由多视角图像的特征点匹配得到。
参数设置:每个3D点被赋予以下属性:
位置(均值):直接使用SfM生成的3D坐标。
协方差矩阵:控制高斯分布的形态(大小和方向)。
不透明度(α)和颜色(SH系数):用于后续混合渲染。

  1. 优化与自适应控制

梯度下降优化:通过可微渲染调整高斯参数(位置、协方差、颜色、不透明度),以最小化渲染图像与真实图像的差异。
动态增减高斯点:分裂:对覆盖大区域或高方差的高斯点进行细分。
修剪:移除低不透明度或冗余的高斯点 [6]。

  1. 渲染流程

渲染时,将3D高斯投影到2D图像平面并混合,步骤如下:

(1) 相机空间变换
将高斯点从世界坐标系转换到相机坐标系,再投影到图像平面。

(2) 分块与排序
分块(Tiling):将图像平面划分为小块(如16×16像素)。
深度排序:对每个块内的高斯点按深度(到相机的距离)排序,确保正确混合顺序。

(3) 混合渲染(α-Blending)
对每个像素,沿射线方向混合重叠的高斯点:颜色计算:使用球谐函数(SH)根据视角插值颜色。
透明度混合:按不透明度α加权叠加

  1. 输出与应用

支持高帧率(如30 FPS以上)的新视角合成,适用于动态场景,比如VR,比如自动驾驶。

注意到泼溅是把三维小球投影到平面,而不是点,小球投影成椭圆,必然有重叠,所以上面有许多处理重叠部分的颜色和透明度的计算。

所以说3DGS的S,Splatting就是渲染,把三维实景建模投影到二维平面。

至于3DGS作为三维重建,他本来就是三维建模,然后从各个角度渲染转动,在屏幕上这种能看见各个角度的渲染,看起来就像一个可以转动把玩的三维实体,就是三维重建。

五、 结语--3DGS与辅助驾驶

3DGS目前在辅助驾驶中,无论是车辆实时避障,还是模型仿真训练,还是数据闭环,都有普遍的用途。

比如数据闭环就是根据真实数据来生成逼真的假数据,特别是一些现实不好捕捉的极端场景,叫做长尾案例。这些案例基于3DGS就比较容易生成,通过增加或者修改高斯点云来实现。

具体的,3DGS在辅助驾驶的作用,包括但不限于如下:

(1) 高精地图生成
自动化重建:通过车载环视相机,3DGS可快速生成可编辑的高精地图,支持动态障碍物标注(如施工区域)。
众包更新:高斯点云的紧凑性(单场景 <500MB)便于云端分发与增量更新。

(2) 闭环仿真测试
极端场景合成:结合扩散模型(如DiffGS),生成罕见事故场景的高斯点云数据,用于安全测试。
传感器故障模拟:通过随机剔除高斯点,模拟LiDAR点云缺失或相机遮挡。

(3) 实时感知辅助
占用网络(Occupancy)预训练:3DGS重建结果可作为监督信号,提升BEV感知模型的泛化能力。
在线定位修正:当GPS失效时,3DGS地图与当前帧匹配可提供亚米级定位精度。

总体来说,深刻理解3DGS并做出各种改进和创新,将是以后辅助驾驶研究的一个重要方向。

投稿作者为自动驾驶之心知识星球特邀嘉宾,欢迎加入交流!

① 全网独家视频课程

BEV感知、BEV模型部署、BEV目标跟踪、毫米波雷达视觉融合多传感器标定多传感器融合多模态3D目标检测车道线检测轨迹预测在线高精地图世界模型点云3D目标检测目标跟踪Occupancy、cuda与TensorRT模型部署大模型与自动驾驶Nerf语义分割自动驾驶仿真、传感器部署、决策规划、轨迹预测等多个方向学习视频(扫码即可学习

视频官网:www.zdjszx.com

② 国内首个自动驾驶学习社区

近3500人的交流社区,涉及30+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(2D检测、分割、2D/3D车道线、BEV感知、3D目标检测、Occupancy、多传感器融合、多传感器标定、目标跟踪、光流估计)、自动驾驶定位建图(SLAM、高精地图、局部在线地图)、自动驾驶规划控制/轨迹预测等领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

③【自动驾驶Daily】技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、车道线、目标跟踪、3D目标检测、BEV感知、多模态感知、Occupancy、多传感器融合、transformer、大模型、在线地图、点云处理、端到端自动驾驶、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向。扫码添加自动驾驶之心小助理微信邀请入群,备注:学校/公司+方向+昵称(快速入群方式)

### 3DGS 三维重建技术实现方法 #### 高斯(Gaussian Splatting, 3DGS)概述 高斯是一种基于显式表示的三维重建技术,它通过一组高斯椭球来建模场景。相比于传统的神经隐式表示方法(如 NeRF),3DGS 提供了更快的渲染速度和更高效的计算性能[^2]。 #### 数据准备阶段 为了获得良好的三维重建效果,数据采集过程至关重要。建议尽可能获取场景的所有位置和角度的图像。通常可以通过拍摄视频并从中抽取帧的方式完成这一目标。此外,确保训练照片的分辨率一致,并维持统一的相机参数和光照条件可以显著提升重建质量[^4]。 #### 场景建模与优化 在 3DGS 中,场景被分解为一系列高斯分布形式的小单元——即高斯椭球。这些高斯椭球不仅包含了颜色信息,还携带了空间中的位置、方向以及大小等属性。通过对输入图片集进行处理,算法会自动调整每一个高斯椭球的位置及其特性以最佳拟合原始场景的数据特征。 #### 渲染流程 一旦完成了上述建模步骤,则可通过简单的栅格化操作将这些高斯椭球投影至二维平面上形成最终的画面输出。由于这种方法直接作用于具体的几何实体之上而非依赖复杂的函数逼近机制,因此其执行效率远高于诸如 NeRF 这样的纯黑箱解决方案[^1]。 以下是 Python 的伪代码示例用于说明基本框架: ```python import numpy as np def gaussian_splatting(input_images): gaussians = initialize_gaussians() # 初始化高斯分布 for image in input_images: optimize_positions(gaussians, image) # 调整高斯分布的位置 return gaussians def render_scene(gaussians): rendered_image = rasterize_gaussians(gaussians) # 将高斯分布转换成像素 return rendered_image ``` 此段代码仅为概念展示用途,在实际应用当中还需要考虑更多细节比如具体数值范围设定等问题。 #### 后续扩展功能 得益于这种明确表达方式的支持,围绕着已构建起来的模型还可以开展多项高级活动,像动态物体追踪恢复、表面形态修改乃至物理学仿真等等都变得可行起来。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值