2/21/2010

1
Canny Edge Detection and Hough 
Transform
Chen Yu
Indiana University
Adapted from Pietro Perona
Optimal edge detection (Canny, 1986)
– Good Detection.  Filter responds to edge, not 
noise.
– Good Localization: detected edge near true edge.
– Number of responses: One real edge should not Number of responses: One real edge should not 
result in more than one detected edge
Edge Images
Image
Edge detection
and Thresholding
Noisy edge image
l b d Incomplete boundaries
Shrink and Expand
Thinning
Canny Edge Detector
1) Smooth image with a Gaussian
• optimizes the trade‐off between noise filtering and edge 
localization
2) C h G di i d i i i f 2) Compute the Gradient magnitude using approximations of 
partial derivatives
3)Thin edges by applying non‐maxima suppression to the 
gradient magnitude 
4)Detect edges by double thresholding
2/21/2010
2
Non‐maximum suppression:
Select the single maximum point across the width 
of an edge.
Thinning
Non‐Maxima Suppression Gradient Orientation
2/21/2010
3
Pixel Selection
Hysteresis Thresholding
• Two Issues with one threshold:
– Allows noisy maxima to breakthrough if too low
– Kills off weak edges if too high
• Solution: Exploit the fact that edge pixels are
normally connected normally connected
1. Set 2 thresholds, t
low
and t
high
2. If a pixel I
N
(i,j) is >= t
high
, mark it as an edge
3. Check its neighbors along the direction θ(i,j). If
they are greater than t
low
, mark them as edges
– Allows a higher threshold to kill off noise,
while retaining valid contours from the image
• Idea: use a high threshold to start edge curves and a low 
threshold to continue them.
• Start with a high threshold (strong edge). 
Hysteresis Thresholding
• Apply another threshold which is lower than the higher one. 
• Look for the other edges which are higher than the lower
threshold and connected to the strong edges
• Add them to the edge list
2/21/2010
4
Linking to the 
next edge point
Assume the marked 
point is an edge 
point.  
k h l Take the normal to 
the gradient at that 
point and use this to 
predict continuation 
points (either r or s). 
Example: Canny Edge Detection
gap is gone
Original
image
Strong +
connected
weak edges
courtesy of G. Loy
Strong
edges
only
Weak
edges
Hough Transform
• Elegant method for edge detection and 2D object recognition
• Edges need not be connected
• Complete object need not be visible Complete object need not be visible
• Key Idea: Edges VOTE for the possible model
2/21/2010
5
Image space and Hough space Image Space and Hough Space
Image and Parameter Spaces
c mx y + =
) , (
i i
y x
y
x
Equation of Line: 
Find:
Consider point:
c mx y + =
) , ( c m
) , (
i i
y x
x
i i i i
y m x c or c mx y + ÷ = + =
m
c
) , ( c m
Image Space
Parameter Space
Parameter space also called Hough Space
Line Detection by Hough Transform
y
x
) , ( c m
Parameter Space
Algorithm:
• Quantize Parameter Space 
• Create Accumulator Array
• Set
) , ( c m
) , ( c m A
c m c m A 0 ) ( ¬ =
p
1 1
1 1
1 1
2
1 1
1 1
1 1
) , ( c m A
• Set 
• For each image edge                  increment:
• If              lies on the line:
• Find local maxima in 
c m c m A , 0 ) , ( ¬ =
) , (
i i
y x
1 ) , ( ) , ( + = c m A c m A
) , ( c m
) , ( c m A
i i
y m x c + ÷ =
2/21/2010
6
Better Parameterization
NOTE:
Large Accumulator (e.g. vertical lines)
More memory and computations
Improvement:
· s s · ÷ m
(Finite Accumulator Array Size)
) , (
i i
y x
y
x
Line equation: 
Here
Given points  find
u u µ sin cos y x + =
max
0
2 0
µ µ
t u
s s
s s
) , (
i i
y x ) , ( u µ
x
Image Space
µ
u
Hough Space
?
Hough Space Sinusoid
Example
Mechanics of the Hough transform
• Difficulties
– how big should the cells be? 
(too big, and we merge quite 
different lines; too small and
• How many lines?
– Count the peaks in the 
Hough array
different lines; too small, and 
noise causes lines to be 
missed) 
– Treat adjacent peaks as a 
single peak
2/21/2010
7
Real World Example
Original Edge Detection Found Lines
Parameter Space
Finding Circles by Hough Transform
Equation of Circle: 
2 2 2
) ( ) ( r b y a x
i i
= ÷ + ÷
If radius is known: (2D Hough Space)
) , ( b a A
Accumulator Array
Finding Circles by Hough Transform
Equation of Circle: 
2 2 2
) ( ) ( r b y a x
i i
= ÷ + ÷
If radius is not known: 3D Hough Space!
Use Accumulator array  ) , , ( r b a A
What is the surface in the Hough space?
Real World Circle Examples
Crosshair indicates results of Hough transform.
2/21/2010
8
Finding Coins
Original Edges (note noise)
Finding Coins (Continued)
Penny Quarters
Finding Coins (Continued)
Note that because the 
quarters and penny 
are different sizes, a 
different Hough 
Coin finding sample images 
from: Vivek Kwatra
different Hough
transform (with 
separate 
accumulators) was 
used for each circle 
size.