文献标识码: A
文章编号: 0258-7998(2015)04-0036-04
0 引言
精准农业(Precision Agriculture)作为当今世界农业发展的新潮流,通过信息技术支持,可以实现定位、定时、定量的现代化农事操作技术实施与管理,以最节省的投入得到更高的收入,并高效地利用各类农业资源为目的[1]。在这一应用背景下,一种可超低空作业,具有重量轻、折叠尺寸小、操作距离远等优点的新型多旋翼飞行器——“农药喷雾飞行器”应运而生。它特别适合于山地丘陵、地块小、间作套种地块多的农作物病虫害防治。但是这种飞行器一般采用人工遥控控制,这就需要技术人员时刻观察并判断飞行器是否飞出农田边界,这不仅造成人力资源的浪费,而且效率相对较低,易出现误判[2],尤其当农作物过高,飞行器超低空飞行时,工作人员的视角容易受到限制,这个问题就表现得更加突出。
针对上述问题,本文设计了一个能够自动检测农药喷雾飞行器是否越界的智能控制系统。本系统融入了嵌入式技术、图像处理技术和测控等技术,并以Contex-A8为内核的S5PV210作为核心平台, 在第三方库OpenCV、Qt的基础上通过混合高斯模型、形状特征提取等算法实现了运动目标的检测、识别和定位,最终实现了农药喷雾飞行器越界检测,并通过无线模块控制农药喷雾飞行器智能飞行,无人操控。实验结果表明,该系统能够很好地识别到飞行器并准确地控制农药喷雾飞行器飞行,减轻了工作人员的体力劳动,同时提高了工作效率。
1 飞行器越界控制系统农田作业分析
假设矩形ABCD为一块农田的模拟图,如图1所示,表1为设置的农药喷雾飞行器飞行参数。农药喷雾飞行器的运动方向越界判定分析如下:
假设农药喷雾飞行器的飞行轨迹为从农田的BC边界飞入,垂直飞到AD边界再折返,以此类推。由表1的参数可知摄像头标定的边界应在农田ABCD的内部(至少距边界1 m内),如直线fg和eh所示。
当农药喷雾飞行器从摄像头2前飞过,系统根据越界检测算法可以检测到农药喷雾飞行运动轨迹,并判断飞行方向为从右向左(如图2所示),即进入农田,此时不发出控制信号;当飞行器飞至摄像头1前,即eh线时,根据运动轨迹判断飞行方向向左,即要飞出边界,此时发出控制信号,使飞行器沿eh向下平移并折返;当飞行器折返后再次飞至线fg时,运动轨迹判断飞行方向向右,即要飞出边界,此时发出控制信号。以此类推,直至控制农药喷雾飞行器完成整个农田喷药作业。
2 越界控制系统方案设计
2.1 总体结构设计
系统的核心平台是以Contex-A8为内核的S5PV210主板,利用USB高清摄像头实时捕获农田边界的视频信号,然后视频信号经Contex-A8分析和处理后实现农药喷雾飞行器这个运动目标的检测、识别和定位,进而判断其是否越过农田边界,最终系统通过无线模块nRF24L01实现对农药喷雾飞行器智能控制。系统整体结构图如图3所示。
2.2 USB高清摄像头
USB高清摄像头采用的是TTQ甜甜圈的USB2.0高速广角超高清监控摄像头,其采用CMOS传感器,CS标准卡口,最大分别率为1 024×768,像素为1 200万,每秒可以采集30帧图像,视频帧的格式是YUV422或者MJPG。镜头采用的是焦距为2.8~12 mm,通光口径为1.4 mm,视场角为25°~103°的广角摄像头,清晰成像距离可达到800 m。
2.3 无线收发模块
nRF24L01是一款工作在2.4~2.5 GHz世界通用ISM频段的单片无线收发器芯片,具有125个可选工作频道,数据传输率为1(或2) Mb/s,SPI接口数据速率为0~8 Mb/s,工作电压为1.9~3.6 V,拥有自动应答及自动重发功能[3]。
3 越界检测控制程序设计
农药喷雾飞行器越界检测控制程序是基于QT和OpenCV开发,运行环境为ARM-Linux嵌入式操作系统,核心算法主要包括对图像的预处理、基于混合高斯模型的运动目标检测、基于形状特征的目标识别定位、基于质心位置和运动方向的目标越界检测等,最终实现对农药喷雾飞行器的越界判断和通过无线模块对其的控制。农药喷雾飞行器越界检测控制程序设计框图如图4所示。
3.1 第三方计算机视觉库OpenCV的移植
OpenCV是由Intel公司发起并参与开发且在近年来迅速普及的计算机视觉研究工具,是一个跨平台的计算机视觉库[4]。它源代码开放,轻量高效,并提供了非常丰富的帧提取函数和视觉处理算法,使开发者可以在其视频开发或图像处理项目中直接进行算法移植或将其添加自己编写的程序中,达到事半功倍的效果[5]。移植过程为,首先从官网上下载源码包,然后根据嵌入式ARM系统安装步骤安装交叉编译器、参数配置和编译,经测试最终使用的版本为OpenCV2.4.2。
3.2 图像预处理
考虑到图像处理涉及到大量的矩阵操作和S5PV210的性能以及监控区域的复杂性,预处理线程首先采用人工标定的方法对视频的每一帧进行ROI(感兴趣区域)提取,然后使用OpenCV的blur()和GaussianBlur()等库函数对图像进行去噪、消除模糊和增强对比度等处理,最终得到一个有利于后期处理的图片。整个过程如图5所示,其图像中的竖直黑线表示界线。
3.3 混合高斯模型[6]目标检测算法实现
高斯模型是一种用高斯概率密度函数来量化对象并将其分解为由若干个高斯概率密度函数所组成的模型。基于高斯模型的背景提取建立在像素级,不同于单高斯模型的是,混合高斯模型将图像的每个像素设计成由若干个(一般为3~5个)高斯模型根据各自的权值加和共同产生的[7]。然后将采集到的图像像素与这几个高斯分布分别进行匹配,以确定哪些像素属于背景。又因为监控区域时刻都会有变化,比如风吹树动、人员流动或物体的进入等,使最初得到的背景不再具有可信度,因此还需要不断地对各个高斯分布的权值、均值和方差进行实时更新,这样处理有助于抗噪,比如光照变化、树叶晃动等,以达到背景模型的更准确表达。其中混合高斯像素点判为背景的概率计算公式如下:
其中Xt的概率p(Xt)是该像素分别属于K个高斯分布的概率加权和;K为高斯模型的数量(3~5个);(k,t)分别表示t时刻第k个高斯模型的权重、均值和方差,表示t时刻第k个高斯模型的概率密度函数。
混合高斯参数更新函数为:
其中,M(k,t)=1,匹配成功
0,匹配不成功,a(取值0~1之间)为各个高斯分布权重的更新率;?籽为参数的更新率,?籽越大,参数调整越快。
混合高斯背景更新函数为:
其中H表示经过以上步骤的调整得到的K个高斯分布并取前H个高斯分布作为新的背景;T表示属于背景高斯分布的权值和占总权值的最小比例;b是满足T的最合适的高斯分布数。
根据以上理论,基于OpenCV实现混合高斯模型目标检测算法的关键代码为:
BackgroundSubtractorMOG mog;//定义混合高斯
mog(frame, foreground, 0.02); //更新背景图片并且输出前景
threshold(foreground, foreground, 128, 255,
THRESH_BINARY_INV);
3.4 目标的识别定位算法
运动目标识别定位算法如图6所示,其中形态学滤波是为消除细小的噪声干扰又能填充物体内细小的空洞,有利于目标轮廓提取,质心坐标是根据连通域的几何距求出。一幅数字图像的阶2-D距定义为:
其中M和N分别是图像的高和宽,p和q是非零正整数,mpq为(p+q)矩。根据式(4)的mpq可求出连通域质心坐标,质心的计算公式为:
其中x表示质心的横坐标,y表示质心的纵坐标。最后将质心(x,y)坐标输出,为目标越界判断和控制提供依据。
运动目标识别定位算法的实现代码如下:
(1)调用OpenCV的库函数dilate()和erode()函数,实现二值形态学闭运算。具体实现代码为:
dilate( foreground, foreground, element);//膨胀
erode( foreground, foreground, element); //腐蚀
其中每一个函数中第一个foreground表示输入图像,第二个表示经函数处理后输出图像,element表示用于腐蚀和膨胀处理的模板。
(2)调用函数:find_Contours(foreground, outgroud, con-
tours, point_num, MAX_CON) 提取二值图像中有效轮廓存于contours中。其中foreground表示输入待提取轮廓的图像;outgroud表示输出图像;contours是一个容器变量,用以存放轮廓的数量、长度和每个轮廓的坐标;point_num和MAX_CON分别表示有效轮廓的下限和上限,滤除无效轮廓。
(3)调用函数:get_barycenter(contours,barycenter)实现从有效轮廓变量contours中计算形状描述符和识别有效的轮廓,并将最终质心的坐标存储到barycenter中,其类型是cv::Point,表示一个坐标为整数的二维点。
3.5 目标越界判断及控制
目标越界判断的两个条件是运动目标质心位置和运动方向,且运动方向由质心的运动轨迹可求出。因此,判断农药喷雾飞行器是否在右边界越界的条件表达式如下:
其中crossAlarm越界标记,1为越界;flag表示运动方向标号,规定从左向右为0,从右向左为1;是质心坐标,g(k,y)表示界线函数(k为常数)。通过异或(0^flag,1^flag)可有效地解决双向越界报警,实现单方向越界报警。左边界越检测算法和右侧的类似。程序中的主要函数为judge_barycenter(barycenter,B_left,B_right),其中bary-
center为质心坐标,B_left 和B_right分别表示左、右边界函数常数k,返回值为0或1,存于crossAlarm。
当检测到农药喷雾飞行器越界crossAlarm=1,程序马上通过软中断控制无线模块nRF24L01发送控制命令给农药喷雾飞行器。为了保证控制的正确率,控制命令采用包含校验和的数据包发送,并且农药喷雾飞行器解码后要做出答复,数据包的格式为:包头+包长度+命令+校验位,校验方式为和校验。
4 系统的测试
本文设计的基于ARM的农药喷雾飞行器越界控制系统主要由Contex-A8图像检测控制系统、nRF2401无线控制模块、高清摄像头捕获终端和三脚架等部分组成,且最终在农田进行测试。首先用三脚架将摄像头抬升到一定高度使摄像头前无遮挡物,然后启动农药喷雾飞行器飞跃农田的边界,经混合高斯和目标的识别定位算法处理过程产生的效果如图7~10所示,其中图7是由图5(c)经混合高斯模型算法处理得到的。
为了验证系统的可靠性,根据农药喷雾飞行器工作的天气条件,系统分别在晴朗微风、晴朗中风、阴天微风3种条件下进行测试,测试的数据如表2所示。
现场测试的实验结果表明,基于ARM的农药喷雾飞行器越界控制系统能够正确检测、识别定位和判断农药喷雾飞行器是否越界,并控制其正确飞行完成农田作业。同时分析得:虽然光线的强弱和风速对系统有一定的影响,但在不同的天气环境测试该系统时正确率也可达到92.85%。因此本系统可以满足客户需求,实现对农药喷雾飞行器农田作业的智能控制,在精准、智能农业中具有一定的推广价值。
参考文献
[1] 胡承键.加速宁夏农用无人机开发应用促进精准农业发展[J].宁夏农林科技,2014,55(5):8-10.
[2] 林蔚红,孙雪钢,刘飞,等.我国农用航空植保发展现状和趋势[J].农业装备技术,2014,40(1):6-10.
[3] 樊冬雪,成怡,海林,等.四轴飞行器视觉导航系统设计[J].计算机技术与应用,2014,40(8):142-146.
[4] 尹俊超,刘直芳.基于OpenCV的运动目标检测与跟踪[J].计算机工程与设计,2011,32(8):2817-2820.
[5] 刘瑞帧,于士琪.OpenCV教程基础篇[M].北京:北京航空航天大学出版社,2007.
[6] Gan Xinsheng,Zhao Shubin.Comparison on background subtraction algorithms for moving target detection[J].Command Control & Simulation,2008,30(3):45-50.
[7] 李娟,邵春福,杨励雅.基于混合高斯模型的行人检测方法[J].吉林大学学报(工学版),2011,41(1):41-45.