TCannyMod
From Avisynth wiki
(Difference between revisions)
m (remove space) |
(update documentation to v1.0.0) |
||
Line 2: | Line 2: | ||
{{Filter3 | {{Filter3 | ||
| {{Author/Chikuzen}} | | {{Author/Chikuzen}} | ||
− | | | + | | v1.0.0 |
− | |[http://github.com/chikuzen/TCannyMod/releases/download/0 | + | |[http://github.com/chikuzen/TCannyMod/releases/download/1.0.0/TCannyMod-1.0.0.zip TCannyMod-1.0.0.zip] |
| Edge Detection | | Edge Detection | ||
| [http://www.gnu.org/licenses/gpl-2.0.txt GPLv2] | | [http://www.gnu.org/licenses/gpl-2.0.txt GPLv2] | ||
Line 9: | Line 9: | ||
== Description == | == Description == | ||
− | <tt>TCannyMod</tt> is a Canny edge detection filter. It's based on <tt>[[tcanny]]</tt> written by Kevin Stone (a.k.a. tritical) but rewritten from scratch exclusively for AviSynth 2.6.< | + | <tt>TCannyMod</tt> is a [http://en.wikipedia.org/wiki/Canny_edge_detector Canny edge detection] filter. It's based on <tt>[[tcanny]]</tt> written by Kevin Stone (a.k.a. tritical) but rewritten from scratch exclusively for AviSynth 2.6. |
+ | |||
+ | *'''NOTE''': TCannyMod requires appropriate memory alignments. Thus, if you want to crop the left side of your source clip before this filter, you have to set <code>[[Crop|Crop(align=true)]]</code>. | ||
<br> | <br> | ||
Line 18: | Line 20: | ||
<br> | <br> | ||
* [[SSE2]] capable CPU | * [[SSE2]] capable CPU | ||
− | * [http://www.microsoft.com/en-us/download/details.aspx?id= | + | * [http://www.microsoft.com/en-us/download/details.aspx?id=49984 Microsoft Visual C++ 2015 Redistributable Package (x86 / x64)] |
:<span style="color:red">***</span> <tt>vcredist_x86.exe</tt> required for <tt>TCannyMod-x86</tt> | :<span style="color:red">***</span> <tt>vcredist_x86.exe</tt> required for <tt>TCannyMod-x86</tt> | ||
:<span style="color:red">***</span> <tt>vcredist_x64.exe</tt> required for <tt>TCannyMod-x64</tt> | :<span style="color:red">***</span> <tt>vcredist_x64.exe</tt> required for <tt>TCannyMod-x64</tt> | ||
Line 29: | Line 31: | ||
<br> | <br> | ||
<br> | <br> | ||
− | :{{Template:FuncDef|TCannyMod (clip, int "mode", float "sigma", float "t_h", float "t_l", bool "sobel", int "chroma", float "gmmax")}} | + | :{{Template:FuncDef|TCannyMod (clip, int "mode", float "sigma", float "t_h", float "t_l", bool "sobel", int "chroma", float "gmmax", int "opt")}} |
<br> | <br> | ||
::{{Par2| |clip| }} | ::{{Par2| |clip| }} | ||
Line 41: | Line 43: | ||
:::*2 : edge pixel only gradient direction map (non-edge pixels set to 0) | :::*2 : edge pixel only gradient direction map (non-edge pixels set to 0) | ||
:::*3 : gradient direction map | :::*3 : gradient direction map | ||
− | ::::Gradient direction are normalized to | + | ::::Gradient direction are normalized to 31, 63, 127 and 255. |
− | ::::: | + | :::::31 = horizontal |
− | ::::: | + | :::::63 = 45' up |
− | ::::: | + | :::::127 = vertical |
− | ::::: | + | :::::255 = 45' down |
:::*4 : Gaussian blurred frame. | :::*4 : Gaussian blurred frame. | ||
<br> | <br> | ||
Line 70: | Line 72: | ||
:::Used for scaling gradient magnitude into [0,255] for {{Template:FuncDef3|mode}}=1. | :::Used for scaling gradient magnitude into [0,255] for {{Template:FuncDef3|mode}}=1. | ||
:::{{Template:FuncDef3|gmmax}} is internally set to 1.0 if you set it to < 1.0. | :::{{Template:FuncDef3|gmmax}} is internally set to 1.0 if you set it to < 1.0. | ||
+ | <br> | ||
+ | :::{{Par2|int|opt|-1}} | ||
+ | :::Specify which CPU optimization are used (default = auto). | ||
+ | :::*0 - forth SSE2 + SSE routine. | ||
+ | :::*1 - forth SSE4.1 + SSE2 + SSE routine. | ||
+ | :::Others(64bit only) - use AVX2 + FMA3 + AVX routine. | ||
<br> | <br> | ||
------------- | ------------- | ||
Line 78: | Line 86: | ||
<br> | <br> | ||
<br> | <br> | ||
− | :{{Template:FuncDef|GBlur (clip, float "sigma", int "chroma")}} | + | :{{Template:FuncDef|GBlur (clip, float "sigma", int "chroma", int "opt")}} |
<br> | <br> | ||
::{{Par2| |clip| }} | ::{{Par2| |clip| }} | ||
Line 94: | Line 102: | ||
:::*2 : copy from input clip. | :::*2 : copy from input clip. | ||
:::*3 : fill with 0x80(128), output is grayscale. | :::*3 : fill with 0x80(128), output is grayscale. | ||
+ | <br> | ||
+ | :::{{Par2|int|opt|-1}} | ||
+ | :::Specify which CPU optimization are used (default = auto). | ||
+ | :::*0 - forth SSE2 + SSE routine. | ||
+ | :::*1 - forth SSE4.1 + SSE2 + SSE routine. | ||
+ | :::Others(64bit only) - use AVX2 + FMA3 + AVX routine. | ||
<br> | <br> | ||
+ | |||
== Examples == | == Examples == | ||
{{Template:FuncDef3|TCannyMod}} with default settings: | {{Template:FuncDef3|TCannyMod}} with default settings: | ||
[[AviSource]]("blah.avi") | [[AviSource]]("blah.avi") | ||
− | TCannyMod (mode=0, sigma=1.5, t_h=8.0, t_l=1.0, sobel=false, chroma=0, gmmax=255.0) | + | TCannyMod (mode=0, sigma=1.5, t_h=8.0, t_l=1.0, sobel=false, chroma=0, gmmax=255.0, opt=-1) |
<br> | <br> | ||
{{Template:FuncDef3|GBlur}} with default settings: | {{Template:FuncDef3|GBlur}} with default settings: | ||
[[AviSource]]("blah.avi") | [[AviSource]]("blah.avi") | ||
− | GBlur (sigma=0.5, chroma=1) | + | GBlur (sigma=0.5, chroma=1, opt=-1) |
<br> | <br> | ||
== Changelog == | == Changelog == | ||
Version Date Changes<br> | Version Date Changes<br> | ||
+ | v1.0.0 03/26/2016 - Almost rewrite. | ||
+ | - VS2013 to VS2015. | ||
+ | - Add AVX2(64bit only) / SSE4.1(both 32bit and 64bit) support. | ||
+ | - Change direction values from 1,3,7,15 to 31,63,127,255. | ||
+ | - Reduce waste processes.<br> | ||
v0.2.0 09/13/2015 - add option "gmmax" | v0.2.0 09/13/2015 - add option "gmmax" | ||
- update avisynth.h | - update avisynth.h | ||
Line 123: | Line 143: | ||
!!width="150px"| Source code | !!width="150px"| Source code | ||
!!width="150px"| Mirror | !!width="150px"| Mirror | ||
+ | |- | ||
+ | !v1.0.0 | ||
+ | |[http://github.com/chikuzen/TCannyMod/releases/download/1.0.0/TCannyMod-1.0.0.zip TCannyMod-1.0.0.zip] | ||
+ | | | ||
+ | | | ||
|- | |- | ||
!v0.2.0 | !v0.2.0 |
Revision as of 15:51, 26 March 2016
Abstract | |
---|---|
Author | Chikuzen |
Version | v1.0.0 |
Download | TCannyMod-1.0.0.zip |
Category | Edge Detection |
License | GPLv2 |
Discussion | Doom9 Thread |
Contents |
Description
TCannyMod is a Canny edge detection filter. It's based on tcanny written by Kevin Stone (a.k.a. tritical) but rewritten from scratch exclusively for AviSynth 2.6.
- NOTE: TCannyMod requires appropriate memory alignments. Thus, if you want to crop the left side of your source clip before this filter, you have to set
Crop(align=true)
.
Requirements
- AviSynth 2.6.0 or greater
- x64 version requires AviSynth+ r1576 or greater
- Supported color formats: Y8, YV12, YV16, YV24, YV411
- *** vcredist_x86.exe required for TCannyMod-x86
- *** vcredist_x64.exe required for TCannyMod-x64
Syntax and Parameters
TCannyMod
Builds an edge map using Canny edge detection.
- TCannyMod (clip, int "mode", float "sigma", float "t_h", float "t_l", bool "sobel", int "chroma", float "gmmax", int "opt")
- clip =
- Input clip; only planar formats are supported.
- clip =
- int mode = 0
- Sets the output format:
- int mode = 0
- 0 : thresholded edge map (255 for edge, 0 for non-edge)
- 1 : gradient magnitude map.
- 2 : edge pixel only gradient direction map (non-edge pixels set to 0)
- 3 : gradient direction map
- Gradient direction are normalized to 31, 63, 127 and 255.
- 31 = horizontal
- 63 = 45' up
- 127 = vertical
- 255 = 45' down
- 4 : Gaussian blurred frame.
- float sigma = 1.5
- Standard deviation of Gaussian blur. 0 means no blurring before edge detection.
- (0 <= sigma <= 2.83, default = 1.5)
- float sigma = 1.5
- float t_h = 8.0
- float t_l = 1.0
- High and low gradient magnitude threshold for hysteresis; t_h must be greater than t_l.
- float t_h = 8.0
- bool sobel = false
- If set to true, edge detection will use a Sobel operator instead of [1, 0, -1].
- bool sobel = false
- int chroma = 0
- Chroma processing:
- int chroma = 0
- 0 : do not process
- 1 : process
- 2 : copy from input clip.
- 3 : fill with 0x80(128), output is grayscale.
- float gmmax = 255.0
- Used for scaling gradient magnitude into [0,255] for mode=1.
- gmmax is internally set to 1.0 if you set it to < 1.0.
- float gmmax = 255.0
- opt int = -1
- Specify which CPU optimization are used (default = auto).
- 0 - forth SSE2 + SSE routine.
- 1 - forth SSE4.1 + SSE2 + SSE routine.
- Others(64bit only) - use AVX2 + FMA3 + AVX routine.
- opt int = -1
GBlur
Gaussian blur filter. Just an alias for TCannyMod(mode=4).
- GBlur (clip, float "sigma", int "chroma", int "opt")
- clip =
- Input clip; only planar formats are supported.
- clip =
- float sigma = 0.5
- Standard deviation of Gaussian blur. 0 means no blurring before edge detection.
- (0 <= sigma <= 2.83, default = 0.5)
- float sigma = 0.5
- int chroma = 1
- Chroma processing:
- int chroma = 1
- 0 : do not process
- 1 : process
- 2 : copy from input clip.
- 3 : fill with 0x80(128), output is grayscale.
- opt int = -1
- Specify which CPU optimization are used (default = auto).
- 0 - forth SSE2 + SSE routine.
- 1 - forth SSE4.1 + SSE2 + SSE routine.
- Others(64bit only) - use AVX2 + FMA3 + AVX routine.
- opt int = -1
Examples
TCannyMod with default settings:
AviSource("blah.avi") TCannyMod (mode=0, sigma=1.5, t_h=8.0, t_l=1.0, sobel=false, chroma=0, gmmax=255.0, opt=-1)
GBlur with default settings:
AviSource("blah.avi") GBlur (sigma=0.5, chroma=1, opt=-1)
Changelog
Version Date Changes
v1.0.0 03/26/2016 - Almost rewrite. - VS2013 to VS2015. - Add AVX2(64bit only) / SSE4.1(both 32bit and 64bit) support. - Change direction values from 1,3,7,15 to 31,63,127,255. - Reduce waste processes.
v0.2.0 09/13/2015 - add option "gmmax" - update avisynth.h - VS2010 to VS2013 and code cosmetics
v0.1.1 08/21/2013 - fix crash when sigma is too large - add new argument 'sobel' - add new function 'GBlur'
v0.1.0 08/017/2013 - Initial release
Archived Downloads
Version | Download | Source code | Mirror |
---|---|---|---|
v1.0.0 | TCannyMod-1.0.0.zip | ||
v0.2.0 | tcannymod-0.2.0.zip | ||
v0.1.1 | tcannymod-0.1.1.zip |
External Links
- GitHub - Source code repository.
- Doom9 Forum - TCannyMod discussion.
Back to External Filters ←