HEVC—SAO技术
來源
? ? ? ? SAO原始的思想來自于Samsung的提案JCTVC-A124。因為該提案太過復(fù)雜,因此沒有被H265采用。但是基于該提案提出的SAO(JCTVC-BO77/C147/D122/E049)最后被采用了。在原始的提案中SAO分為LUMA SAO和CHROMA SAO(JCTVC-F056)。SAO的offset包含BO(Band offset)和EO(Edgeoffset)。
原理
? ? ? ? 通過PSNR的計算公式可以看到,重構(gòu)數(shù)據(jù)和原始YUV之間的差的平方和是決定PSNR的因素。SAO通過分析deblocking后的數(shù)據(jù)和原始YUV之間的關(guān)系來對deblock后的數(shù)據(jù)進行delta操作,使得盡量接近原始YUV,達到提高PSNR的目的。
? ? ? ? 一個最基本的想法就是把deblock的重構(gòu)數(shù)據(jù)和原始YUV中每一個相同位置的pixel做差值,把這個差值傳給decoder,這樣可以完全恢復(fù)原始YUV.但是這實際上是不現(xiàn)實的,如果每一個pixel都傳輸一個offset,這會導(dǎo)致碼率會非常的高,達不到壓縮的效果(如同DPCM)。H265在碼率和PSNR之間做了一個tradeoff,以較小的碼率增加來提高PSNR。
? ? ? ? 此外,在圖像中像素值劇烈變化的邊界區(qū),經(jīng)過編碼-解碼重建之后通常會出現(xiàn)波紋狀的失真現(xiàn)象,這種失真稱作振鈴效應(yīng)。振鈴效應(yīng)產(chǎn)生的根本原因在于邊界區(qū)高頻分量在編碼過程中丟失。SAO技術(shù)能夠減少高頻分量的損失,同時不降低編碼的效率,從像素域入手對振鈴區(qū)域進行補償。
? ? ? ? 下面就看H265是怎么做的。
? ? ? ? H265是基于CTB來做SAO。通過分析deblock重構(gòu)pixel和原始輸入YUV之間的關(guān)系將pixel分成了三種SAO模式:?EO、BO以及不采用
? ? ? ? EO:邊緣補償,分為四種模式,分別為水平、垂直、135度、45度,每個CTU只能選擇其中的一種模式。選擇的過程采用RDO進行決策。在確定模式之后,又分為五種類型。
? ? ? ? 這五種類型是根據(jù)當(dāng)前的像素值與相鄰的像素值之間的關(guān)系決定的。其中,類型0沒有畫出,它是代表平坦區(qū)域,即與相鄰的像素值相等,那么就不進行EO操作。對于剩下的四種類型,每個類型分配一個offset。其中類型1與類型2的補償值為正,3與4的補償值為負(fù)。
? ? ? ? BO:帶補償。將圖像的像素值范圍劃分為32個帶(即32等分)。以平常經(jīng)常使用的8bit的視頻為例,像素值的范圍就是0-255,那就是對0-255進行32等分,每一份的像素值為8k-8k+7(k∈[0,31])。計算每個帶中原始樣點與重建樣點的平均值之差(即補償值),選擇連續(xù)的4個偏移最大的帶進行補償(切記是連續(xù)的4個帶)。即如果像素值屬于在這4個連續(xù)的帶的范圍,那么就對該像素進行補償,補償值為之前計算的每個帶中原始樣點與重建樣點的平均值之差。為什么選擇連續(xù)的4個帶呢?一方面大部分的像素值應(yīng)該集中在很少的幾個帶中,因此這能夠覆蓋大部分的像素值了,另外一方面,EO中也是用了4個偏移量,因此能夠進行復(fù)用,節(jié)省了碼率。
總結(jié)
以上是生活随笔為你收集整理的HEVC—SAO技术的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。