人工智能

医学图像分割及应用

2020-09-21  本文已影响0人  此间不留白

截至目前,我们已经学习了很多关于图像分割的相关算法,就此,对图像的分割算法做以下总结:

水平集算法

基于能量的分割方法,有一些显著的缺点,如:

水平集算法的提出可以有效解决上述缺点,所谓水平,即指同一高度的一些像素点,将水平集的算法引入到图像分析的领域,水平集算法提出了一个更高的维度来表达这些曲线。

水平集算法对图像的活动轮廓分割有一些新的术语表达:
contour \rightarrow front
contour energy \rightarrow forces
image energy \rightarrow speed function

为了避免3D 轮廓计算的复杂性,提出一个 零水平集(zero level set)的概念,并且提出了一个动态的坐标平面Oxy表达front的演化,如下图所示,我们总能总结出当前t=0时刻的水平面,根据曲面的函数表达,总能总能计算出下一时刻的轮廓演化。与图像能量表达的轮廓不同,水平集算法多了一个平面的维度对轮廓施加影响。

水平集算法通过零水平集的设置和初始轮廓的约束求解偏微分方程的方式实现。

如下图所示,形象地表示了一个水平集算法的原理示意图,在front里面的点小于0,而front外面的点大于0,零水平面所对应的点设为0



不需要移动轮廓,仅仅通过改变图片中的一些值就可以很容易地实现图像地分割。


水平集算法的运算流程如下:

水平集算法的一个重要概念是速度函数(speed function),而对速度函数
有以下三个概念:

front通过迭代实现繁衍,而迭代的过程必有一个停止条件,此条件是由图像本身的性质决定的,gradient函数来表示这一停止条件,如gradient_I (x_{i,j}),有以下三种常用的函数:
g_I(x_{i,j}) = \frac{1}{1+ x_{i,j}}
g_I(x_{i,j}) = \frac{1}{1+ x_{i,j}^2}
g_I(x_{i,j}) = e^{-x_{i,j}}
x_{i,j} = |\triangledown G_{\sigma}*I(i,j)|

水平集算法的扩展可以从两个方向进行:

为了改进水平,提出了一个快速行进算法(Fast Marching)

Fast marching

Fast Marching 算法使得front朝着一个方向前进,要么扩展,要么收缩,避免了分割轮廓的抖动,提高了算法的运行速度,同时,为了避免轮廓的碰撞,每个网路与轮廓点只交叉一次。

在实际的算法应用中,通常将Fast Marching算法和 水平集算法结合来完成图像的分割,用Fast Marching 算法高效的实现轮廓线的行进,完成一个粗分割,当算法趋向于收敛时,用水平集算法完成更为精准的分割。

如下图所示,任意一个时刻点轮廓线网格点交叉的坐标 T(x,y ),并且在任意高度处,表面会给出在t时刻所到达点的集合。

上一篇下一篇

猜你喜欢

热点阅读