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

圖1 料管截面
系統硬件結構如圖2所示。系統的主要組成部件有支架、支架底座、光源、工業相機、通信電纜、上位機和掃碼槍。上位機開發語言使用VC++,數據庫使用SQL Sever,算法包使用halcon。

圖2 系統硬件結構
系統軟件結構如圖3所示。軟件由用戶界面、功能模塊、數據庫和算法構成。用戶通過用戶界面使用軟件,用戶界面控件調用對應功能模塊并顯示相關信息,功能模塊通過算法和數據庫訪問完成對應功能。

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

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

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

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

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

表1 光照強度為10 lx的測試結果

表2 光照強度為50 lx的測試結果

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

圖7 待計數料管

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