基于机器视觉的植物叶部病害识别技术研究

基于机器视觉的植物叶部病害识别技术研究

ID:74926868

大小:13.33 MB

页数:84页

时间:2023-02-03

上传者:笑似︶ㄣ無奈
基于机器视觉的植物叶部病害识别技术研究_第1页
基于机器视觉的植物叶部病害识别技术研究_第2页
基于机器视觉的植物叶部病害识别技术研究_第3页
基于机器视觉的植物叶部病害识别技术研究_第4页
基于机器视觉的植物叶部病害识别技术研究_第5页
基于机器视觉的植物叶部病害识别技术研究_第6页
基于机器视觉的植物叶部病害识别技术研究_第7页
基于机器视觉的植物叶部病害识别技术研究_第8页
基于机器视觉的植物叶部病害识别技术研究_第9页
基于机器视觉的植物叶部病害识别技术研究_第10页
资源描述:

《基于机器视觉的植物叶部病害识别技术研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

分类号:密级:UDC:编号:河北工业大学硕士学位论文基于机器视觉的植物叶部病害识别技术研究论文作者:王利伟学生类别:全日制学科门类:工学学科专业:物理电子学指导教师:徐晓辉职称:研究员 DissertationSubmittedtoHebeiUniversityofTechnologyforTheMasterDegreeofPhysicalElectronicsRESEARCHONRECOGNITIONOFPLANTLEAFDISEASESBASEDONCOMPUTERVISIONbyWangLiweiSupervisor:Researcher.XuXiaohuiMay2017 摘要传统病害识别方法存在识别效率低下,不能及时、准确地作出判断和处理等问题,严重影响了农作物的品质和产量。为解决上述问题,基于机器视觉的植物病害监控、识别与诊断技术得到不断发展,目前已经成为农业植物病害监测领域的研究热点并有广阔的应用前景。本论文主要研究的是利用嵌入式、机器视觉等技术实现对植物叶部病害的远程视频监控及检测,并以葡萄叶部病害为对象展开研究。首先,在分析讨论机器视觉在农业方面研究现状的基础上,确定了系统整体设计布局和软硬件选型并进行了嵌入式Linux应用平台的搭建。其次,探讨了视频监控系统的开发过程,主要包括基于V4L2和USB摄像头视频数据采集的研究、x264视频编解码模块的研究和Socket网络编程视频传输与接收模块的研究。然后,对基于OpenCV的植物叶部病害图像处理及识别算法进行了研究,主要包括在原有图像处理算法的基础上通过大量的测试对比试验选择合适的图像预处理方法及图像分割方法,图像预处理时,选择中值滤波进行图像去噪处理,通过加权平均法进行图像灰度化处理,图像分割时,选择彩色样本图像RGB颜色空间模型的B分量进行OTSU阈值分割和数学形态学处理实现病斑的提取;特征提取是通过分析研究确定了病斑在颜色、形状和纹理三方面的15个特征参数进行特征提取;分类识别是采用SVM方法随机选取训练集和测试集进行分类识别测试,最终选取RBF作为SVM的核函数,当惩罚参数C为64,RBF参数γ=1时,对15个特征参数进行葡萄叶部病害识别测试得到的平均识别准确率最高。最后,研究了利用Qt编程设计完成植物叶部病害监控及识别系统的应用程序。整个系统测试的最终结果是,监控系统应用软件在嵌入式客户端和远程PC服务器上都可以实现对植物生长状况的实时监控,视频传输的流畅度和视频显示的清晰度符合基本要求;识别系统应用软件在嵌入式客户端和远程PC服务器上也都可以对葡萄叶部病害进行识别。关键字:机器视觉葡萄叶部病害识别OpenCV嵌入式Linux系统视频监控QtI ABSTRACTThetraditionaldiseaseidentificationmethodhassomedefects,suchaslowefficiency,hightime-consumingandlowrecognitionrate,whichwouldseriouslyaffectthequalityandyield.Inordertosolvetheseproblems,diseasemonitoring,identificationanddiagnosistechnologyaredevelopedallthetime.Theyhavebecomeresearchhotspotsinmonitoringofplantdiseasesinagricultureandhaveshowedwideapplications.Themainresearchofthispaperistoachieveremotevideomonitoringanddetection,andtotakegrapeleafdiseases.First,theoverallsystemlayoutwasdesignedandthesoftwareandhardwarewereselected,aswellastheembeddedLinuxapplicationplatformwasconstructedbasedonthediscussionofvideomonitoringandanalysisofthestatusofmachinevisioninagriculture.Then,thedevelopmentprocessofthevideomonitoringsystemwasstudied,mainlyincludingdataacquisitionbasedontheresearchofV4L2andUSBcamera,x264videocodecmoduleandtheSocketnetworkprogrammingofvideotransmissionandreceivingmodule.Furthermore,thedevelopmentofplantdiseasesandinsectpestsrecognitionalgorithmbasedonOpenCVweredesigned.Theeffectivepreprocessingandsegmentationmethodswerechosenbasedonoriginalimageprocessingalgorithmsthroughalargenumberoftests.Inpreprocess,medianfilterwasselectedforimagedenoising.Imagegrayprocessingusedweightedaveragemethod.Inimagesegmentation,BcomponentinRGBcolorspacemodelofcolorimagewasselectedforOTSUthresholdsegmentationandmathematicalmorphologyprocessingtoachievetheextractionofthelesions.Featureextractionwasextracted15characteristicparametersin3aspects:color,shapeandtexture.ClassificationrecognitionutilizedSVMtotestrecognitionrateontherandomlyselectedtrainingandtestset.Finally,RBFwasselectedaskernelfunctionofSVM.WhenthepenaltyparameterCwas64andRBFparametergammawas1,theaveragerecognitionaccuracyin15featuresextractedfromgrapeleavesfordiseaserecognitionbecomethehighest.Finally,theQtprogrammingdesignoftheplantleafdiseasemonitoringandrecognitionsystemwascompleted.Thefinalresultofthewholesystemtestisasfollows:monitoringsystemapplicationsoftwarecanachievereal-timemonitoringofplantgrowthinbothembeddedclientandremotePCserver.Atthesametime,thefluencyofvideotransmissionanddisplayIII resolutionwereinaccordancewiththebasicrequirements;therecognitionsystemapplicationsoftwareinembeddedclientandremotePCserversbothcanidentifygrapeleafdiseases.KEYWORDS:MachineVisionIdentificationofGrapeLeafDiseaseOpenCVEmbeddedLinuxSystemVideoMonitoringQtIV 目录摘要.................................................................................................................................IABSTRACT..........................................................................................................................III目录................................................................................................................................V第一章绪论....................................................................................................................-1-1.1课题背景及意义.........................................................................................................-1-1.2国内外的研究现状及分析.........................................................................................-2-1.3主要研究内容.............................................................................................................-3-1.4论文结构安排.............................................................................................................-5-第二章系统总体设计方案及应用开发环境搭建........................................................-7-2.1系统功能分析及总体设计..........................................................................................-7-2.2嵌入式系统软硬件平台及开发流程..........................................................................-8-2.2.1嵌入式硬件平台...............................................................................................-8-2.2.2嵌入式系统软件...............................................................................................-9-2.2.3系统中应用程序开发相关库简介..................................................................-10-2.2.4系统的软件总体开发流程..............................................................................-11-2.3嵌入式Linux应用开发环境的搭建.........................................................................-12-2.3.1嵌入式开发环境的构建..................................................................................-12-2.3.2系统启动引导的配置与编译..........................................................................-14-2.3.3Linux内核移植与USB摄像头驱动移植.......................................................-15-2.3.4根文件系统的制作..........................................................................................-17-2.4本章小结....................................................................................................................-19-第三章植物生长状态视频采集及传输系统的开发研究...........................................-21-3.1基于V4L2视频采集模块的研究.............................................................................-21-3.1.1V4L2应用编程接口.........................................................................................-21-3.1.2V4L2视频采集及控制流程.............................................................................-22-3.2视频编解码模块的研究............................................................................................-23-3.2.1ffmpeg与x264的移植.....................................................................................-23-3.2.2x264视频压缩编码流程..................................................................................-26-3.2.3视频解码流程..................................................................................................-27-V 3.3视频传输与接收模块的研究....................................................................................-28-3.3.1TCP/IP协议概述..............................................................................................-28-3.3.2Socket网络编程...............................................................................................-29-3.3.3视频传输设计方案的选择..............................................................................-29-3.4系统的测试结果........................................................................................................-31-3.5本章小结....................................................................................................................-32-第四章植物叶部病害图像处理及识别算法研究.......................................................-33-4.1OpenCV库的编译与移植..........................................................................................-33-4.1.1OpenCV在Ubuntu上的安装..........................................................................-33-4.1.2OpenCV移植到嵌入式平台上........................................................................-35-4.2叶部病害图像的预处理............................................................................................-37-4.2.1图像去噪处理..................................................................................................-37-4.2.2图像灰度处理..................................................................................................-38-4.2.3图像的二值化..................................................................................................-39-4.3叶部病害图像的病斑分割研究................................................................................-41-4.3.1颜色空间模型及图像分割方法概述..............................................................-41-4.3.2图像分割方法的选择研究..............................................................................-42-4.3.3病害图像分割方法及结果分析......................................................................-43-4.4叶部病斑特征提取....................................................................................................-46-4.4.1颜色特征提取..................................................................................................-46-4.4.2形状特征提取..................................................................................................-47-4.4.3纹理特征提取..................................................................................................-49-4.5叶部病害的分类识别................................................................................................-51-4.5.1图像识别概述..................................................................................................-51-4.5.2支持向量机......................................................................................................-52-4.5.3工具选择及特征数据的归一化......................................................................-53-4.5.4分类过程及结果分析......................................................................................-54-4.6本章小结....................................................................................................................-57-第五章基于Qt的植物叶部病害监控及识别系统.....................................................-59-5.1Qt库的编译与移植....................................................................................................-59-5.2植物生长状态监控系统的设计实现........................................................................-61-5.3植物叶部病害识别系统的设计实现........................................................................-61-5.3.1系统功能概述及软硬件环境..........................................................................-61-5.3.2图像预处理及分割软件实现..........................................................................-62-VI 5.3.3图像特征提取及识别结果软件实现..............................................................-64-5.4本章小结....................................................................................................................-65-第六章总结与展望.......................................................................................................-67-6.1全文总结....................................................................................................................-67-6.2未来展望....................................................................................................................-68-参考文献...........................................................................................................................-69-攻读学位期间所取得的相关科研成果...........................................................................-73-致谢...............................................................................................................................-75-VII 第一章绪论1.1课题背景及意义我国自古以来就是农业大国,也是全球人口数量最多的国家,农作物的品质和产量关乎我国经济命脉以及国民民众生存。由于各种不良环境因素在农作物生长过程中对其产生影响,易使农作物发生病虫害,导致农产品产量下降,对整个农业生产来说,会形成巨大的损失[1]。因此农作物病虫害的监控、识别问题是农业发展过程当中急需解决的问题之一。传统的农业植物病虫害诊断主要依靠人工到现场判别的方法,这样不仅费时费力,而且没有一个准确、定量的标准,又由于一些从事农业工作的人员缺乏相关的农业病虫害专业知识,在农作物出现问题时不能及时准确地针对不同情况做出判断和处理,这些缺点都严重的影响农业现代化的发展,上述问题都足以说明随着科学技术的发展以及农业现代化的需求,传统的农作物病虫害诊断已不能满足现代农业发展的要求[2,3]。为了全面、准确、及时地对植物病虫害进行监测、识别,将相关的农业科学信息传到远程的专家服务器上,形成系统、定量地植物病虫害诊断,必须依赖先进的技术手段来实现科学的监控与诊断[4]。目前,机器视觉技术作为发展比较成熟的先进技术已经在精准农业中得到了广泛的关注和应用。在农业现代化发展过程中植物病虫害监控及识别已经成为机器视觉技术的重要研究方向之一。机器视觉系统的开发主要是基于PC和嵌入式两种平台。目前,移动嵌入式平台的性能不仅在一些方面已经可以和PC相媲美,而且与各种越来越小型化的计算机相比,显得更加轻巧方便。一方面,机器视觉在农业应用上,很多情况需要移动作业,这对于需要市电驱动的PC机器视觉系统进行信息的采集与处理是不可能实现的,而且PC机器视觉系统价格一般比较昂贵不利于在农业应用中推广。另一方面,相对于PC机器视觉系统,嵌入式机器视觉系统还拥有在学习、应用、维护、安装等方面更加简单、方便的先天优势,这可以实现在短期内构建系统并提高应用系统的开发速度。因此利用嵌入式机器视觉技术对植物病虫害进行监控及识别,具有可以提高植物病虫害信息识别准确率、缩短病虫害判别时间、降低农业应用成本等方面的优点。综上所述,采用计算机、嵌入式、机器视觉和网络等技术,研究并设计实现一种成本低、体积小、功耗低、效率高的农业植物病虫害图像监控及识别系统有着十分重要的理论研-1- 究和实践开发意义。1.2国内外的研究现状及分析随着机器视觉技术的不断发展,植物病虫害的监控、识别与诊断技术作为农业现代化发展的重要一环已经成为国内外专家学者的研究热点,应用前景十分广阔[5]。在视频监控方面,国内外应用研究已经比较成熟,主要经历了模拟信号农业视频采集系统,基于PC机的数字视频采集监控系统和基于计算机、嵌入式等各种平台的互联网视频监控系统等发展阶段。目前,由于网络视频监控技术在监控范围、远程管理、安全性、组网难度等方面已经全面的超越了模拟和数字监控技术,所以网络监控技术在各方面的应用已经十分成熟。国内外专家学者在农业视频监控方面进行了比较广泛的研究,典型的应用研究结果有:美国农业部研究所通过安装数码相机、超声波传感器等硬件,开发了农作物生长条件实时测量设备,把该设备装备在拖拉机上,通过传感器测量植被指数、作物冠层结构等田间数据,然后将田间数据归一化并传输到车载电脑中,最后通过拖拉机上携带的通信装置与远端进行通信[6]。在西北农林科技大学中,何东健教授带头的研究团队,在农业监控方面做了大量研究,研究方向主要是在农田视频信息监测、远程控制等方面,利用嵌入式Linux、无线网络等技术进行应用研究[7,8]。在植物病虫害的识别与诊断方面,国内外的专家学者已经利用机器视觉技术在黄瓜、小麦、大麦和棉花等作物上进行了相关病虫害的识别研究。Malthus[9]在1993年研究大豆被蚕豆斑点葡萄孢感染后的情况,通过光谱仪来研究测试被感染大豆反射光谱情况来实现对大豆病虫害的监测,但是对大豆具体的感染程度无法判断;Zayas等[10]在1998年以小麦叶部病虫害为例,利用机器视觉技术实现对害虫的检测,识别准确率达到85%以上;WuDake[11]在2006年以番茄叶部病害为例,通过提取叶部病害占总叶片的面积特征,并利用光谱技术提取不同受害叶片的光谱敏感波段等特征,最后采用SVM应用径向基核函数进行识别的准确率达到97.4%以上。吉林农业大学彭占武[12]在2007年发表的硕士论文上利用VisualC++编写了黄瓜病害的图像处理与识别系统,经过预处理后提取黄瓜六种病害的14个特征,通过优化选择了8个最优特征,最后利用模糊模式识别技术进行识别的平均识别准确率达到93.3%;甘肃农业大学杨倩[13]在2013年发表的硕士论文上通过提取大麦的颜色特征和纹理特征利用SVM实现对大麦病害的识别,图像分割主要是选择H通道进行阈值分割,颜色特征是利用颜色矩来描述,纹理特征是利用LBP值来描述,最终的整体病害识别结果达到84.7%以上;柴洋[14]利用计算机机器视觉对温室大棚番茄的三种病害进行特征提取,并利用贝叶斯分类器进行识别,识别的准确率达到92%以上,该系统是利用VisualC++6.0-2- 作为开发工具完成的整个图像处理系统的开发;何青海[15]利用嵌入式机器视觉技术完成了棉花病虫害检测系统的设计,该系统是利用Qt编程在ARM_Linux平台上以棉花螨虫为例实现了棉花病虫害的智能检测和分级。由国内外发展现状可以看出,机器视觉技术的发展主要依赖于数字图像处理、模式识别等技术的不断完善和更新,目前大多数植物病虫害研究都还是在Windows上以VisualC++或者MATLAB为软件平台进行开发的,这些开发大多是以理论研究为目的,实用性不足。OpenCV作为一种开源、跨平台的计算机视觉库[16],与其他图像、视觉开发软件相比,具有函数功能丰富,运行效率高,移植性好等优点[16],所以基于OpenCV开发的图像处理及识别算法具有很好的实用性和可移植性,可以将开发的算法移植到嵌入式硬件平台上进行应用,以此来提高算法的实用价值。在农业视频监控方面的研究现状基本只是单一的进行图像监控或者加上其它信息的采集控制,没有或者很少把农作物病虫害视频监控和图像识别结合起来进行应用研究。本课题研究的就是将两方面应用研究结合起来完成系统的开发,首先实现嵌入式Linux系统应用平台的搭建及各种开源库的移植,其次进行视频监控系统的开发研究,然后以OpenCV库为基础进行图像处理及识别算法的研究,最后进行监控系统及病害识别系统应用软件的开发。最终可以达到不管是在嵌入式上,还是在远程服务器上都可以对植物生长状况进行实时监控,也可以进行植物叶部病害识别的目的,这也是嵌入式系统与机器视觉技术结合后重要的研究热点之一,具有很高的实用价值和研究意义。1.3主要研究内容本课题主要研究内容是基于嵌入式机器视觉的植物叶部病害视频监控及识别平台的研究开发,最终目标是:既可以在嵌入式上对植物生长状况进行实时监控和植物叶部病害的识别,又可以选择将采集到的视频数据上传到远程服务器上,在服务器上实现对植物生长状况的监控和植物叶部病害的识别。考虑到植物不同病害研究的相似性和复杂性,在识别算法研究上,本文只对植物叶部常见病害的识别进行应用研究,以葡萄叶部病害为研究对象实现算法的开发和系统的设计,最终本系统可以实时监控葡萄的生长状态,并且可以对葡萄叶部常见病害进行判别。本系统嵌入式硬件平台选用了TI公司的OMAP3530处理器,嵌入式平台的操作系统选用的是Linux,视频输入设备应用的是USB摄像头,最终可以将植物叶部病害图像的采集处理结果实时显示到LCD上,并且可以在LCD上进行图像识别的控制,当然也可以将视频数据上传到服务器上,在服务器上实现植物叶部病害图像的监控和识别。如图1.1所示监控及识别系统的结构组成。-3- 图1.1嵌入式机器视觉植物叶部病害监控及识别系统组成本课题的主要研究内容包括:(1)通过系统的总体功能分析进行系统软硬件选型和整体设计布局的规划。(2)进行嵌入式Linux应用开发环境的搭建以及OpenCV,ffmpeg,x264,Qt开源库的安装、配置与移植等。(3)实现视频采集及传输系统的开发研究,主要涉及视频数据采集模块的研究,视频编解码模块的研究,视频传输及显示模块的研究。(4)进行基于OpenCV的植物叶部病害图像处理及识别算法的开发研究,考虑到植物不同病害研究的相似性和复杂性,以葡萄叶部三种病害为研究对象实现算法的开发。具体算法研究开发过程包括:通过进行细致的分析研究,选择合适的图像预处理及分割方法,对葡萄叶部病害进行图像预处理及分割;确定具体的特征进行特征提取;选择合适的分类识别方法进行葡萄叶部病害的识别测试,最终确定算法的识别参数,使识别准确率达到最优。(5)实现客户端和服务器视频监控及图像识别应用软件的开发。一方面,视频监控软件在客户端上可以对植物生长状况进行实时监控,也可以将视频数据通过压缩编码上传到服务器上,在PC服务器上实现对植物生长状况的远程监控;另一方面,在嵌入式和PC机上,图像识别软件通过控制都可以实现对植物叶部病害的识别。-4- 1.4论文结构安排本文详细介绍了基于机器视觉的植物叶部病害监控及识别系统的设计过程,最终完成了系统应用程序的开发,该应用程序在客户端和服务器上可以对植物叶部病害进行实时监控及识别。第一章:介绍了课题研究的出发点及意义,然后对机器视觉技术在农业方面的国内外研究现状进行了分析探讨,之后确定了本研究的主要研究内容,最后对本文各章节的结构安排进行了说明。第二章:通过对研究内容的分析确定了系统的总体设计方案;然后对系统软硬件平台的选择,系统中软件的总体开发流程,系统中应用软件开发需要应用的几个开源库进行了介绍;最后分析研究了本系统嵌入式Linux应用开发环境的搭建过程。第三章:介绍了植物生长状况视频采集及传输系统的实现过程,主要对视频的采集、解压缩和传输方案的选择进行了分析研究,最后对系统进行了测试并对结果进行了说明。第四章:以葡萄叶部病害为研究对象详细讲述了基于OpenCV的植物叶部病害图像处理及识别算法的开发过程,包括图像预处理和分割,病害的特征选择和提取,病害的分类识别。在算法的研究开发过程中,对算法流程的每一步结果都进行了展示和说明,最后通过随机选取训练集和测试集对算法进行分类识别的测试得出了最高的平均识别准确率及相应参数。第五章:完成了植物叶部病害监控及识别系统的设计,主要介绍了监控及识别系统应用程序的实现过程及结果。第六章:对整个研究过程所做的工作进行概述,指出了需要继续完善的地方,并对未来的研究内容及方向进行了展望。-5- -6- 第二章系统总体设计方案及应用开发环境搭建2.1系统功能分析及总体设计本系统设计的是基于嵌入式机器视觉的植物叶部病害监控及识别系统,主要由系统软件、系统硬件和应用软件组成。系统的主要功能是:既可以在嵌入式上实现对植物生长状况的实时监控和植物叶部病害的识别,又可以选择将视频数据上传到远程服务器上,在PC服务器上实现对植物生长状况的监控和植物叶部病害的识别。因此,通过分析得出系统的具体功能需求及其解决方案包括以下几个部分:(1)考虑到系统不仅需要在便携性、实时性、低功耗等方面满足要求,而且还需要实现视频监控和对植物叶部病害识别的功能。由上述需求结合各种嵌入式整体开发工具的自身特点,本课题选用奥尔斯公司的物联网嵌入式网关(CORTEXA8DB)开发板作为基础开发平台。该开发板采用底板与核心板相结合的组成方式,其微处理器选用了TI公司的OMAP3530处理器,交互显示方面该开发板集成了7寸的LCD显示屏,能够满足系统硬件的要求。在操作系统选择上,考虑到嵌入式Linux系统具有成本低、性能好、开放源码、组件丰富等优势,所以本系统选择嵌入式Linux作为操作系统。(2)系统需要对植物叶部病害进行监测和识别,因此需要进行图像算法的开发。考虑到算法开发的实用性和复杂性,本研究以OpenCV库为基础来进行图像算法的开发,以此来增加算法的实用性。通过直接调用OpenCV库中的一些接口函数就可以直接对图像进行相应的处理,这样可以减少图像算法应用开发的复杂性。(3)系统需要将视频数据传输到远程PC服务器上,以达到在远端也可以直接对植物生长状况进行实时监控和实现植物叶部病害识别的目的,因此需要对视频图像数据进行压缩、传输。通过移植ffmpeg和x264库到嵌入式目标板上,然后调用相关的接口函数实现对视频图像的压缩,视频传输方面使用socket网络编程实现客户端和服务器端的视频传输。(4)系统要完成视频监控和植物叶部病害识别两个功能,因此需要针对这两个功能实现人机交互应用软件的开发。考虑到本系统的需求以及Qt库作为嵌入式GUI的优点,本系统通过移植Qt图形界面库来实现对嵌入式系统总体应用软件的设计,最终完成上述两个功能的应用软件开发。-7- 通过对以上系统功能需求及其解决方案的分析,植物叶部病害监控及识别系统总体上是由图像采集、图像处理及识别、传输及显示3个模块组成。图像采集模块的设计是应用USB摄像头采用V4L2接口实现视频数据的采集;图像处理及识别模块的设计是以OpenCV库为基础来实现植物叶部病害图像处理和识别算法的开发,最终基于该算法开发出的应用软件可以分别在PC服务器和嵌入式平台上对植物叶部病害图像进行识别;传输及显示模块的设计是首先将采集的图像通过Qt程序实现在LCD上显示,然后将视频数据经过x264压缩,并通过网络协议进行传输,视频数据传输到服务器端后,调用FFmpeg库函数进行解码,再使用Qt应用程序进行显示,最终实现对植物生长状况的远程监控。2.2嵌入式系统软硬件平台及开发流程2.2.1嵌入式硬件平台本研究的硬件平台核心选用了TI公司的OMAP3530处理器,其适用于做与视频相关地应用开发。该处理器是基于增强型OMAP3架构的双核结构(ARMA8和DSP),A8内核是基于ARMv7指令集,最高运行频率可达1Ghz,并且该开发板采用了256MBRAM和256MBNANDFLASH,能够确保系统应用程序高效运行[17]。如图2.1所示该处理器的硬件核心板。图2.1OMAP3530核心板系统显示采用7寸真彩色LCD,可以实时的显示图像和数据,并且可以实现对系统的控制。系统应用USB摄像头进行图像数据的采集,选用的是罗技公司像素为300万的CMOS高清USB摄像头(型号为C270),同时支持MJPEG和YUV422两种数据格式。该摄像头在应用Linux作为操作系统的平台上,通常插上该摄像头后,无需再编译、加载额外的驱动,该摄像头就可以正常工作。这是由于该摄像头是UVC摄像头,UVC驱动已经被添加到Linux内核代码中,有足够完善的驱动维护,已经成为-8- 了一个开放的标准。上述硬件选择可以很好的满足本系统的设计需求,本研究的嵌入式系统硬件实物图如图2.2所示。系统主要硬件组成如图2.3所示。图2.2嵌入式系统硬件实物图图2.3系统主要的硬件组成2.2.2嵌入式系统软件嵌入式系统从上世纪发展到现在,选择Linux作为操作系统进行应用开发是非常常见的。Linux是1991年第一次发布并开放源代码的一种类Unix操作系统[18]。经过多年的发展,Linux已经变成功能十分强大、各种设计特别完善的OS,不仅可以在PC平台和嵌入式平台上运行,而且是目前应用十分广泛的多用户网络操作系统。Linux操作系统的几个主要特点如下:(1)开放源代码,系统开发成本低。Linux的源代码具有可以免费获取、修改和传播不受限等特点。这些特点不仅能很大程度上降低系统的开发成本,而且对于产品的研发效率也会有很大的提高。(2)内核具有可裁剪性,并且性能和稳定性好。不同嵌入式设备的功能需求是不同的,Linux内核自身独特的可裁剪机制正适合嵌入式设备的这种特点,可以根据-9- 嵌入式设备的需求量体裁衣。Linux与其他嵌入式操作系统相比,可以在利用资源更少的前提下运行的更快、更稳定,对硬件功能的支持也更完善。(3)支持多种硬件平台,可选择的应用软件数量广泛。目前嵌入式Linux可以在多种硬件平台上应用,并且对各种平台的支持也越来越完善。Linux自身的开源性使其可以提供的应用软件数量广泛,支持大多数自由发布的应用软件和许多商业化的应用软件。这些优点都有利于嵌入式系统的开发。综上所述,Linux操作系统具有开源、性能和稳定性高等优点[19],因此本研究嵌入式系统的软件开发平台选用Linux作为操作系统。2.2.3系统中应用程序开发相关库简介本研究中的视频监控,图像算法开发及图形界面应用程序开发分别应用到了FFmpeg与x264、OpenCV及Qt开源库,下面对这几个库进行概述。(1)FFmpeg概述FFmpeg是一个具有开源免费跨平台特点的应用十分广泛的多媒体音频、视频解决方案[20]。FFmpeg拥有包括音视频采集、音视频格式转换、视频抓图、流化音视频等非常强大的功能[20]。FFmpeg的开发平台是Linux,不过其支持在Windows、MacOS等多平台上编译运行。FFmpeg支持超过40种编码和90种解码,音视频编解码功能十分强大,因此FFmpeg的应用十分广泛。(2)x264压缩编码x264是基于H.264编解码标准开发并通过通用公共许可证授权的免费开源的视频编码函数库,也是目前最好的H.264有损视频压缩编码器[21]。H.264是ITU-T和ISO/IEC的联合视频组共同开发的一个国际数字视频编解码标准[22]。H.264还有其他命名,ISO/IEC的MPEG称其为AVC,是MPEG-4的第10部分[22]。在压缩效率和编码速度等方面,x264是对H.264标准支持最好的编码模型。因此,本系统选择x264编码方式进行视频编码。(3)OpenCV的概述OpenCV是采用C/C++语言编写的跨平台、开源的计算机视觉库[16],可以免费在商业、研究等各个领域应用。其设计理念是为开发人员构建一个应用方便简单、执行速度尽量快、重视实际应用的计算机视觉框架,这使得相关的开发人员可以更方便地进行机器视觉方面的技术研究。OpenCV主要包含五个模块,即:CV、CXCore、MLL、HighGUI和CvAux[16]。其中一些已经不够实用或者处于实验开发中的算法和函数一般存放到CvAux库中,剩下的四个模块的基本功能和结构关系如图2.4所示。-10- 图2.4OpenCV的基本结构图(4)Qt图形用户界面概述用户在嵌入式上进行人机交互时最适合选择方便操作、控制的图形用户界面,即GUI。在PC机上运行GUI是不用考虑资源问题的,但对于嵌入式来说,资源一般限制严格,硬件设备和设计环境并不通用,因此要选择适用于嵌入式实际应用开发的GUI。一般的选择标准是:首先要占用资源少,其次要在轻型的基础上具有高性能、高可靠性,最后要可配置。Qt的嵌入式版本(Qt/E)作为嵌入式GUI可以很好的满足上述要求,非常适合在嵌入式Linux系统中应用。综上,本系统采用Qt/E进行嵌入式GUI的开发。Qt/E是一个专门为嵌入式应用开发的图形用户界面工具包,一般运行在嵌入式Linux中。与Qt桌面版不同,Qt/E所依赖的底层支持是构建在Linux的Framebuffer之上,在Framebuffer上面直接写入要显示内容。Qt/E的这种直接读写Framebuffer的界面显示技术,不仅提高了显示的速度,而且在很大程度上节省了系统的开销[23]。因此Qt/E非常适合在嵌入式Linux平台上应用。Qt/E软件实现结构框架图如图2.5所示。图2.5Qt/E软件实现结构框架图2.2.4系统的软件总体开发流程本系统软件开发的主要工作包括:嵌入式Linux应用开发环境的搭建,OpenCV-11- 2.4.9库的移植,ffmpeg与x264的移植,Qt4.8.6图形交互界面的移植,视频采集及传输系统的研究、图像算法的研究、监控及识别系统应用程序的开发等。系统主要的嵌入式编译环境是在VMware虚拟机安装的Ubuntu12.04.5操作系统中,人机交互界面选用Qt/E,开发语言选用C/C++。系统的软件总体开发过程如图2.6所示。图2.6系统的软件开发流程图2.3嵌入式Linux应用开发环境的搭建应用开发环境搭建的流程通常为:建立交叉编译开发环境,系统启动引导、Linux内核的编译和移植,根文件系统的构建以及相关驱动的移植等[18]。下面针对本系统嵌入式应用平台的搭建过程进行详细介绍。2.3.1嵌入式开发环境的构建(1)交叉编译开发模式概述对于嵌入式Linux软件开发来说,首先需要建立嵌入式开发环境,一般采用的是交叉编译的方式进行开发,即软件的开发、编译和调试不是在嵌入式上而是在宿主机上,软件的运行是在嵌入式上实现[24]。如图2.7所示嵌入式交叉编译开发模式,图中两者之间的通信一般通过串口、网络、JTAG等方式建立连接关系。交叉编译过程也是需要选用专门的交叉编译器才能完成的。-12- 图2.7交叉编译开发模式(2)交叉编译环境搭建本系统是在一台安装Windows7操作系统的电脑上通过安装VMware虚拟机软件10.0.1版本,然后在该软件上安装Ubuntu12.04.5操作系统实现交叉编译环境宿主机的建立,如图2.8所示在宿主机上配置安装好的开发环境;目标机选用的是奥尔斯公司嵌入式网关开发板;交叉编译器版本的选择如图2.9所示。本系统是通过SD卡、网线和串口实现PC机与目标板的通信,PC机采用SecureCRT软件通过串口实现对开发板的控制,也可以利用SecureCRT软件通过SSH2协议实现与虚拟机中Ubuntu系统进行交互,这样就完成了交叉编译环境的搭建。图2.8VMwareWorkstation虚拟机及Ubuntu操作系统图2.9本系统交叉编译器版本-13- 2.3.2系统启动引导的配置与编译嵌入式Linux系统芯片的启动加载过程一般都是启动引导程序、内核、文件系统。本系统采用的核心芯片是TI的OMAP3530,该芯片的启动加载流程也是一样的过程,只不过该芯片的启动引导过程是两级引导,分别通过x-loader和uboot完成。第一级引导程序主要是完成如CPU、fat文件驱动等板载初始化,以便进行uboot的加载,第二级的引导程序主要完成与用户进行交互、引导Linux内核等功能[17]。U-Boot是一种通用、开源的启动引导程序。由于U-Boot不仅支持多种操作系统和多种常见的处理器,尤其可以很好的支持Linux内核启动,而且功能设置灵活度高,支持设备驱动也非常丰富,网络技术支持也很强,所以本系统选择U-Boot作为启动引导。图2.10x-loader配置与编译结果图2.11u-Boot配置与编译结果本系统选择的开发板支持SD卡或者将程序烧写到Flash中等多种启动方式,不同的启动方式对应的第一级启动引导映像文件的生成方法和烧写方式是不一样的。本系统采用SD卡启动的方式,通过对第一级启动引导源文件进行交叉编译生成用于SD-14- 卡启动的映像文件MLO[17]。具体的配置编译过程如下:首先#cdx-load-1.41-256进入目录,其次#makeoursa8rp_config配置、#make编译,然后拷贝、运行脚本文件,最后重命名生成MLO文件。U-Boot的编译配置过程与x-loader的配置编译过程基本一样,即:首先#cdu-boot-1.3.3-256进入目录,然后#makeoursa8rp_config配置、#make编译。这样就完成了本系统x-loader与u-Boot的配置与编译,如图2.10和2.11所示本系统启动引导的配置与编译结果。2.3.3Linux内核移植与USB摄像头驱动移植(1)内核概述内核,是一个操作系统的核心。它负责系统的内存、进程等整个体系的统筹管理,更决定着系统的性能和稳定性。内核的存在可以为上层应用软件和底层的硬件交互提供一套操作方便、功能完善的编程接口,这样可以使程序设计更加简单便捷,这是由于内核的存在隐藏了直接操作硬件的复杂性。Linux内核采用了稳定树和开发树的双树系统进行发布,对内核新功能的添加改进会在开发树中进行,开发树经过一定时间的发展测试后会成为稳定树。本系统采用的内核版本号是2.6.32,其中中间位是偶数时表示的是稳定树,中间位是奇数时表示的是开发树。(2)交叉编译Linux内核本系统内核的配置、编译过程如下:首先在保证宿主机联网的情况下,在Ubuntu中安装NCURSES库,然后切换到内核源码目录linux-omap3-a8rp中,输入命令,清除以前编译生成的余留文件,保证内核源码的清洁,然后选用Ncurses图形选单界面来配置内核,具体命令如图2.12所示。图2.12内核清洁与配置命令如图2.13所示内核配置界面,在选择配置时,用空格进行选取,有三种选择,每种选择的含义如图2.13所示。然后根据需求进行配置,配置完成后保存。-15- 图2.13内核配置界面最后进行内核编译,如图2.14所示,本系统直接使用开发套件自带配置,直接配置编译即可。图2.14内核设置与编译过程当图2.14中的命令全部执行完成后,会生成适合本系统的内核文件uImage。(3)Linux设备驱动简介在现代计算机体系结构中,操作系统虽然可以屏蔽用户直接操作硬件设备的复杂性,但是其也并不直接与硬件打交道,而是需要各种驱动程序来实现操作系统与硬件的通信,这就为用户开发提供了统一的操作方式,提高了系统的开发效率[25]。目前主流的各种硬件设备的驱动程序在Linux内核中都可以找到,这使Linux的应用范围大大提高。当内核有些功能需要修改或者出现需要增加新功能的时候,通常是会采用重新生成内核的方式,这样会使Linux的更新和使用效率较低很多,为克服这一重大缺点,可以将系统后期可能会用到,但是对系统自身运行来说不是很重要的代码选择在内核外编译,需要时再进行加载,这样编译出的文件称为模块文件,这种方式即为可加载的模块化设计机制[25]。这里的内核模块可以看做是完成某种功能的函数集合,只-16- 不过它已经被编译好,但是没有进行链接而已。(4)USB摄像头驱动移植本系统需要加载UVC摄像头驱动模块才能保证USB摄像头正常运行,首先需要进行摄像头驱动的编译,如图2.15所示,编译摄像头驱动模块的命令及结果。图2.15UVC无驱摄像头模块的编译结果上述摄像头驱动加载到开发板Linux系统后,摄像头在开发板上才能正常工作,如图2.16所示,在嵌入式Linux系统上加载摄像头驱动及插入摄像头的显示结果。图2.16开发板上摄像头的加载结果2.3.4根文件系统的制作文件系统(FILESYSTEM)是嵌入式Linux系统创建过程的重要组成部分,因此选择合适的工具来制作根文件系统十分重要。BusyBox作为嵌入式Linux系统最常用制作根文件系统的工具,其不仅包含Linux常用的、功能比较复杂的命令、程序,而且它能保证在功能十分强大、运行效率很高的同时占用很小的存储容量,这非常适合资源十分紧缺的嵌入式系统。-17- 图2.17BusyBox根目录下的Makefile修改结果本系统就是利用busybox工具制作文件系统,选择的版本是1.19.2。配置编译busybox的主要过程为:首先解压缩并进入busybox目录,然后修改busybox根目录下的编译文件,如图2.17所示,设置为进行交叉编译。图2.18BusyBox配置界面最后进行配置编译,在busybox根目录下,一般先进行默认配置,然后如图2.18所示根据系统需要使用界面进行配置。图2.19BusyBox编译命令-18- 上述配置完成后,会生成.config配置文件。然后输入命令进行交叉编译,如图2.19所示。最后运行安装命令,安装完成后会生成_install目录,里面包含构建根文件系统所需要的目录和文件。下面进行根文件系统的构建。首先,创建rootfs目录,并将上述_install目录下的文件复制到该目录下,然后创建根文件系统所需要的其他子目录;其次,给各个子目录复制或者增加相应的文件,例如:将busybox源码目录下etc中的内容复制到根文件系统中的相同目录下,其中包括:fstab、init.d、inittab、profile,还需要根据开发板的实际情况进行适当的修改。对其他如dev、lib等子目录也需要根据嵌入式的实际情况进行增加或者修改即可;最后,选择适合的文件系统类型进行镜像制作。本系统选择使用开发套件自带配置好的文件系统目录,又由于本系统是选择应用SD卡启动,采用直接将文件系统解压后复制到SD卡上的方式启动,所以没有选择制作文件系统的工具来制作镜像。本系统利用SD卡启动的过程为:首先,将SD卡格式化为FAT32格式的第一分区和EXT3格式的第二个分区。其次,在Windows上将上述的MLO、u-boot.bin、uImage复制放在SD卡的第一个分区中。再次,在Linux系统下将根文件系统解压到SD卡的第二分区。最后,将SD卡放入到开发板的插槽,按住板子上面的BOOT按键,给目标板上电来启动系统。如图2.20所示,开发板启动后的根文件系统目录。图2.20开发板根文件系统2.4本章小结本章首先针对系统总体的设计需求,确定了系统的总体设计方案。然后通过分析确定选择ARMLinux作为本系统的软硬件平台,并对系统中应用到的嵌入式系统硬件、软件和系统外围设备进行了简要分析介绍。之后对系统中应用的几个开源库及系统的软件总体开发流程进行了概述。最后主要对本研究中嵌入式Linux应用开发环境的搭建过程进行了详细的介绍。-19- -20- 第三章植物生长状态视频采集及传输系统的开发研究为实现远程对植物生长状况的视频监控,监控系统软件的总体方案设计分为两大部分:服务端和客户端。客户端的功能是由OMAP3530开发板实现,主要完成网络连接的建立以及视频数据的采集、显示、压缩编码、发送等功能。服务端就是上位机,由电脑来实现,主要完成视频图像数据的接收、解码和显示等功能。具体实现过程为:系统客户端应用V4L2提供的API接口从USB摄像头采集视频数据并在LCD上显示,视频数据经过x264压缩编码后进行网络传输,远程服务端接收到视频数据后,使用FFmpeg解码,最后再应用Qt进行显示。3.1基于V4L2视频采集模块的研究3.1.1V4L2应用编程接口用户若在Linux操作系统上实现视频采集,则需要应用Linux内核提供给用户空间的应用编程接口,V4L2是Linux内核为用户应用开发提供的编程接口同时也是为视频设备提供驱动程序的视频采集接口框架,也就是Linux内核为视频采集提供的API[26]。在Linux系统中,当视频设备驱动移植加载成功后,视频设备文件通常为/dev/videoX(X为设备编号,是从0开始的正整数),应用程序可以像对普通文件操作一样通过操作该视频文件实现对视频设备的控制[27]。在对摄像头控制方面,通过ioctl函数调用不同的宏定义来实现对摄像头的操作。在Linux系统中,视频的采集控制和视频参数的设定通过V4L2接口就可以实现,用户只需要根据设备和应用开发的实际情况配置相关参数即可,这些都得益于V4L2提供了丰富的数据结构和宏控制命令。下面对V4L2支持的几个主要的数据结构[26,27]进行介绍。v4l2_requestbuffers;向设备申请缓冲区,里面包含缓冲区内缓冲帧的数目和格式等。v4l2_capability;查询设备属性,比如驱动及设备名字,是否属于视频输入设备等。v4l2_format;对于宽度、高度、采样类型等帧格式用该结构来设置。v4l2_buffer;为驱动中具体的一帧图像缓冲。-21- 3.1.2V4L2视频采集及控制流程本系统采用USB摄像头作为图像输入设备,然后应用V4L2API,通过调用ioctl函数实现对USB摄像头的读写和控制,以达到采集视频的目的。在Linux操作系统中,用户空间对内核空间视频数据的读取,通常有内存映射和直接读取两种方式可以实现。由于本系统应用程序是对大量的视频数据进行读取,直接读取方式执行效率会非常低,所以选择应用内存映射方式实现对视频数据的读取。应用V4L2API和内存映射方式采集视频图像的主要流程如图3.1所示:图3.1图像采集流程下面介绍视频采集的具体工作流程[28]:(1)打开设备当Linux操作系统连接上视频输入设备后,会在/dev下自动生成设备文件video0(或者为video和其它正整数)。应用open()函数以读写的方式打开视频设备并用if语句判断打开是否成功,若成功则返回对应的文件描述符id。(2)获取设备信息通过调用ioctl()函数,使用VIDIOC_QUERYCAP宏命令获得当前视频设备信息。具体操作如下所示:structv4l2_capabilitycaps;ioctl(id,VIDIOC_QUERYCAP,&caps);然后通过得到的设备信息(caps.capabilities)对是否为视频采集设备(V4L2_CAP_VIDEO_CAPTURE)和是否支持视频流(V4L2_CAP_STREAMING)进行判断。(3)配置设备图像采集参数在开始进行图像采集前,需要对图像来源、格式和大小等相关的参数进行设置。进行相关图像采集参数设置涉及到v4l2_format结构体,首先通过参数V4L2_BUF_TYPE_VIDEO_CAPTURE配置图像来源为摄像头捕获的图像,然后对图像的高度和-22- 宽度进行设置,之后通过参数V4L2_PIX_FMT_YUYV设置图像格式为YUYV,最后通过ioctl(id,VIDIOC_S_FMT,&fmt)实现图像采集参数的设定。(4)配置内存映射通过应用mmap()函数实现内存映射,可以选择申请多个缓冲区,这样可以加快数据进出队列的速度。首先应用v4l2_requestbuffers结构体申请三个缓冲区,然后通过参数V4L2_MEMORY_MMAP设置采用内存映射的方式取得视频数据,之后通过ioctl(id,VIDIOC_REQBUFS,&bufs)向设备申请缓冲区,最后对之前申请的三个缓冲区中的每个缓冲区进行内存映射设置。下面对本研究应用到的mmap()函数参数进行说明:mmap(0,//0表示由系统自动确定映射区的起始地址buf.length,//该参数表示申请的每一个缓冲区的长度PROT_READ|PROT_WRITE,//表示对映射区可读同时可写MAP_SHARED,//表示内存与文件内容同步id,//id为设备文件描述符buf.m.offset);(5)开始视频采集在前期做好设备初始化和图像参数配置后,通过调用VIDIOC_STREAMON开始视频图像的采集。采集的多个帧缓冲数据采用先进先出的方式进行排序,当需要获取视频缓冲数据时,调用VIDIOC_DQBUF参数,将取得缓冲队列中最前面采集到的一帧视频图像缓冲数据,同时继续采集一帧新的视频数据放到队列尾部。(6)停止视频采集通过ioctl()函数调用VIDIOC_STREAMOFF参数来实现对视频图像采集的终止,同时需要用if判断是否终止成功。(7)取消数据的内存映射并关闭输入设备分别应用munmap()函数和close()函数来取消内存映射并关闭视频设备。munmap(bufs[i].start,bufs[i].length);close(id);3.2视频编解码模块的研究3.2.1ffmpeg与x264的移植在移植FFmpeg之前,首先要交叉编译好x264,然后再交叉编译FFmpeg,从而增加FFmpeg对x264的支持。由于视频程序运行时是需要libz.so库的支持,但本研-23- 究开发板系统中没有该库,所以需要对该库进行移植。(1)首先进行zlib的交叉编译。下载zlib源文件,选择的版本是1.2.5,解压,进入源文件根目录;配置zlib,命令如图3.2所示;修改编译文件,将gcc、ar、ranlib前面添加arm-none-linux-gnueabi-,修改结果如图3.3所示,然后保存;最后编译、安装即可。图3.2zlib配置命令图3.3zlib交叉编译Makefile修改结果(2)其次进行x264的交叉编译。图3.4x264配置命令-24- 下载最新的x264源代码,本系统应用的是20160317版本,解压,进入源代码根目录;配置x264,命令如图3.4所示;修改源文件根目录下的config.mak文件,将gcc、ar、ranlib、strip前面添加arm-none-linux-gnueabi-,修改结果如图3.5所示,然后保存;之后还要继续对common目录下的cpu.c文件进行修改,否则编译会出现错误,查找CPU_COUNT,将其CPU_COUNT开始的位置修改为如图3.6所示,然后保存;最后编译、安装即可。图3.5config.mak文件修改结果图3.6cpu.c文件修改结果(3)再次进行FFmpeg的交叉编译。下载ffmpeg源文件,选择的版本是0.10.16,解压,进入源文件根目录;然后进行配置,配置命令如图3.7所示;最后编译、安装即可,如图3.8所示交叉编译安装ffmpeg-0.10.16成功结果。-25- 图3.7ffmpeg配置命令图3.8交叉编译ffmpeg-0.10.16成功结果(4)最后将交叉编译好的库移植到开发板上即可,综上zlib、x264及FFmpeg交叉编译移植成功。3.2.2x264视频压缩编码流程H.264编码理论实现了在视频压缩比上比上一代视频压缩编码理论提高一倍和可以适应各种传输网络,即网络亲和力高的两大目标[22]。x264则是对H.264编码理论的实际应用,其降低了算法运算的复杂度。如图3.9所示,客户端应用x264实现视频编码的流程图。-26- 图3.9x264视频编码流程图下面对本系统中主要应用到的x264函数进行介绍,如图3.10所示。图3.10x264的主要视频编码函数3.2.3视频解码流程在服务端接收到视频压缩包后,本系统通过调用FFmpeg库中函数来进行解码,如图3.11所示具体的解码过程。-27- 图3.11视频解码流程图本系统中在视频解码过程中应用到的主要函数及功能说明如图3.12所示。图3.12视频解码主要函数3.3视频传输与接收模块的研究3.3.1TCP/IP协议概述TCP/IP是互联网通信协议,它是一个庞大的协议簇[29]。TCP/IP参考模型是实际中应用的网络互联模型,该应用模型是四层结构,与其对应的是ISO组织建议发展的OSI参考模型,OSI参考模型只是理论上的网络互联模型,该理论模型是七层结构。如图3.13所示两种参考模型之间的对应关系[29]。-28- 图3.13两种参考模型的对应关系3.3.2Socket网络编程应用Socket网络编程可以实现两个节点之间的网络通信。Socket接口可以看作是一种封装了通信细节的特殊的I/O,在Linux操作系统中,Socket为开发者提供类似文件描述符的操作方式,程序员只需专注应用程序开发而不必关心通信协议细节[30]。下面对应用Socket进行网络编程涉及到的主要的数据结构和函数进行简要介绍[29,30]:(1)sockaddr和sockaddr_in是两个用于保存套接字信息的很重要的数据结构,两者是等效的,可以相互转化,由于sockaddr_in数据结构操作更为方便,所以一般应用sockaddr_in进行网络编程。(2)socket()函数:可以对网络通信协议和套接字类型等信息进行设定,在连接建立后,可对相关数据结构进行初始化并保存相关信息。(3)bind()函数:主要用于绑定本地网络地址。(4)connect()函数:主要是在TCP协议中应用,用于网络中请求服务和提供服务的节点之间建立连接。(5)listen()函数:提供服务节点监听请求服务节点的连接请求。(6)accept()函数:提供服务节点接收请求服务节点的连接请求。(7)send()和recv()函数与sendto()和recvfrom()函数:用于数据的接收和发送。3.3.3视频传输设计方案的选择本系统视频传输设计主要有基于TCP协议或基于UDP协议两种视频传输方案,两种方案的网络通信流程图如图3.14和图3.15所示。-29- 图3.14基于TCP协议的客户端-服务器数据传输模型图3.15基于UDP协议的客户端-服务器数据传输模型通常视频图像的传输有以下几个特点:1)传输过程延时要小,以保证较高的实时性;2)传输效率要求比较高,以满足视频传输带宽和流量高的现实;3)视频传输过程中可以在一定程度上出现传输错误或数据丢失。因此,在进行视频传输协议选择时主要考虑如下几点[31]:-30- (1)可靠性TCP协议主要适用于传输过程不允许发生错误的场合,比如涉及到需要加密的内容,账号密码登陆等服务;而对可靠性要求不高的场合,如一般的视频、图片传输等,可以应用UDP协议。(2)实时性TCP传输的可靠性机制带来的问题是传输过程中延时性较高,效率也比UDP协议低很多,因此对于实时性要求较高的应用场合,使用UDP协议进行传输可以提高效率和实时性。(3)错误率TCP协议采用各种机制来减少发生错误的概率,以此来提高自身的可靠性。因此,在网络条件不好的情况下选择TCP协议可以提高可靠性;而对于在网络情况较好的情况下,选择UDP协议进行传输的错误率也不会太高。综上,本研究主要应用在网络干扰很小的环境中,网络状况良好,又由于视频数据的传输需要较高的实时性,故本系统选择UDP传输方式进行视频传输。3.4系统的测试结果开发板作为监控系统的客户端,首先通过USB摄像头采集视频图像并在LCD上显示,采集结果如图3.16所示。然后在客户端输入IP地址和端口号:192.168.1.111:8888,点击发送图像按钮将图像发送到服务器端,服务器端接收到图像后进行处理和显示,显示结果如图3.17所示。除了上述功能,本监控系统还可以对图像的保存、发送和传输进行简单的控制。图3.16监控系统客户端图像采集结果-31- 图3.17监控系统服务器端图像传输结果视频传输及显示的最终测试结果表明:视频图像的采集、传输过程比较流畅,画面较为清晰,测试结果符合基本要求。3.5本章小结为实现对植物生长状况的监控,本章主要对视频的采集、压缩和传输过程进行了研究:首先详细介绍了监控系统视频采集的实现过程;然后对视频数据的x264编码、解码的实现进行了介绍;之后对视频传输方案的选择进行了分析。最后展示了监控系统客户端和服务端的测试结果,并对测试结果进行了简要说明。-32- 第四章植物叶部病害图像处理及识别算法研究本研究考虑到植物叶部病害识别图像算法开发的复杂性及可移植性,选择基于OpenCV库来进行图像处理及识别算法的开发。不同农作物的叶部病害具有很多相似的特征,因此,可以针对不同植物的几种相似病害进行图像处理及识别的研究,本研究中具体的植物叶部病害识别算法开发过程如图4.1所示。本章是以葡萄的白粉病、霜霉病和黑腐病3种病害作为主要的研究对象实现对图像算法开发过程的研究。图4.1植物叶部病害识别算法开发过程4.1OpenCV库的编译与移植由于本研究中植物叶部病害算法的开发是基于OpenCV库开发的,所以首先介绍OpenCV库环境在Ubuntu和嵌入式平台上的搭建过程。4.1.1OpenCV在Ubuntu上的安装本系统应用的是OpenCV2.4.9版本,安装到Ubuntu12.04.5上的具体步骤如下:(1)OpenCV2.4.9版本需要在Ubuntu中安装CMake来产生Makefile文件进行编译,即输入命令:apt-getinstallcmake。本系统cmake使用的版本为2.8.7。(2)应用update更新软件索引来安装开发所需要的依赖项,如:pkg-configbuild-essentiallibx264-dev等。-33- (3)下载并解压OpenCV源文件压缩包,然后切换到源文件根目录,新建目录build,最后切换目录build进行配置,配置命令及过程如图4.2所示,在配置过程中,要观察主要的依赖软件是否都已配置到位,如FFMPEG、QT和V4L2等,显示为YES才表明已添加依赖库。图4.2安装OpenCV配置命令及过程(4)在目录build进行编译、安装,编译成功结果如图4.3所示。图4.3OpenCV编译成功(5)配置OpenCV。在如图4.4所示的目录中添加库文件路径/usr/local/lib,保存并退出,在终端输入ldconfig命令使库文件生效。图4.4配置OpenCV-34- (6)最后,设置环境变量。在/etc/profile中导入如图4.5所示命令。图4.5OpenCV环境变量关闭终端并重启Ubuntu。至此,OpenCV2.4.9在Ubuntu12.04.5下安装完成。4.1.2OpenCV移植到嵌入式平台上交叉编译并移植OpenCV2.4.9到开发板的具体步骤如下:(1)与在Ubuntu12.04上安装OpenCV2.4.9一样,需要CMake产生Makefile文件,但是交叉编译OpenCV2.4.9更适合应用CMake的图形界面形式。因此需要通过安装命令cmake-qt-gui来在Ubuntu中安装CMake-GUI。(2)下载并解压OpenCV压缩源码包,切换到解压后的源码目录,然后新建目录build-arm并将该目录开放权限,之后切换到该目录。(3)运行cmake图形界面来进行OpenCV相关配置。选择源代码目录和编译目录,点击配置,然后选择项目生成器为UnixMakefiles并选择指定交叉编译选项,点击下一步进行操作系统和编译器的选择,最后点击Finish进行配置。本系统的操作系统和编译器设置结果如图4.6所示。图4.6操作系统和编译器的设置结果(4)进行OpenCV配置,点击Configure,直到CMake观察不到红色,本系统配置过程如下:(a)将图4.7中标记区域的各个配置选项设置为图中对应的值。-35- (b)加上BUILD_PNG,BUILD_JPEG和WITH_QT(QT_QMAKE_EXECUTABLE设为/usr/local/QtEmbedded-4.8.6/bin/qmake)。注:之前Qt/E交叉编译已经完成。(c)去掉WITH_TIFF,WITH_LIBV4L,WITH_1394,WITH_OPENEXR,BUILD_OPENEXR和BUILD_EXAMPLES。配置完成后,点击Generate生成Makefile,如图4.7所示配置完成结果。图4.7OpenCV交叉编译前配置完成结果(5)切换到build-arm目录,修改CMakeCache.txt文件,修改内容及结果如图4.8所示,然后退出保存。图4.8CMakeCache.txt文件修改结果(6)将交叉编译好的Qt库复制到交叉编译器的库中,否则交叉编译OpenCV时会找不到Qt库。最后进入build-arm目录,编译,安装即可,交叉编译成功结果如图4.9所示。-36- 图4.9OpenCV交叉编译完成结果(7)将交叉编译好的库复制到开发板上,综上OpenCV库交叉编译移植成功。4.2叶部病害图像的预处理本研究主要对图像的去噪、灰度处理等预处理过程进行介绍。图像预处理结果以对不同葡萄病害原始图像的预处理结果进行说明。4.2.1图像去噪处理在采集、处理图像的过程中由于各种原因易对图像本身造成各种噪声干扰,从而影响图像本身质量,进而影响人眼和机器的分析判断处理,所以需要对图像进行去噪处理。下面主要对空间域去噪常用的均值滤波和中值滤波进行介绍和比较。均值滤波[32]是一种在局部空间域处理的线性滤波技术。即:用模板区域内的所有像素平均值来替换该区域内各点的像素值,公式为:1g(x,y)=f(i,j)(4.1)M(i,j)⊂S式中,M为模板区域S中所有像素点的个数。中值滤波[33]是一种基于统计排序的非线性滤波技术。中值滤波对于一些随机噪声的降噪能力比较理想并且具有与线性平滑滤波器相比带来的图像模糊效应较低的优点[33]。中值滤波的滑动窗口可以设为奇数个点或者偶数个点,实际应用过程通常应用奇数个点的窗口。公式为:g(x,y)=Med{f(x−k,y−l),(k,l∈W)}(4.2)式中,W为设定的窗口大小,即模板大小。实际应用过程中一般选用3×3或5×5-37- 的模板进行处理。OpenCV库中的cvSmooth()函数可以实现平滑滤波,通过设置合适的参数就可以对图像进行不同模板的均值滤波和中值滤波。考虑到图像采集过程中灰尘、水雾等因素可能会对采集到的图像产生噪声,影响对病斑的识别效果。如图4.10所示,选择含有尘土斑点和雾气等噪声干扰的原始图像,应用不同模板对噪声干扰图像进行均值滤波和中值滤波的结果。由图4.10可以看出中值滤波的效果要优于均值滤波,5×5模板相对于3×3模板滤波,虽然对噪声抑制效果增强,但同时带来图像模糊度和运算量的逐渐增大。因此,本系统采用3×3模板的中值滤波对采集的图像进行滤波去噪处理。(a)原始图像(b)3×3均值滤波(c)5×5均值滤波(d)3×3中值滤波(e)5×5中值滤波图4.10均值滤波和中值滤波结果比较4.2.2图像灰度处理灰度图像[34]是指只含亮度信息并且一般将亮度值量化为0到255的图像,其中0为最黑,255为最白。由于通常采集到的图像都是彩色图像,所以需要经过处理变为灰度图像。对采集图像进行灰度化处理是为后面纹理特征提取做好准备。图像灰度化-38- 处理最常用的方法是加权平均法,因为它是对RGB模型中三通道的分量值进行加权平均得到相应的值,然后用该值作为处理后图像的灰度值,这种加权平均是考虑了人眼对三通道颜色的敏感程度和一些其它指标的,这样得到的灰度图像通常更为合理,因此本系统采用加权平均法对图像进行灰度处理。具体公式为:Gray(i,j)=0.299R(i,j)+0.587G(i,j)+0.114B(i,j)(4.3)如图4.11所示,应用OpenCV库中的cvCvtColor()函数采用加权平均法将彩色图像转换为灰度图像的处理结果。(a)彩色图像(b)灰度图像图4.11图像的灰度化处理4.2.3图像的二值化二值图像是在数字图像处理中经常被用到并且图像中所有像素点的灰度值只有0或者1(0表示黑,1表示白)两种可能的图像。将灰度图像转化为二值图像的过程称为图像的二值化。由于灰度值只有0或者1,所以对图像进行二值化可以去除大量的无用信息,减小存储空间,提高处理速度,并且可以使目标和背景分离,为后期目标特征的提取奠定基础。图像的二值化最关键的技术是前期图像的预处理和阈值的选择,这决定是否可以得到高质量的二值图像。前期图像的预处理需要根据具体图像和目标选择相应的方法进行处理,图像二值化最主要的还是阈值的选择。经典的图像二值化方法有[35]:全局阈值法,局部阈值法和自适应阈值法。全局阈值法通常适合有明显双峰直方图特征的图像,对于一些光照不均匀的复杂图像该方法效果不够理想。常见的全局阈值法有迭代阈值法,最大类间方差分割法(OTSU)[36]等。针对全局阈值法的缺陷,提出了能够适应更复杂图像的局部阈值法,但是局部阈值法存在易出现伪影,忽略边缘特征的缺点。自适应阈值法是一种根据图像背景自适应变化能够比较精确地进行二值化处理的方法,但是该方法易出现把背景错分为目标的现象,从而使分割后的图像存在许多假目标。因此,在进行图像二值化方法选择时,需要根据具体的实际问题进行方法的选择。下面对应用最大类间方差法实现图像的二值化处理进行简要介绍,该方法具有计-39- 算简单,处理过程快,不需要给定特殊的阈值参数就能得到较好的处理结果等优点。OTSU法基本计算过程如下[36,37]:设定图像的灰度范围为[0,L-1],像素总数为N,灰度级i的像素数为n,各个灰i度值出现的概率为p,则iL−1N=ni(i=0,1,2,⋅⋅⋅,L−1)(4.4)i=0np=i(4.5)iNL−1由公式4.5可以看出,各灰度值出现概率的总和应该为1,即:P=1。ii=0当设定阈值为T时,把图像分为[0,T-1]和[T,L-1]两个范围的像素灰度值,分别设为C0和C1两类,则整幅图像区域,C0和C1的灰度平均值分别为:L−1E=iPi(4.6)i=01T−1E=iP(4.7)0iPi=001L−1E=iP(4.8)1iPi=T1T−1L−1其中,P=P和P=P=1−P分别为区域C0和C1概率。0i1i0i=0i=T综上,可以推出整幅图像灰度平均值及区域C0和C1总方差分别为:E=pE+PE(4.9)0011222D=P(E−E)+P(E−E)=PP(E−E)(4.10)00110101从[0,L-1]范围内随意设定T的值,当D变为最大值时,所设定的T值就是最佳阈值。OpenCV库中的cvThreshold()函数通过将参数设定为CV_THRESH_OTSU可以实现图像OTSU法二值化,应用OTSU法进行图像的二值化结果如图4.12所示。(a)彩色图像(b)二值图像图4.12图像的二值化处理-40- 4.3叶部病害图像的病斑分割研究图像分割是指将图像中感兴趣的目标区域划分出来,划分出来的这些区域会满足某种相似性准则[38]。图像分割的效果对后续图像特征提取及图像识别来说十分重要。由于不存在通用的图像分割方法,所以通常图像分割都是根据具体研究问题来选择合适的算法进行图像的分割。本研究主要是针对植物特定叶部病害的彩色图像进行分析研究,因为葡萄的三种叶部病害特征比较明显,所以主要从选择不同种类的颜色空间模型及不同类型的图像分割算法两方面进行研究。4.3.1颜色空间模型及图像分割方法概述彩色图像可以通过不同的标准进行定量的描述,这就出现了不同的颜色空间模型,常见的有RGB、HIS、HSV和YUV等[39]。在数字图像处理中,目前运用最广的颜色模型是RGB模型(红、绿、蓝模型),其他的模型:HIS表示色调、饱和度、强度模型,HSV表示色调、饱和度、明度模型,YUV模型中Y表示亮度,U和V表示色差,该模型的优势就是它的亮度Y和色差U、V是分离的[39]。R分量G分量B分量(a)RGB颜色空间模型H分量S分量V分量(b)HSV颜色空间模型Y分量U分量V分量(c)YUV颜色空间模型图4.13颜色空间模型三分量图像-41- 首先提取不同颜色空间模型分量,然后对各个分量进行图像分割,找出适合病斑提取的分量图像。OpenCV库中的cvCvtColor()函数可以实现颜色空间的转换,再应用cvSplit()函数实现颜色空间模型各个分量的分割,如图4.13所示几种常见模型的各分量图。图像分割的方法和种类很多,主要分为图像灰度值不连续或相似两类[32],如图4.14所示。一般分割算法的选择需要根据具体的应用情况来决定该用何种算法进行图像分割,是不存在通用的图像分割算法的。图4.14图像分割算法的分类4.3.2图像分割方法的选择研究本文研究的主要是选择阈值分割的方法对葡萄样本病斑图像进行分割处理。阈值分割与预处理中介绍的图像二值化过程基本一样,即选择一个合适的阈值,然后将图像中各点的灰度值与该值进行比较,最终把图像划分为两类:目标和背景。由于选择的是葡萄叶部病害作为研究对象,其病斑颜色相对正常叶片颜色具有表现突出、分明等特点,这样易出现合适的阈值可以将病斑和背景分开,所以应用阈值分割从理论上是适用于本研究图像分割特点的。对图4.13中各颜色空间模型中的分量分别应用全局阈值法中的OTSU阈值法和迭代阈值法以及自适应阈值法进行图像二值化分割试验,列出分割效果比较好的二值化结果,如图4.15所示,全局阈值法中的OTSU阈值法和迭代阈值法对图像的B分量进行图像二值化的效果最好,符合病斑分割要求;从表面上看自适应阈值法对几种分量的分割效果差别不大,不太符合病斑分割的要求。OTSU阈值法和迭代阈值法对B分量的分割效果差别不大,但是由于OTSU阈值法不仅可以弥补迭代阈值法的阈值选取不够准确的缺陷,而且该法还具有计算简单,处理过程快,不需要给定特殊的阈值参数就能得到较好结果等优点,所以优先选用OTSU阈值法作为图像阈值分割方-42- 法。然后通过对葡萄三种病害图像样本应用OTSU阈值法对图像的B分量进行二值化分割试验,结果显示应用该方法进行病斑分割的效果很好,符合要求的样本数量也很高,因此本研究选用OTSU阈值法作为病斑图像分割法。R分量G分量B分量HSV中V分量Y分量(a)OTSU阈值法(b)迭代阈值法(c)自适应阈值法图4.15不同阈值法对颜色空间模型各分量二值化结果综上可以得出:在颜色空间模型分量选择上,通过对RGB模型中R、G、B三分量进行分离,优先选用B分量进行图像分割。分割方法上应用OTSU阈值法实现对葡萄叶部病斑的二值化分割。4.3.3病害图像分割方法及结果分析经过大量的试验,得出对葡萄的白粉病、霜霉病和黑腐病3种病害图像进行分割处理的算法,如图4.16所示,具体的分割流程图。图4.16本研究采用的分割算法流程图首先提取采集的彩色样本图像RGB模型的B分量,其次通过OTSU阈值分割的-43- 方法实现对图像病斑的二值化分割,再次将二值化图像进行数学形态学处理,包括开运算、腐蚀、膨胀等操作[40],最后在与原样本图像进行与操作,还原病斑的彩色图像。每一步的处理结果如图4.17所示。霜霉病黑腐病白粉病(a)原始图像(b)B分量图像(c)二值化图像(d)形态学处理后图像(e)病斑彩色图像图4.17图像分割处理过程及结果-44- 从图4.17可以看出整个图像分割的处理过程,通过分离原始图像的B分量进行OTSU法阈值分割,可以很好的对三种病害病斑进行提取,然后通过数学形态学处理二值化图像,可以去除图像中的一些毛刺和孤立的小点,并且可以使病斑区域外围部分变得光滑[32],最后通过与原图像进行与操作,得到图像的原病斑图像。如图4.18所示葡萄叶部三种病害彩色病斑分割结果举例。(a)白粉病病斑分割图(b)黑腐病病斑分割图(c)霜霉病病斑分割图图4.18病斑彩色图像分割结果-45- 4.4叶部病斑特征提取由于计算机只能识别二进制数0和1,对图像本身并不能识别,所以需要从图像中提取出计算机可以识别的“非图像”表示或描述,这一过程就是特征提取,而这种“非图像”的表示就是特征[41]。一幅图像只有提取出自身所特有的特征,后期才能与其他图像进行区别。这些特征一般分为可以直观感受的自然特征(颜色、纹理等)和需要变换或处理才能得到的特征(矩阵、直方图等)。图像的识别过程实际上就是一个分类的过程,因此需要找出同类图像差别小,但是与其他不同类别的图像比较容易区别开的特征,即最具有区别能力的特征。在针对具体问题进行特征提取时,不仅应当尽量寻找最具有区别能力的特征,还应该考虑该特征提取的难易程度和对噪声、不相关转换的敏感程度。本研究中葡萄叶部的三种病害和正常叶片在颜色、纹理和形状上都具有各自的特点,而且特征也比较容易提取,因此本文选择从上述三个方面提取葡萄叶部病害的特征数据,为后期识别做好准备。4.4.1颜色特征提取由于植物叶部病斑颜色与正常叶片颜色的区分度很大,并且颜色对图像的缩放、旋转等变化不敏感,特征提取也很简便,所以选择颜色作为病斑特征进行提取。颜色矩作为描述颜色特征的常用方法之一,具有简单而有效的优点,其主要思想是用矩来描述图像中的各种颜色分布[42]。由于低阶矩就可以描述图像颜色的主要信息分布,所以本研究通过提取葡萄叶部病害图像RGB颜色空间的一阶矩和二阶矩作为颜色特征,可分别表示所提取图像特征区域的平均颜色和标准方差,其公式分别为[43]:1MNμ=(I(x,y))(4.11)M×Nx==11yMN121/2σ=(I(x,y)−μ)(4.12)M×Nx==11y式中,μ、σ分别为一阶矩、二阶矩,I(x,y)为(x,y)处的像素值。一幅图像包含RGB三个分量,本研究是将每个分量都提取一阶、二阶颜色矩,这样就可以获得6个颜色特征参数。颜色特征值的提取过程为:(1)将分割后的病斑RGB彩色图像提取出R、G、B三分量图像。(2)按颜色特征描述公式提取RGB三通道分量的一阶矩和二阶矩。-46- OpenCV库中的cvSplit()可以将RGB图像提取出R、G、B三通道图像,再通过cvAvgSdv()函数可以提取每个通道的一阶、二阶颜色矩。然后计算每种病害所有样本各个颜色特征的平均值,如表4.1所示,葡萄叶部病害的颜色特征平均值。表4.1葡萄病害样本的颜色特征平均值病害名称R一阶矩R二阶矩G一阶矩G二阶矩B一阶矩B二阶矩白粉病34.66845053.00281034.56281057.92693027.59691047.844990黑腐病5.92905825.4677107.04148730.0130709.87154740.869580霜霉病17.32730033.75778032.82227063.86907029.30082057.661120正常83.43418026.853580151.97390020.94782090.81128021.876200从表4.1中的颜色特征平均值可以看出,四种样本特征区分度比较大的分别是R一阶矩、G二阶矩和B二阶矩,剩下的几种特征也有一定的区分度。因此,可以利用颜色特征对四种样本进行分类识别。下面以区分度很大的R一阶矩特征为例,将提取到的样本特征数据导入Excel表格中,得出R一阶矩特征的曲线图,如图4.19所示。从图中可以看出,不同种类的样本特征出现了部分重叠的现象,并且样本特征值会有很大或者很小的情况出现,这些都会影响每种特征的平均值情况,因此,只是通过特征平均值来进行特征的选取是不太适合的,并且直接利用样本颜色特征数据是无法对四种样本进行区分的,需要应用专门地模式识别方法来进行样本特征数据的识别。图4.19R一阶矩特征分布曲线图4.4.2形状特征提取一般对形状特征的提取是指对旋转、位移和尺度变换不敏感的高层次的视觉特征的提取,其主要表现对象的几何形状[44]。常见的形状特征包括病斑数目(C),统计病害叶片的病斑数量;面积(A),计算病斑区域内的像素总和;周长(L),主要是通过病斑部位边界线上像素间距离之和来描述;长轴(W)、短轴(H)比:主要是通过病斑区域-47- 最小外接矩的长、短轴比来描述[45]。由于上述形状特征对旋转、平移和缩放等方面的变化比较敏感,这样就不能很好的表达病斑的形状特征,因此可以根据上述特征得出以下5个可以很好描述形状特征的参数[46]。(1)矩形度:可以用来反映目标对其最小外接矩的充斥程度。公式为:R=A/(H×W)(4.13)1(2)圆形度:可以用来描述目标区域的粗糙程度。公式为:2R=4πA/L(4.14)2(3)形状复杂度:可以用来描述区域的离散程度。公式为:2R=L/A(4.15)3(4)内接圆半径:病斑区域的面积与其周长相比的2倍。公式为:R=2A/L(4.16)4(5)伸长度:可以用来描述目标区域的紧凑性。公式为:R=W/H(4.17)5以上5个形状特征可以准确地表达病斑的形态、粗糙程度和紧凑度等信息。这样就可以得到5个形状特征参数。形状特征值的提取过程为:(1)将原始RGB彩色图像进行图像分割提取病斑的二值化图像。(2)按形状特征描述公式对形状特征进行提取。OpenCV库中的cvFindContours()函数可以从病害的二值图像中查找轮廓以此来提取形状特征。再通过cvContourArea()、cvArcLength()和cvMinAreaRect2()等函数得到病斑轮廓的面积、长度以及外接矩形的长度和宽度。然后利用上述5个公式进行形状特征值的计算。最后计算每种病害所有样本各个形状特征的平均值,如表4.2所示,提取出来的葡萄叶部病害的形状特征平均值。表4.2葡萄病害样本的形状特征平均值病害名称矩形度圆形度形状复杂度内接圆半径伸长度白粉病0.5678970.44108342.2047105.0492671.699407黑腐病0.6776030.62879722.0568206.8655491.525646霜霉病0.5871990.43970834.0641908.0626861.712566正常0.5883120.40088465.8597905.3144991.815936从表4.2中的形状特征平均值可以看出,四种样本特征区分度比较大的分别是形-48- 状复杂度和内接圆半径。下面以形状复杂度特征为例,将提取到的样本特征数据导入Excel表格中,得出形状复杂度特征的曲线图,如图4.20所示。从图中可以看出,不同特征点的重叠还是比较多的,所以需要多特征组合来进行病斑的识别。图4.20形状复杂度特征分布曲线图4.4.3纹理特征提取纹理特征是图像描述中重要的视觉特征,虽然其描述起来比较困难,但是纹理特征是识别图像经常需要提取的特征之一。目前对于纹理特征的描述主要有统计、结构、信号处理和模型4种方法。利用灰度共生矩阵提取图像的纹理特征是在统计方法中应用比较广泛并且已经比较成熟的方法之一[47]。灰度共生矩阵(GLCM)是一种能精确地表达纹理灰度空间相关性的理论,该理论是在1973年由Haralick[48]等人提出的。灰度共生矩阵P(i,j|d,θ)(i,j=0,1,2...L−1)表示两个像素(灰度值分别为i和j)出现的次数或概率(归一化)[48],其中这两个像素具有d=(Dx,Dy)的空间位置关系。式中L为灰度级,θ为GLCM的生成方向,如图4.21所示。图4.21灰度共生矩阵的像素对利用灰度共生矩阵P(i,j|d,θ)可以对纹理特征用以下4个参数来描述[46]。(1)能量(ASM):是对图像灰度分布均匀程度和纹理粗细程度的一种度量。计算-49- 公式为:2ASM=P(i,j|d,θ)(4.18)ij(2)熵(ENT):主要可以反映出图像纹理的非均匀程度或复杂度,其是对图像中纹理信息量的一种衡量。计算公式为:ENT=−P(i,j|d,θ)log2P(i,j|d,θ)(4.19)ij(3)对比度(CON):主要可以反映出图像的清晰效果,可以对图像纹理沟纹的深浅程度进行度量。计算公式为:2CON=(i−j)P(i,j|d,θ)(4.20)ij(4)相关性(COR):相关性度量可以反映出图像局部的相关程度。计算公式为:COR=((ij)P(i,j|d,θ)−μxμy)/σxσy(4.21)ij式中,μ、μ分别为行、列方向上纹理参数的均值,σ、σ分别为行、列方向xyxy上纹理参数的方差。因为灰度共生矩阵具有方向性,所以取不同的常见方向(0、45、90、135)的灰度共生矩阵,然后根据上述参数公式分别计算四个方向的纹理参数,最后通过计算各个参数的均值来作为纹理特征向量的各个分量值。为了减少矩阵的计算量,需要提前把普通的灰度图像由256级压缩为需要的级数[32],这样可以提高运算速度。本研究将提取后的病斑彩色图像变为灰度图像,然后将变换后灰度图像的灰度级压缩为64级进行特征提取,这样可得到4个纹理特征参数。纹理特征值的提取过程为:(1)将分割后病斑的彩色图像变为灰度图像。(2)将灰度图像的灰度级压缩为64级。(3)取四个常见方向(0、45、90、135)的灰度共生矩阵,按纹理特征描述公式对纹理特征进行提取。最后通过计算各个参数的均值来作为纹理特征向量的各分量值。计算每种病害所有样本各个纹理特征的平均值,如表4.3所示,葡萄叶部病害的纹理特征平均值。表4.3葡萄病害样本的纹理特征平均值病害名称熵能量对比度一致性白粉病0.9481960.49729043.1824900.770871黑腐病0.3192380.83691512.3881300.941370霜霉病0.7631960.58518231.3973800.850788正常2.1515890.0169207.9177020.496090从表4.3中的纹理特征平均值可以看出,四种样本特征区分度比较大的是对比度,-50- 剩下的三种特征也有一定的区分度。下面以一致性特征为例,将提取到的样本特征数据导入Excel表格中,得出一致性特征的曲线图,如图4.22所示。从图中可以看出,四条曲线的重叠处很少,但是三种病害特征值还是有很多重叠在一起。图4.22一致性特征分布曲线图4.5叶部病害的分类识别4.5.1图像识别概述模式识别(PatternRecognition)[49]对于计算机来说,就是通过计算机实现对事物的一种鉴别和分类过程,这也是对人类自身基本技能的代替或延伸。因此,所谓的图像识别就是通过计算机对图像进行分类的过程。如图4.23所示,典型的图像识别系统组成。图4.23图像识别系统组成模式识别方法基本上可以分为句法模式识别方法和统计模式识别方法两种[32]。对于常见的识别方法如:贝叶斯决策法、判别函数法、BP神经网络和支持向量机等都-51- 属于统计模式识别方法[50]。不过具体模式识别方法的选择主要是依据具体问题分析决定的。本研究是针对葡萄叶部病害进行研究,由于病斑样本的数量是有限的,属于小样本问题,又对比目前应用比较广泛的人工神经网络具有学习效率不高、容易陷入局部极小点问题等缺点[51],综合考虑选择应用SVM来对植物叶部病害图像进行识别。4.5.2支持向量机支持向量机(SVM)与其它识别方法相比很突出的优势是在统计样本量较少的情况下,也能获得良好的分类结果,这是由于SVM是以结构化风险最小化为原则,可以兼顾经验与期望风险的最小化[52]。SVM是从线性可分情况下的最优分类面发展而来的,SVM的分类过程就是寻找最优分类超平面的过程,该超平面不仅能够成功分开两类样本,而且具有最大分类间隔[32]。支持向量机分类包含线性可分情况下的SVM,非线性可分情况下的C-SVM及需要核函数映射情况下的SVM[32,53]。所谓线性可分是指用一个线性函数(二维空间的直线、三维空间的平面等)就可以将两类样本完全分开。非线性可分情况下的C-SVM是引入了可以调整的错误代价系数C,以此来寻找最佳分类超平面。由于线性分类器存在分类性能有限,对于非线性问题放宽约束条件易出现大量样本错分的缺点,所以出现了通过非线性映射将非线性问题映射为某个高维空间中的线性可分问题的改进[53]。这就是需要核函数映射的SVM,也是SVM应用最广泛的情况。SVM分类器决策函数及各个常用核函数公式如下[32,54]:决策函数公式为:**h(x)=sgn(ayK(x,x)+b)(4.22)iiiji∈SV线性核函数公式为:K(x,y)=x⋅y(4.23)多项式核函数公式为:dK(x,y)=(γ(x⋅y)+r),d=1,2,⋅⋅⋅,N(4.24)径向基(RBF)核函数公式为:2K(x,y)=exp(−γx−y)(4.25)Sigmoid核函数公式为:K(x,y)=tanh(γ(x⋅y)+r)(4.26)-52- 4.5.3工具选择及特征数据的归一化(1)实验工具选择应用SVM进行样本的分类识别、参数确定、分类过程及结果分析是一个复杂的过程,所以通过直接开发应用程序调用OpenCV库中SVM函数实现对多样本进行分类识别测试的工作量和复杂性非常的巨大,因此本研究选择直接应用已经很完善的LIBSVM开源软件包作为SVM分类识别的实验测试工具。开源软件包LIBSVM是由台湾大学林智仁博士等开发的,其不仅提供多种语言接口,支持Windows、Linux、Matlab等多平台使用,还设定了各种的默认参数,方便开发者按需求进行参数设定及应用[55]。最简单方便的是在官网下载的开源软件包中有编译好的程序,可以直接运行使用,按照软件的数据格式要求将提取到的样本特征数据进行写入,就可以实现对样本数据分类识别的测试。软件包中的svm.h和svm.cpp文件是最核心的SVM源程序文件,软件包中还有测试会用到的接口函数文件svm-predict.c,svm-scale.c和svm-train.c。正是这几个开发比较完善的接口函数可以节省大量的测试时间并降低了测试的复杂性。本研究使用的是LIBSVM2.9版本,在Ubuntu12.04.5上编译安装使用,编译安装完成后的目录,如图4.24所示,其中svm-scale程序可以对样本数据进行归一化,svm-train程序主要对训练样本进行训练,svm-predict程序是根据训练模型对测试样本进行结果预测,image文件夹中存放的是葡萄病害样本特征数据。图4.24Ubuntu12.04上编译安装LIBSVM后的目录需要说明的是:在利用libSVM研究测试出适合本研究葡萄叶部病害识别的核函数及参数后,病害识别应用程序的开发则是利用本研究中的图像样本特征数据,通过调用OpenCV库中SVM函数对需要判别的病害图像进行识别。因此,病害识别应用程序的图像处理与识别算法还是基于OpenCV库实现的。(2)样本特征数据的归一化在对样本特征数据进行分类识别测试前需要对其进行归一化,所谓的特征数据的归一化是将某一特征参数的各种取值映射到另一个指定的范围内。主要是消除某一特征参数中大的数据对较小的数据产生干扰,从而增加同一特征参量各个数据之间的可比性,这对于基于距离分类法的SVM尤为重要,特征数据的归一化可以提高SVM分类的效果[56]。-53- 本研究应用到的200幅葡萄图像样本,其中白粉病、黑腐病、霜霉病及正常图像各50幅,一部分来自葡萄果园的拍摄和处理,另一部分来自于互联网。处理过程为:先将全部图像样本提取到的特征数据按照libSVM的数据格式要求存储,其中白粉病、黑腐病、霜霉病和正常样本特征数据前的类别标识分别为+2,+1,-1,-2。如图4.25所示,截取部分样本的原始特征数据。然后利用编译好的svm-scale程序对样本原始特征数据进行归一化,使用默认的归一化范围,即:[-1,1]。如图4.26所示,截取部分归一化后的样本特征数据。图4.25样本的原始特征数据图4.26归一化后的样本特征数据4.5.4分类过程及结果分析(1)葡萄叶部病害分类识别过程由于libSVM工具包中提供的接口函数直接可以对多类问题进行分类,所以直接可以将正常及三种病害归一化后的样本数据分别采用4种不同的核函数进行分类识别测试,最终根据测试结果来确定哪种核函数及参数最适合葡萄叶部病害的识别。-54- 具体步骤为:(a)从归一化样本数据中随机选取其中的60%(共120幅图像数据,其中正常及三种病害各30幅)作为训练集,40%(共80幅图像数据,其中正常及三种病害各20幅)作为测试集。(b)利用训练集样本数据选用不同的核函数及对应参数进行分类器的训练,训练出相应的分类器。(c)将与(b)中对应的测试集样本数据采用(b)中训练好的分类器进行分类测试,得出一个识别结果。(d)重复步骤(a)~(c)三次,得出三个测试结果。(e)对于每个核函数的训练、测试过程,它的三次训练集和测试集是随机选择的,这样可以得到三次不同的测试结果,求出每个核函数三次测试结果的平均值。最后经过多次反复测试确定每个核函数接近最优识别率的参数。(2)测试识别结果及分析首先应用4个核函数分别对纹理、颜色和形状三方面特征数据按(1)中步骤进行识别测试,然后再按(1)中步骤对纹理、颜色和形状特征组合数据进行识别测试,最后对测试结果进行分析说明。(a)基于葡萄纹理特征的SVM测试结果前面章节叶部病斑提取过程共提取了4个纹理特征值:熵、能量、对比度和一致性,如表4.4所示,根据(1)中步骤对这四个特征进行分类识别测试结果。表4.4纹理特征不同核函数识别结果识别准确率(%)核函数及线性多项式径向基Sigmoid参数C=10C=10,d=3,r=0,γ=0.25C=1,γ=0.25C=1,r=0,γ=0.25特征测试平均测试平均测试平均测试平均61.2571.2567.5067.50纹理71.2580.0078.7567.5068.3373.7572.5070.0072.5070.0071.2575.00从表4.4可以看出,多项式核函数对纹理特征的平均识别准确率最高,可以达到73.75%,径向基核函数的平均识别准确率只比多项式核函数低一点,但葡萄纹理特征的总体平均识别准确率不高,不太适合只应用纹理特征对葡萄叶部的三种病害进行识别。(b)基于葡萄颜色特征的SVM测试结果前面章节叶部病斑提取过程共提取了6个颜色特征值:R一阶矩、R二阶矩、G一阶矩、G二阶矩、B一阶矩和B二阶矩。如表4.5所示,根据(1)中步骤对这六个-55- 特征进行分类识别测试结果。表4.5颜色特征不同核函数识别结果识别准确率(%)核函数及线性多项式径向基Sigmoid参数C=10C=61,d=3,r=0,γ=0.21C=59,γ=0.4C=50,r=0,γ=0.1特征测试平均测试平均测试平均测试平均76.2568.7580.0083.75颜色82.5075.0088.7577.5081.2575.8385.4282.0885.0083.7587.5085.00从表4.5可以看出,径向基核函数对颜色特征的平均识别准确率最高,可以达到85.42%,线性核函数和Sigmoid核函数的平均识别准确率都达到了80%以上。从总体上看,葡萄颜色特征的平均识别准确率比较高,并且要高于葡萄纹理特征的平均识别准确率。(c)基于葡萄形状特征的SVM测试结果前面章节叶部病斑提取过程共提取了5个形状特征值:矩形度、圆形度、形状复杂度、内接圆半径和伸长度。如表4.6所示,根据(1)中步骤对这五个特征进行分类识别测试结果。表4.6形状特征不同核函数识别结果识别准确率(%)核函数及线性多项式径向基Sigmoid参数C=10C=10,d=3,r=0,γ=3.4C=63,γ=0.3C=54,r=0,γ=0.25特征测试平均测试平均测试平均测试平均85.0087.5085.0087.50形状85.0085.0088.7572.5084.1786.2587.9277.0882.5086.2590.0071.25从表4.6可以看出,径向基核函数对形状特征的平均识别准确率最高,可以达到87.92%,线性核函数和多项式核函数的平均识别准确率都达到了84%以上。从总体上看,葡萄形状特征的平均识别准确率在葡萄三方面特征平均识别准确率中是最高的。(d)基于葡萄纹理、颜色和形状特征的SVM测试结果本次研究的是对上述葡萄纹理、颜色和形状三方面特征的15种特征值根据(1)中步骤进行分类识别测试,测试结果如表4.7所示。从表4.7可以看出,径向基核函数对葡萄纹理、颜色和形状三方面特征的平均识别准确率最高,此时惩罚参数C为64,RBF参数γ=1,最高平均识别准确率可以达到95%。还可以看出,选择多项式核函数进行识别的结果最差,Sigmoid核函数的平均-56- 识别准确率也达到了91%以上。从总体上看,综合利用葡萄三方面特征确实可以大幅提高葡萄叶部病害的平均识别准确率。表4.7纹理、颜色和形状特征不同核函数识别结果识别准确率(%)核函数及线性多项式径向基Sigmoid参数C=10C=48,d=3,r=0,γ=0.07C=64,γ=1C=53,r=0,γ=0.1特征测试平均测试平均测试平均测试平均纹理、72.5085.0095.0085.00颜色87.5062.5097.5093.7581.2573.7595.0091.25和形状83.7573.7592.5095.00根据表4.7中的结果,径向基核函数对葡萄纹理、颜色和形状三方面特征的平均识别准确率最高,可以达到95%,这其中的三次测试试验对应四类样本的总体识别个数如表4.8所示。从表4.8可以看出,对白粉病的识别准确性差一些。表4.8最佳测试识别结果病害名称识别正确数目(总数)准确率(%)白粉病55(60)91.67%黑腐病58(60)96.67%霜霉病57(60)95.00%正常58(60)96.67%合计228(240)95.00%综上可以得出,选取径向基作为SVM的核函数,令惩罚参数C为64,RBF参数γ=1,并以葡萄纹理、颜色和形状三方面组合特征数据进行葡萄叶部病害识别的效果最好。4.6本章小结本章首先简要介绍了OpenCV库的安装及移植过程;其次,主要对葡萄叶部病害图像预处理算法的开发过程及结果进行了研究;再次,对葡萄叶部病斑的分割方法及特征提取过程进行了详细说明,然后对结果进行了展示和分析;最后,选择应用LIBSVM工具对葡萄样本特征数据进行了分类识别的测试并对测试结果进行了分析。-57- -58- 第五章基于Qt的植物叶部病害监控及识别系统基于Qt的植物叶部病害监控及识别系统分为视频监控系统和植物叶部病害识别系统两个部分。前几章已经对监控系统的应用开发过程及图像算法的研究过程进行了详细的介绍,下面对嵌入式Qt平台的搭建,视频监控系统以及植物叶部病害识别系统的设计实现进行介绍。5.1Qt库的编译与移植本系统选择的是Qt4.8.6版本,在编译移植Qt前需要移植开源库tslib[23](移植过程比较简单,具体见参考文献),要注意在进行相关库的移植前要保证主机平台(本系统使用的是Ubuntu12.04.5开发平台)的交叉编译环境变量已经配置完成,具体交叉编译移植过程如下:(1)下载并解压Qt压缩源码包。(2)切换到解压后的源目录,在目录/mkspecs/qws下,新建目录linux-omap3-g++,然后将qws/linux-arm-g++目录下的全部文件复制到新建目录中,最后根据相应的处理器和实际应用情况进行qmake.conf文件的修改,对于本系统的OMAP3530处理器修改该文件为如图5.1所示内容。图5.1qmake.conf文件(3)在Qt根目录下进行配置、编译安装,如图5.2和图5.3所示。-59- 图5.2交叉编译Qt4.8.6配置命令图5.3Qt4.8.6安装成功(4)将交叉编译好的库移植到开发板上,并在/etc/profile中配置与Qt相关环境变量即可,如图5.4所示。综上,Qt4.8.6库交叉编译移植成功。图5.4tslib及Qt4.8.6环境变量的设置-60- 5.2植物生长状态监控系统的设计实现监控系统是对植物生长状态视频采集及传输系统的具体实现,主要包括客户端和服务端两方面图形交互界面的设计。系统客户端采集视频数据在LCD上显示,通过控制可以将视频数据经过x264压缩编码,然后进行网络传输,远程服务端接收到视频数据后,使用FFmpeg解码,最后再应用Qt进行显示。应用Qt实现显示与控制的交互界面软件是在高度集成的QtCreator跨平台开发环境中开发的,Qt编程中最核心的就是实现不同对象间通信的信号与槽机制[23]。在开发环境中添加监控系统工程后应用的是QWidget创建窗体,QLabel实现视频和图像的显示,QPushButton实现对按钮的添加。本监控系统交互界面上添加了视频图像的保存,一帧图像的保存,视频数据采集或接收的开始、停止等控制功能就是通过QPushButton实现的,当点击相应的操作按钮后,发射信号,然后在对应的槽函数中实现相应的操作。系统具体的测试结果如3.4小节所示。5.3植物叶部病害识别系统的设计实现识别系统是对植物叶部病害识别算法的具体实现,总体功能上也是包括图像的预处理及分割,图像特征提取及识别几个方面。该系统实际上就是输入一幅图像,经过各种处理后,输出对该图像的植物叶部病害识别结果。系统的功能还可以根据实际情况进行添加和完善。5.3.1系统功能概述及软硬件环境本系统的主要功能是对一幅植物叶部图像进行处理,主要包括:1)预处理及分割:中值滤波、灰度变换、阈值处理、数学形态学处理、B分量的提取等;2)特征提取和分类识别:颜色、形状、纹理特征的提取及SVM识别。系统主要是选择Qt平台作为开发工具,C++作为开发语言,以葡萄叶部病害为研究对象,通过调用基于OpenCV的图像处理及识别算法,最终实现了识别系统的设计。由于Qt是真正具有跨平台的优点,所以识别软件可以实现在Windows平台、Ubuntu平台及ARM嵌入式平台上应用。如图5.5所示,植物叶部病害识别系统在不同平台上的实现。-61- (a)Windows7平台(b)Ubuntu12.04.5平台(c)ARM嵌入式平台图5.5植物叶部病害识别系统在不同平台的实现5.3.2图像预处理及分割软件实现对输入的一幅图像可以进行图像预处理及分割,图像分割的整个过程及结果如图-62- 5.6所示,具体过程包括:原始图像B分量提取,对B分量进行图像二值化,数学形态学处理,原始病斑的提取。图5.7是对原始图像进行人工阈值设置二值化。(a)原始图像B分量提取(b)B分量图像二值化(c)数学形态学处理(d)原始病斑提取图5.6图像预处理及病斑提取图5.7阈值设置二值化-63- 5.3.3图像特征提取及识别结果软件实现病斑分割后需要进行特征提取,应用软件可以进行纹理、形状和颜色三方面特征的提取,特征提取结果如图5.8所示。最后是对所提取的特征进行识别,调用OpenCV库中SVM函数直接利用第四章中的样本特征数据对该图像样本进行识别,训练过程中默认核函数是径向基核函数,惩罚参数C为64,RBF参数γ为1。在ARM嵌入式和Ubuntu平台进行图像识别的结果如图5.9所示。(a)准备特征提取(b)形状特征提取(c)颜色特征提取(d)纹理特征提取图5.8特征提取过程-64- (a)Ubuntu12.04.5平台(b)ARM嵌入式平台图5.9图像预测结果5.4本章小结本章首先对Qt的移植过程进行了介绍;然后对监控系统客户端和服务端的设计实现进行了说明;最后以葡萄叶部病害为研究对象对植物叶部病害识别系统应用软件的应用过程及结果进行了详细的介绍。-65- -66- 第六章总结与展望6.1全文总结本课题以葡萄叶部病害为研究对象实现了基于嵌入式机器视觉的植物叶部病害视频监控及识别系统的开发,最终系统达到了既可以在嵌入式上对植物生长状况进行实时监控和对葡萄叶部病害进行识别,又可以选择将采集到的视频数据上传到远程服务器上,在服务器上实现对植物生长状况的监控和葡萄叶部病害的识别的总体设计目标。主要的研究工作及成果如下:(1)通过对系统的总体功能分析进行了系统软硬件选型和整体设计布局的规划。系统主要软硬件为:选用TI公司的OMAP3530处理器作为本系统嵌入式硬件平台,嵌入式平台的操作系统选用的是Linux。(2)进行了本系统嵌入式Linux应用开发环境的搭建,主要包括:Windows7+VMwareWorkstation10.0.1+Ubuntu12.04.5交叉编译及开发环境的搭建;x-loader、uboot、Linux内核的移植;根文件系统的构建以及UVC摄像头驱动模块的移植;Qt,ffmpeg,x264,OpenCV的配置、交叉编译与移植等。(3)完成了视频监控系统的开发和研究工作,主要涉及基于V4L2和USB摄像头视频数据采集的研究、x264视频编解码模块的研究和Socket网络编程视频传输与接收模块的研究。视频传输及显示的最终测试结果表明视频传输的流畅度和视频显示的清晰度符合基本要求。(4)完成了基于OpenCV的葡萄叶部病害图像处理及识别算法的开发,具体算法研究开发工作及成果包括:首先,进行图像预处理的研究,通过对两种空间域滤波的比较,确定选择中值滤波进行图像的滤波去噪处理,然后对图像的灰度处理,图像的二值化处理进行了概述和结果展示;其次,进行图像分割的研究,通过大量的测试确定了本研究图像分割方法:对彩色样本图像RGB模型中B分量应用OTSU阈值分割和数学形态学处理的方法实现了病斑的提取;再次,图像的特征提取过程确定了病斑在颜色、形状和纹理三方面的15个特征参数并进行了特征提取;最后,图像分类识别的研究是对葡萄叶部病害进行分类识别测试,选用libSVM工具对病害的特征数据进行了大量的随机样本分类测试,最终确定选取RBF作为SVM的核函数,当惩罚参数C为64,RBF参数γ=1时,对15个特征数据进行葡萄叶部病害识别的效果最好,-67- 平均识别准确率可以达到95%。(5)利用Qt编程设计完成了植物叶部病害监控及识别系统的应用程序开发。视频监控及图像识别的应用软件在嵌入式客户端和PC服务器上可以实现跨平台应用。6.2未来展望虽然本课题以葡萄叶部病害为研究对象实现了基于嵌入式机器视觉的植物叶部病害视频监控及识别系统的开发,但是由于个人时间和精力有限以及课题研究内容工作量和复杂性很大等因素的影响,整个系统还存在很多需要完善的地方,而且果园中葡萄叶部病害的实际情况比本系统研究的情况要复杂的多,所以本人结合自身研究过程中的体会,给出下一步研究工作中的几点建议:(1)今后的研究可以对图像处理及识别算法通过增加特征优选的方式来进行特征降维,从而改进算法的效率和准确率,还可以对病害识别后错判、漏判的控制机制进行研究。(2)本研究只是以葡萄叶部病害为研究对象进行了算法的开发,下一步研究可以增加植物种类,找出多种植物叶部的几种相似病害进行研究,由此来增加算法和系统的应用范围。(3)研究如何加强图像处理及识别算法的健壮性。本研究目前只能对植物叶片某个固定时期的几种病害进行特征提取和识别,存在很大的局限性。对植物叶部不同时期、混合病害甚至是植物其它部位病害的特征提取及识别有待进一步深入研究。(4)监控系统与识别算法结合方面可以继续研究,由于算法复杂度高,会使监控系统不容易实时识别,所以下一步可以在两者结合后系统的传输效率和实时性等方面有针对性的进行研究。-68- 参考文献[1]张芳.基于计算机视觉的农作物病害检测系统的研究[D].西安:陕西科技大学,2013:1.[2]管泽鑫,姚青,杨保军,等.数字图像处理技术在农作物病虫草识别中的应用[J].中国农业科学,2009,42(7):2349-2358.[3]刁智华,王会丹,魏伟.机器视觉在农业生产中的应用研究[J].农机化研究,2014(3):206-211.[4]赖军臣,李少昆,明博,等.作物病害机器视觉诊断研究进展[J].中国农业科学,2009,42(4):1215-1221.[5]曹乐平.基于机器视觉的植物病虫害实时识别方法[J].中国农学通报,2015,31(20):244-249.[6]LanY,ZhangH,LaceyR,etal.Developmentofanintegrationsensorandinstrumentationsystemformeasuringcropconditions.[J].Development,2009,126(9):1869-78.[7]樊丰义,何东健.基于嵌入式Linux的农业远程监测系统[J].计算机工程,2011,37(1):249-250,253.[8]杨阔,何东健.基于S3C6410的田间视频监控系统的实现[J].计算机工程与设计,2013,34(6):1978-1982.[9]TimJ.Malthus,AnaCarlaMadeira,High-resolutionspectroradiometry:SpectralreflectanceoffieldbeanleavesinfectedbyBotrytisfabae[J].RemoteSensingofEnvironment,1993,45(1):107-116.[10]ZayasIY,lnna,etal.Detectionofinsectsinbulkswheatsampleswithmachinevision.TransactionsoftheASAE,1998,6(3):883~888.[11]WuD,MaC.TheSupportVectorMachine(SVM)BasedNear-InfraredSpectrumRecognitionofLeavesInfectedbytheLeafminers[C].InternationalConferenceonInnovativeComputing,InformationandControl.IEEE,2006:448-451.[12]彭占武.基于图像处理和模式识别技术的黄瓜病害识别研究[D].长春:吉林农业大学,2007.[13]杨倩.基于机器视觉的甘肃大麦病害分类识别研究[D].兰州:甘肃农业大学,2013.[14]柴洋.基于图像处理的温室大棚中番茄的病害识别[D].沈阳:沈阳工业大学,2013.[15]何青海.基于ARM_Linux的棉花病虫害检测系统研究[D].石河子:石河子大学,2013.[16]GaryBradski,AdrianKaehler.学习OpenCV[M].于仕琪,刘瑞祯译.北京:清华大学出版社,2009:1.[17]侯杰.基于OMAP3530处理器的图像采集及压缩编码研究与设计[D].南京:南京邮电大学,2013.[18]韦东山.嵌入式Linux应用完全开发手册[M].北京:人民邮电出版社,2008.-69- [19]吴禄慎,柳珍,吴培敏,等.基于嵌入式视频监控的人脸检测系统设计[J].激光与红外,2012,42(2):231-234.[20]胡聪,周甜,唐璐丹.基于FFMPEG的跨平台视频编解码研究[J].武汉理工大学学报,2011(11):139-142.[21]张纪铃,夏超,黄富良.一种基于H264编码标准的快速运动估计算法[J].电子测量技术,2009,32(9):69-73.[22]WiegandT,SullivanGJ,BjontegaardG,etal.OverviewoftheH.264/AVCvideocodingstandard[J].IEEETransactionsonCircuits&SystemsforVideoTechnology,2003,13(7):560-576.[23]吴燕燕,贺锋涛.基于ARM9平台上Qt/Embedded的移植与开发[J].液晶与显示,2013,28(2):261-265.[24]李晶,赵小强,范九伦.嵌入式Linux系统的移植技巧[J].现代电子技术,2008,31(24):40-42.[25]程科.嵌入式Linux设备驱动程序的设计与研究[D].成都:电子科技大学,2007.[26]徐家,陈奇.基于V4L2的视频设备驱动开发[J].计算机工程与设计,2010,31(16):3569-3572.[27]LuY,YuH,ZhangP.TheimplementationofembeddedimageacquisitionbasedonV4L2[C].InternationalConferenceonElectronics,CommunicationsandControl.IEEE,2011:549-552.[28]杨德伟,易善强,王华,等.基于ARM和WiFi的无线视频传输实验系统[J].实验室研究与探索,2014,33(10):156-161.[29]刘宇.基于嵌入式系统的视频采集与无线传输系统的设计与实现[D].银川:宁夏大学,2014:38-40.[30]王远洋,周渊平,郭焕丽.Linux下基于socket多线程并发通信的实现[J].微计算机信息,2009,25(15):70-72.[31]何润岸.基于UDP进行大规模数据传输的可靠传输系统的设计与实现[D].济南:山东大学,2015.[32]张铮,徐超,任淑霞,等.数字图像处理与机器视觉[M].北京:人民邮电出版社,2014.[33]赵高长,张磊,武风波.改进的中值滤波算法在图像去噪中的应用[J].应用光学,2011,32(4):678-682.[34]范九伦,赵凤.灰度图像的二维Otsu曲线阈值分割法[J].电子学报,2007,35(4):751-755.[35]孙勇,肖勇,方彦军.基于改进自适应阈值法的指针仪表图像预处理[J].自动化与仪表,2014,29(9):5-9.[36]何志勇,孙立宁,陈立国.Otsu准则下分割阈值的快速计算[J].电子学报,2013,41(2):267-272.[37]何志勇,孙立宁,黄伟国,等.基于Otsu准则和直线截距直方图的阈值分割[J].光学精密工程,2012,20(10):2315-2323.[38]SasakiY,SuzukiM.ConstructionoftheAutomaticDiagnosisSystemofPlantDiseaseUsingGeneticProgrammingWhichPaidItsAttentiontoVariety[C].ASAEMeetingPresentation-70- (paperNo.031049),2003.[39]次丹妮.基于计算机视觉的花卉叶部病害识别方法研究[D].天津:天津职业技术师范大学,2016:15-18.[40]王书涛,张金敏,李圆圆,等.基于数学形态学和模糊聚类的旋转机械故障诊断[J].仪器仪表学报,2012,33(5):1055-1061.[41]NixonM,AguadoAS.Featureextraction&imageprocessingforcomputervision[M].AcademicPress,2012:9~15.[42]OjalaT,HarwoodI.AComparativeStudyofTextureMeasureswithClassificationBasedonFeatureDistributions[J].PatternRecognition,1996,29(1):51-59.[43]杨倩,高晓阳,武季岭,等.基于颜色和纹理特征的大麦主要病害识别研究[J].中国农业大学学报,2013,18(5):129-135.[44]贾棋,刘宇,樊鑫,等.基于交比上下文的层次化形状特征提取及匹配算法[J].计算机辅助设计与图形学学报,2015(12):002247-2255.[45]毋媛媛,刁智华,王会丹,等.作物病害图像形状特征提取研究[J].农机化研究,2015,(1):64-67.[46]余秀丽,徐超,王丹丹,等.基于SVM的小麦叶部病害识别方法研究[J].农机化研究,2014,(11):151-155,159.[47]陈强,田杰,黄海宁,等.基于统计和纹理特征的SAS图像SVM分割研究[J].仪器仪表学报,2013,34(6):1413-1420.[48]HaralickRM,ShanmugamK.Texturefeaturesforimageclassification.IEEETrans.onSys,Man,andCyb,1973,SMC-3(6):610-621.[49]王松静.基于光谱分析与图像处理的模式识别研究[D].杭州:浙江大学,2012:1-6.[50]唐耀华,郭为民,高静怀.基于核相似性差异最大化的支持向量机参数选择算法[J].模式识别与人工智能,2010,23(2):210-215.[51]姚潇,余乐安.模糊近似支持向量机模型及其在信用风险评估中的应用[J].系统工程理论与实践,2012,32(3):549-554.[52]刘涛,仲晓春,孙成明,等.基于计算机视觉的水稻叶部病害识别研究[J].中国农业科学,2014,47(4):664-674.[53]程然.最小二乘支持向量机的研究和应用[D].哈尔滨:哈尔滨工业大学,2013:12-21.[54]王霞,王占岐,金贵,等.基于核函数支持向量回归机的耕地面积预测[J].农业工程学报,2014,30(4):204-211.[55]李坤,刘鹏,吕雅洁,等.基于Spark的LIBSVM参数优选并行化算法[J].南京大学学报(自然科学),2016,52(2):343-352.[56]李文强.基于形状特征的交通标志识别系统[D].沈阳:沈阳工业大学,2014:53-54.-71- -72- 攻读学位期间所取得的相关科研成果一、发表论文[1]王利伟,徐晓辉,苏彦莽,等.基于计算机视觉的葡萄叶部病害识别研究[J].江苏农业科学,拟于2017年10-12月期前后刊出.-73- -74- 致谢三年的研究生生涯转瞬即逝,回顾这段时光,我不仅学会了冷静思考,而且各方面的能力也得到了提高,在此对那些给予过我教导、关怀与帮助的人表示最真挚的感谢,这段经历也会成为我人生中重要的回忆。首先,我要感谢研究生期间的指导老师徐晓辉研究员。从整个课题的开始到结束,徐老师经常询问研究进度,遇到问题徐老师总是对我耐心指导并给予方向性的建议,徐老师严谨的治学态度和崇高的师德给我留下了深刻的印象。在徐老师的教导和严格要求下,我独立分析问题和解决问题的科研能力有了很大的提高,这将会是我人生中的宝贵财富。我在此向徐老师表示最衷心的感谢!其次,在本次课题完成过程及论文撰写过程中,杨帆老师、苏彦莽老师、宋涛老师都曾给我合理的建议与指导,在此向他们表达真挚的谢意。同时,我要十分感谢杜秋晨学长,在我最茫然的时候给了我非常大的支持和帮助,在课题完成的过程中,处处都离不开杜秋晨学长的细心帮助,他不仅为我解决问题,指引方向,而且使我在技术层面的知识和技能都有了很大的提升,在此向杜秋晨学长表示衷心的感谢。在论文即将完成之际,还要感谢在学习和生活中帮助过我的朋友、同学和舍友们,正是有了他们的支持和帮助,我才能顺利克服曾经遇到过的各种疑惑和困难。我充实与丰富多彩的研究生生活更离不开他们的关心与陪伴。最后,我要深深地感谢我的父母给予我的支持与关爱,没有他们背后无私的支持与关爱就没有今天不断成长的自己,他们无私的爱是我不断前行的动力。-75-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭