2013年9月18日 星期三

( 五 ) 重點筆記 part1 - IVTC(InVerse TeleCine)[2013/9/25更新]

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的影片。
舉例的過程稱為3:2 pulldown(俗名: 5爛2),做過3:2 pulldown的24fps影像就變成30fps的了

24fps的源就是通過上述方式轉換為30fps製成DVD或是在HDTV播出
因此在rip過程中要做IVTC才能還原原本的幀率
所以才需要透過Field Match與Decimate來還原成原本的影像,在電腦顯示器或液晶電視看起來才不會像這樣
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)

  1.   TIVTC
    •  LoadPlugin("TIVTC.dll")
    •  tfm(order=-1).tdecimate(mode=1) //詳細參數自行選用
  2.  Yadif
    • Load_Stdcall_Plugin("yadif.dll")
    • Yadif(order=1)

濾鏡使用(VS)

  1. 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功能

沒有留言:

張貼留言