Advertisement
Guest User

DeHaloHmod

a guest
Aug 26th, 2019
549
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # DeHaloHmod v.2.44
  2.  
  3. function GreyCenteredToMask_dhh(clip input) {
  4. # Levels will convert to lut in avs26 by this "x input_low - input_high input_low - / 1 gamma / ^ output_high output_low - * output_low +"
  5. VersionNumber() < 2.6 ? input.Levels(128, 1, 255, 0, 255, false) : input.mt_lut("x range_half - range_max range_half - / range_max 0 - * 0 +", use_expr=2)
  6. one = last
  7. VersionNumber() < 2.6 ? input.Levels(0, 1, 128, 255, 0, false) : input.mt_lut("x 0 - range_half 0 - / 0 range_max - * range_max +", use_expr=2)
  8. two = last
  9. Overlay(one, two, mode="lighten")
  10. }
  11.  
  12.  
  13. function FastLineDarkenMOD3_dhh( clip input, float "strength", float "prot", float "luma_cap", float "threshold", float "thinning")
  14. {
  15. ## parameters ##
  16. str        = string(default(strength, 48) /128.)
  17. lum        = string(default(luma_cap, 191))
  18. protection = default(prot,5)
  19. thr        = string(default(threshold, 4))
  20. thinning   = default(thinning,0)
  21. thn        = string(thinning /16.)
  22.  
  23. Assert(!(input.isrgb()), "FastLineDarkenMOD4: RGB Color formats is not supported" )
  24.  
  25. sisphbd = AvsPlusVersionNumber > 2294
  26.  
  27. sislumaonly = sisphbd ? input.isy() : VersionNumber() < 2.6 ? true : input.isy8()
  28.  
  29. c = sislumaonly ? input : sisphbd ? input.converttoy() : input.converttoy8()
  30.  
  31. ## filtering ##
  32. exin    = c.mt_expand(thy=255/(protection+1)).mt_inpand()
  33. diff    = VersionNumber() < 2.6 ? mt_lutxy(c,exin,yexpr="y "+lum+" < y "+lum+" ? x "+thr+" + > x y "+lum+" < y "+lum+" ? - 0 ? 127 +",uexpr="x",vexpr="x")
  34.           \                     : mt_lutxy(c,exin,yexpr="y "+lum+" scalef < y "+lum+" scalef ? x "+thr+" scalef + > x y "+lum+" scalef < y "+lum+" scalef ? - 0 ? 127 scalef +", use_expr=1)
  35. linemask= thinning != 0 ? VersionNumber() < 2.6 ? mt_lut(diff.mt_inpand(),"x 127 - "+thn+" * 255 +").mt_convolution("1 1 1","1 1 1")
  36.             \           : mt_lut(diff.mt_inpand(),"x 127 scalef - "+thn+" * range_max +", clamp_float=true, use_expr=2).mt_convolution("1 1 1","1 1 1") : nop()
  37. thick   = VersionNumber() < 2.6 ? mt_lutxy(c, exin, yexpr="y "+lum+" < y "+lum+" ? x "+thr+" + > x y "+lum+" < y "+lum+" ? - 0 ? "+str+" * x +",uexpr="x",vexpr="x",u=2, v=2)
  38.           \                     : mt_lutxy(c, exin, yexpr="y "+lum+" scalef < y "+lum+" scalef ? x "+thr+" scalef + > x y "+lum+" scalef < y "+lum+" scalef ? - 0 ? "+str+" * x +",clamp_float=true,use_expr=1,u=2,v=2)
  39. thin    = thinning != 0 ? VersionNumber() < 2.6 ? mt_lutxy(c.mt_expand(U=2,V=2),diff,yexpr="x y 127 - "+str+" 1 + * +",u=2, v=2)
  40.             \           : mt_lutxy(c.mt_expand(U=2,V=2),diff,yexpr="x y 127 scalef - "+str+" 1 + * +",scale_inputs="floatf", use_expr=3,u=2, v=2) : nop()
  41.  
  42. thinning == 0 ? thick : mt_merge(thin,thick,linemask,y=3,u=2,v=2)
  43.  
  44. return sislumaonly ? last : sisphbd ? CombinePlanes(last,input,planes="YUV",sample_clip=input) : ytouv(input.utoy8(),input.vtoy8(),last)
  45. }
  46.  
  47.  
  48. function Camembert_dhh(clip input, int "useMedianBlur", bool "honly", bool "lumaonly") {
  49.  
  50. lumaonly = default(lumaonly, false)
  51. useMedianBlur = default(useMedianBlur, lumaonly ? -1 : 0)
  52. honly = default(honly, false)
  53.  
  54. sisphbd = AvsPlusVersionNumber > 2294
  55. sislumaonly = sisphbd ? input.isy() : VersionNumber() < 2.6 ? true : input.isy8()
  56.  
  57. useMedianBlur = sislumaonly && !(VersionNumber() < 2.6) ? -1 : useMedianBlur
  58.  
  59. c = sislumaonly || !lumaonly ? input : sisphbd ? input.converttoy() : input.converttoy8()
  60.  
  61. c
  62. useMedianBlur==0 ? SmoothUV(3,200,false) : useMedianBlur>0 ? MedianBlur(0,useMedianBlur,useMedianBlur) : last
  63. Overlay(last, Blur(1,honly ? 0 : 1).Blur(1,honly ? 0 : 1), mode="difference")
  64. grsc=sislumaonly ? nop() : GreyCenteredToMask_dhh().greyscale()
  65. sislumaonly ? GreyCenteredToMask_dhh() : sisphbd ? grsc.converttoy() : grsc.converttoy8()
  66. VersionNumber() < 2.6 ? greyscale() : last
  67. VersionNumber() < 2.6 ? Levels(0, 1, 115, 0, 255, false) : mt_lut("x 0 - 155 scalef 0 - / range_max 0 - * 0 +", use_expr=2)
  68. Blur(1,honly ? 0 : 1)
  69. VersionNumber() < 2.6 ? Levels(0, 0.4, 64, 0, 255, false) : mt_lut("x 0 - 64 scalef 0 - / 1 0.4 / ^ range_max 0 - * 0 +", use_expr=2)
  70. Blur(1,honly ? 0 : 1).Blur(1,honly ? 0 : 1)
  71. VersionNumber() < 2.6 ? Levels(0, 1, 30, 0, 255, false).Blur(1,honly ? 0 : 1) : mt_lut("x 0 - 30 scalef 0 - / range_max 0 - * 0 +", use_expr=2,u=3,v=3).Blur(1,honly ? 0 : 1)
  72. sislumaonly ? last : sisphbd ? CombinePlanes(last,lumaonly ? input : grsc,planes="YUV",sample_clip=lumaonly ? input : grsc) : YToUV(lumaonly ? input.UToY8() : grsc.UToY8(),lumaonly ? input.VToY8() : grsc.VToY8(),last)
  73. }
  74.  
  75. function Camembert_dhhMod(clip input, int "useMedianBlur", bool "honly", bool "lumaonly")
  76. {
  77.  EM1=input.Camembert_dhh(useMedianBlur,honly,lumaonly)
  78.  EM2=input.mt_edge(mode="min/max", thY1=1, thY2=255, thC1=10, thC2=10, chroma="process").mt_inflate().blur(1.5).blur(1.5).invert()
  79.  return mt_logic(EM1, EM2, "and")
  80. }
  81.  
  82. Function EMask_dhh(clip oi, int "mode", float "trh", bool "analog", float "trh2", int "useMedianBlur", bool "honly", bool "lumaonly")
  83. {
  84. analog        = Default(analog, false)
  85. trh2          = Default(trh2, 170)
  86. lumaonly      = default(lumaonly, false)
  87. useMedianBlur = default(useMedianBlur, lumaonly ? -1 : 0)
  88. honly         = default(honly, false)
  89.  
  90. sisphbd = AvsPlusVersionNumber > 2294
  91. sislumaonly = sisphbd ? oi.isy() : VersionNumber() < 2.6 ? true : oi.isy8()
  92.  
  93. i = sislumaonly || !lumaonly ? oi : sisphbd ? oi.converttoy() : oi.converttoy8()
  94.  
  95. mode3thr1     = mode == 3 && analog ? trh2/2.46 : nop()
  96. mode3dark     = mode == 3 ? trh != 0 ? i.FastLineDarkenMOD3_dhh(trh).blur(0.5).FastLineDarkenMOD3_dhh(250,1,250,-2) : i : nop()
  97. mode3lut      = mode == 3 && analog ? VersionNumber() < 2.6 ? "x "+String(mode3thr1)+" < 255 x "+String(trh2)+" > 0 255 x "+String(mode3thr1)+" - 255 "+String(trh2)+" "+String(mode3thr1)+" - / * - ? ?"
  98.                                       \                     : "x "+String(mode3thr1)+" scalef < range_max x "+String(trh2)+" scalef > 0 range_max x "+String(mode3thr1)+" scalef - range_max "+String(trh2)+" scalef "+String(mode3thr1)+" scalef - / * - ? ?" : nop()
  99. e_mask = mode == 1 ? mt_makediff(i.blur(1.58).blur(1.58),i).mt_binarize(threshold=trh).mt_inflate().mt_inflate() :
  100.      \   mode == 2 ? mt_logic(i.mt_binarize(105,upper=true).mt_expand(),i.mt_binarize(110,upper=false).mt_expand(),"and").mt_deflate() :
  101.      \   mode == 3 ? analog ? mt_merge(i.mt_edge(mode="min/max", thY1=255, thY2=255), i.Camembert_dhh(useMedianBlur,honly,lumaonly), VersionNumber() < 2.6 ? mode3dark.mt_lut(mode3lut,u=1,v=1) : mode3dark.mt_lut(mode3lut,use_expr=2,u=1,v=1)) :
  102.                             \ mt_merge(i.mt_edge(mode="min/max", thY1=255, thY2=255), i.Camembert_dhh(useMedianBlur,honly,lumaonly), mode3dark.mt_binarize(70, mode="0 255")) : NOP()
  103. e_mask = sislumaonly ? e_mask : sisphbd ? CombinePlanes(e_mask,oi,planes="YUV",sample_clip=oi) : YToUV(oi.UToY8(),oi.VToY8(),e_mask)
  104. return e_mask
  105. }
  106.  
  107. Function DR_Radius_dhh(clip i, int dr_rad, int count)
  108. {
  109. return count > dr_rad ? i : DR_Radius_dhh(i.mt_expand(), dr_rad, count+1)
  110. }
  111.  
  112. Function DRadius_dhh(clip i, int "dr_rad")
  113. {
  114. return dr_rad > 0 ? DRadius_dhh(i.mt_expand(), dr_rad-1).mt_inflate() : i
  115. }
  116.  
  117. Function DeHaloHmod(clip input, int "Radius", int "Str", bool "Maska", bool "strong", int "mode", float "thr", val "exdehalo", bool "analog", bool "dirty", bool "smooth", bool "anime", bool "pel2", bool "usedeen", bool "maskpel2", float "thr2", val "extmask", val "extlmask", bool "RadInflate")
  118. {
  119.  usedeen    = Default(usedeen, false)
  120.  pel2       = Default(pel2, false)
  121.  exdhcb     = defined(exdehalo) ? isclip(exdehalo) ? true : false : false
  122.  pel2       = exdhcb ? false : pel2
  123.  maskpel2   = Default(maskpel2, false)
  124.  exhmcb     = defined(extmask) ? isclip(extmask) ? true : false : false
  125.  exhlmcb    = defined(extlmask) ? isclip(extlmask) ? true : false : false
  126.  maskpel2   = exhmcb ? false : pel2
  127.  smooth     = Default(smooth, false)
  128.  RadInflate = Default(RadInflate, false)
  129.  strong     = Default(strong, true)
  130.  Maska      = Default(Maska, false)
  131.  analog     = Default(analog, false)
  132.  dirty      = Default(dirty, false)
  133.  DR_Radius  = Default(Radius, defined(extlmask) ? -2 : dirty ? 6 : smooth || maskpel2 ? 4 : 2)
  134.  DR_Str     = Default(Str, usedeen ? pel2 ? 40 : 15 : pel2 ? 7 : smooth ? 5 : 3)
  135.  mode       = Default(mode, usedeen || defined(extlmask) ? 0 : 3)
  136.  threshold  = Default(thr, smooth ? mode==1 ? 1 : 2250 : 140)
  137.  anime      = Default(anime, defined(extlmask) ? true : mode != 3 ? false : true)
  138.  thr2       = Default(thr2, smooth ? 170 : threshold/1.5)
  139.  
  140.  oclip = pel2 ? input.nnedi3_rpow2(rfactor=2) : input
  141.  hfl = defined(exdehalo) ? exdhcb ? exdehalo : eval("oclip." + exdehalo) : smooth ? oclip.DeHalo_alpha_mt(rx=pel2 ? 3 : 2,ry=pel2 ? 3 : 2,darkstr=0.2,brightstr=0.8).yahr2(dirty ? pel2 ? 12 : 8 : pel2 ? 24 : 16).TBilateral(DR_Str,5,pel2 ? 1.4 : 0.9,0.9,pel2 ? 7 : 5,5,0.7,chroma=false) : usedeen ? oclip.sminideen(2, DR_Str  , 0, 3, 1, 1) : oclip.TBilateral(DR_Str,5,pel2 ? 1.4 : 0.9,0.9,pel2 ? 7 : 5,5,0.7,chroma=false)
  142.  hfl = pel2 && !(maskpel2 && dirty) ? hfl.PointResize(input.Width(),input.Height()) : hfl
  143.  
  144.  cm  = dirty ? hfl : input
  145.  
  146.  cm  = !(dirty && pel2) && maskpel2 ? cm.nnedi3_rpow2(rfactor=2) : cm
  147.  
  148.  extmask = defined(extmask) ? exhmcb ? extmask : Eval("cm." + extmask) : undefined()
  149.  
  150.  extlmask = defined(extlmask) ? exhlmcb ? extlmask : Eval("cm." + extlmask) : undefined()
  151.  
  152.  EM1 = defined(extmask) ? extmask : mode == 0 ? (strong ? Camembert_dhh(analog ? cm.ColorYUV(autogain=true) : cm, 3) : Camembert_dhhMod(analog ? cm.ColorYUV(autogain=true) : cm, 3)) : EMask_dhh(analog ? cm.ColorYUV(autogain=true) : cm, mode, threshold, analog, thr2, 3)
  153.  
  154.  EM1 = maskpel2 ? EM1.PointResize(input.Width(),input.Height()) : EM1
  155.  
  156.  hfl = pel2 && (maskpel2 && dirty) ? hfl.PointResize(input.Width(),input.Height()) : hfl
  157.  
  158.  RM2 = DR_Radius < -1 ? EM1 : RadInflate ? DRadius_dhh(EM1,DR_Radius).mt_inflate() : DR_Radius_dhh(EM1.mt_inflate(),DR_Radius,0).mt_inflate()
  159.  
  160.  LiMa = defined(extlmask) ? extlmask : EM1
  161.  
  162.  DeRinging = anime ? mt_Merge(hfl, input, smooth ? LiMa.mt_inflate(155,155) : LiMa) : hfl
  163.  DeRinging = Maska ? DeRinging.Invert() : DeRinging
  164.  
  165. return mt_Merge(input, DeRinging, RM2, u=2, v=2)
  166. }
  167.  
  168. Function DeHaloH(clip input, int "DR_Radius", int "DR_Str", bool "Maska", bool "strong", int "mode", int "threshold")
  169. {
  170.  strong     = Default(strong, true)
  171.  Maska      = Default(Maska, false)
  172.  DR_Radius  = Default(DR_Radius, 2)
  173.  DR_Str     = Default(DR_Str, 15)
  174.  mode       = Default(mode, 0)
  175.  threshold  = Default(threshold, 140)
  176.  
  177.  EM = mode == 0 ? (strong ? input.Camembert_dhh() : input.Camembert_dhhMod()) : EMask_dhh(input, mode, threshold)
  178.  
  179.  RM=DR_Radius_dhh(EM,DR_Radius,0)
  180.  DeRinging  = input.Deen("a2d", 2, DR_Str  , 0, 0, 0, 0, 0)
  181.  DeRinging = Maska ?  DeRinging.Invert() : DeRinging
  182. return mt_Merge(input, DeRinging, RM)
  183. }
  184.  
  185. Function sminideen(clip input, int "radius", int "thrY", int "thrUV", int "Y", int "U", int "V")
  186. {
  187. try { input.minideen(radius, thrY, thrUV, Y, U, V) } catch(error_msg) { input.deen("a2d", radius, thrY, thrUV)  }
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement