基于機(jī)器視覺的車道偏離預(yù)警系統(tǒng)的實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:目前高速公路上由于車道偏離而導(dǎo)致的交通事故造成了巨大的損失,從而使得車道偏離預(yù)警系統(tǒng)的研究成為了社會(huì)的一大熱點(diǎn)。本文基于DSP 計(jì)算和FPGA 計(jì)算,構(gòu)造出一套基于視覺的車道偏離預(yù)警系統(tǒng)。本文給出了系統(tǒng)的框架結(jié)構(gòu)以及硬件實(shí)現(xiàn)方式,并基于所提出的系統(tǒng)詳細(xì)研究了視覺系統(tǒng)中大容量數(shù)據(jù)的傳輸、存儲(chǔ)和處理等問題。最后,基于構(gòu)造的系統(tǒng),通過一系列典型的視覺處理算法和應(yīng)用于車道跑偏決策的軟件算法,驗(yàn)證了系統(tǒng)的可行性。
1、引言
汽車駕駛是涉及駕駛員、汽車、道路三方面因素的動(dòng)作行為。駕駛員通過眼睛等一系列生理器官感受道路信息,通過對(duì)道路信息的理解和判斷,及對(duì)汽車行駛狀況的跟蹤,做出一系列的駕駛決策。但是由于駕駛員長(zhǎng)時(shí)間駕駛、粗心大意等一系列因素及駕駛員對(duì)道路信息的感知和車輛狀況的了解存在一定的“盲區(qū)”,導(dǎo)致的交通事故越來越成為社會(huì)的一大主要安全隱患。本文從駕駛員、汽車、道路三方面入手,研究一套模擬人的駕駛行為來提高車輛行駛安全性的汽車主動(dòng)安全系統(tǒng),實(shí)現(xiàn)車道偏離預(yù)警等主動(dòng)安全技術(shù)。
在基于機(jī)器視覺的系統(tǒng)中,實(shí)時(shí)性一直是一個(gè)主要的問題,尤其是像車道偏離預(yù)警這樣的系統(tǒng)來說,要實(shí)現(xiàn)的算法更是覆蓋了從圖像預(yù)處理到高層視覺計(jì)算的整個(gè)視覺計(jì)算流程,既有底層的可高度并行實(shí)現(xiàn)的大數(shù)據(jù)量的卷積、灰度變換等規(guī)整算法,也包含有中層的特征提取等模式識(shí)別算法及高層的一些視覺處理方法,用以實(shí)現(xiàn)對(duì)道路的理解等。一直以來,嵌入式系統(tǒng)的通用性與效率一直是難以調(diào)和的一對(duì)矛盾[1],如何構(gòu)造一套較通用的視覺處理系統(tǒng),對(duì)于視覺各個(gè)層次的并行及串行算法,都具有較高的實(shí)現(xiàn)效率是本文要解決的一個(gè)問題,高速的DSP 處理芯片和大規(guī)??芍貥?gòu)芯片的出現(xiàn)為我們提供了一個(gè)很好的解決方案。
大規(guī)模的可重構(gòu)芯片,諸如 FPGA 等,內(nèi)部集成了大容量的基于查找表結(jié)構(gòu)的門電路系統(tǒng),非常適合構(gòu)造細(xì)粒度的SIMD 處理陣列或者流水線結(jié)構(gòu),而這對(duì)于如圖2 所示的典型的底層圖像處理算法[1],具有著天然的適應(yīng)性。TI 公司的C6000 系列的DSP 計(jì)算芯片,采用哈佛結(jié)構(gòu),內(nèi)部具有8 個(gè)處理單元,還集成了專用的硬件乘法器,適合于完成一些串行的視覺處理算法,對(duì)于高層的數(shù)據(jù)量較少的但運(yùn)算過程較復(fù)雜的道路理解等,具有較好的實(shí)現(xiàn)效果。
基于上面的分析,本文結(jié)合高速的 DSP 計(jì)算芯片和可重構(gòu)的FPGA 芯片構(gòu)造一套高速的嵌入式視覺處理系統(tǒng),F(xiàn)PGA 作為輔助邏輯控制和前端處理模塊,主要完成圖像的前期采集和一些類似直方圖統(tǒng)計(jì)、卷積等底層的高密度圖像處理工作,可在硬件結(jié)構(gòu)上靈活的配置,通過實(shí)現(xiàn)一系列的并行結(jié)構(gòu)或流水線結(jié)構(gòu)完成底層的算法,避免由DSP 完成這些細(xì)粒度的算法而造成資源的浪費(fèi)和時(shí)間上的損耗;DSP 作為主要的計(jì)算中心,完成高層的串行為主的視覺處理任務(wù),諸如道路理解和解釋、車道跑偏決策等,DSP 的高速處理能力能較好的完成這些串行度高的算法。系統(tǒng)的基本框圖如圖2 所示。[!--empirenews.page--]
2、系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
實(shí)現(xiàn)圖 2 的基于視覺的汽車主動(dòng)安全系統(tǒng),數(shù)據(jù)的存儲(chǔ)和傳輸是一個(gè)主要的問題,尤其是對(duì)于汽車主動(dòng)安全這樣的實(shí)時(shí)性要求非常高的應(yīng)用背景。如何在最短的時(shí)間內(nèi),由原始采集到的圖像數(shù)據(jù),經(jīng)過一系列的存儲(chǔ)器數(shù)據(jù)搬移及信號(hào)處理過程,獲得最終的對(duì)道路的理解判斷,并對(duì)車輛是否跑偏做出正確的決策,是本系統(tǒng)主要的實(shí)現(xiàn)目標(biāo)。本文將依據(jù)數(shù)據(jù)在系統(tǒng)中的“流動(dòng)”順序?qū)Ρ鞠到y(tǒng)進(jìn)行詳細(xì)的介紹。
2.1、數(shù)據(jù)采集模塊
在本系統(tǒng)中,圖像數(shù)據(jù)是主要的傳感器信號(hào),獲得高質(zhì)量的圖像數(shù)據(jù)對(duì)后期的處理和功能的實(shí)現(xiàn)具有較大的意義。但是對(duì)于實(shí)際的應(yīng)用環(huán)境,由于天氣、光照等因素的影響,甚至是一系列特殊情況的出現(xiàn),一般的圖像傳感器在各種條件下難以具有較好的魯棒性。為了較好的適應(yīng)各種道路和天氣狀況,保證駕駛的安全性,我們采用了適合道路使用的CMOS 數(shù)字?jǐn)z像頭芯片自主開發(fā)了視覺采集模塊,該攝像頭芯片通過159 位SPI 控制字可完全編程控制,較好的實(shí)現(xiàn)對(duì)曝光時(shí)間、增益和噪聲等的調(diào)節(jié)。同時(shí),該攝像頭芯片采用了一種多斜率的曝光模式輸出,在不同的曝光模式下,控制曝光的時(shí)間也是不一樣的,保證在光照過強(qiáng)或者光照條件非常弱的情況下,都可獲得較好的圖像。
對(duì)于攝像頭芯片的SPI 控制,本文為了自適應(yīng)的調(diào)整在不同背景下的工作模式,由DSP根據(jù)最后對(duì)圖像的理解和判斷的結(jié)果,給予FPGA 一定的通信信號(hào)完成對(duì)攝像頭芯片的頂層的系統(tǒng)級(jí)的控制,而底層的真正的SPI 控制字的修改和調(diào)整則由FPGA 來完成,這樣可避免SPI 的工作頻率和DSP 外部總線頻率的不一致而導(dǎo)致的DSP 工作效率的浪費(fèi),而FPGA來完成這樣的工作則比較容易。
2.2、數(shù)據(jù)傳輸、存儲(chǔ)模塊
在本系統(tǒng)中,從前端的圖像采集模塊,到最后的報(bào)警信號(hào)的輸出,數(shù)據(jù)是不停的在FPGA、SDRAM 及DSP 之間進(jìn)行傳輸和搬移,接下來主要討論如何在這三者之間進(jìn)行高速有效的搬移和處理,這也正是本文的主要模塊。系統(tǒng)中的數(shù)據(jù)流程主要有以下幾個(gè)方面:
Ⅰ、在 FPGA 中經(jīng)過預(yù)處理的圖像數(shù)據(jù),首先必須存儲(chǔ)到主存儲(chǔ)芯片SDRAM 中,這是后端高層處理的基礎(chǔ)。
?、?、DSP從SDRAM中讀取最新的圖像數(shù)據(jù)進(jìn)行處理,并將處理的中間結(jié)果存于SDRAM中,這樣的讀寫過程很可能是循環(huán)進(jìn)行的,SDRAM 的分塊存儲(chǔ)特性正適合這樣的性能要求。
?、?、為了系統(tǒng)調(diào)試的方便,很可能要求顯示中間處理的結(jié)果,因此我們?cè)?FPGA 上掛接了一塊顯示調(diào)試模塊,調(diào)試時(shí)FPGA 可從SDRAM 中讀取中間的處理結(jié)果進(jìn)行顯示。
?、簟⑦€有一種情況,某些情況下我們可能要求 DSP 和FPGA 之間直接進(jìn)行圖像數(shù)據(jù)的傳輸,這也是我們必須考慮的范疇。
綜合上面的種種可能情況,考慮我們采用的 DSP 芯片同時(shí)支持FIFO 和SDRAM 芯片的無縫連接,我們?cè)O(shè)計(jì)了圖3 的數(shù)據(jù)傳輸方案:
首先,前端的采集模塊輸出的圖像數(shù)據(jù)是 8 位的,而對(duì)于我們采用的SDRAM 存儲(chǔ)芯片和DSP 處理芯片,數(shù)據(jù)總線都是64 位的。為了不造成資源的浪費(fèi),在FPGA 對(duì)圖像進(jìn)行預(yù)處理的過程中,我們同時(shí)將8 位的圖像數(shù)據(jù)拼接成64 的數(shù)據(jù)輸出,這樣可充分利用系統(tǒng)的資源。
其次,在 FPGA 中經(jīng)過一系列并行預(yù)處理的圖像數(shù)據(jù),存儲(chǔ)于FPGA 內(nèi)部開辟的FIFO中。FPGA 給出握手信號(hào),通知DSP 可以開始由FIFO 向SDRAM 傳輸數(shù)據(jù),數(shù)據(jù)的傳輸過程則完全由DSP 通過EDMA 傳輸方式來控制完成。當(dāng)核心處理器DSP 完成當(dāng)前操作的情況下,再?gòu)腟DRAM 中讀入最新的數(shù)據(jù)進(jìn)行處理,這可充分利用DSP 芯片豐富的外設(shè)資源。
同時(shí),由圖 3 的數(shù)據(jù)流圖我們發(fā)現(xiàn)數(shù)據(jù)在由FPGA 向SDRAM 傳輸?shù)倪^程中,相對(duì)于DSP 來說,F(xiàn)PGA 中開辟的用來存儲(chǔ)數(shù)據(jù)的FIFO 模塊和外部主存儲(chǔ)器SDRAM 模塊是掛接于DSP 上的相同的地址總線和數(shù)據(jù)總線上的,在這種源設(shè)備和目的設(shè)備掛接于相同外部總線上的傳輸形式下,我們采用的DSP 芯片支持一種優(yōu)化的EDMA 傳輸模式-PDT 傳輸,它優(yōu)化了數(shù)據(jù)的傳輸過程,使得DSP 的EDMA 傳輸模式可在數(shù)據(jù)不經(jīng)過DSP 內(nèi)的緩存區(qū)的情況下,直接由源設(shè)備FIFO 傳輸?shù)侥康脑O(shè)備SDRAM 中,從而可在一個(gè)周期內(nèi)完成數(shù)據(jù)的傳輸。相比于傳統(tǒng)的傳輸模式,先由FPGA 傳輸?shù)紻SP 內(nèi)部的緩存區(qū),再由DSP 寫入到SDRAM 中,PDT 傳輸模式基本上可縮短一半的數(shù)據(jù)傳輸時(shí)間,對(duì)于像圖像這樣的大容量數(shù)據(jù)傳輸來說,是具有非常大的意義的。[!--empirenews.page--]
完成了前端預(yù)處理模塊到主存儲(chǔ)器 SDRAM 的數(shù)據(jù)搬移過程,接下來主要是后端的高速數(shù)據(jù)傳輸過程。DSP 與SDRAM 之間的數(shù)據(jù)傳輸可達(dá)到100MHz 以上的高速速率,尤其是DSP 支持的EDMA 傳輸方式,更是允許不在CPU 干涉的情況下,就可完成外部數(shù)據(jù)與DSP 內(nèi)部的Cache 之間的傳輸,這樣可提高CPU 工作的效率。另外,DSP 芯片內(nèi)部有兩級(jí)的緩存,第二級(jí)緩存L2 更是可達(dá)到1MB,因此我們考慮采用現(xiàn)在流行的ping-pong 傳輸方式,當(dāng)CPU 在處理緩存中的ping 或pong 內(nèi)部的數(shù)據(jù)時(shí),在可以預(yù)測(cè)剩余處理時(shí)間的前提下,我們可預(yù)先將接下來要處理的數(shù)據(jù)通過EDMA 方式傳輸?shù)綄?duì)應(yīng)的pong 或ping 存儲(chǔ)區(qū)中,這樣便將數(shù)據(jù)傳輸?shù)臅r(shí)間蘊(yùn)含在了處理過程中,節(jié)省了相應(yīng)的傳輸時(shí)間,提高了效率。
綜合了上面對(duì)整個(gè)數(shù)據(jù)傳輸流程的分析,我們可以得出如圖4 所示的數(shù)據(jù)搬移過程。由圖中可以看出,從Sensor 出來的數(shù)據(jù)到FPGA 中的預(yù)處理,與DSP 內(nèi)部的數(shù)據(jù)處理過程,在SDRAM 的緩存處理下,是可以以流水線的方式傳輸處理的,F(xiàn)PGA 作為前端預(yù)處理模塊,完成大容量數(shù)據(jù)的處理過程,對(duì)于系統(tǒng)效率的提高具有非常大的作用。
3、系統(tǒng)軟件算法
關(guān)于前端圖像預(yù)處理方法及車道偏離決策算法的介紹性文章比較多[2][3][4],在本文中就不做過多的描述,主要的實(shí)現(xiàn)流程如圖5所示。通過 [2]中的一些典型算法,我們驗(yàn)證了本文所設(shè)計(jì)的汽車主動(dòng)安全系統(tǒng)是完全滿足汽車駕駛這種應(yīng)用條件下的實(shí)時(shí)性要求的,而且該系統(tǒng)是具有較強(qiáng)的擴(kuò)展性的。
4、結(jié)論
本文詳細(xì)介紹了一套基于 DSP 計(jì)算和FPGA 邏輯計(jì)算的車道偏離預(yù)警系統(tǒng)的實(shí)現(xiàn)方案,主要解決了大容量圖像數(shù)據(jù)在系統(tǒng)中的高速傳輸和存儲(chǔ)、處理等。在設(shè)計(jì)的過程中,本文充分運(yùn)用了FPGA 的邏輯資源對(duì)底層視覺算法的適應(yīng)性及DSP 芯片的高速處理能力來滿足高層的串行度高的視覺算法。通過一系列的實(shí)驗(yàn),驗(yàn)證了該系統(tǒng)滿足汽車安全這種應(yīng)用背景下的高實(shí)時(shí)性要求。
本文創(chuàng)新點(diǎn):
?。?) 結(jié)合駕駛員、汽車與道路環(huán)境的關(guān)系,模擬人的駕駛行為來設(shè)計(jì)汽車主動(dòng)安全系統(tǒng),在系統(tǒng)設(shè)計(jì)的原理上更有現(xiàn)實(shí)意義;
?。?) 針對(duì)計(jì)算機(jī)視覺系統(tǒng)設(shè)計(jì)中對(duì)多個(gè)層次算法的適應(yīng)性,采用DSP 計(jì)算和FPGA 邏輯計(jì)算相結(jié)合的方式,滿足系統(tǒng)算法各個(gè)層次的要求;
?。?) 對(duì)計(jì)算機(jī)視覺系統(tǒng)中數(shù)據(jù)傳輸、存儲(chǔ)和處理的流程進(jìn)行了詳細(xì)的分析,采用優(yōu)化的EDMA 傳輸方式-PDT 來滿足系統(tǒng)實(shí)時(shí)性的要求;