Zastin

Contrasharpener (VS)

May 17th, 2020
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.88 KB | None | 0 0
  1. def csharpmod(flt, src, strength=1, prefilter=0, darkened_merge=1, brightened_merge=1, darkening_limit=None, brightening_limit=None):
  2.    
  3.     pre = flt
  4.     if prefilter >= 0:
  5.         pre = haf.MinBlur(pre, rad=prefilter)
  6.    
  7.     if 1 < strength < 2:
  8.         blur = pre.std.Convolution([1]*9)
  9.     else:
  10.         blur = pre.rgvs.RemoveGrain(11)
  11.         for x in range(strength-1):
  12.             blur = blur.std.Convolution([1]*9)
  13.    
  14.     diff = core.std.MakeDiff(pre, blur)
  15.    
  16.     if darkened_merge < 1:
  17.         if darkened_merge <= 0:
  18.             darkening_limit = 0
  19.         else:
  20.             diff = core.std.Expr(diff, 'x 32768 < x {} * {} + x ?'.format(darkened_merge, 32768 * (1.0 - darkened_merge)))
  21.    
  22.     if brightened_merge < 1:
  23.         if brightened_merge <= 0:
  24.             brightening_limit = 0
  25.         else:
  26.             diff = core.std.Expr(diff, 'x 32768 > x {} * {} + x ?'.format(brightened_merge, 32768 * (1.0 - brightened_merge)))
  27.    
  28.     clamp_expr = ' x '
  29.    
  30.     if darkening_limit is not None:
  31.         clamp_expr += ' {} max '.format(32768 - round(darkening_limit * 256))
  32.    
  33.     if brightening_limit is not None:
  34.         clamp_expr += ' {} min '.format(32768 + round(brightening_limit * 256))
  35.    
  36.     if darkening_limit is not None or brightening_limit is not None:
  37.         diff = core.std.Expr(diff, clamp_expr)
  38.    
  39.     sharp = core.std.MergeDiff(flt, diff)
  40.    
  41.     if isinstance(src, vs.VideoNode):
  42.         clips = [sharp, flt, src]
  43.         min_src, max_src = [' z '] * 2
  44.     else:
  45.         clips = [sharp, flt] + src
  46.         abc= [' {} '.format(x) for x in 'zabcdefghijklmnopqrstuvw'][:len(src)]
  47.         mi = [' min '] * ( len(src) - 1 )
  48.         ma = [' max '] * ( len(src) - 1 )
  49.         min_src = ''.join(abc + mi)
  50.         max_src = ''.join(abc + ma)
  51.        
  52.     return core.std.Expr(clips, 'x y {} min max y {} max min'.format(min_src, max_src))
Add Comment
Please, Sign In to add comment