基于计算机视觉的玉米粒饱满度检测精度

2021-05-12 05:07李佩阳叶睿哲陆华才
海南热带海洋学院学报 2021年2期
关键词:玉米粒像素点高斯

李佩阳,叶睿哲,陆华才

(安徽工程大学 电气传动与控制安徽普通高校重点实验室,安徽 芜湖 241000)

0 引言

我国在玉米产业的自动化方面较为落后,主要还是依靠人力对玉米粒饱满度进行挑选,效率精度低下而且不能够满足玉米产业发展的需求,这种筛选方式不能很好地适应玉米加工产业的自动化和智能化发展。玉米粒饱满度参数的研究在粮食、饲料以及很多工业原料方面都有着重要的价值,玉米的生产和销售过程中不够饱满的玉米籽粒都会造成玉米品质的下降,而且还会影响农业产品市场价格,造成巨大的经济损失[1]。

很多专家学者对玉米粒质量和粒型方面做出了大量研究,管树辉[2]通过数字图像处理手段对玉米粒品质进行检测,得到椭圆长宽比来实现对玉米粒品质进行鉴别。万鹏等[3]通过计算机视觉技术开发了粒型检测算法,拓宽了对玉米粒质量的检测方法。然而现有的研究中,大多都是局限于对玉米粒型和质量的研究,而对玉米粒检测精度方面的研究较少。

本研究在传统玉米粒型检测方法基础上进行了改进,加入高斯滤波的方式来去除玉米粒图像中的高斯噪声,通过引入OTSU算法来解决人工设置Canny边缘算子的高低阈值问题,避免了人工设置阈值过程中存在阈值过高而导致图像边缘信息缺失,阈值过低而导致出现过多无关边缘信息的干扰等问题[4]。所提出的新型检测算法能够很好地解决玉米粒饱满度检测精度低下的问题,极大地提高了算法运行的精度,为我国玉米粒等谷物生产和加工过程提供了新的研究方法。

1 传统检测算法

玉米粒饱满度的研究主要是通过玉米粒轮廓表面积与其轮廓最小外接圆之比来有效地判断玉米粒的饱满程度[5]。图1是运用计算机视觉对玉米粒的饱满度进行检测的流程图,先通过图像采集、灰度化二值化、图像的腐蚀与距离变换、开运算和轮廓查找,最后再通过判断优良差对玉米粒饱满度进行判断[6]。经过灰度化后加入高斯滤波可以对图像进一步地减噪,而轮廓提取之后可以进行Canny边缘检测,因为这一部分的边缘检测会使得边缘信息更加精确,对重要的边缘信息不会造成丢失,可以很好地检测出玉米粒轮廓的边缘信息[7]。

图1 传统算法检测流程图

图片进行处理过程中,必须先进行灰度化处理才能继续进行后续操作[8]。图片色彩的显示实质上是由R(红色)、G(绿色)、B(蓝色)这三种颜色混合而成的。灰度化就是将R、G、B这三个分量相等的过程[9],灰度图像的每个像素点只有一种样本颜色,且灰度是介乎于黑白之间的颜色,从而使得灰度较大的像素点显得更亮,反之灰度较小的像素点显得更暗[10]。像素值的范围是0~255,像素值为0即是白色,而值255即为黑色。常用的灰度处理方法包括最大值灰度处理、整数灰度处理以及加权平均值灰度处理等[11]。这里我们选择使用加权平均值的方法进行灰度处理。

根据人眼对蓝绿颜色敏感度不同,人眼对绿色敏感度最高,对蓝色敏感度最低,所以设置的权重按照0.299、0.587、0.144的比例进行加权平均值灰度处理,

g=0.299R+0.587G+0.144B,

(1)

其中:g为灰度值大小,R、G、B分别为红色、绿色、蓝色的灰度值。

图2和图3分别为灰度化处理前后的对比图。灰度化处理主要是为了减少对图像处理过程中的运算量,这样能极大地提高运算的效率,提升整体的运行速度[12]。

图2 玉米粒图像灰度化处理前效果

图3 玉米粒图像灰度化处理后效果

二值化的目的主要是为了使得图像中像素点变成0或者255,通过设置相应的阈值进行二值化,二值化后的图像见图4,而利用腐蚀变换消除图像上的噪点后的图像,如图5所示。

图4 玉米粒图像二值化后的效果

图5 玉米粒图像腐蚀变换后的效果

可以看出图5中轮廓之间还未完全分离开,仍然有一些粘连的部分,会对后续的边缘处理造成一定的影响。本研究采用距离变换归一化的方式解决图像的粘连部分问题,距离变换通过计算图像中的像素点与最近零像素点的距离得到的轮廓骨架,再通过归一化处理方式使得灰度值保持在0~1.0之间。由图6可知距离变换归一化后的图像,二值化图像的距离变换定义为

D(p)=Min(d(p,q)),

(2)

其中:p∈0,q∈B且设二值图像为l,连通区域为S,目标集为O和背景集为B,距离图为D,d为欧式距离变换。

对距离变换而言,本次采用的是欧式距离变换,因为欧氏距离变换综合来说精确度较高,有着良好的处理效果,欧式距离公式为

(3)

其中:(x1,y2),(x2,y2)分别为像素点S1,S2的像素坐标值。

图7为开运算后边缘提取的图像,开运算实质就是先腐蚀后膨胀的过程。

图6 玉米粒图像用距离变换归一化后的效果

图7 玉米粒图像用开运算后边缘提取的效果

计算机视觉对玉米粒饱满度检验主要还是处理图像所包含的边缘信息。以玉米粒轮廓表面积与其最小外接圆的比值作为玉米饱满度的参考指标,比值越大说明玉米粒饱满度越高,反之饱满度越低。轮廓提取不能改变玉米粒轮廓的面积进行提取,否则使得实验结果失真,从而失去参考性。考虑到这个因素,本研究采用开运算的方式对玉米粒边缘轮廓进行提取。开运算的本质就是对图像先进行腐蚀操作,然后进行膨胀处理,这样做的目的主要是为了能够消除较为分离且较小的点,在图像的纤细点处能够有效地对物体进行分离,从而使得轮廓更为完整平滑,最主要的一点是不改变检测物体的实际面积[13]。

2 改进算法

2.1 高斯滤波处理

图像腐蚀并不能很好地去除图像中高斯噪声,必须通过高斯滤波去除[14]。高斯滤波属于线性平滑滤波,其滤波原理主要以掩膜来对图像中的每个像素点进行扫描,将掩膜内部中心点的像素值换成掩膜扫描后得到的邻域内像素的加权平均值[15]。高斯滤波的效率并非最高,但是其滤波效果非常可观,运用高斯滤波生成的图像效果就像是在隔着半透明玻璃去观察图像。在计算机视觉算法预先处理过程中,高斯平滑技术往往用于这个阶段,这样可以有效地增强图像的效果。

为了使结果更加地精确,本研究将图像与圆形方框做卷积运算,这样就会得到焦外成像的效果。高斯模糊过程就相当于是一种低通滤波过程,高斯滤波函数在图像中的引入效果如图8所示。

图8 玉米粒图像在高斯滤波后的效果

高斯平滑滤波器对于抑制服从高斯分布的噪声效果显著,所用一维零均值高斯函数表达式为

G(x)=exp(-x2/(2σ2)),

(4)

其中:x为自变量,σ为高斯分布参数。

而二阶零均值离散高斯函数通常被用于平滑滤波器进行滤波操作,其公式为

(5)

其中:A为幅值,x和y为中点坐标,σx为σy方差。

2.2 Canny边缘检测引入OTSU算法

图9为试验样本图。OTSU算法处理图像二值化的过程中,通常计算出一个合适的阈值来代替Canny边缘检测的高阈值,低阈值设置为高阈值一半。这样可以避免阈值选取过小而造成图像信息的缺失(如图10所示),也避免了阈值选取过大而导致图像边缘信息过少(如图11所示),更加准确地选取合适的阈值大小来完成Canny边缘检测过程,在Canny边缘检测中引入OTSU算法后所获结果图见图12。

图9 Canny边缘检测试验样本 图10 Canny边缘检测阈值过小结果

图11 Canny边缘测验阈值过大结果 图12 引入ostu算法后Canny边缘检测结果

由图10和图11可知,阈值过小会有很多无关边缘信息的干扰,而阈值过大则会导致重要边缘信息的缺失,引入OTSU算法很好地解决了可能出现阈值过大或过小的问题。Canny边缘检测过程中阈值大小选取要合适才能准确表达出图像的边缘信息,过大或过小都会影响图像检测的准确性,所以采用OTSU算法选取Canny边缘检测的双阈值,能够使得实验结果更加准确。

玉米粒的边缘检测过程既要保证检测的准确性,同时也要保证重要的边缘信息不能丢失。而Canny算子的优点在于:第一,既保持了原有重要的边缘部分,同时也不会出现虚假的边缘部分;第二,在图像的边缘检测部分,其实际边缘与检测到的边缘部分偏差最小;第三,将多处的边缘响应部分降低为单个边缘响应部分,这一点很好地解决了边缘部分的噪声影响问题。以下用5×5的高斯内核来表明Canny检测的噪声消除:

(6)

计算梯度的幅值和方向,需要运用的一对卷积阵列为

(7)

(8)

其中x和y分别为两个垂直方向。

梯度幅值和方向的计算公式为

(9)

(10)

其中θ为角度。

Canny算子本身自带滞后阈值,滞后阈值包括高阈值和低阈值这两种:当扫描图像中每一点的像素值的时候,大于高阈值的像素点则会被保留下来,而低于低阈值的像素点则会被去除。如果某一点的像素值介乎于高阈值和低阈值之间,则会进一步判断该点邻域是否有大于高阈值的像素点,若有则该点被保留,反之则排除该点。图13为引入OTSU算法后Canny边缘检测的图像。

图13 玉米粒图像经Canny边缘检测后的效果

3 结果与分析

3.1 实验结果图分析

玉米粒饱满度检测分别用了两种检测方式进行对比,第一种是传统流程对玉米粒进行检测(如图14所示),而第二种则是采用高斯滤波以及在Canny边缘检测算子中引入最大类间方差法(OTSU)对玉米粒饱满度进行检测(如图15所示),图14和图15中good,normal,bad分别表示玉米粒的饱满度程度。

图14 玉米粒图像经传统流程检测后的结果 图15 玉米粒图像经改进算法处理后的结果

由图14与图15的结果对比可以发现,传统算法检测中一些玉米粒轮廓边缘特征并不十分饱满,但却被识别成good和normal,而玉米粒轮廓边缘特征较为饱满的却被识别成了bad。改进算法明显解决了这些问题,提高了识别的精确度。

3.2 实验数据分析

首先调节高斯核对图片进行降噪;其次对开运算之后的图片引入OTSU算法完成Canny边缘检测,玉米粒边缘部分信息完整地保留了下来;再对玉米粒轮廓进行提取和判断过程,从而使得实验结果更加地精确。根据不同样本值的饱满度进行测试,得出的实验数据如下(见表1和表2)。

表1 传统检测方式测量误差 样本值/粒测量值/粒测量误差/%504216.000625314.516887415.9001008416.00012010115.83312310316.26014912615.43616313715.95117114316.374表2 改进算法测量误差样本值/粒测量值/粒测量误差/%50476.00062586.45288826.818100946.0001201126.6671231156.5041491406.0401631526.7481711606.433

根据不同的样本值来进行测量,由测量数据可知加入高斯滤波以及引入OTSU算法完成Canny边缘检测后,测量误差降低,测量精度较高。由实验数据可知,改进的算法有效地提高了对玉米粒饱满度检测的准确性。

4 结论

玉米粒的边缘轮廓提取是检测玉米粒饱满度的一个重要过程,在处理过程中加入高斯滤波以及在Canny边缘检测算子中引入最大类间方差法(OTSU)来取代人工设置的高低阈值,从而避免真实边缘的丢失,保证图像处理过程中信息的完整性,实验处理结果精度明显高于传统检测精度,实际误差也明显降低。实验结果表明,该新型检测算法对玉米粒饱满度检测结果明显优于传统检测算法,可以解决玉米粒饱满度检测失真问题,能极大地提高检测的精度,实际运行效果较好。本改进算法可应用于玉米粒等农作物的筛选加工过程,同时也为玉米等农作物筛选加工过程走向自动化发展道路提供了一定的参考价值和理论依据。

猜你喜欢
玉米粒像素点高斯
耍小聪明的鹅
图像二值化处理硬件加速引擎的设计
有趣的『玉米粒抖字』
基于局部相似性的特征匹配筛选算法
数学王子高斯
天才数学家——高斯
基于像素点筛选的舰船湍流尾迹检测算法
基于canvas的前端数据加密
从自卑到自信 瑞恩·高斯林
每天做好一件事