谢 莎,俞晨琛,陈 强
南京理工大学 计算机科学与工程学院,南京 210094
我国糖尿病的患病人数呈逐年上升趋势,目前我国约有1亿糖尿病患者,居全球第一[1],糖尿病在我国已经成为影响人们健康和生命的常见疾病,其致残率、致死率仅次于心、脑血管病及癌症[2]。糖尿病视网膜病变(DR)是最常见的糖尿病慢性并发症,是工作人群中首位致盲性眼病[3]。并且随着生活水平提高、生活方式转变以及人口老龄化的来临,DR患病率会不断增加,视力损害一旦发生很难逆转,因此,如何准确筛选无明显视力损伤的糖尿病患者是否存在DR,不仅能减轻视力损害,降低致盲率,还可节约大量社会医疗资源。
光学相干断层扫描(OCT)是一种非创伤性、非侵入性成像技术,可使视网膜产生高分辨率断层图像,广泛应用于视网膜疾病诊断治疗。尤其是频域光学相干断层成像(SD-OCT)技术,它能清晰地显示内层视网膜的微细结构,在成像速度和灵敏度上有更大优势,已逐渐成为光学相干层析成像的主流技术之一[4]。该技术能为眼科医生提供大量可用的图像数据,每个三维SD-OCT体数据称为一个Cube,由128帧图像组成,每帧图像分辨率为1 024×512,如图1所示,眼科医生可以利用这些图像数据对病变进行分析。于是视网膜病变的识别与量化分析已变得越来越重要。
图1 三维SD-OCT图像
早在20世纪七八十年代国外学者就提出DR自动筛查技术,并进行了大量的研究,其中硬性渗出的检测最为常见、重要[5]。硬性渗出是糖网病变表现之一,硬性渗出对光具有高反射率,在SD-OCT图像中表现为高信号亮斑。为了能够定量研究其与DR的关系,需要将亮斑提取出来。现阶段对图像的分析基本依靠医生的肉眼观察,工作繁重且存在许多局限,所以需要借助计算机快速、可靠地自动识别出亮斑。然而国内外大多是基于眼底图像的硬性渗出进行研究,有基于支持向量机(SVM)的眼底图像硬性渗出检测[6],有基于改进Canny边缘检测算法与形态学重构相结合的硬性渗出物(Hard Exudates,HE)自动检测[7],有基于 k近邻图区域合并的视网膜硬性渗出自动检测研究[8],有阈值法[9]等。类似的还有通过随机森林分类器分割出SD-OCT视网膜图像中的微囊性黄斑水肿[10],根据偏振度一致图像结合阈值法在偏振敏感型光学相干断层(PS-OCT)图像中分割出亮斑[11]等,但是目前在SD-OCT图像上自动提取亮斑的研究几乎只有文献[12]。
文献[12]基于自适应阈值及二维区域生长法提取亮斑,本文在其基础上做了进一步的研究。同样,对图像的预处理,使用双边滤波[13]对图像去噪。亮斑主要在神经纤维-神经节细胞层(NFL-GCL)与感光细胞层内节-感光细胞层外节(IS-OS)之间,如图2,故使用基于图论的层分割算法[14]来限制亮斑所在区域,提高提取效率。针对SD-OCT视网膜图像的三维特性,本文将文献[12]的二维方法扩展到三维,另外使用自适应阈值法[15]计算了两次阈值,进行了两次区域生长[16]。算法流程如图3所示。
图3 本文算法流程
若128帧图像采用一个整体阈值或者每帧图像采用其单独阈值,对小部分糖网图像来说,阈值会过高或过低,导致亮斑分割不完整或分割过度。且亮斑的灰度并不是均一的,其中也有部分灰度较低的像素存在,在进行区域生长时不能满足生长条件,以致亮斑生长不完全。为了解决这两个问题,本文对每帧图像计算了两个阈值:一个是使用自适应阈值法对128帧图像计算出一个整体阈值,每帧图像阈值相同;另一个是对每帧图像使用自适应阈值法,计算出每帧图像单独的阈值。进行了两次区域生长:选择两者中的大阈值数多的确定种子集合,进行第一次三维区域生长;将得到的图像在另一阈值确定的种子范围内进行第二次区域生长。
本文采用了文献[12]的自适应阈值算法,该算法主要采取了最大类间方差法,并在此基础上进行了优化,通过不断迭代来逼近最佳阈值。
选择某一阈值t,将图像的像素分成两类:
则C0和C1类的概率分别为:
其均值分别为:
图像的总体灰度均值为:
则两类像素的类间方差为:
当φ(t)取得最大值时,C0和C1两类间方差最大,即图像中目标和背景能较好的分开。故此时所对应的t即为最佳阈值。
人眼对物体亮度的感觉不仅由物体本身亮度决定,还与物体所处的背景亮度和复杂度有关。假设背景亮度为ΔI,目标亮度为I+ΔI,只有当ΔI大于某个阈值时,人眼才能从背景中将目标分辨出来,此阈值是由背景亮度决定的。ΔI和I之间的非线性关系称为阈值亮度比(TVI),ΔI称为刚可分辨亮度差。本文参照文献[16]中对ΔI的定义:
ΔI是关于图像灰度I的分段函数,其中α、β、C为待定参数,α取值在[0.01,0.30]之间,中间区间的起始灰度值a 和终止灰度值 b 取值在[45,81]和[180,210]之间。本文取α=0.06,a=50,b=200;根据函数间断点取值相等即可计算出C和β的值。
下面为区域生长具体的算法流程:
(1)根据阈值得到种子集合,并标记。将种子集合排列成一个种子队列。
(2)从种子队列的队首取出一个像素点 p,根据 p点灰度值计算刚可分辨亮度差ΔI,在 p的邻域范围内寻找未被标记的像素点集合Q。
(3)对于Q中的每个元素q,统计q的邻域内与 p亮度差小于ΔI的像素点的个数,若大于某个值,就把q加入种子队列队尾并标记,否则丢弃。遍历结束后将种子 p移出队列。
(4)若当前种子队列为空,则算法结束,否则返回第(2)步。
本文进行了两次区域生长:
第一次生长条件:在3×3×3的窗口范围寻找符合要求的像素点,像素点个数大于18,则标记为种子;
第二次生长条件:在3×3的窗口范围寻找符合要求的像素点,像素点个数大于5,则标记为种子。
因为自动分割出来的并不一定全是亮斑,有些像素较高但是与背景灰度差小,于是本文剔除了亮斑灰度与其边缘外5×5范围像素平均灰度差小于16的假亮斑。边缘外5×5范围像素是指以边缘的每一个像素为中心,半径大小为5个像素的窗口所覆盖的且不属于亮斑的像素。图4为剔除对比度较低的假亮斑前后的对比图。
图4 剔除对比度低亮斑的前后对比图
糖网图像中有些血管亮度较高,血管下方的阴影亮度较低,血管与上方的亮度差很小,于是本文取亮斑边缘外5×5范围,剔除亮斑上方与下方平均灰度差大于30且亮斑与上方平均灰度差小于10的亮斑,实验结果表明,绝大部分误分割的血管都被剔除。图5为剔除血管前后的对比图。
图5 剔除血管前后对比图
本实验运行的环境为MATLAB R2014a,电脑的配置为2.60 GHz主频,Corei5处理器,4 GB内存,465 GB硬盘。为了检验本文分割亮斑算法的准确性,选取了20只患有DR的眼睛图像进行实验。为了进行比较,将本文方法与文献[12]方法、手工分割的图像进行了对比。本文不考虑面积小于50个像素单位的亮斑。
下面给出四组文献[12]分割、本文分割与手工分割的对比图,如图6所示。
由手工分割和本文自动分割对比发现,本文采取的方法基本能够分割出大部分亮斑,对于灰度相对较小的亮斑还不能完全分割。分割误差主要是过分割和部分漏分割,如图6圈出的蓝色部分。
由本文自动分割和文献[12]自动分割对比发现,文献[12]的方法不能使一些灰度差异较大的亮斑生长完全,如图6圈出的黄色部分,而本文采用的方法能够较好地解决这个问题,且过分割、漏分割误差更小。
图6 文献[12]分割(第一列)、本文分割(第二列)与手工分割(第三列)的对比图
本文主要参考文献[17]中的评价标准来衡量该算法的精确度。从三方面进行评价:(1)面积覆盖率,即真实亮斑区域的准确率;(2)欠分割率,即真实亮斑区域的漏检率;(3)过分割率,即真实亮斑区域的误差率。定义分别如下式(7)~(9)所示:
其中P代表手工分割的亮斑区域,H代表自动分割的亮斑区域。
与文献[12]方法相比较,本文方法具有以下优点:
(1)对阈值的选取进行了改进。若使用单阈值处理,阈值低了会将背景也分割出来,阈值高了会过滤掉亮斑,因此本文通过自适应阈值法计算两个阈值。然后选择大阈值数多的作为基础,用另一阈值限制生长范围,这样既提高了种子点的准确度,尽可能避免背景成为种子点,减少了过度分割,也提高了算法的效率。表1数据表明,本文方法的过分割率小于文献[12]的算法。
表1 不同方法的亮斑分割结果比较%
(2)对区域生长进行了改进。本文进行了两次区域生长,第一次为大阈值的三维区域生长,第二次是在小阈值确定的种子图像范围进行的区域生长。这样不仅将灰度不均一的亮斑生长完全,而且限制了亮斑的生长区域,不会生长过度,既能提高面积覆盖率,也能减少欠分割率。表1数据表明,本文方法的面积覆盖率高于文献[12]的算法,且欠分割率也较小。
总体来说,本文算法优于文献[12]算法。
但是与手工分割对比发现,本文方法还存在如下不足:
(1)过分割率大。由于部分背景灰度较高,将其标记为种子点并进行了区域生长;也可能是亮斑太小,手工分割没有考虑而自动分割将其分割了出来,导致过分割;另外,当图像边缘的灰度变化平缓时,容易产生过分割[18]。
(2)欠分割率大。由于部分亮斑灰度较低,导致没有种子点,无法生长;或者部分亮斑边缘灰度较小,没有生长完全;也有可能在亮斑边缘处与手工分割有些误差,导致欠分割。
近年来,学者们提出了很多快速、鲁棒的分割方法,如基于统计学的方法、基于活动轮廓的方法、基于图论的方法等,但都具有局限性且没有完全实现全自动和高实时性[19]。文献[20]在区域生长准则中加入图像的纹理信息和灰度信息;文献[21]在区域生长算法中融合了模糊理论和优化算法;陆剑锋等[22]把区域生长算法和各向异性滤波技术等结合。没有考虑多种图像特性,分割理论单一,可能也是本文分割方法精确度不够的原因之一。
本文首先对图像进行去噪处理,采用视网膜层分割算法限制了亮斑所在区域,然后在自适应阈值产生的整体阈值及单帧阈值之间选择大阈值数多的作为基础进行第一次三维区域生长,接着将该图像在另一阈值产生的种子图像范围内进行第二次区域生长,最终分割出亮斑。实验表明,本文方法基本能实现自动分割亮斑的功能,且不管在定量还是定性评价上均优于现有算法。不过本文算法还有很多值得改进的地方。在阈值选取和区域生长条件的控制上,可以结合亮斑的特点及背景信息进一步改进,也可以结合其他分割理论,使得实验结果更加准确。过分割率和欠分割率过大,这也是今后研究中需要解决的问题。