seam carving - · pdf fileseam carving seam carving sebastian arzt, tim rockt aschel...

52
Seam Carving Seam Carving Sebastian Arzt, Tim Rockt¨ aschel Humboldt Universit¨ at zu Berlin Seminar Computational Photography Sommersemester 2010 19. Juni 2010 1 / 23

Upload: phamkhuong

Post on 06-Mar-2018

224 views

Category:

Documents


3 download

TRANSCRIPT

Seam Carving

Seam Carving

Sebastian Arzt, Tim Rocktaschel

Humboldt Universitat zu BerlinSeminar Computational Photography

Sommersemester 2010

19. Juni 2010

1 / 23

Seam Carving

Motivation

Problem:

Heutzutage: vielfaltige DisplaytypenUnterschiede in Auflosung und Seitenverhaltnisz.B. Bilder/Filme auf 16:10 LCD, Handydisplay, altem 4:3MonitorHTML kann sich dynamisch anpassen, aber Bilder nicht

Bisher:

Scaling → gestauchte/gestreckte BilderCropping → Informationsverlust

Losung: Content Aware Resizing

Anpassung von Bildern an vielfaltige Auflosung undSeitenverhaltnisse von heutigen DisplaysBildinhalte von Interesse dabei moglichst wenig verandern

→ weniger gestaucht/gestreckte Bilder mit geringeremInformationsverlust

2 / 23

Seam Carving

Motivation

Problem:

Heutzutage: vielfaltige DisplaytypenUnterschiede in Auflosung und Seitenverhaltnisz.B. Bilder/Filme auf 16:10 LCD, Handydisplay, altem 4:3MonitorHTML kann sich dynamisch anpassen, aber Bilder nicht

Bisher:

Scaling → gestauchte/gestreckte BilderCropping → Informationsverlust

Losung: Content Aware Resizing

Anpassung von Bildern an vielfaltige Auflosung undSeitenverhaltnisse von heutigen DisplaysBildinhalte von Interesse dabei moglichst wenig verandern

→ weniger gestaucht/gestreckte Bilder mit geringeremInformationsverlust

2 / 23

Seam Carving

Motivation

Problem:

Heutzutage: vielfaltige DisplaytypenUnterschiede in Auflosung und Seitenverhaltnisz.B. Bilder/Filme auf 16:10 LCD, Handydisplay, altem 4:3MonitorHTML kann sich dynamisch anpassen, aber Bilder nicht

Bisher:

Scaling → gestauchte/gestreckte BilderCropping → Informationsverlust

Losung: Content Aware Resizing

Anpassung von Bildern an vielfaltige Auflosung undSeitenverhaltnisse von heutigen DisplaysBildinhalte von Interesse dabei moglichst wenig verandern

→ weniger gestaucht/gestreckte Bilder mit geringeremInformationsverlust

2 / 23

Seam Carving

Originalbild

3 / 23

Seam Carving

Cropped

4 / 23

Seam Carving

Scaled

5 / 23

Seam Carving

Seam Carved

6 / 23

Seam Carving

Vergleich

7 / 23

Seam Carving

Gliederung

1 Definition

2 Berechnung des optimalen Seams

3 Dynamische Programmierung

4 Anwendungsbeispiele

5 Verbessertes Seam Carving durch Forward Energy

6 Video Retargeting

8 / 23

Seam Carving

Definition

Formalisierung unwichtiger Bildinhalte

Sei eine Energiefunktion e : I→ R+ gegeben

Ordnet jedem Pixel einen Energiewert zu

Hohe Energie bedeutet hohe Wichtigkeit

Naiv: entferne pro Zeite die k unwichtigsten Pixel

9 / 23

Seam Carving

Definition

Formalisierung unwichtiger Bildinhalte

Sei eine Energiefunktion e : I→ R+ gegeben

Ordnet jedem Pixel einen Energiewert zu

Hohe Energie bedeutet hohe Wichtigkeit

Naiv: entferne pro Zeite die k unwichtigsten Pixel

9 / 23

Seam Carving

Definition

Formalisierung unwichtiger Bildinhalte

Sei eine Energiefunktion e : I→ R+ gegeben

Ordnet jedem Pixel einen Energiewert zu

Hohe Energie bedeutet hohe Wichtigkeit

Naiv: entferne pro Zeite die k unwichtigsten Pixel

9 / 23

Seam Carving

Definition

Beispiel: Energiematrix

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

10 / 23

Seam Carving

Definition

Definition Seam

I ist ein m × n Bild

Ein Seam ist ein Pixelpfad zwischen gegenuberliegendenBildrandern

11 / 23

Seam Carving

Definition

Definition Seam (cont.)

Ein vertikaler Seam ist formal wie folgt definiert:

sx = {si x}ni=1 = {x(i), i}ni=1

x(i) ordnet jeder Zeile genau ein Pixel zu

Wichtige Bedingung:

∀x : |x(i)− x(i − 1)| ≤ 1 Sinn?

Entfernen eines Seams erzeugt weniger sichtbare Verzerrungen

Ab jetzt: horizontale Auflosung verandern → vertikale Seams

Horizontale Seams analog

12 / 23

Seam Carving

Definition

Definition Seam (cont.)

Ein vertikaler Seam ist formal wie folgt definiert:

sx = {si x}ni=1 = {x(i), i}ni=1

x(i) ordnet jeder Zeile genau ein Pixel zu

Wichtige Bedingung:

∀x : |x(i)− x(i − 1)| ≤ 1 Sinn?

Entfernen eines Seams erzeugt weniger sichtbare Verzerrungen

Ab jetzt: horizontale Auflosung verandern → vertikale Seams

Horizontale Seams analog

12 / 23

Seam Carving

Definition

Definition Seam (cont.)

Ein vertikaler Seam ist formal wie folgt definiert:

sx = {si x}ni=1 = {x(i), i}ni=1

x(i) ordnet jeder Zeile genau ein Pixel zu

Wichtige Bedingung:

∀x : |x(i)− x(i − 1)| ≤ 1 Sinn?

Entfernen eines Seams erzeugt weniger sichtbare Verzerrungen

Ab jetzt: horizontale Auflosung verandern → vertikale Seams

Horizontale Seams analog

12 / 23

Seam Carving

Berechnung des optimalen Seams

Seam Carving

Gesucht ist Seam mit niedrigster Energie

s∗ = arg mins

E (s) = arg mins

n∑i=1

e(I(si ))

Komplexitat des Suchraums:

Wieviele vertikale Seams s in einem m ∗ n Bild gibt es?

O(2n ∗m) ≤ #Seams ≤ O(3n ∗m)

13 / 23

Seam Carving

Berechnung des optimalen Seams

Seam Carving

Gesucht ist Seam mit niedrigster Energie

s∗ = arg mins

E (s) = arg mins

n∑i=1

e(I(si ))

Komplexitat des Suchraums:

Wieviele vertikale Seams s in einem m ∗ n Bild gibt es?

O(2n ∗m) ≤ #Seams ≤ O(3n ∗m)

13 / 23

Seam Carving

Berechnung des optimalen Seams

Seam Carving

Gesucht ist Seam mit niedrigster Energie

s∗ = arg mins

E (s) = arg mins

n∑i=1

e(I(si ))

Komplexitat des Suchraums:

Wieviele vertikale Seams s in einem m ∗ n Bild gibt es?

O(2n ∗m) ≤ #Seams ≤ O(3n ∗m)

13 / 23

Seam Carving

Berechnung des optimalen Seams

Berechnung der Energie eines Seams

Sei M(i , j) der Energiewert desjenigen vertikalen Seams

welcher am oberen Bildrand beginnt,

im Pixel (i , j) endet und

die niedrigste Energie besitzt

Berechnung von M(i , j):

1 2 3 4 5

1

2

3

4

5

M:

?

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

14 / 23

Seam Carving

Berechnung des optimalen Seams

Berechnung der Energie eines Seams

Sei M(i , j) der Energiewert desjenigen vertikalen Seams

welcher am oberen Bildrand beginnt,

im Pixel (i , j) endet und

die niedrigste Energie besitzt

Berechnung von M(i , j):

1 2 3 4 5

1

2

3

4

5

M:

?

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

14 / 23

Seam Carving

Berechnung des optimalen Seams

Rekursionsgleichung fur M(i , j)

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min

M(i − 1, j − 1)

M(i − 1, j)

M(i − 1, j + 1)

M(i , j) =∞ falls i 6∈ [1, n] oder j 6∈ [1,m]

i

j-1 j j+1M:

i-1

Komplexitat? O(3i )

15 / 23

Seam Carving

Berechnung des optimalen Seams

Rekursionsgleichung fur M(i , j)

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min

M(i − 1, j − 1)

M(i − 1, j)

M(i − 1, j + 1)

M(i , j) =∞ falls i 6∈ [1, n] oder j 6∈ [1,m]

i

j-1 j j+1M:

i-1

Komplexitat?

O(3i )

15 / 23

Seam Carving

Berechnung des optimalen Seams

Rekursionsgleichung fur M(i , j)

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min

M(i − 1, j − 1)

M(i − 1, j)

M(i − 1, j + 1)

M(i , j) =∞ falls i 6∈ [1, n] oder j 6∈ [1,m]

i

j-1 j j+1M:

i-1

Komplexitat? O(3i )

15 / 23

Seam Carving

Berechnung des optimalen Seams

Beobachtung

M(4, 3)

M(3, 2)

M(2, 1)

M(2, 2)

M(2, 3)

M(3, 3)

M(2, 2)

M(2, 3)

M(2, 4)

M(3, 4)

M(2, 3)

M(2, 4)

M(2, 5)

M(4, 4)

M(3, 3)

M(2, 2)

M(2, 3)

M(2, 4)

M(3, 4)

M(2, 3)

M(2, 4)

M(2, 5)

M(3, 5)

M(2, 4)

M(2, 5)

M(2, 6)

Tatsachliche Komplexitat des Problems ist O(m ∗ n)!

16 / 23

Seam Carving

Berechnung des optimalen Seams

Beobachtung

M(4, 3)

M(3, 2)

M(2, 1)

M(2, 2)

M(2, 3)

M(3, 3)

M(2, 2)

M(2, 3)

M(2, 4)

M(3, 4)

M(2, 3)

M(2, 4)

M(2, 5)

M(4, 4)

M(3, 3)

M(2, 2)

M(2, 3)

M(2, 4)

M(3, 4)

M(2, 3)

M(2, 4)

M(2, 5)

M(3, 5)

M(2, 4)

M(2, 5)

M(2, 6)

Tatsachliche Komplexitat des Problems ist O(m ∗ n)!

16 / 23

Seam Carving

Dynamische Programmierung

Dynamische Programmierung

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min{M(i − 1, j − 1),M(i − 1, j),M(i − 1, j + 1)

}1 2 3 4 5

1

2

3

4

5

M: 1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

17 / 23

Seam Carving

Dynamische Programmierung

Dynamische Programmierung

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min{M(i − 1, j − 1),M(i − 1, j),M(i − 1, j + 1)

}1 2 3 4 5

1

2

3

4

5

M:1 2 0 4 3

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

17 / 23

Seam Carving

Dynamische Programmierung

Dynamische Programmierung

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min{M(i − 1, j − 1),M(i − 1, j),M(i − 1, j + 1)

}1 2 3 4 5

1

2

3

4

5

M:1 2 0 4 3

4

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

17 / 23

Seam Carving

Dynamische Programmierung

Dynamische Programmierung

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min{M(i − 1, j − 1),M(i − 1, j),M(i − 1, j + 1)

}1 2 3 4 5

1

2

3

4

5

M:1 2 0 4 3

4 3

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

17 / 23

Seam Carving

Dynamische Programmierung

Dynamische Programmierung

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min{M(i − 1, j − 1),M(i − 1, j),M(i − 1, j + 1)

}1 2 3 4 5

1

2

3

4

5

M:1 2 0 4 3

4 3 7

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

17 / 23

Seam Carving

Dynamische Programmierung

Dynamische Programmierung

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min{M(i − 1, j − 1),M(i − 1, j),M(i − 1, j + 1)

}1 2 3 4 5

1

2

3

4

5

M:1 2 0 4 3

4 3 7 5

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

17 / 23

Seam Carving

Dynamische Programmierung

Dynamische Programmierung

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min{M(i − 1, j − 1),M(i − 1, j),M(i − 1, j + 1)

}1 2 3 4 5

1

2

3

4

5

M:1 2 0 4 3

4 3 7 5 9

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

17 / 23

Seam Carving

Dynamische Programmierung

Dynamische Programmierung

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min{M(i − 1, j − 1),M(i − 1, j),M(i − 1, j + 1)

}1 2 3 4 5

1

2

3

4

5

M:1 2 0 4 3

4 3 7 5 9

12 5 7 13 9

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

17 / 23

Seam Carving

Dynamische Programmierung

Dynamische Programmierung

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min{M(i − 1, j − 1),M(i − 1, j),M(i − 1, j + 1)

}1 2 3 4 5

1

2

3

4

5

M:1 2 0 4 3

4 3 7 5 9

12 5 7 13 9

12 11 9 16 15

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

17 / 23

Seam Carving

Dynamische Programmierung

Dynamische Programmierung

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min{M(i − 1, j − 1),M(i − 1, j),M(i − 1, j + 1)

}1 2 3 4 5

1

2

3

4

5

M:1 2 0 4 3

4 3 7 5 9

12 5 7 13 9

12 11 9 16 15

19 11 17 16 24

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

17 / 23

Seam Carving

Dynamische Programmierung

Dynamische Programmierung

M(1, j) = e(1, j)

M(i , j) = e(i , j) + min{M(i − 1, j − 1),M(i − 1, j),M(i − 1, j + 1)

}1 2 3 4 5

1

2

3

4

5

M:1 2 0 4 3

4 3 7 5 9

12 5 7 13 9

12 11 9 16 15

19 11 17 16 24

1 2 3 4 5

1

2

3

4

5

01

8

73

9

3 5

2

2

47

4

4 3

6

4

9

7

66

8 2 8 9

E:

17 / 23

Seam Carving

Anwendungsbeispiele

Content Aware Resizing

Entfernen von horizontalen undvertikalen Seams

Optimale Reihenfolge uberdynamische Programmierungbestimmbar

18 / 23

Seam Carving

Anwendungsbeispiele

Content Amplification

19 / 23

Seam Carving

Anwendungsbeispiele

Content Amplification

19 / 23

Seam Carving

Anwendungsbeispiele

Content Amplification

19 / 23

Seam Carving

Anwendungsbeispiele

Content Amplification

19 / 23

Seam Carving

Anwendungsbeispiele

Content Amplification

19 / 23

Seam Carving

Anwendungsbeispiele

Content Amplification

19 / 23

Seam Carving

Anwendungsbeispiele

Content Amplification

19 / 23

Seam Carving

Anwendungsbeispiele

Object Removal

20 / 23

Seam Carving

Anwendungsbeispiele

Object Removal

20 / 23

Seam Carving

Verbessertes Seam Carving durch Forward Energy

TODO

maximal 1 Folie

21 / 23

Seam Carving

Video Retargeting

TODO

Grundideen auf maximal 2 Folien

22 / 23

Seam Carving

Quellen

http: // liquidrescale. wikidot. com/ , 19.06.2010

Avidan, S. and Shamir, A., Seam carving for content-aware image resizing, ACMTransactions on Graphics, 2007

Rubinstein, M. and Shamir, A. and Avidan, S., Improved seam carving for videoretargeting, ACM Transactions on Graphics-TOG, 2008

23 / 23