当前位置:首页 期刊杂志

基于RealSense仓库货物体积计算方法的研究

时间:2024-05-04

顿启鹏,毋 涛

(西安工程大学 计算机科学学院,陕西 西安 710048)

0 引 言

随着企业的不断扩大,仓库管理是企业的一个重点问题,如何及时地获得仓库的可用空间量,是提高企业生产效率的一大难题。目前,测量距离的机器有激光测距仪、雷达、深度相机等,仓库可用空间的计算(体积测量)方法主要有基于点云体积的测量方法,通过投影法[1]、最小包围盒法[2]、体元模拟法[3]、快速体积计算[4]、格网法[5]、切片法[6]等可得到相应的数据。

激光测距仪、雷达这些设备有的价格不菲,有的体积太大,不易在仓库中使用、管理。反观深度相机(Kinect,RealSense等)价格客观,简易小巧。2014年,RealSense深度相机[7]面向市场,它的帧率是Kinect[8]的两倍,通过它可以快速得到货物到相机的距离,故而该文选择了后者。

岳坤明等[1]利用雷达获取点云数据,然后对点云进行去噪,得到目标点云,然后对点云构建Delaunay三角网,将待测物划分成三棱柱,计算出每一个三棱柱的体积相加,但计算三棱柱的体积时,进行了投影和割补,计算复杂。李宏星等[9]利用简单几何法计算了20棵树木的树冠体积,该测量方法简单,但精度不高。刘金锦等[6]利用切片法对物体的体积进行了计算,对点云的处理如下:首先对点云进行获取,接着对点云进行切片处理,再者确定点云的轮廓边界,然后计算每一个截面面积,最后将每一片面的体积累加获得目标物体积。该方法步骤繁琐复杂。

由此,该文提出了一种借助RealSense深度相机简单快速测得仓库货物体积的方法。该方案的第一步是利用RealSense D435的自动校准功能补全深度图像,接着使用条件滤波与统计分析法等方法完成对点云的去噪处理,然后使用均匀网格法将点云精简,方便后续货物点云体积的计算,最后根据货物堆的大小不一,分别提出了两种计算方案(基于改进的投影法,将统计分析、投影、积分做了结合)。由此,通过获知仓库货物体积,仓库可快速调配货物的分布,提高效率。

1 相关工作

1.1 RealSenseD435获取点云数据

1.1.1 RealSenseD435

该文使用的深度相机是英特尔的RealSenseD435,这款相机非常精巧,其构造如图1所示。RealSenseD435搭载了全面的深度处理单元,除此之外,具有高深度的分辨率、更宽阔的拍摄范围、全局快门感应器,能获得更加全面、准确的点云数据。

图1 RealSenseD435相机

1.1.2 深度相机的自动校准

RealSenseD435的相机校准功能大大地提高了拍摄数据的准确性。外界条件的改变有可能导致深度相机拍摄的照片失真,所以常需要对相机再一次进行标定操作。RealSenseD400此系列以上的相机可以自动进行校准操作,快速恢复内外参数。在此期间,将相机置于稳定环境中,调用其内置函数完成参数调整,调节效果如图2所示。

图2 自动校准对比

1.1.3 获取点云

通过RealSenseD435的标定来求出它的内外参数和畸变系数[10]。在RealSenseD435自动校准后,可以得到仓库货物堆的深度图,然后利用RealSenseD435标定后得到内外参数和畸变系数生成点云坐标数据。

RealSenseD435标定得到内部参数、外部参数,如表1。点云数据利用深度图的图像素坐标根据获取的内外参数转化成现实世界中的坐标。通过相机内参计算像素点相应的相机坐标系中的坐标,根据相机外参得到像素点在世界坐标系中的坐标。

表1 相机内外参数

像素坐标系和世界坐标系相互转化如下:

(1)

其中,Q(X,Y)是像素坐标;Z是深度值;Q1(X1,Y1,Z1)是世界坐标。

1.2 点云预处理

在RealSenseD435获取点云时,外界原因(例如:遮挡物、震动、光线等)的存在可能导致出现大量的噪点点云,噪点点云的存在会影响后面的点云体积计算的精确度,所以获取的初始点云不可直接计算物体的体积,需要对初始点云进行去噪处理。该文先是使用条件滤波去除待测货物点云以外的噪点,然后使用统计分析法去除货物点云周围的离群点。

1.2.1 条件滤波

RealSenseD435获取点云的时候,会将拍摄范围内的所有点云获取(包括背景),这样就造成了得到的数据包含大量的噪点点云。可以通过条件的设置来获取主体点云,去除背景点云。实验中RealSenseD435相机高度以及相机间的距离是不变的。故可使用条件滤波[11],分别设置三维坐标下各个坐标轴的取值范围,去除每个坐标轴方向上的背景点云。

算法步骤如下:(1)当测小货物堆(体积小于2立方米的货物)时,假设相机的高度为d0,利用条件滤波,将Z轴上大于d0的点云去除;(2)当测大货堆(体积大于等于2立方米的货物)时,相机高度为d1,货物的最大高度是d2,相机到货物的距离最近距离为d3,最远距离为d4,故而使用条件滤波将Y轴上最大值取d1,最小值是d1-d2,故取[d1-d2,d1];在Z轴上取[d3,d4]中的点云。

图3(a)是拍摄的货物堆,图3(b)是获取的初始点云,含有待测物点云和背景点云,图3(c)是经过条件滤波后的待测物点云,去除了大部分的非测物点云。

图3 点云预处理过程

1.2.2 统计滤波

在进行统计滤波前,可以利用均匀网格[12]对条件滤波后的点云进行下采样,以此来减少统计分析法[13-14]的计算量和计算时间。RealSense深度相机在采集待测物点云时会连带着周围的离群点扫描进去,但离群点与主体点云的附近点分布存在差别,货物点云是密集分布,噪点相对分散。

设货物点云总数是N,每个点云的邻近数设置成k。可以根据每个点云和它的近邻点的三维坐标,得到它与邻近点距离的平均值Di。根据每个点云的Di计算整个距离的平均值D,进而也得到标准差σ,然后根据前面的数据计算距离阈值M。例如:点Q1(x1,y1,z1),到它的近邻点的距离公式是:

(2)

点Q1距离均值D1为:

(3)

使用上面的计算方式遍历完每个货物点云点,然后计算整个点云的距离均值如下:

(4)

标准差为:

(5)

由平均值和标准差得到距离阈值为:

M=D+aσ

(6)

其中,a为相应的阈值系数,以此来控制M。根据实验可得到d1>M,该点视为离群点去除。

根据图3(c)知道,条件滤波过滤掉背景点云后,货物点云附近还存在一些的离群点。使用统计分析法过滤的效果如图3(d)所示,可以看到点云离群点减少了许多。

2 文中方法

获取的点云数据分两种情况:(1)测小货物堆(体积小2立方米的货物)体积时,采用的是相机从上往下拍,获取货物和地面的点云,如图4(a)所示;(2)测大货物堆(体积大于等于2立方米的货物)体积时,相机处于货物的两侧并且处于同一条直线上,采用两侧拍照法,获取货物对的两个侧面,如图4(b)所示。

图4 大小货物堆测量方式

2.1 小货物堆体积计算

针对预处理后的货物点云,提出一种基于统计分析法、投影法与积分法[15]结合的点云体积计算方法,在使用积分法时,选择合适的单位长度对于算法的效率和精确度至关重要,所以需要先用统计分析法得到待测物的普遍点云距离,确定单位长度,再进行处理;小货物堆的拍摄场景以及参与计算的点云如图5所示。

图5 小货物堆

具体步骤如下:

(1)根据地面特征,使用RANSAC算法[16-17]将预处理的点云进行平面拟合,获取地面平面函数ax+by+cz+d=0。

(2)进行点云分割去除地面点云,留下待测物点云。

(3)将待测物点云根据平面函数ax+by+cz+d=0投影到地面,其中对于一点P(x0,y0,z0)和在平面的投影点P'(x1,y1,z1)关系如下:因为PP'与平面的法线平行,故而:

(7)

使用点P坐标表示P'坐标:

x1=x0-a*t,y1=y0-a*t,z1=z0-a*t

(8)

将其带入平面ax+by+cz+d=0中求得即可。

(4)使用统计分析法获取投影点云间的平均距离D和相应的距离标准差σ。

(5)根据步骤4的平均距离和标准差获取一个长度值l。

l=a*D+b*σ

(9)

式中,a,b是比例系数。

(6)求出投影点云在x,y的极值,确定投影范围。

(7)根据步骤5得到的长度值和步骤6投影范围将投影面方格化。

(8)求出每个小方格中投影点云对应的待测物点云到平面的平均距离h。

(10)

式中,点P(x,y,z)到平面ax+by+cz+d=0的距离为d。

(11)

式中,di是每个小方格中待测物点到平面的距离。

(9)根据步骤5中的长度值和步骤8中的平均距离得到单个体积。

v=l*l*h

(12)

(10)将步骤9中的单元体积累加得到待测物的体积。

(13)

小货物堆测量流程如图6所示。

2.2 大货物堆体积计算

测大型货物体积时,因相机高度原因不能再从上往下拍照,所以选择从两侧拍待测物的侧面,也是采用测小货物堆的方式,不过对投影和积分方式再次做了一次变形;该文使用的两个相机位置是处在一条直线上,距离a米。拍摄大货物堆的两侧(见图7(a))以及参与计算的两侧点云(见图7(b))。

图6 小货物堆测量流程

图7 大货物堆

具体步骤如下:

(1)因为两个相机相对拍摄,所以在水平方向上是相反的,先将一个相机的拍摄的点云X轴上的坐标取反操作。

(2)将两个相机拍摄的点云各自投影到坐标系中的XOY面上,公式与上面的一样,不在详解。

(3)使用统计分析法计算两个投影点云间的平均距离D0,D1和标准差σ0,σ1,然后再求相应的平均值D和σ。

(4)根据步骤3的平均距离和标准差获取一个长度值l(获取方式和小货物堆相似)。

(5)求待测物点云在x,y上面的极值。

(6)对投影面的点云进行积分方格化。

(7)求出每个小方格中投影点云对应的待测物点云到对应XOY面的平均距离d。

(8)求出每个单元格待测物的体积vi。

vi=(a-d0-d1)*l*l

(14)

式中,d0,d1分别是单元格内待测物两侧点云分别到两个相机的平均距离。

(9)进行累加求得待测物的体积。

大货物堆测量流程如图8所示。

3 实验结果以及分析

3.1 实验结果

该文是利用标定好的RealSense进行货物点云拍摄(测小货物堆使用一台,测大货物堆使用两台),实验环境为处理器AMD Ryzen 7 5800H with Radeon Graphics(16 CPUs),~3.2 GHz,8.00 GB Window11 64位的操作系统,点云库PCL1.11.1版本,编译环境Visual Studio 2 019开发平台,深度相机RealSense D435,相应的接口版本RealSenseSDK2.0.C++编程语言。利用真实的货物进行体积比较。

首先,对小货物体积采用一台相机从上往下拍的方式进行了测试,本次实验使用了5个小货物堆,然后分别使用了传统的投影法(徐欣等[18]使用的三点高的平均值做三棱柱的高)和本实验改进的投影法做了对比,并且在每个投影法的实验环境分三种:强光、光照均匀、弱光阴暗。实验结果如表2所示。

图8 大货物堆测量流程

然后,对使用两个相机在大货物两侧进行拍摄进行了测试,两个相机相距4.6 m,同样使用了5个大货物堆(拍摄的大货物堆体积受拍摄场地和相机视野限制),进行试验的条件和对比方案与前者相同,实验对象以及结果如表3所示。

表2 小货物堆体积数据

表3 大货物堆体积数据

最后,选择了不同形状的货物使用文中方法进行了实验(包含大小货物堆的测量),结果如表4所示。

表4 不同货物形状体积数据

3.2 实验分析

由表2和表3可知,在三种环境下,光照均匀情况下最佳。而在光照均匀的情况下,文中改进的投影法更接近真实货物体积值,并且测得的数据较为稳定。

测量货物的体积来源于货物的点云,不同的形状不会对结果产生影响,该论点由表4可知,不同形状的货物测得值稳定,且与真实值相差不超过3%。

4 结束语

针对企业仓库计算货物的体积,使用RealSenseD435深度相机获取点云数据,该深度相机占地空间小,而且使用起来方便简单。在对获取的初始点云进行预处理操作后,先将待测物点云投影到平面上,然后利用统计分析法获取投影点普遍欧氏距离分布情况,确定利用积分法求取物体体积时的单元格长度,接着求取落在单元格中待测物点云到平面的平均距离,最后获取到相应的单元体积,累加获得待测物体积。经过实验证明,测得的数据与真实数据相差小于3%,满足现在企业的使用需求。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!