<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://avisynth.nl/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://avisynth.nl/index.php?action=history&amp;feed=atom&amp;title=Neo_FFT3D</id>
		<title>Neo FFT3D - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://avisynth.nl/index.php?action=history&amp;feed=atom&amp;title=Neo_FFT3D"/>
		<link rel="alternate" type="text/html" href="http://avisynth.nl/index.php?title=Neo_FFT3D&amp;action=history"/>
		<updated>2026-05-01T01:05:22Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.24</generator>

	<entry>
		<id>http://avisynth.nl/index.php?title=Neo_FFT3D&amp;diff=12390&amp;oldid=prev</id>
		<title>Reel.Deal: r11</title>
		<link rel="alternate" type="text/html" href="http://avisynth.nl/index.php?title=Neo_FFT3D&amp;diff=12390&amp;oldid=prev"/>
				<updated>2021-08-22T19:49:24Z</updated>
		
		<summary type="html">&lt;p&gt;r11&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 19:49, 22 August 2021&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 2:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Filter3&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;{{Filter3&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|1=[https://github.com/msg7086 MeteorRain]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|1=[https://github.com/msg7086 MeteorRain]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|2=&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;r10&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|2=&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;r11&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|3=[https://github.com/HomeOfAviSynthPlusEvolution/neo_FFT3D/releases &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;NeoFFT3D_r10&lt;/del&gt;.zip]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|3=[https://github.com/HomeOfAviSynthPlusEvolution/neo_FFT3D/releases &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;NeoFFT3D_r11&lt;/ins&gt;.zip]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|4=Denoisers &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|4=Denoisers &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|5=[https://www.gnu.org/licenses/gpl-2.0.txt GPLv2]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;|5=[https://www.gnu.org/licenses/gpl-2.0.txt GPLv2]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Reel.Deal</name></author>	</entry>

	<entry>
		<id>http://avisynth.nl/index.php?title=Neo_FFT3D&amp;diff=12387&amp;oldid=prev</id>
		<title>Reel.Deal: neo_fft3d</title>
		<link rel="alternate" type="text/html" href="http://avisynth.nl/index.php?title=Neo_FFT3D&amp;diff=12387&amp;oldid=prev"/>
				<updated>2021-08-16T04:38:30Z</updated>
		
		<summary type="html">&lt;p&gt;neo_fft3d&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{FilterCat6|External_filters|Plugins|Plugins_x64|Denoisers|Spatial-Temporal_Denoisers|Deep_color_tools}}&lt;br /&gt;
{{Filter3&lt;br /&gt;
|1=[https://github.com/msg7086 MeteorRain]&lt;br /&gt;
|2=r10&lt;br /&gt;
|3=[https://github.com/HomeOfAviSynthPlusEvolution/neo_FFT3D/releases NeoFFT3D_r10.zip]&lt;br /&gt;
|4=Denoisers &lt;br /&gt;
|5=[https://www.gnu.org/licenses/gpl-2.0.txt GPLv2]&lt;br /&gt;
|6=[https://forum.doom9.org/showthread.php?t=181294 Doom9 Forum]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
FFT3DFilter is a 3D Frequency Domain filter - strong denoiser and moderate sharpener. It was originally written by Alexander G. Balakhnin aka Fizick, and later modified by martin53 for AviSynth 2.6 and later modified by Ferenc Pintér aka pinterf for further improvement, high bit depth, and more. Kudos to them for creating and improving this fantastic tool.&lt;br /&gt;
&lt;br /&gt;
In this project, legacy format like YUY2 has been removed, legacy parameter like multiplane has been removed, and SIMD code has been completely re-written for all core parts of the code. Due to API change, the project has been renamed from FFT3DFilter to [[neo_FFT3D]] to avoid confusion. SSE is required to run optimized routine. AVX and AVX512 routine is also available.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
* [x86]: [[AviSynth+]] or [https://sourceforge.net/projects/avisynth2/ AviSynth 2.6.0]&lt;br /&gt;
* [x64]: [[AviSynth+]]&lt;br /&gt;
* Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]]&lt;br /&gt;
** AviSynth+: All [[planar]] formats (8/10/12/14/16/32-bit, Y, YUV(A), and RGB(A) with or without alpha) are supported. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Runtime dependencies===&lt;br /&gt;
The following are required, neo_fft3d will not run or load without them.&lt;br /&gt;
&lt;br /&gt;
* [http://www.fftw.org/install/windows.html FFTW 3.3.5] (&amp;lt;code&amp;gt;'''fftw-3.3.5-dll32.zip'''&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;'''fftw-3.3.5-dll64.zip'''&amp;lt;/code&amp;gt;)&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;***&amp;lt;/span&amp;gt; 32-bit &amp;lt;tt&amp;gt;[[libfftw3f-3.dll]]&amp;lt;/tt&amp;gt; needs to be in the search path (&amp;lt;tt&amp;gt;C:\Windows\SysWOW64&amp;lt;/tt&amp;gt; 64-bit OS or &amp;lt;tt&amp;gt;C:\windows\system32&amp;lt;/tt&amp;gt; 32-bit OS)&lt;br /&gt;
:&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;***&amp;lt;/span&amp;gt; 64-bit &amp;lt;tt&amp;gt;[[libfftw3f-3.dll]]&amp;lt;/tt&amp;gt; needs to be in the search path (&amp;lt;tt&amp;gt;C:\windows\system32&amp;lt;/tt&amp;gt; 64-bit OS)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== [[Script variables|Syntax and Parameters]] ==&lt;br /&gt;
{{Template:FuncDef|neo_fft3d (clip, float &amp;quot;sigma&amp;quot;, float &amp;quot;beta&amp;quot;, int &amp;quot;bw&amp;quot;, int &amp;quot;bh&amp;quot;, int &amp;quot;bt&amp;quot;, int &amp;quot;ow&amp;quot;, int &amp;quot;oh&amp;quot;, float &amp;quot;kratio&amp;quot;, float &amp;quot;sharpen&amp;quot;, float &amp;quot;scutoff&amp;quot;, float &amp;quot;svr&amp;quot;, float &amp;quot;smin&amp;quot;, float &amp;quot;smax&amp;quot;, bool &amp;quot;measure&amp;quot;, bool &amp;quot;interlaced&amp;quot;, int &amp;quot;wintype&amp;quot;, int &amp;quot;pframe&amp;quot;, int &amp;quot;px&amp;quot;, int &amp;quot;py&amp;quot;, bool &amp;quot;pshow&amp;quot;, float &amp;quot;pcutoff&amp;quot;, float &amp;quot;pfactor&amp;quot;, float &amp;quot;sigma2&amp;quot;, float &amp;quot;sigma3&amp;quot;, float &amp;quot;sigma4&amp;quot;, float &amp;quot;degrid&amp;quot;, float &amp;quot;dehalo&amp;quot;, float &amp;quot;hr&amp;quot;, float &amp;quot;ht&amp;quot;, int &amp;quot;y&amp;quot;, int &amp;quot;u&amp;quot;, int &amp;quot;v&amp;quot;, int &amp;quot;l&amp;quot;, int &amp;quot;t&amp;quot;, int &amp;quot;r&amp;quot;, int &amp;quot;b&amp;quot;, int &amp;quot;opt&amp;quot;, int &amp;quot;ncpu&amp;quot;, bool &amp;quot;mt&amp;quot;)}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2| |clip| }}&lt;br /&gt;
:::Input clip&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|sigma|float|2.0}}&lt;br /&gt;
:::Given noise value for all (or highest) frequencies. Only values greater that 0.0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|beta|float|1.0}}&lt;br /&gt;
:::Noise margin (float&amp;gt;=1.0, default=1.0 for no noise left): control noise amount left in the restoration for Wiener filter, so max filter noise attenuation = &amp;lt;code&amp;gt;(beta-1)/beta&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|bw|int|48}}&lt;br /&gt;
::{{Par2|bh|int|48}}&lt;br /&gt;
:::Block width and height.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|bt|int|3}}&lt;br /&gt;
:::Block temporal size, number of frames.&lt;br /&gt;
:::*0 : all previous frames (switch Kalman filter mode)&lt;br /&gt;
:::*1 : only current frame (spatial 2D Wiener filter)&lt;br /&gt;
:::*2 : previous and current frame (3D Wiener filter)&lt;br /&gt;
:::*3 : previous, current and next frame (3D Wiener filter)&lt;br /&gt;
:::*4 : two previous, current and next frame (3D Wiener filter)&lt;br /&gt;
:::*5 : two previous, current and two next frames (3D Wiener filter)&lt;br /&gt;
:::*-1 : sharpen only (2D)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|ow|int|bw/3}}&lt;br /&gt;
::{{Par2|oh|int|bh/3}}&lt;br /&gt;
:::Overlap width and height.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|kratio|float|2.0}}&lt;br /&gt;
:::Ratio of threshold to sigma to reset Kalman filter. Variation threshold = &amp;lt;code&amp;gt;sigma*kratio&amp;lt;/code&amp;gt;, good value is about from 1.5 to 3.0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|sharpen|float|0.0}}&lt;br /&gt;
:::Sharpening strength (default=0 -  do not sharpen).  Good values are about 0.3 to 1.0 (negative values results in reverse effect)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|scutoff|float|0.3}}&lt;br /&gt;
::: Sharpening cutoff frequency, relative to max.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|svr|float|1.0}}&lt;br /&gt;
:::Sharpening (and dehalo) vertical ratio (to horizontal) (default=1.0 - same as horizontal, 0 - no vertical sharpening)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|smin|float|4.0}}&lt;br /&gt;
::{{Par2|smin|float|20.0}}&lt;br /&gt;
::: Minimum and maximum limit (approximate noise margin) for sharpening stage.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|measure|bool|true}}&lt;br /&gt;
:::Select the most optimal (fastest) FFT method by speed measure (with longer init stage) instead of simple estimation.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|interlaced|bool|false}}&lt;br /&gt;
:::Separate fields processing.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|wintype|int|0}}&lt;br /&gt;
:::weighting windows type:&lt;br /&gt;
:::*0 : same analysis and synthesis half-cosine window, used in all versions before 1.4.&lt;br /&gt;
:::*1 : intermediate between 0 and 2&lt;br /&gt;
:::*2 : flat analysis window, rised cosine (Hanning) synthesis window.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|pframe|bool|false}}&lt;br /&gt;
:::Noise pattern frame number.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|px|int|0}}&lt;br /&gt;
::{{Par2|py|int|0}}&lt;br /&gt;
:::Noise pattern block horizontal X position and vertical Y position. If &amp;lt;code&amp;gt;px=py=0&amp;lt;/code&amp;gt;, then the pattern block is defined automatically with minimal power spectral density.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|pshow|bool|false}}&lt;br /&gt;
:::Show noise pattern block and its properties.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|pcutoff|float|0.1}}&lt;br /&gt;
:::Noise pattern cutoff frequency (relative to max).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|pfactor|float|0.0}}&lt;br /&gt;
:::Noise pattern denoise strength (0 to 1.0, default=0, this method disabled).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|singma2|float|sigma}}&lt;br /&gt;
::{{Par2|singma3|float|sigma}}&lt;br /&gt;
::{{Par2|singma4|float|sigma}}&lt;br /&gt;
:::Given noise value at second, third, and lowest scale level frequencies. Only values greater that 0.0 &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|degrid|float|1.0}}&lt;br /&gt;
:::Weighting window compensation degree for grid decreasing. Only values greater that 0.0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|dehalo|float|0.0}}&lt;br /&gt;
:::Halo removal strength. Only values greater that 0.0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|hr|float|2.0}}&lt;br /&gt;
:::Halo approximate radius. Only values greater that 0.0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|ht|float|50.0}}&lt;br /&gt;
:::Halo approximate threshold. Only values greater that 0.0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|y|int|3}}&lt;br /&gt;
::{{Par2|u|int|3}}&lt;br /&gt;
::{{Par2|v|int|3}}&lt;br /&gt;
:::Whether a plane is to be filtered.&lt;br /&gt;
:::*1 - Do not touch, leaving garbage data&lt;br /&gt;
:::*2 - Copy from origin&lt;br /&gt;
:::*3 - Process&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|l|int|0}}&lt;br /&gt;
::{{Par2|t|int|0}}&lt;br /&gt;
::{{Par2|r|int|0}}&lt;br /&gt;
::{{Par2|b|int|0}}&lt;br /&gt;
:::Exclude part of image to be filtered.&lt;br /&gt;
:::Non-filtered part is copied from the source.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|opt|int|0}}&lt;br /&gt;
:::Sets which CPU optimizations to use.&lt;br /&gt;
:::*&amp;lt;0 - Auto detect&lt;br /&gt;
:::*0 - Auto detect with AVX512 disabled&lt;br /&gt;
:::*1 - Use C&lt;br /&gt;
:::*2 - Use up to SSE&lt;br /&gt;
:::*3 - Use up to AVX&lt;br /&gt;
:::*4 - Use up to AVX512&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|ncpu|int|2}}&lt;br /&gt;
:::Number of FFTW multi threads.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
::{{Par2|mt|bool|false}}&lt;br /&gt;
:::&amp;lt;code&amp;gt;mt = false&amp;lt;/code&amp;gt; disables plane based multi-threading (default).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==Examples==&lt;br /&gt;
To sharpen only:&lt;br /&gt;
&lt;br /&gt;
 AviSource(&amp;quot;blah.avi&amp;quot;)&lt;br /&gt;
 neo_fft3d(bt=-1, sharpen=0.7)&lt;br /&gt;
&lt;br /&gt;
To denoise and slightly sharpen the interlaced clip:&lt;br /&gt;
&lt;br /&gt;
 neo_fft3d(sigma=2, sharpen=0.3, interlaced=true)&lt;br /&gt;
&lt;br /&gt;
Some &amp;quot;best settings&amp;quot;, slower processing:&lt;br /&gt;
&lt;br /&gt;
 neo_fft3d(sigma=1.5, bt=5, bw=32, bh=32, ow=16, oh=16, sharpen=0.4)&lt;br /&gt;
&lt;br /&gt;
To denoise all color planes (both luma and chroma):&lt;br /&gt;
&lt;br /&gt;
 neo_fft3d(sigma=2, y=3, u=3, v=3) # same as neo_fft3d(sigma=2)&lt;br /&gt;
&lt;br /&gt;
To denoise luma and chroma with different settings:&lt;br /&gt;
&lt;br /&gt;
 neo_fft3d(sigma=1.5, y=3, u=2, v=2)&lt;br /&gt;
 neo_fft3d(sigma=3.0, y=2, u=3, v=3)&lt;br /&gt;
&lt;br /&gt;
To decrease the existing horizontal halo only:&lt;br /&gt;
&lt;br /&gt;
 neo_fft3d(bt=-1, dehalo=1.0, hr=2.0, ht=50, svr=0, y=3, u=2, v=2)&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Changelog ==&lt;br /&gt;
See GitHub [https://github.com/HomeOfAviSynthPlusEvolution/neo_FFT3D/releases releases page].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External Links ==&lt;br /&gt;
*[https://github.com/HomeOfAviSynthPlusEvolution/neo_FFT3D GitHub] - Source code repository&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
-----------------------------------------------&lt;br /&gt;
'''Back to [[External_filters#Spatio-Temporal_Denoisers|External Filters]] &amp;amp;larr;'''&lt;/div&gt;</summary>
		<author><name>Reel.Deal</name></author>	</entry>

	</feed>