MaskTools2/Mt edge

From Avisynth wiki
Revision as of 17:46, 4 August 2014 by Reel.Deal (Talk | contribs)

Jump to: navigation, search



Back to MaskTools2



Description

This filter creates an edge mask. The edge-finding algorithm uses a (3x3) convolution kernel, and the result of the convolution is then thresholded with thY1 and thY2 (luma) and thC1 and thC2 (chroma).
The thresholding happens like this (r is the result of the convolution):
  • r <= th1 gives 0.
  • th1 < r <= th2 gives r.
  • th2 < r gives 255.


Syntax and Parameters

mt_edge (clip, string "mode", int "thY1", int "thY2", int "thC1", int "thC2", int "Y", int "U", int "V", string "chroma", int "offX", int "offY" int "w", int "h")


clip   =
Input clip


string  mode = "sobel"
mode chooses the 3x3 convolution kernel used for the mask computing.
There are 7 predefined kernel, "sobel", "roberts", "laplace", "hprewitt", "prewitt", "cartoon" and "min/max".
Additionally, you can also enter also a custom 3x3 kernel. The normalization factor of the kernel is automatically
computed and ceiled to the closest power of 2, to allow faster processing. You can specify your own normalization
factor by adding it to the list of coefficients ( "1 1 1 1 -8 1 1 1 1 8" for example ).


  • "sobel" uses the kernel "0 -1 0 -1 0 1 0 1 0"
0 -1 0
-1 0 1
0 1 0
  • "roberts": "0 0 0 0 2 -1 0 -1 0"
0 0 0
0 2 -1
0 -1 0
  • "laplace": "1 1 1 1 -8 1 1 1 1"
1 1 1
1 -8 1
1 1 1
  • "hprewitt" is equivalent to:
mt_logic(mt_edge("1 2 1 0 0 0 -1 -2 -1 1"), mt_edge("1 0 -1 2 0 -2 1 0 -1 1"), mode="max")
  • "prewitt" is a more robust kernel and is equivalent to:
mt_logic(mt_logic(mt_edge("1 1 0 1 0 -1 0 -1 -1 1"),mt_edge("1 1 1 0 0 0 -1 -1 -1 1"),mode="max"),mt_logic(mt_edge("1 0 -1 1 0 -1 1 0 -1 1"),mt_edge("0 -1 -1 1 0 -1 1 1 0 1"),mode="max"),mode="max")
  • "cartoon" behaves like "roberts", but takes only negative edges into account.
  • "min/max" computes the local contrast (local max - local min).


int  thY1 = 10
int  thY2 = 10
int  thC1 = 10
int  thC2 = 10
thY1 and thY2 are the low and high threshold for luma. thC1 and thC2 are the same but for chroma.
Under thX1, the pixel is set to zero, over thX2, to 255, and in between, left untouched.


int  Y = 3
int  U = 1
int  V = 1
These three values describe the actual processing mode that is to be used on each plane / channel. Here is how the modes are coded :
  • x = -255...0 : all the pixels of the plane will be set to -x.
  • x = 1 : the plane will not be processed. That means the content of the plane after the filter is pure garbage.
  • x = 2 : the plane of the first input clip will be copied.
  • x = 3 : the plane will be processed with the processing the filter is designed to do.


string  chroma = ""
When defined, the value contained in this string will overwrite the U & V processing modes.
This is a nice addition proposed by mg262 that makes the filter more user friendly. Allowed values for chroma are:
  • "process" : set u = v = 3.
  • "copy" or "copy first" : set u = v = 2.
  • "xxx", where xxx is a number : set u = v = -xxx.


int  offX = 0
int  offY = 0
offx and offy are the top left coordinates of the box where the actual processing shall occur. Everything outside that box will be garbage.


int  w = -1
int  h = -1
w and h are the width and height of the processed box. -1 means that the box extends to the lower right corner of the video.
This also means that default settings are meant to process the whole picture.




Back to MaskTools2


Personal tools