基于机器视觉的菌落计数算法研究

2023-11-16 08:17蒋永翔孙美华闫伟伟马一文
制造业自动化 2023年10期
关键词:培养皿像素点菌落

蒋永翔,孙美华,王 彤,闫伟伟,马一文

(天津职业技术师范大学 机器人及智能装备研究院,天津 300222)

0 引言

菌落是由细菌细胞在培养皿中繁殖出的可见生长物[1-2]。通过对菌落数量的测定可以判别食品被细菌污染的程度[3]。随着计算机与图像分析技术的不断发展,利用计算机及图像处理工具进行菌落计数,可降低工作强度,提高工作效率[4-6]。对于菌落计数的研究,国内外研究人员在算法、培养设备方面取得了一些研究成果。周莹莉等人用最大类间方差法、距离变换、分水岭算法等处理菌落图像。用八邻域边缘跟踪、区域填充算法实现菌落计数,重现性好,速度快,但针对粘连严重的菌落,计数误差较大[7]。孙琪等人提出了一种用自适应理想图像重建进行菌落检测的方法。该方法侧重于消除光照偏置,重新构建理想的菌落图像。在重建的理想菌落图像中,菌落区域对应高亮度部分,背景区域对应较低亮度部分,使得菌落区域与背景区域有较高的类间差以及较低的类内差。从而很容易地检测出细菌菌落,完成计数[8]。但是当光照分布极其不均匀以及对比不够明显时,计数结果会有较大误差。张力新等人提出一种基于改进水平集的全自动菌落分割、计数方法[9]。该方法用多相水平集算法对菌落目标进行自适应分割,利用凹点检测方法对粘连目标的计数进行修正。但是对培养皿边缘的菌落进行计数时存在较大误差。因此研究一种精确快速地菌落计数算法十分必要。

本文为实现菌落自动计数利用python设计了一种算法,算法流程如图1所示,首先通过搭建的图像采集系统对培养皿拍照来获取菌落图像,进而采用灰度处理、中值滤波的方法对图像进行预处理,通过边缘检测连接提取培养皿边缘及边缘处的菌落信息,然后对图像进行迭代阈值分割,得到菌落的二值化图像[10],再利用霍夫变换进行培养皿边缘剔除,最后用连通域计数法对二值化图像中的菌落进行标号,完成菌落计数。实验对比分析了不同阈值下菌落图像自动计数同人工计数的结果,通过与人工计数误差对比,计数精度达到了90%,满足菌落计数的要求。

图1 菌落计数流程图

1 设备搭建及菌落图像的采集

菌落自动计数系统的硬件部分是由培养皿控制柜和计算机搭建起来的,如图2所示,控制柜中共放置12个培养皿存放架,每个放置架按照两行5列的排列方式设计,可放置10个培养皿。培养皿放置在存放架上如图3所示,由下方的培养皿加热板进行菌落培养温度控制。设备采用相机固定不动的方式,通过机械搬运手将培养皿固定板在直角坐标系下运动完成取出和拍照。

图2 菌落自动计数系统

图3 培养皿分布

选定海康工业相机及镜头作为控制柜的采集设备、德肯照灯作为机器视觉光源。将相机设置在距离光源385mm的位置,拍照设备布局图如图4(a)所示,搭建完成后的实物细节图如图4(b)所示。利用本课题设计的培养皿计数系统,可在菌落培养的同时进行全自动图像采集和菌落计数,避免了培养皿取出检测等人为因素对检测精度的影响。

图4 图像采集设备

2 图像预处理

本文先在python中对采集到的菌落图像进行灰度处理得到灰度图像,然后对灰度图像进行中值滤波,用像素点邻域灰度值的中值来代替该像素点的灰度值,中值滤波不受邻域内比典型灰度值大很多或小很多的灰度值的影响,可以在很好的保留住图像的边缘细节部分的同时有效的去除椒盐噪声、脉冲噪声等干扰[11-13]。该种预处理方法步骤如下。

1)将要处理的菌落图像每一像素点的像素值中的红R(x,y)、绿G(x,y)、蓝B(x,y)三个分量的平均值作为其灰度值。

其中,(x,y)表示像素点坐标。

2)选取目标点,将目标点f(x,y)周围八个像素点的灰度值及目标点的灰度值按照从小到大的顺序排列。取排列好的灰度值的中值作为目标点的新灰度值,3×3图像的中值滤波示意图如图5所示。

图5 3×3中值滤波原理

预处理前后的菌落图像如图6(a)、图6(b)所示。

图6 菌落预处理图像

3 边缘检测及连接

边缘检测及连接是为了在减少边缘剔除的数据处理量的同时将培养皿边缘以及菌落的特征信息提取出来,从而使算法的运算速度更快、精度更高。本文使用Sobel算子来进行菌落边缘的检测及连接[14]。Sobel算子的卷积因子为

通过上述两个卷积因子对图像分别进行横向以及纵向的卷积计算,所得最大值即为梯度幅值,计算结果展开如下:

用式(4)计算梯度方向。当θ取零时,在y方向的求导结果也为零,说明该位置存在纵向边缘,其对应的点为边缘点,所有边缘点连接形成的界限即为边缘。

Sobel算子边缘检测效果如图7所示,可以看出,使用Sobel算子进行边缘检测,检测到的培养皿边缘和菌落边缘轮廓十分明显。

图7 Sobel算子边缘检测效果

4 阈值分割

本文采用迭代阈值分割法将菌落目标与背景分开。先将待测图像分成若干区域,把每一小区域的最大灰度值和最小灰度值的平均值作为初始阈值T0[15]。当初始阈值为T0时,用初始的开关函数把这一小区域图像的像素分成菌落目标(灰度值大于T0的像素群)、背景(灰度值小于T0的像素群)两部分[16],灰度值最高的是菌落目标(黑色像素点灰度值为0,白色像素点灰度值为255),对小区域中的每个灰度值进行迭代分析,确定图像中每个目标对应的分割阈值,并将结果取平均以获取新的阈值,之后再次按此阈值迭代法将此小块图像分成菌落目标、背景,生成新的迭代函数,重复此阈值迭代法,直到迭代收敛于某个稳定的阈值[17],此刻得到的阈值即为该小区域图像的最佳阈值Ti+1。然后将每一小区域的最佳阈值进行比较,从中选出最合适的阈值。迭代阈值分割的流程如图8所示。

图8 迭代阈值分割流程图

图8中δ为趋近于0的数。

迭代阈值分割的数学表达式如下:

其中,Ti+1为最佳阈值。L为灰度级的个数,k为灰度值,hk是灰度值为k的像素点的个数。

以Ti+1=130、150、180为例,图9为不同阈值下检测的菌落图像数据,可以看出,阈值为130时,一些背景像素被解释为目标像素,如图9(a)中标记为4、7的像素等被认为是目标像素进行计数,导致菌落数量检测不佳;阈值为150时,目标像素与背景像素解释较为准确,计数结果比较准确;阈值为180时,一些目标像素被错误地解释为背景像素,如图9(b)中标记为2、9的像素等被认为是背景像素在图9(c)中未被计数,导致菌落计数误差较大,据此,将最佳阈值参数设置为150。

图9 不同阈值检测到的菌落图像数据

5 菌落粘连分割

在菌落图像中,有时会出现两个菌落生长在一起的情况即“粘连”现象,如图10所示。

图10 菌落粘连示意图

菌落粘连现象会导致菌落计数结果不准确,因此需要将粘连的菌落分割开以保证计数的准确性。

本文采用自适应距离变换的分水岭算法来分割菌落粘连的部分。距离变换的原理是将二值化图像中每个像素点与背景之间的最短距离作为该像素点的灰度值,最短距离是通过计算整个图像中的每一个像素点与所有背景像素点之间的距离,从中找到最小值得到的,得到每个像素点的灰度值即得到了灰度图像[18]。如图11所示,先从左上角开始,从上到下,从左到右,计算像素f(x,y)到像素1、2、3、4的距离。再从右下角开始,从下到上,从右到左,计算像素(x,y)到9、8、7、6的距离。

图11 距离变换原理图

根据式(6)可得到每个像素点的灰度值。

其中,(x,y)代表中心像素点的位置,f(x,y)代表(x,y)像素点的像素值;q代表3×3模版中其他像素点的位置。D((x,y),q)代表(x,y)像素点与q像素点之间的距离。

然后利用分水岭算法处理经过距离变换得到的灰度图像[19],找到不同灰度值的像素点,选取处于分水岭边界的灰度值作为边界点标出,边界就将粘连菌落分割开来。粘连目标做自适应距离变换的分水岭处理效果图如图12所示。该算法有效分割了粘连目标,使目标计数点更为清晰,提高了计数的准确性。

图12 菌落粘连分割图

6 图像边缘剔除

培养皿边缘的白色像素会使计数结果产生误差,为避免误差的产生,需将得到的二值化图像进行边缘处理,这里使用霍夫变换(Hough)来剔除培养皿边缘所在的圆以及边缘所在的圆以外的信息[14]。

本文所用培养皿直径为90mm,利用霍夫变换检测到图中直径为90mm的圆即为培养皿边缘,将该圆以及圆外所有像素值为255的像素点的像素值置为0,就将培养皿边缘剔除了。剔除培养皿边缘后的菌落图像如图13所示。可以看出,霍夫变换可以很准确地剔除培养皿边缘。

图13 剔除培养皿边缘后的菌落图像

7 菌落自动计数研究

7.1 连通域计数方法

本文提出了一种连通域计数方法,在对连通区域进行扫描检测时,首先申请一个一维数组M[i,j],其中i代表连通区域个数,j代表每个连通区域中白色像素点的个数。其具体算法为:将二值化图像从左向右,从上向下进行扫描,扫描的核心是寻找非零的像素点,处在同一个连通域的非零像素,认为是来自同一个菌落[20],处于不同连通域的非零像素,认为来自不同的菌落。将遇到第一个白色像素点即非零像素点记为N1点,把N1点做为种子点,将其标记值设为0,并将与其连通的白色像素点的标记值同样设为0,直到连通域内没有未被标记的白色像素点。然后将数组M中的i值加1,按照上述方法标记下一个连通区域,标记过的点不会被重复标记,扫描整幅图像,直到没有未标记的相连的白色像素点则完成了对图像中菌落的计数。菌落计数流程如图14所示。

图14 菌落计数流程图

计数后的微生物图像如图15所示,图中标出了菌落的轮廓,且给每个菌落分别标记了序号,标记值的最大值为菌落个数,效果明显,易于观察。

图15 菌落计数图像

7.2 计数情况对比

通过对比菌落图像人工计数结果与菌落图像在不同阈值下自动计数的结果的误差,从而验证自动计数结果的准确性。由图16可知,自动计数结果与人工计数结果的偏差最大约11%,偏差最小约5%,平均偏差在10%左右。其中,菌落数目在50个以内的样本,平均偏差为8%。菌落数目大于50个的样本,平均偏差是9.5%。且对于菌落定位清晰,效果良好。均达到了设计要求。

图16 程序计数与人工计数对比图

8 结语

本文提出的基于图像处理的菌落计数算法实现了菌落计数自动化。其中菌落的分割是本次计数的关键步骤,并且该算法在真实环境中进行(而不是在受控环境中)。实验过程中面临的挑战是菌落背景的大小而造成的干扰,因为背景被认为是噪音,通常会掩盖菌落的可见性。因此,改善用于采集菌落图像的设备以及增强采集到的图像是十分必要的。本文提出了连通域计数法完成计数的最后一步。并且在类似的对象计数项目中也同样可以引用该方法,可复现性较高。总体而言,基于该方法的菌落计数结果与人工计数结果相比误差较小,且该方法非常有前途,而且替代性较强,经济快速。

猜你喜欢
培养皿像素点菌落
不同emm基因型化脓性链球菌的菌落形态
工业废水
基于局部相似性的特征匹配筛选算法
NASA and Space Exploration
基于5×5邻域像素点相关性的划痕修复算法
一种用于药物抗菌试验纸塑料培养皿
基于canvas的前端数据加密
基于逐像素点深度卷积网络分割模型的上皮和间质组织分割
卫宝香皂:培养皿告诉你细菌真相
食品微生物检验中菌落总数测定的注意事项