• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種自適應(yīng)圖像插值算法及加速引擎的協(xié)同設(shè)計(jì)

    2023-10-17 01:15:16嚴(yán)忻愷丁晟
    電子與信息學(xué)報(bào) 2023年9期
    關(guān)鍵詞:像素點(diǎn)引擎插值

    嚴(yán)忻愷 丁晟

    ①(浙江大學(xué) 杭州 310015)

    ②(江蘇省專(zhuān)用集成電路設(shè)計(jì)重點(diǎn)實(shí)驗(yàn)室(無(wú)錫) 無(wú)錫 214153)

    1 引言

    在圖形圖像處理領(lǐng)域,像素性能常常是芯片系統(tǒng)的性能瓶頸,減輕圖形渲染的計(jì)算和訪存負(fù)載對(duì)于提升圖形芯片性能有重大幫助。將圖形圖像先進(jìn)行低分辯率渲染后由算法重建放大至期望分辨率的超分辨率重建技術(shù)已經(jīng)成為主要的性能優(yōu)化手段。它被廣泛應(yīng)用于現(xiàn)代社會(huì)中的各個(gè)領(lǐng)域,如多媒體傳輸、大型游戲、醫(yī)療圖像、公共安全等,它是信息學(xué)、計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)等學(xué)科的結(jié)合。同時(shí)隨著5G技術(shù)和計(jì)算機(jī)硬件的不斷進(jìn)步,圖像傳輸?shù)馁|(zhì)量也不斷提高,支持高清(1080×720)、全高清(1920×1080)、超高清(3840×2160)圖像或視頻的實(shí)時(shí)性應(yīng)用變得越來(lái)越廣泛,這對(duì)網(wǎng)絡(luò)帶寬和硬件設(shè)備都產(chǎn)生了巨大的壓力。單幀圖像或多幀圖像的重建根據(jù)方法不同可以分為基于插值的圖像重建[1–8]、基于學(xué)習(xí)的圖像重建[9–11],以及基于深度學(xué)習(xí)的圖像重建[12–16]等。

    基于插值的圖像重建算法利用新像素和原始像素的線性/非線性關(guān)系,根據(jù)放大因子在已有圖像像素中插入固定數(shù)量的新像素來(lái)補(bǔ)充高分辨率圖像缺失的像素,基于插值的圖像重建算法具有算法簡(jiǎn)單、適合并行、運(yùn)算速度快的特點(diǎn),但是隨著圖像放大因子的增加,重建圖像會(huì)出現(xiàn)模糊、振鈴效應(yīng)、鋸齒效應(yīng)和邊緣平滑等問(wèn)題;基于深度學(xué)習(xí)的圖像重建算法利用卷積運(yùn)算可以更有效地自動(dòng)提取圖像細(xì)節(jié)特征,解決底層視覺(jué)問(wèn)題,生成質(zhì)量更優(yōu)的高分辨率圖像(例如降噪、去模糊等),比如使用殘差網(wǎng)絡(luò)來(lái)增強(qiáng)層間連接,將低分辨率圖像特征信息傳到更深層,緩解梯度消失和特征丟失問(wèn)題,使用生成對(duì)抗網(wǎng)絡(luò)中多個(gè)生成器的感知損失和對(duì)抗損失信息,提升高分辨率圖片的真實(shí)感。不過(guò)基于深度學(xué)習(xí)的圖像重建算法也存在一定的場(chǎng)景約束,比如監(jiān)督學(xué)習(xí)網(wǎng)絡(luò)需要圖像訓(xùn)練和測(cè)試數(shù)據(jù)集支持,無(wú)監(jiān)督學(xué)習(xí)網(wǎng)絡(luò)需要算法迭代導(dǎo)致實(shí)時(shí)性較弱等。

    因此基于插值的圖像重建算法比較適合對(duì)實(shí)時(shí)性要求相對(duì)較高,對(duì)放大因子要求較小,對(duì)圖像重建質(zhì)量要求也相對(duì)較低的場(chǎng)景。在以上場(chǎng)景中基于插值的圖像重建算法仍被廣泛使用和研究,如AMD公司和NVDIA公司也先后推出了基于圖像插值算法的游戲加速插件FSR[17]和NIS[18],以及基于插值算法的硬件加速結(jié)構(gòu)研究[19–22]。所以針對(duì)特定場(chǎng)景,研究基于插值的圖像重建算法和硬件加速結(jié)構(gòu)來(lái)提高高分辨率圖像質(zhì)量,加快計(jì)算速度,減少硬件開(kāi)銷(xiāo)仍然非常必要。

    本文提出了一種自適應(yīng)圖像插值算法和加速引擎的協(xié)同設(shè)計(jì),算法得到的圖像質(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。本文提出的加速引擎具有高并行高可擴(kuò)展的特點(diǎn),并且通過(guò)數(shù)據(jù)重用和參數(shù)優(yōu)化,能夠提升加速引擎的能效比,節(jié)省硬件開(kāi)銷(xiāo)。

    本文的組織結(jié)構(gòu)如下:第2節(jié)介紹圖像插值概述,主要包括Lanczos插值和邊緣檢測(cè);第3節(jié)詳細(xì)介紹提出的自適應(yīng)圖像插值算法;第4節(jié)詳細(xì)介紹加速引擎架構(gòu)設(shè)計(jì);第5節(jié)給出圖像質(zhì)量比較結(jié)果;第6節(jié)得出結(jié)論。

    2 圖像插值概述

    圖像插值技術(shù)一直是圖像處理領(lǐng)域中的研究熱點(diǎn),從經(jīng)典的基于局部數(shù)據(jù)的線性插值算法,如雙線性插值算法[1]、雙三次插值算法[2],到近些年關(guān)注基于樣例的非線性插值算法如基于邊緣導(dǎo)向的插值算法[4]、軟判決自適應(yīng)插值算法[6]、對(duì)比度引導(dǎo)法等插值算法[7]等。

    2.1 Lanczos插值

    Lanczos插值算法是圖像線性插值算法的一種,它是Lanczos窗函數(shù)在圖像處理領(lǐng)域的應(yīng)用,Lanczos插值算法是對(duì)圖像在X軸和Y軸分別進(jìn)行插值處理。由于Lanczos插值算法的系數(shù)在縮放大小確定后是固定值,硬件可以通過(guò)IO寄存器寫(xiě)入固定的存儲(chǔ)器中使用,從而進(jìn)行插值操作,而不需要在計(jì)算過(guò)程中生成相關(guān)系數(shù)。Lanczos插值對(duì)于減少振鈴效應(yīng)、鋸齒效應(yīng)有較好的效果,它的計(jì)算公式為

    其中,d表示帶插值像素點(diǎn)到原像素點(diǎn)的距離,r表示插值窗半徑。由于本文選取縮放因子4,所以待插值像素點(diǎn)到原像素點(diǎn)在X方向和Y方向的距離d={0.125,0.375,0.625,0.875},r=4。

    2.2 邊緣檢測(cè)

    由于圖像特征中邊緣的重要性以及人眼系統(tǒng)對(duì)圖像邊緣的敏感性,而傳統(tǒng)插值算法對(duì)圖像邊緣的處理效果并不理想,所以針對(duì)圖像邊緣進(jìn)行優(yōu)化和提高圖像質(zhì)量是圖像插值的一個(gè)重要研究方向[7,23]?;谶吘墐?yōu)化的圖像插值算法一般流程如圖1所示:

    邊緣檢測(cè)一般用于灰度像素,彩色圖像轉(zhuǎn)換為灰度圖像的過(guò)程如式(2):

    常見(jiàn)的邊緣檢測(cè)算子有1階算子(Sobel, Prewitt,Roberts, Canny)和2階算子(拉普拉斯、高斯、LOG)。對(duì)于圖像處理而言實(shí)際邊緣情況較為復(fù)雜,但為了減少計(jì)算復(fù)雜度通常只檢測(cè)0°/45°/90°/135° 4種邊緣方向情況。但基于邊緣檢測(cè)的圖像算法仍存在例如對(duì)彩色圖像效果不佳、計(jì)算復(fù)雜度高、計(jì)算時(shí)長(zhǎng)較長(zhǎng)等問(wèn)題。

    2.3 協(xié)同設(shè)計(jì)分析

    由于圖像插值算法的復(fù)雜度直接影響硬件實(shí)現(xiàn)的復(fù)雜性和運(yùn)算速度,因此需要協(xié)同設(shè)計(jì)圖像插值算法和加速插值引擎。例如一些基于迭代更新的插值算法會(huì)顯著增加算法運(yùn)行時(shí)間和硬件存儲(chǔ)開(kāi)銷(xiāo);基于浮點(diǎn)運(yùn)算的插值算法會(huì)引入浮點(diǎn)乘法部件,增加硬件開(kāi)銷(xiāo);基于分步的算法將整個(gè)插值過(guò)程分為插值和銳化兩個(gè)步驟,會(huì)導(dǎo)致硬件開(kāi)銷(xiāo)增加和算法運(yùn)行時(shí)間的增加;基于邊緣插值的算法有基礎(chǔ)插值和邊緣插值兩個(gè)計(jì)算部分,這會(huì)增加乘法器資源的消耗。所以本文探索軟硬件協(xié)同設(shè)計(jì)空間,尋找通過(guò)增加對(duì)硬件友好的少量加法操作和存儲(chǔ)空間而不增加乘法器資源的方式實(shí)現(xiàn)加速引擎設(shè)計(jì)。

    3 自適應(yīng)圖像插值算法

    考慮到計(jì)算復(fù)雜度、存儲(chǔ)復(fù)雜度和實(shí)時(shí)性需求,本文提出了一種基于邊緣對(duì)比度的自適應(yīng)圖像插值算法,采用4種邊緣方向的對(duì)比度探測(cè),根據(jù)全局閾值和局部閾值來(lái)精確定位邊緣;同時(shí)綜合4個(gè)方向邊緣檢測(cè)的對(duì)比度計(jì)算結(jié)果,自適應(yīng)地選擇不同系數(shù)Lanczos窗函數(shù)生成的插值系數(shù),對(duì)圖像區(qū)域進(jìn)行插值:

    (1)對(duì)于平坦區(qū)域,采用式(1)產(chǎn)生的系數(shù)進(jìn)行插值。

    (2)對(duì)于邊緣區(qū)域,根據(jù)不同邊緣方向和對(duì)比度值,綜合選擇式(3)不同β值產(chǎn)生的系數(shù)進(jìn)行插值。

    當(dāng)β>1時(shí),Lanczos窗函數(shù)更尖銳,中心像素點(diǎn)的插值比例更高,本算法中r=4時(shí)根據(jù)對(duì)比度的不同,取βr=4=1.18,βr=4=1.22,βr=4=1.25。

    考慮到高分辨率圖像質(zhì)量、算法復(fù)雜度和硬件復(fù)雜度的相互關(guān)系,本算法首先選擇r=4時(shí)4級(jí)Lanczos 4窗函數(shù)(8×8個(gè)原始像素點(diǎn))來(lái)增強(qiáng)生成高分辨像素點(diǎn)所需的局部信息;然后考慮到圖像邊緣情況的復(fù)雜性,相比于只計(jì)算像素中心點(diǎn)的邊緣信息,本算法使用原像素中心點(diǎn)臨近4×4區(qū)域像素點(diǎn)的灰度信息計(jì)算邊緣計(jì)算所需的局部閾值以及計(jì)算原像素中心點(diǎn)臨近2×2區(qū)域的邊緣梯度,通過(guò)結(jié)果邊緣梯度矩陣來(lái)提高邊緣檢測(cè)的準(zhǔn)確度,以此實(shí)現(xiàn)不同感受野內(nèi)的圖像信息特征獲取,從而提高生成的高分辨率圖像質(zhì)量。由于人眼對(duì)彩色圖像中綠色分量最敏感,所以本算法使用式(4)取代式(2)來(lái)計(jì)算像素的近似灰度來(lái)進(jìn)行邊緣檢測(cè)。通過(guò)近似灰度的方式,不僅可以節(jié)省分別對(duì)RGB分量進(jìn)行串行邊緣檢測(cè)所需的算法運(yùn)行時(shí)間或?qū)GB分量進(jìn)行并行計(jì)算所需的硬件資源,還可以將定點(diǎn)乘加操作轉(zhuǎn)換為整數(shù)加法操作,進(jìn)一步節(jié)省硬件資源。

    3.1 總體算法

    本文算法步驟如下:

    輸入:低分辨率RGB彩色圖像IMG_L。

    輸出:高分辨率RGB彩色圖像IMG_H。

    步驟1 讀入圖像,選取待插值點(diǎn)的8×8 Lanczos原像素點(diǎn)矩陣。

    步驟2 進(jìn)行邊緣檢測(cè)。

    步驟2.1 將中央4×4像素點(diǎn)矩陣使用式(4)將彩色轉(zhuǎn)換成像素近似灰度。

    步驟2.2 用4個(gè)方向的Prewitt算子分別計(jì)算原像素中心點(diǎn) (i,j) 和相鄰(i+1,j), (i,j+1), (i+1,j+1)共4個(gè)點(diǎn)的梯度。

    步驟2.3 將4個(gè)方向梯度和不同閾值進(jìn)行比較,產(chǎn)生邊緣對(duì)比度結(jié)果矩陣

    步驟3 進(jìn)行插值計(jì)算。

    步驟3.1 插值系數(shù)選擇,根據(jù)邊緣對(duì)比度結(jié)果矩陣選擇不同系數(shù)的Lanczos系數(shù)進(jìn)行插值,按照邊緣區(qū)域?qū)Ρ榷冉Y(jié)果,由高到低依次選擇式(3)中不同β值產(chǎn)生的插值系數(shù),對(duì)于平坦區(qū)域選擇式(1)產(chǎn)生的插值系數(shù)。

    步驟3.2 使用步驟3.1選擇的系數(shù),對(duì)低分辨圖像8×8像素點(diǎn)進(jìn)行插值計(jì)算,生成待插值點(diǎn)像素。

    步驟4 將插值計(jì)算結(jié)果輸出,得到最終高分辨率圖像。

    3.2 自適應(yīng)邊緣檢測(cè)

    在步驟2.2中,使用4個(gè)方向的Prewitt算子進(jìn)行梯度計(jì)算,得到θ0,θ90,θ45,θ135,然后根據(jù)式(5)進(jìn)行判斷,得到二值化的邊緣標(biāo)志。

    其中, TH=max(thg,thl) ,全局閾值t hg可以通過(guò)寄存器配置得到,本文中默認(rèn)值為15, 127和255,局部閾值 thl由4×4近似灰度矩陣中的最大灰度和最小灰度的差值得到。

    在步驟3.2中,算法根據(jù)中心像素點(diǎn) (i,j)相鄰的多級(jí)二值邊緣標(biāo)志矩陣組合成3維標(biāo)志矩陣edge_flagdir,從而生成對(duì)應(yīng)的插值系數(shù)選擇。最終插值結(jié)果根據(jù)式(6)進(jìn)行計(jì)算

    其中:

    (1) 當(dāng) edgeflag3(0,90,45,135)≥3時(shí),采用式(3)且βr=4=1.25 產(chǎn)生的系數(shù)a lpha3,beta3;

    (2) 當(dāng) edgeflag2(0,90,45,135)≥2時(shí),采用式(3)且βr=4=1.22 產(chǎn)生的系數(shù)a lpha2,beta2;

    (3) 當(dāng) edgeflag1(0,90,45,135)≥1時(shí),采用式(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的不同感受野的插值合并過(guò)程如圖2所示,通過(guò)合并大感受野的局部像素信息和小感受野的邊緣細(xì)節(jié)信息,同時(shí)增加灰度感受野來(lái)提高邊緣精確度,從而提高圖像插值質(zhì)量。

    圖2 各級(jí)感受野像素的合并插值示意圖

    4 加速引擎設(shè)計(jì)

    加速引擎的總體架構(gòu)如圖3所示,主要由計(jì)算模塊(插值引擎)和調(diào)度模塊兩部分組成,完成整個(gè)自適應(yīng)圖像插值算法的加速計(jì)算。

    圖3 加速引擎總體架構(gòu)示意圖

    其中調(diào)度模塊負(fù)責(zé)通過(guò)總線和內(nèi)存進(jìn)行數(shù)據(jù)交互,啟動(dòng)并分配調(diào)度插值引擎工作;計(jì)算模塊負(fù)責(zé)實(shí)現(xiàn)自適應(yīng)圖像插值算法的硬件加速。

    4.1 計(jì)算調(diào)度

    通過(guò)在插值引擎中展開(kāi)或折疊乘加運(yùn)算,可以實(shí)現(xiàn)資源與處理時(shí)間的折中;同時(shí)Lanczos像素窗具有像素重疊特性,可以通過(guò)并行多個(gè)插值引擎實(shí)現(xiàn)較高的數(shù)據(jù)重用,從而減少訪存需求和處理時(shí)間。本設(shè)計(jì)使用插值引擎內(nèi)像素移窗和插值引擎間像素并行多播兩級(jí)數(shù)據(jù)重用來(lái)減輕訪存壓力,同時(shí)減少行buffer和結(jié)果buffer的RAM開(kāi)銷(xiāo)。

    4.1.1 像素移窗

    在插值引擎內(nèi),像素處理遵循以下原則:

    (1) 單個(gè)插值引擎1次處理 1 ×4個(gè)原始像素點(diǎn),需要輸入8 ×11個(gè) 像素點(diǎn),輸出4 ×16個(gè)插值像素點(diǎn);

    (2) 調(diào)度模塊按圖像垂直方向調(diào)度插值引擎,除圖像上邊緣外,每輪只輸入11個(gè)像素點(diǎn);

    (3) 計(jì)算模塊每輪處理的圖像行寬為 4N(其中N為插值引擎?zhèn)€數(shù))。

    對(duì)于當(dāng)前處理的原始像素點(diǎn)窗,在8×1 1個(gè)像素點(diǎn)的處理中有8×5的像素點(diǎn)是每輪都可以水平重用;而對(duì)于下一輪處理的原始像素點(diǎn)窗,在8×11個(gè)像素點(diǎn)的處理中有7×11的像素點(diǎn)可以垂直重用。除圖像上邊緣外,插值引擎每輪工作像素點(diǎn)的數(shù)據(jù)重用率超過(guò)80%。

    4.1.2 并行多播

    基于插值引擎內(nèi)的水平方向數(shù)據(jù)重用原理,將其推廣至多插值引擎的并行化處理,從而實(shí)現(xiàn)行buffer數(shù)據(jù)的并行多播和插值引擎間的數(shù)據(jù)重用。行buffer中的像素可以多播給并行的多個(gè)插值引擎,例如像素6會(huì)同時(shí)多播給插值引擎1, 2, 3使用。此外由于加速引擎采用圖像列向處理順序,所以行buffer無(wú)需開(kāi)設(shè)大緩沖,能夠節(jié)省片上存儲(chǔ)資源。

    4.2 插值引擎設(shè)計(jì)

    插值引擎的結(jié)構(gòu)總體框圖如圖4所示,它主要由5部分組成:

    圖4 插值引擎總體結(jié)構(gòu)框圖

    (1) 控制單元:負(fù)責(zé)控制調(diào)度引擎,包含引擎控制模塊;

    (2) 像素陣列:負(fù)責(zé)儲(chǔ)存像素信息,主要包含8×11 像 素點(diǎn)寄存器陣列和6 ×7像素近似亮度寄存器陣列;

    (3) 存儲(chǔ)器陣列:負(fù)責(zé)存儲(chǔ)插值所需的權(quán)值,主要包含不同插值系數(shù)的RAM;

    (4) 邊緣檢測(cè)單元:負(fù)責(zé)像素的邊緣檢測(cè)和邊緣對(duì)比度標(biāo)志矩陣生成,主要包含似亮度轉(zhuǎn)換單元、梯度計(jì)算單元、閾值計(jì)算單元;

    (5) 插值計(jì)算單元:負(fù)責(zé)各類(lèi)計(jì)算處理,主要包含插值計(jì)算模塊和插值系數(shù)選擇模塊。

    4.2.1 工作模式

    插值引擎支持按功能分為兩種工作模式:基礎(chǔ)工作模式和完全工作模式.

    (1) 基礎(chǔ)工作模式,即只采用插值計(jì)算插值點(diǎn)輸出,關(guān)閉邊緣檢測(cè)單元;

    (2) 完全工作模式,即按照先邊緣檢測(cè),再生成對(duì)比度標(biāo)志矩陣進(jìn)行插值計(jì)算,最后將插值結(jié)果輸出。

    插值引擎支持塊處理和行處理兩種處理流程。塊模式用于處理首次輸入像素塊或更新輸入,行模式用于連續(xù)處理像素行的情形。調(diào)度模塊1次輸入1行RGB像素點(diǎn),像素點(diǎn)存入像素陣列,且屬于像素點(diǎn)窗中心4×4的像素點(diǎn)被同時(shí)送入邊緣檢測(cè)單元進(jìn)行近似灰度轉(zhuǎn)換,而后存入近似灰度陣列并送入下一級(jí)模塊進(jìn)行邊緣計(jì)算。塊模式下插值引擎接收8行像素點(diǎn)后開(kāi)始插值計(jì)算,行模式下插值引擎接收1行像素點(diǎn)后開(kāi)始插值計(jì)算。插值像素點(diǎn)按像素塊從左到右順序輸出,每個(gè)像素塊內(nèi)按先行后列輸出像素點(diǎn)。

    4.2.2 邊緣檢測(cè)

    邊緣檢測(cè)單元由閾值計(jì)算單元、梯度計(jì)算單元和邊緣處理單元組成,如圖5所示。整個(gè)邊緣檢測(cè)單元采用全流水結(jié)構(gòu)設(shè)計(jì),流水站臺(tái)為4級(jí)。當(dāng)調(diào)度模塊輸入像素點(diǎn)完畢后,控制單元分別將近似灰度矩陣中的1 ×4的中心像素點(diǎn)所需的4×4灰度像素送入邊緣檢測(cè)單元中進(jìn)行計(jì)算,得到中心像素點(diǎn)(i,j)相鄰二值邊緣標(biāo)志矩陣,包含0°, 45° , 90°, 135°在三級(jí)閾值下的4個(gè)二值邊緣標(biāo)志,用于索引插值系數(shù)RAM中對(duì)應(yīng)的條目。

    圖5 邊緣檢測(cè)單元結(jié)構(gòu)圖

    閾值計(jì)算單元負(fù)責(zé)計(jì)算原像素中心點(diǎn)臨近4×4區(qū)域內(nèi)的最大和最小近似灰度像素,并與預(yù)配置的全局閾值進(jìn)行比較得到本次邊緣計(jì)算所需的最大和最小閾值。圖5(a)中閾值計(jì)算單元由3級(jí)全流水結(jié)構(gòu)組成,第1級(jí)站臺(tái)計(jì)算4×4近似灰度矩陣內(nèi)各行的最大/最小值;第2級(jí)站臺(tái)對(duì)得到的4組最大/最小值進(jìn)行比較計(jì)算,得到4×4區(qū)域內(nèi)的最大/最小值;第3級(jí)站臺(tái)將區(qū)域最大/最小值和全局閾值進(jìn)行比較,得到最終所需的閾值,發(fā)送到邊緣處理單元中使用。

    梯度計(jì)算單元負(fù)責(zé)計(jì)算原像素中心點(diǎn)臨近2×2區(qū)域4個(gè)像素點(diǎn)的4個(gè)方向梯度計(jì)算。圖5(b)中梯度計(jì)算單元由3級(jí)全流水結(jié)構(gòu)組成,第1級(jí)站臺(tái)并行計(jì)算1個(gè)像素點(diǎn)在4個(gè)方向上的近似灰度差值,本設(shè)計(jì)采用中間結(jié)果合并計(jì)算方式,將原本需要20個(gè)9位加法器的開(kāi)銷(xiāo)縮減到4個(gè)9位加法器和8個(gè)10位加法器;第2級(jí)站臺(tái)計(jì)算4個(gè)方向的最終梯度結(jié)果;第3級(jí)站臺(tái)計(jì)算0°~90°方向的最大/最小梯度和45°~135°方向的最大/最小梯度,發(fā)送到邊緣處理單元中使用。

    邊緣處理單元負(fù)責(zé)計(jì)算二值邊緣標(biāo)志矩陣。圖5(c)中邊緣處理單元由1級(jí)站臺(tái)結(jié)構(gòu)組成,根據(jù)閾值計(jì)算單元和梯度計(jì)算單元的數(shù)據(jù)輸入計(jì)算出0°, 45°, 90°, 135°的二值邊緣標(biāo)志矩陣,將結(jié)果發(fā)送到索引插值系數(shù)RAM中對(duì)應(yīng)的條目中存儲(chǔ)。

    4.2.3 插值計(jì)算

    考慮到Lanczos的算法特性以及計(jì)算并行度、硬件開(kāi)銷(xiāo)和功耗,本文設(shè)計(jì)了一種高能效的插值計(jì)算單元,圖6給出了插值計(jì)算單元結(jié)構(gòu)圖。

    圖6 插值計(jì)算單元結(jié)構(gòu)圖

    從圖中看到,插值計(jì)算單元由9個(gè)MAC乘累加單元和寄存器組成,其中水平方向插值計(jì)算單元包含8個(gè)乘累加單元,豎直方向插值計(jì)算單元包含1個(gè)乘累加單元。插值計(jì)算單元的設(shè)計(jì)思路如下:

    (1) Lanczos插值算法按照先水平方向后垂直方向的插值順序,所以水平方向插值計(jì)算單元先接收像素點(diǎn)輸入。

    (2) 在Lanczos插值算法中所有水平方向的各行像素點(diǎn)共用一套插值系數(shù)(8個(gè)int16整數(shù)),所以將水平方向插值計(jì)算模塊設(shè)計(jì)為權(quán)值傳遞,像素點(diǎn)并發(fā)的方式,減少對(duì)RAM的訪問(wèn);

    (3) 水平方向插值計(jì)算單元有8個(gè)獨(dú)立的像素乘累加單元。每個(gè)乘累加單元分別處理1行像素點(diǎn),按從左到右順序依次按拍輸入像素;8個(gè)乘累加單元的像素點(diǎn)從左到右依次錯(cuò)1拍輸入,從而和對(duì)應(yīng)位置系數(shù)相乘;

    (4) 每個(gè)乘累加單元包含3個(gè)16×16+32的有符號(hào)乘累加,分別計(jì)算r, g, b 3個(gè)通道的像素,得到水平插值結(jié)果h1~h8;

    (5) Lanczos插值算法的垂直方向插值計(jì)算將8個(gè)水平方向的乘累加結(jié)果分別和對(duì)應(yīng)的系數(shù)相乘并累加;

    (6) 水平方向插值計(jì)算的8個(gè)結(jié)果是連續(xù)8拍輸出,所以垂直方向只需要1套乘累加計(jì)算模塊。

    4.2.4 延遲和吞吐率

    假設(shè)乘累加單元的延遲為p( 其中p=pmul+padd),所以塊模式時(shí)整個(gè)啟動(dòng)開(kāi)銷(xiāo)為N+n+3p+8拍,其中N為像素加載延遲,n為邊緣檢測(cè)延遲,3p為水平乘累加、垂直乘累加和合并插值的延遲。像素輸出頻率為每8拍輸出1個(gè)插值像素點(diǎn),所以塊模式時(shí)需要8 +n+3p+128拍輸出完成16個(gè)插值像素點(diǎn)計(jì)算輸出,需要8 +n+3p+512拍輸出完成64個(gè)插值像素點(diǎn)計(jì)算輸出;行模式時(shí)需要1+n+3p+128拍輸出完成16個(gè)插值像素點(diǎn)計(jì)算輸出,需要1+n+3p+512拍輸出完成64個(gè)插值像素點(diǎn)計(jì)算輸出。

    4.3 資源開(kāi)銷(xiāo)

    4.3.1 乘累加單元

    乘累加單元是插值引擎中占用硬件資源最多的邏輯器件,插值引擎中乘累加單元的數(shù)量如表1所示。在2 GHz時(shí)鐘頻率約束的16 nm綜合結(jié)果中,若使用int8×int16+int24的乘加器實(shí)現(xiàn),則使用組合邏輯數(shù)量為12 474,時(shí)序邏輯數(shù)量為1 296;若使用int16×int16+int32的乘加器實(shí)現(xiàn),則使用組合邏輯數(shù)量為20 520,時(shí)序邏輯數(shù)量為1 728。

    表1 乘加器單元數(shù)目

    4.3.2 加法器單元

    加法器單元是插值引擎中邊緣檢測(cè)單元主要占用的硬件資源,插值引擎中加法器單元的數(shù)量如表2所示。在2 GHz時(shí)鐘頻率約束的16 nm綜合結(jié)果中,加法器單元共使用組合邏輯數(shù)量為1 445,時(shí)序邏輯數(shù)量為366。

    表2 加法器單元數(shù)目

    4.3.3 RAM

    插值引擎中的RAM用于存放插值系數(shù),單個(gè)插值引擎中的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ù))組成,每個(gè)系數(shù)為int16類(lèi)型。

    表3 插值引擎的RAM容量表

    4.3.4 寄存器陣列

    插值引擎中的寄存器陣列用于存放原始像素點(diǎn)、近似灰度像素、乘累加單元結(jié)果緩存、流水線站臺(tái)和控制寄存器等,表4列出插值引擎中主要的寄存器數(shù)量。

    表4 插值引擎的寄存器數(shù)目表

    4.4 FPGA仿真

    本文設(shè)計(jì)的加速引擎在Xilinx Zynq Ultra scale+xczu15eg進(jìn)行仿真,使用FPGA內(nèi)置的DSP48單元中3拍流水乘法器實(shí)現(xiàn)乘累加部件,插值引擎的綜合頻率可以達(dá)到200MHz。實(shí)例化24個(gè)插值引擎進(jìn)行并行處理,對(duì)縮放因子為4,分辨率為960×540圖像的插值總處理時(shí)長(zhǎng)為15.24 ms,處理幀率(fps)達(dá)到60。本文設(shè)計(jì)的插值加速引擎在UVM驗(yàn)證環(huán)境進(jìn)行測(cè)試激勵(lì)仿真以及FPGA仿真的結(jié)果輸出和CPU軟件算法輸出保持一致,無(wú)像素差異。

    5 實(shí)驗(yàn)結(jié)果

    5.1 實(shí)驗(yàn)環(huán)境

    圖像插值算法客觀評(píng)價(jià)指標(biāo)是指原始圖像降采樣處理后再通過(guò)圖像插值獲取高分辨圖像,比較降采樣處理前和插值處理后圖像間的偏差,通過(guò)偏差值來(lái)判斷圖像質(zhì)量的優(yōu)劣。為了測(cè)評(píng)本文提出的自適應(yīng)圖像插值算法,選用了MATLAB提供的3種代表性算法(雙線性插值法(bilinear)、雙三次插值法(bicubic)和Lanczos3插值法)和OpenCV提供的Lanczos4插值法作為比較,實(shí)驗(yàn)環(huán)境如下:程序編寫(xiě)所基于的平臺(tái)是 MATLAB,版本是R2022a,測(cè)試數(shù)據(jù)集由47張3D游戲圖像組成,每張高分辨率原圖大小為3 840×2160,均值下采樣后每張低分辨率圖像大小為9 60×540。

    5.2 算法結(jié)果對(duì)比

    實(shí)驗(yàn)分別采用峰值信噪比(PSNR)、結(jié)構(gòu)相似度(SSIM)和圖像感知相似度(LPIPS)[24]作為圖像質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn),圖像插值結(jié)果與原圖進(jìn)行對(duì)比。表5給出了本文算法和雙線性插值、雙三次插值和Lanczos3/4插值法計(jì)算單個(gè)插值點(diǎn)的復(fù)雜度對(duì)比。實(shí)驗(yàn)對(duì)比結(jié)果如表6~表8所示。由于PSNR僅計(jì)算圖像之間的灰度值差異,并沒(méi)有考慮到圖像之間的結(jié)構(gòu)關(guān)系,而SSIM從亮度、對(duì)比度和結(jié)構(gòu)3個(gè)方面分別進(jìn)行比較,所以增加LPIPS比較,因?yàn)長(zhǎng)PIPS更符合人眼系統(tǒng)的評(píng)價(jià)標(biāo)準(zhǔn)。

    表5 不同算法的復(fù)雜度對(duì)比

    表6 不同算法的PSNR對(duì)比(dB)

    表7 不同算法的SSIM對(duì)比

    表8 不同算法的LPIPS對(duì)比

    從表6~表8中可以看出本文算法相比于雙線性插值、雙三次插值和Lanczos3/4插值法在各項(xiàng)圖像評(píng)價(jià)指標(biāo)上均有明顯提升,相比于雙三次插值,本文算法在P S N R 上提升較為明顯,相比于Lanczos3/4算法,本文在LPIPS上提升較為明顯。此外通過(guò)分析測(cè)試集中圖像質(zhì)量相對(duì)較差的圖像,本文算法在圖像包含大量雜亂紋理和陰影時(shí)處理效果提升相對(duì)較少。

    5.3 硬件指標(biāo)對(duì)比

    本文選取基于插值算法的FPGA硬件實(shí)現(xiàn)進(jìn)行比較,比較結(jié)果如表9所示。同時(shí)由于基于FPGA平臺(tái)的硬件實(shí)現(xiàn)大多面向低分辨率的灰度圖像,所以本文進(jìn)一步選取支持高清分辨率彩色圖像放大的ASIC硬件實(shí)現(xiàn)進(jìn)行比較,硬件指標(biāo)結(jié)果對(duì)比如表10所示。

    表9 FPGA硬件實(shí)現(xiàn)的指標(biāo)對(duì)比

    表10 ASIC硬件實(shí)現(xiàn)的指標(biāo)對(duì)比

    從表9可以看出由于本文算法使用的Lanczos4窗函數(shù)需要8×8像素空間信息和4×4近似灰度像素空間信息,這會(huì)增加硬件寄存器開(kāi)銷(xiāo);由于本文硬件實(shí)現(xiàn)支持縮放因子為4的彩色高清圖像并進(jìn)行邊緣檢測(cè),所以增加了LUT硬件資源開(kāi)銷(xiāo)。假定16 nm工藝相比于40 nm/65 nm工藝分別有2代和3代的性能/面積提升(每代提升1.4倍),從表10可以看出相比于基于卷積和學(xué)習(xí)的硬件實(shí)現(xiàn)方式,本文硬件實(shí)現(xiàn)采用的優(yōu)化技術(shù)可以明顯減少RAM開(kāi)銷(xiāo)和邏輯門(mén)數(shù)量,所以本文提出的硬件結(jié)構(gòu)對(duì)于實(shí)時(shí)性要求高、硬件開(kāi)銷(xiāo)低且對(duì)彩色高清圖像重建質(zhì)量要求相對(duì)較低的場(chǎng)景具有較好的適配性。

    6 結(jié)束語(yǔ)

    本文對(duì)圖像插值算法和加速引擎進(jìn)行協(xié)同設(shè)計(jì),提出了一種基于邊緣對(duì)比度的新型自適應(yīng)圖像插值算法和高并行高能效的插值引擎,主要應(yīng)用于單幀高清彩色圖像放大。本文提出的算法使用邊緣對(duì)比度檢測(cè)和不同尺度的感受野來(lái)自適應(yīng)選擇Lanczos插值的系數(shù),自適應(yīng)性和不同感受野可以進(jìn)一步提升圖像放大質(zhì)量。此外本文通過(guò)協(xié)同軟硬件協(xié)同設(shè)計(jì),只通過(guò)增加少量加法器和RAM存儲(chǔ)空間而不增加乘法器資源的方式實(shí)現(xiàn)加速引擎設(shè)計(jì)。同時(shí)本文設(shè)計(jì)的加速引擎能夠通過(guò)像素移窗和像素多播的兩級(jí)數(shù)據(jù)重用來(lái)減少行buffer容量和降低訪存需求,根據(jù)算法特性采用權(quán)值傳遞的全流水插值計(jì)算單元來(lái)減少RAM訪問(wèn)功耗,提高插值引擎的能效比。未來(lái)將著重研究更優(yōu)的邊緣檢測(cè)算法來(lái)提升高清彩色圖像的超分辨重建效果。

    猜你喜歡
    像素點(diǎn)引擎插值
    基于Sinc插值與相關(guān)譜的縱橫波速度比掃描方法
    基于canvas的前端數(shù)據(jù)加密
    藍(lán)谷: “涉藍(lán)”新引擎
    商周刊(2017年22期)2017-11-09 05:08:31
    基于逐像素點(diǎn)深度卷積網(wǎng)絡(luò)分割模型的上皮和間質(zhì)組織分割
    一種改進(jìn)FFT多譜線插值諧波分析方法
    基于四項(xiàng)最低旁瓣Nuttall窗的插值FFT諧波分析
    無(wú)形的引擎
    河南電力(2015年5期)2015-06-08 06:01:46
    基于Cocos2d引擎的PuzzleGame開(kāi)發(fā)
    基于Node-Cell結(jié)構(gòu)的HEVC幀內(nèi)編碼
    Blackman-Harris窗的插值FFT諧波分析與應(yīng)用
    潍坊市| 尼勒克县| 凌源市| 沈阳市| 章丘市| 肥城市| 乐清市| 沂水县| 嫩江县| 永嘉县| 合山市| 延川县| 固镇县| 安阳县| 太保市| 永安市| 沙河市| 岑巩县| 比如县| 治县。| 江源县| 凤庆县| 平原县| 乐平市| 新民市| 桂林市| 榆中县| 泰州市| 沈阳市| 沙洋县| 大新县| 阜新市| 岗巴县| 承德市| 濉溪县| 马龙县| 阿瓦提县| 育儿| 台中市| 基隆市| 达孜县|