【视觉三维重建】【论文笔记】Deblurring 3D Gaussian Splatting

去模糊的3D高斯泼溅,看Demo比3D高斯更加精细,对场景物体细节的还原度更高,[官网](https://benhenryl.github.io/Deblurring-3D-Gaussian-Splatting/)

背景技术

Volumetric rendering-based nerual fields:NeRF.
Rasterization rendering: 3D-GS.
Rasterization比volumetric方法更加高效。

摘要

一种新的field-based的网络模型,实现对最新的rasterization rendering技术——3D高斯泼溅的去模糊。
设计MLP,对各个3D高斯的协方差建模;既能重建出优异、锐利的细节,又能保证实时渲染。

方法

一个MLP处理3D高斯模型,其输入包含视线方向向量 v v v,模型的位置 x x x、姿态 r r r、尺度系数 s s s,输出偏置量 δ r \delta r δr δ s \delta s δs,在训练时加入此MLP,实现模型变换,再渲染;推理时则直接渲染。如下图。
在这里插入图片描述
MLP输出的系数对应各个3D高斯,则能控制不同的3D高斯产生不同程度的模糊,即实现选择性模糊图像不同区域,不同程度;一个高斯卷积无法实现此种能力的。

问题的假设、解决方法的原理

原作者从模糊是由于理想图像的高斯卷积之结论,提出如下假设,

We assume that big sized 3D Gaussians cause the blur, while relatively smaller 3D Gaussians correspond
to the sharp image.

又根据

The minima of these scaling factors (δr, δs) are clipped to 1 and element-wisely
multiplied to r and s, respectively, to obtain the transformed attributes r′ = r · δr and s′ = s · δs.

为什么这样的设计,即在训练过程用MLP输出的系数放大3D高斯的协方差矩阵,即导致3D、图像更模糊,而在正常推理时,省去放大过程,则能实现去模糊的效果?
一种解释:
训练过程类似假性近视的人佩戴矫正眼镜,一般是凸透镜,人眼会看到比不戴眼镜时更模糊的图,人眼尽力调节使得摘下矫正眼镜后能看得更清楚。
原作者的实验结果符合预期,则论证了他们的假设是合理的。

实现细节

  1. 补偿稀疏点云
    为解决SfM常常由于景深范围大、图像模糊而输出点云稀疏,论文设计增加 N p N_p Np个点,主要思路是在训练 N s t N_{st} Nst次后,对已有点云的bounding box内均匀取样,对每个新增点使用KNN获取相邻元素,以此给新点的颜色插值,并剔除距离最近点的距离大于阈值 t d t_d td的新点。
    笔者认为可在SfM之后用MVS输出稠密点云。
  2. 管理3D高斯的数目
    3D高斯泼溅原论文用单一的阈值剔除3D高斯,本参考论文使用因高而异的阈值,根据相对深度剔除较少的远端高斯,能更好地还原远端场景物体的细节。

实验结果

配置

  • Pytorch实现
  • MLP有3层隐藏层,每层64通道带ReLU,学习率lr = 1e-3
  • 参数初始化方法Xavier
  • 补偿点云的设置: N s t = 2500 N_{st} = 2500 Nst=2500 N p = 100000 N_p = 100000 Np=100000 K = 4 K = 4 K=4 t d = 10 t_d = 10 td=10
  • 数据,Deblur-NeRF数据集,使用Blender合成模糊图像;用COLMAP求解原、模糊图像的位姿。在哪里获取点云?

结果

评测指标:峰值信噪比PSNR(衡量图像指标)、结构相似性SSIM(衡量图像相似性)、帧率FPS。
本文方法比参考方法Deblur-NeRF、DP-NeRF、PDRF、3D-Gussians,基本接近或取得SOTA精度,速度也接近SOTA。

思考

图像模糊主要有时空两个因素,时间维度上由于曝光时段,由于目标相对相机运动导致blur,空间上则是由于实际相机成像并非是理想针孔模型,光圈越大,则越不符合针孔模型,即物距与焦距越大,成像越模糊,参考论文的方法解决了消减这类模糊的问题。另一方面,更复杂的图像质量问题,还有眩光、 曝光过度或不足。

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

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

相关文章

linux sshd_config配置说明

[root01 ssh]# cat sshd_config #######################SSH Base Config################## #######通过OpenSSH工具入xshell连接默认端口 可以改成其他默认是22 PAM 认证过程 1)使用者执行/usr/bin/passwd程序,并输入密码。 2)passwd开…

有效的正方形(LeetCode 593)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路边长验证法等腰直角三角形验证法正方形定义 参考文献 1.问题描述 给定 2D 空间中四个点的坐标 p1, p2, p3 和 p4,如果这四个点构成一个正方形,则返回 true 。 点的坐标 pi 表示为 [xi, yi] 。 输入没…

【开源-土拨鼠充电系统】鸿蒙 HarmonyOS 4.0+微信小程序+云平台

本人自己开发的开源项目:土拨鼠充电系统 ✍GitHub开源项目地址👉:https://github.com/cheinlu/groundhog-charging-system ✍Gitee开源项目地址👉:https://gitee.com/cheinlu/groundhog-charging-system ✨踩坑不易&am…

192基于matlab的雷达信号进行RD图的仿真

基于matlab的雷达信号进行RD图的仿真,在距离进行匹配滤波,具体方法是与回波信号的FFT与参考信号对称共轭的FFT相乘,再IFFT。在多普勒维通过多普勒滤波器组进行滤波,相当于进行FFT。程序已调通,可直接运行。 192 matlab…

牛客小白月赛60-C-小竹关禁闭

很经典的dp问题 对于求解动态规划类的问题,关键就是阶段,状态,决策,状态转移方程 本题的核心点就是,怎么找到上一个状态 dp[i] max(dp[i -1],dp[i - k - 1] a[i]) 当前点不选,它的上一个状态就是i - 1 当前点如果选,它的上一个状态是i - k - 1 关键就是它对应的上一个状…

Elasticsearch:使用标记修剪提高文本扩展性能

作者:来自 Elastic Kathleen DeRusso 本博客讨论了 ELSER 性能的令人兴奋的新增强功能,该增强功能即将在 Elasticsearch 的下一版本中推出! 标记(token)修剪背后的策略 我们已经详细讨论了 Elasticsearch 中的词汇和…

C#十大排序总结

一、冒泡排序 传送门 一、C#冒泡排序算法-CSDN博客 未完待续。。。

CS架构和BS架构

在软件开发领域,CS架构和BS架构是两种常见的架构模式,用于描述客户端和服务器之间的交互方式。这两种架构模式分别代表Client/Server架构和Browser/Server架构。 CS架构(Client/Server架构): 客户端(Client…

测试用例执行计划(100%用例) C卷(JavaPythonC++Node.jsC语言)

某个产品当前迭代周期内有N个特性({F1,F2,., })需要进行覆盖测试,每个特性都被评估了对应的优先级,特性使用其ID作为下标进行标识。 设计了M个测试用例({T1,T2.……,Tm}),每个用例对应了一个覆盖特性的集合,测试用例使用其ID作为下标进行标识,测试用例的优先级定义为其覆盖…

KY211 特殊排序

描述&#xff1a; 输入一系列整数&#xff0c;将其中最大的数挑出(如果有多个&#xff0c;则挑出一个即可)&#xff0c;并将剩下的数进行排序&#xff0c;如果无剩余的数&#xff0c;则输出-1。 输入描述&#xff1a; 输入第一行包括1个整数N&#xff0c;1<N<1000&#x…

公式排序算法实际运用

试想下这个么个场景&#xff1a;用户可以自己配置多个公式&#xff0c;公式与公式之间又有依赖关系。比如ABC &#xff0c;BCD。需要做个算法来排序这些公式。实际我们可以分为两个步骤来看这个问题。 1&#xff0c;配置的公式之间不能死循环依赖。比如ABC ,BAC。这种A依赖…

Landsat、哨兵等免费数据下载地址汇总

我们科研和一些工程化应用中&#xff0c;经常会用到免费的Landsat、哨兵1/2/3等数据。下面介绍常用的下载网址&#xff1a; 1.哨兵系列数据 哨兵系列数据在https://scihub.copernicus.eu/dhus 上简单注册一个用户就可以下载&#xff0c;就是速度慢点&#xff0c;还限制一个用…

如何查看并详细了解一个R包

查看并拆解一个R包&#xff0c;如ggplot2&#xff0c;是一种深入了解其功能和内部工作原理的好方法。这个过程可以帮助你更好地理解包的结构&#xff0c;使用方式&#xff0c;以及如何扩展或修改其功能以满足你的需求。以下是一些基本步骤和技巧&#xff0c;以ggplot2为例进行解…

vue2——new Vue({router,store, render: h => h(App) }).$mount(‘#app‘);分析

router render: h > h(App) 是下面内容的缩写&#xff1a; render: function (createElement) {return createElement(App); } 进一步缩写为(ES6 语法)&#xff1a; render (createElement) {return createElement(App); } 再进一步缩写为&#xff1a; render (h){retur…

Linux第77步_处理Linux并发的相关函数

了解linux中的“原子整形数据”操作、“原子位数据”操作、自旋锁、读写锁、顺序锁、信号量和互斥体&#xff0c;以及相关函数。 并发就是多个“用户”同时访问同一个共享资源。如&#xff1a;多个线程同时要求读写同一个EEPROM芯片&#xff0c;这个EEPROM就是共享资源&#x…

【数学建模】线性规划

针对未来可能的数学建模比赛内容&#xff0c;我对学习的内容做了一些调整&#xff0c;所以先跳过灰色关联分析和模糊综合评价的代码&#xff0c;今天先来了解一下运筹规划类——线性规划模型。 背景&#xff1a; 某数学建模游戏有三种题型&#xff0c;分别是A&#xff0c;B&am…

远程办公、企业内网服务器的Code-Server上如何配置使用CodeGeeX插件

很多小伙伴都会在工作中使用code-server&#xff0c;比如说远程办公&#xff0c;当你需要在家访问你的工作环境&#xff0c;亦或者是你们公司的Docker是放入服务器中。code-server 无疑是最好的选择&#xff0c;它可以让你通过互联网安全地连接到远程服务器上的开发环境并且使用…

【保姆级】GPT的Oops问题快速解决方案

GPT的"Oops"问题通常指的是GPT在处理请求时突然遇到错误或无法提供预期输出的情况。要快速解决这个问题&#xff0c;可以尝试以下分步策略&#xff1a; 确认问题范围&#xff1a; 首先&#xff0c;确认问题是偶发的还是持续存在的。如果是偶发的&#xff0c;可能是临…

【Python】【os.path】【pathlib】告别os.path,拥抱pathlib

目录 1. os.path VS pathlib 1.1. 路径规范化 1.2. 字符串和对象 1.3. 读写文件 2. pathlib的性能 3. 总结 pathlib 模块是在Python3.4版本中首次被引入到标准库中的&#xff0c;作为一个可选模块。 从Python3.6开始&#xff0c;内置的 open 函数以及 os 、 shutil 和 os…

环境安装篇 之 Kind 搭建 kubernetes 测试集群

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 环境安装 系列文章&#xff0c;介绍 使用Kind工具 快速安装 kubernetes 测试集群的详细步骤 1.Kind简介 Kind 是一个使用 Docker 容器“节点”运行本地 Kubernetes 集群的工具。Kind 主要用于测试kubernetes本…