王 林,葉 鑫,李鵬宇
(安徽工程大學 電氣工程學院,安徽 蕪湖 241000)
當前大量科研工作者正在努力使裂紋對混凝土的壽命,安全性和耐用性的影響最小化。這就要求我們必須要準確地測量裂縫的寬度、長度、面積和方向,并對裂縫進行標記。但是,由于檢查員通常手動測量裂紋,這樣需要耗費大量的時間和精力進行測量并收集相關(guān)數(shù)據(jù)[1-2]。因此現(xiàn)階段正努力研發(fā)更快且更精準有效的裂縫測量方法。隨著數(shù)字圖像的高速發(fā)展,許多研究人員開始采用圖像處理對裂縫進行檢測,其中主要包括兩個步驟:裂紋檢測和裂紋分析。裂紋檢測是指檢測到圖像表面的裂縫。但是,由于裂紋的形狀隨機多變,尚未實現(xiàn)對于裂紋的數(shù)學建模[3-4]。另外,由于結(jié)構(gòu)暴露在環(huán)境中,混凝土表面會產(chǎn)生很多噪聲,很難對噪聲類型進行分類,目前大多使用通用的濾波器對圖像進行濾波。本文設(shè)計一種基于MATLAB GUI圖像處理系統(tǒng),該系統(tǒng)可以有效檢測裂縫并計算出圖像上出現(xiàn)的裂縫參數(shù)[5]。我們系統(tǒng)中包括的基本圖像處理功能。通過對裂縫圖像的預(yù)處理,其中包括圖像灰度化、圖像去噪、圖像增強、圖像二值化,最后實現(xiàn)邊緣檢測[6-7]。
在現(xiàn)實生活中我們所采集到的大多數(shù)圖片都是RGB圖片,也就是我們所說的彩色圖片,RGB圖像可以被視為彼此堆疊的三個圖像(紅色分量圖像、綠色分量圖像和藍色分量圖像)。在MATLAB中,RGB圖像基本上是M*N*3的彩色像素陣列,其中每個彩色像素是一個三維數(shù)組,它對應(yīng)于指定空間位置處RGB圖像的紅色、藍色和綠色分量,然而我們在對圖像處理時并不是所有時候都用到RGB三個分量。因此在預(yù)處理時要盡量減少無用數(shù)據(jù)。圖像灰度化處理可以使得處理速度變快,在MATLAB中,灰度圖像基本上M*N數(shù)組,相對于三維數(shù)組處理起來更加方便,一般灰度圖像的灰度值在0-255之間,白色為255,黑色為0[8]。
MATLAB中灰度化處理有以下幾種方式:
(1)最大值法
將彩色圖像中的三分量的亮度最大值作為灰度圖像的灰度值。
F(i,j)=max(R(i,j),G(i,j),B(i,j))
(2)平均法
將彩色圖像中的三分量亮度求平均得到一個灰度值。
F(i,j)=(R(i,j),G(i,j),B(i,j))/3
(3) 加權(quán)平均法
F(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j)
圖1為三種方式下的灰度化圖片,為了使得灰度化更加符合要求,本系統(tǒng)中采用加權(quán)平均法對彩色圖像進行灰度化處理。
圖1 三種方式下的灰度化圖片
在圖像采集、傳輸、編碼和處理等步驟中,數(shù)字圖像中不可避免的存在噪聲,導(dǎo)致圖像信息失真和丟失。由于存在噪聲,可能會對隨后的圖像處理任務(wù)(圖像特征提取,圖像分析等)產(chǎn)生不利影響。因此,圖像去噪在現(xiàn)代圖像處理系統(tǒng)中起著重要的作用。
圖像去噪是為了去除噪聲圖像中的噪聲,從而盡可能地還原真實圖像。但是,由于噪聲、邊緣和紋理都處于高頻分量,因此,去噪后的圖像不可避免地會丟失一些細節(jié)??傮w而言,當今在噪聲去除過程中從嘈雜的圖像中恢復(fù)有需要的信息以獲得高質(zhì)量的圖像是一個重要的問題,它使圖像處理的后續(xù)工作得以開展。
圖像中常見的噪聲類型有脈沖噪聲、高斯噪聲、泊松噪聲、斑點噪聲等。通過裂縫圖像的灰度直方圖我們可以看出脈沖噪聲和高斯噪聲存在的較多。如何去除噪聲是非常重要的,現(xiàn)如今在圖像去噪方面的算法非常多,但是最好的算法應(yīng)該在保留圖像細節(jié)的同時能盡可能地消除噪聲。去噪方法可以是線性的也可以是非線性的,線性方法去噪速度很快,但是不能很好地保留圖像的細節(jié),裂縫檢測需要去噪的同時能夠很好地保留細節(jié),非線性方法可以很好地保留圖像中的細節(jié)。去噪濾波器常用的有均值濾波器、中值濾波器和自適應(yīng)濾波器。
均值濾波器是一個簡單的線性濾波器,它用窗口中所有像素的平均值來替換窗口中的中心值。滑動窗口一般是正方形(3*3)的。
圖2為濾波前,其中心值為1,通過均值濾波窗口濾波后中心值為5,如圖3所示。其計算過程為:
(5+3+6+2+1+9+8+4+7)/9=5
圖2 濾波前窗口 圖3 均值濾波后窗口
經(jīng)過均值濾波后的圖像少了很多細節(jié),使得裂縫的邊緣變得有些模糊,因此本系統(tǒng)采用中值濾波器進行濾波。相對于均值濾波器來說,中值濾波是一種非線性濾波器,它是由Tukey首先提出來的,由于其能很好地消除脈沖噪聲并且很好地保持了信號邊緣,因此在圖像濾波中廣泛應(yīng)用。
用中值濾波對圖像進行去噪時,要注意選用合適的模板。通常,模板越大,去噪能力就越強。但同時也會使得圖像變得模糊,為了克服因模板選擇不當而導(dǎo)致圖像變得模糊,本文中選用了自適應(yīng)中值濾波。其算法過程如下:
首先定義:
Xxy:濾波器的作用區(qū)域,該區(qū)域的中心點圖像中的第x行第y列個像素點;
Zmin:Xxy中灰度級的最小值;
Zmed:Xxy中灰度級的中值;
Zmax:Xxy中灰度級的最大值;
Z(x,y):坐標(x,y)上的灰度值;
Xmax:Xxy所允許的最大尺寸;
自適應(yīng)濾波器有以下兩個過程:
1:
A1=Zmed-Zmin;
A2=Zmed-Zmax;
如果A1>0 &A2<0,跳轉(zhuǎn)至B;否則,增大窗口的尺寸;如果增大后的尺寸≤Xmax,重復(fù)A;否則,直接輸出Zmed
2:
B1=Z(x,y)-Zmin
B1=Z(x,y)-Zmax
如果B1>0&B2<0,輸出Z(x,y);否則,輸出Zmed。運行結(jié)果見圖4。
圖4 原圖與自適應(yīng)中值濾波后對比圖
在裂縫圖像中我們能夠發(fā)現(xiàn)裂縫與周圍的環(huán)境非常相似,這給后續(xù)處理帶來了很大的困擾,因為我們需要去增強圖像中的有用信息,其目的是要改善裂縫與周圍環(huán)境的對比度,在圖像增強技術(shù)中有插值法、對比度拉伸法、灰度直方圖均衡化以及偏微分方程等方法。
對比度是指圖像中兩個相鄰像素之間的亮度差。低對比度的圖像出現(xiàn)在不均勻的照明條件下,成像傳感器的非線性或動態(tài)范圍小。對比度拉伸是指通過拉伸圖像強度值的范圍,使其跨越一個期望或允許的范圍,從而提高圖像的對比度以增強其可視性。
我們通過分析裂縫圖片的灰度直方圖發(fā)現(xiàn)其灰度值大多集中在140-180之間,因此在這里我們需要使用對比度增強法對裂縫做增強處理,對比度增強主要有灰度變換法和直方圖均衡化,通過分析圖像灰度直方圖我們設(shè)計的系統(tǒng)使用直方圖均衡化來實現(xiàn)對比度拉伸。直方圖均衡化的原理是把原圖像的灰度直方圖從比較集中的某個灰度區(qū)間變成在全部灰度范圍內(nèi)均勻分布。
如圖5所示,對比度增強后的圖像與原圖像相比可以發(fā)現(xiàn)裂縫區(qū)域更加明顯了。
圖5 原圖與對比度增強后對比圖
我們生活中常遇到的圖像有三種狀態(tài),分別是彩色圖像、灰度圖像、二值圖像。其中彩色圖像就是最常見的具有豐富像素組成的圖像,而灰度圖像是將三維彩色圖像轉(zhuǎn)換為二維圖像,圖像灰度級從0到255,一共256個灰度級,如圖6、7所示就是裂縫區(qū)域的灰度值。
圖6 裂縫區(qū)域
圖7 裂縫區(qū)域灰度值
二值圖像是在灰度圖像的基礎(chǔ)上通過閾值分割,在閾值化過程中,我們選擇一個閾值,然后將所有低于所選閾值的灰度值歸為0,并將所有等于或大于閾值的灰度值歸為1,最后只有黑白(0和1)兩個灰度[9-10]。如公式所示:
其中,g(x,y)表示(x,y)處的閾值圖像像素,f(x,y)表示(x,y)處的灰度圖像像素。
圖像二值化廣泛應(yīng)用于文本識別和醫(yī)療圖像處理,且非常適用于裂縫檢測。這是因為文本和裂縫具有相似的性質(zhì),它們的特點是具有易變的線條和曲線。圖像二值化處理的核心就在于閾值分割,閾值在圖像二值化中起到重要作用。選擇合適的閾值是二值化的一個重要環(huán)節(jié)。方法有兩種,一種是全局閾值法,另一種是局部閾值法。全局閾值比較適合灰度直方圖為雙峰的圖像,但是由于裂縫圖像大多為單峰,所以本文采用基于OTSU算法的自適應(yīng)閾值分割。最大類間方差法是由日本學者大津于1979年提出,它是按照圖像的灰度特性,將圖像分為前景和背景兩個部分,背景與前景之間的類間方差越大,說明構(gòu)成圖像的兩部分差別就越大。OTSU的算法過程如下:
對于圖像I(x,y),前景(裂縫)和背景的分割閾值記為T,屬于前景(裂縫)的像素點占整個圖像的比例為ω1,其平均灰度為μ1。背景的像素點占整個圖像的比例為ω2,其平均灰度為μ2。圖像的總平均為μ,類間方差記為g。圖像大小為M*N,圖像中像素小于T的個數(shù)為N1,大于T的記為N2,則有:
(1)
(2)
N1+N2=M×N
(3)
ω1+ω2=1
(4)
μ=μ1×ω1+μ2×ω2
(5)
g=ω1×(μ-μ1)2+ω2×(μ-μ2)2
(6)
將公式(5)代入公式(6)得
g=ω1×ω2×(μ1-μ2)2
(7)
采用遍歷的方法就能得到閾值T。二值化后圖像如圖8所示。
圖8 原圖與二值化后對比圖
MATLAB GUI由窗口、菜單、圖標、光標、鍵、對話框、文本和其他圖形對象組成。它允許用戶自定義如何與MATLAB交互。本文設(shè)計了一種基于MATLAB GUI的圖像處理圖形用戶界面,如圖9所示,以實現(xiàn)裂縫檢測的基本功能。該系統(tǒng)包括六個主要模塊,中值濾波去噪、對比度增強、二值化處理、裂縫識別、裂縫標記以及裂縫參數(shù)技術(shù)。圖10為裂縫檢測結(jié)果圖,并顯示了具體參數(shù)。
圖9 GUI界面圖
圖10 檢測結(jié)果圖
在本文中我們通過使用MATLAB GUI搭建了裂縫檢測系統(tǒng),該系統(tǒng)可以有效地進行裂縫識別。我們通過對原圖像進行一系列的預(yù)處理處理,其中包括圖像灰度化、圖像去噪、圖像增強,最后對圖像進行二值化處理后邊緣檢測,能夠識別裂縫并分析裂縫的長度、寬度、面積以及方向。
在實際檢測中我們也遇到了一些問題,例如采集到的圖像中存在的噪聲并不是單一噪聲,是許多類型噪聲疊加在一起。圖像預(yù)處理是后續(xù)一切工作進行下去的基礎(chǔ),在預(yù)處理過程中噪聲如何去除干凈一直以來是國內(nèi)外學者研究的重點,能否進行先識別再處理是后續(xù)研究的重點。