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

news2024/11/16 12:46:25

去模糊的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.coloradmin.cn/o/1517943.html

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

相关文章

邀请媒体到场报道与采访的优势分析

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 邀请媒体到场报道与采访的优势主要有: 提高知名度和曝光率:通过媒体的广泛传播,让更多人了解活动或品牌,增强其在公众中的认知度。 树立权…

自动化运维工具Ansible

目录 一.Ansible基本内容 1.定义 2.特点与优势 优势: (1)轻便性:无需在被控制服务器上安装客户端,Ansible基于ssh协议 (2)幂等性:大部分模块有幂等性,即如果输入sys…

Git概述及安装步骤

一、Git简介 Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git 易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CV…

鸿蒙 - 读取 rawfile 中的 json 文件

一、说明 在以下目录中存放了一份地区 json 文件。 我想要将其读出来,并且转为我的实体类。 二、技术实现 import common from ohos.app.ability.common import { CityEntity } from ./entity/CityEntity import util from ohos.util;/*** App 内置的地区数据* r…

pytorch之诗词生成3--utils

先上代码: import numpy as np import settingsdef generate_random_poetry(tokenizer, model, s):"""随机生成一首诗:param tokenizer: 分词器:param model: 用于生成古诗的模型:param s: 用于生成古诗的起始字符串,默认为空串:return: …

深度解析Java JDK 1.8中Stream流的源码实现:带你探寻数据流的奥秘

文章目录 一、 Stream流概述1.1 什么是Stream流,以及它的主要特点和优势1.2 Stream流的基本操作:过滤、映射、排序等 二、 Stream流源码解析2.1 接口和基本概念2.2 创建流2.3 源码分析2.3.1 流的起始2.3.2 流的初始2.3.3 认识BaseStream2.3.4 Stream接口…

软考高级:软件工程单元测试(驱动模块、被测模块、桩模块)概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

Qt 线程池 QThreadPool

一.Qt 线程池 QThreadPool介绍 Qt线程池是一种管理多个线程的并发编程模型,通过使用线程池可以提高性能、控制并发度、提供任务队列和简化线程管理。 在Qt中,线程池的使用主要涉及以下几个步骤: 创建任务类:需要定义一个任务类&am…

【计算机视觉】一、计算机视觉概述

文章目录 一、计算机视觉二、计算机视觉与其它学科领域的关系1、图像处理2、计算机图形学3、模式识别4、人工智能(AI)5、神经生理学与认知科学 三、计算机视觉的应用1. 人脸识别2. 目标检测3. 图像生成4. 城市建模5. 电影特效6. 体感游戏动作捕捉7. 虚拟…

Android 仿天通卫星对准(卫星在圆形卫星轨道上转动)效果实现

效果图 View源码 package com.android.circlescalebar.view;import android.animation.ObjectAnimator; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics…

linux对于文件操作其他命令

tac,与cat不同,tac可以倒序查看文件内容 管道符,可以将第一条命令的结果当作第二条命令的输入 more分屏显示文件内容 head,可以查看文件前多少行,tail可以查看文件后多少行

JavaEE之多线程(创建线程的五种写法)详解

😽博主CSDN主页: 小源_😽 🖋️个人专栏: JavaEE 😀努力追逐大佬们的步伐~ 目录 1. 前言 2. 操作系统"内核" 3. 创建线程的五种写法 (我们重点要掌握最后一种写法!!) 3.1 继承 Thread, 重写 run 3. 2 实现 Runnabl…

SpringBoot Servlet容器启动解析

介绍 容器架构 容器处理请求 容器启动全局流程解析 启动前准备 WebServer创建入口 WebServer创建 Servlet启动 Web容器工厂类加载解析 Web容器个性化配置 属性注入 工厂类初始化 BeanPostProcessor方法实现 定制化流程 面试题 请描述下Servlet容器启动流程?介绍下…

最新android icon和splashScreen适配兼容至2024android

android在12做了splashScreen的变动,即,android12有自带的screenSplash过渡,不论你是否自己有变化,都会插入该动画。 android8做了icon的巨大变动。13做了图标的主题兼容。 一、icon制作 制作 使用android自带的工具&#xff0…

Modbus -tcp协议使用第二版

1.1 协议描述 1.1.1 总体通信结构 MODBUS TCP/IP 的通信系统可以包括不同类型的设备: (1)连接至 TCP/IP 网络的 MODBUS TCP/IP 客户机和服务器设备; (2)互连设备,例如:在 TCP/IP…

外包干了5天,技术明显退步。。。。。

先说一下自己的情况,本科生,19年通过校招进入南京某软件公司,干了接近2年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了2年的功能测试&…

C# Onnx yolov8 building segmentation

目录 效果 模型信息 项目 代码 下载 C# Onnx yolov8 building segmentation 效果 模型信息 Model Properties ------------------------- date:2023-12-22T10:51:07.627471 author:Ultralytics task:segment license:AGPL-…

HBase分布式数据库的原理和架构

一、HBase简介 HBase是是一个高性能、高可靠性、面向列的分布式数据库,它是为了在廉价的硬件集群上存储大规模数据而设计的。HBase利用Hadoop HDFS作为其文件存储系统,且Hbase是基于Zookeeper的。 二、HBase架构 *图片引用 Hbase采用Master/Slave架构…

YOLOv9(3):YOLOv9损失(Loss)计算

1. 写在前面 YOLOv9的Loss计算与YOLOv8如出一辙,仅存在略微的差异。多说一句,数据的预处理和导入方式都是一样的。因此如果你已经对YOLOv8了解的比较透彻,那么对于YOLOv9你也只是需要多关注网络结构就可以。 YOLOv9本身也是Anchor-Free的&a…

彩虹外链网盘界面UI美化版超级简洁好看

彩虹外链网盘界面UI美化版 彩虹外链网盘,是一款PHP网盘与外链分享程序,支持所有格式文件的上传,可以生成文件外链、图片外链、音乐视频外链,生成外链同时自动生成相应的UBB代码和HTML代码,还可支持文本、图片、音乐、…