一种基于3d数据的工业品智能检索方法
技术领域
1.本发明属于机器视觉领域,具体说是一种基于3d数据的工业品智能检索方法。
背景技术:2.三维形状建模、数字化和可视化技术的进步使得互联网上和特定领域数据库中的三维模型数量不断增加。并且随着工业品电商业务的迅速发展,工业品数字化采购平台逐步建设面向客户的多种商品检索能力。相比成熟的to c业务文本搜索、以图搜图的商品检索模式,工业品to b客户需要更具专业性、更智能的检索能力。工业品采购人员希望通过输入产品3d模型或3d模型的单侧视图就能够精确检索到相应的/类似的商品,这种更加直观、信息量更丰富的3d检索能力,可以明显提高客户的工作效率。
3.3d数据的读取和解析技术研究3d检索技术的基础。当前多平台主流cad设计软件建模具有格式多样性,目前已有3d检索方法可解析的格式较少,无法满足多种数据格式解析的需求。
4.特征提取是3d检索任务中最关键的环节之一,在很大程度上决定检索性能。3d模型特征表示方法可分为基于graph特征方法、基于2d投影特征方法、基于3d几何特征方法。基于graph特征的方法适用于具有骨架结构的模型,以3d工业品模型作为输入,不适宜使用基于graph特征的方法。基于2d投影的方法根据视角不同,将3d模型投影到多视角2d图像,提取2d图像的特征作为3d模型的特征进行特征匹配,该方法识别准确率通常不能满足高准确率需求的3d检索任务。基于3d几何特征的方法是应用最广泛的方法,也是本系统所使用的方法,该方法识别准确率相对较高。
5.虽然对于3d数据的检索任务已经研究了很多年,但是由于视角、模型大小、模型样式、数量的不同,识别速度以及准确率都具有一定的提升空间,这项任务仍然具有相当大的挑战性。
技术实现要素:6.本发明目的是提供一种基于3d数据的工业品智能检索方法。该方法可以克服模型多样性、模型缺陷等问题,实现准确率高、速度快、鲁棒性强的3d工业品智能检索。
7.本发明为实现上述目的所采用的技术方案是:
8.一种基于3d数据的工业品智能检索方法,包括以下步骤:
9.1)获取历史工业品3d数据并对其进行解析,得到三维模型;
10.2)对三维模型进行预处理,得到点云模型;对点云模型进行特征提取,构建离线特征数据库;
11.3)对待检索工业品3d数据进行解析,对解析结果进行预处理以及特征提取,得到待检索特征,结合乘积量化方法与离线特征数据库进行特征匹配,完成智能检索。
12.工业品3d数据的文件类型为:.stl,.obj,.ply,.lwo,.3ds,.dae,.fbx,.off中的任意一种。
13.所述获取历史工业品3d数据并对其进行解析,具体为:基于开源库assimp解析工业品3d数据的顶点、面片以及每个面片与顶点的对应关系,并将顶点与面片的对应关系映射到三维模型,并基于开源库pcl实现工业品3d数据的可视化。
14.所述对三维模型进行预处理包括形状归一化、位姿变换、点云采样。
15.所述形状归一化,具体为:将三维模型中所有顶点的坐标(xi,yi,zi)分别在x,y,z三个维度上求和得到(xs,ys,zs),然后除以顶点个数i,得到(xc,yc,zc)作为三维模型的质心坐标;以质心坐标为中心,计算每个顶点到质心的欧式距离,将所有顶点到质心的欧式距离取平均距离并归一化为常数,根据归一化的结果对三维模型进行缩放。
16.所述位姿变换,具体为:基于npca或cpca方法,求解缩放后的三维模型的协方差矩阵,对协方差矩阵求取特征值及特征向量,将特征值按照从大到小排列为a1、a2、a3,将特征值a1对应的特征向量方向作为x轴,将特征值a2对应的特征向量方向作为y轴,特征值a3对应的特征向量方向作为z轴;以缩放后的三维模型质心为原点,将缩放后的三维模型旋转到新求解的坐标轴下。
17.所述点云采样,具体为:针对旋转后的三维模型,在模型上共随机采样多个点,采样过程以三角面片的面积作为权重,即三角面片的采样概率和该面片的面积成正比,以f1,f2,
…
,fn表示模型n个面片的面积,则在每一次采样中,第k个面片被采样的概率为fk/(f1+f2+
…
+fn),通过点云采样将旋转后的三维模型转换为点云模型。
18.所述特征提取采用pointnet++,dgcnn,pointconv中的任意一种,对每个点云模型提取d维全局特征。
19.所述乘积量化方法具体为:将d维全局特征平均切分为m组子空间,即每组子空间维度为d*维,d*=d/m,采用kmeans聚类算法将每组子空间聚成k类,每组子空间的k类聚类中心构成一个码本,所有子空间码本的笛卡尔积构成原始d维空间的码本。
20.所述特征匹配具体为:首先将d维待检索特征x,拆分为m维子空间,通过查询码本,计算得到m维子向量与k类聚类中心距离;在得到待检索特征x在每组子空间中距离后,对于离线特征数据库中模型全局特征,通过查表获得待检索特征x与每个模型全局特征的欧式距离,取欧式距离最小的前10个特征作为检索结果,并取出相应工业品3d数据。
21.本发明具有以下有益效果及优点:
22.1.本发明方法提出了一种基于3d数据的工业品智能检索方法,准确率高、速度快、鲁棒性强。可以应用于3d工业品智能检索领域,为3d工业品采购人员提供直观、丰富的3d检索能力,实现对3d工业品的智能存储与检索。
23.2.本发明方法针对多种格式三维工业品cad模型,实现快速的解析和读取,满足工业品格式多样性解析需求。
24.3.本发明方法提出的形状归一化、位姿变换等预处理方法实现三维模型的尺度及旋转不变性,可有效提高检索的准确性及鲁棒性。
25.4.本发明方法提出的全局特征描述及检索方法运算复杂度低,速度快,准确率高。
附图说明
26.图1是工业品智能检索流程图;
27.图2是mesh格式三维cad模型图;
28.图3是.stl格式文件面片图;
29.图4是三维模型形状归一化结果图;
30.图5a是基于cpca方法位姿变换结果图;
31.图5b是基于npca方法位姿变换结果图;
32.图6是三维模型采样结果图;
33.图7是三维模型检索结果图;
34.图8是本发明的方法流程图。
具体实施方式
35.下面结合附图及实施例对本发明做进一步的详细说明。
36.如图1和图8所示,一种基于3d数据的工业品智能检索方法,包括以下步骤:
37.(a)对工业品实体模型3d格式数据进行读取和解析。
38.(b)对解析得到的离线和在线3d数据进行预处理(形状归一化、位姿变换、点云采样)后基于pointnet++分别提取特征,然后进行特征匹配并基于乘积量化提高检索速度。
39.在(a)步骤中,针对图2所示的mesh格式的三维cad模型进行读取和解析,其中三维模型的边界表面以三角形网格(triangle mesh)来表示。本方法可实现.stl,.obj,.ply,.lwo,.3ds,.dae,.fbx,.off等多种mesh格式的读取与解析。
40.如图3所示,以ascii格式的.stl文件为例,其内部三角面片的数据存储形式如下:
[0041][0042]
其中(ni,nj,nk)为三角面片的法向量;每个三角面片由3个共面顶点构成,(v
1x
,v
1y
,v
1z
)为三角形顶点1的三维坐标。
[0043]
在(a)步骤中,基于开源库assimp解析上述格式三维cad模型的顶点,面片,以及每个面片与顶点的对应关系,并将顶点与面片的对应关系映射到三维模型。
[0044]
在(b)步骤中,对解析得到的离线及在线3d数据进行预处理:主要包括形状归一化、位姿变换、点云采样等。
[0045]
形状归一化对每个三维cad模型,将所有顶点坐标在欧式距离内求均值,作为该模型的质心坐标。以质心坐标为中心,计算每个顶点到质心的欧式距离,并将顶点到质心的平均距离归一化为常数,实现3d模型检索的尺度不变性,归一化结果如图4所示。
[0046]
位姿变换基于npca或cpca方法,求解三维模型的协方差矩阵,其中cpca方法基于模型三角面片顶点到质心的距离求取协方差矩阵,而npca方法基于模型三角面片的法向量求取协方差矩阵,故需先由三角面片的3个顶点坐标求取法向量;对协方差矩阵求取特征值
及特征向量,将特征值按照从大到小排列为a1》a2》a3,将特征值a1对应的特征向量方向作为x轴,该方向表征了模型的最大方差方向,将特征值a2对应的特征向量方向作为y轴,方向表征了模型的次大方差方向,特征值a3对应的特征向量方向作为z轴;以模型质心为原点,将三维模型旋转到新求解的坐标轴下,实现三维模型的旋转不变性。基于cpca方法与基于npca方法行位姿变换的结果如图5a及图5b所示。
[0047]
点云采样针对每个三维模型,在三角面片上共随机采样2048个点,采样过程以三角面片的面积作为权重,即三角面片的采样概率和该面片的面积成正比。以f1,f2,
…
,fn表示模型n个面片的面积,其中n由具体的模型决定,则在每一次采样中,第k个面片被采样的概率为fk/(f1+f2+
…
+fn)。通过点云采样将cad模型转换为点云模型,采样得到的点云模型如图6所示。
[0048]
在(b)步骤中,特征提取环节基于点云数据特征提取算法pointnet++,也可以采用其他基于点云数据的特征提取的方法,如dgcnn,pointconv等。离线阶段对数据库中的三维cad模型进行特征提取,每个三维模型提取256维全局特征,构成离线几何特征数据库;在线检索阶段,对待检索三维模型同样提取256维全局特征,用于与离线几何特征数据库中特征进行特征匹配。
[0049]
在(b)步骤中,针对大规模几何特征数据库,采用欧氏距离进行暴力检索方法时间成本较高,本方法基于乘积量化(product quantization)方法提高检索速度。将d维全局特征(d=256)平均切分为m组(m=8)子空间,即每组子空间维度为d*维(d*=d/m=256/8=32),采用kmeans聚类算法将每组子空间聚成k类(k=256),每组子空间的k类聚类中心构成一个码本,这些子空间码本的笛卡尔积构成原始d维空间的码本。特征匹配阶段,首先将d维(d=256)待检索特征x,拆分为m(m=8)维子空间,通过查询码本,计算得到m维子向量与k(k=256)类聚类中心距离;在得到特征x在每组子空间中距离后,对于离线特征数据库中模型特征,通过查表即可获得特征x与每个模型全局特征的距离,取欧式距离最小的前10个特征作为检索结果,并取出相应工业品三维cad模型,如图7所示。