# DetailIllusion by mf # # Tries to create the illusion of detail by adding noise # near edges. # function DetailIllusion(clip input, int "strength", bool "reverse", int "level", \ bool "denoise") { strength = Default(strength, 255) # absolute strength, 0-255 reverse = Default(reverse, false) # noise on flat areas level = Default(level, 50) # noise level noisemask1 = input.Sharpen(1.0).EdgeMask(0, "sobel").Sharpen(0.5).Inflate().Inflate().Blur(1.0) .\ Levels(0, 1.0, 35, 0, 255).GreyScale().Blur(1.0).Blur(1.0).Blur(1.0).ConvertToYUY2() # noisemask2 = input.EdgeMask(0, "sobel").Inflate().Inflate().Inflate().Levels(0, 1.0, 35, 255, 0).GreyScale().Blur(1.0).ConvertToYUY2() noisemask = Layer(noisemask1, noisemask2, "mul", 255).ConvertToRGB32() noisemaskinverse = noisemask.Levels(0, 1.0, 255, 255, 0) inputyuy = input.ConvertToYUY2() noise = input.AddGrain(level, 0.2, 0.2).FluxSmooth(10, -1).FluxSmooth(10, -1).ConvertToYV12() #.Blur(0.4) #soft = input.BilinearResize(width, height) noisergb = noise.ConvertToRGB32() inputrgb = input.ConvertToRGB32() maskednoise = Mask(noisergb, reverse ? noisemaskinverse : noisemask) edgednoise = Layer(inputrgb, maskednoise, "add", strength) edgednoiseyv12 = input.MergeLuma(edgednoise.ConvertToYV12()) return edgednoiseyv12 #return noise.ConvertToYV12() }