水平集方程的推导

水平集方法

水平集方法是一种隐式描述移动界面的欧拉方法, 最早由 Osher 和 Sethian 在1988年引入。

水平集方程的推导

在区域$\Omega$内,考虑随时间$t$演化的界面$\Gamma=\Gamma(x,t)$,其中$x$表示$\Gamma$上的一点。移动界面可以用一个函数$\Phi(x,t)$的零水平集表示, 即$\Gamma=\{x|\Phi(x,t)=0\}$。给定$\Omega$上的速度向量场$\vec{V}(x,t)$,则方程$(1)$描述了$\Phi$的水平集以速度$\vec{V}(x,t)$在区域$\Omega$中传播的过程,该方程就称为水平集方程。

$${\Phi}_t + V \cdot \nabla\Phi = 0 \tag{1}$$

假设我们关注$\Phi(x,y,t)=0$所表示的移动界面。这意味着界面上的点在移动过程中,始终符合$\Phi(x,y,t)=0$.如此则有:

$$\frac{d}{dt}{\Phi\left(x(t),y(t),t\right)}=0$$

应用链式求导法则:

$${\Phi}_t+{{\Phi}_x}{x_t} + {{\Phi}_y}{y_t} = 0$$ $${\Phi}_t+ (x_y,y_t)\cdot {{\Phi}_y}{y_t} = 0$$ $${\Phi}_t+ \vec{V}\cdot{\nabla{\Phi}}=0 \tag{2}$$

其中$\vec{V}=(x_y,y_t)$.这就是我们需要求解的水平及方程。方程$(2)$描述了水平集在外部速度场中的移动,建立了隐式表达与显式表达之间的桥梁。

进一步看,水平集曲面的法向量可以如下表示:

$$\vec{N} = \frac{\nabla\Phi(x,y,t)}{\left|\nabla\Phi(x,y,t)\right|}$$

观察方程$(2)$,$\vec{V}\cdot{\nabla{\Phi}}$这一项可以理解为:这些点在水平集曲面法向上的分量才会影响曲面的形状。切向上面的速度只是在曲面内部平移。

法向上的分量可以表示为:

$${V_n} = \vec{V}\cdot{\vec{N}} = \vec{V}{\cdot} \frac{\nabla\Phi(x,y,t)}{\left|\nabla\Phi(x,y,t)\right|}$$

继续变换:

$${V_n} {\left|\nabla\Phi(x,y,t)\right|} = \vec{V}{\cdot} \nabla\Phi(x,y,t)$$

将这一项代入方程$(2)$,得到用于计算的方程:

$${\Phi}_t + {V_n} {\left|\nabla\Phi(x,y,t)\right|}=0$$

这是一个标量方程,很容易用数学方法求解。

${\left|\nabla\Phi(x,y,t)\right|}$一项,在标准的有向距离场中应该恒等于1,但非均匀速度场下,每一步之后该特征就会被破坏,需要进行重新初始化操作。如果速度场式均匀的,则方程变为:

$${\Phi}_t + {V_n}=0$$ $$\Phi = C + t{V_n}$$

有解析解。实际上Level Set方法退化为最小距离场方法。


Level Set 方法原始文献:

Osher, Stanley, and James A Sethian. “Fronts Propagating with Curvature-Dependent Speed: Algorithms Based on Hamilton-Jacobi Formulations.” Journal of Computational Physics 79, no. 1: 12–49.

—————— 本文参考了:

http://weihuayi.github.io/numerical/Levelset-method.html

————-

附件们

  • 最后更改: 2019/05/29 14:18