薛 丹,苑瑋琦
(沈陽工業(yè)大學視覺檢測技術研究所,遼寧沈陽 110870)
公路隧道在長期使用時,襯砌表面會產(chǎn)生裂縫,若不及時修補,會影響隧道的安全。近年來,將視覺檢測技術引入到運營養(yǎng)護工程中代替?zhèn)鹘y(tǒng)的人工檢測,效率得以大幅提升。相關學者在公路隧道襯砌裂縫檢測的研究中發(fā)現(xiàn),隧道內(nèi)較暗,要想獲得高質(zhì)量圖像,必須外加光源。而外加光源的照射又受隧道內(nèi)固有燈箱的光照及采集圖像角度的影響,使得采集的圖像中表現(xiàn)出的邊緣明暗不等。因此在檢測影響隧道安全的裂縫時,常因邊緣梯度值選取不當而導致漏檢;另外,隧道襯砌多由混凝土澆灌而成,其在圖像中表現(xiàn)出坑洼不平的邊緣,其梯度值與裂縫梯度范圍有重疊,檢測時會造成大量誤檢。
部分學者對于裂縫檢測算法的研究,為避免與光照有關,則對圖像分塊,用局部自適應法提取梯度閾值進行檢測。如文獻[1]提出分塊圖像局部圖像紋理計算的隧道裂縫視覺檢測技術;文獻[2]采用基于圖像自適應分塊下結(jié)合閾值和邊緣信息的分割算法檢測裂縫;文獻[3]提出一種基于模板的自適應寬度的裂縫檢測方法,并與塊迭代算法和形態(tài)學法相結(jié)合,能更好地識別微小裂紋。文獻[4]提出一種基于局部-全局聚類分析的水下大壩裂縫自動檢測算法,首先在預處理后,將圖像分為不重疊的圖像塊。然后,通過局部聚類分析來識別包含裂紋像素的圖像塊。其次,基于局部灰度強度,通過自適應雙層閾值對圖像進行二值化。以上方法分塊窗口大小的選取至關重要。
另外一部分學者,從二維空間中觀察裂縫呈線狀特征,因此采用線檢測的方法檢測裂縫。如采用小波變換[5-6]、高斯線檢測[7-8]、Hough變換[9]等。其中,受到Hough變換方法是將二維空間的線檢測轉(zhuǎn)換成一維空間的峰值檢測的思想啟發(fā),本文研究發(fā)現(xiàn),在一維空間中裂縫表現(xiàn)為屋脊的特征,且每個屋脊就是一個分塊窗口,屋脊在圖像中表現(xiàn)為灰度極值。因此提出一種基于屋脊特征分析的裂縫檢測算法,即將二維空間線檢測轉(zhuǎn)換成一維空間的極值點檢測的新思路。并在遼寧省唐嶺山隧道襯砌圖庫中得以算法驗證,取得較好效果。
從含有裂縫的二維圖像中取某行剖面,如圖1所示,可觀察到一維行灰度分布呈多個屋脊特征。之所以在裂縫檢測中檢測準確率不高是因為噪聲也具有同樣的屋脊特征,因此在檢測裂縫時,如何準確區(qū)分哪種特征的屋脊是裂縫,哪種是噪聲是檢測的難點。
(a)含有裂縫的隧道襯砌圖像
這種屋脊特征是由2個屋頂和1個谷底組成,在圖像中表現(xiàn)為局部極大值和極小值。因此可以通過檢測極值的方法檢測屋脊。其中,定義極大值和極小值之間的灰度差值為屋脊高度。圖1中與噪聲相比,裂縫的屋脊出現(xiàn)的頻次更少,屋脊高度更大,即用屋脊高度直方圖可以有效去除噪聲提取裂縫。因此,本文提出一種基于屋脊特征分析的裂縫檢測算法。
算法主要包括基于極值的屋脊特征提取、基于屋脊高度直方圖的裂縫檢測和基于數(shù)學形態(tài)學的裂縫提取3部分。具體如下:
屋脊特征是由屋頂和谷底組成,因受光照影響,其對應為圖像剖面一維空間中的灰度值極值。極值與最值不同,是局部概念,在大小為M×N的圖像中,用I(i,j)表示第i行第j列像素的灰度值。若該點為裂縫谷值,則必然在鄰域范圍內(nèi),該像素的左邊和右邊同時存在大于(或等于)中心像素的灰度值,擴大鄰域范圍,分別向左、右逐個像素搜索。向左搜索時,與前一像素求灰度差值,若差值大于0,繼續(xù)擴大搜索范圍,直到小于0停止搜索。向右搜索的規(guī)則同上。檢測裂縫屋脊(極大值)的方法,同理。
2.1.1 一維屋脊形狀檢測
屋脊檢測方法如圖2所示。
圖2 屋脊檢測方法示意圖
以一維行搜索為例,先從以(i,j)為中心的三鄰域開始搜索,若存在
I(i,j)=min{I(i,j-1),I(i,j),I(i,j+1)}
(1)
則將(i,j)記錄為極小值點(i,jm0)。
擴大范圍,向左逐個像素搜索,若存在
(2)
其中,M=2,3…m,則將(i,j-M)記錄為極大值點(i,jM0)。
同理,繼續(xù)向右逐個像素搜索,若存在
(3)
其中,N=2,3…n,則將(i,j+N)記錄為極大值點(i,jM1)。
則,由相鄰的極大值點(i,jM0)、極小值點(i,jm0)和極大值點(i,jM1)構成一個屋脊。按照上述規(guī)則,將檢測到的一行中所有極值點分別構成極大值樣本M(i)和極小值樣本m(i)。
(4)
2.1.2 一維屋脊高度檢測
屋脊高度即相鄰兩個極大值與之間的極小值的灰度差值取最大。將檢測到的一行中所有屋脊高度構成梯度值樣本g(i)。
gi0=max{I(i,jM1),I(i,jM0)}-I(i,jm0)
(5)
g(i)={gi0,gi1,…giq}
(6)
2.1.3 一維行、列融合檢測
一維列搜索檢測屋脊方式同上。將行、列檢測的所有屋脊極小值樣本點{m(i),i=0,1…N}、{m(j),j=0,1…M}全部記錄下來,即完成了全圖的屋脊檢測。
按行統(tǒng)計所有屋脊高度g(i)及其出現(xiàn)的頻次f(i),構成屋脊高度直方圖。根據(jù)混凝土噪聲與裂縫的特點,當高度值越小,出現(xiàn)的頻次越大,是噪聲可能性越大;反之,裂縫的可能性越大。則用P(i)表示該屋脊是裂縫的概率為:
(7)
歸一化后:
(8)
m(i)={g(i,j)|max(P(i,jm(s+1))-P(i,jms)),
0≤s≤q}
(9)
對所求的概率值排序后,篩選概率變化最大處所對應的高度值即為閾值,大于該值的極小值點即為裂縫中心點。同樣,按列搜索后與行搜索結(jié)果合并得到裂縫檢測結(jié)果。
高度值不明顯的較弱裂縫,容易當作噪聲被去除,導致檢出的裂縫不是完整的一條長線條,而有斷續(xù)的現(xiàn)象。為了提取整個裂縫,需要對斷續(xù)處連接后再提取裂縫。因此包括膨脹連接、形狀篩選和骨架提取3部分。
2.3.1 膨脹
將鄰近斷續(xù)裂縫連成線條,即用(i,j)周邊區(qū)域(i+i′,j+j′)內(nèi)的最大值代替(i,j)的值。
(10)
2.3.2 形態(tài)
通過長度LS和矩形度ρR篩選出細長線條的裂縫。
(11)
(12)
(13)
式中:Ne為邊界線上方向碼為偶數(shù)的像素個數(shù);No為邊界線上方向碼為奇數(shù)的像素個數(shù);AS為連通域中像素的總數(shù);AR為包圍該連通域的最小矩形面積。
2.3.3 用zhang的快速并行細化算法提取骨架得到裂縫[11]。
本文整體算法流程圖如圖3所示。
圖3 本文算法流程圖
實驗測試數(shù)據(jù)集是在遼寧省唐嶺山高速公路隧道現(xiàn)場采集的大小為300像素×300像素的襯砌圖像構成。實驗測試包括本文算法3個關鍵步驟、實驗結(jié)果以及與其他方法對比實驗。
對圖1檢測的屋脊分布及屋脊極小值點的提取結(jié)果如圖4所示。
(a)屋脊特征分布
從上述圖像中某一行的屋脊分布圖可見,通過極值點檢測可以提取一行中幾十個屋脊特征。其中噪聲屋脊數(shù)遠大于裂縫屋脊數(shù),裂縫處的屋脊高度小于噪聲處的屋脊高度??梢娫撐菁固卣髂軌蛞欢ǔ潭鹊膮^(qū)分裂縫和噪聲,為下一步提取裂縫做準備。整幅圖的所有屋脊極小值點提取結(jié)果如圖5所示。
圖5 全圖屋脊極小值點檢測結(jié)果
雖然裂縫高度值大于噪聲高度值,但是受光照的影響,高度值大小不定,無法設置固定閾值,因此按照本文提出的自動選取閾值方法實驗如下:
以圖像某行為例,檢測的高度值及統(tǒng)計高度值的直方圖分別如圖6(a)、圖6(b)所示。計算每個屋脊高度可能是裂縫的概率為[0,0,0.06,0.08,0.02,0.01,0.06,0.07,0.06,0.04,0.13,0.16,0.07,0.4,0.46,0.6,1],如圖6(c)所示。相鄰差計算為[0,0.06,0.02,-0.06,-0.01,0.05,0.01,-0.01,-0.02,0.09,0.03,-0.09,0.33,0.06,0.14,0.4],其中最大變化作為閾值,用紅星標記,提取原始圖像中高度大于等于49處對應的極小值點即為裂縫中心點,如圖6(d)所示。按照上述方法,對全圖按行、列、兩者融合后的裂縫檢測結(jié)果如圖7所示。
圖6 某行裂縫檢測關鍵步驟
圖7 裂縫檢測結(jié)果
圖7(c)檢測結(jié)果可見,本文算法能夠在盡可能全面的保留裂縫的同時去除大量噪聲,為后續(xù)裂縫提取帶來方便。
觀察圖7(c)檢測結(jié)果,裂縫宏觀呈線條狀特征,放大看有很多斷續(xù)處如圖8所示,通過數(shù)學形態(tài)學法處理,可最終提取裂縫結(jié)果。關鍵步驟如圖9所示。
圖8 裂縫放大處
圖9 裂縫提取結(jié)果
對圖庫測試,取5張典型圖像,包括橫向、縱向、斜向裂縫,寬窄不一的裂縫,還有包含水印、筆畫線的裂縫圖像。本文提出的裂縫檢測方法與馬爾科夫圖像分割和小波變換邊緣檢測方法對比結(jié)果如圖10所示。
由圖10可見:MRF[12](markov random filed,馬爾科夫隨機場)算法是一種基于統(tǒng)計量的圖像分割算法,其特點為模型參數(shù)少,空間約束性強。其認為在圖像中某一點的特征只與其附近的一小塊鄰域有關,而與其他的鄰域無關。不僅能檢測出裂縫還能檢測出水印、筆畫線等,誤檢較多;小波變換邊緣檢測,采用了多尺度,檢測效果受尺度選擇影響較大。圖中觀察可見,圖像對比度越強,檢測效果越好,裂縫較弱的同時噪聲檢出較高;本文算法在裂縫檢出的同時,去除噪聲效果明顯優(yōu)于其他幾種算法。
圖10 與其他算法檢測結(jié)果對比
由于待檢測的裂縫在圖像中表現(xiàn)為屋脊特征,因此本文提出一種基于屋脊特征分析的裂縫檢測算法。首先通過檢測極值的方法檢出所有屋脊;然后根據(jù)屋脊高度直方圖去除噪聲檢出裂縫;最后用數(shù)學形態(tài)學連接斷點提取完整裂縫。該算法在遼寧省唐嶺山隧道現(xiàn)場采集的實際襯砌圖庫中進行的實驗驗證表明,裂縫檢出率和噪聲去除率都取得了較好效果。另外,本文提出的將圖像二維空間中的曲線檢測問題轉(zhuǎn)換到一維空間中的極值點檢測問題,為具有屋脊特征的對象檢測提供一種新思路。