FFTQuiver

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
(Created page with " {{FilterCat4|External_filters|Plugins|<!-- category -->TODO|<!-- category -->TODO}} {{Filter3 |1=<!-- author -->[http://www.avisynth.nl/users/vcmohan/ V.C.Mohan] |2=<!-- ver...")
 
(documentation update with correct plugin (needs work))
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  
{{FilterCat4|External_filters|Plugins|<!-- category -->TODO|<!-- category -->TODO}}
+
{{FilterCat4|External_filters|Plugins|<!-- category --> Denoisers|<!-- category --> TODO}}
  
 
{{Filter3
 
{{Filter3
|1=<!-- author -->[http://www.avisynth.nl/users/vcmohan/ V.C.Mohan]
+
|1=<!-- author --> [http://www.avisynth.nl/users/vcmohan/ V.C.Mohan]
|2=<!-- version -->1.0.0.0.0
+
|2=<!-- version --> 9 May 2016
|3=<!-- download 2.5.8 version URL -->2.5.8 version[http://www.avisynth.nl/users/vcmohan/FFTQuiver/FFTQuiver.zip FFTQuiver] 2.6.0 alpha5 version URL -->[http://www.avisynth.nl/users/vcmohan/FFTQuiver/FFTQuiver_2_6.zip FFTQuiver]
+
|3=<!-- URL --> [http://www.avisynth.nl/users/vcmohan/FFTQuiver/FFTQuiver_2_6.zip FFTQuiver_2_6.zip]
 
|4=<!-- category -->External filters
 
|4=<!-- category -->External filters
|5=<!-- license -->[http://www.gnu.org/licenses/gpl-2.0.txt GPLv2]
+
|5=<!-- license -->[https://www.gnu.org/licenses/gpl-2.0.txt GPLv2]
|6=<!-- discussion URL -->[ Announced FFTQuiver plugin]}}
+
|6=<!-- discussion URL --> }}
  
 
<br>
 
<br>
 
== Description ==
 
== Description ==
<!-- a one-sentence description -->
+
4 Functions for frequency domain customizable filtering in one or two dimensions. [http://www.avisynth.nl/users/vcmohan/FFTQuiver/FFTQuiver.htm Full Description]
Regular periodic noise is filtered in 1D frequency domain by F1Quiver and in 2D frequency domain by F2Quiver functions of this plugin and a full description is at  [http://www.avisynth.nl/users/vcmohan/FFTQuiver/FFTQuiver.html click me].
+
 
<br>
 
<br>
 +
[[FFTQuiver]] plugin has two main functions: F1Quiver, F2Quiver. To visualize the frequency spectra and correctly specify filters, two supporting functions are also included. These are F1QTest and F2QTest. These have identical parameters with the processing functions for ease of scripting.
 +
 +
*F1Quiver and F1QTest transforms image data row by row into one dimensional spatial frequency domain.
 +
*F2Quiver and F2QTest as the name implies converts whole of image through a 2d transform into spatial frequency domain.
 +
 +
These functions have a large number of cascadable frequency domain Gaussian and Butterworth filters for image processing.F1Quiver has a custom filter facility also. Homomorphic filtering can also be done with these functions.
 +
 +
*For AviSynth+ see [[FQPlus]], includes high bit depth colorspace support and 64-bit.
 +
 
<br>
 
<br>
 
== Requirements ==
 
== Requirements ==
* <!-- Avisynth version -->AviSynth 2.5.8 or [http://sourceforge.net/projects/avisynth2/files/AviSynth_Alpha_Releases/ 2.6.0 Alpha 5 or greater]
+
* [x86]: [[AviSynth+]] or [https://sourceforge.net/projects/avisynth2/ AviSynth 2.6]
* <!-- source video: progressive]
+
* Supported color formats: [[YUY2]], [[Y8]], [[YV12]], [[YV16]], [[YV24]]
* <!-- color formats -->Supported color formats: [[YUY2]], [[YV12]], <span style="color:red">*</span>[[YV16]], <span style="color:red">*</span>[[YV24]], <span style="color:red">*</span>[[YV411]], <span style="color:red">*</span>[[Y8]]
+
<br>
: <span style="color:red">*</span> Not available in AviSynth 2.5.8.
+
===Runtime dependencies===
* <!-- CPU/GPU -->
+
The following are required, FFTQuiver will not run or load without them.
* <!-- binaries -->
+
 
* <!-- dependent plugins -->[http://www.avisynth.nl/users/vcmohan/libfftw3f-3.zip libfftw3f-3.dll] or [http://www.fftw.org fftw3-3.dll]
+
* [http://www.fftw.org/install/windows.html FFTW 3.3.5] (<code>'''fftw-3.3.5-dll32.zip'''</code>)
 +
:<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)
 
<br>
 
<br>
"F1Quiver", "ci*[custom]b[test]b[row]i[erow]i[gamma]f[morph]b";
 
<br>  "F2Quiver", "ci*[test]b[morph]b[rescale]b[gamma]f[mfact]i[frad]i";
 
 
== [[Script variables|Syntax and Parameters]] ==
 
== [[Script variables|Syntax and Parameters]] ==
:{{Template:FuncDef|<!-- function name -->FnQuiver (''clip'', ''<!-- par 1 type -->int array'' "<!-- par 1 name -->", ''<!-- par 2 type -->bool'' "<!-- par 2 name -->test", ''<!-- par 3 type -->bool'' "<!-- par 3 name -->morph ",''<!-- par 4 type -->float'' <!-- par 4 name -->gamma",''<!-- par n type -->Effect_specific_parameters")}}
+
:{{Template:FuncDef| F1Quiver (clip, int "Array of values", bool "morph", bool "rescale", float "gamma", int "frad", bool "uv")}}
 
<br>
 
<br>
 
::{{Par2| |clip| }}
 
::{{Par2| |clip| }}
:::Input clip.     
+
::: Input clip
 
<br>
 
<br>
::{{Par2|<!-- par 1 type -->int array|<!-- par 1 name -->|<!-- par 1 default value -->none}}
+
::{{Par2|Array of values|int|#,#,#,#}}
:::<!-- par 1 description -->Array of integer sets specifying frequency domain filters .May not specify for test mode.  
+
::: Sets of integers. For "custom" pairs of frequency and percentage amplitude must follow. Each standard filter has a set of 4 values
 
<br>
 
<br>
::{{Par2|<!-- par 2 type -->bool|<!-- par 2 name -->test|<!-- par 2 default value -->false}}
+
::{{Par2|custom|bool|false}}
:::<!-- par 2 description -->If true display power spectrum and designed filters .
+
::: Is filter of custom design?
 
<br>
 
<br>
::{{Par2|<!-- par 3 type -->bool|<!-- par 3 name -->morph|<!-- par 3 default value -->false}}
+
::{{Par2|morph|bool|false}}
:::<!-- par 3 description -->Is homomorphic filtering intended? .
+
::: Whether homomorphic filtering is to be done?
 +
<br>
 +
::{{Par2|uv|bool|false}}
 +
::: Whether Planar U and V planes also to be filtered
 
<br>
 
<br>
::{{Par2|<!-- par 4 type -->float|<!-- par 4 name -->gamma|<!-- par 3 default value -->0.05}}
 
:::<!-- par 3 description -->scaling for spectral display .
 
  
 +
:{{Template:FuncDef| F2Quiver (clip, int "Array of values", bool "morph", bool "rescale", int "frad", bool "uv")}}
 
<br>
 
<br>
::{{Par2|<!-- par n type -->*|<!-- par n name -->refer_specific_function|<!-- par n default value -->?}}
+
::{{Par2| |clip| }}
:::<!-- par n description -->See detailed description of functions.
+
::: Input clip
 
<br>
 
<br>
 
+
::{{Par2|Array of values|int|#,#,#,...}}
 +
::: Sets of integers. For F2Quiver at least one set must be specified.
 
<br>
 
<br>
 +
::{{Par2|morph|bool|false}}
 +
::: Is this a homomorphic process?
 
<br>
 
<br>
 +
::{{Par2|rescale|bool|false}}
 +
::: Is rescaling the output required?
 +
<br>
 +
::{{Par2|gamma|float|0.05}}
 +
::: Gamma value to be used for spectral display scaling
 +
<br>
 +
::{{Par2|gamma|int|32}}
 +
::: Filter radial length
 +
<br>
 +
::{{Par2|uv|boolean|false}}
 +
::: Are u and v planes of YUV444 to be filtered?
  
 +
<br>
 
== Examples ==
 
== Examples ==
 
<!-- example code block: 1st char in each line = space -->
 
<!-- example code block: 1st char in each line = space -->
## This is some example code to remove noise from an image.
+
:F1Quiver
imagereader("C:\avi_plugins\varianslim\theoin.jpg", end = 10)
+
 
converttoyv16()
+
  F1Quiver(25,100,34,0,42,0, 54,100, custom = true)
  f1=F1Quiver(last, test = true)
+
 
f1a=F1Quiver (37,100,38,0,40,0, 44,100,test =true,row = 155, erow=250,custom = true,gamma =0.2 )  
+
  F1Quiver(5,39,200,1, uv = true)
  #F1Quiver(5,39,200,1,test = true, gamma = 0.2)
+
 
stackHorizontal(f1,f1a)
+
:F2Quiver
<br>F2 example
+
  F2Quiver(5,5,60,-35,20,1,2,120,60,8,4,1,70,80,4,3,4,40,42,18,morph=false,gamma=0.04)
# test with no filter
+
 
f2t1=f2Quiver(test = true)
+
#Following demonstrates filters that can be designed
+
  #F2Quiver(5,5,60,-35,20,1,2,120,60,8,4,1,70,80,4,3,4,40,42,18,test = true,gamma=0.04)
+
f2t=F2Quiver(3,4,35,44,12,test = true)
+
# process
+
f2=F2Quiver(3,4,35,44,12)
+
#f2=F2Quiver(4,4,38,42,18,test = true,morph =false,gamma=0.04)
+
 
<br>
 
<br>
 
-----------------------------------------------
 
-----------------------------------------------
 
'''Back to [[External_filters|External Filters]] &larr;'''
 
'''Back to [[External_filters|External Filters]] &larr;'''

Latest revision as of 02:22, 1 June 2020


Abstract
Author V.C.Mohan
Version 9 May 2016
Download FFTQuiver_2_6.zip
Category External filters
License GPLv2
Discussion


Contents

[edit] Description

4 Functions for frequency domain customizable filtering in one or two dimensions. Full Description
FFTQuiver plugin has two main functions: F1Quiver, F2Quiver. To visualize the frequency spectra and correctly specify filters, two supporting functions are also included. These are F1QTest and F2QTest. These have identical parameters with the processing functions for ease of scripting.

  • F1Quiver and F1QTest transforms image data row by row into one dimensional spatial frequency domain.
  • F2Quiver and F2QTest as the name implies converts whole of image through a 2d transform into spatial frequency domain.

These functions have a large number of cascadable frequency domain Gaussian and Butterworth filters for image processing.F1Quiver has a custom filter facility also. Homomorphic filtering can also be done with these functions.

  • For AviSynth+ see FQPlus, includes high bit depth colorspace support and 64-bit.


[edit] Requirements


[edit] Runtime dependencies

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

*** 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)


[edit] Syntax and Parameters

F1Quiver (clip, int "Array of values", bool "morph", bool "rescale", float "gamma", int "frad", bool "uv")


clip   =
Input clip


int  Array of values = #,#,#,#
Sets of integers. For "custom" pairs of frequency and percentage amplitude must follow. Each standard filter has a set of 4 values


bool  custom = false
Is filter of custom design?


bool  morph = false
Whether homomorphic filtering is to be done?


bool  uv = false
Whether Planar U and V planes also to be filtered


F2Quiver (clip, int "Array of values", bool "morph", bool "rescale", int "frad", bool "uv")


clip   =
Input clip


int  Array of values = #,#,#,...
Sets of integers. For F2Quiver at least one set must be specified.


bool  morph = false
Is this a homomorphic process?


bool  rescale = false
Is rescaling the output required?


float  gamma = 0.05
Gamma value to be used for spectral display scaling


int  gamma = 32
Filter radial length


boolean  uv = false
Are u and v planes of YUV444 to be filtered?


[edit] Examples

F1Quiver
F1Quiver(25,100,34,0,42,0, 54,100, custom = true)
F1Quiver(5,39,200,1, uv = true)
F2Quiver
F2Quiver(5,5,60,-35,20,1,2,120,60,8,4,1,70,80,4,3,4,40,42,18,morph=false,gamma=0.04)



Back to External Filters

Personal tools