首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

计算机视觉(五):请分割出眼底视网膜图像中的血管

Project 5:

请分割出眼底视网膜图像中的血管

图一

图二

图三

图四

以上是要进行处理的四张眼底视网膜血管图像。

待解决的问题:

如何从视网膜图像中将血管准确清晰的分割出来

1.采用哪种方法作为图像预处理

2.采用哪种二值化的方法进行分割

3.图像的去噪

思路及原理:

对图像先进行预处理,分别采用灰度图处理、色道分离、灰度图翻转、二值化处理等方法得到预处理图。

再对图像进行二值化处理,阈值分割,根据需要再对图像进行去噪处理。最终得到合适的眼底视网膜血管分割图。

算术平均法的自适应二值化利用cv2.adaptiveThreshold实现,此函数的原型为:

其中:

src为输入图像;

maxval为输出图像的最大值;

adaptiveMethod设置为cv2.ADAPTIVE_THRESH_MEAN_C表示利用算术均值法,设置为cv2.ADAPTIVE_THRESH_GAUSSIAN_C表示用高斯权重均值法;

thresholdType:阈值的类型;

blockSize: b的值;

C为从均值中减去的常数,用于得到阈值;

dst为目标图像。

在本题中,我发现采用自适应二值法效果比固定阈值二值法效果更好,于是我就用自适应二值法来进行处理。

滤波方式,主要应对椒盐噪声,中值滤波通常采用一个含奇数个点的滑动窗口,用窗口的中的灰度值的中值来代替中心点的灰度值,可以滤掉椒盐噪声产生的突兀的像素点,其实就是对这个窗口中的灰度值进行排序,然后将其中值赋值给中心点即可。

函数返回处理结果,第一个参数是待处理图像,第二个参数是孔径的尺寸,一个大于1的奇数。比如这里是5,中值滤波器就会使用5×5的范围来计算。即对像素的中心值及其5×5邻域组成了一个数值集,对其进行处理计算,当前像素被其中值替换掉。

如果在某个像素周围有白色或黑色的像素,这些白色或黑色的像素不会选择作为中值(最大或最小值不用),而是被替换为邻域值。

编程实现:

首先是读取原图片,并定义一个函数用来显示图片,方便在后面调用。并得到该图像的大小。

分别得到灰度图、色道分离以后得到的三张灰度图、对灰度图均衡化以后的图、灰度图翻转以后的图。

对图像进行二值化处理,来分割图像中的血管部分

滤波以后产生了很多椒盐噪声,采用中值滤波去掉

显示预处理以后的图,以及二值化分割以后的图。得到相应结果,挑选结果最好的图。

结果及分析:

第一张图:

由上述六图看出Green、Red通道的灰度图最清晰,接下来对它们进行二值化处理得到。

可见上图有很多椒盐噪声,对他们进行中值滤波得到

经过中值滤波以后的图好很多,第一张图效果最好

同理,对第二幅、第三幅、第四幅图像做同样的处理,得到六幅不同的预处理图、二值化图以及去噪以后的图像,并筛选出效果最好的一幅来作为最后的效果图

结论:

分别得到四幅分割血管图,基本把血管分割了出来,完成了预期目标。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180213G0FXFW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券