【AI数学】NeRF中的球面谐波函数(Spherical Harmonics)

这篇具有很好参考价值的文章主要介绍了【AI数学】NeRF中的球面谐波函数(Spherical Harmonics)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

球面谐波(SH)因为其良好的性质活跃在NeRF、Plenoxels、3DGS等显隐式场景表示的方法中。
问:球面谐波是什么?
答:一组基函数。可以理解为傅里叶分解的一种特殊形式,即“任何函数都可以用这组基的算术组合来近似”。
先描述一种通用情况:
假设我们有一组基数为3的完备基函数: [ e 1 ( x ) , e 2 ( x ) , e 3 ( x ) ] [e_1(x), e_2(x),e_3(x)] [e1(x),e2(x),e3(x)]
我们存在一个目标函数 f ( x ) f(x) f(x),那么 f ( x ) f(x) f(x)可以用这组基函数来表达:
f ( x ) = a 1 e 1 ( x ) + a 2 e 2 ( x ) + a 3 e 3 ( x ) (1) f(x)=a_1e_1(x)+a_2e_2(x)+a_3e_3(x)\tag{1} f(x)=a1e1(x)+a2e2(x)+a3e3(x)(1)这里的 [ a 1 , a 2 , a 3 ] [a_1,a_2,a_3] [a1,a2,a3]就是这组基的系数了。当然,我们可以用更“细致”的正交基来拟合目标函数,一般对应着更多的基数。我们可以浅看一张图:
球谐函数 nerf,三维重建,AI数学,NeRF,三维重建

这里的n表示基数,用的是球面谐波基。由此可见,基数越多,拟合效果越佳

如果对数学不那么苛求的人,只需要了解SH在NeRF中的使用,本文大概能满足这一需求。


球面谐波

球面谐波基,顾名思义,跟球面有关。

首先,我们来回顾一下极坐标的概念:用半径和角度的组合 ( r , θ ) (r,\theta) (r,θ)来代替笛卡尔坐标系下的 ( x , y ) (x,y) (x,y)
r ( θ ) = 1 r(\theta) = 1 r(θ)=1表示半径为1的圆。
球谐函数 nerf,三维重建,AI数学,NeRF,三维重建
跟传统的笛卡尔坐标相比,极坐标天然适合处理圆的场景那么三维极坐标就天然适合处理球面场景。
那么极坐标和球面谐波有什么关系呢?答:SH就是在极坐标下的基函数。
我们先看一下,三维极坐标是什么样子:
r = f ( θ , ϕ ) (2) r = f(\theta, \phi)\tag{2} r=f(θ,ϕ)(2)
球谐函数 nerf,三维重建,AI数学,NeRF,三维重建
r(即图中的 ρ \rho ρ)表示半径, θ \theta θ ϕ \phi ϕ表示观测角度。
我们通过 r = f ( θ , ϕ ) r = f(\theta, \phi) r=f(θ,ϕ)来可视化SH基:
球谐函数 nerf,三维重建,AI数学,NeRF,三维重建

图3 球谐基可视化1

看起来像细胞或者某种外星生物,这也是让人觉得很不直观的地方。但换一种表达,可能大家就容易理解了(将距离用颜色来表达):
球谐函数 nerf,三维重建,AI数学,NeRF,三维重建
图4 球谐基可视化2
往往在三维重建里用的多的就是图4这一种。应用场景为:对空间中一个点的颜色表达与观测它的角度有关。那么,构建出函数:
c = f ( θ , ϕ ) (3) \bold{c}=f(\theta, \phi)\tag{3} c=f(θ,ϕ)(3)
这里不存在半径的变化,所以SH基函数也是保持球体的几何结构,不像图3中那么多异形。那么任意一个球形表面的颜色表达,可以用球谐基来分解
球谐函数 nerf,三维重建,AI数学,NeRF,三维重建
我们看一下球谐基的数学表示:
球谐函数 nerf,三维重建,AI数学,NeRF,三维重建
Y l m Y_l^m Ylm表示第 l l l阶的第 m m m个球谐基,在NeRF中 l l l的最大值通常取2或者3,而对应阶的 m m m取值范围为 [ − l , l ] [-l,l] [l,l]。上面的公式群就表示2阶球谐基的一共9个球谐基,只需拟合9个系数就可以完成函数的分解。对于最近火热的3DGS,默认采用3阶球谐基,有16个球谐基。通常,RGB这3个通道都会用一组球谐基,所以通常球谐系数还要 × 3 \times{3} ×3

在工程实现中,会把上面的常数部分都计算出来先保存,我们观察代码可以发现。


球面谐波与NeRF

首次将SH引入NeRF的工作是PlenOctrees。论文中较详细地描述了SH的使用。
NeRF原本的数学表达为:
f Θ ( x , y , z ; θ , ϕ ) = ( c , σ ) (4) f_\Theta(x,y,z;\theta,\phi)=(\bold{c},\sigma)\tag{4} fΘ(x,y,z;θ,ϕ)=(c,σ)(4)
这里的 f Θ f_\Theta fΘ表示MLP。而经过SH编码以后的表达式变为:
f Θ ( x , y , z ) = ( k , σ ) (5) f_\Theta(x,y,z)=(\bold{k},\sigma)\tag{5} fΘ(x,y,z)=(k,σ)(5)
这里的 k \bold{k} k表示球谐系数。颜色可以由球鞋系数进一步得到:
c = f ( d ; k ) (6) \bold{c}=f(\bold{d};\bold{k})\tag{6} c=f(d;k)(6)
球谐函数 nerf,三维重建,AI数学,NeRF,三维重建
这里的k代表球谐系数,l和m分别代表球谐基的阶数和对应的基数:
球谐函数 nerf,三维重建,AI数学,NeRF,三维重建


总结

在NeRF或者3DGS等三维重建技术的背后,需要对空间点(或者高斯球)的空间位置 ( x , y , z ) (x,y,z) (x,y,z)和观测方向 ( ϕ , θ ) (\phi,\theta) (ϕ,θ)进行合理表示。我们发现,空间位置 ( x , y , z ) (x,y,z) (x,y,z)是笛卡尔坐标系下,而观测方向 ( ϕ , θ ) (\phi, \theta) (ϕ,θ)是球形坐标系下,不同坐标系可以选择不同的编码方式。
对空间坐标系的编码方式常见的有多分辨率哈希编码、频率编码;
对球形坐标系的编码方式最常见的就是球谐函数编码了~(频率编码不实用的原因是编码不紧凑);

球面谐波函数是最紧凑的球面坐标编码方式(至少是之一),任何关于 ( ϕ , θ ) (\phi,\theta) (ϕ,θ)的函数都可以由球谐基的组合来表示(即公式(1)的形式)。

参考:https://www.ti.uni-bielefeld.de/html/people/ddiffert/libShc/manual/fouriertransform.html文章来源地址https://www.toymoban.com/news/detail-796490.html

到了这里,关于【AI数学】NeRF中的球面谐波函数(Spherical Harmonics)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GEE:谐波模型在遥感影像中的应用(季节性变化的拟合与可视化)

    作者:CSDN @ _养乐多_ 谐波模型是一种常用的工具,用于拟合和分析影像数据中的周期性和季节性变化。本文将介绍如何使用Google Earth Engine平台实现谐波模型,通过对Landsat影像进行处理和拟合,展示季节性变化的拟合结果,并通过图表和地图可视化展示数据。 谐波模型是一种

    2024年02月14日
    浏览(46)
  • 机器学习中的数学原理——对数似然函数

    这个专栏主要是用来分享一下我在 机器学习中的 学习笔记及一些感悟,也希望对你的学习有帮助哦!感兴趣的小伙伴欢迎 私信或者评论区留言!这一篇就更新一下《 白话机器学习中的数学——对数似然函数》! 目录 一、什么是对数似然函数 二、算法分析 三、总结  对

    2024年04月10日
    浏览(41)
  • PHP8内置函数中的数学函数-PHP8知识详解

    php8中提供了大量的内置函数,以便程序员直接使用常见的内置函数包括数学函数、变量函数、字符串函数、时间和日期函数等。今天介绍内置函数中的数学函数。 本文讲到了数学函数中的随机数函数rand()、舍去法取整函数floor()、向上取整函数 ceil()、对浮点数进行四舍五入

    2024年02月10日
    浏览(51)
  • 【AI&3D】nerf入门及其实操

    nerf的理论性介绍已经比较多了。 NERF的提出 Mildenhall, B., Xiao, J., Barron, J.T., Chen, R., Radford, A., and Ng, R. 2020. NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis. In European Conference on Computer Vision (ECCV) . 论文地址:[2003.08934] NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

    2024年02月08日
    浏览(38)
  • AI人工智能中的数学基础原理与Python实战: 矩阵本质及其运算

    人工智能(AI)和机器学习(ML)已经成为当今最热门的技术领域之一,它们在各个行业的应用也越来越广泛。然而,在深入了解这些领域之前,我们需要了解一些基本的数学原理和算法。这篇文章将涵盖矩阵的本质以及如何在Python中进行矩阵运算。 矩阵是计算机科学和数学中的一

    2024年04月09日
    浏览(66)
  • AI人工智能中的数学基础原理与Python实战: 线性代数基础概述

    随着人工智能技术的不断发展,人工智能已经成为了许多行业的核心技术之一。在人工智能领域中,数学是一个非常重要的基础。线性代数是数学中的一个重要分支,它在人工智能中发挥着至关重要的作用。本文将介绍线性代数的基本概念、算法原理、具体操作步骤以及数学

    2024年04月12日
    浏览(67)
  • NeRFMeshing - 精确提取NeRF中的3D网格

    准确的 3D 场景和对象重建对于机器人、摄影测量和 AR/VR 等各种应用至关重要。 NeRF 在合成新颖视图方面取得了成功,但在准确表示底层几何方面存在不足。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 我们已经看到了最新的进展,例如 NVIDIA 的 Neuralangelo,但也有 NeRFMeshing,它

    2024年02月11日
    浏览(54)
  • 用NeRFMeshing精确提取NeRF网络中的3D网格

    准确的 3D 场景和对象重建对于机器人、摄影测量和 AR/VR 等各种应用至关重要。 NeRF 在合成新颖视图方面取得了成功,但在准确表示底层几何方面存在不足。 推荐:用 NSDT编辑器 快速搭建可编程3D场景 我们已经看到了最新的进展,例如 NVIDIA 的 Neuralangelo,但也有 NeRFMeshing,它

    2024年02月11日
    浏览(79)
  • [Tools: Camera Conventions] NeRF中的相机矩阵估计

    参考:NeRF代码解读-相机参数与坐标系变换 - 知乎 在NeRF中,一个重要的步骤是确定射线(rays)的 初始点 和 方向 。 根据射线的初始点和方向,和设定射线深度和采样点数量,可以估计该射线成像的像素值。 估计得到的像素值,在训练中用于计算损失更新参数,在测试中用

    2024年02月15日
    浏览(40)
  • 对球面线性插值的理解

    【前言】 线性插值是点A到点B间距离的均匀变化,球面线性插值是点A到点B的角度均匀变化,前者应用范围很广,后者主要应用平滑旋转 【球面线性插值求解】 球面线性插值(Spherical linear interpolation,Slerp)也可以写成如下形式: Y = a(t)Y0 + b(t)Y1  需要求解的是a(t),b(t) 以V

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包