基于改进GVF snake模型的感兴趣区域轮廓提取方法*
2022-05-25何毅斌吴林慧
汪 强,何毅斌,吴林慧,杜 伟
(武汉工程大学 机电工程学院,湖北 武汉 430205)
0 引言
1987年Kass等[1]提出了主动轮廓(snake)模型,将图像分割问题转换为求解能量泛函最小值问题,通过构造能量泛函,在能量函数最小值的驱动下,使得轮廓曲线主动变形并向目标边缘逐渐逼近,收敛到目标边界,但对于凹陷边界的逼近效果不好。在此基础上,Xu等[2]提出了GVF snake模型,用新的力代替了传统外力,较好地解决了对初始轮廓线位置敏感的问题,但抗噪性较差。近年来,snake模型应用十分广泛,如惠卫华[3]将GVF snake模型用于图像放大,明显提高了放大图像的质量;唐克伦等[4]提出了基于矩阵分块化的算法,一定程度上提高了外力场的迭代速度;蒋小波[5]利用边界跟踪算法采样生成初始轮廓线,有效提高了图像分割的分割精度;刘丹等[6]结合区域生长与GVF snake用于超声图像分割,获得了较好的分割结果。
本文以钢板表面缺陷为研究对象,通过各向异性扩散预处理,部分扩散、部分插值求解GVF场,并基于canny算子设置初始轮廓线等方法,有效解决了传统模型图像抗噪性差、边缘特征保留能力不足、轮廓线拟合度不高等问题,实现了轮廓的准确收敛。
1 主动轮廓模型
主动轮廓模型是在整个图像域定义一条带能量的参数化初始轮廓曲线,对其能量泛函求最小值,能量最小时的曲线位置就是目标轮廓。
设初始轮廓曲线为:
X(s)=[x(s),y(s)]s∈[0,1].
(1)
其中:x(s)为初始轮廓点的水平坐标;y(s)为初始轮廓点的垂直坐标;s为弧长参数。
其能量泛函为:
(2)
其中:X′(s)为弹性能量;X″(s)为刚性能量;α和β分别为弹性系数和刚性系数;Eext(X(s))为外部能量,即外部力,表示曲线和图像局部特征吻合的情况,使轮廓线向目标边界靠拢。
外部能量一般为:
(3)
(4)
其中:Gσ(x,y)为二维高斯函数,σ为标准方差,标准方差越大,则能量场的捕获范围越大;为梯度算子;I(x,y)为图像灰度值。
当原始图像目标与背景差别明显时采用式(3);有噪声或者其他因素干扰时采用式(4)。对式(2)求解能量泛函最小值的必要条件是满足欧拉方程:
αX″(s)-βX‴(s)-Eext=0.
(5)
方程(5)为非静态,数值计算困难,可引进时间辅量求解,将X(s)当做时间t的动态函数,可得偏微分方程:
Xt(s,t)=αX″(s,t)-βX‴(s,t)-Eext.
(6)
当方程(6)收敛即求得稳定解时,可得到能量最小的snake曲线。
2 改进的GVF snake模型
2.1 各向异性扩散
针对图像中存在的低对比度、低信噪比问题,传统模型不能取得较好的处理效果,在此基础上提出各向异性扩散滤波的方法对图像进行预处理。各向异性扩散滤波可平滑图像,克服高斯滤波的缺陷,保留图像边缘。各向异性扩散滤波模型由P-M方程描述,即:
(7)
(8)
其中:k为常数项,用来控制对边缘的灵敏度,通常经验选取或者用图像噪声相关的函数来表示。
2.2 GVF场计算
GVF snake模型的实质是通过引进的GVF力场扩大捕获范围,使得轮廓线的放置位置要求降低,但运算量极大,导致运行时间较长,计算代价较高。求解GVF场的实质就是在边界图像上初始时给出一个颜色很深的polygon,通过一次次迭代的方式,将自身的信息扩散到周围的区域,变成一个尺寸倍增的颜色较浅的polygon。因此,为了减少GVF场的运算量,可以采用部分扩散、部分插值的方法来求解GVF场。设图像的灰度图为f(x,y),其像素点的数量为N,且迭代扩散的函数为:
V(x,y)=Diffusion(x,y).
(9)
用隔点线性插值的方法,令m=x+y,当其为奇数时,采用扩散迭代求解GVF场;当其为偶数时,采用线性插值的方法求解GVF场。则计算方法如下:
(10)
2.3 改进的GVF snake算法
综上所述,提出的改进算法主要步骤如下:
(1) 读取待处理图片I,将图像灰度化得到I-gary。
(2) 进行各向异性扩散,用像素散度对四个方向求偏导,结合四个方向的导热系数判断边界并进行保留。由输入的迭代次数进行迭代扩散,最终平滑图像并保留边界,得到图I-AD。
(3) 计算图I-AD的边缘图。舍弃传统的计算方法,先计算图像两个方向的梯度,然后进行归一化处理得到边缘图像矩阵f。
(4) 进行GVF场计算。采用部分扩散、部分插值的方法进行计算,得到边缘图像矩阵f。
(5) 采用基于边缘提取算子的初始轮廓定义方法定义初始轮廓曲线。先用canny边缘提取算子提取边缘信息,然后拟合一条把边缘信息包含在内的且尽可能贴合的曲线,并置于经过各向异性扩散的图像中。
(6) 使用snakedeform函数使得初始轮廓曲线在GVF外力场作用下发生形变。在形变过程中定义轮廓点间的最大、最小距离,选取合适间距进行插值操作,优化曲线。
(7) 初始轮廓曲线经多次迭代后得到最终轮廓曲线,即可以得到图像感兴趣区域的轮廓。
3 实验及结果分析
为了检测本文所提算法的提取效果,基于MATLAB R2019a对所拍摄的钢板表面缺陷图片进行感兴趣区域轮廓提取。先对原图进行各向异性处理, 然后进行边缘图和GVF场计算,最后进行曲线迭代并得到结果。提取过程及结果如图1~图6所示。
图1 各向异性扩散处理结果
图2 边缘图 图3 边缘梯度图
图4 GVF场图 图5 曲线迭代演化图
图6 提取结果
实验结果表明:
(1) 经过各向异性扩散处理后的图像能够有效地突出边缘,去除部分噪点或无关像素的干扰。
(2) 部分扩散、部分插值的GVF场计算方法减少了计算量,并且在一定程度上改善了模型抗噪性能差的缺点。当部分插值扩散越过噪点时,能够很好地减少噪声的影响。
(3) 用canny算子提取大致轮廓线来定义初始轮廓线的方法能够得到较好的最终轮廓曲线。
(4) 与传统算法模型相比,本文算法能够更好地保留感兴趣区域的边缘特征,具有较好的抗噪能力,且定位精度和拟合性高。
4 结语
传统的主动轮廓模型抗噪性差,且对初始轮廓曲线位置要求较高;GVF snake模型一定程度上改善了初始轮廓曲线的位置要求,边缘特性保持较好,但收敛性较差,同样抗噪性差;本文的改进GVF snake算法有效地解决了初始轮廓线的设置问题,提高了抗噪能力,较好地保留了边缘特性,且轮廓拟合性高,在干扰较多的情况下也能较好地提取感兴趣区域的轮廓特征。