Image Blending and Compositing
Image Blending and Compositing
© NASA
15-463: Computational Photography
Alexei Efros, CMU, Fall 2011
Image Compositing
Compositing Procedure
1. Extract Sprites (e.g using Intelligent Scissors in Photoshop)
Composite by
David Dewey
Need blending
Alpha Blending / Feathering
+
1 1
0 0
=
Affect of Window Size
1 left 1
right
0 0
Affect of Window Size
1 1
0 0
Good Window Size
To avoid ghosting
• window <= 2*size of smallest prominent feature
FFT
What if the Frequency Spread is Wide
FFT
Bandpass Images
Pyramid Blending
0
1
laplacian
level
2
laplacian
level
0
© Chris Cameron
Season Blending (St. Petersburg)
Season Blending (St. Petersburg)
Simplification: Two-band Blending
Brown & Lowe, 2003
• Only use two bands: high freq. and low freq.
• Blends low freq. smoothly
• Blend high freq. with no smoothing: use binary alpha
2-band Blending
2
_ =
overlap error min. error boundary
Seam Carving
http://www.youtube.com/watch?v=6NcIJXTlugc
Graphcuts
What if we want similar “cut-where-things-
agree” idea, but for closed regions?
• Dynamic programming can’t handle loops
Graph cuts – a more general solution
hard
t
n-links a cut
constraint
hard
constraint
s
bright
Two
signals
dark
Regular Blending
blending derivatives
Gradient Domain Blending (2D)
Trickier in 2D:
• Take partial derivatives dx and dy (the gradient field)
• Fidle around with them (smooth, blend, feather, etc)
• Reintegrate
– But now integral(dx) might not equal integral(dy)
• Find the most agreeable solution
– Equivalent to solving Poisson equation
– Can be done using least-squares
Perez et al., 2003
Perez et al, 2003
editing
Limitations:
• Can’t do contrast reversal (gray on black -> gray on white)
• Colored backgrounds “bleed through”
• Images need to be very well aligned
Gradients vs. Pixels
http://www.gradientshop.com/
Can be used to exert
high-level control over images
Can be used to exert
high-level control over images
gradients – low level image-features
Can be used to exert
high-level control over images
gradients – low level image-features
pixel +100
gradient
Can be used to exert
high-level control over images
gradients – low level image-features
gradients – give rise to high level image-features
pixel +100
gradient
Can be used to exert
high-level control over images
gradients – low level image-features
gradients – give rise to high level image-features
pixel +100
gradient
+100
+100
+100
+100
Can be used to exert
high-level control over images
gradients – low level image-features
gradients – give rise to high level image-features
pixel +100
gradient
+100
+100
+100
+100
sensor
noise
Can be used to exert
high-level control over images
gradients – give rise to high level image-features
Edges
Texture
Shading
Artifacts
noise
seams
seams in
composite images
Can be used to exert
high-level control over images
gradients – give rise to high level image-features
Edges
Texture
Shading
Artifacts
noise
seams
compression
artifacts
blocking in
compressed images
Can be used to exert
high-level control over images
gradients – give rise to high level image-features
Edges
Texture
Shading
Artifacts
noise
seams
compression
artifacts
ringing in
compressed images
Can be used to exert
high-level control over images
Optimization framework
Pravin Bhat et al
Optimization framework
Input unfiltered image – u
Optimization framework
Input unfiltered image – u
Output filtered image – f
Optimization framework
Input unfiltered image – u
Output filtered image – f
Specify desired pixel-differences – (gx, gy)
Energy function
min (fx – gx)2 + (fy – gy)2
f
Optimization framework
Input unfiltered image – u
Output filtered image – f
Specify desired pixel-differences – (gx, gy)
Specify desired pixel-values – d
Energy function
min (fx – gx)2 + (fy – gy)2 + (f – d)2
f
Optimization framework
Input unfiltered image – u
Output filtered image – f
Specify desired pixel-differences – (gx, gy)
Specify desired pixel-values – d
Specify constraints weights – (wx, wy, wd)
Energy function
min wx(fx – gx)2 + wy(fy – gy)2 + wd(f – d)2
f
Pseudo image relighting
change scene illumination
in post-production
example
input
Pseudo image relighting
change scene illumination
in post-production
example
manual relight
Pseudo image relighting
change scene illumination
in post-production
example
input
Pseudo image relighting
change scene illumination
in post-production
example
GradientShop relight
Pseudo image relighting
change scene illumination
in post-production
example
GradientShop relight
Pseudo image relighting
change scene illumination
in post-production
example
GradientShop relight
Pseudo image relighting
change scene illumination
in post-production
example
GradientShop relight
Pseudo image relighting
u o
f
Pseudo image relighting
Energy function
min wx(fx – gx)2 +
f wy(fy – gy)2 +
wd(f – d)2
u o
f
Pseudo image relighting
Energy function
min wx(fx – gx)2 +
f wy(fy – gy)2 +
wd(f – d)2
Definition: u o
d= u
f
Pseudo image relighting
Energy function
min wx(fx – gx)2 +
f wy(fy – gy)2 +
wd(f – d)2
Definition: u o
d= u
gx(p) = ux(p) * (1 + a(p))
a(p) = max(0, - u(p).o(p))
f
Pseudo image relighting
Energy function
min wx(fx – gx)2 +
f wy(fy – gy)2 +
wd(f – d)2
Definition: u o
d= u
gx(p) = ux(p) * (1 + a(p))
a(p) = max(0, - u(p).o(p))
f
Sparse data interpolation
Interpolate scattered data
over images/video
Sparse data interpolation
Interpolate scattered data
over images/video
Example app: Colorization*
input output
*Levin et al. – SIGRAPH 2004
Sparse data interpolation
u user data
f
Sparse data interpolation
Energy function
min wx(fx – gx)2 +
f wy(fy – gy)2 +
wd(f – d)2
u user data
f
Sparse data interpolation
Energy function
min wx(fx – gx)2 +
f wy(fy – gy)2 +
wd(f – d)2
Definition: u user data
d = user_data
f
Sparse data interpolation
Energy function
min wx(fx – gx)2 +
f wy(fy – gy)2 +
wd(f – d)2
Definition: u user data
d = user_data
if user_data(p) defined
wd(p) = 1
else
wd(p) = 0
f
Sparse data interpolation
Energy function
min wx(fx – gx)2 +
f wy(fy – gy)2 +
wd(f – d)2
Definition: u user data
d = user_data
if user_data(p) defined
wd(p) = 1
else
wd(p) = 0
gx(p) = 0; gy(p) = 0
f
Sparse data interpolation
Energy function
min wx(fx – gx)2 +
f wy(fy – gy)2 +
wd(f – d)2
Definition: u user data
d = user_data
if user_data(p) defined
wd(p) = 1
else
wd(p) = 0
gx(p) = 0; gy(p) = 0
wx(p) = 1/(1 + c*|ux(p)|)
wy(p) = 1/(1 + c*|uy(p)|) f
Sparse data interpolation
Energy function
min wx(fx – gx)2 +
f wy(fy – gy)2 +
wd(f – d)2
Definition: u user data
d = user_data
if user_data(p) defined
wd(p) = 1
else
wd(p) = 0
gx(p) = 0; gy(p) = 0
wx(p) = 1/(1 + c*|ux(p)|)
wy(p) = 1/(1 + c*|uy(p)|) f
Sparse data interpolation
Energy function
min wx(fx – gx)2 +
f wy(fy – gy)2 +
wd(f – d)2
Definition: u user data
d = user_data
if user_data(p) defined
wd(p) = 1
else
wd(p) = 0
gx(p) = 0; gy(p) = 0
wx(p) = 1/(1 + c*|el(p)|)
wy(p) = 1/(1 + c*|el(p)|) f