王一兵,包騰飛,2,3,高治鑫
(1. 河海大學水利水電學院,江蘇 南京 210098;2. 河海大學水文水資源與水利工程科學國家重點實驗室,江蘇 南京 210098;3.三峽大學水利與環境學院,湖北 宜昌 443002)
混凝土壩普遍存在裂縫,裂縫會破壞壩體的整體性和防滲性能,對大壩產生威脅,所以對大壩裂縫的檢測和控制對大壩安全監測有著重要意義。傳統的混凝土裂縫監測技術主要依托裂縫計[1]或超聲波檢測[2],而混凝土壩的裂縫檢測主要靠人工目檢,我國混凝土壩壩高通常很大,有的甚至達到300 m級,人工檢測不僅耗費大量的人力,而且某些特殊部位的人工檢測是十分危險的。
近年來由于計算機技術的快速發展,催生了一系列基于機器視覺的混凝土裂縫檢測技術,這些技術用無人機、爬壁機器人等自動獲取混凝土圖像信息,再利用裂縫識別算法進行識別。在算法研究方面, Cha等[3]使用卷積神經網絡的深層結構來檢測混凝土裂縫。Nishyama等[4]通過在裂紋兩側建立反射目標來計算裂縫的位移。陳建立[5]建立卷積神經網絡模型對混凝土圖片進行檢測,提出重構圖片的采樣率為0.3時效果最優、二值化閾值為0.4時效果最優,但對于不同混凝土裂縫圖片的適用性不強;王睿等[6]運用RBF-SVM算法說明不同裂縫特征分配對裂縫識別產生較大影響。梁雪慧等[7]用改進的GoogLeNet卷積神經網絡進行裂縫識別。徐港等[8]提出基于連通域特征聚類的裂縫提取方法,解決小寬度多數量網狀裂縫的提取,但該方法需要調試的參數較多。在工程運用方面,周穎等[9]在實驗室條件下對鋼筋混凝土梁表面裂縫進行拍攝和處理,但使用工業級相機的實驗室條件不適合大壩現場實際條件。薛峰等[10]提出基于圖像處理的鐵路軌道裂縫檢測方法。姜會增[11]提出局部二值化的鐵路橋梁裂縫檢測技術。郭全民等[12]利用標記連通域算法對路面混凝土裂縫進行分類、提取。Bernstone等[13]通過間隔拍攝一系列圖像,從中識別出裂紋,并表明該技術可用于水電站混凝土結構。王麗等[14-15]基于MATLAB建立了混凝土壩裂縫監測系統,但前者沒有進行圖像標定,后者的標定方法無法考慮鏡頭畸變和角度傾斜的校正。
上述研究表明,計算機視覺在混凝土壩裂縫檢測領域的研究運用較少且存在標定方法不實用等問題,針對混凝土壩裂縫檢測分析需要快速、安全和便捷的要求,本文提出一種基于LabVIEW圖形化編程結合VDM視覺開發包的混凝土裂縫分析方法,便于行業人員快速檢測分析混凝土壩裂縫,同時對相似程序的快速開發有借鑒意義。
一般采用相機獲取大壩裂縫的圖像,大壩現場由于溫度、天氣、光照條件和檢測時間的變化,采集到的原始圖像通常存在有噪聲、陰影以及過曝光等一系列問題,為消除噪點,增強裂縫對比度,改善圖像質量,需要對圖像進行灰度化、濾波、分割、形態學處理,以達到圖像增強和銳化效果。
相機采集的原始圖像為RGB彩色圖像(圖1(a)),為了避免裂縫識別過程中條帶失真,必須對圖像進行灰度化處理。RGB圖像模型由紅綠藍三個平面構成,任一個平面都是8位灰度圖,抽取顏色平面可以得到灰度圖像如圖1(b)所示。

圖1 裂縫圖像
圖像濾波是過濾噪聲的主要手段,也是重要的圖像處理操作。不同濾波方式的選擇和參數的調整對濾波效果有重要的影響。常用的有鄰域平均濾波、高斯濾波等。另外,Roberts、Prewitt、Sobel等邊緣檢測算法通常也用于實現過濾圖像噪聲,保留目標特征的功能[16]。
鄰域平均濾波用某像素值一個鄰域內的全部像素的平均值來替換該像素值,起到模糊和過濾的作用。鄰域平均濾波算法無法考慮距離中心像素越遠對中心像素的作用越小的效應,作為改進,采用鄰域內像素的加權平均值代替中心像素,即高斯濾波。由于圖像是二維數組,引入二維高斯分布函數并將其離散化,以離散點上的高斯函數值為權值,可以得到高斯濾波器模板。二維高斯分布函數如下:
(1)
式中:(x,y)為像素點的坐標;σ為分布函數標準差。
對比分析鄰域平均濾波、高斯濾波、Laplacian算法和Canny算法的去噪效果可知,鄰域平均和高斯濾波對噪聲的剔除效果明顯,參數適合時,兩者均能取得良好效果(圖2(a)(b)); Laplacian算法圖像噪點過多、效果不佳(圖2(c));Canny算法在標定偏差值設置較大時能有效過濾噪聲,但只保留了裂縫的邊緣部分且有部分缺失,裂縫內部丟失則較為嚴重(圖2(d))。考慮到后續計算裂縫面積的要求,本文使用高斯濾波對圖像進行處理,既過濾了大部分噪聲,也完整保留了裂縫特征。

圖2 圖像濾波
為了提取裂縫特征,灰度圖像在濾波后需要進行圖像分割,將圖像分為背景和裂縫兩部分。一幅位深度為8的灰度圖像每個像素的取值在0到255之間,閾值函數對圖像每一個像素按照一定的閾值分為目標和背景,即:

(2)
式中:g(x,y)為全局閾值分割函數;k為分割閾值;f(x,y)為原圖像像素點灰度值。
由于裂縫圖像光照條件分布均勻,可使用全局灰度閾值對整個圖像進行分割,分割閾值的設定對分割效果有重要的影響,采用Otsu[17]提出的最大類間方差法和Kapur等[18]提出的最大熵法來進行圖像分割。最大類間方差法閾值通過類別之間的閾值差異的最大值來決定,即閾值的像素值k使下面的表達式(3)的值最大化:
(3)

式中:σB為類間方差;ωk、μk分別為從1到k的累積出現概率和平均灰度級;μT為整幅圖像的平均灰度級;pi為灰度圖像的概率分布。
最大熵法中,若k為閾值像素值,則有兩個熵:

(4)
(5)
式中:Hb、Hw分別為圖像閾值后的測量黑、白像素相關的熵;pbi為黑色背景概率;pwi為目標概率。
最優的閾值是使整幅圖像的熵Hb+Hw最大,即閾值是下面的表達式取最大值時的k:

(6)
經過閾值分割后的圖像如圖3所示,最大類間方差法和最大熵法效果沒有明顯差別,兩算法均能較好地實現圖像分割且保留目標區域,本文選擇最大類間方差法。同時注意到圖像中仍有大量的孤立點,需要進一步處理。

圖3 閾值分割
為了剔除裂縫圖像中的孤立點、填補小孔洞,需要對圖像進行形態學處理。形態學運算的基礎是膨脹和腐蝕,通過對像素與結構元素進行集合運算,使二值圖像中的目標區域進行擴大或縮小:
X?B={x|Bx1?X∩Bx2?XC}
(7)
式中:X為圖像像素集合;B為結構元素;x為集合X中的像素點;XC為集合X的補集;Bx1、Bx2分別為集合X、XC中像素點x及其鄰域內像素點組成的集合。當B為白色像素點時,會使圖像中的黑色特征區域擴大;當B為白色像素點時,會使圖像中的黑色特征區域縮小。
通過先膨脹再腐蝕或先腐蝕再膨脹可以得到閉和開運算,結合閉和開運算又衍生出了適當閉和適當開操作。形態學運算是作用于像素上的,在去除孤立點時容易改變裂縫的細節幾何特征,在形態學基礎上提出的高級形態學操作則是針對二值圖像中的粒子進行作用,可以滿足去除小的孤立點、填補裂縫小孔洞的同時不對裂縫幾何特征造成過大影響。針對二值化后的裂縫圖像存在很多孤立點、裂縫邊緣存在小毛刺和裂縫內部存在小孔洞的問題,先使用腐蝕迭代刪除圖像中的孤立點,再使用孔洞填充函數對裂縫內部的孔洞進行填充,最后使用開運算平滑裂縫邊緣,減少邊緣毛刺,處理結果如圖4所示。

圖4 圖像分割與高級形態學運算
為將圖像像素長度與真實世界物理單位相關聯,需要進行圖像標定。混凝土裂縫表面為平面,現場采集圖像相機與混凝土平面呈一定角度(圖5(a)),如果相機光軸和混凝土表面不垂直,則會產生透視誤差,即目標的放大倍率變化受到目標到鏡頭距離的影響,實際大小相同的點陣由于透視誤差在圖像上表現出畸變(圖5(b)),除了透視引起的線性畸變外,由于鏡頭的固有缺陷,圖像還會產生一定的非線性畸變,如徑向畸變和切向畸變等。徑向畸變是由于鏡頭在制造過程中的磨制工藝帶來的,切向畸變是由于鏡頭和相機在裝配過程中的定位不精確所產生的。

圖5 透視誤差與鏡頭畸變
經典的標定算法有Tsai兩步法[19]和張正友標定法[20]等,但其標定過程較為煩瑣,為了實現準確快速的標定,本文采用LabVIEW平臺視覺開發包進行標定,標定類型為Distortion model(Grid),可以同時考慮線性畸變和非線性畸變。采用張建國等[21]的標定方法,即多參數多項式畸變模型:
xu-xd=xd(1+K1r2+K2r4)+
[2P1xdyd+P2(r2+2xd2)]
(8)
yu-yd=yd(1+K1r2+K2r4)+
[2P2xdyd+P1(r2+2yd2)]
(9)
其中r2=xd2+yd2
式中:(xu,yu)為成像點的理想坐標;(xd,yd)為畸變引起的實際成像點坐標;K1、K2為徑向畸變系數;P1、P2為切向畸變系數。
標定結果的精度主要用畸變百分比和平均誤差來衡量,畸變百分比是每個像素到光軸的距離除以計算誤差產生的平均值;平均誤差采用下式計算:

(10)
計算裂縫長度需要提取裂縫骨架,骨架提取是迭代應用腐蝕直至目標的寬度等于一個像素。常用的骨架提取的算法有Zhang并行細化算法[22]、Hilditch細化算法[23]、Rosenfeld細化算法等[24]。NI vision提供了3種骨架函數:L-Skeleton函數、M-Skeleton函數和Skiz函數,L-Skeleton函數使用圖6(a)的結構元素形式,其處理效果如圖6(b)所示,M-Skeleton函數提取的骨架比L-Skeleton擁有更多的樹突和分支,Skiz函數是在一幅反轉的圖像上使用L-Skeleton函數得到的結果,即提取背景而不是目標裂縫的骨架。為了計算裂縫長度,要求提取的裂縫骨架沒有分支,本文采用L-Skeleton函數進行骨架的初步提取。

圖6 骨架函數L-Skeleton
由于裂縫圖像形狀不規則和邊緣不平整的原因,初步提取的骨架存在很多偽分支,偽分支會對裂縫長度計算造成影響,需要剪除。先用二值形態學的細化函數,將結構元素設為5×5,其中中間一行全為1,其他全為0,將偽分支從骨架中分離,再利用高級形態學的腐蝕迭代來刪除孤立分支,最終得到沒有分支的裂縫骨架。處理過程如圖7所示。

圖7 骨架提取
完成骨架提取后,用VDM粒子測量的方法求裂縫長度。粒子測量是VDM提供的一組功能強大的函數,粒子是指圖像上一組連續的非零像素的組合,經過圖像預處理后的裂縫目標即為粒子,粒子通過測量相關的屬性如位置、面積、形狀等來表示其特征,VDM粒子測量可以同時實現像素測量和現實世界測量。骨架是單像素的,可運用下面的公式計算裂縫長度L:
L=P/2
(11)
式中:P為粒子外邊界的長度,因為一個二值圖像的邊界是由離散的像素組成的,VDM的次級樣本邊界點可近似一個更平滑、更準確的周長。
經過圖像處理后的裂縫目標是一組連續的非零像素組合,也是VDM中定義的一個粒子,所以采用VDM粒子測量方法計算裂縫面積。在VDM粒子面積測量中,一個像素認為有一個平方單位的面積,所有裂縫區域所占的像素個數總和即為裂縫面積的像素單位表示。在像素面積轉化為真實世界單位時,一個像素認為是一個多邊形,其角落定義為中心像素正負各有半個像素的位置,如圖8所示,一個坐標為(3,8)的像素是一個正方形,其角上坐標為(2.5,7.5),(3.5,7.5),(3.5,8.5)和(2.5,8.5),4個角的像素轉化為現實世界坐標,整個粒子的面積通過標定的輪廓點進行計算。

圖8 裂縫面積計算原理
裂縫平均寬度W用裂縫面積A除以L得到:
W=A/L
(12)
LabVIEW是美國國家儀器(national instruments,NI)公司的圖形化編程平臺,其獨具特色的G語言提供了編程的可視化,即通過線、框和圖標的組合形成語句邏輯,使用前面板結合程序框圖的模式進行編程開發,這種圖形化編程的最大優點就是入門簡單,開發快速。NI vision是NI公司的視覺開發模塊,其全稱是vision development module(VDM),該模塊主要運用于計算機視覺、圖像處理領域,VDM中包含的視覺助手vision assistant(VA)能通過交互實現VDM的各種功能,并且可以將處理過程生成VI(LabVIEW編程平臺使用的腳本)導入LabVIEW,方便LabVIEW平臺實現調用。
采用LabVIEW+VDM的方式進行程序開發,先用VDM中的VA對圖像采集、處理和分析的各項功能進行研究和驗證,即直接在VA軟件中載入含裂縫的混凝土壩圖像,對圖像抽取顏色平面得到灰度圖像,再對圖像進行領域平均濾波、高斯濾波、Laplacian算法和Canny算法,比較后保留效果最好的高斯濾波算法,對處理后的圖像運用圖像分割算法,保留效果最好的Otsu算法,類似的,對圖像進行高級形態學運算、多參數多項式畸變模型標定、細化算法提取裂縫骨架,最后用粒子測量方法計算裂縫長度、面積和寬度,完成VA對圖像處理過程的驗證,再將VA中保留的算法生成VI腳本并導入LabVIEW中進行GUI開發和調試,最終實現裂縫檢測程序的開發,其主要流程如圖9所示。

圖9 混凝土壩裂縫檢測程序流程
為方便對大壩裂縫的快速檢測分析,開發了基于LabVIEW平臺的混凝土壩裂縫檢測程序。通過VA對圖像處理流程進行研究,生成VI導入LabVIEW編程平臺進行優化和調試,同時基于LabVIEW前面板+程序框圖的模式設計了混凝土壩裂縫檢測程序GUI,系統程序GUI如圖10所示。

圖10 混凝土壩裂縫檢測系統GUI
對某水庫大壩的混凝土裂縫原始圖像進行采集,使用相機采集,常規的標定是將相機鏡頭固定住,在鏡頭前放置一張標定板并采集一張圖像進行標定,再在相同的鏡頭角度下采集裂縫照片進行分析,這種標定方法步驟較為繁瑣,適用于實驗室條件下進行研究,水庫現場由于地形復雜,設備眾多等原因不方便假設固定的相機鏡頭。本文提出采用一次拍攝的方法,即將標定板貼于裂縫旁,拍攝含標定板的裂縫圖像(圖11),后期圖像處理時將標定板和裂縫目標分離,避免了相機鏡頭固定的麻煩。
運用本文裂縫檢測方法對原始圖像處理,主要包括圖像灰度化、圖像濾波、閾值分割等內容,處理過程及其效果如圖12所示。處理完成后能夠有效過濾混凝土裂縫圖像中的噪聲,保留完整的裂縫形態和輪廓。
圖像處理完成后,采用VDM視覺開發包進行標定,具體標定步驟如下:
步驟1標定圖像載入。將含標定板的裂縫原始圖像作為圖像源,其平面為代表工作平面。
步驟2提取標定點特征。使用ROI工具框選標定板區域,將RGB圖像采用局部閾值Local Threshold:BG Correction法進行閾值分割,設置合適的參數,將黑色標定圓點作為粒子提取出來,最后應用指定有效圓度提取標定點的中心坐標。
步驟3指定標定參數。輸入實際的圓點中心距的物理單位,由標定圖像的邊界坐標可以計算出圖像中心坐標及各標定點圓心的坐標。
步驟4檢查標定結果。計算標定精度參數及畸變模式的調整。
步驟5指定標定軸,使用默認的標定軸,即原始的圖像坐標軸即可。
步驟6保存標定模板。當信息欄顯示了標定后的數據時,表示標定已經學習成功了,將基于VDM的標定結果和模板等信息保存,文件類型為PNG。
為分析本例中圖像標定的精度,以標定板(表1)中12個點為例,列出修正前、修正后各點的位置如表2所示。計算得到,標定平均誤差為0.089 mm,最大誤差為0.227 mm,畸變百分比為0.038%,認為一次拍照標定法能得到很高的標定精度,能夠滿足大壩裂縫檢測標定需要,且便捷性較高。

表1 標定板尺寸 單位:mm

表2 圖像標定點誤差
對標定后的裂縫目標進行幾何特征分析,主要過程如圖13所示,經計算得,該裂縫的粒子周長為507.6 mm,裂縫長度為253.8 mm,裂縫面積為859.3 mm,裂縫平均寬度為3.4 mm。

圖13 混凝土壩裂縫圖像幾何分析
提出LabVIEW+VDM的混凝土壩裂縫檢測系統開發方法,用相機對含標定板的大壩裂縫圖像進行采集,用VDM中的VA對裂縫圖像進行圖像處理和特征分析,處理過程為灰度化、濾波、閾值分割和高級形態運算,特征分析為骨架函數結合形態學運算提取裂縫骨架,VDM粒子分析方法計算裂縫長度、寬度和面積,最后將VA過程生成VI導入LabVIEW編程平臺進行調試及GUI開發,研究結果表明,VDM視覺開發包的算法能夠獨立完成混凝土壩裂縫的檢測分析功能,對大壩安全評價與決策提供依據。
LabVIEW作為一款優秀的虛擬儀器開發平臺,其核心的G語言圖形化編程正被越來越多的科學工程界人員所接受, LabVIEW圖形化編程結合VDM圖像處理模塊能快速驗證和開發計算機視覺領域的工程項目,專業人員即使沒有豐富的編程經驗也可以獨立快速地完成開發任務,該方法對水利專業人員的系統開發工作有借鑒意義。