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)中的阴影部分的增强效果并不理想,降低了苹果图像的整体亮度。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#,数值计算——插值和外推,三次样条插值(Spline_interp)的计算方法与源程序

1 文本格式 using System; namespace Legalsoft.Truffer { /// <summary> /// 三次样条插值 /// Cubic Spline Interpolation /// Cubic spline interpolation object. Construct with x and y vectors, and /// (optionally) values of the first…

jenkins使用nexus插件

nexus介绍 Nexus 是一个强大的仓库管理工具&#xff0c;用于管理和分发 Maven、npm、Docker 等软件包。它提供了一个集中的存储库&#xff0c;用于存储和管理软件包&#xff0c;并提供了版本控制、访问控制、构建和部署等功能。 Nexus 可以帮助开发团队提高软件包管理的效率和…

vue3中自定义hook函数

使用Vue3的组合API封装的可复用的功能函数 自定义hook的作用类似于vue2中的mixin技术 自定义Hook的优势: 很清楚复用功能代码的来源, 更清楚易懂 案例: 收集用户鼠标点击的页面坐标 hooks/useMousePosition.ts文件代码&#xff1a; import { ref, onMounted, onUnmounted …

Programming Contest 2023(AtCoder Beginner Contest 331)D题 Tile Pattern --- 题解

目录 D - Tile Pattern 题目大意&#xff1a; 思路&#xff1a; 代码&#xff1a; D - Tile Pattern D - Tile Pattern (atcoder.jp) 题目大意&#xff1a; 给你一个n和q&#xff0c;n为局部棋盘大小(n*n) 并且给出局部棋盘中黑白子位置的放置情况&#xff0c;q为查询次数…

.NET6 开发一个检查某些状态持续多长时间的类

📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !序言 在代码的世界里,时常碰撞…

Linux:动态查看服务器磁盘IO使用情况(IOTOP)

一、安装 yum install -y iotop二、使用 iotop可以看到&#xff0c;每个用户对应的磁盘读写速率以及相应的进程。

159.库存管理(TOPk问题!)

思路&#xff1a;也是tok的问题&#xff0c;与上篇博客思路一样&#xff0c;只不过是求前k个小的元素&#xff01; 基于快排分块思路的代码如下&#xff1a; class Solution { public:int getkey(vector<int>&nums,int left,int right){int rrand();return nums[r%…

logback-spring.xml详解

《springboot使用logback日志框架超详细教程》文中&#xff0c;filter中最重要的两个过滤器LevelFilter&#xff08;日志级别精确匹配&#xff09;、ThresholdFilter&#xff08;阈值过滤&#xff09; 的描述非常准确&#xff1a; springboot使用logback日志框架超详细教程_sp…

接口测试 —— Requests库介绍

1、Requests库 Requests库是用Python语言编写&#xff0c;基于urllib3模块&#xff0c;采用Apache2 Licensed开源协议的 HTTP 库。 虽然Python的标准库中urllib3模块已经包含了平常我们使用的大多数功能&#xff0c;但是它的 API使用起来让人感觉不太友好。而Requests库使用的…

自定义类型:结构体(自引用、内存对齐、位段(位域))

目录 一. 结构体类型的声明和定义 1.1结构体相关概念 1.11结构的声明 1.12成员列表 1.2定义结构体类型变量的方法 1.21先声明结构体类型再定义变量名 ​​​​1.22在声明类型的同时定义变量 1.23直接定义结构类型变量 二、结构体变量的创建、初始化​和访问 2.1结构体…

医疗器械设备模组的具体应用

直线模组是一种高精度、高速度的精密传动元件&#xff0c;目前被广泛应用在各种工业自动化领域&#xff1b;尤其是在激光加工、电子制造、医疗设备、物流设备和机器人等行业中&#xff0c;都发挥着重要作用&#xff0c;接下来我们看看医疗器械设备模组的具体应用吧&#xff01;…

avue-crud中时间范围选择默认应该是0点却变成了12点

文章目录 一、问题二、解决三、最后 一、问题 在avue-crud中时间范围选择&#xff0c;正常默认应该是0点&#xff0c;但是不知道怎么的了&#xff0c;选完之后就是一直是12点。具体问题如下动图所示&#xff1a; <template><avue-crud :option"option" /&g…

Elasticsearch 的使用

一、简介 1.Shard&#xff08;分片&#xff09; 数据分散集群的架构模式&#xff0c;Elasticsearch 将一个 Index&#xff08;索引&#xff09;中的数据切为多个 Shard&#xff08;分片&#xff09;&#xff0c;分布在不同服务器节点上。 默认每个索引会分配5个主分片和1个副本…

Discuz论坛自动采集发布软件

随着网络时代的不断发展&#xff0c;Discuz论坛作为一个具有广泛用户基础的开源论坛系统&#xff0c;其采集全网文章的技术也日益受到关注。在这篇文章中&#xff0c;我们将专心分享通过输入关键词实现Discuz论坛的全网文章采集&#xff0c;同时探讨采集过程中伪原创的发布方法…

Linux中文件的打包压缩、解压,下载到本地——zip,tar指令等

目录 1 .zip后缀名&#xff1a; 1.1 zip指令 1.2 unzip指令 2 .tar后缀名 3. sz 指令 4. rz 指令 5. scp指令 1 .zip后缀名&#xff1a; 1.1 zip指令 语法&#xff1a;zip [namefile.zip] [namefile]... 功能&#xff1a;将目录或者文件压缩成zip格式 常用选项&#xff1a…

CSS BFC特性和应用

目录 1&#xff0c;介绍2&#xff0c;BFC布局规则3&#xff0c;创建BFC4&#xff0c;BFC应用1&#xff0c;浮动子元素使父级高度坍塌2&#xff0c;非浮动元素被浮动元素覆盖3&#xff0c;margin 合并1&#xff0c;父子 margin 合并&#xff1a;父级和第1个/最后1个子元素2&…

Unity中Shader指令优化(编译后指令解析)

文章目录 前言一、我们先创建一个简单的Shader二、编译这个Shader&#xff0c;并且打开1、编译后注意事项2、编译平台 和 编译指令数3、顶点着色器用到的信息4、顶点着色器计算的核心部分5、片元着色器用到的信息6、片元着色器核心部分 前言 我们先读懂Shader编译后代码&#…

centos上安装并持久化配置LVS

1 实验背景 1&#xff09;系统版本&#xff1a;centos7.8 2&#xff09;虚拟机&#xff1a;3个centos虚拟机&#xff0c;&#xff08;其中一个做Director Server,另外两个做Real Server) 3) LVS大致有NAT ,DR ,Tun这三种模式&#xff0c;这里搭建一个典型的DR模式的LVS Direc…

ftp的服务安装配置

安装 yum install -y vsftpd # 是否安装成功 rpm -qa | grep vsftpd # 是否开机启动 systemctl list-unit-files | grep vsftpd # 开机启动 systemctl enable vsftpd.service # ftp端口 netstat -antup | grep ftp # 状态 service vsftpd status service vsftpd start service…