黃德天,劉雪超,吳志勇,梁敏華
(1.中國科學院長春光學精密機械與物理研究所,長春130033;2.中國科學院研究生院,北京100039)
隨著數字圖像處理理論的不斷成熟,各種圖像處理系統已廣泛應用于太空探索、遙感成像、工業過程控制、醫學研究等軍事和民用領域。然而,大部分的圖像處理系統都是采用基于PCI或USB的采集卡,再經由計算機實現圖像處理和動態顯示。這樣造成系統的成本較高,體積較大,不便于攜帶。此外,當相機幀頻較高,數據量較大時,圖像的顯示將耗用計算機過多的資源,且算法的實時性受到計算機自身處理能力的限制[1]。這對于實時性能要求較高的系統,通常很難滿足要求。隨著FPGA和DSP的處理能力越來越強大,以及基于FPGA或DSP開發的系統具有模塊化設計、編程靈活、算法實現簡單、實時性好、成本低、功耗小和體積小等優點,基于FPGA、或DSP、或FPGA +DSP的圖像處理系統具有廣泛的應用前景[2-3]。
CameraLink解決了圖像數據輸出和采集之間的速度匹配問題,可方便地為高速數字相機和圖像采集卡提供簡單、靈活的傳輸[4]。目前,大部分CCD/CMOS高速數字相機都采用CameraLink接口,能夠提供高分辨率、高幀頻、高靈敏度、高對比度的圖像信號源,有著非常廣闊的應用前景。隨著基于CameraLink協議接口在數字相機的廣泛使用,圖像數據高速穩定的采集和圖像的實時處理成為當前研究的兩個熱點[5]。
筆者提出了一種基于CameraLink接口的高速實時數字圖像采集處理系統,通過充分利用FPGA與DSP的內部資源,使算法高效執行,系統不但完成了對幀頻為500幀/s、分辨率為160×128×8 bits的圖像進行實時采集和處理,同時還實現了從CameraLink信號到SDI信號的視頻轉換。
CameraLink是由NI(National Instruments)、攝像頭供應商和其他圖像采集公司于2000年10月聯合推出的一種基于視頻應用的通信接口,是在Channel Link技術基礎上發展而來的。Channel Link使用一個并轉串驅動器(Driver)和一個串轉并接收器(Receiver)傳輸數據,其數據傳輸速率可達2.38 Gbit/ s。驅動器將28位CMOS/TTL信號以7:1方式串行化為4組LVDS數據流,一個鎖相環傳輸時鐘通過第5組LVDS鏈路與其他LVDS數據流并行傳輸。接收器接收4組LVDS數據信號和1組LVDS時鐘信號,將數據流轉換回28位的CMOS/TTL并行數據信號和1路時鐘信號。由此可見,Channel Link使用5對線纜完成了28位數據信號和1路時鐘信號的傳輸,減少了線纜的使用數量。圖1是Channel Link原理圖。
CameraLink信號主要包括視頻數據信號、相機控制信號和串行通信信號3個部分。其中視頻數據信號是Camera Link的核心,主要包括4對差分數據信號(X0-~X0+、X1-~X1+、X2-~X2+、X3-~X3+)和1對差分時鐘信號(X clk-~X clk+)。另外,CameraLink具有3種不同的結構:Base型結構、Medium型結構和Full型結構。筆者研究的是基于 Base型結構的CameraLink傳輸。

圖1 Channel Link原理圖Fig.1 Chart of Channel Link
圖2為設計的高速實時圖像采集處理系統的硬件結構框圖,整個系統的工作流程首先由CameraLink接收器DS90CR288A將相機輸出的LVDS信號轉換成LVTTL信號并直接送入FPGA,在相機同步信號的控制下,由FPGA完成對圖像數據的采集,并由FPGA進一步完成圖像的預處理;然后,通過啟動DSP的EDMA操作將圖像數據從FPGA經DSP的VP1口搬移到SDRAM緩存,為提高DSP的運算效率,先將數據從SDRAM搬運到DSP的二級緩存,再對這些數據進行一系列復雜的圖像處理運算,當完成1幀處理時,DSP產生內部中斷,觸發EDMA操作將處理完的圖像數據從DSP的VP2口送至CLC021;最后,通過CLC021完成編碼,生成SDI視頻在監視器上實時顯示。整個高速實時圖像采集處理系統主要包括以下個單元模塊:CameraLink接口模塊、FPGA圖像采集和預處理模塊、DSP圖像處理模塊、SDI圖像顯示模塊。

圖2 系統硬件結構框圖Fig.2 Hardware structure of the system
考慮到選用的FPGA不支持LVDS信號模式,而CameraLink相機是使用LVDS信號模式進行數據傳輸的,因此,在相機和FPGA之間必須加有CameraLink接口模塊,用于將相機輸出的LVDS信號轉換為FPGA支持的LVTTL信號。根據CameraLink協議的要求,使用MDR26接頭作為相機數據的輸出接口,DS90CR288A接收基于LVDS的4對差分數據信號和1對差分時鐘信號,輸出28位圖像信號(RxOUT0-RxOUT27)和1位像素時鐘信號(RxCLK OUT)。其中28位圖像信號包括24位圖像數據信號和4位圖像數據同步信號分別對應Spare、LVAL(行同步信號)、FVAL (幀同步信號)和DVAL(數據同步信號)。最后,將DS90CR288A轉換得到的 LVTTL信號送入FPGA模塊。
針對圖像預處理算法簡單、運算量大的特點,使用FPGA硬件實現可減輕DSP的運算負擔,因此系統的圖像采集和預處理工作由FPGA完成。綜合占用面積、考慮成本以及后續的軟件升級,FPGA的邏輯資源要盡量豐富,系統選用ALTERA公司 Cyclone III系列低成本高性能芯片EP3C55F484。其主要特點有:55 856個邏輯單元,260個M9K存儲模塊,存儲器容量為2.285 Mbyts,156個18×18的乘法器,4個PLL,20個全局時鐘,最多377個可用的I/O引腳。
系統采用雙口RAM和FPGA結合的方式對圖像進行采集和預處理。這是由于雙口RAM具有兩套獨立的地址、數據和控制總線,可從兩個端口同時讀寫而互不干擾,具有隨機讀取的優點,可達到很高的傳輸速度。FPGA的工作流程如圖3所示,在相機同步信號的控制下,經過信號轉換的圖像數據被FPGA所采集。

圖3 FPGA工作流程框圖Fig.3 W orking flow chart of FPGA
在FVAL的控制下,圖像數據經過中值濾波、直方圖統計、簡單的閾值分割等預處理;處理后的圖像數據依次存入到雙口RAM中,同時對有效的相機像素時鐘(RxCLK OUT)進行計數,當計數值接近于一幅圖像大小時,給DSP發送一個中斷信號,DSP收到這個中斷信號后對雙口RAM進行讀操作,讀取整幅圖像。
筆者設計的系統硬件平臺選用TI公司的高性能DSP芯片TMS320DM642(簡稱:DM642)為核心器件。DM642采用兩級Cache存儲器體系結構,包括一個16 KByte一級程序緩存(L1P)和一個16 KByte一級數據緩存(L1D),以及一個256 KByte可配置的二級存儲器/緩存(L2);片內含有64個通用寄存器和8個相互獨立且可并行工作的功能單元,通過高效的流水線操作,一個指令周期最多可并行執行8條指令;此外,DM642還帶有3個視頻口等。
首先對DM642芯片進行初始化,同時將VP1口配置為單通道的8位原始數據視頻捕獲端口、VP2口為單通道的8位BT.656視頻顯示端口。預處理后的圖像數據由FPGA先通過VP1口的FIFO緩沖器,當圖像數據達到一幀時,觸發一次EDMA中斷,DM642根據EDMA事件將數據搬運到SDRAM中;在DM642進行處理時,先通過EDMA將緩存到SDRAM的圖像數據通過EMIF接口傳輸至2級緩存,然后對圖像數據經過相應的處理,如目標的識別與提取、邊緣細節的增強和插值放大等處理;等DM642完成一幀圖像數據的處理時,產生內部中斷觸發 EDMA控制器將DM642處理完的圖像數據從VP2口送出。
該系統DM642的軟件框架是基于DSP/BIOS實時操作系統設計的。DSP/BIOS提供4種類型的線程:硬件中斷(HWI)、軟件中斷(SWI)、任務(TSK)和后臺線程(IDL),對應的優先級依次下降。在系統的設計中使用了3個TSK,分別為: TskCap任務,對應的任務函數是Tsk ImageCap(),主要完成圖像采集工作;TskPro任務,對應的任務函數是TskImagePro(),主要完成圖像數據處理工作;TskDis任務,對應的任務函數是TskImageDis (),主要完成圖像顯示工作。3個任務設置為相同的優先級,由同步通信模塊(SCOM)來完成3個任務之間的切換,如圖4所示。

圖4 任務間切換的流程圖Fig.4 Chart of tasks exchange
SDI(Serial Digital Interface)是數字分量串行接口,已被世界上眾多數字視頻設備生產廠家普遍采納并作為標準視頻接口。將DM642處理后的BT.656數據轉換為SDI數據是利用美國半導體公司的CLC021芯片實現。CLC021是一款功能強大的并串轉換芯片,10位BT.656數據在27MHz時鐘控制下并行寫入CLC021的內部移位寄存器中,然后在10倍頻時鐘控制下串行輸出,完成數據的并串轉換,生成符合SDI格式的信號。傳輸時,從數據的最低位到數據的最高位依次先后向外輸出。該系統中DM642送入的是8位視頻數據,CLC021將其默認放在數據的高8位,而將低2位數據置低。
為驗證該圖像采集處理系統的功能進行了實驗,圖像源來自Mikrotron系列的MC1302相機。MC1302是基于CameraLink接口的CMOS相機,將其幀頻設置為500fps,圖像的分辨率設置為160 ×128像素,像素深度為8位。通過該系統先對圖像進行采集,再對圖像進行中值濾波、直方圖統計、邊緣細節增強和插值放大等處理后,得到了如圖5所示效果,圖5(a)為處理前的圖像,圖5(b)為經過該系統處理后的圖像。同時,該系統實現了將相機輸出的CameraLink視頻信號轉換為顯示的SDI視頻信號,并取得了很好的效果。

圖5 實驗圖像效果比較Fig.5 Com parison of experimental im ages
筆者設計并實現了一種基于CameraLink接口標準的高速實時圖像采集處理系統,系統的設計基于模塊化思想,采用FPGA完成圖像的采集和預處理,采用DSP完成復雜的圖像處理運算。通過實驗驗證,系統可以實時完成500幀/s的圖像采集和運算處理工作,同時,系統可實現將CameraLink視頻信號轉換為SDI視頻信號的功能。此外,該系統已經成功應用到實際工程項目中,可替代基于計算機的高速實時圖像采集處理系統,實現了實時性高、處理數據量大、體積小、成本低的目的。
[1]馮偉昌,林玉池,何冬,等.基于FPGA的雙通道實時圖像處理系統[J].傳感技術學報,2010,23(8): 1118-1122.
Feng Wei-chang,Lin Yu-chi,He Dong,et al.Dualchannel image real-time processing system based on FPGA[J].Chinese Journal of Sensors and Actuators,2010,23(8):1118-1122.
[2]李冬梅,王延杰,王長宇,等.基于FPGA的高速實時圖像采集和自適應閾值算法[J].吉林大學學報:工學版,2010,40(2):534-538.
Li Dong-mei,Wang Yan-jie,Wang Chang-yu,et al. High-speed real-time image acquisition and auto-adapted threshold processing based on FPGA[J].Journal of Jilin University(Engineering and Technology Edition),2010,40(2):534-538.
[3]陳炎斌,金鋼.基于Camera Link標準的DSP+FPGA高速實時數字圖像處理系統設計[J].現代科學儀器,2010(6):61-63.
Chen Yan-bin,Jin Gang.A DSP+FPGA high-speed real-time digital image processing system based on the standard of camera link[J].Modern Scientific Instruments,2010(6):61-63.
[4]徐志躍,張田甜.基于CameraLink的串行圖像采集系統設計[J].計算機應用,2010,30(6):1701-1707.
Xu Zhi-yue,Zhang Tian-tian.Design of serial image acquisition system based on Camera Link[J].Journal of Computer Applications,2010,30(6):1701-1707.
[5]王鳴浩,陳濤,吳小霞.基于Camera Link接口的高幀頻數字圖像采集顯示系統[J].微電子學與計算機,2011,28(3):149-152.
Wang Ming-hao,Chen Tao,Wu Xiao-xia.High frame rate digital image acquisition and display system based on camera link interface[J].MicroElectronics and Computer,2011,28(3):49-52.