650 likes | 923 Views
Warping. CSE 590 Computational Photography Tamara Berg. Picture Time!. Image Warping. http://www.jeffrey-martin.com. Slides from: Alexei Efros & Steve Seitz. Image Warping in Biology . D'Arcy Thompson http://www-groups.dcs.st-and.ac.uk/~history/Miscellaneous/darcy.html
E N D
Warping CSE 590 Computational Photography Tamara Berg
Image Warping http://www.jeffrey-martin.com Slides from: Alexei Efros & Steve Seitz
Image Warping in Biology • D'Arcy Thompson • http://www-groups.dcs.st-and.ac.uk/~history/Miscellaneous/darcy.html • http://en.wikipedia.org/wiki/D'Arcy_Thompson • Importance of shape and structure in evolution Slide by Durand and Freeman
f f f T T x x x f x Image Transformations • image filtering: change range of image • g(x) = T(f(x)) image warping: change domain of image g(x) = f(T(x))
T T Image Transformations • image filtering: change range of image • g(x) = T(f(x)) f g image warping: change domain of image g(x) = f(T(x)) f g
Parametric (global) warping • Examples of parametric warps: aspect rotation translation perspective cylindrical affine
T Parametric (global) warping • Transformation T is a coordinate-changing machine: • p’ = T(p) • What does it mean that T is global? • Is the same for any point p • can be described by just a few numbers (parameters) • Let’s represent T as a matrix: • p’ = Mp p = (x,y) p’ = (x’,y’)
Scaling • Scaling a coordinate means multiplying each of its components by a scalar • Uniform scaling means this scalar is the same for all components: 2
X 2,Y 0.5 Scaling • Non-uniform scaling: different scalars per component:
Scaling • Scaling operation: • Or, in matrix form: scaling matrix S What’s inverse of S?
(x’, y’) (x, y) 2-D Rotation x’ = x cos() - y sin() y’ = x sin() + y cos()
(x’, y’) (x, y) 2-D Rotation f
(x’, y’) (x, y) 2-D Rotation x = r cos (f) y = r sin (f) x’ = r cos (f + ) y’ = r sin (f + ) f
(x’, y’) (x, y) 2-D Rotation x = r cos (f) y = r sin (f) x’ = r cos (f + ) y’ = r sin (f + ) Trig Identity… x’ = r cos(f) cos() – r sin(f) sin() y’ = r sin(f) cos() + r cos(f) sin() f
(x’, y’) (x, y) 2-D Rotation x = r cos (f) y = r sin (f) x’ = r cos (f + ) y’ = r sin (f + ) Trig Identity… x’ = r cos(f) cos() – r sin(f) sin() y’ = r sin(f) cos() + r cos(f) sin() Substitute… x’ = x cos() - y sin() y’ = x sin() + y cos() f
(x’, y’) (x, y) 2-D Rotation • This is easy to capture in matrix form: • What is the inverse transformation? • Rotation by –q • For rotation matrices R f
2x2 Matrices • What types of transformations can be represented with a 2x2 matrix? 2D Identity?
2x2 Matrices • What types of transformations can be represented with a 2x2 matrix? 2D Identity?
2x2 Matrices • What types of transformations can be represented with a 2x2 matrix? 2D Identity? 2D Scale?
2x2 Matrices • What types of transformations can be represented with a 2x2 matrix? 2D Identity? 2D Scale?
2x2 Matrices • What types of transformations can be represented with a 2x2 matrix? 2D Rotate around (0,0)? 2D Shear?
2x2 Matrices • What types of transformations can be represented with a 2x2 matrix? 2D Mirror about Y axis?
2x2 Matrices • What types of transformations can be represented with a 2x2 matrix? 2D Mirror about Y axis?
2x2 Matrices • What types of transformations can be represented with a 2x2 matrix? 2D Mirror about Y axis? 2D Mirror over (0,0)?
2x2 Matrices • What types of transformations can be represented with a 2x2 matrix? 2D Mirror about Y axis? 2D Mirror over (0,0)?
2x2 Matrices • What types of transformations can be represented with a 2x2 matrix? 2D Translation?
2x2 Matrices • What types of transformations can be represented with a 2x2 matrix? 2D Translation? NO!
All 2D Linear Transformations • Linear transformations are combinations of … • Scale, • Rotation, • Shear, and • Mirror • Properties of linear transformations: • Origin maps to origin • Lines map to lines • Parallel lines remain parallel • Ratios are preserved • Closed under composition
Homogeneous Coordinates • Q: How can we represent translation as a 3x3 matrix?
Homogeneous Coordinates • Homogeneous coordinates • represent coordinates in 2 dimensions with a 3-vector
y 2 (2,1,1) or (4,2,2) or (6,3,3) 1 x 2 1 Homogeneous Coordinates 2D Points Homogeneous Coordinates • Append 1 to every 2D point: (x y) (x y 1) Homogeneous coordinates 2D Points • Divide by third coordinate (x y w) (x/w y/w) Special properties • Scale invariant: (x y w) = k * (x y w) • (x, y, 0) represents a point at infinity • (0, 0, 0) is not allowed Scale Invariance
Homogeneous Coordinates • Q: How can we represent translation as a 3x3 matrix?
Homogeneous Coordinates • Q: How can we represent translation as a 3x3 matrix? • A: Using the rightmost column:
Translation • Example of translation Homogeneous Coordinates tx = 2ty= 1
Translation • Example of translation Homogeneous Coordinates tx = 2ty= 1
Basic 2D Transformations • Basic 2D transformations as 3x3 matrices Translate Scale Rotate Shear
Matrix Composition • Transformations can be combined by matrix multiplication p’ = T(tx,ty) R(Q) S(sx,sy) p
Affine Transformations • Affine transformations are combinations of … • Linear transformations, and • Translations • Properties of affine transformations: • Origin does not necessarily map to origin • Lines map to lines • Parallel lines remain parallel • Ratios are preserved • Closed under composition • Models change of basis
Projective Transformations • Projective transformations … • Affine transformations, and • Projective warps • Properties of projective transformations: • Origin does not necessarily map to origin • Lines map to lines • Parallel lines do not necessarily remain parallel • Ratios are not preserved • Closed under composition • Models change of basis
Recovering Transformations • What if we know f and g and want to recover the transform T? • willing to let user provide correspondences • How many do we need? ? T(x,y) y y’ x x’ f(x,y) g(x’,y’)
Translation: # correspondences? • How many correspondences needed for translation? ? T(x,y) y y’ x x’
Translation: # correspondences? • How many correspondences needed for translation? • How many Degrees of Freedom? ? T(x,y) y y’ x x’
Translation: # correspondences? • How many correspondences needed for translation? • How many Degrees of Freedom? • What is the transformation matrix? ? T(x,y) y y’ x x’
Euclidian: # correspondences? • How many correspondences needed for translation+rotation? • How many DOF? ? T(x,y) y y’ x x’
Affine: # correspondences? • How many correspondences needed for affine? • How many DOF? ? T(x,y) y y’ x x’
Affine: # correspondences? • How many correspondences needed for affine? • How many DOF? ? T(x,y) y y’ x x’
Projective: # correspondences? • How many correspondences needed for projective? • How many DOF? ? T(x,y) y y’ x x’
Example: warping triangles B’ • Given two triangles: ABC and A’B’C’ in 2D (12 numbers) • Need to find transform T to transfer all pixels from one to the other. • How can we compute the transformation matrix: B ? T(x,y) C’ A C A’ Source Destination
Example: warping triangles B’ • Given two triangles: ABC and A’B’C’ in 2D (12 numbers) • Need to find transform T to transfer all pixels from one to the other. • How can we compute the transformation matrix: B ? T(x,y) C’ A C A’ Source Destination cp2transform in matlab! input – correspondences. output – transformation.