石佳昊,苑玮琦
(沈阳工业大学视觉检测技术研究所,沈阳 110870)
由糖尿病引起的眼底病变是糖尿病患者常见的并发疾病。眼底病变会引起患者视力下降,如不能及时进行诊断治疗甚至会导致失明[1]。当前,眼科医生通过肉眼观察眼底图像的方式,对眼底病变进行筛查和诊断。其中,硬性渗出物的数量和面积是诊断的重要依据[2]。由于眼科医生的数量限制以及巨大的糖尿病患者数量,使得眼底病变的早期诊断面临巨大困难。如果能够采用机器视觉技术实现眼底病变的自动化辅助诊断,将大大提高眼底病变的诊断效率[3]。因此,对眼底图像硬性渗出物检测算法的研究具有十分重要的意义。为了实现眼底硬性渗出物的自动化检测,本研究从方向空间理论出发,结合上下采样对眼底图像的平滑结果,提出基于凸线段绝对幅值的眼底硬性渗出物的提取方法以及基于反向值的绝对幅值修正方法。
所提算法的具体步骤为:①对眼底图像先进行下采样再进行上采样,完成对眼底图像的平滑;②根据方向空间理论计算出凸线段的绝对幅值,并通过凸线段的反向值对绝对幅值进行修正,达到对伪阳性区域的绝对幅值进行抑制从而减小伪阳性区域干扰的目的;③使用最大间距法对绝对幅值直方图进行二分类,得到硬性渗出物的检测结果。
在眼底图像中,除了有效数据区域,还存在无效数据区域。为了减小无效数据区域的影响,根据数据集提供的掩膜图像,如图1 所示,对眼底图像有效数据进行提取。首先,使用罗伯特算子对图1(a)的掩模图像进行边缘检测;然后,根据边缘检测结果,如图1(b)所示,得到有效数据的边界坐标;最后,按行根据左右边界坐标对眼底图像有效区域的数据进行提取。由于眼底图像以黄白红色等暖色调为主,所以在绿色通道中眼底图像的各种组织会表现得更为清晰明显[4]。因此,选择绿色通道的眼底图像进行有效区域数据提取。由于研究范围仅限为眼底硬性渗出物检测,因此对视盘区域数据进行提前的标记剔除。
图1 眼底掩模图像示意图
由于眼底图像中存在不同程度的噪声,且眼底图像中存在血管交叠以及硬性渗出物的堆积,导致灰度分布曲线十分复杂。在此提出一种保留眼底图像主要目标的平滑方法。首先,对眼底图像采取16倍下采样,对主要目标进行抽象,其公式如下:
其中,m 为输出图片大小;n 为输入图片大小;p 为补充像素的大小;f 为卷积核大小;p 为步长。其中p 值选为0,f 选为8,s 选为16。然后,对抽象后的图像进行上采样还原到图片的原始尺寸1500×1152 像素,其公式如下:
公式(2)中字母含义与公式(1)中相同。经过上下采样处理过的图片,对于眼底图像中较小的目标实现了平滑的效果,如图2 所示。
图2 眼底图像较小目标平滑处理
2.3.1 绝对幅值计算
对凸线段绝对幅值的计算是基于方向空间理论来完成的。方向空间理论是指:在笛卡尔坐标系中,灰度图像的灰度曲面在与X-Y 平面垂直的灰度级截面内,与灰度级曲面相交的部分是一条波动的曲线,称为灰度分布曲线,示意图如图3 所示。在灰度分布曲线中,通过计算凸线段最大灰度值与相邻凹线段最小灰度值的差值,可以得到凸线段和凹线段的幅值。以凸线段为例,定义较大的差值为该凸线段的相对幅值,较小的差值为该凸线段的绝对幅值。绝对幅值较大的凸线段代表亮目标[5]。
图3 凸线段示意图
首先按边界坐标对每行有效数据进行提取,然后对每行有效眼底数据进行极值点计算,原理为:当被判断像素点的像素值大于附近像素点的像素值,则该点为极大值点;如果被判断像素点的像素值小于附近像素点的像素值,则该点为极小值点。根据极大值点与相邻极小值点的灰度值对凸线段的绝对幅值进行计算,公式为:
其中,i 代表凸线段序号;f(i)代表凸线段绝对幅值;下标left 代表凸线段左侧的幅值,下标right 代表凸线段右侧的幅值。得到的凸线段幅值情况如图4 所示。对图4(a)中亮线所示眼底图像数据进行凸线段绝对幅值计算,得到如图4(b)的凸线段绝对幅值分布直方图。位于直方图中间的幅值具有较大的幅值。对于代表眼底背景的凸线段而言,由于其与周围灰度值差异不大,通常情况下不应具有较大的幅值。并且该位置的幅值不仅会对眼底背景和硬性渗出物的二分类造成干扰,还会造成硬性渗出物的误检。因此,需要对该位置幅值异常的原因进行分析,并根据异常原因对绝对幅值进行修正。
图4 凸线段绝对幅值分布检测
2.3.2 绝对幅值修正
得到的眼底组织灰度分布曲线如图5 所示。其中图5(a)两条竖线之间的凸线段代表硬性渗出物,对应的极大值点灰度值较高,与背景差异较大,具有较大的绝对幅值;图5(b)曲线中竖线之间的凸线段代表眼底背景,对应的极大值点灰度值较低,与背景差异较小,但由于两侧凹线段距离较近,对应这两个凹线段的极小值点的灰度值较低,造成该凸线段的绝对幅值偏大。
图5 眼底组织灰度分布曲线
由分析可知,代表硬性渗出物的凸线段由于自身原因,绝对幅值较大。而代表背景的凸线段由于附近凹线段影响,绝对幅值较大。因此,可以从凸线段两侧凹线段的绝对幅值出发,对绝对幅值进行修正,对干扰进行抑制。对图5 观察可知,代表硬性渗出物的凸线段两侧凹线段的绝对幅值对凸线段的绝对幅值影响有限,而由近距血管割裂眼底背景形成的凸线段受两侧凹线段绝对幅值影响很大。因此,定义凸线段两侧凹线段的绝对幅值为对应侧的反向值。当计算凸线段幅值时,左右两侧幅值分别先减去对应侧反向值得到对应的幅值,公式为:
其中,i 代表凸线段序号;t(i)代表修正后的幅值;f(i)代表修正前的幅值;g(i)代表反向值。按公式(3)对绝对幅值进行判断,最终得到修正后的绝对幅值。将如图4(a)中亮线所示眼底图像数据按以上算法进行计算、修正、判断,得到绝对幅值直方图,如图6 所示。观察可知,修正幅值形成的直方图对于代表硬性渗出物幅值与代表眼底背景的幅值具有较好的区分度,并且抑制了近距血管割裂背景的干扰。
图6 修正绝对幅值直方图
在绝对幅值分布直方图中,代表背景的幅值与代表硬性渗出物的幅值间具有该直方图中最大的幅值空白间距。以此为依据,可以寻找直方图中的最大空白区域,并以此为依据对目标进行区分,此区分方法称之为最大间距法。可以使用该方法对眼底背景和硬性渗出物进行有效的区分。使用该算法对眼底图像进行硬性渗出物检测,检测结果如图7 所示。观察可知,算法在对近距血管进行较好抑制的同时,可以有效地对眼底硬性渗出物进行检测。
图7 检测结果
使用DIARETDB1 数据集对所提出的算法进行评估。该数据集包含在不同光照条件下拍摄的,包含各种眼底病变的眼底图像89 张。其中包含硬性渗出物的眼底图像有65 张[6]。该数据集由眼科专家对包含硬性渗出物的区域进行了标记,如图8 所示。
图8 给定病变范围
医学上采用阳性和阴性对诊断结果进行描述,因此对眼底图像中硬性渗出物所在区域为阳性,正常区域为阴性。检测结果对应阳性正确检测、阴性正确检测、误检和漏检有4 种表述方式。对应图7图像,根据数据集给定的硬性渗出物范围,当检测结果位于给定范围内则该检测结果为真阳性(TP);检测结果不在给定范围内则该检测结果为假阳性(FP);当阴性图片中不存在硬性渗出物的检测标记,该检测结果为真阴性(TN);当阳性眼底图片中不存在硬性渗出物的检测标记,该检测结果为假阴性(FN)[7]。根据这四个参数和如下公式,可以分别对算法的灵敏度、特异度和准确度进行计算:
对所提出算法的检测结果进行统计分析,得出该眼底硬性渗出物检测算法的敏感度、特异度和准确度分别为81.8%、74.1%和81.7%。
可见,本算法敏感度较高,特异度一般,整体准确度可以达到80%以上。根据医学诊断准确率的标准,初次诊断准确率应大于80%[8],表明该算法可以有效帮助医生进行辅助诊断。该算法对于眼底图像中明显的硬性渗出物具有比较好的检测效果,并且解决了由于图像采集条件限制以及渗出物堆叠造成的灰度分布曲线复杂,以及近距离血管割裂眼底背景造成误检等极具挑战性的问题。但是对于血管大曲率弯折与眼底本身的剧烈灰度变化叠加情况造成的误检问题仍无法得到有效的解决。
作为一种对眼底图像硬性渗出物检测的自动化眼科辅助诊断算法,本算法基于方向空间理论,结合适当倍率的上下采样图像平滑算法,使用较为简单的算法解决了眼底图像灰度分布曲线复杂的问题,实现了凸线段的有效提取。在不单独去除眼底血管的情况下,解决了近距血管造成误检的问题,在不同光照条件下的眼底图像中表现稳定,具有很好的鲁棒性。在DIARETDB1 数据集上的测试结果达到较高的敏感度与准确度,可以作为眼科硬性渗出物辅助诊断的有效工具。