【果树农药喷洒机器人】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.mfbz.cn/a/65357.html

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

相关文章

编码技巧——Sentinel的blockHandler与fallback

本文介绍Sentinel的blockHandler与fallback的区别,背景是:发生限流时,配置的sentinel的blockhandler没有生效而fallback生效了;排查原因,从而给出Sentinel配置异常降级和限流降级的代码写法; 在查看源码前…

记录问题: servlet获取项目包绝对路径

【2023-8-8 23:46:27 星期二】 如何获取在webapp下的路径?而不是target包下的webapp目录 比如这里应该获取到 F:\Tiam\Desktop\freemarker\freemarker-demo01\src\main\webapp 而readPath总是获取到 F:\Tiam\Desktop\freemarker\freemarker-demo01\target\freemarker-demo0…

体验自制免费开源闯关学SQL

文章目录 前言mac安装nodejs启动体验 前言 sql是常用必不可少的一种语言,我们都或有各种各样的学习经历,最近看鱼皮大佬开源了一款自制的闯关学SQL项目,该项目是纯前端语言,不需要太多依赖以及前置知识,直接下载就可以…

事务,不只ACID | 京东物流技术团队

1. 什么是事务? 应用在运行时可能会发生数据库、硬件的故障,应用与数据库的网络连接断开或多个客户端端并发修改数据导致预期之外的数据覆盖问题,为了提高应用的可靠性和数据的一致性,事务应运而生。 从概念上讲,事务…

使用langchain与你自己的数据对话(五):聊天机器人

之前我已经完成了使用langchain与你自己的数据对话的前四篇博客,还没有阅读这四篇博客的朋友可以先阅读一下: 使用langchain与你自己的数据对话(一):文档加载与切割使用langchain与你自己的数据对话(二):向量存储与嵌入使用langc…

常用开源的弱口令检查审计工具

常用开源的弱口令检查审计工具 1、SNETCracker 1.1、超级弱口令检查工具 SNETCracker超级弱口令检查工具是一款开源的Windows平台的弱口令安全审计工具,支持批量多线程检查,可快速发现弱密码、弱口令账号,密码支持和用户名结合进行检查&am…

DLA 神经网络的极限训练方法:gradient checkpointing

gradient checkpointing 一般来说,训练的过程需要保存中间结果(不管是GPU还是CPU)。前向传播根据输入(bottom_data)计算输出(top_data),后向传播由top_diff计算bottom_diff(如果某个变量打开梯度进行训练的话&#xff…

python实现对图油画、卡通、梦幻、草图、水彩效果

本篇博客将介绍如何使用wxPython模块和OpenCV库来实现对图像进行灰度化、二值化、伽马校正、色彩空间转换和图像反转这5种效果的合并程序。程序可以通过wxPython提供的GUI界面来选择图片路径和效果类型,程序会将处理后的图像保存到指定路径并打开。 步骤一&#xf…

Java-对对象的拷贝、抽象类和接口的区别、Object类、对象的比较方法和内部类

目录 1.Clonable接口和深拷贝 2.抽象类和接口的区别 3.Object类 4.获取对象的信息 5.对象比较方法equals 6.内部类 1.Clonable接口和深拷贝 Java 中内置了一些很有用的接口, Clonable 就是其中之一,Object 类中存在一个 clone 方法, 调用这个方法可以创建一个对…

jupyter lab build失败,提示需要安装版本>=12.0.0的nodejs但其实已从官网安装18.17.0版本 的解决方法

出现的问题如题目所示,这个问题差点要把我搞死了。。。但还是在没有重装的情况下解决了😘。 问题来源 初衷是想安装lsp扩展,直接在jupyter lab网页界面的extensions中搜索lsp并点击install krassowski/jupyterlab-lsp,会提示需要…

tomcat虚拟主机配置演示

一.新建用于显示的index.jsp文件,写入内容 二.修改tomcat/apache-tomcat-8.5.70/conf/server.xml配置文件 匹配到Host那部分,按上面格式在后面添加自己的域名和文件目录信息 主要是修改name和docBase 保存退出重启tomcat,确保tomcat运行…

QT笔记——QT自定义事件

我们有时候想发送自定义事件 1:创建自定义事件,首先我们需要知道它的条件 1:自定义事件需要继承QEvent 2:事件的类型需要在 QEvent::User 和 QEvent::MaxUser 范围之间,在QEvent::User之前 是预留给系统的事件 3&#…

python免费下载安装教程,python编程软件 免安装

本篇文章给大家谈谈python免费下载安装教程,以及python编程软件 免安装,希望对各位有所帮助,不要忘了收藏本站喔。 百度网盘 请输入提取码 提取码: wifx 下载好记得把python文件解压,里面有32位和64位的,根据自己配置…

【工作中问题解决实践 十】一次内存泄露排查-MAT使用指南

最近体验了一把当医生的感觉,定位病根病因,感觉这种要揪出问题的感觉很爽,并不觉得麻烦,这里将整个排查过程记录一下,方便之后再遇到类似问题有应对之道。 问题背景 2023-07-18 早上还在睡梦中的俺被一条条报警消息铛…

Spring事务管理

1.什么是事务 数据库事务是指作为单个逻辑工作单元执行的一系列操作,这些操作要么一起成功,要么一起失败,是一个不可分割的工作单元。 涉及到事务的场景非常多,一个 service 中往往需要调用不同的 dao 层方法,这些方法…

区块链技术助力慈善,为您的善举赋予全新力量!

我们怀揣着一颗温暖的心,秉承着公开透明的理念,带着信任与责任,倾力打造了一套区块链技术驱动的去中心化捐赠与物资分发系统,通过智能生态网络(IEN)解决捐赠不透明问题的系统,让您的善举直接温暖…

Linux命令200例:cd用于改变当前工作目录(常用)

🏆作者简介,黑夜开发者,全栈领域新星创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。 &…

【Rust】Rust学习 第五章使用结构体组织相关联的数据

5.1 定义结构体并实例化结构体 定义结构体,需要使用 struct 关键字并为整个结构体提供一个名字。结构体的名字需要描述它所组合的数据的意义。接着,在大括号中,定义每一部分数据的名字和类型,我们称为 字段(field&…

数据结构--最小生成树

数据结构–最小生成树 连通图 \color{red}连通图 连通图的生成树是 包含图中全部顶点的一个极小连通子图 \color{red}包含图中全部顶点的一个极小连通子图 包含图中全部顶点的一个极小连通子图。 若图中顶点数为n,则它的生成树含有 n-1 条边。对生成树而言&#xff…

断路器回路电阻试验

试验目的 断路器回路电阻主要取决于断路器动、 静触头的接触电阻, 其大小直接影响正常 运行时的发热情况及切断短路电流的性能, 是反应安装检修质量的重要数据。 试验设备 回路电阻测试仪 厂家: 湖北众拓高试代销 试验接线 对于单断口的断路器, 通过断口两端的接线…