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

浅谈3D隐式表示(SDF,Occupancy field,NeRF)

本篇文章介绍了符号距离函数Signed Distance Funciton(SDF),占用场Occupancy Field,神经辐射场Neural Radiance Field(NeRF)的概念、联系与区别。

显式表示与隐式表示

三维空间的表示形式可以分为显式和隐式。

比较常用的显式表示比如体素Voxel点云Point Cloud三角面片Mesh等。

比较常用的隐式表示有 符号距离函数Signed Distance Funciton(SDF)占用场Occupancy Field神经辐射场Neural Radiance Field(NeRF) 等。

本文将对几种隐式表示进行介绍,并以我本人的理解讲一讲它们的联系和区别。

概述

首先,对这三种隐式表示进行概述,帮助大家对三种表示有一个大致的认识,这里看不懂没关系,后面有更加详细的介绍。

函数function与场field

先回顾一下函数和场的概念,我认为函数和场实际上都是代表了一种映射关系。

函数 f(x)=y 是自变量 x 到因变量 y 的映射

场的定义是向量到向量或数的映射,空间中的场可以认为是空间中点到这个点的属性的映射。以磁场为例,磁场就是空间中每个点都具有一个磁感应矢量B,也就是点到向量的映射,即空间中每个点都映射到一个特定的向量 B B B。在其他情况下,点不一定映射到向量,也可以映射到标量或者其他属性,只要是空间中点到属性的映射都是空间场。( 一般用坐标 ( x , y , z ) (x,y,z) (x,y,z)表示空间中的点,所以点到属性的映射实际上是 ( x , y , z ) (x,y,z) (x,y,z)到属性 s s s的映射,如场 F : ( x , y , z ) → s F: (x,y,z)→s F:(x,y,z)s,这里的 s s s可以是向量也可以是标量)

本文讲的三种隐式表示都可以看做是一种映射关系,而且我们都可以用神经网络去拟合这种映射关系,达到用神经网络去表示三维空间的目的。

Signed Distance Funciton(SDF)

Signed Distance Funciton对应的中文是“符号距离函数”,我们更常见到的是它的缩写SDF。

SDF表示一个点到一个曲面的最小距离,同时用正负来区分点在曲面内外。点在曲面内部则规定距离为负值,点在曲面外部则规定距离为正值,点在曲面上则距离为0.

SDF的映射关系如下:
SDF的映射关系
这里 x x x是个三维向量,代表三维空间中的点, s s s是一个值。也就是说 S D F SDF SDF实际上是一个点到一个值的映射

相应的 s < 0 s<0 s<0 则表示 x x x 在曲面内, s > 0 s>0 s>0表示 x x x 在曲面外, s = 0 s=0 s=0表示 x x x 在曲面上。我们就可以用 S D F ( x ) = 0 SDF(x)=0 SDF(x)=0 来表示一个曲面

Occupancy Field

占用场表示一个点是否被曲线占用(占用就是在曲面内部)。

占用场的映射关系如下:

占用场映射关系

这里的 p p p是空间中的点, s s s表示 p p p被曲面占用的概率。可以看到占用场的映射关系和SDF是一致的,它和SDF的区别在于,占用场的 s s s的取值是 [ 0 , 1 ] [0,1] [0,1],即必须在0,1之间,所以占用场是将一个三维空间映射到 [ 0 , 1 ] [0,1] [0,1],即:

占用场的空间映射关系

通常以0.5为标准,即占用概率 s s s大于0.5我们倾向于认为点被曲面占用, s s s小于0.5我们倾向于认为点没有被曲面占用, s s s等于0.5我们认为点在曲面上。所以我们可以用 F ( p ) = 0.5 F (p)=0.5 F(p)=0.5 在连续的三维占用场中表示一个曲面

Neural Radiance Field

Neural Radiance Field 神经辐射场是这几年很火的概念,主要是由于NeRF以及后续系列工作的优异表现。

辐射场就是将“点+这个点发出的一条射线”映射到“点的密度值+射线的方向对应的颜色值”,映射关系如下:
辐射场的映射关系
x , y , z x,y,z x,y,z表示点坐标, d d d表示从这个点发出的一条射线的方向, R , G , B R,G,B R,G,B表示从这个射线的方向去看这个点的颜色值, σ \sigma σ表示这个点的密度值(比如烟雾的密度比较低,固体点的密度就很高)。

而神经辐射场,就是用神经网络去拟合辐射场的映射关系


下面将详细介绍每个隐式表示:

Signed Distance Funciton(SDF)

SDF在2D和3D中都有应用,我们可以先看一下SDF在2D中的形式,了解其在2D上的应用会对理解其在3D中的表示有帮助。

Signed Distance Funciton表示带符号的距离函数,其实还有不带符号的距离函数,也就是Unsigned Distance Funciton,2D中的Unsigned Distance Funciton可以表示如下:
Unsigned Distance Funciton

这里黑色的就是表示的形状,在Unsigned Distance Funciton下,形状内部的点的距离会被定义为0,而形状外部的点的值代表了这个点到形状的最短距离。

相对于Unsigned Distance Funciton,Signed Distance Funciton增加了正和负的概念,内部和外部的点的绝对值都代表了点到形状的距离,这时内部的点不再都是0,而是用负值表示,外部的点的值用正值表示。如下图所示:

Signed Distance Funciton

这张图红色的表示在形状外部的点,绿色代表在形状内部的点,黑色代表边界,可以看到黑色两侧的点的值的正负发生了变化,也就是说 S D F = 0 SDF=0 SDF=0表示的曲线可以代表形状的边界。

理解了二维的SDF,就可以类推到三维的SDF,可以想象一个空间,空间中有正值和负值的点,而正负点的交界处就可以认为是空间曲面。

这里展示一张《DeepSDF: Learning Continuous Signed Distance Functions for Shape Representation》(CVPR2019)

相关文章:

浅谈3D隐式表示(SDF,Occupancy field,NeRF)

本篇文章介绍了符号距离函数Signed Distance Funciton(SDF)&#xff0c;占用场Occupancy Field&#xff0c;神经辐射场Neural Radiance Field&#xff08;NeRF&#xff09;的概念、联系与区别。 显式表示与隐式表示 三维空间的表示形式可以分为显式和隐式。 比较常用的显式表…...

软件测试技能大赛任务二单元测试试题

任务二 单元测试 执行代码测试 本部分按照要求&#xff0c;执行单元测试&#xff0c;编写java应用程序&#xff0c;按照要求的覆盖方法设计测试数据&#xff0c;使用JUnit框架编写测试类对程序代码进行测试&#xff0c;对测试执行结果进行截图&#xff0c;将相关代码和相关截…...

MybatisPlus拓展篇

文章目录 逻辑删除通用枚举字段类型处理器自动填充功能防全表更新与删除插件MybatisX快速开发插件插件安装逆向工程常见需求代码生成 乐观锁问题引入乐观锁的使用效果测试 代码生成器执行SQL分析打印多数据源 逻辑删除 逻辑删除的操作就是增加一个字段表示这个数据的状态&…...

设置k8s中节点node的ROLES值,K8S集群怎么修改node1的集群ROLES

设置k8s中节点node的ROLES值 1.查看集群 [rootk8s-master ~]# kubectl get nodes NAME STATUS ROLES AGE VERSION k8s-master Ready control-plane,master 54d v1.23.8 k8s-node1 Ready <none> 54d v1.…...

【*1900 图论】CF1328 E

Problem - E - Codeforces 题意&#xff1a; 思路&#xff1a; 注意到题目的性质&#xff1a;满足条件的路径个数是极少的&#xff0c;因为每个点离路径的距离<1 先考虑一条链&#xff0c;那么直接就选最深那个点作为端点即可 为什么&#xff0c;因为我们需要遍历所有点…...

微信开发者工具 miniprogram_npm 未找到

背景 微信开发者工具中&#xff0c;打开集成了vant-weapp的项目&#xff0c;构建npm时&#xff0c;报错\miniprogram_npm\ 未找到。 问题 微信开发者工具&#xff0c;工具----->构建npm时&#xff0c;提示 message&#xff1a;发生错误 Error: D:\some\path\miniprogram…...

计算机视觉(三)未有深度学习之前

文章目录 图像分割基于阈值、基于边缘基于区域、基于图论 人脸检测Haar-like特征级联分类器 行人检测HOGSVMDPM 图像分割 把图像划分成若干互不相交的区域。经典的数字图像分割算法一般是基于灰度值的两个基本特征之一&#xff1a;不连续性和相似性。 基于阈值、基于边缘 基于…...

二十六、媒体查询2

目录&#xff1a; 媒体查询介绍网页常用分界点 一、媒体查询介绍 媒体特性&#xff1a; width 视口的宽度 height 视口的高度 一般设计的时候&#xff0c;高度不考虑&#xff0c;只考虑宽度 //当视口的宽度是500像素的时候,变颜色media (width: 500px) {body{background-colo…...

Themis 国库建设计划启动,开启去中心化新征程

在未来的金融领域&#xff0c;去中心化金融&#xff08;DeFi&#xff09;正在成为一种重要的趋势。在这股DeFi热潮中&#xff0c;作为Filecoin 生态下的一颗璀璨明珠&#xff0c;Themis 上线仅2个月&#xff0c;多项数据便稳居Filecoin-FVM榜首&#xff0c;TVL更是牢牢处于File…...

uni-app:模态框的实现(弹窗实现)

效果图 代码 标签 <template><view><!-- 按钮用于触发模态框的显示 --><button click"showModal true">显示模态框</button><!-- 模态框组件 --><view class"modal" v-if"showModal"><view cla…...

第九章:stack类

系列文章目录 文章目录 系列文章目录前言stack的介绍stack的使用成员函数使用stack 总结 前言 stack是容器适配器&#xff0c;底层封装了STL容器。 stack的介绍 stack的文档介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除…...

FSM:Full Surround Monodepth from Multiple Cameras

参考代码&#xff1a;None 介绍 深度估计任务作为基础环境感知任务&#xff0c;在基础上构建的3D感知才能更加准确&#xff0c;并且泛化能力更强。单目的自监督深度估计已经有MonoDepth、ManyDepth这些经典深度估计模型了&#xff0c;而这篇文章是对多目自监督深度估计进行探…...

idea 安装 插件jrebel 报错LS client not configured.

这个报错找了好久&#xff0c;有博主说版本不对&#xff0c;我脑子没反应过来以为是随便换一个低版本的就行&#xff0c;没想到只能是2022.4.1 这个版本才行 一定要用jrebel 2022.4.1的插件版本&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 插件下载地址&…...

Raki的读paper小记:RWKV: Reinventing RNNs for the Transformer Era

Abstract&Introduction&Related Work 研究任务 基础模型架构已有方法和相关工作 RNN&#xff0c;CNN&#xff0c;Transformer稀疏注意力&#xff08;Beltagy等人&#xff0c;2020年&#xff1b;Kitaev等人&#xff0c;2020年&#xff1b;Guo等人&#xff0c;2022年&am…...

PaddleOCR #PP-OCR常见异常扫雷

异常一&#xff1a;ModuleNotFoundError: No module named ‘tools.infer’ 实验案例&#xff1a; PaddleOCR #使用PaddleOCR进行光学字符识别&#xff08;PP-OCR文本检测识别&#xff09; 参考代码&#xff1a; 图片文本检测实验时&#xff0c;运行代码出现异常&#xff1a;M…...

Qt加载字体文件

本文记录如何使用 Qt 加载外部字体文件&#xff0c;并遍历字体名称和样式名称。 bool LoadFont(const QString& fontPath) {const int fontId QFontDatabase::addApplicationFont(fontPath);if (fontId -1) {return false;}// 遍历字体名和样式名 #if QT_VERSION > QT…...

3ds MAX绘制简单动画

建立一个长方体和茶壶&#xff1a; 在界面右下角点击时间配置&#xff1a; 这是动画制作的必要步骤 选择【自动】&#xff0c;接下来&#xff0c;我们只要在对应的帧改变窗口中图形的位置&#xff0c;就能自动记录该时刻的模样 这就意味着&#xff0c;我们通过电脑记录某几个…...

页面访问控制远程仓库

页面访问权限控制 什么是jwt身份认证 在前后端分离模式的开发中&#xff0c;服务器如何知道来访者的身份呢&#xff1f; 在登录后&#xff0c;服务器会响应给用户一个 令牌 &#xff08;token&#xff09;令牌中会包括该用户的id等唯一标识浏览器收到令牌后&#xff0c;自己…...

小程序 user agent stylesheet 覆盖了page下wxss背景色

如下图&#xff1a; login页面的page下的背景色&#xff0c;被&#xff1a;user agent stylesheet覆盖。 分析与解决&#xff1a; 1、user agent stylesheet是浏览器默认样式表&#xff0c;是浏览器默认样式。 2、不同浏览器的默认样式不同个&#xff0c;甚至同种浏览器不同版…...

Vue.js高阶学习和常用知识(二)

目录 1. Vue 实例2. 组件3. 指令4. 计算属性5. 监听器6. 生命周期钩子 Vue.js 是一个流行的 Web 前端框架&#xff0c;它由 Evan You 于 2014 年创建。Vue.js 的设计目标是简单、灵活和易于使用&#xff0c;同时具有高性能和可扩展性。 Vue.js 基于组件化的思想&#xff0c;将页…...

DSP、FPGA、STM32大对决:谁才是嵌入式开发的“天选之子”?

在嵌入式开发的广阔天地里&#xff0c;DSP、FPGA 和 STM32&#xff08;作为通用 MCU 的典型代表&#xff09;可以说是三款绕不开的核心处理器。很多初学者甚至有一定经验的工程师在选择时都会陷入纠结&#xff1a;我的项目到底该选哪一个&#xff1f;为了帮你彻底理清思路&…...

CI/CD流水线中的幽灵依赖——DeepSeek项目92%存在未声明的transitive risk,你中招了吗?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;CI/CD流水线中的幽灵依赖——DeepSeek项目92%存在未声明的transitive risk&#xff0c;你中招了吗&#xff1f; 在现代CI/CD实践中&#xff0c;开发者常误以为 package.json 或 requirements.txt 中显式…...

如何在macOS上免费安装HSTracker:终极炉石传说套牌追踪器完整指南

如何在macOS上免费安装HSTracker&#xff1a;终极炉石传说套牌追踪器完整指南 【免费下载链接】HSTracker A deck tracker and deck manager for Hearthstone on macOS 项目地址: https://gitcode.com/gh_mirrors/hs/HSTracker 还在为炉石传说对局中记不住对手出牌而烦恼…...

机器学习预测关税冲击下的股市波动:随机森林、SVR、kNN与线性回归实战对比

1. 项目概述与核心问题拆解做量化研究的朋友们&#xff0c;尤其是关注宏观事件对市场冲击的&#xff0c;应该都对“黑天鹅”事件不陌生。政策变动&#xff0c;特别是像关税这种直接影响国际贸易成本和公司利润的宏观变量&#xff0c;往往会在短期内引发市场剧烈波动。传统的做法…...

Elsevier-Tracker:5分钟打造您的学术论文审稿进度监控系统

Elsevier-Tracker&#xff1a;5分钟打造您的学术论文审稿进度监控系统 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 在科研工作者的日常中&#xff0c;论文审稿进度追踪常常成为消耗时间与精力的隐形负担。每天反…...

Keil uVision调试器变量监视问题解析与解决方案

1. Keil uVision调试器变量监视问题解析在嵌入式开发领域&#xff0c;Keil uVision作为经典的集成开发环境(IDE)&#xff0c;其调试功能是开发者排查问题的重要工具。但许多初次接触8051或C251架构的工程师都会遇到一个看似简单却令人困惑的问题——为什么在Watch窗口无法正确显…...

C++运算符重载的实现示例

1. 运算符重载的基本概念 运算符重载是C一项强大的特性&#xff0c;它允许我们为自定义类型&#xff08;类或结构体&#xff09;重新定义运算符的行为。通过运算符重载&#xff0c;我们可以让自定义类型像内置类型一样使用标准的运算符语法&#xff0c;使代码更加直观和自然 …...

量子机器学习在时间序列预测中的表现:一项基准研究的深度解析

1. 项目概述与核心问题 时间序列预测&#xff0c;这个听起来有点学术的词&#xff0c;其实离我们并不远。从明天股市的涨跌&#xff0c;到下周的天气变化&#xff0c;再到工厂里一台机器的故障预警&#xff0c;背后都离不开对历史数据的分析和未来趋势的推断。在经典计算领域&a…...

高能物理实时触发系统:HGQ与LGN算法在FPGA上的极致优化实践

1. 项目概述&#xff1a;当粒子对撞遇见实时AI在大型强子对撞机&#xff08;LHC&#xff09;每秒数千万次的质子对撞中&#xff0c;CMS探测器会捕获海量的高维数据。第一级触发系统&#xff08;L1T&#xff09;的任务&#xff0c;是在3.8微秒的极短时间内&#xff0c;将事件率从…...

Transformer模型推理性能实测:PyTorch+A10 GPU与MLX+Apple Silicon对比

1. 项目概述与背景最近在部署几个基于Transformer的NLP服务时&#xff0c;遇到了一个经典的选择题&#xff1a;是继续沿用我们团队熟悉的PyTorch NVIDIA GPU方案&#xff0c;还是尝试拥抱苹果生态&#xff0c;用MLX框架在Mac上跑推理&#xff1f;这个问题在团队内部引发了不小…...