On Rate Distortion Optimization Using SSIM

率失真优化在现代视频编解码器中被广泛应用于各种编码器决策,以优化速率失真的权衡。通常,使用的失真测量要么是平方和误差(SSE),要么是绝对和距离(SAD),这两者在使用时都很方便,但并不总是反映感知视觉质量。我们希望解决相同的RDO问题,但使用一个感知动机的失真度量,如SSIM。

1.SSIM

在假设人类视觉感知高度适应于从场景中提取结构信息的情况下,我们引入了一种基于结构信息的质量评估方法,就是SSIM。

两个图像区域之间的SSIM定义为:

\[SSIM=(\frac{2u_xu_y+c_1}{u_x^2+u_y^2})(\frac{2\sigma_{xy}+c_2}{\sigma_x^2+\sigma_y^2+c_2}) \tag{1} \]

其中,x和y是要比较的两个图像区域,\(u_x和u_y\)和分别是x和y的平均值,\(\sigma_x^2,\sigma_y^2\)和分别是对应区域的方差,\(\sigma_{xy}\)是x和y之间的协方差,\(c1_\)\(c_2\)是用于数值稳定性的两个常数。

我们定义MSE:

\[MSE=\frac{1}{N}\sum \limits_{i}(y_i-x_i)^2=\frac{1}{N}\sum \limits_{i}e_i^2 \tag{2} \]

N是某个区域的像素总数,索引i表示某个区域中的第i个像素,y和x分别代表重建值和原始像素值。当N趋向于无穷时,MSE---->\(\sigma_e^2\)

在高分辨率的量化近似:

\[u_y \approx u_x \tag{3} \]

\[\sigma_y^2 \approx \sigma_x^2+\sigma_e^2 \tag{4} \]

\[\sigma_{xy} \approx \sigma_x^2 \tag{5} \]

将式(3)(4)(5)带入到(1),得到SSIM的近似:

\[\begin{aligned} SSIM&\approx \frac{2\sigma_x^2+c_2}{2\sigma_x^2+\sigma_e^2+c_2} \\ &\approx \frac{2\sigma_x^2+c_2}{2\sigma_x^2+MSE+c_2} \tag{6} \end{aligned} \]

重新定义基于SSIM的失真度量:

\[\begin{aligned} dSSIM&=\frac{1}{SSIM} &=1+\frac{MSE}{2\sigma_x^2+c_2} \tag{7} \end{aligned} \]

(7)式提供了SSIM和MSE之间方便的关系,可以用于RDO决策。

它还具有直观的感知意义,因为感知扭曲是由局部区域的逆方差来衡量的MSE;换句话说,一个区域的纹理越多,可容忍的MSE就越高。因此,对于相同的视觉效果SSIM,纹理区域的MSE可以比平滑区域更高。

在这里插入图片描述
原图像
在这里插入图片描述
JPEG压缩图像 MSE=210 MSSIM =0.6949
在这里插入图片描述
模糊图像 MSE=210 MSSIM=0.7052

2.基于SSIM的RDO方法

2.1 基本概念

在基于块的编码器中,可以使用拉格朗日乘子方法,通过最小化速率约束下的失真来执行每个块的RDO决策。当SSE是失真度量时,这是通过优化下式:

\[J_{SSE}=SSE+\lambda_{SSE}R=N\cdot MSE+\lambda_{SSE}R \]

对于一个适当选择的拉格朗日乘子\(\lambda\)

为了将SSIM纳入RDO中,我们使用(7)中定义的dSSIM作为失真度量,并为具有N个像素的块优化以下成本函数:

\[\begin{aligned} J&=N\cdot dSSIM+\lambda R \\ &\approx N(1+\frac{MSE}{2\sigma_x^2+c_2})+\lambda R \\ &=N+\frac{SSE}{2\sigma_x^2+c_2}+\lambda R \\ &=N+\frac{1}{2\sigma_x^2+c_2}(SSE+(2\sigma_x^2+c_2)R) \end{aligned} \]

同样地,我们也可以为每个块优化以下内容:

\[J=SSE+(2\sigma_x^2+c_2)\lambda R \tag{8} \]

对于一些适当选择的拉格朗日乘子λ。

(8)为我们提供了一种方便的方法来将SSIM合并到RDO决策过程中,通过使用依赖于局部源方差的λ的局部缩放。这意味着,只需稍微修改一下拉格朗日乘数,就可以保留整个RDO机制。对于这个过程,我们还有一个直观的解释。本质上,在一个高度纹理化的区域,对于码率R起的惩罚作用越大,这意味着一个更大的MSE是可以容忍的。

2.2 计算拉格朗日乘子

虽然上面已经展示了如何在RDO决策内优化SSIM,但还剩下如何选择合适的拉格朗日乘子λ的问题。在这里,有一种可能的方法,即保持编码帧的总体速率相同,假设无论要优化SSE或SSIM,位移帧差统计量\((DFD)^2\)都是相同的。

回想一下,当使用SSE时,优化问题是使总失真最小化总失真:

\[\min \limits_{\Phi} SSE=\sum \limits_{i}d_i \\ R=\sum \limits_{i}r_i \le R_c\]

其中\(\Phi\)表示编码器决策的集合,代表第i个MB的SSE,代表第i个MB所需要的码率。
应用拉格朗日算子将上述约束问题变为无约束问题:

\[\min \limits_{\{\phi_i\}_{i=1}^M}J_{SSE}=\sum_id_i+\lambda_{SSE}\sum_ir_i=\sum_i(d_i+\lambda_{SSE}r_i) \tag{9} \]

其中M是视频帧内MB的数量,\(\Phi_i\)是第i个MB的编码器决策集。
通常,这种优化是通过忽略MBs之间的依赖关系来实现的,并为每个MB解决以下无约束的问题:

\[\min \limits_{\phi_i}d_i+\lambda_{SSE}r_i \]

在H.264/AVC参考软件(JM)中,拉格朗日乘子的计算方法为\(\lambda_{SSE}=\beta \cdot2^{(Qp-12)/3}\)
在课本率失真优化中,由RD曲线得:

\[r(d)=N\alpha log(\frac{\sigma^2}{d/N}) \tag{10} \]

其中,r(d)是用于编码MB的速率,\(\sigma^2\)是MB中DFD的方差,d是重构MB的SSE失真,α是一个尺度常数。

为了求解(9)式,我们对d求导:

\[\frac{\partial J_{SSE}}{\partial d_i}=1+\lambda_{SSE}\frac{\partial r_i}{\partial d_i}=0 \tag{11} \]

联合(10)和(11),得到解:

\[d_i^{*}=N\alpha \lambda_{SSE} \\ r_i^{*}=N\alpha log(\frac{\sigma_i^2}{\alpha \lambda_{SSE}})\]

其中,\(d_i^{*}\)\(和\)r_i^{*}$分别为最优SSE和第i个MB的码率,是第i个MB的DFD的方差。因此,所使用的总码率是:

\[R_{SSE}=N\alpha \sum_i log(\frac{\sigma_i^2}{\alpha \lambda_{SSE}}) \]

当使用dSSIM作为失真度量时,我们可以重复同样操作。使用(7),我们将进行优化的式子:

\[\min \limits_{\{\phi_i\}_{i=1}^M}J_{SSE}=\sum_i\frac{d_i}{2\sigma_{xi}^2+c_2}+\lambda \sum_ir_i=\sum_i(\frac{d_i}{2\sigma_{xi}^2+c_2}+\lambda r_i) \tag{12} \]

\(\sigma_{xi}^2\)代表第i个MB的方差。
为了解决(12)式,我们同样的对d求导。

\[\frac{\partial J}{\partial d_i}=\frac{1}{2\sigma_{xi}^2+c_2}+\lambda \frac{\partial r_i}{\partial d_i} \tag{13} \]

将(10)带入到(13),

\[d_i^{*}=(2\sigma_{xi}^2+c_2)N\alpha \lambda_{SSE} \\ r_i^{*}=N\alpha \cdot log(\frac{\sigma_i^2}{\alpha (2\sigma_{xi}^2+c_2)\lambda})\]

总的码率为:

\[R_{SSIM}=N\alpha \sum_i log(\frac{\sigma_i^2}{\alpha (2\sigma_{xi}^2+c_2)\lambda}) \]

如前所述,考虑一个条件,这样无论使用MSE还是dSSIM作为失真度量,总的码率都是相同的;这将使得作为JM中使用的拉格朗日乘子λSSE的一个函数表达。通过设置\(R_{SSIM}=R{SSE}\),我们得到:

\[\lambda =\lambda_{SSE}\cdot exp(-\frac{1}{M}\sum_i^{M}log(2\sigma_{xi}^2+c_2)) \tag{14} \]

这意味着在使用(8)执行RDO决策时,我们将得到第i个MB的拉格朗日乘数:

\[\lambda_i=\frac{2\sigma_{xi}^2+c_2}{exp(-\frac{1}{M}\sum_i^{M}log(2\sigma_{xi}^2+c_2))}\lambda_{SSE} \tag{15} \]

相比于在JM中使用的拉格朗日算子\(\lambda_{SSE}\)\(\lambda_i\)依赖于局部方差统计量,由对数统计量的几何平均值对原始拉格朗日乘子进行归一化。这给了一种对RDO过程进行小修改,使整个帧的SSIM最大化的方法。

2.3 QP的变化

将拉格朗日乘子中的局部缩放解释为每个MB的QP的变化也很有用。设\(\overline{QP}\)是原始(或主)QP, \(QP_i\)是SSIM-RDO中第i个MB使用的QP。然后,利用和,其中\(\gamma_i\)是JM中第i个MB的拉格朗日乘子的放缩比例,我们得到:

\[\Delta QP_i=QP_i-\overline{QP}=3log_2 \gamma_i \tag{16} \]

编码器JM可以测试一系列QP,以找到给出最佳RD对应的的QP。然而,由于这增加了编码器的复杂性,则只能测试有限范围的QP。

或者,我们也可以使用(16)来直接确定要应用于每个MB的QP:

\[\Delta QP_i=3(s_i-\frac{1}{M}\sum_{j=1}^Ms_j) \tag{17} \]

Where \(s_i=log_2(2\sigma_i^2+c_2)\)

3.算法简述

在这里插入图片描述
\(MB_RDO(i,λ_i)\)是指使用\(λ_i\)的拉格朗日乘数对第MB执行传统的RDO模式决策。

4.发展趋势

而由方程(17)调整后的只能反映空间特征,并没有充分考虑到时间感知特征。当该方法应用于空间方差分布复杂、帧间慢动的序列时,性能可能会受到限制。未来会有基于感知空间特性的自适应量化器和基于感知时域自适应量化器的产生。

参考文献:

[1]C. Yeo, H. L. Tan and Y. H. Tan, "SSIM-based adaptive quantization in HEVC," 2013 IEEE International Conference on Acoustics, Speech and Signal Processing, 2013, pp. 1690-1694, doi: 10.1109/ICASSP.2013.6637940.
[2]T. Wiegand, H. Schwarz, A. Joch, F. Kossentini and G. J. Sullivan, "Rate-constrained coder control and comparison of video coding standards," in IEEE Transactions on Circuits and Systems for Video Technology, vol. 13, no. 7, pp. 688-703, July 2003, doi: 10.1109/TCSVT.2003.815168.
[3]C. Yeo, H. L. Tan and Y. H. Tan, "On Rate Distortion Optimization Using SSIM," in IEEE Transactions on Circuits and Systems for Video Technology, vol. 23, no. 7, pp. 1170-1181, July 2013, doi: 10.1109/TCSVT.2013.2240918.
[4]Y. Yan, G. Xiang, Y. Li, X. Xie, W. Yan and Y. Bao, "Spatiotemporal Perception Aware Quantization Algorithm For Video Coding," 2020 IEEE International Conference on Multimedia and Expo (ICME), 2020, pp. 1-6, doi: 10.1109/ICME46284.2020.9102882.

posted @ 2022-01-01 17:09  为红颜  阅读(174)  评论(0编辑  收藏  举报