嚴 飛,宋振聲,劉銀萍,劉卿卿,2,蔡靜怡
(1. 南京信息工程大學 自動化學院,江蘇 南京 21004;2. 江蘇省大氣環境與裝備技術協同創新中心,江蘇 南京 210044;3. 南京信息工程大學 大氣物理學院,江蘇 南京 210044)
視覺在人們日常生活中扮演著重要的角色,研究表明人類80%的環境信息是通過視覺獲取的[1],這說明視覺是人們獲取外界信息最主要的方式。近年來,隨著3D電影行業的火熱,立體顯示技術被推向一個新的發展熱潮。立體顯示具有很好的立體感和縱深感,被廣泛應用于醫療等領域[2]。
在國外,2010年世界上首例3D內窺鏡微創手術在英國吉爾福德順利實施[3]。BAlaraimi等人于2014年針對3D內窺鏡攝像系統與傳統2D內窺鏡系統的優劣做了相關研究。研究發現,對于未經過視覺問題矯正的新手來說,他們操作3D內窺鏡系統時可以更快地上手,并且重復操作和操作錯誤次數均比他們操作傳統2D內窺鏡要少[4]。Storz等人在比較傳統的2D內窺鏡系統和3D內窺鏡系統時,針對操作精度和工作速度方面進行了測試研究。在其中的4項任務中,參與者在3D系統中操作的錯誤和操作的時間比2D系統下少。有經驗的外科醫生在3D系統下操作困難的任務時則節省了更多的時間[5]。Sinha等人對 200例3D腹腔鏡手術和200例2D腹腔鏡手術進行了分析,統計結果直接體現了3D內窺鏡較傳統2D系統在手術時的優勢[6]。另外,一些研究表明,3D內窺鏡攝像系統在微創手術中的表現都要優于傳統的2D內窺鏡系統[7~9]。Kong等人對3D內窺鏡系統與傳統2D系統的性能進行了比較。在這項研究中,新手在使用2D和3D操作時間上沒有太大的差異,但是3D系統上的操作誤差明顯比2D要少[10]。
在國內,2012年首例3D內窺鏡下腎盂旁囊腫切除術在于北京協和醫院順利進行[11]。蔣堃等人針對傳統內窺鏡和3D內窺鏡技術治療效果進行了對比研究[12]。就腎上腺腫瘤切除術的案例對比發現,使用3D內窺鏡系統進行手術的時間比傳統內窺鏡手術時間縮短很多,并且手術中出血量也少。李漢忠和劉皓等分別就3D內窺鏡系統在泌尿外科手術和膀胱前列腺切除手術中的成功應用[13-14],國內首例3D內窺鏡在神經外科手術中成功實施,見證了3D內窺鏡在高難度手術中的成功應用[15]。由此可見,3D內窺鏡提供的3D醫療影像給醫生帶來很好的立體視野的優勢,并且手術操作準確性大大提高。
針對3D內窺鏡攝像系統的研究,Liu等人提出以FPGA為核心的小體積、低成本、高性能的輔助式3D內窺鏡系統,能顯著降低手術體腔損傷的風險[16]。也有部分學者利用其他技術手段對傳統2D內窺鏡進行立體化處理,例如Oh等人提出的對2D腹腔鏡成像系統進行三維重建的研究[17]。另外,Lee等人提出的利用特征追蹤技術對內窺鏡系統進行深度采樣進而生成深度圖,可以將傳統的2D內窺鏡視頻進行3D可視化轉換[18]。Zhao等人提出了一種基于交互式三維導航系統的圖像導航手術,可以提高醫學成像效果和診斷準確性,為圖像引導手術相關方向提供了參考價值[19]。
綜上所述,立體顯示已經被證實能夠為醫生診斷病人提供非常好的幫助。本文擬開發一種基于FPGA的4K裸眼立體顯示系統,旨在為醫用高清晰3D顯示領域提供一種切實可行的設計方案。
立體顯示系統控制卡如圖1所示,包括4路SDI輸入接口、4路SDI環路輸出接口、DP輸出接口、DDR3存儲模塊以及外圍電路(電源電路、配置電路和時鐘電路)模塊,硬件組成部分如圖2所示。其中,4路SDI輸入接口在FPGA邏輯設計時僅用了2路,其余兩路輸入為冗余設計。
系統支持3G-SDI視頻輸入和DP 1.2視頻輸出。系統主控芯片使用的是型號為XC7K325TFFG900-2的一款FPGA,屬于Xilinx 公司Kintex 7系列。

圖1 立體顯示系統控制卡Fig.1 Control card of stereo display system

圖2 立體顯示系統硬件組成Fig.2 Hardware components of three-dimensional display system
據FPGA特性如下:
(1)采用FFG900封裝,速度等級為-2;
(2)擁有16個GTX(GTX Transceivers,7系列FPGA高速吉比特收發器)收發器,傳輸速率高達6.6 Gbit/s;
(3)擁有500個I/O,分別有350個支持1.2 V至3.3 V I/O電壓的HR(High-range,高范圍)I/O和150個支持1.2~1.8 V I/O電壓的HP(High-performance,高性能)I/O。其中高性能I/O口為FPGA與外部高速器件之間數據交互提供保障。
該系統采用模塊化的設計思路,對系統圖像采集模塊、圖像格式解析模塊、圖像處理模塊以及圖像輸出模塊進行詳細設計。其中圖像處理模塊包括圖像縮放、圖像緩存以及圖像拼接。
前端采集到的圖像經過縮放處理、同步緩存后再拼接輸出。圖像輸入為1 920×1 080,經過縮放模塊后放大至1 920×2 160,最后兩路視頻拼接為4K(3 840×2 160)輸出,輸出的圖像采用SBS拼接方式。圖像處理過程如圖3所示,在設計各個模塊時,以單路圖像處理的方式進行設計,當兩路圖像同時處理時,能夠直接復用部分功能模塊,以達到節約資源的目的。

圖3 本文圖像處理流程Fig.3 Image processing process in this paper
SDI輸入參考時鐘為148.5 MHz和148.5/1.001 MHz,硬件上由時鐘管理芯片SI5338提供。另外,該參考時鐘頻率也兼容HD-SDI模式。SDI輸入邏輯設計框圖如圖4所示。
SDI輸入邏輯設計模塊中,主要包括GTX模塊以及SDI模塊。GTX模塊包含GTX收發器(7 Series FPGAs Transceviers),根據GTX收發器的結構特性,其參考時鐘可以直接接入CPLL或者通過GTX Common模塊接入QPLL。

圖4 SDI輸入邏輯設計框圖Fig.4 Block diagram of SDI input logic design
SDI模塊包含SMPTE Core和Control模塊。SMPTE Core支持SD-SDI、HD-SDI、3G-SDI Level A、3G-SDI Level B-DL和LeveB-DS傳輸模式,在本文中僅討論3G-SDI傳輸模式。Control模塊用于當SDI輸入模式改變時重配置GTX核以及實時檢測SDI輸入比特率。SDI模塊輸出的rx_ds1a、rx_ds1b、rx_ds2a和rx_ds2b為視頻數據,其中rx_ds1a和rx_ds2a用于輸出視頻信號的亮度分量,rx_ds1b和rx_ds2b用于輸出視頻信號的色彩分量。僅當傳輸3G-SDI level B信號時,rx_ds2a和rx_ds2b才有有效值輸出。

圖5 3G-SDI Level A 解析Fig.5 Analysis of 3G-SDI Level A
在3G-SDI Level B模式下,數據流雙鏈路傳輸,在鏈路上存在EAV的4個字時,rx_trs信號被置高。采集到的數據如圖5所示,rx_level_b_3g為高電平,表示當前傳輸的是3G-SDI Level B視頻流。
解析后的圖像需要進行YUV到RGB的格式轉換,然后使用Xilinx提供的VPSS核實現圖像縮放,每路視頻放大至1 920×2 160再拼接輸出,下節重點闡述圖像的縮放過程。
本文使用VPSS核實現雙三次插值縮放算法僅適用于逐行掃描的圖像,即需要輸入圖像滿足從左到右和從上到下的掃描方式,有效輸出圖像也按此順序給出。
視頻縮放是一種二維濾波操作形式,可以近似為公式(1)。其中,x和y是圖像上離散的像素點的坐標,Po(x,y)是在(x,y)位置生成的輸出像素;Pi(x,y)是參與運算的輸入圖像的(x,y)位置的像素;在雙三次插值縮放算法中,C(i,j)是取決于雙三次插值基函數的系數數組;HTaps和Vtaps分別為濾波器中的水平和垂直步長,在雙三次插值中,步長為4,即新產生的像素是由源圖像中16個關聯像素點計算而來。

(1)
縮放模塊中,先對圖像進行垂直濾波運算,產生一個中間結果Pint,見式(2),A[i]是垂直插值系數權重。

(2)
垂直分量的輸出結果Pint輸入到水平濾波運算中,見式(3),B[i]是水平插值系數權重。

(3)
垂直和水平運算分離意味著可以簡化乘法操作,以達到節省FPGA資源的目的。例如,在圖像縮放過程中,輸出期望像素P在源圖像中的位置如圖6所示,F0~F15為點P關聯的16個像素。

圖6 期望像素的位置Fig.6 Position of the desired pixel
系數權重通過將期望像素位置的小數部分dx和dy計算得出,水平方向系數權重A[i]和垂直方向系數權重B[i]如式(4)所示。
在雙三次插值算法中,采用不同的插值基函數,其計算量以及縮放效果都有所不同,常用的基函數如keys的雙三次插值基函數如式(5)所示,它是一個連續并且具有連續一階導數的函數。

(4)
(5)
通常來講,FPGA執行插值運算時,插值系數數組的權重值被定義成一個小型的查找表,這樣可以節省FPGA運算資源的使用。
圖像縮放模塊邏輯架構如圖7所示。AXI4總線用于配置Scaler模塊的工作模式,圖像先經過Video In to AXI4-Stream模塊轉換成AXI4S的形式輸入到Scaler模塊,在Scaler模塊內圖像并以AXI4S的形式參與運算及輸出。Video Timing Controller與AXI4-Stream to Video Out協同工作,vtg_ce信號用于使能Video Timing Controller輸出時序給AXI4-Stream to Video Out用于輸出圖像數據以及時序。

圖7 縮放模塊邏輯架構Fig.7 Logical architecture of scaling module
縮放后,將兩路分辨率為1 920×2 160的圖像存儲到內存中,讀取時采用左右拼接的輸出方案,實現3 840×2 160的圖像數據流,然后將該數據流按照DP圖像時序輸出,即實現雙路3G-SDI圖像的SBS格式輸出。
根據裸眼3D顯示器的技術規格,需提供固定拼接方式的3D圖像輸入格式。有2種拼接方式的3D圖像格式,分別為SBS和TOP-BOTTOM的拼接方式。SBS拼接方式即左邊一半為左圖,右邊一半為右圖。TOP-BOTTOM即左、右圖上下排布,上一半為左圖,下一半為右圖。該系統采用SBS拼接方式,拼接后的圖像采用DP 1.2接口輸出,輸出邏輯設計框圖如圖8所示。

圖8 DP輸出邏輯設計圖Fig.8 Diagram of DP output logic design
輸出部分包括時鐘配置模塊、系統復位模塊MicroBlaze處理器、AXI 仲裁模塊和一些AXI4接口的外設。AXI4外設包括串口UART模塊、中斷控制模塊和DP核。各模塊之間通過AXI4總線掛在AXI仲裁模塊上。視頻信號由DP核輸出,通過DP端子輸出到帶有DP接口的顯示器。
圖像輸出模塊的設計,包括圖像輸出邏輯設計圖中的硬件時鐘配置、輸出接口配置、圖像輸出時序以及MicroBlaze 軟核控制流程幾個部分,旨在輸出3 840×2 160@60 Hz的圖像。
圖像輸出模塊用到的時鐘分別為sys_clk,pix_clk和DP參考時鐘lnk_clk_p,lnk_clk_n。sys_clk為Microblaze處理器和AXI域時鐘,其頻率為100 MHz。DP核參考時鐘為135 MHz差分時鐘,由時鐘管理芯片SI5338提供。視頻像素時鐘pix_clk頻率根據實際圖像分辨率、幀率以及采用幾線制像素輸出接口共同決定。這里采用4像素接口輸出3 840×2 160@60 Hz圖像,因此pix_clk頻率為148.5 MHz。DisplayPort核定制為DP 1.2,色彩深度為16 bit,支持4像素接口,最大通道數為4,最大鏈接速率為5.4 Gbit/s。
DisplayPort物理層使用雙向AUX通道接口信號,4個高速通道的4個收發器映射到FPGA的MGT_BANK_118中的4個GTX收發器,DP內核基于AXI4-Lite接口用以配置,支持1.62、2.7或5.4 Gbps/s的1、2或4通道的自動通道速率和寬度調整。MicroBlaze處理器通過AXI4-Lite接口與DP核連接。用戶可以通過軟核對TX進行初始化,MicroBlaze處理器通過對DP核的相關寄存器寫入和讀取操作來啟動和維護主鏈路。MicroBlaze首先完成對各AXI外設包括AXI Uart lite和DisplayPort Source IP的初始化,然后對DP核進行控制。MicroBlaze對DP核的控制流程圖如圖9所示。

圖9 MicroBlaze控制DP流程Fig.9 Control flow diagram of MicroBlaze on DP
在VESA標準里面,3 840×2 160@60 +消隱 = 4 400×2 250@60,像素時鐘頻率為594 MHz。若采用4像素接口,則像素時鐘頻率變為594 MHz/4=148.5 MHz,滿足設計需求。一個像素時鐘傳輸4個像素,因此傳輸一行3 840個像素需要960個像素時鐘周期。輸出的3 840×2 160@ 60Hz圖像行、場各參數如表1所示,水平相關的幾個參數是標準值的1/4,垂直相關的幾個參數與標準一致。

表1 輸出圖像的行、場參數Tab.1 Row and field parameters of output image

圖10 DP輸出3 840×2 160@60Hz圖像Fig.10 DP outputs 3 840×2 160@60Hz images

圖11 顯示器的EDID信息Fig.11 EDID information of display
驗證設備使用醫療4K超高清顯示器,通過MicroBlaze軟核配置DP核輸出3 840×2 160@60 Hz的工作模式,同時Video Pattern模塊輸出4像素接口時序,圖像數據為47’h0000_0000_FFFF即顏色為純藍色。如圖10所示,從局部放大的顯示器的控制界面可以看到當前顯示的圖像分辨率的信息。
通過AUX通道讀取的顯示器的EDID信息如圖11所示,EDID信息由串口打印。
對FPGA進行編程時,JTAG編程器與下載電路的連接通過一個7 PIN間距1 mm的接插件端子,端子的接口定義為一種非常規接口的JTAG編程口。兩路SDI輸入,一路DP輸出。驗證設備使用的是普通的醫療4K超高清顯示器。通過MicroBlaze軟核配置DP核輸出3 840×2 160@60 Hz的工作模式。

圖12 系統邏輯資源使用情況Fig.12 Usage of system logical resource
系統邏輯資源消耗如圖12所示,該統計數據來自Vivado 2017.3工具對本設計編譯后的結果,BUFG、MMCM、BRAM使用較多,占到資源的50%以上。
系統總片上功耗主要分為設計的動態功耗和靜態功耗。靜態功耗分為器件靜態和設計靜態,器件靜態表示當器件上電并且沒有設置時晶體管泄露功率,設計靜態表示當器件被設置也沒有切換活動時消耗的功率。本設計編譯后的功耗統計如圖13所示。

圖13 系統功耗分析Fig.13 Analysis of system power

圖14 系統實驗環境Fig.14 System experimental environment

圖15 2D模式SBS圖像Fig.15 2D mode SBS image
從圖13可以計算出,總的片上功耗為4.598 W,其中動態功耗占系統總功耗的96%。FPGA的功耗統計為系統的散熱設計和電源設計提供了參考。
系統實驗環境如圖14所示,右側顯示器為4K高清醫用裸眼3D顯示器,左側電腦主機為控制電腦。系統前端采用兩路SDI信號輸入,通過DP接口輸出SBS格式的立體圖像到裸眼3D顯示器,顯示器輸出3D立體的效果。由于拍攝的是二維圖片,所以從照片上不能明顯看出裸眼3D效果。
輸出給3D顯示器之前的圖像顯示效果如圖15所示,圖像采用SBS拼接方式,分辨率為3 840×2 160,刷新率為60 Hz。
本文設計的基于FPGA的4K裸眼立體顯示系統支持參考時鐘為148.5 MHz的雙路SDI-1080P高清視頻輸入,經FPGA做格式變換、物理層編解碼和拼接等圖像處理后,可獲得3 840×2 160@60 Hz的SBS拼接格式圖像,該圖像可直接驅動裸眼立體顯示器。經驗證,該系統支持單人兩視點觀看,最佳觀看距離為2 m,可視角度為±35°。本系統為高清晰3D顯示和高速視頻處理領域提供一種切實可行的設計方案,有望在醫療教學、會診和立體手術室等領域取得更進一步的發展。