结合总体及零件参数的装配体CAD模型检索
2023-11-30华顺刚,尚政,王雪飞
华 顺 刚, 尚 政, 王 雪 飞
( 大连理工大学 机械工程学院, 辽宁 大连 116024 )
0 引 言
随着数字化设计技术在工业生产中的广泛应用,企业建立了大量的CAD模型.这些模型通常蕴含许多设计知识和理念.在创新过程中,75%以上的工程设计是通过改进现有的产品来完成的[1].模型重用离不开检索技术的支持.现有的装配体检索方法大致可分为两类:基于拓扑结构的方法和基于形状的方法[2].
基于拓扑结构的方法采用了装配体内部的拓扑信息,即零件模型之间的关系进行检索.Chen等[3]收集了拓扑结构、装配语义、运动关系、几何参数等装配体模型中不同层次的信息,生成支持不同搜索要求的多级装配体描述符,并利用索引机制过滤不匹配的模型,实现快速检索.Rucco等[4]从STEP描述中提取零件的形状和接触信息;Lupinetti等分析零件之间的运动学对[5]、检测重复元素的规则模式[6],将形状和结构数据编码为属性图[7],实现装配体模型检索.Han等[8]使用包含多种属性信息的属性邻接图表示装配体模型,考虑零件属性和装配关系来综合评价装配体模型间的相似度,将装配体模型划分为不同的类别以加快检索速度.基于拓扑结构的方法由于使用图结构表示零件之间的约束关系,其匹配和检索过程的复杂度较高,并随着图规模的增大而快速增加.
基于形状的方法将装配体中每个零件模型的形状信息都考虑在内,通过比较零件之间的相似性进行检索.Osada等[9]使用形状函数的随机采样分布作为描述符,将形状匹配问题简化为概率分布的比较,用来评估零件形状的相似性.Hu等[10]提出了一种基于矢量空间模型的轻量级装配体检索方法,采用贪心算法加速零件匹配过程.Wang等[11]通过形状分布直方图将装配体模型描述为一个集合,采用推土机距离(earth mover′s distance,EMD)算法计算集合之间的不相似度,以评估装配体模型之间的差异.在此基础上,Zhang等[12]采用修改的豪斯多夫距离(modified Hausdorff distance,MHD)算法计算装配体模型间的不相似度.Kim等[13]提出一种装配体模型综合比较方法,根据装配关系和零件形状的不相似性确定装配体模型的不相似性.Hua等[14]使用CAD参数描述装配体模型,计算装配体间零件层次和总体层次的不相似度,求得最终不相似度并用于检索.
考虑到基于形状的方法可以从多个方面描述模型,如装配体整体层次、所包含的零件层次,以及各层次模型的几何参数、轮廓、颜色和纹理等信息,本文提出一种结合总体及零件参数的基于形状的装配体CAD模型检索方法,利用模型的几何参数和属性数据,以及模型快照图像中的轮廓和颜色信息,分别从总体层次和零件层次描述装配体模型,计算装配体间非相似度,实现模型检索.
1 装配体模型检索总体思路
装配体模型是由多个零件模型按照一定的约束关系装配而成的.在CAD系统中,装配体模型及其包含的零件模型都具有几何参数和属性信息,这些信息均反映模型的形状特征.某些特殊的产品会具有独特的轮廓和特殊的颜色标识,同样可以用于模型的比较和区分.本文采用这些信息分别从总体层次和零件层次描述装配体模型从而实现检索,总体研究思路如图1所示.
图1 装配体模型检索总体思路框图
在总体层次,(1)从CAD系统中获取装配体模型的几何参数和属性信息,归一化处理后生成参数矢量,用于计算不同装配体间的差值;(2)获取装配体模型3个方向的快照,生成轮廓图像,采用修改的豪斯多夫距离进行三对三的距离计算,得到轮廓间的差值;(3)基于快照图像提取模型主色调,比较产品模型的主色调获得差值.将上述3个差值相加得到装配体模型间总体层次的非相似度.
在零件层次,遍历装配体模型中包含的所有零件,利用SolidWorks开发函数获取各零件模型的几何参数和属性信息,归一化处理后生成参数矢量.不同装配体包含的零件数量不同,采用修改的豪斯多夫距离实现多对多的矢量差值计算,作为零件层次的非相似度.
为获取较好的检索效果,将总体层次和零件层次的非相似度进行加权处理,加权系数通过实验确定.
2 总体层次装配体描述及非相似度计算
2.1 基于总体层次参数矢量的装配体描述及非相似度计算
提取装配体模型的包围盒尺寸、转动惯量、惯性积、质心到包围盒中心距离、3个方向(主视、右视、俯视)快照图像中轮廓面积和周长、模型体积等信息作为参数,构造装配体模型参数矢量.本文方法用于检索形状相似的模型,暂不考虑模型材料的差异.为了实现尺度不变性和方向不变性,还需对参数进行归一化处理.
装配体模型的外形尺寸可以通过包围盒尺寸反映.设Xbox、Ybox、Zbox分别为装配体模型包围盒沿X、Y、Z轴方向的长度.令s1=Xbox+Ybox+Zbox,归一化处理得Xbox/s1、Ybox/s1、Zbox/s1,将其按升序排序后赋值给a1、a2、a3.
装配体模型的转动惯量在质心处取得,反映了装配体模型的形状分布.设IXX、IYY、IZZ分别为装配体模型关于X、Y、Z轴的转动惯量.为了实现具有方向不变性的检索,将IXX、IYY、IZZ按照升序排序.令s2=IXX+IYY+IZZ,归一化处理得a4=IXX/s2,a5=IYY/s2,a6=IZZ/s2.
装配体模型的惯性积在质心处取得,反映了装配体模型的对称信息.设IXY、IXZ、IYZ分别为装配体模型关于XY、XZ、YZ矩形轴的惯性积,并根据上述转动惯量IXX、IYY、IZZ的顺序对IXY、IXZ、IYZ作相应的调整.由于惯性积有可能为负值,令s3=|IXY|+|IXZ|+|IYZ|,归一化处理得a7=|IXY|/s3,a8=|IXZ|/s3,a9=|IYZ|/s3.需要注意的是,当s3=0时,a7=a8=a9=0.
质心到包围盒中心的距离反映了装配体模型的质量分布.设Xd、Yd、Zd分别为装配体模型质心到包围盒中心沿X、Y、Z轴方向的距离,(Xg,Yg,Zg)为装配体模型质心坐标,(Xc,Yc,Zc)为装配体模型包围盒中心坐标,则Xd=|Xg-Xc|,Yd=|Yg-Yc|,Zd=|Zg-Zc|.根据上述包围盒边长Xbox、Ybox、Zbox的顺序对Xd、Yd、Zd作相应的调整.由于装配体模型质心到包围盒中心的距离一般不超过包围盒最长边长的1/4,归一化处理后得a10=4Xd/Zbox,a11=4Yd/Zbox,a12=4Zd/Zbox.
模型的形状不同,其轮廓可能会不同,这里分别采用轮廓的面积和周长进行描述.通过CAD系统获取装配体模型的快照图像,遍历所有像素点的值获取模型轮廓的面积和周长.Sf、Sr、St分别表示主视、右视、俯视3个方向快照图像中模型轮廓的面积.为实现具有尺度不变性的检索,以模型最长边为边长,计算正方形面积Ss,归一化处理得Sf/Ss、Sr/Ss、St/Ss,将其按升序赋值给a13、a14、a15.
设Lf、Lr、Lt分别为装配体模型3个方向快照图像的轮廓周长.令s4=Lf+Lr+Lt,归一化处理得Lf/s4、Lr/s4、Lt/s4,根据前述轮廓面积的排序将其分别赋值给a16、a17、a18.
外形相似的装配体模型,其内部差异可由体积占其包围盒体积的比例反映出来.设Vall为装配体包含的各零件体积之和.已知Xbox、Ybox、Zbox分别为装配体模型包围盒沿X、Y、Z轴方向的长度,令Vbox=Xbox×Ybox×Zbox,则a19=Vall/Vbox.
通过以上描述和归一化处理,得到总体层次的具有尺度不变性和方向不变性的参数值.构造装配体模型参数矢量如下:
G=(a1a2a3a4a5a6a7a8a9a10
a11a12a13a14a15a16a17a18a19)
(1)
装配体模型及其参数矢量实例见表1.
从表中可见,相似模型拥有相近的参数矢量,而不相似的模型,其参数矢量的差异明显增大.
本文采用参数矢量间的曼哈顿距离表示模型间的非相似度.设装配体模型A、B对应参数矢量的曼哈顿距离为
表1 装配体模型及其参数矢量
(2)
则装配体模型A、B间的非相似度为
Sd1=dAB
(3)
2.2 基于装配体模型轮廓的非相似度计算
通过CAD系统获取装配体模型的快照图像,经二值化处理后,采用OpenCV函数库中的findContours方法提取快照图像轮廓如图2所示.
图2 脚轮模型快照图像及其轮廓
装配体模型间的非相似度可通过比较模型轮廓的差异获得.本文采用修改的豪斯多夫距离(DmH)实现轮廓间的多对多匹配.
DmH表示一个集合中每个元素到另一个集合中所有元素最小距离的平均值.设x为集合X中的元素,y为集合Y中的元素,则从X到Y的单向DmH定义为
(4)
(5)
Sd2=DmH(VA,VB)
(6)
2.3 基于装配体模型主色调的非相似度计算
主色调是指产品中占面积最大的颜色,同系列模型一般拥有相同的主色调.本文将主色调作为装配体模型的特征,用于计算模型间非相似度.
HSV颜色空间中包含白、黑、红、橙、黄、绿、青、蓝、紫9种颜色.遍历装配体模型快照图像轮廓包围面积内的像素点,记录各像素点的颜色.分别统计9种颜色的像素点数量,记录像素点数量最多的颜色C1及对应的数量N1、像素点数量次多的颜色C2及对应的数量N2.
由于装配体模型可能存在中空结构,统计像素点颜色信息时会将部分背景像素点包含在内,导致像素点数量最多的颜色不一定是装配体模型主色调.
在获取颜色C1和C2后,判断背景色是否与C1相同,如果不同,则C1即为装配体模型的主色调,否则计算N1和N2的比例,如果比例超过阈值,则装配体模型的主色调为C1,否则为C2.经测试,当阈值取3.4时提取主色调效果较好.
当两装配体模型的主色调相同时,非相似度为0,否则为1.设CA和CB分别表示装配体模型A和B的主色调,则装配体模型A、B间的非相似度为
(7)
结合式(3)、(6)、(7)即可得到两装配体间总体层次的非相似度:
Sdg=Sd1+Sd2+Sd3
(8)
3 零件层次装配体描述及非相似度计算
除了从总体层次描述装配体外,还应从零件层次进行描述,以考虑零件形状对相似度的贡献.本文选取零件模型的包围盒尺寸,体积,表面积,转动惯量,惯性积及面、边、点、环的数量,最大面的面积,质心到表面最短距离等参数,经归一化处理后构造零件模型参数矢量如下:
p=(b1b2b3b4b5b6b7b8b9b10
b11b12b13b14b15b16b17b18b19b20
b21)
(9)
设xbox、ybox、zbox分别为零件模型包围盒沿x、y、z轴方向的长度.s5=xbox+ybox+zbox,归一化处理得xbox/s5、ybox/s5、zbox/s5,将其按升序排序后赋值给b1、b2、b3.
设Vpart、Spart分别为零件模型的体积、表面积.零件模型包围盒体积V′box=xbox×ybox×zbox,零件模型包围盒表面积Sbox=(xbox×ybox+xbox×zbox+ybox×zbox)×2,则b4=Vpart/V′box表示零件模型的体积占其包围盒体积的比例,b5=Spart/Sbox表示零件模型表面积占其包围盒表面积的比例.
设Ixx、Iyy、Izz分别为零件模型关于x、y、z轴的转动惯量,Ixy、Ixz、Iyz分别表示零件模型相对于xy、xz、yz矩形轴的惯性积.这6个参数是在零件模型的质心处得到的,与参考平面x、y、z轴相关.当参考平面不同时,它们的顺序也会发生变化.为实现方向不变性的检索,将Ixx、Iyy、Izz按照升序排序,并根据其顺序相应调整Ixy、Ixz、Iyz的顺序.s6=Ixx+Iyy+Izz,将转动惯量归一化为b6=Ixx/s6,b7=Iyy/s6,b8=Izz/s6.s7=|Ixy|+|Ixz|+|Iyz|,将惯性积归一化为b9=|Ixy|/s7,b10=|Ixz|/s7,b11=|Iyz|/s7.特别地,若s7=0,则b9=b10=b11=0.
设Npl、Ncyl、Nface分别为零件模型包含的平面、圆柱面、所有面的数量.归一化处理后得b12=Npl/Nface,表示零件模型包含的平面数量占其所有面数量的比例;b13=Ncyl/Nface,表示零件模型包含的圆柱面数量占其所有面数量的比例;b14=1-b12-b13,表示零件模型包含其他类型的面数量占其所有面数量的比例.
设Nline、Ncir、Nedge分别为零件模型包含的直边、圆边、所有边的数量.归一化处理后得b15=Nline/Nedge,表示零件模型包含的直边数量占其所有边数量的比例;b16=Ncir/Nedge,表示零件模型包含的圆边数量占其所有边数量的比例;b17=1-b15-b16,表示零件模型包含其他类型的边数量占其所有边数量的比例.
设Nvert、Nloop分别为零件模型包含的顶点、环的数量.s8=Nvert+Nloop,归一化处理后得b18=Nvert/s8,b19=Nloop/s8.
设Smax为零件模型中最大面的面积,将其归一化为b20=Smax/Spart.设Dmin为零件模型质心到其表面的最短距离,当质心在零件模型外部时,令Dmin为正值,否则为负值,将其归一化为b21=Dmin/zbox.
通过上述归一化处理,得到各零件模型的参数矢量.装配体模型可由零件的参数矢量集合来描述.由l个零件组成的装配体模型,其描述符P表示为
P={p1,p2,p3,…,pl}
(10)
装配体模型描述符实例如图3所示.
装配体模型间的非相似度可通过比较矢量集合的差异获得.本文采用式(5)中双向DmH实现矢量集合间的多对多匹配,其中使用曼哈顿距离度量参数矢量间的距离.设PA、PB分别为装配体模型A、B的矢量集合,则装配体模型A、B间的非相似度为
图3 管钳模型及其描述符
SdP=DmH(PA,PB)
(11)
得到装配体模型间零件层次的非相似度SdP后,结合总体层次的非相似度Sdg得到最终非相似度Sd.设加权系数β为常系数,则装配体模型间非相似度为
Sd=SdP+βSdg
(12)
4 检索实验
本文在SolidWorks 2018 API和Visual Studio 2019环境下,利用C++语言开发了一套装配体模型检索系统.所用的SolidWorks API函数主要有IgetMassProperties(获取模型的质量属性如质心坐标、转动惯量、惯性积等)、IgetBox(获取装配体模型包围盒3个方向的尺寸)、IgetChildren(获取装配体模型的子组件集合)、IgetPartBox(获取零件模型包围盒3个方向的尺寸)、IclosestDistance(获取两实体的最近距离和距离最近的一对点)以及GetBodies2(获取零件模型的实体集合).如图4所示为查询与检索结果显示界面,其中左上角为查询模型,右侧为前20个检索结果,按非相似度升序排列.检索结果对应的非相似度越小,与查询模型越相似.
为测试本文方法的检索性能,从互联网模型库[15-16]下载了421个装配体模型并存储在数据库中.
图4 查询与检索结果显示界面
4.1 确定加权系数β
由于零件层次的参数信息反映了装配体模型的细节特征,考虑给零件层次分配较大的权重.令零件层次的加权系数为1,总体层次的加权系数为β(0<β<1).为了研究β对检索效果的影响,本文随机选择机械制动器、垂直夹钳、刚性拨动锁扣、旋转接头4个系列共38个装配体模型作为查询模型,在模型数据库中进行检索实验.实验选择的查询模型如图5所示.
图5 检索实验查询模型
根据β=0.3,0.5,0.7,0.9时的检索结果,绘制查准率P-查全率R曲线如图6所示.
图6 不同β下的查准率-查全率曲线
可以看出,当查全率小于0.8时,查准率较高,而查全率大于0.8时,查准率较低.这是因为在每个系列的装配体模型中,总会有少数模型与其他模型形状差异较大,在检索结果中处于靠后的位置,导致在同系列模型查全率较高时查准率降低.
为了确定最佳的加权系数β,计算不同β下的平均查准率.当β=0.3,0.5,0.7,0.9时,平均查准率分别为89.60%、90.22%、89.87%和89.30%,其中β=0.5时平均查准率最高.因此本文取β=0.5,以获得更好的检索结果.
4.2 检索效果分析
为了测试本文方法检索效果,选取电缆托链、电磁阀、滑台、垂直夹钳、刚性拨动锁扣5个装配体模型进行查询,得到检索结果如图7所示.
可以看出,图7中a、b的检索结果中前7个模型均与查询模型相似,c、d、e的检索结果均与查询模型为同系列模型.检索结果中第一个模型为查询模型本身,其后非相似度随模型差异的增大而增大.
图7 查询实例及检索结果
进一步与形状分布+EMD的方法[11]、零件参数+MHD的方法[17]进行比较,绘制查准率-查全率曲线如图8所示,实验条件与上文一致.
图8 3种方法的查准率-查全率曲线
可以看出,本文方法查准率高于文献[11]和文献[17]中的方法.这是因为本文方法同时考虑了装配体模型零件层次和总体层次的特征信息,其中零件层次描述了装配体的局部细节,总体层次则反映了装配体的全局特征.将二者以合适的权重进行结合,能够更全面地描述装配体模型.
5 结 语
本文提出了一种结合总体层次及零件层次参数的装配体CAD模型检索方法.对于总体层次,使用装配体模型整体的CAD参数,配合快照图像直观地描述装配体模型的形状、颜色等特征;对于零件层次,采用零件参数矢量构造装配体描述符,通过双向修改的豪斯多夫距离进行装配体间的零件匹配,得到装配体间非相似度.实验表明,本文方法能够得到满意的检索效果.