最近读到H.Narasimha-Iyer, Ali Can等人的文章《Robust Detection and Classification of Longitudinal Changes in Color Retinal Funds Images for Monitoring Diabetic Retinopathy》,把自己的思路和想法整理整理,放在这里。

好长的题目啊,好多生僻的词啊。总的来说这篇文章讲的是一种检测视网膜眼底图像病灶区域的一种算法。这篇文章实现的算法处理效果很好。引用一段作者自己的话,其实是我自己不想翻译了“A multiobserver validation on 43 image pairs from 22 eyes involving nonproliferative and proliferative diabetic retinopathies, showed a 97% change detection rate, a 3% miss rate, and a 10% false alarm rate. The performance in correctly classifying the changes was 99.3%.”。

算法的主要流程图如下:

简要的说,就是先对每一幅输入的图像首先检测出血管,视神经盘(optic disk)和视网膜中央凹(fovea)。对于后两个结构下图可以看到,那个亮的圆圈就是视神经盘,最黑的那一块就是视网膜中央凹。检测出这三个结构后,接下来的操作要把这三个结构剔除,也就是设为特定的值(0)以示掩盖住,然后对图像进行配准。接下来就是要进行光照矫正,以去除光照的干扰,获得反射图像,即物体本来的面目。最后对获得的反射图像进行贝叶斯变化检测和分类。

两幅图像中央都有一块黑斑,这就是视网膜中央凹

对血管的检测这些人把这个算法发表在了另一篇文章《Robust Model-Based Vasculature Detection in Noisy Biomedical Images》(他们的题目怎么都这么长啊...)。对视神经盘和视网膜中央凹的检测在本文中也有描述,基于血管脉络的配准方法在这帮人的另一篇文章《A feature based robust hierarchical algorithm for registration pairs of the curved human retina》也有描述。我在这里主要讲讲这篇文章中对光照建模的方法。

物体光照模型如下描述:

F代表的是接收到的图像,即待处理的图像,I代表的是图像的光照分布,R代表的是物体的反射图像,即物体真实面目,λ代表的是第几个光谱图像,可认为是R,G,B。我们看到这个模型和Retinex算法的模型是一样的,思路也一样,模拟出一个光照分布,然后在对数域中用待处理图像减去光照分量,得到反射分量再做个exp()返回正常的数域。Retinex算法是将原图的高斯模糊作为光照分量,而本文中的方法是多项式近似。

如果不算病灶区域的话,我们去除了血管,视神经盘(白色亮圆盘)和视网膜中央凹(上图中央黑的区域)之后,可以认为剩下的是一种结构,所以造成剩下部分的图像亮度不一致的原因就是光照分布不同了,而恰巧这结构足够大所以我们就能用这些像素点来建模。

文章中说,通过实验作者发现,用四阶的多项式来模拟光照因素效果最好。用高中的排列组合的知识知道,二元的四阶的多项式有15个待定系数。接下来就是一个模型训练的问题了。我们模型的类型确定了,是四阶15个系数的多项式。也就是说,我们提取了15个特征,然后我们的训练数据是这幅图像上的点(那三个结构的点除外),我们就用这些点来训练我们的模型。我们当然也可以用normal equation的方法来直接计算最优的系数。如下:

P表示的是最优的系数向量,有15个元素。FL是列向量,它是N*1维的,N=n*m,图像大小是n*m,FL的值是对应位置的图像值的对数(对某一特定的通道)。当然,这个向量也应该把对应那些结构的点设为0值。S是N*15的矩阵,我们用S*P来近似FL,W是mask矩阵,是N*N维的,W是一个对角阵,如果FL(k,1)为0,则W(k,k)也为0,否则为1。

经过上述运算我们就得到了光照的模型。回顾一下,这个方法所做的就是将mask之后的图像看作是关于(x,y)的一个个训练样本,我们就是通过这些样本训练出一个模型来拟合这些数据。但是,我们拟合的目的不是为了找到一个最好的模型以求最精确的表示什么东西。我们要做的就是有一定差别的表示这幅图像,模糊这幅图像并保持和原图的某些一致性。我们可以看到,文章中的做法是用多项式来拟合,如果我们用三角函数来拟合这不就是傅立叶变换么!所以,我们可以知道,文章用四阶的多项式实质是提取一些低频分量,用这些低频分量来表示光照分布。现在我们知道,为什么文章只取四阶了。当然,这些低频分量不仅仅是光照,还有一部分是图像的低频部分,文章还对这一点进行了矫正。矫正方法是将得到的反射图像调整到平均值为1。至于怎么调整,文章没说。原文如下:“After the attenuation and illumination source induced lighting pattern is corrected, the estimated retinal reflectance for each color channel has a mean value of 1. This is because the reflectance component in (2) has been modeled as a Gaussian process with mean 1.”(2)式即上述光照模型。

以上都是假设病灶区域不大的前提下做的,当病灶区域大的时候文章中提出了一种迭代的把病灶区域也mask掉的方法。在G通道中操作,每次把G通道值很高的和很低的像素在W中的对应位置置0,即排除出去。依次操作,直到剩下的部分的置没有大的变化。说实话,我也不太理解这部分是怎么做的,所以就只能说的比较模糊了。

把以上操作都做完,就得到了光照图像。然后按照类似Retinex的方法就能得到反射图像了。





视网膜眼底图像的一种检测方法,学习笔记(一)相关推荐

  1. 人工智能:一种现代方法学习笔记(第六章)——约束满足问题

    定义 每一次赋值都会影响下一次的选择范围 约束满足问题指的是针对给定的一组变量及其需要满足的一些限制或一些约束条件,找出符合这些满足这些约束关系的一个解.全部解或是最优解. CSP可分为两个子领域也就 ...

  2. 幽门螺杆菌检测方法学习笔记

    幽门螺杆菌是一个令许多国人谈之色变的话题,特别是当它被证实是一个较强的致癌因子之后.今天,我们对它的认识在加深,只有caga毒力基因阳性的菌株才有强致癌性,而且,身体里有幽门螺杆菌的人,还被发现不容易 ...

  3. 肺结节目标检测_一种基于CT图像的肺结节检测方法及系统与流程

    本发明属于医学图像分析和计算机辅助诊断等技术领域,更具体地,涉及一种基于CT图像的肺结节检测方法及系统. 背景技术: 肺癌是导致患癌死亡的最危险的疾病之一,其发病率占所有癌症的三分之二,且5年存活率为 ...

  4. 视网膜眼底图像预测心脏病风险:Nature综述深度学习在生物医疗中的新应用

    生物医疗是机器学习技术应用对接的重要领域之一.近日,Nature 报道了谷歌运用深度学习技术(主要是卷积神经网络)在该领域取得的新突破.谷歌通过分析眼球的视网膜图像,可以预测一个人的血压.年龄和吸烟状 ...

  5. 疲劳驾驶监测方案_盘点疲劳驾驶的几种检测方法

    随着人们生活水平的逐渐提高以及各大城市道路交通系统的不断完善,我国的汽车保有总量也在不断增加,这在为人们的出行带来便捷的同时也导致了交通事故的频频发生,对驾驶员和行人的生命财产安全构成了巨大的威胁. ...

  6. 工业现场温度的几种检测方法及选型

    工业现场温度的几种检测方法及选型 温度检测技术如今已比较成熟,发展的变化也相对不大,主要变化是温度变送器的发展较快,已经步入了自动化.智能化的阶段.温度检测仪表的防护性能得到了强化,如防腐.防爆.防腐 ...

  7. 目标检测SSD学习笔记

    目标检测SSD学习笔记 SSD: Single Shot MultiBox Detector Abstract. 我们提出了一种使用单一深度神经网络来检测图像中的对象的方法.我们的方法,命名为SSD, ...

  8. Task 06 数据增强;模型微调;目标检测基础 学习笔记

    Task 06 数据增强:模型微调:目标检测基础 学习笔记 数据增强 图像增广 在5.6节(深度卷积神经网络)里我们提到过,大规模数据集是成功应用深度神经网络的前提.图像增广(image augmen ...

  9. 一、css清除浮动方法学习笔记总结(超详细,简单易懂)

    ** css清除浮动方法学习笔记总结(超详细,简单易懂) ** 问题: 上图中,由于container(父级元素)未设置高度,其内部子元素设置了float浮动,导致与container同级(也就是co ...

  10. 人力资源之选人方法学习笔记_职位胜任素质模型

    续接上篇:人力资源之选人方法学习笔记_建立科学的人才观   本篇主要讲解关于职位胜任素质模型课程的学习笔记. 什么是职位胜任素质模型 就是用行为方式来定义员工为了完成某项工作应该具备的知识.技能等特质 ...

最新文章

  1. python爬虫正则表达式实例-python爬虫 正则表达式解析
  2. python中frame中的元素怎么识别_python3.6+selenium实现操作Frame中的页面元素
  3. 信号处理:希尔伯特黄变换
  4. 架构-浅谈MySQL数据库优化
  5. android 软件盘弹回去的最好体验,Android 软键盘弹出 日常填坑
  6. osgi框架 android,基于OSGi的Android应用模块动态加载框架设计与实现
  7. javascript document cookie
  8. Windows Server AppFabric分布式缓存详解
  9. WIFI pineapple使用心得
  10. lisp ssget 浩辰_ssget 详解
  11. springboot 图片大小压缩
  12. 怎么删除计算机病毒,电脑中病毒删不掉怎么办?
  13. oracle deadlock with TM lock in SX/SSX mode
  14. Android 签名方法---同时使用V1和V2签名
  15. 颜色的前世今生12·RGB显色系统详解(中)
  16. Spring Cloud Alibaba系列使用(二)----Nacos注册中心
  17. 今天睡眠质量记录74分
  18. 微信公众号如何运营才能吸引用户的关注?
  19. JS 打开本地程序及文件
  20. Mac 让程序坞更丝滑

热门文章

  1. outlook2019登录126邮箱(imap)
  2. 使用Xcode真机调试时没有任何问题,但是当打包成ipa文件安装时,有接口访问不到后台信息
  3. Linux查询ip地址ens33没有inet这个属性
  4. win10关机后cpu风扇还在转_win10关机风扇一直转 指示灯亮怎么办_win10关机风扇还转指示灯亮的解决方法...
  5. 魔板游戏java_Java魔板游戏完整代码及注释
  6. 三种内存虚拟化技术(内存全虚拟化、内存半虚拟化、内存硬件辅助虚拟化),以及查看linux对ETP和VPID的支持情况
  7. 苏州大学NLP团队文本生成预训练方向招收研究生/博士生(含直博生)
  8. PS-第七天-图层混合模式及图层蒙版
  9. 关于geoserver中line图层线颜色不统一,style中sld写法
  10. 超简单直观理解懒加载(Lazyload)