摘 要: 以FPGA為核心,,利用其內(nèi)部的Avalon總線技術(shù),,在SoPC Builder中將Flash和SRAM從外設(shè)及自己設(shè)計的兩個DMA采集和DMA顯示主外設(shè)集成到一個Avalon系統(tǒng)中,構(gòu)建出基于FPGA的全景圖像實時處理平臺,。結(jié)果證明,,本系統(tǒng)可以完成對分辨率為2 048×2 048、15f/s的Camera Link接口全景圖像的實時采集,、存儲并解算成適于觀察的柱面圖像,,并以1 024×768的分辨率實時顯示。
關(guān)鍵詞: 全景結(jié)算,;Camera Link,;Avalon總線;存儲器
?
全景視覺具有大的視場范圍,,被廣泛應用于各種領(lǐng)域,,如機器人導航、太空探測,、視頻監(jiān)控,、視頻會議和虛擬現(xiàn)實等各個方面。當今應用最廣的全景視覺系統(tǒng)是在一塊CCD或CMOS感光器件上形成360°的全景圖像,,然后通過軟件算法還原成真實圖像,。這就會帶來一個問題,即同樣大小的感光器件上所容納的視場越大,,單個物體所占有的像素就會越少,,從而導致所關(guān)心的具體目標分辨率大大降低,甚至不滿足觀測要求,。這一問題只能通過增加感光器件自身的分辨率來解決,,然而普通視頻格式的分辨率是720×576,無法改變,,所以采用IMPERX公司的IPX-4M15-LC型Camera Link接口的科學級高分辨率數(shù)字相機,,分辨率為2 048×2 048,幀速率為15f/s,,這樣可以在很大程度上改善全景圖像的清晰度,。但是分辨率提高的同時,通信數(shù)據(jù)量也增加為普通視頻的十倍多,,這就對通用計算機CPU的處理能力和PCI總線的通信能力提出了挑戰(zhàn),。經(jīng)過試驗,使用CPU主頻為2.81GHz的通用計算機和PCI采集卡構(gòu)成的高分辨率全景視覺系統(tǒng),當進行柱面展開或者局部透視展開時,,與普通視頻全景成像系統(tǒng)相比,,在圖像清晰度提高的同時,幀速率下降為4f/s~6f/s,,實時性大大降低,,不能滿足實時觀測的應用領(lǐng)域的要求。另外通用計算機處理系統(tǒng)由于其體積,、重量和穩(wěn)定性等方面原因,,在苛刻條件下亦無法使用。
1 全景系統(tǒng)介紹
1.1 全景成像原理
系統(tǒng)采用雙曲面折反射式全景成像,,折反射全景成像系統(tǒng)可根據(jù)是否滿足單視點成像約束分為單視點成像系統(tǒng)和非單視點成像系統(tǒng)。在監(jiān)視和場景的三維重建應用中,,要求獲得透視圖像,,因此在系統(tǒng)設(shè)計時應滿足單視點約束,保證系統(tǒng)成像滿足針孔模型,。在本全景成像系統(tǒng)中,,來自水平方向360°的光線都可以經(jīng)過雙曲面的反射和廣角鏡頭的折射在CCD中成像,故系統(tǒng)水平視場為360°,,來自垂直方向270°左右的光線可清晰成像,,故系統(tǒng)垂直視場為270°,只有位于反射鏡正上方約90°的視場范圍為成像死角,。系統(tǒng)組成如圖1所示,。
?
?
1.2 系統(tǒng)組成
折反射全景成像系統(tǒng)主要由以下幾部分組成:
(1)光敏元件,如CCD器件,。本系統(tǒng)中采用IMPERX公司的IPX-4M15-LC型Camera Link接口的科學級高分辨率數(shù)字相機,,分辨率為2 048×2 048,幀速率為15f/s,。
(2)成像透鏡,,如常規(guī)成像透鏡或遠心透鏡。本系統(tǒng)采用Nikon廣角近焦鏡頭,。
(3)凸面反射鏡,,其面形為二次曲面,如球面,、圓錐面,、拋物面、雙曲面等,。本系統(tǒng)采用視場角為120°雙曲反射面,。
(4)實時圖像處理平臺。本系統(tǒng)采用以Altera公司Cyclone II系列FPGA EP2C35為核心的圖像處理系統(tǒng),。
(5)顯示部件,,本系統(tǒng)的顯示終端由LVDS接口的數(shù)字液晶顯示器構(gòu)成,,分辨率為1 024×768,刷新頻率為60Hz,。
2 嵌入式硬件設(shè)計
2.1 FPGA核心處理系統(tǒng)
FPGA核心處理系統(tǒng)采用Altera公司的Cyclone II 處理器EP2C35F484C8,。在Cyclone系列低成本FPGA中,Cyclone II FPGA系列是第二代產(chǎn)品,,采用TSMC的1.2V,、90nm、低k絕緣工藝,,具有比第一代產(chǎn)品更多的性能優(yōu)勢,,密度功能進一步提高。具有33 216個邏輯單元(LE),,密度是第一代Cyclone FPGAs的三倍,,每LE最低的成本;具有105個M4K的RAM,,共組成483 840bit可用RAM,,可達到250MHz的性能。有35個18×18bit或70個9×9bit嵌入式乘法器,;跨越整個期間的16個低斜移,、全局時鐘網(wǎng)絡(luò),有16個專用輸入時鐘引腳反饋,;4個鎖相環(huán)(PLLs),,每個具有3個輸出抽頭,具有可設(shè)置帶寬,、可設(shè)置占空比,、擴譜時鐘、鎖定探測功能,,以及具有移相功能的頻率合成,,可提供片內(nèi)和片外全面的系統(tǒng)始終管理。除FPGA之外,,電源系統(tǒng)有由AMS1084-3.3構(gòu)成的3.3V供電,,由AMS1084-adj調(diào)整出來的1.2V供電部分。配置芯片為EPCS16,,時鐘晶振為50MHz,。
2.2 高速存儲系統(tǒng)設(shè)計
圖像處理系統(tǒng)對存儲設(shè)備要求很高,不僅需要有大的存儲容量,,還要有非常高的存儲速度,。針對本系統(tǒng)中的處理要求,每幀圖像的大小為4MB,所以要想實時,、連貫地對圖像做想要的處理,,存儲系統(tǒng)的最低容量應為能存儲一幀圖像的容量4MB。存取速度可以通過計算得出,,相機數(shù)據(jù)總量:15f/s×2 048×2 048×8=480Mb/s,,單路LVDS=總量×7/12=280Mb/s,單路TTL=單路LVDS/7=40Mb/s,。通過計算可知,,系統(tǒng)數(shù)字前端的通信速率是40MHz,已經(jīng)屬于高速電路信號的范疇,。為了增加圖像數(shù)據(jù)傳輸?shù)膸?,Camera Link接口采用雙通道傳輸模式,每通道數(shù)據(jù)為8bit,,共16bit,。在圖像實時采集及顯示的要求下,可采用兩組RAM乒乓讀寫操作的方式,,但這樣會增加系統(tǒng)的復雜性;也可以使用雙口RAM,,但如此大容量的雙口RAM的成本非常高,。基于這兩點考慮和系統(tǒng)的實際需求,,本系統(tǒng)使用對單存儲體分時復用讀寫的機制,,可簡化硬件設(shè)計和降低成本。系統(tǒng)中選用4片SRAM,,型號為IS61LV51216,,其單片容量為1MB,在硬件連接上擴展成1M×32bit的靜態(tài)RAM存儲體,,總共4MB,,為一幀圖像的存儲容量,而32bit的數(shù)據(jù)寬度可極大限度地增加系統(tǒng)的通信速率,。
如圖2所示,,使用AVALON總線支持的8級流水線的方式不連續(xù)讀取SRAM和SDRAM中的數(shù)據(jù)。當讀SRAM中數(shù)據(jù)時,,數(shù)據(jù)有效標志一直處于高電平有效狀態(tài),,故可以在CLK的每一個周期返回一個有效數(shù)據(jù);而讀SDRAM時,,數(shù)據(jù)有效標志大部分周期為低電平無效狀態(tài),,所以實際的讀取速度大打折扣,不及SRAM速度的1/3。這里簡單分析一下原因:首先SDRAM的行列地址線是復用的,,降低了總線速率,;其次SDRAM的讀寫操作過程中需要多個額外的總線周期進行precharge和active操作,導致效率低下,,尤其在不連續(xù)讀寫時更加嚴重,。而SRAM完全不存在這個問題,可以完全隨機讀寫,,本系統(tǒng)選用的SRAM讀和寫都可以在10ns完成,。
?
2.3 Camera Link采集接口與LVDS顯示接口
科學級高分辨率數(shù)字相機IPX-4M15-LC使用Camera Link接口傳輸圖像。經(jīng)研究發(fā)現(xiàn),,此相機內(nèi)部處理系統(tǒng)也是由一片一百萬門的FPGA和一個32位處理器組成,,最后由美國國家半導體公司的DS90CR287MTD轉(zhuǎn)換成LVDS信號,由Camera Link接口將圖像傳輸出去,。與DS90CR287MTD配套使用的芯片為DS90CR288AMTD,,所以本系統(tǒng)使用DS90CR288AMTD作為Camera Link協(xié)議的解碼芯片。具體使用中,,在板級布線時,,尤其應注意差分走線等長、平行,、結(jié)成對耦等原則,,這樣會使信號的高頻特性達到最好。
在顯示終端方面,,沒有選擇XGA接口的顯示器,,因為所有模擬接口的液晶顯示器都是為了兼容以前的陰極射線管(CRT)顯示器,而模擬信號傳輸存在一些缺點,,如信號衰減,、易受干擾,清晰度和細節(jié)表現(xiàn)力不高等,。液晶顯示器本身就可以由數(shù)字信號進行控制,,所以本系統(tǒng)選用LVDS接口的液晶顯示器,型號為上廣電的SVA150XG04BT,,分辨率為1 024×768,。控制芯片為上廣電推薦的平板液晶顯示器LVDS接口芯片DS90C385A,。
3 AVALON總線IP核設(shè)計
3.1 Avalon總線規(guī)范
在采集IP核設(shè)計上,,采用具有可變等待周期的突發(fā)傳輸,在展開顯示IP核設(shè)計上,,采用具有可變等待周期和可變延遲的流水線傳輸,。下面分別介紹這兩種傳輸模式,。Avalon接口可使用突發(fā)傳輸屬性。該傳輸方式將多次傳輸作為一個單元來執(zhí)行,,而不是將每個數(shù)據(jù)單元作為一次獨立的傳輸,。當每次處理來自主端口的多個數(shù)據(jù)單元時,突發(fā)傳輸是從端口能達到最高效率的數(shù)據(jù)吞吐量,。流水線傳輸使得主外設(shè)可以發(fā)起一次讀傳輸,,轉(zhuǎn)而執(zhí)行一個不相關(guān)的任務,等外設(shè)準備好數(shù)據(jù)后再接收數(shù)據(jù),。這個不相關(guān)的任務可以是發(fā)起的另一次讀傳輸,,盡管上一次讀傳輸?shù)臄?shù)據(jù)還沒有返回。在取指令操作和DMA操作中,,流水線傳輸非常有用,。在這兩種狀態(tài)下,CPU或DMA主外設(shè)會預取期望的數(shù)據(jù),,從而使同步存儲器處于激活狀態(tài),,并減少平均訪問時間。
3.2 Camera Link接口協(xié)議分析
Camera Link是從Channel Link技術(shù)基礎(chǔ)上發(fā)展而來的,,以LVDS作為物理層,。Channel Link包括一個發(fā)送和接收對。發(fā)送端接收28路單端的數(shù)據(jù)信號和一個單端的時鐘信號,,數(shù)據(jù)被以7:1的方式串行化為4路雙端數(shù)據(jù)流,,接收端接收這四路串行數(shù)據(jù)流和一個同步時鐘,并解串成為28路單端數(shù)據(jù)信號,。
Camera Link信號要求圖像數(shù)據(jù)和圖像使能信號必須包含在Channel Link總線中。四個使能信號被定義如下:
FVAL:幀有效(Frame Valid),; LVAL:線有效(Line Valid),; DVAL:數(shù)據(jù)有效(Data Valid);Spare:Spare作為以后使用的信號,。保留了4個LVDS對用于實現(xiàn)對通用相機的控制,,他們被定義為相機的輸入和圖像采集卡的輸出。相機生產(chǎn)商設(shè)定這些信號來滿足特殊產(chǎn)品的需要,。這4個信號是:Camera Control 1~4,。2個LVDS對已經(jīng)被分配為實現(xiàn)相機和圖像采集卡之間的異步串行通信,相機和圖像采集卡應至少支持9 600b/s的波特率,,這兩個信號是SerTFG和SerTC,。
3.3 圖像采集存儲IP核設(shè)計
高分辨率數(shù)字相機的像素為400萬,幀率為15f/s,,數(shù)據(jù)輸出時鐘為40MHz,,數(shù)據(jù)寬度為16bit,。如此大數(shù)據(jù)量的采集及寫入RAM是使用CPU操作難以完成,所以編寫了Avalon總線主外設(shè),,將采集到的數(shù)據(jù)以DMA的方式寫入SRAM,。Avalon總線傳輸支持多種數(shù)據(jù)傳輸方式,在這個主外設(shè)中,,為了使數(shù)據(jù)傳輸能力達到最大,,使用突發(fā)傳輸模式,突發(fā)長度為一行圖像的數(shù)據(jù)1 024B,,以16bit數(shù)據(jù)寬度進行傳輸,,突發(fā)長度為512,使用狀態(tài)機控制突發(fā)傳輸?shù)膸讉€狀態(tài),,如圖3所示,。由于圖像數(shù)據(jù)的時鐘為40MHz,Avalon總線傳輸時鐘為120MHz,,涉及到異步時鐘域同步問題,,使用512個16bit寫入32bit讀出的FIFO進行數(shù)據(jù)同步。
?
3.4 圖像顯示原理分析
使用FPGA控制顯示器顯示所要的圖像,,主要是控制時序,,就是將圖像數(shù)據(jù)依據(jù)顯示器需要的顯示順序送出,即正確的數(shù)據(jù)放到正確的顯示器像素點上,。本系統(tǒng)選用的顯示器的現(xiàn)實時序控制比較簡單,,只需以CLK的上升沿為觸發(fā)控制使能信號DE與數(shù)據(jù)信號DATA同步即可。DE為數(shù)據(jù)使能信號,,高電平有效,,在所有的顯示周期該信號為高電平,在行消隱與場消隱期間為低電平,。顯示時序如圖4所示,。
3.5 圖像顯示IP核設(shè)計
在圖像顯示IP核設(shè)計上,讀取SRAM內(nèi)的圖像數(shù)據(jù)時不宜采用突發(fā)傳輸模式,,因為全景視覺系統(tǒng)圖像顯示需要先對環(huán)形的全景圖像進行非線性還原,,這涉及到大量的非連續(xù)地址圖像數(shù)據(jù)讀取,因而不適合使用突發(fā)傳輸,。而Avalon總線協(xié)議支持多達8級流水線的讀傳輸,,可以很好地解決這一問題。流水線傳輸時序如圖5所示,。
?
4 全景圖像展開算法設(shè)計與實現(xiàn)
4.1 全景圖像柱面展開原理
以雙曲面焦點F′為投影中心建立虛擬像機,,將實際全向圖像投影到虛擬像面上的過程稱為系統(tǒng)成像的逆投影。如圖6所示,,F(xiàn),,F(xiàn)′分別為雙曲線的兩個焦點,,OP為入射光線,PQ為反射光線,,O為三維空間中的任一點,,坐標為(x0,y0),,Q為O點經(jīng)反射鏡反射后在像平面上的成像點,,c為雙曲面的焦距,f為攝像機焦距,。根據(jù)逆投影模型可得已知三維空間中物點O坐標,,由式2、式3可確定像點Q的坐標,。
?
式中a,、b為雙曲線的參數(shù),θ為入射光線與Z軸夾角,。
當虛擬像面為圓柱面,,且圓柱面的對稱軸為成像系統(tǒng)的對稱軸時,可以得到柱面全景圖像,。
4.2 展開算法的簡化原理
全景圖像展開原理和公式推倒是嚴謹,、規(guī)范的,雖然展開圖像的失真度最小,,但復雜性也是最高的,。它不僅需要不斷地用到正弦余弦運算,還要知道雙曲面反射鏡的多個參數(shù)以及拍攝時的實時焦距參數(shù),。這對實時處理系統(tǒng)來說是無法容忍的,。下面介紹全景圖像簡化展開算法。
為了滿足進一步的圖像視覺應用和人眼的觀察習慣,,需要將壓縮的全景圖像投影到柱面上,。簡化算法的思想是在不考慮雙曲面反射鏡自身參數(shù)的情況下,利用直角坐標和極坐標之間的坐標變換(如圖7所示),,將柱面展開圖上像素點的值一個一個地從全景圖中找到,然后根據(jù)顯示效果調(diào)整R′的大小,,使顯示的寬高比例滿足實際比例,,從而達到滿意的觀察結(jié)果。
?
4.3 FPGA實現(xiàn)展開
如圖8設(shè)計的Avalon總線系統(tǒng),,在對全景圖像數(shù)據(jù)進行采集顯示以及非線性展開處理時,,為了達到15f/s的實時顯示采集性能,全部使用Verilog HDL編寫,,這樣就可以做到所有功能模塊都并行處理,。Verilog屬于硬件描述語言,,優(yōu)點是執(zhí)行效率高,缺點是無法進行復雜的數(shù)學運算,,如展開公式中用到的三角函數(shù),、除法運算等??紤]到FPGA內(nèi)部有高速的SRAM,,所以查表可以很好地解決這一問題。除法運算轉(zhuǎn)換成移位運算,。在FPGA內(nèi)部調(diào)用宏功能模塊,,生成ROM,并用正弦和余弦表來對其進行初始化,。本系統(tǒng)中使用7 200點的正余弦表,,精度為16位,足以滿足要求,。用Visual C++生成表,,并作乘以1 024的處理。因為Verilog只能處理整數(shù),,最后處理時將處理結(jié)構(gòu)右移10位,,即可將結(jié)果還原回真實值。
?
系統(tǒng)的執(zhí)行過程就是邊讀取內(nèi)存中像素數(shù)據(jù)值邊向顯示接口發(fā)送數(shù)據(jù)的過程,,只不過像素值的讀取是按照顯示的需求,,并按照上一節(jié)中的簡化展開算法原理做了非線性變換的。如需要向顯示端口發(fā)送的像素點的坐標為(x1,,y1),,通過運算得到數(shù)據(jù)在原始全景圖像中點的位置坐標為(x2,y2),,其中x2=y1sin(2πx1/y1),,y2=y1cos(2πx1/y1),正弦余弦通過查表獲得,。x1/y1則是把一圈360°的圖像分成若干份數(shù),,每一份對應一個顯示圖像中水平顯示方向的一個點。本系統(tǒng)將360°分成7 200份,,每增加0.5°,,其正弦余弦值可在表格中查得。圖像的現(xiàn)實分辨率為1 024×768,,所以整幅全景圖像的顯示需要7屏,,在實際應用中利用按鍵實現(xiàn)讀取像素參數(shù)的遞增或遞減,就可以做到對360°全景圖像的掃描顯示,。
參考文獻
[1] National Semiconductor.LVDS用戶手冊(第四版)[D].2008.
[2] National Semiconductor.Channel Link Design Guide[D].2006.
[3] Altera Corporation.Quartus II Version 7.1 Handbook[D].2006.
?
?