3 Dec 2013

ShowFiveVersionsとAntiCombを使う例のアレをAntiComb無しでする

説明すると長くなるので省略するが,AntiComb無しでアレをしたい状況になったので作った.
2014.11.07 追記: ミスってgist消しちゃったので新しく貼り直しました.
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