基于CCD型传感器的果蔬分类技术研究

2020-10-26 01:33胡启迪
延安职业技术学院学报 2020年4期
关键词:果蔬机器框架

胡启迪,熊 刚

(杨凌职业技术学院,陕西 杨凌712100)

引言

在果蔬销售前,对其进行分类分级,可以显著提高收益。然而,大量的果蔬人工分类分级工作是非常费力、耗时且枯燥的,且持续工作时间与精确度负相关,从而难以提升效率,进一步降低成本。随着我国人口红利的逐步降低,人工的使用成本也会逐步提升,逐步降低人工的参与度是目前的主流趋势。随着人工智能,尤其是机器视觉方面的发展,使用机器代替人工完成果蔬自动化分类分级工作成为了可能。文中对相关技术进行分析研究,探索其在果蔬分类分级工作中的具体应用。

1 技术简介

目前可用于果蔬分类的机器视觉的技术有很多,这里重点讨论Python、OpenCV、OpenMV 三种技术。

1.1 Python 语言

Python 是一种原本用于程序测试的脚本语言,因此非常易于理解及使用,随着多年的优化发展,目前已成为人工智能领域的基础开发语言。其强大性主要得益于具备极为强有力的社区支持,也就是会衍生出功能极为全面,效率极高的应用库,从而大幅降低开发者的时间成本。随着应用范围的不断扩大,促使人们对其不断改进,从而衍生出了更具针对性的版本,比如MicroPython。这是为了解决原 Python 版 本无法对底层硬件进行操作的问题,而推出的一个Python 子集,其在简化原有Python 库的同时,有效地优化和改善了对底层硬件的支持。因此,使用MicroPython 能够在保留Python 语法习惯的同时,对诸如LED、电机、传感器、存储卡等底层硬件进行控制。

总而言之,当前的Python 首先是实现人工智能的通用性语言,其次可以像C、汇编语言一样控制底层硬件,综合起来就是既可以实现大脑,也可以运动四肢。

1.2 OpenCV

OpenCV 实际上是一个开源且支持跨平台的机器视觉库,可运行在如Linux、Android、Windows 以及Mac OS 等常见的操作系统上,并且这一特性也在不断加强。得益于由大部分的C 函数及少部分的C++类构成,OpenCV 的量级很轻,运行效率也很高。在提供了Python、Ruby、MATLAB 等语言的接口后,大大提升了其通用性,可以实现图像处理和机器视觉方面的很多通用算法。这些特性使其快速拥有了大量的用户,开源加上广泛的用户,使其可以在未来很长的一段时间里不断的进化,已然成为目前最值得期待的机器视觉库之一。

OpenCV 目前的可应用领域非常广泛,总体可以归为人机互动、物体识别、图像分割、人脸识别、动作识别、运动跟踪、机器人、运动分析、机器视觉、结构分析、汽车安全驾驶等11个领域。果蔬分类分级就属于其中的物体识别。

总而言之,OpenCV 是一个强大的机器视觉库,在其基础上稍加修改便可以实现当前能够见到的大部分机器视觉功能,且可以和Python、C、JAVA 等语言完美结合,其必须依托于某个操作系统,需要固定使用于某个硬件体系下。

1.3 OpenMV

OpenMV 是一个开源,低成本,功能强大的微型机器视觉模块。其硬件部分可以简单的理解为一个MCU 加上一个CCD 传感器,软件部分则是类似于OpenCV 的机器视觉库。OpenMV 中配备了一个 MicroPython 解释器同时提供Python 编程接口,通过 Python 脚本语言的程序编制来完成各项功能的设计,其中就包含了IO 端口的操控以及读取文件系统等一系列基本的操作功能,以及OpenMV 提供的机器视觉功能。其硬件在不断的升级,库也在不断地丰富。

目前,OpenMV 上的机器视觉算法包括寻找色块、人脸检测、眼球跟踪、边缘检测、标志跟踪、残次品筛选等。可以用来实现非法入侵检测、产品的残次品筛选、跟踪固定的标记物等。其设计小巧,便于应用到很多嵌入式产品上。

总而言之,OpenMV 是一个专门用于实现机器视觉的功能模块,使用方便且灵活,非常适合应用于特定的嵌入式设备上,真实性能受限于其硬件体系,就目前的发展情况上来看并不适合应用图像精度要求很高的场合,相信随着新版本的推出,会逐渐改变这一现状。

2 设计思路

这里根据分类所要达到的不同目的,将其分为三种场景。结合以上技术的特点和各场景下的实际需求,讨论各场景下各种技术的适用性。

2.1 场景1

果蔬的分类方式是针对保鲜期。果蔬的腐败是具有一定传导性的,将新鲜的和即将腐败的果蔬放在一起,会加速新鲜果蔬的腐败,从而造成一定的经济损失。同时,新鲜果蔬与即将腐败的果蔬在销售策略及定价上也有很大的差异。因此,这种分类工作是有一定需求的。

果蔬的保鲜期是需要从多个维度进行判断的,大致可分为经验、机械、视觉三个维度。经验是根据生长特性去预估,机械是通过掐捏等动作物理感知,视觉则是通过外显特征来判断。可以看出,机器视觉只能从事其中视觉维度的工作,且需要很高的精确度,投入成本过大,因此并不适合。实际上也大多采用经验这一维度进行分类。

2.2 场景2

果蔬分类方式是针对大小及形状的。通过形状的规则度,半径的大小分类是果蔬常用的一种分类方法,这种分类方法主要是针对于不同的终端市场,比如个人与企业,从而提升收益。

利用机器视觉实现这种分类方法,对其中视觉传感器CCD 的精度要求不高,但是识别效率要求较高。前面提到的OpenCV 以及OpenMV均可以达到这一要求,但从最终的设备成本上来说,OpenMV 更为适合。

2.3 场景3

果蔬分类方式是针对品相的。这种分类方式其实就是在场景2 的基础上增加色泽这一判断维度,主要针对高端市场,也就是将半径、形状、色泽都趋近完美的个体挑选出来,通过精致的包装,作为礼品销售,可以大幅提高收益。

可以看出,该场景下对机器视觉系统色域识别精度要求是很高的,因为可以大幅提高收益,因此在效率和设备成本上可以做出适当让步。OpenMV 由于硬件的限制,目前配备的CCD器件在色域识别精度表现上一般,并不适用与这种应用场景,相较之下,OpenCV 在硬件上没有限制,通过合理的硬件搭配,是能够胜任该场景工作的。

3 系统框架

基于前面的分析讨论,这里基于Python、OpenCV、OpenMV 三种技术,结合设计思路中的场景2 和场景3 分别给出两种果蔬分类系统的系统框架。

3.1 场景2系统框架

图1基于OpenMV的系统框架

如图1所示。适用于场景2的系统框架是基于OpenMV 的。OpenMV 本身就是一个嵌入式系统,且预留有一定功能的IO口,可以方便的扩展显示及键盘,并且同时控制多个IO设备。

整体上看,该系统框架是一个典型的嵌入式系统,可以独立运行,且成本较低。其中Python 语言用来控制OpenMV 模块,再由OpenMV 模块协调其它部分完成分类工作。键盘用来给系统输入分类过程中的相关参数,显示器用来显示分类过程中的相关信息,传送带用来运送逐个果蔬,舵机用来根据识别结果决定当前果蔬去向。

3.2 场景3系统框架

图2 基于OpenCV的系统框架

如图2 所示,适用于场景2 的系统框架是基于OpenCV的。OpenCV本身是一个机器视觉库,因此需要一个其支持的操作系统运行,这里选择较为通用的PC 平台。PC 本身不便于控制外围设备,因此通过一个MCU来完成这些工作。

整体上看。该系统框架是一个典型的上下位机相结合的复合式系统,虽然上下位机都可以用其他设备替代,但是不能独立运行,且成本较高。其中Python负责从OpenCV中调用合适的模块完成摄像头捕获图像的识别工作,PC将识别结果通过串口发送至下位机,下位机MCU根据结果控制传送带以及舵机完成最终的分类工作。该系统中的摄像头和PC 配置均可以根据实际需要随时调整,虽然相对复杂,但适应性很强。

4 结语

本文对可用于果蔬分类的机器视觉中的三项技术进行了分析研究。综上所述,在Python 语言的强大支持下,通过OpenCV 和OpenMV 可以胜任不同场景下的分类工作,该方向的进一步研究具有一定的经济价值。

猜你喜欢
果蔬机器框架
机器狗
机器狗
框架
K-框架和紧K-框架的算子扰动的稳定性
广义框架的不相交性
奇思妙想的果蔬们
未来机器城
清洗果蔬农残 你做对了吗
这些果蔬能保护呼吸道
切果蔬