Показать сообщение отдельно
Старый 04.11.2010, 17:03   #463
lion57
Зритель
Медаль пользователю. ЗОЛОТО Новичок
Регистрация: 22.02.2008
Адрес: Донецк
Сообщения: 50
Репутация: 23
Normallhuman сказал(a):
Подскажите , с помощью какого фильтра или ресайз-фильтра добиться максимально адекватной четкости ( или это просто sharpness ...) при кодировании BD в Avi 720х... с помощью XviD4PSP ?

Спасибо !
Для получения качественного avi надо обязательно сильно сжать видеоряд. даже если исходник очень качественный. Поскольку разрешение исходника большое 1920х1080 и конечная цель avi, то для ускорения процесса обработки можно пойти на маленькую хитрость, предусмотренную в конвертере, а именно кроп и ресайз(например , spline36resize) поставить в начале скрипта(смотрите Глобальные настройки). Это позволит сократить число обрабатываемых блоков более чем в 4 раза и соответственно сократить время обработки фильтрами AviSynth. Пресет для обработки можете применить , например, такой:
Код:
#plugin_files #RemoveGrainSSE2.dll #RepairSSE2.dll #hqdn3d.dll #fft3dfilter.dll #dfttest.dll #mvtools2.dll #AddGrainC.dll #Warpsharp.dll #mt_masktools-25.dll #MT.dll #GradFun2DB.dll #Ylevels.avs #LimitedSharpenFaster Mod.avs #GradFun2DBmod.avs setmemorymax(768) MT(""" #ColorYUV(gain_y=0,cont_y=0,cont_u=0,cont_v=0,gain_v=0,gain_u=-0,off_u=-0,off_v=-0) source = last preNR = source.hqdn3d(2,1.5,3,2.25) preNR_super = preNR.MSuper(pel=2, sharp=2, rfilter=2) source_super = source.MSuper(pel=2, sharp=2, levels=1) vb2 = MAnalyse(preNR_super, isb=true, truemotion=true, delta=2, blksize=16, overlap=8, lambda=2000, search=5) vb1 = MAnalyse(preNR_super, isb=true, truemotion=true, delta=1, blksize=16, overlap=8, lambda=2000, search=5) vf1 = MAnalyse(preNR_super,isb=false, truemotion=true, delta=1, blksize=16, overlap=8, lambda=2000, search=5) vf2 = MAnalyse(preNR_super,isb=false, truemotion=true, delta=2, blksize=16, overlap=8, lambda=2000, search=5) mask1 = source.mmask(vb2, ml=300, kind = 1, Ysc = 255, gamma=0.999, thSCD1 = 400) mask2 = source.mmask(vb1, ml=300, kind = 1, Ysc = 255, gamma=0.999, thSCD1 = 400) mask3 = source.mmask(vf1, ml=300, kind = 1, Ysc = 255, gamma=0.999, thSCD1 = 400) mask4 = source.mmask(vf2, ml=300, kind = 1, Ysc = 255, gamma=0.999, thSCD1 = 400) maskb = mt_lutxy(mask1,mask2,"x 255 < y 255 < x y + 2 / x ? y ?") maskf = mt_lutxy(mask3,mask4,"x 255 < y 255 < x y + 2 / x ? y ?") tmask = mt_lutxy(maskb,maskf,"x 255 < y 255 < x y + 2 / x ? y ? 32 - 255 * 223 /")# комбинированная маска оценки движения SAD NR = source.MDegrain2(source_super,vb1,vf1,vb2,vf2,thSAD=300,thSCD1=320,thSCD2=100) mrg = mt_merge(source, NR, tmask,Y=3, U=3,V=3) mrg_super = mrg.Msuper(pel=2) cf2 = MCompensate(mrg, mrg_super, vf2, thSAD=650, thSCD1=300) cf1 = MCompensate(mrg, mrg_super, vf1, thSAD=650, thSCD1=300) cb1 = MCompensate(mrg, mrg_super, vb1, thSAD=650, thSCD1=300) cb2 = MCompensate(mrg, mrg_super, vb2, thSAD=650, thSCD1=300) interleave(cf2, cf1, mrg, cb1, cb2) Temporalsoften(2,4,5,10,2) #dfttest(sstring = "0.0:4.0 0.64:2.4 0.82:3.0 1.0:2.0", ftype=1, tbsize=5,threads=1) #fft3dfilter(wintype=1,degrid=1,bw=32,bh=32,ow=16,oh=16,bt=5,sigma=2,sigma2=0.8,sigma3=1.5,sigma4=0.5,plane=0,ncpu=1) selectevery(5,2) den = last # PROTECTING threshold = 16 cutoff = 64 maxdiff = 4 rg17 = den.removegrain(17,-1) iOB = source.mt_lut("x "+string(cutoff)+" >= x 0 ?",U=1,V=1) mB = mt_makediff(iOB,rg17,U=1,V=1).mt_binarize(128+threshold,upper=false,U=1,V=1).removegrain(5,-1) lB = mt_lutxy(den,source,"x y - abs "+string(maxdiff)+" <= x x y - 0 < y "+string(maxdiff)+" - x ? ?",U=1,V=1) smB = mt_merge(den,lB,mB,U=2,V=2) # EDGECLEANING mP = mt_edge(smB,"prewitt",0,255,0,0,V=1,U=1) mS = mP.mt_expand(mode=mt_square(radius=2),U=1,V=1).mt_inflate(U=1,V=1) mD = mt_lutxy(mS,mP.mt_inflate(U=1,V=1),"x y - "+string(64)+" <= 0 x y - ?",U=1,V=1).mt_inflate(U=1,V=1).removegrain(20,-1) smE = mt_merge(smB,Eval("smB." + "Removegrain(2,0)"),mD,luma=true,U=3,V=3) # MASKING mE = mt_edge(smE,"prewitt",0,255,0,0,V=1,U=1).mt_lut(expr="x 1.8 ^",U=1,V=1).removegrain(4,-1).mt_inflate(U=1,V=1) mL = mt_logic(tmask.invert(),mE,"min",U=1,V=1).removegrain(20,-1) mF = mt_logic(tmask,mE,"max",U=1,V=1).removegrain(20,-1) # SHARPENING pmax = source.mt_logic(cb1, "max").mt_logic(cf1, "max") pmin = source.mt_logic(cb1, "min").mt_logic(cf1, "min") sharp = smE.LSFmod(defaults="fast",preblur="ON", strength=90) shrp = sharp.mt_clamp(pmax,pmin,0,0,U=2,V=2) sL = mt_merge(smE,shrp,mL,U=2,V=2) # ENHANCING GF = sL.GradFun2DBmod(thr=1.4,thrC=1.8,str=0.4,strC=0.0,temp=90,adapt=64) FSc = mt_merge(GF,sL,mF,luma=true,U=3,V=3) FSc#.mergechroma(den) YlevelsS(0,1.0,255,0,255,false) """,threads=4,overlap=16,splitvertical=false) # or threads=2 # Назначение: для качественной обработки BD и DVD # Тип предварительного шумоподавителя: hqdn3d # Тип основного шумоподавителя: на основе векторного анализа оценки движения c последовательным временнЫм и пространственно-временным шумоподавителем # Тип шарпера: LSFmod # Наличие фильтра DeBanding по умолчанию: включен # Скорость обработки: медленная
Если надо меньше задавить шум, применяйте меньшее значение thSAD и снижайте радиус векторного анализа до 1. Применение fft3dfilter или dfttest значительно снизят скорость обработки, но вряд ли принесут для обработки подобного чистого исходника какую-то ощутимую пользу.
  Ответить с цитированием