率-失真优化
![本页使用了标题或全文手工转换](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
![]() | 此条目需要精通或熟悉相关主题的编者参与及协助编辑。 (2014年7月22日) |
率-失真优化(Rate–distortion optimization,简称RDO)是一种提升视频压缩性能的优化方法。其原理是对视频的失真(画面质量)与位元率(编码所需的资料量)同时进行优化,以求达到一个最佳的平衡点。虽然此算法一开始是在视频压缩的编码器中被使用,但也可以用于各种多媒体编码包含影像、视频、音频等等,只要编码时会同时考虑到质量及文件大小皆可使用。
背景
传统视频编码器在做编码决策时,是挑选出影像质量最好的画面。然而只考虑质量的缺点是,会让决策的结果有时相较于质量稍差的选择下,花费了更多资料量但只相对提升了一点点质量。一个常见的例子就是动作补偿[1],尤其是使用1/4像素精确度的时候。在动作补偿过程中,为宏区块的动作向量增加额外的精确度可能可提升质量,但有些时候提升的质量,并不值得额外花费用来编码高精确度动作向量的资料量。
运作原理
率-失真优化借由作为影像质量的衡量方法,解决了上述的问题。资料量会被用位元数乘上拉格朗日乘数来取代。拉格朗日乘数代表了在某种程度范围的影像质量下,位元的花费与影像质量之间的关系。以数学式表示:
其中
- :最终的衡量数据,也被称为RD cost(rate-distortion cost)
- :失真的衡量数据
- :拉格朗日乘数
- :资料量的衡量数据
为了最大化峰值信噪比的视频画值衡量,失真部分通常使用均方差做计算。
现行的视频压缩编解码器中,率-失真优化需要将每一块视频画面的区块,经由熵编码器运算来衡量实际的位元花费,而此计算是复杂的。例如在MPEG的许多编解码器标准中,完整的计算流程包含了离散余弦变换、量化以及熵编码,需全部运算完才能得到实际的位元花费。因此率-失真优化会较大部分其他区块比对的衡量方法来得慢,譬如绝对值差和(SAD)和转换后绝对值差和(SATD)。因此率-失真优化通常只在动作补偿的最后一个步骤才会被使用,像是在H.264/AVC中最后需要对各种分割模式下决定的时候。
支持的编码器
- Ateme H.264编码器
- 草谷ViBE编码器(SD & HD MPEG-2/MPEG-4)
- Harmonic Electra 8000编码器(SD & HD MPEG-2/MPEG-4)
- libavcodec
- MainConcept H.264编码器
- Microsoft VC-1编码器
- TANDBERG Television SD MPEG-2 EN8100
- TANDBERG Television HD MPEG-4 EN8190
- TANDBERG Television SD & HD MPEG-4 iPlex
- Theora 1.1-alpha1 and later(the "Thusnelda" branch)
- x264 H.264编码器
- Xvid MPEG-4 ASP编码器
- H.264/AVC标准参考软件JM(Joint Model)
- H.265/HEVC标准参考软件HM(HEVC Test Model)
参见
参考资料
- ^ D. T. Hoang, P. M. Long, and Jeffrey Vitter, Rate-Distortion Optimizations for Motion Estimation in Low-Bitrate Video Coding (页面存档备份,存于互联网档案馆), IEEE Transactions on Circuits and Systems for Video Technology, 8(4), August 1998, 488-500. A shorter version appears in Proceedings of the Digital Video Compression Conference, IS&T/SPIE 1996 Symposium on Electronic Imaging: Science & Technology, 2668, San Jose, CA, January–February 1996, 18-27.