VariableBlur

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
m (add x64 category)
m
 
(3 intermediate revisions by one user not shown)
Line 3: Line 3:
 
|1={{Author/tsp}}, {{Author/tritical}}
 
|1={{Author/tsp}}, {{Author/tritical}}
 
|2=v0.7
 
|2=v0.7
|3=[https://www.dropbox.com/s/qrz6bq2k8vsm0db/variableblur0.7_x86_x64.7z?dl=1 variableblur0.7_x86_x64.7z]
+
|3=[https://www.dropbox.com/s/3ayueaji7mt7x74/variableblur0.7_x86_x64.7z?dl=1 variableblur0.7_x86_x64.7z]
 
|4=Blurring  
 
|4=Blurring  
 
|5=[http://www.gnu.org/licenses/gpl-2.0.txt GPLv2]
 
|5=[http://www.gnu.org/licenses/gpl-2.0.txt GPLv2]
Line 14: Line 14:
  
 
== Requirements ==
 
== Requirements ==
* [x86]: [[AviSynth+]] or [http://forum.doom9.org/showthread.php?t=168764 AviSynth 2.6]
+
* [x86]: [[AviSynth+]] or [https://sourceforge.net/projects/avisynth2/ AviSynth 2.6]
 
* [x64]: [[AviSynth+]]
 
* [x64]: [[AviSynth+]]
 
* Supported color formats: [[RGB24]], [[RGB32]], [[YUY2]], [[YV12]]
 
* Supported color formats: [[RGB24]], [[RGB32]], [[YUY2]], [[YV12]]
  
 
* [[SSE2]] capable CPU ([[VariableBlur/GaussianBlur|GaussianBlur]] function only)
 
* [[SSE2]] capable CPU ([[VariableBlur/GaussianBlur|GaussianBlur]] function only)
 +
 
===Runtime dependencies===
 
===Runtime dependencies===
 
The following are required, VariableBlur will not run or load without them.
 
The following are required, VariableBlur will not run or load without them.
* [http://www.microsoft.com/en-us/download/details.aspx?id=8328 Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)]
 
:<span style="color:red">***</span> Required due to [http://msdn.microsoft.com/en-us/library/tt15eb9t%28v=vs.100%29.aspx OpenMP] multithreading (<tt>vcomp100.dll</tt>).
 
  
* [http://www.fftw.org/install/windows.html FFTW 3.3.5 <tt>(fftw-3.3.5-dllXX.zip)</tt>]
+
* [http://www.fftw.org/install/windows.html FFTW 3.3.5] (<code>'''fftw-3.3.5-dll32.zip'''</code> or <code>'''fftw-3.3.5-dll64.zip'''</code>)
:<span style="color:red">***</span> 32-bit <tt>libfftwf3-3.dll</tt> needs to be in the search path (<tt>C:\Windows\SysWOW64</tt> 64-bit OS or <tt>C:\windows\system32</tt> 32-bit OS)
+
:<span style="color:red">***</span> 32-bit <tt>[[libfftw3f-3.dll]]</tt> needs to be in the search path (<tt>C:\Windows\SysWOW64</tt> 64-bit OS or <tt>C:\windows\system32</tt> 32-bit OS)
:<span style="color:red">***</span> 64-bit <tt>libfftwf3-3.dll</tt> needs to be in the search path (<tt>C:\windows\system32</tt> 64-bit OS)
+
:<span style="color:red">***</span> 64-bit <tt>[[libfftw3f-3.dll]]</tt> needs to be in the search path (<tt>C:\windows\system32</tt> 64-bit OS)
 
<br>
 
<br>
  
Line 48: Line 47:
 
}}
 
}}
 
|}
 
|}
<br>
+
 
 
<br>
 
<br>
 
== Changelog ==
 
== Changelog ==
  Version     Date            Changes<br>
+
  Version       Date            Changes<br>
  v0.7         05/24/2012      - Fix integrate=true giving incorrect results due to lack of precision in weight  
+
  v0.7(x86/x64)  2019/04/06      - Changes by Asd-g
                                calculation. Integrate=true now gives results much closer to integrate=false, as
+
                                - Update to AviSynth 2.6 api
                                would be expected.
+
                                - x64 version: used the original source code and just replaced 32-bit registers with 64-bit registers
                              - Add support for YUY2, RGB24, and RGB32 input to GaussianBlur/Unsharp<br>
+
                                - Compiled Intel XE 2019 compiler, includes x86 and x64 plugins<br>
  v0.6         05/22/2012     - Fix border=3 bug for gfunc/gfuncc >= 0 (gamma processing was not done on border values)
+
v0.7          2012/05/24     - Fix integrate=true giving incorrect results due to lack of precision in weight  
                              - Make radius for GaussianBlur 4*std instead of 3*std
+
                                  calculation. Integrate=true now gives results much closer to integrate=false, as
                              - Add border=4 (mirroring) option to gaussianblur and make it the default
+
                                  would be expected.
                              - Dynamically load FFTW (libfftwf3-3.dll) instead of statically linking to old .lib
+
                                - Add support for YUY2, RGB24, and RGB32 input to GaussianBlur/Unsharp
                              - Multithread GaussianBlur using OpenMP and use FFTW multithreaded plans
+
                                - Compiled with MSVC++ 2010, requires the corresponding Redistributable Package (x86).
                              - SSE/SSE2 optimizations. GaussianBlur now requires SSE2 capable CPU.<br>
+
                                  Required due to OpenMP multithreading (vcomp100.dll).<br>
  v0.5         03/14/2011     - Add gfunc/gfuncc/pcr/pcrc parameters to GaussianBlur/unsharp  (tritical)<br>
+
  v0.6           2012/05/22      - Fix border=3 bug for gfunc/gfuncc >= 0 (gamma processing was not done on border values)
  v0.4+       08/30/2008     - [http://forum.doom9.org/showpost.php?p=1157772&postcount=39 Memory leak] fix by [http://forum.doom9.org/showpost.php?p=1177210&postcount=45 Neuron2]<br>
+
                                - Make radius for GaussianBlur 4*std instead of 3*std
  v0.4         05/24/2005     - Fixed bug with converting float to unsigned char without proper clamping.
+
                                - Add border=4 (mirroring) option to gaussianblur and make it the default
                                Also included an sharp filter and optional integrated Gaussian coefficients.
+
                                - Dynamically load FFTW (libfftwf3-3.dll) instead of statically linking to old .lib
  v0.3         05/06/2005     - GaussianBlur is included, old Gaussian is renamed to BinomialBlur.<br>
+
                                - Multithread GaussianBlur using OpenMP and use FFTW multithreaded plans
  v0.2         01/24/2005     - optimization of the Gaussian blur (now uses a 5x5 mask instead of 3x3) and the  
+
                                - SSE/SSE2 optimizations. GaussianBlur now requires SSE2 capable CPU.<br>
                                average blur(smarter algorithm resulting in a factor 20 to 100 speed increase)<br>
+
  v0.5           2011/03/14      - Add gfunc/gfuncc/pcr/pcrc parameters to GaussianBlur/unsharp  (tritical)<br>
  v0.1         01/19/2005     - Initial release
+
  v0.4+         2008/08/30      - [http://forum.doom9.org/showpost.php?p=1157772&postcount=39 Memory leak] fix by [http://forum.doom9.org/showpost.php?p=1177210&postcount=45 Neuron2]<br>
 +
  v0.4           2005/05/24      - Fixed bug with converting float to unsigned char without proper clamping.
 +
                                  Also included an sharp filter and optional integrated Gaussian coefficients.
 +
  v0.3           2005/05/06      - GaussianBlur is included, old Gaussian is renamed to BinomialBlur.<br>
 +
  v0.2           2005/01/24      - 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)<br>
 +
  v0.1           2005/01/19      - Initial release
 
<br>
 
<br>
 +
 
== Archived Downloads ==
 
== Archived Downloads ==
 
{| class="wikitable" border="1"; width="700px"
 
{| class="wikitable" border="1"; width="700px"
Line 77: Line 83:
 
!!width="150px"| Download
 
!!width="150px"| Download
 
!!width="150px"| Mirror
 
!!width="150px"| Mirror
!!width="150px"| Mirror 2
+
|-
 +
!v0.7 (x86/x64)
 +
|[https://www.dropbox.com/s/3ayueaji7mt7x74/variableblur0.7_x86_x64.7z?dl=1 variableblur0.7_x86_x64.7z]
 +
|[https://web.archive.org/web/20200612193533if_/https://files.videohelp.com/u/223002/variableblur0.7_x86_x64.7z variableblur0.7_x86_x64.7z]
 
|-
 
|-
 
!v0.7
 
!v0.7
|<strike>[http://bengal.missouri.edu/~kes25c/variableblur.zip variableblur.zip]</strike>
+
|[http://web.archive.org/web/20140420184040if_/http://bengal.missouri.edu/~kes25c/variableblur.zip variableblur.zip]
|[http://web.archive.org/web/20140420184040/http://bengal.missouri.edu/~kes25c/variableblur.zip variableblur.zip]
+
 
|
 
|
 +
|-
 +
!v0.5(x64)
 +
|[https://web.archive.org/web/20200612195304if_/https://files.videohelp.com/u/223002/VariableBlur05_x64.7z VariableBlur05_x64.7z]
 +
|[http://www.mediafire.com/download/0z0hl43za6bwlb4/VariableBlur05_x64.7z variableblur05_x64.7z] /// [http://www.mediafire.com/download/hzwtctzyu5vw9vc/variableblur05_x64src.7z variableblur05_x64src.7z]
 
|-
 
|-
 
!v0.4+
 
!v0.4+
 
|[{{N2Moved}}/misc/VariableBlur.zip VariableBlur.zip]
 
|[{{N2Moved}}/misc/VariableBlur.zip VariableBlur.zip]
 
|[{{N2Archived}}/misc/VariableBlur.zip VariableBlur.zip]
 
|[{{N2Archived}}/misc/VariableBlur.zip VariableBlur.zip]
|
 
 
|-
 
|-
 
!v0.4
 
!v0.4
|[http://www.tsp.person.dk/VariableBlur040.zip VariableBlur040.zip]
 
|[http://web.archive.org/web/20111212022051/http://www.tsp.person.dk/VariableBlur040.zip VariableBlur040.zip]
 
 
|[http://www.avisynth.nl/users/tsp/VariableBlur040.zip VariableBlur040.zip]
 
|[http://www.avisynth.nl/users/tsp/VariableBlur040.zip VariableBlur040.zip]
 +
|[http://web.archive.org/web/20111212022051if_/http://www.tsp.person.dk/VariableBlur040.zip VariableBlur040.zip]
 
|-
 
|-
 
!v0.3
 
!v0.3
 
|[http://www.64k.it/andres/data/avisynth/variableblur_25_dll_20050506.zip variableblur_25_dll_20050506.zip]
 
|[http://www.64k.it/andres/data/avisynth/variableblur_25_dll_20050506.zip variableblur_25_dll_20050506.zip]
|[http://web.archive.org/web/20140630103035/http://www.64k.it/andres/data/avisynth/variableblur_25_dll_20050506.zip variableblur_25_dll_20050506.zip]
+
|[http://web.archive.org/web/20140630103035if_/http://www.64k.it/andres/data/avisynth/variableblur_25_dll_20050506.zip variableblur_25_dll_20050506.zip]
|
+
 
|}
 
|}
 
+
* v0.5 x64 version was compiled by yo4kazu. Main download includes binary and source. This version is outdated, only here for reference.
x64 version:
+
'''v0.7'''
+
*Binary and sources: [https://www.dropbox.com/s/qrz6bq2k8vsm0db/variableblur0.7_x86_x64.7z?dl=1 variableblur0.7_x86_x64.7z]
+
** Compiled by [http://avisynth.nl/index.php/User_talk:Asd asd]
+
 
+
'''v0.5'''
+
* Binary: [http://www.mediafire.com/download/0z0hl43za6bwlb4/VariableBlur05_x64.7z variableblur05_x64.7z]
+
* Source: [http://www.mediafire.com/download/hzwtctzyu5vw9vc/variableblur05_x64src.7z variableblur05_x64src.7z]
+
 
<br>
 
<br>
  
 
== External Links ==
 
== External Links ==
 
*[http://forum.doom9.org/showthread.php?t=88645 Doom9 Forum] - VariableBlur discussion.
 
*[http://forum.doom9.org/showthread.php?t=88645 Doom9 Forum] - VariableBlur discussion.
*[http://www-personal.engin.umd.umich.edu/~jwvm/ece581/21_GBlur.pdf An Efficient Algorithm for Gaussian Blur Using Finite-state Machines] | [https://web.archive.org/web/20100621232359/http://www-personal.engin.umd.umich.edu/~jwvm/ece581/21_GBlur.pdf mirror]
+
*[https://web.archive.org/web/20100621232359/http://www-personal.engin.umd.umich.edu/~jwvm/ece581/21_GBlur.pdf An Efficient Algorithm for Gaussian Blur Using Finite-state Machines]
 
<br>
 
<br>
 
<br>
 
<br>
 
-----------------------------------------------
 
-----------------------------------------------
 
'''Back to [[External_filters#Blurring|External Filters]] &larr;'''
 
'''Back to [[External_filters#Blurring|External Filters]] &larr;'''

Latest revision as of 00:53, 13 June 2020

Abstract
Author tsp, tritical
Version v0.7
Download variableblur0.7_x86_x64.7z
Category Blurring
License GPLv2
Discussion Doom9 Thread

Contents

[edit] Description

VariableBlur is a Gaussian, binomial or average blur filter with a variable radius (variance). Also includes an unsharp mask filter based on the Gaussian filter meaning it is fast for big 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

[edit] Requirements

[edit] Runtime dependencies

The following are required, VariableBlur will not run or load without them.

  • FFTW 3.3.5 (fftw-3.3.5-dll32.zip or fftw-3.3.5-dll64.zip)
*** 32-bit libfftw3f-3.dll needs to be in the search path (C:\Windows\SysWOW64 64-bit OS or C:\windows\system32 32-bit OS)
*** 64-bit libfftw3f-3.dll needs to be in the search path (C:\windows\system32 64-bit OS)


[edit] Filters

Filter Description Color format
AverageBlur

AverageBlur works by taking the average value of the pixels inside the radius.

YV12
BinomialBlur

BinomialBlur works by repeating a 5x5 or 3x3 kernel based on pascals triangle multiple times to blur the image.

YV12
GaussianBlur

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 kernel sizes.

RGB24, RGB32, YUY2, YV12
Unsharp

Sharpens the image using unsharp filtering (see Unsharp Filter for an explanation).

RGB24, RGB32, YUY2, YV12


[edit] Changelog

Version        Date            Changes
v0.7(x86/x64) 2019/04/06 - Changes by Asd-g - Update to AviSynth 2.6 api - x64 version: used the original source code and just replaced 32-bit registers with 64-bit registers - Compiled Intel XE 2019 compiler, includes x86 and x64 plugins
v0.7 2012/05/24 - Fix integrate=true giving incorrect results due to lack of precision in weight calculation. Integrate=true now gives results much closer to integrate=false, as would be expected. - Add support for YUY2, RGB24, and RGB32 input to GaussianBlur/Unsharp - Compiled with MSVC++ 2010, requires the corresponding Redistributable Package (x86). Required due to OpenMP multithreading (vcomp100.dll).
v0.6 2012/05/22 - Fix border=3 bug for gfunc/gfuncc >= 0 (gamma processing was not done on border values) - Make radius for GaussianBlur 4*std instead of 3*std - Add border=4 (mirroring) option to gaussianblur and make it the default - Dynamically load FFTW (libfftwf3-3.dll) instead of statically linking to old .lib - Multithread GaussianBlur using OpenMP and use FFTW multithreaded plans - SSE/SSE2 optimizations. GaussianBlur now requires SSE2 capable CPU.
v0.5 2011/03/14 - Add gfunc/gfuncc/pcr/pcrc parameters to GaussianBlur/unsharp (tritical)
v0.4+ 2008/08/30 - Memory leak fix by Neuron2
v0.4 2005/05/24 - Fixed bug with converting float to unsigned char without proper clamping. Also included an sharp filter and optional integrated Gaussian coefficients. v0.3 2005/05/06 - GaussianBlur is included, old Gaussian is renamed to BinomialBlur.
v0.2 2005/01/24 - 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)
v0.1 2005/01/19 - Initial release


[edit] Archived Downloads

Version Download Mirror
v0.7 (x86/x64) variableblur0.7_x86_x64.7z variableblur0.7_x86_x64.7z
v0.7 variableblur.zip
v0.5(x64) VariableBlur05_x64.7z variableblur05_x64.7z /// variableblur05_x64src.7z
v0.4+ VariableBlur.zip VariableBlur.zip
v0.4 VariableBlur040.zip VariableBlur040.zip
v0.3 variableblur_25_dll_20050506.zip variableblur_25_dll_20050506.zip
  • v0.5 x64 version was compiled by yo4kazu. Main download includes binary and source. This version is outdated, only here for reference.


[edit] External Links




Back to External Filters

Personal tools