骆绍烨,张长佳,周 超,蔡荣贵
(莆田学院 机电与信息工程学院,福建 莆田 351100)
我国国土经纬跨度大,东南西北所产的水果品种不可枚举,在水果产品竞争愈演愈烈的今天,如何提高水果品质、生产效率就尤其重要.而水果筛选分级是提高水果品质的一个重要环节.国内目前在水果筛选分级上还主要依靠人工或借助部分简易的筛选装置完成,由此带来了劳动量大、生产率低等诸多缺点[1].借助机器分类方法具有耗时短、高效率、契合水果品种不容易受损等特点,弥补了人工筛选的缺陷,因此研究和开发高效的水果筛选系统十分必要.
计算机通过效仿人眼所看到的图像场景,在图像或图像队列中获取有效信息,对物理世界的三维景物进行形态与运动识别,即计算机视觉[2].随着计算机技术的提升和新型算法的提出,计算机视觉技术已开始逐渐在包括农业在内的各个领域中得到广泛应用.针对水果筛选问题,本文在OpenMV微型机器视觉模块的基础上,以PC端为载体,运用计算机视觉相关技术实现水果筛选.
基于OpenMV的水果筛选系统主要包括了OpenMV微型机器视觉模块和计算机两部分.OpenMV的核心是STM 32 CPU芯片,并在体积小巧的硬件模块上集成了OV7725摄像头芯片,从而使核心机器视觉算法能够高效地实现[3].OpenMV还提供了基于Python的编程接口,这样就可以方便使用Python来进行二次开发.系统硬件结构设计如图1所示.
图1 系统硬件结构图
摄像头用来拍摄水果图像,STM 32 CPU负责图像的预处理以及机器识别过程,计算机则用于OpenMV系统中摄像头、视觉模块的参数设置和水果模板的输入.系统通过在OpenMV微型机器视觉模块上的摄像头获取实时图像,在对图像进行预处理后,利用形状识别和边缘检测等相关算法完成目标水果识别与筛选.
OpenMV运用的是小孔成像这一种理想模型,在实际应用时镜头会存在场曲和畸变等[4],可以通过在标定过程中引入畸变参数(sensor)解决.下面是OpenMV摄像头相关参数的设置代码.
import sensor #引入感光元件的模块
# 设置摄像头参数
sensor.reset() #初始化感光元件
sensor.set_pixformat(sensor.RGB565) #设置摄像头颜色模式sensor.set_pixformat(sensor.GRAYSCALE) # 设置为灰度图模式
sensor.set_framesize(sensor.QVGA) #设置图像像素的大小
sensor.set_auto_gain(False) #关闭自动增益
sensor.set_auto_whitebal(False) #关闭白平衡
sensor.set_windowing(roi) #设置窗口中的兴趣区
针对传统的ATM机上遮挡人脸检测算法时间复杂度高与鲁棒性差的问题,提出了一种快速地遮挡人脸判别方法,通过训练YOLO人脸检测网络模型,定位出人脸所在区域,再结合改进的DLIB多角度人脸关键点检测算法对该区域的人脸进行遮挡判别,若为遮挡人脸,则禁止其进一步操作。将其运用到实时场景下ATM机遮挡人脸判别上,实验证明该方法达到了较好的判别效果,与传统的算法相比,检测速度更快,鲁棒性更好,具有一定的使用价值。下一步工作将针对ATM机实时场景中出现的新问题,进一步优化算法的性能,使其在大量复杂的样本中也能表现出较高的判别率。
while(True):
img = sensor.snapshot() #拍摄照片
基于OpenMV的水果筛选系统主要包括水果类别筛选、水果尺寸筛选和水果成熟度筛选3个主要功能.这些功能主要依靠对摄像头所拍摄的水果图像分析实现.
水果类别筛选主要通过模板匹配来实现.模板匹配就是提前得知一张图像,然后在一片大区域中搜索已知图像的过程[5].其识别判别的依据是找到与同模板有相同的方向、长短和图像元素的目标,通过编写好的Python程序在区域中定位到目标,并确定其坐标位置,最后以某种方式框选出来.前期通过录入不同水果的模板图像,建立一个模板库,然后让OpenMV进行模板匹配,从而分辨水果.理论上只要模板库足够大,就可以识别很多种类的水果.模板匹配流程如图2所示.
图2 模板匹配流程图
这一过程中最为核心的任务是建立模板库.首先需要在帧缓存区中创建或导入一个指定大小的pgm格式模板.通过直接从OpenMV里面截取一个模板图像,通过格式转换工具,将png转成pgm格式,保存在OpenMV的SD卡文件夹里面,就形成了模板库.识别筛选功能则由OpenMV自动完成.
利用摄像头物体测距的基本原理借助参照物进行反推,从而得到水果大小.OpenMV是采用单摄像头,选取恰当的参照物,并依照参照物的实际长短与成像后的百分比就能够计算出物体之间的间距.OpenMV测距原理如图3所示.
由图3可知,L为OpenMV摄像头到水果的距离尺寸,Apix为整个画面的像素值,Bpix为水果在镜头中所占的像素,即水果直径的像素.R是水果真实的直径,∠α是视角的一半,∠β是水果半径视角,H是摄像头覆盖的实际宽度半径.
图3 测距原理图
(1)
(2)
所以得出以下正切比例公式:
(3)
从右侧现实环境里的几何联系可以得到:
(4)
代入上述正切比例公式中,可得水果尺寸计算公式:
(5)
由L、Apix、tan (β)在系统中均为固定值可知:水果现实尺寸R与像头里的像素Bpix成反比,通过测量水果成像大小即可计算出其真实大小.
OpenMV采用Lab颜色模型能够准确识别各种颜色,而颜色是判断大部分水果是否成熟的主要因素.Lab颜色模型是CIE组织于1931年拟定的用来衡量颜色的国际标准[6].其中Lab表示:L(亮度);a(+:红色,-:绿色);b(+:黄色,-:蓝色),让图像颜色显示接近人类视觉.Lab模型不依赖光线和颜料,在理论上包括了我们眼睛看到并识别出全部色彩的一种强大模式.它弥补了CMYK和RGB两种色彩模式的不足,用数字化方法展示出人眼看到的视觉感应.因此可根据水果的颜色来判断水果是否成熟,水果成熟度筛选流程如图4所示.
图4 水果成熟度筛选流程图
在筛选之前首先要设置颜色的阈值(导入thresholds),thresholds是一个参数列表,里面可以包含多个颜色的参数设定.若要识别多个颜色,就需要在这个列表中添加对应的颜色阈值.为了识别更精准,选择OpenMV IDE阈值工具进行阈值调试.通过滑动3个通道的最大值以及最小值,使绿色芒果(未成熟)区域变成纯白,其他地方全黑即可得出绿色的阈值.当然,在工业生产线上,考虑到一些水果需要长距离运输,完全成熟就会容易损坏,可以根据实际情况去设置芒果阈值,从而更好地去筛选.
阈值测试效果如图5所示.
图5 阈值测试效果(芒果)
成熟度阈值设置好后就可以进行水果成熟度筛选.通过OpenMV的摄像头模块拍摄水果照片,对水果图片进行图像预处理.预处理完成的水果图像利用之前设置的颜色阈值进行色块查找识别,再将获得的色块进行合并,合并过程中过小的色块将会被过滤掉.合并完成后与设置的色块面积阈值做比较,如果面积超过阈值表示该水果达到了预设的成熟度,否则表示未达到成熟度要求.
为了验证系统的水果筛选效果,本文选取芒果、香蕉、沃柑和苹果4种常见水果进行测试.首先进行水果不同模板相似度阈值下的识出率测试.每种水果的测试数量为100次,统计能识别出水果的次数,由此获得识出率.测试结果如表1所列.
表1 水果在不同相似度阈值下的识出率
从表1可以看出不同水果由于本身的形状和颜色差异导致在相同的模板和相同的相似度阈值下识出率具有一定的差异.沃柑因为形状比较规则,颜色相对均匀,识出率相对较高.香蕉的形状最为不规则,在同等条件下的识出率是最低的,特别是在相似度阈值为0.9时,其识出率仅有65%.随着相似度阈值的提高,水果的检出率呈现下降趋势.相似度阈值要求越高,对于水果模板匹配的相似率就越高,水果就越难以被识别出.但这并不意味着越低的相似率阈值越有利于水果的类别筛选,过低的阈值将导致大量非水果或其他类别的水果被误识别.通常情况下,80%-90%的水果识出率是比较适宜的,即0.7-0.8的水果模板相似度阈值在水果类别筛选时具有较好的效果.
为了测试系统对水果尺寸测量的准确性,选取一种外形相对规则的水果(沃柑)作为测试水果进行大小测试,并与手工多次测量平均尺寸进行对比.测试分为6组,为了保证测量的准确性,每组测量次数为50次.测试结果如表2所列.
由表2可知,系统平均测量值与手工平均测量值的误差绝对值最大为0.14 cm,最小仅为0.01 cm,平均偏差率大部分(5组)低于1.1%,最高为2.12%,两者的偏差较小,表明系统测量的准确性较高.这些偏差主要来源于水果形状的不规则性、测量位置的不同及系统和手工测量误差.
表2 水果(沃柑)尺寸测量结果
系统的水果成熟度筛选主要依据水果的颜色筛选,不同的水果具有不同的颜色筛选阈值,所以水果颜色筛选主要针对于颜色均匀且成熟前后颜色差异较大的水果.系统选取芒果、香蕉、沃柑和苹果进行成熟度测试,通过调整系统中的阈值编辑器获得最佳的颜色阈值.水果筛选时通常是剔除不合格的水果,所以该阈值范围为不成熟水果的阈值范围,结果如表3所列.
表3 水果成熟度筛选阈值范围
从表3可以看出,各水果L分量的阈值跨度相对都较大,且主要都在L分量取值范围(0-100)的中间区域.L分量是亮度分量,适中的亮度有利于进行筛选,不同水果的特异性并不明显.a分量表示的是红色到绿色的范围,而大部分水果未成熟时以绿色居多,因此该分量的阈值范围主要在绿色区域范围(负数).b分量表示的是从黄色到蓝色的范围,不成熟水果中通常在绿色中还会掺杂着部分黄色,所以该分量的阈值范围主要在浅黄色区域.水果的成熟度筛选与水果本身的颜色密切相关,成熟前后颜色差异大的水果在筛选时准确率较高,而一些成熟前后颜色差距较小的水果就难以利用颜色判断.
本文通过利用OpenMV微型机器视觉模块结合计算机编程设置设计实现了一款基于OpenMV的水果筛选系统.系统通过计算机预先输入水果模板,利用模板匹配来区别水果的品种.运用物体测距原理来测定图像中的水果尺寸,以便筛选不合规格的水果.在Lab色系下,设置不成熟水果的颜色阈值范围并提取对比水果颜色特征来实现水果成熟度的筛选.实验结果表明,系统具有较高的水果识出率和尺寸测量准确率,并能根据相应的颜色阈值设定筛选水果成熟度.该设计有助于提高水果筛选的智能水平和效率,降低水果筛选成本,具有较好的应用前景.