RDO、SAD、SATD、λ(转贴) - [h.264]
来源:互联网 发布:vb和易语言 编辑:程序博客网 时间:2024/06/07 07:01
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://jjf-nb.blogbus.com/logs/37237846.html
经常有人问我这方面的问题,今天总结归纳一下。
众所周知,评价编码效率的有两大指标:码率和PSNR。码流越小,则压缩率越大;PSNR越大,重建图像越好。在模式选择的时候,判别公式实质上也就是对二者的综合评价。
首先以RDO为例,模式对应的代价:J(mode)=SSD+λ*R(ref,mode,mv,residual)
这里,SSD是指重建块与源图像的差值均方和;λ是拉格朗日乘子,就当是权值吧^_^;R就是该模式下宏块编码的实际码流,包括对参考帧、模式、运动矢量、残差等的比特总和。当然如果是帧内模式,就只有R(mode,residual)。
很多人迷惑的是,改宏块还没编码啊,怎么知道它的码流和重建图像?实际上,RDO就是对每个模式都实际编码一次,得到J(mode),然后选择J(mode)最小的模式为实际编码模式。就像编码器引入了一个大反馈,这也正是JM选用RDO编码起来龟速的原因,当然,编码效率最佳。
后来,“随意”注意到,不论熵编码选用cavlc还是cabac,各个模式下的residual编码都使用cavlc,这就是说选用cabac,模式选择时得到的R不是实际的R,为什么此时不用cabac呢?难道cabac复杂么?我的看法是因为cabac会对模型表更新数据。解码端是没有模式选择模块的,如果编码端此时使用cabac,会造成编解码端模型表不匹配,不能正常解码。
前已所述,RDO包含各模式的实际编码过程,也就是变换量化、熵编码、反变换反量化、重建等,计算量是相当大的,实时编码领域不可能直接使用。因此,就有了下面的替代公式:
J(mode)=SAD+λ*R(ref,mode,mv)
J(mode)=SATD+λ*R(ref,mode,mv)
这里SAD就是该模式下预测块与源图像的绝对误差和。比特R中少了对residual的编码,也就是运动估计后就可以直接得到该模式的J(mode)值,极大的减少了运算复杂度。SATD就是对残差进行哈德曼变换后的系数绝对和,在大多数情形下,SATD比SAD评价效果更好些,我对foreman CIF图像的测试,psnr增加了约0.2db,码流差不多。当然,SATD比SAD多了个变换,计算量大些。
注意,此时的λ与RDO的λ取值是不一样的。
容易困惑的还有,运动估计的匹配准则,很多运动估计的论文中都直接是SAD或SSE。编码器中对残差、MV、ref都要编码,所以匹配准则也就是SAD和码流R的综合评价!!!在同一个模式下,参考块与编码块的不同信息有ref、MV,故匹配准则为:
Jmotion=SAD+λ*R(ref,mv)
最后,附上我以前在群“H264乐园”中的帖子,
Q:如果不用率失真最优化,
A:
http://blog.mcuol.com/User/mediaworks/Article/5072_1.htm
- RDO、SAD、SATD、λ(转贴) - [h.264]
- RDO、SAD、SATD、λ(转贴) - [h.264]
- RDO、SAD、SATD、λ?
- RDO、SAD、SATD、λ相关概念
- H.264中SAD SATD及常见知识点
- H.264中SAD SATD及常见知识点
- H.264 中 SAD SATD及常见知识点
- H.264 中 SAD SATD及常见知识点
- satd 与 sad
- RDO和SAD、STAD
- SAD STAD RDO区别
- SAD和SATD的区别
- SAD SATD MAD SSD MSD...
- sad satd ssd Hadamard变换
- H.264 宏块级RDO控制
- x264中模式选择:SAD与SATD
- 帧间的SAD和SATD
- 什么是SAD,SAE,SATD,SSD,SSE,MAD,MAE,MSD,MSE?
- poj 2185 Milking Grid
- TFS账户说明及相关问题
- Android 下载文件至SD卡,并用progressBar显示下载进度
- C++线程池的实现
- 使用服务提升程序的权限及不同用户切换时显示客户端程序的图标
- RDO、SAD、SATD、λ(转贴) - [h.264]
- usaco 1.23
- error 2005:libcmtd.lib和msvcrt.lib冲突
- 训练局限玻尔斯曼机(Training Restricted Boltzmann Machines)----第一讲 介绍
- DevOps是一门哲学
- SQL<一>--游标使用
- UBOOT移植OK210开发板
- 创客文章
- Poj 1041 John's trip (Fleury算法求欧拉回路路径)