基于改进Snake算法的轮廓线提取
2013-08-16热孜万古丽夏米西丁
热孜万古丽·夏米西丁
(新疆师范大学计算机科学与技术学院,新疆乌鲁木齐830054)
0 引言
Kass[1]等首次提出Snake 模型,原始的Snake 模型由一组控制点组成,这些点首尾以直线相连构成轮廓。在控制点定义能量函数,能量由三部分组成,摆阔弹性能量,弯曲能量以及外部能量。最终对图像的分割转换为求解能量函数极小化。 这个基本的Snakes 模型,在没有图像力平衡的条件下, 内部力将把所有控制点收缩为一点或者一条直线。Cohen[2]等引入一个膨胀的外部力,这样的轮廓线可以像气球一样膨胀,具有更强的动态行为能力。 Kass 提出的Snake 模型初始轮廓线必须离真实边界很近,否则得不到正确的结果,Xu Chenyang[3]等提出GVF Snake 很好的解决了这个问题。GVF Snake 的创新在于将传统的Snake的图像力用扩散方程进行处理,得到整个图像域的梯度向量场作为外部力。 经过扩散方程处理后的GVF 比图像力更加有序、更能体现物体边界的宏观走势。 Caselles 等和malladi 等分别独立地提出了Snake 测地线模型,给出了一种比导数更加优美而牢固的内部力数学描述。 这种模型基于测地流夫人曲线演化,演化速度和曲率均值相关。Osher 与Sethian[4]提出Level set 方法,该方法特点是构造一个三维曲面,和图像平面相交于snake 曲线,Level set 通过演变这个三维曲面而使Snake曲线变形。 这种升维处理问题的方法虽然复杂些,但好处是Snake 曲线的拓扑变化不会造成3 维曲面的拓扑变化,这使得Level set 可以动态的同时检测几个物体,而无需事先知道确切数目。
1 改进的Snake 算法的基本原理
改进的Snake 方法的基本思想是,在图像的空间域中初始化一条参数化的活动轮廓曲线,并使该曲线收敛到图像中目标的边界,从而达到对图像进行分割的目的。能量最小化式是在能量最小化过程中产生内力和外力的。 活动轮廓曲线表示为X(s,t)=(x(s,t),y(s,t)),其中X为二维坐标点,t 为时间参数,s 为归一化弧长参数,取值为0≤s≤1。活动轮廓线在图像的空间域运动,去能量函数为:
E(X)=Eint(X)+Eext(X)(公式2.1)
其中Eint(x)是内部力量,驱使活动轮廓曲线伸缩或者弯曲,Eext(x)是外部能量,引导活动轮廓曲线朝着目标的边界方向运动。 内部能量定义为:
其中,一阶微分形式是活动轮廓曲线长度的变化率,弹性系数α用来控制轮廓曲线以较快或者较慢的速度进行收缩;二阶微分形式是活动轮廓曲线曲率的变化率,刚性系数β 控制活动轮廓曲线沿着法线方向朝着目标边缘运动的速度。合理调整这两个系数有助于使得活动轮廓曲线在发生形变的过程中保持连续性和光滑性。
由变分原理和欧拉方程可知,要使得(公式2.1)能量函数最小化,活动轮廓曲线应满足以下条件:
2 基于改进Snake 算法的算法在颅面CT 轮廓线提取的实验结果
面皮的实验结果: 初始化参数: 平滑参数α=l.80、 曲率参数β=1.50、外力参数γ=0.80。 (此参数经50 套CT、共10000 多张CT 试验,得到针对提取面皮轮廓线的较优值)图1 中(a)初始轮廓,(b)搜索邻域为7, 未加入边缘灰度势能先验知识,(c) 加入控制力参数σ 大小为0.5,边缘灰度势能先验知识取一700,搜索邻域为13,(d)在(c)的基础上增加搜索邻域为15。 图1(b):由于图3.13(a)中的初始轮廓与正确轮廓偏离较人, 在搜索范围比较小的情况下,Snake 算法很难使初始化轮廓线收敛到正确轮廓。 图3.13(c):把先验知识加入到Snake 算法中,即己知物体轮廓与背景的灰度差为一700,并且增大搜索邻域到9,以便Snake 在更大的范围进行搜索,进一步增大了搜索正确率。由结果知,与图1(b)相比,图1(c)鼻尖处的初始轮廓全部收敛到了正确的轮廓线上.但是由于Snake 算法对初始轮廓过度依赖性,脸附近的还是有一些曲线没能正确收敛.图1(d)增加了搜索领域,随着搜索领域的增加,初始轮廓完全收敛到目标轮廓线.
图1
综上可知, 适当增加边缘灰度势能和搜索领域, 很好的提高了Snake 算法的效率.图3 是颅骨的实验结果:可以看出, Snake 算法可以实现有选择的提取需要的颅骨轮廓线,并且提取出来的效果也比较准确.本文针对传统Snake 算法对初始轮廓的依赖性,基于贪婪算法,结合图像边缘附近灰度值差异显著的特点,加入图像边缘灰度值能量,能够使图像力把曲线往目标边缘处拉动.增加其搜索领域,有效地避免局部能量最小化,以准确获得图像的边缘数据点.应用于序列CT 图像,由于序列CT 图像相邻的两张特征相似,大大减少了手工操作.
图2 原始轮廓线
图3 改进Snake 算法提取颅骨轮廓线的结果
采用Snake 算法进行颅骨最外层轮廓线提取,是因为这个算法可以手动选择所需提取区域,去除那些重建颅骨模型不需要颈椎及颅内嗓音.符合提取复杂颅骨轮廓线的需要.另外,CT 上一张图像与下一张图像形态十分相近, Snake 算法可以对满足这种条件的图像进行批处理的,采用Snake 算法,不仅可以手动提取所需轮廓部分,还可以对大量数据进行有效地批处理.
3 结论
改进的Snake 算法可以精准地把颅骨部分和脑内杂质部分分离,提取出不连续的颅骨最外层轮廓线,是因为这个算法可以手动选择所需提取区域,去除那些重建颅骨模型不需要颈椎及颅内嗓音.符合提取复杂颅骨轮廓线的需要.采用Snake 算法,不仅可以手动提取所需轮廓部分,还可以对大量数据进行有效地批处理.。
[1]Kass M, Witkin A, Terzopoulos D. Snakes: Active Contour Models.International Journal of Computer Vision[J].1987:321-331.
[2]Cohen L D. On Active Contour Models and Balloons[J]. CVGIP(53),1991(2):211-218.
[3]Xu C, Prince P L. Snakes, Shapes, and Gradient Vector Flow. IEEE Trans[J].on Image Processing,1998,7:359-369.
[4]Osher S, Rudin L. Feature-oriented Image Enhancement Using Shock Filters.SIAM J[J]. Num. Analysis,1990,27:919-940.