安世全,徐夢茹,瞿 中
(重慶郵電大學 計算機科學與技術學院,重慶 400065)
目前,國內外推出了一系列裂縫檢測設備進行圖像數據的采集,眾多學者對裂縫檢測算法也不斷進行改進[1,2]。但是,在此基礎上對圖像裂縫進行骨架提取時,由于裂縫的形態不規則,細化處理后的圖像裂縫通常會出現非單一像素寬度、毛刺、斷裂等現象,從而影響其提取精度。
近年來,各國學者著眼于經典細化算法的研究。其中,Zhang并行細化算法[3,4]雖保證骨架在目標圖像中心線上,但非單一像素,且有毛刺;Hilditch算法[5]細化效果好,但處理速度慢、通用性差;Rosenfeld算法[6]速度較快,但得到的細化圖像不夠平滑,對后續處理影響較大;Pavlidis算法[7]能夠高效地去除多余像素,保留關鍵特征點,但得到的圖像骨架連通性差;OPTA算法[8]能夠保持原圖像的拓撲結構,但細化后的圖像扭曲較大,毛刺較多,不夠平滑。
本文提出一種基于Zhang并行細化算法的目標骨架提取算法。首先,通過形態學操作對裂縫圖像進行預處理,得到預處理后的二值圖像;然后,采用Zhang并行細化算法對圖像裂縫進行細化,提出一種結合模板思想,單一化骨架像素寬度的方法;最后,以較長分支為骨架主體信息的原則,采用改進的毛刺消除算法消除毛刺。
Zhang并行快速細化算法是由T.Y. Zhang和C.Y. Suen提出的,該算法根據所給出的判定條件來判定當前目標像素點是否可以刪除,內部點、孤立點和直線端點不能刪除,同時,若刪除當前邊界點,圖像連通分量不增加,則其可以刪除。
采用Zhang并行細化算法對圖1(a)進行細化操作,得到細化結果如圖1(b)所示。圖1(c)、圖1(d)為圖1(b)的局部細節示意圖。通過對圖1(c)和圖1(d)的標記區域觀察可知,經由Zhang并行細化算法所得圖像裂縫雖無明顯失真與斷裂問題,但是,其所得細化結果是非單一像素寬度的,且存在細小毛刺,因此,需要對細化后圖像進行后期處理。

圖1 Zhang并行細化結果
圖1結果表明,Zhang并行細化算法結果存在形成90°夾角的非單一像素寬度的像素點,為突起點,圖2(a)~圖2(d)為4個方向上的突起點示意圖。為消除4個方向上的突起點,本文提出利用模板匹配思想對4個方向上的突起點進行消除。

圖2 突起點
以圖2(a)為例,對突起點八鄰域像素點分布情況進行分析。設當前像素點為P1,對其八鄰域像素點分布情況(圖3)進行分析可知,像素點P1,P2,P8的值同時為1,是形成該方向上的突起點的必要不充分條件,當像素點P1為突起點時,像素點P4,P5,P6的值必定同時為0。因此,可以得出圖2(a)所示方向上的突起點判定條件:當且僅當像素點P1,P2,P8的值同時為1,且像素點P4,P5,P6的值同時為0時,當前像素點P1為突起點。其余3個方向突起點的判定同理,可得突起點判定如式(1)所示
(1)

圖3 突起點P1八鄰域
設中心點為P1,其八鄰域分布如圖4所示。

圖4 P1八鄰域
算法實現步驟如下:
對細化后所得圖像進行遍歷,若當前點P1為裂縫點,消除滿足下面4個條件的像素點P1,將其變為背景點。
(1)P2,P8值為1,且P4,P5,P6值為0;
(2)P2,P4值為1,且P6,P7,P8值為0;
(3)P4,P6值為1,且P2,P8,P9值為0;
(4)P6,P8值為1,且P2,P3,P4值為0;
對細化后所得圖像進行循環迭代處理,直至沒有滿足上述條件的點,退出循環。
對圖2(b)細化圖像進行像素單一化處理,其局部細節放大實驗效果圖如圖5所示。

圖5 像素單一化效果
圖5表明,利用模板匹配思想能有效消除細化處理后裂縫圖像中仍存在的非單一像素寬度的突起點,從而實現裂縫骨架像素寬度單一化。
經過像素單一化的圖像裂縫,仍存在細小毛刺,需進一步處理。本文提出一種改進的毛刺消除算法,以保留較長分支為骨架主體信息的原則,消除細化后所得裂縫圖像中的細小毛刺。
裂縫骨架圖像中的每一個裂縫骨架像素點,其八鄰域內像素分布情況及連通性都不完全相同。為了方便敘述,結合文獻[9]與文獻[10],對節點、生長點、端點、步長進行定義,節點nodep為八鄰域內存在兩個或更多骨架點的像素點;生長點growp為八鄰域內存在3個或更多骨架點,并引出毛刺的像素點,其屬于節點的一種;端點endp為八鄰域內僅存在一個骨架點的像素點;步長L是以像素為單位,單一像素寬度分支所具有的像素個數。根據以上定義可得節點nodep、生長點growp、端點endp的判定如式(2)~式(4)所示

(2)

(3)

(4)
其中,change為當前裂縫點P1八鄰域內裂縫點到背景點變化次數,count為當前裂縫點P1八鄰域內裂縫點總數。
基于方向鏈碼去除骨架毛刺算法[11]結合細化迭代的次數給定毛刺判定的閾值如式(5)所示
(5)
其中,L為步長,ceil表示取大于等于括號內的最小整數,times為目標圖像細化迭代的次數。
基于方向鏈碼去除骨架毛刺算法[11]以端點為起點掃描各分支,計算其步長,與閾值進行比較,對長度小于閾值的分支進行毛刺判定,若判定為毛刺,則刪除該分支。
基于方向鏈碼去除骨架毛刺算法[11]雖然能夠有效消除裂縫圖像中的毛刺,但不滿足保留較長分支為骨架主體信息的原則,因此,該算法所得骨架易導致細節信息丟失。
本文對基于方向鏈碼去除骨架毛刺算法[11]進行改進,考慮到同一生長點存在多分支同時小于閾值情況,以端點為起點進行分支掃描,計算所有分支的步長,并記錄;每次選取最小步長分支進行毛刺的判定與消除,以最大程度保持圖像骨架主體信息。改進的毛刺消除算法不僅適用于同一生長點存在多分支同時小于閾值的情況,而且適用于同一生長點小于閾值分支數不限的情況。改進的毛刺消除算法流程如圖6所示。

圖6 改進的算法流程
改進的毛刺消除算法具體步驟如下:
(1)遍歷單一像素寬度化的細化圖像,將裂縫端點存儲至序列endpseq,并將生長點及其八鄰域像素點的像素值分別置為3和8。
(2)若存在生長點,則證明該裂縫圖像存在毛刺,以端點為起點對分支進行掃描,計算各分支的步長,并記錄于數組spurvalue。
(3)取最小步長與閾值進行比較,若該分支步長小于閾值,標記該分支,并對該分支所在生長點的分支數進行判斷,若分支數大于2,則判定該分支為毛刺,刪除該分支,執行步驟(4);若余留分支數小于等于2,則執行步驟(5)。
(4)對當前生長點的余留分支數進行判斷,若余留分支數等于2,則對該生長點的八鄰域像素點進行分析;若刪除該生長點不影響圖像的連通性,則刪除該生長點;若刪除該生長點影響圖像的連通性,則保留該生長點。
(5)重復執行步驟(3),直至不再具有滿足步驟(3)中條件的分支,退出循環。
(6)恢復生長點與生長點八鄰域像素點,得到消除毛刺的最終結果。
本文采取精確率(precision,P)、召回率(recall,R)[2]作為算法的綜合評價指標進行實驗定量分析。其定義如下
P=NP/Ntotal
(6)
R=NP/Nr
(7)
其中,NP表示提取結果中裂縫骨架像素點個數,Ntotal表示提取結果中裂縫骨架像素點總個數,Nr人工提取的真是裂縫骨架像素點個數。
本文從實際工程圖像中選取大小為400*300,不同類型的混凝土路面裂縫圖像作為實驗定量分析的數據測試集,實驗環境為:Intel(R) Core(TM) i5-2430M CPU、主頻2.40 Hz、4 GB內存。
圖7(a)~圖7(e)為本文改進的毛刺消除算法與基于方向鏈碼去除骨架毛刺算法[11]的對比結果。其中,圖7(a)為裂縫原圖,圖7(b)為像素寬度單一化結果,圖7(c)為改進算法結果,圖7(d)為基于方向鏈碼去除骨架毛刺算法[11]結果,圖7(e)為人工提取的真實裂縫骨架。圖7(c)與表1數據表明,改進后算法能有效消除圖像裂縫骨架中的細小毛刺,所提取的裂縫骨架圖像與人工提取的真實裂縫基本一致,且該算法適用于各種類型的圖像裂縫。
圖7(c)、圖7(d)中標注區域及表1數據表明,針對同一生長點多條分支小于閾值的情況,改進的毛刺消除算法保留較長分支骨架主體信息,而基于方向鏈碼去除骨架毛刺算法[11]則是將先搜索到的小于閾值的分支視為毛刺并消除。故改進的算法符合保留較長分支為骨架主體信息毛刺消除原則。因此,改進的算法能夠在最大程度上保留骨架主體信息,實驗結果表明改進的算法明顯優于基于方向鏈碼去除骨架毛刺算法[11]。

圖7 實驗結果對比

表1 毛刺消除對比實驗標注區域數據分析
圖8~圖10表明,改進算法的時間效率、準確率、召回率相對于原算法都有提高。準確率越高,則提取結果中正確目標所占比例越高;召回率越高,則提取結果中召回真實目標比例越高。因此,改進的算法能在一定程度上減少后續裂縫參數計算誤差,提高裂縫走向分析的精確度,為后續裂縫安全等級評估提供更精確的數據。
根據表1數據、圖7實驗結果及各評價指標得出改進的毛刺消除算法能夠精確、有效地消除各種類型圖像裂縫骨架的毛刺,并能對同一生長點不同分支步長進行判斷,消除較短分支,符合保留較長分支為骨架主體信息毛刺消除原則,最終實現單一像素寬度且無毛刺骨架的提取。

圖8 毛刺消除算法的準確率對比

圖9 毛刺消除算法的召回率對比

圖10 毛刺消除算法的時間效率對比
本文充分考慮到混凝土路面裂縫的不規則性,采用Zhang并行細化算法進行細化,在其基礎上,提出結合模板思想的突起點消除方法能夠有效獲得單一像素寬度的細化圖像。同時,改進的毛刺消除算法滿足保留較長分支為骨架主體信息的原則,最大程度地保持裂縫骨架主體信息。該算法不限于同一生長點存在多分支步長同時小于閾值的情況,同時適用于其它情況。因此,本文改進的算法能夠精確、有效地實現圖像裂縫的單一像素寬度、無毛刺的骨架提取。