Announcements
Add through registration system
Project 1 is out today
help session at the end of class

Image Segmentation
Today’s Readings
Intelligent Scissors

From images to objects
What Defines an Object?
Subjective problem, but has been well-studied
Gestalt Laws seek to formalize this
proximity, similarity, continuation, closure, common fate
see notes by Steve Joordens, U. Toronto

Extracting objects
How could this be done?

Image Segmentation
Many approaches proposed
color cues
region cues
contour cues
We will consider a few of these
Today:
Intelligent Scissors (contour-based)
E. N. Mortensen and W. A. Barrett, Intelligent Scissors for Image Composition, in ACM Computer Graphics (SIGGRAPH `95), pp. 191-198, 1995

Intelligent Scissors

Intelligent Scissors
Approach answers a basic question
Q:  how to find a path from seed to mouse that follows object boundary as closely as possible?
A:  define a path that stays as close as possible to edges

Intelligent Scissors
Basic Idea
Define edge score for each pixel
edge pixels have low cost
Find lowest cost path from seed to mouse

Path Search (basic idea)
Graph Search Algorithm
Computes minimum cost path from seed to all other pixels

How does this really work?
Treat the image as a graph

Defining the costs
Treat the image as a graph

Defining the costs
c can be computed using a cross-correlation filter
assume it is centered at p
Also typically scale c by it’s length
set c = (max-|filter response|) * length(c)
where max = maximum |filter response| over all pixels in the image

Defining the costs
c can be computed using a cross-correlation filter
assume it is centered at p
Also typically scale c by it’s length
set c = (max-|filter response|) * length(c)
where max = maximum |filter response| over all pixels in the image

Dijkstra’s shortest path algorithm

Dijkstra’s shortest path algorithm

Dijkstra’s shortest path algorithm

Dijkstra’s shortest path algorithm

Dijkstra’s shortest path algorithm

Dijkstra’s shortest path algorithm
Properties
It computes the minimum cost path from the seed to every node in the graph.  This set of minimum paths is represented as a tree
Running time, with N pixels:
O(N2) time if you use an active list
O(N log N) if you use an active priority queue (heap)
takes < second for a typical (640x480) image
Once this tree is computed once, we can extract the optimal path from any point to the seed in O(N/2) time.
it runs in real time as the mouse moves
What happens when the user specifies a new seed?

Results