眼底图像病变识别

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

眼底图像的病变识别

1. 原理阐述

1. 1前言

眼底病变包括了视网膜,脉络膜,视神经及玻璃体的炎症,肿瘤,各类血管的病变,各种变性疾病及多系统疾病引起的眼部病变。不仅种类繁多,而且对视功能损害较大。目前常见而又影响视功能的眼底疾病有糖尿病视网膜病变,老年性黄斑病变,视网膜静脉阻塞等等。

基于以上眼底图像对于疾病的诊断的意义,本文章结合了正常和病态的眼底图像各50幅,采用模式识别的方法先对两种图像各25幅加以训练,并进行特征值提取,在使用剩余的图像进行分类方法的评估,本文意在运用模式识别方法在医学领域应用。 1. 2流程说明

本次模式识别的过程是:有已知样本情况的监督模式识别

图1 监督模式识别的流程图

对于图像的预处理主要分成两个步骤:无效区域的填充和图像的对比度增强。

图2 图像的预处理的流程图

对于所给的病变图像,有部分的图像边沿是无效的黑色,这对于下一步对比度增强会带来影响,另外,在图像的特征提取上也会造成影响。如果前期部进行处理,那么,后期的分离器中则需要加入判断结构对无效区域的识别,这无疑增加特征提取的运行时间。

因此,这里采用了一种简单的方法对向区域填充图像的R 、G 、B 均值。做法是先读取有效的R 、G 、B 值,并存入数组,下一步将对数组中的值求平均即可得到该图像有效R 、G 、B 的平均值,在向无效区域填充即可。

图3 无效填充前图4 无效填充后接下来,对图像的处理是:对比度增强。由于拍照的光线对眼底图像质量起着重要作用,因此,对于明场和暗场下的蛋白质与血液的成像都有所不同,为了增强二者在图像中的识别度,采用的是Retinex图像增强的方法,设置蛋白质和血液通道,分别对R、G、B的标准差进行设定,进而得到预处理后的图像。然后,再对图像的蛋白质和血液筛选,形成25*2的特征矩阵。

图5 特征提取和选择

图6 经过蛋白质通道前图7经过蛋白质通道前

图8 经过血液通道前图9 经过血液通道后

然后将训练集的数据进行整合,使用三种分类器(分别是最小距离分类器、Fisher线性分类器、二次分类器)进行训练。

图10 分类器的训练

最后将测试图像也进行相应的预处理和特征提取,最后输入到训练好的分类器中,进行判别,输出正确率、灵敏度和运行时间,进而对分类器的结果进行评估。

训练后

图11分类器的测试

2.代码实现2. 1主程序部分:

2. 2无效区域的填充:

2.3 Retinex对比度增强与特征提取:

2. 3. 1 蛋白质通道

function x=blood_channel(f)

fr=f(:, :, 1); fg=f(:, :, 2); fb=f(:, :, 3);%RGB通道

mr=mat2gray(im2double(fr)); mg=mat2gray(im2double(fg)); mb=mat2gray(im2double(fb));%数据类型归一化

alf1=600; %定义标准差

n=51;%定义模板大小

n1=floor((n+1)/2);%计算中心

for i=1:n

for j=1:n

b(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*alf1))/(pi*alf1); %高斯函数

end

end

nr1 = imfilter(mr,b,'conv', 'replicate');ng1 = imfilter(mg,b,'conv', 'replicate');nb1 = imfilter(mb,b,'conv', 'replicate');%卷积滤波

ur1=log(nr1); ug1=log(ng1); ub1=log(nb1);

tr1=log(mr);tg1=log(mg);tb1=log(mb);

yr1=(tr1-ur1)/3;yg1=(tg1-ug1)/3;yb1=(tb1-ub1)/3;

alf2=600; %定义标准差

for i=1:n

for j=1:n

a(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*alf2))/(6*pi*alf2); %高斯函数

end

end

nr2 = imfilter(mr,a,'conv', 'replicate');ng2 = imfilter(mg,a,'conv', 'replicate');nb2 = imfilter(mb,a,'conv', 'replicate');%卷积滤波

ur2=log(nr2); ug2=log(ng2); ub2=log(nb2);

tr2=log(mr);tg2=log(mg);tb2=log(mb);

yr2=(tr2-ur2)/3;yg2=(tg2-ug2)/3;yb2=(tb2-ub2)/3;

alf3=100; %定义标准差

for i=1:n

for j=1:n

e(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*alf3))/(4*pi*alf3); %高斯函数

end

end

nr3 = imfilter(mr,e,'conv', 'replicate');ng3 = imfilter(mg,e,'conv', 'replicate');nb3 = imfilter(mb,e,'conv', 'replicate');%卷积滤波

ur3=log(nr3); ug3=log(ng3); ub3=log(nb3);

tr3=log(mr);tg3=log(mg);tb3=log(mb);

yr3=(tr3-ur3)/3;yg3=(tg3-ug3)/3;yb3=(tb3-ub3)/3;

dr=yr1+yr2+yr3;dg=yg1+yg2+yg3;db=yb1+yb2+yb3;

cr=im2uint8(dr); cg=im2uint8(dg); cb=im2uint8(db);

z=cat(3, cr, cg, cb);

%figure, imshow(z);

pr=z(:, :, 1); pg=z(:, :, 2); pb=z(:, :, 3);%RGB通道

blo_ture=0;

bg_plus=0;

N=101;

for j=1:N %列

for i=1:N %行

if(pb(i,j)==0)

if((pg(i,j)<40)&&(pr(i,j)>pg(i,j)))

blo_ture=blo_ture+1;

end

相关文档
最新文档