電路原理圖紙識別系統(tǒng)研究與實現(xiàn)
摘 要: 本文討論了紙質(zhì)電路原理圖的自動輸入和識別,主要理解圖紙字符、分立元件和相互間的拓撲關(guān)系。首先對掃描得到的光柵圖像進行了字符的模式分離,采用8x8網(wǎng)格抽取63種字符的特征,并采用BP神經(jīng)網(wǎng)絡(luò)進行識別。提出探索試探法快速跟蹤直線/曲線;用特征匹配方法混合識別導(dǎo)線和部分元器件;提出了X/Y坐標正交投影的方法識別元器件,提高了識別速度;而右手邊緣跟蹤的識別方法抗噪聲的性能較強。最終將字符、導(dǎo)線和元器件符號三元素有機結(jié)合,得到規(guī)范化的圖紙輸出。
關(guān) 鍵 詞: 模式識別;圖像處理;電路原理圖;神經(jīng)網(wǎng)絡(luò)
引 言
目前,國內(nèi)外許多大中型企業(yè)都在開始自己的信息化進程,而企業(yè)中長期積累下來的各種圖紙、文檔資料是一筆巨大的財富。如何在信息化過程中將這部分資料電子化以利再利用,是一件很有意義的事。
國內(nèi)外對于工程圖紙識別研究工作是從80年代后期興起的,至今仍然是模式識別領(lǐng)域的熱點之一。研究主要集中在機械圖紙矢量化、理解上。電路原理圖同樣是很重要的工程圖紙,但是因為元件符號的多樣性,增加了識別系統(tǒng)實用化的難度。使得這方面的研究成果較少見諸紙面。
2 圖紙識別的模式分離
電路原理圖主要由三種元素構(gòu)成:導(dǎo)線、元器件符號和字符。其中字符包括英文字母、數(shù)字、以及器件的一部分,比如電解電容的“+”,電感的極性標識“·”等等。成分比較復(fù)雜,差異較大,因此要對圖紙的內(nèi)容做模式分離。整個識別系統(tǒng)的結(jié)構(gòu)如圖1所示。
圖紙經(jīng)過掃描之后得到光柵圖像。有必要對光柵圖像中的色度或者灰度信息進行動態(tài)二值化處理。再經(jīng)過必要的濾波降噪的處理之后,開始圖紙內(nèi)容的理解工作。
在圖紙理解的過程中,由于字符的特征明顯,且與導(dǎo)線或者元器件不易產(chǎn)生混淆,因此容易分割出來單獨進行識別。但是某些器件的局部特征和導(dǎo)線是不易區(qū)分的,比如電阻或者集成塊矩形較長的一條邊和導(dǎo)線的特征是相同的,所以需要混合處理。先對全圖判別線段和節(jié)點,分別標注屬性;然后進行器件識別;器件識別后可以認定剩余的線段屬于導(dǎo)線,進行導(dǎo)線的校正處理;最后,判別字符和元器件的從屬關(guān)系,將字符、器件和導(dǎo)線有機地結(jié)合起來,輸出新的圖紙。
3 字符分割與BP網(wǎng)絡(luò)識別
3.1 字符分割
如圖2所示,字符的特征有三點:(1)孤立;(2)尺寸較??;(3)各個字符大小相近。為此,采用區(qū)域生長的方法,對全圖進行區(qū)域擴充,并且計算得各個連通區(qū)域的外接矩形大小。圖紙中的器件和導(dǎo)線作為一個連通區(qū)域,外接矩形很大,與光柵圖像尺寸接近,首先拋棄。其次,字符在圖中一般會有多個,它們的外接矩形尺寸近似。因此,利用第3項特征,統(tǒng)計剩余外接矩形尺寸出現(xiàn)的次數(shù),可以得到字符的有效尺寸如式1所示。字符分割后,記錄好各個字符的原始位置,送交BP網(wǎng)絡(luò)識別。
3.2 基于BP神經(jīng)網(wǎng)絡(luò)的字符識別
采用“誤差反向傳播”學(xué)習(xí)算法的神經(jīng)網(wǎng)絡(luò)被稱為BP網(wǎng)絡(luò)。它可以對任意形狀的非交觀察向量集合進行正確地分類,是目前應(yīng)用十分廣泛的一種人工神經(jīng)網(wǎng)絡(luò)。BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖3(a)所示。
假設(shè)輸入輸出對是(Xk, Yk),其中,Xk是第k個輸入向量,Xk =(xk1, xk2, ……, xkn)T; Tk是第k個樣本的期望輸出,Tk =(tk1, tk2, ……, tkm)T; Ok是第k個樣本的網(wǎng)絡(luò)實際輸出,Ok =(ok1, ok2, ……, okm)T。wji為前一層第個神經(jīng)元輸入到后一層第j個神經(jīng)元的權(quán)重, 是第j個神經(jīng)元的閥值。所有神經(jīng)元都采用非線性激活函數(shù)如式(3)所示,于是神經(jīng)元的模型如式(1)所示:
對于輸入層的神經(jīng)元,其輸出Ok=Xk。對于隱層和輸出層,樣本k、神經(jīng)元j的狀態(tài)定義為: ;神經(jīng)元j的輸出為: 。如果取訓(xùn)練指標函數(shù)為: ,使用BP算法將使E在每個訓(xùn)練循環(huán)中按梯度下降。對于輸出層單元: ;而對于隱層單元: 。它們的權(quán)值調(diào)整為: 。 通過迭代訓(xùn)練,E小于規(guī)定值的時候,可以認為網(wǎng)絡(luò)收斂。并取當前的wij作為實際識別的權(quán)值向量進行識別。
工程圖紙上的字符通常只包含英文字母大寫A~Z、小寫a~z,數(shù)字0~9,以及電解電容的符號“+”,字符數(shù)一共63個。實際操作的時候,將字符逐一放置到2nx2n(n>2)的位圖的左上角,n的選取以該位圖可以無縮放地容納最大的字符圖像為準。把該位圖平均分割成8X8的特征矩陣,得到的64個特征值,作為BP網(wǎng)絡(luò)的輸入進行訓(xùn)練。試驗表明,訓(xùn)練后的BP網(wǎng)絡(luò)對圖紙中的字符識別效果很好。
4 導(dǎo)線和幾種常用器件的識別
在字符分離之后,圖紙上仍然有導(dǎo)線和元器件符號兩種元素。對于它們的模式分離,我們首先識別線段和節(jié)點(包括端點、分歧點、交叉點和拐點等),以此為基礎(chǔ)首先識別出器件。則剩余的線段和節(jié)點就可以認為是屬于導(dǎo)線的了。電路元器件的種類繁多,我們選取了其中最常見而且具有代表性的幾種分立元件進行了識別。它們包括:電阻、電容、電解電容、電感、可變電感、接地和三極管(PNP和NPN)。這些元器件的形態(tài)特征差異較大,因此選擇了不同的方法來識別。
4.1 探索試探法線段追蹤算法和節(jié)點的識別
圖紙中線段特征是:(1)長寬比動態(tài)范圍很大;(2)邊緣有毛刺,參差不齊;(3)包含有各種節(jié)點。
我們首先在圖中尋找長寬比大于3的平滑線段,在噪聲的影響下,將得到間斷的線段。接著將已識別出的橫線和豎線分別標識。再利用連通性判別橫線間或者豎線間的連接關(guān)系,將識別得到的線段貫通,連接成一條完整的線段。在橫線和豎線相連的地方判別為節(jié)點;最后做濾波清除掉線段邊緣的毛刺。
另外一種方法,探索試探法是快速跟蹤直線/曲線的算法。該算法不拘泥于固定匹配模板,對于長度大于線寬3倍的直線/曲線能夠搜索出線的中心,在搜索過程中對線寬進行統(tǒng)計,在一定程度上克服線條毛刺對線寬的影響。。其具體的跟蹤過程中,當掃描整幅圖形時(掃描自上而下,自左而右),總是可以發(fā)現(xiàn)線條的頂點A:在A點向八個方向引伸試探搜索。假定線條所覆蓋的像素為1,背景為0,即可統(tǒng)計從A點引伸出的八個方向上1像素的個數(shù) ,取 。如圖(4)所示,在n7方向上s0取得最大值。B點是從A點開始沿s0方向延伸與邊界相交的點。計算AB的中點C的坐標。
在C點,沿AB的垂直方向計算線寬d1,d1為DE方向上的1像素個數(shù)。將A點移至C點,重復(fù)以上步驟,可以得到CF引伸最長。通過中心點G,可以得到線寬d2。如此連續(xù)搜索,直至第K次搜索與K+1次搜索的方向相反,則搜索結(jié)束。于是線寬的平均值為 。
4.2 特征匹配識別
在分割導(dǎo)線的時候,不易將導(dǎo)線與電阻、電容或者接地區(qū)別開來。因此在能夠?qū)?dǎo)線分割之前,需要將部分器件先行識別出來。我們把節(jié)點作為特征點,導(dǎo)線和器件的區(qū)別在于特征點的拓撲關(guān)系不同。通過對直線的追蹤和連通性的判別,可以識別特征點的屬性,以及各個特征點之間的拓撲關(guān)系。將特征點的屬性和拓撲關(guān)系作為特征,配合補充特征,與標準元器件特征進行匹配,得到識別結(jié)果。
我們獲取了標準電阻、(電解)電容和接地符號的特征,如表1所示
實際操作時,在先行識別完電容之后,接地符號實際上就是電容的上半部分。并且取接地符號的“地”的線條寬度和電容的兩條平行線條長度相當。
表格 1 電阻、(電解) 電容和接地的特征
器件 |
節(jié)點特征 |
節(jié)點間拓撲關(guān)系 |
補充特征 |
電阻 |
4個拐點,2個分歧點 |
都落在同一矩形上;分歧點落在寬度上,且分歧方向相反,都指向矩形之外 |
矩形中空,長寬比>3 |
(電解)電容 |
4個端點,2個分歧點 |
每2個端點和1個分歧點共線為一組,兩組線段平行;2分歧點居中,方向相反 |
電解電容有一個“+” |
接地 |
2個端點,1個分歧點 |
3點共線,分歧點居中,分歧方向向上 |
無 |
4.3 投影快速識別三極管
經(jīng)過仔細觀察我們發(fā)現(xiàn),很多元器件的輪廓特征可以通過它的投影提取出來,快速判別。水平方向和垂直方向的投影,將反映出器件中包含的水平和垂直線段的數(shù)量和大致位置。和器件連接的導(dǎo)線也提供了重要特征,因此分割時我們保留了長度為5倍線條寬度的導(dǎo)線。fij表示處在第i行與第j列的圖像素值,元器件光柵圖可以用矩陣 表示。對它做水平和垂直兩方向投影,如式(5)。
(5)
我們以發(fā)射極向下的PNP三極管為例說明,從圖6我們可以清楚地看到三極管的光柵圖像和它在X/Y軸上的投影效果。如圖6(b),根據(jù)X軸上位于中間的脈沖靠近基極或者靠近集電極來判斷是NPN或者PNP型三極管。如圖6(c)所示,基極導(dǎo)線的脈沖是位于投影中央的,根據(jù)另一脈沖位置來判斷箭頭,從而得到三極管的放置方式。
手繪圖紙上三極管的箭頭兩翼不一定是水平和垂直的,箭頭張角比較小。因此脈沖寬度稍寬一些。取脈沖的中心位置作為脈沖的位置參與比較和判別。
該方法同樣可以用來輔助識別包括可變電感、可變電容和可變電阻這一類型的可變器件。
(5) (6)
如式(5)、(6)將圖像順時針旋轉(zhuǎn)45o或者135o,做水平和垂直投影。這相當于對F做45o或者135o投影。對可變器件,投影上會出現(xiàn)一個脈沖,于是取得箭桿的位置;再對F做水平和垂直投影,在接近外接矩形位置上又可以取得箭頭位置。將箭頭和箭桿部分剝離后,再對剝離箭頭以后的核心器件做識別。
4.4 右手跟蹤法識別電感
器件的輪廓包含了器件的大部分特征,因此也可以通過輪廓跟蹤的方法提取器件的輪廓特征,據(jù)此識別器件。另一方面,投影方法有時會由于噪聲的影響,使得脈沖高度落差不大,不易判別。使用輪廓跟蹤技術(shù)可以較為準確地描述出器件的輪廓特征,抗噪聲能力強。
如圖7,以水平放置的電感為例,我們從電感左側(cè)沿著電感輪廓下沿開始跟蹤,到電感右側(cè)結(jié)束,記錄下跟蹤的軌跡。這是一條不封閉的輪廓線。我們根據(jù)軌跡的極大值和極小值出現(xiàn)的次數(shù)和相對位置關(guān)系來判別是否是電感。(1)包含起點,共有5個極值相近的極小值點,4個極值相近的極大值點;(2)極小值點不低于導(dǎo)線虛擬連接線;(3)相鄰的極小值點和相鄰極大值點水平間距相當。在實際識別的時候,我們考慮了線條寬度的影響,于是認定極大值和極小值之差大于3倍線條寬度。
5 試驗結(jié)果
圖8展示了字符、元器件和導(dǎo)線識別之后整理得到的輸出圖像。整個系統(tǒng)有如下的功能:
(1) 在已經(jīng)完成的系統(tǒng)中,能成功識別32種元件符號(包括4個方向)
(2) 能識別63種字符,包括26個大小寫英文字母、10個數(shù)字和符號“+”
(3) 對300DPI的A4圖紙,在CII 1G的計算機上,圖紙理解速度≦1分鐘
6 結(jié)束語
在本文中,對手繪電路原理圖中導(dǎo)線、元器件和字符這三種元素的識別提出了有效的方法,并在實踐中取得了比較好的識別效果。在經(jīng)過最后的拼合,將導(dǎo)線、字符和元器件三種元素有機結(jié)合起來之后,整張電路圖紙中各種元器件和字符的屬性、元件之間的拓撲結(jié)構(gòu)都得到了理解。利用現(xiàn)有模式繼續(xù)擴充,即可快速和準確地識別更多地元器件。
參 考 文 獻
1. 施澤生. 電子電路圖的自動輸入、理解及與ORCAD的鏈接[J]. 系統(tǒng)工程與電子技術(shù), 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. 章毓晉. 圖像圖形科學(xué)叢書:圖像分割[M]. 科學(xué)出版社, 2001.2
5. 高學(xué). 一種基于支持向量機的手寫漢字識別方法[J]. 電子學(xué)報, 2002第5期, P651~654
6. Kenneth. R. Castleman. Digital Image Processing[M]. Prentice Hall, 1996
7. 楊建剛. 人工神經(jīng)網(wǎng)絡(luò)實用教程[M]. 浙江大學(xué)出版社, 2001年1月