安世全,徐夢(mèng)茹,瞿 中
(重慶郵電大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,重慶 400065)
目前,國(guó)內(nèi)外推出了一系列裂縫檢測(cè)設(shè)備進(jìn)行圖像數(shù)據(jù)的采集,眾多學(xué)者對(duì)裂縫檢測(cè)算法也不斷進(jìn)行改進(jìn)[1,2]。但是,在此基礎(chǔ)上對(duì)圖像裂縫進(jìn)行骨架提取時(shí),由于裂縫的形態(tài)不規(guī)則,細(xì)化處理后的圖像裂縫通常會(huì)出現(xiàn)非單一像素寬度、毛刺、斷裂等現(xiàn)象,從而影響其提取精度。
近年來(lái),各國(guó)學(xué)者著眼于經(jīng)典細(xì)化算法的研究。其中,Zhang并行細(xì)化算法[3,4]雖保證骨架在目標(biāo)圖像中心線上,但非單一像素,且有毛刺;Hilditch算法[5]細(xì)化效果好,但處理速度慢、通用性差;Rosenfeld算法[6]速度較快,但得到的細(xì)化圖像不夠平滑,對(duì)后續(xù)處理影響較大;Pavlidis算法[7]能夠高效地去除多余像素,保留關(guān)鍵特征點(diǎn),但得到的圖像骨架連通性差;OPTA算法[8]能夠保持原圖像的拓?fù)浣Y(jié)構(gòu),但細(xì)化后的圖像扭曲較大,毛刺較多,不夠平滑。
本文提出一種基于Zhang并行細(xì)化算法的目標(biāo)骨架提取算法。首先,通過(guò)形態(tài)學(xué)操作對(duì)裂縫圖像進(jìn)行預(yù)處理,得到預(yù)處理后的二值圖像;然后,采用Zhang并行細(xì)化算法對(duì)圖像裂縫進(jìn)行細(xì)化,提出一種結(jié)合模板思想,單一化骨架像素寬度的方法;最后,以較長(zhǎng)分支為骨架主體信息的原則,采用改進(jìn)的毛刺消除算法消除毛刺。
Zhang并行快速細(xì)化算法是由T.Y. Zhang和C.Y. Suen提出的,該算法根據(jù)所給出的判定條件來(lái)判定當(dāng)前目標(biāo)像素點(diǎn)是否可以刪除,內(nèi)部點(diǎn)、孤立點(diǎn)和直線端點(diǎn)不能刪除,同時(shí),若刪除當(dāng)前邊界點(diǎn),圖像連通分量不增加,則其可以刪除。
采用Zhang并行細(xì)化算法對(duì)圖1(a)進(jìn)行細(xì)化操作,得到細(xì)化結(jié)果如圖1(b)所示。圖1(c)、圖1(d)為圖1(b)的局部細(xì)節(jié)示意圖。通過(guò)對(duì)圖1(c)和圖1(d)的標(biāo)記區(qū)域觀察可知,經(jīng)由Zhang并行細(xì)化算法所得圖像裂縫雖無(wú)明顯失真與斷裂問(wèn)題,但是,其所得細(xì)化結(jié)果是非單一像素寬度的,且存在細(xì)小毛刺,因此,需要對(duì)細(xì)化后圖像進(jìn)行后期處理。
圖1 Zhang并行細(xì)化結(jié)果
圖1結(jié)果表明,Zhang并行細(xì)化算法結(jié)果存在形成90°夾角的非單一像素寬度的像素點(diǎn),為突起點(diǎn),圖2(a)~圖2(d)為4個(gè)方向上的突起點(diǎn)示意圖。為消除4個(gè)方向上的突起點(diǎn),本文提出利用模板匹配思想對(duì)4個(gè)方向上的突起點(diǎn)進(jìn)行消除。
圖2 突起點(diǎn)
以圖2(a)為例,對(duì)突起點(diǎn)八鄰域像素點(diǎn)分布情況進(jìn)行分析。設(shè)當(dāng)前像素點(diǎn)為P1,對(duì)其八鄰域像素點(diǎn)分布情況(圖3)進(jìn)行分析可知,像素點(diǎn)P1,P2,P8的值同時(shí)為1,是形成該方向上的突起點(diǎn)的必要不充分條件,當(dāng)像素點(diǎn)P1為突起點(diǎn)時(shí),像素點(diǎn)P4,P5,P6的值必定同時(shí)為0。因此,可以得出圖2(a)所示方向上的突起點(diǎn)判定條件:當(dāng)且僅當(dāng)像素點(diǎn)P1,P2,P8的值同時(shí)為1,且像素點(diǎn)P4,P5,P6的值同時(shí)為0時(shí),當(dāng)前像素點(diǎn)P1為突起點(diǎn)。其余3個(gè)方向突起點(diǎn)的判定同理,可得突起點(diǎn)判定如式(1)所示
(1)
圖3 突起點(diǎn)P1八鄰域
設(shè)中心點(diǎn)為P1,其八鄰域分布如圖4所示。
圖4 P1八鄰域
算法實(shí)現(xiàn)步驟如下:
對(duì)細(xì)化后所得圖像進(jìn)行遍歷,若當(dāng)前點(diǎn)P1為裂縫點(diǎn),消除滿足下面4個(gè)條件的像素點(diǎn)P1,將其變?yōu)楸尘包c(diǎn)。
(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;
對(duì)細(xì)化后所得圖像進(jìn)行循環(huán)迭代處理,直至沒(méi)有滿足上述條件的點(diǎn),退出循環(huán)。
對(duì)圖2(b)細(xì)化圖像進(jìn)行像素單一化處理,其局部細(xì)節(jié)放大實(shí)驗(yàn)效果圖如圖5所示。
圖5 像素單一化效果
圖5表明,利用模板匹配思想能有效消除細(xì)化處理后裂縫圖像中仍存在的非單一像素寬度的突起點(diǎn),從而實(shí)現(xiàn)裂縫骨架像素寬度單一化。
經(jīng)過(guò)像素單一化的圖像裂縫,仍存在細(xì)小毛刺,需進(jìn)一步處理。本文提出一種改進(jìn)的毛刺消除算法,以保留較長(zhǎng)分支為骨架主體信息的原則,消除細(xì)化后所得裂縫圖像中的細(xì)小毛刺。
裂縫骨架圖像中的每一個(gè)裂縫骨架像素點(diǎn),其八鄰域內(nèi)像素分布情況及連通性都不完全相同。為了方便敘述,結(jié)合文獻(xiàn)[9]與文獻(xiàn)[10],對(duì)節(jié)點(diǎn)、生長(zhǎng)點(diǎn)、端點(diǎn)、步長(zhǎng)進(jìn)行定義,節(jié)點(diǎn)nodep為八鄰域內(nèi)存在兩個(gè)或更多骨架點(diǎn)的像素點(diǎn);生長(zhǎng)點(diǎn)growp為八鄰域內(nèi)存在3個(gè)或更多骨架點(diǎn),并引出毛刺的像素點(diǎn),其屬于節(jié)點(diǎn)的一種;端點(diǎn)endp為八鄰域內(nèi)僅存在一個(gè)骨架點(diǎn)的像素點(diǎn);步長(zhǎng)L是以像素為單位,單一像素寬度分支所具有的像素個(gè)數(shù)。根據(jù)以上定義可得節(jié)點(diǎn)nodep、生長(zhǎng)點(diǎn)growp、端點(diǎn)endp的判定如式(2)~式(4)所示
(2)
(3)
(4)
其中,change為當(dāng)前裂縫點(diǎn)P1八鄰域內(nèi)裂縫點(diǎn)到背景點(diǎn)變化次數(shù),count為當(dāng)前裂縫點(diǎn)P1八鄰域內(nèi)裂縫點(diǎn)總數(shù)。
基于方向鏈碼去除骨架毛刺算法[11]結(jié)合細(xì)化迭代的次數(shù)給定毛刺判定的閾值如式(5)所示
(5)
其中,L為步長(zhǎng),ceil表示取大于等于括號(hào)內(nèi)的最小整數(shù),times為目標(biāo)圖像細(xì)化迭代的次數(shù)。
基于方向鏈碼去除骨架毛刺算法[11]以端點(diǎn)為起點(diǎn)掃描各分支,計(jì)算其步長(zhǎng),與閾值進(jìn)行比較,對(duì)長(zhǎng)度小于閾值的分支進(jìn)行毛刺判定,若判定為毛刺,則刪除該分支。
基于方向鏈碼去除骨架毛刺算法[11]雖然能夠有效消除裂縫圖像中的毛刺,但不滿足保留較長(zhǎng)分支為骨架主體信息的原則,因此,該算法所得骨架易導(dǎo)致細(xì)節(jié)信息丟失。
本文對(duì)基于方向鏈碼去除骨架毛刺算法[11]進(jìn)行改進(jìn),考慮到同一生長(zhǎng)點(diǎn)存在多分支同時(shí)小于閾值情況,以端點(diǎn)為起點(diǎn)進(jìn)行分支掃描,計(jì)算所有分支的步長(zhǎng),并記錄;每次選取最小步長(zhǎng)分支進(jìn)行毛刺的判定與消除,以最大程度保持圖像骨架主體信息。改進(jìn)的毛刺消除算法不僅適用于同一生長(zhǎng)點(diǎn)存在多分支同時(shí)小于閾值的情況,而且適用于同一生長(zhǎng)點(diǎn)小于閾值分支數(shù)不限的情況。改進(jìn)的毛刺消除算法流程如圖6所示。
圖6 改進(jìn)的算法流程
改進(jìn)的毛刺消除算法具體步驟如下:
(1)遍歷單一像素寬度化的細(xì)化圖像,將裂縫端點(diǎn)存儲(chǔ)至序列endpseq,并將生長(zhǎng)點(diǎn)及其八鄰域像素點(diǎn)的像素值分別置為3和8。
(2)若存在生長(zhǎng)點(diǎn),則證明該裂縫圖像存在毛刺,以端點(diǎn)為起點(diǎn)對(duì)分支進(jìn)行掃描,計(jì)算各分支的步長(zhǎng),并記錄于數(shù)組spurvalue。
(3)取最小步長(zhǎng)與閾值進(jìn)行比較,若該分支步長(zhǎng)小于閾值,標(biāo)記該分支,并對(duì)該分支所在生長(zhǎng)點(diǎn)的分支數(shù)進(jìn)行判斷,若分支數(shù)大于2,則判定該分支為毛刺,刪除該分支,執(zhí)行步驟(4);若余留分支數(shù)小于等于2,則執(zhí)行步驟(5)。
(4)對(duì)當(dāng)前生長(zhǎng)點(diǎn)的余留分支數(shù)進(jìn)行判斷,若余留分支數(shù)等于2,則對(duì)該生長(zhǎng)點(diǎn)的八鄰域像素點(diǎn)進(jìn)行分析;若刪除該生長(zhǎng)點(diǎn)不影響圖像的連通性,則刪除該生長(zhǎng)點(diǎn);若刪除該生長(zhǎng)點(diǎn)影響圖像的連通性,則保留該生長(zhǎng)點(diǎn)。
(5)重復(fù)執(zhí)行步驟(3),直至不再具有滿足步驟(3)中條件的分支,退出循環(huán)。
(6)恢復(fù)生長(zhǎng)點(diǎn)與生長(zhǎng)點(diǎn)八鄰域像素點(diǎn),得到消除毛刺的最終結(jié)果。
本文采取精確率(precision,P)、召回率(recall,R)[2]作為算法的綜合評(píng)價(jià)指標(biāo)進(jìn)行實(shí)驗(yàn)定量分析。其定義如下
P=NP/Ntotal
(6)
R=NP/Nr
(7)
其中,NP表示提取結(jié)果中裂縫骨架像素點(diǎn)個(gè)數(shù),Ntotal表示提取結(jié)果中裂縫骨架像素點(diǎn)總個(gè)數(shù),Nr人工提取的真是裂縫骨架像素點(diǎn)個(gè)數(shù)。
本文從實(shí)際工程圖像中選取大小為400*300,不同類型的混凝土路面裂縫圖像作為實(shí)驗(yàn)定量分析的數(shù)據(jù)測(cè)試集,實(shí)驗(yàn)環(huán)境為:Intel(R) Core(TM) i5-2430M CPU、主頻2.40 Hz、4 GB內(nèi)存。
圖7(a)~圖7(e)為本文改進(jìn)的毛刺消除算法與基于方向鏈碼去除骨架毛刺算法[11]的對(duì)比結(jié)果。其中,圖7(a)為裂縫原圖,圖7(b)為像素寬度單一化結(jié)果,圖7(c)為改進(jìn)算法結(jié)果,圖7(d)為基于方向鏈碼去除骨架毛刺算法[11]結(jié)果,圖7(e)為人工提取的真實(shí)裂縫骨架。圖7(c)與表1數(shù)據(jù)表明,改進(jìn)后算法能有效消除圖像裂縫骨架中的細(xì)小毛刺,所提取的裂縫骨架圖像與人工提取的真實(shí)裂縫基本一致,且該算法適用于各種類型的圖像裂縫。
圖7(c)、圖7(d)中標(biāo)注區(qū)域及表1數(shù)據(jù)表明,針對(duì)同一生長(zhǎng)點(diǎn)多條分支小于閾值的情況,改進(jìn)的毛刺消除算法保留較長(zhǎng)分支骨架主體信息,而基于方向鏈碼去除骨架毛刺算法[11]則是將先搜索到的小于閾值的分支視為毛刺并消除。故改進(jìn)的算法符合保留較長(zhǎng)分支為骨架主體信息毛刺消除原則。因此,改進(jìn)的算法能夠在最大程度上保留骨架主體信息,實(shí)驗(yàn)結(jié)果表明改進(jìn)的算法明顯優(yōu)于基于方向鏈碼去除骨架毛刺算法[11]。
圖7 實(shí)驗(yàn)結(jié)果對(duì)比
表1 毛刺消除對(duì)比實(shí)驗(yàn)標(biāo)注區(qū)域數(shù)據(jù)分析
圖8~圖10表明,改進(jìn)算法的時(shí)間效率、準(zhǔn)確率、召回率相對(duì)于原算法都有提高。準(zhǔn)確率越高,則提取結(jié)果中正確目標(biāo)所占比例越高;召回率越高,則提取結(jié)果中召回真實(shí)目標(biāo)比例越高。因此,改進(jìn)的算法能在一定程度上減少后續(xù)裂縫參數(shù)計(jì)算誤差,提高裂縫走向分析的精確度,為后續(xù)裂縫安全等級(jí)評(píng)估提供更精確的數(shù)據(jù)。
根據(jù)表1數(shù)據(jù)、圖7實(shí)驗(yàn)結(jié)果及各評(píng)價(jià)指標(biāo)得出改進(jìn)的毛刺消除算法能夠精確、有效地消除各種類型圖像裂縫骨架的毛刺,并能對(duì)同一生長(zhǎng)點(diǎn)不同分支步長(zhǎng)進(jìn)行判斷,消除較短分支,符合保留較長(zhǎng)分支為骨架主體信息毛刺消除原則,最終實(shí)現(xiàn)單一像素寬度且無(wú)毛刺骨架的提取。
圖8 毛刺消除算法的準(zhǔn)確率對(duì)比
圖9 毛刺消除算法的召回率對(duì)比
圖10 毛刺消除算法的時(shí)間效率對(duì)比
本文充分考慮到混凝土路面裂縫的不規(guī)則性,采用Zhang并行細(xì)化算法進(jìn)行細(xì)化,在其基礎(chǔ)上,提出結(jié)合模板思想的突起點(diǎn)消除方法能夠有效獲得單一像素寬度的細(xì)化圖像。同時(shí),改進(jìn)的毛刺消除算法滿足保留較長(zhǎng)分支為骨架主體信息的原則,最大程度地保持裂縫骨架主體信息。該算法不限于同一生長(zhǎng)點(diǎn)存在多分支步長(zhǎng)同時(shí)小于閾值的情況,同時(shí)適用于其它情況。因此,本文改進(jìn)的算法能夠精確、有效地實(shí)現(xiàn)圖像裂縫的單一像素寬度、無(wú)毛刺的骨架提取。