前言
在上一篇文章中,我们聊了基于深度估计的2D转3D方案——先估计深度,计算视差,预测另一视角,再填补空洞。这条路线流程清晰、可控性强,但也有明显的局限:深度估计本质是”猜测”,多阶段流水线的误差会逐级累积。今天我们来聊另一条技术路线:基于3D Gaussian Splatting(3DGS)的端到端方案。核心思路是直接从单目图像重建3D场景的高斯点云表示,然后从任意视角渲染新视图——不需要显式的深度估计和视差计算,一步到位生成右眼画面。
正文
一、为什么选择3D Gaussian Splatting
传统的3D重建方法,比如NeRF(Neural Radiance Fields),虽然效果惊艳,但渲染速度极慢,完全无法用于视频处理。3D Gaussian Splatting是2023年提出的新型3D表示方法,用一堆3D高斯椭球来表示场景。每个高斯有自己的位置、大小、旋转、颜色和透明度。渲染时,把这些高斯”泼溅”(splat)到2D屏幕上,按深度排序混合颜色,得到最终画面。
3DGS的表示是显式的——每个高斯都有明确的3D坐标,可以直接操作、变换、从任意角度渲染。对于双视角生成:只要从单目图像重建出高斯点云,然后把相机向右平移一小段距离(模拟右眼位置),重新渲染一遍,就得到了右眼视图。整个过程端到端,没有中间的深度图、视差图、空洞填补这些环节。
二、SHARP:单目3DGS重建模型
我们的方案基于Apple在2024年底开源的SHARP模型(Single-image to High-fidelity 3D Gaussians via Adaptive Rendering Pipeline)。SHARP的核心能力是从单张图像预测3D高斯点云,然后用可微渲染器从任意视角渲染新视图。
SHARP的架构分为三个部分:
-
图像编码器:基于Vision Transformer的骨干网络,提取图像的多尺度特征。使用DINOv2预训练模型,泛化能力强。
-
高斯解码器:密集预测Transformer,把图像特征解码成每个像素对应的高斯参数(深度、法向量、颜色、不透明度、协方差)。
-
可微渲染器:基于gsplat库实现的高斯泼溅渲染器。把预测的高斯点云投影到2D屏幕,按深度排序,用alpha混合算法合成最终图像。
SHARP的训练数据来自大规模多视角图像数据集(Objaverse、MVImgNet),模型学会了从单张图像”脑补”出完整的3D结构。虽然单目重建本质是病态问题,但SHARP通过大规模数据学习到了强先验——比如”桌子一般是平的”、”人脸是对称的”——这些先验帮助模型做出合理的3D推断。
三、双视角生成流程
有了SHARP模型,生成双视角视频的流程很直接:
第一步:单帧高斯预测
对视频的每一帧,输入SHARP模型,得到对应的3D高斯点云。这个过程是单帧独立的,不需要时序信息。模型输出的高斯点云包含了场景的完整3D结构——前景、背景、遮挡关系全都编码在高斯的位置和透明度里。
第二步:相机变换与渲染
拿到高斯点云后,模拟右眼的视角。人眼的瞳距大约6.5厘米,但对于视频内容,这个偏移量可以根据需要调整——偏移量越大,3D效果越强烈,但也越容易出现不自然的变形。
具体操作是修改相机的外参矩阵:把相机沿X轴平移一个offset_x的距离(比如0.05米),然后用gsplat渲染器重新渲染高斯点云。渲染器会自动处理遮挡关系,不需要显式的空洞填补。
第三步:输出格式封装
左眼图像就是原始输入帧,右眼图像是SHARP渲染出来的新视角。把两者按左右格式(Side-by-Side)或红蓝格式(Anaglyph)拼接,就得到了3D视频帧。
四、关键技术细节
1. 单帧处理 vs 时序处理
与基于深度估计的方案不同,SHARP是单帧处理的——每一帧独立预测高斯、独立渲染,不依赖前后帧信息。
- 优势:可以完全并行;不会因为某一帧失败而影响整个序列;适合处理有剪辑、场景切换的视频。
- 劣势:帧间一致性完全依赖模型的稳定性。如果模型对相邻帧的预测有微小差异,可能会出现轻微的”抖动”。
2. 相机参数的自动估计
SHARP需要知道相机的焦距才能正确地把2D像素反投影到3D空间。对于大多数视频,我们没有真实的相机参数。SHARP用经验公式估计:f_px = width * 1.2,即焦距约等于图像宽度的1.2倍。
3. 内部分辨率与插值
SHARP模型的训练分辨率是1536×1536。对于任意输入分辨率的图像,先双线性插值缩放到1536×1536,跑模型预测,然后把输出的高斯点云渲染到原始分辨率。
4. 无需空洞填补
这是3DGS方案最大的优势。传统方案中,像素偏移后必然出现空洞——原本被遮挡的区域在新视角下露出来了,但我们没有这部分的真实像素。SHARP的高斯点云是完整的3D表示,包含了被遮挡的背景信息(通过半透明的高斯叠加实现)。渲染新视角时,这些信息会自然地显现出来。
五、效果对比与适用场景
从实际效果来看,SHARP方案在以下场景表现优异:
- 动画与CG内容:动画片、游戏录屏、3D渲染视频,这些内容本身就有清晰的几何结构,SHARP能很好地重建。
- 静态或慢速运动场景:风景、建筑、静物,SHARP的单帧预测质量高,生成的右眼视图自然流畅。
- 前景主体突出的画面:人物特写、产品展示,SHARP对主体的3D结构理解准确,立体感强。
但也有一些挑战场景:
- 快速运动与运动模糊:单帧处理无法利用时序信息,对于快速运动的物体,可能会出现轻微的几何不一致。
- 复杂遮挡与透明物体:虽然SHARP能处理一定程度的遮挡,但对于多层半透明物体(比如烟雾、玻璃),重建质量会下降。
- 极端视角变化:如果offset_x设置过大(比如超过0.2米),可能会暴露出单目重建的局限性——原本看不到的区域,模型只能”猜测”,可能出现不自然的拉伸或变形。
六、两种方案的对比
最后,对比一下基于深度估计和基于3DGS的两种方案:
| 特性 | 深度估计方案 | 3DGS方案(SHARP) |
|---|---|---|
| 处理方式 | 多阶段流水线(深度→视差→偏移→填补) | 端到端(图像→高斯→渲染) |
| 空洞填补 | 必需,需要额外的修复模型 | 无需,渲染自动处理遮挡 |
| 时序一致性 | 可通过时序滤波优化 | 依赖模型稳定性 |
| 处理速度 | 较快(单模型推理) | 较慢(模型复杂+渲染开销) |
| 适合场景 | 真实视频、复杂纹理 | 动画、CG、静态场景 |
| 可控性 | 高(每个环节可单独调优) | 中(主要调整offset_x) |
| 效果上限 | 受深度估计精度限制 | 受单目重建能力限制 |
两种方案各有千秋,实际应用中可以根据内容类型选择:对于真实拍摄的视频,深度估计方案更稳妥;对于动画、CG内容,3DGS方案效果更好。
最后
参考文章:
SHARP: Single-image to High-fidelity 3D Gaussians via Adaptive Rendering Pipeline
3D Gaussian Splatting for Real-Time Radiance Field Rendering
gsplat: Open-Source Library for Gaussian Splatting
声明
本文仅作为个人学习记录,由AI辅助编写。