龔 平,梁 菁
(1.梧州學院 電子與信息工程學院,廣西 梧州 543002;2.梧州學院 大數(shù)據(jù)與軟件工程學院,廣西 梧州 543002)
長度是纖維的重要形態(tài)參數(shù)之一,也是評價纖維品質(zhì)與特性的重要指標之一,直接關(guān)系其加工性能和使用價值。隨著纖維測量技術(shù)的發(fā)展,結(jié)合顯微鏡成像并應(yīng)用計算機圖像處理的方法進行纖維長度的測量已經(jīng)越來越受到關(guān)注。但是,由于纖維形態(tài)不一、細小、柔軟且容易絮聚,給基于圖像處理的纖維長度自動測量帶來了巨大的困難和挑戰(zhàn)。點擊測量依靠人工用鼠標分段點擊纖維的不同部位,計算機通過計算各點間線段的像素數(shù)量自動計算纖維長度和寬度,然后再進行統(tǒng)計,每像素代表的實際尺寸用測微尺校準,該方法測量準確,但測量速度較慢[1]。文獻[2]采取人工將棉纖維單根化并進行圖像采集,保證獲取的圖像中纖維無交叉,再通過對圖像二值化、去除噪聲、補斷、細化和剪枝等處理,統(tǒng)計每根纖維的像素個數(shù),實現(xiàn)測量棉纖維長度,該方法可提高棉纖維長度分布測量的準確性與可靠性,但測量速度較慢。
為提高纖維長度測量的效率,針對在顯微鏡下獲取的無交叉的植物纖維圖像,本研究提出一種自動測量長度的方法。首先對采集到的纖維圖像進行背景和雜質(zhì)分割,得到待測量的纖維主體;然后對纖維進行骨架化處理;最后統(tǒng)計像素個數(shù)并通過校準的像素參數(shù)計算纖維長度。
針對采集到的無交叉的植物纖維圖像,本研究自動測量纖維長度的方法流程見圖1。

圖1 自動測量纖維長度方法的流程
先將采集到的無交叉植物纖維圖像轉(zhuǎn)換為灰度圖,再進行Canny邊緣檢測[3-4],然后提取檢測得到的各輪廓。步驟如下。
Step 1:使用高斯濾波器平滑圖像,降低噪聲;
Step 2:使用一階的梯度算子計算圖像中每個像素點的梯度;
Step 3:對梯度值應(yīng)用非極大值抑制(Non-Maximum Suppression),使局部灰度變化大的像素保留下來;
Step 4:應(yīng)用雙閾值(Double-Threshold)篩選和連接邊緣。設(shè)置高閾值和低閾值的比例為3∶1。梯度值高于高閾值的像素點定義為強邊緣像素,保留該像素;刪除梯度值低于低閾值的像素點。對于周圍無強邊緣像素的像素點,從梯度值介于雙閾值之間的像素點中進行選擇,使得邊緣盡可能的閉合。
得到圖像邊緣后,借助OpenCV中Imgproc.findContours()方法得到其輪廓。
由于玻片間有氣泡、載玻片上有污點、纖維有細小部分等原因,采集到的纖維圖像會存在雜質(zhì),雜質(zhì)也會被檢測到輪廓(如圖2所示),因此需要對上述過程得到的各輪廓進行篩選。

a.含有氣泡和污點的纖維圖像;b.含有毛細纖維和污點的圖像;c.對a提取的輪廓;d.對a提取的輪廓
針對每一個輪廓,本方法通過OpenCV的Imgproc.minAreaRect()方法得到包含該輪廓最小面積的斜矩形,再計算每一個矩形的面積。大量實驗表明,相對于有效的待檢測纖維而言,“雜質(zhì)”具有較小的面積,可設(shè)置閾值移除小面積矩形對應(yīng)的輪廓。此外,有效的待檢測纖維應(yīng)具有一定的長度,即其對應(yīng)的斜矩陣應(yīng)具有較大的長寬比例。基于對大量類似于圖2-c,d的輪廓對應(yīng)矩形面積值的數(shù)據(jù)統(tǒng)計,本研究方法設(shè)置閾值為Smax×p,其中Smax表示求取的最大的矩形面積值,p取值為0.05~0.15時準確率較高;設(shè)置剔除長寬比大于4∶3的矩形對應(yīng)的輪廓。
對圖2-c,d中輪廓剔除“雜質(zhì)”后得到如圖3所示的待測纖維的輪廓。

a.剔除氣泡保留的纖維輪廓;b.剔除細小纖維保留的纖維輪廓
對纖維主體進行骨架化處理前,先對其進行基本的腐蝕和膨脹處理,目的是使輪廓中的斷點得以連續(xù)、使輪廓內(nèi)的部分得以填充。對圖3中輪廓進行腐蝕、膨脹后的效果如圖4所示。

a.圖3-a的腐蝕膨脹結(jié)果;b.圖3-b的腐蝕膨脹結(jié)果
纖維長度自動測量的關(guān)鍵是細化纖維得到單像素寬度的骨架。針對不同形態(tài)的纖維,一些經(jīng)典的細化算法得到的纖維骨骼會有不同程度的毛刺。本研究采用牟少敏[5]等人提出的改進的細化算法,該算法在Zhang[6]細化算法的基礎(chǔ)上,增加了3類刪除像素的條件,能夠較好的保持骨骼和剔除毛刺。
設(shè)當前正在處理的像素點為p,對其八鄰域編號為p1~p8,如圖5所示。

圖5 像素點p及八鄰域像素編號
細化算法具體描述為:
算法 Thinning(I,i)
輸入:待細化的二值圖像I
輸出:單像素寬度的骨架圖像Y,遍歷參數(shù)i
Step1.遍歷訪問圖像中I所有的像素點p
Step2.如果Ip為0則Yp=0
否則,進行Step3-Step9
Step3.計算b=p1+p2+p3+p4+p5+p6+p7+p8
Step4.考察八鄰域中相鄰像素的關(guān)系:
t1=(p2 == 0 && p3 == 1)?1:0 t2=(p3 == 0 && p4 == 1)?1:0
t3=(p4 == 0 && p5 == 1)?1:0 t4=(p5 == 0 && p6 == 1)?1:0
t5=(p6 == 0 && p7 == 1)?1:0 t6=(p7 == 0 && p8 == 1)?1:0
t7=(p8 == 0 && p1 == 1)?1:0 t8=(p1 == 0 && p2 == 1)?1:0
Step5.計算a=t1+t2+t3+t4+t5+t6+t7+t8
Step6.計算 m1 = i==1?p2×p4×p6:p2×p4×p8
m2 = i==1?p4×p6×p8:p2×p6×p8
Step7.計算mp=p2+p3×2+p4×4+p5×8+p6×16+p7×32+p8×64+p1×128
Step8.進行布爾計算 flag=(mp==65||mp==5||mp==20||mp==80||mp==13||mp==22||mp==52||mp==133||mp==141||mp==54)
Step9.如果(b >= 2 && b <= 6)&&(a == 1||flag)&&(m1 == 0 && m2 == 0)為true,則Yp=0
將腐蝕、膨脹后的結(jié)果進行二值化,使用上述算法進行纖維細化得到如圖6所示的纖維骨架。

a.含有氣泡各污點的纖維圖像;b.含有細小纖維和污點的圖像
細化后得到了纖維的單像素寬度的骨架,有p、p1~p8位置上的像素值取值非0即1。
將骨架圖像中的像素分為三類進行處理:
(1)非骨架區(qū)域的點,有p+p1+p2+…+p8=0;
(2)骨架的端點(起點或終點),有p+p1+p2+…+p8=2;
(3)骨架中的銜接點,有p+p1+p2+…+p8≥3(對于不存在毛刺或分叉的骨架,有p+p1+p2+…+p8=3)。
(4)在骨架圖像中首先尋找骨架的端點,記為s,然后將其八鄰域中訪問值為1的像素記為q,同時將已訪問過的s記為0;再以q作為新的起點,記為s,重復(fù)上述操作,直至訪問到骨架的另一個端點。此過程中記錄像素鏈中當前起點像素和后繼像素的相鄰關(guān)系,即記錄出現(xiàn)圖5所示p1-p、p3-p、p5-p或p7-p相鄰的次數(shù)k1,記錄像素鏈中出現(xiàn)p2-p、p6-p相鄰的次數(shù)k2,記錄像素鏈中出現(xiàn)p4-p、p8-p相鄰的次數(shù)k3。若該條纖維骨架的像素個數(shù)n,有n=k1+k2+k3-1。

a.含有氣泡各污點的纖維圖像;b.含有細小纖維和污點的圖像
不同的圖像采集系統(tǒng)觀測到的纖維圖像尺寸會有不同。在計算纖維長度時需要先行標定當前環(huán)境下的單位長度。在特定的物鏡倍數(shù)下,采集標尺圖像(如圖8-a,b)和待測纖維圖像,使二者的圖像尺寸一致。為減少誤差,本方法并不直接標定單個像素的長度,而是記錄1 mm對應(yīng)在水平方向、垂直方向各占多少像素,再按比例計算得到纖維的長度。

a.水平方向1 mm標尺成像;b.垂直方向1 mm標尺成像
假設(shè)圖像寬度為w,高度為h,1 mm在水平方向長度為tw個像素,在垂直方向為th個像素。對于相同標準下采集的尺寸為w*h的待測纖維圖像,其中的纖維長度len通過式(1)進行計算。
(1)
測試不同形態(tài)的無交叉纖維圖像,驗證本方法的魯棒性。試驗結(jié)果表明,本方法對背景不復(fù)雜的無交叉纖維能以較高的準確率得到纖維的骨架,從而計算得到纖維長度(如圖9-a,b所示);但存在有一定程度的漏檢與誤檢(如圖9-c所示),結(jié)合人工刪除誤檢的纖維骨架、點擊增加漏檢的纖維路徑,效果會更好。

a.準確提取無交叉的機械闊葉木槳纖維;b.準確提取無交叉的棉纖維;c.漏檢右上角有效纖維
經(jīng)典的人工點擊纖維路徑結(jié)合計算機逐段計算測量的人機交互方法具有較高的準確性和可靠性,但速度較慢,對人工判斷有較大的依賴。本研究自動測量方法計算與人機交互逐段測量方法的部分計算結(jié)果對比見表1。

表1 自動測量與人機交互逐段測量結(jié)果的對比 mm
不考慮經(jīng)典人機交互測量的誤差,從表1中可以看出,本研究自動測量的方法在部分結(jié)果上與人機交互測量結(jié)果平均有0.015 06的差異,此差異主要來自于對纖維骨架像素的選擇。從時間效率方面來看,該方法在速度上明顯優(yōu)于人機交互逐段測量的方法。
本研究提出并實現(xiàn)了一種基于圖像處理技術(shù)的無交叉纖維自動測量長度的方法。測試結(jié)果表明,該方法能夠針對不同形態(tài)的無交叉纖維圖像實現(xiàn)長度的自動測量。后續(xù)改進的思路:一方面嘗試自適應(yīng)的閾值算法,以提高纖維主體提取的準確性;另一方面改進纖維骨架的細化算法,以便更有效地處理單像素骨架中的毛刺。