崔展豪,劉 劍
(上海應(yīng)用技術(shù)大學 電氣與電子工程學院,上海 201418)
緯紗傾斜或彎曲嚴重影響布料成品質(zhì)量,因此緯斜檢測技術(shù)在紡織品生產(chǎn)中越來越受到重視。當前,緯斜檢測正由第二代的光電檢測法向第三代的基于圖像處理的方法發(fā)展[1-2]。相比光電檢測方法,基于圖像處理的檢測技術(shù)具有更高的準確率與適應(yīng)性,正逐漸成為國內(nèi)外紡織行業(yè)整緯設(shè)備的主流方向。
目前,基于圖像處理技術(shù)的檢測方法主要包括快速傅立葉變換(FFT,fast fourier transform)法、Hough變換法和Radon變換法等方法[3-6]。文獻[7]運用傅里葉變換將圖像轉(zhuǎn)換為突出顯示強度變化最大的區(qū)域的形式,檢測出由于磨損處理或構(gòu)造而產(chǎn)生的紋理細微差異。文獻[8]等一批學者對織物圖像進行了傅立葉變換,把這些織物的圖像從在時間域分析轉(zhuǎn)換為在頻率域進行分析。利用FFT變換法分析出在織物圖像中能量頻譜線曲線中的峰值點,求得在織物圖像中的經(jīng)紗和緯紡布的密度,并與人工檢測做了對比,結(jié)果表明其算法對三種類型的織物具有良好是適用性。文獻[9]率先采用投影離散傅里葉變換(DFT,discrete fourier transform)及多角度投影分析方法對織物圖像能量功率譜中兩次循環(huán)多角度旋轉(zhuǎn)投影根據(jù)其中心區(qū)域投影的最大值,檢測出織物圖像傾斜角度,測量誤差在0.5度以內(nèi)。文獻[10]提出了基于霍夫變換和快速傅里葉變換,對進行的織物圖像的頻譜圖進行霍夫變換而直接可得織物緯紗、經(jīng)紗和斜紋方向信息。文獻[5]于2007年采用Radon變換的算法,計算了經(jīng)緯紗密度、自動化方式解析織物組織屬性與檢測織物緯斜方向,該文章使用小波變換對織物的圖片結(jié)構(gòu)進行了分解和重構(gòu),利用 Radon 變換算法對織物進行了傾斜程度的檢測和糾正,計算出織物結(jié)構(gòu)和屬性的自動識別及經(jīng)紗、緯紗密度的計算。文獻[11]提出基于Radon變換將織物緯斜檢測問題轉(zhuǎn)化為峰值搜索問題,采用全1矩陣使方差-偏斜特征曲線輸出為單峰曲線,檢測誤差在0.15°以內(nèi)。
在實際應(yīng)用中,DFT變換法可以利用其旋轉(zhuǎn)不變性精確標出傾斜程度,但由于運算量較大,在部分程度會限制了其在數(shù)字信號處理上的使用;Hough變換法容易由于原始圖像中存在較多的干擾信息,導(dǎo)致算法不能精確的提取表示緯斜方向的直線;Radon變換受到計算機進行從笛卡爾坐標系到極坐標轉(zhuǎn)換過程中插值誤差的影響檢測直線的精確度,和計算直線積分時受到硬件隨機讀取性能的限制。
因此,在保證緯斜檢測精度的前提下,盡可能縮短檢測時間,滿足工程實際應(yīng)用需求,已經(jīng)成為當前緯斜圖像檢測急需解決的關(guān)鍵問題。本文提出一種結(jié)合Hough變換和快速傅里葉變換(FFT)多投影精測方法,運用Sobel邊緣方向和骨架檢測等圖像處理手段的織物緯紗傾斜快速檢測算法。
按標準生產(chǎn)的織物中經(jīng)紗和緯紗交織成有一定規(guī)律和方向的紋理。而已經(jīng)加工編織好的織物由于經(jīng)過高溫漂洗和人工染色等各種特殊原因,通常它們都會出現(xiàn)由于編織兩端所拉伸而導(dǎo)致承受力不均勻等問題,而導(dǎo)致其經(jīng)緯紗紋理的無規(guī)律彎曲的傾斜情況。
提出的新緯斜快速檢測算法原理框架如圖1所示。首先通過傅里葉變換對圖像進行頻域濾波,然后使用Sobel邊緣方向檢測的算子對圖像進行卷積以得到邊緣方向圖,接著用形態(tài)學濾波得到骨干圖,最后進行Hough變化和多投影分析得到織物圖像的緯斜角度。具體步驟如下:
圖1 緯斜檢測快速算法流程圖
1)讀取圖像轉(zhuǎn)化為灰度圖像顯示,對灰度圖像使用理想高通濾波器進行頻域濾波,增強其緯斜特征;
2)使用Sobel算子進行卷積,通過對邊緣特征檢測來增強圖像紋理;
3)進行形態(tài)學骨架化處理,消除干擾信息簡化圖像增強特征,提取緯斜紋路的中心線;
4)進行Hough變換直線檢測,初步測出緯斜方向,得到初測角度;
5)在初測角度±1°范圍內(nèi),以0.1°步長進行旋轉(zhuǎn)投影,測出準確的緯斜角度。
織物圖像可以視作一類具有特別排列紋理的圖像,其最顯著的特征是經(jīng)、緯紗以特定方式的周期性排列。則圖像信息可以視為由兩個變量x,y構(gòu)成的離散二元函數(shù)f(x,y)。
通過相機對織物紋理進行拍照,并將圖像裁剪并轉(zhuǎn)化為大小合適的灰度圖像。對圖像進行傅里葉變換,如公式(1)所示。
(1)
式中,u,x= 0,1,2,…;x,y為時域變量;u,v為頻域變量。
通過分析傅里葉變換得到頻譜能量圖,發(fā)現(xiàn)其能量分布與織物圖像的經(jīng)緯紗紋路走向垂直[12]。其中大部分區(qū)域都是灰度變化緩慢的區(qū)域,即織物圖像中背景和緯紗主干部分;只有一小部分是灰度變化劇烈的區(qū)域,即包含紋路的邊緣,表示紋理的方向。
因此,在圖像傅里葉變換頻譜能量圖中,設(shè)置理想高通濾波器可以濾除作為干擾信息的背景部分的低頻信息部分,保留作為表達織物經(jīng)緯紗紋路部分的高頻信息部分。由圖2可以看出,頻譜圖中高頻信息部分(即圖中灰度值較高,表現(xiàn)為較亮的區(qū)域)一般分布在圖片的四周角落,而低頻信息部分(即圖中灰度值較低,表現(xiàn)為較暗的區(qū)域)一般分布在圖片的中心區(qū)域。
圖2 理想高通濾波前(左)后(右)的頻域圖
故為濾除中心區(qū)域的信息,設(shè)置理想高通濾波器的傳遞函數(shù)H(u,v)為:
(2)
其中:D0表示截止頻率,D(u,v)是到頻譜中心的歐式距離,計算公式如下:
(3)
式中,M和N表示頻譜圖像的大小,(M/2,N/2)即為頻譜中心。在頻域濾波后,運用公式(4)對新的頻譜能量圖進行傅里葉逆變換得出處理后的圖像。
(4)
從圖2可見,頻域濾波后紋路信息更加清晰明顯,濾除掉含有干擾信息的灰度變化,使得之后的直線檢測能夠更加精確。
由于實際拍攝的圖像中,不同層次的或拍攝不清的邊緣之間相互混合在一起,同時還因為設(shè)備問題出現(xiàn)一些噪聲。頻域濾波一般情況下會將邊緣和這些噪聲作為高頻信息而保留下來。因此,需要借助邊緣檢測方法來進一步處理圖像。常用的邊緣檢測算子有Prewitt算子、Laplacian算子、Canny算子、Roberts算子和Sobel算子:其中Prewitt算子先計算像素平均值,再計算差分求得梯度值,能抑制噪聲,但容易造成誤判而定位不準確;Laplacian算子具有各向同性和旋轉(zhuǎn)不變性,同時也會對噪聲非常敏感,需要先進行高斯平滑預(yù)處理抑制噪聲;Canny算子能濾波降低噪聲和增強邊緣,但程序較為復(fù)雜且運算速度不高;Roberts算子定位較準確但魯棒性較差,在噪聲較大的織物圖像中邊緣定位精度不高。對比各類邊緣檢測算子,這里選用精度較好抑制噪聲好適用于灰度漸變低噪聲的Sobel算子[13-14]。
Sobel算子是圖像邊緣檢測中最常用的工具之一,由兩個方向的卷積計算因子組成,其中,水平卷積因子Mx和垂直卷積因子My為:
(5)
(6)
對圖像像素點使用卷積因子Mx和My進行卷積運算,計算出像素的梯度值及其絕對值,并根據(jù)設(shè)定的閾值來過濾。設(shè)A為被處理的原圖像,則其水平梯度dx計算公式為:
dx=Mx*A
(7)
其垂直梯度dx計算公式為:
dy=My*A
(8)
由此分別可以得到水平方向及垂直方向的灰度差分近似值,能計算出每個像素點的梯度值,其梯度T計算公式為:
(9)
計算出的梯度值與閾值進行對比,當梯度值小于設(shè)定閾值時,將該像素點數(shù)值置0,否則置1。邊緣判別式為:
(10)
邊緣提取后的圖像如圖3所示,可以看出圖中僅保留了緯紗干路部分而濾除背景部分,并且轉(zhuǎn)化為二值圖像,極大簡化了圖像信息。
圖3 與Sobel算子卷積后邊緣方向圖
通過分析邊緣提取后的圖像可以發(fā)現(xiàn),緯紗紋理具有較多毛刺狀凸起部分。這些毛刺會影響Hough變換的準確性,使得直線提取到錯誤方向上;并且還會增加進行變換像素點的數(shù)量,從而使計算時間延長。因此在進行Hough變換之前還需通過形態(tài)學骨架提取運算來突顯緯斜紋理的走向[15]。
骨架提取的核心思想是從目標對象外圍往對象中心,利用以待檢測像素為中心3*3像素窗口的特征,對目標不斷腐蝕細化,直至不能再腐蝕(達到單層像素寬度),就得到了圖像的骨架[16]。
關(guān)于骨架提取的算法,一般分為迭代和非迭代兩大類。在迭代算法中,又分為并行迭代和順序迭代兩種。本文使用Zhang-Suen并行迭代算法[17]。該算法迭代滿足的特殊條件如下。
假設(shè)圖像中某一像素點及其周圍的點陣為:
P9P2P3
P8P1P4
P7P6P5
(11)
定義,B(P1)為P1點的非零鄰域的個數(shù),A(P1)為P1點周圍8個像素點灰度值按順時針方向以0到1順序排列的個數(shù)。當滿足以下全部條件時,則該像素點被刪除:
1)2≤B(P1)≤6;
2)A(P1)=1;
3)P2*P4*P6=0或P2*P4*P8=0;
4)P4*P6*P8=0或P2*P6*P8=0。
迭代計算骨架提取直至骨架為單像素寬度后得到圖4中骨架化提取后的結(jié)果。可以看出,提取的緯紗骨架上仍有許多毛刺,這會影響之后檢測直線的精度。毛刺的特征是從端點開始到分支點中間區(qū)域是小于設(shè)定的閾值長度的分支線段,根據(jù)該特征可以設(shè)計相應(yīng)的算法消除毛刺。這里參考使用葉福玲的改進的圖像骨架提取算法來去除多余的骨架毛刺[18]。具體算法如下表示為:
圖4 形態(tài)學骨架化提取后圖像
在式(11)中,假設(shè)P1為骨架上一個像素點,計算該點的B(P1),當出現(xiàn)以下情況是:
1)當B(P1)≥3時,記P1為分支點。
2)將分支點置0,該點原分支方向成為斷開的多個分支線。在設(shè)置范圍PL內(nèi),分別計算斷開后每個分支線段的長度Li,即記錄該分支線段上像素點個數(shù)。
3)設(shè)置閾值PT(PT≤PL),當PT≥Li時,刪去該分支線段,否則保留該分支線段。
4)將之前置0分支點重新置1,連通未刪除的分支線段。
在選取適當?shù)拈撝岛螅M過迭代計算得到圖5中改進后的消除骨架毛刺運算的結(jié)果,可以改進后的骨架提取算法能夠有效消去骨架上的毛刺,并能保持骨架線的連貫性,得到的緯紗干路部分進過后變得更加精細,進一步簡化了圖像信息。
圖5 改進的消除骨架毛刺后圖像
在可參數(shù)化幾何圖形檢測中,Hough變換是一種廣泛使用的方法。Hough變換于1962年由PaulHough首次提出,是一種參數(shù)估值計算方式,使用自動投票統(tǒng)計算法,利用圖像空間中一點與霍夫參數(shù)空間正弦曲線的對偶性,把在圖像空間中的檢測對象轉(zhuǎn)換到參數(shù)空間的對應(yīng)目標。通過求取在變換到參數(shù)空間后對局部范圍計算累加求和的最大值,最后求得一個滿足該特定條件的集合,以此計算出圖像中最符合直線特征的點集合的方向。
其計算原理是將原圖像空間中坐標為(x,y)的一點,其按照式(12)轉(zhuǎn)變?yōu)橐?r,θ)為參數(shù)的Hough空間中一條曲線。
r=xcosθ+ysinθ
(12)
Hough變換檢測直線的實質(zhì)是將對于平面中每個確定的點,按照上述公式在霍夫參數(shù)空間中轉(zhuǎn)化為正弦曲線,其中部分曲線會相交于一點,該點表示這些曲線所對應(yīng)的點在原空間中共線所在的直線。找出統(tǒng)計所有的被記錄次數(shù)最多的(r,θ)及其所對應(yīng)的直線,則表示該直線在平面內(nèi)被最多點共線次數(shù)最多[19-20]。
即可以得出Hough變換直線檢測步驟:
1)對骨架提取后的圖像進行霍夫空間變換,變換的精度設(shè)定為Δθ=0.2°;
2)在規(guī)定區(qū)域內(nèi)找到霍夫空間變換的峰值;
3)對這些峰值按照由大到小順序進行排序;
4)選取最大值。
圖6為Hough變換的結(jié)果,圖中標出的其中三個峰值表示原圖中三個最具直線特征的方向。通過對比分析計算,可以得到緯紗方向的角度。
圖6 Hough變換參數(shù)空間中的峰值
通過Hough變換,可以快速地檢測出緯紗傾斜角度,但該方法的精度有待進一步提高。因此,需要使用FFT多投影方法在初測角度附近進行精確檢測。
FFT多投影精測的原理是利用快速傅里葉變的頻譜圖的旋轉(zhuǎn)不變性。即二維信號(圖像)在空間域上向某一方向旋轉(zhuǎn)一定角度,則其二維傅里葉變換在頻域上的頻譜圖也會在相同的方向上旋轉(zhuǎn)相同的角度[21-22]。
圖7給出了織物灰度圖像的傅里葉變換頻譜圖(左邊圖像)和旋轉(zhuǎn)一定角度的頻譜圖(右邊圖像)。從圖中可以看出兩個方向的高頻信息,分別表示原灰度圖像中水平方向和垂直方向上信息的變化情況。反應(yīng)在原織物圖像,就是經(jīng)紗和緯紗的方向傾斜情況。
圖7 織物頻譜圖(左)及其旋轉(zhuǎn)后的頻譜圖(右)
當原圖中緯紗方向相對于水平方向存在一定角度的傾斜時,在頻譜圖的垂直方向也傾斜相應(yīng)角度,此時將頻譜圖向x軸進行投影,統(tǒng)計中心區(qū)域像素點集合,得到的值不是最大值;而當圖像旋轉(zhuǎn)該傾斜的角度后,頻譜圖中垂直方向的信息投影后中心區(qū)域的投影點集合數(shù)值是最大值。
以Hough變換檢測直線得到的初測角度為中心位置,在±1°范圍內(nèi)以0.2°間隔進行旋轉(zhuǎn)和投影。只有當圖像中緯紗紋理方向與水平方向最大限度平行時,其投影中心區(qū)域的點集合會出現(xiàn)峰值。為了減小誤差,以中心點左右3列像素的總和進行比較。通過計算峰值所對應(yīng)旋轉(zhuǎn)的角度是相對于由Hough變換檢測的初測角度的偏離角度。
圖8給出了旋轉(zhuǎn)前(左圖)和旋轉(zhuǎn)后(右圖)的中心點附近頻譜信息投影圖。從圖中可以看出,在未旋轉(zhuǎn)一定角度前,峰值信息含有兩個峰值,表示此時峰值頻譜信息較為分散,并不是最大值;在經(jīng)過旋轉(zhuǎn)一定角度后,峰值頻譜信息更加集中突出,表示該角度出現(xiàn)只有一個最高的峰值是中心區(qū)域像素點個數(shù)的最大值,旋轉(zhuǎn)的角度加上Hough變換初測的角度就是織物的傾斜角度。
圖8 頻譜信息投影圖
本次實驗的硬件平臺采用Windows10專業(yè)版系統(tǒng),intel?CoreTMi7-7700HQ處理器,ST2000LM015-2E8174硬盤,Crucial-DDR4-2400MHz-8G*2內(nèi)存,Intel(R)-HD Graphics-630顯示適配器,Canon-EOS-1D-X-Mark-II/ Canon-EF-24-70mm-f/2.8L- II -USM相機,軟件平臺使用MATLABR2018b。為進一步驗證本文所提出方法的有效性,選取四種不同類型的織物進行圖像拍攝,并將每幅圖像大小裁剪為512×512像素,每次檢測重復(fù)10次并取平均值以消除誤差。對四類織物圖像,采用單獨基于Hough變換方法、單獨基于FFT多投影方法,以及本文提出的結(jié)合Hough變換和FFT多投影精測方法分別進行緯斜角度檢測,并進行對比。
表1給出了基于Hough變換方法的檢測結(jié)果。從表中可以看出,使用該方法檢測誤差最大達到1.8°。這是由于采樣圖像中存在較多的冗余信息,包括顏色圖案、明暗差異、編織工藝差別等干擾因素,導(dǎo)致進行Hough變換提取直線不能精準表達緯斜方向,終檢測結(jié)果誤差較大。該方法由于同樣經(jīng)歷頻域濾波,按比例二值化的預(yù)處理,剩余需要變換的像素點可以控制在較少的范圍內(nèi),因此耗時都不大于0.3 s,速度較快。因此適用于快速初測。
表1 基于Hough變換方法的檢測結(jié)果
表2給出了基于FFT多投影方法的檢測結(jié)果。從表中可以看出,基于DFT的多角度投影算法,根據(jù)較小旋轉(zhuǎn)的步長能夠完成較為精確的檢測緯紗傾斜角度較小的織物,并且面對疏密程度略大的織物時,該方法能表現(xiàn)出良好的適應(yīng)能力。但因為檢測范圍較大、檢測精度較高而進行較多次投影導(dǎo)致迭代計算量較大而實時性較差。
表2 基于FFT多投影方法的檢測結(jié)果
表3給出了基于Hough變換和FFT多投影精測方法的檢測結(jié)果。從表中可以看出,最大誤差為0.2°,平均耗時0.533 s。與FFT多投影方法相比,該方法測量精度相當,耗時提高了約53%。因此,該方法能夠較好兼顧檢測精度和計算速度,適用于工程實際使用需求。
表3 結(jié)合Hough變換和FFT多投影精測方法的檢測結(jié)果
本文為實現(xiàn)對不同類型織物能夠快速準確地檢測出其緯斜角度,提出了一種結(jié)合Hough變換和FFT多角度投影的織物緯斜檢測算法。對織物圖像進行頻域濾波來增強織物圖像的紋理特征,利用Sobel算子對緯紗進行邊緣方向檢測,進行形態(tài)學骨架化提取以簡化圖像信息;使用Hough變換快速檢測出緯斜的初測角度,最后在初角±1°范圍進行FFT多角度旋轉(zhuǎn)投影確定精確的緯斜角度。
實驗證明,該算法有效解決了單獨使用Hough變換精確度不高,以及單獨使用DFT多角度投影有足夠精確度但耗時過長的問題,兼顧檢測精度和計算速度,滿足機器視覺整緯器的精確性、實時性和通用性要求。