MeshGS: Adaptive Mesh-Aligned GaussianSplatting for High-Quality Rendering 论文解读

目录

一、概述

二、相关工作

1、神经渲染

2、基于Mesh的渲染

3、基于点的渲染和高斯溅射

三、前置知识

1、SDF

2、Marching Cubes算法

四、MeshGS

1、初始化Mesh网格

2、基于Mesh的GS溅射

3、损失函数


一、概述

        提出一种基于距离的高斯splatting,并且将高斯splatting和网格表面相结合,消除高斯splatting中对渲染毫无贡献的冗余。对于高斯splats和mesh网格间的距离区分为紧密束缚和松弛束缚,并对两类方法采用不同的训练方法,对紧密束缚采取几何正则化,松弛束缚采用图像监督。该方法超越了基于mesh网格的渲染技术,且相比原始的3DGS的splat个数少了30%。

(1)提出了一种新的基于mesh网格的GS splatting方法,将GS splats与三角形mesh网格相结合,提出了一种新的方法来初始化和训练在三角mesh网格下的GS splats。

(2)使用两种高斯splats和mesh网格间的距离来区分,并引入不同的训练策略,适应不同的渲染需求。

二、相关工作

1、神经渲染

        NeRF考虑使用MLP来编码场景,并通过可微的体渲染来恢复RGB和密度。

        隐式神经曲面考虑将MLP映射到一个符号距离函数(SDF)或占用网格上,并使用可微体渲染来训练。

2、基于Mesh的渲染

        基于Mesh的渲染原理就是利用网格将3D模型分解为表面的多边形进行渲染。

        一方面将GS splats替代网格,来捕捉场景细节,SuGaR将GS splats紧密绑定在网格表面,MobileNeRF考虑优化三角面,并将不透明度和特征嵌入到纹理。另外VMesh考虑结合mesh和体渲染来实现高保真重建,LTM考虑使用网格抽取实现大场景下的重建。

        但大多数基于Mesh的渲染都存在网格伪影,所以该论文提出结合3DGS来突破这个挑战。

3、基于点的渲染和高斯溅射

        基于点的渲染旨在打破传统基于多边形网格渲染的技术。近期也提出关于点云渲染、球体渲染、可微分溅射等方法。

        3DGS通过3DGS splatting进行渲染,通过快速光栅化实现。

        SuGaR利用泊松重建,从3DGS提取mesh网格并绑定在三角形上进行渲染。

        GaussianAvatars和GaMeS考虑将3DGS紧密绑定网格上,用于渲染动态场景和人体模型。

        上述论文更加关注单一物体或人体模型,而该论文考虑对于大场景下的基于mesh的高斯splat技术,mesh结合3DGS可以保证渲染质量的前提下,获取更为精确的几何信息。

三、前置知识

1、SDF

        有符号距离场(Signed Distance Field,SDF)是一种用于表示3D几何的数据结构。SDF将3D空间中每一个点都映射为一个实数,对于表面内部的点,SDF值设为负数,表面的点,SDF值为0,表面外部的点,SDF值为正。

        SDF可以用来精确表示3D几何形状,通过微分渲染技术来优化。

2、Marching Cubes算法

        Marching Cubes算法是一种用于从3D几何数据中提取精确的3D网格表示,通过划分立方体网格,并根据每个立方体内的数据值确定等值面的位置和形状,从而生成三角网格表示的等值面。

        在论文中因为Marching Cubes算法会生成大量三角形,所以进行进一步的mesh decimation(网格简化),通过减少网格模型中的三角形数量,尽可能保持原始几何形状,也对于后续高分辨率网格和快速光栅化渲染相结合的效果更加显著,也提高了效率。

四、MeshGS

        MeshGS的网络框架分为两个部分:初始化Mesh网格,基于Mesh的GS溅射。

1、初始化Mesh网格

        对于以往的3DGS方法使用SfM技术生成的稀疏点云,该论文为了高质量渲染,考虑设计网格重建初始化3DGS,而非稀疏点云计算3DGS参数。

        首先输入多视图图像和相机位姿信息利用BakedSDF技术提取3DSDF几何表示,其中分别使用两个MLP,首先输入图像到一个MLP中提取有符号距离场f_{sdf},之后将f_{sdf}输入到第二个MLP中输出颜色场f_{color}。进一步将有符号距离场f_{sdf}与颜色场f_{color}结合得到变换后的f_{sdf}几何表示。

        之后利用Marching Cubes算法提取f_{sdf}几何表示,生成三角网格,并通过网格简化,减少网格模型中三角形数量,保持几何细节,提高渲染质量。

2、基于Mesh的GS溅射

        基于距离的3DGS溅射:给定一个mesh网格M,考虑在每个三角形网格的中心位置(视点P_i)初始化3D高斯溅射,利用对应视角的深度图来遮挡那些被网格表面遮挡的高斯溅射,且定义网格表面是完全不透明的。

        另外在训练过程中,评估所有训练视角中,永远不会被观察到的位于网格表面后方的冗余高斯溅射将它移除。

        考虑到真实场景中重建网格存在伪影,我们的目标要拆分成对待能够高度重建的让他表现的更好(紧密绑定),另外的部分保证减少伪影(松散绑定),所以将高斯溅射分为两类,一个是紧密绑定在网格表面的(高斯溅射和mesh网格之间距离小于阈值),另一个是松散绑定在网格表面的(高斯溅射和mesh网格之间距离大于阈值),紧密绑定的高斯溅射被平坦化并与网格表面对齐,而松散绑定的高斯溅射则用于覆盖网格失真的区域。

3、损失函数

        损失函数由四部分构成,图像损失,法线一致性损失,尺度损失,投影损失。

(1)图像损失L_{img}:在真实图像和渲染图像中采用L1损失和D-SSIM损失。

                                L_{img}=(1-\lambda_{img})L_1(\hat{I_i},I_i)+\lambda_{img}SSIM(\hat{I_i},I_i)

        其中,I_i是原始图像,\hat{I}_i是渲染图像,\lambda_{img}是权重系数。

(2)法线一致性损失L_{nc}:确保紧密绑定的高斯溅射的法线与对应网格面的法线保持一致,使得高斯溅射更加贴合网格表面。

                                        L_{nc}=\sum_{i \in G^t,f \in F}(1-n_i \cdot n_f)

        其中,n_i是紧密绑定的高斯溅射的法线,n_f是对应网格面的法线。

(3)尺度正则化损失L_{scale}:用于控制紧密绑定的高斯溅射,并将其与网格表面对齐的尺度阈值。正则化最小尺度和最大尺度\rho

                L_{scale}=\sum_{i \in G^t}(\lambda_{min}|min(s_1,s_2,s_3)|+\lambda_{max}|max(s_1,s_2,s_3)-\rho|)

(4)投影损失L_{proj}:用来确保紧密绑定的高斯溅射的中心P,保持在网格表面上的最近点s_i附近的损失函数。

        ​​​​​​​        s_i=P_i+((P_i-v_i)\cdot f_j) \cdot f_j

                L_{proj}=\sum_{i \in G^t}||s_i-P_i||_2

总损失:L=L_{img}+\lambda_{nc}L_{nc}+L_{scale}+\lambda_{proj}L_{proj}

参考论文:MeshGS: Adaptive Mesh-Aligned Gaussian Splatting for High-Quality Rendering

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

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

相关文章

【linux】进程状态与优先级

🔥个人主页:Quitecoder 🔥专栏:linux笔记仓 目录 01.Linux的进程状态02.僵尸进程-Z(zombie)处理僵尸进程 03.孤儿进程僵尸进程与孤儿进程的区别 04.进程的阻塞、挂起和运行运行状态(Running)阻塞状态&…

【RPC】RPC、gRPC 你给我往脑子里钻啊啊!

文章目录 一、RPC1. 什么是RPC2. 为什么要用RPC2.1 常见的RPC框架 3. RPC原理3.1 RPC调用流程3.2 如何做到透明化远程服务调用3.2.1 动态代理的概念3.2.2 实现 RPC 代理 3.2.3 序列化与反序列化3.2.4 服务注册与发现3.2.5 消息中的 requestID 二、gRPC1. gRPC1.1简介1.2 gRPC特…

PCL 点云配准 KD-ICP算法(精配准)

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 加载点云函数 2.1.2 构建KD树函数 2.1.3 KD-ICP配准函数 2.1.4 点云可视化函数 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接: PCL点云算法…

SpringAI快速上手

一、导入依赖 镜像&#xff08;导入maven依赖&#xff09; <repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>…

Lnmp(mysql分离)(nginx 1.13.6+mysql5.5+php5.3)环境一键搭建

Lnmp&#xff08;mysql分离&#xff09;&#xff08;nginx 1.13.6mysql5.5php5.3&#xff09;环境一键搭建 如果对运维课程感兴趣&#xff0c;可以在b站上、csdn或微信视频号 上搜索我的账号&#xff1a; 运维实战课程&#xff0c;可以关注我&#xff0c;学习更多免费的运维实…

当你不会介绍自己的产品和系统时,不妨看看大厂是如何做的

当你为不知如何介绍自己的产品和系统而困惑时&#xff0c;不妨把目光投向那些大厂。 大厂就像是璀璨的灯塔&#xff0c;为我们指引着方向。 他们在介绍产品和系统时&#xff0c;犹如技艺精湛的艺术家&#xff0c;以独特的方式勾勒出一幅幅令人惊艳的画卷。 他们用富有感染力…

股票金融市场中的tick,分钟,日线数据

在金融市场中&#xff0c;股票数据的分析对于投资者来说至关重要。股票数据可以根据时间粒度的不同&#xff0c;分为几种不同的类型&#xff0c;包括Tick数据、分钟数据和日线数据。下面将详细介绍这些数据类型&#xff0c;并对比它们之间的差别。 Tick数据 Tick数据&#xf…

详述python的列表、元组、字典、集合的基本语法及其函数

目录 列表: 列表的两种创建方式&#xff1a; 列表的删除&#xff1a; 列表的三种遍历&#xff1a; 列表的基础函数&#xff1a; 列表排序的两种方式&#xff1a; 列表生成式的语法结构&#xff1a; 二维列表的遍历&#xff1a; 元组&#xff1a; 元组的创建&#xff1…

Html 标题加图标

每个网页选项卡都有一个图标&#xff1a; <meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>主页</title><link rel"icon" href"images/记事本.png&…

Spring Boot框架下JavaWeb在线考试系统的创新实现

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

计算机毕业设计 | SpringBoot大型旅游网站 旅行后台管理系统(附源码)

1&#xff0c; 概述 1.1 项目背景 随着互联网技术的快速发展和普及&#xff0c;旅游行业逐渐转向线上&#xff0c;越来越多的游客选择在线预订旅游产品。传统的线下旅行社模式已不能满足市场需求&#xff0c;因此&#xff0c;开发一个高效、便捷的旅游网站成为行业的迫切需求…

15分钟学Go 第3天:编写第一个Go程序

第3天&#xff1a;编写第一个Go程序 1. 引言 在学习Go语言的过程中&#xff0c;第一个程序通常是“Hello, World!”。这个经典的程序不仅教会你如何编写代码&#xff0c;还引导你理解Go语言的基本语法和结构。本节将详细介绍如何编写、运行并理解第一个Go程序&#xff0c;通过…

[旧日谈]关于Qt的刷新事件频率,以及我们在Qt的框架上做实时的绘制操作时我们该关心什么。

[旧日谈]关于Qt的刷新事件频率&#xff0c;以及我们在Qt的框架上做实时的绘制操作时我们该关心什么。 最近在开发的时候&#xff0c;发现一个依赖事件来刷新渲染的控件会导致程序很容易异常和崩溃。 当程序在运行的时候&#xff0c;其实软件本身的负载并不高&#xff0c;所以…

小新学习Docker之Docker--harbor私有仓库部署与管理

目录 一、Harbor简介 1.1、Harbor概述 1.2、Harbor的特性 1.3、Harbor的构成 二、Harbor构建Docker私有仓库 2.1、部署Harbor服务 2.2、启动 Harbor 2.3、查看 Harbor 启动镜像&#xff0c;检查harbor是否安装成功 2.4、创建一个新项目 2.5、非本地主机进行下载镜像 …

爬虫逆向学习(十二):一个案例入门补环境

此分享只用于学习用途&#xff0c;不作商业用途&#xff0c;若有冒犯&#xff0c;请联系处理 反爬前置信息 站点&#xff1a;aHR0cDovLzEyMC4yMTEuMTExLjIwNjo4MDkwL3hqendkdC94anp3ZHQvcGFnZXMvaW5mby9wb2xpY3k 接口&#xff1a;/xjzwdt/rest/xmzInfoDeliveryRest/getInfoDe…

宁德时代25届校招入职Verify测评大揭秘::数字推理25分钟+言语推理19分钟SHL题库

非常感谢您对宁德时代的关注。祝贺您通过宁德时代校园招聘的专业面试环节&#xff0c;现邀请您参与完成以下测评。本轮共两份测评&#xff0c;每份测评对您的最终结果都非常重要&#xff0c;请务必在收到测评后48小时内完成!具体如下:A. 登录信息: 测评包含语言理解数字推理两…

前缀和算法——优选算法

个人主页&#xff1a;敲上瘾-CSDN博客 个人专栏&#xff1a;游戏、数据结构、c语言基础、c学习、算法 一、什么是前缀和&#xff1f; 前缀和是指从数组的起始位置到某一位置&#xff08;或矩阵的某个区域&#xff09;的所有元素的和。这种算法通过预处理数组或矩阵&#xff0c;…

【日志】编辑器开发——修复根据Excel表格数据生成Json文件和配置表代码报错

2024.10.15 又是蕉绿且摆烂的一天&#xff0c;不仅需要克制网瘾&#xff0c;还要努力学习&#xff0c;不然真的会被抛弃啊。但是我还是不想卷&#xff0c;给我的时间大概还有半年&#xff0c;突然好奇半年时间到底能学点什么或者做点什么。 【力扣刷题】 暂无 【数据结构】 …

Python入门笔记(七)

文章目录 第十五章. 下载数据15.1 csv文件15.2 json文件 第十六章. 使用API16.1 requests 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。 点击跳转&#xff1a;人工智能从入门到精通教程 本文电子版获取…

C++初阶学习第七弹——string的模拟实现

C初阶学习第六弹------标准库中的string类_c语言返回string-CSDN博客 通过上篇我们已经学习到了string类的基本使用&#xff0c;这里我们就试着模拟实现一些&#xff0c;我们主要实现一些常用到的函数。 目录 一、string类的构造 二、string类的拷贝构造 三、string类的析构函…