-
Tempter57
-
-
Не в сети
-
Эксперт
-
- Сообщений: 68
- Спасибо получено: 93
-
-
|
maxmister
Если речь пойдёт о скрипте MSR.avs, то я вводить его не намерен, поскольку он даёт бленды на движении, особо ярко это видно на аниме, а вот модернизированную версию BlowUp Dither, рассчитанную на работу с 8, 10 и 16 битной глубиной по цвету, ввожу: ##########################################################
## A simple upsizing function ##
## version 0.3 alpha 16 november 2012 ##
## author : Tempter57 ##
##########################################################
## MVTools2mod.dll
## NNEDI3.dll
## mt_masktools-25.dll or mt_masktools-26.dll
## Removegrain.dll
## Repair.dll
## AddGrainC.dll
## dither.dll
## GradFun2DB.dll
## GrainFactory3.avs
## Dither.avsi
## DeHalo_alpha.avs
## LimitedSharpemFaster.avs
## FineSharp.avs
##########################################################
# function BlowUp()
# Resize function with noise reduction and sharpening
# Limitedsharpenfaster for 1280x720, FineSharp for 1920x1080
function BlowUp(clip clp, float "sstr", int "avgstr", int "g1str", int "g2str", int "g3str", int "g1size", int "g2size", int "g3size", \
int "avg", int "strength", int "W", int "H", bool "nnu", bool "edu", bool "exsharp", bool "LSF")
{
sstr = default(sstr, 0.85) # sharpening strength
strength = default(strength, 300) # LSF strength
avgstr = default(avgstr, 300) # averaging strength
g1str = Default( g1str, 5.0 ) # [ 0 - ???] strength of luma grain / for dark areas
# positive value for AddGrainC strength, negative value for f3kdb grain strength
g2str = Default( g2str, 6.0 ) # [ 0 - ???] strength of luma grain / for midtone areas
# positive value for AddGrainC strength, negative value for f3kdb grain strength
g3str = Default( g3str, 8.0 ) # [ 0 - ???] strength of luma grain / for bright areas
# positive value for AddGrainC strength, negative value for f3kdb grain strength
g1size = Default( g1size, 1.20 ) # [0.5 - 4.0] size of grain / for dark areas
g2size = Default( g2size, 0.90 ) # [0.5 - 4.0] size of grain / for mid-tone areas
g3size = Default( g3size, 0.60 ) # [0.5 - 4.0] size of grain / for bright areas
avg = default(avg, 2) # how many frames are averaged
nnu = default(nnu, true) # false = use Lanczos/Repair or true = NNEDI3 to upsize
edu = default(edu, true) # false = use Lanczos/Repair or true = EEDI3 to upsize
exsharp = default(exsharp, true) # use higher quality sharpener
LSF = default(LSF, true) # sharpening Limitedsharpenfaster or FineSharp
W = default(W, 1280) # выходное разрешение по горизонтали
H = default(H, 720) # выходное разрешение по вертикали
ox = clp.width
oy = clp.height
blk = blankclip(clp)
# setting up the clip for the averageing
# --------------------------------------
upsized = (nnu == true && LSF == true ) ? clp.nnedi3_rpow2(rfactor=2, cshift="Spline64resize", nsize=0, qual=2).DeHalo_alpha(rx=1.5,ry=1.5) : \
(nnu == true && LSF == false) ? clp.nnedi3_rpow2(rfactor=4, cshift="Spline64resize", nsize=0, qual=1).DeHalo_alpha(rx=1.5,ry=1.5) : \
clp.Spline36resize(ox * 2, oy * 2).Repair(clp.Gaussresize(ox * 2, oy * 2, p=100), 1)
# choosing the sharpening method:
# -------------------------------
sharp = (exsharp == true && LSF == true ) ? upsized.LSFmod(defaults="slow", strength=strength) : \
(exsharp == true && LSF == false) ? upsized.FineSharp() : \
upsized.Sharpen(sstr)
# doing the temporal averaging
# ----------------------------
src_super = upsized.MSuper(pel=2)
sharp_super = sharp.MSuper(pel=2, levels=1)
bv2 = (avg == 2) ? src_super.MAnalyse(isb=true, delta=2, blksize=16, overlap=8, truemotion=false, search=4, sadx264=3) : blk
bv1 = src_super.MAnalyse(isb=true, delta=1, blksize=16, overlap=8, truemotion=false, search=4, sadx264=3)
fv1 = src_super.MAnalyse(isb=false,delta=1, blksize=16, overlap=8, truemotion=false, search=4, sadx264=3)
fv2 = (avg == 2) ? src_super.MAnalyse(isb=false,delta=2, blksize=16, overlap=8, truemotion=false, search=4, sadx264=3) : blk
# Use the vectors to create motion and static masks, we use these for prefilter and sharpening masks
maskstar = upsized.mt_binarize(upper=false)
NR = (avg == 1) ? upsized.MDegrain1(sharp_super, bv1, fv1, thSAD=avgstr, lsb=true) : \
(avg == 2) ? upsized.MDegrain2(sharp_super, bv1, fv1, bv2, fv2, thSAD=avgstr, lsb=true) : blk
denoiced = NR.DitherPost(mode=-1).VagueDenoiser(method=4, nsteps=8, wavelet=2, Wiener=true, percent=95, chromaT=0.8, wratio=0.75, threshold=0.4)
mt_merge(denoiced, upsized, maskstar)
# ==== AddGrain & DeBanding ====
GradFun2DB(1.4).GrainFactory3(g1str,g2str,g3str,60,66,80,g1size,g2size,g3size,0,0,0,0,0,25,56,128,160)
Dither_convert_8_to_16() # конвертируем опять в 16 бит
NR.Dither_limit_dif16 (last,thr=0.7,elast=1.4) # 16 битное NR c помощью функции Dither_limit_dif16 смешиваем с 16-битным уже с дебандером
Dither_Resize16(W, H)
return (last)
} Этот скрипт оправьте в папку plugins. А так выглядит пресет под него: #RemoveGrainSSE2.dll
#RepairSSE2.dll
#nnedi3.dll
#mvtools2mod.dll
#AddGrainC.dll
#mt_masktools-26.dll
#DeHalo_alpha.avs
#Colormatrix.dll
#VagueDenoiser.dll
#dither.dll
#GradFun2DB.dll
#GrainFactory3.avs
#Dither.avsi
#BlowUp Dither.avs
#FineSharp.avs
#Limitedsharpenfaster mod.avs
setmtmode(2)
setmemorymax(1536)
# ColorMatrix(mode="Rec.601->Rec.709") # открыть при вставках в BDRip
BlowUp(nnu=true,exsharp=true,avgstr=300,avg=2,LSF=true,strength=300,g1str=5,g2str=5,g3str=6, W=1280, H=720)
# BlowUp(nnu=true,exsharp=true,avgstr=300,avg=2,LSF=true,strength=300,g1str=4,g2str=4,g3str=5, W=1280, H=544)
# BlowUp(nnu=true,exsharp=true,avgstr=200,avg=1,LSF=false,g1str=13,g2str=14,g3str=20, W=1920, H=816)
# BlowUp(nnu=true,exsharp=true,avgstr=200,avg=1,LSF=false,g1str=13,g2str=14,g3str=20, W=1920, H=1080)
OUTPUT_BIT_DEPTH = 16 # изменить на 8 при отладке или установить 10 при обрезании верхних битов скриптом
(OUTPUT_BIT_DEPTH == 16) ? Eval("""
Dither_convey_yuv4xxp16_on_yvxx() # 16-бит
""") : (OUTPUT_BIT_DEPTH == 10) ? Eval("""
Dither_quantize(10, mode=6,reducerange=true) # 10-бит
Dither_convey_yuv4xxp16_on_yvxx()
""") : DitherPost() # 8-бит
# предназначен для UpScale с шумоподавлением и повышением резкости с 8 и 10 битной глубиной
# кроп и ресайзер выполнить в начале скрипта
|