閆星志,劉向陽(yáng),楊鵬宇
(1.河海大學(xué) 理學(xué)院,南京 211100;2.中交隧橋(南京)技術(shù)有限公司,南京 211800)
近年來(lái),隨著我國(guó)基礎(chǔ)交通設(shè)施的大量建設(shè),公路運(yùn)輸在全國(guó)交通運(yùn)輸系統(tǒng)中扮演著重要角色。目前,全國(guó)公路總里程達(dá)到了528.07 萬(wàn)公里,公路隧道23 268 處、2469.89 萬(wàn)延米[1]?,F(xiàn)階段,我國(guó)隧道工程已從“建設(shè)”向“建設(shè)與養(yǎng)護(hù)并重”的方向轉(zhuǎn)變[2]。隧道襯砌裂縫檢測(cè)是評(píng)估隧道安全狀況的重要方式之一,可幫助隧道養(yǎng)護(hù)人員明確檢查要點(diǎn),找出重點(diǎn)檢查部位[3]。因此,針對(duì)隧道裂縫的自動(dòng)檢測(cè)及幾何參數(shù)計(jì)算對(duì)隧道養(yǎng)護(hù)工作有著重要意義。
針對(duì)隧道裂縫檢測(cè),傳統(tǒng)方法主要依靠檢測(cè)人員實(shí)地考察,利用測(cè)量工具獲取裂縫參數(shù)。這種方法不僅耗時(shí)耗力,同時(shí)存在一定的安全隱患,對(duì)于長(zhǎng)隧道、特長(zhǎng)隧道并不適用。近年來(lái),隨著計(jì)算機(jī)技術(shù)和圖像處理技術(shù)的發(fā)展,國(guó)內(nèi)外許多學(xué)者將計(jì)算機(jī)的相關(guān)技術(shù)應(yīng)用于裂縫問(wèn)題的研究中[4-6]。ZHANG等[7]在三角網(wǎng)格上定義應(yīng)力場(chǎng)并采用一階準(zhǔn)靜態(tài)開裂節(jié)點(diǎn)法(Cracking Node Method,CNM)模擬真實(shí)的裂縫形態(tài)。LIU 等[8]使用距離變換法快速定義初始裂紋,并通過(guò)擴(kuò)展有限元法(Extended Finite Element Method,EFEM)模擬裂縫擴(kuò)展的過(guò)程。利用計(jì)算機(jī)仿真技術(shù)模擬真實(shí)的裂縫形態(tài),可應(yīng)用于預(yù)測(cè)裂縫的未來(lái)走向。
針對(duì)裂縫檢測(cè)和裂縫參數(shù)分析,國(guó)內(nèi)外研究主要分為基于傳統(tǒng)數(shù)字圖像處理和基于深度學(xué)習(xí)[9-11]。張振海等[12]對(duì)地鐵隧道裂縫圖像進(jìn)行濾波處理,使用Canny 邊緣檢測(cè)和Otsu 相結(jié)合的算法對(duì)裂縫圖像進(jìn)行二值化分割。王建鋒等[13]使用自適應(yīng)運(yùn)動(dòng)估計(jì)和卡爾曼濾波,實(shí)現(xiàn)了襯砌裂縫圖像的誤差補(bǔ)償,并利用形態(tài)學(xué)方法對(duì)裂縫進(jìn)行分割。傳統(tǒng)數(shù)字圖像處理方法需要對(duì)裂縫圖像進(jìn)行多次濾波,容易受到光照等環(huán)境因素的影響,對(duì)于噪聲嚴(yán)重的裂縫圖像存在局限 性。ZHANG 等[14]采用卷 積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)對(duì)道路裂縫進(jìn)行檢測(cè),實(shí)驗(yàn)結(jié)果表明深度學(xué)習(xí)方法對(duì)于噪聲嚴(yán)重的裂縫圖像仍有較好的識(shí)別結(jié)果。彭雨諾等[15]對(duì)YOLO 模型進(jìn)行改進(jìn),提出基于雙網(wǎng)絡(luò)的橋梁表觀病害快速檢測(cè)算法,但僅針對(duì)裂縫進(jìn)行檢測(cè),不涉及裂縫的幾何參數(shù)分析。
針對(duì)裂縫參數(shù)分析,學(xué)者們也進(jìn)行了一系列研究。周穎等[16]利用消費(fèi)級(jí)照相機(jī),基于計(jì)算機(jī)視覺對(duì)裂縫圖像進(jìn)行傳統(tǒng)圖像處理,并提取裂縫走向、長(zhǎng)度和寬度等幾何特征,在實(shí)驗(yàn)室條件下裂縫寬度誤差在0.1 mm 左右。NISHIYAMA 等[17]在裂縫邊緣處放置靶點(diǎn)進(jìn)行標(biāo)定,通過(guò)靶點(diǎn)位置計(jì)算裂縫寬度。以上算法需利用設(shè)備進(jìn)行裂縫特征提取,在實(shí)際應(yīng)用中存在一定局限性。劉娟紅等[18]利用MATLAB軟件,根據(jù)裂縫面積和長(zhǎng)度的關(guān)系計(jì)算裂縫寬度。朱磊等[19]提出對(duì)裂縫骨架進(jìn)行函數(shù)擬合的方法計(jì)算裂縫寬度,但對(duì)于形態(tài)較為復(fù)雜的裂縫,函數(shù)擬合效果欠佳。文獻(xiàn)[12]針對(duì)裂縫二值圖像采用ZHANG等[20]提出的并行細(xì)化算法(簡(jiǎn)稱為Zhang 細(xì)化算法)進(jìn)行骨架提取,計(jì)算長(zhǎng)度,通過(guò)分段法線方向計(jì)算裂縫寬度。該算法采用經(jīng)典細(xì)化算法獲取裂縫骨架,但骨架中存在斷點(diǎn)和分叉,對(duì)長(zhǎng)度計(jì)算造成誤差,且寬度計(jì)算過(guò)程中存在誤差累積的情況。目前,關(guān)于裂縫參數(shù)的計(jì)算方法均基于傳統(tǒng)圖像處理,沒(méi)有考慮針對(duì)裂縫本身的特殊幾何形態(tài)。
針對(duì)裂縫的邊緣復(fù)雜多變和形狀無(wú)規(guī)律等特點(diǎn),本文提出基于多源點(diǎn)熱擴(kuò)散的隧道裂縫幾何特征計(jì)算算法。結(jié)合裂縫本身特殊的幾何特征,首先使用U-Net[21]語(yǔ)義分割網(wǎng)絡(luò),對(duì)采集到的裂縫圖像進(jìn)行裂縫分割。在此基礎(chǔ)上,以裂縫邊緣為源點(diǎn),使用多源點(diǎn)熱擴(kuò)散方法得到測(cè)地距離場(chǎng),從而計(jì)算裂縫長(zhǎng)度和寬度。將裂縫邊緣作為源點(diǎn)進(jìn)行多源點(diǎn)熱擴(kuò)散,在傳統(tǒng)熱方法的基礎(chǔ)上結(jié)合了裂縫本身復(fù)雜的邊緣特征,并且將測(cè)地距離場(chǎng)引入裂縫骨架提取及幾何參數(shù)計(jì)算中。根據(jù)裂縫走向提取測(cè)地距離場(chǎng)的局部極值,獲得裂縫骨架,計(jì)算其像素長(zhǎng)度。根據(jù)裂縫區(qū)域測(cè)地距離場(chǎng)的全局極大點(diǎn),尋找過(guò)該點(diǎn)并與裂縫區(qū)域相交部分的最短線段,計(jì)算最大寬度。以裂縫邊緣為熱擴(kuò)散起始點(diǎn),源點(diǎn)貼合裂縫的整個(gè)邊緣,可準(zhǔn)確獲取裂縫從邊緣到中心的距離關(guān)系。提取的裂縫骨架具有光滑、居中、無(wú)分叉等優(yōu)勢(shì),從而降低了裂縫長(zhǎng)度計(jì)算過(guò)程中的誤差。關(guān)于裂縫寬度的計(jì)算,所提算法可直接定位至裂縫的最寬部分,僅針對(duì)該部分進(jìn)行計(jì)算,在計(jì)算過(guò)程中避免了誤差累積,使結(jié)果的準(zhǔn)確性更高。
U-Net[21]神經(jīng)網(wǎng)絡(luò)是經(jīng)典的語(yǔ)義分割模型,以全卷積神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),網(wǎng)絡(luò)結(jié)構(gòu)全部由卷積層組成,對(duì)于圖像可實(shí)現(xiàn)語(yǔ)義分割。由于其網(wǎng)絡(luò)結(jié)構(gòu)整體呈“U”型,因此稱為U-Net。U-Net 通過(guò)跳躍連接將圖像淺層特征信息與深層特征信息結(jié)合,避免了在連續(xù)下采樣過(guò)程中造成邊緣信息丟失,因此廣泛應(yīng)用于醫(yī)學(xué)圖像分割。本文研究的隧道裂縫狹長(zhǎng)彎曲,在圖像中所占比重較少,樣本圖像具有正負(fù)樣本不均衡問(wèn)題。因此,使用U-Net 結(jié)構(gòu)可減少神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過(guò)程中丟失的特征信息,使裂縫分割結(jié)果更為準(zhǔn)確。
U-Net 結(jié)構(gòu)由兩部分組成,分別為編碼器和解碼器,對(duì)應(yīng)于網(wǎng)絡(luò)結(jié)構(gòu)的左右部分。編碼器部分將輸入圖像進(jìn)行卷積操作,提取圖像特征;解碼器部分對(duì)編碼器中得到的特征圖進(jìn)行反卷積上采樣,恢復(fù)圖像尺寸并融合低層次特征。U-Net 結(jié)構(gòu)如圖1 所示。
圖1 U-Net 結(jié)構(gòu)Fig.1 U-Net structure
在網(wǎng)絡(luò)訓(xùn)練過(guò)程中采用交叉熵?fù)p失函數(shù),計(jì)算所有像素?fù)p失的均值,如式(1)所示:
其中:yij表示像素點(diǎn)(i,j)的標(biāo)簽,若像素點(diǎn)屬于類別k,則為1,否則為0表示同一個(gè)像素位置預(yù)測(cè)為類別k的概率,m、n表示圖像的尺寸。
測(cè)地距離即測(cè)地線的長(zhǎng)度,測(cè)地線最初指地球表面任意兩點(diǎn)之間的最短距離。與歐氏距離不同,測(cè)地距離存在于連通域,因此被廣泛應(yīng)用于路線規(guī)劃。
如圖2 所示,Ω為給定連通域,以三維球體為例,A、B為Ω中任意兩點(diǎn),則A、B之間的測(cè)地距離為連接A、B點(diǎn)并位于球體表面的最短弧線。
當(dāng)Ω為二維平面時(shí),測(cè)地距離與歐氏距離相同。給定一張圖像,將其定義在二維區(qū)域內(nèi),圖像中任意兩像素點(diǎn)之間的測(cè)地距離定義如下:
其中:d(a,b)表示像素點(diǎn)a到像素點(diǎn)b的所有路徑集合;Γ(s)表示使用參數(shù)s參數(shù)化表示的路徑,且s?[0,1];u為單位向量,u=?!?s)/‖?!?s) ‖,表示路徑Γ(s)的單位切向量;W1為圖像特征的參數(shù)化表示矩陣,可根據(jù)圖像灰度值等屬性進(jìn)行定義;η為圖像特征信息的影響權(quán)重,當(dāng)η=0時(shí),測(cè)地距離D與歐氏距離相同。
2.2.1 主要思想
熱擴(kuò)散方法[22]根據(jù)熱量擴(kuò)散方向與測(cè)地距離場(chǎng)梯度方向平行且相反的性質(zhì)計(jì)算測(cè)地距離。假設(shè)存在一個(gè)光滑平面,用一根炙熱的針觸碰平面上某一點(diǎn),熱量由該點(diǎn)在平面上進(jìn)行擴(kuò)散,熱量擴(kuò)散的方向與距離增加的方向平行并相反。
傳統(tǒng)熱方法[22]以區(qū)域中某一點(diǎn)為起始點(diǎn)進(jìn)行熱擴(kuò)散,本文提出的多源點(diǎn)熱擴(kuò)散方法從區(qū)域中多個(gè)點(diǎn)同時(shí)開始熱擴(kuò)散。以目標(biāo)區(qū)域的邊緣為源點(diǎn)進(jìn)行熱擴(kuò)散,熱流同時(shí)從邊緣向內(nèi)部擴(kuò)散,形成內(nèi)部熱量低、邊緣熱量高的情況。由于測(cè)地距離場(chǎng)方向與熱擴(kuò)散方向相反,因此換算后的測(cè)地距離場(chǎng)具有邊緣距離最小、內(nèi)部距離最大的特點(diǎn)。經(jīng)多源點(diǎn)熱擴(kuò)散方法計(jì)算后,目標(biāo)區(qū)域的測(cè)地距離場(chǎng)在三維空間中呈現(xiàn)山峰狀,山脊線即為目標(biāo)區(qū)域的骨架線,因此多源點(diǎn)熱擴(kuò)散方法可有效應(yīng)用于骨架提取領(lǐng)域。同時(shí),測(cè)地距離場(chǎng)的最大值即為目標(biāo)區(qū)域熱量擴(kuò)散的最低點(diǎn),即目標(biāo)區(qū)域距離邊緣的最遠(yuǎn)處,在本文中可用于計(jì)算裂縫的最寬點(diǎn)。
多源點(diǎn)熱擴(kuò)散方法主要分為兩個(gè)階段:第一階段尋找測(cè)地距離的增加方向;第二階段計(jì)算測(cè)地距離。首先對(duì)熱方程進(jìn)行求解,得到熱流u;然后對(duì)熱流梯度進(jìn)行單位化并取其反向,得到近似測(cè)地距離的單位向量場(chǎng);最后利用泊松方程對(duì)測(cè)地距離進(jìn)行還原,具體如下[22]:
1)對(duì)固定時(shí)間t計(jì)算熱流u:=Δu。
2)計(jì)算歸一化向量場(chǎng):X=-?ut/|?ut|。
3)求解泊松方程:Δ?=??X。
其中:函數(shù)?為測(cè)地距離的近似表示,當(dāng)時(shí)間t趨近于0 時(shí),?越接近于真實(shí)距離。計(jì)算過(guò)程如圖3 所示(彩色效果見《計(jì)算機(jī)工程》官網(wǎng)HTML 版)。多源點(diǎn)熱擴(kuò)散方法將求解測(cè)地距離轉(zhuǎn)換為求解兩個(gè)線性方程組,且計(jì)算過(guò)程中進(jìn)行了大量針對(duì)離散算子的預(yù)計(jì)算。與同類算法[23]相比,具有計(jì)算速度快的優(yōu)點(diǎn),同時(shí)在計(jì)算過(guò)程中,可反復(fù)利用預(yù)計(jì)算結(jié)果,節(jié)約計(jì)算成本。該方法具有較強(qiáng)的魯棒性,可用于任何定義了梯度和散度算子?以及拉普拉斯算子Δ的連續(xù)空間,例如三維點(diǎn)云、多邊形網(wǎng)格計(jì)算等。
圖3 多源點(diǎn)熱擴(kuò)散過(guò)程Fig.3 Process of multi-source thermal diffusion
使用多源點(diǎn)熱擴(kuò)散方法計(jì)算得到裂縫區(qū)域的測(cè)地距離場(chǎng),以裂縫多個(gè)邊界點(diǎn)為起始點(diǎn),同時(shí)進(jìn)行熱擴(kuò)散。與基于KD-Tree 最鄰近搜索算法[24]得到的邊界距離場(chǎng)相比,測(cè)地距離即使在裂縫狹長(zhǎng)處依然能體現(xiàn)出距離場(chǎng)的分布特點(diǎn)。由圖4 的熱力圖分析可知(彩色效果見《計(jì)算機(jī)工程》官網(wǎng)HTML 版),邊界距離場(chǎng)在裂縫細(xì)長(zhǎng)處,距離變化不明顯,而測(cè)地距離場(chǎng)可充分體現(xiàn)出距離的變化。測(cè)地距離場(chǎng)更符合裂縫彎曲特性,貼近裂縫形狀,反映其幾何特征,因此更適用于裂縫幾何參數(shù)分析。
圖4 裂縫區(qū)域的距離場(chǎng)熱力圖Fig.4 Thermal diagram of distance field in crack area
2.2.2 時(shí)間離散化
由于本文研究?jī)?nèi)容為二維平面圖像,因此著重討論熱擴(kuò)散在三角網(wǎng)格中的計(jì)算過(guò)程。
在計(jì)算測(cè)地距離場(chǎng)時(shí),首先求解熱方程。使用后退歐拉法,將熱方程在給定區(qū)域Ω上關(guān)于時(shí)間t進(jìn)行離散化:
其中:id為單位矩陣。然后通過(guò)離散化將求解熱方程轉(zhuǎn)換為求解線性方程,進(jìn)一步轉(zhuǎn)換為求解橢圓邊值問(wèn)題:
其中:γ表示區(qū)域Ω的邊界,該邊值問(wèn)題的解vt與原方程的解ut相差常數(shù)倍。
2.2.3 空間離散化
熱方法[22]在計(jì)算過(guò)程中將連續(xù)過(guò)程進(jìn)行離散化。對(duì)于梯度算子和拉普拉斯算子,在空間上進(jìn)行離散處理。首先將給定區(qū)域三角網(wǎng)格化,將梯度算子和拉普拉斯算子分別在三角網(wǎng)格上進(jìn)行離散。若V是三角網(wǎng)格中頂點(diǎn)集合,F(xiàn)為三角面片集合,E為三角邊集合,則點(diǎn)i處的拉普拉斯算子的標(biāo)準(zhǔn)離散化如下:
其中:Ai為i點(diǎn)所在三角面片面積和的1/3;j表示i點(diǎn)的相鄰頂點(diǎn);αij和βij表示ij邊的兩對(duì)角。用矩陣形式表示可 得:L=A-1Lc,其 中為對(duì)角矩陣,矩陣元素為i點(diǎn)周圍三角面片的面積之和,為余切運(yùn)算矩陣。將離散拉普拉斯算子代入熱方程,可得如下線性方程:
其 中:δγ為邊界γ上的克 羅內(nèi)克函數(shù)。δγ可表示如下:
給定三角網(wǎng)格區(qū)域,i點(diǎn)處的梯度算子離散化如下:
其中:Af為三角面片f的面積;N為該面片的單位外法向量;ei為三角面片的邊;ui為i點(diǎn)對(duì)應(yīng)的熱流值。
與i點(diǎn)相關(guān)的散度算子離散化如下:
其中:e1、e2為三角形中i點(diǎn)和j點(diǎn)相連的兩條邊;θ1、θ2表示e1、e2的對(duì)角。
最后,將離散算子代入求解歸一化向量場(chǎng)和泊松方程,且求解泊松方程時(shí)可將問(wèn)題轉(zhuǎn)換為求解一個(gè)稀疏線性方程組:
基于多源點(diǎn)熱擴(kuò)散方法計(jì)算得到裂縫區(qū)域的測(cè)地距離場(chǎng),在此基礎(chǔ)上提出計(jì)算裂縫幾何特征參數(shù)的方法。根據(jù)測(cè)地距離場(chǎng)的局部極值和全局極值,分別獲得裂縫骨架和裂縫最寬點(diǎn),計(jì)算裂縫長(zhǎng)度和寬度。裂縫幾何特征計(jì)算流程如圖5 所示。
圖5 裂縫幾何特征計(jì)算流程Fig.5 Procedure of crack geometric characteristic calculation
2.3.1 圖像連通域處理
在裂縫分割結(jié)果中,裂縫區(qū)域通常為連通域。當(dāng)裂縫圖像中存在光照不均勻、噪聲嚴(yán)重等情況時(shí),分割結(jié)果中往往會(huì)出現(xiàn)多個(gè)連通域。多連通域可分為3 種不同情況:1)可能為同一圖像中的不同裂縫;2)可能為一條裂縫被截?cái)酁槎鄺l;3)可能為噪聲點(diǎn)。本文后續(xù)關(guān)于裂縫幾何特征的分析均基于單連通域進(jìn)行,因此需要對(duì)圖像中多連通域的情況進(jìn)行預(yù)處理。
由于裂縫分割結(jié)果為二值圖像,因此目標(biāo)像素點(diǎn)處的像素值為1,其余背景點(diǎn)像素值為0。對(duì)所有非0 像素點(diǎn)進(jìn)行八鄰域連通性檢測(cè),若該點(diǎn)八鄰域內(nèi)存在非0 像素點(diǎn),則將其標(biāo)記為同一連通域。在標(biāo)記結(jié)束后進(jìn)行連通域分割,主要思想為:將不同連通域的像素矩陣映射至與原始圖像大小一致的圖像矩陣,每個(gè)連通域都可作為單獨(dú)圖像呈現(xiàn),效果如圖6 所示。
圖6 多連通域處理過(guò)程Fig.6 Process of multi-connected domain processing
由于裂縫區(qū)域的像素點(diǎn)一般較為集中,因此裂縫的連通域面積較大。噪聲點(diǎn)通常呈現(xiàn)斑點(diǎn)狀,因此噪聲的連通域面積相對(duì)較小,由此可利用連通域面積的不同,對(duì)裂縫和噪聲點(diǎn)進(jìn)行區(qū)分。計(jì)算裂縫分割掩膜中每個(gè)連通域的像素點(diǎn)總數(shù),當(dāng)連通域中包含像素點(diǎn)個(gè)數(shù)超過(guò)圖像總像素點(diǎn)個(gè)數(shù)的1%時(shí),則認(rèn)為該連通域是裂縫。對(duì)連通域分割后的裂縫區(qū)域進(jìn)行參數(shù)計(jì)算,若為噪聲點(diǎn)則直接刪除,去除干擾。
針對(duì)一條裂縫被分割為多條裂縫的情況,對(duì)多條裂縫的計(jì)算結(jié)果進(jìn)行后處理。根據(jù)裂縫掩膜圖像中連通域的標(biāo)記情況,對(duì)裂縫掩膜中每個(gè)連通域計(jì)算最小外接矩陣[如圖7 所示(彩色效果見《計(jì)算機(jī)工程》官網(wǎng)HTML 版)],并分別記錄每個(gè)矩陣的頂點(diǎn)坐標(biāo)。若連通域U的頂點(diǎn)A(x1,y1)與連通域V的頂點(diǎn)B(x2,y2)距離小于規(guī)定閾值,則認(rèn)為連通域U與連通域V屬于同一條裂縫。當(dāng)多條短裂縫屬于同一條裂縫時(shí),最終裂縫長(zhǎng)度為各短裂縫長(zhǎng)度之和,最終裂縫寬度為各短裂縫寬度的最大值。
圖7 最小外接矩陣Fig.7 Minimum circumscribed matrix
2.3.2 裂縫長(zhǎng)度計(jì)算
在多源點(diǎn)熱擴(kuò)散過(guò)程中,熱量從多個(gè)起點(diǎn)并以同心圓形狀進(jìn)行擴(kuò)散,如圖8 所示(彩色效果見《計(jì)算機(jī)工程》官網(wǎng)HTML 版)。因此,裂縫區(qū)域中間部分的測(cè)地距離值最大,測(cè)地距離場(chǎng)在三維空間中呈現(xiàn)山峰狀,如圖9 所示(彩色效果見《計(jì)算機(jī)工程》官網(wǎng)HTML 版)。測(cè)地距離場(chǎng)局部極大值點(diǎn)為對(duì)應(yīng)邊界點(diǎn)連線中點(diǎn),因此測(cè)地距離場(chǎng)的脊線即為裂縫區(qū)域的骨架。提取測(cè)地距離場(chǎng)的局部極值獲取裂縫骨架,將骨架線上像素點(diǎn)個(gè)數(shù)作為裂縫的像素長(zhǎng)度。
圖8 擴(kuò)散方向Fig.8 Diffusion direction
圖9 測(cè)地距離場(chǎng)三維示意圖Fig.9 3D schematic diagram of geodesic distance field
首先,根據(jù)裂縫在x軸、y軸所占圖像比例,對(duì)輸入圖像判斷裂縫的基本走向,將其劃分為橫向裂縫和縱向裂縫兩類,分別計(jì)算裂縫區(qū)域所有點(diǎn)在x軸方向和y軸方向坐標(biāo)的最大值和最小值,記為xmin、xmax、ymin、ymax。設(shè)裂縫掩膜為m×n,若滿足式(12),則判斷裂縫為縱向,否則判斷為橫向。
根據(jù)裂縫走向,分別從相反方向?qū)ζ渲鹦谢蛑鹆刑崛y(cè)地距離場(chǎng)的局部極大值點(diǎn)。若裂縫為橫向裂縫則對(duì)其進(jìn)行逐列提取,若裂縫為縱向裂縫則進(jìn)行逐行提取,如圖10 所示(彩色效果見《計(jì)算機(jī)工程》官網(wǎng)HTML 版)。
圖10 根據(jù)裂縫方向的局部極值提取Fig.10 Local extremum extraction according to crack direction
分方向提取測(cè)地距離場(chǎng)的局部極值可得到裂縫的初始骨架。根據(jù)裂縫走向分開提取,避免了裂縫骨架中出現(xiàn)多余的分叉。傳統(tǒng)基于形態(tài)學(xué)[20]的骨架提取算法在提取裂縫等具有復(fù)雜邊緣的目標(biāo)骨架時(shí),往往會(huì)出現(xiàn)多余分叉的情況。此類算法后續(xù)需要進(jìn)行剪枝處理,而所提算法可在根本上避免該問(wèn)題,簡(jiǎn)化了算法步驟,但分方向提取局部極值點(diǎn),會(huì)造成某兩個(gè)點(diǎn)之間雖然在某個(gè)方向相鄰,卻在相反方向不相鄰,從而造成骨架斷裂,如圖11 所示(彩色效果見《計(jì)算機(jī)工程》官網(wǎng)HTML 版),因此需要對(duì)初始骨架做進(jìn)一步處理。
圖11 裂縫初始骨架Fig.11 Initial skeleton of cracks
采用八鄰域搜索算法對(duì)初始骨架進(jìn)行斷點(diǎn)搜索。對(duì)初始骨架線上的點(diǎn)進(jìn)行逐點(diǎn)判斷:若其八鄰域內(nèi)有兩個(gè)及以上骨架點(diǎn),則認(rèn)為該點(diǎn)不是斷點(diǎn);若其八鄰域內(nèi)只有一個(gè)或沒(méi)有骨架點(diǎn),則認(rèn)為該點(diǎn)為斷點(diǎn)。在相鄰斷點(diǎn)之間提取測(cè)地線,用測(cè)地線連接斷點(diǎn),處理后得到裂縫的最終骨架線,如圖12 所示(彩色效果見《計(jì)算機(jī)工程》官網(wǎng)HTML 版)。
圖12 裂縫骨架提取過(guò)程Fig.12 Process of crack skeleton extraction
2.3.3 裂縫寬度計(jì)算
首先,尋找裂縫區(qū)域測(cè)地距離場(chǎng)的全局極大點(diǎn),即尋找裂縫的最寬點(diǎn)。然后,過(guò)該點(diǎn)做一條水平直線,并將其逆時(shí)針旋轉(zhuǎn)180°。直線與裂縫的相交部分會(huì)隨著旋轉(zhuǎn)角度的不斷變化而變化,當(dāng)相交部分長(zhǎng)度達(dá)到最短時(shí),即為裂縫的寬度方向。此時(shí),計(jì)算直線與裂縫區(qū)域相交部分的長(zhǎng)度,即為裂縫的最大寬度值。在實(shí)際計(jì)算過(guò)程中,圖像各像素點(diǎn)之間形成網(wǎng)格,計(jì)算直線旋轉(zhuǎn)過(guò)程中經(jīng)過(guò)的網(wǎng)格數(shù),即為裂縫的寬度。
本文提出的寬度計(jì)算算法可根據(jù)測(cè)地距離場(chǎng)直接定位裂縫的最寬點(diǎn),避免了對(duì)整個(gè)裂縫區(qū)域進(jìn)行搜索,極大減少了運(yùn)算量。直線方程可通過(guò)斜截式表示,在計(jì)算過(guò)程中僅存在兩個(gè)未知參數(shù),因此求解速度較快,且避免了誤差累積。
為了驗(yàn)證所提算法對(duì)裂縫參數(shù)計(jì)算的有效性,分別從裂縫分割效果、裂縫骨架提取效果和裂縫參數(shù)計(jì)算結(jié)果三方面進(jìn)行實(shí)驗(yàn)。
為了使模型充分學(xué)習(xí)裂縫特征,對(duì)公開數(shù)據(jù)集CFD[25]進(jìn)行數(shù) 據(jù)增強(qiáng),并從中挑選120 張相關(guān)性較低且具有不同特征的裂縫圖像進(jìn)行實(shí)驗(yàn),其中,80 張圖像為訓(xùn)練集,20 張圖像為驗(yàn)證集,20 張圖像為測(cè)試集,圖像尺寸大小為480×320 像素,具有RGB 通道。實(shí)驗(yàn)基于深度學(xué)習(xí)PyTorch 1.6.0 版框架進(jìn)行,硬件環(huán)境為GPU NVIDIA GeForce RTX 2080,軟件環(huán)境為Windows 10 操作系統(tǒng),采用Python 3.7 語(yǔ)言環(huán)境。在訓(xùn)練過(guò)程中使用CUDA 工具包和CUDNN庫(kù),其中版本為CUDA 11.2 和CUDNN 7.5。
在實(shí)驗(yàn)數(shù)據(jù)集中圖像數(shù)量較少,為避免訓(xùn)練過(guò)程中出現(xiàn)嚴(yán)重的過(guò)擬合現(xiàn)象,在模型訓(xùn)練時(shí)算法參數(shù)設(shè)置:批處理個(gè)數(shù)設(shè)置為1,訓(xùn)練30 輪數(shù)據(jù)集,學(xué)習(xí)率設(shè)置為0.001,訓(xùn)練集大小為80 張圖片,驗(yàn)證集大小為20 張圖片。
經(jīng)過(guò)30 輪訓(xùn)練后,模型充分學(xué)習(xí)了訓(xùn)練集中的裂縫特征,模型在驗(yàn)證集上的準(zhǔn)確率達(dá)98.55%、召回率達(dá)69.54%。將訓(xùn)練好的模型在測(cè)試集中進(jìn)行測(cè)試。實(shí)驗(yàn)結(jié)果表明,U-Net 模型對(duì)含有嚴(yán)重噪聲的圖像仍具有較好的分割效果,進(jìn)一步驗(yàn)證了模型的有效性。U-Net 模型分割結(jié)果如圖13 所示(彩色效果見《計(jì)算機(jī)工程》官網(wǎng)HTML 版)。
圖13 裂縫分割效果Fig.13 Crack segmentation effect
將多源點(diǎn)熱擴(kuò)散方法計(jì)算得到裂縫區(qū)域的測(cè)地距離場(chǎng),并在此基礎(chǔ)上分方向提取局部極值獲取裂縫骨架。實(shí)驗(yàn)將所提算法提取的裂縫骨架與Zhang細(xì)化算法[20]、經(jīng)典Hilditch 細(xì)化算法[26]和歐氏距離變換法[27]提取的裂縫骨架進(jìn)行比較。通過(guò)實(shí)驗(yàn)證明,所提算法提取的骨架更光滑,更適用于裂縫狹長(zhǎng)彎曲的幾何特征。
基于集合論思想[28],提出骨架匹配度λ衡量算法性能:
其中:A為算法提取的裂縫骨架點(diǎn)集合;B為人工標(biāo)注的骨架點(diǎn)集合。骨架提取要求單像素連通,但考慮到人工標(biāo)注具有誤差,因此采用尺寸為3×3 像素的塊標(biāo)注骨架標(biāo)簽。骨架匹配度λ越高,代表提取的骨架與人工標(biāo)注骨架范圍的重疊度越高,骨架越接近實(shí)際需求。
從骨架匹配度、骨架斷點(diǎn)數(shù)量、多余分叉數(shù)量三方面進(jìn)行評(píng)估,綜合衡量骨架的實(shí)用性、連通性和光滑性。骨架的匹配度越高,代表骨架范圍越符合實(shí)際需求。斷點(diǎn)總數(shù)和分叉總數(shù)越少,代表骨架更加光滑、連通。從U-Net裂縫分割結(jié)果中隨機(jī)采集20 張圖像,作為實(shí)驗(yàn)測(cè)試集。所提算法在測(cè)試集上的平均骨架匹配度為92.84%、總斷點(diǎn)數(shù)為21、總分叉數(shù)為2,具體計(jì)算結(jié)果如圖14所示。由圖14可以看出:
圖14 性能指標(biāo)計(jì)算結(jié)果Fig.14 Performance index calculation results
1)所提算法的平均骨架匹配度相比于Zhang 細(xì)化算法、Hilditch 細(xì)化算法分別提升了2.57 和1.41 個(gè)百分點(diǎn)。歐氏距離變換法是根據(jù)裂縫區(qū)域的歐氏距離場(chǎng)提取骨架,與所提算法一樣都屬于距離變換法,雖然該算法的骨架匹配度略高,但是得到的骨架斷裂情況較為嚴(yán)重,斷點(diǎn)數(shù)量遠(yuǎn)高于其他算法,相比之下所提算法的連通性更高。
2)所提算法的斷點(diǎn)數(shù)量、分叉數(shù)量相比于其他算法有明顯降低,其中,斷點(diǎn)總數(shù)相比于Zhang 細(xì)化算法、Hilditch 細(xì)化算法分別降低了30.00% 和44.73%,分叉數(shù)量相比于Zhang 細(xì)化算法、Hilditch 細(xì)化算法、歐氏距離變換法分別減少了7、3 和5 個(gè)分叉。綜合評(píng)估3 個(gè)指標(biāo),所提算法針對(duì)裂縫骨架提取有明顯優(yōu)勢(shì),骨架的實(shí)用性、連通性和光滑性更符合實(shí)際需求。
不同算法裂縫骨架的提取效果對(duì)比如圖15 所示(彩色效果見《計(jì)算機(jī)工程》官網(wǎng)HTML 版)。在圖15 中裂縫圖像的骨架匹配度指標(biāo)計(jì)算結(jié)果如表1所示。
表1 骨架匹配度計(jì)算結(jié)果Table 1 Calculation results of skeleton matching degree %
圖15 裂縫骨架提取效果比較Fig.15 Comparison of crack skeleton extraction effect
對(duì)于圖像中的單條無(wú)分叉裂縫,如圖15 中第1 行和第2 行實(shí)驗(yàn)圖像,所提算法提取的裂縫骨架整體光滑性更好,Zhang 細(xì)化算法提取的骨架存在分叉,Hilditch 細(xì)化算法和歐氏距離變換法得到的骨架均存在斷裂。對(duì)于骨架端點(diǎn),Zhang細(xì)化算法和Hilditch細(xì)化算法存在彎曲,與裂縫實(shí)際形態(tài)存在誤差。
對(duì)于邊緣十分復(fù)雜的裂縫圖像,如圖15 中第3 行實(shí)驗(yàn)圖像,Zhang 細(xì)化算法提取的裂縫骨架斷點(diǎn)和分叉較多,無(wú)法直接應(yīng)用于后續(xù)分析,Hilditch 細(xì)化算法和歐氏距離變換法提取的裂縫骨架雖然減少了分叉情況,但依然存在明顯的骨架斷裂,所提算法提取的裂縫骨架,不僅光滑連續(xù),且基本擬合了裂縫真實(shí)形態(tài),充分驗(yàn)證了所提算法的魯棒性和有效性。
為了進(jìn)一步研究裂縫幾何參數(shù)計(jì)算方法的有效性和準(zhǔn)確性,實(shí)際拍攝了4 張具有代表性的裂縫圖像進(jìn)行計(jì)算,如圖16 所示。根據(jù)文獻(xiàn)[16]中關(guān)于像素尺寸與實(shí)際尺寸轉(zhuǎn)換的計(jì)算公式,將計(jì)算結(jié)果轉(zhuǎn)換為實(shí)際長(zhǎng)度,并計(jì)算其與真實(shí)值之間的相對(duì)誤差。
圖16 實(shí)際拍攝的裂縫圖像Fig.16 Actual captured crack images
根據(jù)文獻(xiàn)[16],照相機(jī)成像原理為凸透鏡模型,像素尺寸乘以像素解析度即為實(shí)際尺寸。像素解析度與拍攝距離(L)、相機(jī)焦距(f)、圖像分辨率(R)、相機(jī)傳感器尺寸(S)之間的關(guān)系表示如下:
其中:η為像素解析度。在實(shí)驗(yàn)中,4 組數(shù)據(jù)的參數(shù)如表2 所示。
表2 尺寸轉(zhuǎn)換參數(shù)Table 2 Size conversion parameters
根據(jù)表2 的參數(shù),將算法計(jì)算結(jié)果進(jìn)行轉(zhuǎn)換,并與實(shí)際測(cè)量值進(jìn)行比較,計(jì)算相對(duì)誤差,結(jié)果如表3所示。由表3 可以看出,所提裂縫幾何參數(shù)計(jì)算算法在實(shí)際應(yīng)用中具有可行性,其中裂縫長(zhǎng)度相對(duì)誤差均控制在15%以內(nèi),寬度相對(duì)誤差控制在20%以內(nèi),絕對(duì)誤差控制在2.5 mm 以內(nèi),在可接受范圍內(nèi)。
表3 實(shí)驗(yàn)計(jì)算結(jié)果Table 3 Experimental calculation results
由于實(shí)驗(yàn)過(guò)程中存在多方誤差,如拍攝實(shí)驗(yàn)圖像時(shí)角度偏差、人工測(cè)量具有偶然性以及算法本身存在誤差等,因此該實(shí)驗(yàn)結(jié)果并不能說(shuō)明所提裂縫參數(shù)計(jì)算算法準(zhǔn)確度較低,但其對(duì)較寬裂縫的計(jì)算效果較好,如裂縫3 的長(zhǎng)度相對(duì)誤差為8.75%,寬度相對(duì)誤差為2.27%。在后續(xù)研究中,將進(jìn)一步針對(duì)細(xì)小裂縫的參數(shù)計(jì)算方法進(jìn)行改進(jìn)。
本文采用U-Net 神經(jīng)網(wǎng)絡(luò)分割裂縫,提出基于多源點(diǎn)熱擴(kuò)散方法的裂縫幾何特征計(jì)算算法,從長(zhǎng)度和寬度兩方面對(duì)裂縫進(jìn)行參數(shù)計(jì)算。在長(zhǎng)度計(jì)算方面,針對(duì)裂縫狹長(zhǎng)的幾何特性,基于多源點(diǎn)熱擴(kuò)散方法計(jì)算裂縫的測(cè)地距離場(chǎng),獲取裂縫骨架,獲取的骨架光滑、連續(xù)且無(wú)多余分叉,減少了裂縫長(zhǎng)度計(jì)算過(guò)程中的誤差。在寬度計(jì)算方面,通過(guò)測(cè)地距離全局極大點(diǎn)得到裂縫最寬點(diǎn),避免了在尋找最寬點(diǎn)過(guò)程中多次迭代,減少了計(jì)算量。將多源點(diǎn)熱擴(kuò)散方法應(yīng)用于裂縫參數(shù)計(jì)算,不僅充分利用了裂縫復(fù)雜的邊緣信息,同時(shí)其計(jì)算得到的測(cè)地距離場(chǎng)可進(jìn)一步應(yīng)用于寬度計(jì)算,為參數(shù)分析提供了便利。實(shí)驗(yàn)結(jié)果表明,該算法適用于裂縫狹長(zhǎng)彎曲、邊緣復(fù)雜多變的幾何特征計(jì)算,且對(duì)于裂縫參數(shù)計(jì)算具有較好的魯棒性和應(yīng)用前景。后續(xù)將針對(duì)細(xì)小裂縫進(jìn)行算法改進(jìn),進(jìn)一步降低計(jì)算過(guò)程中的誤差。