嚴忻愷 丁晟
①(浙江大學 杭州 310015)
②(江蘇省專用集成電路設計重點實驗室(無錫) 無錫 214153)
在圖形圖像處理領域,像素性能常常是芯片系統(tǒng)的性能瓶頸,減輕圖形渲染的計算和訪存負載對于提升圖形芯片性能有重大幫助。將圖形圖像先進行低分辯率渲染后由算法重建放大至期望分辨率的超分辨率重建技術(shù)已經(jīng)成為主要的性能優(yōu)化手段。它被廣泛應用于現(xiàn)代社會中的各個領域,如多媒體傳輸、大型游戲、醫(yī)療圖像、公共安全等,它是信息學、計算機視覺和機器學習等學科的結(jié)合。同時隨著5G技術(shù)和計算機硬件的不斷進步,圖像傳輸?shù)馁|(zhì)量也不斷提高,支持高清(1080×720)、全高清(1920×1080)、超高清(3840×2160)圖像或視頻的實時性應用變得越來越廣泛,這對網(wǎng)絡帶寬和硬件設備都產(chǎn)生了巨大的壓力。單幀圖像或多幀圖像的重建根據(jù)方法不同可以分為基于插值的圖像重建[1–8]、基于學習的圖像重建[9–11],以及基于深度學習的圖像重建[12–16]等。
基于插值的圖像重建算法利用新像素和原始像素的線性/非線性關(guān)系,根據(jù)放大因子在已有圖像像素中插入固定數(shù)量的新像素來補充高分辨率圖像缺失的像素,基于插值的圖像重建算法具有算法簡單、適合并行、運算速度快的特點,但是隨著圖像放大因子的增加,重建圖像會出現(xiàn)模糊、振鈴效應、鋸齒效應和邊緣平滑等問題;基于深度學習的圖像重建算法利用卷積運算可以更有效地自動提取圖像細節(jié)特征,解決底層視覺問題,生成質(zhì)量更優(yōu)的高分辨率圖像(例如降噪、去模糊等),比如使用殘差網(wǎng)絡來增強層間連接,將低分辨率圖像特征信息傳到更深層,緩解梯度消失和特征丟失問題,使用生成對抗網(wǎng)絡中多個生成器的感知損失和對抗損失信息,提升高分辨率圖片的真實感。不過基于深度學習的圖像重建算法也存在一定的場景約束,比如監(jiān)督學習網(wǎng)絡需要圖像訓練和測試數(shù)據(jù)集支持,無監(jiān)督學習網(wǎng)絡需要算法迭代導致實時性較弱等。
因此基于插值的圖像重建算法比較適合對實時性要求相對較高,對放大因子要求較小,對圖像重建質(zhì)量要求也相對較低的場景。在以上場景中基于插值的圖像重建算法仍被廣泛使用和研究,如AMD公司和NVDIA公司也先后推出了基于圖像插值算法的游戲加速插件FSR[17]和NIS[18],以及基于插值算法的硬件加速結(jié)構(gòu)研究[19–22]。所以針對特定場景,研究基于插值的圖像重建算法和硬件加速結(jié)構(gòu)來提高高分辨率圖像質(zhì)量,加快計算速度,減少硬件開銷仍然非常必要。
本文提出了一種自適應圖像插值算法和加速引擎的協(xié)同設計,算法得到的圖像質(zhì)量相比于雙線性插值分別在平均峰值信噪比(Peak Signal to Noise Ratio, PSNR)、結(jié)構(gòu)相似度(Structural SIMilarity,SSIM)和圖像感知相似度(Learned Perceptual Image Patch Similarity, LPIPS)上可以提高1.1 dB,0.025和0.051;相比于雙三次插值分別在PSNR,SSIM和LPIPS上可以提高0.34 dB, 0.01和0.033。本文提出的加速引擎具有高并行高可擴展的特點,并且通過數(shù)據(jù)重用和參數(shù)優(yōu)化,能夠提升加速引擎的能效比,節(jié)省硬件開銷。
本文的組織結(jié)構(gòu)如下:第2節(jié)介紹圖像插值概述,主要包括Lanczos插值和邊緣檢測;第3節(jié)詳細介紹提出的自適應圖像插值算法;第4節(jié)詳細介紹加速引擎架構(gòu)設計;第5節(jié)給出圖像質(zhì)量比較結(jié)果;第6節(jié)得出結(jié)論。
圖像插值技術(shù)一直是圖像處理領域中的研究熱點,從經(jīng)典的基于局部數(shù)據(jù)的線性插值算法,如雙線性插值算法[1]、雙三次插值算法[2],到近些年關(guān)注基于樣例的非線性插值算法如基于邊緣導向的插值算法[4]、軟判決自適應插值算法[6]、對比度引導法等插值算法[7]等。
Lanczos插值算法是圖像線性插值算法的一種,它是Lanczos窗函數(shù)在圖像處理領域的應用,Lanczos插值算法是對圖像在X軸和Y軸分別進行插值處理。由于Lanczos插值算法的系數(shù)在縮放大小確定后是固定值,硬件可以通過IO寄存器寫入固定的存儲器中使用,從而進行插值操作,而不需要在計算過程中生成相關(guān)系數(shù)。Lanczos插值對于減少振鈴效應、鋸齒效應有較好的效果,它的計算公式為
其中,d表示帶插值像素點到原像素點的距離,r表示插值窗半徑。由于本文選取縮放因子4,所以待插值像素點到原像素點在X方向和Y方向的距離d={0.125,0.375,0.625,0.875},r=4。
由于圖像特征中邊緣的重要性以及人眼系統(tǒng)對圖像邊緣的敏感性,而傳統(tǒng)插值算法對圖像邊緣的處理效果并不理想,所以針對圖像邊緣進行優(yōu)化和提高圖像質(zhì)量是圖像插值的一個重要研究方向[7,23]?;谶吘墐?yōu)化的圖像插值算法一般流程如圖1所示:
邊緣檢測一般用于灰度像素,彩色圖像轉(zhuǎn)換為灰度圖像的過程如式(2):
常見的邊緣檢測算子有1階算子(Sobel, Prewitt,Roberts, Canny)和2階算子(拉普拉斯、高斯、LOG)。對于圖像處理而言實際邊緣情況較為復雜,但為了減少計算復雜度通常只檢測0°/45°/90°/135° 4種邊緣方向情況。但基于邊緣檢測的圖像算法仍存在例如對彩色圖像效果不佳、計算復雜度高、計算時長較長等問題。
由于圖像插值算法的復雜度直接影響硬件實現(xiàn)的復雜性和運算速度,因此需要協(xié)同設計圖像插值算法和加速插值引擎。例如一些基于迭代更新的插值算法會顯著增加算法運行時間和硬件存儲開銷;基于浮點運算的插值算法會引入浮點乘法部件,增加硬件開銷;基于分步的算法將整個插值過程分為插值和銳化兩個步驟,會導致硬件開銷增加和算法運行時間的增加;基于邊緣插值的算法有基礎插值和邊緣插值兩個計算部分,這會增加乘法器資源的消耗。所以本文探索軟硬件協(xié)同設計空間,尋找通過增加對硬件友好的少量加法操作和存儲空間而不增加乘法器資源的方式實現(xiàn)加速引擎設計。
考慮到計算復雜度、存儲復雜度和實時性需求,本文提出了一種基于邊緣對比度的自適應圖像插值算法,采用4種邊緣方向的對比度探測,根據(jù)全局閾值和局部閾值來精確定位邊緣;同時綜合4個方向邊緣檢測的對比度計算結(jié)果,自適應地選擇不同系數(shù)Lanczos窗函數(shù)生成的插值系數(shù),對圖像區(qū)域進行插值:
(1)對于平坦區(qū)域,采用式(1)產(chǎn)生的系數(shù)進行插值。
(2)對于邊緣區(qū)域,根據(jù)不同邊緣方向和對比度值,綜合選擇式(3)不同β值產(chǎn)生的系數(shù)進行插值。
當β>1時,Lanczos窗函數(shù)更尖銳,中心像素點的插值比例更高,本算法中r=4時根據(jù)對比度的不同,取βr=4=1.18,βr=4=1.22,βr=4=1.25。
考慮到高分辨率圖像質(zhì)量、算法復雜度和硬件復雜度的相互關(guān)系,本算法首先選擇r=4時4級Lanczos 4窗函數(shù)(8×8個原始像素點)來增強生成高分辨像素點所需的局部信息;然后考慮到圖像邊緣情況的復雜性,相比于只計算像素中心點的邊緣信息,本算法使用原像素中心點臨近4×4區(qū)域像素點的灰度信息計算邊緣計算所需的局部閾值以及計算原像素中心點臨近2×2區(qū)域的邊緣梯度,通過結(jié)果邊緣梯度矩陣來提高邊緣檢測的準確度,以此實現(xiàn)不同感受野內(nèi)的圖像信息特征獲取,從而提高生成的高分辨率圖像質(zhì)量。由于人眼對彩色圖像中綠色分量最敏感,所以本算法使用式(4)取代式(2)來計算像素的近似灰度來進行邊緣檢測。通過近似灰度的方式,不僅可以節(jié)省分別對RGB分量進行串行邊緣檢測所需的算法運行時間或?qū)GB分量進行并行計算所需的硬件資源,還可以將定點乘加操作轉(zhuǎn)換為整數(shù)加法操作,進一步節(jié)省硬件資源。
本文算法步驟如下:
輸入:低分辨率RGB彩色圖像IMG_L。
輸出:高分辨率RGB彩色圖像IMG_H。
步驟1 讀入圖像,選取待插值點的8×8 Lanczos原像素點矩陣。
步驟2 進行邊緣檢測。
步驟2.1 將中央4×4像素點矩陣使用式(4)將彩色轉(zhuǎn)換成像素近似灰度。
步驟2.2 用4個方向的Prewitt算子分別計算原像素中心點 (i,j) 和相鄰(i+1,j), (i,j+1), (i+1,j+1)共4個點的梯度。
步驟2.3 將4個方向梯度和不同閾值進行比較,產(chǎn)生邊緣對比度結(jié)果矩陣
步驟3 進行插值計算。
步驟3.1 插值系數(shù)選擇,根據(jù)邊緣對比度結(jié)果矩陣選擇不同系數(shù)的Lanczos系數(shù)進行插值,按照邊緣區(qū)域?qū)Ρ榷冉Y(jié)果,由高到低依次選擇式(3)中不同β值產(chǎn)生的插值系數(shù),對于平坦區(qū)域選擇式(1)產(chǎn)生的插值系數(shù)。
步驟3.2 使用步驟3.1選擇的系數(shù),對低分辨圖像8×8像素點進行插值計算,生成待插值點像素。
步驟4 將插值計算結(jié)果輸出,得到最終高分辨率圖像。
在步驟2.2中,使用4個方向的Prewitt算子進行梯度計算,得到θ0,θ90,θ45,θ135,然后根據(jù)式(5)進行判斷,得到二值化的邊緣標志。
其中, TH=max(thg,thl) ,全局閾值t hg可以通過寄存器配置得到,本文中默認值為15, 127和255,局部閾值 thl由4×4近似灰度矩陣中的最大灰度和最小灰度的差值得到。
在步驟3.2中,算法根據(jù)中心像素點 (i,j)相鄰的多級二值邊緣標志矩陣組合成3維標志矩陣edge_flagdir,從而生成對應的插值系數(shù)選擇。最終插值結(jié)果根據(jù)式(6)進行計算
其中:
(1) 當 edgeflag3(0,90,45,135)≥3時,采用式(3)且βr=4=1.25 產(chǎn)生的系數(shù)a lpha3,beta3;
(2) 當 edgeflag2(0,90,45,135)≥2時,采用式(3)且βr=4=1.22 產(chǎn)生的系數(shù)a lpha2,beta2;
(3) 當 edgeflag1(0,90,45,135)≥1時,采用式(3)βr=4=1.18 產(chǎn)生的系數(shù)a lpha1,beta1;
(4) 否則采用式(1) 產(chǎn)生的系數(shù)a lpha0,beta0。
最終基于2×2,4×4和8×8的不同感受野的插值合并過程如圖2所示,通過合并大感受野的局部像素信息和小感受野的邊緣細節(jié)信息,同時增加灰度感受野來提高邊緣精確度,從而提高圖像插值質(zhì)量。
圖2 各級感受野像素的合并插值示意圖
加速引擎的總體架構(gòu)如圖3所示,主要由計算模塊(插值引擎)和調(diào)度模塊兩部分組成,完成整個自適應圖像插值算法的加速計算。
圖3 加速引擎總體架構(gòu)示意圖
其中調(diào)度模塊負責通過總線和內(nèi)存進行數(shù)據(jù)交互,啟動并分配調(diào)度插值引擎工作;計算模塊負責實現(xiàn)自適應圖像插值算法的硬件加速。
通過在插值引擎中展開或折疊乘加運算,可以實現(xiàn)資源與處理時間的折中;同時Lanczos像素窗具有像素重疊特性,可以通過并行多個插值引擎實現(xiàn)較高的數(shù)據(jù)重用,從而減少訪存需求和處理時間。本設計使用插值引擎內(nèi)像素移窗和插值引擎間像素并行多播兩級數(shù)據(jù)重用來減輕訪存壓力,同時減少行buffer和結(jié)果buffer的RAM開銷。
4.1.1 像素移窗
在插值引擎內(nèi),像素處理遵循以下原則:
(1) 單個插值引擎1次處理 1 ×4個原始像素點,需要輸入8 ×11個 像素點,輸出4 ×16個插值像素點;
(2) 調(diào)度模塊按圖像垂直方向調(diào)度插值引擎,除圖像上邊緣外,每輪只輸入11個像素點;
(3) 計算模塊每輪處理的圖像行寬為 4N(其中N為插值引擎?zhèn)€數(shù))。
對于當前處理的原始像素點窗,在8×1 1個像素點的處理中有8×5的像素點是每輪都可以水平重用;而對于下一輪處理的原始像素點窗,在8×11個像素點的處理中有7×11的像素點可以垂直重用。除圖像上邊緣外,插值引擎每輪工作像素點的數(shù)據(jù)重用率超過80%。
4.1.2 并行多播
基于插值引擎內(nèi)的水平方向數(shù)據(jù)重用原理,將其推廣至多插值引擎的并行化處理,從而實現(xiàn)行buffer數(shù)據(jù)的并行多播和插值引擎間的數(shù)據(jù)重用。行buffer中的像素可以多播給并行的多個插值引擎,例如像素6會同時多播給插值引擎1, 2, 3使用。此外由于加速引擎采用圖像列向處理順序,所以行buffer無需開設大緩沖,能夠節(jié)省片上存儲資源。
插值引擎的結(jié)構(gòu)總體框圖如圖4所示,它主要由5部分組成:
圖4 插值引擎總體結(jié)構(gòu)框圖
(1) 控制單元:負責控制調(diào)度引擎,包含引擎控制模塊;
(2) 像素陣列:負責儲存像素信息,主要包含8×11 像 素點寄存器陣列和6 ×7像素近似亮度寄存器陣列;
(3) 存儲器陣列:負責存儲插值所需的權(quán)值,主要包含不同插值系數(shù)的RAM;
(4) 邊緣檢測單元:負責像素的邊緣檢測和邊緣對比度標志矩陣生成,主要包含似亮度轉(zhuǎn)換單元、梯度計算單元、閾值計算單元;
(5) 插值計算單元:負責各類計算處理,主要包含插值計算模塊和插值系數(shù)選擇模塊。
4.2.1 工作模式
插值引擎支持按功能分為兩種工作模式:基礎工作模式和完全工作模式.
(1) 基礎工作模式,即只采用插值計算插值點輸出,關(guān)閉邊緣檢測單元;
(2) 完全工作模式,即按照先邊緣檢測,再生成對比度標志矩陣進行插值計算,最后將插值結(jié)果輸出。
插值引擎支持塊處理和行處理兩種處理流程。塊模式用于處理首次輸入像素塊或更新輸入,行模式用于連續(xù)處理像素行的情形。調(diào)度模塊1次輸入1行RGB像素點,像素點存入像素陣列,且屬于像素點窗中心4×4的像素點被同時送入邊緣檢測單元進行近似灰度轉(zhuǎn)換,而后存入近似灰度陣列并送入下一級模塊進行邊緣計算。塊模式下插值引擎接收8行像素點后開始插值計算,行模式下插值引擎接收1行像素點后開始插值計算。插值像素點按像素塊從左到右順序輸出,每個像素塊內(nèi)按先行后列輸出像素點。
4.2.2 邊緣檢測
邊緣檢測單元由閾值計算單元、梯度計算單元和邊緣處理單元組成,如圖5所示。整個邊緣檢測單元采用全流水結(jié)構(gòu)設計,流水站臺為4級。當調(diào)度模塊輸入像素點完畢后,控制單元分別將近似灰度矩陣中的1 ×4的中心像素點所需的4×4灰度像素送入邊緣檢測單元中進行計算,得到中心像素點(i,j)相鄰二值邊緣標志矩陣,包含0°, 45° , 90°, 135°在三級閾值下的4個二值邊緣標志,用于索引插值系數(shù)RAM中對應的條目。
圖5 邊緣檢測單元結(jié)構(gòu)圖
閾值計算單元負責計算原像素中心點臨近4×4區(qū)域內(nèi)的最大和最小近似灰度像素,并與預配置的全局閾值進行比較得到本次邊緣計算所需的最大和最小閾值。圖5(a)中閾值計算單元由3級全流水結(jié)構(gòu)組成,第1級站臺計算4×4近似灰度矩陣內(nèi)各行的最大/最小值;第2級站臺對得到的4組最大/最小值進行比較計算,得到4×4區(qū)域內(nèi)的最大/最小值;第3級站臺將區(qū)域最大/最小值和全局閾值進行比較,得到最終所需的閾值,發(fā)送到邊緣處理單元中使用。
梯度計算單元負責計算原像素中心點臨近2×2區(qū)域4個像素點的4個方向梯度計算。圖5(b)中梯度計算單元由3級全流水結(jié)構(gòu)組成,第1級站臺并行計算1個像素點在4個方向上的近似灰度差值,本設計采用中間結(jié)果合并計算方式,將原本需要20個9位加法器的開銷縮減到4個9位加法器和8個10位加法器;第2級站臺計算4個方向的最終梯度結(jié)果;第3級站臺計算0°~90°方向的最大/最小梯度和45°~135°方向的最大/最小梯度,發(fā)送到邊緣處理單元中使用。
邊緣處理單元負責計算二值邊緣標志矩陣。圖5(c)中邊緣處理單元由1級站臺結(jié)構(gòu)組成,根據(jù)閾值計算單元和梯度計算單元的數(shù)據(jù)輸入計算出0°, 45°, 90°, 135°的二值邊緣標志矩陣,將結(jié)果發(fā)送到索引插值系數(shù)RAM中對應的條目中存儲。
4.2.3 插值計算
考慮到Lanczos的算法特性以及計算并行度、硬件開銷和功耗,本文設計了一種高能效的插值計算單元,圖6給出了插值計算單元結(jié)構(gòu)圖。
圖6 插值計算單元結(jié)構(gòu)圖
從圖中看到,插值計算單元由9個MAC乘累加單元和寄存器組成,其中水平方向插值計算單元包含8個乘累加單元,豎直方向插值計算單元包含1個乘累加單元。插值計算單元的設計思路如下:
(1) Lanczos插值算法按照先水平方向后垂直方向的插值順序,所以水平方向插值計算單元先接收像素點輸入。
(2) 在Lanczos插值算法中所有水平方向的各行像素點共用一套插值系數(shù)(8個int16整數(shù)),所以將水平方向插值計算模塊設計為權(quán)值傳遞,像素點并發(fā)的方式,減少對RAM的訪問;
(3) 水平方向插值計算單元有8個獨立的像素乘累加單元。每個乘累加單元分別處理1行像素點,按從左到右順序依次按拍輸入像素;8個乘累加單元的像素點從左到右依次錯1拍輸入,從而和對應位置系數(shù)相乘;
(4) 每個乘累加單元包含3個16×16+32的有符號乘累加,分別計算r, g, b 3個通道的像素,得到水平插值結(jié)果h1~h8;
(5) Lanczos插值算法的垂直方向插值計算將8個水平方向的乘累加結(jié)果分別和對應的系數(shù)相乘并累加;
(6) 水平方向插值計算的8個結(jié)果是連續(xù)8拍輸出,所以垂直方向只需要1套乘累加計算模塊。
4.2.4 延遲和吞吐率
假設乘累加單元的延遲為p( 其中p=pmul+padd),所以塊模式時整個啟動開銷為N+n+3p+8拍,其中N為像素加載延遲,n為邊緣檢測延遲,3p為水平乘累加、垂直乘累加和合并插值的延遲。像素輸出頻率為每8拍輸出1個插值像素點,所以塊模式時需要8 +n+3p+128拍輸出完成16個插值像素點計算輸出,需要8 +n+3p+512拍輸出完成64個插值像素點計算輸出;行模式時需要1+n+3p+128拍輸出完成16個插值像素點計算輸出,需要1+n+3p+512拍輸出完成64個插值像素點計算輸出。
4.3.1 乘累加單元
乘累加單元是插值引擎中占用硬件資源最多的邏輯器件,插值引擎中乘累加單元的數(shù)量如表1所示。在2 GHz時鐘頻率約束的16 nm綜合結(jié)果中,若使用int8×int16+int24的乘加器實現(xiàn),則使用組合邏輯數(shù)量為12 474,時序邏輯數(shù)量為1 296;若使用int16×int16+int32的乘加器實現(xiàn),則使用組合邏輯數(shù)量為20 520,時序邏輯數(shù)量為1 728。
表1 乘加器單元數(shù)目
4.3.2 加法器單元
加法器單元是插值引擎中邊緣檢測單元主要占用的硬件資源,插值引擎中加法器單元的數(shù)量如表2所示。在2 GHz時鐘頻率約束的16 nm綜合結(jié)果中,加法器單元共使用組合邏輯數(shù)量為1 445,時序邏輯數(shù)量為366。
表2 加法器單元數(shù)目
4.3.3 RAM
插值引擎中的RAM用于存放插值系數(shù),單個插值引擎中的RAM容量如表3所示。其中插值系數(shù)RAM保存4組Lanczos4插值系數(shù)(分別為βr=4=1,βr=4=1.18 ,βr=4=1.22 ,βr=4=1.25產(chǎn) 生 的 系數(shù)),每組插值系數(shù)由4(間隔)×8(系數(shù))組成,每個系數(shù)為int16類型。
表3 插值引擎的RAM容量表
4.3.4 寄存器陣列
插值引擎中的寄存器陣列用于存放原始像素點、近似灰度像素、乘累加單元結(jié)果緩存、流水線站臺和控制寄存器等,表4列出插值引擎中主要的寄存器數(shù)量。
表4 插值引擎的寄存器數(shù)目表
本文設計的加速引擎在Xilinx Zynq Ultra scale+xczu15eg進行仿真,使用FPGA內(nèi)置的DSP48單元中3拍流水乘法器實現(xiàn)乘累加部件,插值引擎的綜合頻率可以達到200MHz。實例化24個插值引擎進行并行處理,對縮放因子為4,分辨率為960×540圖像的插值總處理時長為15.24 ms,處理幀率(fps)達到60。本文設計的插值加速引擎在UVM驗證環(huán)境進行測試激勵仿真以及FPGA仿真的結(jié)果輸出和CPU軟件算法輸出保持一致,無像素差異。
圖像插值算法客觀評價指標是指原始圖像降采樣處理后再通過圖像插值獲取高分辨圖像,比較降采樣處理前和插值處理后圖像間的偏差,通過偏差值來判斷圖像質(zhì)量的優(yōu)劣。為了測評本文提出的自適應圖像插值算法,選用了MATLAB提供的3種代表性算法(雙線性插值法(bilinear)、雙三次插值法(bicubic)和Lanczos3插值法)和OpenCV提供的Lanczos4插值法作為比較,實驗環(huán)境如下:程序編寫所基于的平臺是 MATLAB,版本是R2022a,測試數(shù)據(jù)集由47張3D游戲圖像組成,每張高分辨率原圖大小為3 840×2160,均值下采樣后每張低分辨率圖像大小為9 60×540。
實驗分別采用峰值信噪比(PSNR)、結(jié)構(gòu)相似度(SSIM)和圖像感知相似度(LPIPS)[24]作為圖像質(zhì)量評價標準,圖像插值結(jié)果與原圖進行對比。表5給出了本文算法和雙線性插值、雙三次插值和Lanczos3/4插值法計算單個插值點的復雜度對比。實驗對比結(jié)果如表6~表8所示。由于PSNR僅計算圖像之間的灰度值差異,并沒有考慮到圖像之間的結(jié)構(gòu)關(guān)系,而SSIM從亮度、對比度和結(jié)構(gòu)3個方面分別進行比較,所以增加LPIPS比較,因為LPIPS更符合人眼系統(tǒng)的評價標準。
表5 不同算法的復雜度對比
表6 不同算法的PSNR對比(dB)
表7 不同算法的SSIM對比
表8 不同算法的LPIPS對比
從表6~表8中可以看出本文算法相比于雙線性插值、雙三次插值和Lanczos3/4插值法在各項圖像評價指標上均有明顯提升,相比于雙三次插值,本文算法在P S N R 上提升較為明顯,相比于Lanczos3/4算法,本文在LPIPS上提升較為明顯。此外通過分析測試集中圖像質(zhì)量相對較差的圖像,本文算法在圖像包含大量雜亂紋理和陰影時處理效果提升相對較少。
本文選取基于插值算法的FPGA硬件實現(xiàn)進行比較,比較結(jié)果如表9所示。同時由于基于FPGA平臺的硬件實現(xiàn)大多面向低分辨率的灰度圖像,所以本文進一步選取支持高清分辨率彩色圖像放大的ASIC硬件實現(xiàn)進行比較,硬件指標結(jié)果對比如表10所示。
表9 FPGA硬件實現(xiàn)的指標對比
表10 ASIC硬件實現(xiàn)的指標對比
從表9可以看出由于本文算法使用的Lanczos4窗函數(shù)需要8×8像素空間信息和4×4近似灰度像素空間信息,這會增加硬件寄存器開銷;由于本文硬件實現(xiàn)支持縮放因子為4的彩色高清圖像并進行邊緣檢測,所以增加了LUT硬件資源開銷。假定16 nm工藝相比于40 nm/65 nm工藝分別有2代和3代的性能/面積提升(每代提升1.4倍),從表10可以看出相比于基于卷積和學習的硬件實現(xiàn)方式,本文硬件實現(xiàn)采用的優(yōu)化技術(shù)可以明顯減少RAM開銷和邏輯門數(shù)量,所以本文提出的硬件結(jié)構(gòu)對于實時性要求高、硬件開銷低且對彩色高清圖像重建質(zhì)量要求相對較低的場景具有較好的適配性。
本文對圖像插值算法和加速引擎進行協(xié)同設計,提出了一種基于邊緣對比度的新型自適應圖像插值算法和高并行高能效的插值引擎,主要應用于單幀高清彩色圖像放大。本文提出的算法使用邊緣對比度檢測和不同尺度的感受野來自適應選擇Lanczos插值的系數(shù),自適應性和不同感受野可以進一步提升圖像放大質(zhì)量。此外本文通過協(xié)同軟硬件協(xié)同設計,只通過增加少量加法器和RAM存儲空間而不增加乘法器資源的方式實現(xiàn)加速引擎設計。同時本文設計的加速引擎能夠通過像素移窗和像素多播的兩級數(shù)據(jù)重用來減少行buffer容量和降低訪存需求,根據(jù)算法特性采用權(quán)值傳遞的全流水插值計算單元來減少RAM訪問功耗,提高插值引擎的能效比。未來將著重研究更優(yōu)的邊緣檢測算法來提升高清彩色圖像的超分辨重建效果。