让计算机取代人来完毕对于红白细胞的自己主动分析。关键在于对红白细胞的切割与识别。
眼下,已经出现了很多种切割和识别方法。在切割上有阈值切割、聚类、边缘检測以及区域提取等方法。特定地使用某种阈值切割法只能将当中的一部分红白细胞切割出来。聚类法是通过检測相似点的簇来对每一个聚类进行标记。其缺点是聚类数目事先不可知。并且没有考虑到不同类别间的交叉性。边缘检測通过确定强度值的突变点的位置来区分不同的区域,可是只通过边缘检測并不能取得总体上较惬意的效果。
区域提取存在停止准则确定困难以及计算复杂等缺点。
结合红白细胞的高倍镜下图像的特点。本文採用了一种基于中值滤波和形态学结合的边缘检測方法,在对灰度图像和二值图像进行边缘检測时。可以有效地抑制噪声,保护边缘细节,提高检測精度。
中值滤波是一种非线性滤波。我们採用的窗体形状为3*3方形。其算法为:
(1)将模板在图像中漫游,并将模板中心与图像中某个像素的位置重合。
(2)读取模板下相应像素的灰度值,设这些灰度值为[[x0, x1, x2], [x3, x4, x5], [x6, x7, x8]]。把9个灰度值按值的大小顺序排列。
(3)找出排在中间的一个值,设为y4 = Med{x0, x1, ..., x7, x8},将y4赋给相应模板中心位置的像素。
这里Med表示窗体内全部的数按从小到大的次序排列后,取当中值的运算。
经过中值滤波后。图像噪声被去除,并且图像边缘保护得比較好,在运用基于膨胀运算的边缘提取算法对图像进行膨胀运算。使图像边缘上的灰度得到加强。再用膨胀后的图像减去原图像,从而得到图像的边缘。
膨胀运算能够填平图像中小孔和弥合小裂缝。
主要利用了opencv中的三个函数:
// 基于中值滤波的自适应二值化
cvAdaptiveThreshold( gray, binary, max_val, CV_ADAPTIVE_THRESH_MEAN_C, 0, 3, 5 );
// 数学形态学上的膨胀和腐蚀
cvDilate( binary, binary, NULL, 3 ); // 膨胀白色区域
cvErode( binary, binary, NULL, 3 ); // 腐蚀黑色区域