林英杰,李東杰,梁光靜,郭健平
(華南師范大學(xué) 信息光電子科技學(xué)院,廣東 廣州 510000)
?
基于FPGA的快速車(chē)道偏離預(yù)警系統(tǒng)硬件實(shí)現(xiàn)
林英杰,李東杰,梁光靜,郭健平
(華南師范大學(xué) 信息光電子科技學(xué)院,廣東 廣州510000)
摘要針對(duì)現(xiàn)今采用PC機(jī)實(shí)現(xiàn)的車(chē)道偏離預(yù)警系統(tǒng)實(shí)時(shí)性低的問(wèn)題,介紹了一種以FPGA為核心的車(chē)道偏離預(yù)警系統(tǒng)的純硬件語(yǔ)言實(shí)現(xiàn)方法。整個(gè)系統(tǒng)由純硬件語(yǔ)言設(shè)計(jì),主要包含圖像采集模塊,中值濾波模塊,Sobel邊緣檢測(cè)模塊和Hough變換模塊。每個(gè)模塊均采用并行結(jié)構(gòu)同時(shí)系統(tǒng)以流水線方式運(yùn)行,充分利用了FPGA的并行處理優(yōu)勢(shì),顯著的提高了數(shù)據(jù)處理的速度。結(jié)果表明,系統(tǒng)邊緣檢測(cè)效果良好,能清晰地檢測(cè)出車(chē)道線;同時(shí)系統(tǒng)響應(yīng)速度滿足實(shí)際需求。
關(guān)鍵詞FPGA;并行處理;Sobel邊緣檢測(cè);Hough變換
車(chē)道偏離預(yù)警系統(tǒng)是解決汽車(chē)駕駛安全的重要手段,其研究的關(guān)鍵是如何快速和準(zhǔn)確檢測(cè)出車(chē)道偏離。傳統(tǒng)的車(chē)道線檢測(cè)都是基于PC機(jī),采用軟件實(shí)現(xiàn),算法復(fù)雜,速度慢,無(wú)法滿足實(shí)時(shí)性的要求。隨著近年來(lái)FPGA和DSP等可編程器件的快速發(fā)展,使得在小型芯片上也能得以實(shí)現(xiàn)車(chē)道偏離預(yù)警,如Pankiewicz研究小組用FPGA實(shí)現(xiàn)了車(chē)道線檢測(cè)。而Hsiao Pei-yung研究小組開(kāi)發(fā)出了用于車(chē)道線檢測(cè)的芯片[1-2]。
基于這些可編程器件的并行結(jié)構(gòu),以往需要一步一步運(yùn)算的復(fù)雜算法得以在一個(gè)時(shí)鐘內(nèi)完成多步運(yùn)算,大幅提高了算法的運(yùn)算速度。然而這些研究工作主要是將傳統(tǒng)的檢測(cè)算法流程的一部分或者幾個(gè)部分做成專(zhuān)用的硬件實(shí)現(xiàn)。即使是現(xiàn)有的將所有算法都集成到FPGA芯片的實(shí)現(xiàn)方案,也僅是部分算法采用純硬件實(shí)現(xiàn),仍有相當(dāng)大一部分算法是采用內(nèi)建Nios CPU實(shí)現(xiàn)的[3]如此,雖在一定程度上提升了算法的運(yùn)算速度,但仍存在軟件實(shí)現(xiàn)部分,算法運(yùn)算速度慢的問(wèn)題,還存在提升的空間。
本文提出一種完全由硬件語(yǔ)言設(shè)計(jì)的車(chē)道偏離系統(tǒng),將所有模塊均整合到FPGA內(nèi)部,所有模塊由硬件實(shí)現(xiàn)。系統(tǒng)采用OV7670攝像頭進(jìn)行圖像數(shù)據(jù)的采集;采用Altera公司的CycloneⅣ作為整個(gè)系統(tǒng)的主控芯片,實(shí)現(xiàn)圖像數(shù)據(jù)的預(yù)處理及車(chē)輛偏離判別。系統(tǒng)的流水線工作方式和模塊的并行數(shù)據(jù)處理結(jié)構(gòu)使得系統(tǒng)在理論上得以在一個(gè)時(shí)鐘內(nèi)完成傳統(tǒng)設(shè)計(jì)方法中需要幾十甚至上百個(gè)時(shí)鐘才能完成的運(yùn)算量。最終,系統(tǒng)實(shí)現(xiàn)了車(chē)道線的快速判別,滿足實(shí)際應(yīng)用中的實(shí)時(shí)性要求。
1總體設(shè)計(jì)方案
本設(shè)計(jì)將系統(tǒng)的數(shù)據(jù)處理流程分為3個(gè)階段:圖像采集及預(yù)處理、車(chē)道線信息提取和偏離程度判別。如圖1所示。
圖1 系統(tǒng)理論框圖
(1)圖像采集及預(yù)處理。通過(guò)COMS攝像頭采集車(chē)道圖像數(shù)據(jù),對(duì)采集到的圖像進(jìn)行有效面積的截取和中值濾波以有效消除圖像數(shù)據(jù)的噪聲;
(2)車(chē)道線信息提取。利用Sobel邊緣檢測(cè)算法檢測(cè)出圖像中的車(chē)道線,并將車(chē)道線坐標(biāo)提供給Hough變換模塊完成車(chē)道線的極坐標(biāo)參數(shù)計(jì)算;
(3)偏離程度判別。根據(jù)檢測(cè)出的車(chē)道標(biāo)志線信息進(jìn)行車(chē)道偏離程度判別,當(dāng)超過(guò)設(shè)定閾值時(shí),發(fā)出聲光提醒。
2系統(tǒng)的硬件實(shí)現(xiàn)
基于FPGA的車(chē)道偏離檢測(cè)系統(tǒng)的硬件組成如圖2所示。
圖2 系統(tǒng)的硬件實(shí)現(xiàn)框圖
系統(tǒng)利用OV7670攝像頭采集實(shí)時(shí)路況數(shù)據(jù),并通過(guò)FPGA芯片內(nèi)部的圖像采集模塊和SDRAM控制器將圖像數(shù)據(jù)轉(zhuǎn)存至片外SDRAM中。為同步異步時(shí)鐘域,實(shí)現(xiàn)數(shù)據(jù)的不間斷流水線處理,片外SDRAM采用乒乓操作。當(dāng)SDRAM存滿一幀圖像后,FPGA芯片再讀取數(shù)據(jù),圖像數(shù)據(jù)將不間斷的經(jīng)過(guò)中值濾波模塊和邊緣檢測(cè)模塊[4],分別實(shí)現(xiàn)圖像數(shù)據(jù)的噪聲濾除和邊緣檢測(cè)。經(jīng)處理的數(shù)據(jù)一方面送至顯示器進(jìn)行顯示作為人機(jī)接口界面;另一方面作為Hough變換模塊的輸入數(shù)據(jù),計(jì)算出車(chē)道線極坐標(biāo)參數(shù)并作出判別。
2.1Sobel邊緣檢測(cè)模塊
Sobel算法是數(shù)字圖像處理中的最常用的算法之一,其基本原理是計(jì)算圖像中灰度值的梯度來(lái)求出圖像的邊緣[5-6]。系統(tǒng)將梯度計(jì)算中的卷積分解為乘法和加法運(yùn)算,利用FPGA中的乘加器實(shí)現(xiàn)Sobel邊緣檢測(cè)。Sobel邊緣檢測(cè)算法的原理如圖3所示。
圖3 Sobel邊緣檢測(cè)原理圖
邊緣檢測(cè)模塊設(shè)計(jì)的關(guān)鍵就在于原理圖中水平梯度與垂直梯度的實(shí)現(xiàn)。由于IP核經(jīng)開(kāi)發(fā)人員多次調(diào)試和優(yōu)化,具有占用資源少和穩(wěn)定的特點(diǎn),本文調(diào)用了多個(gè)乘加器IP核實(shí)現(xiàn)了邊緣檢測(cè)的梯度運(yùn)算。梯度運(yùn)算的結(jié)構(gòu)原理圖如圖4所示。
圖4 Sobel邊緣梯度運(yùn)算結(jié)構(gòu)原理圖
圖4為邊緣檢測(cè)模塊的梯度運(yùn)算模塊,由一個(gè)移位寄存器、3個(gè)乘加器組成,3個(gè)乘加模塊的值經(jīng)過(guò)相加和取絕對(duì)值即可得到圖像梯度值。移位寄存器用于生成3×3窗口,乘加器用于實(shí)現(xiàn)邊緣檢測(cè)模板的卷積。數(shù)據(jù)經(jīng)過(guò)此模塊后即可完成梯度運(yùn)算。
2.2Hough變換模塊
Hough變換用于檢查圖像中的車(chē)道線信息[7],是本系統(tǒng)的核心模塊之一。由于Hough變換算法中包含大量的三角函數(shù)運(yùn)算、乘加運(yùn)算和排序求局部最大值的運(yùn)算,需要占用大量的資源和時(shí)鐘[8]。所以Hough在PC機(jī)上的工作效率較低。而利用FPGA的并行處理能力和流水線結(jié)構(gòu)則有可能開(kāi)發(fā)出運(yùn)算速度較高的Hough變換算法[9-11]。為充分利用FPGA的優(yōu)勢(shì),實(shí)現(xiàn)Hough變換的過(guò)程中對(duì)其進(jìn)行了兩方面改進(jìn):(1)空間并行化,將映射空間參數(shù)θ的取值范圍平均分成n個(gè)子集;(2)時(shí)間并行化,即計(jì)算參數(shù)ρ的模塊內(nèi)部的子模塊采用同一時(shí)鐘,以流水線方式工作。
2.2.1空間并行結(jié)構(gòu)
為充分利用FPGA的并行優(yōu)勢(shì),本系統(tǒng)將空間參數(shù)θ取值范圍(-90°,90°)平均分成n份,每個(gè)運(yùn)算模塊進(jìn)行ρ=xcosθ+ysinθ運(yùn)算時(shí),只需運(yùn)算對(duì)應(yīng)取值范圍內(nèi)θ值即可。由于對(duì)每個(gè)ρ運(yùn)算模塊來(lái)說(shuō),θ取值范圍變小了,每個(gè)模塊的運(yùn)算時(shí)間也就相應(yīng)縮短。此時(shí)由于各模塊是并行執(zhí)行的,這樣各個(gè)模塊就能同時(shí)得到在各θ子集內(nèi)的局部最大值。最后所有ρ運(yùn)算模塊在對(duì)應(yīng)θ取值范圍內(nèi)所運(yùn)算得到的局部極大值均可能是圖像空間的車(chē)道線。此方法是利用空間換取時(shí)間,即本來(lái)應(yīng)由一個(gè)模塊完成的運(yùn)算量,均分給n個(gè)相同的模塊,每個(gè)模塊只需完成1/n的運(yùn)算量。如此,所要消耗的FPGA內(nèi)部資源變?yōu)樵瓉?lái)的n倍,但計(jì)算所需的時(shí)間卻變?yōu)樵瓉?lái)的1/n。具體的并行結(jié)構(gòu)如圖5所示。
圖5 改良Hough變換的并行結(jié)構(gòu)
2.2.2時(shí)間并行結(jié)構(gòu)
在計(jì)算ρ=xcosθ+ysinθ的過(guò)程中包括了大量的三角函數(shù)運(yùn)算和乘加運(yùn)算,如此每計(jì)算一個(gè)ρ都將需要消耗多個(gè)時(shí)鐘周期,從而造成Hough變換的效率低下。為提高運(yùn)算速度,本設(shè)計(jì)采用空間并行結(jié)構(gòu),即流水線方式實(shí)現(xiàn)計(jì)算ρ的運(yùn)算模塊。流水線結(jié)構(gòu)示意圖如圖6所示。
圖6 流水線結(jié)構(gòu)圖
每個(gè)流水線結(jié)構(gòu)單元實(shí)現(xiàn)ρ運(yùn)算的其中一個(gè)步驟,同時(shí)每個(gè)結(jié)構(gòu)單元采用同一時(shí)鐘實(shí)現(xiàn)并行工作。通過(guò)流水線結(jié)構(gòu)使得計(jì)算在一個(gè)時(shí)鐘周期內(nèi)完成,具體的原理如圖7所示。
圖7 參數(shù)ρ計(jì)算原理圖
在原理圖中輸入的是特征點(diǎn)的x坐標(biāo)和y坐標(biāo)以及參數(shù)θ,sinθ和cosθ由Cordic模塊進(jìn)行計(jì)算,圖中每一個(gè)模塊分別實(shí)現(xiàn)了ρ運(yùn)算中的一個(gè)步驟,而這些模塊又采用同一個(gè)時(shí)鐘,從而在一個(gè)時(shí)鐘內(nèi)計(jì)算出ρ。采用上述空間和時(shí)間并行結(jié)構(gòu)設(shè)計(jì)的Hough變換模塊大幅提高了此算法的運(yùn)算速度,從而提升了系統(tǒng)整體的運(yùn)算速度。
3FPGA實(shí)現(xiàn)及實(shí)驗(yàn)結(jié)果
FPGA采用Altera公司的Cyclone Ⅳ EP4CE10,整個(gè)系統(tǒng)所消耗的資源如表1所示。
表1 FPGA資源消耗表
為了對(duì)比系統(tǒng)的圖像預(yù)處理效果,對(duì)同一圖片先后通過(guò)Matlab處理和系統(tǒng)實(shí)際處理的效果圖進(jìn)行了對(duì)比,如圖8所示??梢钥闯?系統(tǒng)能準(zhǔn)確地識(shí)別并提取出車(chē)道線,為Hough變換模塊提供有效的數(shù)據(jù)。
圖8 圖像預(yù)處理效果對(duì)比圖
表2是系統(tǒng)各模塊的時(shí)間開(kāi)銷(xiāo)表。由于系統(tǒng)采用流水線結(jié)構(gòu),各模塊同時(shí)工作,因此系統(tǒng)的等效時(shí)間開(kāi)銷(xiāo)為20 ms,幀率達(dá)到50 fip·s-1。表3列出了傳統(tǒng)設(shè)計(jì)與本文設(shè)計(jì)的對(duì)比,由表可見(jiàn),本文提出的純硬件語(yǔ)言實(shí)現(xiàn)方法能顯著的提高系統(tǒng)運(yùn)算速度,具備良好的實(shí)時(shí)性。
表2 系統(tǒng)各模塊時(shí)間開(kāi)銷(xiāo)表
表3 系統(tǒng)幀率對(duì)比
4結(jié)束語(yǔ)
為充分利用FPGA的并行結(jié)構(gòu),盡可能的提高系統(tǒng)運(yùn)行速度,本系統(tǒng)完全摒棄軟件實(shí)現(xiàn)方法,所有算法采用硬件方式實(shí)現(xiàn)。同時(shí)本系統(tǒng)對(duì)Hough變換算法進(jìn)行了改進(jìn),引入了空間并行化和時(shí)間并行化的實(shí)現(xiàn)方案,因此系統(tǒng)與傳統(tǒng)方案相比具有較高的實(shí)時(shí)性。經(jīng)實(shí)際檢測(cè),本系統(tǒng)反應(yīng)速度較傳統(tǒng)系統(tǒng)提高了70%,同時(shí)由于所有模塊都集成到FPGA芯片內(nèi)部,本系統(tǒng)具有抗干擾能力強(qiáng)、穩(wěn)定性好、外圍電路簡(jiǎn)單、體積小等特點(diǎn)。
參考文獻(xiàn)
[1]李元金,張萬(wàn)成,吳南健.一種基于并行處理器的快速車(chē)道線檢測(cè)系統(tǒng)及FPGA實(shí)現(xiàn)[J].電子與信息學(xué)報(bào),2010,32(12):2901-2903.
[2]顧柏園,王榮本,余天洪,等.基于視覺(jué)的前方車(chē)輛探測(cè)技術(shù)研究方法綜述[J].公路交通科技,2005,22(10):114-119.
[3]鄭存芳,史洪瑋,劉利暉.基于FPGA的車(chē)道偏離預(yù)警系統(tǒng)的設(shè)計(jì)[J].電子技術(shù),2012(8):67-69.
[4]胡越黎,計(jì)慧杰,吳頻,等.圖像的中值濾波算法及其FPGA實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,2008,16(11):1672-1675.
[5]馮輝宗,陳葉,徐洋.基于FPGA的實(shí)時(shí)圖像采集與Sobel邊緣檢測(cè)[J].傳感器與微系統(tǒng),2011,30(6):116-118.
[6]官鑫,王黎,高曉蓉,等.圖像邊緣檢測(cè)Sobel算法的FPGA仿真與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2009(8):109-111.
[7]徐友春,王榮本,李克強(qiáng),等.一種基于直線模型的道路識(shí)別算法研究[J].中國(guó)圖象圖形學(xué)報(bào),2004(7):94-100.
[8]王榮本,余天洪,顧柏園,等.基于邊界的車(chē)道標(biāo)識(shí)線識(shí)別和跟蹤方法研究[J].計(jì)算機(jī)工程,2006,32(18):195-196,239.
[9]郭磊,王建強(qiáng),李克強(qiáng).存在車(chē)輛干擾的車(chē)道線識(shí)別[J].汽車(chē)工程,2007,29(5):372-376,400.
[10]田炳香,鄭榜貴,吳晴.高速公路車(chē)道線檢測(cè)與跟蹤算法研究[J].現(xiàn)代電子技術(shù),2008(9):180-183.
[11]Huang Peiyung,Yeh Chunwei,Huang Shihshinh.A portable vision-based real-time lane departure warning system based on embedded calculating technique[C].Basel,Australia:Vehicular Technology Conference,2006.
Verilog HDL Implementation of A Lane Departure Warning System Based on FPGA
LIN Yingjie,LI Dongjie,LIANG Guangjing,GUO Jianping
(School of Information and Optoelectronic Science and Engineering,South China Normal University,Guangzhou 510000,China)
AbstractIn order to,a system based on FPGA is proposed for improving the speed of a rapid lane departure warning system based on PC.The whole system consists of several modules including the median filtering module,the Sobel edge detection module,and the Hough transform module.Each module is achieved by using Verilog HDL Language and designed in the way of parallel structure so as to make full use of the super power in parallel processing of the FPGA.The system is demonstrated to be fast enough to detect the lanes departure and applicable in daily life.
KeywordsFPGA;parallel processing;Sobel;Hough transform
doi:10.16180/j.cnki.issn1007-7820.2016.05.036
收稿日期:2015-08-03
基金項(xiàng)目:廣東省光電信息實(shí)驗(yàn)教學(xué)示范中心建設(shè)項(xiàng)目(C10554);廣東省質(zhì)量工程戰(zhàn)略新興產(chǎn)業(yè)特色基金資助項(xiàng)目(C1085021)
作者簡(jiǎn)介:林英杰(1994—),男,本科。研究方向:電子通信。
中圖分類(lèi)號(hào)TN432
文獻(xiàn)標(biāo)識(shí)碼A
文章編號(hào)1007-7820(2016)05-135-04