基于改进区域生长法的羊体点云分割及体尺参数测量

2020-04-17 13:35马学磊薛河儒周艳青姜新华
中国农业大学学报 2020年3期
关键词:羊体内点体尺

马学磊 薛河儒 周艳青 姜新华 刘 娜

(内蒙古农业大学 计算机与信息工程学院,呼和浩特 010018)

羊体尺数据能够反映羊的体格大小、体躯结构、生长发育状况以及各部位之间相对发育关系,是衡量羊生长发育的主要指标。依据体尺数据可以评估羊的生长发育特性、遗传特性[1]。传统的羊体尺参数利用皮尺或测杖等工具人工测量,不仅工作量大,操作繁琐,人为误差较大,而且羊易产生应激反应。本研究在自然状态下对羊进行非接触式体表三维数据获取,并对获取的数据进行处理,实现自动化提取羊的体尺数据。目前,利用计算机视觉技术检测动物的生长信息是研究的热点,主要的研究对象集中在牛、猪等,采用的自动化指标获取方法主要有2种:1)利用单目或双目摄像机采集二维图像,实现动物的体尺参数测量、体重预估[2-4]。这种方法对动物的位姿或环境光照和背景要求较严格,在实际生产中难以得到满足。2)使用三维激光扫描仪或其它点云获取设备用于动物体尺测量及三维重构,但其非常昂贵,不易用于农业生产环境[5]。本研究拟采用三维点云处理算法对羊体点云进行预处理、法向量估计、点云分割及测点提取,以期实现羊体尺参数的无接触式测量。

1 点云数据获取及预处理

1.1 点云数据采集

点云数据采集使用易福门制造的三维摄像机,型号O3D303。摄像机孔径角为60°×45°,图像分辨率为352像素×264像素。易福门三维摄像机工作原理基于光飞时间技术(Time of Flight),通过给目标连续发送光脉冲,用传感器接收从物体返回的光,通过探测光脉冲的飞行时间得到目标物距离。摄像机由独立电源为其供电,通过以太网和计算机进行通信,并实时记录获取的点云数据,环境参数也通过以太网进行修改。本研究试验对象选取3周岁的苏尼特羊标本,使用1台三维摄像机采集羊体点云数据(图1),共获取19 496个点云数据。而使用三维扫描仪可获取492 030个点云数据,数据量庞大且操作比较复杂。

图1 三维摄像机采集的羊体点云数据Fig.1 Sheep body point cloud data captured by 3D camera

1.2 点云预处理

在获取的原始点云数据中,除羊体信息外还有一些无效点云,如墙壁、地面、办公桌等。因此,需要在原始点云数据中使用点云滤波去除无效点云。首先,对原始点云数据使用条件滤波。原始羊体点云数据在x、y、z方向上的取值范围分别为0.95~0.65 m、-0.6~0.65 m、1.1~1.9 m。条件滤波通过设定滤波条件,把不在范围内的数据滤除。其次,使用半径滤波去除点云数据中的离群点及噪声点。离群点为游离在场景中物体表面之外的噪声点,它会对算法造成干扰,影响算法的精度。半径滤波设定每个点在搜索半径内至少有足够多的近邻点,不满足则被删除。设定半径滤波的搜索半径为0.03 m,搜索半径内最少的近邻点数为4个,原始羊体点云经过点云预处理后的结果见图2。羊体点云经条件滤波和半径滤波处理后点云数据量分别为8 287、7 724个。

图2 羊体点云预处理结果Fig.2 Preprocessing result of sheep body point cloud

2 羊体尺参数获取及分析

2.1 羊体点云法向量估计

有效地估计点云法向量是许多点云数据处理的基础。本研究采用主成分分析(PCA)计算点云法向量。平面方程定义为:

ax+by+cz+d=0

(1)

式中:a、b、c为平面参数;d为原点到平面的距离。点云集合Q内任一点pi(xi,yi,zi)的k近邻点的协方差矩阵C为:

(2)

(3)

(4)

主成分分析容易受到外点的干扰,影响算法的精度。因此,在平面拟合之前应先去除点云集合中的外点。本研究首先使用随机采样一致性算法去除点集内的外点,然后由内点数据使用主成分分析计算点云法向量和曲率。

随机采样一致性算法(RANSAC)是一种随机参数估计算法。它通过在样本空间中随机抽取1个子集来初始化模型,然后计算样本空间中所有样本与该模型的偏差,并与设定的阈值进行比较,将所有偏差小于阈值的样本(内点) 组成1个一致集,并记录其大小。按照一定的次数重复上述操作后,选取内点最多的一致集,根据该子集计算的模型为该样本集的最佳模型估计。

使用主成分分析和随机采样一致性算法估计点云法向量的步骤如下:

1)从点pi的k近邻点中随机选取3个点生成平面,计算近邻点pj到该平面的距离dj。

2)选取阈值t,若dj≤t则pj被认为是内点,统计出此平面的内点个数N。

3)重复以上步骤n次,比较选取内点最多的平面。

4)利用步骤3)中得到内点最多的平面,将近邻集合P中到平面的距离大于阈值t的外点去除,利用内点数据使用主成分分析计算点pi的法向量和曲率。

利用上述方法估计的法向量具有二义性,需要对点云数据的法向量重定向,使法向量方向一致。若点pi的法向量不满足式(5),则对其重定向。

n·(vp-pi)>0

(5)

式中:n为点pi的法向量,vp为视点。

为了验证本研究法向量估计方法的有效性,使用不同方法估计点云法向量(图3)。试验生成160个高斯分布的数据,其中内点数据100个(图(3)蓝色点),外点数据60个(图(3)红色点),近邻点数k=10,距离阈值t=0.03,迭代次数n=100。从图(3)看出,使用主成分分析和随机采样一致性算法可以使内点数据法向量方向基本一致。

图3 不同方法估计点云法向量的结果Fig.3 Result of different methods for estimating normal of point cloud

使用主成分分析和随机采样一致性算法对羊体点云法向量估计的结果见图4,试验中取近邻点数k=50,距离阈值t=0.03,迭代次数n=100。

图4 主成分分析和随机采样一致性算法对羊体点云法向量估计的结果Fig.4 Result of normal estimation of sheep point cloud using PCA and RANSAC

2.2 改进区域生长法的羊体点云分割

点云分割将使用特定设备获取的杂乱无章的点云数据,分割成若干个互不相交的子集,每个子集中的数据具有相同的属性特征。点云的区域生长选定初始种子点,作为生长的起点;然后将种子点的近邻点与种子点进行比较,将具有相似性质的点合并起来继续向外生长,直到没有满足条件的点被包括进来为止。本研究在此基础上做了如下改进:1)从点云表面变化最小的地方开始生长,会得到比较好的分割效果,选取点云数据中曲率最小的点作为初始种子点;2)使用正交距离、欧式距离和法向量夹角作为区域生长中判断点云相似性的度量。在区域生长中,除法向量夹角的阈值需要提前设定外,其它两个距离阈值自动计算获得;3)曲率阈值取近邻点的曲率均值,避免了过分割和欠分割现象。

点pi到拟合平面的正交距离d1定义为:

(6)

t1=di,med+2×di,mad

(7)

式中:di,med为近邻点集P内任一点的正交距离的中位数;di,mad为距离的中位数中误差,其定义为:

di,mad=1.482 6×|di-di,med|med

(8)

式中:di为近邻点到拟合平面的正交距离。

点云区域生长中,如果种子点和近邻点具有相似特征,则它们的空间距离较近。使用欧式距离度量两个点的空间距离。点pi到pj的欧式距离d2为:

(9)

如果点pj到种子点的欧式距离大于阈值t2,则pj为外点。t2取近邻点到种子点的欧式距离的中位数。

点pi和pj的法向量夹角θ定义为:

(10)

式中:ni和nj分别是点pi和pj的法向量。

改进的区域生长法步骤如下:

1)找到点云集合Q中曲率最小的点pi,作为区域生长的初始种子,将种子所在区域作为当前区域。

2)对种子的k近邻点采用随机采样一致性算法拟合平面,计算近邻点到平面的正交距离d1,近邻点与种子点的欧式距离d2、法向量夹角θ。

3)计算正交距离和欧式距离的阈值t1、t2,选取夹角阈值θt;若d1≤t1,d2≤t2,θ≤θt,则将该近邻点添加到当前区域。

4)若种子点的近邻点曲率小于曲率的均值,则该近邻点加入种子点序列,并删除当前的种子点,循环执行该过程直到种子序列中没有种子。

5)若当前区域点的数目超过Nmin,则当前区域加入分割序列;迭代上述过程直到所有点已经划归为某个区域。

改进区域生长法对羊体点云数据的分割结果见图5,取Nmin=10,k=300,法向量角度阈值θt=35°。可以看出,改进的区域生长法能有效对羊体进行分割,且不受外点影响。

图5 改进的区域生长法对羊体点云的分割结果Fig.5 Segmentation result of sheep body point cloud by improved region growing method

2.3 羊体尺测点选取及参数计算

利用获取的羊体点云数据,从中选取各体尺测点计算羊体尺参数。羊体尺参数及测点见图6。

羊体点云中肩端点和坐骨结节后端点的连线距离为体长,耆甲测量点到胸深测点的距离为胸深;体长和胸深参数依据欧式距离式(11)计算:

(11)

式中:(xi,yi,zi)和(xj,yj,zj)为体长或胸深参数两端测点的三维坐标,L为体尺参数计算值。前蹄最低点和后蹄最低点的连线为地面基准线,地面基准线表示为l1:Ax+By+Cz=0;耆甲测量点和臀部最高点到地面基准线的距离分别为体高和臀高。体高和臀高利用相应测点到l1的距离公式(12)计算。

a,体长;b,体高;c,臀高;d,胸深a, Body length; b, Body hight; c, Hip hight; d, Chest depth1.坐骨结节后端点;2.耆甲测量点;3.前蹄最低点;4.后蹄最低点;5.胸深测点;6.臀部最高点;7.肩端点。1.The distal end point of the ischial tuberosity; 2.The measurement point of withers; 3.The lowest point of fore leg; 4.The lowest point of hind leg; 5.The measurement point of chest depth; 6.The highest point of hip; 7.The shoulder end point.图6 羊体尺参数及测点Fig.6 Body size parameters and measuring points of sheep

(12)

式中:x、y、z为测点三维坐标;d为相应的体尺参数计算值。

2.4 结果及分析

在Matlab平台下手动选取羊体点云数据上各测点的三维坐标,结果见表1。为降低手动选点带来的误差,各测点均选取4次。

羊体尺参数的手工实测值与三维点云检测结果见表2。实测值通过手工使用卷尺测量获得,卷尺精度为1 mm,考虑到人为测量误差,实际测量羊体长、体高、臀高、胸深各3次,取平均值作为其实测值,并且保持人工测点与体尺算法测点一致。

表1 羊体点云测点坐标Table 1 Measuring point coordinates of sheep body point cloud

表2 羊体尺三维点云检测值与实测值的比较

计算得出,体长的相对误差为1.56%,臀高和胸深的相对误差分别为1.97%和2.27%;体高相对误差为2.36%,误差相对较高。羊体尺参数的最大相对误差为2.36%,在农业应用上达到动物体尺测量的误差要求。总体看,使用羊体点云检测得到的体尺值比实测值略大,误差主要来源由3部分组成:1)三维摄像机获取数据本身的误差;2)羊毛厚度引起的误差,因羊毛较长,手工测量体尺数据存在误差;3)用户选取测点不精确带来的误差,各测点均为手动选取,与真实测点有偏差。

3 结束语

本研究提出基于改进区域生长法的羊体点云分割及体尺参数测量方法,使用易福门三维摄像机采集羊体点云数据。利用点云预处理、点云分割算法从原始点云数据中提取羊体数据;手动选取羊体尺测点数据,依据测点三维坐标计算羊体尺参数。羊体尺参数最大相对误差为2.36%,精度较高。本研究实现了基于三维点云的羊体尺参数的测量,后续可推广到活体羊或其他的养殖行业,为羊养殖业提供福利化生产思路。

猜你喜欢
羊体内点体尺
家畜体尺自动测量技术研究进展
基于Kinect相机的猪弯曲体尺测量算法研究
肉羊体尺测量 用上“智慧眼”
秋季管好羊群要加强卫生工作
浅析导致羊腹泻原因及防治措施
基于罚函数内点法的泄露积分型回声状态网的参数优化
基于内点方法的DSD算法与列生成算法
春季养羊的注意事项
基于Kinect传感器的羊体体尺测量系统*
一个新的求解半正定规划问题的原始对偶内点算法