《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 基于FPGA的高分辨率全景圖像處理平臺

基于FPGA的高分辨率全景圖像處理平臺

2009-04-20
作者:趙有金,夏桂華,徐明道

  摘 要: 以FPGA為核心,利用其內部的Avalon總線技術,在SoPC Builder中將Flash和SRAM從外設及自己設計的兩個DMA采集和DMA顯示主外設集成到一個Avalon系統(tǒng)中,構建出基于FPGA的全景圖像實時處理平臺。結果證明,本系統(tǒng)可以完成對分辨率為2 048×2 048、15f/s的Camera Link接口全景圖像的實時采集、存儲并解算成適于觀察的柱面圖像,并以1 024×768的分辨率實時顯示。
  關鍵詞: 全景結算;Camera Link;Avalon總線;存儲器

?

  全景視覺具有大的視場范圍,被廣泛應用于各種領域,如機器人導航、太空探測、視頻監(jiān)控、視頻會議和虛擬現(xiàn)實等各個方面。當今應用最廣的全景視覺系統(tǒng)是在一塊CCD或CMOS感光器件上形成360°的全景圖像,然后通過軟件算法還原成真實圖像。這就會帶來一個問題,即同樣大小的感光器件上所容納的視場越大,單個物體所占有的像素就會越少,從而導致所關心的具體目標分辨率大大降低,甚至不滿足觀測要求。這一問題只能通過增加感光器件自身的分辨率來解決,然而普通視頻格式的分辨率是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采集卡構成的高分辨率全景視覺系統(tǒng),當進行柱面展開或者局部透視展開時,與普通視頻全景成像系統(tǒng)相比,在圖像清晰度提高的同時,幀速率下降為4f/s~6f/s,實時性大大降低,不能滿足實時觀測的應用領域的要求。另外通用計算機處理系統(tǒng)由于其體積、重量和穩(wěn)定性等方面原因,在苛刻條件下亦無法使用。
1 全景系統(tǒng)介紹
1.1 全景成像原理

  系統(tǒng)采用雙曲面折反射式全景成像,折反射全景成像系統(tǒng)可根據(jù)是否滿足單視點成像約束分為單視點成像系統(tǒng)和非單視點成像系統(tǒng)。在監(jiān)視和場景的三維重建應用中,要求獲得透視圖像,因此在系統(tǒng)設計時應滿足單視點約束,保證系統(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ù)字液晶顯示器構成,分辨率為1 024×768,刷新頻率為60Hz。
2 嵌入式硬件設計
2.1 FPGA核心處理系統(tǒng)

  FPGA核心處理系統(tǒng)采用Altera公司的Cyclone II 處理器EP2C35F484C8。在Cyclone系列低成本FPGA中,Cyclone II FPGA系列是第二代產品,采用TSMC的1.2V、90nm、低k絕緣工藝,具有比第一代產品更多的性能優(yōu)勢,密度功能進一步提高。具有33 216個邏輯單元(LE),密度是第一代Cyclone FPGAs的三倍,每LE最低的成本;具有105個M4K的RAM,共組成483 840bit可用RAM,可達到250MHz的性能。有35個18×18bit或70個9×9bit嵌入式乘法器;跨越整個期間的16個低斜移、全局時鐘網(wǎng)絡,有16個專用輸入時鐘引腳反饋;4個鎖相環(huán)(PLLs),每個具有3個輸出抽頭,具有可設置帶寬、可設置占空比、擴譜時鐘、鎖定探測功能,以及具有移相功能的頻率合成,可提供片內和片外全面的系統(tǒng)始終管理。除FPGA之外,電源系統(tǒng)有由AMS1084-3.3構成的3.3V供電,由AMS1084-adj調整出來的1.2V供電部分。配置芯片為EPCS16,時鐘晶振為50MHz。
2.2 高速存儲系統(tǒng)設計
  圖像處理系統(tǒng)對存儲設備要求很高,不僅需要有大的存儲容量,還要有非常高的存儲速度。針對本系統(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)使用對單存儲體分時復用讀寫的機制,可簡化硬件設計和降低成本。系統(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),此相機內部處理系統(tǒng)也是由一片一百萬門的FPGA和一個32位處理器組成,最后由美國國家半導體公司的DS90CR287MTD轉換成LVDS信號,由Camera Link接口將圖像傳輸出去。與DS90CR287MTD配套使用的芯片為DS90CR288AMTD,所以本系統(tǒng)使用DS90CR288AMTD作為Camera Link協(xié)議的解碼芯片。具體使用中,在板級布線時,尤其應注意差分走線等長、平行、結成對耦等原則,這樣會使信號的高頻特性達到最好。
  在顯示終端方面,沒有選擇XGA接口的顯示器,因為所有模擬接口的液晶顯示器都是為了兼容以前的陰極射線管(CRT)顯示器,而模擬信號傳輸存在一些缺點,如信號衰減、易受干擾,清晰度和細節(jié)表現(xiàn)力不高等。液晶顯示器本身就可以由數(shù)字信號進行控制,所以本系統(tǒng)選用LVDS接口的液晶顯示器,型號為上廣電的SVA150XG04BT,分辨率為1 024×768??刂菩酒瑸樯蠌V電推薦的平板液晶顯示器LVDS接口芯片DS90C385A。
3 AVALON總線IP核設計
3.1 Avalon總線規(guī)范

  在采集IP核設計上,采用具有可變等待周期的突發(fā)傳輸,在展開顯示IP核設計上,采用具有可變等待周期和可變延遲的流水線傳輸。下面分別介紹這兩種傳輸模式。Avalon接口可使用突發(fā)傳輸屬性。該傳輸方式將多次傳輸作為一個單元來執(zhí)行,而不是將每個數(shù)據(jù)單元作為一次獨立的傳輸。當每次處理來自主端口的多個數(shù)據(jù)單元時,突發(fā)傳輸是從端口能達到最高效率的數(shù)據(jù)吞吐量。流水線傳輸使得主外設可以發(fā)起一次讀傳輸,轉而執(zhí)行一個不相關的任務,等外設準備好數(shù)據(jù)后再接收數(shù)據(jù)。這個不相關的任務可以是發(fā)起的另一次讀傳輸,盡管上一次讀傳輸?shù)臄?shù)據(jù)還沒有返回。在取指令操作和DMA操作中,流水線傳輸非常有用。在這兩種狀態(tài)下,CPU或DMA主外設會預取期望的數(shù)據(jù),從而使同步存儲器處于激活狀態(tài),并減少平均訪問時間。
3.2 Camera Link接口協(xié)議分析
  Camera Link是從Channel Link技術基礎上發(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)對通用相機的控制,他們被定義為相機的輸入和圖像采集卡的輸出。相機生產商設定這些信號來滿足特殊產品的需要。這4個信號是:Camera Control 1~4。2個LVDS對已經(jīng)被分配為實現(xiàn)相機和圖像采集卡之間的異步串行通信,相機和圖像采集卡應至少支持9 600b/s的波特率,這兩個信號是SerTFG和SerTC。
3.3 圖像采集存儲IP核設計
  高分辨率數(shù)字相機的像素為400萬,幀率為15f/s,數(shù)據(jù)輸出時鐘為40MHz,數(shù)據(jù)寬度為16bit。如此大數(shù)據(jù)量的采集及寫入RAM是使用CPU操作難以完成,所以編寫了Avalon總線主外設,將采集到的數(shù)據(jù)以DMA的方式寫入SRAM。Avalon總線傳輸支持多種數(shù)據(jù)傳輸方式,在這個主外設中,為了使數(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核設計
  在圖像顯示IP核設計上,讀取SRAM內的圖像數(shù)據(jù)時不宜采用突發(fā)傳輸模式,因為全景視覺系統(tǒng)圖像顯示需要先對環(huán)形的全景圖像進行非線性還原,這涉及到大量的非連續(xù)地址圖像數(shù)據(jù)讀取,因而不適合使用突發(fā)傳輸。而Avalon總線協(xié)議支持多達8級流水線的讀傳輸,可以很好地解決這一問題。流水線傳輸時序如圖5所示。

?

4 全景圖像展開算法設計與實現(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ù)顯示效果調整R′的大小,使顯示的寬高比例滿足實際比例,從而達到滿意的觀察結果。

?


4.3 FPGA實現(xiàn)展開
  如圖8設計的Avalon總線系統(tǒng),在對全景圖像數(shù)據(jù)進行采集顯示以及非線性展開處理時,為了達到15f/s的實時顯示采集性能,全部使用Verilog HDL編寫,這樣就可以做到所有功能模塊都并行處理。Verilog屬于硬件描述語言,優(yōu)點是執(zhí)行效率高,缺點是無法進行復雜的數(shù)學運算,如展開公式中用到的三角函數(shù)、除法運算等??紤]到FPGA內部有高速的SRAM,所以查表可以很好地解決這一問題。除法運算轉換成移位運算。在FPGA內部調用宏功能模塊,生成ROM,并用正弦和余弦表來對其進行初始化。本系統(tǒng)中使用7 200點的正余弦表,精度為16位,足以滿足要求。用Visual C++生成表,并作乘以1 024的處理。因為Verilog只能處理整數(shù),最后處理時將處理結構右移10位,即可將結果還原回真實值。

?


  系統(tǒng)的執(zhí)行過程就是邊讀取內存中像素數(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.
?

?

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。