位元率-失真最佳化
此條目需要精通或熟悉相關主題的編者參與及協助編輯。 (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.