張小偉,包騰飛,高興和
(1.河海大學(xué)水利水電學(xué)院,江蘇 南京 210098;2.河海大學(xué)水文水資源與水利工程科學(xué)國家重點實驗室,江蘇 南京 210098;3.江蘇省太湖水利規(guī)劃設(shè)計研究院有限公司,江蘇 南京 210098)
在混凝土壩的運行期間,由于壩體需要承受很大的水壓、溫度荷載,以及受到水的沖刷、滲透、侵蝕等原因,導(dǎo)致大壩不可避免地產(chǎn)生裂縫[1]。裂縫的產(chǎn)生會降低大壩結(jié)構(gòu)的承載能力以及壩體耐久性[2-3],最終可能導(dǎo)致大壩因結(jié)構(gòu)破壞而失事,因此快速而準(zhǔn)確地發(fā)現(xiàn)混凝土表面裂縫是混凝土壩安全監(jiān)測中的一項重要任務(wù)。目前,常用的裂縫檢查方法仍是人工檢測法,即由檢查人員用肉眼來檢查,這種檢測方式不僅費時費力,并且在特高壩高程較高的地方,其檢測的危險性大。
隨著計算機視覺技術(shù)的發(fā)展,以及無人機的廣泛運用,裂縫的檢測具有一種全新的思路和方法。通過遠(yuǎn)程操控?zé)o人機來獲取裂縫照片,然后結(jié)合圖像識別分割算法,就可以自動識別并分割裂縫圖片,進一步自動提取出裂縫特征數(shù)據(jù),從而為壩面后期的風(fēng)險評價提供有力的支持。但是由于光照條件、混凝土表面污漬、混凝土氣泡、陰影等原因,通過無人機拍照得到的裂縫圖片往往存在大量的噪聲污染,傳統(tǒng)的圖像分割算法已不能滿足工程要求。為此,許多學(xué)者提出了去噪優(yōu)化算法,如Fan等[4]通過局部聚類保留存在裂縫的局部區(qū)域,同時去除存在噪聲的局部區(qū)域,再通過全局聚類計算分割閾值,雖然聚類算法計算速度快,適應(yīng)性較強,但隨機性強,可能導(dǎo)致局部裂縫區(qū)域丟失;Zhao等[5]通過建立一種組合云模型(CMM)來檢測裂縫邊緣,雖然抗噪性較Robert、Prewitt等邊緣檢測算子有所提高,但對混凝土氣泡、陰影等噪聲仍然十分敏感,算法的適應(yīng)性較差;陳波等[6]采用改進的全卷積神經(jīng)網(wǎng)絡(luò)對裂縫圖片進行預(yù)測分割,雖然抗噪性較好,但全卷積神經(jīng)網(wǎng)絡(luò)在訓(xùn)練過程中容易陷入局部最優(yōu),導(dǎo)致算法的適應(yīng)性較差;Noh等[7]運用掩膜運算以及連通域分析來去除噪聲,算法的適應(yīng)性較強,能針對不同類型的噪聲設(shè)計不同的掩膜,但算法的分割結(jié)果中總會剩余部分噪聲,抗噪性較弱;Tsai等[8]通過連接標(biāo)記的裂縫點來完成裂縫的提取,同時去除噪聲,但算法需要人工預(yù)先在裂縫路徑上標(biāo)記多個裂縫點,算法的自動化程度低,無法快速處理大量的裂縫圖片。
綜上所述,目前已有的一些去噪優(yōu)化算法往往不能同時兼顧算法的抗噪性和適應(yīng)性。為了提高算法的抗噪性以及適應(yīng)性,本文提出一種基于自適應(yīng)區(qū)域生長和局部K-Means聚類的裂縫檢測算法。該算法首先運用雙邊濾波對裂縫灰度圖進行初步降噪,然后采用基于梯度幅度變化的分段雙閾值區(qū)域生長算法來分割裂縫圖片獲得粗分割結(jié)果并標(biāo)記之。通過梯度幅度變化分段設(shè)定生長閾值來提高算法的適應(yīng)性以及抗噪性,不僅能有效去除噪聲,同時保證裂縫邊緣完整。標(biāo)記的目的是提高后面的聚類效果,標(biāo)記完成后對粗分割結(jié)果進行形態(tài)學(xué)腐蝕以及最大連通域提取,通過提取最大連通域來去除其中孤立的點狀以及團狀噪聲,同時提取足夠多的局部數(shù)據(jù)點樣本,對該局部數(shù)據(jù)點樣本進行灰度值以及標(biāo)記值聚類后,得到最終精確的分割結(jié)果。本文檢測裂縫的方法能為實際工程提供大量實時的檢測數(shù)據(jù),可以節(jié)約大量人力物力,為自動化檢測大壩裂縫奠定基礎(chǔ)。
區(qū)域生長算法是基于區(qū)域的分割算法中的經(jīng)典算法[9],運用區(qū)域生長算法來分割裂縫圖片,需要在背景區(qū)域或者裂縫區(qū)域內(nèi)預(yù)先給出種子點以及種子點的生長準(zhǔn)則,通過種子點的生長提取出正確的裂縫區(qū)域。區(qū)域生長的關(guān)鍵點是生長準(zhǔn)則的設(shè)定,閾值是最重要的準(zhǔn)則之一。傳統(tǒng)的區(qū)域生長算法,閾值一般設(shè)定為常數(shù),但是這種設(shè)定方法魯棒性差,無自適應(yīng)性。為提高區(qū)域生長算法的自適應(yīng)性,許多學(xué)者提出了改進措施。陸劍鋒等[10]通過計算種子點附近鄰域統(tǒng)計信息來自適應(yīng)改變生長準(zhǔn)則,雖然自適應(yīng)性有所提高,但計算量劇增。Pohle等[11]通過計算已生長區(qū)域的灰度值高斯分布參數(shù)來控制生長準(zhǔn)則,從而提高算法的抗噪性,但高斯擬合的實際效果較差。王勝軍等[12]通過梯度幅度變化設(shè)定閾值,這樣的設(shè)定方法使得閾值與種子點灰度值成正相關(guān),當(dāng)種子點灰度值減小時,閾值也在減小。當(dāng)分割區(qū)域和背景區(qū)域灰度值相差較小時,梯度幅度變化減小,閾值的自適應(yīng)性變差。
基于以上分析,本文提出基于梯度幅度變化的分段雙閾值區(qū)域生長方法,該方法采用梯度幅度變化來設(shè)定閾值(梯度閾值),當(dāng)種子點灰度值減小并不斷接近裂縫區(qū)域灰度值時,灰度閾值(梯度閾值與種子點灰度值的乘積)減小,生長條件收窄,算法的自適應(yīng)性提高。為了避免梯度幅度變化過小導(dǎo)致自適應(yīng)性變差,本文將大津閾值[13]N引入生長準(zhǔn)則中,當(dāng)種子點灰度值大于,小于或等于N時,梯度閾值分別取N1和N2。當(dāng)種子點灰度值大于N時,種子點主要存在于背景區(qū)域內(nèi),此時設(shè)定的梯度閾值N1較大,保證背景區(qū)域內(nèi)的噪聲被完全去除;當(dāng)種子點灰度值小于或等于N時,種子點灰度值接近裂縫區(qū)域灰度值,此時設(shè)定的梯度閾值N2較小,以保證裂縫邊緣完整。綜合大量試驗,梯度閾值N1在0.2~0.4之間取值,梯度閾值N2在0.05~0.1之間取值。通過分段設(shè)定梯度閾值使得算法在有效去除背景區(qū)域內(nèi)噪聲的同時有效保證了裂縫邊緣的完整性。改進后的區(qū)域生長準(zhǔn)則為
|(S-G(x,y))/S|≤T
(1)
(2)
式中:S為種子點灰度值;G(x,y)為種子點鄰域內(nèi)像素點灰度值;T為梯度閾值。
獲得生長準(zhǔn)則之后需要在背景區(qū)域內(nèi)選定種子點,種子點自動選取方法為:用10×10的網(wǎng)格來劃分裂縫圖片,計算網(wǎng)格節(jié)點處灰度值,將其中灰度值大于N的節(jié)點作為種子點。確定種子點和種子點生長準(zhǔn)則之后,就可以運用自適應(yīng)區(qū)域生長算法分割裂縫圖像,提取裂縫的粗分割圖。
K-Means聚類算法[14]是一種基于劃分的聚類算法[15]。算法需要預(yù)先指定初始聚類中心,然后根據(jù)相似性準(zhǔn)則完成聚類,通過不斷更新聚類中心并降低類簇誤差平方和來得到最佳聚類結(jié)果[16]。本文將K-Means聚類算法運用到裂縫圖像分割中,通過將屬性值接近的像素點聚為一類來完成裂縫區(qū)域和背景區(qū)域分割任務(wù)。K-Means聚類算法思想簡單,聚類速度快,聚類效果好,但是對初始聚類中心敏感,并且容易陷入局部最優(yōu)解[17]。目前主要的改進方法集中在以下幾個方向:算法中初始聚類中心個數(shù)的選取,初始聚類中心點的選取,離群點的檢測和去除等。
為此,提出局部K-Means聚類算法,該方法的主要思想是對包含裂縫區(qū)域像素點的局部像素點樣本進行聚類,由于樣本點中剔除了大部分非裂縫區(qū)域而保留了所有的裂縫區(qū)域,離群點的干擾減小,并且初始聚類中心易于尋找,所以對該局部像素點進行聚類,不易陷入局部最優(yōu)解。為了提高聚類效果,對局部數(shù)據(jù)點樣本中疑似裂縫區(qū)域像素點進行標(biāo)記,標(biāo)記值為M(權(quán)重屬性值),對非疑似裂縫區(qū)域像素點標(biāo)記值為0。運用K-Means聚類算法對該局部像素點進行聚類,像素點屬性值為其灰度值以及標(biāo)記值,聚類的目的是將灰度值和標(biāo)記值接近的像素點聚為一類。相似性準(zhǔn)則一般由歐式距離來衡量,距離越小,相似性越高。聚類的相似性公式為
d((gij,oij),(g1,o1))=
(3)
式中:gij,oij分別為坐標(biāo)點(i,j)處像素點灰度值和標(biāo)記值;g1,o1分別為初始聚類中心的灰度值和標(biāo)記值。
此時對應(yīng)的誤差平方和公式為
式中:Ct為第t個聚類;gt、ot分別為第t個聚類的聚類中心(gt,ot)的灰度值和標(biāo)記值。
為了避免初始聚類中心的隨機性導(dǎo)致結(jié)果的隨機性,g1取局部區(qū)域中疑似裂縫區(qū)域像素點灰度均值,g2取局部像素點中非疑似像素點灰度均值,o1取M,o2取0。聚類結(jié)果:當(dāng)M較小時,聚類結(jié)果主要由灰度值決定,聚類結(jié)果趨近于局部像素點灰度值聚類;當(dāng)M較大時,聚類結(jié)果主要由標(biāo)記值決定,聚類結(jié)果主要由疑似像素點組成。
本文的算法流程主要包括圖片預(yù)處理,裂縫粗提取,二值圖像去噪以及裂縫精提取。①圖片預(yù)處理:輸入原始裂縫圖片,灰度化, 然后運用雙邊濾波進行初步去噪平滑,雙邊濾波能在保留裂縫邊緣信息的同時降低噪聲平滑圖像。②裂縫粗提取:運用自適應(yīng)區(qū)域生長算法進行分割,得到裂縫的粗分割圖。③二值圖像去噪:經(jīng)過區(qū)域生長分割后,裂縫圖像被分割為裂縫區(qū)域和背景區(qū)域兩部分,裂縫區(qū)域灰度值設(shè)定為0,標(biāo)記值為M,背景區(qū)域灰度值設(shè)定為255,標(biāo)記值為0。對二值圖像進行形態(tài)學(xué)腐蝕操作以及最大連通域提取,連接斷裂裂縫,并去除二值圖像中孤立的團狀及點狀噪聲。④裂縫精提取:由于環(huán)形裂縫的阻擋,導(dǎo)致裂縫粗分割圖像中仍有許多未被生長的區(qū)域,需要運用局部K-means聚類算法,通過局部區(qū)域灰度值以及標(biāo)記值聚類進一步去除其中非裂縫區(qū)域。在裂縫精提取中,通過試驗研究發(fā)現(xiàn),當(dāng)裂縫圖像中裂縫區(qū)域灰度值與背景區(qū)域灰度值相差較大時,像素點灰度值聚類的效果好;當(dāng)裂縫圖像中裂縫區(qū)域灰度值與背景區(qū)域灰度值相差較小時,通過區(qū)域生長分割獲得的分割圖更加準(zhǔn)確,所以標(biāo)記值M應(yīng)該選取能夠表征原灰度圖像裂縫區(qū)域灰度值與背景區(qū)域灰度值差異的參數(shù)。本文M值取原灰度圖中灰度值在閾值N以上的像素點灰度均值與灰度值在閾值N以下的像素點灰度均值之差。綜上所述,可以得到應(yīng)用本文算法進行裂縫圖片處理的流程如下:
步驟1通過無人機拍攝得到裂縫圖片,經(jīng)過預(yù)處理得到預(yù)處理圖片,圖像預(yù)處理包括圖像灰度化和圖像雙邊濾波。
步驟2根據(jù)灰度圖計算N、M的值。
步驟3運用本文設(shè)計的自適應(yīng)區(qū)域生長算法分割裂縫圖片獲得裂縫的粗分割圖,將其中的裂縫區(qū)域標(biāo)記為疑似裂縫區(qū)域。
步驟4對粗分割圖進行腐蝕操作,腐蝕操作的目的是連接分割圖像中因局部過生長而斷裂的裂縫,腐蝕操作的結(jié)構(gòu)元素為2×2,腐蝕次數(shù)為2次。
步驟5腐蝕完成后,提取被分割部分的最大連通區(qū)域,通過最大連通域提取來去除其中孤立的點狀及團狀噪聲。
步驟6再次進行腐蝕操作,為聚類運算提供足夠多的像素點樣本,腐蝕操作的結(jié)構(gòu)元素為2×2,腐蝕次數(shù)為2次。
步驟7提取局部數(shù)據(jù)點樣本,并確定數(shù)據(jù)點樣本的灰度值以及標(biāo)記值(標(biāo)記值的確定需要結(jié)合從步驟3中得到的疑似裂縫區(qū)域),運用局部K-Means聚類算法進行聚類。
步驟8得到最終的裂縫分割結(jié)果。
選取3幅存在噪聲污染的裂縫圖片進行對比分析,如圖1所示。3幅圖片都經(jīng)過了預(yù)處理。裂縫1是1條近似豎向裂縫,裂縫圖片中主要存在污漬噪聲污染,同時背景區(qū)域灰度值與裂縫區(qū)域灰度值相差較小;裂縫2是1條叉形裂縫,裂縫圖片中主要存在混凝土表面毛刺噪聲,同時裂縫區(qū)域灰度值與背景區(qū)域灰度值相差較大;裂縫3是1條豎向裂縫,裂縫圖片中主要存在塊狀以及條狀噪聲,這些噪聲污染是由水對壩體的侵蝕造成的。

圖1 裂縫圖片
為了對改進前和改進后的區(qū)域生長算法進行比較,分別運用這兩種算法對圖1進行分割,分割結(jié)果如圖2所示。分析圖2可知,改進前的區(qū)域生長算法(閾值取15)獲得的裂縫分割圖中有大量的灰色點狀噪聲,同時裂縫邊緣存在大量毛刺,裂縫寬度比實際寬度大。改進后的區(qū)域生長算法由于梯度閾值的自適應(yīng)性以及N值對裂縫邊緣分割的控制作用,使得分割圖中點狀噪聲少,裂縫邊緣更加平滑,與實際裂縫邊緣更加接近,但分割圖中仍存在圓形標(biāo)記處環(huán)形裂縫內(nèi)的誤分割,同時背景區(qū)域內(nèi)存在少量孤立的點狀及團狀噪聲。

圖2 區(qū)域生長算法改進前后分割結(jié)果對比
對圖2中改進后的分割圖進行形態(tài)學(xué)腐蝕操作并提取最大連通區(qū)域后得到圖3,再對圖3進行形態(tài)學(xué)腐蝕操作,提取其中包含裂縫的局部區(qū)域數(shù)據(jù)點樣本,運用局部K-Means聚類算法進行聚類,最終獲得分割結(jié)果如圖4所示。

圖3 最大連通域提取結(jié)果

圖4 局部K-means聚類分割結(jié)果
對比圖2和圖3可知,經(jīng)過腐蝕操作以及最大連通域提取后,裂縫圖片中的點狀和團狀噪聲被完全除去。對比圖3和圖4可知,對提取到的局部數(shù)據(jù)點樣本進行聚類后,獲得的最終分割圖像不僅有效地保留了自適應(yīng)區(qū)域生長的結(jié)果,同時圓形標(biāo)記處環(huán)形裂縫內(nèi)誤分割區(qū)域被正確分割。
為了證明本文算法的優(yōu)越性,將本文算法與大津閾值分割算法(OTSU)、文獻[5]算法、Canny邊緣檢測算法[18]進行對比,運用以上算法對圖1進行分割,得到裂縫分割結(jié)果如圖5所示。為了對裂縫提取效果進行量化分析和評價,本文引入完成度和正確度指數(shù)[19-20]。完成度指數(shù)用于描述完成裂縫提取這一任務(wù)的完成程度,正確度指數(shù)則描述完成任務(wù)的質(zhì)量水平,其定義分別見式(5)和式(6)。

圖5 不同算法裂縫分割結(jié)果對比
(5)
(6)
式中:Lr為提取結(jié)果的真實裂縫長度;Lgt為裂縫的實際長度;LT為提取的總長度。
根據(jù)式(5)和式(6)以及圖5中裂縫的分割圖像,計算得到各算法提取的裂縫完成度和正確度指數(shù),計算結(jié)果如表1所示。

表1 裂縫分割結(jié)果評價
為了對算法的適應(yīng)性和抗噪性進行評價,將適應(yīng)性等級劃分為優(yōu)、良、中、差4個等級,算法能去除的噪聲種類越多則適應(yīng)性等級越高;將抗噪性等級劃分為強、較強、較弱、弱4個等級,算法獲得的分割結(jié)果中噪聲越少則抗噪性越強。根據(jù)圖5的分割結(jié)果和表1的評價數(shù)據(jù)可以得到算法的適應(yīng)性和抗噪性水平。
分析圖5和表1可知,本文算法能有效分割存在污漬噪聲、混凝土表面毛刺噪聲、塊狀以及條狀噪聲污染的裂縫圖片,算法的適應(yīng)性等級為優(yōu),同時分割結(jié)果的完成度指數(shù)以及正確度指數(shù)均在0.95以上,算法的抗噪性強;大津閾值分割算法對裂縫1和3的分割結(jié)果差,分割的完成度指數(shù)和正確度指數(shù)極低,無法確定裂縫的完整形態(tài),但算法對裂縫2的分割結(jié)果較好,整體而言,算法適應(yīng)性等級為中,抗噪性弱;文獻[5]算法對裂縫3的分割效果好,完成度指數(shù)和正確度指數(shù)均超過了0.95,但是對裂縫1和2的分割效果較差,主要表現(xiàn)在裂縫局部斷裂、裂縫寬度局部偏大以及剩余少量的背景噪聲,但通過分割結(jié)果基本可以確認(rèn)裂縫的完整形態(tài),算法的適應(yīng)性等級為良,抗噪性較強;Canny邊緣檢測算法對裂縫1的分割結(jié)果好,裂縫分割的完成度指數(shù)和正確度指數(shù)高,對裂縫2和3的分割結(jié)果較差,分割圖中存在大量的偽邊緣,但同樣可以基本確定裂縫的完整形態(tài),算法適應(yīng)性等級為中,抗噪性較弱。
綜上可知,本文算法能有效去除污漬噪聲、混凝土表面毛刺噪聲、塊狀以及條狀噪聲,算法提取的裂縫完成度指數(shù)和正確度指數(shù)均在0.95以上。不論是適應(yīng)性還是抗噪性都要優(yōu)于其他3種算法,能夠滿足實際工程需要的精度要求。
a.本文提出一種基于自適應(yīng)區(qū)域生長和局部K-Means聚類的混凝土壩面裂縫檢測算法,該算法解決了傳統(tǒng)分割算法適應(yīng)性差、抗噪性性弱的問題。與改進前的區(qū)域生長算法相比,改進后的自適應(yīng)區(qū)域生長算法通過梯度幅度變化分段設(shè)定生長閾值,不僅提高了算法的自適應(yīng)性,同時提高了算法的抗噪性,其分割結(jié)果中裂縫邊緣更加平滑,背景噪聲更少。
b.本文通過去除離群點以及計算具有強代表性的初始聚類中心來避免聚類算法陷入局部最優(yōu)解,同時避免算法因聚類中心的隨機性導(dǎo)致聚類結(jié)果的隨機性。通過改進后的K-means聚類算法對裂縫進行精確分割,得到的分割結(jié)果正確度指數(shù)和完成度指數(shù)極高,能滿足實際工程要求。
c.與其他圖像分割算法相比,本文分割算法適應(yīng)性更好,抗噪性更強,能有效去除諸多類型噪聲,算法提取的裂縫完成度指數(shù)和正確度指數(shù)最高。與傳統(tǒng)人工檢測方法相比,本文基于計算機視覺的混凝土裂縫檢測方法能自動并且快速地檢測大量裂縫,可以節(jié)約大量人力物力。