張 曉, 高忠文
(哈爾濱理工大學 自動化學院,黑龍江 哈爾濱 150080)
橋梁工程是交通建設的重要組成部分,它的安全關系到人民群眾的生命。因此,應加大對橋梁裂縫的檢測力度。目前,橋梁檢測主要依靠人工,借助于檢測車,利用高倍顯微鏡進行近距離讀數(shù),其精度低,效率低,檢測主觀性大。近幾年,國內學者使用數(shù)字圖像處理方法,對裂縫進行檢測[1]。文獻[2]使用Sobel算子、Canny算子、小波變換、以及傅里葉變換等對橋梁裂縫進行檢測,運算速度取得極大提升,但方法上存在嚴重局限性。文獻[3]采用數(shù)學形態(tài)學方法,對橋梁裂縫進行圖像分割,但識別精度不高。文獻[4,5]運用快速最小生成樹來解決圖像分割問題,分割標準是相鄰元素之間強度差異。該算法能夠保留低變異圖像區(qū)域的細節(jié),但忽略高變區(qū)域的細節(jié)。文獻[6]采用多尺度輸入圖像滲透模型設計橋梁裂縫檢測模型,使用最佳閾值分割濾除非裂縫區(qū)域,利用梯度信息提取裂縫。在計算裂縫面積時,沒有考慮裂縫方向多樣性,造成得到結果誤差比較大。
針對上述不足,以橋梁裂縫為實驗對象,提出一種圖搜索檢測裂縫邊緣方法,統(tǒng)計橋梁裂縫的像素數(shù)目,從而計算橋梁裂縫寬度。然后將圖搜索算法與100倍帶光源讀數(shù)顯微鏡測量結果進行對比,驗證圖搜索裂縫算法的可靠準確性。
橋梁裂縫一般比較小,不易觀察,為使檢測結果精確,采用高分辨率相機——尼康D850拍攝。拍攝過程中,不斷調整相機鏡頭,盡量使裂縫在相機成像清晰。拍攝圖片如圖1(a)所示。
裂縫寬度計算采用像素數(shù)據(jù)與實際裂縫寬度數(shù)值轉換方法[7],根據(jù)透鏡成像公式
(1)
式中L′為像距,L為物距(相機和被測目標之間的距離),f為相機鏡頭焦距。由式(1)可得
(2)
成像放大倍數(shù)θ為
(3)
式中A為裂縫尺寸,A′為裂縫圖像的像素數(shù)。
由式(3)可得
(4)
式中L和f已知的情況下,如果測出裂縫圖像的像素數(shù),可根據(jù)公式計算出裂縫尺寸。由式(2),式(4)可得
(5)
式中 35.9 mm為尼康D850傳感器最長邊物理尺寸,8 256為拍攝的圖像長邊像素點數(shù)。
為驗證以上理論的準確性,進行一組模擬試驗。已知某一線段寬平均大約0.40 mm,分別對拍攝距離為1 600,1 800,2 000,2 200,2 500 mm的圖像中線段進行拍攝和測量,根據(jù)式(5)進行試驗計算,實驗結果如表1。
表1 顯微鏡觀測值和計算值 mm
由表1可知,不同物距計算值與顯微鏡觀測值相差不到0.03 mm,該裂縫寬度計算方法滿足工程需求,可推廣到橋梁裂縫圖像采集和分析上。
在獲得裂縫圖像之后,需進行以下工作:灰度化、二值化、濾波去噪、圖搜索(裂縫提取)、裂縫尺寸計算等。
拍攝圖片是彩色圖片,彩色圖片數(shù)據(jù)量增大3倍,導致存儲空間負擔過大,而彩色圖片信息并不好用,需將彩色圖片轉化為灰度圖。將橋梁裂縫圖灰度化后,如圖1(b)所示。
二值化過程中,使用OTSU算法進行閾值分割[8],OTSU算法具有自適應獲取分割閾值,使裂縫和背景自動分離,達到最佳分割目的。二值化處理效果如圖1(c)所示。
從圖1(c)可以看出,一些噪聲點仍存在于二值化后的圖像上,為了提高橋梁裂縫提取準確率,必須消除噪聲點。本文擬采用圖像平滑處理[9],選取某一點,在該點8鄰域內,統(tǒng)計白點個數(shù),若白點個數(shù)大于黑點個數(shù),認為該點灰度值為255,否則,該點灰度值為0。處理效果如圖1(d)所示。
圖1 裂縫圖像處理結果
將濾波去噪圖映射成帶有權值的有向圖,根據(jù)裂縫邊緣特點,即灰度級間斷、亮度不連續(xù)性,通過圖搜索找到最小開銷路徑,以達到檢測裂縫邊緣的目的。
如圖2(a)所示,點p和q是四鄰接的像素點,將邊緣定義為p和q之間邊界,邊緣像素就是由點p(xp,yp)和點q(xq,yq)來確定[10]。
由點p和q確定的邊緣像素都有相應的開銷,定義為
c(p,q)=H-(f(p)-f(q))
(6)
式中H為圖像中灰度值最大值,f(p),f(q)分別為點p,q相應的灰度值。這樣定義將圖像映射為帶有權值的有向圖,圖像中的每一個像素點為圖的每一個節(jié)點,圖中兩像素點之間的權值也就是兩節(jié)點之間的開銷。
裂縫邊緣之間的像素有不連續(xù)的特性,造成裂縫邊緣像素之間的差值很大。如果點p,q恰好處在圖像邊緣上,f(p),f(q)二者差值的絕對值會很大;直接用f(p),f(q)二者差值容易產生負值,比較起來很麻煩。為了盡快尋找到裂縫邊緣,決定采用式(6)作為相鄰像素之間的權值。
當已經確定上一時刻追蹤方向,要做的是根據(jù)上一時刻方向,判斷出下一時刻追蹤方向,并且計算可能追蹤方向最小開銷值。假設確定上一時刻的邊緣像素就是圖3中所示的點p,q,追蹤方向是向下的箭頭,并且其為邊界像素,下一時刻追蹤方向會有3個(如圖2(b)所示)。
圖2(b)中(1),(2),(3)對應的開銷表示的是c(n,q),c(m,n),c(p,m),然后計算并比較這三個值,取最小的開銷,記錄方向并且存儲此邊緣像素的坐標位置。找到起始點后,以此類推,遍歷整幅圖片,確定開銷值總和最小的路徑,并標記出來,裂縫就是開銷值最小的路徑。
圖2 像素點與追蹤方向示意
整體算法如下:
1)確定起始點的位置。
2)判斷起始點是不是孤立的點,判斷方法:以此點為中心,取3×3模板,比較所得到的和與此點的值是否相等,若相等則舍去此點;反之保留并存儲此點。
3)根據(jù)步驟(2)找到的起始點,利用前面講到的理論,尋找起始追蹤方向,就是在起始點周圍尋找可能的追蹤方向,然后求出對應的開銷,比較得出可能的追蹤方向的最小值,存儲邊緣像素的坐標值,并且記錄此時最可能追蹤方向。
4)根據(jù)步驟(3)得到的最可能追蹤方向,還有與其相對應下一時刻追蹤方向,求出它們相應開銷值,比較取最小值,然后記錄此時追蹤方向并存儲邊緣像素的坐標值。
5)重復執(zhí)行步驟(4)。在追蹤過程中,若每個追蹤方向的開銷值相等,可能進入到噪聲區(qū)域,對于此種情況,舍去此起始點;然后由下一起始點開始,從步驟(2)依次開始。
6)假設在得到的邊緣像素中,有一點坐標與起始點坐標一樣,就停止搜索。此時我們得到的全部邊緣序列,就是所需要的邊緣。
經過圖搜索檢測的裂縫邊緣,沒有噪聲干擾,直接讀取裂縫邊緣的像素數(shù)目,進行裂縫尺寸寬度計算。主要有以下步驟:1)掃描圖3(a)中已經確定為邊緣像素的點f(x,y),確定左右端點;2)然后根據(jù)左右端點,將該圖片旋轉至水平位置,并且放大到可以觀測清晰像素為止,如圖3(b)所示;3)橫坐標不變,讀取縱坐標值,比較縱坐標最大差值,最大差值位置也就是最寬裂縫位置,統(tǒng)計像素數(shù)目,并保存;4)根據(jù)式(5)進行裂縫寬度計算。
圖3 圖搜索檢測后的裂縫邊緣
在100幅包含有橋梁裂縫的圖像上,進行實驗。將圖論搜索裂縫方法與迭代Canny算法、Snake算法以及Scharr算子等進行仿真對比,如圖4所示。
圖4 圖論算法與其它算法分割效果對比
通過對比可知:
1)Scharr算子對像素的位置的影響作了加權,可以降低模糊邊緣程度,簡單有效。但Scharr算子并沒有將橋梁裂縫和背景分開,嚴重影響裂縫寬度計算。
2)迭代Canny算法雖基本保留了橋梁裂縫邊緣細節(jié),分割之后仍保留有噪聲點,影響像素數(shù)目的統(tǒng)計。
3)Snake算法保留橋梁裂縫全部信息,但受其它噪聲影響,處理之后,邊界出現(xiàn)斷裂,影響像素數(shù)目的統(tǒng)計。
4)在橋梁裂縫受到噪聲干擾下,通過實驗對比,圖搜索算法得到的裂縫邊緣輪廓清晰,且邊緣連續(xù),滿足檢測橋梁裂縫的精度要求。
衡量算法標準主要包括:誤分率和檢測時間,誤分率是指在區(qū)分裂縫像素時,錯誤判斷裂縫像素數(shù)目和判斷裂縫像素數(shù)目總數(shù)之比,比較結果如表2所示。
表2 圖搜索與其它算法性能參數(shù)比較
由表2知,圖搜索算法在檢測橋梁裂縫過程中,誤分率最低,而且檢測時間也是最短的。由此表明圖搜索對干擾物進行有效抑制,同時對橋梁裂縫邊緣細節(jié)性信息進行保護。
在vs2013環(huán)境中開發(fā)裂縫測量系統(tǒng)軟件,核心算法用MATLAB 2014實現(xiàn)。選用100倍帶光源顯微鏡直接讀取待測裂縫寬度(測量范圍0.01~1 mm),表3為實驗測量結果。
表3 實驗測量結果
測量結果表明:軟件計算值誤差均低于0.03 mm,相對誤差隨著拍攝距離變化而變化?,F(xiàn)有條件滿足橋梁工程需求,如果拍攝距離在2 m以上,會有很大誤差,需要考慮換鏡頭。