CombMask: Difference between revisions
From Avisynth wiki
Jump to navigationJump to search
Raffriff42 (talk | contribs) redirect for convenient searching |
CombMask: add documentation (WIP) |
||
| Line 1: | Line 1: | ||
{{FilterCat5|External_filters|Plugins|Plugins_x64|Adjustment_filters|Averaging}} | |||
{{ | {{Filter3 | ||
| {{Author/Chikuzen}} | |||
| v1.1.1 | |||
|[https://github.com/Asd-g/CombMask/releases CombMask-1.1.1.7z] | |||
| Masking | |||
| | |||
|}} | |||
<br> | |||
== Description == | |||
A filter to create and process comb masks. These filters were written from scratch, but most of logic comes from tritical's [[TIVTC]] plugin. | |||
<br> | |||
<br> | |||
== Requirements == | |||
* [x86]: [[AviSynth+]] or [http://forum.doom9.org/showthread.php?t=168764 AviSynth 2.6] | |||
* [x64]: [[AviSynth+]] | |||
* Supported color formats: [[Y8]], [[YV12]], [[YV16]], [[YV24]], [[YV411]] | |||
<br> | |||
* [https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads Microsoft Visual C++ 2019 Redistributable Package (x86 / x64)] | |||
:<span style="color:red">***</span> <tt>vcredist_x86.exe</tt> is required for <tt>CombMask-x86</tt> | |||
:<span style="color:red">***</span> <tt>vcredist_x64.exe</tt> is required for <tt>CombMask-x64</tt> | |||
<br> | |||
== [[Script variables|Syntax and Parameters]] == | |||
===CombMask=== | |||
CombMask is a simple filter that creates a comb mask that can (could) be used by other filters like MaskTools2.<br> | |||
The mask consists of binaries of 0(not combed) and 255(combed). | |||
<br> | |||
<br> | |||
:{{Template:FuncDef|CombMask (clip, int "cthresh", int "mthresh", bool "chroma", bool "expand", int "metric", int opt) }} | |||
<br> | |||
::{{Par2| |clip| }} | |||
:::Input clip. | |||
<br> | |||
::{{Par2|cthresh|int| }} | |||
:::Spatial combing threshold. | |||
:::* 0 to 255, default is 6 (metric=0) | |||
:::* 0 to 65025, default is 10 (metric=1 | |||
<br> | |||
::{{Par2|mthresh|int|9}} | |||
:::Motion adaptive threshold. | |||
:::*0 to 255, default is 9. | |||
<br> | |||
::{{Par2|chroma|bool|true}} | |||
:::Whether processing is performed to UV planes or not. | |||
:::*Default is true. | |||
<br> | |||
::{{Par2|exapnd|bool|true}} | |||
:::When set this to true, left and right pixels of combed pixel also assumed to combed. | |||
:::*Default is true. | |||
<br> | |||
::{{Par2|metric|int|0}} | |||
:::Sets which spatial combing metric is used to detect combed pixels. | |||
:::Possible options: | |||
<div style="margin-left: 6em; max-width: 67em"> | |||
<pre> | |||
Assume 5 neighboring pixels (a,b,c,d,e) positioned vertically. | |||
a | |||
b | |||
c | |||
d | |||
e | |||
0: d1 = c - b; | |||
d2 = c - d; | |||
if ((d1 > cthresh && d2 > cthresh) || (d1 < -cthresh && d2 < -cthresh)) | |||
{ | |||
if (abs(a+4*c+e-3*(b+d)) > cthresh*6) it's combed; | |||
} | |||
1: val = (b - c) * (d - c); | |||
if (val > cthresh) it's combed; | |||
default is 0. | |||
</pre> | |||
</div> | |||
<br> | |||
::{{Par2|opt|int| }} | |||
:::Specify which CPU optimization are used. | |||
:::*0 : Use C++ routine. | |||
:::*1 : Use SSE2 routin if possible. When SSE2 can't be used, fallback to 0. | |||
:::*Others(default) : Use AVX2 routine if possible. When AVX2 can't be used, fallback to 1. | |||
<br> | |||
------------------ | |||
===MaskedMerge=== | |||
MaskedMerge is an exclusive masking filter for CombMask. This is often faster than MaskTools2's mt_merge(). | |||
<br> | |||
<br> | |||
:{{Template:FuncDef|MaskedMerge (clip base, clip alt, clip mask, int "MI", int "blockx", int "blocky", bool "chroma", int opt)}} | |||
<br> | |||
::{{Par2| |clip| }} | |||
:::Input clip. | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
------------------ | |||
===IsCombed=== | |||
IsCombed is a is a utility function that can be used within AviSynth's [[ConditionalFilter]] to test whether or not a frame is combed and returns true if it is and false if it isn't. | |||
<br> | |||
<br> | |||
:{{Template:FuncDef|IsCombed (clip, int "cthresh", int "mthresh", int "MI", int "blockx", int "blocky", int "metric", int "opt")}} | |||
<br> | |||
::{{Par2| |clip| }} | |||
:::Input clip. | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
::{{Par2|||}} | |||
::: | |||
<br> | |||
== Examples == | |||
TODO: | |||
[[AviSource]]("blah.avi") | |||
<br> | |||
== Changelog == | |||
Version Date Changes<br> | |||
v1.1.1 2020/05/13 - Changes by asd-g | |||
- Update to AviSynth+'s v8 interface | |||
<br> | |||
== External Links == | |||
*[https://github.com/chikuzen/CombMask/tree/master/avisynth GitHub] - Source code repository. | |||
*[https://github.com/Asd-g/CombMask/tree/v8_interface/avisynth GitHub] - Source code repository (update). | |||
<br> | |||
<br> | |||
----------------------------------------------- | |||
'''Back to [[External_filters#Averaging.2FLayering.2FMasking|External Filters]] ←''' | |||
Revision as of 05:10, 17 May 2020
| Abstract | |
|---|---|
| Author | Chikuzen |
| Version | v1.1.1 |
| Download | CombMask-1.1.1.7z |
| Category | Masking |
| License | |
| Discussion | |
Description
A filter to create and process comb masks. These filters were written from scratch, but most of logic comes from tritical's TIVTC plugin.
Requirements
- [x86]: AviSynth+ or AviSynth 2.6
- [x64]: AviSynth+
- Supported color formats: Y8, YV12, YV16, YV24, YV411
- *** vcredist_x86.exe is required for CombMask-x86
- *** vcredist_x64.exe is required for CombMask-x64
CombMask
CombMask is a simple filter that creates a comb mask that can (could) be used by other filters like MaskTools2.
The mask consists of binaries of 0(not combed) and 255(combed).
- CombMask (clip, int "cthresh", int "mthresh", bool "chroma", bool "expand", int "metric", int opt)
- clip =
- Input clip.
- clip =
- int cthresh =
- Spatial combing threshold.
- 0 to 255, default is 6 (metric=0)
- 0 to 65025, default is 10 (metric=1
- Spatial combing threshold.
- int cthresh =
- int mthresh = 9
- Motion adaptive threshold.
- 0 to 255, default is 9.
- Motion adaptive threshold.
- int mthresh = 9
- bool chroma = true
- Whether processing is performed to UV planes or not.
- Default is true.
- Whether processing is performed to UV planes or not.
- bool chroma = true
- bool exapnd = true
- When set this to true, left and right pixels of combed pixel also assumed to combed.
- Default is true.
- When set this to true, left and right pixels of combed pixel also assumed to combed.
- bool exapnd = true
- int metric = 0
- Sets which spatial combing metric is used to detect combed pixels.
- Possible options:
- int metric = 0
Assume 5 neighboring pixels (a,b,c,d,e) positioned vertically.
a
b
c
d
e
0: d1 = c - b;
d2 = c - d;
if ((d1 > cthresh && d2 > cthresh) || (d1 < -cthresh && d2 < -cthresh))
{
if (abs(a+4*c+e-3*(b+d)) > cthresh*6) it's combed;
}
1: val = (b - c) * (d - c);
if (val > cthresh) it's combed;
default is 0.
- int opt =
- Specify which CPU optimization are used.
- 0 : Use C++ routine.
- 1 : Use SSE2 routin if possible. When SSE2 can't be used, fallback to 0.
- Others(default) : Use AVX2 routine if possible. When AVX2 can't be used, fallback to 1.
- Specify which CPU optimization are used.
- int opt =
MaskedMerge
MaskedMerge is an exclusive masking filter for CombMask. This is often faster than MaskTools2's mt_merge().
- MaskedMerge (clip base, clip alt, clip mask, int "MI", int "blockx", int "blocky", bool "chroma", int opt)
- clip =
- Input clip.
- clip =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
IsCombed
IsCombed is a is a utility function that can be used within AviSynth's ConditionalFilter to test whether or not a frame is combed and returns true if it is and false if it isn't.
- IsCombed (clip, int "cthresh", int "mthresh", int "MI", int "blockx", int "blocky", int "metric", int "opt")
- clip =
- Input clip.
- clip =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
- =
Examples
TODO:
AviSource("blah.avi")
Changelog
Version Date Changes
v1.1.1 2020/05/13 - Changes by asd-g - Update to AviSynth+'s v8 interface
External Links
Back to External Filters ←