位元率-失真最佳化
此條目需要精通或熟悉相关主题的编者参与及协助编辑。 (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.