Warp

From Avisynth wiki
Jump to: navigation, search
Abstract
Author wonkey_monkey
Version v0.1
Download warp.zip
Category Rotation
License Open source
Discussion Doom9 Thread

Contents

Description

A collection of geometry correction filters using control points, specified either as a list of numbers, a string, or with a Hugin project file (see http://hugin.sourceforge.net/).

Requirements


Syntax and Parameters

warp

Description
===========
  warp takes a list of control points - pairs of image coordinates - and
  warps the input video using a thin plate spline (as used in morphing)
  such that the coordinates of the first point in a pair are moved to the
  position of the second point in the pair, with the rest of the image
  distorted as smoothly as possible.

  Control points are specified either directly as filter parameters, or as a
  whitespace- and/or comma-separated string, or by passing the filename of a
  Hugin project file (.pto).

Usage
=====

warp(
  (clip)
  (floats)   (optional)
  (string)   string (optional)
  (bool)     swap              = false
  (bool)     relative          = false
  (bool)     pto_resize        = true
  (int)      resample          = WARP_BICUBIC = 2
  (int)      quality           = 6
  (float)    scale             = 1
  (float)    scalex            = 1
  (float)    scaley            = 1
  (float)    scale1            = 1
  (float)    scalex1           = 1
  (float)    scaley1           = 1
  (float)    scale2            = 1
  (float)    scalex2           = 1
  (float)    scaley2           = 1
  (clip)     overlay           = NULL
  (int)      overlay_threshold = 0
  (int)      threads           = 0 (automatic)
  (int)      debug             = 0
  (int)      map               = [undefined]
)

Parameters
==========

float list:
  Control points may be specified as direct filter arguments, as source->target
  pairs of x,y point coordinates:

    warp(clip, 0,0, 10,12, 1920,1080, 1930,1070, 640,480, 641,479)

string:
  A whitespace- or comma-separated list of numbers, each pair representing a
  point, and each pair of points comprising one control point. At least
  three control points must be specified.

  Alternatively, the filename of a Hugin project (.pto). The control points
  common to the first and second images in the project will be used.

swap:
  If the control points have been specified in the wrong order (target->
  source instead of source->target), set swap to true to swap them.

relative:
  If set to true, the target control points are assumed to be relative to
  the source control points. Setting target control point coordinates to 0,0
  fixes a point at its original position (this still has an effect on the
  warp if other control points are non-zero). The following are equivalent:

    warp(clip, 0,0, 10,12, 1920,1080, 1930,1070, 640,480, 641,479)
    warp(clip, 0,0, 10,12, 1920,1080, 10,-10, 640,480, 1,-1, relative=true)

pto_resize:
  Resizes the output image to match the dimensions of the second image
  specified in the Hugin project file (if applicable).

resample:
  Specifies the resampling method used. warp registers the following
  functions which can be used in place of the integer value:

    WARP_DRAFT    = 0 : nearest neighbour
    WARP_BILINEAR = 1 : bilinear interpolation
    WARP_BICUBIC  = 2 : bicubic interpolation

  Resampling works best when the scale of the output image is similar to or
  greater than the input image.

quality:
  Specifies the subpixel accuracy of the resampling. The default is 6;
  accepted values are 4 (fastest) to 8 (slowest, best quality).

scale[x/y][1/2]:
  These nine parameters multiply the coordinate values of control points.
  All control points are scaled by [scale], all x-coordinates are scaled by
  [scalex], all y-coordinates are scaled by [scaley], all source coordinates
  are scaled by [scale1], all target coordinates are scaled by [scale2], and
  so on.

overlay:
  Specifies a clip to overlay with the output for comparison/debugging
  purposes. This overrides the debug option WARP_DEBUG_OVERLAY.

overlay_threshold:
  In combination with an [overlay] clip or the [debug] option
  WARP_DEBUG_OVERLAY, this parameter causes any differences between the
  output clip and the overlay which are greater than the value of the
  parameter to be highlighted.

threads:
  Specifies the number of threads to use. If unspecified, the number of
  logical processors is used.

map:
  Specifying this parameter outputs a map clip for use as an input to the
  warp_series filter. The value of this parameter determines the frame
  number associated with the map (see warp_series.txt). This parameter
  disables any debugging options.

debug:
  Specifies one or more debugging modes:

    WARP_DEBUG_GRID    = 1 : adds a grid to the input clip before remapping
    WARP_DEBUG_OVERLAY = 2 : overlays the input clip on the remapped output
    WARP_DEBUG_MARKERS = 4 : paints the locations of the control points
    WARP_DEBUG_ISOMAP  = 8 : displays a sort of isographic map of distortion

  To specify multiple debugging modes, add their values, for example:

      warp(..., debug = WARP_DEBUG_GRID + WARP_DEBUG_MARKERS)

  WARP_DEBUG_ISOMAP overrides the other options. Specifying [map] as a
  parameter disables all debugging options.


quad

Description
===========
  quad performs quadrilateral-to-quadrilateral transformations, using four or
  eight user-specified points.

Usage
=====

warp(
  (clip)
  (floats)   (optional)
  (string)   string (optional)
  (bool)     swap              = false
  (bool)     relative          = false
  (bool)     pto_resize        = true
  (int)      resample          = WARP_BICUBIC = 2
  (int)      quality           = 6
  (float)    scale             = 1
  (float)    scalex            = 1
  (float)    scaley            = 1
  (float)    scale1            = 1
  (float)    scalex1           = 1
  (float)    scaley1           = 1
  (float)    scale2            = 1
  (float)    scalex2           = 1
  (float)    scaley2           = 1
  (clip)     overlay           = NULL
  (int)      overlay_threshold = 0
  (int)      threads           = 0 (automatic)
  (bool)     interleaved       = false
  (int)      debug             = 0
  (int)      map               = [undefined]
)

Parameters
==========

float list:
  quad accepts either four or eight points (eight or sixteen numbers). If four
  points are specified they are interpreted as the target quadrilateral. If
  eight points are specified they are interpreted as the source quadrilateral
  followed by the target quadrilateral.

string:
  A whitespace- or comma-separated list of numbers, following the same
  specification as above - unless interleaved = true, in which case each pair
  represents a point, and each pair of points comprises one control point.
  Exactly four control points must be specified.

  Alternatively, the filename of a Hugin project (.pto). The control points
  common to the first and second images in the project will be used.

swap:
  If the control points have been specified in the wrong order (target->
  source instead of source->target), set swap to true to swap them.

relative:
  If set to true, the target control points are assumed to be relative to
  the source control points. Setting target control point coordinates to 0,0
  fixes a point at its original position. The following are equivalent:

    quad(clip, 0,0, 640,0, 640,480, 0,480, 10,12, 630,5, 630,480, 16,479)
    quad(clip, 0,0, 640,0, 640,480, 0,480, 10,12, -10,5, -10,0, 16,-1, relative=true)

pto_resize:
  Resizes the output image to match the dimensions of the second image
  specified in the Hugin project file (if applicable).

resample:
  Specifies the resampling method used. quad registers the following
  functions which can be used in place of the integer value:

    QUAD_DRAFT    = 0 : nearest neighbour
    QUAD_BILINEAR = 1 : bilinear interpolation
    QUAD_BICUBIC  = 2 : bicubic interpolation

  Resampling works best when the scale of the output image is similar to or
  greater than the input image.

quality:
  Specifies the subpixel accuracy of the resampling. The default is 6;
  accepted values are 4 (fastest) to 8 (slowest, best quality).

scale[x/y][1/2]:
  These nine parameters multiply the coordinate values of control points.
  All control points are scaled by [scale], all x-coordinates are scaled by
  [scalex], all y-coordinates are scaled by [scaley], all source coordinates
  are scaled by [scale1], all target coordinates are scaled by [scale2], and
  so on.

overlay:
  Specifies a clip to overlay with the output for comparison/debugging
  purposes. This overrides the debug option QUAD_DEBUG_OVERLAY.

overlay_threshold:
  In combination with an [overlay] clip or the [debug] option
  QUAD_DEBUG_OVERLAY, this parameter causes any differences between the
  output clip and the overlay which are greater than the value of the
  parameter to be highlighted.

threads:
  Specifies the number of threads to use. If unspecified, the number of
  logical processors is used.

interleaved:
  Setting this to true treats the control points as interleaved quadrilateral
  coordinates.

map:
  Specifying this parameter outputs a map clip for use as an input to the
  warp_series filter. The value of this parameter determines the frame
  number associated with the map (see warp_series.txt). This parameter
  disables any debugging options.

debug:
  Specifies one or more debugging modes:

    QUAD_DEBUG_GRID    = 1 : adds a grid to the input clip before remapping
    QUAD_DEBUG_OVERLAY = 2 : overlays the input clip on the remapped output
    QUAD_DEBUG_MARKERS = 4 : paints the locations of the control points
    QUAD_DEBUG_ISOMAP  = 8 : displays a sort of isographic map of distortion

  To specify multiple debugging modes, add their values, for example:

      quad(..., debug = QUAD_DEBUG_GRID + QUAD_DEBUG_MARKERS)

  QUAD_DEBUG_ISOMAP overrides the other options. Specifying [map] as a
  parameter disables all debugging options.


warp_rekey

Description
===========
  warp_rekey changes the frame number associated with a map, returning a new
  map clip. If a map needs to be used twice during an animation, warp_rekey
  should be used to avoid creating a brand new map (since this costs time and
  memory).

Usage
=====

warp(
  (clip),
  (int)
)

Parameters
==========

[clip]:
  Must be a map clip returned by warp(..., map = x)

[int]:
  New frame number to be associated with the returned clip.


warp_series

Description
===========
  warp_series is essentially a filter for animating warps. It blends between
  the specified maps as the video progresses.

Usage
=====

warp(
  (clip)
  (clips)
  (floats)   (optional)
  (string)   string (optional)
  (int)      resample          = WARP_BICUBIC = 2
  (int)      quality           = 6
  (int)      transition        = WARP_LINEAR = 0
  (clip)     overlay           = NULL
  (int)      overlay_threshold = 0
  (int)      threads           = 0 (automatic)
  (int)      debug             = 0
)

Parameters
==========

clip list:
  A set of map clips, as return by warp(..., map = x), where x is the frame
  number associated with the map.

float list:
  A list which overrides the frame numbers associated with the map clips.
  Must be empty, or must have the same count as the map clips.

resample:
  Specifies the resampling method used. quad registers the following
  functions which can be used in place of the integer value:

    WARP_DRAFT    = 0 : nearest neighbour
    WARP_BILINEAR = 1 : bilinear interpolation
    WARP_BICUBIC  = 2 : bicubic interpolation

  Resampling works best when the scale of the output image is similar to or
  greater than the input image.

quality:
  Specifies the subpixel accuracy of the resampling. The default is 6;
  accepted values are 4 (fastest) to 8 (slowest, best quality).

transition:
  Specifies the transition between maps. WARP_LINEAR uses a linear transition
  which may cause visible jumps at map frames, WARP_SINE uses a more gradual
  acceleration between maps.

overlay:
  Specifies a clip to overlay with the output for comparison/debugging
  purposes. This overrides the debug option WARP_DEBUG_OVERLAY.

overlay_threshold:
  In combination with an [overlay] clip or the [debug] option
  WARP_DEBUG_OVERLAY, this parameter causes any differences between the
  output clip and the overlay which are greater than the value of the
  parameter to be highlighted.

threads:
  Specifies the number of threads to use. If unspecified, the number of
  logical processors is used.

debug:
  Specifies one or more debugging modes:

    WARP_DEBUG_GRID    = 1 : adds a grid to the input clip before remapping
    WARP_DEBUG_OVERLAY = 2 : overlays the input clip on the remapped output
    WARP_DEBUG_MARKERS = 4 : paints the locations of the control points
    WARP_DEBUG_ISOMAP  = 8 : displays a sort of isographic map of distortion

  To specify multiple debugging modes, add their values, for example:

      warp_series(..., debug = QUAD_DEBUG_GRID + QUAD_DEBUG_MARKERS)

  WARP_DEBUG_ISOMAP overrides the other options. Specifying [map] as a
  parameter disables all debugging options.


warp_grid

Description
===========
  warp_grid is a helper filter which draws a grid on a video clip.

Usage
=====

warp_series(
  (clip)
  (int)      size              = 64
  (float)    darken            = 0.9375
  (int)      color             = 255
)


Examples

TODO

Changelog

Version      Date            Changes
v0.1 2019/01/14 - initial release


Archived Downloads

Version Download Mirror
v0.1 warp.zip warp.zip


External Links




Back to External Filters

Personal tools