符号距离函数(Signed Distance Function,SDF)的数学公式用于描述空间中任意点到某个几何形状边界的最短距离,并通过符号区分点在边界内外。具体定义如下:
假设 Ω \Omega Ω 是一个几何形状的边界,对于空间中的任意点 x \mathbf{x} x,符号距离函数 S D F ( x ) SDF(\mathbf{x}) SDF(x) 定义为:
- 如果 x \mathbf{x} x 在边界 Ω \Omega Ω 上,则 S D F ( x ) = 0 SDF(\mathbf{x}) = 0 SDF(x)=0。
- 如果 x \mathbf{x} x 在边界 Ω \Omega Ω 内部,则 S D F ( x ) < 0 SDF(\mathbf{x}) < 0 SDF(x)<0。
- 如果 x \mathbf{x} x 在边界 Ω \Omega Ω 外部,则 S D F ( x ) > 0 SDF(\mathbf{x}) > 0 SDF(x)>0。
具体公式可以表示为:
S
D
F
(
x
)
=
{
min
y
∈
Ω
∥
x
−
y
∥
if
x
∉
Ω
−
min
y
∈
Ω
∥
x
−
y
∥
if
x
∈
Ω
SDF(\mathbf{x}) = \begin{cases} \min_{\mathbf{y} \in \Omega} \|\mathbf{x} - \mathbf{y}\| & \text{if } \mathbf{x} \notin \Omega \\ -\min_{\mathbf{y} \in \Omega} \|\mathbf{x} - \mathbf{y}\| & \text{if } \mathbf{x} \in \Omega \end{cases}
SDF(x)={miny∈Ω∥x−y∥−miny∈Ω∥x−y∥if x∈/Ωif x∈Ω
其中,
∥
x
−
y
∥
\|\mathbf{x} - \mathbf{y}\|
∥x−y∥ 表示点
x
\mathbf{x}
x 到边界上点
y
\mathbf{y}
y 的欧几里得距离。
常见几何形状的SDF公式
-
球体:
对于中心在 c \mathbf{c} c,半径为 r r r 的球体,其SDF公式为:
S D F ( x ) = ∥ x − c ∥ − r SDF(\mathbf{x}) = \|\mathbf{x} - \mathbf{c}\| - r SDF(x)=∥x−c∥−r
其中, ∥ x − c ∥ \|\mathbf{x} - \mathbf{c}\| ∥x−c∥ 是点 x \mathbf{x} x 到球心 c \mathbf{c} c 的距离。 -
矩形:
对于中心在原点,宽度为 w w w,高度为 h h h 的矩形,其SDF公式为:
S D F ( x , y ) = max ( ∣ x ∣ − w 2 , ∣ y ∣ − h 2 ) SDF(x, y) = \max\left(|x| - \frac{w}{2}, |y| - \frac{h}{2}\right) SDF(x,y)=max(∣x∣−2w,∣y∣−2h)
如果点在矩形内部,则取负值。 -
圆角矩形:
对于圆角矩形,其SDF公式可以通过在普通矩形的SDF基础上减去圆角半径 r r r 来实现:
S D F ( x , y ) = max ( ∣ x ∣ − w 2 , ∣ y ∣ − h 2 ) − r SDF(x, y) = \max\left(|x| - \frac{w}{2}, |y| - \frac{h}{2}\right) - r SDF(x,y)=max(∣x∣−2w,∣y∣−2h)−r
这样可以将矩形的角部变成圆角。
特点
- 连续性:SDF在空间中是连续的,便于数值计算和优化。
- 可微性:在大多数情况下,SDF是可微的,其梯度可以用于法线计算。
- 零水平集表示边界:SDF的零水平集 S D F ( x ) = 0 SDF(\mathbf{x}) = 0 SDF(x)=0 表示几何形状的边界。
SDF在计算机图形学、碰撞检测、路径规划等领域有广泛应用。
符号距离函数(Signed Distance Function,SDF)的映射关系公式可以表示为:
S
D
F
:
R
3
→
R
SDF: \mathbb{R}^3 \rightarrow \mathbb{R}
SDF:R3→R
解释:
-
R 3 \mathbb{R}^3 R3:
表示三维欧几里得空间,即所有可能的三维点的集合。每个点 x \mathbf{x} x 可以用一个三维向量 ( x , y , z ) (x, y, z) (x,y,z) 表示,其中 x , y , z x, y, z x,y,z 都是实数。 -
R \mathbb{R} R:
表示实数集,即所有可能的实数值的集合。在SDF中, R \mathbb{R} R 用于表示符号距离函数的输出值,这个值是一个实数。 -
映射关系:
S D F : R 3 → R SDF: \mathbb{R}^3 \rightarrow \mathbb{R} SDF:R3→R 表示SDF是一个从三维空间 R 3 \mathbb{R}^3 R3 到实数 R \mathbb{R} R 的函数。对于任意点 x ∈ R 3 \mathbf{x} \in \mathbb{R}^3 x∈R3,SDF计算出一个实数值 s ∈ R s \in \mathbb{R} s∈R,表示该点到几何形状边界的符号距离。
1. 占用场的网络表示
占用场的网络表示通常通过隐式函数实现,该函数将三维空间中的点映射为一个概率值,表示该点是否被物体占据。具体的网络表示可以表示为:
f
θ
:
R
3
→
[
0
,
1
]
f_{\theta}: \mathbb{R}^3 \rightarrow [0,1]
fθ:R3→[0,1]
其中,
θ
\theta
θ 表示网络参数,输入是三维空间中的点
p
=
(
x
,
y
,
z
)
\mathbf{p} = (x, y, z)
p=(x,y,z),输出是该点的占用概率。
2. 占用场表示RGB
占用场表示RGB的扩展是将占用概率扩展为颜色信息,即将每个点的占用概率替换为RGB颜色值。具体表示为:
f
θ
:
R
3
→
R
3
f_{\theta}: \mathbb{R}^3 \rightarrow \mathbb{R}^3
fθ:R3→R3
其中,输出的
R
3
\mathbb{R}^3
R3 表示RGB颜色值。
神经辐射场(Neural Radiance Fields,简称NeRF)是一种先进的三维场景重建和渲染技术,它利用深度学习模型从一组稀疏的二维图像中重建出场景的连续体积表示。这种表示能够捕捉场景的几何结构和光照信息,从而允许从新的视角生成高质量的图像。
NeRF的核心是一个多层感知机(MLP)网络,该网络学习将空间位置和观察方向映射到颜色和密度值。这可以表示为以下函数:
F : ( x , y , z , d ) → ( R , G , B , σ ) F: (x, y, z, d) \rightarrow (R, G, B, \sigma) F:(x,y,z,d)→(R,G,B,σ)
其中:
- ( x , y , z ) (x, y, z) (x,y,z) 表示三维空间中某点的位置坐标。
- d d d 表示从该点出发的光线的方向向量。
- ( R , G , B ) (R, G, B) (R,G,B) 表示该点的颜色值,通常为RGB三通道。
- σ \sigma σ 表示该点的体积密度,用于体积渲染过程中计算光线的吸收和散射。
体积渲染
NeRF使用体积渲染技术来合成图像。对于每条从相机发出的光线,NeRF沿光线路径采样多个点,并使用网络 F F F 预测每个点的颜色和密度。然后,通过积分这些点的颜色和密度来计算光线的最终颜色。体积渲染方程可以表示为:
C ( r ) = ∫ t n t f T ( t ) σ ( r ( t ) ) c ( r ( t ) , d ) d t C(\mathbf{r}) = \int_{t_n}^{t_f} T(t) \sigma(\mathbf{r}(t)) \mathbf{c}(\mathbf{r}(t), d) dt C(r)=∫tntfT(t)σ(r(t))c(r(t),d)dt
其中:
- r ( t ) = o + t d \mathbf{r}(t) = o + td r(t)=o+td 表示光线的参数化表示,其中 o o o 是相机位置, d d d 是光线方向, t t t 是沿光线的参数。
- T ( t ) T(t) T(t) 是累积透射率,表示光线从起点到当前点未被吸收的概率。
- σ ( r ( t ) ) \sigma(\mathbf{r}(t)) σ(r(t)) 和 c ( r ( t ) , d ) \mathbf{c}(\mathbf{r}(t), d) c(r(t),d) 分别是通过神经网络 F F F 预测的体积密度和颜色。
参考链接:
https://blog.csdn.net/weixin_43117620/article/details/131980822