摘 要: 根據(jù)經(jīng)典Hough變換檢測(cè)空間直線的原理,提出了一種基于Hough變換的平行直線檢測(cè)改進(jìn)算法,將采集到的圖像進(jìn)行二值化處理,再使用Sobel算子對(duì)該二值化圖像進(jìn)行邊緣檢測(cè),對(duì)邊緣檢測(cè)得到的圖像進(jìn)行Hough變換和峰值點(diǎn)檢測(cè),由峰值點(diǎn)得到直線段圖像,最后使用本文提出的改進(jìn)算法計(jì)算出所有直線段的斜率,利用斜率相等來(lái)判定平行直線。通過(guò)對(duì)比實(shí)驗(yàn)證明,該算法能得到更高的精度,并縮短了運(yùn)行時(shí)間。
關(guān)鍵詞: Hough變換;平行直線檢測(cè);閾值
在遙感圖像中,對(duì)江河上橋梁目標(biāo)的識(shí)別具有重要意義。由于橋梁的最突出特征在于橋體的平行直線,所以對(duì)平行直線的實(shí)時(shí)檢測(cè)十分重要。經(jīng)典的Hough變換是一種常用的檢測(cè)直線的方法,它具有可對(duì)目標(biāo)進(jìn)行有效檢測(cè)與識(shí)別、可并行實(shí)現(xiàn)、對(duì)噪聲不敏感等優(yōu)點(diǎn),但是由于其自身的設(shè)計(jì)缺陷,無(wú)法完成對(duì)平行直線的實(shí)時(shí)性檢測(cè)。本文在經(jīng)典Hough變換的基礎(chǔ)上,提出了一種平行直線改進(jìn)算法,如圖1所示。經(jīng)試驗(yàn)證明,該算法能準(zhǔn)確地檢測(cè)識(shí)別出平行直線,且實(shí)時(shí)性較好。

1 算法原理
1.1 圖像二值化處理
將灰度圖像轉(zhuǎn)換為黑白的二值化圖像是圖像數(shù)字化處理的重要環(huán)節(jié)之一。目前常用的算法是采用閾值法對(duì)圖像進(jìn)行二值化處理,即通過(guò)設(shè)定某個(gè)T閾值,并以該閾值為門(mén)限,把灰度圖像轉(zhuǎn)換成二灰度級(jí)的黑白圖像。在處理過(guò)程中,不同的樣品圖像根據(jù)灰度分布峰值的不同,按圖像特征的相應(yīng)要求,可以選擇不同的二值化轉(zhuǎn)換閾值T。對(duì)于256級(jí)的灰度圖像,將圖像上位于n處的灰度值記為T(mén)n(0≤Tn≤255),則設(shè)定二值化閾值為T(mén)n。則:

由式(1)即得到以二值化數(shù)據(jù)Tn標(biāo)定的二值化圖像fn,從而完成了圖像的二值化處理。
1.2 邊緣檢測(cè)
經(jīng)典Hough變換使用Canny算子進(jìn)行邊緣檢測(cè)。雖然Canny算子能較好地檢測(cè)出圖像中的各個(gè)邊緣信息,但是在處理之后的圖像中,顯示了許多無(wú)用的邊緣信息,從而導(dǎo)致處理時(shí)間過(guò)長(zhǎng),失去了實(shí)時(shí)性意義。本文算法在對(duì)圖像二值化處理的基礎(chǔ)上,采用Sobel算子檢測(cè)圖像。


其邊緣檢測(cè)的實(shí)現(xiàn)過(guò)程是:使用圖2(a)的掩模對(duì)圖像fn進(jìn)行濾波,再使用圖2(b)掩模對(duì)fn濾波,然后計(jì)算每個(gè)濾波后的圖像中的像素值的平方,并將兩幅圖像的結(jié)果相加,最后計(jì)算相加結(jié)果的平方根。


Hough變換先將(ρ,θ量化,并相應(yīng)設(shè)置一個(gè)二維累加器矩陣。累加器中的每個(gè)元素描述了(ρ,θ)平面上的一個(gè)離散點(diǎn)。將圖像中的每一個(gè)特征點(diǎn)代入θ的各個(gè)量化值,計(jì)算出對(duì)應(yīng)的ρ,計(jì)算所得值(經(jīng)量化)落在某個(gè)小格內(nèi),即對(duì)參數(shù)空間累加器進(jìn)行加1,使得圖像空間中直線的提取問(wèn)題轉(zhuǎn)化為累加器計(jì)數(shù)求極大值問(wèn)題。
1.4 改進(jìn)的平行線檢測(cè)方法
無(wú)論是經(jīng)典的Hough變換,還是改進(jìn)的Hough變換,都要經(jīng)過(guò)變換空間來(lái)檢測(cè)。對(duì)于直線而言,只要這一組直線是平行線,都有一個(gè)顯著的特征:即兩條直線的斜率是相等的,基于這一特征,設(shè)計(jì)了以下的算法:
(1)為了得到效果更好的邊緣圖像,首先要對(duì)圖像進(jìn)行預(yù)處理,得到二值化圖像。
(2)再根據(jù)二值化圖像,設(shè)定合適的閾值T,對(duì)其進(jìn)行邊緣檢測(cè)。
(3)運(yùn)用Hough變換,將笛卡爾坐標(biāo)空間轉(zhuǎn)換成極坐標(biāo)空間(ρ,θ),找出若干峰值點(diǎn),檢測(cè)出圖像中的直線。
(4)由于在采集時(shí)圖像會(huì)受到光照、大氣紊流等自然因素的影響,當(dāng)一幅遙感圖像中的所有直線被檢測(cè)出來(lái)后,一條直線會(huì)被分割成若干個(gè)小段。為了復(fù)原這種直線,可以設(shè)定閾值T2,計(jì)算同一直線上相鄰兩條直線段的距離,如果這個(gè)值小于閾值T2,將兩道路段進(jìn)行連接,否則不作處理。
(5)檢測(cè)出各個(gè)直線段的起止點(diǎn)。
(6)在復(fù)原所有的直線段后,根據(jù)橋梁的特點(diǎn),設(shè)定大閾值T3,用來(lái)檢測(cè)出較長(zhǎng)的直線段(即橋體的其中一邊);并利用直線段端點(diǎn)坐標(biāo)值,計(jì)算所有有用直線段的斜率K。即:

(7)當(dāng)其中一條直線段的斜率與已經(jīng)檢測(cè)出來(lái)的直線段(橋體其中一邊)的斜率之間的誤差≤0.1%時(shí),即檢測(cè)出了橋體的另一邊,從而完成了實(shí)時(shí)檢測(cè)和識(shí)別橋梁。
2 實(shí)驗(yàn)
本文選用某河流上的某橋梁作為實(shí)驗(yàn)對(duì)象。兩種算法在相同條件下運(yùn)行,硬件環(huán)境:CPU為Pentium○R4,主頻為3.2 GHz,內(nèi)存為1 GB;軟件環(huán)境為Matlab 7.1版本,操作系統(tǒng)為中文Windows XP,掃描圖像像素為449×617。圖5(a)為運(yùn)用經(jīng)典Hough變換,在極坐標(biāo)空間下的峰值點(diǎn)檢測(cè)效果圖,圖5(b)為使用本文改進(jìn)算法下的峰值點(diǎn)檢測(cè)效果圖。圖6(a)為經(jīng)典Hough變換算法下的檢測(cè)結(jié)果,圖6(b)為本文改進(jìn)算法檢測(cè)的結(jié)果,圖6的閾值T2為35像素,大閾值T3為300像素。


從多次的實(shí)驗(yàn)結(jié)果可知,經(jīng)典Hough變換所檢測(cè)的結(jié)果正確率不高,且使用時(shí)間較長(zhǎng),不能完成實(shí)時(shí)檢測(cè)和識(shí)別,也不能確定所檢測(cè)出的直線是否為平行線。利用本文算法所檢測(cè)出的直線,經(jīng)過(guò)斜率計(jì)算,兩直線的斜率差小于0.1%,可以視為斜率相等,故能判定這兩條直線為平行線,而且正確率與所用時(shí)間都優(yōu)于經(jīng)典Hough變換,如表1所示。

本文基于斜率判斷的Hough變換算法不但在時(shí)間上要比經(jīng)典的Hough變換快,而且正確率要比經(jīng)典Hough變換高,對(duì)于一般實(shí)時(shí)性目標(biāo)的檢測(cè)和識(shí)別均能取得較高的精度控制。但本文的算法在計(jì)算和存儲(chǔ)空間上有很大的可壓縮性,所以還有很多方面需要改進(jìn),尤其是對(duì)3個(gè)閾值的選取上,對(duì)算法的效率及最后的結(jié)果都有重要的影響。
參考文獻(xiàn)
[1] GONZALEZ R C, WOODS R E, EDDINS S L. Digital image processing using MATLAB[M]. Beijing: Publishing House of Electronics Industry, 2005.
[2] 呂健剛,韋春桃.基于Hough變換的高分辨率遙感影像城市直線道路提取[J].遙感應(yīng)用,2009(3):15-16.
[3] FERNANDES L A F, OLIVEIRA M M. Real-time line detection through an improved Hough transform voting scheme[J]. Pattern Recognition, 2008,41:299-314.
[4] MOCHIZUKI Y, TORII A, IMIYA A. N-point Hough transform for line detection[J]. Communication. Image R, 2009,20:242-253.
