位元率-失真最佳化

位元率-失真最佳化（Rate–distortion optimization，簡稱RDO）是一種提升視訊壓縮效能的最佳化方法。其原理是對視訊的失真（畫面品質）與位元率（編碼所需的資料量）同時進行最佳化，以求達到一個最佳的平衡點。雖然此演算法一開始是在視訊壓縮的編碼器中被使用，但也可以用於各種多媒體編碼包含影像、視訊、音訊等等，只要編碼時會同時考慮到品質及檔案大小皆可使用。

背景
傳統視訊編碼器在做編碼決策時，是挑選出影像品質最好的畫面。然而只考慮品質的缺點是，會讓決策的結果有時相較於品質稍差的選擇下，花費了更多資料量但只相對提升了一點點品質。一個常見的例子就是動作補償，尤其是使用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
  H.264編碼器
 Microsoft VC-1編碼器
  SD MPEG-2 EN8100
  HD MPEG-4 EN8190
  SD & HD MPEG-4 iPlex
 Theora 1.1-alpha1 and later（the "Thusnelda" branch）
 x264 H.264編碼器
 Xvid 編碼器
 H.264/AVC標準參考軟體JM（Joint Model）
 H.265/HEVC標準參考軟體HM（HEVC Test Model）

參見
影像質量
壓縮比

參考資料

影像编解码器
最优化算法
數學最佳化
图像处理
编解码器
視頻壓縮技術