顏 廷 法
(煙臺職業(yè)學(xué)院 信息工程系,山東 煙臺 264670)
智能交通是當(dāng)今世界全球化、信息化發(fā)展的必然趨勢.GPS可以為智能交通提供服務(wù),但在小范圍的區(qū)域,如校園和小城鎮(zhèn),GPS有時(shí)不能提供有價(jià)值信息.然而,道路兩旁的建筑物可以提供有價(jià)值信息.如果把建筑物的形狀及其相應(yīng)位置信息保存在數(shù)據(jù)庫中,通過車載攝像頭獲取到含有道路兩旁特定建筑物的圖像,對圖像進(jìn)行處理并與數(shù)據(jù)庫中的圖像進(jìn)行匹配,如果圖像匹配成功,就可以獲取建筑物的位置信息.
很多建筑物識別的研究主要在基于內(nèi)容的圖像檢索(CBIR)領(lǐng)域,而不是對建筑物的本身結(jié)構(gòu)加以辨別.人造建筑物的結(jié)構(gòu)特征比自然物體的特征更有規(guī)則,包含人造物體的圖像也有類似規(guī)則可尋,比如直線或者特定模式等.知覺分組、直線群思想和尺度不變特征變換(SIFT)等方法都可以檢測圖像中的人造結(jié)構(gòu),該算法是通過SIFT特征方法查找圖像中的人造結(jié)構(gòu)痕跡.該算法首先通過檢測直線和消失點(diǎn)來對圖像中是否存在建筑物進(jìn)行預(yù)判,而不是對圖像序列中的每幅圖像直接提取SIFT特征,這將大大減少算法的計(jì)算量,保證算法具有實(shí)時(shí)高效性.
該算法是能夠生成一個(gè)能夠自動識別特定建筑物的程序,通過識別出的建筑物信息用于進(jìn)一步的其他操作,該算法可以通過以下幾步來實(shí)現(xiàn).
1)通過平滑技術(shù)消除圖像中的噪聲;
2)通過Canny算子對圖像進(jìn)行邊緣檢測;
3)利用霍夫變換技術(shù)配合設(shè)定閾值檢測圖像中的直線;
4)對檢測到的直線判斷是否有共同消失點(diǎn),若有一個(gè)或多個(gè)共同消失點(diǎn),則可以證明在圖像中極有可能存在一個(gè)人造的具有規(guī)則結(jié)構(gòu)的三維物體;
5)從可能含有特定建筑物的圖像中提取SIFT特征并與存儲在數(shù)據(jù)庫中的圖像進(jìn)行匹配,匹配成功的話就可以獲得相應(yīng)的位置信息.
實(shí)驗(yàn)結(jié)果表明,該算法能夠高效準(zhǔn)確的識別出圖像中存在的建筑物并取得相應(yīng)位置信息為智能交通服務(wù).
平滑能夠很好的消除一幅圖像的噪聲.大部分靜止圖像的壓縮是使用圖像中的某種像素塊平均值,當(dāng)一個(gè)壓縮圖像按一定比例被放大,就可以看到由于壓縮而產(chǎn)生的塊效應(yīng).因?yàn)樗鼈兛赡軙绊懙綀D像處理,特別是使用了一些含有高值的卷積掩碼的場合.在本文中,首先使用一個(gè)3*3的平均掩碼對圖像進(jìn)行平滑處理.
邊緣檢測是一種常見的圖像處理和計(jì)算機(jī)視覺方法.一個(gè)邊緣可以被定義為圖像中像素值發(fā)生突變的位置,邊緣檢測可以在圖像的一個(gè)或多個(gè)通道中進(jìn)行,有時(shí)候一幅圖像的亮度是邊緣檢測的唯一通道.同時(shí),邊緣檢測可以在幾個(gè)通道中同時(shí)進(jìn)行,由此產(chǎn)生的邊緣地圖將顯示存在于任何一個(gè)通道中的所有邊緣.
好的邊緣檢測對圖像處理是至關(guān)重要的,所有的處理和聚類都是在邊緣像素上執(zhí)行的.該算法使用Canny邊緣檢測器[1],它包含幾個(gè)額外步驟,非極大值抑制用來細(xì)化直線,滯后閾值用來消除低級別邊緣像素,一個(gè)3*3的Prewitt卷積模板用來定位邊緣,并計(jì)算在每個(gè)圖像中的邊緣方向.圖1是用Canny算法得到的試驗(yàn)結(jié)果:
圖1 Canny算法得到的試驗(yàn)結(jié)果
使用Canny邊緣檢測后,可以得到一副邊緣圖像,這幅邊緣圖像將用于檢測直線.通過霍夫變換[2]可以得到直線參數(shù),并進(jìn)一步判斷直線的數(shù)量,并根據(jù)此數(shù)量值進(jìn)一步確認(rèn)建筑物存在的可能性.
在x-y空間上位于同一條直線上的點(diǎn)在參數(shù)空間定義了曲線并且都相交于同一個(gè)點(diǎn).通過交點(diǎn)的坐標(biāo)就可以獲知直線在x-y空間上的參數(shù).所以,經(jīng)過計(jì)算就可以在參數(shù)空間上獲取一些交點(diǎn).如果圖像中有一條參數(shù)為(a,b)的直線,那么在參數(shù)空間中點(diǎn)(a,b)的周圍,應(yīng)該可以獲取很多的點(diǎn).根據(jù)常識就可以知道,參數(shù)空間中找到的交點(diǎn)應(yīng)該緊緊圍繞在點(diǎn)(a,b)的周圍,但不是完全相同的同一個(gè)點(diǎn).因?yàn)橐獜膮?shù)空間得到的點(diǎn)中找到確定的點(diǎn),所以要消除所發(fā)現(xiàn)點(diǎn)中的離群點(diǎn).該算法采用閾值法來達(dá)到此目的.
通過設(shè)置一個(gè)閾值T1,并計(jì)算在參數(shù)空間中的特定點(diǎn)的數(shù)量.對于一個(gè)參數(shù)空間中特定點(diǎn),如果累計(jì)數(shù)目超出了閾值,那么就可以采用這個(gè)參數(shù)作為一條直線的參數(shù).圖2是一些實(shí)驗(yàn)結(jié)果.
得到圖像中主要的直線后,下一步是檢測消失點(diǎn).當(dāng)像建筑物這樣的三維物體用一個(gè)二維圖像描述的時(shí)候,實(shí)際物體中的平行線在二維圖像中變現(xiàn)為直線相交于一個(gè)共同點(diǎn),只有當(dāng)拍攝角度與物體完全平行的時(shí)候這些平行直線才在二維圖像中仍然平行.如果能夠在圖像中檢測出一些特定的消失點(diǎn),就能很大程度上相信圖像中存在建筑物.
圖2 直線檢測的實(shí)驗(yàn)結(jié)果
根據(jù)已經(jīng)從圖像中找到的直線以及獲取的直線參數(shù),可以計(jì)算出消失點(diǎn)的坐標(biāo).前面步驟肯定檢測到一些有誤差的直線,因此,也得到了有誤差的消失點(diǎn)坐標(biāo).如果有真正的消失點(diǎn)存在,那么在該消失點(diǎn)附近區(qū)域應(yīng)該會存在一簇檢測到的點(diǎn)存在,盡管誤差直線將導(dǎo)致誤差消失點(diǎn).某個(gè)區(qū)域存在一簇檢測消失點(diǎn)的情況將證明此區(qū)域內(nèi)存在一個(gè)特定消失點(diǎn)[3].因此,該算法嘗試檢測在消失點(diǎn)空間是否存在區(qū)域內(nèi)的消失點(diǎn)聚簇.為達(dá)到此目的,該算法采用了以下四個(gè)步驟:
(1)將檢測到的所有直線,每兩條線計(jì)算出一個(gè)消失點(diǎn)的坐標(biāo);
(2)計(jì)算每兩個(gè)消失點(diǎn)之間的距離;
(3)設(shè)置閾值T2,針對每一個(gè)消失點(diǎn),計(jì)算其他消失點(diǎn)到此點(diǎn)的距離,統(tǒng)計(jì)距離小于T2的相鄰消失點(diǎn)的數(shù)量;
(4)設(shè)置閾值T3,選擇相鄰消失點(diǎn)數(shù)量超過T3的作為最終的消失點(diǎn).
首先使用以前得到的參數(shù)來計(jì)算每兩條線的相交點(diǎn),并且仍然在極坐標(biāo)空間.例如,兩條線是ρsin(α1-θ)=p1和ρsin(α2-θ)=p2,計(jì)算這兩條線交叉點(diǎn)的坐標(biāo).該公式為:
(1)
(2)
計(jì)算消失點(diǎn)的坐標(biāo)之前,首先觀察得到的直線.例如,圖2中可以發(fā)現(xiàn)一組線有相交于一點(diǎn)的趨勢,而在所有直線中,只有一兩條線非常明顯區(qū)別于其它的線,這種線毫無意義,并且使算法多了一些無謂的計(jì)算.因?yàn)檫@種直線也會與其它直線做交點(diǎn)的計(jì)算,從而會得到一些無用的交叉點(diǎn),該算法中稱這種線為噪聲線.為了消除這種線,算法采用了下面的方法:
由于θ的范圍是從0到π,可以把這個(gè)區(qū)間分為四個(gè)部分:0~π/4,π/4~π/2,π/2~3π/4, 3π/4~π.把檢測到的直線也按方向分到這四部分中,統(tǒng)計(jì)每一區(qū)間中直線的數(shù)量,求得每個(gè)區(qū)間所包含的直線數(shù)量與總的直線的百分比.設(shè)置閾值T4 =0.3,如果百分比小于T4,將刪除該區(qū)間內(nèi)的所有直線.圖3是測試的實(shí)驗(yàn)結(jié)果.
圖3 消除噪聲線后的圖像
從圖3中可以看到,使用這種方法可以有效地消除圖像中檢測到的噪聲線,從而進(jìn)一步避免毫無意義的計(jì)算.
接下來通過使用公式(1)和公式(2),計(jì)算得到在ρ-θ空間上交點(diǎn)的坐標(biāo).如表1所示:
表1 ρ-θ空間上交點(diǎn)的坐標(biāo)
有另一種情況需要注意,如果拍攝角度與建筑物本身是完全平行的,那么建筑物呈現(xiàn)在2-D圖像中的直線也將是平行的,因此,這些直線將不可能相交.由于在以前步驟中得到的線以極坐標(biāo)的形式表示,所以如果兩條線是平行的,θ值將是相同的.當(dāng)計(jì)算消失點(diǎn)時(shí),需要首先關(guān)注θ,如果它們是相同的,則不需要計(jì)算任何的交叉點(diǎn).統(tǒng)計(jì)得到平行線的數(shù)量,如果數(shù)量值超過特定的閾值T4,就可以確認(rèn)在圖像中有一個(gè)人造物體.
對于每一個(gè)交叉點(diǎn),統(tǒng)計(jì)離特定點(diǎn)(小于閾值T2=50)不遠(yuǎn)的點(diǎn)的數(shù)量,統(tǒng)計(jì)的結(jié)果如表2所示.
表2 每個(gè)點(diǎn)的鄰近點(diǎn)數(shù)量
在表2中可以看出,臨近點(diǎn)數(shù)量的最大值為9,這意味著在某個(gè)區(qū)域有一組交叉點(diǎn)(9個(gè))非常接近,可以把它作為算法結(jié)果中的一個(gè)交叉點(diǎn).
對于圖4的圖像該算法認(rèn)為沒有建筑物,圖像(a)、(b)、(c)能檢測到直線但沒有消失點(diǎn),圖像(d)、(e)存在消失點(diǎn)但小于閾值.
圖4 否定的圖像
最后一步是把極有可能包含一個(gè)建筑物的圖像與數(shù)據(jù)庫中的圖像進(jìn)行匹配[4].SIFT是一個(gè)完全成熟的算法,可以生成可信賴的特征點(diǎn)[5].使用SIFT特征把這幅圖像與已經(jīng)存于數(shù)據(jù)庫中的圖像進(jìn)行比較,如果匹配的話,就可以得到位置信息.
圖5是從圖像序列中抽取的圖像與數(shù)據(jù)庫存儲圖像比較匹配后的結(jié)果,可以看到兩個(gè)主要圖像的匹配特征點(diǎn).
圖5 圖像SIFT特征的提取與比較
該算法可以從圖像序列中剔除大部分的圖像,并能分辨出包含至少一個(gè)明顯建筑物的圖像.相對于對圖像序列中的每一個(gè)圖像計(jì)算SIFT特征,該算法在效率上有明顯的優(yōu)勢.算法仍然存在需要繼續(xù)完善的地方,比如對一些誤檢到的直線可能引發(fā)的混淆,像臺階所產(chǎn)生的直線,停在建筑物旁邊的機(jī)動車所產(chǎn)生的直線等.
[參考文獻(xiàn)]
[1]許宏科,秦嚴(yán)嚴(yán),陳會茹.一種基于改進(jìn)Canny的邊緣檢測算法[J].紅外技術(shù),2014(3):210-214.
[2]閆懷仁,楊慕升.基于改進(jìn)的Hough變換的直線提取算法[J].紅外技術(shù),2015(11):970-975.
[3]蔣欣蘭.基于消失點(diǎn)檢測的鐵路環(huán)境視頻自動拼接算法研究[J].計(jì)算機(jī)工程與應(yīng)用,2017(7):206-211.
[4]郭倩茜.圖像匹配的主要方法分析[J].科技創(chuàng)新與應(yīng)用,2016(20):81-82.
[5]向程諭,王冬麗,李建勛,周彥.基于改進(jìn)SIFT特征的深度圖像匹配[J].計(jì)算機(jī)應(yīng)用,2016(S2):135-138.