率失真优化(Rate–distortion optimization,简称RDO)是一种提升视频压缩性能的最优化方法。其原理是对视频的有损(画面质量)与比特率(编码所需的数据量)同时进行最优化,以求达到一个最佳的平衡点。虽然此算法一开始是在视频压缩的编码器中被使用,但也可以用于各种多媒体编码包含影像、视频、音频等等,只要编码时会同时考虑到质量及文件大小皆可使用。
传统视频编码器在做编码决策时,是挑选出影像质量最好的画面。然而只考虑质量的缺点是,会让决策的结果有时相较于质量稍差的选择下,花费了更多数据量但只相对提升了一点点质量。一个常见的例子就是动作补偿,尤其是使用1/4像素精确度的时候。在动作补偿过程中,为宏区块的动作向量增加额外的精确度可能可提升质量,但有些时候提升的质量,并不值得额外花费用来编码高精确度动作向量的数据量。
率失真优化借由作为影像质量的衡量方法,解决了上述的问题。数据量会被用比特数乘上拉格朗日乘数来取代。拉格朗日乘数代表了在某种程度范围的影像质量下,比特的花费与影像质量之间的关系。以数学式表示:
其中
为了最大化峰值信噪比的视频画值衡量,有损部分通常使用均方差做计算。
现行的视频压缩编解码器中,率失真优化需要将每一块视频画面的区块,经由熵编码器运算来衡量实际的比特花费,而此计算是复杂的。例如在MPEG的许多编解码器标准中,完整的计算流程包含了离散余弦变换、量化以及熵编码,需全部运算完才能得到实际的比特花费。因此率失真优化会较大部分其他的衡量方法来得慢,譬如绝对值差和(英语:sum of absolute differences)(SAD)和转换后绝对值差和(英语:sum of absolute transformed differences)(SATD)。因此率失真优化通常只在动作补偿的最后一个步骤才会被使用,像是在H.264/AVC中最后需要对各种分割模式下决定的时候。