Advertisement
Guest User

RemoveDirtMC_SE

a guest
Sep 4th, 2015
390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #########################################################################################################################
  2. ###                                                                                                                   ###
  3. ###                                                  RemoveDirtMC                                                     ###
  4. ###                                                      v1.41                                                        ###
  5. ###                                               **SPECIAL EDITION**                                                 ###
  6. ###                                                   By NEPHILIS                                                     ###
  7. ###                                                      @2011                                                        ###
  8. ###                                    mod by Great Dragon to work with NLMeansCL2                                    ###
  9. ###                                 mod2 by A.sony to make it more friendly in motions                                ###
  10. #########################################################################################################################
  11.  
  12. ##################################################################
  13. ##                                                              ##
  14. ## --------------                                               ##
  15. ## Requirements : - MVTools      (v2.5.11.2)                    ##
  16. ## --------------  - Masktools    (v2.0a48)                     ##
  17. ##         - RemoveGrainT (v1.0) package                        ##
  18. ##         - RemoveDirt   (v0.9) package                        ##
  19. ##         - AvsRecursion (v0.2)                                ##
  20. ##         - FluxSmooth   (v1.1)                                ##
  21. ##                                                              ##
  22. ##           As Additional                                      ##
  23. ##              --------                                        ##
  24. ##        => To Prefiltering with FFT3DFilter                   ##
  25. ##         - FFT3DFilter  (v2.1.1)                              ##
  26. ##         - FFTW3.dll                                          ##
  27. ##         - Dither_Luma_Rebuild from SMDegrain or elsewhere    ##
  28. ##              --------                                        ##
  29. ##        => To Prefiltering with NLMeansCL2                    ##
  30. ##         - NLMeansCL2.dll v0.4.0 (2015-01-08)                 ##
  31. ##                                                              ##
  32. ##################################################################
  33.  
  34. ##########################################################################################################################
  35. # -------                                                                                                                #
  36. # Usage :                                                                                                                #
  37. # -------                                                                                                                #
  38. #                                                                                                                        #
  39. # RemoveDirtMC_SE(clip input, bool"GPU", int"radius", int"repmode", int"clmode", bool"TwoPass", int"thSAD", int"thSADC") #
  40. #                                                                                                                        #
  41. ##########################################################################################################################
  42.  
  43. ##################
  44. # -----------    #
  45. # PARAMETERS:    #
  46. # -----------    #
  47. ##################
  48.  
  49. ##########################################################################################################################
  50. #
  51. # ----------
  52. # GPU       : -- To choose NLMeansCL or FFT3Dfilter for PreFiltering process.
  53. # ----------     ATI GPU owners should use "GPU=false"
  54. #                
  55. # ----------
  56. # Radius    : -- Temporal Radius for MDeGrain at second stage DeNoising.
  57. # ----------
  58. #
  59. # ----------
  60. # repmode   : -- Repair mode value in main RemoveDirtSE function.
  61. # ----------    
  62. #
  63. # ----------
  64. # clmode    : -- RemoveGrain mode value in main RemoveDirtSE function.
  65. # ----------
  66. #
  67. # ----------
  68. # Twopass   : -- To make a Temporal Denoising (MDeGrain) after Spatial Denoising (RemoveDirtSE).  
  69. # ----------  
  70. #
  71. # ----------
  72. # thSAD,
  73. # thSADC    : -- MDeGrain's thSAD and thSADC parameters.
  74. # ----------
  75. #
  76. ##########################################################################################################################
  77.  
  78. Function RemoveDirtMC_SE(clip input, bool"GPU", int"radius", int"repmode", int"clmode", bool"TwoPass", int"thSAD", int"thSADC",float "rStr",float "Amp", bool "slices", bool "luma_rebuild", clip "PreNR")
  79.  
  80. {
  81.  
  82. version  = "v1.4"
  83.  
  84.      GPU = default(GPU,     true)
  85.   radius = default(radius,     2)
  86.  repmode = default(repmode,   16)
  87.   clmode = default(clmode,     5)
  88.  TwoPass = default(TwoPass, true)
  89.    thSAD = default(thSAD ,   150)
  90.   thSADC = default(thSADC, thSAD)
  91.    rStr  = default( rStr, 1.0 )
  92.    Amp   = default( Amp, 0.0625 )
  93. slices   = default(slices, true)
  94. luma_rebuild = default(luma_rebuild, true)
  95.    
  96.       ox = input.width()
  97.       oy = input.height()
  98.       HD = (ox== 1920 || oy>= 800) ? true : false
  99.  blksize = (HD==true) ? 16:8
  100.   search = (HD==true) ?  4:5
  101.  overlap = blksize/2
  102.  
  103.          src = input
  104.        PreNR = defined(PreNR) ? PreNR : (GPU==true) ? src.NLMeansCL2(h=radius*1.5,u=3,v=3).TemporalDeGrain(5,9) \
  105.                            : src.FFT3DFilter(sigma=radius*2,plane=4,bw=16,bh=16,ow=8,oh=8,bt=3,wintype=1).TemporalDeGrain(5,9)
  106.        PreNR = luma_rebuild ? PreNR.dither_luma_rebuild(S0=rStr,c=Amp,slice=slices) : PreNR
  107.  PreNR_super = MSuper(PreNR,hpad=4,vpad=4,pel=2,sharp=2)
  108.    src_super = MSuper(src  ,hpad=4,vpad=4,pel=2,sharp=2,levels=1)
  109.  
  110.  bwv1 = MAnalyse(PreNR_super, blksize=blksize, search=search, isb=true,  delta=1, overlap=overlap, truemotion=true)
  111.  bwv2 = (radius>=2) ? \
  112.     MAnalyse(PreNR_super, blksize=blksize, search=search, isb=true,  delta=2, overlap=overlap, truemotion=true) : BlankClip()
  113.  bwv3 = (radius==3) ? \
  114.     MAnalyse(PreNR_super, blksize=blksize, search=search, isb=true,  delta=3, overlap=overlap, truemotion=true) : BlankClip()
  115.  fwv1 = MAnalyse(PreNR_super, blksize=blksize, search=search, isb=false, delta=1, overlap=overlap, truemotion=true)
  116.  fwv2 = (radius>=2) ? \
  117.     MAnalyse(PreNR_super, blksize=blksize, search=search, isb=false, delta=2, overlap=overlap, truemotion=true) : BlankClip()
  118.  fwv3 = (radius==3) ? \
  119.     MAnalyse(PreNR_super, blksize=blksize, search=search, isb=false, delta=3, overlap=overlap, truemotion=true) : BlankClip()
  120.  
  121.  bcomp = MCompensate(src,src_super,bwv1)
  122.  fcomp = MCompensate(src,src_super,fwv1)
  123.  
  124.  NR1 = src.RemoveDirtSE(fcomp, bcomp, repmode=repmode, clmode=clmode)
  125.  NR1_super = ( TwoPass==true  ) ? MSuper(NR1,hpad=4,vpad=4,pel=2,sharp=2,levels=1) : BlankClip()
  126.        NR2 = ( TwoPass==false ) ? NR1
  127. \          : (  radius==1  ) ? MDeGrain1(NR1, NR1_super, bwv1, fwv1, thSAD=thSAD, thSADC=thSADC)
  128. \          : (  radius==2  ) ? MDeGrain2(NR1, NR1_super, bwv1, bwv2, fwv1, fwv2, thSAD=thSAD, thSADC=thSADC)
  129. \          :               MDeGrain3(NR1, NR1_super, bwv1, bwv2, bwv3, fwv1, fwv2, fwv3, thSAD=thSAD, thSADC=thSADC)
  130.     Return(NR2)
  131.  
  132. }
  133.  
  134. function TemporalDeGrain(clip input, int "mode", int "thr")
  135.  
  136. {
  137.     mode = default(mode, 5)
  138.     thr  = default(thr,  8)
  139.     rg = RemoveGrain(input, mode=mode)
  140.     tr = TemporalRepair(rg, input)
  141.         fs = FluxSmoothT(tr,thr)
  142.     Return(fs)
  143.      
  144. }
  145.  
  146. function RemoveDirtSE(clip input, clip fcomp, clip bcomp, int "repmode", int "clmode")
  147.  
  148. {
  149.      
  150.     repmode = default(repmode, 16)
  151.      clmode = default(clmode,   5)
  152.     clensed = interleave(fcomp,input,bcomp).Clense(cache=-1).selectevery(3,1)
  153.       clensedn2 = Clense(input, cache=-1)
  154.      sbegin = ForwardClense(input, cache=-1)
  155.        send = BackwardClense(input, cache=-1)
  156.         alt = Repair(SCSelect(input, sbegin, send, clensed, debug=false), input, mode=repmode)
  157.     restore = Repair(clensed, input, mode=repmode)
  158.       corrected = RestoreMotionBlocks(clensed, restore, neighbour=input, neighbour2=clensedn2, alternative=alt, gmthreshold=50, \
  159.                       dist=1, dmode=2, debug=false, noise=8, noisy=12)
  160.      postNR = RemoveGrain(corrected, mode=clmode)
  161.      Return(postNR)
  162.    
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement