趙佳怡,彭武星,宋 敏,盧 仕
(湖北大學(xué) 物理與電子科學(xué)學(xué)院,湖北 武漢 430061)
中國官方統(tǒng)計(jì)報告,每年因道路交通死亡的人數(shù)超過10萬,道路傷害數(shù)量達(dá)50萬,每5分鐘約有1人死亡,每1分鐘就會有1人因?yàn)榻煌ㄊ鹿识鴤麣垺T斐山煌ㄊ鹿实母驹蛴?個,一方面是駕駛?cè)擞捎谛睦砘蛘呱矸矫娴脑颍瑳]有正確觀察和判斷外界事物而造成精力分散、反應(yīng)遲鈍,表現(xiàn)為觀望不周、措施不及時或者不當(dāng)、未判斷清楚就盲目通行;另一方面是駕駛?cè)瞬话唇煌ǚㄒ?guī)和其他交通安全規(guī)定行車或者走路,致使交通事故發(fā)生。
針對以上交通事故產(chǎn)生的原因,文中設(shè)計(jì)的駕駛輔助系統(tǒng)能識別道路上的交通指示牌,為用戶提供正確的路況信息(路況包括停車點(diǎn)、更換道路、紅綠燈情況等),幫助用戶做出正確決定,降低交通事故發(fā)生率。同時,系統(tǒng)輸出形式分為圖像和語音兩種,既可以為不方便接收聲音的用戶提供圖像形式的實(shí)時路況,也可以為獨(dú)自駕駛車輛的用戶提供語音播報形式的實(shí)時路況,從而使用戶集中注意力。文中構(gòu)造的基于駕駛員駕駛行為習(xí)慣的主動式駕駛輔助人機(jī)交互系統(tǒng)極大地增強(qiáng)了用戶體驗(yàn),擴(kuò)大了該系統(tǒng)的應(yīng)用范圍。
系統(tǒng)框架如圖1(a)所示,系統(tǒng)由OV5640攝像頭、VGA顯示器、數(shù)據(jù)處理模塊、驅(qū)動模塊組成。圖1(b)為系統(tǒng)實(shí)物,F(xiàn)PGA芯片為主控部分,OV5640攝像頭接收外部圖像信號,F(xiàn)PGA芯片存儲圖像信號,并通過圖像處理模塊將信號進(jìn)行優(yōu)化,再通過VGA顯示模塊將優(yōu)化后的圖像呈現(xiàn)在VGA顯示屏上,獲取的有用信號則通過特征提取模塊、模板匹配模塊后輸出,隨后傳遞給驅(qū)動模塊。
圖1 系統(tǒng)框架設(shè)計(jì)
系統(tǒng)功能的總體設(shè)計(jì)流程如圖2所示。將從SDRAM中讀取的數(shù)據(jù)傳遞給UART串口模塊,進(jìn)而驅(qū)動APP;數(shù)據(jù)處理模塊對攝像頭采集的數(shù)據(jù)做進(jìn)一步處理,其輸出的數(shù)據(jù)能夠直接驅(qū)動直流電機(jī)模塊和語音播報模塊。
圖2 系統(tǒng)功能設(shè)計(jì)流程
2.2.1 圖像數(shù)據(jù)的采集
系統(tǒng)將攝像頭寄存器配置分為2個模塊,其中一個模塊為攝像頭內(nèi)部寄存器地址的查找表,另一個模塊為IC總線控制器。通過IC將指令輸入攝像頭,并對攝像頭的工作模式以及各參數(shù)進(jìn)行配置。當(dāng)攝像頭寄存器全部配置完成后,先等待10幀數(shù)據(jù),待寄存器配置生效后再開始采集數(shù)據(jù),并將攝像頭的8位輸出數(shù)據(jù)轉(zhuǎn)換成16位RGB 565格式的圖像數(shù)據(jù)。SDRAM的讀寫模塊和SDRAM的控制模塊可以將圖像數(shù)據(jù)進(jìn)行不失真存儲。
2.2.2 圖像處理
圖3 圖像處理
通過灰度化處理模塊后,圖像數(shù)據(jù)由原來的24位轉(zhuǎn)化為8位灰度數(shù)據(jù),其中交通標(biāo)識藍(lán)底的RGB 888值為{6,0,134},對應(yīng)的灰度值為17;紅綠燈黑底的RGB值為{0,0,0},對應(yīng)灰度值為0;交通標(biāo)識的RGB 888值為{255,255,255},對應(yīng)灰度值為255;紅綠燈中綠燈的RGB 888值為{0,255,0},對應(yīng)的灰度值為150。由最佳閾值公式算出適合交通標(biāo)識和紅綠燈進(jìn)行二值化處理的最佳閾值為90,所以當(dāng)像素點(diǎn)的灰度值大于90時,將灰度數(shù)據(jù)賦為0,該像素點(diǎn)視為黑色;當(dāng)像素點(diǎn)的灰度值小于90時,將灰度值賦為255,視為白色。因?yàn)榧t綠燈中的紅燈灰化后的值有時可能大于90,所以需要多添加一個判斷語句,當(dāng)滿足上一個條件時,對RGB 888中的green進(jìn)行判斷,當(dāng)green大于120時,將灰度值賦0,視為黑色;當(dāng)green小于120時,將灰度值賦為255,視為白色。通過此全局閾值,可以很好地屏蔽交通標(biāo)識和紅綠燈的背景。圖3(d)為二值化處理后的圖像。
從二值化后的圖像中不難看出,圖像存在椒鹽噪聲,系統(tǒng)利用中值濾波去除椒鹽噪聲。圖3(e)為中值濾波后的圖像,噪聲含量大大減少。圖4為模塊中值的計(jì)算方法,所謂中值濾波,即對以該像素點(diǎn)為中心的3×3矩陣進(jìn)行排序,用排序中值取代中心點(diǎn)像素值。同時為了簡化模塊在讀取數(shù)據(jù)時對RAM地址的計(jì)算,并充分利用FPGA的并行特性對圖像數(shù)據(jù)進(jìn)行順序讀取,需逐行將順序讀取的數(shù)據(jù)轉(zhuǎn)化成3行的并行數(shù)據(jù)進(jìn)行處理。
圖4 移位寄存器工作原理
系統(tǒng)采用投影法實(shí)現(xiàn)對交通標(biāo)識及紅綠燈的定位,因?yàn)榻煌?biāo)識及紅綠燈是放在黑底背景的PPT中,所以交通標(biāo)識及紅綠燈周圍環(huán)境比較單一,利用投影法可以很好地確定交通標(biāo)識及紅綠燈的具體區(qū)域。圖5為定位后的圖像,當(dāng)交通標(biāo)識及紅綠燈出現(xiàn)在藍(lán)色框區(qū)域時,綠色框就能動態(tài)確定交通標(biāo)識及紅綠燈的位置。藍(lán)色框?yàn)樗惴▍^(qū)域,當(dāng)交通標(biāo)識和紅綠燈出現(xiàn)在此區(qū)域時,綠色框會動態(tài)將交通標(biāo)識和紅綠燈的位置框住,紅色框會動態(tài)將交通標(biāo)識和綠燈的位置框住。
圖5 圖像定位后的照片展示
定位后,可以確定交通標(biāo)識及紅綠燈的具體位置,在確定的交通標(biāo)識區(qū)域進(jìn)行水平投影和垂直投影,進(jìn)而將交通標(biāo)識及紅綠燈等標(biāo)識分割出來,然后通過特征識別算法進(jìn)行具體計(jì)算。識別算法設(shè)計(jì)流程如圖6所示。
圖6 識別算法設(shè)計(jì)流程
以數(shù)字識別為例,具體算法如下:
(1)選取直線,提取特征值。如圖7(a)所示,在數(shù)字行寬的1/3處、2/3處,以及數(shù)字列寬的1/2處,通過選取數(shù)字與行1/3劃線的前沿交點(diǎn)、數(shù)字與行2/3劃線的后沿交點(diǎn),以及數(shù)字與列1/2處的后沿交點(diǎn)的位置和個數(shù)來識別數(shù)字。
圖7 圖像識別
(2)計(jì)算相似度。比較特征數(shù)據(jù)與模板數(shù)組各點(diǎn)的數(shù)據(jù)值,并設(shè)置閾值,當(dāng)兩組數(shù)據(jù)某點(diǎn)數(shù)據(jù)絕對值的差小于該閾值時,相似度加1。
一部分投標(biāo)人在進(jìn)行報價投標(biāo)時,并未按照填報要求對裝配式建筑在分項(xiàng)分布的各個項(xiàng)目中所實(shí)際消耗的機(jī)械設(shè)備材料、分?jǐn)偟恼叟f費(fèi)以及人工費(fèi)等數(shù)據(jù)進(jìn)行準(zhǔn)確的計(jì)量。此外,一些PC構(gòu)件的加工生產(chǎn)單位通過加速折舊的辦法將其生產(chǎn)基地投資等長期費(fèi)用分?jǐn)偟搅藰?gòu)件的成本費(fèi)用中,造成了PC構(gòu)件成本中包括了過高的攤銷和折舊費(fèi)用,而投標(biāo)人的虛高報價對于工程項(xiàng)目的成本控制會產(chǎn)生不利的影響。
(3)獲得最大相似度模板。設(shè)置多分支選擇語句,取相似度最高的模板即為輸出結(jié)果。
2.2.3 圖像數(shù)據(jù)輸出
如圖8所示,首先通過VGA驅(qū)動程序?qū)z像頭采集的數(shù)據(jù)從SDRAM中實(shí)時讀取出來,并利用SDRAM 的乒乓操作實(shí)現(xiàn)對數(shù)據(jù)的實(shí)時采集和讀取。由于寫SDRAM的速度和讀SDRAM的速度不一致,可能會出現(xiàn)兩幀重疊現(xiàn)象。為了達(dá)到顯示的實(shí)時性和同步性,利用SDRAM里的兩片bank進(jìn)行乒乓操作。
圖8 乒乓操作原理
2.3.1 車輪驅(qū)動設(shè)計(jì)
小車的4個車輪,同側(cè)2個采用直流電機(jī)驅(qū)動,該直流電機(jī)由L298N驅(qū)動,一個L298N可以驅(qū)動2個直流電機(jī),但為了增強(qiáng)控制的靈活性,文中選擇使用2個L298N模塊對兩側(cè)的直流電機(jī)分別進(jìn)行驅(qū)動。L298N具有4個端口,通過對應(yīng)兩端口的電位差驅(qū)動直流電機(jī)。
2.3.2 語音播報模塊設(shè)計(jì)
系統(tǒng)使用的語音模塊為YS-M3,在給模塊通電之前先將A10接地,之后可切換為編碼模式,再通過對A1~A5的編碼,使其播放正確的語音。文中在進(jìn)行語音播報模塊設(shè)計(jì)時,首先在TF卡中下載并保存可能會出現(xiàn)的交通標(biāo)識、紅綠燈和數(shù)字對應(yīng)的語音播報內(nèi)容。當(dāng)攝像頭識別到某個圖像后,將相應(yīng)的處理信號輸出給語音模塊,語音模塊通過與已經(jīng)存儲的播報內(nèi)容進(jìn)行對比,進(jìn)而播報與該圖像對應(yīng)的內(nèi)容。
2.3.3 APP頁面顯示標(biāo)識功能實(shí)現(xiàn)
如圖9所示,文中設(shè)計(jì)的APP頁面能夠呈現(xiàn)出與識別結(jié)果對應(yīng)的圖像。FPGA開發(fā)板中的TX通過USB串口傳導(dǎo)相應(yīng)數(shù)據(jù)到電腦上,再使用Python打開相應(yīng)串口,將其數(shù)據(jù)編寫入腳本文件,最后利用MATLAB打開腳本文件,讀取相應(yīng)數(shù)據(jù)。
圖9 APP頁面效果
Python的具體設(shè)計(jì)流程如圖10所示。利用Python作數(shù)據(jù)中轉(zhuǎn)站,先利用串口調(diào)試助手檢驗(yàn)串口發(fā)送模塊(TX)的數(shù)據(jù)是否正確,再利用Python打開相應(yīng)的com4,以相同的波特率(9 600)接收。為避免出錯,直接利用字符分割進(jìn)行數(shù)據(jù)傳遞,將分割出來的第一個字符存進(jìn)腳本文件,并根據(jù)TX傳來的數(shù)據(jù)不斷刷新腳本文件。這里要注意的是,因?yàn)樽筠D(zhuǎn)的字節(jié)取第一位后容易出錯,所以添加了一個判斷語句,當(dāng)左轉(zhuǎn)的字符為xab時,將其字符改為b,當(dāng)不滿足這個條件時,屏蔽xa。
圖10 Python代碼設(shè)計(jì)流程
MATLAB的具體設(shè)計(jì)流程如圖11所示,通過MATLAB生成一個簡易的APP頁面,在其中調(diào)用Python寫入數(shù)據(jù)的腳本文件,利用多分支選擇語句進(jìn)行相應(yīng)結(jié)果匹配。
圖11 MATLBA代碼設(shè)計(jì)流程
系統(tǒng)硬件電路如圖12所示。系統(tǒng)硬件電路主要由OV5640攝像頭、數(shù)據(jù)傳導(dǎo)模塊、開關(guān)模塊、L298N電機(jī)模塊和YS-M3語音模塊組成。
圖12 系統(tǒng)硬件電路
在10組不同的光照強(qiáng)度下(100~8 200 Lux,每組遞增900 Lux),將代碼燒入FPGA開發(fā)板中,連接并安放好硬件設(shè)備,對三種交通標(biāo)識的識別效果依次進(jìn)行檢驗(yàn),測試流程如圖13所示。
圖13 系統(tǒng)功能測試流程
(1)將FPGA開發(fā)板的開關(guān)1、2撥至高低電平01,進(jìn)行數(shù)字識別,所識別數(shù)字照片分別為綠燈下的數(shù)字8、6、12,以及紅燈下的數(shù)字9。當(dāng)4張數(shù)字照片識別完成后,依次觀察小車車輪、語音播報、APP頁面,判斷識別第一類路標(biāo)的結(jié)果是否正確。
(2)將開關(guān)1、2撥至高低電平10,進(jìn)行紅綠燈交通標(biāo)識識別,所識別紅綠燈照片依次為左轉(zhuǎn)綠燈亮、直行綠燈亮、右轉(zhuǎn)綠燈亮。當(dāng)3張紅綠燈照片識別完成后,觀察小車轉(zhuǎn)向、語音播報、APP頁面,判斷識別第二類路標(biāo)的結(jié)果是否正確。
(3)將開關(guān)1、2撥至高電平11,進(jìn)行特殊交通標(biāo)識識別,路標(biāo)照片分別為允許掉頭、靠左行駛、前方向右行駛,當(dāng)3張?zhí)厥饨煌?biāo)識照片識別完成后,觀察小車轉(zhuǎn)向、語音播報、APP頁面,判斷識別第三類路標(biāo)的結(jié)果是否正確。測試結(jié)果見表1所列。
表1 測試結(jié)果
通過測試結(jié)果可以看出,這套系統(tǒng)有較高的識別準(zhǔn)確率,但存在一定的局限性。為了提高系統(tǒng)的實(shí)用性,可從以下3方面作進(jìn)一步提升:
(1)增加更多的匹配模板以識別更多交通指示標(biāo)識;(2)利用sobel算法優(yōu)化二值化算法;
(3)適當(dāng)采用CNN神經(jīng)網(wǎng)絡(luò)優(yōu)化因距離問題導(dǎo)致的識別精度較低的問題。
文中設(shè)計(jì)的駕駛輔助系統(tǒng)能夠有效降低因駕駛?cè)俗陨韱栴}而導(dǎo)致的交通事故發(fā)生率,系統(tǒng)提供了2種輸出信號模式,即語音提示和頁面顯示,以適應(yīng)復(fù)雜的用戶操作環(huán)境,充分為用戶考慮,擴(kuò)大了其適用范圍。此外,通過車輛前方的攝像頭不僅可以獲得有用的路況信息,還可以將一張SD卡放在FPGA芯片內(nèi)部,攝像頭充當(dāng)行車記錄儀使用,進(jìn)而為用戶提供多樣化的服務(wù)。系統(tǒng)結(jié)構(gòu)巧妙,操作簡單,在用戶駕駛時能夠起到高效的輔助作用,使用戶注意力保持高度集中,保障駕駛安全。