【论文笔记】GS++: Error Analyzing and Optimal Gaussian Splatting

原文链接:https://browse.arxiv.org/abs/2402.00752

1. 引言

许多基于3D高斯溅射(3D-GS)的方法针对稀疏视图场景的鲁棒性、性能和存储效率进行增强,但没有专门处理高斯投影的误差。

3D-GS以一组图像和相机通过SfM校准产生的点云为输入,建立3D高斯来表达场景。渲染时,3D高斯会通过投影函数 ϕ \phi ϕ投影到图像平面( z = 1 z=1 z=1平面),以进行可微栅格化。

但是,尽管高斯函数经过卷积或仿射变换可以保留高斯属性,经过投影变换却不一定。因此,3D高斯溅射使用了局部仿射近似,即使用二阶泰勒展开近似投影函数,这会引入误差,从而在渲染图像中产生伪影。本文通过对泰勒余项的分析,揭示了3D高斯溅射误差与高斯均值的关系;同时,通过确定误差函数的极值,找到了使误差最小的条件。

本文还通过对误差函数的极值分析,提出最优投影方法,沿高斯均值与相机中心投影,投影平面与该线垂直。与直接将3D高斯投影到 z = 1 z=1 z=1平面相比,本文的投影方法误差更小,且也可实现真实且实时的渲染。

3. 准备知识

设有3D高斯函数 G G G,由均值 μ \mu μ和协方差矩阵 Σ \Sigma Σ表达:
G μ , Σ ( x ) = exp ⁡ ( − 1 / 2 ( x − μ ) T Σ − 1 ( x − μ ) ) G_{\mu,\Sigma}(x)=\exp(-1/2(x-\mu)^T\Sigma^{-1}(x-\mu)) Gμ,Σ(x)=exp(1/2(xμ)TΣ1(xμ))

在混合过程中,高斯会乘以不透明度 α \alpha α

通过视图变换矩阵 W W W,将高斯函数从世界坐标系变换到相机坐标系:
G ′ ( x ) = exp ⁡ ( − 1 / 2 ( W x − W μ ) T ( W Σ W T ) − 1 ( W x − W μ ) ) (1) G'(x)=\exp(-1/2(Wx-W\mu)^T(W\Sigma W^T)^{-1}(Wx-W\mu))\tag1 G(x)=exp(1/2(WxWμ)T(WΣWT)1(WxWμ))(1)

x ′ = W x , μ ′ = W μ , Σ ′ = W Σ W T x'=Wx,\mu'=W\mu,\Sigma'=W\Sigma W^T x=Wx,μ=Wμ,Σ=WΣWT,可得:
G ′ ( x ′ ) = exp ⁡ ( − 1 / 2 ( x ′ − μ ′ ) T Σ ′ − 1 ( x ′ − μ ′ ) ) G'(x')=\exp(-1/2(x'-\mu')^T\Sigma'^{-1}(x'-\mu')) G(x)=exp(1/2(xμ)TΣ1(xμ))

x 0 = [ 0 , 0 , 1 ] T x_0=[0,0,1]^T x0=[0,0,1]T z = 1 z=1 z=1的投影平面可以记为:
x 0 T ⋅ ( x ′ − x 0 ) = 0 x_0^T\cdot(x'-x_0)=0 x0T(xx0)=0

可以据此获取投影函数 ϕ \phi ϕ
ϕ ( x ′ ) = x ′ ( x 0 T x ′ ) − 1 ( x 0 T x 0 ) = x ′ ( x 0 T x ′ ) − 1 \phi(x')=x'(x_0^Tx')^{-1}(x_0^Tx_0)=x'(x_0^Tx')^{-1} ϕ(x)=x(x0Tx)1(x0Tx0)=x(x0Tx)1

可以使用泰勒展开到一阶:
ϕ ( x ′ ) = ϕ ( μ ′ ) + ∂ ϕ ∂ x ′ ( μ ′ ) ( x ′ − μ ′ ) + R 1 ( x ′ ) \phi(x')=\phi(\mu')+\frac{\partial\phi}{\partial x'}(\mu')(x'-\mu')+R_1(x') ϕ(x)=ϕ(μ)+xϕ(μ)(xμ)+R1(x)

其中 ∂ ϕ ∂ x ′ ( μ ′ ) \frac{\partial\phi}{\partial x'}(\mu') xϕ(μ)为投影变换的仿射近似,记为 J J J。不考虑泰勒余项时,可按照(1)式类似推导得到投影的2D高斯:
G 2 D ( x ′ ) = exp ⁡ ( − 1 / 2 ( J x ′ − J μ ′ ) T ( J Σ J T ) − 1 ( J x ′ − J μ ′ ) ) ≈ exp ⁡ ( − 1 / 2 ( ϕ ( x ′ ) − ϕ ( μ ′ ) ) T ( J Σ J T ) − 1 ( ϕ ( x ′ ) − ϕ ( μ ′ ) ) ) \begin{aligned}G_{2D}(x')&=\exp(-1/2(Jx'-J\mu')^T(J\Sigma J^T)^{-1}(Jx'-J\mu'))\\ &\approx\exp(-1/2(\phi(x')-\phi(\mu'))^T(J\Sigma J^T)^{-1}(\phi(x')-\phi(\mu')))\end{aligned} G2D(x)=exp(1/2(JxJμ)T(JΣJT)1(JxJμ))exp(1/2(ϕ(x)ϕ(μ))T(JΣJT)1(ϕ(x)ϕ(μ)))

注意 J J J的秩为2, J Σ J T J\Sigma J^T JΣJT的逆跳过第三维度求取。记 x 2 D = ϕ ( x ′ ) , μ 2 D = ϕ ( μ ′ ) , Σ 2 D = J Σ ′ J T x_{2D}=\phi(x'),\mu_{2D}=\phi(\mu'),\Sigma_{2D}=J\Sigma' J^T x2D=ϕ(x),μ2D=ϕ(μ),Σ2D=JΣJT,则投影的2D高斯可写成:
G 2 D ( x 2 D ) = exp ⁡ ( − 1 / 2 ( x 2 D − μ 2 D ) T Σ 2 D − 1 ( x 2 D − μ 2 D ) ) G_{2D}(x_{2D})=\exp(-1/2(x_{2D}-\mu_{2D})^T\Sigma_{2D}^{-1}(x_{2D}-\mu_{2D})) G2D(x2D)=exp(1/2(x2Dμ2D)TΣ2D1(x2Dμ2D))

4. 局部仿射近似误差

该部分推导见原文。

局部仿射近似误差由泰勒余项决定。可知该余项向量与随机变量 x ′ x' x和高斯均值 μ ′ \mu' μ相关。可计算其F-范数的平方,并计算其关于 x ′ x' x的期望,得到关于 μ ′ \mu' μ的误差函数 ϵ \epsilon ϵ
在这里插入图片描述
然后,可以证明 x ′ x' x μ ′ \mu' μ在单位球面上的投影 再投影到投影平面上(注意这个投影不是正交投影)时,得到的结果与直接将 x ′ x' x μ ′ \mu' μ投影到投影平面上相同,即 ( ϕ ∘ π ) ( x ′ ) = ϕ ( x ′ ) (\phi\circ\pi)(x')=\phi(x') (ϕπ)(x)=ϕ(x)。计算球面坐标,带入误差函数的表达式,可计算得到,当 x 0 x_0 x0 μ ′ \mu' μ在球面上的投影重合时,误差函数取得极值。

可视化误差函数发现,极值附近的较大区域,误差函数值变化不大,但靠近积分界限时误差急剧变大。因此,使用局部仿射近似的3D-GS在多数情况下能高质量地合成新视图,但对于离平面中心(相机中心在投影面上的投影点)远的高斯,会有大误差,从而导致伪影。

5. 最优高斯溅射

5.1 最优投影

在这里插入图片描述
本文将各3D高斯投影到不同的平面(高斯均值的与相机中心连线的垂直平面)上,以保证投影误差最小。投影平面与单位球相切,为:
x μ T ⋅ ( x ′ − x μ ) = 0 x^{\mu T}\cdot(x'-x^{\mu})=0 xμT(xxμ)=0

其中 x μ = π ( μ ′ ) = μ ′ ( μ ′ T μ ′ ) − 1 / 2 x^\mu=\pi(\mu')=\mu'(\mu'^T\mu')^{-1/2} xμ=π(μ)=μ(μTμ)1/2。最优投影函数为:
ϕ μ ( x ′ ) = x ′ ( x μ T x ′ ) − 1 \phi^\mu(x')=x'(x^{\mu T}x')^{-1} ϕμ(x)=x(xμTx)1

对应的局部仿射近似雅可比矩阵 J μ J^\mu Jμ可用 μ ′ \mu' μ的坐标表达(见原文)。

5.2 基于单位球的栅格化

由于投影不位于图像平面上,需要使用基于单位球的栅格化来生成图像。

具体来说,对图像像素 ( u , v ) (u,v) (u,v),类似NeRF投射射线,然后确定单位球上的哪些平面高斯与射线相交:
x 2 D μ = ϕ μ ( [ ( u − c x ) / f x , ( v − c y ) / f y , 1 ] T ) x^\mu_{2D}=\phi^\mu([(u-c_x)/f_x,(v-c_y)/f_y,1]^T) x2Dμ=ϕμ([(ucx)/fx,(vcy)/fy,1]T)

然后使用 x 2 D μ x^\mu_{2D} x2Dμ查询高斯函数值,进行alpha混合,获取颜色:
C ( u , v ) = ∑ z = z near z far SH ( μ z ) α ( u , v , μ z ) ∏ k = z near z ( 1 − α ( u , v , μ k ) ) C(u,v)=\sum_{z=z_\text{near}}^{z_\text{far}}\text{SH}(\mu_z)\alpha(u,v,\mu_z)\prod_{k=z_\text{near}}^{z}(1-\alpha(u,v,\mu_k)) C(u,v)=z=znearzfarSH(μz)α(u,v,μz)k=znearz(1α(u,v,μk))

其中 α ( u , v , μ ) = α μ ⋅ G 2 D μ ( x 2 D μ ) \alpha(u,v,\mu)=\alpha_\mu\cdot G^\mu_{2D}(x_{2D}^\mu) α(u,v,μ)=αμG2Dμ(x2Dμ) α μ \alpha_\mu αμ为中心为 μ \mu μ的高斯的不透明度, SH ( μ ) \text{SH}(\mu) SH(μ)为中心为 μ \mu μ的高斯的球面谐波, μ z \mu_z μz表示深度为 z z z的高斯中心。

6. 实验

6.4 结果

定量结果:与MipNeRF360相比,本文方法在MipNeRF360数据集下PSNR性能略低,但速度远远更快。这是因为MipNeRF360没有使用显著的近似。但总的来说,与3D-GS和MipNeRF360相比,本文方法能保证实时性,并取得性能提升。

定性结果:与3D-GS相比,本文方法可以减少伪影产生并保留更多细节。

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

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

相关文章

LabVIEW电能质量监测系统

LabVIEW电能质量监测系统 随着全球能源需求的增加以及能源危机的加剧,对电能的有效利用和质量监控变得越来越重要。特别是在电力系统中,电能质量的监测对于保证电力设备的稳定运行和提高能源利用效率具有重要意义。采用LabVIEW软件开发了一套高效的电能…

使用PHPStudy搭建Cloudreve网盘服务

文章目录 1、前言2、本地网站搭建2.1 环境使用2.2 支持组件选择2.3 网页安装2.4 测试和使用2.5 问题解决 3、本地网页发布3.1 cpolar云端设置3.2 cpolar本地设置 4、公网访问测试5、结语 1、前言 自云存储概念兴起已经有段时间了,各互联网大厂也纷纷加入战局&#…

充电桩项目实战:短信功能 分布式限流

你好,我是田哥 最近,我在对充电桩项目进行微服务升级中,肯定会遇到一些问题 前面分享了:充电桩项目实战:搞定多数据源! 题外话:如果想年后找到更好的工作,推荐看这篇文章&#xff1a…

高端酒店宴会包间桌位预定小程序h5开源版开发

高端酒店宴会包间桌位预定小程序h5开源版开发 餐厅预定桌位系统,支持多店切换预约,提供全部前后台无加密源代码和数据库 功能特性 为你介绍餐厅预订系统的功能特性 多端适配 采用uniapp,目前适配小程序和微信H5 多店铺 支持多店铺预定 付费和免费预定 支…

『运维备忘录』之 Systemd 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

11月最新版付费进群源码自动定位+开源

Nginx 1.22.1 php5.6 mysql5.6 数据库配置&#xff1a;/config/database.php 配置后台域名&#xff1a;config/extra/ip.php 设置伪静态thinkphp 后台账号88886666 密码12345 代码结构 关键代码剖析 <?php // ----------------------------------------------------…

continue语句

一、continue语句 1、continue语句介绍 2、continue语句流程图 3、快速入门案例 4、continue语句的标签

毫米波雷达在汽车领域的原理、优势和未来趋势

1 毫米波雷达的原理 汽车引入毫米波雷达最初主要是为了实现盲点监测和定距巡航。毫米波实质上是电磁波&#xff0c;其频段位于无线电和可见光、红外线之间&#xff0c;频率范围为10GHz-200GHz。工作原理类似一般雷达&#xff0c;通过发射无线电波并接收回波&#xff0c;利用障…

理论与实战:一篇看懂Python词云

实现原理 导入一篇txt文档&#xff0c;使用jieba库对文档中的文字进行分词&#xff0c;计算各个词汇出现的频率&#xff0c;使用wordcloud库按照词汇频率的大小生成词云。 注意&#xff0c;不是使用wordcloud.generate()&#xff0c;这个方法没有按照词汇频率的方式实现词云 停…

Linux 驱动开发基础知识——总线设备驱动模型(七)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;Vir2021GKBS &#x1f43c;本文由…

极速搭建幻兽帕鲁私服,叫上好友春节假期一起联机畅玩帕鲁

文章目录 前言幻兽帕鲁私服详细部署教程查看服务器开始游戏自定义游戏参数配置 前言 行业资讯 《幻兽帕鲁》的火爆对开发商 Pocketpair 来说&#xff0c;代价是巨大的。该游戏的成功让首席执行官沟部拓郎最近在推特上表示&#xff0c;他可能因服务器运营费用而面临破产。据他透…

山西电力市场日前价格预测【2024-02-04】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-02-04&#xff09;山西电力市场全天平均日前电价为367.56元/MWh。其中&#xff0c;最高日前电价为441.08元/MWh&#xff0c;预计出现在18:30。最低日前电价为324.52元/MWh&#xff0c;预计…

代码混淆技术综述与优化方法

摘要 本文介绍了代码混淆的概念和目的&#xff0c;并提供了Python代码混淆的宏观思路。同时&#xff0c;还介绍了一种在线网站混淆Python代码的方法&#xff0c;并给出了混淆前后的示例代码。 引言 在当今信息时代&#xff0c;软件代码的保护显得尤为重要。代码混淆是一种常…

【数位dp】【动态规划】【KMP】1397. 找到所有好字符串

作者推荐 【动态规划】【字符串】【表达式】2019. 解出数学表达式的学生分数 本文涉及知识点 动态规划汇总 LeetCode1397. 找到所有好字符串 给你两个长度为 n 的字符串 s1 和 s2 &#xff0c;以及一个字符串 evil 。请你返回 好字符串 的数目。 好字符串 的定义为&#x…

装饰你的APP:使用Lottie-Android创建动画效果

装饰你的APP&#xff1a;使用Lottie-Android创建动画效果 1. Lottie-Android简介 Lottie-Android是一个强大的开源库&#xff0c;由Airbnb开发&#xff0c;旨在帮助开发者轻松地在Android应用中添加高质量的动画效果。它基于Adobe After Effects软件中的Bodymovin插件&#x…

【Simulink系列】——动态系统仿真 之 离散系统线性离散系统

一、离散系统定义 离散系统是指系统的输入与输出仅在离散的时间上取值&#xff0c;而且离散的时间具有相同的时间间隔。满足下列条件&#xff1a; ①系统&#xff08;的输入输出&#xff09;每隔固定时间间隔才更新一次。固定时间间隔称为采样时间。 ②系统的输出依赖当前的…

2023年09月CCF-GESP编程能力等级认证Python编程三级真题解析

Python等级认证GESP(1~6级)全部真题・点这里 一、单选题(共15题,共30分) 第1题 人们所使用的手机上安装的App通常指的是( )。 A:一款操作系统 B:一款应用软件 C:一种通话设备 D:以上都不对 答案:B 第2题 下列流程图的输出结果是( )。 A:60 B:20 C:5 D…

倾斜摄影轻量化,这样才规范!

自然资源部发布了《倾斜数字摄影测量技术规程》等17项行业标准报批稿公示&#xff0c;其中高频出现的倾斜摄影技术&#xff0c;重回大众视野。 倾斜摄影技术是国际测绘领域近些年发展起来的一项高新技术&#xff0c;它颠覆了以往正射影像只能从垂直角度拍摄的局限&#xff0c;通…

栈--数据结构

初始化栈、入栈、出栈 栈&#xff1a;只允许在一端进行插入或删除操作的线性表 栈顶&#xff08;Top&#xff09; 代码 #include <stdio.h>#define MaxSize 50 typedef int ElemType; typedef struct {ElemType data[MaxSize];//数组int top;//始终指向栈顶的一个变量…

SparkStreaming---入门

文章目录 1.SparkStreaming简介1.1 流处理和批处理1.2 实时和离线1.3 SparkStreaming是什么1.4 SparkStreaming架构图 2.背压机制3.DStream案例实操 1.SparkStreaming简介 1.1 流处理和批处理 流处理和批处理是两种不同的数据处理方式&#xff0c;它们在处理数据的方式和特点…