金佛榮,高皚瓊,王凌強(qiáng)
(甘肅工業(yè)職業(yè)技術(shù)學(xué)院 電信學(xué)院,甘肅 天水 741025)
在芯片的封裝和測(cè)試車間,由于芯片是裝在料管里的,所以在整管操作的各個(gè)環(huán)節(jié),都需要耗費(fèi)大量的人力來(lái)清點(diǎn)芯片料管的數(shù)量。這種人工計(jì)數(shù)的方式不僅增加了勞動(dòng)力成本,而且速度慢、錯(cuò)誤率高、可靠性差、管理難度高。自動(dòng)化的料管計(jì)數(shù)裝置無(wú)疑可以大大降低勞動(dòng)成本,降低錯(cuò)誤率并提高穩(wěn)定性,但是目前自動(dòng)化的料管計(jì)數(shù)裝置處于市場(chǎng)空白狀態(tài)。可以實(shí)現(xiàn)芯片料管計(jì)數(shù)的設(shè)計(jì)方案有很多種,比如機(jī)械式、稱重式等,之所以選擇基于機(jī)器視覺的技術(shù)方案,是因?yàn)榛跈C(jī)器視覺的計(jì)數(shù)系統(tǒng)核心技術(shù)在于軟件,機(jī)械結(jié)構(gòu)簡(jiǎn)單,生產(chǎn)成本低,而且面對(duì)各種不同類型的芯片料管,基于軟件實(shí)現(xiàn)的技術(shù)方案容易設(shè)置。對(duì)料管進(jìn)行計(jì)數(shù)的關(guān)鍵是背景和目標(biāo)的分割和分割后目標(biāo)的識(shí)別。主要的技術(shù)難點(diǎn)是提高系統(tǒng)的可靠性,因?yàn)閳D像分割和目標(biāo)識(shí)別的結(jié)果容易受到環(huán)境光照、料管類型等因素的干擾,根據(jù)生產(chǎn)要求,只有計(jì)數(shù)正確率達(dá)到99.99%才能投入使用。
關(guān)于如何將目標(biāo)和背景進(jìn)行分割是計(jì)算機(jī)視覺研究中的一個(gè)經(jīng)典難題,已經(jīng)成為圖像理解領(lǐng)域關(guān)注的一個(gè)熱點(diǎn),除了教科書上的一些經(jīng)典算法,很多學(xué)者針對(duì)不同的應(yīng)用場(chǎng)景,進(jìn)行了大量的研究。如康世英等[1]在研究基于機(jī)器視覺的糧種計(jì)數(shù)時(shí),采用了改進(jìn)的分水嶺算法進(jìn)行圖像分割,最后利用快速連通域標(biāo)記方法確定糧種顆粒數(shù)量。周文豪等[2]在研究基于機(jī)器視覺的智能LED晶粒數(shù)量統(tǒng)計(jì)系統(tǒng)時(shí),采用Sobel邊緣檢測(cè)算法和Graham掃描法,精確識(shí)別有效晶圓區(qū)域。馮紅波等[3]提出了一種基于自動(dòng)色階和多尺度Retinex彩色圖像增強(qiáng)算法,解決了光照不均的單彩色圖像時(shí)出現(xiàn)的細(xì)節(jié)模糊、顏色失真問(wèn)題。方志強(qiáng)等[4]設(shè)計(jì)了一套基于機(jī)器視覺及SVM,通過(guò)機(jī)器學(xué)習(xí),利用圖像實(shí)現(xiàn)零件自動(dòng)計(jì)數(shù)的通用系統(tǒng)。肖昌炎等[5]提出了一種局部直方圖均衡化和基于雙高斯二階導(dǎo)的線狀增強(qiáng)相結(jié)合的算法,實(shí)現(xiàn)了薄片計(jì)數(shù)。在系統(tǒng)設(shè)計(jì)過(guò)程中,為了提高系統(tǒng)的準(zhǔn)確率,在總結(jié)前人研究成果的基礎(chǔ)上,針對(duì)具體應(yīng)用場(chǎng)景,對(duì)圖像分割和目標(biāo)計(jì)數(shù)的各種算法進(jìn)行了大量的分析和實(shí)驗(yàn),最后采用了多層神經(jīng)網(wǎng)絡(luò)(MLP)算法進(jìn)行圖像分割,采用對(duì)區(qū)域數(shù)量、面積統(tǒng)計(jì)的方法實(shí)現(xiàn)計(jì)數(shù)。完成所有算法后,利用VC實(shí)現(xiàn)應(yīng)用軟件的開發(fā)。
料管截面如圖1所示。系統(tǒng)通過(guò)對(duì)料管截面圖像的處理,實(shí)現(xiàn)自動(dòng)計(jì)數(shù)。
圖1 料管截面
系統(tǒng)硬件結(jié)構(gòu)如圖2所示。系統(tǒng)的主要組成部件有支架、支架底座、光源、工業(yè)相機(jī)、通信電纜、上位機(jī)和掃碼槍。上位機(jī)開發(fā)語(yǔ)言使用VC++,數(shù)據(jù)庫(kù)使用SQL Sever,算法包使用halcon。
圖2 系統(tǒng)硬件結(jié)構(gòu)
系統(tǒng)軟件結(jié)構(gòu)如圖3所示。軟件由用戶界面、功能模塊、數(shù)據(jù)庫(kù)和算法構(gòu)成。用戶通過(guò)用戶界面使用軟件,用戶界面控件調(diào)用對(duì)應(yīng)功能模塊并顯示相關(guān)信息,功能模塊通過(guò)算法和數(shù)據(jù)庫(kù)訪問(wèn)完成對(duì)應(yīng)功能。
圖3 系統(tǒng)軟件結(jié)構(gòu)
系統(tǒng)有維護(hù)設(shè)置、計(jì)數(shù)操作、管理功能三大功能以及管理員、工程師、操作員三級(jí)操作權(quán)限。工程師或管理員可以使用維護(hù)設(shè)置功能,包括模式訓(xùn)練、參數(shù)設(shè)置和系統(tǒng)測(cè)試3個(gè)子功能,模式訓(xùn)練功能調(diào)運(yùn)MLP算法訓(xùn)練函數(shù)完成不同類型料管的模式訓(xùn)練并保存訓(xùn)練數(shù)據(jù)到模式訓(xùn)練數(shù)據(jù)庫(kù),以便計(jì)數(shù)時(shí)使用。參數(shù)設(shè)置完成系統(tǒng)參數(shù)、算法參數(shù)、訓(xùn)練參數(shù)等參數(shù)的設(shè)置并將參數(shù)保存到參數(shù)設(shè)置數(shù)據(jù)庫(kù),系統(tǒng)測(cè)試在完成訓(xùn)練和參數(shù)設(shè)置后進(jìn)行模擬計(jì)數(shù),用來(lái)檢測(cè)系統(tǒng)的功能和可靠性,在系統(tǒng)測(cè)試過(guò)程中產(chǎn)生的數(shù)據(jù)不會(huì)保存在正常生產(chǎn)的數(shù)據(jù)中去。計(jì)數(shù)操作是操作員進(jìn)行料管計(jì)數(shù)的功能,在計(jì)數(shù)前操作員需要掃描二維碼登錄,計(jì)數(shù)功能模塊調(diào)用MLP分類器函數(shù)并訪問(wèn)模式訓(xùn)練數(shù)據(jù)庫(kù),得到料管的計(jì)數(shù)結(jié)果,計(jì)數(shù)結(jié)果及對(duì)應(yīng)信息將保存在原始數(shù)據(jù)數(shù)據(jù)庫(kù)。管理功能實(shí)現(xiàn)不同登錄賬號(hào)權(quán)限的管理、數(shù)據(jù)的統(tǒng)計(jì)分析與報(bào)表生成、員工操作情況的統(tǒng)計(jì)功能,該功能通過(guò)訪問(wèn)員工管理數(shù)據(jù)庫(kù)和原始數(shù)據(jù)庫(kù)完成。
該系統(tǒng)的核心是圖像處理的方案與算法實(shí)現(xiàn)。圖像處理的難點(diǎn)是目標(biāo)和背景的分割,為了達(dá)到更好的識(shí)別效果,研究過(guò)程中提出了以下3種圖像處理方案:
方案1:獲取圖像→灰度化→預(yù)處理→二值化→生態(tài)學(xué)處理→形狀模板匹配→統(tǒng)計(jì)[6];
方案2:獲取圖像→HSV變換→對(duì)S圖像預(yù)處理→二值化→生態(tài)學(xué)處理→形狀模板匹配→統(tǒng)計(jì)[7];
方案3:獲取圖像→選擇背景與目標(biāo)→MLP訓(xùn)練→MLP識(shí)別→提取目標(biāo)→形態(tài)學(xué)處理→基于面積特征選擇→統(tǒng)計(jì)[8]。
經(jīng)過(guò)對(duì)比分析,方案1通過(guò)二值化將背景與目標(biāo)進(jìn)行分割,分割過(guò)程中閾值對(duì)環(huán)境光線特別敏感,分割的穩(wěn)定性很差;方案2對(duì)S通道圖像二值化分割目標(biāo)和背景,對(duì)環(huán)境光線的敏感度降低,但是穩(wěn)定性還是不夠理想;方案3采用MLP分類器對(duì)目標(biāo)和背景進(jìn)行分割,性能比較穩(wěn)定,效果比較理想。
Halcon通過(guò)函數(shù)create_class_mlp(::NumInput,NumHidden,NumOutput,OutputFunction,Preprocessing,NumComponents,RandSeed:MLPHandle)創(chuàng)建一個(gè)神經(jīng)網(wǎng)絡(luò),如圖4所示。其中參數(shù)NumInput為輸入變量的個(gè)數(shù),NumHidden為隱藏層的單元個(gè)數(shù),NumOutput為輸出變量的個(gè)數(shù)。在系統(tǒng)設(shè)計(jì)過(guò)程中,NumInput選擇系統(tǒng)默認(rèn)值20,NumHidden選擇系統(tǒng)默認(rèn)值10,NumOutput只有目標(biāo)和背景,所以選擇2。
圖4 MLP示意
MLP通過(guò)式(1)和式(2)使用輸入變量計(jì)算隱藏層的輸出zj。
(1)
(2)
式中,zj為第2層輸出值,f=tanh(x)為第2層激活函數(shù)。與此類似,下一層通過(guò)式(3)來(lái)計(jì)算[11-12]:
(3)
輸出層的激活函數(shù)由參數(shù)OutputFunction決定,如果OutputFunction等于linear,則輸出通過(guò)式(4)計(jì)算,如果OutputFunction為logistic,則輸出通過(guò)式(5)計(jì)算,如果OutputFunction等于softmax,則輸出通過(guò)式(6)計(jì)算。在該系統(tǒng)中使用式(6)計(jì)算輸出層輸出:
(4)
(5)
(6)
參數(shù)Preprocessing為用于轉(zhuǎn)換特征向量的預(yù)處理類型。該系統(tǒng)采用normalization,參數(shù)NumComponents為變換特征數(shù),在normalization類型中可以忽略,參數(shù)RandSeed為用于初始化神經(jīng)網(wǎng)絡(luò)系統(tǒng)的隨機(jī)數(shù),默認(rèn)值為42,MLPHandle為所創(chuàng)建神經(jīng)網(wǎng)絡(luò)的句柄[13]。
在創(chuàng)建完神經(jīng)網(wǎng)絡(luò)系統(tǒng)后,通過(guò)函數(shù)train_class_mlp對(duì)所創(chuàng)建的神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,再用函數(shù)classify_class_mlp進(jìn)行識(shí)別。
計(jì)數(shù)系統(tǒng)軟件設(shè)計(jì)的主要內(nèi)容為訓(xùn)練子程序和識(shí)別子程序,訓(xùn)練子程序通過(guò)界面訓(xùn)練按鈕調(diào)用,其程序流程如圖5所示。程序先通過(guò)USB接口讀取工業(yè)攝像機(jī)圖像并在窗口顯示,用戶通過(guò)矩形框選擇目標(biāo)和背景,系統(tǒng)自動(dòng)創(chuàng)建目標(biāo)和背景樣本[14-15]。完成樣本創(chuàng)建后執(zhí)行create_class_mlp函數(shù)創(chuàng)建MLP,通過(guò)函數(shù)add_samples_image_class_mlp添加樣本,用函數(shù)train_class_mlp訓(xùn)練MLP,將訓(xùn)練結(jié)果存儲(chǔ)[16]。
圖5 訓(xùn)練子程序流程
識(shí)別子程序的流程如圖6所示。先通過(guò)USB接口采集待計(jì)數(shù)料管的圖像,讀取訓(xùn)練好的數(shù)據(jù)對(duì)圖像的背景和目標(biāo)進(jìn)行分割。將目標(biāo)提取,并進(jìn)行形態(tài)學(xué)處理,然后計(jì)算每個(gè)區(qū)域的面積,根據(jù)面積統(tǒng)計(jì)區(qū)域目標(biāo)的數(shù)量,達(dá)到計(jì)數(shù)的目的。在統(tǒng)計(jì)過(guò)程中,根據(jù)面積判斷是否有2個(gè)或3個(gè)目標(biāo)連成一個(gè)區(qū)域的情況。在測(cè)試過(guò)程中,沒出現(xiàn)過(guò)3個(gè)以上目標(biāo)連成一個(gè)區(qū)域的情況。
圖6 識(shí)別子程序流程
可靠性與計(jì)數(shù)的準(zhǔn)確性是系統(tǒng)的生命線,在研究中發(fā)現(xiàn),光照條件是影響系統(tǒng)可靠性的最主要因素,為了達(dá)到高可靠性和高準(zhǔn)確性,對(duì)系統(tǒng)進(jìn)行了3 000次的測(cè)試和參數(shù)調(diào)整,表1~表3分別為光照強(qiáng)度約為10,50,10 000 lx時(shí)的測(cè)試結(jié)果。當(dāng)光照強(qiáng)度在100~8 000 lx之間時(shí),進(jìn)行了2 000多次測(cè)試,準(zhǔn)確率均為100%。
表1 光照強(qiáng)度為10 lx的測(cè)試結(jié)果
表2 光照強(qiáng)度為50 lx的測(cè)試結(jié)果
表3 光照強(qiáng)度為10 000 lx的測(cè)試結(jié)果
抽取的一組測(cè)試圖片如圖7和圖8所示。圖7為采集的待計(jì)數(shù)料管圖像,圖8為待統(tǒng)計(jì)的目標(biāo)圖像及計(jì)數(shù)結(jié)果。在圖7中明顯地存在著因?yàn)楣庹詹痪鶆蚨霈F(xiàn)的白色區(qū)域,但系統(tǒng)仍然能夠正確地計(jì)數(shù)。圖8雖然在橢圓所圈的地方有粘連,但可以通過(guò)面積計(jì)算統(tǒng)計(jì)為2個(gè)目標(biāo)。圖7中的背景比實(shí)際產(chǎn)線的背景復(fù)雜得多,但系統(tǒng)仍然能夠正確地進(jìn)行分割。通過(guò)測(cè)試證明,當(dāng)光照強(qiáng)度小于100 lx時(shí),計(jì)數(shù)會(huì)偏少;當(dāng)光照強(qiáng)度大于8 000 lx時(shí),計(jì)數(shù)會(huì)偏多;當(dāng)光照強(qiáng)度在100~8 000 lx之間時(shí),計(jì)數(shù)準(zhǔn)確率可以達(dá)到100%。而這個(gè)光照條件很容易實(shí)現(xiàn),所以系統(tǒng)的可靠性非常高,完全達(dá)到了產(chǎn)線產(chǎn)品的要求。
圖7 待計(jì)數(shù)料管
圖8 待統(tǒng)計(jì)目標(biāo)及計(jì)數(shù)結(jié)果Fig.8 Targets to be counted and the counting result
系統(tǒng)采用MLP算法對(duì)目標(biāo)和背景進(jìn)行分割,提高了系統(tǒng)的抗干擾能力,能夠在比較寬的光照范圍內(nèi)工作。采用Halcon平臺(tái)實(shí)現(xiàn),縮短了開發(fā)周期。測(cè)試結(jié)果表明,排除光照極端不均勻的情況,對(duì)絕大多數(shù)料管系統(tǒng)的可靠性可以達(dá)到100%,完全可以應(yīng)用于半導(dǎo)體封測(cè)企業(yè)產(chǎn)線,極大地降低企業(yè)人力成本,并提高計(jì)數(shù)的準(zhǔn)確性,具有較好的推廣前景。但是系統(tǒng)對(duì)于一些截面呈現(xiàn)出規(guī)則矩形的料管,由于排列密集,沒有明顯的縫隙,所以計(jì)數(shù)準(zhǔn)確性還不能達(dá)到100%,需要進(jìn)一步改進(jìn)。