李國民,曹隆,朱代先
(西安科技大學(xué)通信與信息工程學(xué)院,陜西西安 710054)
當(dāng)今社會(huì),人們?cè)谧非蟾咂焚|(zhì)生活的基礎(chǔ)上,更加注重安全問題,特別是房屋居住安全。但是近年來,人們?cè)诜课莅踩珕栴}上產(chǎn)生了一些質(zhì)疑,墻面出現(xiàn)裂紋問題尤為突出。
圖像分割能夠準(zhǔn)確地把裂紋區(qū)域從背景中提取出來,而且能夠保留裂紋邊緣特征。邊緣檢測(cè)是圖像分割中的一種常用方法,其原理是提取圖像中灰度發(fā)生變化大的區(qū)域,由此確定裂紋區(qū)域的位置。經(jīng)典的邊緣檢測(cè)算子一般有以一階微分和二階微分為基礎(chǔ)的兩種類型[1],一階微分算子主要有Kirsch 算子、Roberts 算子和Sobel 算子等,特點(diǎn)是運(yùn)算速度快,但是邊緣定位不精準(zhǔn);二階微分算子主要有LoG 算子、Laplacian 算子和Canny 算子等,特點(diǎn)是彌補(bǔ)了一階微分算子邊緣定位不精準(zhǔn)的問題,但是出現(xiàn)了對(duì)噪聲敏感的問題[2-3]。在此背景下,文中提出了一種動(dòng)態(tài)閾值檢測(cè)和形態(tài)學(xué)綜合算法,該算法能在抑制噪聲的同時(shí)較好地檢測(cè)到裂紋圖像的邊緣。
房屋墻面裂紋檢測(cè)是利用HALCON 軟件中的圖像處理方法進(jìn)行編程實(shí)現(xiàn)的。HALCON 是德國Mvtec 公司研發(fā)的一款機(jī)器視覺軟件,擁有廣泛的機(jī)器視覺集成開發(fā)環(huán)境,便于對(duì)圖像進(jìn)行分析處理。墻面裂紋檢測(cè)流程如圖1 所示。

圖1 墻面裂紋檢測(cè)流程圖
為了方便后期進(jìn)行圖像處理,在圖像采集過程中規(guī)定采集環(huán)境為自然光,在垂直于墻面高度約為40 cm 處完成采集。
在采集圖像前需要在裂紋附件貼5 cm 長黑白格進(jìn)行標(biāo)定,貼黑白格的目的有以下兩方面:首先是圖像畸變之后進(jìn)行校準(zhǔn);其次是進(jìn)行開裂大小的計(jì)算,利用黑白格長度與像素進(jìn)行換算。
由于采集環(huán)境的影響,不便設(shè)立一個(gè)固定機(jī)位進(jìn)行圖像采集,所以由操作人員進(jìn)行手持相機(jī)進(jìn)行拍攝。這種方式在采集圖像的過程中有一定的不確定性,特別是手的抖動(dòng)和采集角度改變?nèi)菀自斐蓤D像畸變。如果不及時(shí)進(jìn)行圖像校正,就會(huì)使處理結(jié)果產(chǎn)生誤差[4]。經(jīng)研究發(fā)現(xiàn),采用投影變換對(duì)畸變圖像進(jìn)行校正的效果最優(yōu)。
在變換過程中,直線映射后仍然是直線,但不一定保持原有的平行度,投影變換是將產(chǎn)生畸變的圖像投影到一個(gè)新的視平面,其變換公式如下[5],


也可以將上述四對(duì)點(diǎn)代入式(2),得到八個(gè)方程,聯(lián)立之后可得變換矩陣。
圖像校正流程圖如圖2 所示,其中包含了圖像校正過程所用的方法和算子。

圖2 圖像校正流程圖
圖像校準(zhǔn)過程的第一步是對(duì)目標(biāo)圖像進(jìn)行邊緣檢測(cè),由于黑白格與背景色差異較大,因此根據(jù)灰度值和形狀進(jìn)行提取區(qū)域并生成輪廓,對(duì)應(yīng)算子為threshold、shanpe_trans 和gen_contour_region_xld;第二步對(duì)提取到的邊緣輪廓進(jìn)行分離,并對(duì)分離之后的輪廓進(jìn)行分類,對(duì)應(yīng)算子為segment_contour_region_xld 和select_shap-e_xld;第三步是邊緣擬合,使用算子fit_line_contour_xld,其目的是對(duì)整理好的輪廓xld 進(jìn)行計(jì)算[6];第四步是使用算子intersection_lines 求出四個(gè)點(diǎn),經(jīng)過上述一系列操作之后便可得到變換前后的四對(duì)點(diǎn);最后將得到的點(diǎn)代入到投影變換算子hom_vector_to_proj_hom_mat2d 中,得到最終的校正圖像。畸變圖像如圖3(a)所示,校正后圖像如圖3(b)所示。

圖3 圖像校正
2.2.1 圖像濾波
采集到的圖像由于外界環(huán)境或者是相機(jī)的問題,會(huì)存在一定的噪聲。為了去除這些噪聲,以達(dá)到更好的處理效果,在預(yù)處理時(shí)進(jìn)行圖像濾波操作。圖像濾波其實(shí)就是在盡量保留圖像細(xì)節(jié)特征的條件下,對(duì)圖像噪聲進(jìn)行抑制。常見的濾波方式有中值濾波、均值濾波、高斯濾波和導(dǎo)向?yàn)V波,而不同的濾波方式處理后的圖像效果也不相同,處理效果的好壞直接影響到后續(xù)圖像處理和分析的有效性和可靠性[7]。
1)中值濾波是非線性的圖像處理方法,在去噪的同時(shí)可以保留邊緣信息,它將臨近像素的灰度值按照大小排列,取中間位置的值作為中值濾波后像素點(diǎn)的灰度值。中值濾波對(duì)圖像中孤立的噪聲點(diǎn)消除效果好,尤其是椒鹽噪聲,對(duì)應(yīng)的算子為median_image。
2)均值濾波是典型的線性圖像處理方法,對(duì)圖像內(nèi)部的噪聲有很好的抑制作用。它將臨近的像素灰度值進(jìn)行取平均值,用該平均值代替原來的像素值,因此降噪后圖像的清晰度不理想,對(duì)應(yīng)的算子為mean_image。
3)高斯濾波是一種線性平衡濾波,高斯濾波器的高斯核內(nèi)各系數(shù)是根據(jù)二維高斯分布函數(shù)得到的[8],可用于圖像模糊化(去除細(xì)節(jié)和噪聲)。

式中,G(x,y)是高斯函數(shù)值,x、y是橫縱坐標(biāo)值,σ是高斯函數(shù)標(biāo)準(zhǔn)差。
4)導(dǎo)向?yàn)V波不僅能實(shí)現(xiàn)雙邊濾波的邊緣平滑,而且在邊緣檢測(cè)方面有很好的效果[9]。濾波器的數(shù)學(xué)公式為:

式中,p是輸入圖像,I是引導(dǎo)圖像,q是經(jīng)過濾波后的輸出圖像,i、j分別表示像素下標(biāo),Wij是和引導(dǎo)圖像I相關(guān)的濾波核。
導(dǎo)向?yàn)V波器的一個(gè)重要假設(shè)就是認(rèn)為濾波后的結(jié)果圖q和引導(dǎo)圖像I在濾波窗口內(nèi)存在線性關(guān)系:

式中,wk是以k為中心像素的窗口,ak和bk都是該窗口對(duì)應(yīng)的線性系數(shù)。
需注意的是,文中引導(dǎo)圖像就是原圖像,此時(shí)導(dǎo)向?yàn)V波器就變成了保邊濾波器(Edge Preserving Filter)。
使用以上四種圖像濾波方法,對(duì)墻面原始圖像進(jìn)行濾波操作,原始圖像與濾波圖像如圖4 所示。

圖4 原始圖像與濾波圖像
考慮到所要處理的圖像受環(huán)境影響較大,噪聲也較大,因此為保留圖像中裂紋細(xì)節(jié),通過對(duì)比處理效果,優(yōu)先選取導(dǎo)向?yàn)V波。
2.2.2 圖像增強(qiáng)
經(jīng)過濾波去除掉噪聲后,進(jìn)行圖像增強(qiáng),圖像增強(qiáng)的目的是增強(qiáng)圖像高頻區(qū)域(邊緣和拐角)的對(duì)比度,為后續(xù)的特征提取做準(zhǔn)備[10]。圖像增強(qiáng)后的效果如圖5 所示。

圖5 圖像增強(qiáng)后的效果
2.3.1 動(dòng)態(tài)閾值檢測(cè)和形態(tài)學(xué)綜合算法
閾值分割是圖像分割中的一項(xiàng)技術(shù),是直接對(duì)被檢測(cè)圖像目標(biāo)區(qū)域進(jìn)行分割的方法[11]。設(shè)定不同的閾值,根據(jù)閾值將像素強(qiáng)度不同的區(qū)域分開,進(jìn)而選取ROI(Region of Interest),即感興趣區(qū)域。閾值分割可以用式(6)表示[12]:

式中,f(x,y)是輸入圖像,g(x,y)是輸出圖像,T為閾值,“1”表示選中區(qū)域,“0”表示背景區(qū)域。
由式(6)可知,選取適當(dāng)?shù)牡拈撝礣是至關(guān)重要的,文中主要針對(duì)全局閾值分割(算子threshold)和動(dòng)態(tài)閾值分割(算子binary_threshold)這兩種方法進(jìn)行閾值的選取。全局閾值分割利用直方圖進(jìn)行分析,根據(jù)波峰和波谷的關(guān)系,選取出一個(gè)中間閾值;而動(dòng)態(tài)閾值分割相對(duì)于全局閾值分割的優(yōu)勢(shì)是不用人為設(shè)置閾值,適用范圍更廣,其原理是對(duì)原圖像和處理后的圖像做差,選取亮色區(qū)域或暗色區(qū)域即可,特點(diǎn)是抗干擾性強(qiáng),不會(huì)隨光照變換而變換。圖像灰度直方圖以及處理效果如圖6 所示。

圖6 閾值分割圖
全局閾值算法中根據(jù)灰度直方圖選取閾值為130,圖像中裂紋像素在分割的同時(shí)包含了一部分背景像素;動(dòng)態(tài)閾值算法相對(duì)于全局閾值,在處理裂紋像素的精度上更高,且在適用廣泛性上要優(yōu)于全局閾值分割算法,因此優(yōu)先選取動(dòng)態(tài)閾值算法。
利用形態(tài)學(xué)方法,對(duì)細(xì)小裂紋處產(chǎn)生的斷裂采用閉運(yùn)算,它的運(yùn)算過程是先對(duì)圖像進(jìn)行膨脹再進(jìn)行腐蝕的過程[13],數(shù)學(xué)表達(dá)式如下:

式中,⊕代表膨脹運(yùn)算,Θ 代表腐蝕運(yùn)算。
對(duì)提取到的裂紋進(jìn)行分析,對(duì)裂紋數(shù)量(密度)、裂紋的面積和裂紋的最大寬度進(jìn)行讀取。通過2.1 章節(jié)中所述黑白格進(jìn)行像素和尺寸的換算,進(jìn)而可以得出裂紋的面積和寬度[14]。該方法提取到的裂紋數(shù)量為3,裂紋面積為439.29 mm2,最大寬度為2.48 mm。
2.3.2 Roberts算子
Roberts 算子是一階導(dǎo)數(shù)邊緣算子,類似于Sobel算子和Prewitt 算子,采用2×2 模板求相鄰對(duì)角的像素之差,但忽視了水平和垂直方向,導(dǎo)致漏檢,適合用于邊緣灰度變化明顯的圖像分割[15],其卷積模板如圖7 所示,處理效果如圖8(a)所示。

圖7 Roberts算子模板
2.3.3 Sobel算子
Sobel 算子是在Roberts 基礎(chǔ)上改進(jìn)的3×3 算子,對(duì)圖像像素進(jìn)行微分求導(dǎo),計(jì)算圖像梯度值,對(duì)生成像素的灰度值做閾值計(jì)算,從而求得邊緣信息,計(jì)算過程如下:

式中,Gx、Gy分別表示對(duì)原始圖像在x和y方向上求導(dǎo),I是輸入圖像,三階矩陣分別是垂直方向和水平方向上的模板。
求出圖像近似梯度值如下:

處理效果如圖8(b)所示。
2.3.4 Kirsch算子
Kirsch 算子是R.Kirsch 提出的一種邊緣檢測(cè)算法,在保持圖像細(xì)節(jié)和去除噪聲方面有很好的效果,但存在邊緣判定不精準(zhǔn)、選取邊緣較粗等缺點(diǎn)[16]。
采用代表八個(gè)方向的模板對(duì)圖像中的像素點(diǎn)進(jìn)行卷積并求導(dǎo)數(shù),取結(jié)果中最大值作為圖像的邊緣輸出,處理效果如圖8(c)所示。
2.3.5 LoG算子
LoG 算子是二階微分算子,是在拉普拉斯算子基礎(chǔ)上改進(jìn)的一種邊緣檢測(cè)算子。在圖像進(jìn)行拉普拉斯邊緣檢測(cè)之前使用高斯濾波對(duì)圖像進(jìn)行降噪[17],正是這一過程導(dǎo)致在降低噪聲干擾的同時(shí)也會(huì)把尖銳的邊緣變得平滑。該算子的缺點(diǎn)是弱邊緣檢測(cè)效果并不理想,處理效果如圖8(d)所示。

圖8 裂紋檢測(cè)效果圖
為驗(yàn)證所設(shè)計(jì)方法的檢測(cè)效果,利用HALCON軟件與2.3 節(jié)所述方法進(jìn)行對(duì)比。由于裂紋面積和寬度不便于計(jì)算,所以用黑白格進(jìn)行對(duì)比,面積誤差檢測(cè)結(jié)果如表1 所示,寬度誤差檢測(cè)結(jié)果如表2所示。

表1 面積誤差檢測(cè)結(jié)果

表2 寬度誤差檢測(cè)結(jié)果
分析表1 和表2 可知,所提方法檢測(cè)裂紋面積和寬度的誤差率明顯低于其他四種方法,用所提方法檢測(cè)裂紋結(jié)果如表3 所示。由于個(gè)別裂紋距離太近,因此檢測(cè)出裂紋的數(shù)量(密度)因檢測(cè)方法的不同會(huì)產(chǎn)生很小的差異,這里沒有列出,而裂紋的面積實(shí)質(zhì)上也是數(shù)量的另一種表達(dá)。

表3 裂紋檢測(cè)結(jié)果
針對(duì)墻面裂紋的檢測(cè),文中提出了一種動(dòng)態(tài)閾值檢測(cè)和形態(tài)學(xué)綜合算法,該算法能夠有效降低圖像噪聲,并提取特征信息,達(dá)到了預(yù)期的處理效果。通過對(duì)比LoG 算子、Sobel 算子、Kirsch 算子和Roberts算子,證明提出的算法在裂紋面積和寬度誤差方面有明顯的優(yōu)勢(shì)。但是房屋安全問題不僅僅是裂紋這一個(gè)問題,還有力學(xué)等各方面知識(shí)交匯在一起,所述方法將來可以與其他學(xué)科知識(shí)進(jìn)一步改善交融,以獲得更滿意的處理效果。