史萊姆論壇

返回   史萊姆論壇 > 教學文件資料庫 > 多媒體影音轉檔燒錄技術文件
忘記密碼?
論壇說明 標記討論區已讀

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


 
 
主題工具 顯示模式
舊 2005-04-30, 08:02 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 視瀕知識系列

B 畫格在 MPEG-4 中有四種參考模式,如果是同時參考前後的畫面壓縮,
則記錄的是 和 (前畫面 pixel 值 + 後畫面 pixel 值)/2 的差值,
也就是 和 「前後畫面的平均」的差值。
所以記錄的差值個數和 P 畫格一樣,只有一個,沒有增加。

而因為 B 畫格位於前後畫面的中間,以「前後畫面的平均」,也就是「前後畫面的中間值」
來作為預測數值(預測 B 畫格的 pixel 數值為多少?如果有誤差,再記錄差值),
這樣這個預測數值會比單獨使用前一個畫面來預測,更接近目前真正的 B 畫格的數值,
可想而知,如此所需要記錄的差值就會很小甚至可以根本不用記錄,
所以便可以省下很多的 bits,提高度壓縮率。

例如

亮度變化 ->
I B P
7 8 9

如果 B 只參考前一個畫面壓縮,則需記錄差值 1。
如果以 (I + P)/2 壓縮,則差值為 0,不需記錄差值。
(雖然要記錄兩個向量,不過向量也可以再做進一步預測壓縮,總的來說,
還是會比單獨參考前一個畫面壓縮來得小很多)

如果畫面不是這樣變化怎麼辦?通常來講畫面都會是這樣變化,
如果不是這樣變化我們就不使用 B 畫格
就算變化不是如此規則,換個方式想,B 畫格可以參考的畫面還是比 P 畫格多,
再怎麼找,也還是 B 畫格可以找到誤差更小的方塊來使用的機率大
(因為可以選項、參考的對象較多),所以 B 畫格還是比 P 畫格的壓縮率來得高。
(而且高很多,差距非常大)

除了壓縮率以外,B 畫格對畫質的影響.....
是有的,因為 B 畫格這種參考前後畫面的特性,等於有內插(interpolation)的效果,所以可以減少噪訊。


MPEG-4 中的 B 畫格,也是非常具有威力的,除了以前的三種參考模式,
還有 Direct Mode,連向量的紀錄都省了。
雖然 MPEG-4 之中有 4MV 的功能,可以記錄四個向量,不過編碼器在壓縮的時候會判斷,
到底是使用 4MV 壓出來的結果小,還是使用傳統的方法壓出來的結果小?
如果使用傳統的方法壓出來的結果小,便使用傳統的方法記錄,
如果使用 4MV 壓出來的結果小,才使用 4MV 來記錄。
(ps. 4MV 不會用在 backward 預測)

您可以觀察 VirtualDub 壓縮時畫面上顯示的藍線,您會發現藍線和藍線之間通常會有很短的
藍線插在中間,造成空隙,而且差距很大,這個就是夾在 P 之間的 B 在發揮壓縮威力
如果是用 DivX 5 更明顯,因為 DivX 5 只能夠使用 IBPBPBPB... 這種一個 B 接一個 P 的形式,
所以畫面上的藍線就是「一長一短、一長一短」這樣排列。

..
__________________
http://bbsimg.qianlong.com/upload/01/08/29/68/1082968_1136014649812.gif
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
舊 2005-04-30, 08:03 PM   #2 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

Crop&Resize系列

resize 的錯誤一般看不出來,如同我上面轉貼的那個問答中所講的:
Fortunately, even if you had used wrong methods for scaling/resampling the image, the difference between the correct aspect ratio and a wrong aspect ratio is often small enough to go unnoticed unless you really start looking for it.
大致上的意思:
幸運的,雖然你用了錯誤的 resize 方法,不過這個正確的比例和錯誤的比例之間的差距,
通常是很小的而不會被注意到,除非你開始真的去觀察、注意這個錯誤。

這個錯誤大概會造成 ~2.5% 的比例錯誤。
有人做過實驗,用 DV 去拍圓球,使用錯誤的 resize 法,會讓正圓的球體變成橢圓。
PowerDVD, WinDVD 等這些軟體的 DVD Player 所做的 resize 也都是錯誤的。
(WinDVD 新版的已經瞭解到這個問題,開始改進)
所以大家在電腦上看了那麼久的 DVD,比例都是錯的
不過如上述所講的,幸運的,一般沒有注意的話是看不出來的。
不過一旦發現了以後,就會開始注意到這個錯誤了

為什麼直接 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 的比例。

我沒有研究過 PAL 的算法,剛剛用 GKnot 幫忙算了幾組正確的比例(要讓 Aspect Error 這個項目
顯示的百分比為 0%,水準解析度必須能被 32 整除,垂直分辦率必須能被 16 整除),
得到下面的結果(因為無法截邊為 702.91,GKnot 是取整數 702):
PAL 4:3
720x576 -> 702x576 -> 704x528 /Aspect Ratio 1.333(4:3), Aspect Error 0%

注意,雖然此時 GKnot 顯示 W-Zoom(水準放大)為 100%(沒有放大),
但是實際上水準已經由 702 放大到 704,只是放大的幅度太小所以忽略。
我沒有實際壓過,不知道這樣到底好不好。

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

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


PAL 16:9(anamorphic,原始影片上下無黑邊,變形畫面,完全填滿整個 720x576 的畫面)
720x576 -> 702x576 -> 704x396 /Aspect Ratio 1.778(16:9), Aspect Error 0%

注意,雖然此時 GKnot 顯示 W-Zoom(水準放大)為 100%(沒有放大),
但是實際上水準已經由 702 放大到 704,只是放大的幅度太小所以忽略。
注意高度 396 不能被 16 整除,所以 resize 完以後,要上下多補 2 個 pixel 的黑邊,
補成 704x400 再送進去壓縮。
如果電影比例小於 16:9,上下會多出黑邊,此時就把黑邊削掉就好,
只要注意高度必須能被 16 整除。

720x576 -> 702x576 -> 640x360 /Aspect Ratio 1.778(16:9), Aspect Error 0%

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

720x576 -> 702x576 -> 576x324 /Aspect Ratio 1.778(16:9), Aspect Error 0%

324 不能被 16 整除,補為 576x336。

720x576 -> 702x576 -> 512x288 /Aspect Ratio 1.778(16:9), Aspect Error 0%
720x576 -> 702x576 -> 480x270 /Aspect Ratio 1.778(16:9), Aspect Error 0%
270 ->補為 272

720x576 -> 702x576 -> 448x252 /Aspect Ratio 1.778(16:9), Aspect Error 0%
252 -> 256

720x576 -> 702x576 -> 384x216 /Aspect Ratio 1.778(16:9), Aspect Error 0%
216 -> 224
.....

其它還有很多組可以自行利用 GKnot 計算。
(算 16:9(anamorphic) 的時候先把 H-Modul = 16(高度必須能被 16 整除的限制)改成 1,
這樣的彈性比較大,會有比較多組可以選項,等算好 resize 後的大小後,如果高度不能被 16 整除,
再自行考慮要多補,或者是削掉多少黑邊)
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
舊 2005-04-30, 08:14 PM   #3 (permalink)
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設

tmpgenc的手動IVTC一直是個難以掌握的東西,我坦白我一直對這個東西一知半解,今天苦幹了一個晚上,似乎是想通了,現在自我總結一下。。

大家都知道tmpgenc在IVTC的時候會把每個畫格分成a, b兩部分,我以前一直認為是1 frame -> 2 fields,所以總是搞不清楚為什麼有些fields會是interlaced,想了很久,終於發現這些仍然是frames。但是為什麼要拆分成兩個畫面呢?拆分的時候是按照什麼原理呢?

sswroom和silkysama提到過要在10畫格裡挑4畫格來用,先假設這10畫格的來源是原來的5個畫面,正好符合5->4,也就是30->24的處理方法,所以推測應該可以成立。
我們來看看telecine的原理圖(從doom9拿的圖,不是我畫的):

http://net1999.net/d4e/tc.gif

這個圖在說什麼相信大家都知道了,我用紅色箭頭來表示一下tmpg是怎麼拆分圖片:

http://net1999.net/d4e/tc1.gif

tmpg按照field order(這兒是top first),把這些場重新排列成新的畫格:
11,12,22,22,23,33,34,44,44,45。。。
相同數位的代表場一致,沒有拉絲,數位不同代表場有差別,會出現拉絲
按照tmpgenc的說法,1 代表保留此畫格,0 代表不輸出此畫格
所以我們可以得出這樣的pattern

1011010110

就是說10畫格要去掉4畫格
但是這樣還是不對,因為原始畫格數只有5畫格,怎麼會保留了6畫格呢?
我們再看看這串數位
11,12,22,22,23,33,34,44,44,45

紅色部位重複了,22和44都可以去掉一個,那麼現在的pattern是
1010010100

10畫格去掉6畫格,保留4畫格。
原來的那串排列組合按照這個pattern來取捨的話,剩下的就是

11,12,22,22,23,33,34,44,44,45 綠色的部分去掉

11,22,33,44

順利還原
研究這個的原因是因為avex的dvd mv太倒胃口,24p+30i 剪輯得亂糟糟,逼著我做120fps。
fpschk分析d2v的時候24p部分還算勉強正確,30i 的地方誤刪是肯定的,甚至我用decomb分析後輸出無損avi給fpschk來分析錯誤還是一模一樣。
fpschk+decomb+dec60+avi60,真的不夠完美。

然後只能試大大的tmpgenc方式,24p部分的精確就不用提了,連deinterlace 30i 的時候的完美也不是decomb可以比擬,tmpg實在是超強。。

要是繼續嘗試用tmpg來做120fps的fmp2,別忘了把copy frame也順手做出來,不過象人提到的那種2,3分鍾就做完的境界你暫時是沒有了,5000多個frames,你一個一個慢慢看過來哪個要copy吧
對了可以用鍵盤來快捷操作(我以前純粹用滑鼠, 慢死+累死)

autosetting 後, ctrl + 左右鍵 = 上/下一 被 autosetting 選的畫格, 如果直接 左右鍵 = 直接上下一畫格.

上/下 = deinterlace 的方法, double/odd/even, 選項了其中之一後, ctrl + 上下選項每一類裡的小類, 比如 double adaptation 等等.

這樣就快多了
tmpgenc只接收RGB,VFAPI內部資料傳送是用RGB模式。。
為了對付hybrid才研究的啊。。
dec60和avi60用的是idx文件,這豈不是又回去fpschk+decomb了?

產生TPR後把TPR交給avs來壓縮,你在TMPGEnc做的手工操作等於fpschk+decomb+dec60,然後用TPRRead讀TPR文件得出scripts(類似idx那種說明哪裡應該刪畫格,哪些地方是24p,哪些地方是30i 的文本文件),最後用AVIRead讀入壓縮完的avi,按照這個文本文件來決定哪兒應該插入null畫格,類等於avi60的工作。
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次
 


主題工具
顯示模式

發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 06:00 AM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1