金佛榮,高皚瓊,王凌強
(甘肅工業(yè)職業(yè)技術學院 電信學院,甘肅 天水 741025)
在芯片的封裝和測試車間,由于芯片是裝在料管里的,所以在整管操作的各個環(huán)節(jié),都需要耗費大量的人力來清點芯片料管的數(shù)量。這種人工計數(shù)的方式不僅增加了勞動力成本,而且速度慢、錯誤率高、可靠性差、管理難度高。自動化的料管計數(shù)裝置無疑可以大大降低勞動成本,降低錯誤率并提高穩(wěn)定性,但是目前自動化的料管計數(shù)裝置處于市場空白狀態(tài)。可以實現(xiàn)芯片料管計數(shù)的設計方案有很多種,比如機械式、稱重式等,之所以選擇基于機器視覺的技術方案,是因為基于機器視覺的計數(shù)系統(tǒng)核心技術在于軟件,機械結(jié)構(gòu)簡單,生產(chǎn)成本低,而且面對各種不同類型的芯片料管,基于軟件實現(xiàn)的技術方案容易設置。對料管進行計數(shù)的關鍵是背景和目標的分割和分割后目標的識別。主要的技術難點是提高系統(tǒng)的可靠性,因為圖像分割和目標識別的結(jié)果容易受到環(huán)境光照、料管類型等因素的干擾,根據(jù)生產(chǎn)要求,只有計數(shù)正確率達到99.99%才能投入使用。
關于如何將目標和背景進行分割是計算機視覺研究中的一個經(jīng)典難題,已經(jīng)成為圖像理解領域關注的一個熱點,除了教科書上的一些經(jīng)典算法,很多學者針對不同的應用場景,進行了大量的研究。如康世英等[1]在研究基于機器視覺的糧種計數(shù)時,采用了改進的分水嶺算法進行圖像分割,最后利用快速連通域標記方法確定糧種顆粒數(shù)量。周文豪等[2]在研究基于機器視覺的智能LED晶粒數(shù)量統(tǒng)計系統(tǒng)時,采用Sobel邊緣檢測算法和Graham掃描法,精確識別有效晶圓區(qū)域。馮紅波等[3]提出了一種基于自動色階和多尺度Retinex彩色圖像增強算法,解決了光照不均的單彩色圖像時出現(xiàn)的細節(jié)模糊、顏色失真問題。方志強等[4]設計了一套基于機器視覺及SVM,通過機器學習,利用圖像實現(xiàn)零件自動計數(shù)的通用系統(tǒng)。肖昌炎等[5]提出了一種局部直方圖均衡化和基于雙高斯二階導的線狀增強相結(jié)合的算法,實現(xiàn)了薄片計數(shù)。在系統(tǒng)設計過程中,為了提高系統(tǒng)的準確率,在總結(jié)前人研究成果的基礎上,針對具體應用場景,對圖像分割和目標計數(shù)的各種算法進行了大量的分析和實驗,最后采用了多層神經(jīng)網(wǎng)絡(MLP)算法進行圖像分割,采用對區(qū)域數(shù)量、面積統(tǒng)計的方法實現(xiàn)計數(shù)。完成所有算法后,利用VC實現(xiàn)應用軟件的開發(fā)。
料管截面如圖1所示。系統(tǒng)通過對料管截面圖像的處理,實現(xiàn)自動計數(shù)。

圖1 料管截面
系統(tǒng)硬件結(jié)構(gòu)如圖2所示。系統(tǒng)的主要組成部件有支架、支架底座、光源、工業(yè)相機、通信電纜、上位機和掃碼槍。上位機開發(fā)語言使用VC++,數(shù)據(jù)庫使用SQL Sever,算法包使用halcon。

圖2 系統(tǒng)硬件結(jié)構(gòu)
系統(tǒng)軟件結(jié)構(gòu)如圖3所示。軟件由用戶界面、功能模塊、數(shù)據(jù)庫和算法構(gòu)成。用戶通過用戶界面使用軟件,用戶界面控件調(diào)用對應功能模塊并顯示相關信息,功能模塊通過算法和數(shù)據(jù)庫訪問完成對應功能。

圖3 系統(tǒng)軟件結(jié)構(gòu)
系統(tǒng)有維護設置、計數(shù)操作、管理功能三大功能以及管理員、工程師、操作員三級操作權(quán)限。工程師或管理員可以使用維護設置功能,包括模式訓練、參數(shù)設置和系統(tǒng)測試3個子功能,模式訓練功能調(diào)運MLP算法訓練函數(shù)完成不同類型料管的模式訓練并保存訓練數(shù)據(jù)到模式訓練數(shù)據(jù)庫,以便計數(shù)時使用。參數(shù)設置完成系統(tǒng)參數(shù)、算法參數(shù)、訓練參數(shù)等參數(shù)的設置并將參數(shù)保存到參數(shù)設置數(shù)據(jù)庫,系統(tǒng)測試在完成訓練和參數(shù)設置后進行模擬計數(shù),用來檢測系統(tǒng)的功能和可靠性,在系統(tǒng)測試過程中產(chǎn)生的數(shù)據(jù)不會保存在正常生產(chǎn)的數(shù)據(jù)中去。計數(shù)操作是操作員進行料管計數(shù)的功能,在計數(shù)前操作員需要掃描二維碼登錄,計數(shù)功能模塊調(diào)用MLP分類器函數(shù)并訪問模式訓練數(shù)據(jù)庫,得到料管的計數(shù)結(jié)果,計數(shù)結(jié)果及對應信息將保存在原始數(shù)據(jù)數(shù)據(jù)庫。管理功能實現(xiàn)不同登錄賬號權(quán)限的管理、數(shù)據(jù)的統(tǒng)計分析與報表生成、員工操作情況的統(tǒng)計功能,該功能通過訪問員工管理數(shù)據(jù)庫和原始數(shù)據(jù)庫完成。
該系統(tǒng)的核心是圖像處理的方案與算法實現(xiàn)。圖像處理的難點是目標和背景的分割,為了達到更好的識別效果,研究過程中提出了以下3種圖像處理方案:
方案1:獲取圖像→灰度化→預處理→二值化→生態(tài)學處理→形狀模板匹配→統(tǒng)計[6];
方案2:獲取圖像→HSV變換→對S圖像預處理→二值化→生態(tài)學處理→形狀模板匹配→統(tǒng)計[7];
方案3:獲取圖像→選擇背景與目標→MLP訓練→MLP識別→提取目標→形態(tài)學處理→基于面積特征選擇→統(tǒng)計[8]。
經(jīng)過對比分析,方案1通過二值化將背景與目標進行分割,分割過程中閾值對環(huán)境光線特別敏感,分割的穩(wěn)定性很差;方案2對S通道圖像二值化分割目標和背景,對環(huán)境光線的敏感度降低,但是穩(wěn)定性還是不夠理想;方案3采用MLP分類器對目標和背景進行分割,性能比較穩(wěn)定,效果比較理想。
Halcon通過函數(shù)create_class_mlp(::NumInput,NumHidden,NumOutput,OutputFunction,Preprocessing,NumComponents,RandSeed:MLPHandle)創(chuàng)建一個神經(jīng)網(wǎng)絡,如圖4所示。其中參數(shù)NumInput為輸入變量的個數(shù),NumHidden為隱藏層的單元個數(shù),NumOutput為輸出變量的個數(shù)。在系統(tǒng)設計過程中,NumInput選擇系統(tǒng)默認值20,NumHidden選擇系統(tǒng)默認值10,NumOutput只有目標和背景,所以選擇2。

圖4 MLP示意
MLP通過式(1)和式(2)使用輸入變量計算隱藏層的輸出zj。
(1)

(2)
式中,zj為第2層輸出值,f=tanh(x)為第2層激活函數(shù)。與此類似,下一層通過式(3)來計算[11-12]:
(3)
輸出層的激活函數(shù)由參數(shù)OutputFunction決定,如果OutputFunction等于linear,則輸出通過式(4)計算,如果OutputFunction為logistic,則輸出通過式(5)計算,如果OutputFunction等于softmax,則輸出通過式(6)計算。在該系統(tǒng)中使用式(6)計算輸出層輸出:
(4)
(5)
(6)
參數(shù)Preprocessing為用于轉(zhuǎn)換特征向量的預處理類型。該系統(tǒng)采用normalization,參數(shù)NumComponents為變換特征數(shù),在normalization類型中可以忽略,參數(shù)RandSeed為用于初始化神經(jīng)網(wǎng)絡系統(tǒng)的隨機數(shù),默認值為42,MLPHandle為所創(chuàng)建神經(jīng)網(wǎng)絡的句柄[13]。
在創(chuàng)建完神經(jīng)網(wǎng)絡系統(tǒng)后,通過函數(shù)train_class_mlp對所創(chuàng)建的神經(jīng)網(wǎng)絡進行訓練,再用函數(shù)classify_class_mlp進行識別。
計數(shù)系統(tǒng)軟件設計的主要內(nèi)容為訓練子程序和識別子程序,訓練子程序通過界面訓練按鈕調(diào)用,其程序流程如圖5所示。程序先通過USB接口讀取工業(yè)攝像機圖像并在窗口顯示,用戶通過矩形框選擇目標和背景,系統(tǒng)自動創(chuàng)建目標和背景樣本[14-15]。完成樣本創(chuàng)建后執(zhí)行create_class_mlp函數(shù)創(chuàng)建MLP,通過函數(shù)add_samples_image_class_mlp添加樣本,用函數(shù)train_class_mlp訓練MLP,將訓練結(jié)果存儲[16]。

圖5 訓練子程序流程
識別子程序的流程如圖6所示。先通過USB接口采集待計數(shù)料管的圖像,讀取訓練好的數(shù)據(jù)對圖像的背景和目標進行分割。將目標提取,并進行形態(tài)學處理,然后計算每個區(qū)域的面積,根據(jù)面積統(tǒng)計區(qū)域目標的數(shù)量,達到計數(shù)的目的。在統(tǒng)計過程中,根據(jù)面積判斷是否有2個或3個目標連成一個區(qū)域的情況。在測試過程中,沒出現(xiàn)過3個以上目標連成一個區(qū)域的情況。

圖6 識別子程序流程
可靠性與計數(shù)的準確性是系統(tǒng)的生命線,在研究中發(fā)現(xiàn),光照條件是影響系統(tǒng)可靠性的最主要因素,為了達到高可靠性和高準確性,對系統(tǒng)進行了3 000次的測試和參數(shù)調(diào)整,表1~表3分別為光照強度約為10,50,10 000 lx時的測試結(jié)果。當光照強度在100~8 000 lx之間時,進行了2 000多次測試,準確率均為100%。

表1 光照強度為10 lx的測試結(jié)果

表2 光照強度為50 lx的測試結(jié)果

表3 光照強度為10 000 lx的測試結(jié)果
抽取的一組測試圖片如圖7和圖8所示。圖7為采集的待計數(shù)料管圖像,圖8為待統(tǒng)計的目標圖像及計數(shù)結(jié)果。在圖7中明顯地存在著因為光照不均勻而出現(xiàn)的白色區(qū)域,但系統(tǒng)仍然能夠正確地計數(shù)。圖8雖然在橢圓所圈的地方有粘連,但可以通過面積計算統(tǒng)計為2個目標。圖7中的背景比實際產(chǎn)線的背景復雜得多,但系統(tǒng)仍然能夠正確地進行分割。通過測試證明,當光照強度小于100 lx時,計數(shù)會偏少;當光照強度大于8 000 lx時,計數(shù)會偏多;當光照強度在100~8 000 lx之間時,計數(shù)準確率可以達到100%。而這個光照條件很容易實現(xiàn),所以系統(tǒng)的可靠性非常高,完全達到了產(chǎn)線產(chǎn)品的要求。

圖7 待計數(shù)料管

圖8 待統(tǒng)計目標及計數(shù)結(jié)果Fig.8 Targets to be counted and the counting result
系統(tǒng)采用MLP算法對目標和背景進行分割,提高了系統(tǒng)的抗干擾能力,能夠在比較寬的光照范圍內(nèi)工作。采用Halcon平臺實現(xiàn),縮短了開發(fā)周期。測試結(jié)果表明,排除光照極端不均勻的情況,對絕大多數(shù)料管系統(tǒng)的可靠性可以達到100%,完全可以應用于半導體封測企業(yè)產(chǎn)線,極大地降低企業(yè)人力成本,并提高計數(shù)的準確性,具有較好的推廣前景。但是系統(tǒng)對于一些截面呈現(xiàn)出規(guī)則矩形的料管,由于排列密集,沒有明顯的縫隙,所以計數(shù)準確性還不能達到100%,需要進一步改進。