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

1.SSIM

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

两个图像区域之间的SSIM定义为:
SSIM=(2uxuy+c1ux2+uy2)(2σxy+c2σx2+σy2+c2)(1)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}SSIM=(ux2​+uy2​2ux​uy​+c1​​)(σx2​+σy2​+c2​2σxy​+c2​​)(1)

其中,x和y是要比较的两个图像区域,ux和uyu_x和u_yux​和uy​和分别是x和y的平均值,σx2,σy2\sigma_x^2,\sigma_y^2σx2​,σy2​和分别是对应区域的方差,σxy\sigma_{xy}σxy​是x和y之间的协方差,KaTeX parse error: Expected group after '_' at position 3: c1_̲和c2c_2c2​是用于数值稳定性的两个常数。

我们定义MSE:
MSE=1N∑i(yi−xi)2=1N∑iei2(2)MSE=\frac{1}{N}\sum \limits_{i}(y_i-x_i)^2=\frac{1}{N}\sum \limits_{i}e_i^2 \tag{2}MSE=N1​i∑​(yi​−xi​)2=N1​i∑​ei2​(2)

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

在高分辨率的量化近似:
uy≈ux(3)u_y \approx u_x \tag{3} uy​≈ux​(3)
σy2≈σx2+σe2(4)\sigma_y^2 \approx \sigma_x^2+\sigma_e^2 \tag{4}σy2​≈σx2​+σe2​(4)
σxy≈σx2(5)\sigma_{xy} \approx \sigma_x^2 \tag{5} σxy​≈σx2​(5)

将式(3)(4)(5)带入到(1),得到SSIM的近似:
SSIM≈2σx2+c22σx2+σe2+c2≈2σx2+c22σx2+MSE+c2(6)\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​≈2σx2​+σe2​+c2​2σx2​+c2​​≈2σx2​+MSE+c2​2σx2​+c2​​​(6)

重新定义基于SSIM的失真度量:
dSSIM=1SSIM=1+MSE2σx2+c2(7)\begin{aligned} dSSIM&=\frac{1}{SSIM} &=1+\frac{MSE}{2\sigma_x^2+c_2} \tag{7} \end{aligned} dSSIM​=SSIM1​​=1+2σx2​+c2​MSE​​(7)

(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是失真度量时,这是通过优化下式:
JSSE=SSE+λSSER=N⋅MSE+λSSERJ_{SSE}=SSE+\lambda_{SSE}R=N\cdot MSE+\lambda_{SSE}RJSSE​=SSE+λSSE​R=N⋅MSE+λSSE​R

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

为了将SSIM纳入RDO中,我们使用(7)中定义的dSSIM作为失真度量,并为具有N个像素的块优化以下成本函数:
J=N⋅dSSIM+λR≈N(1+MSE2σx2+c2)+λR=N+SSE2σx2+c2+λR=N+12σx2+c2(SSE+(2σx2+c2)R)\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​=N⋅dSSIM+λR≈N(1+2σx2​+c2​MSE​)+λR=N+2σx2​+c2​SSE​+λR=N+2σx2​+c2​1​(SSE+(2σx2​+c2​)R)​

同样地,我们也可以为每个块优化以下内容:
J=SSE+(2σx2+c2)λR(8)J=SSE+(2\sigma_x^2+c_2)\lambda R \tag{8}J=SSE+(2σx2​+c2​)λR(8)

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

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

2.2 计算拉格朗日乘子

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

回想一下,当使用SSE时,优化问题是使总失真最小化总失真:
min⁡ΦSSE=∑idiR=∑iri≤Rc\min \limits_{\Phi} SSE=\sum \limits_{i}d_i \\ R=\sum \limits_{i}r_i \le R_cΦmin​SSE=i∑​di​R=i∑​ri​≤Rc​

其中Φ\PhiΦ表示编码器决策的集合,代表第i个MB的SSE,代表第i个MB所需要的码率。
应用拉格朗日算子将上述约束问题变为无约束问题:
min⁡{ϕi}i=1MJSSE=∑idi+λSSE∑iri=∑i(di+λSSEri)(9)\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}{ϕi​}i=1M​min​JSSE​=i∑​di​+λSSE​i∑​ri​=i∑​(di​+λSSE​ri​)(9)

其中M是视频帧内MB的数量,Φi\Phi_iΦi​是第i个MB的编码器决策集。
通常,这种优化是通过忽略MBs之间的依赖关系来实现的,并为每个MB解决以下无约束的问题:
min⁡ϕidi+λSSEri\min \limits_{\phi_i}d_i+\lambda_{SSE}r_iϕi​min​di​+λSSE​ri​

在H.264/AVC参考软件(JM)中,拉格朗日乘子的计算方法为λSSE=β⋅2(Qp−12)/3\lambda_{SSE}=\beta \cdot2^{(Qp-12)/3}λSSE​=β⋅2(Qp−12)/3。
在课本率失真优化中,由RD曲线得:
r(d)=Nαlog(σ2d/N)(10)r(d)=N\alpha log(\frac{\sigma^2}{d/N}) \tag{10}r(d)=Nαlog(d/Nσ2​)(10)

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

为了求解(9)式,我们对d求导:
∂JSSE∂di=1+λSSE∂ri∂di=0(11)\frac{\partial J_{SSE}}{\partial d_i}=1+\lambda_{SSE}\frac{\partial r_i}{\partial d_i}=0 \tag{11}∂di​∂JSSE​​=1+λSSE​∂di​∂ri​​=0(11)

联合(10)和(11),得到解:
di∗=NαλSSEri∗=Nαlog(σi2αλSSE)d_i^{*}=N\alpha \lambda_{SSE} \\ r_i^{*}=N\alpha log(\frac{\sigma_i^2}{\alpha \lambda_{SSE}})di∗​=NαλSSE​ri∗​=Nαlog(αλSSE​σi2​​)

其中,di∗d_i^{*}di∗​和和和r_i^{*}$分别为最优SSE和第i个MB的码率,是第i个MB的DFD的方差。因此,所使用的总码率是:
RSSE=Nα∑ilog(σi2αλSSE)R_{SSE}=N\alpha \sum_i log(\frac{\sigma_i^2}{\alpha \lambda_{SSE}})RSSE​=Nαi∑​log(αλSSE​σi2​​)

当使用dSSIM作为失真度量时,我们可以重复同样操作。使用(7),我们将进行优化的式子:
min⁡{ϕi}i=1MJSSE=∑idi2σxi2+c2+λ∑iri=∑i(di2σxi2+c2+λri)(12)\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}{ϕi​}i=1M​min​JSSE​=i∑​2σxi2​+c2​di​​+λi∑​ri​=i∑​(2σxi2​+c2​di​​+λri​)(12)

σxi2\sigma_{xi}^2σxi2​代表第i个MB的方差。
为了解决(12)式,我们同样的对d求导。
∂J∂di=12σxi2+c2+λ∂ri∂di(13)\frac{\partial J}{\partial d_i}=\frac{1}{2\sigma_{xi}^2+c_2}+\lambda \frac{\partial r_i}{\partial d_i} \tag{13}∂di​∂J​=2σxi2​+c2​1​+λ∂di​∂ri​​(13)

将(10)带入到(13),
di∗=(2σxi2+c2)NαλSSEri∗=Nα⋅log(σi2α(2σxi2+c2)λ)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})di∗​=(2σxi2​+c2​)NαλSSE​ri∗​=Nα⋅log(α(2σxi2​+c2​)λσi2​​)

总的码率为:
RSSIM=Nα∑ilog(σi2α(2σxi2+c2)λ)R_{SSIM}=N\alpha \sum_i log(\frac{\sigma_i^2}{\alpha (2\sigma_{xi}^2+c_2)\lambda})RSSIM​=Nαi∑​log(α(2σxi2​+c2​)λσi2​​)

如前所述,考虑一个条件,这样无论使用MSE还是dSSIM作为失真度量,总的码率都是相同的;这将使得作为JM中使用的拉格朗日乘子λSSE的一个函数表达。通过设置RSSIM=RSSER_{SSIM}=R{SSE}RSSIM​=RSSE,我们得到:
λ=λSSE⋅exp(−1M∑iMlog(2σxi2+c2))(14)\lambda =\lambda_{SSE}\cdot exp(-\frac{1}{M}\sum_i^{M}log(2\sigma_{xi}^2+c_2)) \tag{14}λ=λSSE​⋅exp(−M1​i∑M​log(2σxi2​+c2​))(14)

这意味着在使用(8)执行RDO决策时,我们将得到第i个MB的拉格朗日乘数:
λi=2σxi2+c2exp(−1M∑iMlog(2σxi2+c2))λSSE(15)\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}λi​=exp(−M1​∑iM​log(2σxi2​+c2​))2σxi2​+c2​​λSSE​(15)

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

2.3 QP的变化

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

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

或者,我们也可以使用(16)来直接确定要应用于每个MB的QP:
ΔQPi=3(si−1M∑j=1Msj)(17)\Delta QP_i=3(s_i-\frac{1}{M}\sum_{j=1}^Ms_j) \tag{17}ΔQPi​=3(si​−M1​j=1∑M​sj​)(17)

Where si=log2(2σi2+c2)s_i=log_2(2\sigma_i^2+c_2)si​=log2​(2σi2​+c2​)

3.算法简述


MBRDO(i,λi)MB_RDO(i,λ_i)MBR​DO(i,λi​)是指使用λ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.

On Rate Distortion Optimization Using SSIM相关推荐

  1. 数据率失真理论(RATE DISTORTION THEORY)

    数据率失真理论(Rate distortion theory)或称信息率-失真理论(information rate-distortion theory)是信息论的主要分支,其的基本问题可以归结如下: ...

  2. 音视频系列3:编解码技术

    1. 基础知识 FOURCC是一个4个字节32位的标识符,通常用来标示视频数据流的格式,播放软件可以通过查询FOURCC代码并寻找对于解码器来播放特定视频流,取值通常由各个格式标准自行定义,如DIV3 ...

  3. x265中计算RD Cost的几种方式

    x265中除了传统的RD Cost外,还有Psy-RdCost和SSIM-RdCost,这三种RD Cost的使用是通过命令行参数控制的,如果不设置,则默认使用的是Psy-RDCost,相关命令行参数 ...

  4. 视频编码名词参数解释——非常全面详细

    http://blog.csdn.net/bytxl/article/details/50436875 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] GOP(Group of ...

  5. 3D点云论文汇总-实时更新

    目录 1.论文实时更新 1.论文实时更新 PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation-CV ...

  6. h264的码率控制 JVT-G012

    开始看h264的码率控制,很多地方都提到 G012,拿来做为参考比较,看来很有必要研究清楚. 偶这人,E文文档不翻译的话,看过就忘了,于是草草翻译了下,因为不打算做B帧,也不准备在同一帧中使用不同的M ...

  7. NBA赛事直播超清画质背后:阿里云视频云「窄带高清2.0」技术深度解读

    在半月前结束的NBA总决赛中,百视TV作为全网唯一采用"主播陪你看NBA"模式的直播平台,以"陪看型"赛事解说来面对内容差异化竞争.与此同时,百视TV还运用了& ...

  8. x265笔记_4_CompressCTU源码分析

    文章目录 Before `compressCTU` `compressCTU` 输入参数 处理流程 重要变量 `m_parame` `rd_level` `amp`和`rect` 重要函数 `comp ...

  9. 关于帧内预测模式的视频隐写代码介绍

    关于帧内预测模式的视频隐写代码介绍 前言 一.H.265/HEVC的帧内预测过程 二.论文[1]的介绍以及如何复现 前言 在早期的基于帧内预测模式(IPM)的H.265/HEVC视频中,大多是基于自定 ...

最新文章

  1. Rider 2018.3.4 发布,跨平台 .NET IDE
  2. java bean join_spring data jpa 关联join查询出自定义实体java bean的坑
  3. 【TP5笔记】TinkPHP5中引入资源文件
  4. 用VC++实现一个文本文件阅读器
  5. 外包物料成本核算时的供应商确定
  6. python3精要(51)--抛出异常与自定义异常
  7. 常见的加密算法 (转自: http://blog.chinaunix.net/uid-8735300-id-2017079.html 本文摘自网络 ,如有雷同 请及时联系我 谢谢)...
  8. 牛客网【每日一题】7月8日 Alliances
  9. 养不教 父母之过:10个不能靠老师解决的孩子教育问题
  10. Event Recommendation Engine Challenge分步解析第五步
  11. 现在三十来岁的人存款大概多少?
  12. 服务器如何关闭登录日志文件,linux云服务器登录日志文件
  13. 深入理解JavaScript中的闭包
  14. hdu 2844 Coins (多重背包+二进制优化)
  15. 800万像素摄像头,评估可以看到多远的红绿灯【1】?
  16. 无线测温系统应用 对变电所进行实时的在线监测 生产高效安全
  17. 中移物联网模块M8321P调试记录
  18. IDV和IDV的发展简史
  19. python mac可以运行win不能运行_Pymssql程序可以在mac上运行,但不能在windows上运行...
  20. 剪映专业版 1.2.0 - 一款全能好用的视频编辑工具

热门文章

  1. 阿玛尼干洗骗子你要骗我骗到什么时候,还我血汗钱阿玛尼骗子公司!
  2. html——网页上添加表格
  3. Arcgis中文网-地理信息Arcgis软件下载安装,Arcgis特色功能使用
  4. 如何使用笔记软件 FlowUs、Notion 进行间隔重复?基于公式模版
  5. Flutter组件--Image 图片组件,圆形图片
  6. 实验室安全工作实施的保证
  7. webpack的配置和使用
  8. java List集合去重保持原顺序
  9. python学习(4)
  10. mac下忘了密码,如何开机?