眼底图像病变识别.docx
《眼底图像病变识别.docx》由会员分享,可在线阅读,更多相关《眼底图像病变识别.docx(34页珍藏版)》请在冰点文库上搜索。
眼底图像病变识别
眼底图像的病变辨别
1.原理论述
1.1序言
眼底病变包含了视网膜,脉络膜,视神经及玻璃体的炎症,肿瘤,各种血管的病变,各样变性
疾病及多系统疾病惹起的眼部病变。
不单种类众多,并且对视功能伤害较大。
当前常有而又影响视
功能的眼底疾病有糖尿病视网膜病变,老年性黄斑病变,视网膜静脉堵塞等等。
鉴于以上眼底图像关于疾病的诊疗的意义,本文章联合了正常和病态的眼底图像各50幅,采纳
模式识其他方法先对两种图像各25幅加以训练,并进行特点值提取,在使用节余的图像进行分类方
法的评估,本文意在运用模式辨别方法在医学领域应用。
1.2流程说明
本次模式识其他过程是:
有已知样本状况的监察模式辨别
分类器设计(训练)
信息的获得与预办理特点的提取与选择
分类器设计(训练)
图1监察模式识其他流程图
关于图像的预办理主要分红两个步骤:
无效地区的填补和图像的对照度加强。
病变图像
无效地区
Retinex
预办理后
的填补
对照加强
图像
正常图像
图2图像的预办理的流程图
关于所给的病变图像,有部分的图像边缘是无效的黑色,这关于下一步对照度加强会带来影响,此外,在图像的特点提取上也会造成影响。
假如先期部进行办理,那么,后期的分别器中则需要加入判断构造对无效地区的辨别,这无疑增添特点提取的运转时间。
所以,这里采纳了一种简单的方法对向地区填补图像的R、G、B均值。
做法是先读取有效的R、
G、B值,并存入数组,下一步将对数组中的值求均匀即可获得该图像有效R、G、B的均匀值,在向
无效地区填补即可。
第1页共15页
图3无效填补前图4无效填补后
接下来,对图像的办理是:
对照度加强。
因为摄影的光芒对眼底图像质量起侧重要作用,所以,
关于明场和暗场下的蛋白质与血液的成像都有所不一样,为了加强二者在图像中的辨别度,采纳的是
Retinex图像加强的方法,设置蛋白质和血液通道,分别对R、G、B的标准差进行设定,从而获得
预办理后的图像。
而后,再对图像的蛋白质和血液挑选,形成25*2的特点矩阵。
蛋白质通道
特
预办理后
征
特点矩阵
值
图像
提
血液通道
取
图5特点提取和选择
图6经过蛋白质通道前图7经过蛋白质通道前
第2页共15页
图8经过血液通道前图9经过血液通道后
而后将训练集的数据进行整合,使用三种分类器(分别是最小距离分类器、Fisher线性分类器、
二次分类器)进行训练。
最小距离分类器
特点矩阵Fisher线性分类器
二次分别器
图10分类器的训练
最后将测试图像也进行相应的预办理和特点提取,最后输入到训练好的分类器中,进行鉴别,
输出正确率、敏捷度和运转时间,从而对分类器的结果进行评估。
训练后
最小距离分类器
测试图像Fisher线性分类器
正确率、敏捷度
和运转时间
二次分别器
图11分类器的测试
第3页共15页
2.
代码实现
2.1主程序部分:
第4页共15页
2.2无效地区的填补:
第5页共15页
2.3Retinex对照度加强与特点提取:
2.3.1蛋白质通道
functionx=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);%
计算中心
fori=1:
n
forj=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;%定义标准差
第6页共15页
fori=1:
n
forj=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;%定义标准差
fori=1:
n
forj=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;
forj=1:
N%列
fori=1:
N%行
if(pb(i,j)==0)
if((pg(i,j)<40)&&(pr(i,j)>pg(i,j)))
blo_ture=blo_ture+1;
end
第7页共15页
end%血液特点一
if(pg(i,j)==0)
if(pb(i,j)>pr(i,j))
blo_ture=blo_ture+1;
end
end%血液特点二
if((pr(i,j)>80)&&(pr(i,j)<100))
if((pg(i,j)>20)&&(pg(i,j)<90))
if((pb(i,j)>100)&&(pb(i,j)<130))
blo_ture=blo_ture+5;
end
end
end%血液特点三
if((pr(i,j)>140)&&(pr(i,j)<150))
if((pg(i,j)>140)&&(pg(i,j)<150))
if((pb(i,j)>180)&&(pb(i,j)<255))
bg_plus=bg_plus+1;
end
end
end%灰色特点一
if((pr(i,j)>140))
if((pg(i,j)>140))
if((pb(i,j)==0))
bg_plus=bg_plus+1;
end
end
end%黄色特点一
end
end
add_mark=floor(bg_plus*1000/(101*101));
if((add_mark<120)&&(add_mark>90))
x=blo_ture+add_mark;
else
x=blo_ture;
end
第8页共15页
3.3.2血液通道
functionx=protein_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=100;%
定义标准差
alf=a^2/2
a=54
n=51;%定义模板大小
n1=floor((n+1)/2);%
fori=1:
n
forj=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=100;%定义标准差
alf=a^2/2
x1=floor((n+1)/2);%
fori=1:
n
forj=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;%定义标准差alf=a^2/2a=167
第9页共15页
l1=floor((n+1)/2);%
fori=1:
n
forj=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);
pr=z(:
:
1);pg=z(:
:
2);pb=z(:
:
3);%RGB通道
pro_ture=0;
N=101;
forj=1:
N%列
fori=1:
N%行
if((pg(i,j)>70)&&(pg(i,j)<80))
if((pr(i,j)>10)&&(pb(i,j)>55))
pro_ture=pro_ture+1;
end
end
if(pg(i,j)>=80)
if((pr(i,j)>45)&&(pb(i,j)>70))
pro_ture=pro_ture+1;
end
end
end
end
x=pro_ture;
第10页共15页
3.4分类器测试:
3.4.1最小距离分类器
第11页共15页
3.4.2Fisher分类器
第12页共15页
3.4.3二次分类器
第13页共15页
4.
结果说明
4.1训练参数
图12训练参数散布图
从图上能够看出关于蛋白质的病变辨别成效较好,因为表示蛋白质的数据(Y轴上的数据)的
间类失散度大,反之,关于血管破碎的状况就比较难划分,表示血液的数据(x轴上的数据)的间
类失散度小。
可是从图像上能够看出,血管的正常值基本散布在400~800之间。
4.2测试时间
先期办理数据的时间:
Elapsedtimeis5.708662seconds.
分次运转分类器时间:
第14页共15页
4.3测试结果
评论项目最小距离分类器Fisher分类器二次分类器
正确率
真阳性
假阴性
假阳性
真阴性
耗时(s)
总结
关于采纳的三种分类器而言,Fisher线性分类器达到了最好的正确率有76%,而其他二者分别
是68%和74%。
可是,关于假阴性的鉴别中Fisher的错误率也是最高的,达到了32%,而最小距离
分类器和二次分别器是都在24%。
将这两项评论要素作为分类器的评论,那么二次分类分类器应当
是得分最高的。
所以,采纳这类思想进行眼底图像的识其他时候,采纳二次分类器应当是比较好的。
实验的耗时基本在数据办理部分,尔后的分类器中耗时却近乎同样,但对与大数据而言最小距
离分类器则会占优。
在此项作业中,我按照了监察模式识其他步骤,在每一步中都为最后能获得最好的结果而做出
努力。
在这个过程中,我将讲堂上和课后所学习的模式识其他知识,运用到了此项作业中,加深了
我对各样分类器的思想和图像预办理及特点提取的方法。
在此的特点提取方法比较简单,关于血液
的溢出和基本的血管像素的分辨不高,这是造成最后正确率不高的主要原由。
经过一个学期的学习,让我知道当下模式识其他基本方法和过程,经过此次大作业,我提升了
关于医学图像识其他实践能力。
第15页共15页