钱柏英,刘志刚
(1.江西工程学院,江西 新余 338000;2.新余市博物馆傅抱石纪念馆,江西 新余 338000)
双孢蘑菇(Agaricus bisporus) 是世界性栽培和消费的食用菌[1]。最早栽培于法国,有悠久的栽培历史,而且在世界各地分布十分广泛,深受世界各族人民的喜爱,已经成为了食用菌商品贸易的主力品种[2]。鲜品、罐装和盐渍等多种商品形式的双孢蘑菇成为了人们餐桌上的美食[3]。双孢蘑菇不仅含有多种氨基酸和维生素等营养物质,还含有多糖等活性物质,在医药保健领域也有广泛的应用[4]。双孢蘑菇在我国福建、河南、山东等多地都有栽培,而且工厂化栽培日趋普及,一年四季均可以大批量规模化生产,一些大的双孢蘑菇工厂日产量可达到百吨[5]。
工厂化生产要对商品双孢蘑菇进行等级划分,然后才能贮藏销售,以便获得更高的利润[6]。但目前双孢蘑菇的分组检测多采用人工分拣,工人劳动强度大,长时间工作容易产生视觉疲劳,人工判断也有一定的误差,造成商品菇的规格不统一、存在等级差别,而且工作效率低下。近年来随着计算机视觉和数字图像技术的不断发展,自动分拣系统在许多领域得以应用[7]。通过利用计算机视觉和图像识别、测量技术对双孢蘑菇的大小进行检测,并对双孢蘑菇的破损缺陷进行自动识别,从而实现双孢蘑菇的在线自动等级划分。
双孢蘑菇的等级根据加工方式的不同,分级标准也不相同。新鲜双孢蘑菇根据NY/T 1790-2009双孢菇等级规格标准执行[8],分为特级、一级和二级菇,主要从菇体颜色(主要指标是颜色、损伤和色斑)、菇体形状(主要是外观形状、菇柄长度和开伞度)来区分。新鲜双孢蘑菇的规格划分主要根据菌盖直径分为大、中、小3种,分别要求直径为“>4.5 cm” “2.5 cm~4.5 cm”“<2.5 cm”,其中大、中规格要求直径差异要“≤0.8 cm”,小规格差异“≤0.7 cm”,同时也规定了各等级和规格的允许误差范围。
而加工成罐头的双孢菇按GB/T 14151-2006蘑菇罐头标准执行,并分为整菇、片菇和碎菇3类,主要依据指标是菌盖直径、形状等,详见表1。
表1 双孢蘑菇罐头分级标准Tab.1 Grading standards for canned Agaricus bisporus
由表1可以看出,双孢蘑菇的等级划分主要是针对“菌盖”部分,因此,自动分组系统的设计也主要从菌盖大小和损伤来进行等级划分和设计。
双孢蘑菇自动分级系统组成见图1。
图1 双孢蘑菇自动分级系统组成Fig.1 Composition of Agaricus bisporus automatic grading system
如图1所示,双孢蘑菇自动分级系统主要模块包括以下几个部分:
1)等待检测的双孢菇,需要进行分级检测的商品菇。
2)双孢菇上线输送机构,用于将“等待检测的双孢菇”从分拣生产线上输送到待检区。
3) 电荷耦合元件CCD(charge-coupled device,CCD)拍照装置,对通过检测区的双孢菇进行拍照,为保障图像质量,采用统一的“辅助光照”设备为摄像头采光补光。
4) 数字图像采集卡,获取双孢菇数字图像信息,并存储到相应的特征值数据库中。
5) ARM控制器,也称ARM处理器(advanced RISC machines,ARM),是一种带有精简指令集RISC (reduced instruction set computing,RISC) 的处理器架构,是自动分级系统的核心控制设备,采用嵌入式系统设计,可以控制数字图像存储器的输入/输出方式。在本系统中,可以从键盘输入双孢菇分级的标准数据(如菌盖直径、规格等),在显示器等输出设备上直观显示;并与双孢菇特征值数据库中采集到的双孢菇图像数据进行比较,从而对双孢菇进行对比检测。
6)上位机,用于发出分级操控命令,其控制信号来自ARM控制器发出的指令。
7)驱动模块,通过驱动电路放大控制信号,从而驱动电机、继电器或扬声器等设备工作,利用生产线上的机械装置对不同等级双孢菇进行分离,从而完成双孢菇的等级划分。该系统利用ARM控制器进行控制,系统运行安全可靠,而且功耗低、精度高,可以单独安装在原有的双孢菇生产线上,结构简单,安装、调试和维修都十分方便。
在双孢菇分级系统中,对双孢菇数字图像的处理是关键。由于分级的主要依据是双孢蘑菇的菌盖直径、颜色和损伤这3组数据。因此,图像的处理是双孢菇图像区域的整体轮廓信息,以获取双孢菇图像的边界信息,提取出双孢菇菌盖轮廓进行测量以得到直径数据,主要流程见图2。
由图2可知,双孢菇图像的采集系统由CCD摄像机和图像采集卡来完成,并由采集卡读取到计算机中保存备用,图像处理流程主要包括以下几个方面。
图2 双孢菇数字图像处理流程Fig.2 Digital image processing flow of Agaricus bisporus
采集到的双孢菇图像是真彩色的高质量图像,但等级划分只需要用到其大小(菌盖直径)的信息,无需颜色信息。彩色图像处理费时费力,需要将其转化为灰度图像以便于划分出双孢菇的轮廓进行计算。主要采用RGB(red,green,blue) 分量等值化处理,每一个像素的颜色可以由RGB三原色来进行表示。例如红色为RGB(255,0,0),黄色为RGB(255,255,0)。将这些彩色分量转换为灰色的具体操作是将每一个像素的参数设置为相同数值,这时彩色图像就能转换为灰色图像。由于双孢菇的颜色相对比较单一,因此采用最大值法进行灰度处理,取RGB分量的最大值,按下列公式计算灰度图像中每个像素的灰度值。
式中:R,G,B分别为红、绿、蓝三原色的分量。
可以设计如下程序完成灰度化处理。首先,定义RGB分量的3个浮点型常量进行权值的储存;其次再依次对图像中的每一个像素点进行循环历遍,将图像像素点的R,G,B三个颜色分量数值分别进行转换,取其最大值进行计算,最终得到的灰度图像含有(0~255)共256种颜色,将转换后的像素点再输出即可得到灰度图像,示例见图3、图4。
图3 RGB彩色图像Fig.3 The RGB image
图4 灰度图像Fig.4 The grey image
如图3、图4所示,彩色图像经灰度化处理后转换成灰度图像。
得到双孢菇的灰度图像后,为了更容易识别双孢菇图像的边缘轮廓,让边缘更加清楚,需要将灰度图像进一步转化为二值化图像,降低成黑白(0,1) 2种颜色的图像,见图5。
图5 灰度图像转换为二值化图像Fig.5 Conversion of gray image to binary image
如图5所示为如将图4中的灰度图像二值化后可以得到的二值化图像。这时,原来的彩色双孢菇图像就从三通道RGB(t,t,t)变为了单通道的C(0) 或C(255) 图像。
因为光照等环境的影响,数字图像上存在有一些噪声,如红眼、反光、粉尘斑点等。需要对这些噪声进行处理,以提高图像质量。图像去噪算法有小波变换,傅里叶变换等频率域滤波;也有均值、中值、最大值和最小值滤波等空间域滤波算法。高斯低通滤波是一种空间域滤波算法,用正态分布的高斯函数作为传递函数进行线性平滑滤波,从而去除服从正态分布的噪声。由于双孢菇的数字图像是二维信号,因此图像去噪使用二维高斯函数作为传递函数,通过高斯滤波将二维高斯函数降为一维高斯滤波,从而去除噪声。
图像分割的方法主要有边缘检测法、阈值、区域分割法等,由于分级系统采用了辅助照明的方式拍摄,因此得到的双孢菇图像各部分特征比较明显,这就使得双孢菇图像的纹理比较清楚。而且在计算菌盖直径时只需要关注双孢菇图像的边界而不是图像纹理,因此选择阈值分割法对双孢菇图像像素灰度进行分割,由于双孢菇图像内部具有相近的灰度级,而与背景图像的灰度级差较大,可以很快进行分割,变相地达到去除双孢菇图像纹理的目的,而且图像分割的实时性较好,可以快速检测完成双孢菇图像的分割。
双孢菇菌盖直径和破损情况采用像素法进行计算。对于无破损的双孢菇图像来说,统计双孢菇图像边界像素点之间的距离,取其中两两像间最大的距离做为菌盖直径;而对于菇体有损伤的也可以采用该方法先进行计算,再对比最大距离和最小距离的差值,如果差值超过设定的阀值则认为菇体有破损。由于双孢菇图像的边缘点存在噪声,图像二值化处理后获得的边缘点有可能是不连续的,因此需要根据边缘点顺序来得到双孢菇图像的连续边缘。
系统中已经录入了双孢菇分级的标准模版图像(即菌盖直径、规格的标准图像),下面需要对分级标准图像与CCD采集并进行过处理的双孢菇图像进行归一化,记录标准图像和待检测双孢菇图像的特征信息,通过特征信息的对比和匹配来确定待检测的双孢菇图像属于那个等级。
归一化处理是为了将这两类大小不一致的图像使用统一的标准进行比对,将这两类图像统一设置为大小50×50像素的图像,以方便快速比对确定等检测双孢菇的等级,核心代码如下。
归一化后分别将标准图像和待检测图像的特征信息提取并储存,然后对两类图像的提取后的特征信息进行比对和匹配。具体比对的采用逐行特征值匹配算法,每行特征值相减,相差数值的绝对值越大表明匹配度越低,反之则越高。设定一个阀值后,就可以自动区划分出待检测的双孢菇图像在标准图像数据库中的范围,从而确定该双孢菇的等级。
国家对商品双孢蘑菇的标准和等级划分有着十分严格的规定,主要强调了菇体要色泽洁白、气味正常、无破损等,等级的划分主要依据是菌盖直径大小和损伤缺陷。采用先进的图像识别技术设计的双孢蘑菇自动分级检测系统,能够对比国家等级划分标准,对双孢菇的菌盖直径和破损情况进行检测,确定双孢菇等级。该自动分级系统对双孢蘑菇的识别准确率高、识别速度快,大大提高了分拣系统的工作效率。后期还需要在双孢菇的褐变程度、菌柄长短和开伞程度等自动化检测方面进行研究,进一步提高双孢菇造化分级系统的适应性。