為了把之前拿來練習的東西清一清
又開始在弄DVD轉h.264了

不過有時候會忘了畫面裁切與比例調整問題
白天爬PCDVD好慢
乾脆來備份一下參考資料好了

由於只是方便自己參考
所以有技術問題請盡量別問我 XD


文章來源
以下轉貼內文(雖然內容也是轉來的XD)



PS: 原作者為Silky
=======================================
這些是 DVD2AVI 的作者 jackei 研究出來的,如果有錯,也是我的理解有誤,和 DVD2AVI 的作者無關。

為什麼直接 resize 是錯的呢?因為根據 ITU-R BT.601,取樣的時候長寬的取樣比例不是 1:1,
PAR(Pixel Aspect Ratio)不是 square pixel,正方形的 pixel,而是長方形的 pixel。
NTSC 的 PAR 是 10:11,也就是說如果橫軸每隔 1cm 取樣一點,縱軸就是每隔 1.1cm 取樣一點,
取樣的間距是 1:1.1 = 10:11。
橫軸取樣的間距比較短,也就是取樣的次數比較密集,也就是取樣出來的點數會比較多。
假設原始影像是 PAR 1:1 [640x480] 的圖形,經過 ITU-R BT.601 的建議重新取樣後,
解析度會變成 PAR 10:11 [704x480](高度 480 不變,長度變為原本的 1.1 倍,
640*1.1=704,橫軸的點數變多),而不是 720x480。
所以 NTSC PAR 10:11 [720x480] 的 DVD 要 resize 到 PAR 1:1 [640x480],
要左右共砍 16 個點,變成 704x480 再 resize 到 640x480 才會正確。

不知道這樣解釋容易了解嗎? ^^;
公式是
PAR = DAR * (水平解析度/垂直解析度)

DAR 是 Display Aspect Ratio,譬如說電視是 4:3
NTSC 的 PAR 是 10:11,所以
4/3 = 10/11 * 704/480

要從 704x480 resize 到 640x480/512x384... 才會得到正確的 DAR 4:3 的比例。

而 PAL 的 PAR 則是 59:54
4/3 = 59/54 * 702.91/576

所以要先截邊變成 702.91,再 resize 到 640x480/512x384... 才會得到正確的 DAR 4:3 的比例。

根據 CCIR601(ITU-R BT.601),類比影像轉為數位時(由電影膠片轉為數位格式,如 D1),
由於取樣的長寬間距(Sample Aspect Ratio/SAR or Pixel Aspect Ratio/PAR)不一樣,
假設 NTSC 是橫軸每 1cm 取樣一點,縱軸便是每 1.1cm 取樣一點,取樣的長寬間距不一樣,
不是 1:1(square pixel),而是 1:1.1(non-square pixel),所以影像在電腦上看是變形的。
由於橫軸的取樣間距短,取樣次數較頻繁,所以取樣出來的點比較多。
NTSC PAR 1:1.1 [704x480] 的影像(變形的)其實等於 NTSC PAR 1:1 [640x480](4:3) 的影像。
704/1.1 = 640
或者反過來看,縱軸點數一樣多(480),橫軸 PAR 1:1.1 的點數便要比 PAR 1:1 的多出 1.1 倍
640*1.1 = 704

所以我們拿到 NTSC 的 DVD,規格是 PAR 1:1.1 [720x480],要 resize 到 640x480,
或其他 4:3 的比例,直接從 720x480 -> 640x480 是錯誤的,必須要左右截邊變成 704x480,
再 resize 到 640x480,這樣比例才會正確。
因為 PAR 1:1 [640x480] 的畫面,對應的 PAR 1:1.1 畫面大小是 704x480,
而非 720x480。

同樣的道理 PAL 的 PAR 是 59:54,假設橫軸每 5.9 的單位長度取樣一點,
縱軸便是每 5.4 的單位長度取樣一點,橫軸的取樣間距較長,取樣次數較稀少,
取樣出來的點比較少。
所以 PAL PAR 59:54 [702.91x576] 的影像其實等於 PAL 1:1 [768x576](4:3) 的影像。
702.91/(54/59) = 768
或者反過來看,縱軸點數一樣多(576),橫軸 PAR 59:54 的點數便要比 PAR 1:1 的少 54/59 倍
768*(54/59) = 702.91

所以我們拿到 PAL 的 DVD,要 resize 到 768x576/640x480 或其他 4:3 的比例,
直接從 720x576 -> 768x576/640x480 是錯誤的,必須要左右先截邊變成 702.91x576,
再 resize 到 768x576/640x480 ...。

702.91 是近似值,實際上的數字應該是 702+54/59 = 702.915254237288135593220338983050847...
為了數位化處理方便,使用 704 來代替。
也就是 720x576 削邊-> 704x576 -> 640x480 ... etc,16:9 也是先削邊 704x576 -> 640x360 ...。
做 PAL VCD 的時候,VCD 的 PAR 和 DVD 相同,所以要削邊 704x576 兩邊等倍縮小 1/2 => 352x288。

那麼 NTSC 10:11/PAL 59:54 這個 PAR 是怎麼算來的呢?
因為要整合 NTSC 和 PAL 系統,減少硬體設計成本,所以 ITU-R BT.601 把取樣頻率定為 13.5MHz,
然而對 525-line NTSC (ANSI/SMPTE 170M-1994) 的類比訊號,要取樣成 1:1 的 square Pixel,
根據 SMPTE 244M "industry standard" square pixel,取樣頻率必須是 12 + 27/99 MHz。
所以可以得到 525-line Rec.601 NTSC 的 PAR 是 13.5 / (12 + 27/99) = 11/10 (y/x)

而對 625-line PAL (Rec. ITU-R BT.470-3) 的類比訊號,要取樣成 1:1 的 square Pixel,
取樣頻率必須是 14.75MHz,所以可以得到 625-line Rec.601 PAR = 13.5 / (14.75) = 54/59 (y/x)

其他詳細資料,可以參考以下兩個網址:
http://www.mir.com/DMG/aspect.html
http://www.lurkertech.com/lg/pixelaspect.html

或者是看 DVD2AVI 的作者 jackei 詳盡的解說:
http://bbs.irradiance.net/txtVersio...ThreadList.html
http://bbs.irradiance.net/txtVersio...ThreadList.html

然而也許有人會注意到,根據這個網頁
http://www.uwasa.fi/~f76998/video/conversion/

NTSC 的 PAR 竟然不是 10/11 (x/y),而是 72/79;PAL 的 PAR 竟然不是 59/54,而是 128/117!
這又是怎麼回事呢?
這就是令人頭痛的地方 ^^;

下面的內容有點複雜,我沒有把握能夠解說得很簡單清楚明瞭,
建議最好仔細閱讀完以上提供的網頁再往下看。

前面計算 PAR 的時候,我們是拿 13.5MHz 直接去除 "industry standard" square pixel 的取樣頻率,
來求得 NTSC 和 PAL 的 PAR。但是實際上這些 "industry standard" square pixel 的取樣頻率,
取樣出來的仍然不是 1:1 的 square pixel,只是很接近 square pixel,所以直接這樣除,
得到的 PAR 並不精確。

精確的計算方法:
625/50 PAL 每一條掃瞄線的取樣時間為 64μs,實際上用來記錄資料的時間只有 52μs,
其他時間用來同步和等待掃瞄線歸位,所以要記錄 1:1 [768x576],取樣頻率應該是
52μs * (14 + 10/13)MHz = 768

一條掃瞄線要 768 點(取樣 768 次),取樣時間 52μs,反算回來取樣頻率就得要是
14 + 10/13 MHz,而不是 "industry standard" 的 14.75MHz。

525/59.94 NTSC 每一條掃瞄線的取樣時間為 63+5/9 (63.555...) μs,
實際上用來記錄資料的時間只有 52+2/3 (52.666...) μs,其他時間用來同步和等待掃瞄線歸位,
所以要記錄 1:1 [640x480](648x486),取樣頻率應該是
52+2/3μs * (12 + 24/79)MHz = 640(648)

而不是 SMPTE 244M "industry standard" square pixel 的 12 + 27/99 MHz。

ps. 640x480 是 648x486 截邊的結果,因為這樣比較好處理(16 的整數倍)。

所以根據正確的紀錄時間(PAL 52μs/NTSC 52+2/3μs)來推算 PAR,得到的結果就是
NTSC 13.5/(12 + 24/79) = 79/72 (y/x),PAL 13.5/(14 + 10/13) = 117/128 (y/x)

頭開始痛了嗎? ^^;
本來我們都已經習慣左右截邊 -> 704 之後再 resize,這也是一般看到的作法,
大家都是這麼作的,結果根據這個算法,NTSC PAR 變成是 72/79,
本來是
640 * 11/10 = 640*1.1 = 704

現在變成
640 * 79/72 = 702 + 2/9

要截邊為 702 + 2/9 再 resize 為 640x480 才是正確的。

不過該網頁的作者也建議,還是使用 704 比較好,704 這個數字剛好可以被 16 整除,
704 這個數字剛好是 VCD 352 的兩倍,704 剛好是 VCD 可以存放的靜態圖片的最大解析度,
704 剛好是 ATSC 數位電視的標準解析度...
有這麼多的 "巧合",所以我們還是選擇削邊為 704 來處理。
DVD2AVI 的作者也是建議,還是以 704 來處理。

而 PAL 就很有趣了,因為 PAL 真正的 PAR 是 128/117,所以
768 * 117/128 = 702

剛剛好等於 702 一點都不差!
所以也許 PAL DVD 要 resize 為 PAR 1:1 [640x480/512x384 ...],
截邊為 702 之後再 resize,會比 704 更好?

用 GKnot 算的幾組正確的比例(GKnot 的作者因為有 jackei 大大告訴他正確的作法,
所以變成是唯一能算正確比例的軟體,要勾選 Option 設定底下的 "Follow ITU-R BT.601 Standard"
GKnot 便可以遵照 ITU-R BT.601 的建議,做正確的 resize)

調整時要讓 GKnot 的 Aspect Error 這個項目顯示的百分比為 0%,水平解析度必須能被 32 整除,
垂直解析度必須能被 16 整除。

NTSC 4:3
720x480 -> 704x480 -> 640x480 /Aspect Ratio 1.333(4:3), Aspect Error 0%
720x480 -> 704x480 -> 576x432 /Aspect Ratio 1.333(4:3), Aspect Error 0%
720x480 -> 704x480 -> 512x384 /Aspect Ratio 1.333(4:3), Aspect Error 0%
720x480 -> 704x480 -> 448x336 /Aspect Ratio 1.333(4:3), Aspect Error 0%
720x480 -> 704x480 -> 384x288 /Aspect Ratio 1.333(4:3), Aspect Error 0%
720x480 -> 704x480 -> 320x240 /Aspect Ratio 1.333(4:3), Aspect Error 0%
.....

如果電影比例大於 4:3,上下會多出黑邊,此時就把黑邊削掉就好,
只要注意高度必須能被 16 整除。

NTSC 16:9(anamorphic)
720x480 -> 704x480 -> 704x396 /Aspect Ratio 1.778(16:9), Aspect Error 0%

注意高度 396 不能被 16 整除,所以 resize 完以後,要上下多補 2 個 pixel 的黑邊,
補成 704x400 再送進去壓縮。

720x480 -> 704x480 -> 640x360 /Aspect Ratio 1.778(16:9), Aspect Error 0%
360 -> 368
720x480 -> 704x480 -> 576x324 /Aspect Ratio 1.778(16:9), Aspect Error 0%
324 -> 336
720x480 -> 704x480 -> 512x288 /Aspect Ratio 1.778(16:9), Aspect Error 0%
720x480 -> 704x480 -> 480x270 /Aspect Ratio 1.778(16:9), Aspect Error 0%
270 -> 272
720x480 -> 704x480 -> 448x252 /Aspect Ratio 1.778(16:9), Aspect Error 0%
252 -> 256
720x480 -> 704x480 -> 384x216 /Aspect Ratio 1.778(16:9), Aspect Error 0%
216 -> 224
.....

其他還有很多組可以自行利用 GKnot 計算。
(算 16:9(anamorphic) 的時候先把 H-Modul = 16(高度必須能被 16 整除的限制)改成 1,
這樣的彈性比較大,會有比較多組可以選擇,等算好 resize 後的大小後,如果高度不能被 16 整除,
再自行考慮要多補,或者是削掉多少黑邊)
=======================================

xhuang06 發表在 痞客邦 PIXNET 留言(0) 人氣()