?

基于Zynq 的醫用內窺鏡視頻流采集與處理系統設計與研究?

2024-01-29 02:24王云峰范正吉景金榮洪應平
電子器件 2023年6期
關鍵詞:視頻流內窺鏡時鐘

王云峰,何 鑫,范正吉,景金榮,洪應平

(中北大學儀器科學與動態測試教育部重點實驗室,山西 太原 030051)

在醫療領域,內窺鏡是用來觀察人的內部體腔的,通過它能直接觀察內臟器官的組織形態,提高了診斷的準確性,成為醫療診斷的可靠工具。結合醫用內窺鏡施行的內外科診療技術的諸多優點,已成為醫學界的共識?,F代科技的進步推動著醫用內窺鏡的技術產品迅速發展[1]。隨著科技的不斷進步,CMOS 攝像頭的尺寸也在不斷縮小,內窺鏡在醫療領域的用途也越來越廣泛。同時對成像質量的要求也越來越高。受限于半導工藝,內窺鏡CMOS 輸出的圖像信號往往會帶有噪聲、色差等,故需要設計相應的處理算法。由于醫用內窺鏡的特殊用途,算法處理必須保證實時性。

目前的內窺鏡視頻流采集處理方案有很多種,包括ARM、FPGA、DSP、專用SOC 等,其中,ARM 體積小,功耗低。但是設計相對不夠靈活,且代碼運行方式為串行工作,在運行復雜算法時占用資源高,效率不足;FPGA 方案的優點是靈活性強,且FPGA 的并行處理機制決定著其在算法很復雜的情況下依然能實現很低的延時。但是FPGA 設計難度大,用“數字電路”的思想去描述算法周期長,且不利于維護和修改;DSP 是一種獨特的微處理器,有自己完整的指令系統。DSP 方案的優點是設計靈活,易于拓展,計算能力強,是數字信號處理的優先選擇。缺點是成本高,設計難度大,占用面積和功耗也有待改進。專用SOC 方案如海思、大華等廠商設計的專門用于圖像處理的芯片,優點是體積小、集成度高、功耗低,內部集成各種圖像處理算法的IP 可以直接調用。缺點是不夠靈活,復雜的圖像處理算法只能調用廠商提供的固定的算法;比較好的解決方案就是用上述方案的組合,取長補短??紤]性能、體積、功耗等因素,Zynq 是個很好的選擇。

Zynq 是Xilinx 公司推出的一款全可編程片上系統處理器,集成了PS(ARM 處理器) 和PL(FPGA),是一種單片ARM +FPGA 的架構。其中PS 處理器部分包含了完整的ARM 處理子系統,而PL 邏輯部分中的資源會隨著芯片級別的不同而不同。這兩個部分相互聯系又可以獨立使用[2]。

針對上述情況,本文設計了一種基于Zynq 的醫用內窺鏡視頻流采集與處理系統,內窺鏡攝像頭的型號為OV6946。Zynq 包含了FPGA(PL)與ARM(PS)的優勢,使設計的系統更加靈活,減少了開發的時間。本系統的目的是采集經OV426 對OV6946進行模數轉換后的數字信號,然后通過Zynq 的PS和PL 端進行協同處理。最后用過HDMI 進行實時圖像輸出。并在視頻流的幀間隔時間內,完成雙邊濾波、白平衡、暗部增強、CCM 等算法處理,以實現實時性要求。結果表明,在HDMI 顯示器上實現了經算法實時處理的OV6946 的圖像,保證低功耗和小體積的同時也完成了高性能、實時的視頻流處理,并可在PS 端快速修改PL 端的許多算法參數,避免了PL 端設計和編譯時長,具有高效性和靈活性。

1 系統總體設計

為了實現視頻流實時性的算法處理,本設計的算法大部分通過Vivado HLS 編寫生成IP,運行在FPGA端,以實現并行處理,涉及到浮點運算的部分在ARM端處理,以節省FPGA 端資源并發揮ARM 在浮點運算上的優勢。同時采集端也用ARM 結合FPGA 的方式,由ARM 端通過SCCB 總線對內窺鏡的運行參數進行配置,由FPGA 端進行DVP 數字圖像信號的采集。輸出端采用FPGA 模擬HDMI 的方式進行輸出,省去了HDMI 芯片,以減小系統的復雜性。

整體系統設計框圖如圖1 所示。分為圖像解碼模塊、圖像處理模塊與圖像顯示模塊三個模塊。

圖1 整體設計框

圖像解碼模塊負責對OV426 輸出的數字信號圖像進行解碼與像素格式轉換。首先由PS 端通過SCCB 總線配置OV426 的工作模式,由PL 端接收OV426 的圖像數字信號,進行RAW10 轉RGB888 處理并緩存進DDR 中,由于OV6946 每個像素處的圖像傳感器在每個像素位置上僅感測一種顏色,并且缺少另外兩種顏色。對于完整的彩色RGB 圖像,我們在每個像素位置需要三種顏色[3]。故需做RAW10 轉RGB888 處理,此處采用雙線性插值法。

圖像處理模塊由PS 與PL 協同處理,具體做法為PL 端在接收數據緩存到DDR3 的同時,對像素進行行累加、列累加、像素統計等數據預備工作,并通過AXI4 總線傳給PS 端,為后續算法使用做準備。白平衡使用灰度世界算法?;叶仁澜缢惴ㄊ且曰叶仁澜缂僭O為基礎的,該假設認為對于一幅有著大量色彩變化的圖像,R、G、B 三個分量的平均值趨于同一個灰度值[4]。上述在PL 準備的數據即可用于灰度世界算法,對于灰度世界算法,本系統在PL端進行所需的加減運算,在PS 端做所需的乘除運算來計算增益。補充了FPGA 對于浮點運算能力的不足,也省去了在PL 端用乘法器和除法器延時需進行時序對齊的麻煩,提高率開發效率。同時,伽馬調節算法也是在PS 端實現,伽馬校正是為了克服人眼視覺系統對于亮度變化的感覺是非線性的而引入的一種傳輸函數,在視頻流、計算機圖形學以及其他成像系統中應用廣泛[5]。伽馬校正是對輸入圖像灰度值進行的非線性操作,使輸出圖像灰度值與輸入圖像灰度值呈指數關系。此部分在PS 端用數組存儲校正值,在PS 端從DDR 中搬運數據的同時,以查找表的方式直接進行伽馬校正。經上述算法處理后再次緩存并由VDMA 讀出并轉換為AXI4-STREAM。去噪與暗部增強使用Vivado HLS 進行加速設計,硬件加速設計將軟件代碼轉換為RTL 電路,輸入輸出接口均為AXI4-STREAM。其中不可綜合的函數或者語句需用Vivado HLS 支持的函數替換[6]。

圖像顯示模塊為HDMI 顯示,HDMI 接口是目前應用最廣泛的高清音視頻接口之一,存在多種可供選擇的傳輸方式[7]。HDMI 接口協議物理層使用TMDS 標準傳輸音視頻數據。最小化傳輸差分信號(Transition Minimized Differential Signaling,TMDS)是美國Silicon Image 公司開發的一項高速數據傳輸技術,在DVI 和HDMI 視頻接口中使用差分信號傳輸高速串行數據。本設計中直接在PL 端模擬HDMI協議,輸出穩定且節省硬件資源與成本。

2 系統硬件設計

本設計選用Xilinx XC7Z020CLG400-2 入門級Zynq 作為主控芯片,設計了一套集圖像解碼、實時視頻流算法處理和輸出顯示的硬件。利用OV426橋接芯片對OV6946 進行模數轉換,然后由Zynq 進行采集、解碼與處理,最后由HDMI 輸出。

2.1 內窺鏡圖像解碼硬件模塊設計

2.1.1 OV6946 攝像頭

CMOS 是內窺鏡攝像頭的核心器件,微型COMS已經在醫療圖像領域得到了廣泛的應用,如胃鏡、腸鏡、腎盂鏡等等。OV6946 彩色圖像傳感器是一種低電壓、高性能、1/18 英寸的CMOS 圖像傳感器,分辨率為400×400 pixel,它通過串行外圍設備接口(SPI)的控制提供RAW 格式的全幀模擬圖像。OV6946 的圖像陣列能夠以30 幀/s(FPS)的速度運行,并簡化了曝光控制??赏ㄟ^SPI 接口進行編程。其硬件原理表示如圖2 所示。

圖2 OV6946 原理示意圖

2.1.2 攝像頭模數轉換單元設計

為了實現對OV6946 的CMOS 輸出模擬信號進行轉換,本設計使用了OV426 橋接芯片。OV426 是一款專為OV6946、OV6948、OCHTA10 等攝像頭設計的一款橋接芯片??蓪⑦@些攝像頭輸出的模擬信號通過內部集成的ADC 和協處理單元轉換為DVP協議的數字信號。OV426 通過SCCB 總線進行寄存器配置,可以配置輸出數據的格式、ISP 功能等。支持BLC、AEC/AGC 和MWB 等功能。其硬件原理表示如圖3 所示。

圖3 OV426 電路設計

2.2 主控單元及電源硬件模塊設計

主控選用Xilinx XC7Z020CLG400-2 入門級Zynq 芯片ZYNQ-7020。PL 邏輯單元為85K,BRAM存儲資源為4.9 Mbit。芯片的速度等級為“-2”。本設計中DDR3 采用美光MT41J128M16HA-187E,容量為2 Gbit。QSPI FLASH 選用W25Q256FVEI,主要用于程序的固化。電源部分統一采用TLV62130RGT,可通過反饋電阻設置其輸出電壓,輸入電壓范圍為3 V~17 V,輸出電壓范圍為0.9 V~5.5 V,輸出電流最大為3 A,完全滿足電源設計需求。主控單元頂層原理圖及電源部分原理圖表示如圖4和圖5 所示。

圖4 主控單元頂層原理圖

圖5 電源部分電路設計

2.3 HDMI 顯示硬件模塊設計

高清晰度多媒體接口(High Definition Multimedia Interface,HDMI)是一種數字化音頻/視頻接口技術,通過FPGA 可以很快地實現驅動[8]。HDMI 1.0 版本于2002 年發布,最高數據傳輸速度為5 Gbype/s。而2017 年發布的HDMI 2.1 標準的理論帶寬可達48 Gbype/s。HDMI 接口協議在物理層使用TMDS 標準傳輸音視頻數據。TMDS 差分傳輸技術使用兩個引腳來傳輸一路信號,利用這兩個引腳間的電壓差的正負極性和大小來決定傳輸數據的值(0 或1)。Xilinx 在Spartan-3A 系列之后的器件中,加入了對TMDS 接口標準的支持,用于在FPGA 內部實現DVI 和HDMI 接口。具體的模塊電路設計如圖6 所示。

圖6 HDMI 接口硬件電路設計

3 系統軟件設計

3.1 OV6946 視頻采集軟件設計

OV6946 在經OV426 轉換后輸出的為DVP 協議數字圖像。DVP(Digital Video Port)攝像頭數據并口傳輸協議,提供8 bit 或10 bit 并行傳輸數據線、HSYNC(Horizontal sync)行同步線、VSYNC(Vertical sync)幀同步線和PCLK(Pixel Clock)時鐘同步線。OV426 提供10 bit的并口傳輸,PCLK 為8 MHz,其中HSYNC 高電平期間包含400 個PCLK,每個PCLK 取一次值,對應一行的400 個像素點。每兩個VSYNC 的高電平間有400 個HSYNC,對應一幀圖像的400 列。按上述方法編寫Verilog 代碼,并通過AXI4 總線直接存于DDR 中。AXI4 包含3種類型的接口:AXI4 接口、AXI4-Lite 接口以及AXI4-Stream 接口。AXI4 接口主要面向高性能地址映射通信的需要,功能完整,在單地址傳輸的情況下最大允許256 輪的數據突發長度[9]。

本設計中在PL 端設置好每一幀緩存的幀起始地址,經過FIFO 緩存打包后讀出,通過AXI4 總線完成一幀的寫入?;诖送瓿?00 pixel×400 pixel 分辨率的數字圖像解碼。AXI4 總線仿真時序如圖7 所示。

圖7 AXI4 總線仿真時序

3.2 視頻流處理軟件設計

本設計的主要算法是通過Vivado HLS 開發完成。Vivado HLS 是最具創新性的可編程邏輯設計工具之一。使用Vivado HLS 生成IP 核可以大大縮短FPGA 的開發周期。只需要使用高級語言,如C、C++或System C 來描述邏輯,然后將邏輯轉換為RTL 級別的實現。利用Vivado HLS 可以縮短1/3的RTL 仿真時間,使算法驗證速度提高10 倍以上[10]。Vivado HLS 編寫完的代碼在綜合通過后會生成一個IP 核,可通過代碼配置其輸入輸出接口。

在本設計中,對于視頻流的處理,輸入輸出接口均為AXI4-STREAM 接口。AXI4-STREAM 總線是單向的,從主節點到從節點,并根據握手信號傳輸數據。優點是它不需要地址,支持數據突發傳輸,數據量不受限制[11]。因此,AXI4-STREAM 適用于圖像像素數據、音頻采樣數據、離散數字信號處理等數字信息的間接傳輸系統[12]。它的握手機制為只有當VALID 和READY 同時為高時,才能進行傳輸。當TREADY 信號一直處于高電平時,表示從設備已經做好了接收數據準備。TVALID 變為高電平的同時,TDATA 進行發送。數據發送完成后,TVALID 變為低電平。其仿真時序如圖8、圖9 所示。其中圖8為一包數據傳輸開始。圖9 為一包數據傳輸結束。

圖8 傳輸開始

圖9 傳輸結束

算法的總體設計流程如圖10 所示。其中,白平衡為PS 端與PL 端協同完成,算法的累加步驟由PL 完成。在一幀圖像采集完之后的一個時鐘周期內即可完成數據的準備。乘除運算在PS 端完成。因為PS 端具有較強的浮點運算能力。伽馬校正由PS 采用查找表的方式完成,其余算法均由PL 端完成,并由AXI4-Lite 總線在PS 端配置參數。

圖10 系統算法流程圖

圖10 中最后一個步驟的作用為適配HDMI 與顯示器的分辨率。由于攝像頭的分辨率為400×400 pixel,標準顯示器不支持該分辨率。故在其周圍進行像素填充,使其輸出640×480 pixel 分辨率的視頻流,攝像頭圖像顯示居中。經整合的上述所有算法在100 MHz 的時鐘頻率下延時約為3 ms。其Vivado HLS 綜合結果如圖15 所示。

3.3 HDMI 顯示軟件設計

HDMI 的實現方法主要有兩種,一種是使用硬件HDMI 芯片,另一種是使用IO 模擬。因為HDMI協議本身就是數字協議,所以本設計采用第二種方法,既節約硬件成本,又節省板面空間資源。

一個HDMI 連接包括三個TMDS 數據通道,一個TMDS 時鐘通道。TMDS 時鐘通道因分辨率不同而以特定速率運行。在每個TMDS 時鐘通道周期中,三個TMDS 數據通道每個都發送10 bit 數據。這個10 位的字被編碼,采用某種不同的編碼技術。輸入到信源端的輸入流,包含視頻像素,數據包,和控制數據。數據包包括音頻數據和輔助以及相關的糾錯碼。

整個系統需要兩個輸入時鐘,一個是視頻的像素時鐘,另外一個所需時鐘的頻率是像素時鐘的五倍。并串轉換過程的實現的是10 ∶1 的轉換率,理論上轉換器需要一個10 倍像素時鐘頻率的串行時鐘。這里用了一個5 倍的時鐘頻率,因為OSERDESE2模塊可以實現DDR 的功能,即它在五倍時鐘頻率的基礎上又實現了雙倍數據速率。其模塊框圖如圖11 所示。

圖11 RGB TO DVI 模塊框圖

其在本設計中的Block Design 如圖12 所示,其中的pclk x5 由axi_dynclk_1 實現五倍頻。

圖12 HDMI 部分Block Design 圖

4 系統實物及測試分析

4.1 系統連接實物

系統試驗時,為了減少阻抗不連續對攝像頭模擬信號輸出的影響,OV6946 通過阻抗為50 Ω 的屏蔽線焊接到OV426 引出的4PIN 通孔上。經板卡處理后由HDMI 輸出。每根屏蔽線的屏蔽絲均做接地處理。其系統連接關系如圖13 所示。硬件實物如圖14 所示。

圖13 系統連接關系圖

圖14 測試系統-測試裝置實物圖

系統上電后,直接通過HDMI 接口即可查看實時的攝像頭采集回的圖像。

4.2 測試結果

為了驗證系統功能的實現,將板卡供電,通過HDMI 連接顯示器。分別寫入算法處理前后的代碼來驗證算法實現效果。固化到FPGA 端的算法總體綜合出的結果如圖15 所示。

圖15 Vivado HLS 算法綜合結果

由圖15 可知,目標時鐘周期為10 ns,綜合后的設計所估計的時鐘周期為6.381 ns,滿足時序要求。最高延時為309 124 個時鐘周期,即執行本設計的算法處理一幀圖像的時間為3.091 24 ms。由于30 fps的內窺鏡,圖像幀間隔為33.3 ms,故完全滿足實時處理OV6946 內窺鏡的400×400 pixel 分辨率,30 幀/s圖像的視頻流。

從顯示器上可以看到OV6946 傳回來的實時圖像。重復多次試驗可得,該系統可以高效無誤地對OV6946 采集回的400×400 pixel@30FPS 的視頻流進行實時處理,無肉眼可見延時。其性能達到了預定的指標。算法處理前后的效果圖如圖16~圖19 所示。

圖16 白平衡/CCM 前(左)后(右)對比圖

圖17 暗部增強前(左)后(右)對比圖

圖18 伽馬值1.3(左)伽馬值0.6(右)對比圖

圖19 雙邊濾波前(上)雙邊濾波后(下)對比圖

5 結論

本文從醫用內窺鏡視頻流采集處理需求出發,設計了基于Zynq 的醫用內窺鏡視頻流采集與處理框架,對不同功能進行了模塊化設計,同時利用了Zynq 芯片的協同處理優勢。在完成技術指標的同時采用盡量少的元器件,減少了系統的復雜性,提高了系統的可靠性。本文所介紹的醫用內窺鏡采集處理框架工作穩定,在滿足需求的前提下,對各個指標均進行了優化設計。同時,該系統已投入到實際使用中,具有較好的實用價值。

猜你喜歡
視頻流內窺鏡時鐘
邊緣實時視頻流分析系統配置動態調整算法研究
一種具有附加內窺鏡功能的醫療管
電子內窺鏡臨床評價要求探討
內窺鏡技術研究進展
別樣的“時鐘”
基于視頻流傳輸中的擁塞控制研究
古代的時鐘
鐵路貨場智能大門集裝箱全景圖像采集方法研究
有趣的時鐘
美國視頻流市場首現飽和征兆
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合