陳自立,劉紅林
(中國計量大學(xué) 光學(xué)與電子科技學(xué)院,浙江 杭州 310018)
工業(yè)上一般用X光檢測LED晶元的焊接質(zhì)量[1],傳統(tǒng)的方式是人工肉眼觀察X光圖像,檢測焊接不良晶元,不僅效率低,而且還容易產(chǎn)生眼疲勞導(dǎo)致錯誤率變高,因此迫切需要用圖像處理技術(shù)自動檢測晶元,降低勞動強(qiáng)度,提高檢測效率。同時由于X光相機(jī)的視場有限、分辨率不夠高,無法拍攝完整的零件圖像,一次只能拍攝到部分零件圖像,需要多次采集,因此采集到的圖像之間難免會有重復(fù)。這樣,在檢測之前首先要用圖像算法實現(xiàn)晶元定位、刪除重復(fù)的晶元區(qū)域,然后才能進(jìn)行后續(xù)的晶元檢測。
近年來,研究人員提出了許多晶元的定位方法。李良和廖圣龍[2-3]提出模版匹配的方法,基于灰度或者邊緣信息,設(shè)置多重閾值,提高算法的效率;Kong Y[4]等人提出單模和混合模式下的模式識別方法,采用模版匹配對晶元圖像重疊區(qū)域進(jìn)行定位和分類;但模版匹配的方法需要逐點匹配,計算量大,匹配效率低。傳統(tǒng)上也有一些基于特征的SURF、SIFT、角點檢測等算法,自動計算特征,然后進(jìn)行匹配,但選取的特征點仍然比較多,計算量偏大,運算速度仍然偏低[5-6]。由于本論文需要檢測的晶元圖像周期性很強(qiáng),采用上述算法進(jìn)行圖像配準(zhǔn)容易造成誤匹配的現(xiàn)象,導(dǎo)致圖匹配精度差,而且還需要后續(xù)算法去除誤匹配的特征,計算速度也會比較慢。
本文在結(jié)合國內(nèi)外最新研究成果的基礎(chǔ)上,結(jié)合待檢測零件的特征,提出了一種基于特征的LED晶元圖像定位與檢測的方法。根據(jù)圖像的特征,確定將晶元組上的銅柱作為特征,選取的特征少,計算速度快。首先用閾值分割和邊緣查找的方法提取這些特征的位置;然后利用晶元組和特征的幾何關(guān)系,實現(xiàn)晶元組的定位;再利用晶元在晶元組中的幾何位置和圖像分割技術(shù)實現(xiàn)晶元的提取和檢測。檢測完畢后,利用晶元組的定位關(guān)系,實現(xiàn)整個圖像的拼接,顯示全部晶元組和各個晶元的檢測結(jié)果,方便最后人工復(fù)核。
我們要檢測的是一整板零件,每個底板包括多個晶元組,每個晶元組上又焊接了多個晶元。典型的零件如圖1,該零件含有7×23個晶元組,而每個晶元組上又焊接了6個晶元。圖2是用X光相機(jī)單次采集的局部圖像。從中可以看出,每個晶元組包含4個銅柱。在零件中,銅柱最厚,所以X光圖像中銅柱的灰度最小。因此可以利用這一點,用晶元組上的銅柱作為特征,實現(xiàn)晶元組的定位[7]。
圖1 整板的晶元圖像Figure 1 Image of the whole assembly
圖2 晶元圖像特征分析Figure 2 Image of one shot
圖像處理的流程如圖3,包含圖像采集、圖像預(yù)處理、晶元組定位、晶元定位和晶元檢測五個部分。X光相機(jī)采集的圖像傳入電腦后,首先對圖像進(jìn)行預(yù)處理,主要是用高斯濾波去除噪點;然后用閾值分割和邊緣提取的方法提取特征的位置,利用特征的幾何關(guān)系定位晶元組區(qū)域;再對晶元組采用自適應(yīng)閾值分割和輪廓提取的方法,對晶元組中的晶元進(jìn)行定位與檢測。
圖3 算法處理流程Figure 3 Flow chart of the algorithm
首先采用閾值分割提取銅柱,然后用邊緣查找方法提取銅柱邊緣,確定銅柱位置[8-9]。
由于銅柱的灰度最小,為了能夠提取到全部的銅柱,查找圖像中灰度的最小值,將灰度最小值加上一個容差,作為閾值,對圖像進(jìn)行二值化。然后用邊緣查找的方法確定銅柱的位置,如圖4。
圖4 閾值分割后的圖Figure 4 Image after thresholding
從圖4可以看出,有28(7行和4列)個銅柱,先對銅柱進(jìn)行從上到下,從左到右的排序。銅柱的中心坐標(biāo)用(x00,y00),(x01,y01)…(x35,y35),(x36,y36)表示;計算每一行中相鄰銅柱之間的距離,通過排序找出距離的最大值,利用距離最大的兩個銅柱,就可以初步確定晶元組的左右邊界。以圖5(a)的圖像為例,晶元左右邊界銅柱的位置和銅柱之間的距離可以用下式表示:
(1)
用同樣地方式,計算每一列中相鄰銅柱之間的距離,找出最大值。因為晶元組不止一列,所以選取距離與最大值相差小于一定容限的相鄰銅柱,從而確定晶元組的上下邊界。如圖5(a)的圖像為例,晶元組上下邊界的銅柱和晶元組的高度H可以用下式表示:
(2)
通過邊界銅柱的位置和銅柱之間的位置可以實現(xiàn)晶元組的粗定位[10]。因為4個銅柱之間包含的晶元組并不是完整的,所以需要對特征包含的晶元組進(jìn)行適當(dāng)?shù)財U(kuò)張,得到3個完整的晶元組區(qū)域,如圖5(b)。
圖5 晶元組定位Figure 5 Located part
通過第3節(jié)的方法實現(xiàn)了晶元組的定位。在這種情況下,晶元組上都焊接有晶元,但有時也會出現(xiàn)故障,沒有焊接晶元,造成晶元缺失,這兩種情況如圖6。
圖6 晶元正常和缺失Figure 6 Normal parts and defected parts
晶元定位的方法如下所述:首先采用自適應(yīng)的閾值分割方法實現(xiàn)晶元與背景的分離[11-12],從閾值分割后圖7(a)和圖7(b)中可以看出,晶元與晶元之間有連通區(qū)域,不利于查找完整的晶元輪廓。接著用閉運算去除連通區(qū)域[13-14],其效果如圖7(c)和圖7(d)。從中圖7(d)可以看出,第2和第3、第4和第5的位置中間會有連通區(qū)域,無法實現(xiàn)區(qū)域之間的分離,將這種情況判定為晶元缺失。
定位晶元組之后,查找出晶元輪廓后,根據(jù)晶元的幾何關(guān)系,實現(xiàn)晶元的精確定位如圖7(e)。如果為晶元缺失,則標(biāo)記整個晶元組為不良,如圖7(f)。
圖7 晶元定位Figure 7 Chips located
在晶元定位的基礎(chǔ)上,對每個晶元的焊接質(zhì)量進(jìn)行檢測。從圖8(a)中可以看出,對比焊接良好的晶元區(qū)域,焊接不良區(qū)域的顏色要淺一些,灰度值會大一些。對晶元組中的每一個晶元進(jìn)行自適應(yīng)閾值分割處理,通過輪廓查找識別不良區(qū)域,結(jié)果如圖8(b)。
圖8 不良晶元Figure 8 Defected chips
在Windows10、CPU i7和16G內(nèi)存的電腦上,采用C++語言調(diào)用opencv庫編寫程序?qū)崿F(xiàn)了前述算法,對X光相機(jī)采集到7行8列的部分圖像進(jìn)行定位與檢測。最后還將所有提取的晶元組按照順序拼接為一張圖像[15-16],方便人工復(fù)核。最后的檢測結(jié)果如圖9。從圖中可以看出,成功實現(xiàn)了晶元組的定位,成功檢測到了晶元缺失和晶元焊接不良的情況。
圖9 檢測結(jié)果Figure 9 Test result
程序的運行效率比較高,對7×23個晶元組定位時間為0.7 s,再加上晶元檢測,總計運行時間為12.4 s,檢測效果良好。通過對10整板的零件進(jìn)行檢測,檢測到的晶元個數(shù)為8 720個(一整板的晶元個數(shù)為966個),定位錯誤的只有10個晶元,晶元組定位的準(zhǔn)確率超過了98%;檢測錯誤的晶元為65個,準(zhǔn)確率超過了90%。少數(shù)定位和檢測錯誤的情況,在實際生產(chǎn)中通過人工復(fù)核修正。6 結(jié) 論針對自動獲取特征算法存在的計算量大,而且容易出現(xiàn)誤匹配的現(xiàn)象,根據(jù)待檢測零件圖像的特征,人工選擇特征,提出了基于特征的晶元自動定位與檢測方法。通過對晶元圖像的特征進(jìn)行分析,確定采用銅柱作為特征;用閾值分割和邊緣提取的方法,實現(xiàn)銅柱的定位;再利用銅柱之間的幾何關(guān)系,實現(xiàn)晶元組定位;最后利用自適應(yīng)閾值分割和輪廓提取的方法實現(xiàn)晶元定位與檢測。實現(xiàn)晶元組定位后,再對晶元進(jìn)行定位和檢測,能夠檢測出晶元缺失的晶元組和焊接不良的晶元。程序運行效率高,整個零件中晶元組定位時間為0.7 s,加上晶元檢測,總計時間為12.4 s。檢測效果良好,晶元組定位和晶元不良檢測的準(zhǔn)確率分別大于98%和90%,可以滿足實際生產(chǎn)的需要。編寫的程序現(xiàn)已成功應(yīng)用于寧波升譜光電有限公司的實際生產(chǎn)。