基于图像处理的菌落分割与计数算法研究

2024-12-08 00:00:00陈欣平孙玉民陈玉燕马竞赛
中国新技术新产品 2024年9期
关键词:图像分割机器视觉图像处理

摘 要:在一定条件下,形态相像、数量繁多的细菌集聚成为菌落。菌落数量可以直接或间接地反映食品安全和环境卫生的情况。快速、精确定菌落的准确数量十分重要。本文开发了一种基于Python语言的菌落分割与计数的机器视觉算法,能够准确、系统地对菌落进行分割和计数。本文算法菌落计数的准确性达到93.05%。与人工检测方法相比,本文算法准确、客观,价格低廉,运算速度快,适合替代人工检测法进行菌落计数。

关键词:图像处理;图像分割;机器视觉

中图分类号:TP 391 " " " " " " 文献标志码:A

菌落数量可以直接或间接地反映食品安全和环境卫生的情况,在检测食品、医疗用品、化妆品和空气质量等方面发挥重要作用。高菌落数量会对居民健康产生严重的潜在威胁,因此,快速、精确地确定菌落数量十分重要。

使用图像处理算法,利用相关工具自动计算菌落数量[1],包括图像预处理、阈值分割、图像填充、菌落分割以及菌落计数等步骤。

1 研究方法

基于图像处理的菌落分割与计数算法研究对菌落进行自动计数,主要包括以下4个步骤。1)对菌落图像进行菌落灰度化和滤波降噪。预处理菌落图像。2)分割菌落图像阈值,分离菌落的目标与背景,分割背景中的所有菌落,将这些菌落作为单独的目标。3)采用开运算方法分割菌落图像中的粘连菌落,提高菌落计数的准确性。4)对菌落图像进行计数。

基于图像处理的菌落分割与计数具体流程如图1所示。

2 算法流程

2.1 图像预处理

2.1.1 图像灰度化

图像灰度化是将一幅彩色图像转换为灰度图像。灰度图像包括1个通道,每个像素点包括RGB 3个分量,每个分量有对应的加权系数,加权系数比例与灰度图像的亮度有统计学意义,通道值为灰度值。在图像灰度化的过程中,每个像素的RGB值组合成1个单一的灰度值。常见的灰度化方法包括加权平均法、取平均值法、最大值法以及最小值法等。

本文采用加权平均法,利用OpenCV库进行图像灰度化处理。不同RGB通道对图像亮度的贡献程度差异较大,当计算每个像素的灰度值时,每个通道的权重系数不同。人眼对绿色敏感度最高,对蓝色敏感度最低,因此采用加权平均法计算时,红色通道的权重为0.299,绿色通道的权重为0.587,蓝色通道的权重为0.114,加权平均法的优点是能够保留彩色图像的信息,适应性强。将彩色图转换为灰度图,能够加快图像处理速度,使噪声对图像的影响变小。利用OpenCV库对菌落图像进行灰度化后,极大程度地减轻图像处理过程的负担,提升图像处理效率。

2.1.2 图像滤波去噪处理

噪声对图像输入、采集和处理等环节都有较大影响,因此图像滤波去噪是图像处理中不可缺少的步骤。在图像处理过程中,采用中值滤波、均值滤波、双边滤波和高斯滤波等方法来进行滤波操作。这些方法能够有效过滤图像中各种不同类型的噪声,并尽量保留图像的细节特征。

本文采用中值滤波法消除椒盐噪声,效果较好。中值滤波法是一种非线性的平滑技术[2],其基本原理是将每个像素点的灰度值替换为该点邻域窗口中所有像素点灰度值的中位数。其主要功能是使某像素的灰度值接近周围领域内的像素,从而消除孤立的噪声点,使周围像素值更接近真实值。在消除噪声的同时,中值滤波还能够有效保护边界信息,降低图像模糊的概率。本文分别采用3×3、51×51、101×101卷积核进行中值滤波处理,卷积核是一个宽度为3、高度为3的二维矩阵。在这个矩阵中的每个元素都是可学习的权重,可以在输入特征图中执行卷积操作。采用3×3卷积核进行中值滤波处理能够得到比较完整的菌落图片,图片细节更清晰,因此本文主要使用3×3卷积核进行中值滤波,对图片进行预处理。

2.2 菌落图像二值化

图像二值化是一种简单的图像处理方法,使图像呈现明显的黑、白效果,有效去除图像中噪声,提取有用的目标物体。本文采用固定阈值法去除菌落图像背景,凸显菌落图像的轮廓。根据不同的阈值将图像灰度直方图分为多个区间或类别,并将每个类别内的像素视为相似或相关的像素,对图像进行分割[3]。

基于阈值的图像分割方法最关键的步骤是选取最合适的阈值来更准确地分割图像[4]。针对相同的灰度图像,设定不同的灰度阈值(T=80、T=120、T=140、T=150)分别进行阈值分割,得到效果不同的分割图。本文根据不同的阈值对菌落图像进行分割,阈值为120的分割图像效果较好。

2.3 分割相连菌落

当菌落与背景分为2个部分时,进一步优化图像,使后续能够更精确地进行分割计数。在菌落计数的过程中,在图像中存在粘连菌落,会干扰精确计数结果,因此,需要使用算法对分割后的图像进行黏连菌落分离。本文算法利用数学图像中的开运算进行图像分割。由于膨胀和腐蚀不能直接等同,因此先腐蚀目标图像,再对目标图像进行膨胀处理,即构成开运算。开运算腐蚀目标图像,对目标图像进行膨胀处理。腐蚀是在一定范围内寻找极小值的运算。将1幅图片的1块当作A,当使用结构元素B进行腐蚀操作时,其可表示为B的中心点(锚点)在目标区域A的内部边界上移动,选取B覆盖区域内像素的最小值。这个过程能有效去除图像中的小物体,断开狭窄的连接,并收缩物体的边界。该操作针对突出部分,B整个覆盖在A上的像素会保存。膨胀是在一个区域内获得极大值的运算。可定制核心(结构元素)的尺寸和形状,通常为小块或圆形,中心有锚点,用于确定在图像上操作的精确位置。膨胀过程涉及将结构元素B在图像上滑动,以B的锚点为中心对应图像像素点,并取B覆盖区域的最大像素值作为膨胀后的像素值。在这种情况下,图片的突出部分会慢慢变大。

开运算不会对区域整体的位置和形态产生影响。开运算的结构元素为图像B,利用开运算处理图像A,如公式(1)所示。

A○B=(AΘB)⊕B " " " " " " " " " " " " (1)

2.4 菌落计数的原理

采用八邻域边缘跟踪法对菌落进行计数,检测菌落边缘,并计算数值。

2.4.1 八邻域边缘跟踪法原理

八邻域边缘跟踪法原理如下。假设物体的一个边界点为P,那么下一个边界点Q必然出现在P的8个相邻像素点(即八邻域)中。因此可以跟踪八邻域的信息。

起始点可以选择图像区域左上角的1个边界点,自上而下、从左至右地按照逆时针方向搜索八邻域,找到下一个边界点为止,将这个边界点作为当前点继续搜索,不断重复进行这个搜索过程,直至回到搜索起点为止。

边界跟踪的目的是确定八邻域搜索的起始位置,即从该点开始检查图像中相邻的8个方向,以便快速、有效地找到下一个边界点。八邻域方向码如图2所示。当搜索开始时,图片区域的左上角是搜索起点,0和4以下为下一个边界点位置,按逆时针方向搜索m=5 的八邻域位置,以第一个遇到的与当前点相同且属于物体的像素点作为下一个边界点。如果在其八邻域内没有找到任何属于物体的像素点,那么说明该物体是一个孤立点,此时将结束搜索。将刚搜索的边界点作为下一个点,设d为其在上一个边界点的邻域内的方向码,下一个边界点搜索的开始点为m=d-2,即顺时针旋转2个方向后的方向编码为d。

2.4.2 菌落计数

在菌落图像中,将目标菌落的编号设为1,背景的编号设为0。按照从左至右、从上至下的顺序搜索,第一个发现目标菌落的图像位置记为A,A位于该图像左上角。从A开始,以左下方作为初始搜索方向,根据左下、下、右下、右的方向依次搜索,以查找一个或多个目标点B。将B作为图像的初始搜索点,按照正右、右上、上、左上、左、左下、下、右下的方向搜索,寻找下一个目标点C,如果C和A相同,则结束跟踪,菌落计数加1;如果不同,则继续寻找下一个目标点D,直至找到A为止。如果跟踪完成一个连通区域,则确定区域搜索的结束点,将其作为起始点继续搜索下一个区域,不断相加,得到菌落的计数值M。M为利用八邻域边缘跟踪法成功找到的菌落数目[5]。

为了更清晰地看到图像计数,运用OpenCV中的相关函数drawContours(imgTem,contours,-1,(0,0,255),15)来绘制轮廓,图像中存在轮廓的点即为在计数过程中统计的菌落。

3 试验结果与分析

经过本文算法计算每个步骤的结果如图3所示,原菌落数目为686个,现菌落数目为666个,准确率为97.2%。

对菌落图进行运算后,与手动计算相比,本文算法的准确率平均值为93.03%。

4 结语

本文开发了一种基于Pyhton语言并利用OpenCV库进行菌落分割与计数的算法,该算法能够准确地对菌落进行分割和计数。利用灰度化、中值滤波法对图像进行预处理,去除图像噪声;利用固定阈值分割法将菌落图像转换为二值图像;利用开运算分割粘连菌落,即先对图像进行腐蚀运算,再进行膨胀运算,在位置和形状不变的前提下,达到分割菌落的目的;利用八邻域边缘跟踪法检测菌落边缘,对菌落图像进行计数。具体步骤如下。1)整理基于图像处理的菌落分割与计数的相关文献,构建了进行传统菌落图像处理的流程,即经过菌落图像预处理、菌落阈值分割、菌落图像填充、菌落分割和菌落计数等步骤完成菌落计数。2)在图像预处理方面,为了得到较完整的菌落图片,获得更清晰的细节,针对菌落的特点,本文算法选择中值滤波法对菌落进行去噪,效果较好。3)在图像分割方面,本文算法使用固定阈值法将菌落由灰度图转化为黑白图,与其他阈值分割方法相比,固定阈值法更简单,错误率更低,适合处理简单菌落图像。4)本文算法使用开运算分割黏连菌落,开运算能去除图像目标区域中的孤立的小区域、平滑目标边界上的毛刺,同时不太改变目标区域面积大小。5)在菌落计数方面,本文算法使用八邻域边缘跟踪法进行菌落计数,与四邻域边缘跟踪法相比,本文算法能够更准确地划分菌落,菌落计数效果更好。6)在对菌落图进行运算后,与手动计算相比,本文算法的准确率较高,平均值为93.03%,成本较低,不使用大型仪器就可以统计菌落数量,能够满足工作需求。

参考文献

[1]武雪锋.菌落自动计数系统的开发与研究[D].天津:河北工业大学,2015.

[2]江明,刘辉,黄欢.图像二值化技术的研究[J].软件导刊,2009,8(4):175-177.

[3]黄鹏,郑淇,梁超.图像分割方法综述[J].武汉大学学报(理学版),2020,66(6):519-531.

[4]孙少林,马志强,汤伟.灰度图像二值化算法研究[J].价值工程,2010,29(5):142-143.

[5]刘相滨,向坚持,阳波.基于八邻域边界跟踪的标号算法[J].计算机工程与应用,2001(23):125-126,132.

猜你喜欢
图像分割机器视觉图像处理
机器学习在图像处理中的应用
电子制作(2018年18期)2018-11-14 01:48:20
模糊图像处理,刑事侦查利器
图像处理技术的实战应用
一种改进的分水岭图像分割算法研究
科技视界(2016年26期)2016-12-17 16:25:03
基于LabVIEW雏鸡雌雄半自动鉴别系统
大场景三维激光扫描仪在研究生实践教学培养中的应用
科教导刊(2016年25期)2016-11-15 17:53:37
一种图像超像素的快速生成算法
基于鲁棒性的广义FCM图像分割算法
基于机器视觉的工件锯片缺陷检测系统设计
软件工程(2016年8期)2016-10-25 15:55:22
基于机器视觉技术的动态“白带”常规检测系统的开发
科技视界(2016年20期)2016-09-29 11:11:40