Announcements
Mailing list:  csep576@cs.washington.edu
you should have received messages
Project 1 out today (due in two weeks)
Carpools

Edge Detection
Today’s reading
Forsyth, chapters 8, 15.1

Edge detection
Convert a 2D image into a set of curves
Extracts salient features of the scene
More compact than pixels

Origin of Edges
Edges are caused by a variety of factors

Edge detection
How can you tell that a pixel is on an edge?

Image gradient
The gradient of an image:
The gradient points in the direction of most rapid change in intensity

The discrete gradient
How can we differentiate a digital image F[x,y]?

The discrete gradient
How can we differentiate a digital image F[x,y]?
Option 1:  reconstruct a continuous image, then take gradient
Option 2:  take discrete derivative (finite difference)

The Sobel operator
Better approximations of the derivatives exist
The Sobel operators below are very commonly used

Effects of noise
Consider a single row or column of the image
Plotting intensity as a function of position gives a signal

Solution:  smooth first

Derivative theorem of convolution
This saves us one operation:

Laplacian of Gaussian
Consider

2D edge detection filters

The Canny edge detector
original image (Lena)

The Canny edge detector

The Canny edge detector

Non-maximum suppression
Check if pixel is local maximum along gradient direction
requires checking interpolated pixels p and r

The Canny edge detector

Effect of s (Gaussian kernel spread/size)

Edge detection by subtraction

Edge detection by subtraction

Edge detection by subtraction

Gaussian - image filter

An edge is not a line...

Finding lines in an image
Option 1:
Search for the line at every possible position/orientation
What is the cost of this operation?
Option 2:
Use a voting scheme:  Hough transform

Finding lines in an image
Connection between image (x,y) and Hough (m,b) spaces
A line in the image corresponds to a point in Hough space
To go from image space to Hough space:
given a set of points (x,y), find all (m,b) such that y = mx + b

Finding lines in an image
Connection between image (x,y) and Hough (m,b) spaces
A line in the image corresponds to a point in Hough space
To go from image space to Hough space:
given a set of points (x,y), find all (m,b) such that y = mx + b
What does a point (x0, y0) in the image space map to?

Hough transform algorithm
Typically use a different parameterization
d is the perpendicular distance from the line to the origin
q is the angle this perpendicular makes with the x axis
Why?

Hough transform algorithm
Typically use a different parameterization
d is the perpendicular distance from the line to the origin
q is the angle this perpendicular makes with the x axis
Why?
Basic Hough transform algorithm
Initialize H[d, q]=0
for each edge point I[x,y] in the image
    for q = 0 to 180
    H[d, q] += 1
Find the value(s) of (d, q) where H[d, q] is maximum
The detected line in the image is given by
What’s the running time (measured in # votes)?

Extensions
Extension 1:  Use the image gradient
same
for each edge point I[x,y] in the image
    compute unique (d, q) based on image gradient at (x,y)
    H[d, q] += 1
same
same
What’s the running time measured in votes?
Extension 2
give more votes for stronger edges
Extension 3
change the sampling of (d, q) to give more/less resolution
Extension 4
The same procedure can be used with circles, squares, or any other shape

Extensions
Extension 1:  Use the image gradient
same
for each edge point I[x,y] in the image
    compute unique (d, q) based on image gradient at (x,y)
    H[d, q] += 1
same
same
What’s the running time measured in votes?
Extension 2
give more votes for stronger edges
Extension 3
change the sampling of (d, q) to give more/less resolution
Extension 4
The same procedure can be used with circles, squares, or any other shape