TCannyMod: Difference between revisions

From Avisynth wiki
Jump to navigationJump to search
m remove space
update documentation to v1.0.0
Line 2: Line 2:
{{Filter3
{{Filter3
| {{Author/Chikuzen}}
| {{Author/Chikuzen}}
| v0.2.0
| v1.0.0
|[http://github.com/chikuzen/TCannyMod/releases/download/0.2.0/tcannymod-0.2.0.zip tcannymod-0.2.0.zip]
|[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.<br>
<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=40784 Microsoft Visual C++ 2013 Redistributable Package (x86 / x64)]
* [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 1, 3, 7 and 15.
::::Gradient direction are normalized to 31, 63, 127 and 255.
:::::1 = horizontal
:::::31 = horizontal
:::::3 = 45' up
:::::63 = 45' up
:::::7 = vertical
:::::127 = vertical
:::::15 = 45' down
:::::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 16: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

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


*** vcredist_x86.exe required for TCannyMod-x86
*** vcredist_x64.exe required for TCannyMod-x64



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.


int  mode = 0
Sets the output format:
  • 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  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.


bool  sobel = false
If set to true, edge detection will use a Sobel operator instead of [1, 0, -1].


int  chroma = 0
Chroma processing:
  • 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.


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.




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.


float  sigma = 0.5
Standard deviation of Gaussian blur. 0 means no blurring before edge detection.
(0 <= sigma <= 2.83, default = 0.5)


int  chroma = 1
Chroma processing:
  • 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.



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





Back to External Filters