Photo Gallery

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
function MergeCheck(clip clip, int "mode") {
mode=default(mode,0)
Assert(0<=mode&&mode<=5, "error.")
clip.SeparateFields()

#############################################################
# 2-3 pulldown
# 4B 4T | [1B][1T] 2B [2T][2B][3T][3B] 4T [4B][4T] | 1B 1T
# 4B 4T | [1B][1T][2B][2T] 2B [3T][3B][4T][4B] 4T | 1B 1T
# -- -- ++ ++ -- -- -- ++ ++ -- -- -- ++ ++
# -2 -1 | 00 +1 +2 +3 +4 +5 +6 +7 +8 +9 | 10 11
v1=SelectEvery(10,00,01,04,03,06,05,08,09).Weave()
v2=SelectEvery(10,00,01,02,03,06,05,08,07).Weave()
A_F=auto_merge_order(v1, v2, nmax=5)
A=Merge(v1, v2)

##############################################################
# 2-3 pulldown ( 1f back shift )
# 4T [1B] | [1T] 2B [2T][2B][3T][3B] 4T [4B][4T] 1B | 1T 2B
# 4T [1B] | [1T][2B][2T] 2B [3T][3B][4T][4B] 4T 1B | 1T 2B
# -- ++ ++ -- -- -- ++ ++ -- -- -- ++ ++ --
# -2 -1 | 00 +1 +2 +3 +4 +5 +6 +7 +8 +9 | 10 11
v1=SelectEvery(10,-1,00,03,02,05,04,07,08).Weave()
v2=SelectEvery(10,-1,00,01,02,05,04,07,06).Weave()
B_F=auto_merge_order(v1, v2, nmax=5)
B=Merge(v1, v2)

##############################################################
# 3-2 pulldown
# 4B 4T | 1B [1T][1B][2T][2B] 3T [3B][3T][4B][4T] | 1B 1T
# 4B 4T | [1B][1T] 1B [2T][2B][3T][3B] 3T [4B][4T] | 1B 1T
# -- -- ++ ++ ++ -- -- ++ ++ ++ -- -- ++ ++
# -2 -1 | 00 +1 +2 +3 +4 +5 +6 +7 +8 +9 | 10 11
v1=SelectEvery(10,02,01,04,03,06,07,08,09).Weave()
v2=SelectEvery(10,00,01,04,03,06,05,08,09).Weave()
C_F=auto_merge_order(v1, v2, nmax=5)
C=Merge(v1, v2)

##############################################################
# 3-2 pulldown ( 1f back shift )
# 4T 1B | [1T][1B][2T][2B] 3T [3B][3T][4B][4T] 1B | 1T 1B
# 4T [1B] | [1T] 1B [2T][2B][3T][3B] 3T [4B][4T] 1B | 1T 1B
# -- ++ ++ ++ -- -- ++ ++ ++ -- -- ++ ++ ++
# -2 -1 | 00 +1 +2 +3 +4 +5 +6 +7 +8 +9 | 10 11
v1=SelectEvery(10,01,00,03,02,05,06,07,08).Weave()
v2=SelectEvery(10,-1,00,03,02,05,04,07,08).Weave()
D_F=auto_merge_order(v1, v2, nmax=5)
D=Merge(v1, v2)

##############################################################
# 3-2 pulldown ( 2f back shift )
#[1B][1T] | 1B [2T][2B][3T][3B] 3T [4B][4T] 1B 1T | 1B 1T
# 1B [1T] | [1B][2T][2B] 3T [3B][3T][4B][4T] 1B 1T | 1B 1T
# -2 -1 | 00 +1 +2 +3 +4 +5 +6 +7 +8 +9 | 10 11
v1=SelectEvery(10,-2,-1,02,01,04,03,06,07).Weave()
v2=SelectEvery(10,00,-1,02,01,04,05,06,07).Weave()
E_F=auto_merge_order(v1, v2, nmax=5)
E=Merge(v1, v2)

return \
mode!=0 ? mode!=1 ? mode!=2 ? mode!=3 ? mode!=4 ? mode!=5 ? \
nop() : E_F : D_F : C_F : B_F : A_F : \
ShowFiveVersions( \
A.CombCheck().SubTitle("[2-3] (mode=1)",size=96), \
B.CombCheck().SubTitle("[2-3]-1 (mode=2)",size=96), \
C.CombCheck().SubTitle("[3-2] (mode=3)",size=96), \
D.CombCheck().SubTitle("[3-2]-1 (mode=4)",size=96), \
E.CombCheck().SubTitle("[3-2]-2 (mode=5)",size=96)).PointResize(1280,720)
}

function auto_merge_order(clip a, clip b, float "weight", float "weight2", int "mode", int "x", int "y", int "thr", int "show", int "exc", int "nmax") {
weight=default(weight,0.5)
weight2=default(weight2,0.9)
thr=default(thr,10)
nmax=default(nmax,5)
exc=default(exc,0)
show=default(show,0)

a=FlexibleMerge(a,b,weight=weight,weight2=weight2,thr=thr,nmax=nmax,exc=exc,show=show)
b=FlexibleMerge(b,a,weight=weight,weight2=weight2,thr=thr,nmax=nmax,exc=exc,show=show)
return ConditionalFilter(interleave(a,b),a,b, \
"AverageChromaV(CombCheck(SelectEven))", "<", "AverageChromaV(CombCheck(SelectOdd))")
}


関連 5 パターンの周期からプログレッシブなクリップを選ぶアレ【軽動作】



スポンサーサイト
たった3つの工程で、インターレースを正しく駆逐します。

スクリプトは以下のとおり。
avspmodpre.png


上記スクリプトで行われていること。
画像は拡大して見てください。
pulldown_image.png

Tag:AviSynth



WHAT'S NEW?

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。