企業(yè)做網(wǎng)站的發(fā)票怎樣入賬網(wǎng)頁(yè)設(shè)計(jì)框架圖
運(yùn)動(dòng)補(bǔ)償(Motion Compensation,MC)是幀間預(yù)測(cè)最基礎(chǔ)的工具,AV1支持兩種運(yùn)動(dòng)補(bǔ)償方式,一種是傳統(tǒng)的平移運(yùn)動(dòng)補(bǔ)償,另一種是仿射運(yùn)動(dòng)補(bǔ)償。下面分別介紹這兩種運(yùn)動(dòng)補(bǔ)償方法。
平移運(yùn)動(dòng)補(bǔ)償
平移運(yùn)動(dòng)補(bǔ)償是最傳統(tǒng)的運(yùn)動(dòng)補(bǔ)償方式,H.264/H.265的運(yùn)動(dòng)補(bǔ)償都是這種方式,待編碼塊根據(jù)運(yùn)動(dòng)向量(Motion Vector,MV)在參考幀中尋找預(yù)測(cè)塊,這個(gè)過(guò)程便是運(yùn)動(dòng)搜索。
AV1的運(yùn)動(dòng)搜索支持1/8像素精度,對(duì)于非整像素位置使用可分離的插值濾波器生成子像素。
圖1?子像素插值
子像素的生成過(guò)程如圖1,首先進(jìn)行水平插值,然后再進(jìn)行垂直插值。對(duì)于插值濾波器,如果截止頻率高則會(huì)更多的保留高頻分量,如果截止頻率低則會(huì)去除更多的高頻分量。在VP9中,插值濾波器可以自適應(yīng)的在3種8抽頭濾波器中選擇,每種濾波器對(duì)應(yīng)不同的截止頻率,選定一種濾波器后水平和垂直方向都使用該濾波器。AV1在VP9的基礎(chǔ)上允許水平和垂直方向選擇不同的濾波器,每個(gè)方向可以從3種濾波器中選擇,截止頻率由低到高分別為SMOOTH、REGULAR和SHARP。圖2是水平和垂直方向選擇各種濾波器的熱力圖。
圖2?插值濾波器熱力圖
為了降低解碼復(fù)雜度,SMOOTH和REGULAR使用6抽頭濾波器,SHARP使用8抽頭濾波器。三種濾波器對(duì)應(yīng)的半像素插值的濾波系數(shù)如下,
為了降低最壞情況下的復(fù)雜度(所有塊都劃分到4x4),某一維度小于等于4的塊只允許使用兩種4抽頭濾波器進(jìn)行半像素插值且沒(méi)有SHARP濾波器。
仿射運(yùn)動(dòng)補(bǔ)償
仿射模型參數(shù)估計(jì)
除了平移運(yùn)動(dòng),視頻內(nèi)容很可能還包含旋轉(zhuǎn)、縮放等仿射運(yùn)動(dòng),AV1支持仿射運(yùn)動(dòng)補(bǔ)償,通過(guò)仿射變換模型將(x,y)處的像素投影到(x',y'),
? ? ? (1)
其中h_ij是仿射變換系數(shù),(h13,h23)是平移因子和平移運(yùn)動(dòng)中的mv作用相同,h11和h22控制著水平和垂直方向的縮放,h11、h12、h21、h22共同控制旋轉(zhuǎn)。
AV1共有兩種affine mode,一種是全局affine mode,和參考幀相綁定,編碼塊可以根據(jù)參考幀索引使用對(duì)應(yīng)的全局模型。平移因子(h13,h23)使用15比特精度編碼,4個(gè)非平移因子h11、h12、h21、h22使用12比特精度編碼。全局模型主要捕獲整體的旋轉(zhuǎn)和縮放特征,更關(guān)注整體的運(yùn)動(dòng)。
另一種affine mode是編碼塊級(jí)的局部模型,然而如果對(duì)每個(gè)塊都傳輸affine參數(shù)將會(huì)消耗大量碼率,因此AV1使用空域相鄰塊的mv來(lái)估計(jì)affine mode參數(shù)。局部模型中平移因子(h13,h23)類(lèi)似于mv在碼流中顯示傳輸,其他4個(gè)參數(shù)使用相鄰塊mv估計(jì)得到。編碼器會(huì)掃描最近相鄰塊,尋找和當(dāng)前塊參考幀相同的塊作為候選項(xiàng)(最多8個(gè)候選項(xiàng)),利用候選項(xiàng)的mv來(lái)計(jì)算仿射模型參數(shù)。對(duì)每個(gè)候選項(xiàng)計(jì)算它的中心坐標(biāo)相對(duì)當(dāng)前塊中心坐標(biāo)的偏移當(dāng)作變換前的位置,這個(gè)偏移值加上兩個(gè)塊間的mvd作為變換后的位置,用最小二乘法計(jì)算變換前后位置即可求解出模型參數(shù)。
圖3 局部仿射模型參數(shù)估計(jì)
以圖3為例,(xi,yi)是第i個(gè)塊的中心坐標(biāo),mvi是對(duì)應(yīng)運(yùn)動(dòng)向量。按Blk1到Blk7的順序遍歷相鄰塊,選擇和當(dāng)前塊參考幀相同的塊,這里選中Blk1、Blk2、Blk5和Blk7。
首先計(jì)算中心坐標(biāo)偏移值作為變換前的位置,
??
對(duì)應(yīng)變換后為位置為,
??
由仿射變換公式(1)可得,
??
將4個(gè)塊變換前后的坐標(biāo)帶入上面公式即可用最小二乘法求得仿射變換的非平移參數(shù)h11、h12、h21、h22。
??
注意,為了保證空域相關(guān)性若mvd任何一個(gè)分量的絕對(duì)值超過(guò)8個(gè)像素則不使用該參考?jí)K,同時(shí)如果有效參考?jí)K數(shù)量小于2則無(wú)法用最小二乘法求解則不能使用局部仿射模型。
仿射運(yùn)動(dòng)估計(jì)
得到仿射模型后便可以對(duì)編碼塊使用仿射運(yùn)動(dòng)估計(jì),即通過(guò)仿射運(yùn)動(dòng)找到每個(gè)像素在參考圖像中對(duì)應(yīng)的坐標(biāo)得到預(yù)測(cè)像素。仿射運(yùn)動(dòng)只對(duì)8x8及以上的塊才能使用,對(duì)于大于8x8的塊首先將其劃分為8x8子塊,對(duì)每個(gè)8x8子塊的中心坐標(biāo)通過(guò)平移運(yùn)動(dòng)因子(h13,h23)計(jì)算在參考圖像中對(duì)應(yīng)的坐標(biāo),如同4中當(dāng)前塊中心(x0,y0)在參考圖像中對(duì)應(yīng)的坐標(biāo)為(x1,y1),塊中其他像素(x,y)以(x1,y1)為中心進(jìn)行旋轉(zhuǎn)和縮放得到仿射變換后的坐標(biāo)(x',y'),
圖4 仿射預(yù)測(cè)
AV1中仿射預(yù)測(cè)是1/64像素精度,使用8抽頭濾波器(角點(diǎn)位置使用6抽頭濾波器)進(jìn)行?分像素插值。如圖1所示,普通的平移?運(yùn)動(dòng)可以復(fù)用子像素插值的中間結(jié)果從而減少計(jì)算量。對(duì)于8x8的塊插值,首先利用15x15區(qū)域內(nèi)的像素使用水平插值生成15x8的?中間結(jié)果,然后在中間結(jié)果上使用垂直插值生成8x8塊。水平插值需要(15x8)x8=960次乘法,垂直插值需要(8x8)x8=512次乘法,總共需要1472次乘法。
而仿射變換后的每個(gè)像素偏移值可能不同,導(dǎo)致無(wú)法復(fù)用中間插值結(jié)果,如果直接進(jìn)行插值計(jì)算需要64x8x8=?4096次乘法。為了減少計(jì)算量,仿射變換可以通過(guò)兩次錯(cuò)切變換完成(關(guān)于錯(cuò)切的定義可自行百度),
??
上面式子的右邊第一部分是垂直錯(cuò)切矩陣,第二部分?是水平錯(cuò)切矩陣。對(duì)8x8塊的仿射變換分為兩個(gè)階段,首先使用水平錯(cuò)切求得15x8的中間結(jié)果獲得水平位置偏移值
??
然后在中間結(jié)果上使用垂直錯(cuò)切得到垂直偏移值
??
最終得到8x8的預(yù)測(cè)塊,總共需要1472?次乘法運(yùn)算。
為了使插值使用的像素限制在15x15區(qū)域內(nèi),對(duì)仿射參數(shù)需要滿足下面兩個(gè)條件
???