郭運(yùn)沖,李孟軍,劉名果,敖天勇
(河南大學(xué)物理與電子學(xué)院,河南 開(kāi)封 475000)
建筑物裂縫檢測(cè)在建筑物健康監(jiān)測(cè)領(lǐng)域中具有重要的意義[1]。裂縫邊緣檢測(cè)的效果決定著建筑物裂縫寬度測(cè)量和建筑物健康程度判斷的準(zhǔn)確性。隨著計(jì)算機(jī)視覺(jué)和數(shù)字圖像處理技術(shù)的快速發(fā)展和應(yīng)用,以圖像處理技術(shù)為核心方法進(jìn)行建筑物裂縫檢測(cè)成為一種趨勢(shì)。張海明等人針對(duì)當(dāng)前大型工程的檢測(cè),提出一種基于圖像處理的非接觸式裂縫檢測(cè)方法[2]。李鵬等人針對(duì)非均勻背景中傳統(tǒng)分割算法復(fù)雜度等問(wèn)題,提出一種裂縫的自適應(yīng)閾值分割算法[3]。肖鋒等人基于數(shù)字圖像處理技術(shù)對(duì)建筑物裂縫進(jìn)行檢測(cè)[4]。Oliveira H等人提出一種裂縫自動(dòng)檢測(cè)系統(tǒng)[5]。這些研究表明基于圖像處理技術(shù)的建筑物裂縫邊緣檢測(cè)正成為建筑物健康監(jiān)測(cè)重要手段之一。圖像邊緣檢測(cè)方法主要是從圖像的高頻分量中提取邊緣信息,主要手段是微分運(yùn)算?;谔荻人阕幽0暹吘墮z測(cè)算法是邊緣檢測(cè)常用的手段,常見(jiàn)的算法有Roberts、Soble、Prewitt、Log、Canny等[6-8]。其中Canny算子具有較高的信噪比和檢測(cè)精度,是當(dāng)前效果較優(yōu)的邊緣檢測(cè)算子,得到了廣泛的應(yīng)用[9-12],但是傳統(tǒng)的Canny算子中高斯函數(shù)的方差和高低閾值的選取均需要人為操作,自適應(yīng)性差,且梯度計(jì)算采用的是2×2鄰域中的有限差分均值,對(duì)含噪聲裂縫圖像比較敏感,同時(shí)提取的裂縫邊緣方向性較弱,具有局限性。
針對(duì)Canny算子的優(yōu)化,也有眾多研究。王海龍等人提出一種改進(jìn)的Canny自適應(yīng)閾值選定方法[13],達(dá)到了良好的邊緣檢測(cè)效果。Marina 等人提出一種改進(jìn)的Canny算法,用改進(jìn)的中值濾波器替代高斯平滑濾波,有效地去除了散斑噪聲[14]。針對(duì)傳統(tǒng)Canny算子中高、低閾值難以選取的問(wèn)題,Garima等人提出一種基于分水嶺算法和自適應(yīng)閾值的改進(jìn)Canny算法,對(duì)圖像進(jìn)行有效的自動(dòng)分割[15]。DUAN Zhenyun等人為提高傳統(tǒng)Canny算法自適應(yīng)性,利用直方圖選取高低閾值[16]。
現(xiàn)有的研究結(jié)果多集中在濾波自適應(yīng)和閾值選取上,雖然在一定程度上能夠提高檢測(cè)精度,但是在面向建筑物裂縫的特殊場(chǎng)景中,仍然存在著一些邊緣信息會(huì)被處理掉,導(dǎo)致邊緣檢測(cè)結(jié)果中邊緣數(shù)量減少等問(wèn)題,引起測(cè)量精度下降。針對(duì)Canny算子在建筑物裂縫圖像邊緣檢測(cè)上存在的不足之處,本文提出了一種改進(jìn)Canny的邊緣檢測(cè)算法,采用雙邊濾波器和中值濾波器相結(jié)合的混合濾波器對(duì)建筑物裂縫圖像去噪,改進(jìn)梯度方向的劃分,采用基于Otsu算法和梯度直方圖獲取最佳閾值的方式。該改進(jìn)算法對(duì)含噪聲圖像的處理有明顯優(yōu)勢(shì),能提高算法的適應(yīng)性。實(shí)驗(yàn)結(jié)果表明,所提出的改進(jìn)Canny的邊緣檢測(cè)算法在邊緣檢測(cè)和抗噪聲干擾方面有較好的效果。
Canny邊緣檢測(cè)算子是由John F.Canny提出的一種多級(jí)檢測(cè)算法[17]。其基本流程如圖1所示。
圖1 傳統(tǒng)Canny邊緣檢測(cè)算子基本流程圖
Canny邊緣檢測(cè)算法在進(jìn)行處理前首先用高斯濾波器對(duì)輸入圖像進(jìn)行平滑濾波去除噪聲,采用二維高斯函數(shù)的一階導(dǎo)數(shù)對(duì)圖像進(jìn)行平滑,取二維高斯函數(shù)為
(1)
其梯度矢量為
(2)
為了提高Canny算子的運(yùn)算速度,將?G(x,y)的二維卷積模板分解為兩個(gè)一維濾波器
(4)
然后將這兩個(gè)模板分別與圖像f(x,y)進(jìn)行卷積得到
(6)
傳統(tǒng)的Canny算子從水平和垂直兩個(gè)方向上采用2×2鄰域內(nèi)的有限差分來(lái)求取數(shù)據(jù)陣列M(x,y)的梯度。點(diǎn)(x,y)處兩個(gè)方向的偏導(dǎo)數(shù)Nx(x,y)和Ny(x,y)分別為
Nx(x,y)=[M(x,y+1)-M(x,y)]/2
+[M(x+1,y+1)-M(x+1,y)]/2
(7)
Ny(x,y)=[M(x,y+1)-M(x+1,y)]/2
+[M(x,y+1)-M(x+1,y+1)]/2
(8)
導(dǎo)數(shù)的計(jì)算對(duì)噪聲非常敏感,從水平和垂直兩個(gè)方向?qū)D像進(jìn)行邊緣檢測(cè),其檢測(cè)結(jié)果容易出現(xiàn)漏檢的情況。
像素的梯度幅值和梯度方向用直角坐標(biāo)到極坐標(biāo)轉(zhuǎn)化公式來(lái)計(jì)算,采用二階范數(shù)來(lái)計(jì)算梯度幅值和梯度方向分別為式(9)與式(10)。
(9)
P[x,y]=arctan(Ny[x,y]/Nx[x,y])
(10)
如果像素點(diǎn)(x,y)的梯度幅值Q(x,y)大于或等于沿梯度方向P(x,y)兩個(gè)相鄰像素點(diǎn)的梯度幅值,則可以判定該點(diǎn)為可能的邊緣點(diǎn)。
僅僅計(jì)算得到建筑物裂縫圖像的全局梯度并不能夠準(zhǔn)確得獲取到邊緣,因此為了得到比較準(zhǔn)確的建筑物裂縫圖像的邊緣點(diǎn),需要對(duì)其進(jìn)行細(xì)分,找到幅值波動(dòng)最突出的邊緣點(diǎn)。非極大值抑制的處理流程為:首先找出梯度強(qiáng)度的非零點(diǎn),然后順著該點(diǎn)的梯度方向找到其相鄰的兩個(gè)點(diǎn),如果這兩個(gè)鄰近點(diǎn)的幅值大于它們的起點(diǎn),那么可以判斷該點(diǎn)并不在邊緣上,反之則可以把其作為候選的邊緣點(diǎn)。
雙閾值算法是對(duì)經(jīng)過(guò)非極大值抑制后的圖像分別使用高、低兩個(gè)閾值進(jìn)行分割。如果點(diǎn)的邊緣強(qiáng)度值比高閾值大,那么將該點(diǎn)作為邊緣點(diǎn)進(jìn)行標(biāo)記;如果比低閾值小,則將其作為非邊緣點(diǎn)記錄下來(lái);若處于高閾值和低閾值之間,需要判斷該像素點(diǎn)是否與之前得到的邊緣點(diǎn)八連通,如果連通則將該像素點(diǎn)標(biāo)記為邊緣點(diǎn),反之為非邊緣點(diǎn)。這樣不斷地標(biāo)記邊緣點(diǎn),就能把不閉合的邊緣點(diǎn)連接成邊緣輪廓,從而可以得到圖像的邊緣。
傳統(tǒng)Canny邊緣檢測(cè)算法是通過(guò)高斯濾波器來(lái)處理建筑物裂縫圖像,處理過(guò)程中常常因?yàn)閰?shù)選擇不合適,難以得到理想的去除噪聲的裂縫圖像。建筑物裂縫圖像平滑濾波的目的是消除噪聲、提高信噪比,但實(shí)際上在對(duì)建筑物裂縫圖像平滑濾波過(guò)程中,一些邊緣的信息會(huì)被處理掉,導(dǎo)致邊緣檢測(cè)結(jié)果中邊緣數(shù)量減少。因此可以采用雙邊濾波和中值濾波器級(jí)聯(lián)的混合濾波器對(duì)Canny算法中的濾波進(jìn)行改進(jìn)。雙邊濾波器能夠達(dá)到增強(qiáng)保邊的目的,且減少了邊緣的損失。中值濾波器在抑制噪聲的同時(shí)能夠保留邊界,對(duì)提取建筑物裂縫圖像邊緣的信息具有很大的優(yōu)勢(shì)。
Canny邊緣檢測(cè)算子中高斯濾波器只考慮了像素點(diǎn)之間的歐式距離。非線性的雙邊濾波器內(nèi)的核函數(shù)在此基礎(chǔ)上考慮了像素間灰度值的影響,即雙邊濾波器的加權(quán)系數(shù)由兩部分組成,一部分由像素間的空間距離之差確定,稱之為空間鄰近度因子;另一部分由像素間的灰度值之差確定,稱之為灰度相似度因子。雙邊濾波器濾波后的每個(gè)像素的灰度值等于鄰域像素的加權(quán)平均,雙邊濾波的權(quán)重等于空間鄰近度因子和灰度相似度因子的乘積。這樣確保了建筑物裂縫圖像中,只有空間距離近、灰度值差異不大的鄰域像素對(duì)中心像素點(diǎn)的濾波效果有很大影響。這樣不僅能完整地保存邊緣,還能完成圖像的噪聲去除。
設(shè)建筑物裂縫圖像I在坐標(biāo)點(diǎn)p=(x,y)的灰度值為Ip,濾波后得到的建筑物裂縫圖像BI在坐標(biāo)點(diǎn)P的灰度值定義為BIp,雙邊濾波的公式如式(11)、(12)所示。
(12)
式中,q=(u,v)為中心像素P的鄰域像素點(diǎn),鄰域像素點(diǎn)集合為S,Wp為歸一化因子,Gσs為空間鄰近度因子,Gσr為灰度相似度因子,因子表達(dá)式由式(13)和式(14)給出
(14)
其中,σs是基于高斯函數(shù)的距離標(biāo)準(zhǔn)差,控制著空間域?yàn)V波核函數(shù)的徑向作用范圍;σr是基于高斯函數(shù)的灰度標(biāo)準(zhǔn)差,控制著灰度濾波核函數(shù)的徑向作用范圍。兩者決定著雙邊濾波器的性能,且能根據(jù)建筑物裂縫邊緣圖的實(shí)際情況進(jìn)行人為的調(diào)整,從而調(diào)整雙邊濾波器的實(shí)際效果。
像素的加權(quán)值是由像素位置的相對(duì)空間和灰度變化范圍來(lái)調(diào)節(jié)的,在建筑物裂縫圖像中像素值無(wú)太大波動(dòng)的區(qū)域,其像素范圍域權(quán)重相當(dāng)于1,建筑物裂縫圖像中空間域權(quán)重起著關(guān)鍵作用,處理得到的效果和高斯濾波器處理建筑物裂縫圖像的效果類似。然而在建筑物裂縫圖像中像素值變化大的區(qū)域,像素范圍域權(quán)重會(huì)出現(xiàn)明顯的變化,從而雙邊濾波器能在消除噪聲的同時(shí)保留邊緣的信息。
中值濾波器在一維情形下是一個(gè)含有奇數(shù)個(gè)像素的滑動(dòng)窗口,窗口正中間那個(gè)像素的值用窗口內(nèi)各像素值的中值代替。設(shè)輸入的序列為{Xi,i∈I},I為自然數(shù)集合或子集,窗口的長(zhǎng)度為n,則中值濾波器的輸出結(jié)果為yi=Med{Xi}=Med{Xi-u,…,Xi,…,Xi+u},其中i∈I,u=(n-1)/2。本文使用3×3模板,需要處理以坐標(biāo)(x,y)為中心的9個(gè)灰度值,這些灰度值以升序排列,第五個(gè)分量為中值,用此分量代替目標(biāo)點(diǎn)的灰度值,結(jié)合雙邊濾波器有效地對(duì)裂縫圖像中的噪聲進(jìn)行了抑制。
傳統(tǒng)的Canny邊緣檢測(cè)算法中計(jì)算方向角時(shí)是把梯度劃分成為4個(gè)方向,分別為0°、45°、90°、和135°。建筑物裂縫圖像邊緣的梯度方向不一定是沿著這四個(gè)方向分布。使用傳統(tǒng)劃分方法會(huì)導(dǎo)致邊緣的細(xì)化程度較低,可能會(huì)遺漏掉部分圖像的信息。因此,本文提出一種對(duì)梯度方向更加細(xì)致的劃分方法,解決傳統(tǒng)Canny邊緣檢測(cè)算法出現(xiàn)假邊緣和丟失一些真實(shí)邊緣細(xì)節(jié)的問(wèn)題。
改進(jìn)的梯度方向劃分如圖2所示,將梯度方向劃分成6個(gè)區(qū)間。
圖2 改進(jìn)方向劃分圖
其中各個(gè)方向的偏導(dǎo)數(shù)計(jì)算公式如下:
1)處于0°方向的方向偏導(dǎo)數(shù)為
A0°(x,y)=I(x+1,y)-I(x-1,y)
(15)
2)處于45°方向的方向偏導(dǎo)數(shù)為
A45°(x,y)=I(x-1,y+1)-I(x+1,y-1)
(16)
3)處于90°方向的方向偏導(dǎo)數(shù)為
A90°(x,y)=I(x,y+1)-I(x,y-1)
(17)
4)處于135°方向的方向偏導(dǎo)數(shù)為
A135°(x,y)=I(x+1,y+1)-I(x-1,y-1)
(18)
將中心像素點(diǎn)的梯度幅值與其相鄰2個(gè)方向上的4個(gè)像素點(diǎn)梯度幅值比較,若前者比后者大則可將該點(diǎn)梯度幅值設(shè)置為255,并且標(biāo)記該點(diǎn)為邊緣像素點(diǎn),反之均為非邊緣像素點(diǎn),并將其梯度幅值設(shè)置為0。這種方法能提高梯度計(jì)算的魯棒性,減少噪聲的干擾。
傳統(tǒng)Canny算法需要人為的設(shè)定固定的高低閾值,高閾值設(shè)置過(guò)高會(huì)導(dǎo)致建筑物裂縫圖像中的一些重要邊緣信息丟失,低閾值設(shè)置過(guò)低會(huì)導(dǎo)致檢測(cè)出較多的虛假邊緣。本文采用最大類間方差法(Otsu)與梯度直方圖結(jié)合的算法計(jì)算高閾值Th,并設(shè)定低閾值為Tl=Th/2。改進(jìn)后的算法增強(qiáng)了Canny算子的自適應(yīng)能力。Otsu法是一種使類間方差最大的自動(dòng)求取閾值的方法。假設(shè)圖像像素為N,灰度范圍為[0,L-1],對(duì)應(yīng)灰度級(jí)i的像素?cái)?shù)為Ni,概率為
Pi=ni/N,i=0,1,2,…,L-1
(19)
把圖像中的像素按灰度值用閾值T分成兩類C0和C1,C0由灰度值在[0,T]的像素組成,C1由灰度值在[T+1,L-1]的像素組成,對(duì)于灰度分布概率,整幅圖像的均值為
(20)
則C0和C1的均值為
(21)
由式(20)與式(21)可得
uT=?0u0+?1u1
(22)
類間方差的定義為
-2(?0u0+?1u1)uT
=?1?0(u0-u1)2
(23)
通過(guò)Otsu法獲得閾值后,因?yàn)樘荻戎狈綀D表現(xiàn)了邊緣的強(qiáng)度等信息,為了減少丟失一些必要的裂縫邊緣點(diǎn),采用梯度直方圖可以更確切的觀察當(dāng)前取得的閾值是否會(huì)造成邊緣信息的丟失。設(shè)高閾值和低閾值分別為TH和TL,高閾值的選取方法為:根據(jù)建筑物裂縫圖像特征得到的梯度直方圖,從小到大逐漸累計(jì)像素點(diǎn)的數(shù)目并觀察效果,如果達(dá)到最佳效果后記錄下當(dāng)前的級(jí)別值,將Otsu法處理后獲得的圖像與該方法處理后獲得的圖像進(jìn)行對(duì)比,如果Otsu法處理后的像素點(diǎn)與梯度直方圖法處理后的像素點(diǎn)相差小于β,則可以認(rèn)為此時(shí)的級(jí)別值為高閾值TH,求得高閾值后,將高閾值乘以一個(gè)比例因子即可得到其低閾值。
為了驗(yàn)證本文提出算法的有效性,該實(shí)驗(yàn)在Intel Core i7-6700 @3.40GHz CPU,8GB RAM的Windows7計(jì)算機(jī)上使用MATLAB R2016a平臺(tái)實(shí)現(xiàn)。
本文采用雙邊濾波器和中值濾波器的混合濾波器代替高斯濾波器,設(shè)雙邊濾波器邊長(zhǎng)為5,σs與σr的值分別取3和0.1,對(duì)建筑物表面裂縫圖像進(jìn)行濾波。圖3分別給出了本文算法、均值濾波、高斯濾波、自適應(yīng)濾波、排序?yàn)V波算法的實(shí)驗(yàn)對(duì)比結(jié)果。
圖3 建筑物裂縫圖像濾波三組實(shí)驗(yàn)對(duì)比結(jié)果
從圖3中三組實(shí)驗(yàn)結(jié)果可以看出如下:均值濾波后的圖像變得模糊;高斯濾波方法邊緣會(huì)產(chǎn)生模糊,這主要是因?yàn)楦咚购酥豢紤]了空間分布,沒(méi)有考慮到像素值的差異;自適應(yīng)濾波在抑制部分噪聲的同時(shí)保留了邊緣信息;排序?yàn)V波的處理會(huì)造成部分裂縫特征信息的丟失,同時(shí)背景的噪聲未能很好的抑制去除;本文提出的改進(jìn)型混合濾波器在平滑濾波的同時(shí)保留了邊緣的信息,這對(duì)于后期提取建筑物裂縫圖像邊緣信息具有很大的優(yōu)勢(shì)。
本文采用峰值信噪比(PSNR)和均方誤差(MSE)來(lái)對(duì)建筑物表面裂縫邊緣檢測(cè)效果進(jìn)行評(píng)價(jià)。峰值信噪比越大,可得出處理過(guò)后的建筑物表面裂縫圖像的信息量相對(duì)較大,裂縫圖像表面噪聲相對(duì)較少,裂縫圖像相對(duì)清晰。均方誤差值越小,可得出處理過(guò)的表面裂縫圖像與原圖較接近。表1是三組原始表面裂縫圖像分別經(jīng)過(guò)均值濾波、高斯濾波、自適應(yīng)濾波、排序?yàn)V波與本文算法得到的峰值信噪比和均方誤差的實(shí)驗(yàn)對(duì)比結(jié)果。表1中PSNR提高百分比和MSE減少百分比的定義見(jiàn)式(24)、(25)。
圖4 建筑物裂縫圖像邊緣檢測(cè)三組實(shí)驗(yàn)結(jié)果
表1 建筑物表面裂縫圖像去噪效果對(duì)比
(24)
(25)
根據(jù)表1中的計(jì)算結(jié)果,本文改進(jìn)算法相對(duì)于高斯濾波算法而言,三組實(shí)驗(yàn)的峰值信噪比平均提高了7.95%,均方誤差減少了46.45%,本文算法得出的建筑物表面裂縫圖像信息量較大且與原圖像接近,有效的抑制了噪聲且保持了建筑物裂縫圖像邊緣的信息。
采用經(jīng)過(guò)本文濾波算法后的三組實(shí)驗(yàn)結(jié)果圖像,對(duì)其進(jìn)行采用Otsu法與梯度直方圖結(jié)合算法得到建筑物裂縫圖像中裂縫邊緣。圖4為建筑物表面裂縫圖像的邊緣檢測(cè)實(shí)驗(yàn)結(jié)果。
從圖4d和圖4e可以得出,傳統(tǒng)算法檢測(cè)出的邊緣數(shù)少,且邊緣的完整性不高,本文提出的算法比傳統(tǒng)的Canny算法獲取了更多的建筑物裂縫邊緣細(xì)節(jié)信息,改進(jìn)型的Canny算法檢測(cè)出的建筑物裂縫邊緣細(xì)節(jié)更優(yōu),裂縫邊緣的主體輪廓連貫性也有所提高。
對(duì)于邊緣檢測(cè)算法性能的評(píng)價(jià),文獻(xiàn)[18]給出了一種基于邊緣像素總數(shù)、4連通域數(shù)和8連通域數(shù)的評(píng)價(jià)方法,該評(píng)價(jià)方法能很好地反映邊緣檢測(cè)的效果。其基本的思想是:首先計(jì)算該算法檢測(cè)出的邊緣像素總數(shù)A、4連通域數(shù)B和8連通域數(shù)C,然后分別計(jì)算8連通域數(shù)C與邊緣像素總數(shù)A的比值,8連通域數(shù)C與4連通域數(shù)B的比值。C/A表示建筑物表面圖像裂縫邊緣線的完整度,C/A的比值越小,表明建筑物圖像裂縫邊緣連續(xù)性越好。C/B表示建筑物圖像裂縫的單一邊緣性,該比值越小,表明單像素邊緣所占比例越大,越符合單一邊緣響應(yīng)準(zhǔn)則。
對(duì)三組建筑物表面裂縫邊緣測(cè)試圖像分別采用傳統(tǒng)Canny算法和本文所提出的改進(jìn)算法進(jìn)行邊緣檢測(cè)計(jì)算,并對(duì)檢測(cè)的結(jié)果進(jìn)行邊緣像素總數(shù)、4連通域數(shù)和8連通域數(shù)的計(jì)算統(tǒng)計(jì)。該實(shí)驗(yàn)詳細(xì)的參數(shù)計(jì)算結(jié)果如表2所示。
表2 建筑物表面裂縫測(cè)試圖像信息統(tǒng)計(jì)結(jié)果
從表2中的統(tǒng)計(jì)結(jié)果能夠得出,采用本文提出的建筑物表面裂縫邊緣檢測(cè)算法處理過(guò)的表面裂縫圖的C/A值比傳統(tǒng)算法的值小,采用本文提出的算法對(duì)裂縫邊緣檢測(cè)后的C/B值小于傳統(tǒng)邊緣檢測(cè)算法,表明本文提出的改進(jìn)算法在建筑物表面裂縫圖像提取的邊緣連續(xù)性和單一邊緣性上較好。
本文對(duì)傳統(tǒng)Canny算法在建筑物裂縫檢測(cè)中存在的不足之處進(jìn)行了改進(jìn)。采用雙邊濾波器和中值濾波器的混合濾波器對(duì)建筑物裂縫圖像進(jìn)行去噪處理,并在梯度計(jì)算和閾值的選取方面進(jìn)行了優(yōu)化。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的算法不僅很好地抑制噪聲對(duì)邊緣檢測(cè)的干擾,而且能有效地保護(hù)邊緣細(xì)節(jié),裂縫邊緣檢測(cè)整體效果得到了提升。