Reformer

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
(Requirements)
(Syntax and Parameters)
Line 20: Line 20:
  
 
== [[Script variables|Syntax and Parameters]] ==
 
== [[Script variables|Syntax and Parameters]] ==
:{{Template:FuncDef|<!-- function name -->q2r or r2q(''clip'', ''<!-- par 1 type -->clip'' "<!-- par 1 name -->", ''<!-- par 2 type -->string'' "<!-- par 2 name -->resize", ''<!-- par 3 type -->float'' "<!-- par 3 name -->ltopx ",''<!-- par 4 type -->float'' <!-- par 4 name -->ltopy",''<!-- par 5 type -->float'' <!-- par 5 name -->lbotx",''<!-- par 6 type -->float'' <!-- par 6 name -->lboty",''<!-- par 7 type -->float'' <!-- par 7 name -->rtopx",''<!-- par 8 type -->float'' <!-- par 8 name -->rtopy",''<!-- par 9 type -->float'' <!-- par 9 name -->rbotx"''<!-- par 10 type -->float'' <!-- par 10 name -->rboty",''<!-- par 11 type -->float'' <!-- par 11 name -->leftx",''<!-- par 12 type -->float'' <!-- par 12 name -->rightx",''<!-- par 13 type -->float'' <!-- par 13 name -->ytop",''<!-- par 14 type -->float'' <!-- par 14 name -->ybot")}}
+
:{{Template:FuncDef| Reform (clip, clip, string "resize", float "ltopx", float "ltopy", float "lbotx", float "lboty", float "rtopx", float "rtopy", float "rbotx", float "rboty", float "leftx", float "rightx", float "ytop", float "ybot", bool "qr", bool "norm")}}
 
<br>
 
<br>
 
::{{Par2| |clip| }}
 
::{{Par2| |clip| }}
:::Input clip.
+
::: Clip to be skewed into quadrilateral or deskewed into rectangle
 
<br>
 
<br>
 
::{{Par2| |clip| }}
 
::{{Par2| |clip| }}
:::background clip.     
+
::: Clip to be used as background
 
<br>
 
<br>
::{{Par2|<!-- par 2 type -->string|<!-- par 2 name -->resize|<!-- par 1 default value -->"lanczos"}}
+
::{{Par2|resize|string|"cubic"}}
:::<!-- par 1 description -->type of interpolation to be used for resizing. lanczos, bicubic, bilinear, nearest point .
+
::: Radius of grid to use
 
+
:::* "lanczos"
 +
:::* "cubic"
 +
:::* "line"
 +
:::* "point"
 
<br>
 
<br>
::{{Par2|<!-- par 3 type -->float|<!-- par 3 name -->ltopx|<!-- par 3 default value -->0}}
+
::{{Par2|ltopx|float|0}}
:::<!-- par 3 description -->quadrilateral left top x.
+
::: Q left top x coordinate
 
<br>
 
<br>
::{{Par2|<!-- par 4 type -->float|<!-- par 4 name -->ltopy|<!-- par 4 default value -->0}}
+
::{{Par2|ltopy|float|0}}
:::<!-- par 4 description -->quadrilateral left top y .
+
::: Q left top y coordinate
 
<br>
 
<br>
::{{Par2|<!-- par 5 type -->float|<!-- par 5 name -->lbotx|<!-- par 5 default value -->0}}
+
::{{Par2|lbotx|float|0}}
:::<!-- par 5 description -->quadrilateral left bottom x .
+
::: Q left bottom x coordinate
 
<br>
 
<br>
::{{Par2|<!-- par 6 type -->float|<!-- par 6 name -->lboty|<!-- par 6 default value -->height - 1}}
+
::{{Par2|lboty|float|frame height - 1}}
:::<!-- par 6 description -->quadrilateral left bottom y .
+
::: Q left bottom y coordinate
 
<br>
 
<br>
::{{Par2|<!-- par 7 type -->float|<!-- par 7 name -->rtopx|<!-- par 7 default value -->frame width -1}}
+
::{{Par2|rtopx|float|frame width - 1}}
:::<!-- par 7 description -->quadrilateral right top x .
+
::: Q right top x coordinate
 
+
 
<br>
 
<br>
::{{Par2|<!-- par 8 type -->float|<!-- par 8 name -->rtopy|<!-- par 8 default value -->0}}
+
::{{Par2|rtopy|float|0}}
:::<!-- par 8 description -->quadrilateral right top y .
+
::: Q right top y coordinate
 
<br>
 
<br>
::{{Par2|<!-- par 9 type -->float|<!-- par 9 name -->rbotx|<!-- par 9 default value -->width- 1}}
+
::{{Par2|rbotx|float|frame width - 1}}
:::<!-- par 9 description -->quadrilateral right bottom x .
+
::: Q right bottom x coordinate
 
<br>
 
<br>
::{{Par2|<!-- par 10 type -->float|<!-- par 10 name -->rboty|<!-- par 10 default value -->height- 1}}
+
::{{Par2|rboty|float|frame height - 1}}
:::<!-- par 10 description -->quadrilateral right bottom y .
+
::: Q right bottom y coordinate
 
<br>
 
<br>
::{{Par2|<!-- par 11 type -->float|<!-- par 11 name -->leftx|<!-- par 11 default value -->0}}
+
::{{Par2|leftx|float|0}}
:::<!-- par 11 description -->Rectangle left x
+
::: R left x coordinate
 
<br>
 
<br>
::{{Par2|<!-- par 12 type -->float|<!-- par 12 name -->rightx|<!-- par 12 default value -->width - 1}}
+
::{{Par2|rightx|float|frame width - 1}}
:::<!-- par 12 description -->Rectangle right x
+
::: R right x coordinate
 
<br>
 
<br>
::{{Par2|<!-- par 13 type -->float|<!-- par 13 name -->ytop|<!-- par 13 default value -->0}}
+
::{{Par2|ytop|float|0}}
:::<!-- par 13 description -->Rectangle top y
+
::: R top y coordinate
::{{Par2|<!-- par 14 type -->float|<!-- par 14 name -->rbotx|<!-- par 14 default value -->width- 1}}
+
:::<!-- par 14 description -->Rectangle bottom y .
+
 
<br>
 
<br>
 +
::{{Par2|ybot|float|frame height - 1}}
 +
::: R bottom y coordinate
 +
<br>
 +
::{{Par2|qr|bool|true}}
 +
::: R bottom y coordinate
 +
:::* true = q to r
 +
:::* false = r to q
 +
<br>
 +
::{{Par2|norm|bool|false}}
 +
::: Whether normalised coordinates are specified?
 +
:::* true = normalized
 +
:::* false = real
 
<br>
 
<br>
 
  
 
== Examples ==
 
== Examples ==

Revision as of 21:07, 18 June 2018


Abstract
Author V.C.Mohan
Version 9 Apr 2018
Download movePlus.7z
Category External filters
License GPLv2
Discussion Reformer plugin


Contents

Description

Reform uses matrix algebra for transformations. Reform has two modes viz: rectangle to quadrilateral and quadrilateral to rectangle. Lanczos or cubic or linear or nearest point interpolation methods can be opted. Full Description


Requirements

  • AviSynth+ r2347 or later

Syntax and Parameters

Reform (clip, clip, string "resize", float "ltopx", float "ltopy", float "lbotx", float "lboty", float "rtopx", float "rtopy", float "rbotx", float "rboty", float "leftx", float "rightx", float "ytop", float "ybot", bool "qr", bool "norm")


clip   =
Clip to be skewed into quadrilateral or deskewed into rectangle


clip   =
Clip to be used as background


string  resize = "cubic"
Radius of grid to use
  • "lanczos"
  • "cubic"
  • "line"
  • "point"


float  ltopx = 0
Q left top x coordinate


float  ltopy = 0
Q left top y coordinate


float  lbotx = 0
Q left bottom x coordinate


float  lboty = frame height - 1
Q left bottom y coordinate


float  rtopx = frame width - 1
Q right top x coordinate


float  rtopy = 0
Q right top y coordinate


float  rbotx = frame width - 1
Q right bottom x coordinate


float  rboty = frame height - 1
Q right bottom y coordinate


float  leftx = 0
R left x coordinate


float  rightx = frame width - 1
R right x coordinate


float  ytop = 0
R top y coordinate


float  ybot = frame height - 1
R bottom y coordinate


bool  qr = true
R bottom y coordinate
  • true = q to r
  • false = r to q


bool  norm = false
Whether normalised coordinates are specified?
  • true = normalized
  • false = real


Examples

## This is some example code to blur  an image.
imagereader("C:\..........jpg", end = 10)
a = avisource("C;\..........avi").converttoYUY2()
converttoyv16()
# Rectangle to quadrilateral
r2q(last,last,leftx = 100,rightx = 400, ytop = 200, ybot = 480,ltopx=200,ltopy=150, rbotx = 500, rboty = 400, resize= "lanczos")
# quad to rectangle excercise
c= last
  1. bg = blankclip(last,color = 0)
ScriptClip("""

h = height(bg)-1 w = width(bg)-1

   t = 0.061 *(current_frame)
   t2 = 0.127 *( current_frame)
   a = 0.501 + 0.5 * sin(t/pi)
   t1x = (-0.2*cos(t2)) * w
   t1y = (0.5-0.5*cos(t2)) * h
   t2x = (1.0+0.2*cos(t2)) * w
   t2y = (0.5-0.5*cos(t2)) * h
   t3x = (1.0+0.2*cos(t2)) * w
   t3y = (0.5+0.5*cos(t2)) * h
   t4x = (-0.2*cos(t2)) * w
   t4y = (0.5+0.5*cos(t2)) * h
   c1x = (0.5+a*cos(t)) * w
   c1y = (0.5+a*sin(t)) * h
   c2x = (0.5-a*sin(t)) * w
   c2y = (0.5+a*cos(t)) * h
   c3x = (0.5-a*cos(t)) * w
   c3y = (0.5-a*sin(t)) * h
   c4x = (0.5+a*sin(t)) * w
   c4y = (0.5-a*cos(t)) * h
  1. r2q(c, c,leftx=t1x,rightx=t2x,ytop=t1y,ybot=t3y,ltopx=c1x,ltopy=c1y, rtopx=c2x,rtopy=c2y, rbotx=c3x,rboty=c3y,lbotx=c4x,lboty=c4y, resize = "line")

q2r( bg,leftx=t1x,rightx=t2x,ytop=t1y,ybot=t3y,ltopx=c1x,ltopy=c1y, rtopx=c2x,rtopy=c2y, rbotx=c3x,rboty=c3y,lbotx=c4x,lboty=c4y, resize = "point" )


Back to External Filters

Personal tools