王瑞方,尚 欣,董昌生
(1.宁夏大学机械工程学院 银川 750021;2.宁夏大学材料与新能源学院 银川 750021)
芦笋又名石刁柏,质地柔软、口感细腻、风味鲜美,富含多种氨基酸、蛋白质和维生素,具有一定的药用价值,目前我国芦笋的种植面积已达到10 万hm2,高居世界第一,除了西藏和青海外,全国各个地方均有种植[1]。
芦笋在大批量收割后,其尺寸参差不齐,如果不按照某一指标进行检测分级,种植者无法获得最大的经济效益。当前消费者和食品加工单位都对芦笋外部品质的要求不断提高,芦笋的外部尺寸检测分级显得举足轻重。农业农村部印发的《“十四五”全国农业机械化发展规划》指出,围绕果蔬等鲜活农产品保质增值,研发分级等初加工机械[2]。经过芦笋尺寸的检测分级,使得不同尺寸的芦笋物尽其用,像鲜芦笋、芦笋罐头、芦笋茶和芦笋美容品等[3]。综上所述,为实现芦笋的自动分级,对芦笋尺寸的检测至关重要。芦笋等级规格有基于长度和基部最大直径2 种,芦笋的机械化收割主要是针对长度在18~23 cm 的嫩茎[4]。笔者的研究主要通过视觉手段对芦笋(本试验针对绿芦笋)基部最大直径进行检测。
现阶段对于芦笋等农副产品尺寸的检测分级主要是通过人工或者传统机械(辊轮、筛网等装置)来实现的[5-11]。人工检测分级的主观性太强,导致精准程度较低;整个检测过程需要大量的劳动力,人工成本过高,造成经济效益低;同时人工检测还会造成过多的接触,会产生一定的食品安全隐患。传统机械检测主要是利用间距不同的辊轮、直径不同的圆孔以及滚筒的离心力进行分级,优点是可以通过上述参数的调整来实现对大多数的果蔬产品进行分级,适用度较高,并且分级效率高,但缺点也是显而易见的,一是分级过程中容易造成芦笋的破损和折断,破损的芦笋也会对其他芦笋造成影响;二是分级的精度不高;三是仍需要人工的辅助作业,自动化程度较低。
视觉检测主要是利用计算机来模拟人类的视觉功能,对于从外界采集到的图像进行分析和理解,来获取想要的信息以实现目标物尺寸的测量和分级等目的,具有精度高、检速快、自动化和实时性等优点[12]。国内外的众多学者很早就将该技术应用到各种农副产品的尺寸检测上,包括马铃薯、苹果、柑橘、火龙果和黄瓜等[13-21],但上述的检测目标物大多是球形或者类球形的农产品,针对芦笋这样细长且具有一定柔软性目标物的研究还很少。独具一格的外形造成芦笋尺寸检测具有较高的难度,主要有以下几个方面:芦笋的基部形状并非圆形,难以通过常规方法对其进行测量;芦笋会出现部分的弯曲且具有一定的柔软性,增大测量的难度;由于收割等造成芦笋基部的不完整,其最大直径难以确定。
综上所述,笔者提出通过视觉检测的方式来对芦笋基部最大直径进行检测,首先对芦笋图像进行采集,经过图像预处理、图像分割和边界轮廓提取,提出一种新型方法从芦笋边缘二值图像上获取芦笋基部最大直径,即从图像四个方向上寻找其最外侧边缘点,以此绘制芦笋基部的外包裹矩形,其宽度即为芦笋基部的最大直径。
1.1.1 检测要求 芦笋外部形态和基部轮廓示意图如图1 所示,本试验的检测对象为芦笋基部最大直径。
图1 芦笋外形和基部轮廓示意图Fig.1 The outline drawing of outside and base of asparagus
芦笋的尺寸等级标准按照中华人民共和国农业农村部2008 年5 月18 日发布的《芦笋等级规格》,以芦笋基部最大直径作为划分等级规格的指标[22],如表1 所示。
表1 芦笋基部尺寸分级标准Table 1 The size grading standard of asparagus base
1.1.2 试验环境 笔者试验所用的所有芦笋样本均来自于山东省菏泽芦笋种植基地,品种为绿芦笋。试验时间为2022 年6-8 月,试验地点为宁夏大学工程训练中心。所用试验环境:光源采用自然光源,电脑处理为Intel(R)Core(TM)i7-8550U CPU,操作系统为Windows 11 家庭中文版,图像处理软件采用Matalb2020b。
笔者试验的图像采集平台主要由相机、镜头以及夹持相机的移动导轨组成,固定高度和位置,控制该变量对成像的影响,考虑到未来实际应用中的光照情况,光源为自然光源。采集到的芦笋图像分辨率为600×800。
在对芦笋的图像采集之前,先使用标准件(笔者的研究使用第五套人民币一元硬币,直径为25 mm)对该试验采集装置进行标定,获取实际尺寸与像素尺寸的比值K。使用上述的采集平台对硬币的图像进行采集,通过一系列图像处理操作,测量硬币的面积,得到硬币的像素直径为64.701 3 pt,最后计算K值如式(1)所示。
芦笋尺寸检测程序主要包括图像增强、灰度化、图像分割、芦笋边界轮廓提取、尺寸测量,程序基于Matlab 软件进行编写。
1.3.1 图像增强 由于芦笋图像是在自然光照条件下进行采集的,因此存在光照不均匀的情况,图像会产生部分阴影或者模糊,如图2 所示。使用J=imflatfield(I,Sigma)进行去模糊,其中I为原始图像;Sigma 为去模糊所使用高斯平滑的标准差,Sigma 值经过多次试验,最优值30;J为去模糊后返回的图像,如图3 所示。
图3 去模糊后图像Fig.3 The image after deblurring
1.3.2 灰度化 由于检测的对象为芦笋,对采集到的芦笋图像(RGB 图像)进行灰度化处理,可减少后续图像处理过程的计算量。笔者通过计算芦笋图像中每个像素点的R、G、B 三个分量的加权和,将RGB 彩色图像转化为灰度图像,采取权重平均法,如式(2)所示。
J=0.298 9×R+0.587 0×G+0.114 0×B。(2)
灰度化后的图像如图4 所示。
图4 灰度化图像Fig.4 The gray-scale image
1.3.3 图像分割 图像分割是将图像分离成前景(目标对象)和背景的过程,是图像处理过程中的基础性问题,分割的优劣直接关乎到后续的尺寸测量。在众多算法中,笔者选择了主动轮廓法[23-24],又称snake法,是一种迭代式区域增长图像分割算法,snake表示平面中一组有序的像素点xi=[xi yi]T,其构成了感兴趣区域周围的一个边界曲线。该边界曲线沿着能量减小的方向进行移动,如式(3):
其中,EI—内部能量,表示假定的边界曲线;EE—外部能量,表示当前snake 所在点的图像。所以说,主动轮廓法的每一次迭代都要沿着能量降低的方向,即Ek+1<Ek,然后用新点代替旧点,继续迭代,直到E最小。考虑芦笋的大小形状以及反复试验,笔者选择80×480 大小的矩形作为初始snake,迭代600 次时目标和背景分割效果最佳。初始snake 和分割后的芦笋图像如图5 和图6 所示。
图5 初始snakeFig.5 The original snake
图6 分割后的芦笋图像Fig.6 The asparagus image after segmentation
使用其他图像分割算法(Otsu 法阈值分割和自适应阈值分割)对芦笋图像进行分割,分割后的结果如图7 和图8 所示。从芦笋图像的分割结果可以看出,尽管Otsu 法阈值分割相对于自适应阈值分割保留了更多的信息,但是两种阈值方式都没有完整的将芦笋分割,同时从分割结果来看,分割后的图像上还有少许的噪声点(图像上白色区域内的黑色竖线和黑点),不利于后续图像的边界提取以及尺寸测量。综合分析,使用主动轮廓法来进行芦笋图像的分割可以更好地完成芦笋尺寸的测量。
图7 Otsu 法阈值分割Fig.7 The threshold segmentation by Qtsu
图8 自适应阈值分割Fig.8 The threshold segmentation by self-adaption
1.3.4 芦笋边界轮廓提取 分割后的芦笋图像为二值图像,已无噪声点,对其进行边界轮廓提取时选取低噪声情况下提取效果较好的Roberts 算子[25],Roberts 算子采用对角线方向相邻两像素之差近似梯度幅值,检测图像中的边缘(灰度函数发生急剧突变的像素点之间的连线),其模板如式(4)所示。提取后芦笋轮廓如图9 所示。
图9 芦笋边界轮廓Fig.9 The boundary profile of asparagus
尺寸测量即从图10 的芦笋边界轮廓图像中获得预定的尺寸信息(芦笋基部最大直径),从二维平面上观察,即测量芦笋基部边缘点所构成的最大水平线段的长度。图像处理中测量线段的常用方法之一就是寻找角点,然后再计算两个角点之间的距离,Harris 角点检测算法被公认为是较好的寻找角点的方法[26-27]。除此以外,还可以利用曲线拟合思想[28],将芦笋边缘像素点近似拟合成为一条或者数条相连的曲线,通过计算曲线的长度或者曲线之间的距离来近似获得芦笋的基部最大直径。但是,上述两种方法不适用于芦笋基部最大直径的获取,原因主要是芦笋形状的特殊性,从芦笋的边缘轮廓图可以看出来,其基部位置多为曲线,且与两个边缘以曲线过渡,以及收割等原因导致芦笋基部不完整,需要将基部上完整部分的直径作为该芦笋的基部最大直径,从而造成曲线的难拟合或者角点的错误检测,两种方法所得结果如图10 所示,从图上可以看到,由于芦笋基部的复杂性造成角点的错误检测,以及基部因不完整导致曲线拟合,难以计算正确距离。
图10 角点检测和曲线拟合所得图像Fig.10 The acquired image through corner detection and curve fitting
综合上述原因以及考虑到芦笋自身形态特点:其直径自上而下逐渐增大,弯曲部分多出现在顶部柔嫩部位。基于芦笋形态的特殊之处以及检测要求,借鉴三爪内径千分尺测量原理(三爪内径千分尺是利用螺旋副原理,使三个测量爪作径向位移,使其与被测内孔发生接触,对内孔尺寸进行读数的一种测量仪器),笔者在本文中提出外包裹矩形法,其原理借鉴三爪内径千分尺,移动测量爪与内孔接触,不断在芦笋像素矩阵的径向上寻找其边缘像素点,并以此来绘制出包裹住芦笋的矩形,如图11 所示,此时矩阵的宽度和芦笋的最大直径有如式(5)的等式关系。以此完成芦笋基部最大直径的测量。
图11 外包裹矩形法原理示意图Fig.11 The principle diagram of rectangular wrapping method
基本思想是在芦笋边界轮廓的二值图像上寻找到上下左右四个方向的第一个像素点,基于此绘制出外包裹矩形,基本步骤如下:
(1)弯曲部分剪裁
外包裹矩形法的不足之处是弯曲芦笋的检测结果大于实际尺寸,如图12 所示。芦笋的弯曲有两个方面,一是芦笋在检测分级时位置不佳导致采集的芦笋图像弯曲;二是芦笋自身的弯曲。对于第一个方面,在实际检测分级时可以通过机械结构设计(辊轮)对芦笋位置进行限制,而针对芦笋自身弯曲的情况,本文中采用图像剪裁的方法将芦笋弯曲的图像去除,只保留芦笋的基部,如图13 所示。上述的两项措施有效地弥补了外包裹矩形法的缺陷。
图12 未剪裁弯曲部分的结果Fig.12 The image of unclipped bend part
图13 外包裹矩阵法提取合成图Fig.13 The extraction composite image by rectangular wrapping method
图像裁剪是通过J1=imcrop(I1,[xref,yref,x,y])函数来实现的,其中I1、J1分别为待剪裁图像和剪裁完返回的图像;xref和yref为剪裁的起点,本文中选择的是I1左上角(1,1)点;x、y构成剪裁完成后图像的大小,经过多次试验,将其定为600×120。
(2)绘制外包裹矩形
首先在剪裁后的二值图像上遍历所有的像素点,比较像素值为1 的像素点在图像矩阵中的位置(i,j),标记出i最大时的像素点imax,以此类推,依次标记出i最小时、j最大时和j最小时的像素点imin、jmax和jmin。随后,利用标记的四个像素点来绘制外包裹矩形,具体方法就是先新建一个空白图像矩阵(零矩阵),在该空白图像矩阵上沿着imax和imin两个标记点竖直方向依次为像素点赋值,沿着jmax和jmin两个标记点水平方向依次为像素点赋值,相交后所围成的矩阵即为外包裹矩形(图13)。
(3)尺寸测量
测量外包裹矩形的宽度,即为芦笋基部最大直径,但测量的是像素尺寸,如果想要得到实际尺寸,需要乘上前面的标定系数(K值)。尺寸测量流程图如图14 所示。
图14 尺寸测量流程Fig.14 The flow chart of measured size
基于上述尺寸计算的思想和流程,通过Matlab 程序编写实现上述算法并不断地调整,得到如下的结果,其中图13 为所绘制的外包裹矩形与剪裁后芦笋边缘图像的合成效果图,可以更加直观地看到其正确性,在实际计算中,只需要计算矩形的宽,简单且计算量小,适用于芦笋等不规则体的对象。
为了验证上述一系列的图像处理算法的可靠性以及是否满足预设的检测要求,笔者随机选用10根刚收割的新鲜芦笋,依照标准[22]使用游标卡尺对其基部最大直径进行人工测量,同时使用前文中提到的图像采集平台对这些芦笋进行图像采集。将这些图像导入先前编写的Matlab 程序中获取计算机检测的结果。数据对比如表2 和图15。
表2 试验结果Table 2 The experimental result
图15 芦笋实际尺寸与测量尺寸Fig.15 The actual and measured size of asparagus
观察表2 和图15 可以发现,在光照条件和试验设备不佳的情况下,笔者试验使用的图像处理方法依旧能够达到较高的精度水平,芦笋实际尺寸与测量尺寸的误差在0.01~0.50 mm,10 根试验芦笋均分到正确的等级里,准确率为100%。在实际检测分级中,会通过机械结构使芦笋在图像采集区旋转一周,多采集几张芦笋图像,比较该根芦笋的每张图像检测结果,取其中最大值来作为芦笋基部最大近似直径。
目前对于芦笋基部最大直径检测的研究较少,笔者提出了一种基于图像处理的外包裹矩形检测方法,利用snake 法对芦笋图像进行前后景分离,利用Roberts 算子提取边界轮廓,使用矩形拟合芦笋基部轮廓,并通过试验证明该法的可行性。传统的尺寸检测(线段测量)主要使用角点检测和曲线拟合。其中角点检测[26-27]在对芦笋基部最大直径进行检测时,不规则体的芦笋会出现角点的错误检测,该法更适合规则体尺寸的检测。用曲线拟合法[28]对芦笋进行检测时,难以确定芦笋基部最大直径所在位置(芦笋收割过程造成部分芦笋基部的不完整),该法更适合标准件尺寸的检测。笔者针对芦笋基部最大直径的检测,相比其他方法更加简单实用、计算量小,更适合不规则体果蔬的尺寸检测。但是在实际检测分级过程中为了更加准确地测量最大直径,需要在图像采集区域设置机械结构使芦笋旋转一周,充分采集芦笋的相关信息,除此之外还需对芦笋进行定位。
笔者使用上述方法对10 根刚收割的新鲜芦笋基部最大直径进行测量,误差范围在0.01~0.50 mm,符合允许误差范围,分级正确率达到100%,解决了传统芦笋检测分级中存在的精度差、有损伤等问题,在芦笋的自动分级领域具有一定的应用前景。同时该检测方法也为其他农副产品以及不规则物体(比如草莓的横径测量)的尺寸检测提供了新的思路。