30.05.2017 Views

Tutorial-ImageSegmentationGraph-cut1-Shi

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Tutorial</strong><br />

Graph Based Image Segmentation<br />

Jianbo <strong>Shi</strong>, David Martin, Charless Fowlkes, Eitan Sharon


Topics<br />

• Computing segmentation with graph cuts<br />

•<br />

•<br />

Segmentation benchmark, evaluation criteria<br />

Image segmentation cues, and combination<br />

• Muti-grid computation, and cue aggregation


i<br />

Wij<br />

j<br />

W ij<br />

G = {V, E}<br />

V: graph nodes<br />

E: edges connection nodes<br />

Image = { pixels }<br />

Pixel similarity


Topics<br />

• Computing segmentation with graph cuts<br />

•<br />

•<br />

Segmentation benchmark, evaluation criteria<br />

Image segmentation cues, and combination<br />

• Muti-grid computation, and cue aggregation


Topics<br />

• Computing segmentation with graph cuts<br />

•<br />

•<br />

Segmentation benchmark, evaluation criteria<br />

Image segmentation cues, and combination<br />

• Muti-grid computation, and cue aggregation


Original Image<br />

Texture<br />

Brightnes<br />

s<br />

L*<br />

Colo<br />

r<br />

a*<br />

b*<br />

Boundary Processing<br />

Region<br />

Processing<br />

Textons<br />

D<br />

E<br />

Proximity<br />

C<br />

B<br />

A<br />

χ 2<br />

χ 2<br />

W ij<br />

C<br />

A<br />

B


Topics<br />

• Computing segmentation with graph cuts<br />

•<br />

•<br />

Segmentation benchmark, evaluation criteria<br />

Image segmentation cues, and combination<br />

• Muti-grid computation, and cue aggregation


Part I: Graph and Images<br />

Jianbo <strong>Shi</strong>


Graph Based Image Segmentation<br />

i<br />

Wij<br />

j<br />

W ij<br />

G = {V, E}<br />

V: graph nodes<br />

E: edges connection nodes<br />

Image = { pixels }<br />

Pixel similarity<br />

Segmentation = Graph partition


Right partition cost function?<br />

Efficient optimization algorithm?


Graph Terminology<br />

adjacency matrix,<br />

degree,<br />

volume,<br />

graph cuts


Graph Terminology<br />

Similarity matrix S = [ Sij ]<br />

i<br />

Sij<br />

j<br />

is generalized adjacency matrix<br />

1<br />

20<br />

10<br />

0<br />

20<br />

40<br />

60<br />

80<br />

0.9<br />

0.8<br />

0.7<br />

0.6<br />

0.5<br />

0.4<br />

!10<br />

100<br />

0.3<br />

!20<br />

!10 0 10 20 30 40<br />

120<br />

140 0<br />

20 40 60 80 100 120 140<br />

0.2<br />

0.1


Graph Terminology<br />

Degree of node:<br />

d i = ∑ j<br />

S ij<br />

i<br />

1<br />

20<br />

10<br />

0<br />

20<br />

40<br />

60<br />

80<br />

0.9<br />

0.8<br />

0.7<br />

0.6<br />

0.5<br />

0.4<br />

!10<br />

100<br />

0.3<br />

!20<br />

!10 0 10 20 30 40<br />

120<br />

140 0<br />

20 40 60 80 100 120 140<br />

0.2<br />

0.1


Graph Terminology<br />

Volume of set:<br />

vol(A) = ∑ i∈A<br />

d i , A ⊆ V<br />

A<br />

1<br />

20<br />

10<br />

0<br />

20<br />

40<br />

60<br />

80<br />

0.9<br />

0.8<br />

0.7<br />

0.6<br />

0.5<br />

0.4<br />

!10<br />

100<br />

0.3<br />

!20<br />

!10 0 10 20 30 40<br />

120<br />

140 0<br />

20 40 60 80 100 120 140<br />

0.2<br />

0.1


Cuts in a graph<br />

cut(A, Ā) =<br />

∑<br />

i∈A,j∈Ā<br />

S i,j<br />

1<br />

20<br />

10<br />

0<br />

20<br />

40<br />

60<br />

80<br />

0.9<br />

0.8<br />

0.7<br />

0.6<br />

0.5<br />

0.4<br />

!10<br />

100<br />

0.3<br />

!20<br />

!10 0 10 20 30 40<br />

120<br />

140 0<br />

20 40 60 80 100 120 140<br />

0.2<br />

0.1


Graph Terminology<br />

Similarity matrix S = [ Sij ]<br />

i<br />

Sij<br />

j<br />

Degree of node:<br />

i<br />

d i = ∑ j<br />

S ij<br />

Volume of set:<br />

Graph Cuts<br />

A


Useful Graph Algorithms<br />

• Minimal Spanning Tree<br />

• Shortest path<br />

• s-t Max. graph flow, Min. cut


Minimal/Maximal Spanning Tree<br />

Tree is a graph G without cycle<br />

Graph<br />

Maximal<br />

Minimal


Kruskal’s algorithm<br />

• sort the edges of G in increasing order by length<br />

• for each edge e in sorted order<br />

if the endpoints of e are disconnected in S<br />

add e to S<br />

Randonmalized version can compute Typical cuts


Leakage problem in MST<br />

Leakage


Graph Cut and Flow<br />

Source<br />

Sink<br />

1) Given a source (s) and a sink node (t)<br />

2) Define Capacity on each edge, C_ij = W_ij<br />

3) Find the maximum flow from s->t, satisfying the capacity constraints<br />

Min. Cut = Max. Flow


Problem with min cuts<br />

Min. cuts favors isolated clusters


Normalize cuts in a graph<br />

• (edge) Ncut = balanced cut<br />

Ncut(A, B) = cut(A, B)(<br />

1<br />

vol(A) + 1<br />

vol(B) )<br />

NP-Hard!


Representation<br />

Partition matrix:<br />

segments<br />

X = [X 1 , ..., X K ]<br />

pixels<br />

Pair-wise similarity matrix W<br />

Degree matrix D:<br />

D(i, i) = ∑ j<br />

W i,j<br />

Laplacian matrix D-W


Graph weight matrix W<br />

(a)<br />

W<br />

n=nr * nc<br />

i1<br />

(b)<br />

nr<br />

i2<br />

nc<br />

W(i1,j)<br />

(c)<br />

W(i2,j)<br />

n=nr * nc<br />

(d)


Laplacian matrix D-W<br />

Let x = X(1,:) be the indicator of group 1<br />

asso(A, A) =<br />

x T W x<br />

x T<br />

W<br />

1<br />

x<br />

20<br />

0.9<br />

0.8<br />

40<br />

0.7<br />

60<br />

0.6<br />

0.5<br />

80<br />

0.4<br />

100<br />

120<br />

0.3<br />

0.2<br />

0.1<br />

140 0<br />

20 40 60 80 100 120 140


Laplacian matrix D-W<br />

x T Dx<br />

Cut(A, V-A) = vol(A) -<br />

x T W x<br />

asso(A,A)<br />

1<br />

20<br />

0.9<br />

0.8<br />

40<br />

0.7<br />

60<br />

0.6<br />

0.5<br />

80<br />

0.4<br />

100<br />

120<br />

0.3<br />

0.2<br />

0.1<br />

140 0<br />

20 40 60 80 100 120 140<br />

Cut(A, V − A) = x T (D − W )x


Ncut(X) = 1 K<br />

K∑<br />

l=1<br />

cut(V l , V − V l )<br />

vol(V l )<br />

1<br />

20<br />

40<br />

0.9<br />

0.8<br />

0.7<br />

60<br />

80<br />

0.6<br />

0.5<br />

0.4<br />

100<br />

0.3<br />

120<br />

0.2<br />

0.1<br />

140 0<br />

20 40 60 80 100 120 140<br />

= 1 K<br />

K∑<br />

l=1<br />

X T l (D − W )X l<br />

X T l DX l<br />

X ∈ {0, 1} N×K , X1 K = 1 N


Step I: Find Continuous Global Optima<br />

Scaled partition matrix.<br />

Z = X(X T DX) − 1 2<br />

X =<br />

⎡<br />

⎢<br />

⎣<br />

1 0 0<br />

1 0 0<br />

0 1 0<br />

0 1 0<br />

0 0 1<br />

⎤<br />

⎥<br />

⎦<br />

Z =<br />

⎡<br />

⎢<br />

⎣<br />

√<br />

1<br />

0 0<br />

vol(A)<br />

√<br />

1<br />

0 0<br />

vol(A)<br />

1<br />

0 √ 0<br />

vol(B)<br />

1<br />

0 √ 0<br />

vol(B)<br />

1<br />

0 0 √<br />

vol(C)<br />

⎤<br />

⎥<br />


Step I: Find Continuous Global Optima<br />

Ncut<br />

= 1 K<br />

K∑<br />

l=1<br />

X T l (D − W )X l<br />

X T l DX l<br />

becomes<br />

Ncut(Z) = 1 K tr(ZT W Z)<br />

Eigensolutions<br />

(D − W )z ∗ = λDz ∗<br />

Z T DZ = I K<br />

y 2 i<br />

A<br />

i<br />

Z ∗ = [z ∗ 1, z ∗ 2, ..., z ∗ k]<br />

y 2 i<br />

A<br />

i


Interpretation as a Dynamical System


Interpretation as a Dynamical System


Step I: Find Continuous Global Optima<br />

X =<br />

⎡<br />

⎢<br />

⎣<br />

Partition<br />

1 0 0<br />

1 0 0<br />

0 1 0<br />

0 1 0<br />

0 0 1<br />

⎤<br />

⎥<br />

⎦<br />

⎡<br />

Z =<br />

⎢<br />

⎣<br />

Scaled Partition<br />

√<br />

1<br />

0 0<br />

vol(A)<br />

√<br />

1<br />

0 0<br />

vol(A)<br />

1<br />

0 √ 0<br />

vol(B)<br />

1<br />

0 √ 0<br />

vol(B)<br />

1<br />

0 0 √<br />

vol(C)<br />

⎤<br />

⎥<br />

⎦<br />

⎡<br />

Z ∗ =<br />

⎢<br />

⎣<br />

Eigenvector solution<br />

√<br />

1<br />

0 0<br />

vol(A)<br />

√<br />

1<br />

0 0<br />

vol(A)<br />

1<br />

0 √ 0<br />

vol(B)<br />

1<br />

0 √ 0<br />

vol(B)<br />

1<br />

0 0 √<br />

vol(C)<br />

⎤<br />

⎥<br />

⎦<br />

[ cos(θ) -sin(θ)<br />

×<br />

sin(θ) cos(θ)<br />

]<br />

.<br />

(D − W )Z ∗ = λDZ ∗<br />

If Z* is an optimal, so is {ZR : R T R = I K }


Step II: Discretize Continuous Optima<br />

Z2<br />

Target<br />

partition<br />

X =<br />

⎡<br />

⎢<br />

⎣<br />

1 0<br />

1 0<br />

0 1<br />

0 1<br />

0 1<br />

⎤<br />

⎥<br />

⎦<br />

Z1<br />

Rotation R<br />

Eigenvector<br />

solution<br />

Z ∗ =<br />

⎡<br />

⎢<br />

⎣<br />

1 -1.4<br />

1 -1.3<br />

1 0.8<br />

1 0.9<br />

1 0.7<br />

Rotation R can be found exactly in 2-way partition<br />

⎤<br />

⎥<br />


Brightness Image<br />

Segmentation


ightness image<br />

segmentation


Part II:<br />

Segmentation Measurement,<br />

Benchmark

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!