掌桥专利:专业的专利平台
掌桥专利
首页

箱体体积测量方法、装置、计算机设备和存储介质

文献发布时间:2023-06-19 11:29:13


箱体体积测量方法、装置、计算机设备和存储介质

技术领域

本申请涉及测量技术领域,特别是涉及一种箱体体积测量方法、装置、计算机设备和存储介质。

背景技术

随着物流行业的发展,越来越多的应用场景需要测量箱体体积,比如,当箱体体积较大而重量较轻时,会占用较多的运输空间,故按照箱体体积计算运费更为合理,还比如,基于箱体体积确定运输任务能够提高单次运输的装载率等。由此可见,如何测量箱体体积是值得关注的问题。

目前,通过结构光背夹或激光等方式测量箱体体积,能够解决人工测量存在测量效率和准确性低的问题,但是该种测量方式存在测量成本高的问题。

发明内容

基于此,有必要针对上述技术问题,提供一种能够降低测量成本的箱体体积测量方法、装置、计算机设备和存储介质。

一种箱体体积测量方法,所述方法包括:

获取目标箱体对应的二维图像,并调用预设接口获取所述二维图像对应的二维特征点与三维点云数据;

通过已训练好的角点识别模型识别所述二维图像中的箱体角点;

根据所述箱体角点与所述二维特征点,从所述三维点云数据中剔除所述目标箱体对应的三维坐标点,得到目标三维点云数据;

基于所述目标三维点云数据进行平面拟合得到背景面方程;

根据相机原点与所述背景面方程,以及与所述箱体角点对应的三维坐标点,确定所述目标箱体的箱体体积。

在其中一个实施例中,所述已训练好的角点识别模型包括:特征提取模型、关键点检测模型与连接线检测模型;所述通过已训练好的角点识别模型识别所述二维图像中的箱体角点,包括:

通过所述特征提取模型提取所述二维图像对应的特征图;

通过所述关键点检测模型对所述特征图进行关键点检测,得到已标注关键点的第一图像;

通过所述连接线检测模型对所述特征图进行连接线检测,得到已标注连接线的第二图像;

根据所述第一图像与所述第二图像确定所述二维图像中的箱体角点。

在其中一个实施例中,所述根据所述箱体角点与所述二维特征点,从所述三维点云数据中剔除所述目标箱体对应的三维坐标点,得到目标三维点云数据,包括:

根据所述箱体角点在所述二维图像中确定箱体图像;

从所述二维特征点中确定所述箱体图像内的箱体二维特征点;

从所述三维点云数据中剔除所述箱体二维特征点对应的三维坐标点,得到目标三维点云数据。

在其中一个实施例中,所述基于所述目标三维点云数据进行平面拟合得到背景面方程,包括:

从所述目标三维点云数据中选取预设数量的目标三维坐标点;

按照所述目标三维坐标点进行平面拟合得到拟合平面;

确定所述目标三维点云数据中与所述拟合平面的距离小于或等于预设距离阈值的三维坐标点的占比;

当所述占比大于或等于预设占比阈值时,将所述拟合平面对应的拟合方程确定为背景面方程。

在其中一个实施例中,所述基于所述目标三维点云数据进行平面拟合得到背景面方程,还包括:

当所述占比小于预设占比阈值时,返回至所述从所述目标三维点云数据中选取预设数量的目标三维坐标点的步骤继续执行,直至满足迭代停止条件。

在其中一个实施例中,所述根据相机原点与所述背景面方程,以及与所述箱体角点对应的三维坐标点,确定所述目标箱体的箱体体积,包括:

从所述箱体角点中选取多个目标箱体角点;所述多个目标箱体角点包括多个第一箱体角点与一个第二箱体角点;

根据相机原点与每个目标箱体角点对应的三维坐标点,确定与相应目标箱体角点对应的射线方程;

根据所述第一箱体角点对应的射线方程与所述背景面方程,确定相应第一箱体角点在背景面的投影点;

根据所述第二箱体角点对应的射线方程与所述背景面方程,确定所述第二箱体角点在背景面的投影点与投影角度;

根据所确定的投影点与投影角度计算所述目标箱体对应的箱体体积。

在其中一个实施例中,所述根据所确定的投影点与投影角度计算所述目标箱体对应的箱体体积,包括:

根据所述多个第一箱体角点各自对应的投影点,确定所述目标箱体对应的长和宽;

根据所述第二箱体角点对应的投影点与投影角度,以及与所述第二箱体角点相邻的第一箱体角点对应的投影点,确定所述目标箱体对应的高;

基于所述长、宽与高确定所述目标箱体对应的箱体体积。

一种箱体体积测量装置,所述装置包括:

获取模块,用于获取目标箱体对应的二维图像,并调用预设接口获取所述二维图像对应的二维特征点与三维点云数据;

识别模块,用于通过已训练好的角点识别模型识别所述二维图像中的箱体角点;

剔除模块,用于根据所述箱体角点与所述二维特征点,从所述三维点云数据中剔除所述目标箱体对应的三维坐标点,得到目标三维点云数据;

拟合模块,用于基于所述目标三维点云数据进行平面拟合得到背景面方程;

确定模块,用于根据相机原点与所述背景面方程,以及与所述箱体角点对应的三维坐标点,确定所述目标箱体的箱体体积。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述各个实施例中所述的箱体体积测量方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述各个实施例中所述的箱体体积测量方法的步骤。

上述箱体体积测量方法、装置、计算机设备和存储介质,获取目标箱体对应的二维图像,并调用预设接口获取该二维图像对应的二维特征点与三维点云数据,能够降低二维特征点与三维点云数据的获取成本,基于所获取到的二维图像、二维特征点与三维点云数据进行箱体体积测量时,能够降低箱体体积的测量成本。通过已训练好的角点识别模型自动识别目标箱体的箱体角点,基于箱体角点与二维特征点从三维点云数据中剔除目标箱体对应的三维坐标点,得到目标三维点云数据,并基于目标三维点云数据自动拟合背景面方程,进而根据背景面方程、相机原点与箱体角点自动测量目标箱体的箱体体积,无需人工过多的参与,由此,在提高箱体体积测量的准确性和效率的情况下,能够降低测量成本。

附图说明

图1为一个实施例中箱体体积测量方法的应用场景图;

图2为一个实施例中箱体体积测量方法的流程示意图;

图3为一个实施例中基于箱体角点、相机原点与背景面方程在世界坐标系中重现目标箱体的结构示意图;

图4为一个实施例中箱体体积测量装置的结构框图;

图5为一个实施例中计算机设备的内部结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的箱体体积测量方法,可以应用于如图1所示的应用环境中。其中,终端102通过摄像头采集目标箱体104对应的二维图像,并调用预设接口采集目标箱体104对应的、且与所采集到的二维图像对应的二维特征点与三维点云数据。终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,目标箱体104是待测量箱体体积的箱体。

在一个实施例中,如图2所示,提供了一种箱体体积测量方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:

S202,获取目标箱体对应的二维图像,并调用预设接口获取二维图像对应的二维特征点与三维点云数据。

其中,目标箱体是待测量箱体体积的箱体,具体可以是指规则箱体,比如形状为长方体或正方体的规则箱体。三维点云数据是由二维特征点在世界坐标系中对应的三维坐标点组成的集合。

具体地,当满足箱体体积测量条件时,终端通过摄像头获取目标箱体对应的二维图像,并调用预设接口获取二维图像对应的二维特征点与三维点云数据。箱体体积测量条件比如检测到用户对预设测量键的触发操作,触发操作比如点击、按压或滑动等操作,点击比如双击或点击操作等。

在一个实施例中,当检测到用户对预设测量键的触发操作时,终端通过自身的摄像头拍摄目标箱体,得到该目标箱体对应的二维图像。该二维图像为包括目标箱体对应的箱体图像的RGB图像(由R(red),G(green),B(blue)三个分量组成的彩色图像)。以终端为手机为例,二维图像就是通过手机摄像头对目标箱体进行拍摄得到的照片/图像。

在一个实施例中,终端通过预设接口调用已有的增强现实技术,获取二维图像对应的二维特征点与三维点云数据。增强现实技术比如ARCore(一款增强现实SDK(一种软件开发工具包)),ARKit(一种AR(Augmented Reality,增强现实)开发平台)。以ARCore为例,ARCore内部为一个SLAM(Simultaneous Localization And Mapping,同步定位与建图)系统。ARCore通过运动跟踪、环境理解与光估计,将虚拟内容与通过摄像头拍摄的现实世界进行整合。ARCore会检测通过摄像头所拍摄的二维图像中的特征点,并结合终端的IMU(Inertial Measurement Unit,惯性测量单元)的惯性测量结果,确定二维图像对应的二维特征点与三维点云数据。终端通过调用SDK中的预设接口来获取ARCore所确定的二维特征点与三维点云数据。这样,终端通过自身的摄像头采集二维图像,并通过调用预设接口采集二维图像对应的二维特征点与三维点云数据,而无需额外外接其他硬件设备来采集二维图像和/或三维点云数据,由此,能够降低硬件成本,且能够避免硬件设备发热量大与耗电快等问题。

在一个实施例中,终端通过摄像头对目标箱体进行拍摄时,拍摄角度需要能够拍摄到目标箱体的三个箱体面,也就是摄像头的拍摄视野中需要包括目标箱体的三个箱体面。这样,拍摄得到的二维图像中包括目标箱体的该三个箱体面所对应的二维像素点。可以理解,二维图像中包括目标箱体的七个顶点各自对应的二维像素点。

在一个实施例中,终端通过摄像头对目标箱体进行拍摄时,目标箱体的背景面是有特征的,比如,白板或反光的平面不能作为背景面。拍摄环境不能有过多的杂物。目标箱体的背景面是指拍摄时放置目标箱体的平面,可理解为目标箱体的支撑平面,比如地面或桌面等。

S204,通过已训练好的角点识别模型识别二维图像中的箱体角点。

其中,角点识别模型是通过训练样本集训练得到的、能够用于从二维图像中识别出目标箱体的箱体角点的模型。箱体角点是指目标箱体的顶点在二维图像中对应的二维像素点。

具体地,终端在获取到目标箱体对应的二维图像后,将所获取到的二维图像输入已训练好的角点识别模型,通过该角点识别模型从该二维图像中识别出目标箱体对应的箱体角点。

在一个实施例中,终端根据预先获取的训练样本集进行模型训练,得到已训练好的角点识别模型,并存储在本地。终端也可接收服务器训练并发送的角点识别模型,并将所接收到的角点识别模型存储在本地。

S206,根据箱体角点与二维特征点,从三维点云数据中剔除目标箱体对应的三维坐标点,得到目标三维点云数据。

具体地,终端在识别出目标箱体对应的箱体角点后,从二维图像中剔除箱体角点以内的箱体二维特征点,得到箱体角点以外的目标二维特征点。终端根据二维特征点与三维点云数据之间的索引关系,从三维点云数据中剔除箱体角点以内的箱体二维特征点所对应的三维坐标点,以从三维点云数据中剔除目标箱体对应的三维坐标点,得到由箱体角点以外的目标二维特征点对应的三维坐标点组成的目标三维点云数据。

在一个实施例中,步骤S206包括:根据箱体角点在二维图像中确定箱体图像;从二维特征点中确定箱体图像内的箱体二维特征点;从三维点云数据中剔除箱体二维特征点对应的三维坐标点,得到目标三维点云数据。

具体地,终端在二维图像中将箱体角点按照角点编号进行连接,得到多条箱体连接线,并根据该多条箱体连接线在二维图像中确定箱体图像。对于二维图像对应的多个二维特征点,终端将处于箱体图像内的二维特征点确定为箱体二维特征点,并从三维点云数据中剔除该箱体二维特征点对应的三维坐标点,得到目标三维点云数据。

在一个实施例中,终端将处于箱体图像外的二维特征点确定为目标二维特征点,或者,从二维图像对应的多个二维特征点中剔除箱体二维特征点得到目标二维特征点。终端从三维点云数据中筛选目标二维特征点对应的三维坐标点,得到目标三维点云数据。

上述实施例中,根据箱体角点与二维特征点,以及二维特征点与三维点云数据中的三维坐标点之间的索引关系,确定剔除箱体二维特征点对应的三维坐标点之后的目标三维点云数据,该目标三维点云数据中的三维坐标点主要分布在背景面上,以便于基于该目标三维点云数据拟合背景面时,能够提高拟合准确性。

S208,基于目标三维点云数据进行平面拟合得到背景面方程。

具体地,终端根据目标三维点云数据对背景面进行平面拟合,以确定背景面,并得到背景面对应的背景面方程。

在一个实施例中,终端根据目标三维点云数据,通过RANSC(随机样本一致性)算法进行平面拟合得到背景面方程。

在一个实施例中,终端根据目标三维点云数据确定相应的协方差矩阵,根据协方差矩阵确定多个特征值与每个特征值对应的特征向量,将最小的特征值对应的特征向量确定为背景面的法向量,并根据目标三维点云数据中的三维坐标点与该法向量确定背景面方程。可以理解,终端根据法向量与目标三维点云数据中的任一个三维坐标点拟合得到背景面对应的拟合方程后,计算目标三维点云数据中每个三维坐标点与拟合方程的总距离。当总距离小于或等于指定距离阈值时,则将该拟合方程确定为背景面方程,否则,根据从目标三维点云数据中重新选取的三维坐标点与法向量重新拟合背景面对应的拟合方程,并按照上述方式对拟合方程进行判断。

S210,根据相机原点与背景面方程,以及与箱体角点对应的三维坐标点,确定目标箱体的箱体体积。

具体地,终端将二维图像中的箱体角点转换至世界坐标系中的三维坐标点,以确定箱体角点在世界坐标系中对应的三维坐标点。终端获取二维图像在世界坐标系中对应的相机原点,并基于相机原点、背景面方程,以及与箱体角点对应的三维坐标点,在世界坐标系中将箱体角点投影至背景面,得到箱体角点在背景面的投影点与投影角度。终端根据多个箱体角点在背景面的投影点与投影角度确定目标箱体的长、宽与高,并根据所确定的长、宽与高计算得到目标箱体的箱体体积。

在一个实施例中,终端按照预配置的坐标转换矩阵,将二维图像中的箱体角点从图像坐标系转换至世界坐标系,得到箱体角点在世界坐标系中对应的三维坐标点。预配置的坐标转换矩阵用于指定图像坐标系中的二维像素点与世界坐标系中的三维坐标点之间的坐标转换关系。按照预配置的坐标转换矩阵将图像坐标系中的二维像素点转换至世界坐标系中的三维坐标点时,将图像坐标系中的二维像素点所对应的二维坐标扩充至三维坐标,其中,新增维度坐标为三维场景中z轴方向的坐标,并将新增维度坐标的坐标值设定为固定值。固定值比如1,由此,箱体角点在二维图像中对应的二维坐标为(x,y),则将该二维坐标扩充为三维坐标(x,y,1)。

终端可调用预配置的且封装有坐标转换矩阵的坐标转换函数,将箱体角点在图像坐标系中对应的三维坐标转换至世界坐标系中的三维坐标,得到箱体角点对应的三维坐标点。终端也可将箱体角点在图像坐标系中对应的三维坐标与坐标转换矩阵相乘,得到箱体角点在世界坐标系中对应的三维坐标点所对应的三维坐标。可以理解,将箱体角点由图像坐标系转换至世界坐标系的过程中,可能会存在多个中间坐标系,比如屏幕坐标系与相机坐标系等。任意两个坐标系之间的坐标转换关系均可通过坐标转换矩阵来指定,由此,将箱体角点由图像坐标系转换至世界坐标系的坐标转换矩阵可能由多个坐标转换矩阵构成。

在一个实施例中,终端从目标箱体对应的多个箱体角点中选取目标箱体角点,并基于所选取出的目标箱体角点对应的三维坐标点,以及相机原点与背景面方程确定目标箱体的箱体体积。

上述箱体体积测量方法,获取目标箱体对应的二维图像,并调用预设接口获取该二维图像对应的二维特征点与三维点云数据,能够降低二维特征点与三维点云数据的获取成本,基于所获取到的二维图像、二维特征点与三维点云数据进行箱体体积测量时,能够降低箱体体积的测量成本。通过已训练好的角点识别模型自动识别目标箱体的箱体角点,基于箱体角点与二维特征点从三维点云数据中剔除目标箱体对应的三维坐标点,得到目标三维点云数据,并基于目标三维点云数据自动拟合背景面方程,进而根据背景面方程、相机原点与箱体角点自动测量目标箱体的箱体体积,无需人工过多的参与,由此,在提高箱体体积测量的准确性和效率的情况下,能够降低测量成本。

在一个实施例中,已训练好的角点识别模型包括:特征提取模型、关键点检测模型与连接线检测模型;步骤S204包括:通过特征提取模型提取二维图像对应的特征图;通过关键点检测模型对特征图进行关键点检测,得到已标注关键点的第一图像;通过连接线检测模型对特征图进行连接线检测,得到已标注连接线的第二图像;根据第一图像与第二图像确定二维图像中的箱体角点。

其中,特征提取模型是用于从二维图像中提取特征图的模型。关键点检测模型是用于根据特征图检测二维图像中的关键点的模型。连接线检测模型是用于根据特征图检测二维图像中的关键点的连接线的模型。

具体地,终端将所获取到的二维图像输入已训练好的特征提取模型,通过该特征提取模型提取二维图像对应的特征图。终端将所提取出的特征图分别输入已训练好的关键点检测模型与连接线检测模型,通过关键点检测模型根据特征图进行关键点检测,并对检测出的关键点进行标注,得到已标注关键点的第一图像,通过连接线检测模型根据特征图进行连接线检测,并对检测出的连接线进行标注,得到已标注连接线的第二图像。终端将第一图像中已标注的关键点,按照第二图像中已标注的连接线进行连接,并按照各关键点的连接关系确定二维图像中的箱体角点。

在一个实施例中,第一图像中已标注的关键点是二维图像中与目标箱体的顶点对应的二维像素点。第二图像中已标注的连接线是二维图像中与目标箱体的边对应的连接线。在未确定连接关系的情况下,一个关键点可能与其他任一个关键点进行连接,由此,多个关键点之间存在多种可能的连接关系。而目标箱体的各个顶点之间的连接关系是确定的,也就是目标箱体的各个顶点在二维图像中对应的二维像素点之间的连接关系是确定的。第二图像中已标注的连接线指定了第一图像中的各个关键点之间的连接关系。终端根据第二图像中已标注的连接线确定各个关键点之间的连接关系,并按照所确定的连接关系对第一图像中已标注的关键点进行连接,并按照连接关系对已连接的各个关键点进行顺序编号,得到目标箱体对应的多个箱体角点。这样,每个箱体角点对应有唯一的角点编号,角点编号能够用于表征箱体角点之间的连接关系,根据箱体角点与相应的角点编号能够确定相应的目标箱体。

在一个实施例中,特征提取模型具体可以是卷积网络模型,比如VGG18(VisualGeometry Group,卷积网络模型)。关键点检测模型与连接线检测模型具体可以是CNN(Convolutional Neural Networks,卷积神经网络)。

在一个实施例中,终端根据二维图像对应的特征图,通过三个阶段定位二维图像中的箱体角点,每个阶段包括两个并行的分支,一个分支通过关键点检测模型检测热点图,用于定位关键点,一个分支通过连接线检测模型检测向量场,用于定位关键点之间的连接线。前一个阶段的输出作为后一个阶段的输入,第三阶段输出已标注关键点的第一图像与已标注连接线的第二图像。终端在得到二维图像对应的第一图像与第二图像后,通过图论中的偶匹配确定关键点与连接线之间的关系,并按照连接线将关键点进行连接,得到合成的目标箱体。

在一个实施例中,终端将已训练好的特征提取模型、关键点检测模型与连接线检测模型进行组合,得到已训练好的角点识别模型。特征提取模型、关键点检测模型与连接线检测模型可通过联合训练的方式进行训练,也可分别进行训练,通过联合训练的方式能够直接训练得到已训练好的角点识别模型。

在一个实施例中,对于训练样本集中的每个二维图像,针对二维图像中的每个关键点,构建一张与最后一层特征图大小一致的纯黑图,根据关键点在二维图像中的位置,在纯黑图中的相同位置构造一个高斯模糊出来的可调半径的小圆圈。在关键点检测模型的训练过程中,将模型学习到的特征图直接与所构建的图分别做均方差,得到每个关键点对应的损失函数,并根据损失函数动态调整模型的参数,直至训练停止,得到已训练好的关键点检测模型。可以理解,二维图像中的关键点是与目标箱体的顶点对应的二维像素点。目标箱体的7个顶点对应二维图像中的7个关键点,由此构建出7个损失函数。

相应地,对于训练样本集中的每个二维图像,针对二维图像中的每个连接关系,构建一张与最后一张特征图大小一致的纯黑图,基于连接关系的方向以及该连接关系所连接的两个关键点的位置,在纯黑图中该两个关键点的连接线上绘制一条粗线,且针对x与y分别进行绘制,得到针对每个连接关系构建的两幅图。其中,x图绘制值为sin(theta),y图绘制值为cos(theta),theta为第一个关键点到第二个关键点的方向法线夹角。在连接线检测模型的训练过程中,将模型学习到的特征图与所构建的图做均方差,得到每个连接关系对应的两个损失函数,并根据损失函数动态调整模型的参数,直至训练停止,得到已训练好的连接线检测模型。可以理解,二维图像中的连接关系是与目标箱体的边对应的连接线。目标箱体的9条边对应有9个连接关系,由此构造出2*9=18个损失函数。在模型训练过程中,将目标箱体在二维图像中隐藏的关键点及连接关系的损失设置为0。

在一个实施中,终端通过OpenPose识别二维图像中的箱体角点。

上述实施例中,通过已训练好的特征提取模型、关键点检测模型与连接线检测模型,从二维图像中识别目标箱体的箱体角点,能够提高箱体角点的识别准确性与效率。

在一个实施例中,步骤S208包括:从目标三维点云数据中选取预设数量的目标三维坐标点;按照目标三维坐标点进行平面拟合得到拟合平面;确定目标三维点云数据中与拟合平面的距离小于或等于预设距离阈值的三维坐标点的占比;当占比大于或等于预设占比阈值时,将拟合平面对应的拟合方程确定为背景面方程。

其中,预设数量可根据实际情况自定义,比如3。预设距离阈值可根据实际情况自定义,比如0.5。预设占比阈值比如80%。

具体地,终端从目标三维点云数据中选取预设数量的目标三维坐标点,并按照所选取出的目标三维坐标点对背景面进行平面拟合得到拟合平面,以及拟合平面对应的拟合方程。终端分别计算目标三维点云数据中的每个三维坐标点与拟合平面的距离,统计距离小于获得等于预设距离阈值的三维坐标点的数量,并根据统计的数量与目标三维点云数据中三维坐标点的总数量,计算该目标三维点云数据中与拟合平面的距离小于或等于预设距离阈值的三维坐标点的占比。当计算的占比大于或等于预设占比阈值时,终端将拟合平面确定为拟合得到的背景面,并将拟合平面对应的拟合方程确定为背景面对应的背景面方程。

在一个实施例中,终端从目标三维点云数据中随机选取预设数量的目标三维坐标点,并以及所选取出的目标三维坐标点进行平面拟合。可以理解,任意两次选取出的预设数量的目标三维坐标点不完全相同,也就是说任意两次选取出的目标三维坐标点可以完全不同,也可以部分相同。

上述实施例中,根据所选取出的目标三维坐标点进行平面拟合,能够提高拟合效率,而基于目标三维点云数据中各个三维坐标点与拟合平面的距离,确定最终拟合得到的背景面及背景面方程,能够保证拟合的准确性。

在一个实施例中,步骤S208还包括:当占比小于预设占比阈值时,返回至从目标三维点云数据中选取预设数量的目标三维坐标点的步骤继续执行,直至满足迭代停止条件。

其中,迭代停止条件是用于判断是否停止平面拟合迭代过程的依据或条件,具体可以是迭代次数大于或等于预设次数,或者,所有的目标三维坐标点组合均遍历完毕,或者,基于当前选取出的目标三维坐标点拟合得到背景面及相应的背景面方程。

具体地,当目标三维点云数据中与拟合平面的距离小于或等于预设距离阈值的三维坐标点的占比小于预设占比阈值时,终端再次从目标三维点云数据中选取预设数量的目标三维坐标点,基于再次选取出的目标三维坐标点再次进行平面拟合,并确定目标三维点云数据中与再次拟合的拟合平面的距离小于或等于预设距离的三维坐标点的占比。当该占比大于或等于预设占比阈值时,终端将该再次拟合的拟合平面对应的拟合方程确定为背景面方程,否则,再次从目标三维点云数据中选取预设数量的目标三维坐标点,并针对再次选取出的目标三维坐标点执行上述相关步骤,直至满足迭代停止条件。。

在一个实施例中,当迭代次数大于或等于预设次数,或者,所有的目标三维坐标点组合均遍历完毕时,若基于每次所选取出的目标三维坐标点组合所确定的占比均小于预设占比阈值,终端则从多个目标三维坐标点组合中筛选占比最大的目标三维坐标点组合,并将根据所筛选出的目标三维坐标点组合拟合得到的拟合方程确定为背景面方程。

上述实施例中,当根据当前选取出的目标三维坐标点拟合得到的拟合平面不符合拟合精度时,重新选取目标三维坐标点,并基于重新选取的目标三维坐标点重新进行平面拟合,以提高拟合准确性。

在一个实施例中,步骤S210包括:从箱体角点中选取多个目标箱体角点;多个目标箱体角点包括多个第一箱体角点与一个第二箱体角点;根据相机原点与每个目标箱体角点对应的三维坐标点,确定与相应目标箱体角点对应的射线方程;根据第一箱体角点对应的射线方程与背景面方程,确定相应第一箱体角点在背景面的投影点;根据第二箱体角点对应的射线方程与背景面方程,确定第二箱体角点在背景面的投影点与投影角度;根据所确定的投影点与投影角度计算目标箱体对应的箱体体积。

具体地,终端按照每个箱体角点对应的角点编号,从目标箱体对应的多个箱体角点中选取多个第一箱体角点与一个第二箱体角点,并将所选取出的第一箱体角点与第二箱体角点确定为目标箱体角点,并分别确定每个目标箱体角点在世界坐标系中对应的三维坐标点。对于所选取出的多个目标箱体角点,终端以相机原点为射线起点,分别以每个目标箱体角点对应的三维坐标点为射线上的点,确定由相机原点与每个目标箱体角点对应的三维坐标点构成的射线,得到多条射线。终端根据相机原点与射线上的目标箱体角点所对应的三维坐标点确定射线方程。终端将每条射线对应的射线方程与背景面方程进行联合求解,根据求解结果确定射线与背景面的交点,并将该交点确定为该射线对应的目标箱体角点在背景面的投影点。

进一步地,终端从多个第一箱体角点中确定与第二箱体角点相邻的第一箱体角点,并根据相机原点、该相邻的第一箱体角点对应的投影点,以及第二箱体角点对应的投影点,确定第二箱体角点在背景面的投影角度。终端根据各个第一箱体角点对应的投影点,以及第二箱体角点对应的投影点与投影角度,确定目标箱体的长、宽与高,并基于长、宽与高计算目标箱体的箱体体积。

在一个实施例中,箱体角点对应的角点编号与目标箱体的顶点相对应。终端按照箱体角点对应的角点编号,从多个箱体角点中选取与目标箱体下箱体面上的顶点对应的第一箱体角点,并选取拍摄视野中目标箱体的三个箱体面的公共顶点所对应的箱体角点为第二箱体角点。

在一个实施例中,相机原点、第二箱体角点在背景面的投影点、与第二箱体角点相邻的第一箱体角点在背景面的投影点,在世界坐标系中构成一个三角形,终端按照三角形的余弦定理,根据该三角形的三个顶点能够确定第二箱体角点在背景面的投影角度。

图3为一个实施例中,基于箱体角点、相机原点与背景面方程在世界坐标系中重现目标箱体的结构示意图。终端从多个箱体角点中选取出三个第一箱体角点与一个第二箱体角点,三个第一箱体角点各自对应的三维坐标点与相机原点形成的射线分别与背景面相交,得到交点A、B与C,该三个交点A、B与C为三个第一箱体角点各自在背景面的投影点。相机原点O与第二箱体角点对应的三维坐标点E形成的射线与背景面的交点D,为该第二箱体角点在背景面的投影点,该射线与背景面的夹角θ,为第二箱体角点在背景面的投影角度。相机原点O、投影点B与投影点D构成三角形OBD,终端按照余弦定理,根据三角形OBD的边BD、OD与OB,确定投影角度θ。

其中,余弦定理为cos(θ)=(OD^2+BD^2-OB^2)/2*OD*BD,由此,按照θ=arcos(cos(θ)),即可确定投影角度θ。

上述实施例中,根据箱体角点对应的三维坐标点将箱体角点投影至背景面,得到箱体角点在背景面的投影点与投影角度,并基于投影点与投影角度确定箱体体积,能够提高箱体体积的测量准确性。

在一个实施例中,根据所确定的投影点与投影角度计算目标箱体对应的箱体体积,包括:根据多个第一箱体角点各自对应的投影点,确定目标箱体对应的长和宽;根据第二箱体角点对应的投影点与投影角度,以及与第二箱体角点相邻的第一箱体角点对应的投影点,确定目标箱体对应的高;基于长、宽与高确定目标箱体对应的箱体体积。

具体地,终端计算相邻两个第一箱体角点各自对应的投影点之间的投影点距离,根据投影点距离确定目标箱体的长和宽。第二箱体角点对应的三维坐标点与投影点,以及与第二箱体角点相邻的第一箱体角点对应的投影点构成直角三角形,按照直角三角形的边角关系,根据第二箱体角点对应的投影点与投影角度,以及与第二箱体角点相邻的第一箱体角点对应的投影点,能够确定该相邻的第一箱体角点对应的投影点与第二箱体角点对应的三维坐标点之间的距离,并将该距离确定为目标箱体的高。终端根据目标箱体的长、宽与高计算得到该目标箱体的箱体体积。

如图3所示,基于三个第一箱体角点各自对应的投影点A、B与C,能够确定目标箱体的长AB与宽BC。第二箱体角点对应的投影点D与三维坐标点E,以及与第二箱体角点相邻的第一箱体角点对应的投影点B,构成直角三角形BDE。在该直角三角形BDE中,根据边BD与投影角度θ,按照边角关系能够确定边BE,由此能够确定目标箱体的高BE。其中,边角关系为tan(θ)=BE/BD,由此,BE=tan(θ)*BD。这样,目标箱体的箱体体积V=AB*BC*BE。

可以理解,由于将箱体角点按照预配置的坐标转换矩阵,由图像坐标系转换至世界坐标系时,将箱体角点对应的二维坐标扩充至三维坐标,且新增维度坐标的坐标值为与箱体角点无关联关系的固定值,故按照上述方式在世界坐标系中所确定的与箱体角点对应的三维坐标点,可能不是目标箱体中相应顶点所对应的三维坐标点。而箱体角点是从二维图像中识别出来的,故箱体角点对应的二维坐标是准确的,这样,箱体角点在世界坐标系中对应的三维坐标点的横坐标与纵坐标方向的坐标值是准确的,由此,箱体角点在目标箱体中对应的顶点,位于该箱体角点对应的三维坐标点与相机原点形成的射线上。目标箱体置于背景面上,故目标箱体下箱体面上的顶点可近似理解为处于背景面上。这样,第一箱体角点对应的射线与背景面的交点,可作为该第一箱体角点在目标箱体中对应的顶点。

上述实施例中,基于第一箱体角点对应的投影点确定目标箱体的长和宽,基于第二箱体角点对应的投影点与投影角度确定目标箱体的高,进而确定目标箱体的箱体体积,能够在降低体积测量复杂度的情况下,保证测量准确性与效率。

应该理解的是,虽然图2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图4所示,提供了一种箱体体积测量装置400,包括:获取模块402、识别模块404、剔除模块406、拟合模块408和确定模块410,其中:

获取模块402,用于获取目标箱体对应的二维图像,并调用预设接口获取二维图像对应的二维特征点与三维点云数据;

识别模块404,用于通过已训练好的角点识别模型识别二维图像中的箱体角点;

剔除模块406,用于根据箱体角点与二维特征点,从三维点云数据中剔除目标箱体对应的三维坐标点,得到目标三维点云数据;

拟合模块408,用于基于目标三维点云数据进行平面拟合得到背景面方程;

确定模块410,用于根据相机原点与背景面方程,以及与箱体角点对应的三维坐标点,确定目标箱体的箱体体积。

在一个实施例中,已训练好的角点识别模型包括:特征提取模型、关键点检测模型与连接线检测模型;识别模块404,还用于通过特征提取模型提取二维图像对应的特征图;通过关键点检测模型对特征图进行关键点检测,得到已标注关键点的第一图像;通过连接线检测模型对特征图进行连接线检测,得到已标注连接线的第二图像;根据第一图像与第二图像确定二维图像中的箱体角点。

在一个实施例中,剔除模块406,还用于根据箱体角点在二维图像中确定箱体图像;从二维特征点中确定箱体图像内的箱体二维特征点;从三维点云数据中剔除箱体二维特征点对应的三维坐标点,得到目标三维点云数据。

在一个实施例中,拟合模块408,还用于从目标三维点云数据中选取预设数量的目标三维坐标点;按照目标三维坐标点进行平面拟合得到拟合平面;确定目标三维点云数据中与拟合平面的距离小于或等于预设距离阈值的三维坐标点的占比;当占比大于或等于预设占比阈值时,将拟合平面对应的拟合方程确定为背景面方程。

在一个实施例中,拟合模块408,还用于当占比小于预设占比阈值时,返回至从目标三维点云数据中选取预设数量的目标三维坐标点的步骤继续执行,直至满足迭代停止条件。

在一个实施例中,确定模块410,还用于从箱体角点中选取多个目标箱体角点;多个目标箱体角点包括多个第一箱体角点与一个第二箱体角点;根据相机原点与每个目标箱体角点对应的三维坐标点,确定与相应目标箱体角点对应的射线方程;根据第一箱体角点对应的射线方程与背景面方程,确定相应第一箱体角点在背景面的投影点;根据第二箱体角点对应的射线方程与背景面方程,确定第二箱体角点在背景面的投影点与投影角度;根据所确定的投影点与投影角度计算目标箱体对应的箱体体积。

在一个实施例中,确定模块410,还用于根据多个第一箱体角点各自对应的投影点,确定目标箱体对应的长和宽;根据第二箱体角点对应的投影点与投影角度,以及与第二箱体角点相邻的第一箱体角点对应的投影点,确定目标箱体对应的高;基于长、宽与高确定目标箱体对应的箱体体积。

关于箱体体积测量装置的具体限定可以参见上文中对于箱体体积测量方法的限定,在此不再赘述。上述箱体体积测量装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种箱体体积测量方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行计算机程序时实现上述各个实施例中的箱体体积测量方法的步骤。

在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述各个实施例中的箱体体积测量方法的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

相关技术
  • 箱体体积测量方法、装置、计算机设备和存储介质
  • 箱体体积测量方法、装置、计算机设备和存储介质
技术分类

06120112939120