劉 威,徐 莉
(常州信息職業技術學院,江蘇 常州 213164)
進入21世紀后,人們的生活水平不斷提高,對各種產品的質量有著更加嚴格的要求。其中,紡織品是很多日用品的基礎材料,比如衣服、包、床上用品等,因此,紡織品質量檢測結果是非常重要的指標。互聯網上的搜索結果顯示,紡織品在整理過程中的瑕疵占所有瑕疵不到10%,紡織品織造過程中的瑕疵類型占80%[1]。截至2013年,大多數紡織品瑕疵檢查都要求工人分階段進行,長時間的檢測工作會使工人感到疲倦,導致瑕疵檢測不完善。因此,人工檢查方法適用于有限的瑕疵類型,一些極小區域的瑕疵很難檢測出。
隨著我國紡織工業的飛速發展,我國紡織品產量居世界之首,品種也越來越豐富,同時也造成了生產效率和產品質量的問題。1980年,自動瑕疵檢測系統應運而生。1988年,塔卡特(Takat)使用灰度匹配來識別紡織品瑕疵。1990年至今,基于圖像處理技術在檢測瑕疵方面的研究達到頂峰,世界各地的專家學者發表了許多相關論文與著作[2]。
在收集紡織品圖像時,圖像質量受到環境光照等元素的影響,所以需要進行圖像預處理,去除紡織品圖像的背景,提高無圖案紡織品圖像的質量。
灰度直方圖均衡化的原理是對像素多的灰度值進行擴展、對像素低的灰度值進行合并,以此來提高圖像的對比度,使圖像變得清晰,達到增強圖像的目的。平紋無圖案紡織品均衡化前后的效果如圖1所示。

圖1 平紋無圖案紡織品均衡化前后的效果
由圖1可以看出,均衡化后的圖像灰度值分布非常均勻,極大地提高了紡織品圖像的對比度。在均衡化處理前,從圖1只能看到一條很淺的瑕疵區域,而經過直方圖均衡化處理后,可以發現瑕疵區域更加明顯。
中值濾波是一種非線性平滑技術,能將每一個像素點的灰度值設置為該點某鄰域窗口內的所有像素點灰度值的中值[3]。中值濾波能有效抑制椒鹽噪聲,使圖像變得更加平滑,并凸顯瑕疵區域。
本研究將Python中的OpenCV模塊用于執行兩種類型的濾波:中值濾波和均值濾波[4]。其中,均值濾波無法有效消除圖像的噪點,只能使圖像變得模糊。中值濾波可以在很大程度上去除紡織品圖像的噪聲,效果比均值濾波好。本研究選擇3×3和9×9的窗口對圖像進行中值濾波的處理,中值濾波可以使背景變得模糊,提高瑕疵區域與無瑕疵區域的對比度,有效增強后續檢測效果。
無圖案紡織品的瑕疵定位就是把紡織品圖像的瑕疵標記出來,只關心瑕疵的位置與形狀。因此,本研究將圖像中瑕疵的位置賦值為“1”,將無瑕區域賦值為“0”。閾值分割的目的是在紡織品圖像中將瑕疵區域和無瑕區域分離,也是最有效的方法。通過選擇合適的閾值,將目標與圖像背景分開,而閾值處理的關鍵是要選擇能達到有效分割效果的閾值。
簡單閾值只需確定一個閾值,然后算法就會自動對灰度值進行分割,比如選擇閾值為128,則0~128的灰度值被保留,而129~255被全部去除,即圖像中灰度值低于128的像素為黑色,灰度值高于128的像素為白色,這樣就完成了紡織品圖像的瑕疵點分割。
使用cv2.threshhold()函數:cv2.threshold(src, thresh, maxval, type)。其中,src:原圖片且必須是單通道;thresh:閾值,取值范圍為0~255;maxval:填充色,取值范圍為0~255;type:此次類型選擇cv2.THRESH_BINARY,只有黑白二色。經過簡單閾值后如圖2所示。

圖2 簡單閾值實驗結果
自適應閾值是根據圖像中某一塊區域的像素值來計算對應區域的閾值,在對紡織品圖像開展二值化等操作時,可以有效降低光照亮度的影響。自適應閾值與簡單閾值的區別在于閾值的選擇更加依賴上下文的關系。
在Python中,自適應閾值函數為cv2.adaptiveThreshold(src, maxval, thresh_type, type, Block Size, C)。其中,src:原圖片;maxval:填充色,取值為0~255;thresh_type:本次采用平均值方法;type:閾值類型;block size:圖像分塊的大小;C:閾值計算過程中的常數項。經過處理后的圖像如圖3所示。

圖3 自適應閾值實驗結果
通過對比,簡單閾值的檢測速度比自適應閾值更快。從結果來看,兩者并沒有太大差別,而簡單閾值算法簡單、速度快,因此,采用簡單閾值對無圖案紡織品圖像進行閾值操作。
輪廓檢測方法目前有兩種:一種是通過邊緣差異來檢測目標的輪廓,另一種是從視覺系統中提取可用的數字模型,以完成目標輪廓檢測。其中,基于邊緣檢測的輪廓檢測方法主要定義亮度和顏色等特性的低級突變以及通過識別圖像中亮度明顯變化的點進行邊緣檢測,再使用經過閾值后的圖像,便可以檢測出目標輪廓。
圖像的輪廓檢測就是在已有的二值圖像上,對圖像中的黑白邊界進行標記,檢測出瑕疵點的形狀與大小。
圖4左側為待檢圖像,右側為經過以上方法檢測的結果。

圖4 樣例1檢測結果
圖4的結果存在誤檢的小面積區域呈椒鹽噪聲分布。通過修改滑動窗口的大小,將原來的9×9窗口改為15×15方形窗口進行平滑后,得到圖5的檢測結果。

圖5 改為15×15后的檢測結果
圖6是典型的因光照不均導致檢測結果中存在大量誤檢像素點。通過觀察發現,樣例2的下方相比其他區域存在較明顯的陰影。經過以上方法檢測后,該部分的陰影區域均在閾值檢測范圍內,所以被定為瑕疵。因此,在獲取圖像樣本時,應對四周的燈光進行調整,讓光照分布均勻,避免光照不均造成的影響。

圖6 樣例2檢測結果
本研究主要探討無圖案紡織品的瑕疵檢測算法,對大多數無圖案紡織品的瑕疵點進行了檢測,以有效檢測出瑕疵的位置,并對瑕疵的區域進行標記和輸出。該方法還存在待改進之處,根據對無圖案紡織品進行預處理的結果,加之拍攝紡織品圖像時的光照、角度等因素,導致圖像明暗分布不均勻,使后續閾值處理的結果中出現了誤檢的像素點。