3DGS学习(四)—— 快速高斯光栅化

快速高斯光栅化

参考文章:https://zhuanlan.zhihu.com/p/678877999

原论文:EWA Splatting

确定视锥体

确定相机位姿进一步确定视锥体,有利于剔除视锥体以外的部分,防止出现浪费的计算。

3D -> 2D (splatting)

  • 该过程将3D空间内的3D椭球投影到2D空间中进行渲染,该过程主要对表示椭球的协方差矩阵乘上变换矩阵加以实现。类比到现实生活中,就好像将雪球用力掷向墙壁,啪的一声绽开,在墙上留下了一个中心密集,向四周逐渐变浅变稀疏的雪块。

  • 从3d协方差矩阵 Σ \Sigma Σ 到2d协方差矩阵 Σ ′ {\Sigma}^{\prime} Σ′ 的变换公式为
    Σ ′ = J k M Σ M T J k T \mathbf{\Sigma}^{\prime}=\mathbf{J}_k\mathbf{M}\mathbf{\Sigma}\mathbf{M}^T\mathbf{J}_k^T Σ′=JkMΣMTJkT

    具体推导过程可以参考文章:3d gaussian splatting 中的数学推导

  • 从像素级别的操作来理解渲染过程。

    对于给定坐标 x x x的像素点,我们可以通过视图变化计算出所有在该位置重叠的高斯的深度并排序,最后对排列好的高斯进行alpha融合,返回该像素点最后的颜色值。
    C = ∑ i ∈ N c i α i ′ ∏ j = 1 i − 1 ( 1 − α j ′ ) C=\sum_{i\in\mathcal{N}}c_i\alpha_i^{\prime}\prod j=1^{i-1}\left(1-\alpha_j^{\prime}\right) C=i∈N∑ciαi′∏j=1i−1(1−αj′)

    由于排序过程难以并行化,3dgs使用一些措施来提高效率。

  • 使用瓦片(图像块)来代替像素级别的精度,每个块(tiles)包含16*16个像素。对于覆盖多个块的高斯,作者复制高斯并为他们分配标识符。

  • 每个块独立排序并计算颜色值,该过程可并行执行。

    图片摘自知乎@目难忘

相关推荐
大橘20 分钟前
【qml-11】Quick3D实现机器人欧拉旋转、拖动视角
qt·3d·机器人·qml
DisonTangor21 分钟前
腾讯混元3D团队开源 P3-SAM: 原生3D零件分割
人工智能·3d·开源·aigc
前路不黑暗@1 小时前
Java:代码块
java·开发语言·经验分享·笔记·python·学习·学习方法
序属秋秋秋1 小时前
《C++进阶之C++11》【可变参数模板 + emplace接口 + 新的类功能】
c++·笔记·学习·c++11·可变参数模板·emplace系列接口
Dovis(誓平步青云)2 小时前
《Linux 构建工具核心:make 命令、进度条、Gitee》
linux·运维·学习
XH1.4 小时前
学习HAL库STM32F103C8T6(SPI、门禁密码实验)
stm32·嵌入式硬件·学习
Da Da 泓8 小时前
LinkedList模拟实现
java·开发语言·数据结构·学习·算法
Larry_Yanan8 小时前
QML学习笔记(十五)QML的信号处理器(MouseArea)
c++·笔记·qt·学习·ui
Larry_Yanan10 小时前
QML学习笔记(十七)QML的属性变更信号
javascript·c++·笔记·qt·学习·ui
eqwaak010 小时前
Flask实战指南:从基础到高阶的完整开发流程
开发语言·后端·python·学习·flask