APP下载

基于ARM 的苹果采后田间分级检测系统设计

2015-04-17许立兵朱启兵

计算机工程与应用 2015年16期
关键词:分类器分级苹果

许立兵,朱启兵,黄 敏

XU Libing,ZHU Qibing,HUANG Min

江南大学 轻工过程先进控制教育部重点实验室,江苏 无锡214122

Key Laboratory of Advanced Process Control for Light Industry,Jiangnan University,Wuxi,Jiangsu 214122,China

1 引言

水果分级是水果进入流通的第一个环节,直接关系到水果的包装、运输、贮藏和销售的效果和效益[1]。苹果的采后田间预分检是指果农在田间对采后苹果进行分级检测处理的一道工序。它一方面可以帮助果农实现苹果的分级销售,提高经济效益;另一方面,可以减少苹果在储藏、运输期间,病害苹果之间的交叉感染,减少产品损耗;同时可方便下游的生产企业根据苹果的田间分检结果,采取有针对性的储存、加工、分级等工艺,达到增加企业竞争力,提高经济效益目的[2-3]。由于潜在的巨大经济效益,苹果的采后田间预分检被认为是未来10 年内对苹果产业具有重大影响的技术之一[4]。

尽管国内外的研究工作者和相关企业在水果品质的自动检测与分级领域做了大量的工作[5-7],以机器视觉技术为代表的水果品质自动检测与分级装置也已被成功开发和应用;但是现有的水果分级设备多适用于一定规模的水果生产企业,存在着体积庞大、价格昂贵等不足,无法适用于果农在田间对苹果的预分检。针对这一问题,本文主要研究并开发一套适合于苹果采后田间预分级检测系统。该系统架构基于ARM11+Linux 平台;利用机器视觉技术实现苹果缺陷、大小的自动检测分级。该系统成本低,便携易带,可实现苹果的田间预分级,对提高苹果的整体品质,提高经济效应具有重要的意义。

2 检测系统工作原理

检测系统在苹果传送运动过程中完成对每个苹果图像的采集,处理与分析和分离操作。图1 为系统检测平台原理图,两组结构相同的链式传送带2 并排安装,由链轮1 驱动,传输带带动滚子3 和滚轮4 运动,苹果在传输平台上滚动向前,摄像头可以拍摄到苹果90%以上的表皮图像。为了减小光照的影响,所有的苹果都在相同光源6 下检测,CMOS 图像传感器7 安装在传送带垂直正上方,实时采集传输带上苹果图像,ARM11 处理器调用OpenCV 机器视觉库,检测图像中的苹果缺陷和苹果尺寸,并将检测结果发送到执行机构11,执行不同等级苹果的分离操作。

图1 检测系统工作原理图

3 控制系统总体结构

控制系统以ARM11为控制核心,控制传输平台的运动,采集并处理苹果图像,并把分级结果送到执行机构,实现对苹果的分级。控制系统的硬件部分,主要包括ARM11 处理器及存储器模块,图像采集模块,步进电机及驱动模块,显示模块。此外还包括开关电源模块,调试接口模块和执行模块。在软件部分运行Linux2.6.38内核,运行裁剪时保留了USB 接口,nand flash 驱动,USB 摄 像 头 驱 动,yaffs2 文 件 系 统 等;Bootloader 在u-boot1.6.1 的基础上,采用Nand 启动;同时利用nfs与主机完成通信。在linux 下编译配置QT Creator2.4,Cmake交叉编译OpenCV2.3.1,并移植到Tiny6410 中[8]。系统的整体结构如图2 所示。

图2 系统总体结构图

3.1 ARM11 处理器及存储模块

系统采用ARM11 芯片(三星S3C6410)作为主处理器的嵌入式核心板,该CPU 基于ARM1176JZF-S 核设计,主频533 MHz,最高可达667 MHz,256 MB DDR RAM,32 bit 数据总线,可以满足图片的实时传输和处理要求。

3.2 图像采集模块

CMOS 图像传感器可通过CMOS 技术将像素阵列与外围支持电路,集成在同一块芯片上,与普通的CCD图像传感器相比,CMOS 图像传感器通过CMOS 技术将像素阵列与外围支持电路集成在同一块芯片上,CMOS具有体积小、重量轻、功耗低、价格低、编程方便、易于控制等优点特点。同时,CMOS 图像采集传感器可通过I2C、SPI、USB 等接口配置其曝光时间、增益等控制功能,具备编程方便、易于控制的优点。因此,本系统选择CMOS 图像传感器作为图像采集器件。其具体型号为鼎易CMOS,每秒最高可输出30 帧,最高图像输出为640×480 像素,支持USB2.0,兼容1.1。

在Linux 中,视频设备也被当作设备文件,可以像普通文件一样进行读写访问,其数据来源于视频设备/dev/video02。Video4Linux 是Linux 中关于视频设备的内核驱动。它为针对视频设备的应用程序编程提供一系列接口函数。采集的主要步骤包括[9]:

(1)开启视频设备:fd=open(“/dev/video02”O_RDWR),用来打开视频设备文件。

(2)获取设备信息和图像信息:通过ioctl 中的标识符VIDIO_QUERYCAP、VIDIOC_CROPCAP、VIDIOC_S_CROP,获取设备驱动功能,设置视频图像信息。

(3)初始化图像参数:通过ioctl 中标识符VIDIOC_S_FMT。设置制式:PAL 或者NSTC;设置帧的格式:图像的宽和高,存储类型等。

(4)设置缓存区并建立内存映射:通过ioctl 中的标识符VIDIOC_REQBUFS 函数获取摄像头存储缓冲区的帧信息,调用mmap 将摄像头对应的设备文件映射到内存中。由于mmap 方式截取图像把设备文件映射到内存中,绕过了内核缓存区,从而实现加速I/O 访问的目的。

(5)捕获一帧并送到缓冲区:通过ioctl 中的标识符VIDIOC_DQBUF,出队列以取得已采集数据的帧缓冲,取得原始采集数据,然后将缓冲重新入队列尾,可以循环采集图像。采集的图像通过USB 接口进行传输。

(6)停止视频的采集并关闭视频设备:通过ioctl 中标识符VIDIOC_STREAMOFF 停止视频的采集,通过close(fd)关闭视频设备。视频图像的采集过程如图3。

图3 图像采集流程图

3.3 步进电机及驱动模块

系统采用四线两相混合式步进电机,型号是57HD3403-21B,步进角1.8°,24 V 供电。驱动器采用东芝TB6560 芯片,6N137 高速光耦隔离,保证高速不失步。该驱动器24 V 供电,具有自动半流可调,整步、1/2、1/8、1/16 细分方式功能。控制步进电机的信号共3 个,分别为控制电机转速信号PWM、方向信号DIR 和使能信号EN。GPF14 口产生可调的PWM 波,GPK2 口输出高低电平,EN 接5V 高电平(参见图4)。

图4 步进电机控制图

对于步进电机控制,主要控制电机的正反转和速度,其中正反转的控制由GPIO 输出的高低电平来实现,而电机速度的控制则要产生一个频率可调的PWM 脉冲,设置比较缓存器(TCMPB0)和计数缓存器(TCNTB0)的值。编写好的驱动程序在PC 机上进行交叉编译,生成pwm.ko,gpio.ko 文件。通过命令#insmod 加载到内核中,通过命令#rmmod 可以卸载驱动模块。驱动以模块方式加载到内核中是断电易失,需要在开发板的etc/init.d/rcs文件中设置开机启动时加载驱动模块[10]。

3.4 显示模块

显示模块提供界面显示,提供用户和系统的交互,引导用户完成控制参数设置和结果的实时显示。LCD显示模块接口中包含了LCD 所用的大部分控制信号(行场扫描,时钟和使能等)和RGB 数据信号。采用了触摸屏控制芯片ADS7843,配合一个51 单片机,构成一个独立的四线电阻触摸屏采集电路,可以实现更好的数据采集,去抖处理。

系统的界面采用Qt 编程实现。信号和槽用于Qt对象间的通信,在程序中使用connect 函数来将某个信号和某个槽进行关联,而信号和槽之间的真正关联是由Qt的信号和槽机制来实现[11]。

利用mmap 方式进行视频采集,采用单帧采集,设置grab.buf.frame=0。在OpenCV 中IplImage 为BGR 格式,而Qt 中QImage 为RGB 格式,需要交换B 和R 通道显示才正常。利用ioctl(fd,BIOGET_FSCREENINFO,&FINFO),读取设备固定信息,并利用ioctl(fd,BIOGET_VSCREENINFO,&VINFO)读取可变信息,获得屏幕的分辨率,像素、深度等。再设置一个指针screen_ptr 指向通过mmap 函数内存映射后分配的首地址。

要把采集到的数据绘制到屏幕上,就要对图像按一定时间周期刷新,系统采用Qtimer 类实现每35 ms 刷新一次,在调用paintEvent 重绘视频帧的函数使用update,可以解决刷新数据屏幕出现明显的闪烁问题[12]。

通过调用ioctl传递‘+’,‘-’来增加或减少频率,从而改变电机的转速,同时在界面上显示当前的pwm 输出的频率。通过‘Dir’按钮,控制GPIO 口输出高低电平,控制电机的正反转。交叉编译生成可执行文件motor,拷贝到开发板bin 下,设置好运行环境变量,执行motor-qws,运行QT 程序。

4 苹果检测分级算法的基本原理及实现

4.1 基于Adaboost算法的苹果检测分级原理

苹果的检测与分级算法需要完成对CMOS采集图像的实时搜素,以确定该图像是否包含有完整的苹果图像,若有,则需要给出该苹果的相关品质信息(缺陷、大小)。目前出现了多种实时检测方法,其中由Paul Viola提出,并由Rainer Lienhart 改进的基于Haar-like 的Adaboost算法,由于具有良好的识别性能和搜素效率被广泛使用[13]。因此本设计利用Adaboost 算法作为苹果图像检测的分类器。基于Adaboost 算法的苹果检测与分级流程包括样本训练和检测两大部分。在训练部分,需要收集正样本(包含正常和缺陷的苹果图片)和负样本(不包含正样本的图片);利用积分图方法快速提取图像的矩形特征;对提取的每一个矩形特征进行弱分类器设计,并使用Adaboost 算法对弱分类器进行选择和构造,并最终形成级联分类器。检测和分级过程就是从待检测图像中提取被检测子窗口,利用训练部分得到的级联分类器对每个检测子窗口中苹果的位置和范围。

4.2 基于OpenCV 的用于检测分级的Adaboost算法实现

在OpenCV 中[14],正样本是由可执行文件opencv_createsamples 生成。在实验中选取150 个典型的苹果,每个苹果拍摄4 张图片,共600 张图片作为检测苹果大小的正样本。同时让苹果碰撞,产生缺陷和疤痕,每个苹果作出4 个碰撞,共600 张图片作为检测缺陷的正样本,设置正样本图像大小为30×30,使用支持Haar 特性的的opencv_haartraining 来训练,设置分类器训练的阶段数等参数,最终生成.xml文件,训练过程如图5 所示。

基于OpenCV的Adaboost算法的目标检测流程如下:

(1)加载训练好的分类器,使用函数cvLoadHaar-ClassfierCascade 装载训练好的用于检测苹果大小和检测缺陷的级联分类器。

(2)将分类器转化为OpenCV 的内部格式。

(3)检测要用到函数cvHaarDetectObjects。加载从摄像头获取的图像,并从图像中检测目标,该函数可以在待检测图像中找到包含目标物体的矩形区域,将区域作为一系列的矩形框返回。

图5 级联分类器的训练流程图

5 检测结果及分析

待检测的苹果在传输平台上以0.1 m/s 的速度匀速滚动前进,CMOS 图像传感器离苹果为50 cm,实时采集图片。当检测到苹果时,返回苹果的最小外接矩形框,length 是矩形框的长度,width 是矩形框的宽度。苹果的大小由外接矩形的面积作为判断依据;同时动态的检测苹果图像中的缺陷;把检测结果送到执行机构,并由执行机构实现苹果的大小和缺陷的分离动作。系统检测每个苹果不同部位的图像5 幅(由于苹果在传输平台上滚动前进,不同时刻采集的图像即为苹果的不同部位),每幅图像需要的平均时间为60 ms,检测一个苹果需要300 ms,基本满足实时性的要求。缺陷和大小的检测系统界面如图6 所示,大小检测的系统界面如图7 所示。

为了验证系统的识别精度,苹果大小等级采用欧洲联盟标准,预分拣初步做三分类。特级苹果为果径大于70 mm 且无缺陷;二级苹果为果径小于70 mm 且无缺陷;其余为缺陷苹果。经过测试,70 mm 的果径在离鼎易CMOS 摄像头50cm 处,成像的像素为60×60。本次测试试验中中共挑选100 个特级果,50 个二级果,150 个缺陷苹果,实验结果见表1。

图6 缺陷检测界面

图7 大小检测界面

表1 各级苹果的分类精度

从测试结果可以看出系统对于各级的平均精度为93%,能达到良好的预分拣要求。

6 结论

本文研究并开发了一套基于嵌入式的苹果大小和缺陷的检测系统原型样机,该系统完成了检测平台的控制,图像的采集,图像的处理,分级执行装置的控制。该系统成本低,便携易带,便于果农在田间实现苹果的及时预分级。从性能测试来看,对各级苹果的平均分类精度为93%,但是这一精度仍有待提高,下一步将结合缺陷苹果的生理特征,研究更为恰当的缺陷识别算法,以提高缺陷苹果的识别精度。

[1] 饶秀勤.基于机器视觉的水果品质实时检测与分级生产线的关键技术研究[D].杭州:浙江大学,2007.

[2] Warner G.Super-efficient picking system[J].Good Fruit Grower,2009,60(2):28-29.

[3] Warner G.Field sorting could bring a bonus[J].Good Fruit Grower,2009,60(17):16-17.

[4] Mizushima A,Lu R.Cost benefits analysis of In-Field presorting for the apple industry[J].Applied Engineering in Agriculture,2011,27(1):33-40.

[5] 李先锋,朱伟兴,花小明,等.融合形状和颜色特征的苹果等级检测[J].计算机工程与应用,2010,46(25):202-204.

[6] 桂江生.二维水果形状检测与分类算法研究[D].杭州:浙江大学,2007.

[7] 蒋益女,徐从富.结合纹理分析和SVM 的苹果梗蒂和缺陷识别方法[J].计算机工程与应用,2008,44(1):235-237.

[8] 孙新贺,王晓辉,于月森.一种嵌入式Linux 操作系统的构造方法[J].工业控制计算机,2011,24(1):69-71.

[9] 宋丽华,高珂.嵌入式Linux下USB摄像头驱动实现[J].计算机工程,2010,36(9):282-284.

[10] 周剑,林游,易凡.基于Linux 的步进电机驱动及QT 图形界面[J].电子技术,2010,47(8):81-87.

[11] 邱铁,周玉,张明垒.Linux环境下QT4图形界面与MySQL编程[M].北京:机械工业出版社,2012.

[12] 葛琦.嵌入式Linux 的Qt/Embedded 无闪烁绘图[J].电脑知识与技术,2009,5(16):4291-4293.

[13] 谢红跃,方昱春,蔡起运.一种新的改进AdaBoost 弱分类器训练算法[J].中国图象图形学报,2009,14(11):2411-2415.

[14] 刘瑞祯,于仕琪.OpenCV 教程-基础篇[M].北京:航空航天出版社,2007.

猜你喜欢

分类器分级苹果
BP-GA光照分类器在车道线识别中的应用
分级诊疗路难行?
收获苹果
分级诊疗的“分”与“整”
加权空-谱与最近邻分类器相结合的高光谱图像分类
结合模糊(C+P)均值聚类和SP-V-支持向量机的TSK分类器
拿苹果
会说话的苹果
分级诊疗的强、引、合
“水到渠成”的分级诊疗