《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 立體攝像深度感知的FPGA實(shí)現(xiàn)
立體攝像深度感知的FPGA實(shí)現(xiàn)
elecfans
摘要: 針對(duì)立體攝像的深度感知,,F(xiàn)PGA解決方案能使處理器的時(shí)間得到緩解,,減少或除去器件的成本,例如MPU、DSP,、激光器和昂貴的鏡頭,。通過(guò)提供給機(jī)器人其環(huán)境中的差異測(cè)繪,,F(xiàn)PGA使機(jī)器人中的CPU專注于重要的高層任務(wù),,例如建圖和定位。
關(guān)鍵詞: FPGA 立體攝像 LVDS LatticeXP2
Abstract:
Key words :

      針對(duì)立體攝像的深度感知,,FPGA解決方案能使處理器的時(shí)間得到緩解,,減少或除去器件的成本,例如MPU,、DSP,、激光器和昂貴的鏡頭。通過(guò)提供給機(jī)器人其環(huán)境中的差異測(cè)繪,,F(xiàn)PGA使機(jī)器人中的CPU專注于重要的高層任務(wù),,例如建圖和定位。

  差異測(cè)繪

  加深度感知到機(jī)器人的常用技術(shù)是用兩個(gè)水平放置的獨(dú)立攝像機(jī),,互相之間平行分開(kāi)放置,。用差異測(cè)繪算法對(duì)兩個(gè)攝像機(jī)進(jìn)行比較,見(jiàn)圖1,。

  

差異測(cè)繪計(jì)算

 

  圖1 差異測(cè)繪計(jì)算

  簡(jiǎn)單來(lái)說(shuō),,差異是指右面和左面圖像之間的差別。物體越接近攝像機(jī),,兩個(gè)圖像之間的差異越大,。

  你可以自己來(lái)做一個(gè)實(shí)驗(yàn),對(duì)著你的臉?biāo)降叵蛏衔兆∫恢ЧP,,不停地眨你的左眼和右眼,。移動(dòng)的筆越接近你的臉,你眨眼時(shí)覺(jué)得移動(dòng)越多,。做更多的移動(dòng)時(shí),,物體越接近你的眼睛,,圖像中的差異越大。

  如圖1所示,,從兩個(gè)圖像之間物體的位置算出差異:d=x1-x2,。為了計(jì)算點(diǎn)M的實(shí)際坐標(biāo),可通過(guò)左面和右面的攝像機(jī)來(lái)進(jìn)行計(jì)算:

  X=Bx1/d

  Y=By1/d

  Z=fB/d

  相關(guān)的問(wèn)題

  計(jì)算差異測(cè)繪依賴于相關(guān)的圖像,,以及左面圖像和右面圖像的匹配性質(zhì),。逐點(diǎn)計(jì)算相關(guān)的像素的計(jì)算量是很大的,因此用其它算法來(lái)簡(jiǎn)化這個(gè)問(wèn)題,。有一種方法稱為圖像點(diǎn)相關(guān),,仔細(xì)檢查左面圖像的像素塊,稱為點(diǎn),,然后在右面圖像中尋找相同的點(diǎn)。其它的方法包括邊沿檢測(cè)和匹配,。一旦定位了相應(yīng)的圖像,,就可進(jìn)行差異計(jì)算。

  失真與曝光問(wèn)題

  如果使用高質(zhì)量的攝像機(jī),,可以忽略鏡頭失真,。為了省錢,使用便宜的CMOS 或者CCD攝像機(jī),,或者低成本廣角鏡頭,。這些較低質(zhì)量的產(chǎn)品會(huì)引入失真或曝光問(wèn)題。

  鏡頭會(huì)引起比例和定位失真,,例如白點(diǎn)效應(yīng),,靠近圖像外面的物體出現(xiàn)彎曲狀,使用眾所周知的圖像處理算法可以進(jìn)行補(bǔ)償,。針對(duì)移動(dòng)或者其它幾何算法,,糾正白點(diǎn)的一種方法是使用坐標(biāo)的查找表重測(cè)圖像中的像素。

  在非常明亮和非常暗的環(huán)境中,,其它的算法需要可靠地捕獲圖像中的詳細(xì)特征,。例如,針對(duì)不同的區(qū)域確定最佳的曝光設(shè)置,,使用區(qū)域的合成圖像可以補(bǔ)償缺少背景亮度,。

  用含有嵌入式DSP的FPGA的解決方案

  本文中闡述的深度感知算法計(jì)算復(fù)雜,以實(shí)時(shí)的視頻速率來(lái)實(shí)現(xiàn),。系統(tǒng)設(shè)計(jì)者必須評(píng)估CPU/軟件,、ASIC, ASSP(例如DSP處理器)和FPGA解決方案,確定哪個(gè)是最佳的,,以及FPGA價(jià)格,。

  圖2展示了提出的FPGA協(xié)處理器解決方案,,解決失真、曝光,、通信和針對(duì)深度感知差異測(cè)繪算法,。這個(gè)方法使CPU騰出時(shí)間,允許DSP處理器處理更多的串行任務(wù),。

  

FPGA支持計(jì)算量大的差異測(cè)繪算法

 

  圖2 FPGA支持計(jì)算量大的差異測(cè)繪算法

    通常選擇FPGA時(shí),,需要評(píng)估三個(gè)電路方面的需求:

  ●針對(duì)利用并行特性的協(xié)處理功能,DSP的功能和性能,。

  ●DDR(雙數(shù)據(jù)速率)和LVDS(低電壓差分信號(hào))支持接口至片外SDRAM緩沖存儲(chǔ)器,,直接連接到來(lái)自攝像機(jī)的圖像數(shù)據(jù)。

  ●安全方案以保護(hù)知識(shí)產(chǎn)權(quán),。

  對(duì)于圖像處理算法,,傳統(tǒng)的DSP處理器的并行功能有限,每個(gè)DSP芯片只有1到4個(gè)乘法器,,見(jiàn)圖3中的左面,。因此DSP用很高的時(shí)鐘速率來(lái)進(jìn)行補(bǔ)償,時(shí)鐘速率高達(dá)1GHz或更高,,以達(dá)到高的吞吐量,。需要很快完成的復(fù)雜串行任務(wù)的DSP算法應(yīng)該用DSP處理器實(shí)現(xiàn)。

  然而,,許多深度感知圖像處理功能需要大量的并行處理,,例如線性插值技術(shù),媒體濾波器和幾何估計(jì),。與DSP芯片比較,,F(xiàn)PGA可以用并行來(lái)執(zhí)行串行功能,以加速系統(tǒng)性能,,見(jiàn)圖3的右面所示,。例如圖像對(duì)應(yīng)是很簡(jiǎn)單的算法,比較大量的像素值,,或者兩個(gè)圖像之間的像素點(diǎn),。為了得到有效均方差的和(SSD),圖像對(duì)應(yīng)算法必須對(duì)圖像中的像素進(jìn)行百萬(wàn)次計(jì)算,,對(duì)串行執(zhí)行功能的DSP芯片來(lái)說(shuō)這是一個(gè)挑戰(zhàn)性的任務(wù),。

  具有DSP功能的FPGA包含幾個(gè)乘法器塊,但是一些FPGA還有嵌入式加法器,、減法器和大大增加處理性能的累加器,。盡管低成本FPGA以低于300MHz系統(tǒng)時(shí)鐘頻率工作,但用片內(nèi)多個(gè)DSP塊以并行方式實(shí)現(xiàn)多個(gè)DSP功能可以達(dá)到高的DSP吞吐量(3,000 MMAC)。

  存儲(chǔ)器和DDR

  由于有多個(gè)乘法器,,利用FPGA并行的靈活性有益于存儲(chǔ)器的訪問(wèn),。能夠容易地并行訪問(wèn)各種存儲(chǔ)器。片內(nèi)分布式存儲(chǔ)器可以用來(lái)建立小的高性能便箋,,針對(duì)去除白點(diǎn)使用坐標(biāo)的查找表,,對(duì)于在圖像中再測(cè)繪像素是很有用的。片內(nèi)較大的嵌入式存儲(chǔ)器塊能構(gòu)建較大的高性能存儲(chǔ)器,,用于FIFO和線緩沖器,。

  片外存儲(chǔ)器DDR II SDRAM可以提供大的高性能存儲(chǔ)器。針對(duì)常用于圖像處理,,存儲(chǔ)整個(gè)幀的DDR SDRAM,,F(xiàn)PGA可以為DDR SDRAM提供存儲(chǔ)器控制和接口。

  較低的時(shí)鐘速度(100MHz以下),,DDR存儲(chǔ)器控制器接口是容易做的,,可用FPGA中的通用I/O和邏輯實(shí)現(xiàn)。然而在較高的頻率,,擁有專門電路的FPGA要求穩(wěn)健的DDR存儲(chǔ)器接口,。不是所有FPGA器件都有這些專門電路的,實(shí)現(xiàn)高速DDR存儲(chǔ)器接口的成本和復(fù)雜性差別很大,,取決于特殊的FPGA。

  LVDS

  針對(duì)攝像機(jī)和通過(guò)LVDS接口的視頻芯片集的深度感知,,例如攝像機(jī)鏈接,, FPGA接口圖像處理引擎。LVDS是低噪聲,、低功耗,,小擺幅差分信號(hào)用于通過(guò)銅線傳送高速(每秒吉比特)數(shù)據(jù)。

  作為一個(gè)用于視頻接口的例子是7:1 LVDS接口,,有多個(gè)LVDS信號(hào)對(duì)用于數(shù)據(jù)傳送,,一個(gè)信號(hào)對(duì)用于時(shí)鐘。對(duì)一些FPGA來(lái)說(shuō),,這是本身的I/O接口,。視頻數(shù)據(jù)通過(guò)3個(gè)LVDS對(duì)進(jìn)入FPGA,I/O結(jié)構(gòu)對(duì)這個(gè)包進(jìn)行解串,,然后把FPGA中并行的數(shù)據(jù)送到邏輯陣列,。

  安全性

  因?yàn)樽灾鞯臋C(jī)器人有時(shí)用于軍事應(yīng)用,在配置期間FPGA不應(yīng)對(duì)系統(tǒng)引入額外的脆弱性,。對(duì)于基于SRAM的FPGA,,配置數(shù)據(jù)來(lái)自外部的非易失存儲(chǔ)器。有些FPGA擁有內(nèi)置的128位AES解密引擎,防止黑客通過(guò)逆向工程來(lái)獲取FPGA中的功能,。

  只要密鑰是未知的,,AES配置位流加密提供了保護(hù)措施。然而,,非易失FPGA完全去除了這種安全性的風(fēng)險(xiǎn),。一些非易失FPGA在同一芯片上組合了Flash和SRAM。上電后SRAM獲得工作配置,。這種技術(shù)提供了高配置安全性,,同時(shí)又利用了SRAM無(wú)限次重構(gòu)的優(yōu)點(diǎn)。

  結(jié)語(yǔ)

  支持DSP,、差分信號(hào)LVDS和DDR II存儲(chǔ)器接口的FPGA使得機(jī)器人的實(shí)時(shí)感知成為可能,。

  對(duì)于機(jī)器人的立體視覺(jué)應(yīng)用,針對(duì)實(shí)時(shí)圖像處理實(shí)現(xiàn),,CPU,、DSP處理器和FPGA協(xié)處理器的組合能夠?qū)π阅芎蛢r(jià)格做出最佳的平衡。FPGA能夠處理高度并行差異測(cè)繪和深度感知算法,。DSP進(jìn)行較少并行處理,、高速和簡(jiǎn)單代碼的更加復(fù)雜的功能。CPU做需要靈活性和高層軟件實(shí)行的那些部分,。

  基于Flash,,非易失LatticeXP2 FPGA支持許多需求,包括LVDS,、內(nèi)置DDRII存儲(chǔ)器和完整特性的DSP塊,,以及大量的可編程邏輯和存儲(chǔ)器塊支持接口和其它的定制功能。許多DSP知識(shí)產(chǎn)權(quán)核和MATLAB SIMULINK使設(shè)計(jì)更加便利,。Lattice還有基于7:1 LVDS視頻接口的參考設(shè)計(jì)和平臺(tái),。免費(fèi)參考設(shè)計(jì)IP提供的一些功能是色深度轉(zhuǎn)換、亮度,、對(duì)比度和視頻覆蓋,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。