当前位置: 首页 > news >正文

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

相关文章:

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&#xff0…...

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题 旋转图像&#xff1a…...

牛客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 一种带通滤波器: 有源滤波器完美规避了这个带不带负载滤波参数变化的问题,但是有源滤波器只能处理小电流和小电压: 鼠标所指的电路图是一阶同相滤波器,右上角的是他的幅频特性…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象: android studio报错: [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决: 不要动CMakeLists.…...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...