Lecture04_Snakes

advertisement
To find a contour that best approximates the
perimeter of an object
Subdividing or partitioning an image into its
constituent regions or objects
Its just like segmentation and many other
methods...
Not effective in presence of noise and sampling
artifacts (e.g. medical images).
This is done with
segmentation on
a noisy image
This is done with
snakes on a noisy
image
A framework for drawing an object outline from
a possibly noisy 2D image.
An energy-minimizing curve guided by external
constraint forces and influenced by image forces
that pull it towards features (lines, edges).
Represents an object boundary or some other
salient image feature as a parametric curve
Snakes are autonomous and self-adapting in
their search for a minimal energy state
They can be easily manipulated using external
image forces
They can be used to track dynamic objects in
temporal as well as the spatial dimensions
Object tracking
Shape recognition
Segmentation
Edge detection
Segmentation example
Representation of the contours
Defining the energy functions
- Internal
- External
Minimizing the energy function
A Snake is represented as a set of points (x,y)
that defines a function V(s).
External Energy Function
Internal Energy Function
A set of k points (in the discreet world)
or a continuous function that will
represent the points
The Snake's energy functions measure the
appropriateness of the contour
Good solutions correspond to the minimum
of the energy functions
Getting the snake closer to the target
In charge of the snake curvature and smoothness
Our goal is to minimize this function with respect
to the contour parameters
Our goal is to find a function V that will
minimize E and give us a perfect match
You can think about the energy function like a
heuristic function, they are similar because
they both lead to a solution in a way that lets
the programmer decide what is important and
what’s not.
Forces the contour to be continuous
Forces the contour to be smooth
Decide if the snake wants to shrink/expand
Econt
Ecurv
Forces the contour to be continuous
Minimizing the first derivative has two
effects:
The snake wants to shrink
The squaring of the differences causes the
differences to be as similar as possible (the points are
at equal distances from each other)
The contour is approximated by N points P1, P2, . .., Pn
and the first derivative is approximated by a finite
difference:
The points are
equi-distances
The points are
not equi-distances
Forces the contour to be smooth.
By taking the second derivative which
represent the difference of the differences
between 2 consecutive differences.
This 2 consecutive differences represent the
curvature and we want to penalize if the
curvature is too high.
The curvature can be approximated by the following
finite difference:
That’s better!
Reminder:
We can play with α,β and to control the
relation between the first derivative and the
second derivative and get different results
Small α
Small alpha make the
energy function insensitive
to the amount of stretch
Big α
Increase the internal energy
of the snake as it stretches
more and more
Small β
Small beta causes snake
to allow large curvature
so that snake will curve
into bends in the contour
Big β
When beta is large then
high price for curvature so
snake prefers to be smooth
and not curving
Represent the snake with a set of n points
 i  ( xi , yi )
(X0 ,
i  0  n 1
Y0)
(X14 ,
(X3 ,
Y3)
Y14)
 0  n
closed snake
0
 n 1
open snake
Dealing with open snake is easier and our
algorithm will run faster (soon…)
An energy map is a function f (x, y) that we
extract from the image – I(x, y)
The energy map’s task is to emphasize the
areas of the contour and to weaken the other
areas of the image by creating a new image.
By doing this we can attract our snake near the
“emphasized” pixels which represent the
contour of the image.
By given an image – I(x, y) , we can build an
energy map – f(x, y), that will attract our snake
to edges on our image.
For each pixel we will do:
(color image)
(black-white image)
By doing this we can easily locate the edges on
the images because the gradient there is big.
Energy map
Image
Attracts the contour towards the closest image
edge with dependence on the energy map.
determines whether the snake feels attracted
to object boundaries
Initial state
Final state
In order to make snakes useful for early vision
we need energy functions that attract them to
salient features in images.
I will present you 2 different energy functions
which attract a snake to lines & edges.
Depending on the sign of Wline the snake will
be attracted either to bright lines or dark lines.
Reminder: Gradient is a generalization of the
usual concept of derivative to the functions of
several variables
Note: As long as the points on the snake are
closer to the edge (where the gradient is
bigger) and then the Eedge is smaller, so that’s a
good thing because that's how the external
energy works! this gets the snake closer
and closer to the target contour.
Image
Zoomed in
External force
Several algorithms have been proposed to fit
deformable contours.
We’ll look at two:
- Greedy search
- Dynamic programming (for 2d snakes)
A greedy algorithm makes locally optimal
choices, hoping that the final solution
will be globally optimal.
For each point of the snake, we search a
window around it (window size: m) and move to
where the energy function is minimal.
We will stop after enough points have not
changed in the last iteration
Energy function for each point in the local
neighborhood is calculated
The point is moved to the next point with lowest
energy function
This process is repeated for every point
Iteration is done until termination condition met
Defined number of iterations
Complexity:
n
O(m )
Convergence not guaranteed!!
Need decent initialization
Works very well as far as the initial snake
is not too far from the desired solution
Dynamic programming algorithm
We need to make the snake discrete in order to use
the algorithm
The discretization of the external energy depends
on the particular energy term but the internal
energy is always the same and can be discretized as
follows:
Our problem is to finding the set of vertex
positions V that minimizes:
We will now make the assumption
that the snake is open and that β=0
In most cases, snake energy can be rewritten as a
sum of pair-wise interaction potential:
(The internal energy is a local property of neighboring vertices)
This means that each vertex position Vi influences
the total energy only through the terms Ei  1 and E i
E (v1 , v2 ,..., vn )  E1 (v1 , v2 )  E2 (v2 , v3 )  ...  En1 (vn1 , vn )
Each vertex has m
possible moves
We now define n variables Si
(i=2,3,…,n)
Each Sk (vk ) contains the lowest total energy for the
first k-1 vertices of the snake for a given
value of vk. Thus the minimum energy E of the
whole snake is equal to min vn( sn(vn))
The globally best position for the snake is therefore
computed by first computing all the S k , so we
determine at each node the optimal position of its
predecessor for each possible location of the node.
When we have computed Sn we can find the optimal
position for un by minimizing the expression sn(un)
Once we know the position of the last node we look up
the optimal position for the second last node and so
on until we have determined the optimal position for all
the nodes.
sites
states
1
2
…
m
v1
E1 (v1 , v2 )
v2
E2 (v2 , v3 )
v3
E3 (v3 , v4 )
v4
E4 (v4 , vn )
vn
E1 (1)  0
E2 (1)
E3 (1)
E4 (1)
E n (1)
E1 (2)  0
E2 (2)
E3 ( 2 )
E4 (2)
En (2)
E1 (3)  0
E2 (3)
E3 (3)
E4 (3)
En (3)
E1 (4)  0
E2 (4)
E3 ( 4 )
E4 (4)
En (4)
Complexity:
O(nm 2 )
If β≠0 then the decomposition of the energy
function into local terms becomes:
This means that each vertex position Vi influences
the total energy only through the terms Ei  1 and
E i , Ei  1
And now we will define again n variables Si
(i=2,3,…,n)
2
Note that we have to compute a table of m
values at each node instead of only m values per
node for the simpler snakes with β=0.
Complexity:
3
O(nm )
 n 1
n
1
2 3 4
Solution:
1. Can use Viterbi to optimize snake energy in case
v1 = c is fixed. (in this case the energy above
effectively has no loop)
2. Use Viterbi to optimize snake for all possible
values of c and choose the best of the obtained
m solutions.
Complexity:
3
O(nm )
Snakes are 1-dimensional which means that we can
reduce 2-dimensional optimization
problems to 1-dimensional optimization problems.
Snakes optimize globally.
Active contour models provide a unified solution to
several image processing problems such as the
detection of light and dark lines and edges.
Useful to track and fit non-rigid shapes.
Flexibility in how energy function is defined.
Must have decent initialization near true boundary,
may get stuck in local minimum.
Parameters of energy function must be set well
based on prior information.
We will review two main applications of snakes:
- Snake splitting
- Snake expending
Problem:
Snakes including multiple objects can not always
extract each of them individually (when initialize
the contour wrong)
Solution:
Using the split-and-merge contour model based on
detecting self- and mutual-crossings of the contour.
The method:
There is a single contour which surrounding all
objects and then iteratively splits into multiple
contours by cutting at self-crossing points for
extracting multiple objects individually
There is some cases when our snakes would need
to expand in order to get close to the contour.
Problems:
If there is no image force (F=0), the curve shrinks
on itself and vanishes to a point.
Often, due to noise, some isolated points are
gradient maxima and can stop the curve when it
passes by.
We can get stuck inside a shape (if our image
force=0) So we need the define new force for this
cases:
Solution:
we add another force which makes the contour
have a more dynamic behavior.
You can think about our curve as a “Balloon” Force
which inflate our snake
The new Force
Snakes include:
- Two energy functions (Internal and External)
- N points who represents a function V
Main problem:
Finding an optimal function V that minimize the
Energy function
Solved by:
- Greedy algorithm
- Viterbi algorithm
1. M. Kass, A. Witkin, and D. Terzopoulos, "Snakes:
Active contour models.“, International Journal of
Computer Vision. v. 1, n. 4, pp. 321-331, 1987.
2. Wikipedia – Active contour models (Snakes)
3. http://www.computing.edu.au/~jim/thesis/ivins02.pdf
4. http://www.cse.unr.edu/~bebis/CS791E/Notes/Def
ormableContours.pdf
5. http://www.cs.utexas.edu/~grauman/courses/378/
handouts/snakes.pdf
6. http://cs.gmu.edu/~kosecka/cs682/lect-snakes.pdf
Download