IVTC(InVerse TeleCine)
通過場匹配(Field Match)和刪除重複幀(Decimate),將經過膠卷過帶(Telecine)的視訊信號消除交錯並恢復到原始幀率的過程。Telecine
為了將ivtc-Film[23.976(fps)]轉換到NTSC電視[29.97(fps)]上能夠正常播放的格式例:
=>從film源取出4幀, 將每一幀拆成TopField與BottomField兩個場
第1幀 > Frame1_top + Frame1_bottom
第2幀 > Frame2_top + Frame2_bottom
第3幀 > Frame3_top + Frame3_bottom
第4幀 > Frame4_top + Frame4_bottom
於是我們就得到了8個場
再來透過頂場在先(TFF,top field first)的方法將這8個場進行重複輸出和排列組合
第1幀 > Frame1_top | Frame1_bottom
第2幀 > Frame2_top | Frame2_bottom
第3幀 > Frame2_top' | Frame3_bottom
第4幀 > Frame3_top | Frame4_bottom'
第5幀 > Frame4_top | Frame4_bottom
[其中Frame2_top = Frame2_top',Frame4_bottom = Frame4_bottom']
將原本的4個幀重新組合成5個幀
接下來的24幀中每4幀都如此組合,24 * 5 / 4 = 30,就成了30fps的影片。
再來透過頂場在先(TFF,top field first)的方法將這8個場進行重複輸出和排列組合
第1幀 > Frame1_top | Frame1_bottom
第2幀 > Frame2_top | Frame2_bottom
第3幀 > Frame2_top' | Frame3_bottom
第4幀 > Frame3_top | Frame4_bottom'
第5幀 > Frame4_top | Frame4_bottom
[其中Frame2_top = Frame2_top',Frame4_bottom = Frame4_bottom']
將原本的4個幀重新組合成5個幀
接下來的24幀中每4幀都如此組合,24 * 5 / 4 = 30,就成了30fps的影片。
舉例的過程稱為3:2 pulldown(俗名: 5爛2),做過3:2 pulldown的24fps影像就變成30fps的了
24fps的源就是通過上述方式轉換為30fps製成DVD或是在HDTV播出
因此在rip過程中要做IVTC才能還原原本的幀率
24fps的源就是通過上述方式轉換為30fps製成DVD或是在HDTV播出
因此在rip過程中要做IVTC才能還原原本的幀率
所以才需要透過Field Match與Decimate來還原成原本的影像,在電腦顯示器或液晶電視看起來才不會像這樣
http://i.imgur.com/HZhk5Gb.png
這種情形又稱為梳狀波紋
正常:
http://i.imgur.com/J2ZVYRT.png
首先以1t為準,分別和1b、2b進行比較
從中選擇交錯程度較低的組合輸出,然後重複這個過程
Frame No.1=>
0# 1t 1b ........ 輸出 => [1t 1b]
1# - 2b
Frame No.2=>
0# - 1b
1# 2t 2b ........ 輸出 => [2t 2b]
2# - 3b
Frame No.3=>
1# - 2b ........
2# 2t' 3b ........ 輸出 => [2t' 2b]
3# - 4b'
Frame No.4=>
2# - 3b ........
3# 3t 4b' ........ 輸出 => [3t 3b]
4# - 4b
Frame No.5=>
3# - 4b'
4# 4t 4b ........ 輸出[4t 4b]或[4t 4b']
5# - 5b
http://i.imgur.com/HZhk5Gb.png
這種情形又稱為梳狀波紋
正常:
http://i.imgur.com/J2ZVYRT.png
Field Match(場匹配)
通過將場重新匹配、組合的方式,可以將視頻恢復至無交錯狀態。通常做法如下。首先以1t為準,分別和1b、2b進行比較
從中選擇交錯程度較低的組合輸出,然後重複這個過程
Frame No.1=>
0# 1t 1b ........ 輸出 => [1t 1b]
1# - 2b
Frame No.2=>
0# - 1b
1# 2t 2b ........ 輸出 => [2t 2b]
2# - 3b
Frame No.3=>
1# - 2b ........
2# 2t' 3b ........ 輸出 => [2t' 2b]
3# - 4b'
Frame No.4=>
2# - 3b ........
3# 3t 4b' ........ 輸出 => [3t 3b]
4# - 4b
Frame No.5=>
3# - 4b'
4# 4t 4b ........ 輸出[4t 4b]或[4t 4b']
5# - 5b
Decimate(刪除重複幀)
經由Field Match操作,通過將場重新拆分、組合,已經將影像回復成如下狀態:01#[1t 1b]
02#[2t 2b]
03#[2t' 2b]
04#[3t 3b]
05#[4t 4b]
可以看出第2幀第3幀出現了重複,這時需要通過刪除重複幀這個操作,將第2幀或第3幀中的以幀刪除。
重複這個過程,每5幀中刪除1幀:
原本: 5 * 6 = 30(fps)
刪除後: 4 * 6 = 24(fps)
將幀率從30fps恢復為24fps。
至此IVTC過程完成
最常遇到的情況
處裡從HDTV錄製下來的源時、格式通常為29.976fps(NTSC 30000/1001)可是像動画(アニメ/Anime)製作的時候通常是在 24(frames/s)的規格下製作
這時候電視台就會將 24(frames/s) 的訊源 Telecine 到29.976fps
所以在處理HDTV訊源的時候要特別注意
濾鏡使用(AVS)
- TIVTC
- LoadPlugin("TIVTC.dll")
- tfm(order=-1).tdecimate(mode=1) //詳細參數自行選用
- Yadif
- Load_Stdcall_Plugin("yadif.dll")
- Yadif(order=1)
濾鏡使用(VS)
- VS原生VIVTC
- src = core.avs.MPEG2Source(d2v=r"‵完整路徑`", info=3)
- core.std.LoadPlugin(path=r"C:/Python33/Lib/site-packages/VapourSynth/filters/vivtc.dll")
- src = core.vivtc.VFM(src,1)
- src = core.vivtc.VDecimate(src)
- src.set_output()
- #註: 最後可以加上
- #src = core.std.AssumeFPS(src, fpsnum=24000, fpsden=1001)
- #VIVTC研究中
註1:
為了消除由彩色訊號及伴音訊號所產生的圖像干擾,30(frame/s)稍微下調至29.97(frame/s)[30000/1001]
註2:
電影要在PAL的電視上播放,需要做2:2 pulldown。不過沒有NTSC那樣的複雜組合,只是將播放速度加快5%,既把24fps的畫面以25fps播放,聲音也加快5%,保持同步。
(25 / 24 - 1) * 100%[約5%(?)
PAL制式: https://zh.wikipedia.org/wiki/PAL%E5%88%B6%E5%BC%8F
*名詞解釋*
Field Match(場匹配): 比對&組合top field與bottom field,將影像恢復至無交錯狀態。Decimate(刪除重複幀): 透過場匹配後,將重附的Frame刪除
Telecine(膠卷過帶): 為了將電影(24fps)轉換到NTSC電視(30fps)上能夠正常播放的格式
頂場在先(TFF,top field first): 相對底場在先(BFF,bottom field first)的方法,在組合上的規則不同(研究中...)
文章更新
2013/9/25更新:- 排版(由於是從我的facebook筆記複製過來的)
- 內文精簡
- 新增AVS/VS濾鏡範例腳本
- 不建議使用x264.exe內建的IVTC功能
沒有留言:
張貼留言