陳利華,董志學
(內(nèi)蒙古工業(yè)大學 信息工程學院,內(nèi)蒙古 呼和浩特010080)
房屋、道路和橋梁等工程構(gòu)件表面不可避免地存在大量裂縫,裂縫的寬度經(jīng)常被作為施工驗收、維修和補救的重要評定依據(jù)[1]。目前裂縫寬度檢測方法[2-3]主要有裂縫顯微鏡法、圖像顯示人工判讀或圖像顯示自動判讀等幾種方法,裂縫顯微鏡法和圖像顯示人工判讀法二者都需要人工目測讀數(shù),存在人為讀數(shù)誤差;圖像顯示自動判讀法雖避免了人為讀數(shù)誤差,但它大多是基于PC (personal computer)機實現(xiàn)的,造成使用時不夠靈活方便。所以基于以上不足,本文提出了基于Android裂縫寬度檢測系統(tǒng),它充分利用Android平臺便捷性和功能強大的優(yōu)勢,并將圖像處理技術(shù)用于裂縫寬度的測量[4],這樣即可實現(xiàn)裂縫寬度檢測的自動判讀功能又可滿足便攜式裂縫檢測的需求。
本系統(tǒng)總體設(shè)計思想是通過手機攝像頭采集表面裂縫圖像,然后運用數(shù)字圖像處理技術(shù)對拍攝到的裂縫圖像進行各種圖像處理,包括灰度化、圖像增強、圖像分割及邊緣提取等,最后對提取到的裂縫邊緣圖像執(zhí)行特定的算法,計算出裂縫的寬度。根據(jù)裂縫寬度檢測系統(tǒng)的實際需求,系統(tǒng)流程設(shè)計如圖1所示。
使用前,先輸入用戶名和密碼進入裂縫檢測系統(tǒng)的主界面,包括3個主菜單:分別是裂縫圖像采集、裂縫圖像處理及裂縫寬度測量,其中圖像采集功能包括攝像頭預覽、裂縫拍照、保存圖片、關(guān)閉攝像頭等;圖像處理功能包括對裂縫圖像進行灰度化、直方圖均衡化、中值濾波、二值化和邊緣提取等;裂縫寬度測量主要包括寬度計算、波形顯示及數(shù)據(jù)保存等功能。
圖1 系統(tǒng)流程設(shè)計
本系統(tǒng)主要分為裂縫圖像采集、圖像處理和裂縫寬度測量三部分來實現(xiàn)。
系統(tǒng)主要實現(xiàn)驅(qū)動手機攝像頭打開預覽、拍照、保存照片和關(guān)閉相機這四個功能。
Android通常調(diào)用攝像頭有兩種方法:一種是通過Intent直接調(diào)用系統(tǒng)默認攝像頭,另一種是本文所采用的方法,即實例化一個SurfaceHolder類,該類包含一個Callback接口,通過該接口可實現(xiàn)SurfaceCreated、SurfaceChanged和SurfaceDestoryed這3個方法。它們分別是在Surface被創(chuàng)建時,Surface發(fā)生變化時和Surface銷毀時被調(diào)用。然后實例化SurfaceView類,通過Surface-View.GetHolder方法獲取SurfaceHolder對象來控制Surface。而通過調(diào)用Camera對象中的Parameters類對攝像頭的進行各種參數(shù)設(shè)置,關(guān)鍵代碼如下:
整個裂縫圖像處理算法共分五個部分,前四部分為圖像的預處理部分,包括圖像灰度化、直方圖均衡化、中值濾波以及二值化等;第五部分為本系統(tǒng)最為關(guān)鍵的部分,主要進行裂縫的邊緣信息提取,其效果將決定整個算法的精度。
2.2.1 預處理
在實際中,通常采集到的是彩色圖像,而彩色信息對裂縫檢測無關(guān)緊要,因此需進行灰度化處理,同時采集的圖像不可避免的包含一些干擾和噪聲,為消除這些噪聲和干擾,需要對圖像進行增強和濾波處理[5],本系統(tǒng)采用了直方圖均衡化來增強圖像并采用中值濾波消除圖像中存在的噪聲。
2.2.2 二值化
預處理后,圖像中裂縫與背景灰度差別明顯,因此可通過二值化來區(qū)分裂縫區(qū)域與背景區(qū)域。在進行圖像二值化時,閾值選取是關(guān)鍵。在現(xiàn)有的分割效果較好的閾值分割方法中[6-7],本文選用了比較經(jīng)典的應用范圍較廣的OTSU (最大類間方差法)閾值分割方法,其基本思想為:設(shè)一閾值t將灰度圖分為兩部分,這兩部分出現(xiàn)的概率分別為PA(t)和PB(t),當被閾值t分隔的A、B兩部分灰度差別越大時,兩部分的平均灰度μA和μB與整幅圖像的平均灰度μ之差就越大,用類間方差σ2表示,使σ2取最大值時的t即為最佳閾值,如式 (1)所示
2.2.3 Canny邊緣檢測
預處理后,裂縫圖像變?yōu)榱硕祱D像,接著即可進行本系統(tǒng)最為關(guān)鍵的部分邊緣檢測。裂縫邊緣定位準確與否對后期的裂縫寬度計算至關(guān)重要,因此在對常用的邊緣提取方法進行比較后[8-10],本系統(tǒng)采用了目前應用較廣、檢測效果較理想的Canny邊緣檢測算子[11],它是John Canny于1986年提出的同時滿足:好的信噪比、高的定位性能、單邊緣相應3個指標的最優(yōu)邊緣檢測算子,其算法流程圖如圖2所示。
首先讀取圖像并對圖像進行高斯濾波,所選高斯函數(shù)如式 (2);其次,由式 (3)、式 (4)求出圖像x與y方向的偏導數(shù)Gx和Gy,并根據(jù)式 (5)、式 (6)計算出梯度的幅值M [x,y]和梯度的方向θ[x,y];然后對梯度進行非極大值抑制 (non-maximal suppression),找出圖像中可能的邊緣點。若在梯度方向上某像素點的梯度幅值均大于與其相鄰兩像素點的梯度幅值,則該點可能是邊緣點,否則肯定不是邊緣點,并將其灰度值設(shè)為0;最后,還需對可能的邊緣點進行雙閾值檢測,即將可能的邊緣點與之前計算得到的高低兩閾值分別進行比較,確定強邊緣點和弱邊緣點,并進行邊緣連接。
圖2 Canny算法
高斯函數(shù)為
式中:σ——標準差。
x與y方向的偏導數(shù)分別為
梯度幅值
梯度方向
本系統(tǒng)編寫的邊緣檢測函數(shù)為EdgeDetector(),其核心代碼如下:
本系統(tǒng)采用了左右邊緣點法[12]求裂縫的寬度。即對邊緣提取后的的裂縫圖像進行逐行掃描,提取出裂縫的左右邊界坐標點,設(shè)裂縫左邊界點的坐標為(xl,yl),右邊界點的坐標為 (xr,yr),根據(jù)平面上兩點間距離式 (7),對左邊界任一點,用式 (7)遍歷右邊界所有的點,d取最小時即為該點對應的裂縫寬度值
本系統(tǒng)的實驗環(huán)境為三星S5830i,CPU (Central Processing Unit)為 高 通 MSM7227 832 MHz,內(nèi) 存 512 MB,Android2.3系統(tǒng),攝像頭為500萬CMOS(complementary metal pxide semiconductor),支 持 自 動 對 焦,分 辨 率 為480×320像素。將應用程序的安裝文件 (.APK)安裝到該手機上,運行該系統(tǒng),實驗結(jié)果如圖3,圖4所示。
圖3(a)是手機攝像頭采集的一幅地面的裂縫圖像,可以看出裂縫較細,形狀不太規(guī)則,圖3(b)是進行Otsu二值化的結(jié)果,可見二值化后圖像存在少許噪聲點,而且裂縫邊緣有毛刺,圖3(c)是經(jīng)過Canny邊緣檢測的結(jié)果,可見Canny算子不僅平滑了邊緣的毛刺而且還去濾掉了部分噪聲,提取到了較細、較完整和較連續(xù)的裂縫邊緣,體現(xiàn)了Canny算子較好的邊緣定位性能和抗噪性能。圖4(a)采集的是一幅建筑物墻壁裂縫圖像,由于風化使部分背景的灰度值與裂縫區(qū)域灰度值的較接近,而且裂縫邊界較模糊,圖4(b)是Otsu二值化的結(jié)果,圖4(c)是Canny邊緣檢測的結(jié)果,可見Canny算子仍然能夠提取到較理想的邊緣圖像,進一步體現(xiàn)了Canny算子的優(yōu)越性能。因此本系統(tǒng)用Canny算子進行裂縫邊緣提取是可取的,而且也表明了本系統(tǒng)所選用的一系列圖像預處理算法是合理的,他們能夠滿足裂縫寬度檢測的需求。
為了進一步驗證本系統(tǒng)裂縫寬度的檢測精度,本文以圖4(a)中的裂縫作為待測對像,選取5處裂縫作為待測位置,如圖5所示,圖中虛線表示裂縫測寬儀每次測量裂縫寬度時探頭擺放的位置,將裂縫測寬儀重復多次測量后所得的值作為裂縫的標準寬度,而本系統(tǒng)對圖4(a)中的裂縫進行上述圖像處理后,最終計算得到的裂縫寬度波形如圖6所示,已知標定系數(shù)為0.087(mm/pixel)。圖中波動曲線表示邊界點對應的裂縫寬度值,直線表示裂縫的平均寬度值。Y軸代表裂縫寬度的實際大小,X軸代表圖像高度。
將每一待測位置虛線框內(nèi)的所有裂縫寬度值取平均作為本系統(tǒng)在待測位置所測得的寬度值,并將本系統(tǒng)的測量結(jié)果與裂縫測寬儀測量值進行比較,結(jié)果見表1。
由表1分析可知,本系統(tǒng)的總體測量結(jié)果相比于裂縫測寬儀測量值誤差較小,對于比較平滑的垂直裂縫測量結(jié)果很接近,如位置Ⅰ和Ⅲ,對于傾斜裂縫以及拐角處裂縫的測量誤差要比垂直裂縫的測量誤差稍大一些,如位置Ⅳ,但本系統(tǒng)的測量值相比于裂縫側(cè)寬儀的測量值其最大誤差不超過7%,誤差均在可接受的范圍內(nèi),可見本文所設(shè)計的裂縫寬度檢測系統(tǒng)測量結(jié)果比較精確可靠。
表1 裂縫寬度測量結(jié)果比較 (單位:mm)
本文設(shè)計了針對裂縫圖像的圖像處理算法,并將其在Android平臺上實現(xiàn),而且對本系統(tǒng)的關(guān)鍵算法Canny邊緣檢測算法進行了驗證,證實了該邊緣檢測算法能夠較好的抑制二值化后圖像存在的部分噪聲,而且能夠比較準確地定位裂縫的邊緣,檢測得到的裂縫邊緣圖像較細也比較完整,最后對本系統(tǒng)的測量精度進行了驗證,通過與裂縫測寬儀測量值進行分析比較,結(jié)果表明,系統(tǒng)相對誤差不超過7%,測量結(jié)果比較精確可靠,能夠滿足工程實際的需要。
[1]ZHANG Jie.Discussion on problems of concrete structure crack [J].Urban Construction Theory Research (Electronic Edition),2011,22 (13):54-59 (in Chinese).[張杰.淺談混凝土結(jié)構(gòu)裂縫問題 [J].城市建設(shè)理論研究 (電子版),2011,22 (13):54-59.]
[2]ZHANG Hongyi,ZHOU Qiangxin,YUAN Haiqing,et al.Concrete structural damage apparent crack identification and model research [J].Digital Technology and Application,2009(1):139-141 (in Chinese).[張洪溢,周強新,袁海慶等.混凝土結(jié)構(gòu)損傷表觀裂縫識別及模型研究 [J].數(shù)字技術(shù)與應用,2009 (1):139-141.]
[3]CHENG Xusheng,CAO Yiping,HE Yuhang,et al.A quantitative model and implementation of width measurement for irregular crack [J].ACTA Photonica Sinica,2010,39 (11):2097-2100 (in Chinese). [程旭升,曹益平,何宇航,等.一種測量無規(guī)則裂縫寬度的量化模型與實現(xiàn) [J].光子學報,2010,39 (11):2097-2100.]
[4]YE Guiru,ZHOU Qingsong,LIN Xiaowei,et al.Measurement of surface crack width based on digital image processing[J].Journal of Highway and Transportation Research and Development,2010,27 (2):75-79 (in Chinese).[葉貴如,周青松,林曉威,等.基于數(shù)字圖像處理的表面裂縫寬度測量[J].公路交通科技,2010,27 (2):75-79.]
[5]LIANG Lin,HE Weiping,LEI Lei,et al.Uneven illumination image enhancement method overview [J].Application Research of Computers,2010,27 (5):1625-1628 (in Chinese).[梁琳,何衛(wèi)平,雷蕾,等.光照不均圖像增強方法綜述 [J].計算機應用研究,2010,27 (5):1625-1628.]
[6]MA Wenke,WANG Ling,HE Hao,et al.Local threshold segmentation a fingerprint images [J].Computer Engineering and Applications,2009,45 (34):177-179 (in Chinese).[馬文科,王玲,何浩,等.一種指紋圖像的局部閾值分割算法[J]計算機工程與應用,2009,45 (34):177-179.]
[7]CHEN Ningning.Implementation and comparison for several image threshold segmentation algorithms [J].Computer Knowledge and Technology,2011,7 (13):3109-3111 (in Chinese). [陳寧寧.幾種圖像閾值分割算法的實現(xiàn)與比較[J].電腦知識與技術(shù),2011,7 (13):3109-3111.]
[8]CHEN Yongbin,WANG Yongli.Approach to object contour extraction based on the threshold segmentation and edge detection [J].Journal of Chengdu University of Information Technology,2010,25 (3):246-251 (in Chinese). [陳勇濱,王永麗.基于閾值分割與邊緣檢測的對象輪廓提取方法研究[J].成都信息工程學院學報,2010,25 (3):246-251.]
[9]LI Yaya,LI Zhijie,ZHENG Haixu,et al.Comparison and implementation of image edge detection algorithm [J].Computer Engineering and Design,2010,31 (9):1971-1975 (in Chinese).[李婭婭,李志潔,鄭海旭,等.圖像邊緣檢測算法的比較與實現(xiàn) [J].計算機工程與設(shè)計,2010,31 (9):1971-1975.]
[10]ZHAO Fang,LUAN Xiaoming,SUN Yue,et al.Comparison and analysis for digital image edge detection algorithms[J].Techniques of Automation and Applications,2009,28(3):68-72 (in Chinese). [趙芳,欒曉明,孫越,等.數(shù)字圖像幾種邊緣檢測算子檢測比較分析 [J].自動化技術(shù)與應用,2009,28 (3):68-72.]
[11]SUN Yinghui.Canny operator edge detection [J].Journal of Anshan Normal University,2010,12 (2):48-50 (in Chinese).[孫英慧.基于Canny算子的邊緣檢測研究 [J].鞍山師范學院學報,2010,12 (2):48-50.]
[12]LU Xiaoxia.Study on concrete crack width detection technology based on image processing [D].Chengdu:University of Electronic Science and Technology of China,2010 (in Chinese).[盧曉霞.基于圖像處理的混凝土裂縫寬度檢測技術(shù)的研究 [D].成都:電子科技大學,2010.]