1.形态学分析
形态学是一种比较新的图像处理方法,它可以以一种特定的形态和结构元素作为样本提取出对应的形状,从而得到我们所需要的结构,且它包含有四种基本操作:膨胀、腐蚀、以及开闭操作。基于这些操作,我们可以实现对眼底血管的提取。
2.拉普拉斯算子
Laplace算子是常用的边缘检测算子,是一种简单的各向同性的微分算子,它的作用是锐化灰度发生跳变的区域,所以它可以帮助我们检测到血管边缘。
3.提取眼底血管流程图
4. 基于形态学的血管提取方法
眼底血管可以看作由一条条较小的线段组成,因此可以利用形态学操作提取血管。提取方法过程如下:
4.1 灰度化
导入原图,对图像进行灰度处理,结果如图1所示:
图1:原图 灰度化眼底图像
4.2 灰度取反
为后续方便处理,将图像灰度化后去反,结果如图2所示:
图2:灰度取反
4.3 增强血管—形态学
如图2所示,眼底血管较粗的地方相对于背景来说比较清晰,但是较细的部分与背景的灰度差太小,不容易辨别。为了更好的后续操作,显然需要对血管进行增强。所以需要用到形态学方法增强血管,形态学方法:因为血管可以看作很多小线段组成的,故选取小线段作为结构元素,由于血管的方向不是固定的,所以需要多方向提取特征,故而让小线段旋转12个角度,每个角度相差15°。然后我们会得到12张图,只需要挑选每一个像素点是12张图中所对应的像素点最大的一个组合起来。
结果如图3:显然血管较图2来说比较清晰。
图3:血管增强
4.4 膨胀重建—形态学
相比较于图2与图3会发现较小的血管有部分消失了,这是因为在形态学处理时被去除了,所以我们需要将它重建出来:首先以图2作为模板,再以图3作为恢复对象,恢复出小血管。结果如图4:
图4:膨胀重建
4.5 去除背景
从图4看,图像左边存在一个较黑的点(视盘),图像也存在一个反光点。而我们只需要眼底血管,若不将它们去除,将会影响我们后续提取血管后的质量。将它们去除的方法也很简单,这需要求图像的背景,然后用图像减去背景图便可获得只有血管的背景图。
求背景图,即是将图像完全糊化,方法有很多种,我们利用求多次形态学分析,将图像完全糊化,求得背景图,再用原图减去背景图。
结果如图5:
图5:背景图 粗略图
4.6 提取特征—Laplace算子
从图5的粗略图上看,血管大体上是已经被提取出来了,但缺点很显然:对比度太低,色调太暗,血管相比较背景来说有些看不清。若是直接通过阈值变换得到的效果不佳,存在很多噪声。故而选用Laplace算子提取特征。选用二阶Laplace算子导数,因为它相对于一阶的Laplace算子来说对细节更为敏感,对于细线能较好的提取出来。
因为二阶Laplace算子对噪声很是敏感,在进行特征提取前,需要对图像进行平滑处理.。
结果图6:显然即使经过平滑处理后依然存在很多噪声,但也明显看到血管被清楚的提取出来,所以接下来我们需要将噪声去除,进行低通高斯滤波,减少一部分噪声,得图7:
图6:高斯平滑滤波 特征提取
图7:低通高斯滤波
4.7 血管提取-形态学
我们通过观察图7,显然存在很多噪声。但通过分析发现,血管是有线条状,噪声都不具备线条状的条件。这时候显然可以使用形态学分析,将线条状的血管提取出来,同样使用之前的办法,每个线间隔15°提取得图:
图8:血管提取
4.8 闭运算
闭运算在数学上是先膨胀再腐蚀的结果,闭运算的物理结果会平滑对象的轮廓,同时也将狭窄的缺口连接起来形成细长的弯口。
通过对图8图像分析,我们发现血管结构已经算是提取出来了,但通过细致一点的观察,发现血管有些细小部分存在断裂现象,故而需要用闭运算将它们连接起来。
结果如图9:
图9:闭运算
4.9 阈值处理
通过图9的分析上看,图像已经接近我们的预期目标了。但通过细致的分析,图像存在一些很小的,零散的小线条,为了更好的去除它们,通过阈值处理将它们去除。阈值化的方法有很多,我们选用滞后性阈值法。
即对图像取两次阈值化,一次取较小的,一次取较大的阈值化。再用小的作为模板对另一个图像进行膨胀重建,最终得图如下:
图10:眼底血管
5. 实验结果
从以上三幅结果图中 可以看出该方法对眼底的大部分血管都能进行有效提取, 但是通过细微的比较之后发现本算法还有待有待进一步的改进和完善。在较细的血管提取上在较细的血管提取上可能存在断裂,或者消失,无法进行有效提取可能存在断裂,或者消失,无法进行有效提取等等。