基于Kinect相机的香梨重量预测方法
2023-10-24张润芝
张润芝 张 晓 吴 刚
(塔里木大学信息工程学院,新疆 阿拉尔 843300)
随着新疆库尔勒香梨知名度的提高,产业不断扩大,对香梨采后包装、深加工的技术与设备提出了新要求[1-2]。香梨包装销售与深加工中的一个重要环节是香梨分级,该环节可使香梨分级定价销售,提高香梨的经济价值[3]。重量是库尔勒香梨采后分级的重要标准之一,众多学者[4-8]研究了不同结构与方法的机械称重式分级机,降低了人工成本、提高了分级效率。阿克苏红旗坡的农场也引进了果品自动称重分级流水线,但因称重时频繁碰撞果损率过高[9]。
因果蔬的体尺参数与其重量有一定的关系,国外有研究[10-14]通过苹果、猕猴桃、杏子、樱桃等果实的体尺参数建模来估计其重量。国内有研究[9,15]通过机器视觉获取香梨、苹果的几何外形特征预测果实的重量。通过机器视觉非接触式测量果实的体尺参数预测果实重量并分级可有效降低机械分级果损率过高的问题,但二维图片只能提供果实的二维信息,构建果实重量预测模型的精度不高。
陈炳舟等[16-17]运用超声波传感器阵列及双目摄像头获取被测物点云数据并拟合表面模型计算体尺参数。RGB-D相机也可获取被测物点云数据,常用的RGB-D相机有微软推出的Kinect系列;通过采集被测物的彩色和深度图像生成点云数据,其深度图像通过ToF(渡越时间)法获取,不易受外界环境光变化影响,被广泛应用于三维重建领域[18]。研究拟选取Kinect DK相机搭建香梨图像采集装置;通过RGB图像和深度图提取香梨的点云,对香梨点云进行预处理,去除噪声、空间坐标校正、分离香梨点云与背景点云;最后通过插值法计算香梨表面模型,计算其长、宽、高与体积并通过体积预测香梨重量,以期为香梨分级装置的开发提供依据。
1 测量原理
1.1 香梨三维点云的预处理
Kinect相机拍摄香梨经RGB图像与深度图像对齐后生成原始三维点云,包含冗余背景点和噪声点,且点云可视化后呈倒立倾斜的像,故需对原始点云进行滤波、坐标变换、背景去除等预处理工作,得到正立竖直香梨点云。
由图1可知,预处理不但可去除大量冗余和错误点云,而且方便后续计算体尺参数。
图1 点云预处理流程图
li=
(1)
(2)
(3)
1.1.2 点云的坐标变换与校正 初始点云数据以Kinect相机镜头为坐标原点计算坐标,试验时Kinect相机不是绝对平行于地面,故被测物在原始坐标系下的点云是倒立倾斜的。为方便后续计算被测物体尺参数,需将被测物点云竖直,故提出一种坐标变换的方法。
(4)
(ux,uy,uz),
(5)
(6)
(7)
(8)
运用Ransac算法再次拟合平面,找出x=0、y=0时z的坐标值z0,将每一个点云的z坐标值减去z0,使点云背景平面与z=0的平面重合,完成坐标校正。
1.1.3 背景滤除 Ransac算法拟合平面时,拟合平面点云作为内点,除拟合平面外的点作为外点。处理后,点云中只包含背景平面和香梨表面,故提取外点即可得到仅包含香梨的点云。
1.2 构建模型
经点云预处理后,输出香梨点云如图2所示,需将其插值构成香梨表面模型后计算其体尺参数。一部分香梨(宿萼果)尾端会有突起,针对突变点云,在插值时选用基于网格的自然邻点插值法,可更好地拟合真实香梨表面,使后续计算更精准。具体过程:首先检测全部香梨点云,找出X轴、Y轴的最大值与最小值,分别将X轴、Y轴最大值与最小值间的距离等分为n份,构成一个n×n的网格;然后用z=f(x,y)形式的曲面与香梨点云数据拟合,拟合曲面始终经过香梨点云,在网格点(xi,yj)进行曲面插值计算出zk;最后通过网格点构建网格图,网格图为三维曲面,网格曲面无颜色,网格边有颜色其颜色因zi值而定。
图2 香梨表面模型构建图
(9)
(10)
zk=f(xi,yj),k=0,1,…,n2。
(11)
1.3 体尺参数计算
将香梨模型最大横截面矩形的长记为香梨的长,最大横截面矩形的宽记为香梨的宽,香梨模型的最高值记为高。
通过自然邻点插值后,香梨由n2个六面体构成,所有六面体体积之和即为香梨体积V。随着网格数目逐渐增多,六面体个数增加,体积计算越精确,但网格数越多,插值算法的计算速度越慢。兼顾精度与速度,n取1 000。体积计算示意图如图3所示,为方便示意图展示体积计算原理,示意图中n取30。六面体为香梨网格模型中任取的最小网格单位,将其近似看作长方体,故香梨体积为所有长方体的体积之和。为方便编写体积计算算法,将每个网格点的Z坐标值视为长方体的高,长方体的底面积S与香梨点云X轴、Y轴的最大值和最小值与n有关,若n确定,则底面积确定且唯一,体积的计算式可表示为:
图3 体积计算示意图
(12)
(13)
1.4 香梨重量预测
同品种的成熟香梨含水量大致相同,可以通过测量香梨的体积V与重量M计算出香梨密度ρ。随机选取10个香梨作为样本,通过高精度电子秤测量其重量,通过排水法测量其体积,计算得平均密度为0.997 g/cm3,标准差为0.012 7,说明样本香梨密度偏差不大,可以用香梨样本平均密度0.997 g/cm3表示香梨密度。按式(14)预测香梨重量。
M=ρ×V。
(14)
2 试验平台搭建
2.1 试验样品
于2022年10月1日购买70个库尔勒香梨,采用排水法测量香梨的体积,使用游标卡尺测量香梨的长、宽、高,并使用电子秤测量香梨重量。
2.2 试验装置
利用Kinect相机设计试验平台,其深度相机工作在NFOV(窄视场)非装箱模式下,分辨率为640×576,工作区间为0.50~3.86 m;彩色相机分辨率为4 096×3 072。采用锐能牌数显游标卡尺(精度0.1 mm,误差±0.2 mm);量程为1 000 mL的量筒(精度为10 mL);记号笔;精度为1 g的电子秤。
2.3 试验方案
使用Matlab驱动Kinect相机采集图像,相机由支架固定竖直朝下,相机镜头距地面500 mm。为减少干扰,在镜头下方放置一半径为150 mm的白色圆形底板,采集图像时,将香梨样本卧倒放置于底板内,然后激活上位机采集图像,将生成的点云保存为pcd格式。采用自主编写的上位机程序处理点云数据,生成香梨表面模型,最终计算出香梨的体尺参数及重量。
3 结果与分析
3.1 参数计算与误差分析
采用排水法测量香梨体积,使用游标卡尺测量香梨的长、宽与高,每个样本重复测量3次取平均值,将排水法及游标卡尺测得的值看作真实值。采用Kinect分别对25个香梨样本拍照,经预处理及插值建模后计算其体尺参数(见表1)。由表1可知,长、宽、高、体积测量值与真实值的误差较大,无法用于分级。长、宽测量误差分析是因为tof(渡越时间)获取深度图技术本身边缘精度低,如图4所示,Kinect获取的香梨边缘点云坐标不准确,与真实香梨相差较大,故点云预处理时将边缘点云滤除,因此长、宽的测量值偏小;高度误差产生的原因是Kinect不是绝对垂直于地面,高的测量值是果实表面最高点在地面的投影到Kinect的距离Z2减去果实表面最高点到Kinect的距离Z1,而果实高的真实值是果实表面最高点到地面的投影距离,故高的测量值总是小于真实值;香梨体积是由香梨点云插值建模得到的,香梨点云的长、宽、高均偏小,因此体积也偏小。其中,长、宽、高的平均误差分别为11.62,12.41,13.54 mm,体积的平均误差为60.51 cm3。
表1 香梨体尺参数测量值与真实值对比
图4 香梨边缘点云滤除图
香梨长、宽、高、体积检测结果的精度为长>宽>高>体积,是因为香梨果实的长比宽大,所选25个香梨果实长的平均值为76.6 mm,宽的平均值为61.4 mm。香梨宽度在梯度变化上比长度变化明显,因此在获取香梨果实RGB图像时,宽度方向上信息缺失比长度方向上多。虽然长、宽检测原理相同,但是宽度的检测结果相对较差。体积估算值误差包含了长、宽、高的误差,故体积检测的误差最大。长、宽、高、体积的测量误差都具有单向性,系统误差起主导作用,因此通过误差修正,减少系统误差,使测量值更精确。
3.2 误差修正
表2 误差补偿后香梨体尺参数对比分析
由表2可知,经补偿后,25个香梨样本体尺参数测量值误差减小,长、宽、高、体积的平均相对误差分别为2.8%,1.9%,3.9%,2.8%。经误差修正后,各参数的测量误差显著降低,满足实际生产需要。
3.3 香梨重量的预测
选取10个新的香梨样本,采用经过误差修正后的体尺参数测量方法在相同条件下测量其体积,再将体积代入式(14)计算出重量作为预测值;最后用电子秤测量其重量作为真实值,试验数据见表3。
表3 香梨重量预测值与真实值对比
由表3可知,样本重量绝对误差最大为4.3 g,最小为0.1 g,最大相对误差为3.5%,平均相对误差为1.96%。
4 结论
搭建了简易试验平台,在距地面50 cm处对25个香梨样本拍照,进行体尺参数测量试验,通过点云预处理获得香梨表面的竖直点云;通过插值算法从离散点云中找到香梨曲面构建出香梨模型;使用微元法的思想通过香梨模型计算出香梨体积,计算香梨各体尺参数的测量误差;通过分析测量误差找出误差补偿值后重新选取25个香梨样本,重复上述步骤,计算经过误差补偿后的各香梨体尺参数并计算测量误差,经分析得出,在距地面50 cm处采集图像的前提下,香梨各体尺参数测量值的平均相对误差均不超过5%,验证了Kinect相机测量体尺参数方法的可行性。选取10个新的香梨样本进行香梨重量预测试验,结果显示香梨重量的平均相对误差为1.96%。后续可进行大量实际测量构建从体尺参数到重量的深度神经网络模型,与该方法进行数据融合,进一步降低误差。