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]?
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
      is the Laplacian operator:

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 size)

Scale space (Witkin 83)
Properties of scale space (w/ Gaussian smoothing)
edge position may shift with increasing scale (s)
two edges may merge with increasing scale
an edge may not split into two with increasing scale

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