Bars
Спасибо за наблюдения!
Архив скачал, поглядел. Была проблема в логике скрипта.
Скрипт по-разному искал кадры-дубли для текущего и соседних с ним кадров, отсюда появлялись половинки двойных замен кадров-дублей: Fix33 без следующего за ним Fix66, либо Fix66 без предшествующего Fix33.
Модифицировал скрипт DoubleDropFix второй версии. Организовал конвейер по опыту скрипта GameDropFix_v3: добавил промежуточный клип кадров к замене drop_clip.
Для работы скрипта теперь требуется еще и плагин MaskTools2.
Третья версия DoubleDropFix_v3.avs:
DSS2("E:\Downloads\Bars\2013.10.21\test.avi").ConvertToYV12()
sc=MSuper(pel=1)
vf=MAnalyse(sc,isb=false)
vb=MAnalyse(sc,isb=true)
global frame_50 = MFlowInter(sc,vb,vf,time=50).SubTitle("Fix-50", size=12, align=3)
global frame_33 = MFlowInter(sc,vb,vf,time=33).SubTitle("Fix-33", size=12, align=3).trim(1,0)
global frame_66 = MFlowInter(sc,vb,vf,time=66).SubTitle("Fix-66", size=12, align=3)
global frame_src = last
global mini=sc.crop(8,height+8*3,width/2,height/2).TemporalSoften(1, 1, 0, scenechange=1, mode=2)
global luma_drop=mini.mt_lut(y=-1, u=128, v=128)
drop_clip=mini.scriptclip("dif=mini.ydifferencefromprevious()
\ dif_next1=mini.trim(1,0).ydifferencefromprevious()
\ dif_prev1=(mini.trim(1,1)+mini).ydifferencefromprevious()
\ dif_nextMax=max(max(dif,dif_next1)/8,0.01)
\ dif_prevMax=max(max(dif,dif_prev1)/8,0.01)
\ dif>min(dif_prevMax,dif_nextMax) ? mini : luma_drop
")
scriptclip("
\ Fix_prev2=(drop_clip.trim(1,2)+drop_clip).AverageLuma
\ Fix_prev1=(drop_clip.trim(1,1)+drop_clip).AverageLuma
\ Fix=drop_clip.AverageLuma
\ Fix_next1=drop_clip.trim(1,0).AverageLuma
\ Fix_next2=drop_clip.trim(2,0).AverageLuma
\ Fix!=1
\ ? frame_src
\ : Fix_next1!=1
\ ? Fix_prev1!=1
\ ? frame_50
\ : Fix_prev2!=1
\ ? frame_66
\ : frame_src
\ : Fix_next2!=1
\ ? Fix_prev1!=1
\ ? frame_33
\ : frame_src
\ : frame_src")
---
Кстати, поглядел на характер выпавших кадров именно этого видеоролика. Тут, как ни странно встречаются разные пропуски в том числе и раннее появление кадра с последующим повтором, что обычно не характерно для выпавших кадров в фильмах. В этом случае будет уместным анализ движения в местах выпавших кадров, поэтому для такого видео вполне можно применить скрипт GameDropFix_v3. Результат будет плавнее, чем после DoubleDropFix_v3.