基于OpenCV的精量喷雾图像处理技术
2018-06-06赵玉清杨陆强高彦玉刘存瑞王子辉
陈 钊,赵玉清,杨陆强,周 桥,高彦玉,刘存瑞,王子辉,时 玲
(云南农业大学 机电工程学院,昆明 650201)
0 引言
计算机视觉技术作为一种常用的图像处理技术,被广泛地应用于工业、医疗保健、航空航天、军事等领域。其针对视频图像中连续运动物体的分析是最具应用前景的一个发展方向,在机器人导航、智能视觉监控系统、医学图像分析、工业检测、视频图像分析及军事雷达视频信号的处理上占有举足轻重的地位[1]。OpenCV作为一种开源的计算机视觉库,可用于解决包括人机互换、物体识别、图像分区、人脸识别、动作识别、运动跟踪及机器人在内等方面的问题[2]。自发布以来,其就被广泛地应用于诸多领域产品的研究及开发,如卫星地图和电子地图的拼接、扫描地图对齐、医学图像去噪、安全和入侵检测系统、自动监视和安全系统,以及制造业中的产品质量检测系统、摄像机标定、军事应用、无人飞行器、无人汽车和无人水下机器人等[3]。依托于自身良好的开源性,近10年来它已成为发展最为迅速的图像识别技术之一。
近年来,随着国家对农业的不断重视,各种应用于农业方面的新科技、新方法层出不穷。在我国,背负式喷雾器喷雾施药目前依然是药农实施施药作业的主要方式。在施药过程中,药农常以经验喷洒农药,由于不同药农在田间行走时的步伐大小、行走频率和喷杆摆动频率存在一定差异,或者操作三轮(四轮)喷杆式喷雾机的习惯、土地松软程度的不同等情况常导致施药不均,进而导致杀虫灭菌不彻底、控长增产类药物需重新喷洒、除草类药物除草不尽等不良结果。这不仅造成了人、财、物的浪费,而且还在一定程度上削减了作物的经济效益。为此,提出了一种根据植株表面积实施精量喷雾的技术。在实验室条件下,该技术实现了作物图像的实时处理,并计算出了图像区域中的待施药植株的表面积,能够为喷雾设备的精量喷雾提供依据。
1 总体方案的设计
本系统的主要功能是利用喷雾设备采集植株图像并对其实时处理,通过串口通信技术的单工方式将处理后的相关数据传送至末端执行机构。喷雾设备的信息流如图1所示。
该设计方案以Microsoft Visual Studio 2013为开发工具,实现对原始图像的灰度化处理、去噪和其他前期操作;使用OpenCV视觉库完成对植株的边缘检测、轮廓绘制、面积及长度的计算;而后,利用Windows API(Windows Application Programming Interface)函数进行编程,并将面积信号发送给单片机。其中,单片机利用接收到的数字来调节PWM的占空比,进而控制喷雾器所喷洒的药量,最终实现根据图像中植株表面积的大小进行精量喷雾。图像识别系统功能模块如图2所示。
2 计算机视觉库OpenCV与串口通信
2.1 计算机视觉库OpenCV
OpenCV的全称是Open Source Computer Vision Library,直译就是“开源计算机视觉库”,可在Windows、Linux、Mac、OS、Android、iSO、Maemo、FreeBSD、OpenBSD等操作系统上运行[4]。OpenCV由一系列的C函数和C++类构成,具有轻量、高效的特点。强大的OpenCV除了用C/C++语言进行开发和使用外,还支持C#、Ch、Ruby等汇编语言,同时提供了对Python、Ruby、MatLab等语言的接口,搭建了图像处理和计算机视觉在很多方面的通道[5-6]。常用的OpenCV模块如表1所示。
图1 喷雾设备的信息流整体结构图
图2 图像识别系统功能模块图
模块功能描述calib3d相机校准和三维重建等内容core核心功能模块imgproc图像处理模块features2d2D功能框架highguiGUI函数库ml机器学习模块objdetect目标检测模块stitching图像拼接模块
OpenCV的优点主要体现在以下两个方面:一是执行速度快,能实时应用;采用优化的C/C++代码编写,能够充分利用多核处理器的优势。二是移植性好,可跨多种平台运行。OpenCV由一系列的C函数和C++类构成,拥有500多个C函数跨平台的中高层API[7-9]。
2.2 Windows API串口通信
因为本设计使用的上位机为32位操作系统,所以选用Windows API串口通信方式。利用其编程将OpenCV程序计算得到的植株表面积传送给单片机,该设计的实质是调用计算机操作系统提供的一系列底层例程来完成串口通信。通信的具体步骤可以分为以下几步:打开串行端口,配置串行端口,读/写串行端口,关闭串行端口[10]。其主要通过CreateFile、GetCommState、SetCommState、BuilderCommDCB等函数的使用完成串口通信。
2.3 51单片机接受信号关键程序
程序开头部分与单变量定义:
#include
sbit jdq=P1.0; //继电器1.0
unsigned char b=0;
//函数声明
void uart_init();
void jdqpwm();
串口初始化函数,单片机接受PC串口发送的数据前需要进行串口学初始化。
void uart_init()//串口初始化
{
TMOD=0x20;//使用定时器1,工作方式2
TL1=0xfd;
TH1=0xfd;
SCON=0x50;//方式1打开,接受允许
ES=EA=1;//打开串口中断允许和总中断允许位,
TR1=1;
}
串口中断入口函数:
串口中断入口函数。函数将串口中断标志位清零。并将接受的数据赋值给b。
void uart_inter() interrupt4
{
RI=0;
b =SBUF;
}
3 实验与分析
本设计以普通USB摄像头为信息采集设备,像素为1 200万,最大分辨率为640×480,最大帧率为30帧/s,上位机PC采用Intel Core(处理器i5-3210,主频2.5GHz,4G内存),系统类型为32位。采用VS2013软件编程,OpenCV版本为2.47。实验对象为采集得到的1张银杏叶,如图3所示。
图3 银杏叶原始图
3.1 图像预处理
图像采集过程中,光线的角度、喷雾操作导致的植株摆动、信号输入设备的震动、田地中的其他物质及摄像头上的灰尘或者雨滴等会致使图像失真或者腐蚀。所以,必须对图像进行预处理,主要包括图像修补、灰度化处理、边缘检测和噪声去除等操作,如图4所示。
图4 灰度图与轮廓图
3.1.1 图像修补
常用的图像修补方法是基于快速行进的修补算法(FMM),由Alexandru Telea[11]在2004年首次提出。核心思想是先处理待修复区域边缘上的像素点,然后扩大区域进行遍历,直至修复完所有待修复的图像像素[12]。采用此法进行图像修补,结果如图5所示。
图5 腐蚀图与修补后的图
3.1.2 图像滤波
图像滤波主要是指在尽量保持图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可或缺的操作。消除图像中的噪声或其他成分的操作叫作图像的平滑处理或滤波操作。通常情况下,信号或者图像的能量大部分集中在幅度谱的低频或者中频段,而在较高频段有用的信号经常被噪声淹没。所以,滤波的一个手段就是降低高频段幅度[13]。
在不破坏图像的轮廓或者边缘等重要信息的情况下,滤波能消除数字化过程中所混入的噪声,将抽出特征模式转化为识别特征模式,并使图像的清晰度及显示效果变好;而对于滤波器,可以把滤波器看作一个加权系数的薄纱,用滤波器处理图像时透过薄纱会清楚地看到想看到的图像特征。常用的滤波器主要有方框滤波、均值滤波、高斯滤波、中值滤波和双边滤波等(从左到右依次见图6)。中值滤波是图像处理中的常用步骤,它对于斑点噪声(Speckle Noise)和椒盐噪声(Salt-and-Pepper Noise)来说尤其有用[14],而斑点噪声又比较常见。所以,本设计采用的中值滤波。
图6 5种滤波图
3.1.3 噪声去除
何凯明等在2010年首次提出导向滤波,而在后续研究中又改善了相关算法,使得快速导向滤波得以实现[15-16]。单向滤波不但能够保证双边滤波的边缘平滑,而且对于边缘附近的检测也有很好的效果。导向滤波具体分为以下几步:①利用boxFilter滤波器完成均值计算,包括导向均值、原始均值、互换相关均值及自相关均值;②根据均值计算出相关的系数参数,包括自相关与互相关方差;③计算窗口线性参数a、b;④根据公式计算参数a、b的均值;⑤利用参数得到导向滤波输出输出矩阵;⑥图像通过输出的矩阵显示完成导向滤波。
3.1.4 HSV颜色转换与提取轮廓
HSV(Hue,Saturation,Value)是根据颜色的直观特性由A.R.Smith在1978年创建的一种颜色空间,也称六角锥体模型(Hexcone Model)[17]。HSV色系对用户来说是一种直观的颜色模型,如图7所示。(R,G,B)分别是一个颜色的红、绿和蓝坐标,它们的值在0~1之间构成了立方体。HSV六棱锥模型是从RGB立方体演变过来的,参数H表示色彩信息,也就是所处的光谱颜色的位置,这个参数用角度来表示。红、绿、蓝分别相隔120°,互补的颜色相差180°;纯度S为比例值,范围为0~1,用来表示所选的颜色的纯度与该颜色最大纯度之间的比率;V表示色彩的明亮程度,范围为0~1。HSV是一种比较直观的颜色模型,既然待喷洒的植株是绿色的,又因为RGB不适合颜色的比较,通过查阅资料,得到绿色的H值大概在35~90之间;通过遍历图像中所有像素,留下在此区间内饱和度和色调较高的像素,其余的当作噪声和腐蚀等。提取颜色及闭运算后的轮廓如图8所示。
图7 HSV色彩空间
图8 绿色(HSV)提取以及轮廓
3.1.5 作物面积计算
计算原理:在摄像头与拍摄物体距离为定长且与被拍摄物体平行的条件下(见图9),由于两边都是相似三角形,所以镜头距离物体长度a、定长b、图片中物体的长度c与物体的实际长度d有以下几何关系,即
(1)
图像中物体的面积S1与物体的实际面积S有如下关系,即
(2)
由式(1)和式(2)可得
(3)
所以,在固定镜头距离物体的长度a的情况下,物体的实际面积与计算面积存在一定的比例关系。通过 OpenCV中的contourArea()和arcLength()函数计算出轮廓的面积和长度,由此搭建了该精量喷雾系统,如图10所示,OpenCV的计算结果如图11所示。
a.镜头距离物体长度 b.定长 c.图片中的长度 d.物体实际长度图9 原理图
图10 系统图
图11 面积计算(1)
相对于实际情况,考虑到由于各种误差的存在,对公式(3)进行修订,则
(4)
总的来说,在采用固定型号的摄像头及摄像头距离物体长度a保持不变的情况下,实际面积与计算面积呈如下比例关系,即
S=KS1
(5)
本设计所采用的摄像头距离物体的距离a=10cm,通过绘制1cm2的小方格,在同等条件下改变阈值,测算得到4组数据:5 873、5 868.5、5 002、4 995;可得面积为1cm2时,其在系统中被表达为5 434.6;通过求取平均值及等比例关系,计算得银杏叶的表面积为13.490cm2,如图12所示。利用细铅笔将银杏叶的轮廓描绘在纸上,再数出绘制的1mm2的小网格个数(组数据见表2),得出银杏叶的表面积为13.444cm2。综上所述,计算得表面积误差为3.4%。
图12 面积计算 (2)
试验次数测量值/个试验次数测量值/个1133021345313504134651350613457135381336
3.2 结果分析
该系统采用绿色(HSV)等提取方法,显著地消除了图像噪声。但分析过程中,由于受实验场景、光线、田地中其他物质等的影响,USB摄像头采集到的图像中存在很多杂质,对计算结果产生了一定的影响;同时,绘制实物轮廓时,由于操作误差的存在,在一定程度上放大了实物的测绘面积,对计算结果的误差存在一定的影响。若采用分辨率更高的光谱摄像机,将有助于提高图像的清晰度,优化该系统的处理结果。
4 结论
本设计通过利用微摄像头的测距原理,通过contourArea()和arcLength()函数计算出了植株图像中的轮廓的表面积,与实际测算的结果相比较,虽存在一定的误差,但为植株精准施药的前提——待施药面积计算提供了一种方法。但是,由于像素或者画面的清晰度等问题,本设计受到了一定的局限;同时,采用的一些图像处理手段,也会对最终的表面积计算带来影响。高分辨率的光谱摄像机的使用有助于优化处理结果,但也提高了成本。与此同时,为了统一操作方便,摄像头要距离植株的要大致相等。在实际田野中,难免会有个别植株特别高大与矮小,而且现实之中植物的叶面也不是理想的处在同一平面下,这也是本设计的不足之处。
参考文献:
[1] 吴晓阳.基于OpenCV的运动目标检测与跟踪[D].杭州:浙江大学,2008.
[2] 矣昕宝,全海燕,许伶俐.一种基于OpenCV的多扇区圆检测方法[J].科学技术与工程,2011,16(11):3698-3701.
[3] 艾倩.三维模型构建与动态目标识别算法设计与实现[D].沈阳:东北大学,2011.
[4] 辛军.基于视频流的人群目标识别和跟踪的研究[D]. 沈阳:东北大学,2011.
[5] 毛星云.OpenCV3编程入门[M].北京:电子工业出版社,2015.
[6] 胡广胜,王青,单清群. 红外与可见光双摄像机标定方法研究[J]. 科技创新与应用,2017(4):9-11.
[7] 尹俊超,刘直芳.基于OpenCV的运动目标检测与跟踪[J]. 计算机工程与设计,2011(8):2817-2820.
[8] 刘立强,蔡晓华,吴泽全.基于OpenCV的除草机器人图像处理技术[J].农机化研究, 2013,35(12):162-165.
[9] 高素文.基于OpenCV的实时人脸识别系统研究与实现[D].保定:华北电力大学,2015.
[10] 吴芳.基于MATLAB燃料电池半实物仿真系统设计[D].武汉:武汉理工大学,2012.
[11] Alexandru Telea.An Image Inpainting Technique Based on the Fast Marching Method[J].Journal of Graphics Tools, 2004,9(1):23-34.
[12] 李景峰,潘恒,杨丽娜,等.VisualC++串口通信技术详解[M].北京:机械工业出版社,2013.
[13] 董辉.视频中运动物体检测与跟踪的实现[D].合肥:安徽理工大学,2012.
[14] 詹灯辉,周杰.基于视频的交通流量的统计方法[J].仪表技术,2011(7):42-44.
[15] K He, J Sun,X Tang.Guided image filtering[J].European Conference on Computer Vision, 2010,35(6):1-14.
[16] K He, J Sun, X Tang.Guided Image Filtering[J].Pattern Analysis & Machine Intelligence IEEE Transaction on, 2013, 35(6):1397-1409.
[17] 景林,林耀海,温永仙,等.结合色彩特征和空域特征的成捆原木轮廓识别[J].计算机系统应用,2013(7):196-199.
[18] 郭孟杰,陈丽君,杨帆,等. 基于USB摄像头的田间图像采集方法研究[J].农机化研究,2015,37(12):240-244.
[19] 刘龙申,沈明霞,孙玉文,等. 基于FPGA的农田图像采集与3G无线传输系统设计[J]. 农业机械学报,2011(12):186-190.
[20] 王伟,张刚,刘九庆,等. 农业信息采集机器人设计及试验研究[J]. 农机化研究,2016,38(9):206-209.
AbstractID:1003-188X(2018)06-0194-EA
Abstract: In order to achieve the precise spray and spray equipment effectively save pesticide use, this paper proposes a precise spray image processing technology based on open source computer vision technology. Through the extraction, identification of green plants, calculation the area of green areas, and on this basis, carried on the experiment,results show that the system can realize in high-speed processing of plant image, and can calculate the surface area of the image .The precision of system laid the foundation for the spray equipment.
Keywords: spray equipment; image processing technology; openCV; a serial port communication