位元率-失真最佳化

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

背景

傳統視訊編碼器在做編碼決策時,是挑選出影像品質最好的畫面。然而只考慮品質的缺點是,會讓決策的結果有時相較於品質稍差的選擇下,花費了更多資料量但只相對提升了一點點品質。一個常見的例子就是動作補償[1],尤其是使用1/4像素精確度的時候。在動作補償過程中,為大區塊的動作向量增加額外的精確度可能可提升品質,但有些時候提升的品質,並不值得額外花費用來編碼高精確度動作向量的資料量。

運作原理

位元率-失真最佳化藉由作為影像品質的衡量方法,解決了上述的問題。資料量會被用位元數乘上拉格朗日乘數來取代。拉格朗日乘數代表了在某種程度範圍的影像品質下,位元的花費與影像品質之間的關係。以數學式表示:

 

其中

 :最終的衡量數據,也被稱為RD cost(rate-distortion cost)
 :失真的衡量數據
 :拉格朗日乘數
 :資料量的衡量數據

為了最大化峰值信噪比的視訊畫值衡量,失真部分通常使用均方差做計算。

現行的視訊壓縮編解碼器中,位元率-失真最佳化需要將每一塊視訊畫面的區塊,經由熵編碼器運算來衡量實際的位元花費,而此計算是複雜的。例如在MPEG的許多編解碼器標準中,完整的計算流程包含了離散餘弦變換量化以及熵編碼,需全部運算完才能得到實際的位元花費。因此位元率-失真最佳化會較大部分其他區塊比對的衡量方法來得慢,譬如絕對值差和英語sum of absolute differences(SAD)和轉換後絕對值差和英語sum of absolute transformed differences(SATD)。因此位元率-失真最佳化通常只在動作補償的最後一個步驟才會被使用,像是在H.264/AVC中最後需要對各種分割模式下決定的時候。

支援的編碼器

參見

參考資料

  1. ^ 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.