PPT on the topic of programming languagedishasindhava
transformations2 and fitting on image processing.pptx
1. Transformation
s and Fitting
EECS 442 – David Fouhey
Winter 2023, University of Michigan
https://web.eecs.umich.edu/~fouhey/teaching/EECS442_W23/
3. So Far
1. How do we find distinctive / easy to locate
features? (Harris/Laplacian of Gaussian)
2. How do we describe the regions around
them? (histogram of gradients)
3. How do we match features? (L2 distance)
4. How do we handle outliers? (RANSAC)
12. Image Transformations
T
T
Image filtering: change range of image
𝑔(𝑥 , 𝑦)=𝑇 ( 𝑓 (𝑥, 𝑦 ))
𝑔 ( 𝑥 , 𝑦 )= 𝑓 ¿
Image warping: change domain of image
f g
f g
Slide credit: A. Efros
14. Parametric (Global) Warping
T
p’ = (x’,y’)
T is a coordinate changing machine
p = (x,y)
Note: T is the same for all points, has relatively few
parameters, and does not depend on image content
𝒑′
=𝑇 (𝒑)
Slide credit: A. Efros
15. Parametric (Global) Warping
T
p’ = (x’,y’)
p = (x,y)
Today we’ll deal with linear warps
𝒑′
≡𝑻𝒑
T: matrix; p, p’: 2D points. Start with normal points
and =, then do homogeneous cords and ≡
Slide credit: A. Efros
16. Scaling
2
Scaling multiplies each component (x,y) by a scalar.
Uniform scaling is the same for all components.
Note the corner goes from (1,1) to (2,2)
Slide credit: A. Efros
18. Scaling
What does T look like?
𝑥′
=𝑎𝑥
𝑦 ′
=𝑏𝑦
Let’s convert to a matrix:
[𝑥 ′
𝑦 ′ ]=
[𝑎 0
0 𝑏][𝑥
𝑦 ]
scaling matrix S
What’s the inverse of S?
Slide credit: A. Efros
19. 2D Rotation
Rotation Matrix
But wait! Aren’t sin/cos non-linear?
x’ is a linear combination/function of x, y
x’ is not a linear function of θ
What’s the inverse of Rθ? 𝑰 =𝑹𝜽
𝑇
𝑹𝜽
[𝑥 ′
𝑦 ′ ]=
[c os (𝜃) − sin (𝜃 )
sin ( 𝜃) cos(𝜃 ) ][𝑥
𝑦 ]
Slide credit: A. Efros
20. Things You Can Do With 2x2
Identity / No Transformation
Shear
[𝑥 ′
𝑦 ′ ]=
[ 1 𝑠 h𝑥
𝑠h𝑦 1 ][𝑥
𝑦 ]
[𝑥 ′
𝑦 ′ ]=
[1 0
0 1 ][𝑥
𝑦 ]
Slide credit: A. Efros
21. Things You Can Do With 2x2
2D Mirror About Y-Axis
[𝑥 ′
𝑦 ′ ]=
[−1 0
0 1 ][𝑥
𝑦 ]
Before
After
2D Mirror About X,Y
[𝑥 ′
𝑦 ′ ]=
[−1 0
0 −1][𝑥
𝑦 ]
Before
After
Slide credit: A. Efros
22. What’s Preserved?
Projections of parallel 3D
lines are not necessarily
parallel, so not parallelism
3D lines project to 2D lines
so lines are preserved
Distant objects are smaller
so size is not preserved
23. What’s Preserved With a 2x2
[𝑥 ′
𝑦 ′ ]=
[𝑎 𝑏
𝑐 𝑑][𝑥
𝑦 ]=𝑇
[𝑥
𝑦]
After multiplication by T (irrespective of T)
• Origin is origin: 0 = T0
• Lines are lines
• Parallel lines are parallel
24. Things You Can’t Do With 2x2
What about translation?
x’ = x + tx, y’ = y+ty
+(2,2)
How do we make it linear?
25. Homogeneous Coordinates Again
What about translation?
x’ = x + tx, y’ = y+ty
+(2,2)
[
𝑥+𝑡𝑥
𝑦 +𝑡 𝑦
1 ]≡
[
𝑥′
𝑦
′
1 ]≡
[
1 0 𝑡𝑥
0 1 𝑡𝑦
0 0 1 ][
𝑥
𝑦
1 ]
Slide credit: A. Efros
26. Representing 2D Transformations
How do we represent a 2D transformation?
Let’s pick scaling
[
𝑥′
𝑦
′
1 ]≡
[
𝑠𝑥 0 𝑎
0 𝑠𝑦 𝑏
𝑑 𝑒 𝑓 ][
𝑥
𝑦
1 ]
a b d e f
0 0 0 0 1
What’s
27. Affine Transformations
Affine: linear transformation plus translation
In general (without homogeneous coordinates)
𝒙 ′= 𝑨𝒙+𝒃
Will the last coordinate w’ always be 1?
[
𝑥
′
𝑦
′
𝑤 ′]≡
[
𝑎 𝑏 𝑐
𝑑 𝑒 𝑓
0 0 1 ][
𝑥
𝑦
1 ]
t
28. Matrix Composition
[
𝑥′
𝑦
′
𝑤 ′]≡
[
1 0 𝑡𝑥
0 1 𝑡 𝑦
0 0 1 ][
cos (𝜃 ) −sin ( 𝜃) 0
sin (𝜃) cos ( 𝜃) 0
0 0 1][
𝑠𝑥 0 0
0 𝑠 𝑦 0
0 0 1 ][
𝑥
𝑦
𝑤]
𝑇 (𝑡𝑥 ,𝑡𝑦 ) 𝑅( 𝜃) 𝑆(𝑠𝑥 ,𝑠𝑦 )
We can combine transformations via matrix
multiplication.
Does order matter?
Slide credit: A. Efros
29. What’s Preserved With Affine
After multiplication by T (irrespective of T)
• Origin is origin: 0 = T0
• Lines are lines
• Parallel lines are parallel
[
𝑥′
𝑦
′
1 ]≡
[
𝑎 𝑏 𝑐
𝑑 𝑒 𝑓
0 0 1 ][
𝑥
𝑦
1 ]≡ 𝑻
[
𝑥
𝑦
1 ]
31. Perspective Transformations
Set bottom row to not [0,0,1]
Called a perspective/projective transformation or a
homography
[
𝑥′
𝑦
′
𝑤 ′]≡
[
𝑎 𝑏 𝑐
𝑑 𝑒 𝑓
𝑔 h 𝑖 ][
𝑥
𝑦
𝑤]
Can compute [x’,y’,w’] via matrix multiplication.
How do we get a 2D point?
(x’/w’, y’/w’)
32. Perspective Transformations
Set bottom row to not [0,0,1]
Called a perspective/projective transformation or a
homography
[
𝑥′
𝑦
′
𝑤 ′]≡
[
𝑎 𝑏 𝑐
𝑑 𝑒 𝑓
𝑔 h 𝑖 ][
𝑥
𝑦
𝑤]
How many degrees of freedom?
33. How Many Degrees of Freedom?
Can always scale coordinate by non-zero value
[
𝑥
′
𝑦
′
𝑤 ′]≡
[
𝑎 𝑏 𝑐
𝑑 𝑒 𝑓
𝑔 h 𝑖 ][
𝑥
𝑦
𝑤]
Perspective
[
𝑥
′
𝑦
′
𝑤 ′]≡
1
𝑖 [
𝑥′
𝑦
′
𝑤′ ]
Homography can always be re-scaled by λ≠0
Typically pick it so last entry is 1.
≡
1
𝑖 [
𝑎 𝑏 𝑐
𝑑 𝑒 𝑓
𝑔 h 𝑖 ][
𝑥
𝑦
𝑤 ]
34. What’s Preserved With Perspective
After multiplication by T (irrespective of T)
• Origin is origin: 0 = T0
• Lines are lines
• Parallel lines are parallel
• Ratios between distances
[
𝑥′
𝑦
′
1 ]≡
[
𝑎 𝑏 𝑐
𝑑 𝑒 𝑓
𝑔 h 𝑖 ][
𝑥
𝑦
1 ]≡ 𝑻
[
𝑥
𝑦
1 ]
48. 9
k points → 2k
𝑨𝒉=𝟎
What do we use from last time?
h
∗
=arg min
‖h‖=1
‖ h
𝐴 ‖
2 Eigenvector of AT
A with
smallest eigenvalue
𝒑 𝒊=
[
𝑥𝑖
𝑦𝑖
1 ]
Fitting Transformation
[
𝟎
𝑇
− 𝒑1
𝑇
𝑦1
′
𝒑1
𝑇
𝒑1
𝑇
𝟎
𝑇
− 𝑥1
′
𝒑1
𝑇
⋮
𝟎𝑇
− 𝒑𝑛
𝑇
𝑦𝑛
′
𝒑𝑛
𝑇
𝒑𝑛
𝑇
𝟎
𝑇
− 𝑥𝑛
′
𝒑𝑛
𝑇
][
𝒉𝟏
𝒉𝟐
𝒉𝟑
]=𝟎
Row 1 of H
49. In Practice
[
𝟎
𝑇
− 𝒑1
𝑇
𝑦1
′
𝒑1
𝑇
𝒑1
𝑇
𝟎
𝑇
− 𝑥1
′
𝒑1
𝑇
⋮
𝟎𝑇
− 𝒑𝑛
𝑇
𝑦𝑛
′
𝒑𝑛
𝑇
𝒑𝑛
𝑇
𝟎
𝑇
− 𝑥𝑛
′
𝒑𝑛
𝑇
][
𝒉𝟏
𝒉𝟐
𝒉𝟑
]=𝟎
9
k points → 2k
𝑨𝒉=𝟎
Should consist of lots of {x,y,x’,y’,0, and 1}.
If it fails, assume you mistyped.
Re-type differently and compare all entries.
Debug first with transformations you know.
𝒑 𝒊=
[
𝑥𝑖
𝑦𝑖
1 ]
Row 1 of H
50. Small Nagging Detail
||Ah||2
doesn’t measure model fit (it’s an algebraic error
that’s mainly just convenient to minimize)
Also, there’s a least-squares setup that’s wrong but
often works.
∑
𝑖=1
𝑘
‖[𝑥𝑖
′
, 𝑦𝑖
′
]−𝑇 ([𝑥𝑖 , 𝑦𝑖])‖
2
+‖[𝑥𝑖 , 𝑦𝑖]−𝑇
−1
([𝑥𝑖
′
, 𝑦𝑖
′
])‖
2
Really want geometric error:
51. Small Nagging Detail
In RANSAC, we always take just enough points to
fit. Why might this not make a big difference when
fitting a model with RANSAC?
Solution: initialize with algebraic (min ||Ah||), optimize
with geometric using standard non-linear optimizer
52. Image Warping
x
y
x
y
f(x,y) g(x,y)
T(x,y)
Given a coordinate transform (x’,y’) = T(x,y) and a
source image f(x,y), how do we compute a
transformed image g(x’,y’) = f(T(x,y))?
Slide Credit: A. Efros
54. Forward Warping
x
y
f(x,y)
x-1 x x+1
y-1
y
y+1
x'-1 x' x'+1
y'-1
y'
y'+1
x'
y’
g(x’,y’)
If you don’t hit an exact pixel, give the value to each of
the neighboring pixels (“splatting”).
T(x,y)
57. Inverse Warping
x'-1 x' x'+1
y'-1
y'
y'+1
x'
y’
g(x’,y’)
x
y
f(x,y)
x-1 x x+1
y-1
y
y+1
If you don’t hit an exact pixel, figure out how to take it
from the neighbors.
T-1
(x,y)
60. Mosaicing
Warped
Input 1
I1
α
Warped
Input 2
I2
αI1 +
(1-α)I2
Slide Credit: A. Efros
Can also warp an image containing 1s. Pixels
that don’t have a corresponding pixel in the
image are set to a chosen value (often 0)
61. Putting it Together
How do you make a panorama?
Step 1: Find “features” to match
Step 2: Describe Features
Step 3: Match by Nearest Neighbor
Step 4: Fit H via RANSAC
Step 5: Blend Images
62. Putting It Together 1
• (Multi-scale) Harris; or
• Laplacian of Gaussian
Find corners/blobs
63. Putting It Together 2
Describe Regions Near Features
Build histogram of
gradient
orientations (SIFT)
(But in practice use
opencv)
𝑥𝑞 ∈ 𝑅128
64. Putting It Together 3
Match Features Based On Region
𝑥1 ∈ 𝑅128
𝑥2 ∈ 𝑅128
𝑥𝑞 ∈ 𝑅128
𝑥𝑞
Sort by distance to: ‖𝑥𝑞 − 𝑥1‖<‖𝑥𝑞 − 𝑥2
‖<‖𝑥𝑞 − 𝑥3‖
Accept match if: ‖𝑥𝑞 − 𝑥1‖/‖𝑥𝑞 − 𝑥2‖
Nearest neighbor is far closer than 2nd
nearest neighbor
65. Putting It Together 4
Fit transformation H via RANSAC
for trial in range(Ntrials):
Pick sample
Fit model
Check if more inliers
Re-fit model with most inliers
arg min
‖𝒉‖=1
‖𝑨𝒉‖
2
66. Putting It Together 5
Warp images together
Resample images with inverse
warping and blend
(but in practice, just call opencv for
inverse warping)
69. A pencil of rays contains all views
real
camera
synthetic
camera
Can generate any synthetic camera view
as long as it has the same center of projection!
Slide Credit: A. Efros
71. Automatically rectified floor
St. Lucy Altarpiece, D. Veneziano
Analyzing Patterns
What is the (complicated)
shape of the floor pattern?
Slide from A. Criminisi
72. From Martin Kemp, The Science of Art
(manual reconstruction)
Automatic
rectification
Analyzing Patterns
Slide from A. Criminisi
73. Homography Derivation
• This has gotten cut in favor of showing more of
the setup.
• The key to the set-up is to try to move towards
a setup where you can pull [h1,h2,h3] out, or
where each row is a linear equation in
[h1,h2,h3]
75. Fitting Transformation
[
𝑥𝑖
′
𝑦𝑖
′
𝑤𝑖
′ ]×
[
𝒉𝟏
𝑻
𝒑𝒊
𝒉𝟐
𝑻
𝒑𝒊
𝒉𝟑
𝑻
𝒑𝒊
]=𝟎
Want:
[
𝑦𝑖
′
𝒉𝟑
𝑻
𝒑𝒊 −𝑤𝑖
′
𝒉𝟐
𝑻
𝒑𝒊
𝑤𝑖
′
𝒉𝟏
𝑻
𝒑𝒊 − 𝑥𝑖
′
𝒉𝟑
𝑻
𝒑𝒊
𝑥𝑖
′
𝒉𝟐
𝑻
𝒑𝒊 − 𝑦𝑖
′
𝒉𝟏
𝑻
𝒑𝒊
]=𝟎
Cross-
product
[
𝒉𝟏
𝑻
𝟎−𝑤𝑖
′
𝒉𝟐
𝑻
𝒑𝒊+ 𝑦𝑖
′
𝒉𝟑
𝑻
𝒑𝒊
𝑤𝑖
′
𝒉𝟏
𝑻
𝒑𝒊 +𝒉𝟐
𝑻
𝟎− 𝑥𝑖
′
𝒉𝟑
𝑻
𝒑𝒊
− 𝑦𝑖
′
𝒉𝟏
𝑻
𝒑𝒊 +𝑥𝑖
′
𝒉𝟐
𝑻
𝒑𝒊 +𝒉𝟑
𝑻
𝟎]=𝟎
Re-arrange
and put 0s in
Note: calculate
this explicitly. It
looks ugly, but do
it by doing [a,b,c]
x [a’,b’,c’] then
re-substituting.
You want to be
able to right-
multiply by
[h1,h2,h3]
76. Fitting Transformation
[
𝒉𝟏
𝑻
𝟎−𝑤𝑖
′
𝒉𝟐
𝑻
𝒑𝒊+ 𝑦𝑖
′
𝒉𝟑
𝑻
𝒑𝒊
𝑤𝑖
′
𝒉𝟏
𝑻
𝒑𝒊 +𝒉𝟐
𝑻
𝟎− 𝑥𝑖
′
𝒉𝟑
𝑻
𝒑𝒊
− 𝑦𝑖
′
𝒉𝟏
𝑻
𝒑𝒊 +𝑥𝑖
′
𝒉𝟐
𝑻
𝒑𝒊 +𝒉𝟑
𝑻
𝟎]=𝟎
Equation
Pull out h
[
𝟎
𝑻
−𝑤
′
𝑖 𝒑𝒊
𝑻
𝑦 ′𝑖 𝒑𝒊
𝑻
𝑤𝑖
′
𝒑𝒊
𝑻
𝟎
𝑻
− 𝑥𝑖
′
𝒑𝒊
𝑻
− 𝑦𝑖
′
𝒑𝒊
𝑻
𝑥𝑖
′
𝒑𝒊
𝑻
𝟎
𝑻 ][
𝒉𝟏
𝒉𝟐
𝒉𝟑
]=𝟎
Only two linearly independent equations
Yank out h once you have all the coefficients.
If you’re head-scratching about the two equations, it’s not obvious to me at
first glance that the three equations aren’t linearly independent either.
77. Simplification: Two-band Blending
• Brown & Lowe, 2003
• Only use two bands: high freq. and low freq.
• Blend low freq. smoothly
• Blend high freq. with no smoothing: binary alpha
Figure Credit: Brown & Lowe
78. Low frequency (l > 2 pixels)
High frequency (l < 2 pixels)
2-band “Laplacian Stack” Blending