2014.11.07 追記: ミスってgist消しちゃったので新しく貼り直しました.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function check_pulldown_cadence( clip src, int "dominance" ) | |
{ | |
field_dominance = Default( dominance, 0 ) /* 0: Auto, 1: TFF, 2: BFF */ | |
if( field_dominance == 0 ) | |
{ | |
field_dominance = src.GetParity() ? 1 : 2 | |
} | |
Assert( field_dominance == 1 || field_dominance == 2, "check_pulldown_cadence: dominance should be 0, 1, or 2!" ) | |
doublew_v = field_dominance == 1 ? src.AssumeFrameBased().AssumeTFF().DoubleWeave() \ | |
: field_dominance == 2 ? src.AssumeFrameBased().AssumeBFF().DoubleWeave() \ | |
: Assert( false, "check_pulldown_cadence: An unexpected error has occurred!" ) | |
v1 = doublew_v.SelectEvery( 5, 0, 2 ).check_combed().Subtitle( "[ 0, 2 ]", size=100 ) | |
v2 = doublew_v.SelectEvery( 5, 1, 3 ).check_combed().Subtitle( "[ 1, 3 ]", size=100 ) | |
v3 = doublew_v.SelectEvery( 5, 2, 4 ).check_combed().Subtitle( "[ 2, 4 ]", size=100 ) | |
v4 = doublew_v.SelectEvery( 5, 0, 3 ).check_combed().Subtitle( "[ 0, 3 ]", size=100 ) | |
v5 = doublew_v.SelectEvery( 5, 1, 4 ).check_combed().Subtitle( "[ 1, 4 ]", size=100 ) | |
return field_dominance == 1 ? ShowFiveVersions( v1, v2, v3, v4, v5 ).AssumeFrameBased().ComplementParity().ReduceBy2() \ | |
: ShowFiveVersions( v1, v2, v3, v4, v5 ).AssumeFrameBased().ReduceBy2() | |
} | |
function check_combed( clip src ) | |
{ | |
grey_v = src.Greyscale() | |
purple_v = src.ColorYUV( gain_u=100, gain_v=100 ) | |
combed_msk = src.CombMask( cthresh=4, mthresh=8, chroma=true, sse2=true ) | |
return grey_v.MaskedMerge( alt=purple_v, mask=combed_msk, MI=20, chroma=true, sse2=true ) | |
[* | |
return ConditionalFilter( src, \ | |
grey.mt_merge( purple_v, combed_msk, chroma="process" ), \ | |
grey, \ | |
"IsCombed( cthresh=4, mthresh=8, MI=20, sse2=true )", "=", "true" ) | |
*] | |
} |
コーミング検出にはChikuzen氏のCombMaskを使用.
理由はmasktoolsを使わずにこれ1つで完結できることと速度.
ただし,適当に調べただけではバイナリが公開されてなかったので各自ビルドする必要ありかも(あまりちゃんと調べてないのでわからん).
ColorYUVのパラメータは適当なので人によっては見難いかも.
CombMask/MaskedMergeのパラメータも適当.
大きくなりすぎるからReduceBy2()挟んでる.
こんな感じ
インタレ滅びろ
インタレ死ね
No comments:
Post a Comment