基本介紹
簡介,背景,運作原理,支持的編碼器,
簡介
其原理是對視頻的有損(畫面品質)與比特率(編碼所需的數據量)同時進行最最佳化,以求達到一個最佳的平衡點。
雖然此算法一開始是在視頻壓縮的編碼器中被使用,但也可以用於各種多媒體編碼包含視頻、視頻、音頻等等,只要編碼時會同時考慮到品質及檔案大小皆可使用。
背景
傳統視頻編碼器在做編碼決策時,是挑選出視頻品質最好的畫面。
然而只考慮品質的缺點是,會讓決策的結果有時相較於品質稍差的選擇下,花費了更多數據量但只相對提升了一點點品質。
一個常見的例子就是動作補償,尤其是使用1/4像素精確度的時候。在動作補償過程中,為宏塊的動作向量增加額外的精確度可能可提升品質,但有些時候提升的品質,並不值得額外花費用來編碼高精確度動作向量的數據量。
運作原理
率失真最佳化藉由作為視頻品質的衡量方法,解決了上述的問題。數據量會被用比特數乘上拉格朗日乘數來取代。
拉格朗日乘數代表了在某種程度範圍的視頻品質下,比特的花費與視頻品質之間的關係。
以數學式表示:
其中
- J:最終的衡量數據,也被稱為RD cost(rate-distortion cost)
- D:有損的衡量數據
- :拉格朗日乘數
- R:數據量的衡量數據
現行的視頻壓縮編解碼器中,率失真最佳化需要將每一塊視頻畫面的區塊,經由熵編碼器運算來衡量實際的比特花費,而此計算是複雜的。
例如在MPEG的許多編解碼器標準中,完整的計算流程包含了離散餘弦變換、量化以及熵編碼,需全部運算完才能得到實際的比特花費。因此率失真最佳化會較大部分其他區塊比對的衡量方法來得慢,譬如絕對值差和(SAD)和轉換後絕對值差和(SATD)。
因此率失真最佳化通常只在動作補償的最後一個步驟才會被使用,像是在H.264/AVC中最後需要對各種分區模式下決定的時候。
支持的編碼器
- AtemeH.264編碼器
- 草谷ViBE編碼器(SD & HD MPEG-2/MPEG-4)
- Harmonic Electra 8000編碼器(SD & HD MPEG-2/MPEG-4)
- libavcodec
- MainConceptH.264編碼器
- MicrosoftVC-1編碼器
- TANDBERG TelevisionSD MPEG-2 EN8100
- TANDBERG TelevisionHD MPEG-4 EN8190
- TANDBERG TelevisionSD & HD MPEG-4 iPlex
- Theora1.1-alpha1 and later(the "Thusnelda" branch)
- x264H.264編碼器
- XvidMPEG-4 ASP編碼器
- H.264/AVC標準引用軟體JM(Joint Model)
- H.265/HEVC標準引用軟體HM(HEVC Test Model)