申俊星,褚立柱
(商丘職業技術學院,河南 商丘 476100)
隨著機器視覺的發展,視頻圖像處理技術已經被廣泛應用在智能手機、汽車電子、工業物聯網等領域.為了全面評價圖像處理算法的效果,在圖像處理算法開發過程中,對算法的動態實時驗證必不可少[1].ARM處理器對于實現復雜的圖像處理算法有著優異的表現,而FPGA憑借流水線計算結構和重構性,可以較好實現圖像實時處理和算法更新[2].MPSOC同時具備ARM和FPGA在圖像處理中的優點,可以滿足圖像處理算法的動態驗證需求.同時,高層次綜合(High Level Synthesis, HLS)技術可以將高級語言轉換成底層硬件描述語言,高效完成圖像處理算法的硬件實現過程,以進行硬件加速,減少開發成本和時間,加速設計生產力[3].
本文設計了一種基于MPSOC和HLS的圖像處理算法驗證系統,通過HLS技術高效完成圖像處理算法的硬件實現,以進行硬件加速,同時與圖像傳感器采集的圖像數據進行比對,完成對圖像處理算法的動態驗證,同時基于LVDS設計了板間圖像傳輸接口,通過FPGA級聯為后續實現大型復雜圖像處理算法的驗證提供了充足的擴展空間.
圖像處理算法驗證系統設計方案,如圖1所示.其中,MPSOC包括PL部分中的圖像采集模塊、硬件算法HLS IP 和VDMA模塊,以及PS部分的DDR和軟件算法模塊.

圖1 圖像處理算法驗證系統架構
圖像采集模塊用于采集圖像傳感器的圖像數據,并按照AXI-Stream協議將圖像數據流傳輸給硬件算法HLS IP.硬件算法HLS IP利用HLS技術實現圖像處理算法,包括HDR(High-Dynamic Range)、TM(Tone Mapping)、GAMMA、DN(denoise)等子模塊.HDR算法通過多幀不同亮度圖像融合,使圖像擁有更高的動態范圍和更多的圖像細節.TM模塊為色調映射,用于壓縮位寬和動態范圍.GAMMA模塊功能是對圖像做非線性變換,主要用于協調自然亮度和主觀灰階感受的.DN模塊的主要作用是圖像降噪.為了滿足不同應用的需求,可根據系統功能靈活調整不同子模塊進行互相串聯,實現硬件算法HLS IP整體功能的改變,同時通過AXI-Lite協議建立該模塊與PS端的連接,PS端可根據軟件算法或用戶需要發送指令,控制和調整各硬件算法子模塊的參數.VDMA模塊在PS的控制下完成圖像數據流在PL和PS中DDR的交互,同時通過VDMA模塊內部的GenLock鎖幀機制實現圖像處理和圖像顯示兩側的幀率匹配,且保證顯示圖像不撕裂和不分層.最后,DDR中的圖像數據直接從PS端送至DP顯示設備上顯示.
PS中的軟件算法一般用來實現較為靈活、易于調整、需要調試的算法,如AE算法中的場景識別、曝光策略、AWB算法中的色溫估計和增益計算等,也可以根據硬件資源和用戶需求靈活調整,為了滿足實時性要求,PS中的軟件算法不宜過于復雜,只需通過參數策略實現對其他硬件算法IP的參數計算和調整,不對圖像數據流進行處理.
當驗證大型復雜圖像處理算法IP時,單板MPSOC的資源可能無法滿足需求.因此,為了實現圖像數據流板間傳輸,設計了板間互聯LVDS接口,該接口具有很好的可拓展性.級聯的FPGA包括硬件算法HLSIP2及其控制模塊,硬件算法HLS IP2可根據系統功能和應用需求靈活調整.控制模塊用于接收MPSOC中PS 的指令,進而將參數傳遞給硬件算法HLS IP2.
開源計算機視覺(OpenCV)被廣泛應用于開發計算機視覺應用,使用XILINX公司的HLS高級語言綜合工具,可以快速實現從OpenCV圖像處理設計到RTL代碼的轉換,并直接在FPGA上實現實時圖像處理.HLS將OpenCV函數庫轉化成可綜合的HLS視頻庫,該視頻庫與OpenCV具有類似的接口和算法,比如與Mat相對應的xf::cv::Mat數據類型,被用于模型化視頻像素流處理.HLS視頻庫主要針對FPGA架構,實現了專門面向FPGA的優化,比如定點運算、行緩存(line buffer)和窗口緩存(window buffer)等[4].
HLS對圖像處理算法硬件實現的過程,如圖2所示,實時圖像輸入采用AXI4-stream協議.HLS在實現圖像算法時,首先將圖像數據轉換成Mat數據類型,然后通過HLS視頻庫或者用戶自開發功能函數實現圖像處理功能,最后再轉換成AXI4-stream協議接口.圖像算法實現完成后,通過HLS工具進行仿真和綜合,最終生成RTL IP.

圖2 HLS實現圖像算法框圖
為了驗證大型圖像處理算法IP,設計了板間互聯LVDS接口,從而實現圖像數據流板間傳輸,避免了資源的限制.LVDS板間互聯接口單向傳輸過程,如圖3所示.圖像數據流先通過AXI4-Stream to Video Out IP轉換成video DVP接口,然后采用Xilinx官方High Speed SelectIO IP實現并串轉換LVDS傳輸,包括發送端TX和接收端RX,此IP在native mode下使用BITSLICE邏輯組件,內部增加了很多專用路由,可以支持單通道最高1600 Mbps的數據傳輸.對于RGB24bit數據,串化因子4,采用7對LVDS接口即可完成LVDS板間傳輸,可以支持4K30fps的圖像.

圖3 LVDS板間傳輸接口結構
本文用包含Arm Cortex?-A53 64-bit 四核處理器和Cortex-R5雙核實時處理器的Zynq UltraScale+ XCZU9EG MPSoC開發板作為測試平臺,以三星的S5K4AC作為圖像傳感器,該圖像傳感器為大小雙Pixel陣列,支持有效分辨率1280×960三幀輸出,支持4lane MIPI輸出.在此基礎上,分別對算法效果、算法硬件加速效果和LVDS板間互聯接口進行測試.
本文中圖像處理以HDR算法為例,驗證該算法IP的效果.HDR(High-Dynamic Range)算法通過多幀不同亮度圖像融合,使圖像擁有更高的動態范圍和更多的圖像細節.本次測試分別用HLS工具實現HDR算法和用軟件實現HDR算法2種方法,測試算法效果,如圖4所示,測試表明,HLS工具實現的HDR算法與軟件實現的HDR算法處理效果相同,圖像處理算法的HLS硬件實現方法可以完全復現軟件算法的效果.該驗證系統對圖像處理算法有良好的驗證效果.

(a)HLS實現HDR算法 (b)軟件實現HDR算法
為了測試IP驗證系統的硬件加速效果,分別在驗證系統中用HLS工具實現HDR模塊、TM模塊、GAMMA模塊、DN模塊等不同子模塊和用軟件獨立實現上述模塊,測試其各自完成一幀圖像處理過程所消耗的時間并進行對比,測試結果,如表1所示.驗證系統的輸入圖像幀率為30 幀/秒,在驗證系統中用HLS實現算法每幀處理時間均在33 ms以內,與原始幀率相同,具有很好的實時性,而軟件獨立實現算法每幀耗時較長,且隨著算法復雜度增加,算法處理耗時也迅速增加.通過對比發現,HLS算法硬件加速效果明顯.

表1 圖像處理算法每幀耗時測試
為了測試LVDS板間互聯接口速率,利用圖像傳感器輸出1280x960@30fps圖像數據,在驗證系統中增加scaler模塊,用于對圖像進行縮放.Scaler模塊使用Xilinx官方IP Video Processor Subsystem中的scaler功能實現,將輸入圖像畫幅放大為4K@30fps.采用14對差分LVDS接口完成雙向RGB24bit圖像數據傳輸,根據幀率計算得到LVDS單通道速率配置為1200 M即可滿足要求.采用VU440開發板作為級聯FPGA,分別測試不級聯FPGA和級聯FPGA時的圖像顯示效果,測試結果,如圖5所示.測試結果表明,LVDS板間互聯接口傳輸4K@30fps圖像,其圖像顯示效果正常,與未級聯FPGA時效果相同,同時快速移動畫面時圖像并無撕裂或卡頓,可以證明LVDS板間互聯接口可以支持4K@30fps圖像傳輸.
本文設計了一種針對各種圖像算法IP的驗證系統,通過HLS技術高效完成圖像處理算法的硬件加速,并實時動態完成圖像處理算法的驗證.同時,設計了基于LVDS的板間圖像傳輸接口,為后續實現大型復雜圖像處理算法的驗證提供了充足的擴展空間.測試結果表明,該系統對圖像處理算法加速效果明顯,具有很好的實時性,可以較好支持圖像處理算法的動態實時驗證;同時驗證了LVDS板間傳輸接口可以支持4K30fps圖像的傳輸,滿足后續驗證系統擴展的帶寬要求.