胡文魁 鄧 暉 付志旭 安棟陽 段 銳
(華南理工大學土木與交通學院,廣州 510641)
裂縫是橋梁病害中最常見的形式,不僅出現(xiàn)頻率高,而且對結構的安全性和可靠性均有較大影響,特別對于安全等級較高的鋼筋混凝土橋或者預應力混凝土橋,一旦出現(xiàn)明顯的結構裂縫,將降低橋梁結構的承載力。如果不及時檢查發(fā)現(xiàn)并采取有效措施進行修復加固,在車輛荷載、溫度作用等多種因素影響下,裂縫會加速發(fā)展,一旦發(fā)展成貫通裂縫,將引發(fā)嚴重的安全事故,因此,對橋梁裂縫進行長期定期的檢測是保證結構安全的重要手段之一。
近年來,為了提高橋梁病害檢測自動化水平,快速準確地提取出橋梁裂縫圖像,國內外眾多學者進行了廣泛深入的研究。Hendrickson等提出通過Sobel邊緣檢測算法,把病害區(qū)域的周長計算出來,然后通過設定的閾值(T=20)進行圖像去噪[1]。張德津等利用圖像空間聚合特征進行瀝青路面裂縫的分割,其核心思想是把圖像分塊,將分塊后的圖像作為處理對象,使用逐步求精法完成子塊圖像的分割[2]。Kirschke等提出利用圖像直方圖技術來提取路面的裂縫病害,這種算法主要是通過作出圖像的灰度直方圖,然后,利用直方圖波谷對應的灰度值來提取路面裂縫,此方法在目標裂縫對比度較強的情況下效果較好[3]。孫波成在大津(OSTU)分割算法的基礎上進行改進,提出一種基于最大類內、類間距的方法來確定閾值,分割結果顯示:二值圖像中不僅含有很多隨機分布的噪聲點,而且裂縫出現(xiàn)了斷斷續(xù)續(xù)的狀況,后續(xù)通過形態(tài)學算法來解決上述問題[4]。Tang等提出一種新的裂縫分割算法,基本原理是先利用灰度直方圖谷底閾值法得到裂縫的大概位置,進而利用基于B樣條的Snake模型和形態(tài)學技術來具體確定裂縫的位置[5]。這些基于傳統(tǒng)的圖像處理方法都是通過直接處理圖像得到裂縫的典型特征,進而提取出裂縫進行幾何尺寸的測量。然而存在的問題在于圖像增強處理后對比度不足、去噪效果不明顯、分割后裂縫連續(xù)性較差等。
隨著計算機技術的高速發(fā)展和深度學習的崛起,國內外學者開始把神經(jīng)網(wǎng)絡用于橋梁的病害檢測,目前已取得大量的研究成果。李楠利用caffe框架里面的LeNet-5神經(jīng)網(wǎng)絡模型對圖像進行有無裂縫的識別,將該神經(jīng)網(wǎng)絡的激活函數(shù)換為Relu,取得不錯的識別效果[6]。趙珊珊等在VGGNet網(wǎng)絡的基礎上進行改進,刪除了VGGNet網(wǎng)絡中的第五個卷積、池化層以及全連接層,試驗結果顯示:該網(wǎng)絡的裂縫檢測效果明顯優(yōu)于傳統(tǒng)識別方法[7]。劍橋大學提出一種基于SegNet的模型來分割圖像,該模型通過訓練1 000張圖像,最終得到城市道路的分割網(wǎng)絡,并且該模型具有很強的泛化能力[8]。
本文主要研究內容如下:1)選擇合適的無人機和云臺,使相機能垂直于橋梁表面拍攝,依據(jù)被檢橋梁的實際情況,制定合理的無人機檢測方案,獲取大量橋梁圖像。2)將采集到的橋梁圖像進行預處理,利用BCI-AS全卷積神經(jīng)網(wǎng)絡模型將裂縫圖片分割成裂縫二值圖。3)通過投影技術最小二乘擬合中心線的算法對分割的裂縫二值圖進行寬度測量并與現(xiàn)場實測進行對比,驗證本文算法的可行性。研究方法主要結構流程如圖1所示。
圖1 本文研究方法流程
通過無人機采集大量橋梁裂縫圖像,為避免無人機拍到畸變的圖像,必須保證無人機相機垂直于橋梁表面。本文選用經(jīng)緯 M300 RTK搭載禪思H20采集橋梁圖像。禪思H20包含30 Hz高幀率熱成像相機、1 200萬像素廣角相機、2 000萬像素變焦相機和激光測距儀,質量為678±5 g,它支持經(jīng)緯M300 RTK,相機俯仰轉動范圍為-120°~30°。經(jīng)緯 M300 RTK配備了上下補光燈,其有效照明距離為5 m,能彌補采光不足的缺陷,內置5 000 mAh、7.2 V電池,正常情況下使用續(xù)航時間長達1小時,支持禪思 XT2、禪思 XT S、禪思 Z30、禪思 H20、禪思 H20 T等云臺。其具體形式見圖2。
圖2 大疆經(jīng)緯M100
在利用無人機進行橋梁裂縫檢測時,對于設置有靶點的橋梁,可以依據(jù)靶點實現(xiàn)像素的標定。對于沒有設置靶點的橋梁,首先依據(jù)檢測精度確定單張圖像所拍攝橋梁底面的實際尺寸,然后根據(jù)相機焦距、實物大小和物距之間的關系確定相機的焦距和相機與橋梁底面的距離,從而實現(xiàn)相機的標定。相機拍攝圖像的實際大小、相機傳感器尺寸、相機焦距和相機攝像頭與橋梁表面距離之間的聯(lián)系見式(1)。
(1)
式中:f為相機的焦距;D為相機攝像頭到橋梁底面的距離;w為相機傳感器的靶面寬度;W為被拍攝物體的實際寬度。
根據(jù)JTG H11—2004《公路橋涵養(yǎng)護規(guī)范》[9],橋梁裂縫檢測精度應控制在0.2 mm以內,因此單個像素所代表的實際大小也應該控制在0.2 mm×0.2 mm以內。本文采用的相機有效像素為5 000×4 000,當橋梁檢測精度為0.2 mm時,拍攝的圖像對應結構表面的真實尺寸為1 000 mm×800 mm,當橋梁檢測精度為0.1 mm時,拍攝的圖像對應結構表面的實際尺寸為500 mm×400 mm。另外,由于經(jīng)緯 M300 RTK具有自動避開障礙物的功能,在采集圖像過程中,應保證無人機到橋梁表面的距離大于飛行的安全距離,確保無人機安全有序地飛行。
通過查詢禪思H20的相機參數(shù)可得,2 000萬變焦相機傳感器的靶面尺寸是1/1.7(英寸),即7.6 mm×5.7 mm。當焦距設定為85 mm,橋梁檢測精度為0.1 mm時,依據(jù)式(1)可得無人機攝像頭與橋梁底面的距離為5 600 mm;當焦距不變,橋梁檢測精度為0.01 mm時,無人機攝像頭與橋梁底面的距離為560 mm。在上述兩種狀況下,無人機到橋梁表面的距離均大于飛行的安全距離。為了使橋梁病害檢測更加準確,本文采用檢測精度為0.01 mm的相機參數(shù)獲取圖像。
在無人機進行橋梁裂縫檢測時,需要依據(jù)無人機獲取到的圖像資料計算裂縫的寬度,同時,盡量通過圖像資料確定出裂縫的位置和類型,通過這些信息對橋梁健康狀況作出精準的判斷。但是,目前在橋梁設計階段,對橋梁裂縫把控十分嚴格,橋梁中出現(xiàn)的結構裂縫都很小,并且威脅到橋梁結構安全的裂縫都是從細微的裂縫發(fā)展起來的,為了滿足檢測精度,無人機需要近距離拍攝結構表面的病害圖像,這就導致無人機拍攝到的單張圖像,只能覆蓋橋梁表面很小的面積,對一跨橋梁底面進行裂縫檢測就需拍攝成千甚至上萬張圖像,致使裂縫位置的確定成了一個難題。為了解決上述問題,本文提出一種基于GPS定位和有序拍攝編號相結合的方法來采集圖像,即按照不同的構件進行分類編號,按照特定的規(guī)則通過GPS定位拍照,并將采集到的圖像有序編號。
利用無人機對具體橋梁進行裂縫檢測時,首先找到橋梁設計圖紙,依據(jù)檢測精度確定單張圖像的大小,然后按單張圖像大小平均分塊并進行編號,具體編號如圖3所示。編號中的第一個數(shù)字代表第幾跨橋梁,第二個數(shù)字代表橋梁橫向方向的具體位置,第三個數(shù)字代表橋梁縱向的位置。在利用無人機進行橋梁檢測過程中,當無人機飛行到每一塊中心點位置時,懸停拍攝圖像,將采集到的圖像利用分塊時的序號進行編號,最后,通過卷積神經(jīng)網(wǎng)絡和數(shù)字圖像處理技術識別出裂縫圖像并計算裂縫的幾何參數(shù),并依據(jù)圖像的編號確定裂縫的具體位置。
圖3 橋梁底面分塊示意
為了利用上述方法實現(xiàn)裂縫的定位,無人機獲取圖像主要有以下兩種途徑:
1)依據(jù)檢測精度計算出單張圖片所拍攝的實際大小、焦距以及攝像頭與橋梁底面的距離,然后根據(jù)飛行速度和單張圖片大小確定拍攝的時間間隔,最終讓無人機在特定時間間隔內自動拍攝并編號,保證拍攝到的所有圖像拼接起來得到橋梁的底面或側面。
2)根據(jù)單張圖像所拍攝到的實際大小和無人機攝像頭與橋梁表面的距離,可以計算出結構表面每一塊中心點具體的空間位置,進而得到無人機懸停時的空間位置,然后把這些空間位置數(shù)據(jù)輸入到無人機的飛控軟件中,以此實現(xiàn)無人機的自動飛行和自動懸停拍攝。當應用這種方法時,無人機在飛行過程中完全處于自動飛行狀態(tài),這能減少工作人員的調試誤差,顯著提高檢測效率。
由于多種因素的綜合影響,導致采集到的圖像不清晰,圖像像素灰度值比較集中,目標裂縫對比度較差等狀況。所以,必須通過相應的算法來增強圖像,改良圖像的整體效果。本文利用無人機在隨機環(huán)境條件下采集大量圖片,并篩選出2 500張原始裂縫圖片為建立全卷積神經(jīng)網(wǎng)絡分割模型的數(shù)據(jù)集做準備。為減小網(wǎng)絡模型的參數(shù)計算量,將全部圖片統(tǒng)一按加權平均法進行灰度化處理,效果如圖4b所示??紤]到原始圖片曝光不足,對比度偏低,且圖像中包含大量干擾裂縫檢測的噪聲,為提高模型訓練質量,將灰度圖再進行分段線性變換[10]增強和中值濾波[11]去噪。分段線性不僅增強了目標裂縫的對比度,而且算法處理速度快,是比較好的圖像增強方法,增強效果如圖4c所示。中值濾波是一種能保留圖像細節(jié)信息的非線性去噪技術,它有效改善了均值濾波處理圖像后目標邊緣模糊的問題,且能很好地去除圖像中的椒鹽噪聲,去噪效果如圖4d所示。
a—原圖;b—灰度圖;c—分段線性變換;d—中值濾波。
將2 500張裂縫圖片進行加權平均灰度化、分段線性變換、中值濾波等圖像增強去噪處理,并將圖像分辨率歸一化為500×400,按照1∶4的比例隨機分為測試集和訓練集,其中訓練數(shù)據(jù)有2 000張圖像,測試數(shù)據(jù)有500張圖像。
將按上述步驟處理得到的數(shù)據(jù)集和處理方法均命名為GPM(Gray-Piecewise Linear Transformation-Median Filtering),在裂縫圖像放入模型訓練之前,進行GPM處理,以減小光照、噪聲等因素對下一步提取裂縫形狀(分割裂縫)帶來的影響,提高分割質量和精度,這一步是非常必要的。
傳統(tǒng)的基于閾值分割[12]或基于邊緣檢測[13]的圖像分割算法存在一些普遍問題,如需要手動輸入閾值等參數(shù),工作量大,占用大量人力資源,無法自動、高效地分割裂縫,達不到智能化提取裂縫的要求。另外,這些算法都是利用像素之間的灰度信息提取目標裂縫,并沒有更細致地考慮圖像的空間信息,導致分割后的目標裂縫連續(xù)性較差。
目前,由于深度學習模型在視覺應用中取得了大量成果,已有大量的工作者致力開發(fā)應用于圖像分割的深度學習模型。為了更加智能化地將裂縫完整地提取出來,本文引入全卷積神經(jīng)網(wǎng)絡進行裂縫分割。
卷積神經(jīng)網(wǎng)絡早期主要應用于圖像分類領域[14-15],但隨著計算機算力逐步增強和研究者對卷積神經(jīng)網(wǎng)絡的深入研究,部分學者著手利用卷積神經(jīng)網(wǎng)絡進行語義分割,其利用像素點周圍的像素塊作為輸入數(shù)據(jù),通過大量的數(shù)據(jù)進行訓練得到訓練完畢的網(wǎng)絡模型,進而可以測試出像素塊中心點的類別,最終實現(xiàn)圖像像素點分類。該算法存在以下缺陷:1)選擇像素點周圍的像素塊作為該像素點的輸入數(shù)據(jù)時,會增加模型的儲存空間;2)圖像塊大小決定感知域大小,當像素點的圖像塊選擇較大時,不僅計算量會成倍增加,而且還占用更多的內存空間,導致模型訓練效率低下;而當像素點圖像塊選擇較小時,又會因感知域較小,只能提取到圖像的部分特征,導致圖像分割效果欠佳;3)相鄰像素點的像素塊中包含很多重合的像素點,在圖像卷積計算過程中致使計算冗余,降低網(wǎng)絡的運行效率;4)卷積神經(jīng)網(wǎng)絡模型中的全連接層[16]附帶的大量權重和偏置參數(shù)將進一步降低網(wǎng)絡的訓練效率?;诰矸e網(wǎng)絡存在的以上問題,卷積神經(jīng)網(wǎng)絡很少被用來解決圖像分割問題。
直到2015年,Long等開發(fā)了一種能自動將圖像目標對象分割出來的全卷積神經(jīng)網(wǎng)絡(FCN)[17],它在沒有全連接層的情況下實現(xiàn)了像素點分類,并獲得較好的分割效果。全卷積神經(jīng)網(wǎng)絡是端到端的網(wǎng)絡模型,在分割精度和速度方面相較于卷積模型都有明顯提高。其關鍵技術是在卷積層或池化層后面緊接反卷積層,反卷積層通過上采樣操作使輸出層的圖像大小與原始圖像相同,這種改變給分割模型帶來了以下優(yōu)點:1)網(wǎng)絡輸入層支持任意大小的圖像,不要求所有訓練集和測試集的圖像大小必須相同,使模型具有更強的泛化能力;2)避免了利用像素周圍的像素塊作為模型的輸入數(shù)據(jù),減少了網(wǎng)絡的儲存空間,使網(wǎng)絡訓練效率大大提高;3)利用卷積操作在整幅圖上提取全局特征,能有效提高圖像的分割精度。
全卷積神經(jīng)網(wǎng)絡的層級結構如圖5所示,從圖中可以看出,全卷積神經(jīng)網(wǎng)絡的編碼階段通過卷積、池化組合實現(xiàn)了圖像的特征提取,且在編碼階段的第5次池化運算后,圖像大小變成輸入圖像的1/32,為了實現(xiàn)圖像分割,即圖像像素級分類,需要對卷積、池化后的特征圖采取反卷積操作(上采樣),依據(jù)上采樣具體操作流程的差異將網(wǎng)絡命名成FCN-32s、FCN-16s和FCN-8s。FCN-32s是把編碼階段的特征提取結果直接進行32倍的反卷積操作,使其恢復到原圖大小,該網(wǎng)絡模型對圖像細節(jié)部分處理過于粗糙,分割后的目標對象比較模糊,效果不佳。FCN-16s首先將卷積、池化階段的特征提取結果進行2倍反卷積操作,然后把反卷積計算結果與第四次池化操作后的特征圖相結合,最后針對結合后的結果進行16倍反卷積操作得到圖像分割結果,該網(wǎng)絡模型分割效果優(yōu)于FCN-32s。FCN-8s首先將卷積、池化階段的特征提取結果進行2倍反卷積操作,把反卷積計算結果與第四次池化操作后的特征圖相結合,然后利用2倍反卷積操作處理上述結果,再將其與第三次池化操作后的特征圖相結合,最終針對結合后的結果進行8倍反卷積操作得到圖像的最終分割結果,該網(wǎng)絡模型分割結果優(yōu)于FCN-16s。
圖5 全卷積神經(jīng)網(wǎng)絡結構
為了更好地提取圖像中的目標裂縫,本文提出一種基于全卷積神經(jīng)網(wǎng)絡的橋梁裂縫圖像自動分割模型(Bridge Crack Image-Automatic Segmentation, BCI-AS),BCI-AS全卷積模型依據(jù)關鍵技術可以分為收縮路徑和擴張路徑兩部分,收縮路徑主要通過多個卷積層以及池化層的組合來提取重要特征,擴張路徑主要利用反卷積操作還原圖像大小并實現(xiàn)目標裂縫的提取,該網(wǎng)絡模型的框架結構如圖6所示。
從圖6可以看出,除去輸入層和輸出層,BCI-AS模型包含9個模塊,具體內容如下:
輸入層的輸入對象是經(jīng)過預處理后大小為L×L×1的圖像。
第一模塊由兩個卷積層以及一個池化層構成,兩個卷積層均有64個卷積核。除了輸出層以外,模型中所有卷積層都利用“Relu”激活函數(shù),卷積核窗口均為3×3,步長為1;模型中所有池化層均采用最大池化的方式,池化模板為2×2,步長為2。第一模塊輸出特征圖大小為(L/2)×(L/2)×64。
第二模塊的層級結構和第一模塊相似,區(qū)別在于這兩個卷積層均有128個卷積核,即兩個卷積操作后得到圖像的128個特征。第二模塊輸出特征圖大小為(L/4)×(L/4)×128。
第三模塊的層級結構與第二模塊相似,只是兩個卷積層的卷積核數(shù)量不同,該模塊卷積核的個數(shù)為256。第三模塊輸出特征圖大小為(L/8)×(L/8)×256。
第四模塊的層級結構與第三模塊相似,也是兩個卷積層的卷積核數(shù)量不同,該模塊卷積核的數(shù)量為512個。第四模塊輸出特征圖大小為(L/16)×(L/16)×512。
第五模塊僅有兩個卷積層,它們的卷積核數(shù)量都是1 024個。該模塊沒有池化層,輸出特征圖大小為(L/16)×(L/16)×1 024。
第六模塊由一個反卷積層、一個特征組合層和兩個卷積層構成,其中,所有模塊中反卷積層的卷積核都為3×3,步長為2。該模塊反卷積操作后,圖像大小擴大一倍,得到的圖像特征數(shù)量為512;特征組合層是將本模塊上采樣層得到的結果與第四模塊卷積操作后得到的特征組合起來,將圖像的特征擴展一倍,此時圖像特征數(shù)量為1 024;經(jīng)過兩個卷積操作后,圖像的特征數(shù)量變?yōu)?12個。第六模塊輸出特征圖大小為(L/8)×(L/8)×512。
第七模塊的層級結構和第六模塊相似。該模塊反卷積操作后,圖像相較上一模塊擴大一倍,得到的圖像特征數(shù)量為256;特征組合層是將本模塊上采樣層得到的結果與第三模塊卷積操作后得到的特征組合起來,將圖像的特征擴展一倍,此時圖像特征數(shù)量為512;兩個卷積層操作后,得到圖像的256個特征。第七模塊輸出特征圖大小為(L/4)×(L/4)×256。
第八模塊的層級結構與第七模塊相似。該模塊反卷積操作后,圖像大小相較于上一模塊擴大一倍,得到的圖像特征數(shù)量為128;特征組合層是將本模塊上采樣層得到的結果與第二模塊卷積操作后得到的特征組合起來,將圖像的特征擴展一倍,此時圖像特征數(shù)量為256;兩個卷積層操作后,得到的特征數(shù)量為128。第八模塊輸出特征圖大小為(L/2)×(L/2)×128。
第九模塊的層級結構與第八模塊相似。該模塊反卷積操作后,圖像大小相較于上一模塊擴大一倍,得到的圖像特征數(shù)量為64;特征組合層是將本模塊上采樣層得到的結果與第二模塊卷積操作后得到的特征組合起來,將圖像的特征擴展一倍,此時圖像特征數(shù)量為128;兩個卷積層操作后,得到的特征數(shù)量為64。第九模塊輸出特征圖大小為L×L×64。
輸出層只有一個卷積層,其中卷積核窗口為1×1,卷積核數(shù)量是2個,即圖像的前景(目標裂縫)與背景,激勵函數(shù)為“Sigmoid”。最終輸出圖像大小為L×L×2。
本文采用Python語言并調用TensorFlow深度學習框架來搭建BCI-AS卷積模型。
2.3.1數(shù)據(jù)集的準備
訓練BCI-AS全卷積網(wǎng)絡模型前,第一步,選取上述預處理后的GPM數(shù)據(jù)集制作相應的標簽圖像,即將圖像中的裂縫用白色(像素灰度值255)標記出來,圖像的其余背景部分設置為黑色(像素灰度值為0),并將標記好的圖像保存為PNG格式;第二步,將標記好的標簽圖像與數(shù)據(jù)圖像一一對應起來并進行編號;第三步,對訓練數(shù)據(jù)進行批量處理,即數(shù)據(jù)的batch操作,批量輸入多張訓練圖像,并且輸入數(shù)據(jù)中的圖像與標簽一一對應,經(jīng)過上述步驟后就得到BCI-AS模型的數(shù)據(jù)集。
2.3.2模型超參數(shù)的設置
本文以訓練過程的損失函數(shù)值和準確率來評判模型訓練效果,以測試的準確率來評判模型的泛化能力,然后通過對比不同參數(shù)下模型的測試結果,在Tensorflow深度學習框架中調用sparse_softmax_cross_entropy_with_logits函數(shù)作為訓練BCI-AS模型的損失函數(shù),采用自適應矩(Adaptive Moment Estimation)依據(jù)訓練情況動態(tài)調整學習率,初始學習率(init_learning_rate)設置為1×e-3,訓練批次(batch_size)大小為6,訓練輪數(shù)總計3 000次。
2.3.3模型訓練結果
隨著訓練過程的推進,經(jīng)過3 000次迭代,分割準確率達到94.45%。最終模型訓練階段的損失函數(shù)值和準確率的變化曲線如圖7和圖8所示。
圖7 BCI-AS模型訓練損失函數(shù)變化曲線
圖8 BCI-AS模型訓練準確率變化曲線
2.3.4圖像分割結果
將圖像輸入到訓練完畢的全卷積神經(jīng)網(wǎng)絡分割模型中,圖像的分割效果見圖9。
a—預處理后的圖像;b—分割后的效果。
由圖9可以看出,基于全卷積神經(jīng)網(wǎng)絡分割算法定位精度高,噪聲相對較少,分割后裂縫具有良好的連續(xù)性,能為后續(xù)裂縫幾何參數(shù)計算做好充分準備。另外,該算法只需在訓練時調整超參數(shù),待模型訓練好后,可直接對裂縫圖像進行分割,操作方便,在處理大批量圖像時具有顯著優(yōu)勢。
連通域標記是分析二值圖像的重要手段,它主要通過特定的規(guī)則標記二值圖像中的目標對象,讓圖像中每個單獨連通的目標區(qū)域成為有特定標簽的塊[18],進而計算各個標識塊的幾何特征值,最終達到去除噪聲或對目標區(qū)域進行分析計算的目的。
由于像素是分析二值圖像的基本單位,它的鄰域范圍內有8個像素點。根據(jù)鄰接像素點的數(shù)量和位置的差異,連通域標記可以具體分為4連通域標記和8連通域標記,其中,4連通域標記的4個位置對應中心像素的左、右、上、下4個像素點,8連通域標記的8個位置對應中心像素的左上、上、右上、左、右、左下、下、右下8個像素點,上述兩種連通域標記的鄰接關系如圖10所示。
a—4連通;b—8連通。
連通域標記是對目標對象進行幾何特征分析的前提,它的實質就是依序掃描整張圖像,然后將目標像素點編號標記,同一連通域的像素點使用相同的編號。若M為裂縫二值圖像,分別利用4連通域和8連通域對其進行標記,標記后的結果分別為M1和M2(0、255為圖像的灰度值,A、B、C為標記后連通域的編號),如圖11所示。
圖11 4連通域和8連通域的標記結果
從圖11連通域的標記結果可知,采用4連通和8連通標記結果具有很大差異,針對目標裂縫自身特性以及后續(xù)計算的便利性,本文采用8連通進行連通域的標記,通過Open CV2中的findContours()函數(shù)來檢測圖像中的連通域,得到返回參數(shù)Contours,利用Contours可以獲取各個連通域的面積、最小外接矩形、周長、矩形度、最小外接橢圓的長短軸比和圓形度等特征參數(shù)。
在圖像分割操作后,對得到的二值圖像采用8連通域進行標記,并利用紅色的最小外接矩形框出二值圖像中的每個連通域,同時對每個連通域編號,連通域標記編號后的二值圖像如圖12所示。
a—形態(tài)學處理后裂縫;b—最小外接矩形框出的裂縫。
圖12中各個連通域的幾何特征值的計算結果如表1所示。
表1 二值圖像連通域幾何特征計算結果
由圖12和表1中各個連通域的數(shù)量和對應的幾何特征值可以看出,經(jīng)過分割后的裂縫二值圖像中仍然存在部分噪聲,對后續(xù)橋梁裂縫相關信息的計算帶來干擾。本文主要利用橋梁裂縫自身的特性估算出裂縫連通域特征參數(shù)的大致范圍,通過連通域特征參數(shù)將噪聲連通域刪除,得到無噪聲的裂縫二值圖像,為后續(xù)裂縫寬度的計算奠定堅實的基礎。
混凝土橋梁表面的裂縫主要呈現(xiàn)細長連續(xù)的線性形態(tài),其面積明顯大于噪聲的面積,分布是隨機的、不規(guī)則的、比較復雜的。
根據(jù)裂縫特性,具體通過以下四點來識別目標裂縫:
1)二值圖像中,噪聲連通域的面積比裂縫小,可以設定一個閾值T,當連通域的面積不超過設定閾值T,將此連通域視為噪聲區(qū)域,并將其刪除。
2)大多數(shù)情況下,橋梁裂縫在圖像中呈現(xiàn)細長的線性形態(tài),因此其最小外接矩形的長寬比通常比較大。
3)裂縫大多呈一定的彎曲狀,另外,由于混凝土橋梁裂縫寬度都很小,它呈現(xiàn)在圖像中也比較纖細,所以,它的連通域矩形度值也比較小。
4)裂縫形狀是復雜的、不規(guī)則的和無規(guī)律可循的,因此它的連通域圓形度值也很小。
根據(jù)裂縫連通域的特性,本文將面積S<300、最小外接矩形長寬比P1<5、矩形度P2>0.5、圓形度D>0.5的連通域判定為噪聲,把這些判定條件加入到程序中,并使用 cv2.drawContours(img,[contours[i]], 0, 0,-1)函數(shù)把判定為噪聲的連通域變?yōu)楸尘?,最終得到剔除噪聲后的效果如圖13所示。
a—分割后的二值圖;b—剔除噪聲區(qū)域后的二值圖。
裂縫寬度是評價橋梁結構安全的重要指標之一,當橋梁裂縫寬度超過限值時,部分混凝土會退出工作,導致預應力鋼束和普通鋼筋承受更大的負荷,此外,超過限值的裂縫還會造成鋼筋銹蝕,危及結構安全。
近幾年研究者提出多種計算裂縫寬度的方法,代表性算法以以下兩類為主:王聰雅直接采用投影法進行計算,即將裂縫上下邊緣的最大像素點數(shù),經(jīng)比例計算后的值作為裂縫寬度[19]。王鵬利用裂縫連通域面積與裂縫細化后長度的比值作為裂縫平均寬度。但是由于大多數(shù)情況下,橋梁結構裂縫是不規(guī)則的曲線,裂縫不同位置的寬度差別很大,并且裂縫寬度方向需垂直于裂縫走向,所以采用以上兩種方法進行裂縫寬度計算存在較大誤差[20]。為了使計算結果更準確,本文提出利用基于投影技術的最小二乘擬合中心線法計算裂縫寬度。
基于投影技術的最小二乘擬合中心線法是在投影法的基礎上,依據(jù)目標裂縫上下邊緣像素點的坐標,進而獲得裂縫中心線像素點的坐標,然后利用最小二乘法擬合裂縫中心線的函數(shù),依據(jù)函數(shù)表達式可知裂縫中心線的斜率,進而得到裂縫切線方向的夾角,最終計算出裂縫的實際寬度。基于投影技術的最小二乘擬合中心線法的裂縫寬度計算示意如圖14所示,其具體算法如下:
圖14 基于投影技術最小二乘擬合中心線法裂縫寬度的計算示意
1)將分類后的二值圖像進行旋轉。將縱向裂縫圖像旋轉90°,斜向裂縫圖像旋轉45°,橫向裂縫圖像不用旋轉。
2)將旋轉后圖像的水平方向作為橫坐標(X軸),然后,把圖像向X軸投影,得到橫坐標下裂縫的像素點數(shù)。
5)圖像第n列裂縫的寬度值wn=w′ncosθ。
6)重復步驟3)至步驟5),直到掃描完整張圖像。
7)最終取max(wn)作為該條裂縫的寬度值。
按以上步驟計算橋梁裂縫寬度,把裂縫的上述信息標記在圖中,如圖15所示。
L和W分別為裂縫的計算長度和寬度。
為了更好地對比上述兩種方法計算結果的準確率,本文將實測結果與圖像處理結果進行對比,結果如表2~4所示。
表2 本文方法裂縫寬度測量結果
從表2中,基于投影技術的最小二乘擬合中心線的方法計算結果相對誤差較小,相對誤差都在6%以下,檢測準確率較高,并且該算法計算速度快。
從表3和表4可看出,由于文獻[19]的方法沒有準確地定位裂縫的邊界,因此準確率偏低。文獻[20]的方法由于是通過面積和周長的比值作為裂縫的平均寬度,產(chǎn)生的隨機誤差也相對較大。因此本文算法準確率更高。為了進一步驗證利用基于投影技術最小二乘擬合中心線算法對裂縫寬度計算的精度,在200張原圖上利用本文算法統(tǒng)計檢測結果與實際測量結果并進行對比。試驗結果表明:200張裂縫圖片寬度提取平均誤差為6.76%,表明本文提出的算法具有理想的計算能力。
表3 文獻[19]方法裂縫寬度測量結果
表4 文獻[20]方法裂縫寬度測量結果
混凝土結構表面裂縫的提取一直是圖像處理中的難點[21],早期的基于閾值和基于邊緣檢測算法在混凝土橋梁裂縫分割中應用頗多,但存在去噪效果不明顯、分割后裂縫連續(xù)性較差等問題,這會直接影響到最終裂縫提取的準確性。近年來,由于深度學習模型在廣泛的視覺應用中取得了成功,已經(jīng)有大量的工作致力于開發(fā)使用深度學習模型的圖像分割方法。基于此,本文提出一種基于全卷積神經(jīng)網(wǎng)絡的橋梁裂縫圖像自動分割模型(BCI-AS)和一種基于投影技術的最小二乘擬合中心線的裂縫寬度測量算法,通過對比分析,研究得到的主要結論如下:
1)目前橋梁裂縫檢測方面缺乏開放的、通用的大樣本圖像數(shù)據(jù)庫,而深度學習的準確性依賴于大規(guī)模數(shù)據(jù)集樣本的訓練,因此本文利用無人機攝取了大量橋梁裂縫圖像,但是數(shù)據(jù)量還遠遠不夠,開展數(shù)據(jù)樣本采集整理是未來主要任務之一。
2)由于圖片中光照和噪聲的干擾,將會很大程度上影響裂紋的提取準確性,因此圖像增強是裂縫分割的前期和不可缺少的工作。本文提出了GPM圖像預處理方法,然而存在的局限性在于其對于單一或小樣本圖像數(shù)據(jù)處理效果較好,而對大規(guī)模圖像數(shù)據(jù)集做統(tǒng)一處理自適應性較差,因此開展針對BCI-AS模型訓練的大規(guī)模圖像自適應預處理方法是未來的重要任務。
3)BCI-AS全卷積模型分割結果顯示,該算法能高效準確地提取裂縫,同時保證了裂縫的連續(xù)性,為后續(xù)裂縫寬度計算做好充分準備。
4)對分割后的二值圖像進行連通域標記,同時,計算連通域的幾何參數(shù),通過裂縫連通域所具有的特性設定閾值,剔除噪聲區(qū)域的連通域,獲得純凈的裂縫二值圖像。
5)本文提出基于投影技術的最小二乘擬合中心線的方法進行計算,經(jīng)實測驗證,計算誤差在7%以內,證明了本算法計算的有效性。