Convolution3D: Difference between revisions
From Avisynth wiki
Jump to navigationJump to search
Raffriff42 (talk | contribs) m link fix |
m →Examples: typo |
||
| (2 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
{{FilterCat5|External_filters|Plugins|Plugins_x64|Denoisers|Spatial-Temporal Denoisers}} | |||
{{ | {{Filter3 | ||
|vlad59, {{Author/pinterf}} | |||
|v1.1 | |||
|3=[https://github.com/pinterf/Convolution3D/releases Convolution3D_v1.1.7z] | |||
|4=Spatial-Temporal Denoisers | |||
|5=[http://www.gnu.org/licenses/gpl-2.0.txt GPLv2] | |||
|6=[https://forum.doom9.org/showthread.php?t=49806 Doom9 Forum] | |||
}} | |||
== Description == | |||
[[Convolution3D]] is an AviSynth filter that will apply a 3D - temporal and/or spatial - convolution to a frame | |||
<br> | |||
<br> | |||
== Requirements == | |||
* [x86] [[AviSynth+]] or [http://sourceforge.net/projects/avisynth2/ AviSynth 2.6] | |||
* [x64] [[AviSynth+]] | |||
* Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]] | |||
<br> | |||
== [[Script variables|Syntax and Parameters]] == | |||
:{{Template:FuncDef|Convolution3D (clip, int "matrix", int "ythresh", int "cthresh", int "t_ythresh", int "t_cthresh", float "influence", int "debug")}} | |||
<br> | |||
::{{Par2| |clip| }} | |||
:::Input clip. | |||
<br> | |||
::{{Par2|matrix|int|0}} | |||
:::Matrix: | |||
:::*0 : Original matrix; useful for normal video (not anime) because it keep more details. | |||
<code> | |||
::::1 2 1 2 4 2 1 2 1 | |||
::::2 4 1 4 8 4 2 4 1 | |||
::::1 2 1 2 4 2 1 2 1 | |||
</code> | |||
:::*1 : Full 1 matrix; useful with anime or bad quality sources because it blurs a little more (so it removes more noise). | |||
<code> | |||
::::1 1 1 1 1 1 1 1 1 | |||
::::1 1 1 1 1 1 1 1 1 | |||
::::1 1 1 1 1 1 1 1 1 | |||
</code> | |||
<br> | |||
::{{Par2|ythresh|int|3}} | |||
::{{Par2|cthresh|int|4}} | |||
:::Spatial treshold for luma and chroma. | |||
<br> | |||
::{{Par2|t_ythresh|int|3}} | |||
::{{Par2|t_cthresh|int|4}} | |||
:::Temporal treshold for luma and chroma. | |||
<br> | |||
::{{Par2|influence|float|3.0}} | |||
:::This parameter is used especially to speed up a little this filter and to avoid using temporal information when not needed (scene change, fade, ...). | |||
:::First a limit is built = Temporal Luma Threshold * Temporal influence | |||
:::For each 2 pixel computed, this is checked: | |||
<div style="margin-left: 6em; max-width: 37em"> | |||
<pre> | |||
if | |||
(Abs (Y0 - Y0[Previous frame]) + | |||
Abs (Y0 - Y0[Next frame]) + | |||
Abs (Y1 - Y1[Previous frame]) + | |||
Abs (Y1 - Y1[Next frame])) > limit | |||
then | |||
do Spacial work (only 3*3 matrix) | |||
Else | |||
do Spacial and Temporal work (3*3*3 matrix) | |||
</pre> | |||
</div> | |||
:::The lower it is -> the faster the filter will be but compressibility should be lower | |||
:::The higher it is -> the slower the filter will be but compressibility should be higher | |||
:::If temporal influence is set to -1 then only spatial work is done (high speed). | |||
:::Written by [https://forum.doom9.org/showthread.php?p=335149#post335149 Wilbert]. | |||
<br> | |||
::{{Par2|debug|int|0}} | |||
:::Not documented. | |||
<br> | |||
== Examples == | |||
Convolution3D with all default values: | |||
[[AviSource]]("Blah.avi") | |||
Convolution3D (matrix=0, ythresh=3, cthresh=4, t_ythresh=3, t_cthresh=4, influence=3.0) | |||
<br> | |||
== Changelog == | |||
Version Date Changes<br> | |||
v1.1 2021/03/11 - Migrate from VC6 to Visual Studio 2019, v142 toolset | |||
- Drop all (buggy beta) inline SSE assembler | |||
- Rewrite routines in SSE2 SIMD | |||
- Turn into Avisynth 2.6 interface | |||
- Preserve frame properties when Avisynth+ v8 interface | |||
- Add YV16, YV24 and YV411 format support besides YV12 | |||
- known bug: left and right side calculation can theoretically cause crash | |||
<br> | |||
== Archived Downloads == | |||
{| class="wikitable" border="1"; width="600px" | |||
|- | |||
!!width="100px"| Version | |||
!!width="150px"| Download | |||
!!width="150px"| Mirror | |||
|- | |||
!beta5 | |||
|[http://web.archive.org/web/20130118045049/http://hellninjacommando.com/con3d/beta/con3d-yv12-beta5.zip con3d-yv12-beta5.zip] | |||
| | |||
|} | |||
<br> | |||
== External Links == | |||
*[http://avisynth.nl/users/fizick/docs/english/externalfilters/convolution3d.htm avisynth.nl] - original documentation. | |||
*[https://forum.doom9.org/showthread.php?t=49806 Doom9 Forum] - original 2003 discussion thread on Doom9. | |||
*[https://forum.doom9.org/showthread.php?t=38281 Doom9 Forum] - original 2002 discussion thread on Doom9. | |||
<br> | |||
<br> | |||
----------------------------------------------- | |||
'''Back to [[External_filters#Spatio-Temporal_Denoisers| External Filters]] ←''' | |||
Latest revision as of 09:57, 13 March 2021
| Abstract | |
|---|---|
| Author | vlad59, pinterf |
| Version | v1.1 |
| Download | Convolution3D_v1.1.7z |
| Category | Spatial-Temporal Denoisers |
| License | GPLv2 |
| Discussion | Doom9 Forum |
Description
Convolution3D is an AviSynth filter that will apply a 3D - temporal and/or spatial - convolution to a frame
Requirements
- [x86] AviSynth+ or AviSynth 2.6
- [x64] AviSynth+
- Supported color formats: Y8, YV12, YV16, YV24, YV411
- Convolution3D (clip, int "matrix", int "ythresh", int "cthresh", int "t_ythresh", int "t_cthresh", float "influence", int "debug")
- clip =
- Input clip.
- clip =
- int matrix = 0
- Matrix:
- 0 : Original matrix; useful for normal video (not anime) because it keep more details.
- Matrix:
- int matrix = 0
- 1 2 1 2 4 2 1 2 1
- 2 4 1 4 8 4 2 4 1
- 1 2 1 2 4 2 1 2 1
- 1 : Full 1 matrix; useful with anime or bad quality sources because it blurs a little more (so it removes more noise).
- 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1
- 1 1 1 1 1 1 1 1 1
- int ythresh = 3
- int cthresh = 4
- Spatial treshold for luma and chroma.
- int ythresh = 3
- int t_ythresh = 3
- int t_cthresh = 4
- Temporal treshold for luma and chroma.
- int t_ythresh = 3
- float influence = 3.0
- This parameter is used especially to speed up a little this filter and to avoid using temporal information when not needed (scene change, fade, ...).
- First a limit is built = Temporal Luma Threshold * Temporal influence
- For each 2 pixel computed, this is checked:
- float influence = 3.0
if (Abs (Y0 - Y0[Previous frame]) + Abs (Y0 - Y0[Next frame]) + Abs (Y1 - Y1[Previous frame]) + Abs (Y1 - Y1[Next frame])) > limit then do Spacial work (only 3*3 matrix) Else do Spacial and Temporal work (3*3*3 matrix)
- The lower it is -> the faster the filter will be but compressibility should be lower
- The higher it is -> the slower the filter will be but compressibility should be higher
- If temporal influence is set to -1 then only spatial work is done (high speed).
- Written by Wilbert.
- int debug = 0
- Not documented.
- int debug = 0
Examples
Convolution3D with all default values:
AviSource("Blah.avi") Convolution3D (matrix=0, ythresh=3, cthresh=4, t_ythresh=3, t_cthresh=4, influence=3.0)
Changelog
Version Date Changes
v1.1 2021/03/11 - Migrate from VC6 to Visual Studio 2019, v142 toolset - Drop all (buggy beta) inline SSE assembler - Rewrite routines in SSE2 SIMD - Turn into Avisynth 2.6 interface - Preserve frame properties when Avisynth+ v8 interface - Add YV16, YV24 and YV411 format support besides YV12 - known bug: left and right side calculation can theoretically cause crash
Archived Downloads
| Version | Download | Mirror |
|---|---|---|
| beta5 | con3d-yv12-beta5.zip |
External Links
- avisynth.nl - original documentation.
- Doom9 Forum - original 2003 discussion thread on Doom9.
- Doom9 Forum - original 2002 discussion thread on Doom9.
Back to External Filters ←