Senior Member
您的住址: El's room
文章: 1,046
|
XviD 的 VHQ 功能做的第二件事,就是當確定好了 Macroblock 的壓縮模式之後,我們可能會找到有很多位置的誤差都相同。
因為 SAD 找出來的誤差經過量化以後,較小的誤差值會被量化為 0。
如果 quantizer 很高的話,那麼就有可能誤差都被量化為 0,這個方塊就不需要 coded,記錄誤差值了,只需要記錄 MV 即可。
而當使用次像檢索的時候,通常鄰近周圍位置的誤差會很接近,經過量化之後,就可能有很多位置的誤差結果都變成 0,那麼我們就從這些誤差都是 0 的位置裡面,找一個 MV 差值最小的位置,也就是最接近預測的 MV 來使用,這樣不是就可以更進一步的減少記錄 MV 所需的 bit 數了嗎?
所以 XviD 的 VHQ 模式的 2~4 選項,就是在多做這個額外的最小 MV 搜尋,搜尋範圍由 "2 - Limited Search" 到 "4 - Wide Search" 增大,範圍越大找到越小 MV 的機會越高,但是所花的時間越長。
但是,這個額外的搜尋可以保證找出來的參考位置所需花費的總 bit 數最少,壓出來的檔案會最小,但是 PSNR,也就是畫質卻會降低喔!!
為什麼呢?
因為當 Macroblock 不記錄誤差值,not coded 的時候,會直接顯示 MV 所指向的參考畫面中的那一個方塊,而不需要再作動作補償,補上差值(MC)。
那麼和原本方塊誤差最小的方塊應該是哪一個呢?
是我們原先用 SAD 找出來的那一個。
不過後來我們又發現附近有其他位置因為 "經過量化" 以後,所需記錄的誤差 bit 數也變為 0,所以我們又改找其他 "量化後誤差為 0",而 MV 較小的位置,使壓出來的 bit 數更少。
但是這樣卻會偏離了我們原先所找出來的最佳位置。
其他 MV 較小的位置,其原本的 SAD 誤差是比較大的,所以顯示的時候直接拿這個誤差比較大的方塊來顯示,而不是我們原先用 SAD 所找到的誤差最小的方塊,這樣畫質就會下降囉。
不知道這樣解釋好不好懂 ^^;
其實不用理解這麼深入,總之:
VHQ 模式 1 一定可以縮小檔案,同時提高品質。
VHQ 模式 2~4 固定品質(quantizer)壓縮,可以讓檔案更小,但是品質(PSNR)卻會下降。
使用 quality/2-pass 模式壓縮時,VHQ 2~4 通常能取得較好的檔案大小和 PSNR 比。
==
|