【Gaussian splatting系列学习】(三)

3DGS系列(一)
3DGS系列(二)
3DGS系列(三)

3D高斯球的颜色

在这里插入图片描述

基函数:

  • 任何一个周期性函数可以分解为正弦和余弦的线性组合

球谐函数:

  • 任何一个球面坐标的函数可以用多个球谐函数来近似
    极坐标, ( θ , ϕ ) (\theta, \phi) (θ,ϕ)

f ( t ) ≈ ∑ l ∑ m = − l l c l m y l m ( θ , ϕ ) f(t)\approx \sum_l\sum_{m=-l}^{l}\ c_l^my_l^m(\theta,\phi) f(t)lm=ll clmylm(θ,ϕ)

c是系数,y是基函数
l 是阶数,0、1、2、3阶。

  • 对方向的函数
    在这里插入图片描述

为什么球谐函数能够更好地表达颜色?

原因:

  • 直觉上:数量多、维度高、存储信息更多
  • CG: 环境贴图
    • 常用的有球形环境贴图
      在渲染中:
  • 用球谐函数来重建亮度
  • 1阶到6阶
  • 当球谐函数的阶数越高,还原的效果越好

相关代码:
在这里插入图片描述

3DGS为什么效率高?

足迹合成:

直观上:

  • 进行α-blending
sheets = []
for g in gaussians:sheets.append(g.footprint)
alpha_blending(sheets)

实际上:
G.footprint 依然对每个像素进行着色

footprint = np.zeros((H,W,3))
for i in range(H):for j in range(W):footprint[i,j]=...

在这里插入图片描述
在这里插入图片描述

像素的颜色

仍沿用NeRF中的计算公式:

C = T i α i c i = ∑ i = 1 N T i ( 1 − e − σ i δ i ) c i , w h e r e T i = e − ∑ j = 1 i − 1 σ j δ j C=T_i\alpha_ic_i=\sum_{i=1}^{N}T_i(1-e^{-\sigma_i\delta_i})c_i, where \ T_i=e^{-\sum_{j=1}^{i-1}\sigma_j\delta_j} C=Tiαici=i=1NTi(1eσiδi)ci,where Ti=ej=1i1σjδj

对光线上粒子颜色进行求和:

  • T(s) :在s点之前光线没有被阻碍的概览
  • σ ( s ) \sigma(s) σ(s)“”:在s点处,光线碰击粒子(光线被粒子阻碍)的概率密度
  • C ( s ) C(s) C(s):在s点出粒子发出的颜色

特别地:

  • splatting 没有找粒子的过程
  • 需要对高斯球按照深度z排序

GPU:

  • CUDA编程splatting部分
  • 一个线程负责一个像素

分区:

  • 将整张图分成16x16块
  • 对每个高斯划分区块
  • 这样GPU的每个block负责一个区
  • block内可以共享内存

如何进行参数估计?

机器学习部分

参数:

  • 假设初始点云有10000个点
  • 每个点膨胀成3D高斯椭球
  • 每个椭球的参数包括:
    • 中心点位置 : (x, y, z)
    • 协方差矩阵:R, S
    • 球谐函数系数:16*3
    • 透明度:α
      在这里插入图片描述

关于初始化的3D高斯
椭球的初始形状:

  • 是一个球
  • 使用knn法,找到3近邻
  • 半径是与3近邻的距离的平均

算法:

  • 渲染 + SGD
    • L = ( 1 − λ ) L 1 + λ L D − S S I M , λ = 0.2 L = (1- \lambda ) L_1+\lambda L_{D-SSIM},\lambda=0.2 L=(1λ)L1+λLDSSIM,λ=0.2

问题:
强依赖于SFM生成的初始点云

方案:

  • 打补丁(Adaptive Control of Gaussians)
    • 太大的拆分
    • 太小的合并
    • 存在感太低的剔除

Reference:B站UP主 SY_007 视频讲解内容


A u t h o r : C h i e r Author: Chier Author:Chier

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/52455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏引擎详解——图片

图片 图片的格式 图片文件格式pngjpg 纹理压缩格式ETC1/2PVRTCASTC 图片的属性 图片属性解释分辨率宽高像素值(pt),如:1024*1024位深度用来存储像素颜色的值,如RGBA8888,红黄蓝透明度4个维度每个8bit&…

CentOS Docker搭建Mysql5.7集群

MySQL Replication MySQL提供了Replication功能,可以实现将一个数据库的数据同步到多台其他数据库。前者通常称之为主库(master),后者则被称从库(slave)。MySQL复制过程采用异步方式,但延时非常…

初始redis:Zset有序集合

Set作为集合,有两个特点:唯一且无序。 Zset是有序集合,在保证唯一的情况下,是根据什么来排序的呢?排序的规则是什么? Zset中的member引入了一个属性,分数(score)&#…

立式报工台助力MES系统打造智能硬件解决方案

信息化与自动化的深度结合,使得企业在生产效率、质量控制以及资源管理等方面得以大幅提升。制造执行系统MES作为连接企业管理层与生产现场的重要桥梁,正在愈发得到重视。为了进一步强化MES系统的功能与应用,立式报工台作为一种新兴的智能硬件…

适用于 Windows 10 的最佳数据恢复免费软件是什么?

有没有适用于 Windows 10 的真正数据恢复免费软件?这篇文章将讨论这个话题,并分享什么是适用于 Windows 10/11/8.1/8/7/Vista/XP 的最佳数据恢复工具。 有没有适用于 Windows 10 的真正免费的数据恢复软件? 丢失重要数据,无论是由…

RISC-V vector(1) --- vector的引入与register说明

Vector相较于SIMD的优势 这两种实现方案,都是为了实现数据级并行性(存在大量的数据可供程序同时计算); SIMD(Single Instruction Multiple Data) SIMD是将数据宽度和操作类型,都放在了指令中&a…

一道xss题目--intigriti-0422-XSS-Challenge-Write-up

目录 进入挑战 js代码 代码分析 构造payload ​编辑 结果 进入挑战 Intigriti April Challenge题目地址 打开题目后&#xff0c;找到对应页面的js代码&#xff0c;寻找一下我们用户可控的点 js代码 <!DOCTYPE html> <html lang"en"><head> …

[GKCTF 2021]excel 骚操作1

使用010editor打开发现zip头&#xff0c;改后缀名xlsx为zip&#xff0c;解压&#xff0c;在D:\python\flag (1)\xl\worksheets目录下有个sheet1.xml就是ecxel的sheet1的主要样式style 看到很多c r"B2" s"1&#xff0c;只是单元格数据不同而已 &#xff0c;还有的…

Awesome-LLMs-for-Video-Understanding - 基于大型语言模型的视频理解研究

Awesome-LLMs-for-Video-Understanding 是 基于大型语言模型的视频理解研究 github : https://github.com/yunlong10/Awesome-LLMs-for-Video-Understandingpaper&#xff1a;Video Understanding with Large Language Models: A Survey https://arxiv.org/pdf/2312.17432 视频…

C++20中的约束与概念

类模板、函数模板和非模板函数(通常是类模板的成员)可能与约束(constraint)相关联&#xff0c;该约束指定对模板参数的要求(requirements)&#xff0c;可用于选择最合适的函数重载和模板特化。约束是使用模板时需要通过模板参数满足的条件或要求。这些要求的命名集合称为概念(c…

Hadoop 分布式集群搭建

HDFS分布式集群搭建 一、部署规划1.1 进程规划1.2 软件规划1.3 用户规划1.4 目录规划 二、 搭建HDFS 分布式集群2.1 HDFS 集群配置2.1.1 下载安装 Hadoop2.1.2 修改 hadoop-env.sh 配置文件2.1.3 修改 core-site.xml 配置文件2.1.4 修改 hdfs-site.xml 配置文件2.1.5 修改 slav…

程序员:全栈的痛你不知道

上周一个同事直接对我开喷&#xff0c;骂我无能&#xff0c;说&#xff1a;“你怎么一个人就搞不定所有系统呢&#xff1f;”&#xff0c;我半支烟纵横IT江湖14余年&#xff0c;还是第一次被人这么嫌弃。 事情缘由 某公司的业务线特别多&#xff0c;有个业务线前后端项目共计…

ComfyUI IPAdapter plus的模型应该怎么装-免费版-2024.8.25

&#x1f386;背景 ipadapter相关的节点大家应该都不陌生&#xff0c;具体是做什么的就不详细介绍了&#xff0c;但是还是有很多新入门的朋友不太了解这个节点相关的这一堆模型到底应该怎么安装。这里就借着官方节点的介绍来大概讲下这个话题。 涉及到的节点源地址&#xff1…

【Qt】Qt系统 | Qt事件| 鼠标事件

文章目录 鼠标事件鼠标点击事件鼠标释放事件鼠标双击事件鼠标移动事件 滚轮事件 在 Qt 中&#xff0c;鼠标事件是用 QMouseEvent 实现的。当在窗口中按下鼠标或者移动鼠标时&#xff0c;都会产生鼠标事件 鼠标事件 鼠标点击事件 鼠标按下时通过 虚函数 mousePressEvent() 来…

线程安全是什么问题?如何引起?死锁是啥?如何解决?

目录 一、什么是线程不安全&#xff1f; 二、如何引起的线程安全&#xff1f;怎么解决&#xff1f; 1&#xff09;CPU调度执行是随机的&#xff0c;抢占式执行&#xff08;根本原因&#xff0c;硬件层面咱们无法干预&#xff09; 2&#xff09;多个线程&#xff0c;对同一变…

【Hot100】LeetCode—105. 从前序与中序遍历序列构造二叉树

目录 1- 思路递归 2- 实现⭐105. 从前序与中序遍历序列构造二叉树——题解思路 3- ACM 实现 原题连接&#xff1a;105. 从前序与中序遍历序列构造二叉树 1- 思路 递归 前序&#xff1a;中左右中序&#xff1a;左中右 让前序的第一个元素作为中序的分割点 分割思路 1- 递归…

做个实验

做个实验 #include <bits/stdc.h> using namespace std; #define int long long #define ll __int128_t #define ar array<int, 2> #define arr array<int, 3> int n, m, k, inf 1LL << 61, mod 998244353;// 1e97; const int N 5e5 50;void sol…

使用gitee存储项目

gitee地址&#xff1a;Gitee - 基于 Git 的代码托管和研发协作平台 创建gitee远程仓库 将远程仓库内容拉取到本地仓库 复制下面这个地址 通过小乌龟便捷推送拉取代码&#xff1a;https://blog.csdn.net/m0_65520060/article/details/140091437

基于51单片机的百叶窗proteus仿真

地址&#xff1a;https://pan.baidu.com/s/19M6jeTIHJcyDBGNx4H9nTA 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C52/AT89C51是一款经典的8位单片机&#xff0c;是意法半导体&#xff08;STMicroelectron…

RabbitMQ的核心概念

RabbitMQ是一个消息中间件&#xff0c;也是一个生产者消费者模型&#xff0c;负责接收&#xff0c;存储和转发消息。 核心概念 Producer 生产者&#xff0c;是RabbitMQ Server的客户端&#xff0c;向RabbitMQ发送消息。 Consumer 消费者&#xff0c;是RabbitMQ Server的客…