利用多核Blackfin處理器實(shí)現(xiàn)基于攝像頭的交通標(biāo)志識(shí)別
引言
汽車行業(yè)對于基于攝像頭的駕駛員輔助系統(tǒng)的需求在不斷增長。交通標(biāo)志識(shí)別是一個(gè)正在受到人們高度重視的應(yīng)用領(lǐng)域,因?yàn)樗赏纳岂{駛員和乘客在公路行駛過程中的安全性。交通標(biāo)志識(shí)別目前仍是一種高端選項(xiàng),需要政府和領(lǐng)先的汽車廠商們聯(lián)手進(jìn)行推廣,才能開辟大規(guī)模的市場。它是圖像識(shí)別技術(shù)的一個(gè)實(shí)例,可以應(yīng)用到車輛和工業(yè)設(shè)計(jì)的多個(gè)方面。交通標(biāo)志識(shí)別建立在模式識(shí)別算法基礎(chǔ)上,這些算法目前已經(jīng)很好地為機(jī)器視覺方面的專家們所掌握。
毫無疑問,即使對于先進(jìn)的通用處理器而言,經(jīng)典的模式識(shí)別算法就已經(jīng)足以讓其應(yīng)接不暇。對于這種類型的信號處理應(yīng)用來說,選擇一種可以有效應(yīng)對特定計(jì)算和I/O操作挑戰(zhàn)的處理器架構(gòu)是非常有利的,這些挑戰(zhàn)是在尋找交通信號圖像的過程中所涉及的連續(xù)視頻流處理所固有的。關(guān)鍵的一點(diǎn)在于,算法的代碼實(shí)現(xiàn)必須能夠保證盡可能高的速度和效率。
本文詳細(xì)介紹了一種基于攝像頭的交通標(biāo)志識(shí)別系統(tǒng),該系統(tǒng)以ADI公司低功耗、低成本的嵌入式DSP—Blackfin處理器為核心。我們將展示一種高效率的軟件架構(gòu)設(shè)計(jì),并運(yùn)用濾波器模塊算法來實(shí)現(xiàn)交通標(biāo)志識(shí)別的應(yīng)用。文中對各種結(jié)果進(jìn)行了比較,并給出為了能更好地利用現(xiàn)有計(jì)算性能而可以采取的步驟。
基于攝像頭的駕駛員輔助系統(tǒng)
基于攝像頭的典型模式識(shí)別系統(tǒng)由視頻攝像頭和顯示器組成,它們都連接到處理器的I/O接口上,處理器則控制著系統(tǒng)的運(yùn)行,并執(zhí)行所需的信號處理功能。系統(tǒng)往往需要外接SDRAM,為從輸入視頻流中提取道路標(biāo)志信息的視頻處理功能提供所需的存儲(chǔ)器空間。圖1示出了該典型系統(tǒng)的方框圖。雖然在最終應(yīng)用中不一定會(huì)部署顯示器,但它有助于進(jìn)行應(yīng)用開發(fā)和演示。
領(lǐng)先的汽車廠商將高品質(zhì)的CMOS圖像傳感器用作駕駛員輔助系統(tǒng)的視頻信號源。目前,大多數(shù)攝像頭都可以捕捉VGA尺寸(640×480像素)的灰度圖像,并具有10比特的灰階深度。幀速率一般達(dá)到了30幀/s,CMOS傳感器的靈敏度使其既適用于低光照環(huán)境和夜間,也適用于艷陽高照和有光線直射的情況。未來的應(yīng)用將需要具有更大的幀尺寸和色彩分辨能力的傳感器。在本文的示例中,攝像頭提供彩色圖像,該圖像以亮度/色度 YUV差分圖像格式傳送。大多數(shù)傳感器是由一個(gè)外部時(shí)鐘發(fā)生器驅(qū)動(dòng)的,通過一條寬度達(dá)10比特的同步并行數(shù)據(jù)總線提供圖像數(shù)據(jù)。兩路附加的信號用于實(shí)現(xiàn)行寬度和場高度的同步。
TFT顯示
LCD TFT顯示器在汽車儀表板上已經(jīng)十分常見,它需要系統(tǒng)提供RGB圖像數(shù)據(jù)。每個(gè)顯示器的像素都需要3基色(紅、綠和藍(lán))的輸入數(shù)值。捕捉和顯示之間圖像格式的不匹配在視頻系統(tǒng)中是很常見的現(xiàn)象,在RGB和YUV格式之間實(shí)現(xiàn)轉(zhuǎn)換的色彩空間變換算法也已經(jīng)廣為人知。圖2示出TFT顯示器與處理器之間的連接。
多核嵌入式處理器加速信號處理
本文中的駕駛員輔助系統(tǒng)所采用的中央處理器是Blackfin BF561。Blackfin架構(gòu)是針對信號和圖像處理應(yīng)用而開發(fā)的,可以提供算術(shù)和邏輯單元(ALU),它允許指令流在不同數(shù)據(jù)上并行執(zhí)行。正如在引言部分所提到的那樣,由于具有高效率的信號處理指令集和硬件功能特色,專為信號處理應(yīng)用設(shè)計(jì)的處理器可以確保濾波和模式匹配算法能夠高效率和靈活地運(yùn)行。BF561 Blackfin是一款雙核處理器,具有兩個(gè)對稱的處理器內(nèi)核,因此可為應(yīng)用提供約兩倍的計(jì)算能力。
我們已經(jīng)提到了用作捕捉和顯示視頻接口的并行I/O 端口。此外,Blackfin處理器提供了大量的其他接口,如用作普通系統(tǒng)級接口的I2C和NAND FLASH接口,以及用于在特定應(yīng)用環(huán)境中運(yùn)行的接口,比如汽車系統(tǒng)中經(jīng)常用到的CAN總線和MOST總線。
軟件架構(gòu)
我們用軟件架構(gòu)一詞來概括對系統(tǒng)進(jìn)行控制的軟件。它是指包括了系統(tǒng)狀態(tài)機(jī)的控制代碼。該控制代碼配置系統(tǒng)的所有接口,按預(yù)定的順序調(diào)用所需要的濾波器模塊,啟動(dòng)DMA數(shù)據(jù)傳送,并同步那些暫?;蚍磸?fù)處理的事件。
處理器內(nèi)核
處理器內(nèi)核運(yùn)行控制軟件并執(zhí)行數(shù)學(xué)計(jì)算。每個(gè)Blackfin處理器內(nèi)核都擁有兩個(gè)算術(shù)和邏輯單元(ALU),最多允許同時(shí)執(zhí)行4項(xiàng)計(jì)算。讀、寫操作用于從存儲(chǔ)器中檢索出計(jì)算所需的數(shù)據(jù),并將結(jié)果保存下來。下面示出了一條寬度最大的指令。該指令可以同時(shí)在每個(gè)內(nèi)核上都執(zhí)行兩次獨(dú)立的乘法,以及隨后進(jìn)行的加法和兩次載入操作。
R4.l=(A0+=R0.l*R1.l), R4.h=(A1+=R0.h*R1.h) || R0=[I0++] || R1=[I1++];
如果由于地址沖突,該最大寬度指令無法被調(diào)用,則可以執(zhí)行該并行化指令的一部分。下面是幾個(gè)例子:
R4.l=(A0+=R0.l*R1.l), R4.h=(A1+=R0.h*R1.h) || R0=[I0++] || NOP
MNOP || R0=[I0++] || R1=[I1++];
A0+=R0.l*R1.l || R0.l=w[I0++] || R1.l=w[I1++];
可以并行執(zhí)行的操作種類舉不勝舉,但需要考慮硬件實(shí)現(xiàn)方面的相互制約。
評論