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中提取有符号距离场,之后将
输入到第二个MLP中输出颜色场
。进一步将有符号距离场
与颜色场
结合得到变换后的
几何表示。
之后利用Marching Cubes算法提取几何表示,生成三角网格,并通过网格简化,减少网格模型中三角形数量,保持几何细节,提高渲染质量。
2、基于Mesh的GS溅射
基于距离的3DGS溅射:给定一个mesh网格,考虑在每个三角形网格的中心位置(视点
)初始化3D高斯溅射,利用对应视角的深度图来遮挡那些被网格表面遮挡的高斯溅射,且定义网格表面是完全不透明的。
另外在训练过程中,评估所有训练视角中,永远不会被观察到的位于网格表面后方的冗余高斯溅射将它移除。
考虑到真实场景中重建网格存在伪影,我们的目标要拆分成对待能够高度重建的让他表现的更好(紧密绑定),另外的部分保证减少伪影(松散绑定),所以将高斯溅射分为两类,一个是紧密绑定在网格表面的(高斯溅射和mesh网格之间距离小于阈值),另一个是松散绑定在网格表面的(高斯溅射和mesh网格之间距离大于阈值),紧密绑定的高斯溅射被平坦化并与网格表面对齐,而松散绑定的高斯溅射则用于覆盖网格失真的区域。
3、损失函数
损失函数由四部分构成,图像损失,法线一致性损失,尺度损失,投影损失。
(1)图像损失:在真实图像和渲染图像中采用L1损失和D-SSIM损失。
其中,是原始图像,
是渲染图像,
是权重系数。
(2)法线一致性损失:确保紧密绑定的高斯溅射的法线与对应网格面的法线保持一致,使得高斯溅射更加贴合网格表面。
其中,是紧密绑定的高斯溅射的法线,
是对应网格面的法线。
(3)尺度正则化损失:用于控制紧密绑定的高斯溅射,并将其与网格表面对齐的尺度阈值。正则化最小尺度和最大尺度
。
(4)投影损失:用来确保紧密绑定的高斯溅射的中心
,保持在网格表面上的最近点
附近的损失函数。
总损失:
参考论文:MeshGS: Adaptive Mesh-Aligned Gaussian Splatting for High-Quality Rendering
相关文章:
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,并且将高…...

JDK-23与JavaFX的安装
一、JDK-23的安装 1.下载 JDK-23 官网直接下载,页面下如图: 2.安装 JDK-23 2.1、解压下载的文件 找到下载的 ZIP 文件,右键点击并选择“解压到指定文件夹”,将其解压缩到您希望的目录,例如 C:\Program Files\Java\…...

LeetCode讲解篇之2266. 统计打字方案数
文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们使用逆向思维发现如果连续按存在三个字母的按键,最后一个按键表示的字母可以是某个字母连续出现一次、两次、三次这三种情况的方案数之和 我们发现连续按存在三个字母的按键,当连续按…...

2025推荐选题|基于MVC的农业病虫害防治平台的设计与实现
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,…...
Vue 3 的不同版本总结
Vue 3 的不同版本(例如 3.x 系列的多个次版本)在语法和特性上有一些变化和改进。以下是 Vue 3 中随着版本迭代的一些语法变化和新特性的总结。 1. Vue 3.0: 初始发布 主要特性: 组合式 API (Composition API):引入 setup 函数&…...
在wpf 中 用mvvm 的方式 绑定 鼠标事件
在 wpf中, 如果遇到控件的 MouseEnter MouseLeave 属性时, 往往会因为有参数object sender, System.Windows.Input.MouseEventArgs e 很多人选择直接生成属性在后台, 破坏了MVVM, 这其实是不必要的. 我们完全可以用 xmlns:i“http://schemas.microsoft.com/xaml/behaviors” 完…...

TELEDYNE DALSA相机连接编码器
文章目录 对于线阵相机,欲令扫描拍照出来的图像不失真变形,则需要保证横向像素精度纵向像素精度,因此有下列等式成立: 现场的横向视野是650mm,横向实际像素是7663pixel,产线运动线速度为416.667mm/S,则可以计算出行频应…...
每天一个数据分析题(五百零八)- 机器学习模型
逻辑回归和支持向量机(SVM)都是经典的机器学习模型,逻辑回归和SVM的联系与区别,不正确的是? A. 二者都可以处理分类问题 B. 二者都可以增加不同的正则化项 C. 二者都是参数模型 D. SVM的处理方法是只考虑support v…...
leetcode栈与队列(一)-有效的括号
题目 . - 力扣(LeetCode) 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的…...

鸿蒙NEXT开发-知乎评论小案例(基于最新api12稳定版)
注意:博主有个鸿蒙专栏,里面从上到下有关于鸿蒙next的教学文档,大家感兴趣可以学习下 如果大家觉得博主文章写的好的话,可以点下关注,博主会一直更新鸿蒙next相关知识 专栏地址: https://blog.csdn.net/qq_56760790/…...

重学SpringBoot3-集成Redis(十一)之地理位置数据存储
更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(十一)之地理位置数据存储 1. GEO 命令简介2. 项目环境配置2.1. 依赖引入2.2. Redis 配置 3. GEO 数据存储和查询实现3…...

Docker-compose 单节点管理、consul 注册中心、registrator、template
consul是一个基于分布式的服务发现和配置管理工具。它具有快速构建分布式架构,提供服务发现和服务注册功能。consul职能:1、自动发现、注册;2、自动配置;3、自动更新 服务发现:自动检查网络中的服务(如数据…...

制药企业MES与TMS的数据库改造如何兼顾安全与效率双提升
*本图由AI生成 在全球制造业加速数字化转型的浪潮中,一家来自中国的、年营业额超过200亿元的制药企业以其前瞻性的视角和果断的行动,成为该行业里进行国产化改造的先锋。通过实施数据库改造试点项目,该企业实现了其关键业务系统MES࿰…...
Spring Boot比Spring多哪些注解
Spring Boot 是 Spring 框架的扩展,它旨在简化 Spring 应用程序的初始搭建以及开发过程。与 Spring 相比,Spring Boot 提供了许多额外的注解来进一步简化配置和开发工作。以下是 Spring Boot 特有的一些核心注解,这些注解在 Spring 中不可用&…...
985研一学习日记 - 2024.10.17
一个人内耗,说明他活在过去;一个人焦虑,说明他活在未来。只有当一个人平静时,他才活在现在。 日常 1、起床6:00√ 2、健身1个多小时 今天练了二头和背部,明天练胸和三头 3、LeetCode刷了3题 旋转图像:…...

牛客SQL29详解 计算用户的平均次日留存率
牛客SQL29详解 计算用户的平均次日留存率 牛客SQL29详解 计算用户的平均次日留存率 叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧! 牛客SQL29详解 计算用户的平均次日留存率 题目&#x…...

Redis --- 第四讲 --- 常用数据结构 --- 其他类型stream、bitmap……。补充内容scan命令。
通过前面的学习,我们已经学习了Redis最关键的五个数据结构:String、List、Hash、Set、ZSet。这五个数据结构应用广泛,频繁使用。 redis中包含的所有类型,下面将要介绍不常用的类型。 一、streams类型介绍 事件、epoll/IO多路复…...

Java多线程--实现跑马小游戏
线程的实现方式 继承Thread类:void run()方法没有返回值,无法抛异常实现Runnable接口:void run()方法没有返回值,无法抛异常实现Callable接口:V call() throws Exception 返回结果,能够抛异常 实现Callab…...

扫雷(C 语言)
目录 一、游戏设计分析二、各个步骤的代码实现1. 游戏菜单界面的实现2. 游戏初始化3. 开始扫雷 三、完整代码四、总结 一、游戏设计分析 本次设计的扫雷游戏是展示一个 9 * 9 的棋盘,然后输入坐标进行判断,若是雷,则游戏结束,否则…...

有源滤波器(一)
滤波器设计工具 | 滤波器设计向导 | Analog Devices 一种带通滤波器: 有源滤波器完美规避了这个带不带负载滤波参数变化的问题,但是有源滤波器只能处理小电流和小电压: 鼠标所指的电路图是一阶同相滤波器,右上角的是他的幅频特性…...

XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...

【java面试】微服务篇
【java面试】微服务篇 一、总体框架二、Springcloud(一)Springcloud五大组件(二)服务注册和发现1、Eureka2、Nacos (三)负载均衡1、Ribbon负载均衡流程2、Ribbon负载均衡策略3、自定义负载均衡策略4、总结 …...
【java】【服务器】线程上下文丢失 是指什么
目录 ■前言 ■正文开始 线程上下文的核心组成部分 为什么会出现上下文丢失? 直观示例说明 为什么上下文如此重要? 解决上下文丢失的关键 总结 ■如果我想在servlet中使用线程,代码应该如何实现 推荐方案:使用 ManagedE…...
算法刷题-回溯
今天给大家分享的还是一道关于dfs回溯的问题,对于这类问题大家还是要多刷和总结,总体难度还是偏大。 对于回溯问题有几个关键点: 1.首先对于这类回溯可以节点可以随机选择的问题,要做mian函数中循环调用dfs(i&#x…...