王一兵,包騰飛,2,3,高治鑫
(1. 河海大學(xué)水利水電學(xué)院,江蘇 南京 210098;2. 河海大學(xué)水文水資源與水利工程科學(xué)國家重點(diǎn)實驗室,江蘇 南京 210098;3.三峽大學(xué)水利與環(huán)境學(xué)院,湖北 宜昌 443002)
混凝土壩普遍存在裂縫,裂縫會破壞壩體的整體性和防滲性能,對大壩產(chǎn)生威脅,所以對大壩裂縫的檢測和控制對大壩安全監(jiān)測有著重要意義。傳統(tǒng)的混凝土裂縫監(jiān)測技術(shù)主要依托裂縫計[1]或超聲波檢測[2],而混凝土壩的裂縫檢測主要靠人工目檢,我國混凝土壩壩高通常很大,有的甚至達(dá)到300 m級,人工檢測不僅耗費(fèi)大量的人力,而且某些特殊部位的人工檢測是十分危險的。
近年來由于計算機(jī)技術(shù)的快速發(fā)展,催生了一系列基于機(jī)器視覺的混凝土裂縫檢測技術(shù),這些技術(shù)用無人機(jī)、爬壁機(jī)器人等自動獲取混凝土圖像信息,再利用裂縫識別算法進(jìn)行識別。在算法研究方面, Cha等[3]使用卷積神經(jīng)網(wǎng)絡(luò)的深層結(jié)構(gòu)來檢測混凝土裂縫。Nishyama等[4]通過在裂紋兩側(cè)建立反射目標(biāo)來計算裂縫的位移。陳建立[5]建立卷積神經(jīng)網(wǎng)絡(luò)模型對混凝土圖片進(jìn)行檢測,提出重構(gòu)圖片的采樣率為0.3時效果最優(yōu)、二值化閾值為0.4時效果最優(yōu),但對于不同混凝土裂縫圖片的適用性不強(qiáng);王睿等[6]運(yùn)用RBF-SVM算法說明不同裂縫特征分配對裂縫識別產(chǎn)生較大影響。梁雪慧等[7]用改進(jìn)的GoogLeNet卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行裂縫識別。徐港等[8]提出基于連通域特征聚類的裂縫提取方法,解決小寬度多數(shù)量網(wǎng)狀裂縫的提取,但該方法需要調(diào)試的參數(shù)較多。在工程運(yùn)用方面,周穎等[9]在實驗室條件下對鋼筋混凝土梁表面裂縫進(jìn)行拍攝和處理,但使用工業(yè)級相機(jī)的實驗室條件不適合大壩現(xiàn)場實際條件。薛峰等[10]提出基于圖像處理的鐵路軌道裂縫檢測方法。姜會增[11]提出局部二值化的鐵路橋梁裂縫檢測技術(shù)。郭全民等[12]利用標(biāo)記連通域算法對路面混凝土裂縫進(jìn)行分類、提取。Bernstone等[13]通過間隔拍攝一系列圖像,從中識別出裂紋,并表明該技術(shù)可用于水電站混凝土結(jié)構(gòu)。王麗等[14-15]基于MATLAB建立了混凝土壩裂縫監(jiān)測系統(tǒng),但前者沒有進(jìn)行圖像標(biāo)定,后者的標(biāo)定方法無法考慮鏡頭畸變和角度傾斜的校正。
上述研究表明,計算機(jī)視覺在混凝土壩裂縫檢測領(lǐng)域的研究運(yùn)用較少且存在標(biāo)定方法不實用等問題,針對混凝土壩裂縫檢測分析需要快速、安全和便捷的要求,本文提出一種基于LabVIEW圖形化編程結(jié)合VDM視覺開發(fā)包的混凝土裂縫分析方法,便于行業(yè)人員快速檢測分析混凝土壩裂縫,同時對相似程序的快速開發(fā)有借鑒意義。
一般采用相機(jī)獲取大壩裂縫的圖像,大壩現(xiàn)場由于溫度、天氣、光照條件和檢測時間的變化,采集到的原始圖像通常存在有噪聲、陰影以及過曝光等一系列問題,為消除噪點(diǎn),增強(qiáng)裂縫對比度,改善圖像質(zhì)量,需要對圖像進(jìn)行灰度化、濾波、分割、形態(tài)學(xué)處理,以達(dá)到圖像增強(qiáng)和銳化效果。
相機(jī)采集的原始圖像為RGB彩色圖像(圖1(a)),為了避免裂縫識別過程中條帶失真,必須對圖像進(jìn)行灰度化處理。RGB圖像模型由紅綠藍(lán)三個平面構(gòu)成,任一個平面都是8位灰度圖,抽取顏色平面可以得到灰度圖像如圖1(b)所示。
圖1 裂縫圖像
圖像濾波是過濾噪聲的主要手段,也是重要的圖像處理操作。不同濾波方式的選擇和參數(shù)的調(diào)整對濾波效果有重要的影響。常用的有鄰域平均濾波、高斯濾波等。另外,Roberts、Prewitt、Sobel等邊緣檢測算法通常也用于實現(xiàn)過濾圖像噪聲,保留目標(biāo)特征的功能[16]。
鄰域平均濾波用某像素值一個鄰域內(nèi)的全部像素的平均值來替換該像素值,起到模糊和過濾的作用。鄰域平均濾波算法無法考慮距離中心像素越遠(yuǎn)對中心像素的作用越小的效應(yīng),作為改進(jìn),采用鄰域內(nèi)像素的加權(quán)平均值代替中心像素,即高斯濾波。由于圖像是二維數(shù)組,引入二維高斯分布函數(shù)并將其離散化,以離散點(diǎn)上的高斯函數(shù)值為權(quán)值,可以得到高斯濾波器模板。二維高斯分布函數(shù)如下:
(1)
式中:(x,y)為像素點(diǎn)的坐標(biāo);σ為分布函數(shù)標(biāo)準(zhǔn)差。
對比分析鄰域平均濾波、高斯濾波、Laplacian算法和Canny算法的去噪效果可知,鄰域平均和高斯濾波對噪聲的剔除效果明顯,參數(shù)適合時,兩者均能取得良好效果(圖2(a)(b)); Laplacian算法圖像噪點(diǎn)過多、效果不佳(圖2(c));Canny算法在標(biāo)定偏差值設(shè)置較大時能有效過濾噪聲,但只保留了裂縫的邊緣部分且有部分缺失,裂縫內(nèi)部丟失則較為嚴(yán)重(圖2(d))。考慮到后續(xù)計算裂縫面積的要求,本文使用高斯濾波對圖像進(jìn)行處理,既過濾了大部分噪聲,也完整保留了裂縫特征。
圖2 圖像濾波
為了提取裂縫特征,灰度圖像在濾波后需要進(jìn)行圖像分割,將圖像分為背景和裂縫兩部分。一幅位深度為8的灰度圖像每個像素的取值在0到255之間,閾值函數(shù)對圖像每一個像素按照一定的閾值分為目標(biāo)和背景,即:
(2)
式中:g(x,y)為全局閾值分割函數(shù);k為分割閾值;f(x,y)為原圖像像素點(diǎn)灰度值。
由于裂縫圖像光照條件分布均勻,可使用全局灰度閾值對整個圖像進(jìn)行分割,分割閾值的設(shè)定對分割效果有重要的影響,采用Otsu[17]提出的最大類間方差法和Kapur等[18]提出的最大熵法來進(jìn)行圖像分割。最大類間方差法閾值通過類別之間的閾值差異的最大值來決定,即閾值的像素值k使下面的表達(dá)式(3)的值最大化:
(3)
式中:σB為類間方差;ωk、μk分別為從1到k的累積出現(xiàn)概率和平均灰度級;μT為整幅圖像的平均灰度級;pi為灰度圖像的概率分布。
最大熵法中,若k為閾值像素值,則有兩個熵:
(4)
(5)
式中:Hb、Hw分別為圖像閾值后的測量黑、白像素相關(guān)的熵;pbi為黑色背景概率;pwi為目標(biāo)概率。
最優(yōu)的閾值是使整幅圖像的熵Hb+Hw最大,即閾值是下面的表達(dá)式取最大值時的k:
(6)
經(jīng)過閾值分割后的圖像如圖3所示,最大類間方差法和最大熵法效果沒有明顯差別,兩算法均能較好地實現(xiàn)圖像分割且保留目標(biāo)區(qū)域,本文選擇最大類間方差法。同時注意到圖像中仍有大量的孤立點(diǎn),需要進(jìn)一步處理。
圖3 閾值分割
為了剔除裂縫圖像中的孤立點(diǎn)、填補(bǔ)小孔洞,需要對圖像進(jìn)行形態(tài)學(xué)處理。形態(tài)學(xué)運(yùn)算的基礎(chǔ)是膨脹和腐蝕,通過對像素與結(jié)構(gòu)元素進(jìn)行集合運(yùn)算,使二值圖像中的目標(biāo)區(qū)域進(jìn)行擴(kuò)大或縮?。?/p>
X?B={x|Bx1?X∩Bx2?XC}
(7)
式中:X為圖像像素集合;B為結(jié)構(gòu)元素;x為集合X中的像素點(diǎn);XC為集合X的補(bǔ)集;Bx1、Bx2分別為集合X、XC中像素點(diǎn)x及其鄰域內(nèi)像素點(diǎn)組成的集合。當(dāng)B為白色像素點(diǎn)時,會使圖像中的黑色特征區(qū)域擴(kuò)大;當(dāng)B為白色像素點(diǎn)時,會使圖像中的黑色特征區(qū)域縮小。
通過先膨脹再腐蝕或先腐蝕再膨脹可以得到閉和開運(yùn)算,結(jié)合閉和開運(yùn)算又衍生出了適當(dāng)閉和適當(dāng)開操作。形態(tài)學(xué)運(yùn)算是作用于像素上的,在去除孤立點(diǎn)時容易改變裂縫的細(xì)節(jié)幾何特征,在形態(tài)學(xué)基礎(chǔ)上提出的高級形態(tài)學(xué)操作則是針對二值圖像中的粒子進(jìn)行作用,可以滿足去除小的孤立點(diǎn)、填補(bǔ)裂縫小孔洞的同時不對裂縫幾何特征造成過大影響。針對二值化后的裂縫圖像存在很多孤立點(diǎn)、裂縫邊緣存在小毛刺和裂縫內(nèi)部存在小孔洞的問題,先使用腐蝕迭代刪除圖像中的孤立點(diǎn),再使用孔洞填充函數(shù)對裂縫內(nèi)部的孔洞進(jìn)行填充,最后使用開運(yùn)算平滑裂縫邊緣,減少邊緣毛刺,處理結(jié)果如圖4所示。
圖4 圖像分割與高級形態(tài)學(xué)運(yùn)算
為將圖像像素長度與真實世界物理單位相關(guān)聯(lián),需要進(jìn)行圖像標(biāo)定。混凝土裂縫表面為平面,現(xiàn)場采集圖像相機(jī)與混凝土平面呈一定角度(圖5(a)),如果相機(jī)光軸和混凝土表面不垂直,則會產(chǎn)生透視誤差,即目標(biāo)的放大倍率變化受到目標(biāo)到鏡頭距離的影響,實際大小相同的點(diǎn)陣由于透視誤差在圖像上表現(xiàn)出畸變(圖5(b)),除了透視引起的線性畸變外,由于鏡頭的固有缺陷,圖像還會產(chǎn)生一定的非線性畸變,如徑向畸變和切向畸變等。徑向畸變是由于鏡頭在制造過程中的磨制工藝帶來的,切向畸變是由于鏡頭和相機(jī)在裝配過程中的定位不精確所產(chǎn)生的。
圖5 透視誤差與鏡頭畸變
經(jīng)典的標(biāo)定算法有Tsai兩步法[19]和張正友標(biāo)定法[20]等,但其標(biāo)定過程較為煩瑣,為了實現(xiàn)準(zhǔn)確快速的標(biāo)定,本文采用LabVIEW平臺視覺開發(fā)包進(jìn)行標(biāo)定,標(biāo)定類型為Distortion model(Grid),可以同時考慮線性畸變和非線性畸變。采用張建國等[21]的標(biāo)定方法,即多參數(shù)多項式畸變模型:
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)為成像點(diǎn)的理想坐標(biāo);(xd,yd)為畸變引起的實際成像點(diǎn)坐標(biāo);K1、K2為徑向畸變系數(shù);P1、P2為切向畸變系數(shù)。
標(biāo)定結(jié)果的精度主要用畸變百分比和平均誤差來衡量,畸變百分比是每個像素到光軸的距離除以計算誤差產(chǎn)生的平均值;平均誤差采用下式計算:
(10)
計算裂縫長度需要提取裂縫骨架,骨架提取是迭代應(yīng)用腐蝕直至目標(biāo)的寬度等于一個像素。常用的骨架提取的算法有Zhang并行細(xì)化算法[22]、Hilditch細(xì)化算法[23]、Rosenfeld細(xì)化算法等[24]。NI vision提供了3種骨架函數(shù):L-Skeleton函數(shù)、M-Skeleton函數(shù)和Skiz函數(shù),L-Skeleton函數(shù)使用圖6(a)的結(jié)構(gòu)元素形式,其處理效果如圖6(b)所示,M-Skeleton函數(shù)提取的骨架比L-Skeleton擁有更多的樹突和分支,Skiz函數(shù)是在一幅反轉(zhuǎn)的圖像上使用L-Skeleton函數(shù)得到的結(jié)果,即提取背景而不是目標(biāo)裂縫的骨架。為了計算裂縫長度,要求提取的裂縫骨架沒有分支,本文采用L-Skeleton函數(shù)進(jìn)行骨架的初步提取。
圖6 骨架函數(shù)L-Skeleton
由于裂縫圖像形狀不規(guī)則和邊緣不平整的原因,初步提取的骨架存在很多偽分支,偽分支會對裂縫長度計算造成影響,需要剪除。先用二值形態(tài)學(xué)的細(xì)化函數(shù),將結(jié)構(gòu)元素設(shè)為5×5,其中中間一行全為1,其他全為0,將偽分支從骨架中分離,再利用高級形態(tài)學(xué)的腐蝕迭代來刪除孤立分支,最終得到?jīng)]有分支的裂縫骨架。處理過程如圖7所示。
圖7 骨架提取
完成骨架提取后,用VDM粒子測量的方法求裂縫長度。粒子測量是VDM提供的一組功能強(qiáng)大的函數(shù),粒子是指圖像上一組連續(xù)的非零像素的組合,經(jīng)過圖像預(yù)處理后的裂縫目標(biāo)即為粒子,粒子通過測量相關(guān)的屬性如位置、面積、形狀等來表示其特征,VDM粒子測量可以同時實現(xiàn)像素測量和現(xiàn)實世界測量。骨架是單像素的,可運(yùn)用下面的公式計算裂縫長度L:
L=P/2
(11)
式中:P為粒子外邊界的長度,因為一個二值圖像的邊界是由離散的像素組成的,VDM的次級樣本邊界點(diǎn)可近似一個更平滑、更準(zhǔn)確的周長。
經(jīng)過圖像處理后的裂縫目標(biāo)是一組連續(xù)的非零像素組合,也是VDM中定義的一個粒子,所以采用VDM粒子測量方法計算裂縫面積。在VDM粒子面積測量中,一個像素認(rèn)為有一個平方單位的面積,所有裂縫區(qū)域所占的像素個數(shù)總和即為裂縫面積的像素單位表示。在像素面積轉(zhuǎn)化為真實世界單位時,一個像素認(rèn)為是一個多邊形,其角落定義為中心像素正負(fù)各有半個像素的位置,如圖8所示,一個坐標(biāo)為(3,8)的像素是一個正方形,其角上坐標(biāo)為(2.5,7.5),(3.5,7.5),(3.5,8.5)和(2.5,8.5),4個角的像素轉(zhuǎn)化為現(xiàn)實世界坐標(biāo),整個粒子的面積通過標(biāo)定的輪廓點(diǎn)進(jìn)行計算。
圖8 裂縫面積計算原理
裂縫平均寬度W用裂縫面積A除以L得到:
W=A/L
(12)
LabVIEW是美國國家儀器(national instruments,NI)公司的圖形化編程平臺,其獨(dú)具特色的G語言提供了編程的可視化,即通過線、框和圖標(biāo)的組合形成語句邏輯,使用前面板結(jié)合程序框圖的模式進(jìn)行編程開發(fā),這種圖形化編程的最大優(yōu)點(diǎn)就是入門簡單,開發(fā)快速。NI vision是NI公司的視覺開發(fā)模塊,其全稱是vision development module(VDM),該模塊主要運(yùn)用于計算機(jī)視覺、圖像處理領(lǐng)域,VDM中包含的視覺助手vision assistant(VA)能通過交互實現(xiàn)VDM的各種功能,并且可以將處理過程生成VI(LabVIEW編程平臺使用的腳本)導(dǎo)入LabVIEW,方便LabVIEW平臺實現(xiàn)調(diào)用。
采用LabVIEW+VDM的方式進(jìn)行程序開發(fā),先用VDM中的VA對圖像采集、處理和分析的各項功能進(jìn)行研究和驗證,即直接在VA軟件中載入含裂縫的混凝土壩圖像,對圖像抽取顏色平面得到灰度圖像,再對圖像進(jìn)行領(lǐng)域平均濾波、高斯濾波、Laplacian算法和Canny算法,比較后保留效果最好的高斯濾波算法,對處理后的圖像運(yùn)用圖像分割算法,保留效果最好的Otsu算法,類似的,對圖像進(jìn)行高級形態(tài)學(xué)運(yùn)算、多參數(shù)多項式畸變模型標(biāo)定、細(xì)化算法提取裂縫骨架,最后用粒子測量方法計算裂縫長度、面積和寬度,完成VA對圖像處理過程的驗證,再將VA中保留的算法生成VI腳本并導(dǎo)入LabVIEW中進(jìn)行GUI開發(fā)和調(diào)試,最終實現(xiàn)裂縫檢測程序的開發(fā),其主要流程如圖9所示。
圖9 混凝土壩裂縫檢測程序流程
為方便對大壩裂縫的快速檢測分析,開發(fā)了基于LabVIEW平臺的混凝土壩裂縫檢測程序。通過VA對圖像處理流程進(jìn)行研究,生成VI導(dǎo)入LabVIEW編程平臺進(jìn)行優(yōu)化和調(diào)試,同時基于LabVIEW前面板+程序框圖的模式設(shè)計了混凝土壩裂縫檢測程序GUI,系統(tǒng)程序GUI如圖10所示。
圖10 混凝土壩裂縫檢測系統(tǒng)GUI
對某水庫大壩的混凝土裂縫原始圖像進(jìn)行采集,使用相機(jī)采集,常規(guī)的標(biāo)定是將相機(jī)鏡頭固定住,在鏡頭前放置一張標(biāo)定板并采集一張圖像進(jìn)行標(biāo)定,再在相同的鏡頭角度下采集裂縫照片進(jìn)行分析,這種標(biāo)定方法步驟較為繁瑣,適用于實驗室條件下進(jìn)行研究,水庫現(xiàn)場由于地形復(fù)雜,設(shè)備眾多等原因不方便假設(shè)固定的相機(jī)鏡頭。本文提出采用一次拍攝的方法,即將標(biāo)定板貼于裂縫旁,拍攝含標(biāo)定板的裂縫圖像(圖11),后期圖像處理時將標(biāo)定板和裂縫目標(biāo)分離,避免了相機(jī)鏡頭固定的麻煩。
運(yùn)用本文裂縫檢測方法對原始圖像處理,主要包括圖像灰度化、圖像濾波、閾值分割等內(nèi)容,處理過程及其效果如圖12所示。處理完成后能夠有效過濾混凝土裂縫圖像中的噪聲,保留完整的裂縫形態(tài)和輪廓。
圖像處理完成后,采用VDM視覺開發(fā)包進(jìn)行標(biāo)定,具體標(biāo)定步驟如下:
步驟1標(biāo)定圖像載入。將含標(biāo)定板的裂縫原始圖像作為圖像源,其平面為代表工作平面。
步驟2提取標(biāo)定點(diǎn)特征。使用ROI工具框選標(biāo)定板區(qū)域,將RGB圖像采用局部閾值Local Threshold:BG Correction法進(jìn)行閾值分割,設(shè)置合適的參數(shù),將黑色標(biāo)定圓點(diǎn)作為粒子提取出來,最后應(yīng)用指定有效圓度提取標(biāo)定點(diǎn)的中心坐標(biāo)。
步驟3指定標(biāo)定參數(shù)。輸入實際的圓點(diǎn)中心距的物理單位,由標(biāo)定圖像的邊界坐標(biāo)可以計算出圖像中心坐標(biāo)及各標(biāo)定點(diǎn)圓心的坐標(biāo)。
步驟4檢查標(biāo)定結(jié)果。計算標(biāo)定精度參數(shù)及畸變模式的調(diào)整。
步驟5指定標(biāo)定軸,使用默認(rèn)的標(biāo)定軸,即原始的圖像坐標(biāo)軸即可。
步驟6保存標(biāo)定模板。當(dāng)信息欄顯示了標(biāo)定后的數(shù)據(jù)時,表示標(biāo)定已經(jīng)學(xué)習(xí)成功了,將基于VDM的標(biāo)定結(jié)果和模板等信息保存,文件類型為PNG。
為分析本例中圖像標(biāo)定的精度,以標(biāo)定板(表1)中12個點(diǎn)為例,列出修正前、修正后各點(diǎn)的位置如表2所示。計算得到,標(biāo)定平均誤差為0.089 mm,最大誤差為0.227 mm,畸變百分比為0.038%,認(rèn)為一次拍照標(biāo)定法能得到很高的標(biāo)定精度,能夠滿足大壩裂縫檢測標(biāo)定需要,且便捷性較高。
表1 標(biāo)定板尺寸 單位:mm
表2 圖像標(biāo)定點(diǎn)誤差
對標(biāo)定后的裂縫目標(biāo)進(jìn)行幾何特征分析,主要過程如圖13所示,經(jīng)計算得,該裂縫的粒子周長為507.6 mm,裂縫長度為253.8 mm,裂縫面積為859.3 mm,裂縫平均寬度為3.4 mm。
圖13 混凝土壩裂縫圖像幾何分析
提出LabVIEW+VDM的混凝土壩裂縫檢測系統(tǒng)開發(fā)方法,用相機(jī)對含標(biāo)定板的大壩裂縫圖像進(jìn)行采集,用VDM中的VA對裂縫圖像進(jìn)行圖像處理和特征分析,處理過程為灰度化、濾波、閾值分割和高級形態(tài)運(yùn)算,特征分析為骨架函數(shù)結(jié)合形態(tài)學(xué)運(yùn)算提取裂縫骨架,VDM粒子分析方法計算裂縫長度、寬度和面積,最后將VA過程生成VI導(dǎo)入LabVIEW編程平臺進(jìn)行調(diào)試及GUI開發(fā),研究結(jié)果表明,VDM視覺開發(fā)包的算法能夠獨(dú)立完成混凝土壩裂縫的檢測分析功能,對大壩安全評價與決策提供依據(jù)。
LabVIEW作為一款優(yōu)秀的虛擬儀器開發(fā)平臺,其核心的G語言圖形化編程正被越來越多的科學(xué)工程界人員所接受, LabVIEW圖形化編程結(jié)合VDM圖像處理模塊能快速驗證和開發(fā)計算機(jī)視覺領(lǐng)域的工程項目,專業(yè)人員即使沒有豐富的編程經(jīng)驗也可以獨(dú)立快速地完成開發(fā)任務(wù),該方法對水利專業(yè)人員的系統(tǒng)開發(fā)工作有借鑒意義。