◆李鋒 李文青
(東華大學計算機科學與技術學院上海 201620)
紡織業作為我國支柱性產業,具有極其重要的經濟位置,并且具有很強的國際優勢[1]。織物在紡織的過程中,高效的瑕疵檢測對織物的質量和生產效率具有極大的影響。目前大部分國家和企業仍使用人工驗布的方法,具有漏檢率和誤檢率高、勞動成本高和生產效率低等問題,計算機智能瑕疵檢測逐漸成為國內外學者研究新熱點。機織物由相互垂直排列的紗線按一定的規律交織而成的織物,所以形成的織物在紋理上具有一定的特征,而瑕疵的出現破壞了這種規律,可以通過分析瑕疵區域與正常區域的特征,尋找到瑕疵圖像與無瑕疵圖像的特征差異,進而能夠在織物圖像中識別出瑕疵區域[2-3]。總結現有的特征提取的方法可以分為3 類[4]:基于統計的[5-6]、基于模型的[7-8]和基于頻譜分析的[9-11]方法。基于統計的方法通過對圖像的像素灰度值進行計算,獲取能夠表征圖像的統計量,然后根據閾值的大小對圖像進行檢測。例如灰度差分法、灰度共生矩陣等方法。基于模型的方法是通過對圖像的紋理結構進行建模,根據圖像中模型參數的差異進行瑕疵檢測,如馬爾科夫隨機場通過圖像之間的馬爾科夫模型的距離來判斷圖像有無瑕疵[12]。王剛[13]等人提出的基于奇異值分解的瑕疵檢測算法通過奇異矩陣對圖像進行重構,根據重構誤差進行瑕疵判斷。基于模型的方法對圖像的整體紋理結構要求比較高,故應用性比較低。基于頻譜分析的方法主要是傅里葉變換、Gabor 變換和小波變換等方法。該類方法適應性較差,例如傅里葉變換對局部區域瑕疵的識別能力比較差,而且對噪聲較為敏感。Gabor 變換中各濾波器非正交關系,存在大量的冗余數據,不能較好地描述圖像的局部結構信息。
瑕疵檢測算法的重點是通過計算織物標準模板圖像與待檢測圖像的特征差異,來判斷待檢測圖像是否存在瑕疵。這里的特征可以是圖像的灰度特征,也可以是圖像的紋理特征。針對待檢區域的特征值與模板的特征值差值比較大,且面積比較大的瑕疵,很多瑕疵算法檢測效果表現良好。但有些瑕疵例如小洞、油污、接頭、異物植入等瑕疵,這些瑕疵點與模板的特征值差異大,但是瑕疵的面積比較小;還有些瑕疵其特征值差異小,但是瑕疵具有一定的連續性和密集型,例如缺經、缺緯、雙經緯、斷緯等瑕疵,瑕疵區域的特征差與正常區域的特征差相差較小,但是瑕疵區域面積比較大。針對以上這些情況,如果不考慮瑕疵的形態和分布,僅僅是基于圖像特征差異進行處理,是很容易將瑕疵區域誤識別為圖像采集過程中的噪聲干擾。為此本文提出了一種基于體積特征的織物瑕疵檢測方法,將待檢測區域的特征差值之和作為其體積特征,相對于面積比較小,特征差異較大,或者瑕疵特征差較小但是面積比較大的待檢測區域,通過體積特征進行檢測,能夠較好地識別出瑕疵區域。
機織物是由經緯紗通過特定的編織規律織造形成,所形成的織物是具有獨特的紋理特征和灰度特征,而瑕疵的出現破壞了織物的特征,造成了與標準模板圖像的特征差異,然而不同的瑕疵造成的特征差異是不同的。如圖1~4 所示的模板圖像、瑕疵圖像以及兩者之間的特征差異三維圖像,從圖1 和圖2 的破洞,油污瑕疵特征差異圖,我們可以看出,瑕疵面積比較小,但是瑕疵比較明顯,瑕疵區域特征差遠遠高于正常紋理區域的特征差;從圖3 和圖4 的缺緯,缺經瑕疵特征差異圖,可以看出瑕疵區域特征差與正常紋理區域的特征差相差不大,但是瑕疵區域的面積比較大。因此,本文結合了瑕疵區域的面積以及特征差異兩個方面來提取待檢測區域的特征以實現瑕疵檢測。
本文提出的基于體積特征的瑕疵檢測算法的流程圖如圖5 所示。在對織物圖像與模板圖像進行特征提取,獲得特征差圖像,再經過二值化和形態學處理后,輸出的二值圖像中的區域可能是瑕疵區域也可能是干擾區域。根據前面分析我們可知,與瑕疵區域相比較,干擾區域的噪聲明顯程度沒有油污和破洞這些瑕疵強,如果僅僅依靠干擾區域與瑕疵區域像素灰度的差異來區分瑕疵區域是不行的,因為有時候像缺經和缺緯這樣的瑕疵,其瑕疵區域的像素灰度會和干擾區域的像素灰度相差不大,但是缺經和缺緯這類的瑕疵區域面積比較大,而噪點產生的干擾區域面積比較小,故本文提出的基于體積特征的瑕疵檢測算法,結合了特征差異以及區域面積大小兩個因素,通過待檢測區域的特征差之和的大小來識別瑕疵和噪聲干擾,進而達到瑕疵檢測的目的。

公式(1)為特征差計算公式,式(1)中F(x,y)和G(x,y)分別為標準圖像與待檢測圖像的灰度值,g(x,y)為差值圖像。再根據如公式(2)對特征差圖像g(x,y)進行二值化操作,式中T為閾值。為了去除圖像中的噪點,對圖像進行了形態學處理,得到圖像經過二值化,形態學處理得到的二值圖像中,包含的待檢測區域可能是瑕疵區域,也可能是噪點干擾區域,為了進一步提取區域的體積特征,需要獲得區域的灰度像素集合。每一個區域內的像素具有連通性,通過連通區域提取算法可以獲得待檢測區域的特征差像素集合,常見的連通區域提取算法有種子填充和掃描線填充算法等[14],本文使用種子填充算法[15],像素鄰域采用的是8-鄰域,這樣能夠盡可能標識出瑕疵區域的像素集合。

圖1 破洞瑕疵特征差異圖

圖2 油污瑕疵特征差三維圖

圖3 缺緯瑕疵特征差三維圖

圖4 缺經瑕疵特征差三維圖

圖5 算法框圖
待檢測圖像經過算法處理轉換為二值圖像,通過連通區域提取算法標記待檢測區域,獲得區域的像素集合。圖像g′(x,y)與特征差圖像g(x,y)在像素位置上是一一對應的,根據待檢測區域的像素集合在特征差圖像中可以得到特征差像素集合。假設圖像g′(x,y)經過連通區域提取算法共標記出n個連通的待檢測區域,其中第i個待檢測區域用ci表示。通過公式(3)將待檢測區域內mi像素的特征差值累加求和,結果即為該待檢測區域的體積特征值。

通過公式(4),逐一將待檢測區域ci的體積特征值vi與閾值V進行比較。如果待檢測區域的體積特征vi大于閾值V,說明該待檢測區域與正常紋理區域相比特征異常,判斷ci為瑕疵區域,將待檢測區域內的像素值標記為前景像素值;如果待檢測區域的體積特征小于或者等于閾值V,說明該待檢測區域特征比較正常,則ci為噪聲,將區域內的像素值標記為背景像素值,算法最后通過輸出的二值圖像是否有疵點來判定待檢測圖像是否為瑕疵圖像。

式中255 為二值圖像的前景像素值,0 為二值圖像的背景像素值。
在上述算法中,閾值V的大小對瑕疵檢測的效果具有較大的影響,如果V過大,將會漏檢真正的瑕疵區域,如果閾值過小,又不能很好地將干擾去除,所以準確計算閾值V是至關重要的。
正常情況下,對無瑕疵圖像,灰度特征應當是具有區域規律性,而實際上圖像在采集的過程中會引入噪聲,造成圖像的局部灰度特征發生變化。為了使得閾值V具有一定的適應性,進而提高算法的科學性,本文將根據無瑕疵圖像噪點干擾區域的灰度特征計算閾值V,具體步驟如下。
(1)首先動態隨機采集多幅無瑕疵圖像作為訓練圖像,將標準模板圖像與每幅訓練圖像分別進行灰度特征匹配,獲得特征差圖像,然后根據本文算法流程最終獲得訓練圖像的體積特征。
(2)此時訓練圖像的體積特征表示為噪聲干擾區域的特征,為了能夠更好地區分瑕疵和噪聲,本文提取每幅圖像體積特征的最大值,然后計算其平均值作為本文瑕疵算法中的體積閾值。
為了驗證本文算法的有效性,選取了含有破洞、油污、缺經、缺緯、接頭5 種瑕疵類型,每種瑕疵類型50 幅圖像,圖像分辨率為256*256。在對算法檢測效果進行評估中,瑕疵區域標記為1,無瑕疵區域標記為0,對專家標記瑕疵圖像和算法輸出圖像進行對比。專家標記瑕疵圖像與算法輸出圖像均為1 的部分為真陽性(TP),均為0 的部分為真陰性(TN),算法輸出圖像標記為1,瑕疵圖像專家標記為0 的部分為假陽性(FP),反之為假陰性(FN)。本文實驗中使用的評價指標有準確率(ACC)、真陽性率(TP)、偽陽性率(FPR)、陽性預測值(PPV)、陰性預測值(NPV),各項指標定義如下:

如圖6 表示出織物圖像集中5 種瑕疵類型的待測瑕疵圖像、灰度特征差圖像、特征差圖的二值化圖、形態學處理結果圖以及本文算法檢測結果圖。從圖6(b)的特征差圖像可以看出,瑕疵點區域與正常紋理區域的灰度對比度得到明顯增強,說明灰度特征能夠很好地區分瑕疵區域與正常紋理區域。由圖6(c)~(d)示,經過二值化以及形態學操作,對待檢測區域進行膨脹填充,增強了圖像中待檢測區域的紋理結構,同時去掉了幾何面積比較小的待檢測區域。計算待檢測區域的體積特征,根據體積特征進行瑕疵識別的結果圖如圖6(e)所示,從算法輸出的圖像中可以看出,通過體積特征對待檢測區域進行閾值分割,較好的區分出瑕疵區域和噪聲,同時能夠很好地保留瑕疵區域的位置和形狀。

圖6 本文算法瑕疵檢測流程結果圖
織物圖像集的實驗測試結果量化結果如表1 所示,在評價指標中,對于TPR,PPV 和NPV 數值越大越好,FPR 數值越小越好。從表1中的統計結果可以看出,本文算法的ACC 均在94.5% 之上,TPR平均值在97% 左右,FPR 平均值為3.8%,PPV 平均值72.3%,NPV均在98.9% 以上。由圖6 的本文算法檢測流程結果圖和表1 的統計數據可知,本文算法對織物圖像測試集中的瑕疵檢測效果較好。
為了進一步檢驗本文提出的瑕疵算法的檢測效果,這里將本文提出的算法與基于直方圖特征的瑕疵檢測算法進行了對比。兩種算法對不同瑕疵的檢測效果,如圖7 所示。圖7(a)為瑕疵樣本圖像,圖7(b)是本文提出的算法對瑕疵圖像的檢測結果,圖7(c)是直方圖特征算法對瑕疵圖像的檢測結果。由圖7 可知,兩種算法都檢測到了瑕疵,同時將瑕疵從圖像背景中分割了出來,但是從整體的瑕疵檢測效果來看,基于直方圖特征的瑕疵檢測算法對瑕疵造成了削弱,不能完整的檢測出瑕疵的形狀和位置,而本文提出的算法能夠較好地消除背景紋理和噪聲的影響,特別是針對具有密集型和連續性且特征不是很明顯的瑕疵,能更加準確的檢測出瑕疵的位置和形狀。
在對比實驗中,對100 幅樣本圖像集進行瑕疵檢測,包含40 幅無瑕疵樣本圖像,60 幅不同瑕疵樣本圖像,其中瑕疵樣本圖像中包含20 幅瑕疵特征比較明顯,但是面積比較小(以下用“特征a”表示)的樣本圖像,20 幅瑕疵特征不明顯,但具有一定的密集型和連續性(以下用“特征b”表示)的樣本圖像,另外20 幅圖像瑕疵特征明顯,且面積比較大。然后使用本文提出的算法和直方圖特征算法分別對樣本圖像集進行瑕疵檢測,檢測統計結果如表3 所示。表2 中將圖像瑕疵類型分為點狀瑕疵、條狀瑕疵和網狀瑕疵,同時統計了兩種算法對“特征a”和“特征b”瑕疵樣本圖像的檢測效果,結果如表3 所示。從表2 中可以看出,本文算法的TPR 以及FPR 高于直方圖特征算法,主要是因為本文算法采用的閾值V 較大,經過腐蝕、膨脹操作,待檢測區域的面積增大,造成其周圍的無瑕疵區域被檢測成瑕疵區域。從表3 可以看出,本文提出的算法對“特征a”和“特征b”瑕疵具有很好的檢測效果,直方圖特征算法對“特征a”和“特征b”瑕疵具有一定的檢測率,但是其算法只能檢測出瑕疵的部分紋理,大大削弱了瑕疵的形狀和瑕疵的定位。整體對比實驗表明,本文提出的算法可以很好地消除噪聲的干擾,對整體瑕疵的檢測效果更為準確。

圖7 本文算法與直方圖算法瑕疵檢測效果圖

表1 本文算法對5 種瑕疵圖像檢測結果統計

表2 本文算法與直方圖算法瑕疵檢測效果統計

網狀99.35 99.23 1.38 76.81 99.26 本文算法96.67 78.52 0.52 78.67 94.96 直方圖算法

表3 本文算法與直方圖算法對“特征a”與“特征b”瑕疵檢測效果統計
本文提出的基于體積特征的織物瑕疵檢測方法,通過計算待檢測區域的灰度特征差之和,作為區域的體積特征用于瑕疵判定,既考慮了灰度特征差異,又考慮了瑕疵分布特征,能夠充分識別瑕疵。實驗結果表明,本文算法能夠更好地去除環境干擾,同時提取不同尺寸形狀的瑕疵,準確率高達96.5% 以上;特別是針對“特征a”以及“特征b”類型瑕疵,本文算法能夠完整地檢測到瑕疵大小以及位置。在之后的瑕疵算法研究過程中,還需對織物圖像的紋理類型、瑕疵種類等方面進行深入探討,以測試本文算法在各種不同類型織物下的適應性。