基于3D视觉的番茄授粉花朵定位方法

2022-09-14 05:20文朝武龙洁花郭文忠梁晓婷
农业机械学报 2022年8期
关键词:花束番茄像素

文朝武 龙洁花,2 张 宇 郭文忠 林 森 梁晓婷,2

(1.北京市农林科学院智能装备技术研究中心, 北京 100097; 2.上海海洋大学信息学院, 上海 201306)

0 引言

番茄是温室生产的主要作物之一,大约90%以上的大型玻璃温室均用来种植番茄,由于番茄属于典型的雌雄同花植物[1],在温室环境内缺乏自然风和昆虫活动,往往导致授粉不良。目前大型温室内番茄授粉方式主要采用熊蜂授粉,但授粉熊蜂存在养殖费用高、生存周期短、重复利用率低下等问题[2]。采用智能授粉机器人可代替人工和熊蜂授粉,具有降低劳动力成本与生产费用以及拥有较高的重复利用率等优点[3]。北京市农林科学院智能装备技术研究中心研发了一种采用机器视觉定位开花花朵、自适应间歇喷气引起花朵震动的智能番茄授粉机器人,并提出一种基于温室内番茄花朵定位方法。而授粉机器人对授粉花朵的精准定位是决定授粉精度和授粉效率的关键,因此,研究一种基于3维(3D)视觉的番茄授粉花朵定位方法是授粉机器人的必要条件。

在花朵的识别上,学术界提出的基于2维(2D)目标检测的框架得到广泛应用[4],该类方法利用花朵的形态、外观以及颜色等特征作为卷积神经网络的摄入信息,以获得更好的识别效果。OPPENHEIM[5]提出一种对温室内番茄花朵检测算法,在不同光照条件下实现了番茄的黄花计数,该方法并未解决对花朵的定位问题。YUAN等[6]提出了一种将 SSD 深度学习技术引入到花卉检测与识别领域的方法,该方法在 VOC2007 上平均准确率为83.64%,在VOC2012 上平均准确率为 87.4%,并引入视频流解决了对2个或多个目标花卉的检测,但其识别准确率和时间效率有待提高,在机器人上不适用。2D场景下的目标检测对于3D真实世界的场景描述依然不够,3D目标检测在定位时返回3D Bounding boxes,而它需要的信息除了2D的RGB图像以外,还包含与之对应的深度图像。王玲等[7]以棉花为研究对象,提出一种面向采摘机器人的棉花激光定位方法,利用形态学图像分割方法和模式识别理论,结合棉花的特性测量了单朵棉花的三维坐标,该方法在单株棉花上识别率达96.76%,利用激光测距和手工测量作对比,其相关系数为0.993 4。该方法与结构光相机原理相似,但处理方法不同,且仅限于单棵棉株使用。王萌等[8]提出一种樱桃小番茄腋芽去除点定位方法,该方法将采集相机安装在机器人手臂上,由手臂牵引相机采集图像,虽然识别率达到了93.94%,但该叶芽摘除执行器与叶芽相对距离为固定距离,不适应温室复杂环境。

在3D目标定位方面,GUPTA等[9]提出了一种在2D目标检测区域卷积神经网络(R-CNN)的框架基础上,增加深度图像进行模型利用的方法。该方法基于RGB和深度图像检测中的轮廓,并生成包含目标每个像素的视差、高度和倾斜角的2.5个维度的提议方法,然后利用卷积神经网络(CNN) 进行特征提取,融合深度卷积神经网络(Depth CNN) 和RGB卷积神经网络分别学习深度图像和2D图像的特征,最后利用支持向量机(SVM)进行分类,但其计算过程相对复杂,难以适用在设施番茄机器人上。CHEN等[10]以面向自动驾驶为场景,提出一种新的目标检测方法,该方法将目标中每一个3D bounding box用一个元组来表示,元组中包含x、y、z、q、c,其中(x,y,z)为中心点坐标,q为方位角,c表示目标类别,t为相应的3D box模板集合。该方法认为,其3D box应具有以下特征:包含点云的高密度区域、不能与free space 重叠、点云不应该垂直延伸在3D box外、box附近的点云高度应该比之低,该方法对光滑平面固体的抓取具有良好的效果,而番茄花束区域为非平滑平面,此方法无法产生高密度重叠。番茄有效授粉区域为花束的实际占有面积区域,以上方法均存在局限性。

针对温室番茄花束花朵的非结构性,即非平滑平面或曲面[11],本文提出一种基于RGB-D结构光相机的番茄授粉花朵定位方法。采用YOLO v4神经网络对温室环境下番茄花束进行识别,提取RGB图像中花束的像素区域。采用主动对齐方式融合深度图像获取点云数据,并使用离群滤波算法对干扰点坐标去噪。最后采用双向均衡算法拟合花束3D box 授粉平面的质心坐标。最终结合手眼标定算法将相机坐标转换为机械臂坐标,并引导机器人授粉末端执行授粉功能。

1 定位方法

1.1 图像采集设备

采集相机为图漾科技公司生产的3D视觉传感器FM851-GI-E1,采用主动双目结构光视觉技术,包括双目红外摄像头、彩色摄像头和光学增强系统,并具有主、被动方式的双目模式切换功能。分辨率包括640像素×480像素和1 280像素×960像素两种尺度,且支持同步尺寸的RGB-D对齐功能,x、y方向测量精度为4 mm,深度z测量精度为2 mm,有效测量范围是0.7~8 m。机器人核心控制器采用工业控制计算机,i7-4700MQ 2.4 GHz CPU、16 GB DDR3L内存和500 GB硬盘。

设施番茄授粉机器人手臂部件为遨博(北京)智能科技有限公司生产的AUBO-i5六轴协同机械臂,臂展为1 008 mm,可满足在0~886 mm范围内工作,定位精度为0.2 mm,且末端最大移动速度为4 m/s。如图1所示,3D工业相机安装在机器人的固定高度处,角度固定,以获得手臂有效工作范围内的最大视野。计算机系统为Ubuntu 16.04系统,算法编程平台使用OpenCV 3.4.5和Qt 5.9,使用Cmake 11和Qmake编译工具实现识别和定位控制系统的开发。神经网络模型在Ubuntu 16.04系统上,基于Darknet框架, 1个12GB GeForce GTX 2080ti GPU,在64 GB内存上进行训练和测试。

图1 番茄授粉机器人结构Fig.1 Structure of tomato pollination robot

1.2 图像采集结果

试验对象选用智能玻璃温室内使用岩棉栽培技术种植的草莓番茄花朵,在番茄开花期(2020年10月20日—11月10日)使用机器人自带工业相机进行图像采集。并在玻璃温室环境下进行拍摄,总共获得100幅RGB花朵图像(1 280像素×960像素) 及其相同尺寸的深度图像。采集的RGB图像与深度图像样例如图2所示。

图2 番茄RGB图像与深度图像Fig.2 RGB image and depth map of tomato

分别在08:00、12:00、18:00采集样本,并根据不同遮挡程度进行分类。如表1所示,试验设定遮挡程度小于5%则判定为无遮挡,遮挡程度大于95%为完全遮挡并不做研究。考虑到晴天中午受太阳光照的影响,适当增加12:00采集的样本数量,增强网络模型的鲁棒性。然后对RGB图像进行平移、旋转、曝光、亮度等调节,将图像扩充到500幅用于神经网络的训练,按照7∶2∶1划分为训练集、验证集和测试集。为验证逆光环境的定位精度,采集时采用顺光、逆光进行拍摄。

表1 不同时间段和遮挡程度样本数量Tab.1 Number of samples in different time periods and degrees of occlusion 幅

1.3 番茄花朵定位方法

本文提出的番茄授粉花朵自动定位方法包含图像预处理、YOLO v4 识别RGB图像中的目标花束、融合深度图像对齐花束区域、点云滤波去噪以及双向均衡算法提取授粉质心坐标等步骤。

在温室环境中,由于光线变化,需提前对相机实时采集的RGB图像亮度、曝光度进行简单预处理,以增强模型的识别精度和鲁棒性[12]。YOLO v4神经网络对目标花束识别提取出花束区域对应的回归框的宽度和高度,计算原始图像中花束的Bounding box,RGB图像融合深度图像进行对齐后计算番茄花束的三维点云坐标[13]。使用统计滤波算法剔除花束附近的干扰坐标,最后使用双向均衡算法计算花束3D box的授粉质心坐标。若坐标位于手臂有效工作范围内,则根据手眼标定算法将相机坐标转换为手臂坐标,并引导授粉末端完成授粉功能。

1.3.1花束区域提取

设施番茄在授粉过程中,采用人工振荡授粉可以提高番茄的坐果率、产量和品质,不受喷药、熏药和室内温湿度的限制,此外可以减少番茄灰霉病的发生[14]。故机器人在执行授粉过程中,采用自适应间歇喷气产生花朵震动模拟人工振荡授粉,喷气和振动授粉的工作范围为番茄花束区域。本文基于YOLO v4 神经网络对番茄花束进行精准识别并提取花束区域。

YOLO v4由BOCHKOVSKIY等[15]提出,利用CSPDarknet 53[16]卷积神经网络进行目标特征提取,引入SPP网络结构,采用3种尺寸张量预测输出,在目标大小不一和部分遮挡情况下都具有较好的检测效果。神经网络预测坐标(tx,ty,tw,th)、图像中目标最左边偏移量坐标(cx,cy)和边界框的高度pw、宽度ph。输出预测值包括bx、by、bw、bh和置信度,置信度为预测结果的可信度,预测值计算公式为

bx=β(tx)+cx

(1)

by=β(ty)+cy

(2)

bw=pwetw

(3)

bh=pheth

(4)

式中bx——目标实际中心X像素值

by——目标实际中心Y像素值

bw——目标实际框宽度

bh——目标实际框高度

tx——预测框X像素值

ty——预测框Y像素值

tw——预测框预测宽度

th——预测框预测高度

β——sigmoid函数

使用YOLO v4对目标花束进行识别,预测输出的矩形框为实际花束区域。

如图3所示,将番茄花原图传入网络输入层, CBM模块进行卷积操作,接着进行批量标准化和激活函数激活,下一步传入CSP等结构完成特征提取;然后传入YOLO结构进行3种尺寸(19×19,32×32,76×76)预测和回归,再回归至原图进行多尺度花束预测。融合3种尺寸特征图完成目标检测,在原图分辨率上宽bx、高by为区域中心提取目标花束,最终获取花束区域图像,即授粉花束在原始图像中的2D坐标区域张量[17-20]。

图3 基于YOLO v4的花束区域提取网络结构图Fig.3 Network structure of extraction of floral area based on YOLO v4

1.3.2图像对齐与去噪

采用RGB-D相机获取番茄花束和植株周边环境的RGB图像和深度图像,并采用相机SDK主动对齐方式对齐,结合点云库(PCL)进行RGB图像和深度图像的点云对齐[21],建立RGB-D相机空间坐标系。RGB图像花束区域提取后,采用区域内色系单视角线性遍历方法,对花束RGB和深度图像区域对齐配准,获取花束区域点云坐标。在RGB图像中,花束区域以黄色色系花朵填充,本文对预测框内像素点进行色系判断,剔除非花朵像素,并进行花束区域点云精对齐操作。图像中每个像素点包含R、G、B通道值(fR,fG,fB)。在判断过程中,采用从左至右、自上而下的线性遍历方法逐一对区域内像素点进行色系判断。像素点色系计算公式为

(5)

式中H——色系,取0~360

max——最大色系

min——最小色系

本文判定H在60~300区域内为黄色色系像素点[22]。由于花束中花朵目标为非平面结构,提取出的花束区域点云数据中常存在一些离群噪声点[23],本文采用统计滤波方法将其剔除[24]。对于目标花束区域内点云,数量为n,每个点云坐标pi(xi,yi,zi)(i=1,2,…,n)到它的空间临近点pj(xj,yj,zj)(j=1,2,…,k)的平均距离di计算公式为

(6)

本文设定k=70,距离di在μ±ασ(μ为平均距离均值,σ为标准差)以外的点为噪声点,其中α取值为1-1/k,取0.3时效果最好。

1.3.3授粉质心坐标计算

授粉质心坐标是定位算法的终极目标,精准计算授粉花束的质心坐标是机器人执行授粉操作的必要条件[25-26]。一个花束区域中,常常含有多个目标花朵,本文提出一种基于三维坐标系的双向均值法计算授粉质心坐标[27],在三维点云集中,采用双平面质心算法获得目标花束空间点云坐标(x,y,z),除此之外,点云信息中还包含各个像素点的R、G、B值[28]。

图像质心也称为图像重心[29],如图4所示,同一授粉花束中花朵分布不规则,存在聚集或单一花朵四周分布现象,此时需要计算该花束的统一授粉质心点,使得花束重心两端的花朵质量相等。

图4 花束图像质心Fig.4 Bouquet image centroid

YOLO v4检测后,将目标花束在2D图像的像素中心坐标值bx、by以及宽度bw、高度bh作为点云的输入,在RGB图像与深度图像对齐后,每个像素点(bx,by)与点云pi(xi,yi,zi)(i=1,2,…,n)的转换公式为

pi(xi,yi,zi)=pindex(x,y,z)

(7)

其中

index=bxbyl

(8)

式中index——像素到点云的索引,对应点pi的3D点云为pindex的实际点云值

pindex——索引点

l——相机图像对齐指数,取1.325

花束中往往存在大量间隙,取一个坐标点作为授粉点时精准性较低。在滤波去噪之后的点云集p中,每个点云pi(xi,yi,zi)(i=1,2,…,n)都含有独立的坐标值,此时需要在宽度bw与高度bh的预测输出框内进行平面拟合,分别从x、y、z方向独立计算花束的质心,在质心上、下、左、右4个方向该花束的距离权重相等,计算公式为

(9)

(10)

(11)

式中n——区域内有效点云个数,不大于200

x0、y0、z0——授粉质心点p0的坐标值

使用双向均值法将花束区域内xi、yi、zi坐标分别取均值,得到一个合理的授粉点,同时去掉较近点导致授粉距离不够和较远点授粉过程带来遮挡和碰撞的情况。

2 花束识别与提取结果

RGB图像在预处理后,使用YOLO v4神经网络模型对番茄花束进行识别,并预测出目标花束中心坐标和包含目标预测框区域,使花束目标在实时图像中实现识别和定位。同时,将该区域与深度图像对齐,减少复杂环境下RGB图像与深度图像精对齐过程。

图5为基于YOLO v4的番茄花束区域提取结果。识别模型所占内存为244 MB,网络试验时输入图像分辨率1 280像素×960像素;花束提取试验结果显示,本文使用的YOLO v4神经网络可以对温室环境下花束进行准确识别,并有效提取出目标花束在原图中的面积区域,网络检测精度平均值(mAP)为97.67%,单幅图像提取时间为14.95 ms,为授粉机器人实现区域性授粉功能提供二维花束区域信息。

3 图像对齐与去噪效果

将RGB图像中各像素点的R、G、B值和深度图像进行对齐[30]。本文在对齐过程中,选用中心点扩散将番茄植株进行对齐,其目的在于将二维像素坐标值与深度值进行对齐,即根据像素点求取对应点的3D坐标值。

对齐后,图像中含有各像素点的R、G、B值和深度X、Y、Z值。如图6所示,对齐效果图中除具有植株颜色特征外,还添加了植株轮廓3D值,并可根据RGB图像中某像素点映射出该点对应的3D值。此外,由于环境干扰等现象,图像中往往含有很多干扰噪声数据,如图6c对齐效果图左、右上角都含有许多小黑点,该噪声点在使用过程中不仅没意义,而且还增加了算法的时间复杂度,因此本文将图中除植株区域外的离群区域都定义为噪声点,并采用统计滤波算法将其剔除,单幅图像对齐及去噪平均耗时为100 ms。

图6 图像对齐和滤波去噪Fig.6 Image alignment and filtering denoising

4 手眼标定

授粉机器人机械臂(手)在执行授粉前,需要3D相机(眼)实时对番茄植株的RGB图像和深度图像进行定位操作,其中,RGB图像用于花束的实时检测,在识别检测后,若含有授粉花束,则需要融合深度图像进行花束目标定位。并在机器人手眼标定后转换为机械臂末端坐标,机器人使用该坐标引导机械臂末端完成授粉功能。

本文使用矩阵公因子相乘[31]计算机器人相机与机械臂之间的距离相关系数,其中机器人相机获取的实时坐标RE和机械臂实时坐标RH均为1×3行列式,标定过程中随机选取机器人相机视野和机械臂工作范围内6组对应坐标。手眼标定参数θ和机械臂工作坐标RH的计算公式为

RH=REθ

(12)

其中

(13)

式中RE1~RE6——相机采集的6组坐标值

RH1~RH6——机械臂的6组坐标值

在选取每组坐标期间,以视野最大和手臂伸展最远为最佳,本试验的标定参数矩阵系数为

(14)

5 定位性能分析

在定位过程中,主要定位区域为独立花束区域,使用喷气方式在该区域内达到最佳授粉效果。使用的YOLO v4神经网络检测所生成的候选区域定义为授粉区域,但花束区域实际特征为非规则平面,本文使用区域双向均值法拟合该花束曲面,得出一个较准确的授粉定位点。花束区域点云数据处理效果如图7所示,在相机所采集的番茄植株RGB图像上,使用神经网络进行花束区域提取,并映射在深度图像上,同时采用均值拟合该花束区域,使该区域内深度值均相等,为授粉末端提供可靠的深度定位信息。

图7 授粉花束区域位置RGB图像与深度图像Fig.7 RGB and depth processing of pollination bouquet area position

本文使用机械臂手动控制器实时显示的坐标与算法获取的坐标进行对比。首先手动控制机械臂末端移动至花束授粉点作为实际值,定位数据中包含花束的2D像素坐标、相机获取的花束3D坐标、标定转换坐标和机械臂坐标。其中,本文方法获得花束3D坐标的平均时间为300 ms,试验分别对比X、Y、Z值的相对误差。

试验过程中,选择20个不同花束进行定位算法准确度分析,包含不同时间(08:00、12:00、18:00)、不同遮挡程度下温室内番茄花束的识别与实际定位功能。其中每个花束都含有2D像素坐标、相机点云坐标、通过手眼标定转换得到的手臂坐标以及机械臂反馈的实际坐标等信息,接着对标定转换坐标与实际反馈坐标数据进行对比分析,并通过拟合曲线表述其误差变化特性(图8)。表2为单一花束包含的各项坐标信息。

图8 定位试验结果三维图Fig.8 3D map of positioning test results

表2中,花束二维像素坐标是由YOLO v4神经网络识别出的花束像素区域,根据花束图像重心算法计算出花束的重心坐标(Xi,Yi)。在图像对齐去噪后,根据二维像素坐标转换得3D坐标(X3D,Y3D,Z3D),该坐标由3D相机实时获取的深度通过质心算法计算所得。在相机获取坐标中,X、Y轴坐标最小精度为±0.001 mm,而Z轴最小精度为±1 mm,Z轴坐标值表示为目标花束至相机视点的实际距离,例如花束1的Z3D为970.00 mm,手工测得其距离约为970 mm;机器人手臂工作最远距离约为1.2 m,在花束2中,相机获取坐标值Z3D为1 791.00 mm,导致标定转换坐标Ybz为0.922 77 m,但实际坐标Yt是0.523 46 m,误差约为0.4 m,其误差是由花束中花朵间距较大导致的。由于相机结构光投射现象导致其深度不准[32],从而产生误差,在实际运用过程中,可使用花束区域均值剔除其干扰,从而提高计算精度。

图8为定位试验结果三维图,平稳淡蓝色层(下层)为对应的实际坐标。由图8可知,波峰的Z值接近最大值4 cm,波谷的Z值最接近-4 cm,X的范围为-0.8~1.0 m,Y的范围为-0.4~0.4 m,Z的范围为-0.4~0.6 m。由于温室内番茄花朵生长的复杂性,出现波峰的主要原因是花束间隙太大,花束中花朵少,且花朵间间隔较大导致深度数据较少,从而使深度值增大。出现波谷的原因主要来自遮挡问题,且遮挡程度达80%以上。但Z值出现了负数,原因是在逆光强光环境下,光线对结构光相机造成干扰,其主要原因是强太阳光对结构光相机发射的红外信号进行了隔离和反作用,但机器人实际工作中,有效工作深度恒大于0,负值无效。图8中其余平稳值为顺光和无强光环境下计算所得,该数据是有效范围内的定位数值。从总体上看,彩色层与淡蓝色层的间隙较小,即通过算法计算的坐标值与实际坐标值误差较小,在遮挡程度小于80%的情况下,本文算法可对温室内番茄花束进行准确定位,说明本文算法具有较强的实用性,该识别定位精度可为授粉机器人授粉定位提供可靠依据[33]。

将本文算法部署在授粉机器人上,考虑强光逆光对相机的影响,试验选择早晨或傍晚无强光条件下,在大型玻璃温室内对番茄盛开花束进行算法验证(图9),并在不进行曝光度调节情况下验证本文算法的适用性,试验判定当系统获得有效3D坐标值,且机器人成功执行授粉动作时即为定位成功。

图9 定位算法验证试验现场图Fig.9 Field diagram of location algorithm verification test

温室内单个番茄植株上,平均花束个数约为4个,系统定位成功数略比实际花束数量低,这是由于某些花束被枝叶遮挡超过了80%。而在定位成功后,机器人成功执行授粉出现误差的主要原因是花束距离机器人手臂太远,不在有效工作范围内。综上,本文使用的定位算法能够满足授粉机器人对番茄花束的定位要求,并能为授粉机器人执行授粉提供一个有效的定位方法。定位精度有待提高,其主要影响因素是结构光相机在光线较强环境下无法测距,该现象也是光学研究中亟待解决的问题[34],本文不做研究。

6 结论

(1)采用YOLO v4神经网络实现番茄花束识别和区域提取,能够解决机器视觉实时花束目标检测问题,并能有效提取出花束在RGB图像中的授粉区域;解决RGB图像和深度图像精对齐;代替复杂的花束图像分割过程,实现花束区域的完整采集和提取。

(2)通过区域内色系单视角线性遍历方法对齐花束RGB图像和深度图像,并映射出花束区域点云数据,能够提高花束区域内点云精度,花束以外区域进行粗对齐,减少复杂点云的计算过程,提高授粉精度。

(3)使用双向均衡算法计算花束3D区域授粉质心坐标,解决花束区域不平滑导致的非线性点云数据,从X、Y、Z三维坐标方向均衡计算各个方向的均值,并排除花束区域内大空隙点云干扰数据,拟合出三维花束平面区域,可以有效提高机器人授粉精度。在实际验证中,使用的神经网络对花束的提取精度达97.67%,花束区域提取时间为14.95 ms;图像对齐与去噪时间为100 ms,算法成功获取花束质心点云坐标时间为300 ms;总体来说,在没有强光照射、遮挡程度小于80%时,本文算法基本能够实现机器人对温室内番茄花朵的定位,并成功执行授粉动作。

猜你喜欢
花束番茄像素
A Real Bouquet最美的花束
像素前线之“幻影”2000
“像素”仙人掌
HOME家系列
涂一涂
能吃的花束!“吃货”的浪漫
高像素不是全部
编辑部故事
爱挑剔的番茄
曹操的秘密日记之我们班的花束队