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