一种基于连通面积相减的白细胞图像处理方法及系统与流程

文档序号:16471156发布日期:2019-01-02 23:06阅读:423来源:国知局
一种基于连通面积相减的白细胞图像处理方法及系统与流程

本发明属于基础检验学技术领域,尤其涉及一种基于连通面积相减的白细胞图像处理方法及系统。



背景技术:

目前,业内常用的现有技术是这样的:

白细胞是无色有核细胞,正常的外周血液中常见有中性粒细胞、嗜酸性粒细胞、嗜碱性粒细胞、淋巴细胞和单核细胞。白细胞是人体血液中非常重要的一类血细胞。白细胞在人体中担负许多重任,它具有吞噬异物并产生抗体的作用、机体损伤的治愈能力、抵御病原体入侵的能力、对疾病的免疫抵抗力等。其实白细胞还可以细分为五种类型,使用仪器或人工方法对这五类细胞分别计数,被称为白细胞分类计数。这五类白细胞中嗜中性粒细胞占0.5~0.7,淋巴细胞占0.2~0.4,单核细胞占0.03~0.08,嗜酸性粒细胞占0.01~0.05,嗜碱性粒细胞不超过0.01。人体不适时,经常会通过白细胞数量的显著变化而表现出来。正常值参考范围为:成人(3.50~9.50)×109/l(3500~9500/mm3);儿童(5.0~12.0)×109/l(5000~12000/mm3);婴儿(10~22.0)×109/l(10000~22000/mm3)。白细胞计数,是指计数单位体积血液中所含的白细胞数目。旧称白血球,是机体防御系统的重要组成部分。现有的白细胞计数方法有很多种。

手工计数法是将各种标本经过处理后,冲池于计数板上,静置后使白细胞下沉,再通过光学显微镜对计数板上的白细胞进行计数,计数多个小格后取平均数,再换算成所需单位,得出报告。由于手工计数法检测过程复杂,并且主观性强,常容易影响计数结果。

综上所述,现有技术存在的问题是:

(1)直接利用分水岭算法进行分割计数,计数准确性不高,特别是无法分割黏连非常严重的细胞,并且容易造成过分割

(2)现有技术只能计算出细胞总数,无法对白细胞进行分类计数,不能足够清晰的区分颗粒白细胞和无颗粒白细胞;

(3)无完整程序代码,用户无法直接提取试验并取得最终分割计数效果。

解决上述技术问题的难度和意义:

难度:

1:计数准确性不高,特别是无法分割黏连非常严重的细胞,并且容易造成过分割

2:只能计算出细胞总数,无法对白细胞进行分类计数,这样的计数只能用于学习研究,不能用于临床实际。

3:无完整程序代码,用户无法直接提取试验并取得最终分割计数效果

意义:

本发明提高了计数准确性的同时对黏连严重细胞有良好的分割效果并且可以分类计数颗粒白细胞和非颗粒白细胞。计算出血液细胞中各类细胞的数量这样就有了实际意义。并且有完整代码并将其封装设计成gui界面,用户可以直接使用也可阅读代码和在此基础上对程序进行改进。



技术实现要素:

针对现有技术存在的问题,本发明提供了一种基于连通面积相减的白细胞图像处理方法及系统,

本发明是这样实现的,

一种基于连通面积相减的白细胞图像处理方法,所述的基于连通面积相减的白细胞图像处理方法包括:

步骤一,连通区域标记,对二值图像中白色像素的标记,让每个单独的连通区域形成一个被标识的块;

具体实施方法:利用matlab中bwlabel函数对血液细胞二值化图像中白色像素【目标】的进行标记,让每个单独的连通区域形成一个被标识的块,具体代码为:[p,num1]=bwlabel(i1,8),其中p为标记后的图像;num1为连通区域个数;i1为待标记的原图像;8为参数,这里采用8邻域计算连通区域

步骤二,计算出每块连通区域的面积,利用matlab函数bwareaopen删除面积小于一定值的连通区域,得到黏连的颗粒白细胞和非颗粒白细胞图像;

具体实施方法:利用regionprops函数来计算上一步中被标记的每块连通区域的面积,具体代码如下stats1=regionprops(p,'area'),其中stats1为一个数据矩阵,保存每个连通区域面积大小(像素个数);p为上一步中得到的被标记后的图像;area为参数,用regionprops函数来计算连通区域面积。得到各个连通区域面积之后,再利用bwareaopen函数删除面积小于20000的连通区域,具体代码为libo=bwareaopen(p,20000,8),其中libo为删除小面积后的图像;p为待删除的图像;20000为自定参数,用于删除面积小于20000的连通区域;8为参数,这里采用8邻域计算连通区域。

步骤三,利用一种经典而又很好用的图像分割方法--水坝算法,也就是watershed,将无颗粒白细胞分割出来;

具体实施方法:具体函数如下:

d=-bwdist(~libo);

mask=imextendedmin(d,2);

d2=imimposemin(d,mask);

ld=watershed(d2);

water_splited=libo;

water_splited(ld==0)=0;

为了让watershed函数在进行分割时取得最好效果,首先利用bwdist函数对图像进行距离变换,利用imextendedmin这个函数过滤掉一些特别小(指区域小)的区域;使用imextendedmin将会只希望分割的区块中间产生小点。最后在使用watershed函数分割得到非颗粒白细胞图像。

步骤四,图像相减,在包含颗粒和非颗粒白细胞原图中,将非颗粒白细胞分割出并计数,利用matlab提供的函数imsubtract去除原图中的无颗粒白细胞部分得到只包含颗粒白细胞的图像,再利用总面积除以平均面积得出颗粒白细胞数量,实现颗粒白细胞和非颗粒白细胞分类计数。

具体实施方法:将(包含颗粒白细胞和非颗粒白细胞图像)减去在上一步中得到的非颗粒白细胞图像,得到颗粒白细胞图像。具体代码如下:z=imsubtract(x,y),其中z为得到的颗粒白细胞图像,x包含颗粒白细胞和非颗粒白细胞的原始图像,y为上一步中得到的非颗粒白细胞图像。得到非颗粒白细胞图像之后,利用代码

sum是所有颗粒白细胞的面积总和,在除以单个颗粒白细胞的面积即可得到颗粒白细白个数,从而实现颗粒白细胞和非颗粒白细胞的分类计数。

本发明另一目的在于提供一种实现所述基于连通面积相减的白细胞图像处理方法的计算机程序。

本发明另一目的在于提供一种实现所述基于连通面积相减的白细胞图像处理方法的信息数据处理终端。

本发明另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述的基于连通面积相减的白细胞图像处理方法。

本发明另一目的在于提供一种实现所述基于连通面积相减的白细胞图像处理方法的基于连通面积相减的白细胞图像处理系统,所述基于连通面积相减的白细胞图像处理系统包括:

连通区域标记模块,对二值图像中白色像素的标记,让每个单独的连通区域形成一个被标识的块;

黏连的颗粒白细胞和非颗粒白细胞图像获得模块,利用matlab函数bwareaopen删除面积小于一定值得连通区域,得到黏连的颗粒白细胞和非颗粒白细胞图像;

无颗粒白细胞分割模块,利用图像分割方法--水坝算法,也就是watershed,将无颗粒白细胞分割出来;

图像相减模块,在包含颗粒和非颗粒白细胞原图中,将非颗粒白细胞分割出并计数,利用matlab提供的函数imsubtract去除原图中的无颗粒白细胞部分得到只包含颗粒白细胞的图像,再利用总面积除以平均面积得出颗粒白细胞数量,实现颗粒白细胞和非颗粒白细胞分类计数。

本发明另一目的在于提供一种搭载所述基于连通面积相减的白细胞图像处理系统基础检验学处理平台。

综上所述,本发明的优点及积极效果为:

针对本发明,选取10张细胞分布差异较大的10张血液细胞图像进行数据分析:

表计数统计

结果分析:从对十张实验样本图像的计数来看,对基本无白细胞黏连的前5张图像来说计数准确率几乎到达100%,而且可以非常准确的区分无颗粒白细胞和颗粒白细胞,对另外五张黏连十分严重的细胞图像来说,计数有一定的误差,但是准确率也都达90%以上,因为本程序使用的是首先利用腐蚀及分水岭算法去掉面积小的连通区域,先计算出无颗粒白细胞数量,再用总面积除以平均面积得出颗粒白细胞数量,其中用到的参数较多(一是:利用了两次bwareaopen函数来删除面积小于一定值的连通区域,这个面积阈值是用户自己取定的,既要将想要删除的连通域全部删除,又不能误删想要保留的连通区域;二是:颗粒白细胞的计数方法与非颗粒白细胞的计数方法不一样,非颗粒白细胞的个数利用连通区域个数来确定,而颗粒白细胞是用总面积除以平均面积得出颗粒白细胞数量,这个平均面积的取值左右着无颗粒白细胞计数的准确性),继续调节参数可以再进一步提高准确性。

本发明可以清晰区分颗粒白细胞和无颗粒白细胞,图像清晰,计数准确。

2:现有技术效果和本发明技术效果对比

3:制作matlab的gui界面对发明进行仿真实验的效果图13。

附图说明

图1是本发明实施例提供的基于连通面积相减的白细胞图像处理方法的流程图。

图2是本发明实施例提供的连通算法基本原理图。

图3是本发明实施例提供的四领域示意图。

图4是本发明实施例提供的八领域示意图.

图5是本发明实施例提供的a与c连通放大示意图。

图6是本发明实施例提供的处理前的二值图像示意图。

图7是本发明实施例提供的删除小面积后的二值图像示意图。

图8是本发明实施例提供的包含颗粒和无颗粒白细胞示意图。

图9是本发明实施例提供的只包含无颗粒白细胞示意图。

图10是本发明实施例提供的只包含颗粒白细胞示意图。

图11是本发明实施例提供的分水岭分割后示意图。

图12是本发明实施例提供的分水岭分割后局部放大示意图。

图13是本发明实施例提供的血液细胞处理与计数效果图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

下面结合附图对本发明进行进一步纤细说明。

如图1所示,本发明提供的一种基于连通面积相减的白细胞图像处理方法包括:

s101:连通区域标记,利用bwlabel函数对二值图像中白色像素(目标)的标记,让每个单独的连通区域形成一个被标识的块,并利用regionprops函数计算出每个被标识的块的像素个数(面积);

s102:连通面积相减,连通区域标记后,利用bwlabel函数和regionprops函数对每个连通区域标记并计算出每个被标识的块的像素个数(面积)后,利用matlab函数bwareaopen删除面积小于一定值的连通区域,效果如图6处理前的二值图像、图7删除小面积后的二值图像;

s103:利用一种经典而又很好用的图像分割方法--水坝算法,也就是watershed,将无颗粒白细胞分割出来,效果如图11分水岭分割后示意图、图12本发明实施例提供的分水岭分割后局部放大示意图。

此步骤可将黏连非常严重的白细胞分割开来,由于颗粒白细胞和无颗粒白细胞这两类细胞最大差异在细胞核,颗粒白细胞细胞核多呈颗粒状,一般由面积较小的颗粒状组成,这样的形状用分水岭分割法可以将一个连通的细胞核分割成若干个小面积的连通区域;而无颗粒白细胞的细胞核在一般是一个较大的呈圆形或者类圆形的连通区域组成,这样的形状分水岭分割法不会将其分割成小块,面积远大于非颗粒白细胞所以可以利用连通区域面积将颗粒白细胞提取出来。由上图11风水岭分割后图像,再对其利用matlab函数bwareaopen删除面积小于一定值的连通区域,就将小面积连通区域删除,留下的就是分割完成后的非颗粒白细胞图像,如图12所示。

s104:图像相减,在包含颗粒白细胞和无颗粒白细胞原图中,将无颗粒白细胞分割出并计数,利用matlab提供的函数imsubtract去除原图中的无颗粒白细胞部分得到只包含颗粒白细胞的图和只包含非颗粒白细胞的图;

当分割出了无颗粒白细胞并计数后,需要计数颗粒白细胞,这时我们就需要将原图中的无颗粒白细胞部分去掉,本发明采用了图像相减的办法,matlab提供的函数为imsubtract,图10本发明实施例提供的只包含颗粒白细胞示意图就是利用此函数将图8本发明实施例提供的包含颗粒和无颗粒白细胞示意图图和图9是本发明实施例提供的只包含无颗粒白细胞示意图相减后得到的。

然后计算出图10本发明实施例提供的只包含颗粒白细胞示意图中颗粒白细胞的总面积除以单个颗粒白细胞的平均面积就可以得到颗粒白细胞的个数,从而实现了颗粒白细胞和非颗粒白细胞的分类计数。

如图2所示,连通算法基本原理为:

第一行,得到两个团:[2,6]和[10,13],同时标记为1和2。第二行,得到两个团:[6,7]和[9,10],但是它们都和上一行的团有重叠区域,所以用上一行的团标记,即1和2。第三行,两个:[2,4]和[7,8]。[2,4]这个团与上一行没有重叠的团,所以给它一个新的记号为3;而[2,4]这个团与上一行的两个团都有重叠,所以给它一个两者中最小的标号,即1,然后将(1,2)写入等价对。全部图像遍历结束,得到很多个团的起始坐标,终止坐标,它们所在的行以及它们的标号,同时得到了一个等价对的列表。

如图3-5所示,连通区域标记:

在图像中,最小的单位是像素,每个像素周围有8个邻接像素,常见的邻接关系有2种:4邻接与8邻接。

如图3所示,4邻接一共4个点,即上下左右;

如图4所示,8邻接的点一共有8个,包括了对角线位置的点;

如果像素点a与b邻接,我们称a与b连通,于是我们不加证明的有如下的结论:如果a与b连通,b与c连通,则a与c连通。在视觉上看来,彼此连通的点形成了一个区域,而不连通的点形成了不同的区域。这样的一个所有的点彼此连通点构成的集合,称为一个连通区域。

如图5所示,如果考虑4邻接,则有3个连通区域;如果考虑8邻接,则有2个连通区域。(注:图像是被放大的效果,图像正方形实际只有4个像素)。

如图6和图7所示,删除小面积连通区域:

连通区域标记后,取得每个连通区域的面积,利用matlab函数bwareaopen删除面积小于一定值得连通区域。

如图8-10所示,图像相减

在包含颗粒和无颗粒白细胞原图中,将无颗粒白细胞分割出并计数,利用matlab提供的函数imsubtract去除原图中的无颗粒白细胞部分得到只包含颗粒白细胞的图。

如图11和图12所示,利用一种经典而又很好用的图像分割方法--水坝算法,也就是watershed,将非颗粒白细胞分割出来。

图13是本发明实施例提供的血液细胞处理与计数效果图。

工作原理部分:

本发明将颗粒白细胞和非颗粒白细胞进行分类计数,由白细胞特征差异可得这两类细胞最大差异在细胞核,颗粒白细胞细胞核多呈颗粒状,在二值化处理后一般由面积较小的颗粒状组成,这样的形状用分水岭分割法可以将一个连通的细胞核分割成若干个小面积的连通区域;而非颗粒白细胞的细胞核在二值化处理后一般是一个较大的呈圆形或者类圆形的连通区域组成,这样的形状分水岭分割法不会将其分割成小块,所以可以利用二值图像的连通区域面积大小来判断白细胞属于哪一类,从而实现白细胞的分类,为下步计数做好准备。

1、连通区域标记算法有很多种,有的算法可以一次遍历图像完成标记,有的则需要2次或更多次遍历图像。这也就造成了不同的算法时间效率的差别,在这里介绍2种算法。

第一种算法是现在matlab中连通区域标记函数bwlabel中使的算法,它一次遍历图像,并记下每一行(或列)中连续的团(run)和标记的等价对,然后通过等价对对原来的图像进行重新标记,这个算法是目前我尝试的几个中效率最高的一个。

第二种算法是现在开源库cvblob中使用的标记算法,它通过定位连通区域的内外轮廓来标记整个图像,这个算法的核心是轮廓的搜索算法。这个算法相比与第一种方法效率上要低一些,但是在连通区域个数在100以内时,两者几乎无差别,当连通区域个数到了103数量级时,上面的算法会比该算法快10倍以上。

matlab提供的函数为:

[l,num]=bwlabel(image_bw_medfilt2,8);

2、计算连通区域面积的两种方法

方法一:利用matlab自带的计算标记后二值图像的连通区域面积的regionprops函数,在依次输出各连通区域所占的像素个数,具体matlab函数如下:

方法二:用户可自定义函数,计算出二值图像所有连通区域的面积总和,具体代码如下:

下面结合具体实施例对本发明作进一步描述。

本发明实施例提供的基于连通面积相减的白细胞图像处理系统包括:

连通区域标记,对二值图像中白色像素的标记,让每个单独的连通区域形成一个被标识的块;

利用matlab函数bwareaopen删除面积小于一定值得连通区域,得到黏连的颗粒白细胞和非颗粒白细胞图像;

利用一种经典而又很好用的图像分割方法--水坝算法,也就是watershed,将无颗粒白细胞分割出来;

图像相减,在包含颗粒和非颗粒白细胞原图中,将非颗粒白细胞分割出并计数,利用matlab提供的函数imsubtract去除原图中的无颗粒白细胞部分得到只包含颗粒白细胞的图像,再利用总面积除以平均面积得出颗粒白细胞数量,实现颗粒白细胞和非颗粒白细胞分类计数。

本发明实施例提供的基于连通面积相减的白细胞图像处理系统,包括:

连通区域标记模块,对二值图像中白色像素的标记,让每个单独的连通区域形成一个被标识的块;

黏连的颗粒白细胞和非颗粒白细胞图像获得模块,利用matlab函数bwareaopen删除面积小于一定值得连通区域,得到黏连的颗粒白细胞和非颗粒白细胞图像;

无颗粒白细胞分割模块,利用图像分割方法--水坝算法,也就是watershed,将无颗粒白细胞分割出来;

图像相减模块,在包含颗粒和非颗粒白细胞原图中,将非颗粒白细胞分割出并计数,利用matlab提供的函数imsubtract去除原图中的无颗粒白细胞部分得到只包含颗粒白细胞的图像,再利用总面积除以平均面积得出颗粒白细胞数量,实现颗粒白细胞和非颗粒白细胞分类计数。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1