廖坤銳, 陳衛(wèi)兵, 楊 雪
(湖南工業(yè)大學(xué) 計算機(jī)學(xué)院,湖南 株洲 412000)
隨著現(xiàn)代電子工業(yè)的迅速發(fā)展,印刷電路板(Printed Circuit Board)逐漸以多樣化、小型化、高密度的科技產(chǎn)品出現(xiàn)。同時對焊點質(zhì)量檢測也提出了更高的要求,焊點質(zhì)量對產(chǎn)品的壽命、安全性等有著直接的影響。因此如何提高焊點缺陷檢測的準(zhǔn)確率,從而保證產(chǎn)品質(zhì)量的可靠性和穩(wěn)定性,具有極其重要的意義。文獻(xiàn)[1]改進(jìn)了一種圖像增強(qiáng)算法,利用雙S型函數(shù)轉(zhuǎn)換并進(jìn)一步推導(dǎo)出轉(zhuǎn)換算法的實現(xiàn),有效的銳化了PCB圖像邊緣,使邊緣提取和邊緣識別更簡單。文獻(xiàn)[2]采用貝葉斯算法和支持向量機(jī)對焊點進(jìn)行分類,提取顏色特征以及模板匹配特征,焊點圖像的識別率高,但提取特征過多造成數(shù)據(jù)冗余,加大了算法復(fù)雜度。文獻(xiàn)[3]提出了改進(jìn)的K-近鄰法,利用模板匹配法對圖像中的焊點進(jìn)行定位,根據(jù)特征分布直方圖提取焊點的特征,有效地提高了檢測效率,但對非線性樣本分類效果較差。文獻(xiàn)[4]提出了一種新的基于模板匹配和坐標(biāo)解耦算法相結(jié)合的焊點識別方法,利用PCB設(shè)計圖焊點坐標(biāo)與坐標(biāo)轉(zhuǎn)換參數(shù)得出待檢測焊點的坐標(biāo),間接的焊點識別方法提高了識別精度。文獻(xiàn)[5]和文獻(xiàn)[6]采用支持向量機(jī)算法對焊點進(jìn)行分類,該算法在解決小樣本、非線性以及高維度問題時有其固有優(yōu)點,但對大規(guī)模訓(xùn)練樣本難以實施,當(dāng)樣本數(shù)目很大時將耗費大量的內(nèi)存和運算時間。文獻(xiàn)[7]和文獻(xiàn)[8]采用的是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò)傳統(tǒng)反向傳播BP神經(jīng)網(wǎng)絡(luò)。前饋神經(jīng)網(wǎng)絡(luò)大多采用梯度下降法,該方法通過多次迭代,不斷優(yōu)化權(quán)值和閾值,因此訓(xùn)練過程耗時較長,且容易陷入局部極小值,無法到達(dá)全局最小,使得訓(xùn)練過程可能不穩(wěn)定。
選取適當(dāng)?shù)膱D像特征提取方法和圖像分類方法是基于圖像處理的PCB焊點缺陷檢測技術(shù)的關(guān)鍵所在,能否提取出有效的特征信息是焊點缺陷檢測準(zhǔn)確與否的前提條件。主成分分析是一種數(shù)學(xué)降維的方法,該算法能夠?qū)⒃甲兞恐斜姸嗑哂幸欢P(guān)聯(lián)的變量,重新組合成為一種新的相互無關(guān)的綜合變量,大大的降低數(shù)據(jù)的冗余。本文在對焊點圖像進(jìn)行預(yù)處理的基礎(chǔ)上經(jīng)形態(tài)學(xué)操作和全局閾值分割,獲取了有效的焊點邊界圖,對提取出來的圖像特征進(jìn)行特征融合,然后結(jié)合PSO算法對傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化,并對圖像焊點進(jìn)行分類識別。實驗結(jié)果表明,該方法具有較高的識別精確度。
為避免圖像采集過程中因環(huán)境問題(如相機(jī)設(shè)備、燈光等)而產(chǎn)生的圖像噪聲、圖像過度曝光、圖像對比度清晰度不夠等影響圖像特征提取的情況出現(xiàn),需要對圖像進(jìn)行大小和灰度值歸一化,圖像濾波,對比度增強(qiáng)等預(yù)處理操作。通過對圖像的預(yù)處理,消除圖像中的噪聲以及其他無關(guān)干擾信息,從而更好的對圖像特征進(jìn)行提取。
首先對圖像的大小歸一化,統(tǒng)一使圖像的像素值放縮為100×100唯一標(biāo)準(zhǔn)形式。對圖像進(jìn)行灰度值的歸一化公式如下:
式中,I(i,j)和N(i,j)分別表示原圖像的灰度值、變換后圖像的灰度值,min和max分別表示原圖像的最小灰度值、最大灰度值。
由于在圖像采集、圖像傳輸過程中存在非可控因素的影響,會引入圖像噪聲,為后續(xù)能更好提取圖像特征需要對噪聲進(jìn)行消除。選用 3×3 窗口進(jìn)行中值濾波,可以在保持原圖形狀的基礎(chǔ)上,更好的消除了孤立點實現(xiàn)了對圖像去噪的目的。
CCD傳感器的分辨率、曝光時間等都會對目標(biāo)圖像造成影響。因此為了得到更為理想的目標(biāo)圖像,還需要利用圖像增強(qiáng)技術(shù)對圖像進(jìn)一步處理,使圖像與視覺響應(yīng)特性相匹配,得到更好的特征和視覺效果,更加突出焊點特征。
如圖1所示為圖像預(yù)處理結(jié)果,圖2為不同類型焊點灰度直方圖。
圖1 圖像預(yù)處理結(jié)果
圖2 不同類型焊點灰度直方圖
圖像分割指的是將數(shù)字圖像細(xì)分為若干個特定的、具有獨特性質(zhì)的區(qū)域并提出感興趣目標(biāo)的技術(shù)和過程,進(jìn)行圖像分割能簡化圖像的表示形式,更方便理解和分析圖像。常用的圖像分割方法主要分以下幾類:基于區(qū)域的分割方法、基于閾值的分割方法、基于邊緣的分割方法、基于直方圖的分割方法等。
閾值分割是圖像分割中應(yīng)用數(shù)量最多的一類,適用于分割物體與背景有較強(qiáng)對比的圖像,將灰度大于等于閾值的像素判定為屬于物體,灰度值為255表示前景,灰度值為0表示背景。多閾值分割與單閾值分割并無本質(zhì)區(qū)別,只是分割技巧不同。輸入圖像f到輸出圖像g的如下變換:
其中:T為閾值;對于物體的圖像元素g(i,j)=1,對于背景的圖像元素g(i,j)=0。
全局閾值分割步驟如下:
1)參數(shù)設(shè)定,選擇初始估計閾值T。
2)以設(shè)定閾值為標(biāo)準(zhǔn)將圖像分割成兩部分。一部分由灰度值大于或等于T的像素組成,另一部分由灰度值小于T的像素組成。
3)分別計算各部分所有像素的平均灰度值u1和u2以及新閾值T=(u1+u2)/2。
4)重復(fù)步驟2)~4),直到在連續(xù)的重復(fù)中,T的差異比預(yù)先設(shè)定的參數(shù)△T小為止,直到獲取最優(yōu)閾值。
因此,確定閾值是閾值分割算法的關(guān)鍵所在,一個適合的閾值可準(zhǔn)確地將圖像分割開來。在確定閾值后,可對像素點閾值的灰度值比較以及像素分割過程并行進(jìn)行,直接給出圖像區(qū)域的分割結(jié)果。
如圖3所示為焊點邊界提取結(jié)果,首先將預(yù)處理后圖像轉(zhuǎn)為二值圖像,分割出感興趣的區(qū)域,然后對分割結(jié)果進(jìn)行形態(tài)學(xué)開操作使對象的輪廓變得光滑并消除細(xì)的突出物,之后用標(biāo)記連通區(qū)域的面積,為了減少噪聲的干擾,認(rèn)為連通區(qū)域面積(像素個數(shù))不足100的區(qū)域是噪聲點,并將其刪除(即置為背景黑色),最后再得出焊點的邊界圖。
圖3 焊點邊界圖提取
從圖3圖像分割后的結(jié)果可以看出,不同類型的焊點其形狀是有差別的,故而面積、周長、矩形度也不盡相同。因此,在獲得焊點邊界圖之后,可以在此基礎(chǔ)上在得出焊點特征值向量I。設(shè)圖像大小為N×M,則焊點的形狀特征計算步驟如下:
1)焊點面積S:焊點區(qū)域的面積,即焊點所有像素點總和。
2)周長計算P: 焊點區(qū)域輪廓的長度,即焊點邊界像素點之和。
其中:N表示區(qū)域邊緣像素點的個數(shù),Nx和Ny分別為水平和垂直方向像素點的個數(shù)。
其中:H是焊點目標(biāo)的高度,W是焊點目標(biāo)的寬度。
4)矩形度R:矩形度是圖像面積區(qū)域S與其最小外接矩形面積SMER之比。
5)Hu矩:Hu矩是一種具有平移、旋轉(zhuǎn)和尺度不變性的圖像特征,七個不變矩由二階和三階中心矩的線性組合構(gòu)成。
6)歐拉數(shù)O:歐拉是表示一個圖像區(qū)域中的孔數(shù)H和連接部分?jǐn)?shù)C的差,即E=C-H。
在處理有關(guān)數(shù)字圖像處理方面的問題時,需要提取到很多的特征值。當(dāng)特征值過多時會加大計算量,造成數(shù)據(jù)冗余;而特征值過少時則會缺乏一般性,從而降低精確度。主成分分析是將原始的多個特征轉(zhuǎn)化為若干個重要特征,這些特征可以呈現(xiàn)原始變量的眾多關(guān)鍵信息,特征之間保持信息的獨立性,減少數(shù)據(jù)冗余,簡化問題處理過程,同時得到更科學(xué)可行的數(shù)據(jù)結(jié)果。
設(shè)原始變量中共有n個樣本p維特征值,降維算法如下:
1)消除量綱影響和特征值大小影響,對原始變量進(jìn)行如下標(biāo)準(zhǔn)化變換:
(1)
其中:
2)對標(biāo)準(zhǔn)陣Z求相關(guān)系數(shù)矩陣:
(2)
3)求解矩陣R的特征值λ1≥λ2≥…≥λp≥0及其相應(yīng)的特征向量。
5)對m個主成分進(jìn)行綜合評價,求前m個主成分融合后的表達(dá)式:
(3)
式中,aip為初始變量矩陣第i個特征值所對應(yīng)的p維特征向量,(X1,X2,…Xp)T為p維初始輸入變量。
BP神經(jīng)網(wǎng)絡(luò)是由誤差逆向傳播算法訓(xùn)練的多層前饋神經(jīng)網(wǎng)絡(luò)。采用梯度下降法持續(xù)調(diào)節(jié)神經(jīng)網(wǎng)絡(luò)的權(quán)值和閾值,使實際輸出值與期望網(wǎng)絡(luò)輸出值之間的平均誤差偏差最小。
如圖4所示為BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖,可知BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖由輸入層、隱含層和輸出層組成。
圖4 BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
經(jīng)預(yù)處理后的特征信息進(jìn)入神經(jīng)網(wǎng)絡(luò)輸入層時,神經(jīng)網(wǎng)絡(luò)缺陷分類訓(xùn)練過程開始,其訓(xùn)練結(jié)果經(jīng)輸出層輸出。當(dāng)輸出層結(jié)果不滿足預(yù)期時,開始誤差反向傳播過程。誤差結(jié)果將會由隱含層向輸入層進(jìn)行反向傳遞,并攤派給各層單元,從而得到各層的誤差信號,并以此作為調(diào)整個單元權(quán)值的根據(jù)。對各層權(quán)值反復(fù)進(jìn)行調(diào)整,使得誤差沿梯度方向下降,在不斷的訓(xùn)練學(xué)習(xí)后,可以得到與最小誤差相對應(yīng)的權(quán)值和閾值。此時神經(jīng)網(wǎng)絡(luò)可根據(jù)最小誤差對類似缺陷樣本進(jìn)行識別分類。
BP神經(jīng)網(wǎng)絡(luò)是當(dāng)前廣泛應(yīng)用的神經(jīng)網(wǎng)絡(luò)模型,其有著自適應(yīng)、自主學(xué)習(xí)能力強(qiáng),計算量小的優(yōu)點。由于通過誤差函數(shù)的負(fù)梯度方向修改權(quán)值,因此存在兩方面的缺點:(1)易陷入局部極小值;(2)訓(xùn)練次數(shù)多導(dǎo)致效率低,速度慢。
針對BP神經(jīng)網(wǎng)絡(luò)算法的局限性,本文采用粒子群算法對BP神經(jīng)網(wǎng)絡(luò)權(quán)值和閾值進(jìn)行優(yōu)化,得到最優(yōu)權(quán)值閾值。粒子群優(yōu)化算法的思想是運用群體中個體之間的合作和數(shù)據(jù)共享進(jìn)行尋優(yōu),該方法在函數(shù)優(yōu)化、神經(jīng)網(wǎng)絡(luò)訓(xùn)練、模糊系統(tǒng)控制以及其他遺傳算法等領(lǐng)域被廣泛應(yīng)用。
PSO初始化后是一群處于隨機(jī)化的微粒,在不斷的迭代中微粒通過追蹤pbest,gbest兩個極值來達(dá)到更新自己的目的,經(jīng)驗證精確度符合條件后即得到最優(yōu)解。微粒更新速度和位置的公式如下:
vt=ωvi+c1×rand()×(pbesti-xi)+
c2×rand()×(gbesti-xi)
(4)
xi=xi+vi
(5)
式中,i=1,2,…,N,N是此群粒子的總數(shù)。ω稱為慣性因子,動態(tài)ω能獲得更好的尋優(yōu)結(jié)果;vi;xi是粒子的當(dāng)前位置;rand()產(chǎn)生0到1間的隨機(jī)數(shù);c1和c2為學(xué)習(xí)因子,在進(jìn)化迭代過程中,須根據(jù)實際需要為vi和xi指定范圍。
(6)
其中:ωmax、ωmin分別為最大和最小的慣性因子,η為當(dāng)前迭代數(shù),ηmax為最大迭代數(shù)。
PSO算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)流程圖如圖5所示。
圖5 PSO-BP優(yōu)化算法
1)BP神經(jīng)網(wǎng)絡(luò)的權(quán)值閾值初始化,設(shè)置粒子群參數(shù)(群體規(guī)模為N),包括隨機(jī)位置和迭代速度等。
2)評價每個微粒的適應(yīng)度;
3)對每個微粒,將其適應(yīng)值與pbest對比,若當(dāng)前適應(yīng)度優(yōu)于pbest,則更新pbest;
4)對每個微粒,將其適應(yīng)值與gbest對比,若當(dāng)前適應(yīng)度優(yōu)于gbest,則更新gbest;
5)根據(jù)公式(4)、(5)調(diào)整微粒速度和位置;
6)迭代次數(shù)加1,檢查精確度是否符合條件或達(dá)到最大迭代次數(shù),未達(dá)到結(jié)束條件則轉(zhuǎn)步驟2);
7)使用步驟6)輸出的權(quán)值閾值訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)。
本算法是基于Windows 7平臺上開發(fā)軟件MATLAB 2018b實現(xiàn)的。提取生產(chǎn)線上分揀的PCB電路板樣本集特征,經(jīng)PCA降維后輸入PSO-BP神經(jīng)網(wǎng)絡(luò)中訓(xùn)練和測試。
為了證實所設(shè)計的PSO-BP神經(jīng)網(wǎng)絡(luò)分類器的可行性,實驗以某PCB電路板為研究對象,選取不同類型的焊點圖片總計218張,將其中100個樣本作為訓(xùn)練集,剩余118個樣本作為測試集。
3.2.1 基于PCA的特征降維
表1表2為不同類型焊點所對應(yīng)的焊點面積、焊點周長、伸長度、矩形度、歐拉數(shù)、7個不變特征矩等12個特征計算結(jié)果。
表1 焊點幾何特征計算結(jié)果
表2 焊點Hu矩特征計算結(jié)果
經(jīng)主成分分析進(jìn)行特征值融合后的焊點主成分分析表如表3所示。不難看出,前5個主成分累計貢獻(xiàn)率已達(dá)到86.6%,已基本包括全部特征值信息,可利用公式求得前5個主成分的融合特征值。
3.2.2 基于PSO-BP神經(jīng)網(wǎng)絡(luò)的焊點缺陷識別
使用融合后的特征值作為PSO-BP神經(jīng)網(wǎng)絡(luò)的輸入,輸出為焊點的分類結(jié)果。BP神經(jīng)網(wǎng)絡(luò)輸入節(jié)點數(shù)為5,激勵函數(shù)選用sigmoid函數(shù),為提高訓(xùn)練效率,設(shè)置輸出層節(jié)點數(shù)為2,正常、多錫、少錫、漏焊四種不同類型的焊點輸出分別用[0,0]、[0,1]、[1,0]、[1,1]表示。將提取出來的100組特征向量逐一添加到BP神經(jīng)網(wǎng)絡(luò)分類器中進(jìn)行分類訓(xùn)練,設(shè)置最大迭代次數(shù)為1 000,訓(xùn)練終止誤差為0.001。如表4所示為測試的結(jié)果,實驗結(jié)果表明,本研究方法可以比較準(zhǔn)確地檢測出PCB焊點缺陷,準(zhǔn)確率達(dá)到了93.22%。
表3 主成分貢獻(xiàn)率和貢獻(xiàn)累計率
表4 缺陷分類結(jié)果
分別建立BP神經(jīng)網(wǎng)絡(luò)和優(yōu)化后的PSO-BP神經(jīng)網(wǎng)絡(luò)分類模型,通過測試樣本集驗證模型的性能驗證本文算法的有效性。從表5可以看出,相較于傳統(tǒng)BP神經(jīng)網(wǎng)絡(luò),PSO-BP在運行速度和準(zhǔn)確率上都有很大提升。
表5 BP和PSO-BP分類算法實驗結(jié)果比較
PCB焊點不僅僅會影響產(chǎn)品的壽命和穩(wěn)定,更給消費者的生命財產(chǎn)安全帶來了挑戰(zhàn)。為解決PCB檢測質(zhì)量的問題,本文提出一種基于PCA和粒子群優(yōu)化算法的焊點缺陷識別方法,使用PCA對提取的焊點特征進(jìn)行降維融合,結(jié)合PSO算法和BP網(wǎng)絡(luò)神經(jīng)提出一種新的焊點缺陷識別方法。實驗結(jié)果表明,該方法能正確的識別缺陷焊點,優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法減少了訓(xùn)練的時間,并且獲得了較高的整體準(zhǔn)確率,該檢測方法能夠滿足工業(yè)生產(chǎn)中高速度高精度的要求。