2023年亚太杯数学建模A题解题思路(*基于OpenCV的复杂背景下苹果目标的识别定位方法研究)

摘要


由于要求较高的时效性和劳力投入,果实采摘环节成为苹果生产作业中十分重要的一部分。而对于自然环境下生长的苹果,光照影响、枝叶遮挡和果实重叠等情况普遍存在,这严重影响了果实的准确识别以及采摘点的精确定位。针对在复杂背景下苹果的自动采摘过程中出现的光照影响、枝叶遮挡和果实间相互重叠的问题,提出一种基于OpenCV的复杂背景下苹果目标的识别定位方法。以自然环境下生长的红苹果为对象,通过改进的Retinex算法消除光照、枝叶遮挡的影响;选用Canopy算法与K-Means算法相结合对图像中的苹果目标进行分割提取:利用基于距离变换的分水岭图像分割算法对可能重叠的苹果轮廓进行切分:根据最大外接矩形内切圆法对苹果目标进行拟合,然后计算各个拟合轮廓圆的圆心距离和半径大小,剔除计算结果小于阈值的拟合圆,最终确定各个苹果目标在图像中的位置和大小。基于VS2017与OpenCV3.4.1开发环境,开发了苹果目标识别定位软件测试平台,并在此平台下对296张自然环境下生长的苹果图像进行了测试,测试结果表明:改进的Retinex算法可以较好的削弱在苹果目标图像处理过程中由于光照和枝叶遮挡造成的高亮和阴影影响:在苹果目标提取过程中结合Canopy算法与K-Means算法可以最大程度的保留苹果目标真实轮廓图像;使用最大外接矩形内切圆法拟合苹果目标并通过计算坐标与半径进行伪轮廓剔除,有效的提高时间利用率和准确率。本文方法对苹果目标进行识别定位的平均分割误差为6.67%,苹果目标识别准确率为93.59%,平均识别定位时间为3.96s。应用本文方法可以对自然环境下的苹果目标进行准确识别定位,提高识别效率。


关键词苹果;识别定位;复杂背景;K-Means;OpenCV

引言

我国是苹果生产大国,苹果种植的总面积在逐年提升,其中苹果果园面积截止到2018年已达到1939万亩,而在2019年我国苹果的产量达到了4242万吨。随着我国农业结构的进一步优化,改良了苹果的种植环境,其生产效率也有了显著的提高。在苹果生产过程中,果实的采摘占全部工作量的40-50%,是生产过程中劳动力投入最集中、最吃力、最复杂,并且具有一定危险性的一个环节。果实采摘工作质量的优劣直接影响到苹果的存储与出售,进而影响其市场价值与经济收益。
当前,我国果蔬种植产业机械化、自动化和智能化程度还比较低,尤其是在成熟苹果的采摘生产作业当中,通常都是由人工进行,耗时长、成本高、工作强度大。而由于计划生育政策的施行,劳动力亦大量转移到服务业和制造业,导致了劳动力成本的提高,提升了苹果应时采摘的难度]。从发展的角度看,实现苹果的机械化、自动化和智能化采摘有利于保障果实质量、减少苹果生产过程
中的成本和提高已收获苹果的市场竞争力。因此大力发展自动化果实收获采摘技术,不但是改进传统果蔬生产的有效举措,也是未来果蔬种植产业增收的重要手段,对我国农业总体水平的提升具有十分重要的现实意义4。所以设计实现一种自动采摘苹果果实的方法是大势所趋,而其关键环节则是怎样利用机器视觉技术完成果实的精准识别与定位。现如今,由于人力、物力成本的提高,基于
机器视觉的苹果果实自动化采摘技术已经成为关注的重点。在自然环境下,苹果的生长状况受季候、生长地域、天气等自然条件的影响而具有较大的差别,经常出现果实被枝叶遮挡的情况,而且拍摄获得的苹果图像的背景较为复杂,可能包含天空、枝叶、土地等。现有常规算法常常会在识别
过程中不能够很好的去除光照的影响,导致果实识别的效率及准确率均不高:并且因为枝叶遮挡、果实重叠等原因严重干扰果实的精确识别、采摘点的准确定位以及采摘活动的进行5-)。


机器视觉是果实采摘机器人设计开发的关键技术。近几年来,各国一直在深入研究机器视觉技术,研究方式与触及领域持续拓展,研究成果在农业采摘、医学鉴别、工业监控等方面的应用也逐渐普及。随着现代农业技术的进步,研究人员开始将机器视觉技术应用于农产品的识别和应时果蔬的采摘)。在果蔬自动采摘机器人中应用机器视觉技术始于1968年,美国学者Schertz和Bowm最早实现果实自动化采摘的方法例。他们通过计算图像中的果实与叶子在电磁光谱的红外光反射率差异以及可见光频段的不同来进行水果的识别。1977年,美国学者Parrish和Goksel以人造苹果树作为实验目标创建了首个用于苹果识别的机器视觉系统,并奠定了后续各种果实识别定位方法的研究基础1o。
  1989年,美国加州大学的Slaughter等利用桔子图像的色彩与亮度特征,建立了第一个自然环境下桔子识别的分类器模型,该分类器的识别准确率为75%,检测形状的误差为6%,识别速度基本上可以满足实时性的要求,但精度较差。2001年,美国西北拿撒勒大学的Bulnaon等为了对不同光照条件下的苹果进行检测,以液晶显示模型和色度模型为依据,利用多阈值法对苹果图像进行分割,经实验验证准确率为80%2。

  20l5年,美国卡内基梅隆大学的Abhisesh Silwal等通过循环迭代霍夫变换算法对特征明显的红色苹果图像进行检测,并通过基于距离变换的聚类算法对存在遮挡区域的苹果进行合并,结果表明对于单个苹果的情况该算法具有较好的识别效果,识别率可达到90.11。20l9年,西班牙马德里大学Valeriano Mendez等将3D激光雷达扫描出的图像利用K-Means算法进行果实识别,提高了识别精度,但耗时更长14。到目前为止,在果实识别与定位的研究领域中,美国、以色列、荷兰等国均
处于前列。机器视觉技术在农业采摘方面的研究虽然开始很早,具备大量的先行经验,但是由于农作物的生长环境比较复杂,大多数研究尚处于理论验证的阶段。

  2019年,西班牙马德里大学Valeriano Mendez等将3D激光雷达扫描出的图像利用K-Means算法进行果实识别,提高了识别精度,但耗时更长14。到目前为止,在果实识别与定位的研究领域中,美国、以色列、荷兰等国均处于前列。机器视觉技术在农业采摘方面的研究虽然开始很早,具备大量的先行经验,但是由于农作物的生长环境比较复杂,大多数研究尚处于理论验证的阶段。

第2章图像增强及苹果目标提取


本文所使用的苹果图像是以RGB格式保存的,并且在图像中包含了复杂的背景区域。为了方便算法的下一步处理,需要分割背景区域与苹果目标,提取出图像中的苹果目标。彩色苹果图像的处理分为两个部分:一是挑选适合的颜色空间模型。合适的颜色空间模型有益于增强算法的稳定性与实时性,为下一步分割算法奠定基础:二是确定提取苹果目标的分割算法。分割算法的选择标准为在尽可能降低误分割率的情况下,提高算法的可靠性。


2.1苹果目标识别定位算法整体流程


由于现有的苹果识别定位算法在光照问题的处理上大部分是依靠颜色空间转换来解决的,当由于枝叶遮挡而导致苹果图像上出现高光和阴影区域时,很难保证算法的稳定性,而且在复杂背景和重叠果实的处理方面效果较差。针对上述问题,本文提出一种基于OpenCV的复杂背景下苹果目标的识别定位方法,能够较好地处理光照问题并且提取图像中的苹果目标,分离可能出现重叠情况的苹果目标,最终获得苹果目标的坐标与半径。


2.1.1自然环境下的苹果图像分析


本文研究的算法主要应用于自然环境下生长的红苹果的识别与定位,而自然环境下的苹果图像背景较为复杂。本文的数据集是通过果园内拍照以及互联网搜集图像来构建的,为了更好的确定算法的流程,提高算法的准确性和适用性,首先对数据集内的苹果图像进行分析。经过分析后发现数据集内的图像包括普通苹果图像、光照过量苹果图像、光照不均苹果图像、存在枝叶遮挡苹果图像和存在果实重叠苹果图像等情况。自然环境下生长的苹果如图2-1所示,图2-1)为正常情况下的苹果图像:图2-1b)为存在枝叶遮挡的苹果图像,图像中的一部分苹果果实被树叶所覆盖,右上方果实由于枝条的存在而被分成两个部分,在进行苹果目标拟合时会出现拟合圆偏小以及伪轮廓的情况:图2-1c)为光照过量苹果图像,图像中的三个苹果果实由于光照的原因均出现严重的反光现象,使得苹果表面出现高光区域,对于后续的图像处理会造成较大影响;图2-1)为光照不均匀苹果图像,枝叶遮挡和光照角度使得苹果图像中存在亮暗相邻的区域,即一部分为高亮区域,而相邻部分为昏暗区域,果实的阴影部分表面亮度小于非阴影部分或背景的亮度,在进行分割时会丢失像素信息,增加了分析苹果图像信息的难度:图2-1)为存在果实重叠情况的苹果图像,苹果目标区域的重叠使得分割提取的苹果果实存在一定误差,更对后续的苹果目标拟合造成影响,导致最终结果会有部分偏差。在后续算法研究中以具有代表性的图2-1c)、d)为例进行处理,对算法进行验证分析。

74c25bc03a0f409bac0142c17b448797.png

2.1.2算法整体流程
本文设计的基于OpenCV的复杂背景下苹果目标的识别定位算法,其过程可划分为七个步骤:苹果图像采集、苹果图像增强、苹果目标提取、苹果目标图像预处理、苹果目标分割、苹果目标拟合、拟合圆判定并存储,如图2-2所示。具体工作流程为:首先采集苹果图像,并对苹果图像进行增强,减少光照对下一步苹果图像处理的影响:其次将苹果图像从RGB颜色空间变换到Lb颜色空间,并利用改进的K-Means算法提取图像中的苹果目标:接着对二值化后的苹果目标图像进行图像预处理,然后采用基于距离变换的分水岭算法进行苹果目标重叠区域分割:再通过最大外接矩形内切圆法拟合出图像中的苹果目标圆:最后通过拟合圆判定算法对拟合出的苹果目标圆进行伪轮廓滤除,得到最终的苹果目标信息。

5940b5d87c364f56aec35ebb6534a485.png

 

2.2苹果图像增强算法


颜色包含的信息相比于灰度而言更多。对于在果园中拍摄的存在复杂背景的苹果图像,苹果目标与背景区域最明显的区别就是两者之间颜色的差异。因此可以依据这一特性,选择相对适宜的颜色模型,对苹果图像进行区域分割。对于提取出的苹果目标图像,选择高效且快速的识别定位算法,尽可能快速精确地获得苹果目标位置与大小信息。为了解决由于枝叶遮挡和光照不均匀所造成的问题22,231,学者们提出了多种图像增强方法,主要有:基于直方图的方法、基于Mask匀光的方法、基于Retinex的方法等。

2.2.1直方图均衡化算法


对于整体偏亮(暗)的光照不均匀苹果图像,其图像对比度较低。通常使用直方图变换的方法把分布不均匀的图像进行拉伸,以此来提高苹果图像的整体对比度。但该算法未曾考虑到苹果图像的细节信息,容易造成图像过增强。使用直方图均衡化算法242处理苹果图像的步骤如下:
(1)按照从上到下,从左到右的次序扫描原始苹果图像三通道的所有像素,将对应像素点的三通道像素值求平均值,计算出苹果图像的灰度直方图H:
(2)进行归一化处理,将每一个像素灰度值在图像中出现的次数求和并除以苹果图像的大小,最终得到归一化的直方图

6dee8022b8ce4b8bb70ae2b9a8fc1de1.png

其中,x)为结果图像,L表示灰度等级,H(x)表示苹果灰度直方图中每个灰度等级像素的数量,w表示灰度图像的宽,h表示灰度图像的高。使用直方图均衡化算法对图2-1c)、d)进行增强,结果如图2-3所示:增强后的图2-3a)中的灰度级减少,苹果果实与枝叶重叠的部分某些细节消失,在进行苹果果实分割提取时可能会造成部分背景图像(枝叶)冗余,不利于后续部分的处理;图2-3b)经过处理后,图像对比度增大,灰度级不平坦,部分苹果果实图像灰度值较低,部分图像灰度值较高,导致苹果图像的灰度值变化范围增大,因此提取图像中的苹果果实信息较困难。

e5c7ceae2a934e29b8ee04af2bb68210.png

 2.2.2Mask匀光算法


Mask匀光算法是一种基于传统光学相片晒印方法而提出的图像增强算法。原理是以模糊透明的正片为遮光板,然后将模糊透明正片与准备好的负片重叠后进行晒像,得到一张密度较为均匀但反差较小的相片229。对于存在不均匀光照的苹果图像可描述如下:
f(x,y)=r(x,y)+g(x,y)(2-3)
其中,fx,y)为光照不均匀苹果图像,r(x,y)为使用Mask匀光算法处理后的苹果图像,g(x,y)为表征亮度分布的苹果背景图像。由式(2-3)可知,原始苹果图像减去背景苹果图像就能获得光照均匀的苹
果图像。通常情况下为了对苹果图像灰度等级的取值范围进行补偿,会在计算过程中加上灰度偏移量,公式如下所示:r(x,y)=f(x,y)-g(x,y)+offset(2-4)其中,offset为灰度偏移量。利用Mask匀光法对图2-1c)、d)进行图像增强的结果如图2-4所示,可以看出Mask匀光算法可以有效地平抑苹果图像高光部分,但对图2-2a)中的阴影部分的增强效果并不理想,降低了苹果图像的整体亮度。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/186064.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring - Mybatis-设计模式总结

Mybatis-设计模式总结 1、Builder模式 2、工厂模式 3、单例模式 4、代理模式 5、组合模式 6、模板方法模式 7、适配器模式 8、装饰者模式 9、迭代器模式 虽然我们都知道有26个设计模式,但是大多停留在概念层面,真实开发中很少遇到,…

【迅搜03】全文检索、文档、倒排索引与分词

全文检索、文档、倒排索引与分词 今天还是概念性的内容,但是这些概念却是整个搜索引擎中最重要的概念。可以说,所有的搜索引擎就是实现了类似的概念才能称之为搜索引擎。而且今天的内容其实都是相关联的,所以不要以为标题上有四个名词就感觉好…

基于JavaWeb+SSM+Vue微信阅读小程序的设计和实现

基于JavaWebSSMVue微信阅读小程序的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏[Java 源码获取 源码获取入口 Lun文目录 第1章 绪论 1 1.1 课题背景 1 1.2 课题意义 1 1.3 研究内容 1 第2章 开发环境与技术 3 2.1 MYSQL数据库 3 2.2 JSP技…

微信小程序富文本拓展rich-text

微信小程序富文本插件 功能介绍 支持解析<style>标签中的全局样式支持自定义默认的标签样式支持自动设置标题 若html中存在title标签,将自动把title标签的内容设置到页面的标题上,并在回调bindparse中返回,可以用于转发支持添加加载提示 可以在Parser标签内添加加载提…

电机应用-直流有刷电机多环控制实现

目录 直流有刷电机多环控制实现 硬件设计 直流电机三环&#xff08;速度环、电流环、位置环&#xff09;串级PID控制-位置式PID 编程要点 配置ADC可读取电流值 配置基本定时器6产生定时中断读取当前电路中驱动电机的电流值并执行PID运算 配置定时器1输出PWM控制电机 配…

jenkins + gitlab 自动部署(webhook)

Jenkins是一个流行的开源CI/CD工具&#xff0c;可以与Git等版本控制系统集成&#xff0c;实现自动构建、测试和部署。Webhook是一种机制&#xff0c;可以在Git仓库中设置&#xff0c;在代码提交或合并请求时触发Jenkins构建任务&#xff0c;以完成自动化部署。 实操 设备信息 …

DELL MD3600F存储重置管理软件密码

注意&#xff1a;密码清除可能会导致业务秒断&#xff0c;建议非业务时间操作 针对一台控制器操作即可&#xff0c;另一控制器会同步操作 重置后密码为空&#xff01; 需求&#xff1a;重置存储管理软件密码 管理软件中分配物理磁盘时提示输入密码(类似是否了解风险确认操作的提…

前端(HTML + CSS + JS)

文章目录 一、HTML1. 概念&#xff08;1&#xff09;HTML 文件基本结构&#xff08;2&#xff09;HTML代码框架 2. 、HTML常见标签 二、CSS1. CSS基本语法规范2. 用法&#xff08;1&#xff09; 引用方式&#xff08;2&#xff09;选择器&#xff08;3&#xff09;常用元素属性…

面向对象三大特性,类与接口,java重写与重载,对象相等的判断, hashCode 与 equals

文章目录 2.1 面向对象三大特性2.1.1 封装 继承 多态2.1.2 其中Java 面向对象编程三大特性&#xff1a;封装 继承 多态2.1.3 关于继承如下 3 点请记住&#xff1a;2.1.4 什么是多态机制&#xff1f;Java语言是如何实现多态的&#xff1f;2.1.5 Java实现多态有三个必要条件&…

H5ke12--2--学生选课表格的编辑

方法1不可以修改的用label,如何按了哪一行 就会在下面有个文本显示可编辑的一行 方法2每一行后面都有一个编辑, 3对每一个修改,每一个td失去焦点都会有,直接到达我们服务器 注意 如果用span的每一个html元素都可以自己定义属性 Data-属性名,data-Address links也要给为span 1…

Qt学习(2)

1.QObject 只有继承了QObject类的类&#xff0c;才具有信号槽的能力。所以&#xff0c;为了使用信号槽&#xff0c;必须继承QObject。凡是QObject类&#xff08;不管是直接子类还是间接子类&#xff09;&#xff0c;都应该在第一行代码写上Q_OBJECT。不管是不是使用信号槽&…

【LeetCode】挑战100天 Day14(热题+面试经典150题)

【LeetCode】挑战100天 Day14&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-162.1 题目2.2 题解 三、面试经典 150 题-163.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&…

nohup 实现远程运行不关机操作

nohup 实现远程运行不宕机操作 python nohup 实现远程运行不宕机操作 - python教程网 远程运行最怕断电&#xff0c;训练了几个小时的数据说没就没&#xff0c;或者停止运行。 用nohup 记录代码的输出&#xff0c;还可以不受断电的影响。 方法 1. 用nohup 运行一个python文…

HTML网站稳定性状态监控平台源码

这是一款网站稳定性状态监控平台源码&#xff0c;它基于UptimeRobot接口进行开发。当您的网站遇到故障时&#xff0c;该平台能够通过邮件或短信通知您。下面是对安装过程的详细说明&#xff1a; 安装步骤 将源码上传至您的主机或服务器&#xff0c;并进行解压操作。 在Uptim…

Redis高并发缓存架构

前言&#xff1a; 针对缓存我们并不陌生&#xff0c;而今天所讲的是使用redis作为缓存工具进行缓存数据。redis缓存是将数据保存在内存中的&#xff0c;而内存的珍贵性是不可否认的。所以在缓存之前&#xff0c;我们需要明确缓存的对象&#xff0c;是否有必要缓存&#xff0c;怎…

C++之模版初阶(简单使用模版)

前言 在学习C的模版之前&#xff0c;咱们先来说一说模版的概念&#xff0c;模版在我们的日常生活中非常常见&#xff0c;比如我们要做一个ppt&#xff0c;我们会去在WPS找个ppt的模版&#xff0c;我们只需要写入内容即可&#xff1b;比如我们的数学公式&#xff0c;给公式套值&…

DBS note5:Relational Algebra(关系代数)

目录 一、关系代数简介 二、Projection () 三、Selection () 四、Union () 五、Set Difference (-) 六、Intersection () 七、Cross Product () 八、Joins () 九、Rename () 十、Group By / Aggregation () 一、关系代数简介 关系代数中的所有运算符都接受一个关系并…

mac上Homebrew的安装与使用

打开终端&#xff1a;command空格 &#xff0c;搜索‘’终端 ’&#xff0c;打开终端 在终端中输入以下命令并按下回车键&#xff1a; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"这个命令会自动下载并安装…

RocketMQ 消息中间件 知识点汇总

目录 RocketMQ1、什么是RocketMQ?常用术语:2、为什么需要消息队列3、什么是异步处理4、什么是服务解耦5、什么是流量控制6、消息队列两种模型队列模型:发布/订阅模型:总结:7、怎么保证消息不丢失8、如何处理消息被重复消费**出现消息重复的情况:****解决方法:**9、如何保…

github国内访问小解(windows)

git 下载安装 使用 github 前必须确保电脑上已经安装了 Git&#xff0c;可以从 Git 官方网站去下载。 官方的网站在国内访问会比较慢&#xff0c;这里可以选择国内镜像&#xff1a;https://registry.npmmirror.com/binary.html?pathgit-for-windows/ github 之旅 确认电脑已…