【Gaussian splatting系列学习】(三)

news2024/9/21 0:40:44

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.coloradmin.cn/o/2073126.html

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

相关文章

FPGA开发——在线调试工具Signal Tap的使用

一、简介 在我们进行FPGA进行开发时通常都会经历代码编写,仿真,下板验证等过程。使用FPGA进行开发的小伙伴都知道,在代码编写时往往花费不了太长的时间,下板验证更是。在开发中占绝大部分时间的是仿真,有时候编写代码只…

C++类和对象(下):初始化列表、explicit关键字、友元函数、友元类

文章目录 C类和对象9、初始化列表9.1构造函数体赋值9.2初始化列表9.3 explicit(显示)关键字 10、友元10.1友元函数10.2友元类 C类和对象 9、初始化列表 一个类的构造函数要初始化成员变量有两种方式,一种是构造函数体赋值,另一种…

【C++二分查找】2817. 限制条件下元素之间的最小绝对差

本文涉及的基础知识点 C二分查找 LeetCode2817. 限制条件下元素之间的最小绝对差 给你一个下标从 0 开始的整数数组 nums 和一个整数 x 。 请你找到数组中下标距离至少为 x 的两个元素的 差值绝对值 的 最小值 。 换言之,请你找到两个下标 i 和 j ,满…

python应用之内置hashlib库的哈希算法介绍

hashlib 是 Python 的一个内置模块,提供了像 SHA1, SHA256, MD5 等哈希算法。可以接受任意长度的字节数据作为输入,并输出一个固定长度的“哈希值”,通常用于校验数据的完整性。而且该算法是不可逆的,不能通过哈希值反算出原始数据…

zookeeper服务搭建

zookeeper服务搭建 前言1. 前置准备2. 下载和解压Zookeeper3. 配置环境变量4. 编辑Zookeeper配置文件5. 配置Zookeeper节点ID6. 配置好的Zookeeper分发到其他节点7. 启动Zookeeper集群参考博客 前言 Zookeeper是一个开源的分布式协调服务,主要用于解决分布式应用中的…

【Excal】OR 函数

语法: OR(判断条件1,判断条件2,判断体件3,****) 评优条件: 语文成绩高于90 数学成绩高于90 英语成绩高于85 物理成绩高于85 点击回车键 选中填充 回车 选中填充

echart legend 的使用及离开界面图表全局销毁

父组件 <template><AbnormalAlarmStatistics ref"abnormalAlarmStatistics" /> </template> <script setup> import {ref,reactive,computed,onMounted,getCurrentInstance,watch } from "vue";const { proxy } getCurrentInsta…

CentOS Docker搭建Mysql5.7集群

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

图解Redis五大数据类型

五种数据类型的不同之处&#xff0c;是value在存储时的形式不同。 hash类型 value类型是<key,value>键值对。如果发生hash冲突&#xff0c;用开放定址法解决&#xff0c;不拉链&#xff01; key值重复&#xff0c;则新值覆盖旧值 List类型 Set类型 与List的类似&…

嵌入式Keil工具【微库】和【标准库】的对比

我们在学习或者用单片机做开发的时候,输出信息以及打印调试基本都会有用的 printf 函数,那么,这个时候基本都会用到【微库】。 如果使用 Keil 软件,就会勾选配置中的微库(MicroLib),如下图: 同样,在IAR、 e2 studio等开发单片机的集成开发环境中,也有类似的配置选项。…

电脑远程监控桌面软件集锦|(2024全网优秀资源整理!)

电脑远程监控桌面软件在企业管理和个人应用中扮演着重要的角色。 这些工具可以帮助企业提升工作效率、保护数据安全&#xff0c;同时也能在个人使用时提供便利。 以下是几款优秀的电脑远程监控桌面软件及其主要功能介绍&#xff1a; 1中科安企 特点&#xff1a;一款备受企业…

2024年第十五届蓝桥杯图形化省赛真题分享包含答案

Scratch初级:8月24日9:30-11:00 Scratch中级:8月24日14:00-15:30 Python:8月25日9:30-11:00 C++:8月25日14:00-15:30 这次考了哪些内容呢,我们来大概看看(编程题没有答案,编程题有,大家可以评论群留言单选题的答案):

智能手机摄影的发展方向全面分析

智能手机摄影技术在过去十年间取得了长足的进步&#xff0c;成为许多消费者购买手机时的主要考量因素。随着硬件和软件技术的不断创新&#xff0c;手机摄影的能力越来越接近甚至在某些方面超越了传统相机。本文将从多个角度分析手机摄影的发展方向&#xff0c;包括硬件、软件、…

2024年【防爆电气】找解析及防爆电气模拟试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 防爆电气找解析考前必练&#xff01;安全生产模拟考试一点通每个月更新防爆电气模拟试题题目及答案&#xff01;多做几遍&#xff0c;其实通过防爆电气理论考试很简单。 1、【单选题】()电气设备没有防爆的外壳和保护…

IDEA中切换jdk的版本(环境配置)

一、问题 二、过程 IDEA切换jdk 电脑中切换jdk 如果改变之后&#xff0c;依然没有变化的情况&#xff0c;可以使用where java命令删除路径为“.\Oracle\Java\javapath\”下的java.exe、javac.exe等三个文件。

【TB作品】MSP430F149单片机,数字时钟万年历程序,滚动显示特效

一、 万年历 任务要求&#xff1a; 制作一个万年历&#xff0c;具有显示时间、日期、温度、湿度、闹钟功能。 1、OLED显示屏上显示日期和时钟&#xff08;显示到秒&#xff0c;时间可走动&#xff09;&#xff1b;&#xff08;20分&#xff09; 2、通过开发板上的温度传感器采集…

Java小白一文简单普及Java中的String关键字

String类 String对象用于保存字符串&#xff0c;也就是一组字符序列 字符串常量对象是用双引号括起的字符序列&#xff0c;例如 “Kerwin” 字符串的字符使用Unicode字符编码&#xff0c;一个字符&#xff08;不区分字母还是汉字&#xff09;占两个字节 String类较常用构造方…

婚宴座位号怎样查?

在婚宴的温馨氛围中&#xff0c;快速准确地找到座位是每位宾客的期待。本文将带您领略如何通过一系列简单步骤&#xff0c;在电脑端和小程序中查询座位号&#xff0c;确保每位宾客都能享受到这场庆典的每一个细节。 第一章&#xff1a;电脑端查询信息上传 1. 官网登录&#x…

基于状态机实现的按键释放、消抖、单击、双击、长按等功能

状态机理论&#xff1a; 每次只能执行状态机中的一个状态 注意&#xff1a;状态转移时有时会根据需要发生不同的动作(可根据不同条件发生不同的动作)&#xff0c;此处的发生动作指返回按键码值&#xff08;代表那个按键的对应状态&#xff09; 如果是在长按状态在向释放状态迁…

分享一个基于python的内蒙古旅游景点数据分析与采集系统(源码、调试、LW、开题、PPT)

&#x1f495;&#x1f495;作者&#xff1a;计算机源码社 &#x1f495;&#x1f495;个人简介&#xff1a;本人 八年开发经验&#xff0c;擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等&#xff0c;大家有这一块的问题可以一起交流&…