植物三维点云分割
2022-01-19赖亦斌陆声链钱婷婷宋真陈明
赖亦斌,陆声链,钱婷婷,宋真,陈明
1.广西师范大学计算机科学与工程学院,广西桂林541004
2.广西师范大学广西多源信息挖掘与安全重点实验室,广西桂林541004
3.上海市农业科学院农业科技信息研究所,上海201403
全球人口正在不断增长,水土等自然资源面临着流失、匮乏的处境,加上全球新冠疫情的影响,人类对于粮食的需求将会逐渐增大[1]。为适应粮食增产的迫切需求,需要育种专家采用高效的育种方案与策略选育出高产高质的优质作物品种。然而,与高通量测量作物基因序列的技术相比,传统的以人工测量作物生长参数为基础的植物表型获取手段通常效率低下,从而制约了现代农业智能育种的进程[2]。此外,人工测量具有主观性,导致测量参数不准确;人工测量与植物直接接触,还可能对被测量作物造成不可逆转的破坏。因此,自动化的无损高通量作物表型监测技术已成为现代数字化农业领域的的研究热点。植物表型通常指植物个体或群体由自身基因决定且处于特定的环境下所表现出的可观察的形态特征[3],植物表型研究是综合评估分析植物的各种性状。构成植物表型性状的植物器官通常包括根、叶、茎和果实等,其中叶器官构成了大多数植物的主要性状。对植物叶器官的大小、颜色、形状等表型参数进行实时监测和评估分析,可以实时检测病虫害,预测作物产量,为优质作物品种选育、粮食增产提供发展空间。因此,用某种传感器在自然环境下自动计数、分割与识别作物冠层中的叶器官是高通量植物表型研究的一项主要任务。在以往的工作中,研究人员大多从二维图像和三维点云这两个角度研究植物器官的分割任务。
文献[4]针对作物病虫害图像的特点,提出了一种基于模糊C-均值聚类算法的作物病虫害图像自适应分割方法。文献[5]提出了一种基于马尔科夫随机场最优化模型的联合分割算法,实现了自然光条件下棉花叶片的自动分割。文献[6]提出了一种基于粒子种群算法(particle swarm optimization,PSO)与最大类间方差法相结合的分割方法,得到了生菜叶片分割图。文献[7]基于遗传算法提出一种用于植物叶片疾病自动监测和分类的图像分割算法。文献[8]提出了一种从无人机获得的图像中识别与计数烟草植物的算法。然而,基于二维图像获取叶器官的表型信息具有一定的局限性,因为叶器官之间互相遮挡,所以二维信息并不能充分反映完整的叶片信息。随后,研究人员在三维尺度上探索植物表型,采用激光雷达[9]、超声波传感器[10]、激光扫描[11]等先进设备获取植株的三维点云模型,进而获得植株的表型参数。
文献[12]提出了一种从彩色点云中分割生菜并估算鲜重的新颖方法。文献[13]首次在农业领域提出了基于激光雷达探测的茎叶分割和表型性状提取方法。由于相机设备的成本相对低廉,近年来基于双目立体视觉和多目视觉等三维重建方法得到了广泛应用。文献[14]根据多视图立体(multi-view stereo,MVS)方法重建黄瓜、辣椒、茄子的三维点云,采用区域生长算法分割叶片并提取株高、叶长、叶面积等植物表型参数。文献[15]从不同视角拍摄植物以构建植物的三维结构,根据分水岭算法对顶视图进行分割后生成种子点,再将种子点扩展到三维图像上生长,从而准确自动地分割每一片叶子。文献[16]扩展了现有的基于欧氏距离和光谱的聚类方法,并用迭代方法分割三维油菜点云器官。文献[17]提出了一种基于体素的卷积神经网络(voxel-based convolutional neural network,VCNN),用于玉米茎叶的分类和分割。基于三维点云进行植物表型特征和参数的自动提取是当前农业信息技术研究的热点问题[18],因此针对三维植物点云自动分割的相关研究具有重要的意义。然而,植物的点云分割具有一定的挑战性,一是因为植物本身的结构复杂又不规则,且器官之间往往存在遮挡现象;二是因为植物的自然生长环境易受光照、风向、天气等物理条件的影响,所以通过传感器等设备获取的植物点云数据除了包含一定的噪声外还存在不均匀、无序性等问题[19]。
鉴于此,本文根据不同种类植物的三维点云开展了针对性的分割实验,以烟草、玉米和黄瓜群体3种植物为样本数据,进行了预处理、群体分离、边缘提取、叶片分割等操作,并对分割结果进行评估分析。
1 点云数据预处理
无论是三维激光扫描仪还是基于图像的MVS方法,获取的点云数据都有一定的噪声,尤其是后者获取的点云数据更容易受到背景的影响。为了消除离群点与多余的背景点,需要对点云数据进行滤波预处理[20],具体方法如下:
1)统计滤波
统计每一个点近邻的空间距离信息,设定阈值去除点云中的噪声点。
2)体素滤波
由扫描仪扫描的点云通常密度较大,如果采用基于体素的滤波方法对点云进行降采样,就可以在不破坏点云原有形态的基础上降低点云数量,从而减轻后续分割任务的计算负担。
3)颜色滤波
黄瓜群体点云存在标签纸以及盆等多余点云,而MVS生成的点云还有RGB颜色信息。考虑到这些背景颜色与植物部分的颜色存在一定的差别,将RGB转换到色调、饱和度、明度(hue,saturation,value,HSV)颜色空间,再根据H色调信息尽量筛选出只包含植物部分的点云。
2 基于PCL的三维点云分割方法
三维点云分割的方法有很多种类,具体可分为基于边缘、基于区域、基于属性、基于图、基于模型等类型的分割方法[19]。根据点云库(point cloud library,PCL)框架可以实现基于欧氏距离的聚类、基于随机采样一致性(random sample consensus,RANSAC)分割、区域生长分割、超体聚类+基于凹凸性聚类等分割方法。
2.1 基于RANSAC的分割算法
在三维点云数据中,一些如直线、圆柱体、球形等较规则的几何模型都有一个共同特点:就是可以用相应的方程(数学特征)描述特定的几何模型。RANSAC算法可以在噪声中拟合出符合某个模型的数据,如识别出点云中的地板、墙面等背景点云以及在地面上摆放着的规则物体,或者是人工设计的具有规则性的圆柱体等建筑类型的点云。对于形状不规则的植物器官,RANSAC算法虽然可以分割出具有近似圆柱体特征的茎杆,为后续的分割操作提供便利,但其应用会受到限制。
RANSAC算法的大致过程如下[5]:根据预先设定的参数拟定一个估计的几何模型,再用这个估计模型对整个三维空间随机采样,可以拟合出符合条件的点。例如:设定一个距离阈值和特定的几何模型,随机采样点云数据中的点并计算这些点与设定的几何模型之间的距离,若在阈值范围之内则这些点称为局内点或内点,若不在阈值范围之内则称为局外点或外点。每进行一次随机估计的迭代都会统计内点的数量,当达到一定的迭代次数后,选取内点数量最大的那次结果作为分割结果,这样就可以把三维点云数据中与估计模型最佳匹配的点云分割出来。
2.2 基于欧氏聚类的分割方法
欧氏聚类分割方法是一种基于近邻信息属性的分割方法,这个近邻信息就是在三维空间中点与点之间的欧氏距离。依据空间中的距离,将小于距离阈值的点云作为一个集群。
2.3 基于区域生长的分割方法
区域生长分割的目的是根据平滑度约束合并足够接近的点,以便将具有相同特征的连通区域分割出来,同时能保证分割后的部分保留较好的边缘信息[21]。该算法的输出是点云聚类的集合,每一个聚类包含一组点。同组的点具有相同的特征,因而被认为是同一光滑曲面的一部分。区域生长算法的基本思路是:根据曲率大小选出区域中曲率值最小的一个初始种子点,接着在种子点邻近的区域搜索与该种子点有相似特征的点,并将这些搜索到的点合并到种子区域中。然后将合并后的点作为新的种子点继续搜索,直到种子区域中所有像素周围没有相似特征的点为止。算法的具体步骤[22]如下:
步骤1初始种子点的选取
依据点云的曲率值将输入点云排序,选择曲率最小的点作为初始种子点,则该点所在的区域即为最平滑的区域。从最平滑的区域开始生长可减少分割片段的总数,提高分割效率。将曲率排序后选出的点添加到种子集合中。
步骤2邻近区域的搜索
设置一个空的种子点序列和空的聚类集合,从已排序的点云中选出初始种子点添加到种子点序列中,并搜索其邻域点。
步骤3相似准则的判断
比较每一个邻域点与当前种子点法线之间的夹角,若角度小于平滑阈值,则将当前区域添加到当前点;若该邻域点的曲率小于曲率阈值,则将其加入种子集合,并将当前种子点从种子序列中移除。
循环执行上述步骤,直至种子序列为空。
2.4 超体素聚类与基于凹凸性聚类
超体素聚类与基于凹凸性的聚类方法[23]分为两部分:一是超体素聚类,类似于图像中超像素的概念,这种聚类方法会将场景的点云过分割。根据每一个点的局部信息整合成一个超体素,需要设置主要参数seed_resolution和voxel_resolution来限制即将形成的体素网格的大小。二是在超体素的基础上再聚类,需要计算不同点云块之间的凹凸关系,而凹凸关系则根据凸性准则和健全性准则来判断。这种基于凹凸关系的分割方法也称为局部凸连接打包(locally convex connected patches,LCCP)方法。
2.5 基于近邻法向信息的边缘提取
在二维图像上,像素值在某个方向上发生突变的地方通常视为图像的边缘。根据图像边缘的定义方式[24]可知,三维点云上的边缘点通常处于两个相交面的交界处。因此,对每一个点进行拟合计算得到其近邻点的法向量角度,若某一个点的法向量夹角相对周围的点发生了突变,则说明该点为边缘点。
具体的步骤如下:设定一个k阈值和角度阈值,k阈值用来搜索点云中每一个点的k近邻点;用最小二乘法将这k个近邻点中拟合成二维平面,并将这些点投影到这个平面上;计算每个点与k个投影点之间所形成的角度。若这个角度值的标准差大于设定的角度阈值,则判断这个点为边缘点。
3 实验结果
本文的三维点云分割实验采用C++语言结合开源库PCL来实现,并在Dell-PC latitude 3490笔记本电脑上测试。PCL提供了强大的三维点云数据处理功能,包括点云数据的读取、可视化、滤波、关键点提取、分割、配准、识别、曲面重建等。在数字领域、虚拟农业领域中,PCL对于三维植物点云数据处理来说非常重要。通过跨平台支持的嵌入式设备,将PCL作为基础平台开发出可以提取植物三维信息的程序,对于三维植物建模具有重要的意义。
3.1 实验样本数据
实验采用的样本数据是以三维激光扫描仪获取的烟草和玉米植株,以及根据MVS重建方法获取的黄瓜群体。三维激光扫描仪获取的.obj格式的三维点云需要通过PCL中的IO模块将其转换为.pcd格式。
3.2 数据预处理
预处理的主要过程如图1和2所示。用统计滤波去除烟草点云中的离群点如图1中的(a)和(b)所示,用体素滤波降低点云密度如图1中的(c)和(d)所示,用RANSAC去除地面点云如图2中的(a)和(b)所示,用颜色滤波去除非叶子部分的点云如图2中的(c)和(d)所示。
图1 三维植物点云的预处理过程Figure 1 Pre-processing process of 3D plant point cloud
图2 三维植物群体点云的预处理过程Figure 2 Pre-processing process of 3D plant population point cloud
预处理过程的相应参数如表1所示。
表1 预处理过程的各项参数Table 1 Parameters of pre-processing
将预处理后的点云作为后续分割任务中的输入数据。
3.3 烟草植株器官分割
对于烟草植株,可以取不同的曲率阈值和平滑度阈值,采用区域生长算法分割后为每一个聚类赋色,从而得出不同的分割结果如图3所示。颜色是随机分配的,红色的点不属于任何类别。
图3 烟草植株分割结果Figure 3 Tobacco plant segmentation results
3.4 玉米植株器官分割
对于玉米植株,取不同的曲率阈值和平滑度阈值执行区域生长算法,从而计算出最佳的分割结果如图4所示。
图4 玉米植株分割结果Figure 4 Corn plant segmentation results
玉米的茎杆具有类似圆柱体的特征,于是用RANSAC模型拟合出玉米原始点云的茎杆部分,再根据区域生长算法得到结果如图5中的(a)~(c)所示。
图5 分割结果Figure 5 Segmentation results
3.5 黄瓜群体器官分割
对于黄瓜群体,分割的需求需要针对特定的问题。若要从群体中分离出每一个植株,则可用欧氏聚类方法将包含盆栽的群体植株点云分割为单个植株点云,如图6所示。
图6 分割结果Figure 6 Segmentation results
当分割植物群体中的叶片器官时,用区域生长算法分割预处理后的黄瓜叶片点云,取不同的曲率阈值和平滑度阈值执行区域生长算法,从而得出最佳的分割结果如图7所示。
从图7中看出:大部分叶子均可以分割到理想位置上,但不可避免地出现两片叶子分割为同一片叶子的情况,可见用区域生长算法对植物点云分割需要考虑这种重叠的现象。使用区域生长算法对3种植物进行分割实验,区域生长算法设置的参数如表2所示。
图7 基于区域生长的黄瓜群体分割结果Figure 7 Segmentation results of cucumber population based on region growing
表2 区域生长算法的各项参数Table 2 Parameters of pre-processing
使用超体素聚类+LCCP聚类的方法分割黄瓜群体点云,设置的主要参数如下:voxel_resolution为0.008 5,seed_resolution为0.150 0,concavity_tolerance_threshold为2,smoothness_threshold为10,其中voxel_resolution和seed_resolution这两个参数会影响超体素网格的大小,完成聚类结果如图8所示。
图8 基于超体聚类+LCCP的黄瓜群体分割结果Figure 8 Cucumber population segmentation results based on supervoxel clustering+LCCP clustering
相比于区域生长算法,超体素聚类+LCCP聚类的方法可以解决叶片分割中部分重叠的问题,但是与叶片相连的茎秆有时也会聚为一类。因此,本文引入边缘滤波的方法(类似于图像的形态学腐蚀)对黄瓜群体点云进行多次边缘提取操作,结果如图9所示。
图9 黄瓜群体的边缘提取结果Figure 9 Edge extraction results of cucumber population
通过观察可以发现:随着边缘滤波次数的增加,叶片器官逐渐减小,叶片之间的接触现象也会减少,且细长的茎秆比叶器官更早消失。对于经过2次边缘提取的群体点云,可以执行超体素聚类+LCCP聚类操作,如图10所示。
图10 基于边缘提取后的聚类结果Figure 10 Clustering results based on edge extraction
经过边缘提取后再进行分割操作,可以观察到两片叶子划分为同一片叶子的重叠现象相较之前减少了,而且部分茎秆也在边缘提取过程中被去除,减少了聚类中茎秆与叶片相连的现象,但是较小的叶器官会存在被滤除的风险。
3.6 误差分析
完成分割后通过统计每个聚类中包含的点云数量来评估分割结果,烟草聚类结果的点云数量统计如表3所示。
表3 烟草聚类结果的点云数量统计Table 3 Points statistics of tobacco cluster results
从表3中可以发现:单一传统的区域生长方法对于烟草植株器官分割的效果不太理想,靠近茎杆的叶子(索引为7的类)会被分为一个单独的聚类。设置更精确的参数可能会得到更精确的结果,但参数是人为设置的,这就需要大量的重复试验。因此,根据输入点云特征自动确定阈值参数是一项重要的研究工作,这会大大提高分割算法的效率,减少人工干预分割结果的影响。玉米聚类结果的点云数量统计如表4所示。
表4 玉米聚类结果的点云数量统计Table 4 Points statistics of corn clustering results
从表4中可以看出,已被分配到某一个类别的点云数量占总点云数量的88.3%,也就是意味着还有11.7%的点云未被归类。
使用RANSAC抽取茎秆后的玉米聚类结果的点云数量统计如表5所示。
表5 使用RANSAC抽取茎秆后的玉米聚类结果的点云数量统计Table 5 Points statistics of corn clustering results after using RANSAC to extract corn stalks
对比表4与5的结果可以看出:顶部的器官被当作茎杆提取出来,故聚类结果中只有5类点云簇。已分配的点云数量占总点云数量的96.9%,还剩下3.1%的点云未被分配。
4 结语
本文根据不同类型植物的三维点云开展了针对性的分割实验。初步结果表明:在植物三维点云分割方面还有许多问题需要考虑,其中叶片器官重叠现象影响了自动分割的性能,而边缘提取可以在一定程度上弱化植物叶器官的重叠现象,为自动提取作物叶器官表型信息的研究提供新的线索。
三维点云分割在许多领域中都有着广泛的应用,尤其是对农业领域中植物的表型测量具有至关重要的作用[14]。对植物进行三维建模以获取表型信息的关键在于提取植物的叶片、茎杆等器官并计算叶长、叶宽等参数,这离不开三维点云分割算法。传统的点云分割算法需要凭经验设定合理的阈值参数,而参数的大小会影响分割结果的好坏。因此,对于结构复杂的植物,要实现精确的点云分割面临较大的挑战,后续工作需要研究如何基于输入点云特征自动地选取参数。深度学习技术虽然在二维图像分割上取得了明显的效果,但是在三维点云分割上还有相当大的潜力可以挖掘。文献[17]使用了三维体素卷积神经网络分割了玉米茎叶,并与传统方法、PointNet[25]、PointNet++[26]点云深度学习框架进行对比,从而表明深度学习方法分割三维植物点云器官是一种新趋势。