|
概述 现代意义上的逆向工程(亦称反求技术),实际上是根据已有零件或产品原型来构造零件或产品的三维实体模型。目前,逆向工程技术已成为世界各国消化、吸收国外先进技术的重要途径。逆向工程的基本思想是对已有的外来产品,通过各种测量途径(如坐标测量机测得的原始数据,通过对产品进行断层扫描或切片,再采用工业CT扫描、扫描仪扫描或数字照相等方法来获得零件的断层图象)得到产品的数据信息,接着,对这些图象或数据进行一系列处理之后再进行特征识别,然后,利用这些已识别出的特征信息,借助商品化的几何造型软件进行实体造型形成零件的三维实体模型,再通过对重构的实体模型进行改进,在此基础上构造和设计出性能更好的新产品。当前,困惑逆向工程的主要问题是特征识别问题,从国内外的研究现状来看,基本上都是采用人机交互的方式对数据进行修复或手工处理的方式对原始的测量数据进行修补之后再进行特征识别,大大地延长了产品的制造周期。为此,本文研究了一种自动识别特征的方法,与现有的方法相比,大大地提高了特征识别的自动化程度,缩短了产品的制造周期。
3 M% ?( j8 I% Y; v 2 算法的基本思想
/ W! {8 L' o1 A2 `9 L" y 在文献〔1〕中,我们讨论了产品切片断层图象的滤波和边界提取问题,从中我们可以得到有关产品断层截面的轮廓信息(即由一系列封闭的内外环组成)。本文的工作就是首先对这些轮廓信息(由一个个象素点组成)进行多边形化(即将该轮廓近似地由一个个小的直线段来逼近表示),接着对已经多边形化后的各层轮廓数据逐层进行环匹配,抽取出一系列可以用来进行特征造型的几何特征。最后,再利用商品化造型软件所提供的二次开发工具进行编程读取这些特征信息,自动进行实体造型,生成零件图纸以及可用于数控加工的NC代码或用于激光快速成型的STL文件,以便进行加工制造。
`0 L. ^, g! Z9 c; i (1)边界轮廓的多边形化% X! V$ P, n- |9 a4 x' u( R. g
经边界提取之后得到的零件的轮廓曲线(或内外环信息),都是由一个个相邻的图象元素连接而成,由于这样的曲线不仅包含的点数太多,而且还包含有图象处理中未能消除的噪声信息,不仅在特征识别处理时数据量大、效率低,而且,很难进行特征识别。因此,在特征识别之前,须对这些数据进行多边形化。
5 U. K3 }3 ]( k 严格来说,计算机显示器所能显示的任何曲线都是多边形,因为屏幕上显示的任何曲线都是通过连接相邻两个象素的连线形成的。从理论上来说,对任何一条曲线和任意的精度要求,都可以通过多边形逼近达到。这里,我们采用多边形化的目的是为了尽量减少顶点数目。另外,前面已经提到,从前面预处理中获取的数据,往往包含了大量的噪声成分,对于这些未滤掉的噪声,也希望在多边形化时尽量清除掉。为此,在进行多边形化时,我们先将要多边形化的曲线轮廓点进行分组,接着分别检查每一组点是否共线,若不共线,则对该组的点继续分割,直到共线为止;同样地,对已经检查共线的相邻两组点,进行共线检查,若二者共线则合二为一,通过这样不断地进行分割和合并,直到所有的点组合部处理完毕为止。8 U1 L8 R: ~' i0 v+ `+ Q
这里主要有两个关键问题需要解决:其一是如何判断点集共线的问题。主要是如何确定共线的误差阈值,最直接的方法就是通过判断点到直线的距离大小,但这种判断方法往往会引起图形失真。
0 i. ~; B! @# m9 u9 g) r. ]9 O 虽然点C与直线段AB的距离很小,但ABC三点并不共线,为了解决这个问题,在本文的算法中,采用两步来解决这个问题,首先检查点C与直线AB的距离大小,若该值大于给定的阈值,则认为不共线;否则,再检查弧长(用线段近似代替)的变化量,若弧长的变化量小于给定的阈值,则认为共线,否则,认为不共线。采用这种方法便可以避免把这种情况误认为ABC三点共线。其二是对直线与圆弧相交的情况,往往会引起图形严重失真。如图2(b)所示。2 X- t3 V% U9 \; O. n) r# V. [
为了解决这个问题,在一般的图象矢量化算法中,往往是将阈值取得非常小,这往往会引起数据量成倍增加。为此,在本文的算法中,首先对认为已经共线的点采用最小二乘法进行拟合,然后,将最近直线两端点的两点,分别向该直线投影,取这两个投影点作为拟合后的直线的两个端点,很好地解决了这个问题。
, [5 k7 p- a# f3 K( Q# y (2)特征匹配
) d6 |1 R$ k" N% }2 T 特征匹配的目的是根据零件各个不同的切片断层截面上的轮廓曲线,采用环匹配的方式找出该产品的各个组成特征。由于在本文算法中,对于位于不同切片层上的环预先全部进行了多边形化,故可以按照多边形的布尔运算的方法来判断出位于不同层上的两个环是否代表同一特征。其算法的基本思想可以描述如下:
1 B" }8 N# k8 G* G' g 设P1、P2分别表示位于不同层上的两个多边形环,R1、R2分别表示P1、P2的矩形包围盒。1 L* d& V* ^8 R8 f* y
①首先判别矩形R1、R2是否相交,或R1、R2不相交,即R1∩R2=Φ,则说明这两个多边形不可能属于同一特征上的两个截面,返回FALSE。否则,进行下一步。
" J8 N d: j0 a: V9 ~( M' A ②若矩形R1、R2相交,分别依次计算这两个多边形的面积,若这两个多边形的面积之比值大于给定的阈值,则说明这两个多边形的形状相差很大,不属于同一特征上的两个截面,返回FALSE。否则进行下一步。9 Z( u$ W+ U4 M+ B2 T0 A
③计算这两个多边形的交,即P=P1∩P2;若P与原来的多边形之差很小,则说明这两个多边形为同一特征的两个截面,返回TRUR。否则,再采用下面的步骤继续判别:+ B# Q( F* k' o* @1 G
a.若一个矩形包围盒包含在另一个矩形包围盒之中,如R2∈R1,首先计算R2与多边形P1的交,即R2∩P1,接着,再计算它与多边形P2的交。若求交之后所得的多边形(即交)的面积与原来的多边形面积之差小于给定的阈值,则认为这两个多边形(即交)的面积与原来的多边形面积之差小于给定的阈值,则认为这两个多边形属于同一特征的两个截面,返回TRUR;否则,两个截面不属于同一特征,返回FALSE。/ e; t) t; }! P$ @) q5 o
b.对于非上述情况,首先计算这两个多边形的矩形包围盒的交,即R12=R1∩R2。若R12与包围盒R1(或R2)的面积之比值不在预先给定的允许范围,则说明这两个多边形不可能属于同一特征的两个截面,返回FALSE;否则,再分别计算多边形P1和多边形P2与矩形R12的交,如设它们的交分别为P1’=P1∩R12,P2’=P2∩R12;然后,再对多边形P1’和P2’分别计算出其包围盒R1’和R2’,令R1=R1’,R2=R2’,返回到步骤(1),重复上面的过程。
0 |! Q& p( I5 v6 O+ ^$ ]7 H* A 为了进一步提高多边形的求交效率,在处理多边形求交过程中,我们首先判别该多边形是凸多边形还是一般的多边形,然后采用不同的算法进行多边形求交。由于关于凸多边形的求交算法要比一般的多边形简单得多,故采用这种方法可以大大地提高算法效率。
! O7 o/ _5 a% [# D. q; r (3)实体重构
2 @" G3 t7 R U1 c5 K 实体重构是根据前面所述的算法进行特征识别后所提取的各种形状特征,利用实体造型的方法借助几何造型软件重新构造出零件三维实体模型。一般来说,在特征识别完成之后,我们便得到了有关组成零件的各种特征信息(如基础特征,构造特征,辅助特征等等),在进行三维特征重构之前,先将组成产品的各种特征进行分类,通常从基础特征开始,将各种构造特征进行分类,形成一个特征分类树,然后再采用三维特征造型软件进行三维重构。在进行三维重构时,利用该特征分类树,首先从组成该产品(或零件)的基础特征开始,再以该特征作为基础依次添加上各种构造特征,最终形成产品的三维模型。为了使整个造型过程能自动完成,一般需要借助商品化造型软件提供的二次开发工具进行二次开发来完成所要求的操作。在本文的系统中,我们在进行三维重构时,借助商品化的造型软件 SolidWork97提供的二次开发工具应用Visual Basic语言进行了二次开发,实现了利用上述所识别出的特征信息自动构造产品三维模型的过程。+ [ W$ X6 B% R
3 结论
0 w ^' i$ s1 j8 K, j6 ~8 F: K 本文着重研究了逆向工程中的特征识别和三维重构问题,特征识别的问题一直是逆向工程中的一个瓶颈。本文采用多边形化以及多边形布尔运算等算法,较好地解决了特征自动识别的问题。实践证明:该算法对一般中等复杂程度的零件的逆向设计是行之有效的。 |
|