胡克滿, 羅少龍, 胡海燕
(1. 寧波職業(yè)技術(shù)學(xué)院 電子信息工程學(xué)院, 浙江 寧波 315800; 2. 澳門科技大學(xué) 資訊科技學(xué)院, 澳門 999078;3. 寧波職業(yè)技術(shù)學(xué)院 科技與產(chǎn)學(xué)合作處, 浙江 寧波 315800)
紡織品在生產(chǎn)過程中,由于紗線的質(zhì)量問題或其他原因?qū)е驴椢锍霈F(xiàn)不同程度的疵點。如果未能嚴格把控胚布的生產(chǎn)質(zhì)量,織物疵點將給二次加工、深加工等流程造成不必要的經(jīng)濟損失,因此,織物的表觀質(zhì)量檢測是企業(yè)生產(chǎn)質(zhì)量控制的關(guān)鍵技術(shù)之一。目前不少小微型企業(yè)對織物疵點的檢測主要依靠人工作業(yè),而人工作業(yè)容易受到外界因素的影響,對工人的技術(shù)與經(jīng)驗要求高,也是一項需要精力高度集中的工作崗位,工人容易疲勞,且人工成本較高[1]。隨著人工智能、圖形圖像處理等技術(shù)的不斷發(fā)展,采用機器視覺替代人工進行織物疵點識別已成為眾多企業(yè)的優(yōu)先選擇與迫切需求。
近年來國內(nèi)外專家學(xué)者基于計算機視覺技術(shù)及圖形圖像處理技術(shù)對織物疵點檢測方法展開探討,并取得不少研究成果。目前織物疵點檢測主要研究方法可分為4大類:基于模型研究方法,基于數(shù)學(xué)統(tǒng)計研究方法,基于頻譜分析研究方法和基于結(jié)構(gòu)研究方法[2-3]?;谀P脱芯糠椒?,即構(gòu)建某種參數(shù)化數(shù)學(xué)模型,但是這種模型計算量大,對于相對隱蔽的較小面積的織物疵點的識別能力較弱[4];基于數(shù)學(xué)統(tǒng)計研究方法,主要是對檢測織物的圖像特征進行統(tǒng)計分析,由于統(tǒng)計方法的不一樣使得結(jié)果不同,其自適應(yīng)性較弱[5];基于頻譜分析研究方法,目前主要采用Gabor變化、傅里葉變化等,該方法對濾波器的要求較高,檢測效果很大程度上依賴于濾波器的選擇,因此濾波器的選擇與優(yōu)化起到?jīng)Q定性的作用[6];基于結(jié)構(gòu)的研究方法,運用了結(jié)構(gòu)形態(tài)學(xué)的方法識別織物疵點信息,由于織物結(jié)構(gòu)的多樣性使得該方法的應(yīng)用過程帶了一定的困難[7]。
由于織物疵點圖像邊緣包含了豐富的信息量,如不同疵點、背景與疵點、疵點與疵點之間等信息,在織物疵點檢測中引入邊緣檢測技術(shù)是十分有效的方法。目前較為常用的邊緣檢測算子有Prewitt算子、Roberts算子、Laplacian算子等[8],較上述邊緣檢測算子想比較,Canny算子邊緣檢測具有檢測精度高、信噪比大等特點,在圖像識別技術(shù)中得到廣泛的應(yīng)用,Canny算子檢測屬于基于頻譜分析研究方法,而Canny算法閾值的選擇相對被動需要人工設(shè)定,從而影響其實時性和自適應(yīng)性[9-10]。本文基于現(xiàn)有Canny算法對其進行分析,并提出一種自適應(yīng)改進的Canny邊緣檢測算法。選擇高斯濾波器針對不同疵點種類設(shè)計多個高斯濾波參數(shù),較好地實現(xiàn)了去除噪聲并保留了更多的邊緣信息,可根據(jù)織物圖像特征自適應(yīng)確定Canny算子閾值。由于無需人工設(shè)定閾值,大大改善了Canny自適應(yīng)性,可較好地檢測出織物疵點圖像的邊緣信息,準確地識別織物疵點。
John Canny于1986年提出一種邊緣檢測算法,并基于3個準則以達到較好的邊緣檢測目的,即信噪比準則、定位準則、單邊響應(yīng)準則[11]。對于織物疵點檢測圖像信息的處理,需要有較好的信噪比,準確的疵點定位以及虛假邊緣抑制等特征要求,因此本文提出利用Canny算法進行織物疵點檢測。
第1步,高斯濾波消除噪聲。利用二維高斯濾波對被檢測圖像進行濾波處理,高斯函數(shù)濾波參數(shù)δ通過人工設(shè)定,從而達到降噪獲得平滑圖像。
(1)
根據(jù)織物疵點的類型不同選擇高斯函數(shù)濾波參數(shù)δ,經(jīng)試驗證明高斯濾波參數(shù)δ對于不同種類的織物疵點濾波器設(shè)置敏感。為了更好地說明問題,以緯紗帶入這類織物疵點為說明對象。選取高斯濾波參數(shù)δ為1,構(gòu)建緯紗帶入檢測濾波器如圖1所示,濾波器矩陣G見下。
圖1 高斯濾波器Fig.1 Gauss filter. (a) 3-D of Gauss filter;(b) 2D of Gauss filter
經(jīng)濾波后得到的緯紗帶入檢測信息如圖2所示。
圖2 濾波處理圖Fig.2 Image processed by filter. (a)Original image;(b) Filtered image
從圖2中可發(fā)現(xiàn)濾處理后的圖片與原圖片之間的差異,原圖為色彩飽滿的圖片,經(jīng)過濾波后獲得了二值化圖片,濾波處理圖片是為了獲得邊緣信息重要環(huán)節(jié)之一。
第2步,計算梯度向量與梯度幅值。對通過高斯濾波后的圖像進行計算梯度向量與梯度幅值,設(shè)梯度向量為θ(x,y),梯度幅值為H(x,y)。利用一階差分算子分別進行水平方向的梯度幅值分量Gx和垂直方向的梯度分量Gy的運算求值,圖3、4分別為水平和垂直方向的梯度分量的能量分布圖。根據(jù)水平方向的梯度幅值分量Gx和垂直方向的梯度分量Gy可求得梯度向量為θ(x,y)和梯度幅值為H(x,y),如式(2)、(3)所示。
(2)
(3)
通常θ(x,y)梯度向量所取的角度為0°~180°之間的45°的倍數(shù),即
θ(x,y)=n·45°,n=0,1,2,3
(4)
圖3 水平方向能量響應(yīng)值Fig.3 X-Direction of energy estimates
第3步,極大值的選擇與非極大值的抑制。通過對極大值的選擇與非極大值的抑制,去除一些非邊緣信息,盡可能排除干擾信息,并保留相對較優(yōu)信息作為邊緣信息,這樣可以使得織物疵點的邊緣信息更加凸顯。
第4步,閾值選擇。確定高閾值與低閾值,通常高于閾值信息將被保留,并被確認為邊緣信息,而低于閾值信息被剔除,形成滯后閾值現(xiàn)象。閾值大小的確定與選擇直接影響邊緣信息,對獲得檢測邊緣的質(zhì)量起到關(guān)鍵性的作用。而確定閾值通常是需要根據(jù)多次實驗結(jié)果,從而由人工選取相對較為理想的值。
1)傳統(tǒng)的Canny算法依賴于高斯濾波對原圖進行平滑濾波與去噪,其中由式(4)可以發(fā)現(xiàn)δ為高斯函數(shù)濾波參數(shù),參數(shù)值δ的選擇將影響原圖的濾波與平滑效果。而參數(shù)值δ的選擇是由人工設(shè)定,這也使得傳統(tǒng)Canny算法針對不同的圖像需要人工選擇不同的參數(shù)值δ,很大程度上影響了其性能的發(fā)揮。根據(jù)對織物疵點檢測過程的分析,本文將高斯函數(shù)濾波參數(shù)δ針對不同種類疵點進行適當(dāng)?shù)恼{(diào)整,其檢測效果更佳理想。
2)傳統(tǒng)Canny算法在進行邊緣檢測前先人工設(shè)定高閾值和低閾值。而設(shè)定相同的高閾值和低閾值對處理不同的圖像,也同樣使得邊緣檢測效果不盡相同。而在織物疵點檢測過程中,往往可根據(jù)織物疵點種類的判斷提前選取相應(yīng)的高斯函數(shù)濾波參數(shù)值δ,但是對閾值的選擇一方面需要大量實驗,另一方面也需要經(jīng)驗值判斷,因此,如何通過自適應(yīng)方式獲得圖像自身所需的閾值是提高傳統(tǒng)Canny算法性能的有效途徑之一。
本文針對上述基于Canny算子織物檢測過程關(guān)鍵技術(shù)分析,提出一種自適應(yīng)獲得閾值的方法并對傳統(tǒng)Canny算法的進行改進,通過實驗驗證獲得了良好的效果。
在織物疵點檢測過程中,由于織物疵點的種類繁多,不同種類的疵點采用不同的濾波器,其檢測效果更加有效。濾波參數(shù)的選擇是構(gòu)建濾波器重要的關(guān)鍵點之一,針對傳統(tǒng)Canny算法的濾波參數(shù)選擇與高閾值和低閾值選擇的不足之處,本文對其進行改進。
在織物疵點檢測過程中,選擇不同的濾波器目的是為了能夠適應(yīng)不同的織物疵點特征的檢測。為能夠更好地設(shè)計自適應(yīng)濾波器,其基本思想為局部加權(quán)和原圖信號迭代卷積,每次迭代都會改變加權(quán)系數(shù),從而逐步形成自適應(yīng)性。在迭代過程中銳化了區(qū)域邊緣,也使得區(qū)域內(nèi)部得到平滑。自適應(yīng)迭代的過程是逐步進行的,需要經(jīng)過多次迭代得到,具體步驟如下。
1)設(shè)定迭代次數(shù),根據(jù)文獻[9]所分析的迭代次數(shù)結(jié)果,本文迭代次數(shù)采用二分法查找進行實驗,估算并設(shè)定一個相對較大的值,記錄每次實驗的結(jié)果,并將本次實驗結(jié)果與上次實驗結(jié)構(gòu)進行比較,根據(jù)比較結(jié)果判斷收斂方向。在實驗中通過二分法查法可以較好獲得收斂點,但是值得注意的是由于本文所獲得的收斂點為迭代次數(shù),是離散的數(shù)據(jù),所以在實際實驗過程中應(yīng)選取最接近收斂點的離散數(shù)值,通常這個時候選取的數(shù)值與個人偏好及工程經(jīng)驗有一定的關(guān)系。結(jié)合實際實驗總結(jié)設(shè)迭代最大值K=5,并令k=0,參數(shù)h的設(shè)定見文獻[12]。
2)分別計算梯度向量Gx(x,y)和Gy(x,y):
(5)
(6)
3)確定濾波器的權(quán)系數(shù):
(7)
4)對f(k)(x,y)加權(quán)平均:
f(k+1)(x,y)=
(8)
5)判斷迭代是否結(jié)束,當(dāng)k≤K則繼續(xù)步驟2),直到k>K時迭代完成。
對織物疵點進行檢測時,當(dāng)濾波器確定后,Canny閾值在圖像處理前需要人工設(shè)定,而這種設(shè)定通常需要做大量的試驗和經(jīng)驗判斷織物疵點檢測效果,由此帶來的不便。在織物疵點圖像處理過程中高閾值的大小反映邊緣信息的保留量。過高的閾值很難獲得足夠多的邊緣信息,容易丟失邊緣信息[13];過低的閾值又導(dǎo)致邊緣信息冗余,使得非邊緣信息冗余無法較好的呈現(xiàn)真實邊緣信息,高閾值的選擇應(yīng)考慮織物疵點圖像的整體情況,根據(jù)上述分析,局部方差的變化反映局部圖像的變化情況,為了能夠獲得織物疵點圖像的整體效果,取圖像的平均方差和平均灰度作為圖像的高閾值參數(shù)。獲取高閾值的方法如下:令Eave為圖像平均方差,F(xiàn)ave為圖像平均灰度,Lw為圖像的寬度,Lh為圖像的高度,Th為高閾值,Tl為低閾值。
(9)
(10)
(11)
Tl=μTh
(12)
經(jīng)過多次實驗測試,對不同的織物疵點圖像進行測試,其中μ∈[0.25,0.5]效果較好。本文實驗測試選取μ=0.5。
為驗證本文算法的有效性和可行性,更好地檢驗效果,實驗在Linux操作系統(tǒng)下配置OpenCV3.0.1實驗環(huán)境,算法代碼采用MatLab和Python語言編寫。本文選取漏紗、跳花、破損、緯松、結(jié)頭等典型的織物疵點圖像進行實驗。
為對常見的幾種織物疵點吊經(jīng)、松經(jīng)、浮經(jīng)、緯紗帶入、重經(jīng)等,利用傳統(tǒng)的Canny算法進行處理,對傳統(tǒng)的Canny算法進行高、低閾值與高斯函數(shù)濾波參數(shù)δ的設(shè)定。設(shè)置高閾值為400,低閾值為200,高斯函數(shù)濾波參數(shù)δ為3,結(jié)果如圖5所示??煽闯鰴z測到邊緣信息較少,不能完整地反映吊經(jīng)、松經(jīng)、浮經(jīng)、緯紗帶入等織物疵點的邊緣信息。設(shè)置高閾值為50,低閾值為25,高斯函數(shù)濾波參數(shù)δ為3,結(jié)果如圖6所示。結(jié)果顯示檢測到邊緣信息冗余。在高斯函數(shù)濾波參數(shù)δ取值一定的情況下閾值的選擇非常重要,過高無法完整的表達邊緣信息,過低使得邊緣信息冗余,也同樣無法較好的反應(yīng)真實邊緣情況。圖7示出本算法通過自適應(yīng)方式獲得參數(shù)值的實驗結(jié)果,可以看出,獲得了較好的邊緣信息,織物疵點可有效地被識別。
圖5 高閾值400檢測結(jié)果Fig.5 Result of high threshold value 400.(a)Tight warp;(b)Loose warp;(c) Floating selvedge;(d)Result of tight warp; (e)Result of loose warp; (f)Result of floating selvedge
圖6 高閾值50檢測結(jié)果Fig.6 Result of high threshold value 50.(a)Tight warp; (b)Loose warp; (c) Floating selvedge;(d)Result of tight warp; (e)Result of loose warp; (f)Result of floating selvedge
圖7 本文算法結(jié)果Fig.7 Algorithm result of the paper. (a)Original image;(b)Gray image; (c) Image binarization; (d)Result of original image
由此可見,通過自適應(yīng)形式獲得濾波參數(shù)及高閾值和低閾值時,其圖像檢測效果與通過人工設(shè)定的值相比更加有效,同時也避免了由于經(jīng)驗不足而造成的對高閾值和低閾值設(shè)定的不確定性。與傳統(tǒng)的Canny算法相比,改進的算法對織物疵點的檢測效果要優(yōu)于傳統(tǒng)的Canny算法。
為進一步驗證本文算法的有效性,通過對不同類型的疵點圖像進行實驗檢測,結(jié)果表明改進的算法可有效地檢測出織物疵點。
輸入包含疵點的圖像共70張包括吊經(jīng)、松經(jīng)、浮經(jīng)、破洞、油脂污染和星跳等不同類型的疵點圖像,無疵點的圖像20張。本文算法可有效地檢測出疵點圖片為66張,其中對檢測破洞效果最佳,其次浮經(jīng)、吊經(jīng)、油脂污染檢測效果尚可,次之為松經(jīng)和斷頭。另有3張星跳和1張斷頭邊緣不太明顯的圖像未能被有效地檢測。無疵點圖像共20張,均可有效地被檢測。
(13)
誤檢率為
(14)
研究發(fā)現(xiàn),本文算法在檢測過程中,對包含織物疵點的圖片進行處理仍然存在沒有被檢測出來的情況,其中主要原因在于Canny算子本身特性的局限導(dǎo)致其無法檢測的結(jié)果,Canny算子主要是對圖像的邊緣信息提取進行檢測,而織物疵點的種類繁多,其中部分織物疵點的邊緣信息特征表現(xiàn)不明顯時,Canny算法就無法對其進行邊緣信息提取。例如該算法對織物疵點星跳的檢測相對其他種類的織物疵點正檢測率要低,其主要原因是由于星跳疵點邊緣不顯著,從而導(dǎo)致該類織物疵點的正檢率偏低,因此,在針對類似于星跳疵點的織物疵點檢測,應(yīng)該通過多次實驗,從而構(gòu)造濾波器及閾值的設(shè)定,這樣可以有效地提高該類檢測效果。
本文在傳統(tǒng)的Canny算法的基礎(chǔ)上,提出一種改進的織物檢測算法,深入地探討了傳統(tǒng)Canny算法的工作原理并對其關(guān)鍵技術(shù)進行了分析。針對傳統(tǒng)Canny算法的不足設(shè)計了自適應(yīng)Canny算法,并應(yīng)用于織物疵點檢測。
傳統(tǒng)的Canny算法對閾值的設(shè)定過高導(dǎo)致織物疵點邊緣信息不足,過低使得邊緣信息冗余。本文算法利用自適應(yīng)方法獲得閾值與高斯函數(shù)濾波參數(shù)δ,能夠有效地檢測出織物疵點的邊緣信息,同時也可以應(yīng)用于其他領(lǐng)域的圖像識別技術(shù),具有一定的實際應(yīng)用價值。
FZXB