方塊效應產生的原因:
1.變換、量化 的誤差
2.幀間預測的運動補償過程
為了消除或減輕塊效應,我們可以用環路濾波器(Loop Filter)的方法對重建圖像進行濾波降低重建誤差。在環路濾波中,去方塊濾波(DBF)是其中最重要的一類改善重建圖像質量的方法。去方塊濾波器的作用是通過“修正”重建塊的像素值,尤其是邊間附近的像素值,從而達到消除編解碼算法帶來的方塊效應的目的。在HEVC的環旅濾波中,除去方塊濾波外,還增加了樣點自適應補償濾波(SAO)濾波方法對所有的像素進行修正處理,進一步降低了重建圖像的誤差。
環路濾波:1.環內濾波(環路濾波)2.環外濾波(后置濾波器)
1.環外濾波
環外濾波器不在編解碼環路內部出現,只是對解碼端顯示器緩存中的重建圖像進行去方塊濾波運算。后置濾波器的方便之處在于不愁便準的約束,可以比較自由地設計,但是后置濾波對圖像質量的改善并不明顯,而且由于濾波器位于編碼環路以外,不參與預測,因而改進后的圖像不可能作為后續推向的參考幀。
2.環內濾波
環內濾波器處理編碼環路中的數據。在編碼器中,濾波后的重建圖像幀作為后續編碼幀的運動補償參考幀;在解碼器中,濾波后的圖像輸出顯示。這要求所有與標準一致的解碼器采用同一個濾波器,保持與編碼器同步,才能保證解碼器中的正確解碼過程。當然,如果有必要,解碼器還可以使用環路濾波器的同時使用后置濾波器。
在編碼環內使用濾波器比后置濾波器的優越之處在于:首先,環內濾波具有自適應性,能夠適應不同邊界,獲得不同水平的圖像質量。其次,由于環內,濾波后的質量重建圖像可為后續編碼幀提供更精確的預測,有利于提高編碼效率。最后,在解碼器中沒有必要再為濾波器準備額外的幀緩存(后置濾波器需要),可簡化設備,減小誤差擴散。
環旅濾波比后值濾波更能提高重建視頻的主觀評價的質量,同時還能有效降低解碼器的復雜度。
HEVC的去方塊濾波主要包含三個步驟:首先根據編碼參數和邊界強度(BS)判斷目標邊界是否需要濾波;如果需要,然后再根據閾值判定需要進行普通濾波還是強濾波操作;最后則是具體的濾波處理
可以參考下面的文章:
HEVC去方塊濾波原理以及代碼流程
濾波邊間強度判定(BS):
濾波的邊界強度(BS)判定,主要依據是預測單元邊界以及變換單元邊界的編碼模式和編碼參數。HEVC中邊界強度有3種,分別對應BS = 0、1、2三個等級。
濾波強度的判定:
如果邊界強度(BS)大于0,就要對亮度塊邊界進行濾波。由于圖像局部特性的不同,產生方塊效應的程度也不同。因此,針對不同程度的方塊效應,其濾波強度也應有所不同。在HEVC中,為去方塊濾波強度設置了兩種模式,一種是普通濾波強度的普通模式,另一種是較強濾波強度的加強模式。對于具體的邊界,到底應該采用哪種濾波模式,需要根據邊界兩邊圖像的特征來決定,實際上就是根據邊界附近像素值的情況,通過一定的數值判斷,來確定當前邊界是需要進行普通濾波還是強濾波。
HEVC的樣值自適應補償
樣值自適應補償(SAO)技術是HEVC的一種新的編碼工具,在去方塊濾波后實現,也屬于環路內部濾波。去方塊濾波的操作只在塊邊界處起作用,而樣點自適應補償則對塊中所有的樣點值進行處理。SAO的主要思想是對照原始圖像,通過對重建圖像塊的像素特點進行合適的分類,對不同的分類施加不同的補償值,使其更接近原圖像,從而達到減少圖像失真的效果。
SAO是一種自適應選擇的處理過程,它的輸入信號是原始圖像數據和去方塊濾波后的重建圖像數據,SAO參照原始圖像數據,對重建圖像數據進行補償,輸出是SAO糾正后的圖像數據和SAO的補償數據。SAO一邊講糾正后的圖像數據送至圖像緩存,為編碼環路提供質量更高的重建圖像參考,另一邊將產生的補償參數送至熵編碼,為解碼器的SAO提供同樣的補償操作參考。顯然,SAO是一種非線性濾波操作,它能使重建信號更加逼近原始圖像,提高圖像在平滑區域和邊緣區域的觀賞效果。
SAO采用的是一種分類補償的方法, 通過對重建圖像樣點值進行分類,為每一類像素值添加一個補償值,以達到減少失真的目的,從而也可以提高壓縮率,減少碼流。從減少復雜度的角度考慮,要求SAO中的類別劃分操作簡單,因為這個過程需要在編碼端對每一個像素都要進行判斷,在編、解碼斷都要進行補償操作。
針對不同的重建圖像特點,SAO的濾波類型有兩種,邊緣補償(EO)和帶補償(BO)
BO補償原理
在帶補償模式中,所選的補償值直接取決于像素的幅度值。編碼器把圖像像素值范圍劃分為32個等份,每一小等份稱為“帶”(band).一個像素一般有3個值:亮度Y,和色度U、V,處理方法 都相同。計算每個帶中原始樣點和重建樣點的平均值之差(即補償值),在編碼端將此補償值加到每個重建像素上,使得此帶中的原始樣點和補償后的重建樣點的平均值相等。與此同時,還需將這一補償值傳輸至解碼端,使得解碼器也能夠完成同樣的補償。在解碼端,也為每一個處于該帶內的去方塊濾波后的值加上相應的補償值,這樣可以保證在該帶出現的重構樣點值和原始圖像樣點值的均值都是相等的。
邊緣補償
邊緣補償(EO)根據邊界方向區分像素值,為保證復雜度與編碼效率的平衡,EO采用了4中一維方向來確定該樣點值所屬的EO模式,這4中方向分別為水平、垂直、135°和45°
C點維當前樣點值,a和b分別代表與之相鄰的兩個樣點值。在編碼端,每個CTU只可以選擇4種EO模式中的一種,即該EO中所有的像素都為這一模式,除非該STU判定為不進行SAO處理。CTU到底選擇哪一種模式,則可采用率失真優化的方法來選擇,將所選最優的EO類別寫入碼流。
C與a、b值之間的關系可以從下圖直觀地看出。
可以參考下面的文章
HEVC 樣點自適應補償(SAO)原理詳解
從吉布斯現象出發,EO認為像素值原來是平坦區,因為量化丟棄了部分高頻分量,形成了某些像素值得偏移,使得原來相對平坦的像素值關系或多或少地形成局部峰點、谷點或拐點。那么,EO的補償就是人為地對這些飄逸的像素加上一個適當的相反的補償量,以抵消編碼造成的偏移。