周國(guó)棟
(湖南廣播電視大學(xué)網(wǎng)絡(luò)技術(shù)學(xué)院, 長(zhǎng)沙 410004)
表面缺陷檢測(cè)是工業(yè)產(chǎn)品質(zhì)量檢測(cè)的重要內(nèi)容,常見的工業(yè)產(chǎn)品表面缺陷種類主要有裂痕、凹陷、色斑等。
采用機(jī)器視覺進(jìn)行產(chǎn)品表面缺陷快速檢測(cè)具有非接觸、機(jī)械結(jié)構(gòu)簡(jiǎn)單等優(yōu)點(diǎn),近年來,如何實(shí)現(xiàn)機(jī)器視覺的快速識(shí)別成為研究熱點(diǎn)[1-3]。李慶利等[1]利用顏色特征,以區(qū)分產(chǎn)品表面缺陷和背景顏色,再利用基于彩色空間的聚類方法設(shè)計(jì)出一種快速識(shí)別方法,但彩色空間對(duì)光源環(huán)境非常敏感,檢測(cè)不穩(wěn)定,且檢測(cè)時(shí)間長(zhǎng),不易小型化;張軍[2]提出一種利用小波變換進(jìn)行頻域?yàn)V波和特征識(shí)別的方法,用于表面缺陷的快速檢測(cè),但基于頻率的處理方法容易受到復(fù)雜紋理背景的干擾,有一定的局限性;晁云等[3]采用模板識(shí)別的方法,將合格表面圖像設(shè)置為模板,再和待檢表面進(jìn)行對(duì)比,最后用局部門限處理算法實(shí)現(xiàn)快速缺陷特征快速識(shí)別,但該方法只適合于固定背景情況,對(duì)于變化的紋理背景就無能為力了。
以瓷磚的表面缺陷檢測(cè)為例,目前,該領(lǐng)域生產(chǎn)實(shí)際中的檢測(cè)主要依靠人工,機(jī)器視覺應(yīng)用較少,阻礙其應(yīng)用的主要原因是該領(lǐng)域生產(chǎn)環(huán)境較復(fù)雜。一是表面缺陷種類多,且形態(tài)各異,無法利用標(biāo)準(zhǔn)的模板進(jìn)行識(shí)別;二是生產(chǎn)過程留下的非缺陷干擾較多,比如手印、水漬、碎石等,和缺陷特征在圖像上較為相似,加大了視覺檢測(cè)的難度,而要做到檢測(cè)前徹底清除干凈,也十分困難。另外,工業(yè)現(xiàn)場(chǎng)檢測(cè)環(huán)境還往往存在檢測(cè)位置的變化、光源角度的變化等情況。在復(fù)雜的干擾環(huán)境下,傳統(tǒng)視覺檢測(cè)方法無法獲得滿意的檢測(cè)精度。
SIFT 圖像特征具有尺度不變、旋轉(zhuǎn)不變等特點(diǎn),在表面缺陷識(shí)別應(yīng)用上,表現(xiàn)出獨(dú)特的優(yōu)勢(shì)。周鵬[4]應(yīng)用SIFT算法對(duì)鋼板進(jìn)行了表面缺陷檢測(cè),準(zhǔn)確率高達(dá)95%;王星等[5]在藥用玻璃瓶印刷圖案缺陷檢測(cè)上運(yùn)用SIFT特征識(shí)別,有效提升了檢測(cè)效率和精度;曾瑞篷[6]運(yùn)用SIFT特征對(duì)汽車保險(xiǎn)盒缺陷進(jìn)行在線檢測(cè),檢測(cè)精度提升了5.8%。
目前國(guó)內(nèi)外利用機(jī)器視覺進(jìn)行表面缺陷檢測(cè)的方法主要有3種,分別是基于像素統(tǒng)計(jì)的直方圖方法,基于卷積神經(jīng)網(wǎng)絡(luò)方法和基于SIFT 等特征描述方法。在有復(fù)雜干擾情況下,SIFT 表現(xiàn)出較強(qiáng)大的魯棒性和抗干擾能力,但該方法的相關(guān)參數(shù)設(shè)置非常復(fù)雜,直接影響檢測(cè)效率和精度,本文將給出相應(yīng)的設(shè)置方法和經(jīng)驗(yàn)公式,提高該方法的應(yīng)用效率。
為更好地描述圖像特征,Lowe等[7]設(shè)計(jì)了一種具有尺度不變、角度不變的特征變換算子(Scale-invariant Feature Trans?form , SIFT)。該算法的特點(diǎn)是提取目標(biāo)區(qū)域的局部特征,并能對(duì)成像焦距、亮度、旋轉(zhuǎn)角度等變化因素保持不變,也能對(duì)圖像噪聲干擾保持較好的魯棒性。尤其是在目標(biāo)遮擋(Occlusion)、雜物場(chǎng)景(Clutter)等復(fù)雜環(huán)境下,傳統(tǒng)的基于顏色統(tǒng)計(jì)或基于邊緣面積、邊緣形狀等方法很難湊效。
SIFT 算法的關(guān)鍵是找出圖像中特征點(diǎn),并計(jì)算出其特征描述,最后用這些特征描述和樣本進(jìn)行比對(duì), 如果匹配的點(diǎn)足夠多,則可以判定其類別。其大致步驟如圖1 所示,具體如下。
圖1 SIFT圖像金字塔
(1)第1 步,為了特征點(diǎn)具有縮放不變特性,先對(duì)圖像進(jìn)行分組(Oc?tave),按照1/2降采樣得到不同組數(shù),圖1列出了2組。
(2)第2 步,為了特征點(diǎn)具有模糊(尺度)不變特性,對(duì)每組圖片進(jìn)行不同尺度的高斯模糊,得到尺度組的不同圖層,圖1列出了6層。
(3)第3 步,為了得到圖像亮度變化的極值點(diǎn)來作為候選特征點(diǎn),利用高斯差分(DOG)來提取圖像邊緣。如圖1所示,將第6層和第5層相減,得到高斯差分組的1層,以此類推,可以得到5層高斯差分組。最后從高斯差分圖像中計(jì)算出極值點(diǎn)作為初步特征點(diǎn)。
(4)第4 步,過濾掉不好的特征點(diǎn),包括兩類,一是對(duì)比度低的點(diǎn),二是不穩(wěn)定的邊緣響應(yīng)點(diǎn)。其原理是將候選特征點(diǎn)及其附近的點(diǎn)擬合,利用導(dǎo)數(shù)為零,求出其確切的亞像素極值點(diǎn)。并計(jì)算出這些極值點(diǎn)的對(duì)比度,設(shè)定對(duì)比度閾值T,剔除掉對(duì)比度低的特征點(diǎn)。對(duì)于邊緣響應(yīng)點(diǎn),則是利用DOG圖像的Hessian矩陣來計(jì)算特征點(diǎn)的主曲率。設(shè)定邊緣閾值Tr,剔除掉小于Tr的特征點(diǎn)。
(5)第5 步,計(jì)算特征點(diǎn)的主方向,并生成特征描述矩陣。在以特征點(diǎn)為中心、3×1.5δ為半徑的區(qū)域內(nèi),統(tǒng)計(jì)圖像特征點(diǎn)的幅角和幅值,以統(tǒng)計(jì)直方圖的峰值作為主方向。得到主方向后,以主方向?yàn)橹行娜?×8 的窗口,并求取每個(gè)像素的梯度幅值與梯度方向。最終,一個(gè)特征點(diǎn)產(chǎn)生出128 維的SIFT特征向量,N個(gè)特征點(diǎn)生成一個(gè)N×128的特征描述矩陣。
(6)第6 步,分別得到缺陷模板圖像和待檢測(cè)圖像的特征描述矩陣后,最后用K近鄰算法找出與模板特征點(diǎn)向量歐式距離的最近鄰和次近鄰點(diǎn)。如果最近鄰距離小于次近鄰距離的70%,則認(rèn)定為匹配點(diǎn)。
SIFT 的本質(zhì)是特征點(diǎn)選取與特征信息描述,目的是產(chǎn)生能不隨圖像尺度和方向等因素干擾的特征數(shù)據(jù),從而實(shí)現(xiàn)圖像塊識(shí)別的魯棒性。但該算法數(shù)據(jù)處理量較大,耗時(shí)較長(zhǎng)。這使得其在實(shí)時(shí)檢測(cè)場(chǎng)合難以適應(yīng)。本文將通過減少SIFT特征點(diǎn)數(shù)量,提高特征點(diǎn)獨(dú)特性,以達(dá)到壓縮特征描述矩陣的目的。優(yōu)化SIFT算子的參數(shù)設(shè)置是減少特征點(diǎn)提取數(shù)量的一個(gè)非常有效的辦法。
圖像金字塔組數(shù)(Octave)關(guān)系檢測(cè)的精度和速度,這個(gè)參數(shù)的確定,一般會(huì)使用如下的經(jīng)驗(yàn)公式[7]:
式中:p為圖像組數(shù);m和n分別為圖像長(zhǎng)和寬;a為補(bǔ)償值,具體數(shù)據(jù)可根據(jù)實(shí)際圖像處理速度和精度來確定。
本文中,機(jī)器視覺獲取的原始圖像尺寸為[512,512]。用間隔取值法將原始圖像不斷縮小,直到全部圖案特征都不能識(shí)別,這時(shí)的尺寸若為[20,20],按照SIFT 規(guī)則,每次按1/2尺寸進(jìn)行變換,從512 壓縮到20,需要不少于5 次變換。由此,a值可取為4,最后得到圖像金字塔的組數(shù)p應(yīng)該設(shè)置為不小于5。
尺度空間,簡(jiǎn)單理解就是圖像的模糊程序,一般使用高斯模糊不斷處理圖像,隨著尺度的增加,圖像細(xì)節(jié)逐漸融合,大的輪廓依然可見,從而可以實(shí)現(xiàn)提取輪廓的目的。尺度空間δ的經(jīng)驗(yàn)公式如下:
式中:o為金字塔的分組序號(hào);s為同一組的圖像層號(hào);δ0為尺度空間的初始值;S為金字塔中每組的層數(shù)。
按照經(jīng)驗(yàn),常規(guī)應(yīng)用中,設(shè)置δ0=1.6,S=3即可滿足要求[7]。
研究發(fā)現(xiàn),δ0的取值會(huì)直接影響檢測(cè)的精度和效率。尺度過小,細(xì)節(jié)的模糊不夠充分,帶來極值點(diǎn)數(shù)量過多,處理負(fù)擔(dān)重,效率低。反之,尺度過大,有可能讓重要邊緣信息丟失,識(shí)別準(zhǔn)確率下降。本項(xiàng)目經(jīng)過大量實(shí)踐得到δ0的取值經(jīng)驗(yàn)公式:
式中:k為待識(shí)別圖形的極限尺寸。
比如,表面缺陷極限識(shí)別尺寸約占2 個(gè)像素,則δ0可以設(shè)置為0.7。
圖2 所示為不同尺度空間值,所檢測(cè)出的特征點(diǎn)(kpn)數(shù)量以及分布情況, 由 圖 可 知,δ0=0.7時(shí), 特征點(diǎn)數(shù)量較為合適,分布也較為均勻。
圖2 不同尺度空間對(duì)特征點(diǎn)的影響
得到高斯差分組后,接下來的是提取圖案邊緣的極值點(diǎn)。其方法是,對(duì)比圖層上的點(diǎn),及其所在組相鄰層3×3鄰域的26點(diǎn),若該點(diǎn)為亮度最大或者亮度最小,即判斷為極值點(diǎn)。
由于椒鹽噪聲的干擾,可能存在來自非圖形輪廓的極值點(diǎn)。為了更準(zhǔn)確地獲得邊緣極值點(diǎn),需要對(duì)極值點(diǎn)進(jìn)行修正,修正的原理是采用泰勒級(jí)數(shù)進(jìn)行擬合,設(shè)偏差為Δx,得到擬合公式如下:
實(shí)際特征點(diǎn)的導(dǎo)數(shù)應(yīng)該為零,如下:
正常的邊緣極值點(diǎn)往往具有較大的對(duì)比度,需要篩掉低對(duì)比度的極值點(diǎn),跟其他幾個(gè)參數(shù)一樣,設(shè)定一個(gè)對(duì)比度閾值CT來進(jìn)行過濾。一般來說,CT的經(jīng)驗(yàn)值是0.04。
來自圖案邊緣特征點(diǎn)對(duì)比度相對(duì)內(nèi)部紋理細(xì)節(jié)要大,因此,如果檢測(cè)方案只需要提取物體的輪廓特征來進(jìn)行識(shí)別,可以將閾值CT適當(dāng)加大,反之則應(yīng)該適當(dāng)減小,以提取更多局部紋理特征。
另外,尺度變化處理,也就是圖像的模糊過程也會(huì)帶來對(duì)比度的改變,也可以參考模糊核的尺寸來設(shè)置CT值。將圖像數(shù)據(jù)標(biāo)準(zhǔn)化后,若高斯函數(shù)方差值δ0=0.7,則對(duì)稱中心和DOG 差值都約為0.32。按照70%極值點(diǎn)為有效數(shù)據(jù),可估算出對(duì)比度閾值CT=0.2。
圖3所示為采用不同的對(duì)比度閾值(CT),缺陷圖像所檢測(cè)出的極值點(diǎn)(kpn)數(shù)量以及分布情況,對(duì)比可發(fā)現(xiàn),當(dāng)CT=0.2時(shí),極值點(diǎn)數(shù)量較少,且分布較為均勻。
圖3 不同對(duì)比度閾值對(duì)極值點(diǎn)的影響
完成低對(duì)比度極值點(diǎn)剔除后,還需要剔除多余的圖像邊框極值點(diǎn)。過濾的依據(jù)是綜合像素點(diǎn)的橫向和縱向梯度信息來判斷。跟對(duì)比度過濾類似,通過設(shè)定閾值ET來實(shí)現(xiàn)。
ET的經(jīng)驗(yàn)值是10,研究發(fā)現(xiàn),ET取值跟圖像處理速度有較大關(guān)系,盡可能減小該閾值,減少邊框極值點(diǎn),可以提升檢測(cè)速度。但該值過小,會(huì)讓圖像內(nèi)部特征點(diǎn)也被誤判為邊框點(diǎn),降低檢測(cè)精度。應(yīng)該按圖案區(qū)域和邊框梯度的大致數(shù)據(jù)范圍來合理設(shè)定閾值。圖4所示為表面缺陷檢測(cè)中,不同的ET值對(duì)極值點(diǎn)獲取的影響??梢钥闯?,ET=3時(shí)較為合適,此時(shí)極值點(diǎn)分布均勻,數(shù)量也較少。
圖4 不同邊框極值點(diǎn)閾值對(duì)極值點(diǎn)的影響
特征點(diǎn)的合理提取是SIFT算法最主要的工作,表面缺陷的檢測(cè)主要依靠大量特征點(diǎn)數(shù)據(jù)集。
本文的實(shí)驗(yàn)主要環(huán)境配置為:操作系統(tǒng)為Windows7,軟件 IDE 為 Python7.0 + OpenCV4.0, GPU 顯 卡 為 Ge?Force-GTX-1650。
測(cè)試的表面缺陷主要包含凹陷、裂紋和斑點(diǎn),檢測(cè)包含兩個(gè)數(shù)據(jù),分別是缺陷檢出率和缺陷誤檢率。本項(xiàng)目實(shí)驗(yàn)對(duì)比3種應(yīng)用算法的檢測(cè)效果,分別是基于統(tǒng)計(jì)圖案統(tǒng)計(jì)Match?Template、基于SIFT 算子的特征識(shí)別方法和基于人工卷積神經(jīng)網(wǎng)絡(luò)CNN算法。對(duì)比結(jié)果如表1~2所示。
表1 缺陷檢出率對(duì)比
表2 缺陷誤檢率對(duì)比
從檢測(cè)效果來看,統(tǒng)計(jì)方法是最不理想的,人工神經(jīng)網(wǎng)絡(luò)在裂紋檢測(cè)上有較好效果,在凹陷和斑點(diǎn)的檢測(cè)上具有一定局限性。
出現(xiàn)這種結(jié)果的原因跟各自檢測(cè)的原理有關(guān)系,統(tǒng)計(jì)學(xué)方法對(duì)圖像的尺度、對(duì)比度、缺陷形態(tài)敏感,對(duì)于沒有固定形態(tài)的缺陷效果欠佳,而卷積神經(jīng)網(wǎng)絡(luò)對(duì)于污漬等干擾圖案不能有效區(qū)分,所以只對(duì)裂紋檢測(cè)效果較好。SIFT 表現(xiàn)出具有良好抗干擾能力的特性。
本文介紹了SIFT算法的識(shí)別原理,并給出了相關(guān)參數(shù)的設(shè)置方法和經(jīng)驗(yàn)公式,最后通過實(shí)際表面缺陷的檢測(cè),對(duì)比驗(yàn)證了SIFT算法較強(qiáng)的魯棒性和抗干擾能力,以及相關(guān)參數(shù)設(shè)置方法的正確性和可行性。
實(shí)驗(yàn)數(shù)據(jù)表明,SIFT 算法在凹陷類和斑點(diǎn)類缺陷的檢出率上具有明顯優(yōu)越性,在裂紋類的誤檢率上也具有較大優(yōu)勢(shì)。特別是在有干擾圖像情況下,檢出率比神經(jīng)網(wǎng)絡(luò)提升了20%,誤檢率降低了3%。
但SIFT算法也存在一定的局限性,主要表現(xiàn)在檢測(cè)時(shí)間上,比神經(jīng)網(wǎng)絡(luò)慢了近一倍,還需要進(jìn)一步進(jìn)行研究和改進(jìn)。