谢勤岚,于小卉
(中南民族大学 生物医学工程学院,武汉 430074)
血液对人体的作用不言而喻,它将氧气从肺部运输到身体的各个组织,并将身体组织产生的二氧化碳运走;它将消化系统产生的营养物质运输到身体的各个细胞,并带走肾脏产生的排泄物.血液帮助我们的身体对抗各种感染和毒素,并通过其凝血功能止血,保持人体温度的平衡.医务人员通常通过血液来检测和诊断疾病.在血液细胞图像检测中,通常为了减少噪声而要先做图像增强,然后检测血液细胞图像特征,尤其是细胞数目统计.在采用数字图像处理技术对细胞图像中的数目进行统计时,由于细胞图像中经常有细胞粘连甚至部分重叠现象,使得统计的细胞数目产生较大的误差.
为了解决细胞图像识别与统计的问题,不少研究者做了很多工作.刘莉莉和王铮[1]提出了一种适合血细胞图像的改进流域分割算法,能使血细胞区域有效分割出来,解决了目标粘连现象.Karunakar和Kuwadekar[2]采用标记控制的分水岭算法,设计出用于血红细胞计数的Android手机程序.Kimbahune和 Uke[3]提出了一种脉冲耦合神经网络方法来处理血细胞图像,并证实其方法和结果真实可靠.林小竹等人[4]针对在图像分析中所获得的目标相互粘连,提出了一种有效的分水岭分割算法,可以解决目标物体粘连和计数问题.周浩等人[5]运用数学形态学对血细胞图像进行边缘提取,结果表明基于数学形态学的边缘提取算法对于细胞血液边缘提取有很好的效果.陈立英等人[6]提出了一种基于最大类间方差法的遗传分割算法,用于血液细胞图像分割,结果表明该算法具有快速稳定的特点.赵超阳等人[7]利用Matlab图像处理工具箱对视锥细胞进行图像处理,分析了细胞密度分布特点.
本文基于Matlab语言,通过程序实现了一种简便的血红细胞计数的工程方法.该方法可以进行有效地血红细胞识别,并能对血红细胞进行较为准确的数目统计.
为了得到准确的细胞计数结果,在计数前需要对细胞图片进行预处理.对血红细胞图像进行灰度化、二值化、中值滤波、逻辑运算、形态学处理,以满足后续标记、去粘连和计数的需要.
国际照明委员会(CIE)选择的色彩三基色是红色(R)、绿色(G)和蓝色(B),三基色按照一定比例混合就可以得到自然界中几乎所有色彩.考虑到血红细胞图像颜色单调,转化成灰度图像仍能保留完整的信息,而且从空间和速度方面考虑,将彩色图片转化成灰度图像,不仅可以减少运算量,提高数据处理速度,还可以将减少图像存储空间.图片的灰度化就是将彩色图片中的色度和饱和度删除,仅保留其亮度信息.彩色图像进行灰度化有4中常用方法:三色均值法、最大分量法、加权平均法、转化到其他颜色空间方法.
本文采用加权平均法来进行灰度化,应该根据图像包含的信息或对图像信息提取的要求,赋予R、G、B不同的权值.权重可以根据R、G、B三色分布直方图获得三个分量的取值范围.本文的灰度化处理公式如下:
(1)
由于灰度图片中还存在背景和噪声,要想直接从图片中获取细胞图像,将灰度图像进行二值化.二值化处理中需要设定一个灰度阈值t,将灰度大于阈值的设置为1,小于阈值的设置为0,如式(2)所示.
(2)
从式(2)可以看出,灰度阈值t对二值化处理结果影响很大,目前存在很多方法用来优化阈值t的选择,比如Ostu法[8]、一维交叉熵值法[9]等.
为了消除二值图像中的噪声,中值滤波可以在不减少图像对比度的情况,在一定程度上有效消除脉冲噪声且不会模糊边界.它的原理是将数字图像中一点的值用该点临域的各点值的中值代替,让周围的像素值更接近真实值,从而消除孤立的噪声点.滤波结果如图1(b)所示,对比图1(a),可以发现通过对中值滤波后,细胞边缘扩大,特别是图片边界的细胞.细胞边缘扩大,黑色增多(二值图像"0"增多).
图1 自动阈值二值化图像和中值滤波后的二值化图像
通过初次二值化图像与中值滤波后的二值化图像进行“或”运算将优化图像效果,然后将图像取反,使原本图片中黑色的细胞变白,并将细胞中心黑色的部分填充,便于细胞计数.从图2(c)可以看出,填充背景的图像中,消除了一些由于取反带来的噪声,更接近真实情况.
图2 逻辑运算后的二值化图像、取反后的图像和填充背景后的图像
由于图片中细胞粘连程度不相同,运用“开运算”使图像的边缘细胞得到较好的分离.图像开运算也即先进行腐蚀运算后膨胀运算,可以表示为:
A∘B=(QΘB)⊕B.
(3)
开运算的结果是使图像边界平滑,去除图像中不包含结构信息的对象区域,断开窄小的链接,而保留图像中的包含结构元素的对象区域,并且保持其形状和大小均不变.由于腐蚀是去除了较小的亮细节,而随后的膨胀中又没有恢复,所以在实际应用中,灰度图的开运算常用于去除相对于结构元素而言较小的亮点,同时保留所有的灰度和较大的亮区特征不变.
图3 开运算后的图像
进行开运算后,对图像进行细胞边界识别,便于后续细胞统计.本文采用8连通来识别,即向当前像素点的8个方向:0°、45°、90°、135°、180°、225°、270°、315°,分别进行识别.具体识别算法如下.
(1) 首先按照从上往下,从左到右的顺序扫描图像,寻找没有标记跟踪结束记号的第一个边界起始点P0.P0是具有最小行和列值的边界点.定义一个扫描方向变量dir,该变量用于记录上一步中沿着前一个边界点到当前边界点的移动方向,其初始化取值为7.
(2) 按逆时针方向搜索当前像素的3×3邻域,其起始搜索方向设定为:当dir是奇数时,起始搜索方向为(dir+7)mod 8(对8取模);当dir是偶数时,起始搜索方向是 (dir+6)mod 8.在3×3邻域中搜索到的第一个与当前像素值相同的像素即为新的边界点Pn,同时更新变量dir为新的方向值.
(3) 如果Pn等于第二个边界点P1且前一个边界点Pn-1等于第一个边界点P0,则搜索停止,结束跟踪,否则重复步骤2继续搜索.
(4) 由边界点P0,P1,P2,…,Pn-2构成的边界即为要识别的细胞边界.
细胞边界识别结果如图4所示.对细胞边界进行识别之后,采用“贴标签”算法,将背景元素设置为0,将第一个连通区域标记为1,第二个连通区域标记为2,以此类推.标记结束后最大的连通区域即为初步的连通域数目,存入数组Number.分析连通域数目,统计标签数组中相同标签的个数,存入数组Sum.存入数组Sum的元素,对应的是连通区域的大小,也即细胞的面积大小.结合实际细胞面积,剔除非细胞区域的连通域,得到初步的细胞数目,存入数组Number.计算细胞区域的加权平均面积,作为细胞面积阈值Area_TH.判断Sum元素与细胞面积阈值的大小关系,统计细胞粘连情况,计算出连通域分割数目N,准确计算出细胞数目为Number+N.详细的计算流程如图5所示.
图4 细胞边界识别
图5 细胞计数流程图
本文以人体血液涂片为研究对象,采用奥林巴斯CX31显微镜观察血液细胞图像,并采用RZ F300C工业相机垂直拍摄图像.由于相机拍摄的图像超出了显微镜视野范围,导致拍摄到的血液红细胞图像中间亮,边缘暗.截取了原图像和显微镜视野范围一致的部位进行图像处理和计数.
为了验证本文的方法,对采集的血红细胞图像进行处理后,采用ImageJ软件帮助人工计数,并与本文方法计数结果进行对比.ImageJ是一款基于Java的公共图像处理的开放软件,能对图片进行图像操作、对图像的区域和像素进行统计.ImageJ的统计结果如图6所示.两种方法的统计结果如表1所示.从表1可以看出,本文方法可以很好地统计血红细胞的数目,与人工计数相比,图6(a)的误差是2.67%,图6(b)的计数误差是0.37%.另外,采用分水岭算法对相同的血红细胞进行计数,结果如图7所示,计数结果如表1所示.从表1中可以看出,本文方法比分水岭算法的计数结果更为准确.
图6 ImageJ软件统计结果
图7 采用分水岭算法得到的a)和b)细胞图像结果
表1 三种不同方法统计的细胞数目结果对比
本文基于Matlab语言,提出了一种用于血红细胞计数的工程方法.该方法可以对血红细胞图像进行灰度化、二值化、逻辑运算、形态学处理、细胞边缘识别,并用于细胞数目统计.经与ImageJ软件统计结果相比,本文方法的统计结果误差在5%以内,比分水岭算法的计数结果更加准确.结果表明,本文方法简便可行,是一种有效的工程图像处理方法.
[1] 刘莉莉,王 铮.一种适合血细胞图像分割的改进流域分割算法[J].微电子学与计算机,2010,27(11):37-39.
[2] Karunakar Yogesh,Kuwadekar Alhad. An unparagoned application for red blood cell counting using marker controlled watershed algorithm for Android mobile[C]//IEEE. Fifth International Conference on Next Generation Mobile Application,Services and Technologies.Beijing:IEEE,2011: 100-104.
[3] Kimbahune Vinod V,Uke Nelesh J. Blood cell image segmentation and counting [J]. International Journal of Engineering Science and Technology,2011,3(3): 2448-2453.
[4] 林小竹,王彦敏,杜天苍,等.基于分水岭变换的目标头像的分割与计数方法[J].计算机工程,2006,32(15),181-183.
[5] 周 浩,李天牧,尉 洪. 基于数学形态学的血液细胞图像边缘提取[J]. 北京生物医学工程,2002,21(2): 89-92.
[6] 陈立英,裴喜春,侯振杰. 基于遗传算法的血液细胞图像的分割方法研究[J]. 计算技术与自动化,2008,27(2):89-92.
[7] 赵超阳,姚军平,刘 勇,等. 基于Matlab视网膜视锥细胞的图像处理[J]. 中国组织工程研究,2013,17(15):2780-2785.
[8] Nobuyuki Ostu. A threshold selection method from gray-level histogram[J]. IEEE Transactions on Systems,Man,and Cybernetics,1979,9(1): 62-66.
[9] Li C H,Lee C K. Minimum cross entropy thresholding[J]. Pattern Recognition,1993,26(4): 617-625.