惠 超,蔣 林,朱 筠,王 萍,崔馨月
(1.西安郵電大學(xué) 電子工程學(xué)院,陜西 西安 710121; 2.西安科技大學(xué) 集成電路實(shí)驗(yàn)室,陜西 西安 710054)
在基于塊匹配的視頻編解碼算法中,分?jǐn)?shù)運(yùn)動估計(jì)算法在編碼端占據(jù)了約1/4的復(fù)雜度[1,2],在解碼端占據(jù)了約1/2的復(fù)雜度,是視頻編解碼器中計(jì)算密集度最高的任務(wù)之一。
國內(nèi)外學(xué)者進(jìn)行了大量降低亞像素插值模塊復(fù)雜程度的研究,Hong等[3]提出了一種可配置濾波器的電路結(jié)構(gòu),雖然提高了硬件資源利用率,但卻增加了計(jì)算的復(fù)雜度。Liu等[4]和Wang等[5]對所有的幀間編碼塊通過自適應(yīng)插值濾波器來獲取亞像素預(yù)測像素塊,降低了碼流所需濾波器系數(shù)和解碼計(jì)算復(fù)雜度,但在面積和性能上都達(dá)不到人們的期望值。Luo等[6]提出一種基于Wallace樹優(yōu)化的HEVC分像素插值濾波算法的實(shí)現(xiàn)方案,相比于傳統(tǒng)方法不僅減少了硬件面積,而且提高了模塊可工作的最高頻率,但只是針對8×8大小的編碼塊,難以滿足視頻編碼質(zhì)量多標(biāo)準(zhǔn)的要求。Kalali等[7]提出了兩個(gè)近似的HEVC分?jǐn)?shù)插值濾波器,通過修改插值濾波器系數(shù)來進(jìn)行分?jǐn)?shù)濾波,能耗降低了67.1%,但是以損耗峰值信噪比和增加比特率為代價(jià)。這些方法雖然都能滿足算法實(shí)現(xiàn)的需求,但其結(jié)構(gòu)固定,不能根據(jù)處理速度自適應(yīng)地改變硬件實(shí)現(xiàn)的規(guī)模。
綜上所述,基于多核體系結(jié)構(gòu)視頻編碼算法的動態(tài)可重構(gòu)是解決不同大小預(yù)測塊靈活切換,提高插值計(jì)算效率與計(jì)算速度的有效途徑。本文使用可重構(gòu)視頻陣列處理器設(shè)計(jì)分像素插值算法塊重構(gòu)映射方案,根據(jù)不同大小的編碼塊,靈活配置處理元邏輯功能和處理元之間的互連方式,結(jié)合數(shù)據(jù)復(fù)用和并行處理的思想進(jìn)行算法驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,本文提出的方案無論在數(shù)據(jù)復(fù)用率還是資源占用量上都有較大改善。
在幀間編碼中,運(yùn)動矢量不一定總是像素的整數(shù)倍。與H.264/AVC不同,HEVC中亮度分?jǐn)?shù)樣點(diǎn)的內(nèi)插分兩種情況處理,對1/2像素位置插值使用一個(gè)8抽頭濾波器,對1/4像素位置插值使用一個(gè)7抽頭濾波器,由于沒有中間的舍入操作,并且使用了更長的濾波器可大幅度提高內(nèi)插精度,抽頭系數(shù)見表1。
表1 亮度分?jǐn)?shù)樣點(diǎn)插值濾波器抽頭系數(shù)
圖1所示的亮度分?jǐn)?shù)樣點(diǎn)插值中,大寫字母表示整數(shù)像素所在的位置,小寫字母表示分?jǐn)?shù)像素所在位置。以A0,0附近的亞像素點(diǎn)為例,a0,0、b0,0、c0,0分別為1/4精度、1/2精度、3/4精度的水平亞像素插值點(diǎn),它們可由水平方向上的整像素點(diǎn)計(jì)算得出;d0,0、h0,0、n0,0分別為1/4精度、1/2精度、3/4精度的垂直亞像素插值點(diǎn),它們可由垂直方向上的整像素點(diǎn)計(jì)算得出,虛線框內(nèi)的中間9個(gè)點(diǎn)e0,0、f0,0、g0,0、i0,0、j0,0、k0,0、p0,0、q0,0和r0,0可由內(nèi)插出來的垂直鄰近的像素a0,j、b0,j、c0,j濾波得到。若以A0,0為基準(zhǔn)像素點(diǎn)進(jìn)行1/2插值,h′0,0和h0,0分別為垂直方向的上亞像素插值點(diǎn)和下亞像插值素點(diǎn),h′0,0的插值系數(shù)跟式(1)是一致的,不同之處是向上取垂直方向上的4個(gè)像素點(diǎn),向下取垂直方向上的3個(gè)像素點(diǎn)
h0,0={4(A0,-2+A0,3)-(A0,-3+A0,4)- 11(A0,-1-A0,2)-40(A0,0+A0,1)}?6
(1)
b0,0={4(A-2,0+A3,0)-(A-3,0+A4,0)-
11(A-1,0+A2,0)-40(A0,0+A1,0)}?6
(2)
圖1 分?jǐn)?shù)位置像素插值
同理b0,0和b′0,0分別為水平方向的右亞像素插值點(diǎn)和左亞像插值素點(diǎn),b′0,0的插值系數(shù)跟式(2)是一致的,不同之處是向左取水平方向上的4個(gè)像素點(diǎn),向右取水平方向上的3個(gè)像素點(diǎn)。同理,1/4內(nèi)插點(diǎn)a0,0和3/4內(nèi)插點(diǎn)c0,0, 可利用水平方向的7個(gè)整數(shù)點(diǎn),采用7抽頭濾波器內(nèi)插得到;1/4內(nèi)插點(diǎn)d0,0和3/4內(nèi)插點(diǎn)n0,0, 可利用垂直方向的7個(gè)整數(shù)點(diǎn),采用7抽頭濾波器內(nèi)插得到。對于1/4精度的插值,平均每一個(gè)整數(shù)像素將伴隨著15個(gè)插值生成的像素。
為了滿足分像素插值算法靈活切換的需求,使用可重構(gòu)視頻陣列處理器來對算法進(jìn)行映射??芍貥?gòu)視頻陣列處理器不僅具有通用處理器的靈活性而且兼?zhèn)鋵S眉呻娐返母咝?,具有高性能、低功耗的?yōu)點(diǎn),適合用于加速計(jì)算密集型任務(wù),分像素運(yùn)動估計(jì)亮度分量插值算法作為典型的計(jì)算密集型任務(wù)非常適合在可重構(gòu)視頻陣列處理器上實(shí)現(xiàn)。
此處理器由可重構(gòu)視頻陣列結(jié)構(gòu)和輸入存儲器(data input memory,DIM)、輸出存儲器(data output memory,DOM)組成,可重構(gòu)視頻陣列結(jié)構(gòu)包含主機(jī)接口、全局控制器和處理單元陣列(processing element,PE)。全局控制器是可重構(gòu)機(jī)制的關(guān)鍵部分,用于實(shí)現(xiàn)對陣列計(jì)算資源的控制與管理,為了確保每一條指令同時(shí)到達(dá)處理元陣列,在主機(jī)接口和底層PE陣列之間形成一個(gè)H-Tree型層次化網(wǎng)絡(luò),通過H-Tree型傳輸網(wǎng)絡(luò)給PE下發(fā)不同的配置信息實(shí)現(xiàn)算法的靈活切換,全局控制器也可以根據(jù)H-Tree型網(wǎng)絡(luò)反饋的信息對每個(gè)處理元的執(zhí)行狀態(tài)進(jìn)行檢測和信息采集[8,9];PE陣列是整個(gè)系統(tǒng)的核心計(jì)算部分,它包括主控單元、功能運(yùn)算單元、配置緩存和指令寄存器,相鄰處理元通過東、南、西、北4個(gè)方向的鄰接互連共享寄存器進(jìn)行數(shù)據(jù)交互[10]。圖2所示的PE陣列包括4個(gè)處理元簇(processing element group,PEG),不同處理元簇通過路由器進(jìn)行通信,每個(gè)PEG中包含4×4個(gè)PE,每個(gè)PE中又包含指令、數(shù)據(jù)存儲器。將多個(gè)子任務(wù)的配置信息存儲在可重構(gòu)陣列結(jié)構(gòu)中的數(shù)據(jù)存儲中,通過軟件編程控制正在執(zhí)行任務(wù)中數(shù)據(jù)的寫入和讀出,同時(shí)對任務(wù)執(zhí)行數(shù)據(jù)進(jìn)行統(tǒng)計(jì)。當(dāng)數(shù)據(jù)處理完成后,通過檢測數(shù)據(jù)存儲中標(biāo)志位地址信息,向處理元下發(fā)重構(gòu)信息,將PC(program counter)跳轉(zhuǎn)至對應(yīng)代碼的標(biāo)志位從而達(dá)到任務(wù)的自主切換。
圖2 視頻陣列處理器結(jié)構(gòu)
圖3 分像素插值算法框架
圖3為分像素插值算法硬件實(shí)現(xiàn)框架,該算法位于幀間環(huán)路中,處于整數(shù)運(yùn)動估計(jì)算法之后,在接收到整數(shù)運(yùn)動估計(jì)傳來的運(yùn)動矢量后開始提取參考像素并進(jìn)行亞像素插值計(jì)算。在該算法中,四叉樹劃分的深度越小,待插值像素?cái)?shù)目就越多,插值計(jì)算量也越大。如果同一時(shí)間只針對一種亞像素位置進(jìn)行處理,雖然提高了編碼精度,但同時(shí)也增加了算法處理時(shí)間,進(jìn)而影響整個(gè)HEVC的編碼效率,這是得不償失的。
由于不同像素點(diǎn)間的插值計(jì)算并無數(shù)據(jù)相關(guān)性,在不同處理單元中同時(shí)進(jìn)行插值操作是提高插值效率與計(jì)算速度的有效途徑。此外,視頻算法中的數(shù)據(jù)處理大部分以N×N矩形塊進(jìn)行,這種H-Tree型體系結(jié)構(gòu)相比其它通用結(jié)構(gòu)更能滿足HEVC算法設(shè)計(jì)需求,能更有效的對視頻算法進(jìn)行并行化和可重構(gòu)設(shè)計(jì)。此算法共用到PEG03和PEG04兩個(gè)處理元簇,每個(gè)處理元簇包含PE00到PE33共16個(gè)處理元。以8×8大小的編碼塊為例,圖4為4條路徑并行的分像素插值算法映射,具體操作步驟如下:
步驟1 原始像素和參考像素加載。PEG03中的PE30接到整數(shù)運(yùn)動估計(jì)傳來的雙握手信號‘555’和‘999’后,通過鄰接互連寄存器,接收到3個(gè)數(shù)值,兩個(gè)運(yùn)動矢量,一個(gè)整數(shù)運(yùn)動估計(jì)的絕對差值和(sum of absolute diffe-rence,SAD)。
隨后對當(dāng)前編碼塊是否需要做插值運(yùn)算進(jìn)行判斷,如若進(jìn)行亞像素插值,給PEG03中的PE00、PEG04中的PE33分別下發(fā)握手信號‘222’和‘111’。PEG03中的PE00在接到握手信號222后,按8×8的塊開始從數(shù)據(jù)輸入存儲(data input memory,DIM)取原始像素值,并下發(fā)給PEG03中PE01、PE11、PE21和PE31的0-63號地址。與此同時(shí),PEG04中的PE33按16×24的塊大小取參考像素值,在并下發(fā)給與數(shù)據(jù)輸出存儲(data output memory,DOM)相連的PE03、PE13、PE23的117-500號地址準(zhǔn)備進(jìn)行插值計(jì)算。按16×24的塊大小取參考像素值,在取數(shù)和計(jì)算過程中充分考慮1/2和1/4像素點(diǎn)中可復(fù)用的數(shù)據(jù),相比于不利用數(shù)據(jù)復(fù)用的情況,從外部存儲器讀取數(shù)據(jù)量減少了74.7%。
步驟2 分像素插值計(jì)算。不同PE在收到由DIM中取入的原始像素和由DOM中取入的參考像素后,開始進(jìn)行1/2精度或者1/4精度插值計(jì)算。待參考像素下發(fā)完成后,PEG04中的PE03、PE13、PE23、PE33按1/2水平和垂直插值公式進(jìn)行計(jì)算,對64個(gè)像素值進(jìn)行1/2插值,并將插值結(jié)果保存到對應(yīng)的數(shù)據(jù)存儲中。1/2插值計(jì)算完成后,4條路徑在同一時(shí)刻依次進(jìn)行3/4插值、1/4插值和傾斜方向的亞像素點(diǎn)插值計(jì)算。最后將插值結(jié)果下發(fā)到PEG03進(jìn)行殘差值的比較。值得注意的是,為了保證像素在計(jì)算中具有較高亞像素精度,所有像素在插值時(shí)都右移了6位,待進(jìn)入后續(xù)幀間預(yù)測環(huán)節(jié)中,其像素值將被還原。
步驟3 SAD絕對差值和計(jì)算。在同一時(shí)間計(jì)算不同編碼塊的SAD值,不僅可以最大化資源配置利用率,而且還能縮短算法運(yùn)行周期。PEG03中的PE01、PE11、PE21和PE31在收到原始像素與插值像素后,進(jìn)行SAD計(jì)算,并將SAD結(jié)果下發(fā)到PE20與整數(shù)運(yùn)動估計(jì)傳來的SAD值進(jìn)行比較,若整數(shù)運(yùn)動估計(jì)的SAD值更小,將對應(yīng)的運(yùn)動矢量、相應(yīng)的整數(shù)標(biāo)簽‘1212’保存到PE10的506、507、508號地址;若插值后編碼塊的SAD值更小,則將插值后的像素值通過PE10的鄰接互連寄存器輸出傳給幀間運(yùn)動補(bǔ)償算法。
圖4 分像素插值算法并行映射
HEVC中,一幀圖像被分割為多個(gè)互補(bǔ)重疊的編碼單元,這些編碼單元按照四叉樹的方式遞歸劃分為多個(gè)子單元,子單元編碼塊大小為64×64、32×32、16×16和8×8。HEVC標(biāo)準(zhǔn)規(guī)定編碼單元的規(guī)模不能小于8×8,編碼平坦的區(qū)域用大尺寸塊表示,編碼復(fù)雜的區(qū)域用小尺寸塊表示。一個(gè)大小為64×64的最大編碼單元(largest coding unit,LCU)總共有85種劃分方式,面對如此眾多的劃分情況,調(diào)整算法模式以適用于不同規(guī)模的劃分成為提高視頻編碼效率的關(guān)鍵。
如圖5所示為HM中隨機(jī)挑選的3種測試序列四叉樹劃分結(jié)果,經(jīng)過對比分析得出8×8大小的編碼塊被選擇的平均概率為66%,16×16大小的編碼塊被選擇的平均概率為25%,其余大小編碼塊被選擇的平均概率僅為9%,因此本文主要對8×8和16×16大小的編碼塊進(jìn)行重構(gòu)切換。
圖5 不同測試序列四叉樹劃分占比情況
圖6 塊重構(gòu)指令存放
塊重構(gòu)是指不同塊大小的分像素插值算法的重構(gòu)實(shí)現(xiàn),以滿足針對四叉樹劃分和計(jì)算時(shí)間的不同需求選擇不同的編碼規(guī)模。如圖6所示為分像素插值算法塊重構(gòu)指令存放。首先對編碼塊大小為8×8與16×16的代碼進(jìn)行分區(qū),隨后HPN向陣列下發(fā)執(zhí)行何種塊大小的狀態(tài),并將PC值指向?qū)?yīng)代碼的標(biāo)志位處。圖中PC1為執(zhí)行8×8代碼時(shí)的標(biāo)志位,PC2為執(zhí)行16×16代碼時(shí)的標(biāo)志位。當(dāng)執(zhí)行重構(gòu)指令時(shí),從存儲塊中讀取出任務(wù)的配置信息,同時(shí)修改程序計(jì)數(shù)器,將配置信息的首地址寫入其中。PE根據(jù)配置信息,執(zhí)行相應(yīng)操作,實(shí)現(xiàn)8×8與16×16的塊切換。具體操作步驟如下:
步驟1 首先將標(biāo)準(zhǔn)視頻測試序列轉(zhuǎn)換為處理器可操作的二進(jìn)制灰度值,將灰度值以文本格式存入片外存儲器DIM中。其次對每個(gè)PE獨(dú)立的指令存儲器進(jìn)行分區(qū)處理,例如可以分成兩段,上半段可以設(shè)置為編碼塊大小為8×8的CU進(jìn)行插值計(jì)算的指令存儲區(qū),將核心運(yùn)算代碼初始化到0-254號地址中;下半段可以設(shè)置為編碼塊大小為16×16的CU進(jìn)行插值計(jì)算的指令存儲區(qū),將核心運(yùn)算代碼初始化到255-511號地址中,最后將PC標(biāo)志位‘0’和‘255’存儲到PEG04中PE33的510號和511號地址中。
步驟2 由于8×8大小的編碼塊被選擇的平均概率高過50%,本文默認(rèn)執(zhí)行8×8大小編碼塊的分像素插值算法,如若編碼區(qū)域過于平坦,沒有過多的細(xì)節(jié)信息,需要使用大小為16×16的編碼塊進(jìn)行計(jì)算,則全局控制器通過HPN網(wǎng)絡(luò)下發(fā)塊重構(gòu)配置信息,執(zhí)行初始化于指令存儲后半段中塊大小為16×16的分像素插值算法。
步驟3 插值計(jì)算結(jié)束后需要進(jìn)行最優(yōu)預(yù)測塊的選取,支持可變塊HEVC分像素插值算法需要根據(jù)原始像素與參考像素對插值后的編碼塊進(jìn)行SAD比較。SAD計(jì)算同樣采取上述方法,將不同規(guī)模編碼塊對應(yīng)的SAD算法分段存儲于指令存儲器中,根據(jù)插值計(jì)算時(shí)CU的大小,全局控制器通過HPN網(wǎng)絡(luò)將PC跳轉(zhuǎn)至與當(dāng)前編碼規(guī)模相匹配的SAD算法的起始位置。PEG03中PE10的509號地址在接到握手信號‘666’時(shí),說明分像素插值和SAD比較都已執(zhí)行完成,PE10開始向02簇執(zhí)行數(shù)據(jù)下發(fā)過程,通過雙握手‘888’、‘555’與02簇的PE13進(jìn)行傳數(shù)。
為了驗(yàn)證本文所提出動態(tài)可重構(gòu)分像素插值算法的可行性,使用基于BEECube公司BEE4開發(fā)平臺搭建的視頻陣列處理器原型系統(tǒng)進(jìn)行驗(yàn)證和測試。實(shí)驗(yàn)所涉及的可重構(gòu)視頻陣列處理器用Verilog HDL語言描述,算法驗(yàn)證測試環(huán)境和所使用的工具見表2。以標(biāo)準(zhǔn)測試序列akiyo.qicf作為測試序列在Questasim 10.1d工具下進(jìn)行功能仿真驗(yàn)證,采用90 nm CMOS技術(shù)工藝進(jìn)行綜合。首先將此重構(gòu)方案的指令和數(shù)據(jù)初始化到對應(yīng)的指令存儲器和數(shù)據(jù)存儲器中,通過MATLAB端下發(fā)一幀測試序列來進(jìn)行仿真和驗(yàn)證。
表2 算法驗(yàn)證測試環(huán)境和所使用工具
PE00連接片外輸入存儲DIM,按8×8或16×16的編碼單元取原始像素值;PE33連接片外輸出存儲DOM,根據(jù)分像素插值原理需求按24×16或48×32的塊大小取參考像素值。對于一幀1920×1080的圖像來說,如果都按8×8的塊進(jìn)行編碼,總共有32 400塊,不采用數(shù)據(jù)復(fù)用的情況下,每個(gè)編碼塊需從DOM中讀取256個(gè)參考像素值,總共需要讀取32 400×256=8 294 400個(gè)參考像素值,但是利用數(shù)據(jù)復(fù)用的情況下,除了第一個(gè)塊取256個(gè)像素值,剩余的第一行和第一列每個(gè)塊只需要從DOM中取128個(gè)參考像素值,最后余下的塊僅僅需要從DOM中取64個(gè)參考像素值,總共需要讀取256+128×374+64×32 026=2 097 792個(gè)參考像素值。相比于不利用數(shù)據(jù)復(fù)用的情況,從外部存儲器讀取數(shù)據(jù)量減少了74.7%。(圖7中A、B、C和D這4塊都是大小為16×16的參考像素塊,以A參考塊為基準(zhǔn),B參考塊是與A同行相鄰的一個(gè)參考塊,C參考塊是與A同列相鄰的一個(gè)參考塊,可以看出,A和B相交的部分為同行相鄰的參考塊中數(shù)據(jù)復(fù)用的部分,A和C相交的部分為同列相鄰的參考塊中數(shù)據(jù)復(fù)用的部分,A、B、C和D相交的部分為4個(gè)參考塊中數(shù)據(jù)復(fù)用的部分。)
圖7 CU為8×8時(shí)數(shù)據(jù)復(fù)用簡化
在進(jìn)行亞像素插值時(shí),對同一個(gè)整數(shù)像素點(diǎn)來說,其上、下、左、右會用到大量相同的參考像素值,插值計(jì)算時(shí)數(shù)據(jù)復(fù)用結(jié)構(gòu)如圖8所示。例如圖1中h′0,0需要用到地址為4,20,36,52,68,84,100,116號的參考像素值,h0,0需要用到地址為20,36,52,68,84,100,116,132號的參考像素值,8個(gè)參考像素值中有7個(gè)是不變的,若充分利用數(shù)據(jù)復(fù)用,垂直方向的下亞像素點(diǎn)所用到像素值只需要更新一個(gè)新值,插值計(jì)算部分讀取數(shù)據(jù)量減少了43.8%。同理可得16×16的編碼塊在取數(shù)據(jù)和插值計(jì)算部分的數(shù)據(jù)復(fù)用率分別為74.4%和42.7%。
圖8 插值計(jì)算時(shí)數(shù)據(jù)復(fù)用結(jié)構(gòu)
圖9(a)為兩種編碼塊在像素加載與SAD值計(jì)算階段耗時(shí)統(tǒng)計(jì),以DIM取原始像素為例,在采取數(shù)據(jù)復(fù)用后,16×16大小的編碼塊比8×8大小編碼塊相對耗時(shí)減少約7.5%。圖9(b)為分像素插值算法在串行和并行兩種情況下處理不同大小的編碼塊所需的時(shí)間對比,對于8×8的編碼塊來說,采用4路并行的處理方式進(jìn)行插值計(jì)算比不同精度運(yùn)動矢量串行計(jì)算的速度提升68.2%,加速比為3.14;對于16×16的編碼塊來說,采用4路并行的處理方式比串行計(jì)算速度提升74.7%,加速比為3.96。
圖9 不同CU大小下時(shí)間對比
表3是對部分性能的統(tǒng)計(jì),根據(jù)實(shí)驗(yàn)結(jié)果顯示在90 NM工藝下硬件實(shí)現(xiàn)時(shí)最大工作頻率可達(dá)357 MHZ,資源占用量為24 830個(gè)邏輯門。本文HEVC分像素插值算法將每個(gè)子任務(wù)劃分到陣列處理器上進(jìn)行映射,在前一個(gè)編碼塊插值任務(wù)進(jìn)行完后即可開始下一個(gè)編碼塊的計(jì)算,16個(gè)PE規(guī)模的陣列結(jié)構(gòu)。
表3 性能分析
可同時(shí)處理1-4組子任務(wù),最大并行度為4。為了更好地說明本算法的優(yōu)勢,將算法對應(yīng)的硬件設(shè)計(jì)綜合情況與其它同類型文獻(xiàn)進(jìn)行對比。由表3實(shí)驗(yàn)數(shù)據(jù)得出,在相同的90 nm工藝下,與文獻(xiàn)[7]相比,雖然硬件消耗有所增加,但是最高頻率增加了19%,與文獻(xiàn)[11]相比,硬件消耗減少18.5%,最高頻率增加53.2%,與32 nm工藝的文獻(xiàn)[6]相比,雖然最高頻率還有待提高,但是硬件消耗減少24.7%,吞吐率增加了10.3%。由此可見,本設(shè)計(jì)可在硬件面積更小的情況下達(dá)到更高的工作頻率,這一點(diǎn)在與對照組的對比過程中尤為明顯。此外本設(shè)計(jì)用加法器和移位操作代替乘法器進(jìn)行運(yùn)算,使得計(jì)算速度更快,運(yùn)算時(shí)鐘周期數(shù)更小。在并行方式的選擇上比文獻(xiàn)[6,7,11]更加靈活,支持1-4路組并行的處理方式,可以根據(jù)應(yīng)用處理速度需求的不同進(jìn)行選擇。在支持重構(gòu)方面,相比于文獻(xiàn)[6,7,11]可以快速實(shí)現(xiàn)不同規(guī)模、不同塊大小算法之間的靈活切換,以應(yīng)對不同圖像序列的劃分需求。
針對HEVC分像素插值算法計(jì)算量大、冗余度高、靈活性不足的問題,結(jié)合視頻陣列處理器的特點(diǎn)和現(xiàn)已存在的分像素插值算法特點(diǎn),提出一種動態(tài)可重構(gòu)且具有高數(shù)據(jù)復(fù)用率的分像素插值算法實(shí)現(xiàn)方法,并將算法映射到可重構(gòu)視頻陣列處理器上。通過實(shí)驗(yàn)得出此方法可有效解決分像素插值算法資源利用率不高、不同編碼塊之間難以靈活切換的問題。在90 nm工藝下硬件最大工作頻率可達(dá)357 MHz,資源占用量為24 830個(gè)邏輯門,參考像素的讀取數(shù)量減少了43.8%,且硬件資源消耗減少18.5%。此算法在高清視頻編碼和傳輸中有很強(qiáng)的實(shí)用性。此外,在未來研究中將進(jìn)一步提高資源利用率與數(shù)據(jù)復(fù)用率,做到時(shí)間和空間上可重構(gòu)。