王 果,王 成,王宏涛,张成龙,杨福芹
(1.河南工程学院 土木工程学院,郑州 451191,中国;2.河南理工大学 测绘与国土信息工程学院, 焦作 454000,中国; 3.中国科学院 空天信息创新研究院 数字地球重点实验室,北京 100094,中国; 4.北京控制工程研究所,北京 100190,中国)
株数计数是特定区域内准确的植株数量[1],作为研究出苗率和产量分析的重要参数,玉米植株计数有助于评估玉米生长状况和田间管理,对玉米估产和智慧农业具有重要意义[2-3]。人工实地考察法是玉米株数识别最常规的方法,该方法对玉米植株具有一定的损伤性,需要耗费大量的人力和物力,且对现场经验具有较大的依赖性,尤其对于高密度种植区域,容易出现错记、漏记现象[4-5]。
激光雷达(light detection and ranging,LiDAR)技术的出现与不断发展,为农田环境下作物的识别应用提供了新的技术手段。一方面利用激光雷达技术使得玉米株数获取更加准确,另一方面由于外业数据获取自动化程度高,大大降低了玉米株数获取的人力成本,节约了数据采集时间,且由于非接触的测量方式,避免了对作物的损伤,成为目前作物生长参数获取和处理的研究热点[6-9]。国内外学者利用激光雷达技术针对不同作物开展了相关研究,LEI等人[10]利用无人机激光雷达进行玉米数据获取并研究玉米叶面积密度的提取方法,为玉米发育速度和育种提供合理的种植密度参考。GUAN等人[11]利用机载激光雷达通过局部邻域特征分割单行大豆植株,利用均值漂移方法对单株大豆进行提取。ZERMAS等人[12]以玉米为例,研究随机点云的滑动行为,提出随机截取的节点(randomly intercepted nodes,RAIN)算法,实现玉米茎叶的分离。JIN等人[13]利用地面扫描激光点云,采用快速区域卷积神经网络(fast region convolutional neural network,Fast R-CNN)对玉米的茎杆进行训练,结合区域增长方法对单个玉米植株进行分割。LIN等人[14]通过地面扫描仪对玉米进行实验,在点云配准的基础上,利用玉米植株的圆柱几何信息进行玉米茎秆的识别。JIANG等人[15]利用无人机激光雷达点云,借助冠层高度模型(canopy height model,CHM)中包含的植株高度,发展了固定窗口局部最大值算法,实现了玉米成株数的自动检测。
目前,国内外针对点云分割算法已经具有大量研究,但对于农田尺度非结构对象玉米等作物的点云分割和处理技术较少[16],已有的作物识别方面的研究,对农田尺度作物的生长环境和状况具有较大的依赖性,而玉米农田通常具有种植密度较高、植株之间遮挡较为严重等特征,使得现有的农田作物识别方法针对玉米农田适应性较差[17]。
本文中利用飞马SLAM100手持扫描仪对农田真实环境下的玉米田块进行数据采集,利用同时定位与地图构建(simultaneous localization and mapping,SLAM)点云生成过程中的先验纹理特征和垂直度特征,对玉米株数自动识别算法进行研究,获取玉米茎秆数量,为玉米作物3维仿真、田间管理、玉米估产和智慧农业等提供支撑。
作为典型的竖直生长作物,玉米植株在空间上具有近似垂直于地面、空间上具有一定间隔的特点,且在利用SLAM进行扫描的过程中,可以得到彩色的玉米田块点云。在进行玉米田块扫描时,扫描者在扫描时通常将SLAM设备置于胸前高度或者相当持平的高度,相当于SLAM设备处于侧视的角度进行数据采集,虽然由于激光的穿透性可以获得玉米植株顶部的点云,但却缺少玉米植株顶部的纹理,因而,获得的玉米植株顶部点云具有缺少红绿蓝(RGB)纹理信息的特点,为利用SLAM点云进行玉米株数识别提供了依据。本文作者提出的方法主要包括点云垂直度计算与垂直点云提取、全彩色点云灰度化及玉米植株顶部点云提取、密度聚类法玉米株数识别等步骤。
玉米植株具有典型的垂直生长特性,对于玉米植株表面点云,当前查询点的邻域点所拟合平面与水平面之间的关系可以用垂直度[18]进行描述,如图1所示。对当前查询点q的近邻点进行平面拟合,将该拟合平面的法向量记为n,同时,将水平平面的法向量记为z,那么这两个向量之间的夹角θ的余弦值定义为垂直度,用qv表示,可用下式进行计算:
(1)
式中:θ取值范围为[0°,180°];qv取值范围为[0,1]。
如图1所示,对于玉米植株点云,当qv=1时,表明点q的垂直度最大,此时,法向量n和z的夹角为90°;当qv=0时,表明点q的垂直度最小,此时,点q及周围的紧邻点和水平面平行。通过设置适当的垂直度阈值qth,便可对原始玉米田块点云进行垂直度分类,分离出近似垂直于地面的点云数据。
经过垂直度计算,获得近似垂直于地面的点云数据之后,由于真实田块的复杂性,依然包含垂直于地面的杂草和部分地面点。根据SLAM设备处于侧视的角度进行数据采集缺少玉米植株顶部纹理这一特征,可采用全彩色点云灰度化方法进行玉米植株顶部点云提取,从而去除垂直度计算过程中的非玉米植株点云。
本文中采用彩色转灰度的经典加权平均Luninance算法,该算法依据心理学公式进行转换,根据人眼对亮度感知而调节出的标准化参数,广泛应用于数字图像处理软件,其基本算法如下式所示:
I(x,y)=0.299×R(x,y)+0.587×
G(x,y)+0.114×B(x,y)
(2)
式中,I(x,y)为(x,y)处的灰度值;R(x,y)、G(x,y)和B(x,y)分别代表(x,y)处的红色、绿色、蓝色色彩分量值。将SLAM获得的真彩色玉米田块3维点云中的RGB信息,通过Luninance算法将彩色点云转换为灰度点云,并进行灰度归一化。通过灰度转换,得到具有灰度属性的点云,设定灰度阈值为Ith,便可对经过垂直度分类的点云进行玉米植株顶部提取,得到玉米植株顶部点云。
利用SLAM点云中玉米植株的竖直度特征和扫描过程中植株的先验纹理特征进行玉米植株顶部的自动提取之后,为了识别单株玉米并统计玉米植株数,将基于密度的聚类算法(density-based spatial clustering of applications with noise,DBSCAN)[19-20]引入农田环境下识别的玉米植株顶部点云进行单株玉米分割,该算法包含两个参数(ε,Pmin),其中ε表示点集邻域的距离,Pmin表示在以ε为距离阈值的邻域内包含的最小点数。该算法的基本原理如图2所示。
图2 DBSCAN算法基本原理Fig.2 Basic principle of DBSCAN algorithm
通过DBSCAN算法,可得到单株玉米植株顶部点云,统计聚类数目,即可获得玉米株数。
选择黄河流域矿区的实际农田进行实验,实验区位于河南省洛阳市新安县,实验地块中心地理坐标为34.81161493°N,112.10713860°E,海拔498.73 m。该地区属暖温带大陆性季风气候,光照充足,四季分明,北邻黄河流域,适合玉米作物生长和种植。整个实验田块地势平坦,种植密度平均为9株/m2。
采用飞马SLAM100手持移动式激光雷达进行实验数据采集,该扫描仪具有360°旋转云台,点云覆盖范围为270°×360°,具有16个1级激光通道,内置3颗500万像素的摄像头,视场角为水平200°、垂直100°,扫描频率为320000点/s,最大测程达120 m,能够同步获取被测对象的纹理信息,生成3维真彩色点云和局部全景影像,将获取的点云进行手动裁剪,去除田块周边的杂乱数据之后,获得实验玉米田块全彩色点云如图3所示。
图3 实验玉米田块的全彩色点云Fig.3 Color point cloud of experimental corn field
实验玉米田块全彩色点云灰度化后的点云如图4所示。
图4 实验玉米田块的灰度化点云Fig.4 Gray point cloud of experimental corn field
将实验田块的点云进行垂直度计算,设置垂直度阈值qth=0.8,得到提取的垂直点云如图5所示。
图5 实验玉米田块的垂直点云提取结果Fig.5 Vertical point cloud extraction results of experimental corn field
设定灰度阈值Ith=0.8,得到玉米植株顶部点云的提取结果,如图6所示。
图6 实验玉米田块的玉米植株顶部提取结果Fig.6 Top of corn plant extraction results of experimental corn field
设置DBSCAN算法中的参数ε=0.2 m,Pmin=5,对玉米植株顶部点云进行分割,得到分割后的单株玉米顶部如图7所示。图中,不同颜色代表不同的植株顶部(颜色随机循环显示),共识别出359株玉米。
图7 实验玉米田块的玉米植株顶部分割结果Fig.7 Top of corn plant segmentation results of experimental corn field
不同平台的激光雷达点云由于扫描点云密度、扫描视角、信息丰富程度等存在一定的差别,导致现有针对机载和地面架站式的激光雷达的算法并不适用于SLAM点云。此外,对于点云提取效果的分析,由于缺乏统一准则的实验测试数据集,因此,研究人员需要获取特定场景和对象的点云数据开展实验验证,不同的算法之间缺乏可对比性,目前常采用目视的方式评定[21]。从图6、图7可以看出,采用本文中设计的算法,利用SLAM数据,能够将田块的玉米植株顶部进行分割,并实现玉米株数自动识别。
为进一步定量地分析SLAM点云玉米植株自动识别效果,人工现场数实地考察实际株数为388株,与实际株数进行比较计算,完成精度J验证,如下式所示:
J=(1-|E-F|/F)×100%
(3)
式中:E为经过算法自动识别的玉米株数;F为实验田块玉米的真实种植株数。玉米株数自动识别的准确率为92.53%,取得了较好的株数识别效果,进一步验证了利用SLAM点云和本文中设计方法能够实现玉米株数的自动识别,且具有参数简单、自动化程度高等特点。分析原因如下:(a)利用手持移动式激光雷达进行实验数据采集,获得了丰富的点云和纹理信息;(b)手持移动式激光雷达机动灵活,获取的数据信息完整,避免了固定站式激光雷达迁站和不同站间点云配准对玉米植株提取和识别的影响;(c)利用了SLAM点云中玉米植株的竖直度特征和扫描过程中植株的纹理特征等先验知识;(d)使用了法向量、垂直度、Luninance、DBSCAN等成熟的算法和开源代码,提高了SLAM点云玉米株数自动识别的整体稳定性。
针对农田环境中玉米株数识别的需求,本文中提出了一种利用SLAM点云的玉米株数自动识别方法,充分利用SLAM点云获取的丰富纹理信息和点云信息,引入垂直度特征和扫描中植株点云的先验纹理特征,进而借助DBSCAN算法进行玉米植株的区分与株数自动识别。实际农田的数据结果表明,本文中的方法能够实现农田玉米株数的自动识别,且参数简单,具有较高的自动化程度,为农田玉米株数自动识别提供了一种新的方法。