TIVTC/TFM

出自NMM Doc
跳至導覽 跳至搜尋

本頁貢獻者:Diseac、dgwxx

概 述
作者 tritical
版本 1.0.5
下載地址 TIVTCv105.zip
分類 Deinterlacers
需求
授權

TFM(int order, int field, int mode, int PP, string ovr, string input, string output, string outputC, bool debug, bool display, int slow, bool mChroma, int cNum, int cthresh, int MI, bool chroma, int blockx, int blocky, int y0, int y1, int mthresh, PClip clip2, string d2v, int ovrDefault, int flags, double scthresh, int micout, int micmatching, string trimIn, int hint, int metric, bool batch, bool ubsco, bool mmsco, int opt)

Description

TFM是TIVTC濾鏡包的組件之一,負責完成IVTC步驟中場匹配的這個步驟。

參數

基本參數

order - 場序(int,整數型)

-1: 自动(使用avisynth内部默认值)
 0: 偶数场先(BFF, bottom field first)
 1: 基数场先(TFF, top field first)
 默认:-1

如果發生極端的低匹配成功率,或者圖像的運動出現不正常的抖動,有可能是場序錯誤。 要確定場順序,需要建立一個不對片源進行任何處理的 AVS 腳本。首先照下面建立一個AVS 腳本來分離TopField:

#调用MPEG2 解码器
LoadPlugin("DGDecode.dll")
#导入片源
mpeg2source("source.d2v")
#进行场分离
AssumeTFF().SeparateFields()

現在,用VirtualDubMod(簡稱VDM,下同)打開上面AVS 腳本,然後找到一段包含運動物體的影片並步進向前(一幀一幀地向前),注意運動物體是一直朝它該去的方向運動,還是在運動過程中突然向回運動。比如,如果場順序錯了,本來應該一直朝右側運動的物體在運動過程中突然向左跳一下,然後繼續朝右運動;如果場順序正確,那麼它會平穩的一直向右運動。 如果使用 AssumeTFF().SeparateFields()的時候物體運動正常,則該段影片的場順序是TopField 先,需要設定order=1;如果運動不正常,則是偶數場先,需要設定order=0。如果你想進一步確認是否是偶數場先,使用AssumeBFF().SeparateFields()。 在部分用Interlace編碼Pulldown的動畫的BD片源中,需要在IVTC之前加入AssumeTFF(或AssumeBFF),否則無法獲得正確的(或是高質量的)場匹配結果。如《true tears》和《聖痕のクェイサー》。

DGMultiSource("source.dgi")
AssumeTFF()
Destripe(360, 6, 4, 3, mode=10)
tfm(mode=5)

mode - 匹配模式(int,整數型)

TIVTC一共有五種場匹配手段:

p 向上一帧匹配
c 向当前帧匹配(用当前帧作为匹配后的帧)
n 向下一帧匹配
b 用另一场向上一帧匹配
u 用另一场向下一帧匹配

mode參數是將這五重匹配模式進行附帶條件的組合之後,由用戶依據片源特性選擇效率、準確率最好的一種:

0: 进行p/c匹配。
1: 进行p/c匹配,如交错,则承认n匹配。
2: 进行p/c匹配,如交错,则承认u匹配。
3: 进行p/c匹配,如交错则进行n匹配,如再交错则进行u/b匹配并承认u/b匹配。
4: 进行p/c/n匹配。
5: 进行p/c/n匹配,如交错则进行u/b匹配并承认u/b匹配。
6: 进行p/c匹配,如交错,则进行u匹配,再交错进行n匹配,再交错进行b匹配并且承认b匹配。
7: 进行p/c匹配,并且参照前面做过的帧,需要线性编辑。
默认:1

這裏以mode=5為例來講述一下TIVTC的處理流程。

  1. 將用戶給出的cthresh值代入公式,分別計算p/c/n的值。
  2. 以優先c為前提,比較MI值,採用MI值最小的匹配。
  3. 如果p/c/n的MI值全部大於80(默認MI值),進行u/b匹配。
  4. 將用戶給出的cthresh值代入公式,分別計算u/b的值。
  5. 比較u/b的MI值,採用MI值最小的匹配並且輸出匹配結果。
  6. 後處理:將用戶給出的cthresh值代入公式計算,檢查匹配過的幀是否交錯。(如PP=0則放棄從此開始的操作)
  7. 如匹配後的幀為交錯,則進行後處理,將幀交給PP或clip2參數指定的函數。
  8. 檢查用戶給出的PP值。PP=1:只檢測但不做後處理;PP=2/3/4:將交錯幀送去後處理;PP=5/6/7:將交錯幀內的運動象素送去後處理。
  9. 承認後處理結果,輸出後處理後的幀。

從字面上來看,嘗試的匹配方式越多,獲得非交錯幀的可能性越大。但在很多時候,特別是重複幀較多的卡通動畫中,非交錯幀並不一定就是正確結果。在一些情況下,p/c/n/b/u五種匹配方式中會有一種以上的匹配方式能夠輸出非交錯幀,如果兩種(或以上)匹配出的結果恰好動態不同,可能造成最終畫面播放的時候一頓一頓的(輸出了不該輸出的非交錯幀)。所以,最好能夠結合動畫的具體情況設定,儘量用p/c兩種匹配方式,如果發生大量匹配失敗的情況,可以使用n/b/u。

PP - 後處理方式(int,整數型)

如果tfm沒有通過場匹配找到無交錯匹配,則需要對該幀單幀進行deinterlace處理來消除交錯。該操作有0~7共8種模式。

0: 关闭后处理,完全不考虑场匹配结果是否交错,直接输出
1: 仅尝试判断场匹配结果是否交错,但不进行deinterlace处理
2: 单帧Blend Deinterlace
3: 单帧三次插补Deinterlace
4: 单帧ELA(Edge-based Line Average) Deinterlace
5: 基于运动补偿的Blend Deinterlace
6: 基于运动补偿的三次插补Deinterlace
7: 基于运动补偿的ELA Deinterlace
默认:6