汪依帆,汪存燕
(1.上海市學生事務中心 信息技術部,上海 200235; 2.上海應用技術學院 計算機學院,上海 201418)
對于很多紡織品來說,常需要檢測其中纖維的長度、紋理、截面面積、卷曲程度等信息來判斷紡織品的質(zhì)量.長期以來,對于纖維的識別主要采用手感目測法、燃燒法、顯微鏡觀察法、化學溶解法、藥品著色法等.此類方法都是人工參與的,所以人為因素較大,準確率不高.傳統(tǒng)的方法已不能滿足現(xiàn)代纖維檢測和識別的要求.隨著計算機圖像學理論和技術的不斷發(fā)展,數(shù)字圖像分析系統(tǒng)已逐漸滲透入紡織行業(yè),用計算機代替?zhèn)鹘y(tǒng)的手工勞動是必然趨勢.本文作者提出了一種在復雜背景下的纖維提取、識別、匹配的方法.
本實驗的樣本圖片為在顯微鏡下拍攝的纖維圖片,纖維線條錯綜復雜,粗細不一.在圖像采集過程中,由于多種因素的影響使得圖像與原始場景之間產(chǎn)生某些差異,如光照不一,拍攝時的抖動等都會造成圖像模糊,細節(jié)部分不明顯,并引入較多的噪聲.在進行識別前,先進行圖像的歸一化,并使用中通濾波法進行了圖像平滑.
圖像二值化處理就是將灰度圖像或彩色圖像轉(zhuǎn)化為二值圖像(黑、白)的過程.對于纖維圖像進行二值化就是將圖像分為前景和背景,此方法多利用圖像的直方圖進行二值化.可以利用雙峰法、最大熵閾值分割法、最大類間方差法(OTSU算法)[1].此類方法的最大缺點就是很難找出一個最佳的閾值點,對于多張照片采用同一種方法,效果好壞不一,同時計算量也比較大.
數(shù)字形態(tài)學是一種非線性濾波方法,采用形態(tài)和差運算,即膨脹和腐蝕.灰度圖像的腐蝕和膨脹過程可直接從圖像和結(jié)構元素的灰度級函數(shù)計算而得.與二值形態(tài)學相同,灰值形態(tài)學也由腐蝕和膨脹得到灰值形態(tài)學的二級運行——開閉運算.利用TOP-HAT變換,圖像的灰度級較低,圖像較暗,通過加大圖像的亮度,再采用閾值變換,將纖維的圖像提取出后,細化后最終得到識別圖像[2].
鏈碼是二值圖像常用的表示方法.用整數(shù)描述邊緣相鄰像素間的轉(zhuǎn)動角度得到物體邊界的方向鏈碼.根據(jù)鏈碼值和像素間距離進行序列點插值、平滑、擬合后得到鏈碼的曲線描述.該算法對像素間的位置關系用確定的碼值來表示,避免了通常的二維矩陣結(jié)構,以較少的數(shù)據(jù)量存儲圖形中的位置以及形狀信息.從而減少了計算量、降低了信息冗余、節(jié)約了存儲空間.
邊緣檢測是標示出數(shù)字圖像中亮度等屬性變化明顯的點,以勾勒出圖像的邊緣.采用求方差的方法進行邊緣檢測[3].具體方法是:
(1) 利用一個3×3的滑動窗口在圖像上滑動,求出中心點和周圍8個點的方差,作為矩陣中對應位置的值,構造一個新的矩陣.
(2) 首先從左到右橫向掃描,找出掃描過程中的相對峰值點(即大于它左右兩個點的方差值),如果此點與它左邊的谷值點的距離大于設定的閾值,則將此點置為邊界點,置為1(白色),如果小于閾值,記錄下對應位置的與左邊谷值點的距離,放入backup矩陣中,以備以后第二次掃描.用同樣的方法進行縱向掃描.
(3) 用相同的方法在斜線方向進行掃描,如果某點與它斜線方向的谷值點的距離大于第二步記錄下的backup值,則修改此點的backup值.
(4) 對backup矩陣進行掃描,如果它周圍的8個點中有白點的話,將此點置為白色,同時修改其backup值為0.
(5) 去除孤立的黑點.
細化是纖維圖像預處理中的重要環(huán)節(jié),主要是去除不必要的邊緣信息,便于提取細節(jié)特征,提高纖維圖像的處理速度.一種好的細化算法應該滿足下列條件:收斂性、連通性、拓撲性、保持性、細化性、中軸性和快速性.利用8鄰域的查表細化算法對圖像進行細化.
在細化前圖像已經(jīng)進行了二值化,即將纖維邊界與圖像中的其他部分分離,白色代表纖維邊緣,黑色代表其余部分,將纖維圖像從灰度圖像轉(zhuǎn)換為二值圖像(0代表黑色,1代表白色)根據(jù)以下規(guī)則細化:內(nèi)部點不能刪除,即如果一個白點的上、下、左、右都是白點的話,此點不能刪.孤立點不能刪除.直線斷點不能刪除.如果一個點是邊界點,去掉此點后,如果連通分量不增加,則此點可以刪除.
根據(jù)上述判據(jù),事先做出一張表,從0到255共有256個元素,每個元素要么是0,要么是1.根據(jù)某點(要處理的是白色點)的8個鄰域點計算出的索引值查表,若查得表中的元素是1,則表示該點可刪,否則保留.
(1) 按順序計算用于查表的索引值:S=P1×20+P2×21+P3×22+P4×23+P6×25+P7×26+P8×27+P9×28.
其中P1~P8分別取值為0或1,則有256種索引與數(shù)值0到255一一對應.
(2) 根據(jù)上述判據(jù)制作一張查找表,實際上是一個1×256的一維矩陣[4],元素值為0表示該組合的中心點應該保留,1表示應該刪除,數(shù)組定義如下:
looktable[256]=(0,1,1,0,1,1,0,0,1,0,0,0,1,1,0,0,1,1,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,1,0,0,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,0,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1,0,1,1,1,1,1,1,1,0,0,0,0,1,1,0,0,0,1,0,0,0,1,0,0,0,0,1,1,0,0,1,1).
(3) 從上到下,從左到右,對二值圖像進行掃描,對每一個白點做如下處理:先判斷該白點的上下鄰居,如果都是白點,則該點不做處理,另外,如果某個白點被刪除了,那么跳過它的下鄰居,處理下一個點,否則根據(jù)8鄰域編碼計算索引值,此索引值就是數(shù)組元素的下標,找到對應下標所對應的元素,查看是否刪除,如果該白點被刪除了,那么跳過它的右鄰域,處理下一個點.
(4) 從左到右,從上到下,對二值圖像進行第二次掃描,對每一個白點做類似處理:先判斷該白點的左右鄰居,如果都是白點,則該點不做處理,另外,如果某個白點被刪除了,那么跳過它的右鄰居,處理下一個點;否則計算8鄰域編碼索引值,看是否刪除,如果該白點被刪除了,那么跳過它的下鄰居,處理下一個點.
(5) 如果本次循環(huán)有白點被刪除,則跳到(3),否則終止循環(huán),細化結(jié)束.
纖維原圖,二值化并進行邊緣檢測的纖維圖,和細化后的圖像如圖1所示.
圖1 原圖、二值化并進行邊緣檢測的圖和細化后圖的對比
3.3.1 去毛刺,刪除交叉點
在處理之前,先要刪除孤立的白點.首先尋找出一條纖維的端點,判斷的條件是在一個3×3的小矩陣中,如果有且只有2個點是白點,且其中有一個白點是在矩陣的中心位置,則這個中心位置的白點就是一條纖維的起點.從纖維的起點出發(fā),依次搜索纖維的每一個點所在的位置,計算出纖維的長度,如果小于某一閾值(作者提出的閾值是25),則判定此條纖維是毛刺,刪除這條纖維[5].
刪除交叉點的方法是:依次掃描圖像的每個像素,如果是白點,檢測它周圍8個點,如果大于等于3個白點,則將此點的上、下、左、右4個點全部置為黑色.部分細節(jié)的效果如圖2所示.
圖2 纖維圖像刪除交叉點
3.3.2 刪除拐點
刪除拐點是為以后的纖維識別做準備的.由于先前細化后,不會在一個3×3的矩陣出現(xiàn)4個白點的情況.所以在查找一條連通纖維的過程中,可以先找到纖維的一個端點,記錄下該點的位置,并將其置為黑色;找出與其連通的點,作為纖維的新端點,記錄下位置,置為黑色,依次類推,直到纖維的另外一個端點.通過余弦定律來計算曲率.具體的做法是在纖維上選擇4點,其中2點是兩個端點,設為A和B,由于先前的去毛刺已經(jīng)去掉了一些很短的纖維,所以另外兩點取的是從端點出發(fā)的第8個點,設為C和D,計算直線AC和直線BD的角度,如果小于某個閾值(設為150°),則將C、D兩點置為黑色,C、D再各向中間移動一個點,繼續(xù)計算角度.部分細節(jié)的效果如圖3所示.
圖3 纖維圖像刪除拐點
3.3.3 補斷并標記纖維
先前的刪除交叉點和刪除拐點都是為后面纖維識別做準備的,原先連接起來的纖維已經(jīng)不再連通了.補斷就是要把屬于同一條纖維邊緣的線段連起來.綜合考慮了各線段之間的距離和角度,選擇可能性最大的線段進行配對,并用線性插值的方法進行補點[6].補斷后需重新整理纖維條數(shù),并用不同的顏色標記不同的纖維,效果見圖4.
圖4 纖維識別的結(jié)果
本文作者提出了一種在復雜背景下的纖維識別的方法,其考慮了多種因素的影響,力爭把不利因素通過各種方法加以解決.下一步的工作是要提高纖維識別的正確性,并按課題的要求計算出每條纖維的平均寬度.同時,對于拍攝效果不佳的圖像,如何加以預處理,使得圖像更容易被處理,也是接下去需要研究的方向.
參考文獻:
[1] 陳濱,田啟川.改進的快速Otsu自適應分割算法及其應用[J].計算機應用研究,2012,29(4):1572-1574.
[2] 馬健,曾文華,陳維國.灰值形態(tài)學在動物纖維圖像處理中的應用[J].紡織學報,2004,25(5):42-45.
[3] 周德龍,潘泉,張洪才.圖像模糊邊緣檢測的改進算法[J].中國圖像圖形學報,2001,6(4):353-358.
[4] 王榮武.基于圖像處理技術的苧麻和棉纖維縱向全自動識別系統(tǒng)[D].上海:東華大學,2007.
[5] 王崇文,王偉,王廷才等.指紋圖像后處理[J].計算機工程與設計,2002,23(9):35-38.
[6] 朱長武,戴上平.基于指紋圖像斷裂紋線的修復方法[J].電子測量技術,2007,30(4):97-99.