【果树农药喷洒机器人】Part5:基于深度相机与分割掩膜的果树冠层体积探测方法

文章目录

  • 一、引言
  • 二、树冠体积测量对比方法
    • 2.1冠层体积人工测量法
    • 2.2冠层体积拟合测量法
  • 三、基于深度相机与分割掩膜探测树冠体积方法
    • 3.1像素值与深度值的转换
    • 3.2树冠体积视觉探测法
    • 3.3实验分析
  • 总结


一、引言

果树靶标探测是实现农药精准喷施的关键环节,本章以果树冠层体积的计算结果作为实现变量喷药决策的数据依据。基于上一章实例分割模型对树冠图像分割成掩膜的基础上,提出一种基于深度相机的果树冠层体积探测方法,即视觉探测法。采用深度相机作为感知单元,通过扫描果树获得冠层深度图像,其深度值表示冠层与相机之间的实际距离,通过换算得出树冠掩膜的像素点代表的实际面积,进而估算出单棵树冠的真实体积,并与人工测量法进行比较,以分析视觉探测法的精度。

二、树冠体积测量对比方法

2.1冠层体积人工测量法

本节对人工测量树冠体积的方法进行探究,并将其结果作为比较基准。传统的人工测量方法简单地将果树冠层水平截面近似于椭圆,通过将冠层等高度分割为多份圆台,最后求和得出冠层体积。然而,树冠的轮廓形状一般不规则,因此难以确定椭圆截面的长、短半轴;再者,被分割的树冠部分并不一定只是圆台的形状。因此传统的人工测量结果并未能真实反映树冠体积,其测量精度较难保证。
为得出果树冠层较为精确的人工测量结果,本章在传统方法的基础上进行优化,测量步骤具体如下:

首先,将单棵果树的冠层从上到下看作由圆台、锥体或是其他近似的规则几何体组成;
接着,将其水平分割成多个独立的几何体,截面简化为圆形。
最后,根据各部分形状进行单独计算并相加得到整个冠层体积。

以纺锤形冠层的果树为例进行分析,绘制了人工测量冠层体积的示意图,如图4-1所示。图中的树冠近似锥形,但并不规则,其中上、下两层近似圆锥,而中间部分近似圆台。为便于计算,本方法使用皮尺直接测量出的截面周长替换半径,即r = l/2π,并代入基础式中。通过以下式推导出树冠体积的人工测量模型。
在这里插入图片描述

2.2冠层体积拟合测量法

由于柑橘树冠属于类球体型,本节根据单棵树冠的外轮廓形状拟合成一个相近的、有规则的立方体,进而实现对体积的估算,该方法简称为拟合测量法,下文均以此替代。以成熟期的柑橘树为例,其树冠拟合过程如图4-2所示。
在这里插入图片描述
具体处理步骤如下:
步骤1:图4-2(a)为原始图像,经过MSEU R-CNN实例分割模型处理后,得到图4-2(b)所示的实例分割效果图;
步骤2:通过剔除背景仅保留树冠掩膜部分,如图4-2(c)所示;
步骤3:之后采用图像二值化、开运算等图像处理操作,提取出树冠掩膜的轮廓(是否贴近于原始轮廓取决于图像分割精度),见图4-2(d);
步骤4:以掩膜轮廓下窄上宽的特征,适合拟合成图4-2(e)的梯形;
步骤5:最后通过梯形绕中轴线旋转360°,拟合成图4-2(f)所示的圆台。

三、基于深度相机与分割掩膜探测树冠体积方法

3.1像素值与深度值的转换

为探究二维图像与三维空间之间的转换关系,根据所用视觉传感器不同,其方法各异。若使用普通相机采集图像,一般采用标定法获取单位像素代表的实际面积(下文均以A表示该值)。例如:丁为民等将黑色硬纸板作为标定物,通过图像处理软件计算多个采样距离下标定板的A值,利用该值和对应的采样距离制成散点图,发现A与采样距离之间具有明显的幂函数关系。然而,每个普通相机内参可能有所不同,若要获得较为准确的A值,均要进行相对复杂的标定实验才能得到幂函数中合适的系数。本章以D435i深度相机为数据采集设备,该款相机配备了二次开发功能包,其中就有采用欧几里得度量法(指用于测量n维空间中两个点之间的真实距离D(x, y),或称为欧氏距离),其计算原理由如下式表示:
在这里插入图片描述
通过第3章的实例分割算法可获得树冠的掩膜,但掩膜以二维图像的像素量表示,并非树冠真实参数,不能作为精准喷施的决策依据。由于D435i深度相机可同时拍摄目标树冠的RGB图像和深度图像,采用欧几里得度量法可测量深度图像中的欧氏距离Hr;通过OpenCV图像处理库中的算法计算,可获得RGB图像中树冠的像素高度Hp,两者比值的平方即为A值。该值再乘以掩膜像素面积,从而计算出树冠垂直投影面的实际面积Sr。具体计算过程通过如下的式表示:
在这里插入图片描述

3.2树冠体积视觉探测法

本节基于实例分割模型的处理结果,并结合上节所述方法,对单株柑橘树冠层的几何特征进行探测,主要参数包括树冠面积、高度、宽度以及体积,其探测原理的示意图如图4-4所示。

在这里插入图片描述
针对以相机对果树冠层体积进行探测的问题,丁为民等提出“多点测量法”,通过构建树冠实际垂直投影面积Sr与树冠体积对数lnV间的模型,研究两者之间的相关性,即基于已知的冠层面积来推算体积。为得出不同果树Sr与lnV的相关性,丁为民的科研团队通过实验构建了梨树、桂花树等果树体积计算模型。实验结果表明,该模型的决定系数均在0.9以上,说明Sr与lnV之间存在明显的相关性;同时也表明在不同树种之间,树冠垂直投影面与树冠体积的线性关系规律是成立的。
基于上述学者的研究,本章对果园内的20棵柑橘树进行采样,并在树冠垂直投影面积Sr的基础上,结合人工测量法准确测得的树冠体积V,以最小二乘法构建柑橘树冠层的Sr与lnV间的关系模型,即“基于深度相机和分割掩膜的果树树冠体积探测方法”,简称为“视觉探测法”,其相关性结果如图4-5所示。
在这里插入图片描述

3.3实验分析

上一节采用三种测量模型并对所选8棵柑橘树进行了体积探测,得出了各个方法对应的树冠体积平均值。本节将三种树冠体积探测方法的测量结果汇总于表4-4中。并根据误差评估式计算出误差、样本标准差,作为误差评估指标。其中,误差1和误差2分别指拟合测量法、视觉探测法跟人工测量法之间的误差值。为更为直观地对比三种测量手段得到的体积值之间的差距,绘制了图4-9所示的体积平均值以及标准差条形图。

在这里插入图片描述
根据表4-4中树冠体积平均值以及标准差,绘制了图4-10所示的折线图,综合展示了三种方法测量得到的8棵橘树冠层体积。按照大小依次排序为:橘树3>橘树1>橘树6>橘树2>橘树8>橘树7>橘树5>橘树4。但是三种测量方法均存在一定的偏差,尤其是橘树3的冠层体积,最大标准差值为0.12。其次为橘树8,其体积测量的标准差值达到了0.102,而所有橘树冠层体积测量的标准差大于0.05,其中最小的标准差值为0.062,由测量1号、7号橘树时产生。

在这里插入图片描述
综合上述图表可知,人工测量相比真实的体积可能存在一定的误差,造成的原因可能是树冠形状在转化时,将原本不规则的形状抽象成规则形状后,丢失了部分空间的体积值,导致所测体积值相对偏小。但相比拟合测量法将树冠作为整体的计算方法,人工测量通过将冠层水平分割成几部分进行分块计算,降低了每个部分的误差,数值相对精确,故将其作为标准值具有较强的可靠性。

总结

针对目前主流传感器探测果树靶标存在的各种问题,本章提出一种基于深度相机和分割掩膜的果树冠层体积探测方法,并通过对比实验研究其探测精度。并且,为探究视觉探测冠层体积的精确度,提出一种人工测量和拟合测量冠层体积法,并以人工测量的体积为基准,与视觉探测法的结果进行误差分析。实验结果表明,视觉探测法与人工测量体积值的主要误差小于8%,最小误差仅为2.2%,因此视觉探测法测量得到的体积值更加接近于手工测量的结果。验证了基于深度相机的视觉探测树冠体积方法具有良好的测量精度。

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

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

相关文章

IP核之fifo

一.FIFO简介 FIFO (First In First Out,即先入先出),是一种数据缓冲器,用来实现数据先入先出的读写方式。 二,FIFO实现原理 FIFO是采用一种先入先出的实现原理 就如图按照D1到D10的顺序输入那么读取的时候也是按照D…

SQL | 检索数据

1-检索数据 1.1-检索单个列 SELECT prod_name FROM Products; 上述SELECT语句从Products表中检索一个名为prod_name的列。 所要查找的列在select后面,from关键字指出从那个表查询数据。 输出如下: prod_name8 inch teddy bear12 inch teddy bear18…

锁定Mac的内置键盘,防止外接键盘时的误触

场景:把你的外接键盘放在mac上,然后打字时,发现外接键盘误触mac键盘,导致使用体验极差 解决方案:下载Karabiner-Elements这款软件,并给它开启相关权限。 地址:https://github.com/pqrs-org/Ka…

Active Directory安全和风险状况管理

风险评估和管理 风险评估和管理是主动安全性和合规性管理不可或缺的一部分。 发现关键基础设施组件中的风险行为和配置对于阻止网络入侵和预防网络攻击至关重要。帐户泄露和配置错误漏洞是用于破坏网络的常见技术。当评估、监控和降低 Active Directory 基础架构的风险时&…

无涯教程-Perl - my函数

描述 此函数声明LIST中的变量在包围式块内按词法范围。如果指定了多个变量,则所有变量都必须用括号括起来。 语法 以下是此函数的简单语法- my LIST返回值 此函数不返回任何值。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl -wmy $string "We are the w…

页面静态化(模板引擎Freemarker)

1、浏览器请求web服务器 2、服务器渲染页面,渲染的过程就是向jsp页面(模板)内填充数据(模型)。 3、服务器将渲染生成的页面返回给浏览器。 所以模板引擎就是:模板数据输出,Jsp页面就是模板,页面中嵌入的jsp标签就是数据&#x…

Node.js |(二)Node.js API:fs模块 | 尚硅谷2023版Node.js零基础视频教程

学习视频:尚硅谷2023版Node.js零基础视频教程,nodejs新手到高手 文章目录 📚文件写入🐇writeFile 异步写入🐇writeFileSync 同步写入🐇appendFile / appendFileSync 追加写入🐇createWriteStrea…

SpringCloud实用篇6——elasticsearch搜索功能

目录 1 DSL查询文档1.1 DSL查询分类1.2 全文检索查询1.2.1 使用场景1.2.2 基本语法1.2.3 示例1.2.4 总结 1.3 精准查询1.3.1 term查询1.3.2 range查询1.3.3 总结 1.4.地理坐标查询1.4.1 矩形范围查询1.4.2 附近查询 1.5 复合查询1.5.1 相关性算分1.5.2 算分函数查询1&#xff0…

Prometheus入门

Prometheus(普罗米修斯) 是一种 新型监控告警工具,Kubernetes 的流行带动了 Prometheus 的应用。 全文参考自 prometheus 学习笔记(1)-mac 单机版环境搭建[1] Mac 上安装 Prometheus brew install prometheus 安装路径在 /usr/local/Cellar/prometheus/2.20.1, 配置文件在 /usr…

08-1_Qt 5.9 C++开发指南_QPainter绘图

文章目录 前言1. QPainter 绘图系统1.1 QPainter 与QPaintDevice1.2 paintEvent事件和绘图区1.3 QPainter 绘图的主要属性 2. QPen的主要功能3. QBrush的主要功能4. 渐变填充5. QPainter 绘制基本图形元件5.1 基本图像元件5.2 QpainterPath的使用 前言 本章所介绍内容基本在《…

聚观早报 | 三星和LG发展电车零件业务;宝马召回国产和进口电车

【聚观365】8月12日消息 三星和LG加速发展电车零件业务宝马召回部分国产和进口电动汽车华为有意推动车BU独立运营长城汽车CTO就“中国汽车在一起”发声比科奇芯片被Contela选为单元的核心组件 三星和LG加速发展电车零件业务 随着电动汽车需求的增加,对电池、芯片等…

新一代分布式融合存储,数据场景All In One

1、摘要 2023年5月11日,浪潮信息全国巡展广州站正式启航。会上,重磅发布新一代分布式融合存储AS13000G7,其采用极致融合架构设计理念,实现同一套存储满足四种非结构化数据的“All In One”高效融合,数据存力提升300%&a…

28.Netty源码之缓存一致性协议

Mpsc Queue 基础知识 Mpsc 的全称是 Multi Producer Single Consumer,多生产者单消费者。Mpsc Queue 可以保证多个生产者同时访问队列是线程安全的,而且同一时刻只允许一个消费者从队列中读取数据。 Netty Reactor 线程中任务队列 taskQueue 必须满足多个…

pycharm离线安装依赖包

一、对于单个下载离线包,然后安装 1、先去https://pypi.org/网站下载离线包,下载到本地; 2、从磁盘中找到刚刚下载包,点击确定就可以安装了 二、将本地项目所有依赖包全部下载下来,然后批量在另一个项目&#xff…

造个破谣而已,咋还用上AI了?

最近,央视等各大媒体纷纷曝光了全国多起用AI炮制网络谣言的案例,其中涉及灾害、安全事故、刑事案件等多类谣言内容,造谣的方式更是从文案到图片、视频不一而足。 看到这样的消息,总是会加重我们对AI的担忧,联想到此前的…

windows使用/服务(13)戴尔电脑怎么设置通电自动开机

戴尔pc机器通电自启动 1、将主机显示器键盘鼠标连接好后,按主机电源键开机 2、在开机过程中按键盘"F12",进入如下界面,选择“BIOS SETUP” 3、选择“Power Management” 4、选择“AC Recovery”,点选“Power On”,点击“…

C语言每日一题:16:数对。

思路一&#xff1a;基本思路 1.x,y均不大于n&#xff0c;就是小于等于n。 2.x%y大于等于k。 3.一般的思路使用双for循环去遍历每一对数。 代码实现&#xff1a; #include <stdio.h> int main() {int n 0;int k 0;//输入scanf("%d%d", &n, &k);int x…

springboot第35集:微服务与flutter安卓App开发

Google Playplay.google.com/apps/publis…[1]应用宝open.qq.com/[2]百度手机助手app.baidu.com/[3]360 手机助手dev.360.cn/[4]vivo 应用商店dev.vivo.com.cn/[5]OPPO 软件商店&#xff08;一加&#xff09;open.oppomobile.com/[6]小米应用商店dev.mi.com/[7]华为应用市场dev…

Pycharm解决启动时候索引慢的问题

设置里去掉update里面的两个勾 shared indexes中&#xff0c;把自动下载索引改成不下载使用本地索引

综合能源系统(6)——综合能源综合评估技术

综合能源系统关键技术与典型案例  何泽家&#xff0c;李德智主编 综合能源系统是多种能源系统非线性耦合的、多时间与空间尺度耦合的“源-网-荷一储”一体化系统&#xff0c;通过能源耦合、多能互补&#xff0c;能够实现能源的高效利用&#xff0c;并提高新能源的利用水平。对…