瀏覽單個文章
Shade
Senior Member
 
Shade的大頭照
 

加入日期: Oct 2002
您的住址: El's room
文章: 1,046
引用:
Originally posted by snic
莫非Shade兄是用自訂量化矩陣壓動畫的!?
那可以請Shade兄傳授一下嗎
"動畫用"的 MPEG Quant 量化矩陣是長什麼樣子呢?

這個,因為不同流量,不同訊源,最佳的 MPEG 量化矩陣就會有所不同,我目前也沒有找出一個通用的最佳解。
總之預設矩陣(也就是 Quantization Method 選 MPEG 時用的那一個矩陣)用來壓動畫不太適合,換別的試試看。
例如如果換成 TMPGEnc 的 CG/Animation 矩陣
intra:
08 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32
32 32 32 32 32 32 32 32
inter:
16 16 16 16 16 16 16 16
16 16 16 16 16 16 16 16
16 16 16 16 16 16 16 16
16 16 16 16 16 16 16 16
16 16 16 16 16 16 16 16
16 16 16 16 16 16 16 16
16 16 16 16 16 16 16 16
16 16 16 16 16 16 16 16

量化出來的特性就會很像 H.263,畫面很乾淨,有點模糊,銳利線條周圍的雜訊少,但是容易出現方塊。
因為這個矩陣非常接近 H.263 的量化方式。
H.263 量化
不用量化矩陣,全部 DCT 係數除以同一個量化係數
F[u][v] 是量化前的 DCT 係數
QF[u][v] 是量化後的係數
intra:
QF[u][v]=F[u][v] / 2*quantizer_scale
inter:
QF[u][v]=F[u][v]-quantizer_scale / 4*quantizer_scale

MPEG 量化
DCT 係數分別除以量化矩陣中對應的量化係數
W[u][v] 是量化矩陣中的加權的(Weighting)量化係數
intra:
QF[u][v]=F[u][v]*16 / W[u][v]*2*quantizer_scale
inter:
QF[u][v]=F[u][v]*16 / (W[u][v](+/-)quantizer_scale)*2*quantizer_scale

intra dc(intra 最左上角的係數)則是
QF[0][0]=F[0][0]/dc_scale

dc_scale 會根據 quantizer 做 non-linear scale
代碼:
quantizer_scale(Qp): 1~4      5~8      9~24      25~31
dc_scale Y         :  8       2Qp      Qp+8      2Qp-16
dc_scale C         :  8    (Qp+13)/2   同左      Qp-6


這個解釋起來很複雜.....
總之,換別的矩陣試試看。

那個 CG/Animation 矩陣也不適合用在 XviD 上,我上面只是舉例,這個矩陣壓出來的品質很差,除非流量超高,否則壓出來畫面很慘。而且就算流量超高,這個矩陣因為高頻(右下角)砍得少(除的少),所以壓縮某些訊源時,如果訊源有特殊的雜訊,例如訊源本身已經壓縮過,是 MPEG-2,原本就有一些壓縮瑕疵,再經過這個矩陣量化,用超高流量,也就是低 quantizer 壓縮,會保留部分高頻下來,這些高頻反而會變成一些雜訊,用這個矩陣超高流量壓縮,反而整個畫面都是灰茫茫的一片雜訊。
此時如果降低一點品質(流量),這些雜訊會被削掉,畫面會變乾淨,視覺品質反而提高。
我又扯遠了,總之就是
1. 視情況最佳矩陣會有所不同
2. 就算用同一個矩陣,根據設定的流量,表現也會不同
3. 所以..... 你問我適合動畫的矩陣..... 我也沒辦法肯定的答覆你

非常抱歉 ^^;
引用:
Originally posted by 暴君
我也很好奇
MPEG Quant 量化矩陣是?

就是 Quantization Method 選 Custom MPEG,然後在 Quantization Matrix 設定裡面自訂量化矩陣。
在尚未更改之前,Quantization Matrix 裡面顯示的那個矩陣就是預設的量化矩陣,也就是 Quantization Method 你選 MPEG 時使用的矩陣。
這個矩陣是 MPEG-4 standard 制訂的預設量化矩陣,當使用 "MPEG" 壓縮時,會自動使用這個矩陣量化,VOL Header 不用記錄使用的矩陣資訊,Decoder 端都內建這個矩陣,知道該怎麼解碼。
也就是說
1. 使用預設矩陣,VOL Header 不用額外記錄矩陣資訊,較節省容量(雖然這個資訊所花費的容量很小很小)
2. 如果自訂矩陣,檔案的 VOL Header 就要記錄使用的自訂量化矩陣是什麼樣子,Decoder 才能知道要怎麼解碼
3. 所以使用的矩陣資訊都藏在 VOL Header 裡
舊 2003-11-02, 03:25 PM #46
回應時引用此文章
Shade離線中