h 264 率失真優化

2021-09-06 16:16:43 字數 1589 閱讀 4310

搜尋時,乙個不可避免的問題就是如何對mv進行比較,從而得到最優

對於同一壓縮演算法來說,位元速率越高表示影象質量越好、失真越小,但是位元速率越高要求更大的儲存空間,也會增加網路傳輸的壓力。因此在位元速率與失真中找出平衡點,使壓縮效果最優,這種方法叫做r-d optimization(位元速率失真優化)

典型的高位元速率下,位元速率與失真關係(r-d關係式)為

$r(d) = )}$

$r$為位元速率,$\alpha$為係數,$\delta^2$為方差,$d$為失真。

方差越大,意味著影象細節越多,因此位元速率也會越大;失真越大,意味著影象由於壓縮所損失的細節越多,那麼位元速率越小。

r-d曲線

r與d好比魚與熊掌,取一方,必然會捨去另一方,兩者不可能都取得最佳,因此如何取捨,就需要權衡利弊。最好的方法,就是看哪個權重大,哪個的比例就大,權重小的比例小,這就是拉格朗日方法。

拉格朗日代價函式為:

$j = d + \lambda_ \cdot r$

要使得代價最小,那麼在其導數為0處有最小值:

$\frac = \frac + \lambda_ = 0$

現假設d與r的權重比為$\lambda_$,並假設上方點a為根據上方結論得到的最佳位置,那麼點a處有斜率:

$k = -\lambda_ = \frac$

$\frac = -\frac$

因此,在r-d最優點處有:

$\lambda_ = \frac$

另外,在典型的高位元速率下,失真近似滿足公式:

$d = \frac$

把d代入上述公式,得到:

$\lambda_ = \frac\cdot quant^2$

即:$\lambda_ = \zeta\cdot quant^2$

最終可以通過函式擬合得到$\zeta = 0.85$,在h.264中,當存在b幀編碼時$\zeta = 0.68$,則有:

$\begin

\lambda_

&= 0.68\cdot quant^2 \\

&= 0.68 \cdot (2^\frac)^2 \\

&= 0.68\cdot 2^\frac

\end$

注:qp在這裡減去12是因為在h.264早期只有40個qp,而現在有52個qp

由於上面計算的時候用的是$\delta^2$(方差),即ssd,但是實際上h.264計算用的是

$\begin

sad &= \sum_\left | s[x,y] - s'[x,y]\right | \\

ssd &= \sum_\left | s[x,y] - s'[x,y]\right |^2

\end$

那麼$\lambda_ =  \sqrt}$

為了方便計算,在一般h.264的編碼器中採用的都是

$d = sad$

而r則需要知道當前所選擇的mv與ref所占用的bit,而這些都是可以事先計算出來的,在jm中不同的mv與ref所佔的bit都在編碼前被初始化了,用陣列儲存起來。mv與ref採用的都是哥倫布編碼。

$r = bit_ + bit_$

h 264 率失真優化

搜尋時,乙個不可避免的問題就是如何對mv進行比較,從而得到最優 對於同一壓縮演算法來說,位元速率越高表示影象質量越好 失真越小,但是位元速率越高要求更大的儲存空間,也會增加網路傳輸的壓力。因此在位元速率與失真中找出平衡點,使壓縮效果最優,這種方法叫做r d optimization 位元速率失真優化...

簡明H 264率失真分析概念

所謂率失真 distortion rate 其實指的是影象失真度與編碼位元速率二者之間的相互關係。其中的影象失真度,目前一般採用原始影象與編碼重建影象之間的峰值性噪比psnr來衡量,這個psnr可以是亮度psnr,也可以是亮度與色度psnr的線性組合。一般最簡單的情況下,採用亮度的psnr y ps...

簡明H 264率失真分析概念

簡明h.264率失真分析概念 所謂率失真 distortion rate 其實指的是影象失真度與編碼位元速率二者之間的相互關係。其中的影象失真度 目前一般採用原始影象與編碼重建影象之間的峰值性噪比psnr來衡量,這個psnr可以是亮度psnr,也可以是亮度與色度psnr的線性組合。一般最簡單的情況下...