Variableblur

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
(delete)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{FilterCat|Plugins|External_filters|Adjustment_filters|Blurring}}
+
#REDIRECT [[VariableBlur]]
Name:  variableblur<br>
+
[[Category:Redirects]]
Author:  Tritical<br>
+
Version:  0.50<br>
+
Date:  2011-03-14<br>
+
Architecture:  x86<br>
+
Dll:  variableblur.dll<br>
+
MD5:  f6237fc5b1570ae99fa1d689222c2607<br>
+
FilterType:  plugin<br>
+
Homepage:  http://forum.doom9.org/showthread.php?p=1484911#post1484911<br>
+
Support:  http://forum.doom9.org/showthread.php?p=1484911#post1484911<br>
+
Download:  http://bengal.missouri.edu/~kes25c/variableblur.zip<br>
+
Downloadx64:  http://www.mediafire.com/?0z0hl43za6bwlb4<br>
+
Dependencies:  fftw3.dll<br>
+
Type:  blur<br>
+
Colorspaces:  YV12<br>
+
Gamma-Aware: yes<br>
+
Functions:  binomialBlur(float varY,float varC,int Y,int U,int V,bool usemmx)<br>
+
Functions:  averageblur(int radY,int radC,int Y,int U,int V)<br>
+
Functions:  gaussianblur(float varY,float varC,int border,bool integrate,int Y,int U,int V, int gfunc, int gfuncc, int pcr, int pcrc)<br>
+
Functions:  unsharp(float varY,float varC,float strength,int border,bool integrate,int Y,int U,int V, int gfunc, int gfuncc, int pcr, int pcrc)<br>
+
 
+
Readme:
+
<pre>
+
VariableBlur version 0.5 - (March 14, 2011 - tritical)
+
 
+
Modified from version 0.4 by Tonny Petersen(C)2005 (tsp@person.dk)
+
  (specifically http://forum.doom9.org/showthread.php?p=1177210#post1177210 which included some fixes from Neuron2)
+
 
+
 
+
  Variableblur is a gaussian, binomial or average blur filter with a variable radius(variance).
+
  The binomial filter part is based on a paper by Frederick M. Waltz and John W. V. Miller. An efficient algorithm for Gaussian blur using finite-state machines.
+
  SPIE Conf. on Machine Vision Systems for Inspection and Metrology VII page 3521-37
+
 
+
  The gaussian filter uses fftw version 3(http://www.fftw.org) available from ftp://ftp.fftw.org/pub/fftw/fftw3win32mingw.zip and wouldn't run without it.
+
  If you have fft3ffilter or defreq installed you already have it.
+
 
+
  Also includes an unsharp mask filter based on the gaussian filter meaning it is fast for big variance.
+
 
+
 
+
USAGE:
+
 
+
-------------------------------------------------------------------
+
  binomialBlur(float varY,float varC,int Y,int U,int V,bool usemmx)
+
 
+
      binomialBlur works by repeating a 5x5 or 3x3 kernel based on pascals triangle multiple times to blur the image. With a variance above 1 the result is
+
      very close to a true gaussian blur and much faster (for variance below ~30).
+
 
+
 
+
    varY,varC: variance to use. Remember variance=sd^2. The variance is rounded down to the nearest half integer(0.5,1.0,1.5 etc).
+
                Radius 1 in version <=0.2 is equal to variance 0.5. Default 1.5
+
 
+
    Y,U,V: Controls which planes the filter is applied to. If set to 3 the plane will be filtered, if 2 the plane will be copied from the source, if 1 the plane
+
            will be ignored and from 0 to -255 the plane will be assigned the absolute value. Default Y 3,U=2, V=2
+
 
+
    useMMX: If true MMX instructions will be used. Default true for variance>1 else false.
+
 
+
 
+
-------------------------------------------------------------------
+
  averageblur(int radY,int radC,int Y,int U,int V)
+
 
+
        averageblur works by taken the average value of the pixels inside the radius.
+
 
+
    radY,radC: radius of the kernel. default 3.
+
 
+
    Y,U,V: same as binomialblur
+
 
+
 
+
-------------------------------------------------------------------
+
  gaussianblur(float varY,float varC,int border,bool integrate,int Y,int U,int V, int gfunc, int gfuncc, int pcr, int pcrc)
+
 
+
        gaussianblur works by converting the image to the frequency domain using fftw and complex multiplying it with the gaussian kernel in the frequency domain
+
        before converting the result back to the spatial domain giving the same result as doing a convolution in the spatial domain just faster for large kernelsizes.
+
 
+
    varY,varC: Variance to use. This will not be rounded. default 1.5
+
 
+
    border: Setup how the border of the image is threated. Posible values:
+
      -255 - 0: the area outside the image is filled with the absolute value
+
1: Wrap around. The right border will be blured with the left border and the top border with the bottom border.
+
                    This is the default behaivior when doing convolution in the frequency domain so this will be the fastest option. Default value
+
2: Don't process borders.
+
3: fill the area outside the border with the border value. Slowest but produces the nicest result.
+
 
+
    integrate: if true the coefficient used will be a mean value of the area the pixel covers. Use this if you consider each pixel to be made of an infinite number
+
                of infinite small pixels or if you like the result :-). If integration is used the image will be softer. Default false.
+
 
+
    Y,U,V: same as binomialblur
+
 
+
    gfunc,gfuncc:  set the gamma function to use for Y and U/V planes. Default (-1,-1). Possible values:
+
 
+
          -1 = do not correct gamma (same processing as version 0.4) - Default
+
          0 = sRGB
+
          1 = BT.709, SMPTE 170M
+
          2 = SMPTE 240M
+
          3 = BT.470-2 System M  (straight 2.2 gamma, no linear segment)
+
          4 = BT.470-2 System B,G (straight 2.8 gamma, no linear segment)
+
          5 = (straight 2.22222 gamma, no linear segment)
+
          6 = (straight 1.8 gamma, no linear segment)
+
          7 = linear, no gamma compensation
+
 
+
        Gamma-correction will be undone (forward gamma transfer function) prior to filtering, and then reapplied (inverse gamma transfer function) after filtering.
+
 
+
    pcr/pcrc:  set the pixel value range for Y and U/V planes. Only used if gfunc or gfuncc >= 0. Default(0,0). Possible values:
+
 
+
          0 = [0,255]
+
          1 = [16,235]
+
          2 = [16,240]
+
         
+
 
+
-------------------------------------------------------------------
+
  unsharp(float varY,float varC,float strength,int border,bool integrate,int Y,int U,int V, int gfunc, int gfuncc, int pcr, int pcrc)
+
 
+
        Sharpens the image using unsharp filtering (http://homepages.inf.ed.ac.uk/rbf/HIPR2/unsharp.htm for an explanation).
+
 
+
    strength: Strength of the sharpener best values is between 0(no sharpen) to 1(more sharpen). Values outside this will produce strange results.
+
 
+
    Rest of the options is the same as for gaussianblur
+
 
+
 
+
 
+
EXAMPLE:
+
 
+
        binomialBlur(radY=0.5,RadC=0.5) #nearly the same as Blur(1)
+
 
+
 
+
 
+
        #Unsharpen (it will sharpen the image)
+
 
+
        function unsharpen(clip c,float variance,float k)
+
        {
+
            blr=gaussianblur(c,vary=variance,varc=2,Y=3,U=2,V=2,border=1)
+
            return yv12lutxy(blr,c,"y x - "+string(k)+" * y +",y=3,u=2,v=2)
+
        }
+
 
+
 
+
 
+
CHANGELOG:
+
 
+
  0.1 Initial release
+
 
+
  0.2 optimization of the gaussian blur (now uses a 5x5 mask instead of 3x3) and the average blur(smarter algorithm resulting in a factor 20 to 100 speed increase)
+
 
+
  0.3 GaussianBlur is included old gaussian is renamed to binomialblur.
+
 
+
  0.4 Fixed bug with converting float to unsigned char without proper clamping. Also included an unsharp filter and optional integrated gaussian coefficients
+
 
+
  0.5 Add gfunc/gfuncc/pcr/pcrc parameters to gaussianblur/unsharp  (tritical)
+
 
+
 
+
 
+
LICENSE:
+
 
+
  This filter is released under GPL se copying.txt
+
</pre>
+

Latest revision as of 03:21, 11 December 2015

  1. REDIRECT VariableBlur
Personal tools