Image Blending and Compositing

89
Image Blending and Compositing © NASA CS194: Image Manipulation & Computational Photography Alexei Efros, UC Berkeley, Fall 2016

Transcript of Image Blending and Compositing

Page 1: Image Blending and Compositing

Image Blending and Compositing

© NASA

CS194: Image Manipulation & Computational Photography Alexei Efros, UC Berkeley, Fall 2016

Page 2: Image Blending and Compositing

Image Compositing

Page 3: Image Blending and Compositing

Compositing Procedure 1. Extract Sprites (e.g using Intelligent Scissors in Photoshop)

Composite by David Dewey

2. Blend them into the composite (in the right order)

Page 4: Image Blending and Compositing

Alpha Blending / Feathering

0 1

0 1

+

= Iblend = αIleft + (1-α)Iright

Page 5: Image Blending and Compositing

Pyramid Blending

Page 6: Image Blending and Compositing

Gradient Domain vs. Frequency Domain In Pyramid Blending, we decomposed our

images into several frequency bands, and transferred them separately • But boundaries appear across multiple bands

But what about representation based on derivatives (gradients) of the image?: • Represents local change (across all frequences) • No need for low-res image

– captures everything (up to a constant) • Blending/Editing in Gradient Domain:

– Differentiate – Copy / Blend / edit / whatever – Reintegrate

Page 7: Image Blending and Compositing

Gradients vs. Pixels

Page 8: Image Blending and Compositing

Gilchrist Illusion (c.f. Exploratorium)

Page 9: Image Blending and Compositing
Page 10: Image Blending and Compositing

White?

Page 11: Image Blending and Compositing

White?

Page 12: Image Blending and Compositing

White?

Page 13: Image Blending and Compositing
Page 14: Image Blending and Compositing

Drawing in Gradient Domain

James McCann & Nancy Pollard

Real-Time Gradient-Domain Painting, SIGGRAPH 2009

(paper came out of this class!) http://www.youtube.com/watch?v=RvhkAfrA0-w&feature=youtu.be

Page 15: Image Blending and Compositing

Gradient Domain blending (1D)

Two signals

Regular blending

Blending derivatives

bright

dark

Page 16: Image Blending and Compositing

Gradient hole-filling (1D)

source target

Page 17: Image Blending and Compositing

It is impossible to faithfully preserve the gradients

source target

Page 18: Image Blending and Compositing

Gradient Domain Blending (2D)

Trickier in 2D: • Take partial derivatives dx and dy (the gradient field) • Fiddle around with them (copy, blend, smooth, 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 (\ in Matlab)

Page 19: Image Blending and Compositing

Example

Source: Evan Wallace

Gradient Visualization

Page 20: Image Blending and Compositing

Source: Evan Wallace

+

Specify object region

Page 21: Image Blending and Compositing

Poisson Blending Algorithm A good blend should preserve gradients of source

region without changing the background Treat pixels as variables to be solved

– Minimize squared difference between gradients of foreground region and gradients of target region

– Keep background pixels constant

Perez et al. 2003

Page 22: Image Blending and Compositing

Examples Gradient domain processing

20 20 20 20

20 80 20 20

20 20 80 20

20 20 20 20

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

10 10 10 10

10 10 10 10

10 10 10 10

10 10 10 10

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

source image background image target image 10 10 10 10

10 v1 v3 10

10 v2 v4 10

10 10 10 10

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

Page 23: Image Blending and Compositing

Gradient-domain editing

Creation of image = least squares problem in terms of: 1) pixel intensities; 2) differences of pixel intensities

Least Squares Line Fit in 2 Dimensions

( )( )2

2

minargˆ

minargˆ

bAvv

vav

v

v

−=

−= ∑i

iTi b

Use Matlab least-squares solvers for numerically stable solution with sparse A

Page 24: Image Blending and Compositing

Perez et al., 2003

Page 25: Image Blending and Compositing

source target mask

no blending gradient domain blending

Slide by Mr. Hays

Page 26: Image Blending and Compositing

What’s the difference?

no blending gradient domain blending

- =

Slide by Mr. Hays

Page 27: Image Blending and Compositing

Perez et al, 2003

Limitations: • Can’t do contrast reversal (gray on black -> gray on white) • Colored backgrounds “bleed through” • Images need to be very well aligned

editing

Page 28: Image Blending and Compositing

Gradient Domain as Image Representation

See GradientShop paper as good example: http://www.gradientshop.com/

Page 29: Image Blending and Compositing

Can be used to exert high-level control over images

Page 30: Image Blending and Compositing

Can be used to exert high-level control over images gradients – low level image-features

Page 31: Image Blending and Compositing

Can be used to exert high-level control over images gradients – low level image-features

+100 pixel gradient

Page 32: Image Blending and Compositing

Can be used to exert high-level control over images gradients – low level image-features gradients – give rise to high level image-features

+100 pixel gradient

Page 33: Image Blending and Compositing

Can be used to exert high-level control over images gradients – low level image-features gradients – give rise to high level image-features

+100

+100

+100

+100

+100

+100 pixel gradient

+100

+100

+100

+100

+100

+100 pixel gradient

Page 34: Image Blending and Compositing

Can be used to exert high-level control over images gradients – low level image-features gradients – give rise to high level image-features

+100

+100

+100

+100

+100

+100 pixel gradient

+100

+100

+100

+100

+100

+100 pixel gradient

image edge image edge

Page 35: Image Blending and Compositing

Can be used to exert high-level control over images gradients – low level image-features gradients – give rise to high level image-features manipulate local gradients to

manipulate global image interpretation

+100

+100

+100

+100

+100

+100 pixel gradient

+100

+100

+100

+100

+100

+100 pixel gradient

Page 36: Image Blending and Compositing

Can be used to exert high-level control over images gradients – low level image-features gradients – give rise to high level image-features manipulate local gradients to

manipulate global image interpretation

+255

+255

+255

+255

+255

pixel gradient

Page 37: Image Blending and Compositing

Can be used to exert high-level control over images gradients – low level image-features gradients – give rise to high level image-features manipulate local gradients to

manipulate global image interpretation

+255

+255

+255

+255

+255

pixel gradient

Page 38: Image Blending and Compositing

Can be used to exert high-level control over images gradients – low level image-features gradients – give rise to high level image-features manipulate local gradients to

manipulate global image interpretation

+0

+0

+0

+0

+0

pixel gradient

Page 39: Image Blending and Compositing

Can be used to exert high-level control over images gradients – low level image-features gradients – give rise to high level image-features manipulate local gradients to

manipulate global image interpretation

+0

+0

+0

+0

+0

pixel gradient

Page 40: Image Blending and Compositing

Can be used to exert high-level control over images

Page 41: Image Blending and Compositing

Optimization framework

Pravin Bhat et al

Page 42: Image Blending and Compositing

Optimization framework Input unfiltered image – u

Page 43: Image Blending and Compositing

Optimization framework Input unfiltered image – u Output filtered image – f

Page 44: Image Blending and Compositing

Optimization framework Input unfiltered image – u Output filtered image – f Specify desired pixel-differences – (gx, gy)

min (fx – gx)2 + (fy – gy)2

f

Energy function

Page 45: Image Blending and Compositing

Optimization framework Input unfiltered image – u Output filtered image – f Specify desired pixel-differences – (gx, gy) Specify desired pixel-values – d

min (fx – gx)2 + (fy – gy)2 + (f – d)2

f

Energy function

Page 46: Image Blending and Compositing

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)

min wx(fx – gx)2 + wy(fy – gy)2 + wd(f – d)2

f

Energy function

Page 47: Image Blending and Compositing
Page 48: Image Blending and Compositing
Page 49: Image Blending and Compositing
Page 50: Image Blending and Compositing

Pseudo image relighting change scene illumination

in post-production example

input

Page 51: Image Blending and Compositing

Pseudo image relighting change scene illumination

in post-production example

manual relight

Page 52: Image Blending and Compositing

Pseudo image relighting change scene illumination

in post-production example

input

Page 53: Image Blending and Compositing

Pseudo image relighting change scene illumination

in post-production example

GradientShop relight

Page 54: Image Blending and Compositing

Pseudo image relighting change scene illumination

in post-production example

GradientShop relight

Page 55: Image Blending and Compositing

Pseudo image relighting change scene illumination

in post-production example

GradientShop relight

Page 56: Image Blending and Compositing

Pseudo image relighting change scene illumination

in post-production example

GradientShop relight

Page 57: Image Blending and Compositing

Pseudo image relighting

u

f

o

Page 58: Image Blending and Compositing

Pseudo image relighting

min wx(fx – gx)2 + f wy(fy – gy)2 + wd(f – d)2

Energy function

u

f

o

Page 59: Image Blending and Compositing

Pseudo image relighting

min wx(fx – gx)2 + f wy(fy – gy)2 + wd(f – d)2

Energy function

Definition: d = u

u

f

o

Page 60: Image Blending and Compositing

Pseudo image relighting

min wx(fx – gx)2 + f wy(fy – gy)2 + wd(f – d)2

Energy function

u

f

o Definition: d = u gx(p) = ux(p) * (1 + a(p)) a(p) = max(0, - u(p).o(p))

Page 61: Image Blending and Compositing

Pseudo image relighting

min wx(fx – gx)2 + f wy(fy – gy)2 + wd(f – d)2

Energy function

u

f

o Definition: d = u gx(p) = ux(p) * (1 + a(p)) a(p) = max(0, - u(p).o(p))

Page 62: Image Blending and Compositing

Sparse data interpolation Interpolate scattered data

over images/video

Page 63: Image Blending and Compositing

Sparse data interpolation Interpolate scattered data

over images/video Example app: Colorization*

input output *Levin et al. – SIGRAPH 2004

Page 64: Image Blending and Compositing

u

f

user data

Sparse data interpolation

Page 65: Image Blending and Compositing

u

f

user data

Sparse data interpolation

min wx(fx – gx)2 + f wy(fy – gy)2 + wd(f – d)2

Energy function

Page 66: Image Blending and Compositing

u

f

user data

Sparse data interpolation

min wx(fx – gx)2 + f wy(fy – gy)2 + wd(f – d)2

Energy function

Definition: d = user_data

Page 67: Image Blending and Compositing

u

f

user data

Sparse data interpolation

min wx(fx – gx)2 + f wy(fy – gy)2 + wd(f – d)2

Energy function

Definition: d = user_data if user_data(p) defined

wd(p) = 1 else wd(p) = 0

Page 68: Image Blending and Compositing

u

f

user data

Sparse data interpolation

min wx(fx – gx)2 + f wy(fy – gy)2 + wd(f – d)2

Energy function

Definition: d = user_data if user_data(p) defined

wd(p) = 1 else wd(p) = 0

gx(p) = 0; gy(p) = 0

Page 69: Image Blending and Compositing

u

f

user data

Sparse data interpolation

min wx(fx – gx)2 + f wy(fy – gy)2 + wd(f – d)2

Energy function

Definition: 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)|)

Page 70: Image Blending and Compositing

Don’t blend, CUT!

So far we only tried to blend between two images. What about finding an optimal seam?

Moving objects become ghosts

Page 71: Image Blending and Compositing

Davis, 1998 Segment the mosaic

• Single source image per segment • Avoid artifacts along boundries

– Dijkstra’s algorithm

Page 72: Image Blending and Compositing

min. error boundary

Minimal error boundary

overlapping blocks vertical boundary

_ = 2

overlap error

Page 73: Image Blending and Compositing

Seam Carving

http://www.youtube.com/watch?v=6NcIJXTlugc

Page 74: Image Blending and Compositing

Seam Carving

• Basic Idea: remove unimportant pixels from the image

– Unimportant = pixels with less “energy”

• Intuition for gradient-based energy: – Preserve strong contours – Human vision more sensitive to edges – so try remove content from

smoother areas – Simple, enough for producing some nice results – See their paper for more measures they have used

Michael Rubinstein — MIT CSAIL – [email protected]

Page 75: Image Blending and Compositing

Finding the Seam?

Michael Rubinstein — MIT CSAIL – [email protected]

Page 76: Image Blending and Compositing

The Optimal Seam

)(minarg* sEsS

=||||)( III yxE∂∂+

∂∂=

Michael Rubinstein — MIT CSAIL – [email protected]

Page 77: Image Blending and Compositing

Dynamic Programming

• Invariant property: – M(i,j) = minimal cost of a seam going through (i,j) (satisfying the seam

properties)

5 8 12 3

9 2 3 9

7 3 4 2

4 5 7 8

Michael Rubinstein — MIT CSAIL – [email protected]

Page 78: Image Blending and Compositing

Dynamic Programming

5 8 12 3

9 2+5 3 9

7 3 4 2

4 5 7 8

( ))1,1(),,1(),1,1(min),(),( +−−−−+= jijijijiEji MMMM

Michael Rubinstein — MIT CSAIL – [email protected]

Page 79: Image Blending and Compositing

Dynamic Programming

5 8 12 3

9 7 3+3 9

7 3 4 2

4 5 7 8

( ))1,1(),,1(),1,1(min),(),( +−−−−+= jijijijiEji MMMM

Michael Rubinstein — MIT CSAIL – [email protected]

Page 80: Image Blending and Compositing

Dynamic Programming

5 8 12 3

9 7 6 12

14 9 10 8

14 14 15 8+8

( ))1,1(),,1(),1,1(min),(),( +−−−−+= jijijijiEji MMMM

Michael Rubinstein — MIT CSAIL – [email protected]

Page 81: Image Blending and Compositing

Searching for Minimum

• Backtrack (can store choices along the path, but do not have to)

5 8 12 3

9 7 6 12

14 9 10 8

14 14 15 16

Michael Rubinstein — MIT CSAIL – [email protected]

Page 82: Image Blending and Compositing

Backtracking the Seam

5 8 12 3

9 7 6 12

14 9 10 8

14 14 15 16

Michael Rubinstein — MIT CSAIL – [email protected]

Page 83: Image Blending and Compositing

Backtracking the Seam

5 8 12 3

9 7 6 12

14 9 10 8

14 14 15 16

Michael Rubinstein — MIT CSAIL – [email protected]

Page 84: Image Blending and Compositing

Backtracking the Seam

5 8 12 3

9 7 6 12

14 9 10 8

14 14 15 16

Michael Rubinstein — MIT CSAIL – [email protected]

Page 85: Image Blending and Compositing

Graphcuts What if we want similar “cut-where-things-

agree” idea, but for closed regions? • Dynamic programming can’t handle loops

Page 86: Image Blending and Compositing

Graph cuts – a more general solution

n-links

s

t a cut hard constraint

hard constraint

Minimum cost cut can be computed in polynomial time (max-flow/min-cut algorithms)

Page 87: Image Blending and Compositing

e.g. Lazy Snapping

Interactive segmentation using graphcuts Also see the original Boykov&Jolly, ICCV’01, “GrabCut”, etc, etc ,etc.

Page 88: Image Blending and Compositing

Putting it all together Compositing images

• Have a clever blending function – Feathering – blend different frequencies differently – Gradient based blending

• Choose the right pixels from each image – Dynamic programming – optimal seams – Graph-cuts

Now, let’s put it all together:

• Interactive Digital Photomontage, 2004 (video)

Page 89: Image Blending and Compositing

http://www.youtube.com/watch?v=kzV-5135bGA