位元率-失真最佳化

位元率-失真最佳化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.