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