Rate-distortion optimization (RDO) is a method of improving video quality in video compression.
The name refers to the optimization of the amount of distortion (loss of video quality) against the amount of data required to encode the video, the rate.
While it is primarily used by video encoders, rate-distortion optimization can be used to improve quality in any encoding situation (image, video, audio, or otherwise) where decisions have to be made that affect both file size and quality simultaneously.
RDO用于视频压缩时改进视频质量。
通过名称就可以看出,它涉及了以下两方面的优化:
失真(视频质量损失)的大小
和编码视频(码率)的大小。
在H.264编码过程中有许多的模式可以选择,有些模式的图像失真较小,但是码率却很大;有些模式的图像失真较大,但是码率却很小。人们就想了,有没有一种方法使得在不超过某最大码率的情况下,失真达到最小。即 min{D} s.t. R<=Rmax ,s.t.表示“在以下条件”。
在保证比特率R 不超过最大比特率R max 的条件下, 使失真D 达到最小, 即m in{D } 限制条件:R ≤R max。
RDO 的主要思想是, 在计算代价函数时, 同时考虑码率和失真度两方面因素的制约, 在保证低失真度的同时保证低码率, 这样更加有利于视频流的传输。 H. 264在运动搜索、 参考帧择优、 模式决策三个方面运用了不同的RDO 代价函数, 也将非RDO 代价函数列为可选模式, 以满足不同的需要。
模式选择
首先以RDO为例,模式对应的代价:
J(mode)=SSD+λ*R(ref,mode,mv,residual)
这里,SSD是指重建块与源图像的差值均方和;λ是拉格朗日乘子,就当是权值吧;R就是该模式下宏块编码的实际码流,包括对参考帧、模式、运动矢量、残差等的比特总和。当然如果是帧内模式,就只有R(mode,residual)。
很多人迷惑的是,改宏块还没编码啊,怎么知道它的码流和重建图像?实际上,RDO就是对每个模式都实际编码一次,得到J(mode),然后选择J(mode)最小的模式为实际编码模式。就像编码器引入了一个大反馈,这也正是JM选用RDO编码起来龟速的原因,当然,编码效率最佳。
Rate-Distortion Optimization 是视频编码中最优选择mode的一种方法。
比如h.264里好多mode 8x8 16x16 I4x4 I16 在给定的条件下,哪个是最好的?Distortion 是指选用candidate mode产生的失真,rate是用这个mode需要的rate.他们换算成RDCost = Distortion + lamda * rate. 两个mode谁的rdcost 低就选谁其中的数学原理是条件极值转非条件极值。
JM 里用的RDO是比较经典的方法。最早是Gary J.Sullivan做的 参见 IEEE Signal Processing Magazine 1998 Nov. "Rate-Distortion Optimization for video compression" rdo的经典。 h264里的rdo还可参考CSVT H.264 special issue
x265 帧内预测模式RDO
在对候选模式进行选择的时候,我们会用RDO方法选择最佳预测模式。
帧内预测模式的RDO过程如下所述:
1,计算当前预测模式下的SSE,即残差平方和,作为RDO计算中的失真量。
2,计算当前预测模式下,编码TU所需要的比特数,这个是预测模式RDO的主要工作。
需要进行编码的参数以及编码的过程如下面所述:
(1)编码PU参数,其实就是编码帧内预测模式
(2)编码TU参数,
运动估计的匹配
运动估计的匹配准则,很多运动估计的论文中都直接是SAD或SSE。编码器中对残差、MV、ref都要编码,所以匹配准则也就是SAD和码流R的综合评价!!!在同一个模式下,参考块与编码块的不同信息有ref、MV,故匹配准则为:
Jmotion=SAD+λ*R(ref,mv)
References:
https://en.wikipedia.org/wiki/Rate%E2%80%93distortion_optimization
https://blog.csdn.net/u010550883/article/details/38703177
http://www.bubuko.com/infodetail-507390.html
http://blog.sina.com.cn/s/blog_6938cd0501011jrj.html
https://blog.csdn.net/wh8_2011/article/details/73718786