<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設(shè)計(jì)應(yīng)用 > 電路原理圖紙識別系統(tǒng)研究與實(shí)現(xiàn)

          電路原理圖紙識別系統(tǒng)研究與實(shí)現(xiàn)

          作者: 時(shí)間:2007-11-30 來源:網(wǎng)絡(luò) 收藏

          摘要:本文討論了紙質(zhì)圖的自動輸入和,主要理解字符、分立元件和相互間的拓?fù)潢P(guān)系。首先對掃描得到的光柵圖像進(jìn)行了字符的模式分離,采用8x8網(wǎng)格抽取63種字符的特征,并采用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行。提出探索試探法快速跟蹤直線/曲線;用特征匹配方法混合導(dǎo)線和部分元器件;提出了X/Y坐標(biāo)正交投影的方法識別元器件,提高了識別速度;而右手邊緣跟蹤的識別方法抗噪聲的性能較強(qiáng)。最終將字符、導(dǎo)線和元器件符號三元素有機(jī)結(jié)合,得到規(guī)范化的輸出。
          關(guān)鍵詞:模式識別;圖像處理;圖;神經(jīng)網(wǎng)絡(luò)

          引 言

          目前,國內(nèi)外許多大中型企業(yè)都在開始自己的信息化進(jìn)程,而企業(yè)中長期積累下來的各種、文檔資料是一筆巨大的財(cái)富。如何在信息化過程中將這部分資料電子化以利再利用,是一件很有意義的事。

          國內(nèi)外對于工程圖紙識別工作是從80年代后期興起的,至今仍然是模式識別領(lǐng)域的熱點(diǎn)之一。主要集中在機(jī)械圖紙矢量化、理解上。圖同樣是很重要的工程圖紙,但是因?yàn)樵柕亩鄻有?,增加了識別實(shí)用化的難度。使得這方面的成果較少見諸紙面。

          2 圖紙識別的模式分離

          電路原理圖主要由三種元素構(gòu)成:導(dǎo)線、元器件符號和字符。其中字符包括英文字母、數(shù)字、以及器件的一部分,比如電解電容的“+”,電感的極性標(biāo)識“”等等。成分比較復(fù)雜,差異較大,因此要對圖紙的內(nèi)容做模式分離。整個識別的結(jié)構(gòu)如圖1所示。

          圖紙經(jīng)過掃描之后得到光柵圖像。有必要對光柵圖像中的色度或者灰度信息進(jìn)行動態(tài)二值化處理。再經(jīng)過必要的濾波降噪的處理之后,開始圖紙內(nèi)容的理解工作。

          在圖紙理解的過程中,由于字符的特征明顯,且與導(dǎo)線或者元器件不易產(chǎn)生混淆,因此容易分割出來單獨(dú)進(jìn)行識別。但是某些器件的局部特征和導(dǎo)線是不易區(qū)分的,比如電阻或者集成塊矩形較長的一條邊和導(dǎo)線的特征是相同的,所以需要混合處理。先對全圖判別線段和節(jié)點(diǎn),分別標(biāo)注屬性;然后進(jìn)行器件識別;器件識別后可以認(rèn)定剩余的線段屬于導(dǎo)線,進(jìn)行導(dǎo)線的校正處理;最后,判別字符和元器件的從屬關(guān)系,將字符、器件和導(dǎo)線有機(jī)地結(jié)合起來,輸出新的圖紙。


          3 字符分割與BP網(wǎng)絡(luò)識別

          3.1 字符分割

          如圖2所示,字符的特征有三點(diǎn):(1)孤立;(2)尺寸較??;(3)各個字符大小相近。為此,采用區(qū)域生長的方法,對全圖進(jìn)行區(qū)域擴(kuò)充,并且計(jì)算得各個連通區(qū)域的外接矩形大小。圖紙中的器件和導(dǎo)線作為一個連通區(qū)域,外接矩形很大,與光柵圖像尺寸接近,首先拋棄。其次,字符在圖中一般會有多個,它們的外接矩形尺寸近似。因此,利用第3項(xiàng)特征,統(tǒng)計(jì)剩余外接矩形尺寸出現(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ò)。它可以對任意形狀的非交觀察向量集合進(jìn)行正確地分類,是目前應(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, ……, xknT; Tk是第k個樣本的期望輸出,Tk =(tk1, tk2, ……, tkmT; Ok是第k個樣本的網(wǎng)絡(luò)實(shí)際輸出,Ok =(ok1, ok2, ……, okmT。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)練指標(biāo)函數(shù)為: ,使用BP算法將使E在每個訓(xùn)練循環(huán)中按梯度下降。對于輸出層單元: ;而對于隱層單元: 。它們的權(quán)值調(diào)整為: 。 通過迭代訓(xùn)練,E小于規(guī)定值的時(shí)候,可以認(rèn)為網(wǎng)絡(luò)收斂。并取當(dāng)前的wij作為實(shí)際識別的權(quán)值向量進(jìn)行識別。

          工程圖紙上的字符通常只包含英文字母大寫A~Z、小寫a~z,數(shù)字0~9,以及電解電容的符號“+”,字符數(shù)一共63個。實(shí)際操作的時(shí)候,將字符逐一放置到2nx2n(n>2)的位圖的左上角,n的選取以該位圖可以無縮放地容納最大的字符圖像為準(zhǔn)。把該位圖平均分割成8X8的特征矩陣,得到的64個特征值,作為BP網(wǎng)絡(luò)的輸入進(jìn)行訓(xùn)練。試驗(yàn)表明,訓(xùn)練后的BP網(wǎng)絡(luò)對圖紙中的字符識別效果很好。

          4 導(dǎo)線和幾種常用器件的識別

          在字符分離之后,圖紙上仍然有導(dǎo)線和元器件符號兩種元素。對于它們的模式分離,我們首先識別線段和節(jié)點(diǎn)(包括端點(diǎn)、分歧點(diǎn)、交叉點(diǎn)和拐點(diǎn)等),以此為基礎(chǔ)首先識別出器件。則剩余的線段和節(jié)點(diǎn)就可以認(rèn)為是屬于導(dǎo)線的了。電路元器件的種類繁多,我們選取了其中最常見而且具有代表性的幾種分立元件進(jìn)行了識別。它們包括:電阻、電容、電解電容、電感、可變電感、接地和三極管(PNP和NPN)。這些元器件的形態(tài)特征差異較大,因此選擇了不同的方法來識別。

          4.1 探索試探法線段追蹤算法和節(jié)點(diǎn)的識別

          圖紙中線段特征是:(1)長寬比動態(tài)范圍很大;(2)邊緣有毛刺,參差不齊;(3)包含有各種節(jié)點(diǎn)。

          我們首先在圖中尋找長寬比大于3的平滑線段,在噪聲的影響下,將得到間斷的線段。接著將已識別出的橫線和豎線分別標(biāo)識。再利用連通性判別橫線間或者豎線間的連接關(guān)系,將識別得到的線段貫通,連接成一條完整的線段。在橫線和豎線相連的地方判別為節(jié)點(diǎn);最后做濾波清除掉線段邊緣的毛刺。

          另外一種方法,探索試探法是快速跟蹤直線/曲線的算法。該算法不拘泥于固定匹配模板,對于長度大于線寬3倍的直線/曲線能夠搜索出線的中心,在搜索過程中對線寬進(jìn)行統(tǒng)計(jì),在一定程度上克服線條毛刺對線寬的影響。。其具體的跟蹤過程中,當(dāng)掃描整幅圖形時(shí)(掃描自上而下,自左而右),總是可以發(fā)現(xiàn)線條的頂點(diǎn)A:在A點(diǎn)向八個方向引伸試探搜索。假定線條所覆蓋的像素為1,背景為0,即可統(tǒng)計(jì)從A點(diǎn)引伸出的八個方向上1像素的個數(shù) ,取 。如圖(4)所示,在n7方向上s0取得最大值。B點(diǎn)是從A點(diǎn)開始沿s0方向延伸與邊界相交的點(diǎn)。計(jì)算AB的中點(diǎn)C的坐標(biāo)。

          在C點(diǎn),沿AB的垂直方向計(jì)算線寬d1,d1為DE方向上的1像素個數(shù)。將A點(diǎn)移至C點(diǎn),重復(fù)以上步驟,可以得到CF引伸最長。通過中心點(diǎn)G,可以得到線寬d2。如此連續(xù)搜索,直至第K次搜索與K+1次搜索的方向相反,則搜索結(jié)束。于是線寬的平均值為 。

          4.2 特征匹配識別

          在分割導(dǎo)線的時(shí)候,不易將導(dǎo)線與電阻、電容或者接地區(qū)別開來。因此在能夠?qū)?dǎo)線分割之前,需要將部分器件先行識別出來。我們把節(jié)點(diǎn)作為特征點(diǎn),導(dǎo)線和器件的區(qū)別在于特征點(diǎn)的拓?fù)潢P(guān)系不同。通過對直線的追蹤和連通性的判別,可以識別特征點(diǎn)的屬性,以及各個特征點(diǎn)之間的拓?fù)潢P(guān)系。將特征點(diǎn)的屬性和拓?fù)潢P(guān)系作為特征,配合補(bǔ)充特征,與標(biāo)準(zhǔn)元器件特征進(jìn)行匹配,得到識別結(jié)果。

          我們獲取了標(biāo)準(zhǔn)電阻、(電解)電容和接地符號的特征,如表1所示

          實(shí)際操作時(shí),在先行識別完電容之后,接地符號實(shí)際上就是電容的上半部分。并且取接地符號的“地”的線條寬度和電容的兩條平行線條長度相當(dāng)。

          表格 1 電阻、(電解) 電容和接地的特征

          器件

          節(jié)點(diǎn)特征

          節(jié)點(diǎn)間拓?fù)潢P(guān)系

          補(bǔ)充特征

          電阻

          4個拐點(diǎn),2個分歧點(diǎn)

          都落在同一矩形上;分歧點(diǎn)落在寬度上,且分歧方向相反,都指向矩形之外

          矩形中空,長寬比>3

          (電解)電容

          4個端點(diǎn),2個分歧點(diǎn)

          每2個端點(diǎn)和1個分歧點(diǎn)共線為一組,兩組線段平行;2分歧點(diǎn)居中,方向相反

          電解電容有一個“+”

          接地

          2個端點(diǎn),1個分歧點(diǎn)

          3點(diǎn)共線,分歧點(diǎn)居中,分歧方向向上

          4.3 投影快速識別三極管

          經(jīng)過仔細(xì)觀察我們發(fā)現(xiàn),很多元器件的輪廓特征可以通過它的投影提取出來,快速判別。水平方向和垂直方向的投影,將反映出器件中包含的水平和垂直線段的數(shù)量和大致位置。和器件連接的導(dǎo)線也提供了重要特征,因此分割時(shí)我們保留了長度為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)將圖像順時(shí)針旋轉(zhuǎn)45o或者135o,做水平和垂直投影。這相當(dāng)于對F做45o或者135o投影。對可變器件,投影上會出現(xiàn)一個脈沖,于是取得箭桿的位置;再對F做水平和垂直投影,在接近外接矩形位置上又可以取得箭頭位置。將箭頭和箭桿部分剝離后,再對剝離箭頭以后的核心器件做識別。

          4.4 右手跟蹤法識別電感

          器件的輪廓包含了器件的大部分特征,因此也可以通過輪廓跟蹤的方法提取器件的輪廓特征,據(jù)此識別器件。另一方面,投影方法有時(shí)會由于噪聲的影響,使得脈沖高度落差不大,不易判別。使用輪廓跟蹤技術(shù)可以較為準(zhǔn)確地描述出器件的輪廓特征,抗噪聲能力強(qiáng)。

          如圖7,以水平放置的電感為例,我們從電感左側(cè)沿著電感輪廓下沿開始跟蹤,到電感右側(cè)結(jié)束,記錄下跟蹤的軌跡。這是一條不封閉的輪廓線。我們根據(jù)軌跡的極大值和極小值出現(xiàn)的次數(shù)和相對位置關(guān)系來判別是否是電感。(1)包含起點(diǎn),共有5個極值相近的極小值點(diǎn),4個極值相近的極大值點(diǎn);(2)極小值點(diǎn)不低于導(dǎo)線虛擬連接線;(3)相鄰的極小值點(diǎn)和相鄰極大值點(diǎn)水平間距相當(dāng)。在實(shí)際識別的時(shí)候,我們考慮了線條寬度的影響,于是認(rèn)定極大值和極小值之差大于3倍線條寬度。

          5 試驗(yàn)結(jié)果

          圖8展示了字符、元器件和導(dǎo)線識別之后整理得到的輸出圖像。整個有如下的功能:

          (1) 在已經(jīng)完成的系統(tǒng)中,能成功識別32種元件符號(包括4個方向)

          (2) 能識別63種字符,包括26個大小寫英文字母、10個數(shù)字和符號“+”

          (3) 對300DPI的A4圖紙,在CII 1G的計(jì)算機(jī)上,圖紙理解速度Q1分鐘


          6 結(jié)束語

          在本文中,對手繪電路原理圖中導(dǎo)線、元器件和字符這三種元素的識別提出了有效的方法,并在實(shí)踐中取得了比較好的識別效果。在經(jīng)過最后的拼合,將導(dǎo)線、字符和元器件三種元素有機(jī)結(jié)合起來之后,整張電路圖紙中各種元器件和字符的屬性、元件之間的拓?fù)浣Y(jié)構(gòu)都得到了理解。利用現(xiàn)有模式繼續(xù)擴(kuò)充,即可快速和準(zhǔn)確地識別更多地元器件。

          參 考 文 獻(xiàn)
          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ī)的手寫漢字識別方法[J]. 電子學(xué)報(bào), 2002第5期, P651~654
          6. Kenneth. R. Castleman. Digital Image Processing[M]. Prentice Hall, 1996
          7. 楊建剛. 人工神經(jīng)網(wǎng)絡(luò)實(shí)用教程[M]. 浙江大學(xué)出版社, 2001年1月

          DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();