Чем больше информации Вы предоставите — тем быстрее мы сможем вам помочь!
Вставляйте (под спойлер) Mediainfo источника, Полный ЛОГ кодирования, другие настройки кодирования и т.д.
Вставляйте (под спойлер) Mediainfo источника, Полный ЛОГ кодирования, другие настройки кодирования и т.д.
ТЕМА: BadFrames
BadFrames 1 год 10 мес. назад #4531
|
Почему не могу визуализировать (нет изменений) в XviD4PSP5 фильтра BadFrames avisynth.org.ru/badframes/badframes-rus.html? Возможно ли, для пакетного режима, интерполировать (blend = true) первые два и последние два кадра в каждом клипе?
Просмотрел тему forum.doom9.net/showthread.php?p=1838781 поиск и изменение BadFrames, но как сделать такой пресет для XviD4PSP5? |
Последнее редактирование: 1 год 10 мес. назад от Евгений Михайлович. Причина: Добавил
Гостям запрещено создавать сообщения!
|
BadFrames 1 год 10 мес. назад #4532
|
Для замены бракованных кадров на интерполированные в конверторе в папке filtering предусмотрен пресет InterpolateFrames2.avs
|
Никогда не учите свинью танцевать. Это только раздражает свинью, и вы напрасно тратите своё время...
Гостям запрещено создавать сообщения!
Спасибо сказали: admin, Евгений Михайлович
|
BadFrames 1 год 10 мес. назад #4534
|
Да, в этом пресете BadFrames работает. Жаль, что делать это можно, только вручную и не работает смена сцен # Предположим плохие кадры 5, 30, 51, 52. Кадр 51 - смена сцены. BadFrames(5, 30, -51, 52, blend=true)
Так и не разобрался, каким образом заменить 2 кадра в начале и 2 кадра в конце КЛИПА, в пакетном режиме, ведь функция first_frame(2) and last_frame(2) должна быть. |
Последнее редактирование: 1 год 10 мес. назад от Евгений Михайлович.
Гостям запрещено создавать сообщения!
|
BadFrames 1 год 10 мес. назад #4535
|
Евгений Михайлович пишет:
Да, в этом пресете BadFrames работает. Жаль, что делать это можно, только вручную. Для обнаружения битых кадров и замены их на интерполированные кадры служит пресет qqfix.avs .Смотрите соответствующуе темы forum.doom9.org/showthread.php?t=158677&highlight=qqfix и forum.doom9.org/showthread.php?t=161154&highlight=qqfix |
Никогда не учите свинью танцевать. Это только раздражает свинью, и вы напрасно тратите своё время...
Последнее редактирование: 1 год 10 мес. назад от Tempter57.
Гостям запрещено создавать сообщения!
Спасибо сказали: Евгений Михайлович
|
BadFrames 1 год 10 мес. назад #4536
|
Попытался изменить пресет DVC Despot.avs
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] #avstp.dll #ccd.vdf #vdf_arguments:ccd:0 #AutoAdjust.dll #Depan.dll #DepanEstimate.dll #GetDups.dll #DeSpot.dll #deflicker.dll #RemovedirtSSE2.dll #RGTools.dll #RemoveGrainTSSE2.dll #mvtools2mod.dll #Warpsharp.dll #masktools2.dll #SmoothAdjust.dll #AddGrainC.dll #Gradfun2db.dll #Gradfun2dbmod 1.5.avsi #Removedirt.avs #LSFmod v1.9.avsi # setmemorymax(640) RemoveGrain(0) # No-Op filter, just to do frame request ChangeFPS(last,last,true) # initiate a small forward buffer ConvertToRGB32() ccd(9,0) # удаление радужности и цветового шума ConvertToYV12() # AutoAdjust(auto_gain=true, auto_balance=true) # Частичная стабилизация изображения dxmax=32 dymax=24 source = last.trim(1, 0) # stab_reference = source.crop(dxmax*2,dymax*2,-dxmax*2,-dymax*2).mt_binarize(threshold=80,upper=true,U=-128,V=-128) # mdata = DePanEstimate(stab_reference,trust=3.0,dxmax=dxmax,dymax=dymax) # DePanStabilize(source,data=mdata,cutoff=1.0,dxmax=dxmax,dymax=dymax,pixaspect=1.094,method=0,mirror=15) # or pixaspect=0.911 for NTSC pre = source.removegrain(11) Super = pre.MSuper(pel=2) vectors = MAnalyse(Super, isb=false, blksize=16, delta=1, search=5) globalmotion = MDepan(pre, vectors, zoom=true, rot=false, pixaspect=1.094, error=15.0, info=false, \ wrong=10.0, zerow=0.05, range=2, thSCD1=400, thSCD2=130) DepanStabilize(source, data=globalmotion, cutoff=1.0, damping=0.9, initzoom=1.0, addzoom=true, prev=2, next=2, mirror=15, blur=300, \ dxmax=dxmax, dymax=dymax, zoommax=1.05, rotmax=0.5, subpixel=2, pixaspect=1.094, fitlast=0, tzoom=3.0, info=false) stab = last.crop(dxmax,dymax,-dxmax,-dymax) filtered = stab.RemoveDirt(false,10) dark = 32 bright = 196 lmask1 = mt_lut(stab,"x "+string(dark)+" < 255 x "+string(bright)+" > 255 0 ? ?",U=1,V=1).removegrain(19,-1,-1) min = 16 max = 255 lmask2 = mt_lutxy(stab,filtered,"x y - abs "+string(min)+" < 0 x y - abs "+string(max)+" > 0 255 ? ?",U=1,V=1).removegrain(19,-1,-1) rdr = mt_merge(stab,filtered,mt_logic(lmask1,lmask2,"min"),luma=true) preNR_super = filtered.MSuper(pel=2, sharp=0, rfilter=2) rdr_super = rdr.MSuper(pel=2, sharp=0, levels=1) vb2 = MAnalyse(preNR_super, isb=true, truemotion=true, delta=2, blksize=8, overlap=4, dct=5) vb1 = MAnalyse(preNR_super, isb=true, truemotion=true, delta=1, blksize=8, overlap=4, dct=5) vf1 = MAnalyse(preNR_super,isb=false, truemotion=true, delta=1, blksize=8, overlap=4, dct=5) vf2 = MAnalyse(preNR_super,isb=false, truemotion=true, delta=2, blksize=8, overlap=4, dct=5) # анализируеи и компенсируем движение вперед и назад (к текущему кадру) ml = 130 # масштаб маски thSCD1 = 450 # порог смены сцены cf = MFlow(rdr, rdr_super, vf1, thSCD1=thSCD1) cb = MFlow(rdr, rdr_super, vb1, thSCD1=thSCD1) sadf = stab.MMask(vf1, ml=ml, kind=1, gamma=1, thSCD1=thSCD1) # маска SAD вперед sadb = stab.MMask(vb1, ml=ml, kind=1, gamma=1, thSCD1=thSCD1) # маска SAD назад msadf = sadf.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD вперед msadb = sadb.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD назад msad = MT_Logic(msadf,msadb,"or") # комбинированная инвертированная маска SAD msad = msad.MT_Expand() # расширенная маска msadi = Interleave(msad, msad, msad) # тройное повторение маски interleave(cf, rdr.MDegrain2(rdr_super,vb1,vf1,vb2,vf2,thSAD=480,thSCD1=thSCD1,thSCD2=130,limit=230), cb) # ==== большие черные пятна ==== # DeSpot(mthres=8,mwidth=7,mheight=5,merode=33,interlaced=false,median=false,p1=15,p2=8,pwidth=50,pheight=50,ranked=true,sign=1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== толстые линии типа волос (избегают реальных волос) ==== # DeSpot(mthres=13,mwidth=7,mheight=5,merode=24,interlaced=false,median=false,p1=15,p2=13,pwidth=140,pheight=100,ranked=true,sign=-1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== линии, входящие в контакт с движением, избегите области движения ==== # DeSpot(mthres=13,mwidth=7,mheight=5,merode=16,interlaced=false,median=false,p1=15,p2=13,pwidth=140,pheight=100,ranked=true,sign=-1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # ==== маленькие точки и пыль ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=33,interlaced=false,median=false,p1=15,p2=8,pwidth=6,pheight=5,ranked=true,sign=0,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=2,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # DeSpot(mthres=8,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=10,p2=6,pwidth=720,pheight=576,ranked=true,sign=2,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # ==== Длинные горизонтальные затиры ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=15,p2=8,pwidth=100,pheight=2,ranked=true,sign=-1,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== Маленькие компактные пятна ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=15,p2=8,pwidth=10,pheight=10,ranked=true,sign=-1,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ===================================== DeSpot(p1=20,p2=4,pwidth=200,pheight=150,mthres=22, merode=33,sign=2,show=0,seg=0,color=false,motpn=true,fitluma=true, extmask=msadi) # DeSpot(p1=20,p2=12,pwidth=768,pheight=576,mthres=80,merode=33,sign=0,show=0,seg=0,color=true,motpn=true,extmask=msadi) # DeSpot(p1=12,p2=22,pwidth=100,pheight=100,mthres=22,merode=25,p1percent=10,sign=0,show=0,seg=1,color=true,motpn=true,extmask=msadi) # DeSpot(p1=15,p2=1, pwidth=40, pheight=40, mthres=4, merode=25,p1percent=10,sign=0,show=0,seg=1,color=true,motpn=true,extmask=msadi) # DeSpot(p1=35,p2=11,pwidth=250,pheight=250,mthres=23,merode=40,p1percent=1,sign=1,show=0,seg=2,\ # color=true,motpn=false,minpts=6,dilate=1,mscene=100,fitluma=true,blur=1,extmask=msadi) # DeSpot(p1=22,p2=5, pwidth=100,pheight=140,mthres=11,merode=58,p1percent=25,sign=1,show=0,seg=1,color=true,motpn=false,minpts=6,maxpts=1200,\ # mwidth=7,mheight=5,dilate=2,mscene=90,fitluma=true,blur=2,ranked=true,interlaced=false,extmask=msadi) # DeSpot(p1=30,p2=22,pwidth=400,pheight=300, mthres=20,merode=33,p1percent=10,sign=1,show=0,seg=2,color=true,motpn=true,extmask=msadi) SelectEvery(3,1) LSFMod(strength=75, smode=3) LSFMod(strength=30, smode=1) Gradfun2dbmod(thr=1.4,thrC=1.6,str=0.8,strC=0,temp=50,adapt=64) SmoothLevels(3,1.0,255,0,252, useopt=0, HQ=true, useMT=1) # Для удаления пятен ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] #avstp.dll #ccd.vdf #vdf_arguments:ccd:0 #DeFlick.vdf #vdf_arguments:DeFlick:0 #RemoveGrainTSSE2.dll #RGTools.dll #ReduceFlickerSSE2.dll #Deflicker.dll #Depan.dll #DepanEstimate.dll #DeSpot.dll #RemovedirtSSE2.dll #warpsharp.dll #AutoAdjust.dll #svpflow2.dll #svpflow1.dll #AvsFilterNet.dll #SmoothAdjust.dll #mvtools2mod.dll #awarpsharp2.dll #AddGrainC.dll #masktools2.dll #gradfun2db.dll #minblur.avs #EdgeCleaner.avs #RemoveDirtMC_03.avs #InterFrame2.avsi #GradFun2DBmod.avs # ==== PARAMETERS ==== result = "result4" # specify the wanted output here trim_begin=2 trim_end=10 play_speed=18.75 # trim frames and play speed (PAL: 16.6666 or 18.75) numerator=25 # numerator for the interpolator (final frame rate) denumerator=1 # denumerator # ==== COLOR AND LEVELS PARAMATERS ==== saturation=1.1 # for all outputs gamma=1.2 # for all outputs blue=0 red=0 # manual color adjustment, when returning result3 or result4. Values can be positive or negative black_level=0 white_level=255 output_black=0 output_white=255 # manual levels, when returning result4 # ==== AUTO LEVELS PARAMETERS ==== autolev_low=6 # limit of autolevels low output autolev_high=235 # limit of autolevels high output # ==== SIZE, CROP AND BORDERS PARAMETERS ==== CLeft=32 CTop=32 CRight=32 CBottom=32 # crop values after Depan and before final resizing W=720 H=576 # final size after cropping bord_left=0 bord_top=0 bord_right=0 bord_bot=0 # 720p= borders 150 # ==== STABILISING PARAMETERS, YOU REALY MUST USE RESULTS7 TO CHECK STABILISATION! ==== dxmax=20 dymax=20 #maximum values for the stabiliser (in pixels) 20 is a good start value est_left=dxmax*2 est_top=dymax*2 est_right=dxmax*2 est_bottom=dymax*2 # crop values for special Estimate clip trust_value=1.0 # scene change detection, higher= more sensitive cutoff_value=0.5 # no need to change this, but you can play with it and see what you get # ==== CLEANING PARAMETERS ==== dirt_strenght=30 # set this lower for clean films. # ==== DENOISING PARAMETERS ==== thSAD = 480 ml = 130 # масштаб маски thSCD1 = 500 # порог смены сцены thSCD2 = 130 limit = 255 # ==== SHARPENING PARAMETERS ==== USM_sharp_ness=30 USM_radi_us=3 # this is the start value for the unsharpmask sharpening # do not set radius less then 3 # the script will automatically add two other steps with lower radius last_sharp=0.2 # final sharpening step after interpolation last_blur=0.15 # this smooths out the heavy sharpening effects ################################################################################################## # setmemorymax(800) source = last.assumefps(play_speed).trim(trim_begin,0).ConvertToYV12() trimming = framecount(source)-trim_end source1 = trim(source,0,trimming) # ==== STABILIZING/CROPPING ==== stab_reference = source1.colorYUV(autogain=true).crop(est_left,est_top,-est_right,-est_bottom) mdata = DePanEstimate(stab_reference,trust=trust_value,dxmax=dxmax,dymax=dymax) stab = DePanStabilize(source1,data=mdata,cutoff=cutoff_value,dxmax=dxmax,dymax=dymax,method=0,mirror=15)#.deflicker() stab2 = stab.crop(CLeft,CTop,-CRight,-CBottom) \.ConvertToRGB32().ccd(20,0).DeFlick(7, 7, 0, 24, 0).ConvertToYV12() stab3 = DePanStabilize(source1,data=mdata,cutoff=cutoff_value,dxmax=dxmax,dymax=dymax,method=0,info=true) WS = width(stab) HS = height(stab) stab4 = stab3.addborders(10,10,10,10,$B1B1B1).Lanczos4Resize(WS,HS) stab5 = Lanczos4Resize(stab2,W,H).sharpen(0.5) # ==== UNSHARPMASK AUTO_PARAMETERS ==== USM_sharp_ness1 = USM_sharp_ness USM_sharp_ness2 = USM_sharp_ness+(USM_sharp_ness/2) USM_sharp_ness3 = USM_sharp_ness*2 USM_radi_us1 = USM_radi_us USM_radi_us2 = USM_radi_us-1 USM_radi_us3 = USM_radi_us2-1 # ==== CLEANING/PRESHARPENING/RESIZING ==== noise_baseclip = stab2.levels(0,gamma,255,0,255).SmoothTweak(saturation=saturation).Lanczos4Resize(W,H) filtred = RemoveDirtMC(noise_baseclip,dirt_strenght) cleaned = filtred.unsharpmask(USM_sharp_ness1,USM_radi_us1,0).unsharpmask(USM_sharp_ness2,USM_radi_us2,0) calm = filtred.reduceflicker(strength=3,aggressive=true) calm = calm.repair(cleaned,mode=1) calm = calm.removegrain(mode = 17) calm = calm.removegrain(mode = 17) calm = calm.removegrain(mode = 17) psuper = calm.MSuper(pel=2,sharp=2,rfilter=4) csuper = cleaned.MSuper(pel=2,sharp=2,levels=1) vb2 = MAnalyse(psuper, isb=true, truemotion=true, delta=2, blksize=8, overlap=4, dct=5) vb1 = MAnalyse(psuper, isb=true, truemotion=true, delta=1, blksize=8, overlap=4, dct=5) vf1 = MAnalyse(psuper,isb=false, truemotion=true, delta=1, blksize=8, overlap=4, dct=5) vf2 = MAnalyse(psuper,isb=false, truemotion=true, delta=2, blksize=8, overlap=4, dct=5) den = cleaned.MDegrain2(csuper, vb1, vf1, vb2, vf2, thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2,limit=limit) \.unsharpmask(USM_sharp_ness3,USM_radi_us3,0) dsuper = den.MSuper(pel=2,levels=1,chroma=true) # анализируеи и компенсируем движение вперед и назад (к текущему кадру) cf1 = MFlow(den, dsuper, vf1, thSCD1=400) cb1 = MFlow(den, dsuper, vb1, thSCD1=400) sadf = cleaned.MMask(vf1, ml=ml, kind=1, gamma=1, thSCD1=400) # маска SAD вперед sadb = cleaned.MMask(vb1, ml=ml, kind=1, gamma=1, thSCD1=400) # маска SAD назад msadf = sadf.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD вперед msadb = sadb.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD назад msad = MT_Logic(msadf,msadb,"or") # комбинированная инвертированная маска SAD msad = msad.MT_Expand() # расширенная маска msadi = Interleave(msad, msad, msad) # тройное повторение маски interleave(cf1, den, cb1) # ==== большие черные пятна ==== # DeSpot(mthres=8,mwidth=7,mheight=5,merode=33,interlaced=false,median=false,p1=15,p2=8,pwidth=50,pheight=50,ranked=true,sign=1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== толстые линии типа волос (избегают реальных волос) ==== # DeSpot(mthres=13,mwidth=7,mheight=5,merode=24,interlaced=false,median=false,p1=15,p2=13,pwidth=140,pheight=100,ranked=true,sign=-1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== линии, входящие в контакт с движением, избегите области движения ==== # DeSpot(mthres=13,mwidth=7,mheight=5,merode=16,interlaced=false,median=false,p1=15,p2=13,pwidth=140,pheight=100,ranked=true,sign=-1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # ==== маленькие точки и пыль ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=33,interlaced=false,median=false,p1=15,p2=8,pwidth=6,pheight=5,ranked=true,sign=0,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=2,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # DeSpot(mthres=8,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=10,p2=6,pwidth=720,pheight=576,ranked=true,sign=2,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # ==== Длинные горизонтальные затиры ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=15,p2=8,pwidth=100,pheight=2,ranked=true,sign=-1,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== Маленькие компактные пятна ==== DeSpot(mthres=12,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=15,p2=8,pwidth=10,pheight=10,ranked=true,sign=-1,maxpts=0,\ p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ===================================== # DeSpot(p1=20,p2=4,pwidth=200,pheight=150,mthres=22, merode=33,sign=2,show=0,seg=0,color=false,motpn=true,fitluma=true, extmask=msadi) # DeSpot(p1=20,p2=12,pwidth=768,pheight=576,mthres=80,merode=33,sign=0,show=0,seg=0,color=true,motpn=true,extmask=msadi) # DeSpot(p1=12,p2=22,pwidth=100,pheight=100,mthres=22,merode=25,p1percent=10,sign=0,show=0,seg=1,color=true,motpn=true,extmask=msadi) # DeSpot(p1=15,p2=1, pwidth=40, pheight=40, mthres=4, merode=25,p1percent=10,sign=0,show=0,seg=1,color=true,motpn=true,extmask=msadi) # DeSpot(p1=35,p2=11,pwidth=250,pheight=250,mthres=23,merode=40,p1percent=1,sign=1,show=0,seg=2,\ # color=true,motpn=false,minpts=6,dilate=1,mscene=100,fitluma=true,blur=1,extmask=msadi) # DeSpot(p1=22,p2=5, pwidth=100,pheight=140,mthres=11,merode=58,p1percent=25,sign=1,show=0,seg=1,color=true,motpn=false,minpts=6,maxpts=1200,\ # mwidth=7,mheight=5,dilate=2,mscene=90,fitluma=true,blur=2,ranked=true,interlaced=false,extmask=msadi) # DeSpot(p1=30,p2=22,pwidth=400,pheight=300, mthres=20,merode=33,p1percent=10,sign=1,show=0,seg=2,color=true,motpn=true,extmask=msadi) SelectEvery(3,1) mergechroma(last) # ==== CHANGING FRAME RATE WITH INTERPOLATION/FINAL SHARPENING === InterFrame (GPU=false, Preset="Medium", Tuning ="Film", NewNum=numerator, NewDen=denumerator, OverrideAlgo=23, InputType="2D", Cores=1) # ==== SHARPENING & DEBANDING ==== sharpen(last_sharp,mmx=false).blur(last_blur,mmx=false).sharpen(last_sharp,mmx=false) EdgeCleaner() GradFun2DBmod(thr=1.51,thrC=1.6,str=0.8,strC=0.0,temp=40,adapt=64) # SmoothCurve(Ycurve="0-0;16-0;235-255;255-255", Ucurve="0-0;16-0;240-255;255-255", Vcurve="0-0;16-0;240-255;255-255", interp=0) SmoothLevels(0,1.0,255,0,255, useopt=0, HQ=true, useMT=1) # 0 -automatic choice, 1- SSE2 CPU, 2 - Sandy Bridge CPU # ==== RESULT1: AUTOGAIN,AUTOWHITE ==== result1 = last.AutoAdjust(auto_gain=true, auto_balance=true).addborders(bord_left, bord_top, bord_right, bord_bot) # ==== RESULT2: MANUAL LEVELS, AUTOWHITE ==== result2 = last.levels(black_level,1.0,white_level,0,255).AutoAdjust(auto_balance=true)\ .addborders(bord_left, bord_top, bord_right, bord_bot) # ==== RESULT3: AUTOGAIN, MANUAL COLOR CORRECTIONS ==== result3 = last.coloryuv(off_U=blue,off_V=red).AutoAdjust(auto_gain=true, auto_balance=true).addborders(bord_left, bord_top, bord_right, bord_bot) # ==== RESULT4: MANUAL LEVELS, MANUAL COLOR CORRECTIONS ==== result4 = last.coloryuv(off_U=blue,off_V=red).levels(black_level,1.0,white_level,0,255)\ .addborders(bord_left, bord_top, bord_right, bord_bot) # ==== RESULT5: SPECIAL SERVICE CLIP FOR RESULT S5 ==== result5 = overlay(source1,greyscale(stab_reference),x=est_left,y=est_top).addborders(2,2,2,2,$FFFFFF).Lanczos4Resize(WS,HS) # ==== PARAMETERS FOR THE COMPARISONS ==== W2 = W+bord_left+bord_right H2 = H+bord_top+bord_bot final_framerate = numerator/denumerator source4 = Lanczos4Resize(source1,W2,H2).changeFPS(final_framerate) # ==== COMPARISONS: ORIGINAL VS RESULTS ==== resultS1 = stackhorizontal(subtitle(source4,"original",size=28,align=2),subtitle(result1,"result1: autogain, autowhite",size=28,align=2)) resultS2 = stackhorizontal(subtitle(source4,"original",size=28,align=2),subtitle(result2,"result2: autowhite, manual levels correction",size=28,align=2)) resultS3 = stackhorizontal(subtitle(source4,"original",size=28,align=2),subtitle(result3,"result3: autogain, manual color correction",size=28,align=2)) resultS4 = stackhorizontal(subtitle(source4,"original",size=28,align=2),subtitle(result4,"result4: manual colors and levels correction",size=28,align=2)) resultS5 = stackhorizontal(subtitle(result3,"result3: autogain, manual color correction",size=28,align=2),subtitle(result4,"result4: manual colors and levels correction",size=28,align=2)) resultS6 = stackhorizontal(subtitle(result1,"result1: autogain, autowhite",size=28,align=2),subtitle(result2,"result2: manual levels, autowhite",size=28,align=2)) # ==== SPECIAL COMPARISON CLIP FOR TESTING THE STABILIZER ==== resultS7 = stackhorizontal(subtitle(result5,"baseclip for stabiliser -only the B/W clip is used",size=32,align=2),\ subtitle(stab4,"test stabiliser: dx=horizontal, dy=vertical",size=32,align=5)).converttoYUY2() Eval(result) # Назначение: для реставрации оцифрованных 8мм старых киноплёнок с повышенным мерцанием по яркости # Тип предварительного шумоподавителя: комбинированный deflicker + RemoveDirtMC # Тип основного шумоподавителя: на основе векторного анализа оценки движения c временным шумоподавителем MDeGrainN # Тип шарпера: sharpen # Наличие фильтра DeBanding по умолчанию: включен # Скорость обработки: медленная ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] #avstp.dll #ccd.vdf #vdf_arguments:ccd:0 #AutoAdjust.dll #Depan.dll #DepanEstimate.dll #GetDups.dll #DeSpot.dll #deflicker.dll #ReduceFlickerSSE2.dll #RemovedirtSSE2.dll #RGTools.dll #RemoveGrainTSSE2.dll #mvtools2mod.dll #Warpsharp.dll #masktools2.dll #SmoothAdjust.dll #AddGrainC.dll #Gradfun2db.dll #03_RemoveDirtMC.avs #Gradfun2dbmod 1.5.avsi #Removedirt.avs #LSFmod v1.9.avsi # setmemorymax(640) RemoveGrain(0) # No-Op filter, just to do frame request ChangeFPS(last,last,true) # initiate a small forward buffer ConvertToRGB32() #ccd(9,0) # удаление радужности и цветового шума ConvertToYV12() # AutoAdjust(auto_gain=true, auto_balance=true) # ==== COLOR AND LEVELS PARAMATERS ==== saturation=0.0 # for all outputs gamma=1.0 # for all outputs blue=0 red=0 # manual color adjustment, when returning result3 or result4. Values can be positive or negative black_level=0 white_level=255 output_black=0 output_white=255 # manual levels, when returning result4 # ==== AUTO LEVELS PARAMETERS ==== autolev_low=6 # limit of autolevels low output autolev_high=235 # limit of autolevels high output # Частичная стабилизация изображения dxmax=20 dymax=20 est_left=dxmax*2 est_top=dymax*2 est_right=dxmax*2 est_bottom=dymax*2 # crop values for special source = last.trim(1, 0) # stab_reference = source.crop(dxmax*2,dymax*2,-dxmax*2,-dymax*2).mt_binarize(threshold=80,upper=true,U=-128,V=-128) # mdata = DePanEstimate(stab_reference,trust=3.0,dxmax=dxmax,dymax=dymax) # DePanStabilize(source,data=mdata,cutoff=1.0,dxmax=dxmax,dymax=dymax,pixaspect=1.094,method=0,mirror=15) # or pixaspect=0.911 for NTSC pre = source.removegrain(11) Super = pre.MSuper(pel=2) vectors = MAnalyse(Super, isb=false, blksize=16, delta=1, search=5) globalmotion = MDepan(pre, vectors, zoom=true, rot=false, pixaspect=1.094, error=15.0, info=false, \ wrong=10.0, zerow=0.05, range=2, thSCD1=400, thSCD2=130) DepanStabilize(source, data=globalmotion, cutoff=1.0, damping=0.9, initzoom=1.0, addzoom=true, prev=2, next=2, mirror=15, blur=300, \ dxmax=dxmax, dymax=dymax, zoommax=1.05, rotmax=0.5, subpixel=2, pixaspect=1.094, fitlast=0, tzoom=3.0, info=false) stab = last.crop(dxmax,dymax,-dxmax,-dymax) filtered = stab.RemoveDirt(false,10) # ==== CLEANING PARAMETERS ==== dirt_strenght=30 # set this lower for clean films. # ==== DENOISING PARAMETERS ==== thSAD = 480 ml = 130 # масштаб маски thSCD1 = 500 # порог смены сцены thSCD2 = 130 limit = 255 # ==== SHARPENING PARAMETERS ==== USM_sharp_ness=30 USM_radi_us=3 # this is the start value for the unsharpmask sharpening # do not set radius less then 3 # the script will automatically add two other steps with lower radius last_sharp=0.2 # final sharpening step after interpolation last_blur=0.15 # this smooths out the heavy sharpening effects # ==== STABILIZING/CROPPING ==== stab_reference = source.colorYUV(autogain=true) mdata = DePanEstimate(stab_reference,dxmax=dxmax,dymax=dymax) stab = DePanStabilize(source,data=mdata,dxmax=dxmax,dymax=dymax,method=0,mirror=15)#.deflicker() stab2 = stab.crop(0,0,-0,-0) \.ConvertToRGB32().ccd(20,0).ConvertToYV12() stab3 = DePanStabilize(source,data=mdata,dxmax=dxmax,dymax=dymax,method=0,info=true) WS = width(stab) HS = height(stab) stab4 = stab3.addborders(10,10,10,10,$B1B1B1).Lanczos4Resize(WS,HS) #stab5 = Lanczos4Resize(stab2).sharpen(0.5) dark = 32 bright = 196 lmask1 = mt_lut(stab,"x "+string(dark)+" < 255 x "+string(bright)+" > 255 0 ? ?",U=1,V=1).removegrain(19,-1,-1) min = 16 max = 255 lmask2 = mt_lutxy(stab,filtered,"x y - abs "+string(min)+" < 0 x y - abs "+string(max)+" > 0 255 ? ?",U=1,V=1).removegrain(19,-1,-1) rdr = mt_merge(stab,filtered,mt_logic(lmask1,lmask2,"min"),luma=true) preNR_super = filtered.MSuper(pel=2, sharp=4, rfilter=4) rdr_super = rdr.MSuper(pel=2, sharp=2, levels=1) vb2 = MAnalyse(preNR_super, isb=true, truemotion=true, delta=2, blksize=8, overlap=4, dct=5) vb1 = MAnalyse(preNR_super, isb=true, truemotion=true, delta=1, blksize=8, overlap=4, dct=5) vf1 = MAnalyse(preNR_super,isb=false, truemotion=true, delta=1, blksize=8, overlap=4, dct=5) vf2 = MAnalyse(preNR_super,isb=false, truemotion=true, delta=2, blksize=8, overlap=4, dct=5) # анализируеи и компенсируем движение вперед и назад (к текущему кадру) ml = 130 # масштаб маски thSCD1 = 500 # порог смены сцены sadf = stab.MMask(vf1, ml=ml, kind=1, gamma=1, thSCD1=thSCD1) # маска SAD вперед sadb = stab.MMask(vb1, ml=ml, kind=1, gamma=1, thSCD1=thSCD1) # маска SAD назад msadf = sadf.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD вперед msadb = sadb.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD назад msad = MT_Logic(msadf,msadb,"or") # комбинированная инвертированная маска SAD msad = msad.MT_Expand() # расширенная маска msadi = Interleave(msad, msad, msad) # тройное повторение маски # ==== UNSHARPMASK AUTO_PARAMETERS ==== USM_sharp_ness1 = USM_sharp_ness USM_sharp_ness2 = USM_sharp_ness+(USM_sharp_ness/2) USM_sharp_ness3 = USM_sharp_ness*2 USM_radi_us1 = USM_radi_us USM_radi_us2 = USM_radi_us-1 USM_radi_us3 = USM_radi_us2-1 # ==== большие черные пятна ==== # DeSpot(mthres=8,mwidth=7,mheight=5,merode=33,interlaced=false,median=false,p1=15,p2=8,pwidth=50,pheight=50,ranked=true,sign=1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== толстые линии типа волос (избегают реальных волос) ==== # DeSpot(mthres=13,mwidth=7,mheight=5,merode=24,interlaced=false,median=false,p1=15,p2=13,pwidth=140,pheight=100,ranked=true,sign=-1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== линии, входящие в контакт с движением, избегите области движения ==== # DeSpot(mthres=13,mwidth=7,mheight=5,merode=16,interlaced=false,median=false,p1=15,p2=13,pwidth=140,pheight=100,ranked=true,sign=-1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # ==== маленькие точки и пыль ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=33,interlaced=false,median=false,p1=15,p2=8,pwidth=6,pheight=5,ranked=true,sign=0,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=2,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # DeSpot(mthres=8,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=10,p2=6,pwidth=720,pheight=576,ranked=true,sign=2,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # ==== Длинные горизонтальные затиры ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=15,p2=8,pwidth=100,pheight=2,ranked=true,sign=-1,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== Маленькие компактные пятна ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=15,p2=8,pwidth=10,pheight=10,ranked=true,sign=-1,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ===================================== DeSpot(p1=20,p2=4,pwidth=200,pheight=150,mthres=22, merode=33,sign=2,show=0,seg=0,color=false,motpn=true,fitluma=true, extmask=msadi) DeSpot(mthres=12,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=15,p2=8,pwidth=10,pheight=10,ranked=true,sign=-1,maxpts=0,\ p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # DeSpot(p1=20,p2=12,pwidth=768,pheight=576,mthres=80,merode=33,sign=0,show=0,seg=0,color=true,motpn=true,extmask=msadi) # DeSpot(p1=12,p2=22,pwidth=100,pheight=100,mthres=22,merode=25,p1percent=10,sign=0,show=0,seg=1,color=true,motpn=true,extmask=msadi) # DeSpot(p1=15,p2=1, pwidth=40, pheight=40, mthres=4, merode=25,p1percent=10,sign=0,show=0,seg=1,color=true,motpn=true,extmask=msadi) # DeSpot(p1=35,p2=11,pwidth=250,pheight=250,mthres=23,merode=40,p1percent=1,sign=1,show=0,seg=2,\ # color=true,motpn=false,minpts=6,dilate=1,mscene=100,fitluma=true,blur=1,extmask=msadi) # DeSpot(p1=22,p2=5, pwidth=100,pheight=140,mthres=11,merode=58,p1percent=25,sign=1,show=0,seg=1,color=true,motpn=false,minpts=6,maxpts=1200,\ # mwidth=7,mheight=5,dilate=2,mscene=90,fitluma=true,blur=2,ranked=true,interlaced=false,extmask=msadi) # DeSpot(p1=30,p2=22,pwidth=400,pheight=300, mthres=20,merode=33,p1percent=10,sign=1,show=0,seg=2,color=true,motpn=true,extmask=msadi) # ==== SHARPENING & DEBANDING ==== sharpen(last_sharp,mmx=false).blur(last_blur,mmx=false).sharpen(last_sharp,mmx=false) GradFun2DBmod(thr=1.51,thrC=1.6,str=0.8,strC=0.0,temp=40,adapt=64) SelectEvery(3,1) LSFMod(strength=75, smode=3) LSFMod(strength=30, smode=1) Gradfun2dbmod(thr=1.4,thrC=1.6,str=0.8,strC=0,temp=50,adapt=64) #SmoothLevels(3,1.0,255,0,252, useopt=0, HQ=true, useMT=1) # Для удаления пятен ###[FILTERING]### |
Гостям запрещено создавать сообщения!
|
BadFrames 1 год 10 мес. назад #4537
|
1. Я понимаю, что вы захотели сменить стабилизацию, фильтр очистки грязи, для увеличения резкости применили несколько раз UNSHARPMASK и просто sharpen, хотя могли запросто увеличить резкость в LSFmod, НО ПОЯСНИТЕ зачем вы применили интерполяцию дополнительных кадров?
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] # ==== CHANGING FRAME RATE WITH INTERPOLATION/FINAL SHARPENING === InterFrame (GPU=false, Preset="Medium", Tuning ="Film", NewNum=numerator, NewDen=denumerator, OverrideAlgo=23, InputType="2D", Cores=1) У вас , что исходник имеет частоту прокрутки 18.75 fps, как у 8 мм киноплёнки или обрабатываете всё же материал прогрессивного (25p ) или интерлейсного (25i) камкодера ? 2. Где у вас в самом нижнем скрипте задействованы вектора vf2 и vb2 ? |
Никогда не учите свинью танцевать. Это только раздражает свинью, и вы напрасно тратите своё время...
Последнее редактирование: 1 год 10 мес. назад от Tempter57.
Гостям запрещено создавать сообщения!
|
BadFrames 1 год 10 мес. назад #4538
|
1. InterFrame (GPU=false... разместил по ошибке, т.к. fps не нужно 18,5., а только 24 и выше.
2. Когда после vf2 и vb2 я пишу: den = cleaned.MDegrain2(csuper, vb1, vf1, vb2, vf2, thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2,limit=limit) \.unsharpmask(USM_sharp_ness3,USM_radi_us3,0) dsuper = den.MSuper(pel=2,levels=1,chroma=true) появляется ошибка - неопознанная команда cleaned |
Последнее редактирование: 1 год 10 мес. назад от Евгений Михайлович. Причина: Исправил
Гостям запрещено создавать сообщения!
|
BadFrames 1 год 10 мес. назад #4539
|
С учётом изменений в скрипте вам надо вместо
den = cleaned.MDegrain2(csuper, vb1, vf1, vb2, vf2, thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2,limit=limit) вписать\.unsharpmask(USM_sharp_ness3,USM_radi_us3,0) dsuper = den.MSuper(pel=2,levels=1,chroma=true) den = rdr.MDegrain2(rdr_super, vb1, vf1, vb2, vf2, thSAD=thSAD,thSCD1=thSCD1,thSCD2=thSCD2,limit=limit)
\.unsharpmask(USM_sharp_ness3,USM_radi_us3,0)
dsuper = den.MSuper(pel=2,levels=1,chroma=true) И если уж применяете шумодав den, то тогда строки перед Despot ,будут иметь вид den = rdr.MDegrain2(rdr_super,vb1,vf1,vb2,vf2,thSAD=450,thSCD1=thSCD1,thSCD2=130,limit=235)
super =den.MSuper(pel=2, sharp=0, rfilter=2)
cf = MFlow(den, super, vf1, thSCD1=thSCD1)
cb = MFlow(den, super, vb1, thSCD1=thSCD1)
sadf = den.MMask(vf1, ml=ml, kind=1, gamma=1, thSCD1=thSCD1) # маска SAD вперед
sadb = den.MMask(vb1, ml=ml, kind=1, gamma=1, thSCD1=thSCD1) # маска SAD назад
msadf = sadf.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD вперед
msadb = sadb.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD назад
msad = MT_Logic(msadf,msadb,"or") # комбинированная инвертированная маска SAD
msad = msad.MT_Expand() # расширенная маска
msadi = Interleave(msad, msad, msad) # тройное повторение маски
interleave(cf, den, cb) den = rdr.MDegrain2(rdr_super,vb1,vf1,vb2,vf2,thSAD=450,thSCD1=thSCD1,thSCD2=130,limit=235) шарпер unsharp_mask или любой другой. Также можно увеличить резкость, отшарпив немного супер клип rdr_super немного выше по скрипту. |
Никогда не учите свинью танцевать. Это только раздражает свинью, и вы напрасно тратите своё время...
Последнее редактирование: 1 год 10 мес. назад от Tempter57.
Гостям запрещено создавать сообщения!
Спасибо сказали: Евгений Михайлович
|
BadFrames 1 год 10 мес. назад #4540
|
Бардак и несуразица не только в скрипте, но и в моей СТАРОЙ голове.
MDegrain2 : wrong source or super frame size ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] #avstp.dll #ccd.vdf #vdf_arguments:ccd:0 #AutoAdjust.dll #Depan.dll #DepanEstimate.dll #GetDups.dll #DeSpot.dll #deflicker.dll #ReduceFlickerSSE2.dll #RemovedirtSSE2.dll #RGTools.dll #RemoveGrainTSSE2.dll #mvtools2mod.dll #Warpsharp.dll #masktools2.dll #SmoothAdjust.dll #AddGrainC.dll #Gradfun2db.dll #03_RemoveDirtMC.avs #Gradfun2dbmod 1.5.avsi #Removedirt.avs #LSFmod v1.9.avsi # setmemorymax(640) RemoveGrain(0) # No-Op filter, just to do frame request ChangeFPS(last,last,true) # initiate a small forward buffer ConvertToRGB32() #ccd(9,0) # удаление радужности и цветового шума ConvertToYV12() # AutoAdjust(auto_gain=true, auto_balance=true) # ==== COLOR AND LEVELS PARAMATERS ==== saturation=1.0 # for all outputs gamma=1.0 # for all outputs blue=0 red=0 # manual color adjustment, when returning result3 or result4. Values can be positive or negative black_level=0 white_level=255 output_black=0 output_white=255 # manual levels, when returning result4 # ==== AUTO LEVELS PARAMETERS ==== autolev_low=6 # limit of autolevels low output autolev_high=235 # limit of autolevels high output # Частичная стабилизация изображения dxmax=20 dymax=20 est_left=dxmax*2 est_top=dymax*2 est_right=dxmax*2 est_bottom=dymax*2 # crop values for special source = last.trim(1, 0) # stab_reference = source.crop(dxmax*2,dymax*2,-dxmax*2,-dymax*2).mt_binarize(threshold=80,upper=true,U=-128,V=-128) # mdata = DePanEstimate(stab_reference,trust=3.0,dxmax=dxmax,dymax=dymax) # DePanStabilize(source,data=mdata,cutoff=1.0,dxmax=dxmax,dymax=dymax,pixaspect=1.094,method=0,mirror=15) # or pixaspect=0.911 for NTSC pre = source.removegrain(11) Super = pre.MSuper(pel=2) vectors = MAnalyse(Super, isb=false, blksize=16, delta=1, search=5) globalmotion = MDepan(pre, vectors, zoom=true, rot=false, pixaspect=1.094, error=15.0, info=false, \ wrong=10.0, zerow=0.05, range=2, thSCD1=400, thSCD2=130) DepanStabilize(source, data=globalmotion, cutoff=1.0, damping=0.9, initzoom=1.0, addzoom=true, prev=2, next=2, mirror=15, blur=300, \ dxmax=dxmax, dymax=dymax, zoommax=1.05, rotmax=0.5, subpixel=2, pixaspect=1.094, fitlast=0, tzoom=3.0, info=false) stab = last.crop(dxmax,dymax,-dxmax,-dymax) filtered = stab.RemoveDirt(false,10) # ==== CLEANING PARAMETERS ==== dirt_strenght=30 # set this lower for clean films. # ==== DENOISING PARAMETERS ==== thSAD = 480 ml = 130 # масштаб маски thSCD1 = 500 # порог смены сцены thSCD2 = 130 limit = 255 # ==== SHARPENING PARAMETERS ==== USM_sharp_ness=30 USM_radi_us=3 # this is the start value for the unsharpmask sharpening # do not set radius less then 3 # the script will automatically add two other steps with lower radius last_sharp=0.2 # final sharpening step after interpolation last_blur=0.15 # this smooths out the heavy sharpening effects # ==== STABILIZING/CROPPING ==== stab_reference = source.colorYUV(autogain=true) mdata = DePanEstimate(stab_reference,dxmax=dxmax,dymax=dymax) stab = DePanStabilize(source,data=mdata,dxmax=dxmax,dymax=dymax,method=0,mirror=15)#.deflicker() stab2 = stab.crop(0,0,-0,-0) \.ConvertToRGB32().ccd(20,0).ConvertToYV12() stab3 = DePanStabilize(source,data=mdata,dxmax=dxmax,dymax=dymax,method=0,info=true) WS = width(stab) HS = height(stab) stab4 = stab3.addborders(10,10,10,10,$B1B1B1).Lanczos4Resize(WS,HS) #stab5 = Lanczos4Resize(stab2).sharpen(0.5) dark = 32 bright = 196 lmask1 = mt_lut(stab,"x "+string(dark)+" < 255 x "+string(bright)+" > 255 0 ? ?",U=1,V=1).removegrain(19,-1,-1) min = 16 max = 255 lmask2 = mt_lutxy(stab,filtered,"x y - abs "+string(min)+" < 0 x y - abs "+string(max)+" > 0 255 ? ?",U=1,V=1).removegrain(19,-1,-1) rdr = mt_merge(stab,filtered,mt_logic(lmask1,lmask2,"min"),luma=true) preNR_super = filtered.MSuper(pel=2, sharp=4, rfilter=4) rdr_super = rdr.MSuper(pel=2, sharp=2, levels=1) vb2 = MAnalyse(preNR_super, isb=true, truemotion=true, delta=2, blksize=8, overlap=4, dct=5) vb1 = MAnalyse(preNR_super, isb=true, truemotion=true, delta=1, blksize=8, overlap=4, dct=5) vf1 = MAnalyse(preNR_super,isb=false, truemotion=true, delta=1, blksize=8, overlap=4, dct=5) vf2 = MAnalyse(preNR_super,isb=false, truemotion=true, delta=2, blksize=8, overlap=4, dct=5) den = rdr.MDegrain2(rdr_super,vb1,vf1,vb2,vf2,thSAD=450,thSCD1=thSCD1,thSCD2=130,limit=235) super =den.MSuper(pel=2, sharp=0, rfilter=2) cf = MFlow(den, super, vf1, thSCD1=thSCD1) cb = MFlow(den, super, vb1, thSCD1=thSCD1) sadf = den.MMask(vf1, ml=ml, kind=1, gamma=1, thSCD1=thSCD1) # маска SAD вперед sadb = den.MMask(vb1, ml=ml, kind=1, gamma=1, thSCD1=thSCD1) # маска SAD назад msadf = sadf.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD вперед msadb = sadb.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD назад msad = MT_Logic(msadf,msadb,"or") # комбинированная инвертированная маска SAD msad = msad.MT_Expand() # расширенная маска msadi = Interleave(msad, msad, msad) # тройное повторение маски interleave(cf, den, cb) # анализируеи и компенсируем движение вперед и назад (к текущему кадру) ml = 130 # масштаб маски thSCD1 = 500 # порог смены сцены sadf = stab.MMask(vf1, ml=ml, kind=1, gamma=1, thSCD1=thSCD1) # маска SAD вперед sadb = stab.MMask(vb1, ml=ml, kind=1, gamma=1, thSCD1=thSCD1) # маска SAD назад msadf = sadf.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD вперед msadb = sadb.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD назад msad = MT_Logic(msadf,msadb,"or") # комбинированная инвертированная маска SAD msad = msad.MT_Expand() # расширенная маска msadi = Interleave(msad, msad, msad) # тройное повторение маски # ==== UNSHARPMASK AUTO_PARAMETERS ==== USM_sharp_ness1 = USM_sharp_ness USM_sharp_ness2 = USM_sharp_ness+(USM_sharp_ness/2) USM_sharp_ness3 = USM_sharp_ness*2 USM_radi_us1 = USM_radi_us USM_radi_us2 = USM_radi_us-1 USM_radi_us3 = USM_radi_us2-1 # ==== большие черные пятна ==== # DeSpot(mthres=8,mwidth=7,mheight=5,merode=33,interlaced=false,median=false,p1=15,p2=8,pwidth=50,pheight=50,ranked=true,sign=1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== толстые линии типа волос (избегают реальных волос) ==== # DeSpot(mthres=13,mwidth=7,mheight=5,merode=24,interlaced=false,median=false,p1=15,p2=13,pwidth=140,pheight=100,ranked=true,sign=-1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== линии, входящие в контакт с движением, избегите области движения ==== # DeSpot(mthres=13,mwidth=7,mheight=5,merode=16,interlaced=false,median=false,p1=15,p2=13,pwidth=140,pheight=100,ranked=true,sign=-1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # ==== маленькие точки и пыль ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=33,interlaced=false,median=false,p1=15,p2=8,pwidth=6,pheight=5,ranked=true,sign=0,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=2,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # DeSpot(mthres=8,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=10,p2=6,pwidth=720,pheight=576,ranked=true,sign=2,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # ==== Длинные горизонтальные затиры ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=15,p2=8,pwidth=100,pheight=2,ranked=true,sign=-1,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== Маленькие компактные пятна ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=15,p2=8,pwidth=10,pheight=10,ranked=true,sign=-1,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ===================================== DeSpot(p1=20,p2=4,pwidth=200,pheight=150,mthres=22, merode=33,sign=2,show=0,seg=0,color=false,motpn=true,fitluma=true, extmask=msadi) DeSpot(mthres=12,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=15,p2=8,pwidth=10,pheight=10,ranked=true,sign=-1,maxpts=0,\ p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # DeSpot(p1=20,p2=12,pwidth=768,pheight=576,mthres=80,merode=33,sign=0,show=0,seg=0,color=true,motpn=true,extmask=msadi) # DeSpot(p1=12,p2=22,pwidth=100,pheight=100,mthres=22,merode=25,p1percent=10,sign=0,show=0,seg=1,color=true,motpn=true,extmask=msadi) # DeSpot(p1=15,p2=1, pwidth=40, pheight=40, mthres=4, merode=25,p1percent=10,sign=0,show=0,seg=1,color=true,motpn=true,extmask=msadi) # DeSpot(p1=35,p2=11,pwidth=250,pheight=250,mthres=23,merode=40,p1percent=1,sign=1,show=0,seg=2,\ # color=true,motpn=false,minpts=6,dilate=1,mscene=100,fitluma=true,blur=1,extmask=msadi) # DeSpot(p1=22,p2=5, pwidth=100,pheight=140,mthres=11,merode=58,p1percent=25,sign=1,show=0,seg=1,color=true,motpn=false,minpts=6,maxpts=1200,\ # mwidth=7,mheight=5,dilate=2,mscene=90,fitluma=true,blur=2,ranked=true,interlaced=false,extmask=msadi) # DeSpot(p1=30,p2=22,pwidth=400,pheight=300, mthres=20,merode=33,p1percent=10,sign=1,show=0,seg=2,color=true,motpn=true,extmask=msadi) SelectEvery(3,1) # ==== SHARPENING & DEBANDING ==== sharpen(last_sharp,mmx=false).blur(last_blur,mmx=false).sharpen(last_sharp,mmx=false) GradFun2DBmod(thr=1.51,thrC=1.6,str=0.8,strC=0.0,temp=40,adapt=64) LSFMod(strength=75, smode=3) Gradfun2dbmod(thr=1.4,thrC=1.6,str=0.8,strC=0,temp=50,adapt=64) #SmoothLevels(3,1.0,255,0,252, useopt=0, HQ=true, useMT=1) # Для удаления пятен ###[FILTERING]### |
Последнее редактирование: 1 год 10 мес. назад от Евгений Михайлович.
Гостям запрещено создавать сообщения!
|
BadFrames 1 год 10 мес. назад #4541
|
Евгений Михайлович пишет:
Бардак и несуразица не только в скрипте, но и в моей СТАРОЙ голове. Приводите всегда полный скрипт иначе, как я вам могу помочь? У вас сейчас идёт сообщение о разных размерах разрешения клипа, суперклипа и данных векторов для векторного анализа внутри функции MDegrain2.MDegrain2 : wrong source or super frame size Посмотрел скрипт: хаос только усилился, вы свалили в кучу несколько скриптов обработки,выполнили несколько стабилизаций изображения и подавление цветового шума матрицы камкодера, два дебандера, нигде не задействованы Unsharpmasks. Трудно сказать, что должно для вас стать базовым клипом для векторного анализа, поскольку вы применяете первоначальный stab, хотя уже давно есть и stab4. А от него дальше идёт уже filtered = stab4.RemoveDirt(false,10) . Это просто хаос , а не скрипт. Я даже не представляю, что же вы хотите . Лучше сделать небольшой сэмпл исходника на пару минут и попросить помощь зала , чтобы вам подобрали под ваш исходник скрипт обработки. Просто такие скрипты не правятся, а выкидываются в мусор. |
Никогда не учите свинью танцевать. Это только раздражает свинью, и вы напрасно тратите своё время...
Последнее редактирование: 1 год 10 мес. назад от Tempter57.
Гостям запрещено создавать сообщения!
Спасибо сказали: Евгений Михайлович
|
BadFrames 1 год 10 мес. назад #4542
|
Я попытался объединить 2 пресета в один для: стабилизации, удаления грязи и повышения резкости. Замысел мой Вы поняли
1. Я понимаю, что вы захотели сменить стабилизацию, фильтр очистки грязи, для увеличения резкости применили несколько раз UNSHARPMASK... и внесли к скрипту изменения, которые я и внес в первоначальный.Сейчас Вы опять пишете про хаос и Я даже не представляю, что же вы хотите Я хочу, в скрипт DVC Despot.avs внести максимальную стабилизацию и повысить резкость. |
Гостям запрещено создавать сообщения!
|
BadFrames 1 год 10 мес. назад #4543
|
Тогда так:
ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] #avstp.dll #ccd.vdf #vdf_arguments:ccd:0 #AutoAdjust.dll #Depan.dll #DepanEstimate.dll #GetDups.dll #DeSpot.dll #deflicker.dll #Removedirt.dll #RGTools.dll #masktools2.dll #RemoveGrainTSSE2.dll #mvtools2.dll #Warpsharp.dll #SmoothAdjust.dll #AddGrainC.dll #Gradfun2db.dll #RemoveDirtMC_03.avs #Gradfun2dbmod 1.5.avsi #Removedirt.avs #LSFmod v1.9.avsi # setmemorymax(640) ChangeFPS(last,last,true) # initiate a small forward buffer ConvertToRGB32() ccd(7,0) # удаление радужности и цветового шума ConvertToYV12() # AutoAdjust(auto_gain=true, auto_balance=true) # ==== SHARPENING PARAMETERS ==== USM_sharp_ness=30 USM_radi_us=3 # this is the start value for the unsharpmask sharpening # do not set radius less then 3 # the script will automatically add two other steps with lower radius USM_sharp_ness1 = USM_sharp_ness USM_sharp_ness2 = USM_sharp_ness+(USM_sharp_ness/2) USM_sharp_ness3 = USM_sharp_ness*2 USM_radi_us1 = USM_radi_us USM_radi_us2 = USM_radi_us-1 USM_radi_us3 = USM_radi_us2-1 # Частичная стабилизация изображения dxmax=24 dymax=18 source = last.trim(1, 0) stab_reference = source.crop(dxmax*2,dymax*2,-dxmax*2,-dymax*2).mt_binarize(threshold=80,upper=true,U=-128,V=-128) mdata = DePanEstimate(stab_reference,trust=1.0,dxmax=dxmax,dymax=dymax) DePanStabilize(source,data=mdata,cutoff=0.5,dxmax=dxmax,dymax=dymax,pixaspect=1.094,mirror=15) # or pixaspect=0.911 for NTSC /* pre = source.removegrain(11) Super = pre.MSuper(pel=2) vectors = MAnalyse(Super, isb=false, blksize=16, delta=1, search=5) globalmotion = MDepan(pre, vectors, zoom=true, rot=false, pixaspect=1.094, error=15.0, info=false, \ wrong=10.0, zerow=0.05, range=2, thSCD1=400, thSCD2=130) DepanStabilize(source, data=globalmotion, cutoff=1.0, damping=0.9, initzoom=1.0, addzoom=true, prev=2, next=2, mirror=15, blur=300, \ dxmax=dxmax, dymax=dymax, zoommax=1.05, rotmax=0.5, subpixel=2, pixaspect=1.094, fitlast=0, tzoom=3.0, info=false) */ stab = last.crop(dxmax,dymax,-dxmax,-dymax) #filtered = stab.RemoveDirt(false,10) filtered = RemoveDirtMC(stab,40) dark = 32 bright = 196 lmask1 = mt_lut(stab,"x "+string(dark)+" < 255 x "+string(bright)+" > 255 0 ? ?",U=1,V=1).removegrain(19,-1,-1) min = 16 max = 255 lmask2 = mt_lutxy(stab,filtered,"x y - abs "+string(min)+" < 0 x y - abs "+string(max)+" > 0 255 ? ?",U=1,V=1).removegrain(19,-1,-1) rdr = mt_merge(stab,filtered,mt_logic(lmask1,lmask2,"min"),luma=true).unsharpmask(USM_sharp_ness1,USM_radi_us1,0).unsharpmask(USM_sharp_ness2,USM_radi_us2,0) preNR_super = filtered.MSuper(pel=2, sharp=0, rfilter=2) rdr_super = rdr.MSuper(pel=2, sharp=0, levels=1) vb2 = MAnalyse(preNR_super, isb=true, truemotion=true, delta=2, blksize=8, overlap=4, dct=5) vb1 = MAnalyse(preNR_super, isb=true, truemotion=true, delta=1, blksize=8, overlap=4, dct=5) vf1 = MAnalyse(preNR_super,isb=false, truemotion=true, delta=1, blksize=8, overlap=4, dct=5) vf2 = MAnalyse(preNR_super,isb=false, truemotion=true, delta=2, blksize=8, overlap=4, dct=5) # анализируеи и компенсируем движение вперед и назад (к текущему кадру) ml = 130 # масштаб маски thSCD1 = 450 # порог смены сцены den = rdr.MDegrain2(rdr_super,vb1,vf1,vb2,vf2,thSAD=450,thSCD1=thSCD1,thSCD2=130,limit=235).unsharpmask(USM_sharp_ness3,USM_radi_us3,0) super =den.MSuper(pel=2, sharp=0, rfilter=2) cf = MFlow(den, super, vf1, thSCD1=thSCD1) cb = MFlow(den, super, vb1, thSCD1=thSCD1) sadf = den.MMask(vf1, ml=ml, kind=1, gamma=1, thSCD1=thSCD1) # маска SAD вперед sadb = den.MMask(vb1, ml=ml, kind=1, gamma=1, thSCD1=thSCD1) # маска SAD назад msadf = sadf.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD вперед msadb = sadb.MT_Binarize(20,upper=true) # двоичная инвертированная маска SAD назад msad = MT_Logic(msadf,msadb,"or") # комбинированная инвертированная маска SAD msad = msad.MT_Expand() # расширенная маска msadi = Interleave(msad, msad, msad) # тройное повторение маски interleave(cf, den, cb) # ==== большие черные пятна ==== # DeSpot(mthres=8,mwidth=7,mheight=5,merode=33,interlaced=false,median=false,p1=15,p2=8,pwidth=50,pheight=50,ranked=true,sign=1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== толстые линии типа волос (избегают реальных волос) ==== # DeSpot(mthres=13,mwidth=7,mheight=5,merode=24,interlaced=false,median=false,p1=15,p2=13,pwidth=140,pheight=100,ranked=true,sign=-1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== линии, входящие в контакт с движением, избегите области движения ==== # DeSpot(mthres=13,mwidth=7,mheight=5,merode=16,interlaced=false,median=false,p1=15,p2=13,pwidth=140,pheight=100,ranked=true,sign=-1,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=0,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # ==== маленькие точки и пыль ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=33,interlaced=false,median=false,p1=15,p2=8,pwidth=6,pheight=5,ranked=true,sign=0,maxpts=0,\ # p1percent=10,dilate=1,fitluma=true,blur=1,tsmooth=2,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # DeSpot(mthres=8,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=10,p2=6,pwidth=720,pheight=576,ranked=true,sign=2,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=1,color=true,mscene=40,minpts=0,extmask=msadi) # ==== Длинные горизонтальные затиры ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=15,p2=8,pwidth=100,pheight=2,ranked=true,sign=-1,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ==== Маленькие компактные пятна ==== # DeSpot(mthres=12,mwidth=7,mheight=5,merode=25,interlaced=false,median=false,p1=15,p2=8,pwidth=10,pheight=10,ranked=true,sign=-1,maxpts=0,\ # p1percent=2,dilate=1,fitluma=true,blur=4,tsmooth=4,show=0,mark_v=255,motpn=false,seg=2,color=true,mscene=40,minpts=0,extmask=msadi) # ===================================== DeSpot(p1=20,p2=4,pwidth=200,pheight=150,mthres=22, merode=33,sign=2,show=0,seg=0,color=false,motpn=true,fitluma=true, extmask=msadi) # DeSpot(p1=20,p2=12,pwidth=768,pheight=576,mthres=80,merode=33,sign=0,show=0,seg=0,color=true,motpn=true,extmask=msadi) # DeSpot(p1=12,p2=22,pwidth=100,pheight=100,mthres=22,merode=25,p1percent=10,sign=0,show=0,seg=1,color=true,motpn=true,extmask=msadi) # DeSpot(p1=15,p2=1, pwidth=40, pheight=40, mthres=4, merode=25,p1percent=10,sign=0,show=0,seg=1,color=true,motpn=true,extmask=msadi) # DeSpot(p1=35,p2=11,pwidth=250,pheight=250,mthres=23,merode=40,p1percent=1,sign=1,show=0,seg=2,\ # color=true,motpn=false,minpts=6,dilate=1,mscene=100,fitluma=true,blur=1,extmask=msadi) # DeSpot(p1=22,p2=5, pwidth=100,pheight=140,mthres=11,merode=58,p1percent=25,sign=1,show=0,seg=1,color=true,motpn=false,minpts=6,maxpts=1200,\ # mwidth=7,mheight=5,dilate=2,mscene=90,fitluma=true,blur=2,ranked=true,interlaced=false,extmask=msadi) # DeSpot(p1=30,p2=22,pwidth=400,pheight=300, mthres=20,merode=33,p1percent=10,sign=1,show=0,seg=2,color=true,motpn=true,extmask=msadi) SelectEvery(3,1) LSFMod(strength=75, smode=3) LSFMod(strength=40, smode=1) Gradfun2dbmod(thr=1.4,thrC=1.6,str=0.8,strC=0,temp=50,adapt=64) # Для удаления пятен Там два вида стабилизации, в первом подберите параметры trust и cutoff, если будет дрыг. Вы так и не сказали: исходник прогрессивный или интерлейсный? |
Никогда не учите свинью танцевать. Это только раздражает свинью, и вы напрасно тратите своё время...
Последнее редактирование: 1 год 10 мес. назад от Tempter57.
Гостям запрещено создавать сообщения!
Спасибо сказали: admin, Евгений Михайлович
|
BadFrames 1 год 10 мес. назад #4544
|
Прогрессивный fps=25.000. Наверное поэтому количество кадров уменьшилось в 3 раза, после предложенного Вами скрипта.
|
Гостям запрещено создавать сообщения!
|
BadFrames 1 год 10 мес. назад #4545
|
Евгений Михайлович пишет:
Прогрессивный fps=25.000. Наверное поэтому количество кадров уменьшилось в 3 раза, после предложенного Вами скрипта. Мой скрипт уменьшает количество кадров в сравнении с исходником на 1 кадр из-за строки source = last.trim(1, 0). При source = last количество кадров полностью соответствует исходнику.В вашем варианте скрипта напрочь отсутствовала строка interleave(cf, den, cb) . Это ошибка, о которой я вам уже сообщал выше, когда рассматривался кусочек скрипта с векторным анализом. |
Никогда не учите свинью танцевать. Это только раздражает свинью, и вы напрасно тратите своё время...
Последнее редактирование: 1 год 10 мес. назад от Tempter57.
Гостям запрещено создавать сообщения!
Спасибо сказали: Евгений Михайлович
|
BadFrames 1 год 9 мес. назад #4548
|
На странице с описанием MVTools avisynth.org.ru/mvtools/mvtools2-rus.html в описание
Чтобы восстановить испорченные кадры интерполяцией c MFlowInter: ВНИМАНИЕ: Спойлер! [ Нажмите, чтобы развернуть ][ Нажмите, чтобы скрыть ] AVISource("c:\test.avi") # или MPEG2Source, DirectShowSource, некоторый предыдущий фильтр super = MSuper() backward_vectors = super.MAnalyse(isb = true, delta=2) forward_vectors = super.MAnalyse(isb = false, delta=2) inter = MFlowInter(super, backward_vectors, forward_vectors, time=50, ml=70) # Предположим плохие кадры 50 и 60 trim(0,49) ++ inter.trim(49,-1) \ ++ trim(51,59) ++ inter.trim(59,-1) ++ trim(61,0) Каким образом прописать функцию для восстановления двух первых и двух последних кадров? |
Гостям запрещено создавать сообщения!
|
BadFrames 1 год 9 мес. назад #4551
|
Интерполированные кадры всегда идут с блендами. У вас необходимо интерполировать два в начале клипа, два в конце. Мой совет: лучше просто их обрезать. Почему так: в первом случае нет информации о предыдущих кадрах, во втором - о последующих. Для восстановления битых кадров чаще используют функцию InterpolateFrames2.avsi и скрипт фильтрации на её основе InterpolateFrames2.avs. Он довольно эффективен, если битые кадры находятся не в начальных или конечных кадрах. Пояснение я дал внутри скрипта, посмотрите внимательно.
|
Никогда не учите свинью танцевать. Это только раздражает свинью, и вы напрасно тратите своё время...
Последнее редактирование: 1 год 9 мес. назад от Tempter57.
Гостям запрещено создавать сообщения!
Спасибо сказали: Евгений Михайлович
|
BadFrames 1 год 9 мес. назад #4552
|
Спасибо!
C первым кадром можно BadFrames(0, blend=true), но как заменить или сделать дубль последнего? Если к векторному анализу, как вперед так и назад, добавить ЗАМЕЧАТЕЛЬНЫЙ плагин от Fizick ExInpaint avisynth.org.ru/exinpaint/exinpaint-rus.html то наверно могло бы получиться. Жаль. что я так не могу. |
Последнее редактирование: 1 год 9 мес. назад от Евгений Михайлович.
Гостям запрещено создавать сообщения!
|
Время создания страницы: 0.154 секунд