趙佳怡,彭武星,宋 敏,盧 仕
(湖北大學 物理與電子科學學院,湖北 武漢 430061)
中國官方統計報告,每年因道路交通死亡的人數超過10萬,道路傷害數量達50萬,每5分鐘約有1人死亡,每1分鐘就會有1人因為交通事故而傷殘。造成交通事故的根本原因有2個,一方面是駕駛人由于心理或者生理方面的原因,沒有正確觀察和判斷外界事物而造成精力分散、反應遲鈍,表現為觀望不周、措施不及時或者不當、未判斷清楚就盲目通行;另一方面是駕駛人不按交通法規和其他交通安全規定行車或者走路,致使交通事故發生。
針對以上交通事故產生的原因,文中設計的駕駛輔助系統能識別道路上的交通指示牌,為用戶提供正確的路況信息(路況包括停車點、更換道路、紅綠燈情況等),幫助用戶做出正確決定,降低交通事故發生率。同時,系統輸出形式分為圖像和語音兩種,既可以為不方便接收聲音的用戶提供圖像形式的實時路況,也可以為獨自駕駛車輛的用戶提供語音播報形式的實時路況,從而使用戶集中注意力。文中構造的基于駕駛員駕駛行為習慣的主動式駕駛輔助人機交互系統極大地增強了用戶體驗,擴大了該系統的應用范圍。
系統框架如圖1(a)所示,系統由OV5640攝像頭、VGA顯示器、數據處理模塊、驅動模塊組成。圖1(b)為系統實物,FPGA芯片為主控部分,OV5640攝像頭接收外部圖像信號,FPGA芯片存儲圖像信號,并通過圖像處理模塊將信號進行優化,再通過VGA顯示模塊將優化后的圖像呈現在VGA顯示屏上,獲取的有用信號則通過特征提取模塊、模板匹配模塊后輸出,隨后傳遞給驅動模塊。

圖1 系統框架設計
系統功能的總體設計流程如圖2所示。將從SDRAM中讀取的數據傳遞給UART串口模塊,進而驅動APP;數據處理模塊對攝像頭采集的數據做進一步處理,其輸出的數據能夠直接驅動直流電機模塊和語音播報模塊。

圖2 系統功能設計流程
2.2.1 圖像數據的采集
系統將攝像頭寄存器配置分為2個模塊,其中一個模塊為攝像頭內部寄存器地址的查找表,另一個模塊為IC總線控制器。通過IC將指令輸入攝像頭,并對攝像頭的工作模式以及各參數進行配置。當攝像頭寄存器全部配置完成后,先等待10幀數據,待寄存器配置生效后再開始采集數據,并將攝像頭的8位輸出數據轉換成16位RGB 565格式的圖像數據。SDRAM的讀寫模塊和SDRAM的控制模塊可以將圖像數據進行不失真存儲。
2.2.2 圖像處理

圖3 圖像處理
通過灰度化處理模塊后,圖像數據由原來的24位轉化為8位灰度數據,其中交通標識藍底的RGB 888值為{6,0,134},對應的灰度值為17;紅綠燈黑底的RGB值為{0,0,0},對應灰度值為0;交通標識的RGB 888值為{255,255,255},對應灰度值為255;紅綠燈中綠燈的RGB 888值為{0,255,0},對應的灰度值為150。由最佳閾值公式算出適合交通標識和紅綠燈進行二值化處理的最佳閾值為90,所以當像素點的灰度值大于90時,將灰度數據賦為0,該像素點視為黑色;當像素點的灰度值小于90時,將灰度值賦為255,視為白色。因為紅綠燈中的紅燈灰化后的值有時可能大于90,所以需要多添加一個判斷語句,當滿足上一個條件時,對RGB 888中的green進行判斷,當green大于120時,將灰度值賦0,視為黑色;當green小于120時,將灰度值賦為255,視為白色。通過此全局閾值,可以很好地屏蔽交通標識和紅綠燈的背景。圖3(d)為二值化處理后的圖像。
從二值化后的圖像中不難看出,圖像存在椒鹽噪聲,系統利用中值濾波去除椒鹽噪聲。圖3(e)為中值濾波后的圖像,噪聲含量大大減少。圖4為模塊中值的計算方法,所謂中值濾波,即對以該像素點為中心的3×3矩陣進行排序,用排序中值取代中心點像素值。同時為了簡化模塊在讀取數據時對RAM地址的計算,并充分利用FPGA的并行特性對圖像數據進行順序讀取,需逐行將順序讀取的數據轉化成3行的并行數據進行處理。

圖4 移位寄存器工作原理
系統采用投影法實現對交通標識及紅綠燈的定位,因為交通標識及紅綠燈是放在黑底背景的PPT中,所以交通標識及紅綠燈周圍環境比較單一,利用投影法可以很好地確定交通標識及紅綠燈的具體區域。圖5為定位后的圖像,當交通標識及紅綠燈出現在藍色框區域時,綠色框就能動態確定交通標識及紅綠燈的位置。藍色框為算法區域,當交通標識和紅綠燈出現在此區域時,綠色框會動態將交通標識和紅綠燈的位置框住,紅色框會動態將交通標識和綠燈的位置框住。

圖5 圖像定位后的照片展示
定位后,可以確定交通標識及紅綠燈的具體位置,在確定的交通標識區域進行水平投影和垂直投影,進而將交通標識及紅綠燈等標識分割出來,然后通過特征識別算法進行具體計算。識別算法設計流程如圖6所示。

圖6 識別算法設計流程
以數字識別為例,具體算法如下:
(1)選取直線,提取特征值。如圖7(a)所示,在數字行寬的1/3處、2/3處,以及數字列寬的1/2處,通過選取數字與行1/3劃線的前沿交點、數字與行2/3劃線的后沿交點,以及數字與列1/2處的后沿交點的位置和個數來識別數字。

圖7 圖像識別
(2)計算相似度。比較特征數據與模板數組各點的數據值,并設置閾值,當兩組數據某點數據絕對值的差小于該閾值時,相似度加1。
一部分投標人在進行報價投標時,并未按照填報要求對裝配式建筑在分項分布的各個項目中所實際消耗的機械設備材料、分攤的折舊費以及人工費等數據進行準確的計量。此外,一些PC構件的加工生產單位通過加速折舊的辦法將其生產基地投資等長期費用分攤到了構件的成本費用中,造成了PC構件成本中包括了過高的攤銷和折舊費用,而投標人的虛高報價對于工程項目的成本控制會產生不利的影響。
(3)獲得最大相似度模板。設置多分支選擇語句,取相似度最高的模板即為輸出結果。
2.2.3 圖像數據輸出
如圖8所示,首先通過VGA驅動程序將攝像頭采集的數據從SDRAM中實時讀取出來,并利用SDRAM 的乒乓操作實現對數據的實時采集和讀取。由于寫SDRAM的速度和讀SDRAM的速度不一致,可能會出現兩幀重疊現象。為了達到顯示的實時性和同步性,利用SDRAM里的兩片bank進行乒乓操作。

圖8 乒乓操作原理
2.3.1 車輪驅動設計
小車的4個車輪,同側2個采用直流電機驅動,該直流電機由L298N驅動,一個L298N可以驅動2個直流電機,但為了增強控制的靈活性,文中選擇使用2個L298N模塊對兩側的直流電機分別進行驅動。L298N具有4個端口,通過對應兩端口的電位差驅動直流電機。
2.3.2 語音播報模塊設計
系統使用的語音模塊為YS-M3,在給模塊通電之前先將A10接地,之后可切換為編碼模式,再通過對A1~A5的編碼,使其播放正確的語音。文中在進行語音播報模塊設計時,首先在TF卡中下載并保存可能會出現的交通標識、紅綠燈和數字對應的語音播報內容。當攝像頭識別到某個圖像后,將相應的處理信號輸出給語音模塊,語音模塊通過與已經存儲的播報內容進行對比,進而播報與該圖像對應的內容。
2.3.3 APP頁面顯示標識功能實現
如圖9所示,文中設計的APP頁面能夠呈現出與識別結果對應的圖像。FPGA開發板中的TX通過USB串口傳導相應數據到電腦上,再使用Python打開相應串口,將其數據編寫入腳本文件,最后利用MATLAB打開腳本文件,讀取相應數據。

圖9 APP頁面效果
Python的具體設計流程如圖10所示。利用Python作數據中轉站,先利用串口調試助手檢驗串口發送模塊(TX)的數據是否正確,再利用Python打開相應的com4,以相同的波特率(9 600)接收。為避免出錯,直接利用字符分割進行數據傳遞,將分割出來的第一個字符存進腳本文件,并根據TX傳來的數據不斷刷新腳本文件。這里要注意的是,因為左轉的字節取第一位后容易出錯,所以添加了一個判斷語句,當左轉的字符為xab時,將其字符改為b,當不滿足這個條件時,屏蔽xa。

圖10 Python代碼設計流程
MATLAB的具體設計流程如圖11所示,通過MATLAB生成一個簡易的APP頁面,在其中調用Python寫入數據的腳本文件,利用多分支選擇語句進行相應結果匹配。

圖11 MATLBA代碼設計流程
系統硬件電路如圖12所示。系統硬件電路主要由OV5640攝像頭、數據傳導模塊、開關模塊、L298N電機模塊和YS-M3語音模塊組成。

圖12 系統硬件電路
在10組不同的光照強度下(100~8 200 Lux,每組遞增900 Lux),將代碼燒入FPGA開發板中,連接并安放好硬件設備,對三種交通標識的識別效果依次進行檢驗,測試流程如圖13所示。

圖13 系統功能測試流程
(1)將FPGA開發板的開關1、2撥至高低電平01,進行數字識別,所識別數字照片分別為綠燈下的數字8、6、12,以及紅燈下的數字9。當4張數字照片識別完成后,依次觀察小車車輪、語音播報、APP頁面,判斷識別第一類路標的結果是否正確。
(2)將開關1、2撥至高低電平10,進行紅綠燈交通標識識別,所識別紅綠燈照片依次為左轉綠燈亮、直行綠燈亮、右轉綠燈亮。當3張紅綠燈照片識別完成后,觀察小車轉向、語音播報、APP頁面,判斷識別第二類路標的結果是否正確。
(3)將開關1、2撥至高電平11,進行特殊交通標識識別,路標照片分別為允許掉頭、靠左行駛、前方向右行駛,當3張特殊交通標識照片識別完成后,觀察小車轉向、語音播報、APP頁面,判斷識別第三類路標的結果是否正確。測試結果見表1所列。

表1 測試結果
通過測試結果可以看出,這套系統有較高的識別準確率,但存在一定的局限性。為了提高系統的實用性,可從以下3方面作進一步提升:
(1)增加更多的匹配模板以識別更多交通指示標識;(2)利用sobel算法優化二值化算法;
(3)適當采用CNN神經網絡優化因距離問題導致的識別精度較低的問題。
文中設計的駕駛輔助系統能夠有效降低因駕駛人自身問題而導致的交通事故發生率,系統提供了2種輸出信號模式,即語音提示和頁面顯示,以適應復雜的用戶操作環境,充分為用戶考慮,擴大了其適用范圍。此外,通過車輛前方的攝像頭不僅可以獲得有用的路況信息,還可以將一張SD卡放在FPGA芯片內部,攝像頭充當行車記錄儀使用,進而為用戶提供多樣化的服務。系統結構巧妙,操作簡單,在用戶駕駛時能夠起到高效的輔助作用,使用戶注意力保持高度集中,保障駕駛安全。