李鵬飛, 嚴 凱, 張緩緩, 景軍鋒
(西安工程大學 電子信息學院, 陜西 西安 710048)
紗線的質量對紡織品后加工具有重要影響,其中毛羽是紗線質量評價的重要指標之一。在實際生產過程中,毛羽過長、數量過多會導致紡織品后期染色不均勻[1],從而形成色差;紗線毛羽過多致使在加工過程中受摩擦起球[2],從而降低紡織品的質量:因此,對毛羽長度及數量的檢測有重要意義。
目前,企業檢測紗線毛羽主要采用是目測法和光電式毛羽檢測儀法,但這2種方法誤差較大且成本較高。隨著計算機技術及圖像處理技術的迅速發展,圖像處理技術被越來越多的研究人員應用在紗線毛羽檢測方面。國內外有很多學者利用基于紗線條干畫基準線的方法檢測紗線毛羽長度[3],雖然針對紗線毛羽檢測工作取得一些成績,但這種方法在統計彎曲毛羽長度時無法計算出實際長度,普適性不高。孫銀銀等[4]采用視頻顯微鏡與圖像處理技術相結合的方法,選擇條干上下邊緣作為基準線,并將圖像處理法的檢測結果分別與目測法和GY172 A型光電分級統計法相比較,得出基于圖像處理的毛羽檢測方法能夠獲得更準確和可靠的檢測結果,但此方法利用視頻顯微鏡采集紗線圖像,在工業生產中不適用。Fabija等[5]利用圖像處理技術對毛羽圖像進行處理實現毛羽的檢測,雖然在處理過程中圖像已經過銳化,但是在分割過程中部分毛羽仍然會被分類為背景,從而造成毛羽大范圍斷開。
針對以往研究中存在的問題,本文提出一種基于最大熵與密度聚類算法融合的方法對紗線毛羽進行檢測。該方法首先對輸入的圖像進行雙邊濾波去除噪聲增強紗線毛羽特征,然后利用最大熵閾值法提取出紗線毛羽,并細化毛羽;最后利用密度聚類算法(DBSCAN)統計出毛羽根數及每根毛羽的長度,并將檢測結果與目測法、基準線法進行比較。
用CCD相機采集紗線圖片時,由于毛羽在空間中分布位置的不同以及毛羽彎曲等因素影響,在采集過程中會造成部分毛羽亮度較暗以及在單根毛羽上亮度值出現差異,且在采集過程中難免會出現噪聲。為不受噪聲的影響并完整地提取出毛羽,需要對毛羽圖像進行一系列的處理,處理流程框圖如圖1所示。

圖1 毛羽檢測方法框圖
Fig.1 Block diagram of hairiness detection method
由于紗線在采集過程中纖維較細毛羽與背景紋理之間相似度較高,如果直接進行毛羽提取,很難獲取完整的毛羽。為提取出完整的毛羽信息,本文采用雙邊濾波法對采集的紗線圖像進行處理。在利用雙邊濾波處理紗線毛羽圖像過程中,在非毛羽及邊緣部分,由于噪聲基本都是孤立的點,中心點的像素值由鄰域內的像素值確定,如中心點鄰域內像素值較小,而中心像素值較大,經處理后中心像素值則會變小。當雙邊濾波窗口掃描到紗線邊緣或者紗線毛羽時,在窗口內大部分值與中心點的像素值相似,在這種情況下中心點的像素值基本維持不變;因此,紗線毛羽經過雙邊濾波后不僅去除了圖像中的噪聲,而且相對增強了毛羽特征。
毛羽圖像經過預處理后,需要分割紗線條干及毛羽,而部分毛羽像素值與背景比較接近,在分割時閾值選擇的不合適會導致毛羽容易被分割大范圍斷開,因此需要一種能夠獲取清晰準確毛羽特征的分割算法。本文采用最大熵閾值[6-7]進行分割。該方法根據每幅紗線圖像的灰度特性,計算出合適的閾值。
針對1幅灰度圖像,其灰度級是區間[0,255]上的隨機變量,則p(i)為灰度值等于i時概率密度函數,因此,根據熵的定義可以得到圖像的熵:

(1)
式中,b為常數。
輸入初始閾值T(0≤T≤255,用閾值T將圖像分為2個區域,灰度值小于閾值T的為背景區域,灰度值大于T的為目標區域。背景區域和目標區域的像素累計概率分別為
(2)
(3)
且
P0(T)+P1(255-T)=1
(4)
將式(2)、(3)分別代入式(1)中可計算出該閾值下背景區域(H0)和目標區域的熵值(H1):
(5)
(6)
根據式(5)、(6)可計算出在該閾值下圖像的總熵:
H=H0+H1
(7)
利用式(1)~(7)可計算出所有分割閾值下的圖像總熵,找到最大的熵,此時最大熵對應的分割閾值為最終的閾值,大于此閾值的為目標,小于此閾值的為背景,進而實現紗線的分割。
經過多次實驗驗證,最大熵閾值能夠較為完整地提取出紗線毛羽;但在一些紗線圖像中會出現小部分毛羽像素值與背景極其接近,因此在閾值時也會造成毛羽斷開,但都屬于小范圍斷開。
本文研究對象是紗線的毛羽,紗線條干是冗余的,需剔除掉。去除條干的方法是利用開運算(卷積核大小為5×5)處理經過最大熵閾值處理后的紗線圖,從而提取出紗線條干。再對紗線條干進行膨脹(卷積核大小為5×5),膨脹的目的是去除紗線條干周圍無害細小毛羽對結果造成的影響,然后用閾值后的圖像減去膨脹后的紗線條干,得到紗線毛羽。
毛羽的長度計算是先計算出每根毛羽在圖像中所占的像素點的個數,根據得到的像素點個數以及每個像素點的大小從而獲得毛羽的近似長度,因此,獲得毛羽長度前需對毛羽進行細化。使用的細化算法為Hilditch算法[8],經過細化處理可提取出紗線毛羽骨架,由于提取的紗線毛羽骨架寬度為單像素,因此可用于計算毛羽長度。
紗線毛羽經細化后下一步就是計算毛羽根數及毛羽長度。本文通過分析毛羽的特征,采用密度聚類算法(DBSCAN)[9-10]對細化后的毛羽進行處理,以此獲得毛羽根數及長度。利用DBSCAN聚類算法統計毛羽長度及根數的優勢在于不受小范圍毛羽斷開的影響,且能夠同時統計出毛羽根數以及每根毛羽的長度。此外使用此算法統計毛羽長度可避免受到毛羽彎曲、殘留噪聲點的影響,但如果毛羽閾值后斷開范圍過大,則該算法不適用。
DBSCAN聚類算法的具體步驟如下。
輸入:樣本集N={x1,x2,,xm};領域參數E為樣本xi的鄰域半徑;M為鄰域內樣本最小點個數。
輸出:所劃分類個數以及每一類的大小。
1)從樣本集中選取一個未被處理的樣本xi。
2)檢查樣本xi的領域E,在其領域內找到樣本集N(xi)。
3)如果樣本集內樣本的個數滿足|N(xi|≥M,則創建一個樣本xi為核心對象的類,并將xi鄰域內的點加入到該類中。如果|N(xi|≤M,則將xi標記為噪聲。
4)檢測N(xi內未被標記的樣本,直到檢測到邊界點結束。
5)循環步驟2)、3)、4),直到檢測完樣本。
DBSCAN聚類算法完成后,得到類的個數及每個類別像素點的個數。類的個數為圖像中毛羽的根數。計算每根毛羽長度部分與毛羽骨架跟蹤算法計算毛羽長度部分相同[11],根據每類像素點個數(每類像素個數加5,消除條干膨脹帶來的誤差)乘以每個像素點對應實際長度,可計算出毛羽的長度。
實驗平臺:實驗中紗線毛羽采集系統所使用的攝像機是BASLER公司的acA1300-30gm面陣相機;采用LED光源;導紗裝置以及配備Intel Core i5-4460 3.2 GHz CPU,8 GB主內存,NVIDIA GeForce GT 705顯卡和Windows 8.1操作系統的電腦。要獲取效果較好的紗線圖像,在采集前需要對曝光時間、圖像分辨率等參數進行設置。在實驗中曝光設置時間為1/800 s,圖像分辨率為256像素×256像素。在完成相機參數調整后還需要進行相機單位標定。本文利用的標定板是艾菲特光電技術有限公司的AFT-MCT-HC100的AFTvision機器視覺標定板。經標定后圖中像素與實際距離對應的關系為:1像素=0.024 mm。
參數分析:在毛羽統計中主要會受到2種情況的影響。首先是部分紗線毛羽在閾值時可能會被分割為背景,造成毛羽小范圍斷開,影響毛羽根數及長度統計(如圖2(a)所示);另一種情況是2根毛羽相距比較近,在統計毛羽時可能會誤統計為1根(如圖2(b)所示)。在本文中利用了DBSCAN聚類算法來消除這種誤差,但需要設置合適的鄰域參數{E,M},實驗中先使M值保持不變,改變鄰域半徑E值。然后使E值保持不變,改變M值。以便于選擇出合適的參數值。結果如表1所示。

圖2 影響毛羽統計的情況
Fig.2 Affecting situation of hairy statistics. (a) Hairiness disconnection; (b) Adjacent hairiness
從表1可看出,當領域參數設置過小時容易將斷開的毛羽分為多根毛羽,如表中鄰域半徑、鄰域內樣本最小點個數分別為E=0~3.0,M=4~6和E=6,M=0~3.0時,將圖2(a)中斷開的毛羽分成了多根。當鄰域參數設置過大時容易將距離接近的毛羽統計為1根毛羽。根據多次實驗,本文中選擇鄰域半徑E=6,鄰域內樣本最小點個數M=6。經過多次實驗證明,該參數能夠較精確統計出毛羽根數。
表1 DBSCAN聚類統計毛羽根數
Tab.1 DBSCAN clustering statistics number of hairs

圖序領域參數EM不同長度(mm)毛羽根數123456<1圖2(a)0.0~3.04~630000043.1~6.04~621000036.1~8.04~621000043.1~6.01~320000053.1~6.07~92100002圖2(b)0.0~3.04~610010033.1~6.04~600001036.1~8.04~610010033.1~6.01~310010033.1~6.07~91001002
注:E為樣本鄰域半徑,M為鄰域內樣本最小點個數。過小的毛羽未統計。
樣本選擇:實驗在樣品中選取7段紗線,每段紗線連續采集相片100張,所對應的每張圖片的實際長度為6.144 mm×6.144 mm。100張圖片對應的長度為61.44 cm,可以近似認為是61 cm。對樣本檢測結果如表2所示。
表2 毛羽長度分類統計
Tab.2 Classification of hairiness length

樣本序號不同長度(mm)毛羽根數1234561#123351512312#8345209423#158603010514#140502018535#143281911746#15147116427#13140251052平均值132.743.62010.94.72.1

為驗證本文算法的優勢以及算法計算結果的準確性,選取了3個紗線毛羽圖像樣本(見圖3,檢測目標為白色箭頭標記的毛羽)作為檢測樣本,分別利用本文所提的算法(見圖4)及基準線法(見圖5)進行檢測,并將這2種算法的檢測結果與目測法的檢測結果進行比較。目測法是通過目測、投影放大和顯微放大攝影獲取紗線毛羽形態,然后測量紗線毛羽長度、根數等指標[13]。比較結果如表3所示。

圖3 紗線原圖
Fig.3 Original image of yarn. (a) Sample 1; (b) Sample 2; (c) Sample 3

圖4 本文中算法提取的毛羽
Fig.4 Hairiness extracted by proposed algorithm. (a) Sample 1; (b) Sample 2; (c) Sample 3

圖5 基準線法(每格0.5 mm)
Fig.5 Baseline method (0.5 mm per grid). (a) Sample 1; (b) Sample 2; (c) Sample 3
表3 本文算法與基準線法和目測法比較Tab.3 Comparison of algorithm and baseline method,visual method

樣本本文算法計算的毛羽長度/mm基準線法目測法測量長度/mm相對差/%測量長度/mm相對差/%1.8241.082.41.81.33樣本11.5121.051.21.50.801.0800.5116.01.11.820.6000.520.00.714.291.9201.528.02.04.00樣本21.8481.523.21.92.741.2001.020.01.20.001.1520.5130.41.24.003.3362.066.83.41.88樣本32.5442.027.22.62.152.0881.0108.82.10.571.0560.5111.21.05.60
注:相對差=|E-B|/B×100%。其中E為采用本文算法所測結果,B為采用基準線法或目測法所測結果。
從表3與圖4、5可以看出,基于基準線法統計毛羽長度的方法存在一個明顯的缺陷,對于毛羽彎曲的情況,該方法不能精確地計算出毛羽的長度,而本文方法通過統計每根毛羽在圖像中所占的像素數目獲取毛羽長度,可解決毛羽彎曲時其長度計算不準確的問題。從實驗結果可以看出,與基于基準線的算法相比,本文的算法相對增長較大,特別針對彎曲幅度較大的毛羽,最大達到130.4%。與目測法相比,表3中除1根毛羽誤差較大外,其余普遍較小,結果與目測法接近。因此可看出本文算法能夠更精確、真實地計算出毛羽的長度。特別是針對彎曲幅度較大的毛羽,有很好的適用性。
本文提出一種基于最大熵與DBSCAN相融合的毛羽檢測方法。首先利用圖像處理技術,對紗線圖像進行濾波、閾值、細化提取出毛羽,最后利用DBSCAN聚類算法計算出毛羽根數及毛羽長度。對得到的結果與目測法和基準線法進行比較,結果顯示,本文算法能夠較為準確地計算出毛羽的根數以及毛羽的長度,誤差較小。同時也計算出了毛羽H值,并與USTER公報應用手冊進行比較,計算所得的毛羽指標相對穩定。實驗結果證明本文算法可以有效地獲取毛羽長度及根數。