3D 快速行进算法(Fast Marching Method in 3D case)

本文详细介绍了3D快速行进算法在求解Eikonal方程中的应用,特别是针对三维网格或Voxel环境的解决方案。通过分析不同情况下U与相邻节点的关系,推导出满足条件的解,并对比二维情况进行了讨论。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Intro

快速行进算法用来高效求解程函方程(Eikonal Equation) F∥∇U∥=1F\Vert\nabla U\Vert = 1FU=1, F为速度场函数( Velocity Field Function). 符号距离函数为这个方程的近似解,当F=1F = 1F=1时,二维情况下F(x,y)=1F(x, y) = 1F(x,y)=1, 三维情况下F(x,y,z)=1F(x, y, z) = 1F(x,y,z)=1. 该方程为非线性偏微分方程,一般用数值方法也即有限差分来进行求解,其一阶有限差分近似为
(max(Δ−xU,−Δ+xU,0))2+(max(Δ−yU,−Δ+yU,0))2=1/F(\text{max}(\Delta_{-x}U, -\Delta_{+x}U, 0))^2 + (\text{max}(\Delta_{-y}U, -\Delta_{+y}U, 0))^2 = 1 / F(max(ΔxU,Δ+xU,0))2+(max(ΔyU,Δ+yU,0))2=1/F
这个有限差分如何得到可以参考Osher或Sethian的著作。
三维情况下方程左侧再添加一项对zzz的差分。

Derive solution

大多数博客只讨论了二维情况,对三维的考虑都是基于mesh,由于我这次做的项目使用的三维网格(or Voxel),以小立方体为单位。具体的解的推导有点不一样,但大部分类似。
考虑网格点i,j,ki, j, ki,j,k, 设Ux=min(Ui−1,j,k,Ui+1,j,k),Uy=min(Ui,j−1,k,Ui,j+1,k),Uz=min(Ui,j,k−1,Ui,j,k+1)U^x = \text{min}(U_{i - 1, j, k}, U_{i+1, j, k}), U^y = \text{min}(U_{i, j - 1, k}, U_{i, j + 1, k}), U^z = \text{min}(U_{i, j, k-1}, U_{i, j, k+1})Ux=min(Ui1,j,k,Ui+1,j,k),Uy=min(Ui,j1,k,Ui,j+1,k),Uz=min(Ui,j,k1,Ui,j,k+1)
分以下几种情况考虑

  1. U>Ux,Uy,UzU > U^x, U^y, U^zU>Ux,Uy,Uz, 即 U>max(Ux,Uy,Uz)=UxU>\text{max}(U^x, U^y, U^z)=U^xU>max(Ux,U
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值