本系列主要介紹視頻編解碼芯片的設(shè)計(jì),以HEVC視頻編碼標(biāo)準(zhǔn)為基礎(chǔ),簡(jiǎn)要介紹編解碼芯片的整體硬件架構(gòu)設(shè)計(jì)以及各核心模塊的算法優(yōu)化與硬件流水線設(shè)計(jì)。
本文首先將介紹整像素運(yùn)動(dòng)估計(jì)的基礎(chǔ)知識(shí),分析HEVC標(biāo)準(zhǔn)中IME的搜索策略。接著,分析IME算法優(yōu)化在搜索模式和參考窗設(shè)計(jì)等方面的突破口,提出了微代碼可配置的IME算法和對(duì)應(yīng)的IME硬件設(shè)計(jì)。最后根據(jù)不同的應(yīng)用場(chǎng)景提出了三種配置模式,并展示了優(yōu)化后的IME架構(gòu)測(cè)試結(jié)果。
概述
視頻序列圖像在時(shí)間上存在很強(qiáng)的相關(guān)性,即相鄰幀的圖像差別不大。幀間預(yù)測(cè)即消除視頻序列在時(shí)間上的冗余,從而達(dá)到壓縮視頻的作用。運(yùn)動(dòng)補(bǔ)償(Motion Compensation, MC)是一種描述相鄰幀差別的方法。通過(guò)運(yùn)動(dòng)補(bǔ)償,編碼器可以通過(guò)編碼兩幀之間的差別,消除幀間的冗余信息。運(yùn)動(dòng)估計(jì)ME(Motion Estimation)是指搜索出每個(gè)塊在鄰近幀中最匹配塊位置的方法。兩者之間空間位置的相對(duì)偏移量被稱(chēng)為運(yùn)動(dòng)矢量(Motion Vector, MV)。
圖1
在HEVC運(yùn)動(dòng)補(bǔ)償?shù)倪^(guò)程中,運(yùn)動(dòng)估計(jì)是其中計(jì)算復(fù)雜度最高、且耗時(shí)最長(zhǎng)的模塊。整像素運(yùn)動(dòng)估計(jì)IME即預(yù)測(cè)過(guò)程僅涉及整像素的運(yùn)動(dòng)估計(jì),其計(jì)算得到的最佳整像素MV將送至后續(xù)的分像素運(yùn)動(dòng)估計(jì)階段做進(jìn)一步亞像素MV搜索。
預(yù)測(cè)單元
在HEVC標(biāo)準(zhǔn)中,“當(dāng)前像素塊”被稱(chēng)之為預(yù)測(cè)單元(Prediction Unit, PU)。當(dāng)最大編碼單元(Largest Coding Unit, LCU)的大小是64×64時(shí),幀間PU的大小可以從64 × 64變化到4×4(本文中,“PU”指的都是“幀間PU”。)每一個(gè)PU都會(huì)被指定一個(gè)與之盡量相似的匹配塊,該匹配塊來(lái)自于已經(jīng)編碼了的圖像幀,是編碼端和解碼端都能夠獲得的重建信息。下圖給出了HEVC中的各種PU。
圖2
運(yùn)動(dòng)估計(jì)
在HEVC標(biāo)準(zhǔn)中,“已經(jīng)編碼了的圖像幀”被稱(chēng)之為“參考幀”。由于時(shí)間上相鄰的參考幀更可能存在相似的圖像塊,因此,這些相鄰幀一般是參考幀的主要來(lái)源。在選定參考幀之后,編碼器需要通過(guò)整數(shù)運(yùn)動(dòng)估計(jì)的手段在一定大小的搜索窗內(nèi)找到與預(yù)測(cè)當(dāng)前PU最佳匹配的塊,然后把所有的最佳匹配塊組合成一幅圖像構(gòu)成預(yù)測(cè)幀,那么預(yù)測(cè)幀將與當(dāng)前幀相差最小。如下圖所示。
所謂“最佳匹配”,有兩方面的指標(biāo)。
其一、該匹配塊與當(dāng)前塊相對(duì)偏移MV的編碼代價(jià)較小。由于參考幀是編碼端和解碼端共有的信息,所以,編碼端只需要保留運(yùn)動(dòng)矢量就可以將PU所采用匹配塊的信息傳遞到解碼端。
其二,該匹配塊與當(dāng)前塊差值的失真程度較?。ê途幋a代價(jià)較小)。這一指標(biāo)通常可以使用包括均方差(MSE)、平均絕對(duì)差(MAE)、絕對(duì)值差之和(SAD)在內(nèi)的函數(shù)進(jìn)行估計(jì)。
搜索窗和快速搜索
塊匹配的搜索策略決定了運(yùn)動(dòng)估計(jì)收斂速度和匹配塊的準(zhǔn)確度,一般可以把搜索策略分為兩類(lèi):全搜索和快速搜索。
全搜索也稱(chēng)為窮盡搜索,遍歷搜索區(qū)域內(nèi)的所有位置塊,因此精確度最高,但耗費(fèi)的運(yùn)算資源也最多。
為了保證搜索的效率,整數(shù)運(yùn)動(dòng)估計(jì)不會(huì)在整個(gè)參考幀內(nèi)進(jìn)行,而是限定于某個(gè)搜索范圍,這一范圍被稱(chēng)之為“搜索窗”。在HEVC標(biāo)準(zhǔn)下,搜索窗的大小一般設(shè)置為[-64,64),換言之,對(duì)于每一個(gè)PU都存在16384(=128×128)種可能的運(yùn)動(dòng)矢量??焖偎阉鞑呗栽诒WC運(yùn)動(dòng)估計(jì)一定精度的前提下,通過(guò)減少搜索點(diǎn),從而減少運(yùn)算復(fù)雜度。因此可以根據(jù)一定的收斂模型(搜索模板),通過(guò)一步步縮小搜索范圍逼近最佳匹配點(diǎn),較為著名的快速搜索算法有菱形搜索,六邊形搜索,十字搜索等等。
HM推薦算法
在HEVC 模型(HM)中,整像素運(yùn)動(dòng)估計(jì)單元采用了快速預(yù)測(cè)算法TZSearch,算法流程見(jiàn)下圖3。
圖3
算法優(yōu)化
本文提出的IME架構(gòu)不是針對(duì)某個(gè)特定的算法。相反的,該IME架構(gòu)包括若干個(gè)搜索步驟,每步執(zhí)行不同的搜索策略,這樣可以組成各種搜索算法。在不同步驟中,這些參數(shù)可以被配置為不同的數(shù)值。具體來(lái)說(shuō),在每一步內(nèi),每個(gè)QLCU(Quarter LCU)內(nèi)的所有PU采用同樣的搜索配置,包括起始點(diǎn),搜索窗的形狀和降采樣率。
搜索起始點(diǎn)
每個(gè)QLCU可以獲取前一幀的最佳MV,并將其作為該QLCU下一步的搜索起始點(diǎn)。
參考窗形狀
最基礎(chǔ)的參考窗是六邊形。但是,通過(guò)改變參考窗的長(zhǎng)度,寬度以及各個(gè)角的度數(shù),參考窗可以轉(zhuǎn)變?yōu)楦鞣N形狀,如下圖4所示。
圖4
降采樣搜索
本文提出的IME設(shè)計(jì)將通過(guò)降采樣來(lái)搜索64×64,64×32和32×64大小的PU的最佳MV,如下圖5所示。
圖5
64×64大小的PU及其參考?jí)K被1/4降采樣到32×32大小,然后被送入32×32大小的SAD引擎。降采樣后的32×32塊的最佳的MV結(jié)果以及相應(yīng)的代價(jià)會(huì)被視作該64×64大小PU的最佳的MV和代價(jià)。
基于微代碼的整像素運(yùn)動(dòng)估計(jì)架構(gòu)
通過(guò)微代碼(Micro-code)配置,每段微代碼的長(zhǎng)度為44個(gè)比特。其中:16個(gè)比特用來(lái)表示搜索的起始點(diǎn),25個(gè)比特用來(lái)表示參考窗的形狀,3個(gè)比特用來(lái)表示搜索的采樣率。微代碼的格式如下圖6所示:
圖6
VLSI實(shí)現(xiàn)
VLSI實(shí)現(xiàn)概述
在Fan[1]的工作中,F(xiàn)an[1]根據(jù)特定算法設(shè)計(jì)了整像素運(yùn)動(dòng)估計(jì)引擎,最終的B-D rate損失非常小,但是硬件開(kāi)銷(xiāo)比較大,且搜索算法缺少靈活性。因此,本次設(shè)計(jì)優(yōu)化了硬件設(shè)計(jì)架構(gòu),如下圖7所示。
圖7
優(yōu)化后的硬件架構(gòu)仍將使用Fan[1]中提出的4×4塊壓縮和解壓縮邏輯,水平-垂直參考像素存儲(chǔ)器和低功耗32×32大小SAD引擎。本節(jié)提出的硬件設(shè)計(jì)的主要工作如下:
(1) 尋址控制邏輯支持微代碼可編程。
(2) 簡(jiǎn)化了參考像素更新邏輯,減少了該模塊的硬件開(kāi)銷(xiāo)。
(3) 在轉(zhuǎn)置邏輯中復(fù)用了參考像素陣列。
(4) 引入了像素截位,減少了H-VSRAM,寄存器陣列和SAD引擎的硬件開(kāi)銷(xiāo)。
水平垂直參考像素存儲(chǔ)器
為了支持二維數(shù)據(jù)復(fù)用,本次設(shè)計(jì)采用了水平-垂直參考像素存儲(chǔ)器(Horizontal-vertical Reference SRAM,H-V SRAMs)。該存儲(chǔ)器由兩個(gè)SRAM組成,即水平參考像素存儲(chǔ)器(Horizontal Reference SRAM,H SRAM)和垂直參考像素存儲(chǔ)器(VerticalReference SRAM,V SRAM),如圖8所示。前者以行的方式存儲(chǔ)參考像素,每一行像素存儲(chǔ)在H SRAM的同一地址上;后者以列的方式存儲(chǔ)參考像素,每一列像素存儲(chǔ)在V SRAM的同一地址上。
圖8
轉(zhuǎn)置寄存器
在本文提出的硬件設(shè)計(jì)中,轉(zhuǎn)置模塊將復(fù)用參考像素陣列。這不僅可以減少硬件代價(jià),還可以提供“雙工”數(shù)據(jù)傳輸。為了簡(jiǎn)化轉(zhuǎn)置過(guò)程的說(shuō)明,下圖9展示了一個(gè)4×4塊的轉(zhuǎn)置過(guò)程。
圖9
像素截位
在Fan[1]的工作中,一個(gè)基于4×4塊的壓縮和解壓縮方案被提了出來(lái),用來(lái)減少片上參考像素存儲(chǔ)器的面積。由于采用了這項(xiàng)技術(shù),每個(gè)像素相當(dāng)于被截位到7個(gè)比特,且引入的B-D rate損失非常小。
在本次設(shè)計(jì)中,測(cè)試了不同截位比特?cái)?shù)對(duì)于最終編碼B-D rate和硬件代價(jià)的影響,如下表1所示。
表1
截位比特?cái)?shù) |
硬件門(mén)數(shù) |
B-D Rate損失 |
0 |
210.1 Kgate |
/ |
1 |
166.4 Kgate |
-0.10% |
2 |
145.4 Kgate |
0.13% |
3 |
124.3 Kgate |
-0.01% |
4 |
102.7 Kgate |
0.51% |
根據(jù)上表1,在截位比特?cái)?shù)為3,即每個(gè)像素用5個(gè)比特表示的時(shí)候,SAD樹(shù)的硬件代價(jià)可以減少40.8%,但是B-D rate的損失僅為-0.01%。因此,本設(shè)計(jì)采用了3比特截位,這可以在減小硬件代價(jià)的同時(shí)保證圖像的編碼質(zhì)量。
性能評(píng)估
為了對(duì)基于微代碼可編程的IME架構(gòu)進(jìn)行測(cè)試,我們提出了3種搜索方案,3種方案均可以通過(guò)微代碼配置出來(lái),如下圖10所示。
三種方案中,A方案的側(cè)重點(diǎn)在于編碼速度,C方案的側(cè)重點(diǎn)是編碼質(zhì)量,B方案是兩者的折衷。值得注意的是,在采用1/4降采樣的時(shí)候,如果起始點(diǎn)為(0, 0),那么搜索過(guò)程只能覆蓋搜索范圍內(nèi)的奇數(shù)行、奇數(shù)列的候選點(diǎn),因此,在C方案中,將(0, 0),(0, 1),(1, 0)和(1, 1)分別作為起始點(diǎn)搜索,這樣可以覆蓋搜索范圍內(nèi)的所有點(diǎn)。此外,C*方案采取了和C方案一致的搜索策略,不同點(diǎn)在于C*方案并沒(méi)有使用像素截位。
圖10
B-D rate的測(cè)試基于HM 16.9,測(cè)試的基準(zhǔn)是encoder_lowdelay_P_main.cfg下的默認(rèn)配置,且只有一幀參考幀。
將綜合結(jié)果與業(yè)界的相關(guān)工作進(jìn)行了比較,如下表所示。值得注意的是,SAD樹(shù)的門(mén)數(shù)是指換算到16×16大小時(shí)的門(mén)數(shù)。
在編碼效果方面,我們提出的IME架構(gòu)在B方案和C方案時(shí)的B-D rate增益均為負(fù)值,遠(yuǎn)優(yōu)于Ye[2]、Medhat[3]和Jou[4]的工作。雖然B-Drate效果不如Fan[1]的工作,但是在搜索起始點(diǎn)、參考窗形狀和降采樣率等參數(shù)上靈活性都比Fan[1]的工作要更好。
在編碼速度方面,本節(jié)提出的方案A在處理單個(gè)LCU時(shí)僅需要2146個(gè)時(shí)鐘周期,與Jou的工作[4]接近。但是,A方案的B-D rate增量?jī)H為0.55%,遠(yuǎn)優(yōu)于Jou[4]工作的4.04%。
在硬件面積方面,在同樣換算到16×16大小的SAD樹(shù)以后,本節(jié)提出的IME架構(gòu)與Jou[4]工作中的SAD樹(shù)的門(mén)數(shù)是差不多的。而在SRAM大小上,本節(jié)提出的IME架構(gòu)是這幾個(gè)工作里面最小的。
在靈活性上,我們提出的IME架構(gòu)可以通過(guò)微代碼配置成各種復(fù)雜度的運(yùn)動(dòng)估計(jì)算法,是遠(yuǎn)優(yōu)于其他幾個(gè)工作的。
圖11
參考文獻(xiàn):
[1] Y. Fan, L. Huang, B. Hao and X. Zeng. AHardware-Oriented IME Algorithm for HEVC and its Hardware Implementation [J].IEEE Transactions on Circuits and Systems for Video Technology, 2018, 28(8):2048-2057.
[2] X. Ye, D. Ding and L. Yu. Ahardware-oriented IME algorithm and its implementation for HEVC [A]. IEEEVisual Communications and Image Processing Conference[C].IEEE, 2014: 7-10.
[3] A. Medhat, A. Shalaby, M. S. Sayed, M.Elsabrouty and F. Mehdipour. Fast center search algorithm with hardwareimplementation for motion estimation in HEVC encoder [A]. IEEE InternationalConference on Electronics (ICECS) [C]. IEEE, 2014: 155-158.
[4] S. Jou, S. Chang and T. Chang. FastMotion Estimation Algorithm and Design for Real Time QFHD High Efficiency VideoCoding [J]. IEEE Transactions on Circuits and Systems for Video Technology,2015, 25(9): 1533-1544.