魏永杰,葛婷婷,張中岐,馬寶強(qiáng),車(chē)進(jìn)超
(河北工業(yè)大學(xué) 機(jī)械工程學(xué)院,天津 300130)
建筑物的破壞往往是從裂縫開(kāi)始的,各種原因產(chǎn)生的裂縫影響結(jié)構(gòu)的正常使用、耐久性和安全性。對(duì)裂縫進(jìn)行長(zhǎng)期的監(jiān)測(cè)可以及時(shí)掌握建筑物裂縫變化的情況和規(guī)律,為建筑物的質(zhì)量檢測(cè)提供依據(jù)。基于圖像法的裂縫檢測(cè)方法在該領(lǐng)域得到了廣泛應(yīng)用[1]。
裂縫的圖像檢測(cè)方法是典型的邊界提取算法。為了從圖像中提取邊緣,通常會(huì)使用到邊緣檢測(cè)算子[2],如Sobel算子、prewitt算子、log算子、Roberts算子和Laplacian算子等。其中Sobel算子并沒(méi)有將圖像的主題與背景嚴(yán)格地區(qū)分開(kāi)來(lái),沒(méi)有基于圖像灰度進(jìn)行處理,所以提取的圖像輪廓有時(shí)并不能令人滿意;在現(xiàn)場(chǎng)測(cè)量距離遠(yuǎn)、鏡頭焦距長(zhǎng)的情況下,裂縫所處環(huán)境比較復(fù)雜,背景和光照信息多樣,實(shí)際場(chǎng)景的圖像包含的數(shù)據(jù)是不連續(xù)和模糊的,常用邊緣檢測(cè)方法對(duì)圖像的復(fù)雜程度估計(jì)不夠,難以滿足工程應(yīng)用的需求,結(jié)果往往不能令人滿意。因此,研究如何消除噪聲的邊緣提取算法是目前的一個(gè)熱點(diǎn)問(wèn)題。
目前,在常用的裂縫檢測(cè)算法中[3],最為著名的是Otsu算法,它能夠應(yīng)用于多種邊緣檢測(cè)算子,可有效降低噪聲的影響[4]。HA算法是較早提出的一種方法,有效地解決了裂縫節(jié)點(diǎn)識(shí)別困難、缺陷處理量小等常規(guī)方法不能解決的問(wèn)題[5]。采用基于小波變換的裂縫檢測(cè)方法,可將圖像變換到不同方向的子帶進(jìn)行裂縫提取[6]。將形態(tài)學(xué)方法用于裂縫檢測(cè),可通過(guò)中值濾波、灰度形態(tài)算子等邊緣檢測(cè)算法檢測(cè)具有較高對(duì)比度的裂縫[7]??紤]到光照等周?chē)h(huán)境對(duì)圖像造成的劇烈影響,有人提出了基于自適應(yīng)模糊的局部區(qū)域圖像增強(qiáng)算法[8]。此外,由于二維影像平面處理,沒(méi)有充分考慮裂縫所處的物方三維空間,很難建立精確的數(shù)學(xué)模型,導(dǎo)致計(jì)算的裂縫尺寸具有較大的誤差[9],因此有人將二維圖像轉(zhuǎn)化到三維空間進(jìn)行測(cè)量[10],除對(duì)平面圖像進(jìn)行處理外,用雙目立體視覺(jué)模型測(cè)量裂縫的空間尺寸,彌補(bǔ)了二維建模和測(cè)量精度的缺陷[11],但在光線條件較差時(shí)容易導(dǎo)致匹配和計(jì)算精度下降[12]。
常用常規(guī)圖像法提取裂縫,識(shí)別位置和尺寸信息比較困難。因此,基于圖像形態(tài)學(xué)的基本原理,提出累積梯度算法,用于裂縫的圖像識(shí)別。
對(duì)于建筑物的各種裂縫,在有光照情況下表現(xiàn)為暗線條,以灰度圖像表示,為較小的灰度值。如果背景為均勻且噪聲小的高灰度值,則可通過(guò)設(shè)定域值,將圖像直接轉(zhuǎn)化為二值化圖像,得到裂縫信息。而在多數(shù)情況下,裂縫所處背景復(fù)雜,尤其是在建筑物上,由于材料及建造工藝等因素影響,使得根本無(wú)法得到裂縫缺陷信息。圖1是采集到的含有裂縫的建筑物原始圖片及處理結(jié)果。其中圖1(a)是原始圖片,該雕塑上面有一條清晰裂縫。圖1(b)是經(jīng)直方圖均衡化的結(jié)果,可見(jiàn)該圖片光照不均均,左側(cè)光強(qiáng),右側(cè)光弱,但即便是在右側(cè)光照非常差的范圍內(nèi),人眼也能夠觀察到裂縫。圖中花崗巖的紋理非常明顯,且有許多斑點(diǎn),這些對(duì)檢測(cè)結(jié)果都會(huì)產(chǎn)生影響。圖2是采用Otsu算法處理的結(jié)果。該結(jié)果不能提取到所有的裂縫區(qū)域。
圖1 含有裂縫的圖像Fig.1 Image with crack
圖2 Otsu算法處理結(jié)果Fig.2 Result with Otsu
圖3是分別采用6種邊緣檢測(cè)算子檢測(cè)的結(jié)果。圖3中所采用的邊緣檢測(cè)算子對(duì)于標(biāo)準(zhǔn)圖像均可得到較好效果,但對(duì)于圖1的實(shí)驗(yàn)照片只可見(jiàn)到一條模糊邊界,如圖3(a)、(b)所示,這條裂縫在右側(cè)暗區(qū)是觀察不到的,且這些算子得到的圖像含有大量孤立噪聲點(diǎn)。對(duì)比圖1(b),圖3中的6幅圖像右側(cè)均為零值,與圖1中光照較差有關(guān)。由圖3結(jié)果可見(jiàn),這些算子均不能滿足圖1的檢測(cè)要求。
圖3 常用邊緣算子檢測(cè)結(jié)果Fig.3 Results by commonly used edge detection operators
為解決上述問(wèn)題,在對(duì)原始圖像濾波的基礎(chǔ)上,首先采用自適應(yīng)二值化方法得到裂縫的邊緣信息[13]。該算法是基于每個(gè)像素點(diǎn)選取不同的域值來(lái)達(dá)到二值化目的。它是通過(guò)計(jì)算像素點(diǎn)周?chē)囊粋€(gè)小區(qū)域內(nèi)進(jìn)行加權(quán)平均,然后減去一個(gè)常數(shù)來(lái)得到自適應(yīng)閾值[14]。即:
(1)
式中:Ti表示第i個(gè)像素點(diǎn)的域值;Gmn表示第i點(diǎn)周?chē)鶾-b,b]×[-b,b]的區(qū)域內(nèi)各點(diǎn)的像素值。(1)式中右側(cè)第一項(xiàng)表示加權(quán)平均,可采用平均加權(quán)方法或高斯加權(quán)方法。C為選定的常數(shù),該參數(shù)根據(jù)圖像對(duì)比度及光照均勻程度選取。本文的裂縫為低灰度值,應(yīng)選擇較小的C值,得到處理后的裂縫比實(shí)際裂縫寬,以便于后續(xù)處理。
在(1)式處理后的二值化圖像中可觀察到明顯的裂縫形狀,但該圖像仍含有大量噪聲,不能滿足計(jì)算機(jī)處理的要求。為此,基于計(jì)算機(jī)圖像形態(tài)學(xué)和OpenCV計(jì)算機(jī)視覺(jué)庫(kù)[15],對(duì)結(jié)果進(jìn)行進(jìn)一步處理。
二值化后裂縫的灰度值為0,通過(guò)圖像形態(tài)學(xué)的腐蝕操作可將(1)式處理的二值化圖像孤立點(diǎn)連在一起,同時(shí)會(huì)將灰度值為0的噪聲點(diǎn)范圍擴(kuò)大,采用比腐蝕窗口稍大的窗口進(jìn)行一次閉操作可消除噪聲點(diǎn)。
為了進(jìn)行裂縫識(shí)別,需要對(duì)形態(tài)學(xué)操作后進(jìn)行去噪聲、識(shí)別和提取。因此,可采用連通域方法,將裂縫和噪聲分別連接為連通區(qū)域,并找到這些連通區(qū)域的邊界。
裂縫特征和噪聲具有不同的連通域特征。裂縫一般為極窄極長(zhǎng)的連通域,噪聲區(qū)域?yàn)殚L(zhǎng)寬比相差不多的連通域且面積較小,考慮幾何圖形周長(zhǎng)和面積的關(guān)系,可去掉二值化圖像中大部分噪聲信號(hào)。設(shè)裂縫寬度為b且相差不多,長(zhǎng)度為a,周長(zhǎng)為l,面積為S,長(zhǎng)寬比a∶b=m,則面積和周長(zhǎng)的比值k為
(2)
由(2)式可知,對(duì)于寬度為定值的裂縫,如果設(shè)定長(zhǎng)寬比為m0,則可得到面積和周長(zhǎng)平方的比值k0。根據(jù)裂縫的特性,一般長(zhǎng)度要比寬度大很多。設(shè)a∶b>m0時(shí)為裂縫,則k>k0,反之為噪聲。通過(guò)連通域計(jì)算,可得到各個(gè)連通域的面積S和長(zhǎng)度l。根據(jù)上述判據(jù),可將a∶b≤m0的連通域作為噪聲去除。同時(shí),當(dāng)面積S很小時(shí),對(duì)于我們研究裂縫無(wú)意義,因此將a∶b>m0且面積很小的連通域也作為噪聲區(qū)域去除,得到裂縫連通域。對(duì)于少數(shù)噪聲點(diǎn)也可手動(dòng)刪除。
經(jīng)過(guò)自適應(yīng)二值化和圖像形態(tài)學(xué)操作后的裂縫連通域與原始圖像的裂縫形狀相同但范圍擴(kuò)大,即裂縫變寬,不能滿足測(cè)量需要。為解決上述問(wèn)題,提出了累積梯度算法。
所謂累積梯度算法,即將二值化和圖像形態(tài)學(xué)操作后的裂縫連通域作為掩模區(qū)域,該區(qū)域比裂縫區(qū)域?qū)?,灰度值為零。?duì)照掩模區(qū)域,將原始圖像灰度值相加,得累積灰度值Gk。對(duì)該掩模區(qū)域進(jìn)行膨脹操作,掩模區(qū)域變小,將對(duì)應(yīng)的原始圖像灰度值相加得Gk+1,設(shè)累積灰度差k為
(3)
式中:n、m分別為膨脹前后裂縫連通域模板的像素點(diǎn)數(shù)。對(duì)原始圖像依次迭代膨脹;k為最大時(shí)即為累積梯度值,第k次膨脹前的原始圖像即為識(shí)別出的裂縫圖像。
采用上述方法對(duì)圖1(a)圖像進(jìn)行了處理,結(jié)果如圖4所示。
其中圖4(a)是對(duì)原始圖像進(jìn)行平均濾波后的結(jié)果,采用3×3的均值濾波窗口。圖4(b)是自適應(yīng)二值化的結(jié)果,圖中采用31×31的窗口,考慮到裂縫為低灰度值,取常數(shù)C=4。由圖4(b)可以明顯看出裂縫區(qū)域,但周?chē)肼朁c(diǎn)很多,且裂縫不連續(xù)。圖4(c)是采用7×7的窗口腐蝕后的結(jié)果,由于裂縫和噪聲區(qū)域表現(xiàn)為低灰度值,與圖4(b)相比,圖4(c)的裂縫變寬,噪聲區(qū)域也加大。為便于后續(xù)尋找連通域和噪聲去除,采用更大些的窗口對(duì)圖4(c)的腐蝕圖像進(jìn)行閉操作,如圖4(d)所示,采用窗口為9×9。經(jīng)閉操作后裂縫連通的區(qū)域沒(méi)有被分割,但噪聲區(qū)域變小。有利于尋找連通域邊緣。圖4(e)是找到并進(jìn)行黑色內(nèi)部填充的裂縫連通域,并根據(jù)周長(zhǎng)及面積的關(guān)系式(2)將不符合裂縫特征的噪聲區(qū)域刪除后的結(jié)果。從圖中可以看出,如果噪聲與裂縫區(qū)域相連通,則該噪聲區(qū)域不能自動(dòng)刪除,可采用手動(dòng)方法進(jìn)行刪除。經(jīng)手動(dòng)刪除后,可作為原始圖像的掩模版圖像,該圖像為二值化圖像,如圖4(f)所示。
圖4 累積梯度算法得到的模板Fig.4 Stencils by accumulated gradients
將圖4(f)所示掩模版作用于原始圖像,即在原始圖像中只將對(duì)應(yīng)掩模圖像灰度值為零的部分進(jìn)行膨脹操作,選取3×3的窗口進(jìn)行迭代膨脹,原始圖像中累積灰度變化k為最大值時(shí),膨脹前結(jié)果為實(shí)際裂縫。圖5為檢測(cè)的最終結(jié)果。
圖5 裂縫檢測(cè)結(jié)果Fig.5 Crack result
圖5中裂縫連通域?yàn)榛叶葓D,背景以白色表示。圖5與圖4(b)~(e)相比,裂縫區(qū)域要窄,說(shuō)明經(jīng)自適應(yīng)二值化和圖像形態(tài)學(xué)操作后對(duì)于深色裂縫區(qū)域均會(huì)加寬。圖6是采用圖4(f)為模版,對(duì)原始圖像進(jìn)行迭代膨脹的灰度差變化曲線,在第7次膨脹時(shí),該值達(dá)到最大,即為累積梯度,即第6次迭代膨脹后為圖5的裂縫求解結(jié)果。
圖6 迭代膨脹的灰度差變化曲線Fig.6 Gray difference in iterations
為驗(yàn)證該方法的有效性,對(duì)另外一種復(fù)雜背景條件下的樣品進(jìn)行了拍攝和處理。如圖7所示。
圖7 樣品的拍攝和處理Fig.7 Sample shooting and processing
由圖7(a)和7(b)的結(jié)果比較可以看出,采用該方法能夠提取得到有裂縫區(qū)域。
在自適應(yīng)二值化和圖像形態(tài)學(xué)的基礎(chǔ)上,采用累積梯度算法,對(duì)裂縫連通域進(jìn)行迭代膨脹運(yùn)算,并計(jì)算膨脹前后的灰度差值?;叶炔钪底畲髸r(shí)即為累積梯度,對(duì)應(yīng)裂縫的邊緣信息。采用上述方法可在背景復(fù)雜、光照不均的條件下提取得到裂縫信息,為建筑物的安全性檢測(cè)提供預(yù)防手段。