一種基于形態(tài)學(xué)對建筑物圖像快速識別的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于形態(tài)學(xué)對建筑物圖像快速識別的方法,屬于地理信息科學(xué)領(lǐng)域。
【背景技術(shù)】
[0002]在進(jìn)行國土資源的土地監(jiān)控的時候,常常需要識別攝像機(jī)的監(jiān)控區(qū)域是土地農(nóng)田還是建筑物,傳統(tǒng)的和一般的方法為基于遙感識別和紋理特征識別,而這兩種識別方式在實(shí)時性上都有很大問題,基于遙感數(shù)據(jù)多速度慢,效率低;基于紋理特征對建筑物圖像進(jìn)行識別時,速度慢且穩(wěn)定性差,極易受到外界其他環(huán)境變化和光線等影響,魯棒性不好。
【發(fā)明內(nèi)容】
[0003]發(fā)明目的:針對上述現(xiàn)有技術(shù),提出一種基于形態(tài)學(xué)對建筑物圖像快速識別的方法,解決建筑物識別速度慢及魯棒性不好的問題,實(shí)現(xiàn)了建筑物圖像快速準(zhǔn)確識別的目的。
[0004]
【發(fā)明內(nèi)容】
:一種基于形態(tài)學(xué)對建筑物圖像快速識別的方法,包括以下步驟:
[0005]SI,使用canny算子對圖像進(jìn)行邊緣提取得到二值圖像,然后通過八鄰域輪廓跟蹤算法對所述二值圖像進(jìn)行目標(biāo)輪廓的掃描跟蹤,得到由跟蹤掃描點(diǎn)構(gòu)成的η條跟蹤曲線;
[0006]S2,根據(jù)每條跟蹤曲線上跟蹤掃描點(diǎn)的數(shù)量,對每條跟蹤曲線進(jìn)行精簡刪除,然后通過DP簡化線算法對曲線進(jìn)行精簡和修正,得到若干條直線;
[0007]S3,設(shè)定直線的水平和垂直方向的長度閾值Α,并設(shè)定直線的其他方向的長度閾值B,對所述若干條直線進(jìn)行精簡,保留長度大于等于A的水平和垂直方向的直線,以及長度大于等于B的其他方向的直線;
[0008]S4,以直線的長度值的平方作為權(quán)值,對步驟S3精簡后的各直線的角度分布進(jìn)行統(tǒng)計(jì);若統(tǒng)計(jì)結(jié)果在0°、90°和180°鄰域同時呈現(xiàn)峰值,則繼續(xù)進(jìn)行步驟S5,否則判定圖像中不含建筑物;
[0009]S5,依次尋找相互約束的垂直直線和水平直線組,具體為:
[0010]a,在步驟S3精簡后的各直線中,尋找第一條垂直直線并記其長度為Dl,并把所述第一條垂直直線保存在Vector_V單元中;
[0011]b,尋找第一條水平直線,若第一條水平直線長度大于D1,則把所述第一條水平直線保存在Vect0r_L單元中,否則忽略該第一條水平直線,繼續(xù)尋找長度大于Dl的下一條水平直線并保存在所述Vect0r_L單元,若遍歷所有水平直線的長度均小于等于D1,則判定圖像中不含建筑物;
[0012]c,尋找第二條垂直直線并記其長度記為D2,并把所述第二條垂直直線保存在Vector_V單元中;
[0013]d,尋找下一條水平直線,若該水平直線長度大于D2,則把該水平直線保存在Vector_L單元中,否則忽略該水平直線,繼續(xù)尋找長度大于D2的下一條水平直線并保存在所述Vector_L單元;
[0014]e,依照步驟a至d,遍歷步驟S3精簡后的各條直線,得到相互約束的垂直直線和水平直線組;
[0015]S6,若Vect0r_V單元中的垂直直線總量小于2,則判定圖像中不含建筑物,否則在Vector_V單元中尋找長度最長的2條垂直直線,并在Vector_L單元中尋找長度最長的2條水平直線;對所述長度最長的2條水平線直和2條垂直直線的任意兩個端點(diǎn)進(jìn)行距離判斷,若距離小于預(yù)設(shè)值T,判定存在建筑物。
[0016]作為本發(fā)明的優(yōu)選方案,所述步驟SI中,通過八鄰域輪廓跟蹤算法對所述二值圖像進(jìn)行目標(biāo)輪廓的掃描跟蹤,具體為:將掃描到的第一個點(diǎn)記為跟蹤起點(diǎn),從二值圖像中的跟蹤起點(diǎn)開始對其八個鄰域進(jìn)行掃描跟蹤,將掃描得到的跟蹤掃描點(diǎn)進(jìn)行標(biāo)記,同時對掃描得到的跟蹤掃描點(diǎn)的八鄰域繼續(xù)進(jìn)行掃描跟蹤,直到?jīng)]有新的跟蹤掃描點(diǎn),得到一條跟蹤曲線;
[0017]其中,對所述跟蹤掃描點(diǎn)的八鄰域進(jìn)行掃描跟蹤時,若所述跟蹤掃描點(diǎn)的八鄰域中出現(xiàn)2個新的跟蹤掃描點(diǎn),則對這兩個方向同時繼續(xù)掃描跟蹤,若跟蹤掃描點(diǎn)的鄰域多于2個新的跟蹤掃描點(diǎn),則按掃描得到的第一個跟蹤掃描點(diǎn)進(jìn)行優(yōu)先掃描跟蹤。
[0018]作為本發(fā)明的優(yōu)選方案,所述步驟S4中,對各直線的角度分布進(jìn)行統(tǒng)計(jì)時,先以圖像的左上角為為坐標(biāo)原點(diǎn),建立直角坐標(biāo)系,獲取步驟S3精簡后的各直線的角度;進(jìn)行峰值判斷時,先分別得出0°?20°區(qū)間、75°?115°區(qū)間、160°?180°區(qū)間內(nèi)所述權(quán)值的最大值,分別記為L1、L2和L3 ;若L1、L2和L3的值均大于2000,且0°?180°內(nèi)其他區(qū)間的直線長度值的平方均小于200時,則表明在0°、90°和180°鄰域同時呈現(xiàn)峰值。
[0019]有益效果:本發(fā)明的一種基于形態(tài)學(xué)對建筑物圖像快速識別的方法,識別速度快且魯棒性好,進(jìn)一步來說,該方法可以適用于任意季節(jié)的建筑物,處理樹葉對建筑識別的干擾的魯棒性很強(qiáng),區(qū)分建筑物與土地農(nóng)田效果明顯;另外,本發(fā)明克服了基于特征區(qū)域?qū)ㄖ镒R別時樹木樹葉的嚴(yán)重干擾,快速準(zhǔn)確的識別出建筑物圖像。
【附圖說明】
[0020]圖1為本發(fā)明基于形態(tài)學(xué)對建筑物圖像快速準(zhǔn)確識別方法的流程示意圖;
[0021]圖2為圖像目標(biāo)掃描跟蹤流程示意圖。
【具體實(shí)施方式】
[0022]下面結(jié)合附圖對本發(fā)明做更進(jìn)一步的解釋。
[0023]如圖1所示,一種基于形態(tài)學(xué)對建筑物圖像快速識別的方法,具體為:
[0024]SI,使用canny算子對圖像進(jìn)行邊緣提取得到二值圖像,然后通過八鄰域輪廓跟蹤算法對該二值圖像進(jìn)行目標(biāo)輪廓的掃描跟蹤,得到由跟蹤掃描點(diǎn)構(gòu)成的η條跟蹤曲線。
[0025]如圖2所示,通過八鄰域輪廓跟蹤算法對二值圖像進(jìn)行目標(biāo)輪廓的掃描跟蹤,具體為:將掃描到的第一個點(diǎn)記為跟蹤起點(diǎn),從二值圖像中的跟蹤起點(diǎn)開始,按鄰域掃描順序?qū)ζ浒藗€鄰域進(jìn)行掃描跟蹤,將掃描得到的跟蹤掃描點(diǎn)進(jìn)行標(biāo)記,同時對掃描得到的跟蹤掃描點(diǎn)的八鄰域繼續(xù)進(jìn)行掃描跟蹤;若跟蹤掃描點(diǎn)的八鄰域中出現(xiàn)2個新的跟蹤掃描點(diǎn),則對這2個新的跟蹤掃描點(diǎn)進(jìn)行標(biāo)記并對這兩個方向同時繼續(xù)掃描跟蹤,若跟蹤掃描點(diǎn)的鄰域多于2個新的跟蹤掃描點(diǎn),則對這多個新的跟蹤掃描點(diǎn)進(jìn)行標(biāo)記并按掃描得到的第一個跟蹤掃描點(diǎn)進(jìn)行優(yōu)先掃描跟蹤,直到?jīng)]有新的跟蹤掃描點(diǎn),得到一條跟蹤曲線,并存入容器list中。按此方法將得到的η個曲線list依次存放list容器List_Curves中。由于二值圖像本身沒法進(jìn)行數(shù)據(jù)信息的處理,通過八鄰域輪廓跟蹤算法對該二值圖像進(jìn)行目標(biāo)輪廓的掃描跟蹤是后續(xù)識別和判定的前提和基礎(chǔ)。
[0026]S2,由于掃描得到的η個曲線list的數(shù)據(jù)存儲過于復(fù)雜,且其中存在許多短線,不便于后續(xù)對建筑物的快速識別,根據(jù)每條跟蹤曲線上跟蹤掃描點(diǎn)的數(shù)量,對每條跟蹤曲線進(jìn)行精簡刪除,如除去點(diǎn)數(shù)少于8點(diǎn)的曲線。然后通過DP (Douglas—Peucker)簡化線算法對曲線進(jìn)行精簡和修正,得到若干條直線,此時直線list存儲數(shù)據(jù)結(jié)構(gòu)的簡便,便于后續(xù)程序的調(diào)用,識別速度大大提高,并將修正過的直線list存放在容器List_DP中。
[0027]S3,針對樹葉干擾對建筑物輪廓的嚴(yán)重干擾問題,我們利用自然界事物(如樹葉)在形態(tài)學(xué)上表現(xiàn)出各向同性,建筑物曲線輪廓在水平和垂直方向的顯著特征,將水平垂直類直線與其他角度上的直線進(jìn)行不同程度裁剪,達(dá)到減少樹葉對建筑物輪廓干擾的目的,具體做法為:對容器List_DP中各直線,設(shè)定直線的水平和垂直方向的長度閾值A(chǔ),并設(shè)定直線的其他方向(即不為水平、垂直方向)的長度閾值B,對若干條直線進(jìn)行精簡,保留長度大于等于A的水平和垂直方向的直線,以及長度大于等于B的其他方向的直線,然后更新容器并存入容器List_DP從而完成對曲線的修正和精簡;其中