电路原理图纸识别系统研究与实现
扫描二维码
随时随地手机看文章
摘 要: 本文讨论了纸质电路原理图的自动输入和识别,主要理解图纸字符、分立元件和相互间的拓扑关系。首先对扫描得到的光栅图像进行了字符的模式分离,采用8x8网格抽取63种字符的特征,并采用BP神经网络进行识别。提出探索试探法快速跟踪直线/曲线;用特征匹配方法混合识别导线和部分元器件;提出了X/Y坐标正交投影的方法识别元器件,提高了识别速度;而右手边缘跟踪的识别方法抗噪声的性能较强。最终将字符、导线和元器件符号三元素有机结合,得到规范化的图纸输出。
关 键 词: 模式识别;图像处理;电路原理图;神经网络
引 言
目前,国内外许多大中型企业都在开始自己的信息化进程,而企业中长期积累下来的各种图纸、文档资料是一笔巨大的财富。如何在信息化过程中将这部分资料电子化以利再利用,是一件很有意义的事。
国内外对于工程图纸识别研究工作是从80年代后期兴起的,至今仍然是模式识别领域的热点之一。研究主要集中在机械图纸矢量化、理解上。电路原理图同样是很重要的工程图纸,但是因为元件符号的多样性,增加了识别系统实用化的难度。使得这方面的研究成果较少见诸纸面。
2 图纸识别的模式分离
电路原理图主要由三种元素构成:导线、元器件符号和字符。其中字符包括英文字母、数字、以及器件的一部分,比如电解电容的“+”,电感的极性标识“·”等等。成分比较复杂,差异较大,因此要对图纸的内容做模式分离。整个识别系统的结构如图1所示。
图纸经过扫描之后得到光栅图像。有必要对光栅图像中的色度或者灰度信息进行动态二值化处理。再经过必要的滤波降噪的处理之后,开始图纸内容的理解工作。
在图纸理解的过程中,由于字符的特征明显,且与导线或者元器件不易产生混淆,因此容易分割出来单独进行识别。但是某些器件的局部特征和导线是不易区分的,比如电阻或者集成块矩形较长的一条边和导线的特征是相同的,所以需要混合处理。先对全图判别线段和节点,分别标注属性;然后进行器件识别;器件识别后可以认定剩余的线段属于导线,进行导线的校正处理;最后,判别字符和元器件的从属关系,将字符、器件和导线有机地结合起来,输出新的图纸。
3 字符分割与BP网络识别
3.1 字符分割
如图2所示,字符的特征有三点:(1)孤立;(2)尺寸较小;(3)各个字符大小相近。为此,采用区域生长的方法,对全图进行区域扩充,并且计算得各个连通区域的外接矩形大小。图纸中的器件和导线作为一个连通区域,外接矩形很大,与光栅图像尺寸接近,首先抛弃。其次,字符在图中一般会有多个,它们的外接矩形尺寸近似。因此,利用第3项特征,统计剩余外接矩形尺寸出现的次数,可以得到字符的有效尺寸如式1所示。字符分割后,记录好各个字符的原始位置,送交BP网络识别。
3.2 基于BP神经网络的字符识别
采用“误差反向传播”学习算法的神经网络被称为BP网络。它可以对任意形状的非交观察向量集合进行正确地分类,是目前应用十分广泛的一种人工神经网络。BP神经网络结构如图3(a)所示。
假设输入输出对是(Xk, Yk),其中,Xk是第k个输入向量,Xk =(xk1, xk2, ……, xkn)T; Tk是第k个样本的期望输出,Tk =(tk1, tk2, ……, tkm)T; Ok是第k个样本的网络实际输出,Ok =(ok1, ok2, ……, okm)T。wji为前一层第个神经元输入到后一层第j个神经元的权重, 是第j个神经元的阀值。所有神经元都采用非线性激活函数如式(3)所示,于是神经元的模型如式(1)所示:
对于输入层的神经元,其输出Ok=Xk。对于隐层和输出层,样本k、神经元j的状态定义为: ;神经元j的输出为: 。如果取训练指标函数为: ,使用BP算法将使E在每个训练循环中按梯度下降。对于输出层单元: ;而对于隐层单元: 。它们的权值调整为: 。 通过迭代训练,E小于规定值的时候,可以认为网络收敛。并取当前的wij作为实际识别的权值向量进行识别。
工程图纸上的字符通常只包含英文字母大写A~Z、小写a~z,数字0~9,以及电解电容的符号“+”,字符数一共63个。实际操作的时候,将字符逐一放置到2nx2n(n>2)的位图的左上角,n的选取以该位图可以无缩放地容纳最大的字符图像为准。把该位图平均分割成8X8的特征矩阵,得到的64个特征值,作为BP网络的输入进行训练。试验表明,训练后的BP网络对图纸中的字符识别效果很好。
4 导线和几种常用器件的识别
在字符分离之后,图纸上仍然有导线和元器件符号两种元素。对于它们的模式分离,我们首先识别线段和节点(包括端点、分歧点、交叉点和拐点等),以此为基础首先识别出器件。则剩余的线段和节点就可以认为是属于导线的了。电路元器件的种类繁多,我们选取了其中最常见而且具有代表性的几种分立元件进行了识别。它们包括:电阻、电容、电解电容、电感、可变电感、接地和三极管(PNP和NPN)。这些元器件的形态特征差异较大,因此选择了不同的方法来识别。
4.1 探索试探法线段追踪算法和节点的识别
图纸中线段特征是:(1)长宽比动态范围很大;(2)边缘有毛刺,参差不齐;(3)包含有各种节点。
我们首先在图中寻找长宽比大于3的平滑线段,在噪声的影响下,将得到间断的线段。接着将已识别出的横线和竖线分别标识。再利用连通性判别横线间或者竖线间的连接关系,将识别得到的线段贯通,连接成一条完整的线段。在横线和竖线相连的地方判别为节点;最后做滤波清除掉线段边缘的毛刺。
另外一种方法,探索试探法是快速跟踪直线/曲线的算法。该算法不拘泥于固定匹配模板,对于长度大于线宽3倍的直线/曲线能够搜索出线的中心,在搜索过程中对线宽进行统计,在一定程度上克服线条毛刺对线宽的影响。。其具体的跟踪过程中,当扫描整幅图形时(扫描自上而下,自左而右),总是可以发现线条的顶点A:在A点向八个方向引伸试探搜索。假定线条所覆盖的像素为1,背景为0,即可统计从A点引伸出的八个方向上1像素的个数 ,取 。如图(4)所示,在n7方向上s0取得最大值。B点是从A点开始沿s0方向延伸与边界相交的点。计算AB的中点C的坐标。
在C点,沿AB的垂直方向计算线宽d1,d1为DE方向上的1像素个数。将A点移至C点,重复以上步骤,可以得到CF引伸最长。通过中心点G,可以得到线宽d2。如此连续搜索,直至第K次搜索与K+1次搜索的方向相反,则搜索结束。于是线宽的平均值为 。
4.2 特征匹配识别
在分割导线的时候,不易将导线与电阻、电容或者接地区别开来。因此在能够将导线分割之前,需要将部分器件先行识别出来。我们把节点作为特征点,导线和器件的区别在于特征点的拓扑关系不同。通过对直线的追踪和连通性的判别,可以识别特征点的属性,以及各个特征点之间的拓扑关系。将特征点的属性和拓扑关系作为特征,配合补充特征,与标准元器件特征进行匹配,得到识别结果。
我们获取了标准电阻、(电解)电容和接地符号的特征,如表1所示
实际操作时,在先行识别完电容之后,接地符号实际上就是电容的上半部分。并且取接地符号的“地”的线条宽度和电容的两条平行线条长度相当。
表格 1 电阻、(电解) 电容和接地的特征
器件 |
节点特征 |
节点间拓扑关系 |
补充特征 |
电阻 |
4个拐点,2个分歧点 |
都落在同一矩形上;分歧点落在宽度上,且分歧方向相反,都指向矩形之外 |
矩形中空,长宽比>3 |
(电解)电容 |
4个端点,2个分歧点 |
每2个端点和1个分歧点共线为一组,两组线段平行;2分歧点居中,方向相反 |
电解电容有一个“+” |
接地 |
2个端点,1个分歧点 |
3点共线,分歧点居中,分歧方向向上 |
无 |
4.3 投影快速识别三极管
经过仔细观察我们发现,很多元器件的轮廓特征可以通过它的投影提取出来,快速判别。水平方向和垂直方向的投影,将反映出器件中包含的水平和垂直线段的数量和大致位置。和器件连接的导线也提供了重要特征,因此分割时我们保留了长度为5倍线条宽度的导线。fij表示处在第i行与第j列的图像素值,元器件光栅图可以用矩阵 表示。对它做水平和垂直两方向投影,如式(5)。
(5)
我们以发射极向下的PNP三极管为例说明,从图6我们可以清楚地看到三极管的光栅图像和它在X/Y轴上的投影效果。如图6(b),根据X轴上位于中间的脉冲靠近基极或者靠近集电极来判断是NPN或者PNP型三极管。如图6(c)所示,基极导线的脉冲是位于投影中央的,根据另一脉冲位置来判断箭头,从而得到三极管的放置方式。
手绘图纸上三极管的箭头两翼不一定是水平和垂直的,箭头张角比较小。因此脉冲宽度稍宽一些。取脉冲的中心位置作为脉冲的位置参与比较和判别。
该方法同样可以用来辅助识别包括可变电感、可变电容和可变电阻这一类型的可变器件。
(5) (6)
如式(5)、(6)将图像顺时针旋转45o或者135o,做水平和垂直投影。这相当于对F做45o或者135o投影。对可变器件,投影上会出现一个脉冲,于是取得箭杆的位置;再对F做水平和垂直投影,在接近外接矩形位置上又可以取得箭头位置。将箭头和箭杆部分剥离后,再对剥离箭头以后的核心器件做识别。
4.4 右手跟踪法识别电感
器件的轮廓包含了器件的大部分特征,因此也可以通过轮廓跟踪的方法提取器件的轮廓特征,据此识别器件。另一方面,投影方法有时会由于噪声的影响,使得脉冲高度落差不大,不易判别。使用轮廓跟踪技术可以较为准确地描述出器件的轮廓特征,抗噪声能力强。
如图7,以水平放置的电感为例,我们从电感左侧沿着电感轮廓下沿开始跟踪,到电感右侧结束,记录下跟踪的轨迹。这是一条不封闭的轮廓线。我们根据轨迹的极大值和极小值出现的次数和相对位置关系来判别是否是电感。(1)包含起点,共有5个极值相近的极小值点,4个极值相近的极大值点;(2)极小值点不低于导线虚拟连接线;(3)相邻的极小值点和相邻极大值点水平间距相当。在实际识别的时候,我们考虑了线条宽度的影响,于是认定极大值和极小值之差大于3倍线条宽度。
5 试验结果
图8展示了字符、元器件和导线识别之后整理得到的输出图像。整个系统有如下的功能:
(1) 在已经完成的系统中,能成功识别32种元件符号(包括4个方向)
(2) 能识别63种字符,包括26个大小写英文字母、10个数字和符号“+”
(3) 对300DPI的A4图纸,在CII 1G的计算机上,图纸理解速度≦1分钟
6 结束语
在本文中,对手绘电路原理图中导线、元器件和字符这三种元素的识别提出了有效的方法,并在实践中取得了比较好的识别效果。在经过最后的拼合,将导线、字符和元器件三种元素有机结合起来之后,整张电路图纸中各种元器件和字符的属性、元件之间的拓扑结构都得到了理解。利用现有模式继续扩充,即可快速和准确地识别更多地元器件。
参 考 文 献
1. 施泽生. 电子电路图的自动输入、理解及与ORCAD的链接[J]. 系统工程与电子技术, 1996第2期
2. Yu Yuhong, Ashok Samal, Seth. Isolation Symbols from Connection Lines in A Class of Engineer Drawings. [J] Pattern Recognition, 1994, 27(3):391-404
3. Kei EGUCHI. Design of a fuzzy based circular pattern recognition circuit using current-mode techniques [J]. T.IEE Japan, Vol.120-C, No.12, 2000
4. 章毓晋. 图像图形科学丛书:图像分割[M]. 科学出版社, 2001.2
5. 高学. 一种基于支持向量机的手写汉字识别方法[J]. 电子学报, 2002第5期, P651~654
6. Kenneth. R. Castleman. Digital Image Processing[M]. Prentice Hall, 1996
7. 杨建刚. 人工神经网络实用教程[M]. 浙江大学出版社, 2001年1月