嚴(yán)培榮 王超 厲丹
摘要:Hough變換不僅可以用來(lái)檢測(cè)規(guī)則的直線,也可以對(duì)其他許多形狀的物體進(jìn)行識(shí)別,但由于閾值設(shè)定的問(wèn)題對(duì)短直線的檢測(cè)會(huì)受到長(zhǎng)直線的影響而效果不好,且該變換僅檢測(cè)直線,無(wú)法記錄檢測(cè)直線的起始點(diǎn)和終止點(diǎn)。為此,該文提出一種改進(jìn)過(guò)的Hough變換算法更好的檢測(cè)遙感圖像中的直線。
關(guān)鍵詞:Hough變換;檢測(cè)直線
中圖分類號(hào):TP391.4 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)26-0157-02
Abstract: Hough transform can be used not only to detect straight lines, but also to identify many other objects. However, due to the problem of threshold setting, the detection of short straight line will be affected by the long straight line and the result is not good. And the transformation only detects the straight line, and can not record the starting point and ending point of the detection line. For this reason, this paper proposes an improved Hough transform algorithm to detect straight lines in remote sensing images better.
Key words: Hough transformation; Aightline detection
1 概述
Hough變換是圖像處理中常用的基本方法之一。第一次被提出是在1962年,后來(lái)在1972年的時(shí)候Richard Duda和Peter Hart兩人對(duì)一般Hough變換進(jìn)行推廣進(jìn)行,將參數(shù)空間選為極坐標(biāo)系即將極坐標(biāo)融入Hough變換。后來(lái)又經(jīng)過(guò)了一系列的研究改善,至此Hough變換不僅可以用來(lái)檢測(cè)規(guī)則的直線,也可以對(duì)其他許多形狀的物體進(jìn)行識(shí)別,但是多為識(shí)別圓、橢圓等圓形物體。Hough變換一經(jīng)提出在圖像處理這一領(lǐng)域就引起了研究者們的大量關(guān)注。但是Hough變換也還有許多不足需要進(jìn)行改進(jìn),例如由于閾值設(shè)定的問(wèn)題對(duì)于一般較短直線的檢測(cè)可能會(huì)受到長(zhǎng)直線檢測(cè)的影響而使得對(duì)短直線檢測(cè)的效果不好。并且該變換僅檢測(cè)直線,卻無(wú)法記錄檢測(cè)直線的起始點(diǎn)和終止點(diǎn)等等。為了更好的檢測(cè)出遙感圖像中的直線道路,本文嘗試著提出一種改進(jìn)過(guò)的Hough變換算法來(lái)檢測(cè)比較完整的道路信息。
2 Hough變換介紹及其優(yōu)缺點(diǎn)分析
Hough變換的主要原理很簡(jiǎn)單,就是利用點(diǎn)線對(duì)偶,即其中一個(gè)空間中的點(diǎn)對(duì)應(yīng)到另一個(gè)空間時(shí)則變?yōu)橹本€,那么一個(gè)空間中一條直線上的點(diǎn)在另一個(gè)空間中是許多條相交的直線,則可以通過(guò)求直線的交點(diǎn)個(gè)數(shù)來(lái)檢測(cè)直線,問(wèn)題就變得簡(jiǎn)單化了,把幾何問(wèn)題轉(zhuǎn)化為代數(shù)問(wèn)題。
Hough變化的具體定義為:設(shè)直角坐標(biāo)系中一直線,我們用斜截式即y=kx+b來(lái)表示。并且用極坐標(biāo)系來(lái)作為參數(shù)空間,即參數(shù)空間的坐標(biāo)為[γ]和[θ],則這條直線在極坐標(biāo)系中可以表示為一點(diǎn)[(γ,θ)],這即為點(diǎn)線對(duì)偶性。那么我們可以利用邊緣檢測(cè)之后的圖像,把圖像上的非零像素點(diǎn)都變換為參數(shù)空間中的一條直線,那么我們只需要求參數(shù)空間中的直線交點(diǎn),這個(gè)交點(diǎn)即對(duì)應(yīng)直角坐標(biāo)系中的一條直線,因此即可檢測(cè)出直角坐標(biāo)系中的直線。
由以上可知,直角坐標(biāo)系空間和極坐標(biāo)系空間中點(diǎn)線存在對(duì)偶性,如圖1所示。如果為了方便計(jì)算,把兩個(gè)坐標(biāo)系對(duì)換,將[γ,θ]看成直角坐標(biāo)空間,由[γ=x0*cosθ+y0*sinθ]可知一點(diǎn)[(x0,y0)]就是一個(gè)正弦曲線,如圖2所示。
由以上可得我們可以通過(guò)檢測(cè)參數(shù)空間的交點(diǎn)來(lái)檢測(cè)原來(lái)空間的直線。為了便于觀察計(jì)算,一般我們進(jìn)行Hough變換之前都會(huì)先對(duì)空間進(jìn)行量化,形成離散Hough空間,即設(shè)置一個(gè)累加矩陣用來(lái)記錄參數(shù)空間中交點(diǎn)的個(gè)數(shù)。
簡(jiǎn)而言之,Hough變換主要是尋找參數(shù)空間中對(duì)應(yīng)的累積點(diǎn)。由以上可知Hough變換的原理很簡(jiǎn)單,但是正因?yàn)樗惴ê?jiǎn)單,用Hough變換來(lái)檢測(cè)也存在一些缺點(diǎn),例如:找到累加矩陣中局部的最大值比較難、受其他因素的干擾嚴(yán)重、存儲(chǔ)空間較大、對(duì)短小直線檢測(cè)困難、不能檢測(cè)出直線的端點(diǎn)等,除此之外計(jì)算速度和復(fù)雜度不定,主要取決于參數(shù)空間的大小。
為了解決原來(lái)直線檢測(cè)速度的問(wèn)題,實(shí)現(xiàn)快速的直線檢測(cè)算法,Murakami K等人想到分塊原則,利用分塊思想將待處理區(qū)域分為若干個(gè)子塊,然后在各個(gè)子塊內(nèi)分別應(yīng)用一般 Hough 變換來(lái)檢測(cè)直線。為了減少計(jì)算時(shí)的存儲(chǔ)空間,減少計(jì)算量,降低計(jì)算復(fù)雜度,Chutatape Q 和 Guo I嘗試著將原始空間到參數(shù)空間的映射由“一對(duì)多”變?yōu)椤岸鄬?duì)一”,并且僅對(duì)至少通過(guò)兩個(gè)點(diǎn)的直線的參數(shù)進(jìn)行累積運(yùn)算。此外,朱娟等人提出一種逆向的Hough變換方法,并且在其中融合直線的梯度,反過(guò)來(lái)去通過(guò)參數(shù)空間的點(diǎn)來(lái)判斷原始空間中是否有對(duì)應(yīng)的直線。從上面可以看出,研究者們?cè)谌绾谓档虷ough變換計(jì)算量和提高檢測(cè)速度方面進(jìn)行了大量的研究。我們知道在檢測(cè)過(guò)程中閾值的設(shè)置對(duì)于直線檢測(cè)的影響很大,閾值設(shè)置過(guò)大則干擾了對(duì)短直線的檢測(cè),同樣閾值太小檢測(cè)的效果也不好。除此之外,一般Hough變換也沒(méi)有給出如何記錄檢測(cè)直線的起始點(diǎn)和終止點(diǎn)等等。
3 本文的Hough變換檢測(cè)道路方法
由于使用一般的Hough變換只能簡(jiǎn)單的檢測(cè)出直線,并沒(méi)有給出如何去記錄直線的方向、起始點(diǎn)和終點(diǎn)等相關(guān)的道路信息,然而進(jìn)行完整的道路檢測(cè)肯定要檢測(cè)出道路的起點(diǎn)和終點(diǎn)信息即檢測(cè)出道路段,并把道路邊緣線和其他建筑物的直線邊緣線進(jìn)行區(qū)分,例如道路邊緣是一對(duì)平行線,而屋頂?shù)冉ㄖ镞吘壱部赡苁瞧叫芯€對(duì),那么如何從這些直線對(duì)中判斷出道路邊緣呢?而利用一般的Hough變換無(wú)法解決這些問(wèn)題,所以要對(duì)Hough變換算法進(jìn)行改善,從而使之能檢測(cè)出完整的道路信息。我們知道一般稍微正規(guī)的道路的邊緣相比于其他建筑物的邊緣線有許多獨(dú)特的特征,如:道路兩側(cè)具有相似的邊緣,長(zhǎng)寬比較其他建筑物很大等。本文提出的 Hough變換算法的具體步驟如下:
Step 1:首先建立參數(shù)空間,并對(duì)參數(shù)空間進(jìn)行量化,形成離散的參數(shù)空間。為了便于統(tǒng)計(jì)交點(diǎn)的個(gè)數(shù)建立一個(gè)累加矩陣[Jγ,θ],并設(shè)矩陣中的每個(gè)元素初始值為 0;然后增加 1 個(gè)與二維累加矩陣相同大小的二維矩陣[lines=x,y],用來(lái)記錄每一個(gè)離散點(diǎn)相應(yīng)的范圍。
Step 2:按順序搜索圖像,對(duì)于圖像的每個(gè)像素點(diǎn),計(jì)算相應(yīng)的[θ]值所對(duì)應(yīng)的 [γ]值,并找到所對(duì)應(yīng)[Jγ,θ],使[Jγ,θ]的值升高1,并且同時(shí)記錄下每一個(gè)點(diǎn)所對(duì)應(yīng)點(diǎn)的范圍,直到計(jì)算完所有的圖像像素點(diǎn)。
Step 3:找到[Jγ,θ]中的最大值,并且記錄下該最大值所對(duì)應(yīng)的參數(shù)[γ,θ],并且在lines中找到對(duì)應(yīng)元素來(lái)確定直線段的端點(diǎn).
Step 4:將[Jγ,θ]置為 0,執(zhí)行Step 3,一直到所有滿足條件的最大值點(diǎn)被檢測(cè)完。
4 實(shí)驗(yàn)結(jié)果分析
峰值點(diǎn)的分布圖、Hough變換的結(jié)果圖如下:
由以上幾張實(shí)驗(yàn)結(jié)果圖分析該改進(jìn)算法對(duì)于直線道路的檢測(cè)效果,為了更好的分析實(shí)驗(yàn)效果,除了本次實(shí)驗(yàn)一直使用的原圖進(jìn)行的道路檢測(cè)之外,又找了兩張道路圖進(jìn)行檢測(cè),結(jié)果如圖6和8。由實(shí)驗(yàn)結(jié)果可以看出,該算法可以檢測(cè)出道路并且能夠相對(duì)準(zhǔn)確的記錄出道路的端點(diǎn),但是也可以看出在直線檢測(cè)方面也存在一些不足,對(duì)于直線的識(shí)別靈敏度不夠高。
5 結(jié)論
上述實(shí)驗(yàn)結(jié)果,本文提出的算法能夠相對(duì)有效的消除一些建筑物的干擾,檢測(cè)出道路,并且標(biāo)記了道路的端點(diǎn),提取出了道路信息。但是也存在一些不足,從圖4可以看出其中的一條道路只檢測(cè)出了一條邊緣,另一條邊緣完全未檢測(cè)到,經(jīng)分析,應(yīng)該是在邊緣檢測(cè)時(shí)受到建筑物的影響使得道路邊緣間斷點(diǎn)太多,在進(jìn)行直線檢測(cè)時(shí)未能檢測(cè)出這是一條直線,這一點(diǎn)需要在邊緣檢測(cè)方面提高,并且可能因?yàn)樵撝本€檢測(cè)算法對(duì)于直線檢測(cè)的靈敏度不夠高導(dǎo)致的該結(jié)果,并且對(duì)于較彎曲的道路也未能檢測(cè)出來(lái)。對(duì)于圖5,道路邊緣很直,所以道路檢測(cè)的效果很好,只有一點(diǎn)點(diǎn)未檢測(cè)到,因?yàn)槭鞘致房诘脑颍缆窓z測(cè)時(shí)檢測(cè)出了8條直線,但實(shí)際上容易看出是兩條道路,這一點(diǎn)也有待提高。對(duì)于圖7,比較完整的檢測(cè)出了兩條道路信息,其中有一條檢測(cè)出的道路兩個(gè)邊緣有點(diǎn)重合,可以看出也是因?yàn)橐贿叺倪吘夐g斷點(diǎn)比較多,所以在檢測(cè)直線時(shí)朝道路中間偏導(dǎo)致兩個(gè)邊界有點(diǎn)重合。綜上可知,該算法能夠檢測(cè)出相對(duì)完整的道路信息,但是對(duì)于邊緣檢測(cè)間斷點(diǎn)較多或者是較彎曲的道路檢測(cè)效果不是很好,這些有待改善。
參考文獻(xiàn):
[1] 張益博. 高分辨遙感影像半自動(dòng)道路提取方法研究[D]. 西安電子科技大學(xué), 2011.
[2] 史文中, 朱長(zhǎng)青, 王昱. 從遙感影像提取道路特征的方法綜述與展望[J]. 測(cè)繪學(xué)報(bào), 2001, 30(3):257-262.
[3] 楊康, 李滿春, 劉永學(xué),等. 遙感影像道路的多點(diǎn)同時(shí)快速行進(jìn)提取方法[J]. 遙感技術(shù)與應(yīng)用, 2011, 26(3):294-302.
[4] 江濤, 朱運(yùn)海, 董鳳寶. 小波變換在遙感影像道路特征提取中的應(yīng)用[J]. 測(cè)繪工程, 2004, 13(2):34-36.
[5] 吳青. 高分辨率遙感圖象道路網(wǎng)提取技術(shù)研究[D]. 哈爾濱工業(yè)大學(xué), 2006.
[通聯(lián)編輯:梁書(shū)]