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

2023年亚太杯数学建模A题水果采摘机器人的图像识别功能(基于yolov5的苹果分割)-CSDN博客

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

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

相关文章

如何在GO中写出准确的基准测试

一般来说,我们不应该对性能进行猜测。在编写优化时,会有许多因素可能起作用,即使我们对结果有很强的看法,测试它们很少是一个坏主意。然而,编写基准测试并不简单。很容易编写不准确的基准测试,并且基于这些…

系列九、声明式事务(xml方式)

一、概述 声明式事务(declarative transaction management)是Spring提供的对程序事务管理的一种方式,Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明,是指在配置文件中声明,用在Spring配置文件中声明式的处理事务来…

roseha for windows 11+oracle 11g部署过程

文章目录 一、环境准备关闭防火墙配置hosts共享存储准备 二、部署步骤1.主机A、B安装数据库软件2.主机A进行数据库实例创建3.主机B创建数据库4.安装配置roseha软件 一、环境准备 windows server 2019 oracle 11.2.0.3 EE roseha for windows 11 5个IP地址:2心跳、3…

嵌入式FPGA IP正在发现更广阔的用武之地

作者:郭道正, Achronix Semiconductor中国区总经理 在日前落幕的“中国集成电路设计业2023年会暨广州集成电路产业创新发展高峰论坛(ICCAD 2023)”上,Achronix的Speedcore™嵌入式FPGA硅知识产权(eFPGA IP&#xff09…

【Ambari】HDFS基于Ambari的常规运维

🦄 个人主页——🎐开着拖拉机回家_大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁&#x1f…

运动蓝牙耳机什么牌子好?百元蓝牙运动耳机排行榜

​跑步、骑车、健身等运动时,大家都需要一款专业的运动耳机来陪伴,它不仅可以提供高品质的音乐和佩戴舒适度,还可以帮助你掌握运动状态,让你更加专注和投入。今天我为大家推荐几款备受好评的运动耳机,它们都拥有不错的…

C#,《小白学程序》第六课:队列(Queue)其二,队列的应用,编写《实时叫号系统》

医院里面常见的《叫号系统》怎么实现的&#xff1f; 1 文本格式 /// <summary> /// 下面定义一个新的队列&#xff0c;用于演示《实时叫号系统》 /// </summary> Queue<Classmate> q2 new Queue<Classmate>(); /// <summary> /// 《小白学程序…

数据结构与算法编程题22

交换二叉树每个结点的左孩子和右孩子 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define STR_SIZE 1024 typedef struct BiTNode {ElemType data;BiTNode* lchild, * rchild; }BiTN…

Centos 7、Debian、Ubuntu中tree指令的检查与下载

目录 前言 Centos 7中检查tree指令是否安装的两种办法 which指令检查 查看当前版本指令 不同版本下安装tree指令 Centos 7的发行版本 重点 Debian的发行版本 重点 Ubuntu的发行版本 重点 前言 在大多数Linux发行版中&#xff0c;tree命令通常不是默认安装的指令。…

双向链表超详解——连我奶奶都能学会的复杂链表(带头双向循环)

文章目录 前言一、双向链表的概念二、双向链的结构设计三、双链表的基本功能接口四、双向链表接口的实现4.1、创建结点4.2、初始化链表4.3、打印链表4.4、尾插结点4.5、尾删结点4.6、头插结点4.7、头删结点4.8、在pos结点前面插入4.9、删除pos位置的结点4.10、查找链表中的某个…

代码随想录算法训练营第四十五天|139.单词拆分、背包问题总结

LeetCode 139. 单词拆分 题目链接&#xff1a;139. 单词拆分 - 力扣&#xff08;LeetCode&#xff09; 这道题使用完全背包来实现&#xff0c;我们首先考虑字符串是否可以由字符串列表组成&#xff0c;因此dp数组大小为n 1 &#xff0c;其意义是&#xff0c;在n个位置时是否能…

Motion Plan之基于采样的路径规划算法笔记

Motion Plan之搜索算法笔记 背景&#xff1a; 基于采样算法是一种在路径规划中广泛应用的有效方法。它通过在图中随机选择点来生成一个简化的搜索图&#xff0c;从而加速搜索过程。这种方法的主要优点包括减少内存使用&#xff0c;避免计算错误&#xff0c;具有动态障碍物对抗…

前车之鉴: 适用于所有select选择框的 全选反选逻辑,如何只用单个change事件优雅完成

文章目录 实际效果1.1 效果展示1.2 核心功能 Show CodeQ & A彩蛋 实际效果 1.1 效果展示 1.2 核心功能 区别网上其他思路&#xff0c;我这里不需要使用原生点击事件&#xff0c;将全选反选逻辑收敛在一个change事件上 此前已经看过一些全选逻辑同学尝试过后&#xff0c;会…

Re54:读论文 How Context Affects Language Models‘ Factual Predictions

诸神缄默不语-个人CSDN博文目录 诸神缄默不语的论文阅读笔记和分类 论文名称&#xff1a;How Context Affects Language Models’ Factual Predictions ArXiv网址&#xff1a;https://arxiv.org/abs/2005.04611 2020年AKBC论文&#xff0c;作者来自脸书和UCL。 本文主要关注…

C语言--每日选择题--Day24

第一题 1. 在C语言中&#xff0c;非法的八进制是&#xff08; &#xff09; A&#xff1a;018 B&#xff1a;016 C&#xff1a;017 D&#xff1a;0257 答案及解析 A 八进制是0&#xff5e;7的数字&#xff0c;所以A错误 第二题 2. fun((exp1,exp2),(exp3,exp4,exp5))有几…

vcsa6.7打补丁操作

首先到官网中查找到最新的patch&#xff0c;需要有注册账号才可操作 网址链接&#xff1a;https://customerconnect.vmware.com/patch#search 下载后把iso文件上传到磁盘中&#xff0c;vcsa虚拟机中做光盘iso挂接后&#xff0c; 使用浏览器输入https://ip:5480登录&#xff…

ElasticSearch查询语法及深度分页问题

一、ES高级查询Query DSL ES中提供了一种强大的检索数据方式,这种检索方式称之为Query DSL&#xff08;Domain Specified Language 领域专用语言&#xff09; , Query DSL是利用Rest API传递JSON格式的请求体(RequestBody)数据与ES进行交互&#xff0c;这种方式的丰富查询语法…

@ResponseBody详解

ResponseBody() 作用&#xff1a; responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后&#xff0c;写入到response对象的body区&#xff0c;通常用来返回JSON数据或者是XML数据。 位置&#xff1a; ResponseBody是作用在方法上的&…

C++类与对象(上)

&#x1f389;个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名乐于分享在学习道路上收获的大二在校生&#x1f43b;‍❄个人主页&#x1f389;&#xff1a;GOTXX&#x1f43c;个人WeChat&#xff1a;ILXOXVJE&#x1f43c;本文由GOTXX原创&#xff0c;首发CSDN&am…

数据结构—小堆的实现

前言&#xff1a;前面我们已经学习了二叉树&#xff0c;今天我们来学习堆&#xff0c;堆也是一个二叉树&#xff0c;堆有大堆有小堆&#xff0c;大堆父节点大于子节点&#xff0c;小堆父节点总小于子节点&#xff0c;我们在学习C语言的时候也有一个堆的概念&#xff0c;那个堆是…