Content area
Full text
1 引言
研究表明,各类眼科疾病以及心脑血管疾病会对视网膜血管造成形变、出血等不同程度的影响[1]。随着生活水平的提高,这类疾病的发病率呈现逐年增长的趋势。临床上,医疗人员能够从检眼镜采集的彩色眼底图像中提取视网膜血管,然后通过对血管形态状况的分析达到诊断这类疾病的目的。但是,由于受眼底图像采集技术的限制,图像中往往存在大量噪声,再加之视网膜血管自身结构复杂多变,使得视网膜血管的分割变得困难重重。传统方法中依靠人工手动分割视网膜血管,不仅工作量巨大极为耗时,而且受主观因素影响严重。因此,利用计算机技术,找到一种能够快速、准确分割视网膜血管的算法,实现对眼底图像血管特征的实时提取,对辅助医疗人员诊断眼科疾病、心脑血管疾病等具有重要作用[2]。
近年来,众多医学图像处理领域的专家学者针对视网膜血管的自动分割提出了大量算法。这些算法根据有无标签可分为基于监督学习的方法和基于无监督学习的方法[3]。基于监督学习的方法尽管在分割准确率这一性能指标上有优势,但是该类方法往往需要事先建立大型的网络模型,并且需要预先对大量标准图像进行手动标注来支撑模型的训练,不能很好地对眼底图像进行快速的血管分割。
无监督学习方法通常使用滤波器响应或者其它基于模型的技术来提取血管。根据图像处理方法的不同,可以细分为三小类:匹配滤波、血管追踪和基于模型的方法。匹配滤波法使用二维卷积核与眼底图像卷积,匹配滤波器的响应表明血管的存在。Chaudhiri等[4]人将匹配滤波模型与蚁群算法相结合,并对眼底图像同时进行这两种处理,然后将两者结合得到最后的血管网络。Jiang等[5]人采用自适应局部阈值分割的方法来分割血管,对每一个像素在邻域窗口内求阈值,而不是对整幅图求阈值。Gang等[6]人通过试验模拟和数学分析提出了一种幅度修正的二维高斯滤波方法。Zhang等[7]人提出了一种名为MF-FDOG的匹配滤波方法用于检测血管边缘。文献[8-10]使用Gabor滤波器对眼底血管进行增强处理达到了增强血管对比度的目的,但是文献[8]中的算法容易对视盘边缘造成误检,文献[9]中的算法能较好地处理眼底图中中央凹光照不均带来的影响,然而算法应用到病理图像上时容易将病灶区域当作血管分割出来。这类基于匹配滤波的方法在大多数健康图片上的分割效果较好,但是在分割某些病理图片和对比度偏低的图像时,其假阳性偏大[10]。血管追踪法是使用局部信息来分割两点间的血管[11],也是依赖局部区域中的种子点来检测血管,血管纵向截面的中心是利用灰度强度和弯曲度来确定的。Vlachos[12]提出了一种新的应用迭代线跟踪程序的视网膜图像血管网络提取算法。此类方法能计算出准确的血管宽度,但是往往不能检测没有种子点的血管。基于模型的方法使用显式的血管模型,如血管轮廓模型和形变模型来提取眼底血管。Zana等[13]人提出了一种基于数学形态学和曲率估计的算法来检测血管,Espona等[14]人使用经典的蛇形模型来分割视网膜血管,并引入形态学操作加以改进。
虽然众多研究学者提出了大量基于非监督学习的视网膜血管图像分割算法,但是目前在对微小血管和低对比度图像上分割结果有待进一步提升。目前,有学者利用脉冲耦合神经网络的神经元之间有乘性耦合动态脉动发放的特征,在平衡空间不连续的同时保留住区间信息的特点[15],将其应用到图像分割领域并取得了不错的效果[16]。但应用于眼底血管分割上往往需要手动调节大量参数,并且由于眼底图像相较于一般图像更为复杂,导致效率低、分割结果差。文献[17]从PCNN对邻域神经元激活点火的特性出发,提出了一种改进的PCNN的视网膜血管树提取方法,该算法在抵抗欠分割和过分割方面要明显优于传统阈值法和传统PCNN法,但是应用到某些病变图像中时,容易提取出病变区域。文献[18]将PCNN与Canny边缘检测器相结合,获得了较好的分割结果,但是该方法未考虑到背景像素对目标像素的干扰。文献[19]提出了一种改进的区域生长PCNN模型,该模型对图像边缘的分割效果有较大的提高,但是其分割结果受到初始种子点的影响。
本文提出了一种匹配滤波增强技术与区域生长脉冲耦合神经网络相结合的分割方法。该方法先通过一系列的预处理方案对原始彩色眼底图像进行降噪处理,然后采用脉冲耦合神经网络模型结合区域生长以及快速连接机制,自适应连接权值,停止条件,达到较好的分割状态。实验证明,该方案在健康图像上表现优异,并且对比传统的匹配滤波方法在微小血管上分割性能有明显的提升,能够达到准确、快速分割视网膜血管的目的。
2 视网膜血管图像的形态匹配增强处理
在医学图像处理领域,眼底图像的处理一直以来都相对棘手一些,主要是由于视网膜自身结构的特殊性和复杂性,使得原始眼底图像存在大量噪声,想要过滤这些噪声,就必须在特征提取之前对原始图像进行相应的预处理以达到增强对比度、去噪、去冗余的目的。
针对以上指出的原始眼底图像不够“干净”的特点,本文依次采用了灰度转换、边缘膨胀、对比度受限的自适应直方图均衡化(CLAHE)[20]、Gabor滤波与高斯滤波相结合等方法对原始彩色图像进行预处理。具体细节描述如下:
灰度转换:临床上使用检眼镜采集到的眼底图像一般为RGB彩色眼底图像,通过对RGB图像取不同颜色通道发现,红色和蓝色通道图像噪声过多,血管信息丢失严重。而在绿色通道下血管和背景的对比度相对较高,但考虑到红色和蓝色通道中仍然含有用信息,因此受文献[21]的启发提取的Y通道图片可以综合利用三个通道的信息,如图 1(a)所示。
[Image omitted: See PDF]
边缘膨胀:实验过程中发现图像经过处理后会留下边缘的轮廓信息,因此本文受文献[20]启发先采用四邻域法判断边界区域,若为边界区域则进行边缘膨胀处理,图 1(b)为进行了边缘膨胀之后的结果,可以看出边缘膨胀能有效地消除边缘轮廓。
CLAHE:为了提高图片的局部对比度,增强血管和背景的对比,同时降低微血管和主血管之间的对比度,可以使用直方图均衡化原始图像进行增强处理。但是,这样会使得局部对比度过大,导致图像失真,因此受文献[22]的启发采用局部对比度受限的直方图均衡化方法,如图 1(c)所示。
二维Gabor匹配滤波:Gabor小波[23]对图像的边缘敏感,能提供良好的方向选择和尺度选择特性,同时对光照变化具有良好的适应性。本课题通过对眼底图进行Gabor滤波处理能很好地过滤背景噪声并且提供良好的方向信息,同时能很好地适应采集环境中光照不均带来的影响。根据血管自身的特点利用多尺度的高斯曲线模拟灰度轮廓。本文设定步长为5°,区间为-90°~90°,结果如图 1中(d)所示。
二维高斯匹配滤波:根据血管曲率较小且宽度是渐进改变的特点,将血管近似看成是分段且宽度相等的线段,然后用高斯曲线模拟其横截面的灰度轮廓。由于血管方向是任意的因此需要对高斯曲线进行旋转来匹配不同方向的血管,本文设定旋转步长为15°,区间为0°~180°,如图 1(e)所示。
整个算法的过程如图 2所示。
[Image omitted: See PDF]
3 基于RG-PCNN的视网膜血管分割算法 3.1 PCNN
脉冲耦合神经网络(Pulse coupled neural network,PCNN)[24]是一种典型的第三代神经网络模型,由Echorn等人根据猫的视觉皮层中存在的同步振荡现象所提出的[25],可用于图像分割、边缘检测、降噪、去除阴影,特征提取等多种应用。PCNN神经元的模型如图 3所示。
[Image omitted: See PDF]
脉冲耦合神经网络是一个非线性的系统。它一共含有三个功能单元:其一是突触部分(输入部分),由外部输入和其他神经元的输出形成。其二为内部行为部分(调制部分),它调制输入部分并构成神经元的内部活动,最后是脉冲发放部分,包含阈值产生器和脉冲产生器[26]。
3.2 RG-PCNN
以往大部分基于PCNN的灰度图像分割算法都是用于图像的二值分割,即把背景和前景分出来,而大部分图像中,前景是由含有不同特征的对象组成的,仅仅把对象从背景中提取出来可能会使得图像丢失大量信息,文献[27]基于PCNN算法分割眼底图像时,在某些微小血管区域容易产生断点,无法实现多区域分割。Robert把区域增长方法与PCNN结合起来,应用于图像分割,简称RG-PCNN[28]。该模型在充分发挥区域增长方法优势的同时又发挥了PCNN脉冲耦合的特性,能很好地保持分割图像的连贯性,实现了图像的多值分割。本文在使用形态匹配技术对眼底图像进行图像增强的基础上结合RG-PCNN方法实现眼底图像视网膜血管的分割,得到的分割结果优于单独使用PCNN或者区域增长方法。
相比于原始RG-PCNN,本文在耦合部分如式(1),将连接系数β替换为βn:
\( {U_{ij}}[n] = {F_{ij}}[n](1 + {\beta _n}(t){L_{ij}}[n]), \)(1)
其中:U内部活动项,F为神经元的反馈输入项,L为神经元的连接输入项,i为对应像素点的横坐标值,j为像素点的纵坐标值,n表示迭代次数。在每次迭代中,βn值是变化的,先给βn设定一个初值,使得第一次发出脉冲的神经元能够就近捕获下一个神经元,然后循环处理 \({\beta _n} = {\beta _n} + {\delta _\beta }\) ,其中 \({\delta _\beta }\) 为设定的较小增量。将βn变化前后激发的神经元对应的像素区域的边缘比例以及面积比例分别进行比较,如果小于某个阈值,就继续增加βn,否则结束迭代过程。
本文使用单程条件来解决算法的终止,即每个神经元有且仅有一次发放脉冲的过程,而在此过程中,将一个区域对应的神经元同时激发。发放脉冲的迭代次数作为区域标记,迭代次数存储在一个矩阵P中,所有元素的初始值设置为0。
\( {P_i}_j[n] = \left\{ {\begin{array}{*{20}{c}} n\\ {{P_i}_j[n - 1]} \end{array}} \right.\begin{array}{*{20}{c}} {{\rm{ , }}\;}\\ , \end{array}\begin{array}{*{20}{c}} {{\rm{if }}\;\;{Y_{ij}}[n] = 1}\\ {{\rm{otherwise}}} \end{array}, \)(2)
其中: \({Y_{ij}}[n]\) 为神经元的脉冲输出, \({P_{ij}}[n]\) 为区域标记矩阵, \({T_{ij}}[n]\) 为神经元阈值。为了实现时间独立性,本文采用发出脉冲的神经元的阈值 \({W_n}\) ,n表示迭代次数。其他神经元的阈值设置一个很大的值Ω,以防止同一位置重复激发。
\( {T_i}_j[n] = \left\{ {\begin{array}{*{20}{c}} {}\\ {} \end{array}\begin{array}{*{20}{c}} {{W_n}}\\ \mathit{\Omega} \end{array}} \right.\begin{array}{*{20}{c}} , \\ , \end{array}\begin{array}{*{20}{c}} {\;{\rm{if}}}\\ {} \end{array}\begin{array}{*{20}{c}} {{P_i}_j[n - 1] = 0}\\ {{\rm{otherwise}}} \end{array}。\)(3)
将 \({W_n}\) 设置为没有激发状态神经元对应的像素的最大值,即将一个强度最大的没有激发过的神经元的初始状态设置为激发状态。如果没激发的神经元具有相同的最大强度值,则只选择一个激发。
由于PCNN模型中的连接域具有一定的时延性,被激发的神经元只能在下一次迭代时产生脉冲,会产生不连续区域以及断点,因此在此基础上本文引入了快速连接(fast-linking)机制[29]。如图 4所示。
[Image omitted: See PDF]
为了得到更好的血管分割结果,本文选取以下几种情况作为局部迭代及全局迭代终止条件,其算法伪代码如图 5所示。
[Image omitted: See PDF]
1) 所有的神经元都被激发;
2) βn大于βmax;
3) 生成血管边缘像素点数量占血管像素点总数的比例e小于设定的阈值;
4) 血管占整幅图的面积比m设定阈值;
5) 快速连接终止。
其中1)为全局迭代条件,2)、3)、4)、5)为局部迭代条件。
条件1)即整幅图片中每个像素都被划分到不同区域,不存在没有划分的像素,该条件可以通过判断P中有没有为0的元素来确定。因为P中的初始值都为0,每经过一次迭代,迭代次数赋给激发的神经元所对应的像素;条件2)即每次迭代的连接系数强度βn大于给定值βmax则终止。相比于原始RG-PCNN,本文根据实际应用场景增加了3)、4)两个终止条件。其中3)是为了判断当前种子生长合适的生长区域,如果种子生长的血管边缘像素点总个数与血管总像素点个数的比值小于设定的阈值e,则删除掉这部分伪血管,终止本次迭代,转而从剩下未激发的像素点中选择最大的种子点继续上述步骤。4)是限制血管生长总面积占整幅图的比例小于设定的阈值m,防止血管过生长。条件5)即没有神经元再被捕获。比较迭代前后激发的神经元个数,如果相等,则停止,如果迭代后激发的神经元数量仍在增加,则迭代继续。
4 结果与分析
为了测试所提出的算法的有效性。本文使用DRIVE数据库中40幅眼底图像进行实验,其中包含33幅不含病灶的健康图像,以及7幅病灶图像。本文的实验平台PC机配置为:Intel(R)CPU Core i7+16G,16G RAM的内存,软件平台为Windows10操作系统,MATLAB R2015b。
4.1 实验所用参数设置 4.1.1 预处理过程所用参数设置
预处理过程中需要设置7个参数,如表 1所示,分别是对比度受限的自适应直方图均衡化中的子块数和裁剪值,高斯匹配滤波器中卷积核的旋转角度θ1、高斯函数沿着x轴中心的偏移度σ,某一个方向上的血管段长度L1,Gabor滤波器中卷积核的旋转角度θ2某一个方向上的血管段长度L2。
表 1 测试图像预处理过程中的参数设置 Table 1 Parameter settings of test images pre-processing
直方图均衡化参数 | 二维高斯滤波器参数 | 二维Gabor滤波器参数 | ||||||
子块数 | 裁剪值 | θ1 | σ | L1 | θ2 | L2 | ||
40 | 0.02 | 15 | 1 | 9 | 5 | 2.9 |
如图 6所示,预处理结果表明,首先将原始彩色眼底图像通过取Y通道转化成灰度图,能降低图像维度,达到减少图像处理中计算量的目的;然后对灰度图像做边缘膨胀处理能有效消除边缘轮廓信息从而避免造成血管误识别;接着使用CLAHE增强血管与背景的对比度;再分别使用高斯滤波和Gabor滤波进一步增强血管信息,并弱化背景信息;最后针对两种滤波器各自的特点,按一定比例对两者的滤波结果做融合,以达到最好的滤波效果。
[Image omitted: See PDF]
实验发现,高斯滤波器和Gabor滤波器在对眼底图像的滤波响应上有各自的优缺点。如图 7所示,通过放大细节信息可以看出在单独使用高斯滤波时,背景中噪声相对较多,而单独使用Gabor滤波时,背景噪声有所减少,但是微小血管会出现失真的情况,针对两种滤波方式各自的特点,按照一定比例进行融合之后得到的结果,不仅背景噪声较少,而且微小血管信息更为准确。
[Image omitted: See PDF]
4.1.2 RG-PCNN所用参数设置
分割阶段使用6个参数,如表 2中所示,分别为连接强度系数初始值β0(根据图像的对比度情况设定),连接系数的增加项δβ,以及连接系数最大值的初始值βmax,在每次的迭代中,βn值是变化的。实验之前先给β0设置一个初始值,使第一个发出脉冲的神经元能捕获至少一个邻域,然后反复地用 \({\beta _n} = {\beta _n} + {\delta _\beta }\) 来更新βn。所有已经激发过的神经元阈值设置为一个常数Ω(默认为500),停止阈值T设置为255,边缘数量比值为e,分割的血管面积占整幅图的比例为m。
表 2 测试图像分割算法的参数设置 Table...