









摘要:隨著人們對圖像信息處理的要求不斷提高,圖像上采樣算法的研究成為當前熱點,而算法的硬件化實時性發展趨勢,使得提升圖像處理質量的同時減少硬件開銷成為一個難點問題。本文通過對基于FPGA的雙線性插值上采樣算法進行優化,實現了圖像的4倍放大功能,實驗結果表明,上采樣算法功能正確,開發板資源消耗較少,為圖像放大實時性要求高的應用場合提供了解決方案。
關鍵詞:FPGA;圖像上采樣;雙線性插值算法
中國分類號:TP391.41 文獻標識碼: A
文章編號:1009-3044(2024)17-0043-03 開放科學(資源服務)標識碼(OSID) :
0 引言
隨著電子技術的飛速發展,人們對視頻圖像質量的要求不斷提升,如何處理超大數據量的圖像數據并提高響應速度已成為圖像處理領域研究的熱點。圖像縮放技術通過將高分辨率(High-Resolution, HR) 圖像下采樣為低分辨率(Low-Resolution, LR) 圖像,減少系統處理的數據量和響應時間,然后通過上采樣技術還原HR圖像顯示。目前,圖像縮放技術已在GPU中廣泛應用,從NVIDIA的DLSS到AMD的FSR,上采樣算法成為其研究重點,并在無人機、智能駕駛、安防監控、遙感、醫療等領域有著廣泛的應用。
為了滿足圖像處理的實時性需求,越來越多的圖像處理算法采用硬件系統實現。FPGA以其并行性和可重構特點,為圖像處理算法的硬件實現提供了更好的靈活性。本文基于FPGA技術,以Zedboard開發板為硬件平臺,通過對幾種插值算法的分析比較,實現了雙線性插值圖像上采樣算法IP核設計。最終,以將960×540分辨率圖像放大4倍至3 840×2 160分辨率為例,驗證了該IP核的有效性及性能。
1 圖像上采樣算法
圖像上采樣也稱為超分辨率重建技術,即將低分辨率(LR) 圖像經過處理轉換成高分辨率(HR) 圖像的方法[1]。目前,國內外對上采樣算法的研究主要分為三類:基于插值、基于重構和基于學習的算法[2]。基于插值的上采樣算法通過在原始LR圖像像素點間插入新像素點補充成HR圖像,主要包括最近鄰插值、雙線性插值、雙三次插值等線性插值算法,以及邊緣導向插值、小波變換插值等非線性插值算法;基于重構的上采樣算法利用多幅LR圖像與未知HR圖像提取所需的圖像特征信息,估計HR圖像特征信息后重建HR 圖像,主要包括非均勻內插法、迭代反向投影法、凸集投影法、最大后驗概率法等空域法和頻域法;基于學習的上采樣算法通過對給定圖像數據集中特征信息的集中學習,建立LR和HR圖像序列的先驗關系,再通過超分辨率圖像重建算法實現圖像重建,目前主要包括基于卷積神經網絡的SRCNN[3]和對抗神經網絡SRGAN[4]算法等。
由于FPGA本身的LUT門數資源限制,在處理復雜算法時存在算力不足的問題,當前主要采用基于插值的上采樣算法。因此,本文在VS2019環境下,以C 語言編程實現了最近鄰插值、雙線性插值、雙三次插值等插值算法的軟件模擬。結果表明:最近鄰插值算法簡單,但放大后圖片肉眼可見的鋸齒感和塊狀模糊現象嚴重;雙三次插值較雙線性插值在PSNR和SSIM 參數上略有提高,但在LPIPS參數上略有不足。雖然雙三次插值的圖片質量較好,并且邊緣失真現象有所緩解,但算法復雜性明顯增大,運行時間約增長20倍;雙線性插值算法相對簡單,圖片質量基本得到保證。因此,選用雙線性插值算法作為本設計的實現算法。
雙線性插值算法如圖1所示,其基本思想是利用周圍最近四個點的值做三次線性插值。首先在水平方向做兩次線性插值得到兩個點的像素值R1和R2,然后利用R1和R2在豎直方向做一次線性插值,即可估算出P點處的值作為新插入的像素點。P點處的線性插值計算公式如式(1) 所示。
2 基于FPGA 的圖像上采樣系統設計與實現
2.1 總體架構圖
本系統的主要功能部件包括ARM Cortex-A9核、 上采樣IP核模塊、DDR3控制器、AXI SmartConnect總線模塊、SD卡及Fat文件管理系統、按鍵檢測模塊、HDMI顯示模塊等,系統總體架構如圖2所示。
本系統的SoC整體部署在Zedboard開發平臺,并在SDK環境下創建板級支持包和FAT文件管理系統。PS端利用文件管理函數從SD卡中讀取圖片像素矩陣數據并存儲在DDR3中。當外部按鍵被按下時,上采樣IP核開始工作,通過datamover模塊和總線模塊從DDR3中獲取像素數據進行處理,處理完成后再將像素數據寫入DDR3中。其中,datamover和IP接口遵循AXI-Stream 協議。當一張圖片處理完畢后,通過HDMI接口協議將處理后的圖像顯示在顯示器上,并存儲在SD卡中。
2.2 上采樣IP 核設計
雙線性插值算法的硬件實現面臨兩個問題:1) P 值運算涉及大量除法和乘法操作;2) 當兩個像素之間的距離視為1時,公式(1) 中的分子都是浮點數。在FPGA中實現乘除法運算和浮點數運算非常浪費資源,設計也較為復雜。因此,從以下兩個方面進行優化。
2.2.1 雙線性插值算法公式化簡
首先,相鄰兩個像素點之間距離視為1,即x2-x1=1,y2-y1=1,則消除了分母,減少除法;其次,在權重表示上如x2-x 和x-x1可以分別用u 和1-u 代替,y2-y 和y-y1分別用v 和1-v 代替,如圖3所示。
公式簡化結果如式(2) 所示:
R(i,j ) = P00(1 - u)(1 - v)+P01u (1 - v)+P10(1 - u)v+P11uv (2)
2.2.2 FPGA 自動生成權重
本文擬在上采樣部分將圖片分辨率放大4被,即相當于目標圖片到原始圖片縮小4倍。如果目標圖片某一個像素點(i,j) 在原始圖片中對應的位置為(x,y) ,則x=i×1/4,y=j×1/4。因為放大在水平方向和豎直方向放大倍數一樣,此處以水平方向為例進行說明,水平方向原始圖片與目標圖片像素值的對應關系如圖4 所示。
水平方向上目標圖片像素點到對應原始圖片最左邊像素點的距離,隨著目標圖片像素點的遞增存在周期為4的變化規律0à1/4à2/4à3/4à0à1/4à…,即式(2) 中u 的變化規律,豎直方向變化規律相同。而此時u 和v 雖然都是分母為4的浮點數,將分母4提到公式前得到最終化簡結果,如公式(3) 所示。此時u、v變化規律為0à1à2à3à0à1,乘法變成了整數與整數相乘,而分母4×4則可利用右移寄存器實現,簡化了計算步驟。
插值計算模塊設計如圖5所示,模塊整體輸入為四個像素點的像素值P00/P01/P10/P11和權重u/v,每個像素點由R、G、B三基色組成,設置RED、GREEN、BLUE三個通道利用雙線性插值算法分別計算R、G、像素值,最后通過信號合并把R、G、B像素值合并成新像素點result輸出。
2.2.3 IP 核實現架構
上采樣模塊IP 核微架構如圖6所示,主要包括stream 模塊、控制原始圖片數據行緩存模塊sur_row_ctrl、插值計算模塊ctrl_pixel、控制目標圖片行緩存模塊des_row_ctrl和目標圖片行緩存狀態模塊state。
按鍵按下時,sur_row_ctrl模塊向stream模塊發起讀數據請求,隨后stream 模塊向總線發起讀數據請求,從總線讀取到的數據被返回給sur_row_ctrl模塊。該模塊按一定順序將數據存儲在片上存儲資源sur_row_bram 中。存儲完兩行原始圖片數據后,sur_row_ctrl模塊向ctrl_pixel模塊發出開始計算信號。ctrl_pixel模塊接收開始計算信號后,從sur_row_bram 中讀取這兩行數據,開始插值計算,并將計算結果寫入des_row_ctrl模塊。在插值計算過程中,ctrl_pixel模塊和des_row_ctrl模塊既可以更改state模塊狀態,也受state模塊的約束。des_row_ctrl模塊中目標圖片的行緩存按乒乓原理存儲[5],state模塊表示目標圖片行緩存的狀態。當des_row_ctrl 模塊存儲完四行數據后,向stream模塊發起寫數據請求。stream模塊接收請求后,向總線發起寫數據請求,總線收到請求后將目標圖片行緩存中的數據存儲到DDR3中。整個上采樣IP核一邊從DDR3中讀取數據并處理,一邊將處理好的數據寫入DDR3中,直到處理完一張圖片后結束。
2.3 系統仿真驗證
設計了testbench文件來驗證上采樣IP核。該IP 核的接口部分主要采用AXI-Stream協議,除一個執行信號外。testbench 文件通過設置合理的輸入,觀察datamover 端口信號的變化情況,以驗證結果的正確性。
3 實驗結果分析與總結
3.1 實驗結果
將生成的BMP格式LR圖片保存在SD卡中,并通過上采樣IP核在FPGA板上進行驗證。圖像分辨率由原始的960×540放大到3 840×2 160。放大后的圖像與原始圖像一致,如圖7所示,實驗結果正確。
3.2 總結
基于雙線性插值算法的FPGA上采樣IP核實現了原始圖像的4倍放大功能,放大后的圖像內容一致。該IP核在Zedboard開發板上的硬件實現,在工作頻率為250 MHz的情況下,處理一張圖片需要24 ms,板上資源消耗為6 528 個LUT、7 890 個FF 和41.5 個BRAM36K 儲存資源。該系統通過對雙線性插值公式簡化和計算權重去浮點處理,減少了系統運算量,加快了運行頻率,實現了圖像上采樣功能。該方案為圖像放大實時性要求高的應用場合提供了解決方案,但仍存在邊緣模糊問題,有待進一步解決。
參考文獻:
[1] 張芳,趙東旭,肖志濤,等.單幅圖像超分辨率重建技術研究進展[J].自動化學報,2022,48(11):2634-2654.
[2] 鐘夢圓,姜麟.超分辨率圖像重建算法綜述[J].計算機科學與探索,2022,16(5):972-990.
[3] DONG C,LOY C C,HE K M,et al.Learning a deep convolutional network for image super-resolution[C]//European Conference on Computer Vision.Cham:Springer,2014:184-199.
[4] LEDIG C,THEIS L,HUSZáR F,et al.Photo-realistic single im?age super-resolution using a generative adversarial network[C]//2017 IEEE Conference on Computer Vision and Pattern Recog?nition (CVPR).Honolulu,HI,USA.IEEE,2017:105-114.
[5] 張弘.基于FPGA的視頻圖像處理的研究與實現[D].成都:電子科技大學,2020.
【通聯編輯:梁書】
基金項目:湖北工業大學大學生創新創業項目(S202310500110) ;湖北工業大學教學研究項目(校2018027)